summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2019-12-20 09:07:57 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2019-12-20 09:07:57 +0000
commit7881eb30eaa8b01dbcfe87faa09927c75c7d6e45 (patch)
tree298bc8d2c62b2f2c29cb8ecbcf3de3eaaa6466d9
parent64b66e0cb6d1bfd27abf24e06653f00bddb60597 (diff)
downloadgitlab-ce-7881eb30eaa8b01dbcfe87faa09927c75c7d6e45.tar.gz
Add latest changes from gitlab-org/gitlab@12-6-stable-ee
-rw-r--r--.eslintrc.yml18
-rw-r--r--.gitattributes1
-rw-r--r--.gitignore3
-rw-r--r--.gitlab-ci.yml12
-rw-r--r--.gitlab/ci/cache-repo.gitlab-ci.yml33
-rw-r--r--.gitlab/ci/docs.gitlab-ci.yml3
-rw-r--r--.gitlab/ci/frontend.gitlab-ci.yml12
-rw-r--r--.gitlab/ci/global.gitlab-ci.yml16
-rw-r--r--.gitlab/ci/notifications.gitlab-ci.yml23
-rw-r--r--.gitlab/ci/releases.gitlab-ci.yml36
-rw-r--r--.gitlab/ci/reports.gitlab-ci.yml13
-rw-r--r--.gitlab/ci/review.gitlab-ci.yml13
-rw-r--r--.gitlab/issue_templates/Productivity Improvement.md47
-rw-r--r--.haml-lint_todo.yml3
-rw-r--r--.markdownlint.json97
-rw-r--r--.nvmrc2
-rw-r--r--.rubocop.yml1
-rw-r--r--CHANGELOG-EE.md57
-rw-r--r--CHANGELOG.md58
-rw-r--r--Dangerfile1
-rw-r--r--GITALY_SERVER_VERSION2
-rw-r--r--GITLAB_SHELL_VERSION2
-rw-r--r--GITLAB_WORKHORSE_VERSION2
-rw-r--r--Gemfile49
-rw-r--r--Gemfile.lock120
-rw-r--r--VERSION2
-rw-r--r--app/assets/javascripts/api.js29
-rw-r--r--app/assets/javascripts/autosave.js16
-rw-r--r--app/assets/javascripts/badges/components/badge.vue7
-rw-r--r--app/assets/javascripts/badges/components/badge_form.vue20
-rw-r--r--app/assets/javascripts/badges/components/badge_list_row.vue11
-rw-r--r--app/assets/javascripts/badges/empty_badge.js1
-rw-r--r--app/assets/javascripts/badges/store/actions.js10
-rw-r--r--app/assets/javascripts/behaviors/markdown/gfm_auto_complete.js2
-rw-r--r--app/assets/javascripts/behaviors/markdown/nodes/image.js2
-rw-r--r--app/assets/javascripts/blob/file_template_mediator.js2
-rw-r--r--app/assets/javascripts/blob/openapi/index.js19
-rw-r--r--app/assets/javascripts/blob/openapi_viewer.js3
-rw-r--r--app/assets/javascripts/blob/viewer/index.js3
-rw-r--r--app/assets/javascripts/boards/components/board.js26
-rw-r--r--app/assets/javascripts/boards/components/board_blank_state.vue2
-rw-r--r--app/assets/javascripts/boards/components/board_list.vue5
-rw-r--r--app/assets/javascripts/boards/components/boards_selector.vue3
-rw-r--r--app/assets/javascripts/boards/components/issue_card_inner.vue2
-rw-r--r--app/assets/javascripts/boards/components/issue_count.vue36
-rw-r--r--app/assets/javascripts/boards/components/issue_due_date.vue4
-rw-r--r--app/assets/javascripts/boards/components/modal/index.vue2
-rw-r--r--app/assets/javascripts/boards/components/project_select.vue4
-rw-r--r--app/assets/javascripts/boards/constants.js2
-rw-r--r--app/assets/javascripts/boards/index.js45
-rw-r--r--app/assets/javascripts/boards/mixins/is_wip_limits.js7
-rw-r--r--app/assets/javascripts/boards/models/list.js31
-rw-r--r--app/assets/javascripts/boards/services/board_service.js98
-rw-r--r--app/assets/javascripts/boards/stores/state.js1
-rw-r--r--app/assets/javascripts/clusters/clusters_bundle.js24
-rw-r--r--app/assets/javascripts/clusters/components/crossplane_provider_stack.vue10
-rw-r--r--app/assets/javascripts/clusters/components/knative_domain_editor.vue2
-rw-r--r--app/assets/javascripts/clusters/components/remove_cluster_confirmation.vue168
-rw-r--r--app/assets/javascripts/clusters/components/uninstall_application_confirmation_modal.vue2
-rw-r--r--app/assets/javascripts/commit/image_file.js49
-rw-r--r--app/assets/javascripts/commons/polyfills.js1
-rw-r--r--app/assets/javascripts/confidential_merge_request/components/project_form_group.vue30
-rw-r--r--app/assets/javascripts/confirm_danger_modal.js57
-rw-r--r--app/assets/javascripts/contributors/components/contributors.vue2
-rw-r--r--app/assets/javascripts/create_cluster/eks_cluster/components/cluster_form_dropdown.vue24
-rw-r--r--app/assets/javascripts/create_cluster/eks_cluster/components/eks_cluster_configuration_form.vue15
-rw-r--r--app/assets/javascripts/create_cluster/eks_cluster/components/service_credentials_form.vue4
-rw-r--r--app/assets/javascripts/create_cluster/eks_cluster/index.js22
-rw-r--r--app/assets/javascripts/create_cluster/eks_cluster/services/aws_services_facade.js148
-rw-r--r--app/assets/javascripts/create_cluster/eks_cluster/store/actions.js13
-rw-r--r--app/assets/javascripts/create_cluster/eks_cluster/store/cluster_dropdown/index.js4
-rw-r--r--app/assets/javascripts/create_cluster/eks_cluster/store/index.js30
-rw-r--r--app/assets/javascripts/create_cluster/eks_cluster/store/mutation_types.js1
-rw-r--r--app/assets/javascripts/create_cluster/eks_cluster/store/mutations.js3
-rw-r--r--app/assets/javascripts/create_cluster/eks_cluster/store/state.js2
-rw-r--r--app/assets/javascripts/create_cluster/gke_cluster/components/gke_dropdown_mixin.js2
-rw-r--r--app/assets/javascripts/create_cluster/gke_cluster/components/gke_machine_type_dropdown.vue2
-rw-r--r--app/assets/javascripts/create_cluster/gke_cluster/components/gke_project_id_dropdown.vue2
-rw-r--r--app/assets/javascripts/create_cluster/gke_cluster/components/gke_zone_dropdown.vue2
-rw-r--r--app/assets/javascripts/create_cluster/init_create_cluster.js20
-rw-r--r--app/assets/javascripts/create_merge_request_dropdown.js1
-rw-r--r--app/assets/javascripts/cycle_analytics/components/banner.vue2
-rw-r--r--app/assets/javascripts/deploy_keys/components/app.vue4
-rw-r--r--app/assets/javascripts/deploy_keys/components/key.vue2
-rw-r--r--app/assets/javascripts/diffs/components/app.vue90
-rw-r--r--app/assets/javascripts/diffs/components/diff_expansion_cell.vue4
-rw-r--r--app/assets/javascripts/diffs/components/diff_file.vue2
-rw-r--r--app/assets/javascripts/diffs/components/diff_file_header.vue8
-rw-r--r--app/assets/javascripts/diffs/components/diff_gutter_avatars.vue2
-rw-r--r--app/assets/javascripts/diffs/components/diff_line_gutter_content.vue2
-rw-r--r--app/assets/javascripts/diffs/components/diff_line_note_form.vue2
-rw-r--r--app/assets/javascripts/diffs/constants.js1
-rw-r--r--app/assets/javascripts/diffs/index.js4
-rw-r--r--app/assets/javascripts/diffs/store/actions.js76
-rw-r--r--app/assets/javascripts/diffs/store/modules/diff_state.js2
-rw-r--r--app/assets/javascripts/diffs/store/mutation_types.js2
-rw-r--r--app/assets/javascripts/diffs/store/mutations.js41
-rw-r--r--app/assets/javascripts/diffs/store/utils.js7
-rw-r--r--app/assets/javascripts/emoji/no_emoji_validator.js2
-rw-r--r--app/assets/javascripts/environments/components/container.vue2
-rw-r--r--app/assets/javascripts/environments/components/environment_actions.vue2
-rw-r--r--app/assets/javascripts/environments/components/environment_item.vue82
-rw-r--r--app/assets/javascripts/environments/components/environment_monitoring.vue2
-rw-r--r--app/assets/javascripts/environments/components/environments_app.vue6
-rw-r--r--app/assets/javascripts/environments/components/environments_table.vue54
-rw-r--r--app/assets/javascripts/environments/folder/environments_folder_view.vue12
-rw-r--r--app/assets/javascripts/environments/index.js2
-rw-r--r--app/assets/javascripts/environments/stores/environments_store.js2
-rw-r--r--app/assets/javascripts/error_tracking/components/error_details.vue78
-rw-r--r--app/assets/javascripts/error_tracking/components/error_tracking_list.vue292
-rw-r--r--app/assets/javascripts/error_tracking/components/stacktrace.vue2
-rw-r--r--app/assets/javascripts/error_tracking/components/stacktrace_entry.vue63
-rw-r--r--app/assets/javascripts/error_tracking/details.js5
-rw-r--r--app/assets/javascripts/error_tracking/services/index.js4
-rw-r--r--app/assets/javascripts/error_tracking/store/details/getters.js5
-rw-r--r--app/assets/javascripts/error_tracking/store/index.js2
-rw-r--r--app/assets/javascripts/error_tracking/store/list/actions.js49
-rw-r--r--app/assets/javascripts/error_tracking/store/list/getters.js4
-rw-r--r--app/assets/javascripts/error_tracking/store/list/mutation_types.js9
-rw-r--r--app/assets/javascripts/error_tracking/store/list/mutations.js51
-rw-r--r--app/assets/javascripts/error_tracking/store/list/state.js7
-rw-r--r--app/assets/javascripts/error_tracking/utils.js13
-rw-r--r--app/assets/javascripts/error_tracking_settings/components/error_tracking_form.vue10
-rw-r--r--app/assets/javascripts/filtered_search/.eslintrc.yml3
-rw-r--r--app/assets/javascripts/filtered_search/filtered_search_manager.js2
-rw-r--r--app/assets/javascripts/filtered_search/visual_token_value.js2
-rw-r--r--app/assets/javascripts/frequent_items/components/app.vue2
-rw-r--r--app/assets/javascripts/frequent_items/store/mutations.js2
-rw-r--r--app/assets/javascripts/gfm_auto_complete.js68
-rw-r--r--app/assets/javascripts/gl_dropdown.js1661
-rw-r--r--app/assets/javascripts/grafana_integration/components/grafana_integration.vue2
-rw-r--r--app/assets/javascripts/groups/components/app.vue2
-rw-r--r--app/assets/javascripts/groups/components/item_stats.vue7
-rw-r--r--app/assets/javascripts/groups/mixins/is_project_pending_removal.js7
-rw-r--r--app/assets/javascripts/groups/store/groups_store.js1
-rw-r--r--app/assets/javascripts/helpers/monitor_helper.js1
-rw-r--r--app/assets/javascripts/ide/.eslintrc.yml2
-rw-r--r--app/assets/javascripts/ide/components/branches/search_list.vue2
-rw-r--r--app/assets/javascripts/ide/components/file_templates/dropdown.vue2
-rw-r--r--app/assets/javascripts/ide/components/ide_status_bar.vue6
-rw-r--r--app/assets/javascripts/ide/components/ide_tree_list.vue2
-rw-r--r--app/assets/javascripts/ide/components/merge_requests/list.vue2
-rw-r--r--app/assets/javascripts/ide/components/new_dropdown/modal.vue2
-rw-r--r--app/assets/javascripts/ide/components/preview/navigator.vue2
-rw-r--r--app/assets/javascripts/ide/components/repo_tab.vue2
-rw-r--r--app/assets/javascripts/ide/lib/files.js3
-rw-r--r--app/assets/javascripts/ide/services/index.js3
-rw-r--r--app/assets/javascripts/ide/stores/actions.js14
-rw-r--r--app/assets/javascripts/ide/stores/actions/file.js4
-rw-r--r--app/assets/javascripts/ide/stores/getters.js25
-rw-r--r--app/assets/javascripts/ide/stores/utils.js3
-rw-r--r--app/assets/javascripts/image_diff/.eslintrc.yml3
-rw-r--r--app/assets/javascripts/issuable_form.js54
-rw-r--r--app/assets/javascripts/issuable_suggestions/components/item.vue2
-rw-r--r--app/assets/javascripts/jobs/components/sidebar.vue6
-rw-r--r--app/assets/javascripts/jobs/components/trigger_block.vue2
-rw-r--r--app/assets/javascripts/jobs/store/utils.js2
-rw-r--r--app/assets/javascripts/lib/utils/axios_utils.js4
-rw-r--r--app/assets/javascripts/lib/utils/common_utils.js22
-rw-r--r--app/assets/javascripts/lib/utils/datetime_utility.js162
-rw-r--r--app/assets/javascripts/lib/utils/http_status.js1
-rw-r--r--app/assets/javascripts/lib/utils/logoutput_behaviours.js47
-rw-r--r--app/assets/javascripts/lib/utils/suppress_ajax_errors_during_navigation.js4
-rw-r--r--app/assets/javascripts/lib/utils/text_markdown.js38
-rw-r--r--app/assets/javascripts/lib/utils/text_utility.js2
-rw-r--r--app/assets/javascripts/lib/utils/url_utility.js104
-rw-r--r--app/assets/javascripts/main.js1
-rw-r--r--app/assets/javascripts/monitoring/components/charts/anomaly.vue13
-rw-r--r--app/assets/javascripts/monitoring/components/charts/column.vue12
-rw-r--r--app/assets/javascripts/monitoring/components/charts/heatmap.vue10
-rw-r--r--app/assets/javascripts/monitoring/components/charts/single_stat.vue2
-rw-r--r--app/assets/javascripts/monitoring/components/charts/time_series.vue42
-rw-r--r--app/assets/javascripts/monitoring/components/dashboard.vue152
-rw-r--r--app/assets/javascripts/monitoring/components/date_time_picker/date_time_picker_input.vue2
-rw-r--r--app/assets/javascripts/monitoring/components/embed.vue30
-rw-r--r--app/assets/javascripts/monitoring/components/empty_state.vue6
-rw-r--r--app/assets/javascripts/monitoring/components/graph_group.vue30
-rw-r--r--app/assets/javascripts/monitoring/components/group_empty_state.vue105
-rw-r--r--app/assets/javascripts/monitoring/components/panel_type.vue29
-rw-r--r--app/assets/javascripts/monitoring/constants.js47
-rw-r--r--app/assets/javascripts/monitoring/monitoring_bundle.js2
-rw-r--r--app/assets/javascripts/monitoring/monitoring_tracking_helper.js10
-rw-r--r--app/assets/javascripts/monitoring/stores/actions.js85
-rw-r--r--app/assets/javascripts/monitoring/stores/getters.js62
-rw-r--r--app/assets/javascripts/monitoring/stores/index.js2
-rw-r--r--app/assets/javascripts/monitoring/stores/mutation_types.js8
-rw-r--r--app/assets/javascripts/monitoring/stores/mutations.js143
-rw-r--r--app/assets/javascripts/monitoring/stores/state.js5
-rw-r--r--app/assets/javascripts/monitoring/stores/utils.js89
-rw-r--r--app/assets/javascripts/monitoring/utils.js26
-rw-r--r--app/assets/javascripts/mr_popover/components/mr_popover.vue2
-rw-r--r--app/assets/javascripts/mr_tabs_popover/components/popover.vue64
-rw-r--r--app/assets/javascripts/mr_tabs_popover/index.js12
-rw-r--r--app/assets/javascripts/notebook/cells/markdown.vue73
-rw-r--r--app/assets/javascripts/notes.js163
-rw-r--r--app/assets/javascripts/notes/components/comment_form.vue17
-rw-r--r--app/assets/javascripts/notes/components/diff_with_note.vue2
-rw-r--r--app/assets/javascripts/notes/components/discussion_counter.vue8
-rw-r--r--app/assets/javascripts/notes/components/discussion_jump_to_next_button.vue2
-rw-r--r--app/assets/javascripts/notes/components/discussion_keyboard_navigator.vue14
-rw-r--r--app/assets/javascripts/notes/components/discussion_locked_widget.vue13
-rw-r--r--app/assets/javascripts/notes/components/discussion_resolve_with_issue_button.vue2
-rw-r--r--app/assets/javascripts/notes/components/note_actions.vue2
-rw-r--r--app/assets/javascripts/notes/components/note_awards_list.vue14
-rw-r--r--app/assets/javascripts/notes/components/note_form.vue2
-rw-r--r--app/assets/javascripts/notes/components/noteable_discussion.vue29
-rw-r--r--app/assets/javascripts/notes/components/noteable_note.vue2
-rw-r--r--app/assets/javascripts/notes/components/notes_app.vue11
-rw-r--r--app/assets/javascripts/notes/mixins/discussion_navigation.js24
-rw-r--r--app/assets/javascripts/notes/mixins/issuable_state.js6
-rw-r--r--app/assets/javascripts/notes/stores/actions.js45
-rw-r--r--app/assets/javascripts/pages/admin/users/components/delete_user_modal.vue2
-rw-r--r--app/assets/javascripts/pages/dashboard/merge_requests/index.js2
-rw-r--r--app/assets/javascripts/pages/groups/group_members/index/index.js2
-rw-r--r--app/assets/javascripts/pages/groups/issues/index.js2
-rw-r--r--app/assets/javascripts/pages/groups/merge_requests/index.js2
-rw-r--r--app/assets/javascripts/pages/groups/new/group_path_validator.js2
-rw-r--r--app/assets/javascripts/pages/groups/registry/repositories/index.js2
-rw-r--r--app/assets/javascripts/pages/instance_statistics/dev_ops_score/index.js (renamed from app/assets/javascripts/pages/instance_statistics/conversational_development_index/index.js)0
-rw-r--r--app/assets/javascripts/pages/profiles/show/index.js2
-rw-r--r--app/assets/javascripts/pages/projects/issues/form.js2
-rw-r--r--app/assets/javascripts/pages/projects/issues/index/index.js2
-rw-r--r--app/assets/javascripts/pages/projects/merge_requests/index/index.js2
-rw-r--r--app/assets/javascripts/pages/projects/merge_requests/init_merge_request.js2
-rw-r--r--app/assets/javascripts/pages/projects/merge_requests/init_merge_request_show.js7
-rw-r--r--app/assets/javascripts/pages/projects/pages_domains/show/index.js (renamed from app/assets/javascripts/pages/projects/pages_domains/edit/index.js)0
-rw-r--r--app/assets/javascripts/pages/projects/project.js24
-rw-r--r--app/assets/javascripts/pages/projects/registry/repositories/index.js2
-rw-r--r--app/assets/javascripts/pages/projects/settings/ci_cd/show/index.js3
-rw-r--r--app/assets/javascripts/pages/projects/snippets/show/index.js15
-rw-r--r--app/assets/javascripts/pages/projects/wikis/components/delete_wiki_modal.vue2
-rw-r--r--app/assets/javascripts/pages/sessions/new/username_validator.js2
-rw-r--r--app/assets/javascripts/pages/snippets/show/index.js15
-rw-r--r--app/assets/javascripts/pages/users/index.js2
-rw-r--r--app/assets/javascripts/performance_bar/components/performance_bar_app.vue17
-rw-r--r--app/assets/javascripts/performance_bar/components/request_selector.vue14
-rw-r--r--app/assets/javascripts/performance_bar/components/request_warning.vue2
-rw-r--r--app/assets/javascripts/performance_bar/index.js46
-rw-r--r--app/assets/javascripts/performance_bar/stores/performance_bar_store.js29
-rw-r--r--app/assets/javascripts/persistent_user_callout.js8
-rw-r--r--app/assets/javascripts/pipelines/components/graph/graph_component.vue4
-rw-r--r--app/assets/javascripts/pipelines/components/graph/job_item.vue4
-rw-r--r--app/assets/javascripts/pipelines/components/graph/linked_pipeline.vue1
-rw-r--r--app/assets/javascripts/pipelines/components/graph/linked_pipelines_column.vue7
-rw-r--r--app/assets/javascripts/pipelines/components/pipeline_stop_modal.vue2
-rw-r--r--app/assets/javascripts/pipelines/components/test_reports/test_summary.vue4
-rw-r--r--app/assets/javascripts/pipelines/components/time_ago.vue6
-rw-r--r--app/assets/javascripts/pipelines/stores/test_reports/utils.js2
-rw-r--r--app/assets/javascripts/project_find_file.js5
-rw-r--r--app/assets/javascripts/projects/project_new.js20
-rw-r--r--app/assets/javascripts/projects/tree/components/commit_pipeline_status_component.vue2
-rw-r--r--app/assets/javascripts/registry/list/components/app.vue (renamed from app/assets/javascripts/registry/components/app.vue)2
-rw-r--r--app/assets/javascripts/registry/list/components/collapsible_container.vue (renamed from app/assets/javascripts/registry/components/collapsible_container.vue)9
-rw-r--r--app/assets/javascripts/registry/list/components/group_empty_state.vue (renamed from app/assets/javascripts/registry/components/group_empty_state.vue)0
-rw-r--r--app/assets/javascripts/registry/list/components/project_empty_state.vue (renamed from app/assets/javascripts/registry/components/project_empty_state.vue)0
-rw-r--r--app/assets/javascripts/registry/list/components/table_registry.vue (renamed from app/assets/javascripts/registry/components/table_registry.vue)9
-rw-r--r--app/assets/javascripts/registry/list/constants.js (renamed from app/assets/javascripts/registry/constants.js)2
-rw-r--r--app/assets/javascripts/registry/list/index.js (renamed from app/assets/javascripts/registry/index.js)2
-rw-r--r--app/assets/javascripts/registry/list/stores/actions.js (renamed from app/assets/javascripts/registry/stores/actions.js)0
-rw-r--r--app/assets/javascripts/registry/list/stores/getters.js (renamed from app/assets/javascripts/registry/stores/getters.js)0
-rw-r--r--app/assets/javascripts/registry/list/stores/index.js (renamed from app/assets/javascripts/registry/stores/index.js)0
-rw-r--r--app/assets/javascripts/registry/list/stores/mutation_types.js (renamed from app/assets/javascripts/registry/stores/mutation_types.js)0
-rw-r--r--app/assets/javascripts/registry/list/stores/mutations.js (renamed from app/assets/javascripts/registry/stores/mutations.js)0
-rw-r--r--app/assets/javascripts/registry/list/stores/state.js (renamed from app/assets/javascripts/registry/stores/state.js)0
-rw-r--r--app/assets/javascripts/registry/settings/components/registry_settings_app.vue43
-rw-r--r--app/assets/javascripts/registry/settings/registry_settings_bundle.js24
-rw-r--r--app/assets/javascripts/registry/settings/stores/actions.js6
-rw-r--r--app/assets/javascripts/registry/settings/stores/index.js16
-rw-r--r--app/assets/javascripts/registry/settings/stores/mutation_types.js4
-rw-r--r--app/assets/javascripts/registry/settings/stores/mutations.js8
-rw-r--r--app/assets/javascripts/registry/settings/stores/state.js10
-rw-r--r--app/assets/javascripts/related_merge_requests/components/related_merge_requests.vue2
-rw-r--r--app/assets/javascripts/releases/list/components/app.vue20
-rw-r--r--app/assets/javascripts/releases/list/components/evidence_block.vue76
-rw-r--r--app/assets/javascripts/releases/list/components/release_block.vue62
-rw-r--r--app/assets/javascripts/releases/list/components/release_block_footer.vue4
-rw-r--r--app/assets/javascripts/releases/list/components/release_block_milestone_info.vue136
-rw-r--r--app/assets/javascripts/releases/list/constants.js7
-rw-r--r--app/assets/javascripts/releases/list/store/actions.js13
-rw-r--r--app/assets/javascripts/releases/list/store/mutations.js6
-rw-r--r--app/assets/javascripts/releases/list/store/state.js1
-rw-r--r--app/assets/javascripts/reports/components/report_item.vue2
-rw-r--r--app/assets/javascripts/reports/components/summary_row.vue2
-rw-r--r--app/assets/javascripts/repository/components/breadcrumbs.vue2
-rw-r--r--app/assets/javascripts/repository/components/preview/index.vue12
-rw-r--r--app/assets/javascripts/repository/index.js8
-rw-r--r--app/assets/javascripts/repository/log_tree.js10
-rw-r--r--app/assets/javascripts/repository/utils/commit.js3
-rw-r--r--app/assets/javascripts/repository/utils/dom.js9
-rw-r--r--app/assets/javascripts/serverless/components/area.vue2
-rw-r--r--app/assets/javascripts/serverless/components/functions.vue17
-rw-r--r--app/assets/javascripts/set_status_modal/set_status_modal_wrapper.vue4
-rw-r--r--app/assets/javascripts/sidebar/components/assignees/assignee_avatar_link.vue5
-rw-r--r--app/assets/javascripts/sidebar/components/assignees/assignee_title.vue3
-rw-r--r--app/assets/javascripts/sidebar/components/assignees/collapsed_assignee_list.vue2
-rw-r--r--app/assets/javascripts/sidebar/components/lock/edit_form_buttons.vue2
-rw-r--r--app/assets/javascripts/sidebar/components/participants/participants.vue2
-rw-r--r--app/assets/javascripts/sidebar/components/subscriptions/subscriptions.vue6
-rw-r--r--app/assets/javascripts/sidebar/components/time_tracking/comparison_pane.vue2
-rw-r--r--app/assets/javascripts/sidebar/components/todo_toggle/todo.vue13
-rw-r--r--app/assets/javascripts/sidebar/sidebar_mediator.js2
-rw-r--r--app/assets/javascripts/snippet/snippet_embed.js27
-rw-r--r--app/assets/javascripts/snippets/components/app.vue50
-rw-r--r--app/assets/javascripts/snippets/components/snippet_header.vue241
-rw-r--r--app/assets/javascripts/snippets/fragments/author.fragment.graphql8
-rw-r--r--app/assets/javascripts/snippets/fragments/project.fragment.graphql6
-rw-r--r--app/assets/javascripts/snippets/fragments/snippetBase.fragment.graphql13
-rw-r--r--app/assets/javascripts/snippets/index.js34
-rw-r--r--app/assets/javascripts/snippets/mutations/deleteSnippet.mutation.graphql5
-rw-r--r--app/assets/javascripts/snippets/queries/projectPermissions.query.graphql7
-rw-r--r--app/assets/javascripts/snippets/queries/snippet.query.graphql15
-rw-r--r--app/assets/javascripts/snippets/queries/userPermissions.query.graphql7
-rw-r--r--app/assets/javascripts/tracking.js27
-rw-r--r--app/assets/javascripts/user_popovers.js1
-rw-r--r--app/assets/javascripts/users_select.js138
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/deployment.vue245
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/deployment/constants.js8
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment.vue108
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment_info.vue98
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment_stop_button.vue83
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment_view_button.vue99
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/deployment/memory_usage.vue (renamed from app/assets/javascripts/vue_merge_request_widget/components/memory_usage.vue)18
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/loading.vue29
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/mr_widget_pipeline.vue24
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/mr_widget_pipeline_container.vue7
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/review_app_link.vue25
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_merged.vue4
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue51
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/mixins/ready_to_merge.js3
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/mr_widget_options.vue77
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/services/mr_widget_service.js7
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/stores/mr_widget_store.js11
-rw-r--r--app/assets/javascripts/vue_shared/components/bar_chart.vue7
-rw-r--r--app/assets/javascripts/vue_shared/components/content_viewer/viewers/markdown_viewer.vue4
-rw-r--r--app/assets/javascripts/vue_shared/components/dropdown/dropdown_button.vue2
-rw-r--r--app/assets/javascripts/vue_shared/components/dropdown/dropdown_search_input.vue11
-rw-r--r--app/assets/javascripts/vue_shared/components/expand_button.vue18
-rw-r--r--app/assets/javascripts/vue_shared/components/gl_countdown.vue2
-rw-r--r--app/assets/javascripts/vue_shared/components/issue/issue_milestone.vue4
-rw-r--r--app/assets/javascripts/vue_shared/components/markdown/suggestion_diff_header.vue2
-rw-r--r--app/assets/javascripts/vue_shared/components/memory_graph.vue129
-rw-r--r--app/assets/javascripts/vue_shared/components/modal_copy_button.vue2
-rw-r--r--app/assets/javascripts/vue_shared/components/notes/system_note.vue2
-rw-r--r--app/assets/javascripts/vue_shared/components/pagination/table_pagination.vue138
-rw-r--r--app/assets/javascripts/vue_shared/components/project_avatar/image.vue2
-rw-r--r--app/assets/javascripts/vue_shared/components/project_selector/project_list_item.vue2
-rw-r--r--app/assets/javascripts/vue_shared/components/resizable_chart/resizable_chart_container.vue2
-rw-r--r--app/assets/javascripts/vue_shared/components/sidebar/collapsed_grouped_date_picker.vue2
-rw-r--r--app/assets/javascripts/vue_shared/components/sidebar/labels_select/base.vue2
-rw-r--r--app/assets/javascripts/vue_shared/components/split_button.vue6
-rw-r--r--app/assets/javascripts/vue_shared/components/stacked_progress_bar.vue4
-rw-r--r--app/assets/javascripts/vue_shared/components/time_ago_tooltip.vue2
-rw-r--r--app/assets/javascripts/vue_shared/mixins/related_issuable_mixin.js6
-rw-r--r--app/assets/javascripts/vue_shared/mixins/timeago.js2
-rw-r--r--app/assets/stylesheets/components/release_block_milestone_info.scss6
-rw-r--r--app/assets/stylesheets/components/toast.scss52
-rw-r--r--app/assets/stylesheets/framework/common.scss8
-rw-r--r--app/assets/stylesheets/framework/dropdowns.scss2
-rw-r--r--app/assets/stylesheets/framework/files.scss9
-rw-r--r--app/assets/stylesheets/framework/filters.scss2
-rw-r--r--app/assets/stylesheets/framework/header.scss5
-rw-r--r--app/assets/stylesheets/framework/lists.scss5
-rw-r--r--app/assets/stylesheets/framework/memory_graph.scss18
-rw-r--r--app/assets/stylesheets/framework/selects.scss2
-rw-r--r--app/assets/stylesheets/framework/sidebar.scss4
-rw-r--r--app/assets/stylesheets/framework/typography.scss6
-rw-r--r--app/assets/stylesheets/framework/variables.scss13
-rw-r--r--app/assets/stylesheets/framework/wells.scss2
-rw-r--r--app/assets/stylesheets/page_bundles/ide.scss14
-rw-r--r--app/assets/stylesheets/pages/boards.scss4
-rw-r--r--app/assets/stylesheets/pages/dev_ops_score.scss (renamed from app/assets/stylesheets/pages/convdev_index.scss)36
-rw-r--r--app/assets/stylesheets/pages/diff.scss2
-rw-r--r--app/assets/stylesheets/pages/editor.scss3
-rw-r--r--app/assets/stylesheets/pages/environments.scss1
-rw-r--r--app/assets/stylesheets/pages/error_details.scss6
-rw-r--r--app/assets/stylesheets/pages/error_tracking_list.scss5
-rw-r--r--app/assets/stylesheets/pages/groups.scss1
-rw-r--r--app/assets/stylesheets/pages/issuable.scss2
-rw-r--r--app/assets/stylesheets/pages/issues.scss49
-rw-r--r--app/assets/stylesheets/pages/issues/issue_count_badge.scss1
-rw-r--r--app/assets/stylesheets/pages/merge_requests.scss5
-rw-r--r--app/assets/stylesheets/pages/profile.scss141
-rw-r--r--app/assets/stylesheets/pages/projects.scss6
-rw-r--r--app/assets/stylesheets/pages/prometheus.scss1
-rw-r--r--app/assets/stylesheets/pages/tree.scss6
-rw-r--r--app/assets/stylesheets/utilities.scss20
-rw-r--r--app/controllers/admin/broadcast_messages_controller.rb2
-rw-r--r--app/controllers/admin/identities_controller.rb6
-rw-r--r--app/controllers/admin/jobs_controller.rb20
-rw-r--r--app/controllers/admin/sessions_controller.rb29
-rw-r--r--app/controllers/application_controller.rb40
-rw-r--r--app/controllers/autocomplete_controller.rb16
-rw-r--r--app/controllers/boards/lists_controller.rb2
-rw-r--r--app/controllers/clusters/clusters_controller.rb59
-rw-r--r--app/controllers/concerns/boards_actions.rb5
-rw-r--r--app/controllers/concerns/confirm_email_warning.rb7
-rw-r--r--app/controllers/concerns/cycle_analytics_params.rb3
-rw-r--r--app/controllers/concerns/enforces_admin_authentication.rb1
-rw-r--r--app/controllers/concerns/initializes_current_user_mode.rb13
-rw-r--r--app/controllers/concerns/issuable_actions.rb12
-rw-r--r--app/controllers/concerns/membership_actions.rb11
-rw-r--r--app/controllers/concerns/notes_actions.rb6
-rw-r--r--app/controllers/concerns/service_params.rb1
-rw-r--r--app/controllers/concerns/sessionless_authentication.rb4
-rw-r--r--app/controllers/concerns/sourcegraph_gon.rb2
-rw-r--r--app/controllers/concerns/uploads_actions.rb38
-rw-r--r--app/controllers/groups/group_members_controller.rb9
-rw-r--r--app/controllers/groups_controller.rb1
-rw-r--r--app/controllers/instance_statistics/conversational_development_index_controller.rb9
-rw-r--r--app/controllers/instance_statistics/dev_ops_score_controller.rb9
-rw-r--r--app/controllers/oauth/applications_controller.rb1
-rw-r--r--app/controllers/oauth/authorizations_controller.rb2
-rw-r--r--app/controllers/omniauth_callbacks_controller.rb25
-rw-r--r--app/controllers/projects/branches_controller.rb10
-rw-r--r--app/controllers/projects/ci/lints_controller.rb10
-rw-r--r--app/controllers/projects/environments/prometheus_api_controller.rb36
-rw-r--r--app/controllers/projects/environments/sample_metrics_controller.rb13
-rw-r--r--app/controllers/projects/environments_controller.rb34
-rw-r--r--app/controllers/projects/error_tracking_controller.rb15
-rw-r--r--app/controllers/projects/hook_logs_controller.rb10
-rw-r--r--app/controllers/projects/issues_controller.rb7
-rw-r--r--app/controllers/projects/jobs_controller.rb33
-rw-r--r--app/controllers/projects/merge_requests/diffs_controller.rb29
-rw-r--r--app/controllers/projects/merge_requests_controller.rb19
-rw-r--r--app/controllers/projects/pages_controller.rb3
-rw-r--r--app/controllers/projects/pages_domains_controller.rb10
-rw-r--r--app/controllers/projects/pipeline_schedules_controller.rb12
-rw-r--r--app/controllers/projects/pipelines_controller.rb1
-rw-r--r--app/controllers/projects/project_members_controller.rb2
-rw-r--r--app/controllers/projects/raw_controller.rb20
-rw-r--r--app/controllers/projects/releases_controller.rb12
-rw-r--r--app/controllers/projects/service_hook_logs_controller.rb20
-rw-r--r--app/controllers/projects/services_controller.rb7
-rw-r--r--app/controllers/projects/settings/ci_cd_controller.rb10
-rw-r--r--app/controllers/projects_controller.rb18
-rw-r--r--app/controllers/snippets_controller.rb10
-rw-r--r--app/controllers/uploads_controller.rb1
-rw-r--r--app/finders/clusters/knative_serving_namespace_finder.rb17
-rw-r--r--app/finders/clusters/knative_version_role_binding_finder.rb17
-rw-r--r--app/finders/deployments_finder.rb70
-rw-r--r--app/finders/group_members_finder.rb10
-rw-r--r--app/finders/group_projects_finder.rb14
-rw-r--r--app/finders/groups_finder.rb2
-rw-r--r--app/finders/issuable_finder.rb27
-rw-r--r--app/finders/issues_finder.rb2
-rw-r--r--app/finders/jobs_finder.rb51
-rw-r--r--app/finders/keys_finder.rb84
-rw-r--r--app/finders/members_finder.rb20
-rw-r--r--app/finders/merge_request_target_project_finder.rb20
-rw-r--r--app/finders/merge_requests_finder.rb1
-rw-r--r--app/finders/personal_access_tokens_finder.rb16
-rw-r--r--app/finders/pipelines_finder.rb10
-rw-r--r--app/finders/projects_finder.rb26
-rw-r--r--app/finders/snippets_finder.rb53
-rw-r--r--app/finders/user_finder.rb6
-rw-r--r--app/graphql/mutations/issues/base.rb34
-rw-r--r--app/graphql/mutations/issues/set_confidential.rb27
-rw-r--r--app/graphql/mutations/issues/set_due_date.rb27
-rw-r--r--app/graphql/mutations/snippets/base.rb30
-rw-r--r--app/graphql/mutations/snippets/create.rb77
-rw-r--r--app/graphql/mutations/snippets/destroy.rb33
-rw-r--r--app/graphql/mutations/snippets/mark_as_spam.rb39
-rw-r--r--app/graphql/mutations/snippets/update.rb54
-rw-r--r--app/graphql/mutations/todos/base.rb6
-rw-r--r--app/graphql/mutations/todos/mark_all_done.rb35
-rw-r--r--app/graphql/mutations/todos/mark_done.rb7
-rw-r--r--app/graphql/mutations/todos/restore.rb36
-rw-r--r--app/graphql/resolvers/base_resolver.rb10
-rw-r--r--app/graphql/resolvers/concerns/resolves_snippets.rb57
-rw-r--r--app/graphql/resolvers/echo_resolver.rb4
-rw-r--r--app/graphql/resolvers/error_tracking/sentry_detailed_error_resolver.rb28
-rw-r--r--app/graphql/resolvers/issues_resolver.rb14
-rw-r--r--app/graphql/resolvers/projects/snippets_resolver.rb23
-rw-r--r--app/graphql/resolvers/snippets_resolver.rb45
-rw-r--r--app/graphql/resolvers/todo_resolver.rb50
-rw-r--r--app/graphql/resolvers/users/snippets_resolver.rb21
-rw-r--r--app/graphql/types/diff_refs_type.rb9
-rw-r--r--app/graphql/types/error_tracking/sentry_detailed_error_type.rb93
-rw-r--r--app/graphql/types/error_tracking/sentry_error_frequency_type.rb18
-rw-r--r--app/graphql/types/error_tracking/sentry_error_status_enum.rb15
-rw-r--r--app/graphql/types/issuable_sort_enum.rb2
-rw-r--r--app/graphql/types/issue_sort_enum.rb4
-rw-r--r--app/graphql/types/issue_state_enum.rb3
-rw-r--r--app/graphql/types/label_type.rb2
-rw-r--r--app/graphql/types/merge_request_state_enum.rb3
-rw-r--r--app/graphql/types/merge_request_type.rb2
-rw-r--r--app/graphql/types/mutation_type.rb8
-rw-r--r--app/graphql/types/notes/diff_position_type.rb24
-rw-r--r--app/graphql/types/notes/discussion_type.rb12
-rw-r--r--app/graphql/types/notes/note_type.rb32
-rw-r--r--app/graphql/types/notes/noteable_type.rb2
-rw-r--r--app/graphql/types/permission_types/project.rb8
-rw-r--r--app/graphql/types/permission_types/snippet.rb16
-rw-r--r--app/graphql/types/permission_types/user.rb15
-rw-r--r--app/graphql/types/project_type.rb14
-rw-r--r--app/graphql/types/query_type.rb10
-rw-r--r--app/graphql/types/root_storage_statistics_type.rb2
-rw-r--r--app/graphql/types/snippet_type.rb69
-rw-r--r--app/graphql/types/snippets/type_enum.rb10
-rw-r--r--app/graphql/types/snippets/visibility_scopes_enum.rb11
-rw-r--r--app/graphql/types/user_type.rb8
-rw-r--r--app/graphql/types/visibility_levels_enum.rb9
-rw-r--r--app/helpers/application_helper.rb19
-rw-r--r--app/helpers/application_settings_helper.rb4
-rw-r--r--app/helpers/award_emoji_helper.rb2
-rw-r--r--app/helpers/blob_helper.rb21
-rw-r--r--app/helpers/broadcast_messages_helper.rb6
-rw-r--r--app/helpers/clusters_helper.rb6
-rw-r--r--app/helpers/container_expiration_policies_helper.rb21
-rw-r--r--app/helpers/dev_ops_score_helper.rb (renamed from app/helpers/conversational_development_index_helper.rb)2
-rw-r--r--app/helpers/diff_helper.rb18
-rw-r--r--app/helpers/emails_helper.rb26
-rw-r--r--app/helpers/environments_helper.rb1
-rw-r--r--app/helpers/git_helper.rb7
-rw-r--r--app/helpers/gitlab_routing_helper.rb91
-rw-r--r--app/helpers/hooks_helper.rb38
-rw-r--r--app/helpers/icons_helper.rb10
-rw-r--r--app/helpers/issuables_helper.rb33
-rw-r--r--app/helpers/issues_helper.rb2
-rw-r--r--app/helpers/labels_helper.rb4
-rw-r--r--app/helpers/merge_requests_helper.rb20
-rw-r--r--app/helpers/nav_helper.rb2
-rw-r--r--app/helpers/notes_helper.rb6
-rw-r--r--app/helpers/projects/error_tracking_helper.rb1
-rw-r--r--app/helpers/projects_helper.rb10
-rw-r--r--app/helpers/search_helper.rb7
-rw-r--r--app/helpers/services_helper.rb20
-rw-r--r--app/helpers/snippets_helper.rb43
-rw-r--r--app/helpers/todos_helper.rb2
-rw-r--r--app/helpers/tree_helper.rb4
-rw-r--r--app/helpers/user_callouts_helper.rb5
-rw-r--r--app/helpers/users_helper.rb10
-rw-r--r--app/mailers/emails/notes.rb2
-rw-r--r--app/mailers/emails/profile.rb14
-rw-r--r--app/models/active_session.rb51
-rw-r--r--app/models/application_setting.rb14
-rw-r--r--app/models/application_setting_implementation.rb9
-rw-r--r--app/models/badge.rb2
-rw-r--r--app/models/blob.rb2
-rw-r--r--app/models/blob_viewer/open_api.rb15
-rw-r--r--app/models/broadcast_message.rb82
-rw-r--r--app/models/ci/build.rb65
-rw-r--r--app/models/ci/build_need.rb1
-rw-r--r--app/models/ci/build_trace_section.rb3
-rw-r--r--app/models/ci/legacy_stage.rb1
-rw-r--r--app/models/ci/persistent_ref.rb20
-rw-r--r--app/models/ci/pipeline.rb102
-rw-r--r--app/models/ci/pipeline_enums.rb16
-rw-r--r--app/models/ci/runner.rb3
-rw-r--r--app/models/clusters/applications/elastic_stack.rb2
-rw-r--r--app/models/clusters/applications/knative.rb24
-rw-r--r--app/models/clusters/applications/prometheus.rb29
-rw-r--r--app/models/clusters/applications/runner.rb2
-rw-r--r--app/models/clusters/cluster.rb70
-rw-r--r--app/models/clusters/concerns/application_core.rb2
-rw-r--r--app/models/clusters/platforms/kubernetes.rb15
-rw-r--r--app/models/clusters/providers/aws.rb4
-rw-r--r--app/models/commit.rb23
-rw-r--r--app/models/commit_status.rb12
-rw-r--r--app/models/commit_user_mention.rb5
-rw-r--r--app/models/compare.rb1
-rw-r--r--app/models/concerns/acts_as_paginated_diff.rb11
-rw-r--r--app/models/concerns/analytics/cycle_analytics/stage.rb1
-rw-r--r--app/models/concerns/blob_active_model.rb19
-rw-r--r--app/models/concerns/ci/contextable.rb54
-rw-r--r--app/models/concerns/ci/metadatable.rb8
-rw-r--r--app/models/concerns/ci/pipeline_delegator.rb2
-rw-r--r--app/models/concerns/ci/processable.rb2
-rw-r--r--app/models/concerns/diff_positionable_note.rb2
-rw-r--r--app/models/concerns/expirable.rb4
-rw-r--r--app/models/concerns/group_descendant.rb6
-rw-r--r--app/models/concerns/ignorable_columns.rb45
-rw-r--r--app/models/concerns/issuable.rb35
-rw-r--r--app/models/concerns/issuable_states.rb23
-rw-r--r--app/models/concerns/mentionable.rb80
-rw-r--r--app/models/concerns/milestoneish.rb2
-rw-r--r--app/models/concerns/prometheus_adapter.rb8
-rw-r--r--app/models/concerns/reactive_caching.rb5
-rw-r--r--app/models/concerns/safe_url.rb15
-rw-r--r--app/models/concerns/sha256_attribute.rb49
-rw-r--r--app/models/concerns/storage/legacy_namespace.rb6
-rw-r--r--app/models/concerns/update_project_statistics.rb28
-rw-r--r--app/models/container_expiration_policy.rb41
-rw-r--r--app/models/dashboard_group_milestone.rb4
-rw-r--r--app/models/dashboard_milestone.rb4
-rw-r--r--app/models/deploy_key.rb13
-rw-r--r--app/models/deployment.rb25
-rw-r--r--app/models/dev_ops_score/card.rb (renamed from app/models/conversational_development_index/card.rb)2
-rw-r--r--app/models/dev_ops_score/idea_to_production_step.rb (renamed from app/models/conversational_development_index/idea_to_production_step.rb)2
-rw-r--r--app/models/dev_ops_score/metric.rb (renamed from app/models/conversational_development_index/metric.rb)2
-rw-r--r--app/models/diff_note.rb10
-rw-r--r--app/models/discussion.rb4
-rw-r--r--app/models/environment.rb19
-rw-r--r--app/models/environment_status.rb24
-rw-r--r--app/models/epic.rb4
-rw-r--r--app/models/error_tracking/project_error_tracking_setting.rb7
-rw-r--r--app/models/group_milestone.rb4
-rw-r--r--app/models/hooks/project_hook.rb5
-rw-r--r--app/models/hooks/service_hook.rb2
-rw-r--r--app/models/hooks/system_hook.rb8
-rw-r--r--app/models/hooks/web_hook.rb4
-rw-r--r--app/models/hooks/web_hook_log.rb11
-rw-r--r--app/models/import_failure.rb7
-rw-r--r--app/models/issue.rb15
-rw-r--r--app/models/issue/metrics.rb6
-rw-r--r--app/models/issue_user_mention.rb6
-rw-r--r--app/models/key.rb13
-rw-r--r--app/models/list.rb2
-rw-r--r--app/models/merge_request.rb85
-rw-r--r--app/models/merge_request/pipelines.rb86
-rw-r--r--app/models/merge_request_diff.rb63
-rw-r--r--app/models/merge_request_user_mention.rb6
-rw-r--r--app/models/milestone.rb12
-rw-r--r--app/models/milestone_release.rb3
-rw-r--r--app/models/namespace.rb4
-rw-r--r--app/models/note.rb20
-rw-r--r--app/models/pages_domain.rb5
-rw-r--r--app/models/personal_access_token.rb6
-rw-r--r--app/models/project.rb135
-rw-r--r--app/models/project_auto_devops.rb1
-rw-r--r--app/models/project_ci_cd_setting.rb5
-rw-r--r--app/models/project_feature.rb2
-rw-r--r--app/models/project_import_state.rb16
-rw-r--r--app/models/project_services/asana_service.rb2
-rw-r--r--app/models/project_services/jira_service.rb26
-rw-r--r--app/models/project_services/prometheus_service.rb26
-rw-r--r--app/models/project_services/unify_circuit_service.rb60
-rw-r--r--app/models/project_snippet.rb1
-rw-r--r--app/models/project_wiki.rb2
-rw-r--r--app/models/readme_blob.rb2
-rw-r--r--app/models/release.rb8
-rw-r--r--app/models/remote_mirror.rb9
-rw-r--r--app/models/repository.rb40
-rw-r--r--app/models/sentry_issue.rb10
-rw-r--r--app/models/serverless/domain_cluster.rb14
-rw-r--r--app/models/service.rb9
-rw-r--r--app/models/snippet.rb44
-rw-r--r--app/models/snippet_user_mention.rb6
-rw-r--r--app/models/timelog.rb12
-rw-r--r--app/models/upload.rb21
-rw-r--r--app/models/uploads/local.rb3
-rw-r--r--app/models/user.rb26
-rw-r--r--app/models/user_callout_enums.rb3
-rw-r--r--app/models/user_mention.rb23
-rw-r--r--app/models/wiki_page.rb4
-rw-r--r--app/policies/base_policy.rb1
-rw-r--r--app/policies/blob_policy.rb7
-rw-r--r--app/policies/deploy_key_policy.rb5
-rw-r--r--app/policies/error_tracking/detailed_error_policy.rb7
-rw-r--r--app/policies/global_policy.rb3
-rw-r--r--app/policies/personal_snippet_policy.rb7
-rw-r--r--app/policies/project_policy.rb3
-rw-r--r--app/policies/project_snippet_policy.rb7
-rw-r--r--app/policies/user_policy.rb5
-rw-r--r--app/policies/wiki_page_policy.rb7
-rw-r--r--app/presenters/ci/legacy_stage_presenter.rb32
-rw-r--r--app/presenters/ci/pipeline_presenter.rb4
-rw-r--r--app/presenters/clusterable_presenter.rb12
-rw-r--r--app/presenters/clusters/cluster_presenter.rb16
-rw-r--r--app/presenters/dev_ops_score/metric_presenter.rb (renamed from app/presenters/conversational_development_index/metric_presenter.rb)2
-rw-r--r--app/presenters/group_clusterable_presenter.rb5
-rw-r--r--app/presenters/hooks/project_hook_presenter.rb13
-rw-r--r--app/presenters/hooks/service_hook_presenter.rb13
-rw-r--r--app/presenters/instance_clusterable_presenter.rb15
-rw-r--r--app/presenters/project_clusterable_presenter.rb5
-rw-r--r--app/presenters/projects/settings/deploy_keys_presenter.rb62
-rw-r--r--app/presenters/release_presenter.rb8
-rw-r--r--app/presenters/sentry_detailed_error_presenter.rb15
-rw-r--r--app/presenters/snippet_presenter.rb39
-rw-r--r--app/presenters/web_hook_log_presenter.rb13
-rw-r--r--app/serializers/analytics_merge_request_entity.rb4
-rw-r--r--app/serializers/deploy_key_entity.rb11
-rw-r--r--app/serializers/deployment_entity.rb11
-rw-r--r--app/serializers/diff_file_metadata_entity.rb3
-rw-r--r--app/serializers/diffs_entity.rb4
-rw-r--r--app/serializers/diffs_metadata_entity.rb2
-rw-r--r--app/serializers/environment_entity.rb9
-rw-r--r--app/serializers/environment_status_entity.rb4
-rw-r--r--app/serializers/error_tracking/detailed_error_entity.rb1
-rw-r--r--app/serializers/group_child_entity.rb2
-rw-r--r--app/serializers/issue_entity.rb8
-rw-r--r--app/serializers/merge_request_noteable_entity.rb12
-rw-r--r--app/serializers/merge_request_poll_cached_widget_entity.rb13
-rw-r--r--app/serializers/merge_request_poll_widget_entity.rb8
-rw-r--r--app/serializers/merge_request_widget_entity.rb5
-rw-r--r--app/serializers/pipeline_entity.rb4
-rw-r--r--app/services/auto_merge/merge_when_pipeline_succeeds_service.rb2
-rw-r--r--app/services/boards/lists/list_service.rb2
-rw-r--r--app/services/branches/create_service.rb39
-rw-r--r--app/services/branches/delete_merged_service.rb34
-rw-r--r--app/services/branches/delete_service.rb32
-rw-r--r--app/services/branches/validate_new_service.rb31
-rw-r--r--app/services/ci/archive_trace_service.rb6
-rw-r--r--app/services/ci/create_pipeline_service.rb5
-rw-r--r--app/services/ci/generate_exposed_artifacts_report_service.rb2
-rw-r--r--app/services/ci/prepare_build_service.rb2
-rw-r--r--app/services/ci/process_pipeline_service.rb12
-rw-r--r--app/services/ci/register_job_service.rb4
-rw-r--r--app/services/ci/retry_pipeline_service.rb16
-rw-r--r--app/services/clusters/applications/base_helm_service.rb13
-rw-r--r--app/services/clusters/applications/ingress_modsecurity_usage_service.rb69
-rw-r--r--app/services/clusters/aws/authorize_role_service.rb49
-rw-r--r--app/services/clusters/aws/fetch_credentials_service.rb28
-rw-r--r--app/services/clusters/aws/proxy_service.rb134
-rw-r--r--app/services/clusters/cleanup/app_service.rb33
-rw-r--r--app/services/clusters/cleanup/base_service.rb43
-rw-r--r--app/services/clusters/cleanup/project_namespace_service.rb44
-rw-r--r--app/services/clusters/cleanup/service_account_service.rb27
-rw-r--r--app/services/clusters/kubernetes.rb (renamed from app/services/clusters/kubernetes/kubernetes.rb)3
-rw-r--r--app/services/clusters/kubernetes/create_or_update_service_account_service.rb41
-rw-r--r--app/services/cohorts_service.rb2
-rw-r--r--app/services/commits/commit_patch_service.rb2
-rw-r--r--app/services/commits/create_service.rb2
-rw-r--r--app/services/concerns/users/participable_service.rb3
-rw-r--r--app/services/create_branch_service.rb38
-rw-r--r--app/services/create_snippet_service.rb6
-rw-r--r--app/services/delete_branch_service.rb30
-rw-r--r--app/services/delete_merged_branches_service.rb32
-rw-r--r--app/services/deployments/after_create_service.rb7
-rw-r--r--app/services/deployments/create_service.rb17
-rw-r--r--app/services/deployments/update_service.rb17
-rw-r--r--app/services/environments/reset_auto_stop_service.rb22
-rw-r--r--app/services/error_tracking/list_issues_service.rb15
-rw-r--r--app/services/git/base_hooks_service.rb24
-rw-r--r--app/services/issuable/bulk_update_service.rb20
-rw-r--r--app/services/issuable/clone/attributes_rewriter.rb8
-rw-r--r--app/services/issuable/common_system_notes_service.rb26
-rw-r--r--app/services/issuable_base_service.rb28
-rw-r--r--app/services/issues/base_service.rb2
-rw-r--r--app/services/issues/duplicate_service.rb2
-rw-r--r--app/services/issues/zoom_link_service.rb50
-rw-r--r--app/services/merge_requests/create_from_issue_service.rb2
-rw-r--r--app/services/merge_requests/merge_service.rb4
-rw-r--r--app/services/merge_requests/refresh_service.rb2
-rw-r--r--app/services/merge_requests/update_service.rb2
-rw-r--r--app/services/metrics/dashboard/base_embed_service.rb2
-rw-r--r--app/services/metrics/dashboard/custom_metric_embed_service.rb2
-rw-r--r--app/services/metrics/dashboard/grafana_metric_embed_service.rb2
-rw-r--r--app/services/metrics/dashboard/pod_dashboard_service.rb10
-rw-r--r--app/services/metrics/dashboard/predefined_dashboard_service.rb45
-rw-r--r--app/services/metrics/dashboard/system_dashboard_service.rb37
-rw-r--r--app/services/metrics/sample_metrics_service.rb26
-rw-r--r--app/services/notes/base_service.rb2
-rw-r--r--app/services/notes/build_service.rb2
-rw-r--r--app/services/notes/create_service.rb12
-rw-r--r--app/services/notes/update_service.rb6
-rw-r--r--app/services/notification_service.rb8
-rw-r--r--app/services/pages/delete_service.rb10
-rw-r--r--app/services/projects/container_repository/cleanup_tags_service.rb4
-rw-r--r--app/services/projects/container_repository/delete_tags_service.rb34
-rw-r--r--app/services/projects/destroy_service.rb7
-rw-r--r--app/services/projects/fork_service.rb18
-rw-r--r--app/services/projects/hashed_storage/base_repository_service.rb31
-rw-r--r--app/services/projects/hashed_storage/migrate_repository_service.rb6
-rw-r--r--app/services/projects/hashed_storage/rollback_repository_service.rb6
-rw-r--r--app/services/projects/import_service.rb4
-rw-r--r--app/services/projects/overwrite_project_service.rb4
-rw-r--r--app/services/projects/unlink_fork_service.rb61
-rw-r--r--app/services/projects/update_service.rb7
-rw-r--r--app/services/prometheus/proxy_variable_substitution_service.rb51
-rw-r--r--app/services/repair_ldap_blocked_user_service.rb19
-rw-r--r--app/services/submit_usage_ping_service.rb2
-rw-r--r--app/services/todo_service.rb13
-rw-r--r--app/services/update_snippet_service.rb8
-rw-r--r--app/services/users/build_service.rb2
-rw-r--r--app/services/users/repair_ldap_blocked_service.rb21
-rw-r--r--app/services/validate_new_branch_service.rb21
-rw-r--r--app/services/web_hook_service.rb3
-rw-r--r--app/views/admin/application_settings/_account_and_limit.html.haml3
-rw-r--r--app/views/admin/application_settings/_ci_cd.html.haml2
-rw-r--r--app/views/admin/application_settings/_signup.html.haml6
-rw-r--r--app/views/admin/application_settings/_visibility_and_access.html.haml2
-rw-r--r--app/views/admin/application_settings/integrations.html.haml2
-rw-r--r--app/views/admin/broadcast_messages/_form.html.haml9
-rw-r--r--app/views/admin/broadcast_messages/index.html.haml3
-rw-r--r--app/views/admin/dashboard/index.html.haml9
-rw-r--r--app/views/admin/groups/_group.html.haml2
-rw-r--r--app/views/admin/groups/show.html.haml3
-rw-r--r--app/views/admin/hooks/edit.html.haml31
-rw-r--r--app/views/admin/hooks/index.html.haml31
-rw-r--r--app/views/admin/projects/_archived.html.haml3
-rw-r--r--app/views/admin/projects/_projects.html.haml3
-rw-r--r--app/views/admin/runners/index.html.haml4
-rw-r--r--app/views/admin/sessions/_new_base.html.haml2
-rw-r--r--app/views/admin/sessions/_signin_box.html.haml11
-rw-r--r--app/views/admin/sessions/new.html.haml15
-rw-r--r--app/views/admin/users/_access_levels.html.haml2
-rw-r--r--app/views/award_emoji/_awards_block.html.haml1
-rw-r--r--app/views/ci/variables/_variable_row.html.haml14
-rw-r--r--app/views/clusters/clusters/_advanced_settings.html.haml17
-rw-r--r--app/views/clusters/clusters/_banner.html.haml18
-rw-r--r--app/views/clusters/clusters/_form.html.haml8
-rw-r--r--app/views/clusters/clusters/_namespace.html.haml2
-rw-r--r--app/views/clusters/clusters/aws/_new.html.haml13
-rw-r--r--app/views/clusters/clusters/gcp/_form.html.haml2
-rw-r--r--app/views/clusters/clusters/gcp/_gcp_not_configured.html.haml2
-rw-r--r--app/views/clusters/clusters/gcp/_new.html.haml2
-rw-r--r--app/views/clusters/clusters/gcp/_signin_with_google_button.html.haml4
-rw-r--r--app/views/clusters/clusters/new.html.haml14
-rw-r--r--app/views/dashboard/_snippets_head.html.haml3
-rw-r--r--app/views/dashboard/projects/_blank_state_welcome.html.haml24
-rw-r--r--app/views/dashboard/snippets/index.html.haml3
-rw-r--r--app/views/groups/settings/_permissions.html.haml7
-rw-r--r--app/views/import/gitlab_projects/new.html.haml1
-rw-r--r--app/views/instance_statistics/cohorts/_cohorts_table.html.haml27
-rw-r--r--app/views/instance_statistics/conversational_development_index/_callout.html.haml13
-rw-r--r--app/views/instance_statistics/dev_ops_score/_callout.html.haml13
-rw-r--r--app/views/instance_statistics/dev_ops_score/_card.html.haml (renamed from app/views/instance_statistics/conversational_development_index/_card.html.haml)6
-rw-r--r--app/views/instance_statistics/dev_ops_score/_disabled.html.haml (renamed from app/views/instance_statistics/conversational_development_index/_disabled.html.haml)4
-rw-r--r--app/views/instance_statistics/dev_ops_score/_no_data.html.haml (renamed from app/views/instance_statistics/conversational_development_index/_no_data.html.haml)6
-rw-r--r--app/views/instance_statistics/dev_ops_score/index.html.haml (renamed from app/views/instance_statistics/conversational_development_index/index.html.haml)22
-rw-r--r--app/views/layouts/_broadcast.html.haml2
-rw-r--r--app/views/layouts/_flash.html.haml7
-rw-r--r--app/views/layouts/application.html.haml2
-rw-r--r--app/views/layouts/header/_current_user_dropdown.html.haml2
-rw-r--r--app/views/layouts/header/_new_dropdown.haml3
-rw-r--r--app/views/layouts/nav/_breadcrumbs.html.haml2
-rw-r--r--app/views/layouts/nav/_dashboard.html.haml2
-rw-r--r--app/views/layouts/nav/sidebar/_admin.html.haml6
-rw-r--r--app/views/layouts/nav/sidebar/_group.html.haml2
-rw-r--r--app/views/layouts/nav/sidebar/_instance_statistics.html.haml12
-rw-r--r--app/views/layouts/nav/sidebar/_project.html.haml10
-rw-r--r--app/views/layouts/notify.html.haml2
-rw-r--r--app/views/layouts/notify.text.erb2
-rw-r--r--app/views/notify/_note_email.html.haml2
-rw-r--r--app/views/notify/_note_email.text.erb2
-rw-r--r--app/views/notify/access_token_about_to_expire_email.html.haml7
-rw-r--r--app/views/notify/access_token_about_to_expire_email.text.erb5
-rw-r--r--app/views/profiles/accounts/_providers.html.haml2
-rw-r--r--app/views/profiles/gpg_keys/_key.html.haml2
-rw-r--r--app/views/profiles/keys/_key.html.haml2
-rw-r--r--app/views/profiles/keys/_key_details.html.haml16
-rw-r--r--app/views/profiles/passwords/edit.html.haml2
-rw-r--r--app/views/profiles/two_factor_auths/show.html.haml2
-rw-r--r--app/views/projects/_archived_notice.html.haml5
-rw-r--r--app/views/projects/_remove.html.haml10
-rw-r--r--app/views/projects/_visibility_modal.html.haml30
-rw-r--r--app/views/projects/artifacts/browse.html.haml2
-rw-r--r--app/views/projects/blob/_breadcrumb.html.haml28
-rw-r--r--app/views/projects/blob/viewers/_openapi.html.haml1
-rw-r--r--app/views/projects/buttons/_dropdown.html.haml2
-rw-r--r--app/views/projects/commits/show.html.haml2
-rw-r--r--app/views/projects/edit.html.haml31
-rw-r--r--app/views/projects/environments/empty_logs.html.haml14
-rw-r--r--app/views/projects/environments/folder.html.haml4
-rw-r--r--app/views/projects/environments/show.html.haml4
-rw-r--r--app/views/projects/hook_logs/_index.html.haml2
-rw-r--r--app/views/projects/hook_logs/show.html.haml3
-rw-r--r--app/views/projects/hooks/_index.html.haml17
-rw-r--r--app/views/projects/hooks/edit.html.haml16
-rw-r--r--app/views/projects/issues/_new_branch.html.haml2
-rw-r--r--app/views/projects/merge_requests/_awards_block.html.haml5
-rw-r--r--app/views/projects/merge_requests/_description.html.haml9
-rw-r--r--app/views/projects/merge_requests/_discussion_filter.html.haml2
-rw-r--r--app/views/projects/merge_requests/_mr_box.html.haml15
-rw-r--r--app/views/projects/merge_requests/_mr_title.html.haml8
-rw-r--r--app/views/projects/merge_requests/_widget.html.haml14
-rw-r--r--app/views/projects/merge_requests/show.html.haml56
-rw-r--r--app/views/projects/merge_requests/tabs/_pane.html.haml7
-rw-r--r--app/views/projects/merge_requests/tabs/_tab.html.haml7
-rw-r--r--app/views/projects/pages/_list.html.haml4
-rw-r--r--app/views/projects/pages_domains/edit.html.haml21
-rw-r--r--app/views/projects/pages_domains/show.html.haml60
-rw-r--r--app/views/projects/pipelines/_info.html.haml5
-rw-r--r--app/views/projects/registry/settings/_index.haml2
-rw-r--r--app/views/projects/services/edit.html.haml4
-rw-r--r--app/views/projects/settings/_archive.html.haml18
-rw-r--r--app/views/projects/settings/ci_cd/_form.html.haml2
-rw-r--r--app/views/projects/settings/ci_cd/show.html.haml14
-rw-r--r--app/views/projects/settings/integrations/_project_hook.html.haml16
-rw-r--r--app/views/projects/show.html.haml7
-rw-r--r--app/views/projects/snippets/_actions.html.haml4
-rw-r--r--app/views/projects/snippets/index.html.haml3
-rw-r--r--app/views/projects/snippets/show.html.haml17
-rw-r--r--app/views/projects/stage/_stage.html.haml6
-rw-r--r--app/views/projects/tags/_tag.atom.builder2
-rw-r--r--app/views/projects/tags/_tag.html.haml8
-rw-r--r--app/views/projects/tags/show.html.haml24
-rw-r--r--app/views/projects/tree/_readme.html.haml11
-rw-r--r--app/views/projects/tree/_tree_header.html.haml21
-rw-r--r--app/views/search/_category.html.haml2
-rw-r--r--app/views/search/results/_snippet_blob.html.haml2
-rw-r--r--app/views/search/results/_snippet_title.html.haml2
-rw-r--r--app/views/shared/_personal_access_tokens_form.html.haml3
-rw-r--r--app/views/shared/_service_settings.html.haml18
-rw-r--r--app/views/shared/boards/_show.html.haml1
-rw-r--r--app/views/shared/boards/components/_board.html.haml26
-rw-r--r--app/views/shared/buttons/_project_feature_toggle.html.haml16
-rw-r--r--app/views/shared/empty_states/_snippets.html.haml3
-rw-r--r--app/views/shared/groups/_group.html.haml2
-rw-r--r--app/views/shared/icons/_dev_ops_score_no_data.svg (renamed from app/views/shared/icons/_convdev_no_data.svg)0
-rw-r--r--app/views/shared/icons/_dev_ops_score_no_index.svg (renamed from app/views/shared/icons/_convdev_no_index.svg)0
-rw-r--r--app/views/shared/icons/_dev_ops_score_overview.svg (renamed from app/views/shared/icons/_convdev_overview.svg)0
-rw-r--r--app/views/shared/issuable/_close_reopen_button.html.haml2
-rw-r--r--app/views/shared/issuable/_search_bar.html.haml4
-rw-r--r--app/views/shared/issuable/_sidebar.html.haml8
-rw-r--r--app/views/shared/labels/_nav.html.haml2
-rw-r--r--app/views/shared/members/_sort_dropdown.html.haml10
-rw-r--r--app/views/shared/milestones/_milestone.html.haml5
-rw-r--r--app/views/shared/milestones/_sidebar.html.haml53
-rw-r--r--app/views/shared/milestones/_tabs.html.haml16
-rw-r--r--app/views/shared/notifications/_custom_notifications.html.haml2
-rw-r--r--app/views/shared/projects/_archived.html.haml3
-rw-r--r--app/views/shared/projects/_list.html.haml1
-rw-r--r--app/views/shared/projects/_project.html.haml5
-rw-r--r--app/views/shared/snippets/_header.html.haml6
-rw-r--r--app/views/shared/snippets/_snippet.html.haml6
-rw-r--r--app/views/shared/tokens/_scopes_list.html.haml2
-rw-r--r--app/views/shared/web_hooks/_hook.html.haml16
-rw-r--r--app/views/shared/web_hooks/_index.html.haml14
-rw-r--r--app/views/shared/web_hooks/_test_button.html.haml6
-rw-r--r--app/views/shared/web_hooks/_title_and_docs.html.haml5
-rw-r--r--app/views/snippets/_actions.html.haml16
-rw-r--r--app/views/snippets/_snippets.html.haml2
-rw-r--r--app/views/snippets/_snippets_scope_menu.html.haml2
-rw-r--r--app/views/snippets/edit.html.haml2
-rw-r--r--app/views/snippets/show.html.haml17
-rw-r--r--app/views/users/_profile_basic_info.html.haml6
-rw-r--r--app/views/users/show.html.haml94
-rw-r--r--app/workers/all_queues.yml6
-rw-r--r--app/workers/clusters/applications/activate_service_worker.rb19
-rw-r--r--app/workers/clusters/applications/deactivate_service_worker.rb24
-rw-r--r--app/workers/clusters/cleanup/app_worker.rb15
-rw-r--r--app/workers/clusters/cleanup/project_namespace_worker.rb15
-rw-r--r--app/workers/clusters/cleanup/service_account_worker.rb13
-rw-r--r--app/workers/concerns/cluster_cleanup_methods.rb75
-rw-r--r--app/workers/delete_merged_branches_worker.rb2
-rw-r--r--app/workers/delete_stored_files_worker.rb2
-rw-r--r--app/workers/hashed_storage/project_migrate_worker.rb2
-rw-r--r--app/workers/pages_domain_removal_cron_worker.rb2
-rw-r--r--app/workers/personal_access_tokens/expiring_worker.rb23
-rw-r--r--app/workers/pipeline_process_worker.rb4
-rw-r--r--app/workers/process_commit_worker.rb5
-rw-r--r--app/workers/run_pipeline_schedule_worker.rb6
-rw-r--r--app/workers/stuck_ci_jobs_worker.rb4
-rw-r--r--babel.config.js1
-rwxr-xr-xbin/secpick47
-rw-r--r--changelogs/unreleased/11403-add-weight-wip-limit-to-list.yml5
-rw-r--r--changelogs/unreleased/11506-add-additional-attributes-and-arguments-for-the-graphql-epic-query.yml5
-rw-r--r--changelogs/unreleased/12390-document-sbt-support.yml5
-rw-r--r--changelogs/unreleased/12811-add-pip-version-dep-scanning-flag.yml5
-rw-r--r--changelogs/unreleased/13075-document-gradle-support.yml5
-rw-r--r--changelogs/unreleased/13231-apollo-discussion-caching.yml5
-rw-r--r--changelogs/unreleased/13768-fix-redo-icn.yml5
-rw-r--r--changelogs/unreleased/13978-pipeline-security-remove-vuln-count.yml5
-rw-r--r--changelogs/unreleased/13979-dashboard-empty-state.yml5
-rw-r--r--changelogs/unreleased/14857-new-metric-button-not-visible-when-prometheus-app-installed-on-grou.yml5
-rw-r--r--changelogs/unreleased/15398-mvc-container-registry-tag-expiration-policies.yml5
-rw-r--r--changelogs/unreleased/16050-improve-first-mentioned-issue-metric-calc.yml5
-rw-r--r--changelogs/unreleased/17580-enable-etag-caching-notes-for-mrs.yml5
-rw-r--r--changelogs/unreleased/18668-clean-up-cohorts.yml5
-rw-r--r--changelogs/unreleased/20298-labels-management-is-not-accessible-when-issues-are-disabled.yml5
-rw-r--r--changelogs/unreleased/20321-optional-only-jira-issue-link-on-gitlab-commit-no-jira-comment.yml5
-rw-r--r--changelogs/unreleased/20709-add-runner-info-in-build-event.yaml5
-rw-r--r--changelogs/unreleased/20890-soft-delete-user-api-status-code.yml5
-rw-r--r--changelogs/unreleased/20978-add-allow-failure-in-pipeline-event.yaml6
-rw-r--r--changelogs/unreleased/21059-optimize-deploy-keys-index-page.yml5
-rw-r--r--changelogs/unreleased/21800-mentioned-users-models-with-array-type.yml5
-rw-r--r--changelogs/unreleased/21800-mentioned-users-table-migrations.yml6
-rw-r--r--changelogs/unreleased/22392-remove-eks-cluster-feature-flag.yml5
-rw-r--r--changelogs/unreleased/22392-update-cluster-settings-provider-link.yml5
-rw-r--r--changelogs/unreleased/22465-rack-attack-authenticate-runner-requests-with-job-token-basic-auth.yml5
-rw-r--r--changelogs/unreleased/22465-rack-attack-authenticate-runner-requests.yml5
-rw-r--r--changelogs/unreleased/23746-error-500-when-trying-to-destroy-oauth-application-entry-in-admin-a.yml5
-rw-r--r--changelogs/unreleased/24190-archived-project-warning-message.yml5
-rw-r--r--changelogs/unreleased/24804-import-page-namespace-fix.yml5
-rw-r--r--changelogs/unreleased/25351-texts-and-structure.yml5
-rw-r--r--changelogs/unreleased/26013-release-generation-from-within-gitlab-ci-yml-6.yml5
-rw-r--r--changelogs/unreleased/26019-add-evidence-json.yml5
-rw-r--r--changelogs/unreleased/26019-restriction-on-evidence.yml5
-rw-r--r--changelogs/unreleased/26293-prevent-merge-if-pipeline-has-failed.yml5
-rw-r--r--changelogs/unreleased/27025-add-border-top-in-readme.yml5
-rw-r--r--changelogs/unreleased/27239-display-a-better-message-when-starting-a-discussion-on-a-deleted-co.yml5
-rw-r--r--changelogs/unreleased/27244-discard-all-changes.yml5
-rw-r--r--changelogs/unreleased/27244-webide-discard-all-changes.yml5
-rw-r--r--changelogs/unreleased/27630-deploy-to-ci-specified-namespace.yml5
-rw-r--r--changelogs/unreleased/27630-fail-build-if-namespace-specified-in-ci-for-managed-cluster.yml6
-rw-r--r--changelogs/unreleased/27630-specify-kubernetes-namespace-in-ci-template.yml5
-rw-r--r--changelogs/unreleased/27630-use-ci-specified-namespace-for-deploy-boards.yml6
-rw-r--r--changelogs/unreleased/28075-error-while-fetching-envs.yml5
-rw-r--r--changelogs/unreleased/28328-lock-button-fix.yml5
-rw-r--r--changelogs/unreleased/28365-bypass-confirmation-box-for-delete-user-and-contributions.yml5
-rw-r--r--changelogs/unreleased/29067-vrt-no-auth.yml5
-rw-r--r--changelogs/unreleased/29165-confusing-wording-fix.yml5
-rw-r--r--changelogs/unreleased/29713-graphql-add-issue-weight-sorting.yml5
-rw-r--r--changelogs/unreleased/30016-changing-branch-keep-details.yml5
-rw-r--r--changelogs/unreleased/30036-award-emoji-tooltip-is-escaped-twice.yml5
-rw-r--r--changelogs/unreleased/30390-cablett-duplicate-labels-nonunique-index.yml5
-rw-r--r--changelogs/unreleased/30666-fix-sr-term-style.yml5
-rw-r--r--changelogs/unreleased/31031-gitaly-n-1-queries-in-api-version-groups-id.yml5
-rw-r--r--changelogs/unreleased/31236-auto-update-merge-widget.yml5
-rw-r--r--changelogs/unreleased/31391-update-sparkline-chart-deployment-widget.yml5
-rw-r--r--changelogs/unreleased/31397-go-get-meta-source.yml5
-rw-r--r--changelogs/unreleased/31611-limit-the-number-of-stored-sessions-per-user.yml5
-rw-r--r--changelogs/unreleased/31649-environment-rollback-was-not-friendly.yml5
-rw-r--r--changelogs/unreleased/31662-fix-excessive-find-file-escaping.yml5
-rw-r--r--changelogs/unreleased/31759-clear-cluster-cache.yml5
-rw-r--r--changelogs/unreleased/31830-limit-mr-target-branches.yml5
-rw-r--r--changelogs/unreleased/31914-graphql-mark-all-todos-as-done-pd.yml5
-rw-r--r--changelogs/unreleased/31914-graphql-todo-query-support-multiple-query.yml5
-rw-r--r--changelogs/unreleased/31914-graphql-todo-restore-pd.yml5
-rw-r--r--changelogs/unreleased/32115-structured-logging-mail_room.yml5
-rw-r--r--changelogs/unreleased/32358-add-modsec-blocking-usage-stats-per-project.yml5
-rw-r--r--changelogs/unreleased/32470-ui-degradation-on-environment-folder-view.yml5
-rw-r--r--changelogs/unreleased/32557-convert-generic-epic-error-banners-to-form-validation-messages.yml5
-rw-r--r--changelogs/unreleased/32557-fix-error-adding-already-linked-issue.yml5
-rw-r--r--changelogs/unreleased/32778-change-retries-approach-promql-queries.yml5
-rw-r--r--changelogs/unreleased/32780-when-zooming-metrics-at-some-point-we-can-t-adjust-the-zoom-any-fur.yml5
-rw-r--r--changelogs/unreleased/32897-convert-alerts-to-toasts.yml5
-rw-r--r--changelogs/unreleased/32959-dismissal-ux-improvement.yml5
-rw-r--r--changelogs/unreleased/33052-design-comment-link-styling.yml5
-rw-r--r--changelogs/unreleased/33099-add-pipelines-api-order-by-updated-at.yml5
-rw-r--r--changelogs/unreleased/33099-updated_at-filters-for-pipelines-api.yml5
-rw-r--r--changelogs/unreleased/33257-prevent-accidental-deletions-via-soft-delete-for-groups-services.yml5
-rw-r--r--changelogs/unreleased/33257-prevent-accidental-deletions-via-soft-delete-for-groups-workers.yml5
-rw-r--r--changelogs/unreleased/33318-make-internal-projects-poolable.yml5
-rw-r--r--changelogs/unreleased/33338-notify-user-if-they-have-over-1000-epics-in-roadmap.yml5
-rw-r--r--changelogs/unreleased/33482-allow-text-wrapping-on-repository-tags-page.yml5
-rw-r--r--changelogs/unreleased/33596-package-ci-build-data.yml5
-rw-r--r--changelogs/unreleased/33596-package-ci-metadata.yml5
-rw-r--r--changelogs/unreleased/33718-add-new-dep-scanning-flag.yml5
-rw-r--r--changelogs/unreleased/33880-add-api-to-disable-pages.yml5
-rw-r--r--changelogs/unreleased/34067-add-recent-searches-to-sentry-error-list-in-gitlab.yml5
-rw-r--r--changelogs/unreleased/34068-sort-by-first-seen-last-seen-and-frequency-in-sentry-error-list-in-.yml5
-rw-r--r--changelogs/unreleased/34068-sort-error-list.yml5
-rw-r--r--changelogs/unreleased/34121-add-error-states-to-getters.yml5
-rw-r--r--changelogs/unreleased/34121-group-level-no-data-store.yml5
-rw-r--r--changelogs/unreleased/34157-apm_snowplow_events.yml5
-rw-r--r--changelogs/unreleased/34157-snowplow-custom-events-for-monitor-apm.yml5
-rw-r--r--changelogs/unreleased/34261-service-desk-to-api.yml5
-rw-r--r--changelogs/unreleased/34261-service-desk-to-graphql.yml5
-rw-r--r--changelogs/unreleased/34261-toggle-service-desk.yml5
-rw-r--r--changelogs/unreleased/34377-design-view-download-single-issue-design-image.yml5
-rw-r--r--changelogs/unreleased/34406-link-to-merge-trains-documentation-on-mr-widget-is-incorrect.yml5
-rw-r--r--changelogs/unreleased/34457-remove-n-plus-1-search.yml5
-rw-r--r--changelogs/unreleased/34636-drop-deprecated-column-from-projects-table.yml5
-rw-r--r--changelogs/unreleased/34685-Pages-template-jekyll-outdated-and-not-working-as-expected.yml5
-rw-r--r--changelogs/unreleased/34734-monitor-dashboard-does-not-expand-sections-that-have-data-on-load.yml5
-rw-r--r--changelogs/unreleased/34943-graphql-sentry-details.yml5
-rw-r--r--changelogs/unreleased/34958-update-timeago-to-the-latest-release.yml5
-rw-r--r--changelogs/unreleased/35094-mr-approver-tooltip-color.yml5
-rw-r--r--changelogs/unreleased/35122-sentry-error-search-pagination-implement-pagination-in-sentry-error.yml5
-rw-r--r--changelogs/unreleased/35145-cluster-alert-warning-is-using-wrong-padding.yml5
-rw-r--r--changelogs/unreleased/35365-bugfix-gma-group-members-cleanup.yml5
-rw-r--r--changelogs/unreleased/35368-add-doc-links-to-all-features-2.yml5
-rw-r--r--changelogs/unreleased/35411-syntax-highlight-for-sentry-stacktrace.yml5
-rw-r--r--changelogs/unreleased/35458-expose-manual-actions-retry.yml5
-rw-r--r--changelogs/unreleased/35468-fixdetail-margins.yml5
-rw-r--r--changelogs/unreleased/35527-add-path-to-package.yml5
-rw-r--r--changelogs/unreleased/35570-add-to-the-environment-view-pod-state-legend.yml5
-rw-r--r--changelogs/unreleased/35570-update-deploy-instances-color-scheme.yml5
-rw-r--r--changelogs/unreleased/35591-instance-and-project-level-ssl-and-custom-domain-support.yml5
-rw-r--r--changelogs/unreleased/35616-broken-anchor-for-learn-more-about-interacting-with-security-report.yml5
-rw-r--r--changelogs/unreleased/35617-only-blacklist-git-auth.yml5
-rw-r--r--changelogs/unreleased/35789-hashed-storage-attachments-migration-object-storage.yml6
-rw-r--r--changelogs/unreleased/35873-update-container-registry-ui-to-display-correct-column-names.yml5
-rw-r--r--changelogs/unreleased/36103-links-to-design-comments-from-todos-and-system-notes-do-not-jump-to.yml5
-rw-r--r--changelogs/unreleased/36205-issues-in-group-milestones.yml5
-rw-r--r--changelogs/unreleased/36257-hide-edit-for-nonallowed.yml5
-rw-r--r--changelogs/unreleased/36301-add-tie-breaker-id-sorting-to-deployments.yml5
-rw-r--r--changelogs/unreleased/36313-graphql-mutation-for-changing-due-date-of-an-issue.yml5
-rw-r--r--changelogs/unreleased/36318-graphql-mutation-for-changing-confidential-status-of-an-issue.yml5
-rw-r--r--changelogs/unreleased/36326-auto-focus-search-bar.yml5
-rw-r--r--changelogs/unreleased/36412-Sentry-error-page-stuck-loading.yml5
-rw-r--r--changelogs/unreleased/36450-update-the-saas-trial-copy-to-be-dynamic-depending-on-the-trial-typ.yml5
-rw-r--r--changelogs/unreleased/36455-add-external-link-icon.yml5
-rw-r--r--changelogs/unreleased/36483-move-the-confidence-column-in-the-security-dashboard.yml5
-rw-r--r--changelogs/unreleased/36611-gitlab-container-registry-repository-names-regex-is-not-at-parity-w.yml5
-rw-r--r--changelogs/unreleased/36646-ignore-empty-diffs-for-external-diffs-migration.yml5
-rw-r--r--changelogs/unreleased/36717-container-repositories-can-not-be-replicated.yml5
-rw-r--r--changelogs/unreleased/36751-collect-the-date-a-saas-trial-starts-on.yml5
-rw-r--r--changelogs/unreleased/36776-entropy-requirements-for-new-user-passwords-mvc.yml5
-rw-r--r--changelogs/unreleased/36905-create-a-rake-task-to-gather-license-info.yml5
-rw-r--r--changelogs/unreleased/36924-cablett-epic-tree-permissions.yml5
-rw-r--r--changelogs/unreleased/36937-change-title-mr-approvals-settings.yml5
-rw-r--r--changelogs/unreleased/3695-view-closed-issues-in-epic.yml5
-rw-r--r--changelogs/unreleased/36955-snowplow-custom-events-for-monitor-apm-add-metric-button-fe.yml5
-rw-r--r--changelogs/unreleased/37000-reduce-start-a-trial-emoji-rocket-size.yml5
-rw-r--r--changelogs/unreleased/37006-fix-open-details-page-in-new-tab.yml5
-rw-r--r--changelogs/unreleased/37026-backend-create-a-table-for-sentry-error-related-issues.yml5
-rw-r--r--changelogs/unreleased/37033-auto-devops-suppress-progress-on-pulling-docker-base-image-to-be-ru.yml5
-rw-r--r--changelogs/unreleased/37034-increase-margin-between-commits-branches-tags-size-row-in-project-d.yml5
-rw-r--r--changelogs/unreleased/37057-record-import-failures.yml5
-rw-r--r--changelogs/unreleased/37363-junit-xml-summary-incorrectly-shows-100-success-rate.yml5
-rw-r--r--changelogs/unreleased/37371-update-gitlab-shell.yml5
-rw-r--r--changelogs/unreleased/37385-respect-commit-timezones-from-gitaly.yml5
-rw-r--r--changelogs/unreleased/37387-do-not-clean-sidekiq-metrics.yml5
-rw-r--r--changelogs/unreleased/37403-npm-install-fails-with-ci_job_token-in-npmrc.yml5
-rw-r--r--changelogs/unreleased/37480-validate-instance-level-cluster-environment-scope.yml5
-rw-r--r--changelogs/unreleased/37680-tree-control-buttons-misbehave-on-small-viewports.yml5
-rw-r--r--changelogs/unreleased/37772-add-ui-event-tracking-for-package-details-installation-instructions.yml5
-rw-r--r--changelogs/unreleased/37952-fix-missing-empty-rule-ux-in-mr-widget.yml5
-rw-r--r--changelogs/unreleased/37972-container-registry-tags-expect-oci-image-configs-to-have-created-fi.yml5
-rw-r--r--changelogs/unreleased/38234-zoom-quick-action-on-a-new-issue-causes-error.yml5
-rw-r--r--changelogs/unreleased/38244-fix-release-filter-on-mr-page.yml5
-rw-r--r--changelogs/unreleased/39290-fix-border-of-readme-when-vue_file_list-enabled.yml5
-rw-r--r--changelogs/unreleased/39465-39469-issues-solutions.yml6
-rw-r--r--changelogs/unreleased/39498-part-1.yml5
-rw-r--r--changelogs/unreleased/3963-auto-related-duplicated-issues.yml5
-rw-r--r--changelogs/unreleased/41934-replace-fa-bullhorn-with-gitlab-svg-bullhorn-icon.yml5
-rw-r--r--changelogs/unreleased/42158-stage-dropdown-lists-fix.yml5
-rw-r--r--changelogs/unreleased/42738-change-commit-user-mentions-commit-id-column-type.yml5
-rw-r--r--changelogs/unreleased/55706-remove-ci_commit_ref-docs.yml5
-rw-r--r--changelogs/unreleased/6971-epic-sidebar-updates.yml5
-rw-r--r--changelogs/unreleased/7150-the-weight-assignment-box-shows-up-when-the-sidebar-is-collapsed-eve.yml5
-rw-r--r--changelogs/unreleased/7597-add-template-repository-usage-to-the-usage-ping.yml5
-rw-r--r--changelogs/unreleased/7603-make-it-easy-to-generate-and-share-the-maven-xml-for-a-library.yml5
-rw-r--r--changelogs/unreleased/8248-remove-conan-feature-flag.yml5
-rw-r--r--changelogs/unreleased/8524-add-ds-var.yml5
-rw-r--r--changelogs/unreleased/9983-document-make-using-gitlab-auth-with-vault-easy.yml5
-rw-r--r--changelogs/unreleased/Delete-board_service-js-in-app-folder.yml5
-rw-r--r--changelogs/unreleased/Remove-IIFEs-from-gl_dropdown-js.yml5
-rw-r--r--changelogs/unreleased/Remove-var-from-gl_dropdown-js.yml5
-rw-r--r--changelogs/unreleased/Replace-BoardService_in_assignee_select_spec-js.yml5
-rw-r--r--changelogs/unreleased/Replace-BoardService_in_board_card_spec-js.yml5
-rw-r--r--changelogs/unreleased/Replace-BoardService_in_board_list_common_spec-js.yml5
-rw-r--r--changelogs/unreleased/Replace-BoardService_in_board_new_issue_spec-js.yml5
-rw-r--r--changelogs/unreleased/Replace-BoardService_in_board_spec-js.yml5
-rw-r--r--changelogs/unreleased/Replace-BoardService_in_issue_spec-js.yml5
-rw-r--r--changelogs/unreleased/Replace-BoardService_in_list_spec-js.yml5
-rw-r--r--changelogs/unreleased/Replace-BoardService_in_mock_data-js.yml5
-rw-r--r--changelogs/unreleased/Upate-boards-index-js-to-use-boardsStore.yml5
-rw-r--r--changelogs/unreleased/Update-boards-models-list-js-to-use-boardsStore.yml5
-rw-r--r--changelogs/unreleased/Updated-hexo-project_template.yml5
-rw-r--r--changelogs/unreleased/Updated-hugo-project_template.yml5
-rw-r--r--changelogs/unreleased/ab-keyset-pagination.yml5
-rw-r--r--changelogs/unreleased/add-badge-name-field.yml5
-rw-r--r--changelogs/unreleased/add-index-on-environment-type.yml5
-rw-r--r--changelogs/unreleased/add-root-ci-config-including-user-defined-config.yml5
-rw-r--r--changelogs/unreleased/add-timestamps-to-puma-stdout-log.yml5
-rw-r--r--changelogs/unreleased/add_body_data_elements_for_page_type_id_project_id_and_namespace_id.yml5
-rw-r--r--changelogs/unreleased/add_missing_add_index_rubocop_spec.yml5
-rw-r--r--changelogs/unreleased/ak-logs-search.yml5
-rw-r--r--changelogs/unreleased/ak-logs-timestamp.yml5
-rw-r--r--changelogs/unreleased/al-31836-guest-access-to-delete-snippets-bug.yml5
-rw-r--r--changelogs/unreleased/allow-raw-blobs-to-be-served-from-external-storage.yml5
-rw-r--r--changelogs/unreleased/ap-14330-external-personal-snippets.yml5
-rw-r--r--changelogs/unreleased/ap-35389-api-snippets-public-personal.yml6
-rw-r--r--changelogs/unreleased/auto_devops_enabled_ci_variable.yml5
-rw-r--r--changelogs/unreleased/autofocus-label-search.yml5
-rw-r--r--changelogs/unreleased/bridge-rules.yml5
-rw-r--r--changelogs/unreleased/bug-35083-check-permission-for-downstream-pipeline.yml5
-rw-r--r--changelogs/unreleased/bvl-allow-moving-forked-projects-across-shards.yml5
-rw-r--r--changelogs/unreleased/bvl-cache-repository-ancestor.yml5
-rw-r--r--changelogs/unreleased/bvl-remove-cleanup-feature-flag.yml6
-rw-r--r--changelogs/unreleased/bvl-remove-validate-merge-sha-ff.yml6
-rw-r--r--changelogs/unreleased/chore-admin-mode-rack-attack-default-paths-migration.yml5
-rw-r--r--changelogs/unreleased/chore-rename-user-full-private-access.yml5
-rw-r--r--changelogs/unreleased/ci-merge-dependencies-and-artifacts-with-needs.yml5
-rw-r--r--changelogs/unreleased/ci-template-sentry-application.yml5
-rw-r--r--changelogs/unreleased/ci_template_cluster_applications.yml5
-rw-r--r--changelogs/unreleased/cleanup-monitoring-dashboard-unused-methods.yml5
-rw-r--r--changelogs/unreleased/cloud_run_feature_enabled_by_default.yml5
-rw-r--r--changelogs/unreleased/commit-box-child-label.yml5
-rw-r--r--changelogs/unreleased/complete-pages-metadata-migration.yml5
-rw-r--r--changelogs/unreleased/confidential_mr_styling.yml5
-rw-r--r--changelogs/unreleased/create-persistent-ref-outside-of-transaction.yml5
-rw-r--r--changelogs/unreleased/deployment-finished-at.yml5
-rw-r--r--changelogs/unreleased/dz-move-operations-routes.yml5
-rw-r--r--changelogs/unreleased/dz-move-wiki-route.yml5
-rw-r--r--changelogs/unreleased/env-tooltips.yml5
-rw-r--r--changelogs/unreleased/eread-harmonize-capitalization-in-ui.yml5
-rw-r--r--changelogs/unreleased/evidence-docs-and-release-api.yml5
-rw-r--r--changelogs/unreleased/expose_moved_to_in_issues_api.yml5
-rw-r--r--changelogs/unreleased/feat-circuit-project-service.yml5
-rw-r--r--changelogs/unreleased/feat-group-mentions-prevention.yml5
-rw-r--r--changelogs/unreleased/feat-increase-start-in.yml5
-rw-r--r--changelogs/unreleased/feat-merge-request-coverage-delta.yml5
-rw-r--r--changelogs/unreleased/feat-openapi-viewer.yml5
-rw-r--r--changelogs/unreleased/feat-ssh-sha256.yml5
-rw-r--r--changelogs/unreleased/feat-support-omniauth-for-admin-mode.yml5
-rw-r--r--changelogs/unreleased/feat-tagger.yml5
-rw-r--r--changelogs/unreleased/feat-ui-releases-pagination.yml5
-rw-r--r--changelogs/unreleased/feature-advanced-delete-k8s-resources-ee.yml5
-rw-r--r--changelogs/unreleased/feature-jramsay-diff-expansion-copy.yml5
-rw-r--r--changelogs/unreleased/filter-for-project-and-group-audit-events.yml5
-rw-r--r--changelogs/unreleased/fix-conflict-dast-ds.yml5
-rw-r--r--changelogs/unreleased/fix-env-doc-link.yml5
-rw-r--r--changelogs/unreleased/fix-fork-link-display-bug.yml5
-rw-r--r--changelogs/unreleased/fix-groups-search-dropdown.yml5
-rw-r--r--changelogs/unreleased/fix-incorrect-new-branch-name-from-issue.yml5
-rw-r--r--changelogs/unreleased/fix-job-log-default-colors.yml5
-rw-r--r--changelogs/unreleased/fix-padding-design-comments.yml5
-rw-r--r--changelogs/unreleased/fix-padding-in-project-settings-members.yml5
-rw-r--r--changelogs/unreleased/fix-project-list-cache-key.yml5
-rw-r--r--changelogs/unreleased/fix-strip_signature.yml5
-rw-r--r--changelogs/unreleased/fix_assignee_url_issue_board_sidebar.yml5
-rw-r--r--changelogs/unreleased/fixes-35624.yml5
-rw-r--r--changelogs/unreleased/fj-31133-snippet-content-size-limit.yml5
-rw-r--r--changelogs/unreleased/fj-36079-snippet-graphql-endpoints-with-mutations.yml5
-rw-r--r--changelogs/unreleased/fj-36079-snippet-graphql-endpoints.yml5
-rw-r--r--changelogs/unreleased/fj-37254-remove-delete-personal-snippet.yml5
-rw-r--r--changelogs/unreleased/fj-37436-fix-create-personal-snippet-ability.yml5
-rw-r--r--changelogs/unreleased/fj-38015-respect-query-params-in-embed-url.yml5
-rw-r--r--changelogs/unreleased/fj-38068-fix-snippet-route-refactor.yml5
-rw-r--r--changelogs/unreleased/fj-add-filters-to-snippets-finder.yml5
-rw-r--r--changelogs/unreleased/fj-add-mark-as-spam-snippet-mutation.yml5
-rw-r--r--changelogs/unreleased/fj-add-report-permission-to-graphql-snippet-endpoint.yml5
-rw-r--r--changelogs/unreleased/fj-fix-snippets-routes.yml5
-rw-r--r--changelogs/unreleased/fj-secret-snippet-migrations.yml5
-rw-r--r--changelogs/unreleased/fork-puma-gem.yml5
-rw-r--r--changelogs/unreleased/generate-test-prometheus-data.yml6
-rw-r--r--changelogs/unreleased/georgekoltsov-add-rate-limit-to-exports.yml5
-rw-r--r--changelogs/unreleased/gitaly-2108-repos-gc-after-move.yml5
-rw-r--r--changelogs/unreleased/gitaly-version-v1.72.0.yml5
-rw-r--r--changelogs/unreleased/gitaly-version-v1.73.0.yml5
-rw-r--r--changelogs/unreleased/gitaly-version-v1.74.0.yml5
-rw-r--r--changelogs/unreleased/gitaly-version-v1.75.0.yml5
-rw-r--r--changelogs/unreleased/gitaly-version-v1.76.0.yml5
-rw-r--r--changelogs/unreleased/gitlabktl-17-add-rbac-permissions-for-knative-version.yml5
-rw-r--r--changelogs/unreleased/gke-oauth.yml5
-rw-r--r--changelogs/unreleased/helm_values_default.yml5
-rw-r--r--changelogs/unreleased/hly-search-by-project-full-path.yml5
-rw-r--r--changelogs/unreleased/http-status-422.yml5
-rw-r--r--changelogs/unreleased/id-mr-squash-message-performance.yml5
-rw-r--r--changelogs/unreleased/id-optimize-query-for-ci-pipelines.yml5
-rw-r--r--changelogs/unreleased/include-worker-attributes-in-sidekiq-metrics-v2.yml5
-rw-r--r--changelogs/unreleased/issue_34226.yml5
-rw-r--r--changelogs/unreleased/issue_7105.yml5
-rw-r--r--changelogs/unreleased/jira-commit-link.yml5
-rw-r--r--changelogs/unreleased/jivanvl-fix-alignment-options-dropdown-graph.yml5
-rw-r--r--changelogs/unreleased/knative-0-9-update.yml5
-rw-r--r--changelogs/unreleased/large_imports_rake_task.yml5
-rw-r--r--changelogs/unreleased/leipert-increase-dag-limit.yml5
-rw-r--r--changelogs/unreleased/lm-create-issues-from-sentry-details-page.yml5
-rw-r--r--changelogs/unreleased/lm-create-new-issue-from-sentry.yml5
-rw-r--r--changelogs/unreleased/log_service_web_hooks.yml5
-rw-r--r--changelogs/unreleased/make-workflow-rules-to-work.yml5
-rw-r--r--changelogs/unreleased/managed-cluster-applications-ci-template-ensure-namespace.yml5
-rw-r--r--changelogs/unreleased/misaligned_approval_tr.yml5
-rw-r--r--changelogs/unreleased/new-33257-prevent-accidental-deletions-via-soft-delete-for-groups-db-chan.yml5
-rw-r--r--changelogs/unreleased/nfriend-add-merge-train-warning-dialog.yml5
-rw-r--r--changelogs/unreleased/nfriend-add-release-issue-summary.yml5
-rw-r--r--changelogs/unreleased/nfriend-atmtwps-merge-immediately-dialog.yml5
-rw-r--r--changelogs/unreleased/nicolasdular-add-broadcast-target-to-api.yml5
-rw-r--r--changelogs/unreleased/nicolasdular-add-broadcast-type.yml5
-rw-r--r--changelogs/unreleased/nicolasdular-add-target-path-to-broadcast-message.yml5
-rw-r--r--changelogs/unreleased/nicolasdular-allow-broadcast-message-styling.yml5
-rw-r--r--changelogs/unreleased/osw-delete-fork-relation-upon-visibility-change.yml5
-rw-r--r--changelogs/unreleased/osw-refresh-forks-count-cache-correctly.yml5
-rw-r--r--changelogs/unreleased/osw-remove-transaction-while-rebasing.yml5
-rw-r--r--changelogs/unreleased/ph-31406-fetchWidgetDataAsync.yml5
-rw-r--r--changelogs/unreleased/ph-33358-projectVisibilityConfirmModal.yml5
-rw-r--r--changelogs/unreleased/ph-33813-moveMergeRequestDescription.yml5
-rw-r--r--changelogs/unreleased/preserve-merge-train-rows-after-merge.yml5
-rw-r--r--changelogs/unreleased/projects_finder_visibility_optimization.yml5
-rw-r--r--changelogs/unreleased/push-option-ci-variables.yml5
-rw-r--r--changelogs/unreleased/qa-add-email-delivery-tests.yml5
-rw-r--r--changelogs/unreleased/reactive-caching-self-cleanup.yml5
-rw-r--r--changelogs/unreleased/remove-action-buttons-if-no-designs.yml5
-rw-r--r--changelogs/unreleased/remove-done-callbacks-from-vue-components-markdown.yml5
-rw-r--r--changelogs/unreleased/remove-downstream-node-lines.yml5
-rw-r--r--changelogs/unreleased/remove-redundant-toast-scss.yml5
-rw-r--r--changelogs/unreleased/remove_build_badge_path_from_route.yml5
-rw-r--r--changelogs/unreleased/remove_extra_spacing_below_sidebar_time_tracking_info.yml5
-rw-r--r--changelogs/unreleased/remove_milestone_id_from_epics.yml5
-rw-r--r--changelogs/unreleased/rjain-epic-trees.yml5
-rw-r--r--changelogs/unreleased/rk-37435-fix-editor-layout.yml5
-rw-r--r--changelogs/unreleased/rs-default-mr-target.yml5
-rw-r--r--changelogs/unreleased/sa-pat-expiration-notification.yml5
-rw-r--r--changelogs/unreleased/salesforcedx_project_template.yml5
-rw-r--r--changelogs/unreleased/search-list-of-sentry-errors.yml5
-rw-r--r--changelogs/unreleased/security-29660-update-dependencies.yml5
-rw-r--r--changelogs/unreleased/security-394-path-traversal-package-bug.yml5
-rw-r--r--changelogs/unreleased/security-400-path-traversal-rce2.yml5
-rw-r--r--changelogs/unreleased/sentry-url-helper-text.yml5
-rw-r--r--changelogs/unreleased/service-desk-name.yml5
-rw-r--r--changelogs/unreleased/sh-add-index-for-deployments.yml5
-rw-r--r--changelogs/unreleased/sh-avoid-project-count-new-user.yml5
-rw-r--r--changelogs/unreleased/sh-disable-google-backup-acl.yml5
-rw-r--r--changelogs/unreleased/sh-fix-pipeline-retry-dag.yml5
-rw-r--r--changelogs/unreleased/sh-issue-28493.yml5
-rw-r--r--changelogs/unreleased/sh-reduce-gitaly-calls-in-ci-build.yml5
-rw-r--r--changelogs/unreleased/sh-remove-feature-flag-diverging-commits.yml5
-rw-r--r--changelogs/unreleased/sh-skip-lfs-updates-mirroring.yml5
-rw-r--r--changelogs/unreleased/sh-upgrade-gitlab-chronic.yml5
-rw-r--r--changelogs/unreleased/sh-upgrade-rugged.yml5
-rw-r--r--changelogs/unreleased/sh-validate-direct-upload-config.yml5
-rw-r--r--changelogs/unreleased/strong-validate-import-export-references.yml5
-rw-r--r--changelogs/unreleased/sy-add-embeds-limit.yml5
-rw-r--r--changelogs/unreleased/sy-grafana-fix-uid.yml5
-rw-r--r--changelogs/unreleased/toggle-job-log-json-flag-on.yml5
-rw-r--r--changelogs/unreleased/tr-link-error-to-issue-frontend.yml5
-rw-r--r--changelogs/unreleased/tz-fe-timings-performancebar.yml5
-rw-r--r--changelogs/unreleased/update-gitlab-runner-helm-chart-to-0-11-0.yml5
-rw-r--r--changelogs/unreleased/update-managed-namespace-prefix-copy.yml5
-rw-r--r--changelogs/unreleased/update-size-after-commit.yml5
-rw-r--r--changelogs/unreleased/update_auto_deploy_image.yml5
-rw-r--r--changelogs/unreleased/userwithid-per-env-backend.yml5
-rw-r--r--changelogs/unreleased/wc-perf-bar-download.yml5
-rw-r--r--changelogs/unreleased/winh-var-image_file.yml5
-rw-r--r--changelogs/unreleased/wolf-feat-milestone-hide-mr.yml5
-rw-r--r--changelogs/unreleased/workhorse-8-18.yml5
-rw-r--r--changelogs/unreleased/xanf-add-group-link.yml5
-rw-r--r--changelogs/unreleased/xanf-blocked-profile-page.yml5
-rw-r--r--changelogs/unreleased/xanf-fix-unresolved-discussion-jump.yml5
-rw-r--r--changelogs/unreleased/xanf-improve-members-filtering.yml5
-rw-r--r--changelogs/unreleased/xanf-make-audit-table-responsive.yml5
-rw-r--r--changelogs/unreleased/yaml-processor-validation-errors.yml5
-rw-r--r--config/gitlab.yml.example12
-rw-r--r--config/helpers/vendor_dll_hash.js23
-rw-r--r--config/initializers/0_marginalia.rb18
-rw-r--r--config/initializers/1_settings.rb12
-rw-r--r--config/initializers/7_prometheus_metrics.rb11
-rw-r--r--config/initializers/devise_dynamic_password_length_validation.rb39
-rw-r--r--config/initializers/direct_upload_support.rb28
-rw-r--r--config/initializers/elastic_client_setup.rb22
-rw-r--r--config/initializers/forbid_sidekiq_in_transactions.rb2
-rw-r--r--config/initializers/hamlit.rb16
-rw-r--r--config/initializers/rack_attack_git_basic_auth.rb14
-rw-r--r--config/initializers/rack_attack_new.rb27
-rw-r--r--config/initializers/sentry.rb33
-rw-r--r--config/initializers/sidekiq.rb28
-rw-r--r--config/initializers/snowplow_tracker.rb23
-rw-r--r--config/initializers/zz_metrics.rb6
-rw-r--r--config/knative/api_groups.yml11
-rw-r--r--config/knative/api_resources.yml70
-rw-r--r--config/mail_room.yml2
-rw-r--r--config/prometheus/common_metrics.yml2
-rw-r--r--config/prometheus/pod_metrics.yml59
-rw-r--r--config/pseudonymizer.yml5
-rw-r--r--config/puma.example.development.rb8
-rw-r--r--config/puma.rb.example8
-rw-r--r--config/routes.rb8
-rw-r--r--config/routes/group.rb2
-rw-r--r--config/routes/instance_statistics.rb4
-rw-r--r--config/routes/profile.rb15
-rw-r--r--config/routes/project.rb315
-rw-r--r--config/routes/user.rb9
-rw-r--r--config/sidekiq_queues.yml2
-rw-r--r--config/webpack.config.js70
-rw-r--r--config/webpack.vendor.config.js71
-rw-r--r--danger/changelog/Dangerfile28
-rw-r--r--danger/changes_size/Dangerfile2
-rw-r--r--danger/database/Dangerfile2
-rw-r--r--danger/plugins/changelog.rb10
-rw-r--r--danger/prettier/Dangerfile2
-rw-r--r--danger/roulette/Dangerfile4
-rw-r--r--db/fixtures/development/01_admin.rb2
-rw-r--r--db/fixtures/development/02_users.rb3
-rw-r--r--db/fixtures/development/03_project.rb9
-rw-r--r--db/fixtures/development/06_teams.rb2
-rw-r--r--db/fixtures/development/07_milestones.rb2
-rw-r--r--db/fixtures/development/09_issues.rb2
-rw-r--r--db/fixtures/development/10_merge_requests.rb2
-rw-r--r--db/fixtures/development/11_keys.rb2
-rw-r--r--db/fixtures/development/12_snippets.rb2
-rw-r--r--db/fixtures/development/13_comments.rb2
-rw-r--r--db/fixtures/development/14_pipelines.rb2
-rw-r--r--db/fixtures/development/15_award_emoji.rb2
-rw-r--r--db/fixtures/development/16_protected_branches.rb2
-rw-r--r--db/fixtures/development/17_cycle_analytics.rb2
-rw-r--r--db/fixtures/development/19_environments.rb2
-rw-r--r--db/fixtures/development/20_nested_groups.rb2
-rw-r--r--db/fixtures/development/21_dev_ops_score_metrics.rb (renamed from db/fixtures/development/21_conversational_development_index_metrics.rb)6
-rw-r--r--db/fixtures/development/24_forks.rb2
-rw-r--r--db/fixtures/development/25_api_personal_access_token.rb2
-rw-r--r--db/migrate/20180113220114_rework_redirect_routes_indexes.rb6
-rw-r--r--db/migrate/20180215181245_users_name_lower_index.rb4
-rw-r--r--db/migrate/20180308052825_add_section_name_id_index_on_ci_build_trace_sections.rb10
-rw-r--r--db/migrate/20180309121820_reschedule_commits_count_for_merge_request_diff.rb2
-rw-r--r--db/migrate/20180320182229_add_indexes_for_user_activity_queries.rb24
-rw-r--r--db/migrate/20180504195842_project_name_lower_index.rb4
-rw-r--r--db/migrate/20180517082340_add_not_null_constraints_to_project_authorizations.rb22
-rw-r--r--db/migrate/20180711103851_drop_duplicate_protected_tags.rb9
-rw-r--r--db/migrate/20180927073410_add_index_to_project_deploy_tokens_deploy_token_id.rb5
-rw-r--r--db/migrate/20190402150158_backport_enterprise_schema.rb3
-rw-r--r--db/migrate/20190606202100_add_name_to_badges.rb11
-rw-r--r--db/migrate/20190920122420_add_max_personal_access_token_lifetime_to_application_settings.rb9
-rw-r--r--db/migrate/20191003130045_create_issue_user_mentions.rb19
-rw-r--r--db/migrate/20191003150045_create_merge_request_user_mentions.rb19
-rw-r--r--db/migrate/20191003200045_create_epic_user_mentions.rb19
-rw-r--r--db/migrate/20191003250045_create_commit_user_mentions.rb18
-rw-r--r--db/migrate/20191003300045_create_snippet_user_mentions.rb19
-rw-r--r--db/migrate/20191003350045_create_design_user_mentions.rb19
-rw-r--r--db/migrate/20191004151428_add_auto_stop_in_to_environments.rb9
-rw-r--r--db/migrate/20191014123159_add_expire_notification_delivered_to_personal_access_tokens.rb17
-rw-r--r--db/migrate/20191023093207_add_comment_actions_to_services.rb17
-rw-r--r--db/migrate/20191025092748_add_secret_token_to_snippet.rb10
-rw-r--r--db/migrate/20191026120008_add_promoted_to_epic_to_issues.rb16
-rw-r--r--db/migrate/20191026120112_add_promoted_to_epic_to_issues_index.rb22
-rw-r--r--db/migrate/20191028130054_add_max_issue_weight_to_list.rb17
-rw-r--r--db/migrate/20191105134413_create_service_desk_settings.rb18
-rw-r--r--db/migrate/20191105155113_add_secret_to_snippet.rb27
-rw-r--r--db/migrate/20191106144901_add_state_to_merge_trains.rb18
-rw-r--r--db/migrate/20191106150931_add_timelog_spent_at_index.rb20
-rw-r--r--db/migrate/20191107064946_update_oauth_open_id_requests_foreign_keys.rb29
-rw-r--r--db/migrate/20191108031900_create_package_build_info.rb12
-rw-r--r--db/migrate/20191111175230_add_index_on_ci_pipelines_updated_at.rb18
-rw-r--r--db/migrate/20191112090226_add_artifacts_to_ci_build_need.rb20
-rw-r--r--db/migrate/20191112105448_add_index_on_personal_access_tokens_user_id_and_expires_at.rb18
-rw-r--r--db/migrate/20191114132259_add_mentions_disabled_to_namespaces.rb9
-rw-r--r--db/migrate/20191115001123_add_index_to_mod_sec_ci_variables.rb17
-rw-r--r--db/migrate/20191115001843_add_index_to_mod_sec_ci_pipeline_variables.rb17
-rw-r--r--db/migrate/20191118053631_add_group_deletion_schedules.rb28
-rw-r--r--db/migrate/20191118155702_add_index_on_status_to_merge_trains.rb20
-rw-r--r--db/migrate/20191118173522_add_snippet_size_limit_to_application_settings.rb13
-rw-r--r--db/migrate/20191118182722_add_index_to_environments_on_project_id_state_environment_type.rb21
-rw-r--r--db/migrate/20191119023952_add_created_at_index_to_snippets.rb17
-rw-r--r--db/migrate/20191119220425_rename_software_license_policies_approval_status_to_classification.rb17
-rw-r--r--db/migrate/20191119231621_create_container_expiration_policies.rb21
-rw-r--r--db/migrate/20191120200015_add_index_to_grafana_integrations.rb15
-rw-r--r--db/migrate/20191121111621_create_packages_dependencies.rb14
-rw-r--r--db/migrate/20191121121947_create_packages_dependency_links.rb15
-rw-r--r--db/migrate/20191121161018_add_project_id_name_version_package_type_index_to_packages_packages.rb22
-rw-r--r--db/migrate/20191121193110_add_issue_links_type.rb17
-rw-r--r--db/migrate/20191122161519_create_sentry_issues_table.rb15
-rw-r--r--db/migrate/20191123062354_add_minimum_password_length_to_application_settings.rb11
-rw-r--r--db/migrate/20191124150431_change_label_id_index_to_include_action_on_label_events.rb21
-rw-r--r--db/migrate/20191125114345_add_admin_mode_protected_path.rb54
-rw-r--r--db/migrate/20191125133353_add_target_path_to_broadcast_message.rb9
-rw-r--r--db/migrate/20191125140458_create_import_failures.rb17
-rw-r--r--db/migrate/20191127030005_create_serverless_domain_cluster.rb17
-rw-r--r--db/migrate/20191127151619_create_gitlab_subscription_histories.rb28
-rw-r--r--db/migrate/20191127151629_add_trial_starts_on_to_gitlab_subscriptions.rb10
-rw-r--r--db/migrate/20191127221608_add_wildcard_and_domain_type_to_pages_domains.rb20
-rw-r--r--db/migrate/20191129134844_add_broadcast_type_to_broadcast_message.rb19
-rw-r--r--db/migrate/20191202181924_add_environment_auto_stop_in_to_ci_builds_metadata.rb13
-rw-r--r--db/migrate/20191203121729_update_group_deletion_schedules_foreign_keys.rb29
-rw-r--r--db/migrate/20191204070713_change_updated_at_index_and_add_index_to_id_on_deployments.rb29
-rw-r--r--db/migrate/20191204093410_add_label_project_group_partial_indexes.rb25
-rw-r--r--db/migrate/20191204192726_add_design_disk_path_to_geo_hashed_storage_migrated_events.rb12
-rw-r--r--db/migrate/20191205060723_add_index_to_keys.rb17
-rw-r--r--db/migrate/20191205094702_add_index_for_cross_projects_dependencies_to_ci_builds.rb19
-rw-r--r--db/migrate/20191205145647_add_index_to_projects_deploy_keys_deploy_key.rb17
-rw-r--r--db/migrate/20191206022133_add_indexes_to_pages_domains_on_wildcard_and_domain_type.rb19
-rw-r--r--db/migrate/20191206122926_update_index_for_pool_repositories.rb24
-rw-r--r--db/migrate/20191208071111_add_fingerprint_sha256_to_key.rb13
-rw-r--r--db/migrate/20191208071112_add_fingerprint_sha256_index_to_key.rb17
-rw-r--r--db/migrate/20191212140117_change_commit_user_mentions_commit_id_column_type.rb36
-rw-r--r--db/migrate/20191213104838_add_service_desk_username.rb9
-rw-r--r--db/migrate/20191214175727_add_indexes_to_deployments_on_project_id_and_ref.rb20
-rw-r--r--db/migrate/20191216094119_add_id_to_plan_limits.rb13
-rw-r--r--db/migrate/20191216183531_add_project_hooks_to_plan_limits.rb9
-rw-r--r--db/migrate/20191216183532_insert_project_hooks_plan_limits.rb25
-rw-r--r--db/optional_migrations/composite_primary_keys.rb4
-rw-r--r--db/post_migrate/20180119121225_remove_redundant_pipeline_stages.rb14
-rw-r--r--db/post_migrate/20180223124427_build_user_interacted_projects_table.rb32
-rw-r--r--db/post_migrate/20180305100050_remove_permanent_from_redirect_routes.rb16
-rw-r--r--db/post_migrate/20180306164012_add_path_index_to_redirect_routes.rb2
-rw-r--r--db/post_migrate/20180706223200_populate_site_statistics.rb4
-rw-r--r--db/post_migrate/20180809195358_migrate_null_wiki_access_levels.rb2
-rw-r--r--db/post_migrate/20180826111825_recalculate_site_statistics.rb4
-rw-r--r--db/post_migrate/20191015154408_drop_merge_requests_require_code_owner_approval_from_projects.rb27
-rw-r--r--db/post_migrate/20191030223057_backfill_version_author_and_created_at.rb67
-rw-r--r--db/post_migrate/20191104142124_nullify_users_role.rb26
-rw-r--r--db/post_migrate/20191105094625_set_report_type_for_vulnerabilities.rb14
-rw-r--r--db/post_migrate/20191108202723_add_unique_constraint_to_software_licenses.rb69
-rw-r--r--db/post_migrate/20191112023159_complete_pages_metadata_migration.rb13
-rw-r--r--db/post_migrate/20191118211629_migrate_ops_feature_flags_scopes_target_user_ids.rb53
-rw-r--r--db/post_migrate/20191119221041_cleanup_software_license_policies_classification_rename.rb17
-rw-r--r--db/post_migrate/20191121122856_drop_packages_package_metadata_table.rb16
-rw-r--r--db/post_migrate/20191125024005_cleanup_deploy_access_levels_for_removed_groups.rb32
-rw-r--r--db/post_migrate/20191202031812_drop_operations_feature_flags_clients_token.rb23
-rw-r--r--db/post_migrate/20191205084057_update_minimum_password_length.rb24
-rw-r--r--db/post_migrate/20191209215316_knative_0_9_prometheus_update.rb13
-rw-r--r--db/post_migrate/20191212162434_change_commit_user_mentions_commit_id_column_type_cleanup.rb25
-rw-r--r--db/schema.rb259
-rw-r--r--doc/README.md10
-rw-r--r--doc/administration/auth/ldap-ee.md26
-rw-r--r--doc/administration/auth/smartcard.md25
-rw-r--r--doc/administration/compliance.md1
-rw-r--r--doc/administration/custom_hooks.md2
-rw-r--r--doc/administration/external_pipeline_validation.md103
-rw-r--r--doc/administration/geo/replication/database.md6
-rw-r--r--doc/administration/geo/replication/docker_registry.md6
-rw-r--r--doc/administration/geo/replication/troubleshooting.md26
-rw-r--r--doc/administration/gitaly/img/gitlab_gitaly_version_mismatch_v12_4.pngbin0 -> 21779 bytes
-rw-r--r--doc/administration/gitaly/index.md114
-rw-r--r--doc/administration/gitaly/praefect.md154
-rw-r--r--doc/administration/gitaly/reference.md16
-rw-r--r--doc/administration/high_availability/README.md127
-rw-r--r--doc/administration/high_availability/redis.md2
-rw-r--r--doc/administration/img/repository_storages_admin_ui.pngbin20439 -> 33219 bytes
-rw-r--r--doc/administration/index.md8
-rw-r--r--doc/administration/integration/plantuml.md12
-rw-r--r--doc/administration/invalidate_markdown_cache.md2
-rw-r--r--doc/administration/logs.md28
-rw-r--r--doc/administration/monitoring/performance/img/performance_bar.pngbin71317 -> 73762 bytes
-rw-r--r--doc/administration/monitoring/performance/img/performance_bar_frontend.pngbin0 -> 362077 bytes
-rw-r--r--doc/administration/monitoring/performance/performance_bar.md7
-rw-r--r--doc/administration/monitoring/prometheus/gitlab_metrics.md5
-rw-r--r--doc/administration/monitoring/prometheus/index.md6
-rw-r--r--doc/administration/monitoring/prometheus/postgres_exporter.md60
-rw-r--r--doc/administration/monitoring/prometheus/registry_exporter.md21
-rw-r--r--doc/administration/operations/extra_sidekiq_processes.md18
-rw-r--r--doc/administration/packages/container_registry.md39
-rw-r--r--doc/administration/packages/index.md2
-rw-r--r--doc/administration/pages/index.md20
-rw-r--r--doc/administration/raketasks/maintenance.md12
-rw-r--r--doc/administration/raketasks/uploads/migrate.md8
-rw-r--r--doc/administration/repository_storage_paths.md3
-rw-r--r--doc/administration/restart_gitlab.md14
-rw-r--r--doc/administration/snippets/index.md71
-rw-r--r--doc/administration/troubleshooting/elasticsearch.md4
-rw-r--r--doc/administration/troubleshooting/gitlab_rails_cheat_sheet.md18
-rw-r--r--doc/administration/troubleshooting/postgresql.md36
-rw-r--r--doc/api/README.md64
-rw-r--r--doc/api/boards.md45
-rw-r--r--doc/api/broadcast_messages.md12
-rw-r--r--doc/api/deployments.md2
-rw-r--r--doc/api/graphql/getting_started.md361
-rw-r--r--doc/api/graphql/index.md36
-rw-r--r--doc/api/graphql/reference/gitlab_schema.graphql1325
-rw-r--r--doc/api/graphql/reference/gitlab_schema.json3635
-rw-r--r--doc/api/graphql/reference/index.md289
-rw-r--r--doc/api/group_badges.md14
-rw-r--r--doc/api/groups.md48
-rw-r--r--doc/api/issue_links.md2
-rw-r--r--doc/api/issues.md7
-rw-r--r--doc/api/jobs.md54
-rw-r--r--doc/api/keys.md83
-rw-r--r--doc/api/markdown.md2
-rw-r--r--doc/api/merge_requests.md2
-rw-r--r--doc/api/packages.md28
-rw-r--r--doc/api/pages.md21
-rw-r--r--doc/api/pipelines.md4
-rw-r--r--doc/api/project_badges.md3
-rw-r--r--doc/api/projects.md80
-rw-r--r--doc/api/releases/index.md31
-rw-r--r--doc/api/search.md5
-rw-r--r--doc/api/services.md48
-rw-r--r--doc/api/settings.md11
-rw-r--r--doc/api/tags.md4
-rw-r--r--doc/api/users.md2
-rw-r--r--doc/ci/caching/index.md102
-rw-r--r--doc/ci/docker/using_docker_images.md16
-rw-r--r--doc/ci/enable_or_disable_ci.md16
-rw-r--r--doc/ci/environments.md42
-rw-r--r--doc/ci/examples/test-and-deploy-python-application-to-heroku.md2
-rw-r--r--doc/ci/examples/test_phoenix_app_with_gitlab_ci_cd/index.md2
-rw-r--r--doc/ci/img/collapsible_log.pngbin60771 -> 0 bytes
-rw-r--r--doc/ci/img/collapsible_log_v12_6.pngbin0 -> 96571 bytes
-rw-r--r--doc/ci/jenkins/index.md2
-rw-r--r--doc/ci/junit_test_reports.md26
-rw-r--r--doc/ci/merge_request_pipelines/index.md36
-rw-r--r--doc/ci/merge_request_pipelines/pipelines_for_merged_results/index.md2
-rw-r--r--doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/img/merge_train_immediate_merge_confirmation_dialog_v12_6.pngbin0 -> 23747 bytes
-rw-r--r--doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/img/merge_train_immediate_merge_v12_6.pngbin0 -> 24056 bytes
-rw-r--r--doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md9
-rw-r--r--doc/ci/pipelines.md21
-rw-r--r--doc/ci/review_apps/index.md34
-rw-r--r--doc/ci/variables/README.md10
-rw-r--r--doc/ci/variables/predefined_variables.md3
-rw-r--r--doc/ci/yaml/README.md216
-rw-r--r--doc/development/README.md6
-rw-r--r--doc/development/api_graphql_styleguide.md98
-rw-r--r--doc/development/architecture.md3
-rw-r--r--doc/development/background_migrations.md17
-rw-r--r--doc/development/build_test_package.md6
-rw-r--r--doc/development/changelog.md7
-rw-r--r--doc/development/chatops_on_gitlabcom.md2
-rw-r--r--doc/development/code_review.md4
-rw-r--r--doc/development/contributing/issue_workflow.md24
-rw-r--r--doc/development/contributing/merge_request_workflow.md13
-rw-r--r--doc/development/contributing/style_guides.md4
-rw-r--r--doc/development/cycle_analytics.md246
-rw-r--r--doc/development/dangerbot.md6
-rw-r--r--doc/development/database_query_comments.md56
-rw-r--r--doc/development/database_review.md10
-rw-r--r--doc/development/documentation/index.md39
-rw-r--r--doc/development/documentation/site_architecture/index.md6
-rw-r--r--doc/development/documentation/site_architecture/release_process.md2
-rw-r--r--doc/development/documentation/styleguide.md69
-rw-r--r--doc/development/documentation/workflow.md119
-rw-r--r--doc/development/experiment_guide/index.md8
-rw-r--r--doc/development/fe_guide/accessibility.md2
-rw-r--r--doc/development/fe_guide/frontend_faq.md27
-rw-r--r--doc/development/fe_guide/graphql.md129
-rw-r--r--doc/development/fe_guide/index.md11
-rw-r--r--doc/development/fe_guide/style/html.md53
-rw-r--r--doc/development/fe_guide/style/index.md21
-rw-r--r--doc/development/fe_guide/style/javascript.md275
-rw-r--r--doc/development/fe_guide/style/scss.md285
-rw-r--r--doc/development/fe_guide/style/vue.md418
-rw-r--r--doc/development/fe_guide/style_guide_js.md734
-rw-r--r--doc/development/fe_guide/style_guide_scss.md284
-rw-r--r--doc/development/fe_guide/tooling.md154
-rw-r--r--doc/development/fe_guide/vue.md6
-rw-r--r--doc/development/feature_flags/controls.md2
-rw-r--r--doc/development/feature_flags/development.md27
-rw-r--r--doc/development/feature_flags/index.md3
-rw-r--r--doc/development/git_object_deduplication.md2
-rw-r--r--doc/development/gitaly.md79
-rw-r--r--doc/development/go_guide/index.md43
-rw-r--r--doc/development/gotchas.md2
-rw-r--r--doc/development/i18n/externalization.md39
-rw-r--r--doc/development/img/build_package_v12_6.pngbin0 -> 124510 bytes
-rw-r--r--doc/development/img/trigger_build_package_v12_6.pngbin0 -> 141603 bytes
-rw-r--r--doc/development/img/trigger_ss1.pngbin35756 -> 0 bytes
-rw-r--r--doc/development/img/trigger_ss2.pngbin36082 -> 0 bytes
-rw-r--r--doc/development/import_export.md2
-rw-r--r--doc/development/internal_api.md14
-rw-r--r--doc/development/issuable-like-models.md10
-rw-r--r--doc/development/licensing.md2
-rw-r--r--doc/development/logging.md64
-rw-r--r--doc/development/mass_insert.md13
-rw-r--r--doc/development/merge_request_performance_guidelines.md50
-rw-r--r--doc/development/migration_style_guide.md6
-rw-r--r--doc/development/new_fe_guide/index.md4
-rw-r--r--doc/development/new_fe_guide/style/html.md56
-rw-r--r--doc/development/new_fe_guide/style/index.md18
-rw-r--r--doc/development/new_fe_guide/style/javascript.md198
-rw-r--r--doc/development/new_fe_guide/style/prettier.md101
-rw-r--r--doc/development/new_fe_guide/style/scss.md3
-rw-r--r--doc/development/new_fe_guide/style/vue.md3
-rw-r--r--doc/development/new_fe_guide/tips.md4
-rw-r--r--doc/development/packages.md53
-rw-r--r--doc/development/pipelines.md28
-rw-r--r--doc/development/prometheus_metrics.md4
-rw-r--r--doc/development/rake_tasks.md13
-rw-r--r--doc/development/shell_scripting_guide/index.md2
-rw-r--r--doc/development/sidekiq_style_guide.md2
-rw-r--r--doc/development/sql.md101
-rw-r--r--doc/development/testing_guide/best_practices.md2
-rw-r--r--doc/development/testing_guide/end_to_end/best_practices.md10
-rw-r--r--doc/development/testing_guide/end_to_end/quick_start_guide.md14
-rw-r--r--doc/development/testing_guide/end_to_end/resources.md3
-rw-r--r--doc/development/testing_guide/frontend_testing.md21
-rw-r--r--doc/development/testing_guide/review_apps.md97
-rw-r--r--doc/development/testing_guide/testing_migrations_guide.md8
-rw-r--r--doc/development/utilities.md11
-rw-r--r--doc/development/verifying_database_capabilities.md12
-rw-r--r--doc/development/what_requires_downtime.md58
-rw-r--r--doc/gitlab-basics/README.md2
-rw-r--r--doc/gitlab-basics/start-using-git.md65
-rw-r--r--doc/install/aws/index.md2
-rw-r--r--doc/install/installation.md8
-rw-r--r--doc/install/requirements.md2
-rw-r--r--doc/integration/README.md1
-rw-r--r--doc/integration/akismet.md4
-rw-r--r--doc/integration/elasticsearch.md25
-rw-r--r--doc/integration/github.md33
-rw-r--r--doc/integration/img/authorize_vault_with_gitlab_v12_6.pngbin0 -> 197922 bytes
-rw-r--r--doc/integration/img/gitlab_oauth_vault_v12_6.pngbin0 -> 133594 bytes
-rw-r--r--doc/integration/img/sign_into_vault_with_gitlab_v12_6.pngbin0 -> 87168 bytes
-rw-r--r--doc/integration/img/signed_into_vault_via_oidc_v12_6.pngbin0 -> 106942 bytes
-rw-r--r--doc/integration/jenkins.md29
-rw-r--r--doc/integration/saml.md2
-rw-r--r--doc/integration/vault.md120
-rw-r--r--doc/policy/maintenance.md49
-rw-r--r--doc/public_access/img/project_visibility_confirmation_v12_6.pngbin0 -> 101511 bytes
-rw-r--r--doc/public_access/public_access.md10
-rw-r--r--doc/push_rules/push_rules.md7
-rw-r--r--doc/raketasks/generate_sample_prometheus_data.md16
-rw-r--r--doc/security/password_length_limits.md38
-rw-r--r--doc/security/rack_attack.md3
-rw-r--r--doc/ssh/README.md59
-rw-r--r--doc/subscriptions/index.md40
-rw-r--r--doc/topics/autodevops/img/autodevops_banner_v12_6.pngbin0 -> 78142 bytes
-rw-r--r--doc/topics/autodevops/index.md78
-rw-r--r--doc/topics/git/troubleshooting_git.md20
-rw-r--r--doc/topics/git/useful_git_commands.md8
-rw-r--r--doc/university/README.md4
-rw-r--r--doc/university/training/end-user/README.md2
-rw-r--r--doc/university/training/index.md2
-rw-r--r--doc/update/patch_versions.md8
-rw-r--r--doc/update/upgrading_from_ce_to_ee.md17
-rw-r--r--doc/user/admin_area/appearance.md8
-rw-r--r--doc/user/admin_area/broadcast_messages.md1
-rw-r--r--doc/user/admin_area/credentials_inventory.md19
-rw-r--r--doc/user/admin_area/img/credentials_inventory_v12_6.pngbin0 -> 164125 bytes
-rw-r--r--doc/user/admin_area/img/minimum_password_length_settings_v12_6.pngbin0 -> 29714 bytes
-rw-r--r--doc/user/admin_area/license.md2
-rw-r--r--doc/user/admin_area/monitoring/convdev.md5
-rw-r--r--doc/user/admin_area/monitoring/dev_ops_score.md5
-rw-r--r--doc/user/admin_area/monitoring/health_check.md2
-rw-r--r--doc/user/admin_area/settings/account_and_limit_settings.md32
-rw-r--r--doc/user/admin_area/settings/protected_paths.md17
-rw-r--r--doc/user/admin_area/settings/sign_up_restrictions.md7
-rw-r--r--doc/user/admin_area/settings/visibility_and_access_controls.md20
-rw-r--r--doc/user/analytics/cycle_analytics.md21
-rw-r--r--doc/user/application_security/configuration/index.md27
-rw-r--r--doc/user/application_security/container_scanning/index.md90
-rw-r--r--doc/user/application_security/dast/index.md4
-rw-r--r--doc/user/application_security/dependency_scanning/index.md40
-rw-r--r--doc/user/application_security/img/security_configuration_page_v12_6.pngbin0 -> 68210 bytes
-rw-r--r--doc/user/application_security/sast/analyzers.md39
-rw-r--r--doc/user/application_security/sast/index.md62
-rw-r--r--doc/user/application_security/security_dashboard/img/group_security_dashboard_v12_4.pngbin62965 -> 0 bytes
-rw-r--r--doc/user/application_security/security_dashboard/img/group_security_dashboard_v12_6.pngbin0 -> 69145 bytes
-rw-r--r--doc/user/application_security/security_dashboard/img/pipeline_security_dashboard_v12_3.pngbin52247 -> 0 bytes
-rw-r--r--doc/user/application_security/security_dashboard/img/pipeline_security_dashboard_v12_6.pngbin0 -> 59799 bytes
-rw-r--r--doc/user/application_security/security_dashboard/index.md17
-rw-r--r--doc/user/clusters/applications.md146
-rw-r--r--doc/user/clusters/crossplane.md8
-rw-r--r--doc/user/clusters/management_project.md2
-rw-r--r--doc/user/discussions/index.md2
-rw-r--r--doc/user/gitlab_com/index.md53
-rw-r--r--doc/user/group/clusters/index.md15
-rw-r--r--doc/user/group/index.md17
-rw-r--r--doc/user/group/saml_sso/index.md46
-rw-r--r--doc/user/group/saml_sso/scim_setup.md22
-rw-r--r--doc/user/group/subgroups/img/group_members_filter_v12_6.pngbin0 -> 19894 bytes
-rw-r--r--doc/user/group/subgroups/index.md14
-rw-r--r--doc/user/incident_management/index.md2
-rw-r--r--doc/user/infrastructure/index.md6
-rw-r--r--doc/user/instance_statistics/dev_ops_score.md (renamed from doc/user/instance_statistics/convdev.md)10
-rw-r--r--doc/user/instance_statistics/img/cohorts.pngbin59494 -> 202569 bytes
-rw-r--r--doc/user/instance_statistics/img/dev_ops_score.png (renamed from doc/user/instance_statistics/img/convdev_index.png)bin86358 -> 86358 bytes
-rw-r--r--doc/user/instance_statistics/index.md2
-rw-r--r--doc/user/markdown.md83
-rw-r--r--doc/user/packages/conan_repository/index.md4
-rw-r--r--doc/user/packages/container_registry/index.md1
-rw-r--r--doc/user/packages/index.md6
-rw-r--r--doc/user/packages/maven_repository/img/maven_package_view.pngbin16105 -> 0 bytes
-rw-r--r--doc/user/packages/maven_repository/img/maven_package_view_v12_6.pngbin0 -> 83954 bytes
-rw-r--r--doc/user/packages/maven_repository/index.md4
-rw-r--r--doc/user/packages/npm_registry/img/npm_package_view.pngbin10349 -> 0 bytes
-rw-r--r--doc/user/packages/npm_registry/img/npm_package_view_v12_5.pngbin0 -> 37994 bytes
-rw-r--r--doc/user/packages/npm_registry/index.md45
-rw-r--r--doc/user/permissions.md7
-rw-r--r--doc/user/profile/active_sessions.md12
-rw-r--r--doc/user/project/clusters/add_remove_clusters.md45
-rw-r--r--doc/user/project/clusters/index.md28
-rw-r--r--doc/user/project/clusters/serverless/aws.md165
-rw-r--r--doc/user/project/clusters/serverless/index.md155
-rw-r--r--doc/user/project/deploy_boards.md2
-rw-r--r--doc/user/project/img/service_desk_disabled.pngbin11708 -> 25013 bytes
-rw-r--r--doc/user/project/img/service_desk_enabled.pngbin21514 -> 59684 bytes
-rw-r--r--doc/user/project/import/gemnasium.md2
-rw-r--r--doc/user/project/index.md11
-rw-r--r--doc/user/project/integrations/github.md3
-rw-r--r--doc/user/project/integrations/img/unify_circuit_configuration.pngbin0 -> 274416 bytes
-rw-r--r--doc/user/project/integrations/jira.md11
-rw-r--r--doc/user/project/integrations/project_services.md1
-rw-r--r--doc/user/project/integrations/prometheus.md11
-rw-r--r--doc/user/project/integrations/prometheus_library/nginx.md2
-rw-r--r--doc/user/project/integrations/unify_circuit.md27
-rw-r--r--doc/user/project/integrations/webhooks.md34
-rw-r--r--doc/user/project/labels.md2
-rw-r--r--doc/user/project/members/img/project_members.pngbin0 -> 108736 bytes
-rw-r--r--doc/user/project/members/img/project_members_filter_v12_6.pngbin0 -> 19894 bytes
-rw-r--r--doc/user/project/members/index.md25
-rw-r--r--doc/user/project/merge_requests/creating_merge_requests.md2
-rw-r--r--doc/user/project/merge_requests/img/merge_request_tab_position_v12_6.pngbin0 -> 74731 bytes
-rw-r--r--doc/user/project/merge_requests/index.md34
-rw-r--r--doc/user/project/merge_requests/merge_request_dependencies.md6
-rw-r--r--doc/user/project/merge_requests/merge_when_pipeline_succeeds.md2
-rw-r--r--doc/user/project/merge_requests/reviewing_and_managing_merge_requests.md2
-rw-r--r--doc/user/project/milestones/index.md23
-rw-r--r--doc/user/project/operations/error_tracking.md18
-rw-r--r--doc/user/project/operations/feature_flags.md10
-rw-r--r--doc/user/project/operations/img/error_details_v12_6.pngbin0 -> 151389 bytes
-rw-r--r--doc/user/project/operations/img/error_details_with_issue_v12_6.pngbin0 -> 50767 bytes
-rw-r--r--doc/user/project/operations/img/error_tracking_list.pngbin760603 -> 0 bytes
-rw-r--r--doc/user/project/operations/img/error_tracking_list_v12_6.pngbin0 -> 41388 bytes
-rw-r--r--doc/user/project/operations/img/specs_list.pngbin70117 -> 0 bytes
-rw-r--r--doc/user/project/operations/img/specs_list_v12_6.pngbin0 -> 28297 bytes
-rw-r--r--doc/user/project/operations/img/target_users_v12_2.pngbin42768 -> 0 bytes
-rw-r--r--doc/user/project/operations/index.md1
-rw-r--r--doc/user/project/pages/getting_started/fork_sample_project.md2
-rw-r--r--doc/user/project/pages/pages_access_control.md2
-rw-r--r--doc/user/project/pipelines/job_artifacts.md8
-rw-r--r--doc/user/project/pipelines/settings.md45
-rw-r--r--doc/user/project/push_options.md18
-rw-r--r--doc/user/project/quick_actions.md6
-rw-r--r--doc/user/project/releases/img/edit_release_page_v12_6.png (renamed from doc/user/project/releases/img/edit_release_page_v12_5.png)bin150927 -> 150927 bytes
-rw-r--r--doc/user/project/releases/img/release_edit_button_v12_6.png (renamed from doc/user/project/releases/img/release_edit_button_v12_5.png)bin87472 -> 87472 bytes
-rw-r--r--doc/user/project/releases/index.md10
-rw-r--r--doc/user/project/repository/forking_workflow.md4
-rw-r--r--doc/user/project/repository/git_blame.md50
-rw-r--r--doc/user/project/repository/git_history.md67
-rw-r--r--doc/user/project/repository/img/file_blame_button_v12_6.pngbin0 -> 22175 bytes
-rw-r--r--doc/user/project/repository/img/file_blame_output_v12_6.pngbin0 -> 96929 bytes
-rw-r--r--doc/user/project/repository/img/file_history_button_v12_6.pngbin0 -> 22175 bytes
-rw-r--r--doc/user/project/repository/img/file_history_output_v12_6.pngbin0 -> 84738 bytes
-rw-r--r--doc/user/project/repository/img/web_editor_new_branch_from_issue.pngbin2715 -> 0 bytes
-rw-r--r--doc/user/project/repository/img/web_editor_new_branch_from_issue_create_button_v12_6.pngbin0 -> 70114 bytes
-rw-r--r--doc/user/project/repository/img/web_editor_new_branch_from_issue_v_12_6.pngbin0 -> 76938 bytes
-rw-r--r--doc/user/project/repository/index.md4
-rw-r--r--doc/user/project/repository/repository_mirroring.md15
-rw-r--r--doc/user/project/repository/web_editor.md36
-rw-r--r--doc/user/project/service_desk.md7
-rw-r--r--doc/user/project/settings/index.md6
-rw-r--r--doc/workflow/README.md10
-rw-r--r--jest.config.js7
-rw-r--r--lib/api/api.rb2
-rw-r--r--lib/api/api_guard.rb10
-rw-r--r--lib/api/badges.rb8
-rw-r--r--lib/api/branches.rb6
-rw-r--r--lib/api/broadcast_messages.rb20
-rw-r--r--lib/api/deployments.rb13
-rw-r--r--lib/api/entities.rb36
-rw-r--r--lib/api/groups.rb2
-rw-r--r--lib/api/helpers.rb9
-rw-r--r--lib/api/helpers/common_helpers.rb2
-rw-r--r--lib/api/helpers/internal_helpers.rb4
-rw-r--r--lib/api/helpers/members_helpers.rb23
-rw-r--r--lib/api/helpers/pagination.rb27
-rw-r--r--lib/api/helpers/project_snapshots_helpers.rb2
-rw-r--r--lib/api/helpers/services_helpers.rb23
-rw-r--r--lib/api/internal/base.rb63
-rw-r--r--lib/api/internal/pages.rb2
-rw-r--r--lib/api/keys.rb19
-rw-r--r--lib/api/members.rb32
-rw-r--r--lib/api/merge_requests.rb9
-rw-r--r--lib/api/pages.rb26
-rw-r--r--lib/api/pages_domains.rb2
-rw-r--r--lib/api/pipelines.rb2
-rw-r--r--lib/api/project_export.rb17
-rw-r--r--lib/api/projects.rb14
-rw-r--r--lib/api/releases.rb1
-rw-r--r--lib/api/remote_mirrors.rb30
-rw-r--r--lib/api/services.rb2
-rw-r--r--lib/api/snippets.rb6
-rw-r--r--lib/api/support/git_access_actor.rb12
-rw-r--r--lib/api/users.rb3
-rw-r--r--lib/backup/manager.rb28
-rw-r--r--lib/banzai/filter/autolink_filter.rb2
-rw-r--r--lib/banzai/filter/base_sanitization_filter.rb1
-rw-r--r--lib/banzai/filter/broadcast_message_sanitization_filter.rb20
-rw-r--r--lib/banzai/filter/inline_metrics_redactor_filter.rb10
-rw-r--r--lib/banzai/filter/markdown_engines/common_mark.rb4
-rw-r--r--lib/banzai/filter/spaced_link_filter.rb2
-rw-r--r--lib/banzai/pipeline/broadcast_message_pipeline.rb2
-rw-r--r--lib/banzai/reference_parser/mentioned_group_parser.rb (renamed from lib/banzai/reference_parser/mentioned_users_by_group_parser.rb)2
-rw-r--r--lib/banzai/reference_parser/mentioned_project_parser.rb (renamed from lib/banzai/reference_parser/mentioned_users_by_project_parser.rb)2
-rw-r--r--lib/banzai/reference_parser/user_parser.rb4
-rw-r--r--lib/container_registry/tag.rb2
-rw-r--r--lib/feature/gitaly.rb3
-rw-r--r--lib/gitaly/server.rb14
-rw-r--r--lib/gitlab/action_rate_limiter.rb81
-rw-r--r--lib/gitlab/analytics/cycle_analytics/data_collector.rb2
-rw-r--r--lib/gitlab/analytics/cycle_analytics/records_fetcher.rb2
-rw-r--r--lib/gitlab/analytics/cycle_analytics/stage_events/stage_event.rb4
-rw-r--r--lib/gitlab/analytics/cycle_analytics/stage_query_helpers.rb4
-rw-r--r--lib/gitlab/application_rate_limiter.rb129
-rw-r--r--lib/gitlab/auth.rb24
-rw-r--r--lib/gitlab/auth/auth_finders.rb (renamed from lib/gitlab/auth/user_auth_finders.rb)52
-rw-r--r--lib/gitlab/auth/current_user_mode.rb56
-rw-r--r--lib/gitlab/auth/ip_rate_limiter.rb29
-rw-r--r--lib/gitlab/auth/request_authenticator.rb11
-rw-r--r--lib/gitlab/background_migration/migrate_legacy_artifacts.rb2
-rw-r--r--lib/gitlab/bitbucket_import/importer.rb9
-rw-r--r--lib/gitlab/bitbucket_server_import/importer.rb34
-rw-r--r--lib/gitlab/chaos.rb6
-rw-r--r--lib/gitlab/ci/ansi2json/converter.rb7
-rw-r--r--lib/gitlab/ci/ansi2json/parser.rb5
-rw-r--r--lib/gitlab/ci/ansi2json/result.rb22
-rw-r--r--lib/gitlab/ci/ansi2json/style.rb4
-rw-r--r--lib/gitlab/ci/build/prerequisite/kubernetes_namespace.rb45
-rw-r--r--lib/gitlab/ci/config.rb8
-rw-r--r--lib/gitlab/ci/config/entry/default.rb23
-rw-r--r--lib/gitlab/ci/config/entry/environment.rb20
-rw-r--r--lib/gitlab/ci/config/entry/job.rb52
-rw-r--r--lib/gitlab/ci/config/entry/kubernetes.rb25
-rw-r--r--lib/gitlab/ci/config/entry/need.rb32
-rw-r--r--lib/gitlab/ci/config/entry/needs.rb2
-rw-r--r--lib/gitlab/ci/config/entry/root.rb6
-rw-r--r--lib/gitlab/ci/config/entry/timeout.rb (renamed from lib/gitlab/ci/config/entry/boolean.rb)4
-rw-r--r--lib/gitlab/ci/config/entry/workflow.rb4
-rw-r--r--lib/gitlab/ci/config/normalizer.rb2
-rw-r--r--lib/gitlab/ci/pipeline/chain/config/content.rb60
-rw-r--r--lib/gitlab/ci/pipeline/chain/config/content/auto_devops.rb28
-rw-r--r--lib/gitlab/ci/pipeline/chain/config/content/external_project.rb35
-rw-r--r--lib/gitlab/ci/pipeline/chain/config/content/legacy_auto_devops.rb28
-rw-r--r--lib/gitlab/ci/pipeline/chain/config/content/legacy_repository.rb31
-rw-r--r--lib/gitlab/ci/pipeline/chain/config/content/remote.rb27
-rw-r--r--lib/gitlab/ci/pipeline/chain/config/content/repository.rb38
-rw-r--r--lib/gitlab/ci/pipeline/chain/config/content/runtime.rb30
-rw-r--r--lib/gitlab/ci/pipeline/chain/config/content/source.rb46
-rw-r--r--lib/gitlab/ci/pipeline/chain/config/process.rb4
-rw-r--r--lib/gitlab/ci/pipeline/chain/evaluate_workflow_rules.rb20
-rw-r--r--lib/gitlab/ci/pipeline/chain/helpers.rb5
-rw-r--r--lib/gitlab/ci/pipeline/chain/validate/external.rb100
-rw-r--r--lib/gitlab/ci/pipeline/seed/build.rb2
-rw-r--r--lib/gitlab/ci/templates/Jobs/Browser-Performance-Testing.gitlab-ci.yml6
-rw-r--r--lib/gitlab/ci/templates/Jobs/Code-Quality.gitlab-ci.yml4
-rw-r--r--lib/gitlab/ci/templates/Jobs/Deploy.gitlab-ci.yml2
-rw-r--r--lib/gitlab/ci/templates/Managed-Cluster-Applications.gitlab-ci.yml16
-rw-r--r--lib/gitlab/ci/templates/Pages/Hugo.gitlab-ci.yml21
-rw-r--r--lib/gitlab/ci/templates/Security/Container-Scanning.gitlab-ci.yml2
-rw-r--r--lib/gitlab/ci/templates/Security/Dependency-Scanning.gitlab-ci.yml18
-rw-r--r--lib/gitlab/ci/templates/Security/SAST.gitlab-ci.yml41
-rw-r--r--lib/gitlab/ci/templates/Verify/Browser-Performance.gitlab-ci.yml2
-rw-r--r--lib/gitlab/ci/yaml_processor.rb29
-rw-r--r--lib/gitlab/config/entry/array_of_strings.rb18
-rw-r--r--lib/gitlab/config/entry/configurable.rb17
-rw-r--r--lib/gitlab/cycle_analytics/code_event_fetcher.rb2
-rw-r--r--lib/gitlab/cycle_analytics/review_event_fetcher.rb2
-rw-r--r--lib/gitlab/danger/changelog.rb40
-rw-r--r--lib/gitlab/danger/helper.rb5
-rw-r--r--lib/gitlab/danger/teammate.rb2
-rw-r--r--lib/gitlab/data_builder/build.rb14
-rw-r--r--lib/gitlab/data_builder/pipeline.rb1
-rw-r--r--lib/gitlab/database.rb14
-rw-r--r--lib/gitlab/database/migration_helpers.rb62
-rw-r--r--lib/gitlab/database/obsolete_ignored_columns.rb9
-rw-r--r--lib/gitlab/database/sha256_attribute.rb33
-rw-r--r--lib/gitlab/database_importers/self_monitoring/project/create_service.rb3
-rw-r--r--lib/gitlab/dependency_linker/base_linker.rb2
-rw-r--r--lib/gitlab/diff/deprecated_highlight_cache.rb68
-rw-r--r--lib/gitlab/diff/file_collection/base.rb20
-rw-r--r--lib/gitlab/diff/file_collection/merge_request_diff.rb31
-rw-r--r--lib/gitlab/diff/file_collection/merge_request_diff_base.rb38
-rw-r--r--lib/gitlab/diff/file_collection/merge_request_diff_batch.rb4
-rw-r--r--lib/gitlab/diff/highlight.rb2
-rw-r--r--lib/gitlab/diff/highlight_cache.rb130
-rw-r--r--lib/gitlab/diff/inline_diff_marker.rb2
-rw-r--r--lib/gitlab/diff/line.rb11
-rw-r--r--lib/gitlab/discussions_diff/highlight_cache.rb6
-rw-r--r--lib/gitlab/elasticsearch/logger.rb11
-rw-r--r--lib/gitlab/error_tracking.rb154
-rw-r--r--lib/gitlab/error_tracking/detailed_error.rb7
-rw-r--r--lib/gitlab/error_tracking/logger.rb11
-rw-r--r--lib/gitlab/error_tracking/stack_trace_highlight_decorator.rb43
-rw-r--r--lib/gitlab/etag_caching/router.rb4
-rw-r--r--lib/gitlab/experimentation.rb2
-rw-r--r--lib/gitlab/file_detector.rb5
-rw-r--r--lib/gitlab/file_type_detection.rb5
-rw-r--r--lib/gitlab/git/commit.rb15
-rw-r--r--lib/gitlab/git/tag.rb4
-rw-r--r--lib/gitlab/gitaly_client.rb3
-rw-r--r--lib/gitlab/github_import/importer/issue_importer.rb1
-rw-r--r--lib/gitlab/github_import/importer/pull_request_importer.rb11
-rw-r--r--lib/gitlab/gon_helper.rb2
-rw-r--r--lib/gitlab/gpg.rb9
-rw-r--r--lib/gitlab/grafana_embed_usage_data.rb16
-rw-r--r--lib/gitlab/graphql/authorize/authorize_resource.rb9
-rw-r--r--lib/gitlab/graphql/calls_gitaly/instrumentation.rb2
-rw-r--r--lib/gitlab/graphql/connections/keyset/connection.rb16
-rw-r--r--lib/gitlab/graphql/connections/keyset/legacy_keyset_connection.rb66
-rw-r--r--lib/gitlab/graphql/query_analyzers/logger_analyzer.rb4
-rw-r--r--lib/gitlab/hashed_storage/rake_helper.rb14
-rw-r--r--lib/gitlab/highlight.rb2
-rw-r--r--lib/gitlab/hook_data/merge_request_builder.rb5
-rw-r--r--lib/gitlab/import_export/attribute_cleaner.rb2
-rw-r--r--lib/gitlab/import_export/file_importer.rb12
-rw-r--r--lib/gitlab/import_export/group_import_export.yml18
-rw-r--r--lib/gitlab/import_export/import_export.yml94
-rw-r--r--lib/gitlab/import_export/importer.rb2
-rw-r--r--lib/gitlab/import_export/members_mapper.rb33
-rw-r--r--lib/gitlab/import_export/project_tree_restorer.rb203
-rw-r--r--lib/gitlab/import_export/relation_factory.rb4
-rw-r--r--lib/gitlab/import_export/relation_tree_restorer.rb240
-rw-r--r--lib/gitlab/import_export/shared.rb6
-rw-r--r--lib/gitlab/insecure_key_fingerprint.rb5
-rw-r--r--lib/gitlab/json_cache.rb14
-rw-r--r--lib/gitlab/kubernetes/cluster_role.rb29
-rw-r--r--lib/gitlab/kubernetes/helm/client_command.rb36
-rw-r--r--lib/gitlab/kubernetes/helm/delete_command.rb2
-rw-r--r--lib/gitlab/kubernetes/helm/install_command.rb6
-rw-r--r--lib/gitlab/kubernetes/helm/patch_command.rb73
-rw-r--r--lib/gitlab/kubernetes/kube_client.rb8
-rw-r--r--lib/gitlab/kubernetes/kubectl_cmd.rb10
-rw-r--r--lib/gitlab/mail_room.rb15
-rw-r--r--lib/gitlab/marginalia.rb28
-rw-r--r--lib/gitlab/marginalia/active_record_instrumentation.rb12
-rw-r--r--lib/gitlab/marginalia/comment.rb42
-rw-r--r--lib/gitlab/metrics/dashboard/service_selector.rb7
-rw-r--r--lib/gitlab/metrics/dashboard/stages/endpoint_inserter.rb20
-rw-r--r--lib/gitlab/metrics/transaction.rb1
-rw-r--r--lib/gitlab/middleware/go.rb30
-rw-r--r--lib/gitlab/pagination/keyset.rb21
-rw-r--r--lib/gitlab/pagination/keyset/page.rb47
-rw-r--r--lib/gitlab/pagination/keyset/pager.rb56
-rw-r--r--lib/gitlab/pagination/keyset/request_context.rb89
-rw-r--r--lib/gitlab/patch/draw_route.rb2
-rw-r--r--lib/gitlab/performance_bar/redis_adapter_when_peek_enabled.rb2
-rw-r--r--lib/gitlab/profiler.rb2
-rw-r--r--lib/gitlab/project_template.rb1
-rw-r--r--lib/gitlab/puma_logging/json_formatter.rb13
-rw-r--r--lib/gitlab/push_options.rb3
-rw-r--r--lib/gitlab/quick_actions/issue_actions.rb1
-rw-r--r--lib/gitlab/reference_extractor.rb2
-rw-r--r--lib/gitlab/regex.rb2
-rw-r--r--lib/gitlab/seeder.rb6
-rw-r--r--lib/gitlab/sentry.rb77
-rw-r--r--lib/gitlab/shell.rb6
-rw-r--r--lib/gitlab/sidekiq_middleware.rb34
-rw-r--r--lib/gitlab/sidekiq_middleware/metrics.rb31
-rw-r--r--lib/gitlab/slash_commands/presenters/access.rb4
-rw-r--r--lib/gitlab/slash_commands/presenters/base.rb47
-rw-r--r--lib/gitlab/slash_commands/presenters/issue_base.rb10
-rw-r--r--lib/gitlab/slash_commands/presenters/issue_close.rb32
-rw-r--r--lib/gitlab/slash_commands/presenters/issue_comment.rb24
-rw-r--r--lib/gitlab/slash_commands/presenters/issue_move.rb29
-rw-r--r--lib/gitlab/slash_commands/presenters/issue_new.rb31
-rw-r--r--lib/gitlab/slash_commands/presenters/issue_search.rb10
-rw-r--r--lib/gitlab/slash_commands/presenters/issue_show.rb41
-rw-r--r--lib/gitlab/slash_commands/presenters/note_base.rb10
-rw-r--r--lib/gitlab/sql/pattern.rb10
-rw-r--r--lib/gitlab/tracking.rb4
-rw-r--r--lib/gitlab/url_builder.rb21
-rw-r--r--lib/gitlab/usage_data.rb9
-rw-r--r--lib/gitlab/usage_data_counters/base_counter.rb2
-rw-r--r--lib/gitlab/utils/override.rb13
-rw-r--r--lib/gitlab/visibility_level.rb14
-rw-r--r--lib/gitlab/webpack/manifest.rb3
-rw-r--r--lib/google_api/cloud_platform/client.rb18
-rw-r--r--lib/quality/helm_client.rb9
-rw-r--r--lib/quality/kubernetes_client.rb36
-rw-r--r--lib/quality/test_level.rb9
-rw-r--r--lib/sentry/client.rb116
-rw-r--r--lib/sentry/client/projects.rb46
-rw-r--r--lib/sentry/pagination_parser.rb23
-rw-r--r--lib/tasks/db_obsolete_ignored_columns.rake5
-rw-r--r--lib/tasks/gettext.rake2
-rw-r--r--lib/tasks/gitlab/assets.rake8
-rw-r--r--lib/tasks/gitlab/cleanup.rake2
-rw-r--r--lib/tasks/gitlab/generate_sample_prometheus_data.rake20
-rw-r--r--lib/tasks/gitlab/import_export/import.rake146
-rw-r--r--lib/tasks/gitlab/metrics.rake8
-rw-r--r--locale/gitlab.pot1147
-rw-r--r--package.json28
-rw-r--r--qa/.gitignore1
-rw-r--r--qa/Gemfile4
-rw-r--r--qa/Gemfile.lock48
-rw-r--r--qa/qa.rb7
-rw-r--r--qa/qa/flow/login.rb20
-rw-r--r--qa/qa/flow/project.rb19
-rw-r--r--qa/qa/page/admin/new_session.rb22
-rw-r--r--qa/qa/page/base.rb36
-rw-r--r--qa/qa/page/component/issuable/common.rb1
-rw-r--r--qa/qa/page/component/select2.rb2
-rw-r--r--qa/qa/page/dashboard/snippet/show.rb12
-rw-r--r--qa/qa/page/group/menu.rb7
-rw-r--r--qa/qa/page/issuable/sidebar.rb15
-rw-r--r--qa/qa/page/layout/performance_bar.rb2
-rw-r--r--qa/qa/page/main/login.rb4
-rw-r--r--qa/qa/page/main/menu.rb15
-rw-r--r--qa/qa/page/mattermost/main.rb5
-rw-r--r--qa/qa/page/merge_request/show.rb110
-rw-r--r--qa/qa/page/project/issue/show.rb35
-rw-r--r--qa/qa/page/project/job/show.rb2
-rw-r--r--qa/qa/page/project/pipeline/index.rb6
-rw-r--r--qa/qa/page/project/settings/advanced.rb3
-rw-r--r--qa/qa/page/project/settings/deploy_keys.rb2
-rw-r--r--qa/qa/page/search/results.rb21
-rw-r--r--qa/qa/page/settings/common.rb3
-rw-r--r--qa/qa/resource/api_fabricator.rb18
-rw-r--r--qa/qa/resource/base.rb2
-rw-r--r--qa/qa/resource/deploy_token.rb8
-rw-r--r--qa/qa/resource/file.rb10
-rw-r--r--qa/qa/resource/fork.rb4
-rw-r--r--qa/qa/resource/group.rb4
-rw-r--r--qa/qa/resource/kubernetes_cluster.rb36
-rw-r--r--qa/qa/resource/label.rb10
-rw-r--r--qa/qa/resource/merge_request.rb16
-rw-r--r--qa/qa/resource/personal_access_token.rb8
-rw-r--r--qa/qa/resource/project.rb28
-rw-r--r--qa/qa/resource/project_imported_from_github.rb16
-rw-r--r--qa/qa/resource/project_milestone.rb6
-rw-r--r--qa/qa/resource/runner.rb12
-rw-r--r--qa/qa/resource/settings/hashed_storage.rb2
-rw-r--r--qa/qa/resource/snippet.rb14
-rw-r--r--qa/qa/resource/ssh_key.rb4
-rw-r--r--qa/qa/resource/user.rb2
-rw-r--r--qa/qa/runtime/api/client.rb19
-rw-r--r--qa/qa/runtime/browser.rb28
-rw-r--r--qa/qa/runtime/env.rb22
-rw-r--r--qa/qa/runtime/ip_address.rb33
-rw-r--r--qa/qa/runtime/mail_hog.rb15
-rw-r--r--qa/qa/runtime/search.rb36
-rw-r--r--qa/qa/scenario/test/integration/smtp.rb13
-rw-r--r--qa/qa/service/cluster_provider/gcloud.rb36
-rw-r--r--qa/qa/specs/features/browser_ui/1_manage/group/create_group_with_mattermost_team_spec.rb9
-rw-r--r--qa/qa/specs/features/browser_ui/1_manage/group/transfer_project_spec.rb3
-rw-r--r--qa/qa/specs/features/browser_ui/1_manage/login/log_in_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/1_manage/login/log_into_gitlab_via_ldap_spec.rb3
-rw-r--r--qa/qa/specs/features/browser_ui/1_manage/login/log_into_mattermost_via_gitlab_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/1_manage/login/login_via_oauth_spec.rb3
-rw-r--r--qa/qa/specs/features/browser_ui/1_manage/project/add_project_member_spec.rb7
-rw-r--r--qa/qa/specs/features/browser_ui/1_manage/project/create_project_spec.rb3
-rw-r--r--qa/qa/specs/features/browser_ui/1_manage/project/import_github_repo_spec.rb6
-rw-r--r--qa/qa/specs/features/browser_ui/1_manage/project/view_project_activity_spec.rb3
-rw-r--r--qa/qa/specs/features/browser_ui/2_plan/email/trigger_email_notification_spec.rb43
-rw-r--r--qa/qa/specs/features/browser_ui/2_plan/issue/check_mentions_for_xss_spec.rb4
-rw-r--r--qa/qa/specs/features/browser_ui/2_plan/issue/close_issue_spec.rb40
-rw-r--r--qa/qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb20
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb3
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb3
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb6
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/merge_request/squash_merge_request_spec.rb9
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb17
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/add_list_delete_branches_spec.rb3
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/add_ssh_key_spec.rb3
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_http_spec.rb6
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_ssh_spec.rb12
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/push_http_private_token_spec.rb3
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb3
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/use_ssh_key_spec.rb3
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/snippet/create_snippet_spec.rb3
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/web_ide/add_file_template_spec.rb21
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/wiki/create_edit_clone_push_wiki_spec.rb9
-rw-r--r--qa/qa/specs/features/browser_ui/4_verify/ci_variable/add_ci_variable_spec.rb3
-rw-r--r--qa/qa/specs/features/browser_ui/4_verify/pipeline/create_and_process_pipeline_spec.rb3
-rw-r--r--qa/qa/specs/features/browser_ui/4_verify/runner/register_runner_spec.rb3
-rw-r--r--qa/qa/specs/features/browser_ui/6_release/deploy_key/add_deploy_key_spec.rb3
-rw-r--r--qa/qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb3
-rw-r--r--qa/qa/specs/features/browser_ui/6_release/deploy_token/add_deploy_token_spec.rb3
-rw-r--r--qa/qa/specs/features/browser_ui/7_configure/auto_devops/create_project_with_auto_devops_spec.rb12
-rw-r--r--qa/qa/specs/features/browser_ui/non_devops/performance_bar_spec.rb16
-rw-r--r--qa/qa/support/api.rb1
-rw-r--r--qa/qa/support/page/logging.rb20
-rw-r--r--qa/qa/tools/revoke_all_personal_access_tokens.rb6
-rw-r--r--qa/qa/vendor/saml_idp/page/login.rb4
-rw-r--r--qa/spec/page/logging_spec.rb2
-rw-r--r--qa/spec/spec_helper.rb4
-rw-r--r--rubocop/cop/avoid_route_redirect_leading_slash.rb4
-rw-r--r--rubocop/cop/graphql/authorize_types.rb5
-rw-r--r--rubocop/cop/ignored_columns.rb20
-rw-r--r--rubocop/cop/migration/add_column.rb5
-rw-r--r--rubocop/cop/put_group_routes_under_scope.rb43
-rw-r--r--rubocop/cop/put_project_routes_under_scope.rb43
-rw-r--r--rubocop/rubocop.rb3
-rwxr-xr-xscripts/ee-specific-lines-check42
-rwxr-xr-xscripts/frontend/check_no_partial_karma_jest.sh44
-rwxr-xr-xscripts/get-job-id43
-rw-r--r--scripts/gitaly_test.rb8
-rwxr-xr-xscripts/lint-conflicts.sh2
-rwxr-xr-xscripts/notifications.sh27
-rw-r--r--scripts/prepare_build.sh34
-rwxr-xr-xscripts/review_apps/automated_cleanup.rb19
-rw-r--r--scripts/review_apps/base-config.yaml26
-rwxr-xr-xscripts/review_apps/review-apps.sh216
-rwxr-xr-xscripts/security-harness116
-rwxr-xr-xscripts/static-analysis3
-rw-r--r--scripts/sync-stable-branch.sh14
-rwxr-xr-xscripts/trigger-build2
-rw-r--r--scripts/utils.sh13
-rw-r--r--spec/controllers/abuse_reports_controller_spec.rb4
-rw-r--r--spec/controllers/admin/application_settings_controller_spec.rb7
-rw-r--r--spec/controllers/admin/clusters_controller_spec.rb53
-rw-r--r--spec/controllers/admin/identities_controller_spec.rb4
-rw-r--r--spec/controllers/admin/sessions_controller_spec.rb74
-rw-r--r--spec/controllers/admin/users_controller_spec.rb14
-rw-r--r--spec/controllers/application_controller_spec.rb41
-rw-r--r--spec/controllers/autocomplete_controller_spec.rb79
-rw-r--r--spec/controllers/groups/clusters_controller_spec.rb51
-rw-r--r--spec/controllers/groups/group_members_controller_spec.rb31
-rw-r--r--spec/controllers/instance_statistics/dev_ops_score_controller_spec.rb (renamed from spec/controllers/instance_statistics/conversational_development_index_controller_spec.rb)2
-rw-r--r--spec/controllers/oauth/applications_controller_spec.rb6
-rw-r--r--spec/controllers/omniauth_callbacks_controller_spec.rb107
-rw-r--r--spec/controllers/passwords_controller_spec.rb4
-rw-r--r--spec/controllers/profiles/preferences_controller_spec.rb4
-rw-r--r--spec/controllers/profiles/two_factor_auths_controller_spec.rb2
-rw-r--r--spec/controllers/profiles_controller_spec.rb2
-rw-r--r--spec/controllers/projects/artifacts_controller_spec.rb4
-rw-r--r--spec/controllers/projects/branches_controller_spec.rb8
-rw-r--r--spec/controllers/projects/clusters_controller_spec.rb47
-rw-r--r--spec/controllers/projects/deploy_keys_controller_spec.rb26
-rw-r--r--spec/controllers/projects/environments/prometheus_api_controller_spec.rb8
-rw-r--r--spec/controllers/projects/environments/sample_metrics_controller_spec.rb64
-rw-r--r--spec/controllers/projects/environments_controller_spec.rb60
-rw-r--r--spec/controllers/projects/error_tracking_controller_spec.rb147
-rw-r--r--spec/controllers/projects/issues_controller_spec.rb32
-rw-r--r--spec/controllers/projects/jobs_controller_spec.rb25
-rw-r--r--spec/controllers/projects/merge_requests/diffs_controller_spec.rb151
-rw-r--r--spec/controllers/projects/merge_requests_controller_spec.rb36
-rw-r--r--spec/controllers/projects/notes_controller_spec.rb11
-rw-r--r--spec/controllers/projects/pages_domains_controller_spec.rb31
-rw-r--r--spec/controllers/projects/pipeline_schedules_controller_spec.rb2
-rw-r--r--spec/controllers/projects/pipelines_controller_spec.rb5
-rw-r--r--spec/controllers/projects/project_members_controller_spec.rb30
-rw-r--r--spec/controllers/projects/raw_controller_spec.rb89
-rw-r--r--spec/controllers/projects/releases_controller_spec.rb56
-rw-r--r--spec/controllers/projects/serverless/functions_controller_spec.rb16
-rw-r--r--spec/controllers/projects/service_hook_logs_controller_spec.rb41
-rw-r--r--spec/controllers/projects/settings/ci_cd_controller_spec.rb11
-rw-r--r--spec/controllers/projects/uploads_controller_spec.rb2
-rw-r--r--spec/controllers/projects/wikis_controller_spec.rb4
-rw-r--r--spec/controllers/projects_controller_spec.rb143
-rw-r--r--spec/controllers/registrations_controller_spec.rb18
-rw-r--r--spec/controllers/snippets_controller_spec.rb24
-rw-r--r--spec/controllers/uploads_controller_spec.rb59
-rw-r--r--spec/db/schema_spec.rb5
-rw-r--r--spec/factories/ci/builds.rb8
-rw-r--r--spec/factories/clusters/clusters.rb22
-rw-r--r--spec/factories/dev_ops_score_metrics.rb (renamed from spec/factories/conversational_development_index_metrics.rb)2
-rw-r--r--spec/factories/environments.rb8
-rw-r--r--spec/factories/error_tracking/detailed_error.rb13
-rw-r--r--spec/factories/error_tracking/error_event.rb40
-rw-r--r--spec/factories/lists.rb2
-rw-r--r--spec/factories/merge_request_diff_commits.rb10
-rw-r--r--spec/factories/merge_requests.rb4
-rw-r--r--spec/factories/notes.rb4
-rw-r--r--spec/factories/oauth_openid_requests.rb8
-rw-r--r--spec/factories/releases.rb6
-rw-r--r--spec/factories/sentry_issue.rb8
-rw-r--r--spec/factories/serverless/domain_cluster.rb10
-rw-r--r--spec/factories/services.rb7
-rw-r--r--spec/factories/snippets.rb5
-rw-r--r--spec/features/admin/admin_broadcast_messages_spec.rb2
-rw-r--r--spec/features/admin/admin_groups_spec.rb8
-rw-r--r--spec/features/admin/admin_hooks_spec.rb4
-rw-r--r--spec/features/admin/clusters/eks_spec.rb2
-rw-r--r--spec/features/boards/boards_spec.rb12
-rw-r--r--spec/features/dashboard/milestones_spec.rb20
-rw-r--r--spec/features/dashboard/snippets_spec.rb34
-rw-r--r--spec/features/discussion_comments/snippets_spec.rb1
-rw-r--r--spec/features/groups/clusters/eks_spec.rb2
-rw-r--r--spec/features/groups/clusters/user_spec.rb8
-rw-r--r--spec/features/groups/group_settings_spec.rb36
-rw-r--r--spec/features/groups/members/filter_members_spec.rb59
-rw-r--r--spec/features/instance_statistics/dev_ops_score_spec.rb (renamed from spec/features/instance_statistics/conversational_development_index_spec.rb)20
-rw-r--r--spec/features/issues/move_spec.rb1
-rw-r--r--spec/features/issues/user_creates_confidential_merge_request_spec.rb2
-rw-r--r--spec/features/issues/user_views_issues_spec.rb1
-rw-r--r--spec/features/merge_request/user_expands_diff_spec.rb3
-rw-r--r--spec/features/merge_request/user_posts_notes_spec.rb18
-rw-r--r--spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb1
-rw-r--r--spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb1
-rw-r--r--spec/features/merge_request/user_sees_deleted_target_branch_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_deployment_widget_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_diff_spec.rb1
-rw-r--r--spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb47
-rw-r--r--spec/features/merge_request/user_sees_mr_with_deleted_source_branch_spec.rb5
-rw-r--r--spec/features/merge_request/user_sees_versions_spec.rb1
-rw-r--r--spec/features/merge_request/user_selects_branches_for_new_mr_spec.rb8
-rw-r--r--spec/features/merge_request/user_suggests_changes_on_diff_spec.rb4
-rw-r--r--spec/features/merge_request/user_views_diffs_spec.rb1
-rw-r--r--spec/features/merge_requests/user_sorts_merge_requests_spec.rb1
-rw-r--r--spec/features/merge_requests/user_views_open_merge_requests_spec.rb1
-rw-r--r--spec/features/milestones/user_views_milestones_spec.rb31
-rw-r--r--spec/features/oauth_login_spec.rb1
-rw-r--r--spec/features/participants_autocomplete_spec.rb4
-rw-r--r--spec/features/projects/badges/pipeline_badge_spec.rb11
-rw-r--r--spec/features/projects/blobs/blob_show_spec.rb46
-rw-r--r--spec/features/projects/clusters/eks_spec.rb2
-rw-r--r--spec/features/projects/clusters/gcp_spec.rb64
-rw-r--r--spec/features/projects/clusters/user_spec.rb8
-rw-r--r--spec/features/projects/clusters_spec.rb33
-rw-r--r--spec/features/projects/commits/user_browses_commits_spec.rb21
-rw-r--r--spec/features/projects/environments/environments_spec.rb12
-rw-r--r--spec/features/projects/features_visibility_spec.rb6
-rw-r--r--spec/features/projects/files/user_edits_files_spec.rb1
-rw-r--r--spec/features/projects/import_export/export_file_spec.rb2
-rw-r--r--spec/features/projects/jobs/permissions_spec.rb1
-rw-r--r--spec/features/projects/jobs/user_browses_job_spec.rb4
-rw-r--r--spec/features/projects/jobs_spec.rb3
-rw-r--r--spec/features/projects/members/group_members_spec.rb35
-rw-r--r--spec/features/projects/pages_lets_encrypt_spec.rb12
-rw-r--r--spec/features/projects/pipelines/pipelines_spec.rb8
-rw-r--r--spec/features/projects/settings/integration_settings_spec.rb6
-rw-r--r--spec/features/projects/settings/visibility_settings_spec.rb18
-rw-r--r--spec/features/projects/snippets/create_snippet_spec.rb7
-rw-r--r--spec/features/projects/snippets/show_spec.rb1
-rw-r--r--spec/features/projects/snippets/user_comments_on_snippet_spec.rb1
-rw-r--r--spec/features/projects/snippets/user_deletes_snippet_spec.rb1
-rw-r--r--spec/features/projects/snippets/user_updates_snippet_spec.rb1
-rw-r--r--spec/features/projects/snippets/user_views_snippets_spec.rb2
-rw-r--r--spec/features/projects/user_changes_project_visibility_spec.rb46
-rw-r--r--spec/features/projects/view_on_env_spec.rb1
-rw-r--r--spec/features/projects/wiki/markdown_preview_spec.rb60
-rw-r--r--spec/features/projects/wiki/user_creates_wiki_page_spec.rb2
-rw-r--r--spec/features/reportable_note/snippets_spec.rb1
-rw-r--r--spec/features/security/group/internal_access_spec.rb1
-rw-r--r--spec/features/security/group/private_access_spec.rb1
-rw-r--r--spec/features/security/group/public_access_spec.rb1
-rw-r--r--spec/features/security/project/internal_access_spec.rb27
-rw-r--r--spec/features/security/project/private_access_spec.rb29
-rw-r--r--spec/features/security/project/public_access_spec.rb26
-rw-r--r--spec/features/snippets/explore_spec.rb63
-rw-r--r--spec/features/snippets/internal_snippet_spec.rb4
-rw-r--r--spec/features/snippets/notes_on_personal_snippets_spec.rb1
-rw-r--r--spec/features/snippets/private_snippets_spec.rb1
-rw-r--r--spec/features/snippets/public_snippets_spec.rb5
-rw-r--r--spec/features/snippets/show_spec.rb21
-rw-r--r--spec/features/snippets/spam_snippets_spec.rb1
-rw-r--r--spec/features/snippets/user_creates_snippet_spec.rb1
-rw-r--r--spec/features/snippets/user_deletes_snippet_spec.rb2
-rw-r--r--spec/features/snippets/user_edits_snippet_spec.rb1
-rw-r--r--spec/features/snippets/user_snippets_spec.rb6
-rw-r--r--spec/features/snippets_spec.rb29
-rw-r--r--spec/features/task_lists_spec.rb1
-rw-r--r--spec/features/users/login_spec.rb1
-rw-r--r--spec/features/users/show_spec.rb36
-rw-r--r--spec/finders/clusters_finder_spec.rb1
-rw-r--r--spec/finders/deployments_finder_spec.rb97
-rw-r--r--spec/finders/group_descendants_finder_spec.rb1
-rw-r--r--spec/finders/group_members_finder_spec.rb38
-rw-r--r--spec/finders/group_projects_finder_spec.rb18
-rw-r--r--spec/finders/groups_finder_spec.rb2
-rw-r--r--spec/finders/issues_finder_spec.rb1
-rw-r--r--spec/finders/jobs_finder_spec.rb89
-rw-r--r--spec/finders/keys_finder_spec.rb148
-rw-r--r--spec/finders/members_finder_spec.rb50
-rw-r--r--spec/finders/merge_request_target_project_finder_spec.rb17
-rw-r--r--spec/finders/personal_access_tokens_finder_spec.rb10
-rw-r--r--spec/finders/pipelines_finder_spec.rb73
-rw-r--r--spec/finders/projects_finder_spec.rb2
-rw-r--r--spec/finders/snippets_finder_spec.rb87
-rw-r--r--spec/finders/tags_finder_spec.rb1
-rw-r--r--spec/finders/user_finder_spec.rb22
-rw-r--r--spec/fixtures/api/schemas/entities/merge_request_noteable.json10
-rw-r--r--spec/fixtures/api/schemas/entities/merge_request_poll_cached_widget.json1
-rw-r--r--spec/fixtures/api/schemas/environment.json3
-rw-r--r--spec/fixtures/api/schemas/error_tracking/error_detailed.json2
-rw-r--r--spec/fixtures/api/schemas/error_tracking/error_stack_trace.json2
-rw-r--r--spec/fixtures/api/schemas/error_tracking/index.json4
-rw-r--r--spec/fixtures/api/schemas/external_validation.json75
-rw-r--r--spec/fixtures/api/schemas/list.json3
-rw-r--r--spec/fixtures/api/schemas/public_api/v4/board.json3
-rw-r--r--spec/fixtures/api/schemas/public_api/v4/release.json2
-rw-r--r--spec/fixtures/api/schemas/public_api/v4/release/release_for_guest.json5
-rw-r--r--spec/fixtures/api/schemas/remote_mirror.json26
-rw-r--r--spec/fixtures/api/schemas/remote_mirrors.json4
-rw-r--r--spec/fixtures/container_registry/config_blob_helm.json8
-rw-r--r--spec/fixtures/container_registry/tag_manifest_helm.json15
-rw-r--r--spec/fixtures/git-cheat-sheet.pdf130426
-rw-r--r--spec/fixtures/gitlab/import_export/corrupted_project_export.tar.gzbin0 -> 4352 bytes
-rw-r--r--spec/fixtures/gitlab/import_export/lightweight_project_export.tar.gzbin0 -> 3837 bytes
-rw-r--r--spec/fixtures/gitlab/sample_metrics/sample_metric_query_result.yml151
-rw-r--r--spec/fixtures/lib/gitlab/import_export/complex/project.json18
-rw-r--r--spec/fixtures/lib/gitlab/import_export/group_exports/complex/group.json2106
-rw-r--r--spec/fixtures/lib/gitlab/import_export/group_exports/no_children/group.json957
-rw-r--r--spec/fixtures/lib/gitlab/import_export/with_invalid_records/project.json38
-rw-r--r--spec/fixtures/lib/gitlab/metrics/dashboard/schemas/panel_groups.json1
-rw-r--r--spec/fixtures/project_export.tar.gzbin343091 -> 341315 bytes
-rw-r--r--spec/frontend/admin/statistics_panel/components/app_spec.js2
-rw-r--r--spec/frontend/autosave_spec.js39
-rw-r--r--spec/frontend/behaviors/markdown/render_metrics_spec.js2
-rw-r--r--spec/frontend/boards/boards_store_spec.js1037
-rw-r--r--spec/frontend/boards/components/issue_count_spec.js85
-rw-r--r--spec/frontend/boards/components/issue_time_estimate_spec.js2
-rw-r--r--spec/frontend/boards/issue_card_spec.js1
-rw-r--r--spec/frontend/boards/mock_data.js91
-rw-r--r--spec/frontend/boards/services/board_service_spec.js552
-rw-r--r--spec/frontend/clusters/clusters_bundle_spec.js9
-rw-r--r--spec/frontend/clusters/components/__snapshots__/remove_cluster_confirmation_spec.js.snap80
-rw-r--r--spec/frontend/clusters/components/application_row_spec.js2
-rw-r--r--spec/frontend/clusters/components/applications_spec.js4
-rw-r--r--spec/frontend/clusters/components/remove_cluster_confirmation_spec.js57
-rw-r--r--spec/frontend/clusters/components/uninstall_application_confirmation_modal_spec.js2
-rw-r--r--spec/frontend/clusters/services/crossplane_provider_stack_spec.js9
-rw-r--r--spec/frontend/commit/commit_pipeline_status_component_spec.js3
-rw-r--r--spec/frontend/confidential_merge_request/components/__snapshots__/project_form_group_spec.js.snap30
-rw-r--r--spec/frontend/contributors/component/contributors_spec.js2
-rw-r--r--spec/frontend/contributors/store/actions_spec.js2
-rw-r--r--spec/frontend/create_cluster/eks_cluster/components/cluster_form_dropdown_spec.js13
-rw-r--r--spec/frontend/create_cluster/eks_cluster/components/eks_cluster_configuration_form_spec.js16
-rw-r--r--spec/frontend/create_cluster/eks_cluster/services/aws_services_facade_spec.js193
-rw-r--r--spec/frontend/create_cluster/eks_cluster/store/actions_spec.js34
-rw-r--r--spec/frontend/create_cluster/eks_cluster/store/mutations_spec.js12
-rw-r--r--spec/frontend/create_cluster/init_create_cluster_spec.js10
-rw-r--r--spec/frontend/create_merge_request_dropdown_spec.js2
-rw-r--r--spec/frontend/cycle_analytics/limit_warning_component_spec.js43
-rw-r--r--spec/frontend/diffs/components/compare_versions_spec.js156
-rw-r--r--spec/frontend/diffs/components/diff_file_header_spec.js1
-rw-r--r--spec/frontend/diffs/components/diff_gutter_avatars_spec.js3
-rw-r--r--spec/frontend/diffs/components/edit_button_spec.js3
-rw-r--r--spec/frontend/diffs/mock_data/diff_with_commit.js7
-rw-r--r--spec/frontend/diffs/mock_data/merge_request_diffs.js46
-rw-r--r--spec/frontend/environment.js1
-rw-r--r--spec/frontend/environments/environment_item_spec.js131
-rw-r--r--spec/frontend/environments/environment_monitoring_spec.js39
-rw-r--r--spec/frontend/environments/environment_rollback_spec.js4
-rw-r--r--spec/frontend/environments/environment_stop_spec.js40
-rw-r--r--spec/frontend/environments/environment_table_spec.js (renamed from spec/javascripts/environments/environment_table_spec.js)120
-rw-r--r--spec/frontend/environments/environment_terminal_button_spec.js36
-rw-r--r--spec/frontend/environments/mock_data.js106
-rw-r--r--spec/frontend/error_tracking/components/error_details_spec.js87
-rw-r--r--spec/frontend/error_tracking/components/error_tracking_list_spec.js232
-rw-r--r--spec/frontend/error_tracking/components/list_mock.json29
-rw-r--r--spec/frontend/error_tracking/components/stacktrace_entry_spec.js56
-rw-r--r--spec/frontend/error_tracking/store/details/actions_spec.js2
-rw-r--r--spec/frontend/error_tracking/store/details/getters_spec.js14
-rw-r--r--spec/frontend/error_tracking/store/list/actions_spec.js117
-rw-r--r--spec/frontend/error_tracking/store/list/getters_spec.js33
-rw-r--r--spec/frontend/error_tracking/store/list/mutation_spec.js82
-rw-r--r--spec/frontend/error_tracking/utils_spec.js11
-rw-r--r--spec/frontend/error_tracking_settings/components/app_spec.js2
-rw-r--r--spec/frontend/error_tracking_settings/components/error_tracking_form_spec.js4
-rw-r--r--spec/frontend/error_tracking_settings/mock.js2
-rw-r--r--spec/frontend/fixtures/snippet.rb3
-rw-r--r--spec/frontend/fixtures/static/environments_logs.html102
-rw-r--r--spec/frontend/fixtures/static/projects.json9
-rw-r--r--spec/frontend/fixtures/test_report.rb30
-rw-r--r--spec/frontend/gfm_auto_complete_spec.js110
-rw-r--r--spec/frontend/grafana_integration/components/grafana_integration_spec.js2
-rw-r--r--spec/frontend/helpers/dom_shims/index.js1
-rw-r--r--spec/frontend/helpers/dom_shims/inner_text.js11
-rw-r--r--spec/frontend/ide/components/branches/item_spec.js (renamed from spec/javascripts/ide/components/branches/item_spec.js)6
-rw-r--r--spec/frontend/ide/components/branches/search_list_spec.js2
-rw-r--r--spec/frontend/ide/components/merge_requests/list_spec.js2
-rw-r--r--spec/frontend/ide/components/panes/right_spec.js (renamed from spec/javascripts/ide/components/panes/right_spec.js)8
-rw-r--r--spec/frontend/ide/components/pipelines/list_spec.js4
-rw-r--r--spec/frontend/ide/components/preview/clientside_spec.js4
-rw-r--r--spec/frontend/ide/components/preview/navigator_spec.js (renamed from spec/javascripts/ide/components/preview/navigator_spec.js)52
-rw-r--r--spec/frontend/ide/helpers.js52
-rw-r--r--spec/frontend/ide/ide_router_spec.js (renamed from spec/javascripts/ide/ide_router_spec.js)2
-rw-r--r--spec/frontend/ide/lib/files_spec.js3
-rw-r--r--spec/frontend/ide/services/index_spec.js2
-rw-r--r--spec/frontend/ide/stores/getters_spec.js (renamed from spec/javascripts/ide/stores/getters_spec.js)128
-rw-r--r--spec/frontend/ide/stores/modules/branches/actions_spec.js (renamed from spec/javascripts/ide/stores/modules/branches/actions_spec.js)31
-rw-r--r--spec/frontend/ide/stores/modules/branches/mutations_spec.js (renamed from spec/javascripts/ide/stores/modules/branches/mutations_spec.js)8
-rw-r--r--spec/frontend/ide/stores/modules/commit/getters_spec.js (renamed from spec/javascripts/ide/stores/modules/commit/getters_spec.js)0
-rw-r--r--spec/frontend/ide/stores/modules/file_templates/actions_spec.js (renamed from spec/javascripts/ide/stores/modules/file_templates/actions_spec.js)159
-rw-r--r--spec/frontend/ide/stores/modules/merge_requests/actions_spec.js (renamed from spec/javascripts/ide/stores/modules/merge_requests/actions_spec.js)81
-rw-r--r--spec/frontend/ide/stores/modules/merge_requests/mutations_spec.js (renamed from spec/javascripts/ide/stores/modules/merge_requests/mutations_spec.js)11
-rw-r--r--spec/frontend/ide/stores/modules/pane/actions_spec.js (renamed from spec/javascripts/ide/stores/modules/pane/actions_spec.js)2
-rw-r--r--spec/frontend/ide/stores/modules/pipelines/actions_spec.js (renamed from spec/javascripts/ide/stores/modules/pipelines/actions_spec.js)88
-rw-r--r--spec/frontend/ide/stores/modules/pipelines/mutations_spec.js (renamed from spec/javascripts/ide/stores/modules/pipelines/mutations_spec.js)52
-rw-r--r--spec/frontend/ide/stores/mutations/file_spec.js (renamed from spec/javascripts/ide/stores/mutations/file_spec.js)67
-rw-r--r--spec/frontend/ide/stores/mutations/tree_spec.js (renamed from spec/javascripts/ide/stores/mutations/tree_spec.js)4
-rw-r--r--spec/frontend/ide/stores/mutations_spec.js (renamed from spec/javascripts/ide/stores/mutations_spec.js)198
-rw-r--r--spec/frontend/ide/stores/utils_spec.js (renamed from spec/javascripts/ide/stores/utils_spec.js)232
-rw-r--r--spec/frontend/ide/utils_spec.js3
-rw-r--r--spec/frontend/import_projects/components/imported_project_table_row_spec.js2
-rw-r--r--spec/frontend/import_projects/store/actions_spec.js4
-rw-r--r--spec/frontend/issuable_suggestions/components/app_spec.js82
-rw-r--r--spec/frontend/issuable_suggestions/components/item_spec.js2
-rw-r--r--spec/frontend/issuables_list/components/issuable_spec.js1
-rw-r--r--spec/frontend/issuables_list/components/issuables_list_app_spec.js4
-rw-r--r--spec/frontend/jest_self_check/mocks_spec.js43
-rw-r--r--spec/frontend/jobs/components/erased_block_spec.js37
-rw-r--r--spec/frontend/jobs/components/log/mock_data.js2
-rw-r--r--spec/frontend/lib/utils/accessor_spec.js (renamed from spec/javascripts/lib/utils/accessor_spec.js)15
-rw-r--r--spec/frontend/lib/utils/datetime_utility_spec.js67
-rw-r--r--spec/frontend/lib/utils/dom_utils_spec.js (renamed from spec/javascripts/lib/utils/dom_utils_spec.js)38
-rw-r--r--spec/frontend/lib/utils/file_upload_spec.js (renamed from spec/javascripts/lib/utils/file_upload_spec.js)6
-rw-r--r--spec/frontend/lib/utils/highlight_spec.js (renamed from spec/javascripts/lib/utils/higlight_spec.js)0
-rw-r--r--spec/frontend/lib/utils/icon_utils_spec.js (renamed from spec/javascripts/lib/utils/icon_utils_spec.js)39
-rw-r--r--spec/frontend/lib/utils/suppress_ajax_errors_during_navigation_spec.js20
-rw-r--r--spec/frontend/lib/utils/text_markdown_spec.js (renamed from spec/javascripts/lib/utils/text_markdown_spec.js)8
-rw-r--r--spec/frontend/lib/utils/url_utility_spec.js90
-rw-r--r--spec/frontend/lib/utils/users_cache_spec.js (renamed from spec/javascripts/lib/utils/users_cache_spec.js)49
-rw-r--r--spec/frontend/monitoring/components/__snapshots__/empty_state_spec.js.snap (renamed from spec/frontend/monitoring/__snapshots__/dashboard_state_spec.js.snap)0
-rw-r--r--spec/frontend/monitoring/components/__snapshots__/group_empty_state_spec.js.snap79
-rw-r--r--spec/frontend/monitoring/components/charts/anomaly_spec.js22
-rw-r--r--spec/frontend/monitoring/components/charts/column_spec.js (renamed from spec/javascripts/monitoring/charts/column_spec.js)14
-rw-r--r--spec/frontend/monitoring/components/charts/empty_chart_spec.js (renamed from spec/javascripts/monitoring/charts/empty_chart_spec.js)8
-rw-r--r--spec/frontend/monitoring/components/charts/heatmap_spec.js (renamed from spec/javascripts/monitoring/charts/heatmap_spec.js)2
-rw-r--r--spec/frontend/monitoring/components/charts/single_stat_spec.js (renamed from spec/javascripts/monitoring/charts/single_stat_spec.js)10
-rw-r--r--spec/frontend/monitoring/components/charts/time_series_spec.js (renamed from spec/frontend/monitoring/charts/time_series_spec.js)39
-rw-r--r--spec/frontend/monitoring/components/empty_state_spec.js (renamed from spec/frontend/monitoring/dashboard_state_spec.js)1
-rw-r--r--spec/frontend/monitoring/components/group_empty_state_spec.js34
-rw-r--r--spec/frontend/monitoring/embed/embed_spec.js25
-rw-r--r--spec/frontend/monitoring/embed/mock_data.js32
-rw-r--r--spec/frontend/monitoring/mock_data.js207
-rw-r--r--spec/frontend/monitoring/panel_type_spec.js80
-rw-r--r--spec/frontend/monitoring/store/actions_spec.js367
-rw-r--r--spec/frontend/monitoring/store/getters_spec.js217
-rw-r--r--spec/frontend/monitoring/store/mutations_spec.js229
-rw-r--r--spec/frontend/monitoring/store/utils_spec.js44
-rw-r--r--spec/frontend/monitoring/utils_spec.js342
-rw-r--r--spec/frontend/mr_popover/mr_popover_spec.js2
-rw-r--r--spec/frontend/notes/components/comment_form_spec.js4
-rw-r--r--spec/frontend/notes/components/discussion_actions_spec.js4
-rw-r--r--spec/frontend/notes/components/discussion_jump_to_next_button_spec.js3
-rw-r--r--spec/frontend/notes/components/discussion_keyboard_navigator_spec.js9
-rw-r--r--spec/frontend/notes/components/discussion_notes_spec.js1
-rw-r--r--spec/frontend/notes/components/discussion_reply_placeholder_spec.js2
-rw-r--r--spec/frontend/notes/components/discussion_resolve_button_spec.js2
-rw-r--r--spec/frontend/notes/components/note_app_spec.js15
-rw-r--r--spec/frontend/notes/components/note_edited_text_spec.js62
-rw-r--r--spec/frontend/notes/old_notes_spec.js4
-rw-r--r--spec/frontend/operation_settings/components/external_dashboard_spec.js2
-rw-r--r--spec/frontend/pages/admin/users/components/delete_user_modal_spec.js134
-rw-r--r--spec/frontend/pages/admin/users/components/user_modal_manager_spec.js4
-rw-r--r--spec/frontend/pages/profiles/show/emoji_menu_spec.js2
-rw-r--r--spec/frontend/performance_bar/components/add_request_spec.js2
-rw-r--r--spec/frontend/performance_bar/components/detailed_metric_spec.js2
-rw-r--r--spec/frontend/performance_bar/components/performance_bar_app_spec.js2
-rw-r--r--spec/frontend/performance_bar/components/request_selector_spec.js43
-rw-r--r--spec/frontend/performance_bar/components/request_warning_spec.js2
-rw-r--r--spec/frontend/performance_bar/stores/performance_bar_store_spec.js62
-rw-r--r--spec/frontend/pipelines/graph/action_component_spec.js1
-rw-r--r--spec/frontend/pipelines/graph/job_item_spec.js (renamed from spec/javascripts/pipelines/graph/job_item_spec.js)79
-rw-r--r--spec/frontend/pipelines/graph/linked_pipeline_spec.js127
-rw-r--r--spec/frontend/pipelines/graph/linked_pipelines_mock_data.js407
-rw-r--r--spec/frontend/pipelines/pipeline_triggerer_spec.js28
-rw-r--r--spec/frontend/pipelines/pipeline_url_spec.js112
-rw-r--r--spec/frontend/pipelines/test_reports/mock_data.js113
-rw-r--r--spec/frontend/pipelines/test_reports/stores/actions_spec.js4
-rw-r--r--spec/frontend/pipelines/test_reports/stores/getters_spec.js22
-rw-r--r--spec/frontend/pipelines/test_reports/stores/mutations_spec.js12
-rw-r--r--spec/frontend/pipelines/test_reports/test_reports_spec.js6
-rw-r--r--spec/frontend/pipelines/test_reports/test_suite_table_spec.js14
-rw-r--r--spec/frontend/pipelines/test_reports/test_summary_spec.js33
-rw-r--r--spec/frontend/pipelines/test_reports/test_summary_table_spec.js8
-rw-r--r--spec/frontend/project_find_file_spec.js49
-rw-r--r--spec/frontend/registry/list/components/__snapshots__/group_empty_state_spec.js.snap (renamed from spec/frontend/registry/components/__snapshots__/group_empty_state_spec.js.snap)0
-rw-r--r--spec/frontend/registry/list/components/__snapshots__/project_empty_state_spec.js.snap (renamed from spec/frontend/registry/components/__snapshots__/project_empty_state_spec.js.snap)0
-rw-r--r--spec/frontend/registry/list/components/app_spec.js (renamed from spec/frontend/registry/components/app_spec.js)38
-rw-r--r--spec/frontend/registry/list/components/collapsible_container_spec.js (renamed from spec/frontend/registry/components/collapsible_container_spec.js)74
-rw-r--r--spec/frontend/registry/list/components/group_empty_state_spec.js (renamed from spec/frontend/registry/components/group_empty_state_spec.js)2
-rw-r--r--spec/frontend/registry/list/components/project_empty_state_spec.js (renamed from spec/frontend/registry/components/project_empty_state_spec.js)4
-rw-r--r--spec/frontend/registry/list/components/table_registry_spec.js (renamed from spec/frontend/registry/components/table_registry_spec.js)115
-rw-r--r--spec/frontend/registry/list/mock_data.js (renamed from spec/frontend/registry/mock_data.js)0
-rw-r--r--spec/frontend/registry/list/stores/actions_spec.js (renamed from spec/frontend/registry/stores/actions_spec.js)8
-rw-r--r--spec/frontend/registry/list/stores/getters_spec.js (renamed from spec/frontend/registry/stores/getters_spec.js)2
-rw-r--r--spec/frontend/registry/list/stores/mutations_spec.js (renamed from spec/frontend/registry/stores/mutations_spec.js)4
-rw-r--r--spec/frontend/registry/settings/components/__snapshots__/registry_settings_app_spec.js.snap33
-rw-r--r--spec/frontend/registry/settings/components/registry_settings_app_spec.js40
-rw-r--r--spec/frontend/registry/settings/stores/actions_spec.js20
-rw-r--r--spec/frontend/registry/settings/stores/mutations_spec.js21
-rw-r--r--spec/frontend/releases/detail/components/app_spec.js2
-rw-r--r--spec/frontend/releases/detail/store/actions_spec.js2
-rw-r--r--spec/frontend/releases/list/components/evidence_block_spec.js77
-rw-r--r--spec/frontend/releases/list/components/release_block_footer_spec.js12
-rw-r--r--spec/frontend/releases/list/components/release_block_milestone_info_spec.js179
-rw-r--r--spec/frontend/releases/list/components/release_block_spec.js119
-rw-r--r--spec/frontend/releases/mock_data.js11
-rw-r--r--spec/frontend/reports/components/report_section_spec.js2
-rw-r--r--spec/frontend/repository/components/preview/__snapshots__/index_spec.js.snap28
-rw-r--r--spec/frontend/repository/components/table/row_spec.js1
-rw-r--r--spec/frontend/repository/log_tree_spec.js19
-rw-r--r--spec/frontend/repository/utils/commit_spec.js3
-rw-r--r--spec/frontend/repository/utils/dom_spec.js12
-rw-r--r--spec/frontend/sentry/sentry_config_spec.js7
-rw-r--r--spec/frontend/serverless/components/environment_row_spec.js2
-rw-r--r--spec/frontend/serverless/components/function_details_spec.js2
-rw-r--r--spec/frontend/serverless/components/function_row_spec.js2
-rw-r--r--spec/frontend/serverless/components/functions_spec.js4
-rw-r--r--spec/frontend/serverless/components/missing_prometheus_spec.js2
-rw-r--r--spec/frontend/serverless/components/pod_box_spec.js2
-rw-r--r--spec/frontend/serverless/components/url_spec.js2
-rw-r--r--spec/frontend/sidebar/__snapshots__/todo_spec.js.snap2
-rw-r--r--spec/frontend/sidebar/assignees_spec.js200
-rw-r--r--spec/frontend/sidebar/components/assignees/assignee_avatar_link_spec.js6
-rw-r--r--spec/frontend/sidebar/components/assignees/assignee_avatar_spec.js2
-rw-r--r--spec/frontend/sidebar/components/assignees/collapsed_assignee_list_spec.js2
-rw-r--r--spec/frontend/sidebar/components/assignees/uncollapsed_assignee_list_spec.js2
-rw-r--r--spec/frontend/sidebar/confidential_issue_sidebar_spec.js3
-rw-r--r--spec/frontend/sidebar/mock_data.js213
-rw-r--r--spec/frontend/sidebar/todo_spec.js6
-rw-r--r--spec/frontend/sidebar/user_data_mock.js6
-rw-r--r--spec/frontend/snippets/components/app_spec.js45
-rw-r--r--spec/frontend/snippets/components/snippet_header_spec.js171
-rw-r--r--spec/frontend/snippets_spec.js70
-rw-r--r--spec/frontend/test_setup.js11
-rw-r--r--spec/frontend/tracking_spec.js66
-rw-r--r--spec/frontend/transfer_edit_spec.js2
-rw-r--r--spec/frontend/vue_mr_widget/components/artifacts_list_app_spec.js2
-rw-r--r--spec/frontend/vue_mr_widget/components/mr_collapsible_extension_spec.js2
-rw-r--r--spec/frontend/vue_mr_widget/deployment/deployment_mock_data.js32
-rw-r--r--spec/frontend/vue_mr_widget/deployment/deployment_spec.js194
-rw-r--r--spec/frontend/vue_mr_widget/deployment/deployment_view_button_spec.js118
-rw-r--r--spec/frontend/vue_shared/components/__snapshots__/expand_button_spec.js.snap5
-rw-r--r--spec/frontend/vue_shared/components/__snapshots__/memory_graph_spec.js.snap15
-rw-r--r--spec/frontend/vue_shared/components/__snapshots__/split_button_spec.js.snap1
-rw-r--r--spec/frontend/vue_shared/components/changed_file_icon_spec.js1
-rw-r--r--spec/frontend/vue_shared/components/clipboard_button_spec.js60
-rw-r--r--spec/frontend/vue_shared/components/commit_spec.js1
-rw-r--r--spec/frontend/vue_shared/components/content_viewer/viewers/image_viewer_spec.js2
-rw-r--r--spec/frontend/vue_shared/components/dropdown/dropdown_search_input_spec.js55
-rw-r--r--spec/frontend/vue_shared/components/expand_button_spec.js188
-rw-r--r--spec/frontend/vue_shared/components/gl_toggle_vuex_spec.js2
-rw-r--r--spec/frontend/vue_shared/components/issue/issue_assignees_spec.js1
-rw-r--r--spec/frontend/vue_shared/components/issue/issue_milestone_spec.js8
-rw-r--r--spec/frontend/vue_shared/components/issue/issue_warning_spec.js2
-rw-r--r--spec/frontend/vue_shared/components/issue/related_issuable_item_spec.js7
-rw-r--r--spec/frontend/vue_shared/components/markdown/field_spec.js179
-rw-r--r--spec/frontend/vue_shared/components/markdown/header_spec.js90
-rw-r--r--spec/frontend/vue_shared/components/markdown/suggestion_diff_header_spec.js19
-rw-r--r--spec/frontend/vue_shared/components/memory_graph_spec.js53
-rw-r--r--spec/frontend/vue_shared/components/modal_copy_button_spec.js2
-rw-r--r--spec/frontend/vue_shared/components/notes/placeholder_system_note_spec.js2
-rw-r--r--spec/frontend/vue_shared/components/notes/system_note_spec.js24
-rw-r--r--spec/frontend/vue_shared/components/paginated_list_spec.js4
-rw-r--r--spec/frontend/vue_shared/components/resizable_chart_container_spec.js2
-rw-r--r--spec/frontend/vue_shared/components/sidebar/collapsed_calendar_icon_spec.js2
-rw-r--r--spec/frontend/vue_shared/components/sidebar/collapsed_grouped_date_picker_spec.js2
-rw-r--r--spec/frontend/vue_shared/components/sidebar/date_picker_spec.js2
-rw-r--r--spec/frontend/vue_shared/components/sidebar/labels_select/base_spec.js12
-rw-r--r--spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_button_spec.js2
-rw-r--r--spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_create_label_spec.js2
-rw-r--r--spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_footer_spec.js2
-rw-r--r--spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_header_spec.js3
-rw-r--r--spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_search_input_spec.js3
-rw-r--r--spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_title_spec.js3
-rw-r--r--spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_value_collapsed_spec.js2
-rw-r--r--spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_value_spec.js108
-rw-r--r--spec/frontend/vue_shared/components/sidebar/toggle_sidebar_spec.js2
-rw-r--r--spec/frontend/vue_shared/components/table_pagination_spec.js324
-rw-r--r--spec/frontend/vue_shared/components/time_ago_tooltip_spec.js48
-rw-r--r--spec/frontend/vue_shared/components/user_avatar/user_avatar_image_spec.js2
-rw-r--r--spec/frontend/vue_shared/components/user_avatar/user_avatar_link_spec.js113
-rw-r--r--spec/frontend/vue_shared/components/user_popover/user_popover_spec.js37
-rw-r--r--spec/graphql/mutations/concerns/mutations/resolves_group_spec.rb1
-rw-r--r--spec/graphql/mutations/concerns/mutations/resolves_project_spec.rb1
-rw-r--r--spec/graphql/mutations/issues/set_confidential_spec.rb41
-rw-r--r--spec/graphql/mutations/issues/set_due_date_spec.rb41
-rw-r--r--spec/graphql/mutations/merge_requests/set_assignees_spec.rb2
-rw-r--r--spec/graphql/mutations/merge_requests/set_labels_spec.rb2
-rw-r--r--spec/graphql/mutations/merge_requests/set_locked_spec.rb2
-rw-r--r--spec/graphql/mutations/merge_requests/set_milestone_spec.rb2
-rw-r--r--spec/graphql/mutations/merge_requests/set_subscription_spec.rb2
-rw-r--r--spec/graphql/mutations/merge_requests/set_wip_spec.rb2
-rw-r--r--spec/graphql/mutations/todos/mark_all_done_spec.rb53
-rw-r--r--spec/graphql/mutations/todos/mark_done_spec.rb6
-rw-r--r--spec/graphql/mutations/todos/restore_spec.rb66
-rw-r--r--spec/graphql/resolvers/base_resolver_spec.rb26
-rw-r--r--spec/graphql/resolvers/concerns/resolves_pipelines_spec.rb1
-rw-r--r--spec/graphql/resolvers/error_tracking/sentry_detailed_error_resolver_spec.rb63
-rw-r--r--spec/graphql/resolvers/issues_resolver_spec.rb18
-rw-r--r--spec/graphql/resolvers/projects/snippets_resolver_spec.rb83
-rw-r--r--spec/graphql/resolvers/snippets_resolver_spec.rb128
-rw-r--r--spec/graphql/resolvers/todo_resolver_spec.rb88
-rw-r--r--spec/graphql/resolvers/users/snippets_resolver_spec.rb84
-rw-r--r--spec/graphql/types/error_tracking/sentry_detailed_error_type_spec.rb37
-rw-r--r--spec/graphql/types/permission_types/base_permission_type_spec.rb1
-rw-r--r--spec/graphql/types/permission_types/project_spec.rb2
-rw-r--r--spec/graphql/types/permission_types/snippet_spec.rb15
-rw-r--r--spec/graphql/types/permission_types/user_spec.rb15
-rw-r--r--spec/graphql/types/project_type_spec.rb14
-rw-r--r--spec/graphql/types/query_type_spec.rb2
-rw-r--r--spec/graphql/types/snippet_type_spec.rb19
-rw-r--r--spec/graphql/types/user_type_spec.rb17
-rw-r--r--spec/helpers/application_helper_spec.rb84
-rw-r--r--spec/helpers/avatars_helper_spec.rb1
-rw-r--r--spec/helpers/award_emoji_helper_spec.rb22
-rw-r--r--spec/helpers/clusters_helper_spec.rb8
-rw-r--r--spec/helpers/container_expiration_policies_helper_spec.rb47
-rw-r--r--spec/helpers/diff_helper_spec.rb45
-rw-r--r--spec/helpers/emails_helper_spec.rb22
-rw-r--r--spec/helpers/events_helper_spec.rb1
-rw-r--r--spec/helpers/git_helper_spec.rb159
-rw-r--r--spec/helpers/gitlab_routing_helper_spec.rb94
-rw-r--r--spec/helpers/groups_helper_spec.rb3
-rw-r--r--spec/helpers/icons_helper_spec.rb2
-rw-r--r--spec/helpers/issuables_helper_spec.rb23
-rw-r--r--spec/helpers/labels_helper_spec.rb19
-rw-r--r--spec/helpers/markup_helper_spec.rb2
-rw-r--r--spec/helpers/merge_requests_helper_spec.rb26
-rw-r--r--spec/helpers/nav_helper_spec.rb17
-rw-r--r--spec/helpers/projects/error_tracking_helper_spec.rb5
-rw-r--r--spec/helpers/projects_helper_spec.rb9
-rw-r--r--spec/helpers/search_helper_spec.rb4
-rw-r--r--spec/helpers/services_helper_spec.rb15
-rw-r--r--spec/helpers/snippets_helper_spec.rb113
-rw-r--r--spec/helpers/visibility_level_helper_spec.rb10
-rw-r--r--spec/helpers/wiki_helper_spec.rb2
-rw-r--r--spec/initializers/direct_upload_support_spec.rb17
-rw-r--r--spec/javascripts/badges/components/badge_form_spec.js8
-rw-r--r--spec/javascripts/badges/components/badge_list_row_spec.js6
-rw-r--r--spec/javascripts/badges/components/badge_list_spec.js2
-rw-r--r--spec/javascripts/badges/components/badge_settings_spec.js2
-rw-r--r--spec/javascripts/badges/components/badge_spec.js2
-rw-r--r--spec/javascripts/badges/dummy_badge.js4
-rw-r--r--spec/javascripts/badges/store/actions_spec.js10
-rw-r--r--spec/javascripts/blob/balsamiq/balsamiq_viewer_integration_spec.js2
-rw-r--r--spec/javascripts/blob/pdf/index_spec.js2
-rw-r--r--spec/javascripts/blob_edit/blob_bundle_spec.js2
-rw-r--r--spec/javascripts/boards/board_card_spec.js4
-rw-r--r--spec/javascripts/boards/board_list_common_spec.js5
-rw-r--r--spec/javascripts/boards/board_list_spec.js52
-rw-r--r--spec/javascripts/boards/board_new_issue_spec.js3
-rw-r--r--spec/javascripts/boards/boards_store_spec.js511
-rw-r--r--spec/javascripts/boards/components/board_form_spec.js2
-rw-r--r--spec/javascripts/boards/components/board_spec.js17
-rw-r--r--spec/javascripts/boards/components/boards_selector_spec.js2
-rw-r--r--spec/javascripts/boards/components/issue_card_inner_scoped_label_spec.js2
-rw-r--r--spec/javascripts/boards/issue_spec.js5
-rw-r--r--spec/javascripts/boards/list_spec.js14
-rw-r--r--spec/javascripts/boards/mock_data.js98
-rw-r--r--spec/javascripts/ci_variable_list/ci_variable_list_spec.js2
-rw-r--r--spec/javascripts/commit/pipelines/pipelines_spec.js4
-rw-r--r--spec/javascripts/create_cluster/gke_cluster/components/gke_machine_type_dropdown_spec.js2
-rw-r--r--spec/javascripts/create_cluster/gke_cluster/components/gke_project_id_dropdown_spec.js2
-rw-r--r--spec/javascripts/create_cluster/gke_cluster/components/gke_zone_dropdown_spec.js2
-rw-r--r--spec/javascripts/cycle_analytics/banner_spec.js2
-rw-r--r--spec/javascripts/cycle_analytics/total_time_component_spec.js2
-rw-r--r--spec/javascripts/deploy_keys/components/app_spec.js2
-rw-r--r--spec/javascripts/diffs/components/app_spec.js69
-rw-r--r--spec/javascripts/diffs/components/compare_versions_spec.js145
-rw-r--r--spec/javascripts/diffs/components/diff_expansion_cell_spec.js2
-rw-r--r--spec/javascripts/diffs/components/diff_file_spec.js4
-rw-r--r--spec/javascripts/diffs/components/diff_line_gutter_content_spec.js2
-rw-r--r--spec/javascripts/diffs/components/diff_line_note_form_spec.js2
-rw-r--r--spec/javascripts/diffs/components/diff_table_cell_spec.js2
-rw-r--r--spec/javascripts/diffs/components/file_row_stats_spec.js2
-rw-r--r--spec/javascripts/diffs/components/image_diff_overlay_spec.js2
-rw-r--r--spec/javascripts/diffs/components/inline_diff_expansion_row_spec.js2
-rw-r--r--spec/javascripts/diffs/components/inline_diff_table_row_spec.js2
-rw-r--r--spec/javascripts/diffs/components/inline_diff_view_spec.js2
-rw-r--r--spec/javascripts/diffs/components/parallel_diff_expansion_row_spec.js2
-rw-r--r--spec/javascripts/diffs/components/parallel_diff_table_row_spec.js2
-rw-r--r--spec/javascripts/diffs/components/parallel_diff_view_spec.js4
-rw-r--r--spec/javascripts/diffs/components/settings_dropdown_spec.js10
-rw-r--r--spec/javascripts/diffs/components/tree_list_spec.js2
-rw-r--r--spec/javascripts/diffs/mock_data/diff_with_commit.js10
-rw-r--r--spec/javascripts/diffs/mock_data/merge_request_diffs.js53
-rw-r--r--spec/javascripts/diffs/store/actions_spec.js98
-rw-r--r--spec/javascripts/diffs/store/mutations_spec.js31
-rw-r--r--spec/javascripts/dropzone_input_spec.js2
-rw-r--r--spec/javascripts/environments/emtpy_state_spec.js2
-rw-r--r--spec/javascripts/environments/environment_actions_spec.js4
-rw-r--r--spec/javascripts/environments/environment_item_spec.js203
-rw-r--r--spec/javascripts/environments/environment_monitoring_spec.js32
-rw-r--r--spec/javascripts/environments/environment_stop_spec.js23
-rw-r--r--spec/javascripts/environments/environment_terminal_button_spec.js35
-rw-r--r--spec/javascripts/environments/environments_app_spec.js7
-rw-r--r--spec/javascripts/environments/folder/environments_folder_view_spec.js8
-rw-r--r--spec/javascripts/feature_highlight/feature_highlight_helper_spec.js3
-rw-r--r--spec/javascripts/feature_highlight/feature_highlight_spec.js2
-rw-r--r--spec/javascripts/filtered_search/visual_token_value_spec.js2
-rw-r--r--spec/javascripts/frequent_items/components/app_spec.js4
-rw-r--r--spec/javascripts/frequent_items/components/frequent_items_list_item_spec.js62
-rw-r--r--spec/javascripts/frequent_items/components/frequent_items_list_spec.js2
-rw-r--r--spec/javascripts/frequent_items/components/frequent_items_search_input_spec.js18
-rw-r--r--spec/javascripts/frequent_items/mock_data.js2
-rw-r--r--spec/javascripts/gpg_badges_spec.js2
-rw-r--r--spec/javascripts/groups/components/group_item_spec.js2
-rw-r--r--spec/javascripts/groups/components/groups_spec.js2
-rw-r--r--spec/javascripts/groups/components/item_actions_spec.js2
-rw-r--r--spec/javascripts/groups/components/item_caret_spec.js3
-rw-r--r--spec/javascripts/groups/components/item_stats_spec.js2
-rw-r--r--spec/javascripts/groups/components/item_stats_value_spec.js3
-rw-r--r--spec/javascripts/groups/components/item_type_icon_spec.js2
-rw-r--r--spec/javascripts/helpers/init_vue_mr_page_helper.js2
-rw-r--r--spec/javascripts/ide/components/commit_sidebar/actions_spec.js4
-rw-r--r--spec/javascripts/ide/components/commit_sidebar/form_spec.js6
-rw-r--r--spec/javascripts/ide/components/commit_sidebar/list_collapsed_spec.js2
-rw-r--r--spec/javascripts/ide/components/commit_sidebar/list_item_spec.js4
-rw-r--r--spec/javascripts/ide/components/commit_sidebar/list_spec.js2
-rw-r--r--spec/javascripts/ide/components/commit_sidebar/message_field_spec.js2
-rw-r--r--spec/javascripts/ide/components/commit_sidebar/new_merge_request_option_spec.js4
-rw-r--r--spec/javascripts/ide/components/commit_sidebar/radio_group_spec.js4
-rw-r--r--spec/javascripts/ide/components/file_row_extra_spec.js2
-rw-r--r--spec/javascripts/ide/components/file_templates/bar_spec.js2
-rw-r--r--spec/javascripts/ide/components/ide_side_bar_spec.js2
-rw-r--r--spec/javascripts/ide/components/ide_spec.js2
-rw-r--r--spec/javascripts/ide/components/ide_status_bar_spec.js2
-rw-r--r--spec/javascripts/ide/components/nav_dropdown_button_spec.js4
-rw-r--r--spec/javascripts/ide/components/nav_dropdown_spec.js2
-rw-r--r--spec/javascripts/ide/components/new_dropdown/index_spec.js2
-rw-r--r--spec/javascripts/ide/components/new_dropdown/modal_spec.js2
-rw-r--r--spec/javascripts/ide/components/new_dropdown/upload_spec.js2
-rw-r--r--spec/javascripts/ide/components/repo_commit_section_spec.js2
-rw-r--r--spec/javascripts/ide/components/shared/tokened_input_spec.js2
-rw-r--r--spec/javascripts/ide/helpers.js55
-rw-r--r--spec/javascripts/ide/stores/actions_spec.js59
-rw-r--r--spec/javascripts/ide/stores/modules/commit/actions_spec.js2
-rw-r--r--spec/javascripts/importer_status_spec.js2
-rw-r--r--spec/javascripts/issue_show/components/app_spec.js4
-rw-r--r--spec/javascripts/issue_show/components/description_spec.js2
-rw-r--r--spec/javascripts/jobs/components/job_app_spec.js4
-rw-r--r--spec/javascripts/jobs/components/job_container_item_spec.js2
-rw-r--r--spec/javascripts/jobs/components/job_log_spec.js2
-rw-r--r--spec/javascripts/jobs/components/manual_variables_form_spec.js26
-rw-r--r--spec/javascripts/jobs/components/stages_dropdown_spec.js2
-rw-r--r--spec/javascripts/jobs/mixins/delayed_job_mixin_spec.js2
-rw-r--r--spec/javascripts/jobs/store/actions_spec.js4
-rw-r--r--spec/javascripts/labels_issue_sidebar_spec.js2
-rw-r--r--spec/javascripts/landing_spec.js2
-rw-r--r--spec/javascripts/lib/utils/common_utils_spec.js24
-rw-r--r--spec/javascripts/line_highlighter_spec.js41
-rw-r--r--spec/javascripts/merge_request_spec.js1
-rw-r--r--spec/javascripts/monitoring/components/dashboard_spec.js136
-rw-r--r--spec/javascripts/monitoring/components/graph_group_spec.js117
-rw-r--r--spec/javascripts/monitoring/mock_data.js253
-rw-r--r--spec/javascripts/monitoring/utils_spec.js345
-rw-r--r--spec/javascripts/notebook/cells/markdown_spec.js4
-rw-r--r--spec/javascripts/notes/components/diff_with_note_spec.js2
-rw-r--r--spec/javascripts/notes/components/discussion_counter_spec.js37
-rw-r--r--spec/javascripts/notes/components/discussion_resolve_with_issue_button_spec.js2
-rw-r--r--spec/javascripts/notes/components/note_actions/reply_button_spec.js9
-rw-r--r--spec/javascripts/notes/components/note_actions_spec.js4
-rw-r--r--spec/javascripts/notes/components/note_awards_list_spec.js60
-rw-r--r--spec/javascripts/notes/components/note_form_spec.js2
-rw-r--r--spec/javascripts/notes/components/noteable_discussion_spec.js5
-rw-r--r--spec/javascripts/notes/components/noteable_note_spec.js2
-rw-r--r--spec/javascripts/notes/components/toggle_replies_widget_spec.js2
-rw-r--r--spec/javascripts/notes/stores/actions_spec.js43
-rw-r--r--spec/javascripts/pages/admin/jobs/index/components/stop_jobs_modal_spec.js3
-rw-r--r--spec/javascripts/pages/labels/components/promote_label_modal_spec.js2
-rw-r--r--spec/javascripts/pages/milestones/shared/components/delete_milestone_modal_spec.js3
-rw-r--r--spec/javascripts/pages/milestones/shared/components/promote_milestone_modal_spec.js2
-rw-r--r--spec/javascripts/pdf/index_spec.js2
-rw-r--r--spec/javascripts/pdf/page_spec.js2
-rw-r--r--spec/javascripts/performance_bar/index_spec.js4
-rw-r--r--spec/javascripts/persistent_user_callout_spec.js2
-rw-r--r--spec/javascripts/pipelines/graph/job_group_dropdown_spec.js2
-rw-r--r--spec/javascripts/pipelines/graph/linked_pipeline_spec.js116
-rw-r--r--spec/javascripts/pipelines/graph/linked_pipelines_column_spec.js6
-rw-r--r--spec/javascripts/pipelines/graph/linked_pipelines_mock_data.js410
-rw-r--r--spec/javascripts/pipelines/graph/stage_column_component_spec.js2
-rw-r--r--spec/javascripts/pipelines/pipeline_url_spec.js118
-rw-r--r--spec/javascripts/pipelines/pipelines_actions_spec.js4
-rw-r--r--spec/javascripts/pipelines/pipelines_spec.js4
-rw-r--r--spec/javascripts/pipelines/stage_spec.js2
-rw-r--r--spec/javascripts/profile/account/components/delete_account_modal_spec.js3
-rw-r--r--spec/javascripts/profile/account/components/update_username_spec.js4
-rw-r--r--spec/javascripts/related_merge_requests/components/related_merge_requests_spec.js2
-rw-r--r--spec/javascripts/related_merge_requests/store/actions_spec.js2
-rw-r--r--spec/javascripts/releases/list/components/app_spec.js43
-rw-r--r--spec/javascripts/releases/list/store/actions_spec.js51
-rw-r--r--spec/javascripts/releases/list/store/mutations_spec.js12
-rw-r--r--spec/javascripts/releases/mock_data.js18
-rw-r--r--spec/javascripts/reports/components/modal_open_name_spec.js2
-rw-r--r--spec/javascripts/reports/components/summary_row_spec.js2
-rw-r--r--spec/javascripts/reports/store/actions_spec.js4
-rw-r--r--spec/javascripts/sidebar/assignee_title_spec.js2
-rw-r--r--spec/javascripts/sidebar/assignees_spec.js248
-rw-r--r--spec/javascripts/sidebar/components/time_tracking/time_tracker_spec.js3
-rw-r--r--spec/javascripts/sidebar/lock/edit_form_buttons_spec.js2
-rw-r--r--spec/javascripts/sidebar/lock/lock_issue_sidebar_spec.js2
-rw-r--r--spec/javascripts/sidebar/mock_data.js214
-rw-r--r--spec/javascripts/sidebar/participants_spec.js2
-rw-r--r--spec/javascripts/sidebar/sidebar_assignees_spec.js2
-rw-r--r--spec/javascripts/sidebar/sidebar_subscriptions_spec.js2
-rw-r--r--spec/javascripts/sidebar/subscriptions_spec.js4
-rw-r--r--spec/javascripts/smart_interval_spec.js2
-rw-r--r--spec/javascripts/test_bundle.js44
-rw-r--r--spec/javascripts/user_popovers_spec.js2
-rw-r--r--spec/javascripts/vue_mr_widget/components/deployment_spec.js313
-rw-r--r--spec/javascripts/vue_mr_widget/components/deployment_stop_button_spec.js95
-rw-r--r--spec/javascripts/vue_mr_widget/components/mr_widget_alert_message_spec.js2
-rw-r--r--spec/javascripts/vue_mr_widget/components/mr_widget_author_spec.js2
-rw-r--r--spec/javascripts/vue_mr_widget/components/mr_widget_author_time_spec.js2
-rw-r--r--spec/javascripts/vue_mr_widget/components/mr_widget_header_spec.js2
-rw-r--r--spec/javascripts/vue_mr_widget/components/mr_widget_memory_usage_spec.js3
-rw-r--r--spec/javascripts/vue_mr_widget/components/mr_widget_merge_help_spec.js2
-rw-r--r--spec/javascripts/vue_mr_widget/components/mr_widget_pipeline_container_spec.js7
-rw-r--r--spec/javascripts/vue_mr_widget/components/mr_widget_pipeline_spec.js42
-rw-r--r--spec/javascripts/vue_mr_widget/components/mr_widget_rebase_spec.js2
-rw-r--r--spec/javascripts/vue_mr_widget/components/mr_widget_related_links_spec.js2
-rw-r--r--spec/javascripts/vue_mr_widget/components/mr_widget_status_icon_spec.js2
-rw-r--r--spec/javascripts/vue_mr_widget/components/review_app_link_spec.js11
-rw-r--r--spec/javascripts/vue_mr_widget/components/states/mr_widget_archived_spec.js2
-rw-r--r--spec/javascripts/vue_mr_widget/components/states/mr_widget_auto_merge_enabled_spec.js4
-rw-r--r--spec/javascripts/vue_mr_widget/components/states/mr_widget_checking_spec.js2
-rw-r--r--spec/javascripts/vue_mr_widget/components/states/mr_widget_closed_spec.js2
-rw-r--r--spec/javascripts/vue_mr_widget/components/states/mr_widget_conflicts_spec.js2
-rw-r--r--spec/javascripts/vue_mr_widget/components/states/mr_widget_failed_to_merge_spec.js2
-rw-r--r--spec/javascripts/vue_mr_widget/components/states/mr_widget_merged_spec.js2
-rw-r--r--spec/javascripts/vue_mr_widget/components/states/mr_widget_merging_spec.js2
-rw-r--r--spec/javascripts/vue_mr_widget/components/states/mr_widget_missing_branch_spec.js2
-rw-r--r--spec/javascripts/vue_mr_widget/components/states/mr_widget_not_allowed_spec.js2
-rw-r--r--spec/javascripts/vue_mr_widget/components/states/mr_widget_pipeline_blocked_spec.js2
-rw-r--r--spec/javascripts/vue_mr_widget/components/states/mr_widget_pipeline_failed_spec.js2
-rw-r--r--spec/javascripts/vue_mr_widget/components/states/mr_widget_ready_to_merge_spec.js35
-rw-r--r--spec/javascripts/vue_mr_widget/components/states/mr_widget_sha_mismatch_spec.js2
-rw-r--r--spec/javascripts/vue_mr_widget/components/states/mr_widget_unresolved_discussions_spec.js2
-rw-r--r--spec/javascripts/vue_mr_widget/mock_data.js26
-rw-r--r--spec/javascripts/vue_mr_widget/mr_widget_options_spec.js106
-rw-r--r--spec/javascripts/vue_mr_widget/stores/artifacts_list/actions_spec.js4
-rw-r--r--spec/javascripts/vue_shared/components/bar_chart_spec.js2
-rw-r--r--spec/javascripts/vue_shared/components/ci_badge_link_spec.js2
-rw-r--r--spec/javascripts/vue_shared/components/ci_icon_spec.js2
-rw-r--r--spec/javascripts/vue_shared/components/clipboard_button_spec.js51
-rw-r--r--spec/javascripts/vue_shared/components/content_viewer/content_viewer_spec.js4
-rw-r--r--spec/javascripts/vue_shared/components/deprecated_modal_2_spec.js2
-rw-r--r--spec/javascripts/vue_shared/components/deprecated_modal_spec.js2
-rw-r--r--spec/javascripts/vue_shared/components/diff_viewer/diff_viewer_spec.js2
-rw-r--r--spec/javascripts/vue_shared/components/diff_viewer/viewers/image_diff_viewer_spec.js2
-rw-r--r--spec/javascripts/vue_shared/components/dropdown/dropdown_button_spec.js3
-rw-r--r--spec/javascripts/vue_shared/components/dropdown/dropdown_hidden_input_spec.js3
-rw-r--r--spec/javascripts/vue_shared/components/dropdown/dropdown_search_input_spec.js52
-rw-r--r--spec/javascripts/vue_shared/components/expand_button_spec.js32
-rw-r--r--spec/javascripts/vue_shared/components/file_finder/index_spec.js4
-rw-r--r--spec/javascripts/vue_shared/components/file_finder/item_spec.js2
-rw-r--r--spec/javascripts/vue_shared/components/file_row_spec.js2
-rw-r--r--spec/javascripts/vue_shared/components/filtered_search_dropdown_spec.js2
-rw-r--r--spec/javascripts/vue_shared/components/header_ci_component_spec.js2
-rw-r--r--spec/javascripts/vue_shared/components/icon_spec.js4
-rw-r--r--spec/javascripts/vue_shared/components/loading_button_spec.js2
-rw-r--r--spec/javascripts/vue_shared/components/markdown/field_spec.js173
-rw-r--r--spec/javascripts/vue_shared/components/markdown/toolbar_spec.js2
-rw-r--r--spec/javascripts/vue_shared/components/memory_graph_spec.js131
-rw-r--r--spec/javascripts/vue_shared/components/mock_data.js67
-rw-r--r--spec/javascripts/vue_shared/components/navigation_tabs_spec.js2
-rw-r--r--spec/javascripts/vue_shared/components/pagination/graphql_pagination_spec.js8
-rw-r--r--spec/javascripts/vue_shared/components/panel_resizer_spec.js2
-rw-r--r--spec/javascripts/vue_shared/components/pikaday_spec.js2
-rw-r--r--spec/javascripts/vue_shared/components/project_avatar/default_spec.js4
-rw-r--r--spec/javascripts/vue_shared/components/project_selector/project_list_item_spec.js2
-rw-r--r--spec/javascripts/vue_shared/components/project_selector/project_selector_spec.js4
-rw-r--r--spec/javascripts/vue_shared/components/smart_virtual_list_spec.js2
-rw-r--r--spec/javascripts/vue_shared/components/stacked_progress_bar_spec.js9
-rw-r--r--spec/javascripts/vue_shared/components/toggle_button_spec.js2
-rw-r--r--spec/javascripts/vue_shared/components/user_avatar/user_avatar_link_spec.js109
-rw-r--r--spec/javascripts/vue_shared/components/user_avatar/user_avatar_svg_spec.js2
-rw-r--r--spec/javascripts/vue_shared/translate_spec.js2
-rw-r--r--spec/javascripts/vuex_shared/modules/modal/actions_spec.js2
-rw-r--r--spec/lib/api/entities/release_spec.rb40
-rw-r--r--spec/lib/api/helpers/pagination_spec.rb56
-rw-r--r--spec/lib/api/helpers/related_resources_helpers_spec.rb1
-rw-r--r--spec/lib/api/support/git_access_actor_spec.rb15
-rw-r--r--spec/lib/backup/manager_spec.rb36
-rw-r--r--spec/lib/backup/repository_spec.rb9
-rw-r--r--spec/lib/backup/uploads_spec.rb1
-rw-r--r--spec/lib/banzai/filter/broadcast_message_sanitization_filter_spec.rb51
-rw-r--r--spec/lib/banzai/filter/commit_reference_filter_spec.rb4
-rw-r--r--spec/lib/banzai/filter/inline_metrics_redactor_filter_spec.rb26
-rw-r--r--spec/lib/banzai/filter/markdown_filter_spec.rb8
-rw-r--r--spec/lib/banzai/filter/milestone_reference_filter_spec.rb12
-rw-r--r--spec/lib/banzai/filter/reference_redactor_filter_spec.rb8
-rw-r--r--spec/lib/banzai/filter/relative_link_filter_spec.rb12
-rw-r--r--spec/lib/banzai/filter/sanitization_filter_spec.rb180
-rw-r--r--spec/lib/banzai/filter/syntax_highlight_filter_spec.rb8
-rw-r--r--spec/lib/banzai/object_renderer_spec.rb8
-rw-r--r--spec/lib/banzai/pipeline/broadcast_message_pipeline_spec.rb23
-rw-r--r--spec/lib/banzai/pipeline/wiki_pipeline_spec.rb34
-rw-r--r--spec/lib/banzai/reference_parser/commit_parser_spec.rb25
-rw-r--r--spec/lib/banzai/reference_parser/issue_parser_spec.rb1
-rw-r--r--spec/lib/banzai/reference_parser/mentioned_group_parser_spec.rb (renamed from spec/lib/banzai/reference_parser/mentioned_users_by_group_parser_spec.rb)2
-rw-r--r--spec/lib/banzai/reference_parser/mentioned_project_parser_spec.rb (renamed from spec/lib/banzai/reference_parser/mentioned_users_by_project_parser_spec.rb)2
-rw-r--r--spec/lib/banzai/reference_parser/snippet_parser_spec.rb1
-rw-r--r--spec/lib/banzai/reference_parser/user_parser_spec.rb20
-rw-r--r--spec/lib/banzai/reference_redactor_spec.rb10
-rw-r--r--spec/lib/bitbucket/connection_spec.rb16
-rw-r--r--spec/lib/constraints/project_url_constrainer_spec.rb2
-rw-r--r--spec/lib/constraints/user_url_constrainer_spec.rb2
-rw-r--r--spec/lib/container_registry/tag_spec.rb23
-rw-r--r--spec/lib/extracts_path_spec.rb4
-rw-r--r--spec/lib/gitaly/server_spec.rb22
-rw-r--r--spec/lib/gitlab/application_rate_limiter_spec.rb (renamed from spec/lib/gitlab/action_rate_limiter_spec.rb)32
-rw-r--r--spec/lib/gitlab/asciidoc_spec.rb3
-rw-r--r--spec/lib/gitlab/auth/auth_finders_spec.rb (renamed from spec/lib/gitlab/auth/user_auth_finders_spec.rb)162
-rw-r--r--spec/lib/gitlab/auth/current_user_mode_spec.rb115
-rw-r--r--spec/lib/gitlab/auth/ip_rate_limiter_spec.rb32
-rw-r--r--spec/lib/gitlab/auth/ldap/access_spec.rb4
-rw-r--r--spec/lib/gitlab/auth/ldap/auth_hash_spec.rb4
-rw-r--r--spec/lib/gitlab/auth/ldap/authentication_spec.rb15
-rw-r--r--spec/lib/gitlab/auth/o_auth/user_spec.rb25
-rw-r--r--spec/lib/gitlab/auth/request_authenticator_spec.rb24
-rw-r--r--spec/lib/gitlab/auth_spec.rb107
-rw-r--r--spec/lib/gitlab/background_migration/backfill_project_fullpath_in_repo_config_spec.rb3
-rw-r--r--spec/lib/gitlab/bare_repository_import/importer_spec.rb4
-rw-r--r--spec/lib/gitlab/branch_push_merge_commit_analyzer_spec.rb1
-rw-r--r--spec/lib/gitlab/cache/ci/project_pipeline_status_spec.rb4
-rw-r--r--spec/lib/gitlab/chat/command_spec.rb2
-rw-r--r--spec/lib/gitlab/checks/branch_check_spec.rb4
-rw-r--r--spec/lib/gitlab/checks/change_access_spec.rb20
-rw-r--r--spec/lib/gitlab/ci/ansi2json/result_spec.rb42
-rw-r--r--spec/lib/gitlab/ci/ansi2json/style_spec.rb4
-rw-r--r--spec/lib/gitlab/ci/build/artifacts/metadata/entry_spec.rb1
-rw-r--r--spec/lib/gitlab/ci/build/context/build_spec.rb2
-rw-r--r--spec/lib/gitlab/ci/build/context/global_spec.rb2
-rw-r--r--spec/lib/gitlab/ci/build/credentials/factory_spec.rb12
-rw-r--r--spec/lib/gitlab/ci/build/prerequisite/kubernetes_namespace_spec.rb99
-rw-r--r--spec/lib/gitlab/ci/config/entry/default_spec.rb3
-rw-r--r--spec/lib/gitlab/ci/config/entry/environment_spec.rb53
-rw-r--r--spec/lib/gitlab/ci/config/entry/job_spec.rb68
-rw-r--r--spec/lib/gitlab/ci/config/entry/kubernetes_spec.rb56
-rw-r--r--spec/lib/gitlab/ci/config/entry/need_spec.rb168
-rw-r--r--spec/lib/gitlab/ci/config/entry/needs_spec.rb101
-rw-r--r--spec/lib/gitlab/ci/config/external/file/project_spec.rb11
-rw-r--r--spec/lib/gitlab/ci/config/external/file/remote_spec.rb5
-rw-r--r--spec/lib/gitlab/ci/config/external/file/template_spec.rb5
-rw-r--r--spec/lib/gitlab/ci/config/external/mapper_spec.rb5
-rw-r--r--spec/lib/gitlab/ci/config/normalizer_spec.rb10
-rw-r--r--spec/lib/gitlab/ci/config_spec.rb32
-rw-r--r--spec/lib/gitlab/ci/cron_parser_spec.rb16
-rw-r--r--spec/lib/gitlab/ci/pipeline/chain/build_spec.rb2
-rw-r--r--spec/lib/gitlab/ci/pipeline/chain/config/content_spec.rb221
-rw-r--r--spec/lib/gitlab/ci/pipeline/chain/validate/external_spec.rb103
-rw-r--r--spec/lib/gitlab/ci/pipeline/seed/build_spec.rb2
-rw-r--r--spec/lib/gitlab/ci/pipeline/seed/stage_spec.rb8
-rw-r--r--spec/lib/gitlab/ci/status/build/factory_spec.rb42
-rw-r--r--spec/lib/gitlab/ci/status/pipeline/blocked_spec.rb1
-rw-r--r--spec/lib/gitlab/ci/status/pipeline/delayed_spec.rb1
-rw-r--r--spec/lib/gitlab/ci/templates/auto_devops_gitlab_ci_yaml_spec.rb110
-rw-r--r--spec/lib/gitlab/ci/templates/managed_cluster_applications_gitlab_ci_yaml_spec.rb39
-rw-r--r--spec/lib/gitlab/ci/trace/chunked_io_spec.rb5
-rw-r--r--spec/lib/gitlab/ci/trace/section_parser_spec.rb1
-rw-r--r--spec/lib/gitlab/ci/yaml_processor_spec.rb193
-rw-r--r--spec/lib/gitlab/cleanup/orphan_job_artifact_files_spec.rb1
-rw-r--r--spec/lib/gitlab/cycle_analytics/shared_stage_spec.rb4
-rw-r--r--spec/lib/gitlab/cycle_analytics/usage_data_spec.rb4
-rw-r--r--spec/lib/gitlab/danger/changelog_spec.rb163
-rw-r--r--spec/lib/gitlab/danger/danger_spec_helper.rb17
-rw-r--r--spec/lib/gitlab/danger/helper_spec.rb17
-rw-r--r--spec/lib/gitlab/danger/teammate_spec.rb14
-rw-r--r--spec/lib/gitlab/data_builder/build_spec.rb7
-rw-r--r--spec/lib/gitlab/data_builder/pipeline_spec.rb1
-rw-r--r--spec/lib/gitlab/database/migration_helpers_spec.rb199
-rw-r--r--spec/lib/gitlab/database/obsolete_ignored_columns_spec.rb30
-rw-r--r--spec/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_base_spec.rb2
-rw-r--r--spec/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_namespaces_spec.rb1
-rw-r--r--spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb6
-rw-r--r--spec/lib/gitlab/database_spec.rb27
-rw-r--r--spec/lib/gitlab/diff/deprecated_highlight_cache_spec.rb70
-rw-r--r--spec/lib/gitlab/diff/diff_refs_spec.rb3
-rw-r--r--spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb4
-rw-r--r--spec/lib/gitlab/diff/file_collection/merge_request_diff_spec.rb39
-rw-r--r--spec/lib/gitlab/diff/highlight_cache_spec.rb123
-rw-r--r--spec/lib/gitlab/diff/highlight_spec.rb4
-rw-r--r--spec/lib/gitlab/diff/line_mapper_spec.rb1
-rw-r--r--spec/lib/gitlab/diff/line_spec.rb44
-rw-r--r--spec/lib/gitlab/diff/parallel_diff_spec.rb1
-rw-r--r--spec/lib/gitlab/discussions_diff/highlight_cache_spec.rb9
-rw-r--r--spec/lib/gitlab/email/handler/create_merge_request_handler_spec.rb5
-rw-r--r--spec/lib/gitlab/email/handler_spec.rb2
-rw-r--r--spec/lib/gitlab/error_tracking/stack_trace_highlight_decorator_spec.rb58
-rw-r--r--spec/lib/gitlab/error_tracking_spec.rb172
-rw-r--r--spec/lib/gitlab/etag_caching/middleware_spec.rb16
-rw-r--r--spec/lib/gitlab/etag_caching/router_spec.rb9
-rw-r--r--spec/lib/gitlab/experimentation_spec.rb4
-rw-r--r--spec/lib/gitlab/external_authorization/client_spec.rb1
-rw-r--r--spec/lib/gitlab/external_authorization/response_spec.rb1
-rw-r--r--spec/lib/gitlab/file_detector_spec.rb16
-rw-r--r--spec/lib/gitlab/file_finder_spec.rb1
-rw-r--r--spec/lib/gitlab/fogbugz_import/client_spec.rb4
-rw-r--r--spec/lib/gitlab/fogbugz_import/importer_spec.rb73
-rw-r--r--spec/lib/gitlab/gfm/reference_rewriter_spec.rb6
-rw-r--r--spec/lib/gitlab/git/attributes_at_ref_parser_spec.rb2
-rw-r--r--spec/lib/gitlab/git/attributes_parser_spec.rb2
-rw-r--r--spec/lib/gitlab/git/blame_spec.rb2
-rw-r--r--spec/lib/gitlab/git/blob_spec.rb6
-rw-r--r--spec/lib/gitlab/git/branch_spec.rb6
-rw-r--r--spec/lib/gitlab/git/bundle_file_spec.rb2
-rw-r--r--spec/lib/gitlab/git/commit_spec.rb42
-rw-r--r--spec/lib/gitlab/git/compare_spec.rb2
-rw-r--r--spec/lib/gitlab/git/conflict/file_spec.rb6
-rw-r--r--spec/lib/gitlab/git/conflict/parser_spec.rb4
-rw-r--r--spec/lib/gitlab/git/diff_collection_spec.rb2
-rw-r--r--spec/lib/gitlab/git/diff_spec.rb3
-rw-r--r--spec/lib/gitlab/git/gitmodules_parser_spec.rb2
-rw-r--r--spec/lib/gitlab/git/hook_env_spec.rb3
-rw-r--r--spec/lib/gitlab/git/lfs_changes_spec.rb2
-rw-r--r--spec/lib/gitlab/git/lfs_pointer_file_spec.rb2
-rw-r--r--spec/lib/gitlab/git/merge_base_spec.rb1
-rw-r--r--spec/lib/gitlab/git/pre_receive_error_spec.rb2
-rw-r--r--spec/lib/gitlab/git/push_spec.rb2
-rw-r--r--spec/lib/gitlab/git/raw_diff_change_spec.rb2
-rw-r--r--spec/lib/gitlab/git/remote_mirror_spec.rb2
-rw-r--r--spec/lib/gitlab/git/remote_repository_spec.rb3
-rw-r--r--spec/lib/gitlab/git/repository_cleaner_spec.rb2
-rw-r--r--spec/lib/gitlab/git/repository_spec.rb3
-rw-r--r--spec/lib/gitlab/git/tag_spec.rb2
-rw-r--r--spec/lib/gitlab/git/tree_spec.rb6
-rw-r--r--spec/lib/gitlab/git/user_spec.rb4
-rw-r--r--spec/lib/gitlab/git/util_spec.rb2
-rw-r--r--spec/lib/gitlab/git/wiki_spec.rb2
-rw-r--r--spec/lib/gitlab/git/wraps_gitaly_errors_spec.rb2
-rw-r--r--spec/lib/gitlab/git_access_spec.rb4
-rw-r--r--spec/lib/gitlab/gitaly_client/cleanup_service_spec.rb9
-rw-r--r--spec/lib/gitlab/gitaly_client/commit_service_spec.rb1
-rw-r--r--spec/lib/gitlab/gitaly_client/ref_service_spec.rb1
-rw-r--r--spec/lib/gitlab/gitaly_client_spec.rb11
-rw-r--r--spec/lib/gitlab/github_import/importer/diff_note_importer_spec.rb6
-rw-r--r--spec/lib/gitlab/github_import/importer/issue_importer_spec.rb2
-rw-r--r--spec/lib/gitlab/github_import/importer/label_links_importer_spec.rb6
-rw-r--r--spec/lib/gitlab/github_import/importer/labels_importer_spec.rb5
-rw-r--r--spec/lib/gitlab/github_import/importer/milestones_importer_spec.rb5
-rw-r--r--spec/lib/gitlab/github_import/importer/note_importer_spec.rb6
-rw-r--r--spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb5
-rw-r--r--spec/lib/gitlab/github_import/sequential_importer_spec.rb5
-rw-r--r--spec/lib/gitlab/gitlab_import/client_spec.rb14
-rw-r--r--spec/lib/gitlab/gitlab_import/importer_spec.rb2
-rw-r--r--spec/lib/gitlab/gitlab_import/project_creator_spec.rb2
-rw-r--r--spec/lib/gitlab/google_code_import/client_spec.rb3
-rw-r--r--spec/lib/gitlab/google_code_import/importer_spec.rb4
-rw-r--r--spec/lib/gitlab/google_code_import/project_creator_spec.rb2
-rw-r--r--spec/lib/gitlab/gpg/commit_spec.rb2
-rw-r--r--spec/lib/gitlab/gpg/invalid_gpg_signature_updater_spec.rb2
-rw-r--r--spec/lib/gitlab/gpg_spec.rb28
-rw-r--r--spec/lib/gitlab/grafana_embed_usage_data_spec.rb70
-rw-r--r--spec/lib/gitlab/grape_logging/loggers/exception_logger_spec.rb2
-rw-r--r--spec/lib/gitlab/grape_logging/loggers/queue_duration_logger_spec.rb2
-rw-r--r--spec/lib/gitlab/graphql/authorize/authorize_field_service_spec.rb2
-rw-r--r--spec/lib/gitlab/graphql/authorize/authorize_resource_spec.rb3
-rw-r--r--spec/lib/gitlab/graphql/connections/filterable_array_connection_spec.rb1
-rw-r--r--spec/lib/gitlab/graphql/connections/keyset/connection_spec.rb21
-rw-r--r--spec/lib/gitlab/graphql/connections/keyset/legacy_keyset_connection_spec.rb127
-rw-r--r--spec/lib/gitlab/graphql/loaders/batch_lfs_oid_loader_spec.rb2
-rw-r--r--spec/lib/gitlab/graphql/loaders/batch_model_loader_spec.rb2
-rw-r--r--spec/lib/gitlab/graphs/commits_spec.rb2
-rw-r--r--spec/lib/gitlab/health_checks/db_check_spec.rb2
-rw-r--r--spec/lib/gitlab/health_checks/gitaly_check_spec.rb2
-rw-r--r--spec/lib/gitlab/health_checks/master_check_spec.rb2
-rw-r--r--spec/lib/gitlab/health_checks/probes/collection_spec.rb2
-rw-r--r--spec/lib/gitlab/health_checks/puma_check_spec.rb2
-rw-r--r--spec/lib/gitlab/health_checks/redis/cache_check_spec.rb2
-rw-r--r--spec/lib/gitlab/health_checks/redis/queues_check_spec.rb2
-rw-r--r--spec/lib/gitlab/health_checks/redis/redis_check_spec.rb2
-rw-r--r--spec/lib/gitlab/health_checks/redis/shared_state_check_spec.rb2
-rw-r--r--spec/lib/gitlab/health_checks/simple_check_shared.rb2
-rw-r--r--spec/lib/gitlab/health_checks/unicorn_check_spec.rb2
-rw-r--r--spec/lib/gitlab/hook_data/base_builder_spec.rb3
-rw-r--r--spec/lib/gitlab/hook_data/issuable_builder_spec.rb2
-rw-r--r--spec/lib/gitlab/hook_data/issue_builder_spec.rb2
-rw-r--r--spec/lib/gitlab/hook_data/merge_request_builder_spec.rb2
-rw-r--r--spec/lib/gitlab/http_io_spec.rb4
-rw-r--r--spec/lib/gitlab/i18n/metadata_entry_spec.rb2
-rw-r--r--spec/lib/gitlab/i18n/po_linter_spec.rb2
-rw-r--r--spec/lib/gitlab/i18n/translation_entry_spec.rb3
-rw-r--r--spec/lib/gitlab/import/merge_request_helpers_spec.rb2
-rw-r--r--spec/lib/gitlab/import_export/after_export_strategies/base_after_export_strategy_spec.rb2
-rw-r--r--spec/lib/gitlab/import_export/after_export_strategies/web_upload_strategy_spec.rb2
-rw-r--r--spec/lib/gitlab/import_export/after_export_strategy_builder_spec.rb2
-rw-r--r--spec/lib/gitlab/import_export/all_models.yml16
-rw-r--r--spec/lib/gitlab/import_export/attribute_cleaner_spec.rb2
-rw-r--r--spec/lib/gitlab/import_export/attribute_configuration_spec.rb14
-rw-r--r--spec/lib/gitlab/import_export/avatar_restorer_spec.rb12
-rw-r--r--spec/lib/gitlab/import_export/avatar_saver_spec.rb6
-rw-r--r--spec/lib/gitlab/import_export/fast_hash_serializer_spec.rb2
-rw-r--r--spec/lib/gitlab/import_export/file_importer_spec.rb22
-rw-r--r--spec/lib/gitlab/import_export/fork_spec.rb6
-rw-r--r--spec/lib/gitlab/import_export/group_project_object_builder_spec.rb2
-rw-r--r--spec/lib/gitlab/import_export/hash_util_spec.rb2
-rw-r--r--spec/lib/gitlab/import_export/import_export_spec.rb2
-rw-r--r--spec/lib/gitlab/import_export/importer_spec.rb2
-rw-r--r--spec/lib/gitlab/import_export/lfs_restorer_spec.rb3
-rw-r--r--spec/lib/gitlab/import_export/lfs_saver_spec.rb6
-rw-r--r--spec/lib/gitlab/import_export/members_mapper_spec.rb15
-rw-r--r--spec/lib/gitlab/import_export/merge_request_parser_spec.rb10
-rw-r--r--spec/lib/gitlab/import_export/model_configuration_spec.rb13
-rw-r--r--spec/lib/gitlab/import_export/project_tree_restorer_spec.rb70
-rw-r--r--spec/lib/gitlab/import_export/project_tree_saver_spec.rb2
-rw-r--r--spec/lib/gitlab/import_export/reader_spec.rb21
-rw-r--r--spec/lib/gitlab/import_export/references_configuration_spec.rb48
-rw-r--r--spec/lib/gitlab/import_export/relation_factory_spec.rb4
-rw-r--r--spec/lib/gitlab/import_export/relation_tree_restorer_spec.rb67
-rw-r--r--spec/lib/gitlab/import_export/repo_restorer_spec.rb6
-rw-r--r--spec/lib/gitlab/import_export/repo_saver_spec.rb6
-rw-r--r--spec/lib/gitlab/import_export/safe_model_attributes.yml38
-rw-r--r--spec/lib/gitlab/import_export/saver_spec.rb7
-rw-r--r--spec/lib/gitlab/import_export/shared_spec.rb24
-rw-r--r--spec/lib/gitlab/import_export/uploads_manager_spec.rb6
-rw-r--r--spec/lib/gitlab/import_export/uploads_restorer_spec.rb6
-rw-r--r--spec/lib/gitlab/import_export/uploads_saver_spec.rb6
-rw-r--r--spec/lib/gitlab/import_export/version_checker_spec.rb14
-rw-r--r--spec/lib/gitlab/import_export/wiki_repo_saver_spec.rb6
-rw-r--r--spec/lib/gitlab/import_export/wiki_restorer_spec.rb2
-rw-r--r--spec/lib/gitlab/insecure_key_fingerprint_spec.rb9
-rw-r--r--spec/lib/gitlab/json_cache_spec.rb7
-rw-r--r--spec/lib/gitlab/kubernetes/config_map_spec.rb3
-rw-r--r--spec/lib/gitlab/kubernetes/helm/api_spec.rb2
-rw-r--r--spec/lib/gitlab/kubernetes/helm/base_command_spec.rb2
-rw-r--r--spec/lib/gitlab/kubernetes/helm/delete_command_spec.rb53
-rw-r--r--spec/lib/gitlab/kubernetes/helm/init_command_spec.rb2
-rw-r--r--spec/lib/gitlab/kubernetes/helm/install_command_spec.rb86
-rw-r--r--spec/lib/gitlab/kubernetes/helm/patch_command_spec.rb218
-rw-r--r--spec/lib/gitlab/kubernetes/helm/pod_spec.rb2
-rw-r--r--spec/lib/gitlab/kubernetes/kubectl_cmd_spec.rb16
-rw-r--r--spec/lib/gitlab/kubernetes/namespace_spec.rb3
-rw-r--r--spec/lib/gitlab/kubernetes_spec.rb1
-rw-r--r--spec/lib/gitlab/legacy_github_import/branch_formatter_spec.rb2
-rw-r--r--spec/lib/gitlab/legacy_github_import/client_spec.rb2
-rw-r--r--spec/lib/gitlab/legacy_github_import/comment_formatter_spec.rb2
-rw-r--r--spec/lib/gitlab/legacy_github_import/importer_spec.rb4
-rw-r--r--spec/lib/gitlab/legacy_github_import/issuable_formatter_spec.rb2
-rw-r--r--spec/lib/gitlab/legacy_github_import/issue_formatter_spec.rb2
-rw-r--r--spec/lib/gitlab/legacy_github_import/label_formatter_spec.rb2
-rw-r--r--spec/lib/gitlab/legacy_github_import/milestone_formatter_spec.rb3
-rw-r--r--spec/lib/gitlab/legacy_github_import/project_creator_spec.rb2
-rw-r--r--spec/lib/gitlab/legacy_github_import/pull_request_formatter_spec.rb2
-rw-r--r--spec/lib/gitlab/lets_encrypt/client_spec.rb2
-rw-r--r--spec/lib/gitlab/mail_room/mail_room_spec.rb106
-rw-r--r--spec/lib/gitlab/markdown_cache/active_record/extension_spec.rb5
-rw-r--r--spec/lib/gitlab/metrics/dashboard/service_selector_spec.rb6
-rw-r--r--spec/lib/gitlab/metrics/instrumentation_spec.rb8
-rw-r--r--spec/lib/gitlab/metrics/requests_rack_middleware_spec.rb1
-rw-r--r--spec/lib/gitlab/metrics/samplers/unicorn_sampler_spec.rb1
-rw-r--r--spec/lib/gitlab/middleware/go_spec.rb53
-rw-r--r--spec/lib/gitlab/pages_spec.rb4
-rw-r--r--spec/lib/gitlab/pagination/keyset/page_spec.rb66
-rw-r--r--spec/lib/gitlab/pagination/keyset/pager_spec.rb68
-rw-r--r--spec/lib/gitlab/pagination/keyset/request_context_spec.rb115
-rw-r--r--spec/lib/gitlab/pagination/keyset_spec.rb62
-rw-r--r--spec/lib/gitlab/phabricator_import/cache/map_spec.rb1
-rw-r--r--spec/lib/gitlab/phabricator_import/importer_spec.rb1
-rw-r--r--spec/lib/gitlab/phabricator_import/project_creator_spec.rb1
-rw-r--r--spec/lib/gitlab/phabricator_import/user_finder_spec.rb1
-rw-r--r--spec/lib/gitlab/project_search_results_spec.rb1
-rw-r--r--spec/lib/gitlab/project_template_spec.rb1
-rw-r--r--spec/lib/gitlab/prometheus/queries/deployment_query_spec.rb2
-rw-r--r--spec/lib/gitlab/prometheus/queries/knative_invocation_query_spec.rb6
-rw-r--r--spec/lib/gitlab/prometheus/query_variables_spec.rb2
-rw-r--r--spec/lib/gitlab/prometheus_client_spec.rb1
-rw-r--r--spec/lib/gitlab/puma_logging/json_formatter_spec.rb11
-rw-r--r--spec/lib/gitlab/query_limiting/middleware_spec.rb5
-rw-r--r--spec/lib/gitlab/quick_actions/substitution_definition_spec.rb1
-rw-r--r--spec/lib/gitlab/regex_spec.rb6
-rw-r--r--spec/lib/gitlab/request_context_spec.rb4
-rw-r--r--spec/lib/gitlab/sanitizers/svg_spec.rb4
-rw-r--r--spec/lib/gitlab/sentry_spec.rb123
-rw-r--r--spec/lib/gitlab/sherlock/transaction_spec.rb5
-rw-r--r--spec/lib/gitlab/sidekiq_middleware/correlation_injector_spec.rb4
-rw-r--r--spec/lib/gitlab/sidekiq_middleware/metrics_spec.rb251
-rw-r--r--spec/lib/gitlab/sidekiq_middleware_spec.rb143
-rw-r--r--spec/lib/gitlab/slash_commands/command_spec.rb2
-rw-r--r--spec/lib/gitlab/slash_commands/issue_search_spec.rb1
-rw-r--r--spec/lib/gitlab/slash_commands/presenters/issue_comment_spec.rb1
-rw-r--r--spec/lib/gitlab/slash_commands/run_spec.rb35
-rw-r--r--spec/lib/gitlab/sql/pattern_spec.rb10
-rw-r--r--spec/lib/gitlab/ssh_public_key_spec.rb28
-rw-r--r--spec/lib/gitlab/string_range_marker_spec.rb2
-rw-r--r--spec/lib/gitlab/string_regex_marker_spec.rb4
-rw-r--r--spec/lib/gitlab/throttle_spec.rb87
-rw-r--r--spec/lib/gitlab/tracking_spec.rb4
-rw-r--r--spec/lib/gitlab/url_builder_spec.rb20
-rw-r--r--spec/lib/gitlab/usage_data_spec.rb25
-rw-r--r--spec/lib/gitlab/visibility_level_spec.rb24
-rw-r--r--spec/lib/gitlab/workhorse_spec.rb2
-rw-r--r--spec/lib/google_api/auth_spec.rb5
-rw-r--r--spec/lib/google_api/cloud_platform/client_spec.rb7
-rw-r--r--spec/lib/json_web_token/rsa_token_spec.rb1
-rw-r--r--spec/lib/marginalia_spec.rb173
-rw-r--r--spec/lib/omni_auth/strategies/saml_spec.rb4
-rw-r--r--spec/lib/quality/helm_client_spec.rb25
-rw-r--r--spec/lib/quality/kubernetes_client_spec.rb74
-rw-r--r--spec/lib/quality/test_level_spec.rb4
-rw-r--r--spec/lib/sentry/client/projects_spec.rb119
-rw-r--r--spec/lib/sentry/client_spec.rb253
-rw-r--r--spec/lib/sentry/pagination_parser_spec.rb63
-rw-r--r--spec/mailers/emails/profile_spec.rb34
-rw-r--r--spec/mailers/notify_spec.rb40
-rw-r--r--spec/migrations/20191015154408_drop_merge_requests_require_code_owner_approval_from_projects_spec.rb56
-rw-r--r--spec/migrations/20191125114345_add_admin_mode_protected_path_spec.rb50
-rw-r--r--spec/migrations/insert_project_hooks_plan_limits_spec.rb67
-rw-r--r--spec/migrations/migrate_ops_feature_flags_scopes_target_user_ids_spec.rb137
-rw-r--r--spec/migrations/nullify_users_role_spec.rb33
-rw-r--r--spec/migrations/update_minimum_password_length_spec.rb30
-rw-r--r--spec/models/active_session_spec.rb111
-rw-r--r--spec/models/application_setting_spec.rb8
-rw-r--r--spec/models/blob_spec.rb17
-rw-r--r--spec/models/broadcast_message_spec.rb131
-rw-r--r--spec/models/ci/build_need_spec.rb7
-rw-r--r--spec/models/ci/build_spec.rb277
-rw-r--r--spec/models/ci/job_artifact_spec.rb20
-rw-r--r--spec/models/ci/legacy_stage_spec.rb14
-rw-r--r--spec/models/ci/persistent_ref_spec.rb16
-rw-r--r--spec/models/ci/pipeline_spec.rb291
-rw-r--r--spec/models/ci/stage_spec.rb10
-rw-r--r--spec/models/clusters/applications/knative_spec.rb13
-rw-r--r--spec/models/clusters/applications/prometheus_spec.rb100
-rw-r--r--spec/models/clusters/applications/runner_spec.rb4
-rw-r--r--spec/models/clusters/cluster_spec.rb162
-rw-r--r--spec/models/clusters/platforms/kubernetes_spec.rb20
-rw-r--r--spec/models/commit_spec.rb41
-rw-r--r--spec/models/commit_status_spec.rb66
-rw-r--r--spec/models/concerns/group_descendant_spec.rb4
-rw-r--r--spec/models/concerns/ignorable_columns_spec.rb88
-rw-r--r--spec/models/concerns/issuable_spec.rb89
-rw-r--r--spec/models/concerns/issuable_states_spec.rb30
-rw-r--r--spec/models/concerns/mentionable_spec.rb67
-rw-r--r--spec/models/concerns/milestoneish_spec.rb17
-rw-r--r--spec/models/concerns/reactive_caching_spec.rb12
-rw-r--r--spec/models/concerns/safe_url_spec.rb52
-rw-r--r--spec/models/concerns/sha256_attribute_spec.rb91
-rw-r--r--spec/models/container_expiration_policy_spec.rb41
-rw-r--r--spec/models/cycle_analytics/group_level_spec.rb4
-rw-r--r--spec/models/cycle_analytics/project_level_spec.rb4
-rw-r--r--spec/models/deployment_spec.rb62
-rw-r--r--spec/models/dev_ops_score/metric_spec.rb (renamed from spec/models/conversational_development_index/metric_spec.rb)4
-rw-r--r--spec/models/diff_note_spec.rb4
-rw-r--r--spec/models/diff_viewer/base_spec.rb4
-rw-r--r--spec/models/environment_spec.rb80
-rw-r--r--spec/models/environment_status_spec.rb78
-rw-r--r--spec/models/error_tracking/project_error_tracking_setting_spec.rb83
-rw-r--r--spec/models/event_spec.rb4
-rw-r--r--spec/models/gpg_signature_spec.rb4
-rw-r--r--spec/models/hooks/web_hook_log_spec.rb19
-rw-r--r--spec/models/issue/metrics_spec.rb27
-rw-r--r--spec/models/issue_spec.rb2
-rw-r--r--spec/models/key_spec.rb29
-rw-r--r--spec/models/merge_request/pipelines_spec.rb160
-rw-r--r--spec/models/merge_request_diff_spec.rb103
-rw-r--r--spec/models/merge_request_spec.rb372
-rw-r--r--spec/models/milestone_spec.rb34
-rw-r--r--spec/models/namespace_spec.rb9
-rw-r--r--spec/models/note_spec.rb75
-rw-r--r--spec/models/oauth_access_grant_spec.rb17
-rw-r--r--spec/models/pages_domain_spec.rb18
-rw-r--r--spec/models/personal_access_token_spec.rb33
-rw-r--r--spec/models/project_auto_devops_spec.rb13
-rw-r--r--spec/models/project_import_state_spec.rb12
-rw-r--r--spec/models/project_services/jira_service_spec.rb14
-rw-r--r--spec/models/project_services/prometheus_service_spec.rb55
-rw-r--r--spec/models/project_services/unify_circuit_service_spec.rb10
-rw-r--r--spec/models/project_services/youtrack_service_spec.rb2
-rw-r--r--spec/models/project_snippet_spec.rb1
-rw-r--r--spec/models/project_spec.rb158
-rw-r--r--spec/models/project_wiki_spec.rb4
-rw-r--r--spec/models/readme_blob_spec.rb16
-rw-r--r--spec/models/release_spec.rb48
-rw-r--r--spec/models/repository_spec.rb50
-rw-r--r--spec/models/resource_label_event_spec.rb7
-rw-r--r--spec/models/sentry_issue_spec.rb18
-rw-r--r--spec/models/serverless/domain_cluster_spec.rb22
-rw-r--r--spec/models/snippet_spec.rb73
-rw-r--r--spec/models/timelog_spec.rb26
-rw-r--r--spec/models/upload_spec.rb3
-rw-r--r--spec/models/user_mentions/commit_user_mention_spec.rb11
-rw-r--r--spec/models/user_mentions/issue_user_mention_spec.rb12
-rw-r--r--spec/models/user_mentions/merge_request_user_mention_spec.rb12
-rw-r--r--spec/models/user_mentions/snippet_user_mention_spec.rb12
-rw-r--r--spec/models/user_spec.rb117
-rw-r--r--spec/policies/blob_policy_spec.rb31
-rw-r--r--spec/policies/environment_policy_spec.rb2
-rw-r--r--spec/policies/global_policy_spec.rb18
-rw-r--r--spec/policies/personal_snippet_policy_spec.rb3
-rw-r--r--spec/policies/project_policy_spec.rb6
-rw-r--r--spec/policies/project_snippet_policy_spec.rb113
-rw-r--r--spec/policies/wiki_page_policy_spec.rb31
-rw-r--r--spec/presenters/ci/legacy_stage_presenter_spec.rb47
-rw-r--r--spec/presenters/ci/pipeline_presenter_spec.rb18
-rw-r--r--spec/presenters/clusters/cluster_presenter_spec.rb39
-rw-r--r--spec/presenters/dev_ops_score/metric_presenter_spec.rb (renamed from spec/presenters/conversational_development_index/metric_presenter_spec.rb)4
-rw-r--r--spec/presenters/group_clusterable_presenter_spec.rb6
-rw-r--r--spec/presenters/hooks/project_hook_presenter_spec.rb29
-rw-r--r--spec/presenters/hooks/service_hook_presenter_spec.rb30
-rw-r--r--spec/presenters/instance_clusterable_presenter_spec.rb14
-rw-r--r--spec/presenters/label_presenter_spec.rb1
-rw-r--r--spec/presenters/project_clusterable_presenter_spec.rb6
-rw-r--r--spec/presenters/project_presenter_spec.rb1
-rw-r--r--spec/presenters/projects/settings/deploy_keys_presenter_spec.rb61
-rw-r--r--spec/presenters/release_presenter_spec.rb6
-rw-r--r--spec/presenters/sentry_detailed_error_presenter_spec.rb29
-rw-r--r--spec/presenters/snippet_presenter_spec.rb146
-rw-r--r--spec/presenters/web_hook_log_presenter_spec.rb47
-rw-r--r--spec/requests/api/award_emoji_spec.rb1
-rw-r--r--spec/requests/api/badges_spec.rb23
-rw-r--r--spec/requests/api/boards_spec.rb1
-rw-r--r--spec/requests/api/branches_spec.rb10
-rw-r--r--spec/requests/api/broadcast_messages_spec.rb22
-rw-r--r--spec/requests/api/deployments_spec.rb93
-rw-r--r--spec/requests/api/files_spec.rb15
-rw-r--r--spec/requests/api/graphql/mutations/award_emojis/add_spec.rb1
-rw-r--r--spec/requests/api/graphql/mutations/award_emojis/toggle_spec.rb1
-rw-r--r--spec/requests/api/graphql/mutations/issues/set_confidential_spec.rb51
-rw-r--r--spec/requests/api/graphql/mutations/issues/set_due_date_spec.rb61
-rw-r--r--spec/requests/api/graphql/mutations/snippets/create_spec.rb144
-rw-r--r--spec/requests/api/graphql/mutations/snippets/destroy_spec.rb89
-rw-r--r--spec/requests/api/graphql/mutations/snippets/mark_as_spam_spec.rb63
-rw-r--r--spec/requests/api/graphql/mutations/snippets/update_spec.rb144
-rw-r--r--spec/requests/api/graphql/mutations/todos/mark_all_done_spec.rb65
-rw-r--r--spec/requests/api/graphql/mutations/todos/restore_spec.rb97
-rw-r--r--spec/requests/api/graphql/project/error_tracking/sentry_detailed_error_request_spec.rb69
-rw-r--r--spec/requests/api/graphql_spec.rb4
-rw-r--r--spec/requests/api/group_clusters_spec.rb4
-rw-r--r--spec/requests/api/groups_spec.rb50
-rw-r--r--spec/requests/api/helpers_spec.rb26
-rw-r--r--spec/requests/api/internal/base_spec.rb17
-rw-r--r--spec/requests/api/internal/pages_spec.rb11
-rw-r--r--spec/requests/api/issues/get_project_issues_spec.rb18
-rw-r--r--spec/requests/api/issues/issues_spec.rb2
-rw-r--r--spec/requests/api/issues/post_projects_issues_spec.rb4
-rw-r--r--spec/requests/api/jobs_spec.rb8
-rw-r--r--spec/requests/api/keys_spec.rb70
-rw-r--r--spec/requests/api/merge_requests_spec.rb12
-rw-r--r--spec/requests/api/notes_spec.rb2
-rw-r--r--spec/requests/api/pages/pages_spec.rb71
-rw-r--r--spec/requests/api/pipelines_spec.rb16
-rw-r--r--spec/requests/api/project_clusters_spec.rb4
-rw-r--r--spec/requests/api/project_export_spec.rb27
-rw-r--r--spec/requests/api/project_import_spec.rb1
-rw-r--r--spec/requests/api/project_snippets_spec.rb8
-rw-r--r--spec/requests/api/projects_spec.rb1
-rw-r--r--spec/requests/api/releases_spec.rb37
-rw-r--r--spec/requests/api/remote_mirrors_spec.rb41
-rw-r--r--spec/requests/api/runner_spec.rb10
-rw-r--r--spec/requests/api/services_spec.rb10
-rw-r--r--spec/requests/api/settings_spec.rb6
-rw-r--r--spec/requests/api/snippets_spec.rb16
-rw-r--r--spec/requests/api/tags_spec.rb4
-rw-r--r--spec/requests/api/users_spec.rb20
-rw-r--r--spec/requests/git_http_spec.rb2
-rw-r--r--spec/requests/jwt_controller_spec.rb4
-rw-r--r--spec/requests/projects/merge_requests/creations_spec.rb28
-rw-r--r--spec/requests/rack_attack_global_spec.rb28
-rw-r--r--spec/requests/user_avatar_spec.rb36
-rw-r--r--spec/routing/environments_spec.rb4
-rw-r--r--spec/routing/instance_statistics_routing_spec.rb4
-rw-r--r--spec/routing/project_routing_spec.rb32
-rw-r--r--spec/rubocop/cop/avoid_break_from_strong_memoize_spec.rb4
-rw-r--r--spec/rubocop/cop/avoid_return_from_blocks_spec.rb4
-rw-r--r--spec/rubocop/cop/graphql/authorize_types_spec.rb10
-rw-r--r--spec/rubocop/cop/ignored_columns_spec.rb22
-rw-r--r--spec/rubocop/cop/migration/add_index_spec.rb39
-rw-r--r--spec/rubocop/cop/put_group_routes_under_scope_spec.rb48
-rw-r--r--spec/rubocop/cop/put_project_routes_under_scope_spec.rb48
-rw-r--r--spec/serializers/analytics_summary_serializer_spec.rb5
-rw-r--r--spec/serializers/cluster_application_entity_spec.rb1
-rw-r--r--spec/serializers/cluster_basic_entity_spec.rb2
-rw-r--r--spec/serializers/cluster_entity_spec.rb1
-rw-r--r--spec/serializers/deployment_entity_spec.rb30
-rw-r--r--spec/serializers/diffs_metadata_entity_spec.rb12
-rw-r--r--spec/serializers/environment_entity_spec.rb9
-rw-r--r--spec/serializers/environment_status_entity_spec.rb5
-rw-r--r--spec/serializers/group_child_entity_spec.rb1
-rw-r--r--spec/serializers/group_child_serializer_spec.rb1
-rw-r--r--spec/serializers/issue_entity_spec.rb32
-rw-r--r--spec/serializers/job_entity_spec.rb6
-rw-r--r--spec/serializers/merge_request_poll_cached_widget_entity_spec.rb202
-rw-r--r--spec/serializers/merge_request_poll_widget_entity_spec.rb180
-rw-r--r--spec/serializers/merge_request_serializer_spec.rb19
-rw-r--r--spec/serializers/merge_request_widget_entity_spec.rb312
-rw-r--r--spec/serializers/note_entity_spec.rb1
-rw-r--r--spec/serializers/pipeline_entity_spec.rb23
-rw-r--r--spec/serializers/pipeline_serializer_spec.rb6
-rw-r--r--spec/serializers/project_note_entity_spec.rb1
-rw-r--r--spec/serializers/stage_entity_spec.rb4
-rw-r--r--spec/serializers/user_entity_spec.rb1
-rw-r--r--spec/services/auth/container_registry_authentication_service_spec.rb4
-rw-r--r--spec/services/award_emojis/add_service_spec.rb1
-rw-r--r--spec/services/award_emojis/destroy_service_spec.rb1
-rw-r--r--spec/services/award_emojis/toggle_service_spec.rb1
-rw-r--r--spec/services/boards/issues/create_service_spec.rb4
-rw-r--r--spec/services/branches/create_service_spec.rb (renamed from spec/services/create_branch_service_spec.rb)7
-rw-r--r--spec/services/branches/delete_merged_service_spec.rb (renamed from spec/services/delete_merged_branches_service_spec.rb)2
-rw-r--r--spec/services/branches/delete_service_spec.rb (renamed from spec/services/delete_branch_service_spec.rb)5
-rw-r--r--spec/services/branches/validate_new_service_spec.rb41
-rw-r--r--spec/services/ci/archive_trace_service_spec.rb10
-rw-r--r--spec/services/ci/create_pipeline_service/needs_spec.rb175
-rw-r--r--spec/services/ci/create_pipeline_service/rules_spec.rb148
-rw-r--r--spec/services/ci/create_pipeline_service_spec.rb53
-rw-r--r--spec/services/ci/pipeline_trigger_service_spec.rb8
-rw-r--r--spec/services/ci/play_manual_stage_service_spec.rb5
-rw-r--r--spec/services/ci/prepare_build_service_spec.rb4
-rw-r--r--spec/services/ci/process_pipeline_service_spec.rb6
-rw-r--r--spec/services/ci/register_job_service_spec.rb8
-rw-r--r--spec/services/ci/retry_pipeline_service_spec.rb21
-rw-r--r--spec/services/clusters/applications/check_installation_progress_service_spec.rb9
-rw-r--r--spec/services/clusters/applications/check_uninstall_progress_service_spec.rb8
-rw-r--r--spec/services/clusters/applications/ingress_modsecurity_usage_service_spec.rb196
-rw-r--r--spec/services/clusters/applications/patch_service_spec.rb4
-rw-r--r--spec/services/clusters/applications/upgrade_service_spec.rb4
-rw-r--r--spec/services/clusters/aws/authorize_role_service_spec.rb91
-rw-r--r--spec/services/clusters/aws/fetch_credentials_service_spec.rb18
-rw-r--r--spec/services/clusters/aws/proxy_service_spec.rb210
-rw-r--r--spec/services/clusters/cleanup/app_service_spec.rb117
-rw-r--r--spec/services/clusters/cleanup/project_namespace_service_spec.rb85
-rw-r--r--spec/services/clusters/cleanup/service_account_service_spec.rb47
-rw-r--r--spec/services/clusters/destroy_service_spec.rb2
-rw-r--r--spec/services/clusters/gcp/verify_provision_status_service_spec.rb4
-rw-r--r--spec/services/clusters/kubernetes/create_or_update_namespace_service_spec.rb12
-rw-r--r--spec/services/clusters/kubernetes/create_or_update_service_account_service_spec.rb27
-rw-r--r--spec/services/clusters/kubernetes/fetch_kubernetes_token_service_spec.rb1
-rw-r--r--spec/services/clusters/kubernetes_spec.rb19
-rw-r--r--spec/services/cohorts_service_spec.rb24
-rw-r--r--spec/services/compare_service_spec.rb1
-rw-r--r--spec/services/deployments/after_create_service_spec.rb15
-rw-r--r--spec/services/deployments/create_service_spec.rb87
-rw-r--r--spec/services/deployments/update_service_spec.rb6
-rw-r--r--spec/services/discussions/resolve_service_spec.rb4
-rw-r--r--spec/services/environments/reset_auto_stop_service_spec.rb54
-rw-r--r--spec/services/error_tracking/list_issues_service_spec.rb18
-rw-r--r--spec/services/event_create_service_spec.rb6
-rw-r--r--spec/services/git/base_hooks_service_spec.rb101
-rw-r--r--spec/services/git/branch_push_service_spec.rb1
-rw-r--r--spec/services/groups/create_service_spec.rb2
-rw-r--r--spec/services/groups/destroy_service_spec.rb4
-rw-r--r--spec/services/groups/transfer_service_spec.rb4
-rw-r--r--spec/services/issuable/bulk_update_service_spec.rb71
-rw-r--r--spec/services/issues/import_csv_service_spec.rb16
-rw-r--r--spec/services/issues/move_service_spec.rb5
-rw-r--r--spec/services/issues/update_service_spec.rb6
-rw-r--r--spec/services/issues/zoom_link_service_spec.rb69
-rw-r--r--spec/services/lfs/lock_file_service_spec.rb4
-rw-r--r--spec/services/lfs/locks_finder_service_spec.rb4
-rw-r--r--spec/services/lfs/unlock_file_service_spec.rb5
-rw-r--r--spec/services/merge_requests/create_pipeline_service_spec.rb62
-rw-r--r--spec/services/merge_requests/get_urls_service_spec.rb8
-rw-r--r--spec/services/merge_requests/merge_service_spec.rb19
-rw-r--r--spec/services/merge_requests/merge_to_ref_service_spec.rb2
-rw-r--r--spec/services/merge_requests/refresh_service_spec.rb3
-rw-r--r--spec/services/merge_requests/reload_diffs_service_spec.rb31
-rw-r--r--spec/services/merge_requests/resolved_discussion_notification_service_spec.rb1
-rw-r--r--spec/services/metrics/dashboard/grafana_metric_embed_service_spec.rb61
-rw-r--r--spec/services/metrics/dashboard/pod_dashboard_service_spec.rb24
-rw-r--r--spec/services/metrics/dashboard/system_dashboard_service_spec.rb16
-rw-r--r--spec/services/metrics/sample_metrics_service_spec.rb42
-rw-r--r--spec/services/notes/create_service_spec.rb37
-rw-r--r--spec/services/notification_service_spec.rb13
-rw-r--r--spec/services/pages/delete_services_spec.rb27
-rw-r--r--spec/services/projects/container_repository/delete_tags_service_spec.rb1
-rw-r--r--spec/services/projects/destroy_service_spec.rb5
-rw-r--r--spec/services/projects/fork_service_spec.rb29
-rw-r--r--spec/services/projects/forks_count_service_spec.rb1
-rw-r--r--spec/services/projects/git_deduplication_service_spec.rb59
-rw-r--r--spec/services/projects/open_issues_count_service_spec.rb1
-rw-r--r--spec/services/projects/unlink_fork_service_spec.rb169
-rw-r--r--spec/services/projects/update_service_spec.rb105
-rw-r--r--spec/services/prometheus/adapter_service_spec.rb1
-rw-r--r--spec/services/prometheus/proxy_variable_substitution_service_spec.rb143
-rw-r--r--spec/services/quick_actions/interpret_service_spec.rb21
-rw-r--r--spec/services/search/group_service_spec.rb1
-rw-r--r--spec/services/submit_usage_ping_service_spec.rb10
-rw-r--r--spec/services/system_note_service_spec.rb6
-rw-r--r--spec/services/system_notes/issuables_service_spec.rb1
-rw-r--r--spec/services/todo_service_spec.rb40
-rw-r--r--spec/services/users/keys_count_service_spec.rb1
-rw-r--r--spec/services/users/repair_ldap_blocked_service_spec.rb (renamed from spec/services/repair_ldap_blocked_user_service_spec.rb)3
-rw-r--r--spec/services/users/set_status_service_spec.rb1
-rw-r--r--spec/services/web_hook_service_spec.rb11
-rw-r--r--spec/services/wikis/create_attachment_service_spec.rb1
-rw-r--r--spec/spec_helper.rb4
-rw-r--r--spec/support/capybara.rb1
-rw-r--r--spec/support/database_cleaner.rb14
-rw-r--r--spec/support/helpers/admin_mode_helpers.rb2
-rw-r--r--spec/support/helpers/graphql_helpers.rb4
-rw-r--r--spec/support/helpers/kubernetes_helpers.rb87
-rw-r--r--spec/support/helpers/live_debugger.rb10
-rw-r--r--spec/support/helpers/metrics_dashboard_helpers.rb15
-rw-r--r--spec/support/helpers/position_tracer_helpers.rb2
-rw-r--r--spec/support/helpers/sentry_client_helpers.rb14
-rw-r--r--spec/support/helpers/stub_gitlab_calls.rb18
-rw-r--r--spec/support/helpers/stub_object_storage.rb7
-rw-r--r--spec/support/import_export/configuration_helper.rb41
-rw-r--r--spec/support/matchers/graphql_matchers.rb19
-rw-r--r--spec/support/matchers/navigation_matcher.rb2
-rw-r--r--spec/support/shared_contexts/policies/project_policy_shared_context.rb3
-rw-r--r--spec/support/shared_examples/controllers/environments_controller_shared_examples.rb67
-rw-r--r--spec/support/shared_examples/controllers/uploads_actions_shared_examples.rb14
-rw-r--r--spec/support/shared_examples/diff_file_collections.rb42
-rw-r--r--spec/support/shared_examples/features/creatable_merge_request_shared_examples.rb10
-rw-r--r--spec/support/shared_examples/graphql/notes_creation_shared_examples.rb1
-rw-r--r--spec/support/shared_examples/lib/banzai/filters/sanitization_filter_shared_examples.rb182
-rw-r--r--spec/support/shared_examples/lib/gitlab/import_export/project_tree_restorer_shared_examples.rb8
-rw-r--r--spec/support/shared_examples/lib/sentry/client_shared_examples.rb56
-rw-r--r--spec/support/shared_examples/mail_room_shared_examples.rb35
-rw-r--r--spec/support/shared_examples/mentionable_shared_examples.rb150
-rw-r--r--spec/support/shared_examples/merge_requests_rendering_a_single_diff_version.rb4
-rw-r--r--spec/support/shared_examples/models/chat_service_shared_examples.rb2
-rw-r--r--spec/support/shared_examples/models/cluster_cleanup_worker_base_shared_examples.rb11
-rw-r--r--spec/support/shared_examples/models/user_mentions_shared_examples.rb40
-rw-r--r--spec/support/shared_examples/policies/project_policy_shared_examples.rb4
-rw-r--r--spec/support/shared_examples/quick_actions/issue/duplicate_quick_action_shared_examples.rb36
-rw-r--r--spec/support/shared_examples/services/base_helm_service_shared_examples.rb14
-rw-r--r--spec/support/sidekiq.rb26
-rw-r--r--spec/support/sidekiq_middleware.rb27
-rw-r--r--spec/support/webmock.rb6
-rw-r--r--spec/tasks/gitlab/generate_sample_prometheus_data_spec.rb34
-rw-r--r--spec/tasks/gitlab/import_export/import_rake_spec.rb112
-rw-r--r--spec/uploaders/file_mover_spec.rb1
-rw-r--r--spec/uploaders/object_storage_spec.rb4
-rw-r--r--spec/validators/addressable_url_validator_spec.rb1
-rw-r--r--spec/validators/devise_email_validator_spec.rb1
-rw-r--r--spec/validators/qualified_domain_array_validator_spec.rb4
-rw-r--r--spec/views/admin/sessions/new.html.haml_spec.rb35
-rw-r--r--spec/views/import/gitlab_projects/new.html.haml_spec.rb31
-rw-r--r--spec/views/layouts/application.html.haml_spec.rb48
-rw-r--r--spec/views/layouts/header/_new_dropdown.haml_spec.rb10
-rw-r--r--spec/views/projects/commits/_commit.html.haml_spec.rb7
-rw-r--r--spec/views/projects/edit.html.haml_spec.rb3
-rw-r--r--spec/views/projects/pages_domains/show.html.haml_spec.rb1
-rw-r--r--spec/views/projects/services/edit.html.haml_spec.rb31
-rw-r--r--spec/views/projects/show.html.haml_spec.rb2
-rw-r--r--spec/views/projects/tags/index.html.haml_spec.rb2
-rw-r--r--spec/views/search/_results.html.haml_spec.rb2
-rw-r--r--spec/workers/ci/archive_traces_cron_worker_spec.rb2
-rw-r--r--spec/workers/clusters/applications/activate_service_worker_spec.rb52
-rw-r--r--spec/workers/clusters/applications/deactivate_service_worker_spec.rb68
-rw-r--r--spec/workers/clusters/cleanup/app_worker_spec.rb41
-rw-r--r--spec/workers/clusters/cleanup/project_namespace_worker_spec.rb52
-rw-r--r--spec/workers/clusters/cleanup/service_account_worker_spec.rb27
-rw-r--r--spec/workers/delete_merged_branches_worker_spec.rb4
-rw-r--r--spec/workers/expire_job_cache_worker_spec.rb1
-rw-r--r--spec/workers/expire_pipeline_cache_worker_spec.rb1
-rw-r--r--spec/workers/hashed_storage/project_migrate_worker_spec.rb69
-rw-r--r--spec/workers/mail_scheduler/notification_service_worker_spec.rb1
-rw-r--r--spec/workers/personal_access_tokens/expiring_worker_spec.rb41
-rw-r--r--spec/workers/pipeline_process_worker_spec.rb4
-rw-r--r--spec/workers/process_commit_worker_spec.rb51
-rw-r--r--spec/workers/repository_check/batch_worker_spec.rb1
-rw-r--r--spec/workers/run_pipeline_schedule_worker_spec.rb6
-rw-r--r--spec/workers/stuck_ci_jobs_worker_spec.rb4
-rw-r--r--vendor/aws/iam/eks_cluster_read_only_policy.json17
-rw-r--r--[-rwxr-xr-x]vendor/gitignore/C++.gitignore0
-rw-r--r--[-rwxr-xr-x]vendor/gitignore/Java.gitignore0
-rw-r--r--vendor/project_templates/hexo.tar.gzbin547220 -> 547436 bytes
-rw-r--r--vendor/project_templates/hugo.tar.gzbin1047952 -> 1048450 bytes
-rw-r--r--vendor/project_templates/jekyll.tar.gzbin60086 -> 60465 bytes
-rw-r--r--vendor/project_templates/salesforcedx.tar.gzbin0 -> 432083 bytes
-rw-r--r--yarn.lock289
3554 files changed, 68258 insertions, 153436 deletions
diff --git a/.eslintrc.yml b/.eslintrc.yml
index e131d4c07d1..a8cbd9731a3 100644
--- a/.eslintrc.yml
+++ b/.eslintrc.yml
@@ -1,6 +1,8 @@
extends:
- '@gitlab'
- plugin:promise/recommended
+ - plugin:no-jquery/slim
+ - plugin:no-jquery/deprecated-3.4
globals:
__webpack_public_path__: true
gl: false
@@ -30,7 +32,13 @@ rules:
no-else-return:
- error
- allowElseIf: true
+ import/no-unresolved:
+ - error
+ - ignore:
+ # https://gitlab.com/gitlab-org/gitlab/issues/38226
+ - '^ee_component/'
import/no-useless-path-segments: off
+ import/order: off
lines-between-class-members: off
# Disabled for now, to make the plugin-vue 4.5 -> 5.0 update smoother
vue/no-confusing-v-for-v-if: error
@@ -38,11 +46,13 @@ rules:
vue/no-use-v-if-with-v-for: off
vue/no-v-html: off
vue/use-v-on-exact: off
- no-jquery/no-ajax: error
- no-jquery/no-ajax-events: error
- no-jquery/no-load: error
- no-jquery/no-load-shorthand: error
+ no-jquery/no-animate: off
+ # all offenses of no-jquery/no-animate-toggle are false positives ( $toast.show() )
+ no-jquery/no-animate-toggle: off
+ no-jquery/no-event-shorthand: off
+ no-jquery/no-fade: off
no-jquery/no-serialize: error
+ no-jquery/no-sizzle: off
promise/always-return: off
promise/no-callback-in-promise: off
overrides:
diff --git a/.gitattributes b/.gitattributes
index 55c422f0f8c..ec47d175c55 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,2 +1,3 @@
VERSION merge=ours
Dangerfile gitlab-language=ruby
+*.pdf filter=lfs diff=lfs merge=lfs -text
diff --git a/.gitignore b/.gitignore
index b8cbfe9966d..d43b1908dd3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -66,7 +66,7 @@ eslint-report.html
/vendor/gitaly-ruby
/builds*
/.gitlab_workhorse_secret
-/.gitlab_pages_shared_secret
+/.gitlab_pages_secret
/webpack-report/
/knapsack/
/rspec_flaky/
@@ -84,3 +84,4 @@ jsdoc/
.overcommit.yml
.projections.json
/qa/.rakeTasks
+webpack-dev-server.json
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 36108d04e9c..388f3f4b3e3 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,38 +1,42 @@
-image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.3-golang-1.11-git-2.22-chrome-73.0-node-12.x-yarn-1.16-postgresql-9.6-graphicsmagick-1.3.33"
+image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.3-golang-1.12-git-2.24-lfs-2.9-chrome-73.0-node-12.x-yarn-1.16-postgresql-9.6-graphicsmagick-1.3.33"
stages:
- sync
- prepare
- quick-test
- test
+ - post-test
- review-prepare
- review
- qa
- - post-test
+ - post-qa
+ - notification
- pages
variables:
RAILS_ENV: "test"
NODE_ENV: "test"
SIMPLECOV: "true"
- GIT_DEPTH: "50"
+ GIT_DEPTH: "20"
GIT_SUBMODULE_STRATEGY: "none"
GET_SOURCES_ATTEMPTS: "3"
KNAPSACK_RSPEC_SUITE_REPORT_PATH: knapsack/report-master.json
FLAKY_RSPEC_SUITE_REPORT_PATH: rspec_flaky/report-suite.json
BUILD_ASSETS_IMAGE: "false"
ES_JAVA_OPTS: "-Xms256m -Xmx256m"
- ELASTIC_URL: "http://elastic:changeme@docker.elastic.co-elasticsearch-elasticsearch:9200"
+ ELASTIC_URL: "http://elastic:changeme@elasticsearch:9200"
after_script:
- date
include:
+ - local: .gitlab/ci/cache-repo.gitlab-ci.yml
- local: .gitlab/ci/cng.gitlab-ci.yml
- local: .gitlab/ci/docs.gitlab-ci.yml
- local: .gitlab/ci/frontend.gitlab-ci.yml
- local: .gitlab/ci/global.gitlab-ci.yml
- local: .gitlab/ci/memory.gitlab-ci.yml
+ - local: .gitlab/ci/notifications.gitlab-ci.yml
- local: .gitlab/ci/pages.gitlab-ci.yml
- local: .gitlab/ci/qa.gitlab-ci.yml
- local: .gitlab/ci/reports.gitlab-ci.yml
diff --git a/.gitlab/ci/cache-repo.gitlab-ci.yml b/.gitlab/ci/cache-repo.gitlab-ci.yml
new file mode 100644
index 00000000000..f856afd3a02
--- /dev/null
+++ b/.gitlab/ci/cache-repo.gitlab-ci.yml
@@ -0,0 +1,33 @@
+# Builds a cached .tar.gz of the master branch with full history and
+# uploads it to Google Cloud Storage. This archive is downloaded by a
+# script defined by a CI/CD variable named CI_PRE_CLONE_SCRIPT. This has
+# two benefits:
+#
+# 1. It speeds up builds. A 800 MB download only takes seconds.
+# 2. It significantly reduces load on the file server. Smaller deltas
+# means less time spent in git pack-objects.
+#
+# Since the destination directory of the archive depends on the project
+# ID, this is only run on GitLab.com.
+#
+# CI_REPO_CACHE_CREDENTIALS contains the Google Cloud service account
+# JSON for uploading to the gitlab-ci-git-repo-cache bucket. These
+# credentials are stored in the Production vault.
+#
+# Note that this bucket should be located in the same continent as the
+# runner, or network egress charges will apply:
+# https://cloud.google.com/storage/pricing
+cache-repo:
+ extends:
+ - .only:variables_refs-canonical-dot-com-schedules
+ image: gcr.io/google.com/cloudsdktool/cloud-sdk:alpine
+ stage: sync
+ allow_failure: true
+ variables:
+ GIT_DEPTH: 0
+ TAR_FILENAME: /tmp/gitlab-master.tar
+ script:
+ - gcloud auth activate-service-account --key-file=$CI_REPO_CACHE_CREDENTIALS
+ - tar cf $TAR_FILENAME .
+ - gzip $TAR_FILENAME
+ - gsutil cp $TAR_FILENAME.gz gs://gitlab-ci-git-repo-cache/project-$CI_PROJECT_ID/gitlab-master.tar.gz
diff --git a/.gitlab/ci/docs.gitlab-ci.yml b/.gitlab/ci/docs.gitlab-ci.yml
index 07375fca611..cd0e4085e10 100644
--- a/.gitlab/ci/docs.gitlab-ci.yml
+++ b/.gitlab/ci/docs.gitlab-ci.yml
@@ -24,7 +24,8 @@
- apk add --update openssl
- wget $CI_PROJECT_URL/raw/$CI_COMMIT_SHA/scripts/trigger-build-docs
- chmod 755 trigger-build-docs
- - gem install gitlab --no-document
+ - gem install httparty --no-document --version 0.17.3
+ - gem install gitlab --no-document --version 4.13.0
# Always trigger a docs build in gitlab-docs only on docs-only branches.
# Useful to preview the docs changes live.
diff --git a/.gitlab/ci/frontend.gitlab-ci.yml b/.gitlab/ci/frontend.gitlab-ci.yml
index 0b72461a9fd..6578eec8234 100644
--- a/.gitlab/ci/frontend.gitlab-ci.yml
+++ b/.gitlab/ci/frontend.gitlab-ci.yml
@@ -13,7 +13,7 @@
- .default-before_script
- .assets-compile-cache
- .only:changes-code-backstage-qa
- image: registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.3-git-2.22-chrome-73.0-node-12.x-yarn-1.16-graphicsmagick-1.3.33-docker-18.06.1
+ image: registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.3-git-2.24-lfs-2.9-chrome-73.0-node-12.x-yarn-1.16-graphicsmagick-1.3.33-docker-19.03.1
stage: test
dependencies: ["setup-test-env"]
needs: ["setup-test-env"]
@@ -74,7 +74,6 @@ gitlab:assets:compile pull-cache:
- .default-before_script
- .assets-compile-cache
- .only:changes-code-backstage-qa
- - .use-pg9
stage: prepare
script:
- node --version
@@ -83,6 +82,7 @@ gitlab:assets:compile pull-cache:
- retry bundle exec rake gitlab:assets:compile
- scripts/clean-old-cached-assets
variables:
+ SETUP_DB: "false"
# we override the max_old_space_size to prevent OOM errors
NODE_OPTIONS: --max_old_space_size=3584
cache:
@@ -244,6 +244,12 @@ webpack-dev-server:
dependencies: ["setup-test-env", "compile-assets pull-cache"]
variables:
WEBPACK_MEMORY_TEST: "true"
+ WEBPACK_VENDOR_DLL: "true"
script:
- - node --version
+ - yarn webpack-vendor
- node --expose-gc node_modules/.bin/webpack-dev-server --config config/webpack.config.js
+ artifacts:
+ name: webpack-dev-server
+ expire_in: 31d
+ paths:
+ - webpack-dev-server.json
diff --git a/.gitlab/ci/global.gitlab-ci.yml b/.gitlab/ci/global.gitlab-ci.yml
index d746d8fe030..9ebd28c7258 100644
--- a/.gitlab/ci/global.gitlab-ci.yml
+++ b/.gitlab/ci/global.gitlab-ci.yml
@@ -93,7 +93,7 @@
- "config.ru"
- "{package.json,yarn.lock}"
- "{,ee/}{app,bin,config,db,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*"
- - "doc/api/graphql/**/*"
+ - "doc/api/graphql/reference/*" # Files in this folder are auto-generated
.backstage-patterns: &backstage-patterns
- "Dangerfile"
@@ -139,7 +139,7 @@
- "config.ru"
- "{package.json,yarn.lock}"
- "{,ee/}{app,bin,config,db,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*"
- - "doc/api/graphql/**/*"
+ - "doc/api/graphql/reference/*" # Files in this folder are auto-generated
# Backstage changes
- "Dangerfile"
- "danger/**/*"
@@ -163,7 +163,7 @@
- "config.ru"
- "{package.json,yarn.lock}"
- "{,ee/}{app,bin,config,db,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*"
- - "doc/api/graphql/**/*"
+ - "doc/api/graphql/reference/*" # Files in this folder are auto-generated
# QA changes
- ".dockerignore"
- "qa/**/*"
@@ -183,7 +183,7 @@
- "config.ru"
- "{package.json,yarn.lock}"
- "{,ee/}{app,bin,config,db,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*"
- - "doc/api/graphql/**/*"
+ - "doc/api/graphql/reference/*" # Files in this folder are auto-generated
# Backstage changes
- "Dangerfile"
- "danger/**/*"
@@ -202,7 +202,7 @@
- name: redis:alpine
.use-pg10:
- image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.3-golang-1.11-git-2.22-chrome-73.0-node-12.x-yarn-1.16-postgresql-10-graphicsmagick-1.3.33"
+ image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.3-golang-1.12-git-2.24-lfs-2.9-chrome-73.0-node-12.x-yarn-1.16-postgresql-10-graphicsmagick-1.3.33"
services:
- name: postgres:10.9
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
@@ -213,15 +213,15 @@
- name: postgres:9.6
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
- name: redis:alpine
- - name: docker.elastic.co/elasticsearch/elasticsearch:5.6.12
+ - name: elasticsearch:5.6.12
.use-pg10-ee:
- image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.3-golang-1.11-git-2.22-chrome-73.0-node-12.x-yarn-1.16-postgresql-10-graphicsmagick-1.3.33"
+ image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.3-golang-1.12-git-2.24-lfs-2.9-chrome-73.0-node-12.x-yarn-1.16-postgresql-10-graphicsmagick-1.3.33"
services:
- name: postgres:10.9
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
- name: redis:alpine
- - name: docker.elastic.co/elasticsearch/elasticsearch:5.6.12
+ - name: elasticsearch:5.6.12
.only-ee:
only:
diff --git a/.gitlab/ci/notifications.gitlab-ci.yml b/.gitlab/ci/notifications.gitlab-ci.yml
new file mode 100644
index 00000000000..4271e709f45
--- /dev/null
+++ b/.gitlab/ci/notifications.gitlab-ci.yml
@@ -0,0 +1,23 @@
+.notify:
+ image: ruby:2.6-alpine
+ stage: notification
+ dependencies: []
+ cache: {}
+ before_script:
+ - apk update && apk add git curl bash
+ - source scripts/utils.sh
+ - source scripts/notifications.sh
+ - install_gitlab_gem
+ variables:
+ COMMIT_NOTES_URL: "https://${CI_SERVER_HOST}/${CI_PROJECT_PATH}/commit/${CI_COMMIT_SHA}#notes-list"
+
+schedule:package-and-qa:notify-failure:
+ extends:
+ - .only:variables_refs-canonical-dot-com-schedules
+ - .notify
+ script:
+ - 'export NOTIFICATION_MESSAGE=":skull_and_crossbones: Scheduled QA against master failed! :skull_and_crossbones: See ${CI_PIPELINE_URL}. For downstream pipelines, see ${COMMIT_NOTES_URL}"'
+ - 'notify_on_job_failure schedule:package-and-qa qa-master "${NOTIFICATION_MESSAGE}" ci_failing'
+ needs: ["schedule:package-and-qa"]
+ allow_failure: true
+ when: always
diff --git a/.gitlab/ci/releases.gitlab-ci.yml b/.gitlab/ci/releases.gitlab-ci.yml
index 1ddc4e90fcf..d4e0236f3a8 100644
--- a/.gitlab/ci/releases.gitlab-ci.yml
+++ b/.gitlab/ci/releases.gitlab-ci.yml
@@ -1,22 +1,36 @@
---
-# Syncs any changes pushed to a stable branch to the corresponding CE stable
-# branch. We run this prior to any tests so that random failures don't prevent a
-# sync.
-sync-stable-branch:
+# Syncs any changes pushed to a stable branch to the corresponding
+# gitlab-foss/CE stable branch. We run this prior to any tests so that random
+# failures don't prevent a sync.
+.merge-train-sync:
# We don't need/want any global before/after commands, so we overwrite these
# settings.
image: alpine:edge
stage: sync
- # This job should only run on EE stable branches on the canonical GitLab.com
- # repository.
- only:
- variables:
- - $CI_SERVER_HOST == "gitlab.com"
- refs:
- - /^[\d-]+-stable-ee$/@gitlab-org/gitlab
before_script:
- apk add --no-cache --update curl bash
after_script: []
script:
- bash scripts/sync-stable-branch.sh
+ only:
+ variables:
+ - $CI_SERVER_HOST == "gitlab.com"
+
+sync-stable-branch:
+ extends: .merge-train-sync
+ variables:
+ SOURCE_PROJECT: gitlab-org/gitlab
+ TARGET_PROJECT: gitlab-org/gitlab-foss
+ only:
+ refs:
+ - /^[\d-]+-stable-ee$/@gitlab-org/gitlab
+
+sync-security-branch:
+ extends: .merge-train-sync
+ variables:
+ SOURCE_PROJECT: gitlab-org/security/gitlab
+ TARGET_PROJECT: gitlab-org/security/gitlab-foss
+ only:
+ refs:
+ - /^[\d-]+-stable-ee$/@gitlab-org/security/gitlab
diff --git a/.gitlab/ci/reports.gitlab-ci.yml b/.gitlab/ci/reports.gitlab-ci.yml
index fbb7826b6f2..4ff14b660b3 100644
--- a/.gitlab/ci/reports.gitlab-ci.yml
+++ b/.gitlab/ci/reports.gitlab-ci.yml
@@ -20,6 +20,7 @@ code_quality:
variables:
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: ""
+ CODE_QUALITY_IMAGE: "registry.gitlab.com/gitlab-org/security-products/codequality:12-5-stable"
script:
- |
if ! docker info &>/dev/null; then
@@ -27,14 +28,17 @@ code_quality:
export DOCKER_HOST='tcp://localhost:2375'
fi
fi
+ - docker pull --quiet "$CODE_QUALITY_IMAGE"
- docker run
--env SOURCE_CODE="$PWD"
--volume "$PWD":/code
--volume /var/run/docker.sock:/var/run/docker.sock
- "registry.gitlab.com/gitlab-org/security-products/codequality:12-0-stable" /code
+ "$CODE_QUALITY_IMAGE" /code
artifacts:
reports:
codequality: gl-code-quality-report.json
+ paths:
+ - gl-code-quality-report.json
expire_in: 1 week
dependencies: []
except:
@@ -165,7 +169,6 @@ dependency_scanning:
DS_ANALYZER_IMAGE_TAG \
DS_DEFAULT_ANALYZERS \
DS_EXCLUDED_PATHS \
- DEP_SCAN_DISABLE_REMOTE_CHECKS \
DS_DOCKER_CLIENT_NEGOTIATION_TIMEOUT \
DS_PULL_ANALYZER_IMAGE_TIMEOUT \
DS_RUN_ANALYZER_TIMEOUT \
@@ -231,9 +234,3 @@ dast:
- gl-dast-report.json
reports:
dast: gl-dast-report.json
- only:
- variables:
- - $GITLAB_FEATURES =~ /\bdast\b/
- except:
- variables:
- - $DAST_DISABLED
diff --git a/.gitlab/ci/review.gitlab-ci.yml b/.gitlab/ci/review.gitlab-ci.yml
index 4ed9ac03d0c..49447bc629b 100644
--- a/.gitlab/ci/review.gitlab-ci.yml
+++ b/.gitlab/ci/review.gitlab-ci.yml
@@ -23,8 +23,10 @@ build-qa-image:
stage: prepare
script:
- '[[ ! -d "ee/" ]] || export GITLAB_EDITION="ee"'
+ - export QA_MASTER_IMAGE="${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab/gitlab-${GITLAB_EDITION}-qa:master"
- export QA_IMAGE="${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab/gitlab-${GITLAB_EDITION}-qa:${CI_COMMIT_REF_SLUG}"
- - time docker build --cache-from gitlab/gitlab-${GITLAB_EDITION}-qa:nightly --tag ${QA_IMAGE} --file ./qa/Dockerfile ./
+ - time docker pull "${QA_MASTER_IMAGE}"
+ - time docker build --cache-from "${QA_MASTER_IMAGE}" --tag ${QA_IMAGE} --file ./qa/Dockerfile ./
- echo "${CI_JOB_TOKEN}" | docker login --username gitlab-ci-token --password-stdin ${CI_REGISTRY}
- time docker push ${QA_IMAGE}
@@ -94,10 +96,7 @@ schedule:review-build-cng:
variables:
HOST_SUFFIX: "${CI_ENVIRONMENT_SLUG}"
DOMAIN: "-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}"
- # v2.4.4 + two improvements:
- # - Allow to pass an EE license when installing the chart: https://gitlab.com/gitlab-org/charts/gitlab/merge_requests/1008
- # - Allow to customize the livenessProbe for `gitlab-shell`: https://gitlab.com/gitlab-org/charts/gitlab/merge_requests/1021
- GITLAB_HELM_CHART_REF: "6c655ed77e60f1f7f533afb97bef8c9cb7dc61eb"
+ GITLAB_HELM_CHART_REF: "v2.5.1"
GITLAB_EDITION: "ce"
environment:
name: review/${CI_COMMIT_REF_NAME}
@@ -135,13 +134,11 @@ review-deploy:
- .review-deploy-base
- .only-review
- .only:changes-code-qa
- needs: ["review-build-cng"]
schedule:review-deploy:
extends:
- .review-deploy-base
- .only-review-schedules
- needs: ["schedule:review-build-cng"]
.base-review-stop:
extends:
@@ -280,7 +277,7 @@ parallel-spec-reports:
- .only-review
- .only:changes-code-qa
image: ruby:2.6-alpine
- stage: post-test
+ stage: post-qa
dependencies: ["review-qa-all"]
variables:
NEW_PARALLEL_SPECS_REPORT: qa/report-new.html
diff --git a/.gitlab/issue_templates/Productivity Improvement.md b/.gitlab/issue_templates/Productivity Improvement.md
new file mode 100644
index 00000000000..89505cd85b4
--- /dev/null
+++ b/.gitlab/issue_templates/Productivity Improvement.md
@@ -0,0 +1,47 @@
+## What is the productivity problem to solve?
+
+<!--
+Please describe the productivity problem that needs to be solved backed by charts from
+https://about.gitlab.com/handbook/engineering/quality/engineering-productivity-team/#engineering-productivity-team-metrics.
+-->
+
+### Problem identification checklist
+
+- [ ] The root cause of the problem is identified.
+- [ ] The surface of the problem is as small as possible.
+
+## What are the potential solutions?
+
+<!--
+Please provide potential solutions here. Example solutions could be:
+
+- Dogfood a feature.
+- Refactor/improve some workflow code.
+- Throw more money at the problem.
+
+Please provide pros/cons and a weight estimate for each solution.
+-->
+
+- [ ] All potential solutions are listed.
+- [ ] A solution has been chosen for the first iteration: `PUT THE CHOSEN SOLUTION HERE`
+
+## Who and when will the solution be implemented?
+
+<!--
+For history reason, please list the person that will implement the solution and
+the planned milestone/date.
+-->
+
+## Verify that the solution has improved the situation
+
+<!--
+Ideally, looking at the charts from the first part, we should see an improvement
+after the implementation is merged/deployed/released.
+-->
+
+- [ ] The solution improved the situation.
+ - If yes, check this box and close the issue. Well done! :tada:
+ - Otherwise, create a new "Productivity Improvement" issue. You can re-use the description from this issue, but obviously another solution should be chosen this time.
+
+/label ~"Engineering Productivity" ~meta
+/cc @gl-quality/eng-prod
diff --git a/.haml-lint_todo.yml b/.haml-lint_todo.yml
index 232a87c1981..2e1b1770f99 100644
--- a/.haml-lint_todo.yml
+++ b/.haml-lint_todo.yml
@@ -411,6 +411,7 @@ linters:
- 'app/views/shared/snippets/_snippet.html.haml'
- 'app/views/shared/tokens/_scopes_list.html.haml'
- 'app/views/shared/web_hooks/_form.html.haml'
+ - 'app/views/shared/web_hooks/_hook.html.haml'
- 'app/views/shared/web_hooks/_test_button.html.haml'
- 'app/views/u2f/_authenticate.html.haml'
- 'app/views/u2f/_register.html.haml'
@@ -442,7 +443,7 @@ linters:
- 'ee/app/views/groups/epics/_epic.html.haml'
- 'ee/app/views/groups/group_members/_ldap_sync.html.haml'
- 'ee/app/views/groups/group_members/_sync_button.html.haml'
- - 'ee/app/views/groups/hooks/_project_hook.html.haml'
+ - 'ee/app/views/groups/hooks/edit.html.haml'
- 'ee/app/views/groups/hooks/index.html.haml'
- 'ee/app/views/groups/ldap_group_links/index.html.haml'
- 'ee/app/views/groups/pipeline_quota/index.html.haml'
diff --git a/.markdownlint.json b/.markdownlint.json
index f06c0766c38..fe3790f47e6 100644
--- a/.markdownlint.json
+++ b/.markdownlint.json
@@ -26,5 +26,102 @@
"first-line-h1": false,
"code-block-style": {
"style": "fenced"
+ },
+ "proper-names": {
+ "names": [
+ "Akismet",
+ "Alertmanager",
+ "API",
+ "Asana",
+ "Auth0",
+ "Authentiq",
+ "Azure",
+ "Bamboo",
+ "Bitbucket",
+ "Bugzilla",
+ "CAS",
+ "CentOS",
+ "Consul",
+ "Debian",
+ "Elasticsearch",
+ "Facebook",
+ "Git LFS",
+ "git-annex",
+ "Git",
+ "Gitaly",
+ "GitHub",
+ "GitLab Geo",
+ "GitLab Monitor",
+ "GitLab Operator",
+ "GitLab Pages",
+ "GitLab Rails",
+ "GitLab Runner",
+ "GitLab Shell",
+ "GitLab Workhorse",
+ "GitLab",
+ "Gmail",
+ "Google",
+ "Grafana",
+ "Helm",
+ "HipChat",
+ "Ingress",
+ "jasmine-jquery",
+ "JavaScript",
+ "Jaeger",
+ "Jenkins",
+ "Jira",
+ "Jira Cloud",
+ "Jira Server",
+ "jQuery",
+ "JupyterHub",
+ "Karma",
+ "Kerberos",
+ "Knative",
+ "Kubernetes",
+ "LDAP",
+ "Let's Encrypt",
+ "Markdown",
+ "markdownlint",
+ "Mattermost",
+ "Microsoft",
+ "MinIO",
+ "NGINX Ingress",
+ "NGINX",
+ "OAuth",
+ "OAuth 2",
+ "OmniAuth",
+ "Omnibus GitLab",
+ "OpenID",
+ "OpenShift",
+ "PgBouncer",
+ "PostgreSQL",
+ "Prometheus",
+ "Puma",
+ "Python",
+ "Redis",
+ "Redmine",
+ "reCAPTCHA",
+ "runit",
+ "Salesforce",
+ "SAML",
+ "Sentry",
+ "Sidekiq",
+ "Shibboleth",
+ "Slack",
+ "SMTP",
+ "SSH",
+ "Tiller",
+ "Trello",
+ "Trello Power-Ups",
+ "TypeScript",
+ "Twitter",
+ "Ubuntu",
+ "Ultra Auth",
+ "Unicorn",
+ "unicorn-worker-killer",
+ "WebdriverIO",
+ "YouTrack"
+ ],
+ "code_blocks": false
}
}
diff --git a/.nvmrc b/.nvmrc
index f8c17e78090..4de623cfefa 100644
--- a/.nvmrc
+++ b/.nvmrc
@@ -1 +1 @@
-12.4.0
+12.10.0
diff --git a/.rubocop.yml b/.rubocop.yml
index 1d5cf7642c2..27dce2239d8 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -56,7 +56,6 @@ Style/FrozenStringLiteralComment:
- 'qa/**/*'
- 'rubocop/**/*'
- 'scripts/**/*'
- - 'spec/lib/gitlab/**/*'
RSpec/FilePath:
Exclude:
diff --git a/CHANGELOG-EE.md b/CHANGELOG-EE.md
index 55467bb7491..1e564d8ebad 100644
--- a/CHANGELOG-EE.md
+++ b/CHANGELOG-EE.md
@@ -22,10 +22,6 @@ Please view this file on the master branch, on stable branches it's out of date.
- Geo - Does not schedule duplicated jobs while backfilling uploads, LFS objects and job artifacts. !20324
-## 12.5.2
-
-- No changes.
-
## 12.5.1
### Security (6 changes)
@@ -124,6 +120,18 @@ Please view this file on the master branch, on stable branches it's out of date.
- Remove IIFEs from jira_connect.js file. !19248 (nuwe1)
+## 12.4.5
+
+- No changes.
+
+## 12.4.3
+
+### Fixed (2 changes)
+
+- Fix admin welcome image not found. !19676
+- Revert ES support for public/internal project snippets. !19715
+
+
## 12.4.2
### Fixed (1 change)
@@ -254,6 +262,25 @@ Please view this file on the master branch, on stable branches it's out of date.
- Docs for protected branch code owner approval API. !17132
+## 12.3.9
+
+### Security (1 change)
+
+- Fix stale Elasticsearch permissions when moving group from public group to private parent group.
+
+
+## 12.3.7
+
+### Security (6 changes)
+
+- Protect Jira integration endpoints from guest users.
+- Fix private comment Elasticsearch leak on project search scope.
+- Filter snippet search results by feature visibility.
+- Hide AWS secret on Admin Integration page.
+- Fail pull mirror when mirror user is blocked.
+- Prevent IDOR when adding users to protected environments.
+
+
## 12.3.4
### Fixed (2 changes)
@@ -457,6 +484,13 @@ Please view this file on the master branch, on stable branches it's out of date.
- Fixes style-lint errors and warnings for EE builds.scss file.
+## 12.2.11
+
+### Fixed (1 change)
+
+- Backport the new reliable fetcher. !21198
+
+
## 12.2.8
### Fixed (1 change)
@@ -805,6 +839,21 @@ Please view this file on the master branch, on stable branches it's out of date.
- Don't send CI usage email notifications for self-hosted instances. !14809
+## 12.0.12
+
+### Fixed (1 change)
+
+- Backport the new reliable fetcher to 12.0.9. !20532
+
+
+## 12.0.10
+
+- No changes.
+### Fixed (1 change)
+
+- Backport the new reliable fetcher to 12.0.9. !20532
+
+
## 12.0.7
### Security (3 changes)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index db641aa9d36..6b3f2c1476f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,7 +4,6 @@ entry.
## 12.5.5
-- No changes.
### Security (1 change)
- Upgrade Akismet gem to v3.0.0. !21786
@@ -36,13 +35,6 @@ entry.
- Flatten exception details in API and controller logs. !20434
-## 12.5.2
-
-### Security (1 change)
-
-- Fix 500 error caused by invalid byte sequences in links.
-
-
## 12.5.1
### Security (11 changes)
@@ -411,6 +403,18 @@ entry.
- Change selects from default browser style to custom style.
+## 12.4.5
+
+- No changes.
+
+## 12.4.3
+
+### Fixed (2 changes)
+
+- Only enable protected paths for POST requests. !19184
+- Fix Bitbucket Cloud importer pull request state. !19734
+
+
## 12.4.2
### Fixed (10 changes)
@@ -771,6 +775,31 @@ entry.
- Remove Postgresql specific setup tasks and move to schema.rb.
+## 12.3.9
+
+### Security (1 change)
+
+- Update maven_file_name_regex for full string match.
+
+
+## 12.3.7
+
+### Security (12 changes)
+
+- Do not create todos for approvers without access. !1442
+- Limit potential for DNS rebind SSRF in chat notifications.
+- Encrypt application setting tokens.
+- Update Workhorse and Gitaly to fix a security issue.
+- Add maven file_name regex validation on incoming files.
+- Hide commit counts from guest users in Cycle Analytics.
+- Check permissions before showing a forked project's source.
+- Fix 500 error caused by invalid byte sequences in links.
+- Ensure are cleaned by ImportExport::AttributeCleaner.
+- Remove notes regarding Related Branches from Issue activity feeds for guest users.
+- Escape namespace in label references to prevent XSS.
+- Add authorization to using filter vulnerable in Dependency List.
+
+
## 12.3.4
### Fixed (2 changes)
@@ -1076,6 +1105,10 @@ entry.
- Updates tooltip of 'detached' label/state.
+## 12.2.11
+
+- No changes.
+
## 12.2.8
### Security (1 change)
@@ -1790,6 +1823,15 @@ entry.
- Removes EE differences for app/views/admin/users/show.html.haml.
+## 12.0.12
+
+- No changes.
+
+## 12.0.10
+
+- No changes.
+- No changes.
+
## 12.0.7
### Security (22 changes)
diff --git a/Dangerfile b/Dangerfile
index b65a9074078..7879c14b31e 100644
--- a/Dangerfile
+++ b/Dangerfile
@@ -5,6 +5,7 @@ require_relative 'lib/gitlab/danger/request_helper'
danger.import_plugin('danger/plugins/helper.rb')
danger.import_plugin('danger/plugins/roulette.rb')
+danger.import_plugin('danger/plugins/changelog.rb')
unless helper.release_automation?
GitlabDanger.new(helper.gitlab_helper).rule_names.each do |file|
diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION
index 22d6771a47d..93952905b6e 100644
--- a/GITALY_SERVER_VERSION
+++ b/GITALY_SERVER_VERSION
@@ -1 +1 @@
-1.72.1
+a4b6c71d4b7c1588587345e2dfe0c6bd7cc63a83
diff --git a/GITLAB_SHELL_VERSION b/GITLAB_SHELL_VERSION
index 2bd6f7e3927..0719d810258 100644
--- a/GITLAB_SHELL_VERSION
+++ b/GITLAB_SHELL_VERSION
@@ -1 +1 @@
-10.2.0
+10.3.0
diff --git a/GITLAB_WORKHORSE_VERSION b/GITLAB_WORKHORSE_VERSION
index 6092827e644..38b5f0deaee 100644
--- a/GITLAB_WORKHORSE_VERSION
+++ b/GITLAB_WORKHORSE_VERSION
@@ -1 +1 @@
-8.14.1
+8.18.0
diff --git a/Gemfile b/Gemfile
index bdfae5a24ec..b6f57297c07 100644
--- a/Gemfile
+++ b/Gemfile
@@ -22,6 +22,7 @@ gem 'rugged', '~> 0.28'
gem 'grape-path-helpers', '~> 1.1'
gem 'faraday', '~> 0.12'
+gem 'marginalia', '~> 1.8.0'
# Authentication libraries
gem 'devise', '~> 4.6'
@@ -101,7 +102,7 @@ gem 'hashie-forbidden_attributes'
gem 'kaminari', '~> 1.0'
# HAML
-gem 'hamlit', '~> 2.8.8'
+gem 'hamlit', '~> 2.11.0'
# Files attachments
gem 'carrierwave', '~> 1.3'
@@ -135,11 +136,11 @@ gem 'aws-sdk'
gem 'faraday_middleware-aws-signers-v4'
# Markdown and HTML processing
-gem 'html-pipeline', '~> 2.8'
+gem 'html-pipeline', '~> 2.12'
gem 'deckar01-task_list', '2.2.1'
gem 'gitlab-markup', '~> 1.7.0'
gem 'github-markup', '~> 1.7.0', require: 'github/markup'
-gem 'commonmarker', '~> 0.17'
+gem 'commonmarker', '~> 0.20'
gem 'RedCloth', '~> 4.3.2'
gem 'rdoc', '~> 6.0'
gem 'org-ruby', '~> 0.9.12'
@@ -170,8 +171,8 @@ group :unicorn do
end
group :puma do
- gem 'puma', '~> 3.12', require: false
- gem 'puma_worker_killer', require: false
+ gem 'gitlab-puma', '~> 4.3.1.gitlab.2', require: false
+ gem 'gitlab-puma_worker_killer', '~> 0.1.1.gitlab.1', require: false
gem 'rack-timeout', require: false
end
@@ -273,8 +274,8 @@ gem 'mimemagic', '~> 0.3.2'
gem 'fast_blank'
# Parse time & duration
-gem 'chronic', '~> 0.10.2'
-gem 'gitlab_chronic_duration', '~> 0.10.6.1'
+gem 'gitlab-chronic', '~> 0.10.5'
+gem 'gitlab_chronic_duration', '~> 0.10.6.2'
gem 'webpack-rails', '~> 0.9.10'
gem 'rack-proxy', '~> 0.6.0'
@@ -312,8 +313,7 @@ gem 'gettext', '~> 3.2.2', require: false, group: :development
gem 'batch-loader', '~> 1.4.0'
# Perf bar
-# https://gitlab.com/gitlab-org/gitlab/issues/13996
-gem 'gitlab-peek', '~> 0.0.1', require: 'peek'
+gem 'peek', '~> 1.1'
# Snowplow events tracking
gem 'snowplow-tracker', '~> 0.6.1'
@@ -347,20 +347,15 @@ group :development do
end
group :development, :test do
- gem 'bullet', '~> 5.5.0', require: !!ENV['ENABLE_BULLET']
+ gem 'bullet', '~> 6.0.2', require: !!ENV['ENABLE_BULLET']
gem 'pry-byebug', '~> 3.5.1', platform: :mri
gem 'pry-rails', '~> 0.3.4'
gem 'awesome_print', require: false
- gem 'fuubar', '~> 2.2.0'
gem 'database_cleaner', '~> 1.7.0'
gem 'factory_bot_rails', '~> 5.1.0'
- gem 'rspec-rails', '~> 3.8.0'
- gem 'rspec-retry', '~> 0.6.1'
- gem 'rspec_profiling', '~> 0.0.5'
- gem 'rspec-set', '~> 0.1.3'
- gem 'rspec-parameterized', require: false
+ gem 'rspec-rails', '~> 4.0.0.beta3'
# Prevent occasions where minitest is not bundled in packaged versions of ruby (see #3826)
gem 'minitest', '~> 5.11.0'
@@ -368,10 +363,6 @@ group :development, :test do
# Generate Fake data
gem 'ffaker', '~> 2.10'
- gem 'capybara', '~> 3.22.0'
- gem 'capybara-screenshot', '~> 1.0.22'
- gem 'selenium-webdriver', '~> 3.141'
-
gem 'spring', '~> 2.0.0'
gem 'spring-commands-rspec', '~> 1.0.4'
@@ -382,7 +373,7 @@ group :development, :test do
gem 'rubocop-rspec', '~> 1.22.1'
gem 'scss_lint', '~> 0.56.0', require: false
- gem 'haml_lint', '~> 0.31.0', require: false
+ gem 'haml_lint', '~> 0.34.0', require: false
gem 'simplecov', '~> 0.16.1', require: false
gem 'bundler-audit', '~> 0.5.0', require: false
@@ -390,7 +381,7 @@ group :development, :test do
gem 'knapsack', '~> 1.17'
- gem 'stackprof', '~> 0.2.10', require: false
+ gem 'stackprof', '~> 0.2.13', require: false
gem 'simple_po_parser', '~> 1.1.2', require: false
@@ -403,6 +394,16 @@ group :development, :test, :omnibus do
end
group :test do
+ gem 'fuubar', '~> 2.2.0'
+ gem 'rspec-retry', '~> 0.6.1'
+ gem 'rspec_profiling', '~> 0.0.5'
+ gem 'rspec-set', '~> 0.1.3'
+ gem 'rspec-parameterized', require: false
+
+ gem 'capybara', '~> 3.22.0'
+ gem 'capybara-screenshot', '~> 1.0.22'
+ gem 'selenium-webdriver', '~> 3.142'
+
gem 'shoulda-matchers', '~> 4.0.1', require: false
gem 'email_spec', '~> 2.2.0'
gem 'json-schema', '~> 2.8.0'
@@ -416,7 +417,7 @@ end
gem 'octokit', '~> 4.9'
-gem 'mail_room', '~> 0.9.1'
+gem 'mail_room', '~> 0.10.0'
gem 'email_reply_trimmer', '~> 0.1'
gem 'html2text'
@@ -451,7 +452,7 @@ group :ed25519 do
end
# Gitaly GRPC protocol definitions
-gem 'gitaly', '~> 1.70.0'
+gem 'gitaly', '~> 1.73.0'
gem 'grpc', '~> 1.24.0'
diff --git a/Gemfile.lock b/Gemfile.lock
index 469bea9d4fb..0e322705862 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -118,9 +118,9 @@ GEM
brakeman (4.2.1)
browser (2.5.3)
builder (3.2.3)
- bullet (5.5.1)
+ bullet (6.0.2)
activesupport (>= 3.0.0)
- uniform_notifier (~> 1.10.0)
+ uniform_notifier (~> 1.11)
bundler-audit (0.5.0)
bundler (~> 1.2)
thor (~> 0.18)
@@ -143,9 +143,7 @@ GEM
cause (0.1)
character_set (1.1.2)
charlock_holmes (0.7.6)
- childprocess (0.9.0)
- ffi (~> 1.0, >= 1.0.11)
- chronic (0.10.2)
+ childprocess (3.0.0)
chunky_png (1.3.5)
citrus (3.0.2)
claide (1.0.3)
@@ -157,7 +155,7 @@ GEM
coercible (1.0.0)
descendants_tracker (~> 0.0.1)
colored2 (3.1.2)
- commonmarker (0.17.13)
+ commonmarker (0.20.1)
ruby-enum (~> 0.5)
concord (0.1.5)
adamantium (~> 0.2.0)
@@ -287,7 +285,7 @@ GEM
fast_blank (1.0.0)
fast_gettext (1.6.0)
ffaker (2.10.0)
- ffi (1.11.1)
+ ffi (1.11.3)
flipper (0.17.1)
flipper-active_record (0.17.1)
activerecord (>= 4.2, < 7)
@@ -359,9 +357,11 @@ GEM
po_to_json (>= 1.0.0)
rails (>= 3.2.0)
git (1.5.0)
- gitaly (1.70.0)
+ gitaly (1.73.0)
grpc (~> 1.0)
github-markup (1.7.0)
+ gitlab-chronic (0.10.5)
+ numerizer (~> 0.2)
gitlab-labkit (0.7.0)
actionpack (>= 5.0.0, < 6.1.0)
activesupport (>= 5.0.0, < 6.1.0)
@@ -372,8 +372,11 @@ GEM
gitlab-license (1.0.0)
gitlab-markup (1.7.0)
gitlab-net-dns (0.9.1)
- gitlab-peek (0.0.1)
- railties (>= 4.0.0)
+ gitlab-puma (4.3.1.gitlab.2)
+ nio4r (~> 2.0)
+ gitlab-puma_worker_killer (0.1.1.gitlab.1)
+ get_process_mem (~> 0.2)
+ gitlab-puma (>= 2.7, < 5)
gitlab-sidekiq-fetcher (0.5.2)
sidekiq (~> 5)
gitlab-styles (2.8.0)
@@ -381,8 +384,8 @@ GEM
rubocop-gitlab-security (~> 0.1.0)
rubocop-performance (~> 1.1.0)
rubocop-rspec (~> 1.19)
- gitlab_chronic_duration (0.10.6.1)
- numerizer (~> 0.1.1)
+ gitlab_chronic_duration (0.10.6.2)
+ numerizer (~> 0.2)
gitlab_omniauth-ldap (2.1.1)
net-ldap (~> 0.16)
omniauth (~> 1.3)
@@ -460,17 +463,16 @@ GEM
guard (~> 2.1)
guard-compat (~> 1.1)
rspec (>= 2.99.0, < 4.0)
- haml (5.0.4)
+ haml (5.1.2)
temple (>= 0.8.0)
tilt
- haml_lint (0.31.0)
- haml (>= 4.0, < 5.1)
+ haml_lint (0.34.0)
+ haml (>= 4.0, < 5.2)
rainbow
- rake (>= 10, < 13)
rubocop (>= 0.50.0)
sysexits (~> 1.1)
- hamlit (2.8.8)
- temple (>= 0.8.0)
+ hamlit (2.11.0)
+ temple (>= 0.8.2)
thor
tilt
hangouts-chat (0.0.5)
@@ -484,7 +486,7 @@ GEM
hipchat (1.5.2)
httparty
mimemagic
- html-pipeline (2.8.4)
+ html-pipeline (2.12.2)
activesupport (>= 2)
nokogiri (>= 1.4)
html2text (0.2.0)
@@ -591,9 +593,12 @@ GEM
lumberjack (1.0.13)
mail (2.7.1)
mini_mime (>= 0.1.1)
- mail_room (0.9.1)
+ mail_room (0.10.0)
marcel (0.3.3)
mimemagic (~> 0.3.2)
+ marginalia (1.8.0)
+ actionpack (>= 2.3)
+ activerecord (>= 2.3)
memoist (0.16.0)
memoizable (0.4.2)
thread_safe (~> 0.3, >= 0.3.1)
@@ -622,7 +627,7 @@ GEM
net-ntp (2.1.3)
net-ssh (5.2.0)
netrc (0.11.0)
- nio4r (2.3.1)
+ nio4r (2.5.2)
no_proxy_fix (0.1.2)
nokogiri (1.10.5)
mini_portile2 (~> 2.4.0)
@@ -631,7 +636,7 @@ GEM
notiffany (0.1.3)
nenv (~> 0.1)
shellany (~> 0.0)
- numerizer (0.1.1)
+ numerizer (0.2.0)
oauth (0.5.4)
oauth2 (1.4.1)
faraday (>= 0.8, < 0.16.0)
@@ -724,6 +729,8 @@ GEM
parser (2.6.3.0)
ast (~> 2.4.0)
parslet (1.8.2)
+ peek (1.1.0)
+ railties (>= 4.0.0)
pg (1.1.4)
po_to_json (1.0.1)
json (>= 1.6.0)
@@ -749,10 +756,6 @@ GEM
pry-rails (0.3.6)
pry (>= 0.10.4)
public_suffix (3.1.1)
- puma (3.12.0)
- puma_worker_killer (0.1.0)
- get_process_mem (~> 0.2)
- puma (>= 2.7, < 4)
pyu-ruby-sasl (0.0.3.3)
raabro (1.1.6)
rack (2.0.7)
@@ -881,14 +884,14 @@ GEM
proc_to_ast
rspec (>= 2.13, < 4)
unparser
- rspec-rails (3.8.2)
- actionpack (>= 3.0)
- activesupport (>= 3.0)
- railties (>= 3.0)
- rspec-core (~> 3.8.0)
- rspec-expectations (~> 3.8.0)
- rspec-mocks (~> 3.8.0)
- rspec-support (~> 3.8.0)
+ rspec-rails (4.0.0.beta3)
+ actionpack (>= 4.2)
+ activesupport (>= 4.2)
+ railties (>= 4.2)
+ rspec-core (~> 3.8)
+ rspec-expectations (~> 3.8)
+ rspec-mocks (~> 3.8)
+ rspec-support (~> 3.8)
rspec-retry (0.6.1)
rspec-core (> 3.3)
rspec-set (0.1.3)
@@ -927,7 +930,7 @@ GEM
rubyntlm (0.6.2)
rubypants (0.2.0)
rubyzip (1.3.0)
- rugged (0.28.3.1)
+ rugged (0.28.4.1)
safe_yaml (1.0.4)
sanitize (4.6.6)
crass (~> 1.0.2)
@@ -956,9 +959,9 @@ GEM
seed-fu (2.3.7)
activerecord (>= 3.1)
activesupport (>= 3.1)
- selenium-webdriver (3.141.0)
- childprocess (~> 0.5)
- rubyzip (~> 1.2, >= 1.2.2)
+ selenium-webdriver (3.142.6)
+ childprocess (>= 0.5, < 4.0)
+ rubyzip (>= 1.2.2)
sentry-raven (2.9.0)
faraday (>= 0.7.6, < 1.0)
settingslogic (2.0.9)
@@ -1002,7 +1005,7 @@ GEM
sprockets (>= 3.0.0)
sqlite3 (1.3.13)
sshkey (2.0.0)
- stackprof (0.2.10)
+ stackprof (0.2.13)
state_machines (0.5.0)
state_machines-activemodel (0.7.1)
activemodel (>= 4.1)
@@ -1017,7 +1020,7 @@ GEM
sys-filesystem (1.1.6)
ffi
sysexits (1.2.0)
- temple (0.8.1)
+ temple (0.8.2)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
test-prof (0.10.0)
@@ -1026,10 +1029,10 @@ GEM
daemons (~> 1.0, >= 1.0.9)
eventmachine (~> 1.0, >= 1.0.4)
rack (>= 1, < 3)
- thor (0.19.4)
+ thor (0.20.3)
thread_safe (0.3.6)
thrift (0.11.0.0)
- tilt (2.0.9)
+ tilt (2.0.10)
timecop (0.8.1)
timfel-krb5-auth (0.8.3)
toml (0.2.0)
@@ -1057,7 +1060,7 @@ GEM
unicorn-worker-killer (0.4.4)
get_process_mem (~> 0)
unicorn (>= 4, < 6)
- uniform_notifier (1.10.0)
+ uniform_notifier (1.13.0)
unleash (0.1.5)
murmurhash3 (~> 0.1.6)
unparser (0.4.5)
@@ -1139,14 +1142,13 @@ DEPENDENCIES
bootstrap_form (~> 4.2.0)
brakeman (~> 4.2)
browser (~> 2.5)
- bullet (~> 5.5.0)
+ bullet (~> 6.0.2)
bundler-audit (~> 0.5.0)
capybara (~> 3.22.0)
capybara-screenshot (~> 1.0.22)
carrierwave (~> 1.3)
charlock_holmes (~> 0.7.5)
- chronic (~> 0.10.2)
- commonmarker (~> 0.17)
+ commonmarker (~> 0.20)
concurrent-ruby (~> 1.1)
connection_pool (~> 2.0)
countries (~> 3.0)
@@ -1194,16 +1196,18 @@ DEPENDENCIES
gettext (~> 3.2.2)
gettext_i18n_rails (~> 1.8.0)
gettext_i18n_rails_js (~> 1.3)
- gitaly (~> 1.70.0)
+ gitaly (~> 1.73.0)
github-markup (~> 1.7.0)
+ gitlab-chronic (~> 0.10.5)
gitlab-labkit (~> 0.5)
gitlab-license (~> 1.0)
gitlab-markup (~> 1.7.0)
gitlab-net-dns (~> 0.9.1)
- gitlab-peek (~> 0.0.1)
+ gitlab-puma (~> 4.3.1.gitlab.2)
+ gitlab-puma_worker_killer (~> 0.1.1.gitlab.1)
gitlab-sidekiq-fetcher (= 0.5.2)
gitlab-styles (~> 2.7)
- gitlab_chronic_duration (~> 0.10.6.1)
+ gitlab_chronic_duration (~> 0.10.6.2)
gitlab_omniauth-ldap (~> 2.1.1)
gon (~> 6.2)
google-api-client (~> 0.23)
@@ -1219,13 +1223,13 @@ DEPENDENCIES
grpc (~> 1.24.0)
gssapi
guard-rspec
- haml_lint (~> 0.31.0)
- hamlit (~> 2.8.8)
+ haml_lint (~> 0.34.0)
+ hamlit (~> 2.11.0)
hangouts-chat (~> 0.0.5)
hashie-forbidden_attributes
health_check (~> 2.6.0)
hipchat (~> 1.5.0)
- html-pipeline (~> 2.8)
+ html-pipeline (~> 2.12)
html2text
httparty (~> 0.16.4)
icalendar
@@ -1243,7 +1247,8 @@ DEPENDENCIES
licensee (~> 8.9)
lograge (~> 0.5)
loofah (~> 2.2)
- mail_room (~> 0.9.1)
+ mail_room (~> 0.10.0)
+ marginalia (~> 1.8.0)
memory_profiler (~> 0.9)
method_source (~> 0.8)
mimemagic (~> 0.3.2)
@@ -1275,13 +1280,12 @@ DEPENDENCIES
omniauth_crowd (~> 2.2.0)
omniauth_openid_connect (~> 0.3.3)
org-ruby (~> 0.9.12)
+ peek (~> 1.1)
pg (~> 1.1)
premailer-rails (~> 1.10.3)
prometheus-client-mmap (~> 0.9.10)
pry-byebug (~> 3.5.1)
pry-rails (~> 0.3.4)
- puma (~> 3.12)
- puma_worker_killer
rack (~> 2.0.7)
rack-attack (~> 6.2.0)
rack-cors (~> 1.0.0)
@@ -1307,7 +1311,7 @@ DEPENDENCIES
rouge (~> 3.11.0)
rqrcode-rails3 (~> 0.1.7)
rspec-parameterized
- rspec-rails (~> 3.8.0)
+ rspec-rails (~> 4.0.0.beta3)
rspec-retry (~> 0.6.1)
rspec-set (~> 0.1.3)
rspec_junit_formatter
@@ -1325,7 +1329,7 @@ DEPENDENCIES
sassc-rails (~> 2.1.0)
scss_lint (~> 0.56.0)
seed-fu (~> 2.3.7)
- selenium-webdriver (~> 3.141)
+ selenium-webdriver (~> 3.142)
sentry-raven (~> 2.9)
settingslogic (~> 2.0.9)
shoulda-matchers (~> 4.0.1)
@@ -1339,7 +1343,7 @@ DEPENDENCIES
spring-commands-rspec (~> 1.0.4)
sprockets (~> 3.7.0)
sshkey (~> 2.0)
- stackprof (~> 0.2.10)
+ stackprof (~> 0.2.13)
state_machines-activerecord (~> 0.6.0)
sys-filesystem (~> 1.1.6)
test-prof (~> 0.10.0)
diff --git a/VERSION b/VERSION
index 8c966ec24de..56219811eaa 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-12.5.5
+12.6.0-pre
diff --git a/app/assets/javascripts/api.js b/app/assets/javascripts/api.js
index aee9990bc0b..071ae8ca8cf 100644
--- a/app/assets/javascripts/api.js
+++ b/app/assets/javascripts/api.js
@@ -5,6 +5,8 @@ import { joinPaths } from './lib/utils/url_utility';
import flash from '~/flash';
import { __ } from '~/locale';
+const DEFAULT_PER_PAGE = 20;
+
const Api = {
groupsPath: '/api/:version/groups.json',
groupPath: '/api/:version/groups/:id',
@@ -41,7 +43,7 @@ const Api = {
releasesPath: '/api/:version/projects/:id/releases',
releasePath: '/api/:version/projects/:id/releases/:tag_name',
mergeRequestsPipeline: '/api/:version/projects/:id/merge_requests/:merge_request_iid/pipelines',
- adminStatisticsPath: 'api/:version/application/statistics',
+ adminStatisticsPath: '/api/:version/application/statistics',
group(groupId, callback) {
const url = Api.buildUrl(Api.groupPath).replace(':id', groupId);
@@ -66,7 +68,7 @@ const Api = {
params: Object.assign(
{
search: query,
- per_page: 20,
+ per_page: DEFAULT_PER_PAGE,
},
options,
),
@@ -90,7 +92,7 @@ const Api = {
.get(url, {
params: {
search: query,
- per_page: 20,
+ per_page: DEFAULT_PER_PAGE,
},
})
.then(({ data }) => callback(data));
@@ -101,7 +103,7 @@ const Api = {
const url = Api.buildUrl(Api.projectsPath);
const defaults = {
search: query,
- per_page: 20,
+ per_page: DEFAULT_PER_PAGE,
simple: true,
};
@@ -126,7 +128,7 @@ const Api = {
.get(url, {
params: {
search: query,
- per_page: 20,
+ per_page: DEFAULT_PER_PAGE,
...options,
},
})
@@ -235,7 +237,7 @@ const Api = {
const url = Api.buildUrl(Api.groupProjectsPath).replace(':id', groupId);
const defaults = {
search: query,
- per_page: 20,
+ per_page: DEFAULT_PER_PAGE,
};
return axios
.get(url, {
@@ -325,7 +327,7 @@ const Api = {
params: Object.assign(
{
search: query,
- per_page: 20,
+ per_page: DEFAULT_PER_PAGE,
},
options,
),
@@ -355,7 +357,7 @@ const Api = {
const url = Api.buildUrl(Api.userProjectsPath).replace(':id', userId);
const defaults = {
search: query,
- per_page: 20,
+ per_page: DEFAULT_PER_PAGE,
};
return axios
.get(url, {
@@ -371,7 +373,7 @@ const Api = {
return axios.get(url, {
params: {
search: query,
- per_page: 20,
+ per_page: DEFAULT_PER_PAGE,
...options,
},
});
@@ -403,10 +405,15 @@ const Api = {
return axios.post(url);
},
- releases(id) {
+ releases(id, options = {}) {
const url = Api.buildUrl(this.releasesPath).replace(':id', encodeURIComponent(id));
- return axios.get(url);
+ return axios.get(url, {
+ params: {
+ per_page: DEFAULT_PER_PAGE,
+ ...options,
+ },
+ });
},
release(projectPath, tagName) {
diff --git a/app/assets/javascripts/autosave.js b/app/assets/javascripts/autosave.js
index 7652b67ae1e..07d79ea1c70 100644
--- a/app/assets/javascripts/autosave.js
+++ b/app/assets/javascripts/autosave.js
@@ -1,9 +1,9 @@
-/* eslint-disable no-param-reassign, no-void, consistent-return */
+/* eslint-disable no-param-reassign, consistent-return */
import AccessorUtilities from './lib/utils/accessor';
export default class Autosave {
- constructor(field, key) {
+ constructor(field, key, fallbackKey) {
this.field = field;
this.isLocalStorageAvailable = AccessorUtilities.isLocalStorageAccessSafe();
@@ -11,6 +11,7 @@ export default class Autosave {
key = key.join('/');
}
this.key = `autosave/${key}`;
+ this.fallbackKey = fallbackKey;
this.field.data('autosave', this);
this.restore();
this.field.on('input', () => this.save());
@@ -21,9 +22,12 @@ export default class Autosave {
if (!this.field.length) return;
const text = window.localStorage.getItem(this.key);
+ const fallbackText = window.localStorage.getItem(this.fallbackKey);
- if ((text != null ? text.length : void 0) > 0) {
+ if (text) {
this.field.val(text);
+ } else if (fallbackText) {
+ this.field.val(fallbackText);
}
this.field.trigger('input');
@@ -41,7 +45,10 @@ export default class Autosave {
const text = this.field.val();
- if (this.isLocalStorageAvailable && (text != null ? text.length : void 0) > 0) {
+ if (this.isLocalStorageAvailable && text) {
+ if (this.fallbackKey) {
+ window.localStorage.setItem(this.fallbackKey, text);
+ }
return window.localStorage.setItem(this.key, text);
}
@@ -51,6 +58,7 @@ export default class Autosave {
reset() {
if (!this.isLocalStorageAvailable) return;
+ window.localStorage.removeItem(this.fallbackKey);
return window.localStorage.removeItem(this.key);
}
diff --git a/app/assets/javascripts/badges/components/badge.vue b/app/assets/javascripts/badges/components/badge.vue
index eb720f5380b..00c0334db77 100644
--- a/app/assets/javascripts/badges/components/badge.vue
+++ b/app/assets/javascripts/badges/components/badge.vue
@@ -1,6 +1,6 @@
<script>
-import Icon from '~/vue_shared/components/icon.vue';
import { GlLoadingIcon, GlTooltipDirective } from '@gitlab/ui';
+import Icon from '~/vue_shared/components/icon.vue';
export default {
// name: 'Badge' is a false positive: https://gitlab.com/gitlab-org/frontend/eslint-plugin-i18n/issues/25
@@ -14,6 +14,11 @@ export default {
GlTooltip: GlTooltipDirective,
},
props: {
+ name: {
+ type: String,
+ required: false,
+ default: '',
+ },
imageUrl: {
type: String,
required: true,
diff --git a/app/assets/javascripts/badges/components/badge_form.vue b/app/assets/javascripts/badges/components/badge_form.vue
index df74eb2c2f7..19668d7e232 100644
--- a/app/assets/javascripts/badges/components/badge_form.vue
+++ b/app/assets/javascripts/badges/components/badge_form.vue
@@ -1,10 +1,10 @@
<script>
import _ from 'underscore';
import { mapActions, mapState } from 'vuex';
+import { GlLoadingIcon, GlFormInput, GlFormGroup } from '@gitlab/ui';
import createFlash from '~/flash';
import { s__, sprintf } from '~/locale';
import LoadingButton from '~/vue_shared/components/loading_button.vue';
-import { GlLoadingIcon } from '@gitlab/ui';
import createEmptyBadge from '../empty_badge';
import Badge from './badge.vue';
@@ -16,6 +16,8 @@ export default {
Badge,
LoadingButton,
GlLoadingIcon,
+ GlFormInput,
+ GlFormGroup,
},
props: {
isEditing: {
@@ -64,6 +66,18 @@ export default {
renderedLinkUrl() {
return this.renderedBadge ? this.renderedBadge.renderedLinkUrl : '';
},
+ name: {
+ get() {
+ return this.badge ? this.badge.name : '';
+ },
+ set(name) {
+ const badge = this.badge || createEmptyBadge();
+ this.updateBadgeInForm({
+ ...badge,
+ name,
+ });
+ },
+ },
imageUrl: {
get() {
return this.badge ? this.badge.imageUrl : '';
@@ -154,6 +168,10 @@ export default {
novalidate
@submit.prevent.stop="onSubmit"
>
+ <gl-form-group :label="s__('Badges|Name')" label-for="badge-name">
+ <gl-form-input id="badge-name" v-model="name" />
+ </gl-form-group>
+
<div class="form-group">
<label for="badge-link-url" class="label-bold">{{ s__('Badges|Link') }}</label>
<p v-html="helpText"></p>
diff --git a/app/assets/javascripts/badges/components/badge_list_row.vue b/app/assets/javascripts/badges/components/badge_list_row.vue
index cad5611c8c5..bb363b8d85e 100644
--- a/app/assets/javascripts/badges/components/badge_list_row.vue
+++ b/app/assets/javascripts/badges/components/badge_list_row.vue
@@ -1,8 +1,8 @@
<script>
import { mapActions, mapState } from 'vuex';
+import { GlLoadingIcon } from '@gitlab/ui';
import { s__ } from '~/locale';
import Icon from '~/vue_shared/components/icon.vue';
-import { GlLoadingIcon } from '@gitlab/ui';
import { PROJECT_BADGE } from '../constants';
import Badge from './badge.vue';
@@ -43,13 +43,14 @@ export default {
<badge
:image-url="badge.renderedImageUrl"
:link-url="badge.renderedLinkUrl"
- class="table-section section-40"
+ class="table-section section-30"
/>
- <span class="table-section section-30 str-truncated">{{ badge.linkUrl }}</span>
- <div class="table-section section-15">
+ <div class="table-section section-30">
+ <label class="label-bold str-truncated mb-0">{{ badge.name }}</label>
<span class="badge badge-pill">{{ badgeKindText }}</span>
</div>
- <div class="table-section section-15 table-button-footer">
+ <span class="table-section section-30 str-truncated">{{ badge.linkUrl }}</span>
+ <div class="table-section section-10 table-button-footer">
<div v-if="canEditBadge" class="table-action-buttons">
<button
:disabled="badge.isDeleting"
diff --git a/app/assets/javascripts/badges/empty_badge.js b/app/assets/javascripts/badges/empty_badge.js
index 49a9b5e1be8..527f233bb33 100644
--- a/app/assets/javascripts/badges/empty_badge.js
+++ b/app/assets/javascripts/badges/empty_badge.js
@@ -1,4 +1,5 @@
export default () => ({
+ name: '',
imageUrl: '',
isDeleting: false,
linkUrl: '',
diff --git a/app/assets/javascripts/badges/store/actions.js b/app/assets/javascripts/badges/store/actions.js
index 5542278b3e0..806c2423e7e 100644
--- a/app/assets/javascripts/badges/store/actions.js
+++ b/app/assets/javascripts/badges/store/actions.js
@@ -1,13 +1,9 @@
import axios from '~/lib/utils/axios_utils';
import types from './mutation_types';
+import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils';
export const transformBackendBadge = badge => ({
- id: badge.id,
- imageUrl: badge.image_url,
- kind: badge.kind,
- linkUrl: badge.link_url,
- renderedImageUrl: badge.rendered_image_url,
- renderedLinkUrl: badge.rendered_link_url,
+ ...convertObjectPropsToCamelCase(badge, true),
isDeleting: false,
});
@@ -27,6 +23,7 @@ export default {
dispatch('requestNewBadge');
return axios
.post(endpoint, {
+ name: newBadge.name,
image_url: newBadge.imageUrl,
link_url: newBadge.linkUrl,
})
@@ -141,6 +138,7 @@ export default {
dispatch('requestUpdatedBadge');
return axios
.put(endpoint, {
+ name: badge.name,
image_url: badge.imageUrl,
link_url: badge.linkUrl,
})
diff --git a/app/assets/javascripts/behaviors/markdown/gfm_auto_complete.js b/app/assets/javascripts/behaviors/markdown/gfm_auto_complete.js
index b7200150925..6bbd2133344 100644
--- a/app/assets/javascripts/behaviors/markdown/gfm_auto_complete.js
+++ b/app/assets/javascripts/behaviors/markdown/gfm_auto_complete.js
@@ -1,6 +1,6 @@
import $ from 'jquery';
-import { parseBoolean } from '~/lib/utils/common_utils';
import GfmAutoComplete from 'ee_else_ce/gfm_auto_complete';
+import { parseBoolean } from '~/lib/utils/common_utils';
export default function initGFMInput() {
$('.js-gfm-input:not(.js-vue-textarea)').each((i, el) => {
diff --git a/app/assets/javascripts/behaviors/markdown/nodes/image.js b/app/assets/javascripts/behaviors/markdown/nodes/image.js
index c225a5ed876..e839396330e 100644
--- a/app/assets/javascripts/behaviors/markdown/nodes/image.js
+++ b/app/assets/javascripts/behaviors/markdown/nodes/image.js
@@ -1,8 +1,8 @@
/* eslint-disable class-methods-use-this */
import { Image as BaseImage } from 'tiptap-extensions';
-import { placeholderImage } from '~/lazy_loader';
import { defaultMarkdownSerializer } from 'prosemirror-markdown';
+import { placeholderImage } from '~/lazy_loader';
export default class Image extends BaseImage {
get schema() {
diff --git a/app/assets/javascripts/blob/file_template_mediator.js b/app/assets/javascripts/blob/file_template_mediator.js
index aedd8004ea5..2df7a84ead0 100644
--- a/app/assets/javascripts/blob/file_template_mediator.js
+++ b/app/assets/javascripts/blob/file_template_mediator.js
@@ -1,6 +1,6 @@
+import $ from 'jquery';
import Api from '~/api';
-import $ from 'jquery';
import Flash from '../flash';
import FileTemplateTypeSelector from './template_selectors/type_selector';
import BlobCiYamlSelector from './template_selectors/ci_yaml_selector';
diff --git a/app/assets/javascripts/blob/openapi/index.js b/app/assets/javascripts/blob/openapi/index.js
new file mode 100644
index 00000000000..a6f28de799f
--- /dev/null
+++ b/app/assets/javascripts/blob/openapi/index.js
@@ -0,0 +1,19 @@
+import { SwaggerUIBundle } from 'swagger-ui-dist';
+import flash from '~/flash';
+import { __ } from '~/locale';
+
+export default () => {
+ const el = document.getElementById('js-openapi-viewer');
+
+ Promise.all([import(/* webpackChunkName: 'openapi' */ 'swagger-ui-dist/swagger-ui.css')])
+ .then(() => {
+ SwaggerUIBundle({
+ url: el.dataset.endpoint,
+ dom_id: '#js-openapi-viewer',
+ });
+ })
+ .catch(error => {
+ flash(__('Something went wrong while initializing the OpenAPI viewer'));
+ throw error;
+ });
+};
diff --git a/app/assets/javascripts/blob/openapi_viewer.js b/app/assets/javascripts/blob/openapi_viewer.js
new file mode 100644
index 00000000000..0cacc33571f
--- /dev/null
+++ b/app/assets/javascripts/blob/openapi_viewer.js
@@ -0,0 +1,3 @@
+import renderOpenApi from './openapi';
+
+export default renderOpenApi;
diff --git a/app/assets/javascripts/blob/viewer/index.js b/app/assets/javascripts/blob/viewer/index.js
index 07e4dde41d9..742404da46c 100644
--- a/app/assets/javascripts/blob/viewer/index.js
+++ b/app/assets/javascripts/blob/viewer/index.js
@@ -39,6 +39,9 @@ export default class BlobViewer {
case 'notebook':
initViewer(import(/* webpackChunkName: 'notebook_viewer' */ '../notebook_viewer'));
break;
+ case 'openapi':
+ initViewer(import(/* webpackChunkName: 'openapi_viewer' */ '../openapi_viewer'));
+ break;
case 'pdf':
initViewer(import(/* webpackChunkName: 'pdf_viewer' */ '../pdf_viewer'));
break;
diff --git a/app/assets/javascripts/boards/components/board.js b/app/assets/javascripts/boards/components/board.js
index 58759fd1efe..8ebdfede8f7 100644
--- a/app/assets/javascripts/boards/components/board.js
+++ b/app/assets/javascripts/boards/components/board.js
@@ -1,6 +1,8 @@
import $ from 'jquery';
import Sortable from 'sortablejs';
import Vue from 'vue';
+import { GlButtonGroup, GlButton, GlTooltip } from '@gitlab/ui';
+import isWipLimitsOn from 'ee_else_ce/boards/mixins/is_wip_limits';
import { n__, s__ } from '~/locale';
import Icon from '~/vue_shared/components/icon.vue';
import Tooltip from '~/vue_shared/directives/tooltip';
@@ -8,8 +10,10 @@ import AccessorUtilities from '../../lib/utils/accessor';
import BoardBlankState from './board_blank_state.vue';
import BoardDelete from './board_delete';
import BoardList from './board_list.vue';
+import IssueCount from './issue_count.vue';
import boardsStore from '../stores/boards_store';
import { getBoardSortableDefaultOptions, sortableEnd } from '../mixins/sortable_default_options';
+import { ListType } from '../constants';
export default Vue.extend({
components: {
@@ -17,10 +21,15 @@ export default Vue.extend({
BoardDelete,
BoardList,
Icon,
+ GlButtonGroup,
+ IssueCount,
+ GlButton,
+ GlTooltip,
},
directives: {
Tooltip,
},
+ mixins: [isWipLimitsOn],
props: {
list: {
type: Object,
@@ -53,6 +62,11 @@ export default Vue.extend({
isLoggedIn() {
return Boolean(gon.current_user_id);
},
+ showListHeaderButton() {
+ return (
+ !this.disabled && this.list.type !== ListType.closed && this.list.type !== ListType.blank
+ );
+ },
counterTooltip() {
const { issuesSize } = this.list;
return `${n__('%d issue', '%d issues', issuesSize)}`;
@@ -61,11 +75,19 @@ export default Vue.extend({
return this.list.isExpanded ? s__('Boards|Collapse') : s__('Boards|Expand');
},
isNewIssueShown() {
+ return this.list.type === ListType.backlog || this.showListHeaderButton;
+ },
+ isSettingsShown() {
return (
- this.list.type === 'backlog' ||
- (!this.disabled && this.list.type !== 'closed' && this.list.type !== 'blank')
+ this.list.type !== ListType.backlog &&
+ this.showListHeaderButton &&
+ this.list.isExpanded &&
+ this.isWipLimitsOn
);
},
+ showBoardListAndBoardInfo() {
+ return this.list.type !== ListType.blank && this.list.type !== ListType.promotion;
+ },
uniqueKey() {
// eslint-disable-next-line @gitlab/i18n/no-non-i18n-strings
return `boards.${this.boardId}.${this.list.type}.${this.list.id}`;
diff --git a/app/assets/javascripts/boards/components/board_blank_state.vue b/app/assets/javascripts/boards/components/board_blank_state.vue
index 9a1da810ad0..afdf0290e8e 100644
--- a/app/assets/javascripts/boards/components/board_blank_state.vue
+++ b/app/assets/javascripts/boards/components/board_blank_state.vue
@@ -1,7 +1,7 @@
<script>
+import Cookies from 'js-cookie';
import { __ } from '~/locale';
import ListLabel from '~/boards/models/label';
-import Cookies from 'js-cookie';
import boardsStore from '../stores/boards_store';
export default {
diff --git a/app/assets/javascripts/boards/components/board_list.vue b/app/assets/javascripts/boards/components/board_list.vue
index b8439bc8741..1e54d4d6b7d 100644
--- a/app/assets/javascripts/boards/components/board_list.vue
+++ b/app/assets/javascripts/boards/components/board_list.vue
@@ -71,6 +71,9 @@ export default {
total: this.list.issuesSize,
});
},
+ issuesSizeExceedsMax() {
+ return this.list.maxIssueCount > 0 && this.list.issuesSize > this.list.maxIssueCount;
+ },
},
watch: {
filters: {
@@ -435,7 +438,7 @@ export default {
ref="list"
:data-board="list.id"
:data-board-type="list.type"
- :class="{ 'is-smaller': showIssueForm }"
+ :class="{ 'is-smaller': showIssueForm, 'bg-danger-100': issuesSizeExceedsMax }"
class="board-list w-100 h-100 list-unstyled mb-0 p-1 js-board-list"
>
<board-card
diff --git a/app/assets/javascripts/boards/components/boards_selector.vue b/app/assets/javascripts/boards/components/boards_selector.vue
index 32491dfbcb6..5d7be0c705a 100644
--- a/app/assets/javascripts/boards/components/boards_selector.vue
+++ b/app/assets/javascripts/boards/components/boards_selector.vue
@@ -315,8 +315,7 @@ export default {
<gl-dropdown-item
v-if="showDelete"
- class="text-danger"
- data-qa-selector="delete_board_button"
+ class="text-danger js-delete-board"
@click.prevent="showPage('delete')"
>
{{ s__('IssueBoards|Delete board') }}
diff --git a/app/assets/javascripts/boards/components/issue_card_inner.vue b/app/assets/javascripts/boards/components/issue_card_inner.vue
index d37e49bab46..7f7510545c6 100644
--- a/app/assets/javascripts/boards/components/issue_card_inner.vue
+++ b/app/assets/javascripts/boards/components/issue_card_inner.vue
@@ -2,10 +2,10 @@
import _ from 'underscore';
import { mapState } from 'vuex';
import { GlTooltipDirective } from '@gitlab/ui';
+import issueCardInner from 'ee_else_ce/boards/mixins/issue_card_inner';
import { sprintf, __ } from '~/locale';
import Icon from '~/vue_shared/components/icon.vue';
import TooltipOnTruncate from '~/vue_shared/components/tooltip_on_truncate.vue';
-import issueCardInner from 'ee_else_ce/boards/mixins/issue_card_inner';
import UserAvatarLink from '../../vue_shared/components/user_avatar/user_avatar_link.vue';
import IssueDueDate from './issue_due_date.vue';
import IssueTimeEstimate from './issue_time_estimate.vue';
diff --git a/app/assets/javascripts/boards/components/issue_count.vue b/app/assets/javascripts/boards/components/issue_count.vue
new file mode 100644
index 00000000000..c50a3c1c0d3
--- /dev/null
+++ b/app/assets/javascripts/boards/components/issue_count.vue
@@ -0,0 +1,36 @@
+<script>
+export default {
+ name: 'IssueCount',
+ props: {
+ maxIssueCount: {
+ type: Number,
+ required: false,
+ default: 0,
+ },
+ issuesSize: {
+ type: Number,
+ required: false,
+ default: 0,
+ },
+ },
+ computed: {
+ isMaxLimitSet() {
+ return this.maxIssueCount !== 0;
+ },
+ issuesExceedMax() {
+ return this.isMaxLimitSet && this.issuesSize > this.maxIssueCount;
+ },
+ },
+};
+</script>
+
+<template>
+ <div class="issue-count">
+ <span class="js-issue-size" :class="{ 'text-danger': issuesExceedMax }">
+ {{ issuesSize }}
+ </span>
+ <span v-if="isMaxLimitSet" class="js-max-issue-size">
+ {{ maxIssueCount }}
+ </span>
+ </div>
+</template>
diff --git a/app/assets/javascripts/boards/components/issue_due_date.vue b/app/assets/javascripts/boards/components/issue_due_date.vue
index 3bc7f13a9e6..a32ebdab5e1 100644
--- a/app/assets/javascripts/boards/components/issue_due_date.vue
+++ b/app/assets/javascripts/boards/components/issue_due_date.vue
@@ -35,10 +35,10 @@ export default {
title() {
const timeago = getTimeago();
const { timeDifference, standardDateFormat } = this;
- const formatedDate = standardDateFormat;
+ const formattedDate = standardDateFormat;
if (timeDifference >= -1 && timeDifference < 7) {
- return `${timeago.format(this.issueDueDate)} (${formatedDate})`;
+ return `${timeago.format(this.issueDueDate)} (${formattedDate})`;
}
return timeago.format(this.issueDueDate);
diff --git a/app/assets/javascripts/boards/components/modal/index.vue b/app/assets/javascripts/boards/components/modal/index.vue
index 618c2ada1f8..20344b66140 100644
--- a/app/assets/javascripts/boards/components/modal/index.vue
+++ b/app/assets/javascripts/boards/components/modal/index.vue
@@ -1,5 +1,6 @@
<script>
/* global ListIssue */
+import { GlLoadingIcon } from '@gitlab/ui';
import { urlParamsToObject } from '~/lib/utils/common_utils';
import boardsStore from '~/boards/stores/boards_store';
import ModalHeader from './header.vue';
@@ -7,7 +8,6 @@ import ModalList from './list.vue';
import ModalFooter from './footer.vue';
import EmptyState from './empty_state.vue';
import ModalStore from '../../stores/modal_store';
-import { GlLoadingIcon } from '@gitlab/ui';
export default {
components: {
diff --git a/app/assets/javascripts/boards/components/project_select.vue b/app/assets/javascripts/boards/components/project_select.vue
index e5ebb887ce0..4a50b1e2efc 100644
--- a/app/assets/javascripts/boards/components/project_select.vue
+++ b/app/assets/javascripts/boards/components/project_select.vue
@@ -1,9 +1,9 @@
<script>
-import { __ } from '~/locale';
import $ from 'jquery';
import _ from 'underscore';
-import Icon from '~/vue_shared/components/icon.vue';
import { GlLoadingIcon } from '@gitlab/ui';
+import Icon from '~/vue_shared/components/icon.vue';
+import { __ } from '~/locale';
import eventHub from '../eventhub';
import Api from '../../api';
import { featureAccessLevel } from '~/pages/projects/shared/permissions/constants';
diff --git a/app/assets/javascripts/boards/constants.js b/app/assets/javascripts/boards/constants.js
index 3c66c7a0660..dcecfe5e1bb 100644
--- a/app/assets/javascripts/boards/constants.js
+++ b/app/assets/javascripts/boards/constants.js
@@ -4,6 +4,8 @@ export const ListType = {
backlog: 'backlog',
closed: 'closed',
label: 'label',
+ promotion: 'promotion',
+ blank: 'blank',
};
export default {
diff --git a/app/assets/javascripts/boards/index.js b/app/assets/javascripts/boards/index.js
index e76e2341dfd..f1b481fc386 100644
--- a/app/assets/javascripts/boards/index.js
+++ b/app/assets/javascripts/boards/index.js
@@ -1,6 +1,22 @@
import $ from 'jquery';
import Vue from 'vue';
+import 'ee_else_ce/boards/models/issue';
+import 'ee_else_ce/boards/models/list';
+import Board from 'ee_else_ce/boards/components/board';
+import BoardSidebar from 'ee_else_ce/boards/components/board_sidebar';
+import initNewListDropdown from 'ee_else_ce/boards/components/new_list_dropdown';
+import boardConfigToggle from 'ee_else_ce/boards/config_toggle';
+import toggleFocusMode from 'ee_else_ce/boards/toggle_focus';
+import toggleLabels from 'ee_else_ce/boards/toggle_labels';
+import {
+ setPromotionState,
+ setWeigthFetchingState,
+ setEpicFetchingState,
+ getMilestoneTitle,
+ getBoardsModalData,
+} from 'ee_else_ce/boards/ee_functions';
+
import Flash from '~/flash';
import { __ } from '~/locale';
import './models/label';
@@ -9,35 +25,19 @@ import './models/assignee';
import FilteredSearchBoards from '~/boards/filtered_search_boards';
import eventHub from '~/boards/eventhub';
import sidebarEventHub from '~/sidebar/event_hub';
-import 'ee_else_ce/boards/models/issue';
-import 'ee_else_ce/boards/models/list';
import '~/boards/models/milestone';
import '~/boards/models/project';
import store from '~/boards/stores';
import boardsStore from '~/boards/stores/boards_store';
import ModalStore from '~/boards/stores/modal_store';
-import BoardService from 'ee_else_ce/boards/services/board_service';
import modalMixin from '~/boards/mixins/modal_mixins';
import '~/boards/filters/due_date_filters';
-import Board from 'ee_else_ce/boards/components/board';
-import BoardSidebar from 'ee_else_ce/boards/components/board_sidebar';
-import initNewListDropdown from 'ee_else_ce/boards/components/new_list_dropdown';
import BoardAddIssuesModal from '~/boards/components/modal/index.vue';
import {
NavigationType,
convertObjectPropsToCamelCase,
parseBoolean,
} from '~/lib/utils/common_utils';
-import boardConfigToggle from 'ee_else_ce/boards/config_toggle';
-import toggleFocusMode from 'ee_else_ce/boards/toggle_focus';
-import toggleLabels from 'ee_else_ce/boards/toggle_labels';
-import {
- setPromotionState,
- setWeigthFetchingState,
- setEpicFetchingState,
- getMilestoneTitle,
- getBoardsModalData,
-} from 'ee_else_ce/boards/ee_functions';
import mountMultipleBoardsSwitcher from './mount_multiple_boards_switcher';
let issueBoardsApp;
@@ -68,6 +68,8 @@ export default () => {
Board,
BoardSidebar,
BoardAddIssuesModal,
+ BoardSettingsSidebar: () =>
+ import('ee_component/boards/components/board_settings_sidebar.vue'),
},
store,
data: {
@@ -97,7 +99,6 @@ export default () => {
bulkUpdatePath: this.bulkUpdatePath,
boardId: this.boardId,
});
- gl.boardService = new BoardService();
boardsStore.rootPath = this.boardsEndpoint;
eventHub.$on('updateTokens', this.updateTokens);
@@ -116,7 +117,7 @@ export default () => {
this.filterManager.setup();
boardsStore.disabled = this.disabled;
- gl.boardService
+ boardsStore
.all()
.then(res => res.data)
.then(lists => {
@@ -155,7 +156,8 @@ export default () => {
newIssue.setFetchingState('subscriptions', true);
setWeigthFetchingState(newIssue, true);
setEpicFetchingState(newIssue, true);
- BoardService.getIssueInfo(sidebarInfoEndpoint)
+ boardsStore
+ .getIssueInfo(sidebarInfoEndpoint)
.then(res => res.data)
.then(data => {
const {
@@ -166,6 +168,7 @@ export default () => {
humanTotalTimeSpent,
weight,
epic,
+ assignees,
} = convertObjectPropsToCamelCase(data);
newIssue.setFetchingState('subscriptions', false);
@@ -179,6 +182,7 @@ export default () => {
subscribed,
weight,
epic,
+ assignees,
});
})
.catch(() => {
@@ -211,7 +215,8 @@ export default () => {
const { issue } = boardsStore.detail;
if (issue.id === id && issue.toggleSubscriptionEndpoint) {
issue.setFetchingState('subscriptions', true);
- BoardService.toggleIssueSubscription(issue.toggleSubscriptionEndpoint)
+ boardsStore
+ .toggleIssueSubscription(issue.toggleSubscriptionEndpoint)
.then(() => {
issue.setFetchingState('subscriptions', false);
issue.updateData({
diff --git a/app/assets/javascripts/boards/mixins/is_wip_limits.js b/app/assets/javascripts/boards/mixins/is_wip_limits.js
new file mode 100644
index 00000000000..f172179d3c7
--- /dev/null
+++ b/app/assets/javascripts/boards/mixins/is_wip_limits.js
@@ -0,0 +1,7 @@
+export default {
+ computed: {
+ isWipLimitsOn() {
+ return false;
+ },
+ },
+};
diff --git a/app/assets/javascripts/boards/models/list.js b/app/assets/javascripts/boards/models/list.js
index bb8c8e68297..b232fea0882 100644
--- a/app/assets/javascripts/boards/models/list.js
+++ b/app/assets/javascripts/boards/models/list.js
@@ -1,9 +1,9 @@
/* eslint-disable no-underscore-dangle, class-methods-use-this, consistent-return, no-shadow */
+import ListIssue from 'ee_else_ce/boards/models/issue';
import { __ } from '~/locale';
import ListLabel from './label';
import ListAssignee from './assignee';
-import ListIssue from 'ee_else_ce/boards/models/issue';
import { urlParamsToObject } from '~/lib/utils/common_utils';
import flash from '~/flash';
import boardsStore from '../stores/boards_store';
@@ -52,6 +52,9 @@ class List {
this.loadingMore = false;
this.issues = obj.issues || [];
this.issuesSize = obj.issuesSize ? obj.issuesSize : 0;
+ this.maxIssueCount = Object.hasOwnProperty.call(obj, 'max_issue_count')
+ ? obj.max_issue_count
+ : 0;
this.defaultAvatar = defaultAvatar;
if (obj.label) {
@@ -90,7 +93,7 @@ class List {
entityType = 'milestone_id';
}
- return gl.boardService
+ return boardsStore
.createList(entity.id, entityType)
.then(res => res.data)
.then(data => {
@@ -108,14 +111,14 @@ class List {
boardsStore.state.lists.splice(index, 1);
boardsStore.updateNewListDropdown(this.id);
- gl.boardService.destroyList(this.id).catch(() => {
+ boardsStore.destroyList(this.id).catch(() => {
// TODO: handle request error
});
}
update() {
const collapsed = !this.isExpanded;
- return gl.boardService.updateList(this.id, this.position, collapsed).catch(() => {
+ return boardsStore.updateList(this.id, this.position, collapsed).catch(() => {
// TODO: handle request error
});
}
@@ -144,7 +147,7 @@ class List {
this.loading = true;
}
- return gl.boardService
+ return boardsStore
.getIssuesForList(this.id, data)
.then(res => res.data)
.then(data => {
@@ -165,7 +168,7 @@ class List {
this.addIssue(issue, null, 0);
this.issuesSize += 1;
- return gl.boardService
+ return boardsStore
.newIssue(this.id, issue)
.then(res => res.data)
.then(data => this.onNewIssueResponse(issue, data));
@@ -273,7 +276,7 @@ class List {
this.issues.splice(oldIndex, 1);
this.issues.splice(newIndex, 0, issue);
- gl.boardService.moveIssue(issue.id, null, null, moveBeforeId, moveAfterId).catch(() => {
+ boardsStore.moveIssue(issue.id, null, null, moveBeforeId, moveAfterId).catch(() => {
// TODO: handle request error
});
}
@@ -284,7 +287,7 @@ class List {
});
this.issues.splice(newIndex, 0, ...issues);
- gl.boardService
+ boardsStore
.moveMultipleIssues({
ids: issues.map(issue => issue.id),
fromListId: null,
@@ -296,15 +299,13 @@ class List {
}
updateIssueLabel(issue, listFrom, moveBeforeId, moveAfterId) {
- gl.boardService
- .moveIssue(issue.id, listFrom.id, this.id, moveBeforeId, moveAfterId)
- .catch(() => {
- // TODO: handle request error
- });
+ boardsStore.moveIssue(issue.id, listFrom.id, this.id, moveBeforeId, moveAfterId).catch(() => {
+ // TODO: handle request error
+ });
}
updateMultipleIssues(issues, listFrom, moveBeforeId, moveAfterId) {
- gl.boardService
+ boardsStore
.moveMultipleIssues({
ids: issues.map(issue => issue.id),
fromListId: listFrom.id,
@@ -356,7 +357,7 @@ class List {
if (this.issuesSize > 1) {
const moveBeforeId = this.issues[1].id;
- gl.boardService.moveIssue(issue.id, null, null, null, moveBeforeId);
+ boardsStore.moveIssue(issue.id, null, null, null, moveBeforeId);
}
}
}
diff --git a/app/assets/javascripts/boards/services/board_service.js b/app/assets/javascripts/boards/services/board_service.js
deleted file mode 100644
index 03369febb4a..00000000000
--- a/app/assets/javascripts/boards/services/board_service.js
+++ /dev/null
@@ -1,98 +0,0 @@
-/* eslint-disable class-methods-use-this */
-/**
- * This file is intended to be deleted.
- * The existing functions will removed one by one in favor of using the board store directly.
- * see https://gitlab.com/gitlab-org/gitlab-foss/issues/61621
- */
-
-import boardsStore from '~/boards/stores/boards_store';
-
-export default class BoardService {
- generateBoardsPath(id) {
- return boardsStore.generateBoardsPath(id);
- }
-
- generateIssuesPath(id) {
- return boardsStore.generateIssuesPath(id);
- }
-
- static generateIssuePath(boardId, id) {
- return boardsStore.generateIssuePath(boardId, id);
- }
-
- all() {
- return boardsStore.all();
- }
-
- generateDefaultLists() {
- return boardsStore.generateDefaultLists();
- }
-
- createList(entityId, entityType) {
- return boardsStore.createList(entityId, entityType);
- }
-
- updateList(id, position, collapsed) {
- return boardsStore.updateList(id, position, collapsed);
- }
-
- destroyList(id) {
- return boardsStore.destroyList(id);
- }
-
- getIssuesForList(id, filter = {}) {
- return boardsStore.getIssuesForList(id, filter);
- }
-
- moveIssue(id, fromListId = null, toListId = null, moveBeforeId = null, moveAfterId = null) {
- return boardsStore.moveIssue(id, fromListId, toListId, moveBeforeId, moveAfterId);
- }
-
- moveMultipleIssues({
- ids,
- fromListId = null,
- toListId = null,
- moveBeforeId = null,
- moveAfterId = null,
- }) {
- return boardsStore.moveMultipleIssues({ ids, fromListId, toListId, moveBeforeId, moveAfterId });
- }
-
- newIssue(id, issue) {
- return boardsStore.newIssue(id, issue);
- }
-
- getBacklog(data) {
- return boardsStore.getBacklog(data);
- }
-
- bulkUpdate(issueIds, extraData = {}) {
- return boardsStore.bulkUpdate(issueIds, extraData);
- }
-
- static getIssueInfo(endpoint) {
- return boardsStore.getIssueInfo(endpoint);
- }
-
- static toggleIssueSubscription(endpoint) {
- return boardsStore.toggleIssueSubscription(endpoint);
- }
-
- allBoards() {
- return boardsStore.allBoards();
- }
-
- recentBoards() {
- return boardsStore.recentBoards();
- }
-
- createBoard(board) {
- return boardsStore.createBoard(board);
- }
-
- deleteBoard({ id }) {
- return boardsStore.deleteBoard({ id });
- }
-}
-
-window.BoardService = BoardService;
diff --git a/app/assets/javascripts/boards/stores/state.js b/app/assets/javascripts/boards/stores/state.js
index 24f44dc5629..731aea996fb 100644
--- a/app/assets/javascripts/boards/stores/state.js
+++ b/app/assets/javascripts/boards/stores/state.js
@@ -1,3 +1,4 @@
export default () => ({
isShowingLabels: true,
+ activeListId: 0,
});
diff --git a/app/assets/javascripts/clusters/clusters_bundle.js b/app/assets/javascripts/clusters/clusters_bundle.js
index 75909dd9d20..d990d2677a8 100644
--- a/app/assets/javascripts/clusters/clusters_bundle.js
+++ b/app/assets/javascripts/clusters/clusters_bundle.js
@@ -1,7 +1,7 @@
import Visibility from 'visibilityjs';
import Vue from 'vue';
-import AccessorUtilities from '~/lib/utils/accessor';
import { GlToast } from '@gitlab/ui';
+import AccessorUtilities from '~/lib/utils/accessor';
import PersistentUserCallout from '../persistent_user_callout';
import { s__, sprintf } from '../locale';
import Flash from '../flash';
@@ -12,6 +12,7 @@ import { APPLICATION_STATUS, INGRESS, INGRESS_DOMAIN_SUFFIX, CROSSPLANE } from '
import ClustersService from './services/clusters_service';
import ClustersStore from './stores/clusters_store';
import Applications from './components/applications.vue';
+import RemoveClusterConfirmation from './components/remove_cluster_confirmation.vue';
import setupToggleButtons from '../toggle_buttons';
import initProjectSelectDropdown from '~/project_select';
@@ -144,6 +145,8 @@ export default class Clusters {
() => this.handlePollError(),
);
}
+
+ this.initRemoveClusterActions();
}
initApplications(type) {
@@ -205,6 +208,25 @@ export default class Clusters {
});
}
+ initRemoveClusterActions() {
+ const el = document.querySelector('#js-cluster-remove-actions');
+ if (el && el.dataset) {
+ const { clusterName, clusterPath } = el.dataset;
+
+ this.removeClusterAction = new Vue({
+ el,
+ render(createElement) {
+ return createElement(RemoveClusterConfirmation, {
+ props: {
+ clusterName,
+ clusterPath,
+ },
+ });
+ },
+ });
+ }
+ }
+
handleClusterEnvironmentsSuccess(data) {
this.store.toggleFetchEnvironments(false);
this.store.updateEnvironments(data.data);
diff --git a/app/assets/javascripts/clusters/components/crossplane_provider_stack.vue b/app/assets/javascripts/clusters/components/crossplane_provider_stack.vue
index 966918ae636..6b99bb09504 100644
--- a/app/assets/javascripts/clusters/components/crossplane_provider_stack.vue
+++ b/app/assets/javascripts/clusters/components/crossplane_provider_stack.vue
@@ -1,6 +1,5 @@
<script>
-import { GlDropdown, GlDropdownItem } from '@gitlab/ui';
-import Icon from '~/vue_shared/components/icon.vue';
+import { GlDropdown, GlDropdownItem, GlIcon } from '@gitlab/ui';
import { s__ } from '../../locale';
export default {
@@ -8,7 +7,7 @@ export default {
components: {
GlDropdown,
GlDropdownItem,
- Icon,
+ GlIcon,
},
props: {
stacks: {
@@ -86,8 +85,9 @@ export default {
href="https://crossplane.io/docs/master/stacks-guide.html"
target="_blank"
rel="noopener noreferrer"
- >{{ __('Crossplane') }}</a
- >
+ >{{ __('Crossplane') }}
+ <gl-icon name="external-link" class="vertical-align-middle" />
+ </a>
</p>
</div>
</template>
diff --git a/app/assets/javascripts/clusters/components/knative_domain_editor.vue b/app/assets/javascripts/clusters/components/knative_domain_editor.vue
index 25347b11b6c..66c8297cb75 100644
--- a/app/assets/javascripts/clusters/components/knative_domain_editor.vue
+++ b/app/assets/javascripts/clusters/components/knative_domain_editor.vue
@@ -1,7 +1,7 @@
<script>
+import { GlLoadingIcon } from '@gitlab/ui';
import LoadingButton from '~/vue_shared/components/loading_button.vue';
import ClipboardButton from '../../vue_shared/components/clipboard_button.vue';
-import { GlLoadingIcon } from '@gitlab/ui';
import { __, s__ } from '~/locale';
import { APPLICATION_STATUS } from '~/clusters/constants';
diff --git a/app/assets/javascripts/clusters/components/remove_cluster_confirmation.vue b/app/assets/javascripts/clusters/components/remove_cluster_confirmation.vue
new file mode 100644
index 00000000000..c31ba7ef14a
--- /dev/null
+++ b/app/assets/javascripts/clusters/components/remove_cluster_confirmation.vue
@@ -0,0 +1,168 @@
+<script>
+import _ from 'underscore';
+import SplitButton from '~/vue_shared/components/split_button.vue';
+import { GlModal, GlButton, GlFormInput } from '@gitlab/ui';
+import { s__, sprintf } from '~/locale';
+import csrf from '~/lib/utils/csrf';
+
+const splitButtonActionItems = [
+ {
+ title: s__('ClusterIntegration|Remove integration and resources'),
+ description: s__(
+ 'ClusterIntegration|Deletes all GitLab resources attached to this cluster during removal',
+ ),
+ eventName: 'remove-cluster-and-cleanup',
+ },
+ {
+ title: s__('ClusterIntegration|Remove integration'),
+ description: s__(
+ 'ClusterIntegration|Removes cluster from project but keeps associated resources',
+ ),
+ eventName: 'remove-cluster',
+ },
+];
+
+export default {
+ splitButtonActionItems,
+ components: {
+ SplitButton,
+ GlModal,
+ GlButton,
+ GlFormInput,
+ },
+ props: {
+ clusterPath: {
+ type: String,
+ required: true,
+ },
+ clusterName: {
+ type: String,
+ required: true,
+ },
+ },
+ data() {
+ return {
+ enteredClusterName: '',
+ confirmCleanup: false,
+ };
+ },
+ computed: {
+ csrfToken() {
+ return csrf.token;
+ },
+ modalTitle() {
+ return this.confirmCleanup
+ ? s__('ClusterIntegration|Remove integration and resources?')
+ : s__('ClusterIntegration|Remove integration?');
+ },
+ warningMessage() {
+ return this.confirmCleanup
+ ? s__(
+ 'ClusterIntegration|You are about to remove your cluster integration and all GitLab-created resources associated with this cluster.',
+ )
+ : s__('ClusterIntegration|You are about to remove your cluster integration.');
+ },
+ warningToBeRemoved() {
+ return s__(`ClusterIntegration|
+ This will permanently delete the following resources:
+ <ul>
+ <li>All installed applications and related resources</li>
+ <li>The <code>gitlab-managed-apps</code> namespace</li>
+ <li>Any project namespaces</li>
+ <li><code>clusterroles</code></li>
+ <li><code>clusterrolebindings</code></li>
+ </ul>
+ `);
+ },
+ confirmationTextLabel() {
+ return sprintf(
+ this.confirmCleanup
+ ? s__(
+ 'ClusterIntegration|To remove your integration and resources, type %{clusterName} to confirm:',
+ )
+ : s__('ClusterIntegration|To remove your integration, type %{clusterName} to confirm:'),
+ {
+ clusterName: `<code>${_.escape(this.clusterName)}</code>`,
+ },
+ false,
+ );
+ },
+ canSubmit() {
+ return this.enteredClusterName === this.clusterName;
+ },
+ },
+ methods: {
+ handleClickRemoveCluster(cleanup = false) {
+ this.confirmCleanup = cleanup;
+ this.$refs.modal.show();
+ },
+ handleCancel() {
+ this.$refs.modal.hide();
+ this.enteredClusterName = '';
+ },
+ handleSubmit(cleanup = false) {
+ this.$refs.cleanup.name = cleanup === true ? 'cleanup' : 'no_cleanup';
+ this.$refs.form.submit();
+ this.enteredClusterName = '';
+ },
+ },
+};
+</script>
+
+<template>
+ <div>
+ <split-button
+ :action-items="$options.splitButtonActionItems"
+ menu-class="dropdown-menu-large"
+ variant="danger"
+ @remove-cluster="handleClickRemoveCluster(false)"
+ @remove-cluster-and-cleanup="handleClickRemoveCluster(true)"
+ />
+ <gl-modal
+ ref="modal"
+ size="lg"
+ modal-id="delete-cluster-modal"
+ :title="modalTitle"
+ kind="danger"
+ >
+ <template>
+ <p>{{ warningMessage }}</p>
+ <div v-if="confirmCleanup" v-html="warningToBeRemoved"></div>
+ <strong v-html="confirmationTextLabel"></strong>
+ <form ref="form" :action="clusterPath" method="post" class="append-bottom-20">
+ <input ref="method" type="hidden" name="_method" value="delete" />
+ <input :value="csrfToken" type="hidden" name="authenticity_token" />
+ <input ref="cleanup" type="hidden" name="cleanup" value="true" />
+ <gl-form-input
+ v-model="enteredClusterName"
+ autofocus
+ type="text"
+ name="confirm_cluster_name_input"
+ autocomplete="off"
+ />
+ </form>
+ <span v-if="confirmCleanup">{{
+ s__(
+ 'ClusterIntegration|If you do not wish to delete all associated GitLab resources, you can simply remove the integration.',
+ )
+ }}</span>
+ </template>
+ <template slot="modal-footer">
+ <gl-button variant="secondary" @click="handleCancel">{{ s__('Cancel') }}</gl-button>
+ <template v-if="confirmCleanup">
+ <gl-button :disabled="!canSubmit" variant="warning" @click="handleSubmit">{{
+ s__('ClusterIntegration|Remove integration')
+ }}</gl-button>
+ <gl-button :disabled="!canSubmit" variant="danger" @click="handleSubmit(true)">{{
+ s__('ClusterIntegration|Remove integration and resources')
+ }}</gl-button>
+ </template>
+ <template v-else>
+ <gl-button :disabled="!canSubmit" variant="danger" @click="handleSubmit">{{
+ s__('ClusterIntegration|Remove integration')
+ }}</gl-button>
+ </template>
+ </template>
+ </gl-modal>
+ </div>
+</template>
diff --git a/app/assets/javascripts/clusters/components/uninstall_application_confirmation_modal.vue b/app/assets/javascripts/clusters/components/uninstall_application_confirmation_modal.vue
index 125bcaacc1c..e33431d2ea1 100644
--- a/app/assets/javascripts/clusters/components/uninstall_application_confirmation_modal.vue
+++ b/app/assets/javascripts/clusters/components/uninstall_application_confirmation_modal.vue
@@ -1,7 +1,7 @@
<script>
import { GlModal } from '@gitlab/ui';
-import { sprintf, s__ } from '~/locale';
import trackUninstallButtonClickMixin from 'ee_else_ce/clusters/mixins/track_uninstall_button_click';
+import { sprintf, s__ } from '~/locale';
import {
HELM,
INGRESS,
diff --git a/app/assets/javascripts/commit/image_file.js b/app/assets/javascripts/commit/image_file.js
index 60c2059a876..a28e17f7a56 100644
--- a/app/assets/javascripts/commit/image_file.js
+++ b/app/assets/javascripts/commit/image_file.js
@@ -1,4 +1,4 @@
-/* eslint-disable func-names, no-var, no-else-return, consistent-return, one-var, no-return-assign */
+/* eslint-disable func-names, no-else-return, consistent-return, one-var, no-return-assign */
import $ from 'jquery';
@@ -51,7 +51,7 @@ export default class ImageFile {
}
// eslint-disable-next-line class-methods-use-this
initDraggable($el, padding, callback) {
- var dragging = false;
+ let dragging = false;
const $body = $('body');
const $offsetEl = $el.parent();
const dragStart = function() {
@@ -88,14 +88,12 @@ export default class ImageFile {
}
static prepareFrames(view) {
- var maxHeight, maxWidth;
- maxWidth = 0;
- maxHeight = 0;
+ let maxWidth = 0;
+ let maxHeight = 0;
$('.frame', view)
.each((index, frame) => {
- var height, width;
- width = $(frame).width();
- height = $(frame).height();
+ const width = $(frame).width();
+ const height = $(frame).height();
maxWidth = width > maxWidth ? width : maxWidth;
return (maxHeight = height > maxHeight ? height : maxHeight);
})
@@ -110,8 +108,7 @@ export default class ImageFile {
'two-up': function() {
return $('.two-up.view .wrap', this.file).each((index, wrap) => {
$('img', wrap).each(function() {
- var currentWidth;
- currentWidth = $(this).width();
+ const currentWidth = $(this).width();
if (currentWidth > availWidth / 2) {
return $(this).width(availWidth / 2);
}
@@ -124,16 +121,14 @@ export default class ImageFile {
});
},
swipe() {
- var maxHeight, maxWidth;
- maxWidth = 0;
- maxHeight = 0;
+ let maxWidth = 0;
+ let maxHeight = 0;
return $('.swipe.view', this.file).each((index, view) => {
- var $swipeWrap, $swipeBar, $swipeFrame, wrapPadding;
const ref = ImageFile.prepareFrames(view);
[maxWidth, maxHeight] = ref;
- $swipeFrame = $('.swipe-frame', view);
- $swipeWrap = $('.swipe-wrap', view);
- $swipeBar = $('.swipe-bar', view);
+ const $swipeFrame = $('.swipe-frame', view);
+ const $swipeWrap = $('.swipe-wrap', view);
+ const $swipeBar = $('.swipe-bar', view);
$swipeFrame.css({
width: maxWidth + 16,
@@ -148,7 +143,7 @@ export default class ImageFile {
left: 1,
});
- wrapPadding = parseInt($swipeWrap.css('right').replace('px', ''), 10);
+ const wrapPadding = parseInt($swipeWrap.css('right').replace('px', ''), 10);
this.initDraggable($swipeBar, wrapPadding, (e, left) => {
if (left > 0 && left < $swipeFrame.width() - wrapPadding * 2) {
@@ -159,19 +154,17 @@ export default class ImageFile {
});
},
'onion-skin': function() {
- var dragTrackWidth, maxHeight, maxWidth;
+ let maxHeight, maxWidth;
maxWidth = 0;
maxHeight = 0;
- dragTrackWidth = $('.drag-track', this.file).width() - $('.dragger', this.file).width();
+ const dragTrackWidth = $('.drag-track', this.file).width() - $('.dragger', this.file).width();
return $('.onion-skin.view', this.file).each((index, view) => {
- var $frame, $track, $dragger, $frameAdded, framePadding;
-
const ref = ImageFile.prepareFrames(view);
[maxWidth, maxHeight] = ref;
- $frame = $('.onion-skin-frame', view);
- $frameAdded = $('.frame.added', view);
- $track = $('.drag-track', view);
- $dragger = $('.dragger', $track);
+ const $frame = $('.onion-skin-frame', view);
+ const $frameAdded = $('.frame.added', view);
+ const $track = $('.drag-track', view);
+ const $dragger = $('.dragger', $track);
$frame.css({
width: maxWidth + 16,
@@ -186,10 +179,10 @@ export default class ImageFile {
});
$frameAdded.css('opacity', 1);
- framePadding = parseInt($frameAdded.css('right').replace('px', ''), 10);
+ const framePadding = parseInt($frameAdded.css('right').replace('px', ''), 10);
this.initDraggable($dragger, framePadding, (e, left) => {
- var opacity = left / dragTrackWidth;
+ const opacity = left / dragTrackWidth;
if (opacity >= 0 && opacity <= 1) {
$dragger.css('left', left);
diff --git a/app/assets/javascripts/commons/polyfills.js b/app/assets/javascripts/commons/polyfills.js
index 7a6ad3dc771..dd300b8a307 100644
--- a/app/assets/javascripts/commons/polyfills.js
+++ b/app/assets/javascripts/commons/polyfills.js
@@ -4,6 +4,7 @@ import 'core-js/es/array/find';
import 'core-js/es/array/find-index';
import 'core-js/es/array/from';
import 'core-js/es/array/includes';
+import 'core-js/es/number/is-integer';
import 'core-js/es/object/assign';
import 'core-js/es/object/values';
import 'core-js/es/object/entries';
diff --git a/app/assets/javascripts/confidential_merge_request/components/project_form_group.vue b/app/assets/javascripts/confidential_merge_request/components/project_form_group.vue
index 4fa18b19556..f2853564f94 100644
--- a/app/assets/javascripts/confidential_merge_request/components/project_form_group.vue
+++ b/app/assets/javascripts/confidential_merge_request/components/project_form_group.vue
@@ -1,6 +1,6 @@
<script>
-import { GlLink } from '@gitlab/ui';
-import { __, sprintf } from '../../locale';
+import { GlLink, GlSprintf } from '@gitlab/ui';
+import { __ } from '../../locale';
import createFlash from '../../flash';
import Api from '../../api';
import state from '../state';
@@ -9,6 +9,7 @@ import Dropdown from './dropdown.vue';
export default {
components: {
GlLink,
+ GlSprintf,
Dropdown,
},
props: {
@@ -38,15 +39,6 @@ export default {
selectedProject() {
return state.selectedProject;
},
- noForkText() {
- return sprintf(
- __(
- "To protect this issue's confidentiality, %{link_start}fork the project%{link_end} and set the forks visibility to private.",
- ),
- { link_start: `<a href="${this.newForkPath}" class="help-link">`, link_end: '</a>' },
- false,
- );
- },
},
mounted() {
this.fetchProjects();
@@ -123,8 +115,20 @@ export default {
}}
</template>
<template v-else>
- {{ __('No forks available to you.') }}<br />
- <span v-html="noForkText"></span>
+ {{ __('No forks are available to you.') }}<br />
+ <gl-sprintf
+ :message="
+ __(
+ `To protect this issue's confidentiality, %{forkLink} and set the fork's visibility to private.`,
+ )
+ "
+ >
+ <template #forkLink>
+ <a :href="newForkPath" target="_blank" class="help-link">{{
+ __('fork this project')
+ }}</a>
+ </template>
+ </gl-sprintf>
</template>
<gl-link
:href="helpPagePath"
diff --git a/app/assets/javascripts/confirm_danger_modal.js b/app/assets/javascripts/confirm_danger_modal.js
index 1000c310e35..262d501bfba 100644
--- a/app/assets/javascripts/confirm_danger_modal.js
+++ b/app/assets/javascripts/confirm_danger_modal.js
@@ -1,39 +1,54 @@
import $ from 'jquery';
import { rstrip } from './lib/utils/common_utils';
-function openConfirmDangerModal($form, text) {
- const $input = $('.js-confirm-danger-input');
+function openConfirmDangerModal($form, $modal, text) {
+ const $input = $('.js-confirm-danger-input', $modal);
$input.val('');
- $('.js-confirm-text').text(text || '');
- $('#modal-confirm-danger').modal('show');
+ $('.js-confirm-text', $modal).text(text || '');
+ $modal.modal('show');
- const confirmTextMatch = $('.js-confirm-danger-match').text();
- const $submit = $('.js-confirm-danger-submit');
+ const confirmTextMatch = $('.js-confirm-danger-match', $modal).text();
+ const $submit = $('.js-confirm-danger-submit', $modal);
$submit.disable();
$input.focus();
- $('.js-confirm-danger-input')
- .off('input')
- .on('input', function handleInput() {
- const confirmText = rstrip($(this).val());
- if (confirmText === confirmTextMatch) {
- $submit.enable();
- } else {
- $submit.disable();
- }
- });
- $('.js-confirm-danger-submit')
+ $input.off('input').on('input', function handleInput() {
+ const confirmText = rstrip($(this).val());
+ if (confirmText === confirmTextMatch) {
+ $submit.enable();
+ } else {
+ $submit.disable();
+ }
+ });
+ $('.js-confirm-danger-submit', $modal)
.off('click')
.on('click', () => $form.submit());
}
+function getModal($btn) {
+ const $modal = $btn.prev('.modal');
+
+ if ($modal.length) {
+ return $modal;
+ }
+
+ return $('#modal-confirm-danger');
+}
+
export default function initConfirmDangerModal() {
$(document).on('click', '.js-confirm-danger', e => {
- e.preventDefault();
const $btn = $(e.target);
- const $form = $btn.closest('form');
- const text = $btn.data('confirmDangerMessage');
- openConfirmDangerModal($form, text);
+ const checkFieldName = $btn.data('checkFieldName');
+ const checkFieldCompareValue = $btn.data('checkCompareValue');
+ const checkFieldVal = parseInt($(`[name="${checkFieldName}"]`).val(), 10);
+
+ if (!checkFieldName || checkFieldVal < checkFieldCompareValue) {
+ e.preventDefault();
+ const $form = $btn.closest('form');
+ const $modal = getModal($btn);
+ const text = $btn.data('confirmDangerMessage');
+ openConfirmDangerModal($form, $modal, text);
+ }
});
}
diff --git a/app/assets/javascripts/contributors/components/contributors.vue b/app/assets/javascripts/contributors/components/contributors.vue
index 7dd6b051cb4..fb7000ee9ed 100644
--- a/app/assets/javascripts/contributors/components/contributors.vue
+++ b/app/assets/javascripts/contributors/components/contributors.vue
@@ -1,9 +1,9 @@
<script>
-import { __ } from '~/locale';
import _ from 'underscore';
import { mapActions, mapState, mapGetters } from 'vuex';
import { GlLoadingIcon } from '@gitlab/ui';
import { GlAreaChart } from '@gitlab/ui/dist/charts';
+import { __ } from '~/locale';
import { getSvgIconPathContent } from '~/lib/utils/icon_utils';
import { getDatesInRange } from '~/lib/utils/datetime_utility';
import { xAxisLabelFormatter, dateFormatter } from '../utils';
diff --git a/app/assets/javascripts/create_cluster/eks_cluster/components/cluster_form_dropdown.vue b/app/assets/javascripts/create_cluster/eks_cluster/components/cluster_form_dropdown.vue
index e6893c14cda..2f7fcfcb755 100644
--- a/app/assets/javascripts/create_cluster/eks_cluster/components/cluster_form_dropdown.vue
+++ b/app/assets/javascripts/create_cluster/eks_cluster/components/cluster_form_dropdown.vue
@@ -1,8 +1,9 @@
<script>
+import $ from 'jquery';
+import { GlIcon } from '@gitlab/ui';
import DropdownSearchInput from '~/vue_shared/components/dropdown/dropdown_search_input.vue';
import DropdownHiddenInput from '~/vue_shared/components/dropdown/dropdown_hidden_input.vue';
import DropdownButton from '~/vue_shared/components/dropdown/dropdown_button.vue';
-import { GlIcon } from '@gitlab/ui';
const toArray = value => [].concat(value);
const itemsProp = (items, prop) => items.map(item => item[prop]);
@@ -106,6 +107,7 @@ export default {
data() {
return {
searchQuery: '',
+ focusOnSearch: false,
};
},
computed: {
@@ -141,6 +143,18 @@ export default {
return itemsProp(this.selectedItems, this.valueProperty).join(', ');
},
},
+ mounted() {
+ $(this.$refs.dropdown)
+ .on('shown.bs.dropdown', () => {
+ this.focusOnSearch = true;
+ })
+ .on('hidden.bs.dropdown', () => {
+ this.focusOnSearch = false;
+ });
+ },
+ beforeDestroy() {
+ $(this.$refs.dropdown).off();
+ },
methods: {
getItemsOrEmptyList() {
return this.items || [];
@@ -170,7 +184,7 @@ export default {
<template>
<div>
- <div class="js-gcp-machine-type-dropdown dropdown">
+ <div ref="dropdown" class="dropdown">
<dropdown-hidden-input :name="fieldName" :value="selectedItemsValues" />
<dropdown-button
:class="{ 'border-danger': hasErrors }"
@@ -179,7 +193,11 @@ export default {
:toggle-text="toggleText"
/>
<div class="dropdown-menu dropdown-select">
- <dropdown-search-input v-model="searchQuery" :placeholder-text="searchFieldPlaceholder" />
+ <dropdown-search-input
+ v-model="searchQuery"
+ :focused="focusOnSearch"
+ :placeholder-text="searchFieldPlaceholder"
+ />
<div class="dropdown-content">
<ul>
<li v-if="!results.length">
diff --git a/app/assets/javascripts/create_cluster/eks_cluster/components/eks_cluster_configuration_form.vue b/app/assets/javascripts/create_cluster/eks_cluster/components/eks_cluster_configuration_form.vue
index 57d5f4f541b..d04d0ff2a6d 100644
--- a/app/assets/javascripts/create_cluster/eks_cluster/components/eks_cluster_configuration_form.vue
+++ b/app/assets/javascripts/create_cluster/eks_cluster/components/eks_cluster_configuration_form.vue
@@ -1,8 +1,8 @@
<script>
import { createNamespacedHelpers, mapState, mapActions } from 'vuex';
-import { sprintf, s__ } from '~/locale';
import _ from 'underscore';
import { GlFormInput, GlFormCheckbox } from '@gitlab/ui';
+import { sprintf, s__ } from '~/locale';
import ClusterFormDropdown from './cluster_form_dropdown.vue';
import { KUBERNETES_VERSIONS } from '../constants';
import LoadingButton from '~/vue_shared/components/loading_button.vue';
@@ -22,10 +22,7 @@ const {
mapState: mapSecurityGroupsState,
mapActions: mapSecurityGroupsActions,
} = createNamespacedHelpers('securityGroups');
-const {
- mapState: mapInstanceTypesState,
- mapActions: mapInstanceTypesActions,
-} = createNamespacedHelpers('instanceTypes');
+const { mapState: mapInstanceTypesState } = createNamespacedHelpers('instanceTypes');
export default {
components: {
@@ -265,12 +262,10 @@ export default {
mounted() {
this.fetchRegions();
this.fetchRoles();
- this.fetchInstanceTypes();
},
methods: {
...mapActions([
'createCluster',
- 'signOut',
'setClusterName',
'setEnvironmentScope',
'setKubernetesVersion',
@@ -290,7 +285,6 @@ export default {
...mapRolesActions({ fetchRoles: 'fetchItems' }),
...mapKeyPairsActions({ fetchKeyPairs: 'fetchItems' }),
...mapSecurityGroupsActions({ fetchSecurityGroups: 'fetchItems' }),
- ...mapInstanceTypesActions({ fetchInstanceTypes: 'fetchItems' }),
setRegionAndFetchVpcsAndKeyPairs(region) {
this.setRegion({ region });
this.setVpc({ vpc: null });
@@ -316,11 +310,6 @@ export default {
{{ s__('ClusterIntegration|Enter the details for your Amazon EKS Kubernetes cluster') }}
</h2>
<div class="mb-3" v-html="kubernetesIntegrationHelpText"></div>
- <div class="mb-3">
- <button class="btn btn-link js-sign-out" @click.prevent="signOut()">
- {{ s__('ClusterIntegration|Select a different AWS role') }}
- </button>
- </div>
<div class="form-group">
<label class="label-bold" for="eks-cluster-name">{{
s__('ClusterIntegration|Kubernetes cluster name')
diff --git a/app/assets/javascripts/create_cluster/eks_cluster/components/service_credentials_form.vue b/app/assets/javascripts/create_cluster/eks_cluster/components/service_credentials_form.vue
index ab33e9fbc95..1dd4c468ae6 100644
--- a/app/assets/javascripts/create_cluster/eks_cluster/components/service_credentials_form.vue
+++ b/app/assets/javascripts/create_cluster/eks_cluster/components/service_credentials_form.vue
@@ -1,8 +1,8 @@
<script>
import { GlFormInput } from '@gitlab/ui';
-import { sprintf, s__, __ } from '~/locale';
import _ from 'underscore';
import { mapState, mapActions } from 'vuex';
+import { sprintf, s__, __ } from '~/locale';
import ClipboardButton from '~/vue_shared/components/clipboard_button.vue';
import LoadingButton from '~/vue_shared/components/loading_button.vue';
@@ -28,7 +28,7 @@ export default {
},
data() {
return {
- roleArn: '',
+ roleArn: this.$store.state.roleArn,
};
},
computed: {
diff --git a/app/assets/javascripts/create_cluster/eks_cluster/index.js b/app/assets/javascripts/create_cluster/eks_cluster/index.js
index 27f859d8972..fb993a7aa59 100644
--- a/app/assets/javascripts/create_cluster/eks_cluster/index.js
+++ b/app/assets/javascripts/create_cluster/eks_cluster/index.js
@@ -12,20 +12,14 @@ export default el => {
kubernetesIntegrationHelpPath,
accountAndExternalIdsHelpPath,
createRoleArnHelpPath,
- getRolesPath,
- getRegionsPath,
- getKeyPairsPath,
- getVpcsPath,
- getSubnetsPath,
- getSecurityGroupsPath,
- getInstanceTypesPath,
externalId,
accountId,
+ instanceTypes,
hasCredentials,
createRolePath,
createClusterPath,
- signOutPath,
externalLinkIcon,
+ roleArn,
} = el.dataset;
return new Vue({
@@ -35,18 +29,10 @@ export default el => {
hasCredentials: parseBoolean(hasCredentials),
externalId,
accountId,
+ instanceTypes: JSON.parse(instanceTypes),
createRolePath,
createClusterPath,
- signOutPath,
- },
- apiPaths: {
- getRolesPath,
- getRegionsPath,
- getKeyPairsPath,
- getVpcsPath,
- getSubnetsPath,
- getSecurityGroupsPath,
- getInstanceTypesPath,
+ roleArn,
},
}),
components: {
diff --git a/app/assets/javascripts/create_cluster/eks_cluster/services/aws_services_facade.js b/app/assets/javascripts/create_cluster/eks_cluster/services/aws_services_facade.js
index 21b87d525cf..601ff6f9adc 100644
--- a/app/assets/javascripts/create_cluster/eks_cluster/services/aws_services_facade.js
+++ b/app/assets/javascripts/create_cluster/eks_cluster/services/aws_services_facade.js
@@ -1,58 +1,98 @@
-import axios from '~/lib/utils/axios_utils';
-
-export default apiPaths => ({
- fetchRoles() {
- return axios
- .get(apiPaths.getRolesPath)
- .then(({ data: { roles } }) =>
- roles.map(({ role_name: name, arn: value }) => ({ name, value })),
- );
- },
- fetchKeyPairs({ region }) {
- return axios
- .get(apiPaths.getKeyPairsPath, { params: { region } })
- .then(({ data: { key_pairs: keyPairs } }) =>
- keyPairs.map(({ key_name }) => ({ name: key_name, value: key_name })),
- );
- },
- fetchRegions() {
- return axios.get(apiPaths.getRegionsPath).then(({ data: { regions } }) =>
- regions.map(({ region_name }) => ({
- name: region_name,
- value: region_name,
+import AWS from 'aws-sdk/global';
+import EC2 from 'aws-sdk/clients/ec2';
+import IAM from 'aws-sdk/clients/iam';
+
+const lookupVpcName = ({ Tags: tags, VpcId: id }) => {
+ const nameTag = tags.find(({ Key: key }) => key === 'Name');
+
+ return nameTag ? nameTag.Value : id;
+};
+
+export const DEFAULT_REGION = 'us-east-2';
+
+export const setAWSConfig = ({ awsCredentials }) => {
+ AWS.config = {
+ ...awsCredentials,
+ region: DEFAULT_REGION,
+ };
+};
+
+export const fetchRoles = () => {
+ const iam = new IAM();
+
+ return iam
+ .listRoles()
+ .promise()
+ .then(({ Roles: roles }) => roles.map(({ RoleName: name, Arn: value }) => ({ name, value })));
+};
+
+export const fetchRegions = () => {
+ const ec2 = new EC2();
+
+ return ec2
+ .describeRegions()
+ .promise()
+ .then(({ Regions: regions }) =>
+ regions.map(({ RegionName: name }) => ({
+ name,
+ value: name,
})),
);
- },
- fetchVpcs({ region }) {
- return axios.get(apiPaths.getVpcsPath, { params: { region } }).then(({ data: { vpcs } }) =>
- vpcs.map(({ vpc_id }) => ({
- value: vpc_id,
- name: vpc_id,
+};
+
+export const fetchKeyPairs = ({ region }) => {
+ const ec2 = new EC2({ region });
+
+ return ec2
+ .describeKeyPairs()
+ .promise()
+ .then(({ KeyPairs: keyPairs }) => keyPairs.map(({ KeyName: name }) => ({ name, value: name })));
+};
+
+export const fetchVpcs = ({ region }) => {
+ const ec2 = new EC2({ region });
+
+ return ec2
+ .describeVpcs()
+ .promise()
+ .then(({ Vpcs: vpcs }) =>
+ vpcs.map(vpc => ({
+ value: vpc.VpcId,
+ name: lookupVpcName(vpc),
})),
);
- },
- fetchSubnets({ vpc, region }) {
- return axios
- .get(apiPaths.getSubnetsPath, { params: { vpc_id: vpc, region } })
- .then(({ data: { subnets } }) =>
- subnets.map(({ subnet_id }) => ({ name: subnet_id, value: subnet_id })),
- );
- },
- fetchSecurityGroups({ vpc, region }) {
- return axios
- .get(apiPaths.getSecurityGroupsPath, { params: { vpc_id: vpc, region } })
- .then(({ data: { security_groups: securityGroups } }) =>
- securityGroups.map(({ group_name: name, group_id: value }) => ({ name, value })),
- );
- },
- fetchInstanceTypes() {
- return axios
- .get(apiPaths.getInstanceTypesPath)
- .then(({ data: { instance_types: instanceTypes } }) =>
- instanceTypes.map(({ instance_type_name }) => ({
- name: instance_type_name,
- value: instance_type_name,
- })),
- );
- },
-});
+};
+
+export const fetchSubnets = ({ vpc, region }) => {
+ const ec2 = new EC2({ region });
+
+ return ec2
+ .describeSubnets({
+ Filters: [
+ {
+ Name: 'vpc-id',
+ Values: [vpc],
+ },
+ ],
+ })
+ .promise()
+ .then(({ Subnets: subnets }) => subnets.map(({ SubnetId: id }) => ({ value: id, name: id })));
+};
+
+export const fetchSecurityGroups = ({ region, vpc }) => {
+ const ec2 = new EC2({ region });
+
+ return ec2
+ .describeSecurityGroups({
+ Filters: [
+ {
+ Name: 'vpc-id',
+ Values: [vpc],
+ },
+ ],
+ })
+ .promise()
+ .then(({ SecurityGroups: securityGroups }) =>
+ securityGroups.map(({ GroupName: name, GroupId: value }) => ({ name, value })),
+ );
+};
diff --git a/app/assets/javascripts/create_cluster/eks_cluster/store/actions.js b/app/assets/javascripts/create_cluster/eks_cluster/store/actions.js
index 72f15263a8f..e96e6d6e4f8 100644
--- a/app/assets/javascripts/create_cluster/eks_cluster/store/actions.js
+++ b/app/assets/javascripts/create_cluster/eks_cluster/store/actions.js
@@ -1,6 +1,8 @@
import * as types from './mutation_types';
+import { setAWSConfig } from '../services/aws_services_facade';
import axios from '~/lib/utils/axios_utils';
import createFlash from '~/flash';
+import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils';
const getErrorMessage = data => {
const errorKey = Object.keys(data)[0];
@@ -28,7 +30,7 @@ export const createRole = ({ dispatch, state: { createRolePath } }, payload) =>
role_arn: payload.roleArn,
role_external_id: payload.externalId,
})
- .then(() => dispatch('createRoleSuccess'))
+ .then(({ data }) => dispatch('createRoleSuccess', convertObjectPropsToCamelCase(data)))
.catch(error => dispatch('createRoleError', { error }));
};
@@ -36,7 +38,8 @@ export const requestCreateRole = ({ commit }) => {
commit(types.REQUEST_CREATE_ROLE);
};
-export const createRoleSuccess = ({ commit }) => {
+export const createRoleSuccess = ({ commit }, awsCredentials) => {
+ setAWSConfig({ awsCredentials });
commit(types.CREATE_ROLE_SUCCESS);
};
@@ -117,9 +120,3 @@ export const setInstanceType = ({ commit }, payload) => {
export const setNodeCount = ({ commit }, payload) => {
commit(types.SET_NODE_COUNT, payload);
};
-
-export const signOut = ({ commit, state: { signOutPath } }) =>
- axios
- .delete(signOutPath)
- .then(() => commit(types.SIGN_OUT))
- .catch(({ response: { data } }) => createFlash(getErrorMessage(data)));
diff --git a/app/assets/javascripts/create_cluster/eks_cluster/store/cluster_dropdown/index.js b/app/assets/javascripts/create_cluster/eks_cluster/store/cluster_dropdown/index.js
index 07a5821c47d..0b19589215c 100644
--- a/app/assets/javascripts/create_cluster/eks_cluster/store/cluster_dropdown/index.js
+++ b/app/assets/javascripts/create_cluster/eks_cluster/store/cluster_dropdown/index.js
@@ -3,11 +3,11 @@ import actions from './actions';
import mutations from './mutations';
import state from './state';
-const createStore = fetchFn => ({
+const createStore = ({ fetchFn, initialState }) => ({
actions: actions(fetchFn),
getters,
mutations,
- state: state(),
+ state: Object.assign(state(), initialState || {}),
});
export default createStore;
diff --git a/app/assets/javascripts/create_cluster/eks_cluster/store/index.js b/app/assets/javascripts/create_cluster/eks_cluster/store/index.js
index 5982fc8a2fd..09fd560240d 100644
--- a/app/assets/javascripts/create_cluster/eks_cluster/store/index.js
+++ b/app/assets/javascripts/create_cluster/eks_cluster/store/index.js
@@ -6,12 +6,17 @@ import state from './state';
import clusterDropdownStore from './cluster_dropdown';
-import awsServicesFactory from '../services/aws_services_facade';
+import {
+ fetchRoles,
+ fetchRegions,
+ fetchKeyPairs,
+ fetchVpcs,
+ fetchSubnets,
+ fetchSecurityGroups,
+} from '../services/aws_services_facade';
-const createStore = ({ initialState, apiPaths }) => {
- const awsServices = awsServicesFactory(apiPaths);
-
- return new Vuex.Store({
+const createStore = ({ initialState }) =>
+ new Vuex.Store({
actions,
getters,
mutations,
@@ -19,34 +24,33 @@ const createStore = ({ initialState, apiPaths }) => {
modules: {
roles: {
namespaced: true,
- ...clusterDropdownStore(awsServices.fetchRoles),
+ ...clusterDropdownStore({ fetchFn: fetchRoles }),
},
regions: {
namespaced: true,
- ...clusterDropdownStore(awsServices.fetchRegions),
+ ...clusterDropdownStore({ fetchFn: fetchRegions }),
},
keyPairs: {
namespaced: true,
- ...clusterDropdownStore(awsServices.fetchKeyPairs),
+ ...clusterDropdownStore({ fetchFn: fetchKeyPairs }),
},
vpcs: {
namespaced: true,
- ...clusterDropdownStore(awsServices.fetchVpcs),
+ ...clusterDropdownStore({ fetchFn: fetchVpcs }),
},
subnets: {
namespaced: true,
- ...clusterDropdownStore(awsServices.fetchSubnets),
+ ...clusterDropdownStore({ fetchFn: fetchSubnets }),
},
securityGroups: {
namespaced: true,
- ...clusterDropdownStore(awsServices.fetchSecurityGroups),
+ ...clusterDropdownStore({ fetchFn: fetchSecurityGroups }),
},
instanceTypes: {
namespaced: true,
- ...clusterDropdownStore(awsServices.fetchInstanceTypes),
+ ...clusterDropdownStore({ initialState: { items: initialState.instanceTypes } }),
},
},
});
-};
export default createStore;
diff --git a/app/assets/javascripts/create_cluster/eks_cluster/store/mutation_types.js b/app/assets/javascripts/create_cluster/eks_cluster/store/mutation_types.js
index f9204cc2207..9dee6abae5f 100644
--- a/app/assets/javascripts/create_cluster/eks_cluster/store/mutation_types.js
+++ b/app/assets/javascripts/create_cluster/eks_cluster/store/mutation_types.js
@@ -13,7 +13,6 @@ export const SET_GITLAB_MANAGED_CLUSTER = 'SET_GITLAB_MANAGED_CLUSTER';
export const REQUEST_CREATE_ROLE = 'REQUEST_CREATE_ROLE';
export const CREATE_ROLE_SUCCESS = 'CREATE_ROLE_SUCCESS';
export const CREATE_ROLE_ERROR = 'CREATE_ROLE_ERROR';
-export const SIGN_OUT = 'SIGN_OUT';
export const REQUEST_CREATE_CLUSTER = 'REQUEST_CREATE_CLUSTER';
export const CREATE_CLUSTER_SUCCESS = 'CREATE_CLUSTER_SUCCESS';
export const CREATE_CLUSTER_ERROR = 'CREATE_CLUSTER_ERROR';
diff --git a/app/assets/javascripts/create_cluster/eks_cluster/store/mutations.js b/app/assets/javascripts/create_cluster/eks_cluster/store/mutations.js
index aa04c8f7079..c331d27d255 100644
--- a/app/assets/javascripts/create_cluster/eks_cluster/store/mutations.js
+++ b/app/assets/javascripts/create_cluster/eks_cluster/store/mutations.js
@@ -60,7 +60,4 @@ export default {
state.isCreatingCluster = false;
state.createClusterError = error;
},
- [types.SIGN_OUT](state) {
- state.hasCredentials = false;
- },
};
diff --git a/app/assets/javascripts/create_cluster/eks_cluster/store/state.js b/app/assets/javascripts/create_cluster/eks_cluster/store/state.js
index 2e3a05a9187..20434dcce98 100644
--- a/app/assets/javascripts/create_cluster/eks_cluster/store/state.js
+++ b/app/assets/javascripts/create_cluster/eks_cluster/store/state.js
@@ -12,6 +12,8 @@ export default () => ({
accountId: '',
externalId: '',
+ roleArn: '',
+
clusterName: '',
environmentScope: '*',
kubernetesVersion,
diff --git a/app/assets/javascripts/create_cluster/gke_cluster/components/gke_dropdown_mixin.js b/app/assets/javascripts/create_cluster/gke_cluster/components/gke_dropdown_mixin.js
index 5a3407693e5..43fd0cac3be 100644
--- a/app/assets/javascripts/create_cluster/gke_cluster/components/gke_dropdown_mixin.js
+++ b/app/assets/javascripts/create_cluster/gke_cluster/components/gke_dropdown_mixin.js
@@ -1,8 +1,8 @@
import _ from 'underscore';
+import { GlLoadingIcon } from '@gitlab/ui';
import DropdownSearchInput from '~/vue_shared/components/dropdown/dropdown_search_input.vue';
import DropdownHiddenInput from '~/vue_shared/components/dropdown/dropdown_hidden_input.vue';
import DropdownButton from '~/vue_shared/components/dropdown/dropdown_button.vue';
-import { GlLoadingIcon } from '@gitlab/ui';
import store from '../store';
diff --git a/app/assets/javascripts/create_cluster/gke_cluster/components/gke_machine_type_dropdown.vue b/app/assets/javascripts/create_cluster/gke_cluster/components/gke_machine_type_dropdown.vue
index 83811ab489a..a9d9f0224e3 100644
--- a/app/assets/javascripts/create_cluster/gke_cluster/components/gke_machine_type_dropdown.vue
+++ b/app/assets/javascripts/create_cluster/gke_cluster/components/gke_machine_type_dropdown.vue
@@ -1,6 +1,6 @@
<script>
-import { sprintf, s__ } from '~/locale';
import { mapState, mapGetters, mapActions } from 'vuex';
+import { sprintf, s__ } from '~/locale';
import gkeDropdownMixin from './gke_dropdown_mixin';
diff --git a/app/assets/javascripts/create_cluster/gke_cluster/components/gke_project_id_dropdown.vue b/app/assets/javascripts/create_cluster/gke_cluster/components/gke_project_id_dropdown.vue
index a2eb79af4f9..6815d3629e3 100644
--- a/app/assets/javascripts/create_cluster/gke_cluster/components/gke_project_id_dropdown.vue
+++ b/app/assets/javascripts/create_cluster/gke_cluster/components/gke_project_id_dropdown.vue
@@ -1,7 +1,7 @@
<script>
import _ from 'underscore';
-import { s__, sprintf } from '~/locale';
import { mapState, mapGetters, mapActions } from 'vuex';
+import { s__, sprintf } from '~/locale';
import gkeDropdownMixin from './gke_dropdown_mixin';
diff --git a/app/assets/javascripts/create_cluster/gke_cluster/components/gke_zone_dropdown.vue b/app/assets/javascripts/create_cluster/gke_cluster/components/gke_zone_dropdown.vue
index fd5d5f86401..b60a5be2e63 100644
--- a/app/assets/javascripts/create_cluster/gke_cluster/components/gke_zone_dropdown.vue
+++ b/app/assets/javascripts/create_cluster/gke_cluster/components/gke_zone_dropdown.vue
@@ -1,6 +1,6 @@
<script>
-import { sprintf, s__ } from '~/locale';
import { mapState, mapActions } from 'vuex';
+import { sprintf, s__ } from '~/locale';
import gkeDropdownMixin from './gke_dropdown_mixin';
diff --git a/app/assets/javascripts/create_cluster/init_create_cluster.js b/app/assets/javascripts/create_cluster/init_create_cluster.js
index 7c984582fd8..2b09771d772 100644
--- a/app/assets/javascripts/create_cluster/init_create_cluster.js
+++ b/app/assets/javascripts/create_cluster/init_create_cluster.js
@@ -6,7 +6,7 @@ const newClusterViews = [':clusters:new', ':clusters:create_gcp', ':clusters:cre
const isProjectLevelCluster = page => page.startsWith('project:clusters');
-export default (document, gon) => {
+export default document => {
const { page } = document.body.dataset;
const isNewClusterView = newClusterViews.some(view => page.endsWith(view));
@@ -19,17 +19,15 @@ export default (document, gon) => {
initGkeDropdowns();
- if (gon.features.createEksClusters) {
- import(/* webpackChunkName: 'eks_cluster' */ '~/create_cluster/eks_cluster')
- .then(({ default: initCreateEKSCluster }) => {
- const el = document.querySelector('.js-create-eks-cluster-form-container');
+ import(/* webpackChunkName: 'eks_cluster' */ '~/create_cluster/eks_cluster')
+ .then(({ default: initCreateEKSCluster }) => {
+ const el = document.querySelector('.js-create-eks-cluster-form-container');
- if (el) {
- initCreateEKSCluster(el);
- }
- })
- .catch(() => {});
- }
+ if (el) {
+ initCreateEKSCluster(el);
+ }
+ })
+ .catch(() => {});
if (isProjectLevelCluster(page)) {
initGkeNamespace();
diff --git a/app/assets/javascripts/create_merge_request_dropdown.js b/app/assets/javascripts/create_merge_request_dropdown.js
index dce9c1a5410..d9805e5e76a 100644
--- a/app/assets/javascripts/create_merge_request_dropdown.js
+++ b/app/assets/javascripts/create_merge_request_dropdown.js
@@ -311,6 +311,7 @@ export default class CreateMergeRequestDropdown {
}
onChangeInput(event) {
+ this.disable();
let target;
let value;
diff --git a/app/assets/javascripts/cycle_analytics/components/banner.vue b/app/assets/javascripts/cycle_analytics/components/banner.vue
index e44588efbfc..ae8c430dcd6 100644
--- a/app/assets/javascripts/cycle_analytics/components/banner.vue
+++ b/app/assets/javascripts/cycle_analytics/components/banner.vue
@@ -1,6 +1,6 @@
<script>
-import Icon from '~/vue_shared/components/icon.vue';
import iconCycleAnalyticsSplash from 'icons/_icon_cycle_analytics_splash.svg';
+import Icon from '~/vue_shared/components/icon.vue';
export default {
components: {
diff --git a/app/assets/javascripts/deploy_keys/components/app.vue b/app/assets/javascripts/deploy_keys/components/app.vue
index 922c907bb36..048f3a2485c 100644
--- a/app/assets/javascripts/deploy_keys/components/app.vue
+++ b/app/assets/javascripts/deploy_keys/components/app.vue
@@ -1,4 +1,5 @@
<script>
+import { GlLoadingIcon } from '@gitlab/ui';
import { s__ } from '~/locale';
import Flash from '~/flash';
import NavigationTabs from '~/vue_shared/components/navigation_tabs.vue';
@@ -6,7 +7,6 @@ import eventHub from '../eventhub';
import DeployKeysService from '../service';
import DeployKeysStore from '../store';
import KeysPanel from './keys_panel.vue';
-import { GlLoadingIcon } from '@gitlab/ui';
export default {
components: {
@@ -133,7 +133,7 @@ export default {
:keys="keys[currentTab]"
:store="store"
:endpoint="endpoint"
- class="qa-project-deploy-keys"
+ data-qa-selector="project_deploy_keys"
/>
</template>
</div>
diff --git a/app/assets/javascripts/deploy_keys/components/key.vue b/app/assets/javascripts/deploy_keys/components/key.vue
index 6ffb8c4e1c0..4d36a492c1c 100644
--- a/app/assets/javascripts/deploy_keys/components/key.vue
+++ b/app/assets/javascripts/deploy_keys/components/key.vue
@@ -159,7 +159,7 @@ export default {
<div role="rowheader" class="table-mobile-header">{{ __('Created') }}</div>
<div class="table-mobile-content text-secondary key-created-at">
<span v-tooltip :title="tooltipTitle(deployKey.created_at)">
- <icon name="calendar" /> <span>{{ timeFormated(deployKey.created_at) }}</span>
+ <icon name="calendar" /> <span>{{ timeFormatted(deployKey.created_at) }}</span>
</span>
</div>
</div>
diff --git a/app/assets/javascripts/diffs/components/app.vue b/app/assets/javascripts/diffs/components/app.vue
index 19b85710710..8ea443814e9 100644
--- a/app/assets/javascripts/diffs/components/app.vue
+++ b/app/assets/javascripts/diffs/components/app.vue
@@ -1,11 +1,12 @@
<script>
import { mapState, mapGetters, mapActions } from 'vuex';
+import { GlLoadingIcon } from '@gitlab/ui';
+import Mousetrap from 'mousetrap';
import Icon from '~/vue_shared/components/icon.vue';
import { __ } from '~/locale';
import createFlash from '~/flash';
-import { GlLoadingIcon } from '@gitlab/ui';
import PanelResizer from '~/vue_shared/components/panel_resizer.vue';
-import Mousetrap from 'mousetrap';
+import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
import eventHub from '../../notes/event_hub';
import CompareVersions from './compare_versions.vue';
import DiffFile from './diff_file.vue';
@@ -36,11 +37,20 @@ export default {
GlLoadingIcon,
PanelResizer,
},
+ mixins: [glFeatureFlagsMixin()],
props: {
endpoint: {
type: String,
required: true,
},
+ endpointMetadata: {
+ type: String,
+ required: true,
+ },
+ endpointBatch: {
+ type: String,
+ required: true,
+ },
projectPath: {
type: String,
required: true,
@@ -92,6 +102,7 @@ export default {
computed: {
...mapState({
isLoading: state => state.diffs.isLoading,
+ isBatchLoading: state => state.diffs.isBatchLoading,
diffFiles: state => state.diffs.diffFiles,
diffViewType: state => state.diffs.diffViewType,
mergeRequestDiffs: state => state.diffs.mergeRequestDiffs,
@@ -133,6 +144,9 @@ export default {
isLimitedContainer() {
return !this.showTreeList && !this.isParallelView && !this.isFluidLayout;
},
+ shouldSetDiscussions() {
+ return this.isNotesFetched && !this.assignedDiscussions && !this.isLoading;
+ },
},
watch: {
diffViewType() {
@@ -149,13 +163,21 @@ export default {
},
isLoading: 'adjustView',
showTreeList: 'adjustView',
+ shouldSetDiscussions(newVal) {
+ if (newVal) {
+ this.setDiscussions();
+ }
+ },
},
mounted() {
this.setBaseConfig({
endpoint: this.endpoint,
+ endpointMetadata: this.endpointMetadata,
+ endpointBatch: this.endpointBatch,
projectPath: this.projectPath,
dismissEndpoint: this.dismissEndpoint,
showSuggestPopover: this.showSuggestPopover,
+ useSingleDiffStyle: this.glFeatures.singleMrDiffView,
});
if (this.shouldShow) {
@@ -185,6 +207,8 @@ export default {
...mapActions('diffs', [
'setBaseConfig',
'fetchDiffFiles',
+ 'fetchDiffFilesMeta',
+ 'fetchDiffFilesBatch',
'startRenderDiffsQueue',
'assignDiscussionsToDiff',
'setHighlightedRow',
@@ -196,31 +220,56 @@ export default {
this.assignedDiscussions = false;
this.fetchData(false);
},
+ startDiffRendering() {
+ requestIdleCallback(
+ () => {
+ this.startRenderDiffsQueue();
+ },
+ { timeout: 1000 },
+ );
+ },
fetchData(toggleTree = true) {
- this.fetchDiffFiles()
- .then(() => {
- if (toggleTree) {
- this.hideTreeListIfJustOneFile();
- }
+ if (this.glFeatures.diffsBatchLoad) {
+ this.fetchDiffFilesMeta()
+ .then(() => {
+ if (toggleTree) this.hideTreeListIfJustOneFile();
- requestIdleCallback(
- () => {
- this.setDiscussions();
- this.startRenderDiffsQueue();
- },
- { timeout: 1000 },
- );
- })
- .catch(() => {
- createFlash(__('Something went wrong on our end. Please try again!'));
- });
+ this.startDiffRendering();
+ })
+ .catch(() => {
+ createFlash(__('Something went wrong on our end. Please try again!'));
+ });
+
+ this.fetchDiffFilesBatch()
+ .then(() => this.startDiffRendering())
+ .catch(() => {
+ createFlash(__('Something went wrong on our end. Please try again!'));
+ });
+ } else {
+ this.fetchDiffFiles()
+ .then(() => {
+ if (toggleTree) {
+ this.hideTreeListIfJustOneFile();
+ }
+
+ requestIdleCallback(
+ () => {
+ this.startRenderDiffsQueue();
+ },
+ { timeout: 1000 },
+ );
+ })
+ .catch(() => {
+ createFlash(__('Something went wrong on our end. Please try again!'));
+ });
+ }
if (!this.isNotesFetched) {
eventHub.$emit('fetchNotesData');
}
},
setDiscussions() {
- if (this.isNotesFetched && !this.assignedDiscussions && !this.isLoading) {
+ if (this.shouldSetDiscussions) {
this.assignedDiscussions = true;
requestIdleCallback(
@@ -324,7 +373,8 @@ export default {
}"
>
<commit-widget v-if="commit" :commit="commit" />
- <template v-if="renderDiffFiles">
+ <div v-if="isBatchLoading" class="loading"><gl-loading-icon /></div>
+ <template v-else-if="renderDiffFiles">
<diff-file
v-for="file in diffFiles"
:key="file.newPath"
diff --git a/app/assets/javascripts/diffs/components/diff_expansion_cell.vue b/app/assets/javascripts/diffs/components/diff_expansion_cell.vue
index 839ab542377..23fbfc2b74b 100644
--- a/app/assets/javascripts/diffs/components/diff_expansion_cell.vue
+++ b/app/assets/javascripts/diffs/components/diff_expansion_cell.vue
@@ -1,7 +1,7 @@
<script>
+import { mapState, mapActions } from 'vuex';
import createFlash from '~/flash';
import { s__ } from '~/locale';
-import { mapState, mapActions } from 'vuex';
import Icon from '~/vue_shared/components/icon.vue';
import { UNFOLD_COUNT } from '../constants';
import * as utils from '../store/utils';
@@ -226,7 +226,7 @@ export default {
<icon :size="12" name="expand-up" aria-hidden="true" />
</a>
<a class="mx-2 cursor-pointer js-unfold-all" @click="handleExpandLines()">
- <span>{{ s__('Diffs|Show all lines') }}</span>
+ <span>{{ s__('Diffs|Show unchanged lines') }}</span>
</a>
<a
v-if="canExpandDown"
diff --git a/app/assets/javascripts/diffs/components/diff_file.vue b/app/assets/javascripts/diffs/components/diff_file.vue
index 9236f0d5349..0dbff4ffcec 100644
--- a/app/assets/javascripts/diffs/components/diff_file.vue
+++ b/app/assets/javascripts/diffs/components/diff_file.vue
@@ -1,9 +1,9 @@
<script>
import { mapActions, mapGetters, mapState } from 'vuex';
import _ from 'underscore';
+import { GlLoadingIcon } from '@gitlab/ui';
import { __, sprintf } from '~/locale';
import createFlash from '~/flash';
-import { GlLoadingIcon } from '@gitlab/ui';
import eventHub from '../../notes/event_hub';
import DiffFileHeader from './diff_file_header.vue';
import DiffContent from './diff_content.vue';
diff --git a/app/assets/javascripts/diffs/components/diff_file_header.vue b/app/assets/javascripts/diffs/components/diff_file_header.vue
index 665328eb234..91d374eafc0 100644
--- a/app/assets/javascripts/diffs/components/diff_file_header.vue
+++ b/app/assets/javascripts/diffs/components/diff_file_header.vue
@@ -1,17 +1,17 @@
<script>
import _ from 'underscore';
import { mapActions, mapGetters } from 'vuex';
-import { polyfillSticky, stickyMonitor } from '~/lib/utils/sticky';
+import { GlButton, GlTooltipDirective, GlTooltip, GlLoadingIcon } from '@gitlab/ui';
+import { polyfillSticky } from '~/lib/utils/sticky';
import ClipboardButton from '~/vue_shared/components/clipboard_button.vue';
import Icon from '~/vue_shared/components/icon.vue';
import FileIcon from '~/vue_shared/components/file_icon.vue';
-import { GlButton, GlTooltipDirective, GlTooltip, GlLoadingIcon } from '@gitlab/ui';
import { truncateSha } from '~/lib/utils/text_utility';
import { __, s__, sprintf } from '~/locale';
import { diffViewerModes } from '~/ide/constants';
import EditButton from './edit_button.vue';
import DiffStats from './diff_stats.vue';
-import { scrollToElement, contentTop } from '~/lib/utils/common_utils';
+import { scrollToElement } from '~/lib/utils/common_utils';
export default {
components: {
@@ -127,8 +127,6 @@ export default {
},
mounted() {
polyfillSticky(this.$refs.header);
- const fileHeaderHeight = this.$refs.header.clientHeight;
- stickyMonitor(this.$refs.header, contentTop() - fileHeaderHeight - 1, false);
},
methods: {
...mapActions('diffs', [
diff --git a/app/assets/javascripts/diffs/components/diff_gutter_avatars.vue b/app/assets/javascripts/diffs/components/diff_gutter_avatars.vue
index 7ede7a4f430..be19d8520b5 100644
--- a/app/assets/javascripts/diffs/components/diff_gutter_avatars.vue
+++ b/app/assets/javascripts/diffs/components/diff_gutter_avatars.vue
@@ -1,9 +1,9 @@
<script>
+import { GlTooltipDirective } from '@gitlab/ui';
import { n__ } from '~/locale';
import Icon from '~/vue_shared/components/icon.vue';
import { truncate } from '~/lib/utils/text_utility';
import UserAvatarImage from '~/vue_shared/components/user_avatar/user_avatar_image.vue';
-import { GlTooltipDirective } from '@gitlab/ui';
import { COUNT_OF_AVATARS_IN_GUTTER, LENGTH_OF_AVATAR_TOOLTIP } from '../constants';
export default {
diff --git a/app/assets/javascripts/diffs/components/diff_line_gutter_content.vue b/app/assets/javascripts/diffs/components/diff_line_gutter_content.vue
index 434d554d148..34aa15856d2 100644
--- a/app/assets/javascripts/diffs/components/diff_line_gutter_content.vue
+++ b/app/assets/javascripts/diffs/components/diff_line_gutter_content.vue
@@ -72,7 +72,7 @@ export default {
lineCode() {
return (
this.line.line_code ||
- (this.line.left && this.line.line.left.line_code) ||
+ (this.line.left && this.line.left.line_code) ||
(this.line.right && this.line.right.line_code)
);
},
diff --git a/app/assets/javascripts/diffs/components/diff_line_note_form.vue b/app/assets/javascripts/diffs/components/diff_line_note_form.vue
index da0cdbe467b..f81f50f8490 100644
--- a/app/assets/javascripts/diffs/components/diff_line_note_form.vue
+++ b/app/assets/javascripts/diffs/components/diff_line_note_form.vue
@@ -1,7 +1,7 @@
<script>
import { mapState, mapGetters, mapActions } from 'vuex';
-import { s__ } from '~/locale';
import diffLineNoteFormMixin from 'ee_else_ce/notes/mixins/diff_line_note_form';
+import { s__ } from '~/locale';
import noteForm from '../../notes/components/note_form.vue';
import autosave from '../../notes/mixins/autosave';
import userAvatarLink from '../../vue_shared/components/user_avatar/user_avatar_link.vue';
diff --git a/app/assets/javascripts/diffs/constants.js b/app/assets/javascripts/diffs/constants.js
index d84e1af11f3..7521f3c950a 100644
--- a/app/assets/javascripts/diffs/constants.js
+++ b/app/assets/javascripts/diffs/constants.js
@@ -57,3 +57,4 @@ export const MIN_RENDERING_MS = 2;
export const START_RENDERING_INDEX = 200;
export const INLINE_DIFF_LINES_KEY = 'highlighted_diff_lines';
export const PARALLEL_DIFF_LINES_KEY = 'parallel_diff_lines';
+export const DIFFS_PER_PAGE = 20;
diff --git a/app/assets/javascripts/diffs/index.js b/app/assets/javascripts/diffs/index.js
index c9580e3d3b4..375ac80021f 100644
--- a/app/assets/javascripts/diffs/index.js
+++ b/app/assets/javascripts/diffs/index.js
@@ -67,6 +67,8 @@ export default function initDiffsApp(store) {
return {
endpoint: dataset.endpoint,
+ endpointMetadata: dataset.endpointMetadata || '',
+ endpointBatch: dataset.endpointBatch || '',
projectPath: dataset.projectPath,
helpPagePath: dataset.helpPagePath,
currentUser: JSON.parse(dataset.currentUserData) || {},
@@ -100,6 +102,8 @@ export default function initDiffsApp(store) {
return createElement('diffs-app', {
props: {
endpoint: this.endpoint,
+ endpointMetadata: this.endpointMetadata,
+ endpointBatch: this.endpointBatch,
currentUser: this.currentUser,
projectPath: this.projectPath,
helpPagePath: this.helpPagePath,
diff --git a/app/assets/javascripts/diffs/store/actions.js b/app/assets/javascripts/diffs/store/actions.js
index 6695d9fe96c..992b45c97ac 100644
--- a/app/assets/javascripts/diffs/store/actions.js
+++ b/app/assets/javascripts/diffs/store/actions.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import axios from '~/lib/utils/axios_utils';
import Cookies from 'js-cookie';
+import axios from '~/lib/utils/axios_utils';
import createFlash from '~/flash';
import { s__ } from '~/locale';
import { handleLocationHash, historyPushState, scrollToElement } from '~/lib/utils/common_utils';
@@ -13,6 +13,7 @@ import {
convertExpandLines,
idleCallback,
allDiscussionWrappersExpanded,
+ prepareDiffData,
} from './utils';
import * as types from './mutation_types';
import {
@@ -33,16 +34,36 @@ import {
START_RENDERING_INDEX,
INLINE_DIFF_LINES_KEY,
PARALLEL_DIFF_LINES_KEY,
+ DIFFS_PER_PAGE,
} from '../constants';
import { diffViewerModes } from '~/ide/constants';
export const setBaseConfig = ({ commit }, options) => {
- const { endpoint, projectPath, dismissEndpoint, showSuggestPopover } = options;
- commit(types.SET_BASE_CONFIG, { endpoint, projectPath, dismissEndpoint, showSuggestPopover });
+ const {
+ endpoint,
+ endpointMetadata,
+ endpointBatch,
+ projectPath,
+ dismissEndpoint,
+ showSuggestPopover,
+ useSingleDiffStyle,
+ } = options;
+ commit(types.SET_BASE_CONFIG, {
+ endpoint,
+ endpointMetadata,
+ endpointBatch,
+ projectPath,
+ dismissEndpoint,
+ showSuggestPopover,
+ useSingleDiffStyle,
+ });
};
export const fetchDiffFiles = ({ state, commit }) => {
const worker = new TreeWorker();
+ const urlParams = {
+ w: state.showWhitespace ? '0' : '1',
+ };
commit(types.SET_LOADING, true);
@@ -53,9 +74,10 @@ export const fetchDiffFiles = ({ state, commit }) => {
});
return axios
- .get(mergeUrlParams({ w: state.showWhitespace ? '0' : '1' }, state.endpoint))
+ .get(mergeUrlParams(urlParams, state.endpoint))
.then(res => {
commit(types.SET_LOADING, false);
+
commit(types.SET_MERGE_REQUEST_DIFFS, res.data.merge_request_diffs || []);
commit(types.SET_DIFF_DATA, res.data);
@@ -67,6 +89,52 @@ export const fetchDiffFiles = ({ state, commit }) => {
.catch(() => worker.terminate());
};
+export const fetchDiffFilesBatch = ({ commit, state }) => {
+ commit(types.SET_BATCH_LOADING, true);
+
+ const getBatch = page =>
+ axios
+ .get(state.endpointBatch, {
+ params: { page, per_page: DIFFS_PER_PAGE, w: state.showWhitespace ? '0' : '1' },
+ })
+ .then(({ data: { pagination, diff_files } }) => {
+ commit(types.SET_DIFF_DATA_BATCH, { diff_files });
+ commit(types.SET_BATCH_LOADING, false);
+ return pagination.next_page;
+ })
+ .then(nextPage => nextPage && getBatch(nextPage));
+
+ return getBatch()
+ .then(handleLocationHash)
+ .catch(() => null);
+};
+
+export const fetchDiffFilesMeta = ({ commit, state }) => {
+ const worker = new TreeWorker();
+
+ commit(types.SET_LOADING, true);
+
+ worker.addEventListener('message', ({ data }) => {
+ commit(types.SET_TREE_DATA, data);
+
+ worker.terminate();
+ });
+
+ return axios
+ .get(state.endpointMetadata)
+ .then(({ data }) => {
+ const strippedData = { ...data };
+ delete strippedData.diff_files;
+ commit(types.SET_LOADING, false);
+ commit(types.SET_MERGE_REQUEST_DIFFS, data.merge_request_diffs || []);
+ commit(types.SET_DIFF_DATA, strippedData);
+
+ prepareDiffData(data);
+ worker.postMessage(data.diff_files);
+ })
+ .catch(() => worker.terminate());
+};
+
export const setHighlightedRow = ({ commit }, lineCode) => {
const fileHash = lineCode.split('_')[0];
commit(types.SET_HIGHLIGHTED_ROW, lineCode);
diff --git a/app/assets/javascripts/diffs/store/modules/diff_state.js b/app/assets/javascripts/diffs/store/modules/diff_state.js
index 6821c8445ea..7366c50752c 100644
--- a/app/assets/javascripts/diffs/store/modules/diff_state.js
+++ b/app/assets/javascripts/diffs/store/modules/diff_state.js
@@ -8,6 +8,7 @@ const defaultViewType = INLINE_DIFF_VIEW_TYPE;
export default () => ({
isLoading: true,
+ isBatchLoading: false,
addedLines: null,
removedLines: null,
endpoint: '',
@@ -30,4 +31,5 @@ export default () => ({
fileFinderVisible: false,
dismissEndpoint: '',
showSuggestPopover: true,
+ useSingleDiffStyle: false,
});
diff --git a/app/assets/javascripts/diffs/store/mutation_types.js b/app/assets/javascripts/diffs/store/mutation_types.js
index 9db56331faa..5a90d78b2bc 100644
--- a/app/assets/javascripts/diffs/store/mutation_types.js
+++ b/app/assets/javascripts/diffs/store/mutation_types.js
@@ -1,6 +1,8 @@
export const SET_BASE_CONFIG = 'SET_BASE_CONFIG';
export const SET_LOADING = 'SET_LOADING';
+export const SET_BATCH_LOADING = 'SET_BATCH_LOADING';
export const SET_DIFF_DATA = 'SET_DIFF_DATA';
+export const SET_DIFF_DATA_BATCH = 'SET_DIFF_DATA_BATCH';
export const SET_DIFF_VIEW_TYPE = 'SET_DIFF_VIEW_TYPE';
export const SET_MERGE_REQUEST_DIFFS = 'SET_MERGE_REQUEST_DIFFS';
export const TOGGLE_LINE_HAS_FORM = 'TOGGLE_LINE_HAS_FORM';
diff --git a/app/assets/javascripts/diffs/store/mutations.js b/app/assets/javascripts/diffs/store/mutations.js
index a6915a46c00..859f43b3b6d 100644
--- a/app/assets/javascripts/diffs/store/mutations.js
+++ b/app/assets/javascripts/diffs/store/mutations.js
@@ -12,22 +12,57 @@ import * as types from './mutation_types';
export default {
[types.SET_BASE_CONFIG](state, options) {
- const { endpoint, projectPath, dismissEndpoint, showSuggestPopover } = options;
- Object.assign(state, { endpoint, projectPath, dismissEndpoint, showSuggestPopover });
+ const {
+ endpoint,
+ endpointMetadata,
+ endpointBatch,
+ projectPath,
+ dismissEndpoint,
+ showSuggestPopover,
+ useSingleDiffStyle,
+ } = options;
+ Object.assign(state, {
+ endpoint,
+ endpointMetadata,
+ endpointBatch,
+ projectPath,
+ dismissEndpoint,
+ showSuggestPopover,
+ useSingleDiffStyle,
+ });
},
[types.SET_LOADING](state, isLoading) {
Object.assign(state, { isLoading });
},
+ [types.SET_BATCH_LOADING](state, isBatchLoading) {
+ Object.assign(state, { isBatchLoading });
+ },
+
[types.SET_DIFF_DATA](state, data) {
- prepareDiffData(data);
+ if (
+ !(
+ gon &&
+ gon.features &&
+ gon.features.diffsBatchLoad &&
+ window.location.search.indexOf('diff_id') === -1
+ )
+ ) {
+ prepareDiffData(data);
+ }
Object.assign(state, {
...convertObjectPropsToCamelCase(data),
});
},
+ [types.SET_DIFF_DATA_BATCH](state, data) {
+ prepareDiffData(data);
+
+ state.diffFiles.push(...data.diff_files);
+ },
+
[types.RENDER_FILE](state, file) {
Object.assign(file, {
renderIt: true,
diff --git a/app/assets/javascripts/diffs/store/utils.js b/app/assets/javascripts/diffs/store/utils.js
index d46bdea9b50..281a0de1fc2 100644
--- a/app/assets/javascripts/diffs/store/utils.js
+++ b/app/assets/javascripts/diffs/store/utils.js
@@ -252,10 +252,11 @@ export function prepareDiffData(diffData) {
showingLines += file.parallel_diff_lines.length;
}
+ const name = (file.viewer && file.viewer.name) || diffViewerModes.text;
+
Object.assign(file, {
renderIt: showingLines < LINES_TO_BE_RENDERED_DIRECTLY,
- collapsed:
- file.viewer.name === diffViewerModes.text && showingLines > MAX_LINES_TO_BE_RENDERED,
+ collapsed: name === diffViewerModes.text && showingLines > MAX_LINES_TO_BE_RENDERED,
isShowingFullFile: false,
isLoadingFullFile: false,
discussions: [],
@@ -497,7 +498,7 @@ export const allDiscussionWrappersExpanded = diff => {
}
});
} else if (diff.highlighted_diff_lines) {
- diff.parallel_diff_lines.forEach(line => {
+ diff.highlighted_diff_lines.forEach(line => {
if (line.discussions.length) {
discussionsExpandedArray.push(line.discussionsExpanded);
}
diff --git a/app/assets/javascripts/emoji/no_emoji_validator.js b/app/assets/javascripts/emoji/no_emoji_validator.js
index 384d62a133a..edef868619a 100644
--- a/app/assets/javascripts/emoji/no_emoji_validator.js
+++ b/app/assets/javascripts/emoji/no_emoji_validator.js
@@ -1,5 +1,5 @@
-import { __ } from '~/locale';
import emojiRegex from 'emoji-regex';
+import { __ } from '~/locale';
import InputValidator from '../validators/input_validator';
export default class NoEmojiValidator extends InputValidator {
diff --git a/app/assets/javascripts/environments/components/container.vue b/app/assets/javascripts/environments/components/container.vue
index 426bb63d4f7..cdf62259479 100644
--- a/app/assets/javascripts/environments/components/container.vue
+++ b/app/assets/javascripts/environments/components/container.vue
@@ -1,7 +1,7 @@
<script>
import { GlLoadingIcon } from '@gitlab/ui';
-import TablePagination from '~/vue_shared/components/pagination/table_pagination.vue';
import containerMixin from 'ee_else_ce/environments/mixins/container_mixin';
+import TablePagination from '~/vue_shared/components/pagination/table_pagination.vue';
import EnvironmentTable from '../components/environments_table.vue';
export default {
diff --git a/app/assets/javascripts/environments/components/environment_actions.vue b/app/assets/javascripts/environments/components/environment_actions.vue
index 22bba21526c..d2978422224 100644
--- a/app/assets/javascripts/environments/components/environment_actions.vue
+++ b/app/assets/javascripts/environments/components/environment_actions.vue
@@ -1,10 +1,10 @@
<script>
+import { GlLoadingIcon } from '@gitlab/ui';
import { __, s__, sprintf } from '~/locale';
import { formatTime } from '~/lib/utils/datetime_utility';
import Icon from '~/vue_shared/components/icon.vue';
import eventHub from '../event_hub';
import tooltip from '../../vue_shared/directives/tooltip';
-import { GlLoadingIcon } from '@gitlab/ui';
export default {
directives: {
diff --git a/app/assets/javascripts/environments/components/environment_item.vue b/app/assets/javascripts/environments/components/environment_item.vue
index c94039326aa..428dfe5fcf7 100644
--- a/app/assets/javascripts/environments/components/environment_item.vue
+++ b/app/assets/javascripts/environments/components/environment_item.vue
@@ -1,12 +1,13 @@
<script>
/* eslint-disable @gitlab/vue-i18n/no-bare-strings */
-import { __, sprintf } from '~/locale';
-import Timeago from 'timeago.js';
+import { format } from 'timeago.js';
import _ from 'underscore';
import { GlTooltipDirective } from '@gitlab/ui';
+import environmentItemMixin from 'ee_else_ce/environments/mixins/environment_item_mixin';
import UserAvatarLink from '~/vue_shared/components/user_avatar/user_avatar_link.vue';
import Icon from '~/vue_shared/components/icon.vue';
-import environmentItemMixin from 'ee_else_ce/environments/mixins/environment_item_mixin';
+import TooltipOnTruncate from '~/vue_shared/components/tooltip_on_truncate.vue';
+import { __, sprintf } from '~/locale';
import ActionsComponent from './environment_actions.vue';
import ExternalUrlComponent from './environment_external_url.vue';
import StopComponent from './environment_stop.vue';
@@ -22,11 +23,9 @@ import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils';
*
* Renders a table row for each environment.
*/
-const timeagoInstance = new Timeago();
export default {
components: {
- UserAvatarLink,
CommitComponent,
Icon,
ActionsComponent,
@@ -35,6 +34,8 @@ export default {
RollbackComponent,
TerminalButtonComponent,
MonitoringButtonComponent,
+ TooltipOnTruncate,
+ UserAvatarLink,
},
directives: {
GlTooltip: GlTooltipDirective,
@@ -42,16 +43,21 @@ export default {
mixins: [environmentItemMixin],
props: {
+ canReadEnvironment: {
+ type: Boolean,
+ required: false,
+ default: false,
+ },
+
model: {
type: Object,
required: true,
default: () => ({}),
},
- canReadEnvironment: {
- type: Boolean,
- required: false,
- default: false,
+ tableData: {
+ type: Object,
+ required: true,
},
},
@@ -121,7 +127,7 @@ export default {
*/
deployedDate() {
if (this.canShowDate) {
- return timeagoInstance.format(this.model.last_deployment.deployed_at);
+ return format(this.model.last_deployment.deployed_at);
}
return '';
},
@@ -446,9 +452,13 @@ export default {
class="gl-responsive-table-row"
role="row"
>
- <div class="table-section section-wrap section-15 text-truncate" role="gridcell">
+ <div
+ class="table-section section-wrap text-truncate"
+ :class="tableData.name.spacing"
+ role="gridcell"
+ >
<div v-if="!model.isFolder" class="table-mobile-header" role="rowheader">
- {{ s__('Environments|Environment') }}
+ {{ tableData.name.title }}
</div>
<span v-if="shouldRenderDeployBoard" class="deploy-board-icon" @click="toggleDeployBoard">
@@ -488,7 +498,8 @@ export default {
</div>
<div
- class="table-section section-10 deployment-column d-none d-sm-none d-md-block"
+ class="table-section deployment-column d-none d-sm-none d-md-block"
+ :class="tableData.deploy.spacing"
role="gridcell"
>
<span v-if="shouldRenderDeploymentID" class="text-break-word">
@@ -507,18 +518,32 @@ export default {
</span>
</div>
- <div class="table-section section-15 d-none d-sm-none d-md-block" role="gridcell">
- <a
- v-if="shouldRenderBuildName"
- :href="buildPath"
- class="build-link cgray flex-truncate-parent"
- >
- <span class="flex-truncate-child">{{ buildName }}</span>
+ <div
+ class="table-section d-none d-sm-none d-md-block"
+ :class="tableData.build.spacing"
+ role="gridcell"
+ >
+ <a v-if="shouldRenderBuildName" :href="buildPath" class="build-link cgray">
+ <tooltip-on-truncate
+ :title="buildName"
+ truncate-target="child"
+ class="flex-truncate-parent"
+ >
+ <span class="flex-truncate-child">
+ {{ buildName }}
+ </span>
+ </tooltip-on-truncate>
</a>
</div>
- <div v-if="!model.isFolder" class="table-section section-20" role="gridcell">
- <div role="rowheader" class="table-mobile-header">{{ s__('Environments|Commit') }}</div>
+ <div
+ v-if="!model.isFolder"
+ class="table-section"
+ :class="tableData.commit.spacing"
+ role="gridcell"
+ >
+ <div role="rowheader" class="table-mobile-header">{{ tableData.commit.title }}</div>
+
<div v-if="hasLastDeploymentKey" class="js-commit-component table-mobile-content">
<commit-component
:tag="commitTag"
@@ -534,8 +559,14 @@ export default {
</div>
</div>
- <div v-if="!model.isFolder" class="table-section section-10" role="gridcell">
- <div role="rowheader" class="table-mobile-header">{{ s__('Environments|Updated') }}</div>
+ <div
+ v-if="!model.isFolder"
+ class="table-section"
+ :class="tableData.date.spacing"
+ role="gridcell"
+ >
+ <div role="rowheader" class="table-mobile-header">{{ tableData.date.title }}</div>
+
<span v-if="canShowDate" class="environment-created-date-timeago table-mobile-content">
{{ deployedDate }}
</span>
@@ -543,7 +574,8 @@ export default {
<div
v-if="!model.isFolder && displayEnvironmentActions"
- class="table-section section-30 table-button-footer"
+ class="table-section table-button-footer"
+ :class="tableData.actions.spacing"
role="gridcell"
>
<div class="btn-group table-action-buttons" role="group">
diff --git a/app/assets/javascripts/environments/components/environment_monitoring.vue b/app/assets/javascripts/environments/components/environment_monitoring.vue
index 886490847ea..7b4b633dc7f 100644
--- a/app/assets/javascripts/environments/components/environment_monitoring.vue
+++ b/app/assets/javascripts/environments/components/environment_monitoring.vue
@@ -1,9 +1,9 @@
<script>
+import { GlButton, GlTooltipDirective } from '@gitlab/ui';
import { __ } from '~/locale';
/**
* Renders the Monitoring (Metrics) link in environments table.
*/
-import { GlButton, GlTooltipDirective } from '@gitlab/ui';
import Icon from '~/vue_shared/components/icon.vue';
export default {
diff --git a/app/assets/javascripts/environments/components/environments_app.vue b/app/assets/javascripts/environments/components/environments_app.vue
index 81927d18f8b..50c667e6966 100644
--- a/app/assets/javascripts/environments/components/environments_app.vue
+++ b/app/assets/javascripts/environments/components/environments_app.vue
@@ -31,10 +31,6 @@ export default {
type: Boolean,
required: true,
},
- cssContainerClass: {
- type: String,
- required: true,
- },
newEnvironmentPath: {
type: String,
required: true,
@@ -93,7 +89,7 @@ export default {
};
</script>
<template>
- <div :class="cssContainerClass">
+ <div>
<stop-environment-modal :environment="environmentInStopModal" />
<confirm-rollback-modal :environment="environmentInRollbackModal" />
diff --git a/app/assets/javascripts/environments/components/environments_table.vue b/app/assets/javascripts/environments/components/environments_table.vue
index 4464f5e5578..453e7610e21 100644
--- a/app/assets/javascripts/environments/components/environments_table.vue
+++ b/app/assets/javascripts/environments/components/environments_table.vue
@@ -5,6 +5,7 @@
import { GlLoadingIcon } from '@gitlab/ui';
import _ from 'underscore';
import environmentTableMixin from 'ee_else_ce/environments/mixins/environments_table_mixin';
+import { s__ } from '~/locale';
import EnvironmentItem from './environment_item.vue';
export default {
@@ -41,6 +42,34 @@ export default {
: env,
);
},
+ tableData() {
+ return {
+ // percent spacing for cols, should add up to 100
+ name: {
+ title: s__('Environments|Environment'),
+ spacing: 'section-15',
+ },
+ deploy: {
+ title: s__('Environments|Deployment'),
+ spacing: 'section-10',
+ },
+ build: {
+ title: s__('Environments|Job'),
+ spacing: 'section-15',
+ },
+ commit: {
+ title: s__('Environments|Commit'),
+ spacing: 'section-20',
+ },
+ date: {
+ title: s__('Environments|Updated'),
+ spacing: 'section-10',
+ },
+ actions: {
+ spacing: 'section-30',
+ },
+ };
+ },
},
methods: {
folderUrl(model) {
@@ -79,20 +108,20 @@ export default {
<template>
<div class="ci-table" role="grid">
<div class="gl-responsive-table-row table-row-header" role="row">
- <div class="table-section section-15 environments-name" role="columnheader">
- {{ s__('Environments|Environment') }}
+ <div class="table-section" :class="tableData.name.spacing" role="columnheader">
+ {{ tableData.name.title }}
</div>
- <div class="table-section section-10 environments-deploy" role="columnheader">
- {{ s__('Environments|Deployment') }}
+ <div class="table-section" :class="tableData.deploy.spacing" role="columnheader">
+ {{ tableData.deploy.title }}
</div>
- <div class="table-section section-15 environments-build" role="columnheader">
- {{ s__('Environments|Job') }}
+ <div class="table-section" :class="tableData.build.spacing" role="columnheader">
+ {{ tableData.build.title }}
</div>
- <div class="table-section section-20 environments-commit" role="columnheader">
- {{ s__('Environments|Commit') }}
+ <div class="table-section" :class="tableData.commit.spacing" role="columnheader">
+ {{ tableData.commit.title }}
</div>
- <div class="table-section section-10 environments-date" role="columnheader">
- {{ s__('Environments|Updated') }}
+ <div class="table-section" :class="tableData.date.spacing" role="columnheader">
+ {{ tableData.date.title }}
</div>
</div>
<template v-for="(model, i) in sortedEnvironments" :model="model">
@@ -101,6 +130,7 @@ export default {
:key="`environment-item-${i}`"
:model="model"
:can-read-environment="canReadEnvironment"
+ :table-data="tableData"
/>
<div
@@ -115,7 +145,8 @@ export default {
:is-loading="model.isLoadingDeployBoard"
:is-empty="model.isEmptyDeployBoard"
:has-legacy-app-label="model.hasLegacyAppLabel"
- :logs-path="model.logs_path"
+ :project-path="model.project_path"
+ :environment-name="model.name"
/>
</div>
</div>
@@ -132,6 +163,7 @@ export default {
:key="`env-item-${i}-${index}`"
:model="children"
:can-read-environment="canReadEnvironment"
+ :table-data="tableData"
/>
<div :key="`sub-div-${i}`">
diff --git a/app/assets/javascripts/environments/folder/environments_folder_view.vue b/app/assets/javascripts/environments/folder/environments_folder_view.vue
index 6fd0561f682..d60c2efd618 100644
--- a/app/assets/javascripts/environments/folder/environments_folder_view.vue
+++ b/app/assets/javascripts/environments/folder/environments_folder_view.vue
@@ -40,13 +40,13 @@ export default {
<div :class="cssContainerClass">
<stop-environment-modal :environment="environmentInStopModal" />
- <div v-if="!isLoading" class="top-area">
- <h4 class="js-folder-name environments-folder-name">
- {{ s__('Environments|Environments') }} /
- <b>{{ folderName }}</b>
- </h4>
+ <h4 class="js-folder-name environments-folder-name">
+ {{ s__('Environments|Environments') }} /
+ <b>{{ folderName }}</b>
+ </h4>
- <tabs :tabs="tabs" scope="environments" @onChangeTab="onChangeTab" />
+ <div class="top-area">
+ <tabs v-if="!isLoading" :tabs="tabs" scope="environments" @onChangeTab="onChangeTab" />
</div>
<container
diff --git a/app/assets/javascripts/environments/index.js b/app/assets/javascripts/environments/index.js
index dcdaf8731f8..9a68619d4f7 100644
--- a/app/assets/javascripts/environments/index.js
+++ b/app/assets/javascripts/environments/index.js
@@ -21,7 +21,6 @@ export default () =>
newEnvironmentPath: environmentsData.newEnvironmentPath,
helpPagePath: environmentsData.helpPagePath,
deployBoardsHelpPath: environmentsData.deployBoardsHelpPath,
- cssContainerClass: environmentsData.cssClass,
canCreateEnvironment: parseBoolean(environmentsData.canCreateEnvironment),
canReadEnvironment: parseBoolean(environmentsData.canReadEnvironment),
};
@@ -33,7 +32,6 @@ export default () =>
newEnvironmentPath: this.newEnvironmentPath,
helpPagePath: this.helpPagePath,
deployBoardsHelpPath: this.deployBoardsHelpPath,
- cssContainerClass: this.cssContainerClass,
canCreateEnvironment: this.canCreateEnvironment,
canReadEnvironment: this.canReadEnvironment,
...this.canaryCalloutProps,
diff --git a/app/assets/javascripts/environments/stores/environments_store.js b/app/assets/javascripts/environments/stores/environments_store.js
index 5fb420e9da5..81c257acd53 100644
--- a/app/assets/javascripts/environments/stores/environments_store.js
+++ b/app/assets/javascripts/environments/stores/environments_store.js
@@ -1,5 +1,5 @@
-import { parseIntPagination, normalizeHeaders } from '~/lib/utils/common_utils';
import { setDeployBoard } from 'ee_else_ce/environments/stores/helpers';
+import { parseIntPagination, normalizeHeaders } from '~/lib/utils/common_utils';
/**
* Environments Store.
diff --git a/app/assets/javascripts/error_tracking/components/error_details.vue b/app/assets/javascripts/error_tracking/components/error_details.vue
index 37c9818f869..14b2e59009a 100644
--- a/app/assets/javascripts/error_tracking/components/error_details.vue
+++ b/app/assets/javascripts/error_tracking/components/error_details.vue
@@ -1,8 +1,9 @@
<script>
import { mapActions, mapGetters, mapState } from 'vuex';
import dateFormat from 'dateformat';
-import { __, sprintf } from '~/locale';
-import { GlButton, GlLink, GlLoadingIcon } from '@gitlab/ui';
+import { GlFormInput, GlLink, GlLoadingIcon } from '@gitlab/ui';
+import { __, sprintf, n__ } from '~/locale';
+import LoadingButton from '~/vue_shared/components/loading_button.vue';
import Icon from '~/vue_shared/components/icon.vue';
import TooltipOnTruncate from '~/vue_shared/components/tooltip_on_truncate.vue';
import Stacktrace from './stacktrace.vue';
@@ -12,7 +13,8 @@ import { trackClickErrorLinkToSentryOptions } from '../utils';
export default {
components: {
- GlButton,
+ LoadingButton,
+ GlFormInput,
GlLink,
GlLoadingIcon,
TooltipOnTruncate,
@@ -32,6 +34,19 @@ export default {
type: String,
required: true,
},
+ projectIssuesPath: {
+ type: String,
+ required: true,
+ },
+ csrfToken: {
+ type: String,
+ required: true,
+ },
+ },
+ data() {
+ return {
+ issueCreationInProgress: false,
+ };
},
computed: {
...mapState('details', ['error', 'loading', 'loadingStacktrace', 'stacktraceData']),
@@ -41,7 +56,7 @@ export default {
__('Reported %{timeAgo} by %{reportedBy}'),
{
reportedBy: `<strong>${this.error.culprit}</strong>`,
- timeAgo: this.timeFormated(this.stacktraceData.date_received),
+ timeAgo: this.timeFormatted(this.stacktraceData.date_received),
},
false,
);
@@ -58,6 +73,27 @@ export default {
showStacktrace() {
return Boolean(!this.loadingStacktrace && this.stacktrace && this.stacktrace.length);
},
+ issueTitle() {
+ return this.error.title;
+ },
+ issueDescription() {
+ return sprintf(
+ __(
+ '%{description}- Sentry event: %{errorUrl}- First seen: %{firstSeen}- Last seen: %{lastSeen} %{countLabel}: %{count}%{userCountLabel}: %{userCount}',
+ ),
+ {
+ description: '# Error Details:\n',
+ errorUrl: `${this.error.external_url}\n`,
+ firstSeen: `\n${this.error.first_seen}\n`,
+ lastSeen: `${this.error.last_seen}\n`,
+ countLabel: n__('- Event', '- Events', this.error.count),
+ count: `${this.error.count}\n`,
+ userCountLabel: n__('- User', '- Users', this.error.user_count),
+ userCount: `${this.error.user_count}\n`,
+ },
+ false,
+ );
+ },
},
mounted() {
this.startPollingDetails(this.issueDetailsPath);
@@ -66,8 +102,12 @@ export default {
methods: {
...mapActions('details', ['startPollingDetails', 'startPollingStacktrace']),
trackClickErrorLinkToSentryOptions,
+ createIssue() {
+ this.issueCreationInProgress = true;
+ this.$refs.sentryIssueForm.submit();
+ },
formatDate(date) {
- return `${this.timeFormated(date)} (${dateFormat(date, 'UTC:yyyy-mm-dd h:MM:ssTT Z')})`;
+ return `${this.timeFormatted(date)} (${dateFormat(date, 'UTC:yyyy-mm-dd h:MM:ssTT Z')})`;
},
},
};
@@ -78,13 +118,27 @@ export default {
<div v-if="loading" class="py-3">
<gl-loading-icon :size="3" />
</div>
-
<div v-else-if="showDetails" class="error-details">
<div class="top-area align-items-center justify-content-between py-3">
<span v-if="!loadingStacktrace && stacktrace" v-html="reported"></span>
- <!-- <gl-button class="my-3 ml-auto" variant="success">
- {{ __('Create Issue') }}
- </gl-button>-->
+ <form ref="sentryIssueForm" :action="projectIssuesPath" method="POST">
+ <gl-form-input class="hidden" name="issue[title]" :value="issueTitle" />
+ <input name="issue[description]" :value="issueDescription" type="hidden" />
+ <gl-form-input
+ :value="error.id"
+ class="hidden"
+ name="issue[sentry_issue_attributes][sentry_issue_identifier]"
+ />
+ <gl-form-input :value="csrfToken" class="hidden" name="authenticity_token" />
+ <loading-button
+ v-if="!error.gitlab_issue"
+ class="btn-success"
+ :label="__('Create issue')"
+ :loading="issueCreationInProgress"
+ data-qa-selector="create_issue_button"
+ @click="createIssue"
+ />
+ </form>
</div>
<div>
<tooltip-on-truncate :title="error.title" truncate-target="child" placement="top">
@@ -92,6 +146,12 @@ export default {
</tooltip-on-truncate>
<h3>{{ __('Error details') }}</h3>
<ul>
+ <li v-if="error.gitlab_issue">
+ <span class="bold">{{ __('GitLab Issue') }}:</span>
+ <gl-link :href="error.gitlab_issue">
+ <span>{{ error.gitlab_issue }}</span>
+ </gl-link>
+ </li>
<li>
<span class="bold">{{ __('Sentry event') }}:</span>
<gl-link
diff --git a/app/assets/javascripts/error_tracking/components/error_tracking_list.vue b/app/assets/javascripts/error_tracking/components/error_tracking_list.vue
index 88139ce7403..8e2128ac713 100644
--- a/app/assets/javascripts/error_tracking/components/error_tracking_list.vue
+++ b/app/assets/javascripts/error_tracking/components/error_tracking_list.vue
@@ -1,39 +1,57 @@
<script>
-import { mapActions, mapState, mapGetters } from 'vuex';
+import { mapActions, mapState } from 'vuex';
import {
GlEmptyState,
GlButton,
+ GlIcon,
GlLink,
GlLoadingIcon,
GlTable,
- GlSearchBoxByType,
+ GlFormInput,
+ GlDropdown,
+ GlDropdownItem,
+ GlDropdownDivider,
+ GlTooltipDirective,
+ GlPagination,
} from '@gitlab/ui';
-import { visitUrl } from '~/lib/utils/url_utility';
+import AccessorUtils from '~/lib/utils/accessor';
import Icon from '~/vue_shared/components/icon.vue';
import TimeAgo from '~/vue_shared/components/time_ago_tooltip.vue';
import { __ } from '~/locale';
-import TrackEventDirective from '~/vue_shared/directives/track_event';
-import { trackViewInSentryOptions } from '../utils';
+import _ from 'underscore';
export default {
+ FIRST_PAGE: 1,
+ PREV_PAGE: 1,
+ NEXT_PAGE: 2,
fields: [
{ key: 'error', label: __('Open errors'), thClass: 'w-70p' },
{ key: 'events', label: __('Events') },
{ key: 'users', label: __('Users') },
{ key: 'lastSeen', label: __('Last seen'), thClass: 'w-15p' },
],
+ sortFields: {
+ last_seen: __('Last Seen'),
+ first_seen: __('First Seen'),
+ frequency: __('Frequency'),
+ },
components: {
GlEmptyState,
GlButton,
+ GlDropdown,
+ GlDropdownItem,
+ GlDropdownDivider,
+ GlIcon,
GlLink,
GlLoadingIcon,
GlTable,
- GlSearchBoxByType,
+ GlFormInput,
Icon,
+ GlPagination,
TimeAgo,
},
directives: {
- TrackEvent: TrackEventDirective,
+ GlTooltip: GlTooltipDirective,
},
props: {
indexPath: {
@@ -57,112 +75,214 @@ export default {
required: true,
},
},
+ hasLocalStorage: AccessorUtils.isLocalStorageAccessSafe(),
data() {
return {
errorSearchQuery: '',
+ pageValue: this.$options.FIRST_PAGE,
};
},
computed: {
- ...mapState('list', ['errors', 'externalUrl', 'loading']),
- ...mapGetters('list', ['filterErrorsByTitle']),
- filteredErrors() {
- return this.errorSearchQuery ? this.filterErrorsByTitle(this.errorSearchQuery) : this.errors;
+ ...mapState('list', [
+ 'errors',
+ 'loading',
+ 'searchQuery',
+ 'sortField',
+ 'recentSearches',
+ 'pagination',
+ ]),
+ paginationRequired() {
+ return !_.isEmpty(this.pagination);
+ },
+ },
+ watch: {
+ pagination() {
+ if (typeof this.pagination.previous === 'undefined') {
+ this.pageValue = this.$options.FIRST_PAGE;
+ }
},
},
created() {
if (this.errorTrackingEnabled) {
- this.startPolling(this.indexPath);
+ this.setEndpoint(this.indexPath);
+ this.startPolling();
}
},
methods: {
- ...mapActions('list', ['startPolling', 'restartPolling']),
- trackViewInSentryOptions,
- viewDetails(errorId) {
- visitUrl(`error_tracking/${errorId}/details`);
+ ...mapActions('list', [
+ 'startPolling',
+ 'restartPolling',
+ 'setEndpoint',
+ 'searchByQuery',
+ 'sortByField',
+ 'addRecentSearch',
+ 'clearRecentSearches',
+ 'loadRecentSearches',
+ 'setIndexPath',
+ ]),
+ setSearchText(text) {
+ this.errorSearchQuery = text;
+ this.searchByQuery(text);
+ },
+ getDetailsLink(errorId) {
+ return `error_tracking/${errorId}/details`;
+ },
+ goToNextPage() {
+ this.pageValue = this.$options.NEXT_PAGE;
+ this.startPolling(`${this.indexPath}?cursor=${this.pagination.next.cursor}`);
+ },
+ goToPrevPage() {
+ this.startPolling(`${this.indexPath}?cursor=${this.pagination.previous.cursor}`);
+ },
+ goToPage(page) {
+ window.scrollTo(0, 0);
+ return page === this.$options.PREV_PAGE ? this.goToPrevPage() : this.goToNextPage();
+ },
+ isCurrentSortField(field) {
+ return field === this.sortField;
},
},
};
</script>
<template>
- <div>
+ <div class="error-list">
<div v-if="errorTrackingEnabled">
- <div v-if="loading" class="py-3">
- <gl-loading-icon :size="3" />
- </div>
- <div v-else>
- <div class="d-flex flex-row justify-content-around bg-secondary border">
- <gl-search-box-by-type
- v-model="errorSearchQuery"
- class="col-lg-10 m-3 p-0"
- :placeholder="__('Search or filter results...')"
- type="search"
- autofocus
- />
- <gl-button
- v-track-event="trackViewInSentryOptions(externalUrl)"
- class="m-3"
- variant="primary"
- :href="externalUrl"
- target="_blank"
+ <div
+ class="d-flex flex-row justify-content-around align-items-center bg-secondary border mt-2"
+ >
+ <div class="filtered-search-box flex-grow-1 my-3 ml-3 mr-2">
+ <gl-dropdown
+ :text="__('Recent searches')"
+ class="filtered-search-history-dropdown-wrapper d-none d-md-block"
+ toggle-class="filtered-search-history-dropdown-toggle-button"
+ :disabled="loading"
>
- {{ __('View in Sentry') }}
- <icon name="external-link" class="flex-shrink-0" />
- </gl-button>
+ <div v-if="!$options.hasLocalStorage" class="px-3">
+ {{ __('This feature requires local storage to be enabled') }}
+ </div>
+ <template v-else-if="recentSearches.length > 0">
+ <gl-dropdown-item
+ v-for="searchQuery in recentSearches"
+ :key="searchQuery"
+ @click="setSearchText(searchQuery)"
+ >{{ searchQuery }}</gl-dropdown-item
+ >
+ <gl-dropdown-divider />
+ <gl-dropdown-item ref="clearRecentSearches" @click="clearRecentSearches">{{
+ __('Clear recent searches')
+ }}</gl-dropdown-item>
+ </template>
+ <div v-else class="px-3">{{ __("You don't have any recent searches") }}</div>
+ </gl-dropdown>
+ <div class="filtered-search-input-container flex-fill">
+ <gl-form-input
+ v-model="errorSearchQuery"
+ class="pl-2 filtered-search"
+ :disabled="loading"
+ :placeholder="__('Search or filter results…')"
+ autofocus
+ @keyup.enter.native="searchByQuery(errorSearchQuery)"
+ />
+ </div>
+ <div class="gl-search-box-by-type-right-icons">
+ <gl-button
+ v-if="errorSearchQuery.length > 0"
+ v-gl-tooltip.hover
+ :title="__('Clear')"
+ class="clear-search text-secondary"
+ name="clear"
+ @click="errorSearchQuery = ''"
+ >
+ <gl-icon name="close" :size="12" />
+ </gl-button>
+ </div>
</div>
- <gl-table
- class="mt-3"
- :items="filteredErrors"
- :fields="$options.fields"
- :show-empty="true"
- fixed
- stacked="sm"
+ <gl-dropdown
+ :text="$options.sortFields[sortField]"
+ left
+ :disabled="loading"
+ class="mr-3"
+ menu-class="sort-dropdown"
>
- <template slot="HEAD_events" slot-scope="data">
- <div class="text-md-right">{{ data.label }}</div>
- </template>
- <template slot="HEAD_users" slot-scope="data">
- <div class="text-md-right">{{ data.label }}</div>
- </template>
- <template slot="error" slot-scope="errors">
- <div class="d-flex flex-column">
- <gl-link
- class="d-flex text-dark"
- target="_blank"
- @click="viewDetails(errors.item.id)"
- >
- <strong class="text-truncate">{{ errors.item.title.trim() }}</strong>
- </gl-link>
- <span class="text-secondary text-truncate">
- {{ errors.item.culprit }}
- </span>
- </div>
- </template>
+ <gl-dropdown-item
+ v-for="(label, field) in $options.sortFields"
+ :key="field"
+ @click="sortByField(field)"
+ >
+ <span class="d-flex">
+ <icon
+ class="flex-shrink-0 append-right-4"
+ :class="{ invisible: !isCurrentSortField(field) }"
+ name="mobile-issue-close"
+ />
+ {{ label }}
+ </span>
+ </gl-dropdown-item>
+ </gl-dropdown>
+ </div>
- <template slot="events" slot-scope="errors">
- <div class="text-md-right">{{ errors.item.count }}</div>
- </template>
+ <div v-if="loading" class="py-3">
+ <gl-loading-icon size="md" />
+ </div>
- <template slot="users" slot-scope="errors">
- <div class="text-md-right">{{ errors.item.userCount }}</div>
- </template>
+ <gl-table
+ v-else
+ class="mt-3"
+ :items="errors"
+ :fields="$options.fields"
+ :show-empty="true"
+ fixed
+ stacked="sm"
+ >
+ <template slot="HEAD_events" slot-scope="data">
+ <div class="text-md-right">{{ data.label }}</div>
+ </template>
+ <template slot="HEAD_users" slot-scope="data">
+ <div class="text-md-right">{{ data.label }}</div>
+ </template>
+ <template slot="error" slot-scope="errors">
+ <div class="d-flex flex-column">
+ <gl-link class="d-flex text-dark" :href="getDetailsLink(errors.item.id)">
+ <strong class="text-truncate">{{ errors.item.title.trim() }}</strong>
+ </gl-link>
+ <span class="text-secondary text-truncate">
+ {{ errors.item.culprit }}
+ </span>
+ </div>
+ </template>
+ <template slot="events" slot-scope="errors">
+ <div class="text-md-right">{{ errors.item.count }}</div>
+ </template>
- <template slot="lastSeen" slot-scope="errors">
- <div class="d-flex align-items-center">
- <time-ago :time="errors.item.lastSeen" class="text-secondary" />
- </div>
- </template>
- <template slot="empty">
- <div ref="empty">
- {{ __('No errors to display.') }}
- <gl-link class="js-try-again" @click="restartPolling">
- {{ __('Check again') }}
- </gl-link>
- </div>
- </template>
- </gl-table>
- </div>
+ <template slot="users" slot-scope="errors">
+ <div class="text-md-right">{{ errors.item.userCount }}</div>
+ </template>
+
+ <template slot="lastSeen" slot-scope="errors">
+ <div class="d-flex align-items-center">
+ <time-ago :time="errors.item.lastSeen" class="text-secondary" />
+ </div>
+ </template>
+ <template slot="empty">
+ <div ref="empty">
+ {{ __('No errors to display.') }}
+ <gl-link class="js-try-again" @click="restartPolling">
+ {{ __('Check again') }}
+ </gl-link>
+ </div>
+ </template>
+ </gl-table>
+ <gl-pagination
+ v-show="!loading"
+ v-if="paginationRequired"
+ :prev-page="$options.PREV_PAGE"
+ :next-page="$options.NEXT_PAGE"
+ :value="pageValue"
+ align="center"
+ @input="goToPage"
+ />
</div>
<div v-else-if="userCanEnableErrorTracking">
<gl-empty-state
diff --git a/app/assets/javascripts/error_tracking/components/stacktrace.vue b/app/assets/javascripts/error_tracking/components/stacktrace.vue
index 6b71967624f..f58d54f2933 100644
--- a/app/assets/javascripts/error_tracking/components/stacktrace.vue
+++ b/app/assets/javascripts/error_tracking/components/stacktrace.vue
@@ -27,6 +27,8 @@ export default {
:lines="entry.context"
:file-path="entry.filename"
:error-line="entry.lineNo"
+ :error-fn="entry.function"
+ :error-column="entry.colNo"
:expanded="isFirstEntry(index)"
/>
</div>
diff --git a/app/assets/javascripts/error_tracking/components/stacktrace_entry.vue b/app/assets/javascripts/error_tracking/components/stacktrace_entry.vue
index ad542c579a9..62fd379aa4c 100644
--- a/app/assets/javascripts/error_tracking/components/stacktrace_entry.vue
+++ b/app/assets/javascripts/error_tracking/components/stacktrace_entry.vue
@@ -1,5 +1,6 @@
<script>
import { GlTooltip } from '@gitlab/ui';
+import { __, sprintf } from '~/locale';
import ClipboardButton from '~/vue_shared/components/clipboard_button.vue';
import FileIcon from '~/vue_shared/components/file_icon.vue';
import Icon from '~/vue_shared/components/icon.vue';
@@ -22,9 +23,20 @@ export default {
type: String,
required: true,
},
+ errorFn: {
+ type: String,
+ required: false,
+ default: '',
+ },
errorLine: {
type: Number,
- required: true,
+ required: false,
+ default: 0,
+ },
+ errorColumn: {
+ type: Number,
+ required: false,
+ default: 0,
},
expanded: {
type: Boolean,
@@ -38,12 +50,23 @@ export default {
};
},
computed: {
- linesLength() {
- return this.lines.length;
+ hasCode() {
+ return Boolean(this.lines.length);
},
collapseIcon() {
return this.isExpanded ? 'chevron-down' : 'chevron-right';
},
+ noCodeFn() {
+ return this.errorFn ? sprintf(__('in %{errorFn} '), { errorFn: this.errorFn }) : '';
+ },
+ noCodeLine() {
+ return this.errorLine
+ ? sprintf(__('at line %{errorLine}%{errorColumn}'), {
+ errorLine: this.errorLine,
+ errorColumn: this.errorColumn ? `:${this.errorColumn}` : '',
+ })
+ : '';
+ },
},
methods: {
isHighlighted(lineNum) {
@@ -66,27 +89,31 @@ export default {
<template>
<div class="file-holder">
<div ref="header" class="file-title file-title-flex-parent">
- <div class="file-header-content ">
- <div class="d-inline-block cursor-pointer" @click="toggle()">
+ <div class="file-header-content d-flex align-content-center">
+ <div v-if="hasCode" class="d-inline-block cursor-pointer" @click="toggle()">
<icon :name="collapseIcon" :size="16" aria-hidden="true" class="append-right-5" />
</div>
- <div class="d-inline-block append-right-4">
- <file-icon
- :file-name="filePath"
- :size="18"
- aria-hidden="true"
- css-classes="append-right-5"
- />
- <strong v-gl-tooltip :title="filePath" class="file-title-name" data-container="body">
- {{ filePath }}
- </strong>
- </div>
-
+ <file-icon
+ :file-name="filePath"
+ :size="18"
+ aria-hidden="true"
+ css-classes="append-right-5"
+ />
+ <strong
+ v-gl-tooltip
+ :title="filePath"
+ class="file-title-name d-inline-block overflow-hidden text-truncate"
+ :class="{ 'limited-width': !hasCode }"
+ data-container="body"
+ >
+ {{ filePath }}
+ </strong>
<clipboard-button
:title="__('Copy file path')"
:text="filePath"
- css-class="btn-default btn-transparent btn-clipboard"
+ css-class="btn-default btn-transparent btn-clipboard position-static"
/>
+ <span v-if="!hasCode" class="text-tertiary">{{ noCodeFn }}{{ noCodeLine }}</span>
</div>
</div>
diff --git a/app/assets/javascripts/error_tracking/details.js b/app/assets/javascripts/error_tracking/details.js
index b9b51a6539f..872cb8868a2 100644
--- a/app/assets/javascripts/error_tracking/details.js
+++ b/app/assets/javascripts/error_tracking/details.js
@@ -1,6 +1,7 @@
import Vue from 'vue';
import store from './store';
import ErrorDetails from './components/error_details.vue';
+import csrf from '~/lib/utils/csrf';
export default () => {
// eslint-disable-next-line no-new
@@ -12,12 +13,14 @@ export default () => {
store,
render(createElement) {
const domEl = document.querySelector(this.$options.el);
- const { issueDetailsPath, issueStackTracePath } = domEl.dataset;
+ const { issueDetailsPath, issueStackTracePath, projectIssuesPath } = domEl.dataset;
return createElement('error-details', {
props: {
issueDetailsPath,
issueStackTracePath,
+ projectIssuesPath,
+ csrfToken: csrf.token,
},
});
},
diff --git a/app/assets/javascripts/error_tracking/services/index.js b/app/assets/javascripts/error_tracking/services/index.js
index 68988296cc2..3b3f8311d67 100644
--- a/app/assets/javascripts/error_tracking/services/index.js
+++ b/app/assets/javascripts/error_tracking/services/index.js
@@ -1,7 +1,7 @@
import axios from '~/lib/utils/axios_utils';
export default {
- getSentryData({ endpoint }) {
- return axios.get(endpoint);
+ getSentryData({ endpoint, params }) {
+ return axios.get(endpoint, { params });
},
};
diff --git a/app/assets/javascripts/error_tracking/store/details/getters.js b/app/assets/javascripts/error_tracking/store/details/getters.js
index 7d13439d721..a36c84dc28c 100644
--- a/app/assets/javascripts/error_tracking/store/details/getters.js
+++ b/app/assets/javascripts/error_tracking/store/details/getters.js
@@ -1,3 +1,6 @@
-export const stacktrace = state => state.stacktraceData.stack_trace_entries.reverse();
+export const stacktrace = state =>
+ state.stacktraceData.stack_trace_entries
+ ? state.stacktraceData.stack_trace_entries.reverse()
+ : [];
export default () => {};
diff --git a/app/assets/javascripts/error_tracking/store/index.js b/app/assets/javascripts/error_tracking/store/index.js
index 941c752e96a..ad05eecef6c 100644
--- a/app/assets/javascripts/error_tracking/store/index.js
+++ b/app/assets/javascripts/error_tracking/store/index.js
@@ -4,7 +4,6 @@ import Vuex from 'vuex';
import * as listActions from './list/actions';
import listMutations from './list/mutations';
import listState from './list/state';
-import * as listGetters from './list/getters';
import * as detailsActions from './details/actions';
import detailsMutations from './details/mutations';
@@ -21,7 +20,6 @@ export const createStore = () =>
state: listState(),
actions: listActions,
mutations: listMutations,
- getters: listGetters,
},
details: {
namespaced: true,
diff --git a/app/assets/javascripts/error_tracking/store/list/actions.js b/app/assets/javascripts/error_tracking/store/list/actions.js
index 18c6e5e9695..c9e882c4ed2 100644
--- a/app/assets/javascripts/error_tracking/store/list/actions.js
+++ b/app/assets/javascripts/error_tracking/store/list/actions.js
@@ -6,17 +6,25 @@ import { __, sprintf } from '~/locale';
let eTagPoll;
-export function startPolling({ commit, dispatch }, endpoint) {
+export function startPolling({ state, commit, dispatch }) {
+ commit(types.SET_LOADING, true);
+
eTagPoll = new Poll({
resource: Service,
method: 'getSentryData',
- data: { endpoint },
+ data: {
+ endpoint: state.endpoint,
+ params: {
+ search_term: state.searchQuery,
+ sort: state.sortField,
+ },
+ },
successCallback: ({ data }) => {
if (!data) {
return;
}
+ commit(types.SET_PAGINATION, data.pagination);
commit(types.SET_ERRORS, data.errors);
- commit(types.SET_EXTERNAL_URL, data.external_url);
commit(types.SET_LOADING, false);
dispatch('stopPolling');
},
@@ -43,10 +51,43 @@ export const stopPolling = () => {
export function restartPolling({ commit }) {
commit(types.SET_ERRORS, []);
- commit(types.SET_EXTERNAL_URL, '');
commit(types.SET_LOADING, true);
if (eTagPoll) eTagPoll.restart();
}
+export function setIndexPath({ commit }, path) {
+ commit(types.SET_INDEX_PATH, path);
+}
+
+export function loadRecentSearches({ commit }) {
+ commit(types.LOAD_RECENT_SEARCHES);
+}
+
+export function addRecentSearch({ commit }, searchQuery) {
+ commit(types.ADD_RECENT_SEARCH, searchQuery);
+}
+
+export function clearRecentSearches({ commit }) {
+ commit(types.CLEAR_RECENT_SEARCHES);
+}
+
+export const searchByQuery = ({ commit, dispatch }, query) => {
+ const searchQuery = query.trim();
+ commit(types.SET_SEARCH_QUERY, searchQuery);
+ commit(types.ADD_RECENT_SEARCH, searchQuery);
+ dispatch('stopPolling');
+ dispatch('startPolling');
+};
+
+export const sortByField = ({ commit, dispatch }, field) => {
+ commit(types.SET_SORT_FIELD, field);
+ dispatch('stopPolling');
+ dispatch('startPolling');
+};
+
+export const setEndpoint = ({ commit }, endpoint) => {
+ commit(types.SET_ENDPOINT, endpoint);
+};
+
export default () => {};
diff --git a/app/assets/javascripts/error_tracking/store/list/getters.js b/app/assets/javascripts/error_tracking/store/list/getters.js
deleted file mode 100644
index 1a2ec62f79f..00000000000
--- a/app/assets/javascripts/error_tracking/store/list/getters.js
+++ /dev/null
@@ -1,4 +0,0 @@
-export const filterErrorsByTitle = state => errorQuery =>
- state.errors.filter(error => error.title.match(new RegExp(`${errorQuery}`, 'i')));
-
-export default () => {};
diff --git a/app/assets/javascripts/error_tracking/store/list/mutation_types.js b/app/assets/javascripts/error_tracking/store/list/mutation_types.js
index f9d77a6b08e..301984a1ee0 100644
--- a/app/assets/javascripts/error_tracking/store/list/mutation_types.js
+++ b/app/assets/javascripts/error_tracking/store/list/mutation_types.js
@@ -1,3 +1,10 @@
export const SET_ERRORS = 'SET_ERRORS';
-export const SET_EXTERNAL_URL = 'SET_EXTERNAL_URL';
+export const SET_INDEX_PATH = 'SET_INDEX_PATH';
export const SET_LOADING = 'SET_LOADING';
+export const ADD_RECENT_SEARCH = 'ADD_RECENT_SEARCH';
+export const CLEAR_RECENT_SEARCHES = 'CLEAR_RECENT_SEARCHES';
+export const LOAD_RECENT_SEARCHES = 'LOAD_RECENT_SEARCHES';
+export const SET_PAGINATION = 'SET_PAGINATION';
+export const SET_ENDPOINT = 'SET_ENDPOINT';
+export const SET_SORT_FIELD = 'SET_SORT_FIELD';
+export const SET_SEARCH_QUERY = 'SET_SEARCH_QUERY';
diff --git a/app/assets/javascripts/error_tracking/store/list/mutations.js b/app/assets/javascripts/error_tracking/store/list/mutations.js
index e4bd81db9c9..5648013bb89 100644
--- a/app/assets/javascripts/error_tracking/store/list/mutations.js
+++ b/app/assets/javascripts/error_tracking/store/list/mutations.js
@@ -1,14 +1,59 @@
import * as types from './mutation_types';
import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils';
+import AccessorUtils from '~/lib/utils/accessor';
export default {
[types.SET_ERRORS](state, data) {
state.errors = convertObjectPropsToCamelCase(data, { deep: true });
},
- [types.SET_EXTERNAL_URL](state, url) {
- state.externalUrl = url;
- },
[types.SET_LOADING](state, loading) {
state.loading = loading;
},
+ [types.SET_INDEX_PATH](state, path) {
+ state.indexPath = path;
+ },
+ [types.ADD_RECENT_SEARCH](state, searchTerm) {
+ if (searchTerm.length === 0) {
+ return;
+ }
+ // remove any existing item, then add it to the start of the list
+ const recentSearches = state.recentSearches.filter(s => s !== searchTerm);
+ recentSearches.unshift(searchTerm);
+ // only keep the last 5
+ state.recentSearches = recentSearches.slice(0, 5);
+
+ if (AccessorUtils.isLocalStorageAccessSafe()) {
+ localStorage.setItem(
+ `recent-searches${state.indexPath}`,
+ JSON.stringify(state.recentSearches),
+ );
+ }
+ },
+ [types.CLEAR_RECENT_SEARCHES](state) {
+ state.recentSearches = [];
+ if (AccessorUtils.isLocalStorageAccessSafe()) {
+ localStorage.removeItem(`recent-searches${state.indexPath}`);
+ }
+ },
+ [types.LOAD_RECENT_SEARCHES](state) {
+ const recentSearches = localStorage.getItem(`recent-searches${state.indexPath}`) || [];
+ try {
+ state.recentSearches = JSON.parse(recentSearches);
+ } catch (e) {
+ state.recentSearches = [];
+ throw e;
+ }
+ },
+ [types.SET_PAGINATION](state, pagination) {
+ state.pagination = pagination;
+ },
+ [types.SET_SORT_FIELD](state, field) {
+ state.sortField = field;
+ },
+ [types.SET_SEARCH_QUERY](state, query) {
+ state.searchQuery = query;
+ },
+ [types.SET_ENDPOINT](state, endpoint) {
+ state.endpoint = endpoint;
+ },
};
diff --git a/app/assets/javascripts/error_tracking/store/list/state.js b/app/assets/javascripts/error_tracking/store/list/state.js
index d371350ef0e..93dc1040fde 100644
--- a/app/assets/javascripts/error_tracking/store/list/state.js
+++ b/app/assets/javascripts/error_tracking/store/list/state.js
@@ -1,5 +1,10 @@
export default () => ({
errors: [],
- externalUrl: '',
loading: true,
+ endpoint: null,
+ sortField: 'last_seen',
+ searchQuery: null,
+ indexPath: '',
+ recentSearches: [],
+ pagination: {},
});
diff --git a/app/assets/javascripts/error_tracking/utils.js b/app/assets/javascripts/error_tracking/utils.js
index b832b1371b1..3c382ccd1aa 100644
--- a/app/assets/javascripts/error_tracking/utils.js
+++ b/app/assets/javascripts/error_tracking/utils.js
@@ -1,15 +1,4 @@
-/* eslint-disable @gitlab/i18n/no-non-i18n-strings */
-
-/**
- * Tracks snowplow event when user clicks View in Sentry btn
- * @param {String} externalUrl that will be send as a property for the event
- */
-export const trackViewInSentryOptions = url => ({
- category: 'Error Tracking',
- action: 'click_view_in_sentry',
- label: 'External Url',
- property: url,
-});
+/* eslint-disable @gitlab/i18n/no-non-i18n-strings, import/prefer-default-export */
/**
* Tracks snowplow event when User clicks on error link to Sentry
diff --git a/app/assets/javascripts/error_tracking_settings/components/error_tracking_form.vue b/app/assets/javascripts/error_tracking_settings/components/error_tracking_form.vue
index d86116aa315..9f77fe8cd59 100644
--- a/app/assets/javascripts/error_tracking_settings/components/error_tracking_form.vue
+++ b/app/assets/javascripts/error_tracking_settings/components/error_tracking_form.vue
@@ -32,12 +32,16 @@ export default {
placeholder="https://mysentryserver.com"
@input="updateApiHost"
/>
+ <p class="form-text text-muted">
+ {{
+ s__(
+ "ErrorTracking|If you self-host Sentry, enter the full URL of your Sentry instance. If you're using Sentry's hosted solution, enter https://sentry.io",
+ )
+ }}
+ </p>
<!-- eslint-enable @gitlab/vue-i18n/no-bare-attribute-strings -->
</div>
</div>
- <p class="form-text text-muted">
- {{ s__('ErrorTracking|Find your hostname in your Sentry account settings page') }}
- </p>
</div>
<div class="form-group" :class="{ 'gl-show-field-errors': connectError }">
<label class="label-bold" for="error-tracking-token">
diff --git a/app/assets/javascripts/filtered_search/.eslintrc.yml b/app/assets/javascripts/filtered_search/.eslintrc.yml
new file mode 100644
index 00000000000..9faca7152f6
--- /dev/null
+++ b/app/assets/javascripts/filtered_search/.eslintrc.yml
@@ -0,0 +1,3 @@
+rules:
+ # https://gitlab.com/gitlab-org/gitlab/issues/28716
+ import/no-cycle: off
diff --git a/app/assets/javascripts/filtered_search/filtered_search_manager.js b/app/assets/javascripts/filtered_search/filtered_search_manager.js
index 5c2d32f4e85..a4edc5fd52d 100644
--- a/app/assets/javascripts/filtered_search/filtered_search_manager.js
+++ b/app/assets/javascripts/filtered_search/filtered_search_manager.js
@@ -1,7 +1,7 @@
import _ from 'underscore';
+import recentSearchesStorageKeys from 'ee_else_ce/filtered_search/recent_searches_storage_keys';
import { getParameterByName, getUrlParamsArray } from '~/lib/utils/common_utils';
import IssuableFilteredSearchTokenKeys from '~/filtered_search/issuable_filtered_search_token_keys';
-import recentSearchesStorageKeys from 'ee_else_ce/filtered_search/recent_searches_storage_keys';
import { visitUrl } from '../lib/utils/url_utility';
import Flash from '../flash';
import FilteredSearchContainer from './container';
diff --git a/app/assets/javascripts/filtered_search/visual_token_value.js b/app/assets/javascripts/filtered_search/visual_token_value.js
index ea58dbd3fa9..1343ccd6468 100644
--- a/app/assets/javascripts/filtered_search/visual_token_value.js
+++ b/app/assets/javascripts/filtered_search/visual_token_value.js
@@ -1,4 +1,5 @@
import _ from 'underscore';
+import { USER_TOKEN_TYPES } from 'ee_else_ce/filtered_search/constants';
import FilteredSearchContainer from '~/filtered_search/container';
import FilteredSearchVisualTokens from '~/filtered_search/filtered_search_visual_tokens';
import AjaxCache from '~/lib/utils/ajax_cache';
@@ -6,7 +7,6 @@ import DropdownUtils from '~/filtered_search/dropdown_utils';
import Flash from '~/flash';
import UsersCache from '~/lib/utils/users_cache';
import { __ } from '~/locale';
-import { USER_TOKEN_TYPES } from 'ee_else_ce/filtered_search/constants';
export default class VisualTokenValue {
constructor(tokenValue, tokenType) {
diff --git a/app/assets/javascripts/frequent_items/components/app.vue b/app/assets/javascripts/frequent_items/components/app.vue
index 968e255e1fc..8cf939254c1 100644
--- a/app/assets/javascripts/frequent_items/components/app.vue
+++ b/app/assets/javascripts/frequent_items/components/app.vue
@@ -1,7 +1,7 @@
<script>
import { mapState, mapActions, mapGetters } from 'vuex';
-import AccessorUtilities from '~/lib/utils/accessor';
import { GlLoadingIcon } from '@gitlab/ui';
+import AccessorUtilities from '~/lib/utils/accessor';
import eventHub from '../event_hub';
import store from '../store/';
import { FREQUENT_ITEMS, STORAGE_KEY } from '../constants';
diff --git a/app/assets/javascripts/frequent_items/store/mutations.js b/app/assets/javascripts/frequent_items/store/mutations.js
index 92ac3a2c94d..78ccef7f253 100644
--- a/app/assets/javascripts/frequent_items/store/mutations.js
+++ b/app/assets/javascripts/frequent_items/store/mutations.js
@@ -48,7 +48,7 @@ export default {
});
},
[types.RECEIVE_SEARCHED_ITEMS_SUCCESS](state, results) {
- const rawItems = results.data;
+ const rawItems = results.data ? results.data : results; // Api.groups returns array, Api.projects returns object
Object.assign(state, {
items: rawItems.map(rawItem => ({
id: rawItem.id,
diff --git a/app/assets/javascripts/gfm_auto_complete.js b/app/assets/javascripts/gfm_auto_complete.js
index db3ad0bb4c9..e25c9d90f60 100644
--- a/app/assets/javascripts/gfm_auto_complete.js
+++ b/app/assets/javascripts/gfm_auto_complete.js
@@ -3,11 +3,44 @@ import 'at.js';
import _ from 'underscore';
import glRegexp from './lib/utils/regexp';
import AjaxCache from './lib/utils/ajax_cache';
+import { spriteIcon } from './lib/utils/common_utils';
function sanitize(str) {
return str.replace(/<(?:.|\n)*?>/gm, '');
}
+export function membersBeforeSave(members) {
+ return _.map(members, member => {
+ const GROUP_TYPE = 'Group';
+
+ let title = '';
+ if (member.username == null) {
+ return member;
+ }
+ title = member.name;
+ if (member.count && !member.mentionsDisabled) {
+ title += ` (${member.count})`;
+ }
+
+ const autoCompleteAvatar = member.avatar_url || member.username.charAt(0).toUpperCase();
+
+ const rectAvatarClass = member.type === GROUP_TYPE ? 'rect-avatar' : '';
+ const imgAvatar = `<img src="${member.avatar_url}" alt="${member.username}" class="avatar ${rectAvatarClass} avatar-inline center s26"/>`;
+ const txtAvatar = `<div class="avatar ${rectAvatarClass} center avatar-inline s26">${autoCompleteAvatar}</div>`;
+ const avatarIcon = member.mentionsDisabled
+ ? spriteIcon('notifications-off', 's16 vertical-align-middle prepend-left-5')
+ : '';
+
+ return {
+ username: member.username,
+ avatarTag: autoCompleteAvatar.length === 1 ? txtAvatar : imgAvatar,
+ title: sanitize(title),
+ search: sanitize(`${member.username} ${member.name}`),
+ icon: avatarIcon,
+ };
+ });
+}
+
export const defaultAutocompleteConfig = {
emojis: true,
members: true,
@@ -167,12 +200,13 @@ class GfmAutoComplete {
alias: 'users',
displayTpl(value) {
let tmpl = GfmAutoComplete.Loading.template;
- const { avatarTag, username, title } = value;
+ const { avatarTag, username, title, icon } = value;
if (username != null) {
tmpl = GfmAutoComplete.Members.templateFunction({
avatarTag,
username,
title,
+ icon,
});
}
return tmpl;
@@ -185,33 +219,7 @@ class GfmAutoComplete {
data: GfmAutoComplete.defaultLoadingData,
callbacks: {
...this.getDefaultCallbacks(),
- beforeSave(members) {
- return $.map(members, m => {
- let title = '';
- if (m.username == null) {
- return m;
- }
- title = m.name;
- if (m.count) {
- title += ` (${m.count})`;
- }
-
- const GROUP_TYPE = 'Group';
-
- const autoCompleteAvatar = m.avatar_url || m.username.charAt(0).toUpperCase();
-
- const rectAvatarClass = m.type === GROUP_TYPE ? 'rect-avatar' : '';
- const imgAvatar = `<img src="${m.avatar_url}" alt="${m.username}" class="avatar ${rectAvatarClass} avatar-inline center s26"/>`;
- const txtAvatar = `<div class="avatar ${rectAvatarClass} center avatar-inline s26">${autoCompleteAvatar}</div>`;
-
- return {
- username: m.username,
- avatarTag: autoCompleteAvatar.length === 1 ? txtAvatar : imgAvatar,
- title: sanitize(title),
- search: sanitize(`${m.username} ${m.name}`),
- };
- });
- },
+ beforeSave: membersBeforeSave,
},
});
}
@@ -624,8 +632,8 @@ GfmAutoComplete.Emoji = {
};
// Team Members
GfmAutoComplete.Members = {
- templateFunction({ avatarTag, username, title }) {
- return `<li>${avatarTag} ${username} <small>${_.escape(title)}</small></li>`;
+ templateFunction({ avatarTag, username, title, icon }) {
+ return `<li>${avatarTag} ${username} <small>${_.escape(title)}</small> ${icon}</li>`;
},
};
GfmAutoComplete.Labels = {
diff --git a/app/assets/javascripts/gl_dropdown.js b/app/assets/javascripts/gl_dropdown.js
index 045f77af7ea..65d05887453 100644
--- a/app/assets/javascripts/gl_dropdown.js
+++ b/app/assets/javascripts/gl_dropdown.js
@@ -1,4 +1,4 @@
-/* eslint-disable func-names, no-underscore-dangle, no-var, one-var, vars-on-top, no-shadow, no-cond-assign, no-return-assign, no-else-return, camelcase, no-lonely-if, guard-for-in, no-restricted-syntax, consistent-return, no-param-reassign, no-loop-func */
+/* eslint-disable func-names, no-underscore-dangle, one-var, no-cond-assign, no-return-assign, no-else-return, camelcase, no-lonely-if, guard-for-in, no-restricted-syntax, consistent-return, no-param-reassign, no-loop-func */
import $ from 'jquery';
import _ from 'underscore';
@@ -8,984 +8,887 @@ import { visitUrl } from './lib/utils/url_utility';
import { isObject } from './lib/utils/type_utility';
import renderItem from './gl_dropdown/render';
-var GitLabDropdown, GitLabDropdownFilter, GitLabDropdownRemote, GitLabDropdownInput;
-
-GitLabDropdownInput = (function() {
- function GitLabDropdownInput(input, options) {
- var $inputContainer, $clearButton;
- var _this = this;
- this.input = input;
- this.options = options;
- this.fieldName = this.options.fieldName || 'field-name';
- $inputContainer = this.input.parent();
- $clearButton = $inputContainer.find('.js-dropdown-input-clear');
- $clearButton.on(
- 'click',
- (function(_this) {
- // Clear click
- return function(e) {
- e.preventDefault();
- e.stopPropagation();
- return _this.input
- .val('')
- .trigger('input')
- .focus();
- };
- })(this),
- );
+const BLUR_KEYCODES = [27, 40];
- this.input
- .on('keydown', e => {
- var keyCode = e.which;
- if (keyCode === 13 && !options.elIsInput) {
- e.preventDefault();
- }
- })
- .on('input', e => {
- var val = e.currentTarget.value || _this.options.inputFieldName;
- val = val
- .split(' ')
- .join('-') // replaces space with dash
- .replace(/[^a-zA-Z0-9 -]/g, '')
- .toLowerCase() // replace non alphanumeric
- .replace(/(-)\1+/g, '-'); // replace repeated dashes
- _this.cb(_this.options.fieldName, val, {}, true);
- _this.input
- .closest('.dropdown')
- .find('.dropdown-toggle-text')
- .text(val);
- });
- }
+const HAS_VALUE_CLASS = 'has-value';
- GitLabDropdownInput.prototype.onInput = function(cb) {
- this.cb = cb;
- };
-
- return GitLabDropdownInput;
-})();
-
-GitLabDropdownFilter = (function() {
- var BLUR_KEYCODES, HAS_VALUE_CLASS;
-
- BLUR_KEYCODES = [27, 40];
-
- HAS_VALUE_CLASS = 'has-value';
-
- function GitLabDropdownFilter(input, options) {
- var $clearButton, $inputContainer, ref, timeout;
- this.input = input;
- this.options = options;
- this.filterInputBlur = (ref = this.options.filterInputBlur) != null ? ref : true;
- $inputContainer = this.input.parent();
- $clearButton = $inputContainer.find('.js-dropdown-input-clear');
- $clearButton.on(
- 'click',
- (function(_this) {
- // Clear click
- return function(e) {
- e.preventDefault();
- e.stopPropagation();
- return _this.input
- .val('')
- .trigger('input')
- .focus();
- };
- })(this),
- );
- // Key events
- timeout = '';
- this.input
- .on('keydown', e => {
- var keyCode = e.which;
- if (keyCode === 13 && !options.elIsInput) {
- e.preventDefault();
- }
- })
- .on('input', () => {
- if (this.input.val() !== '' && !$inputContainer.hasClass(HAS_VALUE_CLASS)) {
- $inputContainer.addClass(HAS_VALUE_CLASS);
- } else if (this.input.val() === '' && $inputContainer.hasClass(HAS_VALUE_CLASS)) {
- $inputContainer.removeClass(HAS_VALUE_CLASS);
- }
- // Only filter asynchronously only if option remote is set
- if (this.options.remote) {
- clearTimeout(timeout);
- return (timeout = setTimeout(() => {
- $inputContainer.parent().addClass('is-loading');
-
- return this.options.query(this.input.val(), data => {
- $inputContainer.parent().removeClass('is-loading');
- return this.options.callback(data);
- });
- }, 250));
- } else {
- return this.filter(this.input.val());
- }
- });
- }
+const LOADING_CLASS = 'is-loading';
- GitLabDropdownFilter.prototype.shouldBlur = function(keyCode) {
- return BLUR_KEYCODES.indexOf(keyCode) !== -1;
- };
+const PAGE_TWO_CLASS = 'is-page-two';
- GitLabDropdownFilter.prototype.filter = function(search_text) {
- var data, elements, group, key, results, tmp;
- if (this.options.onFilter) {
- this.options.onFilter(search_text);
- }
- data = this.options.data();
- if (data != null && !this.options.filterByText) {
- results = data;
- if (search_text !== '') {
- // When data is an array of objects therefore [object Array] e.g.
- // [
- // { prop: 'foo' },
- // { prop: 'baz' }
- // ]
- if (_.isArray(data)) {
- results = fuzzaldrinPlus.filter(data, search_text, {
- key: this.options.keys,
+const ACTIVE_CLASS = 'is-active';
+
+const INDETERMINATE_CLASS = 'is-indeterminate';
+
+let currentIndex = -1;
+
+const NON_SELECTABLE_CLASSES = '.divider, .separator, .dropdown-header, .dropdown-menu-empty-item';
+
+const SELECTABLE_CLASSES = `.dropdown-content li:not(${NON_SELECTABLE_CLASSES}, .option-hidden)`;
+
+const CURSOR_SELECT_SCROLL_PADDING = 5;
+
+const FILTER_INPUT = '.dropdown-input .dropdown-input-field:not(.dropdown-no-filter)';
+
+const NO_FILTER_INPUT = '.dropdown-input .dropdown-input-field.dropdown-no-filter';
+
+function GitLabDropdownInput(input, options) {
+ const _this = this;
+ this.input = input;
+ this.options = options;
+ this.fieldName = this.options.fieldName || 'field-name';
+ const $inputContainer = this.input.parent();
+ const $clearButton = $inputContainer.find('.js-dropdown-input-clear');
+ $clearButton.on('click', e => {
+ // Clear click
+ e.preventDefault();
+ e.stopPropagation();
+ return this.input
+ .val('')
+ .trigger('input')
+ .focus();
+ });
+
+ this.input
+ .on('keydown', e => {
+ const keyCode = e.which;
+ if (keyCode === 13 && !options.elIsInput) {
+ e.preventDefault();
+ }
+ })
+ .on('input', e => {
+ let val = e.currentTarget.value || _this.options.inputFieldName;
+ val = val
+ .split(' ')
+ .join('-') // replaces space with dash
+ .replace(/[^a-zA-Z0-9 -]/g, '')
+ .toLowerCase() // replace non alphanumeric
+ .replace(/(-)\1+/g, '-'); // replace repeated dashes
+ _this.cb(_this.options.fieldName, val, {}, true);
+ _this.input
+ .closest('.dropdown')
+ .find('.dropdown-toggle-text')
+ .text(val);
+ });
+}
+
+GitLabDropdownInput.prototype.onInput = function(cb) {
+ this.cb = cb;
+};
+
+function GitLabDropdownFilter(input, options) {
+ let ref, timeout;
+ this.input = input;
+ this.options = options;
+ this.filterInputBlur = (ref = this.options.filterInputBlur) != null ? ref : true;
+ const $inputContainer = this.input.parent();
+ const $clearButton = $inputContainer.find('.js-dropdown-input-clear');
+ $clearButton.on('click', e => {
+ // Clear click
+ e.preventDefault();
+ e.stopPropagation();
+ return this.input
+ .val('')
+ .trigger('input')
+ .focus();
+ });
+ // Key events
+ timeout = '';
+ this.input
+ .on('keydown', e => {
+ const keyCode = e.which;
+ if (keyCode === 13 && !options.elIsInput) {
+ e.preventDefault();
+ }
+ })
+ .on('input', () => {
+ if (this.input.val() !== '' && !$inputContainer.hasClass(HAS_VALUE_CLASS)) {
+ $inputContainer.addClass(HAS_VALUE_CLASS);
+ } else if (this.input.val() === '' && $inputContainer.hasClass(HAS_VALUE_CLASS)) {
+ $inputContainer.removeClass(HAS_VALUE_CLASS);
+ }
+ // Only filter asynchronously only if option remote is set
+ if (this.options.remote) {
+ clearTimeout(timeout);
+ return (timeout = setTimeout(() => {
+ $inputContainer.parent().addClass('is-loading');
+
+ return this.options.query(this.input.val(), data => {
+ $inputContainer.parent().removeClass('is-loading');
+ return this.options.callback(data);
});
- } else {
- // If data is grouped therefore an [object Object]. e.g.
- // {
- // groupName1: [
- // { prop: 'foo' },
- // { prop: 'baz' }
- // ],
- // groupName2: [
- // { prop: 'abc' },
- // { prop: 'def' }
- // ]
- // }
- if (isObject(data)) {
- results = {};
- for (key in data) {
- group = data[key];
- tmp = fuzzaldrinPlus.filter(group, search_text, {
- key: this.options.keys,
- });
- if (tmp.length) {
- results[key] = tmp.map(item => item);
- }
+ }, 250));
+ } else {
+ return this.filter(this.input.val());
+ }
+ });
+}
+
+GitLabDropdownFilter.prototype.shouldBlur = function(keyCode) {
+ return BLUR_KEYCODES.indexOf(keyCode) !== -1;
+};
+
+GitLabDropdownFilter.prototype.filter = function(search_text) {
+ let elements, group, key, results, tmp;
+ if (this.options.onFilter) {
+ this.options.onFilter(search_text);
+ }
+ const data = this.options.data();
+ if (data != null && !this.options.filterByText) {
+ results = data;
+ if (search_text !== '') {
+ // When data is an array of objects therefore [object Array] e.g.
+ // [
+ // { prop: 'foo' },
+ // { prop: 'baz' }
+ // ]
+ if (_.isArray(data)) {
+ results = fuzzaldrinPlus.filter(data, search_text, {
+ key: this.options.keys,
+ });
+ } else {
+ // If data is grouped therefore an [object Object]. e.g.
+ // {
+ // groupName1: [
+ // { prop: 'foo' },
+ // { prop: 'baz' }
+ // ],
+ // groupName2: [
+ // { prop: 'abc' },
+ // { prop: 'def' }
+ // ]
+ // }
+ if (isObject(data)) {
+ results = {};
+ for (key in data) {
+ group = data[key];
+ tmp = fuzzaldrinPlus.filter(group, search_text, {
+ key: this.options.keys,
+ });
+ if (tmp.length) {
+ results[key] = tmp.map(item => item);
}
}
}
}
- return this.options.callback(results);
- } else {
- elements = this.options.elements();
- if (search_text) {
- elements.each(function() {
- var $el, matches;
- $el = $(this);
- matches = fuzzaldrinPlus.match($el.text().trim(), search_text);
- if (!$el.is('.dropdown-header')) {
- if (matches.length) {
- return $el.show().removeClass('option-hidden');
- } else {
- return $el.hide().addClass('option-hidden');
- }
+ }
+ return this.options.callback(results);
+ } else {
+ elements = this.options.elements();
+ if (search_text) {
+ elements.each(function() {
+ const $el = $(this);
+ const matches = fuzzaldrinPlus.match($el.text().trim(), search_text);
+ if (!$el.is('.dropdown-header')) {
+ if (matches.length) {
+ return $el.show().removeClass('option-hidden');
+ } else {
+ return $el.hide().addClass('option-hidden');
}
- });
- } else {
- elements.show().removeClass('option-hidden');
- }
-
- elements
- .parent()
- .find('.dropdown-menu-empty-item')
- .toggleClass('hidden', elements.is(':visible'));
+ }
+ });
+ } else {
+ elements.show().removeClass('option-hidden');
}
- };
-
- return GitLabDropdownFilter;
-})();
-GitLabDropdownRemote = (function() {
- function GitLabDropdownRemote(dataEndpoint, options) {
- this.dataEndpoint = dataEndpoint;
- this.options = options;
+ elements
+ .parent()
+ .find('.dropdown-menu-empty-item')
+ .toggleClass('hidden', elements.is(':visible'));
}
+};
- GitLabDropdownRemote.prototype.execute = function() {
- if (typeof this.dataEndpoint === 'string') {
- return this.fetchData();
- } else if (typeof this.dataEndpoint === 'function') {
- if (this.options.beforeSend) {
- this.options.beforeSend();
- }
- return this.dataEndpoint(
- '',
- (function(_this) {
- // Fetch the data by calling the data funcfion
- return function(data) {
- if (_this.options.success) {
- _this.options.success(data);
- }
- if (_this.options.beforeSend) {
- return _this.options.beforeSend();
- }
- };
- })(this),
- );
- }
- };
+function GitLabDropdownRemote(dataEndpoint, options) {
+ this.dataEndpoint = dataEndpoint;
+ this.options = options;
+}
- GitLabDropdownRemote.prototype.fetchData = function() {
+GitLabDropdownRemote.prototype.execute = function() {
+ if (typeof this.dataEndpoint === 'string') {
+ return this.fetchData();
+ } else if (typeof this.dataEndpoint === 'function') {
if (this.options.beforeSend) {
this.options.beforeSend();
}
-
- // Fetch the data through ajax if the data is a string
- return axios.get(this.dataEndpoint).then(({ data }) => {
+ return this.dataEndpoint('', data => {
+ // Fetch the data by calling the data function
if (this.options.success) {
- return this.options.success(data);
+ this.options.success(data);
+ }
+ if (this.options.beforeSend) {
+ return this.options.beforeSend();
}
});
- };
-
- return GitLabDropdownRemote;
-})();
-
-GitLabDropdown = (function() {
- var ACTIVE_CLASS,
- FILTER_INPUT,
- NO_FILTER_INPUT,
- INDETERMINATE_CLASS,
- LOADING_CLASS,
- PAGE_TWO_CLASS,
- NON_SELECTABLE_CLASSES,
- SELECTABLE_CLASSES,
- CURSOR_SELECT_SCROLL_PADDING,
- currentIndex;
-
- LOADING_CLASS = 'is-loading';
-
- PAGE_TWO_CLASS = 'is-page-two';
-
- ACTIVE_CLASS = 'is-active';
-
- INDETERMINATE_CLASS = 'is-indeterminate';
+ }
+};
- currentIndex = -1;
+GitLabDropdownRemote.prototype.fetchData = function() {
+ if (this.options.beforeSend) {
+ this.options.beforeSend();
+ }
- NON_SELECTABLE_CLASSES = '.divider, .separator, .dropdown-header, .dropdown-menu-empty-item';
-
- SELECTABLE_CLASSES = `.dropdown-content li:not(${NON_SELECTABLE_CLASSES}, .option-hidden)`;
-
- CURSOR_SELECT_SCROLL_PADDING = 5;
-
- FILTER_INPUT = '.dropdown-input .dropdown-input-field:not(.dropdown-no-filter)';
-
- NO_FILTER_INPUT = '.dropdown-input .dropdown-input-field.dropdown-no-filter';
-
- function GitLabDropdown(el1, options) {
- var searchFields, selector, self;
- this.el = el1;
- this.options = options;
- this.updateLabel = this.updateLabel.bind(this);
- this.hidden = this.hidden.bind(this);
- this.opened = this.opened.bind(this);
- this.shouldPropagate = this.shouldPropagate.bind(this);
- self = this;
- selector = $(this.el).data('target');
- this.dropdown = selector != null ? $(selector) : $(this.el).parent();
- // Set Defaults
- this.filterInput = this.options.filterInput || this.getElement(FILTER_INPUT);
- this.noFilterInput = this.options.noFilterInput || this.getElement(NO_FILTER_INPUT);
- this.highlight = Boolean(this.options.highlight);
- this.icon = Boolean(this.options.icon);
- this.filterInputBlur =
- this.options.filterInputBlur != null ? this.options.filterInputBlur : true;
- // If no input is passed create a default one
- self = this;
- // If selector was passed
- if (_.isString(this.filterInput)) {
- this.filterInput = this.getElement(this.filterInput);
+ // Fetch the data through ajax if the data is a string
+ return axios.get(this.dataEndpoint).then(({ data }) => {
+ if (this.options.success) {
+ return this.options.success(data);
}
- searchFields = this.options.search ? this.options.search.fields : [];
- if (this.options.data) {
- // If we provided data
- // data could be an array of objects or a group of arrays
- if (_.isObject(this.options.data) && !_.isFunction(this.options.data)) {
- this.fullData = this.options.data;
- currentIndex = -1;
- this.parseData(this.options.data);
- this.focusTextInput();
- } else {
- this.remote = new GitLabDropdownRemote(this.options.data, {
- dataType: this.options.dataType,
- beforeSend: this.toggleLoading.bind(this),
- success: (function(_this) {
- return function(data) {
- _this.fullData = data;
- _this.parseData(_this.fullData);
- _this.focusTextInput();
-
- // Update dropdown position since remote data may have changed dropdown size
- _this.dropdown.find('.dropdown-menu-toggle').dropdown('update');
-
- if (
- _this.options.filterable &&
- _this.filter &&
- _this.filter.input &&
- _this.filter.input.val() &&
- _this.filter.input.val().trim() !== ''
- ) {
- return _this.filter.input.trigger('input');
- }
- };
- // Remote data
- })(this),
- instance: this,
- });
- }
- }
- if (this.noFilterInput.length) {
- this.plainInput = new GitLabDropdownInput(this.noFilterInput, this.options);
- this.plainInput.onInput(this.addInput.bind(this));
- }
- // Init filterable
- if (this.options.filterable) {
- this.filter = new GitLabDropdownFilter(this.filterInput, {
- elIsInput: $(this.el).is('input'),
- filterInputBlur: this.filterInputBlur,
- filterByText: this.options.filterByText,
- onFilter: this.options.onFilter,
- remote: this.options.filterRemote,
- query: this.options.data,
- keys: searchFields,
+ });
+};
+
+function GitLabDropdown(el1, options) {
+ let selector, self;
+ this.el = el1;
+ this.options = options;
+ this.updateLabel = this.updateLabel.bind(this);
+ this.hidden = this.hidden.bind(this);
+ this.opened = this.opened.bind(this);
+ this.shouldPropagate = this.shouldPropagate.bind(this);
+ self = this;
+ selector = $(this.el).data('target');
+ this.dropdown = selector != null ? $(selector) : $(this.el).parent();
+ // Set Defaults
+ this.filterInput = this.options.filterInput || this.getElement(FILTER_INPUT);
+ this.noFilterInput = this.options.noFilterInput || this.getElement(NO_FILTER_INPUT);
+ this.highlight = Boolean(this.options.highlight);
+ this.icon = Boolean(this.options.icon);
+ this.filterInputBlur = this.options.filterInputBlur != null ? this.options.filterInputBlur : true;
+ // If no input is passed create a default one
+ self = this;
+ // If selector was passed
+ if (_.isString(this.filterInput)) {
+ this.filterInput = this.getElement(this.filterInput);
+ }
+ const searchFields = this.options.search ? this.options.search.fields : [];
+ if (this.options.data) {
+ // If we provided data
+ // data could be an array of objects or a group of arrays
+ if (_.isObject(this.options.data) && !_.isFunction(this.options.data)) {
+ this.fullData = this.options.data;
+ currentIndex = -1;
+ this.parseData(this.options.data);
+ this.focusTextInput();
+ } else {
+ this.remote = new GitLabDropdownRemote(this.options.data, {
+ dataType: this.options.dataType,
+ beforeSend: this.toggleLoading.bind(this),
+ success: data => {
+ this.fullData = data;
+ this.parseData(this.fullData);
+ this.focusTextInput();
+
+ // Update dropdown position since remote data may have changed dropdown size
+ this.dropdown.find('.dropdown-menu-toggle').dropdown('update');
+
+ if (
+ this.options.filterable &&
+ this.filter &&
+ this.filter.input &&
+ this.filter.input.val() &&
+ this.filter.input.val().trim() !== ''
+ ) {
+ return this.filter.input.trigger('input');
+ }
+ },
instance: this,
- elements: (function(_this) {
- return function() {
- selector = `.dropdown-content li:not(${NON_SELECTABLE_CLASSES})`;
- if (_this.dropdown.find('.dropdown-toggle-page').length) {
- selector = `.dropdown-page-one ${selector}`;
- }
- return $(selector, this.instance.dropdown);
- };
- })(this),
- data: (function(_this) {
- return function() {
- return _this.fullData;
- };
- })(this),
- callback: (function(_this) {
- return function(data) {
- _this.parseData(data);
- if (_this.filterInput.val() !== '') {
- selector = SELECTABLE_CLASSES;
- if (_this.dropdown.find('.dropdown-toggle-page').length) {
- selector = `.dropdown-page-one ${selector}`;
- }
- if ($(_this.el).is('input')) {
- currentIndex = -1;
- } else {
- $(selector, _this.dropdown)
- .first()
- .find('a')
- .addClass('is-focused');
- currentIndex = 0;
- }
- }
- };
- })(this),
});
}
- // Event listeners
- this.dropdown.on('shown.bs.dropdown', this.opened);
- this.dropdown.on('hidden.bs.dropdown', this.hidden);
- $(this.el).on('update.label', this.updateLabel);
- this.dropdown.on('click', '.dropdown-menu, .dropdown-menu-close', this.shouldPropagate);
- this.dropdown.on(
- 'keyup',
- (function(_this) {
- return function(e) {
- // Escape key
- if (e.which === 27) {
- return $('.dropdown-menu-close', _this.dropdown).trigger('click');
+ }
+ if (this.noFilterInput.length) {
+ this.plainInput = new GitLabDropdownInput(this.noFilterInput, this.options);
+ this.plainInput.onInput(this.addInput.bind(this));
+ }
+ // Init filterable
+ if (this.options.filterable) {
+ this.filter = new GitLabDropdownFilter(this.filterInput, {
+ elIsInput: $(this.el).is('input'),
+ filterInputBlur: this.filterInputBlur,
+ filterByText: this.options.filterByText,
+ onFilter: this.options.onFilter,
+ remote: this.options.filterRemote,
+ query: this.options.data,
+ keys: searchFields,
+ instance: this,
+ elements: () => {
+ selector = `.dropdown-content li:not(${NON_SELECTABLE_CLASSES})`;
+ if (this.dropdown.find('.dropdown-toggle-page').length) {
+ selector = `.dropdown-page-one ${selector}`;
+ }
+ return $(selector, this.dropdown);
+ },
+ data: () => this.fullData,
+ callback: data => {
+ this.parseData(data);
+ if (this.filterInput.val() !== '') {
+ selector = SELECTABLE_CLASSES;
+ if (this.dropdown.find('.dropdown-toggle-page').length) {
+ selector = `.dropdown-page-one ${selector}`;
}
- };
- })(this),
- );
- this.dropdown.on(
- 'blur',
- 'a',
- (function(_this) {
- return function(e) {
- var $dropdownMenu, $relatedTarget;
- if (e.relatedTarget != null) {
- $relatedTarget = $(e.relatedTarget);
- $dropdownMenu = $relatedTarget.closest('.dropdown-menu');
- if ($dropdownMenu.length === 0) {
- return _this.dropdown.removeClass('show');
- }
+ if ($(this.el).is('input')) {
+ currentIndex = -1;
+ } else {
+ $(selector, this.dropdown)
+ .first()
+ .find('a')
+ .addClass('is-focused');
+ currentIndex = 0;
}
- };
- })(this),
- );
- if (this.dropdown.find('.dropdown-toggle-page').length) {
- this.dropdown.find('.dropdown-toggle-page, .dropdown-menu-back').on(
- 'click',
- (function(_this) {
- return function(e) {
- e.preventDefault();
- e.stopPropagation();
- return _this.togglePage();
- };
- })(this),
- );
+ }
+ },
+ });
+ }
+ // Event listeners
+ this.dropdown.on('shown.bs.dropdown', this.opened);
+ this.dropdown.on('hidden.bs.dropdown', this.hidden);
+ $(this.el).on('update.label', this.updateLabel);
+ this.dropdown.on('click', '.dropdown-menu, .dropdown-menu-close', this.shouldPropagate);
+ this.dropdown.on('keyup', e => {
+ // Escape key
+ if (e.which === 27) {
+ return $('.dropdown-menu-close', this.dropdown).trigger('click');
}
- if (this.options.selectable) {
- selector = '.dropdown-content a';
- if (this.dropdown.find('.dropdown-toggle-page').length) {
- selector = '.dropdown-page-one .dropdown-content a';
+ });
+ this.dropdown.on('blur', 'a', e => {
+ let $dropdownMenu, $relatedTarget;
+ if (e.relatedTarget != null) {
+ $relatedTarget = $(e.relatedTarget);
+ $dropdownMenu = $relatedTarget.closest('.dropdown-menu');
+ if ($dropdownMenu.length === 0) {
+ return this.dropdown.removeClass('show');
+ }
+ }
+ });
+ if (this.dropdown.find('.dropdown-toggle-page').length) {
+ this.dropdown.find('.dropdown-toggle-page, .dropdown-menu-back').on('click', e => {
+ e.preventDefault();
+ e.stopPropagation();
+ return this.togglePage();
+ });
+ }
+ if (this.options.selectable) {
+ selector = '.dropdown-content a';
+ if (this.dropdown.find('.dropdown-toggle-page').length) {
+ selector = '.dropdown-page-one .dropdown-content a';
+ }
+ this.dropdown.on('click', selector, e => {
+ const $el = $(e.currentTarget);
+ const selected = self.rowClicked($el);
+ const selectedObj = selected ? selected[0] : null;
+ const isMarking = selected ? selected[1] : null;
+ if (this.options.clicked) {
+ this.options.clicked.call(this, {
+ selectedObj,
+ $el,
+ e,
+ isMarking,
+ });
}
- this.dropdown.on('click', selector, e => {
- var $el, selected, selectedObj, isMarking;
- $el = $(e.currentTarget);
- selected = self.rowClicked($el);
- selectedObj = selected ? selected[0] : null;
- isMarking = selected ? selected[1] : null;
- if (this.options.clicked) {
- this.options.clicked.call(this, {
- selectedObj,
- $el,
- e,
- isMarking,
- });
- }
- // Update label right after all modifications in dropdown has been done
- if (this.options.toggleLabel) {
- this.updateLabel(selectedObj, $el, this);
- }
+ // Update label right after all modifications in dropdown has been done
+ if (this.options.toggleLabel) {
+ this.updateLabel(selectedObj, $el, this);
+ }
- $el.trigger('blur');
- });
- }
+ $el.trigger('blur');
+ });
}
+}
- // Finds an element inside wrapper element
- GitLabDropdown.prototype.getElement = function(selector) {
- return this.dropdown.find(selector);
- };
+// Finds an element inside wrapper element
+GitLabDropdown.prototype.getElement = function(selector) {
+ return this.dropdown.find(selector);
+};
- GitLabDropdown.prototype.toggleLoading = function() {
- return $('.dropdown-menu', this.dropdown).toggleClass(LOADING_CLASS);
- };
+GitLabDropdown.prototype.toggleLoading = function() {
+ return $('.dropdown-menu', this.dropdown).toggleClass(LOADING_CLASS);
+};
- GitLabDropdown.prototype.togglePage = function() {
- var menu;
- menu = $('.dropdown-menu', this.dropdown);
- if (menu.hasClass(PAGE_TWO_CLASS)) {
- if (this.remote) {
- this.remote.execute();
- }
+GitLabDropdown.prototype.togglePage = function() {
+ const menu = $('.dropdown-menu', this.dropdown);
+ if (menu.hasClass(PAGE_TWO_CLASS)) {
+ if (this.remote) {
+ this.remote.execute();
}
- menu.toggleClass(PAGE_TWO_CLASS);
- // Focus first visible input on active page
- return this.dropdown.find('[class^="dropdown-page-"]:visible :text:visible:first').focus();
- };
-
- GitLabDropdown.prototype.parseData = function(data) {
- var full_html, groupData, html, name;
- this.renderedData = data;
- if (this.options.filterable && data.length === 0) {
- // render no matching results
- html = [this.noResults()];
- } else {
- // Handle array groups
- if (isObject(data)) {
- html = [];
- for (name in data) {
- groupData = data[name];
- html.push(
- this.renderItem(
- {
- content: name,
- type: 'header',
- },
- name,
- ),
- );
- this.renderData(groupData, name).map(item => html.push(item));
- }
- } else {
- // Render each row
- html = this.renderData(data);
+ }
+ menu.toggleClass(PAGE_TWO_CLASS);
+ // Focus first visible input on active page
+ return this.dropdown.find('[class^="dropdown-page-"]:visible :text:visible:first').focus();
+};
+
+GitLabDropdown.prototype.parseData = function(data) {
+ let groupData, html, name;
+ this.renderedData = data;
+ if (this.options.filterable && data.length === 0) {
+ // render no matching results
+ html = [this.noResults()];
+ } else {
+ // Handle array groups
+ if (isObject(data)) {
+ html = [];
+ for (name in data) {
+ groupData = data[name];
+ html.push(
+ this.renderItem(
+ {
+ content: name,
+ type: 'header',
+ },
+ name,
+ ),
+ );
+ this.renderData(groupData, name).map(item => html.push(item));
}
+ } else {
+ // Render each row
+ html = this.renderData(data);
}
- // Render the full menu
- full_html = this.renderMenu(html);
- return this.appendMenu(full_html);
- };
-
- GitLabDropdown.prototype.renderData = function(data, group) {
- return data.map((obj, index) => this.renderItem(obj, group || false, index));
- };
-
- GitLabDropdown.prototype.shouldPropagate = function(e) {
- var $target;
- if (this.options.multiSelect || this.options.shouldPropagate === false) {
- $target = $(e.target);
- if (
- $target &&
- !$target.hasClass('dropdown-menu-close') &&
- !$target.hasClass('dropdown-menu-close-icon') &&
- !$target.data('isLink')
- ) {
- e.stopPropagation();
-
- // This prevents automatic scrolling to the top
- if ($target.closest('a').length) {
- return false;
- }
- }
+ }
+ // Render the full menu
+ const full_html = this.renderMenu(html);
+ return this.appendMenu(full_html);
+};
+
+GitLabDropdown.prototype.renderData = function(data, group) {
+ return data.map((obj, index) => this.renderItem(obj, group || false, index));
+};
- return true;
+GitLabDropdown.prototype.shouldPropagate = function(e) {
+ let $target;
+ if (this.options.multiSelect || this.options.shouldPropagate === false) {
+ $target = $(e.target);
+ if (
+ $target &&
+ !$target.hasClass('dropdown-menu-close') &&
+ !$target.hasClass('dropdown-menu-close-icon') &&
+ !$target.data('isLink')
+ ) {
+ e.stopPropagation();
+
+ // This prevents automatic scrolling to the top
+ if ($target.closest('a').length) {
+ return false;
+ }
}
- };
-
- GitLabDropdown.prototype.filteredFullData = function() {
- return this.fullData.filter(
- r =>
- typeof r === 'object' &&
- !Object.prototype.hasOwnProperty.call(r, 'beforeDivider') &&
- !Object.prototype.hasOwnProperty.call(r, 'header'),
- );
- };
- GitLabDropdown.prototype.opened = function(e) {
- var contentHtml;
- this.resetRows();
- this.addArrowKeyEvent();
+ return true;
+ }
+};
- const dropdownToggle = this.dropdown.find('.dropdown-menu-toggle');
- const hasFilterBulkUpdate = dropdownToggle.hasClass('js-filter-bulk-update');
- const shouldRefreshOnOpen = dropdownToggle.hasClass('js-gl-dropdown-refresh-on-open');
- const hasMultiSelect = dropdownToggle.hasClass('js-multiselect');
+GitLabDropdown.prototype.filteredFullData = function() {
+ return this.fullData.filter(
+ r =>
+ typeof r === 'object' &&
+ !Object.prototype.hasOwnProperty.call(r, 'beforeDivider') &&
+ !Object.prototype.hasOwnProperty.call(r, 'header'),
+ );
+};
- // Makes indeterminate items effective
- if (this.fullData && (shouldRefreshOnOpen || hasFilterBulkUpdate)) {
- this.parseData(this.fullData);
- }
+GitLabDropdown.prototype.opened = function(e) {
+ this.resetRows();
+ this.addArrowKeyEvent();
- // Process the data to make sure rendered data
- // matches the correct layout
- const inputValue = this.filterInput.val();
- if (this.fullData && hasMultiSelect && this.options.processData && inputValue.length === 0) {
- this.options.processData.call(
- this.options,
- inputValue,
- this.filteredFullData(),
- this.parseData.bind(this),
- );
- }
+ const dropdownToggle = this.dropdown.find('.dropdown-menu-toggle');
+ const hasFilterBulkUpdate = dropdownToggle.hasClass('js-filter-bulk-update');
+ const shouldRefreshOnOpen = dropdownToggle.hasClass('js-gl-dropdown-refresh-on-open');
+ const hasMultiSelect = dropdownToggle.hasClass('js-multiselect');
- contentHtml = $('.dropdown-content', this.dropdown).html();
- if (this.remote && contentHtml === '') {
- this.remote.execute();
+ // Makes indeterminate items effective
+ if (this.fullData && (shouldRefreshOnOpen || hasFilterBulkUpdate)) {
+ this.parseData(this.fullData);
+ }
+
+ // Process the data to make sure rendered data
+ // matches the correct layout
+ const inputValue = this.filterInput.val();
+ if (this.fullData && hasMultiSelect && this.options.processData && inputValue.length === 0) {
+ this.options.processData.call(
+ this.options,
+ inputValue,
+ this.filteredFullData(),
+ this.parseData.bind(this),
+ );
+ }
+
+ const contentHtml = $('.dropdown-content', this.dropdown).html();
+ if (this.remote && contentHtml === '') {
+ this.remote.execute();
+ } else {
+ this.focusTextInput();
+ }
+
+ if (this.options.showMenuAbove) {
+ this.positionMenuAbove();
+ }
+
+ if (this.options.opened) {
+ if (this.options.preserveContext) {
+ this.options.opened(e);
} else {
- this.focusTextInput();
+ this.options.opened.call(this, e);
}
+ }
- if (this.options.showMenuAbove) {
- this.positionMenuAbove();
- }
+ return this.dropdown.trigger('shown.gl.dropdown');
+};
- if (this.options.opened) {
- if (this.options.preserveContext) {
- this.options.opened(e);
- } else {
- this.options.opened.call(this, e);
- }
- }
+GitLabDropdown.prototype.positionMenuAbove = function() {
+ const $menu = this.dropdown.find('.dropdown-menu');
- return this.dropdown.trigger('shown.gl.dropdown');
- };
+ $menu.addClass('dropdown-open-top');
+ $menu.css('top', 'initial');
+ $menu.css('bottom', '100%');
+};
- GitLabDropdown.prototype.positionMenuAbove = function() {
- var $menu = this.dropdown.find('.dropdown-menu');
+GitLabDropdown.prototype.hidden = function(e) {
+ this.resetRows();
+ this.removeArrowKeyEvent();
+ const $input = this.dropdown.find('.dropdown-input-field');
+ if (this.options.filterable) {
+ $input.blur();
+ }
+ if (this.dropdown.find('.dropdown-toggle-page').length) {
+ $('.dropdown-menu', this.dropdown).removeClass(PAGE_TWO_CLASS);
+ }
+ if (this.options.hidden) {
+ this.options.hidden.call(this, e);
+ }
+ return this.dropdown.trigger('hidden.gl.dropdown');
+};
- $menu.addClass('dropdown-open-top');
- $menu.css('top', 'initial');
- $menu.css('bottom', '100%');
- };
+// Render the full menu
+GitLabDropdown.prototype.renderMenu = function(html) {
+ if (this.options.renderMenu) {
+ return this.options.renderMenu(html);
+ } else {
+ return $('<ul>').append(html);
+ }
+};
- GitLabDropdown.prototype.hidden = function(e) {
- var $input;
- this.resetRows();
- this.removeArrowKeyEvent();
- $input = this.dropdown.find('.dropdown-input-field');
- if (this.options.filterable) {
- $input.blur();
- }
- if (this.dropdown.find('.dropdown-toggle-page').length) {
- $('.dropdown-menu', this.dropdown).removeClass(PAGE_TWO_CLASS);
- }
- if (this.options.hidden) {
- this.options.hidden.call(this, e);
- }
- return this.dropdown.trigger('hidden.gl.dropdown');
- };
+// Append the menu into the dropdown
+GitLabDropdown.prototype.appendMenu = function(html) {
+ return this.clearMenu().append(html);
+};
- // Render the full menu
- GitLabDropdown.prototype.renderMenu = function(html) {
- if (this.options.renderMenu) {
- return this.options.renderMenu(html);
+GitLabDropdown.prototype.clearMenu = function() {
+ let selector;
+ selector = '.dropdown-content';
+ if (this.dropdown.find('.dropdown-toggle-page').length) {
+ if (this.options.containerSelector) {
+ selector = this.options.containerSelector;
} else {
- return $('<ul>').append(html);
+ selector = '.dropdown-page-one .dropdown-content';
}
- };
+ }
- // Append the menu into the dropdown
- GitLabDropdown.prototype.appendMenu = function(html) {
- return this.clearMenu().append(html);
- };
+ return $(selector, this.dropdown).empty();
+};
- GitLabDropdown.prototype.clearMenu = function() {
- var selector;
- selector = '.dropdown-content';
- if (this.dropdown.find('.dropdown-toggle-page').length) {
- if (this.options.containerSelector) {
- selector = this.options.containerSelector;
- } else {
- selector = '.dropdown-page-one .dropdown-content';
- }
- }
+GitLabDropdown.prototype.renderItem = function(data, group, index) {
+ let parent;
- return $(selector, this.dropdown).empty();
- };
+ if (this.dropdown && this.dropdown[0]) {
+ parent = this.dropdown[0].parentNode;
+ }
- GitLabDropdown.prototype.renderItem = function(data, group, index) {
- let parent;
+ return renderItem({
+ instance: this,
+ options: Object.assign({}, this.options, {
+ icon: this.icon,
+ highlight: this.highlight,
+ highlightText: text => this.highlightTextMatches(text, this.filterInput.val()),
+ highlightTemplate: this.highlightTemplate.bind(this),
+ parent,
+ }),
+ data,
+ group,
+ index,
+ });
+};
- if (this.dropdown && this.dropdown[0]) {
- parent = this.dropdown[0].parentNode;
- }
+GitLabDropdown.prototype.highlightTemplate = function(text, template) {
+ return `"<b>${_.escape(text)}</b>" ${template}`;
+};
- return renderItem({
- instance: this,
- options: Object.assign({}, this.options, {
- icon: this.icon,
- highlight: this.highlight,
- highlightText: text => this.highlightTextMatches(text, this.filterInput.val()),
- highlightTemplate: this.highlightTemplate.bind(this),
- parent,
- }),
- data,
- group,
- index,
- });
- };
-
- GitLabDropdown.prototype.highlightTemplate = function(text, template) {
- return `"<b>${_.escape(text)}</b>" ${template}`;
- };
-
- GitLabDropdown.prototype.highlightTextMatches = function(text, term) {
- const occurrences = fuzzaldrinPlus.match(text, term);
- const { indexOf } = [];
-
- return text
- .split('')
- .map((character, i) => {
- if (indexOf.call(occurrences, i) !== -1) {
- return `<b>${character}</b>`;
- } else {
- return character;
- }
- })
- .join('');
- };
-
- GitLabDropdown.prototype.noResults = function() {
- return '<li class="dropdown-menu-empty-item"><a>No matching results</a></li>';
- };
-
- GitLabDropdown.prototype.rowClicked = function(el) {
- var field, groupName, isInput, selectedIndex, selectedObject, value, isMarking;
-
- const { fieldName } = this.options;
- isInput = $(this.el).is('input');
- if (this.renderedData) {
- groupName = el.data('group');
- if (groupName) {
- selectedIndex = el.data('index');
- selectedObject = this.renderedData[groupName][selectedIndex];
- } else {
- selectedIndex = el.closest('li').index();
- this.selectedIndex = selectedIndex;
- selectedObject = this.renderedData[selectedIndex];
- }
- }
+GitLabDropdown.prototype.highlightTextMatches = function(text, term) {
+ const occurrences = fuzzaldrinPlus.match(text, term);
+ const { indexOf } = [];
- if (this.options.vue) {
- if (el.hasClass(ACTIVE_CLASS)) {
- el.removeClass(ACTIVE_CLASS);
+ return text
+ .split('')
+ .map((character, i) => {
+ if (indexOf.call(occurrences, i) !== -1) {
+ return `<b>${character}</b>`;
} else {
- el.addClass(ACTIVE_CLASS);
+ return character;
}
+ })
+ .join('');
+};
- return [selectedObject];
- }
-
- field = [];
- value = this.options.id ? this.options.id(selectedObject, el) : selectedObject.id;
- if (isInput) {
- field = $(this.el);
- } else if (value != null) {
- field = this.dropdown
- .parent()
- .find(`input[name='${fieldName}'][value='${value.toString().replace(/'/g, "\\'")}']`);
- }
+GitLabDropdown.prototype.noResults = function() {
+ return '<li class="dropdown-menu-empty-item"><a>No matching results</a></li>';
+};
- if (this.options.isSelectable && !this.options.isSelectable(selectedObject, el)) {
- return [selectedObject];
+GitLabDropdown.prototype.rowClicked = function(el) {
+ let field, groupName, selectedIndex, selectedObject, isMarking;
+ const { fieldName } = this.options;
+ const isInput = $(this.el).is('input');
+ if (this.renderedData) {
+ groupName = el.data('group');
+ if (groupName) {
+ selectedIndex = el.data('index');
+ selectedObject = this.renderedData[groupName][selectedIndex];
+ } else {
+ selectedIndex = el.closest('li').index();
+ this.selectedIndex = selectedIndex;
+ selectedObject = this.renderedData[selectedIndex];
}
+ }
- if (el.hasClass(ACTIVE_CLASS) && value !== 0) {
- isMarking = false;
+ if (this.options.vue) {
+ if (el.hasClass(ACTIVE_CLASS)) {
el.removeClass(ACTIVE_CLASS);
- if (field && field.length) {
- this.clearField(field, isInput);
- }
- } else if (el.hasClass(INDETERMINATE_CLASS)) {
- isMarking = true;
- el.addClass(ACTIVE_CLASS);
- el.removeClass(INDETERMINATE_CLASS);
- if (field && field.length && value == null) {
- this.clearField(field, isInput);
- }
- if ((!field || !field.length) && fieldName) {
- this.addInput(fieldName, value, selectedObject);
- }
} else {
- isMarking = true;
- if (!this.options.multiSelect || el.hasClass('dropdown-clear-active')) {
- this.dropdown.find(`.${ACTIVE_CLASS}`).removeClass(ACTIVE_CLASS);
- if (!isInput) {
- this.dropdown
- .parent()
- .find(`input[name='${fieldName}']`)
- .remove();
- }
- }
- if (field && field.length && value == null) {
- this.clearField(field, isInput);
- }
- // Toggle active class for the tick mark
el.addClass(ACTIVE_CLASS);
- if (value != null) {
- if ((!field || !field.length) && fieldName) {
- this.addInput(fieldName, value, selectedObject);
- } else if (field && field.length) {
- field.val(value).trigger('change');
- }
- }
}
- return [selectedObject, isMarking];
- };
+ return [selectedObject];
+ }
+
+ field = [];
+ const value = this.options.id ? this.options.id(selectedObject, el) : selectedObject.id;
+ if (isInput) {
+ field = $(this.el);
+ } else if (value != null) {
+ field = this.dropdown
+ .parent()
+ .find(`input[name='${fieldName}'][value='${value.toString().replace(/'/g, "\\'")}']`);
+ }
- GitLabDropdown.prototype.focusTextInput = function() {
- if (this.options.filterable) {
- const initialScrollTop = $(window).scrollTop();
+ if (this.options.isSelectable && !this.options.isSelectable(selectedObject, el)) {
+ return [selectedObject];
+ }
- if (this.dropdown.is('.show') && !this.filterInput.is(':focus')) {
- this.filterInput.focus();
+ if (el.hasClass(ACTIVE_CLASS) && value !== 0) {
+ isMarking = false;
+ el.removeClass(ACTIVE_CLASS);
+ if (field && field.length) {
+ this.clearField(field, isInput);
+ }
+ } else if (el.hasClass(INDETERMINATE_CLASS)) {
+ isMarking = true;
+ el.addClass(ACTIVE_CLASS);
+ el.removeClass(INDETERMINATE_CLASS);
+ if (field && field.length && value == null) {
+ this.clearField(field, isInput);
+ }
+ if ((!field || !field.length) && fieldName) {
+ this.addInput(fieldName, value, selectedObject);
+ }
+ } else {
+ isMarking = true;
+ if (!this.options.multiSelect || el.hasClass('dropdown-clear-active')) {
+ this.dropdown.find(`.${ACTIVE_CLASS}`).removeClass(ACTIVE_CLASS);
+ if (!isInput) {
+ this.dropdown
+ .parent()
+ .find(`input[name='${fieldName}']`)
+ .remove();
}
-
- if ($(window).scrollTop() < initialScrollTop) {
- $(window).scrollTop(initialScrollTop);
+ }
+ if (field && field.length && value == null) {
+ this.clearField(field, isInput);
+ }
+ // Toggle active class for the tick mark
+ el.addClass(ACTIVE_CLASS);
+ if (value != null) {
+ if ((!field || !field.length) && fieldName) {
+ this.addInput(fieldName, value, selectedObject);
+ } else if (field && field.length) {
+ field.val(value).trigger('change');
}
}
- };
+ }
- GitLabDropdown.prototype.addInput = function(fieldName, value, selectedObject, single) {
- var $input;
- // Create hidden input for form
- if (single) {
- $(`input[name="${fieldName}"]`).remove();
- }
+ return [selectedObject, isMarking];
+};
- $input = $('<input>')
- .attr('type', 'hidden')
- .attr('name', fieldName)
- .val(value);
- if (this.options.inputId != null) {
- $input.attr('id', this.options.inputId);
- }
+GitLabDropdown.prototype.focusTextInput = function() {
+ if (this.options.filterable) {
+ const initialScrollTop = $(window).scrollTop();
- if (this.options.multiSelect) {
- Object.keys(selectedObject).forEach(attribute => {
- $input.attr(`data-${attribute}`, selectedObject[attribute]);
- });
+ if (this.dropdown.is('.show') && !this.filterInput.is(':focus')) {
+ this.filterInput.focus();
}
- if (this.options.inputMeta) {
- $input.attr('data-meta', selectedObject[this.options.inputMeta]);
+ if ($(window).scrollTop() < initialScrollTop) {
+ $(window).scrollTop(initialScrollTop);
}
+ }
+};
+
+GitLabDropdown.prototype.addInput = function(fieldName, value, selectedObject, single) {
+ // Create hidden input for form
+ if (single) {
+ $(`input[name="${fieldName}"]`).remove();
+ }
+
+ const $input = $('<input>')
+ .attr('type', 'hidden')
+ .attr('name', fieldName)
+ .val(value);
+ if (this.options.inputId != null) {
+ $input.attr('id', this.options.inputId);
+ }
- this.dropdown.before($input).trigger('change');
- };
+ if (this.options.multiSelect) {
+ Object.keys(selectedObject).forEach(attribute => {
+ $input.attr(`data-${attribute}`, selectedObject[attribute]);
+ });
+ }
+
+ if (this.options.inputMeta) {
+ $input.attr('data-meta', selectedObject[this.options.inputMeta]);
+ }
- GitLabDropdown.prototype.selectRowAtIndex = function(index) {
- var $el, selector;
- // If we pass an option index
- if (typeof index !== 'undefined') {
- selector = `${SELECTABLE_CLASSES}:eq(${index}) a`;
+ this.dropdown.before($input).trigger('change');
+};
+
+GitLabDropdown.prototype.selectRowAtIndex = function(index) {
+ let selector;
+ // If we pass an option index
+ if (typeof index !== 'undefined') {
+ selector = `${SELECTABLE_CLASSES}:eq(${index}) a`;
+ } else {
+ selector = '.dropdown-content .is-focused';
+ }
+ if (this.dropdown.find('.dropdown-toggle-page').length) {
+ selector = `.dropdown-page-one ${selector}`;
+ }
+ // simulate a click on the first link
+ const $el = $(selector, this.dropdown);
+ if ($el.length) {
+ const href = $el.attr('href');
+ if (href && href !== '#') {
+ visitUrl(href);
} else {
- selector = '.dropdown-content .is-focused';
+ $el.trigger('click');
}
- if (this.dropdown.find('.dropdown-toggle-page').length) {
- selector = `.dropdown-page-one ${selector}`;
- }
- // simulate a click on the first link
- $el = $(selector, this.dropdown);
- if ($el.length) {
- var href = $el.attr('href');
- if (href && href !== '#') {
- visitUrl(href);
- } else {
- $el.trigger('click');
- }
- }
- };
+ }
+};
- GitLabDropdown.prototype.addArrowKeyEvent = function() {
- var ARROW_KEY_CODES, selector;
- ARROW_KEY_CODES = [38, 40];
- selector = SELECTABLE_CLASSES;
- if (this.dropdown.find('.dropdown-toggle-page').length) {
- selector = `.dropdown-page-one ${selector}`;
+GitLabDropdown.prototype.addArrowKeyEvent = function() {
+ let selector;
+ const ARROW_KEY_CODES = [38, 40];
+ selector = SELECTABLE_CLASSES;
+ if (this.dropdown.find('.dropdown-toggle-page').length) {
+ selector = `.dropdown-page-one ${selector}`;
+ }
+ return $('body').on('keydown', e => {
+ let $listItems, PREV_INDEX;
+ const currentKeyCode = e.which;
+ if (ARROW_KEY_CODES.indexOf(currentKeyCode) !== -1) {
+ e.preventDefault();
+ e.stopImmediatePropagation();
+ PREV_INDEX = currentIndex;
+ $listItems = $(selector, this.dropdown);
+ // if @options.filterable
+ // $input.blur()
+ if (currentKeyCode === 40) {
+ // Move down
+ if (currentIndex < $listItems.length - 1) {
+ currentIndex += 1;
+ }
+ } else if (currentKeyCode === 38) {
+ // Move up
+ if (currentIndex > 0) {
+ currentIndex -= 1;
+ }
+ }
+ if (currentIndex !== PREV_INDEX) {
+ this.highlightRowAtIndex($listItems, currentIndex);
+ }
+ return false;
}
- return $('body').on(
- 'keydown',
- (function(_this) {
- return function(e) {
- var $listItems, PREV_INDEX, currentKeyCode;
- currentKeyCode = e.which;
- if (ARROW_KEY_CODES.indexOf(currentKeyCode) !== -1) {
- e.preventDefault();
- e.stopImmediatePropagation();
- PREV_INDEX = currentIndex;
- $listItems = $(selector, _this.dropdown);
- // if @options.filterable
- // $input.blur()
- if (currentKeyCode === 40) {
- // Move down
- if (currentIndex < $listItems.length - 1) {
- currentIndex += 1;
- }
- } else if (currentKeyCode === 38) {
- // Move up
- if (currentIndex > 0) {
- currentIndex -= 1;
- }
- }
- if (currentIndex !== PREV_INDEX) {
- _this.highlightRowAtIndex($listItems, currentIndex);
- }
- return false;
- }
- if (currentKeyCode === 13 && currentIndex !== -1) {
- e.preventDefault();
- _this.selectRowAtIndex();
- }
- };
- })(this),
- );
- };
-
- GitLabDropdown.prototype.removeArrowKeyEvent = function() {
- return $('body').off('keydown');
- };
-
- GitLabDropdown.prototype.resetRows = function resetRows() {
- currentIndex = -1;
- $('.is-focused', this.dropdown).removeClass('is-focused');
- };
-
- GitLabDropdown.prototype.highlightRowAtIndex = function($listItems, index) {
- var $dropdownContent,
- $listItem,
- dropdownContentBottom,
- dropdownContentHeight,
- dropdownContentTop,
- dropdownScrollTop,
- listItemBottom,
- listItemHeight,
- listItemTop;
-
- if (!$listItems) {
- $listItems = $(SELECTABLE_CLASSES, this.dropdown);
+ if (currentKeyCode === 13 && currentIndex !== -1) {
+ e.preventDefault();
+ this.selectRowAtIndex();
}
+ });
+};
- // Remove the class for the previously focused row
- $('.is-focused', this.dropdown).removeClass('is-focused');
- // Update the class for the row at the specific index
- $listItem = $listItems.eq(index);
- $listItem.find('a:first-child').addClass('is-focused');
- // Dropdown content scroll area
- $dropdownContent = $listItem.closest('.dropdown-content');
- dropdownScrollTop = $dropdownContent.scrollTop();
- dropdownContentHeight = $dropdownContent.outerHeight();
- dropdownContentTop = $dropdownContent.prop('offsetTop');
- dropdownContentBottom = dropdownContentTop + dropdownContentHeight;
- // Get the offset bottom of the list item
- listItemHeight = $listItem.outerHeight();
- listItemTop = $listItem.prop('offsetTop');
- listItemBottom = listItemTop + listItemHeight;
- if (!index) {
- // Scroll the dropdown content to the top
- $dropdownContent.scrollTop(0);
- } else if (index === $listItems.length - 1) {
- // Scroll the dropdown content to the bottom
- $dropdownContent.scrollTop($dropdownContent.prop('scrollHeight'));
- } else if (listItemBottom > dropdownContentBottom + dropdownScrollTop) {
- // Scroll the dropdown content down
- $dropdownContent.scrollTop(
- listItemBottom - dropdownContentBottom + CURSOR_SELECT_SCROLL_PADDING,
- );
- } else if (listItemTop < dropdownContentTop + dropdownScrollTop) {
- // Scroll the dropdown content up
- return $dropdownContent.scrollTop(
- listItemTop - dropdownContentTop - CURSOR_SELECT_SCROLL_PADDING,
- );
- }
- };
+GitLabDropdown.prototype.removeArrowKeyEvent = function() {
+ return $('body').off('keydown');
+};
- GitLabDropdown.prototype.updateLabel = function(selected, el, instance) {
- if (selected == null) {
- selected = null;
- }
- if (el == null) {
- el = null;
- }
- if (instance == null) {
- instance = null;
- }
+GitLabDropdown.prototype.resetRows = function resetRows() {
+ currentIndex = -1;
+ $('.is-focused', this.dropdown).removeClass('is-focused');
+};
- let toggleText = this.options.toggleLabel(selected, el, instance);
- if (this.options.updateLabel) {
- // Option to override the dropdown label text
- toggleText = this.options.updateLabel;
- }
+GitLabDropdown.prototype.highlightRowAtIndex = function($listItems, index) {
+ if (!$listItems) {
+ $listItems = $(SELECTABLE_CLASSES, this.dropdown);
+ }
+
+ // Remove the class for the previously focused row
+ $('.is-focused', this.dropdown).removeClass('is-focused');
+ // Update the class for the row at the specific index
+ const $listItem = $listItems.eq(index);
+ $listItem.find('a:first-child').addClass('is-focused');
+ // Dropdown content scroll area
+ const $dropdownContent = $listItem.closest('.dropdown-content');
+ const dropdownScrollTop = $dropdownContent.scrollTop();
+ const dropdownContentHeight = $dropdownContent.outerHeight();
+ const dropdownContentTop = $dropdownContent.prop('offsetTop');
+ const dropdownContentBottom = dropdownContentTop + dropdownContentHeight;
+ // Get the offset bottom of the list item
+ const listItemHeight = $listItem.outerHeight();
+ const listItemTop = $listItem.prop('offsetTop');
+ const listItemBottom = listItemTop + listItemHeight;
+ if (!index) {
+ // Scroll the dropdown content to the top
+ $dropdownContent.scrollTop(0);
+ } else if (index === $listItems.length - 1) {
+ // Scroll the dropdown content to the bottom
+ $dropdownContent.scrollTop($dropdownContent.prop('scrollHeight'));
+ } else if (listItemBottom > dropdownContentBottom + dropdownScrollTop) {
+ // Scroll the dropdown content down
+ $dropdownContent.scrollTop(
+ listItemBottom - dropdownContentBottom + CURSOR_SELECT_SCROLL_PADDING,
+ );
+ } else if (listItemTop < dropdownContentTop + dropdownScrollTop) {
+ // Scroll the dropdown content up
+ return $dropdownContent.scrollTop(
+ listItemTop - dropdownContentTop - CURSOR_SELECT_SCROLL_PADDING,
+ );
+ }
+};
+
+GitLabDropdown.prototype.updateLabel = function(selected, el, instance) {
+ if (selected == null) {
+ selected = null;
+ }
+ if (el == null) {
+ el = null;
+ }
+ if (instance == null) {
+ instance = null;
+ }
- return $(this.el)
- .find('.dropdown-toggle-text')
- .text(toggleText);
- };
+ let toggleText = this.options.toggleLabel(selected, el, instance);
+ if (this.options.updateLabel) {
+ // Option to override the dropdown label text
+ toggleText = this.options.updateLabel;
+ }
- GitLabDropdown.prototype.clearField = function(field, isInput) {
- return isInput ? field.val('') : field.remove();
- };
+ return $(this.el)
+ .find('.dropdown-toggle-text')
+ .text(toggleText);
+};
- return GitLabDropdown;
-})();
+GitLabDropdown.prototype.clearField = function(field, isInput) {
+ return isInput ? field.val('') : field.remove();
+};
$.fn.glDropdown = function(opts) {
return this.each(function() {
diff --git a/app/assets/javascripts/grafana_integration/components/grafana_integration.vue b/app/assets/javascripts/grafana_integration/components/grafana_integration.vue
index bd504d95ee2..6258ee7f153 100644
--- a/app/assets/javascripts/grafana_integration/components/grafana_integration.vue
+++ b/app/assets/javascripts/grafana_integration/components/grafana_integration.vue
@@ -1,7 +1,7 @@
<script>
import { GlButton, GlFormGroup, GlFormInput, GlFormCheckbox, GlLink } from '@gitlab/ui';
-import Icon from '~/vue_shared/components/icon.vue';
import { mapState, mapActions } from 'vuex';
+import Icon from '~/vue_shared/components/icon.vue';
export default {
components: {
diff --git a/app/assets/javascripts/groups/components/app.vue b/app/assets/javascripts/groups/components/app.vue
index 8d2dac47ff2..ce6591e85cf 100644
--- a/app/assets/javascripts/groups/components/app.vue
+++ b/app/assets/javascripts/groups/components/app.vue
@@ -2,13 +2,13 @@
/* global Flash */
import $ from 'jquery';
+import { GlLoadingIcon } from '@gitlab/ui';
import { s__, sprintf } from '~/locale';
import DeprecatedModal from '~/vue_shared/components/deprecated_modal.vue';
import { HIDDEN_CLASS } from '~/lib/utils/constants';
import { getParameterByName } from '~/lib/utils/common_utils';
import { mergeUrlParams } from '~/lib/utils/url_utility';
-import { GlLoadingIcon } from '@gitlab/ui';
import eventHub from '../event_hub';
import { COMMON_STR, CONTENT_LIST_CLASS } from '../constants';
import groupsComponent from './groups.vue';
diff --git a/app/assets/javascripts/groups/components/item_stats.vue b/app/assets/javascripts/groups/components/item_stats.vue
index 734a9a89c72..675552e6c2b 100644
--- a/app/assets/javascripts/groups/components/item_stats.vue
+++ b/app/assets/javascripts/groups/components/item_stats.vue
@@ -1,5 +1,6 @@
<script>
import icon from '~/vue_shared/components/icon.vue';
+import { GlBadge } from '@gitlab/ui';
import timeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue';
import {
ITEM_TYPE,
@@ -8,13 +9,16 @@ import {
PROJECT_VISIBILITY_TYPE,
} from '../constants';
import itemStatsValue from './item_stats_value.vue';
+import isProjectPendingRemoval from 'ee_else_ce/groups/mixins/is_project_pending_removal';
export default {
components: {
icon,
timeAgoTooltip,
itemStatsValue,
+ GlBadge,
},
+ mixins: [isProjectPendingRemoval],
props: {
item: {
type: Object,
@@ -70,6 +74,9 @@ export default {
css-class="project-stars"
icon-name="star"
/>
+ <div v-if="isProjectPendingRemoval">
+ <gl-badge variant="warning">{{ __('pending removal') }}</gl-badge>
+ </div>
<div v-if="isProject" class="last-updated">
<time-ago-tooltip :time="item.updatedAt" tooltip-placement="bottom" />
</div>
diff --git a/app/assets/javascripts/groups/mixins/is_project_pending_removal.js b/app/assets/javascripts/groups/mixins/is_project_pending_removal.js
new file mode 100644
index 00000000000..e44e5780199
--- /dev/null
+++ b/app/assets/javascripts/groups/mixins/is_project_pending_removal.js
@@ -0,0 +1,7 @@
+export default {
+ computed: {
+ isProjectPendingRemoval() {
+ return false;
+ },
+ },
+};
diff --git a/app/assets/javascripts/groups/store/groups_store.js b/app/assets/javascripts/groups/store/groups_store.js
index 16f95d5a0cc..214ac5e3db5 100644
--- a/app/assets/javascripts/groups/store/groups_store.js
+++ b/app/assets/javascripts/groups/store/groups_store.js
@@ -93,6 +93,7 @@ export default class GroupsStore {
memberCount: rawGroupItem.number_users_with_delimiter,
starCount: rawGroupItem.star_count,
updatedAt: rawGroupItem.updated_at,
+ pendingRemoval: rawGroupItem.marked_for_deletion_at,
};
}
diff --git a/app/assets/javascripts/helpers/monitor_helper.js b/app/assets/javascripts/helpers/monitor_helper.js
index d172aa8a444..87b4b14f6bf 100644
--- a/app/assets/javascripts/helpers/monitor_helper.js
+++ b/app/assets/javascripts/helpers/monitor_helper.js
@@ -7,6 +7,7 @@
export const makeDataSeries = (queryResults, defaultConfig) =>
queryResults
.map(result => {
+ // NaN values may disrupt avg., max. & min. calculations in the legend, filter them out
const data = result.values.filter(([, value]) => !Number.isNaN(value));
if (!data.length) {
return null;
diff --git a/app/assets/javascripts/ide/.eslintrc.yml b/app/assets/javascripts/ide/.eslintrc.yml
index 92b96d717be..2af5c1798f5 100644
--- a/app/assets/javascripts/ide/.eslintrc.yml
+++ b/app/assets/javascripts/ide/.eslintrc.yml
@@ -1,3 +1,5 @@
rules:
+ # https://gitlab.com/gitlab-org/gitlab/issues/28717
+ import/no-cycle: off
# https://gitlab.com/gitlab-org/gitlab/issues/33024
promise/no-nesting: off
diff --git a/app/assets/javascripts/ide/components/branches/search_list.vue b/app/assets/javascripts/ide/components/branches/search_list.vue
index db8365a08e0..31f1dec43ad 100644
--- a/app/assets/javascripts/ide/components/branches/search_list.vue
+++ b/app/assets/javascripts/ide/components/branches/search_list.vue
@@ -1,8 +1,8 @@
<script>
import { mapActions, mapState } from 'vuex';
import _ from 'underscore';
-import Icon from '~/vue_shared/components/icon.vue';
import { GlLoadingIcon } from '@gitlab/ui';
+import Icon from '~/vue_shared/components/icon.vue';
import Item from './item.vue';
export default {
diff --git a/app/assets/javascripts/ide/components/file_templates/dropdown.vue b/app/assets/javascripts/ide/components/file_templates/dropdown.vue
index 343e0cca672..35e5f9bcf69 100644
--- a/app/assets/javascripts/ide/components/file_templates/dropdown.vue
+++ b/app/assets/javascripts/ide/components/file_templates/dropdown.vue
@@ -1,8 +1,8 @@
<script>
import $ from 'jquery';
import { mapActions, mapState } from 'vuex';
-import DropdownButton from '~/vue_shared/components/dropdown/dropdown_button.vue';
import { GlLoadingIcon } from '@gitlab/ui';
+import DropdownButton from '~/vue_shared/components/dropdown/dropdown_button.vue';
export default {
components: {
diff --git a/app/assets/javascripts/ide/components/ide_status_bar.vue b/app/assets/javascripts/ide/components/ide_status_bar.vue
index 326589fa50f..6eaf08e8033 100644
--- a/app/assets/javascripts/ide/components/ide_status_bar.vue
+++ b/app/assets/javascripts/ide/components/ide_status_bar.vue
@@ -22,7 +22,7 @@ export default {
mixins: [timeAgoMixin],
data() {
return {
- lastCommitFormatedAge: null,
+ lastCommitFormattedAge: null,
};
},
computed: {
@@ -62,7 +62,7 @@ export default {
},
commitAgeUpdate() {
if (this.lastCommit) {
- this.lastCommitFormatedAge = this.timeFormated(this.lastCommit.committed_date);
+ this.lastCommitFormattedAge = this.timeFormatted(this.lastCommit.committed_date);
}
},
getCommitPath(shortSha) {
@@ -118,7 +118,7 @@ export default {
:title="tooltipTitle(lastCommit.committed_date)"
data-placement="top"
data-container="body"
- >{{ lastCommitFormatedAge }}</time
+ >{{ lastCommitFormattedAge }}</time
>
</div>
<ide-status-list class="ml-auto" />
diff --git a/app/assets/javascripts/ide/components/ide_tree_list.vue b/app/assets/javascripts/ide/components/ide_tree_list.vue
index 95782b2c88a..3a0dd60f0e0 100644
--- a/app/assets/javascripts/ide/components/ide_tree_list.vue
+++ b/app/assets/javascripts/ide/components/ide_tree_list.vue
@@ -1,7 +1,7 @@
<script>
import { mapActions, mapGetters, mapState } from 'vuex';
-import Icon from '~/vue_shared/components/icon.vue';
import { GlSkeletonLoading } from '@gitlab/ui';
+import Icon from '~/vue_shared/components/icon.vue';
import FileRow from '~/vue_shared/components/file_row.vue';
import NavDropdown from './nav_dropdown.vue';
import FileRowExtra from './file_row_extra.vue';
diff --git a/app/assets/javascripts/ide/components/merge_requests/list.vue b/app/assets/javascripts/ide/components/merge_requests/list.vue
index 5daf2d1422c..5a8face062b 100644
--- a/app/assets/javascripts/ide/components/merge_requests/list.vue
+++ b/app/assets/javascripts/ide/components/merge_requests/list.vue
@@ -1,9 +1,9 @@
<script>
import { mapActions, mapState } from 'vuex';
import _ from 'underscore';
+import { GlLoadingIcon } from '@gitlab/ui';
import { __ } from '~/locale';
import Icon from '~/vue_shared/components/icon.vue';
-import { GlLoadingIcon } from '@gitlab/ui';
import Item from './item.vue';
import TokenedInput from '../shared/tokened_input.vue';
diff --git a/app/assets/javascripts/ide/components/new_dropdown/modal.vue b/app/assets/javascripts/ide/components/new_dropdown/modal.vue
index d2ed1fe3e55..ecafb4e81c4 100644
--- a/app/assets/javascripts/ide/components/new_dropdown/modal.vue
+++ b/app/assets/javascripts/ide/components/new_dropdown/modal.vue
@@ -1,8 +1,8 @@
<script>
import $ from 'jquery';
+import { mapActions, mapState, mapGetters } from 'vuex';
import flash from '~/flash';
import { __, sprintf, s__ } from '~/locale';
-import { mapActions, mapState, mapGetters } from 'vuex';
import DeprecatedModal2 from '~/vue_shared/components/deprecated_modal_2.vue';
import { modalTypes } from '../../constants';
diff --git a/app/assets/javascripts/ide/components/preview/navigator.vue b/app/assets/javascripts/ide/components/preview/navigator.vue
index bc80e1dba25..ff23485f0f0 100644
--- a/app/assets/javascripts/ide/components/preview/navigator.vue
+++ b/app/assets/javascripts/ide/components/preview/navigator.vue
@@ -1,7 +1,7 @@
<script>
import { listen } from 'codesandbox-api';
-import Icon from '~/vue_shared/components/icon.vue';
import { GlLoadingIcon } from '@gitlab/ui';
+import Icon from '~/vue_shared/components/icon.vue';
export default {
components: {
diff --git a/app/assets/javascripts/ide/components/repo_tab.vue b/app/assets/javascripts/ide/components/repo_tab.vue
index 7615cfc966e..8370833233a 100644
--- a/app/assets/javascripts/ide/components/repo_tab.vue
+++ b/app/assets/javascripts/ide/components/repo_tab.vue
@@ -1,6 +1,6 @@
<script>
-import { __, sprintf } from '~/locale';
import { mapActions } from 'vuex';
+import { __, sprintf } from '~/locale';
import FileIcon from '~/vue_shared/components/file_icon.vue';
import Icon from '~/vue_shared/components/icon.vue';
diff --git a/app/assets/javascripts/ide/lib/files.js b/app/assets/javascripts/ide/lib/files.js
index e86dac20104..bee867fa47c 100644
--- a/app/assets/javascripts/ide/lib/files.js
+++ b/app/assets/javascripts/ide/lib/files.js
@@ -1,5 +1,6 @@
import { viewerInformationForPath } from '~/vue_shared/components/content_viewer/lib/viewer_utils';
-import { decorateData, sortTree, escapeFileUrl } from '../stores/utils';
+import { escapeFileUrl } from '~/lib/utils/url_utility';
+import { decorateData, sortTree } from '../stores/utils';
export const splitParent = path => {
const idx = path.lastIndexOf('/');
diff --git a/app/assets/javascripts/ide/services/index.js b/app/assets/javascripts/ide/services/index.js
index f6ad2f9c7d1..b130e6e8b81 100644
--- a/app/assets/javascripts/ide/services/index.js
+++ b/app/assets/javascripts/ide/services/index.js
@@ -1,6 +1,5 @@
import axios from '~/lib/utils/axios_utils';
-import { joinPaths } from '~/lib/utils/url_utility';
-import { escapeFileUrl } from '../stores/utils';
+import { joinPaths, escapeFileUrl } from '~/lib/utils/url_utility';
import Api from '~/api';
export default {
diff --git a/app/assets/javascripts/ide/stores/actions.js b/app/assets/javascripts/ide/stores/actions.js
index 4e18ec58feb..dd69e2d6f1f 100644
--- a/app/assets/javascripts/ide/stores/actions.js
+++ b/app/assets/javascripts/ide/stores/actions.js
@@ -1,9 +1,9 @@
import $ from 'jquery';
import Vue from 'vue';
+import _ from 'underscore';
import { __, sprintf } from '~/locale';
import { visitUrl } from '~/lib/utils/url_utility';
import flash from '~/flash';
-import _ from 'underscore';
import * as types from './mutation_types';
import { decorateFiles } from '../lib/files';
import { stageKeys } from '../constants';
@@ -17,10 +17,18 @@ export const setInitialData = ({ commit }, data) => commit(types.SET_INITIAL_DAT
export const discardAllChanges = ({ state, commit, dispatch }) => {
state.changedFiles.forEach(file => {
- commit(types.DISCARD_FILE_CHANGES, file.path);
+ if (file.tempFile || file.prevPath) dispatch('closeFile', file);
if (file.tempFile) {
- dispatch('closeFile', file.path);
+ dispatch('deleteEntry', file.path);
+ } else if (file.prevPath) {
+ dispatch('renameEntry', {
+ path: file.path,
+ name: file.prevName,
+ parentPath: file.prevParentPath,
+ });
+ } else {
+ commit(types.DISCARD_FILE_CHANGES, file.path);
}
});
diff --git a/app/assets/javascripts/ide/stores/actions/file.js b/app/assets/javascripts/ide/stores/actions/file.js
index 9af0b50d1a5..8864224c19e 100644
--- a/app/assets/javascripts/ide/stores/actions/file.js
+++ b/app/assets/javascripts/ide/stores/actions/file.js
@@ -1,10 +1,10 @@
-import { joinPaths } from '~/lib/utils/url_utility';
+import { joinPaths, escapeFileUrl } from '~/lib/utils/url_utility';
import { __ } from '~/locale';
import eventHub from '../../eventhub';
import service from '../../services';
import * as types from '../mutation_types';
import router from '../../ide_router';
-import { escapeFileUrl, addFinalNewlineIfNeeded, setPageTitleForFile } from '../utils';
+import { addFinalNewlineIfNeeded, setPageTitleForFile } from '../utils';
import { viewerTypes, stageKeys } from '../../constants';
export const closeFile = ({ commit, state, dispatch }, file) => {
diff --git a/app/assets/javascripts/ide/stores/getters.js b/app/assets/javascripts/ide/stores/getters.js
index a176fd0aca8..bb8374b4e78 100644
--- a/app/assets/javascripts/ide/stores/getters.js
+++ b/app/assets/javascripts/ide/stores/getters.js
@@ -115,5 +115,30 @@ export const isOnDefaultBranch = (_state, getters) =>
export const canPushToBranch = (_state, getters) =>
getters.currentBranch && getters.currentBranch.can_push;
+export const isFileDeletedAndReadded = (state, getters) => path => {
+ const stagedFile = getters.getStagedFile(path);
+ const file = state.entries[path];
+ return Boolean(stagedFile && stagedFile.deleted && file.tempFile);
+};
+
+// checks if any diff exists in the staged or unstaged changes for this path
+export const getDiffInfo = (state, getters) => path => {
+ const stagedFile = getters.getStagedFile(path);
+ const file = state.entries[path];
+ const renamed = file.prevPath ? file.path !== file.prevPath : false;
+ const deletedAndReadded = getters.isFileDeletedAndReadded(path);
+ const deleted = deletedAndReadded ? false : file.deleted;
+ const tempFile = deletedAndReadded ? false : file.tempFile;
+ const changed = file.content !== (deletedAndReadded ? stagedFile.raw : file.raw);
+
+ return {
+ exists: changed || renamed || deleted || tempFile,
+ changed,
+ renamed,
+ deleted,
+ tempFile,
+ };
+};
+
// prevent babel-plugin-rewire from generating an invalid default during karma tests
export default () => {};
diff --git a/app/assets/javascripts/ide/stores/utils.js b/app/assets/javascripts/ide/stores/utils.js
index be7ee80656f..47a2e6b5202 100644
--- a/app/assets/javascripts/ide/stores/utils.js
+++ b/app/assets/javascripts/ide/stores/utils.js
@@ -1,4 +1,5 @@
import { commitActionTypes, FILE_VIEW_MODE_EDITOR } from '../constants';
+import { escapeFileUrl } from '~/lib/utils/url_utility';
export const dataStructure = () => ({
id: '',
@@ -217,8 +218,6 @@ export const mergeTrees = (fromTree, toTree) => {
return toTree;
};
-export const escapeFileUrl = fileUrl => encodeURIComponent(fileUrl).replace(/%2F/g, '/');
-
export const replaceFileUrl = (url, oldPath, newPath) => {
// Add `/-/` so that we don't accidentally replace project path
const result = url.replace(`/-/${escapeFileUrl(oldPath)}`, `/-/${escapeFileUrl(newPath)}`);
diff --git a/app/assets/javascripts/image_diff/.eslintrc.yml b/app/assets/javascripts/image_diff/.eslintrc.yml
new file mode 100644
index 00000000000..bf9e184381e
--- /dev/null
+++ b/app/assets/javascripts/image_diff/.eslintrc.yml
@@ -0,0 +1,3 @@
+rules:
+ # https://gitlab.com/gitlab-org/gitlab/issues/28719
+ import/no-cycle: off
diff --git a/app/assets/javascripts/issuable_form.js b/app/assets/javascripts/issuable_form.js
index 7576d36f27d..1d0807dc15d 100644
--- a/app/assets/javascripts/issuable_form.js
+++ b/app/assets/javascripts/issuable_form.js
@@ -6,6 +6,36 @@ import UsersSelect from './users_select';
import ZenMode from './zen_mode';
import AutoWidthDropdownSelect from './issuable/auto_width_dropdown_select';
import { parsePikadayDate, pikadayToString } from './lib/utils/datetime_utility';
+import { queryToObject, objectToQuery } from './lib/utils/url_utility';
+
+function organizeQuery(obj, isFallbackKey = false) {
+ const sourceBranch = 'merge_request[source_branch]';
+ const targetBranch = 'merge_request[target_branch]';
+
+ if (isFallbackKey) {
+ return {
+ [sourceBranch]: obj[sourceBranch],
+ };
+ }
+
+ return {
+ [sourceBranch]: obj[sourceBranch],
+ [targetBranch]: obj[targetBranch],
+ };
+}
+
+function format(searchTerm, isFallbackKey = false) {
+ const queryObject = queryToObject(searchTerm);
+ const organizeQueryObject = organizeQuery(queryObject, isFallbackKey);
+ const formattedQuery = objectToQuery(organizeQueryObject);
+
+ return formattedQuery;
+}
+
+function getFallbackKey() {
+ const searchTerm = format(document.location.search, true);
+ return ['autosave', document.location.pathname, searchTerm].join('/');
+}
export default class IssuableForm {
constructor(form) {
@@ -57,16 +87,20 @@ export default class IssuableForm {
}
initAutosave() {
- this.autosave = new Autosave(this.titleField, [
- document.location.pathname,
- document.location.search,
- 'title',
- ]);
- return new Autosave(this.descriptionField, [
- document.location.pathname,
- document.location.search,
- 'description',
- ]);
+ const searchTerm = format(document.location.search);
+ const fallbackKey = getFallbackKey();
+
+ this.autosave = new Autosave(
+ this.titleField,
+ [document.location.pathname, searchTerm, 'title'],
+ `${fallbackKey}=title`,
+ );
+
+ return new Autosave(
+ this.descriptionField,
+ [document.location.pathname, searchTerm, 'description'],
+ `${fallbackKey}=description`,
+ );
}
handleSubmit() {
diff --git a/app/assets/javascripts/issuable_suggestions/components/item.vue b/app/assets/javascripts/issuable_suggestions/components/item.vue
index 7629e04684c..66a4cc44d51 100644
--- a/app/assets/javascripts/issuable_suggestions/components/item.vue
+++ b/app/assets/javascripts/issuable_suggestions/components/item.vue
@@ -91,7 +91,7 @@ export default {
/>
<gl-tooltip :target="() => $refs.state" placement="bottom">
<span class="d-block">
- <span class="bold"> {{ stateTitle }} </span> {{ timeFormated(closedOrCreatedDate) }}
+ <span class="bold"> {{ stateTitle }} </span> {{ timeFormatted(closedOrCreatedDate) }}
</span>
<span class="text-tertiary">{{ tooltipTitle(closedOrCreatedDate) }}</span>
</gl-tooltip>
diff --git a/app/assets/javascripts/jobs/components/sidebar.vue b/app/assets/javascripts/jobs/components/sidebar.vue
index 06477477aad..415fa46835b 100644
--- a/app/assets/javascripts/jobs/components/sidebar.vue
+++ b/app/assets/javascripts/jobs/components/sidebar.vue
@@ -1,8 +1,8 @@
<script>
-import { __, sprintf } from '~/locale';
import _ from 'underscore';
import { mapActions, mapState } from 'vuex';
import { GlLink, GlButton } from '@gitlab/ui';
+import { __, sprintf } from '~/locale';
import timeagoMixin from '~/vue_shared/mixins/timeago';
import { timeIntervalInWords } from '~/lib/utils/datetime_utility';
import Icon from '~/vue_shared/components/icon.vue';
@@ -168,13 +168,13 @@ export default {
/>
<detail-row
v-if="job.finished_at"
- :value="timeFormated(job.finished_at)"
+ :value="timeFormatted(job.finished_at)"
class="js-job-finished"
title="Finished"
/>
<detail-row
v-if="job.erased_at"
- :value="timeFormated(job.erased_at)"
+ :value="timeFormatted(job.erased_at)"
class="js-job-erased"
title="Erased"
/>
diff --git a/app/assets/javascripts/jobs/components/trigger_block.vue b/app/assets/javascripts/jobs/components/trigger_block.vue
index 922f64d93fe..5edb8ff555b 100644
--- a/app/assets/javascripts/jobs/components/trigger_block.vue
+++ b/app/assets/javascripts/jobs/components/trigger_block.vue
@@ -1,6 +1,6 @@
<script>
-import { __ } from '~/locale';
import { GlButton } from '@gitlab/ui';
+import { __ } from '~/locale';
const HIDDEN_VALUE = '••••••';
diff --git a/app/assets/javascripts/jobs/store/utils.js b/app/assets/javascripts/jobs/store/utils.js
index 179d0bc4e0f..0b28c52a78f 100644
--- a/app/assets/javascripts/jobs/store/utils.js
+++ b/app/assets/javascripts/jobs/store/utils.js
@@ -114,7 +114,7 @@ export const logLinesParser = (lines = [], accumulator = []) =>
acc.push(parseHeaderLine(line, lineNumber));
} else if (isCollapsibleSection(acc, last, line)) {
// if the object belongs to a nested section, we append it to the new `lines` array of the
- // previously formated header
+ // previously formatted header
last.lines.push(parseLine(line, lineNumber));
} else if (line.section_duration) {
// if the line has section_duration, we look for the correct header to add it
diff --git a/app/assets/javascripts/lib/utils/axios_utils.js b/app/assets/javascripts/lib/utils/axios_utils.js
index a04fe609015..4eec5bffc66 100644
--- a/app/assets/javascripts/lib/utils/axios_utils.js
+++ b/app/assets/javascripts/lib/utils/axios_utils.js
@@ -33,11 +33,9 @@ window.addEventListener('beforeunload', () => {
// Ignore AJAX errors caused by requests
// being cancelled due to browser navigation
-const { gon } = window;
-const featureFlagEnabled = gon && gon.features && gon.features.suppressAjaxNavigationErrors;
axios.interceptors.response.use(
response => response,
- err => suppressAjaxErrorsDuringNavigation(err, isUserNavigating, featureFlagEnabled),
+ err => suppressAjaxErrorsDuringNavigation(err, isUserNavigating),
);
export default axios;
diff --git a/app/assets/javascripts/lib/utils/common_utils.js b/app/assets/javascripts/lib/utils/common_utils.js
index 177ae4f9838..e4001e94478 100644
--- a/app/assets/javascripts/lib/utils/common_utils.js
+++ b/app/assets/javascripts/lib/utils/common_utils.js
@@ -5,7 +5,7 @@
import $ from 'jquery';
import axios from './axios_utils';
import { getLocationHash } from './url_utility';
-import { convertToCamelCase } from './text_utility';
+import { convertToCamelCase, convertToSnakeCase } from './text_utility';
import { isObject } from './type_utility';
import breakpointInstance from '../../breakpoints';
@@ -490,6 +490,8 @@ export const historyPushState = newUrl => {
*/
export const parseBoolean = value => (value && value.toString()) === 'true';
+export const BACKOFF_TIMEOUT = 'BACKOFF_TIMEOUT';
+
/**
* @callback backOffCallback
* @param {Function} next
@@ -541,7 +543,7 @@ export const backOff = (fn, timeout = 60000) => {
timeElapsed += nextInterval;
nextInterval = Math.min(nextInterval + nextInterval, maxInterval);
} else {
- reject(new Error('BACKOFF_TIMEOUT'));
+ reject(new Error(BACKOFF_TIMEOUT));
}
};
@@ -697,6 +699,22 @@ export const convertObjectPropsToCamelCase = (obj = {}, options = {}) => {
}, initial);
};
+/**
+ * Converts all the object keys to snake case
+ *
+ * @param {Object} obj Object to transform
+ * @returns {Object}
+ */
+// Follow up to add additional options param:
+// https://gitlab.com/gitlab-org/gitlab/issues/39173
+export const convertObjectPropsToSnakeCase = (obj = {}) =>
+ obj
+ ? Object.entries(obj).reduce(
+ (acc, [key, value]) => ({ ...acc, [convertToSnakeCase(key)]: value }),
+ {},
+ )
+ : {};
+
export const imagePath = imgUrl =>
`${gon.asset_host || ''}${gon.relative_url_root || ''}/assets/${imgUrl}`;
diff --git a/app/assets/javascripts/lib/utils/datetime_utility.js b/app/assets/javascripts/lib/utils/datetime_utility.js
index 28143859e4c..996692bacb3 100644
--- a/app/assets/javascripts/lib/utils/datetime_utility.js
+++ b/app/assets/javascripts/lib/utils/datetime_utility.js
@@ -1,6 +1,6 @@
import $ from 'jquery';
import _ from 'underscore';
-import timeago from 'timeago.js';
+import * as timeago from 'timeago.js';
import dateFormat from 'dateformat';
import { languageCode, s__, __, n__ } from '../../locale';
@@ -92,90 +92,80 @@ export const formatDate = (datetime, format = 'mmm d, yyyy h:MMtt Z') => {
*/
const timeagoLanguageCode = languageCode().replace(/-/g, '_');
-let timeagoInstance;
-
/**
- * Sets a timeago Instance
+ * Registers timeago locales
*/
-export const getTimeago = () => {
- if (!timeagoInstance) {
- const memoizedLocaleRemaining = () => {
- const cache = [];
-
- const timeAgoLocaleRemaining = [
- () => [s__('Timeago|just now'), s__('Timeago|right now')],
- () => [s__('Timeago|just now'), s__('Timeago|%s seconds remaining')],
- () => [s__('Timeago|1 minute ago'), s__('Timeago|1 minute remaining')],
- () => [s__('Timeago|%s minutes ago'), s__('Timeago|%s minutes remaining')],
- () => [s__('Timeago|1 hour ago'), s__('Timeago|1 hour remaining')],
- () => [s__('Timeago|%s hours ago'), s__('Timeago|%s hours remaining')],
- () => [s__('Timeago|1 day ago'), s__('Timeago|1 day remaining')],
- () => [s__('Timeago|%s days ago'), s__('Timeago|%s days remaining')],
- () => [s__('Timeago|1 week ago'), s__('Timeago|1 week remaining')],
- () => [s__('Timeago|%s weeks ago'), s__('Timeago|%s weeks remaining')],
- () => [s__('Timeago|1 month ago'), s__('Timeago|1 month remaining')],
- () => [s__('Timeago|%s months ago'), s__('Timeago|%s months remaining')],
- () => [s__('Timeago|1 year ago'), s__('Timeago|1 year remaining')],
- () => [s__('Timeago|%s years ago'), s__('Timeago|%s years remaining')],
- ];
-
- return (number, index) => {
- if (cache[index]) {
- return cache[index];
- }
- cache[index] = timeAgoLocaleRemaining[index] && timeAgoLocaleRemaining[index]();
- return cache[index];
- };
- };
-
- const memoizedLocale = () => {
- const cache = [];
-
- const timeAgoLocale = [
- () => [s__('Timeago|just now'), s__('Timeago|right now')],
- () => [s__('Timeago|just now'), s__('Timeago|in %s seconds')],
- () => [s__('Timeago|1 minute ago'), s__('Timeago|in 1 minute')],
- () => [s__('Timeago|%s minutes ago'), s__('Timeago|in %s minutes')],
- () => [s__('Timeago|1 hour ago'), s__('Timeago|in 1 hour')],
- () => [s__('Timeago|%s hours ago'), s__('Timeago|in %s hours')],
- () => [s__('Timeago|1 day ago'), s__('Timeago|in 1 day')],
- () => [s__('Timeago|%s days ago'), s__('Timeago|in %s days')],
- () => [s__('Timeago|1 week ago'), s__('Timeago|in 1 week')],
- () => [s__('Timeago|%s weeks ago'), s__('Timeago|in %s weeks')],
- () => [s__('Timeago|1 month ago'), s__('Timeago|in 1 month')],
- () => [s__('Timeago|%s months ago'), s__('Timeago|in %s months')],
- () => [s__('Timeago|1 year ago'), s__('Timeago|in 1 year')],
- () => [s__('Timeago|%s years ago'), s__('Timeago|in %s years')],
- ];
-
- return (number, index) => {
- if (cache[index]) {
- return cache[index];
- }
- cache[index] = timeAgoLocale[index] && timeAgoLocale[index]();
- return cache[index];
- };
- };
-
- timeago.register(timeagoLanguageCode, memoizedLocale());
- timeago.register(`${timeagoLanguageCode}-remaining`, memoizedLocaleRemaining());
-
- timeagoInstance = timeago();
- }
+const memoizedLocaleRemaining = () => {
+ const cache = [];
+
+ const timeAgoLocaleRemaining = [
+ () => [s__('Timeago|just now'), s__('Timeago|right now')],
+ () => [s__('Timeago|just now'), s__('Timeago|%s seconds remaining')],
+ () => [s__('Timeago|1 minute ago'), s__('Timeago|1 minute remaining')],
+ () => [s__('Timeago|%s minutes ago'), s__('Timeago|%s minutes remaining')],
+ () => [s__('Timeago|1 hour ago'), s__('Timeago|1 hour remaining')],
+ () => [s__('Timeago|%s hours ago'), s__('Timeago|%s hours remaining')],
+ () => [s__('Timeago|1 day ago'), s__('Timeago|1 day remaining')],
+ () => [s__('Timeago|%s days ago'), s__('Timeago|%s days remaining')],
+ () => [s__('Timeago|1 week ago'), s__('Timeago|1 week remaining')],
+ () => [s__('Timeago|%s weeks ago'), s__('Timeago|%s weeks remaining')],
+ () => [s__('Timeago|1 month ago'), s__('Timeago|1 month remaining')],
+ () => [s__('Timeago|%s months ago'), s__('Timeago|%s months remaining')],
+ () => [s__('Timeago|1 year ago'), s__('Timeago|1 year remaining')],
+ () => [s__('Timeago|%s years ago'), s__('Timeago|%s years remaining')],
+ ];
+
+ return (number, index) => {
+ if (cache[index]) {
+ return cache[index];
+ }
+ cache[index] = timeAgoLocaleRemaining[index] && timeAgoLocaleRemaining[index]();
+ return cache[index];
+ };
+};
+
+const memoizedLocale = () => {
+ const cache = [];
+
+ const timeAgoLocale = [
+ () => [s__('Timeago|just now'), s__('Timeago|right now')],
+ () => [s__('Timeago|just now'), s__('Timeago|in %s seconds')],
+ () => [s__('Timeago|1 minute ago'), s__('Timeago|in 1 minute')],
+ () => [s__('Timeago|%s minutes ago'), s__('Timeago|in %s minutes')],
+ () => [s__('Timeago|1 hour ago'), s__('Timeago|in 1 hour')],
+ () => [s__('Timeago|%s hours ago'), s__('Timeago|in %s hours')],
+ () => [s__('Timeago|1 day ago'), s__('Timeago|in 1 day')],
+ () => [s__('Timeago|%s days ago'), s__('Timeago|in %s days')],
+ () => [s__('Timeago|1 week ago'), s__('Timeago|in 1 week')],
+ () => [s__('Timeago|%s weeks ago'), s__('Timeago|in %s weeks')],
+ () => [s__('Timeago|1 month ago'), s__('Timeago|in 1 month')],
+ () => [s__('Timeago|%s months ago'), s__('Timeago|in %s months')],
+ () => [s__('Timeago|1 year ago'), s__('Timeago|in 1 year')],
+ () => [s__('Timeago|%s years ago'), s__('Timeago|in %s years')],
+ ];
- return timeagoInstance;
+ return (number, index) => {
+ if (cache[index]) {
+ return cache[index];
+ }
+ cache[index] = timeAgoLocale[index] && timeAgoLocale[index]();
+ return cache[index];
+ };
};
+timeago.register(timeagoLanguageCode, memoizedLocale());
+timeago.register(`${timeagoLanguageCode}-remaining`, memoizedLocaleRemaining());
+
+export const getTimeago = () => timeago;
+
/**
* For the given elements, sets a tooltip with a formatted date.
* @param {JQuery} $timeagoEls
* @param {Boolean} setTimeago
*/
export const localTimeAgo = ($timeagoEls, setTimeago = true) => {
- getTimeago();
-
$timeagoEls.each((i, el) => {
- $(el).text(timeagoInstance.format($(el).attr('datetime'), timeagoLanguageCode));
+ $(el).text(timeago.format($(el).attr('datetime'), timeagoLanguageCode));
});
if (!setTimeago) {
@@ -207,9 +197,7 @@ export const timeFor = (time, expiredLabel) => {
if (new Date(time) < new Date()) {
return expiredLabel || s__('Timeago|Past due');
}
- return getTimeago()
- .format(time, `${timeagoLanguageCode}-remaining`)
- .trim();
+ return timeago.format(time, `${timeagoLanguageCode}-remaining`).trim();
};
export const getDayDifference = (a, b) => {
@@ -459,7 +447,7 @@ export const parsePikadayDate = dateString => {
/**
* Used `onSelect` method in pickaday
* @param {Date} date UTC format
- * @return {String} Date formated in yyyy-mm-dd
+ * @return {String} Date formatted in yyyy-mm-dd
*/
export const pikadayToString = date => {
const day = pad(date.getDate());
@@ -525,8 +513,8 @@ export const stringifyTime = (timeObject, fullNameFormat = false) => {
if (fullNameFormat && isNonZero) {
// Remove traling 's' if unit value is singular
- const formatedUnitName = unitValue > 1 ? unitName : unitName.replace(/s$/, '');
- return `${memo} ${unitValue} ${formatedUnitName}`;
+ const formattedUnitName = unitValue > 1 ? unitName : unitName.replace(/s$/, '');
+ return `${memo} ${unitValue} ${formattedUnitName}`;
}
return isNonZero ? `${memo} ${unitValue}${unitName.charAt(0)}` : memo;
@@ -602,3 +590,19 @@ export const getDatesInRange = (d1, d2, formatter = x => x) => {
* @return {Number} number of milliseconds
*/
export const secondsToMilliseconds = seconds => seconds * 1000;
+
+/**
+ * Converts the supplied number of seconds to days.
+ *
+ * @param {Number} seconds
+ * @return {Number} number of days
+ */
+export const secondsToDays = seconds => Math.round(seconds / 86400);
+
+/**
+ * Returns the date after the date provided
+ *
+ * @param {Date} date the initial date
+ * @return {Date} the date following the date provided
+ */
+export const dayAfter = date => new Date(newDate(date).setDate(date.getDate() + 1));
diff --git a/app/assets/javascripts/lib/utils/http_status.js b/app/assets/javascripts/lib/utils/http_status.js
index 5e5d10883a3..1c7d59054dc 100644
--- a/app/assets/javascripts/lib/utils/http_status.js
+++ b/app/assets/javascripts/lib/utils/http_status.js
@@ -21,6 +21,7 @@ const httpStatusCodes = {
NOT_FOUND: 404,
GONE: 410,
UNPROCESSABLE_ENTITY: 422,
+ SERVICE_UNAVAILABLE: 503,
};
export const successCodes = [
diff --git a/app/assets/javascripts/lib/utils/logoutput_behaviours.js b/app/assets/javascripts/lib/utils/logoutput_behaviours.js
deleted file mode 100644
index 41b57025cc9..00000000000
--- a/app/assets/javascripts/lib/utils/logoutput_behaviours.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import $ from 'jquery';
-import {
- canScroll,
- isScrolledToBottom,
- isScrolledToTop,
- isScrolledToMiddle,
- toggleDisableButton,
-} from './scroll_utils';
-
-export default class LogOutputBehaviours {
- constructor() {
- // Scroll buttons
- this.$scrollTopBtn = $('.js-scroll-up');
- this.$scrollBottomBtn = $('.js-scroll-down');
-
- this.$scrollTopBtn.off('click').on('click', this.scrollToTop.bind(this));
- this.$scrollBottomBtn.off('click').on('click', this.scrollToBottom.bind(this));
- }
-
- toggleScroll() {
- if (canScroll()) {
- if (isScrolledToMiddle()) {
- // User is in the middle of the log
-
- toggleDisableButton(this.$scrollTopBtn, false);
- toggleDisableButton(this.$scrollBottomBtn, false);
- } else if (isScrolledToTop()) {
- // User is at Top of Log
-
- toggleDisableButton(this.$scrollTopBtn, true);
- toggleDisableButton(this.$scrollBottomBtn, false);
- } else if (isScrolledToBottom()) {
- // User is at the bottom of the build log.
-
- toggleDisableButton(this.$scrollTopBtn, false);
- toggleDisableButton(this.$scrollBottomBtn, true);
- }
- } else {
- toggleDisableButton(this.$scrollTopBtn, true);
- toggleDisableButton(this.$scrollBottomBtn, true);
- }
- }
-
- toggleScrollAnimation(toggle) {
- this.$scrollBottomBtn.toggleClass('animate', toggle);
- }
-}
diff --git a/app/assets/javascripts/lib/utils/suppress_ajax_errors_during_navigation.js b/app/assets/javascripts/lib/utils/suppress_ajax_errors_during_navigation.js
index 4c61da9b862..fb4d9b7de9c 100644
--- a/app/assets/javascripts/lib/utils/suppress_ajax_errors_during_navigation.js
+++ b/app/assets/javascripts/lib/utils/suppress_ajax_errors_during_navigation.js
@@ -2,8 +2,8 @@
* An Axios error interceptor that suppresses AJAX errors caused
* by the request being cancelled when the user navigates to a new page
*/
-export default (err, isUserNavigating, featureFlagEnabled) => {
- if (featureFlagEnabled && isUserNavigating && err.code === 'ECONNABORTED') {
+export default (err, isUserNavigating) => {
+ if (isUserNavigating && err.code === 'ECONNABORTED') {
// If the user is navigating away from the current page,
// prevent .then() and .catch() handlers from being
// called by returning a Promise that never resolves
diff --git a/app/assets/javascripts/lib/utils/text_markdown.js b/app/assets/javascripts/lib/utils/text_markdown.js
index 2e0270ee42f..cccf9ad311c 100644
--- a/app/assets/javascripts/lib/utils/text_markdown.js
+++ b/app/assets/javascripts/lib/utils/text_markdown.js
@@ -1,4 +1,4 @@
-/* eslint-disable func-names, no-var, no-param-reassign, one-var, operator-assignment, no-else-return, consistent-return */
+/* eslint-disable func-names, no-param-reassign, operator-assignment, no-else-return, consistent-return */
import $ from 'jquery';
import { insertText } from '~/lib/utils/common_utils';
@@ -13,8 +13,7 @@ function addBlockTags(blockTag, selected) {
}
function lineBefore(text, textarea) {
- var split;
- split = text
+ const split = text
.substring(0, textarea.selectionStart)
.trim()
.split('\n');
@@ -80,7 +79,7 @@ function moveCursor({
editorSelectionStart,
editorSelectionEnd,
}) {
- var pos;
+ let pos;
if (textArea && !textArea.setSelectionRange) {
return;
}
@@ -132,18 +131,13 @@ export function insertMarkdownText({
select,
editor,
}) {
- var textToInsert,
- selectedSplit,
- startChar,
- removedLastNewLine,
- removedFirstNewLine,
- currentLineEmpty,
- lastNewLine,
- editorSelectionStart,
- editorSelectionEnd;
- removedLastNewLine = false;
- removedFirstNewLine = false;
- currentLineEmpty = false;
+ let removedLastNewLine = false;
+ let removedFirstNewLine = false;
+ let currentLineEmpty = false;
+ let editorSelectionStart;
+ let editorSelectionEnd;
+ let lastNewLine;
+ let textToInsert;
if (editor) {
const selectionRange = editor.getSelectionRange();
@@ -186,7 +180,7 @@ export function insertMarkdownText({
}
}
- selectedSplit = selected.split('\n');
+ const selectedSplit = selected.split('\n');
if (editor && !wrap) {
lastNewLine = editor.getValue().split('\n')[editorSelectionStart.row];
@@ -207,8 +201,7 @@ export function insertMarkdownText({
(textArea && textArea.selectionStart === 0) ||
(editor && editorSelectionStart.column === 0 && editorSelectionStart.row === 0);
- startChar = !wrap && !currentLineEmpty && !isBeginning ? '\n' : '';
-
+ const startChar = !wrap && !currentLineEmpty && !isBeginning ? '\n' : '';
const textPlaceholder = '{text}';
if (selectedSplit.length > 1 && (!wrap || (blockTag != null && blockTag !== ''))) {
@@ -263,11 +256,10 @@ export function insertMarkdownText({
}
function updateText({ textArea, tag, cursorOffset, blockTag, wrap, select, tagContent }) {
- var $textArea, selected, text;
- $textArea = $(textArea);
+ const $textArea = $(textArea);
textArea = $textArea.get(0);
- text = $textArea.val();
- selected = selectedText(text, textArea) || tagContent;
+ const text = $textArea.val();
+ const selected = selectedText(text, textArea) || tagContent;
$textArea.focus();
return insertMarkdownText({
textArea,
diff --git a/app/assets/javascripts/lib/utils/text_utility.js b/app/assets/javascripts/lib/utils/text_utility.js
index 0c194d67bce..6bbf118d7d1 100644
--- a/app/assets/javascripts/lib/utils/text_utility.js
+++ b/app/assets/javascripts/lib/utils/text_utility.js
@@ -72,7 +72,7 @@ export const truncate = (string, maxLength) => `${string.substr(0, maxLength - 3
* @param {String} sha
* @returns {String}
*/
-export const truncateSha = sha => sha.substr(0, 8);
+export const truncateSha = sha => sha.substring(0, 8);
const ELLIPSIS_CHAR = '…';
export const truncatePathMiddleToLength = (text, maxWidth) => {
diff --git a/app/assets/javascripts/lib/utils/url_utility.js b/app/assets/javascripts/lib/utils/url_utility.js
index 4be0d05a9b7..d48678c21f6 100644
--- a/app/assets/javascripts/lib/utils/url_utility.js
+++ b/app/assets/javascripts/lib/utils/url_utility.js
@@ -1,4 +1,6 @@
-import { join as joinPaths } from 'path';
+const PATH_SEPARATOR = '/';
+const PATH_SEPARATOR_LEADING_REGEX = new RegExp(`^${PATH_SEPARATOR}+`);
+const PATH_SEPARATOR_ENDING_REGEX = new RegExp(`${PATH_SEPARATOR}+$`);
// Returns a decoded url parameter value
// - Treats '+' as '%20'
@@ -6,6 +8,37 @@ function decodeUrlParameter(val) {
return decodeURIComponent(val.replace(/\+/g, '%20'));
}
+function cleanLeadingSeparator(path) {
+ return path.replace(PATH_SEPARATOR_LEADING_REGEX, '');
+}
+
+function cleanEndingSeparator(path) {
+ return path.replace(PATH_SEPARATOR_ENDING_REGEX, '');
+}
+
+/**
+ * Safely joins the given paths which might both start and end with a `/`
+ *
+ * Example:
+ * - `joinPaths('abc/', '/def') === 'abc/def'`
+ * - `joinPaths(null, 'abc/def', 'zoo) === 'abc/def/zoo'`
+ *
+ * @param {...String} paths
+ * @returns {String}
+ */
+export function joinPaths(...paths) {
+ return paths.reduce((acc, path) => {
+ if (!path) {
+ return acc;
+ }
+ if (!acc) {
+ return path;
+ }
+
+ return [cleanEndingSeparator(acc), PATH_SEPARATOR, cleanLeadingSeparator(path)].join('');
+ }, '');
+}
+
// Returns an array containing the value(s) of the
// of the key passed as an argument
export function getParameterValues(sParam, url = window.location) {
@@ -181,4 +214,71 @@ export function getWebSocketUrl(path) {
return `${getWebSocketProtocol()}//${joinPaths(window.location.host, path)}`;
}
-export { joinPaths };
+/**
+ * Convert search query into an object
+ *
+ * @param {String} query from "document.location.search"
+ * @returns {Object}
+ *
+ * ex: "?one=1&two=2" into {one: 1, two: 2}
+ */
+export function queryToObject(query) {
+ const removeQuestionMarkFromQuery = String(query).startsWith('?') ? query.slice(1) : query;
+ return removeQuestionMarkFromQuery.split('&').reduce((accumulator, curr) => {
+ const p = curr.split('=');
+ accumulator[decodeURIComponent(p[0])] = decodeURIComponent(p[1]);
+ return accumulator;
+ }, {});
+}
+
+/**
+ * Convert search query object back into a search query
+ *
+ * @param {Object} obj that needs to be converted
+ * @returns {String}
+ *
+ * ex: {one: 1, two: 2} into "one=1&two=2"
+ *
+ */
+export function objectToQuery(obj) {
+ return Object.keys(obj)
+ .map(k => `${encodeURIComponent(k)}=${encodeURIComponent(obj[k])}`)
+ .join('&');
+}
+
+/**
+ * Sets query params for a given URL
+ * It adds new query params, updates existing params with a new value and removes params with value null/undefined
+ *
+ * @param {Object} params The query params to be set/updated
+ * @param {String} url The url to be operated on
+ * @param {Boolean} clearParams Indicates whether existing query params should be removed or not
+ * @returns {String} A copy of the original with the updated query params
+ */
+export const setUrlParams = (params, url = window.location.href, clearParams = false) => {
+ const urlObj = new URL(url);
+ const queryString = urlObj.search;
+ const searchParams = clearParams ? new URLSearchParams('') : new URLSearchParams(queryString);
+
+ Object.keys(params).forEach(key => {
+ if (params[key] === null || params[key] === undefined) {
+ searchParams.delete(key);
+ } else if (Array.isArray(params[key])) {
+ params[key].forEach((val, idx) => {
+ if (idx === 0) {
+ searchParams.set(key, val);
+ } else {
+ searchParams.append(key, val);
+ }
+ });
+ } else {
+ searchParams.set(key, params[key]);
+ }
+ });
+
+ urlObj.search = searchParams.toString();
+
+ return urlObj.toString();
+};
+
+export const escapeFileUrl = fileUrl => encodeURIComponent(fileUrl).replace(/%2F/g, '/');
diff --git a/app/assets/javascripts/main.js b/app/assets/javascripts/main.js
index 465c9a362ba..674415c9d01 100644
--- a/app/assets/javascripts/main.js
+++ b/app/assets/javascripts/main.js
@@ -222,6 +222,7 @@ document.addEventListener('DOMContentLoaded', () => {
}
});
+ // eslint-disable-next-line no-jquery/no-ajax-events
$(document).ajaxError((e, xhrObj) => {
const ref = xhrObj.status;
diff --git a/app/assets/javascripts/monitoring/components/charts/anomaly.vue b/app/assets/javascripts/monitoring/components/charts/anomaly.vue
index 8eeac737a11..1df7ca37a98 100644
--- a/app/assets/javascripts/monitoring/components/charts/anomaly.vue
+++ b/app/assets/javascripts/monitoring/components/charts/anomaly.vue
@@ -29,7 +29,7 @@ const AREA_COLOR_RGBA = `rgba(${hexToRgb(AREA_COLOR).join(',')},${AREA_OPACITY})
* time series chart, the boundary band shows the normal
* range of values the metric should take.
*
- * This component accepts 3 queries, which contain the
+ * This component accepts 3 metrics, which contain the
* "metric", "upper" limit and "lower" limit.
*
* The upper and lower series are "stacked areas" visually
@@ -62,10 +62,11 @@ export default {
},
computed: {
series() {
- return this.graphData.queries.map(query => {
- const values = query.result[0] ? query.result[0].values : [];
+ return this.graphData.metrics.map(metric => {
+ const values = metric.result && metric.result[0] ? metric.result[0].values : [];
return {
- label: query.label,
+ label: metric.label,
+ // NaN values may disrupt avg., max. & min. calculations in the legend, filter them out
data: values.filter(([, value]) => !Number.isNaN(value)),
};
});
@@ -82,7 +83,7 @@ export default {
return min < 0 ? -min : 0;
},
metricData() {
- const originalMetricQuery = this.graphData.queries[0];
+ const originalMetricQuery = this.graphData.metrics[0];
const metricQuery = { ...originalMetricQuery };
metricQuery.result[0].values = metricQuery.result[0].values.map(([x, y]) => [
@@ -92,7 +93,7 @@ export default {
return {
...this.graphData,
type: 'line-chart',
- queries: [metricQuery],
+ metrics: [metricQuery],
};
},
metricSeriesConfig() {
diff --git a/app/assets/javascripts/monitoring/components/charts/column.vue b/app/assets/javascripts/monitoring/components/charts/column.vue
index ee6aaeb7dde..eb407ad1d7f 100644
--- a/app/assets/javascripts/monitoring/components/charts/column.vue
+++ b/app/assets/javascripts/monitoring/components/charts/column.vue
@@ -32,8 +32,8 @@ export default {
},
computed: {
chartData() {
- const queryData = this.graphData.queries.reduce((acc, query) => {
- const series = makeDataSeries(query.result, {
+ const queryData = this.graphData.metrics.reduce((acc, query) => {
+ const series = makeDataSeries(query.result || [], {
name: this.formatLegendLabel(query),
});
@@ -45,13 +45,13 @@ export default {
};
},
xAxisTitle() {
- return this.graphData.queries[0].result[0].x_label !== undefined
- ? this.graphData.queries[0].result[0].x_label
+ return this.graphData.metrics[0].result[0].x_label !== undefined
+ ? this.graphData.metrics[0].result[0].x_label
: '';
},
yAxisTitle() {
- return this.graphData.queries[0].result[0].y_label !== undefined
- ? this.graphData.queries[0].result[0].y_label
+ return this.graphData.metrics[0].result[0].y_label !== undefined
+ ? this.graphData.metrics[0].result[0].y_label
: '';
},
xAxisType() {
diff --git a/app/assets/javascripts/monitoring/components/charts/heatmap.vue b/app/assets/javascripts/monitoring/components/charts/heatmap.vue
index b8158247e49..6ab5aaeba1d 100644
--- a/app/assets/javascripts/monitoring/components/charts/heatmap.vue
+++ b/app/assets/javascripts/monitoring/components/charts/heatmap.vue
@@ -24,7 +24,7 @@ export default {
},
computed: {
chartData() {
- return this.queries.result.reduce(
+ return this.metrics.result.reduce(
(acc, result, i) => [...acc, ...result.values.map((value, j) => [i, j, value[1]])],
[],
);
@@ -36,7 +36,7 @@ export default {
return this.graphData.y_label || '';
},
xAxisLabels() {
- return this.queries.result.map(res => Object.values(res.metric)[0]);
+ return this.metrics.result.map(res => Object.values(res.metric)[0]);
},
yAxisLabels() {
return this.result.values.map(val => {
@@ -46,10 +46,10 @@ export default {
});
},
result() {
- return this.queries.result[0];
+ return this.metrics.result[0];
},
- queries() {
- return this.graphData.queries[0];
+ metrics() {
+ return this.graphData.metrics[0];
},
},
};
diff --git a/app/assets/javascripts/monitoring/components/charts/single_stat.vue b/app/assets/javascripts/monitoring/components/charts/single_stat.vue
index 076682820e6..e75ddb05808 100644
--- a/app/assets/javascripts/monitoring/components/charts/single_stat.vue
+++ b/app/assets/javascripts/monitoring/components/charts/single_stat.vue
@@ -17,7 +17,7 @@ export default {
},
computed: {
queryInfo() {
- return this.graphData.queries[0];
+ return this.graphData.metrics[0];
},
engineeringNotation() {
return `${roundOffFloat(this.queryInfo.result[0].value[1], 1)}${this.queryInfo.unit}`;
diff --git a/app/assets/javascripts/monitoring/components/charts/time_series.vue b/app/assets/javascripts/monitoring/components/charts/time_series.vue
index 6a88c8a5ee3..0d442f14aea 100644
--- a/app/assets/javascripts/monitoring/components/charts/time_series.vue
+++ b/app/assets/javascripts/monitoring/components/charts/time_series.vue
@@ -1,9 +1,9 @@
<script>
-import { s__, __ } from '~/locale';
import _ from 'underscore';
import { GlLink, GlButton, GlTooltip, GlResizeObserverDirective } from '@gitlab/ui';
import { GlAreaChart, GlLineChart, GlChartSeriesLabel } from '@gitlab/ui/dist/charts';
import dateFormat from 'dateformat';
+import { s__, __ } from '~/locale';
import { roundOffFloat } from '~/lib/utils/common_utils';
import { getSvgIconPathContent } from '~/lib/utils/icon_utils';
import Icon from '~/vue_shared/components/icon.vue';
@@ -105,7 +105,7 @@ export default {
// Transforms & supplements query data to render appropriate labels & styles
// Input: [{ queryAttributes1 }, { queryAttributes2 }]
// Output: [{ seriesAttributes1 }, { seriesAttributes2 }]
- return this.graphData.queries.reduce((acc, query) => {
+ return this.graphData.metrics.reduce((acc, query) => {
const { appearance } = query;
const lineType =
appearance && appearance.line && appearance.line.type
@@ -121,7 +121,7 @@ export default {
? appearance.area.opacity
: undefined,
};
- const series = makeDataSeries(query.result, {
+ const series = makeDataSeries(query.result || [], {
name: this.formatLegendLabel(query),
lineStyle: {
type: lineType,
@@ -253,23 +253,25 @@ export default {
this.tooltip.title = dateFormat(params.value, dateFormats.default);
this.tooltip.content = [];
params.seriesData.forEach(dataPoint => {
- const [xVal, yVal] = dataPoint.value;
- this.tooltip.isDeployment = dataPoint.componentSubType === graphTypes.deploymentData;
- if (this.tooltip.isDeployment) {
- const [deploy] = this.recentDeployments.filter(
- deployment => deployment.createdAt === xVal,
- );
- this.tooltip.sha = deploy.sha.substring(0, 8);
- this.tooltip.commitUrl = deploy.commitUrl;
- } else {
- const { seriesName, color, dataIndex } = dataPoint;
- const value = yVal.toFixed(3);
- this.tooltip.content.push({
- name: seriesName,
- dataIndex,
- value,
- color,
- });
+ if (dataPoint.value) {
+ const [xVal, yVal] = dataPoint.value;
+ this.tooltip.isDeployment = dataPoint.componentSubType === graphTypes.deploymentData;
+ if (this.tooltip.isDeployment) {
+ const [deploy] = this.recentDeployments.filter(
+ deployment => deployment.createdAt === xVal,
+ );
+ this.tooltip.sha = deploy.sha.substring(0, 8);
+ this.tooltip.commitUrl = deploy.commitUrl;
+ } else {
+ const { seriesName, color, dataIndex } = dataPoint;
+ const value = yVal.toFixed(3);
+ this.tooltip.content.push({
+ name: seriesName,
+ dataIndex,
+ value,
+ color,
+ });
+ }
}
});
},
diff --git a/app/assets/javascripts/monitoring/components/dashboard.vue b/app/assets/javascripts/monitoring/components/dashboard.vue
index 26e2c2568c1..c1ca5449ba3 100644
--- a/app/assets/javascripts/monitoring/components/dashboard.vue
+++ b/app/assets/javascripts/monitoring/components/dashboard.vue
@@ -1,6 +1,6 @@
<script>
import _ from 'underscore';
-import { mapActions, mapState } from 'vuex';
+import { mapActions, mapState, mapGetters } from 'vuex';
import VueDraggable from 'vuedraggable';
import {
GlButton,
@@ -11,28 +11,27 @@ import {
GlModalDirective,
GlTooltipDirective,
} from '@gitlab/ui';
+import PanelType from 'ee_else_ce/monitoring/components/panel_type.vue';
import { s__ } from '~/locale';
import createFlash from '~/flash';
import Icon from '~/vue_shared/components/icon.vue';
import { getParameterValues, mergeUrlParams, redirectTo } from '~/lib/utils/url_utility';
import invalidUrl from '~/lib/utils/invalid_url';
-import PanelType from 'ee_else_ce/monitoring/components/panel_type.vue';
import DateTimePicker from './date_time_picker/date_time_picker.vue';
-import MonitorTimeSeriesChart from './charts/time_series.vue';
-import MonitorSingleStatChart from './charts/single_stat.vue';
import GraphGroup from './graph_group.vue';
import EmptyState from './empty_state.vue';
+import GroupEmptyState from './group_empty_state.vue';
import TrackEventDirective from '~/vue_shared/directives/track_event';
-import { getTimeDiff, isValidDate, downloadCSVOptions, generateLinkToChartOptions } from '../utils';
+import { getTimeDiff, isValidDate, getAddMetricTrackingOptions } from '../utils';
+import { metricStates } from '../constants';
export default {
components: {
VueDraggable,
- MonitorTimeSeriesChart,
- MonitorSingleStatChart,
PanelType,
GraphGroup,
EmptyState,
+ GroupEmptyState,
Icon,
GlButton,
GlDropdown,
@@ -103,6 +102,10 @@ export default {
type: String,
required: true,
},
+ emptyNoDataSmallSvgPath: {
+ type: String,
+ required: true,
+ },
emptyUnableToConnectSvgPath: {
type: String,
required: true,
@@ -180,11 +183,11 @@ export default {
'showEmptyState',
'environments',
'deploymentData',
- 'metricsWithData',
'useDashboardEndpoint',
'allDashboards',
'additionalPanelTypesEnabled',
]),
+ ...mapGetters('monitoringDashboard', ['getMetricStates']),
firstDashboard() {
return this.environmentsEndpoint.length > 0 && this.allDashboards.length > 0
? this.allDashboards[0]
@@ -252,28 +255,18 @@ export default {
'setEndpoints',
'setPanelGroupMetrics',
]),
- chartsWithData(charts) {
- return charts.filter(chart =>
- chart.metrics.some(metric => this.metricsWithData.includes(metric.metric_id)),
- );
- },
- updateMetrics(key, metrics) {
+ updatePanels(key, panels) {
this.setPanelGroupMetrics({
- metrics,
+ panels,
key,
});
},
- removeMetric(key, metrics, graphIndex) {
+ removePanel(key, panels, graphIndex) {
this.setPanelGroupMetrics({
- metrics: metrics.filter((v, i) => i !== graphIndex),
+ panels: panels.filter((v, i) => i !== graphIndex),
key,
});
},
- removeGraph(metrics, graphIndex) {
- // At present graphs will not be removed, they should removed using the vuex store
- // See https://gitlab.com/gitlab-org/gitlab/issues/27835
- metrics.splice(graphIndex, 1);
- },
showInvalidDateError() {
createFlash(s__('Metrics|Link contains an invalid time window.'));
},
@@ -294,14 +287,36 @@ export default {
submitCustomMetricsForm() {
this.$refs.customMetricsForm.submit();
},
- groupHasData(group) {
- return this.chartsWithData(group.metrics).length > 0;
- },
onDateTimePickerApply(timeWindowUrlParams) {
return redirectTo(mergeUrlParams(timeWindowUrlParams, window.location.href));
},
- downloadCSVOptions,
- generateLinkToChartOptions,
+ /**
+ * Return a single empty state for a group.
+ *
+ * If all states are the same a single state is returned to be displayed
+ * Except if the state is OK, in which case the group is displayed.
+ *
+ * @param {String} groupKey - Identifier for group
+ * @returns {String} state code from `metricStates`
+ */
+ groupSingleEmptyState(groupKey) {
+ const states = this.getMetricStates(groupKey);
+ if (states.length === 1 && states[0] !== metricStates.OK) {
+ return states[0];
+ }
+ return null;
+ },
+ /**
+ * A group should be not collapsed if any metric is loaded (OK)
+ *
+ * @param {String} groupKey - Identifier for group
+ * @returns {Boolean} If the group should be collapsed
+ */
+ collapseGroup(groupKey) {
+ // Collapse group if no data is available
+ return !this.getMetricStates(groupKey).includes(metricStates.OK);
+ },
+ getAddMetricTrackingOptions,
},
addMetric: {
title: s__('Metrics|Add metric'),
@@ -393,9 +408,10 @@ export default {
</gl-button>
<gl-button
v-if="addingMetricsAvailable"
+ ref="addMetricBtn"
v-gl-modal="$options.addMetric.modalId"
variant="outline-success"
- class="mr-2 mt-1 js-add-metric-button"
+ class="mr-2 mt-1"
>
{{ $options.addMetric.title }}
</gl-button>
@@ -415,6 +431,8 @@ export default {
<div slot="modal-footer">
<gl-button @click="hideAddMetricModal">{{ __('Cancel') }}</gl-button>
<gl-button
+ ref="submitCustomMetricsFormBtn"
+ v-track-event="getAddMetricTrackingOptions()"
:disabled="!formIsValid"
variant="success"
@click="submitCustomMetricsForm"
@@ -454,42 +472,55 @@ export default {
:key="`${groupData.group}.${groupData.priority}`"
:name="groupData.group"
:show-panels="showPanels"
- :collapse-group="groupHasData(groupData)"
+ :collapse-group="collapseGroup(groupData.key)"
>
- <vue-draggable
- :value="groupData.metrics"
- group="metrics-dashboard"
- :component-data="{ attrs: { class: 'row mx-0 w-100' } }"
- :disabled="!isRearrangingPanels"
- @input="updateMetrics(groupData.key, $event)"
- >
- <div
- v-for="(graphData, graphIndex) in groupData.metrics"
- :key="`panel-type-${graphIndex}`"
- class="col-12 col-lg-6 px-2 mb-2 draggable"
- :class="{ 'draggable-enabled': isRearrangingPanels }"
+ <div v-if="!groupSingleEmptyState(groupData.key)">
+ <vue-draggable
+ :value="groupData.panels"
+ group="metrics-dashboard"
+ :component-data="{ attrs: { class: 'row mx-0 w-100' } }"
+ :disabled="!isRearrangingPanels"
+ @input="updatePanels(groupData.key, $event)"
>
- <div class="position-relative draggable-panel js-draggable-panel">
- <div
- v-if="isRearrangingPanels"
- class="draggable-remove js-draggable-remove p-2 w-100 position-absolute d-flex justify-content-end"
- @click="removeGraph(groupData.metrics, graphIndex)"
- >
- <a class="mx-2 p-2 draggable-remove-link" :aria-label="__('Remove')"
- ><icon name="close"
- /></a>
- </div>
+ <div
+ v-for="(graphData, graphIndex) in groupData.panels"
+ :key="`panel-type-${graphIndex}`"
+ class="col-12 col-lg-6 px-2 mb-2 draggable"
+ :class="{ 'draggable-enabled': isRearrangingPanels }"
+ >
+ <div class="position-relative draggable-panel js-draggable-panel">
+ <div
+ v-if="isRearrangingPanels"
+ class="draggable-remove js-draggable-remove p-2 w-100 position-absolute d-flex justify-content-end"
+ @click="removePanel(groupData.key, groupData.panels, graphIndex)"
+ >
+ <a class="mx-2 p-2 draggable-remove-link" :aria-label="__('Remove')"
+ ><icon name="close"
+ /></a>
+ </div>
- <panel-type
- :clipboard-text="generateLink(groupData.group, graphData.title, graphData.y_label)"
- :graph-data="graphData"
- :alerts-endpoint="alertsEndpoint"
- :prometheus-alerts-available="prometheusAlertsAvailable"
- :index="`${index}-${graphIndex}`"
- />
+ <panel-type
+ :clipboard-text="
+ generateLink(groupData.group, graphData.title, graphData.y_label)
+ "
+ :graph-data="graphData"
+ :alerts-endpoint="alertsEndpoint"
+ :prometheus-alerts-available="prometheusAlertsAvailable"
+ :index="`${index}-${graphIndex}`"
+ />
+ </div>
</div>
- </div>
- </vue-draggable>
+ </vue-draggable>
+ </div>
+ <div v-else class="py-5 col col-sm-10 col-md-8 col-lg-7 col-xl-6">
+ <group-empty-state
+ ref="empty-group"
+ :documentation-path="documentationPath"
+ :settings-path="settingsPath"
+ :selected-state="groupSingleEmptyState(groupData.key)"
+ :svg-path="emptyNoDataSmallSvgPath"
+ />
+ </div>
</graph-group>
</div>
<empty-state
@@ -501,6 +532,7 @@ export default {
:empty-getting-started-svg-path="emptyGettingStartedSvgPath"
:empty-loading-svg-path="emptyLoadingSvgPath"
:empty-no-data-svg-path="emptyNoDataSvgPath"
+ :empty-no-data-small-svg-path="emptyNoDataSmallSvgPath"
:empty-unable-to-connect-svg-path="emptyUnableToConnectSvgPath"
:compact="smallEmptyState"
/>
diff --git a/app/assets/javascripts/monitoring/components/date_time_picker/date_time_picker_input.vue b/app/assets/javascripts/monitoring/components/date_time_picker/date_time_picker_input.vue
index 0388a6190d9..c3beae18726 100644
--- a/app/assets/javascripts/monitoring/components/date_time_picker/date_time_picker_input.vue
+++ b/app/assets/javascripts/monitoring/components/date_time_picker/date_time_picker_input.vue
@@ -1,7 +1,7 @@
<script>
import _ from 'underscore';
-import { s__, sprintf } from '~/locale';
import { GlFormGroup, GlFormInput } from '@gitlab/ui';
+import { s__, sprintf } from '~/locale';
import { dateFormats } from '~/monitoring/constants';
const inputGroupText = {
diff --git a/app/assets/javascripts/monitoring/components/embed.vue b/app/assets/javascripts/monitoring/components/embed.vue
index f75839c7c6b..eb8945c1a57 100644
--- a/app/assets/javascripts/monitoring/components/embed.vue
+++ b/app/assets/javascripts/monitoring/components/embed.vue
@@ -1,8 +1,8 @@
<script>
-import { mapActions, mapState } from 'vuex';
+import { mapActions, mapState, mapGetters } from 'vuex';
+import PanelType from 'ee_else_ce/monitoring/components/panel_type.vue';
import { getParameterValues, removeParams } from '~/lib/utils/url_utility';
import GraphGroup from './graph_group.vue';
-import MonitorTimeSeriesChart from './charts/time_series.vue';
import { sidebarAnimationDuration } from '../constants';
import { getTimeDiff } from '../utils';
@@ -11,7 +11,7 @@ let sidebarMutationObserver;
export default {
components: {
GraphGroup,
- MonitorTimeSeriesChart,
+ PanelType,
},
props: {
dashboardUrl: {
@@ -35,13 +35,17 @@ export default {
};
},
computed: {
- ...mapState('monitoringDashboard', ['dashboard', 'metricsWithData']),
+ ...mapState('monitoringDashboard', ['dashboard']),
+ ...mapGetters('monitoringDashboard', ['metricsWithData']),
charts() {
+ if (!this.dashboard || !this.dashboard.panel_groups) {
+ return [];
+ }
const groupWithMetrics = this.dashboard.panel_groups.find(group =>
- group.metrics.find(chart => this.chartHasData(chart)),
- ) || { metrics: [] };
+ group.panels.find(chart => this.chartHasData(chart)),
+ ) || { panels: [] };
- return groupWithMetrics.metrics.filter(chart => this.chartHasData(chart));
+ return groupWithMetrics.panels.filter(chart => this.chartHasData(chart));
},
isSingleChart() {
return this.charts.length === 1;
@@ -70,7 +74,7 @@ export default {
'setShowErrorBanner',
]),
chartHasData(chart) {
- return chart.metrics.some(metric => this.metricsWithData.includes(metric.metric_id));
+ return chart.metrics.some(metric => this.metricsWithData().includes(metric.metric_id));
},
onSidebarMutation() {
setTimeout(() => {
@@ -89,16 +93,12 @@ export default {
<template>
<div class="metrics-embed" :class="{ 'd-inline-flex col-lg-6 p-0': isSingleChart }">
<div v-if="charts.length" class="row w-100 m-n2 pb-4">
- <monitor-time-series-chart
- v-for="graphData in charts"
- :key="graphData.title"
+ <panel-type
+ v-for="(graphData, graphIndex) in charts"
+ :key="`panel-type-${graphIndex}`"
class="w-100"
:graph-data="graphData"
- :container-width="elWidth"
:group-id="dashboardUrl"
- :project-path="null"
- :show-border="true"
- :single-embed="isSingleChart"
/>
</div>
</div>
diff --git a/app/assets/javascripts/monitoring/components/empty_state.vue b/app/assets/javascripts/monitoring/components/empty_state.vue
index 1bb40447a3e..d3157b731b2 100644
--- a/app/assets/javascripts/monitoring/components/empty_state.vue
+++ b/app/assets/javascripts/monitoring/components/empty_state.vue
@@ -1,6 +1,6 @@
<script>
-import { __ } from '~/locale';
import { GlEmptyState } from '@gitlab/ui';
+import { __ } from '~/locale';
export default {
components: {
@@ -37,6 +37,10 @@ export default {
type: String,
required: true,
},
+ emptyNoDataSmallSvgPath: {
+ type: String,
+ required: true,
+ },
emptyUnableToConnectSvgPath: {
type: String,
required: true,
diff --git a/app/assets/javascripts/monitoring/components/graph_group.vue b/app/assets/javascripts/monitoring/components/graph_group.vue
index 3cb6ccb64b1..5a7981b6534 100644
--- a/app/assets/javascripts/monitoring/components/graph_group.vue
+++ b/app/assets/javascripts/monitoring/components/graph_group.vue
@@ -15,34 +15,44 @@ export default {
required: false,
default: true,
},
+ /**
+ * Initial value of collapse on mount.
+ */
collapseGroup: {
type: Boolean,
- required: true,
+ required: false,
+ default: false,
},
},
data() {
return {
- showGroup: true,
+ isCollapsed: this.collapseGroup,
};
},
computed: {
caretIcon() {
- return this.collapseGroup && this.showGroup ? 'angle-down' : 'angle-right';
+ return this.isCollapsed ? 'angle-right' : 'angle-down';
},
},
- created() {
- this.showGroup = this.collapseGroup;
+ watch: {
+ collapseGroup(val) {
+ // Respond to changes in collapseGroup but do not
+ // collapse it once was opened by the user.
+ if (this.showPanels && !val) {
+ this.isCollapsed = false;
+ }
+ },
},
methods: {
collapse() {
- this.showGroup = !this.showGroup;
+ this.isCollapsed = !this.isCollapsed;
},
},
};
</script>
<template>
- <div v-if="showPanels" class="card prometheus-panel">
+ <div v-if="showPanels" ref="graph-group" class="card prometheus-panel">
<div class="card-header d-flex align-items-center">
<h4 class="flex-grow-1">{{ name }}</h4>
<a role="button" class="js-graph-group-toggle" @click="collapse">
@@ -50,12 +60,12 @@ export default {
</a>
</div>
<div
- v-if="collapseGroup"
- v-show="collapseGroup && showGroup"
+ v-show="!isCollapsed"
+ ref="graph-group-content"
class="card-body prometheus-graph-group p-0"
>
<slot></slot>
</div>
</div>
- <div v-else class="prometheus-graph-group"><slot></slot></div>
+ <div v-else ref="graph-group-content" class="prometheus-graph-group"><slot></slot></div>
</template>
diff --git a/app/assets/javascripts/monitoring/components/group_empty_state.vue b/app/assets/javascripts/monitoring/components/group_empty_state.vue
new file mode 100644
index 00000000000..dee4e5998ee
--- /dev/null
+++ b/app/assets/javascripts/monitoring/components/group_empty_state.vue
@@ -0,0 +1,105 @@
+<script>
+import { __, sprintf } from '~/locale';
+import { GlEmptyState } from '@gitlab/ui';
+import { metricStates } from '../constants';
+
+export default {
+ components: {
+ GlEmptyState,
+ },
+ props: {
+ documentationPath: {
+ type: String,
+ required: true,
+ },
+ settingsPath: {
+ type: String,
+ required: true,
+ },
+ selectedState: {
+ type: String,
+ required: true,
+ },
+ svgPath: {
+ type: String,
+ required: true,
+ },
+ },
+ data() {
+ const documentationLink = `<a href="${this.documentationPath}">${__('More information')}</a>`;
+ return {
+ states: {
+ [metricStates.NO_DATA]: {
+ title: __('No data to display'),
+ slottedDescription: sprintf(
+ __(
+ 'The data source is connected, but there is no data to display. %{documentationLink}',
+ ),
+ { documentationLink },
+ false,
+ ),
+ },
+ [metricStates.TIMEOUT]: {
+ title: __('Connection timed out'),
+ slottedDescription: sprintf(
+ __(
+ "Charts can't be displayed as the request for data has timed out. %{documentationLink}",
+ ),
+ { documentationLink },
+ false,
+ ),
+ },
+ [metricStates.CONNECTION_FAILED]: {
+ title: __('Connection failed'),
+ description: __(`We couldn't reach the Prometheus server.
+ Either the server no longer exists or the configuration details need updating.`),
+ buttonText: __('Verify configuration'),
+ buttonPath: this.settingsPath,
+ },
+ [metricStates.BAD_QUERY]: {
+ title: __('Query cannot be processed'),
+ slottedDescription: sprintf(
+ __(
+ `The Prometheus server responded with "bad request".
+ Please check your queries are correct and are supported in your Prometheus version. %{documentationLink}`,
+ ),
+ { documentationLink },
+ false,
+ ),
+ buttonText: __('Verify configuration'),
+ buttonPath: this.settingsPath,
+ },
+ [metricStates.LOADING]: {
+ title: __('Waiting for performance data'),
+ description: __(`Creating graphs uses the data from the Prometheus server.
+ If this takes a long time, ensure that data is available.`),
+ },
+ [metricStates.UNKNOWN_ERROR]: {
+ title: __('An error has occurred'),
+ description: __('An error occurred while loading the data. Please try again.'),
+ },
+ },
+ };
+ },
+ computed: {
+ currentState() {
+ return this.states[this.selectedState] || this.states[metricStates.UNKNOWN_ERROR];
+ },
+ },
+};
+</script>
+
+<template>
+ <gl-empty-state
+ :title="currentState.title"
+ :primary-button-text="currentState.buttonText"
+ :primary-button-link="currentState.buttonPath"
+ :description="currentState.description"
+ :svg-path="svgPath"
+ :compact="true"
+ >
+ <template v-if="currentState.slottedDescription" #description>
+ <div v-html="currentState.slottedDescription"></div>
+ </template>
+ </gl-empty-state>
+</template>
diff --git a/app/assets/javascripts/monitoring/components/panel_type.vue b/app/assets/javascripts/monitoring/components/panel_type.vue
index cafb4b0b479..ec6a41d0540 100644
--- a/app/assets/javascripts/monitoring/components/panel_type.vue
+++ b/app/assets/javascripts/monitoring/components/panel_type.vue
@@ -1,7 +1,6 @@
<script>
import { mapState } from 'vuex';
import _ from 'underscore';
-import { __ } from '~/locale';
import {
GlDropdown,
GlDropdownItem,
@@ -9,6 +8,7 @@ import {
GlModalDirective,
GlTooltipDirective,
} from '@gitlab/ui';
+import { __ } from '~/locale';
import Icon from '~/vue_shared/components/icon.vue';
import MonitorTimeSeriesChart from './charts/time_series.vue';
import MonitorAnomalyChart from './charts/anomaly.vue';
@@ -36,7 +36,8 @@ export default {
props: {
clipboardText: {
type: String,
- required: true,
+ required: false,
+ default: '',
},
graphData: {
type: Object,
@@ -47,6 +48,11 @@ export default {
required: false,
default: '',
},
+ groupId: {
+ type: String,
+ required: false,
+ default: 'panel-type-chart',
+ },
},
computed: {
...mapState('monitoringDashboard', ['deploymentData', 'projectPath']),
@@ -54,10 +60,14 @@ export default {
return IS_EE && this.prometheusAlertsAvailable && this.alertsEndpoint && this.graphData;
},
graphDataHasMetrics() {
- return this.graphData.queries[0].result.length > 0;
+ return (
+ this.graphData.metrics &&
+ this.graphData.metrics[0].result &&
+ this.graphData.metrics[0].result.length > 0
+ );
},
csvText() {
- const chartData = this.graphData.queries[0].result[0].values;
+ const chartData = this.graphData.metrics[0].result[0].values;
const yLabel = this.graphData.y_label;
const header = `timestamp,${yLabel}\r\n`; // eslint-disable-line @gitlab/i18n/no-non-i18n-strings
return chartData.reduce((csv, data) => {
@@ -112,21 +122,21 @@ export default {
:graph-data="graphData"
:deployment-data="deploymentData"
:project-path="projectPath"
- :thresholds="getGraphAlertValues(graphData.queries)"
- group-id="panel-type-chart"
+ :thresholds="getGraphAlertValues(graphData.metrics)"
+ :group-id="groupId"
>
<div class="d-flex align-items-center">
<alert-widget
v-if="alertWidgetAvailable && graphData"
:modal-id="`alert-modal-${index}`"
:alerts-endpoint="alertsEndpoint"
- :relevant-queries="graphData.queries"
- :alerts-to-manage="getGraphAlerts(graphData.queries)"
+ :relevant-queries="graphData.metrics"
+ :alerts-to-manage="getGraphAlerts(graphData.metrics)"
@setAlerts="setAlerts"
/>
<gl-dropdown
v-gl-tooltip
- class="mx-2"
+ class="ml-auto mx-3"
toggle-class="btn btn-transparent border-0"
:right="true"
:no-caret="true"
@@ -143,6 +153,7 @@ export default {
{{ __('Download CSV') }}
</gl-dropdown-item>
<gl-dropdown-item
+ v-if="clipboardText"
v-track-event="generateLinkToChartOptions(clipboardText)"
class="js-chart-link"
:data-clipboard-text="clipboardText"
diff --git a/app/assets/javascripts/monitoring/constants.js b/app/assets/javascripts/monitoring/constants.js
index 1a1fcdd0e66..398b45b9012 100644
--- a/app/assets/javascripts/monitoring/constants.js
+++ b/app/assets/javascripts/monitoring/constants.js
@@ -1,5 +1,52 @@
import { __ } from '~/locale';
+export const PROMETHEUS_TIMEOUT = 120000; // TWO_MINUTES
+
+/**
+ * States and error states in Prometheus Queries (PromQL) for metrics
+ */
+export const metricStates = {
+ /**
+ * Metric data is available
+ */
+ OK: 'OK',
+
+ /**
+ * Metric data is being fetched
+ */
+ LOADING: 'LOADING',
+
+ /**
+ * Connection timed out to prometheus server
+ * the timeout is set to PROMETHEUS_TIMEOUT
+ *
+ */
+ TIMEOUT: 'TIMEOUT',
+
+ /**
+ * The prometheus server replies with an empty data set
+ */
+ NO_DATA: 'NO_DATA',
+
+ /**
+ * The prometheus server cannot be reached
+ */
+ CONNECTION_FAILED: 'CONNECTION_FAILED',
+
+ /**
+ * The prometheus server was reached but it cannot process
+ * the query. This can happen for several reasons:
+ * - PromQL syntax is incorrect
+ * - An operator is not supported
+ */
+ BAD_QUERY: 'BAD_QUERY',
+
+ /**
+ * No specific reason found for error
+ */
+ UNKNOWN_ERROR: 'UNKNOWN_ERROR',
+};
+
export const sidebarAnimationDuration = 300; // milliseconds.
export const chartHeight = 300;
diff --git a/app/assets/javascripts/monitoring/monitoring_bundle.js b/app/assets/javascripts/monitoring/monitoring_bundle.js
index a14145d480b..d296f5b7a66 100644
--- a/app/assets/javascripts/monitoring/monitoring_bundle.js
+++ b/app/assets/javascripts/monitoring/monitoring_bundle.js
@@ -1,8 +1,8 @@
import Vue from 'vue';
import { GlToast } from '@gitlab/ui';
+import Dashboard from 'ee_else_ce/monitoring/components/dashboard.vue';
import { parseBoolean } from '~/lib/utils/common_utils';
import { getParameterValues } from '~/lib/utils/url_utility';
-import Dashboard from 'ee_else_ce/monitoring/components/dashboard.vue';
import store from './stores';
Vue.use(GlToast);
diff --git a/app/assets/javascripts/monitoring/monitoring_tracking_helper.js b/app/assets/javascripts/monitoring/monitoring_tracking_helper.js
new file mode 100644
index 00000000000..5ae1eca10de
--- /dev/null
+++ b/app/assets/javascripts/monitoring/monitoring_tracking_helper.js
@@ -0,0 +1,10 @@
+import Tracking from '~/tracking';
+
+const trackDashboardLoad = ({ label, value }) =>
+ Tracking.event(document.body.dataset.page, 'dashboard_fetch', {
+ label,
+ property: 'count',
+ value,
+ });
+
+export default trackDashboardLoad;
diff --git a/app/assets/javascripts/monitoring/stores/actions.js b/app/assets/javascripts/monitoring/stores/actions.js
index 6a8e3cc82f5..1cb82ce0083 100644
--- a/app/assets/javascripts/monitoring/stores/actions.js
+++ b/app/assets/javascripts/monitoring/stores/actions.js
@@ -1,30 +1,25 @@
import * as types from './mutation_types';
import axios from '~/lib/utils/axios_utils';
import createFlash from '~/flash';
+import trackDashboardLoad from '../monitoring_tracking_helper';
import statusCodes from '../../lib/utils/http_status';
import { backOff } from '../../lib/utils/common_utils';
-import { s__, __ } from '../../locale';
+import { s__, sprintf } from '../../locale';
-const MAX_REQUESTS = 3;
+import { PROMETHEUS_TIMEOUT } from '../constants';
-export function backOffRequest(makeRequestCallback) {
- let requestCounter = 0;
+function backOffRequest(makeRequestCallback) {
return backOff((next, stop) => {
makeRequestCallback()
.then(resp => {
if (resp.status === statusCodes.NO_CONTENT) {
- requestCounter += 1;
- if (requestCounter < MAX_REQUESTS) {
- next();
- } else {
- stop(new Error(__('Failed to connect to the prometheus server')));
- }
+ next();
} else {
stop(resp);
}
})
.catch(stop);
- });
+ }, PROMETHEUS_TIMEOUT);
}
export const setGettingStartedEmptyState = ({ commit }) => {
@@ -45,17 +40,12 @@ export const requestMetricsDashboard = ({ commit }) => {
export const receiveMetricsDashboardSuccess = ({ commit, dispatch }, { response, params }) => {
commit(types.SET_ALL_DASHBOARDS, response.all_dashboards);
commit(types.RECEIVE_METRICS_DATA_SUCCESS, response.dashboard.panel_groups);
- dispatch('fetchPrometheusMetrics', params);
+ return dispatch('fetchPrometheusMetrics', params);
};
export const receiveMetricsDashboardFailure = ({ commit }, error) => {
commit(types.RECEIVE_METRICS_DATA_FAILURE, error);
};
-export const requestMetricsData = ({ commit }) => commit(types.REQUEST_METRICS_DATA);
-export const receiveMetricsDataSuccess = ({ commit }, data) =>
- commit(types.RECEIVE_METRICS_DATA_SUCCESS, data);
-export const receiveMetricsDataFailure = ({ commit }, error) =>
- commit(types.RECEIVE_METRICS_DATA_FAILURE, error);
export const receiveDeploymentsDataSuccess = ({ commit }, data) =>
commit(types.RECEIVE_DEPLOYMENTS_DATA_SUCCESS, data);
export const receiveDeploymentsDataFailure = ({ commit }) =>
@@ -83,16 +73,22 @@ export const fetchDashboard = ({ state, dispatch }, params) => {
return backOffRequest(() => axios.get(state.dashboardEndpoint, { params }))
.then(resp => resp.data)
- .then(response => {
- dispatch('receiveMetricsDashboardSuccess', {
- response,
- params,
- });
- })
- .catch(error => {
- dispatch('receiveMetricsDashboardFailure', error);
- if (state.setShowErrorBanner) {
- createFlash(s__('Metrics|There was an error while retrieving metrics'));
+ .then(response => dispatch('receiveMetricsDashboardSuccess', { response, params }))
+ .catch(e => {
+ dispatch('receiveMetricsDashboardFailure', e);
+ if (state.showErrorBanner) {
+ if (e.response.data && e.response.data.message) {
+ const { message } = e.response.data;
+ createFlash(
+ sprintf(
+ s__('Metrics|There was an error while retrieving metrics. %{message}'),
+ { message },
+ false,
+ ),
+ );
+ } else {
+ createFlash(s__('Metrics|There was an error while retrieving metrics'));
+ }
}
});
};
@@ -129,12 +125,20 @@ export const fetchPrometheusMetric = ({ commit }, { metric, params }) => {
step,
};
- return fetchPrometheusResult(metric.prometheus_endpoint_path, queryParams).then(result => {
- commit(types.SET_QUERY_RESULT, { metricId: metric.metric_id, result });
- });
+ commit(types.REQUEST_METRIC_RESULT, { metricId: metric.metric_id });
+
+ return fetchPrometheusResult(metric.prometheus_endpoint_path, queryParams)
+ .then(result => {
+ commit(types.RECEIVE_METRIC_RESULT_SUCCESS, { metricId: metric.metric_id, result });
+ })
+ .catch(error => {
+ commit(types.RECEIVE_METRIC_RESULT_FAILURE, { metricId: metric.metric_id, error });
+ // Continue to throw error so the dashboard can notify using createFlash
+ throw error;
+ });
};
-export const fetchPrometheusMetrics = ({ state, commit, dispatch }, params) => {
+export const fetchPrometheusMetrics = ({ state, commit, dispatch, getters }, params) => {
commit(types.REQUEST_METRICS_DATA);
const promises = [];
@@ -146,18 +150,25 @@ export const fetchPrometheusMetrics = ({ state, commit, dispatch }, params) => {
});
});
- return Promise.all(promises).then(() => {
- if (state.metricsWithData.length === 0) {
- commit(types.SET_NO_DATA_EMPTY_STATE);
- }
- });
+ return Promise.all(promises)
+ .then(() => {
+ const dashboardType = state.currentDashboard === '' ? 'default' : 'custom';
+ trackDashboardLoad({
+ label: `${dashboardType}_metrics_dashboard`,
+ value: getters.metricsWithData().length,
+ });
+ })
+ .catch(() => {
+ createFlash(s__(`Metrics|There was an error while retrieving metrics`), 'warning');
+ });
};
export const fetchDeploymentsData = ({ state, dispatch }) => {
if (!state.deploymentsEndpoint) {
return Promise.resolve([]);
}
- return backOffRequest(() => axios.get(state.deploymentsEndpoint))
+ return axios
+ .get(state.deploymentsEndpoint)
.then(resp => resp.data)
.then(response => {
if (!response || !response.deployments) {
diff --git a/app/assets/javascripts/monitoring/stores/getters.js b/app/assets/javascripts/monitoring/stores/getters.js
new file mode 100644
index 00000000000..a13157c6f87
--- /dev/null
+++ b/app/assets/javascripts/monitoring/stores/getters.js
@@ -0,0 +1,62 @@
+const metricsIdsInPanel = panel =>
+ panel.metrics.filter(metric => metric.metricId && metric.result).map(metric => metric.metricId);
+
+/**
+ * Get all state for metric in the dashboard or a group. The
+ * states are not repeated so the dashboard or group can show
+ * a global state.
+ *
+ * @param {Object} state
+ * @returns {Function} A function that returns an array of
+ * states in all the metric in the dashboard or group.
+ */
+export const getMetricStates = state => groupKey => {
+ let groups = state.dashboard.panel_groups;
+ if (groupKey) {
+ groups = groups.filter(group => group.key === groupKey);
+ }
+
+ const metricStates = groups.reduce((acc, group) => {
+ group.panels.forEach(panel => {
+ panel.metrics.forEach(metric => {
+ if (metric.state) {
+ acc.push(metric.state);
+ }
+ });
+ });
+ return acc;
+ }, []);
+
+ // Deduplicate and sort array
+ return Array.from(new Set(metricStates)).sort();
+};
+
+/**
+ * Getter to obtain the list of metric ids that have data
+ *
+ * Useful to understand which parts of the dashboard should
+ * be displayed. It is a Vuex Method-Style Access getter.
+ *
+ * @param {Object} state
+ * @returns {Function} A function that returns an array of
+ * metrics in the dashboard that contain results, optionally
+ * filtered by group key.
+ */
+export const metricsWithData = state => groupKey => {
+ let groups = state.dashboard.panel_groups;
+ if (groupKey) {
+ groups = groups.filter(group => group.key === groupKey);
+ }
+
+ const res = [];
+ groups.forEach(group => {
+ group.panels.forEach(panel => {
+ res.push(...metricsIdsInPanel(panel));
+ });
+ });
+
+ return res;
+};
+
+// prevent babel-plugin-rewire from generating an invalid default during karma tests
+export default () => {};
diff --git a/app/assets/javascripts/monitoring/stores/index.js b/app/assets/javascripts/monitoring/stores/index.js
index d58398c54ae..c1c466b7cf0 100644
--- a/app/assets/javascripts/monitoring/stores/index.js
+++ b/app/assets/javascripts/monitoring/stores/index.js
@@ -1,6 +1,7 @@
import Vue from 'vue';
import Vuex from 'vuex';
import * as actions from './actions';
+import * as getters from './getters';
import mutations from './mutations';
import state from './state';
@@ -12,6 +13,7 @@ export const createStore = () =>
monitoringDashboard: {
namespaced: true,
actions,
+ getters,
mutations,
state,
},
diff --git a/app/assets/javascripts/monitoring/stores/mutation_types.js b/app/assets/javascripts/monitoring/stores/mutation_types.js
index fa15a2ba800..74068e1d846 100644
--- a/app/assets/javascripts/monitoring/stores/mutation_types.js
+++ b/app/assets/javascripts/monitoring/stores/mutation_types.js
@@ -1,13 +1,19 @@
export const REQUEST_METRICS_DATA = 'REQUEST_METRICS_DATA';
export const RECEIVE_METRICS_DATA_SUCCESS = 'RECEIVE_METRICS_DATA_SUCCESS';
export const RECEIVE_METRICS_DATA_FAILURE = 'RECEIVE_METRICS_DATA_FAILURE';
+
export const REQUEST_DEPLOYMENTS_DATA = 'REQUEST_DEPLOYMENTS_DATA';
export const RECEIVE_DEPLOYMENTS_DATA_SUCCESS = 'RECEIVE_DEPLOYMENTS_DATA_SUCCESS';
export const RECEIVE_DEPLOYMENTS_DATA_FAILURE = 'RECEIVE_DEPLOYMENTS_DATA_FAILURE';
+
export const REQUEST_ENVIRONMENTS_DATA = 'REQUEST_ENVIRONMENTS_DATA';
export const RECEIVE_ENVIRONMENTS_DATA_SUCCESS = 'RECEIVE_ENVIRONMENTS_DATA_SUCCESS';
export const RECEIVE_ENVIRONMENTS_DATA_FAILURE = 'RECEIVE_ENVIRONMENTS_DATA_FAILURE';
-export const SET_QUERY_RESULT = 'SET_QUERY_RESULT';
+
+export const REQUEST_METRIC_RESULT = 'REQUEST_METRIC_RESULT';
+export const RECEIVE_METRIC_RESULT_SUCCESS = 'RECEIVE_METRIC_RESULT_SUCCESS';
+export const RECEIVE_METRIC_RESULT_FAILURE = 'RECEIVE_METRIC_RESULT_FAILURE';
+
export const SET_TIME_WINDOW = 'SET_TIME_WINDOW';
export const SET_ALL_DASHBOARDS = 'SET_ALL_DASHBOARDS';
export const SET_ENDPOINTS = 'SET_ENDPOINTS';
diff --git a/app/assets/javascripts/monitoring/stores/mutations.js b/app/assets/javascripts/monitoring/stores/mutations.js
index 696af5aed75..16a34a6c026 100644
--- a/app/assets/javascripts/monitoring/stores/mutations.js
+++ b/app/assets/javascripts/monitoring/stores/mutations.js
@@ -1,11 +1,85 @@
import Vue from 'vue';
import { slugify } from '~/lib/utils/text_utility';
import * as types from './mutation_types';
-import { normalizeMetrics, normalizeMetric, normalizeQueryResult } from './utils';
+import { normalizeMetric, normalizeQueryResult } from './utils';
+import { BACKOFF_TIMEOUT } from '../../lib/utils/common_utils';
+import { metricStates } from '../constants';
+import httpStatusCodes from '~/lib/utils/http_status';
-const normalizePanel = panel => panel.metrics.map(normalizeMetric);
+const normalizePanelMetrics = (metrics, defaultLabel) =>
+ metrics.map(metric => ({
+ ...normalizeMetric(metric),
+ label: metric.label || defaultLabel,
+ }));
+
+/**
+ * Locate and return a metric in the dashboard by its id
+ * as generated by `uniqMetricsId()`.
+ * @param {String} metricId Unique id in the dashboard
+ * @param {Object} dashboard Full dashboard object
+ */
+const findMetricInDashboard = (metricId, dashboard) => {
+ let res = null;
+ dashboard.panel_groups.forEach(group => {
+ group.panels.forEach(panel => {
+ panel.metrics.forEach(metric => {
+ if (metric.metric_id === metricId) {
+ res = metric;
+ }
+ });
+ });
+ });
+ return res;
+};
+
+/**
+ * Set a new state for a metric.
+ *
+ * Initally metric data is not populated, so `Vue.set` is
+ * used to add new properties to the metric.
+ *
+ * @param {Object} metric - Metric object as defined in the dashboard
+ * @param {Object} state - New state
+ * @param {Array|null} state.result - Array of results
+ * @param {String} state.error - Error code from metricStates
+ * @param {Boolean} state.loading - True if the metric is loading
+ */
+const setMetricState = (metric, { result = null, loading = false, state = null }) => {
+ Vue.set(metric, 'result', result);
+ Vue.set(metric, 'loading', loading);
+ Vue.set(metric, 'state', state);
+};
+
+/**
+ * Maps a backened error state to a `metricStates` constant
+ * @param {Object} error - Error from backend response
+ */
+const emptyStateFromError = error => {
+ if (!error) {
+ return metricStates.UNKNOWN_ERROR;
+ }
+
+ // Special error responses
+ if (error.message === BACKOFF_TIMEOUT) {
+ return metricStates.TIMEOUT;
+ }
+
+ // Axios error responses
+ const { response } = error;
+ if (response && response.status === httpStatusCodes.SERVICE_UNAVAILABLE) {
+ return metricStates.CONNECTION_FAILED;
+ } else if (response && response.status === httpStatusCodes.BAD_REQUEST) {
+ // Note: "error.response.data.error" may contain Prometheus error information
+ return metricStates.BAD_QUERY;
+ }
+
+ return metricStates.UNKNOWN_ERROR;
+};
export default {
+ /**
+ * Dashboard panels structure and global state
+ */
[types.REQUEST_METRICS_DATA](state) {
state.emptyState = 'loading';
state.showEmptyState = true;
@@ -13,28 +87,18 @@ export default {
[types.RECEIVE_METRICS_DATA_SUCCESS](state, groupData) {
state.dashboard.panel_groups = groupData.map((group, i) => {
const key = `${slugify(group.group || 'default')}-${i}`;
- let { metrics = [], panels = [] } = group;
+ let { panels = [] } = group;
// each panel has metric information that needs to be normalized
-
panels = panels.map(panel => ({
...panel,
- metrics: normalizePanel(panel),
- }));
-
- // for backwards compatibility, and to limit Vue template changes:
- // for each group alias panels to metrics
- // for each panel alias metrics to queries
- metrics = panels.map(panel => ({
- ...panel,
- queries: panel.metrics,
+ metrics: normalizePanelMetrics(panel.metrics, panel.y_label),
}));
return {
...group,
panels,
key,
- metrics: normalizeMetrics(metrics),
};
});
@@ -46,6 +110,10 @@ export default {
state.emptyState = error ? 'unableToConnect' : 'noData';
state.showEmptyState = true;
},
+
+ /**
+ * Deployments and environments
+ */
[types.RECEIVE_DEPLOYMENTS_DATA_SUCCESS](state, deployments) {
state.deploymentData = deployments;
},
@@ -58,26 +126,47 @@ export default {
[types.RECEIVE_ENVIRONMENTS_DATA_FAILURE](state) {
state.environments = [];
},
- [types.SET_QUERY_RESULT](state, { metricId, result }) {
- if (!metricId || !result || result.length === 0) {
+
+ /**
+ * Individual panel/metric results
+ */
+ [types.REQUEST_METRIC_RESULT](state, { metricId }) {
+ const metric = findMetricInDashboard(metricId, state.dashboard);
+ setMetricState(metric, {
+ loading: true,
+ state: metricStates.LOADING,
+ });
+ },
+ [types.RECEIVE_METRIC_RESULT_SUCCESS](state, { metricId, result }) {
+ if (!metricId) {
return;
}
state.showEmptyState = false;
- state.dashboard.panel_groups.forEach(group => {
- group.metrics.forEach(metric => {
- metric.queries.forEach(query => {
- if (query.metric_id === metricId) {
- state.metricsWithData.push(metricId);
- // ensure dates/numbers are correctly formatted for charts
- const normalizedResults = result.map(normalizeQueryResult);
- Vue.set(query, 'result', Object.freeze(normalizedResults));
- }
- });
+ const metric = findMetricInDashboard(metricId, state.dashboard);
+ if (!result || result.length === 0) {
+ setMetricState(metric, {
+ state: metricStates.NO_DATA,
});
+ } else {
+ const normalizedResults = result.map(normalizeQueryResult);
+ setMetricState(metric, {
+ result: Object.freeze(normalizedResults),
+ state: metricStates.OK,
+ });
+ }
+ },
+ [types.RECEIVE_METRIC_RESULT_FAILURE](state, { metricId, error }) {
+ if (!metricId) {
+ return;
+ }
+ const metric = findMetricInDashboard(metricId, state.dashboard);
+ setMetricState(metric, {
+ state: emptyStateFromError(error),
});
},
+
[types.SET_ENDPOINTS](state, endpoints) {
state.metricsEndpoint = endpoints.metricsEndpoint;
state.environmentsEndpoint = endpoints.environmentsEndpoint;
@@ -101,6 +190,6 @@ export default {
},
[types.SET_PANEL_GROUP_METRICS](state, payload) {
const panelGroup = state.dashboard.panel_groups.find(pg => payload.key === pg.key);
- panelGroup.metrics = payload.metrics;
+ panelGroup.panels = payload.panels;
},
};
diff --git a/app/assets/javascripts/monitoring/stores/state.js b/app/assets/javascripts/monitoring/stores/state.js
index 87e94311176..ee8a85ea222 100644
--- a/app/assets/javascripts/monitoring/stores/state.js
+++ b/app/assets/javascripts/monitoring/stores/state.js
@@ -1,8 +1,6 @@
import invalidUrl from '~/lib/utils/invalid_url';
export default () => ({
- hasMetrics: false,
- showPanels: true,
metricsEndpoint: null,
environmentsEndpoint: null,
deploymentsEndpoint: null,
@@ -10,12 +8,13 @@ export default () => ({
emptyState: 'gettingStarted',
showEmptyState: true,
showErrorBanner: true,
+
dashboard: {
panel_groups: [],
},
+
deploymentData: [],
environments: [],
- metricsWithData: [],
allDashboards: [],
currentDashboard: null,
projectPath: null,
diff --git a/app/assets/javascripts/monitoring/stores/utils.js b/app/assets/javascripts/monitoring/stores/utils.js
index 8a396b15a31..3300d2032d0 100644
--- a/app/assets/javascripts/monitoring/stores/utils.js
+++ b/app/assets/javascripts/monitoring/stores/utils.js
@@ -1,83 +1,21 @@
import _ from 'underscore';
-function checkQueryEmptyData(query) {
- return {
- ...query,
- result: query.result.filter(timeSeries => {
- const newTimeSeries = timeSeries;
- const hasValue = series =>
- !Number.isNaN(series[1]) && (series[1] !== null || series[1] !== undefined);
- const hasNonNullValue = timeSeries.values.find(hasValue);
-
- newTimeSeries.values = hasNonNullValue ? newTimeSeries.values : [];
-
- return newTimeSeries.values.length > 0;
- }),
- };
-}
-
-function removeTimeSeriesNoData(queries) {
- return queries.reduce((series, query) => series.concat(checkQueryEmptyData(query)), []);
-}
-
-// Metrics and queries are currently stored 1:1, so `queries` is an array of length one.
-// We want to group queries onto a single chart by title & y-axis label.
-// This function will no longer be required when metrics:queries are 1:many,
-// though there is no consequence if the function stays in use.
-// @param metrics [Array<Object>]
-// Ex) [
-// { id: 1, title: 'title', y_label: 'MB', queries: [{ ...query1Attrs }] },
-// { id: 2, title: 'title', y_label: 'MB', queries: [{ ...query2Attrs }] },
-// { id: 3, title: 'new title', y_label: 'MB', queries: [{ ...query3Attrs }] }
-// ]
-// @return [Array<Object>]
-// Ex) [
-// { title: 'title', y_label: 'MB', queries: [{ metricId: 1, ...query1Attrs },
-// { metricId: 2, ...query2Attrs }] },
-// { title: 'new title', y_label: 'MB', queries: [{ metricId: 3, ...query3Attrs }]}
-// ]
-export function groupQueriesByChartInfo(metrics) {
- const metricsByChart = metrics.reduce((accumulator, metric) => {
- const { queries, ...chart } = metric;
-
- const chartKey = `${chart.title}|${chart.y_label}`;
- accumulator[chartKey] = accumulator[chartKey] || { ...chart, queries: [] };
-
- queries.forEach(queryAttrs => {
- let metricId;
-
- if (chart.id) {
- metricId = chart.id.toString();
- } else if (queryAttrs.metric_id) {
- metricId = queryAttrs.metric_id.toString();
- } else {
- metricId = null;
- }
-
- accumulator[chartKey].queries.push({ metricId, ...queryAttrs });
- });
-
- return accumulator;
- }, {});
-
- return Object.values(metricsByChart);
-}
-
export const uniqMetricsId = metric => `${metric.metric_id}_${metric.id}`;
/**
- * Not to confuse with normalizeMetrics (plural)
* Metrics loaded from project-defined dashboards do not have a metric_id.
* This method creates a unique ID combining metric_id and id, if either is present.
* This is hopefully a temporary solution until BE processes metrics before passing to fE
* @param {Object} metric - metric
* @returns {Object} - normalized metric with a uniqueID
*/
+
export const normalizeMetric = (metric = {}) =>
_.omit(
{
...metric,
metric_id: uniqMetricsId(metric),
+ metricId: uniqMetricsId(metric),
},
'id',
);
@@ -93,6 +31,11 @@ export const normalizeQueryResult = timeSeries => {
Number(value),
]),
};
+ // Check result for empty data
+ normalizedResult.values = normalizedResult.values.filter(series => {
+ const hasValue = d => !Number.isNaN(d[1]) && (d[1] !== null || d[1] !== undefined);
+ return series.find(hasValue);
+ });
} else if (timeSeries.value) {
normalizedResult = {
...timeSeries,
@@ -102,21 +45,3 @@ export const normalizeQueryResult = timeSeries => {
return normalizedResult;
};
-
-export const normalizeMetrics = metrics => {
- const groupedMetrics = groupQueriesByChartInfo(metrics);
-
- return groupedMetrics.map(metric => {
- const queries = metric.queries.map(query => ({
- ...query,
- // custom metrics do not require a label, so we should ensure this attribute is defined
- label: query.label || metric.y_label,
- result: (query.result || []).map(normalizeQueryResult),
- }));
-
- return {
- ...metric,
- queries: removeTimeSeriesNoData(queries),
- };
- });
-};
diff --git a/app/assets/javascripts/monitoring/utils.js b/app/assets/javascripts/monitoring/utils.js
index 2ae1647011d..c824d6d4ddb 100644
--- a/app/assets/javascripts/monitoring/utils.js
+++ b/app/assets/javascripts/monitoring/utils.js
@@ -72,10 +72,9 @@ export const ISODateToString = date => dateformat(date, dateFormats.dateTimePick
*/
export const graphDataValidatorForValues = (isValues, graphData) => {
const responseValueKeyName = isValues ? 'value' : 'values';
-
return (
- Array.isArray(graphData.queries) &&
- graphData.queries.filter(query => {
+ Array.isArray(graphData.metrics) &&
+ graphData.metrics.filter(query => {
if (Array.isArray(query.result)) {
return (
query.result.filter(res => Array.isArray(res[responseValueKeyName])).length ===
@@ -83,7 +82,7 @@ export const graphDataValidatorForValues = (isValues, graphData) => {
);
}
return false;
- }).length === graphData.queries.length
+ }).length === graphData.metrics.filter(query => query.result).length
);
};
@@ -116,6 +115,7 @@ export const generateLinkToChartOptions = chartLink => {
/**
* Tracks snowplow event when user downloads CSV of cluster metric
* @param {String} chart title that will be sent as a property for the event
+ * @return {Object} config object for event tracking
*/
export const downloadCSVOptions = title => {
const isCLusterHealthBoard = isClusterHealthBoard();
@@ -131,7 +131,19 @@ export const downloadCSVOptions = title => {
};
/**
- * This function validates the graph data contains exactly 3 queries plus
+ * Generate options for snowplow to track adding a new metric via the dashboard
+ * custom metric modal
+ * @return {Object} config object for event tracking
+ */
+export const getAddMetricTrackingOptions = () => ({
+ category: document.body.dataset.page,
+ action: 'click_button',
+ label: 'add_new_metric',
+ property: 'modal',
+});
+
+/**
+ * This function validates the graph data contains exactly 3 metrics plus
* value validations from graphDataValidatorForValues.
* @param {Object} isValues
* @param {Object} graphData the graph data response from a prometheus request
@@ -140,8 +152,8 @@ export const downloadCSVOptions = title => {
export const graphDataValidatorForAnomalyValues = graphData => {
const anomalySeriesCount = 3; // metric, upper, lower
return (
- graphData.queries &&
- graphData.queries.length === anomalySeriesCount &&
+ graphData.metrics &&
+ graphData.metrics.length === anomalySeriesCount &&
graphDataValidatorForValues(false, graphData)
);
};
diff --git a/app/assets/javascripts/mr_popover/components/mr_popover.vue b/app/assets/javascripts/mr_popover/components/mr_popover.vue
index b81600660f6..ce08b0964a1 100644
--- a/app/assets/javascripts/mr_popover/components/mr_popover.vue
+++ b/app/assets/javascripts/mr_popover/components/mr_popover.vue
@@ -45,7 +45,7 @@ export default {
return this.mergeRequest.headPipeline && this.mergeRequest.headPipeline.detailedStatus;
},
formattedTime() {
- return this.timeFormated(this.mergeRequest.createdAt);
+ return this.timeFormatted(this.mergeRequest.createdAt);
},
statusBoxClass() {
switch (this.mergeRequest.state) {
diff --git a/app/assets/javascripts/mr_tabs_popover/components/popover.vue b/app/assets/javascripts/mr_tabs_popover/components/popover.vue
new file mode 100644
index 00000000000..da1e1e70993
--- /dev/null
+++ b/app/assets/javascripts/mr_tabs_popover/components/popover.vue
@@ -0,0 +1,64 @@
+<script>
+import { GlPopover, GlButton, GlLink } from '@gitlab/ui';
+import Icon from '~/vue_shared/components/icon.vue';
+import axios from '~/lib/utils/axios_utils';
+
+export default {
+ components: {
+ GlPopover,
+ GlButton,
+ GlLink,
+ Icon,
+ },
+ props: {
+ dismissEndpoint: {
+ type: String,
+ required: true,
+ },
+ featureId: {
+ type: String,
+ required: true,
+ },
+ },
+ data() {
+ return {
+ showPopover: false,
+ };
+ },
+ mounted() {
+ setTimeout(() => {
+ this.showPopover = true;
+ }, 2000);
+ },
+ methods: {
+ onDismiss() {
+ this.showPopover = false;
+
+ axios.post(this.dismissEndpoint, {
+ feature_name: this.featureId,
+ });
+ },
+ },
+};
+</script>
+
+<template>
+ <gl-popover target="#diffs-tab" placement="bottom" :show="showPopover">
+ <p class="mb-2">
+ {{
+ __(
+ 'Now you can access the merge request navigation tabs at the top, where they’re easier to find.',
+ )
+ }}
+ </p>
+ <p>
+ <gl-link href="https://gitlab.com/gitlab-org/gitlab/issues/36125" target="_blank">
+ {{ __('More information and share feedback') }}
+ <icon name="external-link" :size="10" />
+ </gl-link>
+ </p>
+ <gl-button variant="primary" size="sm" @click="onDismiss">
+ {{ __('Got it') }}
+ </gl-button>
+ </gl-popover>
+</template>
diff --git a/app/assets/javascripts/mr_tabs_popover/index.js b/app/assets/javascripts/mr_tabs_popover/index.js
new file mode 100644
index 00000000000..9ee0ba046f0
--- /dev/null
+++ b/app/assets/javascripts/mr_tabs_popover/index.js
@@ -0,0 +1,12 @@
+import Vue from 'vue';
+import Popover from './components/popover.vue';
+
+export default el =>
+ new Vue({
+ el,
+ render(createElement) {
+ return createElement(Popover, {
+ props: { dismissEndpoint: el.dataset.dismissEndpoint, featureId: el.dataset.featureId },
+ });
+ },
+ });
diff --git a/app/assets/javascripts/notebook/cells/markdown.vue b/app/assets/javascripts/notebook/cells/markdown.vue
index 9e4a92426ee..753aa96bb55 100644
--- a/app/assets/javascripts/notebook/cells/markdown.vue
+++ b/app/assets/javascripts/notebook/cells/markdown.vue
@@ -1,7 +1,7 @@
<script>
-/* global katex */
import marked from 'marked';
import sanitize from 'sanitize-html';
+import katex from 'katex';
import Prompt from './prompt.vue';
const renderer = new marked.Renderer();
@@ -70,7 +70,6 @@ renderer.paragraph = t => {
};
marked.setOptions({
- sanitize: true,
renderer,
});
@@ -87,9 +86,66 @@ export default {
computed: {
markdown() {
return sanitize(marked(this.cell.source.join('').replace(/\\/g, '\\\\')), {
- allowedTags: false,
+ // allowedTags from GitLab's inline HTML guidelines
+ // https://docs.gitlab.com/ee/user/markdown.html#inline-html
+ allowedTags: [
+ 'h1',
+ 'h2',
+ 'h3',
+ 'h4',
+ 'h5',
+ 'h6',
+ 'h7',
+ 'h8',
+ 'br',
+ 'b',
+ 'i',
+ 'strong',
+ 'em',
+ 'a',
+ 'pre',
+ 'code',
+ 'img',
+ 'tt',
+ 'div',
+ 'ins',
+ 'del',
+ 'sup',
+ 'sub',
+ 'p',
+ 'ol',
+ 'ul',
+ 'table',
+ 'thead',
+ 'tbody',
+ 'tfoot',
+ 'blockquote',
+ 'dl',
+ 'dt',
+ 'dd',
+ 'kbd',
+ 'q',
+ 'samp',
+ 'var',
+ 'hr',
+ 'ruby',
+ 'rt',
+ 'rp',
+ 'li',
+ 'tr',
+ 'td',
+ 'th',
+ 's',
+ 'strike',
+ 'span',
+ 'abbr',
+ 'abbr',
+ 'summary',
+ ],
allowedAttributes: {
- '*': ['class'],
+ '*': ['class', 'style'],
+ a: ['href'],
+ img: ['src'],
},
});
},
@@ -105,6 +161,15 @@ export default {
</template>
<style>
+/*
+ Importing the necessary katex stylesheet from the node_module folder rather
+ than copying the stylesheet into `app/assets/stylesheets/vendors` for
+ automatic importing via `app/assets/stylesheets/application.scss`. The reason
+ is that the katex stylesheet depends on many fonts that are in node_module
+ subfolders - moving all these fonts would make updating katex difficult.
+ */
+@import '~katex/dist/katex.min.css';
+
.markdown .katex {
display: block;
text-align: center;
diff --git a/app/assets/javascripts/notes.js b/app/assets/javascripts/notes.js
index defa278c089..1a8f1c659a4 100644
--- a/app/assets/javascripts/notes.js
+++ b/app/assets/javascripts/notes.js
@@ -1,7 +1,7 @@
-/* eslint-disable no-restricted-properties, no-var, camelcase,
-no-unused-expressions, one-var, default-case,
+/* eslint-disable no-restricted-properties, camelcase,
+no-unused-expressions, default-case,
consistent-return, no-alert, no-param-reassign, no-else-return,
-vars-on-top, no-shadow, no-useless-escape,
+no-shadow, no-useless-escape,
class-methods-use-this */
/* global ResolveService */
@@ -16,10 +16,10 @@ import Cookies from 'js-cookie';
import Autosize from 'autosize';
import 'jquery.caret'; // required by at.js
import 'at.js';
-import AjaxCache from '~/lib/utils/ajax_cache';
import Vue from 'vue';
-import syntaxHighlight from '~/syntax_highlight';
import { GlSkeletonLoading } from '@gitlab/ui';
+import AjaxCache from '~/lib/utils/ajax_cache';
+import syntaxHighlight from '~/syntax_highlight';
import axios from './lib/utils/axios_utils';
import { getLocationHash } from './lib/utils/url_utility';
import Flash from './flash';
@@ -224,18 +224,18 @@ export default class Notes {
}
keydownNoteText(e) {
- var $textarea,
- discussionNoteForm,
- editNote,
- myLastNote,
- myLastNoteEditBtn,
- newText,
- originalText;
+ let discussionNoteForm;
+ let editNote;
+ let myLastNote;
+ let myLastNoteEditBtn;
+ let newText;
+ let originalText;
+
if (isMetaKey(e)) {
return;
}
- $textarea = $(e.target);
+ const $textarea = $(e.target);
// Edit previous note when UP arrow is hit
switch (e.which) {
case 38:
@@ -325,11 +325,10 @@ export default class Notes {
* if there aren't new notes coming from the server
*/
setPollingInterval(shouldReset) {
- var nthInterval;
if (shouldReset == null) {
shouldReset = true;
}
- nthInterval = this.basePollingInterval * Math.pow(2, this.maxPollingSteps - 1);
+ const nthInterval = this.basePollingInterval * Math.pow(2, this.maxPollingSteps - 1);
if (shouldReset) {
this.pollingInterval = this.basePollingInterval;
} else if (this.pollingInterval < nthInterval) {
@@ -339,7 +338,7 @@ export default class Notes {
}
handleQuickActions(noteEntity) {
- var votesBlock;
+ let votesBlock;
if (noteEntity.commands_changes) {
if ('merge' in noteEntity.commands_changes) {
Notes.checkMergeRequestStatus();
@@ -462,14 +461,16 @@ export default class Notes {
* Render note in discussion area. To render inline notes use renderDiscussionNote.
*/
renderDiscussionNote(noteEntity, $form) {
- var discussionContainer, form, row, lineType, diffAvatarContainer;
+ let discussionContainer;
+ let row;
if (!Notes.isNewNote(noteEntity, this.note_ids)) {
return;
}
this.note_ids.push(noteEntity.id);
- form = $form || $(`.js-discussion-note-form[data-discussion-id="${noteEntity.discussion_id}"]`);
+ const form =
+ $form || $(`.js-discussion-note-form[data-discussion-id="${noteEntity.discussion_id}"]`);
row =
form.length || !noteEntity.discussion_line_code
? form.closest('tr')
@@ -479,8 +480,8 @@ export default class Notes {
row = form;
}
- lineType = this.isParallelView() ? form.find('#line_type').val() : 'old';
- diffAvatarContainer = row
+ const lineType = this.isParallelView() ? form.find('#line_type').val() : 'old';
+ const diffAvatarContainer = row
.prevAll('.line_holder')
.first()
.find(`.js-avatar-container.${lineType}_line`);
@@ -491,15 +492,17 @@ export default class Notes {
}
if (discussionContainer.length === 0) {
if (noteEntity.diff_discussion_html) {
- var $discussion = $(noteEntity.diff_discussion_html).renderGFM();
+ const $discussion = $(noteEntity.diff_discussion_html).renderGFM();
if (!this.isParallelView() || row.hasClass('js-temp-notes-holder') || noteEntity.on_image) {
// insert the note and the reply button after the temp row
row.after($discussion);
} else {
// Merge new discussion HTML in
- var $notes = $discussion.find(`.notes[data-discussion-id="${noteEntity.discussion_id}"]`);
- var contentContainerClass = $notes
+ const $notes = $discussion.find(
+ `.notes[data-discussion-id="${noteEntity.discussion_id}"]`,
+ );
+ const contentContainerClass = $notes
.closest('.notes-content')
.attr('class')
.split(' ')
@@ -537,7 +540,7 @@ export default class Notes {
}
renderDiscussionAvatar(diffAvatarContainer, noteEntity) {
- var avatarHolder = diffAvatarContainer.find('.diff-comment-avatar-holders');
+ let avatarHolder = diffAvatarContainer.find('.diff-comment-avatar-holders');
if (!avatarHolder.length) {
avatarHolder = document.createElement('diff-note-avatars');
@@ -557,8 +560,7 @@ export default class Notes {
* Resets buttons.
*/
resetMainTargetForm(e) {
- var form;
- form = $('.js-main-target-form');
+ const form = $('.js-main-target-form');
// remove validation errors
form.find('.js-errors').remove();
// reset text and preview
@@ -572,7 +574,7 @@ export default class Notes {
.data('autosave')
.reset();
- var event = document.createEvent('Event');
+ const event = document.createEvent('Event');
event.initEvent('autosize:update', true, false);
form.find('.js-autosize')[0].dispatchEvent(event);
@@ -580,8 +582,7 @@ export default class Notes {
}
reenableTargetFormSubmitButton() {
- var form;
- form = $('.js-main-target-form');
+ const form = $('.js-main-target-form');
return form.find('.js-note-text').trigger('input');
}
@@ -591,9 +592,8 @@ export default class Notes {
* Sets some hidden fields in the form.
*/
setupMainTargetNoteForm(enableGFM) {
- var form;
// find the form
- form = $('.js-new-note-form');
+ const form = $('.js-new-note-form');
// Set a global clone of the form for later cloning
this.formClone = form.clone();
// show the form
@@ -626,10 +626,9 @@ export default class Notes {
* show the form
*/
setupNoteForm(form, enableGFM = defaultAutocompleteConfig) {
- var textarea, key;
this.glForm = new GLForm(form, enableGFM);
- textarea = form.find('.js-note-text');
- key = [
+ const textarea = form.find('.js-note-text');
+ const key = [
s__('NoteForm|Note'),
form.find('#note_noteable_type').val(),
form.find('#note_noteable_id').val(),
@@ -686,8 +685,8 @@ export default class Notes {
*/
addDiscussionNote($form, note, isNewDiffComment) {
if ($form.attr('data-resolve-all') != null) {
- var discussionId = $form.data('discussionId');
- var mergeRequestId = $form.data('noteableIid');
+ const discussionId = $form.data('discussionId');
+ const mergeRequestId = $form.data('noteableIid');
if (ResolveService != null) {
ResolveService.toggleResolveForDiscussion(mergeRequestId, discussionId);
@@ -707,13 +706,12 @@ export default class Notes {
* Updates the current note field.
*/
updateNote(noteEntity, $targetNote) {
- var $noteEntityEl, $note_li;
// Convert returned HTML to a jQuery object so we can modify it further
- $noteEntityEl = $(noteEntity.html);
+ const $noteEntityEl = $(noteEntity.html);
this.revertNoteEditForm($targetNote);
$noteEntityEl.renderGFM();
// Find the note's `li` element by ID and replace it with the updated HTML
- $note_li = $(`.note-row-${noteEntity.id}`);
+ const $note_li = $(`.note-row-${noteEntity.id}`);
$note_li.replaceWith($noteEntityEl);
this.setupNewNote($noteEntityEl);
@@ -724,17 +722,17 @@ export default class Notes {
}
checkContentToAllowEditing($el) {
- var initialContent = $el
+ const initialContent = $el
.find('.original-note-content')
.text()
.trim();
- var currentContent = $el.find('.js-note-text').val();
- var isAllowed = true;
+ const currentContent = $el.find('.js-note-text').val();
+ let isAllowed = true;
if (currentContent === initialContent) {
this.removeNoteEditForm($el);
} else {
- var isWidgetVisible = isInViewport($el.get(0));
+ const isWidgetVisible = isInViewport($el.get(0));
if (!isWidgetVisible) {
scrollToElement($el);
@@ -756,13 +754,13 @@ export default class Notes {
showEditForm(e) {
e.preventDefault();
- var $target = $(e.target);
- var $editForm = $(this.getEditFormSelector($target));
- var $note = $target.closest('.note');
- var $currentlyEditing = $('.note.is-editing:visible');
+ const $target = $(e.target);
+ const $editForm = $(this.getEditFormSelector($target));
+ const $note = $target.closest('.note');
+ const $currentlyEditing = $('.note.is-editing:visible');
if ($currentlyEditing.length) {
- var isEditAllowed = this.checkContentToAllowEditing($currentlyEditing);
+ const isEditAllowed = this.checkContentToAllowEditing($currentlyEditing);
if (!isEditAllowed) {
return;
@@ -802,8 +800,8 @@ export default class Notes {
revertNoteEditForm($target) {
$target = $target || $('.note.is-editing:visible');
- var selector = this.getEditFormSelector($target);
- var $editForm = $(selector);
+ const selector = this.getEditFormSelector($target);
+ const $editForm = $(selector);
$editForm.insertBefore('.diffs');
$editForm.find('.js-comment-save-button').enable();
@@ -811,7 +809,7 @@ export default class Notes {
}
getEditFormSelector($el) {
- var selector = '.note-edit-form:not(.mr-note-edit-form)';
+ let selector = '.note-edit-form:not(.mr-note-edit-form)';
if ($el.parents('#diffs').length) {
selector = '.note-edit-form.mr-note-edit-form';
@@ -821,7 +819,7 @@ export default class Notes {
}
removeNoteEditForm($note) {
- var form = $note.find('.diffs .current-note-edit-form');
+ const form = $note.find('.diffs .current-note-edit-form');
$note.removeClass('is-editing');
form.removeClass('current-note-edit-form');
@@ -837,9 +835,8 @@ export default class Notes {
* Removes the whole discussion if the last note is being removed.
*/
removeNote(e) {
- var noteElId, $note;
- $note = $(e.currentTarget).closest('.note');
- noteElId = $note.attr('id');
+ const $note = $(e.currentTarget).closest('.note');
+ const noteElId = $note.attr('id');
$(`.note[id="${noteElId}"]`).each((i, el) => {
// A same note appears in the "Discussion" and in the "Changes" tab, we have
// to remove all. Using $('.note[id='noteId']') ensure we get all the notes,
@@ -915,9 +912,8 @@ export default class Notes {
}
replyToDiscussionNote(target) {
- var form, replyLink;
- form = this.cleanForm(this.formClone.clone());
- replyLink = $(target).closest('.js-discussion-reply-button');
+ const form = this.cleanForm(this.formClone.clone());
+ const replyLink = $(target).closest('.js-discussion-reply-button');
// insert the form after the button
replyLink
.closest('.discussion-reply-holder')
@@ -942,7 +938,7 @@ export default class Notes {
diffFileData = dataHolder.closest('.image');
}
- var discussionID = dataHolder.data('discussionId');
+ const discussionID = dataHolder.data('discussionId');
if (discussionID) {
form.attr('data-discussion-id', discussionID);
@@ -985,7 +981,7 @@ export default class Notes {
form.removeClass('js-main-target-form').addClass('discussion-form js-discussion-note-form');
if (typeof gl.diffNotesCompileComponents !== 'undefined') {
- var $commentBtn = form.find('comment-and-resolve-btn');
+ const $commentBtn = form.find('comment-and-resolve-btn');
$commentBtn.attr(':discussion-id', `'${discussionID}'`);
gl.diffNotesCompileComponents();
@@ -1042,16 +1038,20 @@ export default class Notes {
}
toggleDiffNote({ target, lineType, forceShow, showReplyInput = false }) {
- var $link, addForm, hasNotes, newForm, noteForm, replyButton, row, rowCssToAdd;
- $link = $(target);
- row = $link.closest('tr');
+ let addForm;
+ let newForm;
+ let noteForm;
+ let replyButton;
+ let rowCssToAdd;
+ const $link = $(target);
+ const row = $link.closest('tr');
const nextRow = row.next();
let targetRow = row;
if (nextRow.is('.notes_holder')) {
targetRow = nextRow;
}
- hasNotes = nextRow.is('.notes_holder');
+ const hasNotes = nextRow.is('.notes_holder');
addForm = false;
let lineTypeSelector = '';
rowCssToAdd =
@@ -1111,9 +1111,8 @@ export default class Notes {
* Removes the form and if necessary it's temporary row.
*/
removeDiscussionNoteForm(form) {
- var glForm, row;
- row = form.closest('tr');
- glForm = form.data('glForm');
+ const row = form.closest('tr');
+ const glForm = form.data('glForm');
glForm.destroy();
form
.find('.js-note-text')
@@ -1158,10 +1157,9 @@ export default class Notes {
* Updates the file name for the selected attachment.
*/
updateFormAttachment() {
- var filename, form;
- form = $(this).closest('form');
+ const form = $(this).closest('form');
// get only the basename
- filename = $(this)
+ const filename = $(this)
.val()
.replace(/^.*[\\\/]/, '');
return form.find('.js-attachment-filename').text(filename);
@@ -1175,11 +1173,12 @@ export default class Notes {
}
updateTargetButtons(e) {
- var closebtn, closetext, form, reopenbtn, reopentext, textarea;
- textarea = $(e.target);
- form = textarea.parents('form');
- reopenbtn = form.find('.js-note-target-reopen');
- closebtn = form.find('.js-note-target-close');
+ let closetext;
+ let reopentext;
+ const textarea = $(e.target);
+ const form = textarea.parents('form');
+ const reopenbtn = form.find('.js-note-target-reopen');
+ const closebtn = form.find('.js-note-target-close');
if (textarea.val().trim().length > 0) {
reopentext = reopenbtn.attr('data-alternative-text');
@@ -1215,16 +1214,16 @@ export default class Notes {
}
putEditFormInPlace($el) {
- var $editForm = $(this.getEditFormSelector($el));
- var $note = $el.closest('.note');
+ const $editForm = $(this.getEditFormSelector($el));
+ const $note = $el.closest('.note');
$editForm.insertAfter($note.find('.note-text'));
- var $originalContentEl = $note.find('.original-note-content');
- var originalContent = $originalContentEl.text().trim();
- var postUrl = $originalContentEl.data('postUrl');
- var targetId = $originalContentEl.data('targetId');
- var targetType = $originalContentEl.data('targetType');
+ const $originalContentEl = $note.find('.original-note-content');
+ const originalContent = $originalContentEl.text().trim();
+ const postUrl = $originalContentEl.data('postUrl');
+ const targetId = $originalContentEl.data('targetId');
+ const targetType = $originalContentEl.data('targetType');
this.glForm = new GLForm($editForm.find('form'), this.enableGFM);
diff --git a/app/assets/javascripts/notes/components/comment_form.vue b/app/assets/javascripts/notes/components/comment_form.vue
index fda494fec07..492d8de3802 100644
--- a/app/assets/javascripts/notes/components/comment_form.vue
+++ b/app/assets/javascripts/notes/components/comment_form.vue
@@ -193,23 +193,10 @@ export default {
this.stopPolling();
this.saveNote(noteData)
- .then(res => {
+ .then(() => {
this.enableButton();
this.restartPolling();
-
- if (res.errors) {
- if (res.errors.commands_only) {
- this.discard();
- } else {
- Flash(
- __('Something went wrong while adding your comment. Please try again.'),
- 'alert',
- this.$refs.commentForm,
- );
- }
- } else {
- this.discard();
- }
+ this.discard();
if (withIssueAction) {
this.toggleIssueState();
diff --git a/app/assets/javascripts/notes/components/diff_with_note.vue b/app/assets/javascripts/notes/components/diff_with_note.vue
index df537ba1ed2..fe22737c7fc 100644
--- a/app/assets/javascripts/notes/components/diff_with_note.vue
+++ b/app/assets/javascripts/notes/components/diff_with_note.vue
@@ -1,10 +1,10 @@
<script>
/* eslint-disable @gitlab/vue-i18n/no-bare-strings */
import { mapState, mapActions } from 'vuex';
+import { GlSkeletonLoading } from '@gitlab/ui';
import DiffFileHeader from '~/diffs/components/diff_file_header.vue';
import DiffViewer from '~/vue_shared/components/diff_viewer/diff_viewer.vue';
import ImageDiffOverlay from '~/diffs/components/image_diff_overlay.vue';
-import { GlSkeletonLoading } from '@gitlab/ui';
import { getDiffMode } from '~/diffs/store/utils';
import { diffViewerModes } from '~/ide/constants';
diff --git a/app/assets/javascripts/notes/components/discussion_counter.vue b/app/assets/javascripts/notes/components/discussion_counter.vue
index d7ffa0abb79..98f1f385e9b 100644
--- a/app/assets/javascripts/notes/components/discussion_counter.vue
+++ b/app/assets/javascripts/notes/components/discussion_counter.vue
@@ -19,6 +19,7 @@ export default {
'resolvableDiscussionsCount',
'firstUnresolvedDiscussionId',
'unresolvedDiscussionsCount',
+ 'getDiscussion',
]),
isLoggedIn() {
return this.getUserData.id;
@@ -40,9 +41,10 @@ export default {
...mapActions(['expandDiscussion']),
jumpToFirstUnresolvedDiscussion() {
const diffTab = window.mrTabs.currentAction === 'diffs';
- const discussionId = this.firstUnresolvedDiscussionId(diffTab);
-
- this.jumpToDiscussion(discussionId);
+ const discussionId =
+ this.firstUnresolvedDiscussionId(diffTab) || this.firstUnresolvedDiscussionId();
+ const firstDiscussion = this.getDiscussion(discussionId);
+ this.jumpToDiscussion(firstDiscussion);
},
},
};
diff --git a/app/assets/javascripts/notes/components/discussion_jump_to_next_button.vue b/app/assets/javascripts/notes/components/discussion_jump_to_next_button.vue
index 07a5bda6bcb..f87ca097b40 100644
--- a/app/assets/javascripts/notes/components/discussion_jump_to_next_button.vue
+++ b/app/assets/javascripts/notes/components/discussion_jump_to_next_button.vue
@@ -1,6 +1,6 @@
<script>
-import icon from '~/vue_shared/components/icon.vue';
import { GlTooltipDirective } from '@gitlab/ui';
+import icon from '~/vue_shared/components/icon.vue';
export default {
name: 'JumpToNextDiscussionButton',
diff --git a/app/assets/javascripts/notes/components/discussion_keyboard_navigator.vue b/app/assets/javascripts/notes/components/discussion_keyboard_navigator.vue
index 7fbfe8eebb2..7d742fbfeee 100644
--- a/app/assets/javascripts/notes/components/discussion_keyboard_navigator.vue
+++ b/app/assets/javascripts/notes/components/discussion_keyboard_navigator.vue
@@ -19,7 +19,11 @@ export default {
};
},
computed: {
- ...mapGetters(['nextUnresolvedDiscussionId', 'previousUnresolvedDiscussionId']),
+ ...mapGetters([
+ 'nextUnresolvedDiscussionId',
+ 'previousUnresolvedDiscussionId',
+ 'getDiscussion',
+ ]),
},
mounted() {
Mousetrap.bind('n', () => this.jumpToNextDiscussion());
@@ -33,14 +37,14 @@ export default {
...mapActions(['expandDiscussion']),
jumpToNextDiscussion() {
const nextId = this.nextUnresolvedDiscussionId(this.currentDiscussionId, this.isDiffView);
-
- this.jumpToDiscussion(nextId);
+ const nextDiscussion = this.getDiscussion(nextId);
+ this.jumpToDiscussion(nextDiscussion);
this.currentDiscussionId = nextId;
},
jumpToPreviousDiscussion() {
const prevId = this.previousUnresolvedDiscussionId(this.currentDiscussionId, this.isDiffView);
-
- this.jumpToDiscussion(prevId);
+ const prevDiscussion = this.getDiscussion(prevId);
+ this.jumpToDiscussion(prevDiscussion);
this.currentDiscussionId = prevId;
},
},
diff --git a/app/assets/javascripts/notes/components/discussion_locked_widget.vue b/app/assets/javascripts/notes/components/discussion_locked_widget.vue
index 53f509185a8..8636984c6af 100644
--- a/app/assets/javascripts/notes/components/discussion_locked_widget.vue
+++ b/app/assets/javascripts/notes/components/discussion_locked_widget.vue
@@ -12,6 +12,9 @@ export default {
},
mixins: [Issuable, issuableStateMixin],
computed: {
+ projectArchivedWarning() {
+ return __('This project is archived and cannot be commented on.');
+ },
lockedIssueWarning() {
return sprintf(
__('This %{issuableDisplayName} is locked. Only project members can comment.'),
@@ -26,9 +29,15 @@ export default {
<div class="disabled-comment text-center">
<span class="issuable-note-warning inline">
<icon :size="16" name="lock" class="icon" />
- <span>
- {{ lockedIssueWarning }}
+ <span v-if="isProjectArchived">
+ {{ projectArchivedWarning }}
+ <gl-link :href="archivedProjectDocsPath" target="_blank" class="learn-more">
+ {{ __('Learn more') }}
+ </gl-link>
+ </span>
+ <span v-else>
+ {{ lockedIssueWarning }}
<gl-link :href="lockedIssueDocsPath" target="_blank" class="learn-more">
{{ __('Learn more') }}
</gl-link>
diff --git a/app/assets/javascripts/notes/components/discussion_resolve_with_issue_button.vue b/app/assets/javascripts/notes/components/discussion_resolve_with_issue_button.vue
index f03e6fd73d7..1d1529bfa5b 100644
--- a/app/assets/javascripts/notes/components/discussion_resolve_with_issue_button.vue
+++ b/app/assets/javascripts/notes/components/discussion_resolve_with_issue_button.vue
@@ -1,6 +1,6 @@
<script>
-import Icon from '~/vue_shared/components/icon.vue';
import { GlTooltipDirective, GlButton } from '@gitlab/ui';
+import Icon from '~/vue_shared/components/icon.vue';
export default {
name: 'ResolveWithIssueButton',
diff --git a/app/assets/javascripts/notes/components/note_actions.vue b/app/assets/javascripts/notes/components/note_actions.vue
index 89d434a60ba..dc514f00801 100644
--- a/app/assets/javascripts/notes/components/note_actions.vue
+++ b/app/assets/javascripts/notes/components/note_actions.vue
@@ -1,8 +1,8 @@
<script>
import { mapGetters } from 'vuex';
-import Icon from '~/vue_shared/components/icon.vue';
import { GlLoadingIcon, GlTooltipDirective } from '@gitlab/ui';
import resolvedStatusMixin from 'ee_else_ce/batch_comments/mixins/resolved_status';
+import Icon from '~/vue_shared/components/icon.vue';
import ReplyButton from './note_actions/reply_button.vue';
export default {
diff --git a/app/assets/javascripts/notes/components/note_awards_list.vue b/app/assets/javascripts/notes/components/note_awards_list.vue
index d4a57d5d58d..df62e379017 100644
--- a/app/assets/javascripts/notes/components/note_awards_list.vue
+++ b/app/assets/javascripts/notes/components/note_awards_list.vue
@@ -116,16 +116,20 @@ export default {
// We have 10+ awarded user, join them with comma and add `and x more`.
if (remainingAwardList.length) {
- title = sprintf(__(`%{listToShow}, and %{awardsListLength} more.`), {
- listToShow: namesToShow.join(', '),
- awardsListLength: remainingAwardList.length,
- });
+ title = sprintf(
+ __(`%{listToShow}, and %{awardsListLength} more.`),
+ {
+ listToShow: namesToShow.join(', '),
+ awardsListLength: remainingAwardList.length,
+ },
+ false,
+ );
} else if (namesToShow.length > 1) {
// Join all names with comma but not the last one, it will be added with and text.
title = namesToShow.slice(0, namesToShow.length - 1).join(', ');
// If we have more than 2 users we need an extra comma before and text.
title += namesToShow.length > 2 ? ',' : '';
- title += sprintf(__(` and %{sliced}`), { sliced: namesToShow.slice(-1) }); // Append and text
+ title += sprintf(__(` and %{sliced}`), { sliced: namesToShow.slice(-1) }, false); // Append and text
} else {
// We have only 2 users so join them with and.
title = namesToShow.join(__(' and '));
diff --git a/app/assets/javascripts/notes/components/note_form.vue b/app/assets/javascripts/notes/components/note_form.vue
index 222badf70d1..b024884bea0 100644
--- a/app/assets/javascripts/notes/components/note_form.vue
+++ b/app/assets/javascripts/notes/components/note_form.vue
@@ -1,7 +1,7 @@
<script>
-import { mergeUrlParams } from '~/lib/utils/url_utility';
import { mapGetters, mapActions } from 'vuex';
import noteFormMixin from 'ee_else_ce/notes/mixins/note_form';
+import { mergeUrlParams } from '~/lib/utils/url_utility';
import eventHub from '../event_hub';
import issueWarning from '../../vue_shared/components/issue/issue_warning.vue';
import markdownField from '../../vue_shared/components/markdown/field.vue';
diff --git a/app/assets/javascripts/notes/components/noteable_discussion.vue b/app/assets/javascripts/notes/components/noteable_discussion.vue
index 47ec740b63a..1f31720ff40 100644
--- a/app/assets/javascripts/notes/components/noteable_discussion.vue
+++ b/app/assets/javascripts/notes/components/noteable_discussion.vue
@@ -1,10 +1,10 @@
<script>
import { mapActions, mapGetters } from 'vuex';
import { GlTooltipDirective } from '@gitlab/ui';
+import diffLineNoteFormMixin from 'ee_else_ce/notes/mixins/diff_line_note_form';
import { s__, __ } from '~/locale';
import { clearDraft, getDiscussionReplyKey } from '~/lib/utils/autosave';
import icon from '~/vue_shared/components/icon.vue';
-import diffLineNoteFormMixin from 'ee_else_ce/notes/mixins/diff_line_note_form';
import TimelineEntryItem from '~/vue_shared/components/notes/timeline_entry_item.vue';
import Flash from '../../flash';
import userAvatarLink from '../../vue_shared/components/user_avatar/user_avatar_link.vue';
@@ -84,6 +84,7 @@ export default {
'hasUnresolvedDiscussions',
'showJumpToNextDiscussion',
'getUserData',
+ 'getDiscussion',
]),
currentUser() {
return this.getUserData;
@@ -197,23 +198,22 @@ export default {
data: postData,
};
- this.isReplying = false;
this.saveNote(replyData)
- .then(() => {
- clearDraft(this.autosaveKey);
+ .then(res => {
+ if (res.hasFlash !== true) {
+ this.isReplying = false;
+ clearDraft(this.autosaveKey);
+ }
callback();
})
.catch(err => {
this.removePlaceholderNotes();
- this.isReplying = true;
- this.$nextTick(() => {
- const msg = __(
- 'Your comment could not be submitted! Please check your network connection and try again.',
- );
- Flash(msg, 'alert', this.$el);
- this.$refs.noteForm.note = noteText;
- callback(err);
- });
+ const msg = __(
+ 'Your comment could not be submitted! Please check your network connection and try again.',
+ );
+ Flash(msg, 'alert', this.$el);
+ this.$refs.noteForm.note = noteText;
+ callback(err);
});
},
jumpToNextDiscussion() {
@@ -221,8 +221,9 @@ export default {
this.discussion.id,
this.discussionsByDiffOrder,
);
+ const nextDiscussion = this.getDiscussion(nextId);
- this.jumpToDiscussion(nextId);
+ this.jumpToDiscussion(nextDiscussion);
},
deleteNoteHandler(note) {
this.$emit('noteDeleted', this.discussion, note);
diff --git a/app/assets/javascripts/notes/components/noteable_note.vue b/app/assets/javascripts/notes/components/noteable_note.vue
index fa8fc7d02e4..b3dae69d0bc 100644
--- a/app/assets/javascripts/notes/components/noteable_note.vue
+++ b/app/assets/javascripts/notes/components/noteable_note.vue
@@ -2,9 +2,9 @@
import $ from 'jquery';
import { mapGetters, mapActions } from 'vuex';
import { escape } from 'underscore';
+import draftMixin from 'ee_else_ce/notes/mixins/draft';
import { truncateSha } from '~/lib/utils/text_utility';
import TimelineEntryItem from '~/vue_shared/components/notes/timeline_entry_item.vue';
-import draftMixin from 'ee_else_ce/notes/mixins/draft';
import { __, s__, sprintf } from '../../locale';
import Flash from '../../flash';
import userAvatarLink from '../../vue_shared/components/user_avatar/user_avatar_link.vue';
diff --git a/app/assets/javascripts/notes/components/notes_app.vue b/app/assets/javascripts/notes/components/notes_app.vue
index 9d1de4ef8a0..be2adb07526 100644
--- a/app/assets/javascripts/notes/components/notes_app.vue
+++ b/app/assets/javascripts/notes/components/notes_app.vue
@@ -1,5 +1,4 @@
<script>
-import { __ } from '~/locale';
import { mapGetters, mapActions } from 'vuex';
import { getLocationHash, doesHashExistInUrl } from '../../lib/utils/url_utility';
import Flash from '../../flash';
@@ -14,6 +13,7 @@ import placeholderNote from '../../vue_shared/components/notes/placeholder_note.
import placeholderSystemNote from '../../vue_shared/components/notes/placeholder_system_note.vue';
import skeletonLoadingContainer from '../../vue_shared/components/notes/skeleton_note.vue';
import highlightCurrentUser from '~/behaviors/markdown/highlight_current_user';
+import { __ } from '~/locale';
import initUserPopovers from '../../user_popovers';
export default {
@@ -71,6 +71,9 @@ export default {
'userCanReply',
'discussionTabCounter',
]),
+ discussionTabCounterText() {
+ return this.isLoading ? '' : this.discussionTabCounter;
+ },
noteableType() {
return this.noteableData.noteableType;
},
@@ -95,9 +98,9 @@ export default {
this.fetchNotes();
}
},
- allDiscussions() {
- if (this.discussionsCount && !this.isLoading) {
- this.discussionsCount.textContent = this.discussionTabCounter;
+ discussionTabCounterText(val) {
+ if (this.discussionsCount) {
+ this.discussionsCount.textContent = val;
}
},
},
diff --git a/app/assets/javascripts/notes/mixins/discussion_navigation.js b/app/assets/javascripts/notes/mixins/discussion_navigation.js
index 3d89d907777..94ca01e44cc 100644
--- a/app/assets/javascripts/notes/mixins/discussion_navigation.js
+++ b/app/assets/javascripts/notes/mixins/discussion_navigation.js
@@ -35,20 +35,26 @@ export default {
return false;
},
- jumpToDiscussion(id) {
+
+ switchToDiscussionsTabAndJumpTo(id) {
+ window.mrTabs.eventHub.$once('MergeRequestTabChange', () => {
+ setTimeout(() => this.discussionJump(id), 0);
+ });
+
+ window.mrTabs.tabShown('show');
+ },
+
+ jumpToDiscussion(discussion) {
+ const { id, diff_discussion: isDiffDiscussion } = discussion;
if (id) {
const activeTab = window.mrTabs.currentAction;
- if (activeTab === 'diffs') {
+ if (activeTab === 'diffs' && isDiffDiscussion) {
this.diffsJump(id);
- } else if (activeTab === 'commits' || activeTab === 'pipelines') {
- window.mrTabs.eventHub.$once('MergeRequestTabChange', () => {
- setTimeout(() => this.discussionJump(id), 0);
- });
-
- window.mrTabs.tabShown('show');
- } else {
+ } else if (activeTab === 'show') {
this.discussionJump(id);
+ } else {
+ this.switchToDiscussionsTabAndJumpTo(id);
}
}
},
diff --git a/app/assets/javascripts/notes/mixins/issuable_state.js b/app/assets/javascripts/notes/mixins/issuable_state.js
index d97d9f6850a..0ca8c8c98a3 100644
--- a/app/assets/javascripts/notes/mixins/issuable_state.js
+++ b/app/assets/javascripts/notes/mixins/issuable_state.js
@@ -3,6 +3,12 @@ import { mapGetters } from 'vuex';
export default {
computed: {
...mapGetters(['getNoteableDataByProp']),
+ isProjectArchived() {
+ return this.getNoteableDataByProp('is_project_archived');
+ },
+ archivedProjectDocsPath() {
+ return this.getNoteableDataByProp('archived_project_docs_path');
+ },
lockedIssueDocsPath() {
return this.getNoteableDataByProp('locked_discussion_docs_path');
},
diff --git a/app/assets/javascripts/notes/stores/actions.js b/app/assets/javascripts/notes/stores/actions.js
index 82c291379ec..9bd245c094d 100644
--- a/app/assets/javascripts/notes/stores/actions.js
+++ b/app/assets/javascripts/notes/stores/actions.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
import $ from 'jquery';
-import axios from '~/lib/utils/axios_utils';
import Visibility from 'visibilityjs';
+import axios from '~/lib/utils/axios_utils';
import TaskList from '../../task_list';
import Flash from '../../flash';
import Poll from '../../lib/utils/poll';
@@ -14,7 +14,7 @@ import sidebarTimeTrackingEventHub from '../../sidebar/event_hub';
import { isInViewport, scrollToElement, isInMRPage } from '../../lib/utils/common_utils';
import { mergeUrlParams } from '../../lib/utils/url_utility';
import mrWidgetEventHub from '../../vue_merge_request_widget/event_hub';
-import { __ } from '~/locale';
+import { __, sprintf } from '~/locale';
import Api from '~/api';
let eTagPoll;
@@ -252,29 +252,22 @@ export const saveNote = ({ commit, dispatch }, noteData) => {
}
}
- const processErrors = res => {
- const { errors } = res;
- if (!errors || !Object.keys(errors).length) {
- return res;
- }
-
+ const processQuickActions = res => {
+ const { errors: { commands_only: message } = { commands_only: null } } = res;
/*
The following reply means that quick actions have been successfully applied:
{"commands_changes":{},"valid":false,"errors":{"commands_only":["Commands applied"]}}
*/
- if (hasQuickActions) {
+ if (hasQuickActions && message) {
eTagPoll.makeRequest();
$('.js-gfm-input').trigger('clear-commands-cache.atwho');
- const { commands_only: message } = errors;
Flash(message || __('Commands applied'), 'notice', noteData.flashContainer);
-
- return res;
}
- throw new Error(__('Failed to save comment!'));
+ return res;
};
const processEmojiAward = res => {
@@ -321,11 +314,33 @@ export const saveNote = ({ commit, dispatch }, noteData) => {
return res;
};
+ const processErrors = error => {
+ if (error.response) {
+ const {
+ response: { data = {} },
+ } = error;
+ const { errors = {} } = data;
+ const { base = [] } = errors;
+
+ // we handle only errors.base for now
+ if (base.length > 0) {
+ const errorMsg = sprintf(__('Your comment could not be submitted because %{error}'), {
+ error: base[0].toLowerCase(),
+ });
+ Flash(errorMsg, 'alert', noteData.flashContainer);
+ return { ...data, hasFlash: true };
+ }
+ }
+
+ throw error;
+ };
+
return dispatch(methodToDispatch, postData, { root: true })
- .then(processErrors)
+ .then(processQuickActions)
.then(processEmojiAward)
.then(processTimeTracking)
- .then(removePlaceholder);
+ .then(removePlaceholder)
+ .catch(processErrors);
};
const pollSuccessCallBack = (resp, commit, state, getters, dispatch) => {
diff --git a/app/assets/javascripts/pages/admin/users/components/delete_user_modal.vue b/app/assets/javascripts/pages/admin/users/components/delete_user_modal.vue
index 78aaa9df0ec..b43d6ba17d7 100644
--- a/app/assets/javascripts/pages/admin/users/components/delete_user_modal.vue
+++ b/app/assets/javascripts/pages/admin/users/components/delete_user_modal.vue
@@ -109,7 +109,7 @@ export default {
<template>
<p v-html="text"></p>
<p v-html="confirmationTextLabel"></p>
- <form ref="form" :action="deleteUserUrl" method="post">
+ <form ref="form" :action="deleteUserUrl" method="post" @submit.prevent>
<input ref="method" type="hidden" name="_method" value="delete" />
<input :value="csrfToken" type="hidden" name="authenticity_token" />
<gl-form-input
diff --git a/app/assets/javascripts/pages/dashboard/merge_requests/index.js b/app/assets/javascripts/pages/dashboard/merge_requests/index.js
index ff758fcb4fe..24d7b592948 100644
--- a/app/assets/javascripts/pages/dashboard/merge_requests/index.js
+++ b/app/assets/javascripts/pages/dashboard/merge_requests/index.js
@@ -1,6 +1,6 @@
+import addExtraTokensForMergeRequests from 'ee_else_ce/filtered_search/add_extra_tokens_for_merge_requests';
import projectSelect from '~/project_select';
import initFilteredSearch from '~/pages/search/init_filtered_search';
-import addExtraTokensForMergeRequests from 'ee_else_ce/filtered_search/add_extra_tokens_for_merge_requests';
import IssuableFilteredSearchTokenKeys from '~/filtered_search/issuable_filtered_search_token_keys';
import { FILTERED_SEARCH } from '~/pages/constants';
diff --git a/app/assets/javascripts/pages/groups/group_members/index/index.js b/app/assets/javascripts/pages/groups/group_members/index/index.js
index e4f4c3b574e..e77a7cf8e0a 100644
--- a/app/assets/javascripts/pages/groups/group_members/index/index.js
+++ b/app/assets/javascripts/pages/groups/group_members/index/index.js
@@ -1,7 +1,7 @@
/* eslint-disable no-new */
-import memberExpirationDate from '~/member_expiration_date';
import Members from 'ee_else_ce/members';
+import memberExpirationDate from '~/member_expiration_date';
import UsersSelect from '~/users_select';
document.addEventListener('DOMContentLoaded', () => {
diff --git a/app/assets/javascripts/pages/groups/issues/index.js b/app/assets/javascripts/pages/groups/issues/index.js
index 090e1a2bc6d..4f15f5ec58c 100644
--- a/app/assets/javascripts/pages/groups/issues/index.js
+++ b/app/assets/javascripts/pages/groups/issues/index.js
@@ -1,9 +1,9 @@
+import IssuableFilteredSearchTokenKeys from 'ee_else_ce/filtered_search/issuable_filtered_search_token_keys';
import initIssuablesList from '~/issuables_list';
import projectSelect from '~/project_select';
import initFilteredSearch from '~/pages/search/init_filtered_search';
import issuableInitBulkUpdateSidebar from '~/issuable_init_bulk_update_sidebar';
import { FILTERED_SEARCH } from '~/pages/constants';
-import IssuableFilteredSearchTokenKeys from 'ee_else_ce/filtered_search/issuable_filtered_search_token_keys';
import initManualOrdering from '~/manual_ordering';
const ISSUE_BULK_UPDATE_PREFIX = 'issue_';
diff --git a/app/assets/javascripts/pages/groups/merge_requests/index.js b/app/assets/javascripts/pages/groups/merge_requests/index.js
index 7520cfb6da0..13c5c350c24 100644
--- a/app/assets/javascripts/pages/groups/merge_requests/index.js
+++ b/app/assets/javascripts/pages/groups/merge_requests/index.js
@@ -1,8 +1,8 @@
+import addExtraTokensForMergeRequests from 'ee_else_ce/filtered_search/add_extra_tokens_for_merge_requests';
import projectSelect from '~/project_select';
import initFilteredSearch from '~/pages/search/init_filtered_search';
import issuableInitBulkUpdateSidebar from '~/issuable_init_bulk_update_sidebar';
import IssuableFilteredSearchTokenKeys from '~/filtered_search/issuable_filtered_search_token_keys';
-import addExtraTokensForMergeRequests from 'ee_else_ce/filtered_search/add_extra_tokens_for_merge_requests';
import { FILTERED_SEARCH } from '~/pages/constants';
const ISSUABLE_BULK_UPDATE_PREFIX = 'merge_request_';
diff --git a/app/assets/javascripts/pages/groups/new/group_path_validator.js b/app/assets/javascripts/pages/groups/new/group_path_validator.js
index 2021ad117e8..f1e7ff87e5a 100644
--- a/app/assets/javascripts/pages/groups/new/group_path_validator.js
+++ b/app/assets/javascripts/pages/groups/new/group_path_validator.js
@@ -1,6 +1,6 @@
+import _ from 'underscore';
import InputValidator from '~/validators/input_validator';
-import _ from 'underscore';
import fetchGroupPathAvailability from './fetch_group_path_availability';
import flash from '~/flash';
import { __ } from '~/locale';
diff --git a/app/assets/javascripts/pages/groups/registry/repositories/index.js b/app/assets/javascripts/pages/groups/registry/repositories/index.js
index b663defad0e..635513afd95 100644
--- a/app/assets/javascripts/pages/groups/registry/repositories/index.js
+++ b/app/assets/javascripts/pages/groups/registry/repositories/index.js
@@ -1,3 +1,3 @@
-import initRegistryImages from '~/registry';
+import initRegistryImages from '~/registry/list';
document.addEventListener('DOMContentLoaded', initRegistryImages);
diff --git a/app/assets/javascripts/pages/instance_statistics/conversational_development_index/index.js b/app/assets/javascripts/pages/instance_statistics/dev_ops_score/index.js
index c1056537f90..c1056537f90 100644
--- a/app/assets/javascripts/pages/instance_statistics/conversational_development_index/index.js
+++ b/app/assets/javascripts/pages/instance_statistics/dev_ops_score/index.js
diff --git a/app/assets/javascripts/pages/profiles/show/index.js b/app/assets/javascripts/pages/profiles/show/index.js
index 13cb0d6f74b..ad003181728 100644
--- a/app/assets/javascripts/pages/profiles/show/index.js
+++ b/app/assets/javascripts/pages/profiles/show/index.js
@@ -1,7 +1,7 @@
import $ from 'jquery';
-import createFlash from '~/flash';
import GfmAutoComplete from 'ee_else_ce/gfm_auto_complete';
import emojiRegex from 'emoji-regex';
+import createFlash from '~/flash';
import EmojiMenu from './emoji_menu';
import { __ } from '~/locale';
diff --git a/app/assets/javascripts/pages/projects/issues/form.js b/app/assets/javascripts/pages/projects/issues/form.js
index 96e47187fed..34c7ee2e603 100644
--- a/app/assets/javascripts/pages/projects/issues/form.js
+++ b/app/assets/javascripts/pages/projects/issues/form.js
@@ -1,8 +1,8 @@
/* eslint-disable no-new */
import $ from 'jquery';
-import GLForm from '~/gl_form';
import IssuableForm from 'ee_else_ce/issuable_form';
+import GLForm from '~/gl_form';
import LabelsSelect from '~/labels_select';
import MilestoneSelect from '~/milestone_select';
import ShortcutsNavigation from '~/behaviors/shortcuts/shortcuts_navigation';
diff --git a/app/assets/javascripts/pages/projects/issues/index/index.js b/app/assets/javascripts/pages/projects/issues/index/index.js
index c73ebb31eb3..bf54ca972b2 100644
--- a/app/assets/javascripts/pages/projects/issues/index/index.js
+++ b/app/assets/javascripts/pages/projects/issues/index/index.js
@@ -1,12 +1,12 @@
/* eslint-disable no-new */
+import IssuableFilteredSearchTokenKeys from 'ee_else_ce/filtered_search/issuable_filtered_search_token_keys';
import IssuableIndex from '~/issuable_index';
import ShortcutsNavigation from '~/behaviors/shortcuts/shortcuts_navigation';
import UsersSelect from '~/users_select';
import initFilteredSearch from '~/pages/search/init_filtered_search';
import { FILTERED_SEARCH } from '~/pages/constants';
import { ISSUABLE_INDEX } from '~/pages/projects/constants';
-import IssuableFilteredSearchTokenKeys from 'ee_else_ce/filtered_search/issuable_filtered_search_token_keys';
import initManualOrdering from '~/manual_ordering';
document.addEventListener('DOMContentLoaded', () => {
diff --git a/app/assets/javascripts/pages/projects/merge_requests/index/index.js b/app/assets/javascripts/pages/projects/merge_requests/index/index.js
index 0bcca22e40f..8f93cbb2a42 100644
--- a/app/assets/javascripts/pages/projects/merge_requests/index/index.js
+++ b/app/assets/javascripts/pages/projects/merge_requests/index/index.js
@@ -1,8 +1,8 @@
+import addExtraTokensForMergeRequests from 'ee_else_ce/filtered_search/add_extra_tokens_for_merge_requests';
import IssuableIndex from '~/issuable_index';
import ShortcutsNavigation from '~/behaviors/shortcuts/shortcuts_navigation';
import UsersSelect from '~/users_select';
import initFilteredSearch from '~/pages/search/init_filtered_search';
-import addExtraTokensForMergeRequests from 'ee_else_ce/filtered_search/add_extra_tokens_for_merge_requests';
import IssuableFilteredSearchTokenKeys from '~/filtered_search/issuable_filtered_search_token_keys';
import { FILTERED_SEARCH } from '~/pages/constants';
import { ISSUABLE_INDEX } from '~/pages/projects/constants';
diff --git a/app/assets/javascripts/pages/projects/merge_requests/init_merge_request.js b/app/assets/javascripts/pages/projects/merge_requests/init_merge_request.js
index e51ab79a51d..76d72efb11b 100644
--- a/app/assets/javascripts/pages/projects/merge_requests/init_merge_request.js
+++ b/app/assets/javascripts/pages/projects/merge_requests/init_merge_request.js
@@ -1,10 +1,10 @@
/* eslint-disable no-new */
import $ from 'jquery';
+import IssuableForm from 'ee_else_ce/issuable_form';
import Diff from '~/diff';
import ShortcutsNavigation from '~/behaviors/shortcuts/shortcuts_navigation';
import GLForm from '~/gl_form';
-import IssuableForm from 'ee_else_ce/issuable_form';
import LabelsSelect from '~/labels_select';
import MilestoneSelect from '~/milestone_select';
import IssuableTemplateSelectors from '~/templates/issuable_template_selectors';
diff --git a/app/assets/javascripts/pages/projects/merge_requests/init_merge_request_show.js b/app/assets/javascripts/pages/projects/merge_requests/init_merge_request_show.js
index 16034313af2..1f8befc07c8 100644
--- a/app/assets/javascripts/pages/projects/merge_requests/init_merge_request_show.js
+++ b/app/assets/javascripts/pages/projects/merge_requests/init_merge_request_show.js
@@ -6,6 +6,7 @@ import howToMerge from '~/how_to_merge';
import initPipelines from '~/commit/pipelines/pipelines_bundle';
import initVueIssuableSidebarApp from '~/issuable_sidebar/sidebar_bundle';
import initSourcegraph from '~/sourcegraph';
+import initPopover from '~/mr_tabs_popover';
import initWidget from '../../../vue_merge_request_widget';
export default function() {
@@ -21,4 +22,10 @@ export default function() {
howToMerge();
initWidget();
initSourcegraph();
+
+ const tabHighlightEl = document.querySelector('.js-tabs-feature-highlight');
+
+ if (tabHighlightEl) {
+ initPopover(tabHighlightEl);
+ }
}
diff --git a/app/assets/javascripts/pages/projects/pages_domains/edit/index.js b/app/assets/javascripts/pages/projects/pages_domains/show/index.js
index 27e4433ad4d..27e4433ad4d 100644
--- a/app/assets/javascripts/pages/projects/pages_domains/edit/index.js
+++ b/app/assets/javascripts/pages/projects/pages_domains/show/index.js
diff --git a/app/assets/javascripts/pages/projects/project.js b/app/assets/javascripts/pages/projects/project.js
index 01acfca158f..739ae1cea16 100644
--- a/app/assets/javascripts/pages/projects/project.js
+++ b/app/assets/javascripts/pages/projects/project.js
@@ -1,4 +1,4 @@
-/* eslint-disable func-names, no-var, no-return-assign */
+/* eslint-disable func-names, no-return-assign */
import $ from 'jquery';
import Cookies from 'js-cookie';
@@ -90,19 +90,19 @@ export default class Project {
}
static initRefSwitcher() {
- var refListItem = document.createElement('li');
- var refLink = document.createElement('a');
+ const refListItem = document.createElement('li');
+ const refLink = document.createElement('a');
refLink.href = '#';
return $('.js-project-refs-dropdown').each(function() {
- var $dropdown = $(this);
- var selected = $dropdown.data('selected');
- var fieldName = $dropdown.data('fieldName');
- var shouldVisit = Boolean($dropdown.data('visit'));
- var $form = $dropdown.closest('form');
- var action = $form.attr('action');
- var linkTarget = mergeUrlParams(serializeForm($form[0]), action);
+ const $dropdown = $(this);
+ const selected = $dropdown.data('selected');
+ const fieldName = $dropdown.data('fieldName');
+ const shouldVisit = Boolean($dropdown.data('visit'));
+ const $form = $dropdown.closest('form');
+ const action = $form.attr('action');
+ const linkTarget = mergeUrlParams(serializeForm($form[0]), action);
return $dropdown.glDropdown({
data(term, callback) {
@@ -123,9 +123,9 @@ export default class Project {
inputFieldName: $dropdown.data('inputFieldName'),
fieldName,
renderRow(ref) {
- var li = refListItem.cloneNode(false);
+ const li = refListItem.cloneNode(false);
- var link = refLink.cloneNode(false);
+ const link = refLink.cloneNode(false);
if (ref === selected) {
link.className = 'is-active';
diff --git a/app/assets/javascripts/pages/projects/registry/repositories/index.js b/app/assets/javascripts/pages/projects/registry/repositories/index.js
index 35564754ee0..59310b3f76f 100644
--- a/app/assets/javascripts/pages/projects/registry/repositories/index.js
+++ b/app/assets/javascripts/pages/projects/registry/repositories/index.js
@@ -1,3 +1,3 @@
-import initRegistryImages from '~/registry/index';
+import initRegistryImages from '~/registry/list/index';
document.addEventListener('DOMContentLoaded', initRegistryImages);
diff --git a/app/assets/javascripts/pages/projects/settings/ci_cd/show/index.js b/app/assets/javascripts/pages/projects/settings/ci_cd/show/index.js
index 885247335a4..b4aac8eea2b 100644
--- a/app/assets/javascripts/pages/projects/settings/ci_cd/show/index.js
+++ b/app/assets/javascripts/pages/projects/settings/ci_cd/show/index.js
@@ -1,6 +1,7 @@
import initSettingsPanels from '~/settings_panels';
import SecretValues from '~/behaviors/secret_values';
import AjaxVariableList from '~/ci_variable_list/ajax_variable_list';
+import registrySettingsApp from '~/registry/settings/registry_settings_bundle';
document.addEventListener('DOMContentLoaded', () => {
// Initialize expandable settings panels
@@ -32,4 +33,6 @@ document.addEventListener('DOMContentLoaded', () => {
if (instanceDefaultBadge) instanceDefaultBadge.style.display = 'none';
autoDevOpsExtraSettings.classList.toggle('hidden', !target.checked);
});
+
+ registrySettingsApp();
});
diff --git a/app/assets/javascripts/pages/projects/snippets/show/index.js b/app/assets/javascripts/pages/projects/snippets/show/index.js
index c35b9c30058..738bf08f1bf 100644
--- a/app/assets/javascripts/pages/projects/snippets/show/index.js
+++ b/app/assets/javascripts/pages/projects/snippets/show/index.js
@@ -3,11 +3,16 @@ import ZenMode from '~/zen_mode';
import LineHighlighter from '~/line_highlighter';
import BlobViewer from '~/blob/viewer';
import snippetEmbed from '~/snippet/snippet_embed';
+import initSnippetsApp from '~/snippets';
document.addEventListener('DOMContentLoaded', () => {
- new LineHighlighter(); // eslint-disable-line no-new
- new BlobViewer(); // eslint-disable-line no-new
- initNotes();
- new ZenMode(); // eslint-disable-line no-new
- snippetEmbed();
+ if (!gon.features.snippetsVue) {
+ new LineHighlighter(); // eslint-disable-line no-new
+ new BlobViewer(); // eslint-disable-line no-new
+ initNotes();
+ new ZenMode(); // eslint-disable-line no-new
+ snippetEmbed();
+ } else {
+ initSnippetsApp();
+ }
});
diff --git a/app/assets/javascripts/pages/projects/wikis/components/delete_wiki_modal.vue b/app/assets/javascripts/pages/projects/wikis/components/delete_wiki_modal.vue
index b0c9ca3ec0d..2176309ac84 100644
--- a/app/assets/javascripts/pages/projects/wikis/components/delete_wiki_modal.vue
+++ b/app/assets/javascripts/pages/projects/wikis/components/delete_wiki_modal.vue
@@ -1,7 +1,7 @@
<script>
import _ from 'underscore';
-import { s__, sprintf } from '~/locale';
import { GlModal, GlModalDirective } from '@gitlab/ui';
+import { s__, sprintf } from '~/locale';
export default {
components: {
diff --git a/app/assets/javascripts/pages/sessions/new/username_validator.js b/app/assets/javascripts/pages/sessions/new/username_validator.js
index 36d1e773134..25be71d9ed4 100644
--- a/app/assets/javascripts/pages/sessions/new/username_validator.js
+++ b/app/assets/javascripts/pages/sessions/new/username_validator.js
@@ -1,6 +1,6 @@
+import _ from 'underscore';
import InputValidator from '~/validators/input_validator';
-import _ from 'underscore';
import axios from '~/lib/utils/axios_utils';
import flash from '~/flash';
import { __ } from '~/locale';
diff --git a/app/assets/javascripts/pages/snippets/show/index.js b/app/assets/javascripts/pages/snippets/show/index.js
index 26936110402..6e00c14f43e 100644
--- a/app/assets/javascripts/pages/snippets/show/index.js
+++ b/app/assets/javascripts/pages/snippets/show/index.js
@@ -3,11 +3,16 @@ import BlobViewer from '~/blob/viewer';
import ZenMode from '~/zen_mode';
import initNotes from '~/init_notes';
import snippetEmbed from '~/snippet/snippet_embed';
+import initSnippetsApp from '~/snippets';
document.addEventListener('DOMContentLoaded', () => {
- new LineHighlighter(); // eslint-disable-line no-new
- new BlobViewer(); // eslint-disable-line no-new
- initNotes();
- new ZenMode(); // eslint-disable-line no-new
- snippetEmbed();
+ if (!gon.features.snippetsVue) {
+ new LineHighlighter(); // eslint-disable-line no-new
+ new BlobViewer(); // eslint-disable-line no-new
+ initNotes();
+ new ZenMode(); // eslint-disable-line no-new
+ snippetEmbed();
+ } else {
+ initSnippetsApp();
+ }
});
diff --git a/app/assets/javascripts/pages/users/index.js b/app/assets/javascripts/pages/users/index.js
index a191df00dfa..cfc6dc61f9f 100644
--- a/app/assets/javascripts/pages/users/index.js
+++ b/app/assets/javascripts/pages/users/index.js
@@ -1,6 +1,6 @@
import $ from 'jquery';
-import UserCallout from '~/user_callout';
import Cookies from 'js-cookie';
+import UserCallout from '~/user_callout';
import UserTabs from './user_tabs';
function initUserProfile(action) {
diff --git a/app/assets/javascripts/performance_bar/components/performance_bar_app.vue b/app/assets/javascripts/performance_bar/components/performance_bar_app.vue
index 8ce653bf1fb..d17c2f33adc 100644
--- a/app/assets/javascripts/performance_bar/components/performance_bar_app.vue
+++ b/app/assets/javascripts/performance_bar/components/performance_bar_app.vue
@@ -52,6 +52,11 @@ export default {
header: s__('PerformanceBar|Redis calls'),
keys: ['cmd'],
},
+ {
+ metric: 'total',
+ header: s__('PerformanceBar|Frontend resources'),
+ keys: ['name', 'size'],
+ },
],
data() {
return { currentRequestId: '' };
@@ -80,6 +85,15 @@ export default {
}
return '';
},
+ downloadPath() {
+ const data = JSON.stringify(this.requests);
+ const blob = new Blob([data], { type: 'text/plain' });
+ return window.URL.createObjectURL(blob);
+ },
+ downloadName() {
+ const fileName = this.requests[0].truncatedUrl;
+ return `${fileName}_perf_bar_${Date.now()}.json`;
+ },
},
mounted() {
this.currentRequest = this.requestId;
@@ -121,6 +135,9 @@ export default {
<a :href="currentRequest.details.tracing.tracing_url">{{ s__('PerformanceBar|trace') }}</a>
</div>
<add-request v-on="$listeners" />
+ <div v-if="currentRequest.details" id="peek-download" class="view">
+ <a :download="downloadName" :href="downloadPath">{{ s__('PerformanceBar|Download') }}</a>
+ </div>
<request-selector
v-if="currentRequest"
:current-request="currentRequest"
diff --git a/app/assets/javascripts/performance_bar/components/request_selector.vue b/app/assets/javascripts/performance_bar/components/request_selector.vue
index 793aba3189b..1610534ae0d 100644
--- a/app/assets/javascripts/performance_bar/components/request_selector.vue
+++ b/app/assets/javascripts/performance_bar/components/request_selector.vue
@@ -1,7 +1,7 @@
<script>
+import { GlPopover } from '@gitlab/ui';
import { glEmojiTag } from '~/emoji';
import { n__ } from '~/locale';
-import { GlPopover } from '@gitlab/ui';
export default {
components: {
@@ -40,16 +40,6 @@ export default {
},
},
methods: {
- truncatedUrl(requestUrl) {
- const components = requestUrl.replace(/\/$/, '').split('/');
- let truncated = components[components.length - 1];
-
- if (truncated.match(/^\d+$/)) {
- truncated = `${components[components.length - 2]}/${truncated}`;
- }
-
- return truncated;
- },
glEmojiTag,
},
};
@@ -63,7 +53,7 @@ export default {
:value="request.id"
class="qa-performance-bar-request"
>
- {{ truncatedUrl(request.url) }}
+ {{ request.truncatedUrl }}
<span v-if="request.hasWarnings">(!)</span>
</option>
</select>
diff --git a/app/assets/javascripts/performance_bar/components/request_warning.vue b/app/assets/javascripts/performance_bar/components/request_warning.vue
index 0da3c271214..0128d5bd733 100644
--- a/app/assets/javascripts/performance_bar/components/request_warning.vue
+++ b/app/assets/javascripts/performance_bar/components/request_warning.vue
@@ -1,6 +1,6 @@
<script>
-import { glEmojiTag } from '~/emoji';
import { GlPopover } from '@gitlab/ui';
+import { glEmojiTag } from '~/emoji';
export default {
components: {
diff --git a/app/assets/javascripts/performance_bar/index.js b/app/assets/javascripts/performance_bar/index.js
index 735c9d804ee..7b373a8ce22 100644
--- a/app/assets/javascripts/performance_bar/index.js
+++ b/app/assets/javascripts/performance_bar/index.js
@@ -1,3 +1,4 @@
+/* eslint-disable @gitlab/i18n/no-non-i18n-strings */
import Vue from 'vue';
import axios from '~/lib/utils/axios_utils';
@@ -53,12 +54,57 @@ export default ({ container }) =>
PerformanceBarService.fetchRequestDetails(this.peekUrl, requestId)
.then(res => {
this.store.addRequestDetails(requestId, res.data);
+
+ if (this.requestId === requestId) this.collectFrontendPerformanceMetrics();
})
.catch(() =>
// eslint-disable-next-line no-console
console.warn(`Error getting performance bar results for ${requestId}`),
);
},
+ collectFrontendPerformanceMetrics() {
+ if (performance) {
+ const navigationEntries = performance.getEntriesByType('navigation');
+ const paintEntries = performance.getEntriesByType('paint');
+ const resourceEntries = performance.getEntriesByType('resource');
+
+ let durationString = '';
+ if (navigationEntries.length > 0) {
+ durationString = `${Math.round(navigationEntries[0].responseEnd)} | `;
+ durationString += `${Math.round(paintEntries[1].startTime)} | `;
+ durationString += ` ${Math.round(navigationEntries[0].domContentLoadedEventEnd)}`;
+ }
+
+ let newEntries = resourceEntries.map(this.transformResourceEntry);
+
+ this.updateFrontendPerformanceMetrics(durationString, newEntries);
+
+ if ('PerformanceObserver' in window) {
+ // We start observing for more incoming timings
+ const observer = new PerformanceObserver(list => {
+ newEntries = newEntries.concat(list.getEntries().map(this.transformResourceEntry));
+ this.updateFrontendPerformanceMetrics(durationString, newEntries);
+ });
+
+ observer.observe({ entryTypes: ['resource'] });
+ }
+ }
+ },
+ updateFrontendPerformanceMetrics(durationString, requestEntries) {
+ this.store.setRequestDetailsData(this.requestId, 'total', {
+ duration: durationString,
+ calls: requestEntries.length,
+ details: requestEntries,
+ });
+ },
+ transformResourceEntry(entry) {
+ const nf = new Intl.NumberFormat();
+ return {
+ name: entry.name.replace(document.location.origin, ''),
+ duration: Math.round(entry.duration),
+ size: entry.transferSize ? `${nf.format(entry.transferSize)} bytes` : 'cached',
+ };
+ },
},
render(createElement) {
return createElement('performance-bar-app', {
diff --git a/app/assets/javascripts/performance_bar/stores/performance_bar_store.js b/app/assets/javascripts/performance_bar/stores/performance_bar_store.js
index 64f4f5e0c76..6f443db47ed 100644
--- a/app/assets/javascripts/performance_bar/stores/performance_bar_store.js
+++ b/app/assets/javascripts/performance_bar/stores/performance_bar_store.js
@@ -5,9 +5,12 @@ export default class PerformanceBarStore {
addRequest(requestId, requestUrl) {
if (!this.findRequest(requestId)) {
+ const shortUrl = PerformanceBarStore.truncateUrl(requestUrl);
+
this.requests.push({
id: requestId,
url: requestUrl,
+ truncatedUrl: shortUrl,
details: {},
hasWarnings: false,
});
@@ -29,6 +32,16 @@ export default class PerformanceBarStore {
return request;
}
+ setRequestDetailsData(requestId, metricKey, requestDetailsData) {
+ const selectedRequest = this.findRequest(requestId);
+ if (selectedRequest) {
+ selectedRequest.details = {
+ ...selectedRequest.details,
+ [metricKey]: requestDetailsData,
+ };
+ }
+ }
+
requestsWithDetails() {
return this.requests.filter(request => request.details);
}
@@ -36,4 +49,20 @@ export default class PerformanceBarStore {
canTrackRequest(requestUrl) {
return this.requests.filter(request => request.url === requestUrl).length < 2;
}
+
+ static truncateUrl(requestUrl) {
+ const [rootAndQuery] = requestUrl.split('#');
+ const [root, query] = rootAndQuery.split('?');
+ const components = root.replace(/\/$/, '').split('/');
+
+ let truncated = components[components.length - 1];
+ if (truncated.match(/^\d+$/)) {
+ truncated = `${components[components.length - 2]}/${truncated}`;
+ }
+ if (query) {
+ truncated += `?${query}`;
+ }
+
+ return truncated;
+ }
}
diff --git a/app/assets/javascripts/persistent_user_callout.js b/app/assets/javascripts/persistent_user_callout.js
index 8d6a3781048..4598626718c 100644
--- a/app/assets/javascripts/persistent_user_callout.js
+++ b/app/assets/javascripts/persistent_user_callout.js
@@ -6,8 +6,8 @@ import Flash from './flash';
const DEFERRED_LINK_CLASS = 'deferred-link';
export default class PersistentUserCallout {
- constructor(container) {
- const { dismissEndpoint, featureId, deferLinks } = container.dataset;
+ constructor(container, options = container.dataset) {
+ const { dismissEndpoint, featureId, deferLinks } = options;
this.container = container;
this.dismissEndpoint = dismissEndpoint;
this.featureId = featureId;
@@ -53,11 +53,11 @@ export default class PersistentUserCallout {
});
}
- static factory(container) {
+ static factory(container, options) {
if (!container) {
return undefined;
}
- return new PersistentUserCallout(container);
+ return new PersistentUserCallout(container, options);
}
}
diff --git a/app/assets/javascripts/pipelines/components/graph/graph_component.vue b/app/assets/javascripts/pipelines/components/graph/graph_component.vue
index e29509ce074..429122c8083 100644
--- a/app/assets/javascripts/pipelines/components/graph/graph_component.vue
+++ b/app/assets/javascripts/pipelines/components/graph/graph_component.vue
@@ -100,9 +100,6 @@ export default {
hasOnlyOneJob(stage) {
return stage.groups.length === 1;
},
- hasDownstream(index, length) {
- return index === length - 1 && this.hasTriggered;
- },
hasUpstream(index) {
return index === 0 && this.hasTriggeredBy;
},
@@ -160,7 +157,6 @@ export default {
:key="stage.name"
:class="{
'has-upstream prepend-left-64': hasUpstream(index),
- 'has-downstream': hasDownstream(index, graph.length),
'has-only-one-job': hasOnlyOneJob(stage),
'append-right-46': shouldAddRightMargin(index),
}"
diff --git a/app/assets/javascripts/pipelines/components/graph/job_item.vue b/app/assets/javascripts/pipelines/components/graph/job_item.vue
index 0d5afe04e8e..bfd314e0439 100644
--- a/app/assets/javascripts/pipelines/components/graph/job_item.vue
+++ b/app/assets/javascripts/pipelines/components/graph/job_item.vue
@@ -1,7 +1,7 @@
<script>
+import { GlTooltipDirective, GlLink } from '@gitlab/ui';
import ActionComponent from './action_component.vue';
import JobNameComponent from './job_name_component.vue';
-import { GlTooltipDirective, GlLink } from '@gitlab/ui';
import { sprintf } from '~/locale';
import delayedJobMixin from '~/jobs/mixins/delayed_job_mixin';
@@ -111,7 +111,7 @@ export default {
:href="status.details_path"
:title="tooltipText"
:class="cssClassJobName"
- class="js-pipeline-graph-job-link qa-job-link"
+ class="js-pipeline-graph-job-link qa-job-link menu-item"
>
<job-name-component :name="job.name" :status="job.status" />
</gl-link>
diff --git a/app/assets/javascripts/pipelines/components/graph/linked_pipeline.vue b/app/assets/javascripts/pipelines/components/graph/linked_pipeline.vue
index 4e7d77863b9..82335e71403 100644
--- a/app/assets/javascripts/pipelines/components/graph/linked_pipeline.vue
+++ b/app/assets/javascripts/pipelines/components/graph/linked_pipeline.vue
@@ -42,7 +42,6 @@ export default {
<template>
<li class="linked-pipeline build">
- <div class="curve"></div>
<gl-button
:id="buttonId"
v-gl-tooltip
diff --git a/app/assets/javascripts/pipelines/components/graph/linked_pipelines_column.vue b/app/assets/javascripts/pipelines/components/graph/linked_pipelines_column.vue
index 6efdde2b17e..998519f9df1 100644
--- a/app/assets/javascripts/pipelines/components/graph/linked_pipelines_column.vue
+++ b/app/assets/javascripts/pipelines/components/graph/linked_pipelines_column.vue
@@ -1,5 +1,6 @@
<script>
import LinkedPipeline from './linked_pipeline.vue';
+import { __ } from '~/locale';
export default {
components: {
@@ -27,6 +28,9 @@ export default {
};
return `graph-position-${this.graphPosition} ${positionValues[this.graphPosition]}`;
},
+ isUpstream() {
+ return this.columnTitle === __('Upstream');
+ },
},
};
</script>
@@ -34,13 +38,12 @@ export default {
<template>
<div :class="columnClass" class="stage-column linked-pipelines-column">
<div class="stage-name linked-pipelines-column-title">{{ columnTitle }}</div>
- <div class="cross-project-triangle"></div>
+ <div v-if="isUpstream" class="cross-project-triangle"></div>
<ul>
<linked-pipeline
v-for="(pipeline, index) in linkedPipelines"
:key="pipeline.id"
:class="{
- 'flat-connector-before': index === 0 && graphPosition === 'right',
active: pipeline.isExpanded,
'left-connector': pipeline.isExpanded && graphPosition === 'left',
}"
diff --git a/app/assets/javascripts/pipelines/components/pipeline_stop_modal.vue b/app/assets/javascripts/pipelines/components/pipeline_stop_modal.vue
index 2e71b3c637b..7c4e651373f 100644
--- a/app/assets/javascripts/pipelines/components/pipeline_stop_modal.vue
+++ b/app/assets/javascripts/pipelines/components/pipeline_stop_modal.vue
@@ -1,7 +1,7 @@
<script>
import _ from 'underscore';
-import DeprecatedModal2 from '~/vue_shared/components/deprecated_modal_2.vue';
import { GlLink } from '@gitlab/ui';
+import DeprecatedModal2 from '~/vue_shared/components/deprecated_modal_2.vue';
import ClipboardButton from '~/vue_shared/components/clipboard_button.vue';
import CiIcon from '~/vue_shared/components/ci_icon.vue';
import { s__, sprintf } from '~/locale';
diff --git a/app/assets/javascripts/pipelines/components/test_reports/test_summary.vue b/app/assets/javascripts/pipelines/components/test_reports/test_summary.vue
index dce8b020d6f..1bac7ce9ac5 100644
--- a/app/assets/javascripts/pipelines/components/test_reports/test_summary.vue
+++ b/app/assets/javascripts/pipelines/components/test_reports/test_summary.vue
@@ -28,7 +28,9 @@ export default {
return this.report.name || __('Summary');
},
successPercentage() {
- return Math.round((this.report.success_count / this.report.total_count) * 100) || 0;
+ // Returns a full number when the decimals equal .00.
+ // Otherwise returns a float to two decimal points
+ return Number(((this.report.success_count / this.report.total_count) * 100 || 0).toFixed(2));
},
formattedDuration() {
return formatTime(secondsToMilliseconds(this.report.total_time));
diff --git a/app/assets/javascripts/pipelines/components/time_ago.vue b/app/assets/javascripts/pipelines/components/time_ago.vue
index 2ed0c24825c..2a23a0f6744 100644
--- a/app/assets/javascripts/pipelines/components/time_ago.vue
+++ b/app/assets/javascripts/pipelines/components/time_ago.vue
@@ -31,7 +31,7 @@ export default {
hasFinishedTime() {
return this.finishedTime !== '';
},
- durationFormated() {
+ durationFormatted() {
const date = new Date(this.duration * 1000);
let hh = date.getUTCHours();
@@ -59,7 +59,7 @@ export default {
<div class="table-mobile-header" role="rowheader">{{ s__('Pipeline|Duration') }}</div>
<div class="table-mobile-content">
<p v-if="hasDuration" class="duration">
- <span v-html="iconTimerSvg"> </span> {{ durationFormated }}
+ <span v-html="iconTimerSvg"> </span> {{ durationFormatted }}
</p>
<p v-if="hasFinishedTime" class="finished-at d-none d-sm-none d-md-block">
@@ -71,7 +71,7 @@ export default {
data-placement="top"
data-container="body"
>
- {{ timeFormated(finishedTime) }}
+ {{ timeFormatted(finishedTime) }}
</time>
</p>
</div>
diff --git a/app/assets/javascripts/pipelines/stores/test_reports/utils.js b/app/assets/javascripts/pipelines/stores/test_reports/utils.js
index 95466587d6b..16fa6935cbe 100644
--- a/app/assets/javascripts/pipelines/stores/test_reports/utils.js
+++ b/app/assets/javascripts/pipelines/stores/test_reports/utils.js
@@ -1,7 +1,7 @@
import { TestStatus } from '~/pipelines/constants';
import { formatTime, secondsToMilliseconds } from '~/lib/utils/datetime_utility';
-function iconForTestStatus(status) {
+export function iconForTestStatus(status) {
switch (status) {
case 'success':
return 'status_success_borderless';
diff --git a/app/assets/javascripts/project_find_file.js b/app/assets/javascripts/project_find_file.js
index 031c54d2336..d6cdd37a2c3 100644
--- a/app/assets/javascripts/project_find_file.js
+++ b/app/assets/javascripts/project_find_file.js
@@ -2,10 +2,11 @@
import $ from 'jquery';
import fuzzaldrinPlus from 'fuzzaldrin-plus';
+import sanitize from 'sanitize-html';
import axios from '~/lib/utils/axios_utils';
+import { joinPaths, escapeFileUrl } from '~/lib/utils/url_utility';
import flash from '~/flash';
import { __ } from '~/locale';
-import sanitize from 'sanitize-html';
// highlight text(awefwbwgtc -> <b>a</b>wefw<b>b</b>wgt<b>c</b> )
const highlighter = function(element, text, matches) {
@@ -116,7 +117,7 @@ export default class ProjectFindFile {
if (searchText) {
matches = fuzzaldrinPlus.match(filePath, searchText);
}
- const blobItemUrl = `${this.options.blobUrlTemplate}/${encodeURIComponent(filePath)}`;
+ const blobItemUrl = joinPaths(this.options.blobUrlTemplate, escapeFileUrl(filePath));
const html = ProjectFindFile.makeHtml(filePath, matches, blobItemUrl);
results.push(this.element.find('.tree-table > tbody').append(html));
}
diff --git a/app/assets/javascripts/projects/project_new.js b/app/assets/javascripts/projects/project_new.js
index 2429da9c061..92c4c05bd87 100644
--- a/app/assets/javascripts/projects/project_new.js
+++ b/app/assets/javascripts/projects/project_new.js
@@ -128,15 +128,15 @@ const bindEvents = () => {
},
iosswift: {
text: s__('ProjectTemplates|iOS (Swift)'),
- icon: '.template-option svg.icon-gitlab',
+ icon: '.template-option .icon-iosswift',
},
dotnetcore: {
text: s__('ProjectTemplates|.NET Core'),
- icon: '.template-option .icon-dotnet',
+ icon: '.template-option .icon-dotnetcore',
},
android: {
text: s__('ProjectTemplates|Android'),
- icon: '.template-option svg.icon-android',
+ icon: '.template-option .icon-android',
},
gomicro: {
text: s__('ProjectTemplates|Go Micro'),
@@ -164,23 +164,27 @@ const bindEvents = () => {
},
nfhugo: {
text: s__('ProjectTemplates|Netlify/Hugo'),
- icon: '.template-option .icon-netlify',
+ icon: '.template-option .icon-nfhugo',
},
nfjekyll: {
text: s__('ProjectTemplates|Netlify/Jekyll'),
- icon: '.template-option .icon-netlify',
+ icon: '.template-option .icon-nfjekyll',
},
nfplainhtml: {
text: s__('ProjectTemplates|Netlify/Plain HTML'),
- icon: '.template-option .icon-netlify',
+ icon: '.template-option .icon-nfplainhtml',
},
nfgitbook: {
text: s__('ProjectTemplates|Netlify/GitBook'),
- icon: '.template-option .icon-netlify',
+ icon: '.template-option .icon-nfgitbook',
},
nfhexo: {
text: s__('ProjectTemplates|Netlify/Hexo'),
- icon: '.template-option .icon-netlify',
+ icon: '.template-option .icon-nfhexo',
+ },
+ salesforcedx: {
+ text: s__('ProjectTemplates|SalesforceDX'),
+ icon: '.template-option .icon-salesforcedx',
},
serverless_framework: {
text: s__('ProjectTemplates|Serverless Framework/JS'),
diff --git a/app/assets/javascripts/projects/tree/components/commit_pipeline_status_component.vue b/app/assets/javascripts/projects/tree/components/commit_pipeline_status_component.vue
index 60fd3ed5ea7..f1106dc6ae9 100644
--- a/app/assets/javascripts/projects/tree/components/commit_pipeline_status_component.vue
+++ b/app/assets/javascripts/projects/tree/components/commit_pipeline_status_component.vue
@@ -1,11 +1,11 @@
<script>
import Visibility from 'visibilityjs';
+import { GlLoadingIcon } from '@gitlab/ui';
import ciIcon from '~/vue_shared/components/ci_icon.vue';
import Poll from '~/lib/utils/poll';
import Flash from '~/flash';
import { __, s__, sprintf } from '~/locale';
import tooltip from '~/vue_shared/directives/tooltip';
-import { GlLoadingIcon } from '@gitlab/ui';
import CommitPipelineService from '../services/commit_pipeline_service';
export default {
diff --git a/app/assets/javascripts/registry/components/app.vue b/app/assets/javascripts/registry/list/components/app.vue
index 11b2c3b7016..c555c2b04d1 100644
--- a/app/assets/javascripts/registry/components/app.vue
+++ b/app/assets/javascripts/registry/list/components/app.vue
@@ -5,7 +5,7 @@ import store from '../stores';
import CollapsibleContainer from './collapsible_container.vue';
import ProjectEmptyState from './project_empty_state.vue';
import GroupEmptyState from './group_empty_state.vue';
-import { s__, sprintf } from '../../locale';
+import { s__, sprintf } from '~/locale';
export default {
name: 'RegistryListApp',
diff --git a/app/assets/javascripts/registry/components/collapsible_container.vue b/app/assets/javascripts/registry/list/components/collapsible_container.vue
index 5a6f9370564..86bb2d8092e 100644
--- a/app/assets/javascripts/registry/components/collapsible_container.vue
+++ b/app/assets/javascripts/registry/list/components/collapsible_container.vue
@@ -31,7 +31,7 @@ export default {
GlTooltip: GlTooltipDirective,
GlModal: GlModalDirective,
},
- mixins: [Tracking.mixin({})],
+ mixins: [Tracking.mixin()],
props: {
repo: {
type: Object,
@@ -43,7 +43,6 @@ export default {
isOpen: false,
modalId: `confirm-repo-deletion-modal-${this.repo.id}`,
tracking: {
- category: document.body.dataset.page,
label: 'registry_repository_delete',
},
};
@@ -67,7 +66,7 @@ export default {
}
},
handleDeleteRepository() {
- this.track('confirm_delete', {});
+ this.track('confirm_delete');
return this.deleteItem(this.repo)
.then(() => {
createFlash(__('This container registry has been scheduled for deletion.'), 'notice');
@@ -103,7 +102,7 @@ export default {
:aria-label="s__('ContainerRegistry|Remove repository')"
class="js-remove-repo btn-inverted"
variant="danger"
- @click="track('click_button', {})"
+ @click="track('click_button')"
>
<icon name="remove" />
</gl-button>
@@ -132,7 +131,7 @@ export default {
:modal-id="modalId"
ok-variant="danger"
@ok="handleDeleteRepository"
- @cancel="track('cancel_delete', {})"
+ @cancel="track('cancel_delete')"
>
<template v-slot:modal-title>{{ s__('ContainerRegistry|Remove repository') }}</template>
<p
diff --git a/app/assets/javascripts/registry/components/group_empty_state.vue b/app/assets/javascripts/registry/list/components/group_empty_state.vue
index 7885fd2146d..7885fd2146d 100644
--- a/app/assets/javascripts/registry/components/group_empty_state.vue
+++ b/app/assets/javascripts/registry/list/components/group_empty_state.vue
diff --git a/app/assets/javascripts/registry/components/project_empty_state.vue b/app/assets/javascripts/registry/list/components/project_empty_state.vue
index 80ef31004c8..80ef31004c8 100644
--- a/app/assets/javascripts/registry/components/project_empty_state.vue
+++ b/app/assets/javascripts/registry/list/components/project_empty_state.vue
diff --git a/app/assets/javascripts/registry/components/table_registry.vue b/app/assets/javascripts/registry/list/components/table_registry.vue
index caa5fd4ff4e..4e14db7f578 100644
--- a/app/assets/javascripts/registry/components/table_registry.vue
+++ b/app/assets/javascripts/registry/list/components/table_registry.vue
@@ -23,7 +23,7 @@ export default {
directives: {
GlTooltip: GlTooltipDirective,
},
- mixins: [timeagoMixin],
+ mixins: [timeagoMixin, Tracking.mixin()],
props: {
repo: {
type: Object,
@@ -71,9 +71,6 @@ export default {
},
methods: {
...mapActions(['fetchList', 'deleteItem', 'multiDeleteItems']),
- track(action) {
- Tracking.event(document.body.dataset.page, action, this.tracking);
- },
setModalDescription(itemIndex = -1) {
if (itemIndex === -1) {
this.modalDescription = sprintf(
@@ -196,7 +193,7 @@ export default {
/>
</th>
<th>{{ s__('ContainerRegistry|Tag') }}</th>
- <th>{{ s__('ContainerRegistry|Tag ID') }}</th>
+ <th ref="imageId">{{ s__('ContainerRegistry|Image ID') }}</th>
<th>{{ s__('ContainerRegistry|Size') }}</th>
<th>{{ s__('ContainerRegistry|Last Updated') }}</th>
<th>
@@ -250,7 +247,7 @@ export default {
<td>
<span v-gl-tooltip.bottom :title="tooltipTitle(item.createdAt)">{{
- timeFormated(item.createdAt)
+ timeFormatted(item.createdAt)
}}</span>
</td>
diff --git a/app/assets/javascripts/registry/constants.js b/app/assets/javascripts/registry/list/constants.js
index db798fb88ac..e55ea9cc9d9 100644
--- a/app/assets/javascripts/registry/constants.js
+++ b/app/assets/javascripts/registry/list/constants.js
@@ -1,4 +1,4 @@
-import { __ } from '../locale';
+import { __ } from '~/locale';
export const FETCH_REGISTRY_ERROR_MESSAGE = __(
'Something went wrong while fetching the registry list.',
diff --git a/app/assets/javascripts/registry/index.js b/app/assets/javascripts/registry/list/index.js
index 18fd360f586..3d0ff327b42 100644
--- a/app/assets/javascripts/registry/index.js
+++ b/app/assets/javascripts/registry/list/index.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
import registryApp from './components/app.vue';
-import Translate from '../vue_shared/translate';
+import Translate from '~/vue_shared/translate';
Vue.use(Translate);
diff --git a/app/assets/javascripts/registry/stores/actions.js b/app/assets/javascripts/registry/list/stores/actions.js
index 6afba618486..6afba618486 100644
--- a/app/assets/javascripts/registry/stores/actions.js
+++ b/app/assets/javascripts/registry/list/stores/actions.js
diff --git a/app/assets/javascripts/registry/stores/getters.js b/app/assets/javascripts/registry/list/stores/getters.js
index ac90bde1b2a..ac90bde1b2a 100644
--- a/app/assets/javascripts/registry/stores/getters.js
+++ b/app/assets/javascripts/registry/list/stores/getters.js
diff --git a/app/assets/javascripts/registry/stores/index.js b/app/assets/javascripts/registry/list/stores/index.js
index 1bb06bd6e81..1bb06bd6e81 100644
--- a/app/assets/javascripts/registry/stores/index.js
+++ b/app/assets/javascripts/registry/list/stores/index.js
diff --git a/app/assets/javascripts/registry/stores/mutation_types.js b/app/assets/javascripts/registry/list/stores/mutation_types.js
index 6740bfede1a..6740bfede1a 100644
--- a/app/assets/javascripts/registry/stores/mutation_types.js
+++ b/app/assets/javascripts/registry/list/stores/mutation_types.js
diff --git a/app/assets/javascripts/registry/stores/mutations.js b/app/assets/javascripts/registry/list/stores/mutations.js
index 419de848883..419de848883 100644
--- a/app/assets/javascripts/registry/stores/mutations.js
+++ b/app/assets/javascripts/registry/list/stores/mutations.js
diff --git a/app/assets/javascripts/registry/stores/state.js b/app/assets/javascripts/registry/list/stores/state.js
index 724c64b4994..724c64b4994 100644
--- a/app/assets/javascripts/registry/stores/state.js
+++ b/app/assets/javascripts/registry/list/stores/state.js
diff --git a/app/assets/javascripts/registry/settings/components/registry_settings_app.vue b/app/assets/javascripts/registry/settings/components/registry_settings_app.vue
new file mode 100644
index 00000000000..b2c700b817c
--- /dev/null
+++ b/app/assets/javascripts/registry/settings/components/registry_settings_app.vue
@@ -0,0 +1,43 @@
+<script>
+import { mapState } from 'vuex';
+import { s__, sprintf } from '~/locale';
+
+export default {
+ components: {},
+ computed: {
+ ...mapState({
+ helpPagePath: 'helpPagePath',
+ }),
+
+ helpText() {
+ return sprintf(
+ s__(
+ 'PackageRegistry|Read more about the %{helpLinkStart}Container Registry tag retention policies%{helpLinkEnd}',
+ ),
+ {
+ helpLinkStart: `<a href="${this.helpPagePath}" target="_blank">`,
+ helpLinkEnd: '</a>',
+ },
+ false,
+ );
+ },
+ },
+};
+</script>
+
+<template>
+ <div>
+ <p>
+ {{ s__('PackageRegistry|Tag retention policies are designed to:') }}
+ </p>
+ <ul>
+ <li>{{ s__('PackageRegistry|Keep and protect the images that matter most.') }}</li>
+ <li>
+ {{
+ s__("PackageRegistry|Automatically remove extra images that aren't designed to be kept.")
+ }}
+ </li>
+ </ul>
+ <p ref="help-link" v-html="helpText"></p>
+ </div>
+</template>
diff --git a/app/assets/javascripts/registry/settings/registry_settings_bundle.js b/app/assets/javascripts/registry/settings/registry_settings_bundle.js
new file mode 100644
index 00000000000..2938178ea86
--- /dev/null
+++ b/app/assets/javascripts/registry/settings/registry_settings_bundle.js
@@ -0,0 +1,24 @@
+import Vue from 'vue';
+import Translate from '~/vue_shared/translate';
+import store from './stores/';
+import RegistrySettingsApp from './components/registry_settings_app.vue';
+
+Vue.use(Translate);
+
+export default () => {
+ const el = document.getElementById('js-registry-settings');
+ if (!el) {
+ return null;
+ }
+ store.dispatch('setInitialState', el.dataset);
+ return new Vue({
+ el,
+ store,
+ components: {
+ RegistrySettingsApp,
+ },
+ render(createElement) {
+ return createElement('registry-settings-app', {});
+ },
+ });
+};
diff --git a/app/assets/javascripts/registry/settings/stores/actions.js b/app/assets/javascripts/registry/settings/stores/actions.js
new file mode 100644
index 00000000000..f2c469d4edb
--- /dev/null
+++ b/app/assets/javascripts/registry/settings/stores/actions.js
@@ -0,0 +1,6 @@
+import * as types from './mutation_types';
+
+export const setInitialState = ({ commit }, data) => commit(types.SET_INITIAL_STATE, data);
+
+// to avoid eslint error until more actions are added to the store
+export default () => {};
diff --git a/app/assets/javascripts/registry/settings/stores/index.js b/app/assets/javascripts/registry/settings/stores/index.js
new file mode 100644
index 00000000000..91a35aac149
--- /dev/null
+++ b/app/assets/javascripts/registry/settings/stores/index.js
@@ -0,0 +1,16 @@
+import Vue from 'vue';
+import Vuex from 'vuex';
+import * as actions from './actions';
+import mutations from './mutations';
+import state from './state';
+
+Vue.use(Vuex);
+
+export const createStore = () =>
+ new Vuex.Store({
+ state,
+ actions,
+ mutations,
+ });
+
+export default createStore();
diff --git a/app/assets/javascripts/registry/settings/stores/mutation_types.js b/app/assets/javascripts/registry/settings/stores/mutation_types.js
new file mode 100644
index 00000000000..8a0f519eabd
--- /dev/null
+++ b/app/assets/javascripts/registry/settings/stores/mutation_types.js
@@ -0,0 +1,4 @@
+export const SET_INITIAL_STATE = 'SET_INITIAL_STATE';
+
+// to avoid eslint error until more actions are added to the store
+export default () => {};
diff --git a/app/assets/javascripts/registry/settings/stores/mutations.js b/app/assets/javascripts/registry/settings/stores/mutations.js
new file mode 100644
index 00000000000..4f32e11ed52
--- /dev/null
+++ b/app/assets/javascripts/registry/settings/stores/mutations.js
@@ -0,0 +1,8 @@
+import * as types from './mutation_types';
+
+export default {
+ [types.SET_INITIAL_STATE](state, initialState) {
+ state.helpPagePath = initialState.helpPagePath;
+ state.registrySettingsEndpoint = initialState.registrySettingsEndpoint;
+ },
+};
diff --git a/app/assets/javascripts/registry/settings/stores/state.js b/app/assets/javascripts/registry/settings/stores/state.js
new file mode 100644
index 00000000000..4c0439458b6
--- /dev/null
+++ b/app/assets/javascripts/registry/settings/stores/state.js
@@ -0,0 +1,10 @@
+export default () => ({
+ /*
+ * Help page path to generate the link
+ */
+ helpPagePath: '',
+ /*
+ * Settings endpoint to call to fetch and update the settings
+ */
+ registrySettingsEndpoint: '',
+});
diff --git a/app/assets/javascripts/related_merge_requests/components/related_merge_requests.vue b/app/assets/javascripts/related_merge_requests/components/related_merge_requests.vue
index f0112a5a623..dc7c9d9f174 100644
--- a/app/assets/javascripts/related_merge_requests/components/related_merge_requests.vue
+++ b/app/assets/javascripts/related_merge_requests/components/related_merge_requests.vue
@@ -72,7 +72,7 @@ export default {
{{ __('Related merge requests') }}
</span>
<div v-if="totalCount" class="d-inline-flex lh-100 align-middle">
- <div class="mr-count-badge">
+ <div class="mr-count-badge border-width-1px border-style-solid border-color-default">
<div class="mr-count-badge-count">
<svg class="s16 mr-1 text-secondary">
<icon name="merge-request" class="mr-1 text-secondary" />
diff --git a/app/assets/javascripts/releases/list/components/app.vue b/app/assets/javascripts/releases/list/components/app.vue
index 5a06c4fec58..a414b3ccd4e 100644
--- a/app/assets/javascripts/releases/list/components/app.vue
+++ b/app/assets/javascripts/releases/list/components/app.vue
@@ -1,6 +1,12 @@
<script>
import { mapState, mapActions } from 'vuex';
import { GlSkeletonLoading, GlEmptyState } from '@gitlab/ui';
+import {
+ getParameterByName,
+ historyPushState,
+ buildUrlWithCurrentLocation,
+} from '~/lib/utils/common_utils';
+import TablePagination from '~/vue_shared/components/pagination/table_pagination.vue';
import ReleaseBlock from './release_block.vue';
export default {
@@ -9,6 +15,7 @@ export default {
GlSkeletonLoading,
GlEmptyState,
ReleaseBlock,
+ TablePagination,
},
props: {
projectId: {
@@ -25,7 +32,7 @@ export default {
},
},
computed: {
- ...mapState(['isLoading', 'releases', 'hasError']),
+ ...mapState(['isLoading', 'releases', 'hasError', 'pageInfo']),
shouldRenderEmptyState() {
return !this.releases.length && !this.hasError && !this.isLoading;
},
@@ -34,10 +41,17 @@ export default {
},
},
created() {
- this.fetchReleases(this.projectId);
+ this.fetchReleases({
+ page: getParameterByName('page'),
+ projectId: this.projectId,
+ });
},
methods: {
...mapActions(['fetchReleases']),
+ onChangePage(page) {
+ historyPushState(buildUrlWithCurrentLocation(`?page=${page}`));
+ this.fetchReleases({ page, projectId: this.projectId });
+ },
},
};
</script>
@@ -67,6 +81,8 @@ export default {
:class="{ 'linked-card': releases.length > 1 && index !== releases.length - 1 }"
/>
</div>
+
+ <table-pagination v-if="!isLoading" :change="onChangePage" :page-info="pageInfo" />
</div>
</template>
<style>
diff --git a/app/assets/javascripts/releases/list/components/evidence_block.vue b/app/assets/javascripts/releases/list/components/evidence_block.vue
new file mode 100644
index 00000000000..d9abd195fee
--- /dev/null
+++ b/app/assets/javascripts/releases/list/components/evidence_block.vue
@@ -0,0 +1,76 @@
+<script>
+import { GlLink, GlTooltipDirective } from '@gitlab/ui';
+import { __, sprintf } from '~/locale';
+import { truncateSha } from '~/lib/utils/text_utility';
+import Icon from '~/vue_shared/components/icon.vue';
+import ClipboardButton from '~/vue_shared/components/clipboard_button.vue';
+import ExpandButton from '~/vue_shared/components/expand_button.vue';
+
+export default {
+ name: 'EvidenceBlock',
+ components: {
+ ClipboardButton,
+ ExpandButton,
+ GlLink,
+ Icon,
+ },
+ directives: {
+ GlTooltip: GlTooltipDirective,
+ },
+ props: {
+ release: {
+ type: Object,
+ required: true,
+ },
+ },
+ computed: {
+ evidenceTitle() {
+ return sprintf(__('%{tag}-evidence.json'), { tag: this.release.tag_name });
+ },
+ evidenceUrl() {
+ return this.release.assets && this.release.assets.evidence_file_path;
+ },
+ shortSha() {
+ return truncateSha(this.sha);
+ },
+ sha() {
+ return this.release.evidence_sha;
+ },
+ },
+};
+</script>
+
+<template>
+ <div>
+ <div class="card-text prepend-top-default">
+ <b>
+ {{ __('Evidence collection') }}
+ </b>
+ </div>
+ <div class="d-flex align-items-baseline">
+ <gl-link
+ v-gl-tooltip
+ class="monospace"
+ :title="__('Download evidence JSON')"
+ :download="evidenceTitle"
+ :href="evidenceUrl"
+ >
+ <icon name="review-list" class="align-top append-right-4" /><span>{{ evidenceTitle }}</span>
+ </gl-link>
+
+ <expand-button>
+ <template slot="short">
+ <span class="js-short monospace">{{ shortSha }}</span>
+ </template>
+ <template slot="expanded">
+ <span class="js-expanded monospace gl-pl-1">{{ sha }}</span>
+ </template>
+ </expand-button>
+ <clipboard-button
+ :title="__('Copy commit SHA')"
+ :text="sha"
+ css-class="btn-default btn-transparent btn-clipboard"
+ />
+ </div>
+ </div>
+</template>
diff --git a/app/assets/javascripts/releases/list/components/release_block.vue b/app/assets/javascripts/releases/list/components/release_block.vue
index 2b6aa6aeff9..4d8d8682401 100644
--- a/app/assets/javascripts/releases/list/components/release_block.vue
+++ b/app/assets/javascripts/releases/list/components/release_block.vue
@@ -11,16 +11,20 @@ import { getLocationHash } from '~/lib/utils/url_utility';
import { scrollToElement } from '~/lib/utils/common_utils';
import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
import ReleaseBlockFooter from './release_block_footer.vue';
+import EvidenceBlock from './evidence_block.vue';
+import ReleaseBlockMilestoneInfo from './release_block_milestone_info.vue';
export default {
name: 'ReleaseBlock',
components: {
+ EvidenceBlock,
GlLink,
GlBadge,
GlButton,
Icon,
UserAvatarLink,
ReleaseBlockFooter,
+ ReleaseBlockMilestoneInfo,
},
directives: {
GlTooltip: GlTooltipDirective,
@@ -44,7 +48,7 @@ export default {
},
releasedTimeAgo() {
return sprintf(__('released %{time}'), {
- time: this.timeFormated(this.release.released_at),
+ time: this.timeFormatted(this.release.released_at),
});
},
userImageAltDescription() {
@@ -70,6 +74,9 @@ export default {
hasAuthor() {
return !_.isEmpty(this.author);
},
+ hasEvidence() {
+ return Boolean(this.release.evidence_sha);
+ },
shouldRenderMilestones() {
return !_.isEmpty(this.release.milestones);
},
@@ -77,13 +84,20 @@ export default {
return n__('Milestone', 'Milestones', this.release.milestones.length);
},
shouldShowEditButton() {
- return Boolean(
- this.glFeatures.releaseEditPage && this.release._links && this.release._links.edit_url,
- );
+ return Boolean(this.release._links && this.release._links.edit_url);
+ },
+ shouldShowEvidence() {
+ return this.glFeatures.releaseEvidenceCollection;
},
shouldShowFooter() {
return this.glFeatures.releaseIssueSummary;
},
+ shouldRenderReleaseMetaData() {
+ return !this.glFeatures.releaseIssueSummary;
+ },
+ shouldRenderMilestoneInfo() {
+ return Boolean(this.glFeatures.releaseIssueSummary && !_.isEmpty(this.release.milestones));
+ },
},
mounted() {
const hash = getLocationHash();
@@ -100,26 +114,30 @@ export default {
</script>
<template>
<div :id="id" :class="{ 'bg-line-target-blue': isHighlighted }" class="card release-block">
+ <div class="card-header d-flex align-items-center bg-white pr-0">
+ <h2 class="card-title my-2 mr-auto gl-font-size-20">
+ {{ release.name }}
+ <gl-badge v-if="release.upcoming_release" variant="warning" class="align-middle">{{
+ __('Upcoming Release')
+ }}</gl-badge>
+ </h2>
+ <gl-link
+ v-if="shouldShowEditButton"
+ v-gl-tooltip
+ class="btn btn-default append-right-10 js-edit-button ml-2"
+ :title="__('Edit this release')"
+ :href="release._links.edit_url"
+ >
+ <icon name="pencil" />
+ </gl-link>
+ </div>
<div class="card-body">
- <div class="d-flex align-items-start">
- <h2 class="card-title mt-0 mr-auto">
- {{ release.name }}
- <gl-badge v-if="release.upcoming_release" variant="warning" class="align-middle">{{
- __('Upcoming Release')
- }}</gl-badge>
- </h2>
- <gl-link
- v-if="shouldShowEditButton"
- v-gl-tooltip
- class="btn btn-default js-edit-button ml-2"
- :title="__('Edit this release')"
- :href="release._links.edit_url"
- >
- <icon name="pencil" />
- </gl-link>
+ <div v-if="shouldRenderMilestoneInfo">
+ <release-block-milestone-info :milestones="release.milestones" />
+ <hr class="mb-3 mt-0" />
</div>
- <div class="card-subtitle d-flex flex-wrap text-secondary">
+ <div v-if="shouldRenderReleaseMetaData" class="card-subtitle d-flex flex-wrap text-secondary">
<div class="append-right-8">
<icon name="commit" class="align-middle" />
<gl-link v-if="commitUrl" v-gl-tooltip.bottom :title="commit.title" :href="commitUrl">
@@ -217,6 +235,8 @@ export default {
</div>
</div>
+ <evidence-block v-if="hasEvidence && shouldShowEvidence" :release="release" />
+
<div class="card-text prepend-top-default">
<div v-html="release.description_html"></div>
</div>
diff --git a/app/assets/javascripts/releases/list/components/release_block_footer.vue b/app/assets/javascripts/releases/list/components/release_block_footer.vue
index 5659f0e530b..8533fc17ffd 100644
--- a/app/assets/javascripts/releases/list/components/release_block_footer.vue
+++ b/app/assets/javascripts/releases/list/components/release_block_footer.vue
@@ -1,6 +1,6 @@
<script>
-import Icon from '~/vue_shared/components/icon.vue';
import { GlTooltipDirective, GlLink } from '@gitlab/ui';
+import Icon from '~/vue_shared/components/icon.vue';
import UserAvatarLink from '~/vue_shared/components/user_avatar/user_avatar_link.vue';
import timeagoMixin from '~/vue_shared/mixins/timeago';
import { __, sprintf } from '~/locale';
@@ -50,7 +50,7 @@ export default {
},
computed: {
releasedAtTimeAgo() {
- return this.timeFormated(this.releasedAt);
+ return this.timeFormatted(this.releasedAt);
},
userImageAltDescription() {
return this.author && this.author.username
diff --git a/app/assets/javascripts/releases/list/components/release_block_milestone_info.vue b/app/assets/javascripts/releases/list/components/release_block_milestone_info.vue
new file mode 100644
index 00000000000..d3e354d6157
--- /dev/null
+++ b/app/assets/javascripts/releases/list/components/release_block_milestone_info.vue
@@ -0,0 +1,136 @@
+<script>
+import { GlProgressBar, GlLink, GlBadge, GlButton, GlTooltipDirective } from '@gitlab/ui';
+import { __, n__, sprintf } from '~/locale';
+import { MAX_MILESTONES_TO_DISPLAY } from '../constants';
+
+/** Sums the values of an array. For use with Array.reduce. */
+const sumReducer = (acc, curr) => acc + curr;
+
+export default {
+ name: 'ReleaseBlockMilestoneInfo',
+ components: {
+ GlProgressBar,
+ GlLink,
+ GlBadge,
+ GlButton,
+ },
+ directives: {
+ GlTooltip: GlTooltipDirective,
+ },
+ props: {
+ milestones: {
+ type: Array,
+ required: true,
+ },
+ },
+ data() {
+ return {
+ showAllMilestones: false,
+ };
+ },
+ computed: {
+ percentCompleteText() {
+ return sprintf(__('%{percent}%{percentSymbol} complete'), {
+ percent: this.percentComplete,
+ percentSymbol: '%',
+ });
+ },
+ percentComplete() {
+ const percent = Math.round((this.closedIssuesCount / this.totalIssuesCount) * 100);
+ return Number.isNaN(percent) ? 0 : percent;
+ },
+ allIssueStats() {
+ return this.milestones.map(m => m.issue_stats || {});
+ },
+ openIssuesCount() {
+ return this.allIssueStats.map(stats => stats.opened || 0).reduce(sumReducer);
+ },
+ closedIssuesCount() {
+ return this.allIssueStats.map(stats => stats.closed || 0).reduce(sumReducer);
+ },
+ totalIssuesCount() {
+ return this.openIssuesCount + this.closedIssuesCount;
+ },
+ milestoneLabelText() {
+ return n__('Milestone', 'Milestones', this.milestones.length);
+ },
+ issueCountsText() {
+ return sprintf(__('Open: %{open} • Closed: %{closed}'), {
+ open: this.openIssuesCount,
+ closed: this.closedIssuesCount,
+ });
+ },
+ milestonesToDisplay() {
+ return this.showAllMilestones
+ ? this.milestones
+ : this.milestones.slice(0, MAX_MILESTONES_TO_DISPLAY);
+ },
+ showMoreLink() {
+ return this.milestones.length > MAX_MILESTONES_TO_DISPLAY;
+ },
+ moreText() {
+ return this.showAllMilestones
+ ? __('show fewer')
+ : sprintf(__('show %{count} more'), {
+ count: this.milestones.length - MAX_MILESTONES_TO_DISPLAY,
+ });
+ },
+ },
+ methods: {
+ toggleShowAll() {
+ this.showAllMilestones = !this.showAllMilestones;
+ },
+ shouldRenderBullet(milestoneIndex) {
+ return Boolean(milestoneIndex !== this.milestonesToDisplay.length - 1 || this.showMoreLink);
+ },
+ shouldRenderShowMoreLink(milestoneIndex) {
+ return Boolean(milestoneIndex === this.milestonesToDisplay.length - 1 && this.showMoreLink);
+ },
+ },
+};
+</script>
+<template>
+ <div class="release-block-milestone-info d-flex align-items-start flex-wrap">
+ <div
+ v-gl-tooltip
+ class="milestone-progress-bar-container js-milestone-progress-bar-container d-flex flex-column align-items-start flex-shrink-1 mr-4 mb-3"
+ :title="__('Closed issues')"
+ >
+ <span class="mb-2">{{ percentCompleteText }}</span>
+ <span class="w-100">
+ <gl-progress-bar :value="closedIssuesCount" :max="totalIssuesCount" variant="success" />
+ </span>
+ </div>
+ <div class="d-flex flex-column align-items-start mr-4 mb-3 js-milestone-list-container">
+ <span class="mb-1">{{ milestoneLabelText }}</span>
+ <div class="d-flex flex-wrap align-items-end">
+ <template v-for="(milestone, index) in milestonesToDisplay">
+ <gl-link
+ :key="milestone.id"
+ v-gl-tooltip
+ :title="milestone.description"
+ :href="milestone.web_url"
+ class="append-right-4"
+ >
+ {{ milestone.title }}
+ </gl-link>
+ <template v-if="shouldRenderBullet(index)">
+ <span :key="'bullet-' + milestone.id" class="append-right-4">&bull;</span>
+ </template>
+ <template v-if="shouldRenderShowMoreLink(index)">
+ <gl-button :key="'more-button-' + milestone.id" variant="link" @click="toggleShowAll">
+ {{ moreText }}
+ </gl-button>
+ </template>
+ </template>
+ </div>
+ </div>
+ <div class="d-flex flex-column align-items-start flex-shrink-0 mr-4 mb-3 js-issues-container">
+ <span class="mb-1">
+ {{ __('Issues') }}
+ <gl-badge pill variant="light" class="font-weight-bold">{{ totalIssuesCount }}</gl-badge>
+ </span>
+ {{ issueCountsText }}
+ </div>
+ </div>
+</template>
diff --git a/app/assets/javascripts/releases/list/constants.js b/app/assets/javascripts/releases/list/constants.js
new file mode 100644
index 00000000000..defcd917465
--- /dev/null
+++ b/app/assets/javascripts/releases/list/constants.js
@@ -0,0 +1,7 @@
+/* eslint-disable import/prefer-default-export */
+// This eslint-disable ^^^ can be removed when at least
+// one more constant is added to this file. Currently
+// constants.js files with only a single constant
+// are flagged by this rule.
+
+export const MAX_MILESTONES_TO_DISPLAY = 5;
diff --git a/app/assets/javascripts/releases/list/store/actions.js b/app/assets/javascripts/releases/list/store/actions.js
index e0a922d5ef6..b15fb69226f 100644
--- a/app/assets/javascripts/releases/list/store/actions.js
+++ b/app/assets/javascripts/releases/list/store/actions.js
@@ -2,6 +2,7 @@ import * as types from './mutation_types';
import createFlash from '~/flash';
import { __ } from '~/locale';
import api from '~/api';
+import { normalizeHeaders, parseIntPagination } from '~/lib/utils/common_utils';
/**
* Commits a mutation to update the state while the main endpoint is being requested.
@@ -16,17 +17,19 @@ export const requestReleases = ({ commit }) => commit(types.REQUEST_RELEASES);
*
* @param {String} projectId
*/
-export const fetchReleases = ({ dispatch }, projectId) => {
+export const fetchReleases = ({ dispatch }, { page = '1', projectId }) => {
dispatch('requestReleases');
api
- .releases(projectId)
- .then(({ data }) => dispatch('receiveReleasesSuccess', data))
+ .releases(projectId, { page })
+ .then(response => dispatch('receiveReleasesSuccess', response))
.catch(() => dispatch('receiveReleasesError'));
};
-export const receiveReleasesSuccess = ({ commit }, data) =>
- commit(types.RECEIVE_RELEASES_SUCCESS, data);
+export const receiveReleasesSuccess = ({ commit }, { data, headers }) => {
+ const pageInfo = parseIntPagination(normalizeHeaders(headers));
+ commit(types.RECEIVE_RELEASES_SUCCESS, { data, pageInfo });
+};
export const receiveReleasesError = ({ commit }) => {
commit(types.RECEIVE_RELEASES_ERROR);
diff --git a/app/assets/javascripts/releases/list/store/mutations.js b/app/assets/javascripts/releases/list/store/mutations.js
index b97dc6cb0ab..99fc096264a 100644
--- a/app/assets/javascripts/releases/list/store/mutations.js
+++ b/app/assets/javascripts/releases/list/store/mutations.js
@@ -13,13 +13,15 @@ export default {
* Sets isLoading to false.
* Sets hasError to false.
* Sets the received data
+ * Sets the received pagination information
* @param {Object} state
- * @param {Object} data
+ * @param {Object} resp
*/
- [types.RECEIVE_RELEASES_SUCCESS](state, data) {
+ [types.RECEIVE_RELEASES_SUCCESS](state, { data, pageInfo }) {
state.hasError = false;
state.isLoading = false;
state.releases = data;
+ state.pageInfo = pageInfo;
},
/**
diff --git a/app/assets/javascripts/releases/list/store/state.js b/app/assets/javascripts/releases/list/store/state.js
index bf25e651c99..c251f56c9c5 100644
--- a/app/assets/javascripts/releases/list/store/state.js
+++ b/app/assets/javascripts/releases/list/store/state.js
@@ -2,4 +2,5 @@ export default () => ({
isLoading: false,
hasError: false,
releases: [],
+ pageInfo: {},
});
diff --git a/app/assets/javascripts/reports/components/report_item.vue b/app/assets/javascripts/reports/components/report_item.vue
index 3c8a9e6ebef..51062cd7928 100644
--- a/app/assets/javascripts/reports/components/report_item.vue
+++ b/app/assets/javascripts/reports/components/report_item.vue
@@ -1,6 +1,6 @@
<script>
-import IssueStatusIcon from '~/reports/components/issue_status_icon.vue';
import { components, componentNames } from 'ee_else_ce/reports/components/issue_body';
+import IssueStatusIcon from '~/reports/components/issue_status_icon.vue';
export default {
name: 'ReportItem',
diff --git a/app/assets/javascripts/reports/components/summary_row.vue b/app/assets/javascripts/reports/components/summary_row.vue
index aba798e63d0..1191e43d0d9 100644
--- a/app/assets/javascripts/reports/components/summary_row.vue
+++ b/app/assets/javascripts/reports/components/summary_row.vue
@@ -1,7 +1,7 @@
<script>
+import { GlLoadingIcon } from '@gitlab/ui';
import CiIcon from '~/vue_shared/components/ci_icon.vue';
import Popover from '~/vue_shared/components/help_popover.vue';
-import { GlLoadingIcon } from '@gitlab/ui';
/**
* Renders the summary row for each report
diff --git a/app/assets/javascripts/repository/components/breadcrumbs.vue b/app/assets/javascripts/repository/components/breadcrumbs.vue
index afb58a60155..f6b9ea5d30d 100644
--- a/app/assets/javascripts/repository/components/breadcrumbs.vue
+++ b/app/assets/javascripts/repository/components/breadcrumbs.vue
@@ -124,7 +124,7 @@ export default {
},
{
attrs: {
- href: this.newBlobPath,
+ href: `${this.newBlobPath}${this.currentPath}`,
class: 'qa-new-file-option',
},
text: __('New file'),
diff --git a/app/assets/javascripts/repository/components/preview/index.vue b/app/assets/javascripts/repository/components/preview/index.vue
index 7f974838359..6b3822151ff 100644
--- a/app/assets/javascripts/repository/components/preview/index.vue
+++ b/app/assets/javascripts/repository/components/preview/index.vue
@@ -35,11 +35,13 @@ export default {
<template>
<article class="file-holder limited-width-container readme-holder">
- <div class="file-title">
- <i aria-hidden="true" class="fa fa-file-text-o fa-fw"></i>
- <gl-link :href="blob.webUrl">
- <strong>{{ blob.name }}</strong>
- </gl-link>
+ <div class="js-file-title file-title-flex-parent">
+ <div class="file-header-content">
+ <i aria-hidden="true" class="fa fa-file-text-o fa-fw"></i>
+ <gl-link :href="blob.webUrl">
+ <strong>{{ blob.name }}</strong>
+ </gl-link>
+ </div>
</div>
<div class="blob-viewer">
<gl-loading-icon v-if="loading > 0" size="md" class="my-4 mx-auto" />
diff --git a/app/assets/javascripts/repository/index.js b/app/assets/javascripts/repository/index.js
index d826f209815..ae6409a0ac9 100644
--- a/app/assets/javascripts/repository/index.js
+++ b/app/assets/javascripts/repository/index.js
@@ -7,6 +7,7 @@ import TreeActionLink from './components/tree_action_link.vue';
import DirectoryDownloadLinks from './components/directory_download_links.vue';
import apolloProvider from './graphql';
import { setTitle } from './utils/title';
+import { updateFormAction } from './utils/dom';
import { parseBoolean } from '../lib/utils/common_utils';
import { webIDEUrl } from '../lib/utils/url_utility';
import { __ } from '../locale';
@@ -42,8 +43,15 @@ export default function setupVueRepositoryList() {
forkNewBlobPath,
forkNewDirectoryPath,
forkUploadBlobPath,
+ uploadPath,
+ newDirPath,
} = breadcrumbEl.dataset;
+ router.afterEach(({ params: { pathMatch = '/' } }) => {
+ updateFormAction('.js-upload-blob-form', uploadPath, pathMatch);
+ updateFormAction('.js-create-dir-form', newDirPath, pathMatch);
+ });
+
// eslint-disable-next-line no-new
new Vue({
el: breadcrumbEl,
diff --git a/app/assets/javascripts/repository/log_tree.js b/app/assets/javascripts/repository/log_tree.js
index 5bf30e625a0..6498725adb6 100644
--- a/app/assets/javascripts/repository/log_tree.js
+++ b/app/assets/javascripts/repository/log_tree.js
@@ -1,5 +1,5 @@
-import axios from '~/lib/utils/axios_utils';
import { normalizeData } from 'ee_else_ce/repository/utils/commit';
+import axios from '~/lib/utils/axios_utils';
import getCommits from './queries/getCommits.query.graphql';
import getProjectPath from './queries/getProjectPath.query.graphql';
import getRef from './queries/getRef.query.graphql';
@@ -7,8 +7,8 @@ import getRef from './queries/getRef.query.graphql';
let fetchpromise;
let resolvers = [];
-export function resolveCommit(commits, { resolve, entry }) {
- const commit = commits.find(c => c.fileName === entry.name && c.type === entry.type);
+export function resolveCommit(commits, path, { resolve, entry }) {
+ const commit = commits.find(c => c.filePath === `${path}/${entry.name}` && c.type === entry.type);
if (commit) {
resolve(commit);
@@ -35,13 +35,13 @@ export function fetchLogsTree(client, path, offset, resolver = null) {
.then(({ data, headers }) => {
const headerLogsOffset = headers['more-logs-offset'];
const { commits } = client.readQuery({ query: getCommits });
- const newCommitData = [...commits, ...normalizeData(data)];
+ const newCommitData = [...commits, ...normalizeData(data, path)];
client.writeQuery({
query: getCommits,
data: { commits: newCommitData },
});
- resolvers.forEach(r => resolveCommit(newCommitData, r));
+ resolvers.forEach(r => resolveCommit(newCommitData, path, r));
fetchpromise = null;
diff --git a/app/assets/javascripts/repository/utils/commit.js b/app/assets/javascripts/repository/utils/commit.js
index 6c204b57b37..3973798605d 100644
--- a/app/assets/javascripts/repository/utils/commit.js
+++ b/app/assets/javascripts/repository/utils/commit.js
@@ -1,11 +1,12 @@
// eslint-disable-next-line import/prefer-default-export
-export function normalizeData(data, extra = () => {}) {
+export function normalizeData(data, path, extra = () => {}) {
return data.map(d => ({
sha: d.commit.id,
message: d.commit.message,
committedDate: d.commit.committed_date,
commitPath: d.commit_path,
fileName: d.file_name,
+ filePath: `${path}/${d.file_name}`,
type: d.type,
__typename: 'LogTreeCommit',
...extra(d),
diff --git a/app/assets/javascripts/repository/utils/dom.js b/app/assets/javascripts/repository/utils/dom.js
index 963e6fc0bc4..81565a00d82 100644
--- a/app/assets/javascripts/repository/utils/dom.js
+++ b/app/assets/javascripts/repository/utils/dom.js
@@ -1,4 +1,11 @@
-// eslint-disable-next-line import/prefer-default-export
export const updateElementsVisibility = (selector, isVisible) => {
document.querySelectorAll(selector).forEach(elem => elem.classList.toggle('hidden', !isVisible));
};
+
+export const updateFormAction = (selector, basePath, path) => {
+ const form = document.querySelector(selector);
+
+ if (form) {
+ form.action = `${basePath}${path}`;
+ }
+};
diff --git a/app/assets/javascripts/serverless/components/area.vue b/app/assets/javascripts/serverless/components/area.vue
index a1a8cd3acbd..272c0bd5614 100644
--- a/app/assets/javascripts/serverless/components/area.vue
+++ b/app/assets/javascripts/serverless/components/area.vue
@@ -1,7 +1,7 @@
<script>
import { GlAreaChart } from '@gitlab/ui/dist/charts';
-import { debounceByAnimationFrame } from '~/lib/utils/common_utils';
import dateFormat from 'dateformat';
+import { debounceByAnimationFrame } from '~/lib/utils/common_utils';
import { X_INTERVAL } from '../constants';
import { validateGraphData } from '../utils';
import { __ } from '~/locale';
diff --git a/app/assets/javascripts/serverless/components/functions.vue b/app/assets/javascripts/serverless/components/functions.vue
index 9e66869515c..308bc4a2ddd 100644
--- a/app/assets/javascripts/serverless/components/functions.vue
+++ b/app/assets/javascripts/serverless/components/functions.vue
@@ -1,7 +1,7 @@
<script>
-import { sprintf, s__ } from '~/locale';
import { mapState, mapActions, mapGetters } from 'vuex';
import { GlLoadingIcon } from '@gitlab/ui';
+import { sprintf, s__ } from '~/locale';
import FunctionRow from './function_row.vue';
import EnvironmentRow from './environment_row.vue';
import EmptyState from './empty_state.vue';
@@ -44,12 +44,14 @@ export default {
'Serverless|Your repository does not have a corresponding %{startTag}serverless.yml%{endTag} file.',
),
{ startTag: '<code>', endTag: '</code>' },
+ false,
);
},
noGitlabYamlConfigured() {
return sprintf(
s__('Serverless|Your %{startTag}.gitlab-ci.yml%{endTag} file is not properly configured.'),
{ startTag: '<code>', endTag: '</code>' },
+ false,
);
},
mismatchedServerlessFunctions() {
@@ -58,6 +60,7 @@ export default {
"Serverless|The functions listed in the %{startTag}serverless.yml%{endTag} file don't match the namespace of your cluster.",
),
{ startTag: '<code>', endTag: '</code>' },
+ false,
);
},
},
@@ -111,15 +114,9 @@ export default {
}}
</p>
<ul>
- <li>
- {{ noServerlessConfigFile }}
- </li>
- <li>
- {{ noGitlabYamlConfigured }}
- </li>
- <li>
- {{ mismatchedServerlessFunctions }}
- </li>
+ <li v-html="noServerlessConfigFile"></li>
+ <li v-html="noGitlabYamlConfigured"></li>
+ <li v-html="mismatchedServerlessFunctions"></li>
<li>{{ s__('Serverless|The deploy job has not finished.') }}</li>
</ul>
diff --git a/app/assets/javascripts/set_status_modal/set_status_modal_wrapper.vue b/app/assets/javascripts/set_status_modal/set_status_modal_wrapper.vue
index df950e79690..2757d64bd7d 100644
--- a/app/assets/javascripts/set_status_modal/set_status_modal_wrapper.vue
+++ b/app/assets/javascripts/set_status_modal/set_status_modal_wrapper.vue
@@ -1,11 +1,11 @@
<script>
import $ from 'jquery';
+import GfmAutoComplete from 'ee_else_ce/gfm_auto_complete';
+import { GlModal, GlTooltipDirective } from '@gitlab/ui';
import createFlash from '~/flash';
import Icon from '~/vue_shared/components/icon.vue';
-import GfmAutoComplete from 'ee_else_ce/gfm_auto_complete';
import { __, s__ } from '~/locale';
import Api from '~/api';
-import { GlModal, GlTooltipDirective } from '@gitlab/ui';
import eventHub from './event_hub';
import EmojiMenuInModal from './emoji_menu_in_modal';
diff --git a/app/assets/javascripts/sidebar/components/assignees/assignee_avatar_link.vue b/app/assets/javascripts/sidebar/components/assignees/assignee_avatar_link.vue
index 6633a63d046..9a60172db2e 100644
--- a/app/assets/javascripts/sidebar/components/assignees/assignee_avatar_link.vue
+++ b/app/assets/javascripts/sidebar/components/assignees/assignee_avatar_link.vue
@@ -1,7 +1,6 @@
<script>
-import { __, sprintf } from '~/locale';
import { GlTooltipDirective, GlLink } from '@gitlab/ui';
-import { joinPaths } from '~/lib/utils/url_utility';
+import { __, sprintf } from '~/locale';
import AssigneeAvatar from './assignee_avatar.vue';
export default {
@@ -60,7 +59,7 @@ export default {
};
},
assigneeUrl() {
- return joinPaths(`${this.rootPath}`, `${this.user.username}`);
+ return this.user.web_url;
},
},
};
diff --git a/app/assets/javascripts/sidebar/components/assignees/assignee_title.vue b/app/assets/javascripts/sidebar/components/assignees/assignee_title.vue
index b107e9789a7..f4dac38b9e1 100644
--- a/app/assets/javascripts/sidebar/components/assignees/assignee_title.vue
+++ b/app/assets/javascripts/sidebar/components/assignees/assignee_title.vue
@@ -32,14 +32,13 @@ export default {
};
</script>
<template>
- <div class="title hide-collapsed" data-qa-selector="assignee_title">
+ <div class="title hide-collapsed">
{{ assigneeTitle }}
<i v-if="loading" aria-hidden="true" class="fa fa-spinner fa-spin block-loading"></i>
<a
v-if="editable"
class="js-sidebar-dropdown-toggle edit-link float-right"
href="#"
- data-qa-selector="assignee_edit_link"
data-track-event="click_edit_button"
data-track-label="right_sidebar"
data-track-property="assignee"
diff --git a/app/assets/javascripts/sidebar/components/assignees/collapsed_assignee_list.vue b/app/assets/javascripts/sidebar/components/assignees/collapsed_assignee_list.vue
index 5b4a43399ca..7375855f899 100644
--- a/app/assets/javascripts/sidebar/components/assignees/collapsed_assignee_list.vue
+++ b/app/assets/javascripts/sidebar/components/assignees/collapsed_assignee_list.vue
@@ -1,6 +1,6 @@
<script>
-import { __, sprintf } from '~/locale';
import { GlTooltipDirective } from '@gitlab/ui';
+import { __, sprintf } from '~/locale';
import CollapsedAssignee from './collapsed_assignee.vue';
const DEFAULT_MAX_COUNTER = 99;
diff --git a/app/assets/javascripts/sidebar/components/lock/edit_form_buttons.vue b/app/assets/javascripts/sidebar/components/lock/edit_form_buttons.vue
index 902aeb9b8e4..f88bde624b4 100644
--- a/app/assets/javascripts/sidebar/components/lock/edit_form_buttons.vue
+++ b/app/assets/javascripts/sidebar/components/lock/edit_form_buttons.vue
@@ -1,6 +1,6 @@
<script>
-import { __ } from '~/locale';
import $ from 'jquery';
+import { __ } from '~/locale';
import eventHub from '../../event_hub';
export default {
diff --git a/app/assets/javascripts/sidebar/components/participants/participants.vue b/app/assets/javascripts/sidebar/components/participants/participants.vue
index 4bfc8fa7eec..38b19d66163 100644
--- a/app/assets/javascripts/sidebar/components/participants/participants.vue
+++ b/app/assets/javascripts/sidebar/components/participants/participants.vue
@@ -1,8 +1,8 @@
<script>
+import { GlLoadingIcon } from '@gitlab/ui';
import { __, n__, sprintf } from '~/locale';
import tooltip from '~/vue_shared/directives/tooltip';
import userAvatarImage from '~/vue_shared/components/user_avatar/user_avatar_image.vue';
-import { GlLoadingIcon } from '@gitlab/ui';
export default {
directives: {
diff --git a/app/assets/javascripts/sidebar/components/subscriptions/subscriptions.vue b/app/assets/javascripts/sidebar/components/subscriptions/subscriptions.vue
index 0e489b28593..3b92ead8859 100644
--- a/app/assets/javascripts/sidebar/components/subscriptions/subscriptions.vue
+++ b/app/assets/javascripts/sidebar/components/subscriptions/subscriptions.vue
@@ -48,6 +48,12 @@ export default {
},
},
computed: {
+ tracking() {
+ return {
+ // eslint-disable-next-line no-underscore-dangle
+ category: this.$options._componentTag,
+ };
+ },
showLoadingState() {
return this.subscribed === null;
},
diff --git a/app/assets/javascripts/sidebar/components/time_tracking/comparison_pane.vue b/app/assets/javascripts/sidebar/components/time_tracking/comparison_pane.vue
index 06aca547183..4cb8d9ebd62 100644
--- a/app/assets/javascripts/sidebar/components/time_tracking/comparison_pane.vue
+++ b/app/assets/javascripts/sidebar/components/time_tracking/comparison_pane.vue
@@ -1,7 +1,7 @@
<script>
+import { GlProgressBar } from '@gitlab/ui';
import { parseSeconds, stringifyTime } from '~/lib/utils/datetime_utility';
import tooltip from '../../../vue_shared/directives/tooltip';
-import { GlProgressBar } from '@gitlab/ui';
import { s__, sprintf } from '~/locale';
export default {
diff --git a/app/assets/javascripts/sidebar/components/todo_toggle/todo.vue b/app/assets/javascripts/sidebar/components/todo_toggle/todo.vue
index 3d96405896d..3b7df369237 100644
--- a/app/assets/javascripts/sidebar/components/todo_toggle/todo.vue
+++ b/app/assets/javascripts/sidebar/components/todo_toggle/todo.vue
@@ -1,7 +1,7 @@
<script>
+import { GlLoadingIcon } from '@gitlab/ui';
import { __ } from '~/locale';
import tooltip from '~/vue_shared/directives/tooltip';
-import { GlLoadingIcon } from '@gitlab/ui';
import Icon from '~/vue_shared/components/icon.vue';
@@ -59,6 +59,9 @@ export default {
collapsedButtonIcon() {
return this.isTodo ? 'todo-done' : 'todo-add';
},
+ collapsedButtonIconVisible() {
+ return this.collapsed && !this.isActionActive;
+ },
},
methods: {
handleButtonClick() {
@@ -82,8 +85,12 @@ export default {
data-boundary="viewport"
@click="handleButtonClick"
>
- <icon v-show="collapsed" :class="collapsedButtonIconClasses" :name="collapsedButtonIcon" />
- <span v-show="!collapsed" class="issuable-todo-inner"> {{ buttonLabel }} </span>
+ <icon
+ v-show="collapsedButtonIconVisible"
+ :class="collapsedButtonIconClasses"
+ :name="collapsedButtonIcon"
+ />
+ <span v-show="!collapsed" class="issuable-todo-inner">{{ buttonLabel }}</span>
<gl-loading-icon v-show="isActionActive" :inline="true" />
</button>
</template>
diff --git a/app/assets/javascripts/sidebar/sidebar_mediator.js b/app/assets/javascripts/sidebar/sidebar_mediator.js
index 4a7000cbbda..ce869a625bf 100644
--- a/app/assets/javascripts/sidebar/sidebar_mediator.js
+++ b/app/assets/javascripts/sidebar/sidebar_mediator.js
@@ -1,7 +1,7 @@
+import Store from 'ee_else_ce/sidebar/stores/sidebar_store';
import { visitUrl } from '../lib/utils/url_utility';
import Flash from '../flash';
import Service from './services/sidebar_service';
-import Store from 'ee_else_ce/sidebar/stores/sidebar_store';
import { __ } from '~/locale';
export default class SidebarMediator {
diff --git a/app/assets/javascripts/snippet/snippet_embed.js b/app/assets/javascripts/snippet/snippet_embed.js
index 6606271c4fa..65dd62f6af9 100644
--- a/app/assets/javascripts/snippet/snippet_embed.js
+++ b/app/assets/javascripts/snippet/snippet_embed.js
@@ -1,28 +1,35 @@
import { __ } from '~/locale';
+import { parseUrlPathname, parseUrl } from '../lib/utils/common_utils';
+
+function swapActiveState(activateBtn, deactivateBtn) {
+ activateBtn.classList.add('is-active');
+ deactivateBtn.classList.remove('is-active');
+}
export default () => {
const shareBtn = document.querySelector('.js-share-btn');
if (shareBtn) {
- const { protocol, host, pathname } = window.location;
-
const embedBtn = document.querySelector('.js-embed-btn');
-
const snippetUrlArea = document.querySelector('.js-snippet-url-area');
const embedAction = document.querySelector('.js-embed-action');
- const url = `${protocol}//${host + pathname}`;
+ const dataUrl = snippetUrlArea.getAttribute('data-url');
+
+ snippetUrlArea.addEventListener('click', () => snippetUrlArea.select());
shareBtn.addEventListener('click', () => {
- shareBtn.classList.add('is-active');
- embedBtn.classList.remove('is-active');
- snippetUrlArea.value = url;
+ swapActiveState(shareBtn, embedBtn);
+ snippetUrlArea.value = dataUrl;
embedAction.innerText = __('Share');
});
embedBtn.addEventListener('click', () => {
- embedBtn.classList.add('is-active');
- shareBtn.classList.remove('is-active');
- const scriptTag = `<script src="${url}.js"></script>`;
+ const parser = parseUrl(dataUrl);
+ const url = `${parser.origin + parseUrlPathname(dataUrl)}`;
+ const params = parser.search;
+ const scriptTag = `<script src="${url}.js${params}"></script>`;
+
+ swapActiveState(embedBtn, shareBtn);
snippetUrlArea.value = scriptTag;
embedAction.innerText = __('Embed');
});
diff --git a/app/assets/javascripts/snippets/components/app.vue b/app/assets/javascripts/snippets/components/app.vue
new file mode 100644
index 00000000000..bd2cb8e4595
--- /dev/null
+++ b/app/assets/javascripts/snippets/components/app.vue
@@ -0,0 +1,50 @@
+<script>
+import GetSnippetQuery from '../queries/snippet.query.graphql';
+import SnippetHeader from './snippet_header.vue';
+import { GlLoadingIcon } from '@gitlab/ui';
+
+export default {
+ components: {
+ SnippetHeader,
+ GlLoadingIcon,
+ },
+ apollo: {
+ snippet: {
+ query: GetSnippetQuery,
+ variables() {
+ return {
+ ids: this.snippetGid,
+ };
+ },
+ update: data => data.snippets.edges[0].node,
+ },
+ },
+ props: {
+ snippetGid: {
+ type: String,
+ required: true,
+ },
+ },
+ data() {
+ return {
+ snippet: {},
+ };
+ },
+ computed: {
+ isLoading() {
+ return this.$apollo.queries.snippet.loading;
+ },
+ },
+};
+</script>
+<template>
+ <div class="js-snippet-view">
+ <gl-loading-icon
+ v-if="isLoading"
+ :label="__('Loading snippet')"
+ :size="2"
+ class="loading-animation prepend-top-20 append-bottom-20"
+ />
+ <snippet-header v-else :snippet="snippet" />
+ </div>
+</template>
diff --git a/app/assets/javascripts/snippets/components/snippet_header.vue b/app/assets/javascripts/snippets/components/snippet_header.vue
new file mode 100644
index 00000000000..e8f1bfeaf43
--- /dev/null
+++ b/app/assets/javascripts/snippets/components/snippet_header.vue
@@ -0,0 +1,241 @@
+<script>
+import { __ } from '~/locale';
+import {
+ GlAvatar,
+ GlIcon,
+ GlSprintf,
+ GlButton,
+ GlModal,
+ GlAlert,
+ GlLoadingIcon,
+ GlDropdown,
+ GlDropdownItem,
+} from '@gitlab/ui';
+import TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue';
+
+import DeleteSnippetMutation from '../mutations/deleteSnippet.mutation.graphql';
+import CanCreatePersonalSnippet from '../queries/userPermissions.query.graphql';
+import CanCreateProjectSnippet from '../queries/projectPermissions.query.graphql';
+
+export default {
+ components: {
+ GlAvatar,
+ GlIcon,
+ GlSprintf,
+ GlButton,
+ GlModal,
+ GlAlert,
+ GlLoadingIcon,
+ GlDropdown,
+ GlDropdownItem,
+ TimeAgoTooltip,
+ },
+ apollo: {
+ canCreateSnippet: {
+ query() {
+ return this.snippet.project ? CanCreateProjectSnippet : CanCreatePersonalSnippet;
+ },
+ variables() {
+ return {
+ fullPath: this.snippet.project ? this.snippet.project.fullPath : undefined,
+ };
+ },
+ update(data) {
+ return this.snippet.project
+ ? data.project.userPermissions.createSnippet
+ : data.currentUser.userPermissions.createSnippet;
+ },
+ },
+ },
+ props: {
+ snippet: {
+ type: Object,
+ required: true,
+ },
+ },
+ data() {
+ return {
+ isDeleting: false,
+ errorMessage: '',
+ canCreateSnippet: false,
+ };
+ },
+ computed: {
+ personalSnippetActions() {
+ return [
+ {
+ condition: this.snippet.userPermissions.updateSnippet,
+ text: __('Edit'),
+ href: this.editLink,
+ click: undefined,
+ variant: 'outline-info',
+ cssClass: undefined,
+ },
+ {
+ condition: this.snippet.userPermissions.adminSnippet,
+ text: __('Delete'),
+ href: undefined,
+ click: this.showDeleteModal,
+ variant: 'outline-danger',
+ cssClass: 'btn-inverted btn-danger ml-2',
+ },
+ {
+ condition: this.canCreateSnippet,
+ text: __('New snippet'),
+ href: this.snippet.project
+ ? `${this.snippet.project.webUrl}/snippets/new`
+ : '/snippets/new',
+ click: undefined,
+ variant: 'outline-success',
+ cssClass: 'btn-inverted btn-success ml-2',
+ },
+ ];
+ },
+ editLink() {
+ return `${this.snippet.webUrl}/edit`;
+ },
+ visibility() {
+ return this.snippet.visibilityLevel;
+ },
+ snippetVisibilityLevelDescription() {
+ switch (this.visibility) {
+ case 'private':
+ return this.snippet.project !== null
+ ? __('The snippet is visible only to project members.')
+ : __('The snippet is visible only to me.');
+ case 'internal':
+ return __('The snippet is visible to any logged in user.');
+ default:
+ return __('The snippet can be accessed without any authentication.');
+ }
+ },
+ visibilityLevelIcon() {
+ switch (this.visibility) {
+ case 'private':
+ return 'lock';
+ case 'internal':
+ return 'shield';
+ default:
+ return 'earth';
+ }
+ },
+ },
+ methods: {
+ redirectToSnippets() {
+ window.location.pathname = 'dashboard/snippets';
+ },
+ closeDeleteModal() {
+ this.$refs.deleteModal.hide();
+ },
+ showDeleteModal() {
+ this.$refs.deleteModal.show();
+ },
+ deleteSnippet() {
+ this.isDeleting = true;
+ this.$apollo
+ .mutate({
+ mutation: DeleteSnippetMutation,
+ variables: { id: this.snippet.id },
+ })
+ .then(() => {
+ this.isDeleting = false;
+ this.errorMessage = undefined;
+ this.closeDeleteModal();
+ this.redirectToSnippets();
+ })
+ .catch(err => {
+ this.isDeleting = false;
+ this.errorMessage = err.message;
+ });
+ },
+ },
+};
+</script>
+<template>
+ <div class="detail-page-header">
+ <div class="detail-page-header-body">
+ <div
+ class="snippet-box qa-snippet-box has-tooltip d-flex align-items-center append-right-5 mb-1"
+ :title="snippetVisibilityLevelDescription"
+ data-container="body"
+ >
+ <span class="sr-only">
+ {{ s__(`VisibilityLevel|${visibility}`) }}
+ </span>
+ <gl-icon :name="visibilityLevelIcon" :size="14" />
+ </div>
+ <div class="creator">
+ <gl-sprintf message="Authored %{timeago} by %{author}">
+ <template #timeago>
+ <time-ago-tooltip
+ :time="snippet.createdAt"
+ tooltip-placement="bottom"
+ css-class="snippet_updated_ago"
+ />
+ </template>
+ <template #author>
+ <a :href="snippet.author.webUrl" class="d-inline">
+ <gl-avatar :size="24" :src="snippet.author.avatarUrl" />
+ <span class="bold">{{ snippet.author.name }}</span>
+ </a>
+ </template>
+ </gl-sprintf>
+ </div>
+ </div>
+
+ <div class="detail-page-header-actions">
+ <div class="d-none d-sm-block">
+ <template v-for="(action, index) in personalSnippetActions">
+ <gl-button
+ v-if="action.condition"
+ :key="index"
+ :variant="action.variant"
+ :class="action.cssClass"
+ :href="action.href || undefined"
+ @click="action.click ? action.click() : undefined"
+ >
+ {{ action.text }}
+ </gl-button>
+ </template>
+ </div>
+ <div class="d-block d-sm-none dropdown">
+ <gl-dropdown :text="__('Options')" class="w-100" toggle-class="text-center">
+ <gl-dropdown-item
+ v-for="(action, index) in personalSnippetActions"
+ :key="index"
+ :href="action.href || undefined"
+ @click="action.click ? action.click() : undefined"
+ >{{ action.text }}</gl-dropdown-item
+ >
+ </gl-dropdown>
+ </div>
+ </div>
+
+ <gl-modal ref="deleteModal" modal-id="delete-modal" title="Example title">
+ <template #modal-title>{{ __('Delete snippet?') }}</template>
+
+ <gl-alert v-if="errorMessage" variant="danger" class="mb-2" @dismiss="errorMessage = ''">{{
+ errorMessage
+ }}</gl-alert>
+
+ <gl-sprintf message="Are you sure you want to delete %{name}?">
+ <template #name
+ ><strong>{{ snippet.title }}</strong></template
+ >
+ </gl-sprintf>
+
+ <template #modal-footer>
+ <gl-button @click="closeDeleteModal">{{ __('Cancel') }}</gl-button>
+ <gl-button
+ variant="danger"
+ :disabled="isDeleting"
+ data-qa-selector="delete_snippet_button"
+ @click="deleteSnippet"
+ >
+ <gl-loading-icon v-if="isDeleting" inline />
+ {{ __('Delete snippet') }}
+ </gl-button>
+ </template>
+ </gl-modal>
+ </div>
+</template>
diff --git a/app/assets/javascripts/snippets/fragments/author.fragment.graphql b/app/assets/javascripts/snippets/fragments/author.fragment.graphql
new file mode 100644
index 00000000000..2684bd0fa37
--- /dev/null
+++ b/app/assets/javascripts/snippets/fragments/author.fragment.graphql
@@ -0,0 +1,8 @@
+fragment Author on Snippet {
+ author {
+ name,
+ avatarUrl,
+ username,
+ webUrl
+ }
+} \ No newline at end of file
diff --git a/app/assets/javascripts/snippets/fragments/project.fragment.graphql b/app/assets/javascripts/snippets/fragments/project.fragment.graphql
new file mode 100644
index 00000000000..7d65789c67b
--- /dev/null
+++ b/app/assets/javascripts/snippets/fragments/project.fragment.graphql
@@ -0,0 +1,6 @@
+fragment Project on Snippet {
+ project {
+ fullPath
+ webUrl
+ }
+} \ No newline at end of file
diff --git a/app/assets/javascripts/snippets/fragments/snippetBase.fragment.graphql b/app/assets/javascripts/snippets/fragments/snippetBase.fragment.graphql
new file mode 100644
index 00000000000..57348a422ec
--- /dev/null
+++ b/app/assets/javascripts/snippets/fragments/snippetBase.fragment.graphql
@@ -0,0 +1,13 @@
+fragment SnippetBase on Snippet {
+ id
+ title
+ description
+ createdAt
+ updatedAt
+ visibilityLevel
+ webUrl
+ userPermissions {
+ adminSnippet
+ updateSnippet
+ }
+} \ No newline at end of file
diff --git a/app/assets/javascripts/snippets/index.js b/app/assets/javascripts/snippets/index.js
new file mode 100644
index 00000000000..654856f8d14
--- /dev/null
+++ b/app/assets/javascripts/snippets/index.js
@@ -0,0 +1,34 @@
+import Vue from 'vue';
+import Translate from '~/vue_shared/translate';
+import VueApollo from 'vue-apollo';
+import createDefaultClient from '~/lib/graphql';
+
+import SnippetsApp from './components/app.vue';
+
+Vue.use(VueApollo);
+Vue.use(Translate);
+
+export default () => {
+ const el = document.getElementById('js-snippet-view');
+
+ if (!el) {
+ return false;
+ }
+
+ const { snippetGid } = el.dataset;
+ const apolloProvider = new VueApollo({
+ defaultClient: createDefaultClient(),
+ });
+
+ return new Vue({
+ el,
+ apolloProvider,
+ render(createElement) {
+ return createElement(SnippetsApp, {
+ props: {
+ snippetGid,
+ },
+ });
+ },
+ });
+};
diff --git a/app/assets/javascripts/snippets/mutations/deleteSnippet.mutation.graphql b/app/assets/javascripts/snippets/mutations/deleteSnippet.mutation.graphql
new file mode 100644
index 00000000000..0c829cbdee6
--- /dev/null
+++ b/app/assets/javascripts/snippets/mutations/deleteSnippet.mutation.graphql
@@ -0,0 +1,5 @@
+mutation DeleteSnippet($id: ID!) {
+ destroySnippet(input: {id: $id}) {
+ errors
+ }
+} \ No newline at end of file
diff --git a/app/assets/javascripts/snippets/queries/projectPermissions.query.graphql b/app/assets/javascripts/snippets/queries/projectPermissions.query.graphql
new file mode 100644
index 00000000000..288bd0889bf
--- /dev/null
+++ b/app/assets/javascripts/snippets/queries/projectPermissions.query.graphql
@@ -0,0 +1,7 @@
+query CanCreateProjectSnippet($fullPath: ID!) {
+ project(fullPath: $fullPath) {
+ userPermissions {
+ createSnippet
+ }
+ }
+} \ No newline at end of file
diff --git a/app/assets/javascripts/snippets/queries/snippet.query.graphql b/app/assets/javascripts/snippets/queries/snippet.query.graphql
new file mode 100644
index 00000000000..1cb2c86c4d8
--- /dev/null
+++ b/app/assets/javascripts/snippets/queries/snippet.query.graphql
@@ -0,0 +1,15 @@
+#import '../fragments/snippetBase.fragment.graphql'
+#import '../fragments/project.fragment.graphql'
+#import '../fragments/author.fragment.graphql'
+
+query GetSnippetQuery($ids: [ID!]) {
+ snippets(ids: $ids) {
+ edges {
+ node {
+ ...SnippetBase
+ ...Project
+ ...Author
+ }
+ }
+ }
+}
diff --git a/app/assets/javascripts/snippets/queries/userPermissions.query.graphql b/app/assets/javascripts/snippets/queries/userPermissions.query.graphql
new file mode 100644
index 00000000000..f5b97b3d0f0
--- /dev/null
+++ b/app/assets/javascripts/snippets/queries/userPermissions.query.graphql
@@ -0,0 +1,7 @@
+query CanCreatePersonalSnippet {
+ currentUser {
+ userPermissions {
+ createSnippet
+ }
+ }
+} \ No newline at end of file
diff --git a/app/assets/javascripts/tracking.js b/app/assets/javascripts/tracking.js
index 7c0097fbe37..a17b8a047c0 100644
--- a/app/assets/javascripts/tracking.js
+++ b/app/assets/javascripts/tracking.js
@@ -73,20 +73,25 @@ export default class Tracking {
return handlers;
}
- static mixin(opts) {
+ static mixin(opts = {}) {
return {
- data() {
- return {
- tracking: {
- // eslint-disable-next-line no-underscore-dangle
- category: this.$options.name || this.$options._componentTag,
- },
- };
+ computed: {
+ trackingCategory() {
+ const localCategory = this.tracking ? this.tracking.category : null;
+ return localCategory || opts.category;
+ },
+ trackingOptions() {
+ return { ...opts, ...this.tracking };
+ },
},
methods: {
- track(action, data) {
- const category = opts.category || data.category || this.tracking.category;
- Tracking.event(category || 'unspecified', action, { ...opts, ...this.tracking, ...data });
+ track(action, data = {}) {
+ const category = data.category || this.trackingCategory;
+ const options = {
+ ...this.trackingOptions,
+ ...data,
+ };
+ Tracking.event(category, action, options);
},
},
};
diff --git a/app/assets/javascripts/user_popovers.js b/app/assets/javascripts/user_popovers.js
index 7d6a725b30f..157d89a3a40 100644
--- a/app/assets/javascripts/user_popovers.js
+++ b/app/assets/javascripts/user_popovers.js
@@ -17,6 +17,7 @@ const handleUserPopoverMouseOut = event => {
renderedPopover.$destroy();
renderedPopover = null;
}
+ target.removeAttribute('aria-describedby');
};
/**
diff --git a/app/assets/javascripts/users_select.js b/app/assets/javascripts/users_select.js
index da1a7c290f8..57fbb88ca2e 100644
--- a/app/assets/javascripts/users_select.js
+++ b/app/assets/javascripts/users_select.js
@@ -1,4 +1,4 @@
-/* eslint-disable func-names, one-var, no-var, prefer-rest-params, vars-on-top, consistent-return, no-shadow, no-else-return, no-self-compare, no-unused-expressions, yoda, prefer-spread, camelcase, no-param-reassign */
+/* eslint-disable func-names, prefer-rest-params, consistent-return, no-shadow, no-else-return, no-self-compare, no-unused-expressions, yoda, prefer-spread, camelcase, no-param-reassign */
/* global Issuable */
/* global emitSidebarEvent */
@@ -13,7 +13,7 @@ import { parseBoolean } from './lib/utils/common_utils';
window.emitSidebarEvent = window.emitSidebarEvent || $.noop;
function UsersSelect(currentUser, els, options = {}) {
- var $els;
+ const $els = $(els || '.js-user-search');
this.users = this.users.bind(this);
this.user = this.user.bind(this);
this.usersPath = '/autocomplete/users.json';
@@ -28,36 +28,11 @@ function UsersSelect(currentUser, els, options = {}) {
const { handleClick } = options;
- $els = $(els);
-
- if (!els) {
- $els = $('.js-user-search');
- }
-
$els.each(
(function(_this) {
return function(i, dropdown) {
- var options = {};
- var $block,
- $collapsedSidebar,
- $dropdown,
- $loading,
- $selectbox,
- $value,
- abilityName,
- assignTo,
- assigneeTemplate,
- collapsedAssigneeTemplate,
- defaultLabel,
- defaultNullUser,
- firstUser,
- issueURL,
- selectedId,
- selectedIdDefault,
- showAnyUser,
- showNullUser,
- showMenuAbove;
- $dropdown = $(dropdown);
+ const options = {};
+ const $dropdown = $(dropdown);
options.projectId = $dropdown.data('projectId');
options.groupId = $dropdown.data('groupId');
options.showCurrentUser = $dropdown.data('currentUser');
@@ -65,22 +40,25 @@ function UsersSelect(currentUser, els, options = {}) {
options.todoStateFilter = $dropdown.data('todoStateFilter');
options.iid = $dropdown.data('iid');
options.issuableType = $dropdown.data('issuableType');
- showNullUser = $dropdown.data('nullUser');
- defaultNullUser = $dropdown.data('nullUserDefault');
- showMenuAbove = $dropdown.data('showMenuAbove');
- showAnyUser = $dropdown.data('anyUser');
- firstUser = $dropdown.data('firstUser');
+ const showNullUser = $dropdown.data('nullUser');
+ const defaultNullUser = $dropdown.data('nullUserDefault');
+ const showMenuAbove = $dropdown.data('showMenuAbove');
+ const showAnyUser = $dropdown.data('anyUser');
+ const firstUser = $dropdown.data('firstUser');
options.authorId = $dropdown.data('authorId');
- defaultLabel = $dropdown.data('defaultLabel');
- issueURL = $dropdown.data('issueUpdate');
- $selectbox = $dropdown.closest('.selectbox');
- $block = $selectbox.closest('.block');
- abilityName = $dropdown.data('abilityName');
- $value = $block.find('.value');
- $collapsedSidebar = $block.find('.sidebar-collapsed-user');
- $loading = $block.find('.block-loading').fadeOut();
- selectedIdDefault = defaultNullUser && showNullUser ? 0 : null;
- selectedId = $dropdown.data('selected');
+ const defaultLabel = $dropdown.data('defaultLabel');
+ const issueURL = $dropdown.data('issueUpdate');
+ const $selectbox = $dropdown.closest('.selectbox');
+ let $block = $selectbox.closest('.block');
+ const abilityName = $dropdown.data('abilityName');
+ let $value = $block.find('.value');
+ const $collapsedSidebar = $block.find('.sidebar-collapsed-user');
+ const $loading = $block.find('.block-loading').fadeOut();
+ const selectedIdDefault = defaultNullUser && showNullUser ? 0 : null;
+ let selectedId = $dropdown.data('selected');
+ let assignTo;
+ let assigneeTemplate;
+ let collapsedAssigneeTemplate;
if (selectedId === undefined) {
selectedId = selectedIdDefault;
@@ -207,15 +185,15 @@ function UsersSelect(currentUser, els, options = {}) {
});
assignTo = function(selected) {
- var data;
- data = {};
+ const data = {};
data[abilityName] = {};
data[abilityName].assignee_id = selected != null ? selected : null;
$loading.removeClass('hidden').fadeIn();
$dropdown.trigger('loading.gl.dropdown');
return axios.put(issueURL, data).then(({ data }) => {
- var user, tooltipTitle;
+ let user = {};
+ let tooltipTitle = user.name;
$dropdown.trigger('loaded.gl.dropdown');
$loading.fadeOut();
if (data.assignee) {
@@ -471,10 +449,9 @@ function UsersSelect(currentUser, els, options = {}) {
}
}
- var isIssueIndex, isMRIndex, page, selected;
- page = $('body').attr('data-page');
- isIssueIndex = page === 'projects:issues:index';
- isMRIndex = page === page && page === 'projects:merge_requests:index';
+ const page = $('body').attr('data-page');
+ const isIssueIndex = page === 'projects:issues:index';
+ const isMRIndex = page === page && page === 'projects:merge_requests:index';
if (
$dropdown.hasClass('js-filter-bulk-update') ||
$dropdown.hasClass('js-issuable-form-dropdown')
@@ -501,7 +478,7 @@ function UsersSelect(currentUser, els, options = {}) {
} else if ($dropdown.hasClass('js-filter-submit')) {
return $dropdown.closest('form').submit();
} else if (!$dropdown.hasClass('js-multiselect')) {
- selected = $dropdown
+ const selected = $dropdown
.closest('.selectbox')
.find(`input[name='${$dropdown.data('fieldName')}']`)
.val();
@@ -544,9 +521,8 @@ function UsersSelect(currentUser, els, options = {}) {
},
updateLabel: $dropdown.data('dropdownTitle'),
renderRow(user) {
- var avatar, img, username;
- username = user.username ? `@${user.username}` : '';
- avatar = user.avatar_url ? user.avatar_url : gon.default_avatar_url;
+ const username = user.username ? `@${user.username}` : '';
+ const avatar = user.avatar_url ? user.avatar_url : gon.default_avatar_url;
let selected = false;
@@ -565,7 +541,7 @@ function UsersSelect(currentUser, els, options = {}) {
selected = user.id === selectedId;
}
- img = '';
+ let img = '';
if (user.beforeDivider != null) {
`<li><a href='#' class='${selected === true ? 'is-active' : ''}'>${_.escape(
user.name,
@@ -586,35 +562,34 @@ function UsersSelect(currentUser, els, options = {}) {
$('.ajax-users-select').each(
(function(_this) {
return function(i, select) {
- var firstUser, showAnyUser, showEmailUser, showNullUser;
- var options = {};
+ const options = {};
options.skipLdap = $(select).hasClass('skip_ldap');
options.projectId = $(select).data('projectId');
options.groupId = $(select).data('groupId');
options.showCurrentUser = $(select).data('currentUser');
options.authorId = $(select).data('authorId');
options.skipUsers = $(select).data('skipUsers');
- showNullUser = $(select).data('nullUser');
- showAnyUser = $(select).data('anyUser');
- showEmailUser = $(select).data('emailUser');
- firstUser = $(select).data('firstUser');
+ const showNullUser = $(select).data('nullUser');
+ const showAnyUser = $(select).data('anyUser');
+ const showEmailUser = $(select).data('emailUser');
+ const firstUser = $(select).data('firstUser');
return $(select).select2({
placeholder: __('Search for a user'),
multiple: $(select).hasClass('multiselect'),
minimumInputLength: 0,
query(query) {
return _this.users(query.term, options, users => {
- var anyUser, data, emailUser, index, len, name, nullUser, obj, ref;
- data = {
+ let name;
+ const data = {
results: users,
};
if (query.term.length === 0) {
if (firstUser) {
// Move current user to the front of the list
- ref = data.results;
+ const ref = data.results;
- for (index = 0, len = ref.length; index < len; index += 1) {
- obj = ref[index];
+ for (let index = 0, len = ref.length; index < len; index += 1) {
+ const obj = ref[index];
if (obj.username === firstUser) {
data.results.splice(index, 1);
data.results.unshift(obj);
@@ -623,7 +598,7 @@ function UsersSelect(currentUser, els, options = {}) {
}
}
if (showNullUser) {
- nullUser = {
+ const nullUser = {
name: s__('UsersSelect|Unassigned'),
id: 0,
};
@@ -634,7 +609,7 @@ function UsersSelect(currentUser, els, options = {}) {
if (name === true) {
name = s__('UsersSelect|Any User');
}
- anyUser = {
+ const anyUser = {
name,
id: null,
};
@@ -646,8 +621,8 @@ function UsersSelect(currentUser, els, options = {}) {
data.results.length === 0 &&
query.term.match(/^[^@]+@[^@]+$/)
) {
- var trimmed = query.term.trim();
- emailUser = {
+ const trimmed = query.term.trim();
+ const emailUser = {
name: sprintf(__('Invite "%{trimmed}" by email'), { trimmed }),
username: trimmed,
id: trimmed,
@@ -659,18 +634,15 @@ function UsersSelect(currentUser, els, options = {}) {
});
},
initSelection() {
- var args;
- args = 1 <= arguments.length ? [].slice.call(arguments, 0) : [];
+ const args = 1 <= arguments.length ? [].slice.call(arguments, 0) : [];
return _this.initSelection.apply(_this, args);
},
formatResult() {
- var args;
- args = 1 <= arguments.length ? [].slice.call(arguments, 0) : [];
+ const args = 1 <= arguments.length ? [].slice.call(arguments, 0) : [];
return _this.formatResult.apply(_this, args);
},
formatSelection() {
- var args;
- args = 1 <= arguments.length ? [].slice.call(arguments, 0) : [];
+ const args = 1 <= arguments.length ? [].slice.call(arguments, 0) : [];
return _this.formatSelection.apply(_this, args);
},
dropdownCssClass: 'ajax-users-dropdown',
@@ -687,10 +659,9 @@ function UsersSelect(currentUser, els, options = {}) {
}
UsersSelect.prototype.initSelection = function(element, callback) {
- var id, nullUser;
- id = $(element).val();
+ const id = $(element).val();
if (id === '0') {
- nullUser = {
+ const nullUser = {
name: s__('UsersSelect|Unassigned'),
};
return callback(nullUser);
@@ -700,11 +671,9 @@ UsersSelect.prototype.initSelection = function(element, callback) {
};
UsersSelect.prototype.formatResult = function(user) {
- var avatar;
+ let avatar = gon.default_avatar_url;
if (user.avatar_url) {
avatar = user.avatar_url;
- } else {
- avatar = gon.default_avatar_url;
}
return `
<div class='user-result'>
@@ -732,8 +701,7 @@ UsersSelect.prototype.user = function(user_id, callback) {
return false;
}
- var url;
- url = this.buildUrl(this.userPath);
+ let url = this.buildUrl(this.userPath);
url = url.replace(':id', user_id);
return axios.get(url).then(({ data }) => {
callback(data);
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/deployment.vue b/app/assets/javascripts/vue_merge_request_widget/components/deployment.vue
deleted file mode 100644
index 1873e09c370..00000000000
--- a/app/assets/javascripts/vue_merge_request_widget/components/deployment.vue
+++ /dev/null
@@ -1,245 +0,0 @@
-<script>
-import { GlTooltipDirective } from '@gitlab/ui';
-import Icon from '~/vue_shared/components/icon.vue';
-import TooltipOnTruncate from '~/vue_shared/components/tooltip_on_truncate.vue';
-import FilteredSearchDropdown from '~/vue_shared/components/filtered_search_dropdown.vue';
-import { __ } from '~/locale';
-import timeagoMixin from '../../vue_shared/mixins/timeago';
-import LoadingButton from '../../vue_shared/components/loading_button.vue';
-import { visitUrl } from '../../lib/utils/url_utility';
-import createFlash from '../../flash';
-import MemoryUsage from './memory_usage.vue';
-import StatusIcon from './mr_widget_status_icon.vue';
-import ReviewAppLink from './review_app_link.vue';
-import MRWidgetService from '../services/mr_widget_service';
-
-export default {
- // name: 'Deployment' is a false positive: https://gitlab.com/gitlab-org/frontend/eslint-plugin-i18n/issues/26#possible-false-positives
- // eslint-disable-next-line @gitlab/i18n/no-non-i18n-strings
- name: 'Deployment',
- components: {
- LoadingButton,
- MemoryUsage,
- StatusIcon,
- Icon,
- TooltipOnTruncate,
- FilteredSearchDropdown,
- ReviewAppLink,
- VisualReviewAppLink: () =>
- import('ee_component/vue_merge_request_widget/components/visual_review_app_link.vue'),
- },
- directives: {
- GlTooltip: GlTooltipDirective,
- },
- mixins: [timeagoMixin],
- props: {
- deployment: {
- type: Object,
- required: true,
- },
- showMetrics: {
- type: Boolean,
- required: true,
- },
- showVisualReviewApp: {
- type: Boolean,
- required: false,
- default: false,
- },
- visualReviewAppMeta: {
- type: Object,
- required: false,
- default: () => ({
- sourceProjectId: '',
- sourceProjectPath: '',
- mergeRequestId: '',
- appUrl: '',
- }),
- },
- },
- deployedTextMap: {
- running: __('Deploying to'),
- success: __('Deployed to'),
- failed: __('Failed to deploy to'),
- created: __('Will deploy to'),
- canceled: __('Failed to deploy to'),
- },
- data() {
- return {
- isStopping: false,
- };
- },
- computed: {
- deployTimeago() {
- return this.timeFormated(this.deployment.deployed_at);
- },
- deploymentExternalUrl() {
- if (this.deployment.changes && this.deployment.changes.length === 1) {
- return this.deployment.changes[0].external_url;
- }
- return this.deployment.external_url;
- },
- hasExternalUrls() {
- return Boolean(this.deployment.external_url && this.deployment.external_url_formatted);
- },
- hasDeploymentTime() {
- return Boolean(this.deployment.deployed_at && this.deployment.deployed_at_formatted);
- },
- hasDeploymentMeta() {
- return Boolean(this.deployment.url && this.deployment.name);
- },
- hasMetrics() {
- return Boolean(this.deployment.metrics_url);
- },
- deployedText() {
- return this.$options.deployedTextMap[this.deployment.status];
- },
- isDeployInProgress() {
- return this.deployment.status === 'running';
- },
- deployInProgressTooltip() {
- return this.isDeployInProgress
- ? __('Stopping this environment is currently not possible as a deployment is in progress')
- : '';
- },
- shouldRenderDropdown() {
- return this.deployment.changes && this.deployment.changes.length > 1;
- },
- showMemoryUsage() {
- return this.hasMetrics && this.showMetrics;
- },
- },
- methods: {
- stopEnvironment() {
- const msg = __('Are you sure you want to stop this environment?');
- const isConfirmed = confirm(msg); // eslint-disable-line
-
- if (isConfirmed) {
- this.isStopping = true;
-
- MRWidgetService.stopEnvironment(this.deployment.stop_url)
- .then(res => res.data)
- .then(data => {
- if (data.redirect_url) {
- visitUrl(data.redirect_url);
- }
-
- this.isStopping = false;
- })
- .catch(() => {
- createFlash(
- __('Something went wrong while stopping this environment. Please try again.'),
- );
- this.isStopping = false;
- });
- }
- },
- },
-};
-</script>
-
-<template>
- <div class="deploy-heading">
- <div class="ci-widget media">
- <div class="media-body">
- <div class="deploy-body">
- <div class="js-deployment-info deployment-info">
- <template v-if="hasDeploymentMeta">
- <span> {{ deployedText }} </span>
- <tooltip-on-truncate
- :title="deployment.name"
- truncate-target="child"
- class="deploy-link label-truncate"
- >
- <a
- :href="deployment.url"
- target="_blank"
- rel="noopener noreferrer nofollow"
- class="js-deploy-meta"
- >
- {{ deployment.name }}
- </a>
- </tooltip-on-truncate>
- </template>
- <span
- v-if="hasDeploymentTime"
- v-gl-tooltip
- :title="deployment.deployed_at_formatted"
- class="js-deploy-time"
- >
- {{ deployTimeago }}
- </span>
- <memory-usage
- v-if="showMemoryUsage"
- :metrics-url="deployment.metrics_url"
- :metrics-monitoring-url="deployment.metrics_monitoring_url"
- />
- </div>
- <div>
- <template v-if="hasExternalUrls">
- <filtered-search-dropdown
- v-if="shouldRenderDropdown"
- class="js-mr-wigdet-deployment-dropdown inline"
- :items="deployment.changes"
- :main-action-link="deploymentExternalUrl"
- filter-key="path"
- >
- <template slot="mainAction" slot-scope="slotProps">
- <review-app-link
- :link="deploymentExternalUrl"
- :css-class="`deploy-link js-deploy-url inline ${slotProps.className}`"
- />
- </template>
-
- <template slot="result" slot-scope="slotProps">
- <a
- :href="slotProps.result.external_url"
- target="_blank"
- rel="noopener noreferrer nofollow"
- class="menu-item"
- >
- <strong class="str-truncated-100 append-bottom-0 d-block">
- {{ slotProps.result.path }}
- </strong>
-
- <p class="text-secondary str-truncated-100 append-bottom-0 d-block">
- {{ slotProps.result.external_url }}
- </p>
- </a>
- </template>
- </filtered-search-dropdown>
- <template v-else>
- <review-app-link
- :link="deploymentExternalUrl"
- css-class="js-deploy-url deploy-link btn btn-default btn-sm inline"
- />
- </template>
- <visual-review-app-link
- v-if="showVisualReviewApp"
- :link="deploymentExternalUrl"
- :app-metadata="visualReviewAppMeta"
- />
- </template>
- <span
- v-if="deployment.stop_url"
- v-gl-tooltip
- :title="deployInProgressTooltip"
- class="d-inline-block"
- tabindex="0"
- >
- <loading-button
- :loading="isStopping"
- :disabled="isDeployInProgress"
- :title="__('Stop environment')"
- container-class="js-stop-env btn btn-default btn-sm inline prepend-left-4"
- @click="stopEnvironment"
- >
- <icon name="stop" />
- </loading-button>
- </span>
- </div>
- </div>
- </div>
- </div>
- </div>
-</template>
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/deployment/constants.js b/app/assets/javascripts/vue_merge_request_widget/components/deployment/constants.js
new file mode 100644
index 00000000000..90741e3aa44
--- /dev/null
+++ b/app/assets/javascripts/vue_merge_request_widget/components/deployment/constants.js
@@ -0,0 +1,8 @@
+// DEPLOYMENT STATUSES
+export const CREATED = 'created';
+export const MANUAL_DEPLOY = 'manual_deploy';
+export const WILL_DEPLOY = 'will_deploy';
+export const RUNNING = 'running';
+export const SUCCESS = 'success';
+export const FAILED = 'failed';
+export const CANCELED = 'canceled';
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment.vue b/app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment.vue
new file mode 100644
index 00000000000..e03b1e6d6a6
--- /dev/null
+++ b/app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment.vue
@@ -0,0 +1,108 @@
+<script>
+import { GlTooltipDirective } from '@gitlab/ui';
+import DeploymentInfo from './deployment_info.vue';
+import DeploymentViewButton from './deployment_view_button.vue';
+import DeploymentStopButton from './deployment_stop_button.vue';
+import { MANUAL_DEPLOY, WILL_DEPLOY, CREATED, RUNNING, SUCCESS } from './constants';
+
+export default {
+ // name: 'Deployment' is a false positive: https://gitlab.com/gitlab-org/frontend/eslint-plugin-i18n/issues/26#possible-false-positives
+ // eslint-disable-next-line @gitlab/i18n/no-non-i18n-strings
+ name: 'Deployment',
+ components: {
+ DeploymentInfo,
+ DeploymentStopButton,
+ DeploymentViewButton,
+ },
+ directives: {
+ GlTooltip: GlTooltipDirective,
+ },
+ props: {
+ deployment: {
+ type: Object,
+ required: true,
+ },
+ showMetrics: {
+ type: Boolean,
+ required: true,
+ },
+ showVisualReviewApp: {
+ type: Boolean,
+ required: false,
+ default: false,
+ },
+ visualReviewAppMeta: {
+ type: Object,
+ required: false,
+ default: () => ({
+ sourceProjectId: '',
+ sourceProjectPath: '',
+ mergeRequestId: '',
+ appUrl: '',
+ }),
+ },
+ },
+ computed: {
+ canBeManuallyDeployed() {
+ return this.computedDeploymentStatus === MANUAL_DEPLOY;
+ },
+ computedDeploymentStatus() {
+ if (this.deployment.status === CREATED) {
+ return this.isManual ? MANUAL_DEPLOY : WILL_DEPLOY;
+ }
+ return this.deployment.status;
+ },
+ hasExternalUrls() {
+ return Boolean(this.deployment.external_url && this.deployment.external_url_formatted);
+ },
+ hasPreviousDeployment() {
+ return Boolean(!this.isCurrent && this.deployment.deployed_at);
+ },
+ isCurrent() {
+ return this.computedDeploymentStatus === SUCCESS;
+ },
+ isManual() {
+ return Boolean(
+ this.deployment.details &&
+ this.deployment.details.playable_build &&
+ this.deployment.details.playable_build.play_path,
+ );
+ },
+ isDeployInProgress() {
+ return this.deployment.status === RUNNING;
+ },
+ },
+};
+</script>
+
+<template>
+ <div class="deploy-heading">
+ <div class="ci-widget media">
+ <div class="media-body">
+ <div class="deploy-body">
+ <deployment-info
+ :computed-deployment-status="computedDeploymentStatus"
+ :deployment="deployment"
+ :show-metrics="showMetrics"
+ />
+ <div>
+ <!-- show appropriate version of review app button -->
+ <deployment-view-button
+ v-if="hasExternalUrls"
+ :is-current="isCurrent"
+ :deployment="deployment"
+ :show-visual-review-app="showVisualReviewApp"
+ :visual-review-app-metadata="visualReviewAppMeta"
+ />
+ <!-- if it is stoppable, show stop -->
+ <deployment-stop-button
+ v-if="deployment.stop_url"
+ :is-deploy-in-progress="isDeployInProgress"
+ :stop-url="deployment.stop_url"
+ />
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment_info.vue b/app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment_info.vue
new file mode 100644
index 00000000000..db4a4ece002
--- /dev/null
+++ b/app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment_info.vue
@@ -0,0 +1,98 @@
+<script>
+import { GlLink, GlTooltipDirective } from '@gitlab/ui';
+import { __ } from '~/locale';
+import TooltipOnTruncate from '~/vue_shared/components/tooltip_on_truncate.vue';
+import timeagoMixin from '~/vue_shared/mixins/timeago';
+import MemoryUsage from './memory_usage.vue';
+import { MANUAL_DEPLOY, WILL_DEPLOY, RUNNING, SUCCESS, FAILED, CANCELED } from './constants';
+
+export default {
+ name: 'DeploymentInfo',
+ components: {
+ GlLink,
+ MemoryUsage,
+ TooltipOnTruncate,
+ },
+ directives: {
+ GlTooltip: GlTooltipDirective,
+ },
+ mixins: [timeagoMixin],
+ props: {
+ computedDeploymentStatus: {
+ type: String,
+ required: true,
+ },
+ deployment: {
+ type: Object,
+ required: true,
+ },
+ showMetrics: {
+ type: Boolean,
+ required: true,
+ },
+ },
+ deployedTextMap: {
+ [MANUAL_DEPLOY]: __('Can deploy manually to'),
+ [WILL_DEPLOY]: __('Will deploy to'),
+ [RUNNING]: __('Deploying to'),
+ [SUCCESS]: __('Deployed to'),
+ [FAILED]: __('Failed to deploy to'),
+ [CANCELED]: __('Canceled deploy to'),
+ },
+ computed: {
+ deployTimeago() {
+ return this.timeFormatted(this.deployment.deployed_at);
+ },
+ deployedText() {
+ return this.$options.deployedTextMap[this.computedDeploymentStatus];
+ },
+ hasDeploymentTime() {
+ return Boolean(this.deployment.deployed_at && this.deployment.deployed_at_formatted);
+ },
+ hasDeploymentMeta() {
+ return Boolean(this.deployment.url && this.deployment.name);
+ },
+ hasMetrics() {
+ return Boolean(this.deployment.metrics_url);
+ },
+ showMemoryUsage() {
+ return this.hasMetrics && this.showMetrics;
+ },
+ },
+};
+</script>
+
+<template>
+ <div class="js-deployment-info deployment-info">
+ <template v-if="hasDeploymentMeta">
+ <span>{{ deployedText }}</span>
+ <tooltip-on-truncate
+ :title="deployment.name"
+ truncate-target="child"
+ class="deploy-link label-truncate"
+ >
+ <gl-link
+ :href="deployment.url"
+ target="_blank"
+ rel="noopener noreferrer nofollow"
+ class="js-deploy-meta gl-font-size-12"
+ >
+ {{ deployment.name }}
+ </gl-link>
+ </tooltip-on-truncate>
+ </template>
+ <span
+ v-if="hasDeploymentTime"
+ v-gl-tooltip
+ :title="deployment.deployed_at_formatted"
+ class="js-deploy-time"
+ >
+ {{ deployTimeago }}
+ </span>
+ <memory-usage
+ v-if="showMemoryUsage"
+ :metrics-url="deployment.metrics_url"
+ :metrics-monitoring-url="deployment.metrics_monitoring_url"
+ />
+ </div>
+</template>
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment_stop_button.vue b/app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment_stop_button.vue
new file mode 100644
index 00000000000..e20296c41a2
--- /dev/null
+++ b/app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment_stop_button.vue
@@ -0,0 +1,83 @@
+<script>
+import { GlTooltipDirective } from '@gitlab/ui';
+import { __ } from '~/locale';
+import Icon from '~/vue_shared/components/icon.vue';
+import LoadingButton from '~/vue_shared/components/loading_button.vue';
+import { visitUrl } from '~/lib/utils/url_utility';
+import createFlash from '~/flash';
+import MRWidgetService from '../../services/mr_widget_service';
+
+export default {
+ name: 'DeploymentStopButton',
+ components: {
+ LoadingButton,
+ Icon,
+ },
+ directives: {
+ GlTooltip: GlTooltipDirective,
+ },
+ props: {
+ isDeployInProgress: {
+ type: Boolean,
+ required: true,
+ },
+ stopUrl: {
+ type: String,
+ required: true,
+ },
+ },
+ data() {
+ return {
+ isStopping: false,
+ };
+ },
+ computed: {
+ deployInProgressTooltip() {
+ return this.isDeployInProgress
+ ? __('Stopping this environment is currently not possible as a deployment is in progress')
+ : '';
+ },
+ },
+ methods: {
+ stopEnvironment() {
+ const msg = __('Are you sure you want to stop this environment?');
+ const isConfirmed = confirm(msg); // eslint-disable-line
+
+ if (isConfirmed) {
+ this.isStopping = true;
+
+ MRWidgetService.stopEnvironment(this.stopUrl)
+ .then(res => res.data)
+ .then(data => {
+ if (data.redirect_url) {
+ visitUrl(data.redirect_url);
+ }
+
+ this.isStopping = false;
+ })
+ .catch(() => {
+ createFlash(
+ __('Something went wrong while stopping this environment. Please try again.'),
+ );
+ this.isStopping = false;
+ });
+ }
+ },
+ },
+};
+</script>
+
+<template>
+ <span v-gl-tooltip :title="deployInProgressTooltip" class="d-inline-block" tabindex="0">
+ <loading-button
+ v-gl-tooltip
+ :loading="isStopping"
+ :disabled="isDeployInProgress"
+ :title="__('Stop environment')"
+ container-class="js-stop-env btn btn-default btn-sm inline prepend-left-4"
+ @click="stopEnvironment"
+ >
+ <icon name="stop" />
+ </loading-button>
+ </span>
+</template>
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment_view_button.vue b/app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment_view_button.vue
new file mode 100644
index 00000000000..9965e3d5203
--- /dev/null
+++ b/app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment_view_button.vue
@@ -0,0 +1,99 @@
+<script>
+import FilteredSearchDropdown from '~/vue_shared/components/filtered_search_dropdown.vue';
+import ReviewAppLink from '../review_app_link.vue';
+
+export default {
+ name: 'DeploymentViewButton',
+ components: {
+ FilteredSearchDropdown,
+ ReviewAppLink,
+ VisualReviewAppLink: () =>
+ import('ee_component/vue_merge_request_widget/components/visual_review_app_link.vue'),
+ },
+ props: {
+ deployment: {
+ type: Object,
+ required: true,
+ },
+ isCurrent: {
+ type: Boolean,
+ required: true,
+ },
+ showVisualReviewApp: {
+ type: Boolean,
+ required: false,
+ default: false,
+ },
+ visualReviewAppMeta: {
+ type: Object,
+ required: false,
+ default: () => ({
+ sourceProjectId: '',
+ sourceProjectPath: '',
+ mergeRequestId: '',
+ appUrl: '',
+ }),
+ },
+ },
+ computed: {
+ deploymentExternalUrl() {
+ if (this.deployment.changes && this.deployment.changes.length === 1) {
+ return this.deployment.changes[0].external_url;
+ }
+ return this.deployment.external_url;
+ },
+ shouldRenderDropdown() {
+ return this.deployment.changes && this.deployment.changes.length > 1;
+ },
+ },
+};
+</script>
+
+<template>
+ <span>
+ <filtered-search-dropdown
+ v-if="shouldRenderDropdown"
+ class="js-mr-wigdet-deployment-dropdown inline"
+ :items="deployment.changes"
+ :main-action-link="deploymentExternalUrl"
+ filter-key="path"
+ >
+ <template slot="mainAction" slot-scope="slotProps">
+ <review-app-link
+ :is-current="isCurrent"
+ :link="deploymentExternalUrl"
+ :css-class="`deploy-link js-deploy-url inline ${slotProps.className}`"
+ />
+ </template>
+
+ <template slot="result" slot-scope="slotProps">
+ <a
+ :href="slotProps.result.external_url"
+ target="_blank"
+ rel="noopener noreferrer nofollow"
+ class="js-deploy-url-menu-item menu-item"
+ >
+ <strong class="str-truncated-100 append-bottom-0 d-block">
+ {{ slotProps.result.path }}
+ </strong>
+
+ <p class="text-secondary str-truncated-100 append-bottom-0 d-block">
+ {{ slotProps.result.external_url }}
+ </p>
+ </a>
+ </template>
+ </filtered-search-dropdown>
+ <template v-else>
+ <review-app-link
+ :is-current="isCurrent"
+ :link="deploymentExternalUrl"
+ css-class="js-deploy-url deploy-link btn btn-default btn-sm inline"
+ />
+ </template>
+ <visual-review-app-link
+ v-if="showVisualReviewApp"
+ :link="deploymentExternalUrl"
+ :app-metadata="visualReviewAppMeta"
+ />
+ </span>
+</template>
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/memory_usage.vue b/app/assets/javascripts/vue_merge_request_widget/components/deployment/memory_usage.vue
index 7ce454b7338..fe41a15979e 100644
--- a/app/assets/javascripts/vue_merge_request_widget/components/memory_usage.vue
+++ b/app/assets/javascripts/vue_merge_request_widget/components/deployment/memory_usage.vue
@@ -1,10 +1,10 @@
<script>
import { sprintf, s__ } from '~/locale';
-import statusCodes from '../../lib/utils/http_status';
-import { bytesToMiB } from '../../lib/utils/number_utils';
-import { backOff } from '../../lib/utils/common_utils';
-import MemoryGraph from '../../vue_shared/components/memory_graph.vue';
-import MRWidgetService from '../services/mr_widget_service';
+import statusCodes from '~/lib/utils/http_status';
+import { bytesToMiB } from '~/lib/utils/number_utils';
+import { backOff } from '~/lib/utils/common_utils';
+import MemoryGraph from '~/vue_shared/components/memory_graph.vue';
+import MRWidgetService from '../../services/mr_widget_service';
export default {
name: 'MemoryUsage',
@@ -169,12 +169,6 @@ export default {
<p v-if="shouldShowMetricsUnavailable" class="usage-info js-usage-info usage-info-unavailable">
{{ s__('mrWidget|Deployment statistics are not available currently') }}
</p>
- <memory-graph
- v-if="shouldShowMemoryGraph"
- :metrics="memoryMetrics"
- :deployment-time="deploymentTime"
- height="25"
- width="100"
- />
+ <memory-graph v-if="shouldShowMemoryGraph" :metrics="memoryMetrics" :height="25" :width="110" />
</div>
</template>
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/loading.vue b/app/assets/javascripts/vue_merge_request_widget/components/loading.vue
new file mode 100644
index 00000000000..78dc28ee92b
--- /dev/null
+++ b/app/assets/javascripts/vue_merge_request_widget/components/loading.vue
@@ -0,0 +1,29 @@
+<script>
+import { GlSkeletonLoader } from '@gitlab/ui';
+
+export default {
+ components: {
+ GlSkeletonLoader,
+ },
+};
+</script>
+
+<template>
+ <div class="prepend-top-default">
+ <div class="mr-widget-heading p-3">
+ <gl-skeleton-loader :width="577" :height="12">
+ <rect width="86" height="12" rx="2" />
+ <rect x="96" width="300" height="12" rx="2" />
+ </gl-skeleton-loader>
+ </div>
+ <div class="mr-widget-heading mr-widget-workflow p-3">
+ <gl-skeleton-loader :width="577" :height="72">
+ <rect width="120" height="12" rx="2" />
+ <rect y="20" width="300" height="12" rx="2" />
+ <rect y="40" width="60" height="12" rx="2" />
+ <rect y="40" x="68" width="100" height="12" rx="2" />
+ <rect y="60" width="40" height="12" rx="2" />
+ </gl-skeleton-loader>
+ </div>
+ </div>
+</template>
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_pipeline.vue b/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_pipeline.vue
index 7c5f35579b8..42db1935123 100644
--- a/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_pipeline.vue
+++ b/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_pipeline.vue
@@ -1,12 +1,12 @@
<script>
/* eslint-disable vue/require-default-prop */
import { GlTooltipDirective, GlLink } from '@gitlab/ui';
+import mrWidgetPipelineMixin from 'ee_else_ce/vue_merge_request_widget/mixins/mr_widget_pipeline';
import { sprintf, s__ } from '~/locale';
import PipelineStage from '~/pipelines/components/stage.vue';
import CiIcon from '~/vue_shared/components/ci_icon.vue';
import Icon from '~/vue_shared/components/icon.vue';
import TooltipOnTruncate from '~/vue_shared/components/tooltip_on_truncate.vue';
-import mrWidgetPipelineMixin from 'ee_else_ce/vue_merge_request_widget/mixins/mr_widget_pipeline';
export default {
name: 'MRWidgetPipeline',
@@ -28,6 +28,10 @@ export default {
type: Object,
required: true,
},
+ pipelineCoverageDelta: {
+ type: String,
+ required: false,
+ },
// This prop needs to be camelCase, html attributes are case insensive
// https://vuejs.org/v2/guide/components.html#camelCase-vs-kebab-case
hasCi: {
@@ -92,6 +96,16 @@ export default {
showSourceBranch() {
return Boolean(this.pipeline.ref.branch);
},
+ coverageDeltaClass() {
+ const delta = this.pipelineCoverageDelta;
+ if (delta && parseFloat(delta) > 0) {
+ return 'text-success';
+ }
+ if (delta && parseFloat(delta) < 0) {
+ return 'text-danger';
+ }
+ return '';
+ },
},
};
</script>
@@ -142,6 +156,14 @@ export default {
</div>
<div v-if="pipeline.coverage" class="coverage">
{{ s__('Pipeline|Coverage') }} {{ pipeline.coverage }}%
+
+ <span
+ v-if="pipelineCoverageDelta"
+ class="js-pipeline-coverage-delta"
+ :class="coverageDeltaClass"
+ >
+ ({{ pipelineCoverageDelta }}%)
+ </span>
</div>
</div>
</div>
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_pipeline_container.vue b/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_pipeline_container.vue
index ffc3e0967d4..90fb254ecca 100644
--- a/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_pipeline_container.vue
+++ b/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_pipeline_container.vue
@@ -1,9 +1,10 @@
<script>
import _ from 'underscore';
import ArtifactsApp from './artifacts_list_app.vue';
-import Deployment from './deployment.vue';
+import Deployment from './deployment/deployment.vue';
import MrWidgetContainer from './mr_widget_container.vue';
import MrWidgetPipeline from './mr_widget_pipeline.vue';
+import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
/**
* Renders the pipeline and related deployments from the store.
@@ -23,6 +24,7 @@ export default {
MergeTrainPositionIndicator: () =>
import('ee_component/vue_merge_request_widget/components/merge_train_position_indicator.vue'),
},
+ mixins: [glFeatureFlagsMixin()],
props: {
mr: {
type: Object,
@@ -62,7 +64,7 @@ export default {
return this.isPostMerge ? this.mr.mergePipeline : this.mr.pipeline;
},
showVisualReviewAppLink() {
- return this.mr.visualReviewAppAvailable;
+ return this.mr.visualReviewAppAvailable && this.glFeatures.anonymousVisualReviewFeedback;
},
showMergeTrainPositionIndicator() {
return _.isNumber(this.mr.mergeTrainIndex);
@@ -74,6 +76,7 @@ export default {
<mr-widget-container>
<mr-widget-pipeline
:pipeline="pipeline"
+ :pipeline-coverage-delta="mr.pipelineCoverageDelta"
:ci-status="mr.ciStatus"
:has-ci="mr.hasCI"
:source-branch="branch"
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/review_app_link.vue b/app/assets/javascripts/vue_merge_request_widget/components/review_app_link.vue
index 75f557d05dd..1550ec0f21e 100644
--- a/app/assets/javascripts/vue_merge_request_widget/components/review_app_link.vue
+++ b/app/assets/javascripts/vue_merge_request_widget/components/review_app_link.vue
@@ -1,4 +1,5 @@
<script>
+import { __ } from '~/locale';
import Icon from '~/vue_shared/components/icon.vue';
export default {
@@ -6,19 +7,35 @@ export default {
Icon,
},
props: {
- link: {
+ cssClass: {
type: String,
required: true,
},
- cssClass: {
+ isCurrent: {
+ type: Boolean,
+ required: true,
+ },
+ link: {
type: String,
required: true,
},
},
+ computed: {
+ linkText() {
+ return this.isCurrent ? __('View app') : __('View previous app');
+ },
+ },
};
</script>
<template>
- <a :href="link" target="_blank" rel="noopener noreferrer nofollow" :class="cssClass">
- {{ __('View app') }} <icon class="fgray" name="external-link" />
+ <a
+ :href="link"
+ target="_blank"
+ rel="noopener noreferrer nofollow"
+ :class="cssClass"
+ data-track-event="open_review_app"
+ data-track-label="review_app"
+ >
+ {{ linkText }} <icon class="fgray" name="external-link" />
</a>
</template>
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_merged.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_merged.vue
index a2b5a79af36..c8e652a1305 100644
--- a/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_merged.vue
+++ b/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_merged.vue
@@ -1,5 +1,6 @@
<script>
/* eslint-disable @gitlab/vue-i18n/no-bare-strings */
+import { GlLoadingIcon } from '@gitlab/ui';
import Flash from '~/flash';
import tooltip from '~/vue_shared/directives/tooltip';
import { s__, __ } from '~/locale';
@@ -7,7 +8,6 @@ import ClipboardButton from '~/vue_shared/components/clipboard_button.vue';
import MrWidgetAuthorTime from '../../components/mr_widget_author_time.vue';
import statusIcon from '../mr_widget_status_icon.vue';
import eventHub from '../../event_hub';
-import { GlLoadingIcon } from '@gitlab/ui';
export default {
name: 'MRWidgetMerged',
@@ -155,7 +155,7 @@ export default {
{{ cherryPickLabel }}
</a>
</div>
- <section class="mr-info-list">
+ <section class="mr-info-list" data-qa-selector="merged_status_content">
<p>
{{ s__('mrWidget|The changes were merged into') }}
<span class="label-branch">
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue
index 2c113770d8b..d230ac566de 100644
--- a/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue
+++ b/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue
@@ -1,10 +1,11 @@
<script>
import _ from 'underscore';
+import { GlIcon } from '@gitlab/ui';
import successSvg from 'icons/_icon_status_success.svg';
import warningSvg from 'icons/_icon_status_warning.svg';
-import simplePoll from '~/lib/utils/simple_poll';
-import { __ } from '~/locale';
import readyToMergeMixin from 'ee_else_ce/vue_merge_request_widget/mixins/ready_to_merge';
+import simplePoll from '~/lib/utils/simple_poll';
+import { __, sprintf } from '~/locale';
import MergeRequest from '../../../merge_request';
import { refreshUserMergeRequestCounts } from '~/commons/nav/user_merge_requests';
import Flash from '../../../flash';
@@ -24,6 +25,11 @@ export default {
CommitsHeader,
CommitEdit,
CommitMessageDropdown,
+ GlIcon,
+ MergeImmediatelyConfirmationDialog: () =>
+ import(
+ 'ee_component/vue_merge_request_widget/components/merge_immediately_confirmation_dialog.vue'
+ ),
},
mixins: [readyToMergeMixin],
props: {
@@ -111,6 +117,18 @@ export default {
shouldShowMergeEdit() {
return !this.mr.ffOnlyEnabled;
},
+ shaMismatchLink() {
+ const href = this.mr.mergeRequestDiffsPath;
+
+ return sprintf(
+ __('New changes were added. %{linkStart}Reload the page to review them%{linkEnd}'),
+ {
+ linkStart: `<a href="${href}">`,
+ linkEnd: '</a>',
+ },
+ false,
+ );
+ },
},
methods: {
updateMergeCommitMessage(includeDescription) {
@@ -123,7 +141,7 @@ export default {
}
const options = {
- sha: this.mr.sha,
+ sha: this.mr.latestSHA || this.mr.sha,
commit_message: this.commitMessage,
auto_merge_strategy: useAutoMerge ? this.mr.preferredAutoMergeStrategy : undefined,
should_remove_source_branch: this.removeSourceBranch === true,
@@ -151,6 +169,16 @@ export default {
new Flash(__('Something went wrong. Please try again.')); // eslint-disable-line
});
},
+ handleMergeImmediatelyButtonClick() {
+ if (this.isMergeImmediatelyDangerous) {
+ this.$refs.confirmationDialog.show();
+ } else {
+ this.handleMergeButtonClick(false, true);
+ }
+ },
+ onMergeImmediatelyConfirmation() {
+ this.handleMergeButtonClick(false, true);
+ },
initiateMergePolling() {
simplePoll(
(continuePolling, stopPolling) => {
@@ -249,9 +277,10 @@ export default {
type="button"
class="btn btn-sm btn-info dropdown-toggle js-merge-moment"
data-toggle="dropdown"
+ data-qa-selector="merge_moment_dropdown"
:aria-label="__('Select merge moment')"
>
- <i class="fa fa-chevron-down qa-merge-moment-dropdown" aria-hidden="true"></i>
+ <i class="fa fa-chevron-down" aria-hidden="true"></i>
</button>
<ul
v-if="shouldShowMergeImmediatelyDropdown"
@@ -271,10 +300,16 @@ export default {
</a>
</li>
<li>
+ <merge-immediately-confirmation-dialog
+ ref="confirmationDialog"
+ :docs-url="mr.mergeImmediatelyDocsPath"
+ @mergeImmediately="onMergeImmediatelyConfirmation"
+ />
<a
- class="accept-merge-request qa-merge-immediately-option"
+ class="accept-merge-request js-merge-immediately-button"
+ data-qa-selector="merge_immediately_option"
href="#"
- @click.prevent="handleMergeButtonClick(false, true)"
+ @click.prevent="handleMergeImmediatelyButtonClick"
>
<span class="media">
<span class="merge-opt-icon" aria-hidden="true" v-html="warningSvg"></span>
@@ -312,6 +347,10 @@ export default {
</template>
</div>
</div>
+ <div v-if="mr.isSHAMismatch" class="d-flex align-items-center mt-2 js-sha-mismatch">
+ <gl-icon name="warning-solid" class="text-warning mr-1" />
+ <span class="text-warning" v-html="shaMismatchLink"></span>
+ </div>
</div>
</div>
<template v-if="shouldShowMergeControls">
diff --git a/app/assets/javascripts/vue_merge_request_widget/mixins/ready_to_merge.js b/app/assets/javascripts/vue_merge_request_widget/mixins/ready_to_merge.js
index 40e6203599f..32a2b7b83f4 100644
--- a/app/assets/javascripts/vue_merge_request_widget/mixins/ready_to_merge.js
+++ b/app/assets/javascripts/vue_merge_request_widget/mixins/ready_to_merge.js
@@ -23,5 +23,8 @@ export default {
shouldShowMergeImmediatelyDropdown() {
return this.mr.isPipelineActive && !this.mr.onlyAllowMergeIfPipelineSucceeds;
},
+ isMergeImmediatelyDangerous() {
+ return false;
+ },
},
};
diff --git a/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.vue b/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.vue
index edd21a81f8b..38a7c262b3e 100644
--- a/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.vue
+++ b/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.vue
@@ -1,16 +1,17 @@
<script>
import _ from 'underscore';
-import { sprintf, s__, __ } from '~/locale';
-import Project from '~/pages/projects/project';
-import SmartInterval from '~/smart_interval';
import MRWidgetStore from 'ee_else_ce/vue_merge_request_widget/stores/mr_widget_store';
import MRWidgetService from 'ee_else_ce/vue_merge_request_widget/services/mr_widget_service';
import stateMaps from 'ee_else_ce/vue_merge_request_widget/stores/state_maps';
+import { sprintf, s__, __ } from '~/locale';
+import Project from '~/pages/projects/project';
+import SmartInterval from '~/smart_interval';
import createFlash from '../flash';
+import Loading from './components/loading.vue';
import WidgetHeader from './components/mr_widget_header.vue';
import WidgetMergeHelp from './components/mr_widget_merge_help.vue';
import MrWidgetPipelineContainer from './components/mr_widget_pipeline_container.vue';
-import Deployment from './components/deployment.vue';
+import Deployment from './components/deployment/deployment.vue';
import WidgetRelatedLinks from './components/mr_widget_related_links.vue';
import MrWidgetAlertMessage from './components/mr_widget_alert_message.vue';
import MergedState from './components/states/mr_widget_merged.vue';
@@ -24,7 +25,6 @@ import NothingToMergeState from './components/states/nothing_to_merge.vue';
import MissingBranchState from './components/states/mr_widget_missing_branch.vue';
import NotAllowedState from './components/states/mr_widget_not_allowed.vue';
import ReadyToMergeState from './components/states/ready_to_merge.vue';
-import ShaMismatchState from './components/states/sha_mismatch.vue';
import UnresolvedDiscussionsState from './components/states/unresolved_discussions.vue';
import PipelineBlockedState from './components/states/mr_widget_pipeline_blocked.vue';
import PipelineFailedState from './components/states/pipeline_failed.vue';
@@ -44,6 +44,7 @@ export default {
// eslint-disable-next-line @gitlab/i18n/no-non-i18n-strings
name: 'MRWidget',
components: {
+ Loading,
'mr-widget-header': WidgetHeader,
'mr-widget-merge-help': WidgetMergeHelp,
MrWidgetPipelineContainer,
@@ -61,7 +62,7 @@ export default {
'mr-widget-not-allowed': NotAllowedState,
'mr-widget-missing-branch': MissingBranchState,
'mr-widget-ready-to-merge': ReadyToMergeState,
- 'sha-mismatch': ShaMismatchState,
+ 'sha-mismatch': ReadyToMergeState,
'mr-widget-checking': CheckingState,
'mr-widget-unresolved-discussions': UnresolvedDiscussionsState,
'mr-widget-pipeline-blocked': PipelineBlockedState,
@@ -80,12 +81,12 @@ export default {
},
},
data() {
- const store = new MRWidgetStore(this.mrData || window.gl.mrWidgetData);
- const service = this.createService(store);
+ const store = this.mrData && new MRWidgetStore(this.mrData);
+
return {
mr: store,
- state: store.state,
- service,
+ state: store && store.state,
+ service: store && this.createService(store),
};
},
computed: {
@@ -133,29 +134,58 @@ export default {
}
},
},
- created() {
- this.initPolling();
- this.bindEventHubListeners();
- eventHub.$on('mr.discussion.updated', this.checkStatus);
- },
mounted() {
- this.setFaviconHelper();
- this.initDeploymentsPolling();
-
- if (this.shouldRenderMergedPipeline) {
- this.initPostMergeDeploymentsPolling();
+ if (gon && gon.features && gon.features.asyncMrWidget) {
+ MRWidgetService.fetchInitialData()
+ .then(({ data }) => this.initWidget(data))
+ .catch(() =>
+ createFlash(__('Unable to load the merge request widget. Try reloading the page.')),
+ );
+ } else {
+ this.initWidget();
}
},
beforeDestroy() {
eventHub.$off('mr.discussion.updated', this.checkStatus);
- this.pollingInterval.destroy();
- this.deploymentsInterval.destroy();
+ if (this.pollingInterval) {
+ this.pollingInterval.destroy();
+ }
+
+ if (this.deploymentsInterval) {
+ this.deploymentsInterval.destroy();
+ }
if (this.postMergeDeploymentsInterval) {
this.postMergeDeploymentsInterval.destroy();
}
},
methods: {
+ initWidget(data = {}) {
+ if (this.mr) {
+ this.mr.setData({ ...window.gl.mrWidgetData, ...data });
+ } else {
+ this.mr = new MRWidgetStore({ ...window.gl.mrWidgetData, ...data });
+ }
+
+ if (!this.state) {
+ this.state = this.mr.state;
+ }
+
+ if (!this.service) {
+ this.service = this.createService(this.mr);
+ }
+
+ this.setFaviconHelper();
+ this.initDeploymentsPolling();
+
+ if (this.shouldRenderMergedPipeline) {
+ this.initPostMergeDeploymentsPolling();
+ }
+
+ this.initPolling();
+ this.bindEventHubListeners();
+ eventHub.$on('mr.discussion.updated', this.checkStatus);
+ },
getServiceEndpoints(store) {
return {
mergePath: store.mergePath,
@@ -319,7 +349,7 @@ export default {
};
</script>
<template>
- <div class="mr-state-widget prepend-top-default">
+ <div v-if="mr" class="mr-state-widget prepend-top-default">
<mr-widget-header :mr="mr" />
<mr-widget-pipeline-container
v-if="shouldRenderPipelines"
@@ -377,4 +407,5 @@ export default {
:is-post-merge="true"
/>
</div>
+ <loading v-else />
</template>
diff --git a/app/assets/javascripts/vue_merge_request_widget/services/mr_widget_service.js b/app/assets/javascripts/vue_merge_request_widget/services/mr_widget_service.js
index 8a229d80954..d22cb4ced80 100644
--- a/app/assets/javascripts/vue_merge_request_widget/services/mr_widget_service.js
+++ b/app/assets/javascripts/vue_merge_request_widget/services/mr_widget_service.js
@@ -61,4 +61,11 @@ export default class MRWidgetService {
static fetchMetrics(metricsUrl) {
return axios.get(`${metricsUrl}.json`);
}
+
+ static fetchInitialData() {
+ return Promise.all([
+ axios.get(window.gl.mrWidgetData.merge_request_cached_widget_path),
+ axios.get(window.gl.mrWidgetData.merge_request_widget_path),
+ ]).then(axios.spread((res, cachedRes) => ({ data: Object.assign(res.data, cachedRes.data) })));
+ }
}
diff --git a/app/assets/javascripts/vue_merge_request_widget/stores/mr_widget_store.js b/app/assets/javascripts/vue_merge_request_widget/stores/mr_widget_store.js
index f51d0fa4f52..c7949fa264e 100644
--- a/app/assets/javascripts/vue_merge_request_widget/stores/mr_widget_store.js
+++ b/app/assets/javascripts/vue_merge_request_widget/stores/mr_widget_store.js
@@ -1,4 +1,4 @@
-import Timeago from 'timeago.js';
+import { format } from 'timeago.js';
import _ from 'underscore';
import getStateKey from 'ee_else_ce/vue_merge_request_widget/stores/get_state_key';
import { stateKey } from './state_maps';
@@ -42,12 +42,14 @@ export default class MergeRequestStore {
this.commitsCount = data.commits_count;
this.divergedCommitsCount = data.diverged_commits_count;
this.pipeline = data.pipeline || {};
+ this.pipelineCoverageDelta = data.pipeline_coverage_delta;
this.mergePipeline = data.merge_pipeline || {};
this.deployments = this.deployments || data.deployments || [];
this.postMergeDeployments = this.postMergeDeployments || [];
this.commits = data.commits_without_merge_commits || [];
this.squashCommitMessage = data.default_squash_commit_message;
this.rebaseInProgress = data.rebase_in_progress;
+ this.mergeRequestDiffsPath = data.diffs_path;
if (data.issues_links) {
const links = data.issues_links;
@@ -81,6 +83,7 @@ export default class MergeRequestStore {
this.isOpen = data.state === 'opened';
this.hasMergeableDiscussionsState = data.mergeable_discussions_state === false;
this.isSHAMismatch = this.sha !== data.diff_head_sha;
+ this.latestSHA = data.diff_head_sha;
this.canBeMerged = data.can_be_merged || false;
this.isMergeAllowed = data.mergeable || false;
this.mergeOngoing = data.merge_ongoing;
@@ -170,6 +173,8 @@ export default class MergeRequestStore {
this.conflictsDocsPath = data.conflicts_docs_path;
this.ciEnvironmentsStatusPath = data.ci_environments_status_path;
this.securityApprovalsHelpPagePath = data.security_approvals_help_page_path;
+ this.eligibleApproversDocsPath = data.eligible_approvers_docs_path;
+ this.mergeImmediatelyDocsPath = data.merge_immediately_docs_path;
}
get isNothingToMergeState() {
@@ -213,9 +218,7 @@ export default class MergeRequestStore {
return '';
}
- const timeagoInstance = new Timeago();
-
- return timeagoInstance.format(date);
+ return format(date);
}
static getPreferredAutoMergeStrategy(availableAutoMergeStrategies) {
diff --git a/app/assets/javascripts/vue_shared/components/bar_chart.vue b/app/assets/javascripts/vue_shared/components/bar_chart.vue
index eabf5d4bf60..25d7bfe515c 100644
--- a/app/assets/javascripts/vue_shared/components/bar_chart.vue
+++ b/app/assets/javascripts/vue_shared/components/bar_chart.vue
@@ -55,13 +55,13 @@ export default {
vbWidth: 0,
vbHeight: 0,
vpWidth: 0,
- vpHeight: 350,
- preserveAspectRatioType: 'xMidYMid meet',
+ vpHeight: 200,
+ preserveAspectRatioType: 'xMidYMin meet',
containerMargin: {
leftRight: 30,
},
viewBoxMargin: {
- topBottom: 150,
+ topBottom: 100,
},
panX: 0,
xScale: {},
@@ -274,6 +274,7 @@ export default {
<div ref="svgContainer" :class="activateGrabCursor" class="svg-graph-container">
<svg
ref="baseSvg"
+ class="svg-graph overflow-visible pt-5"
:width="vpWidth"
:height="vpHeight"
:viewBox="svgViewBox"
diff --git a/app/assets/javascripts/vue_shared/components/content_viewer/viewers/markdown_viewer.vue b/app/assets/javascripts/vue_shared/components/content_viewer/viewers/markdown_viewer.vue
index c50304f057d..eb3e489fb8c 100644
--- a/app/assets/javascripts/vue_shared/components/content_viewer/viewers/markdown_viewer.vue
+++ b/app/assets/javascripts/vue_shared/components/content_viewer/viewers/markdown_viewer.vue
@@ -1,8 +1,8 @@
<script>
-import axios from '~/lib/utils/axios_utils';
-import { __ } from '~/locale';
import $ from 'jquery';
import { GlSkeletonLoading } from '@gitlab/ui';
+import axios from '~/lib/utils/axios_utils';
+import { __ } from '~/locale';
const { CancelToken } = axios;
let axiosSource;
diff --git a/app/assets/javascripts/vue_shared/components/dropdown/dropdown_button.vue b/app/assets/javascripts/vue_shared/components/dropdown/dropdown_button.vue
index 22f370c4bca..494df2d7a37 100644
--- a/app/assets/javascripts/vue_shared/components/dropdown/dropdown_button.vue
+++ b/app/assets/javascripts/vue_shared/components/dropdown/dropdown_button.vue
@@ -1,6 +1,6 @@
<script>
-import { __ } from '~/locale';
import { GlLoadingIcon } from '@gitlab/ui';
+import { __ } from '~/locale';
export default {
components: {
diff --git a/app/assets/javascripts/vue_shared/components/dropdown/dropdown_search_input.vue b/app/assets/javascripts/vue_shared/components/dropdown/dropdown_search_input.vue
index c01c7cc4ccc..610bce9a705 100644
--- a/app/assets/javascripts/vue_shared/components/dropdown/dropdown_search_input.vue
+++ b/app/assets/javascripts/vue_shared/components/dropdown/dropdown_search_input.vue
@@ -8,6 +8,11 @@ export default {
required: true,
default: __('Search'),
},
+ focused: {
+ type: Boolean,
+ required: false,
+ default: false,
+ },
},
data() {
return { searchQuery: this.value };
@@ -16,6 +21,11 @@ export default {
searchQuery(query) {
this.$emit('input', query);
},
+ focused(val) {
+ if (val) {
+ this.$refs.searchInput.focus();
+ }
+ },
},
};
</script>
@@ -23,6 +33,7 @@ export default {
<template>
<div class="dropdown-input">
<input
+ ref="searchInput"
v-model="searchQuery"
:placeholder="placeholderText"
class="dropdown-input-field"
diff --git a/app/assets/javascripts/vue_shared/components/expand_button.vue b/app/assets/javascripts/vue_shared/components/expand_button.vue
index d64ab774431..e2a6e92081f 100644
--- a/app/assets/javascripts/vue_shared/components/expand_button.vue
+++ b/app/assets/javascripts/vue_shared/components/expand_button.vue
@@ -1,4 +1,5 @@
<script>
+import { GlButton } from '@gitlab/ui';
import { __ } from '~/locale';
import Icon from '~/vue_shared/components/icon.vue';
@@ -15,6 +16,7 @@ import Icon from '~/vue_shared/components/icon.vue';
export default {
name: 'ExpandButton',
components: {
+ GlButton,
Icon,
},
data() {
@@ -39,15 +41,25 @@ export default {
</script>
<template>
<span>
- <button
+ <gl-button
v-show="isCollapsed"
:aria-label="ariaLabel"
type="button"
- class="text-expander btn-blank"
+ class="js-text-expander-prepend text-expander btn-blank"
@click="onClick"
>
<icon :size="12" name="ellipsis_h" />
- </button>
+ </gl-button>
+ <span v-if="isCollapsed"> <slot name="short"></slot> </span>
<span v-if="!isCollapsed"> <slot name="expanded"></slot> </span>
+ <gl-button
+ v-show="!isCollapsed"
+ :aria-label="ariaLabel"
+ type="button"
+ class="js-text-expander-append text-expander btn-blank"
+ @click="onClick"
+ >
+ <icon :size="12" name="ellipsis_h" />
+ </gl-button>
</span>
</template>
diff --git a/app/assets/javascripts/vue_shared/components/gl_countdown.vue b/app/assets/javascripts/vue_shared/components/gl_countdown.vue
index 4aae3549601..1769a283d8c 100644
--- a/app/assets/javascripts/vue_shared/components/gl_countdown.vue
+++ b/app/assets/javascripts/vue_shared/components/gl_countdown.vue
@@ -1,6 +1,6 @@
<script>
-import { calculateRemainingMilliseconds, formatTime } from '~/lib/utils/datetime_utility';
import { GlTooltipDirective } from '@gitlab/ui';
+import { calculateRemainingMilliseconds, formatTime } from '~/lib/utils/datetime_utility';
/**
* Counts down to a given end date.
diff --git a/app/assets/javascripts/vue_shared/components/issue/issue_milestone.vue b/app/assets/javascripts/vue_shared/components/issue/issue_milestone.vue
index 9b2ee5062b1..cfbc5b0df3c 100644
--- a/app/assets/javascripts/vue_shared/components/issue/issue_milestone.vue
+++ b/app/assets/javascripts/vue_shared/components/issue/issue_milestone.vue
@@ -54,7 +54,7 @@ export default {
return timeFor(
this.milestoneDue,
sprintf(__('Expired %{expiredOn}'), {
- expiredOn: this.timeFormated(this.milestoneDue),
+ expiredOn: this.timeFormatted(this.milestoneDue),
}),
);
}
@@ -62,7 +62,7 @@ export default {
return sprintf(
this.isMilestoneStarted ? __('Started %{startsIn}') : __('Starts %{startsIn}'),
{
- startsIn: this.timeFormated(this.milestoneStart),
+ startsIn: this.timeFormatted(this.milestoneStart),
},
);
}
diff --git a/app/assets/javascripts/vue_shared/components/markdown/suggestion_diff_header.vue b/app/assets/javascripts/vue_shared/components/markdown/suggestion_diff_header.vue
index cc700440a23..8a8cf09194c 100644
--- a/app/assets/javascripts/vue_shared/components/markdown/suggestion_diff_header.vue
+++ b/app/assets/javascripts/vue_shared/components/markdown/suggestion_diff_header.vue
@@ -1,6 +1,6 @@
<script>
-import Icon from '~/vue_shared/components/icon.vue';
import { GlButton, GlLoadingIcon, GlTooltipDirective } from '@gitlab/ui';
+import Icon from '~/vue_shared/components/icon.vue';
export default {
components: { Icon, GlButton, GlLoadingIcon },
diff --git a/app/assets/javascripts/vue_shared/components/memory_graph.vue b/app/assets/javascripts/vue_shared/components/memory_graph.vue
index 26d7d8e8866..af0b85cc6e4 100644
--- a/app/assets/javascripts/vue_shared/components/memory_graph.vue
+++ b/app/assets/javascripts/vue_shared/components/memory_graph.vue
@@ -1,128 +1,43 @@
<script>
-import { __, sprintf } from '~/locale';
-import { getTimeago } from '../../lib/utils/datetime_utility';
+import { GlSparklineChart } from '@gitlab/ui/dist/charts';
+import { formatDate, secondsToMilliseconds } from '~/lib/utils/datetime_utility';
export default {
name: 'MemoryGraph',
+ components: {
+ GlSparklineChart,
+ },
props: {
metrics: { type: Array, required: true },
- deploymentTime: { type: Number, required: true },
- width: { type: String, required: true },
- height: { type: String, required: true },
- },
- data() {
- return {
- pathD: '',
- pathViewBox: '',
- dotX: '',
- dotY: '',
- };
+ width: { type: Number, required: true },
+ height: { type: Number, required: true },
},
computed: {
- getFormattedMedian() {
- const deployedSince = getTimeago().format(this.deploymentTime * 1000);
- return sprintf(__('Deployed %{deployedSince}'), { deployedSince });
+ chartData() {
+ return this.metrics.map(([x, y]) => [
+ this.getFormattedDeploymentTime(x),
+ this.getMemoryUsage(y),
+ ]);
},
},
- mounted() {
- this.renderGraph(this.deploymentTime, this.metrics);
- },
methods: {
- /**
- * Returns metric value index in metrics array
- * with timestamp closest to matching median
- */
- getMedianMetricIndex(median, metrics) {
- let matchIndex = 0;
- let timestampDiff = 0;
- let smallestDiff = 0;
-
- const metricTimestamps = metrics.map(v => v[0]);
-
- // Find metric timestamp which is closest to deploymentTime
- timestampDiff = Math.abs(metricTimestamps[0] - median);
- metricTimestamps.forEach((timestamp, index) => {
- if (index === 0) {
- // Skip first element
- return;
- }
-
- smallestDiff = Math.abs(timestamp - median);
- if (smallestDiff < timestampDiff) {
- matchIndex = index;
- timestampDiff = smallestDiff;
- }
- });
-
- return matchIndex;
+ getFormattedDeploymentTime(timestamp) {
+ return formatDate(new Date(secondsToMilliseconds(timestamp)), 'mmm dd yyyy HH:MM:s');
},
-
- /**
- * Get Graph Plotting values to render Line and Dot
- */
- getGraphPlotValues(median, metrics) {
- const renderData = metrics.map(v => v[1]);
- const medianMetricIndex = this.getMedianMetricIndex(median, metrics);
- let cx = 0;
- let cy = 0;
-
- // Find Maximum and Minimum values from `renderData` array
- const maxMemory = Math.max.apply(null, renderData);
- const minMemory = Math.min.apply(null, renderData);
-
- // Find difference between extreme ends
- const diff = maxMemory - minMemory;
- const lineWidth = renderData.length;
-
- // Iterate over metrics values and perform following
- // 1. Find x & y co-ords for deploymentTime's memory value
- // 2. Return line path against maxMemory
- const linePath = renderData.map((y, x) => {
- if (medianMetricIndex === x) {
- cx = x;
- cy = maxMemory - y;
- }
- return `${x} ${maxMemory - y}`;
- });
-
- return {
- pathD: linePath,
- pathViewBox: {
- lineWidth,
- diff,
- },
- dotX: cx,
- dotY: cy,
- };
- },
-
- /**
- * Render Graph based on provided median and metrics values
- */
- renderGraph(median, metrics) {
- const { pathD, pathViewBox, dotX, dotY } = this.getGraphPlotValues(median, metrics);
-
- // Set props and update graph on UI.
- this.pathD = `M ${pathD}`;
- this.pathViewBox = `0 0 ${pathViewBox.lineWidth} ${pathViewBox.diff}`;
- this.dotX = dotX;
- this.dotY = dotY;
+ getMemoryUsage(MBs) {
+ return Number(MBs).toFixed(2);
},
},
};
</script>
<template>
- <div class="memory-graph-container">
- <svg
- :title="getFormattedMedian"
- :width="width"
+ <div class="memory-graph-container p-1" :style="{ width: `${width}px` }">
+ <gl-sparkline-chart
:height="height"
- class="has-tooltip"
- xmlns="http://www.w3.org/2000/svg"
- >
- <path :d="pathD" :viewBox="pathViewBox" />
- <circle :cx="dotX" :cy="dotY" r="1.5" transform="translate(0 -1)" />
- </svg>
+ :tooltip-label="__('MB')"
+ :show-last-y-value="false"
+ :data="chartData"
+ />
</div>
</template>
diff --git a/app/assets/javascripts/vue_shared/components/modal_copy_button.vue b/app/assets/javascripts/vue_shared/components/modal_copy_button.vue
index edbeab9c600..cdcfff42981 100644
--- a/app/assets/javascripts/vue_shared/components/modal_copy_button.vue
+++ b/app/assets/javascripts/vue_shared/components/modal_copy_button.vue
@@ -1,9 +1,9 @@
<script>
import $ from 'jquery';
import { GlButton, GlTooltipDirective } from '@gitlab/ui';
+import Clipboard from 'clipboard';
import { __ } from '~/locale';
import Icon from '~/vue_shared/components/icon.vue';
-import Clipboard from 'clipboard';
export default {
components: {
diff --git a/app/assets/javascripts/vue_shared/components/notes/system_note.vue b/app/assets/javascripts/vue_shared/components/notes/system_note.vue
index f8e010c4f42..15ca64ba297 100644
--- a/app/assets/javascripts/vue_shared/components/notes/system_note.vue
+++ b/app/assets/javascripts/vue_shared/components/notes/system_note.vue
@@ -19,9 +19,9 @@
import $ from 'jquery';
import { mapGetters, mapActions } from 'vuex';
import { GlSkeletonLoading } from '@gitlab/ui';
+import descriptionVersionHistoryMixin from 'ee_else_ce/notes/mixins/description_version_history';
import noteHeader from '~/notes/components/note_header.vue';
import Icon from '~/vue_shared/components/icon.vue';
-import descriptionVersionHistoryMixin from 'ee_else_ce/notes/mixins/description_version_history';
import TimelineEntryItem from './timeline_entry_item.vue';
import { spriteIcon } from '../../../lib/utils/common_utils';
import initMRPopovers from '~/mr_popover/';
diff --git a/app/assets/javascripts/vue_shared/components/pagination/table_pagination.vue b/app/assets/javascripts/vue_shared/components/pagination/table_pagination.vue
index e89638130f5..29a4a90a59f 100644
--- a/app/assets/javascripts/vue_shared/components/pagination/table_pagination.vue
+++ b/app/assets/javascripts/vue_shared/components/pagination/table_pagination.vue
@@ -1,15 +1,18 @@
<script>
+import { GlPagination } from '@gitlab/ui';
import {
- PAGINATION_UI_BUTTON_LIMIT,
- UI_LIMIT,
- SPREAD,
PREV,
NEXT,
- FIRST,
- LAST,
+ LABEL_FIRST_PAGE,
+ LABEL_PREV_PAGE,
+ LABEL_NEXT_PAGE,
+ LABEL_LAST_PAGE,
} from '~/vue_shared/components/pagination/constants';
export default {
+ components: {
+ GlPagination,
+ },
props: {
/**
This function will take the information given by the pagination component
@@ -46,113 +49,34 @@ export default {
},
},
computed: {
- prev() {
- return this.pageInfo.previousPage;
- },
- next() {
- return this.pageInfo.nextPage;
- },
- getItems() {
- const { totalPages, nextPage, previousPage, page } = this.pageInfo;
- const items = [];
-
- if (page > 1) {
- items.push({ title: FIRST, first: true });
- }
-
- if (previousPage) {
- items.push({ title: PREV, prev: true });
- } else {
- items.push({ title: PREV, disabled: true, prev: true });
- }
-
- if (page > UI_LIMIT) items.push({ title: SPREAD, separator: true });
-
- if (totalPages) {
- const start = Math.max(page - PAGINATION_UI_BUTTON_LIMIT, 1);
- const end = Math.min(page + PAGINATION_UI_BUTTON_LIMIT, totalPages);
-
- for (let i = start; i <= end; i += 1) {
- const isActive = i === page;
- items.push({ title: i, active: isActive, page: true });
- }
-
- if (totalPages - page > PAGINATION_UI_BUTTON_LIMIT) {
- items.push({ title: SPREAD, separator: true, page: true });
- }
- }
-
- if (nextPage) {
- items.push({ title: NEXT, next: true });
- } else {
- items.push({ title: NEXT, disabled: true, next: true });
- }
-
- if (totalPages && totalPages - page >= 1) {
- items.push({ title: LAST, last: true });
- }
-
- return items;
- },
showPagination() {
return this.pageInfo.nextPage || this.pageInfo.previousPage;
},
},
- methods: {
- changePage(text, isDisabled) {
- if (isDisabled) return;
-
- const { totalPages, nextPage, previousPage } = this.pageInfo;
-
- switch (text) {
- case SPREAD:
- break;
- case LAST:
- this.change(totalPages);
- break;
- case NEXT:
- this.change(nextPage);
- break;
- case PREV:
- this.change(previousPage);
- break;
- case FIRST:
- this.change(1);
- break;
- default:
- this.change(Number(text));
- break;
- }
- },
- hideOnSmallScreen(item) {
- return !item.first && !item.last && !item.next && !item.prev && !item.active;
- },
- },
+ prevText: PREV,
+ nextText: NEXT,
+ labelFirstPage: LABEL_FIRST_PAGE,
+ labelPrevPage: LABEL_PREV_PAGE,
+ labelNextPage: LABEL_NEXT_PAGE,
+ labelLastPage: LABEL_LAST_PAGE,
};
</script>
<template>
- <div v-if="showPagination" class="gl-pagination prepend-top-default">
- <ul class="pagination justify-content-center">
- <li
- v-for="(item, index) in getItems"
- :key="index"
- :class="{
- page: item.page,
- 'js-previous-button': item.prev,
- 'js-next-button': item.next,
- 'js-last-button': item.last,
- 'js-first-button': item.first,
- 'd-none d-md-block': hideOnSmallScreen(item),
- separator: item.separator,
- active: item.active,
- disabled: item.disabled || item.separator,
- }"
- class="page-item"
- >
- <button type="button" class="page-link" @click="changePage(item.title, item.disabled)">
- {{ item.title }}
- </button>
- </li>
- </ul>
- </div>
+ <gl-pagination
+ v-if="showPagination"
+ class="justify-content-center prepend-top-default"
+ v-bind="$attrs"
+ :value="pageInfo.page"
+ :per-page="pageInfo.perPage"
+ :total-items="pageInfo.total"
+ :prev-page="pageInfo.previousPage"
+ :prev-text="$options.prevText"
+ :next-page="pageInfo.nextPage"
+ :next-text="$options.nextText"
+ :label-first-page="$options.labelFirstPage"
+ :label-prev-page="$options.labelPrevPage"
+ :label-next-page="$options.labelNextPage"
+ :label-last-page="$options.labelLastPage"
+ @input="change"
+ />
</template>
diff --git a/app/assets/javascripts/vue_shared/components/project_avatar/image.vue b/app/assets/javascripts/vue_shared/components/project_avatar/image.vue
index 43bbb756805..269736c799c 100644
--- a/app/assets/javascripts/vue_shared/components/project_avatar/image.vue
+++ b/app/assets/javascripts/vue_shared/components/project_avatar/image.vue
@@ -14,8 +14,8 @@
/>
*/
-import { __ } from '~/locale';
import defaultAvatarUrl from 'images/no_avatar.png';
+import { __ } from '~/locale';
import { placeholderImage } from '../../../lazy_loader';
export default {
diff --git a/app/assets/javascripts/vue_shared/components/project_selector/project_list_item.vue b/app/assets/javascripts/vue_shared/components/project_selector/project_list_item.vue
index 071bae7f665..c472e54efda 100644
--- a/app/assets/javascripts/vue_shared/components/project_selector/project_list_item.vue
+++ b/app/assets/javascripts/vue_shared/components/project_selector/project_list_item.vue
@@ -1,10 +1,10 @@
<script>
import { GlButton } from '@gitlab/ui';
+import _ from 'underscore';
import Icon from '~/vue_shared/components/icon.vue';
import ProjectAvatar from '~/vue_shared/components/project_avatar/default.vue';
import highlight from '~/lib/utils/highlight';
import { truncateNamespace } from '~/lib/utils/text_utility';
-import _ from 'underscore';
export default {
name: 'ProjectListItem',
diff --git a/app/assets/javascripts/vue_shared/components/resizable_chart/resizable_chart_container.vue b/app/assets/javascripts/vue_shared/components/resizable_chart/resizable_chart_container.vue
index 1f3d248e991..02cb7785ef4 100644
--- a/app/assets/javascripts/vue_shared/components/resizable_chart/resizable_chart_container.vue
+++ b/app/assets/javascripts/vue_shared/components/resizable_chart/resizable_chart_container.vue
@@ -1,6 +1,6 @@
<script>
-import { debounceByAnimationFrame } from '~/lib/utils/common_utils';
import $ from 'jquery';
+import { debounceByAnimationFrame } from '~/lib/utils/common_utils';
export default {
data() {
diff --git a/app/assets/javascripts/vue_shared/components/sidebar/collapsed_grouped_date_picker.vue b/app/assets/javascripts/vue_shared/components/sidebar/collapsed_grouped_date_picker.vue
index c1f3d86335a..80c61627b8f 100644
--- a/app/assets/javascripts/vue_shared/components/sidebar/collapsed_grouped_date_picker.vue
+++ b/app/assets/javascripts/vue_shared/components/sidebar/collapsed_grouped_date_picker.vue
@@ -64,7 +64,7 @@ export default {
tooltipText(dateType = 'min') {
const defaultText = dateType === 'min' ? __('Start date') : __('Due date');
const date = this[`${dateType}Date`];
- const timeAgo = dateType === 'min' ? this.timeFormated(date) : timeFor(date);
+ const timeAgo = dateType === 'min' ? this.timeFormatted(date) : timeFor(date);
const dateText = date ? [this.dateText(dateType), `(${timeAgo})`].join(' ') : '';
if (date) {
diff --git a/app/assets/javascripts/vue_shared/components/sidebar/labels_select/base.vue b/app/assets/javascripts/vue_shared/components/sidebar/labels_select/base.vue
index 13795eff714..0e401a9f7aa 100644
--- a/app/assets/javascripts/vue_shared/components/sidebar/labels_select/base.vue
+++ b/app/assets/javascripts/vue_shared/components/sidebar/labels_select/base.vue
@@ -1,10 +1,10 @@
<script>
import $ from 'jquery';
+import { GlLoadingIcon } from '@gitlab/ui';
import { __ } from '~/locale';
import LabelsSelect from '~/labels_select';
import DropdownHiddenInput from '~/vue_shared/components/dropdown/dropdown_hidden_input.vue';
-import { GlLoadingIcon } from '@gitlab/ui';
import DropdownTitle from './dropdown_title.vue';
import DropdownValue from './dropdown_value.vue';
import DropdownValueCollapsed from './dropdown_value_collapsed.vue';
diff --git a/app/assets/javascripts/vue_shared/components/split_button.vue b/app/assets/javascripts/vue_shared/components/split_button.vue
index f7dc00a345c..9aacde49264 100644
--- a/app/assets/javascripts/vue_shared/components/split_button.vue
+++ b/app/assets/javascripts/vue_shared/components/split_button.vue
@@ -26,6 +26,11 @@ export default {
required: false,
default: '',
},
+ variant: {
+ type: String,
+ required: false,
+ default: 'secondary',
+ },
},
data() {
@@ -53,6 +58,7 @@ export default {
:menu-class="`dropdown-menu-selectable ${menuClass}`"
split
:text="dropdownToggleText"
+ :variant="variant"
v-bind="$attrs"
@click="triggerEvent"
>
diff --git a/app/assets/javascripts/vue_shared/components/stacked_progress_bar.vue b/app/assets/javascripts/vue_shared/components/stacked_progress_bar.vue
index af4eb2de7f8..ea564d1b2f2 100644
--- a/app/assets/javascripts/vue_shared/components/stacked_progress_bar.vue
+++ b/app/assets/javascripts/vue_shared/components/stacked_progress_bar.vue
@@ -71,6 +71,10 @@ export default {
},
methods: {
getPercent(count) {
+ if (!this.totalCount) {
+ return 0;
+ }
+
const percent = roundOffFloat((count / this.totalCount) * 100, 1);
if (percent > 0 && percent < 1) {
return '< 1';
diff --git a/app/assets/javascripts/vue_shared/components/time_ago_tooltip.vue b/app/assets/javascripts/vue_shared/components/time_ago_tooltip.vue
index 43935cf31d5..b1a4f3dccaf 100644
--- a/app/assets/javascripts/vue_shared/components/time_ago_tooltip.vue
+++ b/app/assets/javascripts/vue_shared/components/time_ago_tooltip.vue
@@ -35,7 +35,7 @@ export default {
v-gl-tooltip.viewport="{ placement: tooltipPlacement }"
:class="cssClass"
:title="tooltipTitle(time)"
- v-text="timeFormated(time)"
+ v-text="timeFormatted(time)"
>
</time>
</template>
diff --git a/app/assets/javascripts/vue_shared/mixins/related_issuable_mixin.js b/app/assets/javascripts/vue_shared/mixins/related_issuable_mixin.js
index 3c727cb7b3f..fbebd7c7945 100644
--- a/app/assets/javascripts/vue_shared/mixins/related_issuable_mixin.js
+++ b/app/assets/javascripts/vue_shared/mixins/related_issuable_mixin.js
@@ -159,7 +159,7 @@ const mixins = {
return this.displayReference.split(this.pathIdSeparator).pop();
},
createdAtInWords() {
- return this.createdAt ? this.timeFormated(this.createdAt) : '';
+ return this.createdAt ? this.timeFormatted(this.createdAt) : '';
},
createdAtTimestamp() {
return this.createdAt ? formatDate(new Date(this.createdAt)) : '';
@@ -168,10 +168,10 @@ const mixins = {
return this.mergedAt ? formatDate(new Date(this.mergedAt)) : '';
},
mergedAtInWords() {
- return this.mergedAt ? this.timeFormated(this.mergedAt) : '';
+ return this.mergedAt ? this.timeFormatted(this.mergedAt) : '';
},
closedAtInWords() {
- return this.closedAt ? this.timeFormated(this.closedAt) : '';
+ return this.closedAt ? this.timeFormatted(this.closedAt) : '';
},
closedAtTimestamp() {
return this.closedAt ? formatDate(new Date(this.closedAt)) : '';
diff --git a/app/assets/javascripts/vue_shared/mixins/timeago.js b/app/assets/javascripts/vue_shared/mixins/timeago.js
index 4e3b9d7b767..af14c6d9486 100644
--- a/app/assets/javascripts/vue_shared/mixins/timeago.js
+++ b/app/assets/javascripts/vue_shared/mixins/timeago.js
@@ -5,7 +5,7 @@ import { formatDate, getTimeago } from '../../lib/utils/datetime_utility';
*/
export default {
methods: {
- timeFormated(time) {
+ timeFormatted(time) {
const timeago = getTimeago();
return timeago.format(time);
diff --git a/app/assets/stylesheets/components/release_block_milestone_info.scss b/app/assets/stylesheets/components/release_block_milestone_info.scss
new file mode 100644
index 00000000000..b6a85ae965a
--- /dev/null
+++ b/app/assets/stylesheets/components/release_block_milestone_info.scss
@@ -0,0 +1,6 @@
+.release-block-milestone-info {
+ .milestone-progress-bar-container {
+ width: 300px;
+ min-height: 46px;
+ }
+}
diff --git a/app/assets/stylesheets/components/toast.scss b/app/assets/stylesheets/components/toast.scss
deleted file mode 100644
index e27bf282247..00000000000
--- a/app/assets/stylesheets/components/toast.scss
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-* These styles are specific to the gl-toast component.
-* Documentation: https://design.gitlab.com/components/toasts
-* Note: Styles below are nested in order to override some of vue-toasted's default styling
-*/
-.toasted-container {
-
- max-width: $toast-max-width;
-
- @include media-breakpoint-down(xs) {
- width: 100%;
- padding-right: $toast-padding-right;
- }
-
- .toasted.gl-toast {
- border-radius: $border-radius-default;
- font-size: $gl-font-size;
- padding: $gl-padding-8 $gl-padding $gl-padding-8 $gl-padding-24;
- margin-top: $toast-default-margin;
- line-height: $gl-line-height;
- background-color: rgba($gray-900, $toast-background-opacity);
-
- span {
- padding-right: $gl-padding-8;
- }
-
- @include media-breakpoint-down(xs) {
- .action:first-of-type {
- // Ensures actions buttons are right aligned on mobile
- margin-left: auto;
- }
- }
-
- .action {
- color: $blue-300;
- margin: 0 0 0 $toast-default-margin;
- text-transform: none;
- font-size: $gl-font-size;
- }
-
- .toast-close {
- font-size: $default-icon-size;
- margin-left: $toast-default-margin;
- }
- }
-}
-
-// Overrides the default positioning of toasts
-body .toasted-container.bottom-left {
- bottom: $toast-offset;
- left: $toast-offset;
-}
diff --git a/app/assets/stylesheets/framework/common.scss b/app/assets/stylesheets/framework/common.scss
index 31ea59df4c5..4b7dda3a2ff 100644
--- a/app/assets/stylesheets/framework/common.scss
+++ b/app/assets/stylesheets/framework/common.scss
@@ -433,6 +433,7 @@ img.emoji {
.block { display: block; }
.flex { display: flex; }
.vertical-align-top { vertical-align: top; }
+.vertical-align-text-top { vertical-align: text-top; }
.vertical-align-middle { vertical-align: middle; }
.vertical-align-sub { vertical-align: sub; }
.flex-align-self-center { align-self: center; }
@@ -442,6 +443,7 @@ img.emoji {
.ws-normal { white-space: normal; }
.ws-pre-wrap { white-space: pre-wrap; }
.overflow-auto { overflow: auto; }
+.overflow-visible { overflow: visible; }
.d-flex-center {
display: flex;
@@ -514,6 +516,12 @@ img.emoji {
cursor: pointer;
}
+// this needs to use "!important" due to some very specific styles
+// around buttons
+.cursor-default {
+ cursor: default !important;
+}
+
// Make buttons/dropdowns full-width on mobile
.full-width-mobile {
@include media-breakpoint-down(xs) {
diff --git a/app/assets/stylesheets/framework/dropdowns.scss b/app/assets/stylesheets/framework/dropdowns.scss
index d53a4c1286c..21253e004ef 100644
--- a/app/assets/stylesheets/framework/dropdowns.scss
+++ b/app/assets/stylesheets/framework/dropdowns.scss
@@ -288,7 +288,7 @@
list-style: none;
padding: 0 1px;
- a,
+ > a,
button,
.menu-item {
@include dropdown-link;
diff --git a/app/assets/stylesheets/framework/files.scss b/app/assets/stylesheets/framework/files.scss
index 4938215b2e7..8e0314bc6da 100644
--- a/app/assets/stylesheets/framework/files.scss
+++ b/app/assets/stylesheets/framework/files.scss
@@ -334,10 +334,6 @@ span.idiff {
padding: $gl-padding-8 $gl-padding;
margin: 0;
border-radius: $border-radius-default $border-radius-default 0 0;
-
- &.is-stuck {
- border-radius: 0;
- }
}
.file-header-content {
@@ -490,3 +486,8 @@ span.idiff {
overflow-y: auto;
max-height: 20rem;
}
+
+#js-openapi-viewer pre.version {
+ background-color: transparent;
+ border: transparent;
+}
diff --git a/app/assets/stylesheets/framework/filters.scss b/app/assets/stylesheets/framework/filters.scss
index 2d826064569..1c252584047 100644
--- a/app/assets/stylesheets/framework/filters.scss
+++ b/app/assets/stylesheets/framework/filters.scss
@@ -214,8 +214,8 @@
padding-left: 0;
height: $input-height - 2;
line-height: inherit;
- border-color: transparent;
+ &,
&:focus,
&:hover {
outline: none;
diff --git a/app/assets/stylesheets/framework/header.scss b/app/assets/stylesheets/framework/header.scss
index 1195e467192..5ae4f72de56 100644
--- a/app/assets/stylesheets/framework/header.scss
+++ b/app/assets/stylesheets/framework/header.scss
@@ -552,6 +552,11 @@
svg {
vertical-align: text-top;
}
+
+ a.trial-link gl-emoji {
+ font-size: $gl-font-size;
+ vertical-align: baseline;
+ }
}
}
diff --git a/app/assets/stylesheets/framework/lists.scss b/app/assets/stylesheets/framework/lists.scss
index ecd32dcd0ce..4aba633e182 100644
--- a/app/assets/stylesheets/framework/lists.scss
+++ b/app/assets/stylesheets/framework/lists.scss
@@ -196,6 +196,11 @@ ul.content-list {
display: flex;
align-items: center;
white-space: nowrap;
+
+ // Override style that allows the flex-row text to wrap.
+ &.allow-wrap {
+ white-space: normal;
+ }
}
.row-main-content {
diff --git a/app/assets/stylesheets/framework/memory_graph.scss b/app/assets/stylesheets/framework/memory_graph.scss
index c84010c6f10..06e1ebe41be 100644
--- a/app/assets/stylesheets/framework/memory_graph.scss
+++ b/app/assets/stylesheets/framework/memory_graph.scss
@@ -1,18 +1,4 @@
.memory-graph-container {
- svg {
- background: $white-light;
- border: 1px solid $gray-200;
- }
-
- path {
- fill: none;
- stroke: $blue-500;
- stroke-width: 2px;
- }
-
- circle {
- stroke: $blue-700;
- fill: $blue-700;
- stroke-width: 4px;
- }
+ background: $white-light;
+ border: 1px solid $gray-200;
}
diff --git a/app/assets/stylesheets/framework/selects.scss b/app/assets/stylesheets/framework/selects.scss
index 2289f0a7011..bd0134a82d3 100644
--- a/app/assets/stylesheets/framework/selects.scss
+++ b/app/assets/stylesheets/framework/selects.scss
@@ -118,7 +118,7 @@
background: none;
.select2-search-field input {
- padding: 5px $gl-padding / 2;
+ padding: 5px $gl-input-padding;
height: auto;
font-family: inherit;
font-size: inherit;
diff --git a/app/assets/stylesheets/framework/sidebar.scss b/app/assets/stylesheets/framework/sidebar.scss
index b9cfcf6ce5c..bf1fd7fd29f 100644
--- a/app/assets/stylesheets/framework/sidebar.scss
+++ b/app/assets/stylesheets/framework/sidebar.scss
@@ -61,10 +61,6 @@
padding-right: 0;
z-index: 300;
- .btn-sidebar-action {
- display: inline-flex;
- }
-
@include media-breakpoint-only(sm) {
&:not(.wiki-sidebar):not(.build-sidebar):not(.issuable-bulk-update-sidebar) .content-wrapper {
padding-right: $gutter-collapsed-width;
diff --git a/app/assets/stylesheets/framework/typography.scss b/app/assets/stylesheets/framework/typography.scss
index 3876d1c10d4..39e7e4bb7e5 100644
--- a/app/assets/stylesheets/framework/typography.scss
+++ b/app/assets/stylesheets/framework/typography.scss
@@ -645,6 +645,12 @@ h4 {
}
}
+.text-right-md {
+ @include media-breakpoint-up(md) {
+ text-align: right;
+ }
+}
+
.text-right-lg {
@include media-breakpoint-up(lg) {
text-align: right;
diff --git a/app/assets/stylesheets/framework/variables.scss b/app/assets/stylesheets/framework/variables.scss
index 0f77c451fac..90600ecf615 100644
--- a/app/assets/stylesheets/framework/variables.scss
+++ b/app/assets/stylesheets/framework/variables.scss
@@ -62,6 +62,9 @@ $gray-dark: darken($gray-light, $darken-dark-factor);
$gray-darker: #eee;
$gray-darkest: #c4c4c4;
+$purple: #6d49cb;
+$purple-light: #ede8fb;
+
$black: #000;
$black-transparent: rgba(0, 0, 0, 0.3);
$almost-black: #242424;
@@ -529,16 +532,6 @@ $pagination-line-height: 20px;
$pagination-disabled-color: #cdcdcd;
/*
-* Toasts
-*/
-$toast-offset: 24px;
-$toast-height: 48px;
-$toast-max-width: 586px;
-$toast-padding-right: 42px;
-$toast-default-margin: 8px;
-$toast-background-opacity: 0.95;
-
-/*
* Status icons
*/
$status-icon-size: 22px;
diff --git a/app/assets/stylesheets/framework/wells.scss b/app/assets/stylesheets/framework/wells.scss
index 434cbd6d21c..3eff1807403 100644
--- a/app/assets/stylesheets/framework/wells.scss
+++ b/app/assets/stylesheets/framework/wells.scss
@@ -3,7 +3,7 @@
color: $gl-text-color;
border: 1px solid $border-color;
border-radius: $border-radius-default;
- margin-bottom: $gl-padding;
+ margin-bottom: $gl-padding-8;
.card.card-body-segment {
padding: $gl-padding;
diff --git a/app/assets/stylesheets/page_bundles/ide.scss b/app/assets/stylesheets/page_bundles/ide.scss
index ba126d59eef..977fc8329b6 100644
--- a/app/assets/stylesheets/page_bundles/ide.scss
+++ b/app/assets/stylesheets/page_bundles/ide.scss
@@ -883,6 +883,15 @@ $ide-commit-header-height: 48px;
margin-right: $ide-tree-padding;
border-bottom: 1px solid $white-dark;
+ svg {
+ color: $gray-700;
+
+ &:focus,
+ &:hover {
+ color: $blue-600;
+ }
+ }
+
.ide-new-btn {
margin-left: auto;
}
@@ -899,6 +908,11 @@ $ide-commit-header-height: 48px;
.dropdown-menu-toggle {
svg {
vertical-align: middle;
+ color: $gray-700;
+
+ &:hover {
+ color: $gray-700;
+ }
}
&:hover {
diff --git a/app/assets/stylesheets/pages/boards.scss b/app/assets/stylesheets/pages/boards.scss
index d26979bc174..90c2e369ccd 100644
--- a/app/assets/stylesheets/pages/boards.scss
+++ b/app/assets/stylesheets/pages/boards.scss
@@ -187,6 +187,10 @@
font-size: 1em;
border-bottom: 1px solid $border-color;
padding: $gl-padding-8 $gl-padding;
+
+ .js-max-issue-size::before {
+ content: '/';
+ }
}
.board-title-text {
diff --git a/app/assets/stylesheets/pages/convdev_index.scss b/app/assets/stylesheets/pages/dev_ops_score.scss
index 52fcdf4a405..6b6dce43dba 100644
--- a/app/assets/stylesheets/pages/convdev_index.scss
+++ b/app/assets/stylesheets/pages/dev_ops_score.scss
@@ -1,24 +1,24 @@
$space-between-cards: 8px;
-.convdev-empty svg {
+.devops-empty svg {
margin: 64px auto 32px;
max-width: 420px;
}
-.convdev-header {
+.devops-header {
margin-top: $gl-padding;
margin-bottom: $gl-padding;
padding: 0 4px;
display: flex;
align-items: center;
- .convdev-header-title {
+ .devops-header-title {
font-size: 48px;
line-height: 1;
margin: 0;
}
- .convdev-header-subtitle {
+ .devops-header-subtitle {
font-size: 22px;
line-height: 1;
color: $gl-text-color-secondary;
@@ -36,13 +36,13 @@ $space-between-cards: 8px;
}
}
-.convdev-cards {
+.devops-cards {
display: flex;
justify-content: center;
flex-wrap: wrap;
}
-.convdev-card-wrapper {
+.devops-card-wrapper {
display: flex;
flex-direction: column;
align-items: stretch;
@@ -70,7 +70,7 @@ $space-between-cards: 8px;
}
}
-.convdev-card {
+.devops-card {
border: solid 1px $border-color;
border-radius: 3px;
border-top-width: 3px;
@@ -79,7 +79,7 @@ $space-between-cards: 8px;
flex-grow: 1;
}
-.convdev-card-low {
+.devops-card-low {
border-top-color: $red-400;
.board-card-score-big {
@@ -87,7 +87,7 @@ $space-between-cards: 8px;
}
}
-.convdev-card-average {
+.devops-card-average {
border-top-color: $orange-400;
.board-card-score-big {
@@ -95,7 +95,7 @@ $space-between-cards: 8px;
}
}
-.convdev-card-high {
+.devops-card-high {
border-top-color: $green-400;
.board-card-score-big {
@@ -103,7 +103,7 @@ $space-between-cards: 8px;
}
}
-.convdev-card-title {
+.devops-card-title {
margin: $gl-padding auto auto;
max-width: 100px;
@@ -170,7 +170,7 @@ $space-between-cards: 8px;
}
}
-.convdev-steps {
+.devops-steps {
margin-top: $gl-padding;
height: 1px;
min-width: 100%;
@@ -179,7 +179,7 @@ $space-between-cards: 8px;
background: $border-color;
}
-.convdev-step {
+.devops-step {
$step-positions: 5% 10% 30% 42% 48% 55% 60% 70% 75% 90%;
@each $pos in $step-positions {
$i: index($step-positions, $pos);
@@ -212,7 +212,7 @@ $space-between-cards: 8px;
height: auto;
width: auto;
- .convdev-step-title {
+ .devops-step-title {
max-height: 2em;
opacity: 1;
transition: opacity 0.2s;
@@ -233,7 +233,7 @@ $space-between-cards: 8px;
}
}
-.convdev-step-title {
+.devops-step-title {
max-height: 0;
opacity: 0;
text-transform: uppercase;
@@ -242,14 +242,14 @@ $space-between-cards: 8px;
font-size: 12px;
}
-.convdev-high-score {
+.devops-high-score {
color: $green-400;
}
-.convdev-average-score {
+.devops-average-score {
color: $orange-400;
}
-.convdev-low-score {
+.devops-low-score {
color: $red-400;
}
diff --git a/app/assets/stylesheets/pages/diff.scss b/app/assets/stylesheets/pages/diff.scss
index defa1a6c0d5..f394e4ab58a 100644
--- a/app/assets/stylesheets/pages/diff.scss
+++ b/app/assets/stylesheets/pages/diff.scss
@@ -10,6 +10,7 @@
.file-title-flex-parent {
border-top-left-radius: $border-radius-default;
border-top-right-radius: $border-radius-default;
+ box-shadow: 0 -2px 0 0 var(--white);
cursor: pointer;
@media (min-width: map-get($grid-breakpoints, md)) {
@@ -472,6 +473,7 @@ table.code {
text-align: right;
width: 50px;
position: relative;
+ white-space: nowrap;
a {
transition: none;
diff --git a/app/assets/stylesheets/pages/editor.scss b/app/assets/stylesheets/pages/editor.scss
index 65d0ce8c52e..b716c6e14fe 100644
--- a/app/assets/stylesheets/pages/editor.scss
+++ b/app/assets/stylesheets/pages/editor.scss
@@ -172,7 +172,7 @@
}
.template-selector-dropdowns-wrap {
- display: inline-block;
+ display: flex;
vertical-align: top;
@media(max-width: map-get($grid-breakpoints, lg)-1) {
@@ -189,6 +189,7 @@
display: inline-block;
vertical-align: top;
font-family: $regular_font;
+ margin: 0 8px 0 0;
@media(max-width: map-get($grid-breakpoints, lg)-1) {
display: block;
diff --git a/app/assets/stylesheets/pages/environments.scss b/app/assets/stylesheets/pages/environments.scss
index 93dffb5ff09..3892d9dbd07 100644
--- a/app/assets/stylesheets/pages/environments.scss
+++ b/app/assets/stylesheets/pages/environments.scss
@@ -7,7 +7,6 @@
.environments-folder-name {
font-weight: $gl-font-weight-normal;
- padding-top: 20px;
}
.environments-container {
diff --git a/app/assets/stylesheets/pages/error_details.scss b/app/assets/stylesheets/pages/error_details.scss
index 0515db914e9..dcd25c126c4 100644
--- a/app/assets/stylesheets/pages/error_details.scss
+++ b/app/assets/stylesheets/pages/error_details.scss
@@ -12,6 +12,12 @@
}
}
+ .file-title-name {
+ &.limited-width {
+ max-width: 80%;
+ }
+ }
+
.line_content.old::before {
content: none !important;
}
diff --git a/app/assets/stylesheets/pages/error_tracking_list.scss b/app/assets/stylesheets/pages/error_tracking_list.scss
new file mode 100644
index 00000000000..cd1adb9a754
--- /dev/null
+++ b/app/assets/stylesheets/pages/error_tracking_list.scss
@@ -0,0 +1,5 @@
+.error-list {
+ .sort-dropdown {
+ min-width: auto;
+ }
+}
diff --git a/app/assets/stylesheets/pages/groups.scss b/app/assets/stylesheets/pages/groups.scss
index 1502cf18440..1cf72c51ca7 100644
--- a/app/assets/stylesheets/pages/groups.scss
+++ b/app/assets/stylesheets/pages/groups.scss
@@ -25,6 +25,7 @@
.description p {
margin-bottom: 0;
+ color: $gl-text-color-secondary;
}
}
diff --git a/app/assets/stylesheets/pages/issuable.scss b/app/assets/stylesheets/pages/issuable.scss
index 5617ab0af41..09b335f9ba2 100644
--- a/app/assets/stylesheets/pages/issuable.scss
+++ b/app/assets/stylesheets/pages/issuable.scss
@@ -883,7 +883,7 @@
.time-tracking-help-state {
background: $white-light;
- margin: 16px -20px 0;
+ margin: 16px -20px -20px;
padding: 16px 20px;
border-top: 1px solid $border-gray-light;
border-bottom: 1px solid $border-gray-light;
diff --git a/app/assets/stylesheets/pages/issues.scss b/app/assets/stylesheets/pages/issues.scss
index a37cbda8558..b03ad5c6b75 100644
--- a/app/assets/stylesheets/pages/issues.scss
+++ b/app/assets/stylesheets/pages/issues.scss
@@ -21,16 +21,11 @@
margin-bottom: 2px;
}
- .issue-labels {
+ .issue-labels,
+ .author-link {
display: inline-block;
}
- .issuable-meta {
- .author-link {
- display: inline-block;
- }
- }
-
.icon-merge-request-unmerged {
height: 13px;
margin-bottom: 3px;
@@ -53,16 +48,6 @@
margin-right: 15px;
}
-.issues_content {
- .title {
- height: 40px;
- }
-
- form {
- margin: 0;
- }
-}
-
form.edit-issue {
margin: 0;
}
@@ -79,10 +64,6 @@ ul.related-merge-requests > li {
margin-left: 5px;
}
- .row_title {
- vertical-align: bottom;
- }
-
gl-emoji {
font-size: 1em;
}
@@ -93,10 +74,6 @@ ul.related-merge-requests > li {
font-weight: $gl-font-weight-bold;
}
-.merge-request-id {
- display: inline-block;
-}
-
.merge-request-status {
&.merged {
color: $blue-500;
@@ -118,11 +95,7 @@ ul.related-merge-requests > li {
border-color: $issues-today-border;
}
- &.closed {
- background: $gray-light;
- border-color: $border-color;
- }
-
+ &.closed,
&.merged {
background: $gray-light;
border-color: $border-color;
@@ -160,9 +133,12 @@ ul.related-merge-requests > li {
padding-bottom: 37px;
}
-.issues-nav-controls {
+.issues-nav-controls,
+.new-branch-col {
font-size: 0;
+}
+.issues-nav-controls {
.btn-group:empty {
display: none;
}
@@ -198,8 +174,6 @@ ul.related-merge-requests > li {
}
.new-branch-col {
- font-size: 0;
-
.discussion-filter-container {
&:not(:only-child) {
margin-right: $gl-padding-8;
@@ -240,7 +214,6 @@ ul.related-merge-requests > li {
}
.create-merge-request-dropdown-menu {
- width: 300px;
opacity: 1;
visibility: visible;
transform: translateY(0);
@@ -297,11 +270,11 @@ ul.related-merge-requests > li {
padding-top: 0;
align-self: center;
}
+ }
- .create-mr-dropdown-wrap {
- .btn-group:not(.hidden) {
- display: inline-flex;
- }
+ .create-mr-dropdown-wrap {
+ .btn-group:not(.hidden) {
+ display: inline-flex;
}
}
}
diff --git a/app/assets/stylesheets/pages/issues/issue_count_badge.scss b/app/assets/stylesheets/pages/issues/issue_count_badge.scss
index 64ca61f7094..569f323abd8 100644
--- a/app/assets/stylesheets/pages/issues/issue_count_badge.scss
+++ b/app/assets/stylesheets/pages/issues/issue_count_badge.scss
@@ -2,7 +2,6 @@
.mr-count-badge {
display: inline-flex;
border-radius: $border-radius-base;
- border: 1px solid $border-color;
padding: 5px $gl-padding-8;
}
diff --git a/app/assets/stylesheets/pages/merge_requests.scss b/app/assets/stylesheets/pages/merge_requests.scss
index 971f3b2c308..c023c9e5cbd 100644
--- a/app/assets/stylesheets/pages/merge_requests.scss
+++ b/app/assets/stylesheets/pages/merge_requests.scss
@@ -51,6 +51,10 @@
position: relative;
border: 1px solid $border-color;
border-radius: $border-radius-default;
+
+ .gl-skeleton-loader {
+ display: block;
+ }
}
.mr-widget-extension {
@@ -949,7 +953,6 @@
.deployment-info {
flex: 1;
white-space: nowrap;
- overflow: hidden;
text-overflow: ellipsis;
min-width: 100px;
diff --git a/app/assets/stylesheets/pages/profile.scss b/app/assets/stylesheets/pages/profile.scss
index 87cef43b923..08796742f08 100644
--- a/app/assets/stylesheets/pages/profile.scss
+++ b/app/assets/stylesheets/pages/profile.scss
@@ -17,12 +17,6 @@
display: inline-block;
}
-.account-btn-link,
-.profile-settings-sidebar a,
-.settings-sidebar a {
- color: $blue-600;
-}
-
.private-tokens-reset div.reset-action:not(:first-child) {
padding-top: 15px;
}
@@ -122,24 +116,12 @@
float: left;
}
}
-
- .description {
- white-space: nowrap;
- text-overflow: ellipsis;
- overflow: hidden;
- }
}
.key-created-at {
line-height: 42px;
}
-.profile-settings-content {
- a {
- color: $blue-600;
- }
-}
-
.provider-btn-group {
display: inline-block;
margin-right: 10px;
@@ -169,10 +151,6 @@
margin-left: -3px;
line-height: 22px;
background-color: $gray-light;
-
- &.not-active {
- color: $blue-500;
- }
}
.oauth-applications {
@@ -292,10 +270,6 @@ table.u2f-registrations {
}
.oauth-application-show {
- .scope-name {
- font-weight: $gl-font-weight-bold;
- }
-
.scopes-list {
padding-left: 18px;
}
@@ -317,52 +291,52 @@ table.u2f-registrations {
.landing {
padding: 32px;
+ }
- .close {
- position: absolute;
- top: 20px;
- right: 20px;
- opacity: 1;
+ .close {
+ position: absolute;
+ top: 20px;
+ right: 20px;
+ opacity: 1;
- .dismiss-icon {
- float: right;
- cursor: pointer;
- color: $blue-300;
- }
+ .dismiss-icon {
+ float: right;
+ cursor: pointer;
+ color: $blue-300;
+ }
- &:hover {
- background-color: transparent;
- border: 0;
+ &:hover {
+ background-color: transparent;
+ border: 0;
- .dismiss-icon {
- color: $blue-400;
- }
+ .dismiss-icon {
+ color: $blue-400;
}
}
+ }
- .svg-container {
- margin-right: 30px;
- display: inline-block;
+ .svg-container {
+ margin-right: 30px;
+ display: inline-block;
- svg {
- height: 110px;
- vertical-align: top;
- }
+ svg {
+ height: 110px;
+ vertical-align: top;
+ }
- &.convdev {
- margin: 0 0 0 30px;
+ &.convdev {
+ margin: 0 0 0 30px;
- svg {
- height: 127px;
- }
+ svg {
+ height: 127px;
}
}
+ }
- .user-callout-copy {
- display: inline-block;
- vertical-align: top;
- max-width: 570px;
- }
+ .user-callout-copy {
+ display: inline-block;
+ vertical-align: top;
+ max-width: 570px;
}
@include media-breakpoint-down(xs) {
@@ -372,43 +346,26 @@ table.u2f-registrations {
display: block;
}
- .landing {
- .svg-container,
- .user-callout-copy {
- margin: 0 auto;
- display: block;
+ .svg-container,
+ .user-callout-copy {
+ margin: 0 auto;
+ display: block;
- svg {
- height: 75px;
- }
+ svg {
+ height: 75px;
+ }
- &.convdev {
- margin: $gl-padding auto 0;
+ &.convdev {
+ margin: $gl-padding auto 0;
- svg {
- height: 120px;
- }
+ svg {
+ height: 120px;
}
}
}
}
}
-.nav-wip {
- border: 1px solid $blue-500;
- background: $blue-50;
- padding: $gl-padding;
- margin-bottom: $gl-padding;
-
- a {
- color: $blue-500;
- }
-
- p:last-child {
- margin-bottom: 0;
- }
-}
-
.email-badge {
display: inline;
margin-right: $gl-padding / 2;
@@ -433,10 +390,8 @@ table.u2f-registrations {
}
.edit-user {
- .clear-user-status {
- svg {
- fill: $gl-text-color-secondary;
- }
+ svg {
+ fill: $gl-text-color-secondary;
}
.form-group > label {
@@ -453,10 +408,6 @@ table.u2f-registrations {
.no-emoji-placeholder {
position: relative;
-
- svg {
- fill: $gl-text-color-secondary;
- }
}
}
diff --git a/app/assets/stylesheets/pages/projects.scss b/app/assets/stylesheets/pages/projects.scss
index 17a446fca53..8b2c67378d9 100644
--- a/app/assets/stylesheets/pages/projects.scss
+++ b/app/assets/stylesheets/pages/projects.scss
@@ -792,7 +792,7 @@
}
.btn {
- margin-top: $gl-padding;
+ margin-top: $gl-padding-8;
padding: $gl-btn-vert-padding $gl-btn-padding;
line-height: $gl-btn-line-height;
@@ -812,6 +812,10 @@
@extend .btn;
@extend .btn-default;
}
+
+ .nav > li:not(:last-child) {
+ margin-right: $gl-padding-8;
+ }
}
.repository-languages-bar {
diff --git a/app/assets/stylesheets/pages/prometheus.scss b/app/assets/stylesheets/pages/prometheus.scss
index 154e505f7a4..e20e58e21cf 100644
--- a/app/assets/stylesheets/pages/prometheus.scss
+++ b/app/assets/stylesheets/pages/prometheus.scss
@@ -67,7 +67,6 @@
.prometheus-graph-group {
display: flex;
flex-wrap: wrap;
- margin-top: $gl-padding-8;
}
.prometheus-graph {
diff --git a/app/assets/stylesheets/pages/tree.scss b/app/assets/stylesheets/pages/tree.scss
index 5664f46484e..79ad0bd7735 100644
--- a/app/assets/stylesheets/pages/tree.scss
+++ b/app/assets/stylesheets/pages/tree.scss
@@ -1,6 +1,6 @@
.tree-holder {
.nav-block {
- margin: 10px 0;
+ margin: 16px 0;
.btn .fa,
.btn svg {
@@ -17,6 +17,10 @@
.tree-controls {
text-align: right;
+ .btn {
+ margin-left: 8px;
+ }
+
.btn-group {
margin-left: 10px;
}
diff --git a/app/assets/stylesheets/utilities.scss b/app/assets/stylesheets/utilities.scss
index 3b3a2778b23..1f4bba5fc33 100644
--- a/app/assets/stylesheets/utilities.scss
+++ b/app/assets/stylesheets/utilities.scss
@@ -29,5 +29,25 @@
.border-color-default { border-color: $border-color; }
.box-shadow-default { box-shadow: 0 2px 4px 0 $black-transparent; }
+.mh-50vh { max-height: 50vh; }
+
.gl-w-64 { width: px-to-rem($grid-size * 8); }
.gl-h-64 { height: px-to-rem($grid-size * 8); }
+
+.gl-text-purple { color: $purple; }
+.gl-text-gray-800 { color: $gray-800; }
+.gl-bg-purple-light { background-color: $purple-light; }
+
+// Classes using mixins coming from @gitlab-ui
+// can be removed once https://gitlab.com/gitlab-org/gitlab/merge_requests/19021 has been merged
+.gl-bg-red-100 { @include gl-bg-red-100; }
+.gl-bg-orange-100 { @include gl-bg-orange-100; }
+.gl-bg-gray-100 { @include gl-bg-gray-100; }
+.gl-bg-green-100 { @include gl-bg-green-100;}
+
+.gl-text-blue-500 { @include gl-text-blue-500; }
+.gl-text-gray-900 { @include gl-text-gray-900; }
+.gl-text-red-700 { @include gl-text-red-700; }
+.gl-text-orange-700 { @include gl-text-orange-700; }
+.gl-text-green-700 { @include gl-text-green-700; }
+
diff --git a/app/controllers/admin/broadcast_messages_controller.rb b/app/controllers/admin/broadcast_messages_controller.rb
index 6e5dd1a1f55..06ba916fc55 100644
--- a/app/controllers/admin/broadcast_messages_controller.rb
+++ b/app/controllers/admin/broadcast_messages_controller.rb
@@ -60,6 +60,8 @@ class Admin::BroadcastMessagesController < Admin::ApplicationController
font
message
starts_at
+ target_path
+ broadcast_type
))
end
end
diff --git a/app/controllers/admin/identities_controller.rb b/app/controllers/admin/identities_controller.rb
index 8f2e34a6294..327538f1e93 100644
--- a/app/controllers/admin/identities_controller.rb
+++ b/app/controllers/admin/identities_controller.rb
@@ -28,7 +28,8 @@ class Admin::IdentitiesController < Admin::ApplicationController
def update
if @identity.update(identity_params)
- RepairLdapBlockedUserService.new(@user).execute
+ ::Users::RepairLdapBlockedService.new(@user).execute
+
redirect_to admin_user_identities_path(@user), notice: _('User identity was successfully updated.')
else
render :edit
@@ -37,7 +38,8 @@ class Admin::IdentitiesController < Admin::ApplicationController
def destroy
if @identity.destroy
- RepairLdapBlockedUserService.new(@user).execute
+ ::Users::RepairLdapBlockedService.new(@user).execute
+
redirect_to admin_user_identities_path(@user), status: :found, notice: _('User identity was successfully removed.')
else
redirect_to admin_user_identities_path(@user), status: :found, alert: _('Failed to remove user identity.')
diff --git a/app/controllers/admin/jobs_controller.rb b/app/controllers/admin/jobs_controller.rb
index 0c1afdc3d3b..892f6dc657c 100644
--- a/app/controllers/admin/jobs_controller.rb
+++ b/app/controllers/admin/jobs_controller.rb
@@ -1,25 +1,15 @@
# frozen_string_literal: true
class Admin::JobsController < Admin::ApplicationController
- # rubocop: disable CodeReuse/ActiveRecord
def index
+ # We need all builds for tabs counters
+ @all_builds = JobsFinder.new(current_user: current_user).execute
+
@scope = params[:scope]
- @all_builds = Ci::Build
- @builds = @all_builds.order('id DESC')
- @builds =
- case @scope
- when 'pending'
- @builds.pending.reverse_order
- when 'running'
- @builds.running.reverse_order
- when 'finished'
- @builds.finished
- else
- @builds
- end
+ @builds = JobsFinder.new(current_user: current_user, params: params).execute
+ @builds = @builds.eager_load_everything
@builds = @builds.page(params[:page]).per(30)
end
- # rubocop: enable CodeReuse/ActiveRecord
def cancel_all
Ci::Build.running_or_pending.each(&:cancel)
diff --git a/app/controllers/admin/sessions_controller.rb b/app/controllers/admin/sessions_controller.rb
index 1f946e41995..f9587655a8d 100644
--- a/app/controllers/admin/sessions_controller.rb
+++ b/app/controllers/admin/sessions_controller.rb
@@ -6,17 +6,23 @@ class Admin::SessionsController < ApplicationController
before_action :user_is_admin!
def new
- # Renders a form in which the admin can enter their password
+ if current_user_mode.admin_mode?
+ redirect_to redirect_path, notice: _('Admin mode already enabled')
+ else
+ current_user_mode.request_admin_mode! unless current_user_mode.admin_mode_requested?
+ store_location_for(:redirect, redirect_path)
+ end
end
def create
if current_user_mode.enable_admin_mode!(password: params[:password])
- redirect_location = stored_location_for(:redirect) || admin_root_path
- redirect_to safe_redirect_path(redirect_location)
+ redirect_to redirect_path, notice: _('Admin mode enabled')
else
- flash.now[:alert] = _('Invalid Login or password')
+ flash.now[:alert] = _('Invalid login or password')
render :new
end
+ rescue Gitlab::Auth::CurrentUserMode::NotRequestedError
+ redirect_to new_admin_session_path, alert: _('Re-authentication period expired or never requested. Please try again')
end
def destroy
@@ -30,4 +36,19 @@ class Admin::SessionsController < ApplicationController
def user_is_admin!
render_404 unless current_user&.admin?
end
+
+ def redirect_path
+ redirect_to_path = safe_redirect_path(stored_location_for(:redirect)) || safe_redirect_path_for_url(request.referer)
+
+ if redirect_to_path &&
+ excluded_redirect_paths.none? { |excluded| redirect_to_path.include?(excluded) }
+ redirect_to_path
+ else
+ admin_root_path
+ end
+ end
+
+ def excluded_redirect_paths
+ [new_admin_session_path, admin_session_path]
+ end
end
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 25c1d80b117..f5306801c04 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -16,15 +16,16 @@ class ApplicationController < ActionController::Base
include ConfirmEmailWarning
include Gitlab::Tracking::ControllerConcern
include Gitlab::Experimentation::ControllerConcern
+ include InitializesCurrentUserMode
before_action :authenticate_user!, except: [:route_not_found]
before_action :enforce_terms!, if: :should_enforce_terms?
before_action :validate_user_service_ticket!
- before_action :check_password_expiration
+ before_action :check_password_expiration, if: :html_request?
before_action :ldap_security_check
- before_action :sentry_context
+ around_action :sentry_context
before_action :default_headers
- before_action :add_gon_variables, unless: [:peek_request?, :json_request?]
+ before_action :add_gon_variables, if: :html_request?
before_action :configure_permitted_parameters, if: :devise_controller?
before_action :require_email, unless: :devise_controller?
before_action :active_user_check, unless: :devise_controller?
@@ -41,7 +42,6 @@ class ApplicationController < ActionController::Base
protect_from_forgery with: :exception, prepend: true
helper_method :can?
- helper_method :current_user_mode
helper_method :import_sources_enabled?, :github_import_enabled?,
:gitea_import_enabled?, :github_import_configured?,
:gitlab_import_enabled?, :gitlab_import_configured?,
@@ -74,6 +74,18 @@ class ApplicationController < ActionController::Base
render_403
end
+ rescue_from Gitlab::Auth::IpBlacklisted do
+ Gitlab::AuthLogger.error(
+ message: 'Rack_Attack',
+ env: :blocklist,
+ remote_ip: request.ip,
+ request_method: request.request_method,
+ path: request.fullpath
+ )
+
+ head :forbidden
+ end
+
rescue_from Gitlab::Auth::TooManyIps do |e|
head :forbidden, retry_after: Gitlab::Auth::UniqueIpsLimiter.config.unique_ips_limit_time_window
end
@@ -153,7 +165,7 @@ class ApplicationController < ActionController::Base
end
def log_exception(exception)
- Gitlab::Sentry.track_acceptable_exception(exception)
+ Gitlab::ErrorTracking.track_exception(exception)
backtrace_cleaner = request.env["action_dispatch.backtrace_cleaner"]
application_trace = ActionDispatch::ExceptionWrapper.new(backtrace_cleaner, exception).application_trace
@@ -216,10 +228,6 @@ class ApplicationController < ActionController::Base
end
end
- def respond_201
- head :created
- end
-
def respond_422
head :unprocessable_entity
end
@@ -455,8 +463,8 @@ class ApplicationController < ActionController::Base
response.headers['Page-Title'] = URI.escape(page_title('GitLab'))
end
- def peek_request?
- request.path.start_with?('/-/peek')
+ def html_request?
+ request.format.html?
end
def json_request?
@@ -466,7 +474,7 @@ class ApplicationController < ActionController::Base
def should_enforce_terms?
return false unless Gitlab::CurrentSettings.current_application_settings.enforce_terms
- !(peek_request? || devise_controller?)
+ html_request? && !devise_controller?
end
def set_usage_stats_consent_flag
@@ -524,8 +532,8 @@ class ApplicationController < ActionController::Base
@impersonator ||= User.find(session[:impersonator_id]) if session[:impersonator_id]
end
- def sentry_context
- Gitlab::Sentry.context(current_user)
+ def sentry_context(&block)
+ Gitlab::ErrorTracking.with_context(current_user, &block)
end
def allow_gitaly_ref_name_caching
@@ -534,10 +542,6 @@ class ApplicationController < ActionController::Base
end
end
- def current_user_mode
- @current_user_mode ||= Gitlab::Auth::CurrentUserMode.new(current_user)
- end
-
# A user requires a role and have the setup_for_company attribute set when they are part of the experimental signup
# flow (executed by the Growth team). Users are redirected to the welcome page when their role is required and the
# experiment is enabled for the current user.
diff --git a/app/controllers/autocomplete_controller.rb b/app/controllers/autocomplete_controller.rb
index 06531932b31..0df201ab506 100644
--- a/app/controllers/autocomplete_controller.rb
+++ b/app/controllers/autocomplete_controller.rb
@@ -40,10 +40,20 @@ class AutocompleteController < ApplicationController
end
def merge_request_target_branches
- merge_requests = MergeRequestsFinder.new(current_user, params).execute
- target_branches = merge_requests.recent_target_branches
+ if target_branch_params.present?
+ merge_requests = MergeRequestsFinder.new(current_user, target_branch_params).execute
+ target_branches = merge_requests.recent_target_branches
+
+ render json: target_branches.map { |target_branch| { title: target_branch } }
+ else
+ render json: { error: _('At least one of group_id or project_id must be specified') }, status: :bad_request
+ end
+ end
+
+ private
- render json: target_branches.map { |target_branch| { title: target_branch } }
+ def target_branch_params
+ params.permit(:group_id, :project_id).select { |_, v| v.present? }
end
end
diff --git a/app/controllers/boards/lists_controller.rb b/app/controllers/boards/lists_controller.rb
index 880f7500708..0b8469e8290 100644
--- a/app/controllers/boards/lists_controller.rb
+++ b/app/controllers/boards/lists_controller.rb
@@ -53,7 +53,7 @@ module Boards
service = Boards::Lists::GenerateService.new(board_parent, current_user)
if service.execute(board)
- lists = board.lists.movable.preload_associations
+ lists = board.lists.movable.preload_associated_models
List.preload_preferences_for_user(lists, current_user)
diff --git a/app/controllers/clusters/clusters_controller.rb b/app/controllers/clusters/clusters_controller.rb
index 9a539cf7c24..f4b74b14c0b 100644
--- a/app/controllers/clusters/clusters_controller.rb
+++ b/app/controllers/clusters/clusters_controller.rb
@@ -3,18 +3,15 @@
class Clusters::ClustersController < Clusters::BaseController
include RoutableActions
- before_action :cluster, only: [:cluster_status, :show, :update, :destroy]
+ before_action :cluster, only: [:cluster_status, :show, :update, :destroy, :clear_cache]
before_action :generate_gcp_authorize_url, only: [:new]
before_action :validate_gcp_token, only: [:new]
before_action :gcp_cluster, only: [:new]
before_action :user_cluster, only: [:new]
- before_action :authorize_create_cluster!, only: [:new, :authorize_aws_role, :revoke_aws_role, :aws_proxy]
+ before_action :authorize_create_cluster!, only: [:new, :authorize_aws_role]
before_action :authorize_update_cluster!, only: [:update]
- before_action :authorize_admin_cluster!, only: [:destroy]
+ before_action :authorize_admin_cluster!, only: [:destroy, :clear_cache]
before_action :update_applications_status, only: [:cluster_status]
- before_action only: [:new, :create_gcp] do
- push_frontend_feature_flag(:create_eks_clusters)
- end
before_action only: [:show] do
push_frontend_feature_flag(:enable_cluster_application_elastic_stack)
push_frontend_feature_flag(:enable_cluster_application_crossplane)
@@ -42,11 +39,10 @@ class Clusters::ClustersController < Clusters::BaseController
end
def new
- return unless Feature.enabled?(:create_eks_clusters)
-
if params[:provider] == 'aws'
@aws_role = current_user.aws_role || Aws::Role.new
@aws_role.ensure_role_external_id!
+ @instance_types = load_instance_types.to_json
elsif params[:provider] == 'gcp'
redirect_to @authorize_url if @authorize_url && !@valid_gcp_token
@@ -113,6 +109,7 @@ class Clusters::ClustersController < Clusters::BaseController
generate_gcp_authorize_url
validate_gcp_token
user_cluster
+ params[:provider] = 'gcp'
render :new, locals: { active_tab: 'create' }
end
@@ -149,34 +146,24 @@ class Clusters::ClustersController < Clusters::BaseController
end
def authorize_aws_role
- role = current_user.build_aws_role(create_role_params)
-
- role.save ? respond_201 : respond_422
- end
-
- def revoke_aws_role
- current_user.aws_role&.destroy
+ response = Clusters::Aws::AuthorizeRoleService.new(
+ current_user,
+ params: aws_role_params
+ ).execute
- head :no_content
+ render json: response.body, status: response.status
end
- def aws_proxy
- response = Clusters::Aws::ProxyService.new(
- current_user.aws_role,
- params: params
- ).execute
+ def clear_cache
+ cluster.delete_cached_resources!
- render json: response.body, status: response.status
+ redirect_to cluster.show_path, notice: _('Cluster cache cleared.')
end
private
def destroy_params
- # To be uncomented on https://gitlab.com/gitlab-org/gitlab/merge_requests/16954
- # This MR got split into other since it was too big.
- #
- # params.permit(:cleanup)
- {}
+ params.permit(:cleanup)
end
def update_params
@@ -270,13 +257,12 @@ class Clusters::ClustersController < Clusters::BaseController
)
end
- def create_role_params
+ def aws_role_params
params.require(:cluster).permit(:role_arn, :role_external_id)
end
def generate_gcp_authorize_url
- params = Feature.enabled?(:create_eks_clusters) ? { provider: :gke } : {}
- state = generate_session_key_redirect(clusterable.new_path(params).to_s)
+ state = generate_session_key_redirect(clusterable.new_path(provider: :gcp).to_s)
@authorize_url = GoogleApi::CloudPlatform::Client.new(
nil, callback_google_api_auth_url,
@@ -317,6 +303,19 @@ class Clusters::ClustersController < Clusters::BaseController
end
end
+ ##
+ # Unfortunately the EC2 API doesn't provide a list of
+ # possible instance types. There is a workaround, using
+ # the Pricing API, but instead of requiring the
+ # user to grant extra permissions for this we use the
+ # values that validate the CloudFormation template.
+ def load_instance_types
+ stack_template = File.read(Rails.root.join('vendor', 'aws', 'cloudformation', 'eks_cluster.yaml'))
+ instance_types = YAML.safe_load(stack_template).dig('Parameters', 'NodeInstanceType', 'AllowedValues')
+
+ instance_types.map { |type| Hash(name: type, value: type) }
+ end
+
def update_applications_status
@cluster.applications.each(&:schedule_status_update)
end
diff --git a/app/controllers/concerns/boards_actions.rb b/app/controllers/concerns/boards_actions.rb
index a093d0d6e7f..eb1080cb3d2 100644
--- a/app/controllers/concerns/boards_actions.rb
+++ b/app/controllers/concerns/boards_actions.rb
@@ -9,6 +9,7 @@ module BoardsActions
before_action :boards, only: :index
before_action :board, only: :show
+ before_action :push_wip_limits, only: [:index, :show]
end
def index
@@ -24,6 +25,10 @@ module BoardsActions
private
+ # Noop on FOSS
+ def push_wip_limits
+ end
+
def boards
strong_memoize(:boards) do
Boards::ListService.new(parent, current_user).execute
diff --git a/app/controllers/concerns/confirm_email_warning.rb b/app/controllers/concerns/confirm_email_warning.rb
index 86df0010665..32e1a46e580 100644
--- a/app/controllers/concerns/confirm_email_warning.rb
+++ b/app/controllers/concerns/confirm_email_warning.rb
@@ -4,15 +4,18 @@ module ConfirmEmailWarning
extend ActiveSupport::Concern
included do
- before_action :set_confirm_warning, if: -> { Feature.enabled?(:soft_email_confirmation) }
+ before_action :set_confirm_warning, if: :show_confirm_warning?
end
protected
+ def show_confirm_warning?
+ html_request? && request.get? && Feature.enabled?(:soft_email_confirmation)
+ end
+
def set_confirm_warning
return unless current_user
return if current_user.confirmed?
- return if peek_request? || json_request? || !request.get?
email = current_user.unconfirmed_email || current_user.email
diff --git a/app/controllers/concerns/cycle_analytics_params.rb b/app/controllers/concerns/cycle_analytics_params.rb
index 1645af695be..a78d803927c 100644
--- a/app/controllers/concerns/cycle_analytics_params.rb
+++ b/app/controllers/concerns/cycle_analytics_params.rb
@@ -38,7 +38,8 @@ module CycleAnalyticsParams
end
def to_utc_time(field)
- Date.parse(field).to_time.utc
+ date = field.is_a?(Date) ? field : Date.parse(field)
+ date.to_time.utc
end
end
diff --git a/app/controllers/concerns/enforces_admin_authentication.rb b/app/controllers/concerns/enforces_admin_authentication.rb
index e731211f423..527759de0bb 100644
--- a/app/controllers/concerns/enforces_admin_authentication.rb
+++ b/app/controllers/concerns/enforces_admin_authentication.rb
@@ -18,6 +18,7 @@ module EnforcesAdminAuthentication
return unless Feature.enabled?(:user_mode_in_session)
unless current_user_mode.admin_mode?
+ current_user_mode.request_admin_mode!
store_location_for(:redirect, request.fullpath) if storable_location?
redirect_to(new_admin_session_path, notice: _('Re-authentication required'))
end
diff --git a/app/controllers/concerns/initializes_current_user_mode.rb b/app/controllers/concerns/initializes_current_user_mode.rb
new file mode 100644
index 00000000000..df7cea5c754
--- /dev/null
+++ b/app/controllers/concerns/initializes_current_user_mode.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+module InitializesCurrentUserMode
+ extend ActiveSupport::Concern
+
+ included do
+ helper_method :current_user_mode
+ end
+
+ def current_user_mode
+ @current_user_mode ||= Gitlab::Auth::CurrentUserMode.new(current_user)
+ end
+end
diff --git a/app/controllers/concerns/issuable_actions.rb b/app/controllers/concerns/issuable_actions.rb
index 6162d006cc7..c4abaacd573 100644
--- a/app/controllers/concerns/issuable_actions.rb
+++ b/app/controllers/concerns/issuable_actions.rb
@@ -98,13 +98,11 @@ module IssuableActions
error_message = "Destroy confirmation not provided for #{issuable.human_class_name}"
exception = RuntimeError.new(error_message)
- Gitlab::Sentry.track_acceptable_exception(
+ Gitlab::ErrorTracking.track_exception(
exception,
- extra: {
- project_path: issuable.project.full_path,
- issuable_type: issuable.class.name,
- issuable_id: issuable.id
- }
+ project_path: issuable.project.full_path,
+ issuable_type: issuable.class.name,
+ issuable_id: issuable.id
)
index_path = polymorphic_path([parent, issuable.class])
@@ -121,7 +119,7 @@ module IssuableActions
end
def bulk_update
- result = Issuable::BulkUpdateService.new(current_user, bulk_update_params).execute(resource_name)
+ result = Issuable::BulkUpdateService.new(parent, current_user, bulk_update_params).execute(resource_name)
quantity = result[:count]
render json: { notice: "#{quantity} #{resource_name.pluralize(quantity)} updated" }
diff --git a/app/controllers/concerns/membership_actions.rb b/app/controllers/concerns/membership_actions.rb
index 0b2756c0c6a..993f091b0e6 100644
--- a/app/controllers/concerns/membership_actions.rb
+++ b/app/controllers/concerns/membership_actions.rb
@@ -144,4 +144,15 @@ module MembershipActions
end
end
end
+
+ def requested_relations
+ case params[:with_inherited_permissions].presence
+ when 'exclude'
+ [:direct]
+ when 'only'
+ [:inherited]
+ else
+ [:inherited, :direct]
+ end
+ end
end
diff --git a/app/controllers/concerns/notes_actions.rb b/app/controllers/concerns/notes_actions.rb
index fbae4c53c31..3d599d9e7f9 100644
--- a/app/controllers/concerns/notes_actions.rb
+++ b/app/controllers/concerns/notes_actions.rb
@@ -63,7 +63,11 @@ module NotesActions
json.merge!(note_json(@note))
end
- render json: json
+ if @note.errors.present? && @note.errors.keys != [:commands_only]
+ render json: json, status: :unprocessable_entity
+ else
+ render json: json
+ end
end
format.html { redirect_back_or_default }
end
diff --git a/app/controllers/concerns/service_params.rb b/app/controllers/concerns/service_params.rb
index fd9d5fad38e..3ccf227c431 100644
--- a/app/controllers/concerns/service_params.rb
+++ b/app/controllers/concerns/service_params.rb
@@ -18,6 +18,7 @@ module ServiceParams
:channels,
:color,
:colorize_messages,
+ :comment_on_event_enabled,
:confidential_issues_events,
:default_irc_uri,
:description,
diff --git a/app/controllers/concerns/sessionless_authentication.rb b/app/controllers/concerns/sessionless_authentication.rb
index f644923443b..d5c26fca957 100644
--- a/app/controllers/concerns/sessionless_authentication.rb
+++ b/app/controllers/concerns/sessionless_authentication.rb
@@ -33,6 +33,8 @@ module SessionlessAuthentication
end
def enable_admin_mode!
- current_user_mode.enable_admin_mode!(skip_password_validation: true) if Feature.enabled?(:user_mode_in_session)
+ return unless Feature.enabled?(:user_mode_in_session)
+
+ current_user_mode.enable_sessionless_admin_mode!
end
end
diff --git a/app/controllers/concerns/sourcegraph_gon.rb b/app/controllers/concerns/sourcegraph_gon.rb
index ab4abd734fb..01925cf9d4d 100644
--- a/app/controllers/concerns/sourcegraph_gon.rb
+++ b/app/controllers/concerns/sourcegraph_gon.rb
@@ -4,7 +4,7 @@ module SourcegraphGon
extend ActiveSupport::Concern
included do
- before_action :push_sourcegraph_gon, unless: :json_request?
+ before_action :push_sourcegraph_gon, if: :html_request?
end
private
diff --git a/app/controllers/concerns/uploads_actions.rb b/app/controllers/concerns/uploads_actions.rb
index b87779c22d3..655575e0944 100644
--- a/app/controllers/concerns/uploads_actions.rb
+++ b/app/controllers/concerns/uploads_actions.rb
@@ -1,11 +1,16 @@
# frozen_string_literal: true
module UploadsActions
+ extend ActiveSupport::Concern
include Gitlab::Utils::StrongMemoize
include SendFileUpload
UPLOAD_MOUNTS = %w(avatar attachment file logo header_logo favicon).freeze
+ included do
+ prepend_before_action :set_request_format_from_path_extension
+ end
+
def create
uploader = UploadService.new(model, params[:file], uploader_class).execute
@@ -39,15 +44,14 @@ module UploadsActions
expires_in ttl, directives
- disposition = uploader.embeddable? ? 'inline' : 'attachment'
-
- uploaders = [uploader, *uploader.versions.values]
- uploader = uploaders.find { |version| version.filename == params[:filename] }
+ file_uploader = [uploader, *uploader.versions.values].find do |version|
+ version.filename == params[:filename]
+ end
- return render_404 unless uploader
+ return render_404 unless file_uploader
workhorse_set_content_type!
- send_upload(uploader, attachment: uploader.filename, disposition: disposition)
+ send_upload(file_uploader, attachment: file_uploader.filename, disposition: content_disposition)
end
def authorize
@@ -64,6 +68,28 @@ module UploadsActions
private
+ # Based on ActionDispatch::Http::MimeNegotiation. We have an
+ # initializer that monkey-patches this method out (so that repository
+ # paths don't guess a format based on extension), but we do want this
+ # behavior when serving uploads.
+ def set_request_format_from_path_extension
+ path = request.headers['action_dispatch.original_path'] || request.headers['PATH_INFO']
+
+ if match = path&.match(/\.(\w+)\z/)
+ format = Mime[match.captures.first]
+
+ request.format = format.symbol if format
+ end
+ end
+
+ def content_disposition
+ if uploader.embeddable? || uploader.pdf?
+ 'inline'
+ else
+ 'attachment'
+ end
+ end
+
def uploader_class
raise NotImplementedError
end
diff --git a/app/controllers/groups/group_members_controller.rb b/app/controllers/groups/group_members_controller.rb
index 1b1416a72d7..dcdf9aced1a 100644
--- a/app/controllers/groups/group_members_controller.rb
+++ b/app/controllers/groups/group_members_controller.rb
@@ -24,8 +24,7 @@ class Groups::GroupMembersController < Groups::ApplicationController
@sort = params[:sort].presence || sort_value_name
@project = @group.projects.find(params[:project_id]) if params[:project_id]
-
- @members = GroupMembersFinder.new(@group).execute
+ @members = find_members
if can_manage_members
@invited_members = @members.invite
@@ -52,6 +51,12 @@ class Groups::GroupMembersController < Groups::ApplicationController
# MembershipActions concern
alias_method :membershipable, :group
+
+ private
+
+ def find_members
+ GroupMembersFinder.new(@group).execute(include_relations: requested_relations)
+ end
end
Groups::GroupMembersController.prepend_if_ee('EE::Groups::GroupMembersController')
diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb
index 755d97b091c..0953ca96317 100644
--- a/app/controllers/groups_controller.rb
+++ b/app/controllers/groups_controller.rb
@@ -181,6 +181,7 @@ class GroupsController < Groups::ApplicationController
:avatar,
:description,
:emails_disabled,
+ :mentions_disabled,
:lfs_enabled,
:name,
:path,
diff --git a/app/controllers/instance_statistics/conversational_development_index_controller.rb b/app/controllers/instance_statistics/conversational_development_index_controller.rb
deleted file mode 100644
index 306c16d559c..00000000000
--- a/app/controllers/instance_statistics/conversational_development_index_controller.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-# frozen_string_literal: true
-
-class InstanceStatistics::ConversationalDevelopmentIndexController < InstanceStatistics::ApplicationController
- # rubocop: disable CodeReuse/ActiveRecord
- def index
- @metric = ConversationalDevelopmentIndex::Metric.order(:created_at).last&.present
- end
- # rubocop: enable CodeReuse/ActiveRecord
-end
diff --git a/app/controllers/instance_statistics/dev_ops_score_controller.rb b/app/controllers/instance_statistics/dev_ops_score_controller.rb
new file mode 100644
index 00000000000..238f7fa7707
--- /dev/null
+++ b/app/controllers/instance_statistics/dev_ops_score_controller.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class InstanceStatistics::DevOpsScoreController < InstanceStatistics::ApplicationController
+ # rubocop: disable CodeReuse/ActiveRecord
+ def index
+ @metric = DevOpsScore::Metric.order(:created_at).last&.present
+ end
+ # rubocop: enable CodeReuse/ActiveRecord
+end
diff --git a/app/controllers/oauth/applications_controller.rb b/app/controllers/oauth/applications_controller.rb
index 8dd51ce1d64..bbf0bdd3662 100644
--- a/app/controllers/oauth/applications_controller.rb
+++ b/app/controllers/oauth/applications_controller.rb
@@ -6,6 +6,7 @@ class Oauth::ApplicationsController < Doorkeeper::ApplicationsController
include PageLayoutHelper
include OauthApplications
include Gitlab::Experimentation::ControllerConcern
+ include InitializesCurrentUserMode
before_action :verify_user_oauth_applications_enabled, except: :index
before_action :authenticate_user!
diff --git a/app/controllers/oauth/authorizations_controller.rb b/app/controllers/oauth/authorizations_controller.rb
index e65726dffbf..2a4e659c5b9 100644
--- a/app/controllers/oauth/authorizations_controller.rb
+++ b/app/controllers/oauth/authorizations_controller.rb
@@ -2,6 +2,8 @@
class Oauth::AuthorizationsController < Doorkeeper::AuthorizationsController
include Gitlab::Experimentation::ControllerConcern
+ include InitializesCurrentUserMode
+
layout 'profile'
# Overridden from Doorkeeper::AuthorizationsController to
diff --git a/app/controllers/omniauth_callbacks_controller.rb b/app/controllers/omniauth_callbacks_controller.rb
index eca58748cc5..92f36c031f1 100644
--- a/app/controllers/omniauth_callbacks_controller.rb
+++ b/app/controllers/omniauth_callbacks_controller.rb
@@ -4,6 +4,7 @@ class OmniauthCallbacksController < Devise::OmniauthCallbacksController
include AuthenticatesWithTwoFactor
include Devise::Controllers::Rememberable
include AuthHelper
+ include InitializesCurrentUserMode
protect_from_forgery except: [:kerberos, :saml, :cas3, :failure], with: :exception, prepend: true
@@ -94,8 +95,12 @@ class OmniauthCallbacksController < Devise::OmniauthCallbacksController
return render_403 unless link_provider_allowed?(oauth['provider'])
log_audit_event(current_user, with: oauth['provider'])
- identity_linker ||= auth_module::IdentityLinker.new(current_user, oauth, session)
+ if Feature.enabled?(:user_mode_in_session)
+ return admin_mode_flow if current_user_mode.admin_mode_requested?
+ end
+
+ identity_linker ||= auth_module::IdentityLinker.new(current_user, oauth, session)
link_identity(identity_linker)
if identity_linker.changed?
@@ -239,6 +244,24 @@ class OmniauthCallbacksController < Devise::OmniauthCallbacksController
store_location_for(:user, uri.to_s)
end
end
+
+ def admin_mode_flow
+ if omniauth_identity_matches_current_user?
+ current_user_mode.enable_admin_mode!(skip_password_validation: true)
+
+ redirect_to stored_location_for(:redirect) || admin_root_path, notice: _('Admin mode enabled')
+ else
+ fail_admin_mode_invalid_credentials
+ end
+ end
+
+ def omniauth_identity_matches_current_user?
+ current_user.matches_identity?(oauth['provider'], oauth['uid'])
+ end
+
+ def fail_admin_mode_invalid_credentials
+ redirect_to new_admin_session_path, alert: _('Invalid login or password')
+ end
end
OmniauthCallbacksController.prepend_if_ee('EE::OmniauthCallbacksController')
diff --git a/app/controllers/projects/branches_controller.rb b/app/controllers/projects/branches_controller.rb
index 578a3d451a7..09754409104 100644
--- a/app/controllers/projects/branches_controller.rb
+++ b/app/controllers/projects/branches_controller.rb
@@ -46,7 +46,7 @@ class Projects::BranchesController < Projects::ApplicationController
def diverging_commit_counts
respond_to do |format|
format.json do
- service = Branches::DivergingCommitCountsService.new(repository)
+ service = ::Branches::DivergingCommitCountsService.new(repository)
branches = BranchesFinder.new(repository, params.permit(names: [])).execute
Gitlab::GitalyClient.allow_n_plus_1_calls do
@@ -63,7 +63,7 @@ class Projects::BranchesController < Projects::ApplicationController
redirect_to_autodeploy = project.empty_repo? && project.deployment_platform.present?
- result = CreateBranchService.new(project, current_user)
+ result = ::Branches::CreateService.new(project, current_user)
.execute(branch_name, ref)
success = (result[:status] == :success)
@@ -102,7 +102,7 @@ class Projects::BranchesController < Projects::ApplicationController
def destroy
@branch_name = Addressable::URI.unescape(params[:id])
- result = DeleteBranchService.new(project, current_user).execute(@branch_name)
+ result = ::Branches::DeleteService.new(project, current_user).execute(@branch_name)
respond_to do |format|
format.html do
@@ -118,7 +118,7 @@ class Projects::BranchesController < Projects::ApplicationController
end
def destroy_all_merged
- DeleteMergedBranchesService.new(@project, current_user).async_execute
+ ::Branches::DeleteMergedService.new(@project, current_user).async_execute
redirect_to project_branches_path(@project),
notice: _('Merged branches are being deleted. This can take some time depending on the number of branches. Please refresh the page to see changes.')
@@ -133,8 +133,6 @@ class Projects::BranchesController < Projects::ApplicationController
# frontend could omit this set. To prevent excessive I/O, we require
# that a list of names be specified.
def limit_diverging_commit_counts!
- return unless Feature.enabled?(:limit_diverging_commit_counts, default_enabled: true)
-
limit = Kaminari.config.default_per_page
# If we don't have many branches in the repository, then go ahead.
diff --git a/app/controllers/projects/ci/lints_controller.rb b/app/controllers/projects/ci/lints_controller.rb
index d7a0b7ece14..812420e9708 100644
--- a/app/controllers/projects/ci/lints_controller.rb
+++ b/app/controllers/projects/ci/lints_controller.rb
@@ -8,11 +8,13 @@ class Projects::Ci::LintsController < Projects::ApplicationController
def create
@content = params[:content]
- @error = Gitlab::Ci::YamlProcessor.validation_message(@content, yaml_processor_options)
- @status = @error.blank?
+ result = Gitlab::Ci::YamlProcessor.new_with_validation_errors(@content, yaml_processor_options)
- if @error.blank?
- @config_processor = Gitlab::Ci::YamlProcessor.new(@content, yaml_processor_options)
+ @error = result.errors.join(', ')
+ @status = result.valid?
+
+ if result.valid?
+ @config_processor = result.content
@stages = @config_processor.stages
@builds = @config_processor.builds
@jobs = @config_processor.jobs
diff --git a/app/controllers/projects/environments/prometheus_api_controller.rb b/app/controllers/projects/environments/prometheus_api_controller.rb
index e902d218c75..98fcc594d6e 100644
--- a/app/controllers/projects/environments/prometheus_api_controller.rb
+++ b/app/controllers/projects/environments/prometheus_api_controller.rb
@@ -7,23 +7,34 @@ class Projects::Environments::PrometheusApiController < Projects::ApplicationCon
before_action :environment
def proxy
- result = Prometheus::ProxyService.new(
+ variable_substitution_result =
+ variable_substitution_service.new(environment, permit_params).execute
+
+ if variable_substitution_result[:status] == :error
+ return error_response(variable_substitution_result)
+ end
+
+ prometheus_result = Prometheus::ProxyService.new(
environment,
proxy_method,
proxy_path,
- proxy_params
+ variable_substitution_result[:params]
).execute
- return continue_polling_response if result.nil?
- return error_response(result) if result[:status] == :error
+ return continue_polling_response if prometheus_result.nil?
+ return error_response(prometheus_result) if prometheus_result[:status] == :error
- success_response(result)
+ success_response(prometheus_result)
end
private
- def query_context
- Gitlab::Prometheus::QueryVariables.call(environment)
+ def variable_substitution_service
+ Prometheus::ProxyVariableSubstitutionService
+ end
+
+ def permit_params
+ params.permit!
end
def environment
@@ -37,15 +48,4 @@ class Projects::Environments::PrometheusApiController < Projects::ApplicationCon
def proxy_path
params[:proxy_path]
end
-
- def proxy_params
- substitute_query_variables(params).permit!
- end
-
- def substitute_query_variables(params)
- query = params[:query]
- return params unless query
-
- params.merge(query: query % query_context)
- end
end
diff --git a/app/controllers/projects/environments/sample_metrics_controller.rb b/app/controllers/projects/environments/sample_metrics_controller.rb
new file mode 100644
index 00000000000..79a7eab150b
--- /dev/null
+++ b/app/controllers/projects/environments/sample_metrics_controller.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class Projects::Environments::SampleMetricsController < Projects::ApplicationController
+ def query
+ result = Metrics::SampleMetricsService.new(params[:identifier]).query
+
+ if result
+ render json: { "status": "success", "data": { "resultType": "matrix", "result": result } }
+ else
+ render_404
+ end
+ end
+end
diff --git a/app/controllers/projects/environments_controller.rb b/app/controllers/projects/environments_controller.rb
index 4562296cea0..1179782036d 100644
--- a/app/controllers/projects/environments_controller.rb
+++ b/app/controllers/projects/environments_controller.rb
@@ -7,14 +7,15 @@ class Projects::EnvironmentsController < Projects::ApplicationController
before_action :authorize_read_environment!
before_action :authorize_create_environment!, only: [:new, :create]
before_action :authorize_stop_environment!, only: [:stop]
- before_action :authorize_update_environment!, only: [:edit, :update]
+ before_action :authorize_update_environment!, only: [:edit, :update, :cancel_auto_stop]
before_action :authorize_admin_environment!, only: [:terminal, :terminal_websocket_authorize]
- before_action :environment, only: [:show, :edit, :update, :stop, :terminal, :terminal_websocket_authorize, :metrics]
+ before_action :environment, only: [:show, :edit, :update, :stop, :terminal, :terminal_websocket_authorize, :metrics, :cancel_auto_stop]
before_action :verify_api_request!, only: :terminal_websocket_authorize
- before_action :expire_etag_cache, only: [:index]
+ before_action :expire_etag_cache, only: [:index], unless: -> { request.format.json? }
before_action only: [:metrics, :additional_metrics, :metrics_dashboard] do
push_frontend_feature_flag(:prometheus_computed_alerts)
end
+ after_action :expire_etag_cache, only: [:cancel_auto_stop]
def index
@environments = project.environments
@@ -104,6 +105,27 @@ class Projects::EnvironmentsController < Projects::ApplicationController
end
end
+ def cancel_auto_stop
+ result = Environments::ResetAutoStopService.new(project, current_user)
+ .execute(environment)
+
+ if result[:status] == :success
+ respond_to do |format|
+ message = _('Auto stop successfully canceled.')
+
+ format.html { redirect_back_or_default(default: { action: 'show' }, options: { notice: message }) }
+ format.json { render json: { message: message }, status: :ok }
+ end
+ else
+ respond_to do |format|
+ message = result[:message]
+
+ format.html { redirect_back_or_default(default: { action: 'show' }, options: { alert: message }) }
+ format.json { render json: { message: message }, status: :unprocessable_entity }
+ end
+ end
+ end
+
def terminal
# Currently, this acts as a hint to load the terminal details into the cache
# if they aren't there already. In the future, users will need these details
@@ -175,8 +197,6 @@ class Projects::EnvironmentsController < Projects::ApplicationController
end
def expire_etag_cache
- return if request.format.json?
-
# this forces to reload json content
Gitlab::EtagCaching::Store.new.tap do |store|
store.touch(project_environments_path(project, format: :json))
@@ -222,6 +242,10 @@ class Projects::EnvironmentsController < Projects::ApplicationController
def authorize_stop_environment!
access_denied! unless can?(current_user, :stop_environment, environment)
end
+
+ def authorize_update_environment!
+ access_denied! unless can?(current_user, :update_environment, environment)
+ end
end
Projects::EnvironmentsController.prepend_if_ee('EE::Projects::EnvironmentsController')
diff --git a/app/controllers/projects/error_tracking_controller.rb b/app/controllers/projects/error_tracking_controller.rb
index 7143424473e..ba21ccfb169 100644
--- a/app/controllers/projects/error_tracking_controller.rb
+++ b/app/controllers/projects/error_tracking_controller.rb
@@ -44,13 +44,18 @@ class Projects::ErrorTrackingController < Projects::ApplicationController
private
def render_index_json
- service = ErrorTracking::ListIssuesService.new(project, current_user)
+ service = ErrorTracking::ListIssuesService.new(
+ project,
+ current_user,
+ list_issues_params
+ )
result = service.execute
return if handle_errors(result)
render json: {
errors: serialize_errors(result[:issues]),
+ pagination: result[:pagination],
external_url: service.external_url
}
end
@@ -72,8 +77,10 @@ class Projects::ErrorTrackingController < Projects::ApplicationController
return if handle_errors(result)
+ result_with_syntax_highlight = Gitlab::ErrorTracking::StackTraceHighlightDecorator.decorate(result[:latest_event])
+
render json: {
- error: serialize_error_event(result[:latest_event])
+ error: serialize_error_event(result_with_syntax_highlight)
}
end
@@ -106,6 +113,10 @@ class Projects::ErrorTrackingController < Projects::ApplicationController
end
end
+ def list_issues_params
+ params.permit(:search_term, :sort, :cursor)
+ end
+
def list_projects_params
params.require(:error_tracking_setting).permit([:api_host, :token])
end
diff --git a/app/controllers/projects/hook_logs_controller.rb b/app/controllers/projects/hook_logs_controller.rb
index a7afc3d77a5..ed7e7b68acb 100644
--- a/app/controllers/projects/hook_logs_controller.rb
+++ b/app/controllers/projects/hook_logs_controller.rb
@@ -16,15 +16,17 @@ class Projects::HookLogsController < Projects::ApplicationController
end
def retry
- result = hook.execute(hook_log.request_data, hook_log.trigger)
-
- set_hook_execution_notice(result)
-
+ execute_hook
redirect_to edit_project_hook_path(@project, @hook)
end
private
+ def execute_hook
+ result = hook.execute(hook_log.request_data, hook_log.trigger)
+ set_hook_execution_notice(result)
+ end
+
def hook
@hook ||= @project.hooks.find(params[:hook_id])
end
diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb
index 009765702ab..229374c3929 100644
--- a/app/controllers/projects/issues_controller.rb
+++ b/app/controllers/projects/issues_controller.rb
@@ -44,7 +44,7 @@ class Projects::IssuesController < Projects::ApplicationController
before_action do
push_frontend_feature_flag(:vue_issuable_sidebar, project.group)
- push_frontend_feature_flag(:release_search_filter, project)
+ push_frontend_feature_flag(:release_search_filter, project, default_enabled: true)
end
respond_to :html
@@ -237,7 +237,10 @@ class Projects::IssuesController < Projects::ApplicationController
end
def issue_params
- params.require(:issue).permit(*issue_params_attributes)
+ params.require(:issue).permit(
+ *issue_params_attributes,
+ sentry_issue_attributes: [:sentry_issue_identifier]
+ )
end
def issue_params_attributes
diff --git a/app/controllers/projects/jobs_controller.rb b/app/controllers/projects/jobs_controller.rb
index 1d914ab6011..796f3ff603f 100644
--- a/app/controllers/projects/jobs_controller.rb
+++ b/app/controllers/projects/jobs_controller.rb
@@ -12,39 +12,20 @@ class Projects::JobsController < Projects::ApplicationController
before_action :authorize_use_build_terminal!, only: [:terminal, :terminal_websocket_authorize]
before_action :verify_api_request!, only: :terminal_websocket_authorize
before_action only: [:show] do
- push_frontend_feature_flag(:job_log_json, project)
+ push_frontend_feature_flag(:job_log_json, project, default_enabled: true)
end
layout 'project'
- # rubocop: disable CodeReuse/ActiveRecord
def index
+ # We need all builds for tabs counters
+ @all_builds = JobsFinder.new(current_user: current_user, project: @project).execute
+
@scope = params[:scope]
- @all_builds = project.builds.relevant
- @builds = @all_builds.order('ci_builds.id DESC')
- @builds =
- case @scope
- when 'pending'
- @builds.pending.reverse_order
- when 'running'
- @builds.running.reverse_order
- when 'finished'
- @builds.finished
- else
- @builds
- end
- @builds = @builds.includes([
- { pipeline: [:project, :user] },
- :job_artifacts_archive,
- :metadata,
- :trigger_request,
- :project,
- :user,
- :tags
- ])
+ @builds = JobsFinder.new(current_user: current_user, project: @project, params: params).execute
+ @builds = @builds.eager_load_everything
@builds = @builds.page(params[:page]).per(30).without_count
end
- # rubocop: enable CodeReuse/ActiveRecord
# rubocop: disable CodeReuse/ActiveRecord
def show
@@ -72,7 +53,7 @@ class Projects::JobsController < Projects::ApplicationController
format.json do
# TODO: when the feature flag is removed we should not pass
# content_format to serialize method.
- content_format = Feature.enabled?(:job_log_json, @project) ? :json : :html
+ content_format = Feature.enabled?(:job_log_json, @project, default_enabled: true) ? :json : :html
build_trace = Ci::BuildTrace.new(
build: @build,
diff --git a/app/controllers/projects/merge_requests/diffs_controller.rb b/app/controllers/projects/merge_requests/diffs_controller.rb
index 42f9c0522a3..37d90ecdc00 100644
--- a/app/controllers/projects/merge_requests/diffs_controller.rb
+++ b/app/controllers/projects/merge_requests/diffs_controller.rb
@@ -5,8 +5,8 @@ class Projects::MergeRequests::DiffsController < Projects::MergeRequests::Applic
include RendersNotes
before_action :apply_diff_view_cookie!
- before_action :commit, except: :diffs_batch
- before_action :define_diff_vars, except: :diffs_batch
+ before_action :commit
+ before_action :define_diff_vars
before_action :define_diff_comment_vars, except: [:diffs_batch, :diffs_metadata]
def show
@@ -20,14 +20,11 @@ class Projects::MergeRequests::DiffsController < Projects::MergeRequests::Applic
def diffs_batch
return render_404 unless Feature.enabled?(:diffs_batch_load, @merge_request.project)
- diffable = @merge_request.merge_request_diff
-
- return render_404 unless diffable
-
- diffs = diffable.diffs_in_batch(params[:page], params[:per_page], diff_options: diff_options)
+ diffs = @compare.diffs_in_batch(params[:page], params[:per_page], diff_options: diff_options)
positions = @merge_request.note_positions_for_paths(diffs.diff_file_paths, current_user)
diffs.unfold_diff_files(positions.unfoldable)
+ diffs.write_cache
options = {
merge_request: @merge_request,
@@ -39,8 +36,10 @@ class Projects::MergeRequests::DiffsController < Projects::MergeRequests::Applic
end
def diffs_metadata
+ diffs = @compare.diffs(diff_options)
+
render json: DiffsMetadataSerializer.new(project: @merge_request.project)
- .represent(@diffs, additional_attributes)
+ .represent(diffs, additional_attributes)
end
private
@@ -49,11 +48,13 @@ class Projects::MergeRequests::DiffsController < Projects::MergeRequests::Applic
[{ source_project: :namespace }, { target_project: :namespace }]
end
+ # Deprecated: https://gitlab.com/gitlab-org/gitlab/issues/37735
def render_diffs
+ diffs = @compare.diffs(diff_options)
@environment = @merge_request.environments_for(current_user).last
- @diffs.unfold_diff_files(note_positions.unfoldable)
- @diffs.write_cache
+ diffs.unfold_diff_files(note_positions.unfoldable)
+ diffs.write_cache
request = {
current_user: current_user,
@@ -63,15 +64,14 @@ class Projects::MergeRequests::DiffsController < Projects::MergeRequests::Applic
options = additional_attributes.merge(diff_view: diff_view)
- render json: DiffsSerializer.new(request).represent(@diffs, options)
+ render json: DiffsSerializer.new(request).represent(diffs, options)
end
+ # Deprecated: https://gitlab.com/gitlab-org/gitlab/issues/37735
def define_diff_vars
@merge_request_diffs = @merge_request.merge_request_diffs.viewable.order_id_desc
@compare = commit || find_merge_request_diff_compare
return render_404 unless @compare
-
- @diffs = @compare.diffs(diff_options)
end
# rubocop: disable CodeReuse/ActiveRecord
@@ -84,6 +84,8 @@ class Projects::MergeRequests::DiffsController < Projects::MergeRequests::Applic
# rubocop: enable CodeReuse/ActiveRecord
# rubocop: disable CodeReuse/ActiveRecord
+ #
+ # Deprecated: https://gitlab.com/gitlab-org/gitlab/issues/37735
def find_merge_request_diff_compare
@merge_request_diff =
if diff_id = params[:diff_id].presence
@@ -126,6 +128,7 @@ class Projects::MergeRequests::DiffsController < Projects::MergeRequests::Applic
}
end
+ # Deprecated: https://gitlab.com/gitlab-org/gitlab/issues/37735
def define_diff_comment_vars
@new_diff_note_attrs = {
noteable_type: 'MergeRequest',
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index 766ec1e33f3..69e3e7c7acb 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -20,11 +20,13 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo
before_action :check_user_can_push_to_source_branch!, only: [:rebase]
before_action only: [:show] do
push_frontend_feature_flag(:diffs_batch_load, @project)
+ push_frontend_feature_flag(:single_mr_diff_view, @project)
end
before_action do
push_frontend_feature_flag(:vue_issuable_sidebar, @project.group)
- push_frontend_feature_flag(:release_search_filter, @project)
+ push_frontend_feature_flag(:release_search_filter, @project, default_enabled: true)
+ push_frontend_feature_flag(:async_mr_widget, @project)
end
around_action :allow_gitaly_ref_name_caching, only: [:index, :show, :discussions]
@@ -218,11 +220,16 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo
end
def ci_environments_status
- environments = if ci_environments_status_on_merge_result?
- EnvironmentStatus.after_merge_request(@merge_request, current_user)
- else
- EnvironmentStatus.for_merge_request(@merge_request, current_user)
- end
+ environments =
+ if ci_environments_status_on_merge_result?
+ if Feature.enabled?(:deployment_merge_requests_widget, @project)
+ EnvironmentStatus.for_deployed_merge_request(@merge_request, current_user)
+ else
+ EnvironmentStatus.after_merge_request(@merge_request, current_user)
+ end
+ else
+ EnvironmentStatus.for_merge_request(@merge_request, current_user)
+ end
render json: EnvironmentStatusSerializer.new(current_user: current_user).represent(environments)
end
diff --git a/app/controllers/projects/pages_controller.rb b/app/controllers/projects/pages_controller.rb
index 722fc30b3ff..f1e591ea1ec 100644
--- a/app/controllers/projects/pages_controller.rb
+++ b/app/controllers/projects/pages_controller.rb
@@ -15,8 +15,7 @@ class Projects::PagesController < Projects::ApplicationController
# rubocop: enable CodeReuse/ActiveRecord
def destroy
- project.remove_pages
- project.pages_domains.destroy_all # rubocop: disable DestroyAll
+ ::Pages::DeleteService.new(@project, current_user).execute
respond_to do |format|
format.html do
diff --git a/app/controllers/projects/pages_domains_controller.rb b/app/controllers/projects/pages_domains_controller.rb
index b693642981e..5a81a064048 100644
--- a/app/controllers/projects/pages_domains_controller.rb
+++ b/app/controllers/projects/pages_domains_controller.rb
@@ -8,7 +8,6 @@ class Projects::PagesDomainsController < Projects::ApplicationController
before_action :domain, except: [:new, :create]
def show
- redirect_to edit_project_pages_domain_path(@project, @domain)
end
def new
@@ -24,17 +23,18 @@ class Projects::PagesDomainsController < Projects::ApplicationController
flash[:alert] = 'Failed to verify domain ownership'
end
- redirect_to edit_project_pages_domain_path(@project, @domain)
+ redirect_to project_pages_domain_path(@project, @domain)
end
def edit
+ redirect_to project_pages_domain_path(@project, @domain)
end
def create
@domain = @project.pages_domains.create(create_params)
if @domain.valid?
- redirect_to edit_project_pages_domain_path(@project, @domain)
+ redirect_to project_pages_domain_path(@project, @domain)
else
render 'new'
end
@@ -46,7 +46,7 @@ class Projects::PagesDomainsController < Projects::ApplicationController
status: :found,
notice: 'Domain was updated'
else
- render 'edit'
+ render 'show'
end
end
@@ -68,7 +68,7 @@ class Projects::PagesDomainsController < Projects::ApplicationController
flash[:alert] = @domain.errors.full_messages.join(', ')
end
- redirect_to edit_project_pages_domain_path(@project, @domain)
+ redirect_to project_pages_domain_path(@project, @domain)
end
private
diff --git a/app/controllers/projects/pipeline_schedules_controller.rb b/app/controllers/projects/pipeline_schedules_controller.rb
index 72e939a3310..6a7e2b69652 100644
--- a/app/controllers/projects/pipeline_schedules_controller.rb
+++ b/app/controllers/projects/pipeline_schedules_controller.rb
@@ -83,12 +83,14 @@ class Projects::PipelineSchedulesController < Projects::ApplicationController
def play_rate_limit
return unless current_user
- limiter = ::Gitlab::ActionRateLimiter.new(action: :play_pipeline_schedule)
-
- return unless limiter.throttled?([current_user, schedule], 1)
+ if rate_limiter.throttled?(:play_pipeline_schedule, scope: [current_user, schedule])
+ flash[:alert] = _('You cannot play this scheduled pipeline at the moment. Please wait a minute.')
+ redirect_to pipeline_schedules_path(@project)
+ end
+ end
- flash[:alert] = _('You cannot play this scheduled pipeline at the moment. Please wait a minute.')
- redirect_to pipeline_schedules_path(@project)
+ def rate_limiter
+ ::Gitlab::ApplicationRateLimiter
end
def schedule
diff --git a/app/controllers/projects/pipelines_controller.rb b/app/controllers/projects/pipelines_controller.rb
index 4d35353d5f5..e3ef8f3f2ff 100644
--- a/app/controllers/projects/pipelines_controller.rb
+++ b/app/controllers/projects/pipelines_controller.rb
@@ -11,7 +11,6 @@ class Projects::PipelinesController < Projects::ApplicationController
before_action :authorize_create_pipeline!, only: [:new, :create]
before_action :authorize_update_pipeline!, only: [:retry, :cancel]
before_action do
- push_frontend_feature_flag(:hide_dismissed_vulnerabilities)
push_frontend_feature_flag(:junit_pipeline_view)
end
diff --git a/app/controllers/projects/project_members_controller.rb b/app/controllers/projects/project_members_controller.rb
index b01d48ca3d3..7bd084458d1 100644
--- a/app/controllers/projects/project_members_controller.rb
+++ b/app/controllers/projects/project_members_controller.rb
@@ -17,7 +17,7 @@ class Projects::ProjectMembersController < Projects::ApplicationController
@skip_groups << @project.namespace_id unless @project.personal?
@skip_groups += @project.group.ancestors.pluck(:id) if @project.group
- @project_members = MembersFinder.new(@project, current_user).execute
+ @project_members = MembersFinder.new(@project, current_user).execute(include_relations: requested_relations)
if params[:search].present?
@project_members = @project_members.joins(:user).merge(User.search(params[:search]))
diff --git a/app/controllers/projects/raw_controller.rb b/app/controllers/projects/raw_controller.rb
index c94fdd9483d..f39d98be516 100644
--- a/app/controllers/projects/raw_controller.rb
+++ b/app/controllers/projects/raw_controller.rb
@@ -4,11 +4,15 @@
class Projects::RawController < Projects::ApplicationController
include ExtractsPath
include SendsBlob
+ include StaticObjectExternalStorage
+
+ prepend_before_action(only: [:show]) { authenticate_sessionless_user!(:blob) }
before_action :require_non_empty_project
before_action :assign_ref_vars
before_action :authorize_download_code!
- before_action :show_rate_limit, only: [:show]
+ before_action :show_rate_limit, only: [:show], unless: :external_storage_request?
+ before_action :redirect_to_external_storage, only: :show, if: :static_objects_external_storage_enabled?
def show
@blob = @repository.blob_at(@commit.id, @path)
@@ -19,14 +23,16 @@ class Projects::RawController < Projects::ApplicationController
private
def show_rate_limit
- limiter = ::Gitlab::ActionRateLimiter.new(action: :show_raw_controller)
-
- return unless limiter.throttled?([@project, @commit, @path], raw_blob_request_limit)
+ if rate_limiter.throttled?(:show_raw_controller, scope: [@project, @commit, @path], threshold: raw_blob_request_limit)
+ rate_limiter.log_request(request, :raw_blob_request_limit, current_user)
- limiter.log_request(request, :raw_blob_request_limit, current_user)
+ flash[:alert] = _('You cannot access the raw file. Please wait a minute.')
+ redirect_to project_blob_path(@project, File.join(@ref, @path)), status: :too_many_requests
+ end
+ end
- flash[:alert] = _('You cannot access the raw file. Please wait a minute.')
- redirect_to project_blob_path(@project, File.join(@ref, @path)), status: :too_many_requests
+ def rate_limiter
+ ::Gitlab::ApplicationRateLimiter
end
def raw_blob_request_limit
diff --git a/app/controllers/projects/releases_controller.rb b/app/controllers/projects/releases_controller.rb
index 72c82aec31d..ffe69fe97e4 100644
--- a/app/controllers/projects/releases_controller.rb
+++ b/app/controllers/projects/releases_controller.rb
@@ -6,10 +6,11 @@ class Projects::ReleasesController < Projects::ApplicationController
before_action :release, only: %i[edit update]
before_action :authorize_read_release!
before_action do
- push_frontend_feature_flag(:release_edit_page, project, default_enabled: true)
push_frontend_feature_flag(:release_issue_summary, project)
+ push_frontend_feature_flag(:release_evidence_collection, project)
end
before_action :authorize_update_release!, only: %i[edit update]
+ before_action :authorize_download_code!, only: [:evidence]
def index
respond_to do |format|
@@ -20,6 +21,14 @@ class Projects::ReleasesController < Projects::ApplicationController
end
end
+ def evidence
+ respond_to do |format|
+ format.json do
+ render json: release.evidence_summary
+ end
+ end
+ end
+
protected
def releases
@@ -35,7 +44,6 @@ class Projects::ReleasesController < Projects::ApplicationController
private
def authorize_update_release!
- access_denied! unless Feature.enabled?(:release_edit_page, project, default_enabled: true)
access_denied! unless can?(current_user, :update_release, release)
end
diff --git a/app/controllers/projects/service_hook_logs_controller.rb b/app/controllers/projects/service_hook_logs_controller.rb
new file mode 100644
index 00000000000..5c814ea139f
--- /dev/null
+++ b/app/controllers/projects/service_hook_logs_controller.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+class Projects::ServiceHookLogsController < Projects::HookLogsController
+ before_action :service, only: [:show, :retry]
+
+ def retry
+ execute_hook
+ redirect_to edit_project_service_path(@project, @service)
+ end
+
+ private
+
+ def hook
+ @hook ||= service.service_hook
+ end
+
+ def service
+ @service ||= @project.find_or_initialize_service(params[:service_id])
+ end
+end
diff --git a/app/controllers/projects/services_controller.rb b/app/controllers/projects/services_controller.rb
index c9f680a4696..daaca9e1268 100644
--- a/app/controllers/projects/services_controller.rb
+++ b/app/controllers/projects/services_controller.rb
@@ -7,6 +7,7 @@ class Projects::ServicesController < Projects::ApplicationController
before_action :authorize_admin_project!
before_action :ensure_service_enabled
before_action :service
+ before_action :web_hook_logs, only: [:edit, :update]
respond_to :html
@@ -77,6 +78,12 @@ class Projects::ServicesController < Projects::ApplicationController
@service ||= @project.find_or_initialize_service(params[:id])
end
+ def web_hook_logs
+ return unless @service.service_hook.present?
+
+ @web_hook_logs ||= @service.service_hook.web_hook_logs.recent.page(params[:page])
+ end
+
def ensure_service_enabled
render_404 unless service
end
diff --git a/app/controllers/projects/settings/ci_cd_controller.rb b/app/controllers/projects/settings/ci_cd_controller.rb
index cfed8727450..6af815b8daa 100644
--- a/app/controllers/projects/settings/ci_cd_controller.rb
+++ b/app/controllers/projects/settings/ci_cd_controller.rb
@@ -13,7 +13,7 @@ module Projects
Projects::UpdateService.new(project, current_user, update_params).tap do |service|
result = service.execute
if result[:status] == :success
- flash[:notice] = _("Pipelines settings for '%{project_name}' were successfully updated.") % { project_name: @project.name }
+ flash[:toast] = _("Pipelines settings for '%{project_name}' were successfully updated.") % { project_name: @project.name }
run_autodevops_pipeline(service)
@@ -39,7 +39,7 @@ module Projects
def reset_registration_token
@project.reset_runners_token!
- flash[:notice] = _('New runners registration token has been generated!')
+ flash[:toast] = _("New runners registration token has been generated!")
redirect_to namespace_project_settings_ci_cd_path
end
@@ -65,12 +65,14 @@ module Projects
return unless service.run_auto_devops_pipeline?
if @project.empty_repo?
- flash[:warning] = _("This repository is currently empty. A new Auto DevOps pipeline will be created after a new file has been pushed to a branch.")
+ flash[:notice] = _("This repository is currently empty. A new Auto DevOps pipeline will be created after a new file has been pushed to a branch.")
return
end
CreatePipelineWorker.perform_async(project.id, current_user.id, project.default_branch, :web, ignore_skip_ci: true, save_on_errors: false)
- flash[:success] = "A new Auto DevOps pipeline has been created, go to <a href=\"#{project_pipelines_path(@project)}\">Pipelines page</a> for details".html_safe
+
+ pipelines_link_start = '<a href="%{url}">'.html_safe % { url: project_pipelines_path(@project) }
+ flash[:toast] = _("A new Auto DevOps pipeline has been created, go to %{pipelines_link_start}Pipelines page%{pipelines_link_end} for details") % { pipelines_link_start: pipelines_link_start, pipelines_link_end: "</a>".html_safe }
end
def define_variables
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index e5dea031bb5..47d6fb67108 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -32,6 +32,9 @@ class ProjectsController < Projects::ApplicationController
before_action :authorize_archive_project!, only: [:archive, :unarchive]
before_action :event_filter, only: [:show, :activity]
+ # Project Export Rate Limit
+ before_action :export_rate_limit, only: [:export, :download_export, :generate_new_export]
+
layout :determine_layout
def index
@@ -465,6 +468,21 @@ class ProjectsController < Projects::ApplicationController
def present_project
@project = @project.present(current_user: current_user)
end
+
+ def export_rate_limit
+ prefixed_action = "project_#{params[:action]}".to_sym
+
+ if rate_limiter.throttled?(prefixed_action, scope: [current_user, prefixed_action, @project])
+ rate_limiter.log_request(request, "#{prefixed_action}_request_limit".to_sym, current_user)
+
+ flash[:alert] = _('This endpoint has been requested too many times. Try again later.')
+ redirect_to edit_project_path(@project)
+ end
+ end
+
+ def rate_limiter
+ ::Gitlab::ApplicationRateLimiter
+ end
end
ProjectsController.prepend_if_ee('EE::ProjectsController')
diff --git a/app/controllers/snippets_controller.rb b/app/controllers/snippets_controller.rb
index 5805d068e21..54774df5e76 100644
--- a/app/controllers/snippets_controller.rb
+++ b/app/controllers/snippets_controller.rb
@@ -15,13 +15,9 @@ class SnippetsController < ApplicationController
before_action :snippet, only: [:show, :edit, :destroy, :update, :raw]
- # Allow read snippet
+ before_action :authorize_create_snippet!, only: [:new, :create]
before_action :authorize_read_snippet!, only: [:show, :raw]
-
- # Allow modify snippet
before_action :authorize_update_snippet!, only: [:edit, :update]
-
- # Allow destroy snippet
before_action :authorize_admin_snippet!, only: [:destroy]
skip_before_action :authenticate_user!, only: [:index, :show, :raw]
@@ -140,6 +136,10 @@ class SnippetsController < ApplicationController
return render_404 unless can?(current_user, :admin_personal_snippet, @snippet)
end
+ def authorize_create_snippet!
+ return render_404 unless can?(current_user, :create_personal_snippet)
+ end
+
def snippet_params
params.require(:personal_snippet).permit(:title, :content, :file_name, :private, :visibility_level, :description)
end
diff --git a/app/controllers/uploads_controller.rb b/app/controllers/uploads_controller.rb
index 635db386792..67d33648470 100644
--- a/app/controllers/uploads_controller.rb
+++ b/app/controllers/uploads_controller.rb
@@ -20,7 +20,6 @@ class UploadsController < ApplicationController
skip_before_action :authenticate_user!
before_action :upload_mount_satisfied?
- before_action :find_model
before_action :authorize_access!, only: [:show]
before_action :authorize_create_access!, only: [:create, :authorize]
before_action :verify_workhorse_api!, only: [:authorize]
diff --git a/app/finders/clusters/knative_serving_namespace_finder.rb b/app/finders/clusters/knative_serving_namespace_finder.rb
new file mode 100644
index 00000000000..d3db5be558c
--- /dev/null
+++ b/app/finders/clusters/knative_serving_namespace_finder.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+module Clusters
+ class KnativeServingNamespaceFinder
+ attr_reader :cluster
+
+ def initialize(cluster)
+ @cluster = cluster
+ end
+
+ def execute
+ cluster.kubeclient&.get_namespace(Clusters::Kubernetes::KNATIVE_SERVING_NAMESPACE)
+ rescue Kubeclient::ResourceNotFoundError
+ nil
+ end
+ end
+end
diff --git a/app/finders/clusters/knative_version_role_binding_finder.rb b/app/finders/clusters/knative_version_role_binding_finder.rb
new file mode 100644
index 00000000000..26f5492840a
--- /dev/null
+++ b/app/finders/clusters/knative_version_role_binding_finder.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+module Clusters
+ class KnativeVersionRoleBindingFinder
+ attr_reader :cluster
+
+ def initialize(cluster)
+ @cluster = cluster
+ end
+
+ def execute
+ cluster.kubeclient&.get_cluster_role_binding(Clusters::Kubernetes::GITLAB_KNATIVE_VERSION_ROLE_BINDING_NAME)
+ rescue Kubeclient::ResourceNotFoundError
+ nil
+ end
+ end
+end
diff --git a/app/finders/deployments_finder.rb b/app/finders/deployments_finder.rb
new file mode 100644
index 00000000000..b718b55dd68
--- /dev/null
+++ b/app/finders/deployments_finder.rb
@@ -0,0 +1,70 @@
+# frozen_string_literal: true
+
+class DeploymentsFinder
+ attr_reader :project, :params
+
+ ALLOWED_SORT_VALUES = %w[id iid created_at updated_at ref].freeze
+ DEFAULT_SORT_VALUE = 'id'.freeze
+
+ ALLOWED_SORT_DIRECTIONS = %w[asc desc].freeze
+ DEFAULT_SORT_DIRECTION = 'asc'.freeze
+
+ def initialize(project, params = {})
+ @project = project
+ @params = params
+ end
+
+ def execute
+ items = init_collection
+ items = by_updated_at(items)
+ sort(items)
+ end
+
+ private
+
+ # rubocop: disable CodeReuse/ActiveRecord
+ def init_collection
+ project
+ .deployments
+ .includes(
+ :user,
+ environment: [],
+ deployable: {
+ job_artifacts: [],
+ pipeline: {
+ project: {
+ route: [],
+ namespace: :route
+ }
+ },
+ project: {
+ namespace: :route
+ }
+ }
+ )
+ end
+ # rubocop: enable CodeReuse/ActiveRecord
+
+ # rubocop: disable CodeReuse/ActiveRecord
+ def sort(items)
+ items.order(sort_params)
+ end
+ # rubocop: enable CodeReuse/ActiveRecord
+
+ def by_updated_at(items)
+ items = items.updated_before(params[:updated_before]) if params[:updated_before].present?
+ items = items.updated_after(params[:updated_after]) if params[:updated_after].present?
+
+ items
+ end
+
+ def sort_params
+ order_by = ALLOWED_SORT_VALUES.include?(params[:order_by]) ? params[:order_by] : DEFAULT_SORT_VALUE
+ order_direction = ALLOWED_SORT_DIRECTIONS.include?(params[:sort]) ? params[:sort] : DEFAULT_SORT_DIRECTION
+
+ { order_by => order_direction }.tap do |sort_values|
+ sort_values['id'] = 'desc' if sort_values['updated_at']
+ sort_values['id'] = sort_values.delete('created_at') if sort_values['created_at'] # Sorting by `id` produces the same result as sorting by `created_at`
+ end
+ end
+end
diff --git a/app/finders/group_members_finder.rb b/app/finders/group_members_finder.rb
index 165d9adae31..d8739c350e4 100644
--- a/app/finders/group_members_finder.rb
+++ b/app/finders/group_members_finder.rb
@@ -6,15 +6,15 @@ class GroupMembersFinder < UnionFinder
end
# rubocop: disable CodeReuse/ActiveRecord
- def execute(include_descendants: false)
+ def execute(include_relations: [:inherited, :direct])
group_members = @group.members
relations = []
- return group_members unless @group.parent || include_descendants
+ return group_members if include_relations == [:direct]
- relations << group_members
+ relations << group_members if include_relations.include?(:direct)
- if @group.parent
+ if include_relations.include?(:inherited) && @group.parent
parents_members = GroupMember.non_request
.where(source_id: @group.ancestors.select(:id))
.where.not(user_id: @group.users.select(:id))
@@ -22,7 +22,7 @@ class GroupMembersFinder < UnionFinder
relations << parents_members
end
- if include_descendants
+ if include_relations.include?(:descendants)
descendant_members = GroupMember.non_request
.where(source_id: @group.descendants.select(:id))
.where.not(user_id: @group.users.select(:id))
diff --git a/app/finders/group_projects_finder.rb b/app/finders/group_projects_finder.rb
index 8ab5072fdc6..dd8b2f29425 100644
--- a/app/finders/group_projects_finder.rb
+++ b/app/finders/group_projects_finder.rb
@@ -11,6 +11,7 @@
# options:
# only_owned: boolean
# only_shared: boolean
+# limit: integer
# params:
# sort: string
# visibility_level: int
@@ -20,6 +21,8 @@
# non_archived: boolean
#
class GroupProjectsFinder < ProjectsFinder
+ DEFAULT_PROJECTS_LIMIT = 100
+
attr_reader :group, :options
def initialize(group:, params: {}, options: {}, current_user: nil, project_ids_relation: nil)
@@ -32,8 +35,19 @@ class GroupProjectsFinder < ProjectsFinder
@options = options
end
+ def execute
+ collection = super
+ limit(collection)
+ end
+
private
+ def limit(collection)
+ limit = options[:limit]
+
+ limit.present? ? collection.with_limit(limit) : collection
+ end
+
def init_collection
projects = if current_user
collection_with_user
diff --git a/app/finders/groups_finder.rb b/app/finders/groups_finder.rb
index 7d419103b1c..54715557399 100644
--- a/app/finders/groups_finder.rb
+++ b/app/finders/groups_finder.rb
@@ -45,7 +45,7 @@ class GroupsFinder < UnionFinder
def all_groups
return [owned_groups] if params[:owned]
return [groups_with_min_access_level] if min_access_level?
- return [Group.all] if current_user&.full_private_access? && all_available?
+ return [Group.all] if current_user&.can_read_all_resources? && all_available?
groups = []
groups << Gitlab::ObjectHierarchy.new(groups_for_ancestors, groups_for_descendants).all_objects if current_user
diff --git a/app/finders/issuable_finder.rb b/app/finders/issuable_finder.rb
index dfddd32d7df..e3ea81d5564 100644
--- a/app/finders/issuable_finder.rb
+++ b/app/finders/issuable_finder.rb
@@ -13,6 +13,7 @@
# group_id: integer
# project_id: integer
# milestone_title: string
+# release_tag: string
# author_id: integer
# author_username: string
# assignee_id: integer or 'None' or 'Any'
@@ -59,6 +60,7 @@ class IssuableFinder
author_username
label_name
milestone_title
+ release_tag
my_reaction_emoji
search
in
@@ -126,6 +128,7 @@ class IssuableFinder
items = by_non_archived(items)
items = by_iids(items)
items = by_milestone(items)
+ items = by_release(items)
items = by_label(items)
by_my_reaction_emoji(items)
end
@@ -364,6 +367,10 @@ class IssuableFinder
end
end
+ def releases?
+ params[:release_tag].present?
+ end
+
private
def force_cte?
@@ -570,6 +577,18 @@ class IssuableFinder
end
# rubocop: enable CodeReuse/ActiveRecord
+ def by_release(items)
+ return items unless releases?
+
+ if filter_by_no_release?
+ items.without_release
+ elsif filter_by_any_release?
+ items.any_release
+ else
+ items.with_release(params[:release_tag], params[:project_id])
+ end
+ end
+
def filter_by_no_milestone?
# Accepts `No Milestone` for compatibility
params[:milestone_title].to_s.downcase == FILTER_NONE || params[:milestone_title] == Milestone::None.title
@@ -588,6 +607,14 @@ class IssuableFinder
params[:milestone_title] == Milestone::Started.name
end
+ def filter_by_no_release?
+ params[:release_tag].to_s.downcase == FILTER_NONE
+ end
+
+ def filter_by_any_release?
+ params[:release_tag].to_s.downcase == FILTER_ANY
+ end
+
def by_label(items)
return items unless labels?
diff --git a/app/finders/issues_finder.rb b/app/finders/issues_finder.rb
index 74e89a1e66c..641b4422db9 100644
--- a/app/finders/issues_finder.rb
+++ b/app/finders/issues_finder.rb
@@ -127,7 +127,7 @@ class IssuesFinder < IssuableFinder
return @user_can_see_all_confidential_issues if defined?(@user_can_see_all_confidential_issues)
return @user_can_see_all_confidential_issues = false if current_user.blank?
- return @user_can_see_all_confidential_issues = true if current_user.full_private_access?
+ return @user_can_see_all_confidential_issues = true if current_user.can_read_all_resources?
@user_can_see_all_confidential_issues =
if project? && project
diff --git a/app/finders/jobs_finder.rb b/app/finders/jobs_finder.rb
new file mode 100644
index 00000000000..bac18e69618
--- /dev/null
+++ b/app/finders/jobs_finder.rb
@@ -0,0 +1,51 @@
+# frozen_string_literal: true
+
+class JobsFinder
+ include Gitlab::Allowable
+
+ def initialize(current_user:, project: nil, params: {})
+ @current_user = current_user
+ @project = project
+ @params = params
+ end
+
+ def execute
+ builds = init_collection.order_id_desc
+ filter_by_scope(builds)
+ rescue Gitlab::Access::AccessDeniedError
+ Ci::Build.none
+ end
+
+ private
+
+ attr_reader :current_user, :project, :params
+
+ def init_collection
+ project ? project_builds : all_builds
+ end
+
+ def all_builds
+ raise Gitlab::Access::AccessDeniedError unless current_user&.admin?
+
+ Ci::Build.all
+ end
+
+ def project_builds
+ raise Gitlab::Access::AccessDeniedError unless can?(current_user, :read_build, project)
+
+ project.builds.relevant
+ end
+
+ def filter_by_scope(builds)
+ case params[:scope]
+ when 'pending'
+ builds.pending.reverse_order
+ when 'running'
+ builds.running.reverse_order
+ when 'finished'
+ builds.finished
+ else
+ builds
+ end
+ end
+end
diff --git a/app/finders/keys_finder.rb b/app/finders/keys_finder.rb
new file mode 100644
index 00000000000..6fd914c88cd
--- /dev/null
+++ b/app/finders/keys_finder.rb
@@ -0,0 +1,84 @@
+# frozen_string_literal: true
+class KeysFinder
+ InvalidFingerprint = Class.new(StandardError)
+ GitLabAccessDeniedError = Class.new(StandardError)
+
+ FINGERPRINT_ATTRIBUTES = {
+ 'sha256' => 'fingerprint_sha256',
+ 'md5' => 'fingerprint'
+ }.freeze
+
+ def initialize(current_user, params)
+ @current_user = current_user
+ @params = params
+ end
+
+ def execute
+ raise GitLabAccessDeniedError unless current_user.admin?
+
+ keys = by_key_type
+ keys = by_user(keys)
+ keys = sort(keys)
+
+ by_fingerprint(keys)
+ end
+
+ private
+
+ attr_reader :current_user, :params
+
+ def by_key_type
+ if params[:key_type] == 'ssh'
+ Key.regular_keys
+ else
+ Key.all
+ end
+ end
+
+ def sort(keys)
+ keys.order_last_used_at_desc
+ end
+
+ def by_user(keys)
+ return keys unless params[:user]
+
+ keys.for_user(params[:user])
+ end
+
+ def by_fingerprint(keys)
+ return keys unless params[:fingerprint].present?
+ raise InvalidFingerprint unless valid_fingerprint_param?
+
+ keys.where(fingerprint_query).first # rubocop: disable CodeReuse/ActiveRecord
+ end
+
+ def valid_fingerprint_param?
+ if fingerprint_type == "sha256"
+ Base64.decode64(fingerprint).length == 32
+ else
+ fingerprint =~ /^(\h{2}:){15}\h{2}/
+ end
+ end
+
+ def fingerprint_query
+ fingerprint_attribute = FINGERPRINT_ATTRIBUTES[fingerprint_type]
+
+ Key.arel_table[fingerprint_attribute].eq(fingerprint)
+ end
+
+ def fingerprint_type
+ if params[:fingerprint].start_with?(/sha256:|SHA256:/)
+ "sha256"
+ else
+ "md5"
+ end
+ end
+
+ def fingerprint
+ if fingerprint_type == "sha256"
+ params[:fingerprint].gsub(/sha256:|SHA256:/, "")
+ else
+ params[:fingerprint]
+ end
+ end
+end
diff --git a/app/finders/members_finder.rb b/app/finders/members_finder.rb
index e8c7f9622a9..a919ff5bf8a 100644
--- a/app/finders/members_finder.rb
+++ b/app/finders/members_finder.rb
@@ -9,14 +9,18 @@ class MembersFinder
@group = project.group
end
- def execute(include_descendants: false, include_invited_groups_members: false)
+ def execute(include_relations: [:inherited, :direct])
project_members = project.project_members
project_members = project_members.non_invite unless can?(current_user, :admin_project, project)
- union_members = group_union_members(include_descendants, include_invited_groups_members)
+ return project_members if include_relations == [:direct]
+
+ union_members = group_union_members(include_relations)
+
+ union_members << project_members if include_relations.include?(:direct)
if union_members.any?
- distinct_union_of_members(union_members << project_members)
+ distinct_union_of_members(union_members)
else
project_members
end
@@ -28,15 +32,17 @@ class MembersFinder
private
- def group_union_members(include_descendants, include_invited_groups_members)
+ def group_union_members(include_relations)
[].tap do |members|
- members << direct_group_members(include_descendants) if group
- members << project_invited_groups_members if include_invited_groups_members
+ members << direct_group_members(include_relations.include?(:descendants)) if group
+ members << project_invited_groups_members if include_relations.include?(:invited_groups_members)
end
end
def direct_group_members(include_descendants)
- GroupMembersFinder.new(group).execute(include_descendants: include_descendants).non_invite # rubocop: disable CodeReuse/Finder
+ requested_relations = [:inherited, :direct]
+ requested_relations << :descendants if include_descendants
+ GroupMembersFinder.new(group).execute(include_relations: requested_relations).non_invite # rubocop: disable CodeReuse/Finder
end
def project_invited_groups_members
diff --git a/app/finders/merge_request_target_project_finder.rb b/app/finders/merge_request_target_project_finder.rb
index 5f0589f6c8b..85a73e0c6ff 100644
--- a/app/finders/merge_request_target_project_finder.rb
+++ b/app/finders/merge_request_target_project_finder.rb
@@ -11,15 +11,23 @@ class MergeRequestTargetProjectFinder
end
# rubocop: disable CodeReuse/ActiveRecord
- def execute
- if @source_project.fork_network
- @source_project.fork_network.projects
- .public_or_visible_to_user(current_user)
- .non_archived
- .with_feature_available_for_user(:merge_requests, current_user)
+ def execute(include_routes: false)
+ if source_project.fork_network
+ include_routes ? projects.inc_routes : projects
else
Project.where(id: source_project)
end
end
# rubocop: enable CodeReuse/ActiveRecord
+
+ private
+
+ def projects
+ source_project
+ .fork_network
+ .projects
+ .public_or_visible_to_user(current_user)
+ .non_archived
+ .with_feature_available_for_user(:merge_requests, current_user)
+ end
end
diff --git a/app/finders/merge_requests_finder.rb b/app/finders/merge_requests_finder.rb
index 1c9c7ec68d0..275a01330bf 100644
--- a/app/finders/merge_requests_finder.rb
+++ b/app/finders/merge_requests_finder.rb
@@ -12,6 +12,7 @@
# group_id: integer
# project_id: integer
# milestone_title: string
+# release_tag: string
# author_id: integer
# assignee_id: integer
# search: string
diff --git a/app/finders/personal_access_tokens_finder.rb b/app/finders/personal_access_tokens_finder.rb
index bd95dcd323f..7b15a3b0c10 100644
--- a/app/finders/personal_access_tokens_finder.rb
+++ b/app/finders/personal_access_tokens_finder.rb
@@ -13,18 +13,26 @@ class PersonalAccessTokensFinder
tokens = PersonalAccessToken.all
tokens = by_user(tokens)
tokens = by_impersonation(tokens)
- by_state(tokens)
+ tokens = by_state(tokens)
+
+ sort(tokens)
end
private
- # rubocop: disable CodeReuse/ActiveRecord
def by_user(tokens)
return tokens unless @params[:user]
- tokens.where(user: @params[:user])
+ tokens.for_user(@params[:user])
+ end
+
+ def sort(tokens)
+ available_sort_orders = PersonalAccessToken.simple_sorts.keys
+
+ return tokens unless available_sort_orders.include?(params[:sort])
+
+ tokens.order_by(params[:sort])
end
- # rubocop: enable CodeReuse/ActiveRecord
def by_impersonation(tokens)
case @params[:impersonation]
diff --git a/app/finders/pipelines_finder.rb b/app/finders/pipelines_finder.rb
index f5aadc42ff0..5a0d53d9683 100644
--- a/app/finders/pipelines_finder.rb
+++ b/app/finders/pipelines_finder.rb
@@ -3,7 +3,7 @@
class PipelinesFinder
attr_reader :project, :pipelines, :params, :current_user
- ALLOWED_INDEXED_COLUMNS = %w[id status ref user_id].freeze
+ ALLOWED_INDEXED_COLUMNS = %w[id status ref updated_at user_id].freeze
def initialize(project, current_user, params = {})
@project = project
@@ -25,6 +25,7 @@ class PipelinesFinder
items = by_name(items)
items = by_username(items)
items = by_yaml_errors(items)
+ items = by_updated_at(items)
sort_items(items)
end
@@ -128,6 +129,13 @@ class PipelinesFinder
end
# rubocop: enable CodeReuse/ActiveRecord
+ def by_updated_at(items)
+ items = items.updated_before(params[:updated_before]) if params[:updated_before].present?
+ items = items.updated_after(params[:updated_after]) if params[:updated_after].present?
+
+ items
+ end
+
# rubocop: disable CodeReuse/ActiveRecord
def sort_items(items)
order_by = if ALLOWED_INDEXED_COLUMNS.include?(params[:order_by])
diff --git a/app/finders/projects_finder.rb b/app/finders/projects_finder.rb
index 42a15234e57..ac18c17dc61 100644
--- a/app/finders/projects_finder.rb
+++ b/app/finders/projects_finder.rb
@@ -79,7 +79,7 @@ class ProjectsFinder < UnionFinder
elsif min_access_level?
current_user.authorized_projects(params[:min_access_level])
else
- if private_only?
+ if private_only? || impossible_visibility_level?
current_user.authorized_projects
else
Project.public_or_visible_to_user(current_user)
@@ -96,6 +96,30 @@ class ProjectsFinder < UnionFinder
end
end
+ # This is an optimization - surprisingly PostgreSQL does not optimize
+ # for this.
+ #
+ # If the default visiblity level and desired visiblity level filter cancels
+ # each other out, don't use the SQL clause for visibility level in
+ # `Project.public_or_visible_to_user`. In fact, this then becames equivalent
+ # to just authorized projects for the user.
+ #
+ # E.g.
+ # (EXISTS(<authorized_projects>) OR projects.visibility_level IN (10,20))
+ # AND "projects"."visibility_level" = 0
+ #
+ # is essentially
+ # EXISTS(<authorized_projects>) AND "projects"."visibility_level" = 0
+ #
+ # See https://gitlab.com/gitlab-org/gitlab/issues/37007
+ def impossible_visibility_level?
+ return unless params[:visibility_level].present?
+
+ public_visibility_levels = Gitlab::VisibilityLevel.levels_for_user(current_user)
+
+ !public_visibility_levels.include?(params[:visibility_level])
+ end
+
def owned_projects?
params[:owned].present?
end
diff --git a/app/finders/snippets_finder.rb b/app/finders/snippets_finder.rb
index bd6b6190fb5..5819f279eaa 100644
--- a/app/finders/snippets_finder.rb
+++ b/app/finders/snippets_finder.rb
@@ -40,15 +40,14 @@
# Any other value will be ignored.
class SnippetsFinder < UnionFinder
include FinderMethods
+ include Gitlab::Utils::StrongMemoize
- attr_accessor :current_user, :project, :author, :scope, :explore
+ attr_accessor :current_user, :params
+ delegate :explore, :only_personal, :only_project, :scope, to: :params
def initialize(current_user = nil, params = {})
@current_user = current_user
- @project = params[:project]
- @author = params[:author]
- @scope = params[:scope].to_s
- @explore = params[:explore]
+ @params = OpenStruct.new(params)
if project && author
raise(
@@ -60,8 +59,15 @@ class SnippetsFinder < UnionFinder
end
def execute
- base = init_collection
- base.with_optional_visibility(visibility_from_scope).fresh
+ # The snippet query can be expensive, therefore if the
+ # author or project params have been passed and they don't
+ # exist, it's better to return
+ return Snippet.none if author.nil? && params[:author].present?
+ return Snippet.none if project.nil? && params[:project].present?
+
+ items = init_collection
+ items = by_ids(items)
+ items.with_optional_visibility(visibility_from_scope).fresh
end
private
@@ -69,10 +75,12 @@ class SnippetsFinder < UnionFinder
def init_collection
if explore
snippets_for_explore
+ elsif only_personal
+ personal_snippets
elsif project
snippets_for_a_single_project
else
- snippets_for_multiple_projects
+ snippets_for_personal_and_multiple_projects
end
end
@@ -96,8 +104,9 @@ class SnippetsFinder < UnionFinder
#
# Each collection is constructed in isolation, allowing for greater control
# over the resulting SQL query.
- def snippets_for_multiple_projects
- queries = [personal_snippets]
+ def snippets_for_personal_and_multiple_projects
+ queries = []
+ queries << personal_snippets unless only_project
if Ability.allowed?(current_user, :read_cross_project)
queries << snippets_of_visible_projects
@@ -158,7 +167,7 @@ class SnippetsFinder < UnionFinder
end
def visibility_from_scope
- case scope
+ case scope.to_s
when 'are_private'
Snippet::PRIVATE
when 'are_internal'
@@ -169,6 +178,28 @@ class SnippetsFinder < UnionFinder
nil
end
end
+
+ def by_ids(items)
+ return items unless params[:ids].present?
+
+ items.id_in(params[:ids])
+ end
+
+ def author
+ strong_memoize(:author) do
+ next unless params[:author].present?
+
+ params[:author].is_a?(User) ? params[:author] : User.find_by_id(params[:author])
+ end
+ end
+
+ def project
+ strong_memoize(:project) do
+ next unless params[:project].present?
+
+ params[:project].is_a?(Project) ? params[:project] : Project.find_by_id(params[:project])
+ end
+ end
end
SnippetsFinder.prepend_if_ee('EE::SnippetsFinder')
diff --git a/app/finders/user_finder.rb b/app/finders/user_finder.rb
index 1dd1a27437e..556be4c4338 100644
--- a/app/finders/user_finder.rb
+++ b/app/finders/user_finder.rb
@@ -52,12 +52,6 @@ class UserFinder
end
end
- def find_by_ssh_key_id
- return unless input_is_id?
-
- User.find_by_ssh_key_id(@username_or_id)
- end
-
def input_is_id?
@username_or_id.is_a?(Numeric) || @username_or_id =~ /^\d+$/
end
diff --git a/app/graphql/mutations/issues/base.rb b/app/graphql/mutations/issues/base.rb
new file mode 100644
index 00000000000..b7fa234a50b
--- /dev/null
+++ b/app/graphql/mutations/issues/base.rb
@@ -0,0 +1,34 @@
+# frozen_string_literal: true
+
+module Mutations
+ module Issues
+ class Base < BaseMutation
+ include Mutations::ResolvesProject
+
+ argument :project_path, GraphQL::ID_TYPE,
+ required: true,
+ description: "The project the issue to mutate is in"
+
+ argument :iid, GraphQL::STRING_TYPE,
+ required: true,
+ description: "The iid of the issue to mutate"
+
+ field :issue,
+ Types::IssueType,
+ null: true,
+ description: "The issue after mutation"
+
+ authorize :update_issue
+
+ private
+
+ def find_object(project_path:, iid:)
+ project = resolve_project(full_path: project_path)
+ resolver = Resolvers::IssuesResolver
+ .single.new(object: project, context: context)
+
+ resolver.resolve(iid: iid)
+ end
+ end
+ end
+end
diff --git a/app/graphql/mutations/issues/set_confidential.rb b/app/graphql/mutations/issues/set_confidential.rb
new file mode 100644
index 00000000000..0fff5518665
--- /dev/null
+++ b/app/graphql/mutations/issues/set_confidential.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+module Mutations
+ module Issues
+ class SetConfidential < Base
+ graphql_name 'IssueSetConfidential'
+
+ argument :confidential,
+ GraphQL::BOOLEAN_TYPE,
+ required: true,
+ description: 'Whether or not to set the issue as a confidential.'
+
+ def resolve(project_path:, iid:, confidential:)
+ issue = authorized_find!(project_path: project_path, iid: iid)
+ project = issue.project
+
+ ::Issues::UpdateService.new(project, current_user, confidential: confidential)
+ .execute(issue)
+
+ {
+ issue: issue,
+ errors: issue.errors.full_messages
+ }
+ end
+ end
+ end
+end
diff --git a/app/graphql/mutations/issues/set_due_date.rb b/app/graphql/mutations/issues/set_due_date.rb
new file mode 100644
index 00000000000..1855c6f053b
--- /dev/null
+++ b/app/graphql/mutations/issues/set_due_date.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+module Mutations
+ module Issues
+ class SetDueDate < Base
+ graphql_name 'IssueSetDueDate'
+
+ argument :due_date,
+ Types::TimeType,
+ required: true,
+ description: 'The desired due date for the issue'
+
+ def resolve(project_path:, iid:, due_date:)
+ issue = authorized_find!(project_path: project_path, iid: iid)
+ project = issue.project
+
+ ::Issues::UpdateService.new(project, current_user, due_date: due_date)
+ .execute(issue)
+
+ {
+ issue: issue,
+ errors: issue.errors.full_messages
+ }
+ end
+ end
+ end
+end
diff --git a/app/graphql/mutations/snippets/base.rb b/app/graphql/mutations/snippets/base.rb
new file mode 100644
index 00000000000..9dc6d49774e
--- /dev/null
+++ b/app/graphql/mutations/snippets/base.rb
@@ -0,0 +1,30 @@
+# frozen_string_literal: true
+
+module Mutations
+ module Snippets
+ class Base < BaseMutation
+ field :snippet,
+ Types::SnippetType,
+ null: true,
+ description: 'The snippet after mutation'
+
+ private
+
+ def find_object(id:)
+ GitlabSchema.object_from_id(id)
+ end
+
+ def authorized_resource?(snippet)
+ Ability.allowed?(context[:current_user], ability_for(snippet), snippet)
+ end
+
+ def ability_for(snippet)
+ "#{ability_name}_#{snippet.to_ability_name}".to_sym
+ end
+
+ def ability_name
+ raise NotImplementedError
+ end
+ end
+ end
+end
diff --git a/app/graphql/mutations/snippets/create.rb b/app/graphql/mutations/snippets/create.rb
new file mode 100644
index 00000000000..fe1f543ea1a
--- /dev/null
+++ b/app/graphql/mutations/snippets/create.rb
@@ -0,0 +1,77 @@
+# frozen_string_literal: true
+
+module Mutations
+ module Snippets
+ class Create < BaseMutation
+ include Mutations::ResolvesProject
+
+ graphql_name 'CreateSnippet'
+
+ field :snippet,
+ Types::SnippetType,
+ null: true,
+ description: 'The snippet after mutation'
+
+ argument :title, GraphQL::STRING_TYPE,
+ required: true,
+ description: 'Title of the snippet'
+
+ argument :file_name, GraphQL::STRING_TYPE,
+ required: false,
+ description: 'File name of the snippet'
+
+ argument :content, GraphQL::STRING_TYPE,
+ required: true,
+ description: 'Content of the snippet'
+
+ argument :description, GraphQL::STRING_TYPE,
+ required: false,
+ description: 'Description of the snippet'
+
+ argument :visibility_level, Types::VisibilityLevelsEnum,
+ description: 'The visibility level of the snippet',
+ required: true
+
+ argument :project_path, GraphQL::ID_TYPE,
+ required: false,
+ description: 'The project full path the snippet is associated with'
+
+ def resolve(args)
+ project_path = args.delete(:project_path)
+
+ if project_path.present?
+ project = find_project!(project_path: project_path)
+ elsif !can_create_personal_snippet?
+ raise_resource_not_avaiable_error!
+ end
+
+ snippet = CreateSnippetService.new(project,
+ context[:current_user],
+ args).execute
+
+ {
+ snippet: snippet.valid? ? snippet : nil,
+ errors: errors_on_object(snippet)
+ }
+ end
+
+ private
+
+ def find_project!(project_path:)
+ authorized_find!(full_path: project_path)
+ end
+
+ def find_object(full_path:)
+ resolve_project(full_path: full_path)
+ end
+
+ def authorized_resource?(project)
+ Ability.allowed?(context[:current_user], :create_project_snippet, project)
+ end
+
+ def can_create_personal_snippet?
+ Ability.allowed?(context[:current_user], :create_personal_snippet)
+ end
+ end
+ end
+end
diff --git a/app/graphql/mutations/snippets/destroy.rb b/app/graphql/mutations/snippets/destroy.rb
new file mode 100644
index 00000000000..115fcfd6488
--- /dev/null
+++ b/app/graphql/mutations/snippets/destroy.rb
@@ -0,0 +1,33 @@
+# frozen_string_literal: true
+
+module Mutations
+ module Snippets
+ class Destroy < Base
+ graphql_name 'DestroySnippet'
+
+ ERROR_MSG = 'Error deleting the snippet'
+
+ argument :id,
+ GraphQL::ID_TYPE,
+ required: true,
+ description: 'The global id of the snippet to destroy'
+
+ def resolve(id:)
+ snippet = authorized_find!(id: id)
+
+ result = snippet.destroy
+ errors = result ? [] : [ERROR_MSG]
+
+ {
+ errors: errors
+ }
+ end
+
+ private
+
+ def ability_name
+ "admin"
+ end
+ end
+ end
+end
diff --git a/app/graphql/mutations/snippets/mark_as_spam.rb b/app/graphql/mutations/snippets/mark_as_spam.rb
new file mode 100644
index 00000000000..260a9753f76
--- /dev/null
+++ b/app/graphql/mutations/snippets/mark_as_spam.rb
@@ -0,0 +1,39 @@
+# frozen_string_literal: true
+
+module Mutations
+ module Snippets
+ class MarkAsSpam < Base
+ graphql_name 'MarkAsSpamSnippet'
+
+ argument :id,
+ GraphQL::ID_TYPE,
+ required: true,
+ description: 'The global id of the snippet to update'
+
+ def resolve(id:)
+ snippet = authorized_find!(id: id)
+
+ result = mark_as_spam(snippet)
+ errors = result ? [] : ['Error with Akismet. Please check the logs for more info.']
+
+ {
+ errors: errors
+ }
+ end
+
+ private
+
+ def mark_as_spam(snippet)
+ SpamService.new(snippet).mark_as_spam!
+ end
+
+ def authorized_resource?(snippet)
+ super && snippet.submittable_as_spam_by?(context[:current_user])
+ end
+
+ def ability_name
+ "admin"
+ end
+ end
+ end
+end
diff --git a/app/graphql/mutations/snippets/update.rb b/app/graphql/mutations/snippets/update.rb
new file mode 100644
index 00000000000..27c232bc7f8
--- /dev/null
+++ b/app/graphql/mutations/snippets/update.rb
@@ -0,0 +1,54 @@
+# frozen_string_literal: true
+
+module Mutations
+ module Snippets
+ class Update < Base
+ graphql_name 'UpdateSnippet'
+
+ argument :id,
+ GraphQL::ID_TYPE,
+ required: true,
+ description: 'The global id of the snippet to update'
+
+ argument :title, GraphQL::STRING_TYPE,
+ required: false,
+ description: 'Title of the snippet'
+
+ argument :file_name, GraphQL::STRING_TYPE,
+ required: false,
+ description: 'File name of the snippet'
+
+ argument :content, GraphQL::STRING_TYPE,
+ required: false,
+ description: 'Content of the snippet'
+
+ argument :description, GraphQL::STRING_TYPE,
+ required: false,
+ description: 'Description of the snippet'
+
+ argument :visibility_level, Types::VisibilityLevelsEnum,
+ description: 'The visibility level of the snippet',
+ required: false
+
+ def resolve(args)
+ snippet = authorized_find!(id: args.delete(:id))
+
+ result = UpdateSnippetService.new(snippet.project,
+ context[:current_user],
+ snippet,
+ args).execute
+
+ {
+ snippet: result ? snippet : snippet.reset,
+ errors: errors_on_object(snippet)
+ }
+ end
+
+ private
+
+ def ability_name
+ "update"
+ end
+ end
+ end
+end
diff --git a/app/graphql/mutations/todos/base.rb b/app/graphql/mutations/todos/base.rb
index b6c7b320be1..2a72019fbac 100644
--- a/app/graphql/mutations/todos/base.rb
+++ b/app/graphql/mutations/todos/base.rb
@@ -9,6 +9,12 @@ module Mutations
GitlabSchema.object_from_id(id)
end
+ def map_to_global_ids(ids)
+ return [] if ids.blank?
+
+ ids.map { |id| to_global_id(id) }
+ end
+
def to_global_id(id)
::URI::GID.build(app: GlobalID.app, model_name: Todo.name, model_id: id, params: nil).to_s
end
diff --git a/app/graphql/mutations/todos/mark_all_done.rb b/app/graphql/mutations/todos/mark_all_done.rb
new file mode 100644
index 00000000000..5694985717c
--- /dev/null
+++ b/app/graphql/mutations/todos/mark_all_done.rb
@@ -0,0 +1,35 @@
+# frozen_string_literal: true
+
+module Mutations
+ module Todos
+ class MarkAllDone < ::Mutations::Todos::Base
+ graphql_name 'TodosMarkAllDone'
+
+ authorize :update_user
+
+ field :updated_ids,
+ [GraphQL::ID_TYPE],
+ null: false,
+ description: 'Ids of the updated todos'
+
+ def resolve
+ authorize!(current_user)
+
+ updated_ids = mark_all_todos_done
+
+ {
+ updated_ids: map_to_global_ids(updated_ids),
+ errors: []
+ }
+ end
+
+ private
+
+ def mark_all_todos_done
+ return [] unless current_user
+
+ TodoService.new.mark_all_todos_as_done_by_user(current_user)
+ end
+ end
+ end
+end
diff --git a/app/graphql/mutations/todos/mark_done.rb b/app/graphql/mutations/todos/mark_done.rb
index 5483708b5c6..d738e387c43 100644
--- a/app/graphql/mutations/todos/mark_done.rb
+++ b/app/graphql/mutations/todos/mark_done.rb
@@ -16,22 +16,21 @@ module Mutations
null: false,
description: 'The requested todo'
- # rubocop: disable CodeReuse/ActiveRecord
def resolve(id:)
todo = authorized_find!(id: id)
- mark_done(Todo.where(id: todo.id)) unless todo.done?
+
+ mark_done(todo)
{
todo: todo.reset,
errors: errors_on_object(todo)
}
end
- # rubocop: enable CodeReuse/ActiveRecord
private
def mark_done(todo)
- TodoService.new.mark_todos_as_done(todo, current_user)
+ TodoService.new.mark_todo_as_done(todo, current_user)
end
end
end
diff --git a/app/graphql/mutations/todos/restore.rb b/app/graphql/mutations/todos/restore.rb
new file mode 100644
index 00000000000..c4597bd84a2
--- /dev/null
+++ b/app/graphql/mutations/todos/restore.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+module Mutations
+ module Todos
+ class Restore < ::Mutations::Todos::Base
+ graphql_name 'TodoRestore'
+
+ authorize :update_todo
+
+ argument :id,
+ GraphQL::ID_TYPE,
+ required: true,
+ description: 'The global id of the todo to restore'
+
+ field :todo, Types::TodoType,
+ null: false,
+ description: 'The requested todo'
+
+ def resolve(id:)
+ todo = authorized_find!(id: id)
+ restore(todo.id) if todo.done?
+
+ {
+ todo: todo.reset,
+ errors: errors_on_object(todo)
+ }
+ end
+
+ private
+
+ def restore(id)
+ TodoService.new.mark_todos_as_pending_by_ids([id], current_user)
+ end
+ end
+ end
+end
diff --git a/app/graphql/resolvers/base_resolver.rb b/app/graphql/resolvers/base_resolver.rb
index 85d6b377934..62dcc41dd9c 100644
--- a/app/graphql/resolvers/base_resolver.rb
+++ b/app/graphql/resolvers/base_resolver.rb
@@ -2,6 +2,8 @@
module Resolvers
class BaseResolver < GraphQL::Schema::Resolver
+ extend ::Gitlab::Utils::Override
+
def self.single
@single ||= Class.new(self) do
def resolve(**args)
@@ -36,5 +38,13 @@ module Resolvers
# complexity difference is minimal in this case.
[args[:iid], args[:iids]].any? ? 0 : 0.01
end
+
+ override :object
+ def object
+ super.tap do |obj|
+ # If the field this resolver is used in is wrapped in a presenter, go back to it's subject
+ break obj.subject if obj.is_a?(Gitlab::View::Presenter::Base)
+ end
+ end
end
end
diff --git a/app/graphql/resolvers/concerns/resolves_snippets.rb b/app/graphql/resolvers/concerns/resolves_snippets.rb
new file mode 100644
index 00000000000..483372bbf63
--- /dev/null
+++ b/app/graphql/resolvers/concerns/resolves_snippets.rb
@@ -0,0 +1,57 @@
+# frozen_string_literal: true
+
+module ResolvesSnippets
+ extend ActiveSupport::Concern
+
+ included do
+ type Types::SnippetType, null: false
+
+ argument :ids, [GraphQL::ID_TYPE],
+ required: false,
+ description: 'Array of global snippet ids, e.g., "gid://gitlab/ProjectSnippet/1"'
+
+ argument :visibility, Types::Snippets::VisibilityScopesEnum,
+ required: false,
+ description: 'The visibility of the snippet'
+ end
+
+ def resolve(**args)
+ resolve_snippets(args)
+ end
+
+ private
+
+ def resolve_snippets(args)
+ SnippetsFinder.new(context[:current_user], snippet_finder_params(args)).execute
+ end
+
+ def snippet_finder_params(args)
+ {
+ ids: resolve_ids(args[:ids]),
+ scope: args[:visibility]
+ }.merge(options_by_type(args[:type]))
+ end
+
+ def resolve_ids(ids)
+ Array.wrap(ids).map { |id| resolve_gid(id, :id) }
+ end
+
+ def resolve_gid(gid, argument)
+ return unless gid.present?
+
+ GlobalID.parse(gid)&.model_id.tap do |id|
+ raise Gitlab::Graphql::Errors::ArgumentError, "Invalid global id format for param #{argument}" if id.nil?
+ end
+ end
+
+ def options_by_type(type)
+ case type
+ when 'personal'
+ { only_personal: true }
+ when 'project'
+ { only_project: true }
+ else
+ {}
+ end
+ end
+end
diff --git a/app/graphql/resolvers/echo_resolver.rb b/app/graphql/resolvers/echo_resolver.rb
index 2ce55544254..fe0b1893a23 100644
--- a/app/graphql/resolvers/echo_resolver.rb
+++ b/app/graphql/resolvers/echo_resolver.rb
@@ -2,9 +2,11 @@
module Resolvers
class EchoResolver < BaseResolver
- argument :text, GraphQL::STRING_TYPE, required: true # rubocop:disable Graphql/Descriptions
description 'Testing endpoint to validate the API with'
+ argument :text, GraphQL::STRING_TYPE, required: true,
+ description: 'Text to echo back'
+
def resolve(**args)
username = context[:current_user]&.username
diff --git a/app/graphql/resolvers/error_tracking/sentry_detailed_error_resolver.rb b/app/graphql/resolvers/error_tracking/sentry_detailed_error_resolver.rb
new file mode 100644
index 00000000000..63455ff3acb
--- /dev/null
+++ b/app/graphql/resolvers/error_tracking/sentry_detailed_error_resolver.rb
@@ -0,0 +1,28 @@
+# frozen_string_literal: true
+
+module Resolvers
+ module ErrorTracking
+ class SentryDetailedErrorResolver < BaseResolver
+ argument :id, GraphQL::ID_TYPE,
+ required: true,
+ description: 'ID of the Sentry issue'
+
+ def resolve(**args)
+ project = object
+ current_user = context[:current_user]
+ issue_id = GlobalID.parse(args[:id]).model_id
+
+ # Get data from Sentry
+ response = ::ErrorTracking::IssueDetailsService.new(
+ project,
+ current_user,
+ { issue_id: issue_id }
+ ).execute
+ issue = response[:issue]
+ issue.gitlab_project = project if issue
+
+ issue
+ end
+ end
+ end
+end
diff --git a/app/graphql/resolvers/issues_resolver.rb b/app/graphql/resolvers/issues_resolver.rb
index 1fbc61cd950..664e0955535 100644
--- a/app/graphql/resolvers/issues_resolver.rb
+++ b/app/graphql/resolvers/issues_resolver.rb
@@ -4,17 +4,17 @@ module Resolvers
class IssuesResolver < BaseResolver
argument :iid, GraphQL::STRING_TYPE,
required: false,
- description: 'The IID of the issue, e.g., "1"'
+ description: 'IID of the issue. For example, "1"'
argument :iids, [GraphQL::STRING_TYPE],
required: false,
- description: 'The list of IIDs of issues, e.g., [1, 2]'
+ description: 'List of IIDs of issues. For example, [1, 2]'
argument :state, Types::IssuableStateEnum,
required: false,
- description: 'Current state of Issue'
+ description: 'Current state of this issue'
argument :label_name, GraphQL::STRING_TYPE.to_list_type,
required: false,
- description: 'Labels applied to the Issue'
+ description: 'Labels applied to this issue'
argument :created_before, Types::TimeType,
required: false,
description: 'Issues created before this date'
@@ -33,8 +33,9 @@ module Resolvers
argument :closed_after, Types::TimeType,
required: false,
description: 'Issues closed after this date'
- argument :search, GraphQL::STRING_TYPE, # rubocop:disable Graphql/Descriptions
- required: false
+ argument :search, GraphQL::STRING_TYPE,
+ required: false,
+ description: 'Search query for finding issues by title or description'
argument :sort, Types::IssueSortEnum,
description: 'Sort issues by this criteria',
required: false,
@@ -53,6 +54,7 @@ module Resolvers
# https://gitlab.com/gitlab-org/gitlab-foss/issues/54520
args[:project_id] = project.id
args[:iids] ||= [args[:iid]].compact
+ args[:attempt_project_search_optimizations] = args[:search].present?
IssuesFinder.new(context[:current_user], args).execute
end
diff --git a/app/graphql/resolvers/projects/snippets_resolver.rb b/app/graphql/resolvers/projects/snippets_resolver.rb
new file mode 100644
index 00000000000..bf9aa45349f
--- /dev/null
+++ b/app/graphql/resolvers/projects/snippets_resolver.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+module Resolvers
+ module Projects
+ class SnippetsResolver < BaseResolver
+ include ResolvesSnippets
+
+ alias_method :project, :object
+
+ def resolve(**args)
+ return Snippet.none if project.nil?
+
+ super
+ end
+
+ private
+
+ def snippet_finder_params(args)
+ super.merge(project: project)
+ end
+ end
+ end
+end
diff --git a/app/graphql/resolvers/snippets_resolver.rb b/app/graphql/resolvers/snippets_resolver.rb
new file mode 100644
index 00000000000..530a288a25b
--- /dev/null
+++ b/app/graphql/resolvers/snippets_resolver.rb
@@ -0,0 +1,45 @@
+# frozen_string_literal: true
+
+module Resolvers
+ class SnippetsResolver < BaseResolver
+ include ResolvesSnippets
+
+ ERROR_MESSAGE = 'Filtering by both an author and a project is not supported'
+
+ alias_method :user, :object
+
+ argument :author_id, GraphQL::ID_TYPE,
+ required: false,
+ description: 'The ID of an author'
+
+ argument :project_id, GraphQL::ID_TYPE,
+ required: false,
+ description: 'The ID of a project'
+
+ argument :type, Types::Snippets::TypeEnum,
+ required: false,
+ description: 'The type of snippet'
+
+ argument :explore,
+ GraphQL::BOOLEAN_TYPE,
+ required: false,
+ description: 'Explore personal snippets'
+
+ def resolve(**args)
+ if args[:author_id].present? && args[:project_id].present?
+ raise Gitlab::Graphql::Errors::ArgumentError, ERROR_MESSAGE
+ end
+
+ super
+ end
+
+ private
+
+ def snippet_finder_params(args)
+ super
+ .merge(author: resolve_gid(args[:author_id], :author),
+ project: resolve_gid(args[:project_id], :project),
+ explore: args[:explore])
+ end
+ end
+end
diff --git a/app/graphql/resolvers/todo_resolver.rb b/app/graphql/resolvers/todo_resolver.rb
index 38a4539f34a..cff65321dc0 100644
--- a/app/graphql/resolvers/todo_resolver.rb
+++ b/app/graphql/resolvers/todo_resolver.rb
@@ -38,53 +38,15 @@ module Resolvers
private
- # TODO: Support multiple queries for e.g. state and type on TodosFinder:
- #
- # https://gitlab.com/gitlab-org/gitlab/merge_requests/18487
- # https://gitlab.com/gitlab-org/gitlab/merge_requests/18518
- #
- # As soon as these MR's are merged, we can refactor this to query by
- # multiple contents.
- #
def todo_finder_params(args)
{
- state: first_state(args),
- type: first_type(args),
- group_id: first_group_id(args),
- author_id: first_author_id(args),
- action_id: first_action(args),
- project_id: first_project(args)
+ state: args[:state],
+ type: args[:type],
+ group_id: args[:group_id],
+ author_id: args[:author_id],
+ action_id: args[:action],
+ project_id: args[:project_id]
}
end
-
- def first_project(args)
- first_query_field(args, :project_id)
- end
-
- def first_action(args)
- first_query_field(args, :action)
- end
-
- def first_author_id(args)
- first_query_field(args, :author_id)
- end
-
- def first_group_id(args)
- first_query_field(args, :group_id)
- end
-
- def first_state(args)
- first_query_field(args, :state)
- end
-
- def first_type(args)
- first_query_field(args, :type)
- end
-
- def first_query_field(query, field)
- return unless query.key?(field)
-
- query[field].first if query[field].respond_to?(:first)
- end
end
end
diff --git a/app/graphql/resolvers/users/snippets_resolver.rb b/app/graphql/resolvers/users/snippets_resolver.rb
new file mode 100644
index 00000000000..d757640b5ff
--- /dev/null
+++ b/app/graphql/resolvers/users/snippets_resolver.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+module Resolvers
+ module Users
+ class SnippetsResolver < BaseResolver
+ include ResolvesSnippets
+
+ alias_method :user, :object
+
+ argument :type, Types::Snippets::TypeEnum,
+ required: false,
+ description: 'The type of snippet'
+
+ private
+
+ def snippet_finder_params(args)
+ super.merge(author: user)
+ end
+ end
+ end
+end
diff --git a/app/graphql/types/diff_refs_type.rb b/app/graphql/types/diff_refs_type.rb
index 33a5780cd68..03d080d784b 100644
--- a/app/graphql/types/diff_refs_type.rb
+++ b/app/graphql/types/diff_refs_type.rb
@@ -6,9 +6,12 @@ module Types
class DiffRefsType < BaseObject
graphql_name 'DiffRefs'
- field :head_sha, GraphQL::STRING_TYPE, null: false, description: 'The sha of the head at the time the comment was made'
- field :base_sha, GraphQL::STRING_TYPE, null: false, description: 'The merge base of the branch the comment was made on'
- field :start_sha, GraphQL::STRING_TYPE, null: false, description: 'The sha of the branch being compared against'
+ field :head_sha, GraphQL::STRING_TYPE, null: false,
+ description: 'SHA of the HEAD at the time the comment was made'
+ field :base_sha, GraphQL::STRING_TYPE, null: false,
+ description: 'Merge base of the branch the comment was made on'
+ field :start_sha, GraphQL::STRING_TYPE, null: false,
+ description: 'SHA of the branch being compared against'
end
# rubocop: enable Graphql/AuthorizeTypes
end
diff --git a/app/graphql/types/error_tracking/sentry_detailed_error_type.rb b/app/graphql/types/error_tracking/sentry_detailed_error_type.rb
new file mode 100644
index 00000000000..c680f387a9a
--- /dev/null
+++ b/app/graphql/types/error_tracking/sentry_detailed_error_type.rb
@@ -0,0 +1,93 @@
+# frozen_string_literal: true
+
+module Types
+ module ErrorTracking
+ class SentryDetailedErrorType < ::Types::BaseObject
+ graphql_name 'SentryDetailedError'
+
+ present_using SentryDetailedErrorPresenter
+
+ authorize :read_sentry_issue
+
+ field :id, GraphQL::ID_TYPE,
+ null: false,
+ description: "ID (global ID) of the error"
+ field :sentry_id, GraphQL::STRING_TYPE,
+ method: :id,
+ null: false,
+ description: "ID (Sentry ID) of the error"
+ field :title, GraphQL::STRING_TYPE,
+ null: false,
+ description: "Title of the error"
+ field :type, GraphQL::STRING_TYPE,
+ null: false,
+ description: "Type of the error"
+ field :user_count, GraphQL::INT_TYPE,
+ null: false,
+ description: "Count of users affected by the error"
+ field :count, GraphQL::INT_TYPE,
+ null: false,
+ description: "Count of occurrences"
+ field :first_seen, Types::TimeType,
+ null: false,
+ description: "Timestamp when the error was first seen"
+ field :last_seen, Types::TimeType,
+ null: false,
+ description: "Timestamp when the error was last seen"
+ field :message, GraphQL::STRING_TYPE,
+ null: true,
+ description: "Sentry metadata message of the error"
+ field :culprit, GraphQL::STRING_TYPE,
+ null: false,
+ description: "Culprit of the error"
+ field :external_url, GraphQL::STRING_TYPE,
+ null: false,
+ description: "External URL of the error"
+ field :sentry_project_id, GraphQL::ID_TYPE,
+ method: :project_id,
+ null: false,
+ description: "ID of the project (Sentry project)"
+ field :sentry_project_name, GraphQL::STRING_TYPE,
+ method: :project_name,
+ null: false,
+ description: "Name of the project affected by the error"
+ field :sentry_project_slug, GraphQL::STRING_TYPE,
+ method: :project_slug,
+ null: false,
+ description: "Slug of the project affected by the error"
+ field :short_id, GraphQL::STRING_TYPE,
+ null: false,
+ description: "Short ID (Sentry ID) of the error"
+ field :status, Types::ErrorTracking::SentryErrorStatusEnum,
+ null: false,
+ description: "Status of the error"
+ field :frequency, [Types::ErrorTracking::SentryErrorFrequencyType],
+ null: false,
+ description: "Last 24hr stats of the error"
+ field :first_release_last_commit, GraphQL::STRING_TYPE,
+ null: true,
+ description: "Commit the error was first seen"
+ field :last_release_last_commit, GraphQL::STRING_TYPE,
+ null: true,
+ description: "Commit the error was last seen"
+ field :first_release_short_version, GraphQL::STRING_TYPE,
+ null: true,
+ description: "Release version the error was first seen"
+ field :last_release_short_version, GraphQL::STRING_TYPE,
+ null: true,
+ description: "Release version the error was last seen"
+
+ def first_seen
+ DateTime.parse(object.first_seen)
+ end
+
+ def last_seen
+ DateTime.parse(object.last_seen)
+ end
+
+ def project_id
+ Gitlab::GlobalId.build(model_name: 'Project', id: object.project_id).to_s
+ end
+ end
+ end
+end
diff --git a/app/graphql/types/error_tracking/sentry_error_frequency_type.rb b/app/graphql/types/error_tracking/sentry_error_frequency_type.rb
new file mode 100644
index 00000000000..a44ca0684b6
--- /dev/null
+++ b/app/graphql/types/error_tracking/sentry_error_frequency_type.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+module Types
+ module ErrorTracking
+ # rubocop: disable Graphql/AuthorizeTypes
+ class SentryErrorFrequencyType < ::Types::BaseObject
+ graphql_name 'SentryErrorFrequency'
+
+ field :time, Types::TimeType,
+ null: false,
+ description: "Time the error frequency stats were recorded"
+ field :count, GraphQL::INT_TYPE,
+ null: false,
+ description: "Count of errors received since the previously recorded time"
+ end
+ # rubocop: enable Graphql/AuthorizeTypes
+ end
+end
diff --git a/app/graphql/types/error_tracking/sentry_error_status_enum.rb b/app/graphql/types/error_tracking/sentry_error_status_enum.rb
new file mode 100644
index 00000000000..df68eef4f3c
--- /dev/null
+++ b/app/graphql/types/error_tracking/sentry_error_status_enum.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+module Types
+ module ErrorTracking
+ class SentryErrorStatusEnum < ::Types::BaseEnum
+ graphql_name 'SentryErrorStatus'
+ description 'State of a Sentry error'
+
+ value 'RESOLVED', value: 'resolved', description: 'Error has been resolved'
+ value 'RESOLVED_IN_NEXT_RELEASE', value: 'resolvedInNextRelease', description: 'Error has been ignored until next release'
+ value 'UNRESOLVED', value: 'unresolved', description: 'Error is unresolved'
+ value 'IGNORED', value: 'ignored', description: 'Error has been ignored'
+ end
+ end
+end
diff --git a/app/graphql/types/issuable_sort_enum.rb b/app/graphql/types/issuable_sort_enum.rb
index 932e90c2d22..9fb1249d582 100644
--- a/app/graphql/types/issuable_sort_enum.rb
+++ b/app/graphql/types/issuable_sort_enum.rb
@@ -1,10 +1,8 @@
# frozen_string_literal: true
module Types
- # rubocop: disable Graphql/AuthorizeTypes
class IssuableSortEnum < SortEnum
graphql_name 'IssuableSort'
description 'Values for sorting issuables'
end
- # rubocop: enable Graphql/AuthorizeTypes
end
diff --git a/app/graphql/types/issue_sort_enum.rb b/app/graphql/types/issue_sort_enum.rb
index 48ff5819286..c8d8f3ef079 100644
--- a/app/graphql/types/issue_sort_enum.rb
+++ b/app/graphql/types/issue_sort_enum.rb
@@ -1,7 +1,6 @@
# frozen_string_literal: true
module Types
- # rubocop: disable Graphql/AuthorizeTypes
class IssueSortEnum < IssuableSortEnum
graphql_name 'IssueSort'
description 'Values for sorting issues'
@@ -10,5 +9,6 @@ module Types
value 'DUE_DATE_DESC', 'Due date by descending order', value: 'due_date_desc'
value 'RELATIVE_POSITION_ASC', 'Relative position by ascending order', value: 'relative_position_asc'
end
- # rubocop: enable Graphql/AuthorizeTypes
end
+
+Types::IssueSortEnum.prepend_if_ee('::EE::Types::IssueSortEnum')
diff --git a/app/graphql/types/issue_state_enum.rb b/app/graphql/types/issue_state_enum.rb
index 70c34fbe491..6521407fc9d 100644
--- a/app/graphql/types/issue_state_enum.rb
+++ b/app/graphql/types/issue_state_enum.rb
@@ -1,11 +1,8 @@
# frozen_string_literal: true
module Types
- # rubocop: disable Graphql/AuthorizeTypes
- # This is a BaseEnum through IssuableEnum, so it does not need authorization
class IssueStateEnum < IssuableStateEnum
graphql_name 'IssueState'
description 'State of a GitLab issue'
end
- # rubocop: enable Graphql/AuthorizeTypes
end
diff --git a/app/graphql/types/label_type.rb b/app/graphql/types/label_type.rb
index d0bcf2068b7..738a00ad616 100644
--- a/app/graphql/types/label_type.rb
+++ b/app/graphql/types/label_type.rb
@@ -9,7 +9,7 @@ module Types
field :id, GraphQL::ID_TYPE, null: false,
description: 'Label ID'
field :description, GraphQL::STRING_TYPE, null: true,
- description: 'Description of the label (markdown rendered as HTML for caching)'
+ description: 'Description of the label (Markdown rendered as HTML for caching)'
markdown_field :description_html, null: true
field :title, GraphQL::STRING_TYPE, null: false,
description: 'Content of the label'
diff --git a/app/graphql/types/merge_request_state_enum.rb b/app/graphql/types/merge_request_state_enum.rb
index 37c890a3c8d..92f52726ab3 100644
--- a/app/graphql/types/merge_request_state_enum.rb
+++ b/app/graphql/types/merge_request_state_enum.rb
@@ -1,13 +1,10 @@
# frozen_string_literal: true
module Types
- # rubocop: disable Graphql/AuthorizeTypes
- # This is a BaseEnum through IssuableEnum, so it does not need authorization
class MergeRequestStateEnum < IssuableStateEnum
graphql_name 'MergeRequestState'
description 'State of a GitLab merge request'
value 'merged'
end
- # rubocop: enable Graphql/AuthorizeTypes
end
diff --git a/app/graphql/types/merge_request_type.rb b/app/graphql/types/merge_request_type.rb
index 278a95fe3ca..0da95b367d8 100644
--- a/app/graphql/types/merge_request_type.rb
+++ b/app/graphql/types/merge_request_type.rb
@@ -20,7 +20,7 @@ module Types
description: 'Title of the merge request'
markdown_field :title_html, null: true
field :description, GraphQL::STRING_TYPE, null: true,
- description: 'Description of the merge request (markdown rendered as HTML for caching)'
+ description: 'Description of the merge request (Markdown rendered as HTML for caching)'
markdown_field :description_html, null: true
field :state, MergeRequestStateEnum, null: false,
description: 'State of the merge request'
diff --git a/app/graphql/types/mutation_type.rb b/app/graphql/types/mutation_type.rb
index b3c7c162bb3..0a9c0143945 100644
--- a/app/graphql/types/mutation_type.rb
+++ b/app/graphql/types/mutation_type.rb
@@ -9,6 +9,8 @@ module Types
mount_mutation Mutations::AwardEmojis::Add
mount_mutation Mutations::AwardEmojis::Remove
mount_mutation Mutations::AwardEmojis::Toggle
+ mount_mutation Mutations::Issues::SetConfidential
+ mount_mutation Mutations::Issues::SetDueDate
mount_mutation Mutations::MergeRequests::SetLabels
mount_mutation Mutations::MergeRequests::SetLocked
mount_mutation Mutations::MergeRequests::SetMilestone
@@ -21,6 +23,12 @@ module Types
mount_mutation Mutations::Notes::Update
mount_mutation Mutations::Notes::Destroy
mount_mutation Mutations::Todos::MarkDone
+ mount_mutation Mutations::Todos::Restore
+ mount_mutation Mutations::Todos::MarkAllDone
+ mount_mutation Mutations::Snippets::Destroy
+ mount_mutation Mutations::Snippets::Update
+ mount_mutation Mutations::Snippets::Create
+ mount_mutation Mutations::Snippets::MarkAsSpam
end
end
diff --git a/app/graphql/types/notes/diff_position_type.rb b/app/graphql/types/notes/diff_position_type.rb
index cab8c750dc0..654562da0a7 100644
--- a/app/graphql/types/notes/diff_position_type.rb
+++ b/app/graphql/types/notes/diff_position_type.rb
@@ -7,36 +7,38 @@ module Types
class DiffPositionType < BaseObject
graphql_name 'DiffPosition'
- field :diff_refs, Types::DiffRefsType, null: false # rubocop:disable Graphql/Descriptions
+ field :diff_refs, Types::DiffRefsType, null: false,
+ description: 'Information about the branch, HEAD, and base at the time of commenting'
field :file_path, GraphQL::STRING_TYPE, null: false,
- description: "The path of the file that was changed"
+ description: 'Path of the file that was changed'
field :old_path, GraphQL::STRING_TYPE, null: true,
- description: "The path of the file on the start sha."
+ description: 'Path of the file on the start SHA'
field :new_path, GraphQL::STRING_TYPE, null: true,
- description: "The path of the file on the head sha."
- field :position_type, Types::Notes::PositionTypeEnum, null: false # rubocop:disable Graphql/Descriptions
+ description: 'Path of the file on the HEAD SHA'
+ field :position_type, Types::Notes::PositionTypeEnum, null: false,
+ description: 'Type of file the position refers to'
# Fields for text positions
field :old_line, GraphQL::INT_TYPE, null: true,
- description: "The line on start sha that was changed",
+ description: 'Line on start SHA that was changed',
resolve: -> (position, _args, _ctx) { position.old_line if position.on_text? }
field :new_line, GraphQL::INT_TYPE, null: true,
- description: "The line on head sha that was changed",
+ description: 'Line on HEAD SHA that was changed',
resolve: -> (position, _args, _ctx) { position.new_line if position.on_text? }
# Fields for image positions
field :x, GraphQL::INT_TYPE, null: true,
- description: "The X postion on which the comment was made",
+ description: 'X position on which the comment was made',
resolve: -> (position, _args, _ctx) { position.x if position.on_image? }
field :y, GraphQL::INT_TYPE, null: true,
- description: "The Y position on which the comment was made",
+ description: 'Y position on which the comment was made',
resolve: -> (position, _args, _ctx) { position.y if position.on_image? }
field :width, GraphQL::INT_TYPE, null: true,
- description: "The total width of the image",
+ description: 'Total width of the image',
resolve: -> (position, _args, _ctx) { position.width if position.on_image? }
field :height, GraphQL::INT_TYPE, null: true,
- description: "The total height of the image",
+ description: 'Total height of the image',
resolve: -> (position, _args, _ctx) { position.height if position.on_image? }
end
# rubocop: enable Graphql/AuthorizeTypes
diff --git a/app/graphql/types/notes/discussion_type.rb b/app/graphql/types/notes/discussion_type.rb
index ab87f8280ac..74a233e9d26 100644
--- a/app/graphql/types/notes/discussion_type.rb
+++ b/app/graphql/types/notes/discussion_type.rb
@@ -7,10 +7,14 @@ module Types
authorize :read_note
- field :id, GraphQL::ID_TYPE, null: false # rubocop:disable Graphql/Descriptions
- field :reply_id, GraphQL::ID_TYPE, null: false, description: 'The ID used to reply to this discussion'
- field :created_at, Types::TimeType, null: false # rubocop:disable Graphql/Descriptions
- field :notes, Types::Notes::NoteType.connection_type, null: false, description: "All notes in the discussion"
+ field :id, GraphQL::ID_TYPE, null: false,
+ description: "ID of this discussion"
+ field :reply_id, GraphQL::ID_TYPE, null: false,
+ description: 'ID used to reply to this discussion'
+ field :created_at, Types::TimeType, null: false,
+ description: "Timestamp of the discussion's creation"
+ field :notes, Types::Notes::NoteType.connection_type, null: false,
+ description: 'All notes in the discussion'
# The gem we use to generate Global IDs is hard-coded to work with
# `id` properties. To generate a GID for the `reply_id` property,
diff --git a/app/graphql/types/notes/note_type.rb b/app/graphql/types/notes/note_type.rb
index 4edf6ed90f7..b60fc96bd03 100644
--- a/app/graphql/types/notes/note_type.rb
+++ b/app/graphql/types/notes/note_type.rb
@@ -9,40 +9,48 @@ module Types
expose_permissions Types::PermissionTypes::Note
- field :id, GraphQL::ID_TYPE, null: false # rubocop:disable Graphql/Descriptions
+ field :id, GraphQL::ID_TYPE, null: false,
+ description: 'ID of the note'
field :project, Types::ProjectType,
null: true,
- description: "The project this note is associated to",
+ description: 'Project associated with the note',
resolve: -> (note, args, context) { Gitlab::Graphql::Loaders::BatchModelLoader.new(Project, note.project_id).find }
field :author, Types::UserType,
null: false,
- description: "The user who wrote this note",
+ description: 'User who wrote this note',
resolve: -> (note, args, context) { Gitlab::Graphql::Loaders::BatchModelLoader.new(User, note.author_id).find }
field :resolved_by, Types::UserType,
null: true,
- description: "The user that resolved the discussion",
+ description: 'User that resolved the discussion',
resolve: -> (note, _args, _context) { Gitlab::Graphql::Loaders::BatchModelLoader.new(User, note.resolved_by_id).find }
field :system, GraphQL::BOOLEAN_TYPE,
null: false,
- description: "Whether or not this note was created by the system or by a user"
+ description: 'Indicates whether this note was created by the system or by a user'
field :body, GraphQL::STRING_TYPE,
null: false,
method: :note,
- description: "The content note itself"
+ description: 'Content of the note'
markdown_field :body_html, null: true, method: :note
- field :created_at, Types::TimeType, null: false # rubocop:disable Graphql/Descriptions
- field :updated_at, Types::TimeType, null: false # rubocop:disable Graphql/Descriptions
- field :discussion, Types::Notes::DiscussionType, null: true, description: "The discussion this note is a part of"
- field :resolvable, GraphQL::BOOLEAN_TYPE, null: false, method: :resolvable? # rubocop:disable Graphql/Descriptions
- field :resolved_at, Types::TimeType, null: true, description: "The time the discussion was resolved"
- field :position, Types::Notes::DiffPositionType, null: true, description: "The position of this note on a diff"
+ field :created_at, Types::TimeType, null: false,
+ description: 'Timestamp of the note creation'
+ field :updated_at, Types::TimeType, null: false,
+ description: "Timestamp of the note's last activity"
+ field :discussion, Types::Notes::DiscussionType, null: true,
+ description: 'The discussion this note is a part of'
+ field :resolvable, GraphQL::BOOLEAN_TYPE, null: false,
+ description: 'Indicates if this note can be resolved. That is, if it is a resolvable discussion or simply a standalone note',
+ method: :resolvable?
+ field :resolved_at, Types::TimeType, null: true,
+ description: "Timestamp of the note's resolution"
+ field :position, Types::Notes::DiffPositionType, null: true,
+ description: 'The position of this note on a diff'
end
end
end
diff --git a/app/graphql/types/notes/noteable_type.rb b/app/graphql/types/notes/noteable_type.rb
index ab4a170b123..2ac66452841 100644
--- a/app/graphql/types/notes/noteable_type.rb
+++ b/app/graphql/types/notes/noteable_type.rb
@@ -15,6 +15,8 @@ module Types
Types::IssueType
when MergeRequest
Types::MergeRequestType
+ when Snippet
+ Types::SnippetType
else
raise "Unknown GraphQL type for #{object}"
end
diff --git a/app/graphql/types/permission_types/project.rb b/app/graphql/types/permission_types/project.rb
index 3a6ba371154..2879dbd2b5c 100644
--- a/app/graphql/types/permission_types/project.rb
+++ b/app/graphql/types/permission_types/project.rb
@@ -10,13 +10,19 @@ module Types
:remove_pages, :read_project, :create_merge_request_in,
:read_wiki, :read_project_member, :create_issue, :upload_file,
:read_cycle_analytics, :download_code, :download_wiki_code,
- :fork_project, :create_project_snippet, :read_commit_status,
+ :fork_project, :read_commit_status,
:request_access, :create_pipeline, :create_pipeline_schedule,
:create_merge_request_from, :create_wiki, :push_code,
:create_deployment, :push_to_delete_protected_branch,
:admin_wiki, :admin_project, :update_pages,
:admin_remote_mirror, :create_label, :update_wiki, :destroy_wiki,
:create_pages, :destroy_pages, :read_pages_content, :admin_operations
+
+ permission_field :create_snippet
+
+ def create_snippet
+ Ability.allowed?(context[:current_user], :create_project_snippet, object)
+ end
end
end
end
diff --git a/app/graphql/types/permission_types/snippet.rb b/app/graphql/types/permission_types/snippet.rb
new file mode 100644
index 00000000000..0fc13c60983
--- /dev/null
+++ b/app/graphql/types/permission_types/snippet.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+module Types
+ module PermissionTypes
+ class Snippet < BasePermissionType
+ graphql_name 'SnippetPermissions'
+
+ abilities :create_note, :award_emoji
+
+ permission_field :read_snippet, method: :can_read_snippet?
+ permission_field :update_snippet, method: :can_update_snippet?
+ permission_field :admin_snippet, method: :can_admin_snippet?
+ permission_field :report_snippet, method: :can_report_as_spam?
+ end
+ end
+end
diff --git a/app/graphql/types/permission_types/user.rb b/app/graphql/types/permission_types/user.rb
new file mode 100644
index 00000000000..dba4de2dacc
--- /dev/null
+++ b/app/graphql/types/permission_types/user.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+module Types
+ module PermissionTypes
+ class User < BasePermissionType
+ graphql_name 'UserPermissions'
+
+ permission_field :create_snippet
+
+ def create_snippet
+ Ability.allowed?(context[:current_user], :create_personal_snippet)
+ end
+ end
+ end
+end
diff --git a/app/graphql/types/project_type.rb b/app/graphql/types/project_type.rb
index 73255021119..bd80ad7ff74 100644
--- a/app/graphql/types/project_type.rb
+++ b/app/graphql/types/project_type.rb
@@ -145,5 +145,19 @@ module Types
null: true,
description: 'Build pipelines of the project',
resolver: Resolvers::ProjectPipelinesResolver
+
+ field :sentry_detailed_error,
+ Types::ErrorTracking::SentryDetailedErrorType,
+ null: true,
+ description: 'Detailed version of a Sentry error on the project',
+ resolver: Resolvers::ErrorTracking::SentryDetailedErrorResolver
+
+ field :snippets,
+ Types::SnippetType.connection_type,
+ null: true,
+ description: 'Snippets of the project',
+ resolver: Resolvers::Projects::SnippetsResolver
end
end
+
+Types::ProjectType.prepend_if_ee('::EE::Types::ProjectType')
diff --git a/app/graphql/types/query_type.rb b/app/graphql/types/query_type.rb
index 996bf225976..199a6226c6d 100644
--- a/app/graphql/types/query_type.rb
+++ b/app/graphql/types/query_type.rb
@@ -29,6 +29,14 @@ module Types
resolver: Resolvers::MetadataResolver,
description: 'Metadata about GitLab'
- field :echo, GraphQL::STRING_TYPE, null: false, resolver: Resolvers::EchoResolver # rubocop:disable Graphql/Descriptions
+ field :snippets,
+ Types::SnippetType.connection_type,
+ null: true,
+ resolver: Resolvers::SnippetsResolver,
+ description: 'Find Snippets visible to the current user'
+
+ field :echo, GraphQL::STRING_TYPE, null: false,
+ description: 'Text to echo back',
+ resolver: Resolvers::EchoResolver
end
end
diff --git a/app/graphql/types/root_storage_statistics_type.rb b/app/graphql/types/root_storage_statistics_type.rb
index a7498ee0a2e..3c471df072d 100644
--- a/app/graphql/types/root_storage_statistics_type.rb
+++ b/app/graphql/types/root_storage_statistics_type.rb
@@ -7,7 +7,7 @@ module Types
authorize :read_statistics
field :storage_size, GraphQL::INT_TYPE, null: false, description: 'The total storage in bytes'
- field :repository_size, GraphQL::INT_TYPE, null: false, description: 'The git repository size in bytes'
+ field :repository_size, GraphQL::INT_TYPE, null: false, description: 'The Git repository size in bytes'
field :lfs_objects_size, GraphQL::INT_TYPE, null: false, description: 'The LFS objects size in bytes'
field :build_artifacts_size, GraphQL::INT_TYPE, null: false, description: 'The CI artifacts size in bytes'
field :packages_size, GraphQL::INT_TYPE, null: false, description: 'The packages size in bytes'
diff --git a/app/graphql/types/snippet_type.rb b/app/graphql/types/snippet_type.rb
new file mode 100644
index 00000000000..3f780528945
--- /dev/null
+++ b/app/graphql/types/snippet_type.rb
@@ -0,0 +1,69 @@
+# frozen_string_literal: true
+
+module Types
+ class SnippetType < BaseObject
+ graphql_name 'Snippet'
+ description 'Represents a snippet entry'
+
+ implements(Types::Notes::NoteableType)
+
+ present_using SnippetPresenter
+
+ authorize :read_snippet
+
+ expose_permissions Types::PermissionTypes::Snippet
+
+ field :id, GraphQL::ID_TYPE,
+ description: 'Id of the snippet',
+ null: false
+
+ field :title, GraphQL::STRING_TYPE,
+ description: 'Title of the snippet',
+ null: false
+
+ field :project, Types::ProjectType,
+ description: 'The project the snippet is associated with',
+ null: true,
+ authorize: :read_project,
+ resolve: -> (snippet, args, context) { Gitlab::Graphql::Loaders::BatchModelLoader.new(Project, snippet.project_id).find }
+
+ field :author, Types::UserType,
+ description: 'The owner of the snippet',
+ null: false,
+ resolve: -> (snippet, args, context) { Gitlab::Graphql::Loaders::BatchModelLoader.new(User, snippet.author_id).find }
+
+ field :file_name, GraphQL::STRING_TYPE,
+ description: 'File Name of the snippet',
+ null: true
+
+ field :content, GraphQL::STRING_TYPE,
+ description: 'Content of the snippet',
+ null: false
+
+ field :description, GraphQL::STRING_TYPE,
+ description: 'Description of the snippet',
+ null: true
+
+ field :visibility_level, Types::VisibilityLevelsEnum,
+ description: 'Visibility Level of the snippet',
+ null: false
+
+ field :created_at, Types::TimeType,
+ description: 'Timestamp this snippet was created',
+ null: false
+
+ field :updated_at, Types::TimeType,
+ description: 'Timestamp this snippet was updated',
+ null: false
+
+ field :web_url, type: GraphQL::STRING_TYPE,
+ description: 'Web URL of the snippet',
+ null: false
+
+ field :raw_url, type: GraphQL::STRING_TYPE,
+ description: 'Raw URL of the snippet',
+ null: false
+
+ markdown_field :description_html, null: true, method: :description
+ end
+end
diff --git a/app/graphql/types/snippets/type_enum.rb b/app/graphql/types/snippets/type_enum.rb
new file mode 100644
index 00000000000..243f05359db
--- /dev/null
+++ b/app/graphql/types/snippets/type_enum.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+module Types
+ module Snippets
+ class TypeEnum < BaseEnum
+ value 'personal', value: 'personal'
+ value 'project', value: 'project'
+ end
+ end
+end
diff --git a/app/graphql/types/snippets/visibility_scopes_enum.rb b/app/graphql/types/snippets/visibility_scopes_enum.rb
new file mode 100644
index 00000000000..5488e05b95d
--- /dev/null
+++ b/app/graphql/types/snippets/visibility_scopes_enum.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+module Types
+ module Snippets
+ class VisibilityScopesEnum < BaseEnum
+ value 'private', value: 'are_private'
+ value 'internal', value: 'are_internal'
+ value 'public', value: 'are_public'
+ end
+ end
+end
diff --git a/app/graphql/types/user_type.rb b/app/graphql/types/user_type.rb
index b45c7893e75..3943c891335 100644
--- a/app/graphql/types/user_type.rb
+++ b/app/graphql/types/user_type.rb
@@ -8,6 +8,8 @@ module Types
present_using UserPresenter
+ expose_permissions Types::PermissionTypes::User
+
field :name, GraphQL::STRING_TYPE, null: false,
description: 'Human-readable name of the user'
field :username, GraphQL::STRING_TYPE, null: false,
@@ -19,5 +21,11 @@ module Types
field :todos, Types::TodoType.connection_type, null: false,
resolver: Resolvers::TodoResolver,
description: 'Todos of the user'
+
+ field :snippets,
+ Types::SnippetType.connection_type,
+ null: true,
+ description: 'Snippets authored by the user',
+ resolver: Resolvers::Users::SnippetsResolver
end
end
diff --git a/app/graphql/types/visibility_levels_enum.rb b/app/graphql/types/visibility_levels_enum.rb
new file mode 100644
index 00000000000..d5ace24455e
--- /dev/null
+++ b/app/graphql/types/visibility_levels_enum.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+module Types
+ class VisibilityLevelsEnum < BaseEnum
+ Gitlab::VisibilityLevel.string_options.each do |name, int_value|
+ value name.downcase, value: int_value
+ end
+ end
+end
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 3ae804ff231..8389272fd35 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -94,6 +94,25 @@ module ApplicationHelper
sanitize(str, tags: %w(a span))
end
+ def body_data
+ {
+ page: body_data_page,
+ page_type_id: controller.params[:id],
+ find_file: find_file_path,
+ group: "#{@group&.path}"
+ }.merge(project_data)
+ end
+
+ def project_data
+ return {} unless @project
+
+ {
+ project_id: @project.id,
+ project: @project.path,
+ namespace_id: @project.namespace&.id
+ }
+ end
+
def body_data_page
[*controller.controller_path.split('/'), controller.action_name].compact.join(':')
end
diff --git a/app/helpers/application_settings_helper.rb b/app/helpers/application_settings_helper.rb
index a011209375e..71e4195c50f 100644
--- a/app/helpers/application_settings_helper.rb
+++ b/app/helpers/application_settings_helper.rb
@@ -232,6 +232,7 @@ module ApplicationSettingsHelper
:metrics_port,
:metrics_sample_interval,
:metrics_timeout,
+ :minimum_password_length,
:mirror_available,
:pages_domain_verification_enabled,
:password_authentication_enabled_for_web,
@@ -301,7 +302,8 @@ module ApplicationSettingsHelper
:snowplow_iglu_registry_url,
:push_event_hooks_limit,
:push_event_activities_limit,
- :custom_http_clone_url_root
+ :custom_http_clone_url_root,
+ :snippet_size_limit
]
end
diff --git a/app/helpers/award_emoji_helper.rb b/app/helpers/award_emoji_helper.rb
index 4bc5a7b090e..13df53a751b 100644
--- a/app/helpers/award_emoji_helper.rb
+++ b/app/helpers/award_emoji_helper.rb
@@ -7,7 +7,7 @@ module AwardEmojiHelper
if awardable.is_a?(Note)
# We render a list of notes very frequently and calling the specific method is a lot faster than the generic one (4.5x)
if awardable.for_personal_snippet?
- toggle_award_emoji_snippet_note_path(awardable.noteable, awardable)
+ gitlab_toggle_award_emoji_snippet_note_path(awardable.noteable, awardable)
else
toggle_award_emoji_project_note_path(@project, awardable.id)
end
diff --git a/app/helpers/blob_helper.rb b/app/helpers/blob_helper.rb
index 912f0b61978..c9fb28d0299 100644
--- a/app/helpers/blob_helper.rb
+++ b/app/helpers/blob_helper.rb
@@ -141,7 +141,7 @@ module BlobHelper
if @build && @entry
raw_project_job_artifacts_url(@project, @build, path: @entry.path, **kwargs)
elsif @snippet
- reliable_raw_snippet_url(@snippet)
+ gitlab_raw_snippet_url(@snippet)
elsif @blob
project_raw_url(@project, @id, **kwargs)
end
@@ -215,14 +215,29 @@ module BlobHelper
return if blob.binary? || blob.stored_externally?
title = _('Open raw')
- link_to icon('file-code-o'), blob_raw_path, class: 'btn btn-sm has-tooltip', target: '_blank', rel: 'noopener noreferrer', title: title, data: { container: 'body' }
+ link_to sprite_icon('doc-code'),
+ external_storage_url_or_path(blob_raw_path),
+ class: 'btn btn-sm has-tooltip',
+ target: '_blank',
+ rel: 'noopener noreferrer',
+ aria: { label: title },
+ title: title,
+ data: { container: 'body' }
end
def download_blob_button(blob)
return if blob.empty?
title = _('Download')
- link_to sprite_icon('download'), blob_raw_path(inline: false), download: @path, class: 'btn btn-sm has-tooltip', target: '_blank', rel: 'noopener noreferrer', title: title, data: { container: 'body' }
+ link_to sprite_icon('download'),
+ external_storage_url_or_path(blob_raw_path(inline: false)),
+ download: @path,
+ class: 'btn btn-sm has-tooltip',
+ target: '_blank',
+ rel: 'noopener noreferrer',
+ aria: { label: title },
+ title: title,
+ data: { container: 'body' }
end
def blob_render_error_reason(viewer)
diff --git a/app/helpers/broadcast_messages_helper.rb b/app/helpers/broadcast_messages_helper.rb
index 495c29d3e24..21e57a8d391 100644
--- a/app/helpers/broadcast_messages_helper.rb
+++ b/app/helpers/broadcast_messages_helper.rb
@@ -1,11 +1,15 @@
# frozen_string_literal: true
module BroadcastMessagesHelper
+ def current_broadcast_messages
+ BroadcastMessage.current(request.path)
+ end
+
def broadcast_message(message)
return unless message.present?
content_tag :div, dir: 'auto', class: 'broadcast-message', style: broadcast_message_style(message) do
- icon('bullhorn') << ' ' << render_broadcast_message(message)
+ sprite_icon('bullhorn', size: 16, css_class: 'vertical-align-text-top mr-2') << ' ' << render_broadcast_message(message)
end
end
diff --git a/app/helpers/clusters_helper.rb b/app/helpers/clusters_helper.rb
index 0037c49f134..f55acad8517 100644
--- a/app/helpers/clusters_helper.rb
+++ b/app/helpers/clusters_helper.rb
@@ -9,11 +9,11 @@ module ClustersHelper
def create_new_cluster_label(provider: nil)
case provider
when 'aws'
- s_('ClusterIntegration|Create new Cluster on EKS')
+ s_('ClusterIntegration|Create new cluster on EKS')
when 'gcp'
- s_('ClusterIntegration|Create new Cluster on GKE')
+ s_('ClusterIntegration|Create new cluster on GKE')
else
- s_('ClusterIntegration|Create new Cluster')
+ s_('ClusterIntegration|Create new cluster')
end
end
diff --git a/app/helpers/container_expiration_policies_helper.rb b/app/helpers/container_expiration_policies_helper.rb
new file mode 100644
index 00000000000..17791e7b0ff
--- /dev/null
+++ b/app/helpers/container_expiration_policies_helper.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+module ContainerExpirationPoliciesHelper
+ def cadence_options
+ ContainerExpirationPolicy.cadence_options.map do |key, val|
+ { key: key.to_s, label: val }
+ end
+ end
+
+ def keep_n_options
+ ContainerExpirationPolicy.keep_n_options.map do |key, val|
+ { key: key, label: val }
+ end
+ end
+
+ def older_than_options
+ ContainerExpirationPolicy.older_than_options.map do |key, val|
+ { key: key.to_s, label: val }
+ end
+ end
+end
diff --git a/app/helpers/conversational_development_index_helper.rb b/app/helpers/dev_ops_score_helper.rb
index 37e5bb325fb..9a673998149 100644
--- a/app/helpers/conversational_development_index_helper.rb
+++ b/app/helpers/dev_ops_score_helper.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-module ConversationalDevelopmentIndexHelper
+module DevOpsScoreHelper
def score_level(score)
if score < 33.33
'low'
diff --git a/app/helpers/diff_helper.rb b/app/helpers/diff_helper.rb
index 52ec2eadf5e..620a63fdc46 100644
--- a/app/helpers/diff_helper.rb
+++ b/app/helpers/diff_helper.rb
@@ -161,6 +161,18 @@ module DiffHelper
end
end
+ def render_overflow_warning?(diffs_collection)
+ diff_files = diffs_collection.raw_diff_files
+
+ if diff_files.any?(&:too_large?)
+ Gitlab::Metrics.add_event(:diffs_overflow_single_file_limits)
+ end
+
+ diff_files.overflow?.tap do |overflown|
+ Gitlab::Metrics.add_event(:diffs_overflow_collection_limits) if overflown
+ end
+ end
+
private
def diff_btn(title, name, selected)
@@ -203,12 +215,6 @@ module DiffHelper
link_to "#{hide_whitespace? ? 'Show' : 'Hide'} whitespace changes", url, class: options[:class]
end
- def render_overflow_warning?(diffs_collection)
- diffs = @merge_request_diff.presence || diffs_collection.diff_files
-
- diffs.overflow?
- end
-
def diff_file_path_text(diff_file, max: 60)
path = diff_file.new_path
diff --git a/app/helpers/emails_helper.rb b/app/helpers/emails_helper.rb
index c244eba9e08..ba2330dfc9a 100644
--- a/app/helpers/emails_helper.rb
+++ b/app/helpers/emails_helper.rb
@@ -112,20 +112,20 @@ module EmailsHelper
end
end
- # "You are receiving this email because #{reason}"
+ # "You are receiving this email because #{reason} on #{gitlab_host}."
def notification_reason_text(reason)
- string = case reason
- when NotificationReason::OWN_ACTIVITY
- 'of your activity'
- when NotificationReason::ASSIGNED
- 'you have been assigned an item'
- when NotificationReason::MENTIONED
- 'you have been mentioned'
- else
- 'of your account'
- end
-
- "#{string} on #{Gitlab.config.gitlab.host}"
+ gitlab_host = Gitlab.config.gitlab.host
+
+ case reason
+ when NotificationReason::OWN_ACTIVITY
+ _("You're receiving this email because of your activity on %{host}.") % { host: gitlab_host }
+ when NotificationReason::ASSIGNED
+ _("You're receiving this email because you have been assigned an item on %{host}.") % { host: gitlab_host }
+ when NotificationReason::MENTIONED
+ _("You're receiving this email because you have been mentioned on %{host}.") % { host: gitlab_host }
+ else
+ _("You're receiving this email because of your account on %{host}.") % { host: gitlab_host }
+ end
end
def create_list_id_string(project, list_id_max_length = 255)
diff --git a/app/helpers/environments_helper.rb b/app/helpers/environments_helper.rb
index f57d0fa19d4..59972118ae3 100644
--- a/app/helpers/environments_helper.rb
+++ b/app/helpers/environments_helper.rb
@@ -26,6 +26,7 @@ module EnvironmentsHelper
"empty-getting-started-svg-path" => image_path('illustrations/monitoring/getting_started.svg'),
"empty-loading-svg-path" => image_path('illustrations/monitoring/loading.svg'),
"empty-no-data-svg-path" => image_path('illustrations/monitoring/no_data.svg'),
+ "empty-no-data-small-svg-path" => image_path('illustrations/chart-empty-state-small.svg'),
"empty-unable-to-connect-svg-path" => image_path('illustrations/monitoring/unable_to_connect.svg'),
"metrics-endpoint" => additional_metrics_project_environment_path(project, environment, format: :json),
"dashboard-endpoint" => metrics_dashboard_project_environment_path(project, environment, format: :json),
diff --git a/app/helpers/git_helper.rb b/app/helpers/git_helper.rb
index 5edc6dcf454..0fb37a69e56 100644
--- a/app/helpers/git_helper.rb
+++ b/app/helpers/git_helper.rb
@@ -1,8 +1,11 @@
# frozen_string_literal: true
module GitHelper
- def strip_gpg_signature(text)
- text.gsub(/-----BEGIN PGP SIGNATURE-----(.*)-----END PGP SIGNATURE-----/m, "")
+ def strip_signature(text)
+ text = text.gsub(/-----BEGIN PGP SIGNATURE-----(.*)-----END PGP SIGNATURE-----/m, "")
+ text = text.gsub(/-----BEGIN PGP MESSAGE-----(.*)-----END PGP MESSAGE-----/m, "")
+ text = text.gsub(/-----BEGIN SIGNED MESSAGE-----(.*)-----END SIGNED MESSAGE-----/m, "")
+ text
end
def short_sha(text)
diff --git a/app/helpers/gitlab_routing_helper.rb b/app/helpers/gitlab_routing_helper.rb
index 404ea7b00d4..78c41257404 100644
--- a/app/helpers/gitlab_routing_helper.rb
+++ b/app/helpers/gitlab_routing_helper.rb
@@ -193,6 +193,97 @@ module GitlabRoutingHelper
project = schedule.project
take_ownership_project_pipeline_schedule_path(project, schedule, *args)
end
+
+ def gitlab_snippet_path(snippet, *args)
+ if snippet.is_a?(ProjectSnippet)
+ project_snippet_path(snippet.project, snippet, *args)
+ else
+ new_args = snippet_query_params(snippet, *args)
+ snippet_path(snippet, *new_args)
+ end
+ end
+
+ def gitlab_snippet_url(snippet, *args)
+ if snippet.is_a?(ProjectSnippet)
+ project_snippet_url(snippet.project, snippet, *args)
+ else
+ new_args = snippet_query_params(snippet, *args)
+ snippet_url(snippet, *new_args)
+ end
+ end
+
+ def gitlab_raw_snippet_path(snippet, *args)
+ if snippet.is_a?(ProjectSnippet)
+ raw_project_snippet_path(snippet.project, snippet, *args)
+ else
+ new_args = snippet_query_params(snippet, *args)
+ raw_snippet_path(snippet, *new_args)
+ end
+ end
+
+ def gitlab_raw_snippet_url(snippet, *args)
+ if snippet.is_a?(ProjectSnippet)
+ raw_project_snippet_url(snippet.project, snippet, *args)
+ else
+ new_args = snippet_query_params(snippet, *args)
+ raw_snippet_url(snippet, *new_args)
+ end
+ end
+
+ def gitlab_snippet_notes_path(snippet, *args)
+ new_args = snippet_query_params(snippet, *args)
+ snippet_notes_path(snippet, *new_args)
+ end
+
+ def gitlab_snippet_notes_url(snippet, *args)
+ new_args = snippet_query_params(snippet, *args)
+ snippet_notes_url(snippet, *new_args)
+ end
+
+ def gitlab_snippet_note_path(snippet, note, *args)
+ new_args = snippet_query_params(snippet, *args)
+ snippet_note_path(snippet, note, *new_args)
+ end
+
+ def gitlab_snippet_note_url(snippet, note, *args)
+ new_args = snippet_query_params(snippet, *args)
+ snippet_note_url(snippet, note, *new_args)
+ end
+
+ def gitlab_toggle_award_emoji_snippet_note_path(snippet, note, *args)
+ new_args = snippet_query_params(snippet, *args)
+ toggle_award_emoji_snippet_note_path(snippet, note, *new_args)
+ end
+
+ def gitlab_toggle_award_emoji_snippet_note_url(snippet, note, *args)
+ new_args = snippet_query_params(snippet, *args)
+ toggle_award_emoji_snippet_note_url(snippet, note, *new_args)
+ end
+
+ def gitlab_toggle_award_emoji_snippet_path(snippet, *args)
+ new_args = snippet_query_params(snippet, *args)
+ toggle_award_emoji_snippet_path(snippet, *new_args)
+ end
+
+ def gitlab_toggle_award_emoji_snippet_url(snippet, *args)
+ new_args = snippet_query_params(snippet, *args)
+ toggle_award_emoji_snippet_url(snippet, *new_args)
+ end
+
+ private
+
+ def snippet_query_params(snippet, *args)
+ opts = case args.last
+ when Hash
+ args.pop
+ when ActionController::Parameters
+ args.pop.to_h
+ else
+ {}
+ end
+
+ args << opts
+ end
end
GitlabRoutingHelper.include_if_ee('EE::GitlabRoutingHelper')
diff --git a/app/helpers/hooks_helper.rb b/app/helpers/hooks_helper.rb
index c4b39939192..9466a37ed93 100644
--- a/app/helpers/hooks_helper.rb
+++ b/app/helpers/hooks_helper.rb
@@ -2,18 +2,40 @@
module HooksHelper
def link_to_test_hook(hook, trigger)
- path = case hook
- when ProjectHook
- project = hook.project
- test_project_hook_path(project, hook, trigger: trigger)
- when SystemHook
- test_admin_hook_path(hook, trigger: trigger)
- end
-
+ path = test_hook_path(hook, trigger)
trigger_human_name = trigger.to_s.tr('_', ' ').camelize
link_to path, rel: 'nofollow', method: :post do
content_tag(:span, trigger_human_name)
end
end
+
+ def test_hook_path(hook, trigger)
+ case hook
+ when ProjectHook
+ test_project_hook_path(hook.project, hook, trigger: trigger)
+ when SystemHook
+ test_admin_hook_path(hook, trigger: trigger)
+ end
+ end
+
+ def edit_hook_path(hook)
+ case hook
+ when ProjectHook
+ edit_project_hook_path(hook.project, hook)
+ when SystemHook
+ edit_admin_hook_path(hook)
+ end
+ end
+
+ def destroy_hook_path(hook)
+ case hook
+ when ProjectHook
+ project_hook_path(hook.project, hook)
+ when SystemHook
+ admin_hook_path(hook)
+ end
+ end
end
+
+HooksHelper.prepend_if_ee('EE::HooksHelper')
diff --git a/app/helpers/icons_helper.rb b/app/helpers/icons_helper.rb
index 4f73270577f..876789e0d4a 100644
--- a/app/helpers/icons_helper.rb
+++ b/app/helpers/icons_helper.rb
@@ -42,11 +42,9 @@ module IconsHelper
end
def sprite_icon(icon_name, size: nil, css_class: nil)
- if Gitlab::Sentry.should_raise_for_dev?
- unless known_sprites.include?(icon_name)
- exception = ArgumentError.new("#{icon_name} is not a known icon in @gitlab-org/gitlab-svg")
- raise exception
- end
+ if known_sprites&.exclude?(icon_name)
+ exception = ArgumentError.new("#{icon_name} is not a known icon in @gitlab-org/gitlab-svg")
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(exception)
end
css_classes = []
@@ -158,6 +156,8 @@ module IconsHelper
private
def known_sprites
+ return if Rails.env.production?
+
@known_sprites ||= JSON.parse(File.read(Rails.root.join('node_modules/@gitlab/svgs/dist/icons.json')))['icons']
end
end
diff --git a/app/helpers/issuables_helper.rb b/app/helpers/issuables_helper.rb
index 3c72f41a4c9..8c75a4a13e8 100644
--- a/app/helpers/issuables_helper.rb
+++ b/app/helpers/issuables_helper.rb
@@ -279,19 +279,30 @@ module IssuablesHelper
initialDescriptionText: issuable.description,
initialTaskStatus: issuable.task_status
}
+ data.merge!(issue_only_initial_data(issuable))
+ data.merge!(path_data(parent))
+ data.merge!(updated_at_by(issuable))
- data[:hasClosingMergeRequest] = issuable.merge_requests_count(current_user) != 0 if issuable.is_a?(Issue)
- data[:zoomMeetingUrl] = ZoomMeeting.canonical_meeting_url(issuable) if issuable.is_a?(Issue)
+ data
+ end
- if parent.is_a?(Group)
- data[:groupPath] = parent.path
- else
- data.merge!(projectPath: ref_project.path, projectNamespace: ref_project.namespace.full_path)
- end
+ def issue_only_initial_data(issuable)
+ return {} unless issuable.is_a?(Issue)
- data.merge!(updated_at_by(issuable))
+ {
+ hasClosingMergeRequest: issuable.merge_requests_count(current_user) != 0,
+ zoomMeetingUrl: ZoomMeeting.canonical_meeting_url(issuable),
+ sentryIssueIdentifier: SentryIssue.find_by(issue: issuable)&.sentry_issue_identifier # rubocop:disable CodeReuse/ActiveRecord
+ }
+ end
- data
+ def path_data(parent)
+ return { groupPath: parent.path } if parent.is_a?(Group)
+
+ {
+ projectPath: ref_project.path,
+ projectNamespace: ref_project.namespace.full_path
+ }
end
def updated_at_by(issuable)
@@ -391,6 +402,10 @@ module IssuablesHelper
end
end
+ def issuable_templates_names(issuable)
+ issuable_templates(issuable).map { |template| template[:name] }
+ end
+
def selected_template(issuable)
params[:issuable_template] if issuable_templates(issuable).any? { |template| template[:name] == params[:issuable_template] }
end
diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb
index 6375513f514..34b6ba05a62 100644
--- a/app/helpers/issues_helper.rb
+++ b/app/helpers/issues_helper.rb
@@ -183,4 +183,4 @@ module IssuesHelper
module_function :url_for_tracker_issue
end
-IssuesHelper.include_if_ee('EE::IssuesHelper')
+IssuesHelper.prepend_if_ee('EE::IssuesHelper')
diff --git a/app/helpers/labels_helper.rb b/app/helpers/labels_helper.rb
index 3a872622e73..0d3cf4d73fb 100644
--- a/app/helpers/labels_helper.rb
+++ b/app/helpers/labels_helper.rb
@@ -47,11 +47,11 @@ module LabelsHelper
end
end
- def render_label(label, tooltip: true, link: nil, css: nil)
+ def render_label(label, tooltip: true, link: nil, css: nil, dataset: nil)
# if scoped label is used then EE wraps label tag with scoped label
# doc link
html = render_colored_label(label, tooltip: tooltip)
- html = link_to(html, link, class: css) if link
+ html = link_to(html, link, class: css, data: dataset) if link
html
end
diff --git a/app/helpers/merge_requests_helper.rb b/app/helpers/merge_requests_helper.rb
index b8f6458b499..7940ec1162b 100644
--- a/app/helpers/merge_requests_helper.rb
+++ b/app/helpers/merge_requests_helper.rb
@@ -1,6 +1,8 @@
# frozen_string_literal: true
module MergeRequestsHelper
+ include Gitlab::Utils::StrongMemoize
+
def new_mr_path_from_push_event(event)
target_project = event.project.default_merge_request_target
project_new_merge_request_path(
@@ -27,6 +29,16 @@ module MergeRequestsHelper
classes.join(' ')
end
+ def state_name_with_icon(merge_request)
+ if merge_request.merged?
+ [_("Merged"), "git-merge"]
+ elsif merge_request.closed?
+ [_("Closed"), "close"]
+ else
+ [_("Open"), "issue-open-m"]
+ end
+ end
+
def ci_build_details_path(merge_request)
build_url = merge_request.source_project.ci_service.build_page(merge_request.diff_head_sha, merge_request.source_branch)
return unless build_url
@@ -76,7 +88,7 @@ module MergeRequestsHelper
def target_projects(project)
MergeRequestTargetProjectFinder.new(current_user: current_user, source_project: project)
- .execute
+ .execute(include_routes: true)
end
def merge_request_button_visibility(merge_request, closed)
@@ -158,6 +170,12 @@ module MergeRequestsHelper
current_user.fork_of(project)
end
end
+
+ def mr_tabs_position_enabled?
+ strong_memoize(:mr_tabs_position_enabled) do
+ Feature.enabled?(:mr_tabs_position, @project, default_enabled: true)
+ end
+ end
end
MergeRequestsHelper.prepend_if_ee('EE::MergeRequestsHelper')
diff --git a/app/helpers/nav_helper.rb b/app/helpers/nav_helper.rb
index 2ce45cec878..6013475acb1 100644
--- a/app/helpers/nav_helper.rb
+++ b/app/helpers/nav_helper.rb
@@ -87,7 +87,7 @@ module NavHelper
end
if Feature.enabled?(:user_mode_in_session)
- if current_user&.admin? && current_user_mode&.admin_mode?
+ if current_user_mode.admin_mode?
links << :admin_mode
end
end
diff --git a/app/helpers/notes_helper.rb b/app/helpers/notes_helper.rb
index fbbdebaa623..acf9f8c5b5b 100644
--- a/app/helpers/notes_helper.rb
+++ b/app/helpers/notes_helper.rb
@@ -95,7 +95,7 @@ module NotesHelper
def notes_url(params = {})
if @snippet.is_a?(PersonalSnippet)
- snippet_notes_path(@snippet, params)
+ gitlab_snippet_notes_path(@snippet, params)
else
params.merge!(target_id: @noteable.id, target_type: @noteable.class.name.underscore)
@@ -105,7 +105,7 @@ module NotesHelper
def note_url(note, project = @project)
if note.noteable.is_a?(PersonalSnippet)
- snippet_note_path(note.noteable, note)
+ gitlab_snippet_note_path(note.noteable, note)
else
project_note_path(project, note)
end
@@ -126,7 +126,7 @@ module NotesHelper
def new_form_url
return unless @snippet.is_a?(PersonalSnippet)
- snippet_notes_path(@snippet)
+ gitlab_snippet_notes_path(@snippet)
end
def can_create_note?
diff --git a/app/helpers/projects/error_tracking_helper.rb b/app/helpers/projects/error_tracking_helper.rb
index c31e16e7150..de21a78f5f0 100644
--- a/app/helpers/projects/error_tracking_helper.rb
+++ b/app/helpers/projects/error_tracking_helper.rb
@@ -18,6 +18,7 @@ module Projects::ErrorTrackingHelper
opts = [project, issue_id, { format: :json }]
{
+ 'project-issues-path' => project_issues_path(project),
'issue-details-path' => details_project_error_tracking_index_path(*opts),
'issue-stack-trace-path' => stack_trace_project_error_tracking_index_path(*opts)
}
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index c68b6bdea0f..d683faf6a20 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -114,8 +114,10 @@ module ProjectsHelper
source = visible_fork_source(project)
if source
- _('This will remove the fork relationship between this project and %{fork_source}.') %
+ msg = _('This will remove the fork relationship between this project and %{fork_source}.') %
{ fork_source: link_to(source.full_name, project_path(source)) }
+
+ msg.html_safe
else
_('This will remove the fork relationship between this project and other projects in the fork network.')
end
@@ -195,6 +197,7 @@ module ProjectsHelper
"cross-project:#{can?(current_user, :read_cross_project)}",
max_project_member_access_cache_key(project),
pipeline_status,
+ Gitlab::I18n.locale,
'v2.6'
]
@@ -683,6 +686,7 @@ module ProjectsHelper
error_tracking
user
gcp
+ logs
]
end
@@ -696,4 +700,8 @@ module ProjectsHelper
def vue_file_list_enabled?
Feature.enabled?(:vue_file_list, @project)
end
+
+ def show_visibility_confirm_modal?(project)
+ project.unlink_forks_upon_visibility_decrease_enabled? && project.visibility_level > Gitlab::VisibilityLevel::PRIVATE && project.forks_count > 0
+ end
end
diff --git a/app/helpers/search_helper.rb b/app/helpers/search_helper.rb
index 777fe82e4c0..a89fea4b7b8 100644
--- a/app/helpers/search_helper.rb
+++ b/app/helpers/search_helper.rb
@@ -31,13 +31,14 @@ module SearchHelper
from = collection.offset_value + 1
to = collection.offset_value + collection.to_a.size
count = collection.total_count
+ term_element = "<span>&nbsp;<code>#{h(term)}</code>&nbsp;</span>".html_safe
search_entries_info_template(collection) % {
from: from,
to: to,
count: count,
scope: search_entries_scope_label(scope, count),
- term: term
+ term_element: term_element
}
end
@@ -72,9 +73,9 @@ module SearchHelper
def search_entries_info_template(collection)
if collection.total_pages > 1
- s_("SearchResults|Showing %{from} - %{to} of %{count} %{scope} for \"%{term}\"")
+ s_("SearchResults|Showing %{from} - %{to} of %{count} %{scope} for%{term_element}").html_safe
else
- s_("SearchResults|Showing %{count} %{scope} for \"%{term}\"")
+ s_("SearchResults|Showing %{count} %{scope} for%{term_element}").html_safe
end
end
diff --git a/app/helpers/services_helper.rb b/app/helpers/services_helper.rb
index 19a27ba3499..caef6dba212 100644
--- a/app/helpers/services_helper.rb
+++ b/app/helpers/services_helper.rb
@@ -31,6 +31,26 @@ module ServicesHelper
"#{event}_events"
end
+ def service_event_action_field_name(action)
+ "#{action}_on_event_enabled"
+ end
+
+ def event_action_title(action)
+ case action
+ when "comment"
+ s_("ProjectService|Comment")
+ else
+ action.humanize
+ end
+ end
+
+ def event_action_description(action)
+ case action
+ when "comment"
+ s_("ProjectService|Comment will be posted on each event")
+ end
+ end
+
def service_save_button(service)
button_tag(class: 'btn btn-success', type: 'submit', disabled: service.deprecated?, data: { qa_selector: 'save_changes_button' }) do
icon('spinner spin', class: 'hidden js-btn-spinner') +
diff --git a/app/helpers/snippets_helper.rb b/app/helpers/snippets_helper.rb
index 10e31fb8888..1c7690f30d2 100644
--- a/app/helpers/snippets_helper.rb
+++ b/app/helpers/snippets_helper.rb
@@ -11,33 +11,9 @@ module SnippetsHelper
end
end
- def reliable_snippet_path(snippet, opts = {})
- reliable_snippet_url(snippet, opts.merge(only_path: true))
- end
-
- def reliable_raw_snippet_path(snippet, opts = {})
- reliable_raw_snippet_url(snippet, opts.merge(only_path: true))
- end
-
- def reliable_snippet_url(snippet, opts = {})
- if snippet.project_id?
- project_snippet_url(snippet.project, snippet, nil, opts)
- else
- snippet_url(snippet, nil, opts)
- end
- end
-
- def reliable_raw_snippet_url(snippet, opts = {})
- if snippet.project_id?
- raw_project_snippet_url(snippet.project, snippet, nil, opts)
- else
- raw_snippet_url(snippet, nil, opts)
- end
- end
-
def download_raw_snippet_button(snippet)
link_to(icon('download'),
- reliable_raw_snippet_path(snippet, inline: false),
+ gitlab_raw_snippet_path(snippet, inline: false),
target: '_blank',
rel: 'noopener noreferrer',
class: "btn btn-sm has-tooltip",
@@ -133,7 +109,18 @@ module SnippetsHelper
end
def snippet_embed_tag(snippet)
- content_tag(:script, nil, src: reliable_snippet_url(snippet, format: :js, only_path: false))
+ content_tag(:script, nil, src: gitlab_snippet_url(snippet, format: :js))
+ end
+
+ def snippet_embed_input(snippet)
+ content_tag(:input,
+ nil,
+ type: :text,
+ readonly: true,
+ class: 'js-snippet-url-area snippet-embed-input form-control',
+ data: { url: gitlab_snippet_url(snippet) },
+ value: snippet_embed_tag(snippet),
+ autocomplete: 'off')
end
def snippet_badge(snippet)
@@ -158,7 +145,7 @@ module SnippetsHelper
return if blob.empty? || blob.binary? || blob.stored_externally?
link_to(external_snippet_icon('doc-code'),
- reliable_raw_snippet_url(@snippet),
+ gitlab_raw_snippet_url(@snippet),
class: 'btn',
target: '_blank',
rel: 'noopener noreferrer',
@@ -167,7 +154,7 @@ module SnippetsHelper
def embedded_snippet_download_button
link_to(external_snippet_icon('download'),
- reliable_raw_snippet_url(@snippet, inline: false),
+ gitlab_raw_snippet_url(@snippet, inline: false),
class: 'btn',
target: '_blank',
title: 'Download',
diff --git a/app/helpers/todos_helper.rb b/app/helpers/todos_helper.rb
index dce0842060d..0211a22a8c4 100644
--- a/app/helpers/todos_helper.rb
+++ b/app/helpers/todos_helper.rb
@@ -205,4 +205,4 @@ module TodosHelper
end
end
-TodosHelper.prepend_if_ee('EE::NotesHelper'); TodosHelper.prepend_if_ee('EE::TodosHelper') # rubocop: disable Style/Semicolon
+TodosHelper.prepend_if_ee('EE::TodosHelper')
diff --git a/app/helpers/tree_helper.rb b/app/helpers/tree_helper.rb
index fc25b78da93..af1919eeb40 100644
--- a/app/helpers/tree_helper.rb
+++ b/app/helpers/tree_helper.rb
@@ -158,7 +158,9 @@ module TreeHelper
def breadcrumb_data_attributes
attrs = {
can_collaborate: can_collaborate_with_project?(@project).to_s,
- new_blob_path: project_new_blob_path(@project, @id),
+ new_blob_path: project_new_blob_path(@project, @ref),
+ upload_path: project_create_blob_path(@project, @ref),
+ new_dir_path: project_create_dir_path(@project, @ref),
new_branch_path: new_project_branch_path(@project),
new_tag_path: new_project_tag_path(@project),
can_edit_tree: can_edit_tree?.to_s
diff --git a/app/helpers/user_callouts_helper.rb b/app/helpers/user_callouts_helper.rb
index cae3ec5f8d0..11b78b8fd59 100644
--- a/app/helpers/user_callouts_helper.rb
+++ b/app/helpers/user_callouts_helper.rb
@@ -4,6 +4,7 @@ module UserCalloutsHelper
GKE_CLUSTER_INTEGRATION = 'gke_cluster_integration'
GCP_SIGNUP_OFFER = 'gcp_signup_offer'
SUGGEST_POPOVER_DISMISSED = 'suggest_popover_dismissed'
+ TABS_POSITION_HIGHLIGHT = 'tabs_position_highlight'
def show_gke_cluster_integration_callout?(project)
can?(current_user, :create_cluster, project) &&
@@ -25,6 +26,10 @@ module UserCalloutsHelper
!user_dismissed?(SUGGEST_POPOVER_DISMISSED)
end
+ def show_tabs_feature_highlight?
+ !user_dismissed?(TABS_POSITION_HIGHLIGHT) && !Rails.env.test?
+ end
+
private
def user_dismissed?(feature_name)
diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb
index ef0cb8b4bcb..e87bb27cf62 100644
--- a/app/helpers/users_helper.rb
+++ b/app/helpers/users_helper.rb
@@ -44,6 +44,14 @@ module UsersHelper
current_user_menu_items.include?(item)
end
+ # Used to preload when you are rendering many projects and checking access
+ #
+ # rubocop: disable CodeReuse/ActiveRecord: `projects` can be array which also responds to pluck
+ def load_max_project_member_accesses(projects)
+ current_user&.max_member_access_for_project_ids(projects.pluck(:id))
+ end
+ # rubocop: enable CodeReuse/ActiveRecord
+
def max_project_member_access(project)
current_user&.max_member_access_for_project(project.id) || Gitlab::Access::NO_ACCESS
end
@@ -57,7 +65,7 @@ module UsersHelper
unless user.association(:status).loaded?
exception = RuntimeError.new("Status was not preloaded")
- Gitlab::Sentry.track_exception(exception, extra: { user: user.inspect })
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(exception, user: user.inspect)
end
return unless user.status
diff --git a/app/mailers/emails/notes.rb b/app/mailers/emails/notes.rb
index a1c8c3455b5..de70d0073b3 100644
--- a/app/mailers/emails/notes.rb
+++ b/app/mailers/emails/notes.rb
@@ -38,7 +38,7 @@ module Emails
setup_note_mail(note_id, recipient_id)
@snippet = @note.noteable
- @target_url = snippet_url(@note.noteable)
+ @target_url = gitlab_snippet_url(@note.noteable)
mail_answer_note_thread(@snippet, @note, note_thread_options(recipient_id, reason))
end
diff --git a/app/mailers/emails/profile.rb b/app/mailers/emails/profile.rb
index 2ea1aea1f51..441439444d5 100644
--- a/app/mailers/emails/profile.rb
+++ b/app/mailers/emails/profile.rb
@@ -32,5 +32,19 @@ module Emails
mail(to: @user.notification_email, subject: subject("GPG key was added to your account"))
end
# rubocop: enable CodeReuse/ActiveRecord
+
+ def access_token_about_to_expire_email(user)
+ return unless user
+
+ @user = user
+ @target_url = profile_personal_access_tokens_url
+ @days_to_expire = PersonalAccessToken::DAYS_TO_EXPIRE
+
+ Gitlab::I18n.with_locale(@user.preferred_language) do
+ mail(to: @user.notification_email, subject: subject(_("Your Personal Access Tokens will expire in %{days_to_expire} days or less") % { days_to_expire: @days_to_expire }))
+ end
+ end
end
end
+
+Emails::Profile.prepend_if_ee('EE::Emails::Profile')
diff --git a/app/models/active_session.rb b/app/models/active_session.rb
index 00192b1da59..3ecc3137157 100644
--- a/app/models/active_session.rb
+++ b/app/models/active_session.rb
@@ -4,6 +4,7 @@ class ActiveSession
include ActiveModel::Model
SESSION_BATCH_SIZE = 200
+ ALLOWED_NUMBER_OF_ACTIVE_SESSIONS = 100
attr_accessor :created_at, :updated_at,
:session_id, :ip_address,
@@ -65,21 +66,22 @@ class ActiveSession
def self.destroy(user, session_id)
Gitlab::Redis::SharedState.with do |redis|
- redis.srem(lookup_key_name(user.id), session_id)
+ destroy_sessions(redis, user, [session_id])
+ end
+ end
- deleted_keys = redis.del(key_name(user.id, session_id))
+ def self.destroy_sessions(redis, user, session_ids)
+ key_names = session_ids.map {|session_id| key_name(user.id, session_id) }
+ session_names = session_ids.map {|session_id| "#{Gitlab::Redis::SharedState::SESSION_NAMESPACE}:#{session_id}" }
- # only allow deleting the devise session if we could actually find a
- # related active session. this prevents another user from deleting
- # someone else's session.
- if deleted_keys > 0
- redis.del("#{Gitlab::Redis::SharedState::SESSION_NAMESPACE}:#{session_id}")
- end
- end
+ redis.srem(lookup_key_name(user.id), session_ids)
+ redis.del(key_names)
+ redis.del(session_names)
end
def self.cleanup(user)
Gitlab::Redis::SharedState.with do |redis|
+ clean_up_old_sessions(redis, user)
cleaned_up_lookup_entries(redis, user)
end
end
@@ -118,19 +120,40 @@ class ActiveSession
end
end
- def self.raw_active_session_entries(session_ids, user_id)
+ def self.raw_active_session_entries(redis, session_ids, user_id)
return [] if session_ids.empty?
- Gitlab::Redis::SharedState.with do |redis|
- entry_keys = session_ids.map { |session_id| key_name(user_id, session_id) }
+ entry_keys = session_ids.map { |session_id| key_name(user_id, session_id) }
+
+ redis.mget(entry_keys)
+ end
- redis.mget(entry_keys)
+ def self.active_session_entries(session_ids, user_id, redis)
+ return [] if session_ids.empty?
+
+ entry_keys = raw_active_session_entries(redis, session_ids, user_id)
+
+ entry_keys.compact.map do |raw_session|
+ Marshal.load(raw_session) # rubocop:disable Security/MarshalLoad
end
end
+ def self.clean_up_old_sessions(redis, user)
+ session_ids = session_ids_for_user(user.id)
+
+ return if session_ids.count <= ALLOWED_NUMBER_OF_ACTIVE_SESSIONS
+
+ # remove sessions if there are more than ALLOWED_NUMBER_OF_ACTIVE_SESSIONS.
+ sessions = active_session_entries(session_ids, user.id, redis)
+ sessions.sort_by! {|session| session.updated_at }.reverse!
+ sessions = sessions.drop(ALLOWED_NUMBER_OF_ACTIVE_SESSIONS)
+ sessions = sessions.map { |session| session.session_id }
+ destroy_sessions(redis, user, sessions) if sessions.any?
+ end
+
def self.cleaned_up_lookup_entries(redis, user)
session_ids = session_ids_for_user(user.id)
- entries = raw_active_session_entries(session_ids, user.id)
+ entries = raw_active_session_entries(redis, session_ids, user.id)
# remove expired keys.
# only the single key entries are automatically expired by redis, the
diff --git a/app/models/application_setting.rb b/app/models/application_setting.rb
index 72605af433f..456b6430088 100644
--- a/app/models/application_setting.rb
+++ b/app/models/application_setting.rb
@@ -6,12 +6,6 @@ class ApplicationSetting < ApplicationRecord
include TokenAuthenticatable
include ChronicDurationAttribute
- # Only remove this >= %12.6 and >= 2019-12-01
- self.ignored_columns += %i[
- pendo_enabled
- pendo_url
- ]
-
add_authentication_token_field :runners_registration_token, encrypted: -> { Feature.enabled?(:application_settings_tokens_optional_encryption, default_enabled: true) ? :optional : :required }
add_authentication_token_field :health_check_access_token
add_authentication_token_field :static_objects_external_storage_auth_token
@@ -52,6 +46,12 @@ class ApplicationSetting < ApplicationRecord
presence: true,
numericality: { only_integer: true, greater_than_or_equal_to: 0 }
+ validates :minimum_password_length,
+ presence: true,
+ numericality: { only_integer: true,
+ greater_than_or_equal_to: DEFAULT_MINIMUM_PASSWORD_LENGTH,
+ less_than_or_equal_to: Devise.password_length.max }
+
validates :home_page_url,
allow_blank: true,
addressable_url: true,
@@ -229,6 +229,8 @@ class ApplicationSetting < ApplicationRecord
validates :push_event_activities_limit,
numericality: { greater_than_or_equal_to: 0 }
+ validates :snippet_size_limit, numericality: { only_integer: true, greater_than: 0 }
+
SUPPORTED_KEY_TYPES.each do |type|
validates :"#{type}_key_restriction", presence: true, key_restriction: { type: type }
end
diff --git a/app/models/application_setting_implementation.rb b/app/models/application_setting_implementation.rb
index 7bb89f0d1e2..98d8bb43b93 100644
--- a/app/models/application_setting_implementation.rb
+++ b/app/models/application_setting_implementation.rb
@@ -26,9 +26,12 @@ module ApplicationSettingImplementation
'/users',
'/users/confirmation',
'/unsubscribes/',
- '/import/github/personal_access_token'
+ '/import/github/personal_access_token',
+ '/admin/session'
].freeze
+ DEFAULT_MINIMUM_PASSWORD_LENGTH = 8
+
class_methods do
def defaults
{
@@ -105,6 +108,7 @@ module ApplicationSettingImplementation
sourcegraph_enabled: false,
sourcegraph_url: nil,
sourcegraph_public_only: true,
+ minimum_password_length: DEFAULT_MINIMUM_PASSWORD_LENGTH,
terminal_max_session_time: 0,
throttle_authenticated_api_enabled: false,
throttle_authenticated_api_period_in_seconds: 3600,
@@ -139,7 +143,8 @@ module ApplicationSettingImplementation
snowplow_app_id: nil,
snowplow_iglu_registry_url: nil,
custom_http_clone_url_root: nil,
- productivity_analytics_start_date: Time.now
+ productivity_analytics_start_date: Time.now,
+ snippet_size_limit: 50.megabytes
}
end
diff --git a/app/models/badge.rb b/app/models/badge.rb
index 50299cd6652..eb351425e66 100644
--- a/app/models/badge.rb
+++ b/app/models/badge.rb
@@ -22,6 +22,8 @@ class Badge < ApplicationRecord
scope :order_created_at_asc, -> { reorder(created_at: :asc) }
+ scope :with_name, ->(name) { where(name: name) }
+
validates :link_url, :image_url, addressable_url: true
validates :type, presence: true
diff --git a/app/models/blob.rb b/app/models/blob.rb
index cc089715b06..0a425f2b961 100644
--- a/app/models/blob.rb
+++ b/app/models/blob.rb
@@ -4,6 +4,7 @@
class Blob < SimpleDelegator
include Presentable
include BlobLanguageFromGitAttributes
+ include BlobActiveModel
CACHE_TIME = 60 # Cache raw blobs referred to by a (mutable) ref for 1 minute
CACHE_TIME_IMMUTABLE = 3600 # Cache blobs referred to by an immutable reference for 1 hour
@@ -26,6 +27,7 @@ class Blob < SimpleDelegator
BlobViewer::Markup,
BlobViewer::Notebook,
BlobViewer::SVG,
+ BlobViewer::OpenApi,
BlobViewer::Image,
BlobViewer::Sketch,
diff --git a/app/models/blob_viewer/open_api.rb b/app/models/blob_viewer/open_api.rb
new file mode 100644
index 00000000000..963b7336c8d
--- /dev/null
+++ b/app/models/blob_viewer/open_api.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+module BlobViewer
+ class OpenApi < Base
+ include Rich
+ include ClientSide
+
+ self.partial_name = 'openapi'
+ self.file_types = %i(openapi)
+ self.binary = false
+ # TODO: get an icon for OpenAPI
+ self.switcher_icon = 'file-pdf-o'
+ self.switcher_title = 'OpenAPI'
+ end
+end
diff --git a/app/models/broadcast_message.rb b/app/models/broadcast_message.rb
index dfcf28763ee..b3d72ebdcf3 100644
--- a/app/models/broadcast_message.rb
+++ b/app/models/broadcast_message.rb
@@ -9,6 +9,7 @@ class BroadcastMessage < ApplicationRecord
validates :message, presence: true
validates :starts_at, presence: true
validates :ends_at, presence: true
+ validates :broadcast_type, presence: true
validates :color, allow_blank: true, color: true
validates :font, allow_blank: true, color: true
@@ -17,35 +18,62 @@ class BroadcastMessage < ApplicationRecord
default_value_for :font, '#FFFFFF'
CACHE_KEY = 'broadcast_message_current_json'
+ BANNER_CACHE_KEY = 'broadcast_message_current_banner_json'
+ NOTIFICATION_CACHE_KEY = 'broadcast_message_current_notification_json'
after_commit :flush_redis_cache
- def self.current
- messages = cache.fetch(CACHE_KEY, as: BroadcastMessage, expires_in: cache_expires_in) do
- current_and_future_messages
+ enum broadcast_type: {
+ banner: 1,
+ notification: 2
+ }
+
+ class << self
+ def current_banner_messages(current_path = nil)
+ fetch_messages BANNER_CACHE_KEY, current_path do
+ current_and_future_messages.banner
+ end
end
- return [] unless messages&.present?
+ def current_notification_messages(current_path = nil)
+ fetch_messages NOTIFICATION_CACHE_KEY, current_path do
+ current_and_future_messages.notification
+ end
+ end
- now_or_future = messages.select(&:now_or_future?)
+ def current(current_path = nil)
+ fetch_messages CACHE_KEY, current_path do
+ current_and_future_messages
+ end
+ end
- # If there are cached entries but none are to be displayed we'll purge the
- # cache so we don't keep running this code all the time.
- cache.expire(CACHE_KEY) if now_or_future.empty?
+ def current_and_future_messages
+ where('ends_at > :now', now: Time.current).order_id_asc
+ end
- now_or_future.select(&:now?)
- end
+ def cache
+ Gitlab::JsonCache.new(cache_key_with_version: false)
+ end
- def self.current_and_future_messages
- where('ends_at > :now', now: Time.zone.now).order_id_asc
- end
+ def cache_expires_in
+ 2.weeks
+ end
- def self.cache
- Gitlab::JsonCache.new(cache_key_with_version: false)
- end
+ private
- def self.cache_expires_in
- 2.weeks
+ def fetch_messages(cache_key, current_path)
+ messages = cache.fetch(cache_key, as: BroadcastMessage, expires_in: cache_expires_in) do
+ yield
+ end
+
+ now_or_future = messages.select(&:now_or_future?)
+
+ # If there are cached entries but none are to be displayed we'll purge the
+ # cache so we don't keep running this code all the time.
+ cache.expire(cache_key) if now_or_future.empty?
+
+ now_or_future.select(&:now?).select { |message| message.matches_current_path(current_path) }
+ end
end
def active?
@@ -53,27 +81,35 @@ class BroadcastMessage < ApplicationRecord
end
def started?
- Time.zone.now >= starts_at
+ Time.current >= starts_at
end
def ended?
- ends_at < Time.zone.now
+ ends_at < Time.current
end
def now?
- (starts_at..ends_at).cover?(Time.zone.now)
+ (starts_at..ends_at).cover?(Time.current)
end
def future?
- starts_at > Time.zone.now
+ starts_at > Time.current
end
def now_or_future?
now? || future?
end
+ def matches_current_path(current_path)
+ return true if current_path.blank? || target_path.blank?
+
+ current_path.match(Regexp.escape(target_path).gsub('\\*', '.*'))
+ end
+
def flush_redis_cache
- self.class.cache.expire(CACHE_KEY)
+ [CACHE_KEY, BANNER_CACHE_KEY, NOTIFICATION_CACHE_KEY].each do |key|
+ self.class.cache.expire(key)
+ end
end
end
diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb
index 49c5b67d600..7e7c580a48e 100644
--- a/app/models/ci/build.rb
+++ b/app/models/ci/build.rb
@@ -13,17 +13,11 @@ module Ci
include Importable
include Gitlab::Utils::StrongMemoize
include HasRef
+ include IgnorableColumns
BuildArchivedError = Class.new(StandardError)
- self.ignored_columns += %i[
- artifacts_file
- artifacts_file_store
- artifacts_metadata
- artifacts_metadata_store
- artifacts_size
- commands
- ]
+ ignore_columns :artifacts_file, :artifacts_file_store, :artifacts_metadata, :artifacts_metadata_store, :artifacts_size, :commands, remove_after: '2019-12-15', remove_with: '12.7'
belongs_to :project, inverse_of: :builds
belongs_to :runner
@@ -120,6 +114,20 @@ module Ci
scope :eager_load_job_artifacts, -> { includes(:job_artifacts) }
+ scope :eager_load_everything, -> do
+ includes(
+ [
+ { pipeline: [:project, :user] },
+ :job_artifacts_archive,
+ :metadata,
+ :trigger_request,
+ :project,
+ :user,
+ :tags
+ ]
+ )
+ end
+
scope :with_exposed_artifacts, -> do
joins(:metadata).merge(Ci::BuildMetadata.with_exposed_artifacts)
.includes(:metadata, :job_artifacts_metadata)
@@ -161,6 +169,7 @@ module Ci
end
scope :queued_before, ->(time) { where(arel_table[:queued_at].lt(time)) }
+ scope :order_id_desc, -> { order('ci_builds.id DESC') }
acts_as_taggable
@@ -247,10 +256,11 @@ module Ci
end
after_transition pending: :running do |build|
- build.pipeline.persistent_ref.create
build.deployment&.run
build.run_after_commit do
+ build.pipeline.persistent_ref.create
+
BuildHooksWorker.perform_async(id)
end
end
@@ -277,7 +287,7 @@ module Ci
begin
build.deployment.drop!
rescue => e
- Gitlab::Sentry.track_exception(e, extra: { build_id: build.id })
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(e, build_id: build.id)
end
true
@@ -415,6 +425,18 @@ module Ci
end
end
+ def expanded_kubernetes_namespace
+ return unless has_environment?
+
+ namespace = options.dig(:environment, :kubernetes, :namespace)
+
+ if namespace.present?
+ strong_memoize(:expanded_kubernetes_namespace) do
+ ExpandVariables.expand(namespace, -> { simple_variables })
+ end
+ end
+ end
+
def has_environment?
environment.present?
end
@@ -640,9 +662,8 @@ module Ci
def execute_hooks
return unless project
- build_data = Gitlab::DataBuilder::Build.build(self)
- project.execute_hooks(build_data.dup, :job_hooks)
- project.execute_services(build_data.dup, :job_hooks)
+ project.execute_hooks(build_data.dup, :job_hooks) if project.has_active_hooks?(:job_hooks)
+ project.execute_services(build_data.dup, :job_hooks) if project.has_active_services?(:job_hooks)
end
def browsable_artifacts?
@@ -741,6 +762,10 @@ module Ci
Gitlab::Ci::Build::Credentials::Factory.new(self).create!
end
+ def all_dependencies
+ (dependencies + cross_dependencies).uniq
+ end
+
def dependencies
return [] if empty_dependencies?
@@ -748,7 +773,7 @@ module Ci
# find all jobs that are needed
if Feature.enabled?(:ci_dag_support, project, default_enabled: true) && needs.exists?
- depended_jobs = depended_jobs.where(name: needs.select(:name))
+ depended_jobs = depended_jobs.where(name: needs.artifacts.select(:name))
end
# find all jobs that are dependent on
@@ -756,9 +781,15 @@ module Ci
depended_jobs = depended_jobs.where(name: options[:dependencies])
end
+ # if both needs and dependencies are used,
+ # the end result will be an intersection between them
depended_jobs
end
+ def cross_dependencies
+ []
+ end
+
def empty_dependencies?
options[:dependencies]&.empty?
end
@@ -849,6 +880,10 @@ module Ci
private
+ def build_data
+ @build_data ||= Gitlab::DataBuilder::Build.build(self)
+ end
+
def successful_deployment_status
if deployment&.last?
:last
@@ -860,7 +895,7 @@ module Ci
def each_report(report_types)
job_artifacts_for_types(report_types).each do |report_artifact|
report_artifact.each_blob do |blob|
- yield report_artifact.file_type, blob
+ yield report_artifact.file_type, blob, report_artifact
end
end
end
diff --git a/app/models/ci/build_need.rb b/app/models/ci/build_need.rb
index 6531dfd332f..0b243c20e67 100644
--- a/app/models/ci/build_need.rb
+++ b/app/models/ci/build_need.rb
@@ -10,5 +10,6 @@ module Ci
validates :name, presence: true, length: { maximum: 128 }
scope :scoped_build, -> { where('ci_builds.id=ci_build_needs.build_id') }
+ scope :artifacts, -> { where(artifacts: true) }
end
end
diff --git a/app/models/ci/build_trace_section.rb b/app/models/ci/build_trace_section.rb
index 7fe6b753da1..8be42eb48d6 100644
--- a/app/models/ci/build_trace_section.rb
+++ b/app/models/ci/build_trace_section.rb
@@ -4,9 +4,6 @@ module Ci
class BuildTraceSection < ApplicationRecord
extend Gitlab::Ci::Model
- # Only remove > 2019-11-22 and > 12.5
- self.ignored_columns += %i[id]
-
belongs_to :build, class_name: 'Ci::Build'
belongs_to :project
belongs_to :section_name, class_name: 'Ci::BuildTraceSectionName'
diff --git a/app/models/ci/legacy_stage.rb b/app/models/ci/legacy_stage.rb
index 2fd369c9aff..0a67a652e22 100644
--- a/app/models/ci/legacy_stage.rb
+++ b/app/models/ci/legacy_stage.rb
@@ -5,6 +5,7 @@ module Ci
# We should migrate this object to actual database record in the future
class LegacyStage
include StaticModel
+ include Presentable
attr_reader :pipeline, :name
diff --git a/app/models/ci/persistent_ref.rb b/app/models/ci/persistent_ref.rb
index be3d4aa3203..76139f5d676 100644
--- a/app/models/ci/persistent_ref.rb
+++ b/app/models/ci/persistent_ref.rb
@@ -14,31 +14,41 @@ module Ci
delegate :ref_exists?, :create_ref, :delete_refs, to: :repository
def exist?
+ return unless enabled?
+
ref_exists?(path)
rescue
false
end
def create
- return if exist?
+ return unless enabled?
create_ref(sha, path)
rescue => e
- Gitlab::Sentry
- .track_acceptable_exception(e, extra: { pipeline_id: pipeline.id })
+ Gitlab::ErrorTracking
+ .track_exception(e, pipeline_id: pipeline.id)
end
def delete
+ return unless enabled?
+
delete_refs(path)
rescue Gitlab::Git::Repository::NoRepository
# no-op
rescue => e
- Gitlab::Sentry
- .track_acceptable_exception(e, extra: { pipeline_id: pipeline.id })
+ Gitlab::ErrorTracking
+ .track_exception(e, pipeline_id: pipeline.id)
end
def path
"refs/#{Repository::REF_PIPELINES}/#{pipeline.id}"
end
+
+ private
+
+ def enabled?
+ Feature.enabled?(:depend_on_persistent_pipeline_ref, project, default_enabled: true)
+ end
end
end
diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb
index f730b949ee9..29ec41ef1a1 100644
--- a/app/models/ci/pipeline.rb
+++ b/app/models/ci/pipeline.rb
@@ -14,6 +14,7 @@ module Ci
include HasRef
include ShaAttribute
include FromUnion
+ include UpdatedAtFilterable
sha_attribute :source_sha
sha_attribute :target_sha
@@ -204,15 +205,7 @@ module Ci
end
scope :internal, -> { where(source: internal_sources) }
- scope :ci_sources, -> { where(config_source: ci_sources_values) }
-
- scope :sort_by_merge_request_pipelines, -> do
- sql = 'CASE ci_pipelines.source WHEN (?) THEN 0 ELSE 1 END, ci_pipelines.id DESC'
- query = ApplicationRecord.send(:sanitize_sql_array, [sql, sources[:merge_request_event]]) # rubocop:disable GitlabSecurity/PublicSend
-
- order(Arel.sql(query))
- end
-
+ scope :ci_sources, -> { where(config_source: ::Ci::PipelineEnums.ci_config_sources_values) }
scope :for_user, -> (user) { where(user: user) }
scope :for_sha, -> (sha) { where(sha: sha) }
scope :for_source_sha, -> (source_sha) { where(source_sha: source_sha) }
@@ -221,22 +214,6 @@ module Ci
scope :for_id, -> (id) { where(id: id) }
scope :created_after, -> (time) { where('ci_pipelines.created_at > ?', time) }
- scope :triggered_by_merge_request, -> (merge_request) do
- where(source: :merge_request_event, merge_request: merge_request)
- end
-
- scope :detached_merge_request_pipelines, -> (merge_request, sha) do
- triggered_by_merge_request(merge_request).for_sha(sha)
- end
-
- scope :merge_request_pipelines, -> (merge_request, source_sha) do
- triggered_by_merge_request(merge_request).for_source_sha(source_sha)
- end
-
- scope :triggered_for_branch, -> (ref) do
- where(source: branch_pipeline_sources).where(ref: ref, tag: false)
- end
-
scope :with_reports, -> (reports_scope) do
where('EXISTS (?)', ::Ci::Build.latest.with_reports(reports_scope).where('ci_pipelines.id=ci_builds.commit_id').select(1))
end
@@ -323,11 +300,6 @@ module Ci
end
end
- def self.latest_for_shas(shas)
- max_id_per_sha = for_sha(shas).group(:sha).select("max(id)")
- where(id: max_id_per_sha)
- end
-
def self.latest_successful_ids_per_project
success.group(:project_id).select('max(id) as id')
end
@@ -344,14 +316,6 @@ module Ci
sources.reject { |source| source == "external" }.values
end
- def self.branch_pipeline_sources
- @branch_pipeline_sources ||= sources.reject { |source| source == 'merge_request_event' }.values
- end
-
- def self.ci_sources_values
- config_sources.values_at(:repository_source, :auto_devops_source, :unknown_source)
- end
-
def self.bridgeable_statuses
::Ci::Pipeline::AVAILABLE_STATUSES - %w[created preparing pending]
end
@@ -478,6 +442,10 @@ module Ci
end
end
+ def before_sha
+ super || Gitlab::Git::BLANK_SHA
+ end
+
def short_sha
Ci::Pipeline.truncate_sha(sha)
end
@@ -534,6 +502,10 @@ module Ci
builds.skipped.after_stage(stage_idx).find_each(&:process)
end
+ def child?
+ false
+ end
+
def latest?
return false unless git_ref && commit.present?
@@ -599,12 +571,6 @@ module Ci
project.notes.for_commit_id(sha)
end
- # rubocop: disable CodeReuse/ServiceClass
- def process!(trigger_build_ids = nil)
- Ci::ProcessPipelineService.new(project, user).execute(self, trigger_build_ids)
- end
- # rubocop: enable CodeReuse/ServiceClass
-
def update_status
retry_optimistic_lock(self) do
new_status = latest_builds_status.to_s
@@ -646,12 +612,11 @@ module Ci
def predefined_variables
Gitlab::Ci::Variables::Collection.new.tap do |variables|
variables.append(key: 'CI_PIPELINE_IID', value: iid.to_s)
- variables.append(key: 'CI_CONFIG_PATH', value: config_path)
variables.append(key: 'CI_PIPELINE_SOURCE', value: source.to_s)
- variables.append(key: 'CI_COMMIT_MESSAGE', value: git_commit_message.to_s)
- variables.append(key: 'CI_COMMIT_TITLE', value: git_commit_full_title.to_s)
- variables.append(key: 'CI_COMMIT_DESCRIPTION', value: git_commit_description.to_s)
- variables.append(key: 'CI_COMMIT_REF_PROTECTED', value: (!!protected_ref?).to_s)
+
+ variables.append(key: 'CI_CONFIG_PATH', value: config_path)
+
+ variables.concat(predefined_commit_variables)
if merge_request_event? && merge_request
variables.append(key: 'CI_MERGE_REQUEST_EVENT_TYPE', value: merge_request_event_type.to_s)
@@ -666,6 +631,29 @@ module Ci
end
end
+ def predefined_commit_variables
+ Gitlab::Ci::Variables::Collection.new.tap do |variables|
+ variables.append(key: 'CI_COMMIT_SHA', value: sha)
+ variables.append(key: 'CI_COMMIT_SHORT_SHA', value: short_sha)
+ variables.append(key: 'CI_COMMIT_BEFORE_SHA', value: before_sha)
+ variables.append(key: 'CI_COMMIT_REF_NAME', value: source_ref)
+ variables.append(key: 'CI_COMMIT_REF_SLUG', value: source_ref_slug)
+ variables.append(key: 'CI_COMMIT_BRANCH', value: ref) if branch?
+ variables.append(key: 'CI_COMMIT_TAG', value: ref) if tag?
+ variables.append(key: 'CI_COMMIT_MESSAGE', value: git_commit_message.to_s)
+ variables.append(key: 'CI_COMMIT_TITLE', value: git_commit_full_title.to_s)
+ variables.append(key: 'CI_COMMIT_DESCRIPTION', value: git_commit_description.to_s)
+ variables.append(key: 'CI_COMMIT_REF_PROTECTED', value: (!!protected_ref?).to_s)
+
+ # legacy variables
+ variables.append(key: 'CI_BUILD_REF', value: sha)
+ variables.append(key: 'CI_BUILD_BEFORE_SHA', value: before_sha)
+ variables.append(key: 'CI_BUILD_REF_NAME', value: source_ref)
+ variables.append(key: 'CI_BUILD_REF_SLUG', value: source_ref_slug)
+ variables.append(key: 'CI_BUILD_TAG', value: ref) if tag?
+ end
+ end
+
def queued_duration
return unless started_at
@@ -781,18 +769,10 @@ module Ci
triggered_by_merge_request? && target_sha.present?
end
- def merge_train_pipeline?
- merge_request_pipeline? && merge_train_ref?
- end
-
def merge_request_ref?
MergeRequest.merge_request_ref?(ref)
end
- def merge_train_ref?
- MergeRequest.merge_train_ref?(ref)
- end
-
def matches_sha_or_source_sha?(sha)
self.sha == sha || self.source_sha == sha
end
@@ -825,9 +805,7 @@ module Ci
return unless merge_request_event?
strong_memoize(:merge_request_event_type) do
- if merge_train_pipeline?
- :merge_train
- elsif merge_request_pipeline?
+ if merge_request_pipeline?
:merged_result
elsif detached_merge_request_pipeline?
:detached
@@ -839,6 +817,10 @@ module Ci
@persistent_ref ||= PersistentRef.new(pipeline: self)
end
+ def find_successful_build_ids_by_names(names)
+ statuses.latest.success.where(name: names).pluck(:id)
+ end
+
private
def pipeline_data
diff --git a/app/models/ci/pipeline_enums.rb b/app/models/ci/pipeline_enums.rb
index 859abc4a0d5..3cd88807969 100644
--- a/app/models/ci/pipeline_enums.rb
+++ b/app/models/ci/pipeline_enums.rb
@@ -7,7 +7,8 @@ module Ci
def self.failure_reasons
{
unknown_failure: 0,
- config_error: 1
+ config_error: 1,
+ external_validation_failure: 2
}
end
@@ -35,9 +36,20 @@ module Ci
{
unknown_source: nil,
repository_source: 1,
- auto_devops_source: 2
+ auto_devops_source: 2,
+ remote_source: 4,
+ external_project_source: 5
}
end
+
+ def self.ci_config_sources_values
+ config_sources.values_at(
+ :unknown_source,
+ :repository_source,
+ :auto_devops_source,
+ :remote_source,
+ :external_project_source)
+ end
end
end
diff --git a/app/models/ci/runner.rb b/app/models/ci/runner.rb
index c4a4410e8fc..3f409b8bb22 100644
--- a/app/models/ci/runner.rb
+++ b/app/models/ci/runner.rb
@@ -8,6 +8,7 @@ module Ci
include ChronicDurationAttribute
include FromUnion
include TokenAuthenticatable
+ include IgnorableColumns
add_authentication_token_field :token, encrypted: -> { Feature.enabled?(:ci_runners_tokens_optional_encryption, default_enabled: true) ? :optional : :required }
@@ -35,7 +36,7 @@ module Ci
FORM_EDITABLE = %i[description tag_list active run_untagged locked access_level maximum_timeout_human_readable].freeze
- self.ignored_columns += %i[is_shared]
+ ignore_column :is_shared, remove_after: '2019-12-15', remove_with: '12.6'
has_many :builds
has_many :runner_projects, inverse_of: :runner, dependent: :destroy # rubocop:disable Cop/ActiveRecordDependent
diff --git a/app/models/clusters/applications/elastic_stack.rb b/app/models/clusters/applications/elastic_stack.rb
index 8589f8c00cb..9854ad2ea3e 100644
--- a/app/models/clusters/applications/elastic_stack.rb
+++ b/app/models/clusters/applications/elastic_stack.rb
@@ -71,6 +71,8 @@ module Clusters
# `proxy_url` could raise an exception because gitlab can not communicate with the cluster.
# We check for a nil client in downstream use and behaviour is equivalent to an empty state
log_exception(error, :failed_to_create_elasticsearch_client)
+
+ nil
end
end
diff --git a/app/models/clusters/applications/knative.rb b/app/models/clusters/applications/knative.rb
index 1093efee85a..387503bee54 100644
--- a/app/models/clusters/applications/knative.rb
+++ b/app/models/clusters/applications/knative.rb
@@ -3,25 +3,27 @@
module Clusters
module Applications
class Knative < ApplicationRecord
- VERSION = '0.7.0'
+ VERSION = '0.9.0'
REPOSITORY = 'https://storage.googleapis.com/triggermesh-charts'
METRICS_CONFIG = 'https://storage.googleapis.com/triggermesh-charts/istio-metrics.yaml'
FETCH_IP_ADDRESS_DELAY = 30.seconds
- API_RESOURCES_PATH = 'config/knative/api_resources.yml'
+ API_GROUPS_PATH = 'config/knative/api_groups.yml'
self.table_name = 'clusters_applications_knative'
+ has_one :serverless_domain_cluster, class_name: 'Serverless::DomainCluster', foreign_key: 'clusters_applications_knative_id', inverse_of: :knative
+
include ::Clusters::Concerns::ApplicationCore
include ::Clusters::Concerns::ApplicationStatus
include ::Clusters::Concerns::ApplicationVersion
include ::Clusters::Concerns::ApplicationData
include AfterCommitQueue
+ alias_method :original_set_initial_status, :set_initial_status
def set_initial_status
- return unless not_installable?
- return unless verify_cluster?
+ return unless cluster&.platform_kubernetes_rbac?
- self.status = status_states[:installable]
+ original_set_initial_status
end
state_machine :status do
@@ -109,15 +111,15 @@ module Clusters
end
def delete_knative_and_istio_crds
- api_resources.map do |crd|
- Gitlab::Kubernetes::KubectlCmd.delete("--ignore-not-found", "crd", "#{crd}")
+ api_groups.map do |group|
+ Gitlab::Kubernetes::KubectlCmd.delete_crds_from_group(group)
end
end
# returns an array of CRDs to be postdelete since helm does not
# manage the CRDs it creates.
- def api_resources
- @api_resources ||= YAML.safe_load(File.read(Rails.root.join(API_RESOURCES_PATH)))
+ def api_groups
+ @api_groups ||= YAML.safe_load(File.read(Rails.root.join(API_GROUPS_PATH)))
end
def install_knative_metrics
@@ -131,10 +133,6 @@ module Clusters
[Gitlab::Kubernetes::KubectlCmd.delete("--ignore-not-found", "-f", METRICS_CONFIG)]
end
-
- def verify_cluster?
- cluster&.application_helm_available? && cluster&.platform_kubernetes_rbac?
- end
end
end
end
diff --git a/app/models/clusters/applications/prometheus.rb b/app/models/clusters/applications/prometheus.rb
index 5e7fdd55cb6..4ac33d4e3be 100644
--- a/app/models/clusters/applications/prometheus.rb
+++ b/app/models/clusters/applications/prometheus.rb
@@ -13,15 +13,21 @@ module Clusters
include ::Clusters::Concerns::ApplicationStatus
include ::Clusters::Concerns::ApplicationVersion
include ::Clusters::Concerns::ApplicationData
+ include AfterCommitQueue
default_value_for :version, VERSION
- after_destroy :disable_prometheus_integration
+ after_destroy do
+ run_after_commit do
+ disable_prometheus_integration
+ end
+ end
state_machine :status do
after_transition any => [:installed] do |application|
- application.cluster.projects.each do |project|
- project.find_or_initialize_service('prometheus').update!(active: true)
+ application.run_after_commit do
+ Clusters::Applications::ActivateServiceWorker
+ .perform_async(application.cluster_id, ::PrometheusService.to_param) # rubocop:disable CodeReuse/ServiceClass
end
end
end
@@ -49,10 +55,10 @@ module Clusters
)
end
- def upgrade_command(values)
- ::Gitlab::Kubernetes::Helm::InstallCommand.new(
+ def patch_command(values)
+ ::Gitlab::Kubernetes::Helm::PatchCommand.new(
name: name,
- version: VERSION,
+ version: version,
rbac: cluster.platform_kubernetes_rbac?,
chart: chart,
files: files_with_replaced_values(values)
@@ -84,19 +90,22 @@ module Clusters
# ensures headers containing auth data are appended to original k8s client options
options = kube_client.rest_client.options.merge(headers: kube_client.headers)
Gitlab::PrometheusClient.new(proxy_url, options)
- rescue Kubeclient::HttpError
+ rescue Kubeclient::HttpError, Errno::ECONNRESET, Errno::ECONNREFUSED
# If users have mistakenly set parameters or removed the depended clusters,
# `proxy_url` could raise an exception because gitlab can not communicate with the cluster.
# Since `PrometheusAdapter#can_query?` is eargely loaded on environement pages in gitlab,
# we need to silence the exceptions
end
+ def configured?
+ kube_client.present? && available?
+ end
+
private
def disable_prometheus_integration
- cluster.projects.each do |project|
- project.prometheus_service&.update!(active: false)
- end
+ ::Clusters::Applications::DeactivateServiceWorker
+ .perform_async(cluster_id, ::PrometheusService.to_param) # rubocop:disable CodeReuse/ServiceClass
end
def kube_client
diff --git a/app/models/clusters/applications/runner.rb b/app/models/clusters/applications/runner.rb
index 37ba8a7c97e..fd05fd6bab9 100644
--- a/app/models/clusters/applications/runner.rb
+++ b/app/models/clusters/applications/runner.rb
@@ -3,7 +3,7 @@
module Clusters
module Applications
class Runner < ApplicationRecord
- VERSION = '0.10.1'
+ VERSION = '0.11.0'
self.table_name = 'clusters_applications_runners'
diff --git a/app/models/clusters/cluster.rb b/app/models/clusters/cluster.rb
index f522f3f2fdb..d2eee78f3df 100644
--- a/app/models/clusters/cluster.rb
+++ b/app/models/clusters/cluster.rb
@@ -23,6 +23,7 @@ module Clusters
}.freeze
DEFAULT_ENVIRONMENT = '*'
KUBE_INGRESS_BASE_DOMAIN = 'KUBE_INGRESS_BASE_DOMAIN'
+ APPLICATIONS_ASSOCIATIONS = APPLICATIONS.values.map(&:association_name).freeze
belongs_to :user
belongs_to :management_project, class_name: '::Project', optional: true
@@ -33,6 +34,7 @@ module Clusters
has_many :cluster_groups, class_name: 'Clusters::Group'
has_many :groups, through: :cluster_groups, class_name: '::Group'
+ has_many :groups_projects, through: :groups, source: :projects, class_name: '::Project'
# we force autosave to happen when we save `Cluster` model
has_one :provider_gcp, class_name: 'Clusters::Providers::Gcp', autosave: true
@@ -117,7 +119,7 @@ module Clusters
scope :aws_installed, -> { aws_provided.joins(:provider_aws).merge(Clusters::Providers::Aws.with_status(:created)) }
scope :managed, -> { where(managed: true) }
-
+ scope :with_persisted_applications, -> { eager_load(*APPLICATIONS_ASSOCIATIONS) }
scope :default_environment, -> { where(environment_scope: DEFAULT_ENVIRONMENT) }
scope :for_project_namespace, -> (namespace_id) { joins(:projects).where(projects: { namespace_id: namespace_id }) }
@@ -176,6 +178,13 @@ module Clusters
end
end
+ def all_projects
+ return projects if project_type?
+ return groups_projects if group_type?
+
+ ::Project.all
+ end
+
def status_name
return cleanup_status_name if cleanup_errored?
return :cleanup_ongoing unless cleanup_not_started?
@@ -195,9 +204,13 @@ module Clusters
{ connection_status: retrieve_connection_status }
end
+ def persisted_applications
+ APPLICATIONS_ASSOCIATIONS.map(&method(:public_send)).compact
+ end
+
def applications
- APPLICATIONS.values.map do |application_class|
- public_send(application_class.association_name) || public_send("build_#{application_class.association_name}") # rubocop:disable GitlabSecurity/PublicSend
+ APPLICATIONS_ASSOCIATIONS.map do |association_name|
+ public_send(association_name) || public_send("build_#{association_name}") # rubocop:disable GitlabSecurity/PublicSend
end
end
@@ -236,14 +249,9 @@ module Clusters
end
def kubernetes_namespace_for(environment)
- project = environment.project
- persisted_namespace = Clusters::KubernetesNamespaceFinder.new(
- self,
- project: project,
- environment_name: environment.name
- ).execute
-
- persisted_namespace&.namespace || Gitlab::Kubernetes::DefaultNamespace.new(self, project: project).from_environment_slug(environment.slug)
+ managed_namespace(environment) ||
+ ci_configured_namespace(environment) ||
+ default_namespace(environment)
end
def allow_user_defined_namespace?
@@ -262,6 +270,25 @@ module Clusters
end
end
+ def delete_cached_resources!
+ kubernetes_namespaces.delete_all(:delete_all)
+ end
+
+ def clusterable
+ return unless cluster_type
+
+ case cluster_type
+ when 'project_type'
+ project
+ when 'group_type'
+ group
+ when 'instance_type'
+ instance
+ else
+ raise NotImplementedError
+ end
+ end
+
private
def unique_management_project_environment_scope
@@ -276,6 +303,25 @@ module Clusters
end
end
+ def managed_namespace(environment)
+ Clusters::KubernetesNamespaceFinder.new(
+ self,
+ project: environment.project,
+ environment_name: environment.name
+ ).execute&.namespace
+ end
+
+ def ci_configured_namespace(environment)
+ environment.last_deployable&.expanded_kubernetes_namespace
+ end
+
+ def default_namespace(environment)
+ Gitlab::Kubernetes::DefaultNamespace.new(
+ self,
+ project: environment.project
+ ).from_environment_slug(environment.slug)
+ end
+
def instance_domain
@instance_domain ||= Gitlab::CurrentSettings.auto_devops_domain
end
@@ -289,7 +335,7 @@ module Clusters
rescue Kubeclient::HttpError => e
kubeclient_error_status(e.message)
rescue => e
- Gitlab::Sentry.track_acceptable_exception(e, extra: { cluster_id: id })
+ Gitlab::ErrorTracking.track_exception(e, cluster_id: id)
:unknown_failure
else
diff --git a/app/models/clusters/concerns/application_core.rb b/app/models/clusters/concerns/application_core.rb
index 21b98534808..f6431f5bac3 100644
--- a/app/models/clusters/concerns/application_core.rb
+++ b/app/models/clusters/concerns/application_core.rb
@@ -76,7 +76,7 @@ module Clusters
message: error.message
})
- Gitlab::Sentry.track_acceptable_exception(error, extra: { cluster_id: cluster&.id, application_id: id })
+ Gitlab::ErrorTracking.track_exception(error, cluster_id: cluster&.id, application_id: id)
end
end
end
diff --git a/app/models/clusters/platforms/kubernetes.rb b/app/models/clusters/platforms/kubernetes.rb
index 314ef78757d..ae720065387 100644
--- a/app/models/clusters/platforms/kubernetes.rb
+++ b/app/models/clusters/platforms/kubernetes.rb
@@ -63,7 +63,7 @@ module Clusters
default_value_for :authorization_type, :rbac
- def predefined_variables(project:, environment_name:)
+ def predefined_variables(project:, environment_name:, kubernetes_namespace: nil)
Gitlab::Ci::Variables::Collection.new.tap do |variables|
variables.append(key: 'KUBE_URL', value: api_url)
@@ -74,15 +74,15 @@ module Clusters
end
if !cluster.managed? || cluster.management_project == project
- namespace = Gitlab::Kubernetes::DefaultNamespace.new(cluster, project: project).from_environment_name(environment_name)
+ namespace = kubernetes_namespace || default_namespace(project, environment_name: environment_name)
variables
.append(key: 'KUBE_TOKEN', value: token, public: false, masked: true)
.append(key: 'KUBE_NAMESPACE', value: namespace)
.append(key: 'KUBECONFIG', value: kubeconfig(namespace), public: false, file: true)
- elsif kubernetes_namespace = find_persisted_namespace(project, environment_name: environment_name)
- variables.concat(kubernetes_namespace.predefined_variables)
+ elsif persisted_namespace = find_persisted_namespace(project, environment_name: environment_name)
+ variables.concat(persisted_namespace.predefined_variables)
end
variables.concat(cluster.predefined_variables)
@@ -107,6 +107,13 @@ module Clusters
private
+ def default_namespace(project, environment_name:)
+ Gitlab::Kubernetes::DefaultNamespace.new(
+ cluster,
+ project: project
+ ).from_environment_name(environment_name)
+ end
+
def find_persisted_namespace(project, environment_name:)
Clusters::KubernetesNamespaceFinder.new(
cluster,
diff --git a/app/models/clusters/providers/aws.rb b/app/models/clusters/providers/aws.rb
index 78eb75ddcc0..faf587fb83d 100644
--- a/app/models/clusters/providers/aws.rb
+++ b/app/models/clusters/providers/aws.rb
@@ -8,9 +8,11 @@ module Clusters
self.table_name = 'cluster_providers_aws'
+ DEFAULT_REGION = 'us-east-1'
+
belongs_to :cluster, inverse_of: :provider_aws, class_name: 'Clusters::Cluster'
- default_value_for :region, 'us-east-1'
+ default_value_for :region, DEFAULT_REGION
default_value_for :num_nodes, 3
default_value_for :instance_type, 'm5.large'
diff --git a/app/models/commit.rb b/app/models/commit.rb
index aae49c36899..460725b2016 100644
--- a/app/models/commit.rb
+++ b/app/models/commit.rb
@@ -12,6 +12,7 @@ class Commit
include StaticModel
include Presentable
include ::Gitlab::Utils::StrongMemoize
+ include ActsAsPaginatedDiff
include CacheMarkdownField
attr_mentionable :safe_message, pipeline: :single_line
@@ -246,7 +247,7 @@ class Commit
def lazy_author
BatchLoader.for(author_email.downcase).batch do |emails, loader|
- users = User.by_any_email(emails).includes(:emails)
+ users = User.by_any_email(emails, confirmed: true).includes(:emails)
emails.each do |email|
user = users.find { |u| u.any_email?(email) }
@@ -263,8 +264,8 @@ class Commit
end
request_cache(:author) { author_email.downcase }
- def committer
- @committer ||= User.find_by_any_email(committer_email)
+ def committer(confirmed: true)
+ @committer ||= User.find_by_any_email(committer_email, confirmed: confirmed)
end
def parents
@@ -281,6 +282,10 @@ class Commit
project.notes.for_commit_id(self.id)
end
+ def user_mentions
+ CommitUserMention.where(commit_id: self.id)
+ end
+
def discussion_notes
notes.non_diff_notes
end
@@ -464,8 +469,20 @@ class Commit
"commit:#{sha}"
end
+ def expire_note_etag_cache
+ super
+
+ expire_note_etag_cache_for_related_mrs
+ end
+
private
+ def expire_note_etag_cache_for_related_mrs
+ MergeRequest.includes(target_project: :namespace).by_commit_sha(id).find_each do |mr|
+ mr.expire_note_etag_cache
+ end
+ end
+
def commit_reference(from, referable_commit_id, full: false)
reference = project.to_reference(from, full: full)
diff --git a/app/models/commit_status.rb b/app/models/commit_status.rb
index 39a6247b3b2..8d38835fb3b 100644
--- a/app/models/commit_status.rb
+++ b/app/models/commit_status.rb
@@ -17,7 +17,7 @@ class CommitStatus < ApplicationRecord
belongs_to :auto_canceled_by, class_name: 'Ci::Pipeline'
delegate :commit, to: :pipeline
- delegate :sha, :short_sha, to: :pipeline
+ delegate :sha, :short_sha, :before_sha, to: :pipeline
validates :pipeline, presence: true, unless: :importing?
validates :name, presence: true, unless: :importing?
@@ -47,6 +47,12 @@ class CommitStatus < ApplicationRecord
scope :after_stage, -> (index) { where('stage_idx > ?', index) }
scope :processables, -> { where(type: %w[Ci::Build Ci::Bridge]) }
scope :for_ids, -> (ids) { where(id: ids) }
+ scope :for_ref, -> (ref) { where(ref: ref) }
+ scope :by_name, -> (name) { where(name: name) }
+
+ scope :for_project_paths, -> (paths) do
+ where(project: Project.where_full_path_in(Array(paths)))
+ end
scope :with_preloads, -> do
preload(:project, :user)
@@ -176,10 +182,6 @@ class CommitStatus < ApplicationRecord
will_save_change_to_status?
end
- def before_sha
- pipeline.before_sha || Gitlab::Git::BLANK_SHA
- end
-
def group_name
name.to_s.gsub(%r{\d+[\s:/\\]+\d+\s*}, '').strip
end
diff --git a/app/models/commit_user_mention.rb b/app/models/commit_user_mention.rb
new file mode 100644
index 00000000000..680d20b61cf
--- /dev/null
+++ b/app/models/commit_user_mention.rb
@@ -0,0 +1,5 @@
+# frozen_string_literal: true
+
+class CommitUserMention < UserMention
+ belongs_to :note
+end
diff --git a/app/models/compare.rb b/app/models/compare.rb
index f1ed84ab5a5..9b214171f07 100644
--- a/app/models/compare.rb
+++ b/app/models/compare.rb
@@ -4,6 +4,7 @@ require 'set'
class Compare
include Gitlab::Utils::StrongMemoize
+ include ActsAsPaginatedDiff
delegate :same, :head, :base, to: :@compare
diff --git a/app/models/concerns/acts_as_paginated_diff.rb b/app/models/concerns/acts_as_paginated_diff.rb
new file mode 100644
index 00000000000..4ce2f99e63f
--- /dev/null
+++ b/app/models/concerns/acts_as_paginated_diff.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+module ActsAsPaginatedDiff
+ # Comparisons going back to the repository will need proper batch
+ # loading (https://gitlab.com/gitlab-org/gitlab/issues/32859).
+ # For now, we're returning all the diffs available with
+ # no pagination data.
+ def diffs_in_batch(_batch_page, _batch_size, diff_options:)
+ diffs(diff_options)
+ end
+end
diff --git a/app/models/concerns/analytics/cycle_analytics/stage.rb b/app/models/concerns/analytics/cycle_analytics/stage.rb
index 0e07806dd6f..dde73b567db 100644
--- a/app/models/concerns/analytics/cycle_analytics/stage.rb
+++ b/app/models/concerns/analytics/cycle_analytics/stage.rb
@@ -26,6 +26,7 @@ module Analytics
alias_attribute :custom_stage?, :custom
scope :default_stages, -> { where(custom: false) }
scope :ordered, -> { order(:relative_position, :id) }
+ scope :for_list, -> { includes(:start_event_label, :end_event_label).ordered }
end
def parent=(_)
diff --git a/app/models/concerns/blob_active_model.rb b/app/models/concerns/blob_active_model.rb
new file mode 100644
index 00000000000..89157e90e34
--- /dev/null
+++ b/app/models/concerns/blob_active_model.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+# To be included in blob classes which are to be
+# treated as ActiveModel.
+#
+# The blob class must respond_to `project`
+module BlobActiveModel
+ extend ActiveSupport::Concern
+
+ class_methods do
+ def declarative_policy_class
+ 'BlobPolicy'
+ end
+ end
+
+ def to_ability_name
+ 'blob'
+ end
+end
diff --git a/app/models/concerns/ci/contextable.rb b/app/models/concerns/ci/contextable.rb
index 49d6f3d399c..5ff537a7837 100644
--- a/app/models/concerns/ci/contextable.rb
+++ b/app/models/concerns/ci/contextable.rb
@@ -15,7 +15,7 @@ module Ci
variables.concat(project.predefined_variables)
variables.concat(pipeline.predefined_variables)
variables.concat(runner.predefined_variables) if runnable? && runner
- variables.concat(project.deployment_variables(environment: environment)) if environment
+ variables.concat(deployment_variables(environment: environment))
variables.concat(yaml_variables)
variables.concat(user_variables)
variables.concat(secret_group_variables)
@@ -54,49 +54,33 @@ module Ci
end
end
- def predefined_variables # rubocop:disable Metrics/AbcSize
+ def predefined_variables
Gitlab::Ci::Variables::Collection.new.tap do |variables|
- variables.append(key: 'CI', value: 'true')
- variables.append(key: 'GITLAB_CI', value: 'true')
- variables.append(key: 'GITLAB_FEATURES', value: project.licensed_features.join(','))
- variables.append(key: 'CI_SERVER_HOST', value: Gitlab.config.gitlab.host)
- variables.append(key: 'CI_SERVER_NAME', value: 'GitLab')
- variables.append(key: 'CI_SERVER_VERSION', value: Gitlab::VERSION)
- variables.append(key: 'CI_SERVER_VERSION_MAJOR', value: Gitlab.version_info.major.to_s)
- variables.append(key: 'CI_SERVER_VERSION_MINOR', value: Gitlab.version_info.minor.to_s)
- variables.append(key: 'CI_SERVER_VERSION_PATCH', value: Gitlab.version_info.patch.to_s)
- variables.append(key: 'CI_SERVER_REVISION', value: Gitlab.revision)
variables.append(key: 'CI_JOB_NAME', value: name)
variables.append(key: 'CI_JOB_STAGE', value: stage)
- variables.append(key: 'CI_COMMIT_SHA', value: sha)
- variables.append(key: 'CI_COMMIT_SHORT_SHA', value: short_sha)
- variables.append(key: 'CI_COMMIT_BEFORE_SHA', value: before_sha)
- variables.append(key: 'CI_COMMIT_REF_NAME', value: source_ref)
- variables.append(key: 'CI_COMMIT_REF_SLUG', value: source_ref_slug)
- variables.append(key: "CI_COMMIT_TAG", value: ref) if tag?
- variables.append(key: "CI_PIPELINE_TRIGGERED", value: 'true') if trigger_request
- variables.append(key: "CI_JOB_MANUAL", value: 'true') if action?
- variables.append(key: "CI_NODE_INDEX", value: self.options[:instance].to_s) if self.options&.include?(:instance)
- variables.append(key: "CI_NODE_TOTAL", value: (self.options&.dig(:parallel) || 1).to_s)
- variables.append(key: "CI_DEFAULT_BRANCH", value: project.default_branch)
- variables.concat(legacy_variables)
- end
- end
+ variables.append(key: 'CI_JOB_MANUAL', value: 'true') if action?
+ variables.append(key: 'CI_PIPELINE_TRIGGERED', value: 'true') if trigger_request
- def legacy_variables
- Gitlab::Ci::Variables::Collection.new.tap do |variables|
- variables.append(key: 'CI_BUILD_REF', value: sha)
- variables.append(key: 'CI_BUILD_BEFORE_SHA', value: before_sha)
- variables.append(key: 'CI_BUILD_REF_NAME', value: source_ref)
- variables.append(key: 'CI_BUILD_REF_SLUG', value: source_ref_slug)
+ variables.append(key: 'CI_NODE_INDEX', value: self.options[:instance].to_s) if self.options&.include?(:instance)
+ variables.append(key: 'CI_NODE_TOTAL', value: (self.options&.dig(:parallel) || 1).to_s)
+
+ # legacy variables
variables.append(key: 'CI_BUILD_NAME', value: name)
variables.append(key: 'CI_BUILD_STAGE', value: stage)
- variables.append(key: "CI_BUILD_TAG", value: ref) if tag?
- variables.append(key: "CI_BUILD_TRIGGERED", value: 'true') if trigger_request
- variables.append(key: "CI_BUILD_MANUAL", value: 'true') if action?
+ variables.append(key: 'CI_BUILD_TRIGGERED', value: 'true') if trigger_request
+ variables.append(key: 'CI_BUILD_MANUAL', value: 'true') if action?
end
end
+ def deployment_variables(environment:)
+ return [] unless environment
+
+ project.deployment_variables(
+ environment: environment,
+ kubernetes_namespace: expanded_kubernetes_namespace
+ )
+ end
+
def secret_group_variables
return [] unless project.group
diff --git a/app/models/concerns/ci/metadatable.rb b/app/models/concerns/ci/metadatable.rb
index 17d431bacf2..9bfe76728e4 100644
--- a/app/models/concerns/ci/metadatable.rb
+++ b/app/models/concerns/ci/metadatable.rb
@@ -17,6 +17,7 @@ module Ci
delegate :timeout, to: :metadata, prefix: true, allow_nil: true
delegate :interruptible, to: :metadata, prefix: false, allow_nil: true
delegate :has_exposed_artifacts?, to: :metadata, prefix: false, allow_nil: true
+ delegate :environment_auto_stop_in, to: :metadata, prefix: false, allow_nil: true
before_create :ensure_metadata
end
@@ -47,8 +48,11 @@ module Ci
def options=(value)
write_metadata_attribute(:options, :config_options, value)
- # Store presence of exposed artifacts in build metadata to make it easier to query
- ensure_metadata.has_exposed_artifacts = value&.dig(:artifacts, :expose_as).present?
+ ensure_metadata.tap do |metadata|
+ # Store presence of exposed artifacts in build metadata to make it easier to query
+ metadata.has_exposed_artifacts = value&.dig(:artifacts, :expose_as).present?
+ metadata.environment_auto_stop_in = value&.dig(:environment, :auto_stop_in)
+ end
end
def yaml_variables=(value)
diff --git a/app/models/concerns/ci/pipeline_delegator.rb b/app/models/concerns/ci/pipeline_delegator.rb
index 76e0cbc7dff..9f95dc38422 100644
--- a/app/models/concerns/ci/pipeline_delegator.rb
+++ b/app/models/concerns/ci/pipeline_delegator.rb
@@ -13,8 +13,6 @@ module Ci
included do
delegate :merge_request_event?,
:merge_request_ref?,
- :source_ref,
- :source_ref_slug,
:legacy_detached_merge_request_pipeline?,
:merge_train_pipeline?, to: :pipeline
end
diff --git a/app/models/concerns/ci/processable.rb b/app/models/concerns/ci/processable.rb
index ed0087f34d4..c229358ad17 100644
--- a/app/models/concerns/ci/processable.rb
+++ b/app/models/concerns/ci/processable.rb
@@ -14,6 +14,8 @@ module Ci
has_many :needs, class_name: 'Ci::BuildNeed', foreign_key: :build_id, inverse_of: :build
accepts_nested_attributes_for :needs
+
+ scope :preload_needs, -> { preload(:needs) }
end
def schedulable?
diff --git a/app/models/concerns/diff_positionable_note.rb b/app/models/concerns/diff_positionable_note.rb
index 195d9e107c5..6484a3157b1 100644
--- a/app/models/concerns/diff_positionable_note.rb
+++ b/app/models/concerns/diff_positionable_note.rb
@@ -5,7 +5,7 @@ module DiffPositionableNote
included do
delegate :on_text?, :on_image?, to: :position, allow_nil: true
before_validation :set_original_position, on: :create
- before_validation :update_position, on: :create, if: :on_text?
+ before_validation :update_position, on: :create, if: :on_text?, unless: :importing?
serialize :original_position, Gitlab::Diff::Position # rubocop:disable Cop/ActiveRecordSerialize
serialize :position, Gitlab::Diff::Position # rubocop:disable Cop/ActiveRecordSerialize
diff --git a/app/models/concerns/expirable.rb b/app/models/concerns/expirable.rb
index 1f274487935..512822089ba 100644
--- a/app/models/concerns/expirable.rb
+++ b/app/models/concerns/expirable.rb
@@ -3,6 +3,8 @@
module Expirable
extend ActiveSupport::Concern
+ DAYS_TO_EXPIRE = 7
+
included do
scope :expired, -> { where('expires_at <= ?', Time.current) }
end
@@ -16,6 +18,6 @@ module Expirable
end
def expires_soon?
- expires? && expires_at < 7.days.from_now
+ expires? && expires_at < DAYS_TO_EXPIRE.days.from_now
end
end
diff --git a/app/models/concerns/group_descendant.rb b/app/models/concerns/group_descendant.rb
index 7e6a20c27e8..67953105bed 100644
--- a/app/models/concerns/group_descendant.rb
+++ b/app/models/concerns/group_descendant.rb
@@ -48,11 +48,11 @@ module GroupDescendant
extras = {
parent: parent.inspect,
child: child.inspect,
- preloaded: preloaded.map(&:full_path)
+ preloaded: preloaded.map(&:full_path),
+ issue_url: 'https://gitlab.com/gitlab-org/gitlab-foss/issues/49404'
}
- issue_url = 'https://gitlab.com/gitlab-org/gitlab-foss/issues/49404'
- Gitlab::Sentry.track_exception(exception, issue_url: issue_url, extra: extras)
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(exception, extras)
end
if parent.nil? && hierarchy_top.present?
diff --git a/app/models/concerns/ignorable_columns.rb b/app/models/concerns/ignorable_columns.rb
new file mode 100644
index 00000000000..744a1f0b5f3
--- /dev/null
+++ b/app/models/concerns/ignorable_columns.rb
@@ -0,0 +1,45 @@
+# frozen_string_literal: true
+
+module IgnorableColumns
+ extend ActiveSupport::Concern
+
+ ColumnIgnore = Struct.new(:remove_after, :remove_with) do
+ def safe_to_remove?
+ Date.today > remove_after
+ end
+
+ def to_s
+ "(#{remove_after}, #{remove_with})"
+ end
+ end
+
+ class_methods do
+ # Ignore database columns in a model
+ #
+ # Indicate the earliest date and release we can stop ignoring the column with +remove_after+ (a date string) and +remove_with+ (a release)
+ def ignore_columns(*columns, remove_after:, remove_with:)
+ raise ArgumentError, 'Please indicate when we can stop ignoring columns with remove_after (date string YYYY-MM-DD), example: ignore_columns(:name, remove_after: \'2019-12-01\', remove_with: \'12.6\')' unless remove_after =~ Gitlab::Regex.utc_date_regex
+ raise ArgumentError, 'Please indicate in which release we can stop ignoring columns with remove_with, example: ignore_columns(:name, remove_after: \'2019-12-01\', remove_with: \'12.6\')' unless remove_with
+
+ self.ignored_columns += columns.flatten # rubocop:disable Cop/IgnoredColumns
+
+ columns.flatten.each do |column|
+ self.ignored_columns_details[column.to_sym] = ColumnIgnore.new(Date.parse(remove_after), remove_with)
+ end
+ end
+
+ alias_method :ignore_column, :ignore_columns
+
+ def ignored_columns_details
+ unless defined?(@ignored_columns_details)
+ IGNORE_COLUMN_MUTEX.synchronize do
+ @ignored_columns_details ||= superclass.try(:ignored_columns_details)&.dup || {}
+ end
+ end
+
+ @ignored_columns_details
+ end
+
+ IGNORE_COLUMN_MUTEX = Mutex.new
+ end
+end
diff --git a/app/models/concerns/issuable.rb b/app/models/concerns/issuable.rb
index 01cd1e0224b..9e3fba139e3 100644
--- a/app/models/concerns/issuable.rb
+++ b/app/models/concerns/issuable.rb
@@ -23,7 +23,6 @@ module Issuable
include Sortable
include CreatedAtFilterable
include UpdatedAtFilterable
- include IssuableStates
include ClosedAtFilterable
include VersionedDescription
@@ -100,6 +99,8 @@ module Issuable
scope :of_milestones, ->(ids) { where(milestone_id: ids) }
scope :any_milestone, -> { where('milestone_id IS NOT NULL') }
scope :with_milestone, ->(title) { left_joins_milestones.where(milestones: { title: title }) }
+ scope :any_release, -> { joins_milestone_releases }
+ scope :with_release, -> (tag, project_id) { joins_milestone_releases.where( milestones: { releases: { tag: tag, project_id: project_id } } ) }
scope :opened, -> { with_state(:opened) }
scope :only_opened, -> { with_state(:opened) }
scope :closed, -> { with_state(:closed) }
@@ -121,6 +122,16 @@ module Issuable
scope :order_milestone_due_desc, -> { left_joins_milestones.reorder(Arel.sql('milestones.due_date IS NULL, milestones.id IS NULL, milestones.due_date DESC')) }
scope :order_milestone_due_asc, -> { left_joins_milestones.reorder(Arel.sql('milestones.due_date IS NULL, milestones.id IS NULL, milestones.due_date ASC')) }
+ scope :without_release, -> do
+ joins("LEFT OUTER JOIN milestone_releases ON #{table_name}.milestone_id = milestone_releases.milestone_id")
+ .where('milestone_releases.release_id IS NULL')
+ end
+
+ scope :joins_milestone_releases, -> do
+ joins("JOIN milestone_releases ON #{table_name}.milestone_id = milestone_releases.milestone_id
+ JOIN releases ON milestone_releases.release_id = releases.id").distinct
+ end
+
scope :without_label, -> { joins("LEFT OUTER JOIN label_links ON label_links.target_type = '#{name}' AND label_links.target_id = #{table_name}.id").where(label_links: { id: nil }) }
scope :any_label, -> { joins(:label_links).group(:id) }
scope :join_project, -> { joins(:project) }
@@ -137,26 +148,6 @@ module Issuable
strip_attributes :title
- # The state_machine gem will reset the value of state_id unless it
- # is a raw attribute passed in here:
- # https://gitlab.com/gitlab-org/gitlab/issues/35746#note_241148787
- #
- # This assumes another initialize isn't defined. Otherwise this
- # method may need to be prepended.
- def initialize(attributes = nil)
- if attributes.is_a?(Hash)
- attr = attributes.symbolize_keys
-
- if attr.key?(:state) && !attr.key?(:state_id)
- value = attr.delete(:state)
- state_id = self.class.available_states[value]
- attributes[:state_id] = state_id if state_id
- end
- end
-
- super(attributes)
- end
-
# We want to use optimistic lock for cases when only title or description are involved
# http://api.rubyonrails.org/classes/ActiveRecord/Locking/Optimistic.html
def locking_enabled?
@@ -174,7 +165,7 @@ module Issuable
private
def milestone_is_valid
- errors.add(:milestone_id, message: "is invalid") if milestone_id.present? && !milestone_available?
+ errors.add(:milestone_id, message: "is invalid") if respond_to?(:milestone_id) && milestone_id.present? && !milestone_available?
end
def description_max_length_for_new_records_is_valid
diff --git a/app/models/concerns/issuable_states.rb b/app/models/concerns/issuable_states.rb
deleted file mode 100644
index f0b9f0d1f3a..00000000000
--- a/app/models/concerns/issuable_states.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-# frozen_string_literal: true
-
-module IssuableStates
- extend ActiveSupport::Concern
-
- # The state:string column is being migrated to state_id:integer column
- # This is a temporary hook to keep state column in sync until it is removed.
- # Check https: https://gitlab.com/gitlab-org/gitlab/issues/33814 for more information
- # The state column can be safely removed after 2019-10-27
- included do
- before_save :sync_issuable_deprecated_state
- end
-
- def sync_issuable_deprecated_state
- return if self.is_a?(Epic)
- return unless respond_to?(:state)
- return if state_id.nil?
-
- deprecated_state = self.class.available_states.key(state_id)
-
- self.write_attribute(:state, deprecated_state)
- end
-end
diff --git a/app/models/concerns/mentionable.rb b/app/models/concerns/mentionable.rb
index 9b6c57261d8..b43b91699ab 100644
--- a/app/models/concerns/mentionable.rb
+++ b/app/models/concerns/mentionable.rb
@@ -80,6 +80,66 @@ module Mentionable
all_references(current_user).users
end
+ def store_mentions!
+ # if store_mentioned_users_to_db feature flag is not enabled then consider storing operation as succeeded
+ # because we wrap this method in transaction with with_transaction_returning_status, and we need the status to be
+ # successful if mentionable.save is successful.
+ #
+ # This line will get removed when we remove the feature flag.
+ return true unless store_mentioned_users_to_db_enabled?
+
+ refs = all_references(self.author)
+
+ references = {}
+ references[:mentioned_users_ids] = refs.mentioned_users&.pluck(:id).presence
+ references[:mentioned_groups_ids] = refs.mentioned_groups&.pluck(:id).presence
+ references[:mentioned_projects_ids] = refs.mentioned_projects&.pluck(:id).presence
+
+ # One retry should be enough as next time `model_user_mention` should return the existing mention record, that
+ # threw the `ActiveRecord::RecordNotUnique` exception in first place.
+ self.class.safe_ensure_unique(retries: 1) do
+ user_mention = model_user_mention
+ user_mention.mentioned_users_ids = references[:mentioned_users_ids]
+ user_mention.mentioned_groups_ids = references[:mentioned_groups_ids]
+ user_mention.mentioned_projects_ids = references[:mentioned_projects_ids]
+
+ if user_mention.has_mentions?
+ user_mention.save!
+ elsif user_mention.persisted?
+ user_mention.destroy!
+ end
+
+ true
+ end
+ end
+
+ def referenced_users
+ User.where(id: user_mentions.select("unnest(mentioned_users_ids)"))
+ end
+
+ def referenced_projects(current_user = nil)
+ Project.where(id: user_mentions.select("unnest(mentioned_projects_ids)")).public_or_visible_to_user(current_user)
+ end
+
+ def referenced_project_users(current_user = nil)
+ User.joins(:project_members).where(members: { source_id: referenced_projects(current_user) }).distinct
+ end
+
+ def referenced_groups(current_user = nil)
+ # TODO: IMPORTANT: Revisit before using it.
+ # Check DB data for max mentioned groups per mentionable:
+ #
+ # select issue_id, count(mentions_count.men_gr_id) gr_count from
+ # (select DISTINCT unnest(mentioned_groups_ids) as men_gr_id, issue_id
+ # from issue_user_mentions group by issue_id, mentioned_groups_ids) as mentions_count
+ # group by mentions_count.issue_id order by gr_count desc limit 10
+ Group.where(id: user_mentions.select("unnest(mentioned_groups_ids)")).public_or_visible_to_user(current_user)
+ end
+
+ def referenced_group_users(current_user = nil)
+ User.joins(:group_members).where(members: { source_id: referenced_groups }).distinct
+ end
+
def directly_addressed_users(current_user = nil)
all_references(current_user).directly_addressed_users
end
@@ -171,6 +231,26 @@ module Mentionable
def mentionable_params
{}
end
+
+ # User mention that is parsed from model description rather then its related notes.
+ # Models that have a descriprion attribute like Issue, MergeRequest, Epic, Snippet may have such a user mention.
+ # Other mentionable models like Commit, DesignManagement::Design, will never have such record as those do not have
+ # a description attribute.
+ #
+ # Using this method followed by a call to *save* may result in *ActiveRecord::RecordNotUnique* exception
+ # in a multithreaded environment. Make sure to use it within a *safe_ensure_unique* block.
+ def model_user_mention
+ user_mentions.where(note_id: nil).first_or_initialize
+ end
+
+ # We need this method to be checking that store_mentioned_users_to_db feature flag is enabled at the group level
+ # and not the project level as epics are defined at group level and we want to have epics store user mentions as well
+ # for the test period.
+ # During the test period the flag should be enabled at the group level.
+ def store_mentioned_users_to_db_enabled?
+ return Feature.enabled?(:store_mentioned_users_to_db, self.project&.group) if self.respond_to?(:project)
+ return Feature.enabled?(:store_mentioned_users_to_db, self.group) if self.respond_to?(:group)
+ end
end
Mentionable.prepend_if_ee('EE::Mentionable')
diff --git a/app/models/concerns/milestoneish.rb b/app/models/concerns/milestoneish.rb
index b1a7d7ec819..88e752e51e7 100644
--- a/app/models/concerns/milestoneish.rb
+++ b/app/models/concerns/milestoneish.rb
@@ -53,7 +53,7 @@ module Milestoneish
end
def sorted_issues(user)
- issues_visible_to_user(user).preload_associations.sort_by_attribute('label_priority')
+ issues_visible_to_user(user).preload_associated_models.sort_by_attribute('label_priority')
end
def sorted_merge_requests(user)
diff --git a/app/models/concerns/prometheus_adapter.rb b/app/models/concerns/prometheus_adapter.rb
index 9df77b565da..99da8b81398 100644
--- a/app/models/concerns/prometheus_adapter.rb
+++ b/app/models/concerns/prometheus_adapter.rb
@@ -16,6 +16,14 @@ module PrometheusAdapter
raise NotImplementedError
end
+ # This is a light-weight check if a prometheus client is properly configured.
+ def configured?
+ raise NotImplemented
+ end
+
+ # This is a heavy-weight check if a prometheus is properly configured and accesible from GitLab.
+ # This actually sends a request to an external service and often it could take a long time,
+ # Please consider using `configured?` instead if the process is running on unicorn/puma threads.
def can_query?
prometheus_client.present?
end
diff --git a/app/models/concerns/reactive_caching.rb b/app/models/concerns/reactive_caching.rb
index f9a52cd54bd..693f9ab8dc5 100644
--- a/app/models/concerns/reactive_caching.rb
+++ b/app/models/concerns/reactive_caching.rb
@@ -129,14 +129,17 @@ module ReactiveCaching
def exclusively_update_reactive_cache!(*args)
locking_reactive_cache(*args) do
+ key = full_reactive_cache_key(*args)
+
if within_reactive_cache_lifetime?(*args)
enqueuing_update(*args) do
- key = full_reactive_cache_key(*args)
new_value = calculate_reactive_cache(*args)
old_value = Rails.cache.read(key)
Rails.cache.write(key, new_value)
reactive_cache_updated(*args) if new_value != old_value
end
+ else
+ Rails.cache.delete(key)
end
end
end
diff --git a/app/models/concerns/safe_url.rb b/app/models/concerns/safe_url.rb
new file mode 100644
index 00000000000..febca7d241f
--- /dev/null
+++ b/app/models/concerns/safe_url.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+module SafeUrl
+ extend ActiveSupport::Concern
+
+ def safe_url(usernames_whitelist: [])
+ return if url.nil?
+
+ uri = URI.parse(url)
+ uri.password = '*****' if uri.password
+ uri.user = '*****' if uri.user && !usernames_whitelist.include?(uri.user)
+ uri.to_s
+ rescue URI::Error
+ end
+end
diff --git a/app/models/concerns/sha256_attribute.rb b/app/models/concerns/sha256_attribute.rb
new file mode 100644
index 00000000000..1bd1ad177a2
--- /dev/null
+++ b/app/models/concerns/sha256_attribute.rb
@@ -0,0 +1,49 @@
+# frozen_string_literal: true
+
+module Sha256Attribute
+ extend ActiveSupport::Concern
+
+ class_methods do
+ def sha256_attribute(name)
+ return if ENV['STATIC_VERIFICATION']
+
+ validate_binary_column_exists!(name) unless Rails.env.production?
+
+ attribute(name, Gitlab::Database::Sha256Attribute.new)
+ end
+
+ # This only gets executed in non-production environments as an additional check to ensure
+ # the column is the correct type. In production it should behave like any other attribute.
+ # See https://gitlab.com/gitlab-org/gitlab/merge_requests/5502 for more discussion
+ def validate_binary_column_exists!(name)
+ return unless database_exists?
+
+ unless table_exists?
+ warn "WARNING: sha256_attribute #{name.inspect} is invalid since the table doesn't exist - you may need to run database migrations"
+ return
+ end
+
+ column = columns.find { |c| c.name == name.to_s }
+
+ unless column
+ warn "WARNING: sha256_attribute #{name.inspect} is invalid since the column doesn't exist - you may need to run database migrations"
+ return
+ end
+
+ unless column.type == :binary
+ raise ArgumentError.new("sha256_attribute #{name.inspect} is invalid since the column type is not :binary")
+ end
+ rescue => error
+ Gitlab::AppLogger.error "Sha256Attribute initialization: #{error.message}"
+ raise
+ end
+
+ def database_exists?
+ ApplicationRecord.connection
+
+ true
+ rescue
+ false
+ end
+ end
+end
diff --git a/app/models/concerns/storage/legacy_namespace.rb b/app/models/concerns/storage/legacy_namespace.rb
index 9c2b0372d54..da4f2a79895 100644
--- a/app/models/concerns/storage/legacy_namespace.rb
+++ b/app/models/concerns/storage/legacy_namespace.rb
@@ -37,8 +37,10 @@ module Storage
send_update_instructions
write_projects_repository_config
rescue => e
- # Raise if development/test environment, else just notify Sentry
- Gitlab::Sentry.track_exception(e, extra: { full_path_before_last_save: full_path_before_last_save, full_path: full_path, action: 'move_dir' })
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(e,
+ full_path_before_last_save: full_path_before_last_save,
+ full_path: full_path,
+ action: 'move_dir')
end
true # false would cancel later callbacks but not rollback
diff --git a/app/models/concerns/update_project_statistics.rb b/app/models/concerns/update_project_statistics.rb
index 869b3490f3f..a84fb1cf56d 100644
--- a/app/models/concerns/update_project_statistics.rb
+++ b/app/models/concerns/update_project_statistics.rb
@@ -49,8 +49,7 @@ module UpdateProjectStatistics
attr = self.class.statistic_attribute
delta = read_attribute(attr).to_i - attribute_before_last_save(attr).to_i
- update_project_statistics(delta)
- schedule_namespace_aggregation_worker
+ schedule_update_project_statistic(delta)
end
def update_project_statistics_attribute_changed?
@@ -58,24 +57,35 @@ module UpdateProjectStatistics
end
def update_project_statistics_after_destroy
- update_project_statistics(-read_attribute(self.class.statistic_attribute).to_i)
+ delta = -read_attribute(self.class.statistic_attribute).to_i
- schedule_namespace_aggregation_worker
+ schedule_update_project_statistic(delta)
end
def project_destroyed?
project.pending_delete?
end
- def update_project_statistics(delta)
- ProjectStatistics.increment_statistic(project_id, self.class.project_statistics_name, delta)
- end
+ def schedule_update_project_statistic(delta)
+ return if delta.zero?
+
+ if Feature.enabled?(:update_project_statistics_after_commit, default_enabled: true)
+ # Update ProjectStatistics after the transaction
+ run_after_commit do
+ ProjectStatistics.increment_statistic(
+ project_id, self.class.project_statistics_name, delta)
+ end
+ else
+ # Use legacy-way to update within transaction
+ ProjectStatistics.increment_statistic(
+ project_id, self.class.project_statistics_name, delta)
+ end
- def schedule_namespace_aggregation_worker
run_after_commit do
next if project.nil?
- Namespaces::ScheduleAggregationWorker.perform_async(project.namespace_id)
+ Namespaces::ScheduleAggregationWorker.perform_async(
+ project.namespace_id)
end
end
end
diff --git a/app/models/container_expiration_policy.rb b/app/models/container_expiration_policy.rb
new file mode 100644
index 00000000000..f60a0179c83
--- /dev/null
+++ b/app/models/container_expiration_policy.rb
@@ -0,0 +1,41 @@
+# frozen_string_literal: true
+
+class ContainerExpirationPolicy < ApplicationRecord
+ belongs_to :project, inverse_of: :container_expiration_policy
+
+ validates :project, presence: true
+ validates :enabled, inclusion: { in: [true, false] }
+ validates :cadence, presence: true, inclusion: { in: ->(_) { self.cadence_options.stringify_keys } }
+ validates :older_than, inclusion: { in: ->(_) { self.older_than_options.stringify_keys } }, allow_nil: true
+ validates :keep_n, inclusion: { in: ->(_) { self.keep_n_options.keys } }, allow_nil: true
+
+ def self.keep_n_options
+ {
+ 1 => _('%{tags} tag per image name') % { tags: 1 },
+ 5 => _('%{tags} tags per image name') % { tags: 5 },
+ 10 => _('%{tags} tags per image name') % { tags: 10 },
+ 25 => _('%{tags} tags per image name') % { tags: 25 },
+ 50 => _('%{tags} tags per image name') % { tags: 50 },
+ 100 => _('%{tags} tags per image name') % { tags: 100 }
+ }
+ end
+
+ def self.cadence_options
+ {
+ '1d': _('Every day'),
+ '7d': _('Every week'),
+ '14d': _('Every two weeks'),
+ '1month': _('Every month'),
+ '3month': _('Every three months')
+ }
+ end
+
+ def self.older_than_options
+ {
+ '7d': _('%{days} days until tags are automatically removed') % { days: 7 },
+ '14d': _('%{days} days until tags are automatically removed') % { days: 14 },
+ '30d': _('%{days} days until tags are automatically removed') % { days: 30 },
+ '90d': _('%{days} days until tags are automatically removed') % { days: 90 }
+ }
+ end
+end
diff --git a/app/models/dashboard_group_milestone.rb b/app/models/dashboard_group_milestone.rb
index cf6094682f3..48c09f4cd6b 100644
--- a/app/models/dashboard_group_milestone.rb
+++ b/app/models/dashboard_group_milestone.rb
@@ -22,4 +22,8 @@ class DashboardGroupMilestone < GlobalMilestone
def dashboard_milestone?
true
end
+
+ def merge_requests_enabled?
+ true
+ end
end
diff --git a/app/models/dashboard_milestone.rb b/app/models/dashboard_milestone.rb
index 9b377b70e5b..fd59b94b737 100644
--- a/app/models/dashboard_milestone.rb
+++ b/app/models/dashboard_milestone.rb
@@ -12,4 +12,8 @@ class DashboardMilestone < GlobalMilestone
def project_milestone?
true
end
+
+ def merge_requests_enabled?
+ project.merge_requests_enabled?
+ end
end
diff --git a/app/models/deploy_key.rb b/app/models/deploy_key.rb
index 22ab326a0ab..793ea3c29c3 100644
--- a/app/models/deploy_key.rb
+++ b/app/models/deploy_key.rb
@@ -2,15 +2,16 @@
class DeployKey < Key
include FromUnion
+ include IgnorableColumns
has_many :deploy_keys_projects, inverse_of: :deploy_key, dependent: :destroy # rubocop:disable Cop/ActiveRecordDependent
has_many :projects, through: :deploy_keys_projects
scope :in_projects, ->(projects) { joins(:deploy_keys_projects).where('deploy_keys_projects.project_id in (?)', projects) }
scope :are_public, -> { where(public: true) }
- scope :with_projects, -> { includes(deploy_keys_projects: { project: [:route, :namespace] }) }
+ scope :with_projects, -> { includes(deploy_keys_projects: { project: [:route, namespace: :route] }) }
- self.ignored_columns += %i[can_push]
+ ignore_column :can_push, remove_after: '2019-12-15', remove_with: '12.6'
accepts_nested_attributes_for :deploy_keys_projects
@@ -23,7 +24,7 @@ class DeployKey < Key
end
def almost_orphaned?
- self.deploy_keys_projects.count == 1
+ self.deploy_keys_projects.size == 1
end
def destroyed_when_orphaned?
@@ -43,7 +44,11 @@ class DeployKey < Key
end
def deploy_keys_project_for(project)
- deploy_keys_projects.find_by(project: project)
+ if association(:deploy_keys_projects).loaded?
+ deploy_keys_projects.find { |dkp| dkp.project_id.eql?(project&.id) }
+ else
+ deploy_keys_projects.find_by(project: project)
+ end
end
def projects_with_write_access
diff --git a/app/models/deployment.rb b/app/models/deployment.rb
index 4a38912db9b..994e69912b6 100644
--- a/app/models/deployment.rb
+++ b/app/models/deployment.rb
@@ -4,6 +4,8 @@ class Deployment < ApplicationRecord
include AtomicInternalId
include IidRoutes
include AfterCommitQueue
+ include UpdatedAtFilterable
+ include Gitlab::Utils::StrongMemoize
belongs_to :project, required: true
belongs_to :environment, required: true
@@ -125,6 +127,12 @@ class Deployment < ApplicationRecord
@scheduled_actions ||= deployable.try(:other_scheduled_actions)
end
+ def playable_build
+ strong_memoize(:playable_build) do
+ deployable.try(:playable?) ? deployable : nil
+ end
+ end
+
def includes_commit?(commit)
return false unless commit
@@ -209,6 +217,23 @@ class Deployment < ApplicationRecord
SQL
end
+ # Changes the status of a deployment and triggers the correspinding state
+ # machine events.
+ def update_status(status)
+ case status
+ when 'running'
+ run
+ when 'success'
+ succeed
+ when 'failed'
+ drop
+ when 'canceled'
+ cancel
+ else
+ raise ArgumentError, "The status #{status.inspect} is invalid"
+ end
+ end
+
private
def ref_path
diff --git a/app/models/conversational_development_index/card.rb b/app/models/dev_ops_score/card.rb
index f9180bdd97b..b1894cf4138 100644
--- a/app/models/conversational_development_index/card.rb
+++ b/app/models/dev_ops_score/card.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-module ConversationalDevelopmentIndex
+module DevOpsScore
class Card
attr_accessor :metric, :title, :description, :feature, :blog, :docs
diff --git a/app/models/conversational_development_index/idea_to_production_step.rb b/app/models/dev_ops_score/idea_to_production_step.rb
index e78a734693c..d892793cf97 100644
--- a/app/models/conversational_development_index/idea_to_production_step.rb
+++ b/app/models/dev_ops_score/idea_to_production_step.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-module ConversationalDevelopmentIndex
+module DevOpsScore
class IdeaToProductionStep
attr_accessor :metric, :title, :features
diff --git a/app/models/conversational_development_index/metric.rb b/app/models/dev_ops_score/metric.rb
index b91123be87e..a9133128ce9 100644
--- a/app/models/conversational_development_index/metric.rb
+++ b/app/models/dev_ops_score/metric.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-module ConversationalDevelopmentIndex
+module DevOpsScore
class Metric < ApplicationRecord
include Presentable
diff --git a/app/models/diff_note.rb b/app/models/diff_note.rb
index 65e87bb08a7..686d06d3ee0 100644
--- a/app/models/diff_note.rb
+++ b/app/models/diff_note.rb
@@ -21,8 +21,8 @@ class DiffNote < Note
validate :positions_complete
validate :verify_supported
- before_validation :set_line_code, if: :on_text?
- after_save :keep_around_commits
+ before_validation :set_line_code, if: :on_text?, unless: :importing?
+ after_save :keep_around_commits, unless: :importing?
after_commit :create_diff_file, on: :create
def discussion_class(*)
@@ -88,10 +88,6 @@ class DiffNote < Note
line&.suggestible?
end
- def discussion_first_note?
- self == discussion.first_note
- end
-
def banzai_render_context(field)
super.merge(suggestions_filter_enabled: true)
end
@@ -108,7 +104,7 @@ class DiffNote < Note
end
def should_create_diff_file?
- on_text? && note_diff_file.nil? && discussion_first_note?
+ on_text? && note_diff_file.nil? && start_of_discussion?
end
def fetch_diff_file
diff --git a/app/models/discussion.rb b/app/models/discussion.rb
index b8525f7b135..d0a7db39a30 100644
--- a/app/models/discussion.rb
+++ b/app/models/discussion.rb
@@ -139,10 +139,6 @@ class Discussion
false
end
- def new_discussion?
- notes.length == 1
- end
-
def last_note
@last_note ||= notes.last
end
diff --git a/app/models/environment.rb b/app/models/environment.rb
index 327b1e594d7..b928dcb21a6 100644
--- a/app/models/environment.rb
+++ b/app/models/environment.rb
@@ -162,6 +162,10 @@ class Environment < ApplicationRecord
stop_action&.play(current_user)
end
+ def reset_auto_stop
+ update_column(:auto_stop_at, nil)
+ end
+
def actions_for(environment)
return [] unless manual_actions
@@ -193,11 +197,11 @@ class Environment < ApplicationRecord
end
def has_metrics?
- available? && prometheus_adapter&.can_query?
+ available? && prometheus_adapter&.configured?
end
def metrics
- prometheus_adapter.query(:environment, self) if has_metrics?
+ prometheus_adapter.query(:environment, self) if has_metrics? && prometheus_adapter.can_query?
end
def prometheus_status
@@ -261,6 +265,17 @@ class Environment < ApplicationRecord
end
end
+ def auto_stop_in
+ auto_stop_at - Time.now if auto_stop_at
+ end
+
+ def auto_stop_in=(value)
+ return unless value
+ return unless parsed_result = ChronicDuration.parse(value)
+
+ self.auto_stop_at = parsed_result.seconds.from_now
+ end
+
private
def generate_slug
diff --git a/app/models/environment_status.rb b/app/models/environment_status.rb
index d7dc64190d6..5fdb5af2d9b 100644
--- a/app/models/environment_status.rb
+++ b/app/models/environment_status.rb
@@ -20,6 +20,28 @@ class EnvironmentStatus
build_environments_status(mr, user, mr.merge_pipeline)
end
+ def self.for_deployed_merge_request(mr, user)
+ statuses = []
+
+ mr.recent_visible_deployments.each do |deploy|
+ env = deploy.environment
+
+ next unless Ability.allowed?(user, :read_environment, env)
+
+ statuses <<
+ EnvironmentStatus.new(deploy.project, env, mr, deploy.sha)
+ end
+
+ # Existing projects that used deployments prior to the introduction of
+ # explicitly linked merge requests won't have any data using this new
+ # approach, so we fall back to retrieving deployments based on CI pipelines.
+ if statuses.any?
+ statuses
+ else
+ after_merge_request(mr, user)
+ end
+ end
+
def initialize(project, environment, merge_request, sha)
@project = project
@environment = environment
@@ -78,7 +100,7 @@ class EnvironmentStatus
def self.build_environments_status(mr, user, pipeline)
return [] unless pipeline
- pipeline.environments.available.map do |environment|
+ pipeline.environments.includes(:project).available.map do |environment|
next unless Ability.allowed?(user, :read_environment, environment)
EnvironmentStatus.new(pipeline.project, environment, mr, pipeline.sha)
diff --git a/app/models/epic.rb b/app/models/epic.rb
index 46723462590..8222bbf9656 100644
--- a/app/models/epic.rb
+++ b/app/models/epic.rb
@@ -3,6 +3,10 @@
# Placeholder class for model that is implemented in EE
# It reserves '&' as a reference prefix, but the table does not exists in CE
class Epic < ApplicationRecord
+ include IgnorableColumns
+
+ ignore_column :milestone_id, remove_after: '2019-12-15', remove_with: '12.7'
+
def self.link_reference_pattern
nil
end
diff --git a/app/models/error_tracking/project_error_tracking_setting.rb b/app/models/error_tracking/project_error_tracking_setting.rb
index 2aa058a243f..6a9986e806b 100644
--- a/app/models/error_tracking/project_error_tracking_setting.rb
+++ b/app/models/error_tracking/project_error_tracking_setting.rb
@@ -5,6 +5,7 @@ module ErrorTracking
include Gitlab::Utils::StrongMemoize
include ReactiveCaching
+ SENTRY_API_ERROR_TYPE_BAD_REQUEST = 'bad_request_for_sentry_api'
SENTRY_API_ERROR_TYPE_MISSING_KEYS = 'missing_keys_in_sentry_response'
SENTRY_API_ERROR_TYPE_NON_20X_RESPONSE = 'non_20x_response_from_sentry'
SENTRY_API_ERROR_INVALID_SIZE = 'invalid_size_of_sentry_response'
@@ -85,7 +86,7 @@ module ErrorTracking
end
def list_sentry_projects
- { projects: sentry_client.list_projects }
+ { projects: sentry_client.projects }
end
def issue_details(opts = {})
@@ -103,7 +104,7 @@ module ErrorTracking
def calculate_reactive_cache(request, opts)
case request
when 'list_issues'
- { issues: sentry_client.list_issues(**opts.symbolize_keys) }
+ sentry_client.list_issues(**opts.symbolize_keys)
when 'issue_details'
{
issue: sentry_client.issue_details(**opts.symbolize_keys)
@@ -119,6 +120,8 @@ module ErrorTracking
{ error: e.message, error_type: SENTRY_API_ERROR_TYPE_MISSING_KEYS }
rescue Sentry::Client::ResponseInvalidSizeError => e
{ error: e.message, error_type: SENTRY_API_ERROR_INVALID_SIZE }
+ rescue Sentry::Client::BadRequestError => e
+ { error: e.message, error_type: SENTRY_API_ERROR_TYPE_BAD_REQUEST }
end
# http://HOST/api/0/projects/ORG/PROJECT
diff --git a/app/models/group_milestone.rb b/app/models/group_milestone.rb
index bfda603c3cb..87338512d99 100644
--- a/app/models/group_milestone.rb
+++ b/app/models/group_milestone.rb
@@ -41,4 +41,8 @@ class GroupMilestone < GlobalMilestone
def legacy_group_milestone?
true
end
+
+ def merge_requests_enabled?
+ true
+ end
end
diff --git a/app/models/hooks/project_hook.rb b/app/models/hooks/project_hook.rb
index 65e3eaf31e7..a5f68831f34 100644
--- a/app/models/hooks/project_hook.rb
+++ b/app/models/hooks/project_hook.rb
@@ -2,6 +2,7 @@
class ProjectHook < WebHook
include TriggerableHooks
+ include Presentable
triggerable_hooks [
:push_hooks,
@@ -18,6 +19,10 @@ class ProjectHook < WebHook
belongs_to :project
validates :project, presence: true
+
+ def pluralized_name
+ _('Project Hooks')
+ end
end
ProjectHook.prepend_if_ee('EE::ProjectHook')
diff --git a/app/models/hooks/service_hook.rb b/app/models/hooks/service_hook.rb
index 8f305dd7c22..4caa45a13d4 100644
--- a/app/models/hooks/service_hook.rb
+++ b/app/models/hooks/service_hook.rb
@@ -1,6 +1,8 @@
# frozen_string_literal: true
class ServiceHook < WebHook
+ include Presentable
+
belongs_to :service
validates :service, presence: true
diff --git a/app/models/hooks/system_hook.rb b/app/models/hooks/system_hook.rb
index 3d54d17e787..c8a0cc05912 100644
--- a/app/models/hooks/system_hook.rb
+++ b/app/models/hooks/system_hook.rb
@@ -20,4 +20,12 @@ class SystemHook < WebHook
def allow_local_requests?
Gitlab::CurrentSettings.allow_local_requests_from_system_hooks?
end
+
+ def pluralized_name
+ _('System Hooks')
+ end
+
+ def help_path
+ 'system_hooks/system_hooks'
+ end
end
diff --git a/app/models/hooks/web_hook.rb b/app/models/hooks/web_hook.rb
index e51b1c41059..dbd5a1b032a 100644
--- a/app/models/hooks/web_hook.rb
+++ b/app/models/hooks/web_hook.rb
@@ -37,4 +37,8 @@ class WebHook < ApplicationRecord
def allow_local_requests?
Gitlab::CurrentSettings.allow_local_requests_from_web_hooks_and_services?
end
+
+ def help_path
+ 'user/project/integrations/webhooks'
+ end
end
diff --git a/app/models/hooks/web_hook_log.rb b/app/models/hooks/web_hook_log.rb
index cfb1f3ec63b..df0e7b30f84 100644
--- a/app/models/hooks/web_hook_log.rb
+++ b/app/models/hooks/web_hook_log.rb
@@ -1,6 +1,9 @@
# frozen_string_literal: true
class WebHookLog < ApplicationRecord
+ include SafeUrl
+ include Presentable
+
belongs_to :web_hook
serialize :request_headers, Hash # rubocop:disable Cop/ActiveRecordSerialize
@@ -9,6 +12,8 @@ class WebHookLog < ApplicationRecord
validates :web_hook, presence: true
+ before_save :obfuscate_basic_auth
+
def self.recent
where('created_at >= ?', 2.days.ago.beginning_of_day)
.order(created_at: :desc)
@@ -17,4 +22,10 @@ class WebHookLog < ApplicationRecord
def success?
response_status =~ /^2/
end
+
+ private
+
+ def obfuscate_basic_auth
+ self.url = safe_url
+ end
end
diff --git a/app/models/import_failure.rb b/app/models/import_failure.rb
new file mode 100644
index 00000000000..998572853d3
--- /dev/null
+++ b/app/models/import_failure.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class ImportFailure < ApplicationRecord
+ belongs_to :project
+
+ validates :project, presence: true
+end
diff --git a/app/models/issue.rb b/app/models/issue.rb
index 948cadc34e5..88df3baa809 100644
--- a/app/models/issue.rb
+++ b/app/models/issue.rb
@@ -14,6 +14,7 @@ class Issue < ApplicationRecord
include TimeTrackable
include ThrottledTouch
include LabelEventable
+ include IgnorableColumns
DueDateStruct = Struct.new(:title, :name).freeze
NoDueDate = DueDateStruct.new('No Due Date', '0').freeze
@@ -41,6 +42,10 @@ class Issue < ApplicationRecord
has_many :issue_assignees
has_many :assignees, class_name: "User", through: :issue_assignees
has_many :zoom_meetings
+ has_many :user_mentions, class_name: "IssueUserMention"
+ has_one :sentry_issue
+
+ accepts_nested_attributes_for :sentry_issue
validates :project, presence: true
@@ -60,13 +65,15 @@ class Issue < ApplicationRecord
scope :order_closest_future_date, -> { reorder(Arel.sql('CASE WHEN issues.due_date >= CURRENT_DATE THEN 0 ELSE 1 END ASC, ABS(CURRENT_DATE - issues.due_date) ASC')) }
scope :order_relative_position_asc, -> { reorder(::Gitlab::Database.nulls_last_order('relative_position', 'ASC')) }
- scope :preload_associations, -> { preload(:labels, project: :namespace) }
+ scope :preload_associated_models, -> { preload(:labels, project: :namespace) }
scope :with_api_entity_associations, -> { preload(:timelogs, :assignees, :author, :notes, :labels, project: [:route, { namespace: :route }] ) }
scope :public_only, -> { where(confidential: false) }
scope :confidential_only, -> { where(confidential: true) }
- scope :counts_by_state, -> { reorder(nil).group(:state).count }
+ scope :counts_by_state, -> { reorder(nil).group(:state_id).count }
+
+ ignore_column :state, remove_with: '12.7', remove_after: '2019-12-22'
after_commit :expire_etag_cache
after_save :ensure_metrics, unless: :imported?
@@ -74,7 +81,7 @@ class Issue < ApplicationRecord
attr_spammable :title, spam_title: true
attr_spammable :description, spam_description: true
- state_machine :state_id, initial: :opened do
+ state_machine :state_id, initial: :opened, initialize: false do
event :close do
transition [:opened] => :closed
end
@@ -235,7 +242,7 @@ class Issue < ApplicationRecord
return false unless readable_by?(user)
- user.full_private_access? ||
+ user.can_read_all_resources? ||
::Gitlab::ExternalAuthorization.access_allowed?(
user, project.external_authorization_classification_label)
end
diff --git a/app/models/issue/metrics.rb b/app/models/issue/metrics.rb
index 8010cbc3d78..d4e51dcfbca 100644
--- a/app/models/issue/metrics.rb
+++ b/app/models/issue/metrics.rb
@@ -3,6 +3,12 @@
class Issue::Metrics < ApplicationRecord
belongs_to :issue
+ scope :for_issues, ->(issues) { where(issue: issues) }
+ scope :with_first_mention_not_earlier_than, -> (timestamp) {
+ where(first_mentioned_in_commit_at: nil)
+ .or(where(arel_table['first_mentioned_in_commit_at'].gteq(timestamp)))
+ }
+
def record!
if issue.milestone_id.present? && self.first_associated_with_milestone_at.blank?
self.first_associated_with_milestone_at = Time.now
diff --git a/app/models/issue_user_mention.rb b/app/models/issue_user_mention.rb
new file mode 100644
index 00000000000..3eadd580f7f
--- /dev/null
+++ b/app/models/issue_user_mention.rb
@@ -0,0 +1,6 @@
+# frozen_string_literal: true
+
+class IssueUserMention < UserMention
+ belongs_to :issue
+ belongs_to :note
+end
diff --git a/app/models/key.rb b/app/models/key.rb
index ff601966c26..e549c59b58f 100644
--- a/app/models/key.rb
+++ b/app/models/key.rb
@@ -5,6 +5,9 @@ require 'digest/md5'
class Key < ApplicationRecord
include AfterCommitQueue
include Sortable
+ include Sha256Attribute
+
+ sha256_attribute :fingerprint_sha256
belongs_to :user
@@ -34,6 +37,12 @@ class Key < ApplicationRecord
after_destroy :post_destroy_hook
after_destroy :refresh_user_cache
+ alias_attribute :fingerprint_md5, :fingerprint
+
+ scope :preload_users, -> { preload(:user) }
+ scope :for_user, -> (user) { where(user: user) }
+ scope :order_last_used_at_desc, -> { reorder(::Gitlab::Database.nulls_last_order('last_used_at', 'DESC')) }
+
def self.regular_keys
where(type: ['Key', nil])
end
@@ -114,10 +123,12 @@ class Key < ApplicationRecord
def generate_fingerprint
self.fingerprint = nil
+ self.fingerprint_sha256 = nil
return unless public_key.valid?
- self.fingerprint = public_key.fingerprint
+ self.fingerprint_md5 = public_key.fingerprint
+ self.fingerprint_sha256 = public_key.fingerprint("SHA256").gsub("SHA256:", "")
end
def key_meets_restrictions
diff --git a/app/models/list.rb b/app/models/list.rb
index 13c42b55bf7..b2ba796e3dc 100644
--- a/app/models/list.rb
+++ b/app/models/list.rb
@@ -21,7 +21,7 @@ class List < ApplicationRecord
scope :destroyable, -> { where(list_type: list_types.slice(*destroyable_types).values) }
scope :movable, -> { where(list_type: list_types.slice(*movable_types).values) }
- scope :preload_associations, -> { preload(:board, label: :priorities) }
+ scope :preload_associated_models, -> { preload(:board, label: :priorities) }
scope :ordered, -> { order(:list_type, :position) }
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 7e1898e7142..2280c5280d5 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -17,6 +17,7 @@ class MergeRequest < ApplicationRecord
include FromUnion
include DeprecatedAssignee
include ShaAttribute
+ include IgnorableColumns
sha_attribute :squash_commit_sha
@@ -26,8 +27,6 @@ class MergeRequest < ApplicationRecord
SORTING_PREFERENCE_FIELD = :merge_requests_sort
- prepend_if_ee('::EE::MergeRequest') # rubocop: disable Cop/InjectEnterpriseEditionModule
-
belongs_to :target_project, class_name: "Project"
belongs_to :source_project, class_name: "Project"
belongs_to :merge_user, class_name: "User"
@@ -72,6 +71,15 @@ class MergeRequest < ApplicationRecord
has_many :merge_request_assignees
has_many :assignees, class_name: "User", through: :merge_request_assignees
+ has_many :user_mentions, class_name: "MergeRequestUserMention"
+
+ has_many :deployment_merge_requests
+
+ # These are deployments created after the merge request has been merged, and
+ # the merge request was tracked explicitly (instead of implicitly using a CI
+ # build).
+ has_many :deployments,
+ through: :deployment_merge_requests
KNOWN_MERGE_PARAMS = [
:auto_merge_strategy,
@@ -103,7 +111,7 @@ class MergeRequest < ApplicationRecord
super + [:merged, :locked]
end
- state_machine :state_id, initial: :opened do
+ state_machine :state_id, initial: :opened, initialize: false do
event :close do
transition [:opened] => :closed
end
@@ -199,6 +207,9 @@ class MergeRequest < ApplicationRecord
scope :by_milestone, ->(milestone) { where(milestone_id: milestone) }
scope :of_projects, ->(ids) { where(target_project_id: ids) }
scope :from_project, ->(project) { where(source_project_id: project.id) }
+ scope :from_and_to_forks, ->(project) do
+ where('source_project_id <> target_project_id AND (source_project_id = ? OR target_project_id = ?)', project.id, project.id)
+ end
scope :merged, -> { with_state(:merged) }
scope :closed_and_merged, -> { with_states(:closed, :merged) }
scope :open_and_closed, -> { with_states(:opened, :closed) }
@@ -228,7 +239,9 @@ class MergeRequest < ApplicationRecord
with_state(:opened).where(auto_merge_enabled: true)
end
- after_save :keep_around_commit
+ ignore_column :state, remove_with: '12.7', remove_after: '2019-12-22'
+
+ after_save :keep_around_commit, unless: :importing?
alias_attribute :project, :target_project
alias_attribute :project_id, :target_project_id
@@ -241,6 +254,9 @@ class MergeRequest < ApplicationRecord
alias_attribute :auto_merge_enabled, :merge_when_pipeline_succeeds
alias_method :issuing_parent, :target_project
+ delegate :active?, to: :head_pipeline, prefix: true, allow_nil: true
+ delegate :success?, to: :actual_head_pipeline, prefix: true, allow_nil: true
+
RebaseLockTimeout = Class.new(StandardError)
REBASE_LOCK_MESSAGE = _("Failed to enqueue the rebase operation, possibly due to a long-lived transaction. Try again later.")
@@ -260,7 +276,7 @@ class MergeRequest < ApplicationRecord
def self.recent_target_branches(limit: 100)
group(:target_branch)
.select(:target_branch)
- .reorder('MAX(merge_requests.updated_at) DESC')
+ .reorder(arel_table[:updated_at].maximum.desc)
.limit(limit)
.pluck(:target_branch)
end
@@ -414,15 +430,6 @@ class MergeRequest < ApplicationRecord
limit ? shas.take(limit) : shas
end
- # Returns true if there are commits that match at least one commit SHA.
- def includes_any_commits?(shas)
- if persisted?
- merge_request_diff.commits_by_shas(shas).exists?
- else
- (commit_shas & shas).present?
- end
- end
-
def supports_suggestion?
true
end
@@ -1060,7 +1067,7 @@ class MergeRequest < ApplicationRecord
# Returns the oldest multi-line commit message, or the MR title if none found
def default_squash_commit_message
strong_memoize(:default_squash_commit_message) do
- commits.without_merge_commits.reverse.find(&:description?)&.safe_message || title
+ recent_commits.without_merge_commits.reverse_each.find(&:description?)&.safe_message || title
end
end
@@ -1143,26 +1150,6 @@ class MergeRequest < ApplicationRecord
actual_head_pipeline.environments
end
- def state_human_name
- if merged?
- "Merged"
- elsif closed?
- "Closed"
- else
- "Open"
- end
- end
-
- def state_icon_name
- if merged?
- "git-merge"
- elsif closed?
- "close"
- else
- "issue-open-m"
- end
- end
-
def fetch_ref!
target_project.repository.fetch_source_branch!(source_project.repository, source_branch, ref_path)
end
@@ -1239,16 +1226,8 @@ class MergeRequest < ApplicationRecord
end
def all_pipelines
- return Ci::Pipeline.none unless source_project
-
- shas = all_commit_shas
-
strong_memoize(:all_pipelines) do
- Ci::Pipeline.from_union(
- [source_project.ci_pipelines.merge_request_pipelines(self, shas),
- source_project.ci_pipelines.detached_merge_request_pipelines(self, shas),
- source_project.ci_pipelines.triggered_for_branch(source_branch).for_sha(shas)],
- remove_duplicates: false).sort_by_merge_request_pipelines
+ MergeRequest::Pipelines.new(self).all
end
end
@@ -1444,6 +1423,12 @@ class MergeRequest < ApplicationRecord
true
end
+ def pipeline_coverage_delta
+ if base_pipeline&.coverage && head_pipeline&.coverage
+ '%.2f' % (head_pipeline.coverage.to_f - base_pipeline.coverage.to_f)
+ end
+ end
+
def base_pipeline
@base_pipeline ||= project.ci_pipelines
.order(id: :desc)
@@ -1499,6 +1484,14 @@ class MergeRequest < ApplicationRecord
all_pipelines.for_sha_or_source_sha(diff_head_sha).first
end
+ def etag_caching_enabled?
+ true
+ end
+
+ def recent_visible_deployments
+ deployments.visible.includes(:environment).order(id: :desc).limit(10)
+ end
+
private
def with_rebase_lock
@@ -1521,7 +1514,7 @@ class MergeRequest < ApplicationRecord
end
end
rescue ActiveRecord::LockWaitTimeout => e
- Gitlab::Sentry.track_acceptable_exception(e)
+ Gitlab::ErrorTracking.track_exception(e)
raise RebaseLockTimeout, REBASE_LOCK_MESSAGE
end
@@ -1543,3 +1536,5 @@ class MergeRequest < ApplicationRecord
Gitlab::EtagCaching::Store.new.touch(key)
end
end
+
+MergeRequest.prepend_if_ee('::EE::MergeRequest')
diff --git a/app/models/merge_request/pipelines.rb b/app/models/merge_request/pipelines.rb
new file mode 100644
index 00000000000..c32f29a9304
--- /dev/null
+++ b/app/models/merge_request/pipelines.rb
@@ -0,0 +1,86 @@
+# frozen_string_literal: true
+
+# A state object to centralize logic related to merge request pipelines
+class MergeRequest::Pipelines
+ include Gitlab::Utils::StrongMemoize
+
+ EVENT = 'merge_request_event'
+
+ def initialize(merge_request)
+ @merge_request = merge_request
+ end
+
+ attr_reader :merge_request
+
+ delegate :commit_shas, :source_project, :source_branch, to: :merge_request
+
+ def all
+ strong_memoize(:all_pipelines) do
+ next Ci::Pipeline.none unless source_project
+
+ pipelines =
+ if merge_request.persisted?
+ pipelines_using_cte
+ else
+ triggered_for_branch.for_sha(commit_shas)
+ end
+
+ sort(pipelines)
+ end
+ end
+
+ private
+
+ def pipelines_using_cte
+ cte = Gitlab::SQL::CTE.new(:shas, merge_request.all_commits.select(:sha))
+
+ source_pipelines_join = cte.table[:sha].eq(Ci::Pipeline.arel_table[:source_sha])
+ source_pipelines = filter_by(triggered_by_merge_request, cte, source_pipelines_join)
+ detached_pipelines = filter_by_sha(triggered_by_merge_request, cte)
+ pipelines_for_branch = filter_by_sha(triggered_for_branch, cte)
+
+ Ci::Pipeline.with(cte.to_arel)
+ .from_union([source_pipelines, detached_pipelines, pipelines_for_branch])
+ end
+
+ def filter_by_sha(pipelines, cte)
+ hex = Arel::Nodes::SqlLiteral.new("'hex'")
+ string_sha = Arel::Nodes::NamedFunction.new('encode', [cte.table[:sha], hex])
+ join_condition = string_sha.eq(Ci::Pipeline.arel_table[:sha])
+
+ filter_by(pipelines, cte, join_condition)
+ end
+
+ def filter_by(pipelines, cte, join_condition)
+ shas_table =
+ Ci::Pipeline.arel_table
+ .join(cte.table, Arel::Nodes::InnerJoin)
+ .on(join_condition)
+ .join_sources
+
+ pipelines.joins(shas_table)
+ end
+
+ def triggered_by_merge_request
+ source_project.ci_pipelines
+ .where(source: :merge_request_event, merge_request: merge_request)
+ end
+
+ def triggered_for_branch
+ source_project.ci_pipelines
+ .where(source: branch_pipeline_sources, ref: source_branch, tag: false)
+ end
+
+ def branch_pipeline_sources
+ strong_memoize(:branch_pipeline_sources) do
+ Ci::Pipeline.sources.reject { |source| source == EVENT }.values
+ end
+ end
+
+ def sort(pipelines)
+ sql = 'CASE ci_pipelines.source WHEN (?) THEN 0 ELSE 1 END, ci_pipelines.id DESC'
+ query = ApplicationRecord.send(:sanitize_sql_array, [sql, Ci::Pipeline.sources[:merge_request_event]]) # rubocop:disable GitlabSecurity/PublicSend
+
+ pipelines.order(Arel.sql(query))
+ end
+end
diff --git a/app/models/merge_request_diff.rb b/app/models/merge_request_diff.rb
index 70ce4df5678..71a344e69e3 100644
--- a/app/models/merge_request_diff.rb
+++ b/app/models/merge_request_diff.rb
@@ -10,6 +10,7 @@ class MergeRequestDiff < ApplicationRecord
# Don't display more than 100 commits at once
COMMITS_SAFE_SIZE = 100
+ BATCH_SIZE = 1000
# Applies to closed or merged MRs when determining whether to migrate their
# diffs to external storage
@@ -49,13 +50,14 @@ class MergeRequestDiff < ApplicationRecord
scope :by_commit_sha, ->(sha) do
joins(:merge_request_diff_commits).where(merge_request_diff_commits: { sha: sha }).reorder(nil)
end
+ scope :has_diff_files, -> { where(id: MergeRequestDiffFile.select(:merge_request_diff_id)) }
scope :by_project_id, -> (project_id) do
joins(:merge_request).where(merge_requests: { target_project_id: project_id })
end
scope :recent, -> { order(id: :desc).limit(100) }
- scope :files_in_database, -> { where(stored_externally: [false, nil]) }
+ scope :files_in_database, -> { has_diff_files.where(stored_externally: [false, nil]) }
scope :not_latest_diffs, -> do
merge_requests = MergeRequest.arel_table
@@ -162,7 +164,7 @@ class MergeRequestDiff < ApplicationRecord
# hooks that run when an attribute was changed are run twice.
reset
- keep_around_commits
+ keep_around_commits unless importing?
end
def set_as_latest_diff
@@ -253,10 +255,14 @@ class MergeRequestDiff < ApplicationRecord
merge_request_diff_commits.limit(limit).pluck(:sha)
end
- def commits_by_shas(shas)
- return MergeRequestDiffCommit.none unless shas.present?
+ def includes_any_commits?(shas)
+ return false if shas.blank?
- merge_request_diff_commits.where(sha: shas)
+ # when the number of shas is huge (1000+) we don't want
+ # to pass them all as an SQL param, let's pass them in batches
+ shas.each_slice(BATCH_SIZE).any? do |batched_shas|
+ merge_request_diff_commits.where(sha: batched_shas).exists?
+ end
end
def diff_refs=(new_diff_refs)
@@ -303,20 +309,25 @@ class MergeRequestDiff < ApplicationRecord
end
def diffs_in_batch(batch_page, batch_size, diff_options:)
- Gitlab::Diff::FileCollection::MergeRequestDiffBatch.new(self,
- batch_page,
- batch_size,
- diff_options: diff_options)
+ fetching_repository_diffs(diff_options) do |comparison|
+ if comparison
+ comparison.diffs_in_batch(batch_page, batch_size, diff_options: diff_options)
+ else
+ diffs_in_batch_collection(batch_page, batch_size, diff_options: diff_options)
+ end
+ end
end
def diffs(diff_options = nil)
- if without_files? && comparison = diff_refs&.compare_in(project)
+ fetching_repository_diffs(diff_options) do |comparison|
# It should fetch the repository when diffs are cleaned by the system.
# We don't keep these for storage overload purposes.
# See https://gitlab.com/gitlab-org/gitlab-foss/issues/37639
- comparison.diffs(diff_options)
- else
- diffs_collection(diff_options)
+ if comparison
+ comparison.diffs(diff_options)
+ else
+ diffs_collection(diff_options)
+ end
end
end
@@ -424,6 +435,13 @@ class MergeRequestDiff < ApplicationRecord
private
+ def diffs_in_batch_collection(batch_page, batch_size, diff_options:)
+ Gitlab::Diff::FileCollection::MergeRequestDiffBatch.new(self,
+ batch_page,
+ batch_size,
+ diff_options: diff_options)
+ end
+
def encode_in_base64?(diff_text)
(diff_text.encoding == Encoding::BINARY && !diff_text.ascii_only?) ||
diff_text.include?("\0")
@@ -481,6 +499,25 @@ class MergeRequestDiff < ApplicationRecord
end
end
+ # Yields the block with the repository Compare object if it should
+ # fetch diffs from the repository instead DB.
+ def fetching_repository_diffs(diff_options)
+ return unless block_given?
+
+ diff_options ||= {}
+
+ # Can be read as: fetch the persisted diffs if yielded without the
+ # Compare object.
+ return yield unless without_files? || diff_options[:ignore_whitespace_change]
+ return yield unless diff_refs&.complete?
+
+ comparison = diff_refs.compare_in(repository.project)
+
+ return yield unless comparison
+
+ yield(comparison)
+ end
+
def use_external_diff?
return false unless has_attribute?(:external_diff)
return false unless Gitlab.config.external_diffs.enabled
diff --git a/app/models/merge_request_user_mention.rb b/app/models/merge_request_user_mention.rb
new file mode 100644
index 00000000000..222d9c1aa8c
--- /dev/null
+++ b/app/models/merge_request_user_mention.rb
@@ -0,0 +1,6 @@
+# frozen_string_literal: true
+
+class MergeRequestUserMention < UserMention
+ belongs_to :merge_request
+ belongs_to :note
+end
diff --git a/app/models/milestone.rb b/app/models/milestone.rb
index d0be54eed02..987373aaf1b 100644
--- a/app/models/milestone.rb
+++ b/app/models/milestone.rb
@@ -274,6 +274,16 @@ class Milestone < ApplicationRecord
project_id.present?
end
+ def merge_requests_enabled?
+ if group_milestone?
+ # Assume that groups have at least one project with merge requests enabled.
+ # Otherwise, we would need to load all of the projects from the database.
+ true
+ elsif project_milestone?
+ project&.merge_requests_enabled?
+ end
+ end
+
private
# Milestone titles must be unique across project milestones and group milestones
@@ -331,6 +341,6 @@ class Milestone < ApplicationRecord
end
def issues_finder_params
- { project_id: project_id, group_id: group_id }.compact
+ { project_id: project_id, group_id: group_id, include_subgroups: group_id.present? }.compact
end
end
diff --git a/app/models/milestone_release.rb b/app/models/milestone_release.rb
index f7127df339d..713c8ef7b94 100644
--- a/app/models/milestone_release.rb
+++ b/app/models/milestone_release.rb
@@ -6,9 +6,6 @@ class MilestoneRelease < ApplicationRecord
validate :same_project_between_milestone_and_release
- # Keep until 2019-11-29
- self.ignored_columns += %i[id]
-
private
def same_project_between_milestone_and_release
diff --git a/app/models/namespace.rb b/app/models/namespace.rb
index 5663ebf8ba1..d5a7c172fec 100644
--- a/app/models/namespace.rb
+++ b/app/models/namespace.rb
@@ -123,8 +123,10 @@ class Namespace < ApplicationRecord
def find_by_pages_host(host)
gitlab_host = "." + Settings.pages.host.downcase
- name = host.downcase.delete_suffix(gitlab_host)
+ host = host.downcase
+ return unless host.ends_with?(gitlab_host)
+ name = host.delete_suffix(gitlab_host)
Namespace.find_by_full_path(name)
end
end
diff --git a/app/models/note.rb b/app/models/note.rb
index 493132e30cc..cfa7ba98081 100644
--- a/app/models/note.rb
+++ b/app/models/note.rb
@@ -155,9 +155,9 @@ class Note < ApplicationRecord
after_initialize :ensure_discussion_id
before_validation :nullify_blank_type, :nullify_blank_line_code
before_validation :set_discussion_id, on: :create
- after_save :keep_around_commit, if: :for_project_noteable?
- after_save :expire_etag_cache
- after_save :touch_noteable
+ after_save :keep_around_commit, if: :for_project_noteable?, unless: :importing?
+ after_save :expire_etag_cache, unless: :importing?
+ after_save :touch_noteable, unless: :importing?
after_destroy :expire_etag_cache
class << self
@@ -413,6 +413,10 @@ class Note < ApplicationRecord
full_discussion || to_discussion
end
+ def start_of_discussion?
+ discussion.first_note == self
+ end
+
def part_of_discussion?
!to_discussion.individual_note?
end
@@ -495,8 +499,18 @@ class Note < ApplicationRecord
project
end
+ def user_mentions
+ noteable.user_mentions.where(note: self)
+ end
+
private
+ # Using this method followed by a call to `save` may result in ActiveRecord::RecordNotUnique exception
+ # in a multithreaded environment. Make sure to use it within a `safe_ensure_unique` block.
+ def model_user_mention
+ user_mentions.first_or_initialize
+ end
+
def system_note_viewable_by?(user)
return true unless system_note_metadata
diff --git a/app/models/pages_domain.rb b/app/models/pages_domain.rb
index 3869d86b667..dd2cafd9a35 100644
--- a/app/models/pages_domain.rb
+++ b/app/models/pages_domain.rb
@@ -6,6 +6,7 @@ class PagesDomain < ApplicationRecord
SSL_RENEWAL_THRESHOLD = 30.days.freeze
enum certificate_source: { user_provided: 0, gitlab_provided: 1 }, _prefix: :certificate
+ enum domain_type: { instance: 0, group: 1, project: 2 }, _prefix: :domain_type
belongs_to :project
has_many :acme_orders, class_name: "PagesDomainAcmeOrder"
@@ -25,6 +26,8 @@ class PagesDomain < ApplicationRecord
validate :validate_intermediates, if: ->(domain) { domain.certificate.present? && domain.certificate_changed? }
default_value_for(:auto_ssl_enabled, allow_nil: false) { ::Gitlab::LetsEncrypt.enabled? }
+ default_value_for :domain_type, allow_nil: false, value: :project
+ default_value_for :wildcard, allow_nil: false, value: false
attr_encrypted :key,
mode: :per_attribute_iv_and_salt,
@@ -217,6 +220,8 @@ class PagesDomain < ApplicationRecord
# rubocop: disable CodeReuse/ServiceClass
def update_daemon
+ return if domain_type_instance?
+
::Projects::UpdatePagesConfigurationService.new(project).execute
end
# rubocop: enable CodeReuse/ServiceClass
diff --git a/app/models/personal_access_token.rb b/app/models/personal_access_token.rb
index 7ae431eaad7..af079f7ebc4 100644
--- a/app/models/personal_access_token.rb
+++ b/app/models/personal_access_token.rb
@@ -3,6 +3,7 @@
class PersonalAccessToken < ApplicationRecord
include Expirable
include TokenAuthenticatable
+ include Sortable
add_authentication_token_field :token, digest: true
@@ -16,9 +17,12 @@ class PersonalAccessToken < ApplicationRecord
before_save :ensure_token
scope :active, -> { where("revoked = false AND (expires_at >= NOW() OR expires_at IS NULL)") }
+ scope :expiring_and_not_notified, ->(date) { where(["revoked = false AND expire_notification_delivered = false AND expires_at >= NOW() AND expires_at <= ?", date]) }
scope :inactive, -> { where("revoked = true OR expires_at < NOW()") }
scope :with_impersonation, -> { where(impersonation: true) }
scope :without_impersonation, -> { where(impersonation: false) }
+ scope :for_user, -> (user) { where(user: user) }
+ scope :preload_users, -> { preload(:user) }
validates :scopes, presence: true
validate :validate_scopes
@@ -70,3 +74,5 @@ class PersonalAccessToken < ApplicationRecord
"gitlab:personal_access_token:#{user_id}"
end
end
+
+PersonalAccessToken.prepend_if_ee('EE::PersonalAccessToken')
diff --git a/app/models/project.rb b/app/models/project.rb
index 7ae4e2a4cd7..cfdcdbed502 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -31,6 +31,7 @@ class Project < ApplicationRecord
include FeatureGate
include OptionallySearch
include FromUnion
+ include IgnorableColumns
extend Gitlab::Cache::RequestCache
extend Gitlab::ConfigHelper
@@ -62,23 +63,9 @@ class Project < ApplicationRecord
cache_markdown_field :description, pipeline: :description
- delegate :feature_available?, :builds_enabled?, :wiki_enabled?, :merge_requests_enabled?,
- :issues_enabled?, :pages_enabled?, :public_pages?, :private_pages?,
- :merge_requests_access_level, :issues_access_level, :wiki_access_level,
- :snippets_access_level, :builds_access_level, :repository_access_level,
- to: :project_feature, allow_nil: true
-
- delegate :base_dir, :disk_path, to: :storage
-
- delegate :scheduled?, :started?, :in_progress?,
- :failed?, :finished?,
- prefix: :import, to: :import_state, allow_nil: true
-
- delegate :no_import?, to: :import_state, allow_nil: true
-
# TODO: remove once GitLab 12.5 is released
# https://gitlab.com/gitlab-org/gitlab/issues/34638
- self.ignored_columns += %i[merge_requests_require_code_owner_approval]
+ ignore_column :merge_requests_require_code_owner_approval, remove_after: '2019-12-01', remove_with: '12.6'
default_value_for :archived, false
default_value_for :resolve_outdated_diff_discussions, false
@@ -110,8 +97,11 @@ class Project < ApplicationRecord
unless: :ci_cd_settings,
if: proc { ProjectCiCdSetting.available? }
+ after_create :create_container_expiration_policy,
+ unless: :container_expiration_policy
+
after_create :create_pages_metadatum,
- unless: :pages_metadatum
+ unless: :pages_metadatum
after_create :set_timestamps_for_create
after_update :update_forks_visibility_level
@@ -183,6 +173,7 @@ class Project < ApplicationRecord
has_one :microsoft_teams_service
has_one :packagist_service
has_one :hangouts_chat_service
+ has_one :unify_circuit_service
has_one :root_of_fork_network,
foreign_key: 'root_project_id',
@@ -193,6 +184,7 @@ class Project < ApplicationRecord
has_one :forked_from_project, through: :fork_network_member
has_many :forked_to_members, class_name: 'ForkNetworkMember', foreign_key: 'forked_from_project_id'
has_many :forks, through: :forked_to_members, source: :project, inverse_of: :forked_from_project
+ has_many :fork_network_projects, through: :fork_network, source: :projects
has_one :import_state, autosave: true, class_name: 'ProjectImportState', inverse_of: :project
has_one :import_export_upload, dependent: :destroy # rubocop:disable Cop/ActiveRecordDependent
@@ -259,6 +251,7 @@ class Project < ApplicationRecord
# which is not managed by the DB. Hence we're still using dependent: :destroy
# here.
has_many :container_repositories, dependent: :destroy # rubocop:disable Cop/ActiveRecordDependent
+ has_one :container_expiration_policy, inverse_of: :project
has_many :commit_statuses
# The relation :all_pipelines is intended to be used when we want to get the
@@ -309,11 +302,14 @@ class Project < ApplicationRecord
has_one :pages_metadatum, class_name: 'ProjectPagesMetadatum', inverse_of: :project
+ has_many :import_failures, inverse_of: :project
+
accepts_nested_attributes_for :variables, allow_destroy: true
accepts_nested_attributes_for :project_feature, update_only: true
accepts_nested_attributes_for :import_data
accepts_nested_attributes_for :auto_devops, update_only: true
accepts_nested_attributes_for :ci_cd_settings, update_only: true
+ accepts_nested_attributes_for :container_expiration_policy, update_only: true
accepts_nested_attributes_for :remote_mirrors,
allow_destroy: true,
@@ -323,13 +319,22 @@ class Project < ApplicationRecord
accepts_nested_attributes_for :metrics_setting, update_only: true, allow_destroy: true
accepts_nested_attributes_for :grafana_integration, update_only: true, allow_destroy: true
+ delegate :feature_available?, :builds_enabled?, :wiki_enabled?, :merge_requests_enabled?,
+ :issues_enabled?, :pages_enabled?, :public_pages?, :private_pages?,
+ :merge_requests_access_level, :issues_access_level, :wiki_access_level,
+ :snippets_access_level, :builds_access_level, :repository_access_level,
+ to: :project_feature, allow_nil: true
+ delegate :scheduled?, :started?, :in_progress?, :failed?, :finished?,
+ prefix: :import, to: :import_state, allow_nil: true
+ delegate :base_dir, :disk_path, to: :storage
+ delegate :no_import?, to: :import_state, allow_nil: true
delegate :name, to: :owner, allow_nil: true, prefix: true
delegate :members, to: :team, prefix: true
delegate :add_user, :add_users, to: :team
delegate :add_guest, :add_reporter, :add_developer, :add_maintainer, :add_role, to: :team
delegate :add_master, to: :team # @deprecated
delegate :group_runners_enabled, :group_runners_enabled=, :group_runners_enabled?, to: :ci_cd_settings
- delegate :root_ancestor, to: :namespace, allow_nil: true
+ delegate :root_ancestor, :actual_limits, to: :namespace, allow_nil: true
delegate :last_pipeline, to: :commit, allow_nil: true
delegate :external_dashboard_url, to: :metrics_setting, allow_nil: true, prefix: true
delegate :default_git_depth, :default_git_depth=, to: :ci_cd_settings, prefix: :ci
@@ -374,9 +379,17 @@ class Project < ApplicationRecord
scope :pending_delete, -> { where(pending_delete: true) }
scope :without_deleted, -> { where(pending_delete: false) }
- scope :with_storage_feature, ->(feature) { where('storage_version >= :version', version: HASHED_STORAGE_FEATURES[feature]) }
- scope :without_storage_feature, ->(feature) { where('storage_version < :version OR storage_version IS NULL', version: HASHED_STORAGE_FEATURES[feature]) }
- scope :with_unmigrated_storage, -> { where('storage_version < :version OR storage_version IS NULL', version: LATEST_STORAGE_VERSION) }
+ scope :with_storage_feature, ->(feature) do
+ where(arel_table[:storage_version].gteq(HASHED_STORAGE_FEATURES[feature]))
+ end
+ scope :without_storage_feature, ->(feature) do
+ where(arel_table[:storage_version].lt(HASHED_STORAGE_FEATURES[feature])
+ .or(arel_table[:storage_version].eq(nil)))
+ end
+ scope :with_unmigrated_storage, -> do
+ where(arel_table[:storage_version].lt(LATEST_STORAGE_VERSION)
+ .or(arel_table[:storage_version].eq(nil)))
+ end
# last_activity_at is throttled every minute, but last_repository_updated_at is updated with every push
scope :sorted_by_activity, -> { reorder(Arel.sql("GREATEST(COALESCE(last_activity_at, '1970-01-01'), COALESCE(last_repository_updated_at, '1970-01-01')) DESC")) }
@@ -395,7 +408,9 @@ class Project < ApplicationRecord
scope :for_milestones, ->(ids) { joins(:milestones).where('milestones.id' => ids).distinct }
scope :with_push, -> { joins(:events).where('events.action = ?', Event::PUSHED) }
scope :with_project_feature, -> { joins('LEFT JOIN project_features ON projects.id = project_features.project_id') }
+ scope :inc_routes, -> { includes(:route, namespace: :route) }
scope :with_statistics, -> { includes(:statistics) }
+ scope :with_service, ->(service) { joins(service).eager_load(service) }
scope :with_shared_runners, -> { where(shared_runners_enabled: true) }
scope :with_container_registry, -> { where(container_registry_enabled: true) }
scope :inside_path, ->(path) do
@@ -435,6 +450,7 @@ class Project < ApplicationRecord
scope :with_merge_requests_available_for_user, ->(current_user) { with_feature_available_for_user(:merge_requests, current_user) }
scope :with_merge_requests_enabled, -> { with_feature_enabled(:merge_requests) }
scope :with_remote_mirrors, -> { joins(:remote_mirrors).where(remote_mirrors: { enabled: true }).distinct }
+ scope :with_limit, -> (maximum) { limit(maximum) }
scope :with_group_runners_enabled, -> do
joins(:ci_cd_settings)
@@ -543,7 +559,11 @@ class Project < ApplicationRecord
#
# query - The search query as a String.
def search(query)
- fuzzy_search(query, [:path, :name, :description])
+ if Feature.enabled?(:project_search_by_full_path, default_enabled: true)
+ joins(:route).fuzzy_search(query, [Route.arel_table[:path], :name, :description])
+ else
+ fuzzy_search(query, [:path, :name, :description])
+ end
end
def search_by_title(query)
@@ -720,6 +740,10 @@ class Project < ApplicationRecord
Feature.enabled?(:project_daily_statistics, self, default_enabled: true)
end
+ def unlink_forks_upon_visibility_decrease_enabled?
+ Feature.enabled?(:unlink_fork_network_upon_visibility_decrease, self, default_enabled: true)
+ end
+
def empty_repo?
repository.empty?
end
@@ -1239,8 +1263,9 @@ class Project < ApplicationRecord
def all_clusters
group_clusters = Clusters::Cluster.joins(:groups).where(cluster_groups: { group_id: ancestors_upto } )
+ instance_clusters = Clusters::Cluster.instance_type
- Clusters::Cluster.from_union([clusters, group_clusters])
+ Clusters::Cluster.from_union([clusters, group_clusters, instance_clusters])
end
def items_for(entity)
@@ -1538,6 +1563,7 @@ class Project < ApplicationRecord
# update visibility_level of forks
def update_forks_visibility_level
+ return if unlink_forks_upon_visibility_decrease_enabled?
return unless visibility_level < visibility_level_before_last_save
forks.each do |forked_project|
@@ -1557,7 +1583,9 @@ class Project < ApplicationRecord
end
def wiki
- @wiki ||= ProjectWiki.new(self, self.owner)
+ strong_memoize(:wiki) do
+ ProjectWiki.new(self, self.owner)
+ end
end
def jira_tracker_active?
@@ -1777,7 +1805,6 @@ class Project < ApplicationRecord
InternalId.flush_records!(project: self)
import_state.finish
- import_state.remove_jid
update_project_counter_caches
after_create_default_branch
join_pool_repository
@@ -1872,9 +1899,18 @@ class Project < ApplicationRecord
end
def predefined_variables
- visibility = Gitlab::VisibilityLevel.string_level(visibility_level)
+ Gitlab::Ci::Variables::Collection.new
+ .concat(predefined_ci_server_variables)
+ .concat(predefined_project_variables)
+ .concat(pages_variables)
+ .concat(container_registry_variables)
+ .concat(auto_devops_variables)
+ .concat(api_variables)
+ end
+ def predefined_project_variables
Gitlab::Ci::Variables::Collection.new
+ .append(key: 'GITLAB_FEATURES', value: licensed_features.join(','))
.append(key: 'CI_PROJECT_ID', value: id.to_s)
.append(key: 'CI_PROJECT_NAME', value: path)
.append(key: 'CI_PROJECT_TITLE', value: title)
@@ -1882,16 +1918,28 @@ class Project < ApplicationRecord
.append(key: 'CI_PROJECT_PATH_SLUG', value: full_path_slug)
.append(key: 'CI_PROJECT_NAMESPACE', value: namespace.full_path)
.append(key: 'CI_PROJECT_URL', value: web_url)
- .append(key: 'CI_PROJECT_VISIBILITY', value: visibility)
+ .append(key: 'CI_PROJECT_VISIBILITY', value: Gitlab::VisibilityLevel.string_level(visibility_level))
.append(key: 'CI_PROJECT_REPOSITORY_LANGUAGES', value: repository_languages.map(&:name).join(',').downcase)
- .concat(pages_variables)
- .concat(container_registry_variables)
- .concat(auto_devops_variables)
- .concat(api_variables)
+ .append(key: 'CI_DEFAULT_BRANCH', value: default_branch)
+ end
+
+ def predefined_ci_server_variables
+ Gitlab::Ci::Variables::Collection.new
+ .append(key: 'CI', value: 'true')
+ .append(key: 'GITLAB_CI', value: 'true')
+ .append(key: 'CI_SERVER_HOST', value: Gitlab.config.gitlab.host)
+ .append(key: 'CI_SERVER_NAME', value: 'GitLab')
+ .append(key: 'CI_SERVER_VERSION', value: Gitlab::VERSION)
+ .append(key: 'CI_SERVER_VERSION_MAJOR', value: Gitlab.version_info.major.to_s)
+ .append(key: 'CI_SERVER_VERSION_MINOR', value: Gitlab.version_info.minor.to_s)
+ .append(key: 'CI_SERVER_VERSION_PATCH', value: Gitlab.version_info.patch.to_s)
+ .append(key: 'CI_SERVER_REVISION', value: Gitlab.revision)
end
def pages_variables
Gitlab::Ci::Variables::Collection.new.tap do |variables|
+ break unless pages_enabled?
+
variables.append(key: 'CI_PAGES_DOMAIN', value: Gitlab.config.pages.host)
variables.append(key: 'CI_PAGES_URL', value: pages_url)
end
@@ -1957,12 +2005,16 @@ class Project < ApplicationRecord
end
end
- def deployment_variables(environment:)
+ def deployment_variables(environment:, kubernetes_namespace: nil)
platform = deployment_platform(environment: environment)
return [] unless platform.present?
- platform.predefined_variables(project: self, environment_name: environment)
+ platform.predefined_variables(
+ project: self,
+ environment_name: environment,
+ kubernetes_namespace: kubernetes_namespace
+ )
end
def auto_devops_variables
@@ -2027,10 +2079,16 @@ class Project < ApplicationRecord
end
def default_merge_request_target
- if forked_from_project&.merge_requests_enabled?
- forked_from_project
- else
+ return self unless forked_from_project
+ return self unless forked_from_project.merge_requests_enabled?
+
+ # When our current visibility is more restrictive than the source project,
+ # (e.g., the fork is `private` but the parent is `public`), target the less
+ # permissive project
+ if visibility_level_value < forked_from_project.visibility_level_value
self
+ else
+ forked_from_project
end
end
@@ -2227,12 +2285,13 @@ class Project < ApplicationRecord
# Git objects are only poolable when the project is or has:
# - Hashed storage -> The object pool will have a remote to its members, using relative paths.
# If the repository path changes we would have to update the remote.
- # - Public -> User will be able to fetch Git objects that might not exist
- # in their own repository.
+ # - not private -> The visibility level or repository access level has to be greater than private
+ # to prevent fetching objects that might not exist
# - Repository -> Else the disk path will be empty, and there's nothing to pool
def git_objects_poolable?
hashed_storage?(:repository) &&
- public? &&
+ visibility_level > Gitlab::VisibilityLevel::PRIVATE &&
+ repository_access_level > ProjectFeature::PRIVATE &&
repository_exists? &&
Gitlab::CurrentSettings.hashed_storage_enabled
end
diff --git a/app/models/project_auto_devops.rb b/app/models/project_auto_devops.rb
index e11d0c48b4b..275fe81583f 100644
--- a/app/models/project_auto_devops.rb
+++ b/app/models/project_auto_devops.rb
@@ -16,6 +16,7 @@ class ProjectAutoDevops < ApplicationRecord
def predefined_variables
Gitlab::Ci::Variables::Collection.new.tap do |variables|
+ variables.append(key: 'AUTO_DEVOPS_EXPLICITLY_ENABLED', value: '1') if enabled?
variables.concat(deployment_strategy_default_variables)
end
end
diff --git a/app/models/project_ci_cd_setting.rb b/app/models/project_ci_cd_setting.rb
index d089a004d3d..b292d39dae7 100644
--- a/app/models/project_ci_cd_setting.rb
+++ b/app/models/project_ci_cd_setting.rb
@@ -1,9 +1,10 @@
# frozen_string_literal: true
class ProjectCiCdSetting < ApplicationRecord
- # TODO: remove once GitLab 12.7 is released
+ include IgnorableColumns
# https://gitlab.com/gitlab-org/gitlab/issues/36651
- self.ignored_columns += %i[merge_trains_enabled]
+ ignore_column :merge_trains_enabled, remove_with: '12.7', remove_after: '2019-12-22'
+
belongs_to :project, inverse_of: :ci_cd_settings
# The version of the schema that first introduced this model/table.
diff --git a/app/models/project_feature.rb b/app/models/project_feature.rb
index caa65d32c86..4973c7761c1 100644
--- a/app/models/project_feature.rb
+++ b/app/models/project_feature.rb
@@ -186,7 +186,7 @@ class ProjectFeature < ApplicationRecord
def team_access?(user, feature)
return unless user
- return true if user.full_private_access?
+ return true if user.can_read_all_resources?
project.team.member?(user, ProjectFeature.required_minimum_access_level(feature))
end
diff --git a/app/models/project_import_state.rb b/app/models/project_import_state.rb
index bff00816e15..b79e3554926 100644
--- a/app/models/project_import_state.rb
+++ b/app/models/project_import_state.rb
@@ -42,6 +42,14 @@ class ProjectImportState < ApplicationRecord
end
end
+ after_transition any => :finished do |state, _|
+ if state.jid.present?
+ Gitlab::SidekiqStatus.unset(state.jid)
+
+ state.update_column(:jid, nil)
+ end
+ end
+
after_transition started: :finished do |state, _|
project = state.project
@@ -81,14 +89,6 @@ class ProjectImportState < ApplicationRecord
status == 'started' && project.import?
end
- def remove_jid
- return unless jid
-
- Gitlab::SidekiqStatus.unset(jid)
-
- update_column(:jid, nil)
- end
-
# Refreshes the expiration time of the associated import job ID.
#
# This method can be used by asynchronous importers to refresh the status,
diff --git a/app/models/project_services/asana_service.rb b/app/models/project_services/asana_service.rb
index 757b2f17fb9..c4fcdcc05c5 100644
--- a/app/models/project_services/asana_service.rb
+++ b/app/models/project_services/asana_service.rb
@@ -24,7 +24,7 @@ get the commit comment added to it.
You can also close a task with a message containing: `fix #123456`.
You can create a Personal Access Token here:
-http://app.asana.com/-/account_api'
+https://app.asana.com/0/developer-console'
end
def self.to_param
diff --git a/app/models/project_services/jira_service.rb b/app/models/project_services/jira_service.rb
index ba61810e26f..128cbc6fa82 100644
--- a/app/models/project_services/jira_service.rb
+++ b/app/models/project_services/jira_service.rb
@@ -32,6 +32,10 @@ class JiraService < IssueTrackerService
%w(commit merge_request)
end
+ def self.supported_event_actions
+ %w(comment)
+ end
+
# {PROJECT-KEY}-{NUMBER} Examples: JIRA-1, PROJECT-1
def self.reference_pattern(only_long: true)
@reference_pattern ||= /(?<issue>\b#{Gitlab::Regex.jira_issue_key_regex})/
@@ -268,19 +272,27 @@ class JiraService < IssueTrackerService
return unless client_url.present?
jira_request do
- remote_link = find_remote_link(issue, remote_link_props[:object][:url])
- if remote_link
- remote_link.save!(remote_link_props)
- elsif issue.comments.build.save!(body: message)
- new_remote_link = issue.remotelink.build
- new_remote_link.save!(remote_link_props)
- end
+ create_issue_link(issue, remote_link_props)
+ create_issue_comment(issue, message)
log_info("Successfully posted", client_url: client_url)
"SUCCESS: Successfully posted to #{client_url}."
end
end
+ def create_issue_link(issue, remote_link_props)
+ remote_link = find_remote_link(issue, remote_link_props[:object][:url])
+ remote_link ||= issue.remotelink.build
+
+ remote_link.save!(remote_link_props)
+ end
+
+ def create_issue_comment(issue, message)
+ return unless comment_on_event_enabled
+
+ issue.comments.build.save!(body: message)
+ end
+
def find_remote_link(issue, url)
links = jira_request { issue.remotelink.all }
return unless links
diff --git a/app/models/project_services/prometheus_service.rb b/app/models/project_services/prometheus_service.rb
index a0273fe0e5a..3d5967de41e 100644
--- a/app/models/project_services/prometheus_service.rb
+++ b/app/models/project_services/prometheus_service.rb
@@ -22,6 +22,8 @@ class PrometheusService < MonitoringService
after_save :clear_reactive_cache!
+ after_commit :track_events
+
def initialize_properties
if properties.nil?
self.properties = {}
@@ -86,13 +88,17 @@ class PrometheusService < MonitoringService
return false if template?
return false unless project
- project.clusters.enabled.any? { |cluster| cluster.application_prometheus_available? }
+ project.all_clusters.enabled.any? { |cluster| cluster.application_prometheus_available? }
end
def allow_local_api_url?
self_monitoring_project? && internal_prometheus_url?
end
+ def configured?
+ should_return_client?
+ end
+
private
def self_monitoring_project?
@@ -116,4 +122,22 @@ class PrometheusService < MonitoringService
true
end
+
+ def track_events
+ if enabled_manual_prometheus?
+ Gitlab::Tracking.event('cluster:services:prometheus', 'enabled_manual_prometheus')
+ elsif disabled_manual_prometheus?
+ Gitlab::Tracking.event('cluster:services:prometheus', 'disabled_manual_prometheus')
+ end
+
+ true
+ end
+
+ def enabled_manual_prometheus?
+ manual_configuration_changed? && manual_configuration?
+ end
+
+ def disabled_manual_prometheus?
+ manual_configuration_changed? && !manual_configuration?
+ end
end
diff --git a/app/models/project_services/unify_circuit_service.rb b/app/models/project_services/unify_circuit_service.rb
new file mode 100644
index 00000000000..06f2d10f83b
--- /dev/null
+++ b/app/models/project_services/unify_circuit_service.rb
@@ -0,0 +1,60 @@
+# frozen_string_literal: true
+
+class UnifyCircuitService < ChatNotificationService
+ def title
+ 'Unify Circuit'
+ end
+
+ def description
+ 'Receive event notifications in Unify Circuit'
+ end
+
+ def self.to_param
+ 'unify_circuit'
+ end
+
+ def help
+ 'This service sends notifications about projects events to a Unify Circuit conversation.<br />
+ To set up this service:
+ <ol>
+ <li><a href="https://www.circuit.com/unifyportalfaqdetail?articleId=164448">Set up an incoming webhook for your conversation</a>. All notifications will come to this conversation.</li>
+ <li>Paste the <strong>Webhook URL</strong> into the field below.</li>
+ <li>Select events below to enable notifications.</li>
+ </ol>'
+ end
+
+ def event_field(event)
+ end
+
+ def default_channel_placeholder
+ end
+
+ def self.supported_events
+ %w[push issue confidential_issue merge_request note confidential_note tag_push
+ pipeline wiki_page]
+ end
+
+ def default_fields
+ [
+ { type: 'text', name: 'webhook', placeholder: "e.g. https://circuit.com/rest/v2/webhooks/incoming/…", required: true },
+ { type: 'checkbox', name: 'notify_only_broken_pipelines' },
+ { type: 'select', name: 'branches_to_be_notified', choices: BRANCH_CHOICES }
+ ]
+ end
+
+ private
+
+ def notify(message, opts)
+ response = Gitlab::HTTP.post(webhook, body: {
+ subject: message.project_name,
+ text: message.pretext,
+ markdown: true
+ }.to_json)
+
+ response if response.success?
+ end
+
+ def custom_data(data)
+ super(data).merge(markdown: true)
+ end
+end
diff --git a/app/models/project_snippet.rb b/app/models/project_snippet.rb
index e732c1bd86f..ffb08e10f1f 100644
--- a/app/models/project_snippet.rb
+++ b/app/models/project_snippet.rb
@@ -4,4 +4,5 @@ class ProjectSnippet < Snippet
belongs_to :project
validates :project, presence: true
+ validates :secret, inclusion: { in: [false] }
end
diff --git a/app/models/project_wiki.rb b/app/models/project_wiki.rb
index f02ccd9e55e..48c96203921 100644
--- a/app/models/project_wiki.rb
+++ b/app/models/project_wiki.rb
@@ -58,7 +58,7 @@ class ProjectWiki
end
def wiki_base_path
- [Gitlab.config.gitlab.relative_url_root, '/', @project.full_path, '/wikis'].join('')
+ [Gitlab.config.gitlab.relative_url_root, '/', @project.full_path, '/-', '/wikis'].join('')
end
# Returns the Gitlab::Git::Wiki object.
diff --git a/app/models/readme_blob.rb b/app/models/readme_blob.rb
index 7b49fa632f6..695b4e3ffe3 100644
--- a/app/models/readme_blob.rb
+++ b/app/models/readme_blob.rb
@@ -1,6 +1,8 @@
# frozen_string_literal: true
class ReadmeBlob < SimpleDelegator
+ include BlobActiveModel
+
attr_reader :repository
def initialize(blob, repository)
diff --git a/app/models/release.rb b/app/models/release.rb
index 401e8359f47..4fac64689ab 100644
--- a/app/models/release.rb
+++ b/app/models/release.rb
@@ -73,6 +73,14 @@ class Release < ApplicationRecord
self.read_attribute(:name) || tag
end
+ def evidence_sha
+ evidence&.summary_sha
+ end
+
+ def evidence_summary
+ evidence&.summary || {}
+ end
+
private
def actual_sha
diff --git a/app/models/remote_mirror.rb b/app/models/remote_mirror.rb
index c165a1a9b0d..1e5c93cd913 100644
--- a/app/models/remote_mirror.rb
+++ b/app/models/remote_mirror.rb
@@ -3,6 +3,7 @@
class RemoteMirror < ApplicationRecord
include AfterCommitQueue
include MirrorAuthentication
+ include SafeUrl
MAX_FIRST_RUNTIME = 3.hours
MAX_INCREMENTAL_RUNTIME = 1.hour
@@ -194,13 +195,7 @@ class RemoteMirror < ApplicationRecord
end
def safe_url
- return if url.nil?
-
- result = URI.parse(url)
- result.password = '*****' if result.password
- result.user = '*****' if result.user && result.user != 'git' # tokens or other data may be saved as user
- result.to_s
- rescue URI::Error
+ super(usernames_whitelist: %w[git])
end
def ensure_remote!
diff --git a/app/models/repository.rb b/app/models/repository.rb
index b9f57169ea5..2a67c26d840 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -925,7 +925,22 @@ class Repository
def ancestor?(ancestor_id, descendant_id)
return false if ancestor_id.nil? || descendant_id.nil?
- raw_repository.ancestor?(ancestor_id, descendant_id)
+ counter = Gitlab::Metrics.counter(
+ :repository_ancestor_calls_total,
+ 'The number of times we call Repository#ancestor with valid arguments')
+ cache_hit = true
+
+ cache_key = "ancestor:#{ancestor_id}:#{descendant_id}"
+ result = request_store_cache.fetch(cache_key) do
+ cache.fetch(cache_key) do
+ cache_hit = false
+ raw_repository.ancestor?(ancestor_id, descendant_id)
+ end
+ end
+
+ counter.increment(cache_hit: cache_hit.to_s)
+
+ result
end
def fetch_as_mirror(url, forced: false, refmap: :all_refs, remote_name: nil, prune: true)
@@ -1052,18 +1067,19 @@ class Repository
return rebase_deprecated(user, merge_request)
end
- MergeRequest.transaction do
- raw.rebase(
- user,
- merge_request.id,
- branch: merge_request.source_branch,
- branch_sha: merge_request.source_branch_sha,
- remote_repository: merge_request.target_project.repository.raw,
- remote_branch: merge_request.target_branch
- ) do |commit_id|
- merge_request.update!(rebase_commit_sha: commit_id, merge_error: nil)
- end
+ raw.rebase(
+ user,
+ merge_request.id,
+ branch: merge_request.source_branch,
+ branch_sha: merge_request.source_branch_sha,
+ remote_repository: merge_request.target_project.repository.raw,
+ remote_branch: merge_request.target_branch
+ ) do |commit_id|
+ merge_request.update!(rebase_commit_sha: commit_id, merge_error: nil)
end
+ rescue StandardError => error
+ merge_request.update!(rebase_commit_sha: nil)
+ raise error
end
def squash(user, merge_request, message)
diff --git a/app/models/sentry_issue.rb b/app/models/sentry_issue.rb
new file mode 100644
index 00000000000..6be52f99562
--- /dev/null
+++ b/app/models/sentry_issue.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+class SentryIssue < ApplicationRecord
+ belongs_to :issue
+
+ validates :issue, uniqueness: true, presence: true
+ validates :sentry_issue_identifier,
+ uniqueness: true,
+ presence: true
+end
diff --git a/app/models/serverless/domain_cluster.rb b/app/models/serverless/domain_cluster.rb
new file mode 100644
index 00000000000..a8365649dd1
--- /dev/null
+++ b/app/models/serverless/domain_cluster.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+module Serverless
+ class DomainCluster < ApplicationRecord
+ self.table_name = 'serverless_domain_cluster'
+
+ belongs_to :pages_domain
+ belongs_to :knative, class_name: 'Clusters::Applications::Knative', foreign_key: 'clusters_applications_knative_id'
+ belongs_to :creator, class_name: 'User', optional: true
+
+ validates :pages_domain, :knative, :uuid, presence: true
+ validates :uuid, uniqueness: true, length: { is: 14 }
+ end
+end
diff --git a/app/models/service.rb b/app/models/service.rb
index 6d5b974dd31..95b7c6927cf 100644
--- a/app/models/service.rb
+++ b/app/models/service.rb
@@ -155,6 +155,14 @@ class Service < ApplicationRecord
end
end
+ def configurable_event_actions
+ self.class.supported_event_actions
+ end
+
+ def self.supported_event_actions
+ %w()
+ end
+
def supported_events
self.class.supported_events
end
@@ -281,6 +289,7 @@ class Service < ApplicationRecord
slack
teamcity
microsoft_teams
+ unify_circuit
]
if Rails.env.development?
diff --git a/app/models/snippet.rb b/app/models/snippet.rb
index 4010a3e2167..92746d28f05 100644
--- a/app/models/snippet.rb
+++ b/app/models/snippet.rb
@@ -37,6 +37,7 @@ class Snippet < ApplicationRecord
belongs_to :project
has_many :notes, as: :noteable, dependent: :destroy # rubocop:disable Cop/ActiveRecordDependent
+ has_many :user_mentions, class_name: "SnippetUserMention"
delegate :name, :email, to: :author, prefix: true, allow_nil: true
@@ -46,23 +47,42 @@ class Snippet < ApplicationRecord
length: { maximum: 255 }
validates :content, presence: true
+ validates :content,
+ length: {
+ maximum: ->(_) { Gitlab::CurrentSettings.snippet_size_limit },
+ message: -> (_, data) do
+ current_value = ActiveSupport::NumberHelper.number_to_human_size(data[:value].size)
+ max_size = ActiveSupport::NumberHelper.number_to_human_size(Gitlab::CurrentSettings.snippet_size_limit)
+
+ _("is too long (%{current_value}). The maximum size is %{max_size}.") % { current_value: current_value, max_size: max_size }
+ end
+ },
+ if: :content_changed?
+
validates :visibility_level, inclusion: { in: Gitlab::VisibilityLevel.values }
# Scopes
scope :are_internal, -> { where(visibility_level: Snippet::INTERNAL) }
scope :are_private, -> { where(visibility_level: Snippet::PRIVATE) }
- scope :are_public, -> { where(visibility_level: Snippet::PUBLIC) }
- scope :public_and_internal, -> { where(visibility_level: [Snippet::PUBLIC, Snippet::INTERNAL]) }
+ scope :are_public, -> { public_only }
+ scope :are_secret, -> { public_only.where(secret: true) }
scope :fresh, -> { order("created_at DESC") }
scope :inc_author, -> { includes(:author) }
scope :inc_relations_for_view, -> { includes(author: :status) }
+ attr_mentionable :description
+
participant :author
participant :notes_with_associations
attr_spammable :title, spam_title: true
attr_spammable :content, spam_description: true
+ attr_encrypted :secret_token,
+ key: Settings.attr_encrypted_db_key_base_truncated,
+ mode: :per_attribute_iv,
+ algorithm: 'aes-256-cbc'
+
def self.with_optional_visibility(value = nil)
if value
where(visibility_level: value)
@@ -112,11 +132,8 @@ class Snippet < ApplicationRecord
end
def self.visible_to_or_authored_by(user)
- where(
- 'snippets.visibility_level IN (?) OR snippets.author_id = ?',
- Gitlab::VisibilityLevel.levels_for_user(user),
- user.id
- )
+ query = where(visibility_level: Gitlab::VisibilityLevel.levels_for_user(user))
+ query.or(where(author_id: user.id))
end
def self.reference_prefix
@@ -222,6 +239,19 @@ class Snippet < ApplicationRecord
model_name.singular
end
+ def valid_secret_token?(token)
+ return false unless token && secret_token
+
+ ActiveSupport::SecurityUtils.secure_compare(token.to_s, secret_token.to_s)
+ end
+
+ def as_json(options = {})
+ options[:except] = Array.wrap(options[:except])
+ options[:except] << :secret_token
+
+ super
+ end
+
class << self
# Searches for snippets with a matching title or file name.
#
diff --git a/app/models/snippet_user_mention.rb b/app/models/snippet_user_mention.rb
new file mode 100644
index 00000000000..87ce77a5787
--- /dev/null
+++ b/app/models/snippet_user_mention.rb
@@ -0,0 +1,6 @@
+# frozen_string_literal: true
+
+class SnippetUserMention < UserMention
+ belongs_to :snippet
+ belongs_to :note
+end
diff --git a/app/models/timelog.rb b/app/models/timelog.rb
index 048134fbf04..4ddaf6bcb86 100644
--- a/app/models/timelog.rb
+++ b/app/models/timelog.rb
@@ -8,6 +8,18 @@ class Timelog < ApplicationRecord
belongs_to :merge_request, touch: true
belongs_to :user
+ scope :for_issues_in_group, -> (group) do
+ joins(:issue).where(
+ 'EXISTS (?)',
+ Project.select(1).where(namespace: group.self_and_descendants)
+ .where('issues.project_id = projects.id')
+ )
+ end
+
+ scope :between_dates, -> (start_date, end_date) do
+ where('spent_at BETWEEN ? AND ?', start_date, end_date)
+ end
+
def issuable
issue || merge_request
end
diff --git a/app/models/upload.rb b/app/models/upload.rb
index 8c409641452..46ae924bf8c 100644
--- a/app/models/upload.rb
+++ b/app/models/upload.rb
@@ -23,6 +23,21 @@ class Upload < ApplicationRecord
after_destroy :delete_file!, if: -> { uploader_class <= FileUploader }
class << self
+ def inner_join_local_uploads_projects
+ upload_table = Upload.arel_table
+ project_table = Project.arel_table
+
+ join_statement = upload_table.project(upload_table[Arel.star])
+ .join(project_table)
+ .on(
+ upload_table[:model_type].eq('Project')
+ .and(upload_table[:model_id].eq(project_table[:id]))
+ .and(upload_table[:store].eq(ObjectStorage::Store::LOCAL))
+ )
+
+ joins(join_statement.join_sources)
+ end
+
##
# FastDestroyAll concerns
def begin_fast_destroy
@@ -88,10 +103,8 @@ class Upload < ApplicationRecord
# Help sysadmins find missing upload files
if persisted? && !exist
- if Gitlab::Sentry.enabled?
- Raven.capture_message(_("Upload file does not exist"), extra: self.attributes)
- end
-
+ exception = RuntimeError.new("Uploaded file does not exist")
+ Gitlab::ErrorTracking.track_exception(exception, self.attributes)
Gitlab::Metrics.counter(:upload_file_does_not_exist_total, _('The number of times an upload record could not find its file')).increment
end
diff --git a/app/models/uploads/local.rb b/app/models/uploads/local.rb
index 2901c33c359..bd295a66838 100644
--- a/app/models/uploads/local.rb
+++ b/app/models/uploads/local.rb
@@ -23,7 +23,8 @@ module Uploads
unless in_uploads?(path)
message = "Path '#{path}' is not in uploads dir, skipping"
logger.warn(message)
- Gitlab::Sentry.track_exception(RuntimeError.new(message), extra: { uploads_dir: storage_dir })
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(
+ RuntimeError.new(message), uploads_dir: storage_dir)
return
end
diff --git a/app/models/user.rb b/app/models/user.rb
index d0e758b0055..18bf5ceaa0e 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -110,6 +110,10 @@ class User < ApplicationRecord
through: :group_members,
source: :group
alias_attribute :masters_groups, :maintainers_groups
+ has_many :reporter_developer_maintainer_owned_groups,
+ -> { where(members: { access_level: [Gitlab::Access::REPORTER, Gitlab::Access::DEVELOPER, Gitlab::Access::MAINTAINER, Gitlab::Access::OWNER] }) },
+ through: :group_members,
+ source: :group
# Projects
has_many :groups_projects, through: :groups, source: :projects
@@ -310,6 +314,13 @@ class User < ApplicationRecord
scope :with_dashboard, -> (dashboard) { where(dashboard: dashboard) }
scope :with_public_profile, -> { where(private_profile: false) }
+ scope :with_expiring_and_not_notified_personal_access_tokens, ->(at) do
+ where('EXISTS (?)',
+ ::PersonalAccessToken
+ .where('personal_access_tokens.user_id = users.id')
+ .expiring_and_not_notified(at).select(1))
+ end
+
def self.with_visible_profile(user)
return with_public_profile if user.nil?
@@ -370,6 +381,11 @@ class User < ApplicationRecord
# Class methods
#
class << self
+ # Devise method overridden to allow support for dynamic password lengths
+ def password_length
+ Gitlab::CurrentSettings.minimum_password_length..Devise.password_length.max
+ end
+
# Devise method overridden to allow sign in with email or username
def find_for_database_authentication(warden_conditions)
conditions = warden_conditions.dup
@@ -989,8 +1005,12 @@ class User < ApplicationRecord
@ldap_identity ||= identities.find_by(["provider LIKE ?", "ldap%"])
end
+ def matches_identity?(provider, extern_uid)
+ identities.where(provider: provider, extern_uid: extern_uid).exists?
+ end
+
def project_deploy_keys
- DeployKey.in_projects(authorized_projects.select(:id)).distinct(:id)
+ @project_deploy_keys ||= DeployKey.in_projects(authorized_projects.select(:id)).distinct(:id)
end
def highest_role
@@ -1453,9 +1473,7 @@ class User < ApplicationRecord
self.admin = (new_level == 'admin')
end
- # Does the user have access to all private groups & projects?
- # Overridden in EE to also check auditor?
- def full_private_access?
+ def can_read_all_resources?
can?(:read_all_resources)
end
diff --git a/app/models/user_callout_enums.rb b/app/models/user_callout_enums.rb
index e9f25d833d0..ef0b2407e23 100644
--- a/app/models/user_callout_enums.rb
+++ b/app/models/user_callout_enums.rb
@@ -14,7 +14,8 @@ module UserCalloutEnums
gke_cluster_integration: 1,
gcp_signup_offer: 2,
cluster_security_warning: 3,
- suggest_popover_dismissed: 9
+ suggest_popover_dismissed: 9,
+ tabs_position_highlight: 10
}
end
end
diff --git a/app/models/user_mention.rb b/app/models/user_mention.rb
new file mode 100644
index 00000000000..a85c6168cea
--- /dev/null
+++ b/app/models/user_mention.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+class UserMention < ApplicationRecord
+ self.abstract_class = true
+
+ def has_mentions?
+ mentioned_users_ids.present? || mentioned_groups_ids.present? || mentioned_projects_ids.present?
+ end
+
+ private
+
+ def mentioned_users
+ User.where(id: mentioned_users_ids)
+ end
+
+ def mentioned_groups
+ Group.where(id: mentioned_groups_ids)
+ end
+
+ def mentioned_projects
+ Project.where(id: mentioned_projects_ids)
+ end
+end
diff --git a/app/models/wiki_page.rb b/app/models/wiki_page.rb
index f9c562364cb..c6867e48cbf 100644
--- a/app/models/wiki_page.rb
+++ b/app/models/wiki_page.rb
@@ -274,6 +274,10 @@ class WikiPage
@attributes.merge!(attrs)
end
+ def to_ability_name
+ 'wiki_page'
+ end
+
private
# Process and format the title based on the user input.
diff --git a/app/policies/base_policy.rb b/app/policies/base_policy.rb
index 8f5c6957a20..3a16f7dc239 100644
--- a/app/policies/base_policy.rb
+++ b/app/policies/base_policy.rb
@@ -40,6 +40,7 @@ class BasePolicy < DeclarativePolicy::Base
prevent :read_cross_project
end
+ # Policy extended in EE to also enable auditors
rule { admin }.enable :read_all_resources
rule { default }.enable :read_cross_project
diff --git a/app/policies/blob_policy.rb b/app/policies/blob_policy.rb
new file mode 100644
index 00000000000..639b9dfeea7
--- /dev/null
+++ b/app/policies/blob_policy.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class BlobPolicy < BasePolicy
+ delegate { @subject.project }
+
+ rule { can?(:download_code) }.enable :read_blob
+end
diff --git a/app/policies/deploy_key_policy.rb b/app/policies/deploy_key_policy.rb
index 7f0ec011e79..b117bb57921 100644
--- a/app/policies/deploy_key_policy.rb
+++ b/app/policies/deploy_key_policy.rb
@@ -3,10 +3,7 @@
class DeployKeyPolicy < BasePolicy
with_options scope: :subject, score: 0
condition(:private_deploy_key) { @subject.private? }
-
- # rubocop: disable CodeReuse/ActiveRecord
- condition(:has_deploy_key) { @user.project_deploy_keys.exists?(id: @subject.id) }
- # rubocop: enable CodeReuse/ActiveRecord
+ condition(:has_deploy_key) { @user.project_deploy_keys.any? { |pdk| pdk.id.eql?(@subject.id) } }
rule { anonymous }.prevent_all
diff --git a/app/policies/error_tracking/detailed_error_policy.rb b/app/policies/error_tracking/detailed_error_policy.rb
new file mode 100644
index 00000000000..cb74242d46a
--- /dev/null
+++ b/app/policies/error_tracking/detailed_error_policy.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+module ErrorTracking
+ class DetailedErrorPolicy < BasePolicy
+ delegate { @subject.gitlab_project }
+ end
+end
diff --git a/app/policies/global_policy.rb b/app/policies/global_policy.rb
index eca73f0a241..f212bb06bc9 100644
--- a/app/policies/global_policy.rb
+++ b/app/policies/global_policy.rb
@@ -75,12 +75,15 @@ class GlobalPolicy < BasePolicy
rule { ~anonymous }.policy do
enable :read_instance_metadata
+ enable :create_personal_snippet
end
rule { admin }.policy do
enable :read_custom_attribute
enable :update_custom_attribute
end
+
+ rule { external_user }.prevent :create_personal_snippet
end
GlobalPolicy.prepend_if_ee('EE::GlobalPolicy')
diff --git a/app/policies/personal_snippet_policy.rb b/app/policies/personal_snippet_policy.rb
index 91a8f3a7133..c2fcf1a1010 100644
--- a/app/policies/personal_snippet_policy.rb
+++ b/app/policies/personal_snippet_policy.rb
@@ -13,14 +13,10 @@ class PersonalSnippetPolicy < BasePolicy
rule { is_author | admin }.policy do
enable :read_personal_snippet
enable :update_personal_snippet
- enable :destroy_personal_snippet
enable :admin_personal_snippet
enable :create_note
end
- rule { ~anonymous }.enable :create_personal_snippet
- rule { external_user }.prevent :create_personal_snippet
-
rule { internal_snippet & ~external_user }.policy do
enable :read_personal_snippet
enable :create_note
@@ -31,4 +27,7 @@ class PersonalSnippetPolicy < BasePolicy
rule { can?(:create_note) }.enable :award_emoji
rule { can?(:read_all_resources) }.enable :read_personal_snippet
+
+ # Aliasing the ability to ease GraphQL permissions check
+ rule { can?(:read_personal_snippet) }.enable :read_snippet
end
diff --git a/app/policies/project_policy.rb b/app/policies/project_policy.rb
index ff70c6e6aeb..7b0297ea81b 100644
--- a/app/policies/project_policy.rb
+++ b/app/policies/project_policy.rb
@@ -262,6 +262,7 @@ class ProjectPolicy < BasePolicy
enable :update_container_image
enable :destroy_container_image
enable :create_environment
+ enable :update_environment
enable :create_deployment
enable :update_deployment
enable :create_release
@@ -278,8 +279,6 @@ class ProjectPolicy < BasePolicy
enable :admin_board
enable :push_to_delete_protected_branch
enable :update_project_snippet
- enable :update_environment
- enable :update_deployment
enable :admin_project_snippet
enable :admin_project_member
enable :admin_note
diff --git a/app/policies/project_snippet_policy.rb b/app/policies/project_snippet_policy.rb
index d9d09eb04cd..a9094fbd958 100644
--- a/app/policies/project_snippet_policy.rb
+++ b/app/policies/project_snippet_policy.rb
@@ -38,6 +38,10 @@ class ProjectSnippetPolicy < BasePolicy
rule { public_snippet }.enable :read_project_snippet
+ rule { is_author & ~project.reporter & ~admin }.policy do
+ prevent :admin_project_snippet
+ end
+
rule { is_author | admin }.policy do
enable :read_project_snippet
enable :update_project_snippet
@@ -45,6 +49,9 @@ class ProjectSnippetPolicy < BasePolicy
end
rule { ~can?(:read_project_snippet) }.prevent :create_note
+
+ # Aliasing the ability to ease GraphQL permissions check
+ rule { can?(:read_project_snippet) }.enable :read_snippet
end
ProjectSnippetPolicy.prepend_if_ee('EE::ProjectSnippetPolicy')
diff --git a/app/policies/user_policy.rb b/app/policies/user_policy.rb
index e1efd84e510..d092a2de882 100644
--- a/app/policies/user_policy.rb
+++ b/app/policies/user_policy.rb
@@ -10,6 +10,9 @@ class UserPolicy < BasePolicy
desc "The profile is private"
condition(:private_profile, scope: :subject, score: 0) { @subject.private_profile? }
+ desc "The user is blocked"
+ condition(:blocked_user, scope: :subject, score: 0) { @subject.blocked? }
+
rule { ~restricted_public_level }.enable :read_user
rule { ~anonymous }.enable :read_user
@@ -20,5 +23,5 @@ class UserPolicy < BasePolicy
end
rule { default }.enable :read_user_profile
- rule { private_profile & ~(user_is_self | admin) }.prevent :read_user_profile
+ rule { (private_profile | blocked_user) & ~(user_is_self | admin) }.prevent :read_user_profile
end
diff --git a/app/policies/wiki_page_policy.rb b/app/policies/wiki_page_policy.rb
new file mode 100644
index 00000000000..468632c9085
--- /dev/null
+++ b/app/policies/wiki_page_policy.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class WikiPagePolicy < BasePolicy
+ delegate { @subject.wiki.project }
+
+ rule { can?(:read_wiki) }.enable :read_wiki_page
+end
diff --git a/app/presenters/ci/legacy_stage_presenter.rb b/app/presenters/ci/legacy_stage_presenter.rb
new file mode 100644
index 00000000000..56e268cff9f
--- /dev/null
+++ b/app/presenters/ci/legacy_stage_presenter.rb
@@ -0,0 +1,32 @@
+# frozen_string_literal: true
+
+module Ci
+ class LegacyStagePresenter < Gitlab::View::Presenter::Delegated
+ presents :legacy_stage
+
+ def latest_ordered_statuses
+ preload_statuses(legacy_stage.statuses.latest_ordered)
+ end
+
+ def retried_ordered_statuses
+ preload_statuses(legacy_stage.statuses.retried_ordered)
+ end
+
+ private
+
+ def preload_statuses(statuses)
+ loaded_statuses = statuses.load
+ statuses.tap do |statuses|
+ # rubocop: disable CodeReuse/ActiveRecord
+ ActiveRecord::Associations::Preloader.new.preload(preloadable_statuses(loaded_statuses), %w[tags job_artifacts_archive metadata])
+ # rubocop: enable CodeReuse/ActiveRecord
+ end
+ end
+
+ def preloadable_statuses(statuses)
+ statuses.reject do |status|
+ status.instance_of?(::GenericCommitStatus) || status.instance_of?(::Ci::Bridge)
+ end
+ end
+ end
+end
diff --git a/app/presenters/ci/pipeline_presenter.rb b/app/presenters/ci/pipeline_presenter.rb
index d81b1e6c522..f01ff56540a 100644
--- a/app/presenters/ci/pipeline_presenter.rb
+++ b/app/presenters/ci/pipeline_presenter.rb
@@ -8,7 +8,9 @@ module Ci
# We use a class method here instead of a constant, allowing EE to redefine
# the returned `Hash` more easily.
def self.failure_reasons
- { config_error: 'CI/CD YAML configuration error!' }
+ { unknown_failure: 'Unknown pipeline failure!',
+ config_error: 'CI/CD YAML configuration error!',
+ external_validation_failure: 'External pipeline validation failed!' }
end
presents :pipeline
diff --git a/app/presenters/clusterable_presenter.rb b/app/presenters/clusterable_presenter.rb
index 2306f55f1f4..6b1d82e7557 100644
--- a/app/presenters/clusterable_presenter.rb
+++ b/app/presenters/clusterable_presenter.rb
@@ -29,18 +29,10 @@ class ClusterablePresenter < Gitlab::View::Presenter::Delegated
new_polymorphic_path([clusterable, :cluster], options)
end
- def aws_api_proxy_path(resource)
- polymorphic_path([clusterable, :clusters], action: :aws_proxy, resource: resource)
- end
-
def authorize_aws_role_path
polymorphic_path([clusterable, :clusters], action: :authorize_aws_role)
end
- def revoke_aws_role_path
- polymorphic_path([clusterable, :clusters], action: :revoke_aws_role)
- end
-
def create_user_clusters_path
polymorphic_path([clusterable, :clusters], action: :create_user)
end
@@ -65,6 +57,10 @@ class ClusterablePresenter < Gitlab::View::Presenter::Delegated
raise NotImplementedError
end
+ def clear_cluster_cache_path(cluster)
+ raise NotImplementedError
+ end
+
def cluster_path(cluster, params = {})
raise NotImplementedError
end
diff --git a/app/presenters/clusters/cluster_presenter.rb b/app/presenters/clusters/cluster_presenter.rb
index 1634d2479a0..97771d84031 100644
--- a/app/presenters/clusters/cluster_presenter.rb
+++ b/app/presenters/clusters/cluster_presenter.rb
@@ -18,8 +18,20 @@ module Clusters
end
end
- def gke_cluster_url
- "https://console.cloud.google.com/kubernetes/clusters/details/#{provider.zone}/#{name}" if gcp?
+ def provider_label
+ if aws?
+ s_('ClusterIntegration|Elastic Kubernetes Service')
+ elsif gcp?
+ s_('ClusterIntegration|Google Kubernetes Engine')
+ end
+ end
+
+ def provider_management_url
+ if aws?
+ "https://console.aws.amazon.com/eks/home?region=#{provider.region}\#/clusters/#{name}"
+ elsif gcp?
+ "https://console.cloud.google.com/kubernetes/clusters/details/#{provider.zone}/#{name}"
+ end
end
def can_read_cluster?
diff --git a/app/presenters/conversational_development_index/metric_presenter.rb b/app/presenters/dev_ops_score/metric_presenter.rb
index 9639b84cf56..d22beefee54 100644
--- a/app/presenters/conversational_development_index/metric_presenter.rb
+++ b/app/presenters/dev_ops_score/metric_presenter.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-module ConversationalDevelopmentIndex
+module DevOpsScore
class MetricPresenter < Gitlab::View::Presenter::Simple
def cards
[
diff --git a/app/presenters/group_clusterable_presenter.rb b/app/presenters/group_clusterable_presenter.rb
index 54cea19b18e..21db2f6f96b 100644
--- a/app/presenters/group_clusterable_presenter.rb
+++ b/app/presenters/group_clusterable_presenter.rb
@@ -19,6 +19,11 @@ class GroupClusterablePresenter < ClusterablePresenter
update_applications_group_cluster_path(clusterable, cluster, application)
end
+ override :clear_cluster_cache_path
+ def clear_cluster_cache_path(cluster)
+ clear_cache_group_cluster_path(clusterable, cluster)
+ end
+
override :cluster_path
def cluster_path(cluster, params = {})
group_cluster_path(clusterable, cluster, params)
diff --git a/app/presenters/hooks/project_hook_presenter.rb b/app/presenters/hooks/project_hook_presenter.rb
new file mode 100644
index 00000000000..a65c7221b5a
--- /dev/null
+++ b/app/presenters/hooks/project_hook_presenter.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class ProjectHookPresenter < Gitlab::View::Presenter::Delegated
+ presents :project_hook
+
+ def logs_details_path(log)
+ project_hook_hook_log_path(project, self, log)
+ end
+
+ def logs_retry_path(log)
+ retry_project_hook_hook_log_path(project, self, log)
+ end
+end
diff --git a/app/presenters/hooks/service_hook_presenter.rb b/app/presenters/hooks/service_hook_presenter.rb
new file mode 100644
index 00000000000..bc20d5b1a3b
--- /dev/null
+++ b/app/presenters/hooks/service_hook_presenter.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class ServiceHookPresenter < Gitlab::View::Presenter::Delegated
+ presents :service_hook
+
+ def logs_details_path(log)
+ project_service_hook_log_path(service.project, service, log)
+ end
+
+ def logs_retry_path(log)
+ retry_project_service_hook_log_path(service.project, service, log)
+ end
+end
diff --git a/app/presenters/instance_clusterable_presenter.rb b/app/presenters/instance_clusterable_presenter.rb
index c6572e8ce71..0c267fd5735 100644
--- a/app/presenters/instance_clusterable_presenter.rb
+++ b/app/presenters/instance_clusterable_presenter.rb
@@ -37,6 +37,11 @@ class InstanceClusterablePresenter < ClusterablePresenter
update_applications_admin_cluster_path(cluster, application)
end
+ override :clear_cluster_cache_path
+ def clear_cluster_cache_path(cluster)
+ clear_cache_admin_cluster_path(cluster)
+ end
+
override :cluster_path
def cluster_path(cluster, params = {})
admin_cluster_path(cluster, params)
@@ -62,16 +67,6 @@ class InstanceClusterablePresenter < ClusterablePresenter
authorize_aws_role_admin_clusters_path
end
- override :revoke_aws_role_path
- def revoke_aws_role_path
- revoke_aws_role_admin_clusters_path
- end
-
- override :aws_api_proxy_path
- def aws_api_proxy_path(resource)
- aws_proxy_admin_clusters_path(resource: resource)
- end
-
override :empty_state_help_text
def empty_state_help_text
s_('ClusterIntegration|Adding an integration will share the cluster across all projects.')
diff --git a/app/presenters/project_clusterable_presenter.rb b/app/presenters/project_clusterable_presenter.rb
index 3fab69fff7a..5c56d42ed27 100644
--- a/app/presenters/project_clusterable_presenter.rb
+++ b/app/presenters/project_clusterable_presenter.rb
@@ -19,6 +19,11 @@ class ProjectClusterablePresenter < ClusterablePresenter
update_applications_project_cluster_path(clusterable, cluster, application)
end
+ override :clear_cluster_cache_path
+ def clear_cluster_cache_path(cluster)
+ clear_cache_project_cluster_path(clusterable, cluster)
+ end
+
override :cluster_path
def cluster_path(cluster, params = {})
project_cluster_path(clusterable, cluster, params)
diff --git a/app/presenters/projects/settings/deploy_keys_presenter.rb b/app/presenters/projects/settings/deploy_keys_presenter.rb
index 9bb7fe13593..66211d02696 100644
--- a/app/presenters/projects/settings/deploy_keys_presenter.rb
+++ b/app/presenters/projects/settings/deploy_keys_presenter.rb
@@ -3,6 +3,8 @@
module Projects
module Settings
class DeployKeysPresenter < Gitlab::View::Presenter::Simple
+ include Gitlab::Utils::StrongMemoize
+
presents :project
delegate :size, to: :enabled_keys, prefix: true
delegate :size, to: :available_project_keys, prefix: true
@@ -13,37 +15,45 @@ module Projects
end
def enabled_keys
- project.deploy_keys
+ strong_memoize(:enabled_keys) do
+ project.deploy_keys.with_projects
+ end
end
def available_keys
- current_user
- .accessible_deploy_keys
- .id_not_in(enabled_keys.select(:id))
- .with_projects
+ strong_memoize(:available_keys) do
+ current_user
+ .accessible_deploy_keys
+ .id_not_in(enabled_keys.select(:id))
+ .with_projects
+ end
end
def available_project_keys
- current_user
- .project_deploy_keys
- .id_not_in(enabled_keys.select(:id))
- .with_projects
+ strong_memoize(:available_project_keys) do
+ current_user
+ .project_deploy_keys
+ .id_not_in(enabled_keys.select(:id))
+ .with_projects
+ end
end
def available_public_keys
- DeployKey
- .are_public
- .id_not_in(enabled_keys.select(:id))
- .id_not_in(available_project_keys.select(:id))
- .with_projects
+ strong_memoize(:available_public_keys) do
+ DeployKey
+ .are_public
+ .id_not_in(enabled_keys.select(:id))
+ .id_not_in(available_project_keys.select(:id))
+ .with_projects
+ end
end
def as_json
serializer = DeployKeySerializer.new # rubocop: disable CodeReuse/Serializer
- opts = { user: current_user, project: project }
+ opts = { user: current_user, project: project, readable_project_ids: readable_project_ids }
{
- enabled_keys: serializer.represent(enabled_keys.with_projects, opts),
+ enabled_keys: serializer.represent(enabled_keys, opts),
available_project_keys: serializer.represent(available_project_keys, opts),
public_keys: serializer.represent(available_public_keys, opts)
}
@@ -56,6 +66,26 @@ module Projects
def form_partial_path
'projects/deploy_keys/form'
end
+
+ private
+
+ # Caching all readable project ids for the user that are associated with the queried deploy keys
+ def readable_project_ids
+ strong_memoize(:readable_projects_by_id) do
+ Set.new(user_readable_project_ids)
+ end
+ end
+
+ # rubocop: disable CodeReuse/ActiveRecord
+ def user_readable_project_ids
+ project_ids = (available_keys + available_project_keys + available_public_keys)
+ .flat_map { |deploy_key| deploy_key.deploy_keys_projects.map(&:project_id) }
+ .compact
+ .uniq
+
+ current_user.authorized_projects(Gitlab::Access::GUEST).id_in(project_ids).pluck(:id)
+ end
+ # rubocop: enable CodeReuse/ActiveRecord
end
end
end
diff --git a/app/presenters/release_presenter.rb b/app/presenters/release_presenter.rb
index 42463d6dbda..b38bbc8d96c 100644
--- a/app/presenters/release_presenter.rb
+++ b/app/presenters/release_presenter.rb
@@ -37,6 +37,12 @@ class ReleasePresenter < Gitlab::View::Presenter::Delegated
edit_project_release_url(project, release)
end
+ def evidence_file_path
+ return unless release.evidence.present?
+
+ evidence_project_release_url(project, tag, format: :json)
+ end
+
private
def can_download_code?
@@ -52,6 +58,6 @@ class ReleasePresenter < Gitlab::View::Presenter::Delegated
end
def release_edit_page_available?
- ::Feature.enabled?(:release_edit_page, project, default_enabled: true)
+ can?(current_user, :update_release, release)
end
end
diff --git a/app/presenters/sentry_detailed_error_presenter.rb b/app/presenters/sentry_detailed_error_presenter.rb
new file mode 100644
index 00000000000..9329f987879
--- /dev/null
+++ b/app/presenters/sentry_detailed_error_presenter.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+class SentryDetailedErrorPresenter < Gitlab::View::Presenter::Delegated
+ presents :error
+
+ FrequencyStruct = Struct.new(:time, :count, keyword_init: true)
+
+ def frequency
+ utc_offset = Time.zone_offset('UTC')
+
+ error.frequency.map do |f|
+ FrequencyStruct.new(time: Time.at(f[0], in: utc_offset), count: f[1])
+ end
+ end
+end
diff --git a/app/presenters/snippet_presenter.rb b/app/presenters/snippet_presenter.rb
new file mode 100644
index 00000000000..a453be18b95
--- /dev/null
+++ b/app/presenters/snippet_presenter.rb
@@ -0,0 +1,39 @@
+# frozen_string_literal: true
+
+class SnippetPresenter < Gitlab::View::Presenter::Delegated
+ presents :snippet
+
+ def web_url
+ Gitlab::UrlBuilder.build(snippet)
+ end
+
+ def raw_url
+ Gitlab::UrlBuilder.build(snippet, raw: true)
+ end
+
+ def can_read_snippet?
+ can_access_resource?("read")
+ end
+
+ def can_update_snippet?
+ can_access_resource?("update")
+ end
+
+ def can_admin_snippet?
+ can_access_resource?("admin")
+ end
+
+ def can_report_as_spam?
+ snippet.submittable_as_spam_by?(current_user)
+ end
+
+ private
+
+ def can_access_resource?(ability_prefix)
+ can?(current_user, ability_name(ability_prefix), snippet)
+ end
+
+ def ability_name(ability_prefix)
+ "#{ability_prefix}_#{snippet.to_ability_name}".to_sym
+ end
+end
diff --git a/app/presenters/web_hook_log_presenter.rb b/app/presenters/web_hook_log_presenter.rb
new file mode 100644
index 00000000000..fca03ddb5d7
--- /dev/null
+++ b/app/presenters/web_hook_log_presenter.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class WebHookLogPresenter < Gitlab::View::Presenter::Delegated
+ presents :web_hook_log
+
+ def details_path
+ web_hook.present.logs_details_path(self)
+ end
+
+ def retry_path
+ web_hook.present.logs_retry_path(self)
+ end
+end
diff --git a/app/serializers/analytics_merge_request_entity.rb b/app/serializers/analytics_merge_request_entity.rb
index 21d7eeb81b0..4344de2b9b4 100644
--- a/app/serializers/analytics_merge_request_entity.rb
+++ b/app/serializers/analytics_merge_request_entity.rb
@@ -1,7 +1,9 @@
# frozen_string_literal: true
class AnalyticsMergeRequestEntity < AnalyticsIssueEntity
- expose :state
+ expose :state do |object|
+ MergeRequest.available_states.key(object[:state_id])
+ end
expose :url do |object|
url_to(:namespace_project_merge_request, object)
diff --git a/app/serializers/deploy_key_entity.rb b/app/serializers/deploy_key_entity.rb
index 9a558d12bec..2682a47fbaa 100644
--- a/app/serializers/deploy_key_entity.rb
+++ b/app/serializers/deploy_key_entity.rb
@@ -11,8 +11,7 @@ class DeployKeyEntity < Grape::Entity
expose :updated_at
expose :deploy_keys_projects, using: DeployKeysProjectEntity do |deploy_key|
deploy_key.deploy_keys_projects.select do |deploy_key_project|
- !deploy_key_project.project&.pending_delete? &&
- Ability.allowed?(options[:user], :read_project, deploy_key_project.project)
+ !deploy_key_project.project&.pending_delete? && (allowed_to_read_project?(deploy_key_project.project) || options[:user].admin?)
end
end
expose :can_edit
@@ -23,4 +22,12 @@ class DeployKeyEntity < Grape::Entity
Ability.allowed?(options[:user], :update_deploy_key, object) ||
Ability.allowed?(options[:user], :update_deploy_keys_project, object.deploy_keys_project_for(options[:project]))
end
+
+ def allowed_to_read_project?(project)
+ if options[:readable_project_ids]
+ options[:readable_project_ids].include?(project.id)
+ else
+ Ability.allowed?(options[:user], :read_project, project)
+ end
+ end
end
diff --git a/app/serializers/deployment_entity.rb b/app/serializers/deployment_entity.rb
index e6421315b34..94773eeebd0 100644
--- a/app/serializers/deployment_entity.rb
+++ b/app/serializers/deployment_entity.rb
@@ -37,6 +37,9 @@ class DeploymentEntity < Grape::Entity
expose :commit, using: CommitEntity, if: -> (*) { include_details? }
expose :manual_actions, using: JobEntity, if: -> (*) { include_details? && can_create_deployment? }
expose :scheduled_actions, using: JobEntity, if: -> (*) { include_details? && can_create_deployment? }
+ expose :playable_build, expose_nil: false, if: -> (*) { include_details? && can_create_deployment? } do |deployment, options|
+ JobEntity.represent(deployment.playable_build, options.merge(only: [:play_path, :retry_path]))
+ end
expose :cluster, using: ClusterBasicEntity
@@ -47,7 +50,7 @@ class DeploymentEntity < Grape::Entity
end
def can_create_deployment?
- can?(request.current_user, :create_deployment, request.project)
+ can?(request.current_user, :create_deployment, project)
end
def can_read_deployables?
@@ -56,6 +59,10 @@ class DeploymentEntity < Grape::Entity
# because it triggers a policy evaluation that involves multiple
# Gitaly calls that might not be cached.
#
- can?(request.current_user, :read_build, request.project)
+ can?(request.current_user, :read_build, project)
+ end
+
+ def project
+ request.try(:project) || options[:project]
end
end
diff --git a/app/serializers/diff_file_metadata_entity.rb b/app/serializers/diff_file_metadata_entity.rb
index 500a844b170..05280518f39 100644
--- a/app/serializers/diff_file_metadata_entity.rb
+++ b/app/serializers/diff_file_metadata_entity.rb
@@ -7,4 +7,7 @@ class DiffFileMetadataEntity < Grape::Entity
expose :old_path
expose :new_file?, as: :new_file
expose :deleted_file?, as: :deleted_file
+ expose :file_hash do |diff_file|
+ Digest::SHA1.hexdigest(diff_file.file_path)
+ end
end
diff --git a/app/serializers/diffs_entity.rb b/app/serializers/diffs_entity.rb
index 19875a1287c..88e09ae8c0b 100644
--- a/app/serializers/diffs_entity.rb
+++ b/app/serializers/diffs_entity.rb
@@ -42,13 +42,13 @@ class DiffsEntity < Grape::Entity
# rubocop: disable CodeReuse/ActiveRecord
expose :added_lines do |diffs|
- diffs.diff_files.sum(&:added_lines)
+ diffs.raw_diff_files.sum(&:added_lines)
end
# rubocop: enable CodeReuse/ActiveRecord
# rubocop: disable CodeReuse/ActiveRecord
expose :removed_lines do |diffs|
- diffs.diff_files.sum(&:removed_lines)
+ diffs.raw_diff_files.sum(&:removed_lines)
end
# rubocop: enable CodeReuse/ActiveRecord
diff --git a/app/serializers/diffs_metadata_entity.rb b/app/serializers/diffs_metadata_entity.rb
index c82c686e8ef..b7024721ea9 100644
--- a/app/serializers/diffs_metadata_entity.rb
+++ b/app/serializers/diffs_metadata_entity.rb
@@ -2,5 +2,5 @@
class DiffsMetadataEntity < DiffsEntity
unexpose :diff_files
- expose :diff_files, using: DiffFileMetadataEntity
+ expose :raw_diff_files, as: :diff_files, using: DiffFileMetadataEntity
end
diff --git a/app/serializers/environment_entity.rb b/app/serializers/environment_entity.rb
index bffd9de4978..74d6806e83f 100644
--- a/app/serializers/environment_entity.rb
+++ b/app/serializers/environment_entity.rb
@@ -24,6 +24,10 @@ class EnvironmentEntity < Grape::Entity
stop_project_environment_path(environment.project, environment)
end
+ expose :cancel_auto_stop_path, if: -> (*) { can_update_environment? } do |environment|
+ cancel_auto_stop_project_environment_path(environment.project, environment)
+ end
+
expose :cluster_type, if: ->(environment, _) { cluster_platform_kubernetes? } do |environment|
cluster.cluster_type
end
@@ -37,6 +41,7 @@ class EnvironmentEntity < Grape::Entity
end
expose :created_at, :updated_at
+ expose :auto_stop_at, expose_nil: false
expose :can_stop do |environment|
environment.available? && can?(current_user, :stop_environment, environment)
@@ -54,6 +59,10 @@ class EnvironmentEntity < Grape::Entity
can?(request.current_user, :create_environment_terminal, environment)
end
+ def can_update_environment?
+ can?(current_user, :update_environment, environment)
+ end
+
def cluster_platform_kubernetes?
deployment_platform && deployment_platform.is_a?(Clusters::Platforms::Kubernetes)
end
diff --git a/app/serializers/environment_status_entity.rb b/app/serializers/environment_status_entity.rb
index 811cc2ad5af..40db23c143e 100644
--- a/app/serializers/environment_status_entity.rb
+++ b/app/serializers/environment_status_entity.rb
@@ -37,6 +37,10 @@ class EnvironmentStatusEntity < Grape::Entity
es.deployment.try(:formatted_deployment_time)
end
+ expose :deployment, as: :details do |es, options|
+ DeploymentEntity.represent(es.deployment, options.merge(project: es.project, only: [:playable_build]))
+ end
+
expose :changes
private
diff --git a/app/serializers/error_tracking/detailed_error_entity.rb b/app/serializers/error_tracking/detailed_error_entity.rb
index 8f08f84aa41..dd0cac8e4cd 100644
--- a/app/serializers/error_tracking/detailed_error_entity.rb
+++ b/app/serializers/error_tracking/detailed_error_entity.rb
@@ -10,6 +10,7 @@ module ErrorTracking
:first_release_short_version,
:first_seen,
:frequency,
+ :gitlab_issue,
:id,
:last_release_last_commit,
:last_release_short_version,
diff --git a/app/serializers/group_child_entity.rb b/app/serializers/group_child_entity.rb
index 20d7032c970..a7fe4d3f9b9 100644
--- a/app/serializers/group_child_entity.rb
+++ b/app/serializers/group_child_entity.rb
@@ -99,3 +99,5 @@ class GroupChildEntity < Grape::Entity
end
end
end
+
+GroupChildEntity.prepend_if_ee('EE::GroupChildEntity')
diff --git a/app/serializers/issue_entity.rb b/app/serializers/issue_entity.rb
index a3d0298a495..98c0c703584 100644
--- a/app/serializers/issue_entity.rb
+++ b/app/serializers/issue_entity.rb
@@ -64,4 +64,12 @@ class IssueEntity < IssuableEntity
expose :locked_discussion_docs_path, if: -> (issue) { issue.discussion_locked? } do |issue|
help_page_path('user/discussions/index.md', anchor: 'lock-discussions')
end
+
+ expose :is_project_archived do |issue|
+ issue.project.archived?
+ end
+
+ expose :archived_project_docs_path, if: -> (issue) { issue.project.archived? } do |issue|
+ help_page_path('user/project/settings/index.md', anchor: 'archiving-a-project')
+ end
end
diff --git a/app/serializers/merge_request_noteable_entity.rb b/app/serializers/merge_request_noteable_entity.rb
index 9504fdd8eac..8e7456ce059 100644
--- a/app/serializers/merge_request_noteable_entity.rb
+++ b/app/serializers/merge_request_noteable_entity.rb
@@ -42,6 +42,18 @@ class MergeRequestNoteableEntity < IssuableEntity
end
end
+ expose :locked_discussion_docs_path, if: -> (merge_request) { merge_request.discussion_locked? } do |merge_request|
+ help_page_path('user/discussions/index.md', anchor: 'lock-discussions')
+ end
+
+ expose :is_project_archived do |merge_request|
+ merge_request.project.archived?
+ end
+
+ expose :archived_project_docs_path, if: -> (merge_request) { merge_request.project.archived? } do |merge_request|
+ help_page_path('user/project/settings/index.md', anchor: 'archiving-a-project')
+ end
+
private
delegate :current_user, to: :request
diff --git a/app/serializers/merge_request_poll_cached_widget_entity.rb b/app/serializers/merge_request_poll_cached_widget_entity.rb
index a3186ecbcdf..2f8eb6650e8 100644
--- a/app/serializers/merge_request_poll_cached_widget_entity.rb
+++ b/app/serializers/merge_request_poll_cached_widget_entity.rb
@@ -15,7 +15,7 @@ class MergeRequestPollCachedWidgetEntity < IssuableEntity
expose :target_project_id
expose :squash
expose :rebase_in_progress?, as: :rebase_in_progress
- expose :default_squash_commit_message
+ expose :default_squash_commit_message, if: -> (merge_request, _) { merge_request.mergeable? }
expose :commits_count
expose :merge_ongoing?, as: :merge_ongoing
expose :work_in_progress?, as: :work_in_progress
@@ -25,8 +25,9 @@ class MergeRequestPollCachedWidgetEntity < IssuableEntity
expose :source_branch_exists?, as: :source_branch_exists
expose :branch_missing?, as: :branch_missing
- expose :commits_without_merge_commits, using: MergeRequestWidgetCommitEntity do |merge_request|
- merge_request.commits.without_merge_commits
+ expose :commits_without_merge_commits, using: MergeRequestWidgetCommitEntity,
+ if: -> (merge_request, _) { merge_request.mergeable? } do |merge_request|
+ merge_request.recent_commits.without_merge_commits
end
expose :diff_head_sha do |merge_request|
merge_request.diff_head_sha.presence
@@ -69,6 +70,10 @@ class MergeRequestPollCachedWidgetEntity < IssuableEntity
presenter(merge_request).source_branch_with_namespace_link
end
+ expose :diffs_path do |merge_request|
+ diffs_project_merge_request_path(merge_request.project, merge_request)
+ end
+
private
delegate :current_user, to: :request
@@ -101,3 +106,5 @@ class MergeRequestPollCachedWidgetEntity < IssuableEntity
merged_by: merge_event&.author)
end
end
+
+MergeRequestPollCachedWidgetEntity.prepend_if_ee('EE::MergeRequestPollCachedWidgetEntity')
diff --git a/app/serializers/merge_request_poll_widget_entity.rb b/app/serializers/merge_request_poll_widget_entity.rb
index 2a61187a856..a45026ea016 100644
--- a/app/serializers/merge_request_poll_widget_entity.rb
+++ b/app/serializers/merge_request_poll_widget_entity.rb
@@ -1,6 +1,8 @@
# frozen_string_literal: true
-class MergeRequestPollWidgetEntity < IssuableEntity
+class MergeRequestPollWidgetEntity < Grape::Entity
+ include RequestAwareEntity
+
expose :auto_merge_strategy
expose :available_auto_merge_strategies do |merge_request|
AutoMergeService.new(merge_request.project, current_user).available_strategies(merge_request) # rubocop: disable CodeReuse/ServiceClass
@@ -55,6 +57,10 @@ class MergeRequestPollWidgetEntity < IssuableEntity
presenter(merge_request).ci_status
end
+ expose :pipeline_coverage_delta do |merge_request|
+ presenter(merge_request).pipeline_coverage_delta
+ end
+
expose :cancel_auto_merge_path do |merge_request|
presenter(merge_request).cancel_auto_merge_path
end
diff --git a/app/serializers/merge_request_widget_entity.rb b/app/serializers/merge_request_widget_entity.rb
index eda7a36c2ee..2a81931c49f 100644
--- a/app/serializers/merge_request_widget_entity.rb
+++ b/app/serializers/merge_request_widget_entity.rb
@@ -3,6 +3,9 @@
class MergeRequestWidgetEntity < Grape::Entity
include RequestAwareEntity
+ expose :id
+ expose :iid
+
expose :source_project_full_path do |merge_request|
merge_request.source_project&.full_path
end
@@ -65,6 +68,8 @@ class MergeRequestWidgetEntity < Grape::Entity
end
def as_json(options = {})
+ return super(options) if Feature.enabled?(:async_mr_widget)
+
super(options)
.merge(MergeRequestPollCachedWidgetEntity.new(object, **@options.opts_hash).as_json(options))
.merge(MergeRequestPollWidgetEntity.new(object, **@options.opts_hash).as_json(options))
diff --git a/app/serializers/pipeline_entity.rb b/app/serializers/pipeline_entity.rb
index 94e8b174f0f..cddb894fd64 100644
--- a/app/serializers/pipeline_entity.rb
+++ b/app/serializers/pipeline_entity.rb
@@ -77,6 +77,10 @@ class PipelineEntity < Grape::Entity
cancel_project_pipeline_path(pipeline.project, pipeline)
end
+ expose :failed_builds, if: -> (*) { can_retry? }, using: JobEntity do |pipeline|
+ pipeline.builds.failed
+ end
+
private
alias_method :pipeline, :object
diff --git a/app/services/auto_merge/merge_when_pipeline_succeeds_service.rb b/app/services/auto_merge/merge_when_pipeline_succeeds_service.rb
index 6a33ec071db..7c0e9228b28 100644
--- a/app/services/auto_merge/merge_when_pipeline_succeeds_service.rb
+++ b/app/services/auto_merge/merge_when_pipeline_succeeds_service.rb
@@ -11,7 +11,7 @@ module AutoMerge
end
def process(merge_request)
- return unless merge_request.actual_head_pipeline&.success?
+ return unless merge_request.actual_head_pipeline_success?
return unless merge_request.mergeable?
merge_request.merge_async(merge_request.merge_user_id, merge_request.merge_params)
diff --git a/app/services/boards/lists/list_service.rb b/app/services/boards/lists/list_service.rb
index 82cba1b68c4..c96ea970943 100644
--- a/app/services/boards/lists/list_service.rb
+++ b/app/services/boards/lists/list_service.rb
@@ -6,7 +6,7 @@ module Boards
def execute(board)
board.lists.create(list_type: :backlog) unless board.lists.backlog.exists?
- board.lists.preload_associations
+ board.lists.preload_associated_models
end
end
end
diff --git a/app/services/branches/create_service.rb b/app/services/branches/create_service.rb
new file mode 100644
index 00000000000..c8afd97e6bf
--- /dev/null
+++ b/app/services/branches/create_service.rb
@@ -0,0 +1,39 @@
+# frozen_string_literal: true
+
+module Branches
+ class CreateService < BaseService
+ def execute(branch_name, ref, create_master_if_empty: true)
+ create_master_branch if create_master_if_empty && project.empty_repo?
+
+ result = ::Branches::ValidateNewService.new(project).execute(branch_name)
+
+ return result if result[:status] == :error
+
+ new_branch = repository.add_branch(current_user, branch_name, ref)
+
+ if new_branch
+ success(new_branch)
+ else
+ error("Invalid reference name: #{branch_name}")
+ end
+ rescue Gitlab::Git::PreReceiveError => ex
+ error(ex.message)
+ end
+
+ def success(branch)
+ super().merge(branch: branch)
+ end
+
+ private
+
+ def create_master_branch
+ project.repository.create_file(
+ current_user,
+ '/README.md',
+ '',
+ message: 'Add README.md',
+ branch_name: 'master'
+ )
+ end
+ end
+end
diff --git a/app/services/branches/delete_merged_service.rb b/app/services/branches/delete_merged_service.rb
new file mode 100644
index 00000000000..9fd5964bf94
--- /dev/null
+++ b/app/services/branches/delete_merged_service.rb
@@ -0,0 +1,34 @@
+# frozen_string_literal: true
+
+module Branches
+ class DeleteMergedService < BaseService
+ def async_execute
+ DeleteMergedBranchesWorker.perform_async(project.id, current_user.id)
+ end
+
+ def execute
+ raise Gitlab::Access::AccessDeniedError unless can?(current_user, :push_code, project)
+
+ branches = project.repository.merged_branch_names
+ # Prevent deletion of branches relevant to open merge requests
+ branches -= merge_request_branch_names
+ # Prevent deletion of protected branches
+ branches = branches.reject { |branch| ProtectedBranch.protected?(project, branch) }
+
+ branches.each do |branch|
+ ::Branches::DeleteService.new(project, current_user).execute(branch)
+ end
+ end
+
+ private
+
+ # rubocop: disable CodeReuse/ActiveRecord
+ def merge_request_branch_names
+ # reorder(nil) is necessary for SELECT DISTINCT because default scope adds an ORDER BY
+ source_names = project.origin_merge_requests.opened.reorder(nil).distinct.pluck(:source_branch)
+ target_names = project.merge_requests.opened.reorder(nil).distinct.pluck(:target_branch)
+ (source_names + target_names).uniq
+ end
+ # rubocop: enable CodeReuse/ActiveRecord
+ end
+end
diff --git a/app/services/branches/delete_service.rb b/app/services/branches/delete_service.rb
new file mode 100644
index 00000000000..ca2b4556b58
--- /dev/null
+++ b/app/services/branches/delete_service.rb
@@ -0,0 +1,32 @@
+# frozen_string_literal: true
+
+module Branches
+ class DeleteService < BaseService
+ def execute(branch_name)
+ repository = project.repository
+ branch = repository.find_branch(branch_name)
+
+ unless current_user.can?(:push_code, project)
+ return ServiceResponse.error(
+ message: 'You dont have push access to repo',
+ http_status: 405)
+ end
+
+ unless branch
+ return ServiceResponse.error(
+ message: 'No such branch',
+ http_status: 404)
+ end
+
+ if repository.rm_branch(current_user, branch_name)
+ ServiceResponse.success(message: 'Branch was deleted')
+ else
+ ServiceResponse.error(
+ message: 'Failed to remove branch',
+ http_status: 400)
+ end
+ rescue Gitlab::Git::PreReceiveError => ex
+ ServiceResponse.error(message: ex.message, http_status: 400)
+ end
+ end
+end
diff --git a/app/services/branches/validate_new_service.rb b/app/services/branches/validate_new_service.rb
new file mode 100644
index 00000000000..e45183d160f
--- /dev/null
+++ b/app/services/branches/validate_new_service.rb
@@ -0,0 +1,31 @@
+# frozen_string_literal: true
+
+module Branches
+ class ValidateNewService < BaseService
+ def initialize(project)
+ @project = project
+ end
+
+ def execute(branch_name, force: false)
+ return error('Branch name is invalid') unless valid_name?(branch_name)
+
+ if branch_exist?(branch_name) && !force
+ return error('Branch already exists')
+ end
+
+ success
+ rescue Gitlab::Git::PreReceiveError => ex
+ error(ex.message)
+ end
+
+ private
+
+ def valid_name?(branch_name)
+ Gitlab::GitRefValidator.validate(branch_name)
+ end
+
+ def branch_exist?(branch_name)
+ project.repository.branch_exists?(branch_name)
+ end
+ end
+end
diff --git a/app/services/ci/archive_trace_service.rb b/app/services/ci/archive_trace_service.rb
index 8fad9e9c869..f143736ddc1 100644
--- a/app/services/ci/archive_trace_service.rb
+++ b/app/services/ci/archive_trace_service.rb
@@ -46,10 +46,10 @@ module Ci
message: "Failed to archive trace. message: #{error.message}.",
job_id: job.id)
- Gitlab::Sentry
- .track_exception(error,
+ Gitlab::ErrorTracking
+ .track_and_raise_for_dev_exception(error,
issue_url: 'https://gitlab.com/gitlab-org/gitlab-foss/issues/51502',
- extra: { job_id: job.id })
+ job_id: job.id )
end
end
end
diff --git a/app/services/ci/create_pipeline_service.rb b/app/services/ci/create_pipeline_service.rb
index 5778a48bce6..ce3a9eb0772 100644
--- a/app/services/ci/create_pipeline_service.rb
+++ b/app/services/ci/create_pipeline_service.rb
@@ -16,6 +16,7 @@ module Ci
Gitlab::Ci::Pipeline::Chain::EvaluateWorkflowRules,
Gitlab::Ci::Pipeline::Chain::Seed,
Gitlab::Ci::Pipeline::Chain::Limit::Size,
+ Gitlab::Ci::Pipeline::Chain::Validate::External,
Gitlab::Ci::Pipeline::Chain::Populate,
Gitlab::Ci::Pipeline::Chain::Create,
Gitlab::Ci::Pipeline::Chain::Limit::Activity,
@@ -57,7 +58,9 @@ module Ci
cancel_pending_pipelines if project.auto_cancel_pending_pipelines?
pipeline_created_counter.increment(source: source)
- pipeline.process!
+ Ci::ProcessPipelineService
+ .new(pipeline)
+ .execute
end
end
diff --git a/app/services/ci/generate_exposed_artifacts_report_service.rb b/app/services/ci/generate_exposed_artifacts_report_service.rb
index b9bf580bcbc..1dbcd192279 100644
--- a/app/services/ci/generate_exposed_artifacts_report_service.rb
+++ b/app/services/ci/generate_exposed_artifacts_report_service.rb
@@ -15,7 +15,7 @@ module Ci
data: data
}
rescue => e
- Gitlab::Sentry.track_acceptable_exception(e, extra: { project_id: project.id })
+ Gitlab::ErrorTracking.track_exception(e, project_id: project.id)
{
status: :error,
key: key(base_pipeline, head_pipeline),
diff --git a/app/services/ci/prepare_build_service.rb b/app/services/ci/prepare_build_service.rb
index 3722faeb020..5d024c45e5f 100644
--- a/app/services/ci/prepare_build_service.rb
+++ b/app/services/ci/prepare_build_service.rb
@@ -13,7 +13,7 @@ module Ci
build.enqueue!
rescue => e
- Gitlab::Sentry.track_acceptable_exception(e, extra: { build_id: build.id })
+ Gitlab::ErrorTracking.track_exception(e, build_id: build.id)
build.drop(:unmet_prerequisites)
end
diff --git a/app/services/ci/process_pipeline_service.rb b/app/services/ci/process_pipeline_service.rb
index 039670f58c8..f33cbf7ab29 100644
--- a/app/services/ci/process_pipeline_service.rb
+++ b/app/services/ci/process_pipeline_service.rb
@@ -1,14 +1,16 @@
# frozen_string_literal: true
module Ci
- class ProcessPipelineService < BaseService
+ class ProcessPipelineService
include Gitlab::Utils::StrongMemoize
attr_reader :pipeline
- def execute(pipeline, trigger_build_ids = nil)
+ def initialize(pipeline)
@pipeline = pipeline
+ end
+ def execute(trigger_build_ids = nil)
update_retried
success = process_stages_without_needs
@@ -72,7 +74,7 @@ module Ci
def process_build(build, current_status)
Gitlab::OptimisticLocking.retry_lock(build) do |subject|
- Ci::ProcessBuildService.new(project, @user)
+ Ci::ProcessBuildService.new(project, build.user)
.execute(subject, current_status)
end
end
@@ -129,5 +131,9 @@ module Ci
.update_all(retried: true) if latest_statuses.any?
end
# rubocop: enable CodeReuse/ActiveRecord
+
+ def project
+ pipeline.project
+ end
end
end
diff --git a/app/services/ci/register_job_service.rb b/app/services/ci/register_job_service.rb
index 30e2a66e04a..57c0cdd0602 100644
--- a/app/services/ci/register_job_service.rb
+++ b/app/services/ci/register_job_service.rb
@@ -128,13 +128,13 @@ module Ci
end
def track_exception_for_build(ex, build)
- Gitlab::Sentry.track_acceptable_exception(ex, extra: {
+ Gitlab::ErrorTracking.track_exception(ex,
build_id: build.id,
build_name: build.name,
build_stage: build.stage,
pipeline_id: build.pipeline_id,
project_id: build.project_id
- })
+ )
end
# rubocop: disable CodeReuse/ActiveRecord
diff --git a/app/services/ci/retry_pipeline_service.rb b/app/services/ci/retry_pipeline_service.rb
index 42a13367a99..7d01de9ee68 100644
--- a/app/services/ci/retry_pipeline_service.rb
+++ b/app/services/ci/retry_pipeline_service.rb
@@ -9,13 +9,23 @@ module Ci
raise Gitlab::Access::AccessDeniedError
end
- pipeline.retryable_builds.find_each do |build|
+ needs = Set.new
+
+ pipeline.retryable_builds.preload_needs.find_each do |build|
next unless can?(current_user, :update_build, build)
Ci::RetryBuildService.new(project, current_user)
.reprocess!(build)
+
+ needs += build.needs.map(&:name)
end
+ # In a DAG, the dependencies may have already completed. Figure out
+ # which builds have succeeded and use them to update the pipeline. If we don't
+ # do this, then builds will be stuck in the created state since their dependencies
+ # will never run.
+ completed_build_ids = pipeline.find_successful_build_ids_by_names(needs) if needs.any?
+
pipeline.builds.latest.skipped.find_each do |skipped|
retry_optimistic_lock(skipped) { |build| build.process }
end
@@ -24,7 +34,9 @@ module Ci
.new(project, current_user)
.close_all(pipeline)
- pipeline.process!
+ Ci::ProcessPipelineService
+ .new(pipeline)
+ .execute(completed_build_ids)
end
end
end
diff --git a/app/services/clusters/applications/base_helm_service.rb b/app/services/clusters/applications/base_helm_service.rb
index 3e7f55f0c63..57bc8bc0d9b 100644
--- a/app/services/clusters/applications/base_helm_service.rb
+++ b/app/services/clusters/applications/base_helm_service.rb
@@ -21,14 +21,7 @@ module Clusters
group_ids: app.cluster.group_ids
}
- logger_meta = meta.merge(
- exception: error.class.name,
- message: error.message,
- backtrace: Gitlab::Profiler.clean_backtrace(error.backtrace)
- )
-
- logger.error(logger_meta)
- Gitlab::Sentry.track_acceptable_exception(error, extra: meta)
+ Gitlab::ErrorTracking.track_exception(error, meta)
end
def log_event(event)
@@ -68,8 +61,8 @@ module Clusters
@update_command ||= app.update_command
end
- def upgrade_command(new_values = "")
- app.upgrade_command(new_values)
+ def patch_command(new_values = "")
+ app.patch_command(new_values)
end
end
end
diff --git a/app/services/clusters/applications/ingress_modsecurity_usage_service.rb b/app/services/clusters/applications/ingress_modsecurity_usage_service.rb
new file mode 100644
index 00000000000..4aac8bb3cbd
--- /dev/null
+++ b/app/services/clusters/applications/ingress_modsecurity_usage_service.rb
@@ -0,0 +1,69 @@
+# frozen_string_literal: true
+
+# rubocop: disable CodeReuse/ActiveRecord
+module Clusters
+ module Applications
+ ##
+ # This service measures usage of the Modsecurity Web Application Firewall across the entire
+ # instance's deployed environments.
+ #
+ # The default configuration is`AUTO_DEVOPS_MODSECURITY_SEC_RULE_ENGINE=DetectionOnly` so we
+ # measure non-default values via definition of either ci_variables or ci_pipeline_variables.
+ # Since both these values are encrypted, we must decrypt and count them in memory.
+ #
+ # NOTE: this service is an approximation as it does not yet take into account `environment_scope` or `ci_group_variables`.
+ ##
+ class IngressModsecurityUsageService
+ ADO_MODSEC_KEY = "AUTO_DEVOPS_MODSECURITY_SEC_RULE_ENGINE"
+
+ def initialize(blocking_count: 0, disabled_count: 0)
+ @blocking_count = blocking_count
+ @disabled_count = disabled_count
+ end
+
+ def execute
+ conditions = -> { merge(::Environment.available).merge(::Deployment.success).where(key: ADO_MODSEC_KEY) }
+
+ ci_pipeline_var_enabled =
+ ::Ci::PipelineVariable
+ .joins(pipeline: { environments: :last_visible_deployment })
+ .merge(conditions)
+ .order('deployments.environment_id, deployments.id DESC')
+
+ ci_var_enabled =
+ ::Ci::Variable
+ .joins(project: { environments: :last_visible_deployment })
+ .merge(conditions)
+ .merge(
+ # Give priority to pipeline variables by excluding from dataset
+ ::Ci::Variable.joins(project: :environments).where.not(
+ environments: { id: ci_pipeline_var_enabled.select('DISTINCT ON (deployments.environment_id) deployments.environment_id') }
+ )
+ ).select('DISTINCT ON (deployments.environment_id) ci_variables.*')
+
+ sum_modsec_config_counts(
+ ci_pipeline_var_enabled.select('DISTINCT ON (deployments.environment_id) ci_pipeline_variables.*')
+ )
+ sum_modsec_config_counts(ci_var_enabled)
+
+ {
+ ingress_modsecurity_blocking: @blocking_count,
+ ingress_modsecurity_disabled: @disabled_count
+ }
+ end
+
+ private
+
+ # These are encrypted so we must decrypt and count in memory
+ def sum_modsec_config_counts(dataset)
+ dataset.each do |var|
+ case var.value
+ when "On" then @blocking_count += 1
+ when "Off" then @disabled_count += 1
+ # `else` could be default or any unsupported user input
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/app/services/clusters/aws/authorize_role_service.rb b/app/services/clusters/aws/authorize_role_service.rb
new file mode 100644
index 00000000000..6eafce0597e
--- /dev/null
+++ b/app/services/clusters/aws/authorize_role_service.rb
@@ -0,0 +1,49 @@
+# frozen_string_literal: true
+
+module Clusters
+ module Aws
+ class AuthorizeRoleService
+ attr_reader :user
+
+ Response = Struct.new(:status, :body)
+
+ ERRORS = [
+ ActiveRecord::RecordInvalid,
+ Clusters::Aws::FetchCredentialsService::MissingRoleError,
+ ::Aws::Errors::MissingCredentialsError,
+ ::Aws::STS::Errors::ServiceError
+ ].freeze
+
+ def initialize(user, params:)
+ @user = user
+ @params = params
+ end
+
+ def execute
+ @role = create_or_update_role!
+
+ Response.new(:ok, credentials)
+ rescue *ERRORS
+ Response.new(:unprocessable_entity, {})
+ end
+
+ private
+
+ attr_reader :role, :params
+
+ def create_or_update_role!
+ if role = user.aws_role
+ role.update!(params)
+
+ role
+ else
+ user.create_aws_role!(params)
+ end
+ end
+
+ def credentials
+ Clusters::Aws::FetchCredentialsService.new(role).execute
+ end
+ end
+ end
+end
diff --git a/app/services/clusters/aws/fetch_credentials_service.rb b/app/services/clusters/aws/fetch_credentials_service.rb
index 2724d4b657b..33efc4cc120 100644
--- a/app/services/clusters/aws/fetch_credentials_service.rb
+++ b/app/services/clusters/aws/fetch_credentials_service.rb
@@ -7,9 +7,8 @@ module Clusters
MissingRoleError = Class.new(StandardError)
- def initialize(provision_role, region:, provider: nil)
+ def initialize(provision_role, provider: nil)
@provision_role = provision_role
- @region = region
@provider = provider
end
@@ -20,13 +19,14 @@ module Clusters
client: client,
role_arn: provision_role.role_arn,
role_session_name: session_name,
- external_id: provision_role.role_external_id
+ external_id: provision_role.role_external_id,
+ policy: session_policy
).credentials
end
private
- attr_reader :provider, :region
+ attr_reader :provider
def client
::Aws::STS::Client.new(credentials: gitlab_credentials, region: region)
@@ -44,6 +44,26 @@ module Clusters
Gitlab::CurrentSettings.eks_secret_access_key
end
+ def region
+ provider&.region || Clusters::Providers::Aws::DEFAULT_REGION
+ end
+
+ ##
+ # If we haven't created a provider record yet,
+ # we restrict ourselves to read only access so
+ # that we can safely expose credentials to the
+ # frontend (to be used when populating the
+ # creation form).
+ def session_policy
+ if provider.nil?
+ File.read(read_only_policy)
+ end
+ end
+
+ def read_only_policy
+ Rails.root.join('vendor', 'aws', 'iam', "eks_cluster_read_only_policy.json")
+ end
+
def session_name
if provider.present?
"gitlab-eks-cluster-#{provider.cluster_id}-user-#{provision_role.user_id}"
diff --git a/app/services/clusters/aws/proxy_service.rb b/app/services/clusters/aws/proxy_service.rb
deleted file mode 100644
index df8fc480005..00000000000
--- a/app/services/clusters/aws/proxy_service.rb
+++ /dev/null
@@ -1,134 +0,0 @@
-# frozen_string_literal: true
-
-module Clusters
- module Aws
- class ProxyService
- DEFAULT_REGION = 'us-east-1'
-
- BadRequest = Class.new(StandardError)
- Response = Struct.new(:status, :body)
-
- def initialize(role, params:)
- @role = role
- @params = params
- end
-
- def execute
- api_response = request_from_api!
-
- Response.new(:ok, api_response.to_hash)
- rescue *service_errors
- Response.new(:bad_request, {})
- end
-
- private
-
- attr_reader :role, :params
-
- def request_from_api!
- case requested_resource
- when 'key_pairs'
- ec2_client.describe_key_pairs
-
- when 'instance_types'
- instance_types
-
- when 'roles'
- iam_client.list_roles
-
- when 'regions'
- ec2_client.describe_regions
-
- when 'security_groups'
- raise BadRequest unless vpc_id.present?
-
- ec2_client.describe_security_groups(vpc_filter)
-
- when 'subnets'
- raise BadRequest unless vpc_id.present?
-
- ec2_client.describe_subnets(vpc_filter)
-
- when 'vpcs'
- ec2_client.describe_vpcs
-
- else
- raise BadRequest
- end
- end
-
- def requested_resource
- params[:resource]
- end
-
- def vpc_id
- params[:vpc_id]
- end
-
- def region
- params[:region] || DEFAULT_REGION
- end
-
- def vpc_filter
- {
- filters: [{
- name: "vpc-id",
- values: [vpc_id]
- }]
- }
- end
-
- ##
- # Unfortunately the EC2 API doesn't provide a list of
- # possible instance types. There is a workaround, using
- # the Pricing API, but instead of requiring the
- # user to grant extra permissions for this we use the
- # values that validate the CloudFormation template.
- def instance_types
- {
- instance_types: cluster_stack_instance_types.map { |type| Hash(instance_type_name: type) }
- }
- end
-
- def cluster_stack_instance_types
- YAML.safe_load(stack_template).dig('Parameters', 'NodeInstanceType', 'AllowedValues')
- end
-
- def stack_template
- File.read(Rails.root.join('vendor', 'aws', 'cloudformation', 'eks_cluster.yaml'))
- end
-
- def ec2_client
- ::Aws::EC2::Client.new(client_options)
- end
-
- def iam_client
- ::Aws::IAM::Client.new(client_options)
- end
-
- def credentials
- Clusters::Aws::FetchCredentialsService.new(role, region: region).execute
- end
-
- def client_options
- {
- credentials: credentials,
- region: region,
- http_open_timeout: 5,
- http_read_timeout: 10
- }
- end
-
- def service_errors
- [
- BadRequest,
- Clusters::Aws::FetchCredentialsService::MissingRoleError,
- ::Aws::Errors::MissingCredentialsError,
- ::Aws::EC2::Errors::ServiceError,
- ::Aws::IAM::Errors::ServiceError,
- ::Aws::STS::Errors::ServiceError
- ]
- end
- end
- end
-end
diff --git a/app/services/clusters/cleanup/app_service.rb b/app/services/clusters/cleanup/app_service.rb
new file mode 100644
index 00000000000..a7e29c78ea0
--- /dev/null
+++ b/app/services/clusters/cleanup/app_service.rb
@@ -0,0 +1,33 @@
+# frozen_string_literal: true
+
+module Clusters
+ module Cleanup
+ class AppService < Clusters::Cleanup::BaseService
+ def execute
+ persisted_applications = @cluster.persisted_applications
+
+ persisted_applications.each do |app|
+ next unless app.available?
+ next unless app.can_uninstall?
+
+ log_event(:uninstalling_app, application: app.class.application_name)
+ uninstall_app_async(app)
+ end
+
+ # Keep calling the worker untill all dependencies are uninstalled
+ return schedule_next_execution(Clusters::Cleanup::AppWorker) if persisted_applications.any?
+
+ log_event(:schedule_remove_project_namespaces)
+ cluster.continue_cleanup!
+ end
+
+ private
+
+ def uninstall_app_async(application)
+ application.make_scheduled!
+
+ Clusters::Applications::UninstallWorker.perform_async(application.name, application.id)
+ end
+ end
+ end
+end
diff --git a/app/services/clusters/cleanup/base_service.rb b/app/services/clusters/cleanup/base_service.rb
new file mode 100644
index 00000000000..f99e54cfc40
--- /dev/null
+++ b/app/services/clusters/cleanup/base_service.rb
@@ -0,0 +1,43 @@
+# frozen_string_literal: true
+
+module Clusters
+ module Cleanup
+ class BaseService
+ DEFAULT_EXECUTION_INTERVAL = 1.minute
+
+ def initialize(cluster, execution_count = 0)
+ @cluster = cluster
+ @execution_count = execution_count
+ end
+
+ private
+
+ attr_reader :cluster
+
+ def logger
+ @logger ||= Gitlab::Kubernetes::Logger.build
+ end
+
+ def log_event(event, extra_data = {})
+ meta = {
+ service: self.class.name,
+ cluster_id: cluster.id,
+ execution_count: @execution_count,
+ event: event
+ }
+
+ logger.info(meta.merge(extra_data))
+ end
+
+ def schedule_next_execution(worker_class)
+ log_event(:scheduling_execution, next_execution: @execution_count + 1)
+ worker_class.perform_in(execution_interval, cluster.id, @execution_count + 1)
+ end
+
+ # Override this method to customize the execution interval
+ def execution_interval
+ DEFAULT_EXECUTION_INTERVAL
+ end
+ end
+ end
+end
diff --git a/app/services/clusters/cleanup/project_namespace_service.rb b/app/services/clusters/cleanup/project_namespace_service.rb
new file mode 100644
index 00000000000..7621be565ff
--- /dev/null
+++ b/app/services/clusters/cleanup/project_namespace_service.rb
@@ -0,0 +1,44 @@
+# frozen_string_literal: true
+
+module Clusters
+ module Cleanup
+ class ProjectNamespaceService < BaseService
+ KUBERNETES_NAMESPACE_BATCH_SIZE = 100
+
+ def execute
+ delete_project_namespaces_in_batches
+
+ # Keep calling the worker untill all namespaces are deleted
+ if cluster.kubernetes_namespaces.exists?
+ return schedule_next_execution(Clusters::Cleanup::ProjectNamespaceWorker)
+ end
+
+ cluster.continue_cleanup!
+ end
+
+ private
+
+ def delete_project_namespaces_in_batches
+ kubernetes_namespaces_batch = cluster.kubernetes_namespaces.first(KUBERNETES_NAMESPACE_BATCH_SIZE)
+
+ kubernetes_namespaces_batch.each do |kubernetes_namespace|
+ log_event(:deleting_project_namespace, namespace: kubernetes_namespace.namespace)
+
+ begin
+ kubeclient_delete_namespace(kubernetes_namespace)
+ rescue Kubeclient::HttpError
+ next
+ end
+
+ kubernetes_namespace.destroy!
+ end
+ end
+
+ def kubeclient_delete_namespace(kubernetes_namespace)
+ cluster.kubeclient.delete_namespace(kubernetes_namespace.namespace)
+ rescue Kubeclient::ResourceNotFoundError
+ # no-op: nothing to delete
+ end
+ end
+ end
+end
diff --git a/app/services/clusters/cleanup/service_account_service.rb b/app/services/clusters/cleanup/service_account_service.rb
new file mode 100644
index 00000000000..d60bd76d388
--- /dev/null
+++ b/app/services/clusters/cleanup/service_account_service.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+module Clusters
+ module Cleanup
+ class ServiceAccountService < BaseService
+ def execute
+ delete_gitlab_service_account
+
+ log_event(:destroying_cluster)
+
+ cluster.destroy!
+ end
+
+ private
+
+ def delete_gitlab_service_account
+ log_event(:deleting_gitlab_service_account)
+
+ cluster.kubeclient.delete_service_account(
+ ::Clusters::Kubernetes::GITLAB_SERVICE_ACCOUNT_NAME,
+ ::Clusters::Kubernetes::GITLAB_SERVICE_ACCOUNT_NAMESPACE
+ )
+ rescue Kubeclient::ResourceNotFoundError
+ end
+ end
+ end
+end
diff --git a/app/services/clusters/kubernetes/kubernetes.rb b/app/services/clusters/kubernetes.rb
index d29519999b2..59cb1c4b3a9 100644
--- a/app/services/clusters/kubernetes/kubernetes.rb
+++ b/app/services/clusters/kubernetes.rb
@@ -12,5 +12,8 @@ module Clusters
GITLAB_KNATIVE_SERVING_ROLE_BINDING_NAME = 'gitlab-knative-serving-rolebinding'
GITLAB_CROSSPLANE_DATABASE_ROLE_NAME = 'gitlab-crossplane-database-role'
GITLAB_CROSSPLANE_DATABASE_ROLE_BINDING_NAME = 'gitlab-crossplane-database-rolebinding'
+ GITLAB_KNATIVE_VERSION_ROLE_NAME = 'gitlab-knative-version-role'
+ GITLAB_KNATIVE_VERSION_ROLE_BINDING_NAME = 'gitlab-knative-version-rolebinding'
+ KNATIVE_SERVING_NAMESPACE = 'knative-serving'
end
end
diff --git a/app/services/clusters/kubernetes/create_or_update_service_account_service.rb b/app/services/clusters/kubernetes/create_or_update_service_account_service.rb
index d798dcdcfd3..046046bf5a3 100644
--- a/app/services/clusters/kubernetes/create_or_update_service_account_service.rb
+++ b/app/services/clusters/kubernetes/create_or_update_service_account_service.rb
@@ -49,8 +49,14 @@ module Clusters
create_or_update_knative_serving_role
create_or_update_knative_serving_role_binding
+
create_or_update_crossplane_database_role
create_or_update_crossplane_database_role_binding
+
+ return unless knative_serving_namespace
+
+ create_or_update_knative_version_role
+ create_or_update_knative_version_role_binding
end
private
@@ -64,6 +70,12 @@ module Clusters
).ensure_exists!
end
+ def knative_serving_namespace
+ kubeclient.get_namespace(Clusters::Kubernetes::KNATIVE_SERVING_NAMESPACE)
+ rescue Kubeclient::ResourceNotFoundError
+ nil
+ end
+
def create_role_or_cluster_role_binding
if namespace_creator
kubeclient.create_or_update_role_binding(role_binding_resource)
@@ -88,6 +100,14 @@ module Clusters
kubeclient.update_role_binding(crossplane_database_role_binding_resource)
end
+ def create_or_update_knative_version_role
+ kubeclient.update_cluster_role(knative_version_role_resource)
+ end
+
+ def create_or_update_knative_version_role_binding
+ kubeclient.update_cluster_role_binding(knative_version_role_binding_resource)
+ end
+
def service_account_resource
Gitlab::Kubernetes::ServiceAccount.new(
service_account_name,
@@ -166,6 +186,27 @@ module Clusters
service_account_name: service_account_name
).generate
end
+
+ def knative_version_role_resource
+ Gitlab::Kubernetes::ClusterRole.new(
+ name: Clusters::Kubernetes::GITLAB_KNATIVE_VERSION_ROLE_NAME,
+ rules: [{
+ apiGroups: %w(apps),
+ resources: %w(deployments),
+ verbs: %w(list get)
+ }]
+ ).generate
+ end
+
+ def knative_version_role_binding_resource
+ subjects = [{ kind: 'ServiceAccount', name: service_account_name, namespace: service_account_namespace }]
+
+ Gitlab::Kubernetes::ClusterRoleBinding.new(
+ Clusters::Kubernetes::GITLAB_KNATIVE_VERSION_ROLE_BINDING_NAME,
+ Clusters::Kubernetes::GITLAB_KNATIVE_VERSION_ROLE_NAME,
+ subjects
+ ).generate
+ end
end
end
end
diff --git a/app/services/cohorts_service.rb b/app/services/cohorts_service.rb
index dbbe89ef260..03be87f4cc1 100644
--- a/app/services/cohorts_service.rb
+++ b/app/services/cohorts_service.rb
@@ -38,7 +38,7 @@ class CohortsService
{
registration_month: registration_month,
- activity_months: activity_months,
+ activity_months: activity_months[1..-1],
total: activity_months.first[:total],
inactive: inactive
}
diff --git a/app/services/commits/commit_patch_service.rb b/app/services/commits/commit_patch_service.rb
index 49113c3c691..4fa6c30e901 100644
--- a/app/services/commits/commit_patch_service.rb
+++ b/app/services/commits/commit_patch_service.rb
@@ -32,7 +32,7 @@ module Commits
end
def prepare_branch!
- branch_result = CreateBranchService.new(project, current_user)
+ branch_result = ::Branches::CreateService.new(project, current_user)
.execute(@branch_name, @start_branch)
if branch_result[:status] != :success
diff --git a/app/services/commits/create_service.rb b/app/services/commits/create_service.rb
index b42494563b2..bd238605ac1 100644
--- a/app/services/commits/create_service.rb
+++ b/app/services/commits/create_service.rb
@@ -101,7 +101,7 @@ module Commits
end
def validate_new_branch_name!
- result = ValidateNewBranchService.new(project, current_user).execute(@branch_name, force: force?)
+ result = ::Branches::ValidateNewService.new(project).execute(@branch_name, force: force?)
if result[:status] == :error
raise_error("Something went wrong when we tried to create '#{@branch_name}' for you: #{result[:message]}")
diff --git a/app/services/concerns/users/participable_service.rb b/app/services/concerns/users/participable_service.rb
index 1c828234f1b..6fde9abfdb0 100644
--- a/app/services/concerns/users/participable_service.rb
+++ b/app/services/concerns/users/participable_service.rb
@@ -55,7 +55,8 @@ module Users
username: group.full_path,
name: group.full_name,
avatar_url: group.avatar_url,
- count: group_counts.fetch(group.id, 0)
+ count: group_counts.fetch(group.id, 0),
+ mentionsDisabled: group.mentions_disabled
}
end
end
diff --git a/app/services/create_branch_service.rb b/app/services/create_branch_service.rb
deleted file mode 100644
index d58cb0f9e2b..00000000000
--- a/app/services/create_branch_service.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-# frozen_string_literal: true
-
-class CreateBranchService < BaseService
- def execute(branch_name, ref, create_master_if_empty: true)
- create_master_branch if create_master_if_empty && project.empty_repo?
-
- result = ValidateNewBranchService.new(project, current_user)
- .execute(branch_name)
-
- return result if result[:status] == :error
-
- new_branch = repository.add_branch(current_user, branch_name, ref)
-
- if new_branch
- success(new_branch)
- else
- error("Invalid reference name: #{branch_name}")
- end
- rescue Gitlab::Git::PreReceiveError => ex
- error(ex.message)
- end
-
- def success(branch)
- super().merge(branch: branch)
- end
-
- private
-
- def create_master_branch
- project.repository.create_file(
- current_user,
- '/README.md',
- '',
- message: 'Add README.md',
- branch_name: 'master'
- )
- end
-end
diff --git a/app/services/create_snippet_service.rb b/app/services/create_snippet_service.rb
index 0aa76df35ba..eacea7d94c7 100644
--- a/app/services/create_snippet_service.rb
+++ b/app/services/create_snippet_service.rb
@@ -21,7 +21,11 @@ class CreateSnippetService < BaseService
spam_check(snippet, current_user)
- if snippet.save
+ snippet_saved = snippet.with_transaction_returning_status do
+ snippet.save && snippet.store_mentions!
+ end
+
+ if snippet_saved
UserAgentDetailService.new(snippet, @request).create
Gitlab::UsageDataCounters::SnippetCounter.count(:create)
end
diff --git a/app/services/delete_branch_service.rb b/app/services/delete_branch_service.rb
deleted file mode 100644
index fd41ce54486..00000000000
--- a/app/services/delete_branch_service.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-# frozen_string_literal: true
-
-class DeleteBranchService < BaseService
- def execute(branch_name)
- repository = project.repository
- branch = repository.find_branch(branch_name)
-
- unless current_user.can?(:push_code, project)
- return ServiceResponse.error(
- message: 'You dont have push access to repo',
- http_status: 405)
- end
-
- unless branch
- return ServiceResponse.error(
- message: 'No such branch',
- http_status: 404)
- end
-
- if repository.rm_branch(current_user, branch_name)
- ServiceResponse.success(message: 'Branch was deleted')
- else
- ServiceResponse.error(
- message: 'Failed to remove branch',
- http_status: 400)
- end
- rescue Gitlab::Git::PreReceiveError => ex
- ServiceResponse.error(message: ex.message, http_status: 400)
- end
-end
diff --git a/app/services/delete_merged_branches_service.rb b/app/services/delete_merged_branches_service.rb
deleted file mode 100644
index 80de897e94b..00000000000
--- a/app/services/delete_merged_branches_service.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-# frozen_string_literal: true
-
-class DeleteMergedBranchesService < BaseService
- def async_execute
- DeleteMergedBranchesWorker.perform_async(project.id, current_user.id)
- end
-
- def execute
- raise Gitlab::Access::AccessDeniedError unless can?(current_user, :push_code, project)
-
- branches = project.repository.merged_branch_names
- # Prevent deletion of branches relevant to open merge requests
- branches -= merge_request_branch_names
- # Prevent deletion of protected branches
- branches = branches.reject { |branch| ProtectedBranch.protected?(project, branch) }
-
- branches.each do |branch|
- DeleteBranchService.new(project, current_user).execute(branch)
- end
- end
-
- private
-
- # rubocop: disable CodeReuse/ActiveRecord
- def merge_request_branch_names
- # reorder(nil) is necessary for SELECT DISTINCT because default scope adds an ORDER BY
- source_names = project.origin_merge_requests.opened.reorder(nil).distinct.pluck(:source_branch)
- target_names = project.merge_requests.opened.reorder(nil).distinct.pluck(:target_branch)
- (source_names + target_names).uniq
- end
- # rubocop: enable CodeReuse/ActiveRecord
-end
diff --git a/app/services/deployments/after_create_service.rb b/app/services/deployments/after_create_service.rb
index e0a4e5419cc..1d9cb666cff 100644
--- a/app/services/deployments/after_create_service.rb
+++ b/app/services/deployments/after_create_service.rb
@@ -29,6 +29,7 @@ module Deployments
environment.external_url = url
end
+ renew_auto_stop_in
environment.fire_state_event(action)
if environment.save && !environment.stopped?
@@ -63,6 +64,12 @@ module Deployments
def action
environment_options[:action] || 'start'
end
+
+ def renew_auto_stop_in
+ return unless deployable
+
+ environment.auto_stop_in = deployable.environment_auto_stop_in
+ end
end
end
diff --git a/app/services/deployments/create_service.rb b/app/services/deployments/create_service.rb
index 89e3f7c8b83..7355747d778 100644
--- a/app/services/deployments/create_service.rb
+++ b/app/services/deployments/create_service.rb
@@ -11,15 +11,17 @@ module Deployments
end
def execute
- create_deployment.tap do |deployment|
- AfterCreateService.new(deployment).execute if deployment.persisted?
+ environment.deployments.build(deployment_attributes).tap do |deployment|
+ # Deployment#change_status already saves the model, so we only need to
+ # call #save ourselves if no status is provided.
+ if (status = params[:status])
+ deployment.update_status(status)
+ else
+ deployment.save
+ end
end
end
- def create_deployment
- environment.deployments.create(deployment_attributes)
- end
-
def deployment_attributes
# We use explicit parameters here so we never by accident allow parameters
# to be set that one should not be able to set (e.g. the row ID).
@@ -31,8 +33,7 @@ module Deployments
tag: params[:tag],
sha: params[:sha],
user: current_user,
- on_stop: params[:on_stop],
- status: params[:status]
+ on_stop: params[:on_stop]
}
end
end
diff --git a/app/services/deployments/update_service.rb b/app/services/deployments/update_service.rb
index 97b233f16a7..b8f8740c9b9 100644
--- a/app/services/deployments/update_service.rb
+++ b/app/services/deployments/update_service.rb
@@ -10,22 +10,7 @@ module Deployments
end
def execute
- # A regular update() does not trigger the state machine transitions, which
- # we need to ensure merge requests are linked when changing the status to
- # success. To work around this we use this case statment, using the right
- # event methods to trigger the transition hooks.
- case params[:status]
- when 'running'
- deployment.run
- when 'success'
- deployment.succeed
- when 'failed'
- deployment.drop
- when 'canceled'
- deployment.cancel
- else
- false
- end
+ deployment.update_status(params[:status])
end
end
end
diff --git a/app/services/environments/reset_auto_stop_service.rb b/app/services/environments/reset_auto_stop_service.rb
new file mode 100644
index 00000000000..237629fda79
--- /dev/null
+++ b/app/services/environments/reset_auto_stop_service.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+module Environments
+ class ResetAutoStopService < ::BaseService
+ def execute(environment)
+ return error(_('Failed to cancel auto stop because you do not have permission to update the environment.')) unless can_update_environment?(environment)
+ return error(_('Failed to cancel auto stop because the environment is not set as auto stop.')) unless environment.auto_stop_at?
+
+ if environment.reset_auto_stop
+ success
+ else
+ error(_('Failed to cancel auto stop because failed to update the environment.'))
+ end
+ end
+
+ private
+
+ def can_update_environment?(environment)
+ can?(current_user, :update_environment, environment)
+ end
+ end
+end
diff --git a/app/services/error_tracking/list_issues_service.rb b/app/services/error_tracking/list_issues_service.rb
index 2e8c401b8ef..132e9dfa7bd 100644
--- a/app/services/error_tracking/list_issues_service.rb
+++ b/app/services/error_tracking/list_issues_service.rb
@@ -4,6 +4,7 @@ module ErrorTracking
class ListIssuesService < ErrorTracking::BaseService
DEFAULT_ISSUE_STATUS = 'unresolved'
DEFAULT_LIMIT = 20
+ DEFAULT_SORT = 'last_seen'
def external_url
project_error_tracking_setting&.sentry_external_url
@@ -12,11 +13,17 @@ module ErrorTracking
private
def fetch
- project_error_tracking_setting.list_sentry_issues(issue_status: issue_status, limit: limit)
+ project_error_tracking_setting.list_sentry_issues(
+ issue_status: issue_status,
+ limit: limit,
+ search_term: params[:search_term].presence,
+ sort: sort,
+ cursor: params[:cursor].presence
+ )
end
def parse_response(response)
- { issues: response[:issues] }
+ response.slice(:issues, :pagination)
end
def issue_status
@@ -26,5 +33,9 @@ module ErrorTracking
def limit
params[:limit] || DEFAULT_LIMIT
end
+
+ def sort
+ params[:sort] || DEFAULT_SORT
+ end
end
end
diff --git a/app/services/git/base_hooks_service.rb b/app/services/git/base_hooks_service.rb
index 0801fd4d03f..d935d9e8cdc 100644
--- a/app/services/git/base_hooks_service.rb
+++ b/app/services/git/base_hooks_service.rb
@@ -85,12 +85,36 @@ module Git
before: oldrev,
after: newrev,
ref: ref,
+ variables_attributes: generate_vars_from_push_options || [],
push_options: params[:push_options] || {},
checkout_sha: Gitlab::DataBuilder::Push.checkout_sha(
project.repository, newrev, ref)
}
end
+ def ci_variables_from_push_options
+ strong_memoize(:ci_variables_from_push_options) do
+ params[:push_options]&.deep_symbolize_keys&.dig(:ci, :variable)
+ end
+ end
+
+ def generate_vars_from_push_options
+ return [] unless ci_variables_from_push_options
+
+ ci_variables_from_push_options.map do |var_definition, _count|
+ key, value = var_definition.to_s.split("=", 2)
+
+ # Accept only valid format. We ignore the following formats
+ # 1. "=123". In this case, `key` will be an empty string
+ # 2. "FOO". In this case, `value` will be nil.
+ # However, the format "FOO=" will result in key beign `FOO` and value
+ # being an empty string. This is acceptable.
+ next if key.blank? || value.nil?
+
+ { "key" => key, "variable_type" => "env_var", "secret_value" => value }
+ end.compact
+ end
+
def push_data_params(commits:, with_changed_files: true)
{
oldrev: oldrev,
diff --git a/app/services/issuable/bulk_update_service.rb b/app/services/issuable/bulk_update_service.rb
index 273a12f386a..bbb3c2ad050 100644
--- a/app/services/issuable/bulk_update_service.rb
+++ b/app/services/issuable/bulk_update_service.rb
@@ -4,19 +4,18 @@ module Issuable
class BulkUpdateService
include Gitlab::Allowable
- attr_accessor :current_user, :params
+ attr_accessor :parent, :current_user, :params
- def initialize(user = nil, params = {})
- @current_user, @params = user, params.dup
+ def initialize(parent, user = nil, params = {})
+ @parent, @current_user, @params = parent, user, params.dup
end
- # rubocop: disable CodeReuse/ActiveRecord
def execute(type)
model_class = type.classify.constantize
update_class = type.classify.pluralize.constantize::UpdateService
ids = params.delete(:issuable_ids).split(",")
- items = model_class.where(id: ids)
+ items = find_issuables(parent, model_class, ids)
permitted_attrs(type).each do |key|
params.delete(key) unless params[key].present?
@@ -37,7 +36,6 @@ module Issuable
success: !items.count.zero?
}
end
- # rubocop: enable CodeReuse/ActiveRecord
private
@@ -50,5 +48,15 @@ module Issuable
attrs.push(:assignee_id)
end
end
+
+ def find_issuables(parent, model_class, ids)
+ if parent.is_a?(Project)
+ model_class.id_in(ids).of_projects(parent)
+ elsif parent.is_a?(Group)
+ model_class.id_in(ids).of_projects(parent.all_projects)
+ end
+ end
end
end
+
+Issuable::BulkUpdateService.prepend_if_ee('EE::Issuable::BulkUpdateService')
diff --git a/app/services/issuable/clone/attributes_rewriter.rb b/app/services/issuable/clone/attributes_rewriter.rb
index 10c89c62bf1..1f5d83917cc 100644
--- a/app/services/issuable/clone/attributes_rewriter.rb
+++ b/app/services/issuable/clone/attributes_rewriter.rb
@@ -10,7 +10,13 @@ module Issuable
end
def execute
- new_entity.update(milestone: cloneable_milestone, labels: cloneable_labels)
+ update_attributes = { labels: cloneable_labels }
+
+ milestone = cloneable_milestone
+ update_attributes[:milestone] = milestone if milestone.present?
+
+ new_entity.update(update_attributes)
+
copy_resource_label_events
end
diff --git a/app/services/issuable/common_system_notes_service.rb b/app/services/issuable/common_system_notes_service.rb
index a170a4dcae2..846b881e819 100644
--- a/app/services/issuable/common_system_notes_service.rb
+++ b/app/services/issuable/common_system_notes_service.rb
@@ -7,20 +7,24 @@ module Issuable
def execute(issuable, old_labels: [], is_update: true)
@issuable = issuable
- if is_update
- if issuable.previous_changes.include?('title')
- create_title_change_note(issuable.previous_changes['title'].first)
+ # We disable touch so that created system notes do not update
+ # the noteable's updated_at field
+ ActiveRecord::Base.no_touching do
+ if is_update
+ if issuable.previous_changes.include?('title')
+ create_title_change_note(issuable.previous_changes['title'].first)
+ end
+
+ handle_description_change_note
+
+ handle_time_tracking_note if issuable.is_a?(TimeTrackable)
+ create_discussion_lock_note if issuable.previous_changes.include?('discussion_locked')
end
- handle_description_change_note
-
- handle_time_tracking_note if issuable.is_a?(TimeTrackable)
- create_discussion_lock_note if issuable.previous_changes.include?('discussion_locked')
+ create_due_date_note if issuable.previous_changes.include?('due_date')
+ create_milestone_note if issuable.previous_changes.include?('milestone_id')
+ create_labels_note(old_labels) if old_labels && issuable.labels != old_labels
end
-
- create_due_date_note if issuable.previous_changes.include?('due_date')
- create_milestone_note if issuable.previous_changes.include?('milestone_id')
- create_labels_note(old_labels) if old_labels && issuable.labels != old_labels
end
private
diff --git a/app/services/issuable_base_service.rb b/app/services/issuable_base_service.rb
index 8a79c5f889d..6cb84458d9b 100644
--- a/app/services/issuable_base_service.rb
+++ b/app/services/issuable_base_service.rb
@@ -163,10 +163,12 @@ class IssuableBaseService < BaseService
before_create(issuable)
- if issuable.save
- ActiveRecord::Base.no_touching do
- Issuable::CommonSystemNotesService.new(project, current_user).execute(issuable, is_update: false)
- end
+ issuable_saved = issuable.with_transaction_returning_status do
+ issuable.save && issuable.store_mentions!
+ end
+
+ if issuable_saved
+ Issuable::CommonSystemNotesService.new(project, current_user).execute(issuable, is_update: false)
after_create(issuable)
execute_hooks(issuable)
@@ -226,11 +228,12 @@ class IssuableBaseService < BaseService
update_project_counters = issuable.project && update_project_counter_caches?(issuable)
ensure_milestone_available(issuable)
- if issuable.with_transaction_returning_status { issuable.save(touch: should_touch) }
- # We do not touch as it will affect a update on updated_at field
- ActiveRecord::Base.no_touching do
- Issuable::CommonSystemNotesService.new(project, current_user).execute(issuable, old_labels: old_associations[:labels])
- end
+ issuable_saved = issuable.with_transaction_returning_status do
+ issuable.save(touch: should_touch) && issuable.store_mentions!
+ end
+
+ if issuable_saved
+ Issuable::CommonSystemNotesService.new(project, current_user).execute(issuable, old_labels: old_associations[:labels])
handle_changes(issuable, old_associations: old_associations)
@@ -264,10 +267,7 @@ class IssuableBaseService < BaseService
before_update(issuable, skip_spam_check: true)
if issuable.with_transaction_returning_status { issuable.save }
- # We do not touch as it will affect a update on updated_at field
- ActiveRecord::Base.no_touching do
- Issuable::CommonSystemNotesService.new(project, current_user).execute(issuable, old_labels: nil)
- end
+ Issuable::CommonSystemNotesService.new(project, current_user).execute(issuable, old_labels: nil)
handle_task_changes(issuable)
invalidate_cache_counts(issuable, users: issuable.assignees.to_a)
@@ -397,7 +397,7 @@ class IssuableBaseService < BaseService
end
def update_project_counter_caches?(issuable)
- issuable.state_changed?
+ issuable.state_id_changed?
end
def parent
diff --git a/app/services/issues/base_service.rb b/app/services/issues/base_service.rb
index 48ed5afbc2a..974f7e598ca 100644
--- a/app/services/issues/base_service.rb
+++ b/app/services/issues/base_service.rb
@@ -36,3 +36,5 @@ module Issues
end
end
end
+
+Issues::BaseService.prepend_if_ee('EE::Issues::BaseService')
diff --git a/app/services/issues/duplicate_service.rb b/app/services/issues/duplicate_service.rb
index 82c226f601e..c936d75e277 100644
--- a/app/services/issues/duplicate_service.rb
+++ b/app/services/issues/duplicate_service.rb
@@ -25,3 +25,5 @@ module Issues
end
end
end
+
+Issues::DuplicateService.prepend_if_ee('EE::Issues::DuplicateService')
diff --git a/app/services/issues/zoom_link_service.rb b/app/services/issues/zoom_link_service.rb
index 023d7080e88..9572cf50564 100644
--- a/app/services/issues/zoom_link_service.rb
+++ b/app/services/issues/zoom_link_service.rb
@@ -13,30 +13,29 @@ module Issues
if can_add_link? && (link = parse_link(link))
begin
add_zoom_meeting(link)
- success(_('Zoom meeting added'))
rescue ActiveRecord::RecordNotUnique
- error(_('Failed to add a Zoom meeting'))
+ error(message: _('Failed to add a Zoom meeting'))
end
else
- error(_('Failed to add a Zoom meeting'))
+ error(message: _('Failed to add a Zoom meeting'))
end
end
def remove_link
if can_remove_link?
remove_zoom_meeting
- success(_('Zoom meeting removed'))
+ success(message: _('Zoom meeting removed'))
else
- error(_('Failed to remove a Zoom meeting'))
+ error(message: _('Failed to remove a Zoom meeting'))
end
end
def can_add_link?
- can_update_issue? && !@added_meeting
+ can_change_link? && !@added_meeting
end
def can_remove_link?
- can_update_issue? && !!@added_meeting
+ can_change_link? && @issue.persisted? && !!@added_meeting
end
def parse_link(link)
@@ -56,14 +55,29 @@ module Issues
end
def add_zoom_meeting(link)
- ZoomMeeting.create(
+ zoom_meeting = new_zoom_meeting(link)
+ response =
+ if @issue.persisted?
+ # Save the meeting directly since we only want to update one meeting, not all
+ zoom_meeting.save
+ success(message: _('Zoom meeting added'))
+ else
+ success(message: _('Zoom meeting added'), payload: { zoom_meetings: [zoom_meeting] })
+ end
+
+ track_meeting_added_event
+ SystemNoteService.zoom_link_added(@issue, @project, current_user)
+
+ response
+ end
+
+ def new_zoom_meeting(link)
+ ZoomMeeting.new(
issue: @issue,
- project: @issue.project,
+ project: @project,
issue_status: :added,
url: link
)
- track_meeting_added_event
- SystemNoteService.zoom_link_added(@issue, @project, current_user)
end
def remove_zoom_meeting
@@ -72,16 +86,20 @@ module Issues
SystemNoteService.zoom_link_removed(@issue, @project, current_user)
end
- def success(message)
- ServiceResponse.success(message: message)
+ def success(message:, payload: nil)
+ ServiceResponse.success(message: message, payload: payload)
end
- def error(message)
+ def error(message:)
ServiceResponse.error(message: message)
end
- def can_update_issue?
- can?(current_user, :update_issue, project)
+ def can_change_link?
+ if @issue.persisted?
+ can?(current_user, :update_issue, @project)
+ else
+ can?(current_user, :create_issue, @project)
+ end
end
end
end
diff --git a/app/services/merge_requests/create_from_issue_service.rb b/app/services/merge_requests/create_from_issue_service.rb
index 200a34cae04..95fb99d3e7a 100644
--- a/app/services/merge_requests/create_from_issue_service.rb
+++ b/app/services/merge_requests/create_from_issue_service.rb
@@ -19,7 +19,7 @@ module MergeRequests
return error('Not allowed to create merge request') unless can_create_merge_request?
return error('Invalid issue iid') unless @issue_iid.present? && issue.present?
- result = CreateBranchService.new(target_project, current_user).execute(branch_name, ref)
+ result = ::Branches::CreateService.new(target_project, current_user).execute(branch_name, ref)
return result if result[:status] == :error
new_merge_request = create(merge_request)
diff --git a/app/services/merge_requests/merge_service.rb b/app/services/merge_requests/merge_service.rb
index a45b4f1142e..4a109fe4e16 100644
--- a/app/services/merge_requests/merge_service.rb
+++ b/app/services/merge_requests/merge_service.rb
@@ -62,8 +62,6 @@ module MergeRequests
end
def updated_check!
- return unless Feature.enabled?(:validate_merge_sha, merge_request.target_project, default_enabled: false)
-
unless source_matches?
raise_error('Branch has been updated since the merge was requested. '\
'Please review the changes.')
@@ -101,7 +99,7 @@ module MergeRequests
log_info("Post merge finished on JID #{merge_jid} with state #{state}")
if delete_source_branch?
- DeleteBranchService.new(@merge_request.source_project, branch_deletion_user)
+ ::Branches::DeleteService.new(@merge_request.source_project, branch_deletion_user)
.execute(merge_request.source_branch)
end
end
diff --git a/app/services/merge_requests/refresh_service.rb b/app/services/merge_requests/refresh_service.rb
index bd3fcf85a62..396ddec6383 100644
--- a/app/services/merge_requests/refresh_service.rb
+++ b/app/services/merge_requests/refresh_service.rb
@@ -106,7 +106,7 @@ module MergeRequests
filter_merge_requests(merge_requests).each do |merge_request|
if branch_and_project_match?(merge_request) || @push.force_push?
merge_request.reload_diff(current_user)
- elsif merge_request.includes_any_commits?(push_commit_ids)
+ elsif merge_request.merge_request_diff.includes_any_commits?(push_commit_ids)
merge_request.reload_diff(current_user)
end
diff --git a/app/services/merge_requests/update_service.rb b/app/services/merge_requests/update_service.rb
index 8a6a7119508..1dc5503d368 100644
--- a/app/services/merge_requests/update_service.rb
+++ b/app/services/merge_requests/update_service.rb
@@ -87,7 +87,7 @@ module MergeRequests
merge_request.update(merge_error: nil)
- if merge_request.head_pipeline && merge_request.head_pipeline.active?
+ if merge_request.head_pipeline_active?
AutoMergeService.new(project, current_user, { sha: last_diff_sha }).execute(merge_request, AutoMergeService::STRATEGY_MERGE_WHEN_PIPELINE_SUCCEEDS)
else
merge_request.merge_async(current_user.id, { sha: last_diff_sha })
diff --git a/app/services/metrics/dashboard/base_embed_service.rb b/app/services/metrics/dashboard/base_embed_service.rb
index 8bb5f4892cb..8aef9873ac1 100644
--- a/app/services/metrics/dashboard/base_embed_service.rb
+++ b/app/services/metrics/dashboard/base_embed_service.rb
@@ -13,7 +13,7 @@ module Metrics
def dashboard_path
params[:dashboard_path].presence ||
- ::Metrics::Dashboard::SystemDashboardService::SYSTEM_DASHBOARD_PATH
+ ::Metrics::Dashboard::SystemDashboardService::DASHBOARD_PATH
end
def group
diff --git a/app/services/metrics/dashboard/custom_metric_embed_service.rb b/app/services/metrics/dashboard/custom_metric_embed_service.rb
index 79a556b1695..9e616f4e379 100644
--- a/app/services/metrics/dashboard/custom_metric_embed_service.rb
+++ b/app/services/metrics/dashboard/custom_metric_embed_service.rb
@@ -40,7 +40,7 @@ module Metrics
# All custom metrics are displayed on the system dashboard.
# Nil is acceptable as we'll default to the system dashboard.
def valid_dashboard?(dashboard)
- dashboard.nil? || ::Metrics::Dashboard::SystemDashboardService.system_dashboard?(dashboard)
+ dashboard.nil? || ::Metrics::Dashboard::SystemDashboardService.matching_dashboard?(dashboard)
end
end
diff --git a/app/services/metrics/dashboard/grafana_metric_embed_service.rb b/app/services/metrics/dashboard/grafana_metric_embed_service.rb
index 60591e9a6f3..44b58ad9729 100644
--- a/app/services/metrics/dashboard/grafana_metric_embed_service.rb
+++ b/app/services/metrics/dashboard/grafana_metric_embed_service.rb
@@ -133,7 +133,7 @@ module Metrics
def uid_regex
base_url = @project.grafana_integration.grafana_url.chomp('/')
- %r{(#{Regexp.escape(base_url)}\/d\/(?<uid>\w+)\/)}x
+ %r{^(#{Regexp.escape(base_url)}\/d\/(?<uid>.+)\/)}x
end
end
diff --git a/app/services/metrics/dashboard/pod_dashboard_service.rb b/app/services/metrics/dashboard/pod_dashboard_service.rb
new file mode 100644
index 00000000000..16b87d2d587
--- /dev/null
+++ b/app/services/metrics/dashboard/pod_dashboard_service.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+module Metrics
+ module Dashboard
+ class PodDashboardService < ::Metrics::Dashboard::PredefinedDashboardService
+ DASHBOARD_PATH = 'config/prometheus/pod_metrics.yml'
+ DASHBOARD_NAME = 'Pod Health'
+ end
+ end
+end
diff --git a/app/services/metrics/dashboard/predefined_dashboard_service.rb b/app/services/metrics/dashboard/predefined_dashboard_service.rb
new file mode 100644
index 00000000000..1be1a000854
--- /dev/null
+++ b/app/services/metrics/dashboard/predefined_dashboard_service.rb
@@ -0,0 +1,45 @@
+# frozen_string_literal: true
+
+module Metrics
+ module Dashboard
+ class PredefinedDashboardService < ::Metrics::Dashboard::BaseService
+ # These constants should be overridden in the inheriting class. For Ex:
+ # DASHBOARD_PATH = 'config/prometheus/common_metrics.yml'
+ # DASHBOARD_NAME = 'Default'
+ DASHBOARD_PATH = nil
+ DASHBOARD_NAME = nil
+
+ SEQUENCE = [
+ STAGES::EndpointInserter,
+ STAGES::Sorter
+ ].freeze
+
+ class << self
+ def matching_dashboard?(filepath)
+ filepath == self::DASHBOARD_PATH
+ end
+ end
+
+ private
+
+ def cache_key
+ "metrics_dashboard_#{dashboard_path}"
+ end
+
+ def dashboard_path
+ self.class::DASHBOARD_PATH
+ end
+
+ # Returns the base metrics shipped with every GitLab service.
+ def get_raw_dashboard
+ yml = File.read(Rails.root.join(dashboard_path))
+
+ YAML.safe_load(yml)
+ end
+
+ def sequence
+ self.class::SEQUENCE
+ end
+ end
+ end
+end
diff --git a/app/services/metrics/dashboard/system_dashboard_service.rb b/app/services/metrics/dashboard/system_dashboard_service.rb
index f8dbb8a705c..bef65dbe1c2 100644
--- a/app/services/metrics/dashboard/system_dashboard_service.rb
+++ b/app/services/metrics/dashboard/system_dashboard_service.rb
@@ -1,12 +1,12 @@
# frozen_string_literal: true
# Fetches the system metrics dashboard and formats the output.
-# Use Gitlab::Metrics::Dashboard::Finder to retrive dashboards.
+# Use Gitlab::Metrics::Dashboard::Finder to retrieve dashboards.
module Metrics
module Dashboard
- class SystemDashboardService < ::Metrics::Dashboard::BaseService
- SYSTEM_DASHBOARD_PATH = 'config/prometheus/common_metrics.yml'
- SYSTEM_DASHBOARD_NAME = 'Default'
+ class SystemDashboardService < ::Metrics::Dashboard::PredefinedDashboardService
+ DASHBOARD_PATH = 'config/prometheus/common_metrics.yml'
+ DASHBOARD_NAME = 'Default'
SEQUENCE = [
STAGES::CommonMetricsInserter,
@@ -18,37 +18,12 @@ module Metrics
class << self
def all_dashboard_paths(_project)
[{
- path: SYSTEM_DASHBOARD_PATH,
- display_name: SYSTEM_DASHBOARD_NAME,
+ path: DASHBOARD_PATH,
+ display_name: DASHBOARD_NAME,
default: true,
system_dashboard: true
}]
end
-
- def system_dashboard?(filepath)
- filepath == SYSTEM_DASHBOARD_PATH
- end
- end
-
- private
-
- def cache_key
- "metrics_dashboard_#{dashboard_path}"
- end
-
- def dashboard_path
- SYSTEM_DASHBOARD_PATH
- end
-
- # Returns the base metrics shipped with every GitLab service.
- def get_raw_dashboard
- yml = File.read(Rails.root.join(dashboard_path))
-
- YAML.safe_load(yml)
- end
-
- def sequence
- SEQUENCE
end
end
end
diff --git a/app/services/metrics/sample_metrics_service.rb b/app/services/metrics/sample_metrics_service.rb
new file mode 100644
index 00000000000..719bc6614e4
--- /dev/null
+++ b/app/services/metrics/sample_metrics_service.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+
+module Metrics
+ class SampleMetricsService
+ DIRECTORY = "sample_metrics"
+
+ attr_reader :identifier
+
+ def initialize(identifier)
+ @identifier = identifier
+ end
+
+ def query
+ return unless identifier && File.exist?(file_location)
+
+ YAML.load_file(File.expand_path(file_location, __dir__))
+ end
+
+ private
+
+ def file_location
+ sanitized_string = identifier.gsub(/[^0-9A-Za-z_]/, '')
+ File.join(Rails.root, DIRECTORY, "#{sanitized_string}.yml")
+ end
+ end
+end
diff --git a/app/services/notes/base_service.rb b/app/services/notes/base_service.rb
index b4d04c47cc0..87f7cb0e8ac 100644
--- a/app/services/notes/base_service.rb
+++ b/app/services/notes/base_service.rb
@@ -4,7 +4,7 @@ module Notes
class BaseService < ::BaseService
def clear_noteable_diffs_cache(note)
if note.is_a?(DiffNote) &&
- note.discussion_first_note? &&
+ note.start_of_discussion? &&
note.position.unfolded_diff?(project.repository)
note.noteable.diffs.clear_cache
end
diff --git a/app/services/notes/build_service.rb b/app/services/notes/build_service.rb
index 541f3e0d23c..cf21818a886 100644
--- a/app/services/notes/build_service.rb
+++ b/app/services/notes/build_service.rb
@@ -11,7 +11,7 @@ module Notes
unless discussion && can?(current_user, :create_note, discussion.noteable)
note = Note.new
- note.errors.add(:base, 'Discussion to reply to cannot be found')
+ note.errors.add(:base, _('Discussion to reply to cannot be found'))
return note
end
diff --git a/app/services/notes/create_service.rb b/app/services/notes/create_service.rb
index 9e6cbfa06fe..accfdb5b863 100644
--- a/app/services/notes/create_service.rb
+++ b/app/services/notes/create_service.rb
@@ -2,6 +2,7 @@
module Notes
class CreateService < ::Notes::BaseService
+ # rubocop:disable Metrics/CyclomaticComplexity
def execute
merge_request_diff_head_sha = params.delete(:merge_request_diff_head_sha)
@@ -9,7 +10,9 @@ module Notes
# n+1: https://gitlab.com/gitlab-org/gitlab-foss/issues/37440
note_valid = Gitlab::GitalyClient.allow_n_plus_1_calls do
- note.valid?
+ # We may set errors manually in Notes::BuildService for this reason
+ # we also need to check for already existing errors.
+ note.errors.empty? && note.valid?
end
return note unless note_valid
@@ -33,7 +36,11 @@ module Notes
NewNoteWorker.perform_async(note.id)
end
- if !only_commands && note.save
+ note_saved = note.with_transaction_returning_status do
+ !only_commands && note.save && note.store_mentions!
+ end
+
+ if note_saved
if note.part_of_discussion? && note.discussion.can_convert_to_discussion?
note.discussion.convert_to_discussion!(save: true)
end
@@ -63,6 +70,7 @@ module Notes
note
end
+ # rubocop:enable Metrics/CyclomaticComplexity
private
diff --git a/app/services/notes/update_service.rb b/app/services/notes/update_service.rb
index 573be8fbe8b..15c556498ec 100644
--- a/app/services/notes/update_service.rb
+++ b/app/services/notes/update_service.rb
@@ -7,7 +7,11 @@ module Notes
old_mentioned_users = note.mentioned_users(current_user).to_a
- note.update(params.merge(updated_by: current_user))
+ note.assign_attributes(params.merge(updated_by: current_user))
+
+ note.with_transaction_returning_status do
+ note.save && note.store_mentions!
+ end
only_commands = false
diff --git a/app/services/notification_service.rb b/app/services/notification_service.rb
index 1709474a6c7..a75eaa99c23 100644
--- a/app/services/notification_service.rb
+++ b/app/services/notification_service.rb
@@ -58,6 +58,14 @@ class NotificationService
end
end
+ # Notify the owner of the personal access token, when it is about to expire
+ # And mark the token with about_to_expire_delivered
+ def access_token_about_to_expire(user)
+ return unless user.can?(:receive_notifications)
+
+ mailer.access_token_about_to_expire_email(user).deliver_later
+ end
+
# When create an issue we should send an email to:
#
# * issue assignee if their notification level is not Disabled
diff --git a/app/services/pages/delete_service.rb b/app/services/pages/delete_service.rb
new file mode 100644
index 00000000000..d4de6bb750d
--- /dev/null
+++ b/app/services/pages/delete_service.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+module Pages
+ class DeleteService < BaseService
+ def execute
+ project.remove_pages
+ project.pages_domains.destroy_all # rubocop: disable DestroyAll
+ end
+ end
+end
diff --git a/app/services/projects/container_repository/cleanup_tags_service.rb b/app/services/projects/container_repository/cleanup_tags_service.rb
index 1b880a7aab1..b995df12e56 100644
--- a/app/services/projects/container_repository/cleanup_tags_service.rb
+++ b/app/services/projects/container_repository/cleanup_tags_service.rb
@@ -26,13 +26,13 @@ module Projects
def delete_tags(tags_to_delete, tags_by_digest)
deleted_digests = group_by_digest(tags_to_delete).select do |digest, tags|
- delete_tag_digest(digest, tags, tags_by_digest[digest])
+ delete_tag_digest(tags, tags_by_digest[digest])
end
deleted_digests.values.flatten
end
- def delete_tag_digest(digest, tags, other_tags)
+ def delete_tag_digest(tags, other_tags)
# Issue: https://gitlab.com/gitlab-org/gitlab-foss/issues/21405
# we have to remove all tags due
# to Docker Distribution bug unable
diff --git a/app/services/projects/container_repository/delete_tags_service.rb b/app/services/projects/container_repository/delete_tags_service.rb
index 48bd9394dc5..88ff3c2c9df 100644
--- a/app/services/projects/container_repository/delete_tags_service.rb
+++ b/app/services/projects/container_repository/delete_tags_service.rb
@@ -24,32 +24,36 @@ module Projects
dummy_manifest = container_repository.client.generate_empty_manifest(container_repository.path)
return error('could not generate manifest') if dummy_manifest.nil?
- # update the manifests of the tags with the new dummy image
- deleted_tags = []
- tag_digests = []
+ deleted_tags = replace_tag_manifests(container_repository, dummy_manifest, tag_names)
+
+ # Deletes the dummy image
+ # All created tag digests are the same since they all have the same dummy image.
+ # a single delete is sufficient to remove all tags with it
+ if deleted_tags.any? && container_repository.delete_tag_by_digest(deleted_tags.values.first)
+ success(deleted: deleted_tags.keys)
+ else
+ error('could not delete tags')
+ end
+ end
+
+ # update the manifests of the tags with the new dummy image
+ def replace_tag_manifests(container_repository, dummy_manifest, tag_names)
+ deleted_tags = {}
tag_names.each do |name|
digest = container_repository.client.put_tag(container_repository.path, name, dummy_manifest)
next unless digest
- deleted_tags << name
- tag_digests << digest
+ deleted_tags[name] = digest
end
# make sure the digests are the same (it should always be)
- tag_digests.uniq!
+ digests = deleted_tags.values.uniq
# rubocop: disable CodeReuse/ActiveRecord
- Gitlab::Sentry.track_exception(ArgumentError.new('multiple tag digests')) if tag_digests.many?
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(ArgumentError.new('multiple tag digests')) if digests.many?
- # Deletes the dummy image
- # All created tag digests are the same since they all have the same dummy image.
- # a single delete is sufficient to remove all tags with it
- if tag_digests.any? && container_repository.delete_tag_by_digest(tag_digests.first)
- success(deleted: deleted_tags)
- else
- error('could not delete tags')
- end
+ deleted_tags
end
end
end
diff --git a/app/services/projects/destroy_service.rb b/app/services/projects/destroy_service.rb
index 90e703e7050..cbed794f92e 100644
--- a/app/services/projects/destroy_service.rb
+++ b/app/services/projects/destroy_service.rb
@@ -31,13 +31,6 @@ module Projects
Projects::UnlinkForkService.new(project, current_user).execute
- # The project is not necessarily a fork, so update the fork network originating
- # from this project
- if fork_network = project.root_of_fork_network
- fork_network.update(root_project: nil,
- deleted_root_project_name: project.full_name)
- end
-
attempt_destroy_transaction(project)
system_hook_service.execute_hooks_for(project, :destroy)
diff --git a/app/services/projects/fork_service.rb b/app/services/projects/fork_service.rb
index 47ab7f9a8a0..e66a0ed181a 100644
--- a/app/services/projects/fork_service.rb
+++ b/app/services/projects/fork_service.rb
@@ -3,11 +3,16 @@
module Projects
class ForkService < BaseService
def execute(fork_to_project = nil)
- if fork_to_project
- link_existing_project(fork_to_project)
- else
- fork_new_project
- end
+ forked_project =
+ if fork_to_project
+ link_existing_project(fork_to_project)
+ else
+ fork_new_project
+ end
+
+ refresh_forks_count if forked_project&.saved?
+
+ forked_project
end
private
@@ -92,8 +97,7 @@ module Projects
def link_fork_network(fork_to_project)
return if fork_to_project.errors.any?
- fork_to_project.fork_network_member.save &&
- refresh_forks_count
+ fork_to_project.fork_network_member.save
end
def refresh_forks_count
diff --git a/app/services/projects/hashed_storage/base_repository_service.rb b/app/services/projects/hashed_storage/base_repository_service.rb
index 8b1bcaf17b7..09de8d9f0da 100644
--- a/app/services/projects/hashed_storage/base_repository_service.rb
+++ b/app/services/projects/hashed_storage/base_repository_service.rb
@@ -8,13 +8,12 @@ module Projects
class BaseRepositoryService < BaseService
include Gitlab::ShellAdapter
- attr_reader :old_disk_path, :new_disk_path, :old_wiki_disk_path, :old_storage_version, :logger, :move_wiki
+ attr_reader :old_disk_path, :new_disk_path, :old_storage_version, :logger, :move_wiki
def initialize(project:, old_disk_path:, logger: nil)
@project = project
@logger = logger || Gitlab::AppLogger
@old_disk_path = old_disk_path
- @old_wiki_disk_path = "#{old_disk_path}.wiki"
@move_wiki = has_wiki?
end
@@ -44,9 +43,21 @@ module Projects
gitlab_shell.mv_repository(project.repository_storage, from_name, to_name)
end
+ def move_repositories
+ result = move_repository(old_disk_path, new_disk_path)
+ project.reload_repository!
+
+ if move_wiki
+ result &&= move_repository(old_wiki_disk_path, new_wiki_disk_path)
+ project.clear_memoization(:wiki)
+ end
+
+ result
+ end
+
def rollback_folder_move
move_repository(new_disk_path, old_disk_path)
- move_repository("#{new_disk_path}.wiki", old_wiki_disk_path)
+ move_repository(new_wiki_disk_path, old_wiki_disk_path)
end
def try_to_set_repository_read_only!
@@ -58,6 +69,20 @@ module Projects
raise RepositoryInUseError, migration_error
end
end
+
+ def wiki_path_suffix
+ @wiki_path_suffix ||= Gitlab::GlRepository::WIKI.path_suffix
+ end
+
+ def old_wiki_disk_path
+ @old_wiki_disk_path ||= "#{old_disk_path}#{wiki_path_suffix}"
+ end
+
+ def new_wiki_disk_path
+ @new_wiki_disk_path ||= "#{new_disk_path}#{wiki_path_suffix}"
+ end
end
end
end
+
+Projects::HashedStorage::BaseRepositoryService.prepend_if_ee('EE::Projects::HashedStorage::BaseRepositoryService')
diff --git a/app/services/projects/hashed_storage/migrate_repository_service.rb b/app/services/projects/hashed_storage/migrate_repository_service.rb
index 0a0bd90cd20..fd62ac37d27 100644
--- a/app/services/projects/hashed_storage/migrate_repository_service.rb
+++ b/app/services/projects/hashed_storage/migrate_repository_service.rb
@@ -11,11 +11,7 @@ module Projects
@new_disk_path = project.disk_path
- result = move_repository(old_disk_path, new_disk_path)
-
- if move_wiki
- result &&= move_repository(old_wiki_disk_path, "#{new_disk_path}.wiki")
- end
+ result = move_repositories
if result
project.write_repository_config
diff --git a/app/services/projects/hashed_storage/rollback_repository_service.rb b/app/services/projects/hashed_storage/rollback_repository_service.rb
index a705112ebe3..d6646e3765e 100644
--- a/app/services/projects/hashed_storage/rollback_repository_service.rb
+++ b/app/services/projects/hashed_storage/rollback_repository_service.rb
@@ -11,11 +11,7 @@ module Projects
@new_disk_path = project.disk_path
- result = move_repository(old_disk_path, new_disk_path)
-
- if move_wiki
- result &&= move_repository(old_wiki_disk_path, "#{new_disk_path}.wiki")
- end
+ result = move_repositories
if result
project.write_repository_config
diff --git a/app/services/projects/import_service.rb b/app/services/projects/import_service.rb
index 073c14040ce..cc12aacaf02 100644
--- a/app/services/projects/import_service.rb
+++ b/app/services/projects/import_service.rb
@@ -25,13 +25,13 @@ module Projects
success
rescue Gitlab::UrlBlocker::BlockedUrlError => e
- Gitlab::Sentry.track_acceptable_exception(e, extra: { project_path: project.full_path, importer: project.import_type })
+ Gitlab::ErrorTracking.track_exception(e, project_path: project.full_path, importer: project.import_type)
error(s_("ImportProjects|Error importing repository %{project_safe_import_url} into %{project_full_path} - %{message}") % { project_safe_import_url: project.safe_import_url, project_full_path: project.full_path, message: e.message })
rescue => e
message = Projects::ImportErrorFilter.filter_message(e.message)
- Gitlab::Sentry.track_acceptable_exception(e, extra: { project_path: project.full_path, importer: project.import_type })
+ Gitlab::ErrorTracking.track_exception(e, project_path: project.full_path, importer: project.import_type)
error(s_("ImportProjects|Error importing repository %{project_safe_import_url} into %{project_full_path} - %{message}") % { project_safe_import_url: project.safe_import_url, project_full_path: project.full_path, message: message })
end
diff --git a/app/services/projects/overwrite_project_service.rb b/app/services/projects/overwrite_project_service.rb
index 696e1b665b2..c5e38f166da 100644
--- a/app/services/projects/overwrite_project_service.rb
+++ b/app/services/projects/overwrite_project_service.rb
@@ -7,7 +7,9 @@ module Projects
Project.transaction do
move_before_destroy_relationships(source_project)
- destroy_old_project(source_project)
+ # Reset is required in order to get the proper
+ # uncached fork network method calls value.
+ destroy_old_project(source_project.reset)
rename_project(source_project.name, source_project.path)
@project
diff --git a/app/services/projects/unlink_fork_service.rb b/app/services/projects/unlink_fork_service.rb
index 1b8a920268f..e7e0141099e 100644
--- a/app/services/projects/unlink_fork_service.rb
+++ b/app/services/projects/unlink_fork_service.rb
@@ -2,34 +2,67 @@
module Projects
class UnlinkForkService < BaseService
- # rubocop: disable CodeReuse/ActiveRecord
+ # If a fork is given, it:
+ #
+ # - Saves LFS objects to the root project
+ # - Close existing MRs coming from it
+ # - Is removed from the fork network
+ #
+ # If a root of fork(s) is given, it does the same,
+ # but not updating LFS objects (there'll be no related root to cache it).
def execute
- return unless @project.forked?
+ fork_network = @project.fork_network
- if fork_source = @project.fork_source
- fork_source.lfs_objects.find_each do |lfs_object|
- lfs_object.projects << @project unless lfs_object.projects.include?(@project)
- end
+ return unless fork_network
- refresh_forks_count(fork_source)
- end
+ save_lfs_objects
- merge_requests = @project.fork_network
+ merge_requests = fork_network
.merge_requests
.opened
- .where.not(target_project: @project)
- .from_project(@project)
+ .from_and_to_forks(@project)
- merge_requests.each do |mr|
+ merge_requests.find_each do |mr|
::MergeRequests::CloseService.new(@project, @current_user).execute(mr)
end
- @project.fork_network_member.destroy
+ Project.transaction do
+ # Get out of the fork network as a member and
+ # remove references from all its direct forks.
+ @project.fork_network_member.destroy
+ @project.forked_to_members.update_all(forked_from_project_id: nil)
+
+ # The project is not necessarily a fork, so update the fork network originating
+ # from this project
+ if fork_network = @project.root_of_fork_network
+ fork_network.update(root_project: nil, deleted_root_project_name: @project.full_name)
+ end
+ end
+
+ # When the project getting out of the network is a node with parent
+ # and children, both the parent and the node needs a cache refresh.
+ [@project.forked_from_project, @project].compact.each do |project|
+ refresh_forks_count(project)
+ end
end
- # rubocop: enable CodeReuse/ActiveRecord
+
+ private
def refresh_forks_count(project)
Projects::ForksCountService.new(project).refresh_cache
end
+
+ def save_lfs_objects
+ return unless @project.forked?
+
+ lfs_storage_project = @project.lfs_storage_project
+
+ return unless lfs_storage_project
+ return if lfs_storage_project == @project # that project is being unlinked
+
+ lfs_storage_project.lfs_objects.find_each do |lfs_object|
+ lfs_object.projects << @project unless lfs_object.projects.include?(@project)
+ end
+ end
end
end
diff --git a/app/services/projects/update_service.rb b/app/services/projects/update_service.rb
index 2dad1d05a2c..aedd7252f63 100644
--- a/app/services/projects/update_service.rb
+++ b/app/services/projects/update_service.rb
@@ -65,7 +65,7 @@ module Projects
)
project_changed_feature_keys = project.project_feature.previous_changes.keys
- if project.previous_changes.include?(:visibility_level) && project.private?
+ if project.visibility_level_previous_changes && project.private?
# don't enqueue immediately to prevent todos removal in case of a mistake
TodosDestroyer::ConfidentialIssueWorker.perform_in(Todo::WAIT_FOR_DELETE, nil, project.id)
TodosDestroyer::ProjectPrivateWorker.perform_in(Todo::WAIT_FOR_DELETE, project.id)
@@ -79,6 +79,11 @@ module Projects
system_hook_service.execute_hooks_for(project, :update)
end
+ if project.visibility_level_decreased? && project.unlink_forks_upon_visibility_decrease_enabled?
+ # It's a system-bounded operation, so no extra authorization check is required.
+ Projects::UnlinkForkService.new(project, current_user).execute
+ end
+
update_pages_config if changing_pages_related_config?
end
diff --git a/app/services/prometheus/proxy_variable_substitution_service.rb b/app/services/prometheus/proxy_variable_substitution_service.rb
new file mode 100644
index 00000000000..ca56292e9d6
--- /dev/null
+++ b/app/services/prometheus/proxy_variable_substitution_service.rb
@@ -0,0 +1,51 @@
+# frozen_string_literal: true
+
+module Prometheus
+ class ProxyVariableSubstitutionService < BaseService
+ include Stepable
+
+ steps :add_params_to_result, :substitute_ruby_variables
+
+ def initialize(environment, params = {})
+ @environment, @params = environment, params.deep_dup
+ end
+
+ def execute
+ execute_steps
+ end
+
+ private
+
+ def add_params_to_result(result)
+ result[:params] = params
+
+ success(result)
+ end
+
+ def substitute_ruby_variables(result)
+ return success(result) unless query
+
+ # The % operator doesn't replace variables if the hash contains string
+ # keys.
+ result[:params][:query] = query % predefined_context.symbolize_keys
+
+ success(result)
+ rescue TypeError, ArgumentError => exception
+ log_error(exception.message)
+ Gitlab::ErrorTracking.track_exception(exception, extra: {
+ template_string: query,
+ variables: predefined_context
+ })
+
+ error(_('Malformed string'))
+ end
+
+ def predefined_context
+ @predefined_context ||= Gitlab::Prometheus::QueryVariables.call(@environment)
+ end
+
+ def query
+ params[:query]
+ end
+ end
+end
diff --git a/app/services/repair_ldap_blocked_user_service.rb b/app/services/repair_ldap_blocked_user_service.rb
deleted file mode 100644
index 6ed42054ac3..00000000000
--- a/app/services/repair_ldap_blocked_user_service.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-# frozen_string_literal: true
-
-class RepairLdapBlockedUserService
- attr_accessor :user
-
- def initialize(user)
- @user = user
- end
-
- def execute
- user.block if ldap_hard_blocked?
- end
-
- private
-
- def ldap_hard_blocked?
- user.ldap_blocked? && !user.ldap_user?
- end
-end
diff --git a/app/services/submit_usage_ping_service.rb b/app/services/submit_usage_ping_service.rb
index 415a02ab337..7927ab265c5 100644
--- a/app/services/submit_usage_ping_service.rb
+++ b/app/services/submit_usage_ping_service.rb
@@ -38,7 +38,7 @@ class SubmitUsagePingService
def store_metrics(response)
return unless response['conv_index'].present?
- ConversationalDevelopmentIndex::Metric.create!(
+ DevOpsScore::Metric.create!(
response['conv_index'].slice(*METRICS)
)
end
diff --git a/app/services/todo_service.rb b/app/services/todo_service.rb
index 2299a02fea1..55f888d5664 100644
--- a/app/services/todo_service.rb
+++ b/app/services/todo_service.rb
@@ -174,6 +174,19 @@ class TodoService
mark_todos_as_done(todos, current_user)
end
+ def mark_all_todos_as_done_by_user(current_user)
+ todos = TodosFinder.new(current_user).execute
+ mark_todos_as_done(todos, current_user)
+ end
+
+ def mark_todo_as_done(todo, current_user)
+ return if todo.done?
+
+ todo.update(state: :done)
+
+ current_user.update_todos_count_cache
+ end
+
# When user marks some todos as pending
def mark_todos_as_pending(todos, current_user)
update_todos_state(todos, current_user, :pending)
diff --git a/app/services/update_snippet_service.rb b/app/services/update_snippet_service.rb
index a294812ef9e..ac7f8e9b1f5 100644
--- a/app/services/update_snippet_service.rb
+++ b/app/services/update_snippet_service.rb
@@ -25,8 +25,12 @@ class UpdateSnippetService < BaseService
snippet.assign_attributes(params)
spam_check(snippet, current_user)
- snippet.save.tap do |succeeded|
- Gitlab::UsageDataCounters::SnippetCounter.count(:update) if succeeded
+ snippet_saved = snippet.with_transaction_returning_status do
+ snippet.save && snippet.store_mentions!
+ end
+
+ if snippet_saved
+ Gitlab::UsageDataCounters::SnippetCounter.count(:update)
end
end
end
diff --git a/app/services/users/build_service.rb b/app/services/users/build_service.rb
index 8c85ad9ffd8..ea4d11e728e 100644
--- a/app/services/users/build_service.rb
+++ b/app/services/users/build_service.rb
@@ -23,7 +23,7 @@ module Users
@reset_token = user.generate_reset_token if params[:reset_password]
if user_params[:force_random_password]
- random_password = Devise.friendly_token.first(Devise.password_length.min)
+ random_password = Devise.friendly_token.first(User.password_length.min)
user.password = user.password_confirmation = random_password
end
end
diff --git a/app/services/users/repair_ldap_blocked_service.rb b/app/services/users/repair_ldap_blocked_service.rb
new file mode 100644
index 00000000000..378145a65b3
--- /dev/null
+++ b/app/services/users/repair_ldap_blocked_service.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+module Users
+ class RepairLdapBlockedService
+ attr_accessor :user
+
+ def initialize(user)
+ @user = user
+ end
+
+ def execute
+ user.block if ldap_hard_blocked?
+ end
+
+ private
+
+ def ldap_hard_blocked?
+ user.ldap_blocked? && !user.ldap_user?
+ end
+ end
+end
diff --git a/app/services/validate_new_branch_service.rb b/app/services/validate_new_branch_service.rb
deleted file mode 100644
index 3f4a59e5cee..00000000000
--- a/app/services/validate_new_branch_service.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-# frozen_string_literal: true
-
-require_relative 'base_service'
-
-class ValidateNewBranchService < BaseService
- def execute(branch_name, force: false)
- valid_branch = Gitlab::GitRefValidator.validate(branch_name)
-
- unless valid_branch
- return error('Branch name is invalid')
- end
-
- if project.repository.branch_exists?(branch_name) && !force
- return error('Branch already exists')
- end
-
- success
- rescue Gitlab::Git::PreReceiveError => ex
- error(ex.message)
- end
-end
diff --git a/app/services/web_hook_service.rb b/app/services/web_hook_service.rb
index 8c294218708..87edac36e33 100644
--- a/app/services/web_hook_service.rb
+++ b/app/services/web_hook_service.rb
@@ -92,9 +92,6 @@ class WebHookService
end
def log_execution(trigger:, url:, request_data:, response:, execution_duration:, error_message: nil)
- # logging for ServiceHook's is not available
- return if hook.is_a?(ServiceHook)
-
WebHookLog.create(
web_hook: hook,
trigger: trigger,
diff --git a/app/views/admin/application_settings/_account_and_limit.html.haml b/app/views/admin/application_settings/_account_and_limit.html.haml
index 4358365504a..6b95c0f40c5 100644
--- a/app/views/admin/application_settings/_account_and_limit.html.haml
+++ b/app/views/admin/application_settings/_account_and_limit.html.haml
@@ -23,6 +23,9 @@
= f.label :session_expire_delay, _('Session duration (minutes)'), class: 'label-light'
= f.number_field :session_expire_delay, class: 'form-control'
%span.form-text.text-muted#session_expire_delay_help_block= _('GitLab restart is required to apply changes')
+
+ = render_if_exists 'admin/application_settings/personal_access_token_expiration_policy', form: f
+
.form-group
= f.label :user_oauth_applications, _('User OAuth applications'), class: 'label-bold'
.form-check
diff --git a/app/views/admin/application_settings/_ci_cd.html.haml b/app/views/admin/application_settings/_ci_cd.html.haml
index 9806090c1a6..cb9f992bb1d 100644
--- a/app/views/admin/application_settings/_ci_cd.html.haml
+++ b/app/views/admin/application_settings/_ci_cd.html.haml
@@ -58,6 +58,6 @@
= f.text_field :default_ci_config_path, class: 'form-control', placeholder: '.gitlab-ci.yml'
%p.form-text.text-muted
= _("The default CI configuration path for new projects.").html_safe
- = link_to icon('question-circle'), help_page_path('user/project/pipelines/settings', anchor: 'custom-ci-config-path'), target: '_blank'
+ = link_to icon('question-circle'), help_page_path('user/project/pipelines/settings', anchor: 'custom-ci-configuration-path'), target: '_blank'
= f.submit _('Save changes'), class: "btn btn-success"
diff --git a/app/views/admin/application_settings/_signup.html.haml b/app/views/admin/application_settings/_signup.html.haml
index 7c1df78f30c..b9d9d86ca30 100644
--- a/app/views/admin/application_settings/_signup.html.haml
+++ b/app/views/admin/application_settings/_signup.html.haml
@@ -13,6 +13,12 @@
= f.label :send_user_confirmation_email, class: 'form-check-label' do
Send confirmation email on sign-up
.form-group
+ = f.label :minimum_password_length, _('Minimum password length (number of characters)'), class: 'label-bold'
+ = f.number_field :minimum_password_length, class: 'form-control', rows: 4, min: ApplicationSetting::DEFAULT_MINIMUM_PASSWORD_LENGTH, max: Devise.password_length.max
+ - password_policy_guidelines_link = link_to _('Password Policy Guidelines'), 'https://about.gitlab.com/handbook/security/#gitlab-password-policy-guidelines', target: '_blank', rel: 'noopener noreferrer nofollow'
+ .form-text.text-muted
+ = _("See GitLab's %{password_policy_guidelines}").html_safe % { password_policy_guidelines: password_policy_guidelines_link }
+ .form-group
= f.label :domain_whitelist, 'Whitelisted domains for sign-ups', class: 'label-bold'
= f.text_area :domain_whitelist_raw, placeholder: 'domain.com', class: 'form-control', rows: 8
.form-text.text-muted ONLY users with e-mail addresses that match these domain(s) will be able to sign-up. Wildcards allowed. Use separate lines for multiple entries. Ex: domain.com, *.domain.com
diff --git a/app/views/admin/application_settings/_visibility_and_access.html.haml b/app/views/admin/application_settings/_visibility_and_access.html.haml
index be5f1f4f9a8..ae90ffd9efc 100644
--- a/app/views/admin/application_settings/_visibility_and_access.html.haml
+++ b/app/views/admin/application_settings/_visibility_and_access.html.haml
@@ -9,6 +9,7 @@
= f.label s_('ProjectCreationLevel|Default project creation protection'), class: 'label-bold'
= f.select :default_project_creation, options_for_select(Gitlab::Access.project_creation_options, @application_setting.default_project_creation), {}, class: 'form-control'
= render_if_exists 'admin/application_settings/default_project_deletion_protection_setting', form: f
+ = render_if_exists 'admin/application_settings/default_project_deletion_adjourned_period_setting', form: f
.form-group.visibility-level-setting
= f.label :default_project_visibility, class: 'label-bold'
= render('shared/visibility_radios', model_method: :default_project_visibility, form: f, selected_level: @application_setting.default_project_visibility, form_model: Project.new)
@@ -53,6 +54,7 @@
= select(:application_setting, :enabled_git_access_protocol, [['Both SSH and HTTP(S)', nil], ['Only SSH', 'ssh'], ['Only HTTP(S)', 'http']], {}, class: 'form-control')
%span.form-text.text-muted#clone-protocol-help
= _('Allow only the selected protocols to be used for Git access.')
+
.form-group
= f.label :custom_http_clone_url_root, _('Custom Git clone URL for HTTP(S)'), class: 'label-bold'
= f.text_field :custom_http_clone_url_root, class: 'form-control', placeholder: 'https://git.example.com', :'aria-describedby' => 'custom_http_clone_url_root_help_block'
diff --git a/app/views/admin/application_settings/integrations.html.haml b/app/views/admin/application_settings/integrations.html.haml
index 0aa833e49a8..c6318c9bb2f 100644
--- a/app/views/admin/application_settings/integrations.html.haml
+++ b/app/views/admin/application_settings/integrations.html.haml
@@ -8,5 +8,5 @@
= render_if_exists 'admin/application_settings/slack'
= render 'admin/application_settings/third_party_offers'
= render 'admin/application_settings/snowplow'
-= render 'admin/application_settings/eks' if Feature.enabled?(:create_eks_clusters)
+= render 'admin/application_settings/eks'
diff --git a/app/views/admin/broadcast_messages/_form.html.haml b/app/views/admin/broadcast_messages/_form.html.haml
index 962234d3aea..44d57beec0f 100644
--- a/app/views/admin/broadcast_messages/_form.html.haml
+++ b/app/views/admin/broadcast_messages/_form.html.haml
@@ -1,5 +1,5 @@
.broadcast-message-preview{ style: broadcast_message_style(@broadcast_message) }
- = icon('bullhorn')
+ = sprite_icon('bullhorn', size: 16, css_class:'vertical-align-text-top mr-2')
.js-broadcast-message-preview
- if @broadcast_message.message.present?
= render_broadcast_message(@broadcast_message)
@@ -40,6 +40,13 @@
= f.color_field :font, class: "form-control text-font-color"
.form-group.row
.col-sm-2.col-form-label
+ = f.label :target_path, _('Target Path')
+ .col-sm-10
+ = f.text_field :target_path, class: "form-control"
+ .form-text.text-muted
+ = _('Paths can contain wildcards, like */welcome')
+ .form-group.row
+ .col-sm-2.col-form-label
= f.label :starts_at, _("Starts at (UTC)")
.col-sm-10.datetime-controls
= f.datetime_select :starts_at, {}, class: 'form-control form-control-inline'
diff --git a/app/views/admin/broadcast_messages/index.html.haml b/app/views/admin/broadcast_messages/index.html.haml
index eb4dfdf2858..4731421fd9e 100644
--- a/app/views/admin/broadcast_messages/index.html.haml
+++ b/app/views/admin/broadcast_messages/index.html.haml
@@ -19,6 +19,7 @@
%th Preview
%th Starts
%th Ends
+ %th Target Path
%th &nbsp;
%tbody
- @broadcast_messages.each do |message|
@@ -32,6 +33,8 @@
%td
= message.ends_at
%td
+ = message.target_path
+ %td
= link_to sprite_icon('pencil-square'), edit_admin_broadcast_message_path(message), title: 'Edit', class: 'btn'
= link_to sprite_icon('remove'), admin_broadcast_message_path(message), method: :delete, remote: true, title: 'Remove', class: 'js-remove-tr btn btn-danger'
diff --git a/app/views/admin/dashboard/index.html.haml b/app/views/admin/dashboard/index.html.haml
index e5a3c0df9bf..6b138445675 100644
--- a/app/views/admin/dashboard/index.html.haml
+++ b/app/views/admin/dashboard/index.html.haml
@@ -46,7 +46,8 @@
enabled: allow_signup?)
= feature_entry(_('LDAP'),
- enabled: Gitlab.config.ldap.enabled)
+ enabled: Gitlab.config.ldap.enabled,
+ doc_href: help_page_path('administration/auth/ldap'))
= feature_entry(_('Gravatar'),
href: admin_application_settings_path(anchor: 'js-account-settings'),
@@ -54,10 +55,12 @@
= feature_entry(_('OmniAuth'),
href: admin_application_settings_path(anchor: 'js-signin-settings'),
- enabled: Gitlab::Auth.omniauth_enabled?)
+ enabled: Gitlab::Auth.omniauth_enabled?,
+ doc_href: help_page_path('integration/omniauth'))
= feature_entry(_('Reply by email'),
- enabled: Gitlab::IncomingEmail.enabled?)
+ enabled: Gitlab::IncomingEmail.enabled?,
+ doc_href: help_page_path('administration/reply_by_email'))
= render_if_exists 'admin/dashboard/elastic_and_geo'
diff --git a/app/views/admin/groups/_group.html.haml b/app/views/admin/groups/_group.html.haml
index 395c469255e..3444e423235 100644
--- a/app/views/admin/groups/_group.html.haml
+++ b/app/views/admin/groups/_group.html.haml
@@ -1,7 +1,7 @@
- group = local_assigns.fetch(:group)
- css_class = 'no-description' if group.description.blank?
-%li.group-row{ class: css_class }
+%li.group-row.py-3{ class: css_class }
.controls
= link_to _('Edit'), admin_group_edit_path(group), id: "edit_#{dom_id(group)}", class: 'btn'
= link_to _('Delete'), [:admin, group], data: { confirm: _("Are you sure you want to remove %{group_name}?") % { group_name: group.name } }, method: :delete, class: 'btn btn-remove'
diff --git a/app/views/admin/groups/show.html.haml b/app/views/admin/groups/show.html.haml
index f9cc118a252..160c3b4d06d 100644
--- a/app/views/admin/groups/show.html.haml
+++ b/app/views/admin/groups/show.html.haml
@@ -19,7 +19,8 @@
= group_icon(@group, class: "avatar s60")
%li
%span.light= _('Name:')
- %strong= @group.name
+ %strong
+ = link_to @group.name, group_path(@group)
%li
%span.light= _('Path:')
%strong
diff --git a/app/views/admin/hooks/edit.html.haml b/app/views/admin/hooks/edit.html.haml
index 9c6c74ed965..9ce0fa8d401 100644
--- a/app/views/admin/hooks/edit.html.haml
+++ b/app/views/admin/hooks/edit.html.haml
@@ -1,21 +1,18 @@
-- add_to_breadcrumbs "System Hooks", admin_hooks_path
-- page_title 'Edit System Hook'
-%h3.page-title
- Edit System Hook
+- add_to_breadcrumbs @hook.pluralized_name, admin_hooks_path
+- page_title _('Edit System Hook')
-%p.light
- #{link_to 'System hooks ', help_page_path('system_hooks/system_hooks')} can be
- used for binding events when GitLab creates a User or Project.
+.row.prepend-top-default
+ .col-lg-3
+ = render 'shared/web_hooks/title_and_docs', hook: @hook
-%hr
+ .col-lg-9.append-bottom-default
+ = form_for @hook, as: :hook, url: admin_hook_path do |f|
+ = render partial: 'form', locals: { form: f, hook: @hook }
+ .form-actions
+ %span>= f.submit _('Save changes'), class: 'btn btn-success append-right-8'
+ = render 'shared/web_hooks/test_button', hook: @hook
+ = link_to _('Delete'), admin_hook_path(@hook), method: :delete, class: 'btn btn-remove float-right', data: { confirm: _('Are you sure?') }
-= form_for @hook, as: :hook, url: admin_hook_path do |f|
- = render partial: 'form', locals: { form: f, hook: @hook }
- .form-actions
- = f.submit 'Save changes', class: 'btn btn-success'
- = render 'shared/web_hooks/test_button', triggers: SystemHook.triggers, hook: @hook
- = link_to 'Remove', admin_hook_path(@hook), method: :delete, class: 'btn btn-remove float-right', data: { confirm: 'Are you sure?' }
+ %hr
-%hr
-
-= render partial: 'admin/hook_logs/index', locals: { hook: @hook, hook_logs: @hook_logs }
+ = render partial: 'admin/hook_logs/index', locals: { hook: @hook, hook_logs: @hook_logs }
diff --git a/app/views/admin/hooks/index.html.haml b/app/views/admin/hooks/index.html.haml
index b65bf07160a..eed3ec74d60 100644
--- a/app/views/admin/hooks/index.html.haml
+++ b/app/views/admin/hooks/index.html.haml
@@ -1,35 +1,14 @@
-- page_title 'System Hooks'
+- page_title @hook.pluralized_name
+
.row.prepend-top-default
.col-lg-4
- %h4.prepend-top-0
- = page_title
- %p
- #{link_to 'System hooks ', help_page_path('system_hooks/system_hooks')} can be
- used for binding events when GitLab creates a User or Project.
+ = render 'shared/web_hooks/title_and_docs', hook: @hook
.col-lg-8.append-bottom-default
= form_for @hook, as: :hook, url: admin_hooks_path do |f|
= render partial: 'form', locals: { form: f, hook: @hook }
- = f.submit 'Add system hook', class: 'btn btn-success'
-
- %hr
+ = f.submit _('Add system hook'), class: 'btn btn-success'
- - if @hooks.any?
- .card
- .card-header
- System hooks (#{@hooks.count})
- %ul.content-list
- - @hooks.each do |hook|
- %li
- .controls
- = render 'shared/web_hooks/test_button', triggers: SystemHook.triggers, hook: hook, button_class: 'btn-sm'
- = link_to 'Edit', edit_admin_hook_path(hook), class: 'btn btn-sm'
- = link_to 'Remove', admin_hook_path(hook), data: { confirm: 'Are you sure?' }, method: :delete, class: 'btn btn-remove btn-sm'
- .monospace= hook.url
- %div
- - SystemHook.triggers.each_value do |event|
- - if hook.public_send(event)
- %span.badge.badge-gray= event.to_s.titleize
- %span.badge.badge-gray SSL Verification: #{hook.enable_ssl_verification ? 'enabled' : 'disabled'}
+ = render 'shared/web_hooks/index', hooks: @hooks, hook_class: @hook.class
= render 'shared/plugins/index'
diff --git a/app/views/admin/projects/_archived.html.haml b/app/views/admin/projects/_archived.html.haml
new file mode 100644
index 00000000000..8b4d5806c47
--- /dev/null
+++ b/app/views/admin/projects/_archived.html.haml
@@ -0,0 +1,3 @@
+- if project.archived
+ %span.badge.badge-warning
+ = _('archived')
diff --git a/app/views/admin/projects/_projects.html.haml b/app/views/admin/projects/_projects.html.haml
index 2f7ad35eb3e..f842ab2d009 100644
--- a/app/views/admin/projects/_projects.html.haml
+++ b/app/views/admin/projects/_projects.html.haml
@@ -14,8 +14,7 @@
.stats
%span.badge.badge-pill
= storage_counter(project.statistics&.storage_size)
- - if project.archived
- %span.badge.badge-warning archived
+ = render_if_exists 'admin/projects/archived', project: project
.title
= link_to(admin_project_path(project)) do
.dash-project-avatar
diff --git a/app/views/admin/runners/index.html.haml b/app/views/admin/runners/index.html.haml
index 2bf2b5fce8d..f8ef7a45f7f 100644
--- a/app/views/admin/runners/index.html.haml
+++ b/app/views/admin/runners/index.html.haml
@@ -10,7 +10,7 @@
%br
%div
- %span= _('Each Runner can be in one of the following states:')
+ %span= _('Each Runner can be in one of the following states and/or belong to one of the following types:')
%ul
%li
%span.badge.badge-success shared
@@ -120,7 +120,7 @@
.runners-content.content-list
.table-holder
.gl-responsive-table-row.table-row-header{ role: 'row' }
- .table-section.section-10{ role: 'rowheader' }= _('Type')
+ .table-section.section-10{ role: 'rowheader' }= _('Type/State')
.table-section.section-10{ role: 'rowheader' }= _('Runner token')
.table-section.section-20{ role: 'rowheader' }= _('Description')
.table-section.section-10{ role: 'rowheader' }= _('Version')
diff --git a/app/views/admin/sessions/_new_base.html.haml b/app/views/admin/sessions/_new_base.html.haml
index 3d77a439d61..50fa48855c0 100644
--- a/app/views/admin/sessions/_new_base.html.haml
+++ b/app/views/admin/sessions/_new_base.html.haml
@@ -4,4 +4,4 @@
= password_field_tag :password, nil, class: 'form-control', required: true, title: _('This field is required.'), data: { qa_selector: 'password_field' }
.submit-container.move-submit-down
- = submit_tag _('Enter Admin Mode'), class: 'btn btn-success', data: { qa_selector: 'sign_in_button' }
+ = submit_tag _('Enter Admin Mode'), class: 'btn btn-success', data: { qa_selector: 'enter_admin_mode_button' }
diff --git a/app/views/admin/sessions/_signin_box.html.haml b/app/views/admin/sessions/_signin_box.html.haml
deleted file mode 100644
index 1d19915d3c5..00000000000
--- a/app/views/admin/sessions/_signin_box.html.haml
+++ /dev/null
@@ -1,11 +0,0 @@
-- if any_form_based_providers_enabled?
-
- - if password_authentication_enabled_for_web?
- .login-box.tab-pane{ id: 'login-pane', role: 'tabpanel' }
- .login-body
- = render 'admin/sessions/new_base'
-
-- elsif password_authentication_enabled_for_web?
- .login-box.tab-pane.active{ id: 'login-pane', role: 'tabpanel' }
- .login-body
- = render 'admin/sessions/new_base'
diff --git a/app/views/admin/sessions/new.html.haml b/app/views/admin/sessions/new.html.haml
index 73028e78ea5..a1d440f2cfd 100644
--- a/app/views/admin/sessions/new.html.haml
+++ b/app/views/admin/sessions/new.html.haml
@@ -7,9 +7,16 @@
#signin-container
= render 'admin/sessions/tabs_normal'
.tab-content
- - if password_authentication_enabled_for_web?
- = render 'admin/sessions/signin_box'
- - else
- -# Show a message if none of the mechanisms above are enabled
+ - if !current_user.require_password_creation_for_web?
+ .login-box.tab-pane.active{ id: 'login-pane', role: 'tabpanel' }
+ .login-body
+ = render 'admin/sessions/new_base'
+
+ - if omniauth_enabled? && button_based_providers_enabled?
+ .clearfix
+ = render 'devise/shared/omniauth_box'
+
+ -# Show a message if none of the mechanisms above are enabled
+ - if current_user.require_password_creation_for_web? && !omniauth_enabled?
.prepend-top-default.center
= _('No authentication methods configured.')
diff --git a/app/views/admin/users/_access_levels.html.haml b/app/views/admin/users/_access_levels.html.haml
index bb1e22cc610..e3ab2e4f9bd 100644
--- a/app/views/admin/users/_access_levels.html.haml
+++ b/app/views/admin/users/_access_levels.html.haml
@@ -43,7 +43,7 @@
= f.check_box :external do
External
%p.light
- External users cannot see internal or private projects unless access is explicitly granted. Also, external users cannot create projects or groups.
+ External users cannot see internal or private projects unless access is explicitly granted. Also, external users cannot create projects, groups, or personal snippets.
%row.hidden#warning_external_automatically_set.hidden
.badge.badge-warning.text-white
= _('Automatically marked as default internal user')
diff --git a/app/views/award_emoji/_awards_block.html.haml b/app/views/award_emoji/_awards_block.html.haml
index 60ca7e4e267..793ddef2c58 100644
--- a/app/views/award_emoji/_awards_block.html.haml
+++ b/app/views/award_emoji/_awards_block.html.haml
@@ -17,3 +17,4 @@
%span{ class: "award-control-icon award-control-icon-positive" }= sprite_icon('smiley')
%span{ class: "award-control-icon award-control-icon-super-positive" }= sprite_icon('smile')
= icon('spinner spin', class: "award-control-icon award-control-icon-loading")
+ = yield
diff --git a/app/views/ci/variables/_variable_row.html.haml b/app/views/ci/variables/_variable_row.html.haml
index ed9b3ab1940..4244556a24a 100644
--- a/app/views/ci/variables/_variable_row.html.haml
+++ b/app/views/ci/variables/_variable_row.html.haml
@@ -44,31 +44,21 @@
.ci-variable-body-item.ci-variable-protected-item.table-section.section-20.mr-0.border-top-0
.append-right-default
= s_("CiVariable|Protected")
- %button{ type: 'button',
- class: "js-project-feature-toggle project-feature-toggle #{'is-checked' if is_protected}",
- "aria-label": s_("CiVariable|Toggle protected") }
+ = render "shared/buttons/project_feature_toggle", is_checked: is_protected, label: s_("CiVariable|Toggle protected") do
%input{ type: "hidden",
class: 'js-ci-variable-input-protected js-project-feature-toggle-input',
name: protected_input_name,
value: is_protected,
data: { default: is_protected_default.to_s } }
- %span.toggle-icon
- = sprite_icon('status_success_borderless', size: 16, css_class: 'toggle-icon-svg toggle-status-checked')
- = sprite_icon('status_failed_borderless', size: 16, css_class: 'toggle-icon-svg toggle-status-unchecked')
.ci-variable-body-item.ci-variable-masked-item.table-section.section-20.mr-0.border-top-0
.append-right-default
= s_("CiVariable|Masked")
- %button{ type: 'button',
- class: "js-project-feature-toggle project-feature-toggle qa-variable-masked #{'is-checked' if is_masked}",
- "aria-label": s_("CiVariable|Toggle masked") }
+ = render "shared/buttons/project_feature_toggle", is_checked: is_masked, label: s_("CiVariable|Toggle masked"), class_list: "js-project-feature-toggle project-feature-toggle qa-variable-masked" do
%input{ type: "hidden",
class: 'js-ci-variable-input-masked js-project-feature-toggle-input',
name: masked_input_name,
value: is_masked,
data: { default: is_masked_default.to_s } }
- %span.toggle-icon
- = sprite_icon('status_success_borderless', size: 16, css_class: 'toggle-icon-svg toggle-status-checked')
- = sprite_icon('status_failed_borderless', size: 16, css_class: 'toggle-icon-svg toggle-status-unchecked')
= render_if_exists 'ci/variables/environment_scope', form_field: form_field, variable: variable
%button.js-row-remove-button.ci-variable-row-remove-button.table-section.section-5.border-top-0{ type: 'button', 'aria-label': s_('CiVariables|Remove variable row') }
= icon('minus-circle')
diff --git a/app/views/clusters/clusters/_advanced_settings.html.haml b/app/views/clusters/clusters/_advanced_settings.html.haml
index 493d7a00854..77f7c478ffa 100644
--- a/app/views/clusters/clusters/_advanced_settings.html.haml
+++ b/app/views/clusters/clusters/_advanced_settings.html.haml
@@ -8,10 +8,10 @@
- unless @cluster.provided_by_user?
.append-bottom-20
%label.append-bottom-10
- = s_('ClusterIntegration|Google Kubernetes Engine')
+ = @cluster.provider_label
%p
- - link_gke = link_to(s_('ClusterIntegration|Google Kubernetes Engine'), @cluster.gke_cluster_url, target: '_blank', rel: 'noopener noreferrer')
- = s_('ClusterIntegration|Manage your Kubernetes cluster by visiting %{link_gke}').html_safe % { link_gke: link_gke }
+ - provider_link = link_to(@cluster.provider_label, @cluster.provider_management_url, target: '_blank', rel: 'noopener noreferrer')
+ = s_('ClusterIntegration|Manage your Kubernetes cluster by visiting %{provider_link}').html_safe % { provider_link: provider_link }
= form_for @cluster, url: clusterable.cluster_path(@cluster), as: :cluster, html: { class: 'cluster_management_form' } do |field|
@@ -28,9 +28,18 @@
.form-group
= field.submit _('Save changes'), class: 'btn btn-success qa-save-domain'
+ - if @cluster.managed?
+ .sub-section.form-group
+ %h4
+ = s_('ClusterIntegration|Clear cluster cache')
+ %p
+ = s_("ClusterIntegration|Clear the local cache of namespace and service accounts. This is necessary if your integration has become out of sync. The cache is repopulated during the next CI job that requires namespace and service accounts.")
+ = link_to(s_('ClusterIntegration|Clear cluster cache'), clusterable.clear_cluster_cache_path(@cluster), method: :delete, class: 'btn btn-primary')
+
.sub-section.form-group
%h4.text-danger
= s_('ClusterIntegration|Remove Kubernetes cluster integration')
%p
= s_("ClusterIntegration|Remove this Kubernetes cluster's configuration from this project. This will not delete your actual Kubernetes cluster.")
- = link_to(s_('ClusterIntegration|Remove integration'), clusterable.cluster_path(@cluster), method: :delete, class: 'btn btn-danger', data: { confirm: s_("ClusterIntegration|Are you sure you want to remove this Kubernetes cluster's integration? This will not delete your actual Kubernetes cluster.")})
+
+ #js-cluster-remove-actions{ data: { cluster_path: clusterable.cluster_path(@cluster), cluster_name: @cluster.name } }
diff --git a/app/views/clusters/clusters/_banner.html.haml b/app/views/clusters/clusters/_banner.html.haml
index 7d97aaccbcf..82057fd0463 100644
--- a/app/views/clusters/clusters/_banner.html.haml
+++ b/app/views/clusters/clusters/_banner.html.haml
@@ -6,17 +6,19 @@
%span.spinner.spinner-dark.spinner-sm{ 'aria-label': 'Loading' }
%span.prepend-left-4= s_('ClusterIntegration|Kubernetes cluster is being created...')
-.hidden.row.js-cluster-api-unreachable.bs-callout.bs-callout-warning{ role: 'alert' }
- .col-11
+.hidden.row.js-cluster-api-unreachable.gl-alert.gl-alert-warning{ role: 'alert' }
+ = sprite_icon('warning', size: 16, css_class: 'gl-icon gl-alert-icon gl-alert-icon-no-title')
+ %button.js-close-banner.gl-alert-dismiss{ type: 'button', 'aria-label' => _('Dismiss') }
+ = sprite_icon('close', size: 16, css_class: 'gl-icon')
+ .gl-alert-body
= s_('ClusterIntegration|Your cluster API is unreachable. Please ensure your API URL is correct.')
- .col-1.p-0
- %button.js-close-banner.close.cluster-application-banner-close.h-100.m-0= "×"
-.hidden.js-cluster-authentication-failure.row.js-cluster-api-unreachable.bs-callout.bs-callout-warning{ role: 'alert' }
- .col-11
+.hidden.js-cluster-authentication-failure.js-cluster-api-unreachable.gl-alert.gl-alert-warning{ role: 'alert' }
+ = sprite_icon('warning', size: 16, css_class: 'gl-icon gl-alert-icon gl-alert-icon-no-title')
+ %button.js-close-banner.gl-alert-dismiss{ type: 'button', 'aria-label' => _('Dismiss') }
+ = sprite_icon('close', size: 16, css_class: 'gl-icon')
+ .gl-alert-body
= s_('ClusterIntegration|There was a problem authenticating with your cluster. Please ensure your CA Certificate and Token are valid.')
- .col-1.p-0
- %button.js-close-banner.close.cluster-application-banner-close.h-100.m-0= "×"
.hidden.js-cluster-success.bs-callout.bs-callout-success{ role: 'alert' }
= s_("ClusterIntegration|Kubernetes cluster was successfully created.")
diff --git a/app/views/clusters/clusters/_form.html.haml b/app/views/clusters/clusters/_form.html.haml
index 3d0266a2d5b..f9085b781fb 100644
--- a/app/views/clusters/clusters/_form.html.haml
+++ b/app/views/clusters/clusters/_form.html.haml
@@ -3,14 +3,8 @@
.form-group
%h5= s_('ClusterIntegration|Integration status')
%label.append-bottom-0.js-cluster-enable-toggle-area
- %button{ type: 'button',
- class: "js-project-feature-toggle project-feature-toggle #{'is-checked' if @cluster.enabled?} #{'is-disabled' unless can?(current_user, :update_cluster, @cluster)}",
- "aria-label": s_("ClusterIntegration|Toggle Kubernetes cluster"),
- disabled: !can?(current_user, :update_cluster, @cluster) }
+ = render "shared/buttons/project_feature_toggle", is_checked: @cluster.enabled?, label: s_("ClusterIntegration|Toggle Kubernetes cluster"), disabled: !can?(current_user, :update_cluster, @cluster) do
= field.hidden_field :enabled, { class: 'js-project-feature-toggle-input'}
- %span.toggle-icon
- = sprite_icon('status_success_borderless', size: 16, css_class: 'toggle-icon-svg toggle-status-checked')
- = sprite_icon('status_failed_borderless', size: 16, css_class: 'toggle-icon-svg toggle-status-unchecked')
.form-text.text-muted= s_('ClusterIntegration|Enable or disable GitLab\'s connection to your Kubernetes cluster.')
.form-group
diff --git a/app/views/clusters/clusters/_namespace.html.haml b/app/views/clusters/clusters/_namespace.html.haml
index 0c64819ad62..8a86fd90963 100644
--- a/app/views/clusters/clusters/_namespace.html.haml
+++ b/app/views/clusters/clusters/_namespace.html.haml
@@ -1,4 +1,4 @@
-- managed_namespace_help_text = s_('ClusterIntegration|Choose a prefix to be used for your namespaces. Defaults to your project path.')
+- managed_namespace_help_text = s_('ClusterIntegration|Set a prefix for your namespaces. If not set, defaults to your project path. If modified, existing environments will use their current namespaces until the cluster cache is cleared.')
- non_managed_namespace_help_text = s_('ClusterIntegration|The namespace associated with your project. This will be used for deploy boards, pod logs, and Web terminals.')
- managed_namespace_help_link = link_to _('More information'), help_page_path('user/project/clusters/index.md',
anchor: 'gitlab-managed-clusters'), target: '_blank'
diff --git a/app/views/clusters/clusters/aws/_new.html.haml b/app/views/clusters/clusters/aws/_new.html.haml
index 795b80bfb6f..d89e6965dac 100644
--- a/app/views/clusters/clusters/aws/_new.html.haml
+++ b/app/views/clusters/clusters/aws/_new.html.haml
@@ -5,19 +5,12 @@
- else
.js-create-eks-cluster-form-container{ data: { 'gitlab-managed-cluster-help-path' => help_page_path('user/project/clusters/index.md', anchor: 'gitlab-managed-clusters'),
'create-role-path' => clusterable.authorize_aws_role_path,
- 'sign-out-path' => clusterable.revoke_aws_role_path,
'create-cluster-path' => clusterable.create_aws_clusters_path,
- 'get-roles-path' => clusterable.aws_api_proxy_path('roles'),
- 'get-regions-path' => clusterable.aws_api_proxy_path('regions'),
- 'get-key-pairs-path' => clusterable.aws_api_proxy_path('key_pairs'),
- 'get-vpcs-path' => clusterable.aws_api_proxy_path('vpcs'),
- 'get-subnets-path' => clusterable.aws_api_proxy_path('subnets'),
- 'get-security-groups-path' => clusterable.aws_api_proxy_path('security_groups'),
- 'get-instance-types-path' => clusterable.aws_api_proxy_path('instance_types'),
'account-id' => Gitlab::CurrentSettings.eks_account_id,
'external-id' => @aws_role.role_external_id,
+ 'role-arn' => @aws_role.role_arn,
+ 'instance-types' => @instance_types,
'kubernetes-integration-help-path' => help_page_path('user/project/clusters/index'),
'account-and-external-ids-help-path' => help_page_path('user/project/clusters/add_remove_clusters.md', anchor: 'eks-cluster'),
'create-role-arn-help-path' => help_page_path('user/project/clusters/add_remove_clusters.md', anchor: 'eks-cluster'),
- 'external-link-icon' => icon('external-link'),
- 'has-credentials' => @aws_role.role_arn.present?.to_s } }
+ 'external-link-icon' => icon('external-link') } }
diff --git a/app/views/clusters/clusters/gcp/_form.html.haml b/app/views/clusters/clusters/gcp/_form.html.haml
index 95670a2ec87..ab01569b8fd 100644
--- a/app/views/clusters/clusters/gcp/_form.html.haml
+++ b/app/views/clusters/clusters/gcp/_form.html.haml
@@ -64,7 +64,7 @@
%p.form-text.text-muted
= s_('ClusterIntegration|Learn more about %{help_link_start_machine_type}machine types%{help_link_end} and %{help_link_start_pricing}pricing%{help_link_end}.').html_safe % { help_link_start_machine_type: help_link_start % { url: machine_type_link_url }, help_link_start_pricing: help_link_start % { url: pricing_link_url }, help_link_end: help_link_end }
- - if Feature.enabled?(:create_cloud_run_clusters, clusterable)
+ - if Feature.enabled?(:create_cloud_run_clusters, clusterable, default_enabled: true)
.form-group
= provider_gcp_field.check_box :cloud_run, { label: s_('ClusterIntegration|Enable Cloud Run on GKE (beta)'),
label_class: 'label-bold' }
diff --git a/app/views/clusters/clusters/gcp/_gcp_not_configured.html.haml b/app/views/clusters/clusters/gcp/_gcp_not_configured.html.haml
index b57e45e9812..f1f26a0aab8 100644
--- a/app/views/clusters/clusters/gcp/_gcp_not_configured.html.haml
+++ b/app/views/clusters/clusters/gcp/_gcp_not_configured.html.haml
@@ -1,3 +1,3 @@
- documentation_link_start = '<a href="%{url}" target="_blank" rel="noopener noreferrer">'.html_safe % { url: help_page_path("integration/google") }
- link_end = '<a/>'.html_safe
-= s_('Google authentication is not %{link_start}property configured%{link_end}. Ask your GitLab administrator if you want to use this service.').html_safe % { link_start: documentation_link_start, link_end: link_end }
+= s_('Google authentication is not %{link_start}properly configured%{link_end}. Ask your GitLab administrator if you want to use this service.').html_safe % { link_start: documentation_link_start, link_end: link_end }
diff --git a/app/views/clusters/clusters/gcp/_new.html.haml b/app/views/clusters/clusters/gcp/_new.html.haml
index 3d47f4bf2c3..6c3a230fb93 100644
--- a/app/views/clusters/clusters/gcp/_new.html.haml
+++ b/app/views/clusters/clusters/gcp/_new.html.haml
@@ -1,7 +1,5 @@
= render 'clusters/clusters/gcp/header'
- if @valid_gcp_token
= render 'clusters/clusters/gcp/form'
-- elsif @authorize_url
- = render 'clusters/clusters/gcp/signin_with_google_button'
- else
= render 'clusters/clusters/gcp/gcp_not_configured'
diff --git a/app/views/clusters/clusters/gcp/_signin_with_google_button.html.haml b/app/views/clusters/clusters/gcp/_signin_with_google_button.html.haml
deleted file mode 100644
index 65cfa6552b1..00000000000
--- a/app/views/clusters/clusters/gcp/_signin_with_google_button.html.haml
+++ /dev/null
@@ -1,4 +0,0 @@
-.signin-with-google
- - create_account_link = '<a href="%{url}" target="_blank" rel="noopener noreferrer">'.html_safe % { url: 'https://accounts.google.com/SignUpWithoutGmail?service=cloudconsole&continue=https%3A%2F%2Fconsole.cloud.google.com%2Ffreetrial%3Futm_campaign%3D2018_cpanel%26utm_source%3Dgitlab%26utm_medium%3Dreferral' }
- = link_to(image_tag('auth_buttons/signin_with_google.png', width: '191px', alt: _('Sign in with Google')), @authorize_url)
- = s_('or %{link_start}create a new Google account%{link_end}').html_safe % { link_start: create_account_link, link_end: '</a>'.html_safe }
diff --git a/app/views/clusters/clusters/new.html.haml b/app/views/clusters/clusters/new.html.haml
index cb8cbe4e6f2..629585d82cd 100644
--- a/app/views/clusters/clusters/new.html.haml
+++ b/app/views/clusters/clusters/new.html.haml
@@ -1,6 +1,5 @@
- breadcrumb_title _('Kubernetes')
- page_title _('Kubernetes Cluster')
-- create_eks_enabled = Feature.enabled?(:create_eks_clusters)
- active_tab = local_assigns.fetch(:active_tab, 'create')
= javascript_include_tag 'https://apis.google.com/js/api.js'
@@ -14,21 +13,14 @@
%li.nav-item{ role: 'presentation' }
%a.nav-link{ href: '#create-cluster-pane', id: 'create-cluster-tab', class: active_when(active_tab == 'create'), data: { toggle: 'tab' }, role: 'tab' }
%span
- - if create_eks_enabled
- = create_new_cluster_label(provider: params[:provider])
- - else
- = create_new_cluster_label(provider: 'gcp')
+ = create_new_cluster_label(provider: params[:provider])
%li.nav-item{ role: 'presentation' }
%a.nav-link{ href: '#add-cluster-pane', id: 'add-cluster-tab', class: active_when(active_tab == 'add'), data: { toggle: 'tab' }, role: 'tab' }
%span Add existing cluster
.tab-content.gitlab-tab-content
- - if create_eks_enabled
- .tab-pane{ id: 'create-cluster-pane', class: active_when(active_tab == 'create'), role: 'tabpanel' }
- = render new_cluster_partial(provider: params[:provider])
- - else
- .tab-pane{ id: 'create-cluster-pane', class: active_when(active_tab == 'create'), role: 'tabpanel' }
- = render new_cluster_partial(provider: 'gcp')
+ .tab-pane{ id: 'create-cluster-pane', class: active_when(active_tab == 'create'), role: 'tabpanel' }
+ = render new_cluster_partial(provider: params[:provider])
.tab-pane{ id: 'add-cluster-pane', class: active_when(active_tab == 'add'), role: 'tabpanel' }
= render 'clusters/clusters/user/header'
diff --git a/app/views/dashboard/_snippets_head.html.haml b/app/views/dashboard/_snippets_head.html.haml
index 34aca40d0d1..4958cdc3745 100644
--- a/app/views/dashboard/_snippets_head.html.haml
+++ b/app/views/dashboard/_snippets_head.html.haml
@@ -3,7 +3,8 @@
- if current_user && current_user.snippets.any? || @snippets.any?
.page-title-controls
- = link_to _("New snippet"), new_snippet_path, class: "btn btn-success", title: _("New snippet")
+ - if can?(current_user, :create_personal_snippet)
+ = link_to _("New snippet"), new_snippet_path, class: "btn btn-success", title: _("New snippet")
.top-area
%ul.nav-links.nav.nav-tabs
diff --git a/app/views/dashboard/projects/_blank_state_welcome.html.haml b/app/views/dashboard/projects/_blank_state_welcome.html.haml
index 913f0e8cfae..003e6f18b33 100644
--- a/app/views/dashboard/projects/_blank_state_welcome.html.haml
+++ b/app/views/dashboard/projects/_blank_state_welcome.html.haml
@@ -1,5 +1,3 @@
-- public_project_count = ProjectsFinder.new(current_user: current_user).execute.count
-
.blank-state-row
- if current_user.can_create_project?
= link_to new_project_path, class: "blank-state blank-state-link" do
@@ -30,19 +28,15 @@
%p.blank-state-text
Groups are the best way to manage projects and members.
- - if public_project_count > 0
- = link_to trending_explore_projects_path, class: "blank-state blank-state-link" do
- .blank-state-icon
- = custom_icon("globe", size: 50)
- .blank-state-body
- %h3.blank-state-title
- Explore public projects
- %p.blank-state-text
- There are
- = number_with_delimiter(public_project_count)
- public projects on this server.
- Public projects are an easy way to allow
- everyone to have read-only access.
+ = link_to trending_explore_projects_path, class: "blank-state blank-state-link" do
+ .blank-state-icon
+ = custom_icon("globe", size: 50)
+ .blank-state-body
+ %h3.blank-state-title
+ Explore public projects
+ %p.blank-state-text
+ Public projects are an easy way to allow
+ everyone to have read-only access.
= link_to "https://docs.gitlab.com/", class: "blank-state blank-state-link" do
.blank-state-icon
diff --git a/app/views/dashboard/snippets/index.html.haml b/app/views/dashboard/snippets/index.html.haml
index 2caa8e0cac4..44a9270971a 100644
--- a/app/views/dashboard/snippets/index.html.haml
+++ b/app/views/dashboard/snippets/index.html.haml
@@ -1,6 +1,7 @@
- @hide_top_links = true
- page_title "Snippets"
- header_title "Snippets", dashboard_snippets_path
+- button_path = new_snippet_path if can?(current_user, :create_personal_snippet)
= render 'dashboard/snippets_head'
- if current_user.snippets.exists?
@@ -9,4 +10,4 @@
- if current_user.snippets.exists?
= render partial: 'shared/snippets/list', locals: { link_project: true }
- else
- = render 'shared/empty_states/snippets', button_path: new_snippet_path
+ = render 'shared/empty_states/snippets', button_path: button_path
diff --git a/app/views/groups/settings/_permissions.html.haml b/app/views/groups/settings/_permissions.html.haml
index 4c88660ccb9..618cfe57be4 100644
--- a/app/views/groups/settings/_permissions.html.haml
+++ b/app/views/groups/settings/_permissions.html.haml
@@ -23,6 +23,13 @@
%span.d-block= s_('GroupSettings|Disable email notifications')
%span.text-muted= s_('GroupSettings|This setting will override user notification preferences for all members of the group, subgroups, and projects.')
+ .form-group.append-bottom-default
+ .form-check
+ = f.check_box :mentions_disabled, checked: @group.mentions_disabled?, class: 'form-check-input'
+ = f.label :mentions_disabled, class: 'form-check-label' do
+ %span.d-block= s_('GroupSettings|Disable group mentions')
+ %span.text-muted= s_('GroupSettings|This setting will prevent group members from being notified if the group is mentioned.')
+
= render_if_exists 'groups/settings/ip_restriction', f: f, group: @group
= render_if_exists 'groups/settings/allowed_email_domain', f: f, group: @group
= render 'groups/settings/lfs', f: f
diff --git a/app/views/import/gitlab_projects/new.html.haml b/app/views/import/gitlab_projects/new.html.haml
index a19c8911559..feebbccf46a 100644
--- a/app/views/import/gitlab_projects/new.html.haml
+++ b/app/views/import/gitlab_projects/new.html.haml
@@ -14,7 +14,6 @@
= _("To move or copy an entire GitLab project from another GitLab installation to this one, navigate to the original project's settings page, generate an export file, and upload it here.")
.row
.form-group.col-sm-12
- = hidden_field_tag :namespace_id, @namespace.id
= label_tag :file, _('GitLab project export'), class: 'label-bold'
.form-group
= file_field_tag :file, class: ''
diff --git a/app/views/instance_statistics/cohorts/_cohorts_table.html.haml b/app/views/instance_statistics/cohorts/_cohorts_table.html.haml
index 6a7c999bff3..d4defd3f849 100644
--- a/app/views/instance_statistics/cohorts/_cohorts_table.html.haml
+++ b/app/views/instance_statistics/cohorts/_cohorts_table.html.haml
@@ -1,25 +1,32 @@
+- number_of_data_columns = @cohorts[:months_included] - 1
.bs-callout.clearfix
%p
- User cohorts are shown for the last #{@cohorts[:months_included]}
- months. Only users with activity are counted in the cohort total; inactive
- users are counted separately.
+ = s_("Cohorts|User cohorts are shown for the last %{months_included} months. Only users with activity are counted in the 'New users' column; inactive users are counted separately.") % { months_included: @cohorts[:months_included] }
= link_to icon('question-circle'), help_page_path('user/instance_statistics/user_cohorts', anchor: 'cohorts'), title: 'About this feature', target: '_blank'
-.table-holder
+.table-holder.d-xl-table
%table.table
%thead
%tr
- %th Registration month
- %th Inactive users
- %th Cohort total
- - @cohorts[:months_included].times do |i|
- %th Month #{i}
+ %th.border-right.pt-4{ colspan: 3 }
+ %th.font-weight-bold.pt-4{ colspan: number_of_data_columns }
+ = s_("Cohorts|Returning users")
+ %tr
+ %th.border-top-0
+ = s_("Cohorts|Registration month")
+ %th.border-top-0
+ = s_("Cohorts|Inactive users")
+ %th.border-top-0.border-right
+ = s_("Cohorts|New users")
+ - number_of_data_columns.times do |i|
+ %th.border-top-0
+ = s_("Cohorts|Month %{month_index}") % { month_index: i + 1 }
%tbody
- @cohorts[:cohorts].each do |cohort|
%tr
%td= cohort[:registration_month]
%td= cohort[:inactive]
- %td= cohort[:total]
+ %td.border-right= cohort[:total]
- cohort[:activity_months].each do |activity_month|
%td
- next if cohort[:total] == '0'
diff --git a/app/views/instance_statistics/conversational_development_index/_callout.html.haml b/app/views/instance_statistics/conversational_development_index/_callout.html.haml
deleted file mode 100644
index a4256e23979..00000000000
--- a/app/views/instance_statistics/conversational_development_index/_callout.html.haml
+++ /dev/null
@@ -1,13 +0,0 @@
-.prepend-top-default
-.user-callout{ data: { uid: 'convdev_intro_callout_dismissed' } }
- .bordered-box.landing.content-block
- %button.btn.btn-default.close.js-close-callout{ type: 'button',
- 'aria-label' => _('Dismiss ConvDev introduction') }
- = icon('times', class: 'dismiss-icon', 'aria-hidden' => 'true')
- .user-callout-copy
- %h4
- = _('Introducing Your Conversational Development Index')
- %p
- = _('Your Conversational Development Index gives an overview of how you are using GitLab from a feature perspective. View how you compare with other organizations, discover features you are not using, and learn best practices through blog posts and white papers.')
- .svg-container.convdev
- = custom_icon('convdev_overview')
diff --git a/app/views/instance_statistics/dev_ops_score/_callout.html.haml b/app/views/instance_statistics/dev_ops_score/_callout.html.haml
new file mode 100644
index 00000000000..64eb72c0d8d
--- /dev/null
+++ b/app/views/instance_statistics/dev_ops_score/_callout.html.haml
@@ -0,0 +1,13 @@
+.prepend-top-default
+.user-callout{ data: { uid: 'dev_ops_score_intro_callout_dismissed' } }
+ .bordered-box.landing.content-block
+ %button.btn.btn-default.close.js-close-callout{ type: 'button',
+ 'aria-label' => _('Dismiss DevOps Score introduction') }
+ = icon('times', class: 'dismiss-icon', 'aria-hidden' => 'true')
+ .user-callout-copy
+ %h4
+ = _('Introducing Your DevOps Score')
+ %p
+ = _('Your DevOps Score gives an overview of how you are using GitLab from a feature perspective. View how you compare with other organizations, discover features you are not using, and learn best practices through blog posts and white papers.')
+ .svg-container.devops
+ = custom_icon('dev_ops_score_overview')
diff --git a/app/views/instance_statistics/conversational_development_index/_card.html.haml b/app/views/instance_statistics/dev_ops_score/_card.html.haml
index 76af55dcf7a..c63bd96a175 100644
--- a/app/views/instance_statistics/conversational_development_index/_card.html.haml
+++ b/app/views/instance_statistics/dev_ops_score/_card.html.haml
@@ -1,6 +1,6 @@
-.convdev-card-wrapper
- .convdev-card{ class: "convdev-card-#{score_level(card.percentage_score)}" }
- .convdev-card-title
+.devops-card-wrapper
+ .devops-card{ class: "devops-card-#{score_level(card.percentage_score)}" }
+ .devops-card-title
%h3
= card.title
.light-text
diff --git a/app/views/instance_statistics/conversational_development_index/_disabled.html.haml b/app/views/instance_statistics/dev_ops_score/_disabled.html.haml
index b854e15d36f..da27ea17b61 100644
--- a/app/views/instance_statistics/conversational_development_index/_disabled.html.haml
+++ b/app/views/instance_statistics/dev_ops_score/_disabled.html.haml
@@ -1,6 +1,6 @@
-.container.convdev-empty
+.container.devops-empty
.col-sm-12.justify-content-center.text-center
- = custom_icon('convdev_no_index')
+ = custom_icon('dev_ops_score_no_index')
%h4= _('Usage ping is not enabled')
- if !current_user.admin?
%p
diff --git a/app/views/instance_statistics/conversational_development_index/_no_data.html.haml b/app/views/instance_statistics/dev_ops_score/_no_data.html.haml
index 4e8f34cd574..54598244039 100644
--- a/app/views/instance_statistics/conversational_development_index/_no_data.html.haml
+++ b/app/views/instance_statistics/dev_ops_score/_no_data.html.haml
@@ -1,7 +1,7 @@
-.container.convdev-empty
+.container.devops-empty
.col-sm-12.justify-content-center.text-center
- = custom_icon('convdev_no_data')
+ = custom_icon('dev_ops_score_no_data')
%h4= _('Data is still calculating...')
%p
= _('In order to gather accurate feature usage data, it can take 1 to 2 weeks to see your index.')
- = link_to _('Learn more'), help_page_path('user/instance_statistics/convdev'), target: '_blank'
+ = link_to _('Learn more'), help_page_path('user/instance_statistics/dev_ops_score'), target: '_blank'
diff --git a/app/views/instance_statistics/conversational_development_index/index.html.haml b/app/views/instance_statistics/dev_ops_score/index.html.haml
index 49c8fdc9630..44c6e9664db 100644
--- a/app/views/instance_statistics/conversational_development_index/index.html.haml
+++ b/app/views/instance_statistics/dev_ops_score/index.html.haml
@@ -1,8 +1,8 @@
-- page_title _('ConvDev Index')
+- page_title _('DevOps Score')
- usage_ping_enabled = Gitlab::CurrentSettings.usage_ping_enabled
.container
- - if usage_ping_enabled && show_callout?('convdev_intro_callout_dismissed')
+ - if usage_ping_enabled && show_callout?('dev_ops_score_intro_callout_dismissed')
= render 'callout'
.prepend-top-default
@@ -11,23 +11,23 @@
- elsif @metric.blank?
= render 'no_data'
- else
- .convdev
- .convdev-header
- %h2.convdev-header-title{ class: "convdev-#{score_level(@metric.average_percentage_score)}-score" }
+ .devops
+ .devops-header
+ %h2.devops-header-title{ class: "devops-#{score_level(@metric.average_percentage_score)}-score" }
= number_to_percentage(@metric.average_percentage_score, precision: 1)
- .convdev-header-subtitle
+ .devops-header-subtitle
= _('index')
%br
= _('score')
- = link_to icon('question-circle', 'aria-hidden' => 'true'), help_page_path('user/instance_statistics/convdev')
+ = link_to icon('question-circle', 'aria-hidden' => 'true'), help_page_path('user/instance_statistics/dev_ops_score')
- .convdev-cards.board-card-container
+ .devops-cards.board-card-container
- @metric.cards.each do |card|
= render 'card', card: card
- .convdev-steps.d-none.d-lg-block.d-xl-block
+ .devops-steps.d-none.d-lg-block.d-xl-block
- @metric.idea_to_production_steps.each_with_index do |step, index|
- .convdev-step{ class: "convdev-#{score_level(step.percentage_score)}-score" }
+ .devops-step{ class: "devops-#{score_level(step.percentage_score)}-score" }
= custom_icon("i2p_step_#{index + 1}")
- %h4.convdev-step-title
+ %h4.devops-step-title
= step.title
diff --git a/app/views/layouts/_broadcast.html.haml b/app/views/layouts/_broadcast.html.haml
index e2dbdcbb939..ee3ca824342 100644
--- a/app/views/layouts/_broadcast.html.haml
+++ b/app/views/layouts/_broadcast.html.haml
@@ -1,2 +1,2 @@
-- BroadcastMessage.current&.each do |message|
+- current_broadcast_messages&.each do |message|
= broadcast_message(message)
diff --git a/app/views/layouts/_flash.html.haml b/app/views/layouts/_flash.html.haml
index a0b030fa3b2..de1caeaa50f 100644
--- a/app/views/layouts/_flash.html.haml
+++ b/app/views/layouts/_flash.html.haml
@@ -1,8 +1,9 @@
+-# We currently only support `alert`, `notice`, `success`, 'toast'
.flash-container.flash-container-page.sticky
- -# We currently only support `alert`, `notice`, `success`
- flash.each do |key, value|
- -# Don't show a flash message if the message is nil
- - if value
+ - if key == 'toast' && value
+ .js-toast-message{ data: { message: value } }
+ - elsif value
%div{ class: "flash-#{key} mb-2" }
%span= value
%div{ class: "close-icon-wrapper js-close-icon" }
diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml
index c38f96f302a..f4ab491a38e 100644
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -1,7 +1,7 @@
!!! 5
%html{ lang: I18n.locale, class: page_class }
= render "layouts/head"
- %body{ class: "#{user_application_theme} #{@body_class} #{client_class_list}", data: { page: body_data_page, project: "#{@project.path if @project}", group: "#{@group.path if @group}", find_file: find_file_path } }
+ %body{ class: "#{user_application_theme} #{@body_class} #{client_class_list}", data: body_data }
= render "layouts/init_auto_complete" if @gfm_form
= render "layouts/init_client_detection_flags"
= render 'peek/bar'
diff --git a/app/views/layouts/header/_current_user_dropdown.html.haml b/app/views/layouts/header/_current_user_dropdown.html.haml
index d15f0ae3228..88803f982e8 100644
--- a/app/views/layouts/header/_current_user_dropdown.html.haml
+++ b/app/views/layouts/header/_current_user_dropdown.html.haml
@@ -20,7 +20,7 @@
= link_to s_("CurrentUser|Profile"), current_user, class: 'profile-link', data: { user: current_user.username }
- if current_user_menu?(:start_trial)
%li
- %a.profile-link{ href: trials_link_url }
+ %a.trial-link{ href: trials_link_url }
= s_("CurrentUser|Start a Gold trial")
= emoji_icon('rocket')
- if current_user_menu?(:settings)
diff --git a/app/views/layouts/header/_new_dropdown.haml b/app/views/layouts/header/_new_dropdown.haml
index e28efb09be5..30109621515 100644
--- a/app/views/layouts/header/_new_dropdown.haml
+++ b/app/views/layouts/header/_new_dropdown.haml
@@ -38,4 +38,5 @@
%li= link_to _('New project'), new_project_path, class: 'qa-global-new-project-link'
- if current_user.can_create_group?
%li= link_to _('New group'), new_group_path
- %li= link_to _('New snippet'), new_snippet_path, class: 'qa-global-new-snippet-link'
+ - if current_user.can?(:create_personal_snippet)
+ %li= link_to _('New snippet'), new_snippet_path, class: 'qa-global-new-snippet-link'
diff --git a/app/views/layouts/nav/_breadcrumbs.html.haml b/app/views/layouts/nav/_breadcrumbs.html.haml
index f53bd2b5e4d..1b799477093 100644
--- a/app/views/layouts/nav/_breadcrumbs.html.haml
+++ b/app/views/layouts/nav/_breadcrumbs.html.haml
@@ -2,7 +2,7 @@
- hide_top_links = @hide_top_links || false
%nav.breadcrumbs{ role: "navigation", class: [container, @content_class] }
- .breadcrumbs-container
+ .breadcrumbs-container{ class: ("border-bottom-0" if @no_breadcrumb_border && mr_tabs_position_enabled?) }
- if defined?(@left_sidebar)
= button_tag class: 'toggle-mobile-nav', type: 'button' do
%span.sr-only= _("Open sidebar")
diff --git a/app/views/layouts/nav/_dashboard.html.haml b/app/views/layouts/nav/_dashboard.html.haml
index d339751848b..9a839765286 100644
--- a/app/views/layouts/nav/_dashboard.html.haml
+++ b/app/views/layouts/nav/_dashboard.html.haml
@@ -48,7 +48,7 @@
%li.dropdown
= render_if_exists 'dashboard/nav_link_list'
- if can?(current_user, :read_instance_statistics)
- = nav_link(controller: [:conversational_development_index, :cohorts]) do
+ = nav_link(controller: [:dev_ops_score, :cohorts]) do
= link_to instance_statistics_root_path do
= _('Instance Statistics')
- if current_user.admin?
diff --git a/app/views/layouts/nav/sidebar/_admin.html.haml b/app/views/layouts/nav/sidebar/_admin.html.haml
index b33ef26f87d..71fef5df5bc 100644
--- a/app/views/layouts/nav/sidebar/_admin.html.haml
+++ b/app/views/layouts/nav/sidebar/_admin.html.haml
@@ -182,6 +182,8 @@
%strong.fly-out-top-item-name
= _('Deploy Keys')
+ = render_if_exists 'layouts/nav/sidebar/credentials_link'
+
= nav_link(controller: :services) do
= link_to admin_application_settings_services_path do
.nav-icon-container
@@ -264,8 +266,8 @@
= link_to network_admin_application_settings_path, title: _('Network'), data: { qa_selector: 'admin_settings_network_item' } do
%span
= _('Network')
- - if template_exists?('admin/application_settings/geo')
- = nav_link(path: 'application_settings#geo') do
+ - if template_exists?('admin/geo/settings/show')
+ = nav_link do
= link_to geo_admin_application_settings_path, title: _('Geo') do
%span
= _('Geo')
diff --git a/app/views/layouts/nav/sidebar/_group.html.haml b/app/views/layouts/nav/sidebar/_group.html.haml
index a6d2c894185..a027dca1b56 100644
--- a/app/views/layouts/nav/sidebar/_group.html.haml
+++ b/app/views/layouts/nav/sidebar/_group.html.haml
@@ -44,7 +44,7 @@
- if group_sidebar_link?(:contribution_analytics)
= nav_link(path: 'analytics#show') do
- = link_to group_analytics_path(@group), title: _('Contribution Analytics'), data: { placement: 'right' } do
+ = link_to group_analytics_path(@group), title: _('Contribution Analytics'), data: { placement: 'right', qa_selector: 'contribution_analytics_link' } do
%span
= _('Contribution Analytics')
diff --git a/app/views/layouts/nav/sidebar/_instance_statistics.html.haml b/app/views/layouts/nav/sidebar/_instance_statistics.html.haml
index 57180f27146..0a84e952442 100644
--- a/app/views/layouts/nav/sidebar/_instance_statistics.html.haml
+++ b/app/views/layouts/nav/sidebar/_instance_statistics.html.haml
@@ -6,17 +6,17 @@
= sprite_icon('chart', size: 24)
.sidebar-context-title= _('Instance Statistics')
%ul.sidebar-top-level-items
- = nav_link(controller: :conversational_development_index) do
- = link_to instance_statistics_conversational_development_index_index_path do
+ = nav_link(controller: :dev_ops_score) do
+ = link_to instance_statistics_dev_ops_score_index_path do
.nav-icon-container
= sprite_icon('comment')
%span.nav-item-name
- = _('ConvDev Index')
+ = _('DevOps Score')
%ul.sidebar-sub-level-items.is-fly-out-only
- = nav_link(controller: :conversational_development_index, html_options: { class: "fly-out-top-item" } ) do
- = link_to instance_statistics_conversational_development_index_index_path do
+ = nav_link(controller: :dev_ops_score, html_options: { class: "fly-out-top-item" } ) do
+ = link_to instance_statistics_dev_ops_score_index_path do
%strong.fly-out-top-item-name
- = _('ConvDev Index')
+ = _('DevOps Score')
- if Gitlab::CurrentSettings.usage_ping_enabled
= nav_link(controller: :cohorts) do
diff --git a/app/views/layouts/nav/sidebar/_project.html.haml b/app/views/layouts/nav/sidebar/_project.html.haml
index 9b3ad05d0c0..1e2556aecc1 100644
--- a/app/views/layouts/nav/sidebar/_project.html.haml
+++ b/app/views/layouts/nav/sidebar/_project.html.haml
@@ -144,8 +144,16 @@
%strong.fly-out-top-item-name
= issue_tracker.title
+ - if (project_nav_tab? :labels) && !@project.issues_enabled?
+ = nav_link(controller: [:labels]) do
+ = link_to project_labels_path(@project), title: _('Labels'), class: 'shortcuts-labels qa-labels-items' do
+ .nav-icon-container
+ = sprite_icon('label')
+ %span.nav-item-name#js-onboarding-labels-link
+ = _('Labels')
+
- if project_nav_tab? :merge_requests
- = nav_link(controller: @project.issues_enabled? ? :merge_requests : [:merge_requests, :labels, :milestones]) do
+ = nav_link(controller: @project.issues_enabled? ? :merge_requests : [:merge_requests, :milestones]) do
= link_to project_merge_requests_path(@project), class: 'shortcuts-merge_requests', data: { qa_selector: 'merge_requests_link' } do
.nav-icon-container
= sprite_icon('git-merge')
diff --git a/app/views/layouts/notify.html.haml b/app/views/layouts/notify.html.haml
index de487a94d40..e922b505be8 100644
--- a/app/views/layouts/notify.html.haml
+++ b/app/views/layouts/notify.html.haml
@@ -20,7 +20,7 @@
#{link_to _("View it on GitLab"), @target_url}.
%br
-# Don't link the host in the line below, one link in the email is easier to quickly click than two.
- = _("You're receiving this email because %{reason}.") % { reason: notification_reason_text(@reason) }
+ = notification_reason_text(@reason)
If you'd like to receive fewer emails, you can
- if @labels_url
adjust your #{link_to 'label subscriptions', @labels_url}.
diff --git a/app/views/layouts/notify.text.erb b/app/views/layouts/notify.text.erb
index 0ee30c2a6cf..49ad0b5abc5 100644
--- a/app/views/layouts/notify.text.erb
+++ b/app/views/layouts/notify.text.erb
@@ -11,7 +11,7 @@
<% end -%>
<% end -%>
-<%= "You're receiving this email because #{notification_reason_text(@reason)}." %>
+<%= notification_reason_text(@reason) %>
<%= render_if_exists 'layouts/mailer/additional_text' %>
<%= text_footer_message -%>
diff --git a/app/views/notify/_note_email.html.haml b/app/views/notify/_note_email.html.haml
index dc5529b489b..c558358725c 100644
--- a/app/views/notify/_note_email.html.haml
+++ b/app/views/notify/_note_email.html.haml
@@ -11,7 +11,7 @@
- if discussion.nil?
commented
- else
- - if discussion.new_discussion?
+ - if note.start_of_discussion?
started a new
- else
commented on a
diff --git a/app/views/notify/_note_email.text.erb b/app/views/notify/_note_email.text.erb
index a25daad8458..8e2f7e6f76e 100644
--- a/app/views/notify/_note_email.text.erb
+++ b/app/views/notify/_note_email.text.erb
@@ -7,7 +7,7 @@
<% if discussion.nil? -%>
<%= 'commented' -%>:
<% else -%>
-<% if discussion.new_discussion? -%>
+<% if note.start_of_discussion? -%>
<%= 'started a new discussion' -%>
<% else -%>
<%= 'commented on a discussion' -%>
diff --git a/app/views/notify/access_token_about_to_expire_email.html.haml b/app/views/notify/access_token_about_to_expire_email.html.haml
new file mode 100644
index 00000000000..d1923e324f7
--- /dev/null
+++ b/app/views/notify/access_token_about_to_expire_email.html.haml
@@ -0,0 +1,7 @@
+%p
+ = _('Hi %{username}!') % { username: sanitize_name(@user.name) }
+%p
+ = _('One or more of your personal access tokens will expire in %{days_to_expire} days or less.') % { days_to_expire: @days_to_expire }
+%p
+ - pat_link_start = '<a href="%{url}" target="_blank" rel="noopener noreferrer">'.html_safe % { url: @target_url }
+ = _('You can create a new one or check them in your %{pat_link_start}Personal Access Tokens%{pat_link_end} settings').html_safe % { pat_link_start: pat_link_start, pat_link_end: '</a>'.html_safe }
diff --git a/app/views/notify/access_token_about_to_expire_email.text.erb b/app/views/notify/access_token_about_to_expire_email.text.erb
new file mode 100644
index 00000000000..5e6bd68d33f
--- /dev/null
+++ b/app/views/notify/access_token_about_to_expire_email.text.erb
@@ -0,0 +1,5 @@
+<%= _('Hi %{username}!') % { username: sanitize_name(@user.name) } %>
+
+<%= _('One or more of your personal access tokens will expire in %{days_to_expire} days or less.') % { days_to_expire: @days_to_expire} %>
+
+<%= _('You can create a new one or check them in your Personal Access Tokens settings %{pat_link}') % { pat_link: @target_url } %>
diff --git a/app/views/profiles/accounts/_providers.html.haml b/app/views/profiles/accounts/_providers.html.haml
index 068f9cc70f7..a87191d0fa4 100644
--- a/app/views/profiles/accounts/_providers.html.haml
+++ b/app/views/profiles/accounts/_providers.html.haml
@@ -16,6 +16,6 @@
%a.provider-btn
= s_('Profiles|Active')
- elsif link_allowed
- = link_to omniauth_authorize_path(:user, provider), method: :post, class: 'provider-btn not-active' do
+ = link_to omniauth_authorize_path(:user, provider), method: :post, class: 'provider-btn gl-text-blue-500' do
= s_('Profiles|Connect')
= render_if_exists 'profiles/accounts/group_saml_unlink_buttons', group_saml_identities: group_saml_identities
diff --git a/app/views/profiles/gpg_keys/_key.html.haml b/app/views/profiles/gpg_keys/_key.html.haml
index f8351644df5..2de5cf2f506 100644
--- a/app/views/profiles/gpg_keys/_key.html.haml
+++ b/app/views/profiles/gpg_keys/_key.html.haml
@@ -5,7 +5,7 @@
- key.emails_with_verified_status.map do |email, verified|
= render partial: 'shared/email_with_badge', locals: { email: email, verified: verified }
- .description
+ %span.text-truncate
%code= key.fingerprint
- if key.subkeys.present?
.subkeys
diff --git a/app/views/profiles/keys/_key.html.haml b/app/views/profiles/keys/_key.html.haml
index b9d73d89334..0e94e6563fd 100644
--- a/app/views/profiles/keys/_key.html.haml
+++ b/app/views/profiles/keys/_key.html.haml
@@ -10,7 +10,7 @@
.key-list-item-info
= link_to path_to_key(key, is_admin), class: "title" do
= key.title
- .description
+ %span.text-truncate
= key.fingerprint
.last-used-at
last used:
diff --git a/app/views/profiles/keys/_key_details.html.haml b/app/views/profiles/keys/_key_details.html.haml
index 0ef01dec493..02f1a267044 100644
--- a/app/views/profiles/keys/_key_details.html.haml
+++ b/app/views/profiles/keys/_key_details.html.haml
@@ -17,11 +17,21 @@
.col-md-8
= form_errors(@key, type: 'key') unless @key.valid?
- %p
- %span.light= _('Fingerprint:')
- %code.key-fingerprint= @key.fingerprint
%pre.well-pre
= @key.key
+ .card
+ .card-header
+ = _('Fingerprints')
+ %ul.content-list
+ %li
+ %span.light= 'MD5:'
+ %code.key-fingerprint= @key.fingerprint
+ - if @key.fingerprint_sha256.present?
+ %li
+ %span.light= 'SHA256:'
+ %code.key-fingerprint= @key.fingerprint_sha256
+
+
.col-md-12
.float-right
- if @key.can_delete?
diff --git a/app/views/profiles/passwords/edit.html.haml b/app/views/profiles/passwords/edit.html.haml
index 0e2b0430fec..af6fa6b1b61 100644
--- a/app/views/profiles/passwords/edit.html.haml
+++ b/app/views/profiles/passwords/edit.html.haml
@@ -32,4 +32,4 @@
.prepend-top-default.append-bottom-default
= f.submit _('Save password'), class: "btn btn-success append-right-10", data: { qa_selector: 'save_password_button' }
- unless @user.password_automatically_set?
- = link_to _('I forgot my password'), reset_profile_password_path, method: :put, class: "account-btn-link"
+ = link_to _('I forgot my password'), reset_profile_password_path, method: :put
diff --git a/app/views/profiles/two_factor_auths/show.html.haml b/app/views/profiles/two_factor_auths/show.html.haml
index 5501e63e027..4a2d0a4f8ce 100644
--- a/app/views/profiles/two_factor_auths/show.html.haml
+++ b/app/views/profiles/two_factor_auths/show.html.haml
@@ -26,7 +26,7 @@
- else
%p
- help_link_start = '<a href="%{url}" target="_blank">' % { url: help_page_path('user/profile/account/two_factor_authentication') }
- - register_2fa_token = _('Install a soft token authenticator like %{free_otp_link} or Google Authenticator from your application repository and scan this QR code. More information is available in the %{help_link_start}documentation%{help_link_end}.') % { free_otp_link:'<a href="https://freeotp.github.io/">FreeOTP</a>', help_link_start:help_link_start, help_link_end:'</a>' }
+ - register_2fa_token = _('Install a soft token authenticator like %{free_otp_link} or Google Authenticator from your application repository and use that app to scan this QR code. More information is available in the %{help_link_start}documentation%{help_link_end}.') % { free_otp_link:'<a href="https://freeotp.github.io/">FreeOTP</a>', help_link_start:help_link_start, help_link_end:'</a>' }
= register_2fa_token.html_safe
.row.append-bottom-10
.col-md-4
diff --git a/app/views/projects/_archived_notice.html.haml b/app/views/projects/_archived_notice.html.haml
new file mode 100644
index 00000000000..522693ae24a
--- /dev/null
+++ b/app/views/projects/_archived_notice.html.haml
@@ -0,0 +1,5 @@
+- if project.archived?
+ .text-warning.center.prepend-top-20
+ %p
+ = icon("exclamation-triangle fw")
+ = _('Archived project! Repository and other project resources are read only')
diff --git a/app/views/projects/_remove.html.haml b/app/views/projects/_remove.html.haml
new file mode 100644
index 00000000000..6c84fbfeeb3
--- /dev/null
+++ b/app/views/projects/_remove.html.haml
@@ -0,0 +1,10 @@
+- return unless can?(current_user, :remove_project, project)
+
+.sub-section
+ %h4.danger-title= _('Remove project')
+ %p
+ %strong= _('Removing the project will delete its repository and all related resources including issues, merge requests etc.')
+ = form_tag(project_path(project), method: :delete) do
+ %p
+ %strong= _('Removed projects cannot be restored!')
+ = button_to _('Remove project'), '#', class: "btn btn-remove js-confirm-danger", data: { "confirm-danger-message" => remove_project_message(project) }
diff --git a/app/views/projects/_visibility_modal.html.haml b/app/views/projects/_visibility_modal.html.haml
new file mode 100644
index 00000000000..3ef93a40137
--- /dev/null
+++ b/app/views/projects/_visibility_modal.html.haml
@@ -0,0 +1,30 @@
+- strong_start = "<strong>".html_safe
+- strong_end = "</strong>".html_safe
+
+.modal.js-confirm-project-visiblity{ tabindex: -1 }
+ .modal-dialog
+ .modal-content
+ .modal-header
+ %h3.page-title= _('Reduce this project’s visibility?')
+ %button.close{ type: "button", "data-dismiss": "modal", "aria-label" => _('Close') }
+ %span{ "aria-hidden": true }= sprite_icon("close", size: 16)
+ .modal-body
+ %p
+ - if @project.group
+ = _("You're about to reduce the visibility of the project %{strong_start}%{project_name}%{strong_end} in %{strong_start}%{group_name}%{strong_end}.").html_safe % { project_name: @project.name, group_name: @project.group.name, strong_start: strong_start, strong_end: strong_end }
+ - else
+ = _("You're about to reduce the visibility of the project %{strong_start}%{project_name}%{strong_end}.").html_safe % { project_name: @project.name, strong_start: strong_start, strong_end: strong_end }
+ %p
+ = _('Once you confirm and press "Reduce project visibility":')
+ %ul
+ %li
+ = ("Current forks will keep their visibility level but their fork relationship with this project will be %{strong_start}removed%{strong_end}.").html_safe % { strong_start: strong_start, strong_end: strong_end }
+ %label{ for: "confirm_path_input" }
+ = ("To confirm, type %{phrase_code}").html_safe % { phrase_code: '<code class="js-confirm-danger-match">%{phrase_name}</code>'.html_safe % { phrase_name: @project.full_path } }
+ .form-group
+ = text_field_tag 'confirm_path_input', '', class: 'form-control js-confirm-danger-input qa-confirm-input'
+ .form-actions.clearfix
+ .pull-right
+ %button.btn.btn-default{ type: "button", "data-dismiss": "modal" }
+ = _('Cancel')
+ = submit_tag _('Reduce project visibility'), class: "btn btn-danger js-confirm-danger-submit qa-confirm-button", disabled: true
diff --git a/app/views/projects/artifacts/browse.html.haml b/app/views/projects/artifacts/browse.html.haml
index 6a7cb1499c5..7abac2d14e4 100644
--- a/app/views/projects/artifacts/browse.html.haml
+++ b/app/views/projects/artifacts/browse.html.haml
@@ -15,7 +15,7 @@
%li.breadcrumb-item
= link_to truncate(title, length: 40), browse_project_job_artifacts_path(@project, @build, path)
- .tree-controls
+ .tree-controls<
= link_to download_project_job_artifacts_path(@project, @build),
rel: 'nofollow', download: '', class: 'btn btn-default download' do
= sprite_icon('download')
diff --git a/app/views/projects/blob/_breadcrumb.html.haml b/app/views/projects/blob/_breadcrumb.html.haml
index a4fb5f6ba88..e611df8df2a 100644
--- a/app/views/projects/blob/_breadcrumb.html.haml
+++ b/app/views/projects/blob/_breadcrumb.html.haml
@@ -17,21 +17,19 @@
- else
= link_to title, project_tree_path(@project, tree_join(@ref, path))
- .tree-controls
+ .tree-controls<
= render 'projects/find_file_link'
+ -# only show normal/blame view links for text files
+ - if blob.readable_text?
+ - if blame
+ = link_to 'Normal view', project_blob_path(@project, @id),
+ class: 'btn'
+ - else
+ = link_to 'Blame', project_blame_path(@project, @id),
+ class: 'btn js-blob-blame-link' unless blob.empty?
- .btn-group{ role: "group" }<
- -# only show normal/blame view links for text files
- - if blob.readable_text?
- - if blame
- = link_to 'Normal view', project_blob_path(@project, @id),
- class: 'btn'
- - else
- = link_to 'Blame', project_blame_path(@project, @id),
- class: 'btn js-blob-blame-link' unless blob.empty?
+ = link_to 'History', project_commits_path(@project, @id),
+ class: 'btn'
- = link_to 'History', project_commits_path(@project, @id),
- class: 'btn'
-
- = link_to 'Permalink', project_blob_path(@project,
- tree_join(@commit.sha, @path)), class: 'btn js-data-file-blob-permalink-url'
+ = link_to 'Permalink', project_blob_path(@project,
+ tree_join(@commit.sha, @path)), class: 'btn js-data-file-blob-permalink-url'
diff --git a/app/views/projects/blob/viewers/_openapi.html.haml b/app/views/projects/blob/viewers/_openapi.html.haml
new file mode 100644
index 00000000000..ce8030cf2d2
--- /dev/null
+++ b/app/views/projects/blob/viewers/_openapi.html.haml
@@ -0,0 +1 @@
+.file-content#js-openapi-viewer{ data: { endpoint: blob_raw_path } }
diff --git a/app/views/projects/buttons/_dropdown.html.haml b/app/views/projects/buttons/_dropdown.html.haml
index bbe0a2c97fd..f1a7528065a 100644
--- a/app/views/projects/buttons/_dropdown.html.haml
+++ b/app/views/projects/buttons/_dropdown.html.haml
@@ -7,7 +7,7 @@
- show_menu = can_create_issue || can_create_project_snippet || can_push_code || create_mr_from_new_fork || merge_project
- if show_menu
- .project-action-button.dropdown.inline
+ .project-action-button.dropdown.inline<
%a.btn.dropdown-toggle.has-tooltip.qa-create-new-dropdown{ href: '#', title: _('Create new...'), 'data-toggle' => 'dropdown', 'data-container' => 'body', 'aria-label' => _('Create new...'), 'data-display' => 'static' }
= icon('plus')
= icon("caret-down")
diff --git a/app/views/projects/commits/show.html.haml b/app/views/projects/commits/show.html.haml
index e155e3758fb..3f1d44a488a 100644
--- a/app/views/projects/commits/show.html.haml
+++ b/app/views/projects/commits/show.html.haml
@@ -13,7 +13,7 @@
%ul.breadcrumb.repo-breadcrumb
= commits_breadcrumbs
- .tree-controls.d-none.d-sm-none.d-md-block
+ .tree-controls.d-none.d-sm-none.d-md-block<
- if @merge_request.present?
.control
= link_to _("View open merge request"), project_merge_request_path(@project, @merge_request), class: 'btn'
diff --git a/app/views/projects/edit.html.haml b/app/views/projects/edit.html.haml
index 328fdd0be10..1c18487f688 100644
--- a/app/views/projects/edit.html.haml
+++ b/app/views/projects/edit.html.haml
@@ -21,7 +21,9 @@
%input{ name: 'update_section', type: 'hidden', value: 'js-shared-permissions' }
%template.js-project-permissions-form-data{ type: "application/json" }= project_permissions_panel_data_json(@project)
.js-project-permissions-form
- = f.submit _('Save changes'), class: "btn btn-success", data: { qa_selector: 'visibility_features_permissions_save_button' }
+ - if show_visibility_confirm_modal?(@project)
+ = render "visibility_modal"
+ = f.submit _('Save changes'), class: "btn btn-success #{('js-confirm-danger' if show_visibility_confirm_modal?(@project))}", data: { qa_selector: 'visibility_features_permissions_save_button', check_field_name: ("project[visibility_level]" if show_visibility_confirm_modal?(@project)), check_compare_value: @project.visibility_level }
%section.qa-merge-request-settings.rspec-merge-request-settings.settings.merge-requests-feature.no-animate#js-merge-request-settings{ class: [('expanded' if expanded), ('hidden' if @project.project_feature.send(:merge_requests_access_level) == 0)] }
.settings-header
@@ -71,23 +73,7 @@
= render 'export', project: @project
- - if can? current_user, :archive_project, @project
- .sub-section
- %h4.warning-title
- - if @project.archived?
- = _('Unarchive project')
- - else
- = _('Archive project')
- - if @project.archived?
- %p= _("Unarchiving the project will restore people's ability to make changes to it. The repository can be committed to, and issues, comments and other entities can be created. <strong>Once active this project shows up in the search and on the dashboard.</strong>").html_safe
- = link_to _('Unarchive project'), unarchive_project_path(@project),
- data: { confirm: _("Are you sure that you want to unarchive this project?"), qa_selector: 'unarchive_project_link' },
- method: :post, class: "btn btn-success"
- - else
- %p= _("Archiving the project will make it entirely read-only. It is hidden from the dashboard and doesn't show up in searches. <strong>The repository cannot be committed to, and no issues, comments or other entities can be created.</strong>").html_safe
- = link_to _('Archive project'), archive_project_path(@project),
- data: { confirm: _("Are you sure that you want to archive this project?"), qa_selector: 'archive_project_link' },
- method: :post, class: "btn btn-warning"
+ = render_if_exists 'projects/settings/archive'
.sub-section.rename-repository
%h4.warning-title= _('Change path')
= render 'projects/errors'
@@ -133,14 +119,7 @@
%strong= _('Once removed, the fork relationship cannot be restored and you will no longer be able to send merge requests to the source.')
= button_to _('Remove fork relationship'), '#', class: "btn btn-remove js-confirm-danger", data: { "confirm-danger-message" => remove_fork_project_warning_message(@project) }
- - if can?(current_user, :remove_project, @project)
- .sub-section
- %h4.danger-title= _('Remove project')
- %p= _('Removing the project will delete its repository and all related resources including issues, merge requests etc.')
- = form_tag(project_path(@project), method: :delete) do
- %p
- %strong= _('Removed projects cannot be restored!')
- = button_to _('Remove project'), '#', class: "btn btn-remove js-confirm-danger", data: { "confirm-danger-message" => remove_project_message(@project) }
+ = render 'remove', project: @project
.save-project-loader.hide
.center
diff --git a/app/views/projects/environments/empty_logs.html.haml b/app/views/projects/environments/empty_logs.html.haml
deleted file mode 100644
index 602dc908b75..00000000000
--- a/app/views/projects/environments/empty_logs.html.haml
+++ /dev/null
@@ -1,14 +0,0 @@
-- page_title _('Pod logs')
-
-.row.empty-state
- .col-sm-12
- .svg-content
- = image_tag 'illustrations/operations_log_pods_empty.svg'
- .col-12
- .text-content
- %h4.text-center
- = s_('Environments|No deployed environments')
- %p.state-description.text-center
- = s_('Logs|To see the pod logs, deploy your code to an environment.')
- .text-center
- = link_to s_('Environments|Learn about environments'), help_page_path('ci/environments'), class: 'btn btn-success'
diff --git a/app/views/projects/environments/folder.html.haml b/app/views/projects/environments/folder.html.haml
index f85c57d9aa1..cd24c30e46f 100644
--- a/app/views/projects/environments/folder.html.haml
+++ b/app/views/projects/environments/folder.html.haml
@@ -1,3 +1,5 @@
-- page_title _("Environments")
+- add_to_breadcrumbs _("Environments"), project_environments_path(@project)
+- breadcrumb_title _("Folder/%{name}") % { name: @folder }
+- page_title _("Environments in %{name}") % { name: @folder }
#environments-folder-list-view{ data: { environments_data: environments_folder_list_view_data } }
diff --git a/app/views/projects/environments/show.html.haml b/app/views/projects/environments/show.html.haml
index c4c39c227c6..62b1c140794 100644
--- a/app/views/projects/environments/show.html.haml
+++ b/app/views/projects/environments/show.html.haml
@@ -5,7 +5,7 @@
- content_for :page_specific_javascripts do
= stylesheet_link_tag 'page_bundles/xterm'
-- if can?(current_user, :stop_environment, @environment)
+- if @environment.available? && can?(current_user, :stop_environment, @environment)
#stop-environment-modal.modal.fade{ tabindex: -1 }
.modal-dialog
.modal-content
@@ -40,7 +40,7 @@
= render 'projects/environments/metrics_button', environment: @environment
- if can?(current_user, :update_environment, @environment)
= link_to _('Edit'), edit_project_environment_path(@project, @environment), class: 'btn'
- - if can?(current_user, :stop_environment, @environment)
+ - if @environment.available? && can?(current_user, :stop_environment, @environment)
= button_tag class: 'btn btn-danger', type: 'button', data: { toggle: 'modal',
target: '#stop-environment-modal' } do
= sprite_icon('stop')
diff --git a/app/views/projects/hook_logs/_index.html.haml b/app/views/projects/hook_logs/_index.html.haml
index 3e54c3ca9f8..ada986dd969 100644
--- a/app/views/projects/hook_logs/_index.html.haml
+++ b/app/views/projects/hook_logs/_index.html.haml
@@ -28,7 +28,7 @@
%td.light
= time_ago_with_tooltip(hook_log.created_at)
%td
- = link_to 'View details', project_hook_hook_log_path(project, hook, hook_log)
+ = link_to 'View details', hook_log.present.details_path
= paginate hook_logs, theme: 'gitlab'
diff --git a/app/views/projects/hook_logs/show.html.haml b/app/views/projects/hook_logs/show.html.haml
index bd8ca5e7d70..a8796cd7b1c 100644
--- a/app/views/projects/hook_logs/show.html.haml
+++ b/app/views/projects/hook_logs/show.html.haml
@@ -3,7 +3,6 @@
%h4.prepend-top-0
Request details
.col-lg-9
-
- = link_to 'Resend Request', retry_project_hook_hook_log_path(@project, @hook, @hook_log), method: :post, class: "btn btn-default float-right prepend-left-10"
+ = link_to 'Resend Request', @hook_log.present.retry_path, method: :post, class: "btn btn-default float-right prepend-left-10"
= render partial: 'shared/hook_logs/content', locals: { hook_log: @hook_log }
diff --git a/app/views/projects/hooks/_index.html.haml b/app/views/projects/hooks/_index.html.haml
index 0ab7863b77c..70f2fa0e758 100644
--- a/app/views/projects/hooks/_index.html.haml
+++ b/app/views/projects/hooks/_index.html.haml
@@ -1,23 +1,10 @@
.row.prepend-top-default
.col-lg-4
- %h4.prepend-top-0
- = page_title
- %p
- #{link_to 'Webhooks', help_page_path('user/project/integrations/webhooks')} can be
- used for binding events when something is happening within the project.
+ = render 'shared/web_hooks/title_and_docs', hook: @hook
.col-lg-8.append-bottom-default
= form_for @hook, as: :hook, url: polymorphic_path([@project.namespace.becomes(Namespace), @project, :hooks]) do |f|
= render partial: 'shared/web_hooks/form', locals: { form: f, hook: @hook }
= f.submit 'Add webhook', class: 'btn btn-success'
- %hr
- %h5.prepend-top-default
- Webhooks (#{@hooks.count})
- - if @hooks.any?
- %ul.content-list
- - @hooks.each do |hook|
- = render 'project_hook', hook: hook
- - else
- %p.settings-message.text-center.append-bottom-0
- No webhooks found, add one in the form above.
+ = render 'shared/web_hooks/index', hooks: @hooks, hook_class: @hook.class
diff --git a/app/views/projects/hooks/edit.html.haml b/app/views/projects/hooks/edit.html.haml
index 57311284e11..c1fdf619eb5 100644
--- a/app/views/projects/hooks/edit.html.haml
+++ b/app/views/projects/hooks/edit.html.haml
@@ -1,19 +1,17 @@
-- page_title 'Integrations'
+- add_to_breadcrumbs _('ProjectService|Integrations'), namespace_project_settings_integrations_path
+- page_title _('Edit Project Hook')
.row.prepend-top-default
.col-lg-3
- %h4.prepend-top-0
- = page_title
- %p
- #{link_to 'Webhooks', help_page_path('user/project/integrations/webhooks')} can be
- used for binding events when something is happening within the project.
+ = render 'shared/web_hooks/title_and_docs', hook: @hook
+
.col-lg-9.append-bottom-default
= form_for [@project.namespace.becomes(Namespace), @project, @hook], as: :hook, url: project_hook_path(@project, @hook) do |f|
= render partial: 'shared/web_hooks/form', locals: { form: f, hook: @hook }
- = f.submit 'Save changes', class: 'btn btn-success'
- = render 'shared/web_hooks/test_button', triggers: ProjectHook.triggers, hook: @hook
- = link_to 'Remove', project_hook_path(@project, @hook), method: :delete, class: 'btn btn-remove float-right', data: { confirm: 'Are you sure?' }
+ %span>= f.submit 'Save changes', class: 'btn btn-success append-right-8'
+ = render 'shared/web_hooks/test_button', hook: @hook
+ = link_to _('Delete'), project_hook_path(@project, @hook), method: :delete, class: 'btn btn-remove float-right', data: { confirm: _('Are you sure?') }
%hr
diff --git a/app/views/projects/issues/_new_branch.html.haml b/app/views/projects/issues/_new_branch.html.haml
index 8d3e54dc455..eb76326602f 100644
--- a/app/views/projects/issues/_new_branch.html.haml
+++ b/app/views/projects/issues/_new_branch.html.haml
@@ -28,7 +28,7 @@
%ul#create-merge-request-dropdown.create-merge-request-dropdown-menu.dropdown-menu.dropdown-menu-right.gl-show-field-errors{ class: ("create-confidential-merge-request-dropdown-menu" if can_create_confidential_merge_request?), data: { dropdown: true } }
- if can_create_merge_request
%li.droplab-item-selected{ role: 'button', data: { value: 'create-mr', text: create_mr_text } }
- .menu-item
+ .menu-item.text-nowrap
= icon('check', class: 'icon')
- if can_create_confidential_merge_request?
= _('Create confidential merge request and branch')
diff --git a/app/views/projects/merge_requests/_awards_block.html.haml b/app/views/projects/merge_requests/_awards_block.html.haml
new file mode 100644
index 00000000000..1eab28a2ff3
--- /dev/null
+++ b/app/views/projects/merge_requests/_awards_block.html.haml
@@ -0,0 +1,5 @@
+.content-block.content-block-small.emoji-list-container.js-noteable-awards
+ = render 'award_emoji/awards_block', awardable: @merge_request, inline: true do
+ - if mr_tabs_position_enabled?
+ .ml-auto.mt-auto.mb-auto
+ = render "projects/merge_requests/discussion_filter"
diff --git a/app/views/projects/merge_requests/_description.html.haml b/app/views/projects/merge_requests/_description.html.haml
new file mode 100644
index 00000000000..354a384b647
--- /dev/null
+++ b/app/views/projects/merge_requests/_description.html.haml
@@ -0,0 +1,9 @@
+%div
+ - if @merge_request.description.present?
+ .description.qa-description{ class: can?(current_user, :update_merge_request, @merge_request) ? 'js-task-list-container' : '' }
+ .md
+ = markdown_field(@merge_request, :description)
+ %textarea.hidden.js-task-list-field
+ = @merge_request.description
+
+ = edited_time_ago_with_tooltip(@merge_request, placement: 'bottom')
diff --git a/app/views/projects/merge_requests/_discussion_filter.html.haml b/app/views/projects/merge_requests/_discussion_filter.html.haml
new file mode 100644
index 00000000000..96886661a8d
--- /dev/null
+++ b/app/views/projects/merge_requests/_discussion_filter.html.haml
@@ -0,0 +1,2 @@
+#js-vue-discussion-filter{ data: { default_filter: current_user&.notes_filter_for(@merge_request),
+ notes_filters: UserPreference.notes_filters.to_json } }
diff --git a/app/views/projects/merge_requests/_mr_box.html.haml b/app/views/projects/merge_requests/_mr_box.html.haml
index 4f09f47d795..ec78b040167 100644
--- a/app/views/projects/merge_requests/_mr_box.html.haml
+++ b/app/views/projects/merge_requests/_mr_box.html.haml
@@ -1,13 +1,6 @@
-.detail-page-description
- %h2.title.qa-title
+.detail-page-description{ class: ("py-2" if mr_tabs_position_enabled?) }
+ %h2.title.qa-title{ class: ("mb-0" if mr_tabs_position_enabled?) }
= markdown_field(@merge_request, :title)
- %div
- - if @merge_request.description.present?
- .description.qa-description{ class: can?(current_user, :update_merge_request, @merge_request) ? 'js-task-list-container' : '' }
- .md
- = markdown_field(@merge_request, :description)
- %textarea.hidden.js-task-list-field
- = @merge_request.description
-
- = edited_time_ago_with_tooltip(@merge_request, placement: 'bottom')
+ - unless mr_tabs_position_enabled?
+ = render "projects/merge_requests/description"
diff --git a/app/views/projects/merge_requests/_mr_title.html.haml b/app/views/projects/merge_requests/_mr_title.html.haml
index 92e34b3ceda..d1e8dc3a834 100644
--- a/app/views/projects/merge_requests/_mr_title.html.haml
+++ b/app/views/projects/merge_requests/_mr_title.html.haml
@@ -1,16 +1,18 @@
+- @no_breadcrumb_border = true
- can_update_merge_request = can?(current_user, :update_merge_request, @merge_request)
- can_reopen_merge_request = can?(current_user, :reopen_merge_request, @merge_request)
+- state_human_name, state_icon_name = state_name_with_icon(@merge_request)
- if @merge_request.closed_without_fork?
.alert.alert-danger
The source project of this merge request has been removed.
-.detail-page-header
+.detail-page-header{ class: ("border-bottom-0 pt-0 pb-0" if mr_tabs_position_enabled?) }
.detail-page-header-body
.issuable-status-box.status-box{ class: status_box_class(@merge_request) }
- = sprite_icon(@merge_request.state_icon_name, size: 16, css_class: 'd-block d-sm-none')
+ = sprite_icon(state_icon_name, size: 16, css_class: 'd-block d-sm-none')
%span.d-none.d-sm-block
- = @merge_request.state_human_name
+ = state_human_name
.issuable-meta
- if @merge_request.discussion_locked?
diff --git a/app/views/projects/merge_requests/_widget.html.haml b/app/views/projects/merge_requests/_widget.html.haml
new file mode 100644
index 00000000000..3fe6f0a6640
--- /dev/null
+++ b/app/views/projects/merge_requests/_widget.html.haml
@@ -0,0 +1,14 @@
+- if @merge_request.source_branch_exists?
+ = render "projects/merge_requests/how_to_merge"
+
+= javascript_tag nonce: true do
+ :plain
+ window.gl = window.gl || {};
+ window.gl.mrWidgetData = #{serialize_issuable(@merge_request, serializer: 'widget', issues_links: true)}
+
+ window.gl.mrWidgetData.squash_before_merge_help_path = '#{help_page_path("user/project/merge_requests/squash_and_merge")}';
+ window.gl.mrWidgetData.troubleshooting_docs_path = '#{help_page_path('user/project/merge_requests/reviewing_and_managing_merge_requests.md', anchor: 'troubleshooting')}';
+ window.gl.mrWidgetData.security_approvals_help_page_path = '#{help_page_path('user/application_security/index.html', anchor: 'security-approvals-in-merge-requests-ultimate')}';
+ window.gl.mrWidgetData.eligible_approvers_docs_path = '#{help_page_path('user/project/merge_requests/merge_request_approvals', anchor: 'eligible-approvers')}';
+
+#js-vue-mr-widget.mr-widget
diff --git a/app/views/projects/merge_requests/show.html.haml b/app/views/projects/merge_requests/show.html.haml
index dee6bc8bae4..310cd355d22 100644
--- a/app/views/projects/merge_requests/show.html.haml
+++ b/app/views/projects/merge_requests/show.html.haml
@@ -14,56 +14,54 @@
.merge-request-details.issuable-details{ data: { id: @merge_request.project.id } }
= render "projects/merge_requests/mr_box"
- - if @merge_request.source_branch_exists?
- = render "projects/merge_requests/how_to_merge"
-
- = javascript_tag nonce: true do
- :plain
- window.gl = window.gl || {};
- window.gl.mrWidgetData = #{serialize_issuable(@merge_request, serializer: 'widget', issues_links: true)}
-
- window.gl.mrWidgetData.squash_before_merge_help_path = '#{help_page_path("user/project/merge_requests/squash_and_merge")}';
- window.gl.mrWidgetData.troubleshooting_docs_path = '#{help_page_path('user/project/merge_requests/index.md', anchor: 'troubleshooting')}';
- window.gl.mrWidgetData.security_approvals_help_page_path = '#{help_page_path('user/application_security/index.html', anchor: 'security-approvals-in-merge-requests-ultimate')}';
-
- #js-vue-mr-widget.mr-widget
-
- .content-block.content-block-small.emoji-list-container.js-noteable-awards
- = render 'award_emoji/awards_block', awardable: @merge_request, inline: true
+ - unless mr_tabs_position_enabled?
+ = render "projects/merge_requests/widget"
+ = render "projects/merge_requests/awards_block"
.merge-request-tabs-holder{ class: ("js-tabs-affix" unless ENV['RAILS_ENV'] == 'test') }
.merge-request-tabs-container
%ul.merge-request-tabs.nav-tabs.nav.nav-links
- %li.notes-tab{ data: { qa_selector: 'notes_tab'} }
+ = render "projects/merge_requests/tabs/tab", class: "notes-tab", qa_selector: "notes_tab" do
= tab_link_for @merge_request, :show, force_link: @commit.present? do
- = _("Discussion")
+ - if mr_tabs_position_enabled?
+ = _("Overview")
+ - else
+ = _("Discussion")
%span.badge.badge-pill= @merge_request.related_notes.user.count
- if @merge_request.source_project
- %li.commits-tab
+ = render "projects/merge_requests/tabs/tab", name: "commits", class: "commits-tab" do
= tab_link_for @merge_request, :commits do
= _("Commits")
%span.badge.badge-pill= @commits_count
- if number_of_pipelines.nonzero?
- %li.pipelines-tab
+ = render "projects/merge_requests/tabs/tab", name: "pipelines", class: "pipelines-tab" do
= tab_link_for @merge_request, :pipelines do
= _("Pipelines")
%span.badge.badge-pill.js-pipelines-mr-count= number_of_pipelines
- %li.diffs-tab.qa-diffs-tab
+ = render "projects/merge_requests/tabs/tab", name: "diffs", class: "diffs-tab qa-diffs-tab", id: "diffs-tab" do
= tab_link_for @merge_request, :diffs do
= _("Changes")
%span.badge.badge-pill= @merge_request.diff_size
+ - if mr_tabs_position_enabled? && show_tabs_feature_highlight?
+ .js-tabs-feature-highlight{ data: { dismiss_endpoint: user_callouts_path, feature_id: UserCalloutsHelper::TABS_POSITION_HIGHLIGHT } }
.d-flex.flex-wrap.align-items-center.justify-content-lg-end
- #js-vue-discussion-filter{ data: { default_filter: current_user&.notes_filter_for(@merge_request),
- notes_filters: UserPreference.notes_filters.to_json } }
+ - unless mr_tabs_position_enabled?
+ = render "projects/merge_requests/discussion_filter"
#js-vue-discussion-counter
.tab-content#diff-notes-app
#js-diff-file-finder
- #notes.notes.tab-pane.voting_notes
+ = render "projects/merge_requests/tabs/pane", id: "notes", class: "notes voting_notes" do
.row
%section.col-md-12
%script.js-notes-data{ type: "application/json" }= initial_notes_data(true).to_json.html_safe
.issuable-discussion.js-vue-notes-event
+ - if mr_tabs_position_enabled?
+ - if @merge_request.description.present?
+ .detail-page-description
+ = render "projects/merge_requests/description"
+ = render "projects/merge_requests/widget"
+ = render "projects/merge_requests/awards_block"
#js-vue-mr-discussions{ data: { notes_data: notes_data(@merge_request).to_json,
noteable_data: serialize_issuable(@merge_request, serializer: 'noteable'),
noteable_type: 'MergeRequest',
@@ -71,13 +69,15 @@
help_page_path: suggest_changes_help_path,
current_user_data: @current_user_data} }
- #commits.commits.tab-pane
+ = render "projects/merge_requests/tabs/pane", name: "commits", id: "commits", class: "commits" do
-# This tab is always loaded via AJAX
- #pipelines.pipelines.tab-pane
+ = render "projects/merge_requests/tabs/pane", name: "pipelines", id: "pipelines", class: "pipelines" do
- if number_of_pipelines.nonzero?
= render 'projects/commit/pipelines_list', disable_initialization: true, endpoint: pipelines_project_merge_request_path(@project, @merge_request)
- #js-diffs-app.diffs.tab-pane{ data: { "is-locked" => @merge_request.discussion_locked?,
+ = render "projects/merge_requests/tabs/pane", name: "diffs", id: "js-diffs-app", class: "diffs", data: { "is-locked": @merge_request.discussion_locked?,
endpoint: diffs_project_merge_request_path(@project, @merge_request, 'json', request.query_parameters),
+ endpoint_metadata: diffs_metadata_project_json_merge_request_path(@project, @merge_request, 'json', request.query_parameters),
+ endpoint_batch: diffs_batch_project_json_merge_request_path(@project, @merge_request, 'json', request.query_parameters),
help_page_path: suggest_changes_help_path,
current_user_data: @current_user_data,
project_path: project_path(@merge_request.project),
@@ -85,7 +85,7 @@
is_fluid_layout: fluid_layout.to_s,
dismiss_endpoint: user_callouts_path,
show_suggest_popover: show_suggest_popover?.to_s,
- show_whitespace_default: @show_whitespace_default.to_s } }
+ show_whitespace_default: @show_whitespace_default.to_s }
.mr-loading-status
= spinner
diff --git a/app/views/projects/merge_requests/tabs/_pane.html.haml b/app/views/projects/merge_requests/tabs/_pane.html.haml
new file mode 100644
index 00000000000..1a88d5f5134
--- /dev/null
+++ b/app/views/projects/merge_requests/tabs/_pane.html.haml
@@ -0,0 +1,7 @@
+- tab_name = local_assigns.fetch(:name, nil)
+- tab_id = local_assigns.fetch(:id, nil)
+- tab_class = local_assigns.fetch(:class, nil)
+- tab_data = local_assigns.fetch(:data, nil)
+
+.tab-pane{ id: tab_id, class: tab_class, style: ("display: block" if params[:tab] == tab_name), data: tab_data }
+ = yield
diff --git a/app/views/projects/merge_requests/tabs/_tab.html.haml b/app/views/projects/merge_requests/tabs/_tab.html.haml
new file mode 100644
index 00000000000..dcd8db90509
--- /dev/null
+++ b/app/views/projects/merge_requests/tabs/_tab.html.haml
@@ -0,0 +1,7 @@
+- tab_name = local_assigns.fetch(:name, nil)
+- tab_class = local_assigns.fetch(:class, nil)
+- qa_selector = local_assigns.fetch(:qa_selector, nil)
+- id = local_assigns.fetch(:id, nil)
+
+%li{ class: [tab_class, ("active" if params[:tab] == tab_name)], id: id, data: { qa_selector: qa_selector } }
+ = yield
diff --git a/app/views/projects/pages/_list.html.haml b/app/views/projects/pages/_list.html.haml
index 4676c7399f1..6d196b06135 100644
--- a/app/views/projects/pages/_list.html.haml
+++ b/app/views/projects/pages/_list.html.haml
@@ -21,11 +21,11 @@
%span.badge.badge-danger
= s_('GitLabPages|Expired')
%div
- = link_to s_('GitLabPages|Edit'), edit_project_pages_domain_path(@project, domain), class: "btn btn-sm btn-grouped btn-success btn-inverted"
+ = link_to s_('GitLabPages|Edit'), project_pages_domain_path(@project, domain), class: "btn btn-sm btn-grouped btn-success btn-inverted"
= link_to s_('GitLabPages|Remove'), project_pages_domain_path(@project, domain), data: { confirm: s_('GitLabPages|Are you sure?')}, method: :delete, class: "btn btn-remove btn-sm btn-grouped"
- if verification_enabled && domain.unverified?
%li.list-group-item.bs-callout-warning
- - details_link_start = "<a href='#{edit_project_pages_domain_path(@project, domain)}'>".html_safe
+ - details_link_start = "<a href='#{project_pages_domain_path(@project, domain)}'>".html_safe
- details_link_end = '</a>'.html_safe
= s_('GitLabPages|%{domain} is not verified. To learn how to verify ownership, visit your %{link_start}domain details%{link_end}.').html_safe % { domain: domain.domain,
link_start: details_link_start,
diff --git a/app/views/projects/pages_domains/edit.html.haml b/app/views/projects/pages_domains/edit.html.haml
deleted file mode 100644
index a08be65d7e4..00000000000
--- a/app/views/projects/pages_domains/edit.html.haml
+++ /dev/null
@@ -1,21 +0,0 @@
-- add_to_breadcrumbs _("Pages"), project_pages_path(@project)
-- breadcrumb_title @domain.domain
-- page_title @domain.domain
-
-- verification_enabled = Gitlab::CurrentSettings.pages_domain_verification_enabled?
-
-- if verification_enabled && @domain.unverified?
- = content_for :flash_message do
- .alert.alert-warning
- .container-fluid.container-limited
- = _("This domain is not verified. You will need to verify ownership before access is enabled.")
-
-%h3.page-title
- = _('Pages Domain')
-= render 'projects/pages_domains/helper_text'
-%div
- = form_for [@project.namespace.becomes(Namespace), @project, @domain], html: { class: 'fieldset-form' } do |f|
- = render 'form', { f: f }
- .form-actions.d-flex.justify-content-between
- = f.submit _('Save Changes'), class: "btn btn-success"
- = link_to _('Cancel'), project_pages_path(@project), class: 'btn btn-default btn-inverse'
diff --git a/app/views/projects/pages_domains/show.html.haml b/app/views/projects/pages_domains/show.html.haml
index 8eec3d51835..a08be65d7e4 100644
--- a/app/views/projects/pages_domains/show.html.haml
+++ b/app/views/projects/pages_domains/show.html.haml
@@ -1,7 +1,6 @@
- add_to_breadcrumbs _("Pages"), project_pages_path(@project)
- breadcrumb_title @domain.domain
-- page_title "#{@domain.domain}", _('Pages Domains')
-- dns_record = "#{@domain.domain} CNAME #{@domain.project.pages_subdomain}.#{Settings.pages.host}."
+- page_title @domain.domain
- verification_enabled = Gitlab::CurrentSettings.pages_domain_verification_enabled?
@@ -11,51 +10,12 @@
.container-fluid.container-limited
= _("This domain is not verified. You will need to verify ownership before access is enabled.")
-%h3.page-title.with-button
- = link_to _('Edit'), edit_project_pages_domain_path(@project, @domain), class: 'btn btn-success float-right'
- = _("Pages Domain")
-
-.table-holder
- %table.table
- %tr
- %td
- = _("Domain")
- %td
- = external_link(@domain.url, @domain.url)
- %tr
- %td
- = _("DNS")
- %td
- .input-group
- = text_field_tag :domain_dns, dns_record , class: "monospace js-select-on-focus form-control", readonly: true
- .input-group-append
- = clipboard_button(target: '#domain_dns', class: 'btn-default input-group-text d-none d-sm-block')
- %p.form-text.text-muted
- = _("To access this domain create a new DNS record")
-
- - if verification_enabled
- - verification_record = "#{@domain.verification_domain} TXT #{@domain.keyed_verification_code}"
- %tr
- %td
- = _("Verification status")
- %td
- = form_tag verify_project_pages_domain_path(@project, @domain) do
- .status-badge
- - text, status = @domain.unverified? ? [_('Unverified'), 'badge-danger'] : [_('Verified'), 'badge-success']
- .badge{ class: status }
- = text
- %button.btn.has-tooltip{ type: "submit", data: { container: 'body' }, title: _("Retry verification") }
- = sprite_icon('redo')
- .input-group
- = text_field_tag :domain_verification, verification_record, class: "monospace js-select-on-focus form-control", readonly: true
- .input-group-append
- = clipboard_button(target: '#domain_verification', class: 'btn-default d-none d-sm-block')
- %p.form-text.text-muted
- - link_to_help = link_to(_('verify ownership'), help_page_path('user/project/pages/custom_domains_ssl_tls_certification/index.md', anchor: '4-verify-the-domains-ownership'))
- = _("To %{link_to_help} of your domain, add the above key to a TXT record within to your DNS configuration.").html_safe % { link_to_help: link_to_help }
-
- %tr
- %td
- = _("Certificate")
- %td
- = render 'lets_encrypt_callout', auto_ssl_available_and_enabled: false
+%h3.page-title
+ = _('Pages Domain')
+= render 'projects/pages_domains/helper_text'
+%div
+ = form_for [@project.namespace.becomes(Namespace), @project, @domain], html: { class: 'fieldset-form' } do |f|
+ = render 'form', { f: f }
+ .form-actions.d-flex.justify-content-between
+ = f.submit _('Save Changes'), class: "btn btn-success"
+ = link_to _('Cancel'), project_pages_path(@project), class: 'btn btn-default btn-inverse'
diff --git a/app/views/projects/pipelines/_info.html.haml b/app/views/projects/pipelines/_info.html.haml
index 4eec81c9125..ce6ae765de9 100644
--- a/app/views/projects/pipelines/_info.html.haml
+++ b/app/views/projects/pipelines/_info.html.haml
@@ -20,6 +20,11 @@
.well-segment.qa-pipeline-badges
.icon-container
= sprite_icon('flag')
+ - if @pipeline.child?
+ %span.js-pipeline-child.badge.badge-primary.has-tooltip{ title: s_("Pipelines|This is a child pipeline within the parent pipeline") }
+ = s_('Pipelines|Child pipeline')
+ = surround '(', ')' do
+ = link_to s_('Pipelines|parent'), pipeline_path(@pipeline.triggered_by_pipeline), class: 'text-white text-underline'
- if @pipeline.latest?
%span.js-pipeline-url-latest.badge.badge-success.has-tooltip{ title: _("Latest pipeline for the most recent commit on this branch") }
latest
diff --git a/app/views/projects/registry/settings/_index.haml b/app/views/projects/registry/settings/_index.haml
new file mode 100644
index 00000000000..e1eed93664e
--- /dev/null
+++ b/app/views/projects/registry/settings/_index.haml
@@ -0,0 +1,2 @@
+#js-registry-settings{ data: { registry_settings_endpoint: '',
+ help_page_path: help_page_path('user/project/operations/linking_to_an_external_dashboard') } }
diff --git a/app/views/projects/services/edit.html.haml b/app/views/projects/services/edit.html.haml
index 1e7903535c6..e3e8a312431 100644
--- a/app/views/projects/services/edit.html.haml
+++ b/app/views/projects/services/edit.html.haml
@@ -1,8 +1,10 @@
- breadcrumb_title @service.title
- page_title @service.title, s_("ProjectService|Services")
- add_to_breadcrumbs(s_("ProjectService|Settings"), edit_project_path(@project))
-- add_to_breadcrumbs(s_("ProjectService|Integrations"), namespace_project_settings_integrations_path)
+- add_to_breadcrumbs(s_("ProjectService|Integrations"), project_settings_integrations_path(@project))
= render 'deprecated_message' if @service.deprecation_message
= render 'form'
+- if @web_hook_logs
+ = render partial: 'projects/hook_logs/index', locals: { hook: @service.service_hook, hook_logs: @web_hook_logs, project: @project }
diff --git a/app/views/projects/settings/_archive.html.haml b/app/views/projects/settings/_archive.html.haml
new file mode 100644
index 00000000000..3307c3775ec
--- /dev/null
+++ b/app/views/projects/settings/_archive.html.haml
@@ -0,0 +1,18 @@
+- return unless can?(current_user, :archive_project, @project)
+
+.sub-section
+ %h4.warning-title
+ - if @project.archived?
+ = _('Unarchive project')
+ - else
+ = _('Archive project')
+ - if @project.archived?
+ %p= _("Unarchiving the project will restore people's ability to make changes to it. The repository can be committed to, and issues, comments, and other entities can be created. %{strong_start}Once active, this project shows up in the search and on the dashboard.%{strong_end}").html_safe % { strong_start: '<strong>'.html_safe, strong_end: '</strong>'.html_safe }
+ = link_to _('Unarchive project'), unarchive_project_path(@project),
+ data: { confirm: _("Are you sure that you want to unarchive this project?"), qa_selector: 'unarchive_project_link' },
+ method: :post, class: "btn btn-success"
+ - else
+ %p= _("Archiving the project will make it entirely read only. It is hidden from the dashboard and doesn't show up in searches. %{strong_start}The repository cannot be committed to, and no issues, comments, or other entities can be created.%{strong_end}").html_safe % { strong_start: '<strong>'.html_safe, strong_end: '</strong>'.html_safe }
+ = link_to _('Archive project'), archive_project_path(@project),
+ data: { confirm: _("Are you sure that you want to archive this project?"), qa_selector: 'archive_project_link' },
+ method: :post, class: "btn btn-warning"
diff --git a/app/views/projects/settings/ci_cd/_form.html.haml b/app/views/projects/settings/ci_cd/_form.html.haml
index ea815be23c1..a72179f40ad 100644
--- a/app/views/projects/settings/ci_cd/_form.html.haml
+++ b/app/views/projects/settings/ci_cd/_form.html.haml
@@ -55,7 +55,7 @@
= f.text_field :ci_config_path, class: 'form-control', placeholder: '.gitlab-ci.yml'
%p.form-text.text-muted
= _("The path to the CI configuration file. Defaults to <code>.gitlab-ci.yml</code>").html_safe
- = link_to icon('question-circle'), help_page_path('user/project/pipelines/settings', anchor: 'custom-ci-config-path'), target: '_blank'
+ = link_to icon('question-circle'), help_page_path('user/project/pipelines/settings', anchor: 'custom-ci-configuration-path'), target: '_blank'
%hr
.form-group
diff --git a/app/views/projects/settings/ci_cd/show.html.haml b/app/views/projects/settings/ci_cd/show.html.haml
index 862db23e856..38483f599b7 100644
--- a/app/views/projects/settings/ci_cd/show.html.haml
+++ b/app/views/projects/settings/ci_cd/show.html.haml
@@ -55,6 +55,18 @@
%button.btn.js-settings-toggle{ type: 'button' }
= expanded ? _('Collapse') : _('Expand')
%p
- = _("Triggers can force a specific branch or tag to get rebuilt with an API call. These tokens will impersonate their associated user including their access to projects and their project permissions.")
+ = _("Triggers can force a specific branch or tag to get rebuilt with an API call. These tokens will impersonate their associated user including their access to projects and their project permissions.")
.settings-content
= render 'projects/triggers/index'
+
+- if Feature.enabled?(:registry_retention_policies_settings, @project)
+ %section.settings.no-animate#js-registry-polcies{ class: ('expanded' if expanded) }
+ .settings-header
+ %h4
+ = _("Container Registry tag expiration policies")
+ %button.btn.js-settings-toggle{ type: 'button' }
+ = expanded ? _('Collapse') : _('Expand')
+ %p
+ = _("Expiration policies for the Container Registry are a perfect solution for keeping the Registry space down while still enjoying the full power of GitLab CI/CD.")
+ .settings-content
+ = render 'projects/registry/settings/index'
diff --git a/app/views/projects/settings/integrations/_project_hook.html.haml b/app/views/projects/settings/integrations/_project_hook.html.haml
deleted file mode 100644
index ef445f2e139..00000000000
--- a/app/views/projects/settings/integrations/_project_hook.html.haml
+++ /dev/null
@@ -1,16 +0,0 @@
-%li
- .row
- .col-md-8.col-lg-7
- %strong.light-header= hook.url
- %div
- - ProjectHook.triggers.each_value do |event|
- - if hook.public_send(event)
- %span.badge.badge-gray.deploy-project-label= event.to_s.titleize
- .col-md-4.col-lg-5.text-right-lg.prepend-top-5
- %span.append-right-10.inline
- #{_("SSL Verification")}: #{hook.enable_ssl_verification ? _('enabled') : _('disabled')}
- = link_to _('Edit'), edit_project_hook_path(@project, hook), class: 'btn btn-sm'
- = render 'shared/web_hooks/test_button', triggers: ProjectHook.triggers, hook: hook, button_class: 'btn-sm'
- = link_to project_hook_path(@project, hook), data: { confirm: _('Are you sure?') }, method: :delete, class: 'btn btn-transparent' do
- %span.sr-only= _("Remove")
- = icon('trash')
diff --git a/app/views/projects/show.html.haml b/app/views/projects/show.html.haml
index c5653c3dd5a..8f13806e8cd 100644
--- a/app/views/projects/show.html.haml
+++ b/app/views/projects/show.html.haml
@@ -18,11 +18,8 @@
- if can?(current_user, :download_code, @project) && @project.repository_languages.present?
= repository_languages_bar(@project.repository_languages)
- - if @project.archived?
- .text-warning.center.prepend-top-20
- %p
- = icon("exclamation-triangle fw")
- #{ _('Archived project! Repository and other project resources are read-only') }
+ = render "archived_notice", project: @project
+ = render_if_exists "projects/marked_for_deletion_notice", project: @project
- view_path = @project.default_view
diff --git a/app/views/projects/snippets/_actions.html.haml b/app/views/projects/snippets/_actions.html.haml
index ea963510a68..29bad50579c 100644
--- a/app/views/projects/snippets/_actions.html.haml
+++ b/app/views/projects/snippets/_actions.html.haml
@@ -4,7 +4,7 @@
- if can?(current_user, :update_project_snippet, @snippet)
= link_to edit_project_snippet_path(@project, @snippet), class: "btn btn-grouped" do
= _('Edit')
- - if can?(current_user, :update_project_snippet, @snippet)
+ - if can?(current_user, :admin_project_snippet, @snippet)
= link_to project_snippet_path(@project, @snippet), method: :delete, data: { confirm: _("Are you sure?") }, class: "btn btn-grouped btn-inverted btn-remove", title: _('Delete Snippet') do
= _('Delete')
- if can?(current_user, :create_project_snippet, @project)
@@ -23,7 +23,7 @@
%li
= link_to new_project_snippet_path(@project), title: _("New snippet") do
= _('New snippet')
- - if can?(current_user, :update_project_snippet, @snippet)
+ - if can?(current_user, :admin_project_snippet, @snippet)
%li
= link_to project_snippet_path(@project, @snippet), method: :delete, data: { confirm: _("Are you sure?") }, title: _('Delete Snippet') do
= _('Delete')
diff --git a/app/views/projects/snippets/index.html.haml b/app/views/projects/snippets/index.html.haml
index 7682d01a5a1..0ce18d83d57 100644
--- a/app/views/projects/snippets/index.html.haml
+++ b/app/views/projects/snippets/index.html.haml
@@ -8,8 +8,7 @@
- if can?(current_user, :create_project_snippet, @project)
.nav-controls
- - if can?(current_user, :create_project_snippet, @project)
- = link_to _("New snippet"), new_project_snippet_path(@project), class: "btn btn-success", title: _("New snippet")
+ = link_to _("New snippet"), new_project_snippet_path(@project), class: "btn btn-success", title: _("New snippet")
= render 'shared/snippets/list'
- else
diff --git a/app/views/projects/snippets/show.html.haml b/app/views/projects/snippets/show.html.haml
index f495b4eaf30..768e4422206 100644
--- a/app/views/projects/snippets/show.html.haml
+++ b/app/views/projects/snippets/show.html.haml
@@ -3,13 +3,16 @@
- breadcrumb_title @snippet.to_reference
- page_title "#{@snippet.title} (#{@snippet.to_reference})", _("Snippets")
-= render 'shared/snippets/header'
+- if Feature.enabled?(:snippets_vue)
+ #js-snippet-view{ data: {'qa-selector': 'snippet_view', 'snippet-gid': @snippet.to_global_id} }
+- else
+ = render 'shared/snippets/header'
-.project-snippets
- %article.file-holder.snippet-file-content
- = render 'shared/snippets/blob'
+ .project-snippets
+ %article.file-holder.snippet-file-content
+ = render 'shared/snippets/blob'
- .row-content-block.top-block.content-component-block
- = render 'award_emoji/awards_block', awardable: @snippet, inline: true
+ .row-content-block.top-block.content-component-block
+ = render 'award_emoji/awards_block', awardable: @snippet, inline: true
- #notes.limited-width-notes= render "shared/notes/notes_with_form", :autocomplete => true
+ #notes.limited-width-notes= render "shared/notes/notes_with_form", :autocomplete => true
diff --git a/app/views/projects/stage/_stage.html.haml b/app/views/projects/stage/_stage.html.haml
index f93994bebe3..387c8fb3234 100644
--- a/app/views/projects/stage/_stage.html.haml
+++ b/app/views/projects/stage/_stage.html.haml
@@ -1,3 +1,5 @@
+- stage = stage.present(current_user: current_user)
+
%tr
%th{ colspan: 10 }
%strong
@@ -6,8 +8,8 @@
= ci_icon_for_status(stage.status)
&nbsp;
= stage.name.titleize
-= render stage.statuses.latest_ordered, stage: false, ref: false, pipeline_link: false, allow_retry: true
-= render stage.statuses.retried_ordered, stage: false, ref: false, pipeline_link: false, retried: true
+= render stage.latest_ordered_statuses, stage: false, ref: false, pipeline_link: false, allow_retry: true
+= render stage.retried_ordered_statuses, stage: false, ref: false, pipeline_link: false, retried: true
%tr
%td{ colspan: 10 }
&nbsp;
diff --git a/app/views/projects/tags/_tag.atom.builder b/app/views/projects/tags/_tag.atom.builder
index 60d4b21b9d1..e4b2428d267 100644
--- a/app/views/projects/tags/_tag.atom.builder
+++ b/app/views/projects/tags/_tag.atom.builder
@@ -7,7 +7,7 @@ if commit
xml.id tag_url
xml.link href: tag_url
xml.title truncate(tag.name, length: 80)
- xml.summary strip_gpg_signature(tag.message)
+ xml.summary strip_signature(tag.message)
xml.content markdown_field(release, :description), type: 'html'
xml.updated release.updated_at.xmlschema if release
xml.media :thumbnail, width: '40', height: '40', url: image_url(avatar_icon_for_email(commit.author_email))
diff --git a/app/views/projects/tags/_tag.html.haml b/app/views/projects/tags/_tag.html.haml
index c7bd0262c54..75805192a61 100644
--- a/app/views/projects/tags/_tag.html.haml
+++ b/app/views/projects/tags/_tag.html.haml
@@ -1,7 +1,7 @@
- commit = @repository.commit(tag.dereferenced_target)
- release = @releases.find { |release| release.tag == tag.name }
-%li.flex-row
- .row-main-content.str-truncated
+%li.flex-row.allow-wrap
+ .row-main-content
= icon('tag')
= link_to tag.name, project_tag_path(@project, tag.name), class: 'item-title ref-name prepend-left-4'
@@ -11,7 +11,7 @@
- if tag.message.present?
&nbsp;
- = strip_gpg_signature(tag.message)
+ = strip_signature(tag.message)
- if commit
.block-truncated
@@ -26,7 +26,7 @@
= _("Release")
= link_to release.name, project_releases_path(@project, anchor: release.tag), class: 'tag-release-link'
- if release.description.present?
- .description.md.prepend-top-default
+ .md.prepend-top-default
= markdown_field(release, :description)
.row-fixed-content.controls.flex-row
diff --git a/app/views/projects/tags/show.html.haml b/app/views/projects/tags/show.html.haml
index 417cd7a8fee..8086d47479d 100644
--- a/app/views/projects/tags/show.html.haml
+++ b/app/views/projects/tags/show.html.haml
@@ -1,3 +1,7 @@
+- user = user_email = nil
+- if @tag.tagger
+ - user_email = @tag.tagger.email
+ - user = User.find_by_any_email(user_email)
- add_to_breadcrumbs s_('TagsPage|Tags'), project_tags_path(@project)
- breadcrumb_title @tag.name
- page_title @tag.name, s_('TagsPage|Tags')
@@ -11,6 +15,24 @@
- if protected_tag?(@project, @tag)
%span.badge.badge-success
= s_('TagsPage|protected')
+
+ - if user
+ = link_to user_path(user) do
+ %div
+ = user_avatar_without_link(user: user, size: 32, css_class: "mt-1 mb-1")
+
+ %div
+ %strong= user.name
+ %div= user.to_reference
+
+ - elsif user_email
+ = mail_to user_email do
+ %div
+ = user_avatar_without_link(user_email: user_email, size: 32, css_class: "mt-1 mb-1")
+
+ %div{ :class => "clearfix" }
+ %strong= user_email
+
- if @commit
= render 'projects/branches/commit', commit: @commit, project: @project
- else
@@ -33,7 +55,7 @@
- if @tag.message.present?
%pre.wrap
- = strip_gpg_signature(@tag.message)
+ = strip_signature(@tag.message)
.append-bottom-default.prepend-top-default
- if @release.description.present?
diff --git a/app/views/projects/tree/_readme.html.haml b/app/views/projects/tree/_readme.html.haml
index fef019e1b69..3e3804ae204 100644
--- a/app/views/projects/tree/_readme.html.haml
+++ b/app/views/projects/tree/_readme.html.haml
@@ -1,9 +1,10 @@
- if readme.rich_viewer
%article.file-holder.readme-holder{ id: 'readme', class: [("limited-width-container" unless fluid_layout), ("js-show-on-root" if vue_file_list_enabled?)] }
- .js-file-title.file-title
- = blob_icon readme.mode, readme.name
- = link_to project_blob_path(@project, tree_join(@ref, readme.path)) do
- %strong
- = readme.name
+ .js-file-title.file-title-flex-parent
+ .file-header-content
+ = blob_icon readme.mode, readme.name
+ = link_to project_blob_path(@project, tree_join(@ref, readme.path)) do
+ %strong
+ = readme.name
= render 'projects/blob/viewer', viewer: readme.rich_viewer, viewer_url: project_blob_path(@project, tree_join(@ref, readme.path), viewer: :rich, format: :json)
diff --git a/app/views/projects/tree/_tree_header.html.haml b/app/views/projects/tree/_tree_header.html.haml
index 127734ddfd7..2d987744dfd 100644
--- a/app/views/projects/tree/_tree_header.html.haml
+++ b/app/views/projects/tree/_tree_header.html.haml
@@ -75,7 +75,7 @@
= link_to new_project_tag_path(@project) do
#{ _('New tag') }
-.tree-controls
+.tree-controls<
= render_if_exists 'projects/tree/lock_link'
- if vue_file_list_enabled?
#js-tree-history-link.d-inline-block{ data: { history_link: project_commits_path(@project, @ref) } }
@@ -85,20 +85,19 @@
= render 'projects/find_file_link'
- if can_create_mr_from_fork
- = succeed " " do
- - if can_collaborate || current_user&.already_forked?(@project)
- - if vue_file_list_enabled?
- #js-tree-web-ide-link.d-inline-block
- - else
- = link_to ide_edit_path(@project, @ref, @path), class: 'btn btn-default qa-web-ide-button' do
- = _('Web IDE')
+ - if can_collaborate || current_user&.already_forked?(@project)
+ - if vue_file_list_enabled?
+ #js-tree-web-ide-link.d-inline-block
- else
- = link_to '#modal-confirm-fork', class: 'btn btn-default qa-web-ide-button', data: { target: '#modal-confirm-fork', toggle: 'modal'} do
+ = link_to ide_edit_path(@project, @ref, @path), class: 'btn btn-default qa-web-ide-button' do
= _('Web IDE')
- = render 'shared/confirm_fork_modal', fork_path: ide_fork_and_edit_path(@project, @ref, @path)
+ - else
+ = link_to '#modal-confirm-fork', class: 'btn btn-default qa-web-ide-button', data: { target: '#modal-confirm-fork', toggle: 'modal'} do
+ = _('Web IDE')
+ = render 'shared/confirm_fork_modal', fork_path: ide_fork_and_edit_path(@project, @ref, @path)
- if show_xcode_link?(@project)
- .project-action-button.project-xcode.inline
+ .project-action-button.project-xcode.inline<
= render "projects/buttons/xcode_link"
= render 'projects/buttons/download', project: @project, ref: @ref
diff --git a/app/views/search/_category.html.haml b/app/views/search/_category.html.haml
index 84198489e41..255a62d0d06 100644
--- a/app/views/search/_category.html.haml
+++ b/app/views/search/_category.html.haml
@@ -27,7 +27,7 @@
= search_filter_link 'snippet_blobs', _("Snippet Contents"), search: { snippets: true, group_id: nil, project_id: nil }
= search_filter_link 'snippet_titles', _("Titles and Filenames"), search: { snippets: true, group_id: nil, project_id: nil }
- else
- = search_filter_link 'projects', _("Projects")
+ = search_filter_link 'projects', _("Projects"), data: { qa_selector: 'projects_tab' }
= search_filter_link 'issues', _("Issues")
= search_filter_link 'merge_requests', _("Merge requests")
= search_filter_link 'milestones', _("Milestones")
diff --git a/app/views/search/results/_snippet_blob.html.haml b/app/views/search/results/_snippet_blob.html.haml
index 37f4efee9d2..0b114bf67ee 100644
--- a/app/views/search/results/_snippet_blob.html.haml
+++ b/app/views/search/results/_snippet_blob.html.haml
@@ -1,7 +1,7 @@
- snippet_blob = chunk_snippet(snippet_blob, @search_term)
- snippet = snippet_blob[:snippet_object]
- snippet_chunks = snippet_blob[:snippet_chunks]
-- snippet_path = reliable_snippet_path(snippet)
+- snippet_path = gitlab_snippet_path(snippet)
.search-result-row
%span
diff --git a/app/views/search/results/_snippet_title.html.haml b/app/views/search/results/_snippet_title.html.haml
index 7280146720e..81e746c55a3 100644
--- a/app/views/search/results/_snippet_title.html.haml
+++ b/app/views/search/results/_snippet_title.html.haml
@@ -1,6 +1,6 @@
.search-result-row
%h4.snippet-title.term
- = link_to reliable_snippet_path(snippet_title) do
+ = link_to gitlab_snippet_path(snippet_title) do
= truncate(snippet_title.title, length: 60)
= snippet_badge(snippet_title)
%span.cgray.monospace.tiny.float-right.term
diff --git a/app/views/shared/_personal_access_tokens_form.html.haml b/app/views/shared/_personal_access_tokens_form.html.haml
index ca0b473addf..16f8a692635 100644
--- a/app/views/shared/_personal_access_tokens_form.html.haml
+++ b/app/views/shared/_personal_access_tokens_form.html.haml
@@ -18,6 +18,9 @@
.form-group.col-md-6
= f.label :expires_at, _('Expires at'), class: 'label-bold'
.input-icon-wrapper
+
+ = render_if_exists 'personal_access_tokens/callout_max_personal_access_token_lifetime'
+
= f.text_field :expires_at, class: "datepicker form-control", placeholder: 'YYYY-MM-DD'
.form-group
diff --git a/app/views/shared/_service_settings.html.haml b/app/views/shared/_service_settings.html.haml
index 627a1eb6eae..1bf52feab11 100644
--- a/app/views/shared/_service_settings.html.haml
+++ b/app/views/shared/_service_settings.html.haml
@@ -16,7 +16,7 @@
- if @service.configurable_events.present?
.form-group.row
- .col-sm-2.text-right Trigger
+ %label.col-form-label.col-sm-2= _('Trigger')
.col-sm-10
- @service.configurable_events.each do |event|
@@ -35,6 +35,22 @@
%p.text-muted
= @service.class.event_description(event)
+ - if @service.configurable_event_actions.present?
+ .form-group.row
+ %label.col-form-label.col-sm-2= _('Event Actions')
+
+ .col-sm-10
+ - @service.configurable_event_actions.each do |action|
+ .form-group
+ .form-check
+ = form.check_box service_event_action_field_name(action), class: 'form-check-input'
+ = form.label service_event_action_field_name(action), class: 'form-check-label' do
+ %strong
+ = event_action_description(action)
+
+ %p.text-muted
+ = event_action_description(action)
+
- @service.global_fields.each do |field|
- type = field[:type]
diff --git a/app/views/shared/boards/_show.html.haml b/app/views/shared/boards/_show.html.haml
index 93fc839a371..7f62b983bfc 100644
--- a/app/views/shared/boards/_show.html.haml
+++ b/app/views/shared/boards/_show.html.haml
@@ -29,6 +29,7 @@
":board-id" => "boardId",
":key" => "list.id" }
= render "shared/boards/components/sidebar", group: group
+ = render_if_exists 'shared/boards/components/board_settings_sidebar'
- if @project
%board-add-issues-modal{ "new-issue-path" => new_project_issue_path(@project),
"milestone-path" => milestones_filter_dropdown_path,
diff --git a/app/views/shared/boards/components/_board.html.haml b/app/views/shared/boards/components/_board.html.haml
index ffa24d1c041..eb9b7f6c48a 100644
--- a/app/views/shared/boards/components/_board.html.haml
+++ b/app/views/shared/boards/components/_board.html.haml
@@ -42,23 +42,27 @@
%button.board-delete.no-drag.p-0.border-0.has-tooltip.float-right{ type: "button", title: _("Delete list"), ":class": "{ 'd-none': !list.isExpanded }", "aria-label" => _("Delete list"), data: { placement: "bottom" }, "@click.stop" => "deleteBoard" }
= icon("trash")
- .issue-count-badge.no-drag.text-secondary{ "v-if" => 'list.type !== "blank" && list.type !== "promotion"', ":title": "counterTooltip", "v-tooltip": true, data: { placement: "top" } }
+ .issue-count-badge.pr-0.no-drag.text-secondary{ "v-if" => "showBoardListAndBoardInfo", ":title": "counterTooltip", "v-tooltip": true, data: { placement: "top" } }
%span.d-inline-flex
%span.issue-count-badge-count
%icon.mr-1{ name: "issues" }
- {{ list.issuesSize }}
+ %issue-count{ ":maxIssueCount" => "list.maxIssueCount",
+ ":issuesSize" => "list.issuesSize" }
= render_if_exists "shared/boards/components/list_weight"
- %button.issue-count-badge-add-button.no-drag.btn.btn-sm.btn-default.ml-1.has-tooltip{ type: "button",
- "@click" => "showNewIssueForm",
- "v-if" => "isNewIssueShown",
- ":class": "{ 'd-none': !list.isExpanded }",
- "aria-label" => _("New issue"),
- "title" => _("New issue"),
- data: { placement: "top", container: "body" } }
- = icon("plus")
+ %gl-button-group.board-list-button-group.pl-2{ "v-if" => "isNewIssueShown || isSettingsShown" }
+ %gl-button.issue-count-badge-add-button.no-drag{ type: "button",
+ "@click" => "showNewIssueForm",
+ "v-if" => "isNewIssueShown",
+ ":class": "{ 'd-none': !list.isExpanded, 'rounded-right': isNewIssueShown && !isSettingsShown }",
+ "aria-label" => _("New issue"),
+ "ref" => "newIssueBtn" }
+ = icon("plus")
+ %gl-tooltip{ ":target" => "() => $refs.newIssueBtn" }
+ = _("New Issue")
+ = render_if_exists 'shared/boards/components/list_settings'
- %board-list{ "v-if" => 'list.type !== "blank" && list.type !== "promotion"',
+ %board-list{ "v-if" => "showBoardListAndBoardInfo",
":list" => "list",
":issues" => "list.issues",
":loading" => "list.loading",
diff --git a/app/views/shared/buttons/_project_feature_toggle.html.haml b/app/views/shared/buttons/_project_feature_toggle.html.haml
new file mode 100644
index 00000000000..0f630786455
--- /dev/null
+++ b/app/views/shared/buttons/_project_feature_toggle.html.haml
@@ -0,0 +1,16 @@
+- class_list ||= "js-project-feature-toggle project-feature-toggle"
+- data ||= nil
+- disabled ||= false
+- is_checked ||= false
+- label ||= nil
+
+%button{ type: 'button',
+ class: "#{class_list} #{'is-disabled' if disabled} #{'is-checked' if is_checked}",
+ "aria-label": label,
+ disabled: disabled,
+ data: data }
+ - if yield.present?
+ = yield
+ %span.toggle-icon
+ = sprite_icon('status_success_borderless', size: 16, css_class: 'toggle-icon-svg toggle-status-checked')
+ = sprite_icon('status_failed_borderless', size: 16, css_class: 'toggle-icon-svg toggle-status-unchecked')
diff --git a/app/views/shared/empty_states/_snippets.html.haml b/app/views/shared/empty_states/_snippets.html.haml
index a1a16b9d067..889a470d6ec 100644
--- a/app/views/shared/empty_states/_snippets.html.haml
+++ b/app/views/shared/empty_states/_snippets.html.haml
@@ -11,7 +11,8 @@
%p
= s_('SnippetsEmptyState|They can be either public or private.')
.text-center
- = link_to s_('SnippetsEmptyState|New snippet'), button_path, class: 'btn btn-success', title: s_('SnippetsEmptyState|New snippet'), id: 'new_snippet_link'
+ - if button_path
+ = link_to s_('SnippetsEmptyState|New snippet'), button_path, class: 'btn btn-success', title: s_('SnippetsEmptyState|New snippet'), id: 'new_snippet_link'
- unless current_page?(dashboard_snippets_path)
= link_to s_('SnippetsEmptyState|Explore public snippets'), explore_snippets_path, class: 'btn btn-default', title: s_('SnippetsEmptyState|Explore public snippets')
- else
diff --git a/app/views/shared/groups/_group.html.haml b/app/views/shared/groups/_group.html.haml
index 609b8dce21a..e47967ef622 100644
--- a/app/views/shared/groups/_group.html.haml
+++ b/app/views/shared/groups/_group.html.haml
@@ -1,7 +1,7 @@
- user = local_assigns.fetch(:user, current_user)
- access = user&.max_member_access_for_group(group.id)
-%li.group-row{ class: ('no-description' if group.description.blank?) }
+%li.group-row.py-3{ class: ('no-description' if group.description.blank?) }
.stats
%span
= icon('bookmark')
diff --git a/app/views/shared/icons/_convdev_no_data.svg b/app/views/shared/icons/_dev_ops_score_no_data.svg
index ed32b2333e7..ed32b2333e7 100644
--- a/app/views/shared/icons/_convdev_no_data.svg
+++ b/app/views/shared/icons/_dev_ops_score_no_data.svg
diff --git a/app/views/shared/icons/_convdev_no_index.svg b/app/views/shared/icons/_dev_ops_score_no_index.svg
index 95c00e81d10..95c00e81d10 100644
--- a/app/views/shared/icons/_convdev_no_index.svg
+++ b/app/views/shared/icons/_dev_ops_score_no_index.svg
diff --git a/app/views/shared/icons/_convdev_overview.svg b/app/views/shared/icons/_dev_ops_score_overview.svg
index 2f31113bad7..2f31113bad7 100644
--- a/app/views/shared/icons/_convdev_overview.svg
+++ b/app/views/shared/icons/_dev_ops_score_overview.svg
diff --git a/app/views/shared/issuable/_close_reopen_button.html.haml b/app/views/shared/issuable/_close_reopen_button.html.haml
index 875cacd1f4f..2eb96a7bc9b 100644
--- a/app/views/shared/issuable/_close_reopen_button.html.haml
+++ b/app/views/shared/issuable/_close_reopen_button.html.haml
@@ -6,7 +6,7 @@
- if is_current_user
- if can_update
= link_to "Close #{display_issuable_type}", close_issuable_path(issuable), method: button_method,
- class: "d-none d-sm-none d-md-block btn btn-grouped btn-close js-btn-issue-action #{issuable_button_visibility(issuable, true)}", title: "Close #{display_issuable_type}"
+ class: "d-none d-sm-none d-md-block btn btn-grouped btn-close js-btn-issue-action #{issuable_button_visibility(issuable, true)}", title: "Close #{display_issuable_type}", data: { qa_selector: 'close_issue_button' }
- if can_reopen
= link_to "Reopen #{display_issuable_type}", reopen_issuable_path(issuable), method: button_method,
class: "d-none d-sm-none d-md-block btn btn-grouped btn-reopen js-btn-issue-action #{issuable_button_visibility(issuable, false)}", title: "Reopen #{display_issuable_type}", data: { qa_selector: 'reopen_issue_button' }
diff --git a/app/views/shared/issuable/_search_bar.html.haml b/app/views/shared/issuable/_search_bar.html.haml
index d341520e4a2..5da86195243 100644
--- a/app/views/shared/issuable/_search_bar.html.haml
+++ b/app/views/shared/issuable/_search_bar.html.haml
@@ -6,7 +6,7 @@
.issues-filters{ class: ("w-100" if type == :boards_modal) }
.issues-details-filters.filtered-search-block.d-flex.flex-column.flex-lg-row{ class: block_css_class, "v-pre" => type == :boards_modal }
- .d-flex.flex-column.flex-md-row.flex-grow-1.mb-lg-0.mb-md-2.mb-sm-0
+ .d-flex.flex-column.flex-md-row.flex-grow-1.mb-lg-0.mb-md-2.mb-sm-0.w-100
- if type == :boards
= render "shared/boards/switcher", board: board
= form_tag page_filter_path, method: :get, class: 'filter-form js-filter-form w-100' do
@@ -162,8 +162,8 @@
%button.clear-search.hidden{ type: 'button' }
= icon('times')
.filter-dropdown-container.d-flex.flex-column.flex-md-row
- #js-board-labels-toggle
- if type == :boards
+ #js-board-labels-toggle
.js-board-config{ data: { can_admin_list: user_can_admin_list, has_scope: board.scoped? } }
- if user_can_admin_list
= render 'shared/issuable/board_create_list_dropdown', board: board
diff --git a/app/views/shared/issuable/_sidebar.html.haml b/app/views/shared/issuable/_sidebar.html.haml
index 2170b88c7c3..2a853de12a4 100644
--- a/app/views/shared/issuable/_sidebar.html.haml
+++ b/app/views/shared/issuable/_sidebar.html.haml
@@ -30,7 +30,7 @@
= render_if_exists 'shared/issuable/sidebar_item_epic', issuable_sidebar: issuable_sidebar
- milestone = issuable_sidebar[:milestone] || {}
- .block.milestone
+ .block.milestone{ data: { qa_selector: 'milestone_block' } }
.sidebar-collapsed-icon.has-tooltip{ title: sidebar_milestone_tooltip_label(milestone), data: { container: 'body', html: 'true', placement: 'left', boundary: 'viewport' } }
= icon('clock-o', 'aria-hidden': 'true')
%span.milestone-title.collapse-truncated-title
@@ -45,7 +45,7 @@
= link_to _('Edit'), '#', class: 'js-sidebar-dropdown-toggle edit-link float-right', data: { track_label: "right_sidebar", track_property: "milestone", track_event: "click_edit_button", track_value: "" }
.value.hide-collapsed
- if milestone.present?
- = link_to milestone[:title], milestone[:web_url], class: "bold has-tooltip", title: sidebar_milestone_remaining_days(milestone), data: { container: "body", html: 'true', boundary: 'viewport', qa_selector: 'milestone_link' }
+ = link_to milestone[:title], milestone[:web_url], class: "bold has-tooltip", title: sidebar_milestone_remaining_days(milestone), data: { container: "body", html: 'true', boundary: 'viewport', qa_selector: 'milestone_link', qa_title: milestone[:title] }
- else
%span.no-value
= _('None')
@@ -107,10 +107,10 @@
= icon('spinner spin', class: 'hidden block-loading', 'aria-hidden': 'true')
- if can_edit_issuable
= link_to _('Edit'), '#', class: 'js-sidebar-dropdown-toggle edit-link qa-edit-link-labels float-right', data: { track_label: "right_sidebar", track_property: "labels", track_event: "click_edit_button", track_value: "" }
- .value.issuable-show-labels.dont-hide.hide-collapsed.qa-labels-block{ class: ("has-labels" if selected_labels.any?) }
+ .value.issuable-show-labels.dont-hide.hide-collapsed{ class: ("has-labels" if selected_labels.any?), data: { qa_selector: 'labels_block' } }
- if selected_labels.any?
- selected_labels.each do |label_hash|
- = render_label(label_from_hash(label_hash).present(issuable_subject: nil), link: sidebar_label_filter_path(issuable_sidebar[:project_issuables_path], label_hash[:title]))
+ = render_label(label_from_hash(label_hash).present(issuable_subject: nil), link: sidebar_label_filter_path(issuable_sidebar[:project_issuables_path], label_hash[:title]), dataset: { qa_selector: 'label', qa_label_name: label_hash[:title] })
- else
%span.no-value
= _('None')
diff --git a/app/views/shared/labels/_nav.html.haml b/app/views/shared/labels/_nav.html.haml
index e69246dd0eb..d613ea466fa 100644
--- a/app/views/shared/labels/_nav.html.haml
+++ b/app/views/shared/labels/_nav.html.haml
@@ -13,7 +13,7 @@
= form_tag labels_filter_path, method: :get do
= hidden_field_tag :subscribed, params[:subscribed]
.input-group
- = search_field_tag :search, params[:search], { placeholder: _('Filter'), id: 'label-search', class: 'form-control search-text-input input-short', spellcheck: false }
+ = search_field_tag :search, params[:search], { placeholder: _('Filter'), id: 'label-search', class: 'form-control search-text-input input-short', spellcheck: false, autofocus: true }
%span.input-group-append
%button.btn.btn-default{ type: "submit", "aria-label" => _('Submit search') }
= icon("search")
diff --git a/app/views/shared/members/_sort_dropdown.html.haml b/app/views/shared/members/_sort_dropdown.html.haml
index 5f3d49adff7..50a55565c3c 100644
--- a/app/views/shared/members/_sort_dropdown.html.haml
+++ b/app/views/shared/members/_sort_dropdown.html.haml
@@ -8,3 +8,13 @@
%li
= link_to filter_group_project_member_path(sort: value), class: ("is-active" if @sort == value) do
= title
+ %li.divider
+ %li{ data: { 'qa-selector': 'filter-members-with-inherited-permissions' } }
+ = link_to filter_group_project_member_path(with_inherited_permissions: nil), class: ("is-active" unless params[:with_inherited_permissions].present?) do
+ = _("Show all members")
+ %li{ data: { 'qa-selector': 'filter-members-with-inherited-permissions' } }
+ = link_to filter_group_project_member_path(with_inherited_permissions: 'exclude'), class: ("is-active" if params[:with_inherited_permissions] == 'exclude') do
+ = _("Show only direct members")
+ %li{ data: { 'qa-selector': 'filter-members-with-inherited-permissions' } }
+ = link_to filter_group_project_member_path(with_inherited_permissions: 'only'), class: ("is-active" if params[:with_inherited_permissions] == 'only') do
+ = _("Show only inherited members")
diff --git a/app/views/shared/milestones/_milestone.html.haml b/app/views/shared/milestones/_milestone.html.haml
index b324f35c338..6e50b31fd71 100644
--- a/app/views/shared/milestones/_milestone.html.haml
+++ b/app/views/shared/milestones/_milestone.html.haml
@@ -43,8 +43,9 @@
.col-sm-4.milestone-progress
= milestone_progress_bar(milestone)
= link_to pluralize(milestone.total_issues_count(current_user), 'Issue'), issues_path
- &middot;
- = link_to pluralize(milestone.merge_requests_visible_to_user(current_user).size, 'Merge Request'), merge_requests_path
+ - if milestone.merge_requests_enabled?
+ &middot;
+ = link_to pluralize(milestone.merge_requests_visible_to_user(current_user).size, 'Merge Request'), merge_requests_path
.float-lg-right.light #{milestone.percent_complete(current_user)}% complete
.col-sm-2
.milestone-actions.d-flex.justify-content-sm-start.justify-content-md-end
diff --git a/app/views/shared/milestones/_sidebar.html.haml b/app/views/shared/milestones/_sidebar.html.haml
index b6656e6283c..fbbcc4f3e68 100644
--- a/app/views/shared/milestones/_sidebar.html.haml
+++ b/app/views/shared/milestones/_sidebar.html.haml
@@ -105,38 +105,39 @@
= render_if_exists 'shared/milestones/weight', milestone: milestone
- .block.merge-requests
- .sidebar-collapsed-icon.has-tooltip{ title: milestone_merge_requests_tooltip_text(milestone), data: { container: 'body', html: 'true', placement: 'left', boundary: 'viewport' } }
- %strong
- = custom_icon('mr_bold')
- %span= milestone.merge_requests.count
- .title.hide-collapsed
- Merge requests
- %span.badge.badge-pill= milestone.merge_requests.count
- .value.hide-collapsed.bold
- - if !project || can?(current_user, :read_merge_request, project)
- %span.milestone-stat
- = link_to milestones_browse_issuables_path(milestone, type: :merge_requests) do
+ - if milestone.merge_requests_enabled?
+ .block.merge-requests
+ .sidebar-collapsed-icon.has-tooltip{ title: milestone_merge_requests_tooltip_text(milestone), data: { container: 'body', html: 'true', placement: 'left', boundary: 'viewport' } }
+ %strong
+ = custom_icon('mr_bold')
+ %span= milestone.merge_requests.count
+ .title.hide-collapsed
+ Merge requests
+ %span.badge.badge-pill= milestone.merge_requests.count
+ .value.hide-collapsed.bold
+ - if !project || can?(current_user, :read_merge_request, project)
+ %span.milestone-stat
+ = link_to milestones_browse_issuables_path(milestone, type: :merge_requests) do
+ Open:
+ = milestone.merge_requests.opened.count
+ %span.milestone-stat
+ = link_to milestones_browse_issuables_path(milestone, type: :merge_requests, state: 'closed') do
+ Closed:
+ = milestone.merge_requests.closed.count
+ %span.milestone-stat
+ = link_to milestones_browse_issuables_path(milestone, type: :merge_requests, state: 'merged') do
+ Merged:
+ = milestone.merge_requests.merged.count
+ - else
+ %span.milestone-stat
Open:
= milestone.merge_requests.opened.count
- %span.milestone-stat
- = link_to milestones_browse_issuables_path(milestone, type: :merge_requests, state: 'closed') do
+ %span.milestone-stat
Closed:
= milestone.merge_requests.closed.count
- %span.milestone-stat
- = link_to milestones_browse_issuables_path(milestone, type: :merge_requests, state: 'merged') do
+ %span.milestone-stat
Merged:
= milestone.merge_requests.merged.count
- - else
- %span.milestone-stat
- Open:
- = milestone.merge_requests.opened.count
- %span.milestone-stat
- Closed:
- = milestone.merge_requests.closed.count
- %span.milestone-stat
- Merged:
- = milestone.merge_requests.merged.count
- if project
- recent_releases, total_count, more_count = recent_releases_with_counts(milestone)
diff --git a/app/views/shared/milestones/_tabs.html.haml b/app/views/shared/milestones/_tabs.html.haml
index f718c5767d1..538ebe79641 100644
--- a/app/views/shared/milestones/_tabs.html.haml
+++ b/app/views/shared/milestones/_tabs.html.haml
@@ -6,10 +6,11 @@
= link_to '#tab-issues', class: 'nav-link active', data: { toggle: 'tab', show: '.tab-issues-buttons' } do
= _('Issues')
%span.badge.badge-pill= milestone.issues_visible_to_user(current_user).size
- %li.nav-item
- = link_to '#tab-merge-requests', class: 'nav-link', data: { toggle: 'tab', endpoint: milestone_tab_path(milestone, 'merge_requests') } do
- = _('Merge Requests')
- %span.badge.badge-pill= milestone.merge_requests_visible_to_user(current_user).size
+ - if milestone.merge_requests_enabled?
+ %li.nav-item
+ = link_to '#tab-merge-requests', class: 'nav-link', data: { toggle: 'tab', endpoint: milestone_tab_path(milestone, 'merge_requests') } do
+ = _('Merge Requests')
+ %span.badge.badge-pill= milestone.merge_requests_visible_to_user(current_user).size
%li.nav-item
= link_to '#tab-participants', class: 'nav-link', data: { toggle: 'tab', endpoint: milestone_tab_path(milestone, 'participants') } do
= _('Participants')
@@ -26,9 +27,10 @@
.tab-content.milestone-content
.tab-pane.active#tab-issues{ data: { sort_endpoint: (sort_issues_project_milestone_path(@project, @milestone) if @project && current_user) } }
= render 'shared/milestones/issues_tab', issues: issues, show_project_name: show_project_name, show_full_project_name: show_full_project_name
- .tab-pane#tab-merge-requests
- -# loaded async
- = render "shared/milestones/tab_loading"
+ - if milestone.merge_requests_enabled?
+ .tab-pane#tab-merge-requests
+ -# loaded async
+ = render "shared/milestones/tab_loading"
.tab-pane#tab-participants
-# loaded async
= render "shared/milestones/tab_loading"
diff --git a/app/views/shared/notifications/_custom_notifications.html.haml b/app/views/shared/notifications/_custom_notifications.html.haml
index 1fef43c0c37..be574155436 100644
--- a/app/views/shared/notifications/_custom_notifications.html.haml
+++ b/app/views/shared/notifications/_custom_notifications.html.haml
@@ -18,7 +18,7 @@
.col-lg-4
%h4.prepend-top-0= _('Notification events')
%p
- - notification_link = link_to _('notification emails'), help_page_path('workflow/notifications'), target: '_blank'
+ - notification_link = link_to _('notification emails'), help_page_path('user/profile/notifications'), target: '_blank'
- paragraph = _('Custom notification levels are the same as participating levels. With custom notification levels you will also receive notifications for select events. To find out more, check out %{notification_link}.') % { notification_link: notification_link.html_safe }
#{ paragraph.html_safe }
.col-lg-8
diff --git a/app/views/shared/projects/_archived.html.haml b/app/views/shared/projects/_archived.html.haml
new file mode 100644
index 00000000000..fad93d14390
--- /dev/null
+++ b/app/views/shared/projects/_archived.html.haml
@@ -0,0 +1,3 @@
+- if project.archived
+ %span.d-flex.badge.badge-warning
+ = _('archived')
diff --git a/app/views/shared/projects/_list.html.haml b/app/views/shared/projects/_list.html.haml
index 59b4facdbe5..fab7ee9d763 100644
--- a/app/views/shared/projects/_list.html.haml
+++ b/app/views/shared/projects/_list.html.haml
@@ -35,6 +35,7 @@
.js-projects-list-holder{ data: { qa_selector: 'projects_list' } }
- if any_projects?(projects)
- load_pipeline_status(projects) if pipeline_status
+ - load_max_project_member_accesses(projects) # Prime cache used in shared/projects/project view rendered below
%ul.projects-list{ class: css_classes }
- projects.each_with_index do |project, i|
- css_class = (i >= projects_limit) || project.pending_delete? ? 'hide' : nil
diff --git a/app/views/shared/projects/_project.html.haml b/app/views/shared/projects/_project.html.haml
index 67dad9b7a75..45e95685677 100644
--- a/app/views/shared/projects/_project.html.haml
+++ b/app/views/shared/projects/_project.html.haml
@@ -26,7 +26,7 @@
= image_tag avatar_icon_for_user(project.creator, 48), class: "avatar s48", alt:''
- else
= project_icon(project, alt: '', class: 'avatar project-avatar s48', width: 48, height: 48)
- .project-details.d-sm-flex.flex-sm-fill.align-items-center
+ .project-details.d-sm-flex.flex-sm-fill.align-items-center{ data: { qa_selector: 'project', qa_project_name: project.name } }
.flex-wrapper
.d-flex.align-items-center.flex-wrap.project-title
%h2.d-flex.prepend-top-8
@@ -67,8 +67,7 @@
%span.icon-wrapper.pipeline-status
= render 'ci/status/icon', status: project.last_pipeline.detailed_status(current_user), tooltip_placement: 'top', path: pipeline_path
- - if project.archived
- %span.d-flex.icon-wrapper.badge.badge-warning archived
+ = render_if_exists 'shared/projects/archived', project: project
- if stars
= link_to project_starrers_path(project),
class: "d-flex align-items-center icon-wrapper stars has-tooltip",
diff --git a/app/views/shared/snippets/_header.html.haml b/app/views/shared/snippets/_header.html.haml
index 67f177288f0..1243bdab6dd 100644
--- a/app/views/shared/snippets/_header.html.haml
+++ b/app/views/shared/snippets/_header.html.haml
@@ -17,11 +17,11 @@
= render "snippets/actions"
.snippet-header.limited-header-width
- %h2.snippet-title.prepend-top-0.mb-3.qa-snippet-title
+ %h2.snippet-title.prepend-top-0.mb-3{ data: { qa_selector: 'snippet_title' } }
= markdown_field(@snippet, :title)
- if @snippet.description.present?
- .description.qa-snippet-description
+ .description{ data: { qa_selector: 'snippet_description' } }
.md
= markdown_field(@snippet, :description)
%textarea.hidden.js-task-list-field
@@ -44,7 +44,7 @@
%li
%button.js-share-btn.btn.btn-transparent{ type: 'button' }
%strong.embed-toggle-list-item= _("Share")
- %input.js-snippet-url-area.snippet-embed-input.form-control{ type: "text", autocomplete: 'off', value: snippet_embed_tag(@snippet) }
+ = snippet_embed_input(@snippet)
.input-group-append
= clipboard_button(title: _('Copy'), class: 'js-clipboard-btn snippet-clipboard-btn btn btn-default', target: '.js-snippet-url-area')
.clearfix
diff --git a/app/views/shared/snippets/_snippet.html.haml b/app/views/shared/snippets/_snippet.html.haml
index 5602ea37b5c..9e038854c59 100644
--- a/app/views/shared/snippets/_snippet.html.haml
+++ b/app/views/shared/snippets/_snippet.html.haml
@@ -1,11 +1,11 @@
- link_project = local_assigns.fetch(:link_project, false)
- notes_count = @noteable_meta_data[snippet.id].user_notes_count
-%li.snippet-row
+%li.snippet-row.py-3
= image_tag avatar_icon_for_user(snippet.author), class: "avatar s40 d-none d-sm-block", alt: ''
.title
- = link_to reliable_snippet_path(snippet) do
+ = link_to gitlab_snippet_path(snippet) do
= snippet.title
- if snippet.file_name.present?
%span.snippet-filename.d-none.d-sm-inline-block.ml-2
@@ -14,7 +14,7 @@
%ul.controls
%li
- = link_to reliable_snippet_path(snippet, anchor: 'notes'), class: ('no-comments' if notes_count.zero?) do
+ = link_to gitlab_snippet_path(snippet, anchor: 'notes'), class: ('no-comments' if notes_count.zero?) do
= icon('comments')
= notes_count
%li
diff --git a/app/views/shared/tokens/_scopes_list.html.haml b/app/views/shared/tokens/_scopes_list.html.haml
index 428861485b4..913392be510 100644
--- a/app/views/shared/tokens/_scopes_list.html.haml
+++ b/app/views/shared/tokens/_scopes_list.html.haml
@@ -9,5 +9,5 @@
%ul.scopes-list.append-bottom-0
- token.scopes.each do |scope|
%li
- %span.scope-name= scope
+ %span.bold= scope
= "(#{t(scope, scope: [:doorkeeper, :scopes])})"
diff --git a/app/views/shared/web_hooks/_hook.html.haml b/app/views/shared/web_hooks/_hook.html.haml
new file mode 100644
index 00000000000..34a62340966
--- /dev/null
+++ b/app/views/shared/web_hooks/_hook.html.haml
@@ -0,0 +1,16 @@
+%li
+ .row
+ .col-md-8.col-lg-7
+ %strong.light-header= hook.url
+ %div
+ - hook.class.triggers.each_value do |trigger|
+ - if hook.public_send(trigger)
+ %span.badge.badge-gray.deploy-project-label= trigger.to_s.titleize
+ %span.badge.badge-gray
+ = _('SSL Verification:')
+ = hook.enable_ssl_verification ? _('enabled') : _('disabled')
+
+ .col-md-4.col-lg-5.text-right-md.prepend-top-5
+ %span>= render 'shared/web_hooks/test_button', hook: hook, button_class: 'btn-sm append-right-8'
+ %span>= link_to _('Edit'), edit_hook_path(hook), class: 'btn btn-sm append-right-8'
+ = link_to _('Delete'), destroy_hook_path(hook), data: { confirm: _('Are you sure?') }, method: :delete, class: 'btn btn-sm'
diff --git a/app/views/shared/web_hooks/_index.html.haml b/app/views/shared/web_hooks/_index.html.haml
new file mode 100644
index 00000000000..b22d51a101a
--- /dev/null
+++ b/app/views/shared/web_hooks/_index.html.haml
@@ -0,0 +1,14 @@
+%hr
+.card
+ .card-header
+ %h5
+ = hook_class.underscore.humanize.titleize.pluralize
+ (#{hooks.count})
+
+ - if hooks.any?
+ %ul.content-list
+ - hooks.each do |hook|
+ = render 'shared/web_hooks/hook', hook: hook
+ - else
+ %p.text-center.prepend-top-default.append-bottom-default
+ = _('No webhooks found, add one in the form above.')
diff --git a/app/views/shared/web_hooks/_test_button.html.haml b/app/views/shared/web_hooks/_test_button.html.haml
index 5ece8b1d4c7..fc24e425ab6 100644
--- a/app/views/shared/web_hooks/_test_button.html.haml
+++ b/app/views/shared/web_hooks/_test_button.html.haml
@@ -1,10 +1,10 @@
-- triggers = local_assigns.fetch(:triggers)
- button_class = local_assigns.fetch(:button_class, '')
- hook = local_assigns.fetch(:hook)
+- triggers = hook.class.triggers
-.hook-test-button.dropdown.inline
+.hook-test-button.dropdown.inline>
%button.btn{ 'data-toggle' => 'dropdown', class: button_class }
- Test
+ = _('Test')
= icon('caret-down')
%ul.dropdown-menu.dropdown-menu-right{ role: 'menu' }
- triggers.each_value do |event|
diff --git a/app/views/shared/web_hooks/_title_and_docs.html.haml b/app/views/shared/web_hooks/_title_and_docs.html.haml
new file mode 100644
index 00000000000..359f5f34f5b
--- /dev/null
+++ b/app/views/shared/web_hooks/_title_and_docs.html.haml
@@ -0,0 +1,5 @@
+%h4.prepend-top-0
+ = page_title
+%p
+ - link = link_to(hook.pluralized_name, help_page_path(hook.help_path))
+ = _('%{link} can be used for binding events when something is happening within the project.').html_safe % { link: link }
diff --git a/app/views/snippets/_actions.html.haml b/app/views/snippets/_actions.html.haml
index 9952f373156..5ee12a2f22a 100644
--- a/app/views/snippets/_actions.html.haml
+++ b/app/views/snippets/_actions.html.haml
@@ -5,10 +5,11 @@
= link_to edit_snippet_path(@snippet), class: "btn btn-grouped" do
= _("Edit")
- if can?(current_user, :admin_personal_snippet, @snippet)
- = link_to snippet_path(@snippet), method: :delete, data: { confirm: _("Are you sure?") }, class: "btn btn-grouped btn-inverted btn-remove", title: _('Delete Snippet') do
+ = link_to gitlab_snippet_path(@snippet), method: :delete, data: { confirm: _("Are you sure?") }, class: "btn btn-grouped btn-inverted btn-remove", title: _('Delete Snippet') do
= _("Delete")
- = link_to new_snippet_path, class: "btn btn-grouped btn-success btn-inverted", title: _("New snippet") do
- = _("New snippet")
+ - if can?(current_user, :create_personal_snippet)
+ = link_to new_snippet_path, class: "btn btn-grouped btn-success btn-inverted", title: _("New snippet") do
+ = _("New snippet")
- if @snippet.submittable_as_spam_by?(current_user)
= link_to _('Submit as spam'), mark_as_spam_snippet_path(@snippet), method: :post, class: 'btn btn-grouped btn-spam', title: _('Submit as spam')
.d-block.d-sm-none.dropdown
@@ -17,12 +18,13 @@
= icon('caret-down')
.dropdown-menu.dropdown-menu-full-width
%ul
- %li
- = link_to new_snippet_path, title: _("New snippet") do
- = _("New snippet")
+ - if can?(current_user, :create_personal_snippet)
+ %li
+ = link_to new_snippet_path, title: _("New snippet") do
+ = _("New snippet")
- if can?(current_user, :admin_personal_snippet, @snippet)
%li
- = link_to snippet_path(@snippet), method: :delete, data: { confirm: _("Are you sure?") }, title: _('Delete Snippet') do
+ = link_to gitlab_snippet_path(@snippet), method: :delete, data: { confirm: _("Are you sure?") }, title: _('Delete Snippet') do
= _("Delete")
- if can?(current_user, :update_personal_snippet, @snippet)
%li
diff --git a/app/views/snippets/_snippets.html.haml b/app/views/snippets/_snippets.html.haml
index dab247da251..69b19c0def9 100644
--- a/app/views/snippets/_snippets.html.haml
+++ b/app/views/snippets/_snippets.html.haml
@@ -3,7 +3,7 @@
- current_user_empty_message_header = s_('UserProfile|You haven\'t created any snippets.')
- current_user_empty_message_description = s_('UserProfile|Snippets in GitLab can either be private, internal, or public.')
- primary_button_label = _('New snippet')
-- primary_button_link = new_snippet_path
+- primary_button_link = new_snippet_path if can?(current_user, :create_personal_snippet)
- visitor_empty_message = s_('UserProfile|No snippets found.')
.snippets-list-holder
diff --git a/app/views/snippets/_snippets_scope_menu.html.haml b/app/views/snippets/_snippets_scope_menu.html.haml
index c312226dd6c..cb59b11ca2b 100644
--- a/app/views/snippets/_snippets_scope_menu.html.haml
+++ b/app/views/snippets/_snippets_scope_menu.html.haml
@@ -9,7 +9,7 @@
- if include_private
= subject.snippets.count
- else
- = subject.snippets.public_and_internal.count
+ = subject.snippets.public_and_internal_only.count
- if include_private
%li{ class: active_when(params[:scope] == "are_private") }
diff --git a/app/views/snippets/edit.html.haml b/app/views/snippets/edit.html.haml
index ebc6c0a2605..f5ffb037152 100644
--- a/app/views/snippets/edit.html.haml
+++ b/app/views/snippets/edit.html.haml
@@ -3,4 +3,4 @@
%h3.page-title
= _("Edit Snippet")
%hr
-= render 'shared/snippets/form', url: snippet_path(@snippet)
+= render 'shared/snippets/form', url: gitlab_snippet_path(@snippet)
diff --git a/app/views/snippets/show.html.haml b/app/views/snippets/show.html.haml
index 36b4e00e8d5..080c0ab6ece 100644
--- a/app/views/snippets/show.html.haml
+++ b/app/views/snippets/show.html.haml
@@ -4,13 +4,16 @@
- breadcrumb_title @snippet.to_reference
- page_title "#{@snippet.title} (#{@snippet.to_reference})", _("Snippets")
-= render 'shared/snippets/header'
+- if Feature.enabled?(:snippets_vue)
+ #js-snippet-view{ data: {'qa-selector': 'snippet_view', 'snippet-gid': @snippet.to_global_id} }
+- else
+ = render 'shared/snippets/header'
-.personal-snippets
- %article.file-holder.snippet-file-content
- = render 'shared/snippets/blob'
+ .personal-snippets
+ %article.file-holder.snippet-file-content
+ = render 'shared/snippets/blob'
- .row-content-block.top-block.content-component-block
- = render 'award_emoji/awards_block', awardable: @snippet, inline: true
+ .row-content-block.top-block.content-component-block
+ = render 'award_emoji/awards_block', awardable: @snippet, inline: true
- #notes.limited-width-notes= render "shared/notes/notes_with_form", :autocomplete => false
+ #notes.limited-width-notes= render "shared/notes/notes_with_form", :autocomplete => false
diff --git a/app/views/users/_profile_basic_info.html.haml b/app/views/users/_profile_basic_info.html.haml
new file mode 100644
index 00000000000..af0a766bab0
--- /dev/null
+++ b/app/views/users/_profile_basic_info.html.haml
@@ -0,0 +1,6 @@
+%p
+ %span.middle-dot-divider
+ @#{@user.username}
+ - if can?(current_user, :read_user_profile, @user)
+ %span.middle-dot-divider
+ = s_('Member since %{date}') % { date: @user.created_at.to_date.to_s(:long) }
diff --git a/app/views/users/show.html.haml b/app/views/users/show.html.haml
index e1c75d5d0f4..e10dad8aa8d 100644
--- a/app/views/users/show.html.haml
+++ b/app/views/users/show.html.haml
@@ -1,7 +1,7 @@
- @hide_top_links = true
- @hide_breadcrumbs = true
- @no_container = true
-- page_title @user.name
+- page_title @user.blocked? ? s_('UserProfile|Blocked user') : @user.name
- page_description @user.bio
- header_title @user.name, user_path(@user)
@@ -36,50 +36,48 @@
= link_to avatar_icon_for_user(@user, 400), target: '_blank', rel: 'noopener noreferrer' do
= image_tag avatar_icon_for_user(@user, 90), class: "avatar s90", alt: ''
- .user-info
- .cover-title
- = @user.name
-
- - if @user.status
- .cover-status
- = emoji_icon(@user.status.emoji)
- = markdown_field(@user.status, :message)
-
- .cover-desc.member-date.cgray
- %p
- %span.middle-dot-divider
- @#{@user.username}
- - if can?(current_user, :read_user_profile, @user)
- %span.middle-dot-divider
- = s_('Member since %{date}') % { date: @user.created_at.to_date.to_s(:long) }
-
- .cover-desc.cgray
- - unless @user.public_email.blank?
- .profile-link-holder.middle-dot-divider
- = link_to @user.public_email, "mailto:#{@user.public_email}", class: 'text-link'
- - unless @user.skype.blank?
- .profile-link-holder.middle-dot-divider
- = link_to "skype:#{@user.skype}", title: "Skype" do
- = icon('skype')
- - unless @user.linkedin.blank?
- .profile-link-holder.middle-dot-divider
- = link_to linkedin_url(@user), title: "LinkedIn", target: '_blank', rel: 'noopener noreferrer nofollow' do
- = icon('linkedin-square')
- - unless @user.twitter.blank?
- .profile-link-holder.middle-dot-divider
- = link_to twitter_url(@user), title: "Twitter", target: '_blank', rel: 'noopener noreferrer nofollow' do
- = icon('twitter-square')
- - unless @user.website_url.blank?
- .profile-link-holder.middle-dot-divider
- = link_to @user.short_website_url, @user.full_website_url, class: 'text-link', target: '_blank', rel: 'me noopener noreferrer nofollow'
- - unless @user.location.blank?
- .profile-link-holder.middle-dot-divider
- = sprite_icon('location', size: 16, css_class: 'vertical-align-sub')
- = @user.location
- - unless @user.organization.blank?
- .profile-link-holder.middle-dot-divider
- = sprite_icon('work', size: 16, css_class: 'vertical-align-sub')
- = @user.organization
+ - if @user.blocked?
+ .user-info
+ .cover-title
+ = s_('UserProfile|Blocked user')
+ = render "users/profile_basic_info"
+ - else
+ .user-info
+ .cover-title
+ = @user.name
+
+ - if @user.status
+ .cover-status
+ = emoji_icon(@user.status.emoji)
+ = markdown_field(@user.status, :message)
+ = render "users/profile_basic_info"
+ .cover-desc.cgray
+ - unless @user.public_email.blank?
+ .profile-link-holder.middle-dot-divider
+ = link_to @user.public_email, "mailto:#{@user.public_email}", class: 'text-link'
+ - unless @user.skype.blank?
+ .profile-link-holder.middle-dot-divider
+ = link_to "skype:#{@user.skype}", title: "Skype" do
+ = icon('skype')
+ - unless @user.linkedin.blank?
+ .profile-link-holder.middle-dot-divider
+ = link_to linkedin_url(@user), title: "LinkedIn", target: '_blank', rel: 'noopener noreferrer nofollow' do
+ = icon('linkedin-square')
+ - unless @user.twitter.blank?
+ .profile-link-holder.middle-dot-divider
+ = link_to twitter_url(@user), title: "Twitter", target: '_blank', rel: 'noopener noreferrer nofollow' do
+ = icon('twitter-square')
+ - unless @user.website_url.blank?
+ .profile-link-holder.middle-dot-divider
+ = link_to @user.short_website_url, @user.full_website_url, class: 'text-link', target: '_blank', rel: 'me noopener noreferrer nofollow'
+ - unless @user.location.blank?
+ .profile-link-holder.middle-dot-divider
+ = sprite_icon('location', size: 16, css_class: 'vertical-align-sub')
+ = @user.location
+ - unless @user.organization.blank?
+ .profile-link-holder.middle-dot-divider
+ = sprite_icon('work', size: 16, css_class: 'vertical-align-sub')
+ = @user.organization
- if @user.bio.present?
.cover-desc.cgray
@@ -165,4 +163,8 @@
.col-12.text-center
.text-content
%h4
- = s_('UserProfile|This user has a private profile')
+ - if @user.blocked?
+ = s_('UserProfile|This user is blocked')
+ - else
+ = s_('UserProfile|This user has a private profile')
+
diff --git a/app/workers/all_queues.yml b/app/workers/all_queues.yml
index 66b5214cfcb..02acf360afc 100644
--- a/app/workers/all_queues.yml
+++ b/app/workers/all_queues.yml
@@ -16,6 +16,7 @@
- cronjob:pages_domain_verification_cron
- cronjob:pages_domain_removal_cron
- cronjob:pages_domain_ssl_renewal_cron
+- cronjob:personal_access_tokens_expiring
- cronjob:pipeline_schedule
- cronjob:prune_old_events
- cronjob:remove_expired_group_links
@@ -38,6 +39,9 @@
- gcp_cluster:cluster_patch_app
- gcp_cluster:cluster_upgrade_app
- gcp_cluster:cluster_provision
+- gcp_cluster:clusters_cleanup_app
+- gcp_cluster:clusters_cleanup_project_namespace
+- gcp_cluster:clusters_cleanup_service_account
- gcp_cluster:cluster_wait_for_app_installation
- gcp_cluster:wait_for_cluster_creation
- gcp_cluster:cluster_wait_for_ingress_ip_address
@@ -48,6 +52,8 @@
- gcp_cluster:clusters_cleanup_app
- gcp_cluster:clusters_cleanup_project_namespace
- gcp_cluster:clusters_cleanup_service_account
+- gcp_cluster:clusters_applications_activate_service
+- gcp_cluster:clusters_applications_deactivate_service
- github_import_advance_stage
- github_importer:github_import_import_diff_note
diff --git a/app/workers/clusters/applications/activate_service_worker.rb b/app/workers/clusters/applications/activate_service_worker.rb
new file mode 100644
index 00000000000..4f285d55162
--- /dev/null
+++ b/app/workers/clusters/applications/activate_service_worker.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+module Clusters
+ module Applications
+ class ActivateServiceWorker
+ include ApplicationWorker
+ include ClusterQueue
+
+ def perform(cluster_id, service_name)
+ cluster = Clusters::Cluster.find_by_id(cluster_id)
+ return unless cluster
+
+ cluster.all_projects.find_each do |project|
+ project.find_or_initialize_service(service_name).update!(active: true)
+ end
+ end
+ end
+ end
+end
diff --git a/app/workers/clusters/applications/deactivate_service_worker.rb b/app/workers/clusters/applications/deactivate_service_worker.rb
new file mode 100644
index 00000000000..2c560cc998c
--- /dev/null
+++ b/app/workers/clusters/applications/deactivate_service_worker.rb
@@ -0,0 +1,24 @@
+# frozen_string_literal: true
+
+module Clusters
+ module Applications
+ class DeactivateServiceWorker
+ include ApplicationWorker
+ include ClusterQueue
+
+ def perform(cluster_id, service_name)
+ cluster = Clusters::Cluster.find_by_id(cluster_id)
+ raise cluster_missing_error(service_name) unless cluster
+
+ service = "#{service_name}_service".to_sym
+ cluster.all_projects.with_service(service).find_each do |project|
+ project.public_send(service).update!(active: false) # rubocop:disable GitlabSecurity/PublicSend
+ end
+ end
+
+ def cluster_missing_error(service)
+ ActiveRecord::RecordNotFound.new("Can't deactivate #{service} services, host cluster not found! Some inconsistent records may be left in database.")
+ end
+ end
+ end
+end
diff --git a/app/workers/clusters/cleanup/app_worker.rb b/app/workers/clusters/cleanup/app_worker.rb
index 1eedf510ba1..8b2fddd3164 100644
--- a/app/workers/clusters/cleanup/app_worker.rb
+++ b/app/workers/clusters/cleanup/app_worker.rb
@@ -3,13 +3,16 @@
module Clusters
module Cleanup
class AppWorker
- include ApplicationWorker
- include ClusterQueue
- include ClusterApplications
+ include ClusterCleanupMethods
- # TODO: Merge with https://gitlab.com/gitlab-org/gitlab/merge_requests/16954
- # We're splitting the above MR in smaller chunks to facilitate reviews
- def perform
+ def perform(cluster_id, execution_count = 0)
+ Clusters::Cluster.with_persisted_applications.find_by_id(cluster_id).try do |cluster|
+ break unless cluster.cleanup_uninstalling_applications?
+
+ break exceeded_execution_limit(cluster) if exceeded_execution_limit?(execution_count)
+
+ ::Clusters::Cleanup::AppService.new(cluster, execution_count).execute
+ end
end
end
end
diff --git a/app/workers/clusters/cleanup/project_namespace_worker.rb b/app/workers/clusters/cleanup/project_namespace_worker.rb
index 09f2abf5d8a..8a7fbf0fde7 100644
--- a/app/workers/clusters/cleanup/project_namespace_worker.rb
+++ b/app/workers/clusters/cleanup/project_namespace_worker.rb
@@ -3,13 +3,16 @@
module Clusters
module Cleanup
class ProjectNamespaceWorker
- include ApplicationWorker
- include ClusterQueue
- include ClusterApplications
+ include ClusterCleanupMethods
- # TODO: Merge with https://gitlab.com/gitlab-org/gitlab/merge_requests/16954
- # We're splitting the above MR in smaller chunks to facilitate reviews
- def perform
+ def perform(cluster_id, execution_count = 0)
+ Clusters::Cluster.find_by_id(cluster_id).try do |cluster|
+ break unless cluster.cleanup_removing_project_namespaces?
+
+ break exceeded_execution_limit(cluster) if exceeded_execution_limit?(execution_count)
+
+ Clusters::Cleanup::ProjectNamespaceService.new(cluster, execution_count).execute
+ end
end
end
end
diff --git a/app/workers/clusters/cleanup/service_account_worker.rb b/app/workers/clusters/cleanup/service_account_worker.rb
index fab6318a807..95de56d8ebe 100644
--- a/app/workers/clusters/cleanup/service_account_worker.rb
+++ b/app/workers/clusters/cleanup/service_account_worker.rb
@@ -3,13 +3,14 @@
module Clusters
module Cleanup
class ServiceAccountWorker
- include ApplicationWorker
- include ClusterQueue
- include ClusterApplications
+ include ClusterCleanupMethods
- # TODO: Merge with https://gitlab.com/gitlab-org/gitlab/merge_requests/16954
- # We're splitting the above MR in smaller chunks to facilitate reviews
- def perform
+ def perform(cluster_id)
+ Clusters::Cluster.find_by_id(cluster_id).try do |cluster|
+ break unless cluster.cleanup_removing_service_account?
+
+ Clusters::Cleanup::ServiceAccountService.new(cluster).execute
+ end
end
end
end
diff --git a/app/workers/concerns/cluster_cleanup_methods.rb b/app/workers/concerns/cluster_cleanup_methods.rb
new file mode 100644
index 00000000000..04fa4d69666
--- /dev/null
+++ b/app/workers/concerns/cluster_cleanup_methods.rb
@@ -0,0 +1,75 @@
+# frozen_string_literal: true
+
+# Concern for setting Sidekiq settings for the various GitLab ObjectStorage workers.
+module ClusterCleanupMethods
+ extend ActiveSupport::Concern
+
+ include ApplicationWorker
+ include ClusterQueue
+
+ DEFAULT_EXECUTION_LIMIT = 10
+ ExceededExecutionLimitError = Class.new(StandardError)
+
+ included do
+ worker_has_external_dependencies!
+
+ sidekiq_options retry: 3
+
+ sidekiq_retries_exhausted do |msg, error|
+ cluster_id = msg['args'][0]
+
+ cluster = Clusters::Cluster.find_by_id(cluster_id)
+
+ cluster.make_cleanup_errored!("#{self.class.name} retried too many times") if cluster
+
+ logger = Gitlab::Kubernetes::Logger.build
+
+ logger.error({
+ exception: error,
+ cluster_id: cluster_id,
+ class_name: msg['class'],
+ event: :sidekiq_retries_exhausted,
+ message: msg['error_message']
+ })
+ end
+ end
+
+ private
+
+ # Override this method to customize the execution_limit
+ def execution_limit
+ DEFAULT_EXECUTION_LIMIT
+ end
+
+ def exceeded_execution_limit?(execution_count)
+ execution_count >= execution_limit
+ end
+
+ def logger
+ @logger ||= Gitlab::Kubernetes::Logger.build
+ end
+
+ def exceeded_execution_limit(cluster)
+ log_exceeded_execution_limit_error(cluster)
+
+ cluster.make_cleanup_errored!("#{self.class.name} exceeded the execution limit")
+ end
+
+ def cluster_applications_and_status(cluster)
+ cluster.persisted_applications
+ .map { |application| "#{application.name}:#{application.status_name}" }
+ .join(",")
+ end
+
+ def log_exceeded_execution_limit_error(cluster)
+ logger.error({
+ exception: ExceededExecutionLimitError.name,
+ cluster_id: cluster.id,
+ class_name: self.class.name,
+ cleanup_status: cluster.cleanup_status_name,
+ applications: cluster_applications_and_status(cluster),
+ event: :failed_to_remove_cluster_and_resources,
+ message: "exceeded execution limit of #{execution_limit} tries"
+ })
+ end
+end
diff --git a/app/workers/delete_merged_branches_worker.rb b/app/workers/delete_merged_branches_worker.rb
index 44b3db30d0d..f3d86233c1b 100644
--- a/app/workers/delete_merged_branches_worker.rb
+++ b/app/workers/delete_merged_branches_worker.rb
@@ -15,7 +15,7 @@ class DeleteMergedBranchesWorker
user = User.find(user_id)
begin
- DeleteMergedBranchesService.new(project, user).execute
+ ::Branches::DeleteMergedService.new(project, user).execute
rescue Gitlab::Access::AccessDeniedError
return
end
diff --git a/app/workers/delete_stored_files_worker.rb b/app/workers/delete_stored_files_worker.rb
index 8a693a64055..e1e2f66f573 100644
--- a/app/workers/delete_stored_files_worker.rb
+++ b/app/workers/delete_stored_files_worker.rb
@@ -15,7 +15,7 @@ class DeleteStoredFilesWorker
unless klass
message = "Unknown class '#{class_name}'"
logger.error(message)
- Gitlab::Sentry.track_exception(RuntimeError.new(message))
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(RuntimeError.new(message))
return
end
diff --git a/app/workers/hashed_storage/project_migrate_worker.rb b/app/workers/hashed_storage/project_migrate_worker.rb
index 8c0ec97638f..0174467923d 100644
--- a/app/workers/hashed_storage/project_migrate_worker.rb
+++ b/app/workers/hashed_storage/project_migrate_worker.rb
@@ -14,7 +14,7 @@ module HashedStorage
try_obtain_lease do
project = Project.without_deleted.find_by(id: project_id)
- break unless project
+ break unless project && project.storage_upgradable?
old_disk_path ||= Storage::LegacyProject.new(project).disk_path
diff --git a/app/workers/pages_domain_removal_cron_worker.rb b/app/workers/pages_domain_removal_cron_worker.rb
index b1506831056..07ecde55922 100644
--- a/app/workers/pages_domain_removal_cron_worker.rb
+++ b/app/workers/pages_domain_removal_cron_worker.rb
@@ -11,7 +11,7 @@ class PagesDomainRemovalCronWorker
PagesDomain.for_removal.find_each do |domain|
domain.destroy!
rescue => e
- Raven.capture_exception(e)
+ Gitlab::ErrorTracking.track_exception(e)
end
end
end
diff --git a/app/workers/personal_access_tokens/expiring_worker.rb b/app/workers/personal_access_tokens/expiring_worker.rb
new file mode 100644
index 00000000000..f28109c4583
--- /dev/null
+++ b/app/workers/personal_access_tokens/expiring_worker.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+module PersonalAccessTokens
+ class ExpiringWorker
+ include ApplicationWorker
+ include CronjobQueue
+
+ feature_category :authentication_and_authorization
+
+ def perform(*args)
+ notification_service = NotificationService.new
+ limit_date = PersonalAccessToken::DAYS_TO_EXPIRE.days.from_now.to_date
+
+ User.with_expiring_and_not_notified_personal_access_tokens(limit_date).find_each do |user|
+ notification_service.access_token_about_to_expire(user)
+
+ Rails.logger.info "#{self.class}: Notifying User #{user.id} about expiring tokens" # rubocop:disable Gitlab/RailsLogger
+
+ user.personal_access_tokens.expiring_and_not_notified(limit_date).update_all(expire_notification_delivered: true)
+ end
+ end
+ end
+end
diff --git a/app/workers/pipeline_process_worker.rb b/app/workers/pipeline_process_worker.rb
index 2a36ab992e9..200f3619332 100644
--- a/app/workers/pipeline_process_worker.rb
+++ b/app/workers/pipeline_process_worker.rb
@@ -11,7 +11,9 @@ class PipelineProcessWorker
# rubocop: disable CodeReuse/ActiveRecord
def perform(pipeline_id, build_ids = nil)
Ci::Pipeline.find_by(id: pipeline_id).try do |pipeline|
- pipeline.process!(build_ids)
+ Ci::ProcessPipelineService
+ .new(pipeline)
+ .execute(build_ids)
end
end
# rubocop: enable CodeReuse/ActiveRecord
diff --git a/app/workers/process_commit_worker.rb b/app/workers/process_commit_worker.rb
index 8b4d66ae493..36af51d859e 100644
--- a/app/workers/process_commit_worker.rb
+++ b/app/workers/process_commit_worker.rb
@@ -55,16 +55,15 @@ class ProcessCommitWorker
end
end
- # rubocop: disable CodeReuse/ActiveRecord
def update_issue_metrics(commit, author)
mentioned_issues = commit.all_references(author).issues
return if mentioned_issues.empty?
- Issue::Metrics.where(issue_id: mentioned_issues.map(&:id), first_mentioned_in_commit_at: nil)
+ Issue::Metrics.for_issues(mentioned_issues)
+ .with_first_mention_not_earlier_than(commit.committed_date)
.update_all(first_mentioned_in_commit_at: commit.committed_date)
end
- # rubocop: enable CodeReuse/ActiveRecord
def build_commit(project, hash)
date_suffix = '_date'
diff --git a/app/workers/run_pipeline_schedule_worker.rb b/app/workers/run_pipeline_schedule_worker.rb
index 853f774875a..f8f8a2fe7ae 100644
--- a/app/workers/run_pipeline_schedule_worker.rb
+++ b/app/workers/run_pipeline_schedule_worker.rb
@@ -38,10 +38,10 @@ class RunPipelineScheduleWorker
Rails.logger.error "Failed to create a scheduled pipeline. " \
"schedule_id: #{schedule.id} message: #{error.message}"
- Gitlab::Sentry
- .track_exception(error,
+ Gitlab::ErrorTracking
+ .track_and_raise_for_dev_exception(error,
issue_url: 'https://gitlab.com/gitlab-org/gitlab-foss/issues/41231',
- extra: { schedule_id: schedule.id })
+ schedule_id: schedule.id)
end
# rubocop:enable Gitlab/RailsLogger
diff --git a/app/workers/stuck_ci_jobs_worker.rb b/app/workers/stuck_ci_jobs_worker.rb
index b116965d105..d08cea9e494 100644
--- a/app/workers/stuck_ci_jobs_worker.rb
+++ b/app/workers/stuck_ci_jobs_worker.rb
@@ -80,12 +80,12 @@ class StuckCiJobsWorker
end
def track_exception_for_build(ex, build)
- Gitlab::Sentry.track_acceptable_exception(ex, extra: {
+ Gitlab::ErrorTracking.track_exception(ex,
build_id: build.id,
build_name: build.name,
build_stage: build.stage,
pipeline_id: build.pipeline_id,
project_id: build.project_id
- })
+ )
end
end
diff --git a/babel.config.js b/babel.config.js
index 79c401ed975..91c58cf46bf 100644
--- a/babel.config.js
+++ b/babel.config.js
@@ -21,6 +21,7 @@ const plugins = [
'@babel/plugin-proposal-class-properties',
'@babel/plugin-proposal-json-strings',
'@babel/plugin-proposal-private-methods',
+ '@babel/plugin-proposal-optional-chaining',
];
// add code coverage tooling if necessary
diff --git a/bin/secpick b/bin/secpick
index 963172987f4..5da47e65ea3 100755
--- a/bin/secpick
+++ b/bin/secpick
@@ -11,8 +11,12 @@ using Rainbow
module Secpick
BRANCH_PREFIX = 'security'.freeze
STABLE_SUFFIX = 'stable'.freeze
+
DEFAULT_REMOTE = 'dev'.freeze
+ SECURITY_REMOTE = 'security'.freeze
+
NEW_MR_URL = 'https://dev.gitlab.org/gitlab/gitlabhq/merge_requests/new'.freeze
+ SECURITY_MR_URL = 'https://gitlab.com/gitlab-org/security/gitlab/merge_requests/new'.freeze
class SecurityFix
def initialize
@@ -20,7 +24,7 @@ module Secpick
end
def ee?
- File.exist?('./ee/app/models/license.rb')
+ File.exist?(File.expand_path('../ee/app/models/license.rb', __dir__))
end
def dry_run?
@@ -62,17 +66,30 @@ module Secpick
end
def new_mr_url
- if ee?
- NEW_MR_URL.sub('gitlabhq', 'gitlab-ee')
+ if @options[:security_remote]
+ if ee?
+ SECURITY_MR_URL
+ else
+ SECURITY_MR_URL.sub('/gitlab/', '/gitlab-foss/')
+ end
else
- NEW_MR_URL
+ if ee?
+ NEW_MR_URL.sub('gitlabhq', 'gitlab-ee')
+ else
+ NEW_MR_URL
+ end
end
end
def create!
if dry_run?
- puts git_commands.join("\n").green
- puts "\nMerge request params: ".blue
+ puts "\nGit commands:".blue
+ puts git_commands.join("\n")
+
+ puts "\nMerge request URL:".blue
+ puts new_mr_url
+
+ puts "\nMerge request params:".blue
pp gitlab_params
else
cmd = git_commands.join(' && ')
@@ -111,13 +128,27 @@ module Secpick
options[:remote] = remote
end
- opts.on('-d', '--dry-run', 'Only show Git commands, without calling them') do |remote|
+ opts.on('--security-remote', 'Use the new Security group-based workflow on gitlab.com (note: mutually exclusive to --remote)') do
+ unless options[:remote].nil?
+ abort('Cannot use --security-remote with --remote')
+ end
+
+ options[:security_remote] = true
+ options[:remote] = SECURITY_REMOTE
+ end
+
+ opts.on('-d', '--dry-run', 'Only show Git commands, without calling them') do
options[:try] = true
end
opts.on('-h', '--help', 'Displays Help') do
puts opts
+ puts
+ puts 'NOTE: If `--security-remote` is used, commands will default ' \
+ 'to using a `security` remote, and merge requests will be created ' \
+ 'on gitlab.com/gitlab-org/security/ rather than dev.gitlab.org.'
+
exit
end
end
@@ -127,7 +158,7 @@ module Secpick
options[:branch] ||= `git rev-parse --abbrev-ref HEAD`
options[:remote] ||= DEFAULT_REMOTE
- abort("Missing options. Use #{$0} --help to see the list of options available".red) if options.values.include?(nil)
+ abort("Missing options. Use #{$0} --help to see the list of options available".red) if options.value?(nil)
abort("Wrong version format #{options[:version].bold}".red) unless options[:version] =~ /\A\d*\-\d*\Z/
end
end
diff --git a/changelogs/unreleased/11403-add-weight-wip-limit-to-list.yml b/changelogs/unreleased/11403-add-weight-wip-limit-to-list.yml
new file mode 100644
index 00000000000..18bb11e5ba1
--- /dev/null
+++ b/changelogs/unreleased/11403-add-weight-wip-limit-to-list.yml
@@ -0,0 +1,5 @@
+---
+title: Add possibility to save max issue weight on lists
+merge_request: 19220
+author:
+type: added
diff --git a/changelogs/unreleased/11506-add-additional-attributes-and-arguments-for-the-graphql-epic-query.yml b/changelogs/unreleased/11506-add-additional-attributes-and-arguments-for-the-graphql-epic-query.yml
new file mode 100644
index 00000000000..a3bf40ce76f
--- /dev/null
+++ b/changelogs/unreleased/11506-add-additional-attributes-and-arguments-for-the-graphql-epic-query.yml
@@ -0,0 +1,5 @@
+---
+title: Add upvote/downvotes attributes to GraphQL Epic query
+merge_request: 14311
+author:
+type: added
diff --git a/changelogs/unreleased/12390-document-sbt-support.yml b/changelogs/unreleased/12390-document-sbt-support.yml
new file mode 100644
index 00000000000..d2938738a26
--- /dev/null
+++ b/changelogs/unreleased/12390-document-sbt-support.yml
@@ -0,0 +1,5 @@
+---
+title: Document support for sbt dependency scanning
+merge_request: 21588
+author:
+type: added
diff --git a/changelogs/unreleased/12811-add-pip-version-dep-scanning-flag.yml b/changelogs/unreleased/12811-add-pip-version-dep-scanning-flag.yml
new file mode 100644
index 00000000000..0911c0e0e0a
--- /dev/null
+++ b/changelogs/unreleased/12811-add-pip-version-dep-scanning-flag.yml
@@ -0,0 +1,5 @@
+---
+title: Add CI variable to set the version of pip when scanning dependencies of Python projects
+merge_request: 21218
+author:
+type: added
diff --git a/changelogs/unreleased/13075-document-gradle-support.yml b/changelogs/unreleased/13075-document-gradle-support.yml
new file mode 100644
index 00000000000..78c0489d38c
--- /dev/null
+++ b/changelogs/unreleased/13075-document-gradle-support.yml
@@ -0,0 +1,5 @@
+---
+title: Add documentation about dependency scanning gradle support
+merge_request: 21253
+author:
+type: added
diff --git a/changelogs/unreleased/13231-apollo-discussion-caching.yml b/changelogs/unreleased/13231-apollo-discussion-caching.yml
new file mode 100644
index 00000000000..ced88739419
--- /dev/null
+++ b/changelogs/unreleased/13231-apollo-discussion-caching.yml
@@ -0,0 +1,5 @@
+---
+title: Removes caching for design tab discusisons
+merge_request: 20374
+author:
+type: changed
diff --git a/changelogs/unreleased/13768-fix-redo-icn.yml b/changelogs/unreleased/13768-fix-redo-icn.yml
new file mode 100644
index 00000000000..ddac33ef6f5
--- /dev/null
+++ b/changelogs/unreleased/13768-fix-redo-icn.yml
@@ -0,0 +1,5 @@
+---
+title: Replacing incorrect icon in security dashboard.
+merge_request: 20510
+author:
+type: changed
diff --git a/changelogs/unreleased/13978-pipeline-security-remove-vuln-count.yml b/changelogs/unreleased/13978-pipeline-security-remove-vuln-count.yml
new file mode 100644
index 00000000000..5d368f58670
--- /dev/null
+++ b/changelogs/unreleased/13978-pipeline-security-remove-vuln-count.yml
@@ -0,0 +1,5 @@
+---
+title: Remove vulnerability counter from security tab
+merge_request: 20800
+author:
+type: changed
diff --git a/changelogs/unreleased/13979-dashboard-empty-state.yml b/changelogs/unreleased/13979-dashboard-empty-state.yml
new file mode 100644
index 00000000000..90a84833708
--- /dev/null
+++ b/changelogs/unreleased/13979-dashboard-empty-state.yml
@@ -0,0 +1,5 @@
+---
+title: Use better context-specific empty state screens for the Security Dashboards
+merge_request: 18382
+author:
+type: changed
diff --git a/changelogs/unreleased/14857-new-metric-button-not-visible-when-prometheus-app-installed-on-grou.yml b/changelogs/unreleased/14857-new-metric-button-not-visible-when-prometheus-app-installed-on-grou.yml
new file mode 100644
index 00000000000..3abd2473509
--- /dev/null
+++ b/changelogs/unreleased/14857-new-metric-button-not-visible-when-prometheus-app-installed-on-grou.yml
@@ -0,0 +1,5 @@
+---
+title: Activate projects Prometheus service integration when Prometheus managed application is installed on shared cluster
+merge_request:
+author:
+type: fixed
diff --git a/changelogs/unreleased/15398-mvc-container-registry-tag-expiration-policies.yml b/changelogs/unreleased/15398-mvc-container-registry-tag-expiration-policies.yml
new file mode 100644
index 00000000000..d71a5f171c7
--- /dev/null
+++ b/changelogs/unreleased/15398-mvc-container-registry-tag-expiration-policies.yml
@@ -0,0 +1,5 @@
+---
+title: Create container expiration policies for projects
+merge_request: 20412
+author:
+type: added
diff --git a/changelogs/unreleased/16050-improve-first-mentioned-issue-metric-calc.yml b/changelogs/unreleased/16050-improve-first-mentioned-issue-metric-calc.yml
new file mode 100644
index 00000000000..b182aba86af
--- /dev/null
+++ b/changelogs/unreleased/16050-improve-first-mentioned-issue-metric-calc.yml
@@ -0,0 +1,5 @@
+---
+title: Adjust issue metrics first_mentioned_in_commit_at calculation
+merge_request: 20923
+author:
+type: fixed
diff --git a/changelogs/unreleased/17580-enable-etag-caching-notes-for-mrs.yml b/changelogs/unreleased/17580-enable-etag-caching-notes-for-mrs.yml
new file mode 100644
index 00000000000..65e274c0bb0
--- /dev/null
+++ b/changelogs/unreleased/17580-enable-etag-caching-notes-for-mrs.yml
@@ -0,0 +1,5 @@
+---
+title: Enable ETag caching for MR notes polling
+merge_request: 20440
+author:
+type: performance
diff --git a/changelogs/unreleased/18668-clean-up-cohorts.yml b/changelogs/unreleased/18668-clean-up-cohorts.yml
new file mode 100644
index 00000000000..3cb8b304018
--- /dev/null
+++ b/changelogs/unreleased/18668-clean-up-cohorts.yml
@@ -0,0 +1,5 @@
+---
+title: Clean up the cohorts table
+merge_request: 20779
+author:
+type: changed
diff --git a/changelogs/unreleased/20298-labels-management-is-not-accessible-when-issues-are-disabled.yml b/changelogs/unreleased/20298-labels-management-is-not-accessible-when-issues-are-disabled.yml
new file mode 100644
index 00000000000..26a7d12f6eb
--- /dev/null
+++ b/changelogs/unreleased/20298-labels-management-is-not-accessible-when-issues-are-disabled.yml
@@ -0,0 +1,5 @@
+---
+title: Display Labels item in sidebar when Issues are disabled
+merge_request: 20817
+author:
+type: fixed
diff --git a/changelogs/unreleased/20321-optional-only-jira-issue-link-on-gitlab-commit-no-jira-comment.yml b/changelogs/unreleased/20321-optional-only-jira-issue-link-on-gitlab-commit-no-jira-comment.yml
new file mode 100644
index 00000000000..df4ce8200a6
--- /dev/null
+++ b/changelogs/unreleased/20321-optional-only-jira-issue-link-on-gitlab-commit-no-jira-comment.yml
@@ -0,0 +1,5 @@
+---
+title: Add ability to make Jira comments optional
+merge_request: 19004
+author:
+type: added
diff --git a/changelogs/unreleased/20709-add-runner-info-in-build-event.yaml b/changelogs/unreleased/20709-add-runner-info-in-build-event.yaml
new file mode 100644
index 00000000000..4a9d79d7299
--- /dev/null
+++ b/changelogs/unreleased/20709-add-runner-info-in-build-event.yaml
@@ -0,0 +1,5 @@
+---
+title: Add runner information in build web hook event
+merge_request: 20709
+author: Gaetan Semet
+type: added
diff --git a/changelogs/unreleased/20890-soft-delete-user-api-status-code.yml b/changelogs/unreleased/20890-soft-delete-user-api-status-code.yml
new file mode 100644
index 00000000000..5ade53f152d
--- /dev/null
+++ b/changelogs/unreleased/20890-soft-delete-user-api-status-code.yml
@@ -0,0 +1,5 @@
+---
+title: Adds 409 when user cannot be soft deleted through the API
+merge_request: 21037
+author:
+type: fixed
diff --git a/changelogs/unreleased/20978-add-allow-failure-in-pipeline-event.yaml b/changelogs/unreleased/20978-add-allow-failure-in-pipeline-event.yaml
new file mode 100644
index 00000000000..2a7e731e0be
--- /dev/null
+++ b/changelogs/unreleased/20978-add-allow-failure-in-pipeline-event.yaml
@@ -0,0 +1,6 @@
+---
+title: |
+ Add allow failure in pipeline webhook event
+merge_request: 20978
+author: Gaetan Semet
+type: added
diff --git a/changelogs/unreleased/21059-optimize-deploy-keys-index-page.yml b/changelogs/unreleased/21059-optimize-deploy-keys-index-page.yml
new file mode 100644
index 00000000000..18a3b275641
--- /dev/null
+++ b/changelogs/unreleased/21059-optimize-deploy-keys-index-page.yml
@@ -0,0 +1,5 @@
+---
+title: Optimize loading the repository deploy keys page
+merge_request: 20970
+author:
+type: performance
diff --git a/changelogs/unreleased/21800-mentioned-users-models-with-array-type.yml b/changelogs/unreleased/21800-mentioned-users-models-with-array-type.yml
new file mode 100644
index 00000000000..2f9ccdd8fe3
--- /dev/null
+++ b/changelogs/unreleased/21800-mentioned-users-models-with-array-type.yml
@@ -0,0 +1,5 @@
+---
+title: Store users, groups, projects mentioned in Markdown to DB tables
+merge_request: 19088
+author:
+type: added
diff --git a/changelogs/unreleased/21800-mentioned-users-table-migrations.yml b/changelogs/unreleased/21800-mentioned-users-table-migrations.yml
new file mode 100644
index 00000000000..82e210eb458
--- /dev/null
+++ b/changelogs/unreleased/21800-mentioned-users-table-migrations.yml
@@ -0,0 +1,6 @@
+---
+title: Creates DB tables for storing mentioned users, groups, projects referenced
+ in a note or issuable description
+merge_request: 18316
+author:
+type: added
diff --git a/changelogs/unreleased/22392-remove-eks-cluster-feature-flag.yml b/changelogs/unreleased/22392-remove-eks-cluster-feature-flag.yml
new file mode 100644
index 00000000000..07dbd072cc2
--- /dev/null
+++ b/changelogs/unreleased/22392-remove-eks-cluster-feature-flag.yml
@@ -0,0 +1,5 @@
+---
+title: Enable creating Amazon EKS clusters from GitLab
+merge_request: 20333
+author:
+type: added
diff --git a/changelogs/unreleased/22392-update-cluster-settings-provider-link.yml b/changelogs/unreleased/22392-update-cluster-settings-provider-link.yml
new file mode 100644
index 00000000000..cd041ea491b
--- /dev/null
+++ b/changelogs/unreleased/22392-update-cluster-settings-provider-link.yml
@@ -0,0 +1,5 @@
+---
+title: Update external link to provider in cluster settings
+merge_request: 20425
+author:
+type: fixed
diff --git a/changelogs/unreleased/22465-rack-attack-authenticate-runner-requests-with-job-token-basic-auth.yml b/changelogs/unreleased/22465-rack-attack-authenticate-runner-requests-with-job-token-basic-auth.yml
new file mode 100644
index 00000000000..06f618bd29b
--- /dev/null
+++ b/changelogs/unreleased/22465-rack-attack-authenticate-runner-requests-with-job-token-basic-auth.yml
@@ -0,0 +1,5 @@
+---
+title: Authenticate requests with job token as basic auth header for request limiting
+merge_request: 21562
+author:
+type: fixed
diff --git a/changelogs/unreleased/22465-rack-attack-authenticate-runner-requests.yml b/changelogs/unreleased/22465-rack-attack-authenticate-runner-requests.yml
new file mode 100644
index 00000000000..7d3cbcc2a1c
--- /dev/null
+++ b/changelogs/unreleased/22465-rack-attack-authenticate-runner-requests.yml
@@ -0,0 +1,5 @@
+---
+title: Authenticate runner requests in Rack::Attack
+merge_request: 21311
+author:
+type: fixed
diff --git a/changelogs/unreleased/23746-error-500-when-trying-to-destroy-oauth-application-entry-in-admin-a.yml b/changelogs/unreleased/23746-error-500-when-trying-to-destroy-oauth-application-entry-in-admin-a.yml
new file mode 100644
index 00000000000..c69f1748242
--- /dev/null
+++ b/changelogs/unreleased/23746-error-500-when-trying-to-destroy-oauth-application-entry-in-admin-a.yml
@@ -0,0 +1,5 @@
+---
+title: Use cascading deletes for deleting oauth_openid_requests upon deleting an oauth_access_grant
+merge_request: 19617
+author:
+type: fixed
diff --git a/changelogs/unreleased/24190-archived-project-warning-message.yml b/changelogs/unreleased/24190-archived-project-warning-message.yml
new file mode 100644
index 00000000000..bfe1976451e
--- /dev/null
+++ b/changelogs/unreleased/24190-archived-project-warning-message.yml
@@ -0,0 +1,5 @@
+---
+title: Show correct warning on issue when project is archived
+merge_request: 20078
+author:
+type: fixed
diff --git a/changelogs/unreleased/24804-import-page-namespace-fix.yml b/changelogs/unreleased/24804-import-page-namespace-fix.yml
new file mode 100644
index 00000000000..bf1449d1626
--- /dev/null
+++ b/changelogs/unreleased/24804-import-page-namespace-fix.yml
@@ -0,0 +1,5 @@
+---
+title: Fixed project import from export ignoring namespace selection
+merge_request: 20405
+author:
+type: fixed
diff --git a/changelogs/unreleased/25351-texts-and-structure.yml b/changelogs/unreleased/25351-texts-and-structure.yml
new file mode 100644
index 00000000000..aa7c7205e32
--- /dev/null
+++ b/changelogs/unreleased/25351-texts-and-structure.yml
@@ -0,0 +1,5 @@
+---
+title: Update information and button text for deployment footer
+merge_request: 18918
+author:
+type: changed
diff --git a/changelogs/unreleased/26013-release-generation-from-within-gitlab-ci-yml-6.yml b/changelogs/unreleased/26013-release-generation-from-within-gitlab-ci-yml-6.yml
new file mode 100644
index 00000000000..12dc1b48bae
--- /dev/null
+++ b/changelogs/unreleased/26013-release-generation-from-within-gitlab-ci-yml-6.yml
@@ -0,0 +1,5 @@
+---
+title: Allow Job-Token authentication on Releases creation API
+merge_request: 20632
+author:
+type: added
diff --git a/changelogs/unreleased/26019-add-evidence-json.yml b/changelogs/unreleased/26019-add-evidence-json.yml
new file mode 100644
index 00000000000..91d3754ea58
--- /dev/null
+++ b/changelogs/unreleased/26019-add-evidence-json.yml
@@ -0,0 +1,5 @@
+---
+title: Add evidence collection for Releases
+merge_request: 18874
+author:
+type: changed
diff --git a/changelogs/unreleased/26019-restriction-on-evidence.yml b/changelogs/unreleased/26019-restriction-on-evidence.yml
new file mode 100644
index 00000000000..21157eeecd3
--- /dev/null
+++ b/changelogs/unreleased/26019-restriction-on-evidence.yml
@@ -0,0 +1,5 @@
+---
+title: Evidence - Added restriction for guest on Release page
+merge_request: 21102
+author:
+type: changed
diff --git a/changelogs/unreleased/26293-prevent-merge-if-pipeline-has-failed.yml b/changelogs/unreleased/26293-prevent-merge-if-pipeline-has-failed.yml
new file mode 100644
index 00000000000..3bb3c785945
--- /dev/null
+++ b/changelogs/unreleased/26293-prevent-merge-if-pipeline-has-failed.yml
@@ -0,0 +1,5 @@
+---
+title: Update merging an MR behavior on the API when pipeline fails
+merge_request: 19641
+author: briankabiro
+type: fixed
diff --git a/changelogs/unreleased/27025-add-border-top-in-readme.yml b/changelogs/unreleased/27025-add-border-top-in-readme.yml
new file mode 100644
index 00000000000..16948754db2
--- /dev/null
+++ b/changelogs/unreleased/27025-add-border-top-in-readme.yml
@@ -0,0 +1,5 @@
+---
+title: Fix top border of README file header in file list
+merge_request: 21314
+author:
+type: fixed
diff --git a/changelogs/unreleased/27239-display-a-better-message-when-starting-a-discussion-on-a-deleted-co.yml b/changelogs/unreleased/27239-display-a-better-message-when-starting-a-discussion-on-a-deleted-co.yml
new file mode 100644
index 00000000000..03c68b50c68
--- /dev/null
+++ b/changelogs/unreleased/27239-display-a-better-message-when-starting-a-discussion-on-a-deleted-co.yml
@@ -0,0 +1,5 @@
+---
+title: Display a better message when starting a discussion on a deleted comment
+merge_request: 20031
+author: Jacopo Beschi @jacopo-beschi
+type: changed
diff --git a/changelogs/unreleased/27244-discard-all-changes.yml b/changelogs/unreleased/27244-discard-all-changes.yml
new file mode 100644
index 00000000000..70750208667
--- /dev/null
+++ b/changelogs/unreleased/27244-discard-all-changes.yml
@@ -0,0 +1,5 @@
+---
+title: Fix "Discard all" for new and renamed files
+merge_request: 21854
+author:
+type: fixed
diff --git a/changelogs/unreleased/27244-webide-discard-all-changes.yml b/changelogs/unreleased/27244-webide-discard-all-changes.yml
new file mode 100644
index 00000000000..ace7ed8d7f7
--- /dev/null
+++ b/changelogs/unreleased/27244-webide-discard-all-changes.yml
@@ -0,0 +1,5 @@
+---
+title: "Web IDE: Fix the console error that happens when discarding a newly added/uploaded file."
+merge_request: 21537
+author:
+type: fixed
diff --git a/changelogs/unreleased/27630-deploy-to-ci-specified-namespace.yml b/changelogs/unreleased/27630-deploy-to-ci-specified-namespace.yml
new file mode 100644
index 00000000000..f743f780837
--- /dev/null
+++ b/changelogs/unreleased/27630-deploy-to-ci-specified-namespace.yml
@@ -0,0 +1,5 @@
+---
+title: Use CI configured namespace for deployments to unmanaged clusters
+merge_request: 20686
+author:
+type: added
diff --git a/changelogs/unreleased/27630-fail-build-if-namespace-specified-in-ci-for-managed-cluster.yml b/changelogs/unreleased/27630-fail-build-if-namespace-specified-in-ci-for-managed-cluster.yml
new file mode 100644
index 00000000000..66d8d9e0eea
--- /dev/null
+++ b/changelogs/unreleased/27630-fail-build-if-namespace-specified-in-ci-for-managed-cluster.yml
@@ -0,0 +1,6 @@
+---
+title: Do not allow specifying a Kubernetes namespace via CI template for managed
+ clusters
+merge_request: 21223
+author:
+type: added
diff --git a/changelogs/unreleased/27630-specify-kubernetes-namespace-in-ci-template.yml b/changelogs/unreleased/27630-specify-kubernetes-namespace-in-ci-template.yml
new file mode 100644
index 00000000000..5ec5cb2015d
--- /dev/null
+++ b/changelogs/unreleased/27630-specify-kubernetes-namespace-in-ci-template.yml
@@ -0,0 +1,5 @@
+---
+title: Allow specifying Kubernetes namespace for an environment in gitlab-ci.yml
+merge_request: 20270
+author:
+type: added
diff --git a/changelogs/unreleased/27630-use-ci-specified-namespace-for-deploy-boards.yml b/changelogs/unreleased/27630-use-ci-specified-namespace-for-deploy-boards.yml
new file mode 100644
index 00000000000..a0577440f80
--- /dev/null
+++ b/changelogs/unreleased/27630-use-ci-specified-namespace-for-deploy-boards.yml
@@ -0,0 +1,6 @@
+---
+title: Allow Kubernetes namespaces specified via CI template to be used for terminals,
+ pod logs and deploy boards
+merge_request: 21460
+author:
+type: added
diff --git a/changelogs/unreleased/28075-error-while-fetching-envs.yml b/changelogs/unreleased/28075-error-while-fetching-envs.yml
new file mode 100644
index 00000000000..68d936f8f9c
--- /dev/null
+++ b/changelogs/unreleased/28075-error-while-fetching-envs.yml
@@ -0,0 +1,5 @@
+---
+title: Added lightweight check when retrieving Prometheus metrics.
+merge_request: 21099
+author:
+type: performance
diff --git a/changelogs/unreleased/28328-lock-button-fix.yml b/changelogs/unreleased/28328-lock-button-fix.yml
new file mode 100644
index 00000000000..30d8aff06d1
--- /dev/null
+++ b/changelogs/unreleased/28328-lock-button-fix.yml
@@ -0,0 +1,5 @@
+---
+title: Unlock button changed from Icon to String
+merge_request: 20307
+author:
+type: changed
diff --git a/changelogs/unreleased/28365-bypass-confirmation-box-for-delete-user-and-contributions.yml b/changelogs/unreleased/28365-bypass-confirmation-box-for-delete-user-and-contributions.yml
new file mode 100644
index 00000000000..27a85ffe008
--- /dev/null
+++ b/changelogs/unreleased/28365-bypass-confirmation-box-for-delete-user-and-contributions.yml
@@ -0,0 +1,5 @@
+---
+title: Fix delete user dialog bypass caused by hitting enter
+merge_request: 17343
+author:
+type: fixed
diff --git a/changelogs/unreleased/29067-vrt-no-auth.yml b/changelogs/unreleased/29067-vrt-no-auth.yml
new file mode 100644
index 00000000000..5e3a81740c7
--- /dev/null
+++ b/changelogs/unreleased/29067-vrt-no-auth.yml
@@ -0,0 +1,5 @@
+---
+title: Remove authentication step from visual review tools instructions
+merge_request:
+author:
+type: changed
diff --git a/changelogs/unreleased/29165-confusing-wording-fix.yml b/changelogs/unreleased/29165-confusing-wording-fix.yml
new file mode 100644
index 00000000000..95d64156833
--- /dev/null
+++ b/changelogs/unreleased/29165-confusing-wording-fix.yml
@@ -0,0 +1,5 @@
+---
+title: Fixes wording on runner admin
+merge_request:
+author:
+type: changed
diff --git a/changelogs/unreleased/29713-graphql-add-issue-weight-sorting.yml b/changelogs/unreleased/29713-graphql-add-issue-weight-sorting.yml
new file mode 100644
index 00000000000..ce2ada38a82
--- /dev/null
+++ b/changelogs/unreleased/29713-graphql-add-issue-weight-sorting.yml
@@ -0,0 +1,5 @@
+---
+title: Graphql query for issues can now be sorted by weight
+merge_request: 19721
+author:
+type: added
diff --git a/changelogs/unreleased/30016-changing-branch-keep-details.yml b/changelogs/unreleased/30016-changing-branch-keep-details.yml
new file mode 100644
index 00000000000..05a280575e5
--- /dev/null
+++ b/changelogs/unreleased/30016-changing-branch-keep-details.yml
@@ -0,0 +1,5 @@
+---
+title: Keep details in MR when changing target branch
+merge_request: 19138
+author:
+type: changed
diff --git a/changelogs/unreleased/30036-award-emoji-tooltip-is-escaped-twice.yml b/changelogs/unreleased/30036-award-emoji-tooltip-is-escaped-twice.yml
new file mode 100644
index 00000000000..6a8ee6e889c
--- /dev/null
+++ b/changelogs/unreleased/30036-award-emoji-tooltip-is-escaped-twice.yml
@@ -0,0 +1,5 @@
+---
+title: Fix award emoji tooltip being escaped twice if multiple people voted
+merge_request: 19273
+author: Brian T
+type: fixed
diff --git a/changelogs/unreleased/30390-cablett-duplicate-labels-nonunique-index.yml b/changelogs/unreleased/30390-cablett-duplicate-labels-nonunique-index.yml
new file mode 100644
index 00000000000..7898a40e198
--- /dev/null
+++ b/changelogs/unreleased/30390-cablett-duplicate-labels-nonunique-index.yml
@@ -0,0 +1,5 @@
+---
+title: Add nonunique indexes to Labels
+merge_request: 21230
+author:
+type: fixed
diff --git a/changelogs/unreleased/30666-fix-sr-term-style.yml b/changelogs/unreleased/30666-fix-sr-term-style.yml
new file mode 100644
index 00000000000..e69a7f49ae8
--- /dev/null
+++ b/changelogs/unreleased/30666-fix-sr-term-style.yml
@@ -0,0 +1,5 @@
+---
+title: Changes to how the search term is styled in the results
+merge_request: 20416
+author:
+type: changed
diff --git a/changelogs/unreleased/31031-gitaly-n-1-queries-in-api-version-groups-id.yml b/changelogs/unreleased/31031-gitaly-n-1-queries-in-api-version-groups-id.yml
new file mode 100644
index 00000000000..56ab804e5f6
--- /dev/null
+++ b/changelogs/unreleased/31031-gitaly-n-1-queries-in-api-version-groups-id.yml
@@ -0,0 +1,5 @@
+---
+title: Limit number of projects displayed in GET /groups/:id API
+merge_request: 20023
+author:
+type: deprecated
diff --git a/changelogs/unreleased/31236-auto-update-merge-widget.yml b/changelogs/unreleased/31236-auto-update-merge-widget.yml
new file mode 100644
index 00000000000..b84e3e2c15b
--- /dev/null
+++ b/changelogs/unreleased/31236-auto-update-merge-widget.yml
@@ -0,0 +1,5 @@
+---
+title: Allow merge without refresh when new commits are pushed
+merge_request: 19725
+author:
+type: changed
diff --git a/changelogs/unreleased/31391-update-sparkline-chart-deployment-widget.yml b/changelogs/unreleased/31391-update-sparkline-chart-deployment-widget.yml
new file mode 100644
index 00000000000..c16e1770f30
--- /dev/null
+++ b/changelogs/unreleased/31391-update-sparkline-chart-deployment-widget.yml
@@ -0,0 +1,5 @@
+---
+title: Improve sparkline chart in MR widget deployment
+merge_request: 20085
+author:
+type: other
diff --git a/changelogs/unreleased/31397-go-get-meta-source.yml b/changelogs/unreleased/31397-go-get-meta-source.yml
new file mode 100644
index 00000000000..b8ab155ab51
--- /dev/null
+++ b/changelogs/unreleased/31397-go-get-meta-source.yml
@@ -0,0 +1,5 @@
+---
+title: Support go-source meta tag for godoc.org
+merge_request: 19888
+author: Ethan Reesor (@firelizzard)
+type: changed
diff --git a/changelogs/unreleased/31611-limit-the-number-of-stored-sessions-per-user.yml b/changelogs/unreleased/31611-limit-the-number-of-stored-sessions-per-user.yml
new file mode 100644
index 00000000000..aac9e94e1cf
--- /dev/null
+++ b/changelogs/unreleased/31611-limit-the-number-of-stored-sessions-per-user.yml
@@ -0,0 +1,5 @@
+---
+title: Resolve Limit the number of stored sessions per user
+merge_request: 19325
+author:
+type: added
diff --git a/changelogs/unreleased/31649-environment-rollback-was-not-friendly.yml b/changelogs/unreleased/31649-environment-rollback-was-not-friendly.yml
new file mode 100644
index 00000000000..52135667992
--- /dev/null
+++ b/changelogs/unreleased/31649-environment-rollback-was-not-friendly.yml
@@ -0,0 +1,5 @@
+---
+title: Resolve environment rollback was not friendly
+merge_request: 20121
+author:
+type: other
diff --git a/changelogs/unreleased/31662-fix-excessive-find-file-escaping.yml b/changelogs/unreleased/31662-fix-excessive-find-file-escaping.yml
new file mode 100644
index 00000000000..5ca551c63cb
--- /dev/null
+++ b/changelogs/unreleased/31662-fix-excessive-find-file-escaping.yml
@@ -0,0 +1,5 @@
+---
+title: Fix project file finder url encoding file path separators
+merge_request: 21861
+author:
+type: fixed
diff --git a/changelogs/unreleased/31759-clear-cluster-cache.yml b/changelogs/unreleased/31759-clear-cluster-cache.yml
new file mode 100644
index 00000000000..29e0dda43ec
--- /dev/null
+++ b/changelogs/unreleased/31759-clear-cluster-cache.yml
@@ -0,0 +1,5 @@
+---
+title: Add option to delete cached Kubernetes namespaces
+merge_request: 20411
+author:
+type: added
diff --git a/changelogs/unreleased/31830-limit-mr-target-branches.yml b/changelogs/unreleased/31830-limit-mr-target-branches.yml
new file mode 100644
index 00000000000..6247e74f8a6
--- /dev/null
+++ b/changelogs/unreleased/31830-limit-mr-target-branches.yml
@@ -0,0 +1,5 @@
+---
+title: Require group_id or project_id for MR target branch autocomplete action
+merge_request: 20933
+author:
+type: performance
diff --git a/changelogs/unreleased/31914-graphql-mark-all-todos-as-done-pd.yml b/changelogs/unreleased/31914-graphql-mark-all-todos-as-done-pd.yml
new file mode 100644
index 00000000000..ecbad4d76bc
--- /dev/null
+++ b/changelogs/unreleased/31914-graphql-mark-all-todos-as-done-pd.yml
@@ -0,0 +1,5 @@
+---
+title: Add GraphQL mutation to mark all todos done for a user
+merge_request: 19482
+author:
+type: added
diff --git a/changelogs/unreleased/31914-graphql-todo-query-support-multiple-query.yml b/changelogs/unreleased/31914-graphql-todo-query-support-multiple-query.yml
new file mode 100644
index 00000000000..e028523da79
--- /dev/null
+++ b/changelogs/unreleased/31914-graphql-todo-query-support-multiple-query.yml
@@ -0,0 +1,5 @@
+---
+title: Enable support for multiple content query in GraphQL Todo API
+merge_request: 19576
+author:
+type: changed
diff --git a/changelogs/unreleased/31914-graphql-todo-restore-pd.yml b/changelogs/unreleased/31914-graphql-todo-restore-pd.yml
new file mode 100644
index 00000000000..37af6be8276
--- /dev/null
+++ b/changelogs/unreleased/31914-graphql-todo-restore-pd.yml
@@ -0,0 +1,5 @@
+---
+title: Add GraphQL mutation to restore a Todo
+merge_request: 20261
+author:
+type: added
diff --git a/changelogs/unreleased/32115-structured-logging-mail_room.yml b/changelogs/unreleased/32115-structured-logging-mail_room.yml
new file mode 100644
index 00000000000..17b678a82d4
--- /dev/null
+++ b/changelogs/unreleased/32115-structured-logging-mail_room.yml
@@ -0,0 +1,5 @@
+---
+title: Upgrade `mail_room` gem to 0.10.0 and enable structured logging
+merge_request: 19186
+author:
+type: added
diff --git a/changelogs/unreleased/32358-add-modsec-blocking-usage-stats-per-project.yml b/changelogs/unreleased/32358-add-modsec-blocking-usage-stats-per-project.yml
new file mode 100644
index 00000000000..3c2b2ad7e1d
--- /dev/null
+++ b/changelogs/unreleased/32358-add-modsec-blocking-usage-stats-per-project.yml
@@ -0,0 +1,5 @@
+---
+title: Add modsecurity deployment counts to usage ping
+merge_request: 20196
+author:
+type: added
diff --git a/changelogs/unreleased/32470-ui-degradation-on-environment-folder-view.yml b/changelogs/unreleased/32470-ui-degradation-on-environment-folder-view.yml
new file mode 100644
index 00000000000..63482f7be68
--- /dev/null
+++ b/changelogs/unreleased/32470-ui-degradation-on-environment-folder-view.yml
@@ -0,0 +1,5 @@
+---
+title: Fix broken UI on Environment folder
+merge_request: 17427
+author: Takuya Noguchi
+type: fixed
diff --git a/changelogs/unreleased/32557-convert-generic-epic-error-banners-to-form-validation-messages.yml b/changelogs/unreleased/32557-convert-generic-epic-error-banners-to-form-validation-messages.yml
new file mode 100644
index 00000000000..d40cfa2fce3
--- /dev/null
+++ b/changelogs/unreleased/32557-convert-generic-epic-error-banners-to-form-validation-messages.yml
@@ -0,0 +1,5 @@
+---
+title: Convert flash epic error to form validation error
+merge_request: 20130
+author:
+type: changed
diff --git a/changelogs/unreleased/32557-fix-error-adding-already-linked-issue.yml b/changelogs/unreleased/32557-fix-error-adding-already-linked-issue.yml
new file mode 100644
index 00000000000..ebfa8b50dac
--- /dev/null
+++ b/changelogs/unreleased/32557-fix-error-adding-already-linked-issue.yml
@@ -0,0 +1,5 @@
+---
+title: Fix error when linking already linked issue to epic
+merge_request: 21213
+author:
+type: fixed
diff --git a/changelogs/unreleased/32778-change-retries-approach-promql-queries.yml b/changelogs/unreleased/32778-change-retries-approach-promql-queries.yml
new file mode 100644
index 00000000000..ab5f85e9181
--- /dev/null
+++ b/changelogs/unreleased/32778-change-retries-approach-promql-queries.yml
@@ -0,0 +1,5 @@
+---
+title: Improve the way the metrics dashboard waits for data
+merge_request: 20687
+author:
+type: fixed
diff --git a/changelogs/unreleased/32780-when-zooming-metrics-at-some-point-we-can-t-adjust-the-zoom-any-fur.yml b/changelogs/unreleased/32780-when-zooming-metrics-at-some-point-we-can-t-adjust-the-zoom-any-fur.yml
new file mode 100644
index 00000000000..5a674f415d3
--- /dev/null
+++ b/changelogs/unreleased/32780-when-zooming-metrics-at-some-point-we-can-t-adjust-the-zoom-any-fur.yml
@@ -0,0 +1,5 @@
+---
+title: Fixed monitor charts from throwing error when zoomed
+merge_request: 20331
+author:
+type: fixed
diff --git a/changelogs/unreleased/32897-convert-alerts-to-toasts.yml b/changelogs/unreleased/32897-convert-alerts-to-toasts.yml
new file mode 100644
index 00000000000..5c5af52162d
--- /dev/null
+++ b/changelogs/unreleased/32897-convert-alerts-to-toasts.yml
@@ -0,0 +1,5 @@
+---
+title: Convert flash alerts to toasts
+merge_request: 20356
+author:
+type: added
diff --git a/changelogs/unreleased/32959-dismissal-ux-improvement.yml b/changelogs/unreleased/32959-dismissal-ux-improvement.yml
new file mode 100644
index 00000000000..20f0af549d3
--- /dev/null
+++ b/changelogs/unreleased/32959-dismissal-ux-improvement.yml
@@ -0,0 +1,5 @@
+---
+title: Improve UX for vulnerability dismissal note
+merge_request: 20768
+author:
+type: fixed
diff --git a/changelogs/unreleased/33052-design-comment-link-styling.yml b/changelogs/unreleased/33052-design-comment-link-styling.yml
new file mode 100644
index 00000000000..ea69a1661a1
--- /dev/null
+++ b/changelogs/unreleased/33052-design-comment-link-styling.yml
@@ -0,0 +1,5 @@
+---
+title: Add link color to design comments
+merge_request: 20302
+author:
+type: fixed
diff --git a/changelogs/unreleased/33099-add-pipelines-api-order-by-updated-at.yml b/changelogs/unreleased/33099-add-pipelines-api-order-by-updated-at.yml
new file mode 100644
index 00000000000..0648adc96bf
--- /dev/null
+++ b/changelogs/unreleased/33099-add-pipelines-api-order-by-updated-at.yml
@@ -0,0 +1,5 @@
+---
+title: Allow order_by updated_at in Pipelines API
+merge_request: 19886
+author:
+type: added
diff --git a/changelogs/unreleased/33099-updated_at-filters-for-pipelines-api.yml b/changelogs/unreleased/33099-updated_at-filters-for-pipelines-api.yml
new file mode 100644
index 00000000000..799a0597afc
--- /dev/null
+++ b/changelogs/unreleased/33099-updated_at-filters-for-pipelines-api.yml
@@ -0,0 +1,5 @@
+---
+title: Add updated_before and updated_after filters to the Pipelines API endpoint
+merge_request: 21133
+author:
+type: added
diff --git a/changelogs/unreleased/33257-prevent-accidental-deletions-via-soft-delete-for-groups-services.yml b/changelogs/unreleased/33257-prevent-accidental-deletions-via-soft-delete-for-groups-services.yml
new file mode 100644
index 00000000000..ffc3651185b
--- /dev/null
+++ b/changelogs/unreleased/33257-prevent-accidental-deletions-via-soft-delete-for-groups-services.yml
@@ -0,0 +1,5 @@
+---
+title: Add services for 'soft-delete for groups' feature
+merge_request: 19358
+author:
+type: added
diff --git a/changelogs/unreleased/33257-prevent-accidental-deletions-via-soft-delete-for-groups-workers.yml b/changelogs/unreleased/33257-prevent-accidental-deletions-via-soft-delete-for-groups-workers.yml
new file mode 100644
index 00000000000..d4ce5cd8310
--- /dev/null
+++ b/changelogs/unreleased/33257-prevent-accidental-deletions-via-soft-delete-for-groups-workers.yml
@@ -0,0 +1,5 @@
+---
+title: Add workers for 'soft-delete for groups' feature
+merge_request: 19679
+author:
+type: added
diff --git a/changelogs/unreleased/33318-make-internal-projects-poolable.yml b/changelogs/unreleased/33318-make-internal-projects-poolable.yml
new file mode 100644
index 00000000000..c13794018d2
--- /dev/null
+++ b/changelogs/unreleased/33318-make-internal-projects-poolable.yml
@@ -0,0 +1,5 @@
+---
+title: Make internal projects poolable
+merge_request: 19295
+author: briankabiro
+type: changed
diff --git a/changelogs/unreleased/33338-notify-user-if-they-have-over-1000-epics-in-roadmap.yml b/changelogs/unreleased/33338-notify-user-if-they-have-over-1000-epics-in-roadmap.yml
new file mode 100644
index 00000000000..ad3033305b8
--- /dev/null
+++ b/changelogs/unreleased/33338-notify-user-if-they-have-over-1000-epics-in-roadmap.yml
@@ -0,0 +1,5 @@
+---
+title: Notify user when over 1000 epics in roadmap
+merge_request: 19419
+author:
+type: added
diff --git a/changelogs/unreleased/33482-allow-text-wrapping-on-repository-tags-page.yml b/changelogs/unreleased/33482-allow-text-wrapping-on-repository-tags-page.yml
new file mode 100644
index 00000000000..567e1b7cfda
--- /dev/null
+++ b/changelogs/unreleased/33482-allow-text-wrapping-on-repository-tags-page.yml
@@ -0,0 +1,5 @@
+---
+title: Allow patch notes on repo tags page to word wrap
+merge_request: 20135
+author:
+type: fixed
diff --git a/changelogs/unreleased/33596-package-ci-build-data.yml b/changelogs/unreleased/33596-package-ci-build-data.yml
new file mode 100644
index 00000000000..9cde4436f8d
--- /dev/null
+++ b/changelogs/unreleased/33596-package-ci-build-data.yml
@@ -0,0 +1,5 @@
+---
+title: Add Pipeline Metadata to Packages
+merge_request: 19796
+author:
+type: added
diff --git a/changelogs/unreleased/33596-package-ci-metadata.yml b/changelogs/unreleased/33596-package-ci-metadata.yml
new file mode 100644
index 00000000000..24fecc077c8
--- /dev/null
+++ b/changelogs/unreleased/33596-package-ci-metadata.yml
@@ -0,0 +1,5 @@
+---
+title: Improve job tokens and provide access helper
+merge_request: 19793
+author:
+type: other
diff --git a/changelogs/unreleased/33718-add-new-dep-scanning-flag.yml b/changelogs/unreleased/33718-add-new-dep-scanning-flag.yml
new file mode 100644
index 00000000000..e8ff06461e2
--- /dev/null
+++ b/changelogs/unreleased/33718-add-new-dep-scanning-flag.yml
@@ -0,0 +1,5 @@
+---
+title: Add dependency scanning flag for skipping automatic bundler audit update
+merge_request: 20743
+author:
+type: added
diff --git a/changelogs/unreleased/33880-add-api-to-disable-pages.yml b/changelogs/unreleased/33880-add-api-to-disable-pages.yml
new file mode 100644
index 00000000000..5be872addd0
--- /dev/null
+++ b/changelogs/unreleased/33880-add-api-to-disable-pages.yml
@@ -0,0 +1,5 @@
+---
+title: Add API endpoint to unpublish GitLab Pages
+merge_request: 19781
+author:
+type: added
diff --git a/changelogs/unreleased/34067-add-recent-searches-to-sentry-error-list-in-gitlab.yml b/changelogs/unreleased/34067-add-recent-searches-to-sentry-error-list-in-gitlab.yml
new file mode 100644
index 00000000000..ec5b0a569c6
--- /dev/null
+++ b/changelogs/unreleased/34067-add-recent-searches-to-sentry-error-list-in-gitlab.yml
@@ -0,0 +1,5 @@
+---
+title: Add recent search to error tracking
+merge_request: 19301
+author:
+type: added
diff --git a/changelogs/unreleased/34068-sort-by-first-seen-last-seen-and-frequency-in-sentry-error-list-in-.yml b/changelogs/unreleased/34068-sort-by-first-seen-last-seen-and-frequency-in-sentry-error-list-in-.yml
new file mode 100644
index 00000000000..5bcf520f6cb
--- /dev/null
+++ b/changelogs/unreleased/34068-sort-by-first-seen-last-seen-and-frequency-in-sentry-error-list-in-.yml
@@ -0,0 +1,5 @@
+---
+title: Add sort param to error tracking issue index
+merge_request: 20101
+author:
+type: changed
diff --git a/changelogs/unreleased/34068-sort-error-list.yml b/changelogs/unreleased/34068-sort-error-list.yml
new file mode 100644
index 00000000000..4c33c28a1ca
--- /dev/null
+++ b/changelogs/unreleased/34068-sort-error-list.yml
@@ -0,0 +1,5 @@
+---
+title: Sort Sentry error list by first seen, last seen or frequency
+merge_request: 21250
+author:
+type: added
diff --git a/changelogs/unreleased/34121-add-error-states-to-getters.yml b/changelogs/unreleased/34121-add-error-states-to-getters.yml
new file mode 100644
index 00000000000..9e9bd93d509
--- /dev/null
+++ b/changelogs/unreleased/34121-add-error-states-to-getters.yml
@@ -0,0 +1,5 @@
+---
+title: Add specific error states to dashboard
+merge_request: 21618
+author:
+type: added
diff --git a/changelogs/unreleased/34121-group-level-no-data-store.yml b/changelogs/unreleased/34121-group-level-no-data-store.yml
new file mode 100644
index 00000000000..25e6f20f3f7
--- /dev/null
+++ b/changelogs/unreleased/34121-group-level-no-data-store.yml
@@ -0,0 +1,5 @@
+---
+title: Add empty region when group metrics are missing
+merge_request: 20900
+author:
+type: fixed
diff --git a/changelogs/unreleased/34157-apm_snowplow_events.yml b/changelogs/unreleased/34157-apm_snowplow_events.yml
new file mode 100644
index 00000000000..6dfa7ffce5c
--- /dev/null
+++ b/changelogs/unreleased/34157-apm_snowplow_events.yml
@@ -0,0 +1,5 @@
+---
+title: Add snowplow events for APM
+merge_request: 19463
+author:
+type: added
diff --git a/changelogs/unreleased/34157-snowplow-custom-events-for-monitor-apm.yml b/changelogs/unreleased/34157-snowplow-custom-events-for-monitor-apm.yml
new file mode 100644
index 00000000000..c90bc071e63
--- /dev/null
+++ b/changelogs/unreleased/34157-snowplow-custom-events-for-monitor-apm.yml
@@ -0,0 +1,5 @@
+---
+title: Add snowplow events for monitoring dashboard
+merge_request: 19455
+author:
+type: added
diff --git a/changelogs/unreleased/34261-service-desk-to-api.yml b/changelogs/unreleased/34261-service-desk-to-api.yml
new file mode 100644
index 00000000000..5b7363e21a8
--- /dev/null
+++ b/changelogs/unreleased/34261-service-desk-to-api.yml
@@ -0,0 +1,5 @@
+---
+title: Add service desk information to projects API endpoint
+merge_request: 20913
+author:
+type: changed
diff --git a/changelogs/unreleased/34261-service-desk-to-graphql.yml b/changelogs/unreleased/34261-service-desk-to-graphql.yml
new file mode 100644
index 00000000000..b055b443822
--- /dev/null
+++ b/changelogs/unreleased/34261-service-desk-to-graphql.yml
@@ -0,0 +1,5 @@
+---
+title: Add service desk information to project graphQL endpoint
+merge_request: 20722
+author:
+type: changed
diff --git a/changelogs/unreleased/34261-toggle-service-desk.yml b/changelogs/unreleased/34261-toggle-service-desk.yml
new file mode 100644
index 00000000000..4cb3b4760d3
--- /dev/null
+++ b/changelogs/unreleased/34261-toggle-service-desk.yml
@@ -0,0 +1,5 @@
+---
+title: Support toggling service desk from API
+merge_request: 21627
+author:
+type: changed
diff --git a/changelogs/unreleased/34377-design-view-download-single-issue-design-image.yml b/changelogs/unreleased/34377-design-view-download-single-issue-design-image.yml
new file mode 100644
index 00000000000..67e37e39dc0
--- /dev/null
+++ b/changelogs/unreleased/34377-design-view-download-single-issue-design-image.yml
@@ -0,0 +1,5 @@
+---
+title: 'Resolve Design view: Download single issue design image'
+merge_request: 20703
+author:
+type: added
diff --git a/changelogs/unreleased/34406-link-to-merge-trains-documentation-on-mr-widget-is-incorrect.yml b/changelogs/unreleased/34406-link-to-merge-trains-documentation-on-mr-widget-is-incorrect.yml
new file mode 100644
index 00000000000..2d6db8c74b9
--- /dev/null
+++ b/changelogs/unreleased/34406-link-to-merge-trains-documentation-on-mr-widget-is-incorrect.yml
@@ -0,0 +1,5 @@
+---
+title: Correct link to Merge trains documentation on MR widget
+merge_request: 19726
+author:
+type: changed
diff --git a/changelogs/unreleased/34457-remove-n-plus-1-search.yml b/changelogs/unreleased/34457-remove-n-plus-1-search.yml
new file mode 100644
index 00000000000..d94e0ec3822
--- /dev/null
+++ b/changelogs/unreleased/34457-remove-n-plus-1-search.yml
@@ -0,0 +1,5 @@
+---
+title: Remove an N+1 call rendering projects search results
+merge_request: 21626
+author:
+type: performance
diff --git a/changelogs/unreleased/34636-drop-deprecated-column-from-projects-table.yml b/changelogs/unreleased/34636-drop-deprecated-column-from-projects-table.yml
new file mode 100644
index 00000000000..f6dae1e8ce9
--- /dev/null
+++ b/changelogs/unreleased/34636-drop-deprecated-column-from-projects-table.yml
@@ -0,0 +1,5 @@
+---
+title: Drop deprecated column from projects table
+merge_request: 18914
+author:
+type: deprecated
diff --git a/changelogs/unreleased/34685-Pages-template-jekyll-outdated-and-not-working-as-expected.yml b/changelogs/unreleased/34685-Pages-template-jekyll-outdated-and-not-working-as-expected.yml
new file mode 100644
index 00000000000..0ed03916829
--- /dev/null
+++ b/changelogs/unreleased/34685-Pages-template-jekyll-outdated-and-not-working-as-expected.yml
@@ -0,0 +1,5 @@
+---
+title: Updated jekyll project_template
+merge_request: 20090
+author: Marc Schwede
+type: other
diff --git a/changelogs/unreleased/34734-monitor-dashboard-does-not-expand-sections-that-have-data-on-load.yml b/changelogs/unreleased/34734-monitor-dashboard-does-not-expand-sections-that-have-data-on-load.yml
new file mode 100644
index 00000000000..c6c5df2e698
--- /dev/null
+++ b/changelogs/unreleased/34734-monitor-dashboard-does-not-expand-sections-that-have-data-on-load.yml
@@ -0,0 +1,5 @@
+---
+title: Fix graph groups in monitor dashboard that are hidden on load
+merge_request: 20312
+author:
+type: fixed
diff --git a/changelogs/unreleased/34943-graphql-sentry-details.yml b/changelogs/unreleased/34943-graphql-sentry-details.yml
new file mode 100644
index 00000000000..06a0649e5ac
--- /dev/null
+++ b/changelogs/unreleased/34943-graphql-sentry-details.yml
@@ -0,0 +1,5 @@
+---
+title: GraphQL for Sentry rror details
+merge_request: 19733
+author:
+type: added
diff --git a/changelogs/unreleased/34958-update-timeago-to-the-latest-release.yml b/changelogs/unreleased/34958-update-timeago-to-the-latest-release.yml
new file mode 100644
index 00000000000..d9696e27820
--- /dev/null
+++ b/changelogs/unreleased/34958-update-timeago-to-the-latest-release.yml
@@ -0,0 +1,5 @@
+---
+title: Update timeago to the latest release
+merge_request: 19407
+author:
+type: other
diff --git a/changelogs/unreleased/35094-mr-approver-tooltip-color.yml b/changelogs/unreleased/35094-mr-approver-tooltip-color.yml
new file mode 100644
index 00000000000..962f62aa035
--- /dev/null
+++ b/changelogs/unreleased/35094-mr-approver-tooltip-color.yml
@@ -0,0 +1,5 @@
+---
+title: Fixes MR approvers tooltip wrong color
+merge_request: 20287
+author: Dheeraj Joshi
+type: fixed
diff --git a/changelogs/unreleased/35122-sentry-error-search-pagination-implement-pagination-in-sentry-error.yml b/changelogs/unreleased/35122-sentry-error-search-pagination-implement-pagination-in-sentry-error.yml
new file mode 100644
index 00000000000..326fd3bf66b
--- /dev/null
+++ b/changelogs/unreleased/35122-sentry-error-search-pagination-implement-pagination-in-sentry-error.yml
@@ -0,0 +1,5 @@
+---
+title: Implement pagination for sentry errors
+merge_request: 21136
+author:
+type: added
diff --git a/changelogs/unreleased/35145-cluster-alert-warning-is-using-wrong-padding.yml b/changelogs/unreleased/35145-cluster-alert-warning-is-using-wrong-padding.yml
new file mode 100644
index 00000000000..8ef8b346c65
--- /dev/null
+++ b/changelogs/unreleased/35145-cluster-alert-warning-is-using-wrong-padding.yml
@@ -0,0 +1,5 @@
+---
+title: Update padding for cluster alert warning
+merge_request: 20036
+author: George Tsiolis
+type: fixed
diff --git a/changelogs/unreleased/35365-bugfix-gma-group-members-cleanup.yml b/changelogs/unreleased/35365-bugfix-gma-group-members-cleanup.yml
new file mode 100644
index 00000000000..73ac5fd65b0
--- /dev/null
+++ b/changelogs/unreleased/35365-bugfix-gma-group-members-cleanup.yml
@@ -0,0 +1,5 @@
+---
+title: Fix group managed accounts members cleanup
+merge_request: 20157
+author:
+type: fixed
diff --git a/changelogs/unreleased/35368-add-doc-links-to-all-features-2.yml b/changelogs/unreleased/35368-add-doc-links-to-all-features-2.yml
new file mode 100644
index 00000000000..d19b693aeff
--- /dev/null
+++ b/changelogs/unreleased/35368-add-doc-links-to-all-features-2.yml
@@ -0,0 +1,5 @@
+---
+title: Add doc links to features on admin dashboard
+merge_request: 21419
+author:
+type: changed
diff --git a/changelogs/unreleased/35411-syntax-highlight-for-sentry-stacktrace.yml b/changelogs/unreleased/35411-syntax-highlight-for-sentry-stacktrace.yml
new file mode 100644
index 00000000000..0f824a879d3
--- /dev/null
+++ b/changelogs/unreleased/35411-syntax-highlight-for-sentry-stacktrace.yml
@@ -0,0 +1,5 @@
+---
+title: Add syntax highlight for Sentry error stack trace
+merge_request: 21182
+author:
+type: added
diff --git a/changelogs/unreleased/35458-expose-manual-actions-retry.yml b/changelogs/unreleased/35458-expose-manual-actions-retry.yml
new file mode 100644
index 00000000000..167dca796c4
--- /dev/null
+++ b/changelogs/unreleased/35458-expose-manual-actions-retry.yml
@@ -0,0 +1,5 @@
+---
+title: Exposed deployment build manual actions for merge request page
+merge_request: 20615
+author:
+type: changed
diff --git a/changelogs/unreleased/35468-fixdetail-margins.yml b/changelogs/unreleased/35468-fixdetail-margins.yml
new file mode 100644
index 00000000000..74333524ed1
--- /dev/null
+++ b/changelogs/unreleased/35468-fixdetail-margins.yml
@@ -0,0 +1,5 @@
+---
+title: Fixes to inconsistent margins/sapcing in the project detail page
+merge_request: 20395
+author:
+type: changed
diff --git a/changelogs/unreleased/35527-add-path-to-package.yml b/changelogs/unreleased/35527-add-path-to-package.yml
new file mode 100644
index 00000000000..900f658d469
--- /dev/null
+++ b/changelogs/unreleased/35527-add-path-to-package.yml
@@ -0,0 +1,5 @@
+---
+title: Add _links object to package api response
+merge_request: 20820
+author:
+type: added
diff --git a/changelogs/unreleased/35570-add-to-the-environment-view-pod-state-legend.yml b/changelogs/unreleased/35570-add-to-the-environment-view-pod-state-legend.yml
new file mode 100644
index 00000000000..8949eb6881a
--- /dev/null
+++ b/changelogs/unreleased/35570-add-to-the-environment-view-pod-state-legend.yml
@@ -0,0 +1,5 @@
+---
+title: Added legend to deploy boards
+merge_request: 20208
+author:
+type: added
diff --git a/changelogs/unreleased/35570-update-deploy-instances-color-scheme.yml b/changelogs/unreleased/35570-update-deploy-instances-color-scheme.yml
new file mode 100644
index 00000000000..2d2450ebd68
--- /dev/null
+++ b/changelogs/unreleased/35570-update-deploy-instances-color-scheme.yml
@@ -0,0 +1,5 @@
+---
+title: Update deploy instances color scheme
+merge_request: 20890
+author:
+type: changed
diff --git a/changelogs/unreleased/35591-instance-and-project-level-ssl-and-custom-domain-support.yml b/changelogs/unreleased/35591-instance-and-project-level-ssl-and-custom-domain-support.yml
new file mode 100644
index 00000000000..9242a97ee81
--- /dev/null
+++ b/changelogs/unreleased/35591-instance-and-project-level-ssl-and-custom-domain-support.yml
@@ -0,0 +1,5 @@
+---
+title: Create data model for serverless domains
+merge_request: 19835
+author:
+type: added
diff --git a/changelogs/unreleased/35616-broken-anchor-for-learn-more-about-interacting-with-security-report.yml b/changelogs/unreleased/35616-broken-anchor-for-learn-more-about-interacting-with-security-report.yml
new file mode 100644
index 00000000000..6babed09767
--- /dev/null
+++ b/changelogs/unreleased/35616-broken-anchor-for-learn-more-about-interacting-with-security-report.yml
@@ -0,0 +1,5 @@
+---
+title: Use correct fragment identifier for vulnerability help path
+merge_request: 20524
+author:
+type: fixed
diff --git a/changelogs/unreleased/35617-only-blacklist-git-auth.yml b/changelogs/unreleased/35617-only-blacklist-git-auth.yml
new file mode 100644
index 00000000000..ce77fb14b7f
--- /dev/null
+++ b/changelogs/unreleased/35617-only-blacklist-git-auth.yml
@@ -0,0 +1,5 @@
+---
+title: Only blacklist IPs from Git requests
+merge_request: 20828
+author:
+type: changed
diff --git a/changelogs/unreleased/35789-hashed-storage-attachments-migration-object-storage.yml b/changelogs/unreleased/35789-hashed-storage-attachments-migration-object-storage.yml
new file mode 100644
index 00000000000..d868bdfe97a
--- /dev/null
+++ b/changelogs/unreleased/35789-hashed-storage-attachments-migration-object-storage.yml
@@ -0,0 +1,6 @@
+---
+title: 'Hashed Storage attachments migration: exclude files in object storage as they
+ are all hashed already'
+merge_request: 20338
+author:
+type: changed
diff --git a/changelogs/unreleased/35873-update-container-registry-ui-to-display-correct-column-names.yml b/changelogs/unreleased/35873-update-container-registry-ui-to-display-correct-column-names.yml
new file mode 100644
index 00000000000..2ce47f3cc33
--- /dev/null
+++ b/changelogs/unreleased/35873-update-container-registry-ui-to-display-correct-column-names.yml
@@ -0,0 +1,5 @@
+---
+title: Change container registry column name from Tag ID to Image ID
+merge_request: 20349
+author:
+type: fixed
diff --git a/changelogs/unreleased/36103-links-to-design-comments-from-todos-and-system-notes-do-not-jump-to.yml b/changelogs/unreleased/36103-links-to-design-comments-from-todos-and-system-notes-do-not-jump-to.yml
new file mode 100644
index 00000000000..0c7941af93a
--- /dev/null
+++ b/changelogs/unreleased/36103-links-to-design-comments-from-todos-and-system-notes-do-not-jump-to.yml
@@ -0,0 +1,5 @@
+---
+title: Links to design comments now lead to specific note
+merge_request: 21724
+author:
+type: fixed
diff --git a/changelogs/unreleased/36205-issues-in-group-milestones.yml b/changelogs/unreleased/36205-issues-in-group-milestones.yml
new file mode 100644
index 00000000000..0491cf77872
--- /dev/null
+++ b/changelogs/unreleased/36205-issues-in-group-milestones.yml
@@ -0,0 +1,5 @@
+---
+title: Retrieve issues from subgroups when rendering group milestone
+merge_request: 21024
+author:
+type: fixed
diff --git a/changelogs/unreleased/36257-hide-edit-for-nonallowed.yml b/changelogs/unreleased/36257-hide-edit-for-nonallowed.yml
new file mode 100644
index 00000000000..ef460ed096c
--- /dev/null
+++ b/changelogs/unreleased/36257-hide-edit-for-nonallowed.yml
@@ -0,0 +1,5 @@
+---
+title: Remove Release edit url for users not allowed to update a release
+merge_request: 20136
+author:
+type: fixed
diff --git a/changelogs/unreleased/36301-add-tie-breaker-id-sorting-to-deployments.yml b/changelogs/unreleased/36301-add-tie-breaker-id-sorting-to-deployments.yml
new file mode 100644
index 00000000000..2457038bbce
--- /dev/null
+++ b/changelogs/unreleased/36301-add-tie-breaker-id-sorting-to-deployments.yml
@@ -0,0 +1,5 @@
+---
+title: Optimize Deployments endpoint by preloading associations and make record ordering more consistent
+merge_request: 20848
+author:
+type: changed
diff --git a/changelogs/unreleased/36313-graphql-mutation-for-changing-due-date-of-an-issue.yml b/changelogs/unreleased/36313-graphql-mutation-for-changing-due-date-of-an-issue.yml
new file mode 100644
index 00000000000..f63605bd593
--- /dev/null
+++ b/changelogs/unreleased/36313-graphql-mutation-for-changing-due-date-of-an-issue.yml
@@ -0,0 +1,5 @@
+---
+title: Add GraphQL mutation for changing due date of an issue
+merge_request: 20577
+author:
+type: added
diff --git a/changelogs/unreleased/36318-graphql-mutation-for-changing-confidential-status-of-an-issue.yml b/changelogs/unreleased/36318-graphql-mutation-for-changing-confidential-status-of-an-issue.yml
new file mode 100644
index 00000000000..5c54495d2ec
--- /dev/null
+++ b/changelogs/unreleased/36318-graphql-mutation-for-changing-confidential-status-of-an-issue.yml
@@ -0,0 +1,5 @@
+---
+title: Add GraphQL mutation for setting an issue as confidential
+merge_request: 20785
+author:
+type: added
diff --git a/changelogs/unreleased/36326-auto-focus-search-bar.yml b/changelogs/unreleased/36326-auto-focus-search-bar.yml
new file mode 100644
index 00000000000..5c5921140b4
--- /dev/null
+++ b/changelogs/unreleased/36326-auto-focus-search-bar.yml
@@ -0,0 +1,5 @@
+---
+title: Autofocus cluster dropdown search input
+merge_request: 21440
+author:
+type: changed
diff --git a/changelogs/unreleased/36412-Sentry-error-page-stuck-loading.yml b/changelogs/unreleased/36412-Sentry-error-page-stuck-loading.yml
new file mode 100644
index 00000000000..213517c0ec1
--- /dev/null
+++ b/changelogs/unreleased/36412-Sentry-error-page-stuck-loading.yml
@@ -0,0 +1,5 @@
+---
+title: Handle empty stacktrace and entries with no code
+merge_request: 20458
+author:
+type: fixed
diff --git a/changelogs/unreleased/36450-update-the-saas-trial-copy-to-be-dynamic-depending-on-the-trial-typ.yml b/changelogs/unreleased/36450-update-the-saas-trial-copy-to-be-dynamic-depending-on-the-trial-typ.yml
new file mode 100644
index 00000000000..e2996ed45b0
--- /dev/null
+++ b/changelogs/unreleased/36450-update-the-saas-trial-copy-to-be-dynamic-depending-on-the-trial-typ.yml
@@ -0,0 +1,5 @@
+---
+title: SaaS trial copy shows plan
+merge_request: 20207
+author:
+type: changed
diff --git a/changelogs/unreleased/36455-add-external-link-icon.yml b/changelogs/unreleased/36455-add-external-link-icon.yml
new file mode 100644
index 00000000000..7bbbb772ce9
--- /dev/null
+++ b/changelogs/unreleased/36455-add-external-link-icon.yml
@@ -0,0 +1,5 @@
+---
+title: Add missing external-link icon for Crossplane managed app
+merge_request: 20283
+author:
+type: fixed
diff --git a/changelogs/unreleased/36483-move-the-confidence-column-in-the-security-dashboard.yml b/changelogs/unreleased/36483-move-the-confidence-column-in-the-security-dashboard.yml
new file mode 100644
index 00000000000..6651facf809
--- /dev/null
+++ b/changelogs/unreleased/36483-move-the-confidence-column-in-the-security-dashboard.yml
@@ -0,0 +1,5 @@
+---
+title: Move confidence column in the security dashboard
+merge_request: 20435
+author: Dheeraj Joshi
+type: changed
diff --git a/changelogs/unreleased/36611-gitlab-container-registry-repository-names-regex-is-not-at-parity-w.yml b/changelogs/unreleased/36611-gitlab-container-registry-repository-names-regex-is-not-at-parity-w.yml
new file mode 100644
index 00000000000..b8f2c402d90
--- /dev/null
+++ b/changelogs/unreleased/36611-gitlab-container-registry-repository-names-regex-is-not-at-parity-w.yml
@@ -0,0 +1,5 @@
+---
+title: Update Container Registry naming restrictions to allow for sequential '-'
+merge_request: 20318
+author:
+type: fixed
diff --git a/changelogs/unreleased/36646-ignore-empty-diffs-for-external-diffs-migration.yml b/changelogs/unreleased/36646-ignore-empty-diffs-for-external-diffs-migration.yml
new file mode 100644
index 00000000000..7633f562bc4
--- /dev/null
+++ b/changelogs/unreleased/36646-ignore-empty-diffs-for-external-diffs-migration.yml
@@ -0,0 +1,5 @@
+---
+title: Ignore empty MR diffs when migrating to external storage
+merge_request: 20296
+author:
+type: fixed
diff --git a/changelogs/unreleased/36717-container-repositories-can-not-be-replicated.yml b/changelogs/unreleased/36717-container-repositories-can-not-be-replicated.yml
new file mode 100644
index 00000000000..6a27ddeb0cd
--- /dev/null
+++ b/changelogs/unreleased/36717-container-repositories-can-not-be-replicated.yml
@@ -0,0 +1,5 @@
+---
+title: Fix Container repositories can not be replicated when s3 is used
+merge_request: 21068
+author:
+type: fixed
diff --git a/changelogs/unreleased/36751-collect-the-date-a-saas-trial-starts-on.yml b/changelogs/unreleased/36751-collect-the-date-a-saas-trial-starts-on.yml
new file mode 100644
index 00000000000..fbd4cfe1de3
--- /dev/null
+++ b/changelogs/unreleased/36751-collect-the-date-a-saas-trial-starts-on.yml
@@ -0,0 +1,5 @@
+---
+title: Collect the date a SaaS trial starts on
+merge_request: 20384
+author:
+type: added
diff --git a/changelogs/unreleased/36776-entropy-requirements-for-new-user-passwords-mvc.yml b/changelogs/unreleased/36776-entropy-requirements-for-new-user-passwords-mvc.yml
new file mode 100644
index 00000000000..6b2e159c273
--- /dev/null
+++ b/changelogs/unreleased/36776-entropy-requirements-for-new-user-passwords-mvc.yml
@@ -0,0 +1,5 @@
+---
+title: Allow administrators to set a minimum password length
+merge_request: 20661
+author:
+type: added
diff --git a/changelogs/unreleased/36905-create-a-rake-task-to-gather-license-info.yml b/changelogs/unreleased/36905-create-a-rake-task-to-gather-license-info.yml
new file mode 100644
index 00000000000..abf46acbcb2
--- /dev/null
+++ b/changelogs/unreleased/36905-create-a-rake-task-to-gather-license-info.yml
@@ -0,0 +1,5 @@
+---
+title: Create a license info rake task
+merge_request: 20501
+author: Jason Colyer
+type: added
diff --git a/changelogs/unreleased/36924-cablett-epic-tree-permissions.yml b/changelogs/unreleased/36924-cablett-epic-tree-permissions.yml
new file mode 100644
index 00000000000..ae144c77823
--- /dev/null
+++ b/changelogs/unreleased/36924-cablett-epic-tree-permissions.yml
@@ -0,0 +1,5 @@
+---
+title: Fix removing of child epics that belong to subgroups
+merge_request: 20610
+author:
+type: fixed
diff --git a/changelogs/unreleased/36937-change-title-mr-approvals-settings.yml b/changelogs/unreleased/36937-change-title-mr-approvals-settings.yml
new file mode 100644
index 00000000000..f38e7de5459
--- /dev/null
+++ b/changelogs/unreleased/36937-change-title-mr-approvals-settings.yml
@@ -0,0 +1,5 @@
+---
+title: Changed 'Add approvers' to 'Approval rules'
+merge_request: 21079
+author:
+type: other
diff --git a/changelogs/unreleased/3695-view-closed-issues-in-epic.yml b/changelogs/unreleased/3695-view-closed-issues-in-epic.yml
new file mode 100644
index 00000000000..a7cddcbc6dc
--- /dev/null
+++ b/changelogs/unreleased/3695-view-closed-issues-in-epic.yml
@@ -0,0 +1,5 @@
+---
+title: View closed issues in epic
+merge_request: 19741
+author:
+type: added
diff --git a/changelogs/unreleased/36955-snowplow-custom-events-for-monitor-apm-add-metric-button-fe.yml b/changelogs/unreleased/36955-snowplow-custom-events-for-monitor-apm-add-metric-button-fe.yml
new file mode 100644
index 00000000000..738f3007214
--- /dev/null
+++ b/changelogs/unreleased/36955-snowplow-custom-events-for-monitor-apm-add-metric-button-fe.yml
@@ -0,0 +1,5 @@
+---
+title: Track adding metric via monitoring dashboard
+merge_request: 20818
+author:
+type: added
diff --git a/changelogs/unreleased/37000-reduce-start-a-trial-emoji-rocket-size.yml b/changelogs/unreleased/37000-reduce-start-a-trial-emoji-rocket-size.yml
new file mode 100644
index 00000000000..5a30c7fa431
--- /dev/null
+++ b/changelogs/unreleased/37000-reduce-start-a-trial-emoji-rocket-size.yml
@@ -0,0 +1,5 @@
+---
+title: Reduce start a trial rocket emoji size
+merge_request: 20579
+author:
+type: changed
diff --git a/changelogs/unreleased/37006-fix-open-details-page-in-new-tab.yml b/changelogs/unreleased/37006-fix-open-details-page-in-new-tab.yml
new file mode 100644
index 00000000000..b6e3f1af414
--- /dev/null
+++ b/changelogs/unreleased/37006-fix-open-details-page-in-new-tab.yml
@@ -0,0 +1,5 @@
+---
+title: Fix opening Sentry error details in new tab
+merge_request: 20611
+author:
+type: fixed
diff --git a/changelogs/unreleased/37026-backend-create-a-table-for-sentry-error-related-issues.yml b/changelogs/unreleased/37026-backend-create-a-table-for-sentry-error-related-issues.yml
new file mode 100644
index 00000000000..ca6a7a0d698
--- /dev/null
+++ b/changelogs/unreleased/37026-backend-create-a-table-for-sentry-error-related-issues.yml
@@ -0,0 +1,5 @@
+---
+title: Add SentryIssue table to store a link between issue and sentry issue
+merge_request: 37026
+author:
+type: added
diff --git a/changelogs/unreleased/37033-auto-devops-suppress-progress-on-pulling-docker-base-image-to-be-ru.yml b/changelogs/unreleased/37033-auto-devops-suppress-progress-on-pulling-docker-base-image-to-be-ru.yml
new file mode 100644
index 00000000000..dbaa3ec44be
--- /dev/null
+++ b/changelogs/unreleased/37033-auto-devops-suppress-progress-on-pulling-docker-base-image-to-be-ru.yml
@@ -0,0 +1,5 @@
+---
+title: Suppress progress on pulling image on Code Quality of Auto DevOps
+merge_request: 20604
+author: Takuya Noguchi
+type: other
diff --git a/changelogs/unreleased/37034-increase-margin-between-commits-branches-tags-size-row-in-project-d.yml b/changelogs/unreleased/37034-increase-margin-between-commits-branches-tags-size-row-in-project-d.yml
new file mode 100644
index 00000000000..75a64974725
--- /dev/null
+++ b/changelogs/unreleased/37034-increase-margin-between-commits-branches-tags-size-row-in-project-d.yml
@@ -0,0 +1,5 @@
+---
+title: Increase margin between project stats
+merge_request: 20606
+author:
+type: other
diff --git a/changelogs/unreleased/37057-record-import-failures.yml b/changelogs/unreleased/37057-record-import-failures.yml
new file mode 100644
index 00000000000..2358220ef29
--- /dev/null
+++ b/changelogs/unreleased/37057-record-import-failures.yml
@@ -0,0 +1,5 @@
+---
+title: Collect project import failures instead of failing fast
+merge_request: 20727
+author:
+type: other
diff --git a/changelogs/unreleased/37363-junit-xml-summary-incorrectly-shows-100-success-rate.yml b/changelogs/unreleased/37363-junit-xml-summary-incorrectly-shows-100-success-rate.yml
new file mode 100644
index 00000000000..85d7b636502
--- /dev/null
+++ b/changelogs/unreleased/37363-junit-xml-summary-incorrectly-shows-100-success-rate.yml
@@ -0,0 +1,5 @@
+---
+title: Junit success percentage no longer displays 100% if there are failures
+merge_request: 20835
+author:
+type: fixed
diff --git a/changelogs/unreleased/37371-update-gitlab-shell.yml b/changelogs/unreleased/37371-update-gitlab-shell.yml
new file mode 100644
index 00000000000..04d48ccbc4a
--- /dev/null
+++ b/changelogs/unreleased/37371-update-gitlab-shell.yml
@@ -0,0 +1,5 @@
+---
+title: Update GitLab Shell to v10.3.0
+merge_request: 21151
+author:
+type: other
diff --git a/changelogs/unreleased/37385-respect-commit-timezones-from-gitaly.yml b/changelogs/unreleased/37385-respect-commit-timezones-from-gitaly.yml
new file mode 100644
index 00000000000..3e8302ce845
--- /dev/null
+++ b/changelogs/unreleased/37385-respect-commit-timezones-from-gitaly.yml
@@ -0,0 +1,5 @@
+---
+title: Respect the timezone reported from Gitaly
+merge_request: 21066
+author:
+type: fixed
diff --git a/changelogs/unreleased/37387-do-not-clean-sidekiq-metrics.yml b/changelogs/unreleased/37387-do-not-clean-sidekiq-metrics.yml
new file mode 100644
index 00000000000..5092b432247
--- /dev/null
+++ b/changelogs/unreleased/37387-do-not-clean-sidekiq-metrics.yml
@@ -0,0 +1,5 @@
+---
+title: Do not clean the prometheus metrics directory for sidekiq
+merge_request: 21671
+author:
+type: fixed
diff --git a/changelogs/unreleased/37403-npm-install-fails-with-ci_job_token-in-npmrc.yml b/changelogs/unreleased/37403-npm-install-fails-with-ci_job_token-in-npmrc.yml
new file mode 100644
index 00000000000..65ace335e1e
--- /dev/null
+++ b/changelogs/unreleased/37403-npm-install-fails-with-ci_job_token-in-npmrc.yml
@@ -0,0 +1,5 @@
+---
+title: Allow NPM package downloads with CI_JOB_TOKEN
+merge_request: 20868
+author:
+type: added
diff --git a/changelogs/unreleased/37480-validate-instance-level-cluster-environment-scope.yml b/changelogs/unreleased/37480-validate-instance-level-cluster-environment-scope.yml
new file mode 100644
index 00000000000..11d2cfa4d4b
--- /dev/null
+++ b/changelogs/unreleased/37480-validate-instance-level-cluster-environment-scope.yml
@@ -0,0 +1,5 @@
+---
+title: Validate unique environment scope for instance clusters
+merge_request: 20886
+author:
+type: fixed
diff --git a/changelogs/unreleased/37680-tree-control-buttons-misbehave-on-small-viewports.yml b/changelogs/unreleased/37680-tree-control-buttons-misbehave-on-small-viewports.yml
new file mode 100644
index 00000000000..58e63e127f9
--- /dev/null
+++ b/changelogs/unreleased/37680-tree-control-buttons-misbehave-on-small-viewports.yml
@@ -0,0 +1,5 @@
+---
+title: Remove whitespaces between tree-controls elements
+merge_request: 20952
+author:
+type: other
diff --git a/changelogs/unreleased/37772-add-ui-event-tracking-for-package-details-installation-instructions.yml b/changelogs/unreleased/37772-add-ui-event-tracking-for-package-details-installation-instructions.yml
new file mode 100644
index 00000000000..c23243dbf4c
--- /dev/null
+++ b/changelogs/unreleased/37772-add-ui-event-tracking-for-package-details-installation-instructions.yml
@@ -0,0 +1,5 @@
+---
+title: Added event tracking to the package details installation components
+merge_request: 20967
+author:
+type: changed
diff --git a/changelogs/unreleased/37952-fix-missing-empty-rule-ux-in-mr-widget.yml b/changelogs/unreleased/37952-fix-missing-empty-rule-ux-in-mr-widget.yml
new file mode 100644
index 00000000000..caec491fa67
--- /dev/null
+++ b/changelogs/unreleased/37952-fix-missing-empty-rule-ux-in-mr-widget.yml
@@ -0,0 +1,5 @@
+---
+title: Resolve Add missing popover and remove none in MR widget
+merge_request: 21095
+author:
+type: other
diff --git a/changelogs/unreleased/37972-container-registry-tags-expect-oci-image-configs-to-have-created-fi.yml b/changelogs/unreleased/37972-container-registry-tags-expect-oci-image-configs-to-have-created-fi.yml
new file mode 100644
index 00000000000..65e9685494c
--- /dev/null
+++ b/changelogs/unreleased/37972-container-registry-tags-expect-oci-image-configs-to-have-created-fi.yml
@@ -0,0 +1,5 @@
+---
+title: Fix crash registry contains helm charts
+merge_request: 21381
+author:
+type: fixed
diff --git a/changelogs/unreleased/38234-zoom-quick-action-on-a-new-issue-causes-error.yml b/changelogs/unreleased/38234-zoom-quick-action-on-a-new-issue-causes-error.yml
new file mode 100644
index 00000000000..634ae624415
--- /dev/null
+++ b/changelogs/unreleased/38234-zoom-quick-action-on-a-new-issue-causes-error.yml
@@ -0,0 +1,5 @@
+---
+title: Fix Zoom Quick Action server error when creating a GitLab Issue
+merge_request: 21262
+author:
+type: fixed
diff --git a/changelogs/unreleased/38244-fix-release-filter-on-mr-page.yml b/changelogs/unreleased/38244-fix-release-filter-on-mr-page.yml
new file mode 100644
index 00000000000..9c261d89610
--- /dev/null
+++ b/changelogs/unreleased/38244-fix-release-filter-on-mr-page.yml
@@ -0,0 +1,5 @@
+---
+title: Fixed query behind release filter on merge request search page.
+merge_request: 38244
+author:
+type: fixed
diff --git a/changelogs/unreleased/39290-fix-border-of-readme-when-vue_file_list-enabled.yml b/changelogs/unreleased/39290-fix-border-of-readme-when-vue_file_list-enabled.yml
new file mode 100644
index 00000000000..3373e945479
--- /dev/null
+++ b/changelogs/unreleased/39290-fix-border-of-readme-when-vue_file_list-enabled.yml
@@ -0,0 +1,5 @@
+---
+title: Fix top border of README in vue_file_list
+merge_request: 21578
+author: Hector Bustillos
+type: fixed
diff --git a/changelogs/unreleased/39465-39469-issues-solutions.yml b/changelogs/unreleased/39465-39469-issues-solutions.yml
new file mode 100644
index 00000000000..62d314bc096
--- /dev/null
+++ b/changelogs/unreleased/39465-39469-issues-solutions.yml
@@ -0,0 +1,6 @@
+---
+title: UI improvements in the views for new project from template and the user groups
+ and snippets
+merge_request: 21524
+author: Hector Bustillos
+type: changed
diff --git a/changelogs/unreleased/39498-part-1.yml b/changelogs/unreleased/39498-part-1.yml
new file mode 100644
index 00000000000..fb410993424
--- /dev/null
+++ b/changelogs/unreleased/39498-part-1.yml
@@ -0,0 +1,5 @@
+---
+title: "!21542 Part 1: Add new utils for Web IDE store"
+merge_request: 21673
+author:
+type: fixed
diff --git a/changelogs/unreleased/3963-auto-related-duplicated-issues.yml b/changelogs/unreleased/3963-auto-related-duplicated-issues.yml
new file mode 100644
index 00000000000..670f71d32dc
--- /dev/null
+++ b/changelogs/unreleased/3963-auto-related-duplicated-issues.yml
@@ -0,0 +1,5 @@
+---
+title: Relate issues when they are marked as duplicated
+merge_request: 20161
+author: minghuan lei
+type: added
diff --git a/changelogs/unreleased/41934-replace-fa-bullhorn-with-gitlab-svg-bullhorn-icon.yml b/changelogs/unreleased/41934-replace-fa-bullhorn-with-gitlab-svg-bullhorn-icon.yml
new file mode 100644
index 00000000000..a58a553cb70
--- /dev/null
+++ b/changelogs/unreleased/41934-replace-fa-bullhorn-with-gitlab-svg-bullhorn-icon.yml
@@ -0,0 +1,5 @@
+---
+title: Replace Font Awesome bullhorn icon with GitLab bullhorn icon
+merge_request:
+author:
+type: other
diff --git a/changelogs/unreleased/42158-stage-dropdown-lists-fix.yml b/changelogs/unreleased/42158-stage-dropdown-lists-fix.yml
new file mode 100644
index 00000000000..793c4815130
--- /dev/null
+++ b/changelogs/unreleased/42158-stage-dropdown-lists-fix.yml
@@ -0,0 +1,5 @@
+---
+title: Stage dropdown lists style corrections
+merge_request: 21607
+author: Hector Bustillos
+type: fixed
diff --git a/changelogs/unreleased/42738-change-commit-user-mentions-commit-id-column-type.yml b/changelogs/unreleased/42738-change-commit-user-mentions-commit-id-column-type.yml
new file mode 100644
index 00000000000..cd6e2ba6770
--- /dev/null
+++ b/changelogs/unreleased/42738-change-commit-user-mentions-commit-id-column-type.yml
@@ -0,0 +1,5 @@
+---
+title: Change commit_id type on commit_user_mentions table
+merge_request: 21651
+author:
+type: fixed
diff --git a/changelogs/unreleased/55706-remove-ci_commit_ref-docs.yml b/changelogs/unreleased/55706-remove-ci_commit_ref-docs.yml
new file mode 100644
index 00000000000..8c9f60f5df5
--- /dev/null
+++ b/changelogs/unreleased/55706-remove-ci_commit_ref-docs.yml
@@ -0,0 +1,5 @@
+---
+title: Replace CI_COMMIT_REF with CI_COMMIT_SHA on CI docs
+merge_request: 21781
+author: Takuya Noguchi
+type: other
diff --git a/changelogs/unreleased/6971-epic-sidebar-updates.yml b/changelogs/unreleased/6971-epic-sidebar-updates.yml
new file mode 100644
index 00000000000..0695abea2e5
--- /dev/null
+++ b/changelogs/unreleased/6971-epic-sidebar-updates.yml
@@ -0,0 +1,5 @@
+---
+title: Vertically align collapse button on epic sidebar
+merge_request: 19656
+author:
+type: fixed
diff --git a/changelogs/unreleased/7150-the-weight-assignment-box-shows-up-when-the-sidebar-is-collapsed-eve.yml b/changelogs/unreleased/7150-the-weight-assignment-box-shows-up-when-the-sidebar-is-collapsed-eve.yml
new file mode 100644
index 00000000000..9f8de281e77
--- /dev/null
+++ b/changelogs/unreleased/7150-the-weight-assignment-box-shows-up-when-the-sidebar-is-collapsed-eve.yml
@@ -0,0 +1,5 @@
+---
+title: Fix issue trying to edit weight with collapsed sidebar as guest
+merge_request: 20431
+author:
+type: fixed
diff --git a/changelogs/unreleased/7597-add-template-repository-usage-to-the-usage-ping.yml b/changelogs/unreleased/7597-add-template-repository-usage-to-the-usage-ping.yml
new file mode 100644
index 00000000000..f9479c3eef4
--- /dev/null
+++ b/changelogs/unreleased/7597-add-template-repository-usage-to-the-usage-ping.yml
@@ -0,0 +1,5 @@
+---
+title: Add template repository usage to the usage ping
+merge_request: 20126
+author: minghuan lei
+type: changed
diff --git a/changelogs/unreleased/7603-make-it-easy-to-generate-and-share-the-maven-xml-for-a-library.yml b/changelogs/unreleased/7603-make-it-easy-to-generate-and-share-the-maven-xml-for-a-library.yml
new file mode 100644
index 00000000000..ed02816f7d1
--- /dev/null
+++ b/changelogs/unreleased/7603-make-it-easy-to-generate-and-share-the-maven-xml-for-a-library.yml
@@ -0,0 +1,5 @@
+---
+title: Add Maven installation commands to package detail page for Maven packages
+merge_request: 20300
+author:
+type: added
diff --git a/changelogs/unreleased/8248-remove-conan-feature-flag.yml b/changelogs/unreleased/8248-remove-conan-feature-flag.yml
new file mode 100644
index 00000000000..2c27bc0aaef
--- /dev/null
+++ b/changelogs/unreleased/8248-remove-conan-feature-flag.yml
@@ -0,0 +1,5 @@
+---
+title: Add support for Conan package management in the package registry
+merge_request: 21152
+author:
+type: added
diff --git a/changelogs/unreleased/8524-add-ds-var.yml b/changelogs/unreleased/8524-add-ds-var.yml
new file mode 100644
index 00000000000..4082a3a1606
--- /dev/null
+++ b/changelogs/unreleased/8524-add-ds-var.yml
@@ -0,0 +1,5 @@
+---
+title: Add dependency scanning flag for specifying pip requirements file for scanning.
+merge_request: 21219
+author:
+type: added
diff --git a/changelogs/unreleased/9983-document-make-using-gitlab-auth-with-vault-easy.yml b/changelogs/unreleased/9983-document-make-using-gitlab-auth-with-vault-easy.yml
new file mode 100644
index 00000000000..115c974d18c
--- /dev/null
+++ b/changelogs/unreleased/9983-document-make-using-gitlab-auth-with-vault-easy.yml
@@ -0,0 +1,5 @@
+---
+title: Resolve Document - Make using GitLab auth with Vault easy
+merge_request: 19980
+author:
+type: other
diff --git a/changelogs/unreleased/Delete-board_service-js-in-app-folder.yml b/changelogs/unreleased/Delete-board_service-js-in-app-folder.yml
new file mode 100644
index 00000000000..52027fa603f
--- /dev/null
+++ b/changelogs/unreleased/Delete-board_service-js-in-app-folder.yml
@@ -0,0 +1,5 @@
+---
+title: delete board_service.js
+merge_request: 20168
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Remove-IIFEs-from-gl_dropdown-js.yml b/changelogs/unreleased/Remove-IIFEs-from-gl_dropdown-js.yml
new file mode 100644
index 00000000000..b7979fb2b71
--- /dev/null
+++ b/changelogs/unreleased/Remove-IIFEs-from-gl_dropdown-js.yml
@@ -0,0 +1,5 @@
+---
+title: Remove IIFEs from gl_dropdown.js
+merge_request: 19983
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Remove-var-from-gl_dropdown-js.yml b/changelogs/unreleased/Remove-var-from-gl_dropdown-js.yml
new file mode 100644
index 00000000000..7edfaff56af
--- /dev/null
+++ b/changelogs/unreleased/Remove-var-from-gl_dropdown-js.yml
@@ -0,0 +1,5 @@
+---
+title: replace var gl_dropdown.js
+merge_request: 20166
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Replace-BoardService_in_assignee_select_spec-js.yml b/changelogs/unreleased/Replace-BoardService_in_assignee_select_spec-js.yml
new file mode 100644
index 00000000000..8bc76beeb8b
--- /dev/null
+++ b/changelogs/unreleased/Replace-BoardService_in_assignee_select_spec-js.yml
@@ -0,0 +1,5 @@
+---
+title: removes references of BoardService
+merge_request: 20880
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Replace-BoardService_in_board_card_spec-js.yml b/changelogs/unreleased/Replace-BoardService_in_board_card_spec-js.yml
new file mode 100644
index 00000000000..ddce6c69343
--- /dev/null
+++ b/changelogs/unreleased/Replace-BoardService_in_board_card_spec-js.yml
@@ -0,0 +1,5 @@
+---
+title: removes references of BoardService
+merge_request: 20881
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Replace-BoardService_in_board_list_common_spec-js.yml b/changelogs/unreleased/Replace-BoardService_in_board_list_common_spec-js.yml
new file mode 100644
index 00000000000..faf5c2a0ef0
--- /dev/null
+++ b/changelogs/unreleased/Replace-BoardService_in_board_list_common_spec-js.yml
@@ -0,0 +1,5 @@
+---
+title: removes references of BoardService
+merge_request: 20872
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Replace-BoardService_in_board_new_issue_spec-js.yml b/changelogs/unreleased/Replace-BoardService_in_board_new_issue_spec-js.yml
new file mode 100644
index 00000000000..22830aa8af6
--- /dev/null
+++ b/changelogs/unreleased/Replace-BoardService_in_board_new_issue_spec-js.yml
@@ -0,0 +1,5 @@
+---
+title: removes references of BoardService
+merge_request: 20874
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Replace-BoardService_in_board_spec-js.yml b/changelogs/unreleased/Replace-BoardService_in_board_spec-js.yml
new file mode 100644
index 00000000000..549127c365b
--- /dev/null
+++ b/changelogs/unreleased/Replace-BoardService_in_board_spec-js.yml
@@ -0,0 +1,5 @@
+---
+title: removes references of BoardService
+merge_request: 20875
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Replace-BoardService_in_issue_spec-js.yml b/changelogs/unreleased/Replace-BoardService_in_issue_spec-js.yml
new file mode 100644
index 00000000000..330bf2493d6
--- /dev/null
+++ b/changelogs/unreleased/Replace-BoardService_in_issue_spec-js.yml
@@ -0,0 +1,5 @@
+---
+title: removes references of BoardService
+merge_request: 20876
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Replace-BoardService_in_list_spec-js.yml b/changelogs/unreleased/Replace-BoardService_in_list_spec-js.yml
new file mode 100644
index 00000000000..9f23dca62a0
--- /dev/null
+++ b/changelogs/unreleased/Replace-BoardService_in_list_spec-js.yml
@@ -0,0 +1,5 @@
+---
+title: removes references of BoardService
+merge_request: 20877
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Replace-BoardService_in_mock_data-js.yml b/changelogs/unreleased/Replace-BoardService_in_mock_data-js.yml
new file mode 100644
index 00000000000..4e047bd0dc9
--- /dev/null
+++ b/changelogs/unreleased/Replace-BoardService_in_mock_data-js.yml
@@ -0,0 +1,5 @@
+---
+title: removes references of BoardService
+merge_request: 20879
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Upate-boards-index-js-to-use-boardsStore.yml b/changelogs/unreleased/Upate-boards-index-js-to-use-boardsStore.yml
new file mode 100644
index 00000000000..bccf259f312
--- /dev/null
+++ b/changelogs/unreleased/Upate-boards-index-js-to-use-boardsStore.yml
@@ -0,0 +1,5 @@
+---
+title: Removed all references of BoardService
+merge_request: 20144
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Update-boards-models-list-js-to-use-boardsStore.yml b/changelogs/unreleased/Update-boards-models-list-js-to-use-boardsStore.yml
new file mode 100644
index 00000000000..6cd37119cd4
--- /dev/null
+++ b/changelogs/unreleased/Update-boards-models-list-js-to-use-boardsStore.yml
@@ -0,0 +1,5 @@
+---
+title: Removes references of BoardService in list file
+merge_request: 20145
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Updated-hexo-project_template.yml b/changelogs/unreleased/Updated-hexo-project_template.yml
new file mode 100644
index 00000000000..4777220ca55
--- /dev/null
+++ b/changelogs/unreleased/Updated-hexo-project_template.yml
@@ -0,0 +1,5 @@
+---
+title: Updated hexo project_template
+merge_request: 20105
+author: Marc Schwede
+type: other
diff --git a/changelogs/unreleased/Updated-hugo-project_template.yml b/changelogs/unreleased/Updated-hugo-project_template.yml
new file mode 100644
index 00000000000..58488dfcb4c
--- /dev/null
+++ b/changelogs/unreleased/Updated-hugo-project_template.yml
@@ -0,0 +1,5 @@
+---
+title: Updated hugo project_template
+merge_request: 20109
+author: Marc Schwede
+type: other
diff --git a/changelogs/unreleased/ab-keyset-pagination.yml b/changelogs/unreleased/ab-keyset-pagination.yml
new file mode 100644
index 00000000000..bd80c27975d
--- /dev/null
+++ b/changelogs/unreleased/ab-keyset-pagination.yml
@@ -0,0 +1,5 @@
+---
+title: Keyset pagination for REST API (Project endpoint)
+merge_request: 21194
+author:
+type: added
diff --git a/changelogs/unreleased/add-badge-name-field.yml b/changelogs/unreleased/add-badge-name-field.yml
new file mode 100644
index 00000000000..59592167c89
--- /dev/null
+++ b/changelogs/unreleased/add-badge-name-field.yml
@@ -0,0 +1,5 @@
+---
+title: Add badge name field
+merge_request: 16998
+author: Lee Tickett
+type: added
diff --git a/changelogs/unreleased/add-index-on-environment-type.yml b/changelogs/unreleased/add-index-on-environment-type.yml
new file mode 100644
index 00000000000..f50f8ac725b
--- /dev/null
+++ b/changelogs/unreleased/add-index-on-environment-type.yml
@@ -0,0 +1,5 @@
+---
+title: Replace index on environments table project_id and state with project_id, state, and environment_type
+merge_request: 19902
+author:
+type: performance
diff --git a/changelogs/unreleased/add-root-ci-config-including-user-defined-config.yml b/changelogs/unreleased/add-root-ci-config-including-user-defined-config.yml
new file mode 100644
index 00000000000..3b292bf29e5
--- /dev/null
+++ b/changelogs/unreleased/add-root-ci-config-including-user-defined-config.yml
@@ -0,0 +1,5 @@
+---
+title: Allow CI config path to point to a URL or file in a different repository
+merge_request: 20179
+author:
+type: added
diff --git a/changelogs/unreleased/add-timestamps-to-puma-stdout-log.yml b/changelogs/unreleased/add-timestamps-to-puma-stdout-log.yml
new file mode 100644
index 00000000000..9d5de08269f
--- /dev/null
+++ b/changelogs/unreleased/add-timestamps-to-puma-stdout-log.yml
@@ -0,0 +1,5 @@
+---
+title: Change Puma log format to JSON
+merge_request: 21101
+author:
+type: other
diff --git a/changelogs/unreleased/add_body_data_elements_for_page_type_id_project_id_and_namespace_id.yml b/changelogs/unreleased/add_body_data_elements_for_page_type_id_project_id_and_namespace_id.yml
new file mode 100644
index 00000000000..587741a8ea5
--- /dev/null
+++ b/changelogs/unreleased/add_body_data_elements_for_page_type_id_project_id_and_namespace_id.yml
@@ -0,0 +1,5 @@
+---
+title: Add body data elements for pageview context
+merge_request: 18450
+author:
+type: added
diff --git a/changelogs/unreleased/add_missing_add_index_rubocop_spec.yml b/changelogs/unreleased/add_missing_add_index_rubocop_spec.yml
new file mode 100644
index 00000000000..b1ae864ae35
--- /dev/null
+++ b/changelogs/unreleased/add_missing_add_index_rubocop_spec.yml
@@ -0,0 +1,5 @@
+---
+title: add missing test for add_index rubocop rule
+merge_request: 20464
+author: Eric Thomas
+type: other
diff --git a/changelogs/unreleased/ak-logs-search.yml b/changelogs/unreleased/ak-logs-search.yml
new file mode 100644
index 00000000000..2f059584384
--- /dev/null
+++ b/changelogs/unreleased/ak-logs-search.yml
@@ -0,0 +1,5 @@
+---
+title: Rework pod logs navigation scheme
+merge_request: 20578
+author:
+type: changed
diff --git a/changelogs/unreleased/ak-logs-timestamp.yml b/changelogs/unreleased/ak-logs-timestamp.yml
new file mode 100644
index 00000000000..40dca009d23
--- /dev/null
+++ b/changelogs/unreleased/ak-logs-timestamp.yml
@@ -0,0 +1,5 @@
+---
+title: Add timestamps to pod logs
+merge_request: 21663
+author:
+type: added
diff --git a/changelogs/unreleased/al-31836-guest-access-to-delete-snippets-bug.yml b/changelogs/unreleased/al-31836-guest-access-to-delete-snippets-bug.yml
new file mode 100644
index 00000000000..b3a9c63ec90
--- /dev/null
+++ b/changelogs/unreleased/al-31836-guest-access-to-delete-snippets-bug.yml
@@ -0,0 +1,5 @@
+---
+title: Guest users should not delete project snippets they created
+merge_request: 20477
+author:
+type: fixed
diff --git a/changelogs/unreleased/allow-raw-blobs-to-be-served-from-external-storage.yml b/changelogs/unreleased/allow-raw-blobs-to-be-served-from-external-storage.yml
new file mode 100644
index 00000000000..23995070c38
--- /dev/null
+++ b/changelogs/unreleased/allow-raw-blobs-to-be-served-from-external-storage.yml
@@ -0,0 +1,5 @@
+---
+title: Allow raw blobs to be served from an external storage
+merge_request: 20936
+author:
+type: added
diff --git a/changelogs/unreleased/ap-14330-external-personal-snippets.yml b/changelogs/unreleased/ap-14330-external-personal-snippets.yml
new file mode 100644
index 00000000000..86cd3f0ab75
--- /dev/null
+++ b/changelogs/unreleased/ap-14330-external-personal-snippets.yml
@@ -0,0 +1,5 @@
+---
+title: Match external user new snippet button visibility to permissions
+merge_request: 21718
+author:
+type: fixed
diff --git a/changelogs/unreleased/ap-35389-api-snippets-public-personal.yml b/changelogs/unreleased/ap-35389-api-snippets-public-personal.yml
new file mode 100644
index 00000000000..66c942338e1
--- /dev/null
+++ b/changelogs/unreleased/ap-35389-api-snippets-public-personal.yml
@@ -0,0 +1,6 @@
+---
+title: Improve performance of /api/:version/snippets/public API and only return public
+ personal snippets
+merge_request: 20339
+author:
+type: performance
diff --git a/changelogs/unreleased/auto_devops_enabled_ci_variable.yml b/changelogs/unreleased/auto_devops_enabled_ci_variable.yml
new file mode 100644
index 00000000000..e7d876ec797
--- /dev/null
+++ b/changelogs/unreleased/auto_devops_enabled_ci_variable.yml
@@ -0,0 +1,5 @@
+---
+title: Add CI variable to show when Auto-DevOps is explicitly enabled
+merge_request: 20332
+author:
+type: changed
diff --git a/changelogs/unreleased/autofocus-label-search.yml b/changelogs/unreleased/autofocus-label-search.yml
new file mode 100644
index 00000000000..cc26b77bda0
--- /dev/null
+++ b/changelogs/unreleased/autofocus-label-search.yml
@@ -0,0 +1,5 @@
+---
+title: Add autofocus to label search fields
+merge_request: 21508
+author:
+type: changed
diff --git a/changelogs/unreleased/bridge-rules.yml b/changelogs/unreleased/bridge-rules.yml
new file mode 100644
index 00000000000..2923346c0f0
--- /dev/null
+++ b/changelogs/unreleased/bridge-rules.yml
@@ -0,0 +1,5 @@
+---
+title: Added rules configuration for Ci::Bridge
+merge_request: 19605
+author:
+type: added
diff --git a/changelogs/unreleased/bug-35083-check-permission-for-downstream-pipeline.yml b/changelogs/unreleased/bug-35083-check-permission-for-downstream-pipeline.yml
new file mode 100644
index 00000000000..e1252f0020c
--- /dev/null
+++ b/changelogs/unreleased/bug-35083-check-permission-for-downstream-pipeline.yml
@@ -0,0 +1,5 @@
+---
+title: Add protected branch permission check to run downstream pipelines
+merge_request: 20964
+author:
+type: fixed
diff --git a/changelogs/unreleased/bvl-allow-moving-forked-projects-across-shards.yml b/changelogs/unreleased/bvl-allow-moving-forked-projects-across-shards.yml
new file mode 100644
index 00000000000..6275a43f70a
--- /dev/null
+++ b/changelogs/unreleased/bvl-allow-moving-forked-projects-across-shards.yml
@@ -0,0 +1,5 @@
+---
+title: Fix forking a deduplicated project after it was moved to a different shard
+merge_request: 21339
+author:
+type: fixed
diff --git a/changelogs/unreleased/bvl-cache-repository-ancestor.yml b/changelogs/unreleased/bvl-cache-repository-ancestor.yml
new file mode 100644
index 00000000000..6c50c2319fc
--- /dev/null
+++ b/changelogs/unreleased/bvl-cache-repository-ancestor.yml
@@ -0,0 +1,5 @@
+---
+title: Cache the ancestor? Gitaly call to speed up polling for the merge request widget
+merge_request: 20958
+author:
+type: performance
diff --git a/changelogs/unreleased/bvl-remove-cleanup-feature-flag.yml b/changelogs/unreleased/bvl-remove-cleanup-feature-flag.yml
new file mode 100644
index 00000000000..31ec5157b1f
--- /dev/null
+++ b/changelogs/unreleased/bvl-remove-cleanup-feature-flag.yml
@@ -0,0 +1,6 @@
+---
+title: Try longer to clean up after using a gpg-keychain and raise exption if the
+ cleanup fails
+merge_request: 20718
+author:
+type: fixed
diff --git a/changelogs/unreleased/bvl-remove-validate-merge-sha-ff.yml b/changelogs/unreleased/bvl-remove-validate-merge-sha-ff.yml
new file mode 100644
index 00000000000..c5a6a46a835
--- /dev/null
+++ b/changelogs/unreleased/bvl-remove-validate-merge-sha-ff.yml
@@ -0,0 +1,6 @@
+---
+title: Validate the merge sha before merging, confirming that the merge will only
+ contain what the user saw
+merge_request: 20348
+author:
+type: fixed
diff --git a/changelogs/unreleased/chore-admin-mode-rack-attack-default-paths-migration.yml b/changelogs/unreleased/chore-admin-mode-rack-attack-default-paths-migration.yml
new file mode 100644
index 00000000000..20486c3bfa4
--- /dev/null
+++ b/changelogs/unreleased/chore-admin-mode-rack-attack-default-paths-migration.yml
@@ -0,0 +1,5 @@
+---
+title: Add admin mode controller path to Rack::Attack defaults
+merge_request: 20735
+author: Diego Louzán
+type: changed
diff --git a/changelogs/unreleased/chore-rename-user-full-private-access.yml b/changelogs/unreleased/chore-rename-user-full-private-access.yml
new file mode 100644
index 00000000000..6bedfd6581b
--- /dev/null
+++ b/changelogs/unreleased/chore-rename-user-full-private-access.yml
@@ -0,0 +1,5 @@
+---
+title: Rename User#full_private_access? to User#can_read_all_resources?
+merge_request: 21668
+author: Diego Louzán
+type: other
diff --git a/changelogs/unreleased/ci-merge-dependencies-and-artifacts-with-needs.yml b/changelogs/unreleased/ci-merge-dependencies-and-artifacts-with-needs.yml
new file mode 100644
index 00000000000..d9ba35b44c4
--- /dev/null
+++ b/changelogs/unreleased/ci-merge-dependencies-and-artifacts-with-needs.yml
@@ -0,0 +1,5 @@
+---
+title: Control passing artifacts from CI DAG needs
+merge_request: 19943
+author:
+type: added
diff --git a/changelogs/unreleased/ci-template-sentry-application.yml b/changelogs/unreleased/ci-template-sentry-application.yml
new file mode 100644
index 00000000000..f5cf3bbf19b
--- /dev/null
+++ b/changelogs/unreleased/ci-template-sentry-application.yml
@@ -0,0 +1,5 @@
+---
+title: CI template for Sentry managed app
+merge_request: 21208
+author:
+type: added
diff --git a/changelogs/unreleased/ci_template_cluster_applications.yml b/changelogs/unreleased/ci_template_cluster_applications.yml
new file mode 100644
index 00000000000..aab3544ef1c
--- /dev/null
+++ b/changelogs/unreleased/ci_template_cluster_applications.yml
@@ -0,0 +1,5 @@
+---
+title: CI template for installing cluster applications
+merge_request: 20822
+author:
+type: added
diff --git a/changelogs/unreleased/cleanup-monitoring-dashboard-unused-methods.yml b/changelogs/unreleased/cleanup-monitoring-dashboard-unused-methods.yml
new file mode 100644
index 00000000000..f4dac5e2e0f
--- /dev/null
+++ b/changelogs/unreleased/cleanup-monitoring-dashboard-unused-methods.yml
@@ -0,0 +1,5 @@
+---
+title: Removed unused methods in monitoring dashboard
+merge_request: 20819
+author:
+type: other
diff --git a/changelogs/unreleased/cloud_run_feature_enabled_by_default.yml b/changelogs/unreleased/cloud_run_feature_enabled_by_default.yml
new file mode 100644
index 00000000000..5ad41ae95ac
--- /dev/null
+++ b/changelogs/unreleased/cloud_run_feature_enabled_by_default.yml
@@ -0,0 +1,5 @@
+---
+title: Re-enable the cloud run feature
+merge_request: https://gitlab.com/gitlab-org/gitlab/merge_requests/21762
+author:
+type: fixed
diff --git a/changelogs/unreleased/commit-box-child-label.yml b/changelogs/unreleased/commit-box-child-label.yml
new file mode 100644
index 00000000000..99cfcae2016
--- /dev/null
+++ b/changelogs/unreleased/commit-box-child-label.yml
@@ -0,0 +1,5 @@
+---
+title: Add child label to commit box
+merge_request: 21323
+author:
+type: added
diff --git a/changelogs/unreleased/complete-pages-metadata-migration.yml b/changelogs/unreleased/complete-pages-metadata-migration.yml
new file mode 100644
index 00000000000..ab5764b7a84
--- /dev/null
+++ b/changelogs/unreleased/complete-pages-metadata-migration.yml
@@ -0,0 +1,5 @@
+---
+title: Add post deployment migration to complete pages metadata migration
+merge_request: 19928
+author:
+type: other
diff --git a/changelogs/unreleased/confidential_mr_styling.yml b/changelogs/unreleased/confidential_mr_styling.yml
new file mode 100644
index 00000000000..fc936bbb87c
--- /dev/null
+++ b/changelogs/unreleased/confidential_mr_styling.yml
@@ -0,0 +1,5 @@
+---
+title: Improve create confidential MR dropdown styling.
+merge_request: 20176
+author: Lee Tickett
+type: other
diff --git a/changelogs/unreleased/create-persistent-ref-outside-of-transaction.yml b/changelogs/unreleased/create-persistent-ref-outside-of-transaction.yml
new file mode 100644
index 00000000000..c268f376fa7
--- /dev/null
+++ b/changelogs/unreleased/create-persistent-ref-outside-of-transaction.yml
@@ -0,0 +1,5 @@
+---
+title: Move persistent_ref.create into run_after_commit
+merge_request: 20422
+author:
+type: fixed
diff --git a/changelogs/unreleased/deployment-finished-at.yml b/changelogs/unreleased/deployment-finished-at.yml
new file mode 100644
index 00000000000..214ea2eb765
--- /dev/null
+++ b/changelogs/unreleased/deployment-finished-at.yml
@@ -0,0 +1,5 @@
+---
+title: Refactor the Deployment model so state machine events are used by both CI and the API
+merge_request: 20474
+author:
+type: fixed
diff --git a/changelogs/unreleased/dz-move-operations-routes.yml b/changelogs/unreleased/dz-move-operations-routes.yml
new file mode 100644
index 00000000000..76e7e81fdea
--- /dev/null
+++ b/changelogs/unreleased/dz-move-operations-routes.yml
@@ -0,0 +1,5 @@
+---
+title: Move operations project routes under - scope
+merge_request: 20456
+author:
+type: deprecated
diff --git a/changelogs/unreleased/dz-move-wiki-route.yml b/changelogs/unreleased/dz-move-wiki-route.yml
new file mode 100644
index 00000000000..f4fa96d8822
--- /dev/null
+++ b/changelogs/unreleased/dz-move-wiki-route.yml
@@ -0,0 +1,5 @@
+---
+title: Move wiki routing under /-/ scope
+merge_request: 21185
+author:
+type: deprecated
diff --git a/changelogs/unreleased/env-tooltips.yml b/changelogs/unreleased/env-tooltips.yml
new file mode 100644
index 00000000000..f2d33bea1e5
--- /dev/null
+++ b/changelogs/unreleased/env-tooltips.yml
@@ -0,0 +1,5 @@
+---
+title: Fix tooltip hovers in environments table
+merge_request: 20737
+author:
+type: fixed
diff --git a/changelogs/unreleased/eread-harmonize-capitalization-in-ui.yml b/changelogs/unreleased/eread-harmonize-capitalization-in-ui.yml
new file mode 100644
index 00000000000..a34b7884f70
--- /dev/null
+++ b/changelogs/unreleased/eread-harmonize-capitalization-in-ui.yml
@@ -0,0 +1,5 @@
+---
+title: Harmonize capitalization on cluster UI
+merge_request: 21878
+author: Evan Read
+type: other
diff --git a/changelogs/unreleased/evidence-docs-and-release-api.yml b/changelogs/unreleased/evidence-docs-and-release-api.yml
new file mode 100644
index 00000000000..23ce41b9460
--- /dev/null
+++ b/changelogs/unreleased/evidence-docs-and-release-api.yml
@@ -0,0 +1,5 @@
+---
+title: Update Release API with evidence related data.
+merge_request: 19706
+author:
+type: added
diff --git a/changelogs/unreleased/expose_moved_to_in_issues_api.yml b/changelogs/unreleased/expose_moved_to_in_issues_api.yml
new file mode 100644
index 00000000000..fc2881532c4
--- /dev/null
+++ b/changelogs/unreleased/expose_moved_to_in_issues_api.yml
@@ -0,0 +1,5 @@
+---
+title: Expose moved_to_id in issues API
+merge_request: 20083
+author: Lee Tickett
+type: added
diff --git a/changelogs/unreleased/feat-circuit-project-service.yml b/changelogs/unreleased/feat-circuit-project-service.yml
new file mode 100644
index 00000000000..ec073ede9ee
--- /dev/null
+++ b/changelogs/unreleased/feat-circuit-project-service.yml
@@ -0,0 +1,5 @@
+---
+title: Add Unify Circuit project integration service
+merge_request: 19849
+author: Fabio Huser
+type: added
diff --git a/changelogs/unreleased/feat-group-mentions-prevention.yml b/changelogs/unreleased/feat-group-mentions-prevention.yml
new file mode 100644
index 00000000000..dd85a226111
--- /dev/null
+++ b/changelogs/unreleased/feat-group-mentions-prevention.yml
@@ -0,0 +1,5 @@
+---
+title: Allow groups to disable mentioning their members, if the group is mentioned
+merge_request: 20184
+author: Fabio Huser
+type: added
diff --git a/changelogs/unreleased/feat-increase-start-in.yml b/changelogs/unreleased/feat-increase-start-in.yml
new file mode 100644
index 00000000000..d92983eeb5f
--- /dev/null
+++ b/changelogs/unreleased/feat-increase-start-in.yml
@@ -0,0 +1,5 @@
+---
+title: Increase upper limit of start_in attribute to 1 week
+merge_request: 20323
+author: Will Layton
+type: changed
diff --git a/changelogs/unreleased/feat-merge-request-coverage-delta.yml b/changelogs/unreleased/feat-merge-request-coverage-delta.yml
new file mode 100644
index 00000000000..d158088eb49
--- /dev/null
+++ b/changelogs/unreleased/feat-merge-request-coverage-delta.yml
@@ -0,0 +1,5 @@
+---
+title: Add coverage difference visualization to merge request page
+merge_request: 20676
+author: Fabio Huser
+type: added
diff --git a/changelogs/unreleased/feat-openapi-viewer.yml b/changelogs/unreleased/feat-openapi-viewer.yml
new file mode 100644
index 00000000000..fc5e2cb06fc
--- /dev/null
+++ b/changelogs/unreleased/feat-openapi-viewer.yml
@@ -0,0 +1,5 @@
+---
+title: add OpenAPI file viewer
+merge_request: 21106
+author: Roger Meier
+type: added
diff --git a/changelogs/unreleased/feat-ssh-sha256.yml b/changelogs/unreleased/feat-ssh-sha256.yml
new file mode 100644
index 00000000000..91a881a5962
--- /dev/null
+++ b/changelogs/unreleased/feat-ssh-sha256.yml
@@ -0,0 +1,5 @@
+---
+title: add sha256 fingerprint to keys model, view and extend users API to search user via fingerprint
+merge_request: 19860
+author: Roger Meier
+type: added
diff --git a/changelogs/unreleased/feat-support-omniauth-for-admin-mode.yml b/changelogs/unreleased/feat-support-omniauth-for-admin-mode.yml
new file mode 100644
index 00000000000..271499700e3
--- /dev/null
+++ b/changelogs/unreleased/feat-support-omniauth-for-admin-mode.yml
@@ -0,0 +1,5 @@
+---
+title: Add OmniAuth authentication support to admin mode feature
+merge_request: 18214
+author: Diego Louzán
+type: added
diff --git a/changelogs/unreleased/feat-tagger.yml b/changelogs/unreleased/feat-tagger.yml
new file mode 100644
index 00000000000..e217c2e1be9
--- /dev/null
+++ b/changelogs/unreleased/feat-tagger.yml
@@ -0,0 +1,5 @@
+---
+title: add tagger within tag view
+merge_request: 19681
+author: Roger Meier
+type: added
diff --git a/changelogs/unreleased/feat-ui-releases-pagination.yml b/changelogs/unreleased/feat-ui-releases-pagination.yml
new file mode 100644
index 00000000000..8f6efe8ca01
--- /dev/null
+++ b/changelogs/unreleased/feat-ui-releases-pagination.yml
@@ -0,0 +1,5 @@
+---
+title: Implement pagination for project releases page
+merge_request: 19912
+author: Fabio Huser
+type: added
diff --git a/changelogs/unreleased/feature-advanced-delete-k8s-resources-ee.yml b/changelogs/unreleased/feature-advanced-delete-k8s-resources-ee.yml
new file mode 100644
index 00000000000..5323a70982c
--- /dev/null
+++ b/changelogs/unreleased/feature-advanced-delete-k8s-resources-ee.yml
@@ -0,0 +1,5 @@
+---
+title: Delete kubernetes cluster association and resources
+merge_request: 16954
+author:
+type: added
diff --git a/changelogs/unreleased/feature-jramsay-diff-expansion-copy.yml b/changelogs/unreleased/feature-jramsay-diff-expansion-copy.yml
new file mode 100644
index 00000000000..9cf3bac3ca5
--- /dev/null
+++ b/changelogs/unreleased/feature-jramsay-diff-expansion-copy.yml
@@ -0,0 +1,5 @@
+---
+title: Improve diff expansion text
+merge_request: 21616
+author:
+type: other
diff --git a/changelogs/unreleased/filter-for-project-and-group-audit-events.yml b/changelogs/unreleased/filter-for-project-and-group-audit-events.yml
new file mode 100644
index 00000000000..4fe4ea0beb5
--- /dev/null
+++ b/changelogs/unreleased/filter-for-project-and-group-audit-events.yml
@@ -0,0 +1,5 @@
+---
+title: Add created_before/after filter to group/project audit events
+merge_request: 20641
+author:
+type: added
diff --git a/changelogs/unreleased/fix-conflict-dast-ds.yml b/changelogs/unreleased/fix-conflict-dast-ds.yml
new file mode 100644
index 00000000000..fd05ec2e7d9
--- /dev/null
+++ b/changelogs/unreleased/fix-conflict-dast-ds.yml
@@ -0,0 +1,5 @@
+---
+title: Rename common template jobs in sast and ds
+merge_request: 22084
+author:
+type: fixed
diff --git a/changelogs/unreleased/fix-env-doc-link.yml b/changelogs/unreleased/fix-env-doc-link.yml
new file mode 100644
index 00000000000..0ee877a3029
--- /dev/null
+++ b/changelogs/unreleased/fix-env-doc-link.yml
@@ -0,0 +1,5 @@
+---
+title: Fix documentation link from empty environment dashboard
+merge_request: 20415
+author:
+type: fixed
diff --git a/changelogs/unreleased/fix-fork-link-display-bug.yml b/changelogs/unreleased/fix-fork-link-display-bug.yml
new file mode 100644
index 00000000000..2a8f2b1a38d
--- /dev/null
+++ b/changelogs/unreleased/fix-fork-link-display-bug.yml
@@ -0,0 +1,5 @@
+---
+title: Fix a display bug in the fork removal description message
+merge_request: 20843
+author:
+type: fixed
diff --git a/changelogs/unreleased/fix-groups-search-dropdown.yml b/changelogs/unreleased/fix-groups-search-dropdown.yml
new file mode 100644
index 00000000000..7dd1a5a1d4f
--- /dev/null
+++ b/changelogs/unreleased/fix-groups-search-dropdown.yml
@@ -0,0 +1,5 @@
+---
+title: Fix group search in groups dropdown
+merge_request: 20535
+author:
+type: fixed
diff --git a/changelogs/unreleased/fix-incorrect-new-branch-name-from-issue.yml b/changelogs/unreleased/fix-incorrect-new-branch-name-from-issue.yml
new file mode 100644
index 00000000000..1afd61e40d0
--- /dev/null
+++ b/changelogs/unreleased/fix-incorrect-new-branch-name-from-issue.yml
@@ -0,0 +1,5 @@
+---
+title: Fix incorrect new branch name from issue
+merge_request: 20677
+author: Lee Tickett
+type: fixed
diff --git a/changelogs/unreleased/fix-job-log-default-colors.yml b/changelogs/unreleased/fix-job-log-default-colors.yml
new file mode 100644
index 00000000000..b30eac4bc4b
--- /dev/null
+++ b/changelogs/unreleased/fix-job-log-default-colors.yml
@@ -0,0 +1,5 @@
+---
+title: Fix change to default foreground and backgorund colors in job log
+merge_request: 20787
+author:
+type: fixed
diff --git a/changelogs/unreleased/fix-padding-design-comments.yml b/changelogs/unreleased/fix-padding-design-comments.yml
new file mode 100644
index 00000000000..e8422c7598a
--- /dev/null
+++ b/changelogs/unreleased/fix-padding-design-comments.yml
@@ -0,0 +1,5 @@
+---
+title: Fix padding on the design comments
+merge_request: 21839
+author:
+type: fixed
diff --git a/changelogs/unreleased/fix-padding-in-project-settings-members.yml b/changelogs/unreleased/fix-padding-in-project-settings-members.yml
new file mode 100644
index 00000000000..f77821ce83a
--- /dev/null
+++ b/changelogs/unreleased/fix-padding-in-project-settings-members.yml
@@ -0,0 +1,5 @@
+---
+title: Fix multi select input padding in project and group user select
+merge_request: 20520
+author: Kevin Lee
+type: fixed
diff --git a/changelogs/unreleased/fix-project-list-cache-key.yml b/changelogs/unreleased/fix-project-list-cache-key.yml
new file mode 100644
index 00000000000..261687e6ca7
--- /dev/null
+++ b/changelogs/unreleased/fix-project-list-cache-key.yml
@@ -0,0 +1,5 @@
+---
+title: Fix projects list to show info in user's locale
+merge_request: 20015
+author: Arun Kumar Mohan
+type: fixed
diff --git a/changelogs/unreleased/fix-strip_signature.yml b/changelogs/unreleased/fix-strip_signature.yml
new file mode 100644
index 00000000000..0f61c38ad0f
--- /dev/null
+++ b/changelogs/unreleased/fix-strip_signature.yml
@@ -0,0 +1,5 @@
+---
+title: 'Correctly return stripped PGP text'
+merge_request: 21187
+author: Roger Meier
+type: fixed
diff --git a/changelogs/unreleased/fix_assignee_url_issue_board_sidebar.yml b/changelogs/unreleased/fix_assignee_url_issue_board_sidebar.yml
new file mode 100644
index 00000000000..b91e5cfdde7
--- /dev/null
+++ b/changelogs/unreleased/fix_assignee_url_issue_board_sidebar.yml
@@ -0,0 +1,5 @@
+---
+title: Fix assignee url in issue board sidebar
+merge_request: 20992
+author: Lee Tickett
+type: fixed
diff --git a/changelogs/unreleased/fixes-35624.yml b/changelogs/unreleased/fixes-35624.yml
new file mode 100644
index 00000000000..855a4ad8e93
--- /dev/null
+++ b/changelogs/unreleased/fixes-35624.yml
@@ -0,0 +1,5 @@
+---
+title: Resets aria-describedby on mouseleave
+merge_request: 20092
+author: carolcarvalhosa
+type: fixed
diff --git a/changelogs/unreleased/fj-31133-snippet-content-size-limit.yml b/changelogs/unreleased/fj-31133-snippet-content-size-limit.yml
new file mode 100644
index 00000000000..acc8e4efb04
--- /dev/null
+++ b/changelogs/unreleased/fj-31133-snippet-content-size-limit.yml
@@ -0,0 +1,5 @@
+---
+title: Add limit for snippet content size
+merge_request: 20346
+author:
+type: performance
diff --git a/changelogs/unreleased/fj-36079-snippet-graphql-endpoints-with-mutations.yml b/changelogs/unreleased/fj-36079-snippet-graphql-endpoints-with-mutations.yml
new file mode 100644
index 00000000000..930e9cbdb56
--- /dev/null
+++ b/changelogs/unreleased/fj-36079-snippet-graphql-endpoints-with-mutations.yml
@@ -0,0 +1,5 @@
+---
+title: Added Snippets GraphQL mutations
+merge_request: 20956
+author:
+type: added
diff --git a/changelogs/unreleased/fj-36079-snippet-graphql-endpoints.yml b/changelogs/unreleased/fj-36079-snippet-graphql-endpoints.yml
new file mode 100644
index 00000000000..aeb4592d36e
--- /dev/null
+++ b/changelogs/unreleased/fj-36079-snippet-graphql-endpoints.yml
@@ -0,0 +1,5 @@
+---
+title: Add Snippet GraphQL resolver endpoints
+merge_request: 20613
+author:
+type: added
diff --git a/changelogs/unreleased/fj-37254-remove-delete-personal-snippet.yml b/changelogs/unreleased/fj-37254-remove-delete-personal-snippet.yml
new file mode 100644
index 00000000000..2a9f26c870d
--- /dev/null
+++ b/changelogs/unreleased/fj-37254-remove-delete-personal-snippet.yml
@@ -0,0 +1,5 @@
+---
+title: Remove destroy_personal_snippet ability
+merge_request: 20717
+author:
+type: fixed
diff --git a/changelogs/unreleased/fj-37436-fix-create-personal-snippet-ability.yml b/changelogs/unreleased/fj-37436-fix-create-personal-snippet-ability.yml
new file mode 100644
index 00000000000..7b1d0548f11
--- /dev/null
+++ b/changelogs/unreleased/fj-37436-fix-create-personal-snippet-ability.yml
@@ -0,0 +1,5 @@
+---
+title: Ensure to check create_personal_snippet ability
+merge_request: 20838
+author:
+type: fixed
diff --git a/changelogs/unreleased/fj-38015-respect-query-params-in-embed-url.yml b/changelogs/unreleased/fj-38015-respect-query-params-in-embed-url.yml
new file mode 100644
index 00000000000..35bd48e9e39
--- /dev/null
+++ b/changelogs/unreleased/fj-38015-respect-query-params-in-embed-url.yml
@@ -0,0 +1,5 @@
+---
+title: Respect snippet query params when displaying embed urls
+merge_request: 21131
+author:
+type: fixed
diff --git a/changelogs/unreleased/fj-38068-fix-snippet-route-refactor.yml b/changelogs/unreleased/fj-38068-fix-snippet-route-refactor.yml
new file mode 100644
index 00000000000..b3325a81882
--- /dev/null
+++ b/changelogs/unreleased/fj-38068-fix-snippet-route-refactor.yml
@@ -0,0 +1,5 @@
+---
+title: Fix snippet routes
+merge_request: 21248
+author:
+type: fixed
diff --git a/changelogs/unreleased/fj-add-filters-to-snippets-finder.yml b/changelogs/unreleased/fj-add-filters-to-snippets-finder.yml
new file mode 100644
index 00000000000..df8c70152d1
--- /dev/null
+++ b/changelogs/unreleased/fj-add-filters-to-snippets-finder.yml
@@ -0,0 +1,5 @@
+---
+title: Add more filters to SnippetsFinder
+merge_request: 20767
+author:
+type: changed
diff --git a/changelogs/unreleased/fj-add-mark-as-spam-snippet-mutation.yml b/changelogs/unreleased/fj-add-mark-as-spam-snippet-mutation.yml
new file mode 100644
index 00000000000..b5f492e6628
--- /dev/null
+++ b/changelogs/unreleased/fj-add-mark-as-spam-snippet-mutation.yml
@@ -0,0 +1,5 @@
+---
+title: Add mark as spam snippet mutation
+merge_request: 21912
+author:
+type: other
diff --git a/changelogs/unreleased/fj-add-report-permission-to-graphql-snippet-endpoint.yml b/changelogs/unreleased/fj-add-report-permission-to-graphql-snippet-endpoint.yml
new file mode 100644
index 00000000000..434ed0bb437
--- /dev/null
+++ b/changelogs/unreleased/fj-add-report-permission-to-graphql-snippet-endpoint.yml
@@ -0,0 +1,5 @@
+---
+title: Add reportSnippet permission to Snippet GraphQL
+merge_request: 21836
+author:
+type: other
diff --git a/changelogs/unreleased/fj-fix-snippets-routes.yml b/changelogs/unreleased/fj-fix-snippets-routes.yml
new file mode 100644
index 00000000000..d1c607cc19c
--- /dev/null
+++ b/changelogs/unreleased/fj-fix-snippets-routes.yml
@@ -0,0 +1,5 @@
+---
+title: Rename snippet refactored routes
+merge_request: 21267
+author:
+type: fixed
diff --git a/changelogs/unreleased/fj-secret-snippet-migrations.yml b/changelogs/unreleased/fj-secret-snippet-migrations.yml
new file mode 100644
index 00000000000..67eefcbfd35
--- /dev/null
+++ b/changelogs/unreleased/fj-secret-snippet-migrations.yml
@@ -0,0 +1,5 @@
+---
+title: Add migrations for secret snippets
+merge_request: 19939
+author:
+type: added
diff --git a/changelogs/unreleased/fork-puma-gem.yml b/changelogs/unreleased/fork-puma-gem.yml
new file mode 100644
index 00000000000..a5455e96fa3
--- /dev/null
+++ b/changelogs/unreleased/fork-puma-gem.yml
@@ -0,0 +1,5 @@
+---
+title: Fork Puma to validate scheduler fixes
+merge_request: 21547
+author:
+type: performance
diff --git a/changelogs/unreleased/generate-test-prometheus-data.yml b/changelogs/unreleased/generate-test-prometheus-data.yml
new file mode 100644
index 00000000000..861b3d45863
--- /dev/null
+++ b/changelogs/unreleased/generate-test-prometheus-data.yml
@@ -0,0 +1,6 @@
+---
+title: Genereate a set of sample prometheus metrics and route to the sample metrics
+ when enabled
+merge_request: 19987
+author:
+type: added
diff --git a/changelogs/unreleased/georgekoltsov-add-rate-limit-to-exports.yml b/changelogs/unreleased/georgekoltsov-add-rate-limit-to-exports.yml
new file mode 100644
index 00000000000..316a4ed46a3
--- /dev/null
+++ b/changelogs/unreleased/georgekoltsov-add-rate-limit-to-exports.yml
@@ -0,0 +1,5 @@
+---
+title: Add Project Export request/download rate limits
+merge_request: 20962
+author:
+type: other
diff --git a/changelogs/unreleased/gitaly-2108-repos-gc-after-move.yml b/changelogs/unreleased/gitaly-2108-repos-gc-after-move.yml
new file mode 100644
index 00000000000..68092b9c348
--- /dev/null
+++ b/changelogs/unreleased/gitaly-2108-repos-gc-after-move.yml
@@ -0,0 +1,5 @@
+---
+title: Run housekeeping after moving a repository between shards
+merge_request: 20863
+author:
+type: performance
diff --git a/changelogs/unreleased/gitaly-version-v1.72.0.yml b/changelogs/unreleased/gitaly-version-v1.72.0.yml
new file mode 100644
index 00000000000..0e007befa4d
--- /dev/null
+++ b/changelogs/unreleased/gitaly-version-v1.72.0.yml
@@ -0,0 +1,5 @@
+---
+title: Upgrade to Gitaly v1.72.0
+merge_request: 20313
+author:
+type: changed
diff --git a/changelogs/unreleased/gitaly-version-v1.73.0.yml b/changelogs/unreleased/gitaly-version-v1.73.0.yml
new file mode 100644
index 00000000000..cf85ba35757
--- /dev/null
+++ b/changelogs/unreleased/gitaly-version-v1.73.0.yml
@@ -0,0 +1,5 @@
+---
+title: Upgrade to Gitaly v1.73.0
+merge_request: 20443
+author:
+type: changed
diff --git a/changelogs/unreleased/gitaly-version-v1.74.0.yml b/changelogs/unreleased/gitaly-version-v1.74.0.yml
new file mode 100644
index 00000000000..bad7ed8fddb
--- /dev/null
+++ b/changelogs/unreleased/gitaly-version-v1.74.0.yml
@@ -0,0 +1,5 @@
+---
+title: Upgrade to Gitaly v1.74.0
+merge_request: 20706
+author:
+type: changed
diff --git a/changelogs/unreleased/gitaly-version-v1.75.0.yml b/changelogs/unreleased/gitaly-version-v1.75.0.yml
new file mode 100644
index 00000000000..a4367d676e7
--- /dev/null
+++ b/changelogs/unreleased/gitaly-version-v1.75.0.yml
@@ -0,0 +1,5 @@
+---
+title: Upgrade to Gitaly v1.75.0
+merge_request: 21045
+author:
+type: changed
diff --git a/changelogs/unreleased/gitaly-version-v1.76.0.yml b/changelogs/unreleased/gitaly-version-v1.76.0.yml
new file mode 100644
index 00000000000..9cf34e3a05f
--- /dev/null
+++ b/changelogs/unreleased/gitaly-version-v1.76.0.yml
@@ -0,0 +1,5 @@
+---
+title: Upgrade to Gitaly v1.76.0
+merge_request: 21857
+author:
+type: changed
diff --git a/changelogs/unreleased/gitlabktl-17-add-rbac-permissions-for-knative-version.yml b/changelogs/unreleased/gitlabktl-17-add-rbac-permissions-for-knative-version.yml
new file mode 100644
index 00000000000..5baf993629e
--- /dev/null
+++ b/changelogs/unreleased/gitlabktl-17-add-rbac-permissions-for-knative-version.yml
@@ -0,0 +1,5 @@
+---
+title: Add rbac access to knative-serving namespace deployments to get knative version information
+merge_request: 20244
+author:
+type: changed
diff --git a/changelogs/unreleased/gke-oauth.yml b/changelogs/unreleased/gke-oauth.yml
new file mode 100644
index 00000000000..9d5a4168ec8
--- /dev/null
+++ b/changelogs/unreleased/gke-oauth.yml
@@ -0,0 +1,5 @@
+---
+title: Allow Gitlab GKE clusters to access Google Cloud Registry private images
+merge_request: 20662
+author: Tan Yee Jian
+type: fixed
diff --git a/changelogs/unreleased/helm_values_default.yml b/changelogs/unreleased/helm_values_default.yml
new file mode 100644
index 00000000000..c731ef85e26
--- /dev/null
+++ b/changelogs/unreleased/helm_values_default.yml
@@ -0,0 +1,5 @@
+---
+title: Upgrade auto-deploy-image for helm default values file
+merge_request: 20588
+author:
+type: changed
diff --git a/changelogs/unreleased/hly-search-by-project-full-path.yml b/changelogs/unreleased/hly-search-by-project-full-path.yml
new file mode 100644
index 00000000000..a8db5f56a33
--- /dev/null
+++ b/changelogs/unreleased/hly-search-by-project-full-path.yml
@@ -0,0 +1,5 @@
+---
+title: Allow searching of projects by full path
+merge_request: 20659
+author:
+type: added
diff --git a/changelogs/unreleased/http-status-422.yml b/changelogs/unreleased/http-status-422.yml
new file mode 100644
index 00000000000..51f189b5e7c
--- /dev/null
+++ b/changelogs/unreleased/http-status-422.yml
@@ -0,0 +1,5 @@
+---
+title: Return 422 status code in case of error in submitting comments
+merge_request: 19276
+author: raju249
+type: added
diff --git a/changelogs/unreleased/id-mr-squash-message-performance.yml b/changelogs/unreleased/id-mr-squash-message-performance.yml
new file mode 100644
index 00000000000..974c05a43c8
--- /dev/null
+++ b/changelogs/unreleased/id-mr-squash-message-performance.yml
@@ -0,0 +1,5 @@
+---
+title: Suggest squash commit messages based on recent commits
+merge_request: 20231
+author:
+type: performance
diff --git a/changelogs/unreleased/id-optimize-query-for-ci-pipelines.yml b/changelogs/unreleased/id-optimize-query-for-ci-pipelines.yml
new file mode 100644
index 00000000000..b20d5a5c3ed
--- /dev/null
+++ b/changelogs/unreleased/id-optimize-query-for-ci-pipelines.yml
@@ -0,0 +1,5 @@
+---
+title: Optimize query for CI pipelines of merge request
+merge_request: 19653
+author:
+type: performance
diff --git a/changelogs/unreleased/include-worker-attributes-in-sidekiq-metrics-v2.yml b/changelogs/unreleased/include-worker-attributes-in-sidekiq-metrics-v2.yml
new file mode 100644
index 00000000000..a5881b6e187
--- /dev/null
+++ b/changelogs/unreleased/include-worker-attributes-in-sidekiq-metrics-v2.yml
@@ -0,0 +1,5 @@
+---
+title: Add worker attributes to Sidekiq metrics
+merge_request: 20292
+author:
+type: other
diff --git a/changelogs/unreleased/issue_34226.yml b/changelogs/unreleased/issue_34226.yml
new file mode 100644
index 00000000000..eb0e2b27b87
--- /dev/null
+++ b/changelogs/unreleased/issue_34226.yml
@@ -0,0 +1,5 @@
+---
+title: Improve issues search performance on GraphQL
+merge_request: 20784
+author:
+type: performance
diff --git a/changelogs/unreleased/issue_7105.yml b/changelogs/unreleased/issue_7105.yml
new file mode 100644
index 00000000000..b85ee761725
--- /dev/null
+++ b/changelogs/unreleased/issue_7105.yml
@@ -0,0 +1,5 @@
+---
+title: Allow PDF attachments to be opened on browser
+merge_request: 21272
+author:
+type: added
diff --git a/changelogs/unreleased/jira-commit-link.yml b/changelogs/unreleased/jira-commit-link.yml
new file mode 100644
index 00000000000..8ffacdb1e63
--- /dev/null
+++ b/changelogs/unreleased/jira-commit-link.yml
@@ -0,0 +1,5 @@
+---
+title: Return project commit url instead of commits url
+merge_request: 20369
+author: raju249
+type: added
diff --git a/changelogs/unreleased/jivanvl-fix-alignment-options-dropdown-graph.yml b/changelogs/unreleased/jivanvl-fix-alignment-options-dropdown-graph.yml
new file mode 100644
index 00000000000..cff03023b4c
--- /dev/null
+++ b/changelogs/unreleased/jivanvl-fix-alignment-options-dropdown-graph.yml
@@ -0,0 +1,5 @@
+---
+title: Fix dropdown location on the monitoring charts
+merge_request: 20400
+author:
+type: fixed
diff --git a/changelogs/unreleased/knative-0-9-update.yml b/changelogs/unreleased/knative-0-9-update.yml
new file mode 100644
index 00000000000..d25e9e90efe
--- /dev/null
+++ b/changelogs/unreleased/knative-0-9-update.yml
@@ -0,0 +1,5 @@
+---
+title: Update Knative to 0.9.0
+merge_request: 21361
+author: cab105
+type: added
diff --git a/changelogs/unreleased/large_imports_rake_task.yml b/changelogs/unreleased/large_imports_rake_task.yml
new file mode 100644
index 00000000000..cf855da8f92
--- /dev/null
+++ b/changelogs/unreleased/large_imports_rake_task.yml
@@ -0,0 +1,5 @@
+---
+title: Import large gitlab_project exports via rake task
+merge_request: 20724
+author:
+type: added
diff --git a/changelogs/unreleased/leipert-increase-dag-limit.yml b/changelogs/unreleased/leipert-increase-dag-limit.yml
new file mode 100644
index 00000000000..1da61d951b4
--- /dev/null
+++ b/changelogs/unreleased/leipert-increase-dag-limit.yml
@@ -0,0 +1,5 @@
+---
+title: Increase lower DAG `needs` limit from five to ten
+merge_request: 21237
+author:
+type: changed
diff --git a/changelogs/unreleased/lm-create-issues-from-sentry-details-page.yml b/changelogs/unreleased/lm-create-issues-from-sentry-details-page.yml
new file mode 100644
index 00000000000..0a9774dfcd3
--- /dev/null
+++ b/changelogs/unreleased/lm-create-issues-from-sentry-details-page.yml
@@ -0,0 +1,5 @@
+---
+title: Adds ability to create issues from sentry details page
+merge_request: 20666
+author:
+type: added
diff --git a/changelogs/unreleased/lm-create-new-issue-from-sentry.yml b/changelogs/unreleased/lm-create-new-issue-from-sentry.yml
new file mode 100644
index 00000000000..31a6a5eb4cc
--- /dev/null
+++ b/changelogs/unreleased/lm-create-new-issue-from-sentry.yml
@@ -0,0 +1,5 @@
+---
+title: Add ability to create new issue from sentry error detail page
+merge_request: 20337
+author:
+type: added
diff --git a/changelogs/unreleased/log_service_web_hooks.yml b/changelogs/unreleased/log_service_web_hooks.yml
new file mode 100644
index 00000000000..b0a5772da22
--- /dev/null
+++ b/changelogs/unreleased/log_service_web_hooks.yml
@@ -0,0 +1,5 @@
+---
+title: Added WebHookLogs for ServiceHooks
+merge_request: 20976
+author:
+type: added
diff --git a/changelogs/unreleased/make-workflow-rules-to-work.yml b/changelogs/unreleased/make-workflow-rules-to-work.yml
new file mode 100644
index 00000000000..04a6a53de13
--- /dev/null
+++ b/changelogs/unreleased/make-workflow-rules-to-work.yml
@@ -0,0 +1,5 @@
+---
+title: Make `workflow:rules` to work well with Merge Requests
+merge_request: 21742
+author:
+type: changed
diff --git a/changelogs/unreleased/managed-cluster-applications-ci-template-ensure-namespace.yml b/changelogs/unreleased/managed-cluster-applications-ci-template-ensure-namespace.yml
new file mode 100644
index 00000000000..edc79f76b87
--- /dev/null
+++ b/changelogs/unreleased/managed-cluster-applications-ci-template-ensure-namespace.yml
@@ -0,0 +1,5 @@
+---
+title: Ensure namespace is present for Managed-Cluster-Applications CI template
+merge_request: 21903
+author:
+type: fixed
diff --git a/changelogs/unreleased/misaligned_approval_tr.yml b/changelogs/unreleased/misaligned_approval_tr.yml
new file mode 100644
index 00000000000..8f6b6df33ee
--- /dev/null
+++ b/changelogs/unreleased/misaligned_approval_tr.yml
@@ -0,0 +1,5 @@
+---
+title: Fix misaligned approval tr
+merge_request: 21368
+author: Lee Tickett
+type: fixed
diff --git a/changelogs/unreleased/new-33257-prevent-accidental-deletions-via-soft-delete-for-groups-db-chan.yml b/changelogs/unreleased/new-33257-prevent-accidental-deletions-via-soft-delete-for-groups-db-chan.yml
new file mode 100644
index 00000000000..6b300dd53f1
--- /dev/null
+++ b/changelogs/unreleased/new-33257-prevent-accidental-deletions-via-soft-delete-for-groups-db-chan.yml
@@ -0,0 +1,5 @@
+---
+title: Add migrations for 'soft-delete for groups' feature
+merge_request: 20276
+author:
+type: added
diff --git a/changelogs/unreleased/nfriend-add-merge-train-warning-dialog.yml b/changelogs/unreleased/nfriend-add-merge-train-warning-dialog.yml
new file mode 100644
index 00000000000..31ee9a9fc32
--- /dev/null
+++ b/changelogs/unreleased/nfriend-add-merge-train-warning-dialog.yml
@@ -0,0 +1,5 @@
+---
+title: Add warning dialog when users click the "Merge immediately" merge train option
+merge_request: 20054
+author:
+type: added
diff --git a/changelogs/unreleased/nfriend-add-release-issue-summary.yml b/changelogs/unreleased/nfriend-add-release-issue-summary.yml
new file mode 100644
index 00000000000..0eaad63c107
--- /dev/null
+++ b/changelogs/unreleased/nfriend-add-release-issue-summary.yml
@@ -0,0 +1,5 @@
+---
+title: Add issue statistics to releases on the Releases page
+merge_request: 19448
+author:
+type: added
diff --git a/changelogs/unreleased/nfriend-atmtwps-merge-immediately-dialog.yml b/changelogs/unreleased/nfriend-atmtwps-merge-immediately-dialog.yml
new file mode 100644
index 00000000000..eb3323f8630
--- /dev/null
+++ b/changelogs/unreleased/nfriend-atmtwps-merge-immediately-dialog.yml
@@ -0,0 +1,5 @@
+---
+title: Show merge immediately dialog even if the MR's pipeline hasn't finished
+merge_request: 21556
+author:
+type: changed
diff --git a/changelogs/unreleased/nicolasdular-add-broadcast-target-to-api.yml b/changelogs/unreleased/nicolasdular-add-broadcast-target-to-api.yml
new file mode 100644
index 00000000000..209ac388a32
--- /dev/null
+++ b/changelogs/unreleased/nicolasdular-add-broadcast-target-to-api.yml
@@ -0,0 +1,5 @@
+---
+title: Add target_path to broadcast message API
+merge_request: 21430
+author:
+type: added
diff --git a/changelogs/unreleased/nicolasdular-add-broadcast-type.yml b/changelogs/unreleased/nicolasdular-add-broadcast-type.yml
new file mode 100644
index 00000000000..649b25c04cd
--- /dev/null
+++ b/changelogs/unreleased/nicolasdular-add-broadcast-type.yml
@@ -0,0 +1,5 @@
+---
+title: Add type to broadcast messages
+merge_request: 21038
+author:
+type: added
diff --git a/changelogs/unreleased/nicolasdular-add-target-path-to-broadcast-message.yml b/changelogs/unreleased/nicolasdular-add-target-path-to-broadcast-message.yml
new file mode 100644
index 00000000000..9645a155037
--- /dev/null
+++ b/changelogs/unreleased/nicolasdular-add-target-path-to-broadcast-message.yml
@@ -0,0 +1,5 @@
+---
+title: Add path based targeting to broadcast messages
+merge_request:
+author:
+type: added
diff --git a/changelogs/unreleased/nicolasdular-allow-broadcast-message-styling.yml b/changelogs/unreleased/nicolasdular-allow-broadcast-message-styling.yml
new file mode 100644
index 00000000000..d9e683673fc
--- /dev/null
+++ b/changelogs/unreleased/nicolasdular-allow-broadcast-message-styling.yml
@@ -0,0 +1,5 @@
+---
+title: Allow styling broadcast messages
+merge_request: 21522
+author:
+type: added
diff --git a/changelogs/unreleased/osw-delete-fork-relation-upon-visibility-change.yml b/changelogs/unreleased/osw-delete-fork-relation-upon-visibility-change.yml
new file mode 100644
index 00000000000..64a7f6c7427
--- /dev/null
+++ b/changelogs/unreleased/osw-delete-fork-relation-upon-visibility-change.yml
@@ -0,0 +1,5 @@
+---
+title: Adjust fork network relations upon project visibility change
+merge_request: 20466
+author:
+type: added
diff --git a/changelogs/unreleased/osw-refresh-forks-count-cache-correctly.yml b/changelogs/unreleased/osw-refresh-forks-count-cache-correctly.yml
new file mode 100644
index 00000000000..426efd53b22
--- /dev/null
+++ b/changelogs/unreleased/osw-refresh-forks-count-cache-correctly.yml
@@ -0,0 +1,5 @@
+---
+title: Ensure forks count cache refresh for source project
+merge_request: 21771
+author:
+type: fixed
diff --git a/changelogs/unreleased/osw-remove-transaction-while-rebasing.yml b/changelogs/unreleased/osw-remove-transaction-while-rebasing.yml
new file mode 100644
index 00000000000..9cb9e26287d
--- /dev/null
+++ b/changelogs/unreleased/osw-remove-transaction-while-rebasing.yml
@@ -0,0 +1,5 @@
+---
+title: Remove DB transaction from Rebase operation
+merge_request: 20739
+author:
+type: fixed
diff --git a/changelogs/unreleased/ph-31406-fetchWidgetDataAsync.yml b/changelogs/unreleased/ph-31406-fetchWidgetDataAsync.yml
new file mode 100644
index 00000000000..0046416978a
--- /dev/null
+++ b/changelogs/unreleased/ph-31406-fetchWidgetDataAsync.yml
@@ -0,0 +1,5 @@
+---
+title: Fetches initial merge request widget data async
+merge_request: 20719
+author:
+type: changed
diff --git a/changelogs/unreleased/ph-33358-projectVisibilityConfirmModal.yml b/changelogs/unreleased/ph-33358-projectVisibilityConfirmModal.yml
new file mode 100644
index 00000000000..2f9e2e76cff
--- /dev/null
+++ b/changelogs/unreleased/ph-33358-projectVisibilityConfirmModal.yml
@@ -0,0 +1,5 @@
+---
+title: Asks for confirmation before changing project visibility level
+merge_request: 20170
+author:
+type: added
diff --git a/changelogs/unreleased/ph-33813-moveMergeRequestDescription.yml b/changelogs/unreleased/ph-33813-moveMergeRequestDescription.yml
new file mode 100644
index 00000000000..0fa53a94946
--- /dev/null
+++ b/changelogs/unreleased/ph-33813-moveMergeRequestDescription.yml
@@ -0,0 +1,5 @@
+---
+title: Move merge request description into discussions tab
+merge_request: 18940
+author:
+type: changed
diff --git a/changelogs/unreleased/preserve-merge-train-rows-after-merge.yml b/changelogs/unreleased/preserve-merge-train-rows-after-merge.yml
new file mode 100644
index 00000000000..3441ebbbf1b
--- /dev/null
+++ b/changelogs/unreleased/preserve-merge-train-rows-after-merge.yml
@@ -0,0 +1,5 @@
+---
+title: Preserve merge train history
+merge_request: 19864
+author:
+type: changed
diff --git a/changelogs/unreleased/projects_finder_visibility_optimization.yml b/changelogs/unreleased/projects_finder_visibility_optimization.yml
new file mode 100644
index 00000000000..9d6d626d5cb
--- /dev/null
+++ b/changelogs/unreleased/projects_finder_visibility_optimization.yml
@@ -0,0 +1,5 @@
+---
+title: Optimize query when Projects API requests private visibility level
+merge_request: 20594
+author:
+type: performance
diff --git a/changelogs/unreleased/push-option-ci-variables.yml b/changelogs/unreleased/push-option-ci-variables.yml
new file mode 100644
index 00000000000..a003624a398
--- /dev/null
+++ b/changelogs/unreleased/push-option-ci-variables.yml
@@ -0,0 +1,5 @@
+---
+title: Support passing CI variables via git push options
+merge_request: 20255
+author:
+type: added
diff --git a/changelogs/unreleased/qa-add-email-delivery-tests.yml b/changelogs/unreleased/qa-add-email-delivery-tests.yml
new file mode 100644
index 00000000000..85795541cea
--- /dev/null
+++ b/changelogs/unreleased/qa-add-email-delivery-tests.yml
@@ -0,0 +1,5 @@
+---
+title: Add e2e qa test for email delivery
+merge_request: 20675
+author: Diego Louzán
+type: other
diff --git a/changelogs/unreleased/reactive-caching-self-cleanup.yml b/changelogs/unreleased/reactive-caching-self-cleanup.yml
new file mode 100644
index 00000000000..45b96d1f2d9
--- /dev/null
+++ b/changelogs/unreleased/reactive-caching-self-cleanup.yml
@@ -0,0 +1,5 @@
+---
+title: Remove reactive caching value keys once the alive key has expired
+merge_request: 20111
+author:
+type: performance
diff --git a/changelogs/unreleased/remove-action-buttons-if-no-designs.yml b/changelogs/unreleased/remove-action-buttons-if-no-designs.yml
new file mode 100644
index 00000000000..876ce5e5f00
--- /dev/null
+++ b/changelogs/unreleased/remove-action-buttons-if-no-designs.yml
@@ -0,0 +1,5 @@
+---
+title: Remove action buttons from designs tab if there are no designs
+merge_request: 21186
+author:
+type: fixed
diff --git a/changelogs/unreleased/remove-done-callbacks-from-vue-components-markdown.yml b/changelogs/unreleased/remove-done-callbacks-from-vue-components-markdown.yml
new file mode 100644
index 00000000000..22c87df8304
--- /dev/null
+++ b/changelogs/unreleased/remove-done-callbacks-from-vue-components-markdown.yml
@@ -0,0 +1,5 @@
+---
+title: Remove done callbacks from vue_shared/components/markdown
+merge_request: 16842
+author: Lee Tickett
+type: other
diff --git a/changelogs/unreleased/remove-downstream-node-lines.yml b/changelogs/unreleased/remove-downstream-node-lines.yml
new file mode 100644
index 00000000000..80cdec3e0ca
--- /dev/null
+++ b/changelogs/unreleased/remove-downstream-node-lines.yml
@@ -0,0 +1,5 @@
+---
+title: Remove downstream pipeline connecting lines
+merge_request: 21196
+author:
+type: removed
diff --git a/changelogs/unreleased/remove-redundant-toast-scss.yml b/changelogs/unreleased/remove-redundant-toast-scss.yml
new file mode 100644
index 00000000000..6b950465149
--- /dev/null
+++ b/changelogs/unreleased/remove-redundant-toast-scss.yml
@@ -0,0 +1,5 @@
+---
+title: Remove redundant toast.scss file and variables
+merge_request: 21105
+author:
+type: fixed
diff --git a/changelogs/unreleased/remove_build_badge_path_from_route.yml b/changelogs/unreleased/remove_build_badge_path_from_route.yml
new file mode 100644
index 00000000000..9624c2d432b
--- /dev/null
+++ b/changelogs/unreleased/remove_build_badge_path_from_route.yml
@@ -0,0 +1,5 @@
+---
+title: Remove build badge path from route
+merge_request: 20188
+author: Lee Tickett
+type: other
diff --git a/changelogs/unreleased/remove_extra_spacing_below_sidebar_time_tracking_info.yml b/changelogs/unreleased/remove_extra_spacing_below_sidebar_time_tracking_info.yml
new file mode 100644
index 00000000000..0abf69d9d4c
--- /dev/null
+++ b/changelogs/unreleased/remove_extra_spacing_below_sidebar_time_tracking_info.yml
@@ -0,0 +1,5 @@
+---
+title: Remove extra spacing below sidebar time tracking info
+merge_request: 20657
+author: Lee Tickett
+type: other
diff --git a/changelogs/unreleased/remove_milestone_id_from_epics.yml b/changelogs/unreleased/remove_milestone_id_from_epics.yml
new file mode 100644
index 00000000000..f124a01c9dd
--- /dev/null
+++ b/changelogs/unreleased/remove_milestone_id_from_epics.yml
@@ -0,0 +1,5 @@
+---
+title: Remove milestone_id from epics
+merge_request: 20187
+author: Lee Tickett
+type: other
diff --git a/changelogs/unreleased/rjain-epic-trees.yml b/changelogs/unreleased/rjain-epic-trees.yml
new file mode 100644
index 00000000000..9d54b074c55
--- /dev/null
+++ b/changelogs/unreleased/rjain-epic-trees.yml
@@ -0,0 +1,5 @@
+---
+title: Epic tree bug fixes
+merge_request: 20209
+author:
+type: fixed
diff --git a/changelogs/unreleased/rk-37435-fix-editor-layout.yml b/changelogs/unreleased/rk-37435-fix-editor-layout.yml
new file mode 100644
index 00000000000..28e78e6f744
--- /dev/null
+++ b/changelogs/unreleased/rk-37435-fix-editor-layout.yml
@@ -0,0 +1,5 @@
+---
+title: Fix Single-File-Editor-Layout breaking when branch name is too long
+merge_request: 21577
+author: Roman Kuba
+type: fixed
diff --git a/changelogs/unreleased/rs-default-mr-target.yml b/changelogs/unreleased/rs-default-mr-target.yml
new file mode 100644
index 00000000000..5d9ab3d3bf9
--- /dev/null
+++ b/changelogs/unreleased/rs-default-mr-target.yml
@@ -0,0 +1,5 @@
+---
+title: 'When a forked project is less visible than its source, merge requests opened in the fork now target the less visible project by default.'
+merge_request: 21517
+author:
+type: changed
diff --git a/changelogs/unreleased/sa-pat-expiration-notification.yml b/changelogs/unreleased/sa-pat-expiration-notification.yml
new file mode 100644
index 00000000000..9f4f1cc51ff
--- /dev/null
+++ b/changelogs/unreleased/sa-pat-expiration-notification.yml
@@ -0,0 +1,5 @@
+---
+title: Add Personal Access Token expiration reminder
+merge_request: 19296
+author:
+type: added
diff --git a/changelogs/unreleased/salesforcedx_project_template.yml b/changelogs/unreleased/salesforcedx_project_template.yml
new file mode 100644
index 00000000000..3cdf55ed85b
--- /dev/null
+++ b/changelogs/unreleased/salesforcedx_project_template.yml
@@ -0,0 +1,5 @@
+---
+title: Add SalesforceDX project template
+merge_request: 20831
+author:
+type: added
diff --git a/changelogs/unreleased/search-list-of-sentry-errors.yml b/changelogs/unreleased/search-list-of-sentry-errors.yml
new file mode 100644
index 00000000000..f48de359b1b
--- /dev/null
+++ b/changelogs/unreleased/search-list-of-sentry-errors.yml
@@ -0,0 +1,5 @@
+---
+title: Search list of Sentry errors by title in GitLab
+merge_request: 19439
+author:
+type: added
diff --git a/changelogs/unreleased/security-29660-update-dependencies.yml b/changelogs/unreleased/security-29660-update-dependencies.yml
new file mode 100644
index 00000000000..283d951e69e
--- /dev/null
+++ b/changelogs/unreleased/security-29660-update-dependencies.yml
@@ -0,0 +1,5 @@
+---
+title: Update Workhorse and Gitaly to fix a security issue
+merge_request:
+author:
+type: security
diff --git a/changelogs/unreleased/security-394-path-traversal-package-bug.yml b/changelogs/unreleased/security-394-path-traversal-package-bug.yml
new file mode 100644
index 00000000000..887f1cded25
--- /dev/null
+++ b/changelogs/unreleased/security-394-path-traversal-package-bug.yml
@@ -0,0 +1,5 @@
+---
+title: Add maven file_name regex validation on incoming files
+merge_request:
+author:
+type: security
diff --git a/changelogs/unreleased/security-400-path-traversal-rce2.yml b/changelogs/unreleased/security-400-path-traversal-rce2.yml
new file mode 100644
index 00000000000..3a77a4b932e
--- /dev/null
+++ b/changelogs/unreleased/security-400-path-traversal-rce2.yml
@@ -0,0 +1,5 @@
+---
+title: Update maven_file_name_regex for full string match
+merge_request:
+author:
+type: security
diff --git a/changelogs/unreleased/sentry-url-helper-text.yml b/changelogs/unreleased/sentry-url-helper-text.yml
new file mode 100644
index 00000000000..9a71f219d6d
--- /dev/null
+++ b/changelogs/unreleased/sentry-url-helper-text.yml
@@ -0,0 +1,5 @@
+---
+title: Update helper text for sentry error tracking settings
+merge_request: 20663
+author: Rajendra Kadam
+type: added
diff --git a/changelogs/unreleased/service-desk-name.yml b/changelogs/unreleased/service-desk-name.yml
new file mode 100644
index 00000000000..f3d32e6c6cd
--- /dev/null
+++ b/changelogs/unreleased/service-desk-name.yml
@@ -0,0 +1,5 @@
+---
+title: Added migration which adds service desk username column
+merge_request: 21733
+author:
+type: added
diff --git a/changelogs/unreleased/sh-add-index-for-deployments.yml b/changelogs/unreleased/sh-add-index-for-deployments.yml
new file mode 100644
index 00000000000..cf8ae31dac4
--- /dev/null
+++ b/changelogs/unreleased/sh-add-index-for-deployments.yml
@@ -0,0 +1,5 @@
+---
+title: Add indexes on deployments to improve environments search
+merge_request: 21789
+author:
+type: performance
diff --git a/changelogs/unreleased/sh-avoid-project-count-new-user.yml b/changelogs/unreleased/sh-avoid-project-count-new-user.yml
new file mode 100644
index 00000000000..916a3579fb6
--- /dev/null
+++ b/changelogs/unreleased/sh-avoid-project-count-new-user.yml
@@ -0,0 +1,5 @@
+---
+title: Disable public project counts on welcome page
+merge_request: 20517
+author:
+type: performance
diff --git a/changelogs/unreleased/sh-disable-google-backup-acl.yml b/changelogs/unreleased/sh-disable-google-backup-acl.yml
new file mode 100644
index 00000000000..0fa300879e4
--- /dev/null
+++ b/changelogs/unreleased/sh-disable-google-backup-acl.yml
@@ -0,0 +1,5 @@
+---
+title: 'Backup: Disable setting of ACL for Google uploads'
+merge_request: 20407
+author:
+type: fixed
diff --git a/changelogs/unreleased/sh-fix-pipeline-retry-dag.yml b/changelogs/unreleased/sh-fix-pipeline-retry-dag.yml
new file mode 100644
index 00000000000..548d1bfec30
--- /dev/null
+++ b/changelogs/unreleased/sh-fix-pipeline-retry-dag.yml
@@ -0,0 +1,5 @@
+---
+title: Fix pipeline retry in a CI DAG
+merge_request: 21296
+author:
+type: fixed
diff --git a/changelogs/unreleased/sh-issue-28493.yml b/changelogs/unreleased/sh-issue-28493.yml
new file mode 100644
index 00000000000..5ccbaa3b31a
--- /dev/null
+++ b/changelogs/unreleased/sh-issue-28493.yml
@@ -0,0 +1,5 @@
+---
+title: Do not attribute unverified commit e-mails to GitLab users
+merge_request: 21214
+author:
+type: fixed
diff --git a/changelogs/unreleased/sh-reduce-gitaly-calls-in-ci-build.yml b/changelogs/unreleased/sh-reduce-gitaly-calls-in-ci-build.yml
new file mode 100644
index 00000000000..a9a940da48f
--- /dev/null
+++ b/changelogs/unreleased/sh-reduce-gitaly-calls-in-ci-build.yml
@@ -0,0 +1,5 @@
+---
+title: Reduce Gitaly calls in BuildHooksWorker
+merge_request: 20365
+author:
+type: performance
diff --git a/changelogs/unreleased/sh-remove-feature-flag-diverging-commits.yml b/changelogs/unreleased/sh-remove-feature-flag-diverging-commits.yml
new file mode 100644
index 00000000000..693a5e42246
--- /dev/null
+++ b/changelogs/unreleased/sh-remove-feature-flag-diverging-commits.yml
@@ -0,0 +1,5 @@
+---
+title: Remove feature flag for limiting diverging commit counts
+merge_request: 20999
+author:
+type: other
diff --git a/changelogs/unreleased/sh-skip-lfs-updates-mirroring.yml b/changelogs/unreleased/sh-skip-lfs-updates-mirroring.yml
new file mode 100644
index 00000000000..112a91a60b3
--- /dev/null
+++ b/changelogs/unreleased/sh-skip-lfs-updates-mirroring.yml
@@ -0,0 +1,5 @@
+---
+title: Skip updating LFS objects in mirror updates if repository has not changed
+merge_request: 21744
+author:
+type: performance
diff --git a/changelogs/unreleased/sh-upgrade-gitlab-chronic.yml b/changelogs/unreleased/sh-upgrade-gitlab-chronic.yml
new file mode 100644
index 00000000000..c66b73fefa0
--- /dev/null
+++ b/changelogs/unreleased/sh-upgrade-gitlab-chronic.yml
@@ -0,0 +1,5 @@
+---
+title: Fix cron parsing for Daylight Savings
+merge_request: 20667
+author:
+type: fixed
diff --git a/changelogs/unreleased/sh-upgrade-rugged.yml b/changelogs/unreleased/sh-upgrade-rugged.yml
new file mode 100644
index 00000000000..b43cde6bc36
--- /dev/null
+++ b/changelogs/unreleased/sh-upgrade-rugged.yml
@@ -0,0 +1,5 @@
+---
+title: Update Rugged to v0.28.4.1
+merge_request: 21869
+author:
+type: security
diff --git a/changelogs/unreleased/sh-validate-direct-upload-config.yml b/changelogs/unreleased/sh-validate-direct-upload-config.yml
new file mode 100644
index 00000000000..15216f8d13a
--- /dev/null
+++ b/changelogs/unreleased/sh-validate-direct-upload-config.yml
@@ -0,0 +1,5 @@
+---
+title: Validate connection section in direct upload config
+merge_request: 21270
+author:
+type: fixed
diff --git a/changelogs/unreleased/strong-validate-import-export-references.yml b/changelogs/unreleased/strong-validate-import-export-references.yml
new file mode 100644
index 00000000000..3ea69a6c59d
--- /dev/null
+++ b/changelogs/unreleased/strong-validate-import-export-references.yml
@@ -0,0 +1,5 @@
+---
+title: Strong validate import export references
+merge_request: 19682
+author:
+type: added
diff --git a/changelogs/unreleased/sy-add-embeds-limit.yml b/changelogs/unreleased/sy-add-embeds-limit.yml
new file mode 100644
index 00000000000..3e89b64ef9d
--- /dev/null
+++ b/changelogs/unreleased/sy-add-embeds-limit.yml
@@ -0,0 +1,5 @@
+---
+title: Limit max metrics embeds in GFM to 100
+merge_request: 21356
+author:
+type: performance
diff --git a/changelogs/unreleased/sy-grafana-fix-uid.yml b/changelogs/unreleased/sy-grafana-fix-uid.yml
new file mode 100644
index 00000000000..778706d540b
--- /dev/null
+++ b/changelogs/unreleased/sy-grafana-fix-uid.yml
@@ -0,0 +1,5 @@
+---
+title: Accept user-defined dashboard uids in Grafana embeds
+merge_request: 20486
+author:
+type: fixed
diff --git a/changelogs/unreleased/toggle-job-log-json-flag-on.yml b/changelogs/unreleased/toggle-job-log-json-flag-on.yml
new file mode 100644
index 00000000000..2881bf7671e
--- /dev/null
+++ b/changelogs/unreleased/toggle-job-log-json-flag-on.yml
@@ -0,0 +1,5 @@
+---
+title: Enable new job log by default
+merge_request: 21543
+author:
+type: added
diff --git a/changelogs/unreleased/tr-link-error-to-issue-frontend.yml b/changelogs/unreleased/tr-link-error-to-issue-frontend.yml
new file mode 100644
index 00000000000..8e57e5c3fa5
--- /dev/null
+++ b/changelogs/unreleased/tr-link-error-to-issue-frontend.yml
@@ -0,0 +1,5 @@
+---
+title: Surface GitLab issue in error detail page
+merge_request: 21019
+author:
+type: added
diff --git a/changelogs/unreleased/tz-fe-timings-performancebar.yml b/changelogs/unreleased/tz-fe-timings-performancebar.yml
new file mode 100644
index 00000000000..6b6f2cc7ea0
--- /dev/null
+++ b/changelogs/unreleased/tz-fe-timings-performancebar.yml
@@ -0,0 +1,5 @@
+---
+title: Added Total/Frontend metrics to the performance bar
+merge_request: 20725
+author:
+type: added
diff --git a/changelogs/unreleased/update-gitlab-runner-helm-chart-to-0-11-0.yml b/changelogs/unreleased/update-gitlab-runner-helm-chart-to-0-11-0.yml
new file mode 100644
index 00000000000..a6a22b8f55f
--- /dev/null
+++ b/changelogs/unreleased/update-gitlab-runner-helm-chart-to-0-11-0.yml
@@ -0,0 +1,5 @@
+---
+title: Update GitLab Runner Helm Chart to 0.11.0
+merge_request: 20461
+author:
+type: other
diff --git a/changelogs/unreleased/update-managed-namespace-prefix-copy.yml b/changelogs/unreleased/update-managed-namespace-prefix-copy.yml
new file mode 100644
index 00000000000..e19e8078f64
--- /dev/null
+++ b/changelogs/unreleased/update-managed-namespace-prefix-copy.yml
@@ -0,0 +1,5 @@
+---
+title: Update copy on managed namespace prefixes
+merge_request: 20935
+author:
+type: fixed
diff --git a/changelogs/unreleased/update-size-after-commit.yml b/changelogs/unreleased/update-size-after-commit.yml
new file mode 100644
index 00000000000..4e5f5cd6782
--- /dev/null
+++ b/changelogs/unreleased/update-size-after-commit.yml
@@ -0,0 +1,5 @@
+---
+title: UpdateProjectStatistics updates after commit
+merge_request: 20852
+author:
+type: performance
diff --git a/changelogs/unreleased/update_auto_deploy_image.yml b/changelogs/unreleased/update_auto_deploy_image.yml
new file mode 100644
index 00000000000..382369e47bb
--- /dev/null
+++ b/changelogs/unreleased/update_auto_deploy_image.yml
@@ -0,0 +1,5 @@
+---
+title: Update auto-deploy-image to v0.8.3
+merge_request: 21696
+author:
+type: fixed
diff --git a/changelogs/unreleased/userwithid-per-env-backend.yml b/changelogs/unreleased/userwithid-per-env-backend.yml
new file mode 100644
index 00000000000..48f00842b74
--- /dev/null
+++ b/changelogs/unreleased/userwithid-per-env-backend.yml
@@ -0,0 +1,5 @@
+---
+title: Add feature to allow specifying userWithId strategies per environment spec
+merge_request: 20325
+author:
+type: added
diff --git a/changelogs/unreleased/wc-perf-bar-download.yml b/changelogs/unreleased/wc-perf-bar-download.yml
new file mode 100644
index 00000000000..056e0ec63f6
--- /dev/null
+++ b/changelogs/unreleased/wc-perf-bar-download.yml
@@ -0,0 +1,5 @@
+---
+title: Add 'download' button to Performance Bar
+merge_request: 20205
+author: Will Chandler
+type: changed
diff --git a/changelogs/unreleased/winh-var-image_file.yml b/changelogs/unreleased/winh-var-image_file.yml
new file mode 100644
index 00000000000..7ca37d304fe
--- /dev/null
+++ b/changelogs/unreleased/winh-var-image_file.yml
@@ -0,0 +1,5 @@
+---
+title: Remove var from app/assets/javascripts/commit/image_file.js
+merge_request: 21649
+author: Abubakar Hassan
+type: other
diff --git a/changelogs/unreleased/wolf-feat-milestone-hide-mr.yml b/changelogs/unreleased/wolf-feat-milestone-hide-mr.yml
new file mode 100644
index 00000000000..cae6f6a8894
--- /dev/null
+++ b/changelogs/unreleased/wolf-feat-milestone-hide-mr.yml
@@ -0,0 +1,5 @@
+---
+title: Hide Merge Request information on milestones when MRs are disabled for project
+merge_request: 20985
+author: Wolfgang Faust
+type: changed
diff --git a/changelogs/unreleased/workhorse-8-18.yml b/changelogs/unreleased/workhorse-8-18.yml
new file mode 100644
index 00000000000..97deafcf02c
--- /dev/null
+++ b/changelogs/unreleased/workhorse-8-18.yml
@@ -0,0 +1,5 @@
+---
+title: Update Workhorse to v8.18.0
+merge_request: 22091
+author:
+type: other
diff --git a/changelogs/unreleased/xanf-add-group-link.yml b/changelogs/unreleased/xanf-add-group-link.yml
new file mode 100644
index 00000000000..5cb57c5d544
--- /dev/null
+++ b/changelogs/unreleased/xanf-add-group-link.yml
@@ -0,0 +1,5 @@
+---
+title: link to group on group admin page
+merge_request: 21709
+author:
+type: added
diff --git a/changelogs/unreleased/xanf-blocked-profile-page.yml b/changelogs/unreleased/xanf-blocked-profile-page.yml
new file mode 100644
index 00000000000..0b2e54469ec
--- /dev/null
+++ b/changelogs/unreleased/xanf-blocked-profile-page.yml
@@ -0,0 +1,5 @@
+---
+title: Hide profile information when user is blocked
+merge_request: 21706
+author:
+type: added
diff --git a/changelogs/unreleased/xanf-fix-unresolved-discussion-jump.yml b/changelogs/unreleased/xanf-fix-unresolved-discussion-jump.yml
new file mode 100644
index 00000000000..4dedf4e8d1d
--- /dev/null
+++ b/changelogs/unreleased/xanf-fix-unresolved-discussion-jump.yml
@@ -0,0 +1,5 @@
+---
+title: Ensure next unresolved discussion button takes user to the right place
+merge_request: 20620
+author:
+type: fixed
diff --git a/changelogs/unreleased/xanf-improve-members-filtering.yml b/changelogs/unreleased/xanf-improve-members-filtering.yml
new file mode 100644
index 00000000000..b6510ddbd59
--- /dev/null
+++ b/changelogs/unreleased/xanf-improve-members-filtering.yml
@@ -0,0 +1,5 @@
+---
+title: Added filtering of inherited members for subgroups
+merge_request: 18842
+author:
+type: added
diff --git a/changelogs/unreleased/xanf-make-audit-table-responsive.yml b/changelogs/unreleased/xanf-make-audit-table-responsive.yml
new file mode 100644
index 00000000000..b2de3ddf699
--- /dev/null
+++ b/changelogs/unreleased/xanf-make-audit-table-responsive.yml
@@ -0,0 +1,5 @@
+---
+title: Added responsiveness to audit events table
+merge_request: 18859
+author:
+type: added
diff --git a/changelogs/unreleased/yaml-processor-validation-errors.yml b/changelogs/unreleased/yaml-processor-validation-errors.yml
new file mode 100644
index 00000000000..aaca26d6b3d
--- /dev/null
+++ b/changelogs/unreleased/yaml-processor-validation-errors.yml
@@ -0,0 +1,5 @@
+---
+title: Return multiple errors from CI linter
+merge_request: 21589
+author:
+type: added
diff --git a/config/gitlab.yml.example b/config/gitlab.yml.example
index a5486e450d4..5ac9b7ee6e5 100644
--- a/config/gitlab.yml.example
+++ b/config/gitlab.yml.example
@@ -181,6 +181,11 @@ production: &base
mailbox: "inbox"
# The IDLE command timeout.
idle_timeout: 60
+ # The log file path for the structured log file.
+ # Since `mail_room` is run independently of Rails, an absolute path is preferred.
+ # The default is 'log/mail_room_json.log' relative to the root of the Rails app.
+ #
+ # log_path: log/mail_room_json.log
## Build Artifacts
artifacts:
@@ -321,8 +326,8 @@ production: &base
# external_https: ["1.1.1.1:443", "[2001::1]:443"] # If defined, enables custom domain and certificate support in GitLab Pages
# File that contains the shared secret key for verifying access for gitlab-pages.
- # Default is '.gitlab_pages_shared_secret' relative to Rails.root (i.e. root of the GitLab app).
- # secret_file: /home/git/gitlab/.gitlab_pages_shared_secret
+ # Default is '.gitlab_pages_secret' relative to Rails.root (i.e. root of the GitLab app).
+ # secret_file: /home/git/gitlab/.gitlab_pages_secret
## Mattermost
## For enabling Add to Mattermost button
@@ -366,6 +371,9 @@ production: &base
# Send admin emails once a week
admin_email_worker:
cron: "0 0 * * 0"
+ # Send emails for personal tokens which are about to expire
+ personal_access_tokens_expiring_worker:
+ cron: "0 1 * * *"
# Remove outdated repository archives
repository_archive_cache_worker:
diff --git a/config/helpers/vendor_dll_hash.js b/config/helpers/vendor_dll_hash.js
new file mode 100644
index 00000000000..cfd7be66ad3
--- /dev/null
+++ b/config/helpers/vendor_dll_hash.js
@@ -0,0 +1,23 @@
+const fs = require('fs');
+const path = require('path');
+const crypto = require('crypto');
+
+const CACHE_PATHS = [
+ './config/webpack.config.js',
+ './config/webpack.vendor.config.js',
+ './package.json',
+ './yarn.lock',
+];
+
+const resolvePath = file => path.resolve(__dirname, '../..', file);
+const readFile = file => fs.readFileSync(file);
+const fileHash = buffer =>
+ crypto
+ .createHash('md5')
+ .update(buffer)
+ .digest('hex');
+
+module.exports = () => {
+ const fileBuffers = CACHE_PATHS.map(resolvePath).map(readFile);
+ return fileHash(Buffer.concat(fileBuffers)).substr(0, 12);
+};
diff --git a/config/initializers/0_marginalia.rb b/config/initializers/0_marginalia.rb
new file mode 100644
index 00000000000..f88a90854e3
--- /dev/null
+++ b/config/initializers/0_marginalia.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+require 'marginalia'
+
+::Marginalia::Comment.extend(::Gitlab::Marginalia::Comment)
+
+# Patch to modify 'Marginalia::ActiveRecordInstrumentation.annotate_sql' method with feature check.
+# Orignal Marginalia::ActiveRecordInstrumentation is included to ActiveRecord::ConnectionAdapters::PostgreSQLAdapter in the Marginalia Railtie.
+# Refer: https://github.com/basecamp/marginalia/blob/v1.8.0/lib/marginalia/railtie.rb#L67
+ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.prepend(Gitlab::Marginalia::ActiveRecordInstrumentation)
+
+Marginalia::Comment.components = [:application, :controller, :action, :correlation_id, :jid, :job_class, :line]
+
+Gitlab::Marginalia.set_application_name
+
+Gitlab::Marginalia.enable_sidekiq_instrumentation
+
+Gitlab::Marginalia.set_feature_cache
diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb
index df4f49524bc..691e4339bf0 100644
--- a/config/initializers/1_settings.rb
+++ b/config/initializers/1_settings.rb
@@ -291,7 +291,7 @@ Settings.pages['url'] ||= Settings.__send__(:build_pages_url)
Settings.pages['external_http'] ||= false unless Settings.pages['external_http'].present?
Settings.pages['external_https'] ||= false unless Settings.pages['external_https'].present?
Settings.pages['artifacts_server'] ||= Settings.pages['enabled'] if Settings.pages['artifacts_server'].nil?
-Settings.pages['secret_file'] ||= Rails.root.join('.gitlab_pages_shared_secret')
+Settings.pages['secret_file'] ||= Rails.root.join('.gitlab_pages_secret')
#
# Geo
@@ -407,6 +407,9 @@ Settings.cron_jobs['repository_check_worker']['job_class'] = 'RepositoryCheck::D
Settings.cron_jobs['admin_email_worker'] ||= Settingslogic.new({})
Settings.cron_jobs['admin_email_worker']['cron'] ||= '0 0 * * 0'
Settings.cron_jobs['admin_email_worker']['job_class'] = 'AdminEmailWorker'
+Settings.cron_jobs['personal_access_tokens_expiring_worker'] ||= Settingslogic.new({})
+Settings.cron_jobs['personal_access_tokens_expiring_worker']['cron'] ||= '0 1 * * *'
+Settings.cron_jobs['personal_access_tokens_expiring_worker']['job_class'] = 'PersonalAccessTokens::ExpiringWorker'
Settings.cron_jobs['repository_archive_cache_worker'] ||= Settingslogic.new({})
Settings.cron_jobs['repository_archive_cache_worker']['cron'] ||= '0 * * * *'
Settings.cron_jobs['repository_archive_cache_worker']['job_class'] = 'RepositoryArchiveCacheWorker'
@@ -466,9 +469,15 @@ Settings.cron_jobs['namespaces_prune_aggregation_schedules_worker']['cron'] ||=
Settings.cron_jobs['namespaces_prune_aggregation_schedules_worker']['job_class'] = 'Namespaces::PruneAggregationSchedulesWorker'
Gitlab.ee do
+ Settings.cron_jobs['adjourned_group_deletion_worker'] ||= Settingslogic.new({})
+ Settings.cron_jobs['adjourned_group_deletion_worker']['cron'] ||= '0 3 * * *'
+ Settings.cron_jobs['adjourned_group_deletion_worker']['job_class'] = 'AdjournedGroupDeletionWorker'
Settings.cron_jobs['clear_shared_runners_minutes_worker'] ||= Settingslogic.new({})
Settings.cron_jobs['clear_shared_runners_minutes_worker']['cron'] ||= '0 0 1 * *'
Settings.cron_jobs['clear_shared_runners_minutes_worker']['job_class'] = 'ClearSharedRunnersMinutesWorker'
+ Settings.cron_jobs['adjourned_projects_deletion_cron_worker'] ||= Settingslogic.new({})
+ Settings.cron_jobs['adjourned_projects_deletion_cron_worker']['cron'] ||= '0 4 * * *'
+ Settings.cron_jobs['adjourned_projects_deletion_cron_worker']['job_class'] = 'AdjournedProjectsDeletionCronWorker'
Settings.cron_jobs['geo_file_download_dispatch_worker'] ||= Settingslogic.new({})
Settings.cron_jobs['geo_file_download_dispatch_worker']['cron'] ||= '*/1 * * * *'
Settings.cron_jobs['geo_file_download_dispatch_worker']['job_class'] ||= 'Geo::FileDownloadDispatchWorker'
@@ -645,6 +654,7 @@ Settings.rack_attack.git_basic_auth['ip_whitelist'] ||= %w{127.0.0.1}
Settings.rack_attack.git_basic_auth['maxretry'] ||= 10
Settings.rack_attack.git_basic_auth['findtime'] ||= 1.minute
Settings.rack_attack.git_basic_auth['bantime'] ||= 1.hour
+Settings.rack_attack['admin_area_protected_paths_enabled'] ||= false
#
# Gitaly
diff --git a/config/initializers/7_prometheus_metrics.rb b/config/initializers/7_prometheus_metrics.rb
index d40049970c1..c14ee1458bc 100644
--- a/config/initializers/7_prometheus_metrics.rb
+++ b/config/initializers/7_prometheus_metrics.rb
@@ -32,15 +32,8 @@ end
Sidekiq.configure_server do |config|
config.on(:startup) do
- # webserver metrics are cleaned up in config.ru: `warmup` block
- Prometheus::CleanupMultiprocDirService.new.execute
- # In production, sidekiq is run in a multi-process setup where processes might interfere
- # with each other cleaning up and reinitializing prometheus database files, which is why
- # we're re-doing the work every time here.
- # A cleaner solution would be to run the cleanup pre-fork, and the initialization once
- # after all workers have forked, but I don't know how at this point.
- ::Prometheus::Client.reinitialize_on_pid_change(force: true)
-
+ # Do not clean the metrics directory here - the supervisor script should
+ # have already taken care of that
Gitlab::Metrics::Exporter::SidekiqExporter.instance.start
end
end
diff --git a/config/initializers/devise_dynamic_password_length_validation.rb b/config/initializers/devise_dynamic_password_length_validation.rb
new file mode 100644
index 00000000000..03d613da929
--- /dev/null
+++ b/config/initializers/devise_dynamic_password_length_validation.rb
@@ -0,0 +1,39 @@
+# frozen_string_literal: true
+
+# Discard the default Devise length validation from the `User` model.
+
+# This needs to be discarded because the length validation provided by Devise does not
+# support dynamically checking for min and max lengths.
+
+# A new length validation has been added to the User model instead, to keep supporting
+# dynamic password length validations, like:
+
+# validates :password, length: { maximum: proc { password_length.max }, minimum: proc { password_length.min } }, allow_blank: true
+
+def length_validator_supports_dynamic_length_checks?(validator)
+ validator.options[:minimum].is_a?(Proc) &&
+ validator.options[:maximum].is_a?(Proc)
+end
+
+# Get the in-built Devise validator on password length.
+password_length_validator = User.validators_on(:password).find do |validator|
+ validator.kind == :length
+end
+
+# This initializer can be removed as soon as https://github.com/plataformatec/devise/pull/5166
+# is merged into Devise.
+
+# TODO: Update Devise. Issue: https://gitlab.com/gitlab-org/gitlab/issues/118450
+if length_validator_supports_dynamic_length_checks?(password_length_validator)
+ raise "Devise now supports dynamic length checks, please remove the monkey patch in #{__FILE__}"
+else
+ # discard the in-built length validator by always returning true
+ def password_length_validator.validate(*_)
+ true
+ end
+
+ # add a custom password length validator with support for dynamic length validation.
+ User.class_eval do
+ validates :password, length: { maximum: proc { password_length.max }, minimum: proc { password_length.min } }, allow_blank: true
+ end
+end
diff --git a/config/initializers/direct_upload_support.rb b/config/initializers/direct_upload_support.rb
index 32fc8c8bc69..0fc6e82207e 100644
--- a/config/initializers/direct_upload_support.rb
+++ b/config/initializers/direct_upload_support.rb
@@ -3,17 +3,35 @@ class DirectUploadsValidator
ValidationError = Class.new(StandardError)
- def verify!(object_store)
+ def verify!(uploader_type, object_store)
return unless object_store.enabled
return unless object_store.direct_upload
- return if SUPPORTED_DIRECT_UPLOAD_PROVIDERS.include?(object_store.connection&.provider.to_s)
- raise ValidationError, "Only #{SUPPORTED_DIRECT_UPLOAD_PROVIDERS.join(',')} are supported as a object storage provider when 'direct_upload' is used"
+ raise ValidationError, "Object storage is configured for '#{uploader_type}', but the 'connection' section is missing" unless object_store.key?('connection')
+
+ provider = object_store.connection&.provider.to_s
+
+ raise ValidationError, "No provider configured for '#{uploader_type}'. #{supported_provider_text}" if provider.blank?
+
+ return if SUPPORTED_DIRECT_UPLOAD_PROVIDERS.include?(provider)
+
+ raise ValidationError, "Object storage provider '#{provider}' is not supported " \
+ "when 'direct_upload' is used for '#{uploader_type}'. #{supported_provider_text}"
+ end
+
+ def supported_provider_text
+ "Only #{SUPPORTED_DIRECT_UPLOAD_PROVIDERS.join(', ')} are supported."
end
end
DirectUploadsValidator.new.tap do |validator|
- [Gitlab.config.artifacts, Gitlab.config.uploads, Gitlab.config.lfs].each do |uploader|
- validator.verify!(uploader.object_store)
+ CONFIGS = {
+ artifacts: Gitlab.config.artifacts,
+ uploads: Gitlab.config.uploads,
+ lfs: Gitlab.config.lfs
+ }.freeze
+
+ CONFIGS.each do |uploader_type, uploader|
+ validator.verify!(uploader_type, uploader.object_store)
end
end
diff --git a/config/initializers/elastic_client_setup.rb b/config/initializers/elastic_client_setup.rb
index a1abb29838b..f38b606b3a8 100644
--- a/config/initializers/elastic_client_setup.rb
+++ b/config/initializers/elastic_client_setup.rb
@@ -7,6 +7,17 @@ require 'gitlab/current_settings'
Gitlab.ee do
require 'elasticsearch/model'
+ ### Monkey patches
+
+ Elasticsearch::Model::Response::Records.prepend GemExtensions::Elasticsearch::Model::Response::Records
+ Elasticsearch::Model::Adapter::Multiple::Records.prepend GemExtensions::Elasticsearch::Model::Adapter::Multiple::Records
+ Elasticsearch::Model::Indexing::InstanceMethods.prepend GemExtensions::Elasticsearch::Model::Indexing::InstanceMethods
+ Elasticsearch::Model::Adapter::ActiveRecord::Importing.prepend GemExtensions::Elasticsearch::Model::Adapter::ActiveRecord::Importing
+ Elasticsearch::Model::Client::InstanceMethods.prepend GemExtensions::Elasticsearch::Model::Client
+ Elasticsearch::Model::Client::ClassMethods.prepend GemExtensions::Elasticsearch::Model::Client
+ Elasticsearch::Model::ClassMethods.prepend GemExtensions::Elasticsearch::Model::Client
+ Elasticsearch::Model.singleton_class.prepend GemExtensions::Elasticsearch::Model::Client
+
### Modified from elasticsearch-model/lib/elasticsearch/model.rb
[
@@ -32,15 +43,4 @@ Gitlab.ee do
target.respond_to?(:as_indexed_json) ? target.__send__(:as_indexed_json, options) : super
end
CODE
-
- ### Monkey patches
-
- Elasticsearch::Model::Response::Records.prepend GemExtensions::Elasticsearch::Model::Response::Records
- Elasticsearch::Model::Adapter::Multiple::Records.prepend GemExtensions::Elasticsearch::Model::Adapter::Multiple::Records
- Elasticsearch::Model::Indexing::InstanceMethods.prepend GemExtensions::Elasticsearch::Model::Indexing::InstanceMethods
- Elasticsearch::Model::Adapter::ActiveRecord::Importing.prepend GemExtensions::Elasticsearch::Model::Adapter::ActiveRecord::Importing
- Elasticsearch::Model::Client::InstanceMethods.prepend GemExtensions::Elasticsearch::Model::Client
- Elasticsearch::Model::Client::ClassMethods.prepend GemExtensions::Elasticsearch::Model::Client
- Elasticsearch::Model::ClassMethods.prepend GemExtensions::Elasticsearch::Model::Client
- Elasticsearch::Model.singleton_class.prepend GemExtensions::Elasticsearch::Model::Client
end
diff --git a/config/initializers/forbid_sidekiq_in_transactions.rb b/config/initializers/forbid_sidekiq_in_transactions.rb
index bb190af60b5..9bade443aae 100644
--- a/config/initializers/forbid_sidekiq_in_transactions.rb
+++ b/config/initializers/forbid_sidekiq_in_transactions.rb
@@ -29,7 +29,7 @@ module Sidekiq
MSG
rescue Sidekiq::Worker::EnqueueFromTransactionError => e
::Rails.logger.error(e.message) if ::Rails.env.production?
- Gitlab::Sentry.track_exception(e)
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(e)
end
end
diff --git a/config/initializers/hamlit.rb b/config/initializers/hamlit.rb
index 51dbffeda05..b5bcae4bbfc 100644
--- a/config/initializers/hamlit.rb
+++ b/config/initializers/hamlit.rb
@@ -1,18 +1,4 @@
-module Hamlit
- class TemplateHandler
- def call(template)
- Engine.new(
- generator: Temple::Generators::RailsOutputBuffer,
- attr_quote: '"'
- ).call(template.source)
- end
- end
-end
-
-ActionView::Template.register_template_handler(
- :haml,
- Hamlit::TemplateHandler.new
-)
+Hamlit::RailsTemplate.set_options(attr_quote: '"')
Hamlit::Filters.remove_filter('coffee')
Hamlit::Filters.remove_filter('coffeescript')
diff --git a/config/initializers/rack_attack_git_basic_auth.rb b/config/initializers/rack_attack_git_basic_auth.rb
deleted file mode 100644
index 71e5e2969ce..00000000000
--- a/config/initializers/rack_attack_git_basic_auth.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-# Tell the Rack::Attack Rack middleware to maintain an IP blacklist.
-# We update the blacklist in Gitlab::Auth::IpRateLimiter.
-Rack::Attack.blocklist('Git HTTP Basic Auth') do |req|
- rate_limiter = Gitlab::Auth::IpRateLimiter.new(req.ip)
-
- next false if !rate_limiter.enabled? || rate_limiter.trusted_ip?
-
- Rack::Attack::Allow2Ban.filter(req.ip, Gitlab.config.rack_attack.git_basic_auth) do
- # This block only gets run if the IP was not already banned.
- # Return false, meaning that we do not see anything wrong with the
- # request at this time
- false
- end
-end
diff --git a/config/initializers/rack_attack_new.rb b/config/initializers/rack_attack_new.rb
index 92a8bf79432..267d4c1eda9 100644
--- a/config/initializers/rack_attack_new.rb
+++ b/config/initializers/rack_attack_new.rb
@@ -1,11 +1,22 @@
+# Specs for this file can be found on:
+# * spec/lib/gitlab/throttle_spec.rb
+# * spec/requests/rack_attack_global_spec.rb
module Gitlab::Throttle
def self.settings
Gitlab::CurrentSettings.current_application_settings
end
+ # Returns true if we should use the Admin Area protected paths throttle
def self.protected_paths_enabled?
- !self.omnibus_protected_paths_present? &&
- self.settings.throttle_protected_paths_enabled?
+ return false if should_use_omnibus_protected_paths?
+
+ self.settings.throttle_protected_paths_enabled?
+ end
+
+ # To be removed in 13.0: https://gitlab.com/gitlab-org/gitlab/issues/29952
+ def self.should_use_omnibus_protected_paths?
+ !Settings.rack_attack.admin_area_protected_paths_enabled &&
+ self.omnibus_protected_paths_present?
end
def self.omnibus_protected_paths_present?
@@ -102,11 +113,15 @@ class Rack::Attack
class Request
def unauthenticated?
- !authenticated_user_id([:api, :rss, :ics])
+ !(authenticated_user_id([:api, :rss, :ics]) || authenticated_runner_id)
end
def authenticated_user_id(request_formats)
- Gitlab::Auth::RequestAuthenticator.new(self).user(request_formats)&.id
+ request_authenticator.user(request_formats)&.id
+ end
+
+ def authenticated_runner_id
+ request_authenticator.runner&.id
end
def api_request?
@@ -139,6 +154,10 @@ class Rack::Attack
private
+ def request_authenticator
+ @request_authenticator ||= Gitlab::Auth::RequestAuthenticator.new(self)
+ end
+
def protected_paths
Gitlab::CurrentSettings.current_application_settings.protected_paths
end
diff --git a/config/initializers/sentry.rb b/config/initializers/sentry.rb
index 48daca3d254..a1eddd6a2c2 100644
--- a/config/initializers/sentry.rb
+++ b/config/initializers/sentry.rb
@@ -2,35 +2,4 @@
require 'gitlab/current_settings'
-def configure_sentry
- if Gitlab::Sentry.enabled?
- Raven.configure do |config|
- config.dsn = Gitlab.config.sentry.dsn
- config.release = Gitlab.revision
- config.current_environment = Gitlab.config.sentry.environment
-
- # Sanitize fields based on those sanitized from Rails.
- config.sanitize_fields = Rails.application.config.filter_parameters.map(&:to_s)
- # Sanitize authentication headers
- config.sanitize_http_headers = %w[Authorization Private-Token]
- config.tags = { program: Gitlab.process_name }
- # Debugging for https://gitlab.com/gitlab-org/gitlab-foss/issues/57727
- config.before_send = lambda do |event, hint|
- if ActiveModel::MissingAttributeError === hint[:exception]
- columns_hash = ActiveRecord::Base
- .connection
- .schema_cache
- .instance_variable_get(:@columns_hash)
- .map { |k, v| [k, v.map(&:first)] }
- .to_h
-
- event.extra.merge!(columns_hash)
- end
-
- event
- end
- end
- end
-end
-
-configure_sentry if Rails.env.production? || Rails.env.development?
+Gitlab::ErrorTracking.configure
diff --git a/config/initializers/sidekiq.rb b/config/initializers/sidekiq.rb
index b5d98399015..b4a1e0da41a 100644
--- a/config/initializers/sidekiq.rb
+++ b/config/initializers/sidekiq.rb
@@ -31,21 +31,17 @@ enable_json_logs = Gitlab.config.sidekiq.log_format == 'json'
enable_sidekiq_memory_killer = ENV['SIDEKIQ_MEMORY_KILLER_MAX_RSS'].to_i.nonzero?
use_sidekiq_daemon_memory_killer = ENV["SIDEKIQ_DAEMON_MEMORY_KILLER"].to_i.nonzero?
use_sidekiq_legacy_memory_killer = !use_sidekiq_daemon_memory_killer
+use_request_store = ENV.fetch('SIDEKIQ_REQUEST_STORE', 1).to_i.nonzero?
Sidekiq.configure_server do |config|
config.redis = queues_config_hash
- config.server_middleware do |chain|
- chain.add Gitlab::SidekiqMiddleware::Monitor
- chain.add Gitlab::SidekiqMiddleware::Metrics if Settings.monitoring.sidekiq_exporter
- chain.add Gitlab::SidekiqMiddleware::ArgumentsLogger if ENV['SIDEKIQ_LOG_ARGUMENTS'] && !enable_json_logs
- chain.add Gitlab::SidekiqMiddleware::MemoryKiller if enable_sidekiq_memory_killer && use_sidekiq_legacy_memory_killer
- chain.add Gitlab::SidekiqMiddleware::RequestStoreMiddleware unless ENV['SIDEKIQ_REQUEST_STORE'] == '0'
- chain.add Gitlab::SidekiqMiddleware::BatchLoader
- chain.add Gitlab::SidekiqMiddleware::CorrelationLogger
- chain.add Gitlab::SidekiqMiddleware::InstrumentationLogger
- chain.add Gitlab::SidekiqStatus::ServerMiddleware
- end
+ config.server_middleware(&Gitlab::SidekiqMiddleware.server_configurator({
+ metrics: Settings.monitoring.sidekiq_exporter,
+ arguments_logger: ENV['SIDEKIQ_LOG_ARGUMENTS'] && !enable_json_logs,
+ memory_killer: enable_sidekiq_memory_killer && use_sidekiq_legacy_memory_killer,
+ request_store: use_request_store
+ }))
if enable_json_logs
Sidekiq.logger.formatter = Gitlab::SidekiqLogging::JSONFormatter.new
@@ -56,10 +52,7 @@ Sidekiq.configure_server do |config|
config.error_handlers << Gitlab::SidekiqLogging::ExceptionHandler.new
end
- config.client_middleware do |chain|
- chain.add Gitlab::SidekiqStatus::ClientMiddleware
- chain.add Gitlab::SidekiqMiddleware::CorrelationInjector
- end
+ config.client_middleware(&Gitlab::SidekiqMiddleware.client_configurator)
config.on :startup do
# Clear any connections that might have been obtained before starting
@@ -125,8 +118,5 @@ end
Sidekiq.configure_client do |config|
config.redis = queues_config_hash
- config.client_middleware do |chain|
- chain.add Gitlab::SidekiqMiddleware::CorrelationInjector
- chain.add Gitlab::SidekiqStatus::ClientMiddleware
- end
+ config.client_middleware(&Gitlab::SidekiqMiddleware.client_configurator)
end
diff --git a/config/initializers/snowplow_tracker.rb b/config/initializers/snowplow_tracker.rb
new file mode 100644
index 00000000000..3c730e03738
--- /dev/null
+++ b/config/initializers/snowplow_tracker.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+# Gitlab.com uses Snowplow for identifying users and events.
+# https://gitlab.com/gitlab-org/gitlab/issues/6329
+#
+# SnowplowTracker write log into STDERR
+# https://github.com/snowplow/snowplow-ruby-tracker/blob/39fcfa2be793f2e25e73087a9700abc93f43b5e8/lib/snowplow-tracker/emitters.rb#L23
+# `LOGGER = Logger.new(STDERR)`
+#
+# In puma.rb, if `stdout_redirect` specify stderr, Puma will overwrite STDERR in:
+# https://github.com/puma/puma/blob/b41205f5cacbc2ad0060472bdce68ba636f42175/lib/puma/runner.rb#L134
+# `STDERR.reopen stderr, (append ? "a" : "w")`
+# As a result, SnowplowTracker will log into Puma stderr, when Puma enabled.
+#
+# By default, SnowplowTracker uses default log formatter.
+# When enable Puma, SnowplowTracker log is expected to be JSON format, as part of puma_stderr.log.
+# Hence overwrite ::SnowplowTracker::LOGGER.formatter to JSON formatter
+
+if defined?(::Puma) && defined?(::SnowplowTracker::LOGGER)
+ ::SnowplowTracker::LOGGER.formatter = proc do |severity, datetime, progname, msg|
+ { severity: severity, timestamp: datetime.utc.iso8601(3), pid: $$, progname: progname, message: msg }.to_json << "\n"
+ end
+end
diff --git a/config/initializers/zz_metrics.rb b/config/initializers/zz_metrics.rb
index bc28780cc77..5bbfb97277c 100644
--- a/config/initializers/zz_metrics.rb
+++ b/config/initializers/zz_metrics.rb
@@ -8,6 +8,8 @@
#
# rubocop:disable Metrics/AbcSize
def instrument_classes(instrumentation)
+ return if ENV['STATIC_VERIFICATION']
+
instrumentation.instrument_instance_methods(Gitlab::Shell)
instrumentation.instrument_methods(Gitlab::Git)
@@ -88,8 +90,8 @@ def instrument_classes(instrumentation)
instrumentation.instrument_instance_methods(Gitlab::Highlight)
Gitlab.ee do
- instrumentation.instrument_methods(Elasticsearch::Git::Repository)
- instrumentation.instrument_instance_methods(Elasticsearch::Git::Repository)
+ instrumentation.instrument_instance_methods(Elastic::Latest::GitInstanceProxy)
+ instrumentation.instrument_instance_methods(Elastic::Latest::GitClassProxy)
instrumentation.instrument_instance_methods(Search::GlobalService)
instrumentation.instrument_instance_methods(Search::ProjectService)
diff --git a/config/knative/api_groups.yml b/config/knative/api_groups.yml
new file mode 100644
index 00000000000..4697086eb5a
--- /dev/null
+++ b/config/knative/api_groups.yml
@@ -0,0 +1,11 @@
+---
+
+- networking.istio.io
+- rbac.istio.io
+- authentication.istio.io
+- config.istio.io
+
+- networking.internal.knative.dev
+- serving.knative.dev
+- caching.internal.knative.dev
+- autoscaling.internal.knative.dev \ No newline at end of file
diff --git a/config/knative/api_resources.yml b/config/knative/api_resources.yml
deleted file mode 100644
index 095f44ed799..00000000000
--- a/config/knative/api_resources.yml
+++ /dev/null
@@ -1,70 +0,0 @@
----
-
-- meshpolicies.authentication.istio.io
-- policies.authentication.istio.io
-- adapters.config.istio.io
-- apikeys.config.istio.io
-- attributemanifests.config.istio.io
-- authorizations.config.istio.io
-- bypasses.config.istio.io
-- podautoscalers.autoscaling.internal.knative.dev
-- builds.build.knative.dev
-- buildtemplates.build.knative.dev
-- clusterbuildtemplates.build.knative.dev
-- images.caching.internal.knative.dev
-- certificates.networking.internal.knative.dev
-- clusteringresses.networking.internal.knative.dev
-- serverlessservices.networking.internal.knative.dev
-- configurations.serving.knative.dev
-- revisions.serving.knative.dev
-- routes.serving.knative.dev
-- services.serving.knative.dev
-- checknothings.config.istio.io
-- circonuses.config.istio.io
-- deniers.config.istio.io
-- edges.config.istio.io
-- fluentds.config.istio.io
-- handlers.config.istio.io
-- httpapispecbindings.config.istio.io
-- httpapispecs.config.istio.io
-- instances.config.istio.io
-- kubernetesenvs.config.istio.io
-- kuberneteses.config.istio.io
-- listcheckers.config.istio.io
-- listentries.config.istio.io
-- logentries.config.istio.io
-- memquotas.config.istio.io
-- metrics.config.istio.io
-- noops.config.istio.io
-- opas.config.istio.io
-- prometheuses.config.istio.io
-- quotas.config.istio.io
-- quotaspecbindings.config.istio.io
-- quotaspecs.config.istio.io
-- rbacs.config.istio.io
-- redisquotas.config.istio.io
-- reportnothings.config.istio.io
-- rules.config.istio.io
-- servicecontrolreports.config.istio.io
-- servicecontrols.config.istio.io
-- signalfxs.config.istio.io
-- solarwindses.config.istio.io
-- stackdrivers.config.istio.io
-- statsds.config.istio.io
-- stdios.config.istio.io
-- templates.config.istio.io
-- tracespans.config.istio.io
-- destinationrules.networking.istio.io
-- envoyfilters.networking.istio.io
-- gateways.networking.istio.io
-- serviceentries.networking.istio.io
-- virtualservices.networking.istio.io
-- rbacconfigs.rbac.istio.io
-- servicerolebindings.rbac.istio.io
-- serviceroles.rbac.istio.io
-- cloudwatches.config.istio.io
-- clusterrbacconfigs.rbac.istio.io
-- dogstatsds.config.istio.io
-- ingresses.networking.internal.knative.dev
-- sidecars.networking.istio.io
-- zipkins.config.istio.io
diff --git a/config/mail_room.yml b/config/mail_room.yml
index c3a5be8d38c..75024c2b2e1 100644
--- a/config/mail_room.yml
+++ b/config/mail_room.yml
@@ -13,6 +13,8 @@
:email: <%= config[:user].to_json %>
:password: <%= config[:password].to_json %>
:idle_timeout: <%= config[:idle_timeout].to_json %>
+ :logger:
+ :log_path: <%= config[:log_path].to_json %>
:name: <%= config[:mailbox].to_json %>
diff --git a/config/prometheus/common_metrics.yml b/config/prometheus/common_metrics.yml
index 795243fab49..314ee44ed71 100644
--- a/config/prometheus/common_metrics.yml
+++ b/config/prometheus/common_metrics.yml
@@ -209,6 +209,6 @@ panel_groups:
weight: 1
metrics:
- id: system_metrics_knative_function_invocation_count
- query_range: 'sum(ceil(rate(istio_requests_total{destination_service_namespace="%{kube_namespace}", destination_app=~"%{function_name}.*"}[1m])*60))'
+ query_range: 'sum(ceil(rate(istio_requests_total{destination_service_namespace="%{kube_namespace}", destination_service=~"%{function_name}.*"}[1m])*60))'
label: invocations / minute
unit: requests
diff --git a/config/prometheus/pod_metrics.yml b/config/prometheus/pod_metrics.yml
new file mode 100644
index 00000000000..29575ec543e
--- /dev/null
+++ b/config/prometheus/pod_metrics.yml
@@ -0,0 +1,59 @@
+dashboard: 'Pod metrics'
+priority: 10
+panel_groups:
+- group: CPU metrics
+ panels:
+ - title: "CPU usage"
+ type: "line-chart"
+ y_label: "Cores per pod"
+ metrics:
+ - id: pod_cpu_usage_seconds_total
+ query_range: 'rate(container_cpu_usage_seconds_total{pod_name="{{pod_name}}",container_name="POD"}[5m])'
+ unit: "cores"
+ label: pod_name
+- group: Memory metrics
+ panels:
+ - title: "Memory usage working set"
+ type: "line-chart"
+ y_label: "Working set memory (MiB)"
+ metrics:
+ - id: pod_memory_working_set
+ query_range: 'container_memory_working_set_bytes{pod_name="{{pod_name}}",container_name="POD"}/1024/1024'
+ unit: "MiB"
+ label: pod_name
+- group: Network metrics
+ panels:
+ - title: "Network Receive (In)"
+ type: "line-chart"
+ y_label: "Received (KiB/sec)"
+ metrics:
+ - id: pod_network_receive
+ query_range: 'rate(container_network_receive_bytes_total{pod_name="{{pod_name}}",container_name="POD"}[5m])/1024'
+ unit: "KiB / sec"
+ label: pod_name
+ - title: "Network Transmit (Out)"
+ type: "line-chart"
+ y_label: "Transmitted (KiB/sec)"
+ metrics:
+ - id: pod_network_transmit
+ query_range: 'rate(container_network_transmit_bytes_total{pod_name="{{pod_name}}",container_name="POD"}[5m])/1024'
+ unit: "KiB / sec"
+ label: pod_name
+- group: Disk metrics
+ panels:
+ - title: "Disk Reads"
+ type: "line-chart"
+ y_label: "Disk reads (KiB/sec)"
+ metrics:
+ - id: pod_disk_reads
+ query_range: 'rate(container_fs_reads_bytes_total{container_name="POD",pod_name="{{pod_name}}"}[5m])/1024'
+ unit: "KiB / sec"
+ label: pod_name
+ - title: "Disk Writes"
+ type: "line-chart"
+ y_label: "Disk writes (KiB/sec)"
+ metrics:
+ - id: pod_disk_writes
+ query_range: 'rate(container_fs_writes_bytes_total{container_name="POD",pod_name="{{pod_name}}"}[5m])/1024'
+ unit: "KiB / sec"
+ label: pod_name
diff --git a/config/pseudonymizer.yml b/config/pseudonymizer.yml
index 8bbc69dca7d..1f4ed9a8421 100644
--- a/config/pseudonymizer.yml
+++ b/config/pseudonymizer.yml
@@ -47,7 +47,6 @@ tables:
epics:
whitelist:
- id
- - milestone_id
- group_id
- author_id
- assignee_id
@@ -93,7 +92,7 @@ tables:
- updated_at
- description
- milestone_id
- - state
+ - state_id
- updated_by_id
- weight
- due_date
@@ -174,7 +173,7 @@ tables:
- created_at
- updated_at
- milestone_id
- - state
+ - state_id
- merge_status
- target_project_id
- updated_by_id
diff --git a/config/puma.example.development.rb b/config/puma.example.development.rb
index 6f686437f88..ecbfac660c9 100644
--- a/config/puma.example.development.rb
+++ b/config/puma.example.development.rb
@@ -78,3 +78,11 @@ tag 'gitlab-puma-worker'
# value is 60 seconds.
#
worker_timeout 60
+
+# Use json formatter
+require_relative "/home/git/gitlab/lib/gitlab/puma_logging/json_formatter"
+
+json_formatter = Gitlab::PumaLogging::JSONFormatter.new
+log_formatter do |str|
+ json_formatter.call(str)
+end
diff --git a/config/puma.rb.example b/config/puma.rb.example
index 10f255a87de..cd7adca157f 100644
--- a/config/puma.rb.example
+++ b/config/puma.rb.example
@@ -68,3 +68,11 @@ tag 'gitlab-puma-worker'
# value is 60 seconds.
#
worker_timeout 60
+
+# Use json formatter
+require_relative "/home/git/gitlab/lib/gitlab/puma_logging/json_formatter"
+
+json_formatter = Gitlab::PumaLogging::JSONFormatter.new
+log_formatter do |str|
+ json_formatter.call(str)
+end \ No newline at end of file
diff --git a/config/routes.rb b/config/routes.rb
index 9fb4d94f068..518cf985718 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -118,6 +118,8 @@ Rails.application.routes.draw do
draw :trial
draw :trial_registration
draw :country
+ draw :country_state
+ draw :subscription
end
Gitlab.ee do
@@ -144,11 +146,6 @@ Rails.application.routes.draw do
post :create_gcp
post :create_aws
post :authorize_aws_role
- delete :revoke_aws_role
-
- scope :aws do
- get 'api/:resource', to: 'clusters#aws_proxy', as: :aws_proxy
- end
end
member do
@@ -166,6 +163,7 @@ Rails.application.routes.draw do
end
get :cluster_status, format: :json
+ delete :clear_cache
end
end
end
diff --git a/config/routes/group.rb b/config/routes/group.rb
index 437c80b8c92..30671d4e0a1 100644
--- a/config/routes/group.rb
+++ b/config/routes/group.rb
@@ -1,8 +1,10 @@
# frozen_string_literal: true
+# rubocop: disable Cop/PutGroupRoutesUnderScope
resources :groups, only: [:index, :new, :create] do
post :preview_markdown
end
+# rubocop: enable Cop/PutGroupRoutesUnderScope
constraints(::Constraints::GroupUrlConstrainer.new) do
scope(path: 'groups/*id',
diff --git a/config/routes/instance_statistics.rb b/config/routes/instance_statistics.rb
index 1102ef6b017..967255d5b82 100644
--- a/config/routes/instance_statistics.rb
+++ b/config/routes/instance_statistics.rb
@@ -1,8 +1,8 @@
# frozen_string_literal: true
namespace :instance_statistics do
- root to: redirect('-/instance_statistics/conversational_development_index')
+ root to: redirect('-/instance_statistics/dev_ops_score')
resources :cohorts, only: :index
- resources :conversational_development_index, only: :index
+ resources :dev_ops_score, only: :index
end
diff --git a/config/routes/profile.rb b/config/routes/profile.rb
index 403f430850e..fcf8812ee2e 100644
--- a/config/routes/profile.rb
+++ b/config/routes/profile.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
# for secondary email confirmations - uses the same confirmation controller as :users
devise_for :emails, path: 'profile/emails', controllers: { confirmations: :confirmations }
@@ -42,14 +44,6 @@ resource :profile, only: [:show, :update] do
end
end
- Gitlab.ee do
- resource :slack, only: [:edit] do
- member do
- get :slack_link
- end
- end
- end
-
resources :chat_names, only: [:index, :new, :create, :destroy] do
collection do
delete :deny
@@ -73,10 +67,5 @@ resource :profile, only: [:show, :update] do
end
resources :u2f_registrations, only: [:destroy]
-
- Gitlab.ee do
- resources :pipeline_quota, only: [:index]
- resources :billings, only: [:index]
- end
end
end
diff --git a/config/routes/project.rb b/config/routes/project.rb
index 3f913683b00..26808de5b41 100644
--- a/config/routes/project.rb
+++ b/config/routes/project.rb
@@ -1,14 +1,12 @@
-resources :projects, only: [:index, :new, :create]
+# frozen_string_literal: true
-Gitlab.ee do
- scope "/-/push_from_secondary/:geo_node_id" do
- draw :git_http
- end
-end
+# rubocop: disable Cop/PutProjectRoutesUnderScope
+resources :projects, only: [:index, :new, :create]
draw :git_http
get '/projects/:id' => 'projects#resolve'
+# rubocop: enable Cop/PutProjectRoutesUnderScope
constraints(::Constraints::ProjectUrlConstrainer.new) do
# If the route has a wildcard segment, the segment has a regex constraint,
@@ -60,7 +58,7 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do
get :trace, defaults: { format: 'json' }
get :raw
get :terminal
- get '/terminal.ws/authorize', to: 'jobs#terminal_websocket_authorize', constraints: { format: nil }
+ get '/terminal.ws/authorize', to: 'jobs#terminal_websocket_authorize', format: false
end
resource :artifacts, only: [] do
@@ -87,22 +85,12 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do
resource :operations, only: [:show, :update]
resource :integrations, only: [:show]
- Gitlab.ee do
- resource :slack, only: [:destroy, :edit, :update] do
- get :slack_auth
- end
- end
-
resource :repository, only: [:show], controller: :repository do
post :create_deploy_token, path: 'deploy_token/create'
post :cleanup
end
end
- Gitlab.ee do
- resources :feature_flags
- end
-
resources :autocomplete_sources, only: [] do
collection do
get 'members'
@@ -171,6 +159,12 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do
member do
put :test
end
+
+ resources :hook_logs, only: [:show], controller: :service_hook_logs do
+ member do
+ post :retry
+ end
+ end
end
resources :boards, only: [:index, :show, :create, :update, :destroy], constraints: { id: /\d+/ } do
@@ -179,7 +173,12 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do
end
end
- resources :releases, only: [:index, :edit], param: :tag, constraints: { tag: %r{[^/]+} }
+ resources :releases, only: [:index, :edit], param: :tag, constraints: { tag: %r{[^/]+} } do
+ member do
+ get :evidence
+ end
+ end
+
resources :starrers, only: [:index]
resources :forks, only: [:index, :new, :create]
resources :group_links, only: [:index, :create, :update, :destroy], constraints: { id: /\d+/ }
@@ -216,9 +215,69 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do
get :production
end
end
+
+ concerns :clusterable
+
+ namespace :serverless do
+ scope :functions do
+ get '/:environment_id/:id', to: 'functions#show'
+ get '/:environment_id/:id/metrics', to: 'functions#metrics', as: :metrics
+ end
+
+ resources :functions, only: [:index]
+ end
+
+ resources :environments, except: [:destroy] do
+ member do
+ post :stop
+ post :cancel_auto_stop
+ get :terminal
+ get :metrics
+ get :additional_metrics
+ get :metrics_dashboard
+ get '/terminal.ws/authorize', to: 'environments#terminal_websocket_authorize', format: false
+
+ get '/prometheus/api/v1/*proxy_path', to: 'environments/prometheus_api#proxy', as: :prometheus_api
+
+ get '/sample_metrics', to: 'environments/sample_metrics#query' if ENV['USE_SAMPLE_METRICS']
+ end
+
+ collection do
+ get :metrics, action: :metrics_redirect
+ get :folder, path: 'folders/*id', constraints: { format: /(html|json)/ }
+ get :search
+ end
+
+ resources :deployments, only: [:index] do
+ member do
+ get :metrics
+ get :additional_metrics
+ end
+ end
+ end
+
+ resources :error_tracking, only: [:index], controller: :error_tracking do
+ collection do
+ get ':issue_id/details',
+ to: 'error_tracking#details',
+ as: 'details'
+ get ':issue_id/stack_trace',
+ to: 'error_tracking#stack_trace',
+ as: 'stack_trace'
+ post :list_projects
+ end
+ end
+
+ # The wiki routing contains wildcard characters so
+ # its preferable to keep it below all other project routes
+ draw :wiki
end
# End of the /-/ scope.
+ # All new routes should go under /-/ scope.
+ # Look for scope '-' at the top of the file.
+ # rubocop: disable Cop/PutProjectRoutesUnderScope
+
#
# Templates
#
@@ -263,16 +322,6 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do
namespace :prometheus do
resources :metrics, constraints: { id: %r{[^\/]+} }, only: [:index, :new, :create, :edit, :update, :destroy] do
get :active_common, on: :collection
-
- Gitlab.ee do
- post :validate_query, on: :collection
- end
- end
-
- Gitlab.ee do
- resources :alerts, constraints: { id: /\d+/ }, only: [:index, :create, :show, :update, :destroy] do
- post :notify, on: :collection
- end
end
end
@@ -285,15 +334,6 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do
get :pipeline_status
get :ci_environments_status
post :toggle_subscription
-
- Gitlab.ee do
- get :approvals
- post :approvals, action: :approve
- delete :approvals, action: :unapprove
-
- post :rebase
- end
-
post :remove_wip
post :assign_related_issues
get :discussions, format: :json
@@ -301,13 +341,7 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do
get :test_reports
get :exposed_artifacts
- scope constraints: { format: nil }, action: :show do
- get :commits, defaults: { tab: 'commits' }
- get :pipelines, defaults: { tab: 'pipelines' }
- get :diffs, defaults: { tab: 'diffs' }
- end
-
- scope constraints: { format: 'json' }, as: :json do
+ scope constraints: ->(req) { req.format == :json }, as: :json do
get :commits
get :pipelines
get :diffs, to: 'merge_requests/diffs#show'
@@ -317,6 +351,12 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do
get :cached_widget, to: 'merge_requests/content#cached_widget'
end
+ scope action: :show do
+ get :commits, defaults: { tab: 'commits' }
+ get :pipelines, defaults: { tab: 'pipelines' }
+ get :diffs, defaults: { tab: 'diffs' }
+ end
+
get :diff_for_path, controller: 'merge_requests/diffs'
scope controller: 'merge_requests/conflicts' do
@@ -331,21 +371,6 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do
post :bulk_update
end
- Gitlab.ee do
- resources :approvers, only: :destroy
- delete 'approvers', to: 'approvers#destroy_via_user_id', as: :approver_via_user_id
- resources :approver_groups, only: :destroy
-
- scope module: :merge_requests do
- resources :drafts, only: [:index, :update, :create, :destroy] do
- collection do
- post :publish
- delete :discard
- end
- end
- end
- end
-
resources :discussions, only: [:show], constraints: { id: /\h{40}/ } do
member do
post :resolve
@@ -360,37 +385,22 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do
scope path: 'new', as: :new_merge_request do
get '', action: :new
- scope constraints: { format: nil }, action: :new do
- get :diffs, defaults: { tab: 'diffs' }
- get :pipelines, defaults: { tab: 'pipelines' }
- end
-
- scope constraints: { format: 'json' }, as: :json do
+ scope constraints: ->(req) { req.format == :json }, as: :json do
get :diffs
get :pipelines
end
+ scope action: :new do
+ get :diffs, defaults: { tab: 'diffs' }
+ get :pipelines, defaults: { tab: 'pipelines' }
+ end
+
get :diff_for_path
get :branch_from
get :branch_to
end
end
- Gitlab.ee do
- resources :path_locks, only: [:index, :destroy] do
- collection do
- post :toggle
- end
- end
-
- get '/service_desk' => 'service_desk#show', as: :service_desk
- put '/service_desk' => 'service_desk#update', as: :service_desk_refresh
- end
-
- Gitlab.ee do
- resources :push_rules, constraints: { id: /\d+/ }, only: [:update]
- end
-
resources :pipelines, only: [:index, :new, :create, :show] do
collection do
resource :pipelines_settings, path: 'settings', only: [:show, :update]
@@ -409,11 +419,6 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do
get :failures
get :status
get :test_report
-
- Gitlab.ee do
- get :security
- get :licenses
- end
end
member do
@@ -430,60 +435,6 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do
end
end
- concerns :clusterable
-
- resources :environments, except: [:destroy] do
- member do
- post :stop
- get :terminal
- get :metrics
- get :additional_metrics
- get :metrics_dashboard
- get '/terminal.ws/authorize', to: 'environments#terminal_websocket_authorize', constraints: { format: nil }
-
- get '/prometheus/api/v1/*proxy_path', to: 'environments/prometheus_api#proxy', as: :prometheus_api
-
- Gitlab.ee do
- get :logs
- get '/pods/(:pod_name)/containers/(:container_name)/logs', to: 'environments#k8s_pod_logs', as: :k8s_pod_logs
- end
- end
-
- collection do
- get :metrics, action: :metrics_redirect
- get :folder, path: 'folders/*id', constraints: { format: /(html|json)/ }
- get :search
-
- Gitlab.ee do
- get :logs, action: :logs_redirect
- end
- end
-
- resources :deployments, only: [:index] do
- member do
- get :metrics
- get :additional_metrics
- end
- end
- end
-
- Gitlab.ee do
- resources :protected_environments, only: [:create, :update, :destroy], constraints: { id: /\d+/ } do
- collection do
- get 'search'
- end
- end
- end
-
- namespace :serverless do
- scope :functions do
- get '/:environment_id/:id', to: 'functions#show'
- get '/:environment_id/:id/metrics', to: 'functions#metrics', as: :metrics
- end
-
- resources :functions, only: [:index]
- end
-
draw :legacy_builds
resources :hooks, only: [:index, :create, :edit, :update, :destroy], constraints: { id: /\d+/ } do
@@ -517,14 +468,6 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do
end
end
- Gitlab.ee do
- namespace :security do
- resource :dashboard, only: [:show], controller: :dashboard
- end
-
- resources :vulnerability_feedback, only: [:index, :create, :update, :destroy], constraints: { id: /\d+/ }
- end
-
get :issues, to: 'issues#calendar', constraints: lambda { |req| req.format == :ics }
resources :issues, concerns: :awardable, constraints: { id: /\d+/ } do
@@ -538,24 +481,11 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do
get :realtime_changes
post :create_merge_request
get :discussions, format: :json
-
- Gitlab.ee do
- get 'designs(/*vueroute)', to: 'issues#designs', as: :designs, format: false
- end
end
collection do
post :bulk_update
post :import_csv
-
- Gitlab.ee do
- post :export_csv
- get :service_desk
- end
- end
-
- Gitlab.ee do
- resources :issue_links, only: [:index, :create, :destroy], as: 'links', path: 'links'
end
end
@@ -590,18 +520,11 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do
end
end
- Gitlab.ee do
- resources :approvers, only: :destroy
- resources :approver_groups, only: :destroy
- end
-
resources :runner_projects, only: [:create, :destroy]
resources :badges, only: [:index] do
collection do
scope '*ref', constraints: { ref: Gitlab::PathRegex.git_reference_regex } do
constraints format: /svg/ do
- # Keep around until 10.0, see gitlab-org/gitlab-ce#35307
- get :build, to: "badges#pipeline"
get :pipeline
get :coverage
end
@@ -609,36 +532,32 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do
end
end
- Gitlab.ee do
- resources :audit_events, only: [:index]
- end
-
- resources :error_tracking, only: [:index], controller: :error_tracking do
- collection do
- get ':issue_id/details',
- to: 'error_tracking#details',
- as: 'details'
- get ':issue_id/stack_trace',
- to: 'error_tracking#stack_trace',
- as: 'stack_trace'
- post :list_projects
- end
- end
-
scope :usage_ping, controller: :usage_ping do
post :web_ide_clientside_preview
end
- # Since both wiki and repository routing contains wildcard characters
+ # The repository routing contains wildcard characters so
# its preferable to keep it below all other project routes
- draw :wiki
draw :repository
- Gitlab.ee do
- resources :managed_licenses, only: [:index, :show, :new, :create, :edit, :update, :destroy]
- end
+ # All new routes should go under /-/ scope.
+ # Look for scope '-' at the top of the file.
+ # rubocop: enable Cop/PutProjectRoutesUnderScope
+
+ # Legacy routes.
+ # Introduced in 12.0.
+ # Should be removed with https://gitlab.com/gitlab-org/gitlab/issues/28848.
+ Gitlab::Routing.redirect_legacy_paths(self, :settings, :branches, :tags,
+ :network, :graphs, :autocomplete_sources,
+ :project_members, :deploy_keys, :deploy_tokens,
+ :labels, :milestones, :services, :boards, :releases,
+ :forks, :group_links, :import, :avatar, :mirror,
+ :cycle_analytics, :mattermost, :variables, :triggers,
+ :environments, :protected_environments, :error_tracking,
+ :serverless, :clusters, :audit_events, :wikis)
end
+ # rubocop: disable Cop/PutProjectRoutesUnderScope
resources(:projects,
path: '/',
constraints: { id: Gitlab::PathRegex.project_route_regex },
@@ -660,24 +579,6 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do
put :new_issuable_address
end
end
- end
-
- # Legacy routes.
- # Introduced in 12.0.
- # Should be removed with https://gitlab.com/gitlab-org/gitlab/issues/28848.
- scope(path: '*namespace_id',
- as: :namespace,
- namespace_id: Gitlab::PathRegex.full_namespace_route_regex) do
- scope(path: ':project_id',
- constraints: { project_id: Gitlab::PathRegex.project_route_regex },
- module: :projects,
- as: :project) do
- Gitlab::Routing.redirect_legacy_paths(self, :settings, :branches, :tags,
- :network, :graphs, :autocomplete_sources,
- :project_members, :deploy_keys, :deploy_tokens,
- :labels, :milestones, :services, :boards, :releases,
- :forks, :group_links, :import, :avatar, :mirror,
- :cycle_analytics, :mattermost, :variables, :triggers)
- end
+ # rubocop: enable Cop/PutProjectRoutesUnderScope
end
end
diff --git a/config/routes/user.rb b/config/routes/user.rb
index 31af321d2b2..fe7a0aa3233 100644
--- a/config/routes/user.rb
+++ b/config/routes/user.rb
@@ -1,7 +1,4 @@
-Gitlab.ee do
- get 'unsubscribes/:email', to: 'unsubscribes#show', as: :unsubscribe
- post 'unsubscribes/:email', to: 'unsubscribes#create'
-end
+# frozen_string_literal: true
# Allows individual providers to be directed to a chosen controller
# Call from inside devise_scope
@@ -30,10 +27,6 @@ devise_for :users, controllers: { omniauth_callbacks: :omniauth_callbacks,
devise_scope :user do
get '/users/auth/:provider/omniauth_error' => 'omniauth_callbacks#omniauth_error', as: :omniauth_error
get '/users/almost_there' => 'confirmations#almost_there'
-
- Gitlab.ee do
- get '/users/auth/kerberos_spnego/negotiate' => 'omniauth_kerberos_spnego#negotiate'
- end
end
scope '-/users', module: :users do
diff --git a/config/sidekiq_queues.yml b/config/sidekiq_queues.yml
index b4be61d8a3d..68ad819d48b 100644
--- a/config/sidekiq_queues.yml
+++ b/config/sidekiq_queues.yml
@@ -123,3 +123,5 @@
- [refresh_license_compliance_checks, 2]
- [design_management_new_version, 1]
- [epics, 2]
+ - [personal_access_tokens, 1]
+ - [adjourned_project_deletion, 1]
diff --git a/config/webpack.config.js b/config/webpack.config.js
index 9c7a3f42c97..d85fa84c32f 100644
--- a/config/webpack.config.js
+++ b/config/webpack.config.js
@@ -1,3 +1,4 @@
+const fs = require('fs');
const path = require('path');
const glob = require('glob');
const webpack = require('webpack');
@@ -7,8 +8,10 @@ const CompressionPlugin = require('compression-webpack-plugin');
const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin');
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
const CopyWebpackPlugin = require('copy-webpack-plugin');
+const vendorDllHash = require('./helpers/vendor_dll_hash');
const ROOT_PATH = path.resolve(__dirname, '..');
+const VENDOR_DLL = process.env.WEBPACK_VENDOR_DLL && process.env.WEBPACK_VENDOR_DLL !== 'false';
const CACHE_PATH = process.env.WEBPACK_CACHE_PATH || path.join(ROOT_PATH, 'tmp/cache');
const IS_PRODUCTION = process.env.NODE_ENV === 'production';
const IS_DEV_SERVER = process.env.WEBPACK_DEV_SERVER === 'true';
@@ -23,6 +26,7 @@ const NO_SOURCEMAPS = process.env.NO_SOURCEMAPS;
const VUE_VERSION = require('vue/package.json').version;
const VUE_LOADER_VERSION = require('vue-loader/package.json').version;
+const WEBPACK_VERSION = require('webpack/package.json').version;
const devtool = IS_PRODUCTION ? 'source-map' : 'cheap-module-eval-source-map';
@@ -102,6 +106,7 @@ const alias = {
if (IS_EE) {
Object.assign(alias, {
ee: path.join(ROOT_PATH, 'ee/app/assets/javascripts'),
+ ee_component: path.join(ROOT_PATH, 'ee/app/assets/javascripts'),
ee_empty_states: path.join(ROOT_PATH, 'ee/app/views/shared/empty_states'),
ee_icons: path.join(ROOT_PATH, 'ee/app/views/shared/icons'),
ee_images: path.join(ROOT_PATH, 'ee/app/assets/images'),
@@ -110,6 +115,25 @@ if (IS_EE) {
});
}
+// if there is a compiled DLL with a matching hash string, use it
+let dll;
+
+if (VENDOR_DLL && !IS_PRODUCTION) {
+ const dllHash = vendorDllHash();
+ const dllCachePath = path.join(ROOT_PATH, `tmp/cache/webpack-dlls/${dllHash}`);
+ if (fs.existsSync(dllCachePath)) {
+ console.log(`Using vendor DLL found at: ${dllCachePath}`);
+ dll = {
+ manifestPath: path.join(dllCachePath, 'vendor.dll.manifest.json'),
+ cacheFrom: dllCachePath,
+ cacheTo: path.join(ROOT_PATH, `public/assets/webpack/dll.${dllHash}/`),
+ publicPath: `dll.${dllHash}/vendor.dll.bundle.js`,
+ };
+ } else {
+ console.log(`Warning: No vendor DLL found at: ${dllCachePath}. DllPlugin disabled.`);
+ }
+}
+
module.exports = {
mode: IS_PRODUCTION ? 'production' : 'development',
@@ -182,7 +206,7 @@ module.exports = {
options: { limit: 2048 },
},
{
- test: /\_worker\.js$/,
+ test: /_worker\.js$/,
use: [
{
loader: 'worker-loader',
@@ -264,6 +288,11 @@ module.exports = {
modules: false,
assets: true,
});
+
+ // tell our rails helper where to find the DLL files
+ if (dll) {
+ stats.dllAssets = dll.publicPath;
+ }
return JSON.stringify(stats, null, 2);
},
}),
@@ -283,16 +312,28 @@ module.exports = {
jQuery: 'jquery',
}),
- new webpack.NormalModuleReplacementPlugin(/^ee_component\/(.*)\.vue/, function(resource) {
- if (Object.keys(module.exports.resolve.alias).indexOf('ee') >= 0) {
- resource.request = resource.request.replace(/^ee_component/, 'ee');
- } else {
+ // reference our compiled DLL modules
+ dll &&
+ new webpack.DllReferencePlugin({
+ context: ROOT_PATH,
+ manifest: dll.manifestPath,
+ }),
+
+ dll &&
+ new CopyWebpackPlugin([
+ {
+ from: dll.cacheFrom,
+ to: dll.cacheTo,
+ },
+ ]),
+
+ !IS_EE &&
+ new webpack.NormalModuleReplacementPlugin(/^ee_component\/(.*)\.vue/, resource => {
resource.request = path.join(
ROOT_PATH,
'app/assets/javascripts/vue_shared/components/empty_component.js',
);
- }
- }),
+ }),
new CopyWebpackPlugin([
{
@@ -361,6 +402,21 @@ module.exports = {
console.log(`Webpack heap size: ${toMB(memoryUsage)} MB`);
+ const webpackStatistics = {
+ memoryUsage,
+ date: Date.now(), // milliseconds
+ commitSHA: process.env.CI_COMMIT_SHA,
+ nodeVersion: process.versions.node,
+ webpackVersion: WEBPACK_VERSION,
+ };
+
+ console.log(webpackStatistics);
+
+ fs.writeFileSync(
+ path.join(ROOT_PATH, 'webpack-dev-server.json'),
+ JSON.stringify(webpackStatistics),
+ );
+
// exit in case we're running webpack-dev-server
IS_DEV_SERVER && process.exit();
});
diff --git a/config/webpack.vendor.config.js b/config/webpack.vendor.config.js
new file mode 100644
index 00000000000..bddbf067d7c
--- /dev/null
+++ b/config/webpack.vendor.config.js
@@ -0,0 +1,71 @@
+const path = require('path');
+const webpack = require('webpack');
+const vendorDllHash = require('./helpers/vendor_dll_hash');
+
+const ROOT_PATH = path.resolve(__dirname, '..');
+
+const dllHash = vendorDllHash();
+const dllCachePath = path.join(ROOT_PATH, `tmp/cache/webpack-dlls/${dllHash}`);
+const dllPublicPath = `/assets/webpack/dll.${dllHash}/`;
+
+module.exports = {
+ mode: 'development',
+ resolve: {
+ extensions: ['.js'],
+ },
+
+ context: ROOT_PATH,
+
+ entry: {
+ vendor: [
+ 'jquery',
+ 'pdfjs-dist/build/pdf',
+ 'pdfjs-dist/build/pdf.worker.min',
+ 'sql.js',
+ 'core-js',
+ 'echarts',
+ 'lodash',
+ 'underscore',
+ 'vuex',
+ 'pikaday',
+ 'vue/dist/vue.esm.js',
+ 'at.js',
+ 'jed',
+ 'mermaid',
+ 'katex',
+ 'three',
+ 'select2',
+ 'moment',
+ 'aws-sdk',
+ 'sanitize-html',
+ 'bootstrap/dist/js/bootstrap.js',
+ 'sortablejs/modular/sortable.esm.js',
+ 'popper.js',
+ 'apollo-client',
+ 'source-map',
+ 'mousetrap',
+ ],
+ },
+
+ output: {
+ path: dllCachePath,
+ publicPath: dllPublicPath,
+ filename: '[name].dll.bundle.js',
+ chunkFilename: '[name].dll.chunk.js',
+ library: '[name]_[hash]',
+ },
+
+ plugins: [
+ new webpack.DllPlugin({
+ path: path.join(dllCachePath, '[name].dll.manifest.json'),
+ name: '[name]_[hash]',
+ }),
+ ],
+
+ node: {
+ fs: 'empty', // sqljs requires fs
+ setImmediate: false,
+ },
+
+ devtool: 'cheap-module-source-map',
+};
diff --git a/danger/changelog/Dangerfile b/danger/changelog/Dangerfile
index f83dc556964..62b41d14bee 100644
--- a/danger/changelog/Dangerfile
+++ b/danger/changelog/Dangerfile
@@ -3,7 +3,6 @@
require 'yaml'
-NO_CHANGELOG_LABELS = %w[backstage ci-build meta].freeze
SEE_DOC = "See [the documentation](https://docs.gitlab.com/ce/development/changelog.html)."
CREATE_CHANGELOG_MESSAGE = <<~MSG
You can create one with:
@@ -21,14 +20,6 @@ bin/changelog --ee -m %<mr_iid>s "%<mr_title>s"
Note: Merge requests with %<labels>s do not trigger this check.
MSG
-def ee_changelog?(changelog_path)
- changelog_path =~ /unreleased-ee/
-end
-
-def ce_port_changelog?(changelog_path)
- helper.ee? && !ee_changelog?(changelog_path)
-end
-
def check_changelog(path)
yaml = YAML.safe_load(File.read(path))
@@ -37,7 +28,7 @@ def check_changelog(path)
if yaml["merge_request"].nil?
message "Consider setting `merge_request` to #{gitlab.mr_json["iid"]} in #{gitlab.html_link(path)}. #{SEE_DOC}"
- elsif yaml["merge_request"] != gitlab.mr_json["iid"] && !ce_port_changelog?(path)
+ elsif yaml["merge_request"] != gitlab.mr_json["iid"] && !changelog.ce_port_changelog?(path)
fail "Merge request ID was not set to #{gitlab.mr_json["iid"]}! #{SEE_DOC}"
end
rescue Psych::SyntaxError, Psych::DisallowedClass, Psych::BadAlias
@@ -47,25 +38,18 @@ rescue StandardError => e
warn "There was a problem trying to check the Changelog. Exception: #{e.name} - #{e.message}"
end
-def presented_no_changelog_labels
- NO_CHANGELOG_LABELS.map { |label| "~#{label}" }.join(', ')
-end
-
-changelog_needed = (gitlab.mr_labels & NO_CHANGELOG_LABELS).empty?
-changelog_found = git.added_files.find { |path| path =~ %r{\A(ee/)?(changelogs/unreleased)(-ee)?/} }
-
-mr_title = gitlab.mr_json["title"].gsub(/^WIP: */, '')
-
if git.modified_files.include?("CHANGELOG.md")
fail "**CHANGELOG.md was edited.** Please remove the additions and create a CHANGELOG entry.\n\n" +
- format(CREATE_CHANGELOG_MESSAGE, mr_iid: gitlab.mr_json["iid"], mr_title: mr_title, labels: presented_no_changelog_labels)
+ format(CREATE_CHANGELOG_MESSAGE, mr_iid: gitlab.mr_json["iid"], mr_title: changelog.sanitized_mr_title, labels: changelog.presented_no_changelog_labels)
end
-if changelog_needed
+changelog_found = changelog.found
+
+if changelog.needed?
if changelog_found
check_changelog(changelog_found)
else
message "**[CHANGELOG missing](https://docs.gitlab.com/ce/development/changelog.html)**: If this merge request [doesn't need a CHANGELOG entry](https://docs.gitlab.com/ee/development/changelog.html#what-warrants-a-changelog-entry), feel free to ignore this message.\n\n" +
- format(CREATE_CHANGELOG_MESSAGE, mr_iid: gitlab.mr_json["iid"], mr_title: mr_title, labels: presented_no_changelog_labels)
+ format(CREATE_CHANGELOG_MESSAGE, mr_iid: gitlab.mr_json["iid"], mr_title: changelog.sanitized_mr_title, labels: changelog.presented_no_changelog_labels)
end
end
diff --git a/danger/changes_size/Dangerfile b/danger/changes_size/Dangerfile
index 941afeeba64..2c1d59427af 100644
--- a/danger/changes_size/Dangerfile
+++ b/danger/changes_size/Dangerfile
@@ -1,7 +1,7 @@
# FIXME: git.info_for_file raises the following error
# /usr/local/bundle/gems/git-1.4.0/lib/git/lib.rb:956:in `command': (Danger::DSLError)
# [!] Invalid `Dangerfile` file:
-# [!] Invalid `Dangerfile` file: git '--git-dir=/builds/gitlab-org/gitlab-foss/.git' '--work-tree=/builds/gitlab-org/gitlab-foss' cat-file '-t' '' 2>&1:fatal: Not a valid object name
+# [!] Invalid `Dangerfile` file: git '--git-dir=/builds/gitlab-org/gitlab/.git' '--work-tree=/builds/gitlab-org/gitlab' cat-file '-t' '' 2>&1:fatal: Not a valid object name
# This seems to be the same as https://github.com/danger/danger/issues/535.
# locale_files_updated = git.modified_files.select { |path| path.start_with?('locale') }
diff --git a/danger/database/Dangerfile b/danger/database/Dangerfile
index fc6c5130fdc..56624c0b897 100644
--- a/danger/database/Dangerfile
+++ b/danger/database/Dangerfile
@@ -20,7 +20,7 @@ changes are reviewed, take the following steps:
1. Ensure the merge request has ~database and ~"database::review pending" labels.
If the merge request modifies database files, Danger will do this for you.
-1. Use the [Database changes checklist](https://gitlab.com/gitlab-org/gitlab-foss/blob/master/.gitlab/merge_request_templates/Database%20changes.md)
+1. Use the [Database changes checklist](https://gitlab.com/gitlab-org/gitlab/blob/master/.gitlab/merge_request_templates/Database%20changes.md)
template or add the appropriate items to the MR description.
1. Assign and mention the database reviewer suggested by Reviewer Roulette.
MSG
diff --git a/danger/plugins/changelog.rb b/danger/plugins/changelog.rb
new file mode 100644
index 00000000000..84f399e9e97
--- /dev/null
+++ b/danger/plugins/changelog.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+require_relative '../../lib/gitlab/danger/changelog'
+
+module Danger
+ class Changelog < Plugin
+ # Put the helper code somewhere it can be tested
+ include Gitlab::Danger::Changelog
+ end
+end
diff --git a/danger/prettier/Dangerfile b/danger/prettier/Dangerfile
index 0be75db8baa..ee27aaf9228 100644
--- a/danger/prettier/Dangerfile
+++ b/danger/prettier/Dangerfile
@@ -36,6 +36,6 @@ if GitlabDanger.new(helper.gitlab_helper).ci?
Also consider auto-formatting [on-save].
- [on-save]: https://docs.gitlab.com/ee/development/new_fe_guide/style/prettier.html
+ [on-save]: https://docs.gitlab.com/ee/development/fe_guide/tooling.html#formatting-with-prettier
MARKDOWN
end
diff --git a/danger/roulette/Dangerfile b/danger/roulette/Dangerfile
index 42fc3831c14..173cf4e0ea2 100644
--- a/danger/roulette/Dangerfile
+++ b/danger/roulette/Dangerfile
@@ -27,7 +27,7 @@ UNKNOWN_FILES_MESSAGE = <<MARKDOWN
These files couldn't be categorised, so Danger was unable to suggest a reviewer.
Please consider creating a merge request to
-[add support](https://gitlab.com/gitlab-org/gitlab-foss/blob/master/lib/gitlab/danger/helper.rb)
+[add support](https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/danger/helper.rb)
for them.
MARKDOWN
@@ -46,7 +46,7 @@ def spin_for_category(team, project, category, branch_name)
end
# TODO: take CODEOWNERS into account?
- # https://gitlab.com/gitlab-org/gitlab-foss/issues/57653
+ # https://gitlab.com/gitlab-org/gitlab/issues/26723
# Make traintainers have triple the chance to be picked as a reviewer
reviewer = roulette.spin_for_person(reviewers + traintainers + traintainers, random: random)
diff --git a/db/fixtures/development/01_admin.rb b/db/fixtures/development/01_admin.rb
index 1e260236dc5..46b114dd07b 100644
--- a/db/fixtures/development/01_admin.rb
+++ b/db/fixtures/development/01_admin.rb
@@ -1,4 +1,4 @@
-require './spec/support/sidekiq'
+require './spec/support/sidekiq_middleware'
Gitlab::Seeder.quiet do
User.create!(
diff --git a/db/fixtures/development/02_users.rb b/db/fixtures/development/02_users.rb
index 6e0b37d7258..909d10cbb40 100644
--- a/db/fixtures/development/02_users.rb
+++ b/db/fixtures/development/02_users.rb
@@ -5,7 +5,6 @@ class Gitlab::Seeder::Users
RANDOM_USERS_COUNT = 20
MASS_USERS_COUNT = ENV['CI'] ? 10 : 1_000_000
- MASS_INSERT_USERNAME_START = 'mass_insert_user_'
attr_reader :opts
@@ -29,7 +28,7 @@ class Gitlab::Seeder::Users
ActiveRecord::Base.connection.execute <<~SQL
INSERT INTO users (username, name, email, confirmed_at, projects_limit, encrypted_password)
SELECT
- '#{MASS_INSERT_USERNAME_START}' || seq,
+ '#{Gitlab::Seeder::MASS_INSERT_USER_START}' || seq,
'Seed user ' || seq,
'seed_user' || seq || '@example.com',
to_timestamp(seq),
diff --git a/db/fixtures/development/03_project.rb b/db/fixtures/development/03_project.rb
index 87ef65276eb..596c5e81a2e 100644
--- a/db/fixtures/development/03_project.rb
+++ b/db/fixtures/development/03_project.rb
@@ -1,4 +1,4 @@
-require './spec/support/sidekiq'
+require './spec/support/sidekiq_middleware'
class Gitlab::Seeder::Projects
include ActionView::Helpers::NumberHelper
@@ -52,7 +52,6 @@ class Gitlab::Seeder::Projects
internal: 1, # 1m projects +
public: 1 # 1m projects = 5m total
}
- MASS_INSERT_NAME_START = 'mass_insert_project_'
def seed!
Sidekiq::Testing.inline! do
@@ -142,6 +141,10 @@ class Gitlab::Seeder::Projects
# the `after_commit` queue to ensure the job is run now.
project.send(:_run_after_commit_queue)
project.import_state.send(:_run_after_commit_queue)
+
+ # Expire repository cache after import to ensure
+ # valid_repo? call below returns a correct answer
+ project.repository.expire_all_method_caches
end
if project.valid? && project.valid_repo?
@@ -167,7 +170,7 @@ class Gitlab::Seeder::Projects
INSERT INTO projects (name, path, creator_id, namespace_id, visibility_level, created_at, updated_at)
SELECT
'Seed project ' || seq || ' ' || ('{#{visibility_per_user}}'::text[])[seq] AS project_name,
- 'mass_insert_project_' || ('{#{visibility_per_user}}'::text[])[seq] || '_' || seq AS project_path,
+ '#{Gitlab::Seeder::MASS_INSERT_PROJECT_START}' || ('{#{visibility_per_user}}'::text[])[seq] || '_' || seq AS project_path,
u.id AS user_id,
n.id AS namespace_id,
('{#{visibility_level_per_user}}'::int[])[seq] AS visibility_level,
diff --git a/db/fixtures/development/06_teams.rb b/db/fixtures/development/06_teams.rb
index 79ea96bf30e..94d3aa59710 100644
--- a/db/fixtures/development/06_teams.rb
+++ b/db/fixtures/development/06_teams.rb
@@ -1,4 +1,4 @@
-require './spec/support/sidekiq'
+require './spec/support/sidekiq_middleware'
Sidekiq::Testing.inline! do
Gitlab::Seeder.quiet do
diff --git a/db/fixtures/development/07_milestones.rb b/db/fixtures/development/07_milestones.rb
index 1194bb3fe6f..8a282562335 100644
--- a/db/fixtures/development/07_milestones.rb
+++ b/db/fixtures/development/07_milestones.rb
@@ -1,4 +1,4 @@
-require './spec/support/sidekiq'
+require './spec/support/sidekiq_middleware'
Gitlab::Seeder.quiet do
Project.not_mass_generated.each do |project|
diff --git a/db/fixtures/development/09_issues.rb b/db/fixtures/development/09_issues.rb
index 582a5203d1d..7487a57fdb6 100644
--- a/db/fixtures/development/09_issues.rb
+++ b/db/fixtures/development/09_issues.rb
@@ -1,4 +1,4 @@
-require './spec/support/sidekiq'
+require './spec/support/sidekiq_middleware'
Gitlab::Seeder.quiet do
Rake::Task["gitlab:seed:issues"].invoke
diff --git a/db/fixtures/development/10_merge_requests.rb b/db/fixtures/development/10_merge_requests.rb
index 29f2fabbd5f..77650ebb1bc 100644
--- a/db/fixtures/development/10_merge_requests.rb
+++ b/db/fixtures/development/10_merge_requests.rb
@@ -1,4 +1,4 @@
-require './spec/support/sidekiq'
+require './spec/support/sidekiq_middleware'
Gitlab::Seeder.quiet do
# Limit the number of merge requests per project to avoid long seeds
diff --git a/db/fixtures/development/11_keys.rb b/db/fixtures/development/11_keys.rb
index 13eadc35e07..eeee2388d01 100644
--- a/db/fixtures/development/11_keys.rb
+++ b/db/fixtures/development/11_keys.rb
@@ -1,4 +1,4 @@
-require './spec/support/sidekiq'
+require './spec/support/sidekiq_middleware'
# Creating keys runs a gitlab-shell worker. Since we may not have the right
diff --git a/db/fixtures/development/12_snippets.rb b/db/fixtures/development/12_snippets.rb
index 0ee9058a20b..3fa172c8f0f 100644
--- a/db/fixtures/development/12_snippets.rb
+++ b/db/fixtures/development/12_snippets.rb
@@ -1,4 +1,4 @@
-require './spec/support/sidekiq'
+require './spec/support/sidekiq_middleware'
Gitlab::Seeder.quiet do
content =<<eos
diff --git a/db/fixtures/development/13_comments.rb b/db/fixtures/development/13_comments.rb
index bc2d74c8034..8f63ca302c6 100644
--- a/db/fixtures/development/13_comments.rb
+++ b/db/fixtures/development/13_comments.rb
@@ -1,4 +1,4 @@
-require './spec/support/sidekiq'
+require './spec/support/sidekiq_middleware'
Gitlab::Seeder.quiet do
Issue.find_each do |issue|
diff --git a/db/fixtures/development/14_pipelines.rb b/db/fixtures/development/14_pipelines.rb
index 468caac23f9..4e9131c1a46 100644
--- a/db/fixtures/development/14_pipelines.rb
+++ b/db/fixtures/development/14_pipelines.rb
@@ -1,4 +1,4 @@
-require './spec/support/sidekiq'
+require './spec/support/sidekiq_middleware'
class Gitlab::Seeder::Pipelines
STAGES = %w[build test deploy notify]
diff --git a/db/fixtures/development/15_award_emoji.rb b/db/fixtures/development/15_award_emoji.rb
index a9dcc048586..2b69a6c26ab 100644
--- a/db/fixtures/development/15_award_emoji.rb
+++ b/db/fixtures/development/15_award_emoji.rb
@@ -1,4 +1,4 @@
-require './spec/support/sidekiq'
+require './spec/support/sidekiq_middleware'
Gitlab::Seeder.quiet do
EMOJI = Gitlab::Emoji.emojis.keys
diff --git a/db/fixtures/development/16_protected_branches.rb b/db/fixtures/development/16_protected_branches.rb
index 2b492ac1f61..e6615b20f9c 100644
--- a/db/fixtures/development/16_protected_branches.rb
+++ b/db/fixtures/development/16_protected_branches.rb
@@ -1,4 +1,4 @@
-require './spec/support/sidekiq'
+require './spec/support/sidekiq_middleware'
Gitlab::Seeder.quiet do
admin_user = User.find(1)
diff --git a/db/fixtures/development/17_cycle_analytics.rb b/db/fixtures/development/17_cycle_analytics.rb
index 606a4cb1dde..2532b71ad26 100644
--- a/db/fixtures/development/17_cycle_analytics.rb
+++ b/db/fixtures/development/17_cycle_analytics.rb
@@ -1,4 +1,4 @@
-require './spec/support/sidekiq'
+require './spec/support/sidekiq_middleware'
require './spec/support/helpers/test_env'
class Gitlab::Seeder::CycleAnalytics
diff --git a/db/fixtures/development/19_environments.rb b/db/fixtures/development/19_environments.rb
index 08363804216..124f9d74ddd 100644
--- a/db/fixtures/development/19_environments.rb
+++ b/db/fixtures/development/19_environments.rb
@@ -1,4 +1,4 @@
-require './spec/support/sidekiq'
+require './spec/support/sidekiq_middleware'
class Gitlab::Seeder::Environments
def initialize(project)
diff --git a/db/fixtures/development/20_nested_groups.rb b/db/fixtures/development/20_nested_groups.rb
index 3d95e243f8a..8f64dfbd644 100644
--- a/db/fixtures/development/20_nested_groups.rb
+++ b/db/fixtures/development/20_nested_groups.rb
@@ -1,4 +1,4 @@
-require './spec/support/sidekiq'
+require './spec/support/sidekiq_middleware'
Sidekiq::Testing.inline! do
Gitlab::Seeder.quiet do
diff --git a/db/fixtures/development/21_conversational_development_index_metrics.rb b/db/fixtures/development/21_dev_ops_score_metrics.rb
index 4cd0a82ed1a..afea7fb4bd0 100644
--- a/db/fixtures/development/21_conversational_development_index_metrics.rb
+++ b/db/fixtures/development/21_dev_ops_score_metrics.rb
@@ -1,5 +1,5 @@
Gitlab::Seeder.quiet do
- conversational_development_index_metric = ConversationalDevelopmentIndex::Metric.new(
+ dev_ops_score_metric = DevOpsScore::Metric.new(
leader_issues: 10.2,
instance_issues: 3.2,
@@ -31,10 +31,10 @@ Gitlab::Seeder.quiet do
instance_service_desk_issues: 15.1
)
- if conversational_development_index_metric.save
+ if dev_ops_score_metric.save
print '.'
else
- puts conversational_development_index_metric.errors.full_messages
+ puts dev_ops_score_metric.errors.full_messages
print 'F'
end
end
diff --git a/db/fixtures/development/24_forks.rb b/db/fixtures/development/24_forks.rb
index fa16b2a1d93..cb6dbb7504d 100644
--- a/db/fixtures/development/24_forks.rb
+++ b/db/fixtures/development/24_forks.rb
@@ -1,4 +1,4 @@
-require './spec/support/sidekiq'
+require './spec/support/sidekiq_middleware'
Sidekiq::Testing.inline! do
Gitlab::Seeder.quiet do
diff --git a/db/fixtures/development/25_api_personal_access_token.rb b/db/fixtures/development/25_api_personal_access_token.rb
index a2e6c674c1f..0a8fd86b440 100644
--- a/db/fixtures/development/25_api_personal_access_token.rb
+++ b/db/fixtures/development/25_api_personal_access_token.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-require './spec/support/sidekiq'
+require './spec/support/sidekiq_middleware'
# Create an api access token for root user with the value: ypCa3Dzb23o5nvsixwPA
Gitlab::Seeder.quiet do
diff --git a/db/migrate/20180113220114_rework_redirect_routes_indexes.rb b/db/migrate/20180113220114_rework_redirect_routes_indexes.rb
index 2b9365ce827..ca7ce6286dc 100644
--- a/db/migrate/20180113220114_rework_redirect_routes_indexes.rb
+++ b/db/migrate/20180113220114_rework_redirect_routes_indexes.rb
@@ -25,10 +25,6 @@ class ReworkRedirectRoutesIndexes < ActiveRecord::Migration[4.2]
remove_concurrent_index(:redirect_routes, :permanent)
end
- # If we're on MySQL then the existing index on path is ok. But on
- # Postgres we need to clean things up:
- break unless Gitlab::Database.postgresql?
-
if_not_exists = Gitlab::Database.version.to_f >= 9.5 ? "IF NOT EXISTS" : ""
# Unique index on lower(path) across both types of redirect_routes:
@@ -53,8 +49,6 @@ class ReworkRedirectRoutesIndexes < ActiveRecord::Migration[4.2]
disable_statement_timeout do
add_concurrent_index(:redirect_routes, :permanent)
- break unless Gitlab::Database.postgresql?
-
execute("CREATE INDEX CONCURRENTLY #{OLD_INDEX_NAME_PATH_TPOPS} ON redirect_routes (path varchar_pattern_ops);")
execute("CREATE INDEX CONCURRENTLY #{OLD_INDEX_NAME_PATH_LOWER} ON redirect_routes (LOWER(path));")
diff --git a/db/migrate/20180215181245_users_name_lower_index.rb b/db/migrate/20180215181245_users_name_lower_index.rb
index fa1a115a78a..46f02885c3f 100644
--- a/db/migrate/20180215181245_users_name_lower_index.rb
+++ b/db/migrate/20180215181245_users_name_lower_index.rb
@@ -11,15 +11,11 @@ class UsersNameLowerIndex < ActiveRecord::Migration[4.2]
disable_ddl_transaction!
def up
- return unless Gitlab::Database.postgresql?
-
# On GitLab.com this produces an index with a size of roughly 60 MB.
execute "CREATE INDEX CONCURRENTLY #{INDEX_NAME} ON users (LOWER(name))"
end
def down
- return unless Gitlab::Database.postgresql?
-
execute "DROP INDEX CONCURRENTLY IF EXISTS #{INDEX_NAME}"
end
end
diff --git a/db/migrate/20180308052825_add_section_name_id_index_on_ci_build_trace_sections.rb b/db/migrate/20180308052825_add_section_name_id_index_on_ci_build_trace_sections.rb
index 4d2ab7d757f..58a1d2b12d5 100644
--- a/db/migrate/20180308052825_add_section_name_id_index_on_ci_build_trace_sections.rb
+++ b/db/migrate/20180308052825_add_section_name_id_index_on_ci_build_trace_sections.rb
@@ -8,16 +8,10 @@ class AddSectionNameIdIndexOnCiBuildTraceSections < ActiveRecord::Migration[4.2]
disable_ddl_transaction!
def up
- # MySQL may already have this as a foreign key
- unless index_exists?(:ci_build_trace_sections, :section_name_id, name: INDEX_NAME)
- add_concurrent_index :ci_build_trace_sections, :section_name_id, name: INDEX_NAME
- end
+ add_concurrent_index :ci_build_trace_sections, :section_name_id, name: INDEX_NAME
end
def down
- # We cannot remove index for MySQL because it's needed for foreign key
- if Gitlab::Database.postgresql?
- remove_concurrent_index :ci_build_trace_sections, :section_name_id, name: INDEX_NAME
- end
+ remove_concurrent_index :ci_build_trace_sections, :section_name_id, name: INDEX_NAME
end
end
diff --git a/db/migrate/20180309121820_reschedule_commits_count_for_merge_request_diff.rb b/db/migrate/20180309121820_reschedule_commits_count_for_merge_request_diff.rb
index ecb06dd4312..3d85a19b82f 100644
--- a/db/migrate/20180309121820_reschedule_commits_count_for_merge_request_diff.rb
+++ b/db/migrate/20180309121820_reschedule_commits_count_for_merge_request_diff.rb
@@ -18,7 +18,7 @@ class RescheduleCommitsCountForMergeRequestDiff < ActiveRecord::Migration[4.2]
def up
say 'Populating the MergeRequestDiff `commits_count` (reschedule)'
- execute("SET statement_timeout TO '60s'") if Gitlab::Database.postgresql?
+ execute("SET statement_timeout TO '60s'")
MergeRequestDiff.where(commits_count: nil).each_batch(of: BATCH_SIZE) do |relation, index|
start_id, end_id = relation.pluck('MIN(id), MAX(id)').first
diff --git a/db/migrate/20180320182229_add_indexes_for_user_activity_queries.rb b/db/migrate/20180320182229_add_indexes_for_user_activity_queries.rb
index a15e1d68a95..ba8ad1b7495 100644
--- a/db/migrate/20180320182229_add_indexes_for_user_activity_queries.rb
+++ b/db/migrate/20180320182229_add_indexes_for_user_activity_queries.rb
@@ -13,28 +13,6 @@ class AddIndexesForUserActivityQueries < ActiveRecord::Migration[4.2]
def down
remove_concurrent_index :events, [:author_id, :project_id] if index_exists?(:events, [:author_id, :project_id])
- patch_foreign_keys do
- remove_concurrent_index :user_interacted_projects, :user_id if index_exists?(:user_interacted_projects, :user_id)
- end
- end
-
- private
-
- def patch_foreign_keys
- return yield if Gitlab::Database.postgresql?
-
- # MySQL doesn't like to remove the index with a foreign key using it.
- remove_foreign_key :user_interacted_projects, :users if fk_exists?(:user_interacted_projects, :user_id)
-
- yield
-
- # Let's re-add the foreign key using the existing index on (user_id, project_id)
- add_concurrent_foreign_key :user_interacted_projects, :users, column: :user_id unless fk_exists?(:user_interacted_projects, :user_id)
- end
-
- def fk_exists?(table, column)
- foreign_keys(table).any? do |key|
- key.options[:column] == column.to_s
- end
+ remove_concurrent_index :user_interacted_projects, :user_id if index_exists?(:user_interacted_projects, :user_id)
end
end
diff --git a/db/migrate/20180504195842_project_name_lower_index.rb b/db/migrate/20180504195842_project_name_lower_index.rb
index fa74330d5d9..e789837193f 100644
--- a/db/migrate/20180504195842_project_name_lower_index.rb
+++ b/db/migrate/20180504195842_project_name_lower_index.rb
@@ -11,16 +11,12 @@ class ProjectNameLowerIndex < ActiveRecord::Migration[4.2]
disable_ddl_transaction!
def up
- return unless Gitlab::Database.postgresql?
-
disable_statement_timeout do
execute "CREATE INDEX CONCURRENTLY #{INDEX_NAME} ON projects (LOWER(name))"
end
end
def down
- return unless Gitlab::Database.postgresql?
-
disable_statement_timeout do
execute "DROP INDEX CONCURRENTLY IF EXISTS #{INDEX_NAME}"
end
diff --git a/db/migrate/20180517082340_add_not_null_constraints_to_project_authorizations.rb b/db/migrate/20180517082340_add_not_null_constraints_to_project_authorizations.rb
index 36f4770ff32..859e341d04b 100644
--- a/db/migrate/20180517082340_add_not_null_constraints_to_project_authorizations.rb
+++ b/db/migrate/20180517082340_add_not_null_constraints_to_project_authorizations.rb
@@ -5,34 +5,20 @@ class AddNotNullConstraintsToProjectAuthorizations < ActiveRecord::Migration[4.2
DOWNTIME = false
def up
- if Gitlab::Database.postgresql?
- # One-pass version for PostgreSQL
- execute <<~SQL
+ execute <<~SQL
ALTER TABLE project_authorizations
ALTER COLUMN user_id SET NOT NULL,
ALTER COLUMN project_id SET NOT NULL,
ALTER COLUMN access_level SET NOT NULL
- SQL
- else
- change_column_null :project_authorizations, :user_id, false
- change_column_null :project_authorizations, :project_id, false
- change_column_null :project_authorizations, :access_level, false
- end
+ SQL
end
def down
- if Gitlab::Database.postgresql?
- # One-pass version for PostgreSQL
- execute <<~SQL
+ execute <<~SQL
ALTER TABLE project_authorizations
ALTER COLUMN user_id DROP NOT NULL,
ALTER COLUMN project_id DROP NOT NULL,
ALTER COLUMN access_level DROP NOT NULL
- SQL
- else
- change_column_null :project_authorizations, :user_id, true
- change_column_null :project_authorizations, :project_id, true
- change_column_null :project_authorizations, :access_level, true
- end
+ SQL
end
end
diff --git a/db/migrate/20180711103851_drop_duplicate_protected_tags.rb b/db/migrate/20180711103851_drop_duplicate_protected_tags.rb
index 6166aa65f1f..94f72aa162d 100644
--- a/db/migrate/20180711103851_drop_duplicate_protected_tags.rb
+++ b/db/migrate/20180711103851_drop_duplicate_protected_tags.rb
@@ -29,14 +29,7 @@ class DropDuplicateProtectedTags < ActiveRecord::Migration[4.2]
.where(project_id: projects)
.where.not(id: ids)
- if Gitlab::Database.postgresql?
- tags.delete_all
- else
- # Workaround needed for MySQL
- sql = "SELECT id FROM (#{tags.to_sql}) protected_tags"
-
- ProtectedTag.where("id IN (#{sql})").delete_all # rubocop:disable GitlabSecurity/SqlInjection
- end
+ tags.delete_all
end
end
diff --git a/db/migrate/20180927073410_add_index_to_project_deploy_tokens_deploy_token_id.rb b/db/migrate/20180927073410_add_index_to_project_deploy_tokens_deploy_token_id.rb
index 80577c52a01..edfcad81202 100644
--- a/db/migrate/20180927073410_add_index_to_project_deploy_tokens_deploy_token_id.rb
+++ b/db/migrate/20180927073410_add_index_to_project_deploy_tokens_deploy_token_id.rb
@@ -8,11 +8,10 @@ class AddIndexToProjectDeployTokensDeployTokenId < ActiveRecord::Migration[4.2]
disable_ddl_transaction!
def up
- # MySQL already has index inserted
- add_concurrent_index :project_deploy_tokens, :deploy_token_id if Gitlab::Database.postgresql?
+ add_concurrent_index :project_deploy_tokens, :deploy_token_id
end
def down
- remove_concurrent_index(:project_deploy_tokens, :deploy_token_id) if Gitlab::Database.postgresql?
+ remove_concurrent_index(:project_deploy_tokens, :deploy_token_id)
end
end
diff --git a/db/migrate/20190402150158_backport_enterprise_schema.rb b/db/migrate/20190402150158_backport_enterprise_schema.rb
index 3f13b68c2f3..d1e911a04e6 100644
--- a/db/migrate/20190402150158_backport_enterprise_schema.rb
+++ b/db/migrate/20190402150158_backport_enterprise_schema.rb
@@ -464,15 +464,12 @@ class BackportEnterpriseSchema < ActiveRecord::Migration[5.0]
end
def update_environments
- return unless Gitlab::Database.postgresql?
return if index_exists?(:environments, :name, name: 'index_environments_on_name_varchar_pattern_ops')
execute('CREATE INDEX CONCURRENTLY index_environments_on_name_varchar_pattern_ops ON environments (name varchar_pattern_ops);')
end
def revert_environments
- return unless Gitlab::Database.postgresql?
-
remove_concurrent_index_by_name(
:environments,
'index_environments_on_name_varchar_pattern_ops'
diff --git a/db/migrate/20190606202100_add_name_to_badges.rb b/db/migrate/20190606202100_add_name_to_badges.rb
new file mode 100644
index 00000000000..472e1202ad8
--- /dev/null
+++ b/db/migrate/20190606202100_add_name_to_badges.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+class AddNameToBadges < ActiveRecord::Migration[5.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ def change
+ add_column :badges, :name, :string, null: true, limit: 255
+ end
+end
diff --git a/db/migrate/20190920122420_add_max_personal_access_token_lifetime_to_application_settings.rb b/db/migrate/20190920122420_add_max_personal_access_token_lifetime_to_application_settings.rb
new file mode 100644
index 00000000000..5a6e810dede
--- /dev/null
+++ b/db/migrate/20190920122420_add_max_personal_access_token_lifetime_to_application_settings.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class AddMaxPersonalAccessTokenLifetimeToApplicationSettings < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def change
+ add_column :application_settings, :max_personal_access_token_lifetime, :integer
+ end
+end
diff --git a/db/migrate/20191003130045_create_issue_user_mentions.rb b/db/migrate/20191003130045_create_issue_user_mentions.rb
new file mode 100644
index 00000000000..e465a307f44
--- /dev/null
+++ b/db/migrate/20191003130045_create_issue_user_mentions.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class CreateIssueUserMentions < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def change
+ create_table :issue_user_mentions do |t|
+ t.references :issue, type: :integer, index: false, null: false, foreign_key: { on_delete: :cascade }
+ t.references :note, type: :integer,
+ index: { where: 'note_id IS NOT NULL', unique: true }, null: true, foreign_key: { on_delete: :cascade }
+ t.integer :mentioned_users_ids, array: true
+ t.integer :mentioned_projects_ids, array: true
+ t.integer :mentioned_groups_ids, array: true
+ end
+
+ add_index :issue_user_mentions, [:issue_id], where: 'note_id is null', unique: true, name: 'issue_user_mentions_on_issue_id_index'
+ add_index :issue_user_mentions, [:issue_id, :note_id], unique: true, name: 'issue_user_mentions_on_issue_id_and_note_id_index'
+ end
+end
diff --git a/db/migrate/20191003150045_create_merge_request_user_mentions.rb b/db/migrate/20191003150045_create_merge_request_user_mentions.rb
new file mode 100644
index 00000000000..0ec45020127
--- /dev/null
+++ b/db/migrate/20191003150045_create_merge_request_user_mentions.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class CreateMergeRequestUserMentions < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def change
+ create_table :merge_request_user_mentions do |t|
+ t.references :merge_request, type: :integer, index: false, null: false, foreign_key: { on_delete: :cascade }
+ t.references :note, type: :integer,
+ index: { where: 'note_id IS NOT NULL', unique: true }, null: true, foreign_key: { on_delete: :cascade }
+ t.integer :mentioned_users_ids, array: true
+ t.integer :mentioned_projects_ids, array: true
+ t.integer :mentioned_groups_ids, array: true
+ end
+
+ add_index :merge_request_user_mentions, [:merge_request_id], where: 'note_id is null', unique: true, name: 'merge_request_user_mentions_on_mr_id_index'
+ add_index :merge_request_user_mentions, [:merge_request_id, :note_id], unique: true, name: 'merge_request_user_mentions_on_mr_id_and_note_id_index'
+ end
+end
diff --git a/db/migrate/20191003200045_create_epic_user_mentions.rb b/db/migrate/20191003200045_create_epic_user_mentions.rb
new file mode 100644
index 00000000000..25f9b24f9cc
--- /dev/null
+++ b/db/migrate/20191003200045_create_epic_user_mentions.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class CreateEpicUserMentions < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def change
+ create_table :epic_user_mentions do |t|
+ t.references :epic, type: :integer, index: false, null: false, foreign_key: { on_delete: :cascade }
+ t.references :note, type: :integer,
+ index: { where: 'note_id IS NOT NULL', unique: true }, null: true, foreign_key: { on_delete: :cascade }
+ t.integer :mentioned_users_ids, array: true
+ t.integer :mentioned_projects_ids, array: true
+ t.integer :mentioned_groups_ids, array: true
+ end
+
+ add_index :epic_user_mentions, [:epic_id], where: 'note_id is null', unique: true, name: 'epic_user_mentions_on_epic_id_index'
+ add_index :epic_user_mentions, [:epic_id, :note_id], unique: true, name: 'epic_user_mentions_on_epic_id_and_note_id_index'
+ end
+end
diff --git a/db/migrate/20191003250045_create_commit_user_mentions.rb b/db/migrate/20191003250045_create_commit_user_mentions.rb
new file mode 100644
index 00000000000..135c115c725
--- /dev/null
+++ b/db/migrate/20191003250045_create_commit_user_mentions.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+class CreateCommitUserMentions < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def change
+ create_table :commit_user_mentions do |t|
+ t.references :note, type: :integer,
+ index: { unique: true }, null: false, foreign_key: { on_delete: :cascade }
+ t.binary :commit_id, null: false
+ t.integer :mentioned_users_ids, array: true
+ t.integer :mentioned_projects_ids, array: true
+ t.integer :mentioned_groups_ids, array: true
+ end
+
+ add_index :commit_user_mentions, [:commit_id, :note_id], name: 'commit_user_mentions_on_commit_id_and_note_id_index'
+ end
+end
diff --git a/db/migrate/20191003300045_create_snippet_user_mentions.rb b/db/migrate/20191003300045_create_snippet_user_mentions.rb
new file mode 100644
index 00000000000..fb7681d6e33
--- /dev/null
+++ b/db/migrate/20191003300045_create_snippet_user_mentions.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class CreateSnippetUserMentions < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def change
+ create_table :snippet_user_mentions do |t|
+ t.references :snippet, type: :integer, index: false, null: false, foreign_key: { on_delete: :cascade }
+ t.references :note, type: :integer,
+ index: { where: 'note_id IS NOT NULL', unique: true }, null: true, foreign_key: { on_delete: :cascade }
+ t.integer :mentioned_users_ids, array: true
+ t.integer :mentioned_projects_ids, array: true
+ t.integer :mentioned_groups_ids, array: true
+ end
+
+ add_index :snippet_user_mentions, [:snippet_id], where: 'note_id is null', unique: true, name: 'snippet_user_mentions_on_snippet_id_index'
+ add_index :snippet_user_mentions, [:snippet_id, :note_id], unique: true, name: 'snippet_user_mentions_on_snippet_id_and_note_id_index'
+ end
+end
diff --git a/db/migrate/20191003350045_create_design_user_mentions.rb b/db/migrate/20191003350045_create_design_user_mentions.rb
new file mode 100644
index 00000000000..149ee5bd124
--- /dev/null
+++ b/db/migrate/20191003350045_create_design_user_mentions.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class CreateDesignUserMentions < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def change
+ create_table :design_user_mentions do |t|
+ t.references :design, type: :integer, index: false, null: false,
+ foreign_key: { to_table: :design_management_designs, column: :design_id, on_delete: :cascade }
+ t.references :note, type: :integer,
+ index: { unique: true }, null: false, foreign_key: { on_delete: :cascade }
+ t.integer :mentioned_users_ids, array: true
+ t.integer :mentioned_projects_ids, array: true
+ t.integer :mentioned_groups_ids, array: true
+ end
+
+ add_index :design_user_mentions, [:design_id, :note_id], name: 'design_user_mentions_on_design_id_and_note_id_index'
+ end
+end
diff --git a/db/migrate/20191004151428_add_auto_stop_in_to_environments.rb b/db/migrate/20191004151428_add_auto_stop_in_to_environments.rb
new file mode 100644
index 00000000000..860e52d420c
--- /dev/null
+++ b/db/migrate/20191004151428_add_auto_stop_in_to_environments.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class AddAutoStopInToEnvironments < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def change
+ add_column :environments, :auto_stop_at, :datetime_with_timezone
+ end
+end
diff --git a/db/migrate/20191014123159_add_expire_notification_delivered_to_personal_access_tokens.rb b/db/migrate/20191014123159_add_expire_notification_delivered_to_personal_access_tokens.rb
new file mode 100644
index 00000000000..f172d3bdcbd
--- /dev/null
+++ b/db/migrate/20191014123159_add_expire_notification_delivered_to_personal_access_tokens.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class AddExpireNotificationDeliveredToPersonalAccessTokens < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_column_with_default :personal_access_tokens, :expire_notification_delivered, :boolean, default: false
+ end
+
+ def down
+ remove_column :personal_access_tokens, :expire_notification_delivered
+ end
+end
diff --git a/db/migrate/20191023093207_add_comment_actions_to_services.rb b/db/migrate/20191023093207_add_comment_actions_to_services.rb
new file mode 100644
index 00000000000..f3fc12ac7c7
--- /dev/null
+++ b/db/migrate/20191023093207_add_comment_actions_to_services.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class AddCommentActionsToServices < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_column_with_default(:services, :comment_on_event_enabled, :boolean, default: true)
+ end
+
+ def down
+ remove_column(:services, :comment_on_event_enabled)
+ end
+end
diff --git a/db/migrate/20191025092748_add_secret_token_to_snippet.rb b/db/migrate/20191025092748_add_secret_token_to_snippet.rb
new file mode 100644
index 00000000000..0649f58d23e
--- /dev/null
+++ b/db/migrate/20191025092748_add_secret_token_to_snippet.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+class AddSecretTokenToSnippet < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def change
+ add_column :snippets, :encrypted_secret_token, :string, limit: 255
+ add_column :snippets, :encrypted_secret_token_iv, :string, limit: 255
+ end
+end
diff --git a/db/migrate/20191026120008_add_promoted_to_epic_to_issues.rb b/db/migrate/20191026120008_add_promoted_to_epic_to_issues.rb
new file mode 100644
index 00000000000..158dbf69bcc
--- /dev/null
+++ b/db/migrate/20191026120008_add_promoted_to_epic_to_issues.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+# See http://doc.gitlab.com/ce/development/migration_style_guide.html
+# for more information on how to write migrations for GitLab.
+
+class AddPromotedToEpicToIssues < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def up
+ add_column :issues, :promoted_to_epic_id, :integer
+ end
+
+ def down
+ remove_column :issues, :promoted_to_epic_id
+ end
+end
diff --git a/db/migrate/20191026120112_add_promoted_to_epic_to_issues_index.rb b/db/migrate/20191026120112_add_promoted_to_epic_to_issues_index.rb
new file mode 100644
index 00000000000..649c2f7abe5
--- /dev/null
+++ b/db/migrate/20191026120112_add_promoted_to_epic_to_issues_index.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+# See http://doc.gitlab.com/ce/development/migration_style_guide.html
+# for more information on how to write migrations for GitLab.
+
+class AddPromotedToEpicToIssuesIndex < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_foreign_key :issues, :epics, column: :promoted_to_epic_id, on_delete: :nullify
+ add_concurrent_index :issues, :promoted_to_epic_id, where: 'promoted_to_epic_id IS NOT NULL'
+ end
+
+ def down
+ remove_concurrent_index(:issues, :promoted_to_epic_id)
+ remove_foreign_key :issues, column: :promoted_to_epic_id
+ end
+end
diff --git a/db/migrate/20191028130054_add_max_issue_weight_to_list.rb b/db/migrate/20191028130054_add_max_issue_weight_to_list.rb
new file mode 100644
index 00000000000..eec7c42c907
--- /dev/null
+++ b/db/migrate/20191028130054_add_max_issue_weight_to_list.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class AddMaxIssueWeightToList < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ disable_ddl_transaction!
+
+ DOWNTIME = false
+
+ def up
+ add_column_with_default :lists, :max_issue_weight, :integer, default: 0
+ end
+
+ def down
+ remove_column :lists, :max_issue_weight
+ end
+end
diff --git a/db/migrate/20191105134413_create_service_desk_settings.rb b/db/migrate/20191105134413_create_service_desk_settings.rb
new file mode 100644
index 00000000000..ee026b6f26d
--- /dev/null
+++ b/db/migrate/20191105134413_create_service_desk_settings.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+class CreateServiceDeskSettings < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def change
+ create_table :service_desk_settings, id: false do |t|
+ t.references :project,
+ primary_key: true,
+ default: nil,
+ null: false,
+ index: false,
+ foreign_key: { on_delete: :cascade }
+
+ t.string :issue_template_key, limit: 255
+ end
+ end
+end
diff --git a/db/migrate/20191105155113_add_secret_to_snippet.rb b/db/migrate/20191105155113_add_secret_to_snippet.rb
new file mode 100644
index 00000000000..ae514d48494
--- /dev/null
+++ b/db/migrate/20191105155113_add_secret_to_snippet.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+class AddSecretToSnippet < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ unless column_exists?(:snippets, :secret)
+ add_column_with_default :snippets, :secret, :boolean, default: false
+ end
+
+ add_concurrent_index :snippets, [:visibility_level, :secret]
+ remove_concurrent_index :snippets, :visibility_level
+ end
+
+ def down
+ add_concurrent_index :snippets, :visibility_level
+ remove_concurrent_index :snippets, [:visibility_level, :secret]
+
+ if column_exists?(:snippets, :secret)
+ remove_column :snippets, :secret
+ end
+ end
+end
diff --git a/db/migrate/20191106144901_add_state_to_merge_trains.rb b/db/migrate/20191106144901_add_state_to_merge_trains.rb
new file mode 100644
index 00000000000..e2256705f53
--- /dev/null
+++ b/db/migrate/20191106144901_add_state_to_merge_trains.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+class AddStateToMergeTrains < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ MERGE_TRAIN_STATUS_CREATED = 0 # Equivalent to MergeTrain.statuses[:created]
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_column_with_default :merge_trains, :status, :integer, limit: 2, default: MERGE_TRAIN_STATUS_CREATED
+ end
+
+ def down
+ remove_column :merge_trains, :status
+ end
+end
diff --git a/db/migrate/20191106150931_add_timelog_spent_at_index.rb b/db/migrate/20191106150931_add_timelog_spent_at_index.rb
new file mode 100644
index 00000000000..2412b77d0bf
--- /dev/null
+++ b/db/migrate/20191106150931_add_timelog_spent_at_index.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+# See http://doc.gitlab.com/ce/development/migration_style_guide.html
+# for more information on how to write migrations for GitLab.
+
+class AddTimelogSpentAtIndex < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index :timelogs, :spent_at, where: 'spent_at IS NOT NULL'
+ end
+
+ def down
+ remove_concurrent_index :timelogs, :spent_at, where: 'spent_at IS NOT NULL'
+ end
+end
diff --git a/db/migrate/20191107064946_update_oauth_open_id_requests_foreign_keys.rb b/db/migrate/20191107064946_update_oauth_open_id_requests_foreign_keys.rb
new file mode 100644
index 00000000000..439610758a6
--- /dev/null
+++ b/db/migrate/20191107064946_update_oauth_open_id_requests_foreign_keys.rb
@@ -0,0 +1,29 @@
+# frozen_string_literal: true
+
+class UpdateOauthOpenIdRequestsForeignKeys < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_foreign_key(:oauth_openid_requests, :oauth_access_grants, column: :access_grant_id, on_delete: :cascade, name: new_foreign_key_name)
+ remove_foreign_key_if_exists(:oauth_openid_requests, name: existing_foreign_key_name)
+ end
+
+ def down
+ add_concurrent_foreign_key(:oauth_openid_requests, :oauth_access_grants, column: :access_grant_id, on_delete: false, name: existing_foreign_key_name)
+ remove_foreign_key_if_exists(:oauth_openid_requests, name: new_foreign_key_name)
+ end
+
+ private
+
+ def new_foreign_key_name
+ concurrent_foreign_key_name(:oauth_openid_requests, :access_grant_id)
+ end
+
+ def existing_foreign_key_name
+ 'fk_oauth_openid_requests_oauth_access_grants_access_grant_id'
+ end
+end
diff --git a/db/migrate/20191108031900_create_package_build_info.rb b/db/migrate/20191108031900_create_package_build_info.rb
new file mode 100644
index 00000000000..d0c85e2fb3f
--- /dev/null
+++ b/db/migrate/20191108031900_create_package_build_info.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+class CreatePackageBuildInfo < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def change
+ create_table :packages_build_infos do |t|
+ t.references :package, null: false, foreign_key: { to_table: :packages_packages, on_delete: :cascade }, type: :integer, index: { unique: true }
+ t.references :pipeline, index: true, null: true, foreign_key: { to_table: :ci_pipelines, on_delete: :nullify }, type: :integer
+ end
+ end
+end
diff --git a/db/migrate/20191111175230_add_index_on_ci_pipelines_updated_at.rb b/db/migrate/20191111175230_add_index_on_ci_pipelines_updated_at.rb
new file mode 100644
index 00000000000..566bb16ac65
--- /dev/null
+++ b/db/migrate/20191111175230_add_index_on_ci_pipelines_updated_at.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+class AddIndexOnCiPipelinesUpdatedAt < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+ INDEX_COLUMNS = [:project_id, :status, :updated_at]
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index(:ci_pipelines, INDEX_COLUMNS)
+ end
+
+ def down
+ remove_concurrent_index(:ci_pipelines, INDEX_COLUMNS)
+ end
+end
diff --git a/db/migrate/20191112090226_add_artifacts_to_ci_build_need.rb b/db/migrate/20191112090226_add_artifacts_to_ci_build_need.rb
new file mode 100644
index 00000000000..2fbd003b2e5
--- /dev/null
+++ b/db/migrate/20191112090226_add_artifacts_to_ci_build_need.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+class AddArtifactsToCiBuildNeed < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_column_with_default(:ci_build_needs, :artifacts,
+ :boolean,
+ default: true,
+ allow_null: false)
+ end
+
+ def down
+ remove_column(:ci_build_needs, :artifacts)
+ end
+end
diff --git a/db/migrate/20191112105448_add_index_on_personal_access_tokens_user_id_and_expires_at.rb b/db/migrate/20191112105448_add_index_on_personal_access_tokens_user_id_and_expires_at.rb
new file mode 100644
index 00000000000..1c1dc31ff23
--- /dev/null
+++ b/db/migrate/20191112105448_add_index_on_personal_access_tokens_user_id_and_expires_at.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+class AddIndexOnPersonalAccessTokensUserIdAndExpiresAt < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+ INDEX_NAME = 'index_pat_on_user_id_and_expires_at'
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index :personal_access_tokens, [:user_id, :expires_at], name: INDEX_NAME, using: :btree
+ end
+
+ def down
+ remove_concurrent_index_by_name :personal_access_tokens, INDEX_NAME
+ end
+end
diff --git a/db/migrate/20191114132259_add_mentions_disabled_to_namespaces.rb b/db/migrate/20191114132259_add_mentions_disabled_to_namespaces.rb
new file mode 100644
index 00000000000..dbd69568ef2
--- /dev/null
+++ b/db/migrate/20191114132259_add_mentions_disabled_to_namespaces.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class AddMentionsDisabledToNamespaces < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def change
+ add_column :namespaces, :mentions_disabled, :boolean
+ end
+end
diff --git a/db/migrate/20191115001123_add_index_to_mod_sec_ci_variables.rb b/db/migrate/20191115001123_add_index_to_mod_sec_ci_variables.rb
new file mode 100644
index 00000000000..169ecf5ea41
--- /dev/null
+++ b/db/migrate/20191115001123_add_index_to_mod_sec_ci_variables.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class AddIndexToModSecCiVariables < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index :ci_variables, :project_id, where: "key = 'AUTO_DEVOPS_MODSECURITY_SEC_RULE_ENGINE'"
+ end
+
+ def down
+ remove_concurrent_index :ci_variables, :project_id
+ end
+end
diff --git a/db/migrate/20191115001843_add_index_to_mod_sec_ci_pipeline_variables.rb b/db/migrate/20191115001843_add_index_to_mod_sec_ci_pipeline_variables.rb
new file mode 100644
index 00000000000..6b13f565a11
--- /dev/null
+++ b/db/migrate/20191115001843_add_index_to_mod_sec_ci_pipeline_variables.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class AddIndexToModSecCiPipelineVariables < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index :ci_pipeline_variables, :pipeline_id, where: "key = 'AUTO_DEVOPS_MODSECURITY_SEC_RULE_ENGINE'"
+ end
+
+ def down
+ remove_concurrent_index :ci_pipeline_variables, :pipeline_id
+ end
+end
diff --git a/db/migrate/20191118053631_add_group_deletion_schedules.rb b/db/migrate/20191118053631_add_group_deletion_schedules.rb
new file mode 100644
index 00000000000..6f3ed27e156
--- /dev/null
+++ b/db/migrate/20191118053631_add_group_deletion_schedules.rb
@@ -0,0 +1,28 @@
+# frozen_string_literal: true
+
+class AddGroupDeletionSchedules < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def up
+ create_table :group_deletion_schedules, id: false do |t|
+ t.references :group,
+ foreign_key: { on_delete: :cascade, to_table: :namespaces },
+ default: nil,
+ index: false,
+ primary_key: true
+
+ t.references :user,
+ index: true,
+ foreign_key: { on_delete: :nullify },
+ null: false
+
+ t.date :marked_for_deletion_on,
+ index: true,
+ null: false
+ end
+ end
+
+ def down
+ drop_table :group_deletion_schedules
+ end
+end
diff --git a/db/migrate/20191118155702_add_index_on_status_to_merge_trains.rb b/db/migrate/20191118155702_add_index_on_status_to_merge_trains.rb
new file mode 100644
index 00000000000..9b5238045f8
--- /dev/null
+++ b/db/migrate/20191118155702_add_index_on_status_to_merge_trains.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+class AddIndexOnStatusToMergeTrains < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+ INDEX_NAME = 'index_for_status_per_branch_per_project'
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index :merge_trains, [:target_project_id, :target_branch, :status], name: INDEX_NAME
+ remove_concurrent_index :merge_trains, :target_project_id
+ end
+
+ def down
+ add_concurrent_index :merge_trains, :target_project_id
+ remove_concurrent_index :merge_trains, [:target_project_id, :target_branch, :status], name: INDEX_NAME
+ end
+end
diff --git a/db/migrate/20191118173522_add_snippet_size_limit_to_application_settings.rb b/db/migrate/20191118173522_add_snippet_size_limit_to_application_settings.rb
new file mode 100644
index 00000000000..b6b30febbd6
--- /dev/null
+++ b/db/migrate/20191118173522_add_snippet_size_limit_to_application_settings.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class AddSnippetSizeLimitToApplicationSettings < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def up
+ add_column :application_settings, :snippet_size_limit, :bigint, default: 50.megabytes, null: false
+ end
+
+ def down
+ remove_column :application_settings, :snippet_size_limit
+ end
+end
diff --git a/db/migrate/20191118182722_add_index_to_environments_on_project_id_state_environment_type.rb b/db/migrate/20191118182722_add_index_to_environments_on_project_id_state_environment_type.rb
new file mode 100644
index 00000000000..b88a1f01d79
--- /dev/null
+++ b/db/migrate/20191118182722_add_index_to_environments_on_project_id_state_environment_type.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+class AddIndexToEnvironmentsOnProjectIdStateEnvironmentType < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+ OLD_INDEX_NAME = 'index_environments_on_project_id_and_state'.freeze
+ NEW_INDEX_NAME = 'index_environments_on_project_id_state_environment_type'.freeze
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index(:environments, [:project_id, :state, :environment_type], name: NEW_INDEX_NAME)
+ remove_concurrent_index_by_name(:environments, OLD_INDEX_NAME)
+ end
+
+ def down
+ add_concurrent_index(:environments, [:project_id, :state], name: OLD_INDEX_NAME)
+ remove_concurrent_index_by_name(:environments, NEW_INDEX_NAME)
+ end
+end
diff --git a/db/migrate/20191119023952_add_created_at_index_to_snippets.rb b/db/migrate/20191119023952_add_created_at_index_to_snippets.rb
new file mode 100644
index 00000000000..226af5f9e6d
--- /dev/null
+++ b/db/migrate/20191119023952_add_created_at_index_to_snippets.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class AddCreatedAtIndexToSnippets < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index :snippets, :created_at
+ end
+
+ def down
+ remove_concurrent_index :snippets, :created_at
+ end
+end
diff --git a/db/migrate/20191119220425_rename_software_license_policies_approval_status_to_classification.rb b/db/migrate/20191119220425_rename_software_license_policies_approval_status_to_classification.rb
new file mode 100644
index 00000000000..98c14f42558
--- /dev/null
+++ b/db/migrate/20191119220425_rename_software_license_policies_approval_status_to_classification.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class RenameSoftwareLicensePoliciesApprovalStatusToClassification < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ rename_column_concurrently :software_license_policies, :approval_status, :classification
+ end
+
+ def down
+ undo_rename_column_concurrently :software_license_policies, :approval_status, :classification
+ end
+end
diff --git a/db/migrate/20191119231621_create_container_expiration_policies.rb b/db/migrate/20191119231621_create_container_expiration_policies.rb
new file mode 100644
index 00000000000..d7108870cf1
--- /dev/null
+++ b/db/migrate/20191119231621_create_container_expiration_policies.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+class CreateContainerExpirationPolicies < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def change
+ create_table :container_expiration_policies, id: false, primary_key: :project_id do |t|
+ t.timestamps_with_timezone null: false
+ t.datetime_with_timezone :next_run_at
+ t.references :project, primary_key: true, default: nil, index: false, foreign_key: { on_delete: :cascade }
+ t.string :name_regex, limit: 255
+ t.string :cadence, null: false, limit: 12, default: '7d'
+ t.string :older_than, limit: 12
+ t.integer :keep_n
+ t.boolean :enabled, null: false, default: false
+ end
+
+ add_index :container_expiration_policies, [:next_run_at, :enabled],
+ name: 'index_container_expiration_policies_on_next_run_at_and_enabled'
+ end
+end
diff --git a/db/migrate/20191120200015_add_index_to_grafana_integrations.rb b/db/migrate/20191120200015_add_index_to_grafana_integrations.rb
new file mode 100644
index 00000000000..87292c86e97
--- /dev/null
+++ b/db/migrate/20191120200015_add_index_to_grafana_integrations.rb
@@ -0,0 +1,15 @@
+class AddIndexToGrafanaIntegrations < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index :grafana_integrations, :enabled, where: 'enabled IS TRUE'
+ end
+
+ def down
+ remove_concurrent_index :grafana_integrations, :enabled
+ end
+end
diff --git a/db/migrate/20191121111621_create_packages_dependencies.rb b/db/migrate/20191121111621_create_packages_dependencies.rb
new file mode 100644
index 00000000000..61e52627b05
--- /dev/null
+++ b/db/migrate/20191121111621_create_packages_dependencies.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+class CreatePackagesDependencies < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def change
+ create_table :packages_dependencies do |t|
+ t.string :name, null: false, limit: 255
+ t.string :version_pattern, null: false, limit: 255
+ end
+
+ add_index :packages_dependencies, [:name, :version_pattern], unique: true
+ end
+end
diff --git a/db/migrate/20191121121947_create_packages_dependency_links.rb b/db/migrate/20191121121947_create_packages_dependency_links.rb
new file mode 100644
index 00000000000..0907ed8f16c
--- /dev/null
+++ b/db/migrate/20191121121947_create_packages_dependency_links.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+class CreatePackagesDependencyLinks < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def change
+ create_table :packages_dependency_links do |t|
+ t.references :package, index: false, null: false, foreign_key: { to_table: :packages_packages, on_delete: :cascade }, type: :bigint
+ t.references :dependency, null: false, foreign_key: { to_table: :packages_dependencies, on_delete: :cascade }, type: :bigint
+ t.integer :dependency_type, limit: 2, null: false
+ end
+
+ add_index :packages_dependency_links, [:package_id, :dependency_id, :dependency_type], unique: true, name: 'idx_pkgs_dep_links_on_pkg_id_dependency_id_dependency_type'
+ end
+end
diff --git a/db/migrate/20191121161018_add_project_id_name_version_package_type_index_to_packages_packages.rb b/db/migrate/20191121161018_add_project_id_name_version_package_type_index_to_packages_packages.rb
new file mode 100644
index 00000000000..4511a2a0e49
--- /dev/null
+++ b/db/migrate/20191121161018_add_project_id_name_version_package_type_index_to_packages_packages.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+class AddProjectIdNameVersionPackageTypeIndexToPackagesPackages < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+ INDEX_NAME = 'idx_packages_packages_on_project_id_name_version_package_type'.freeze
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index :packages_packages,
+ [:project_id, :name, :version, :package_type],
+ name: INDEX_NAME
+ end
+
+ def down
+ remove_concurrent_index :packages_packages,
+ [:project_id, :name, :version, :package_type],
+ name: INDEX_NAME
+ end
+end
diff --git a/db/migrate/20191121193110_add_issue_links_type.rb b/db/migrate/20191121193110_add_issue_links_type.rb
new file mode 100644
index 00000000000..61ef2e7d7e8
--- /dev/null
+++ b/db/migrate/20191121193110_add_issue_links_type.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class AddIssueLinksType < ActiveRecord::Migration[5.1]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_column_with_default :issue_links, :link_type, :integer, default: 0, limit: 2
+ end
+
+ def down
+ remove_column :issue_links, :link_type
+ end
+end
diff --git a/db/migrate/20191122161519_create_sentry_issues_table.rb b/db/migrate/20191122161519_create_sentry_issues_table.rb
new file mode 100644
index 00000000000..753286b6025
--- /dev/null
+++ b/db/migrate/20191122161519_create_sentry_issues_table.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+class CreateSentryIssuesTable < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def change
+ create_table :sentry_issues do |t|
+ t.references :issue,
+ foreign_key: { on_delete: :cascade },
+ index: { unique: true },
+ null: false
+ t.bigint :sentry_issue_identifier, null: false
+ end
+ end
+end
diff --git a/db/migrate/20191123062354_add_minimum_password_length_to_application_settings.rb b/db/migrate/20191123062354_add_minimum_password_length_to_application_settings.rb
new file mode 100644
index 00000000000..0a7ad9d81a9
--- /dev/null
+++ b/db/migrate/20191123062354_add_minimum_password_length_to_application_settings.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+class AddMinimumPasswordLengthToApplicationSettings < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ DEFAULT_MINIMUM_PASSWORD_LENGTH = 8
+
+ def change
+ add_column(:application_settings, :minimum_password_length, :integer, default: DEFAULT_MINIMUM_PASSWORD_LENGTH, null: false)
+ end
+end
diff --git a/db/migrate/20191124150431_change_label_id_index_to_include_action_on_label_events.rb b/db/migrate/20191124150431_change_label_id_index_to_include_action_on_label_events.rb
new file mode 100644
index 00000000000..bd138adc5fa
--- /dev/null
+++ b/db/migrate/20191124150431_change_label_id_index_to_include_action_on_label_events.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+class ChangeLabelIdIndexToIncludeActionOnLabelEvents < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index(:resource_label_events, %I[label_id action])
+
+ remove_concurrent_index(:resource_label_events, :label_id)
+ end
+
+ def down
+ add_concurrent_index(:resource_label_events, :label_id)
+
+ remove_concurrent_index(:resource_label_events, %I[label_id action])
+ end
+end
diff --git a/db/migrate/20191125114345_add_admin_mode_protected_path.rb b/db/migrate/20191125114345_add_admin_mode_protected_path.rb
new file mode 100644
index 00000000000..7e9b0d5a285
--- /dev/null
+++ b/db/migrate/20191125114345_add_admin_mode_protected_path.rb
@@ -0,0 +1,54 @@
+# frozen_string_literal: true
+
+class AddAdminModeProtectedPath < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ ADMIN_MODE_ENDPOINT = '/admin/session'
+
+ OLD_DEFAULT_PROTECTED_PATHS = [
+ '/users/password',
+ '/users/sign_in',
+ '/api/v3/session.json',
+ '/api/v3/session',
+ '/api/v4/session.json',
+ '/api/v4/session',
+ '/users',
+ '/users/confirmation',
+ '/unsubscribes/',
+ '/import/github/personal_access_token'
+ ]
+
+ NEW_DEFAULT_PROTECTED_PATHS = OLD_DEFAULT_PROTECTED_PATHS.dup << ADMIN_MODE_ENDPOINT
+
+ class ApplicationSetting < ActiveRecord::Base
+ self.table_name = 'application_settings'
+ end
+
+ def up
+ change_column_default :application_settings, :protected_paths, NEW_DEFAULT_PROTECTED_PATHS
+
+ # schema allows nulls for protected_paths
+ ApplicationSetting.where.not(protected_paths: nil).each do |application_setting|
+ unless application_setting.protected_paths.include?(ADMIN_MODE_ENDPOINT)
+ updated_protected_paths = application_setting.protected_paths << ADMIN_MODE_ENDPOINT
+
+ application_setting.update(protected_paths: updated_protected_paths)
+ end
+ end
+ end
+
+ def down
+ change_column_default :application_settings, :protected_paths, OLD_DEFAULT_PROTECTED_PATHS
+
+ # schema allows nulls for protected_paths
+ ApplicationSetting.where.not(protected_paths: nil).each do |application_setting|
+ if application_setting.protected_paths.include?(ADMIN_MODE_ENDPOINT)
+ updated_protected_paths = application_setting.protected_paths - [ADMIN_MODE_ENDPOINT]
+
+ application_setting.update(protected_paths: updated_protected_paths)
+ end
+ end
+ end
+end
diff --git a/db/migrate/20191125133353_add_target_path_to_broadcast_message.rb b/db/migrate/20191125133353_add_target_path_to_broadcast_message.rb
new file mode 100644
index 00000000000..65aa758e502
--- /dev/null
+++ b/db/migrate/20191125133353_add_target_path_to_broadcast_message.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class AddTargetPathToBroadcastMessage < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def change
+ add_column :broadcast_messages, :target_path, :string, limit: 255
+ end
+end
diff --git a/db/migrate/20191125140458_create_import_failures.rb b/db/migrate/20191125140458_create_import_failures.rb
new file mode 100644
index 00000000000..43e8efe90a4
--- /dev/null
+++ b/db/migrate/20191125140458_create_import_failures.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class CreateImportFailures < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def change
+ create_table :import_failures do |t|
+ t.integer :relation_index
+ t.references :project, null: false, index: true
+ t.datetime_with_timezone :created_at, null: false
+ t.string :relation_key, limit: 64
+ t.string :exception_class, limit: 128
+ t.string :correlation_id_value, limit: 128, index: true
+ t.string :exception_message, limit: 255
+ end
+ end
+end
diff --git a/db/migrate/20191127030005_create_serverless_domain_cluster.rb b/db/migrate/20191127030005_create_serverless_domain_cluster.rb
new file mode 100644
index 00000000000..7fb24400b0d
--- /dev/null
+++ b/db/migrate/20191127030005_create_serverless_domain_cluster.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class CreateServerlessDomainCluster < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def change
+ create_table :serverless_domain_cluster, id: false, primary_key: :uuid do |t|
+ t.references :pages_domain, null: false, foreign_key: { on_delete: :cascade }
+ t.references :clusters_applications_knative, null: false,
+ foreign_key: { to_table: :clusters_applications_knative, on_delete: :cascade },
+ index: { name: :idx_serverless_domain_cluster_on_clusters_applications_knative, unique: true }
+ t.references :creator, name: :created_by, foreign_key: { to_table: :users, on_delete: :nullify }
+ t.timestamps_with_timezone null: false
+ t.string :uuid, null: false, limit: 14, primary_key: true
+ end
+ end
+end
diff --git a/db/migrate/20191127151619_create_gitlab_subscription_histories.rb b/db/migrate/20191127151619_create_gitlab_subscription_histories.rb
new file mode 100644
index 00000000000..718f2c1b313
--- /dev/null
+++ b/db/migrate/20191127151619_create_gitlab_subscription_histories.rb
@@ -0,0 +1,28 @@
+# frozen_string_literal: true
+
+class CreateGitlabSubscriptionHistories < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def up
+ create_table :gitlab_subscription_histories do |t|
+ t.datetime_with_timezone :gitlab_subscription_created_at
+ t.datetime_with_timezone :gitlab_subscription_updated_at
+ t.date :start_date
+ t.date :end_date
+ t.date :trial_ends_on
+ t.integer :namespace_id, null: true
+ t.integer :hosted_plan_id, null: true
+ t.integer :max_seats_used
+ t.integer :seats
+ t.boolean :trial
+ t.integer :change_type, limit: 2
+ t.bigint :gitlab_subscription_id, null: false
+ t.datetime_with_timezone :created_at
+ end
+ add_index :gitlab_subscription_histories, :gitlab_subscription_id
+ end
+
+ def down
+ drop_table :gitlab_subscription_histories
+ end
+end
diff --git a/db/migrate/20191127151629_add_trial_starts_on_to_gitlab_subscriptions.rb b/db/migrate/20191127151629_add_trial_starts_on_to_gitlab_subscriptions.rb
new file mode 100644
index 00000000000..2528aa9c2c8
--- /dev/null
+++ b/db/migrate/20191127151629_add_trial_starts_on_to_gitlab_subscriptions.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+class AddTrialStartsOnToGitlabSubscriptions < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def change
+ add_column :gitlab_subscriptions, :trial_starts_on, :date, null: true
+ add_column :gitlab_subscription_histories, :trial_starts_on, :date, null: true
+ end
+end
diff --git a/db/migrate/20191127221608_add_wildcard_and_domain_type_to_pages_domains.rb b/db/migrate/20191127221608_add_wildcard_and_domain_type_to_pages_domains.rb
new file mode 100644
index 00000000000..6893a02bcad
--- /dev/null
+++ b/db/migrate/20191127221608_add_wildcard_and_domain_type_to_pages_domains.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+class AddWildcardAndDomainTypeToPagesDomains < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+ PROJECT_TYPE = 2
+
+ disable_ddl_transaction!
+
+ def up
+ add_column_with_default :pages_domains, :wildcard, :boolean, default: false
+ add_column_with_default :pages_domains, :domain_type, :integer, limit: 2, default: PROJECT_TYPE
+ end
+
+ def down
+ remove_column :pages_domains, :wildcard
+ remove_column :pages_domains, :domain_type
+ end
+end
diff --git a/db/migrate/20191129134844_add_broadcast_type_to_broadcast_message.rb b/db/migrate/20191129134844_add_broadcast_type_to_broadcast_message.rb
new file mode 100644
index 00000000000..84d17f558d1
--- /dev/null
+++ b/db/migrate/20191129134844_add_broadcast_type_to_broadcast_message.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class AddBroadcastTypeToBroadcastMessage < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ # Set this constant to true if this migration requires downtime.
+ DOWNTIME = false
+ BROADCAST_MESSAGE_BANNER_TYPE = 1
+
+ disable_ddl_transaction!
+
+ def up
+ add_column_with_default(:broadcast_messages, :broadcast_type, :smallint, default: BROADCAST_MESSAGE_BANNER_TYPE)
+ end
+
+ def down
+ remove_column(:broadcast_messages, :broadcast_type)
+ end
+end
diff --git a/db/migrate/20191202181924_add_environment_auto_stop_in_to_ci_builds_metadata.rb b/db/migrate/20191202181924_add_environment_auto_stop_in_to_ci_builds_metadata.rb
new file mode 100644
index 00000000000..bce191a7ec0
--- /dev/null
+++ b/db/migrate/20191202181924_add_environment_auto_stop_in_to_ci_builds_metadata.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class AddEnvironmentAutoStopInToCiBuildsMetadata < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def up
+ add_column :ci_builds_metadata, :environment_auto_stop_in, :string, limit: 255
+ end
+
+ def down
+ remove_column :ci_builds_metadata, :environment_auto_stop_in
+ end
+end
diff --git a/db/migrate/20191203121729_update_group_deletion_schedules_foreign_keys.rb b/db/migrate/20191203121729_update_group_deletion_schedules_foreign_keys.rb
new file mode 100644
index 00000000000..99531a1e93e
--- /dev/null
+++ b/db/migrate/20191203121729_update_group_deletion_schedules_foreign_keys.rb
@@ -0,0 +1,29 @@
+# frozen_string_literal: true
+
+class UpdateGroupDeletionSchedulesForeignKeys < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_foreign_key(:group_deletion_schedules, :users, column: :user_id, on_delete: :cascade, name: new_foreign_key_name)
+ remove_foreign_key_if_exists(:group_deletion_schedules, column: :user_id, on_delete: :nullify)
+ end
+
+ def down
+ add_concurrent_foreign_key(:group_deletion_schedules, :users, column: :user_id, on_delete: :nullify, name: existing_foreign_key_name)
+ remove_foreign_key_if_exists(:group_deletion_schedules, column: :user_id, on_delete: :cascade)
+ end
+
+ private
+
+ def new_foreign_key_name
+ concurrent_foreign_key_name(:group_deletion_schedules, :user_id)
+ end
+
+ def existing_foreign_key_name
+ 'fk_group_deletion_schedules_users_user_id'
+ end
+end
diff --git a/db/migrate/20191204070713_change_updated_at_index_and_add_index_to_id_on_deployments.rb b/db/migrate/20191204070713_change_updated_at_index_and_add_index_to_id_on_deployments.rb
new file mode 100644
index 00000000000..450b276e689
--- /dev/null
+++ b/db/migrate/20191204070713_change_updated_at_index_and_add_index_to_id_on_deployments.rb
@@ -0,0 +1,29 @@
+# frozen_string_literal: true
+
+class ChangeUpdatedAtIndexAndAddIndexToIdOnDeployments < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ disable_ddl_transaction!
+
+ DOWNTIME = false
+
+ PROJECT_ID_INDEX_PARAMS = [[:project_id, :id], order: { id: :desc }]
+ OLD_UPDATED_AT_INDEX_PARAMS = [[:project_id, :updated_at]]
+ NEW_UPDATED_AT_INDEX_PARAMS = [[:project_id, :updated_at, :id], order: { updated_at: :desc, id: :desc }]
+
+ def up
+ add_concurrent_index :deployments, *NEW_UPDATED_AT_INDEX_PARAMS
+
+ remove_concurrent_index :deployments, *OLD_UPDATED_AT_INDEX_PARAMS
+
+ add_concurrent_index :deployments, *PROJECT_ID_INDEX_PARAMS
+ end
+
+ def down
+ add_concurrent_index :deployments, *OLD_UPDATED_AT_INDEX_PARAMS
+
+ remove_concurrent_index :deployments, *NEW_UPDATED_AT_INDEX_PARAMS
+
+ remove_concurrent_index :deployments, *PROJECT_ID_INDEX_PARAMS
+ end
+end
diff --git a/db/migrate/20191204093410_add_label_project_group_partial_indexes.rb b/db/migrate/20191204093410_add_label_project_group_partial_indexes.rb
new file mode 100644
index 00000000000..85666144856
--- /dev/null
+++ b/db/migrate/20191204093410_add_label_project_group_partial_indexes.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+# See http://doc.gitlab.com/ce/development/migration_style_guide.html
+# for more information on how to write migrations for GitLab.
+
+class AddLabelProjectGroupPartialIndexes < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ PROJECT_AND_TITLE = [:project_id, :title]
+ GROUP_AND_TITLE = [:group_id, :title]
+
+ def up
+ add_concurrent_index :labels, PROJECT_AND_TITLE, unique: false, where: "labels.group_id = null"
+ add_concurrent_index :labels, GROUP_AND_TITLE, unique: false, where: "labels.project_id = null"
+ end
+
+ def down
+ remove_concurrent_index :labels, PROJECT_AND_TITLE
+ remove_concurrent_index :labels, GROUP_AND_TITLE
+ end
+end
diff --git a/db/migrate/20191204192726_add_design_disk_path_to_geo_hashed_storage_migrated_events.rb b/db/migrate/20191204192726_add_design_disk_path_to_geo_hashed_storage_migrated_events.rb
new file mode 100644
index 00000000000..39b5d5c7e97
--- /dev/null
+++ b/db/migrate/20191204192726_add_design_disk_path_to_geo_hashed_storage_migrated_events.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+class AddDesignDiskPathToGeoHashedStorageMigratedEvents < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ def change
+ add_column :geo_hashed_storage_migrated_events, :old_design_disk_path, :text
+ add_column :geo_hashed_storage_migrated_events, :new_design_disk_path, :text
+ end
+end
diff --git a/db/migrate/20191205060723_add_index_to_keys.rb b/db/migrate/20191205060723_add_index_to_keys.rb
new file mode 100644
index 00000000000..8e8c725f62e
--- /dev/null
+++ b/db/migrate/20191205060723_add_index_to_keys.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class AddIndexToKeys < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index :keys, :last_used_at, order: { last_used_at: 'DESC NULLS LAST' }
+ end
+
+ def down
+ remove_concurrent_index :keys, :last_used_at
+ end
+end
diff --git a/db/migrate/20191205094702_add_index_for_cross_projects_dependencies_to_ci_builds.rb b/db/migrate/20191205094702_add_index_for_cross_projects_dependencies_to_ci_builds.rb
new file mode 100644
index 00000000000..023414fb4bb
--- /dev/null
+++ b/db/migrate/20191205094702_add_index_for_cross_projects_dependencies_to_ci_builds.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class AddIndexForCrossProjectsDependenciesToCiBuilds < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index :ci_builds, [:project_id, :name, :ref],
+ where: "type = 'Ci::Build' AND status = 'success' AND (retried = FALSE OR retried IS NULL)"
+ end
+
+ def down
+ remove_concurrent_index :ci_builds, [:project_id, :name, :ref],
+ where: "type = 'Ci::Build' AND status = 'success' AND (retried = FALSE OR retried IS NULL)"
+ end
+end
diff --git a/db/migrate/20191205145647_add_index_to_projects_deploy_keys_deploy_key.rb b/db/migrate/20191205145647_add_index_to_projects_deploy_keys_deploy_key.rb
new file mode 100644
index 00000000000..f9cdc226e4d
--- /dev/null
+++ b/db/migrate/20191205145647_add_index_to_projects_deploy_keys_deploy_key.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class AddIndexToProjectsDeployKeysDeployKey < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ disable_ddl_transaction!
+
+ DOWNTIME = false
+
+ def up
+ add_concurrent_index :deploy_keys_projects, :deploy_key_id
+ end
+
+ def down
+ remove_concurrent_index :deploy_keys_projects, :deploy_key_id
+ end
+end
diff --git a/db/migrate/20191206022133_add_indexes_to_pages_domains_on_wildcard_and_domain_type.rb b/db/migrate/20191206022133_add_indexes_to_pages_domains_on_wildcard_and_domain_type.rb
new file mode 100644
index 00000000000..3c1704a3377
--- /dev/null
+++ b/db/migrate/20191206022133_add_indexes_to_pages_domains_on_wildcard_and_domain_type.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class AddIndexesToPagesDomainsOnWildcardAndDomainType < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index :pages_domains, :wildcard
+ add_concurrent_index :pages_domains, :domain_type
+ end
+
+ def down
+ remove_concurrent_index :pages_domains, :wildcard
+ remove_concurrent_index :pages_domains, :domain_type
+ end
+end
diff --git a/db/migrate/20191206122926_update_index_for_pool_repositories.rb b/db/migrate/20191206122926_update_index_for_pool_repositories.rb
new file mode 100644
index 00000000000..f88e8e94ee1
--- /dev/null
+++ b/db/migrate/20191206122926_update_index_for_pool_repositories.rb
@@ -0,0 +1,24 @@
+# frozen_string_literal: true
+
+class UpdateIndexForPoolRepositories < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ # This index is less restrictive then the one we already have, no need to
+ # update data.
+ add_concurrent_index :pool_repositories, [:source_project_id, :shard_id], unique: true
+ remove_concurrent_index :pool_repositories, :source_project_id
+ end
+
+ def down
+ # Not adding this index as a unique one, since while the new index existed
+ # we could have created multiple pool repositories for a project. In that
+ # case this rollback would fail.
+ add_concurrent_index :pool_repositories, :source_project_id
+ remove_concurrent_index :pool_repositories, [:source_project_id, :shard_id], unique: true
+ end
+end
diff --git a/db/migrate/20191208071111_add_fingerprint_sha256_to_key.rb b/db/migrate/20191208071111_add_fingerprint_sha256_to_key.rb
new file mode 100644
index 00000000000..1bc87357f7d
--- /dev/null
+++ b/db/migrate/20191208071111_add_fingerprint_sha256_to_key.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class AddFingerprintSha256ToKey < ActiveRecord::Migration[5.0]
+ DOWNTIME = false
+
+ def up
+ add_column(:keys, :fingerprint_sha256, :binary)
+ end
+
+ def down
+ remove_column(:keys, :fingerprint_sha256) if column_exists?(:keys, :fingerprint_sha256)
+ end
+end
diff --git a/db/migrate/20191208071112_add_fingerprint_sha256_index_to_key.rb b/db/migrate/20191208071112_add_fingerprint_sha256_index_to_key.rb
new file mode 100644
index 00000000000..6f0c4bcd321
--- /dev/null
+++ b/db/migrate/20191208071112_add_fingerprint_sha256_index_to_key.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class AddFingerprintSha256IndexToKey < ActiveRecord::Migration[5.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index(:keys, "fingerprint_sha256")
+ end
+
+ def down
+ remove_concurrent_index(:keys, "fingerprint_sha256")
+ end
+end
diff --git a/db/migrate/20191212140117_change_commit_user_mentions_commit_id_column_type.rb b/db/migrate/20191212140117_change_commit_user_mentions_commit_id_column_type.rb
new file mode 100644
index 00000000000..f30cdab3441
--- /dev/null
+++ b/db/migrate/20191212140117_change_commit_user_mentions_commit_id_column_type.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+class ChangeCommitUserMentionsCommitIdColumnType < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ OLD_INDEX = 'commit_user_mentions_on_commit_id_and_note_id_index'
+ OLD_TMP_INDEX = 'temp_commit_id_and_note_id_index'
+ NEW_TMP_INDEX = 'temp_commit_id_for_type_change_and_note_id_index'
+ NEW_INDEX = 'commit_id_and_note_id_index'
+
+ def up
+ # the initial index name is too long and fails during migration. Renaming the index first.
+ add_concurrent_index :commit_user_mentions, [:commit_id, :note_id], name: OLD_TMP_INDEX
+ remove_concurrent_index_by_name :commit_user_mentions, OLD_INDEX
+
+ change_column_type_concurrently :commit_user_mentions, :commit_id, :string
+
+ # change_column_type_concurrently creates a new index for new column `commit_id_for_type` based on existing
+ # `temp_commit_id_and_note_id_index` naming it `temp_commit_id_for_type_change_and_note_id_index`, yet keeping
+ # `temp_commit_id_and_note_id_index` for `commit_id`, that will be cleaned
+ # by `cleanup_concurrent_column_type_change :commit_user_mentions, :commit_id` in a later migration.
+ #
+ # So we'll rename `temp_commit_id_for_type_change_and_note_id_index` to initialy intended name: `commit_id_and_note_id_index`.
+
+ add_concurrent_index :commit_user_mentions, [:commit_id_for_type_change, :note_id], name: NEW_INDEX
+ remove_concurrent_index_by_name :commit_user_mentions, NEW_TMP_INDEX
+ end
+
+ def down
+ cleanup_concurrent_column_type_change :commit_user_mentions, :commit_id
+ end
+end
diff --git a/db/migrate/20191213104838_add_service_desk_username.rb b/db/migrate/20191213104838_add_service_desk_username.rb
new file mode 100644
index 00000000000..945bdb67fa1
--- /dev/null
+++ b/db/migrate/20191213104838_add_service_desk_username.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class AddServiceDeskUsername < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def change
+ add_column :service_desk_settings, :outgoing_name, :string, limit: 255
+ end
+end
diff --git a/db/migrate/20191214175727_add_indexes_to_deployments_on_project_id_and_ref.rb b/db/migrate/20191214175727_add_indexes_to_deployments_on_project_id_and_ref.rb
new file mode 100644
index 00000000000..5dacc3c0c66
--- /dev/null
+++ b/db/migrate/20191214175727_add_indexes_to_deployments_on_project_id_and_ref.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+class AddIndexesToDeploymentsOnProjectIdAndRef < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+ INDEX_NAME = 'partial_index_deployments_for_project_id_and_tag'.freeze
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index :deployments, [:project_id, :ref]
+ add_concurrent_index :deployments, [:project_id], where: 'tag IS TRUE', name: INDEX_NAME
+ end
+
+ def down
+ remove_concurrent_index :deployments, [:project_id, :ref]
+ remove_concurrent_index :deployments, [:project_id], where: 'tag IS TRUE', name: INDEX_NAME
+ end
+end
diff --git a/db/migrate/20191216094119_add_id_to_plan_limits.rb b/db/migrate/20191216094119_add_id_to_plan_limits.rb
new file mode 100644
index 00000000000..05ebd900df3
--- /dev/null
+++ b/db/migrate/20191216094119_add_id_to_plan_limits.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class AddIdToPlanLimits < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def up
+ add_column(:plan_limits, :id, :primary_key) unless column_exists?(:plan_limits, :id)
+ end
+
+ def down
+ remove_column(:plan_limits, :id)
+ end
+end
diff --git a/db/migrate/20191216183531_add_project_hooks_to_plan_limits.rb b/db/migrate/20191216183531_add_project_hooks_to_plan_limits.rb
new file mode 100644
index 00000000000..c56b6edf029
--- /dev/null
+++ b/db/migrate/20191216183531_add_project_hooks_to_plan_limits.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class AddProjectHooksToPlanLimits < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def change
+ add_column(:plan_limits, :project_hooks, :integer, default: 0, null: false)
+ end
+end
diff --git a/db/migrate/20191216183532_insert_project_hooks_plan_limits.rb b/db/migrate/20191216183532_insert_project_hooks_plan_limits.rb
new file mode 100644
index 00000000000..b2c0121dd24
--- /dev/null
+++ b/db/migrate/20191216183532_insert_project_hooks_plan_limits.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+class InsertProjectHooksPlanLimits < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ def up
+ return unless Gitlab.com?
+
+ create_or_update_plan_limit('project_hooks', 'free', 10)
+ create_or_update_plan_limit('project_hooks', 'bronze', 20)
+ create_or_update_plan_limit('project_hooks', 'silver', 30)
+ create_or_update_plan_limit('project_hooks', 'gold', 100)
+ end
+
+ def down
+ return unless Gitlab.com?
+
+ create_or_update_plan_limit('project_hooks', 'free', 0)
+ create_or_update_plan_limit('project_hooks', 'bronze', 0)
+ create_or_update_plan_limit('project_hooks', 'silver', 0)
+ create_or_update_plan_limit('project_hooks', 'gold', 0)
+ end
+end
diff --git a/db/optional_migrations/composite_primary_keys.rb b/db/optional_migrations/composite_primary_keys.rb
index e0bb0312a35..1fcb9664ff6 100644
--- a/db/optional_migrations/composite_primary_keys.rb
+++ b/db/optional_migrations/composite_primary_keys.rb
@@ -27,8 +27,6 @@ class CompositePrimaryKeysMigration < ActiveRecord::Migration[4.2]
disable_ddl_transaction!
def up
- return unless Gitlab::Database.postgresql?
-
disable_statement_timeout do
TABLES.each do |index|
add_primary_key(index)
@@ -37,8 +35,6 @@ class CompositePrimaryKeysMigration < ActiveRecord::Migration[4.2]
end
def down
- return unless Gitlab::Database.postgresql?
-
disable_statement_timeout do
TABLES.each do |index|
remove_primary_key(index)
diff --git a/db/post_migrate/20180119121225_remove_redundant_pipeline_stages.rb b/db/post_migrate/20180119121225_remove_redundant_pipeline_stages.rb
index 88b713aaef3..66ad0a89539 100644
--- a/db/post_migrate/20180119121225_remove_redundant_pipeline_stages.rb
+++ b/db/post_migrate/20180119121225_remove_redundant_pipeline_stages.rb
@@ -50,17 +50,9 @@ class RemoveRedundantPipelineStages < ActiveRecord::Migration[4.2]
UPDATE ci_builds SET stage_id = NULL WHERE stage_id IN (#{redundant_stages_ids})
SQL
- if Gitlab::Database.postgresql?
- execute <<~SQL
- DELETE FROM ci_stages WHERE id IN (#{redundant_stages_ids})
- SQL
- else # We can't modify a table we are selecting from on MySQL
- execute <<~SQL
- DELETE a FROM ci_stages AS a, ci_stages AS b
- WHERE a.pipeline_id = b.pipeline_id AND a.name = b.name
- AND a.id <> b.id
- SQL
- end
+ execute <<~SQL
+ DELETE FROM ci_stages WHERE id IN (#{redundant_stages_ids})
+ SQL
end
end
end
diff --git a/db/post_migrate/20180223124427_build_user_interacted_projects_table.rb b/db/post_migrate/20180223124427_build_user_interacted_projects_table.rb
index 325895a5ddb..1eb49d60da5 100644
--- a/db/post_migrate/20180223124427_build_user_interacted_projects_table.rb
+++ b/db/post_migrate/20180223124427_build_user_interacted_projects_table.rb
@@ -12,11 +12,7 @@ class BuildUserInteractedProjectsTable < ActiveRecord::Migration[4.2]
disable_ddl_transaction!
def up
- if Gitlab::Database.postgresql?
- PostgresStrategy.new
- else
- MysqlStrategy.new
- end.up
+ PostgresStrategy.new.up
if index_exists_by_name?(:user_interacted_projects, CreateUserInteractedProjectsTable::INDEX_NAME)
remove_concurrent_index_by_name :user_interacted_projects, CreateUserInteractedProjectsTable::INDEX_NAME
@@ -140,30 +136,4 @@ class BuildUserInteractedProjectsTable < ActiveRecord::Migration[4.2]
remove_concurrent_index(*args) if index_exists?(*args)
end
end
-
- class MysqlStrategy < ActiveRecord::Migration[4.2]
- include Gitlab::Database::MigrationHelpers
-
- def up
- execute <<~SQL
- INSERT INTO user_interacted_projects (user_id, project_id)
- SELECT e.user_id, e.project_id
- FROM (SELECT DISTINCT author_id AS user_id, project_id FROM events WHERE project_id IS NOT NULL) AS e
- LEFT JOIN user_interacted_projects ucp USING (user_id, project_id)
- WHERE ucp.user_id IS NULL
- SQL
-
- unless index_exists?(:user_interacted_projects, [:project_id, :user_id])
- add_concurrent_index :user_interacted_projects, [:project_id, :user_id], unique: true, name: UNIQUE_INDEX_NAME
- end
-
- unless foreign_key_exists?(:user_interacted_projects, :users, column: :user_id)
- add_concurrent_foreign_key :user_interacted_projects, :users, column: :user_id, on_delete: :cascade
- end
-
- unless foreign_key_exists?(:user_interacted_projects, :projects, column: :project_id)
- add_concurrent_foreign_key :user_interacted_projects, :projects, column: :project_id, on_delete: :cascade
- end
- end
- end
end
diff --git a/db/post_migrate/20180305100050_remove_permanent_from_redirect_routes.rb b/db/post_migrate/20180305100050_remove_permanent_from_redirect_routes.rb
index 3b3cb4267d4..e363642b2ac 100644
--- a/db/post_migrate/20180305100050_remove_permanent_from_redirect_routes.rb
+++ b/db/post_migrate/20180305100050_remove_permanent_from_redirect_routes.rb
@@ -14,11 +14,9 @@ class RemovePermanentFromRedirectRoutes < ActiveRecord::Migration[4.2]
# These indexes were created on Postgres only in:
# ReworkRedirectRoutesIndexes:
# https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/16211
- if Gitlab::Database.postgresql?
- disable_statement_timeout do
- execute "DROP INDEX CONCURRENTLY IF EXISTS #{INDEX_NAME_PERM};"
- execute "DROP INDEX CONCURRENTLY IF EXISTS #{INDEX_NAME_TEMP};"
- end
+ disable_statement_timeout do
+ execute "DROP INDEX CONCURRENTLY IF EXISTS #{INDEX_NAME_PERM};"
+ execute "DROP INDEX CONCURRENTLY IF EXISTS #{INDEX_NAME_TEMP};"
end
remove_column(:redirect_routes, :permanent)
@@ -27,11 +25,9 @@ class RemovePermanentFromRedirectRoutes < ActiveRecord::Migration[4.2]
def down
add_column(:redirect_routes, :permanent, :boolean)
- if Gitlab::Database.postgresql?
- disable_statement_timeout do
- execute("CREATE INDEX CONCURRENTLY #{INDEX_NAME_PERM} ON redirect_routes (lower(path) varchar_pattern_ops) where (permanent);")
- execute("CREATE INDEX CONCURRENTLY #{INDEX_NAME_TEMP} ON redirect_routes (lower(path) varchar_pattern_ops) where (not permanent or permanent is null) ;")
- end
+ disable_statement_timeout do
+ execute("CREATE INDEX CONCURRENTLY #{INDEX_NAME_PERM} ON redirect_routes (lower(path) varchar_pattern_ops) where (permanent);")
+ execute("CREATE INDEX CONCURRENTLY #{INDEX_NAME_TEMP} ON redirect_routes (lower(path) varchar_pattern_ops) where (not permanent or permanent is null) ;")
end
end
end
diff --git a/db/post_migrate/20180306164012_add_path_index_to_redirect_routes.rb b/db/post_migrate/20180306164012_add_path_index_to_redirect_routes.rb
index d44ec1036c4..f0257e303f7 100644
--- a/db/post_migrate/20180306164012_add_path_index_to_redirect_routes.rb
+++ b/db/post_migrate/20180306164012_add_path_index_to_redirect_routes.rb
@@ -16,8 +16,6 @@ class AddPathIndexToRedirectRoutes < ActiveRecord::Migration[4.2]
# This same index is also added in the `ReworkRedirectRoutesIndexes` so this
# is a no-op in most cases.
def up
- return unless Gitlab::Database.postgresql?
-
disable_statement_timeout do
unless index_exists_by_name?(:redirect_routes, INDEX_NAME)
execute("CREATE UNIQUE INDEX CONCURRENTLY #{INDEX_NAME} ON redirect_routes (lower(path) varchar_pattern_ops);")
diff --git a/db/post_migrate/20180706223200_populate_site_statistics.rb b/db/post_migrate/20180706223200_populate_site_statistics.rb
index 0859aa88866..6f887a0c18f 100644
--- a/db/post_migrate/20180706223200_populate_site_statistics.rb
+++ b/db/post_migrate/20180706223200_populate_site_statistics.rb
@@ -7,13 +7,13 @@ class PopulateSiteStatistics < ActiveRecord::Migration[4.2]
def up
transaction do
- execute('SET LOCAL statement_timeout TO 0') if Gitlab::Database.postgresql? # see https://gitlab.com/gitlab-org/gitlab-foss/issues/48967
+ execute('SET LOCAL statement_timeout TO 0') # see https://gitlab.com/gitlab-org/gitlab-foss/issues/48967
execute("UPDATE site_statistics SET repositories_count = (SELECT COUNT(*) FROM projects)")
end
transaction do
- execute('SET LOCAL statement_timeout TO 0') if Gitlab::Database.postgresql? # see https://gitlab.com/gitlab-org/gitlab-foss/issues/48967
+ execute('SET LOCAL statement_timeout TO 0') # see https://gitlab.com/gitlab-org/gitlab-foss/issues/48967
execute("UPDATE site_statistics SET wikis_count = (SELECT COUNT(*) FROM project_features WHERE wiki_access_level != 0)")
end
diff --git a/db/post_migrate/20180809195358_migrate_null_wiki_access_levels.rb b/db/post_migrate/20180809195358_migrate_null_wiki_access_levels.rb
index 9bf6aed833d..b272bad7f92 100644
--- a/db/post_migrate/20180809195358_migrate_null_wiki_access_levels.rb
+++ b/db/post_migrate/20180809195358_migrate_null_wiki_access_levels.rb
@@ -20,7 +20,7 @@ class MigrateNullWikiAccessLevels < ActiveRecord::Migration[4.2]
# We need to re-count wikis as previous attempt was not considering the NULLs.
transaction do
- execute('SET LOCAL statement_timeout TO 0') if Gitlab::Database.postgresql? # see https://gitlab.com/gitlab-org/gitlab-foss/issues/48967
+ execute('SET LOCAL statement_timeout TO 0') # see https://gitlab.com/gitlab-org/gitlab-foss/issues/48967
execute("UPDATE site_statistics SET wikis_count = (SELECT COUNT(*) FROM project_features WHERE wiki_access_level != 0)")
end
diff --git a/db/post_migrate/20180826111825_recalculate_site_statistics.rb b/db/post_migrate/20180826111825_recalculate_site_statistics.rb
index 7c1fca3884d..938707c9ba4 100644
--- a/db/post_migrate/20180826111825_recalculate_site_statistics.rb
+++ b/db/post_migrate/20180826111825_recalculate_site_statistics.rb
@@ -9,13 +9,13 @@ class RecalculateSiteStatistics < ActiveRecord::Migration[4.2]
def up
transaction do
- execute('SET LOCAL statement_timeout TO 0') if Gitlab::Database.postgresql? # see https://gitlab.com/gitlab-org/gitlab-foss/issues/48967
+ execute('SET LOCAL statement_timeout TO 0') # see https://gitlab.com/gitlab-org/gitlab-foss/issues/48967
execute("UPDATE site_statistics SET repositories_count = (SELECT COUNT(*) FROM projects)")
end
transaction do
- execute('SET LOCAL statement_timeout TO 0') if Gitlab::Database.postgresql? # see https://gitlab.com/gitlab-org/gitlab-foss/issues/48967
+ execute('SET LOCAL statement_timeout TO 0') # see https://gitlab.com/gitlab-org/gitlab-foss/issues/48967
execute("UPDATE site_statistics SET wikis_count = (SELECT COUNT(*) FROM project_features WHERE wiki_access_level != 0)")
end
diff --git a/db/post_migrate/20191015154408_drop_merge_requests_require_code_owner_approval_from_projects.rb b/db/post_migrate/20191015154408_drop_merge_requests_require_code_owner_approval_from_projects.rb
new file mode 100644
index 00000000000..a1d763b7ed1
--- /dev/null
+++ b/db/post_migrate/20191015154408_drop_merge_requests_require_code_owner_approval_from_projects.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+# See http://doc.gitlab.com/ce/development/migration_style_guide.html
+# for more information on how to write migrations for GitLab.
+
+class DropMergeRequestsRequireCodeOwnerApprovalFromProjects < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ remove_column :projects, :merge_requests_require_code_owner_approval, :boolean
+ end
+
+ def down
+ add_column :projects, :merge_requests_require_code_owner_approval, :boolean
+
+ add_concurrent_index(
+ :projects,
+ %i[archived pending_delete merge_requests_require_code_owner_approval],
+ name: 'projects_requiring_code_owner_approval',
+ where: '((pending_delete = false) AND (archived = false) AND (merge_requests_require_code_owner_approval = true))'
+ )
+ end
+end
diff --git a/db/post_migrate/20191030223057_backfill_version_author_and_created_at.rb b/db/post_migrate/20191030223057_backfill_version_author_and_created_at.rb
new file mode 100644
index 00000000000..7a6d0b089a0
--- /dev/null
+++ b/db/post_migrate/20191030223057_backfill_version_author_and_created_at.rb
@@ -0,0 +1,67 @@
+# frozen_string_literal: true
+
+class BackfillVersionAuthorAndCreatedAt < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+ MIGRATION = 'BackfillVersionDataFromGitaly'.freeze
+ BATCH_SIZE = 500
+
+ disable_ddl_transaction!
+
+ class Project < ActiveRecord::Base
+ self.table_name = 'projects'
+ self.inheritance_column = :_type_disabled
+ end
+
+ class Issue < ActiveRecord::Base
+ self.table_name = 'issues'
+ self.inheritance_column = :_type_disabled
+ end
+
+ class Version < ActiveRecord::Base
+ include EachBatch
+ self.table_name = 'design_management_versions'
+ self.inheritance_column = :_type_disabled
+
+ # Returns unique issue ids of versions that are not in projects
+ # that are pending deletion.
+ scope :with_unique_issue_ids, -> do
+ versions = Version.arel_table
+ issues = Issue.arel_table
+ projects = Project.arel_table
+
+ Version.select(versions[:issue_id]).where(
+ versions[:author_id].eq(nil).or(
+ versions[:created_at].eq(nil)
+ ).and(
+ issues[:project_id].not_in(
+ projects.project(projects[:id]).where(projects[:pending_delete].eq(true))
+ )
+ )
+ ).joins(
+ versions.join(issues).on(
+ issues[:id].eq(versions[:issue_id])
+ ).join_sources
+ ).distinct
+ end
+ end
+
+ # This migration will make around ~1300 UPDATE queries on GitLab.com,
+ # one per design_management_versions record as the migration will update
+ # each record individually.
+ #
+ # It will make around 870 Gitaly `ListCommitsByOid` requests on GitLab.com.
+ # One for every unique issue with design_management_versions records.
+ def up
+ return unless Gitlab.ee? # no-op for CE
+
+ Version.with_unique_issue_ids.each_batch(of: BATCH_SIZE) do |versions, index|
+ jobs = versions.map { |version| [MIGRATION, [version.issue_id]] }
+
+ BackgroundMigrationWorker.bulk_perform_async(jobs)
+ end
+ end
+
+ def down
+ # no-op
+ end
+end
diff --git a/db/post_migrate/20191104142124_nullify_users_role.rb b/db/post_migrate/20191104142124_nullify_users_role.rb
new file mode 100644
index 00000000000..540d58e95ba
--- /dev/null
+++ b/db/post_migrate/20191104142124_nullify_users_role.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+
+class NullifyUsersRole < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ disable_ddl_transaction!
+ INDEX_NAME = 'partial_index_users_updated_at_for_cleaning_mistaken_values'.freeze
+
+ DOWNTIME = false
+
+ def up
+ # expected updated users count is around 10K
+ # rubocop: disable Migration/UpdateLargeTable
+ add_concurrent_index(:users, :updated_at, where: 'role = 0', name: INDEX_NAME)
+
+ update_column_in_batches(:users, :role, nil) do |table, query|
+ query.where(table[:updated_at].lt('2019-11-05 12:08:00')).where(table[:role].eq(0))
+ end
+
+ remove_concurrent_index_by_name(:users, INDEX_NAME)
+ end
+
+ def down
+ # noop
+ end
+end
diff --git a/db/post_migrate/20191105094625_set_report_type_for_vulnerabilities.rb b/db/post_migrate/20191105094625_set_report_type_for_vulnerabilities.rb
index 6b7a158584d..5a8529c24d7 100644
--- a/db/post_migrate/20191105094625_set_report_type_for_vulnerabilities.rb
+++ b/db/post_migrate/20191105094625_set_report_type_for_vulnerabilities.rb
@@ -4,12 +4,20 @@ class SetReportTypeForVulnerabilities < ActiveRecord::Migration[5.2]
DOWNTIME = false
def up
- # set report_type based on associated vulnerability_occurrences
+ # set report_type based on vulnerability_occurrences from which the vulnerabilities were promoted,
+ # that is, first vulnerability_occurrences among those having the same vulnerability_id
execute <<~SQL
+ WITH first_findings_for_vulnerabilities AS (
+ SELECT MIN(id) AS id, vulnerability_id
+ FROM vulnerability_occurrences
+ WHERE vulnerability_id IS NOT NULL
+ GROUP BY vulnerability_id
+ )
UPDATE vulnerabilities
SET report_type = vulnerability_occurrences.report_type
- FROM vulnerability_occurrences
- WHERE vulnerabilities.id = vulnerability_occurrences.vulnerability_id
+ FROM vulnerability_occurrences, first_findings_for_vulnerabilities
+ WHERE vulnerability_occurrences.id = first_findings_for_vulnerabilities.id
+ AND vulnerabilities.id = vulnerability_occurrences.vulnerability_id
SQL
# set default report_type for orphan vulnerabilities (there should be none but...)
diff --git a/db/post_migrate/20191108202723_add_unique_constraint_to_software_licenses.rb b/db/post_migrate/20191108202723_add_unique_constraint_to_software_licenses.rb
new file mode 100644
index 00000000000..580d3a189c8
--- /dev/null
+++ b/db/post_migrate/20191108202723_add_unique_constraint_to_software_licenses.rb
@@ -0,0 +1,69 @@
+# frozen_string_literal: true
+
+class AddUniqueConstraintToSoftwareLicenses < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+ DOWNTIME = false
+ NEW_INDEX = 'index_software_licenses_on_unique_name'
+ OLD_INDEX = 'index_software_licenses_on_name'
+
+ disable_ddl_transaction!
+
+ # 12 software licenses will be removed on GitLab.com
+ # 0 software license policies will be updated on GitLab.com
+ def up(attempts: 100)
+ remove_redundant_software_licenses!
+
+ add_concurrent_index :software_licenses, :name, unique: true, name: NEW_INDEX
+ remove_concurrent_index :software_licenses, :name, name: OLD_INDEX
+ rescue ActiveRecord::RecordNotUnique
+ retry if (attempts -= 1) > 0
+
+ raise StandardError, <<~EOS
+ Failed to add an unique index to software_licenses, despite retrying the
+ migration 100 times.
+
+ See https://gitlab.com/gitlab-org/gitlab/merge_requests/19840.
+ EOS
+ end
+
+ def down
+ remove_concurrent_index :software_licenses, :name, unique: true, name: NEW_INDEX
+ add_concurrent_index :software_licenses, :name, name: OLD_INDEX
+ end
+
+ private
+
+ def remove_redundant_software_licenses!
+ redundant_software_licenses = execute <<~SQL
+ SELECT min(id) id, name
+ FROM software_licenses
+ WHERE name IN (select name from software_licenses group by name having count(name) > 1)
+ GROUP BY name
+ SQL
+ say "Detected #{redundant_software_licenses.count} duplicates."
+
+ redundant_software_licenses.each_row do |id, name|
+ say_with_time("Reassigning policies that reference software license #{name}.") do
+ duplicates = software_licenses.where.not(id: id).where(name: name)
+
+ software_license_policies
+ .where(software_license_id: duplicates)
+ .update_all(software_license_id: id)
+
+ duplicates.delete_all
+ end
+ end
+ end
+
+ def table(name)
+ Class.new(ActiveRecord::Base) { self.table_name = name }
+ end
+
+ def software_licenses
+ @software_licenses ||= table(:software_licenses)
+ end
+
+ def software_license_policies
+ @software_license_policies ||= table(:software_license_policies)
+ end
+end
diff --git a/db/post_migrate/20191112023159_complete_pages_metadata_migration.rb b/db/post_migrate/20191112023159_complete_pages_metadata_migration.rb
new file mode 100644
index 00000000000..6468eef8cc1
--- /dev/null
+++ b/db/post_migrate/20191112023159_complete_pages_metadata_migration.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class CompletePagesMetadataMigration < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def up
+ Gitlab::BackgroundMigration.steal('MigratePagesMetadata')
+ end
+
+ def down
+ # no-op
+ end
+end
diff --git a/db/post_migrate/20191118211629_migrate_ops_feature_flags_scopes_target_user_ids.rb b/db/post_migrate/20191118211629_migrate_ops_feature_flags_scopes_target_user_ids.rb
new file mode 100644
index 00000000000..47622a216d9
--- /dev/null
+++ b/db/post_migrate/20191118211629_migrate_ops_feature_flags_scopes_target_user_ids.rb
@@ -0,0 +1,53 @@
+# frozen_string_literal: true
+
+class MigrateOpsFeatureFlagsScopesTargetUserIds < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ class OperationsFeatureFlagScope < ActiveRecord::Base
+ include EachBatch
+ self.table_name = 'operations_feature_flag_scopes'
+ self.inheritance_column = :_type_disabled
+ end
+
+ ###
+ # 2019-11-26
+ #
+ # There are about 1000 rows in the operations_feature_flag_scopes table on gitlab.com.
+ # This migration will update about 30 of them.
+ # https://gitlab.com/gitlab-org/gitlab/merge_requests/20325#note_250742098
+ #
+ # This should take a few seconds to run.
+ # https://gitlab.com/gitlab-org/gitlab/merge_requests/20325#note_254871603
+ #
+ ###
+ def up
+ OperationsFeatureFlagScope.where("strategies @> ?", [{ 'name': 'userWithId' }].to_json).each_batch do |scopes|
+ scopes.each do |scope|
+ if scope.active
+ default_strategy = scope.strategies.find { |s| s['name'] == 'default' }
+
+ if default_strategy.present?
+ scope.update({ strategies: [default_strategy] })
+ end
+ else
+ user_with_id_strategy = scope.strategies.find { |s| s['name'] == 'userWithId' }
+
+ scope.update({
+ active: true,
+ strategies: [user_with_id_strategy]
+ })
+ end
+ end
+ end
+ end
+
+ def down
+ # This is not reversible.
+ # The old Target Users feature required the same list of user ids to be applied to each environment scope.
+ # Now we allow the list of user ids to differ for each scope.
+ end
+end
diff --git a/db/post_migrate/20191119221041_cleanup_software_license_policies_classification_rename.rb b/db/post_migrate/20191119221041_cleanup_software_license_policies_classification_rename.rb
new file mode 100644
index 00000000000..eb605dce5aa
--- /dev/null
+++ b/db/post_migrate/20191119221041_cleanup_software_license_policies_classification_rename.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class CleanupSoftwareLicensePoliciesClassificationRename < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ cleanup_concurrent_column_rename :software_license_policies, :approval_status, :classification
+ end
+
+ def down
+ undo_cleanup_concurrent_column_rename :software_license_policies, :approval_status, :classification
+ end
+end
diff --git a/db/post_migrate/20191121122856_drop_packages_package_metadata_table.rb b/db/post_migrate/20191121122856_drop_packages_package_metadata_table.rb
new file mode 100644
index 00000000000..9e24f64660c
--- /dev/null
+++ b/db/post_migrate/20191121122856_drop_packages_package_metadata_table.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+class DropPackagesPackageMetadataTable < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def up
+ drop_table :packages_package_metadata
+ end
+
+ def down
+ create_table :packages_package_metadata do |t|
+ t.references :package, index: { unique: true }, null: false, foreign_key: { to_table: :packages_packages, on_delete: :cascade }, type: :integer
+ t.binary :metadata, null: false
+ end
+ end
+end
diff --git a/db/post_migrate/20191125024005_cleanup_deploy_access_levels_for_removed_groups.rb b/db/post_migrate/20191125024005_cleanup_deploy_access_levels_for_removed_groups.rb
new file mode 100644
index 00000000000..29592612a02
--- /dev/null
+++ b/db/post_migrate/20191125024005_cleanup_deploy_access_levels_for_removed_groups.rb
@@ -0,0 +1,32 @@
+# frozen_string_literal: true
+
+class CleanupDeployAccessLevelsForRemovedGroups < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def up
+ return unless Gitlab.ee?
+
+ delete = <<~SQL
+ DELETE FROM protected_environment_deploy_access_levels d
+ USING protected_environments p
+ WHERE d.protected_environment_id=p.id
+ AND d.group_id IS NOT NULL
+ AND NOT EXISTS (SELECT 1 FROM project_group_links WHERE project_id=p.project_id AND group_id=d.group_id)
+ RETURNING *
+ SQL
+
+ # At the time of writing there are 4 such records on GitLab.com,
+ # execution time is expected to be around 15ms.
+ records = execute(delete)
+
+ logger = Gitlab::BackgroundMigration::Logger.build
+ records.to_a.each do |record|
+ logger.info record.as_json.merge(message: "protected_environments_deploy_access_levels was deleted")
+ end
+ end
+
+ def down
+ # There is no pragmatic way to restore
+ # the records deleted in the `#up` method above.
+ end
+end
diff --git a/db/post_migrate/20191202031812_drop_operations_feature_flags_clients_token.rb b/db/post_migrate/20191202031812_drop_operations_feature_flags_clients_token.rb
new file mode 100644
index 00000000000..bda461af7bc
--- /dev/null
+++ b/db/post_migrate/20191202031812_drop_operations_feature_flags_clients_token.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+class DropOperationsFeatureFlagsClientsToken < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ # Ignored in 12.5 - https://gitlab.com/gitlab-org/gitlab/merge_requests/18923
+ remove_column :operations_feature_flags_clients, :token
+ end
+
+ def down
+ unless column_exists?(:operations_feature_flags_clients, :token)
+ add_column :operations_feature_flags_clients, :token, :string # rubocop:disable Migration/AddLimitToStringColumns
+ end
+
+ add_concurrent_index :operations_feature_flags_clients, [:project_id, :token], unique: true,
+ name: 'index_operations_feature_flags_clients_on_project_id_and_token'
+ end
+end
diff --git a/db/post_migrate/20191205084057_update_minimum_password_length.rb b/db/post_migrate/20191205084057_update_minimum_password_length.rb
new file mode 100644
index 00000000000..d9324347075
--- /dev/null
+++ b/db/post_migrate/20191205084057_update_minimum_password_length.rb
@@ -0,0 +1,24 @@
+# frozen_string_literal: true
+
+class UpdateMinimumPasswordLength < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def up
+ value_to_be_updated_to = [
+ Devise.password_length.min,
+ ApplicationSetting::DEFAULT_MINIMUM_PASSWORD_LENGTH
+ ].max
+
+ execute "UPDATE application_settings SET minimum_password_length = #{value_to_be_updated_to}"
+
+ ApplicationSetting.expire
+ end
+
+ def down
+ value_to_be_updated_to = ApplicationSetting::DEFAULT_MINIMUM_PASSWORD_LENGTH
+
+ execute "UPDATE application_settings SET minimum_password_length = #{value_to_be_updated_to}"
+
+ ApplicationSetting.expire
+ end
+end
diff --git a/db/post_migrate/20191209215316_knative_0_9_prometheus_update.rb b/db/post_migrate/20191209215316_knative_0_9_prometheus_update.rb
new file mode 100644
index 00000000000..52127f71cd0
--- /dev/null
+++ b/db/post_migrate/20191209215316_knative_0_9_prometheus_update.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class Knative09PrometheusUpdate < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def up
+ ::Gitlab::DatabaseImporters::CommonMetrics::Importer.new.execute
+ end
+
+ def down
+ # no-op
+ end
+end
diff --git a/db/post_migrate/20191212162434_change_commit_user_mentions_commit_id_column_type_cleanup.rb b/db/post_migrate/20191212162434_change_commit_user_mentions_commit_id_column_type_cleanup.rb
new file mode 100644
index 00000000000..aed9d335af9
--- /dev/null
+++ b/db/post_migrate/20191212162434_change_commit_user_mentions_commit_id_column_type_cleanup.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+class ChangeCommitUserMentionsCommitIdColumnTypeCleanup < ActiveRecord::Migration[5.2]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ NEW_INDEX = 'commit_id_for_type_change_and_note_id_index'
+ OLD_INDEX = 'commit_user_mentions_on_commit_id_and_note_id_index'
+
+ def up
+ cleanup_concurrent_column_type_change :commit_user_mentions, :commit_id
+ end
+
+ def down
+ change_column_type_concurrently :commit_user_mentions, :commit_id, :binary
+
+ # change_column_type_concurrently creates a new index based on existing commit_id_and_note_id_index` naming it
+ # `commit_id_for_type_change_and_note_id_index` so we'll rename it back to its original name.
+ add_concurrent_index :commit_user_mentions, [:commit_id_for_type_change, :note_id], name: OLD_INDEX
+ remove_concurrent_index_by_name :commit_user_mentions, NEW_INDEX
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 0dce19a29d7..acf51164e0b 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 2019_11_22_135327) do
+ActiveRecord::Schema.define(version: 2019_12_16_183532) do
# These are extensions that must be enabled in order to support this database
enable_extension "pg_trgm"
@@ -325,10 +325,11 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.string "encrypted_asset_proxy_secret_key_iv"
t.string "static_objects_external_storage_url", limit: 255
t.string "static_objects_external_storage_auth_token", limit: 255
+ t.integer "max_personal_access_token_lifetime"
t.boolean "throttle_protected_paths_enabled", default: false, null: false
t.integer "throttle_protected_paths_requests_per_period", default: 10, null: false
t.integer "throttle_protected_paths_period_in_seconds", default: 60, null: false
- t.string "protected_paths", limit: 255, default: ["/users/password", "/users/sign_in", "/api/v3/session.json", "/api/v3/session", "/api/v4/session.json", "/api/v4/session", "/users", "/users/confirmation", "/unsubscribes/", "/import/github/personal_access_token"], array: true
+ t.string "protected_paths", limit: 255, default: ["/users/password", "/users/sign_in", "/api/v3/session.json", "/api/v3/session", "/api/v4/session.json", "/api/v4/session", "/users", "/users/confirmation", "/unsubscribes/", "/import/github/personal_access_token", "/admin/session"], array: true
t.boolean "throttle_incident_management_notification_enabled", default: false, null: false
t.integer "throttle_incident_management_notification_period_in_seconds", default: 3600
t.integer "throttle_incident_management_notification_per_period", default: 3600
@@ -349,6 +350,8 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.boolean "sourcegraph_enabled", default: false, null: false
t.string "sourcegraph_url", limit: 255
t.boolean "sourcegraph_public_only", default: true, null: false
+ t.bigint "snippet_size_limit", default: 52428800, null: false
+ t.integer "minimum_password_length", default: 8, null: false
t.text "encrypted_akismet_api_key"
t.string "encrypted_akismet_api_key_iv", limit: 255
t.text "encrypted_elasticsearch_aws_secret_access_key"
@@ -504,6 +507,7 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.integer "project_id"
t.integer "group_id"
t.string "type", null: false
+ t.string "name", limit: 255
t.datetime_with_timezone "created_at", null: false
t.datetime_with_timezone "updated_at", null: false
t.index ["group_id"], name: "index_badges_on_group_id"
@@ -571,6 +575,8 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.string "font"
t.text "message_html", null: false
t.integer "cached_markdown_version"
+ t.string "target_path", limit: 255
+ t.integer "broadcast_type", limit: 2, default: 1, null: false
t.index ["starts_at", "ends_at", "id"], name: "index_broadcast_messages_on_starts_at_and_ends_at_and_id"
end
@@ -600,6 +606,7 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
create_table "ci_build_needs", id: :serial, force: :cascade do |t|
t.integer "build_id", null: false
t.text "name", null: false
+ t.boolean "artifacts", default: true, null: false
t.index ["build_id", "name"], name: "index_ci_build_needs_on_build_id_and_name", unique: true
end
@@ -686,6 +693,7 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.index ["commit_id", "type", "ref"], name: "index_ci_builds_on_commit_id_and_type_and_ref"
t.index ["name"], name: "index_ci_builds_on_name_for_security_products_values", where: "((name)::text = ANY (ARRAY[('container_scanning'::character varying)::text, ('dast'::character varying)::text, ('dependency_scanning'::character varying)::text, ('license_management'::character varying)::text, ('sast'::character varying)::text]))"
t.index ["project_id", "id"], name: "index_ci_builds_on_project_id_and_id"
+ t.index ["project_id", "name", "ref"], name: "index_ci_builds_on_project_id_and_name_and_ref", where: "(((type)::text = 'Ci::Build'::text) AND ((status)::text = 'success'::text) AND ((retried = false) OR (retried IS NULL)))"
t.index ["project_id", "status"], name: "index_ci_builds_project_id_and_status_for_live_jobs_partial2", where: "(((type)::text = 'Ci::Build'::text) AND ((status)::text = ANY (ARRAY[('running'::character varying)::text, ('pending'::character varying)::text, ('created'::character varying)::text])))"
t.index ["project_id"], name: "index_ci_builds_on_project_id_for_successfull_pages_deploy", where: "(((type)::text = 'GenericCommitStatus'::text) AND ((stage)::text = 'deploy'::text) AND ((name)::text = 'pages:deploy'::text) AND ((status)::text = 'success'::text))"
t.index ["protected"], name: "index_ci_builds_on_protected"
@@ -712,6 +720,7 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.jsonb "config_options"
t.jsonb "config_variables"
t.boolean "has_exposed_artifacts"
+ t.string "environment_auto_stop_in", limit: 255
t.index ["build_id"], name: "index_ci_builds_metadata_on_build_id", unique: true
t.index ["build_id"], name: "index_ci_builds_metadata_on_build_id_and_has_exposed_artifacts", where: "(has_exposed_artifacts IS TRUE)"
t.index ["build_id"], name: "index_ci_builds_metadata_on_build_id_and_interruptible", where: "(interruptible = true)"
@@ -817,6 +826,7 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.integer "pipeline_id", null: false
t.integer "variable_type", limit: 2, default: 1, null: false
t.index ["pipeline_id", "key"], name: "index_ci_pipeline_variables_on_pipeline_id_and_key", unique: true
+ t.index ["pipeline_id"], name: "index_ci_pipeline_variables_on_pipeline_id", where: "((key)::text = 'AUTO_DEVOPS_MODSECURITY_SEC_RULE_ENGINE'::text)"
end
create_table "ci_pipelines", id: :serial, force: :cascade do |t|
@@ -856,6 +866,7 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.index ["project_id", "sha"], name: "index_ci_pipelines_on_project_id_and_sha"
t.index ["project_id", "source"], name: "index_ci_pipelines_on_project_id_and_source"
t.index ["project_id", "status", "config_source"], name: "index_ci_pipelines_on_project_id_and_status_and_config_source"
+ t.index ["project_id", "status", "updated_at"], name: "index_ci_pipelines_on_project_id_and_status_and_updated_at"
t.index ["project_id"], name: "index_ci_pipelines_on_project_id"
t.index ["status"], name: "index_ci_pipelines_on_status"
t.index ["user_id"], name: "index_ci_pipelines_on_user_id"
@@ -974,6 +985,7 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.boolean "masked", default: false, null: false
t.integer "variable_type", limit: 2, default: 1, null: false
t.index ["project_id", "key", "environment_scope"], name: "index_ci_variables_on_project_id_and_key_and_environment_scope", unique: true
+ t.index ["project_id"], name: "index_ci_variables_on_project_id", where: "((key)::text = 'AUTO_DEVOPS_MODSECURITY_SEC_RULE_ENGINE'::text)"
end
create_table "cluster_groups", id: :serial, force: :cascade do |t|
@@ -1204,6 +1216,28 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.index ["project_id"], name: "index_clusters_kubernetes_namespaces_on_project_id"
end
+ create_table "commit_user_mentions", force: :cascade do |t|
+ t.integer "note_id", null: false
+ t.integer "mentioned_users_ids", array: true
+ t.integer "mentioned_projects_ids", array: true
+ t.integer "mentioned_groups_ids", array: true
+ t.string "commit_id", null: false
+ t.index ["commit_id", "note_id"], name: "commit_id_and_note_id_index"
+ t.index ["note_id"], name: "index_commit_user_mentions_on_note_id", unique: true
+ end
+
+ create_table "container_expiration_policies", primary_key: "project_id", id: :bigint, default: nil, force: :cascade do |t|
+ t.datetime_with_timezone "created_at", null: false
+ t.datetime_with_timezone "updated_at", null: false
+ t.datetime_with_timezone "next_run_at"
+ t.string "name_regex", limit: 255
+ t.string "cadence", limit: 12, default: "7d", null: false
+ t.string "older_than", limit: 12
+ t.integer "keep_n"
+ t.boolean "enabled", default: false, null: false
+ t.index ["next_run_at", "enabled"], name: "index_container_expiration_policies_on_next_run_at_and_enabled"
+ end
+
create_table "container_repositories", id: :serial, force: :cascade do |t|
t.integer "project_id", null: false
t.string "name", null: false
@@ -1273,6 +1307,7 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.datetime "created_at"
t.datetime "updated_at"
t.boolean "can_push", default: false, null: false
+ t.index ["deploy_key_id"], name: "index_deploy_keys_projects_on_deploy_key_id"
t.index ["project_id"], name: "index_deploy_keys_projects_on_project_id"
end
@@ -1321,10 +1356,13 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.index ["environment_id", "iid", "project_id"], name: "index_deployments_on_environment_id_and_iid_and_project_id"
t.index ["environment_id", "status"], name: "index_deployments_on_environment_id_and_status"
t.index ["id"], name: "partial_index_deployments_for_legacy_successful_deployments", where: "((finished_at IS NULL) AND (status = 2))"
+ t.index ["project_id", "id"], name: "index_deployments_on_project_id_and_id", order: { id: :desc }
t.index ["project_id", "iid"], name: "index_deployments_on_project_id_and_iid", unique: true
+ t.index ["project_id", "ref"], name: "index_deployments_on_project_id_and_ref"
t.index ["project_id", "status", "created_at"], name: "index_deployments_on_project_id_and_status_and_created_at"
t.index ["project_id", "status"], name: "index_deployments_on_project_id_and_status"
- t.index ["project_id", "updated_at"], name: "index_deployments_on_project_id_and_updated_at"
+ t.index ["project_id", "updated_at", "id"], name: "index_deployments_on_project_id_and_updated_at_and_id", order: { updated_at: :desc, id: :desc }
+ t.index ["project_id"], name: "partial_index_deployments_for_project_id_and_tag", where: "(tag IS TRUE)"
end
create_table "description_versions", force: :cascade do |t|
@@ -1367,6 +1405,16 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.index ["sha", "issue_id"], name: "index_design_management_versions_on_sha_and_issue_id", unique: true
end
+ create_table "design_user_mentions", force: :cascade do |t|
+ t.integer "design_id", null: false
+ t.integer "note_id", null: false
+ t.integer "mentioned_users_ids", array: true
+ t.integer "mentioned_projects_ids", array: true
+ t.integer "mentioned_groups_ids", array: true
+ t.index ["design_id", "note_id"], name: "design_user_mentions_on_design_id_and_note_id_index"
+ t.index ["note_id"], name: "index_design_user_mentions_on_note_id", unique: true
+ end
+
create_table "draft_notes", force: :cascade do |t|
t.integer "merge_request_id", null: false
t.integer "author_id", null: false
@@ -1418,10 +1466,11 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.string "environment_type"
t.string "state", default: "available", null: false
t.string "slug", null: false
+ t.datetime_with_timezone "auto_stop_at"
t.index ["name"], name: "index_environments_on_name_varchar_pattern_ops", opclass: :varchar_pattern_ops
t.index ["project_id", "name"], name: "index_environments_on_project_id_and_name", unique: true
t.index ["project_id", "slug"], name: "index_environments_on_project_id_and_slug", unique: true
- t.index ["project_id", "state"], name: "index_environments_on_project_id_and_state"
+ t.index ["project_id", "state", "environment_type"], name: "index_environments_on_project_id_state_environment_type"
end
create_table "epic_issues", id: :serial, force: :cascade do |t|
@@ -1439,6 +1488,17 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.index ["epic_id"], name: "index_epic_metrics"
end
+ create_table "epic_user_mentions", force: :cascade do |t|
+ t.integer "epic_id", null: false
+ t.integer "note_id"
+ t.integer "mentioned_users_ids", array: true
+ t.integer "mentioned_projects_ids", array: true
+ t.integer "mentioned_groups_ids", array: true
+ t.index ["epic_id", "note_id"], name: "epic_user_mentions_on_epic_id_and_note_id_index", unique: true
+ t.index ["epic_id"], name: "epic_user_mentions_on_epic_id_index", unique: true, where: "(note_id IS NULL)"
+ t.index ["note_id"], name: "index_epic_user_mentions_on_note_id", unique: true, where: "(note_id IS NOT NULL)"
+ end
+
create_table "epics", id: :serial, force: :cascade do |t|
t.integer "milestone_id"
t.integer "group_id", null: false
@@ -1620,6 +1680,8 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.text "new_wiki_disk_path", null: false
t.integer "old_storage_version", limit: 2
t.integer "new_storage_version", limit: 2, null: false
+ t.text "old_design_disk_path"
+ t.text "new_design_disk_path"
t.index ["project_id"], name: "index_geo_hashed_storage_migrated_events_on_project_id"
end
@@ -1790,6 +1852,24 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.index ["upload_id"], name: "index_geo_upload_deleted_events_on_upload_id"
end
+ create_table "gitlab_subscription_histories", force: :cascade do |t|
+ t.datetime_with_timezone "gitlab_subscription_created_at"
+ t.datetime_with_timezone "gitlab_subscription_updated_at"
+ t.date "start_date"
+ t.date "end_date"
+ t.date "trial_ends_on"
+ t.integer "namespace_id"
+ t.integer "hosted_plan_id"
+ t.integer "max_seats_used"
+ t.integer "seats"
+ t.boolean "trial"
+ t.integer "change_type", limit: 2
+ t.bigint "gitlab_subscription_id", null: false
+ t.datetime_with_timezone "created_at"
+ t.date "trial_starts_on"
+ t.index ["gitlab_subscription_id"], name: "index_gitlab_subscription_histories_on_gitlab_subscription_id"
+ end
+
create_table "gitlab_subscriptions", force: :cascade do |t|
t.datetime_with_timezone "created_at", null: false
t.datetime_with_timezone "updated_at", null: false
@@ -1801,6 +1881,7 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.integer "max_seats_used", default: 0
t.integer "seats", default: 0
t.boolean "trial", default: false
+ t.date "trial_starts_on"
t.index ["hosted_plan_id"], name: "index_gitlab_subscriptions_on_hosted_plan_id"
t.index ["namespace_id"], name: "index_gitlab_subscriptions_on_namespace_id", unique: true
end
@@ -1852,6 +1933,7 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.string "encrypted_token_iv", limit: 255, null: false
t.string "grafana_url", limit: 1024, null: false
t.boolean "enabled", default: false, null: false
+ t.index ["enabled"], name: "index_grafana_integrations_on_enabled", where: "(enabled IS TRUE)"
t.index ["project_id"], name: "index_grafana_integrations_on_project_id"
end
@@ -1865,6 +1947,13 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.index ["key", "value"], name: "index_group_custom_attributes_on_key_and_value"
end
+ create_table "group_deletion_schedules", primary_key: "group_id", id: :bigint, default: nil, force: :cascade do |t|
+ t.bigint "user_id", null: false
+ t.date "marked_for_deletion_on", null: false
+ t.index ["marked_for_deletion_on"], name: "index_group_deletion_schedules_on_marked_for_deletion_on"
+ t.index ["user_id"], name: "index_group_deletion_schedules_on_user_id"
+ end
+
create_table "group_group_links", force: :cascade do |t|
t.datetime_with_timezone "created_at", null: false
t.datetime_with_timezone "updated_at", null: false
@@ -1907,6 +1996,18 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.index ["updated_at"], name: "index_import_export_uploads_on_updated_at"
end
+ create_table "import_failures", force: :cascade do |t|
+ t.integer "relation_index"
+ t.bigint "project_id", null: false
+ t.datetime_with_timezone "created_at", null: false
+ t.string "relation_key", limit: 64
+ t.string "exception_class", limit: 128
+ t.string "correlation_id_value", limit: 128
+ t.string "exception_message", limit: 255
+ t.index ["correlation_id_value"], name: "index_import_failures_on_correlation_id_value"
+ t.index ["project_id"], name: "index_import_failures_on_project_id"
+ end
+
create_table "index_statuses", id: :serial, force: :cascade do |t|
t.integer "project_id", null: false
t.datetime "indexed_at"
@@ -1955,6 +2056,7 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.integer "target_id", null: false
t.datetime "created_at"
t.datetime "updated_at"
+ t.integer "link_type", limit: 2, default: 0, null: false
t.index ["source_id", "target_id"], name: "index_issue_links_on_source_id_and_target_id", unique: true
t.index ["source_id"], name: "index_issue_links_on_source_id"
t.index ["target_id"], name: "index_issue_links_on_target_id"
@@ -1984,6 +2086,17 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.index ["service_id"], name: "index_issue_tracker_data_on_service_id"
end
+ create_table "issue_user_mentions", force: :cascade do |t|
+ t.integer "issue_id", null: false
+ t.integer "note_id"
+ t.integer "mentioned_users_ids", array: true
+ t.integer "mentioned_projects_ids", array: true
+ t.integer "mentioned_groups_ids", array: true
+ t.index ["issue_id", "note_id"], name: "issue_user_mentions_on_issue_id_and_note_id_index", unique: true
+ t.index ["issue_id"], name: "issue_user_mentions_on_issue_id_index", unique: true, where: "(note_id IS NULL)"
+ t.index ["note_id"], name: "index_issue_user_mentions_on_note_id", unique: true, where: "(note_id IS NOT NULL)"
+ end
+
create_table "issues", id: :serial, force: :cascade do |t|
t.string "title"
t.integer "author_id"
@@ -2013,6 +2126,7 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.integer "closed_by_id"
t.integer "state_id", limit: 2, default: 1, null: false
t.integer "duplicated_to_id"
+ t.integer "promoted_to_epic_id"
t.index ["author_id"], name: "index_issues_on_author_id"
t.index ["closed_by_id"], name: "index_issues_on_closed_by_id"
t.index ["confidential"], name: "index_issues_on_confidential"
@@ -2029,6 +2143,7 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.index ["project_id", "relative_position", "state_id", "id"], name: "idx_issues_on_project_id_and_rel_position_and_state_id_and_id", order: { id: :desc }
t.index ["project_id", "updated_at", "id", "state"], name: "index_issues_on_project_id_and_updated_at_and_id_and_state"
t.index ["project_id", "updated_at", "id", "state_id"], name: "idx_issues_on_project_id_and_updated_at_and_id_and_state_id"
+ t.index ["promoted_to_epic_id"], name: "index_issues_on_promoted_to_epic_id", where: "(promoted_to_epic_id IS NOT NULL)"
t.index ["relative_position"], name: "index_issues_on_relative_position"
t.index ["state"], name: "index_issues_on_state"
t.index ["state_id"], name: "idx_issues_on_state_id"
@@ -2099,8 +2214,11 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.string "fingerprint"
t.boolean "public", default: false, null: false
t.datetime "last_used_at"
+ t.binary "fingerprint_sha256"
t.index ["fingerprint"], name: "index_keys_on_fingerprint", unique: true
+ t.index ["fingerprint_sha256"], name: "index_keys_on_fingerprint_sha256"
t.index ["id", "type"], name: "index_on_deploy_keys_id_and_type_and_public", unique: true, where: "(public = true)"
+ t.index ["last_used_at"], name: "index_keys_on_last_used_at", order: "DESC NULLS LAST"
t.index ["user_id"], name: "index_keys_on_user_id"
end
@@ -2138,6 +2256,8 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.integer "group_id"
t.integer "cached_markdown_version"
t.index ["group_id", "project_id", "title"], name: "index_labels_on_group_id_and_project_id_and_title", unique: true
+ t.index ["group_id", "title"], name: "index_labels_on_group_id_and_title", where: "(project_id = NULL::integer)"
+ t.index ["project_id", "title"], name: "index_labels_on_project_id_and_title", where: "(group_id = NULL::integer)"
t.index ["project_id"], name: "index_labels_on_project_id"
t.index ["template"], name: "index_labels_on_template", where: "template"
t.index ["title"], name: "index_labels_on_title"
@@ -2211,6 +2331,7 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.integer "user_id"
t.integer "milestone_id"
t.integer "max_issue_count", default: 0, null: false
+ t.integer "max_issue_weight", default: 0, null: false
t.index ["board_id", "label_id"], name: "index_lists_on_board_id_and_label_id", unique: true
t.index ["label_id"], name: "index_lists_on_label_id"
t.index ["list_type"], name: "index_lists_on_list_type"
@@ -2339,6 +2460,17 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.index ["pipeline_id"], name: "index_merge_request_metrics_on_pipeline_id"
end
+ create_table "merge_request_user_mentions", force: :cascade do |t|
+ t.integer "merge_request_id", null: false
+ t.integer "note_id"
+ t.integer "mentioned_users_ids", array: true
+ t.integer "mentioned_projects_ids", array: true
+ t.integer "mentioned_groups_ids", array: true
+ t.index ["merge_request_id", "note_id"], name: "merge_request_user_mentions_on_mr_id_and_note_id_index", unique: true
+ t.index ["merge_request_id"], name: "merge_request_user_mentions_on_mr_id_index", unique: true, where: "(note_id IS NULL)"
+ t.index ["note_id"], name: "index_merge_request_user_mentions_on_note_id", unique: true, where: "(note_id IS NOT NULL)"
+ end
+
create_table "merge_requests", id: :serial, force: :cascade do |t|
t.string "target_branch", null: false
t.string "source_branch", null: false
@@ -2424,9 +2556,10 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.datetime_with_timezone "updated_at", null: false
t.integer "target_project_id", null: false
t.text "target_branch", null: false
+ t.integer "status", limit: 2, default: 0, null: false
t.index ["merge_request_id"], name: "index_merge_trains_on_merge_request_id", unique: true
t.index ["pipeline_id"], name: "index_merge_trains_on_pipeline_id"
- t.index ["target_project_id"], name: "index_merge_trains_on_target_project_id"
+ t.index ["target_project_id", "target_branch", "status"], name: "index_for_status_per_branch_per_project"
t.index ["user_id"], name: "index_merge_trains_on_user_id"
end
@@ -2523,6 +2656,7 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.boolean "emails_disabled"
t.integer "max_pages_size"
t.integer "max_artifacts_size"
+ t.boolean "mentions_disabled"
t.index ["created_at"], name: "index_namespaces_on_created_at"
t.index ["custom_project_templates_group_id", "type"], name: "index_namespaces_on_custom_project_templates_group_id_and_type", where: "(custom_project_templates_group_id IS NOT NULL)"
t.index ["file_template_project_id"], name: "index_namespaces_on_file_template_project_id"
@@ -2692,12 +2826,17 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
create_table "operations_feature_flags_clients", force: :cascade do |t|
t.integer "project_id", null: false
- t.string "token"
t.string "token_encrypted"
- t.index ["project_id", "token"], name: "index_operations_feature_flags_clients_on_project_id_and_token", unique: true
t.index ["project_id", "token_encrypted"], name: "index_feature_flags_clients_on_project_id_and_token_encrypted", unique: true
end
+ create_table "packages_build_infos", force: :cascade do |t|
+ t.integer "package_id", null: false
+ t.integer "pipeline_id"
+ t.index ["package_id"], name: "index_packages_build_infos_on_package_id", unique: true
+ t.index ["pipeline_id"], name: "index_packages_build_infos_on_pipeline_id"
+ end
+
create_table "packages_conan_file_metadata", force: :cascade do |t|
t.bigint "package_file_id", null: false
t.datetime_with_timezone "created_at", null: false
@@ -2718,6 +2857,20 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.index ["package_id"], name: "index_packages_conan_metadata_on_package_id", unique: true
end
+ create_table "packages_dependencies", force: :cascade do |t|
+ t.string "name", limit: 255, null: false
+ t.string "version_pattern", limit: 255, null: false
+ t.index ["name", "version_pattern"], name: "index_packages_dependencies_on_name_and_version_pattern", unique: true
+ end
+
+ create_table "packages_dependency_links", force: :cascade do |t|
+ t.bigint "package_id", null: false
+ t.bigint "dependency_id", null: false
+ t.integer "dependency_type", limit: 2, null: false
+ t.index ["dependency_id"], name: "index_packages_dependency_links_on_dependency_id"
+ t.index ["package_id", "dependency_id", "dependency_type"], name: "idx_pkgs_dep_links_on_pkg_id_dependency_id_dependency_type", unique: true
+ end
+
create_table "packages_maven_metadata", force: :cascade do |t|
t.bigint "package_id", null: false
t.datetime_with_timezone "created_at", null: false
@@ -2743,12 +2896,6 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.index ["package_id", "file_name"], name: "index_packages_package_files_on_package_id_and_file_name"
end
- create_table "packages_package_metadata", force: :cascade do |t|
- t.integer "package_id", null: false
- t.binary "metadata", null: false
- t.index ["package_id"], name: "index_packages_package_metadata_on_package_id", unique: true
- end
-
create_table "packages_package_tags", force: :cascade do |t|
t.integer "package_id", null: false
t.string "name", limit: 255, null: false
@@ -2763,6 +2910,7 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.string "version"
t.integer "package_type", limit: 2, null: false
t.index ["name"], name: "index_packages_packages_on_name_trigram", opclass: :gin_trgm_ops, using: :gin
+ t.index ["project_id", "name", "version", "package_type"], name: "idx_packages_packages_on_project_id_name_version_package_type"
t.index ["project_id"], name: "index_packages_packages_on_project_id"
end
@@ -2795,13 +2943,17 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.datetime_with_timezone "certificate_valid_not_before"
t.datetime_with_timezone "certificate_valid_not_after"
t.integer "certificate_source", limit: 2, default: 0, null: false
+ t.boolean "wildcard", default: false, null: false
+ t.integer "domain_type", limit: 2, default: 2, null: false
t.index ["certificate_source", "certificate_valid_not_after"], name: "index_pages_domains_need_auto_ssl_renewal", where: "(auto_ssl_enabled = true)"
t.index ["domain"], name: "index_pages_domains_on_domain", unique: true
+ t.index ["domain_type"], name: "index_pages_domains_on_domain_type"
t.index ["project_id", "enabled_until"], name: "index_pages_domains_on_project_id_and_enabled_until"
t.index ["project_id"], name: "index_pages_domains_on_project_id"
t.index ["remove_at"], name: "index_pages_domains_on_remove_at"
t.index ["verified_at", "enabled_until"], name: "index_pages_domains_on_verified_at_and_enabled_until"
t.index ["verified_at"], name: "index_pages_domains_on_verified_at"
+ t.index ["wildcard"], name: "index_pages_domains_on_wildcard"
end
create_table "path_locks", id: :serial, force: :cascade do |t|
@@ -2825,7 +2977,9 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.string "scopes", default: "--- []\n", null: false
t.boolean "impersonation", default: false, null: false
t.string "token_digest"
+ t.boolean "expire_notification_delivered", default: false, null: false
t.index ["token_digest"], name: "index_personal_access_tokens_on_token_digest", unique: true
+ t.index ["user_id", "expires_at"], name: "index_pat_on_user_id_and_expires_at"
t.index ["user_id"], name: "index_personal_access_tokens_on_user_id"
end
@@ -2834,6 +2988,7 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.integer "ci_active_pipelines", default: 0, null: false
t.integer "ci_pipeline_size", default: 0, null: false
t.integer "ci_active_jobs", default: 0, null: false
+ t.integer "project_hooks", default: 0, null: false
t.index ["plan_id"], name: "index_plan_limits_on_plan_id", unique: true
end
@@ -2852,7 +3007,7 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.integer "source_project_id"
t.index ["disk_path"], name: "index_pool_repositories_on_disk_path", unique: true
t.index ["shard_id"], name: "index_pool_repositories_on_shard_id"
- t.index ["source_project_id"], name: "index_pool_repositories_on_source_project_id", unique: true
+ t.index ["source_project_id", "shard_id"], name: "index_pool_repositories_on_source_project_id_and_shard_id", unique: true
end
create_table "programming_languages", id: :serial, force: :cascade do |t|
@@ -3137,7 +3292,6 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.bigint "pool_repository_id"
t.string "runners_token_encrypted"
t.string "bfg_object_map"
- t.boolean "merge_requests_require_code_owner_approval"
t.boolean "detected_repository_languages"
t.boolean "merge_requests_disable_committers_approval"
t.boolean "require_password_to_approve"
@@ -3149,7 +3303,6 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.date "marked_for_deletion_at"
t.integer "marked_for_deletion_by_user_id"
t.index "lower((name)::text)", name: "index_projects_on_lower_name"
- t.index ["archived", "pending_delete", "merge_requests_require_code_owner_approval"], name: "projects_requiring_code_owner_approval", where: "((pending_delete = false) AND (archived = false) AND (merge_requests_require_code_owner_approval = true))"
t.index ["created_at", "id"], name: "index_projects_on_created_at_and_id"
t.index ["creator_id"], name: "index_projects_on_creator_id"
t.index ["description"], name: "index_projects_on_description_trigram", opclass: :gin_trgm_ops, using: :gin
@@ -3420,7 +3573,7 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.text "reference_html"
t.index ["epic_id"], name: "index_resource_label_events_on_epic_id"
t.index ["issue_id"], name: "index_resource_label_events_on_issue_id"
- t.index ["label_id"], name: "index_resource_label_events_on_label_id"
+ t.index ["label_id", "action"], name: "index_resource_label_events_on_label_id_and_action"
t.index ["merge_request_id"], name: "index_resource_label_events_on_merge_request_id"
t.index ["user_id"], name: "index_resource_label_events_on_user_id"
end
@@ -3492,6 +3645,28 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.index ["reply_key"], name: "index_sent_notifications_on_reply_key", unique: true
end
+ create_table "sentry_issues", force: :cascade do |t|
+ t.bigint "issue_id", null: false
+ t.bigint "sentry_issue_identifier", null: false
+ t.index ["issue_id"], name: "index_sentry_issues_on_issue_id", unique: true
+ end
+
+ create_table "serverless_domain_cluster", primary_key: "uuid", id: :string, limit: 14, force: :cascade do |t|
+ t.bigint "pages_domain_id", null: false
+ t.bigint "clusters_applications_knative_id", null: false
+ t.bigint "creator_id"
+ t.datetime_with_timezone "created_at", null: false
+ t.datetime_with_timezone "updated_at", null: false
+ t.index ["clusters_applications_knative_id"], name: "idx_serverless_domain_cluster_on_clusters_applications_knative", unique: true
+ t.index ["creator_id"], name: "index_serverless_domain_cluster_on_creator_id"
+ t.index ["pages_domain_id"], name: "index_serverless_domain_cluster_on_pages_domain_id"
+ end
+
+ create_table "service_desk_settings", primary_key: "project_id", id: :bigint, default: nil, force: :cascade do |t|
+ t.string "issue_template_key", limit: 255
+ t.string "outgoing_name", limit: 255
+ end
+
create_table "services", id: :serial, force: :cascade do |t|
t.string "type"
t.string "title"
@@ -3516,6 +3691,7 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.boolean "confidential_note_events", default: true
t.boolean "deployment_events", default: false, null: false
t.string "description", limit: 500
+ t.boolean "comment_on_event_enabled", default: true, null: false
t.index ["project_id"], name: "index_services_on_project_id"
t.index ["template"], name: "index_services_on_template"
t.index ["type"], name: "index_services_on_type"
@@ -3546,6 +3722,17 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.index ["user_id"], name: "index_smartcard_identities_on_user_id"
end
+ create_table "snippet_user_mentions", force: :cascade do |t|
+ t.integer "snippet_id", null: false
+ t.integer "note_id"
+ t.integer "mentioned_users_ids", array: true
+ t.integer "mentioned_projects_ids", array: true
+ t.integer "mentioned_groups_ids", array: true
+ t.index ["note_id"], name: "index_snippet_user_mentions_on_note_id", unique: true, where: "(note_id IS NOT NULL)"
+ t.index ["snippet_id", "note_id"], name: "snippet_user_mentions_on_snippet_id_and_note_id_index", unique: true
+ t.index ["snippet_id"], name: "snippet_user_mentions_on_snippet_id_index", unique: true, where: "(note_id IS NULL)"
+ end
+
create_table "snippets", id: :serial, force: :cascade do |t|
t.string "title"
t.text "content"
@@ -3561,19 +3748,23 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.integer "cached_markdown_version"
t.text "description"
t.text "description_html"
+ t.string "encrypted_secret_token", limit: 255
+ t.string "encrypted_secret_token_iv", limit: 255
+ t.boolean "secret", default: false, null: false
t.index ["author_id"], name: "index_snippets_on_author_id"
t.index ["content"], name: "index_snippets_on_content_trigram", opclass: :gin_trgm_ops, using: :gin
+ t.index ["created_at"], name: "index_snippets_on_created_at"
t.index ["file_name"], name: "index_snippets_on_file_name_trigram", opclass: :gin_trgm_ops, using: :gin
t.index ["project_id", "visibility_level"], name: "index_snippets_on_project_id_and_visibility_level"
t.index ["title"], name: "index_snippets_on_title_trigram", opclass: :gin_trgm_ops, using: :gin
t.index ["updated_at"], name: "index_snippets_on_updated_at"
- t.index ["visibility_level"], name: "index_snippets_on_visibility_level"
+ t.index ["visibility_level", "secret"], name: "index_snippets_on_visibility_level_and_secret"
end
create_table "software_license_policies", id: :serial, force: :cascade do |t|
t.integer "project_id", null: false
t.integer "software_license_id", null: false
- t.integer "approval_status", default: 0, null: false
+ t.integer "classification", default: 0, null: false
t.index ["project_id", "software_license_id"], name: "index_software_license_policies_unique_per_project", unique: true
t.index ["software_license_id"], name: "index_software_license_policies_on_software_license_id"
end
@@ -3581,7 +3772,7 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
create_table "software_licenses", id: :serial, force: :cascade do |t|
t.string "name", null: false
t.string "spdx_identifier", limit: 255
- t.index ["name"], name: "index_software_licenses_on_name"
+ t.index ["name"], name: "index_software_licenses_on_unique_name", unique: true
t.index ["spdx_identifier"], name: "index_software_licenses_on_spdx_identifier"
end
@@ -3677,6 +3868,7 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
t.datetime "spent_at"
t.index ["issue_id"], name: "index_timelogs_on_issue_id"
t.index ["merge_request_id"], name: "index_timelogs_on_merge_request_id"
+ t.index ["spent_at"], name: "index_timelogs_on_spent_at", where: "(spent_at IS NOT NULL)"
t.index ["user_id"], name: "index_timelogs_on_user_id"
end
@@ -4264,6 +4456,8 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
add_foreign_key "clusters_kubernetes_namespaces", "clusters", on_delete: :cascade
add_foreign_key "clusters_kubernetes_namespaces", "environments", on_delete: :nullify
add_foreign_key "clusters_kubernetes_namespaces", "projects", on_delete: :nullify
+ add_foreign_key "commit_user_mentions", "notes", on_delete: :cascade
+ add_foreign_key "container_expiration_policies", "projects", on_delete: :cascade
add_foreign_key "container_repositories", "projects"
add_foreign_key "dependency_proxy_blobs", "namespaces", column: "group_id", on_delete: :cascade
add_foreign_key "dependency_proxy_group_settings", "namespaces", column: "group_id", on_delete: :cascade
@@ -4281,6 +4475,8 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
add_foreign_key "design_management_designs_versions", "design_management_versions", column: "version_id", name: "fk_f4d25ba00c", on_delete: :cascade
add_foreign_key "design_management_versions", "issues", on_delete: :cascade
add_foreign_key "design_management_versions", "users", column: "author_id", name: "fk_c1440b4896", on_delete: :nullify
+ add_foreign_key "design_user_mentions", "design_management_designs", column: "design_id", on_delete: :cascade
+ add_foreign_key "design_user_mentions", "notes", on_delete: :cascade
add_foreign_key "draft_notes", "merge_requests", on_delete: :cascade
add_foreign_key "draft_notes", "users", column: "author_id", on_delete: :cascade
add_foreign_key "elasticsearch_indexed_namespaces", "namespaces", on_delete: :cascade
@@ -4289,6 +4485,8 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
add_foreign_key "epic_issues", "epics", on_delete: :cascade
add_foreign_key "epic_issues", "issues", on_delete: :cascade
add_foreign_key "epic_metrics", "epics", on_delete: :cascade
+ add_foreign_key "epic_user_mentions", "epics", on_delete: :cascade
+ add_foreign_key "epic_user_mentions", "notes", on_delete: :cascade
add_foreign_key "epics", "epics", column: "due_date_sourcing_epic_id", name: "fk_013c9f36ca", on_delete: :nullify
add_foreign_key "epics", "epics", column: "parent_id", name: "fk_25b99c1be3", on_delete: :cascade
add_foreign_key "epics", "epics", column: "start_date_sourcing_epic_id", name: "fk_9d480c64b2", on_delete: :nullify
@@ -4339,6 +4537,8 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
add_foreign_key "gpg_signatures", "projects", on_delete: :cascade
add_foreign_key "grafana_integrations", "projects", on_delete: :cascade
add_foreign_key "group_custom_attributes", "namespaces", column: "group_id", on_delete: :cascade
+ add_foreign_key "group_deletion_schedules", "namespaces", column: "group_id", on_delete: :cascade
+ add_foreign_key "group_deletion_schedules", "users", name: "fk_11e3ebfcdd", on_delete: :cascade
add_foreign_key "group_group_links", "namespaces", column: "shared_group_id", on_delete: :cascade
add_foreign_key "group_group_links", "namespaces", column: "shared_with_group_id", on_delete: :cascade
add_foreign_key "identities", "saml_providers", name: "fk_aade90f0fc", on_delete: :cascade
@@ -4356,6 +4556,9 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
add_foreign_key "issue_links", "issues", column: "target_id", name: "fk_e71bb44f1f", on_delete: :cascade
add_foreign_key "issue_metrics", "issues", on_delete: :cascade
add_foreign_key "issue_tracker_data", "services", on_delete: :cascade
+ add_foreign_key "issue_user_mentions", "issues", on_delete: :cascade
+ add_foreign_key "issue_user_mentions", "notes", on_delete: :cascade
+ add_foreign_key "issues", "epics", column: "promoted_to_epic_id", name: "fk_df75a7c8b8", on_delete: :nullify
add_foreign_key "issues", "issues", column: "duplicated_to_id", name: "fk_9c4516d665", on_delete: :nullify
add_foreign_key "issues", "issues", column: "moved_to_id", name: "fk_a194299be1", on_delete: :nullify
add_foreign_key "issues", "milestones", name: "fk_96b1dd429c", on_delete: :nullify
@@ -4395,6 +4598,8 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
add_foreign_key "merge_request_metrics", "merge_requests", on_delete: :cascade
add_foreign_key "merge_request_metrics", "users", column: "latest_closed_by_id", name: "fk_ae440388cc", on_delete: :nullify
add_foreign_key "merge_request_metrics", "users", column: "merged_by_id", name: "fk_7f28d925f3", on_delete: :nullify
+ add_foreign_key "merge_request_user_mentions", "merge_requests", on_delete: :cascade
+ add_foreign_key "merge_request_user_mentions", "notes", on_delete: :cascade
add_foreign_key "merge_requests", "ci_pipelines", column: "head_pipeline_id", name: "fk_fd82eae0b9", on_delete: :nullify
add_foreign_key "merge_requests", "merge_request_diffs", column: "latest_merge_request_diff_id", name: "fk_06067f5644", on_delete: :nullify
add_foreign_key "merge_requests", "milestones", name: "fk_6a5165a692", on_delete: :nullify
@@ -4424,15 +4629,18 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
add_foreign_key "notes", "projects", name: "fk_99e097b079", on_delete: :cascade
add_foreign_key "notes", "reviews", name: "fk_2e82291620", on_delete: :nullify
add_foreign_key "notification_settings", "users", name: "fk_0c95e91db7", on_delete: :cascade
- add_foreign_key "oauth_openid_requests", "oauth_access_grants", column: "access_grant_id", name: "fk_oauth_openid_requests_oauth_access_grants_access_grant_id"
+ add_foreign_key "oauth_openid_requests", "oauth_access_grants", column: "access_grant_id", name: "fk_77114b3b09", on_delete: :cascade
add_foreign_key "operations_feature_flag_scopes", "operations_feature_flags", column: "feature_flag_id", on_delete: :cascade
add_foreign_key "operations_feature_flags", "projects", on_delete: :cascade
add_foreign_key "operations_feature_flags_clients", "projects", on_delete: :cascade
+ add_foreign_key "packages_build_infos", "ci_pipelines", column: "pipeline_id", on_delete: :nullify
+ add_foreign_key "packages_build_infos", "packages_packages", column: "package_id", on_delete: :cascade
add_foreign_key "packages_conan_file_metadata", "packages_package_files", column: "package_file_id", on_delete: :cascade
add_foreign_key "packages_conan_metadata", "packages_packages", column: "package_id", on_delete: :cascade
+ add_foreign_key "packages_dependency_links", "packages_dependencies", column: "dependency_id", on_delete: :cascade
+ add_foreign_key "packages_dependency_links", "packages_packages", column: "package_id", on_delete: :cascade
add_foreign_key "packages_maven_metadata", "packages_packages", column: "package_id", name: "fk_be88aed360", on_delete: :cascade
add_foreign_key "packages_package_files", "packages_packages", column: "package_id", name: "fk_86f0f182f8", on_delete: :cascade
- add_foreign_key "packages_package_metadata", "packages_packages", column: "package_id", on_delete: :cascade
add_foreign_key "packages_package_tags", "packages_packages", column: "package_id", on_delete: :cascade
add_foreign_key "packages_packages", "projects", on_delete: :cascade
add_foreign_key "pages_domain_acme_orders", "pages_domains", on_delete: :cascade
@@ -4512,9 +4720,16 @@ ActiveRecord::Schema.define(version: 2019_11_22_135327) do
add_foreign_key "scim_oauth_access_tokens", "namespaces", column: "group_id", on_delete: :cascade
add_foreign_key "self_managed_prometheus_alert_events", "environments", on_delete: :cascade
add_foreign_key "self_managed_prometheus_alert_events", "projects", on_delete: :cascade
+ add_foreign_key "sentry_issues", "issues", on_delete: :cascade
+ add_foreign_key "serverless_domain_cluster", "clusters_applications_knative", on_delete: :cascade
+ add_foreign_key "serverless_domain_cluster", "pages_domains", on_delete: :cascade
+ add_foreign_key "serverless_domain_cluster", "users", column: "creator_id", on_delete: :nullify
+ add_foreign_key "service_desk_settings", "projects", on_delete: :cascade
add_foreign_key "services", "projects", name: "fk_71cce407f9", on_delete: :cascade
add_foreign_key "slack_integrations", "services", on_delete: :cascade
add_foreign_key "smartcard_identities", "users", on_delete: :cascade
+ add_foreign_key "snippet_user_mentions", "notes", on_delete: :cascade
+ add_foreign_key "snippet_user_mentions", "snippets", on_delete: :cascade
add_foreign_key "snippets", "projects", name: "fk_be41fd4bb7", on_delete: :cascade
add_foreign_key "software_license_policies", "projects", on_delete: :cascade
add_foreign_key "software_license_policies", "software_licenses", on_delete: :cascade
diff --git a/doc/README.md b/doc/README.md
index af573a3eb34..1cdb5bc7b47 100644
--- a/doc/README.md
+++ b/doc/README.md
@@ -23,7 +23,7 @@ No matter how you use GitLab, we have documentation for you.
| Essential Documentation | Essential Documentation |
|:-------------------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------|
| [**User Documentation**](user/index.md)<br/>Discover features and concepts for GitLab users. | [**Administrator documentation**](administration/index.md)<br/>Everything GitLab self-managed administrators need to know. |
-| [**Contributing to GitLab**](#contributing-to-gitlab)<br/>At GitLab, everyone can contribute! | [**New to Git and GitLab?**](#new-to-git-and-gitlab)<br/>We have resources to get you started. |
+| [**Contributing to GitLab**](#contributing-to-gitlab)<br/>At GitLab, everyone can contribute! | [**New to Git and GitLab?**](#new-to-git-and-gitlab)<br/>We have the resources to get you started. |
| [**Building an integration with GitLab?**](#building-an-integration-with-gitlab)<br/>Consult our automation and integration documentation. | [**Coming to GitLab from another platform?**](#coming-to-gitlab-from-another-platform)<br/>Consult our handy guides. |
| [**Install GitLab**](https://about.gitlab.com/install/)<br/>Installation options for different platforms. | [**Customers**](subscriptions/index.md)<br/>Information for new and existing customers. |
| [**Update GitLab**](update/README.md)<br/>Update your GitLab self-managed instance to the latest version. | [**GitLab Releases**](https://about.gitlab.com/releases/)<br/>What's new in GitLab. |
@@ -42,6 +42,7 @@ Have a look at some of our most popular documentation resources:
| [Kubernetes integration](user/project/clusters/index.md) | Use GitLab with Kubernetes. |
| [SSH authentication](ssh/README.md) | Secure your network communications. |
| [Using Docker images](ci/docker/using_docker_images.md) | Build and test your applications with Docker. |
+| [GraphQL](api/graphql/index.md) | Explore GitLab's GraphQL API. |
## The entire DevOps Lifecycle
@@ -87,7 +88,7 @@ The following documentation relates to the DevOps **Manage** stage:
| Manage Topics | Description |
|:--------------------------------------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Authentication and<br/>Authorization](administration/auth/README.md) **(CORE ONLY)** | Supported authentication and authorization providers. |
-| [GitLab Cycle Analytics](user/project/cycle_analytics.md) | Measure the time it takes to go from an [idea to production](https://about.gitlab.com/2016/08/05/continuous-integration-delivery-and-deployment-with-gitlab/#from-idea-to-production-with-gitlab) for each project you have. |
+| [GitLab Cycle Analytics](user/project/cycle_analytics.md) | Measure the time it takes to go from an [idea to production](https://about.gitlab.com/blog/2016/08/05/continuous-integration-delivery-and-deployment-with-gitlab/#from-idea-to-production-with-gitlab) for each project you have. |
| [Instance Statistics](user/instance_statistics/index.md) | Discover statistics on how many GitLab features you use and user activity. |
<div align="right">
@@ -314,6 +315,7 @@ The following documentation relates to the DevOps **Configure** stage:
| [Protected variables](ci/variables/README.md#protected-environment-variables) | Restrict variables to protected branches and tags. |
| [Serverless](user/project/clusters/serverless/index.md) | Run serverless workloads on Kubernetes. |
| [Slack slash commands](user/project/integrations/slack_slash_commands.md) | Enable and use slash commands from within Slack. |
+| [Manage your infrastructure with Terraform](user/infrastructure/index.md) | Manage your infrastructure as you run your CI/CD pipeline. |
<div align="right">
<a type="button" class="btn btn-default" href="#overview">
@@ -376,7 +378,7 @@ We have the following documentation to rapidly uplift your GitLab knowledge:
| Topic | Description |
|:-----------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------|
| [GitLab basics guides](gitlab-basics/README.md) | Start working on the command line and with GitLab. |
-| [GitLab workflow overview](https://about.gitlab.com/2016/10/25/gitlab-workflow-an-overview/) | Enhance your workflow with the best of GitLab Workflow. |
+| [GitLab workflow overview](https://about.gitlab.com/blog/2016/10/25/gitlab-workflow-an-overview/) | Enhance your workflow with the best of GitLab Workflow. |
| [Get started with GitLab CI/CD](ci/quick_start/README.md) | Quickly implement GitLab CI/CD. |
| [Auto DevOps](topics/autodevops/index.md) | Learn more about GitLab's Auto DevOps. |
| [GitLab Markdown](user/markdown.md) | GitLab's advanced formatting system (GitLab Flavored Markdown) |
@@ -411,7 +413,7 @@ Learn more about using Git, and using Git with GitLab:
| Topic | Description |
|:----------------------------------------------------------------------------|:---------------------------------------------------------------------------|
| [Git](topics/git/index.md) | Getting started with Git, branching strategies, Git LFS, and advanced use. |
-| [Git cheatsheet](https://about.gitlab.com/images/press/git-cheat-sheet.pdf) | Download a PDF describing the most used Git operations. |
+| [Git cheat sheet](https://about.gitlab.com/images/press/git-cheat-sheet.pdf) | Download a PDF describing the most used Git operations. |
| [GitLab Flow](topics/gitlab_flow.md) | Explore the best of Git with the GitLab Flow strategy. |
<div align="right">
diff --git a/doc/administration/auth/ldap-ee.md b/doc/administration/auth/ldap-ee.md
index e2894318fe5..34fd97a24ee 100644
--- a/doc/administration/auth/ldap-ee.md
+++ b/doc/administration/auth/ldap-ee.md
@@ -10,13 +10,16 @@ This section documents LDAP features specific to to GitLab Enterprise Edition
For documentation relevant to both Community Edition and Enterprise Edition,
see the main [LDAP documentation](ldap.md).
+NOTE: **Note:**
+[Microsoft Active Directory Trusts](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc771568(v=ws.10)) are not supported
+
## Use cases
- User sync: Once a day, GitLab will update users against LDAP.
- Group sync: Once an hour, GitLab will update group membership
based on LDAP group members.
-## Multiple LDAP servers **(STARTER ONLY)**
+## Multiple LDAP servers
With GitLab Enterprise Edition Starter, you can configure multiple LDAP servers
that your GitLab instance will connect to.
@@ -107,12 +110,23 @@ following.
1. [Restart GitLab][restart] for the changes to take effect.
-To take advantage of group sync, group owners or maintainers will need to create an
-LDAP group link in their group **Settings > LDAP Groups** page.
+To take advantage of group sync, group owners or maintainers will need to [create one
+or more LDAP group links](#adding-group-links).
+
+### Adding group links
+
+Once [group sync has been configured](#group-sync) on the instance, one or more LDAP
+groups can be linked to a GitLab group to grant their members access to its
+contents.
+
+Group owners or maintainers can add and use LDAP group links by:
-Multiple LDAP groups and [filters](#filters-premium-only) can be linked with
-a single GitLab group. When the link is created, an access level/role is
-specified (Guest, Reporter, Developer, Maintainer, or Owner).
+1. Navigating to the group's **Settings > LDAP Synchronization** page. Here, one or more
+ LDAP groups and [filters](#filters-premium-only) can be linked to this GitLab group,
+ each one with a configured [permission level](../../user/permissions.md#group-members-permissions)
+ for its members.
+1. Updating the group's membership by navigating to the group's **Settings > Members**
+ page and clicking **Sync now**.
### Filters **(PREMIUM ONLY)**
diff --git a/doc/administration/auth/smartcard.md b/doc/administration/auth/smartcard.md
index eb63df6b482..84ddd4278ab 100644
--- a/doc/administration/auth/smartcard.md
+++ b/doc/administration/auth/smartcard.md
@@ -6,6 +6,16 @@ type: reference
GitLab supports authentication using smartcards.
+## Existing password authentication
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/33669) in GitLab 12.6.
+
+By default, existing users can continue to log in with a username and password when smartcard
+authentication is enabled.
+
+To force existing users to use only smartcard authentication,
+[disable username and password authentication](../../user/admin_area/settings/sign_in_restrictions.md#password-authentication-enabled).
+
## Authentication methods
GitLab supports two authentication methods:
@@ -51,10 +61,14 @@ This is an experimental feature. Smartcard authentication against local database
change or be removed completely in future releases.
To use a smartcard with an X.509 certificate to authenticate against a local
-database with GitLab, at least one of the `subjectAltName` (SAN) extensions
-need to define the user identity (`email`) within the GitLab instance (`URI`).
+database with GitLab, in:
-`URI`: needs to match `Gitlab.config.host.gitlab`.
+- GitLab 12.4 and later, at least one of the `subjectAltName` (SAN) extensions
+ need to define the user identity (`email`) within the GitLab instance (`URI`).
+ `URI`: needs to match `Gitlab.config.host.gitlab`.
+- From [GitLab 12.5](https://gitlab.com/gitlab-org/gitlab/issues/33907),
+ if your certificate contains only **one** SAN email entry, you don't need to
+ add or modify it to match the `email` with the `URI`.
For example:
@@ -80,10 +94,7 @@ Certificate:
### Authentication against an LDAP server
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/7693) in
-[GitLab Premium](https://about.gitlab.com/pricing/) 11.8 as an experimental
-feature. Smartcard authentication against an LDAP server may change or be
-removed completely in future releases.
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/7693) in [GitLab Premium](https://about.gitlab.com/pricing/) 11.8 as an experimental feature. Smartcard authentication against an LDAP server may change or be removed completely in future releases.
GitLab implements a standard way of certificate matching following
[RFC4523](https://tools.ietf.org/html/rfc4523). It uses the
diff --git a/doc/administration/compliance.md b/doc/administration/compliance.md
index 246addb6dc9..44e1cc8059a 100644
--- a/doc/administration/compliance.md
+++ b/doc/administration/compliance.md
@@ -16,3 +16,4 @@ GitLab’s [security features](../security/README.md) may also help you meet rel
|**[LDAP group sync filters](auth/ldap-ee.md#group-sync)**<br>GitLab Enterprise Edition Premium gives more flexibility to synchronize with LDAP based on filters, meaning you can leverage LDAP attributes to map GitLab permissions.|Premium+||
|**[Audit logs](audit_events.md)**<br>To maintain the integrity of your code, GitLab Enterprise Edition Premium gives admins the ability to view any modifications made within the GitLab server in an advanced audit log system, so you can control, analyze and track every change.|Premium+||
|**[Auditor users](auditor_users.md)**<br>Auditor users are users who are given read-only access to all projects, groups, and other resources on the GitLab instance.|Premium+||
+|**[Credentials inventory](../user/admin_area/credentials_inventory.md)**<br>With a credentials inventory, GitLab administrators can keep track of the credentials used by all of the users in their GitLab instance. |Ultimate||
diff --git a/doc/administration/custom_hooks.md b/doc/administration/custom_hooks.md
index 0702e0aa141..437c9db1630 100644
--- a/doc/administration/custom_hooks.md
+++ b/doc/administration/custom_hooks.md
@@ -1,4 +1,4 @@
-# Custom server-side Git hooks
+# Custom server-side Git hooks **(CORE ONLY)**
NOTE: **Note:**
Custom Git hooks must be configured on the filesystem of the GitLab
diff --git a/doc/administration/external_pipeline_validation.md b/doc/administration/external_pipeline_validation.md
new file mode 100644
index 00000000000..19d4de3b705
--- /dev/null
+++ b/doc/administration/external_pipeline_validation.md
@@ -0,0 +1,103 @@
+# External Pipeline Validation
+
+You can use an external service for validating a pipeline before it's created.
+
+CAUTION: **Warning:**
+This is an experimental feature and subject to change without notice.
+
+## Usage
+
+GitLab will send a POST request to the external service URL with the pipeline
+data as payload. GitLab will then invalidate the pipeline based on the response
+code. If there's an error or the request times out, the pipeline will not be
+invalidated.
+
+Response Code Legend:
+
+- `200` - Accepted
+- `4xx` - Not Accepted
+- Other Codes - Accepted and Logged
+
+## Configuration
+
+Set the `EXTERNAL_VALIDATION_SERVICE_URL` to the external service url.
+
+## Payload Schema
+
+```json
+{
+ "type": "object",
+ "required" : [
+ "project",
+ "user",
+ "pipeline",
+ "builds"
+ ],
+ "properties" : {
+ "project": {
+ "type": "object",
+ "required": [
+ "id",
+ "path"
+ ],
+ "properties": {
+ "id": { "type": "integer" },
+ "path": { "type": "string" }
+ }
+ },
+ "user": {
+ "type": "object",
+ "required": [
+ "id",
+ "username",
+ "email"
+ ],
+ "properties": {
+ "id": { "type": "integer" },
+ "username": { "type": "string" },
+ "email": { "type": "string" }
+ }
+ },
+ "pipeline": {
+ "type": "object",
+ "required": [
+ "sha",
+ "ref",
+ "type"
+ ],
+ "properties": {
+ "sha": { "type": "string" },
+ "ref": { "type": "string" },
+ "type": { "type": "string" }
+ }
+ },
+ "builds": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "stage",
+ "image",
+ "services",
+ "script"
+ ],
+ "properties": {
+ "name": { "type": "string" },
+ "stage": { "type": "string" },
+ "image": { "type": ["string", "null"] },
+ "services": {
+ "type": ["array", "null"],
+ "items": { "type": "string" }
+ },
+ "script": {
+ "type": "array",
+ "items": { "type": "string" }
+ }
+ }
+ }
+ }
+ },
+ "additionalProperties": false
+}
+```
diff --git a/doc/administration/geo/replication/database.md b/doc/administration/geo/replication/database.md
index f7da4e14e9d..72c3692716b 100644
--- a/doc/administration/geo/replication/database.md
+++ b/doc/administration/geo/replication/database.md
@@ -35,7 +35,7 @@ The following guide assumes that:
- You are using Omnibus and therefore you are using PostgreSQL 9.6 or later
which includes the [`pg_basebackup` tool](https://www.postgresql.org/docs/9.6/app-pgbasebackup.html) and improved
- [Foreign Data Wrapper][FDW](https://www.postgresql.org/docs/9.6/postgres-fdw.html) support.
+ [Foreign Data Wrapper](https://www.postgresql.org/docs/9.6/postgres-fdw.html) support.
- You have a **primary** node already set up (the GitLab server you are
replicating from), running Omnibus' PostgreSQL (or equivalent version), and
you have a new **secondary** server set up with the same versions of the OS,
@@ -155,8 +155,8 @@ There is an [issue where support is being discussed](https://gitlab.com/gitlab-o
| `postgresql['md5_auth_cidr_addresses']` | **Secondary** node's public or VPC private addresses. |
If you are using Google Cloud Platform, SoftLayer, or any other vendor that
- provides a virtual private cloud (VPC) you can use the **secondary** node's private
- address (corresponds to "internal address" for Google Cloud Platform) for
+ provides a virtual private cloud (VPC) you can use the **primary** and **secondary** nodes
+ private addresses (corresponds to "internal address" for Google Cloud Platform) for
`postgresql['md5_auth_cidr_addresses']` and `postgresql['listen_address']`.
The `listen_address` option opens PostgreSQL up to network connections with the interface
diff --git a/doc/administration/geo/replication/docker_registry.md b/doc/administration/geo/replication/docker_registry.md
index 12cd39c0213..95db766e482 100644
--- a/doc/administration/geo/replication/docker_registry.md
+++ b/doc/administration/geo/replication/docker_registry.md
@@ -51,7 +51,7 @@ We need to make Docker Registry send notification events to the
'threshold' => 5,
'backoff' => '1s',
'headers' => {
- 'Authorization' => ['<replace_with_a_secret_token>']
+ 'Authorization' => ['<replace_with_a_secret_token>'] # An alphanumeric string. Case sensitive and must start with a letter.
}
}
]
@@ -59,7 +59,7 @@ We need to make Docker Registry send notification events to the
NOTE: **Note:**
If you use an external Registry (not the one integrated with GitLab), you must add
- these settings to its configuration. In this case, you will also have to specify
+ these settings to its configuration yourself. In this case, you will also have to specify
notification secret in `registry.notification_secret` section of
`/etc/gitlab/gitlab.rb` file.
@@ -100,7 +100,7 @@ generate a short-lived JWT that is pull-only-capable to access the
```ruby
gitlab_rails['geo_registry_replication_enabled'] = true
- gitlab_rails['geo_registry_replication_primary_api_url'] = 'http://primary.example.com:5000/' # internal address to the primary registry, will be used by GitLab to directly communicate with primary registry API
+ gitlab_rails['geo_registry_replication_primary_api_url'] = 'http://primary.example.com:4567/' # Primary registry address, it will be used by the secondary node to directly communicate to primary registry
```
1. Reconfigure the **secondary** node for the change to take effect:
diff --git a/doc/administration/geo/replication/troubleshooting.md b/doc/administration/geo/replication/troubleshooting.md
index d2fe02abbab..0a2602261d1 100644
--- a/doc/administration/geo/replication/troubleshooting.md
+++ b/doc/administration/geo/replication/troubleshooting.md
@@ -115,10 +115,12 @@ Any **secondary** nodes should point only to read-only instances.
#### Can Geo detect the current node correctly?
-Geo finds the current machine's name in `/etc/gitlab/gitlab.rb` by first looking
-for `gitlab_rails['geo_node_name']`. If it is not defined, then it defaults to
-the external URL defined in e.g. `external_url "http://gitlab.example.com"`. To
-get a machine's name, run:
+Geo finds the current machine's name in `/etc/gitlab/gitlab.rb` by:
+
+- Using the `gitlab_rails['geo_node_name']` setting.
+- If that is not defined, using the `external_url` setting.
+
+To get a machine's name, run:
```sh
sudo gitlab-rails runner "puts GeoNode.current_node_name"
@@ -401,6 +403,8 @@ to start again from scratch, there are a few steps that can help you:
mv /var/opt/gitlab/gitlab-rails/uploads /var/opt/gitlab/gitlab-rails/uploads.old
mkdir -p /var/opt/gitlab/gitlab-rails/uploads
+
+ gitlab-ctl start geo-postgresql
```
Reconfigure in order to recreate the folders and make sure permissions and ownership
@@ -699,3 +703,17 @@ See ["Foreign Data Wrapper (FDW) is not configured" error?](#foreign-data-wrappe
This can be caused by orphaned records in the project registry. You can clear them
[using a Rake task](../../../administration/raketasks/geo.md#remove-orphaned-project-registries).
+
+### Geo Admin Area returns 404 error for a secondary node
+
+Sometimes `sudo gitlab-rake gitlab:geo:check` indicates that the **secondary** node is
+healthy, but a 404 error for the **secondary** node is returned in the Geo Admin Area on
+the **primary** node.
+
+To resolve this issue:
+
+- Try restarting the **secondary** using `sudo gitlab-ctl restart`.
+- Check `/var/log/gitlab/gitlab-rails/geo.log` to see if the **secondary** node is
+ using IPv6 to send its status to the **primary** node. If it is, add an entry to
+ the **primary** node using IPv4 in the `/etc/hosts` file. Alternatively, you should
+ [enable IPv6 on the primary node](https://docs.gitlab.com/omnibus/settings/nginx.html#setting-the-nginx-listen-address-or-addresses).
diff --git a/doc/administration/gitaly/img/gitlab_gitaly_version_mismatch_v12_4.png b/doc/administration/gitaly/img/gitlab_gitaly_version_mismatch_v12_4.png
new file mode 100644
index 00000000000..4d2c5cdb00c
--- /dev/null
+++ b/doc/administration/gitaly/img/gitlab_gitaly_version_mismatch_v12_4.png
Binary files differ
diff --git a/doc/administration/gitaly/index.md b/doc/administration/gitaly/index.md
index 82283650070..9218ffa4006 100644
--- a/doc/administration/gitaly/index.md
+++ b/doc/administration/gitaly/index.md
@@ -221,6 +221,8 @@ Git operations in GitLab will result in an API error.
```toml
listen_addr = '0.0.0.0:8075'
+ internal_socket_dir = '/var/opt/gitlab/gitaly'
+
[auth]
token = 'abc123secret'
@@ -332,7 +334,10 @@ When you tail the Gitaly logs on your Gitaly server you should see requests
coming in. One sure way to trigger a Gitaly request is to clone a repository
from your GitLab server over HTTP.
-DANGER: **Danger:** If you have [custom server-side Git hooks](../custom_hooks.md#custom-server-side-git-hooks) configured, either per repository or globally, you must move these to the Gitaly node. If you have multiple Gitaly nodes, copy your custom hook(s) to all nodes.
+DANGER: **Danger:**
+If you have [custom server-side Git hooks](../custom_hooks.md) configured,
+either per repository or globally, you must move these to the Gitaly node.
+If you have multiple Gitaly nodes, copy your custom hook(s) to all nodes.
### Disabling the Gitaly service in a cluster environment
@@ -714,8 +719,115 @@ result as you did in the beginning:
Note that `enforced="true"`, meaning that authentication is being enforced.
+## Direct Git access in GitLab Rails
+
+Also known as "the Rugged patches".
+
+### History
+
+Before Gitaly existed, the things that are now Gitaly clients used to
+access Git repositories directly. Either on a local disk in the case of
+e.g. a single-machine Omnibus GitLab installation, or via NFS in the
+case of a horizontally scaled GitLab installation.
+
+Besides running plain `git` commands, in GitLab Rails we also used to
+use a Ruby gem (library) called
+[Rugged](https://github.com/libgit2/rugged). Rugged is a wrapper around
+[libgit2](https://libgit2.org/), a stand-alone implementation of Git in
+the form of a C library.
+
+Over time it has become clear to use that Rugged, and particularly
+Rugged in combination with the [Unicorn](https://bogomips.org/unicorn/)
+web server, is extremely efficient. Because libgit2 is a *library* and
+not an external process, there was very little overhead between GitLab
+application code that tried to look up data in Git repositories, and the
+Git implementation itself.
+
+Because Rugged+Unicorn was so efficient, GitLab's application code ended
+up with lots of duplicate Git object lookups (like looking up the
+`master` commmit a dozen times in one request). We could write
+inefficient code without being punished for it.
+
+When we migrated these Git lookups to Gitaly calls, we were suddenly
+getting a much higher fixed cost per Git lookup. Even when Gitaly is
+able to re-use an already-running `git` process to look up e.g. a commit
+you still have the cost of a network roundtrip to Gitaly, and within
+Gitaly a write/read roundtrip on the Unix pipes that connect Gitaly to
+the `git` process.
+
+Using GitLab.com performance as our yardstick, we pushed down the number
+of Gitaly calls per request until the loss of Rugged's efficiency was no
+longer felt. It also helped that we run Gitaly itself directly on the
+Git file severs, rather than via NFS mounts: this gave us a speed boost
+that counteracted the negative effect of not using Rugged anymore.
+
+Unfortunately, some *other* deployments of GitLab could not ditch NFS
+like we did on GitLab.com and they got the worst of both worlds: the
+slowness of NFS and the increased inherent overhead of Gitaly.
+
+As a performance band-aid for these stuck-on-NFS deployments, we
+re-introduced some of the old Rugged code that got deleted from
+GitLab Rails during the Gitaly migration project. These pieces of
+re-introduced code are informally referred to as "the Rugged patches".
+
+### Activation of direct Git access in GitLab Rails
+
+The Ruby methods that perform direct Git access are hidden behind [feature
+flags](../../development/gitaly.md#legacy-rugged-code). These feature
+flags are off by default. It is not good if you need to know about
+feature flags to get the best performance so in a second iteration, we
+added an automatic mechanism that will enable direct Git access.
+
+When GitLab Rails calls a function that has a Rugged patch it performs
+two checks. The result of both of these checks is cached.
+
+1. Is the feature flag for this patch set in the database? If so, do
+ what the feature flag says.
+1. If the feature flag is not set (i.e. neither true nor false), try to
+ see if we can access filesystem underneath the Gitaly server
+ directly. If so, use the Rugged patch.
+
+To see if GitLab Rails can access the repo filesystem directly, we use
+the following heuristic:
+
+- Gitaly ensures that the filesystem has a metadata file in its root
+ with a UUID in it.
+- Gitaly reports this UUID to GitLab Rails via the `ServerInfo` RPC.
+- GitLab Rails tries to read the metadata file directly. If it exists,
+ and if the UUID's match, assume we have direct access.
+
+Because of the way the UUID check works, and because Omnibus GitLab will
+fill in the correct repository paths in the GitLab Rails config file
+`config/gitlab.yml`, **direct Git access in GitLab Rails is on by default in
+Omnibus**.
+
+### Plans to remove direct Git access in GitLab Rails
+
+For the sake of removing complexity it is desirable that we get rid of
+direct Git access in GitLab Rails. For as long as some GitLab installations are stuck
+with Git repositories on slow NFS, however, we cannot just remove them.
+
+There are two prongs to our efforts to remove direct Git access in GitLab Rails:
+
+1. Reduce the number of (inefficient) Gitaly queries made by
+ GitLab Rails.
+1. Persuade everybody who runs a Highly Available / horizontally scaled
+ GitLab installation to move off of NFS.
+
+The second prong is the only real solution. For this we need [Gitaly
+HA](https://gitlab.com/groups/gitlab-org/-/epics?scope=all&utf8=%E2%9C%93&state=opened&label_name[]=Gitaly%20HA),
+which is still under development as of December 2019.
+
## Troubleshooting Gitaly
+### Checking versions when using standalone Gitaly nodes
+
+When using standalone Gitaly nodes, you must make sure they are the same version
+as GitLab to ensure full compatibility. Check **Admin Area > Gitaly Servers** on
+your GitLab instance and confirm all Gitaly Servers are `Up to date`.
+
+![Gitaly standalone software versions diagram](img/gitlab_gitaly_version_mismatch_v12_4.png)
+
### `gitaly-debug`
The `gitaly-debug` command provides "production debugging" tools for Gitaly and Git
diff --git a/doc/administration/gitaly/praefect.md b/doc/administration/gitaly/praefect.md
index 83c9aa3f013..6193a40ac4f 100644
--- a/doc/administration/gitaly/praefect.md
+++ b/doc/administration/gitaly/praefect.md
@@ -20,21 +20,19 @@ for updates and roadmap.
### Architecture
-For this document, the following network topology is assumed:
+The most common architecture for Praefect is simplified in the diagram below:
```mermaid
graph TB
- GitLab --> Gitaly;
GitLab --> Praefect;
- Praefect --> Praefect-Gitaly-1;
- Praefect --> Praefect-Gitaly-2;
- Praefect --> Praefect-Gitaly-3;
+ Praefect --> Gitaly-1;
+ Praefect --> Gitaly-2;
+ Praefect --> Gitaly-3;
```
Where `GitLab` is the collection of clients that can request Git operations.
-`Gitaly` is a Gitaly server before using Praefect. The Praefect node has three
-storage nodes attached. Praefect itself doesn't store data, but connects to
-three Gitaly nodes, `Praefect-Gitaly-1`, `Praefect-Gitaly-2`, and `Praefect-Gitaly-3`.
+The Praefect node has threestorage nodes attached. Praefect itself doesn't
+store data, but connects to three Gitaly nodes, `Gitaly-1`, `Gitaly-2`, and `Gitaly-3`.
Praefect may be enabled on its own node or can be run on the GitLab server.
In the example below we will use a separate server, but the optimal configuration
@@ -49,41 +47,43 @@ purposes.
In this setup guide we will start by configuring Praefect, then its child
Gitaly nodes, and lastly the GitLab server configuration.
+#### Secrets
+
+We need to manage the following secrets and make them match across hosts:
+
+1. `GITLAB_SHELL_SECRET_TOKEN`: this is used by Git hooks to make
+ callback HTTP API requests to GitLab when accepting a Git push. This
+ secret is shared with GitLab Shell for legacy reasons.
+1. `PRAEFECT_EXTERNAL_TOKEN`: repositories hosted on your Praefect
+ cluster can only be accessed by Gitaly clients that carry this
+ token.
+1. `PRAEFECT_INTERNAL_TOKEN`: this token is used for replication
+ traffic inside your Praefect cluster. This is distinct from
+ `PRAEFECT_EXTERNAL_TOKEN` because Gitaly clients must not be able to
+ access internal nodes of the Praefect cluster directly; that could
+ lead to data loss.
+
#### Praefect
On the Praefect node we disable all other services, including Gitaly. We list each
-Gitaly node that will be connected to Praefect under `praefect['storage_nodes']`.
+Gitaly node that will be connected to Praefect as members of the `praefect` hash in `praefect['virtual_storages']`.
-In the example below, the Gitaly nodes are named `praefect-gitaly-N`. Note that one
+In the example below, the Gitaly nodes are named `gitaly-N`. Note that one
node is designated as primary by setting the primary to `true`.
-`praefect['auth_token']` is the token used to authenticate with the GitLab server,
-just like `gitaly['auth_token']` is used for a standard Gitaly server.
-
-The `token` field under each storage listed in `praefect['storage_nodes']` is used
-to authenticate each child Gitaly node with Praefect.
-
```ruby
-# /etc/gitlab/gitlab.rb
+# /etc/gitlab/gitlab.rb on praefect server
# Avoid running unnecessary services on the Gitaly server
postgresql['enable'] = false
redis['enable'] = false
nginx['enable'] = false
prometheus['enable'] = false
+grafana['enable'] = false
unicorn['enable'] = false
sidekiq['enable'] = false
gitlab_workhorse['enable'] = false
gitaly['enable'] = false
-```
-
-##### Set up Praefect and its Gitaly nodes
-
-In the example below, the Gitaly nodes are named `praefect-git-X`. Note that one node is designated as
-primary, by setting the primary to `true`:
-
-```ruby
-# /etc/gitlab/gitlab.rb
# Prevent database connections during 'gitlab-ctl reconfigure'
gitlab_rails['rake_cache_clear'] = false
@@ -95,25 +95,27 @@ praefect['enable'] = true
# firewalls to restrict access to this address/port.
praefect['listen_addr'] = '0.0.0.0:2305'
-# virtual_storage_name must match the same storage name given to praefect in git_data_dirs
-praefect['virtual_storage_name'] = 'praefect'
-
-# Authentication token to ensure only authorized servers can communicate with
-# Praefect server
-praefect['auth_token'] = 'praefect-token'
-praefect['storage_nodes'] = {
- 'praefect-gitaly-1' => {
- 'address' => 'tcp://praefect-git-1.internal:8075',
- 'token' => 'praefect-gitaly-token',
- 'primary' => true
- },
- 'praefect-gitaly-2' => {
- 'address' => 'tcp://praefect-git-2.internal:8075',
- 'token' => 'praefect-gitaly-token'
- },
- 'praefect-gitaly-3' => {
- 'address' => 'tcp://praefect-git-3.internal:8075',
- 'token' => 'praefect-gitaly-token'
+# Replace PRAEFECT_EXTERNAL_TOKEN with a real secret
+praefect['auth_token'] = 'PRAEFECT_EXTERNAL_TOKEN'
+
+# Replace each instance of PRAEFECT_INTERNAL_TOKEN below with a real
+# secret, distinct from PRAEFECT_EXTERNAL_TOKEN.
+# Name of storage hash must match storage name in git_data_dirs on GitLab server.
+praefect['virtual_storages'] = {
+ 'praefect' => {
+ 'gitaly-1' => {
+ 'address' => 'tcp://gitaly-1.internal:8075',
+ 'token' => 'PRAEFECT_INTERNAL_TOKEN',
+ 'primary' => true
+ },
+ 'gitaly-2' => {
+ 'address' => 'tcp://gitaly-2.internal:8075',
+ 'token' => 'PRAEFECT_INTERNAL_TOKEN'
+ },
+ 'gitaly-3' => {
+ 'address' => 'tcp://gitaly-3.internal:8075',
+ 'token' => 'PRAEFECT_INTERNAL_TOKEN'
+ }
}
}
```
@@ -126,37 +128,40 @@ Next we will configure each Gitaly server assigned to Praefect. Configuration f
is the same as a normal standalone Gitaly server, except that we use storage names and
auth tokens from Praefect instead of GitLab.
-Below is an example configuration for `praefect-gitaly-1`, the only difference for the
+Below is an example configuration for `gitaly-1`, the only difference for the
other Gitaly nodes is the storage name under `git_data_dirs`.
-Note that `gitaly['auth_token']` matches the `token` value listed under `praefect['storage_nodes']`
+Note that `gitaly['auth_token']` matches the `token` value listed under `praefect['virtual_storages']`
on the Praefect node.
```ruby
-# /etc/gitlab/gitlab.rb
+# /etc/gitlab/gitlab.rb on gitaly node inside praefect cluster
# Avoid running unnecessary services on the Gitaly server
postgresql['enable'] = false
redis['enable'] = false
nginx['enable'] = false
prometheus['enable'] = false
+grafana['enable'] = false
unicorn['enable'] = false
sidekiq['enable'] = false
gitlab_workhorse['enable'] = false
+prometheus_monitoring['enable'] = false
# Prevent database connections during 'gitlab-ctl reconfigure'
gitlab_rails['rake_cache_clear'] = false
gitlab_rails['auto_migrate'] = false
+# Replace GITLAB_SHELL_SECRET_TOKEN below with real secret
+gitlab_shell['secret_token'] = 'GITLAB_SHELL_SECRET_TOKEN'
+
# Configure the gitlab-shell API callback URL. Without this, `git push` will
# fail. This can be your 'front door' GitLab URL or an internal load
# balancer.
-# Don't forget to copy `/etc/gitlab/gitlab-secrets.json` from web server to Gitaly server.
gitlab_rails['internal_api_url'] = 'https://gitlab.example.com'
-# Authentication token to ensure only authorized servers can communicate with
-# Gitaly server
-gitaly['auth_token'] = 'praefect-gitaly-token'
+# Replace PRAEFECT_INTERNAL_TOKEN below with a real secret.
+gitaly['auth_token'] = 'PRAEFECT_INTERNAL_TOKEN'
# Make Gitaly accept connections on all network interfaces. You must use
# firewalls to restrict access to this address/port.
@@ -164,16 +169,13 @@ gitaly['auth_token'] = 'praefect-gitaly-token'
gitaly['listen_addr'] = "0.0.0.0:8075"
git_data_dirs({
- "praefect-gitaly-1" => {
+ "gitaly-1" => {
"path" => "/var/opt/gitlab/git-data"
}
})
```
-Note that just as with a standard Gitaly server, `/etc/gitlab/gitlab-secrets.json` must
-be copied from the GitLab server to the Gitaly node for authentication purposes.
-
-For more information on Gitaly server configuration, see our [gitaly documentation](index.md#3-gitaly-server-configuration).
+For more information on Gitaly server configuration, see our [Gitaly documentation](index.md#3-gitaly-server-configuration).
#### GitLab
@@ -182,25 +184,29 @@ is done through setting the `git_data_dirs`. Assuming the default storage
is present, there should be two storages available to GitLab:
```ruby
+# /etc/gitlab/gitlab.rb on gitlab server
+
+# Replace PRAEFECT_EXTERNAL_TOKEN below with real secret.
git_data_dirs({
"default" => {
- "gitaly_address" => "tcp://gitaly.internal"
+ "path" => "/var/opt/gitlab/git-data"
},
"praefect" => {
- "gitaly_address" => "tcp://praefect.internal:2305"
+ "gitaly_address" => "tcp://praefect.internal:2305",
+ "gitaly_token" => 'PRAEFECT_EXTERNAL_TOKEN'
}
})
-gitlab_rails['gitaly_token'] = 'praefect-token'
+# Replace GITLAB_SHELL_SECRET_TOKEN below with real secret
+gitlab_shell['secret_token'] = 'GITLAB_SHELL_SECRET_TOKEN'
```
Note that the storage name used is the same as the `praefect['virtual_storage_name']` set
on the Praefect node.
-Also, the `gitlab_rails['gitaly_token']` matches the value of `praefect['auth_token']`
-on Praefect.
+Save your changes and [reconfigure GitLab](../restart_gitlab.md#omnibus-gitlab-reconfigure).
-Restart GitLab using `gitlab-ctl restart` on the GitLab node.
+Run `gitlab-rake gitlab:gitaly:check` to confirm that GitLab can reach Praefect.
### Testing Praefect
@@ -208,10 +214,18 @@ To test Praefect, first set it as the default storage node for new projects
using **Admin Area > Settings > Repository > Repository storage**. Next,
create a new project and check the "Initialize repository with a README" box.
-If you receive a 503 error, check `/var/log/gitlab/gitlab-rails/production.log`.
-A `GRPC::Unavailable (14:failed to connect to all addresses)` error indicates
-that GitLab was unable to connect to Praefect.
-
-If the project is created but the README is not, then ensure that the
-`/etc/gitlab/gitlab-secrets.json` file from the GitLab server has been copied
-to the Gitaly servers.
+If you receive an error, check `/var/log/gitlab/gitlab-rails/production.log`.
+
+Here are common errors and potential causes:
+
+- 500 response code
+ - **ActionView::Template::Error (7:permission denied)**
+ - `praefect['auth_token']` and `gitlab_rails['gitaly_token']` do not match on the GitLab server.
+ - **Unable to save project. Error: 7:permission denied**
+ - Secret token in `praefect['storage_nodes']` on GitLab server does not match the
+ value in `gitaly['auth_token']` on one or more Gitaly servers.
+- 503 response code
+ - **GRPC::Unavailable (14:failed to connect to all addresses)**
+ - GitLab was unable to reach Praefect.
+ - **GRPC::Unavailable (14:all SubCons are in TransientFailure...)**
+ - Praefect cannot reach one or more of its child Gitaly nodes.
diff --git a/doc/administration/gitaly/reference.md b/doc/administration/gitaly/reference.md
index fe88ef13958..2c5e54743c3 100644
--- a/doc/administration/gitaly/reference.md
+++ b/doc/administration/gitaly/reference.md
@@ -134,7 +134,7 @@ A lot of Gitaly RPCs need to look up Git objects from repositories.
Most of the time we use `git cat-file --batch` processes for that. For
better performance, Gitaly can re-use these `git cat-file` processes
across RPC calls. Previously used processes are kept around in a
-["git cat-file cache"](https://about.gitlab.com/blog/2019/07/08/git-performance-on-nfs/#enter-cat-file-cache).
+["Git cat-file cache"](https://about.gitlab.com/blog/2019/07/08/git-performance-on-nfs/#enter-cat-file-cache).
In order to control how much system resources this uses, we have a maximum number
of cat-file processes that can go into the cache.
@@ -165,11 +165,11 @@ Gitaly restarts its `gitaly-ruby` helpers when their memory exceeds the
| Name | Type | Required | Description |
| ---- | ---- | -------- | ----------- |
-| `dir` | string | yes | Path to where gitaly-ruby is installed (needed to boot the process).|
-| `max_rss` | integer | no | Resident set size limit that triggers a gitaly-ruby restart, in bytes. Default is `200000000` (200MB). |
-| `graceful_restart_timeout` | string | no | Grace period before a gitaly-ruby process is forcibly terminated after exceeding `max_rss`. Default is `10m` (10 minutes).|
-| `restart_delay` | string | no |Time that gitaly-ruby memory must remain high before a restart. Default is `5m` (5 minutes).|
-| `num_workers` | integer | no |Number of gitaly-ruby worker processes. Try increasing this number in case of `ResourceExhausted` errors. Default is `2`, minimum is `2`.|
+| `dir` | string | yes | Path to where `gitaly-ruby` is installed (needed to boot the process).|
+| `max_rss` | integer | no | Resident set size limit that triggers a `gitaly-ruby` restart, in bytes. Default is `200000000` (200MB). |
+| `graceful_restart_timeout` | string | no | Grace period before a `gitaly-ruby` process is forcibly terminated after exceeding `max_rss`. Default is `10m` (10 minutes).|
+| `restart_delay` | string | no |Time that `gitaly-ruby` memory must remain high before a restart. Default is `5m` (5 minutes).|
+| `num_workers` | integer | no |Number of `gitaly-ruby` worker processes. Try increasing this number in case of `ResourceExhausted` errors. Default is `2`, minimum is `2`.|
| `linguist_languages_path` | string | no | Override for dynamic `languages.json` discovery. Defaults to an empty string (use of dynamic discovery).|
Example:
@@ -231,11 +231,11 @@ The following values configure logging in Gitaly under the `[logging]` section.
| `level` | string | no | Log level: `debug`, `info`, `warn`, `error`, `fatal`, or `panic`. Default: `info`. |
| `sentry_dsn` | string | no | Sentry DSN for exception monitoring. |
| `sentry_environment` | string | no | [Sentry Environment](https://docs.sentry.io/enriching-error-data/environments/) for exception monitoring. |
-| `ruby_sentry_dsn` | string | no | Sentry DSN for gitaly-ruby exception monitoring. |
+| `ruby_sentry_dsn` | string | no | Sentry DSN for `gitaly-ruby` exception monitoring. |
While the main Gitaly application logs go to stdout, there are some extra log
files that go to a configured directory, like the GitLab Shell logs.
-Gitlab Shell does not support `panic` or `trace` level logs. `panic` will fall
+GitLab Shell does not support `panic` or `trace` level logs. `panic` will fall
back to `error`, while `trace` will fall back to `debug`. Any other invalid log
levels will default to `info`.
diff --git a/doc/administration/high_availability/README.md b/doc/administration/high_availability/README.md
index 7f0b4056acc..d411fb7f20f 100644
--- a/doc/administration/high_availability/README.md
+++ b/doc/administration/high_availability/README.md
@@ -4,18 +4,19 @@ type: reference, concepts
# Scaling and High Availability
-GitLab supports several different types of clustering and high-availability.
+GitLab supports a number of options for scaling your self-managed instance and configuring high availability (HA).
The solution you choose will be based on the level of scalability and
availability you require. The easiest solutions are scalable, but not necessarily
highly available.
-GitLab provides a service that is usually essential to most organizations: it
+GitLab provides a service that is essential to most organizations: it
enables people to collaborate on code in a timely fashion. Any downtime should
-therefore be short and planned. Luckily, GitLab provides a solid setup even on
-a single server without special measures. Due to the distributed nature
-of Git, developers can still commit code locally even when GitLab is not
+therefore be short and planned. Due to the distributed nature
+of Git, developers can continue to commit code locally even when GitLab is not
available. However, some GitLab features such as the issue tracker and
-Continuous Integration are not available when GitLab is down.
+continuous integration are not available when GitLab is down.
+If you require all GitLab functionality to be highly available,
+consider the options outlined below.
**Keep in mind that all highly-available solutions come with a trade-off between
cost/complexity and uptime**. The more uptime you want, the more complex the
@@ -25,8 +26,8 @@ solution should balance the costs against the benefits.
There are many options when choosing a highly-available GitLab architecture. We
recommend engaging with GitLab Support to choose the best architecture for your
-use case. This page contains some various options and guidelines based on
-experience with GitLab.com and Enterprise Edition on-premises customers.
+use case. This page contains recommendations based on
+experience with GitLab.com and internal scale testing.
For detailed insight into how GitLab scales and configures GitLab.com, you can
watch [this 1 hour Q&A](https://www.youtube.com/watch?v=uCU8jdYzpac)
@@ -82,12 +83,13 @@ Complete the following installation steps in order. A link at the end of each
section will bring you back to the Scalable Architecture Examples section so
you can continue with the next step.
-1. [PostgreSQL](database.md#postgresql-in-a-scaled-environment) with [PGBouncer](https://docs.gitlab.com/ee/administration/high_availability/pgbouncer.html)
+1. [Load Balancer(s)](load_balancer.md)[^2]
+1. [Consul](consul.md)
+1. [PostgreSQL](database.md#postgresql-in-a-scaled-environment) with [PgBouncer](https://docs.gitlab.com/ee/administration/high_availability/pgbouncer.html)
1. [Redis](redis.md#redis-in-a-scaled-environment)
1. [Gitaly](gitaly.md) (recommended) and / or [NFS](nfs.md)[^4]
1. [GitLab application nodes](gitlab.md)
- With [Object Storage service enabled](../gitaly/index.md#eliminating-nfs-altogether)[^3]
-1. [Load Balancer(s)](load_balancer.md)[^2]
1. [Monitoring node (Prometheus and Grafana)](monitoring_node.md)
### Full Scaling
@@ -201,13 +203,14 @@ with the added complexity of many more nodes to configure, manage, and monitor.
## Reference Architecture Examples
The Support and Quality teams build, performance test, and validate Reference
-Architectures that support set large numbers of users. The specifications below are a
-representation of this work so far and may be adjusted in the future based on
+Architectures that support large numbers of users. The specifications below are
+a representation of this work so far and may be adjusted in the future based on
additional testing and iteration.
-The architectures have been tested with specific coded workloads. The throughputs
-used for testing are calculated based on sample customer data. We test each endpoint
-type with the following number of requests per second (RPS) per 1000 users:
+The architectures have been tested with specific coded workloads, and the
+throughputs used for testing were calculated based on sample customer data. We
+test each endpoint type with the following number of requests per second (RPS)
+per 1000 users:
- API: 20 RPS
- Web: 2 RPS
@@ -217,13 +220,74 @@ Note that your exact needs may be more, depending on your workload. Your
workload is influenced by factors such as - but not limited to - how active your
users are, how much automation you use, mirroring, and repo/change size.
+### 2,000 User Configuration
+
+- **Supported Users (approximate):** 2,000
+- **Test RPS Rates:** API: 40 RPS, Web: 4 RPS, Git: 4 RPS
+- **Status:** Work-in-progress
+- **Known Issues:** For the latest list of known performance issues head
+[here](https://gitlab.com/gitlab-org/gitlab/issues?label_name%5B%5D=Quality%3Aperformance-issues).
+
+NOTE: **Note:** This architecture is a work-in-progress of the work so far. The
+Quality team will be certifying this environment in late 2019 or early 2020. The specifications
+may be adjusted prior to certification based on performance testing.
+
+| Service | Nodes | Configuration | GCP type |
+| ----------------------------|-------|-----------------------|---------------|
+| GitLab Rails <br> - Puma workers on each node set to 90% of available CPUs with 8 threads | 3 | 8 vCPU, 7.2GB Memory | n1-highcpu-8 |
+| PostgreSQL | 3 | 2 vCPU, 7.5GB Memory | n1-standard-2 |
+| PgBouncer | 3 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 |
+| Gitaly <br> - Gitaly Ruby workers on each node set to 20% of available CPUs | X[^1] . | 4 vCPU, 15GB Memory | n1-standard-4 |
+| Redis Cache + Sentinel <br> - Cache maxmemory set to 90% of available memory | 3 | 2 vCPU, 7.5GB Memory | n1-standard-2 |
+| Redis Persistent + Sentinel | 3 | 2 vCPU, 7.5GB Memory | n1-standard-2 |
+| Sidekiq | 4 | 2 vCPU, 7.5GB Memory | n1-standard-2 |
+| Consul | 3 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 |
+| NFS Server[^4] . | 1 | 4 vCPU, 3.6GB Memory | n1-highcpu-4 |
+| S3 Object Storage[^3] . | - | - | - |
+| Monitoring node | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 |
+| External load balancing node[^2] . | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 |
+| Internal load balancing node[^2] . | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 |
+
+NOTE: **Note:** Memory values are given directly by GCP machine sizes. On different cloud
+vendors a best effort like for like can be used.
+
+### 5,000 User Configuration
+
+- **Supported Users (approximate):** 5,000
+- **Test RPS Rates:** API: 100 RPS, Web: 10 RPS, Git: 10 RPS
+- **Status:** Work-in-progress
+- **Known Issues:** For the latest list of known performance issues head
+[here](https://gitlab.com/gitlab-org/gitlab/issues?label_name%5B%5D=Quality%3Aperformance-issues).
+
+NOTE: **Note:** This architecture is a work-in-progress of the work so far. The
+Quality team will be certifying this environment in late 2019 or early 2020. The specifications
+may be adjusted prior to certification based on performance testing.
+
+| Service | Nodes | Configuration | GCP type |
+| ----------------------------|-------|-----------------------|---------------|
+| GitLab Rails <br> - Puma workers on each node set to 90% of available CPUs with 16 threads | 3 | 16 vCPU, 14.4GB Memory | n1-highcpu-16 |
+| PostgreSQL | 3 | 2 vCPU, 7.5GB Memory | n1-standard-2 |
+| PgBouncer | 3 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 |
+| Gitaly <br> - Gitaly Ruby workers on each node set to 20% of available CPUs | X[^1] . | 8 vCPU, 30GB Memory | n1-standard-8 |
+| Redis Cache + Sentinel <br> - Cache maxmemory set to 90% of available memory | 3 | 2 vCPU, 7.5GB Memory | n1-standard-2 |
+| Redis Persistent + Sentinel | 3 | 2 vCPU, 7.5GB Memory | n1-standard-2 |
+| Sidekiq | 4 | 2 vCPU, 7.5GB Memory | n1-standard-2 |
+| Consul | 3 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 |
+| NFS Server[^4] . | 1 | 4 vCPU, 3.6GB Memory | n1-highcpu-4 |
+| S3 Object Storage[^3] . | - | - | - |
+| Monitoring node | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 |
+| External load balancing node[^2] . | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 |
+| Internal load balancing node[^2] . | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 |
+
+NOTE: **Note:** Memory values are given directly by GCP machine sizes. On different cloud
+vendors a best effort like for like can be used.
+
### 10,000 User Configuration
- **Supported Users (approximate):** 10,000
- **Test RPS Rates:** API: 200 RPS, Web: 20 RPS, Git: 20 RPS
-- **Known Issues:** While validating the reference architecture, slow API endpoints
- were discovered. For details, see the related issues list in
- [this issue](https://gitlab.com/gitlab-org/gitlab-foss/issues/64335).
+- **Known Issues:** For the latest list of known performance issues head
+[here](https://gitlab.com/gitlab-org/gitlab/issues?label_name%5B%5D=Quality%3Aperformance-issues).
| Service | Nodes | Configuration | GCP type |
| ----------------------------|-------|-----------------------|---------------|
@@ -248,10 +312,8 @@ vendors a best effort like for like can be used.
- **Supported Users (approximate):** 25,000
- **Test RPS Rates:** API: 500 RPS, Web: 50 RPS, Git: 50 RPS
-- **Known Issues:** The slow API endpoints that were discovered during testing
- the 10,000 user architecture also affect the 25,000 user architecture. For
- details, see the related issues list in
- [this issue](https://gitlab.com/gitlab-org/gitlab-foss/issues/64335).
+- **Known Issues:** For the latest list of known performance issues head
+[here](https://gitlab.com/gitlab-org/gitlab/issues?label_name%5B%5D=Quality%3Aperformance-issues).
| Service | Nodes | Configuration | GCP type |
| ----------------------------|-------|-----------------------|---------------|
@@ -276,12 +338,8 @@ vendors a best effort like for like can be used.
- **Supported Users (approximate):** 50,000
- **Test RPS Rates:** API: 1000 RPS, Web: 100 RPS, Git: 100 RPS
-- **Status:** Work-in-progress
-- **Related Issue:** See the [related issue](https://gitlab.com/gitlab-org/quality/performance/issues/66) for more information.
-
-NOTE: **Note:** This architecture is a work-in-progress of the work so far. The
-Quality team will be certifying this environment in late 2019. The specifications
-may be adjusted prior to certification based on performance testing.
+- **Known Issues:** For the latest list of known performance issues head
+[here](https://gitlab.com/gitlab-org/gitlab/issues?label_name%5B%5D=Quality%3Aperformance-issues).
| Service | Nodes | Configuration | GCP type |
| ----------------------------|-------|-----------------------|---------------|
@@ -302,15 +360,16 @@ may be adjusted prior to certification based on performance testing.
NOTE: **Note:** Memory values are given directly by GCP machine sizes. On different cloud
vendors a best effort like for like can be used.
-[^1]: Gitaly node requirements are dependent on customer data. We recommend 2
- nodes as an absolute minimum for performance at the 10,000 and 25,000 user
- scale and 4 nodes as an absolute minimum at the 50,000 user scale, but
- additional nodes should be considered in conjunction with a review of
- project counts and sizes.
+[^1]: Gitaly node requirements are dependent on customer data, specifically the number of
+ projects and their sizes. We recommend 2 nodes as an absolute minimum for HA environments
+ and at least 4 nodes should be used when supporting 50,000 or more users.
+ We recommend that each Gitaly node should store no more than 5TB of data.
+ Additional nodes should be considered in conjunction with a review of expected
+ data size and spread based on the recommendations above.
[^2]: Our architectures have been tested and validated with [HAProxy](https://www.haproxy.org/)
as the load balancer. However other reputable load balancers with similar feature sets
- should also work here but be aware these aren't validated.
+ should also work instead but be aware these aren't validated.
[^3]: For data objects such as LFS, Uploads, Artifacts, etc... We recommend a S3 Object Storage
where possible over NFS due to better performance and availability. Several types of objects
diff --git a/doc/administration/high_availability/redis.md b/doc/administration/high_availability/redis.md
index 72968cfed56..9b733034f5b 100644
--- a/doc/administration/high_availability/redis.md
+++ b/doc/administration/high_availability/redis.md
@@ -71,7 +71,7 @@ Omnibus:
redis['port'] = 6379
redis['password'] = 'SECRET_PASSWORD_HERE'
- gitlab_rails['auto_migrate'] = false
+ gitlab_rails['enable'] = false
```
1. [Reconfigure Omnibus GitLab][reconfigure] for the changes to take effect.
diff --git a/doc/administration/img/repository_storages_admin_ui.png b/doc/administration/img/repository_storages_admin_ui.png
index 5f1b4936704..315b4b0144c 100644
--- a/doc/administration/img/repository_storages_admin_ui.png
+++ b/doc/administration/img/repository_storages_admin_ui.png
Binary files differ
diff --git a/doc/administration/index.md b/doc/administration/index.md
index bf21347fb99..2a9980cddb3 100644
--- a/doc/administration/index.md
+++ b/doc/administration/index.md
@@ -80,7 +80,7 @@ Learn how to install, configure, update, and maintain your GitLab instance.
- [Backup and restore](../raketasks/backup_restore.md): Backup and restore your GitLab instance.
- [Operations](operations/index.md): Keeping GitLab up and running (clean up Redis sessions, moving repositories, Sidekiq MemoryKiller, Unicorn).
- [Restart GitLab](restart_gitlab.md): Learn how to restart GitLab and its components.
-- [Invalidate markdown cache](invalidate_markdown_cache.md): Invalidate any cached markdown.
+- [Invalidate Markdown cache](invalidate_markdown_cache.md): Invalidate any cached Markdown.
#### Updating GitLab
@@ -124,6 +124,7 @@ Learn how to install, configure, update, and maintain your GitLab instance.
basic Postfix mail server with IMAP authentication on Ubuntu for incoming
emails.
- [Abuse reports](../user/admin_area/abuse_reports.md): View and resolve abuse reports from your users.
+- [Credentials Inventory](../user/admin_area/credentials_inventory.md): With Credentials inventory, GitLab administrators can keep track of the credentials used by their users in their GitLab self-managed instance. **(ULTIMATE ONLY)**
## Project settings
@@ -152,12 +153,17 @@ Learn how to install, configure, update, and maintain your GitLab instance.
- [Enable/disable GitLab CI/CD](../ci/enable_or_disable_ci.md#site-wide-admin-setting): Enable or disable GitLab CI/CD for your instance.
- [GitLab CI/CD admin settings](../user/admin_area/settings/continuous_integration.md): Enable or disable Auto DevOps site-wide and define the artifacts' max size and expiration time.
+- [External Pipeline Validation](external_pipeline_validation.md): Enable, disable and configure external pipeline validation.
- [Job artifacts](job_artifacts.md): Enable, disable, and configure job artifacts (a set of files and directories which are outputted by a job when it completes successfully).
- [Job logs](job_logs.md): Information about the job logs.
- [Register Shared and specific Runners](../ci/runners/README.md#registering-a-shared-runner): Learn how to register and configure Shared and specific Runners to your own instance.
- [Shared Runners pipelines quota](../user/admin_area/settings/continuous_integration.md#shared-runners-pipeline-minutes-quota-starter-only): Limit the usage of pipeline minutes for Shared Runners. **(STARTER ONLY)**
- [Enable/disable Auto DevOps](../topics/autodevops/index.md#enablingdisabling-auto-devops): Enable or disable Auto DevOps for your instance.
+## Snippet settings
+
+- [Setting snippet content size limit](snippets/index.md): Set a maximum size limit for snippets' content.
+
## Git configuration options
- [Custom Git hooks](custom_hooks.md): Custom Git hooks (on the filesystem) for when webhooks aren't enough.
diff --git a/doc/administration/integration/plantuml.md b/doc/administration/integration/plantuml.md
index 23803b82543..33ac925748f 100644
--- a/doc/administration/integration/plantuml.md
+++ b/doc/administration/integration/plantuml.md
@@ -60,11 +60,11 @@ mvn package
The above sequence of commands will generate a WAR file that can be deployed
using Tomcat:
-```sh
-sudo apt-get install tomcat7
-sudo cp target/plantuml.war /var/lib/tomcat7/webapps/plantuml.war
-sudo chown tomcat7:tomcat7 /var/lib/tomcat7/webapps/plantuml.war
-sudo service tomcat7 restart
+```shell
+sudo apt-get install tomcat8
+sudo cp target/plantuml.war /var/lib/tomcat8/webapps/plantuml.war
+sudo chown tomcat8:tomcat8 /var/lib/tomcat8/webapps/plantuml.war
+sudo service tomcat8 restart
```
Once the Tomcat service restarts the PlantUML service will be ready and
@@ -74,7 +74,7 @@ listening for requests on port 8080:
http://localhost:8080/plantuml
```
-you can change these defaults by editing the `/etc/tomcat7/server.xml` file.
+you can change these defaults by editing the `/etc/tomcat8/server.xml` file.
Note that the default URL is different than when using the Docker-based image,
where the service is available at the root of URL with no relative path. Adjust
diff --git a/doc/administration/invalidate_markdown_cache.md b/doc/administration/invalidate_markdown_cache.md
index ad64cb077c1..ebd8578e410 100644
--- a/doc/administration/invalidate_markdown_cache.md
+++ b/doc/administration/invalidate_markdown_cache.md
@@ -1,6 +1,6 @@
# Invalidate Markdown Cache
-For performance reasons, GitLab caches the HTML version of markdown text
+For performance reasons, GitLab caches the HTML version of Markdown text
(e.g. issue and merge request descriptions, comments). It's possible
that these cached versions become outdated, for example
when the `external_url` configuration option is changed - causing links
diff --git a/doc/administration/logs.md b/doc/administration/logs.md
index e1910b0b3f3..f4a1c754252 100644
--- a/doc/administration/logs.md
+++ b/doc/administration/logs.md
@@ -360,6 +360,17 @@ Introduced in GitLab 12.3. This file lives in `/var/log/gitlab/gitlab-rails/migr
Omnibus GitLab packages or in `/home/git/gitlab/log/migrations.log` for
installations from source.
+## `mail_room_json.log` (default)
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/merge_requests/19186) in GitLab 12.6.
+
+This file lives in `/var/log/gitlab/mail_room/mail_room_json.log` for
+Omnibus GitLab packages or in `/home/git/gitlab/log/mail_room_json.log` for
+installations from source.
+
+This structured log file records internal activity in the `mail_room` gem.
+Its name and path are configurable, so the name and path may not match the above.
+
## Reconfigure Logs
Reconfigure log files live in `/var/log/gitlab/reconfigure` for Omnibus GitLab
@@ -393,6 +404,23 @@ It is stored at:
- `/var/log/gitlab/gitlab-rails/database_load_balancing.log` for Omnibus GitLab packages.
- `/home/git/gitlab/log/database_load_balancing.log` for installations from source.
+## `elasticsearch.log`
+
+Introduced in GitLab 12.6. This file lives in
+`/var/log/gitlab/gitlab-rails/elasticsearch.log` for Omnibus GitLab
+packages or in `/home/git/gitlab/log/elasticsearch.log` for installations
+from source.
+
+It logs information related to the Elasticsearch Integration including
+errors during indexing or searching Elasticsearch.
+
+Each line contains a JSON line that can be ingested by Elasticsearch, Splunk,
+etc. For example:
+
+```json
+{"severity":"DEBUG","time":"2019-10-17T06:23:13.227Z","correlation_id":null,"message":"redacted_search_result","class_name":"Milestone","id":2,"ability":"read_milestone","current_user_id":2,"query":"project"}
+```
+
[repocheck]: repository_checks.md
[Rack Attack]: ../security/rack_attack.md
[Rate Limit]: ../user/admin_area/settings/rate_limits_on_raw_endpoints.md
diff --git a/doc/administration/monitoring/performance/img/performance_bar.png b/doc/administration/monitoring/performance/img/performance_bar.png
index acad60f863e..d206d5a4268 100644
--- a/doc/administration/monitoring/performance/img/performance_bar.png
+++ b/doc/administration/monitoring/performance/img/performance_bar.png
Binary files differ
diff --git a/doc/administration/monitoring/performance/img/performance_bar_frontend.png b/doc/administration/monitoring/performance/img/performance_bar_frontend.png
new file mode 100644
index 00000000000..489f855fe33
--- /dev/null
+++ b/doc/administration/monitoring/performance/img/performance_bar_frontend.png
Binary files differ
diff --git a/doc/administration/monitoring/performance/performance_bar.md b/doc/administration/monitoring/performance/performance_bar.md
index a52b6227e14..98c611ea140 100644
--- a/doc/administration/monitoring/performance/performance_bar.md
+++ b/doc/administration/monitoring/performance/performance_bar.md
@@ -16,9 +16,16 @@ It allows you to see (from left to right):
![Rugged profiling using the Performance Bar](img/performance_bar_rugged_calls.png)
- time taken and number of Redis calls; click through for details of these calls
![Redis profiling using the Performance Bar](img/performance_bar_redis_calls.png)
+- total load timings of the page; click through for details of these calls. Values in the following order:
+ - Backend - Time that the actual base page took to load
+ - [First Contentful Paint](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint) - Time until something was visible to the user
+ - [DomContentLoaded](https://developers.google.com/web/fundamentals/performance/critical-rendering-path/measure-crp) Event
+ - Number of Requests that the page loaded
+ ![Frontend requests using the Performance Bar](img/performance_bar_frontend.png)
- a link to add a request's details to the performance bar; the request can be
added by its full URL (authenticated as the current user), or by the value of
its `X-Request-Id` header
+- a link to download the raw JSON used to generate the Performance Bar reports
On the far right is a request selector that allows you to view the same metrics
(excluding the page timing and line profiler) for any requests made while the
diff --git a/doc/administration/monitoring/prometheus/gitlab_metrics.md b/doc/administration/monitoring/prometheus/gitlab_metrics.md
index 02920293daa..57048059476 100644
--- a/doc/administration/monitoring/prometheus/gitlab_metrics.md
+++ b/doc/administration/monitoring/prometheus/gitlab_metrics.md
@@ -25,8 +25,8 @@ The following metrics are available:
| Metric | Type | Since | Description | Labels |
|:---------------------------------------------------------------|:----------|-----------------------:|:----------------------------------------------------------------------------------------------------|:----------------------------------------------------|
-| `gitlab_banzai_cached_render_real_duration_seconds` | Histogram | 9.4 | Duration of rendering markdown into HTML when cached output exists | controller, action |
-| `gitlab_banzai_cacheless_render_real_duration_seconds` | Histogram | 9.4 | Duration of rendering markdown into HTML when cached outupt does not exist | controller, action |
+| `gitlab_banzai_cached_render_real_duration_seconds` | Histogram | 9.4 | Duration of rendering Markdown into HTML when cached output exists | controller, action |
+| `gitlab_banzai_cacheless_render_real_duration_seconds` | Histogram | 9.4 | Duration of rendering Markdown into HTML when cached outupt does not exist | controller, action |
| `gitlab_cache_misses_total` | Counter | 10.2 | Cache read miss | controller, action |
| `gitlab_cache_operation_duration_seconds` | Histogram | 10.2 | Cache access time | |
| `gitlab_cache_operations_total` | Counter | 12.2 | Cache operations by controller/action | controller, action, operation |
@@ -90,7 +90,6 @@ The following metrics can be controlled by feature flags:
| Metric | Feature Flag |
|:---------------------------------------------------------------|:-------------------------------------------------------------------|
| `gitlab_method_call_duration_seconds` | `prometheus_metrics_method_instrumentation` |
-| `gitlab_transaction_allocated_memory_bytes` | `prometheus_metrics_transaction_allocated_memory` |
| `gitlab_view_rendering_duration_seconds` | `prometheus_metrics_view_instrumentation` |
## Sidekiq Metrics available for Geo **(PREMIUM)**
diff --git a/doc/administration/monitoring/prometheus/index.md b/doc/administration/monitoring/prometheus/index.md
index c0b563bd76e..eb7a2d791c1 100644
--- a/doc/administration/monitoring/prometheus/index.md
+++ b/doc/administration/monitoring/prometheus/index.md
@@ -288,6 +288,12 @@ The PgBouncer exporter allows you to measure various PgBouncer metrics.
[âž” Read more about the PgBouncer exporter.](pgbouncer_exporter.md)
+### Registry exporter
+
+The Registry exporter allows you to measure various Registry metrics.
+
+[âž” Read more about the Registry exporter.](registry_exporter.md)
+
### GitLab exporter
The GitLab exporter allows you to measure various GitLab metrics, pulled from Redis and the database.
diff --git a/doc/administration/monitoring/prometheus/postgres_exporter.md b/doc/administration/monitoring/prometheus/postgres_exporter.md
index 3ad15b65497..27771865e10 100644
--- a/doc/administration/monitoring/prometheus/postgres_exporter.md
+++ b/doc/administration/monitoring/prometheus/postgres_exporter.md
@@ -1,30 +1,58 @@
-# Postgres exporter
+# PostgreSQL Server Exporter
>**Note:**
-Available since [Omnibus GitLab 8.17][1131]. For installations from source
-you'll have to install and configure it yourself.
+Available since [Omnibus GitLab 8.17](https://gitlab.com/gitlab-org/omnibus-gitlab/merge_requests/1131).
+For installations from source you will have to install and configure it yourself.
-The [postgres exporter] allows you to measure various PostgreSQL metrics.
+The [PostgreSQL Server Exporter](https://github.com/wrouesnel/postgres_exporter) allows you to export various PostgreSQL metrics.
-To enable the postgres exporter:
+To enable the PostgreSQL Server Exporter:
-1. [Enable Prometheus](index.md#configuring-prometheus)
-1. Edit `/etc/gitlab/gitlab.rb`
-1. Add or find and uncomment the following line, making sure it's set to `true`:
+1. [Enable Prometheus](index.md#configuring-prometheus).
+1. Edit `/etc/gitlab/gitlab.rb` and enable `postgres_exporter`:
```ruby
postgres_exporter['enable'] = true
```
-1. Save the file and [reconfigure GitLab][reconfigure] for the changes to
- take effect
+NOTE: **Note:**
+If PostgreSQL Server Exporter is configured on a separate node, make sure that the local
+address is [listed in `trust_auth_cidr_addresses`](../../high_availability/database.md#network-information) or the
+exporter will not be able to connect to the database.
+
+1. Save the file and [reconfigure GitLab](../../restart_gitlab.md#omnibus-gitlab-reconfigure) for the changes to
+ take effect.
Prometheus will now automatically begin collecting performance data from
-the postgres exporter exposed under `localhost:9187`.
+the PostgreSQL Server Exporter exposed under `localhost:9187`.
-[↠Back to the main Prometheus page](index.md)
+## Advanced configuration
+
+In most cases, PostgreSQL Server Exporter will work with the defaults and you should not
+need to change anything.
+
+To further customize the PostgreSQL Server Exporter, use the following configuration options:
+
+1. Edit `/etc/gitlab/gitlab.rb`:
-[1131]: https://gitlab.com/gitlab-org/omnibus-gitlab/merge_requests/1131
-[postgres exporter]: https://github.com/wrouesnel/postgres_exporter
-[prometheus]: https://prometheus.io
-[reconfigure]: ../../restart_gitlab.md#omnibus-gitlab-reconfigure
+ ```ruby
+ postgres_exporter['dbname'] = 'pgbouncer' # The name of the database to connect to.
+ postgres_exporter['user'] = 'gitlab-psql' # The user to sign in as.
+ postgres_exporter['password'] = '' # The user's password.
+ postgres_exporter['host'] = 'localhost' # The host to connect to. Values that start with '/' are for unix domain sockets (default is 'localhost').
+ postgres_exporter['port'] = 5432 # The port to bind to (default is '5432').
+ postgres_exporter['sslmode'] = 'require' # Whether or not to use SSL. Valid options are:
+ # 'disable' (no SSL),
+ # 'require' (always use SSL and skip verification, this is the default value),
+ # 'verify-ca' (always use SSL and verify that the certificate presented by the server was signed by a trusted CA),
+ # 'verify-full' (always use SSL and verify that the certification presented by the server was signed by a trusted CA and the server host name matches the one in the certificate).
+ postgres_exporter['fallback_application_name'] = '' # An application_name to fall back to if one isn't provided.
+ postgres_exporter['connect_timeout'] = '' # Maximum wait for connection, in seconds. Zero or not specified means wait indefinitely.
+ postgres_exporter['sslcert'] = 'ssl.crt' # Cert file location. The file must contain PEM encoded data.
+ postgres_exporter['sslkey'] = 'ssl.key' # Key file location. The file must contain PEM encoded data.
+ postgres_exporter['sslrootcert'] = 'ssl-root.crt' # The location of the root certificate file. The file must contain PEM encoded data.
+ ```
+
+1. Save the file and [reconfigure GitLab](../../restart_gitlab.md#omnibus-gitlab-reconfigure) for the changes to take effect.
+
+[↠Back to the main Prometheus page](index.md)
diff --git a/doc/administration/monitoring/prometheus/registry_exporter.md b/doc/administration/monitoring/prometheus/registry_exporter.md
new file mode 100644
index 00000000000..692e589185e
--- /dev/null
+++ b/doc/administration/monitoring/prometheus/registry_exporter.md
@@ -0,0 +1,21 @@
+# Registry exporter
+
+> [Introduced](https://gitlab.com/gitlab-org/omnibus-gitlab/merge_requests/2884) in GitLab 11.9.
+
+The Registry exporter allows you to measure various Registry metrics.
+To enable it:
+
+1. [Enable Prometheus](index.md#configuring-prometheus).
+1. Edit `/etc/gitlab/gitlab.rb` and enable [debug mode](https://docs.docker.com/registry/#debug) for the Registry:
+
+ ```ruby
+ registry['debug_addr'] = "localhost:5001" # localhost:5001/metrics
+ ```
+
+1. Save the file and [reconfigure GitLab](../../restart_gitlab.md#omnibus-gitlab-reconfigure)
+ for the changes to take effect.
+
+Prometheus will now automatically begin collecting performance data from
+the registry exporter exposed under `localhost:5001/metrics`.
+
+[↠Back to the main Prometheus page](index.md)
diff --git a/doc/administration/operations/extra_sidekiq_processes.md b/doc/administration/operations/extra_sidekiq_processes.md
index 0b5ddfd03ee..e15f91ebab2 100644
--- a/doc/administration/operations/extra_sidekiq_processes.md
+++ b/doc/administration/operations/extra_sidekiq_processes.md
@@ -126,12 +126,26 @@ queues will use three threads in total.
## Limiting concurrency
-To limit the concurrency of the Sidekiq processes:
+To limit the concurrency of the Sidekiq process:
1. Edit `/etc/gitlab/gitlab.rb` and add:
```ruby
- sidekiq_cluster['concurrency'] = 25
+ sidekiq['concurrency'] = 25
+ ```
+
+1. Save the file and reconfigure GitLab for the changes to take effect:
+
+ ```sh
+ sudo gitlab-ctl reconfigure
+ ```
+
+To limit the max concurrency of the Sidekiq cluster processes:
+
+1. Edit `/etc/gitlab/gitlab.rb` and add:
+
+ ```ruby
+ sidekiq_cluster['max_concurrency'] = 25
```
1. Save the file and reconfigure GitLab for the changes to take effect:
diff --git a/doc/administration/packages/container_registry.md b/doc/administration/packages/container_registry.md
index a62e3ab603d..e735d8dd97e 100644
--- a/doc/administration/packages/container_registry.md
+++ b/doc/administration/packages/container_registry.md
@@ -457,36 +457,40 @@ If Registry is enabled in your GitLab instance, but you don't need it for your
project, you can disable it from your project's settings. Read the user guide
on how to achieve that.
-## Disable Container Registry but use GitLab as an auth endpoint
+## Use an external container registry with GitLab as an auth endpoint
**Omnibus GitLab**
-You can use GitLab as an auth endpoint and use a non-bundled Container Registry.
+You can use GitLab as an auth endpoint with an external container registry.
1. Open `/etc/gitlab/gitlab.rb` and set necessary configurations:
```ruby
gitlab_rails['registry_enabled'] = true
- gitlab_rails['registry_host'] = "registry.gitlab.example.com"
- gitlab_rails['registry_port'] = "5005"
gitlab_rails['registry_api_url'] = "http://localhost:5000"
- gitlab_rails['registry_path'] = "/var/opt/gitlab/gitlab-rails/shared/registry"
gitlab_rails['registry_issuer'] = "omnibus-gitlab-issuer"
```
-1. A certificate keypair is required for GitLab and the Container Registry to
- communicate securely. By default Omnibus GitLab will generate one keypair,
- which is saved to `/var/opt/gitlab/gitlab-rails/etc/gitlab-registry.key`.
- When using a non-bundled Container Registry, you will need to supply a
- custom certificate key. To do that, add the following to
- `/etc/gitlab/gitlab.rb`
+ NOTE: **Note:**
+ `gitlab_rails['registry_enabled'] = true` is needed to enable GitLab's
+ Container Registry features and authentication endpoint. GitLab's bundled
+ Container Registry service will not be started even with this enabled.
+
+1. A certificate-key pair is required for GitLab and the external container
+ registry to communicate securely. You will need to create a certificate-key
+ pair, configuring the external container registry with the public
+ certificate and configuring GitLab with the private key. To do that, add
+ the following to `/etc/gitlab/gitlab.rb`:
```ruby
- gitlab_rails['registry_key_path'] = "/custom/path/to/registry-key.key"
# registry['internal_key'] should contain the contents of the custom key
# file. Line breaks in the key file should be marked using `\n` character
# Example:
registry['internal_key'] = "---BEGIN RSA PRIVATE KEY---\nMIIEpQIBAA\n"
+
+ # Optionally define a custom file for Omnibus GitLab to write the contents
+ # of registry['internal_key'] to.
+ gitlab_rails['registry_key_path'] = "/custom/path/to/registry-key.key"
```
NOTE: **Note:**
@@ -496,7 +500,16 @@ You can use GitLab as an auth endpoint and use a non-bundled Container Registry.
`/var/opt/gitlab/gitlab-rails/etc/gitlab-registry.key` and will populate
it.
-1. Save the file and [reconfigure GitLab](../restart_gitlab.md#omnibus-gitlab-reconfigure) for the changes to take effect.
+1. To change the container registry URL displayed in the GitLab Container
+ Registry pages, set the following configurations:
+
+ ```ruby
+ gitlab_rails['registry_host'] = "registry.gitlab.example.com"
+ gitlab_rails['registry_port'] = "5005"
+ ```
+
+1. Save the file and [reconfigure GitLab](../restart_gitlab.md#omnibus-gitlab-reconfigure)
+ for the changes to take effect.
**Installations from source**
diff --git a/doc/administration/packages/index.md b/doc/administration/packages/index.md
index d4afc65577e..58dd8201c15 100644
--- a/doc/administration/packages/index.md
+++ b/doc/administration/packages/index.md
@@ -14,7 +14,7 @@ The Packages feature allows GitLab to act as a repository for the following:
Don't you see your package management system supported yet?
Please consider contributing
-to GitLab. This [development documentation](../../development/packages.md) will guide you through the process.
+to GitLab. This [development documentation](../../development/packages.md) will guide you through the process, it includes a list of [suggested contributions](../../development/packages.md#suggested-contributions).
## Enabling the Packages feature
diff --git a/doc/administration/pages/index.md b/doc/administration/pages/index.md
index f51c375860b..d1b58f2ee18 100644
--- a/doc/administration/pages/index.md
+++ b/doc/administration/pages/index.md
@@ -305,7 +305,7 @@ Pages access control is disabled by default. To enable it:
```
1. [Reconfigure GitLab][reconfigure].
-1. Users can now configure it in their [projects' settings](../../user/project/pages/introduction.md#gitlab-pages-access-control-core).
+1. Users can now configure it in their [projects' settings](../../user/project/pages/pages_access_control.md).
### Running behind a proxy
@@ -321,6 +321,23 @@ pages:
1. [Reconfigure GitLab][reconfigure] for the changes to take effect.
+### Using a custom Certificate Authority (CA) with Access Control
+
+When using certificates issued by a custom CA, Access Control on GitLab Pages may fail to work if the custom CA is not recognized.
+
+This usually results in this error:
+`Post /oauth/token: x509: certificate signed by unknown authority`.
+
+For GitLab Pages Access Control with TLS/SSL certs issued by an internal or custom CA:
+
+1. Copy the certificate bundle to `/opt/gitlab/embedded/ssl/certs/` in `.pem` format.
+
+1. [Restart](../restart_gitlab.md) the GitLab Pages Daemon. For GitLab Omnibus instances:
+
+ ```bash
+ sudo gitlab-ctl restart gitlab-pages
+ ```
+
## Activate verbose logging for daemon
Verbose logging was [introduced](https://gitlab.com/gitlab-org/omnibus-gitlab/merge_requests/2533) in
@@ -483,6 +500,7 @@ then you must use the following procedure to configure [access control](#access-
```ruby
gitlab_pages['gitlab_server'] = "https://<your-gitlab-server-URL>"
+ gitlab_pages['access_control'] = true
```
1. [Reconfigure GitLab](../restart_gitlab.md#omnibus-gitlab-reconfigure) for the changes to take effect.
diff --git a/doc/administration/raketasks/maintenance.md b/doc/administration/raketasks/maintenance.md
index e63e0c40393..149b8d62309 100644
--- a/doc/administration/raketasks/maintenance.md
+++ b/doc/administration/raketasks/maintenance.md
@@ -270,3 +270,15 @@ database: gitlabhq_production
--------------------------------------------------
up migration_id migration_name
```
+
+## Import common metrics
+
+Sometimes you may need to re-import the common metrics that power the Metrics dashboards.
+
+This could be as a result of [updating existing metrics](../../development/prometheus_metrics.md#update-existing-metrics), or as a [troubleshooting measure](../../user/project/integrations/prometheus.md#troubleshooting).
+
+To re-import the metrics you can run:
+
+```sh
+sudo gitlab-rake metrics:setup_common_metrics
+```
diff --git a/doc/administration/raketasks/uploads/migrate.md b/doc/administration/raketasks/uploads/migrate.md
index 517d6b01438..26c811ca54d 100644
--- a/doc/administration/raketasks/uploads/migrate.md
+++ b/doc/administration/raketasks/uploads/migrate.md
@@ -122,10 +122,10 @@ your data out of Object Storage and back into your local storage.
**Before proceeding, it is important to disable both `direct_upload` and `background_upload` under `uploads` settings in `gitlab.rb`**
CAUTION: **Warning:**
- **Extended downtime is required** so no new files are created in object storage during
- the migration. A configuration setting will be added soon to allow migrating
- from object storage to local files with only a brief moment of downtime for configuration changes.
- See issue [gitlab-org/gitlab#30979](https://gitlab.com/gitlab-org/gitlab/issues/30979)
+**Extended downtime is required** so no new files are created in object storage during
+the migration. A configuration setting will be added soon to allow migrating
+from object storage to local files with only a brief moment of downtime for configuration changes.
+To follow progress, see the [relevant issue](https://gitlab.com/gitlab-org/gitlab/issues/30979).
### All-in-one rake task
diff --git a/doc/administration/repository_storage_paths.md b/doc/administration/repository_storage_paths.md
index 86998280b93..d31b1d7fcd6 100644
--- a/doc/administration/repository_storage_paths.md
+++ b/doc/administration/repository_storage_paths.md
@@ -107,7 +107,8 @@ working, you can remove the `repos_path` line.
## Choose where new project repositories will be stored
Once you set the multiple storage paths, you can choose where new projects will
-be stored via the **Application Settings** in the Admin area.
+be stored under **Admin Area > Settings > Repository > Repository storage > Storage
+nodes for new projects**.
![Choose repository storage path in Admin area](img/repository_storages_admin_ui.png)
diff --git a/doc/administration/restart_gitlab.md b/doc/administration/restart_gitlab.md
index 9f95080654f..6f3c6028f71 100644
--- a/doc/administration/restart_gitlab.md
+++ b/doc/administration/restart_gitlab.md
@@ -8,6 +8,7 @@ If you want the TL;DR versions, jump to:
- [Omnibus GitLab restart](#omnibus-gitlab-restart)
- [Omnibus GitLab reconfigure](#omnibus-gitlab-reconfigure)
- [Source installation restart](#installations-from-source)
+- [Helm chart installation restart](#helm-chart-installations)
## Omnibus installations
@@ -143,3 +144,16 @@ If you are using other init systems, like systemd, you can check the
[chef]: https://www.chef.io/products/chef-infra/ "Chef official website"
[src-service]: https://gitlab.com/gitlab-org/gitlab/blob/master/lib/support/init.d/gitlab "GitLab init service file"
[gl-recipes]: https://gitlab.com/gitlab-org/gitlab-recipes/tree/master/init "GitLab Recipes repository"
+
+## Helm chart installations
+
+There is no single command to restart the entire GitLab application installed via
+the [cloud native Helm Chart](https://docs.gitlab.com/charts/). Usually, it should be
+enough to restart a specific component separately (`gitaly`, `unicorn`,
+`workhorse`, `gitlab-shell`, etc.) by deleting all the pods related to it:
+
+```bash
+kubectl delete pods -l release=<helm release name>,app=<component name>
+```
+
+The release name can be obtained from the output of the `helm list` command.
diff --git a/doc/administration/snippets/index.md b/doc/administration/snippets/index.md
new file mode 100644
index 00000000000..2e17db7b1f6
--- /dev/null
+++ b/doc/administration/snippets/index.md
@@ -0,0 +1,71 @@
+---
+type: reference, howto
+---
+
+# Snippets settings **(CORE ONLY)**
+
+Adjust the snippets' settings of your GitLab instance.
+
+## Snippets content size limit
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/31133) in GitLab 12.6.
+
+You can set a content size max limit in snippets. This limit can prevent
+abuses of the feature. The default content size limit is **52428800 Bytes** (50MB).
+
+### How does it work?
+
+The content size limit will be applied when a snippet is created or
+updated. Nevertheless, in order not to break any existing snippet,
+the limit will only be enforced in stored snippets when the content
+is updated.
+
+### Snippets size limit configuration
+
+This setting is not available through the [Admin Area settings](../../user/admin_area/settings/index.md).
+In order to configure this setting, use either the Rails console
+or the [Application settings API](../../api/settings.md).
+
+NOTE: **IMPORTANT:**
+The value of the limit **must** be in Bytes.
+
+#### Through the Rails console
+
+The steps to configure this setting through the Rails console are:
+
+1. Start the Rails console:
+
+ ```bash
+ # For Omnibus installations
+ sudo gitlab-rails console
+
+ # For installations from source
+ sudo -u git -H bundle exec rails console production
+ ```
+
+1. Update the snippets maximum file size:
+
+ ```ruby
+ ApplicationSetting.first.update!(snippet_size_limit: 50.megabytes)
+ ```
+
+To retrieve the current value, start the Rails console and run:
+
+ ```ruby
+ Gitlab::CurrentSettings.snippet_size_limit
+ ```
+
+#### Through the API
+
+The process to set the snippets size limit through the Application Settings API is
+exactly the same as you would do to [update any other setting](../../api/settings.md#change-application-settings).
+
+```bash
+curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/application/settings?snippet_size_limit=52428800
+```
+
+You can also use the API to [retrieve the current value](../../api/settings.md#get-current-application-settings).
+
+```bash
+curl --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/application/settings
+```
diff --git a/doc/administration/troubleshooting/elasticsearch.md b/doc/administration/troubleshooting/elasticsearch.md
index 37ec32413f8..5846514c574 100644
--- a/doc/administration/troubleshooting/elasticsearch.md
+++ b/doc/administration/troubleshooting/elasticsearch.md
@@ -171,7 +171,7 @@ To do this:
pp s.search_objects.class.name
```
-The ouput from the last command is the key here. If it shows:
+The output from the last command is the key here. If it shows:
- `ActiveRecord::Relation`, **it is not** using Elasticsearch.
- `Kaminari::PaginatableArray`, **it is** using Elasticsearch.
@@ -326,7 +326,7 @@ feel free to update that page with issues you encounter and solutions.
Setting up Elasticsearch isn't too bad, but it can be a bit finnicky and time consuming.
-The eastiest method is to spin up a docker container with the required version and
+The easiest method is to spin up a docker container with the required version and
bind ports 9200/9300 so it can be used.
The following is an example of running a docker container of Elasticsearch v7.2.0:
diff --git a/doc/administration/troubleshooting/gitlab_rails_cheat_sheet.md b/doc/administration/troubleshooting/gitlab_rails_cheat_sheet.md
index dd220d0871d..cb0b24ae026 100644
--- a/doc/administration/troubleshooting/gitlab_rails_cheat_sheet.md
+++ b/doc/administration/troubleshooting/gitlab_rails_cheat_sheet.md
@@ -258,6 +258,22 @@ Project.find_each do |project|
end
```
+## Wikis
+
+### Recreate
+
+A Projects Wiki can be recreated by
+
+**Note:** This is a destructive operation, the Wiki will be empty
+
+```ruby
+p = Project.find_by_full_path('<username-or-group>/<project-name>') ### enter your projects path
+
+GitlabShellWorker.perform_in(0, :remove_repository, p.repository_storage, p.wiki.disk_path) ### deletes the wiki project from the filesystem
+
+p.create_wiki ### creates the wiki project on the filesystem
+```
+
## Imports / Exports
```ruby
@@ -907,7 +923,7 @@ queue = Sidekiq::Queue.new('update_merge_requests')
queue.each { |job| job.delete if job.args[0]==125 and job.args[4]=='ref/heads/my_branch'}
```
-**Note:** Running jobs will not be killed. Stop sidekiq before doing this, to get all matching jobs.
+**Note:** Running jobs will not be killed. Stop Sidekiq before doing this, to get all matching jobs.
### Enable debug logging of Sidekiq
diff --git a/doc/administration/troubleshooting/postgresql.md b/doc/administration/troubleshooting/postgresql.md
index f427cd88ce0..65c6952bf1c 100644
--- a/doc/administration/troubleshooting/postgresql.md
+++ b/doc/administration/troubleshooting/postgresql.md
@@ -46,7 +46,7 @@ This section is for links to information elsewhere in the GitLab documentation.
- Managing Omnibus PostgreSQL versions [from the development docs](https://docs.gitlab.com/omnibus/development/managing-postgresql-versions.html)
- [PostgreSQL scaling and HA](../high_availability/database.md)
- - including [troubleshooting](../high_availability/database.md#troubleshooting) gitlab-ctl repmgr-check-master and pgbouncer errors
+ - including [troubleshooting](../high_availability/database.md#troubleshooting) `gitlab-ctl repmgr-check-master` and PgBouncer errors
- [Developer database documentation](../../development/README.md#database-guides) - some of which is absolutely not for production use. Including:
- understanding EXPLAIN plans
@@ -58,30 +58,30 @@ This section is for links to information elsewhere in the GitLab documentation.
- required extension pg_trgm
- required extension postgres_fdw for Geo
-- Errors like this in the production/sidekiq log; see: [Set default_transaction_isolation into read committed](https://docs.gitlab.com/omnibus/settings/database.html#set-default_transaction_isolation-into-read-committed)
+- Errors like this in the `production/sidekiq` log; see: [Set default_transaction_isolation into read committed](https://docs.gitlab.com/omnibus/settings/database.html#set-default_transaction_isolation-into-read-committed):
-```
-ActiveRecord::StatementInvalid PG::TRSerializationFailure: ERROR: could not serialize access due to concurrent update
-```
+ ```plaintext
+ ActiveRecord::StatementInvalid PG::TRSerializationFailure: ERROR: could not serialize access due to concurrent update
+ ```
-- PostgreSQL HA - [replication slot errors](https://docs.gitlab.com/omnibus/settings/database.html#troubleshooting-upgrades-in-an-ha-cluster)
+- PostgreSQL HA - [replication slot errors](https://docs.gitlab.com/omnibus/settings/database.html#troubleshooting-upgrades-in-an-ha-cluster):
-```
-pg_basebackup: could not create temporary replication slot "pg_basebackup_12345": ERROR: all replication slots are in use
-HINT: Free one or increase max_replication_slots.
-```
+ ```plaintext
+ pg_basebackup: could not create temporary replication slot "pg_basebackup_12345": ERROR: all replication slots are in use
+ HINT: Free one or increase max_replication_slots.
+ ```
- GEO [replication errors](../geo/replication/troubleshooting.md#fixing-replication-errors) including:
-```
-ERROR: replication slots can only be used if max_replication_slots > 0
+ ```plaintext
+ ERROR: replication slots can only be used if max_replication_slots > 0
-FATAL: could not start WAL streaming: ERROR: replication slot “geo_secondary_my_domain_com†does not exist
+ FATAL: could not start WAL streaming: ERROR: replication slot “geo_secondary_my_domain_com†does not exist
-Command exceeded allowed execution time
+ Command exceeded allowed execution time
-PANIC: could not write to file ‘pg_xlog/xlogtemp.123’: No space left on device
-```
+ PANIC: could not write to file ‘pg_xlog/xlogtemp.123’: No space left on device
+ ```
- [Checking GEO configuration](../geo/replication/troubleshooting.md#checking-configuration) including
- reconfiguring hosts/ports
@@ -96,7 +96,7 @@ PANIC: could not write to file ‘pg_xlog/xlogtemp.123’: No space left on devi
References:
- [Issue #1 Deadlocks with GitLab 12.1, PostgreSQL 10.7](https://gitlab.com/gitlab-org/gitlab/issues/30528)
-- [Customer ticket (internal) GitLab 12.1.6](https://gitlab.zendesk.com/agent/tickets/134307) and [google doc (internal)](https://docs.google.com/document/d/19xw2d_D1ChLiU-MO1QzWab-4-QXgsIUcN5e_04WTKy4)
+- [Customer ticket (internal) GitLab 12.1.6](https://gitlab.zendesk.com/agent/tickets/134307) and [Google doc (internal)](https://docs.google.com/document/d/19xw2d_D1ChLiU-MO1QzWab-4-QXgsIUcN5e_04WTKy4)
- [Issue #2 deadlocks can occur if an instance is flooded with pushes](https://gitlab.com/gitlab-org/gitlab/issues/33650). Provided for context about how GitLab code can have this sort of unanticipated effect in unusual situations.
```
@@ -117,7 +117,7 @@ Quoting from from issue [#1](https://gitlab.com/gitlab-org/gitlab/issues/30528):
TIP: **Tip:** In support, our general approach to reconfiguring timeouts (applies also to the HTTP stack as well) is that it's acceptable to do it temporarily as a workaround. If it makes GitLab usable for the customer, then it buys time to understand the problem more completely, implement a hot fix, or make some other change that addresses the root cause. Generally, the timeouts should be put back to reasonable defaults once the root cause is resolved.
-In this case, the guidance we had from development was to drop deadlock_timeout and/or statement_timeout but to leave the third setting at 60s. Setting idle_in_transaction protects the database from sessions potentially hanging for days. There's more discussion in [the issue relating to introducing this timeout on gitlab.com.](https://gitlab.com/gitlab-com/gl-infra/production/issues/1053)
+In this case, the guidance we had from development was to drop deadlock_timeout and/or statement_timeout but to leave the third setting at 60s. Setting idle_in_transaction protects the database from sessions potentially hanging for days. There's more discussion in [the issue relating to introducing this timeout on GitLab.com](https://gitlab.com/gitlab-com/gl-infra/production/issues/1053).
PostgresSQL defaults:
diff --git a/doc/api/README.md b/doc/api/README.md
index 6858e5b7d56..e756cd51997 100644
--- a/doc/api/README.md
+++ b/doc/api/README.md
@@ -82,7 +82,7 @@ There are four ways to authenticate with the GitLab API:
1. [OAuth2 tokens](#oauth2-tokens)
1. [Personal access tokens](#personal-access-tokens)
1. [Session cookie](#session-cookie)
-1. [GitLab CI job token](#gitlab-ci-job-token-premium) **(PREMIUM)**
+1. [GitLab CI job token](#gitlab-ci-job-token) **(Specific endpoints only)**
For admins who want to authenticate with the API as a specific user, or who want to build applications or scripts that do so, two options are available:
@@ -152,13 +152,14 @@ The primary user of this authentication method is the web frontend of GitLab its
which can use the API as the authenticated user to get a list of their projects,
for example, without needing to explicitly pass an access token.
-### GitLab CI job token **(PREMIUM)**
+### GitLab CI job token
With a few API endpoints you can use a [GitLab CI job token](../user/project/new_ci_build_permissions_model.md#job-token)
to authenticate with the API:
- [Get job artifacts](jobs.md#get-job-artifacts)
- [Pipeline triggers](pipeline_triggers.md)
+- [Release creation](releases/index.md#create-a-release)
### Impersonation tokens
@@ -313,6 +314,17 @@ The following table shows the possible return codes for API requests.
## Pagination
+We support two kinds of pagination methods:
+
+- Offset-based pagination. This is the default method and available on all endpoints.
+- Keyset-based pagination. Added to selected endpoints but being
+ [progressively rolled out](https://gitlab.com/groups/gitlab-org/-/epics/2039).
+
+For large collections, we recommend keyset pagination (when available) over offset
+pagination for performance reasons.
+
+### Offset-based pagination
+
Sometimes the returned result will span across many pages. When listing
resources you can pass the following parameters:
@@ -324,10 +336,10 @@ resources you can pass the following parameters:
In the example below, we list 50 [namespaces](namespaces.md) per page.
```bash
-curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/namespaces?per_page=50
+curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/namespaces?per_page=50"
```
-### Pagination Link header
+#### Pagination Link header
[Link headers](https://www.w3.org/wiki/LinkHeader) are sent back with each
response. They have `rel` set to prev/next/first/last and contain the relevant
@@ -362,7 +374,7 @@ X-Total: 8
X-Total-Pages: 3
```
-### Other pagination headers
+#### Other pagination headers
Additional pagination headers are also sent back.
@@ -383,6 +395,48 @@ and **behind the `api_kaminari_count_with_limit`
more than 10,000, the `X-Total` and `X-Total-Pages` headers as well as the
`rel="last"` `Link` are not present in the response headers.
+### Keyset-based pagination
+
+Keyset-pagination allows for more efficient retrieval of pages and - in contrast to offset-based pagination - runtime
+is independent of the size of the collection.
+
+This method is controlled by the following parameters:
+
+| Parameter | Description |
+| ------------ | -------------------------------------- |
+| `pagination` | `keyset` (to enable keyset pagination) |
+| `per_page` | Number of items to list per page (default: `20`, max: `100`) |
+
+In the example below, we list 50 [projects](projects.md) per page, ordered by `id` ascending.
+
+```bash
+curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects?pagination=keyset&per_page=50&order_by=id&sort=asc"
+```
+
+The response header includes a link to the next page. For example:
+
+```
+HTTP/1.1 200 OK
+...
+Link: <https://gitlab.example.com/api/v4/projects?pagination=keyset&per_page=50&order_by=id&sort=asc&id_after=42>; rel="next"
+Status: 200 OK
+...
+```
+
+The link to the next page contains an additional filter `id_after=42` which excludes records we have retrieved already.
+Note the type of filter depends on the `order_by` option used and we may have more than one additional filter.
+
+The `Link` header is absent when the end of the collection has been reached and there are no additional records to retrieve.
+
+We recommend using only the given link to retrieve the next page instead of building your own URL. Apart from the headers shown,
+we don't expose additional pagination headers.
+
+Keyset-based pagination is only supported for selected resources and ordering options:
+
+| Resource | Order |
+| ------------------------- | -------------------------- |
+| [Projects](projects.md) | `order_by=id` only |
+
## Namespaced path encoding
If using namespaced API calls, make sure that the `NAMESPACE/PROJECT_PATH` is
diff --git a/doc/api/boards.md b/doc/api/boards.md
index b9c2a984dc5..9ebe1570a59 100644
--- a/doc/api/boards.md
+++ b/doc/api/boards.md
@@ -49,7 +49,8 @@ Example response:
"description" : null
},
"position" : 1,
- "max_issue_count": 0
+ "max_issue_count": 0,
+ "max_issue_weight": 0
},
{
"id" : 2,
@@ -59,7 +60,8 @@ Example response:
"description" : null
},
"position" : 2,
- "max_issue_count": 0
+ "max_issue_count": 0,
+ "max_issue_weight": 0
},
{
"id" : 3,
@@ -69,7 +71,8 @@ Example response:
"description" : null
},
"position" : 3,
- "max_issue_count": 0
+ "max_issue_count": 0,
+ "max_issue_weight": 0
}
]
}
@@ -121,7 +124,8 @@ Example response:
"description" : null
},
"position" : 1,
- "max_issue_count": 0
+ "max_issue_count": 0,
+ "max_issue_weight": 0
},
{
"id" : 2,
@@ -131,7 +135,8 @@ Example response:
"description" : null
},
"position" : 2,
- "max_issue_count": 0
+ "max_issue_count": 0,
+ "max_issue_weight": 0
},
{
"id" : 3,
@@ -141,7 +146,8 @@ Example response:
"description" : null
},
"position" : 3,
- "max_issue_count": 0
+ "max_issue_count": 0,
+ "max_issue_weight": 0
}
]
}
@@ -192,7 +198,8 @@ Example response:
"description" : null
},
"position" : 1,
- "max_issue_count": 0
+ "max_issue_count": 0,
+ "max_issue_weight": 0
},
{
"id" : 2,
@@ -202,7 +209,8 @@ Example response:
"description" : null
},
"position" : 2,
- "max_issue_count": 0
+ "max_issue_count": 0,
+ "max_issue_weight": 0
},
{
"id" : 3,
@@ -212,7 +220,8 @@ Example response:
"description" : null
},
"position" : 3,
- "max_issue_count": 0
+ "max_issue_count": 0,
+ "max_issue_weight": 0
}
]
}
@@ -346,7 +355,8 @@ Example response:
"description" : null
},
"position" : 1,
- "max_issue_count": 0
+ "max_issue_count": 0,
+ "max_issue_weight": 0
},
{
"id" : 2,
@@ -356,7 +366,8 @@ Example response:
"description" : null
},
"position" : 2,
- "max_issue_count": 0
+ "max_issue_count": 0,
+ "max_issue_weight": 0
},
{
"id" : 3,
@@ -366,7 +377,8 @@ Example response:
"description" : null
},
"position" : 3,
- "max_issue_count": 0
+ "max_issue_count": 0,
+ "max_issue_weight": 0
}
]
```
@@ -400,7 +412,8 @@ Example response:
"description" : null
},
"position" : 1,
- "max_issue_count": 0
+ "max_issue_count": 0,
+ "max_issue_weight": 0
}
```
@@ -441,7 +454,8 @@ Example response:
"description" : null
},
"position" : 1,
- "max_issue_count": 0
+ "max_issue_count": 0,
+ "max_issue_weight": 0
}
```
@@ -475,7 +489,8 @@ Example response:
"description" : null
},
"position" : 1,
- "max_issue_count": 0
+ "max_issue_count": 0,
+ "max_issue_weight": 0
}
```
diff --git a/doc/api/broadcast_messages.md b/doc/api/broadcast_messages.md
index 357d9916ade..ce68eec87ff 100644
--- a/doc/api/broadcast_messages.md
+++ b/doc/api/broadcast_messages.md
@@ -34,7 +34,8 @@ Example response:
"color":"#E75E40",
"font":"#FFFFFF",
"id":1,
- "active": false
+ "active": false,
+ "target_path": "*/welcome"
}
]
```
@@ -69,7 +70,8 @@ Example response:
"color":"#cecece",
"font":"#FFFFFF",
"id":1,
- "active":false
+ "active":false,
+ "target_path": "*/welcome"
}
```
@@ -107,7 +109,8 @@ Example response:
"color":"#cecece",
"font":"#FFFFFF",
"id":1,
- "active": true
+ "active": true,
+ "target_path": "*/welcome"
}
```
@@ -146,7 +149,8 @@ Example response:
"color":"#000",
"font":"#FFFFFF",
"id":1,
- "active": true
+ "active": true,
+ "target_path": "*/welcome"
}
```
diff --git a/doc/api/deployments.md b/doc/api/deployments.md
index 6fc6599a47d..916c99d5f89 100644
--- a/doc/api/deployments.md
+++ b/doc/api/deployments.md
@@ -13,6 +13,8 @@ GET /projects/:id/deployments
| `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user |
| `order_by`| string | no | Return deployments ordered by `id` or `iid` or `created_at` or `updated_at` or `ref` fields. Default is `id` |
| `sort` | string | no | Return deployments sorted in `asc` or `desc` order. Default is `asc` |
+| `updated_after` | datetime | no | Return deployments updated after the specified date |
+| `updated_before` | datetime | no | Return deployments updated before the specified date |
```bash
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/deployments"
diff --git a/doc/api/graphql/getting_started.md b/doc/api/graphql/getting_started.md
new file mode 100644
index 00000000000..57c0fcc659c
--- /dev/null
+++ b/doc/api/graphql/getting_started.md
@@ -0,0 +1,361 @@
+# Getting started with GitLab GraphQL API
+
+This guide demonstrates basic usage of GitLab's GraphQL API.
+
+See the [GraphQL API StyleGuide](../../development/api_graphql_styleguide.md) for implementation details
+aimed at developers who wish to work on developing the API itself.
+
+## Running examples
+
+The examples documented here can be run using:
+
+- The command line.
+- GraphiQL.
+
+### Command line
+
+You can run GraphQL queries in a `curl` request on the command line on your local machine.
+A GraphQL request can be made as a `POST` request to `/api/graphql` with the query as the payload.
+You can authorize your request by generating a [personal access token](../../user/profile/personal_access_tokens.md)
+to use as a bearer token.
+
+Example:
+
+```sh
+GRAPHQL_TOKEN=<your-token>
+curl 'https://gitlab.com/api/graphql' --header "Authorization: Bearer $GRAPHQL_TOKEN" --header "Content-Type: application/json" --request POST --data "{\"query\": \"query {currentUser {name}}\"}"
+```
+
+### GraphiQL
+
+GraphiQL (pronounced “graphicalâ€) allows you to run queries directly against the server endpoint
+with syntax highlighting and autocomplete. It also allows you to explore the schema and types.
+
+The examples below:
+
+- Can be run directly against GitLab 11.0 or later, though some of the types and fields
+may not be supported in older versions.
+- Will work against GitLab.com without any further setup. Make sure you are signed in and
+navigate to the [GraphiQL Explorer](https://www.gitlab.com/-/graphql-explorer).
+
+If you want to run the queries locally, or on a self-managed instance,
+you will need to either:
+
+- Create the `gitlab-org` group with a project called `graphql-sandbox` under it. Create
+several issues within the project.
+- Edit the queries to replace `gitlab-org/graphql-sandbox` with your own group and project.
+
+Please refer to [running GraphiQL](index.md#graphiql) for more information.
+
+NOTE: **Note:**
+If you are running GitLab 11.0 to 12.0, enable the `graphql`
+[feature flag](../features.md#set-or-create-a-feature).
+
+## Queries and mutations
+
+The GitLab GraphQL API can be used to perform:
+
+- Queries for data retrieval.
+- [Mutations](#mutations) for creating, updating, and deleting data.
+
+NOTE: **Note:**
+In the GitLab GraphQL API, `id` generally refers to a global ID,
+which is an object identifier in the format of `gid://gitlab/Issue/123`.
+
+[GitLab's GraphQL Schema](reference/index.md) outlines which objects and fields are
+available for clients to query and their corresponding data types.
+
+Example: Get only the names of all the projects the currently logged in user can access (up to a limit, more on that later)
+in the group `gitlab-org`.
+
+```graphql
+query {
+ group(fullPath: "gitlab-org") {
+ id
+ name
+ projects {
+ nodes {
+ name
+ }
+ }
+ }
+}
+```
+
+Example: Get a specific project and the title of Issue #2.
+
+```graphql
+query {
+ project(fullPath: "gitlab-org/graphql-sandbox") {
+ name
+ issue(iid: "2") {
+ title
+ }
+ }
+}
+```
+
+### Graph traversal
+
+When retrieving child nodes use:
+
+- the `edges { node { } }` syntax.
+- the short form `nodes { }` syntax.
+
+Underneath it all is a graph we are traversing, hence the name GraphQL.
+
+Example: Get a project (only its name) and the titles of all its issues.
+
+```graphql
+query {
+ project(fullPath: "gitlab-org/graphql-sandbox") {
+ name
+ issues {
+ nodes {
+ title
+ description
+ }
+ }
+ }
+}
+```
+
+More about queries:
+[GraphQL docs](https://graphql.org/learn/queries/)
+
+### Authorization
+
+Authorization uses the same engine as the GitLab application (and GitLab.com). So if you've signed in to GitLab
+and use GraphiQL, all queries will be performed as you, the signed in user. For more information, see the
+[GitLab API documentation](../README.md#authentication).
+
+### Mutations
+
+Mutations make changes to data. We can update, delete, or create new records. Mutations
+generally use InputTypes and variables, neither of which appear here.
+
+Mutations have:
+
+- Inputs. For example, arguments, such as which emoji you'd like to award,
+and to which object.
+- Return statements. That is, what you'd like to get back when it's successful.
+- Errors. Always ask for what went wrong, just in case.
+
+#### Creation mutations
+
+Example: Let's have some tea - add a `:tea:` reaction emoji to an issue.
+
+```graphql
+mutation {
+ addAwardEmoji(input: { awardableId: "gid://gitlab/Issue/27039960",
+ name: "tea"
+ }) {
+ awardEmoji {
+ name
+ description
+ unicode
+ emoji
+ unicodeVersion
+ user {
+ name
+ }
+ }
+ errors
+ }
+}
+```
+
+Example: Add a comment to the issue (we're using the ID of the `GitLab.com` issue - but
+if you're using a local instance, you'll need to get the ID of an issue you can write to).
+
+```graphql
+mutation {
+ createNote(input: { noteableId: "gid://gitlab/Issue/27039960",
+ body: "*sips tea*"
+ }) {
+ note {
+ id
+ body
+ discussion {
+ id
+ }
+ }
+ errors
+ }
+}
+```
+
+#### Update mutations
+
+When you see the result `id` of the note you created - take a note of it. Now let's edit it to sip faster!
+
+```graphql
+mutation {
+ updateNote(input: { id: "gid://gitlab/Note/<note id>",
+ body: "*SIPS TEA*"
+ }) {
+ note {
+ id
+ body
+ }
+ errors
+ }
+}
+```
+
+#### Deletion mutations
+
+Let's delete the comment, since our tea is all gone.
+
+```graphql
+mutation {
+ destroyNote(input: { id: "gid://gitlab/Note/<note id>" }) {
+ note {
+ id
+ body
+ }
+ errors
+ }
+}
+```
+
+You should get something like the following output:
+
+```json
+{
+ "data": {
+ "destroyNote": {
+ "errors": [],
+ "note": null
+ }
+ }
+}
+```
+
+We've asked for the note details, but it doesn't exist anymore, so we get `null`.
+
+More about mutations:
+[GraphQL Docs](https://graphql.org/learn/queries/#mutations).
+
+### Introspective queries
+
+Clients can query the GraphQL endpoint for information about its own schema.
+by making an [introspective query](https://graphql.org/learn/introspection/).
+
+It is through an introspection query that the [GraphiQL Query Explorer](https://gitlab.com/-/graphql-explorer)
+gets all of its knowledge about our GraphQL schema to do autocompletion and provide
+its interactive `Docs` tab.
+
+Example: Get all the type names in the schema.
+
+```graphql
+{
+ __schema {
+ types {
+ name
+ }
+ }
+}
+```
+
+Example: Get all the fields associated with Issue.
+`kind` tells us the enum value for the type, like `OBJECT`, `SCALAR` or `INTERFACE`.
+
+```graphql
+query IssueTypes {
+ __type(name: "Issue") {
+ kind
+ name
+ fields {
+ name
+ description
+ type {
+ name
+ }
+ }
+ }
+}
+```
+
+More about introspection:
+[GraphQL docs](https://graphql.org/learn/introspection/)
+
+## Sorting
+
+Some of GitLab's GraphQL endpoints allow you to specify how you'd like a collection of
+objects to be sorted. You can only sort by what the schema allows you to.
+
+Example: Issues can be sorted by creation date:
+
+```graphql
+query {
+ project(fullPath: "gitlab-org/graphql-sandbox") {
+ name
+ issues(sort: created_asc) {
+ nodes {
+ title
+ createdAt
+ }
+ }
+ }
+}
+```
+
+## Pagination
+
+Pagination is a way of only asking for a subset of the records (say, the first 10).
+If we want more of them, we can make another request for the next 10 from the server
+(in the form of something like "please give me the next 10 records").
+
+By default, GitLab's GraphQL API will return only the first 100 records of any collection.
+This can be changed by using `first` or `last` arguments. Both arguments take a value,
+so `first: 10` will return the first 10 records, and `last: 10` the last 10 records.
+
+Example: Retrieve only the first 2 issues (slicing). The `cursor` field gives us a position from which
+we can retrieve further records relative to that one.
+
+```graphql
+query {
+ project(fullPath: "gitlab-org/graphql-sandbox") {
+ name
+ issues(first: 2) {
+ edges {
+ node {
+ title
+ }
+ }
+ pageInfo {
+ endCursor
+ hasNextPage
+ }
+ }
+ }
+}
+```
+
+Example: Retrieve the next 3. (The cursor value
+`eyJpZCI6IjI3MDM4OTMzIiwiY3JlYXRlZF9hdCI6IjIwMTktMTEtMTQgMDU6NTY6NDQgVVRDIn0`
+could be different, but it's the `cursor` value returned for the second issue returned above.)
+
+```graphql
+query {
+ project(fullPath: "gitlab-org/graphql-sandbox") {
+ name
+ issues(first: 3, after: "eyJpZCI6IjI3MDM4OTMzIiwiY3JlYXRlZF9hdCI6IjIwMTktMTEtMTQgMDU6NTY6NDQgVVRDIn0") {
+ edges {
+ node {
+ title
+ }
+ cursor
+ }
+ pageInfo {
+ endCursor
+ hasNextPage
+ }
+ }
+ }
+}
+```
+
+More on pagination and cursors:
+[GraphQL docs](https://graphql.org/learn/pagination/)
diff --git a/doc/api/graphql/index.md b/doc/api/graphql/index.md
index 510b36eba8f..f86802d4463 100644
--- a/doc/api/graphql/index.md
+++ b/doc/api/graphql/index.md
@@ -4,6 +4,27 @@
> - [Always enabled](https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/30444)
in GitLab 12.1.
+## Getting Started
+
+For those new to the GitLab GraphQL API, see
+[Getting started with GitLab GraphQL API](getting_started.md).
+
+### Quick Reference
+
+- GitLab's GraphQL API endpoint is located at `/api/graphql`.
+- Get an [introduction to GraphQL from graphql.org](https://graphql.org/).
+- GitLab supports a wide range of resources, listed in the [GraphQL API Reference](reference/index.md).
+
+#### GraphiQL
+
+Explore the GraphQL API using the interactive [GraphiQL explorer](https://gitlab.com/-/graphql-explorer),
+or on your self-managed GitLab instance on
+`https://<your-gitlab-site.com>/-/graphql-explorer`.
+
+See the [GitLab GraphQL overview](getting_started.md#graphiql) for more information about the GraphiQL Explorer.
+
+## What is GraphQL?
+
[GraphQL](https://graphql.org/) is a query language for APIs that
allows clients to request exactly the data they need, making it
possible to get all required data in a limited number of requests.
@@ -33,11 +54,17 @@ possible.
## Available queries
-A first iteration of a GraphQL API includes the following queries
+The GraphQL API includes the following queries at the root level:
-1. `project` : Within a project it is also possible to fetch a `mergeRequest` by IID.
+1. `project` : Project information, with many of its associations such as issues and merge requests also available.
1. `group` : Basic group information and epics **(ULTIMATE)** are currently supported.
1. `namespace` : Within a namespace it is also possible to fetch `projects`.
+1. `currentUser`: Information about the currently logged in user.
+1. `metaData`: Metadata about GitLab and the GraphQL API.
+1. `snippets`: Snippets visible to the currently logged in user.
+
+Root-level queries are defined in
+[`app/graphql/types/query_type.rb`](https://gitlab.com/gitlab-org/gitlab/blob/master/app/graphql/types/query_type.rb).
### Multiplex queries
@@ -58,10 +85,5 @@ Machine-readable versions are also available:
- [JSON format](reference/gitlab_schema.json)
- [IDL format](reference/gitlab_schema.graphql)
-## GraphiQL
-
-The API can be explored by using the GraphiQL IDE, it is available on your
-instance on `gitlab.example.com/-/graphql-explorer`.
-
[ce-19008]: https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/19008
[features-api]: ../features.md
diff --git a/doc/api/graphql/reference/gitlab_schema.graphql b/doc/api/graphql/reference/gitlab_schema.graphql
index a357c93b020..4673356cf9d 100644
--- a/doc/api/graphql/reference/gitlab_schema.graphql
+++ b/doc/api/graphql/reference/gitlab_schema.graphql
@@ -237,7 +237,7 @@ Autogenerated input type of CreateDiffNote
"""
input CreateDiffNoteInput {
"""
- The content note itself
+ Content of the note
"""
body: String!
@@ -357,7 +357,7 @@ Autogenerated input type of CreateImageDiffNote
"""
input CreateImageDiffNoteInput {
"""
- The content note itself
+ Content of the note
"""
body: String!
@@ -402,7 +402,7 @@ Autogenerated input type of CreateNote
"""
input CreateNoteInput {
"""
- The content note itself
+ Content of the note
"""
body: String!
@@ -442,6 +442,66 @@ type CreateNotePayload {
note: Note
}
+"""
+Autogenerated input type of CreateSnippet
+"""
+input CreateSnippetInput {
+ """
+ A unique identifier for the client performing the mutation.
+ """
+ clientMutationId: String
+
+ """
+ Content of the snippet
+ """
+ content: String!
+
+ """
+ Description of the snippet
+ """
+ description: String
+
+ """
+ File name of the snippet
+ """
+ fileName: String
+
+ """
+ The project full path the snippet is associated with
+ """
+ projectPath: ID
+
+ """
+ Title of the snippet
+ """
+ title: String!
+
+ """
+ The visibility level of the snippet
+ """
+ visibilityLevel: VisibilityLevelsEnum!
+}
+
+"""
+Autogenerated return type of CreateSnippet
+"""
+type CreateSnippetPayload {
+ """
+ A unique identifier for the client performing the mutation.
+ """
+ clientMutationId: String
+
+ """
+ Reasons why the mutation failed.
+ """
+ errors: [String!]!
+
+ """
+ The snippet after mutation
+ """
+ snippet: Snippet
+}
+
type Design implements Noteable {
diffRefs: DiffRefs!
@@ -861,6 +921,41 @@ type DestroyNotePayload {
note: Note
}
+"""
+Autogenerated input type of DestroySnippet
+"""
+input DestroySnippetInput {
+ """
+ A unique identifier for the client performing the mutation.
+ """
+ clientMutationId: String
+
+ """
+ The global id of the snippet to destroy
+ """
+ id: ID!
+}
+
+"""
+Autogenerated return type of DestroySnippet
+"""
+type DestroySnippetPayload {
+ """
+ A unique identifier for the client performing the mutation.
+ """
+ clientMutationId: String
+
+ """
+ Reasons why the mutation failed.
+ """
+ errors: [String!]!
+
+ """
+ The snippet after mutation
+ """
+ snippet: Snippet
+}
+
type DetailedStatus {
detailsPath: String!
favicon: String!
@@ -874,17 +969,17 @@ type DetailedStatus {
input DiffImagePositionInput {
"""
- The merge base of the branch the comment was made on
+ Merge base of the branch the comment was made on
"""
baseSha: String
"""
- The sha of the head at the time the comment was made
+ SHA of the HEAD at the time the comment was made
"""
headSha: String!
"""
- The total height of the image
+ Total height of the image
"""
height: Int!
@@ -895,22 +990,22 @@ input DiffImagePositionInput {
paths: DiffPathsInput!
"""
- The sha of the branch being compared against
+ SHA of the branch being compared against
"""
startSha: String!
"""
- The total width of the image
+ Total width of the image
"""
width: Int!
"""
- The X postion on which the comment was made
+ X position on which the comment was made
"""
x: Int!
"""
- The Y position on which the comment was made
+ Y position on which the comment was made
"""
y: Int!
}
@@ -928,73 +1023,80 @@ input DiffPathsInput {
}
type DiffPosition {
+ """
+ Information about the branch, HEAD, and base at the time of commenting
+ """
diffRefs: DiffRefs!
"""
- The path of the file that was changed
+ Path of the file that was changed
"""
filePath: String!
"""
- The total height of the image
+ Total height of the image
"""
height: Int
"""
- The line on head sha that was changed
+ Line on HEAD SHA that was changed
"""
newLine: Int
"""
- The path of the file on the head sha.
+ Path of the file on the HEAD SHA
"""
newPath: String
"""
- The line on start sha that was changed
+ Line on start SHA that was changed
"""
oldLine: Int
"""
- The path of the file on the start sha.
+ Path of the file on the start SHA
"""
oldPath: String
+
+ """
+ Type of file the position refers to
+ """
positionType: DiffPositionType!
"""
- The total width of the image
+ Total width of the image
"""
width: Int
"""
- The X postion on which the comment was made
+ X position on which the comment was made
"""
x: Int
"""
- The Y position on which the comment was made
+ Y position on which the comment was made
"""
y: Int
}
input DiffPositionInput {
"""
- The merge base of the branch the comment was made on
+ Merge base of the branch the comment was made on
"""
baseSha: String
"""
- The sha of the head at the time the comment was made
+ SHA of the HEAD at the time the comment was made
"""
headSha: String!
"""
- The line on head sha that was changed
+ Line on HEAD SHA that was changed
"""
newLine: Int!
"""
- The line on start sha that was changed
+ Line on start SHA that was changed
"""
oldLine: Int
@@ -1005,7 +1107,7 @@ input DiffPositionInput {
paths: DiffPathsInput!
"""
- The sha of the branch being compared against
+ SHA of the branch being compared against
"""
startSha: String!
}
@@ -1020,23 +1122,30 @@ enum DiffPositionType {
type DiffRefs {
"""
- The merge base of the branch the comment was made on
+ Merge base of the branch the comment was made on
"""
baseSha: String!
"""
- The sha of the head at the time the comment was made
+ SHA of the HEAD at the time the comment was made
"""
headSha: String!
"""
- The sha of the branch being compared against
+ SHA of the branch being compared against
"""
startSha: String!
}
type Discussion {
+ """
+ Timestamp of the discussion's creation
+ """
createdAt: Time!
+
+ """
+ ID of this discussion
+ """
id: ID!
"""
@@ -1065,7 +1174,7 @@ type Discussion {
): NoteConnection!
"""
- The ID used to reply to this discussion
+ ID used to reply to this discussion
"""
replyId: ID!
}
@@ -1128,7 +1237,14 @@ enum EntryType {
}
type Epic implements Noteable {
+ """
+ Author of the epic
+ """
author: User!
+
+ """
+ Children (sub-epics) of the epic
+ """
children(
"""
Returns the elements in the list that come after the specified cursor.
@@ -1157,12 +1273,12 @@ type Epic implements Noteable {
first: Int
"""
- The IID of the epic, e.g., "1"
+ IID of the epic, e.g., "1"
"""
iid: ID
"""
- The list of IIDs of epics, e.g., [1, 2]
+ List of IIDs of epics, e.g., [1, 2]
"""
iids: [ID!]
@@ -1197,13 +1313,25 @@ type Epic implements Noteable {
"""
state: EpicState
): EpicConnection
+
+ """
+ Timestamp of the epic's closure
+ """
closedAt: Time
+
+ """
+ Timestamp of the epic's creation
+ """
createdAt: Time
"""
Number of open and closed descendant epics and issues
"""
descendantCounts: EpicDescendantCount
+
+ """
+ Description of the epic
+ """
description: String
"""
@@ -1230,14 +1358,55 @@ type Epic implements Noteable {
"""
last: Int
): DiscussionConnection!
+
+ """
+ Number of downvotes the epic has received
+ """
+ downvotes: Int!
+
+ """
+ Due date of the epic
+ """
dueDate: Time
+
+ """
+ Fixed due date of the epic
+ """
dueDateFixed: Time
+
+ """
+ Inherited due date of the epic from milestones
+ """
dueDateFromMilestones: Time
+
+ """
+ Indicates if the due date has been manually set
+ """
dueDateIsFixed: Boolean
+
+ """
+ Group to which the epic belongs
+ """
group: Group!
+
+ """
+ Indicates if the epic has children
+ """
hasChildren: Boolean!
+
+ """
+ Indicates if the epic has direct issues
+ """
hasIssues: Boolean!
+
+ """
+ ID of the epic
+ """
id: ID!
+
+ """
+ Internal ID of the epic
+ """
iid: ID!
"""
@@ -1314,6 +1483,10 @@ type Epic implements Noteable {
"""
last: Int
): NoteConnection!
+
+ """
+ Parent epic of the epic
+ """
parent: Epic
"""
@@ -1344,23 +1517,56 @@ type Epic implements Noteable {
relationPath: String
"""
- The relative position of the epic in the Epic tree
+ The relative position of the epic in the epic tree
"""
relativePosition: Int
+
+ """
+ Start date of the epic
+ """
startDate: Time
+
+ """
+ Fixed start date of the epic
+ """
startDateFixed: Time
+
+ """
+ Inherited start date of the epic from milestones
+ """
startDateFromMilestones: Time
+
+ """
+ Indicates if the start date has been manually set
+ """
startDateIsFixed: Boolean
+
+ """
+ State of the epic
+ """
state: EpicState!
"""
Boolean flag for whether the currently logged in user is subscribed to this epic
"""
subscribed: Boolean!
+
+ """
+ Title of the epic
+ """
title: String
+
+ """
+ Timestamp of the epic's last activity
+ """
updatedAt: Time
"""
+ Number of upvotes the epic has received
+ """
+ upvotes: Int!
+
+ """
Permissions for the current user on the resource
"""
userPermissions: EpicPermissions!
@@ -1480,7 +1686,15 @@ type EpicIssue implements Noteable {
The GitLab Flavored Markdown rendering of `description`
"""
descriptionHtml: String
+
+ """
+ Collection of design images associated with this issue
+ """
designCollection: DesignCollection
+
+ """
+ Deprecated. Use `design_collection`.
+ """
designs: DesignCollection @deprecated(reason: "use design_collection")
"""
@@ -1524,13 +1738,17 @@ type EpicIssue implements Noteable {
dueDate: Time
"""
- The epic to which issue belongs
+ Epic to which this issue belongs
"""
epic: Epic
+
+ """
+ ID of the epic-issue relation
+ """
epicIssueId: ID!
"""
- The global id of the epic-issue relation
+ Global ID of the epic-issue relation
"""
id: ID
@@ -1628,6 +1846,10 @@ type EpicIssue implements Noteable {
"""
full: Boolean = false
): String!
+
+ """
+ URI path of the epic-issue relation
+ """
relationPath: String
"""
@@ -1699,6 +1921,10 @@ type EpicIssue implements Noteable {
Web URL of the issue
"""
webUrl: String!
+
+ """
+ Weight of the issue
+ """
weight: Int
}
@@ -1943,6 +2169,10 @@ type Group {
The GitLab Flavored Markdown rendering of `description`
"""
descriptionHtml: String
+
+ """
+ Find a single epic
+ """
epic(
"""
Filter epics by author
@@ -1956,12 +2186,12 @@ type Group {
endDate: Time
"""
- The IID of the epic, e.g., "1"
+ IID of the epic, e.g., "1"
"""
iid: ID
"""
- The list of IIDs of epics, e.g., [1, 2]
+ List of IIDs of epics, e.g., [1, 2]
"""
iids: [ID!]
@@ -1991,6 +2221,10 @@ type Group {
"""
state: EpicState
): Epic
+
+ """
+ Find epics
+ """
epics(
"""
Returns the elements in the list that come after the specified cursor.
@@ -2019,12 +2253,12 @@ type Group {
first: Int
"""
- The IID of the epic, e.g., "1"
+ IID of the epic, e.g., "1"
"""
iid: ID
"""
- The list of IIDs of epics, e.g., [1, 2]
+ List of IIDs of epics, e.g., [1, 2]
"""
iids: [ID!]
@@ -2059,6 +2293,10 @@ type Group {
"""
state: EpicState
): EpicConnection
+
+ """
+ Indicates if Epics are enabled for namespace
+ """
epicsEnabled: Boolean
"""
@@ -2072,6 +2310,11 @@ type Group {
fullPath: ID!
"""
+ Indicates if Group timelogs are enabled for namespace
+ """
+ groupTimelogsEnabled: Boolean
+
+ """
ID of the namespace
"""
id: ID!
@@ -2137,6 +2380,41 @@ type Group {
rootStorageStatistics: RootStorageStatistics
"""
+ Time logged in issues by group members
+ """
+ timelogs(
+ """
+ Returns the elements in the list that come after the specified cursor.
+ """
+ after: String
+
+ """
+ Returns the elements in the list that come before the specified cursor.
+ """
+ before: String
+
+ """
+ List time logs within a time range where the logged date is before end_date parameter.
+ """
+ endDate: Time!
+
+ """
+ Returns the first _n_ elements from the list.
+ """
+ first: Int
+
+ """
+ Returns the last _n_ elements from the list.
+ """
+ last: Int
+
+ """
+ List time logs within a time range where the logged date is after start_date parameter.
+ """
+ startDate: Time!
+ ): TimelogConnection!
+
+ """
Permissions for the current user on the resource
"""
userPermissions: GroupPermissions!
@@ -2223,7 +2501,15 @@ type Issue implements Noteable {
The GitLab Flavored Markdown rendering of `description`
"""
descriptionHtml: String
+
+ """
+ Collection of design images associated with this issue
+ """
designCollection: DesignCollection
+
+ """
+ Deprecated. Use `design_collection`.
+ """
designs: DesignCollection @deprecated(reason: "use design_collection")
"""
@@ -2267,7 +2553,7 @@ type Issue implements Noteable {
dueDate: Time
"""
- The epic to which issue belongs
+ Epic to which this issue belongs
"""
epic: Epic
@@ -2435,6 +2721,10 @@ type Issue implements Noteable {
Web URL of the issue
"""
webUrl: String!
+
+ """
+ Weight of the issue
+ """
weight: Int
}
@@ -2519,6 +2809,141 @@ type IssuePermissions {
}
"""
+Autogenerated input type of IssueSetConfidential
+"""
+input IssueSetConfidentialInput {
+ """
+ A unique identifier for the client performing the mutation.
+ """
+ clientMutationId: String
+
+ """
+ Whether or not to set the issue as a confidential.
+ """
+ confidential: Boolean!
+
+ """
+ The iid of the issue to mutate
+ """
+ iid: String!
+
+ """
+ The project the issue to mutate is in
+ """
+ projectPath: ID!
+}
+
+"""
+Autogenerated return type of IssueSetConfidential
+"""
+type IssueSetConfidentialPayload {
+ """
+ A unique identifier for the client performing the mutation.
+ """
+ clientMutationId: String
+
+ """
+ Reasons why the mutation failed.
+ """
+ errors: [String!]!
+
+ """
+ The issue after mutation
+ """
+ issue: Issue
+}
+
+"""
+Autogenerated input type of IssueSetDueDate
+"""
+input IssueSetDueDateInput {
+ """
+ A unique identifier for the client performing the mutation.
+ """
+ clientMutationId: String
+
+ """
+ The desired due date for the issue
+ """
+ dueDate: Time!
+
+ """
+ The iid of the issue to mutate
+ """
+ iid: String!
+
+ """
+ The project the issue to mutate is in
+ """
+ projectPath: ID!
+}
+
+"""
+Autogenerated return type of IssueSetDueDate
+"""
+type IssueSetDueDatePayload {
+ """
+ A unique identifier for the client performing the mutation.
+ """
+ clientMutationId: String
+
+ """
+ Reasons why the mutation failed.
+ """
+ errors: [String!]!
+
+ """
+ The issue after mutation
+ """
+ issue: Issue
+}
+
+"""
+Autogenerated input type of IssueSetWeight
+"""
+input IssueSetWeightInput {
+ """
+ A unique identifier for the client performing the mutation.
+ """
+ clientMutationId: String
+
+ """
+ The iid of the issue to mutate
+ """
+ iid: String!
+
+ """
+ The project the issue to mutate is in
+ """
+ projectPath: ID!
+
+ """
+ The desired weight for the issue
+ """
+ weight: Int!
+}
+
+"""
+Autogenerated return type of IssueSetWeight
+"""
+type IssueSetWeightPayload {
+ """
+ A unique identifier for the client performing the mutation.
+ """
+ clientMutationId: String
+
+ """
+ Reasons why the mutation failed.
+ """
+ errors: [String!]!
+
+ """
+ The issue after mutation
+ """
+ issue: Issue
+}
+
+"""
Values for sorting issues
"""
enum IssueSort {
@@ -2538,6 +2963,16 @@ enum IssueSort {
RELATIVE_POSITION_ASC
"""
+ Weight by ascending order
+ """
+ WEIGHT_ASC
+
+ """
+ Weight by descending order
+ """
+ WEIGHT_DESC
+
+ """
Created at ascending order
"""
created_asc
@@ -2574,7 +3009,7 @@ type Label {
color: String!
"""
- Description of the label (markdown rendered as HTML for caching)
+ Description of the label (Markdown rendered as HTML for caching)
"""
description: String
@@ -2634,6 +3069,41 @@ type LabelEdge {
node: Label
}
+"""
+Autogenerated input type of MarkAsSpamSnippet
+"""
+input MarkAsSpamSnippetInput {
+ """
+ A unique identifier for the client performing the mutation.
+ """
+ clientMutationId: String
+
+ """
+ The global id of the snippet to update
+ """
+ id: ID!
+}
+
+"""
+Autogenerated return type of MarkAsSpamSnippet
+"""
+type MarkAsSpamSnippetPayload {
+ """
+ A unique identifier for the client performing the mutation.
+ """
+ clientMutationId: String
+
+ """
+ Reasons why the mutation failed.
+ """
+ errors: [String!]!
+
+ """
+ The snippet after mutation
+ """
+ snippet: Snippet
+}
+
type MergeRequest implements Noteable {
"""
Indicates if members of the target project can push to the fork
@@ -2676,7 +3146,7 @@ type MergeRequest implements Noteable {
defaultMergeCommitMessage: String
"""
- Description of the merge request (markdown rendered as HTML for caching)
+ Description of the merge request (Markdown rendered as HTML for caching)
"""
description: String
@@ -3496,11 +3966,17 @@ type Mutation {
createEpic(input: CreateEpicInput!): CreateEpicPayload
createImageDiffNote(input: CreateImageDiffNoteInput!): CreateImageDiffNotePayload
createNote(input: CreateNoteInput!): CreateNotePayload
+ createSnippet(input: CreateSnippetInput!): CreateSnippetPayload
designManagementDelete(input: DesignManagementDeleteInput!): DesignManagementDeletePayload
designManagementUpload(input: DesignManagementUploadInput!): DesignManagementUploadPayload
destroyNote(input: DestroyNoteInput!): DestroyNotePayload
+ destroySnippet(input: DestroySnippetInput!): DestroySnippetPayload
epicSetSubscription(input: EpicSetSubscriptionInput!): EpicSetSubscriptionPayload
epicTreeReorder(input: EpicTreeReorderInput!): EpicTreeReorderPayload
+ issueSetConfidential(input: IssueSetConfidentialInput!): IssueSetConfidentialPayload
+ issueSetDueDate(input: IssueSetDueDateInput!): IssueSetDueDatePayload
+ issueSetWeight(input: IssueSetWeightInput!): IssueSetWeightPayload
+ markAsSpamSnippet(input: MarkAsSpamSnippetInput!): MarkAsSpamSnippetPayload
mergeRequestSetAssignees(input: MergeRequestSetAssigneesInput!): MergeRequestSetAssigneesPayload
mergeRequestSetLabels(input: MergeRequestSetLabelsInput!): MergeRequestSetLabelsPayload
mergeRequestSetLocked(input: MergeRequestSetLockedInput!): MergeRequestSetLockedPayload
@@ -3509,9 +3985,12 @@ type Mutation {
mergeRequestSetWip(input: MergeRequestSetWipInput!): MergeRequestSetWipPayload
removeAwardEmoji(input: RemoveAwardEmojiInput!): RemoveAwardEmojiPayload
todoMarkDone(input: TodoMarkDoneInput!): TodoMarkDonePayload
+ todoRestore(input: TodoRestoreInput!): TodoRestorePayload
+ todosMarkAllDone(input: TodosMarkAllDoneInput!): TodosMarkAllDonePayload
toggleAwardEmoji(input: ToggleAwardEmojiInput!): ToggleAwardEmojiPayload
updateEpic(input: UpdateEpicInput!): UpdateEpicPayload
updateNote(input: UpdateNoteInput!): UpdateNotePayload
+ updateSnippet(input: UpdateSnippetInput!): UpdateSnippetPayload
}
"""
@@ -3623,12 +4102,12 @@ type Namespace {
type Note {
"""
- The user who wrote this note
+ User who wrote this note
"""
author: User!
"""
- The content note itself
+ Content of the note
"""
body: String!
@@ -3636,12 +4115,20 @@ type Note {
The GitLab Flavored Markdown rendering of `note`
"""
bodyHtml: String
+
+ """
+ Timestamp of the note creation
+ """
createdAt: Time!
"""
The discussion this note is a part of
"""
discussion: Discussion
+
+ """
+ ID of the note
+ """
id: ID!
"""
@@ -3650,25 +4137,33 @@ type Note {
position: DiffPosition
"""
- The project this note is associated to
+ Project associated with the note
"""
project: Project
+
+ """
+ Indicates if this note can be resolved. That is, if it is a resolvable discussion or simply a standalone note
+ """
resolvable: Boolean!
"""
- The time the discussion was resolved
+ Timestamp of the note's resolution
"""
resolvedAt: Time
"""
- The user that resolved the discussion
+ User that resolved the discussion
"""
resolvedBy: User
"""
- Whether or not this note was created by the system or by a user
+ Indicates whether this note was created by the system or by a user
"""
system: Boolean!
+
+ """
+ Timestamp of the note's last activity
+ """
updatedAt: Time!
"""
@@ -3996,19 +4491,23 @@ type Project {
createdBefore: Time
"""
- The IID of the issue, e.g., "1"
+ IID of the issue. For example, "1"
"""
iid: String
"""
- The list of IIDs of issues, e.g., [1, 2]
+ List of IIDs of issues. For example, [1, 2]
"""
iids: [String!]
"""
- Labels applied to the Issue
+ Labels applied to this issue
"""
labelName: [String]
+
+ """
+ Search query for finding issues by title or description
+ """
search: String
"""
@@ -4017,7 +4516,7 @@ type Project {
sort: IssueSort = created_desc
"""
- Current state of Issue
+ Current state of this issue
"""
state: IssuableState
@@ -4072,17 +4571,17 @@ type Project {
first: Int
"""
- The IID of the issue, e.g., "1"
+ IID of the issue. For example, "1"
"""
iid: String
"""
- The list of IIDs of issues, e.g., [1, 2]
+ List of IIDs of issues. For example, [1, 2]
"""
iids: [String!]
"""
- Labels applied to the Issue
+ Labels applied to this issue
"""
labelName: [String]
@@ -4090,6 +4589,10 @@ type Project {
Returns the last _n_ elements from the list.
"""
last: Int
+
+ """
+ Search query for finding issues by title or description
+ """
search: String
"""
@@ -4098,7 +4601,7 @@ type Project {
sort: IssueSort = created_desc
"""
- Current state of Issue
+ Current state of this issue
"""
state: IssuableState
@@ -4297,11 +4800,66 @@ type Project {
requestAccessEnabled: Boolean
"""
+ Detailed version of a Sentry error on the project
+ """
+ sentryDetailedError(
+ """
+ ID of the Sentry issue
+ """
+ id: ID!
+ ): SentryDetailedError
+
+ """
+ E-mail address of the service desk.
+ """
+ serviceDeskAddress: String
+
+ """
+ Indicates if the project has service desk enabled.
+ """
+ serviceDeskEnabled: Boolean
+
+ """
Indicates if shared runners are enabled on the project
"""
sharedRunnersEnabled: Boolean
"""
+ Snippets of the project
+ """
+ snippets(
+ """
+ Returns the elements in the list that come after the specified cursor.
+ """
+ after: String
+
+ """
+ Returns the elements in the list that come before the specified cursor.
+ """
+ before: String
+
+ """
+ Returns the first _n_ elements from the list.
+ """
+ first: Int
+
+ """
+ Array of global snippet ids, e.g., "gid://gitlab/ProjectSnippet/1"
+ """
+ ids: [ID!]
+
+ """
+ Returns the last _n_ elements from the list.
+ """
+ last: Int
+
+ """
+ The visibility of the snippet
+ """
+ visibility: VisibilityScopesEnum
+ ): SnippetConnection
+
+ """
(deprecated) Does this project have snippets enabled?. Use `snippets_access_level` instead
"""
snippetsEnabled: Boolean
@@ -4464,9 +5022,9 @@ type ProjectPermissions {
createPipelineSchedule: Boolean!
"""
- Whether or not a user can perform `create_project_snippet` on this resource
+ Whether or not a user can perform `create_snippet` on this resource
"""
- createProjectSnippet: Boolean!
+ createSnippet: Boolean!
"""
Whether or not a user can perform `create_wiki` on this resource
@@ -4633,9 +5191,14 @@ type Query {
currentUser: User
"""
- Testing endpoint to validate the API with
+ Text to echo back
"""
- echo(text: String!): String!
+ echo(
+ """
+ Text to echo back
+ """
+ text: String!
+ ): String!
"""
Find a group
@@ -4671,6 +5234,61 @@ type Query {
"""
fullPath: ID!
): Project
+
+ """
+ Find Snippets visible to the current user
+ """
+ snippets(
+ """
+ Returns the elements in the list that come after the specified cursor.
+ """
+ after: String
+
+ """
+ The ID of an author
+ """
+ authorId: ID
+
+ """
+ Returns the elements in the list that come before the specified cursor.
+ """
+ before: String
+
+ """
+ Explore personal snippets
+ """
+ explore: Boolean
+
+ """
+ Returns the first _n_ elements from the list.
+ """
+ first: Int
+
+ """
+ Array of global snippet ids, e.g., "gid://gitlab/ProjectSnippet/1"
+ """
+ ids: [ID!]
+
+ """
+ Returns the last _n_ elements from the list.
+ """
+ last: Int
+
+ """
+ The ID of a project
+ """
+ projectId: ID
+
+ """
+ The type of snippet
+ """
+ type: TypeEnum
+
+ """
+ The visibility of the snippet
+ """
+ visibility: VisibilityScopesEnum
+ ): SnippetConnection
}
"""
@@ -4767,7 +5385,7 @@ type RootStorageStatistics {
packagesSize: Int!
"""
- The git repository size in bytes
+ The Git repository size in bytes
"""
repositorySize: Int!
@@ -4782,6 +5400,342 @@ type RootStorageStatistics {
wikiSize: Int!
}
+type SentryDetailedError {
+ """
+ Count of occurrences
+ """
+ count: Int!
+
+ """
+ Culprit of the error
+ """
+ culprit: String!
+
+ """
+ External URL of the error
+ """
+ externalUrl: String!
+
+ """
+ Commit the error was first seen
+ """
+ firstReleaseLastCommit: String
+
+ """
+ Release version the error was first seen
+ """
+ firstReleaseShortVersion: String
+
+ """
+ Timestamp when the error was first seen
+ """
+ firstSeen: Time!
+
+ """
+ Last 24hr stats of the error
+ """
+ frequency: [SentryErrorFrequency!]!
+
+ """
+ ID (global ID) of the error
+ """
+ id: ID!
+
+ """
+ Commit the error was last seen
+ """
+ lastReleaseLastCommit: String
+
+ """
+ Release version the error was last seen
+ """
+ lastReleaseShortVersion: String
+
+ """
+ Timestamp when the error was last seen
+ """
+ lastSeen: Time!
+
+ """
+ Sentry metadata message of the error
+ """
+ message: String
+
+ """
+ ID (Sentry ID) of the error
+ """
+ sentryId: String!
+
+ """
+ ID of the project (Sentry project)
+ """
+ sentryProjectId: ID!
+
+ """
+ Name of the project affected by the error
+ """
+ sentryProjectName: String!
+
+ """
+ Slug of the project affected by the error
+ """
+ sentryProjectSlug: String!
+
+ """
+ Short ID (Sentry ID) of the error
+ """
+ shortId: String!
+
+ """
+ Status of the error
+ """
+ status: SentryErrorStatus!
+
+ """
+ Title of the error
+ """
+ title: String!
+
+ """
+ Type of the error
+ """
+ type: String!
+
+ """
+ Count of users affected by the error
+ """
+ userCount: Int!
+}
+
+type SentryErrorFrequency {
+ """
+ Count of errors received since the previously recorded time
+ """
+ count: Int!
+
+ """
+ Time the error frequency stats were recorded
+ """
+ time: Time!
+}
+
+"""
+State of a Sentry error
+"""
+enum SentryErrorStatus {
+ """
+ Error has been ignored
+ """
+ IGNORED
+
+ """
+ Error has been resolved
+ """
+ RESOLVED
+
+ """
+ Error has been ignored until next release
+ """
+ RESOLVED_IN_NEXT_RELEASE
+
+ """
+ Error is unresolved
+ """
+ UNRESOLVED
+}
+
+"""
+Represents a snippet entry
+"""
+type Snippet implements Noteable {
+ """
+ The owner of the snippet
+ """
+ author: User!
+
+ """
+ Content of the snippet
+ """
+ content: String!
+
+ """
+ Timestamp this snippet was created
+ """
+ createdAt: Time!
+
+ """
+ Description of the snippet
+ """
+ description: String
+
+ """
+ The GitLab Flavored Markdown rendering of `description`
+ """
+ descriptionHtml: String
+
+ """
+ All discussions on this noteable
+ """
+ discussions(
+ """
+ Returns the elements in the list that come after the specified cursor.
+ """
+ after: String
+
+ """
+ Returns the elements in the list that come before the specified cursor.
+ """
+ before: String
+
+ """
+ Returns the first _n_ elements from the list.
+ """
+ first: Int
+
+ """
+ Returns the last _n_ elements from the list.
+ """
+ last: Int
+ ): DiscussionConnection!
+
+ """
+ File Name of the snippet
+ """
+ fileName: String
+
+ """
+ Id of the snippet
+ """
+ id: ID!
+
+ """
+ All notes on this noteable
+ """
+ notes(
+ """
+ Returns the elements in the list that come after the specified cursor.
+ """
+ after: String
+
+ """
+ Returns the elements in the list that come before the specified cursor.
+ """
+ before: String
+
+ """
+ Returns the first _n_ elements from the list.
+ """
+ first: Int
+
+ """
+ Returns the last _n_ elements from the list.
+ """
+ last: Int
+ ): NoteConnection!
+
+ """
+ The project the snippet is associated with
+ """
+ project: Project
+
+ """
+ Raw URL of the snippet
+ """
+ rawUrl: String!
+
+ """
+ Title of the snippet
+ """
+ title: String!
+
+ """
+ Timestamp this snippet was updated
+ """
+ updatedAt: Time!
+
+ """
+ Permissions for the current user on the resource
+ """
+ userPermissions: SnippetPermissions!
+
+ """
+ Visibility Level of the snippet
+ """
+ visibilityLevel: VisibilityLevelsEnum!
+
+ """
+ Web URL of the snippet
+ """
+ webUrl: String!
+}
+
+"""
+The connection type for Snippet.
+"""
+type SnippetConnection {
+ """
+ A list of edges.
+ """
+ edges: [SnippetEdge]
+
+ """
+ A list of nodes.
+ """
+ nodes: [Snippet]
+
+ """
+ Information to aid in pagination.
+ """
+ pageInfo: PageInfo!
+}
+
+"""
+An edge in a connection.
+"""
+type SnippetEdge {
+ """
+ A cursor for use in pagination.
+ """
+ cursor: String!
+
+ """
+ The item at the end of the edge.
+ """
+ node: Snippet
+}
+
+type SnippetPermissions {
+ """
+ Whether or not a user can perform `admin_snippet` on this resource
+ """
+ adminSnippet: Boolean!
+
+ """
+ Whether or not a user can perform `award_emoji` on this resource
+ """
+ awardEmoji: Boolean!
+
+ """
+ Whether or not a user can perform `create_note` on this resource
+ """
+ createNote: Boolean!
+
+ """
+ Whether or not a user can perform `read_snippet` on this resource
+ """
+ readSnippet: Boolean!
+
+ """
+ Whether or not a user can perform `report_snippet` on this resource
+ """
+ reportSnippet: Boolean!
+
+ """
+ Whether or not a user can perform `update_snippet` on this resource
+ """
+ updateSnippet: Boolean!
+}
+
type Submodule implements Entry {
flatPath: String!
id: ID!
@@ -4852,6 +5806,63 @@ Time represented in ISO 8601
"""
scalar Time
+type Timelog {
+ """
+ The date when the time tracked was spent at
+ """
+ date: Time!
+
+ """
+ The issue that logged time was added to
+ """
+ issue: Issue
+
+ """
+ The time spent displayed in seconds
+ """
+ timeSpent: Int!
+
+ """
+ The user that logged the time
+ """
+ user: User!
+}
+
+"""
+The connection type for Timelog.
+"""
+type TimelogConnection {
+ """
+ A list of edges.
+ """
+ edges: [TimelogEdge]
+
+ """
+ A list of nodes.
+ """
+ nodes: [Timelog]
+
+ """
+ Information to aid in pagination.
+ """
+ pageInfo: PageInfo!
+}
+
+"""
+An edge in a connection.
+"""
+type TimelogEdge {
+ """
+ A cursor for use in pagination.
+ """
+ cursor: String!
+
+ """
+ The item at the end of the edge.
+ """
+ node: Timelog
+}
+
"""
Representing a todo entry
"""
@@ -4982,6 +5993,41 @@ type TodoMarkDonePayload {
todo: Todo!
}
+"""
+Autogenerated input type of TodoRestore
+"""
+input TodoRestoreInput {
+ """
+ A unique identifier for the client performing the mutation.
+ """
+ clientMutationId: String
+
+ """
+ The global id of the todo to restore
+ """
+ id: ID!
+}
+
+"""
+Autogenerated return type of TodoRestore
+"""
+type TodoRestorePayload {
+ """
+ A unique identifier for the client performing the mutation.
+ """
+ clientMutationId: String
+
+ """
+ Reasons why the mutation failed.
+ """
+ errors: [String!]!
+
+ """
+ The requested todo
+ """
+ todo: Todo!
+}
+
enum TodoStateEnum {
done
pending
@@ -5015,6 +6061,36 @@ enum TodoTargetEnum {
}
"""
+Autogenerated input type of TodosMarkAllDone
+"""
+input TodosMarkAllDoneInput {
+ """
+ A unique identifier for the client performing the mutation.
+ """
+ clientMutationId: String
+}
+
+"""
+Autogenerated return type of TodosMarkAllDone
+"""
+type TodosMarkAllDonePayload {
+ """
+ A unique identifier for the client performing the mutation.
+ """
+ clientMutationId: String
+
+ """
+ Reasons why the mutation failed.
+ """
+ errors: [String!]!
+
+ """
+ Ids of the updated todos
+ """
+ updatedIds: [ID!]!
+}
+
+"""
Autogenerated input type of ToggleAwardEmoji
"""
input ToggleAwardEmojiInput {
@@ -5182,6 +6258,11 @@ type TreeEntryEdge {
node: TreeEntry
}
+enum TypeEnum {
+ personal
+ project
+}
+
"""
Autogenerated input type of UpdateEpic
"""
@@ -5272,7 +6353,7 @@ Autogenerated input type of UpdateNote
"""
input UpdateNoteInput {
"""
- The content note itself
+ Content of the note
"""
body: String!
@@ -5307,6 +6388,66 @@ type UpdateNotePayload {
note: Note
}
+"""
+Autogenerated input type of UpdateSnippet
+"""
+input UpdateSnippetInput {
+ """
+ A unique identifier for the client performing the mutation.
+ """
+ clientMutationId: String
+
+ """
+ Content of the snippet
+ """
+ content: String
+
+ """
+ Description of the snippet
+ """
+ description: String
+
+ """
+ File name of the snippet
+ """
+ fileName: String
+
+ """
+ The global id of the snippet to update
+ """
+ id: ID!
+
+ """
+ Title of the snippet
+ """
+ title: String
+
+ """
+ The visibility level of the snippet
+ """
+ visibilityLevel: VisibilityLevelsEnum
+}
+
+"""
+Autogenerated return type of UpdateSnippet
+"""
+type UpdateSnippetPayload {
+ """
+ A unique identifier for the client performing the mutation.
+ """
+ clientMutationId: String
+
+ """
+ Reasons why the mutation failed.
+ """
+ errors: [String!]!
+
+ """
+ The snippet after mutation
+ """
+ snippet: Snippet
+}
+
scalar Upload
type User {
@@ -5321,6 +6462,46 @@ type User {
name: String!
"""
+ Snippets authored by the user
+ """
+ snippets(
+ """
+ Returns the elements in the list that come after the specified cursor.
+ """
+ after: String
+
+ """
+ Returns the elements in the list that come before the specified cursor.
+ """
+ before: String
+
+ """
+ Returns the first _n_ elements from the list.
+ """
+ first: Int
+
+ """
+ Array of global snippet ids, e.g., "gid://gitlab/ProjectSnippet/1"
+ """
+ ids: [ID!]
+
+ """
+ Returns the last _n_ elements from the list.
+ """
+ last: Int
+
+ """
+ The type of snippet
+ """
+ type: TypeEnum
+
+ """
+ The visibility of the snippet
+ """
+ visibility: VisibilityScopesEnum
+ ): SnippetConnection
+
+ """
Todos of the user
"""
todos(
@@ -5376,6 +6557,11 @@ type User {
): TodoConnection!
"""
+ Permissions for the current user on the resource
+ """
+ userPermissions: UserPermissions!
+
+ """
Username of the user. Unique within this instance of GitLab
"""
username: String!
@@ -5419,4 +6605,23 @@ type UserEdge {
The item at the end of the edge.
"""
node: User
+}
+
+type UserPermissions {
+ """
+ Whether or not a user can perform `create_snippet` on this resource
+ """
+ createSnippet: Boolean!
+}
+
+enum VisibilityLevelsEnum {
+ internal
+ private
+ public
+}
+
+enum VisibilityScopesEnum {
+ internal
+ private
+ public
} \ No newline at end of file
diff --git a/doc/api/graphql/reference/gitlab_schema.json b/doc/api/graphql/reference/gitlab_schema.json
index fea67f28d69..398ae52c130 100644
--- a/doc/api/graphql/reference/gitlab_schema.json
+++ b/doc/api/graphql/reference/gitlab_schema.json
@@ -50,11 +50,11 @@
},
{
"name": "echo",
- "description": "Testing endpoint to validate the API with",
+ "description": "Text to echo back",
"args": [
{
"name": "text",
- "description": null,
+ "description": "Text to echo back",
"type": {
"kind": "NON_NULL",
"name": null,
@@ -173,6 +173,127 @@
},
"isDeprecated": false,
"deprecationReason": null
+ },
+ {
+ "name": "snippets",
+ "description": "Find Snippets visible to the current user",
+ "args": [
+ {
+ "name": "ids",
+ "description": "Array of global snippet ids, e.g., \"gid://gitlab/ProjectSnippet/1\"",
+ "type": {
+ "kind": "LIST",
+ "name": null,
+ "ofType": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "ID",
+ "ofType": null
+ }
+ }
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "visibility",
+ "description": "The visibility of the snippet",
+ "type": {
+ "kind": "ENUM",
+ "name": "VisibilityScopesEnum",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "authorId",
+ "description": "The ID of an author",
+ "type": {
+ "kind": "SCALAR",
+ "name": "ID",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "projectId",
+ "description": "The ID of a project",
+ "type": {
+ "kind": "SCALAR",
+ "name": "ID",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "type",
+ "description": "The type of snippet",
+ "type": {
+ "kind": "ENUM",
+ "name": "TypeEnum",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "explore",
+ "description": "Explore personal snippets",
+ "type": {
+ "kind": "SCALAR",
+ "name": "Boolean",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "after",
+ "description": "Returns the elements in the list that come after the specified cursor.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "before",
+ "description": "Returns the elements in the list that come before the specified cursor.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "first",
+ "description": "Returns the first _n_ elements from the list.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "last",
+ "description": "Returns the last _n_ elements from the list.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ },
+ "defaultValue": null
+ }
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "SnippetConnection",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
}
],
"inputFields": null,
@@ -373,7 +494,7 @@
"args": [
{
"name": "iid",
- "description": "The IID of the issue, e.g., \"1\"",
+ "description": "IID of the issue. For example, \"1\"",
"type": {
"kind": "SCALAR",
"name": "String",
@@ -383,7 +504,7 @@
},
{
"name": "iids",
- "description": "The list of IIDs of issues, e.g., [1, 2]",
+ "description": "List of IIDs of issues. For example, [1, 2]",
"type": {
"kind": "LIST",
"name": null,
@@ -401,7 +522,7 @@
},
{
"name": "state",
- "description": "Current state of Issue",
+ "description": "Current state of this issue",
"type": {
"kind": "ENUM",
"name": "IssuableState",
@@ -411,7 +532,7 @@
},
{
"name": "labelName",
- "description": "Labels applied to the Issue",
+ "description": "Labels applied to this issue",
"type": {
"kind": "LIST",
"name": null,
@@ -485,7 +606,7 @@
},
{
"name": "search",
- "description": null,
+ "description": "Search query for finding issues by title or description",
"type": {
"kind": "SCALAR",
"name": "String",
@@ -518,7 +639,7 @@
"args": [
{
"name": "iid",
- "description": "The IID of the issue, e.g., \"1\"",
+ "description": "IID of the issue. For example, \"1\"",
"type": {
"kind": "SCALAR",
"name": "String",
@@ -528,7 +649,7 @@
},
{
"name": "iids",
- "description": "The list of IIDs of issues, e.g., [1, 2]",
+ "description": "List of IIDs of issues. For example, [1, 2]",
"type": {
"kind": "LIST",
"name": null,
@@ -546,7 +667,7 @@
},
{
"name": "state",
- "description": "Current state of Issue",
+ "description": "Current state of this issue",
"type": {
"kind": "ENUM",
"name": "IssuableState",
@@ -556,7 +677,7 @@
},
{
"name": "labelName",
- "description": "Labels applied to the Issue",
+ "description": "Labels applied to this issue",
"type": {
"kind": "LIST",
"name": null,
@@ -630,7 +751,7 @@
},
{
"name": "search",
- "description": null,
+ "description": "Search query for finding issues by title or description",
"type": {
"kind": "SCALAR",
"name": "String",
@@ -1167,6 +1288,61 @@
"deprecationReason": null
},
{
+ "name": "sentryDetailedError",
+ "description": "Detailed version of a Sentry error on the project",
+ "args": [
+ {
+ "name": "id",
+ "description": "ID of the Sentry issue",
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "ID",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ }
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "SentryDetailedError",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "serviceDeskAddress",
+ "description": "E-mail address of the service desk.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "serviceDeskEnabled",
+ "description": "Indicates if the project has service desk enabled.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "Boolean",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
"name": "sharedRunnersEnabled",
"description": "Indicates if shared runners are enabled on the project",
"args": [
@@ -1181,6 +1357,87 @@
"deprecationReason": null
},
{
+ "name": "snippets",
+ "description": "Snippets of the project",
+ "args": [
+ {
+ "name": "ids",
+ "description": "Array of global snippet ids, e.g., \"gid://gitlab/ProjectSnippet/1\"",
+ "type": {
+ "kind": "LIST",
+ "name": null,
+ "ofType": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "ID",
+ "ofType": null
+ }
+ }
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "visibility",
+ "description": "The visibility of the snippet",
+ "type": {
+ "kind": "ENUM",
+ "name": "VisibilityScopesEnum",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "after",
+ "description": "Returns the elements in the list that come after the specified cursor.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "before",
+ "description": "Returns the elements in the list that come before the specified cursor.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "first",
+ "description": "Returns the first _n_ elements from the list.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "last",
+ "description": "Returns the last _n_ elements from the list.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ },
+ "defaultValue": null
+ }
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "SnippetConnection",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
"name": "snippetsEnabled",
"description": "(deprecated) Does this project have snippets enabled?. Use `snippets_access_level` instead",
"args": [
@@ -1616,8 +1873,8 @@
"deprecationReason": null
},
{
- "name": "createProjectSnippet",
- "description": "Whether or not a user can perform `create_project_snippet` on this resource",
+ "name": "createSnippet",
+ "description": "Whether or not a user can perform `create_snippet` on this resource",
"args": [
],
@@ -2418,7 +2675,7 @@
},
{
"name": "repositorySize",
- "description": "The git repository size in bytes",
+ "description": "The Git repository size in bytes",
"args": [
],
@@ -2716,11 +2973,11 @@
},
{
"name": "epic",
- "description": null,
+ "description": "Find a single epic",
"args": [
{
"name": "iid",
- "description": "The IID of the epic, e.g., \"1\"",
+ "description": "IID of the epic, e.g., \"1\"",
"type": {
"kind": "SCALAR",
"name": "ID",
@@ -2730,7 +2987,7 @@
},
{
"name": "iids",
- "description": "The list of IIDs of epics, e.g., [1, 2]",
+ "description": "List of IIDs of epics, e.g., [1, 2]",
"type": {
"kind": "LIST",
"name": null,
@@ -2835,11 +3092,11 @@
},
{
"name": "epics",
- "description": null,
+ "description": "Find epics",
"args": [
{
"name": "iid",
- "description": "The IID of the epic, e.g., \"1\"",
+ "description": "IID of the epic, e.g., \"1\"",
"type": {
"kind": "SCALAR",
"name": "ID",
@@ -2849,7 +3106,7 @@
},
{
"name": "iids",
- "description": "The list of IIDs of epics, e.g., [1, 2]",
+ "description": "List of IIDs of epics, e.g., [1, 2]",
"type": {
"kind": "LIST",
"name": null,
@@ -2994,7 +3251,7 @@
},
{
"name": "epicsEnabled",
- "description": null,
+ "description": "Indicates if Epics are enabled for namespace",
"args": [
],
@@ -3043,6 +3300,20 @@
"deprecationReason": null
},
{
+ "name": "groupTimelogsEnabled",
+ "description": "Indicates if Group timelogs are enabled for namespace",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "Boolean",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
"name": "id",
"description": "ID of the namespace",
"args": [
@@ -3220,6 +3491,91 @@
"deprecationReason": null
},
{
+ "name": "timelogs",
+ "description": "Time logged in issues by group members",
+ "args": [
+ {
+ "name": "startDate",
+ "description": "List time logs within a time range where the logged date is after start_date parameter.",
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "Time",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "endDate",
+ "description": "List time logs within a time range where the logged date is before end_date parameter.",
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "Time",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "after",
+ "description": "Returns the elements in the list that come after the specified cursor.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "before",
+ "description": "Returns the elements in the list that come before the specified cursor.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "first",
+ "description": "Returns the first _n_ elements from the list.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "last",
+ "description": "Returns the last _n_ elements from the list.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ },
+ "defaultValue": null
+ }
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "OBJECT",
+ "name": "TimelogConnection",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
"name": "userPermissions",
"description": "Permissions for the current user on the resource",
"args": [
@@ -3315,7 +3671,7 @@
"fields": [
{
"name": "author",
- "description": null,
+ "description": "Author of the epic",
"args": [
],
@@ -3333,11 +3689,11 @@
},
{
"name": "children",
- "description": null,
+ "description": "Children (sub-epics) of the epic",
"args": [
{
"name": "iid",
- "description": "The IID of the epic, e.g., \"1\"",
+ "description": "IID of the epic, e.g., \"1\"",
"type": {
"kind": "SCALAR",
"name": "ID",
@@ -3347,7 +3703,7 @@
},
{
"name": "iids",
- "description": "The list of IIDs of epics, e.g., [1, 2]",
+ "description": "List of IIDs of epics, e.g., [1, 2]",
"type": {
"kind": "LIST",
"name": null,
@@ -3492,7 +3848,7 @@
},
{
"name": "closedAt",
- "description": null,
+ "description": "Timestamp of the epic's closure",
"args": [
],
@@ -3506,7 +3862,7 @@
},
{
"name": "createdAt",
- "description": null,
+ "description": "Timestamp of the epic's creation",
"args": [
],
@@ -3534,7 +3890,7 @@
},
{
"name": "description",
- "description": null,
+ "description": "Description of the epic",
"args": [
],
@@ -3604,8 +3960,26 @@
"deprecationReason": null
},
{
+ "name": "downvotes",
+ "description": "Number of downvotes the epic has received",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
"name": "dueDate",
- "description": null,
+ "description": "Due date of the epic",
"args": [
],
@@ -3619,7 +3993,7 @@
},
{
"name": "dueDateFixed",
- "description": null,
+ "description": "Fixed due date of the epic",
"args": [
],
@@ -3633,7 +4007,7 @@
},
{
"name": "dueDateFromMilestones",
- "description": null,
+ "description": "Inherited due date of the epic from milestones",
"args": [
],
@@ -3647,7 +4021,7 @@
},
{
"name": "dueDateIsFixed",
- "description": null,
+ "description": "Indicates if the due date has been manually set",
"args": [
],
@@ -3661,7 +4035,7 @@
},
{
"name": "group",
- "description": null,
+ "description": "Group to which the epic belongs",
"args": [
],
@@ -3679,7 +4053,7 @@
},
{
"name": "hasChildren",
- "description": null,
+ "description": "Indicates if the epic has children",
"args": [
],
@@ -3697,7 +4071,7 @@
},
{
"name": "hasIssues",
- "description": null,
+ "description": "Indicates if the epic has direct issues",
"args": [
],
@@ -3715,7 +4089,7 @@
},
{
"name": "id",
- "description": null,
+ "description": "ID of the epic",
"args": [
],
@@ -3733,7 +4107,7 @@
},
{
"name": "iid",
- "description": null,
+ "description": "Internal ID of the epic",
"args": [
],
@@ -3914,7 +4288,7 @@
},
{
"name": "parent",
- "description": null,
+ "description": "Parent epic of the epic",
"args": [
],
@@ -4022,7 +4396,7 @@
},
{
"name": "relativePosition",
- "description": "The relative position of the epic in the Epic tree",
+ "description": "The relative position of the epic in the epic tree",
"args": [
],
@@ -4036,7 +4410,7 @@
},
{
"name": "startDate",
- "description": null,
+ "description": "Start date of the epic",
"args": [
],
@@ -4050,7 +4424,7 @@
},
{
"name": "startDateFixed",
- "description": null,
+ "description": "Fixed start date of the epic",
"args": [
],
@@ -4064,7 +4438,7 @@
},
{
"name": "startDateFromMilestones",
- "description": null,
+ "description": "Inherited start date of the epic from milestones",
"args": [
],
@@ -4078,7 +4452,7 @@
},
{
"name": "startDateIsFixed",
- "description": null,
+ "description": "Indicates if the start date has been manually set",
"args": [
],
@@ -4092,7 +4466,7 @@
},
{
"name": "state",
- "description": null,
+ "description": "State of the epic",
"args": [
],
@@ -4128,7 +4502,7 @@
},
{
"name": "title",
- "description": null,
+ "description": "Title of the epic",
"args": [
],
@@ -4142,7 +4516,7 @@
},
{
"name": "updatedAt",
- "description": null,
+ "description": "Timestamp of the epic's last activity",
"args": [
],
@@ -4155,6 +4529,24 @@
"deprecationReason": null
},
{
+ "name": "upvotes",
+ "description": "Number of upvotes the epic has received",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
"name": "userPermissions",
"description": "Permissions for the current user on the resource",
"args": [
@@ -4368,6 +4760,11 @@
"kind": "OBJECT",
"name": "MergeRequest",
"ofType": null
+ },
+ {
+ "kind": "OBJECT",
+ "name": "Snippet",
+ "ofType": null
}
]
},
@@ -4490,7 +4887,7 @@
"fields": [
{
"name": "author",
- "description": "The user who wrote this note",
+ "description": "User who wrote this note",
"args": [
],
@@ -4508,7 +4905,7 @@
},
{
"name": "body",
- "description": "The content note itself",
+ "description": "Content of the note",
"args": [
],
@@ -4540,7 +4937,7 @@
},
{
"name": "createdAt",
- "description": null,
+ "description": "Timestamp of the note creation",
"args": [
],
@@ -4572,7 +4969,7 @@
},
{
"name": "id",
- "description": null,
+ "description": "ID of the note",
"args": [
],
@@ -4604,7 +5001,7 @@
},
{
"name": "project",
- "description": "The project this note is associated to",
+ "description": "Project associated with the note",
"args": [
],
@@ -4618,7 +5015,7 @@
},
{
"name": "resolvable",
- "description": null,
+ "description": "Indicates if this note can be resolved. That is, if it is a resolvable discussion or simply a standalone note",
"args": [
],
@@ -4636,7 +5033,7 @@
},
{
"name": "resolvedAt",
- "description": "The time the discussion was resolved",
+ "description": "Timestamp of the note's resolution",
"args": [
],
@@ -4650,7 +5047,7 @@
},
{
"name": "resolvedBy",
- "description": "The user that resolved the discussion",
+ "description": "User that resolved the discussion",
"args": [
],
@@ -4664,7 +5061,7 @@
},
{
"name": "system",
- "description": "Whether or not this note was created by the system or by a user",
+ "description": "Indicates whether this note was created by the system or by a user",
"args": [
],
@@ -4682,7 +5079,7 @@
},
{
"name": "updatedAt",
- "description": null,
+ "description": "Timestamp of the note's last activity",
"args": [
],
@@ -4869,6 +5266,97 @@
"deprecationReason": null
},
{
+ "name": "snippets",
+ "description": "Snippets authored by the user",
+ "args": [
+ {
+ "name": "ids",
+ "description": "Array of global snippet ids, e.g., \"gid://gitlab/ProjectSnippet/1\"",
+ "type": {
+ "kind": "LIST",
+ "name": null,
+ "ofType": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "ID",
+ "ofType": null
+ }
+ }
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "visibility",
+ "description": "The visibility of the snippet",
+ "type": {
+ "kind": "ENUM",
+ "name": "VisibilityScopesEnum",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "type",
+ "description": "The type of snippet",
+ "type": {
+ "kind": "ENUM",
+ "name": "TypeEnum",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "after",
+ "description": "Returns the elements in the list that come after the specified cursor.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "before",
+ "description": "Returns the elements in the list that come before the specified cursor.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "first",
+ "description": "Returns the first _n_ elements from the list.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "last",
+ "description": "Returns the last _n_ elements from the list.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ },
+ "defaultValue": null
+ }
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "SnippetConnection",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
"name": "todos",
"description": "Todos of the user",
"args": [
@@ -5034,6 +5522,24 @@
"deprecationReason": null
},
{
+ "name": "userPermissions",
+ "description": "Permissions for the current user on the resource",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "OBJECT",
+ "name": "UserPermissions",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
"name": "username",
"description": "Username of the user. Unique within this instance of GitLab",
"args": [
@@ -5079,6 +5585,37 @@
},
{
"kind": "OBJECT",
+ "name": "UserPermissions",
+ "description": null,
+ "fields": [
+ {
+ "name": "createSnippet",
+ "description": "Whether or not a user can perform `create_snippet` on this resource",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "Boolean",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "inputFields": null,
+ "interfaces": [
+
+ ],
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "OBJECT",
"name": "TodoConnection",
"description": "The connection type for Todo.",
"fields": [
@@ -5475,12 +6012,160 @@
},
{
"kind": "OBJECT",
- "name": "Discussion",
- "description": null,
+ "name": "SnippetConnection",
+ "description": "The connection type for Snippet.",
+ "fields": [
+ {
+ "name": "edges",
+ "description": "A list of edges.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "LIST",
+ "name": null,
+ "ofType": {
+ "kind": "OBJECT",
+ "name": "SnippetEdge",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "nodes",
+ "description": "A list of nodes.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "LIST",
+ "name": null,
+ "ofType": {
+ "kind": "OBJECT",
+ "name": "Snippet",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "pageInfo",
+ "description": "Information to aid in pagination.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "OBJECT",
+ "name": "PageInfo",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "inputFields": null,
+ "interfaces": [
+
+ ],
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "OBJECT",
+ "name": "SnippetEdge",
+ "description": "An edge in a connection.",
"fields": [
{
+ "name": "cursor",
+ "description": "A cursor for use in pagination.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "node",
+ "description": "The item at the end of the edge.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "Snippet",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "inputFields": null,
+ "interfaces": [
+
+ ],
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "OBJECT",
+ "name": "Snippet",
+ "description": "Represents a snippet entry",
+ "fields": [
+ {
+ "name": "author",
+ "description": "The owner of the snippet",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "OBJECT",
+ "name": "User",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "content",
+ "description": "Content of the snippet",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
"name": "createdAt",
- "description": null,
+ "description": "Timestamp this snippet was created",
"args": [
],
@@ -5497,8 +6182,107 @@
"deprecationReason": null
},
{
+ "name": "description",
+ "description": "Description of the snippet",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "descriptionHtml",
+ "description": "The GitLab Flavored Markdown rendering of `description`",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "discussions",
+ "description": "All discussions on this noteable",
+ "args": [
+ {
+ "name": "after",
+ "description": "Returns the elements in the list that come after the specified cursor.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "before",
+ "description": "Returns the elements in the list that come before the specified cursor.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "first",
+ "description": "Returns the first _n_ elements from the list.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "last",
+ "description": "Returns the last _n_ elements from the list.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ },
+ "defaultValue": null
+ }
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "OBJECT",
+ "name": "DiscussionConnection",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "fileName",
+ "description": "File Name of the snippet",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
"name": "id",
- "description": null,
+ "description": "Id of the snippet",
"args": [
],
@@ -5516,7 +6300,7 @@
},
{
"name": "notes",
- "description": "All notes in the discussion",
+ "description": "All notes on this noteable",
"args": [
{
"name": "after",
@@ -5572,8 +6356,22 @@
"deprecationReason": null
},
{
- "name": "replyId",
- "description": "The ID used to reply to this discussion",
+ "name": "project",
+ "description": "The project the snippet is associated with",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "Project",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "rawUrl",
+ "description": "Raw URL of the snippet",
"args": [
],
@@ -5582,29 +6380,16 @@
"name": null,
"ofType": {
"kind": "SCALAR",
- "name": "ID",
+ "name": "String",
"ofType": null
}
},
"isDeprecated": false,
"deprecationReason": null
- }
- ],
- "inputFields": null,
- "interfaces": [
-
- ],
- "enumValues": null,
- "possibleTypes": null
- },
- {
- "kind": "OBJECT",
- "name": "DiffPosition",
- "description": null,
- "fields": [
+ },
{
- "name": "diffRefs",
- "description": null,
+ "name": "title",
+ "description": "Title of the snippet",
"args": [
],
@@ -5612,8 +6397,8 @@
"kind": "NON_NULL",
"name": null,
"ofType": {
- "kind": "OBJECT",
- "name": "DiffRefs",
+ "kind": "SCALAR",
+ "name": "String",
"ofType": null
}
},
@@ -5621,8 +6406,8 @@
"deprecationReason": null
},
{
- "name": "filePath",
- "description": "The path of the file that was changed",
+ "name": "updatedAt",
+ "description": "Timestamp this snippet was updated",
"args": [
],
@@ -5631,7 +6416,7 @@
"name": null,
"ofType": {
"kind": "SCALAR",
- "name": "String",
+ "name": "Time",
"ofType": null
}
},
@@ -5639,78 +6424,115 @@
"deprecationReason": null
},
{
- "name": "height",
- "description": "The total height of the image",
+ "name": "userPermissions",
+ "description": "Permissions for the current user on the resource",
"args": [
],
"type": {
- "kind": "SCALAR",
- "name": "Int",
- "ofType": null
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "OBJECT",
+ "name": "SnippetPermissions",
+ "ofType": null
+ }
},
"isDeprecated": false,
"deprecationReason": null
},
{
- "name": "newLine",
- "description": "The line on head sha that was changed",
+ "name": "visibilityLevel",
+ "description": "Visibility Level of the snippet",
"args": [
],
"type": {
- "kind": "SCALAR",
- "name": "Int",
- "ofType": null
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "ENUM",
+ "name": "VisibilityLevelsEnum",
+ "ofType": null
+ }
},
"isDeprecated": false,
"deprecationReason": null
},
{
- "name": "newPath",
- "description": "The path of the file on the head sha.",
+ "name": "webUrl",
+ "description": "Web URL of the snippet",
"args": [
],
"type": {
- "kind": "SCALAR",
- "name": "String",
- "ofType": null
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
},
"isDeprecated": false,
"deprecationReason": null
- },
+ }
+ ],
+ "inputFields": null,
+ "interfaces": [
{
- "name": "oldLine",
- "description": "The line on start sha that was changed",
+ "kind": "INTERFACE",
+ "name": "Noteable",
+ "ofType": null
+ }
+ ],
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "OBJECT",
+ "name": "DiscussionConnection",
+ "description": "The connection type for Discussion.",
+ "fields": [
+ {
+ "name": "edges",
+ "description": "A list of edges.",
"args": [
],
"type": {
- "kind": "SCALAR",
- "name": "Int",
- "ofType": null
+ "kind": "LIST",
+ "name": null,
+ "ofType": {
+ "kind": "OBJECT",
+ "name": "DiscussionEdge",
+ "ofType": null
+ }
},
"isDeprecated": false,
"deprecationReason": null
},
{
- "name": "oldPath",
- "description": "The path of the file on the start sha.",
+ "name": "nodes",
+ "description": "A list of nodes.",
"args": [
],
"type": {
- "kind": "SCALAR",
- "name": "String",
- "ofType": null
+ "kind": "LIST",
+ "name": null,
+ "ofType": {
+ "kind": "OBJECT",
+ "name": "Discussion",
+ "ofType": null
+ }
},
"isDeprecated": false,
"deprecationReason": null
},
{
- "name": "positionType",
- "description": null,
+ "name": "pageInfo",
+ "description": "Information to aid in pagination.",
"args": [
],
@@ -5718,8 +6540,39 @@
"kind": "NON_NULL",
"name": null,
"ofType": {
- "kind": "ENUM",
- "name": "DiffPositionType",
+ "kind": "OBJECT",
+ "name": "PageInfo",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "inputFields": null,
+ "interfaces": [
+
+ ],
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "OBJECT",
+ "name": "DiscussionEdge",
+ "description": "An edge in a connection.",
+ "fields": [
+ {
+ "name": "cursor",
+ "description": "A cursor for use in pagination.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
"ofType": null
}
},
@@ -5727,43 +6580,139 @@
"deprecationReason": null
},
{
- "name": "width",
- "description": "The total width of the image",
+ "name": "node",
+ "description": "The item at the end of the edge.",
"args": [
],
"type": {
- "kind": "SCALAR",
- "name": "Int",
+ "kind": "OBJECT",
+ "name": "Discussion",
"ofType": null
},
"isDeprecated": false,
"deprecationReason": null
+ }
+ ],
+ "inputFields": null,
+ "interfaces": [
+
+ ],
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "OBJECT",
+ "name": "Discussion",
+ "description": null,
+ "fields": [
+ {
+ "name": "createdAt",
+ "description": "Timestamp of the discussion's creation",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "Time",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
},
{
- "name": "x",
- "description": "The X postion on which the comment was made",
+ "name": "id",
+ "description": "ID of this discussion",
"args": [
],
"type": {
- "kind": "SCALAR",
- "name": "Int",
- "ofType": null
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "ID",
+ "ofType": null
+ }
},
"isDeprecated": false,
"deprecationReason": null
},
{
- "name": "y",
- "description": "The Y position on which the comment was made",
+ "name": "notes",
+ "description": "All notes in the discussion",
+ "args": [
+ {
+ "name": "after",
+ "description": "Returns the elements in the list that come after the specified cursor.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "before",
+ "description": "Returns the elements in the list that come before the specified cursor.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "first",
+ "description": "Returns the first _n_ elements from the list.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "last",
+ "description": "Returns the last _n_ elements from the list.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ },
+ "defaultValue": null
+ }
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "OBJECT",
+ "name": "NoteConnection",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "replyId",
+ "description": "ID used to reply to this discussion",
"args": [
],
"type": {
- "kind": "SCALAR",
- "name": "Int",
- "ofType": null
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "ID",
+ "ofType": null
+ }
},
"isDeprecated": false,
"deprecationReason": null
@@ -5778,12 +6727,12 @@
},
{
"kind": "OBJECT",
- "name": "DiffRefs",
+ "name": "SnippetPermissions",
"description": null,
"fields": [
{
- "name": "baseSha",
- "description": "The merge base of the branch the comment was made on",
+ "name": "adminSnippet",
+ "description": "Whether or not a user can perform `admin_snippet` on this resource",
"args": [
],
@@ -5792,7 +6741,7 @@
"name": null,
"ofType": {
"kind": "SCALAR",
- "name": "String",
+ "name": "Boolean",
"ofType": null
}
},
@@ -5800,8 +6749,8 @@
"deprecationReason": null
},
{
- "name": "headSha",
- "description": "The sha of the head at the time the comment was made",
+ "name": "awardEmoji",
+ "description": "Whether or not a user can perform `award_emoji` on this resource",
"args": [
],
@@ -5810,7 +6759,7 @@
"name": null,
"ofType": {
"kind": "SCALAR",
- "name": "String",
+ "name": "Boolean",
"ofType": null
}
},
@@ -5818,8 +6767,8 @@
"deprecationReason": null
},
{
- "name": "startSha",
- "description": "The sha of the branch being compared against",
+ "name": "createNote",
+ "description": "Whether or not a user can perform `create_note` on this resource",
"args": [
],
@@ -5828,7 +6777,61 @@
"name": null,
"ofType": {
"kind": "SCALAR",
- "name": "String",
+ "name": "Boolean",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "readSnippet",
+ "description": "Whether or not a user can perform `read_snippet` on this resource",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "Boolean",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "reportSnippet",
+ "description": "Whether or not a user can perform `report_snippet` on this resource",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "Boolean",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "updateSnippet",
+ "description": "Whether or not a user can perform `update_snippet` on this resource",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "Boolean",
"ofType": null
}
},
@@ -5845,20 +6848,78 @@
},
{
"kind": "ENUM",
- "name": "DiffPositionType",
- "description": "Type of file the position refers to",
+ "name": "VisibilityLevelsEnum",
+ "description": null,
"fields": null,
"inputFields": null,
"interfaces": null,
"enumValues": [
{
- "name": "text",
+ "name": "private",
"description": null,
"isDeprecated": false,
"deprecationReason": null
},
{
- "name": "image",
+ "name": "internal",
+ "description": null,
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "public",
+ "description": null,
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "possibleTypes": null
+ },
+ {
+ "kind": "ENUM",
+ "name": "VisibilityScopesEnum",
+ "description": null,
+ "fields": null,
+ "inputFields": null,
+ "interfaces": null,
+ "enumValues": [
+ {
+ "name": "private",
+ "description": null,
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "internal",
+ "description": null,
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "public",
+ "description": null,
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "possibleTypes": null
+ },
+ {
+ "kind": "ENUM",
+ "name": "TypeEnum",
+ "description": null,
+ "fields": null,
+ "inputFields": null,
+ "interfaces": null,
+ "enumValues": [
+ {
+ "name": "personal",
+ "description": null,
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "project",
"description": null,
"isDeprecated": false,
"deprecationReason": null
@@ -5868,21 +6929,21 @@
},
{
"kind": "OBJECT",
- "name": "DiscussionConnection",
- "description": "The connection type for Discussion.",
+ "name": "DiffPosition",
+ "description": null,
"fields": [
{
- "name": "edges",
- "description": "A list of edges.",
+ "name": "diffRefs",
+ "description": "Information about the branch, HEAD, and base at the time of commenting",
"args": [
],
"type": {
- "kind": "LIST",
+ "kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "OBJECT",
- "name": "DiscussionEdge",
+ "name": "DiffRefs",
"ofType": null
}
},
@@ -5890,17 +6951,17 @@
"deprecationReason": null
},
{
- "name": "nodes",
- "description": "A list of nodes.",
+ "name": "filePath",
+ "description": "Path of the file that was changed",
"args": [
],
"type": {
- "kind": "LIST",
+ "kind": "NON_NULL",
"name": null,
"ofType": {
- "kind": "OBJECT",
- "name": "Discussion",
+ "kind": "SCALAR",
+ "name": "String",
"ofType": null
}
},
@@ -5908,8 +6969,78 @@
"deprecationReason": null
},
{
- "name": "pageInfo",
- "description": "Information to aid in pagination.",
+ "name": "height",
+ "description": "Total height of the image",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "newLine",
+ "description": "Line on HEAD SHA that was changed",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "newPath",
+ "description": "Path of the file on the HEAD SHA",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "oldLine",
+ "description": "Line on start SHA that was changed",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "oldPath",
+ "description": "Path of the file on the start SHA",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "positionType",
+ "description": "Type of file the position refers to",
"args": [
],
@@ -5917,13 +7048,55 @@
"kind": "NON_NULL",
"name": null,
"ofType": {
- "kind": "OBJECT",
- "name": "PageInfo",
+ "kind": "ENUM",
+ "name": "DiffPositionType",
"ofType": null
}
},
"isDeprecated": false,
"deprecationReason": null
+ },
+ {
+ "name": "width",
+ "description": "Total width of the image",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "x",
+ "description": "X position on which the comment was made",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "y",
+ "description": "Y position on which the comment was made",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
}
],
"inputFields": null,
@@ -5935,12 +7108,12 @@
},
{
"kind": "OBJECT",
- "name": "DiscussionEdge",
- "description": "An edge in a connection.",
+ "name": "DiffRefs",
+ "description": null,
"fields": [
{
- "name": "cursor",
- "description": "A cursor for use in pagination.",
+ "name": "baseSha",
+ "description": "Merge base of the branch the comment was made on",
"args": [
],
@@ -5957,15 +7130,37 @@
"deprecationReason": null
},
{
- "name": "node",
- "description": "The item at the end of the edge.",
+ "name": "headSha",
+ "description": "SHA of the HEAD at the time the comment was made",
"args": [
],
"type": {
- "kind": "OBJECT",
- "name": "Discussion",
- "ofType": null
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "startSha",
+ "description": "SHA of the branch being compared against",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
},
"isDeprecated": false,
"deprecationReason": null
@@ -5979,6 +7174,29 @@
"possibleTypes": null
},
{
+ "kind": "ENUM",
+ "name": "DiffPositionType",
+ "description": "Type of file the position refers to",
+ "fields": null,
+ "inputFields": null,
+ "interfaces": null,
+ "enumValues": [
+ {
+ "name": "text",
+ "description": null,
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "image",
+ "description": null,
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "possibleTypes": null
+ },
+ {
"kind": "OBJECT",
"name": "EpicPermissions",
"description": "Check permissions for the current user on an epic",
@@ -6448,7 +7666,7 @@
},
{
"name": "description",
- "description": "Description of the label (markdown rendered as HTML for caching)",
+ "description": "Description of the label (Markdown rendered as HTML for caching)",
"args": [
],
@@ -6916,7 +8134,7 @@
},
{
"name": "designCollection",
- "description": null,
+ "description": "Collection of design images associated with this issue",
"args": [
],
@@ -6930,7 +8148,7 @@
},
{
"name": "designs",
- "description": null,
+ "description": "Deprecated. Use `design_collection`.",
"args": [
],
@@ -7051,7 +8269,7 @@
},
{
"name": "epic",
- "description": "The epic to which issue belongs",
+ "description": "Epic to which this issue belongs",
"args": [
],
@@ -7065,7 +8283,7 @@
},
{
"name": "epicIssueId",
- "description": null,
+ "description": "ID of the epic-issue relation",
"args": [
],
@@ -7083,7 +8301,7 @@
},
{
"name": "id",
- "description": "The global id of the epic-issue relation",
+ "description": "Global ID of the epic-issue relation",
"args": [
],
@@ -7319,7 +8537,7 @@
},
{
"name": "relationPath",
- "description": null,
+ "description": "URI path of the epic-issue relation",
"args": [
],
@@ -7577,7 +8795,7 @@
},
{
"name": "weight",
- "description": null,
+ "description": "Weight of the issue",
"args": [
],
@@ -8346,7 +9564,7 @@
},
{
"name": "designCollection",
- "description": null,
+ "description": "Collection of design images associated with this issue",
"args": [
],
@@ -8360,7 +9578,7 @@
},
{
"name": "designs",
- "description": null,
+ "description": "Deprecated. Use `design_collection`.",
"args": [
],
@@ -8481,7 +9699,7 @@
},
{
"name": "epic",
- "description": "The epic to which issue belongs",
+ "description": "Epic to which this issue belongs",
"args": [
],
@@ -8961,7 +10179,7 @@
},
{
"name": "weight",
- "description": null,
+ "description": "Weight of the issue",
"args": [
],
@@ -9771,6 +10989,199 @@
},
{
"kind": "OBJECT",
+ "name": "TimelogConnection",
+ "description": "The connection type for Timelog.",
+ "fields": [
+ {
+ "name": "edges",
+ "description": "A list of edges.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "LIST",
+ "name": null,
+ "ofType": {
+ "kind": "OBJECT",
+ "name": "TimelogEdge",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "nodes",
+ "description": "A list of nodes.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "LIST",
+ "name": null,
+ "ofType": {
+ "kind": "OBJECT",
+ "name": "Timelog",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "pageInfo",
+ "description": "Information to aid in pagination.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "OBJECT",
+ "name": "PageInfo",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "inputFields": null,
+ "interfaces": [
+
+ ],
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "OBJECT",
+ "name": "TimelogEdge",
+ "description": "An edge in a connection.",
+ "fields": [
+ {
+ "name": "cursor",
+ "description": "A cursor for use in pagination.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "node",
+ "description": "The item at the end of the edge.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "Timelog",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "inputFields": null,
+ "interfaces": [
+
+ ],
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "OBJECT",
+ "name": "Timelog",
+ "description": null,
+ "fields": [
+ {
+ "name": "date",
+ "description": "The date when the time tracked was spent at",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "Time",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "issue",
+ "description": "The issue that logged time was added to",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "Issue",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "timeSpent",
+ "description": "The time spent displayed in seconds",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "user",
+ "description": "The user that logged the time",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "OBJECT",
+ "name": "User",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "inputFields": null,
+ "interfaces": [
+
+ ],
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "OBJECT",
"name": "ProjectStatistics",
"description": null,
"fields": [
@@ -12320,7 +13731,7 @@
},
{
"name": "description",
- "description": "Description of the merge request (markdown rendered as HTML for caching)",
+ "description": "Description of the merge request (Markdown rendered as HTML for caching)",
"args": [
],
@@ -13772,8 +15183,483 @@
"description": "Relative position by ascending order",
"isDeprecated": false,
"deprecationReason": null
+ },
+ {
+ "name": "WEIGHT_ASC",
+ "description": "Weight by ascending order",
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "WEIGHT_DESC",
+ "description": "Weight by descending order",
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "possibleTypes": null
+ },
+ {
+ "kind": "OBJECT",
+ "name": "SentryDetailedError",
+ "description": null,
+ "fields": [
+ {
+ "name": "count",
+ "description": "Count of occurrences",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "culprit",
+ "description": "Culprit of the error",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "externalUrl",
+ "description": "External URL of the error",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "firstReleaseLastCommit",
+ "description": "Commit the error was first seen",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "firstReleaseShortVersion",
+ "description": "Release version the error was first seen",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "firstSeen",
+ "description": "Timestamp when the error was first seen",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "Time",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "frequency",
+ "description": "Last 24hr stats of the error",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "LIST",
+ "name": null,
+ "ofType": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "OBJECT",
+ "name": "SentryErrorFrequency",
+ "ofType": null
+ }
+ }
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "id",
+ "description": "ID (global ID) of the error",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "ID",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "lastReleaseLastCommit",
+ "description": "Commit the error was last seen",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "lastReleaseShortVersion",
+ "description": "Release version the error was last seen",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "lastSeen",
+ "description": "Timestamp when the error was last seen",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "Time",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "message",
+ "description": "Sentry metadata message of the error",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "sentryId",
+ "description": "ID (Sentry ID) of the error",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "sentryProjectId",
+ "description": "ID of the project (Sentry project)",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "ID",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "sentryProjectName",
+ "description": "Name of the project affected by the error",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "sentryProjectSlug",
+ "description": "Slug of the project affected by the error",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "shortId",
+ "description": "Short ID (Sentry ID) of the error",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "status",
+ "description": "Status of the error",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "ENUM",
+ "name": "SentryErrorStatus",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "title",
+ "description": "Title of the error",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "type",
+ "description": "Type of the error",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "userCount",
+ "description": "Count of users affected by the error",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "inputFields": null,
+ "interfaces": [
+
+ ],
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "ENUM",
+ "name": "SentryErrorStatus",
+ "description": "State of a Sentry error",
+ "fields": null,
+ "inputFields": null,
+ "interfaces": null,
+ "enumValues": [
+ {
+ "name": "RESOLVED",
+ "description": "Error has been resolved",
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "RESOLVED_IN_NEXT_RELEASE",
+ "description": "Error has been ignored until next release",
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "UNRESOLVED",
+ "description": "Error is unresolved",
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "IGNORED",
+ "description": "Error has been ignored",
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "possibleTypes": null
+ },
+ {
+ "kind": "OBJECT",
+ "name": "SentryErrorFrequency",
+ "description": null,
+ "fields": [
+ {
+ "name": "count",
+ "description": "Count of errors received since the previously recorded time",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "time",
+ "description": "Time the error frequency stats were recorded",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "Time",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
}
],
+ "inputFields": null,
+ "interfaces": [
+
+ ],
+ "enumValues": null,
"possibleTypes": null
},
{
@@ -13966,6 +15852,33 @@
"deprecationReason": null
},
{
+ "name": "createSnippet",
+ "description": null,
+ "args": [
+ {
+ "name": "input",
+ "description": null,
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "INPUT_OBJECT",
+ "name": "CreateSnippetInput",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ }
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "CreateSnippetPayload",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
"name": "designManagementDelete",
"description": null,
"args": [
@@ -14047,6 +15960,33 @@
"deprecationReason": null
},
{
+ "name": "destroySnippet",
+ "description": null,
+ "args": [
+ {
+ "name": "input",
+ "description": null,
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "INPUT_OBJECT",
+ "name": "DestroySnippetInput",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ }
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "DestroySnippetPayload",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
"name": "epicSetSubscription",
"description": null,
"args": [
@@ -14101,6 +16041,114 @@
"deprecationReason": null
},
{
+ "name": "issueSetConfidential",
+ "description": null,
+ "args": [
+ {
+ "name": "input",
+ "description": null,
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "INPUT_OBJECT",
+ "name": "IssueSetConfidentialInput",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ }
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "IssueSetConfidentialPayload",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "issueSetDueDate",
+ "description": null,
+ "args": [
+ {
+ "name": "input",
+ "description": null,
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "INPUT_OBJECT",
+ "name": "IssueSetDueDateInput",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ }
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "IssueSetDueDatePayload",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "issueSetWeight",
+ "description": null,
+ "args": [
+ {
+ "name": "input",
+ "description": null,
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "INPUT_OBJECT",
+ "name": "IssueSetWeightInput",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ }
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "IssueSetWeightPayload",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "markAsSpamSnippet",
+ "description": null,
+ "args": [
+ {
+ "name": "input",
+ "description": null,
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "INPUT_OBJECT",
+ "name": "MarkAsSpamSnippetInput",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ }
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "MarkAsSpamSnippetPayload",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
"name": "mergeRequestSetAssignees",
"description": null,
"args": [
@@ -14317,6 +16365,60 @@
"deprecationReason": null
},
{
+ "name": "todoRestore",
+ "description": null,
+ "args": [
+ {
+ "name": "input",
+ "description": null,
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "INPUT_OBJECT",
+ "name": "TodoRestoreInput",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ }
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "TodoRestorePayload",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "todosMarkAllDone",
+ "description": null,
+ "args": [
+ {
+ "name": "input",
+ "description": null,
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "INPUT_OBJECT",
+ "name": "TodosMarkAllDoneInput",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ }
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "TodosMarkAllDonePayload",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
"name": "toggleAwardEmoji",
"description": null,
"args": [
@@ -14396,6 +16498,33 @@
},
"isDeprecated": false,
"deprecationReason": null
+ },
+ {
+ "name": "updateSnippet",
+ "description": null,
+ "args": [
+ {
+ "name": "input",
+ "description": null,
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "INPUT_OBJECT",
+ "name": "UpdateSnippetInput",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ }
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "UpdateSnippetPayload",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
}
],
"inputFields": null,
@@ -14894,6 +17023,266 @@
},
{
"kind": "OBJECT",
+ "name": "IssueSetConfidentialPayload",
+ "description": "Autogenerated return type of IssueSetConfidential",
+ "fields": [
+ {
+ "name": "clientMutationId",
+ "description": "A unique identifier for the client performing the mutation.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "errors",
+ "description": "Reasons why the mutation failed.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "LIST",
+ "name": null,
+ "ofType": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ }
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "issue",
+ "description": "The issue after mutation",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "Issue",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "inputFields": null,
+ "interfaces": [
+
+ ],
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "INPUT_OBJECT",
+ "name": "IssueSetConfidentialInput",
+ "description": "Autogenerated input type of IssueSetConfidential",
+ "fields": null,
+ "inputFields": [
+ {
+ "name": "projectPath",
+ "description": "The project the issue to mutate is in",
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "ID",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "iid",
+ "description": "The iid of the issue to mutate",
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "confidential",
+ "description": "Whether or not to set the issue as a confidential.",
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "Boolean",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "clientMutationId",
+ "description": "A unique identifier for the client performing the mutation.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ }
+ ],
+ "interfaces": null,
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "OBJECT",
+ "name": "IssueSetDueDatePayload",
+ "description": "Autogenerated return type of IssueSetDueDate",
+ "fields": [
+ {
+ "name": "clientMutationId",
+ "description": "A unique identifier for the client performing the mutation.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "errors",
+ "description": "Reasons why the mutation failed.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "LIST",
+ "name": null,
+ "ofType": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ }
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "issue",
+ "description": "The issue after mutation",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "Issue",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "inputFields": null,
+ "interfaces": [
+
+ ],
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "INPUT_OBJECT",
+ "name": "IssueSetDueDateInput",
+ "description": "Autogenerated input type of IssueSetDueDate",
+ "fields": null,
+ "inputFields": [
+ {
+ "name": "projectPath",
+ "description": "The project the issue to mutate is in",
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "ID",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "iid",
+ "description": "The iid of the issue to mutate",
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "dueDate",
+ "description": "The desired due date for the issue",
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "Time",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "clientMutationId",
+ "description": "A unique identifier for the client performing the mutation.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ }
+ ],
+ "interfaces": null,
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "OBJECT",
"name": "MergeRequestSetLabelsPayload",
"description": "Autogenerated return type of MergeRequestSetLabels",
"fields": [
@@ -15822,7 +18211,7 @@
},
{
"name": "body",
- "description": "The content note itself",
+ "description": "Content of the note",
"type": {
"kind": "NON_NULL",
"name": null,
@@ -15948,7 +18337,7 @@
},
{
"name": "body",
- "description": "The content note itself",
+ "description": "Content of the note",
"type": {
"kind": "NON_NULL",
"name": null,
@@ -15997,7 +18386,7 @@
"inputFields": [
{
"name": "headSha",
- "description": "The sha of the head at the time the comment was made",
+ "description": "SHA of the HEAD at the time the comment was made",
"type": {
"kind": "NON_NULL",
"name": null,
@@ -16011,7 +18400,7 @@
},
{
"name": "baseSha",
- "description": "The merge base of the branch the comment was made on",
+ "description": "Merge base of the branch the comment was made on",
"type": {
"kind": "SCALAR",
"name": "String",
@@ -16021,7 +18410,7 @@
},
{
"name": "startSha",
- "description": "The sha of the branch being compared against",
+ "description": "SHA of the branch being compared against",
"type": {
"kind": "NON_NULL",
"name": null,
@@ -16049,7 +18438,7 @@
},
{
"name": "oldLine",
- "description": "The line on start sha that was changed",
+ "description": "Line on start SHA that was changed",
"type": {
"kind": "SCALAR",
"name": "Int",
@@ -16059,7 +18448,7 @@
},
{
"name": "newLine",
- "description": "The line on head sha that was changed",
+ "description": "Line on HEAD SHA that was changed",
"type": {
"kind": "NON_NULL",
"name": null,
@@ -16196,7 +18585,7 @@
},
{
"name": "body",
- "description": "The content note itself",
+ "description": "Content of the note",
"type": {
"kind": "NON_NULL",
"name": null,
@@ -16245,7 +18634,7 @@
"inputFields": [
{
"name": "headSha",
- "description": "The sha of the head at the time the comment was made",
+ "description": "SHA of the HEAD at the time the comment was made",
"type": {
"kind": "NON_NULL",
"name": null,
@@ -16259,7 +18648,7 @@
},
{
"name": "baseSha",
- "description": "The merge base of the branch the comment was made on",
+ "description": "Merge base of the branch the comment was made on",
"type": {
"kind": "SCALAR",
"name": "String",
@@ -16269,7 +18658,7 @@
},
{
"name": "startSha",
- "description": "The sha of the branch being compared against",
+ "description": "SHA of the branch being compared against",
"type": {
"kind": "NON_NULL",
"name": null,
@@ -16297,7 +18686,7 @@
},
{
"name": "x",
- "description": "The X postion on which the comment was made",
+ "description": "X position on which the comment was made",
"type": {
"kind": "NON_NULL",
"name": null,
@@ -16311,7 +18700,7 @@
},
{
"name": "y",
- "description": "The Y position on which the comment was made",
+ "description": "Y position on which the comment was made",
"type": {
"kind": "NON_NULL",
"name": null,
@@ -16325,7 +18714,7 @@
},
{
"name": "width",
- "description": "The total width of the image",
+ "description": "Total width of the image",
"type": {
"kind": "NON_NULL",
"name": null,
@@ -16339,7 +18728,7 @@
},
{
"name": "height",
- "description": "The total height of the image",
+ "description": "Total height of the image",
"type": {
"kind": "NON_NULL",
"name": null,
@@ -16445,7 +18834,7 @@
},
{
"name": "body",
- "description": "The content note itself",
+ "description": "Content of the note",
"type": {
"kind": "NON_NULL",
"name": null,
@@ -16682,6 +19071,728 @@
},
{
"kind": "OBJECT",
+ "name": "TodoRestorePayload",
+ "description": "Autogenerated return type of TodoRestore",
+ "fields": [
+ {
+ "name": "clientMutationId",
+ "description": "A unique identifier for the client performing the mutation.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "errors",
+ "description": "Reasons why the mutation failed.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "LIST",
+ "name": null,
+ "ofType": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ }
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "todo",
+ "description": "The requested todo",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "OBJECT",
+ "name": "Todo",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "inputFields": null,
+ "interfaces": [
+
+ ],
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "INPUT_OBJECT",
+ "name": "TodoRestoreInput",
+ "description": "Autogenerated input type of TodoRestore",
+ "fields": null,
+ "inputFields": [
+ {
+ "name": "id",
+ "description": "The global id of the todo to restore",
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "ID",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "clientMutationId",
+ "description": "A unique identifier for the client performing the mutation.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ }
+ ],
+ "interfaces": null,
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "OBJECT",
+ "name": "TodosMarkAllDonePayload",
+ "description": "Autogenerated return type of TodosMarkAllDone",
+ "fields": [
+ {
+ "name": "clientMutationId",
+ "description": "A unique identifier for the client performing the mutation.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "errors",
+ "description": "Reasons why the mutation failed.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "LIST",
+ "name": null,
+ "ofType": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ }
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "updatedIds",
+ "description": "Ids of the updated todos",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "LIST",
+ "name": null,
+ "ofType": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "ID",
+ "ofType": null
+ }
+ }
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "inputFields": null,
+ "interfaces": [
+
+ ],
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "INPUT_OBJECT",
+ "name": "TodosMarkAllDoneInput",
+ "description": "Autogenerated input type of TodosMarkAllDone",
+ "fields": null,
+ "inputFields": [
+ {
+ "name": "clientMutationId",
+ "description": "A unique identifier for the client performing the mutation.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ }
+ ],
+ "interfaces": null,
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "OBJECT",
+ "name": "DestroySnippetPayload",
+ "description": "Autogenerated return type of DestroySnippet",
+ "fields": [
+ {
+ "name": "clientMutationId",
+ "description": "A unique identifier for the client performing the mutation.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "errors",
+ "description": "Reasons why the mutation failed.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "LIST",
+ "name": null,
+ "ofType": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ }
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "snippet",
+ "description": "The snippet after mutation",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "Snippet",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "inputFields": null,
+ "interfaces": [
+
+ ],
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "INPUT_OBJECT",
+ "name": "DestroySnippetInput",
+ "description": "Autogenerated input type of DestroySnippet",
+ "fields": null,
+ "inputFields": [
+ {
+ "name": "id",
+ "description": "The global id of the snippet to destroy",
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "ID",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "clientMutationId",
+ "description": "A unique identifier for the client performing the mutation.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ }
+ ],
+ "interfaces": null,
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "OBJECT",
+ "name": "UpdateSnippetPayload",
+ "description": "Autogenerated return type of UpdateSnippet",
+ "fields": [
+ {
+ "name": "clientMutationId",
+ "description": "A unique identifier for the client performing the mutation.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "errors",
+ "description": "Reasons why the mutation failed.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "LIST",
+ "name": null,
+ "ofType": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ }
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "snippet",
+ "description": "The snippet after mutation",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "Snippet",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "inputFields": null,
+ "interfaces": [
+
+ ],
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "INPUT_OBJECT",
+ "name": "UpdateSnippetInput",
+ "description": "Autogenerated input type of UpdateSnippet",
+ "fields": null,
+ "inputFields": [
+ {
+ "name": "id",
+ "description": "The global id of the snippet to update",
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "ID",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "title",
+ "description": "Title of the snippet",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "fileName",
+ "description": "File name of the snippet",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "content",
+ "description": "Content of the snippet",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "description",
+ "description": "Description of the snippet",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "visibilityLevel",
+ "description": "The visibility level of the snippet",
+ "type": {
+ "kind": "ENUM",
+ "name": "VisibilityLevelsEnum",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "clientMutationId",
+ "description": "A unique identifier for the client performing the mutation.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ }
+ ],
+ "interfaces": null,
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "OBJECT",
+ "name": "CreateSnippetPayload",
+ "description": "Autogenerated return type of CreateSnippet",
+ "fields": [
+ {
+ "name": "clientMutationId",
+ "description": "A unique identifier for the client performing the mutation.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "errors",
+ "description": "Reasons why the mutation failed.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "LIST",
+ "name": null,
+ "ofType": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ }
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "snippet",
+ "description": "The snippet after mutation",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "Snippet",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "inputFields": null,
+ "interfaces": [
+
+ ],
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "INPUT_OBJECT",
+ "name": "CreateSnippetInput",
+ "description": "Autogenerated input type of CreateSnippet",
+ "fields": null,
+ "inputFields": [
+ {
+ "name": "title",
+ "description": "Title of the snippet",
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "fileName",
+ "description": "File name of the snippet",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "content",
+ "description": "Content of the snippet",
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "description",
+ "description": "Description of the snippet",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "visibilityLevel",
+ "description": "The visibility level of the snippet",
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "ENUM",
+ "name": "VisibilityLevelsEnum",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "projectPath",
+ "description": "The project full path the snippet is associated with",
+ "type": {
+ "kind": "SCALAR",
+ "name": "ID",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "clientMutationId",
+ "description": "A unique identifier for the client performing the mutation.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ }
+ ],
+ "interfaces": null,
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "OBJECT",
+ "name": "MarkAsSpamSnippetPayload",
+ "description": "Autogenerated return type of MarkAsSpamSnippet",
+ "fields": [
+ {
+ "name": "clientMutationId",
+ "description": "A unique identifier for the client performing the mutation.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "errors",
+ "description": "Reasons why the mutation failed.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "LIST",
+ "name": null,
+ "ofType": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ }
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "snippet",
+ "description": "The snippet after mutation",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "Snippet",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "inputFields": null,
+ "interfaces": [
+
+ ],
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "INPUT_OBJECT",
+ "name": "MarkAsSpamSnippetInput",
+ "description": "Autogenerated input type of MarkAsSpamSnippet",
+ "fields": null,
+ "inputFields": [
+ {
+ "name": "id",
+ "description": "The global id of the snippet to update",
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "ID",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "clientMutationId",
+ "description": "A unique identifier for the client performing the mutation.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ }
+ ],
+ "interfaces": null,
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "OBJECT",
"name": "DesignManagementUploadPayload",
"description": "Autogenerated return type of DesignManagementUpload",
"fields": [
@@ -17006,6 +20117,136 @@
},
{
"kind": "OBJECT",
+ "name": "IssueSetWeightPayload",
+ "description": "Autogenerated return type of IssueSetWeight",
+ "fields": [
+ {
+ "name": "clientMutationId",
+ "description": "A unique identifier for the client performing the mutation.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "errors",
+ "description": "Reasons why the mutation failed.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "LIST",
+ "name": null,
+ "ofType": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ }
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "issue",
+ "description": "The issue after mutation",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "Issue",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "inputFields": null,
+ "interfaces": [
+
+ ],
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "INPUT_OBJECT",
+ "name": "IssueSetWeightInput",
+ "description": "Autogenerated input type of IssueSetWeight",
+ "fields": null,
+ "inputFields": [
+ {
+ "name": "projectPath",
+ "description": "The project the issue to mutate is in",
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "ID",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "iid",
+ "description": "The iid of the issue to mutate",
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "weight",
+ "description": "The desired weight for the issue",
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "clientMutationId",
+ "description": "A unique identifier for the client performing the mutation.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ }
+ ],
+ "interfaces": null,
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "OBJECT",
"name": "EpicTreeReorderPayload",
"description": "Autogenerated return type of EpicTreeReorder",
"fields": [
diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md
index 151e43f4cff..9fb39322f5c 100644
--- a/doc/api/graphql/reference/index.md
+++ b/doc/api/graphql/reference/index.md
@@ -92,6 +92,14 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| `errors` | String! => Array | Reasons why the mutation failed. |
| `note` | Note | The note after mutation |
+### CreateSnippetPayload
+
+| Name | Type | Description |
+| --- | ---- | ---------- |
+| `clientMutationId` | String | A unique identifier for the client performing the mutation. |
+| `errors` | String! => Array | Reasons why the mutation failed. |
+| `snippet` | Snippet | The snippet after mutation |
+
### Design
| Name | Type | Description |
@@ -145,6 +153,14 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| `errors` | String! => Array | Reasons why the mutation failed. |
| `note` | Note | The note after mutation |
+### DestroySnippetPayload
+
+| Name | Type | Description |
+| --- | ---- | ---------- |
+| `clientMutationId` | String | A unique identifier for the client performing the mutation. |
+| `errors` | String! => Array | Reasons why the mutation failed. |
+| `snippet` | Snippet | The snippet after mutation |
+
### DetailedStatus
| Name | Type | Description |
@@ -162,63 +178,65 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| Name | Type | Description |
| --- | ---- | ---------- |
-| `diffRefs` | DiffRefs! | |
-| `filePath` | String! | The path of the file that was changed |
-| `oldPath` | String | The path of the file on the start sha. |
-| `newPath` | String | The path of the file on the head sha. |
-| `positionType` | DiffPositionType! | |
-| `oldLine` | Int | The line on start sha that was changed |
-| `newLine` | Int | The line on head sha that was changed |
-| `x` | Int | The X postion on which the comment was made |
-| `y` | Int | The Y position on which the comment was made |
-| `width` | Int | The total width of the image |
-| `height` | Int | The total height of the image |
+| `diffRefs` | DiffRefs! | Information about the branch, HEAD, and base at the time of commenting |
+| `filePath` | String! | Path of the file that was changed |
+| `oldPath` | String | Path of the file on the start SHA |
+| `newPath` | String | Path of the file on the HEAD SHA |
+| `positionType` | DiffPositionType! | Type of file the position refers to |
+| `oldLine` | Int | Line on start SHA that was changed |
+| `newLine` | Int | Line on HEAD SHA that was changed |
+| `x` | Int | X position on which the comment was made |
+| `y` | Int | Y position on which the comment was made |
+| `width` | Int | Total width of the image |
+| `height` | Int | Total height of the image |
### DiffRefs
| Name | Type | Description |
| --- | ---- | ---------- |
-| `headSha` | String! | The sha of the head at the time the comment was made |
-| `baseSha` | String! | The merge base of the branch the comment was made on |
-| `startSha` | String! | The sha of the branch being compared against |
+| `headSha` | String! | SHA of the HEAD at the time the comment was made |
+| `baseSha` | String! | Merge base of the branch the comment was made on |
+| `startSha` | String! | SHA of the branch being compared against |
### Discussion
| Name | Type | Description |
| --- | ---- | ---------- |
-| `id` | ID! | |
-| `replyId` | ID! | The ID used to reply to this discussion |
-| `createdAt` | Time! | |
+| `id` | ID! | ID of this discussion |
+| `replyId` | ID! | ID used to reply to this discussion |
+| `createdAt` | Time! | Timestamp of the discussion's creation |
### Epic
| Name | Type | Description |
| --- | ---- | ---------- |
| `userPermissions` | EpicPermissions! | Permissions for the current user on the resource |
-| `id` | ID! | |
-| `iid` | ID! | |
-| `title` | String | |
-| `description` | String | |
-| `state` | EpicState! | |
-| `group` | Group! | |
-| `parent` | Epic | |
-| `author` | User! | |
-| `startDate` | Time | |
-| `startDateIsFixed` | Boolean | |
-| `startDateFixed` | Time | |
-| `startDateFromMilestones` | Time | |
-| `dueDate` | Time | |
-| `dueDateIsFixed` | Boolean | |
-| `dueDateFixed` | Time | |
-| `dueDateFromMilestones` | Time | |
-| `closedAt` | Time | |
-| `createdAt` | Time | |
-| `updatedAt` | Time | |
-| `hasChildren` | Boolean! | |
-| `hasIssues` | Boolean! | |
+| `id` | ID! | ID of the epic |
+| `iid` | ID! | Internal ID of the epic |
+| `title` | String | Title of the epic |
+| `description` | String | Description of the epic |
+| `state` | EpicState! | State of the epic |
+| `group` | Group! | Group to which the epic belongs |
+| `parent` | Epic | Parent epic of the epic |
+| `author` | User! | Author of the epic |
+| `startDate` | Time | Start date of the epic |
+| `startDateIsFixed` | Boolean | Indicates if the start date has been manually set |
+| `startDateFixed` | Time | Fixed start date of the epic |
+| `startDateFromMilestones` | Time | Inherited start date of the epic from milestones |
+| `dueDate` | Time | Due date of the epic |
+| `dueDateIsFixed` | Boolean | Indicates if the due date has been manually set |
+| `dueDateFixed` | Time | Fixed due date of the epic |
+| `dueDateFromMilestones` | Time | Inherited due date of the epic from milestones |
+| `upvotes` | Int! | Number of upvotes the epic has received |
+| `downvotes` | Int! | Number of downvotes the epic has received |
+| `closedAt` | Time | Timestamp of the epic's closure |
+| `createdAt` | Time | Timestamp of the epic's creation |
+| `updatedAt` | Time | Timestamp of the epic's last activity |
+| `hasChildren` | Boolean! | Indicates if the epic has children |
+| `hasIssues` | Boolean! | Indicates if the epic has direct issues |
| `webPath` | String! | |
| `webUrl` | String! | |
-| `relativePosition` | Int | The relative position of the epic in the Epic tree |
+| `relativePosition` | Int | The relative position of the epic in the epic tree |
| `relationPath` | String | |
| `reference` | String! | |
| `subscribed` | Boolean! | Boolean flag for whether the currently logged in user is subscribed to this epic |
@@ -263,13 +281,13 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| `createdAt` | Time! | Timestamp of when the issue was created |
| `updatedAt` | Time! | Timestamp of when the issue was last updated |
| `taskCompletionStatus` | TaskCompletionStatus! | Task completion status of the issue |
-| `epic` | Epic | The epic to which issue belongs |
-| `weight` | Int | |
-| `designs` | DesignCollection | |
-| `designCollection` | DesignCollection | |
-| `epicIssueId` | ID! | |
-| `relationPath` | String | |
-| `id` | ID | The global id of the epic-issue relation |
+| `epic` | Epic | Epic to which this issue belongs |
+| `weight` | Int | Weight of the issue |
+| `designs` | DesignCollection | Deprecated. Use `design_collection`. |
+| `designCollection` | DesignCollection | Collection of design images associated with this issue |
+| `epicIssueId` | ID! | ID of the epic-issue relation |
+| `relationPath` | String | URI path of the epic-issue relation |
+| `id` | ID | Global ID of the epic-issue relation |
### EpicPermissions
@@ -318,8 +336,9 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| `webUrl` | String! | Web URL of the group |
| `avatarUrl` | String | Avatar URL of the group |
| `parent` | Group | Parent group |
-| `epicsEnabled` | Boolean | |
-| `epic` | Epic | |
+| `epicsEnabled` | Boolean | Indicates if Epics are enabled for namespace |
+| `groupTimelogsEnabled` | Boolean | Indicates if Group timelogs are enabled for namespace |
+| `epic` | Epic | Find a single epic |
### GroupPermissions
@@ -357,10 +376,10 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| `createdAt` | Time! | Timestamp of when the issue was created |
| `updatedAt` | Time! | Timestamp of when the issue was last updated |
| `taskCompletionStatus` | TaskCompletionStatus! | Task completion status of the issue |
-| `epic` | Epic | The epic to which issue belongs |
-| `weight` | Int | |
-| `designs` | DesignCollection | |
-| `designCollection` | DesignCollection | |
+| `epic` | Epic | Epic to which this issue belongs |
+| `weight` | Int | Weight of the issue |
+| `designs` | DesignCollection | Deprecated. Use `design_collection`. |
+| `designCollection` | DesignCollection | Collection of design images associated with this issue |
### IssuePermissions
@@ -375,17 +394,49 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| `createDesign` | Boolean! | Whether or not a user can perform `create_design` on this resource |
| `destroyDesign` | Boolean! | Whether or not a user can perform `destroy_design` on this resource |
+### IssueSetConfidentialPayload
+
+| Name | Type | Description |
+| --- | ---- | ---------- |
+| `clientMutationId` | String | A unique identifier for the client performing the mutation. |
+| `errors` | String! => Array | Reasons why the mutation failed. |
+| `issue` | Issue | The issue after mutation |
+
+### IssueSetDueDatePayload
+
+| Name | Type | Description |
+| --- | ---- | ---------- |
+| `clientMutationId` | String | A unique identifier for the client performing the mutation. |
+| `errors` | String! => Array | Reasons why the mutation failed. |
+| `issue` | Issue | The issue after mutation |
+
+### IssueSetWeightPayload
+
+| Name | Type | Description |
+| --- | ---- | ---------- |
+| `clientMutationId` | String | A unique identifier for the client performing the mutation. |
+| `errors` | String! => Array | Reasons why the mutation failed. |
+| `issue` | Issue | The issue after mutation |
+
### Label
| Name | Type | Description |
| --- | ---- | ---------- |
| `id` | ID! | Label ID |
-| `description` | String | Description of the label (markdown rendered as HTML for caching) |
+| `description` | String | Description of the label (Markdown rendered as HTML for caching) |
| `descriptionHtml` | String | The GitLab Flavored Markdown rendering of `description` |
| `title` | String! | Content of the label |
| `color` | String! | Background color of the label |
| `textColor` | String! | Text color of the label |
+### MarkAsSpamSnippetPayload
+
+| Name | Type | Description |
+| --- | ---- | ---------- |
+| `clientMutationId` | String | A unique identifier for the client performing the mutation. |
+| `errors` | String! => Array | Reasons why the mutation failed. |
+| `snippet` | Snippet | The snippet after mutation |
+
### MergeRequest
| Name | Type | Description |
@@ -395,7 +446,7 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| `iid` | String! | Internal ID of the merge request |
| `title` | String! | Title of the merge request |
| `titleHtml` | String | The GitLab Flavored Markdown rendering of `title` |
-| `description` | String | Description of the merge request (markdown rendered as HTML for caching) |
+| `description` | String | Description of the merge request (Markdown rendered as HTML for caching) |
| `descriptionHtml` | String | The GitLab Flavored Markdown rendering of `description` |
| `state` | MergeRequestState! | State of the merge request |
| `createdAt` | Time! | Timestamp of when the merge request was created |
@@ -542,18 +593,18 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| Name | Type | Description |
| --- | ---- | ---------- |
| `userPermissions` | NotePermissions! | Permissions for the current user on the resource |
-| `id` | ID! | |
-| `project` | Project | The project this note is associated to |
-| `author` | User! | The user who wrote this note |
-| `resolvedBy` | User | The user that resolved the discussion |
-| `system` | Boolean! | Whether or not this note was created by the system or by a user |
-| `body` | String! | The content note itself |
+| `id` | ID! | ID of the note |
+| `project` | Project | Project associated with the note |
+| `author` | User! | User who wrote this note |
+| `resolvedBy` | User | User that resolved the discussion |
+| `system` | Boolean! | Indicates whether this note was created by the system or by a user |
+| `body` | String! | Content of the note |
| `bodyHtml` | String | The GitLab Flavored Markdown rendering of `note` |
-| `createdAt` | Time! | |
-| `updatedAt` | Time! | |
+| `createdAt` | Time! | Timestamp of the note creation |
+| `updatedAt` | Time! | Timestamp of the note's last activity |
| `discussion` | Discussion | The discussion this note is a part of |
-| `resolvable` | Boolean! | |
-| `resolvedAt` | Time | The time the discussion was resolved |
+| `resolvable` | Boolean! | Indicates if this note can be resolved. That is, if it is a resolvable discussion or simply a standalone note |
+| `resolvedAt` | Time | Timestamp of the note's resolution |
| `position` | DiffPosition | The position of this note on a diff |
### NotePermissions
@@ -648,6 +699,9 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| `repository` | Repository | Git repository of the project |
| `mergeRequest` | MergeRequest | A single merge request of the project |
| `issue` | Issue | A single issue of the project |
+| `sentryDetailedError` | SentryDetailedError | Detailed version of a Sentry error on the project |
+| `serviceDeskEnabled` | Boolean | Indicates if the project has service desk enabled. |
+| `serviceDeskAddress` | String | E-mail address of the service desk. |
### ProjectPermissions
@@ -670,7 +724,6 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| `downloadCode` | Boolean! | Whether or not a user can perform `download_code` on this resource |
| `downloadWikiCode` | Boolean! | Whether or not a user can perform `download_wiki_code` on this resource |
| `forkProject` | Boolean! | Whether or not a user can perform `fork_project` on this resource |
-| `createProjectSnippet` | Boolean! | Whether or not a user can perform `create_project_snippet` on this resource |
| `readCommitStatus` | Boolean! | Whether or not a user can perform `read_commit_status` on this resource |
| `requestAccess` | Boolean! | Whether or not a user can perform `request_access` on this resource |
| `createPipeline` | Boolean! | Whether or not a user can perform `create_pipeline` on this resource |
@@ -691,6 +744,7 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| `destroyPages` | Boolean! | Whether or not a user can perform `destroy_pages` on this resource |
| `readPagesContent` | Boolean! | Whether or not a user can perform `read_pages_content` on this resource |
| `adminOperations` | Boolean! | Whether or not a user can perform `admin_operations` on this resource |
+| `createSnippet` | Boolean! | Whether or not a user can perform `create_snippet` on this resource |
| `readDesign` | Boolean! | Whether or not a user can perform `read_design` on this resource |
| `createDesign` | Boolean! | Whether or not a user can perform `create_design` on this resource |
| `destroyDesign` | Boolean! | Whether or not a user can perform `destroy_design` on this resource |
@@ -729,12 +783,75 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| Name | Type | Description |
| --- | ---- | ---------- |
| `storageSize` | Int! | The total storage in bytes |
-| `repositorySize` | Int! | The git repository size in bytes |
+| `repositorySize` | Int! | The Git repository size in bytes |
| `lfsObjectsSize` | Int! | The LFS objects size in bytes |
| `buildArtifactsSize` | Int! | The CI artifacts size in bytes |
| `packagesSize` | Int! | The packages size in bytes |
| `wikiSize` | Int! | The wiki size in bytes |
+### SentryDetailedError
+
+| Name | Type | Description |
+| --- | ---- | ---------- |
+| `id` | ID! | ID (global ID) of the error |
+| `sentryId` | String! | ID (Sentry ID) of the error |
+| `title` | String! | Title of the error |
+| `type` | String! | Type of the error |
+| `userCount` | Int! | Count of users affected by the error |
+| `count` | Int! | Count of occurrences |
+| `firstSeen` | Time! | Timestamp when the error was first seen |
+| `lastSeen` | Time! | Timestamp when the error was last seen |
+| `message` | String | Sentry metadata message of the error |
+| `culprit` | String! | Culprit of the error |
+| `externalUrl` | String! | External URL of the error |
+| `sentryProjectId` | ID! | ID of the project (Sentry project) |
+| `sentryProjectName` | String! | Name of the project affected by the error |
+| `sentryProjectSlug` | String! | Slug of the project affected by the error |
+| `shortId` | String! | Short ID (Sentry ID) of the error |
+| `status` | SentryErrorStatus! | Status of the error |
+| `frequency` | SentryErrorFrequency! => Array | Last 24hr stats of the error |
+| `firstReleaseLastCommit` | String | Commit the error was first seen |
+| `lastReleaseLastCommit` | String | Commit the error was last seen |
+| `firstReleaseShortVersion` | String | Release version the error was first seen |
+| `lastReleaseShortVersion` | String | Release version the error was last seen |
+
+### SentryErrorFrequency
+
+| Name | Type | Description |
+| --- | ---- | ---------- |
+| `time` | Time! | Time the error frequency stats were recorded |
+| `count` | Int! | Count of errors received since the previously recorded time |
+
+### Snippet
+
+| Name | Type | Description |
+| --- | ---- | ---------- |
+| `userPermissions` | SnippetPermissions! | Permissions for the current user on the resource |
+| `id` | ID! | Id of the snippet |
+| `title` | String! | Title of the snippet |
+| `project` | Project | The project the snippet is associated with |
+| `author` | User! | The owner of the snippet |
+| `fileName` | String | File Name of the snippet |
+| `content` | String! | Content of the snippet |
+| `description` | String | Description of the snippet |
+| `visibilityLevel` | VisibilityLevelsEnum! | Visibility Level of the snippet |
+| `createdAt` | Time! | Timestamp this snippet was created |
+| `updatedAt` | Time! | Timestamp this snippet was updated |
+| `webUrl` | String! | Web URL of the snippet |
+| `rawUrl` | String! | Raw URL of the snippet |
+| `descriptionHtml` | String | The GitLab Flavored Markdown rendering of `description` |
+
+### SnippetPermissions
+
+| Name | Type | Description |
+| --- | ---- | ---------- |
+| `createNote` | Boolean! | Whether or not a user can perform `create_note` on this resource |
+| `awardEmoji` | Boolean! | Whether or not a user can perform `award_emoji` on this resource |
+| `readSnippet` | Boolean! | Whether or not a user can perform `read_snippet` on this resource |
+| `updateSnippet` | Boolean! | Whether or not a user can perform `update_snippet` on this resource |
+| `adminSnippet` | Boolean! | Whether or not a user can perform `admin_snippet` on this resource |
+| `reportSnippet` | Boolean! | Whether or not a user can perform `report_snippet` on this resource |
+
### Submodule
| Name | Type | Description |
@@ -755,6 +872,15 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| `count` | Int! | Number of total tasks |
| `completedCount` | Int! | Number of completed tasks |
+### Timelog
+
+| Name | Type | Description |
+| --- | ---- | ---------- |
+| `date` | Time! | The date when the time tracked was spent at |
+| `timeSpent` | Int! | The time spent displayed in seconds |
+| `user` | User! | The user that logged the time |
+| `issue` | Issue | The issue that logged time was added to |
+
### Todo
| Name | Type | Description |
@@ -777,6 +903,22 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| `errors` | String! => Array | Reasons why the mutation failed. |
| `todo` | Todo! | The requested todo |
+### TodoRestorePayload
+
+| Name | Type | Description |
+| --- | ---- | ---------- |
+| `clientMutationId` | String | A unique identifier for the client performing the mutation. |
+| `errors` | String! => Array | Reasons why the mutation failed. |
+| `todo` | Todo! | The requested todo |
+
+### TodosMarkAllDonePayload
+
+| Name | Type | Description |
+| --- | ---- | ---------- |
+| `clientMutationId` | String | A unique identifier for the client performing the mutation. |
+| `errors` | String! => Array | Reasons why the mutation failed. |
+| `updatedIds` | ID! => Array | Ids of the updated todos |
+
### ToggleAwardEmojiPayload
| Name | Type | Description |
@@ -820,11 +962,26 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| `errors` | String! => Array | Reasons why the mutation failed. |
| `note` | Note | The note after mutation |
+### UpdateSnippetPayload
+
+| Name | Type | Description |
+| --- | ---- | ---------- |
+| `clientMutationId` | String | A unique identifier for the client performing the mutation. |
+| `errors` | String! => Array | Reasons why the mutation failed. |
+| `snippet` | Snippet | The snippet after mutation |
+
### User
| Name | Type | Description |
| --- | ---- | ---------- |
+| `userPermissions` | UserPermissions! | Permissions for the current user on the resource |
| `name` | String! | Human-readable name of the user |
| `username` | String! | Username of the user. Unique within this instance of GitLab |
| `avatarUrl` | String! | URL of the user's avatar |
| `webUrl` | String! | Web URL of the user |
+
+### UserPermissions
+
+| Name | Type | Description |
+| --- | ---- | ---------- |
+| `createSnippet` | Boolean! | Whether or not a user can perform `create_snippet` on this resource |
diff --git a/doc/api/group_badges.md b/doc/api/group_badges.md
index afefc3925cd..70179ecde29 100644
--- a/doc/api/group_badges.md
+++ b/doc/api/group_badges.md
@@ -26,9 +26,10 @@ GET /groups/:id/badges
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer/string | yes | The ID or [URL-encoded path of the group](README.md#namespaced-path-encoding) owned by the authenticated user |
+| `name` | string | no | Name of the badges to return (case-sensitive). |
```bash
-curl --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/groups/:id/badges
+curl --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/groups/:id/badges?name=Coverage
```
Example response:
@@ -36,21 +37,14 @@ Example response:
```json
[
{
+ "name": "Coverage",
"id": 1,
"link_url": "http://example.com/ci_status.svg?project=%{project_path}&ref=%{default_branch}",
"image_url": "https://shields.io/my/badge",
"rendered_link_url": "http://example.com/ci_status.svg?project=example-org/example-project&ref=master",
"rendered_image_url": "https://shields.io/my/badge",
"kind": "group"
- },
- {
- "id": 2,
- "link_url": "http://example.com/ci_status.svg?project=%{project_path}&ref=%{default_branch}",
- "image_url": "https://shields.io/my/badge",
- "rendered_link_url": "http://example.com/ci_status.svg?project=example-org/example-project&ref=master",
- "rendered_image_url": "https://shields.io/my/badge",
- "kind": "group"
- },
+ }
]
```
diff --git a/doc/api/groups.md b/doc/api/groups.md
index 94f46b11a0f..32e2a88f25b 100644
--- a/doc/api/groups.md
+++ b/doc/api/groups.md
@@ -5,6 +5,8 @@
Get a list of visible groups for the authenticated user. When accessed without
authentication, only public groups are returned.
+By default, this request returns 20 results at a time because the API results [are paginated](README.md#pagination).
+
Parameters:
| Attribute | Type | Required | Description |
@@ -106,6 +108,8 @@ GET /groups?custom_attributes[key]=value&custom_attributes[other_key]=other_valu
Get a list of visible direct subgroups in this group.
When accessed without authentication, only public groups are returned.
+By default, this request returns 20 results at a time because the API results [are paginated](README.md#pagination).
+
Parameters:
| Attribute | Type | Required | Description |
@@ -154,8 +158,9 @@ GET /groups/:id/subgroups
## List a group's projects
-Get a list of projects in this group. When accessed without authentication, only
-public projects are returned.
+Get a list of projects in this group. When accessed without authentication, only public projects are returned.
+
+By default, this request returns 20 results at a time because the API results [are paginated](README.md#pagination).
```
GET /groups/:id/projects
@@ -247,6 +252,13 @@ Parameters:
curl --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/groups/4
```
+This endpoint returns:
+
+- All projects and shared projects in GitLab 12.5 and earlier.
+- A maximum of 100 projects and shared projects [in GitLab 12.6](https://gitlab.com/gitlab-org/gitlab/issues/31031)
+ and later. To get the details of all projects within a group, use the
+ [list a group's projects endpoint](#list-a-groups-projects) instead.
+
Example response:
```json
@@ -439,6 +451,18 @@ Example response:
}
```
+### Disabling the results limit
+
+The 100 results limit can be disabled if it breaks integrations developed using GitLab
+12.4 and earlier.
+
+To disable the limit while migrating to using the [list a group's projects](#list-a-groups-projects) endpoint, ask a GitLab administrator
+with Rails console access to run the following command:
+
+```ruby
+Feature.disable(:limit_projects_in_groups_api)
+```
+
## New group
Creates a new project group. Available only for users who can create groups.
@@ -518,6 +542,13 @@ curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab
```
+This endpoint returns:
+
+- All projects and shared projects in GitLab 12.5 and earlier.
+- A maximum of 100 projects and shared projects [in GitLab 12.6](https://gitlab.com/gitlab-org/gitlab/issues/31031)
+ and later. To get the details of all projects within a group, use the
+ [list a group's projects endpoint](#list-a-groups-projects) instead.
+
Example response:
```json
@@ -577,6 +608,19 @@ Example response:
}
```
+### Disabling the results limit
+
+The 100 results limit can be disabled if it breaks integrations developed using GitLab
+12.4 and earlier.
+
+To disable the limit while migrating to using the
+[list a group's projects](#list-a-groups-projects) endpoint, ask a GitLab administrator
+with Rails console access to run the following command:
+
+```ruby
+Feature.disable(:limit_projects_in_groups_api)
+```
+
## Remove group
Removes group with all projects inside. Only available to group owners and administrators.
diff --git a/doc/api/issue_links.md b/doc/api/issue_links.md
index 280431fa87c..b7e21310a19 100644
--- a/doc/api/issue_links.md
+++ b/doc/api/issue_links.md
@@ -57,7 +57,7 @@ Parameters:
Creates a two-way relation between two issues. User must be allowed to update both issues in order to succeed.
```
-POST /projects/:id/issues/:issue_iid/links
+POST /projects/:id/issues/:issue_iid/links/:target_project_id/:target_issue_iid
```
| Attribute | Type | Required | Description |
diff --git a/doc/api/issues.md b/doc/api/issues.md
index 54b27370741..fe551cfb397 100644
--- a/doc/api/issues.md
+++ b/doc/api/issues.md
@@ -113,6 +113,7 @@ Example response:
"id" : 76,
"title" : "Consequatur vero maxime deserunt laboriosam est voluptas dolorem.",
"created_at" : "2016-01-04T15:31:51.081Z",
+ "moved_to_id" : null,
"iid" : 6,
"labels" : ["foo", "bar"],
"upvotes": 4,
@@ -626,7 +627,8 @@ POST /projects/:id/issues
| `merge_request_to_resolve_discussions_of` | integer | no | The IID of a merge request in which to resolve all issues. This will fill the issue with a default description and mark all discussions as resolved. When passing a description or title, these values will take precedence over the default values.|
| `discussion_to_resolve` | string | no | The ID of a discussion to resolve. This will fill in the issue with a default description and mark the discussion as resolved. Use in combination with `merge_request_to_resolve_discussions_of`. |
| `weight` **(STARTER)** | integer | no | The weight of the issue. Valid values are greater than or equal to 0. |
-| `epic_iid` **(ULTIMATE)** | integer | no | IID of the epic to add the issue to. Valid values are greater than or equal to 0. |
+| `epic_id` **(ULTIMATE)** | integer | no | ID of the epic to add the issue to. Valid values are greater than or equal to 0. |
+| `epic_iid` **(ULTIMATE)** | integer | no | IID of the epic to add the issue to. Valid values are greater than or equal to 0. (deprecated, [will be removed in 13.0](https://gitlab.com/gitlab-org/gitlab/issues/35157)) |
```bash
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/projects/4/issues?title=Issues%20with%20auth&labels=bug
@@ -728,7 +730,8 @@ PUT /projects/:id/issues/:issue_iid
| `due_date` | string | no | Date time string in the format YEAR-MONTH-DAY, e.g. `2016-03-11` |
| `weight` **(STARTER)** | integer | no | The weight of the issue. Valid values are greater than or equal to 0. 0 |
| `discussion_locked` | boolean | no | Flag indicating if the issue's discussion is locked. If the discussion is locked only project members can add or edit comments. |
-| `epic_iid` **(ULTIMATE)** | integer | no | IID of the epic to add the issue to. Valid values are greater than or equal to 0. |
+| `epic_id` **(ULTIMATE)** | integer | no | ID of the epic to add the issue to. Valid values are greater than or equal to 0. |
+| `epic_iid` **(ULTIMATE)** | integer | no | IID of the epic to add the issue to. Valid values are greater than or equal to 0. (deprecated, [will be removed in 13.0](https://gitlab.com/gitlab-org/gitlab/issues/35157)) |
```bash
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/projects/4/issues/85?state_event=close
diff --git a/doc/api/jobs.md b/doc/api/jobs.md
index bafcfd110d3..5f661ac4c76 100644
--- a/doc/api/jobs.md
+++ b/doc/api/jobs.md
@@ -2,7 +2,7 @@
## List project jobs
-Get a list of jobs in a project.
+Get a list of jobs in a project. Jobs are sorted in descending order of their IDs.
```
GET /projects/:id/jobs
@@ -33,13 +33,23 @@ Example of response
},
"coverage": null,
"allow_failure": false,
- "created_at": "2015-12-24T15:51:21.727Z",
- "started_at": "2015-12-24T17:54:24.729Z",
- "finished_at": "2015-12-24T17:54:24.921Z",
- "duration": 0.192,
- "artifacts_expire_at": "2016-01-23T17:54:24.921Z",
- "id": 6,
- "name": "rspec:other",
+ "created_at": "2015-12-24T15:51:21.802Z",
+ "started_at": "2015-12-24T17:54:27.722Z",
+ "finished_at": "2015-12-24T17:54:27.895Z",
+ "duration": 0.173,
+ "artifacts_file": {
+ "filename": "artifacts.zip",
+ "size": 1000
+ },
+ "artifacts": [
+ {"file_type": "archive", "size": 1000, "filename": "artifacts.zip", "file_format": "zip"},
+ {"file_type": "metadata", "size": 186, "filename": "metadata.gz", "file_format": "gzip"},
+ {"file_type": "trace", "size": 1500, "filename": "job.log", "file_format": "raw"},
+ {"file_type": "junit", "size": 750, "filename": "junit.xml.gz", "file_format": "gzip"}
+ ],
+ "artifacts_expire_at": "2016-01-23T17:54:27.895Z",
+ "id": 7,
+ "name": "teaspoon",
"pipeline": {
"id": 6,
"ref": "master",
@@ -52,7 +62,7 @@ Example of response
"stage": "test",
"status": "failed",
"tag": false,
- "web_url": "https://example.com/foo/bar/-/jobs/6",
+ "web_url": "https://example.com/foo/bar/-/jobs/7",
"user": {
"id": 1,
"name": "Administrator",
@@ -83,23 +93,13 @@ Example of response
},
"coverage": null,
"allow_failure": false,
- "created_at": "2015-12-24T15:51:21.802Z",
- "started_at": "2015-12-24T17:54:27.722Z",
- "finished_at": "2015-12-24T17:54:27.895Z",
- "duration": 0.173,
- "artifacts_file": {
- "filename": "artifacts.zip",
- "size": 1000
- },
- "artifacts": [
- {"file_type": "archive", "size": 1000, "filename": "artifacts.zip", "file_format": "zip"},
- {"file_type": "metadata", "size": 186, "filename": "metadata.gz", "file_format": "gzip"},
- {"file_type": "trace", "size": 1500, "filename": "job.log", "file_format": "raw"},
- {"file_type": "junit", "size": 750, "filename": "junit.xml.gz", "file_format": "gzip"}
- ],
- "artifacts_expire_at": "2016-01-23T17:54:27.895Z",
- "id": 7,
- "name": "teaspoon",
+ "created_at": "2015-12-24T15:51:21.727Z",
+ "started_at": "2015-12-24T17:54:24.729Z",
+ "finished_at": "2015-12-24T17:54:24.921Z",
+ "duration": 0.192,
+ "artifacts_expire_at": "2016-01-23T17:54:24.921Z",
+ "id": 6,
+ "name": "rspec:other",
"pipeline": {
"id": 6,
"ref": "master",
@@ -112,7 +112,7 @@ Example of response
"stage": "test",
"status": "failed",
"tag": false,
- "web_url": "https://example.com/foo/bar/-/jobs/7",
+ "web_url": "https://example.com/foo/bar/-/jobs/6",
"user": {
"id": 1,
"name": "Administrator",
diff --git a/doc/api/keys.md b/doc/api/keys.md
index 06b31a67d6a..5dedb630a27 100644
--- a/doc/api/keys.md
+++ b/doc/api/keys.md
@@ -4,13 +4,19 @@
Get SSH key with user by ID of an SSH key. Note only administrators can lookup SSH key with user by ID of an SSH key.
-```
+```text
GET /keys/:id
```
-Parameters:
+| Attribute | Type | Required | Description |
+|:----------|:--------|:---------|:---------------------|
+| `id` | integer | yes | The ID of an SSH key |
+
+Example request:
-- `id` (required) - The ID of an SSH key
+```sh
+curl --header "PRIVATE-TOKEN: <your_access_token>" 'https://gitlab.example.com/api/v4/keys/1
+```
```json
{
@@ -51,3 +57,74 @@ Parameters:
}
}
```
+
+## Get user by fingerprint of SSH key
+
+You can search for a user that owns a specific SSH key. Note only administrators can lookup SSH key with the fingerprint of an SSH key.
+
+```text
+GET /keys
+```
+
+| Attribute | Type | Required | Description |
+|:--------------|:-------|:---------|:------------------------------|
+| `fingerprint` | string | yes | The fingerprint of an SSH key |
+
+Example request:
+
+```sh
+curl --header "PRIVATE-TOKEN: <your_access_token>" 'https://gitlab.example.com/api/v4/keys?fingerprint=ba:81:59:68:d7:6c:cd:02:02:bf:6a:9b:55:4e:af:d1'
+```
+
+If using sha256 fingerprint API calls, make sure that the fingerprint is URL-encoded.
+
+For example, `/` is represented by `%2F` and `:` is represented by`%3A`:
+
+```sh
+curl --header "PRIVATE-TOKEN: <your_access_token>" 'https://gitlab.example.com/api/v4/keys?fingerprint=SHA256%3AnUhzNyftwADy8AH3wFY31tAKs7HufskYTte2aXo%2FlCg
+```
+
+Example response:
+
+```json
+{
+ "id": 1,
+ "title": "Sample key 1",
+ "key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt1016k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",
+ "created_at": "2019-11-14T15:11:13.222Z",
+ "user": {
+ "id": 1,
+ "name": "Administrator",
+ "username": "root",
+ "state": "active",
+ "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
+ "web_url": "http://0.0.0.0:3000/root",
+ "created_at": "2019-11-14T15:09:34.831Z",
+ "bio": null,
+ "location": null,
+ "public_email": "",
+ "skype": "",
+ "linkedin": "",
+ "twitter": "",
+ "website_url": "",
+ "organization": null,
+ "last_sign_in_at": "2019-11-16T22:41:26.663Z",
+ "confirmed_at": "2019-11-14T15:09:34.575Z",
+ "last_activity_on": "2019-11-20",
+ "email": "admin@example.com",
+ "theme_id": 1,
+ "color_scheme_id": 1,
+ "projects_limit": 100000,
+ "current_sign_in_at": "2019-11-19T14:42:18.078Z",
+ "identities": [
+ ],
+ "can_create_group": true,
+ "can_create_project": true,
+ "two_factor_enabled": false,
+ "external": false,
+ "private_profile": false,
+ "shared_runners_minutes_limit": null,
+ "extra_shared_runners_minutes_limit": null
+ }
+}
+```
diff --git a/doc/api/markdown.md b/doc/api/markdown.md
index f5aee725c6a..f4ad1de9ad8 100644
--- a/doc/api/markdown.md
+++ b/doc/api/markdown.md
@@ -12,7 +12,7 @@ POST /api/v4/markdown
| Attribute | Type | Required | Description |
| --------- | ------- | ------------- | ------------------------------------------ |
-| `text` | string | yes | The markdown text to render |
+| `text` | string | yes | The Markdown text to render |
| `gfm` | boolean | no (optional) | Render text using GitLab Flavored Markdown. Default is `false` |
| `project` | string | no (optional) | Use `project` as a context when creating references using GitLab Flavored Markdown. [Authentication](README.html#authentication) is required if a project is not public. |
diff --git a/doc/api/merge_requests.md b/doc/api/merge_requests.md
index 7074d0249ef..541aa03450f 100644
--- a/doc/api/merge_requests.md
+++ b/doc/api/merge_requests.md
@@ -1407,7 +1407,7 @@ If the merge request is already merged or closed - you get `405` and error messa
In case the merge request is not set to be merged when the pipeline succeeds, you'll also get a `406` error.
```
-PUT /projects/:id/merge_requests/:merge_request_iid/cancel_merge_when_pipeline_succeeds
+POST /projects/:id/merge_requests/:merge_request_iid/cancel_merge_when_pipeline_succeeds
```
Parameters:
diff --git a/doc/api/packages.md b/doc/api/packages.md
index bab3f91bc40..5b490b872da 100644
--- a/doc/api/packages.md
+++ b/doc/api/packages.md
@@ -72,19 +72,32 @@ Example response:
"id": 1,
"name": "com/mycompany/my-app",
"version": "1.0-SNAPSHOT",
- "package_type": "maven"
+ "package_type": "maven",
+ "_links": {
+ "web_path": "/namespace1/project1/-/packages/1",
+ "delete_api_path": "/namespace1/project1/-/packages/1"
+ }
},
{
"id": 2,
"name": "@foo/bar",
"version": "1.0.3",
- "package_type": "npm"
+ "package_type": "npm",
+ "_links": {
+ "web_path": "/namespace1/project1/-/packages/1",
+ "delete_api_path": "/namespace1/project1/-/packages/1"
+ }
}
]
```
By default, the `GET` request will return 20 results, since the API is [paginated](README.md#pagination).
+The `_links` object contains the following properties:
+
+- `web_path`: The path which you can visit in GitLab and see the details of the package.
+- `delete_api_path`: The API path to delete the package. Only available if the request user has permission to do so.
+
## Get a project package
> [Introduced](https://gitlab.com/gitlab-org/gitlab/merge_requests/9667) in GitLab 11.9.
@@ -111,10 +124,19 @@ Example response:
"id": 1,
"name": "com/mycompany/my-app",
"version": "1.0-SNAPSHOT",
- "package_type": "maven"
+ "package_type": "maven",
+ "_links": {
+ "web_path": "/namespace1/project1/-/packages/1",
+ "delete_api_path": "/namespace1/project1/-/packages/1"
+ }
}
```
+The `_links` object contains the following properties:
+
+- `web_path`: The path which you can visit in GitLab and see the details of the package.
+- `delete_api_path`: The API path to delete the package. Only available if the request user has permission to do so.
+
## List package files
> [Introduced](https://gitlab.com/gitlab-org/gitlab/merge_requests/9305) in GitLab 11.8.
diff --git a/doc/api/pages.md b/doc/api/pages.md
new file mode 100644
index 00000000000..0babca61650
--- /dev/null
+++ b/doc/api/pages.md
@@ -0,0 +1,21 @@
+# Pages API
+
+Endpoints for managing [GitLab Pages](https://about.gitlab.com/product/pages/).
+
+The GitLab Pages feature must be enabled to use these endpoints. Find out more about [administering](../administration/pages/index.md) and [using](../user/project/pages/index.md) the feature.
+
+## Unpublish pages
+
+Remove pages. The user must have admin priviledges.
+
+```text
+DELETE /projects/:id/pages
+```
+
+| Attribute | Type | Required | Description |
+| --------- | -------------- | -------- | ---------------------------------------- |
+| `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user |
+
+```bash
+curl --request 'DELETE' --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/projects/2/pages
+```
diff --git a/doc/api/pipelines.md b/doc/api/pipelines.md
index 90a4f8d6e26..e1b2c12dd00 100644
--- a/doc/api/pipelines.md
+++ b/doc/api/pipelines.md
@@ -18,7 +18,9 @@ GET /projects/:id/pipelines
| `yaml_errors`| boolean | no | Returns pipelines with invalid configurations |
| `name`| string | no | The name of the user who triggered pipelines |
| `username`| string | no | The username of the user who triggered pipelines |
-| `order_by`| string | no | Order pipelines by `id`, `status`, `ref`, or `user_id` (default: `id`) |
+| `updated_after` | datetime | no | Return pipelines updated after the specified date. Format: ISO 8601 YYYY-MM-DDTHH:MM:SSZ |
+| `updated_before` | datetime | no | Return pipelines updated before the specified date. Format: ISO 8601 YYYY-MM-DDTHH:MM:SSZ |
+| `order_by`| string | no | Order pipelines by `id`, `status`, `ref`, `updated_at` or `user_id` (default: `id`) |
| `sort` | string | no | Sort pipelines in `asc` or `desc` order (default: `desc`) |
```
diff --git a/doc/api/project_badges.md b/doc/api/project_badges.md
index 527db478a50..0cf22808036 100644
--- a/doc/api/project_badges.md
+++ b/doc/api/project_badges.md
@@ -23,6 +23,7 @@ GET /projects/:id/badges
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user |
+| `name` | string | no | Name of the badges to return (case-sensitive). |
```bash
curl --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/projects/:id/badges
@@ -33,6 +34,7 @@ Example response:
```json
[
{
+ "name": "Coverage",
"id": 1,
"link_url": "http://example.com/ci_status.svg?project=%{project_path}&ref=%{default_branch}",
"image_url": "https://shields.io/my/badge",
@@ -41,6 +43,7 @@ Example response:
"kind": "project"
},
{
+ "name": "Pipeline",
"id": 2,
"link_url": "http://example.com/ci_status.svg?project=%{project_path}&ref=%{default_branch}",
"image_url": "https://shields.io/my/badge",
diff --git a/doc/api/projects.md b/doc/api/projects.md
index 222ab729810..209d41d62cd 100644
--- a/doc/api/projects.md
+++ b/doc/api/projects.md
@@ -61,6 +61,9 @@ GET /projects
| `id_after` | integer | no | Limit results to projects with IDs greater than the specified ID |
| `id_before` | integer | no | Limit results to projects with IDs less than the specified ID |
+NOTE: **Note:**
+This endpoint supports [keyset pagination](README.md#keyset-based-pagination) for selected `order_by` options.
+
When `simple=true` or the user is unauthenticated this returns something like:
```json
@@ -238,6 +241,19 @@ When the user is authenticated and `simple` is not set this returns something li
"remove_source_branch_after_merge": false,
"request_access_enabled": false,
"merge_method": "merge",
+ "auto_devops_enabled": true,
+ "auto_devops_deploy_strategy": "continuous",
+ "repository_storage": "default",
+ "approvals_before_merge": 0,
+ "mirror": false,
+ "mirror_user_id": 45,
+ "mirror_trigger_builds": false,
+ "only_mirror_protected_branches": false,
+ "mirror_overwrites_diverged_branches": false,
+ "external_authorization_classification_label": null,
+ "packages_enabled": true,
+ "service_desk_enabled": false,
+ "service_desk_address": null,
"statistics": {
"commit_count": 12,
"storage_size": 2066080,
@@ -309,6 +325,9 @@ GET /users/:user_id/projects
| `id_after` | integer | no | Limit results to projects with IDs greater than the specified ID |
| `id_before` | integer | no | Limit results to projects with IDs less than the specified ID |
+NOTE: **Note:**
+This endpoint supports [keyset pagination](README.md#keyset-based-pagination) for selected `order_by` options.
+
```json
[
{
@@ -451,6 +470,19 @@ GET /users/:user_id/projects
"remove_source_branch_after_merge": false,
"request_access_enabled": false,
"merge_method": "merge",
+ "auto_devops_enabled": true,
+ "auto_devops_deploy_strategy": "continuous",
+ "repository_storage": "default",
+ "approvals_before_merge": 0,
+ "mirror": false,
+ "mirror_user_id": 45,
+ "mirror_trigger_builds": false,
+ "only_mirror_protected_branches": false,
+ "mirror_overwrites_diverged_branches": false,
+ "external_authorization_classification_label": null,
+ "packages_enabled": true,
+ "service_desk_enabled": false,
+ "service_desk_address": null,
"statistics": {
"commit_count": 12,
"storage_size": 2066080,
@@ -643,6 +675,19 @@ Example response:
"remove_source_branch_after_merge": false,
"request_access_enabled": false,
"merge_method": "merge",
+ "auto_devops_enabled": true,
+ "auto_devops_deploy_strategy": "continuous",
+ "repository_storage": "default",
+ "approvals_before_merge": 0,
+ "mirror": false,
+ "mirror_user_id": 45,
+ "mirror_trigger_builds": false,
+ "only_mirror_protected_branches": false,
+ "mirror_overwrites_diverged_branches": false,
+ "external_authorization_classification_label": null,
+ "packages_enabled": true,
+ "service_desk_enabled": false,
+ "service_desk_address": null,
"statistics": {
"commit_count": 12,
"storage_size": 2066080,
@@ -771,6 +816,19 @@ GET /projects/:id
"printing_merge_requests_link_enabled": true,
"request_access_enabled": false,
"merge_method": "merge",
+ "auto_devops_enabled": true,
+ "auto_devops_deploy_strategy": "continuous",
+ "repository_storage": "default",
+ "approvals_before_merge": 0,
+ "mirror": false,
+ "mirror_user_id": 45,
+ "mirror_trigger_builds": false,
+ "only_mirror_protected_branches": false,
+ "mirror_overwrites_diverged_branches": false,
+ "external_authorization_classification_label": null,
+ "packages_enabled": true,
+ "service_desk_enabled": false,
+ "service_desk_address": null,
"statistics": {
"commit_count": 37,
"storage_size": 1038090,
@@ -951,6 +1009,7 @@ POST /projects
| `template_project_id` | integer | no | **(PREMIUM)** When used with `use_custom_template`, project ID of a custom project template. This is preferable to using `template_name` since `template_name` may be ambiguous. |
| `use_custom_template` | boolean | no | **(PREMIUM)** Use either custom [instance](../user/admin_area/custom_project_templates.md) or [group](../user/group/custom_project_templates.md) (with `group_with_project_templates_id`) project template |
| `group_with_project_templates_id` | integer | no | **(PREMIUM)** For group-level custom templates, specifies ID of group from which all the custom project templates are sourced. Leave empty for instance-level templates. Requires `use_custom_template` to be true |
+| `packages_enabled` | boolean | no | **(PREMIUM ONLY)** Enable or disable packages repository feature |
NOTE: **Note:** If your HTTP repository is not publicly accessible,
add authentication information to the URL: `https://username:password@gitlab.company.com/group/project.git`
@@ -1013,6 +1072,7 @@ POST /projects/user/:user_id
| `template_name` | string | no | When used without `use_custom_template`, name of a [built-in project template](../gitlab-basics/create-project.md#built-in-templates). When used with `use_custom_template`, name of a custom project template |
| `use_custom_template` | boolean | no | **(PREMIUM)** Use either custom [instance](../user/admin_area/custom_project_templates.md) or [group](../user/group/custom_project_templates.md) (with `group_with_project_templates_id`) project template |
| `group_with_project_templates_id` | integer | no | **(PREMIUM)** For group-level custom templates, specifies ID of group from which all the custom project templates are sourced. Leave empty for instance-level templates. Requires `use_custom_template` to be true |
+| `packages_enabled` | boolean | no | **(PREMIUM ONLY)** Enable or disable packages repository feature |
NOTE: **Note:** If your HTTP repository is not publicly accessible,
add authentication information to the URL: `https://username:password@gitlab.company.com/group/project.git`
@@ -1075,6 +1135,7 @@ PUT /projects/:id
| `only_mirror_protected_branches` | boolean | no | **(STARTER)** Only mirror protected branches |
| `mirror_overwrites_diverged_branches` | boolean | no | **(STARTER)** Pull mirror overwrites diverged branches |
| `packages_enabled` | boolean | no | **(PREMIUM ONLY)** Enable or disable packages repository feature |
+| `service_desk_enabled` | boolean | no | **(PREMIUM ONLY)** Enable or disable service desk feature |
NOTE: **Note:** If your HTTP repository is not publicly accessible,
add authentication information to the URL: `https://username:password@gitlab.company.com/group/project.git`
@@ -1652,7 +1713,12 @@ Example response:
## Remove project
-Removes a project including all associated resources (issues, merge requests etc).
+This endpoint either:
+
+- Removes a project including all associated resources (issues, merge requests etc).
+- From GitLab 12.6 on Premium or higher tiers, marks a project for deletion. Actual
+ deletion happens after number of days specified in
+ [instance settings](../user/admin_area/settings/visibility_and_access_controls.md#project-deletion-adjourned-period-premium-only).
```
DELETE /projects/:id
@@ -1662,6 +1728,18 @@ DELETE /projects/:id
| --------- | ---- | -------- | ----------- |
| `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) |
+## Restore project marked for deletion **(PREMIUM)**
+
+Restores project marked for deletion.
+
+```
+POST /projects/:id/restore
+```
+
+| Attribute | Type | Required | Description |
+| --------- | ---- | -------- | ----------- |
+| `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) |
+
## Upload a file
Uploads a file to the specified project to be used in an issue or merge request description, or a comment.
diff --git a/doc/api/releases/index.md b/doc/api/releases/index.md
index 7f41e237401..b5e24188043 100644
--- a/doc/api/releases/index.md
+++ b/doc/api/releases/index.md
@@ -3,6 +3,7 @@
> - [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/issues/41766) in GitLab 11.7.
> - Using this API you can manipulate GitLab's [Release](../../user/project/releases/index.md) entries.
> - For manipulating links as a release asset, see [Release Links API](links.md).
+> - Release Evidences were [introduced](https://gitlab.com/gitlab-org/gitlab/issues/26019) in GitLab 12.5.
## List Releases
@@ -87,6 +88,7 @@ Example response:
],
"commit_path":"/root/awesome-app/commit/588440f66559714280628a4f9799f0c4eb880a4a",
"tag_path":"/root/awesome-app/-/tags/v0.11.1",
+ "evidence_sha":"760d6cdfb0879c3ffedec13af470e0f71cf52c6cde4d",
"assets":{
"count":6,
"sources":[
@@ -120,7 +122,8 @@ Example response:
"url":"http://192.168.10.15:3000",
"external":true
}
- ]
+ ],
+ "evidence_file_path":"https://gitlab.example.com/root/awesome-app/-/releases/v0.2/evidence.json"
},
},
{
@@ -154,6 +157,7 @@ Example response:
"committer_email":"admin@example.com",
"committed_date":"2019-01-03T01:53:28.000Z"
},
+ "evidence_sha":"760d6cdfb0879c3ffedec13af470e0f71cf52c6cde4d",
"assets":{
"count":4,
"sources":[
@@ -176,7 +180,8 @@ Example response:
],
"links":[
- ]
+ ],
+ "evidence_file_path":"https://gitlab.example.com/root/awesome-app/-/releases/v0.1/evidence.json"
},
}
]
@@ -265,8 +270,9 @@ Example response:
],
"commit_path":"/root/awesome-app/commit/588440f66559714280628a4f9799f0c4eb880a4a",
"tag_path":"/root/awesome-app/-/tags/v0.11.1",
+ "evidence_sha":"760d6cdfb0879c3ffedec13af470e0f71cf52c6cde4d",
"assets":{
- "count":4,
+ "count":5,
"sources":[
{
"format":"zip",
@@ -287,7 +293,8 @@ Example response:
],
"links":[
- ]
+ ],
+ "evidence_url":"https://gitlab.example.com/root/awesome-app/-/releases/v0.1/evidence.json"
},
}
```
@@ -305,7 +312,7 @@ POST /projects/:id/releases
| `id` | integer/string | yes | The ID or [URL-encoded path of the project](../README.md#namespaced-path-encoding). |
| `name` | string | no | The release name. |
| `tag_name` | string | yes | The tag where the release will be created from. |
-| `description` | string | yes | The description of the release. You can use [markdown](../../user/markdown.md). |
+| `description` | string | yes | The description of the release. You can use [Markdown](../../user/markdown.md). |
| `ref` | string | yes, if `tag_name` doesn't exist | If `tag_name` doesn't exist, the release will be created from `ref`. It can be a commit SHA, another tag name, or a branch name. |
| `milestones` | array of string | no | The title of each milestone the release is associated with. |
| `assets:links` | array of hash | no | An array of assets links. |
@@ -385,6 +392,7 @@ Example response:
],
"commit_path":"/root/awesome-app/commit/588440f66559714280628a4f9799f0c4eb880a4a",
"tag_path":"/root/awesome-app/-/tags/v0.11.1",
+ "evidence_sha":"760d6cdfb0879c3ffedec13af470e0f71cf52c6cde4d",
"assets":{
"count":5,
"sources":[
@@ -412,7 +420,8 @@ Example response:
"url":"https://google.com",
"external":true
}
- ]
+ ],
+ "evidence_file_path":"https://gitlab.example.com/root/awesome-app/-/releases/v0.3/evidence.json"
},
}
```
@@ -430,7 +439,7 @@ PUT /projects/:id/releases/:tag_name
| `id` | integer/string | yes | The ID or [URL-encoded path of the project](../README.md#namespaced-path-encoding). |
| `tag_name` | string | yes | The tag where the release will be created from. |
| `name` | string | no | The release name. |
-| `description` | string | no | The description of the release. You can use [markdown](../../user/markdown.md). |
+| `description` | string | no | The description of the release. You can use [Markdown](../../user/markdown.md). |
| `milestones` | array of string | no | The title of each milestone to associate with the release (`[]` to remove all milestones from the release). |
| `released_at` | datetime | no | The date when the release will be/was ready. Expected in ISO 8601 format (`2019-03-15T08:00:00Z`). |
@@ -491,6 +500,7 @@ Example response:
],
"commit_path":"/root/awesome-app/commit/588440f66559714280628a4f9799f0c4eb880a4a",
"tag_path":"/root/awesome-app/-/tags/v0.11.1",
+ "evidence_sha":"760d6cdfb0879c3ffedec13af470e0f71cf52c6cde4d",
"assets":{
"count":4,
"sources":[
@@ -513,7 +523,8 @@ Example response:
],
"links":[
- ]
+ ],
+ "evidence_file_path":"https://gitlab.example.com/root/awesome-app/-/releases/v0.1/evidence.json"
},
}
```
@@ -573,6 +584,7 @@ Example response:
},
"commit_path":"/root/awesome-app/commit/588440f66559714280628a4f9799f0c4eb880a4a",
"tag_path":"/root/awesome-app/-/tags/v0.11.1",
+ "evidence_sha":"760d6cdfb0879c3ffedec13af470e0f71cf52c6cde4d",
"assets":{
"count":4,
"sources":[
@@ -595,7 +607,8 @@ Example response:
],
"links":[
- ]
+ ],
+ "evidence_file_path":"https://gitlab.example.com/root/awesome-app/-/releases/v0.1/evidence.json"
},
}
```
diff --git a/doc/api/search.md b/doc/api/search.md
index 8e20722052e..46209fb753f 100644
--- a/doc/api/search.md
+++ b/doc/api/search.md
@@ -760,6 +760,7 @@ GET /projects/:id/search
| `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user |
| `scope` | string | yes | The scope to search in |
| `search` | string | yes | The search query |
+| `ref` | string | no | The name of a repository branch or tag to search on. The project's default branch is used by default. This is only applicable for scopes: commits, blobs, and wiki_blobs. |
Search the expression within the specified scope. Currently these scopes are supported: issues, merge_requests, milestones, notes, wiki_blobs, commits, blobs, users.
@@ -1058,7 +1059,7 @@ Blobs searches are performed on both filenames and contents. Search results:
times in the content.
```bash
-curl --request GET --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/projects/6/search?scope=blobs&search=installation
+curl --request GET --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/projects/6/search?scope=blobs&search=installation&ref=feature
```
Example response:
@@ -1072,7 +1073,7 @@ Example response:
"path": "README.md",
"filename": "README.md",
"id": null,
- "ref": "master",
+ "ref": "feature",
"startline": 46,
"project_id": 6
}
diff --git a/doc/api/services.md b/doc/api/services.md
index 609c7e62e36..02a31ba9d38 100644
--- a/doc/api/services.md
+++ b/doc/api/services.md
@@ -229,6 +229,51 @@ Get Campfire service settings for a project.
GET /projects/:id/services/campfire
```
+## Unify Circuit
+
+Unify Circuit RTC and collaboration tool.
+
+### Create/Edit Unify Circuit service
+
+Set Unify Circuit service for a project.
+
+```
+PUT /projects/:id/services/unify-circuit
+```
+
+Parameters:
+
+| Parameter | Type | Required | Description |
+| --------- | ---- | -------- | ----------- |
+| `webhook` | string | true | The Unify Circuit webhook. For example, `https://circuit.com/rest/v2/webhooks/incoming/...`. |
+| `notify_only_broken_pipelines` | boolean | false | Send notifications for broken pipelines |
+| `branches_to_be_notified` | string | all | Branches to send notifications for. Valid options are "all", "default", "protected", and "default_and_protected" |
+| `push_events` | boolean | false | Enable notifications for push events |
+| `issues_events` | boolean | false | Enable notifications for issue events |
+| `confidential_issues_events` | boolean | false | Enable notifications for confidential issue events |
+| `merge_requests_events` | boolean | false | Enable notifications for merge request events |
+| `tag_push_events` | boolean | false | Enable notifications for tag push events |
+| `note_events` | boolean | false | Enable notifications for note events |
+| `confidential_note_events` | boolean | false | Enable notifications for confidential note events |
+| `pipeline_events` | boolean | false | Enable notifications for pipeline events |
+| `wiki_page_events` | boolean | false | Enable notifications for wiki page events |
+
+### Delete Unify Circuit service
+
+Delete Unify Circuit service for a project.
+
+```
+DELETE /projects/:id/services/unify-circuit
+```
+
+### Get Unify Circuit service settings
+
+Get Unify Circuit service settings for a project.
+
+```
+GET /projects/:id/services/unify-circuit
+```
+
## Custom Issue Tracker
Custom issue tracker
@@ -480,6 +525,7 @@ Parameters:
| `merge_requests_events` | boolean | false | Enable notifications for merge request events |
| `tag_push_events` | boolean | false | Enable notifications for tag push events |
| `note_events` | boolean | false | Enable notifications for note events |
+| `confidential_note_events` | boolean | false | Enable notifications for confidential note events |
| `pipeline_events` | boolean | false | Enable notifications for pipeline events |
| `wiki_page_events` | boolean | false | Enable notifications for wiki page events |
@@ -1088,6 +1134,7 @@ Parameters:
| `merge_requests_events` | boolean | false | Enable notifications for merge request events |
| `tag_push_events` | boolean | false | Enable notifications for tag push events |
| `note_events` | boolean | false | Enable notifications for note events |
+| `confidential_note_events` | boolean | false | Enable notifications for confidential note events |
| `pipeline_events` | boolean | false | Enable notifications for pipeline events |
| `wiki_page_events` | boolean | false | Enable notifications for wiki page events |
| `push_channel` | string | false | The name of the channel to receive push events notifications |
@@ -1095,6 +1142,7 @@ Parameters:
| `confidential_issue_channel` | string | false | The name of the channel to receive confidential issues events notifications |
| `merge_request_channel` | string | false | The name of the channel to receive merge request events notifications |
| `note_channel` | string | false | The name of the channel to receive note events notifications |
+| `confidential_note_channel` | boolean | The name of the channel to receive confidential note events notifications |
| `tag_push_channel` | string | false | The name of the channel to receive tag push events notifications |
| `pipeline_channel` | string | false | The name of the channel to receive pipeline events notifications |
| `wiki_page_channel` | string | false | The name of the channel to receive wiki page events notifications |
diff --git a/doc/api/settings.md b/doc/api/settings.md
index 51d5e5f35d7..fa0efcaa5f0 100644
--- a/doc/api/settings.md
+++ b/doc/api/settings.md
@@ -72,14 +72,15 @@ Example response:
```
Users on GitLab [Premium or Ultimate](https://about.gitlab.com/pricing/) may also see
-the `file_template_project_id` or the `geo_node_allowed_ips` parameters:
+the `file_template_project_id`, `deletion_adjourned_period`, or the `geo_node_allowed_ips` parameters:
```json
{
"id" : 1,
"signup_enabled" : true,
"file_template_project_id": 1,
- "geo_node_allowed_ips": "0.0.0.0/0, ::/0"
+ "geo_node_allowed_ips": "0.0.0.0/0, ::/0",
+ "deletion_adjourned_period": 7,
...
}
```
@@ -162,6 +163,7 @@ these parameters:
- `file_template_project_id`
- `geo_node_allowed_ips`
- `geo_status_timeout`
+- `deletion_adjourned_period`
Example responses: **(PREMIUM ONLY)**
@@ -265,10 +267,11 @@ are listed in the descriptions of the relevant settings.
| `html_emails_enabled` | boolean | no | Enable HTML emails. |
| `import_sources` | array of strings | no | Sources to allow project import from, possible values: `github`, `bitbucket`, `bitbucket_server`, `gitlab`, `google_code`, `fogbugz`, `git`, `gitlab_project`, `gitea`, `manifest`, and `phabricator`. |
| `instance_statistics_visibility_private` | boolean | no | When set to `true` Instance statistics will only be available to admins. |
-| `local_markdown_version` | integer | no | Increase this value when any cached markdown should be invalidated. |
+| `local_markdown_version` | integer | no | Increase this value when any cached Markdown should be invalidated. |
| `max_artifacts_size` | integer | no | Maximum artifacts size in MB |
| `max_attachment_size` | integer | no | Limit attachment size in MB |
| `max_pages_size` | integer | no | Maximum size of pages repositories in MB |
+| `max_personal_access_token_lifetime` | integer | no | **(ULTIMATE ONLY)** Maximum allowable lifetime for personal access tokens in days |
| `metrics_enabled` | boolean | no | (**If enabled, requires:** `metrics_host`, `metrics_method_call_threshold`, `metrics_packet_size`, `metrics_pool_size`, `metrics_port`, `metrics_sample_interval` and `metrics_timeout`) Enable influxDB metrics. |
| `metrics_host` | string | required by: `metrics_enabled` | InfluxDB host. |
| `metrics_method_call_threshold` | integer | required by: `metrics_enabled` | A method call is only tracked when it takes longer than the given amount of milliseconds. |
@@ -291,6 +294,7 @@ are listed in the descriptions of the relevant settings.
| `plantuml_enabled` | boolean | no | (**If enabled, requires:** `plantuml_url`) Enable PlantUML integration. Default is `false`. |
| `plantuml_url` | string | required by: `plantuml_enabled` | The PlantUML instance URL for integration. |
| `polling_interval_multiplier` | decimal | no | Interval multiplier used by endpoints that perform polling. Set to `0` to disable polling. |
+| `deletion_adjourned_period` | integer | no | **(PREMIUM ONLY)** How many days after marking project for deletion it is actually removed. Value between 0 and 90.
| `project_export_enabled` | boolean | no | Enable project export. |
| `prometheus_metrics_enabled` | boolean | no | Enable Prometheus metrics. |
| `protected_ci_variables` | boolean | no | Environment variables are protected by default. |
@@ -350,3 +354,4 @@ are listed in the descriptions of the relevant settings.
| `user_show_add_ssh_key_message` | boolean | no | When set to `false` disable the "You won't be able to pull or push project code via SSH" warning shown to users with no uploaded SSH key. |
| `version_check_enabled` | boolean | no | Let GitLab inform you when an update is available. |
| `web_ide_clientside_preview_enabled` | boolean | no | Client side evaluation (allow live previews of JavaScript projects in the Web IDE using CodeSandbox client side evaluation). |
+| `snippet_size_limit` | integer | no | Max snippet content size in **bytes**. Default: 52428800 Bytes (50MB).|
diff --git a/doc/api/tags.md b/doc/api/tags.md
index 13c4b83dda8..11291065edc 100644
--- a/doc/api/tags.md
+++ b/doc/api/tags.md
@@ -189,7 +189,7 @@ Parameters:
Request body:
-- `description` (required) - Release notes with markdown support
+- `description` (required) - Release notes with Markdown support
```json
{
@@ -221,7 +221,7 @@ Parameters:
Request body:
-- `description` (required) - Release notes with markdown support
+- `description` (required) - Release notes with Markdown support
```json
{
diff --git a/doc/api/users.md b/doc/api/users.md
index c82a5e23c8e..4491a339d25 100644
--- a/doc/api/users.md
+++ b/doc/api/users.md
@@ -430,7 +430,7 @@ e.g. when renaming the email address to some existing one.
## User deletion
Deletes a user. Available only for administrators.
-This returns a `204 No Content` status code if the operation was successfully or `404` if the resource was not found.
+This returns a `204 No Content` status code if the operation was successfully, `404` if the resource was not found or `409` if the user cannot be soft deleted.
```
DELETE /users/:id
diff --git a/doc/ci/caching/index.md b/doc/ci/caching/index.md
index 6b8e7fa2ad5..b6518c87e13 100644
--- a/doc/ci/caching/index.md
+++ b/doc/ci/caching/index.md
@@ -23,61 +23,55 @@ how it is defined in `.gitlab-ci.yml`.
NOTE: **Note:**
Be careful if you use cache and artifacts to store the same path in your jobs
-as **caches are restored before artifacts** and the content would be overwritten.
-
-Don't mix the caching with passing artifacts between stages. Caching is not
-designed to pass artifacts between stages. Cache is for runtime dependencies
-needed to compile the project:
-
-- `cache`: **Use for temporary storage for project dependencies.** Not useful
- for keeping intermediate build results, like `jar` or `apk` files.
- Cache was designed to be used to speed up invocations of subsequent runs of a
- given job, by keeping things like dependencies (e.g., npm packages, Go vendor
- packages, etc.) so they don't have to be re-fetched from the public internet.
- While the cache can be abused to pass intermediate build results between
- stages, there may be cases where artifacts are a better fit.
+as **caches are restored before artifacts** and the content could be overwritten.
+
+Don't use caching for passing artifacts between stages, as it is designed to store
+runtime dependencies needed to compile the project:
+
+- `cache`: **For storing project dependencies**
+
+ Caches are used to speed up runs of a given job in **subsequent pipelines**, by
+ storing downloaded dependencies so that they don't have to be fetched from the
+ internet again (like npm packages, Go vendor packages, etc.) While the cache could
+ be configured to pass intermediate build results between stages, this should be
+ done with artifacts instead.
+
- `artifacts`: **Use for stage results that will be passed between stages.**
- Artifacts were designed to upload some compiled/generated bits of the build,
- and they can be fetched by any number of concurrent Runners. They are
- guaranteed to be available and are there to pass data between jobs. They are
- also exposed to be downloaded from the UI. **Artifacts can only exist in
- directories relative to the build directory** and specifying paths which don't
- comply to this rule trigger an unintuitive and illogical error message (an
- enhancement is discussed at
- [https://gitlab.com/gitlab-org/gitlab-foss/issues/15530](https://gitlab.com/gitlab-org/gitlab-foss/issues/15530)
- ). Artifacts need to be uploaded to the GitLab instance (not only the GitLab
- runner) before the next stage job(s) can start, so you need to evaluate
- carefully whether your bandwidth allows you to profit from parallelization
- with stages and shared artifacts before investing time in changes to the
- setup.
-
-It's sometimes confusing because the name artifact sounds like something that
-is only useful outside of the job, like for downloading a final image. But
-artifacts are also available in between stages within a pipeline. So if you
-build your application by downloading all the required modules, you might want
-to declare them as artifacts so that each subsequent stage can depend on them
-being there. There are some optimizations like declaring an
-[expiry time](../yaml/README.md#artifactsexpire_in) so you don't keep artifacts
-around too long, and using [dependencies](../yaml/README.md#dependencies) to
-control exactly where artifacts are passed around.
-
-In summary:
-
-- Caches are disabled if not defined globally or per job (using `cache:`).
-- Caches are available for all jobs in your `.gitlab-ci.yml` if enabled globally.
-- Caches can be used by subsequent pipelines of that same job (a script in
- a stage) in which the cache was created (if not defined globally).
-- Caches are stored where the Runner is installed **and** uploaded to S3 if
- [distributed cache is enabled](https://docs.gitlab.com/runner/configuration/autoscale.html#distributed-runners-caching).
-- Caches defined per job are only used, either:
- - For the next pipeline of that job.
- - If that same cache is also defined in a subsequent job of the same pipeline.
-- Artifacts are disabled if not defined per job (using `artifacts:`).
-- Artifacts can only be enabled per job, not globally.
-- Artifacts are created during a pipeline and can be used by the subsequent
- jobs of that currently active pipeline.
-- Artifacts are always uploaded to GitLab (known as coordinator).
-- Artifacts can have an expiration value for controlling disk usage (30 days by default).
+
+ Artifacts are files generated by a job which are stored and uploaded, and can then
+ be fetched and used by jobs in later stages of the **same pipeline**. This data
+ will not be available in different pipelines, but is available to be downloaded
+ from the UI.
+
+The name `artifacts` sounds like it's only useful outside of the job, like for downloading
+a final image, but artifacts are also available in later stages within a pipeline.
+So if you build your application by downloading all the required modules, you might
+want to declare them as artifacts so that subsequent stages can use them. There are
+some optimizations like declaring an [expiry time](../yaml/README.md#artifactsexpire_in)
+so you don't keep artifacts around too long, or using [dependencies](../yaml/README.md#dependencies)
+to control which jobs fetch the artifacts.
+
+Caches:
+
+- Are disabled if not defined globally or per job (using `cache:`).
+- Are available for all jobs in your `.gitlab-ci.yml` if enabled globally.
+- Can be used in subsequent pipelines by the same job in which the cache was created (if not defined globally).
+- Are stored where the Runner is installed **and** uploaded to S3 if [distributed cache is enabled](https://docs.gitlab.com/runner/configuration/autoscale.html#distributed-runners-caching).
+- If defined per job, are used:
+ - By the same job in a subsequent pipeline.
+ - By subsequent jobs in the same pipeline, if the they have identical dependencies.
+
+Artifacts:
+
+- Are disabled if not defined per job (using `artifacts:`).
+- Can only be enabled per job, not globally.
+- Are created during a pipeline and can be used by the subsequent jobs of that currently active pipeline.
+- Are always uploaded to GitLab (known as coordinator).
+- Can have an expiration value for controlling disk usage (30 days by default).
+
+NOTE: **Note:**
+Both artifacts and caches define their paths relative to the project directory, and
+can't link to files outside it.
## Good caching practices
diff --git a/doc/ci/docker/using_docker_images.md b/doc/ci/docker/using_docker_images.md
index 489791141ed..e58fe5e4604 100644
--- a/doc/ci/docker/using_docker_images.md
+++ b/doc/ci/docker/using_docker_images.md
@@ -576,8 +576,8 @@ There are two ways to determine the value of `DOCKER_AUTH_CONFIG`:
will use the available system keystore to store the result of `docker
login`. In that case, it's impossible to read `~/.docker/config.json`,
so you will need to prepare the required base64-encoded version of
- `${username}:${password}` manually. Open a terminal and execute the
- following command:
+ `${username}:${password}` and create the Docker configuration JSON manually.
+ Open a terminal and execute the following command:
```bash
echo -n "my_username:my_password" | base64
@@ -585,6 +585,18 @@ There are two ways to determine the value of `DOCKER_AUTH_CONFIG`:
# Example output to copy
bXlfdXNlcm5hbWU6bXlfcGFzc3dvcmQ=
```
+
+ Create the Docker JSON configuration content as follows:
+
+ ```json
+ {
+ "auths": {
+ "registry.example.com:5000": {
+ "auth": "(Base64 content from above)"
+ }
+ }
+ }
+ ```
#### Configuring a job
diff --git a/doc/ci/enable_or_disable_ci.md b/doc/ci/enable_or_disable_ci.md
index dcf4d8dde2d..ff104d4e177 100644
--- a/doc/ci/enable_or_disable_ci.md
+++ b/doc/ci/enable_or_disable_ci.md
@@ -34,13 +34,17 @@ pipelines that are run from an [external integration](../user/project/integratio
## Per-project user setting
-The setting to enable or disable GitLab CI/CD Pipelines can be found in your project in
-**Settings > General > Visibility, project features, permissions**. If the project
-visibility is set to:
+To enable or disable GitLab CI/CD Pipelines in your project:
-- **Private**, only project members can access pipelines.
-- **Internal** or **Public**, pipelines can be made accessible to either
- project members only or everyone with access.
+1. Navigate to **Settings > General > Visibility, project features, permissions**.
+1. Expand the **Repository** section
+1. Enable or disable the **Pipelines** checkbox as required.
+
+**Project visibility** will also affect pipeline visibility. If set to:
+
+- **Private**: Only project members can access pipelines.
+- **Internal** or **Public**: Pipelines can be set to either **Only Project Members**
+ or **Everyone With Access** via the drop-down box.
Press **Save changes** for the settings to take effect.
diff --git a/doc/ci/environments.md b/doc/ci/environments.md
index 0f978a8f3a9..245a4d20e2d 100644
--- a/doc/ci/environments.md
+++ b/doc/ci/environments.md
@@ -303,6 +303,41 @@ You are not required to use the same prefix or only slashes (`/`) in the dynamic
names. However, using this format will enable the [grouping similar environments](#grouping-similar-environments)
feature.
+### Configuring Kubernetes deployments
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/27630) in GitLab 12.6.
+
+If you are deploying to a [Kubernetes cluster](../user/project/clusters/index.md)
+associated with your project, you can configure these deployments from your
+`gitlab-ci.yml` file.
+
+The following configuration options are supported:
+
+- [`namespace`](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/)
+
+In the following example, the job will deploy your application to the
+`production` Kubernetes namespace.
+
+```yaml
+deploy:
+ stage: deploy
+ script:
+ - echo "Deploy to production server"
+ environment:
+ name: production
+ url: https://example.com
+ kubernetes:
+ namespace: production
+ only:
+ - master
+```
+
+NOTE: **Note:**
+Kubernetes configuration is not supported for Kubernetes clusters
+that are [managed by GitLab](../user/project/clusters/index.md#gitlab-managed-clusters).
+To follow progress on support for GitLab-managed clusters, see the
+[relevant issue](https://gitlab.com/gitlab-org/gitlab/issues/38054).
+
### Complete example
The configuration in this section provides a full development workflow where your app is:
@@ -485,6 +520,13 @@ To retry or rollback a deployment:
- **Retry** button next to the last deployment, to retry that deployment.
- **Rollback** button next to a previously successful deployment, to roll back to that deployment.
+#### What to expect with a rollback
+
+Pressing the **Rollback** button on a specific commit will trigger a _new_ deployment with its
+own unique job ID.
+
+This means that you will see a new deployment that points to the commit you are rolling back to.
+
NOTE: **Note:**
The defined deployment process in the job's `script` determines whether the rollback succeeds or not.
diff --git a/doc/ci/examples/test-and-deploy-python-application-to-heroku.md b/doc/ci/examples/test-and-deploy-python-application-to-heroku.md
index 34d53f67adc..03381dc16ff 100644
--- a/doc/ci/examples/test-and-deploy-python-application-to-heroku.md
+++ b/doc/ci/examples/test-and-deploy-python-application-to-heroku.md
@@ -83,7 +83,7 @@ gitlab-runner register \
--description "python-3.5" \
--executor "docker" \
--docker-image python:3.5 \
- --docker-postgres latest
+ --docker-services postgres:latest
```
With the command above, you create a runner that uses the [`python:3.5`](https://hub.docker.com/_/python) image and uses a [PostgreSQL](https://hub.docker.com/_/postgres) database.
diff --git a/doc/ci/examples/test_phoenix_app_with_gitlab_ci_cd/index.md b/doc/ci/examples/test_phoenix_app_with_gitlab_ci_cd/index.md
index a81568d6cd4..541578db294 100644
--- a/doc/ci/examples/test_phoenix_app_with_gitlab_ci_cd/index.md
+++ b/doc/ci/examples/test_phoenix_app_with_gitlab_ci_cd/index.md
@@ -367,7 +367,7 @@ If we take a look at the project's main page on the GitLab UI, we can see the st
build made by GitLab CI/CD.
Time to show the world our green build badge! Navigate to your project's **Settings > CI/CD** and
-expand **General pipelines settings**. Scroll down to **Pipeline status** and copy the markdown code
+expand **General pipelines settings**. Scroll down to **Pipeline status** and copy the Markdown code
for your badge. Paste it on the top of your `README.md` file, to let people outside of our project
see if our latest code is running without errors.
diff --git a/doc/ci/img/collapsible_log.png b/doc/ci/img/collapsible_log.png
deleted file mode 100644
index d2a570e246e..00000000000
--- a/doc/ci/img/collapsible_log.png
+++ /dev/null
Binary files differ
diff --git a/doc/ci/img/collapsible_log_v12_6.png b/doc/ci/img/collapsible_log_v12_6.png
new file mode 100644
index 00000000000..294421c645d
--- /dev/null
+++ b/doc/ci/img/collapsible_log_v12_6.png
Binary files differ
diff --git a/doc/ci/jenkins/index.md b/doc/ci/jenkins/index.md
index 321d0d2778f..6e9e723feb5 100644
--- a/doc/ci/jenkins/index.md
+++ b/doc/ci/jenkins/index.md
@@ -228,5 +228,5 @@ our very powerful [`only/except` rules system](../yaml/README.md#onlyexcept-basi
```yaml
my_job:
- only: branches
+ only: [branches]
```
diff --git a/doc/ci/junit_test_reports.md b/doc/ci/junit_test_reports.md
index c03d1798ae1..f0c3da4358a 100644
--- a/doc/ci/junit_test_reports.md
+++ b/doc/ci/junit_test_reports.md
@@ -171,6 +171,32 @@ cpp:
junit: report.xml
```
+### .Net example
+
+The [JunitXML.TestLogger](https://www.nuget.org/packages/JunitXml.TestLogger/) NuGet
+package can generate test reports for .Net Framework and .Net Core applications. The following
+example expects a solution in the root folder of the repository, with one or more
+project files in sub-folders. One result file is produced per test project, and each file
+is placed in a new artifacts folder. This example includes optional formatting arguments, which
+improve the readability of test data in the test widget. A full .Net Core
+[example is available](https://gitlab.com/Siphonophora/dot-net-cicd-test-logging-demo).
+
+```yaml
+## Source code and documentation are here: https://github.com/spekt/junit.testlogger/
+
+Test:
+ stage: test
+ script:
+ - 'dotnet test --test-adapter-path:. --logger:"junit;LogFilePath=..\artifacts\{assembly}-test-result.xml;MethodFormat=Class;FailureBodyFormat=Verbose"'
+ artifacts:
+ when: always
+ paths:
+ - ./**/*test-result.xml
+ reports:
+ junit:
+ - ./**/*test-result.xml
+```
+
## Limitations
Currently, the following tools might not work because their XML formats are unsupported in GitLab.
diff --git a/doc/ci/merge_request_pipelines/index.md b/doc/ci/merge_request_pipelines/index.md
index a49279f1932..9ac41f88ff6 100644
--- a/doc/ci/merge_request_pipelines/index.md
+++ b/doc/ci/merge_request_pipelines/index.md
@@ -30,7 +30,7 @@ Pipelines for merge requests have the following requirements and limitations:
## Configuring pipelines for merge requests
-To configure pipelines for merge requests, add the `only: merge_requests` parameter to
+To configure pipelines for merge requests, add the `only: [merge_requests]` parameter to
the jobs that you want to run only for merge requests.
Then, when developers create or update merge requests, a pipeline runs
@@ -68,7 +68,7 @@ After the merge request is updated with new commits:
- The pipeline fetches the latest code from the source branch and run tests against it.
In the above example, the pipeline contains only a `test` job.
-Since the `build` and `deploy` jobs don't have the `only: merge_requests` parameter,
+Since the `build` and `deploy` jobs don't have the `only: [merge_requests]` parameter,
they will not run in the merge request.
Pipelines tagged with the **detached** badge indicate that they were triggered
@@ -86,7 +86,7 @@ Read the [documentation on Merge Trains](pipelines_for_merged_results/merge_trai
## Excluding certain jobs
-The behavior of the `only: merge_requests` parameter is such that _only_ jobs with
+The behavior of the `only: [merge_requests]` parameter is such that _only_ jobs with
that parameter are run in the context of a merge request; no other jobs will be run.
However, you may want to reverse this behavior, having all of your jobs to run _except_
@@ -134,6 +134,36 @@ to add that `only:` rule to all of your jobs in order to make them always run. Y
can use this for scenarios like having only pipelines with merge requests get a
Review App set up, helping to save resources.
+## Excluding certain branches
+
+Pipelines for merge requests require special treatement when
+using [`only`/`except`](../yaml/README.md#onlyexcept-basic). Unlike ordinary
+branch refs (for example `refs/heads/my-feature-branch`), merge request refs
+use a special Git reference that looks like `refs/merge-requests/:iid/head`. Because
+of this, the following configuration will **not** work as expected:
+
+```yaml
+# Does not exclude a branch named "docs-my-fix"!
+test:
+ only: [merge_requests]
+ except: [/^docs-/]
+```
+
+Instead, you can use the
+[`$CI_COMMIT_REF_NAME` predefined environment
+variable](../variables/predefined_variables.md#variables-reference) in
+combination with
+[`only:variables`](../yaml/README.md#onlyvariablesexceptvariables) to
+accomplish this behavior:
+
+```yaml
+test:
+ only: [merge_requests]
+ except:
+ variables:
+ $CI_COMMIT_REF_NAME =~ /^docs-/
+```
+
## Important notes about merge requests from forked projects
Note that the current behavior is subject to change. In the usual contribution
diff --git a/doc/ci/merge_request_pipelines/pipelines_for_merged_results/index.md b/doc/ci/merge_request_pipelines/pipelines_for_merged_results/index.md
index 3a0848fcd08..379644beacd 100644
--- a/doc/ci/merge_request_pipelines/pipelines_for_merged_results/index.md
+++ b/doc/ci/merge_request_pipelines/pipelines_for_merged_results/index.md
@@ -96,7 +96,7 @@ To check these feature flag values, please ask administrator to execute the foll
### Intermittently pipelines fail by `fatal: reference is not a tree:` error
Since pipelines for merged results are a run on a merge ref of a merge request
-(`refs/merge-requests/<iid>/merge`), the git-reference could be overwritten at an
+(`refs/merge-requests/<iid>/merge`), the Git reference could be overwritten at an
unexpected timing, for example, when a source or target branch is advanced.
In this case, the pipeline fails because of `fatal: reference is not a tree:` error,
which indicates that the checkout-SHA is not found in the merge ref.
diff --git a/doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/img/merge_train_immediate_merge_confirmation_dialog_v12_6.png b/doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/img/merge_train_immediate_merge_confirmation_dialog_v12_6.png
new file mode 100644
index 00000000000..241f837a748
--- /dev/null
+++ b/doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/img/merge_train_immediate_merge_confirmation_dialog_v12_6.png
Binary files differ
diff --git a/doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/img/merge_train_immediate_merge_v12_6.png b/doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/img/merge_train_immediate_merge_v12_6.png
new file mode 100644
index 00000000000..b46522395e0
--- /dev/null
+++ b/doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/img/merge_train_immediate_merge_v12_6.png
Binary files differ
diff --git a/doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md b/doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md
index b8976ffae7f..fca6916bee4 100644
--- a/doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md
+++ b/doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md
@@ -6,6 +6,7 @@ last_update: 2019-07-03
# Merge Trains **(PREMIUM)**
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/9186) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.0.
+> [Squash and merge](../../../../user/project/merge_requests/squash_and_merge.md) support [introduced](https://gitlab.com/gitlab-org/gitlab/issues/13001) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.6.
[Pipelines for merged results](../index.md#pipelines-for-merged-results-premium) introduces
running a build on the result of the merged code prior to merging, as a way to keep master green.
@@ -36,7 +37,6 @@ Merge trains have the following requirements and limitations:
If more than twenty merge requests are added to the merge train, the merge requests
will be queued until a slot in the merge train is free. There is no limit to the
number of merge requests that can be queued.
-- This feature does not support [squash and merge](../../../../user/project/merge_requests/squash_and_merge.md).
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i>
Watch this video for a demonstration on [how parallel execution
@@ -86,12 +86,15 @@ In case, you have a high-priority merge request (e.g. critical patch) to be merg
you can use **Merge Immediately** option for bypassing the merge train.
This is the fastest option to get the change merged into the target branch.
-![Merge Immediately](img/merge_train_immediate_merge.png)
+![Merge Immediately](img/merge_train_immediate_merge_v12_6.png)
However, every time you merge a merge request immediately, it could affect the
existing merge train to be reconstructed, specifically, it regenerates expected
merge commits and pipelines. This means, merging immediately essentially wastes
-CI resources.
+CI resources. Because of these downsides, you will be asked to confirm before
+the merge is initiated:
+
+![Merge immediately confirmation dialog](img/merge_train_immediate_merge_confirmation_dialog_v12_6.png)
## Troubleshooting
diff --git a/doc/ci/pipelines.md b/doc/ci/pipelines.md
index 590a02b306c..d1e50039417 100644
--- a/doc/ci/pipelines.md
+++ b/doc/ci/pipelines.md
@@ -149,14 +149,15 @@ The union of A, B, and C is (1, 4) and (6, 7). Therefore, the total running time
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/issues/14664) in GitLab
> 12.0.
-Job logs are divided into sections that can be collapsed or expanded.
+Job logs are divided into sections that can be collapsed or expanded. Each section will display
+the duration.
In the following example:
-- Two sections are expanded and can be collapsed.
-- One section is collapsed and can be expanded.
+- Two sections are collapsed and can be expanded.
+- Three sections are expanded and can be collapsed.
-![Collapsible sections](img/collapsible_log.png)
+![Collapsible sections](img/collapsible_log_v12_6.png)
## Configuring pipelines
@@ -468,3 +469,15 @@ To illustrate its life cycle:
even if the commit history of the `example` branch has been overwritten by force-push.
1. GitLab Runner fetches the persistent pipeline ref and gets source code from the checkout-SHA.
1. When the pipeline finished, its persistent ref is cleaned up in a background process.
+
+NOTE: **NOTE**: At this moment, this feature is on by default and can be manually disabled
+by disabling `depend_on_persistent_pipeline_ref` feature flag. If you're interested in
+manually disabling this behavior, please ask the administrator
+to execute the following commands in rails console.
+
+```shell
+> sudo gitlab-rails console # Login to Rails console of GitLab instance.
+> project = Project.find_by_full_path('namespace/project-name') # Get the project instance.
+> Feature.disable(:depend_on_persistent_pipeline_ref, project) # Disable the feature flag for specific project
+> Feature.disable(:depend_on_persistent_pipeline_ref) # Disable the feature flag system-wide
+```
diff --git a/doc/ci/review_apps/index.md b/doc/ci/review_apps/index.md
index da92fadafc4..0da1228aa53 100644
--- a/doc/ci/review_apps/index.md
+++ b/doc/ci/review_apps/index.md
@@ -85,7 +85,7 @@ in your repository map to paths of pages on your website using a Route Map.
Once set, GitLab will display **View on ...** buttons, which will take you
to the pages changed directly from merge requests.
-To set up a route map, add a a file inside the repository at `.gitlab/route-map.yml`,
+To set up a route map, add a file inside the repository at `.gitlab/route-map.yml`,
which contains a YAML array that maps `source` paths (in the repository) to `public`
paths (on the website).
@@ -163,6 +163,13 @@ that spawned the Review App.
### Configuring Visual Reviews
+Ensure that the `anonymous_visual_review_feedback` feature flag is enabled.
+Administrators can enable with a Rails console as follows:
+
+```ruby
+Feature.enabled(:anonymous_visual_review_feedback)
+```
+
The feedback form is served through a script you add to pages in your Review App.
If you have [Developer permissions](../../user/permissions.md) to the project,
you can access it by clicking the **Review** button in the **Pipeline** section
@@ -221,6 +228,19 @@ NOTE: **Note:**
Future enhancements [are planned](https://gitlab.com/gitlab-org/gitlab/issues/11322)
to make this process even easier.
+### Determining merge request ID
+
+The visual review tools retrieve the merge request ID from the `data-merge-request-id`
+data attribute included in the `script` HTML tag used to add the visual review tools
+to your review app.
+
+​After determining the ID for the merge request to link to a visual review app, you
+can supply the ID by either:​​
+
+- Hardcoding it in the script tag via the data attribute `data-merge-request-id` of the app.
+- Dynamically adding the `data-merge-request-id` value during the build of the app.
+- Supplying it manually through the visual review form in the app.
+
### Using Visual Reviews
After Visual Reviews has been [enabled](#configuring-visual-reviews) for the
@@ -231,25 +251,15 @@ the bottom-right corner.
To use the feedback form:
-1. Create a [personal access token](../../user/profile/personal_access_tokens.md)
- with the API scope selected.
-1. Paste the token into the feedback box when prompted. If you select **Remember me**,
- your browser stores the token so that future visits to Review Apps at the same URL
- will not require you to re-enter the token. To clear the token, click **Log out**.
1. Make a comment on the visual review. You can make use of all the
[Markdown annotations](../../user/markdown.md) that are also available in
merge request comments.
+1. Submit your feedback anonymously or add your name.
1. Finally, click **Send feedback**.
After you make and submit a comment in the visual review box, it will appear
automatically in the respective merge request.
-TIP: **Tip:**
-Because tokens must be entered on a per-domain basis and they can only be accessed
-once, different review apps will not remember your token. You can save the token
-to your password manager specifically for the purpose of Visual Reviews. This way,
-you will not need to create additional tokens for each merge request.
-
## Limitations
Review App limitations are the same as [environments limitations](../environments.md#limitations).
diff --git a/doc/ci/variables/README.md b/doc/ci/variables/README.md
index cff797549ba..384216fed2c 100644
--- a/doc/ci/variables/README.md
+++ b/doc/ci/variables/README.md
@@ -284,6 +284,8 @@ export CI_PROJECT_PATH="gitlab-org/gitlab-foss"
export CI_PROJECT_URL="https://example.com/gitlab-org/gitlab-foss"
export CI_REGISTRY="registry.example.com"
export CI_REGISTRY_IMAGE="registry.example.com/gitlab-org/gitlab-foss"
+export CI_REGISTRY_USER="gitlab-ci-token"
+export CI_REGISTRY_PASSWORD="longalfanumstring"
export CI_RUNNER_ID="10"
export CI_RUNNER_DESCRIPTION="my runner"
export CI_RUNNER_TAGS="docker, linux"
@@ -295,10 +297,8 @@ export CI_SERVER_VERSION="8.9.0"
export CI_SERVER_VERSION_MAJOR="8"
export CI_SERVER_VERSION_MINOR="9"
export CI_SERVER_VERSION_PATCH="0"
-export GITLAB_USER_ID="42"
export GITLAB_USER_EMAIL="user@example.com"
-export CI_REGISTRY_USER="gitlab-ci-token"
-export CI_REGISTRY_PASSWORD="longalfanumstring"
+export GITLAB_USER_ID="42"
```
### `.gitlab-ci.yml` defined variables
@@ -699,8 +699,8 @@ Running on runner-8a2f473d-project-1796893-concurrent-0 via runner-8a2f473d-mach
++ CI_JOB_ID=7046507
++ export CI_JOB_TOKEN=xxxxxxxxxxxxxxxxxxxx
++ CI_JOB_TOKEN=xxxxxxxxxxxxxxxxxxxx
-++ export CI_COMMIT_REF=dd648b2e48ce6518303b0bb580b2ee32fadaf045
-++ CI_COMMIT_REF=dd648b2e48ce6518303b0bb580b2ee32fadaf045
+++ export CI_COMMIT_SHA=dd648b2e48ce6518303b0bb580b2ee32fadaf045
+++ CI_COMMIT_SHA=dd648b2e48ce6518303b0bb580b2ee32fadaf045
++ export CI_COMMIT_BEFORE_SHA=dd648b2e48ce6518303b0bb580b2ee32fadaf045
++ CI_COMMIT_BEFORE_SHA=dd648b2e48ce6518303b0bb580b2ee32fadaf045
++ export CI_COMMIT_REF_NAME=master
diff --git a/doc/ci/variables/predefined_variables.md b/doc/ci/variables/predefined_variables.md
index b93ff62cc21..e25425b01ae 100644
--- a/doc/ci/variables/predefined_variables.md
+++ b/doc/ci/variables/predefined_variables.md
@@ -37,6 +37,7 @@ future GitLab releases.**
| `CI_COMMIT_REF_SLUG` | 9.0 | all | `$CI_COMMIT_REF_NAME` lowercased, shortened to 63 bytes, and with everything except `0-9` and `a-z` replaced with `-`. No leading / trailing `-`. Use in URLs, host names and domain names. |
| `CI_COMMIT_SHA` | 9.0 | all | The commit revision for which project is built |
| `CI_COMMIT_SHORT_SHA` | 11.7 | all | The first eight characters of `CI_COMMIT_SHA` |
+| `CI_COMMIT_BRANCH` | 12.6 | 0.5 | The commit branch name. Present only when building branches. |
| `CI_COMMIT_TAG` | 9.0 | 0.5 | The commit tag name. Present only when building tags. |
| `CI_COMMIT_TITLE` | 10.8 | all | The title of the commit - the full first line of the message |
| `CI_CONCURRENT_ID` | all | 11.10 | Unique ID of build execution within a single executor. |
@@ -84,7 +85,7 @@ future GitLab releases.**
| `CI_PAGES_URL` | 11.8 | all | URL to GitLab Pages-built pages. Always belongs to a subdomain of `CI_PAGES_DOMAIN`. |
| `CI_PIPELINE_ID` | 8.10 | all | The unique id of the current pipeline that GitLab CI uses internally |
| `CI_PIPELINE_IID` | 11.0 | all | The unique id of the current pipeline scoped to project |
-| `CI_PIPELINE_SOURCE` | 10.0 | all | Indicates how the pipeline was triggered. Possible options are: `push`, `web`, `trigger`, `schedule`, `api`, and `pipeline`. For pipelines created before GitLab 9.5, this will show as `unknown` |
+| `CI_PIPELINE_SOURCE` | 10.0 | all | Indicates how the pipeline was triggered. Possible options are: `push`, `web`, `trigger`, `schedule`, `api`, `pipeline` and `merge_request_event`. For pipelines created before GitLab 9.5, this will show as `unknown` |
| `CI_PIPELINE_TRIGGERED` | all | all | The flag to indicate that job was [triggered](../triggers/README.md) |
| `CI_PIPELINE_URL` | 11.1 | 0.5 | Pipeline details URL |
| `CI_PROJECT_DIR` | all | all | The full path where the repository is cloned and where the job is run. If the GitLab Runner `builds_dir` parameter is set, this variable is set relative to the value of `builds_dir`. For more information, see [Advanced configuration](https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-runners-section) for GitLab Runner. |
diff --git a/doc/ci/yaml/README.md b/doc/ci/yaml/README.md
index 73e976a6145..84e0bb873a7 100644
--- a/doc/ci/yaml/README.md
+++ b/doc/ci/yaml/README.md
@@ -75,6 +75,7 @@ cannot be used as job names**:
- `after_script`
- `variables`
- `cache`
+- `include`
### Using reserved keywords
@@ -134,7 +135,11 @@ The following job parameters can be defined inside a `default:` block:
- [`services`](#services)
- [`before_script`](#before_script-and-after_script)
- [`after_script`](#before_script-and-after_script)
+- [`tags`](#tags)
- [`cache`](#cache)
+- [`artifacts`](#artifacts)
+- [`retry`](#retry)
+- [`timeout`](#timeout)
- [`interruptible`](#interruptible)
In the following example, the `ruby:2.5` image is set as the default for all
@@ -182,6 +187,17 @@ that the YAML parser knows to interpret the whole thing as a string rather than
a "key: value" pair. Be careful when using special characters:
`:`, `{`, `}`, `[`, `]`, `,`, `&`, `*`, `#`, `?`, `|`, `-`, `<`, `>`, `=`, `!`, `%`, `@`, `` ` ``.
+If any of the script commands return an exit code different from zero, the job
+will fail and further commands will not be executed. This behavior can be avoided by
+storing the exit code in a variable:
+
+```yaml
+job:
+ script:
+ - false && true; exit_code=$?
+ - if [ $exit_code -ne 0 ]; then echo "Previous command failed"; fi;
+```
+
#### YAML anchors for `script`
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/23005) in GitLab 12.5.
@@ -189,7 +205,7 @@ a "key: value" pair. Be careful when using special characters:
You can use [YAML anchors](#anchors) with scripts, which makes it possible to
include a predefined list of commands in multiple jobs.
-Example:
+For example:
```yaml
.something: &something
@@ -262,13 +278,13 @@ For more information, see see [Available settings for `services`](../docker/usin
`before_script` is used to define a command that should be run before each
job, including deploy jobs, but after the restoration of any [artifacts](#artifacts).
-This must be an an array.
+This must be an array.
Scripts specified in `before_script` are concatenated with any scripts specified
in the main [`script`](#script), and executed together in a single shell.
`after_script` is used to define the command that will be run after each
-job, including failed ones. This must be an an array.
+job, including failed ones. This must be an array.
Scripts specified in `after_script` are executed in a new shell, separate from any
`before_script` or `script` scripts. As a result, they:
@@ -278,6 +294,10 @@ Scripts specified in `after_script` are executed in a new shell, separate from a
- Command aliases and variables exported in `script` scripts.
- Changes outside of the working tree (depending on the Runner executor), like
software installed by a `before_script` or `script` script.
+- Have a separate timeout, which is hard coded to 5 minutes. See
+ [related issue](https://gitlab.com/gitlab-org/gitlab-runner/issues/2716) for details.
+- Do not affect the job's exit code. If the `script` section succeeds and the
+ `after_script` times out or fails, the job will exit with code `0` (`Job Succeeded`).
It's possible to overwrite a globally defined `before_script` or `after_script`
if you set it per-job:
@@ -450,7 +470,9 @@ Jobs will run on your own Runners in parallel only if:
### `only`/`except` (basic)
NOTE: **Note:**
-These parameters will soon be [deprecated](https://gitlab.com/gitlab-org/gitlab/issues/27449) in favor of [`rules`](#rules) as it offers a more powerful syntax.
+The [`rules`](#rules) syntax is now the preferred method of setting job policies.
+`only` and `except` are [candidates for deprecation](https://gitlab.com/gitlab-org/gitlab/issues/27449),
+and may be removed in the future.
`only` and `except` are two parameters that set a job policy to limit when
jobs are created:
@@ -767,7 +789,7 @@ it is possible to define a job to be created based on files modified
in a merge request.
In order to deduce the correct base SHA of the source branch, we recommend combining
-this keyword with `only: merge_requests`. This way, file differences are correctly
+this keyword with `only: [merge_requests]`. This way, file differences are correctly
calculated from any further commits, thus all changes in the merge requests are properly
tested in pipelines.
@@ -789,7 +811,7 @@ either files in `service-one` directory or the `Dockerfile`, GitLab creates
and triggers the `docker build service one` job.
Note that if [pipelines for merge requests](../merge_request_pipelines/index.md) is
-combined with `only: change`, but `only: merge_requests` is omitted, there could be
+combined with `only: [change]`, but `only: [merge_requests]` is omitted, there could be
unwanted behavior.
For example:
@@ -1005,6 +1027,33 @@ Additional job configuration may be added to rules in the future. If something
useful isn't available, please
[open an issue](https://gitlab.com/gitlab-org/gitlab/issues).
+### `workflow:rules`
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/29654) in GitLab 12.5
+
+The top-level `workflow:` key applies to the entirety of a pipeline, and will
+determine whether or not a pipeline is created. It currently accepts a single
+`rules:` key that operates similarly to [`rules:` defined within jobs](#rules),
+enabling dynamic configuration of the pipeline.
+
+The configuration options currently available for `workflow:rules` are:​
+
+- [`if`](#rulesif): Define a rule.
+- [`when`](#when): May be set to `always` or `never` only. If not provided, the default value is `always`​.
+
+The list of `if` rules is evaluated until a single one is matched. If none
+match, the last `when` will be used:
+
+```yaml
+workflow:
+ rules:
+ - if: $CI_COMMIT_REF_NAME =~ /-wip$/
+ when: never
+ - if: $CI_COMMIT_TAG
+ when: never
+ - when: always
+```
+
### `tags`
`tags` is used to select specific Runners from the list of all Runners that are
@@ -1099,6 +1148,8 @@ failure.
1. `always` - execute job regardless of the status of jobs from prior stages.
1. `manual` - execute job manually (added in GitLab 8.10). Read about
[manual actions](#whenmanual) below.
+1. `delayed` - execute job after a certain period (added in GitLab 11.14).
+ Read about [delayed actions](#whendelayed) below.
For example:
@@ -1232,11 +1283,13 @@ Delayed job are for executing scripts after a certain period.
This is useful if you want to avoid jobs entering `pending` state immediately.
You can set the period with `start_in` key. The value of `start_in` key is an elapsed time in seconds, unless a unit is
-provided. `start_in` key must be less than or equal to one hour. Examples of valid values include:
+provided. `start_in` key must be less than or equal to one week. Examples of valid values include:
+- `'5'`
- `10 seconds`
- `30 minutes`
-- `1 hour`
+- `1 day`
+- `1 week`
When there is a delayed job in a stage, the pipeline will not progress until the delayed job has finished.
This means this keyword can also be used for inserting delays between different stages.
@@ -1397,6 +1450,11 @@ Also in the example, `GIT_STRATEGY` is set to `none` so that GitLab Runner wonâ€
try to check out the code after the branch is deleted when the `stop_review_app`
job is [automatically triggered](../environments.md#automatically-stopping-an-environment).
+NOTE: **Note:**
+The above example overwrites global variables. If your stop environment job depends
+on global variables, you can use [anchor variables](#yaml-anchors-for-variables) when setting the `GIT_STRATEGY`
+to change it without overriding the global variables.
+
The `stop_review_app` job is **required** to have the following keywords defined:
- `when` - [reference](#when)
@@ -1405,6 +1463,38 @@ The `stop_review_app` job is **required** to have the following keywords defined
- `stage` should be the same as the `review_app` in order for the environment
to stop automatically when the branch is deleted
+#### `environment:kubernetes`
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/27630) in GitLab 12.6.
+
+The `kubernetes` block is used to configure deployments to a
+[Kubernetes cluster](../../user/project/clusters/index.md) that is associated with your project.
+
+For example:
+
+```yaml
+deploy:
+ stage: deploy
+ script: make deploy-app
+ environment:
+ name: production
+ kubernetes:
+ namespace: production
+```
+
+This will set up the `deploy` job to deploy to the `production`
+environment, using the `production`
+[Kubernetes namespace](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/).
+
+For more information, see
+[Available settings for `kubernetes`](../environments.md#configuring-kubernetes-deployments).
+
+NOTE: **Note:**
+Kubernetes configuration is not supported for Kubernetes clusters
+that are [managed by GitLab](../../user/project/clusters/index.md#gitlab-managed-clusters).
+To follow progress on support for GitLab-managed clusters, see the
+[relevant issue](https://gitlab.com/gitlab-org/gitlab/issues/38054).
+
#### Dynamic environments
> - [Introduced][ce-6323] in GitLab 8.12 and GitLab Runner 1.6.
@@ -1460,8 +1550,10 @@ globally and all jobs will use that definition.
#### `cache:paths`
-Use the `paths` directive to choose which files or directories will be cached. You can only specify paths within your `$CI_PROJECT_DIR`.
-Wildcards can be used that follow the [glob](https://en.wikipedia.org/wiki/Glob_(programming)) patterns and [filepath.Match](https://golang.org/pkg/path/filepath/#Match).
+Use the `paths` directive to choose which files or directories will be cached. Paths
+are relative to the project directory (`$CI_PROJECT_DIR`) and cannot directly link outside it.
+Wildcards can be used that follow the [glob](https://en.wikipedia.org/wiki/Glob_(programming))
+patterns and [filepath.Match](https://golang.org/pkg/path/filepath/#Match).
Cache all files in `binaries` that end in `.apk` and the `.config` file:
@@ -1690,8 +1782,9 @@ be available for download in the GitLab UI.
#### `artifacts:paths`
-You can only use paths that are within the local working copy.
-Wildcards can be used that follow the [glob](https://en.wikipedia.org/wiki/Glob_(programming)) patterns and [filepath.Match](https://golang.org/pkg/path/filepath/#Match).
+Paths are relative to the project directory (`$CI_PROJECT_DIR`) and cannot directly
+link outside it. Wildcards can be used that follow the [glob](https://en.wikipedia.org/wiki/Glob_(programming))
+patterns and [filepath.Match](https://golang.org/pkg/path/filepath/#Match).
To restrict which jobs a specific job will fetch artifacts from, see [dependencies](#dependencies).
@@ -2203,11 +2296,11 @@ This example creates three paths of execution:
pipeline will be created with YAML error.
- We are temporarily limiting the maximum number of jobs that a single job can
need in the `needs:` array:
- - For GitLab.com, the limit is five. For more information, see our
+ - For GitLab.com, the limit is ten. For more information, see our
[infrastructure issue](https://gitlab.com/gitlab-com/gl-infra/infrastructure/issues/7541).
- For self-managed instances, the limit is:
- - Five by default (`ci_dag_limit_needs` feature flag is enabled).
- - 50 if the `ci_dag_limit_needs` feature flag is disabled.
+ - 10, if the `ci_dag_limit_needs` feature flag is enabled (default).
+ - 50, if the `ci_dag_limit_needs` feature flag is disabled.
- It is impossible for now to have `needs: []` (empty needs), the job always needs to
depend on something, unless this is the job in the first stage. However, support for
an empty needs array [is planned](https://gitlab.com/gitlab-org/gitlab/issues/30631).
@@ -2219,6 +2312,49 @@ This example creates three paths of execution:
- Related to the above, stages must be explicitly defined for all jobs
that have the keyword `needs:` or are referred to by one.
+#### Artifact downloads with `needs`
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/14311) in GitLab v12.6.
+
+When using `needs`, artifact downloads are controlled with `artifacts: true` or `artifacts: false`.
+The `dependencies` keyword should not be used with `needs`, as this is deprecated since GitLab 12.6.
+
+In the example below, the `rspec` job will download the `build_job` artifacts, while the
+`rubocop` job will not:
+
+```yaml
+build_job:
+ stage: build
+ artifacts:
+ paths:
+ - binaries/
+
+rspec:
+ stage: test
+ needs:
+ - job: build_job
+ artifacts: true
+
+rubocop:
+ stage: test
+ needs:
+ - job: build_job
+ artifacts: false
+```
+
+Additionally, in the three syntax examples below, the `rspec` job will download the artifacts
+from all three `build_jobs`, as `artifacts` is true for `build_job_1`, and will
+**default** to true for both `build_job_2` and `build_job_3`.
+
+```yaml
+rspec:
+ needs:
+ - job: build_job_1
+ artifacts: true
+ - job: build_job_2
+ - build_job_3
+```
+
### `coverage`
> [Introduced][ce-7447] in GitLab 8.17.
@@ -2344,12 +2480,13 @@ sequentially from `job_name 1/N` to `job_name N/N`.
For every job, `CI_NODE_INDEX` and `CI_NODE_TOTAL` [environment variables](../variables/README.md#predefined-environment-variables) are set.
-Marking a job to be run in parallel requires only a simple addition to your configuration file:
+Marking a job to be run in parallel requires adding `parallel` to your configuration
+file. For example:
-```diff
- test:
- script: rspec
-+ parallel: 5
+```yaml
+test:
+ script: rspec
+ parallel: 5
```
TIP: **Tip:**
@@ -2397,7 +2534,7 @@ triggers being used.
#### Simple `trigger` syntax
-The most simple way to configure a downstream trigger to use `trigger` keyword
+The simplest way to configure a downstream trigger is to use `trigger` keyword
with a full path to a downstream project:
```yaml
@@ -2429,7 +2566,7 @@ staging:
It is possible to mirror the status from a triggered pipeline:
-```
+```yaml
trigger_job:
trigger:
project: my/project
@@ -2438,7 +2575,7 @@ trigger_job:
It is possible to mirror the status from an upstream pipeline:
-```
+```yaml
upstream_bridge:
stage: test
needs:
@@ -3068,6 +3205,29 @@ which can be set in GitLab's UI.
Learn more about [variables and their priority][variables].
+#### YAML anchors for variables
+
+[YAML anchors](#anchors) can be used with `variables`, to easily repeat assignment
+of variables across multiple jobs. It can also enable more flexibility when a job
+requires a specific `variables` block that would otherwise override the global variables.
+
+In the example below, we will override the `GIT_STRATEGY` variable without affecting
+the use of the `SAMPLE_VARIABLE` variable:
+
+```yaml
+# global variables
+variables: &global-variables
+ SAMPLE_VARIABLE: sample_variable_value
+
+# a job that needs to set the GIT_STRATEGY variable, yet depend on global variables
+job_no_git_strategy:
+ stage: cleanup
+ variables:
+ <<: *global-variables
+ GIT_STRATEGY: none
+ script: echo $SAMPLE_VARIABLE
+```
+
#### Git strategy
> Introduced in GitLab 8.9 as an experimental feature. May change or be removed
@@ -3129,7 +3289,7 @@ There are three possible values: `none`, `normal`, and `recursive`:
- `normal` means that only the top-level submodules will be included. It is
equivalent to:
- ```
+ ```shell
git submodule sync
git submodule update --init
```
@@ -3139,7 +3299,7 @@ There are three possible values: `none`, `normal`, and `recursive`:
GitLab Runner with an executor not based on Docker, make sure the Git version
meets that requirement. It is equivalent to:
- ```
+ ```shell
git submodule sync --recursive
git submodule update --init --recursive
```
@@ -3400,7 +3560,7 @@ Read more about the various [YAML features](https://learnxinyminutes.com/docs/ya
If you want to temporarily 'disable' a job, rather than commenting out all the
lines where the job is defined:
-```
+```yaml
#hidden_job:
# script:
# - run test
@@ -3541,6 +3701,10 @@ test:mysql:
You can see that the hidden keys are conveniently used as templates.
+NOTE: **Note:**
+You can't use YAML anchors across multiple files when leveraging the [`include`](#include)
+feature. Anchors are only valid within the file they were defined in.
+
## Triggers
Triggers can be used to force a rebuild of a specific branch, tag or commit,
diff --git a/doc/development/README.md b/doc/development/README.md
index 66df6f46e86..3a972c4c588 100644
--- a/doc/development/README.md
+++ b/doc/development/README.md
@@ -69,6 +69,8 @@ description: 'Learn how to contribute to GitLab.'
- [Developing against interacting components or features](interacting_components.md)
- [File uploads](uploads.md)
- [Auto DevOps development guide](auto_devops.md)
+- [Mass Inserting Models](mass_insert.md)
+- [Cycle Analytics development guide](cycle_analytics.md)
## Performance guides
@@ -101,6 +103,10 @@ description: 'Learn how to contribute to GitLab.'
- [Swapping tables](swapping_tables.md)
- [Deleting migrations](deleting_migrations.md)
+### Debugging
+
+- Tracing the source of an SQL query using query comments with [Marginalia](database_query_comments.md)
+
### Best practices
- [Merge Request checklist](database_merge_request_checklist.md)
diff --git a/doc/development/api_graphql_styleguide.md b/doc/development/api_graphql_styleguide.md
index b0d94511c6e..1ef0b928820 100644
--- a/doc/development/api_graphql_styleguide.md
+++ b/doc/development/api_graphql_styleguide.md
@@ -1,5 +1,13 @@
# GraphQL API
+## How GitLab implements GraphQL
+
+We use the [graphql-ruby gem](https://graphql-ruby.org/) written by [Robert Mosolgo](https://github.com/rmosolgo/).
+
+All GraphQL queries are directed to a single endpoint
+([`app/controllers/graphql_controller.rb#execute`](https://gitlab.com/gitlab-org/gitlab/blob/master/app%2Fcontrollers%2Fgraphql_controller.rb)),
+which is exposed as an API endpoint at `/api/graphql`.
+
## Deep Dive
In March 2019, Nick Thomas hosted a [Deep Dive](https://gitlab.com/gitlab-org/create-stage/issues/1)
@@ -22,8 +30,31 @@ add a `HTTP_PRIVATE_TOKEN` header.
## Types
+We use a code-first schema, and we declare what type everything is in Ruby.
+
+For example, `app/graphql/types/issue_type.rb`:
+
+```ruby
+graphql_name 'Issue'
+
+field :iid, GraphQL::ID_TYPE, null: false
+field :title, GraphQL::STRING_TYPE, null: false
+
+# we also have a method here that we've defined, that extends `field`
+markdown_field :title_html, null: true
+field :description, GraphQL::STRING_TYPE, null: true
+markdown_field :description_html, null: true
+```
+
+We give each type a name (in this case `Issue`).
+
+The `iid`, `title` and `description` are _scalar_ GraphQL types.
+`iid` is a `GraphQL::ID_TYPE`, a special string type that signifies a unique ID.
+`title` and `description` are regular `GraphQL::STRING_TYPE` types.
+
When exposing a model through the GraphQL API, we do so by creating a
-new type in `app/graphql/types`.
+new type in `app/graphql/types`. You can also declare custom GraphQL data types
+for scalar data types (e.g. `TimeType`).
When exposing properties in a type, make sure to keep the logic inside
the definition as minimal as possible. Instead, consider moving any
@@ -293,6 +324,8 @@ If the:
- Resource is part of a collection, the collection will be filtered to
exclude the objects that the user's authorization checks failed against.
+Also see [authorizing resources in a mutation](#authorizing-resources).
+
TIP: **Tip:**
Try to load only what the currently authenticated user is allowed to
view with our existing finders first, without relying on authorization
@@ -391,6 +424,11 @@ end
## Resolvers
+We define how the application serves the response using _resolvers_
+stored in the `app/graphql/resolvers` directory.
+The resolver provides the actual implementation logic for retrieving
+the objects in question.
+
To find objects to display in a field, we can add resolvers to
`app/graphql/resolvers`.
@@ -548,7 +586,7 @@ found, we should raise a
`Gitlab::Graphql::Errors::ResourceNotAvailable` error. Which will be
correctly rendered to the clients.
-## Gitlab's custom scalars
+## GitLab's custom scalars
### `Types::TimeType`
@@ -618,7 +656,61 @@ it 'returns a successful response' do
end
```
+## Notes about Query flow and GraphQL infrastructure
+
+GitLab's GraphQL infrastructure can be found in `lib/gitlab/graphql`.
+
+[Instrumentation](https://graphql-ruby.org/queries/instrumentation.html) is functionality
+that wraps around a query being executed. It is implemented as a module that uses the `Instrumentation` class.
+
+Example: `Present`
+
+```ruby
+module Present
+ #... some code above...
+
+ def self.use(schema_definition)
+ schema_definition.instrument(:field, Instrumentation.new)
+ end
+end
+```
+
+A [Query Analyzer](https://graphql-ruby.org/queries/analysis.html#analyzer-api) contains a series
+of callbacks to validate queries before they are executed. Each field can pass through
+the analyzer, and the final value is also available to you.
+
+[Multiplex queries](https://graphql-ruby.org/queries/multiplex.html) enable
+multiple queries to be sent in a single request. This reduces the number of requests sent to the server.
+(there are custom Multiplex Query Analyzers and Multiplex Instrumentation provided by graphql-ruby).
+
+### Query limits
+
+Queries and mutations are limited by depth, complexity, and recursion
+to protect server resources from overly ambitious or malicious queries.
+These values can be set as defaults and overridden in specific queries as needed.
+The complexity values can be set per object as well, and the final query complexity is
+evaluated based on how many objects are being returned. This is useful
+for objects that are expensive (e.g. requiring Gitaly calls).
+
+For example, a conditional complexity method in a resolver:
+
+```ruby
+def self.resolver_complexity(args, child_complexity:)
+ complexity = super
+ complexity += 2 if args[:labelName]
+
+ complexity
+end
+```
+
+More about complexity:
+[graphql-ruby docs](https://graphql-ruby.org/queries/complexity_and_depth.html)
+
## Documentation and Schema
+Our schema is located at `app/graphql/gitlab_schema.rb`.
+See the [schema reference](../api/graphql/reference/index.md) for details.
+
+This generated GraphQL documentation needs to be updated when the schema changes.
For information on generating GraphQL documentation and schema files, see
-[Rake tasks related to GraphQL](rake_tasks.md#update-graphql-documentation-and-schema-definitions).
+[updating the schema documentation](rake_tasks.md#update-graphql-documentation-and-schema-definitions).
diff --git a/doc/development/architecture.md b/doc/development/architecture.md
index b579f812d99..eff83da523b 100644
--- a/doc/development/architecture.md
+++ b/doc/development/architecture.md
@@ -116,6 +116,7 @@ graph TB
- âš™ - Requires additional configuration, or GitLab Managed Apps
- ⤓ - Manual installation required
- ⌠- Not supported or no instructions available
+- N/A - Not applicable
Component statuses are linked to configuration documentation for each component.
@@ -144,7 +145,7 @@ Component statuses are linked to configuration documentation for each component.
| [Postgres Exporter](#postgres-exporter) | Prometheus endpoint with PostgreSQL metrics | [✅][postgres-exporter-omnibus] | [✅][postgres-exporter-charts] | [✅][postgres-exporter-charts] | [✅](https://about.gitlab.com/handbook/engineering/monitoring/) | ⌠| ⌠| CE & EE |
| [PgBouncer Exporter](#pgbouncer-exporter) | Prometheus endpoint with PgBouncer metrics | [âš™][pgbouncer-exporter-omnibus] | [âŒ][pgbouncer-exporter-charts] | [âŒ][pgbouncer-exporter-charts] | [✅](https://about.gitlab.com/handbook/engineering/monitoring/) | ⌠| ⌠| CE & EE |
| [GitLab Exporter](#gitlab-exporter) | Generates a variety of GitLab metrics | [✅][gitlab-exporter-omnibus] | [✅][gitlab-exporter-charts] | [✅][gitlab-exporter-charts] | [✅](https://about.gitlab.com/handbook/engineering/monitoring/) | ⌠| ⌠| CE & EE |
-| [Node Exporter](#node-exporter) | Prometheus endpoint with system metrics | [✅][node-exporter-omnibus] | [âŒ][node-exporter-charts] | [âŒ][node-exporter-charts] | [✅](https://about.gitlab.com/handbook/engineering/monitoring/) | ⌠| ⌠| CE & EE |
+| [Node Exporter](#node-exporter) | Prometheus endpoint with system metrics | [✅][node-exporter-omnibus] | [N/A][node-exporter-charts] | [N/A][node-exporter-charts] | [✅](https://about.gitlab.com/handbook/engineering/monitoring/) | ⌠| ⌠| CE & EE |
| [Mattermost](#mattermost) | Open-source Slack alternative | [⚙][mattermost-omnibus] | [⤓][mattermost-charts] | [⤓][mattermost-charts] | [⤓](../user/project/integrations/mattermost.md) | ⌠| ⌠| CE & EE |
| [MinIO](#minio) | Object storage service | [⤓][minio-omnibus] | [✅][minio-charts] | [✅][minio-charts] | [✅](https://about.gitlab.com/handbook/engineering/infrastructure/production-architecture/#storage-architecture) | ⌠| [⚙][minio-gdk] | CE & EE |
| [Runner](#gitlab-runner) | Executes GitLab CI jobs | [⤓][runner-omnibus] | [✅][runner-charts] | [⚙][runner-charts] | [✅](../user/gitlab_com/index.md#shared-runners) | [⚙][runner-source] | [⚙][runner-gdk] | CE & EE |
diff --git a/doc/development/background_migrations.md b/doc/development/background_migrations.md
index 0a08360b727..8a1db615022 100644
--- a/doc/development/background_migrations.md
+++ b/doc/development/background_migrations.md
@@ -10,16 +10,16 @@ migrations automatically reschedule themselves for a later point in time.
## When To Use Background Migrations
-> **Note:**
-> When adding background migrations _you must_ make sure they are announced in the
-> monthly release post along with an estimate of how long it will take to complete
-> the migrations.
-
In the vast majority of cases you will want to use a regular Rails migration
-instead. Background migrations should _only_ be used when migrating _data_ in
+instead. Background migrations should be used when migrating _data_ in
tables that have so many rows this process would take hours when performed in a
regular Rails migration.
+Background migrations _may_ also be used when executing numerous single-row queries
+for every item on a large dataset. Typically, for single-record patterns, runtime is
+largely dependent on the size of the dataset, hence it should be split accordingly
+and put into background migrations.
+
Background migrations _may not_ be used to perform schema migrations, they
should only be used for data migrations.
@@ -29,6 +29,11 @@ Some examples where background migrations can be useful:
- Populating one column based on JSON stored in another column.
- Migrating data that depends on the output of external services (e.g. an API).
+> **Note:**
+> If the background migration is part of an important upgrade, make sure it's announced
+> in the release post. Discuss with your Project Manager if you're not sure the migration falls
+> into this category.
+
## Isolation
Background migrations must be isolated and can not use application code (e.g.
diff --git a/doc/development/build_test_package.md b/doc/development/build_test_package.md
index f58ac79b6f4..d478d6e1653 100644
--- a/doc/development/build_test_package.md
+++ b/doc/development/build_test_package.md
@@ -9,16 +9,16 @@ that will create:
- A deb package for Ubuntu 16.04, available as a build artifact, and
- A docker image, which is pushed to [Omnibus GitLab's container
registry](https://gitlab.com/gitlab-org/omnibus-gitlab/container_registry)
- (images titled `gitlab-foss` and `gitlab-ee` respectively and image tag is the
+ (images titled `gitlab-ce` and `gitlab-ee` respectively and image tag is the
commit which triggered the pipeline).
When you push a commit to either the GitLab CE or GitLab EE project, the
pipeline for that commit will have a `build-package` manual action you can
trigger.
-![Manual actions](img/trigger_ss1.png)
+![Manual actions](img/build_package_v12_6.png)
-![Build package manual action](img/trigger_ss2.png)
+![Build package manual action](img/trigger_build_package_v12_6.png)
## Specifying versions of components
diff --git a/doc/development/changelog.md b/doc/development/changelog.md
index af2c540cca5..f693267b554 100644
--- a/doc/development/changelog.md
+++ b/doc/development/changelog.md
@@ -33,7 +33,8 @@ the `author` field. GitLab team members **should not**.
## What warrants a changelog entry?
-- Any change that introduces a database migration **must** have a changelog entry.
+- Any change that introduces a database migration, whether it's regular, post,
+ or data migration, **must** have a changelog entry.
- Any user-facing change **should** have a changelog entry. Example: "GitLab now
uses system fonts for all text."
- Performance improvements **should** have a changelog entry.
@@ -43,8 +44,8 @@ the `author` field. GitLab team members **should not**.
- Any docs-only changes **should not** have a changelog entry.
- Any change behind a feature flag **should not** have a changelog entry. The
entry should be added [in the merge request removing the feature flags](feature_flags/development.md).
- If the change includes a database migration, there should be a changelog entry
- for the migration change.
+ If the change includes a database migration (regular, post, or data migration),
+ there should be a changelog entry for the migration change.
- A fix for a regression introduced and then fixed in the same release (i.e.,
fixing a bug introduced during a monthly release candidate) **should not**
have a changelog entry.
diff --git a/doc/development/chatops_on_gitlabcom.md b/doc/development/chatops_on_gitlabcom.md
index 456dd1d4b4b..90b9cca54ac 100644
--- a/doc/development/chatops_on_gitlabcom.md
+++ b/doc/development/chatops_on_gitlabcom.md
@@ -14,7 +14,7 @@ tasks such as:
To request access to Chatops on GitLab.com:
1. Log into <https://ops.gitlab.net/users/sign_in> **using the same username** as for GitLab.com (you may have to rename it).
-1. Ask [a project member in the `chatops` project](https://ops.gitlab.net/gitlab-com/chatops/-/project_members) to add you by running `/chatops run member add <username> gitlab-com/chatops --ops`.
+1. Ask in the [#production](https://gitlab.slack.com/messages/production) channel to add you by running `/chatops run member add <username> gitlab-com/chatops --ops`.
## See also
diff --git a/doc/development/code_review.md b/doc/development/code_review.md
index 77c57bb332d..326ac7b3a37 100644
--- a/doc/development/code_review.md
+++ b/doc/development/code_review.md
@@ -181,6 +181,10 @@ vulnerabilities must be either empty or containing:
Maintainers should **never** dismiss vulnerabilities to "empty" the list,
without duly verifying them.
+Note that certain Merge Requests may target a stable branch. These are rare
+events. These types of Merge Requests cannot be merged by the Maintainer.
+Instead these should be sent to the [Release Manager](https://about.gitlab.com/community/release-managers/).
+
## Best practices
### Everyone
diff --git a/doc/development/contributing/issue_workflow.md b/doc/development/contributing/issue_workflow.md
index f32400d44a2..a385a7dc83a 100644
--- a/doc/development/contributing/issue_workflow.md
+++ b/doc/development/contributing/issue_workflow.md
@@ -40,17 +40,17 @@ scheduling into milestones. Labelling is a task for everyone.
Most issues will have labels for at least one of the following:
-- Type: ~feature, ~bug, ~backstage, etc.
-- Stage: ~"devops::plan", ~"devops::create", etc.
-- Group: ~"group::source code", ~"group::knowledge", ~"group::editor", etc.
-- Category: ~"Category:Code Analytics", ~"Category:DevOps Score", ~"Category:Templates", etc.
-- Feature: ~wiki, ~ldap, ~api, ~issues, ~"merge requests", etc.
-- Department: ~UX, ~Quality
-- Team: ~"Technical Writing", ~Delivery
-- Specialization: ~frontend, ~backend, ~documentation
-- Release Scoping: ~Deliverable, ~Stretch, ~"Next Patch Release"
-- Priority: ~P1, ~P2, ~P3, ~P4
-- Severity: ~S1, ~S2, ~S3, ~S4
+- Type: `~feature`, `~bug`, `~backstage`, etc.
+- Stage: `~"devops::plan"`, `~"devops::create"`, etc.
+- Group: `~"group::source code"`, `~"group::knowledge"`, `~"group::editor"`, etc.
+- Category: `~"Category:Code Analytics"`, `~"Category:DevOps Score"`, `~"Category:Templates"`, etc.
+- Feature: `~wiki`, `~ldap`, `~api`, `~issues`, `~"merge requests"`, etc.
+- Department: `~UX`, `~Quality`
+- Team: `~"Technical Writing"`, `~Delivery`
+- Specialization: `~frontend`, `~backend`, `~documentation`
+- Release Scoping: `~Deliverable`, `~Stretch`, `~"Next Patch Release"`
+- Priority: `~P1`, `~P2`, `~P3`, `~P4`
+- Severity: ~`S1`, `~S2`, `~S3`, `~S4`
All labels, their meaning and priority are defined on the
[labels page](https://gitlab.com/gitlab-org/gitlab-foss/-/labels).
@@ -210,7 +210,7 @@ If you are an expert in a particular area, it makes it easier to find issues to
work on. You can also subscribe to those labels to receive an email each time an
issue is labeled with a feature label corresponding to your expertise.
-Examples of feature labels are ~wiki, ~ldap, ~api, ~issues, ~"merge requests" etc.
+Examples of feature labels are `~wiki`, `~ldap`, `~api`, `~issues`, `~"merge requests"` etc.
#### Naming and color convention
diff --git a/doc/development/contributing/merge_request_workflow.md b/doc/development/contributing/merge_request_workflow.md
index 510e90524ed..e839ae0ea3a 100644
--- a/doc/development/contributing/merge_request_workflow.md
+++ b/doc/development/contributing/merge_request_workflow.md
@@ -248,3 +248,16 @@ request:
1. The [GitLab Development Kit](https://gitlab.com/gitlab-org/gitlab-development-kit).
1. The [CI environment preparation](https://gitlab.com/gitlab-org/gitlab/blob/master/scripts/prepare_build.sh).
1. The [Omnibus package creator](https://gitlab.com/gitlab-org/omnibus-gitlab).
+
+### Incremental improvements
+
+We allow engineering time to fix small problems (with or without an
+issue) that are incremental improvements, such as:
+
+1. Unprioritized bug fixes (e.g. [Banner alerting of project move is
+showing up everywhere](https://gitlab.com/gitlab-org/gitlab/merge_requests/18985))
+1. Documentation improvements
+1. Rubocop or Code Quality improvements
+
+Tag a merge request with ~"Stuff that should Just Work" to track work in
+this area.
diff --git a/doc/development/contributing/style_guides.md b/doc/development/contributing/style_guides.md
index f825b3d7088..d53675cc716 100644
--- a/doc/development/contributing/style_guides.md
+++ b/doc/development/contributing/style_guides.md
@@ -40,8 +40,8 @@ This saves you time as you don't have to wait for the same errors to be detected
[rss-source]: https://github.com/rubocop-hq/ruby-style-guide/blob/master/README.adoc#source-code-layout
[rss-naming]: https://github.com/rubocop-hq/ruby-style-guide/blob/master/README.adoc#naming-conventions
[doc-guidelines]: ../documentation/index.md "Documentation guidelines"
-[js-styleguide]: ../fe_guide/style_guide_js.md "JavaScript styleguide"
-[scss-styleguide]: ../fe_guide/style_guide_scss.md "SCSS styleguide"
+[js-styleguide]: ../fe_guide/style/javascript.md "JavaScript styleguide"
+[scss-styleguide]: ../fe_guide/style/scss.md "SCSS styleguide"
[newlines-styleguide]: ../newlines_styleguide.md "Newlines styleguide"
[testing]: ../testing_guide/index.md
[us-english]: https://en.wikipedia.org/wiki/American_English
diff --git a/doc/development/cycle_analytics.md b/doc/development/cycle_analytics.md
new file mode 100644
index 00000000000..284645cdae7
--- /dev/null
+++ b/doc/development/cycle_analytics.md
@@ -0,0 +1,246 @@
+# Cycle Analytics development guide
+
+Cycle analytics calculates the time between two arbitrary events recorded on domain objects and provides aggregated statistics about the duration.
+
+## Stage
+
+During development, events occur that move issues and merge requests through different stages of progress until they are considered finished. These stages can be expressed with the `Stage` model.
+
+Example stage:
+
+- Name: Development
+- Start event: Issue created
+- End event: Issue first mentioned in commit
+- Parent: `Group: gitlab-org`
+
+### Events
+
+Events are the smallest building blocks of the cycle analytics feature. A stage consists of two events:
+
+- Start
+- End
+
+These events play a key role in the duration calculation.
+
+Formula: `duration = end_event_time - start_event_time`
+
+To make the duration calculation flexible, each `Event` is implemented as a separate class. They're responsible for defining a timestamp expression that will be used in the calculation query.
+
+#### Implementing an `Event` class
+
+There are a few methods that are required to be implemented, the `StageEvent` base class describes them in great detail. The most important ones are:
+
+- `object_type`
+- `timestamp_projection`
+
+The `object_type` method defines which domain object will be queried for the calculation. Currently two models are allowed:
+
+- `Issue`
+- `MergeRequest`
+
+For the duration calculation the `timestamp_projection` method will be used.
+
+```ruby
+def timestamp_projection
+ # your timestamp expression comes here
+end
+
+# event will use the issue creation time in the duration calculation
+def timestamp_projection
+ Issue.arel_table[:created_at]
+end
+```
+
+NOTE: **Note:**
+More complex expressions are also possible (e.g. using `COALESCE`). Look at the existing event classes for examples.
+
+In some cases, defining the `timestamp_projection` method is not enough. The calculation query should know which table contains the timestamp expression. Each `Event` class is responsible for making modifications to the calculation query to make the `timestamp_projection` work. This usually means joining an additional table.
+
+Example for joining the `issue_metrics` table and using the `first_mentioned_in_commit_at` column as the timestamp expression:
+
+```ruby
+def object_type
+ Issue
+end
+
+def timestamp_projection
+ IssueMetrics.arel_table[:first_mentioned_in_commit_at]
+end
+
+def apply_query_customization(query)
+ # in this case the query attribute will be based on the Issue model: `Issue.where(...)`
+ query.joins(:metrics)
+end
+```
+
+### Validating start and end events
+
+Some start/end event pairs are not "compatible" with each other. For example:
+
+- "Issue created" to "Merge Request created": The event classes are defined on different domain models, the `object_type` method is different.
+- "Issue closed" to "Issue created": Issue must be created first before it can be closed.
+- "Issue closed" to "Issue closed": Duration is always 0.
+
+The `StageEvents` module describes the allowed `start_event` and `end_event` pairings (`PAIRING_RULES` constant). If a new event is added, it needs to be registered in this module.
+​To add a new event:​
+
+1. Add an entry in `ENUM_MAPPING` with a unique number, it'll be used in the `Stage` model as `enum`.
+1. Define which events are compatible with the event in the `PAIRING_RULES` hash.
+
+Supported start/end event pairings:
+
+```mermaid
+graph LR;
+ IssueCreated --> IssueClosed;
+ IssueCreated --> IssueFirstAddedToBoard;
+ IssueCreated --> IssueFirstAssociatedWithMilestone;
+ IssueCreated --> IssueFirstMentionedInCommit;
+ IssueCreated --> IssueLastEdited;
+ IssueCreated --> IssueLabelAdded;
+ IssueCreated --> IssueLabelRemoved;
+ MergeRequestCreated --> MergeRequestMerged;
+ MergeRequestCreated --> MergeRequestClosed;
+ MergeRequestCreated --> MergeRequestFirstDeployedToProduction;
+ MergeRequestCreated --> MergeRequestLastBuildStarted;
+ MergeRequestCreated --> MergeRequestLastBuildFinished;
+ MergeRequestCreated --> MergeRequestLastEdited;
+ MergeRequestCreated --> MergeRequestLabelAdded;
+ MergeRequestCreated --> MergeRequestLabelRemoved;
+ MergeRequestLastBuildStarted --> MergeRequestLastBuildFinished;
+ MergeRequestLastBuildStarted --> MergeRequestClosed;
+ MergeRequestLastBuildStarted --> MergeRequestFirstDeployedToProduction;
+ MergeRequestLastBuildStarted --> MergeRequestLastEdited;
+ MergeRequestLastBuildStarted --> MergeRequestMerged;
+ MergeRequestLastBuildStarted --> MergeRequestLabelAdded;
+ MergeRequestLastBuildStarted --> MergeRequestLabelRemoved;
+ MergeRequestMerged --> MergeRequestFirstDeployedToProduction;
+ MergeRequestMerged --> MergeRequestClosed;
+ MergeRequestMerged --> MergeRequestFirstDeployedToProduction;
+ MergeRequestMerged --> MergeRequestLastEdited;
+ MergeRequestMerged --> MergeRequestLabelAdded;
+ MergeRequestMerged --> MergeRequestLabelRemoved;
+ IssueLabelAdded --> IssueLabelAdded;
+ IssueLabelAdded --> IssueLabelRemoved;
+ IssueLabelAdded --> IssueClosed;
+ IssueLabelRemoved --> IssueClosed;
+ IssueFirstAddedToBoard --> IssueClosed;
+ IssueFirstAddedToBoard --> IssueFirstAssociatedWithMilestone;
+ IssueFirstAddedToBoard --> IssueFirstMentionedInCommit;
+ IssueFirstAddedToBoard --> IssueLastEdited;
+ IssueFirstAddedToBoard --> IssueLabelAdded;
+ IssueFirstAddedToBoard --> IssueLabelRemoved;
+ IssueFirstAssociatedWithMilestone --> IssueClosed;
+ IssueFirstAssociatedWithMilestone --> IssueFirstAddedToBoard;
+ IssueFirstAssociatedWithMilestone --> IssueFirstMentionedInCommit;
+ IssueFirstAssociatedWithMilestone --> IssueLastEdited;
+ IssueFirstAssociatedWithMilestone --> IssueLabelAdded;
+ IssueFirstAssociatedWithMilestone --> IssueLabelRemoved;
+ IssueFirstMentionedInCommit --> IssueClosed;
+ IssueFirstMentionedInCommit --> IssueFirstAssociatedWithMilestone;
+ IssueFirstMentionedInCommit --> IssueFirstAddedToBoard;
+ IssueFirstMentionedInCommit --> IssueLastEdited;
+ IssueFirstMentionedInCommit --> IssueLabelAdded;
+ IssueFirstMentionedInCommit --> IssueLabelRemoved;
+ IssueClosed --> IssueLastEdited;
+ IssueClosed --> IssueLabelAdded;
+ IssueClosed --> IssueLabelRemoved;
+ MergeRequestClosed --> MergeRequestFirstDeployedToProduction;
+ MergeRequestClosed --> MergeRequestLastEdited;
+ MergeRequestClosed --> MergeRequestLabelAdded;
+ MergeRequestClosed --> MergeRequestLabelRemoved;
+ MergeRequestFirstDeployedToProduction --> MergeRequestLastEdited;
+ MergeRequestFirstDeployedToProduction --> MergeRequestLabelAdded;
+ MergeRequestFirstDeployedToProduction --> MergeRequestLabelRemoved;
+ MergeRequestLastBuildFinished --> MergeRequestClosed;
+ MergeRequestLastBuildFinished --> MergeRequestFirstDeployedToProduction;
+ MergeRequestLastBuildFinished --> MergeRequestLastEdited;
+ MergeRequestLastBuildFinished --> MergeRequestMerged;
+ MergeRequestLastBuildFinished --> MergeRequestLabelAdded;
+ MergeRequestLastBuildFinished --> MergeRequestLabelRemoved;
+ MergeRequestLabelAdded --> MergeRequestLabelAdded;
+ MergeRequestLabelAdded --> MergeRequestLabelRemoved;
+ MergeRequestLabelRemoved --> MergeRequestLabelAdded;
+ MergeRequestLabelRemoved --> MergeRequestLabelRemoved;
+```
+
+### Parent
+
+Teams and organizations might define their own way of building software, thus stages can be completely different. For each stage, a parent object needs to be defined.
+
+Currently supported parents:
+
+- `Project`
+- `Group`
+
+#### How parent relationship it work
+
+1. User navigates to the cycle analytics page.
+1. User selects a group.
+1. Backend loads the defined stages for the selected group.
+1. Additions and modifications to the stages will be persisted within the selected group only.
+
+### Default stages
+
+The [original implementation](https://gitlab.com/gitlab-org/gitlab/issues/847) of cycle analytics defined 7 stages. These stages are always available for each parent, however altering these stages is not possible.
+​
+To make things efficient and reduce the number of records created, the default stages are expressed as in-memory objects (not persisted). When the user creates a custom stage for the first time, all the stages will be persisted. This behaviour is implemented in the cycle analytics service objects.
+​
+The reason for this was that we'd like to add the abilities to hide and order stages later on.
+
+## Data Collector
+
+`DataCollector` is the central point where the data will be queried from the database. The class always operates on a single stage and consists of the following components:
+
+- `BaseQueryBuilder`:
+ - Responsible for composing the initial query.
+ - Deals with `Stage` specific configuration: events and their query customizations.
+ - Parameters coming from the UI: date ranges.
+- `Median`: Calculates the median duration for a stage using the query from `BaseQueryBuilder`.
+- `RecordsFetcher`: Loads relevant records for a stage using the query from `BaseQueryBuilder` and specific `Finder` classes to apply visibility rules.
+- `DataForDurationChart`: Loads calculated durations with the finish time (end event timestamp) for the scatterplot chart.
+
+For a new calculation or a query, implement it as a new method call in the `DataCollector` class.
+
+## Database query
+
+Structure of the database query:
+
+```sql
+SELECT (customized by: Median or RecordsFetcher or DataForDurationChart)
+FROM OBJECT_TYPE (Issue or MergeRequest)
+INNER JOIN (several JOIN statements, depending on the events)
+WHERE
+ (Filter by the PARENT model, example: filter Issues from Project A)
+ (Date range filter based on the OBJECT_TYPE.created_at)
+ (Check if the START_EVENT is earlier than END_EVENT, preventing negative duration)
+```
+
+Structure of the `SELECT` statement for `Median`:
+
+```sql
+SELECT (calculate median from START_EVENT_TIME-END_EVENT_TIME)
+```
+
+Structure of the `SELECT` statement for `DataForDurationChart`:
+
+```sql
+SELECT (START_EVENT_TIME-END_EVENT_TIME) as duration, END_EVENT.timestamp
+```
+
+## High-level overview
+
+- Rails Controller (`Analytics::CycleAnalytics` module): Cycle analytics exposes its data via JSON endpoints, implemented within the `analytics` workspace. Configuring the stages are also implements JSON endpoints (CRUD).
+- Services (`Analytics::CycleAnalytics` module): All `Stage` related actions will be delegated to respective service objects.
+- Models (`Analytics::CycleAnalytics` module): Models are used to persist the `Stage` objects `ProjectStage` and `GroupStage`.
+- Feature classes (`Gitlab::Analytics::CycleAnalytics` module):
+ - Responsible for composing queries and define feature specific busines logic.
+ - `DataCollector`, `Event`, `StageEvents`, etc.
+
+## Testing
+
+Since we have a lots of events and possible pairings, testing each pairing is not possible. The rule is to have at least one test case using an `Event` class.
+
+Writing a test case for a stage using a new `Event` can be challenging since data must be created for both events. To make this a bit simpler, each test case must be implemented in the `data_collector_spec.rb` where the stage is tested through the `DataCollector`. Each test case will be turned into multiple tests, covering the following cases:
+
+- Different parents: `Group` or `Project`
+- Different calculations: `Median`, `RecordsFetcher` or `DataForDurationChart`
diff --git a/doc/development/dangerbot.md b/doc/development/dangerbot.md
index 0b2e2b43512..40eb4294617 100644
--- a/doc/development/dangerbot.md
+++ b/doc/development/dangerbot.md
@@ -95,6 +95,12 @@ through in CI. However, you can speed these cycles up somewhat by emptying the
`.gitlab/ci/rails.gitlab-ci.yml` file in your merge request. Just don't forget
to revert the change before merging!
+To enable the Dangerfile on another existing GitLab project, run the following extra steps, based on [this procedure](https://danger.systems/guides/getting_started.html#creating-a-bot-account-for-danger-to-use):
+
+1. Add `@gitlab-bot` to the project as a `reporter`.
+1. Add the `@gitlab-bot`'s `GITLAB_API_PRIVATE_TOKEN` value as a value for a new CI/CD
+ variable named `DANGER_GITLAB_API_TOKEN`.
+
You should add the `~Danger bot` label to the merge request before sending it
for review.
diff --git a/doc/development/database_query_comments.md b/doc/development/database_query_comments.md
new file mode 100644
index 00000000000..77943f2b261
--- /dev/null
+++ b/doc/development/database_query_comments.md
@@ -0,0 +1,56 @@
+# Database query comments with Marginalia
+
+The [Marginalia gem](https://github.com/basecamp/marginalia) is used to add
+query comments containing application related context information to PostgreSQL
+queries generated by ActiveRecord.
+
+It is very useful for tracing problematic queries back to the application source.
+
+An engineer during an on-call incident will have the full context of a query
+and its application source from the comments.
+
+## Metadata information in comments
+
+Queries generated from **Rails** include the following metadata in comments:
+
+- `application`
+- `controller`
+- `action`
+- `correlation_id`
+- `line`
+
+Queries generated from **Sidekiq** workers will include the following metadata
+in comments:
+
+- `application`
+- `jid`
+- `job_class`
+- `correlation_id`
+- `line`
+
+Examples of queries with comments as observed in `development.log`:
+
+1. Rails:
+
+ ```sql
+ SELECT "project_features".* FROM "project_features" WHERE "project_features"."project_id" = $1 LIMIT $2 [["project_id", 5], ["LIMIT", 1]] /*application:web,controller:jobs,action:trace,correlation_id:rYF4mey9CH3,line:/app/policies/project_policy.rb:504:in `feature_available?'*/
+ ```
+
+1. Sidekiq:
+
+ ```sql
+ SELECT "ci_pipelines".* FROM "ci_pipelines" WHERE "ci_pipelines"."id" = $1 LIMIT $2 [["id", 64], ["LIMIT", 1]] /*application:sidekiq,jid:e7d6668a39a991e323009833,job_class:ExpireJobCacheWorker,correlation_id:rYF4mey9CH3,line:/app/workers/expire_job_cache_worker.rb:14:in `perform'*/
+ ```
+
+## Enable/Disable the feature
+
+Enabling or disabling the feature requires a **restart/SIGHUP** of the Web and
+Sidekiq workers, as the feature flag's state is memoized upon starting up.
+
+The `feature_flag` for this feature is **disabled** by default. You can enable
+or disable it with:
+
+```ruby
+Feature.enable(:marginalia)
+Feature.disable(:marginalia)
+```
diff --git a/doc/development/database_review.md b/doc/development/database_review.md
index f3c19002417..b1c3ed47976 100644
--- a/doc/development/database_review.md
+++ b/doc/development/database_review.md
@@ -101,11 +101,15 @@ and details for a database reviewer:
- Check consistency with `db/schema.rb` and that migrations are [reversible](migration_style_guide.md#reversibility)
- Check queries timing (If any): Queries executed in a migration
need to fit comfortably within `15s` - preferably much less than that - on GitLab.com.
+ - For column removals, make sure the column has been [ignored in a previous release](what_requires_downtime.md#dropping-columns)
- Check [background migrations](background_migrations.md):
- - Establish a time estimate for execution on GitLab.com.
- - They should only be used when migrating data in larger tables.
- - If a single `update` is below than `1s` the query can be placed
+ - Establish a time estimate for execution on GitLab.com. For historical purposes,
+ it's highly recommended to include this estimation on the merge request description.
+ - If a single `update` is below than `1s` the query can be placed
directly in a regular migration (inside `db/migrate`).
+ - Background migrations are normally used, but not limited to:
+ - Migrating data in larger tables.
+ - Making numerous SQL queries per record in a dataset.
- Review queries (for example, make sure batch sizes are fine)
- Because execution time can be longer than for a regular migration,
it's suggested to treat background migrations as post migrations:
diff --git a/doc/development/documentation/index.md b/doc/development/documentation/index.md
index 7d575e9b0b1..61e42ecfe83 100644
--- a/doc/development/documentation/index.md
+++ b/doc/development/documentation/index.md
@@ -30,6 +30,23 @@ The source of the documentation exists within the codebase of each GitLab applic
Documentation issues and merge requests are part of their respective repositories and all have the label `Documentation`.
+### Branch naming
+
+The [CI pipeline for the main GitLab project](../pipelines.md) is configured to automatically
+run only the jobs that match the type of contribution. If your contribution contains
+**only** documentation changes, then only documentation-related jobs will be run, and
+the pipeline will complete much faster than a code contribution.
+
+If you are submitting documentation-only changes to Runner, Omnibus, or Charts,
+the fast pipeline is not determined automatically. Instead, create branches for
+docs-only merge requests using the following guide:
+
+| Branch name | Valid example |
+|:----------------------|:-----------------------------|
+| Starting with `docs/` | `docs/update-api-issues` |
+| Starting with `docs-` | `docs-update-api-issues` |
+| Ending in `-docs` | `123-update-api-issues-docs` |
+
## Contributing to docs
[Contributions to GitLab docs](workflow.md) are welcome from the entire GitLab community.
@@ -41,7 +58,7 @@ However, anyone can contribute [documentation improvements](improvement-workflow
## Markdown and styles
[GitLab docs](https://gitlab.com/gitlab-org/gitlab-docs) uses [GitLab Kramdown](https://gitlab.com/gitlab-org/gitlab_kramdown)
-as its markdown rendering engine. See the [GitLab Markdown Guide](https://about.gitlab.com/handbook/product/technical-writing/markdown-guide/) for a complete Kramdown reference.
+as its Markdown rendering engine. See the [GitLab Markdown Guide](https://about.gitlab.com/handbook/product/technical-writing/markdown-guide/) for a complete Kramdown reference.
Adhere to the [Documentation Style Guide](styleguide.md). If a style standard is missing, you are welcome to suggest one via a merge request.
@@ -382,7 +399,7 @@ merge request with new or changed docs is submitted, are:
- The `CHANGELOG.md` does not contain duplicate versions.
- No files in `doc/` are executable.
- No new `README.md` was added.
- - [`markdownlint`](#markdownlint).
+ - [markdownlint](#markdownlint).
- Nanoc tests, which you can [run locally](#previewing-the-changes-live) before
pushing to GitLab by executing the command `bundle exec nanoc check internal_links`
(or `internal_anchors`) on your local [`gitlab-docs`](https://gitlab.com/gitlab-org/gitlab-docs) directory:
@@ -403,7 +420,7 @@ help you catch common issues before raising merge requests for review of documen
The following are some suggested linters you can install locally and sample configuration:
- [`proselint`](#proselint)
-- [`markdownlint`](#markdownlint), which is the same as the test run in [`docs-lint`](#testing)
+- [markdownlint](#markdownlint), which is the same as the test run in [`docs-lint`](#testing)
NOTE: **Note:**
This list does not limit what other linters you can add to your local documentation writing toolchain.
@@ -447,18 +464,18 @@ noise. The following sample `proselint` configuration disables these checks:
A file with `proselint` configuration must be placed in a
[valid location](https://github.com/amperser/proselint#checks). For example, `~/.config/proselint/config`.
-#### `markdownlint`
+#### markdownlint
-[`markdownlint`](https://github.com/DavidAnson/markdownlint) checks that markdown
+[markdownlint](https://github.com/DavidAnson/markdownlint) checks that Markdown
syntax follows [certain rules](https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#rules),
and is used by the [`docs-lint` test](#testing) with a [configuration file](#markdownlint-configuration).
Our [Documentation Style Guide](styleguide.md#markdown) and [Markdown Guide](https://about.gitlab.com/handbook/product/technical-writing/markdown-guide/)
elaborate on which choices must be made when selecting Markdown syntax for GitLab
documentation. This tool helps catch deviations from those guidelines.
-`markdownlint` can be used [on the command line](https://github.com/igorshubovych/markdownlint-cli#markdownlint-cli--),
+markdownlint can be used [on the command line](https://github.com/igorshubovych/markdownlint-cli#markdownlint-cli--),
either on a single Markdown file or on all Markdown files in a project. For example, to run
-`markdownlint` on all documentation in the [`gitlab` project](https://gitlab.com/gitlab-org/gitlab),
+markdownlint on all documentation in the [`gitlab` project](https://gitlab.com/gitlab-org/gitlab),
run the following commands from within your `gitlab` project root directory, which will
automatically detect the [`.markdownlint.json`](#markdownlint-configuration) config
file in the root of the project, and test all files in `/doc` and its subdirectories:
@@ -473,7 +490,7 @@ If you wish to use a different config file, use the `-c` flag:
markdownlint -c <config-file-name> 'doc/**/*.md'
```
-`markdownlint` can also be run from within text editors using [plugins/extensions](https://github.com/DavidAnson/markdownlint#related),
+markdownlint can also be run from within text editors using [plugins/extensions](https://github.com/DavidAnson/markdownlint#related),
such as:
- [Sublime Text](https://packagecontrol.io/packages/SublimeLinter-contrib-markdownlint)
@@ -485,9 +502,9 @@ is in use in the four repos that are the sources for <https://docs.gitlab.com>.
plugin/extension has different requirements regarding the configuration file, which
is explained in each editor's docs.
-##### `markdownlint` configuration
+##### markdownlint configuration
-Each formatting issue that `markdownlint` checks has an associated
+Each formatting issue that markdownlint checks has an associated
[rule](https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#rules).
These rules are configured in the `.markdownlint.json` files located in the root of
four repos that are the sources for <https://docs.gitlab.com>:
@@ -501,7 +518,7 @@ By default all rules are enabled, so the configuration file is used to disable u
rules, and also to configure optional parameters for enabled rules as needed. You can
also check [the issue](https://gitlab.com/gitlab-org/gitlab-foss/issues/64352) that
tracked the changes required to implement these rules, and details which rules were
-on or off when `markdownlint` was enabled on the docs.
+on or off when markdownlint was enabled on the docs.
## Danger Bot
diff --git a/doc/development/documentation/site_architecture/index.md b/doc/development/documentation/site_architecture/index.md
index bf873995e54..8a5018df9b7 100644
--- a/doc/development/documentation/site_architecture/index.md
+++ b/doc/development/documentation/site_architecture/index.md
@@ -128,9 +128,9 @@ We can then loop over the `versions` array with something like:
Note that the data file must have the `yaml` extension (not `yml`) and that
we reference the array with a symbol (`:versions`).
-## Bumping versions of CSS and Javascript
+## Bumping versions of CSS and JavaScript
-Whenever the custom CSS and Javascript files under `content/assets/` change,
+Whenever the custom CSS and JavaScript files under `content/assets/` change,
make sure to bump their version in the frontmatter. This method guarantees that
your changes will take effect by clearing the cache of previous files.
@@ -180,7 +180,7 @@ for its search function. This is how it works:
1. On the docs side, we use a [docsearch layout](https://gitlab.com/gitlab-org/gitlab-docs/blob/master/layouts/docsearch.html) which
is present on pretty much every page except <https://docs.gitlab.com/search/>,
which uses its [own layout](https://gitlab.com/gitlab-org/gitlab-docs/blob/master/layouts/instantsearch.html). In those layouts,
- there's a javascript snippet which initiates docsearch by using an API key
+ there's a JavaScript snippet which initiates docsearch by using an API key
and an index name (`gitlab`) that are needed for Algolia to show the results.
NOTE: **For GitLab employees:**
diff --git a/doc/development/documentation/site_architecture/release_process.md b/doc/development/documentation/site_architecture/release_process.md
index 6f723531f4c..76bd74b0bdc 100644
--- a/doc/development/documentation/site_architecture/release_process.md
+++ b/doc/development/documentation/site_architecture/release_process.md
@@ -117,7 +117,7 @@ version and rotates the old one:
There's a temporary hack for now:
1. Edit `content/404.html`, making sure all offline versions under
- `content/_data/versions.yaml` are in the Javascript snippet at the end of
+ `content/_data/versions.yaml` are in the JavaScript snippet at the end of
the document.
1. **Update the `:latest` and `:archives` Docker images:**
diff --git a/doc/development/documentation/styleguide.md b/doc/development/documentation/styleguide.md
index e6d666473c3..385569fc8fa 100644
--- a/doc/development/documentation/styleguide.md
+++ b/doc/development/documentation/styleguide.md
@@ -102,7 +102,7 @@ Note that Kramdown-specific markup (e.g., `{:.class}`) will not render properly
Hard-coded HTML is valid, although it's discouraged to be used while we have `/help`. HTML is permitted as long as:
-- There's no equivalent markup in markdown.
+- There's no equivalent markup in Markdown.
- Advanced tables are necessary.
- Special styling is required.
- Reviewed and approved by a technical writer.
@@ -111,11 +111,38 @@ Hard-coded HTML is valid, although it's discouraged to be used while we have `/h
GitLab ensures that the Markdown used across all documentation is consistent, as
well as easy to review and maintain, by [testing documentation changes](index.md#testing) with
-[`markdownlint`](index.md#markdownlint). This lint test fails when any document has an issue
+[markdownlint](index.md#markdownlint). This lint test fails when any document has an issue
with Markdown formatting that may cause the page to render incorrectly within GitLab.
It will also fail when a document is using non-standard Markdown (which may render
correctly, but is not the current standard for GitLab documentation).
+#### Markdown rule `MD044/proper-names` (capitalization)
+
+A rule that could cause confusion is `MD044/proper-names`, as it might not be immediately
+clear what caused markdownlint to fail, or how to correct the failure. This rule
+checks a list of known words, listed in the `.markdownlint.json` file in each project,
+to verify that proper capitalization and backticks are used. Words in backticks will
+be ignored by markdownlint.
+
+In general, product names should follow the exact capitalization of the official names
+of the products, protocols, etc.
+
+Some examples that will fail if incorrect capitalization is used:
+
+- MinIO (needs capital `IO`)
+- NGINX (needs all capitals)
+- runit (needs lowercase `r`)
+
+Additionally, commands, parameters, values, filenames, etc. must be included in backticks.
+For example:
+
+- "Change the `needs` keyword in your `.gitlab.yml`..."
+ - `needs` is a parameter, and `.gitlab.yml` is a file, so both need backticks. Additionally,
+ `.gitlab.yml` will fail markdownlint without backticks as it does not have capital G or L.
+- "Run `git clone` to clone a Git repository..."
+ - `git clone` is a command, so it must be lowercase, while Git is the product, so
+ it must have a capital G.
+
## Structure
### Organize by topic, not by type
@@ -212,7 +239,7 @@ Do not include the same information in multiple places. [Link to a SSOT instead.
- Use inclusive language and avoid jargon, as well as uncommon
words. The docs should be clear and easy to understand.
-- Write in the 3rd person (use "we," "you," "us," "one," instead of "I" or "me").
+- Do not write in the first person singular. Instead of "I" or "me," use "we," "you," "us," or "one."
- Be clear, concise, and stick to the goal of the doc.
- Write in US English with US grammar.
- Capitalize "G" and "L" in GitLab.
@@ -230,22 +257,27 @@ Do not include the same information in multiple places. [Link to a SSOT instead.
"Create a new merge request for Z."
- Avoid use of the future tense:
- - Instead of, "After you execute this command, the result will be displayed," say "After you execute this command, the result is displayed."
+ - Instead of "after you execute this command, GitLab will display the result", use "after you execute this command, GitLab displays the result".
- Only use the future tense to convey when the action or result will actually occur at a future time.
- Do not use contractions:
- - Instead of "don't," "can't," "doesn't," and so on, say "do not," "cannot," or "does not."
+ - Instead of "don't," "can't," "doesn't," and so on, use "do not," "cannot," or "does not."
- Possible exceptions are cases when a more familiar tone is desired, such as a blog post or other casual context.
- Do not use slashes to clump different words together or as a replacement for the word "or":
- - Instead of "and/or," consider saying "or," or use another sensible construction.
+ - Instead of "and/or," consider using "or," or use another sensible construction.
- Other examples include "clone/fetch," author/assignee," and "namespace/repository name." Break apart any such instances in an appropriate way.
- Exceptions to this rule include commonly accepted technical terms such as CI/CD, TCP/IP, and so on.
- Do not use "may" and "might" interchangeably:
- Use "might" to indicate the probability of something occurring. "If you skip this step, the import process might fail."
- Use "may" to indicate giving permission for someone to do something, or consider using "can" instead. "You may select either option on this screen." Or, "you can select either option on this screen."
+- We recommend avoiding Latin abbreviations, such as "e.g.," "i.e.," or "etc.,"
+as even native users of English might misunderstand them.
+ - Instead of "i.e.", use "that is."
+ - Instead of "e.g.", use "for example."
+ - Instead of "etc.", either use "and so on" or consider editing it out, since it can be vague.
## Text
-- [Write in markdown](#markdown).
+- [Write in Markdown](#markdown).
- Splitting long lines (preferably up to 100 characters) can make it easier to provide feedback on small chunks of text.
- Insert an empty line for new paragraphs.
- Use sentence case for titles, headings, labels, menu items, and buttons.
@@ -453,7 +485,7 @@ to mix types, that is also possible, as long as you don't mix items at the same
## Quotes
-Valid for markdown content only, not for frontmatter entries:
+Valid for Markdown content only, not for frontmatter entries:
- Standard quotes: double quotes (`"`). Example: "This is wrapped in double quotes".
- Quote within a quote: double quotes (`"`) wrap single quotes (`'`). Example: "I am 'quoting' something within a quote".
@@ -464,7 +496,7 @@ For other punctuation rules, please refer to the
## Headings
- Add **only one H1** in each document, by adding `#` at the beginning of
- it (when using markdown). The `h1` will be the document `<title>`.
+ it (when using Markdown). The `h1` will be the document `<title>`.
- Start with an `h2` (`##`), and respect the order `h2` > `h3` > `h4` > `h5` > `h6`.
Never skip the hierarchy level, such as `h2` > `h4`
- Avoid putting numbers in headings. Numbers shift, hence documentation anchor
@@ -490,7 +522,7 @@ For other punctuation rules, please refer to the
## Links
-- Use inline link markdown markup `[Text](https://example.com)`.
+- Use inline link Markdown markup `[Text](https://example.com)`.
It's easier to read, review, and maintain. **Do not** use `[Text][identifier]`.
- Use [meaningful anchor texts](https://www.futurehosting.com/blog/links-should-have-meaningful-anchor-text-heres-why/).
@@ -533,7 +565,7 @@ For other punctuation rules, please refer to the
[issue tags](../../issues/tags.md#stages)
```
-- Using the markdown extension is necessary for the [`/help`](index.md#gitlab-help)
+- Using the Markdown extension is necessary for the [`/help`](index.md#gitlab-help)
section of GitLab.
### Links requiring permissions
@@ -656,7 +688,7 @@ to readers.
To embed a video, follow the instructions below and make sure
you have your MR reviewed and approved by a technical writer.
-1. Copy the code below and paste it into your markdown file.
+1. Copy the code below and paste it into your Markdown file.
Leave a blank line above and below it. Do NOT edit the code
(don't remove or add any spaces, etc).
1. On YouTube, visit the video URL you want to display. Copy
@@ -694,12 +726,12 @@ This is how it renders on the GitLab Docs site:
class is necessary to make sure the video is responsive and displays
nicely on different mobile devices.
> - The `<div class="video-fallback">` is a fallback necessary for GitLab's
-`/help`, as GitLab's markdown processor does not support iframes. It's hidden on the docs site but will be displayed on GitLab's `/help`.
+`/help`, as GitLab's Markdown processor does not support iframes. It's hidden on the docs site but will be displayed on GitLab's `/help`.
## Code blocks
- Always wrap code added to a sentence in inline code blocks (`` ` ``).
- E.g., `.gitlab-ci.yml`, `git add .`, `CODEOWNERS`, `only: master`.
+ E.g., `.gitlab-ci.yml`, `git add .`, `CODEOWNERS`, `only: [master]`.
File names, commands, entries, and anything that refers to code should be added to code blocks.
To make things easier for the user, always add a full code block for things that can be
useful to copy and paste, as they can easily do it with the button on code blocks.
@@ -725,7 +757,7 @@ nicely on different mobile devices.
```
~~~
-- To display raw markdown instead of rendered markdown, you can use triple backticks
+- To display raw Markdown instead of rendered Markdown, you can use triple backticks
with `md`, like the `Markdown code` example above, unless you want to include triple
backticks in the code block as well. In that case, use triple tildes (`~~~`) instead.
- For a complete reference on code blocks, check the [Kramdown guide](https://about.gitlab.com/handbook/product/technical-writing/markdown-guide/#code-blocks).
@@ -739,7 +771,7 @@ _Note that the alert boxes only work for one paragraph only. Multiple paragraphs
lists, headers, etc will not render correctly. For multiple lines, use blockquotes instead._
Alert boxes only render on the GitLab Docs site (<https://docs.gitlab.com>).
-Within GitLab itself, they will appear as plain markdown text (like the examples
+Within GitLab itself, they will appear as plain Markdown text (like the examples
above the rendered versions, below).
### Note
@@ -1055,7 +1087,7 @@ Sometimes features are shipped with feature flags, either:
- On by default, but providing the option to turn the feature off.
- Off by default, but providing the option to turn the feature on.
-When documenting feature flags for a feature, it's important that users know:
+When documenting feature flags for a feature, include:
- Why a feature flag is necessary. Some of the reasons are
[outlined in the handbook](https://about.gitlab.com/handbook/product/#alpha-beta-ga).
@@ -1080,6 +1112,9 @@ Feature.disable(:feature_flag)
```
````
+For guidance on developing with feature flags, see
+[Feature flags in development of GitLab](../feature_flags/index.md).
+
## API
Here is a list of must-have items. Use them in the exact order that appears
diff --git a/doc/development/documentation/workflow.md b/doc/development/documentation/workflow.md
index c373b976453..e48c940dc21 100644
--- a/doc/development/documentation/workflow.md
+++ b/doc/development/documentation/workflow.md
@@ -15,12 +15,31 @@ documentation is associated with:
Documentation is not usually required when a "backstage feature" is added or changed, and does not
directly affect the way that any user or administrator interacts with GitLab.
+## Documentation labels
+
+Regardless of the type of issue or merge request, certain labels are required when documentation
+is added or updated. The following are added by the issue or merge request author:
+
+- An appropriate [type label](../contributing/issue_workflow.md#type-labels). For example,
+ `~backstage`.
+- The [stage label](../contributing/issue_workflow.md#stage-labels) and
+ [group label](../contributing/issue_workflow.md#group-labels). For example, `~devops::create` and
+ `~group::source code`.
+- The `~documentation` [specialization label](../contributing/issue_workflow.md#specialization-labels).
+
+The following are also added by members of the Technical Writing team:
+
+- A documentation [scoped label](../../user/project/labels.md#scoped-labels-premium) with the
+ `docs::` prefix. For example, `~docs::improvement`.
+- The `~Technical Writing` [team label](../contributing/issue_workflow.md#team-labels).
+
## For a product change
This documentation is required for any new or changed feature and is:
-- Created or updated as part of feature development, typically via the same merge request as the
- feature code.
+- Created or updated as part of feature development, almost always in the same merge request as the
+ feature code. Including documentation in the same merge request as the code eliminates the
+ possibility that code and documentation get out of sync.
- Required with the delivery of a feature for a specific milestone as part of GitLab's
[definition of done](../contributing/merge_request_workflow.md#definition-of-done).
- Often linked from the release post.
@@ -100,28 +119,10 @@ Prior to merging, documentation changes committed by the developer must be revie
- The code reviewer for the merge request. This is known as a technical review.
- Optionally, others involved in the work, such as other developers or the Product Manager.
-- Optionally, the Technical Writer for the DevOps stage group.
+- The Technical Writer for the DevOps stage group, except in exceptional circumstances where a
+ [post-merge review](#post-merge-reviews) can be requested.
- A maintainer of the project.
-If not assigned to a Technical Writer for review prior to merging, a review must be scheduled
-immediately after merge by the developer or maintainer. For this,
-create an issue using the [Doc Review description template](https://gitlab.com/gitlab-org/gitlab/issues/new?issuable_template=Doc%20Review)
-and link to it from the merged merge request that introduced the documentation change.
-
-To decide whether to request a Technical Writer review before or after merge, consider:
-
-- The amount of time left before the milestone release. If there is less than three days
- remaining, seek a post-merge review and ping the writer via Slack to ensure the review is
- completed in time.
-- The size of the change and your degree of confidence in having early users (for example,
- GitLab.com users) of features use your documentation as written.
-- That pre-merge Technical Writer reviews should be most common when the code is complete well in
- advance of a milestone release and for larger documentation changes.
-- You can request a post-merge Technical Writer review if it's important to get the code part of
- a merge request merged as soon as possible.
-- The Technical Writer can also help decide that documentation can be merged without Technical
- writer review, with the review to occur soon after merge.
-
#### Product Managers
Product Managers are responsible for the [documentation requirements](#documentation-requirements)
@@ -149,10 +150,12 @@ will do the following:
Technical Writers are responsible for:
+- Participating in issues discussions and reviewing MRs for the upcoming milestone.
- Reviewing documentation requirements in issues when called upon.
- Answering questions, and helping and providing advice throughout the authoring and editing
process.
-- Reviewing all new and updated documentation content, whether before merge or after it is merged.
+- Reviewing all significant new and updated documentation content, whether before merge or after it
+ is merged.
- Assisting the developer and Product Manager with feature documentation delivery.
##### Planning
@@ -228,7 +231,7 @@ have this section by default.
Anyone can add these details, but the Product Manager who assigns the issue to a specific release
milestone will ensure these details are present and finalized by the time of that milestone's kickoff.
-Developers, Technical Writers, and others may help further refine this plan at any time.
+Developers, Technical Writers, and others may help further refine this plan at any time on request.
The following details should be included:
@@ -283,13 +286,23 @@ To update GitLab documentation:
TIP: **Tip:**
Work in a fork if you do not have developer access to the GitLab project.
-Ping the Technical Writer for the relevant [DevOps stage group](https://about.gitlab.com/handbook/product/technical-writing/index.html#assignments)
-in your issue or merge request, or within `#docs` if you are a member of GitLab's Slack workspace, if you:
+Request help from the Technical Writing team if you:
- Need help to choose the correct place for documentation.
- Want to discuss a documentation idea or outline.
- Want to request any other help.
+To request help:
+
+1. Locate the the Technical Writer for the relevant
+ [DevOps stage group](https://about.gitlab.com/handbook/product/technical-writing/index.html#assignments).
+1. Either:
+ - If urgent help is required, directly assign the Technical Writer in the issue or
+ [in the merge request](../../user/project/merge_requests/creating_merge_requests.md#multiple-assignees-starter).
+ - If non-urgent help is required, ping the Technical Writer in the issue or merge request.
+
+If you are a member of GitLab's Slack workspace, you can request help in `#docs`.
+
### Reviewing and merging
Anyone with Maintainer access to the relevant GitLab project can merge documentation changes.
@@ -307,11 +320,10 @@ The process involves the following:
or other appropriate colleague to confirm accuracy, clarity, and completeness. This can be skipped
for minor fixes without substantive content changes.
- Technical Writer (Optional). If not completed for a merge request prior to merging, must be scheduled
- post-merge. To request a:
+ post-merge. Schedule post-merge reviews only if an urgent merge is required. To request a:
- Pre-merge review, assign the Technical Writer listed for the applicable
[DevOps stage group](https://about.gitlab.com/handbook/product/technical-writing/index.html#assignments).
- - Post-merge review, [create an issue for one](https://gitlab.com/gitlab-org/gitlab/issues/new?issuable_template=Doc%20Review)
- and link it from the MR that makes the documentation change.
+ - Post-merge review, see [Post-merge reviews](#post-merge-reviews).
- Maintainer. For merge requests, Maintainers:
- Can always request any of the above reviews.
- Review before or after a Technical Writer review.
@@ -319,7 +331,7 @@ The process involves the following:
- Ensure the appropriate labels are applied, including any required to pick a merge request into
a release.
- Ensure that, if there has not been a Technical Writer review completed or scheduled, they
- [create the required issue](https://gitlab.com/gitlab-org/gitlab/issues/new?issuable_template=Doc%20Review), assign to the technical writer of the given stage group,
+ [create the required issue](https://gitlab.com/gitlab-org/gitlab/issues/new?issuable_template=Doc%20Review), assign to the Technical Writer of the given stage group,
and link it from the merge request.
The process is reflected in the **Documentation**
@@ -330,3 +342,50 @@ The process is reflected in the **Documentation**
If you have ideas for further documentation resources please
[create an issue](https://gitlab.com/gitlab-org/gitlab/issues/new?issuable_template=Documentation)
using the Documentation template.
+
+## Post-merge reviews
+
+If not assigned to a Technical Writer for review prior to merging, a review must be scheduled
+immediately after merge by the developer or maintainer. For this,
+create an issue using the [Doc Review description template](https://gitlab.com/gitlab-org/gitlab/issues/new?issuable_template=Doc%20Review)
+and link to it from the merged merge request that introduced the documentation change.
+
+Circumstances where a regular pre-merge Technical Writer review might be skipped include:
+
+- There is a short amount of time left before the milestone release. If there are less than three days
+ remaining, seek a post-merge review and ping the writer via Slack to ensure the review is
+ completed as soon as possible.
+- The size of the change is small and you have a high degree of confidence
+ that early users of the feature (for example, GitLab.com users) can easily
+ use the documentation as written.
+
+Remember:
+
+- At GitLab, we treat documentation like code. As with code, documentation must be reviewed to
+ ensure quality.
+- Documentation forms part of the GitLab [definition of done](../contributing/merge_request_workflow.md#definition-of-done).
+- That pre-merge Technical Writer reviews should be most common when the code is complete well in
+ advance of a milestone release and for larger documentation changes.
+- You can request a post-merge Technical Writer review of documentation if it's important to get the
+ code with which it ships merged as soon as possible. In this case, the author of the original MR
+ will address the feedback provided by the Technical Writer in a follow-up MR.
+- The Technical Writer can also help decide that documentation can be merged without Technical
+ writer review, with the review to occur soon after merge.
+
+### Before merging
+
+Ensure the following if skipping an initial Technical Writer review:
+
+- That [product badges](styleguide.md#product-badges) are applied.
+- That the GitLab [version](styleguide.md#text-for-documentation-requiring-version-text) that
+ introduced the feature has been included.
+- That changes to headings don't affect in-app hyperlinks.
+- Specific [user permissions](../../user/permissions.md) are documented.
+- That new documents are linked from higher-level indexes, for discoverability.
+- Style guide is followed:
+ - For [directories and files](styleguide.md#working-with-directories-and-files).
+ - For [images](styleguide.md#images).
+
+NOTE: **Note:**
+Merge requests that change the location of documentation must always be reviewed by a Technical
+Writer prior to merging.
diff --git a/doc/development/experiment_guide/index.md b/doc/development/experiment_guide/index.md
index 5155433c9ad..98086fc63ea 100644
--- a/doc/development/experiment_guide/index.md
+++ b/doc/development/experiment_guide/index.md
@@ -24,7 +24,7 @@ The author then adds a comment to this piece of code and adds a link to the issu
## How to create an A/B test
-- [ ] Add the experiment to the `Gitlab::Experimentation::EXPERIMENTS` hash in [`experimentation.rb`](https://gitlab.com/gitlab-org/gitlab/blob/master/lib%2Fgitlab%2Fexperimentation.rb):
+- Add the experiment to the `Gitlab::Experimentation::EXPERIMENTS` hash in [`experimentation.rb`](https://gitlab.com/gitlab-org/gitlab/blob/master/lib%2Fgitlab%2Fexperimentation.rb):
```ruby
EXPERIMENTS = {
@@ -40,7 +40,7 @@ The author then adds a comment to this piece of code and adds a link to the issu
}.freeze
```
-- [ ] Use the experiment in a controller:
+- Use the experiment in a controller:
```ruby
class RegistrationController < Applicationcontroller
@@ -55,8 +55,8 @@ The author then adds a comment to this piece of code and adds a link to the issu
end
```
-- [ ] Track necessery events. See the [event tracking guide](../event_tracking/index.md) for details.
-- [ ] After the merge request is merged, use [`chatops`](../../ci/chatops/README.md) to enable the feature flag and start the experiment. For visibility, please run the command in the `#s_growth` channel:
+- Track necessary events. See the [event tracking guide](../event_tracking/index.md) for details.
+- After the merge request is merged, use [`chatops`](../../ci/chatops/README.md) to enable the feature flag and start the experiment. For visibility, please run the command in the `#s_growth` channel:
```
/chatops run feature set --project=gitlab-org/gitlab experimental_sign_up_flow true
diff --git a/doc/development/fe_guide/accessibility.md b/doc/development/fe_guide/accessibility.md
index 64c793cfd64..4fd9a4fed60 100644
--- a/doc/development/fe_guide/accessibility.md
+++ b/doc/development/fe_guide/accessibility.md
@@ -16,5 +16,5 @@ useful compilation of accessibility-related material.
[audit-rules]: https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules
[axe-website]: https://www.deque.com/axe/
[axe-firefox-extension]: https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/
-[axe-chrome-extension]: https://chrome.google.com/webstore/detail/axe/lhdoppojpmngadmnindnejefpokejbdd
+[axe-chrome-extension]: https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd
[awesome-a11y]: https://github.com/brunopulis/awesome-a11y
diff --git a/doc/development/fe_guide/frontend_faq.md b/doc/development/fe_guide/frontend_faq.md
index 36c8a03a241..cbe0a78370d 100644
--- a/doc/development/fe_guide/frontend_faq.md
+++ b/doc/development/fe_guide/frontend_faq.md
@@ -15,7 +15,7 @@
## FAQ
-### How do I find the Rails route for a page?
+### 1. How do I find the Rails route for a page?
#### Check the 'page' data attribute
@@ -37,7 +37,7 @@ The output includes the request types available, route parameters and the releva
bundle exec rake routes | grep "issues"
```
-### `modal_copy_button` vs `clipboard_button`
+### 2. `modal_copy_button` vs `clipboard_button`
The `clipboard_button` uses the `copy_to_clipboard.js` behaviour, which is
initialized on page load, so if there are vue-based clipboard buttons that
@@ -50,3 +50,26 @@ the instance of that component, which means that clipboard events are
bound on mounting and destroyed when the button is, mitigating the above
issue. It also has bindings to a particular container or modal ID
available, to work with the focus trap created by our GlModal.
+
+### 3. A `gitlab-ui` component not conforming to [Pajamas Design System](https://design.gitlab.com/)
+
+Some [Pajamas Design System](https://design.gitlab.com/) components implemented in
+`gitlab-ui` do not conform with the design system specs because they lack some
+planned features or are not correctly styled yet. In the Pajamas website, a
+banner on top of the component examples indicates that:
+
+> This component does not yet conform to the correct styling defined in our Design
+> System. Refer to the Design System documentation when referencing visuals for this
+> component.
+
+For example, at the time of writing, this type of warning can be observed for
+[all form components](https://design.gitlab.com/components/forms). It, however,
+doesn't imply that the component should not be used.
+
+GitLab always asks to use `<gl-*>` components whenever a suitable component exists.
+It makes codebase unified and more comfortable to maintain/refactor in the future.
+
+Ensure a [Product Designer](https://about.gitlab.com/company/team/?department=ux-department)
+reviews the use of the non-conforming component as part of the MR review. Make a
+follow up issue and attach it to the component implementation epic found within the
+[Components of Pajamas Design System epic](https://gitlab.com/groups/gitlab-org/-/epics/973).
diff --git a/doc/development/fe_guide/graphql.md b/doc/development/fe_guide/graphql.md
index 894a613ec2d..40b9fdef76e 100644
--- a/doc/development/fe_guide/graphql.md
+++ b/doc/development/fe_guide/graphql.md
@@ -39,6 +39,38 @@ To distinguish queries from mutations and fragments, the following naming conven
- `addUser.mutation.graphql` for mutations;
- `basicUser.fragment.graphql` for fragments.
+### Fragments
+
+Fragments are a way to make your complex GraphQL queries more readable and re-usable. Here is an example of GraphQL fragment:
+
+```javascript
+fragment DesignListItem on Design {
+ id
+ image
+ event
+ filename
+ notesCount
+}
+```
+
+Fragments can be stored in separate files, imported and used in queries, mutations or other fragments.
+
+```javascript
+#import "./designList.fragment.graphql"
+#import "./diffRefs.fragment.graphql"
+
+fragment DesignItem on Design {
+ ...DesignListItem
+ fullPath
+ diffRefs {
+ ...DesignDiffRefs
+ }
+}
+```
+
+More about fragments:
+[GraphQL Docs](https://graphql.org/learn/queries/#fragments)
+
## Usage in Vue
To use Vue Apollo, import the [Vue Apollo][vue-apollo] plugin as well
@@ -100,6 +132,8 @@ Read more about local state management with Apollo in the [Vue Apollo documentat
### Testing
+#### Mocking response as component data
+
With [Vue test utils][vue-test-utils] it is easy to quickly test components that
fetch GraphQL queries. The simplest way is to use `shallowMount` and then set
the data on the component
@@ -114,7 +148,100 @@ it('tests apollo component', () => {
});
```
-Another possible way is testing queries with mocked GraphQL schema. Read more about this way in [Vue Apollo testing documentation](https://vue-apollo.netlify.com/guide/testing.html#tests-with-mocked-graqhql-schema)
+#### Testing loading state
+
+If we need to test how our component renders when results from the GraphQL API are still loading, we can mock a loading state into respective Apollo queries/mutations:
+
+```javascript
+ function createComponent({
+ loading = false,
+ } = {}) {
+ const $apollo = {
+ queries: {
+ designs: {
+ loading,
+ },
+ };
+
+ wrapper = shallowMount(Index, {
+ sync: false,
+ mocks: { $apollo }
+ });
+ }
+
+ it('renders loading icon', () => {
+ createComponent({ loading: true });
+
+ expect(wrapper.element).toMatchSnapshot();
+})
+```
+
+#### Testing Apollo components
+
+If we use `ApolloQuery` or `ApolloMutation` in our components, in order to test their functionality we need to add a stub first:
+
+```javascript
+import { ApolloMutation } from 'vue-apollo';
+
+function createComponent(props = {}) {
+ wrapper = shallowMount(MyComponent, {
+ sync: false,
+ propsData: {
+ ...props,
+ },
+ stubs: {
+ ApolloMutation,
+ },
+ });
+}
+```
+
+`ApolloMutation` component exposes `mutate` method via scoped slot. If we want to test this method, we need to add it to mocks:
+
+```javascript
+const mutate = jest.fn(() => Promise.resolve());
+const $apollo = {
+ mutate,
+};
+
+function createComponent(props = {}) {
+ wrapper = shallowMount(MyComponent, {
+ sync: false,
+ propsData: {
+ ...props,
+ },
+ stubs: {
+ ApolloMutation,
+ },
+ mocks: {
+ $apollo:
+ }
+ });
+}
+```
+
+Then we can check if `mutate` is called with correct variables:
+
+```javascript
+const mutationVariables = {
+ mutation: createNoteMutation,
+ update: expect.anything(),
+ variables: {
+ input: {
+ noteableId: 'noteable-id',
+ body: 'test',
+ discussionId: '0',
+ },
+ },
+};
+
+it('calls mutation on submitting form ', () => {
+ createComponent()
+ findReplyForm().vm.$emit('submitForm');
+
+ expect(mutate).toHaveBeenCalledWith(mutationVariables);
+});
+```
## Usage outside of Vue
diff --git a/doc/development/fe_guide/index.md b/doc/development/fe_guide/index.md
index 1cf798cedb6..f13ef767660 100644
--- a/doc/development/fe_guide/index.md
+++ b/doc/development/fe_guide/index.md
@@ -76,15 +76,18 @@ Read the [frontend's FAQ](frontend_faq.md) for common small pieces of helpful in
## Style Guides
-### [JavaScript Style Guide](style_guide_js.md)
+See the relevant style guides for our guidelines and for information on linting:
-We use eslint to enforce our JavaScript style guides. Our guide is based on
+- [JavaScript](style/javascript.md). Our guide is based on
the excellent [Airbnb][airbnb-js-style-guide] style guide with a few small
changes.
+- [SCSS](style/scss.md): our SCSS conventions which are enforced through [`scss-lint`](https://github.com/brigade/scss-lint).
+- [HTML](style/html.md). Guidelines for writing HTML code consistent with the rest of the codebase.
+- [Vue](style/vue.md). Guidelines and conventions for Vue code may be found here.
-### [SCSS Style Guide](style_guide_scss.md)
+## Tooling
-Our SCSS conventions which are enforced through [scss-lint](https://github.com/sds/scss-lint).
+Our code is automatically formatted with [Prettier](https://prettier.io) to follow our guidelines. Read our [Tooling guide](tooling.md) for more detail.
## [Performance](performance.md)
diff --git a/doc/development/fe_guide/style/html.md b/doc/development/fe_guide/style/html.md
new file mode 100644
index 00000000000..1445da3f0e1
--- /dev/null
+++ b/doc/development/fe_guide/style/html.md
@@ -0,0 +1,53 @@
+# HTML style guide
+
+## Buttons
+
+### Button type
+
+Button tags requires a `type` attribute according to the [W3C HTML specification](https://www.w3.org/TR/2011/WD-html5-20110525/the-button-element.html#dom-button-type).
+
+```html
+// bad
+<button></button>
+
+// good
+<button type="button"></button>
+```
+
+### Button role
+
+If an HTML element has an `onClick` handler but is not a button, it should have `role="button"`. This is [more accessible](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/button_role).
+
+```html
+// bad
+<div onClick="doSomething"></div>
+
+// good
+<div role="button" onClick="doSomething"></div>
+```
+
+## Links
+
+### Blank target
+
+Use `rel="noopener noreferrer"` whenever your links open in a new window, i.e. `target="_blank"`. This prevents a security vulnerability [documented by JitBit](https://www.jitbit.com/alexblog/256-targetblank---the-most-underestimated-vulnerability-ever/).
+
+```html
+// bad
+<a href="url" target="_blank"></a>
+
+// good
+<a href="url" target="_blank" rel="noopener noreferrer"></a>
+```
+
+### Fake links
+
+**Do not use fake links.** Use a button tag if a link only invokes JavaScript click event handlers, which is more semantic.
+
+```html
+// bad
+<a class="js-do-something" href="#"></a>
+
+// good
+<button class="js-do-something" type="button"></button>
+```
diff --git a/doc/development/fe_guide/style/index.md b/doc/development/fe_guide/style/index.md
new file mode 100644
index 00000000000..3b07a8557f5
--- /dev/null
+++ b/doc/development/fe_guide/style/index.md
@@ -0,0 +1,21 @@
+# GitLab development style guides
+
+See below the relevant style guides, guidelines, linting, and other information for developing GitLab.
+
+## JavaScript style guide
+
+We use `eslint` to enforce our [JavaScript style guides](javascript.md). Our guide is based on
+the excellent [AirBnB](https://github.com/airbnb/javascript) style guide with a few small
+changes.
+
+## SCSS style guide
+
+Our [SCSS conventions](scss.md) which are enforced through [`scss-lint`](https://github.com/brigade/scss-lint).
+
+## HTML style guide
+
+Guidelines for writing [HTML code](html.md) consistent with the rest of the codebase.
+
+## Vue style guide
+
+Guidelines and conventions for Vue code may be found within the [Vue style guide](vue.md).
diff --git a/doc/development/fe_guide/style/javascript.md b/doc/development/fe_guide/style/javascript.md
new file mode 100644
index 00000000000..f40e8c7b5df
--- /dev/null
+++ b/doc/development/fe_guide/style/javascript.md
@@ -0,0 +1,275 @@
+---
+disqus_identifier: 'https://docs.gitlab.com/ee/development/fe_guide/style_guide_js.html'
+---
+
+# JavaScript style guide
+
+We use [Airbnb's JavaScript Style Guide](https://github.com/airbnb/javascript) and it's accompanying
+linter to manage most of our JavaScript style guidelines.
+
+In addition to the style guidelines set by Airbnb, we also have a few specific rules
+listed below.
+
+> **Tip:**
+You can run eslint locally by running `yarn eslint`
+
+## Avoid forEach
+
+Avoid forEach when mutating data. Use `map`, `reduce` or `filter` instead of `forEach`
+when mutating data. This will minimize mutations in functions,
+which aligns with [Airbnb's style guide](https://github.com/airbnb/javascript#testing--for-real).
+
+```javascript
+// bad
+users.forEach((user, index) => {
+ user.id = index;
+});
+
+// good
+const usersWithId = users.map((user, index) => {
+ return Object.assign({}, user, { id: index });
+});
+```
+
+## Limit number of parameters
+
+If your function or method has more than 3 parameters, use an object as a parameter
+instead.
+
+```javascript
+// bad
+function a(p1, p2, p3) {
+ // ...
+};
+
+// good
+function a(p) {
+ // ...
+};
+```
+
+## Avoid classes to handle DOM events
+
+If the only purpose of the class is to bind a DOM event and handle the callback, prefer
+using a function.
+
+```javascript
+// bad
+class myClass {
+ constructor(config) {
+ this.config = config;
+ }
+
+ init() {
+ document.addEventListener('click', () => {});
+ }
+}
+
+// good
+
+const myFunction = () => {
+ document.addEventListener('click', () => {
+ // handle callback here
+ });
+}
+```
+
+## Pass element container to constructor
+
+When your class manipulates the DOM, receive the element container as a parameter.
+This is more maintainable and performant.
+
+```javascript
+// bad
+class a {
+ constructor() {
+ document.querySelector('.b');
+ }
+}
+
+// good
+class a {
+ constructor(options) {
+ options.container.querySelector('.b');
+ }
+}
+```
+
+## Use ParseInt
+
+Use `ParseInt` when converting a numeric string into a number.
+
+```javascript
+// bad
+Number('10')
+
+// good
+parseInt('10', 10);
+```
+
+## CSS Selectors - Use `js-` prefix
+
+If a CSS class is only being used in JavaScript as a reference to the element, prefix
+the class name with `js-`.
+
+```html
+// bad
+<button class="add-user"></button>
+
+// good
+<button class="js-add-user"></button>
+```
+
+## ES Module Syntax
+
+Use ES module syntax to import modules:
+
+```javascript
+// bad
+const SomeClass = require('some_class');
+
+// good
+import SomeClass from 'some_class';
+
+// bad
+module.exports = SomeClass;
+
+// good
+export default SomeClass;
+```
+
+_Note:_ We still use `require` in `scripts/` and `config/` files.
+
+## Absolute vs relative paths for modules
+
+Use relative paths if the module you are importing is less than two levels up.
+
+```javascript
+// bad
+import GitLabStyleGuide from '~/guides/GitLabStyleGuide';
+
+// good
+import GitLabStyleGuide from '../GitLabStyleGuide';
+```
+
+If the module you are importing is two or more levels up, use an absolute path instead:
+
+```javascript
+// bad
+import GitLabStyleGuide from '../../../guides/GitLabStyleGuide';
+
+// good
+import GitLabStyleGuide from '~/GitLabStyleGuide';
+```
+
+Additionally, **do not add to global namespace**.
+
+## Do not use `DOMContentLoaded` in non-page modules
+
+Imported modules should act the same each time they are loaded. `DOMContentLoaded`
+events are only allowed on modules loaded in the `/pages/*` directory because those
+are loaded dynamically with webpack.
+
+## Avoid XSS
+
+Do not use `innerHTML`, `append()` or `html()` to set content. It opens up too many
+vulnerabilities.
+
+## ESLint
+
+ESLint behaviour can be found in our [tooling guide](../tooling.md).
+
+## IIFEs
+
+Avoid using IIFEs (Immediately-Invoked Function Expressions). Although
+we have a lot of examples of files which wrap their contents in IIFEs,
+this is no longer necessary after the transition from Sprockets to webpack.
+Do not use them anymore and feel free to remove them when refactoring legacy code.
+
+## Global namespace
+
+Avoid adding to the global namespace.
+
+```javascript
+// bad
+window.MyClass = class { /* ... */ };
+
+// good
+export default class MyClass { /* ... */ }
+```
+
+## Side effects
+
+### Top-level side effects
+
+Top-level side effects are forbidden in any script which contains `export`:
+
+```javascript
+// bad
+export default class MyClass { /* ... */ }
+
+document.addEventListener("DOMContentLoaded", function(event) {
+ new MyClass();
+}
+```
+
+### Avoid side effects in constructors
+
+Avoid making asynchronous calls, API requests or DOM manipulations in the `constructor`.
+Move them into separate functions instead. This will make tests easier to write and
+avoids violating the [Single Responsibility Principle](https://en.wikipedia.org/wiki/Single_responsibility_principle).
+
+```javascript
+// bad
+class myClass {
+ constructor(config) {
+ this.config = config;
+ axios.get(this.config.endpoint)
+ }
+}
+
+// good
+class myClass {
+ constructor(config) {
+ this.config = config;
+ }
+
+ makeRequest() {
+ axios.get(this.config.endpoint)
+ }
+}
+const instance = new myClass();
+instance.makeRequest();
+```
+
+## Pure Functions and Data Mutation
+
+Strive to write many small pure functions and minimize where mutations occur
+
+ ```javascript
+ // bad
+ const values = {foo: 1};
+
+ function impureFunction(items) {
+ const bar = 1;
+
+ items.foo = items.a * bar + 2;
+
+ return items.a;
+ }
+
+ const c = impureFunction(values);
+
+ // good
+ var values = {foo: 1};
+
+ function pureFunction (foo) {
+ var bar = 1;
+
+ foo = foo * bar + 2;
+
+ return foo;
+ }
+
+ var c = pureFunction(values.foo);
+ ```
diff --git a/doc/development/fe_guide/style/scss.md b/doc/development/fe_guide/style/scss.md
new file mode 100644
index 00000000000..4ec3c79b0ae
--- /dev/null
+++ b/doc/development/fe_guide/style/scss.md
@@ -0,0 +1,285 @@
+---
+disqus_identifier: 'https://docs.gitlab.com/ee/development/fe_guide/style_guide_scss.html'
+---
+
+# SCSS style guide
+
+This style guide recommends best practices for SCSS to make styles easy to read,
+easy to maintain, and performant for the end-user.
+
+## Rules
+
+### Utility Classes
+
+As part of the effort for [cleaning up our CSS and moving our components into `gitlab-ui`](https://gitlab.com/groups/gitlab-org/-/epics/950)
+led by the [GitLab UI WG](https://gitlab.com/gitlab-com/www-gitlab-com/merge_requests/20623) we prefer the use of utility classes over adding new CSS. However, complex CSS can be addressed by adding component classes.
+
+#### Where are utility classes defined?
+
+- [Bootstrap's Utility Classes](https://getbootstrap.com/docs/4.3/utilities/)
+- [`common.scss`](https://gitlab.com/gitlab-org/gitlab/blob/master/app/assets/stylesheets/framework/common.scss) (old)
+- [`utilities.scss`](https://gitlab.com/gitlab-org/gitlab/blob/master/app/assets/stylesheets/utilities.scss) (new)
+
+#### Where should I put new utility classes?
+
+New utility classes should be added to [`utilities.scss`](https://gitlab.com/gitlab-org/gitlab/blob/master/app/assets/stylesheets/utilities.scss). Existing classes include:
+
+| Name | Pattern | Example |
+|------|---------|---------|
+| Background color | `.bg-{variant}-{shade}` | `.bg-warning-400` |
+| Text color | `.text-{variant}-{shade}` | `.text-success-500` |
+| Font size | `.text-{size}` | `.text-2` |
+
+- `{variant}` is one of 'primary', 'secondary', 'success', 'warning', 'error'
+- `{shade}` is one of the shades listed on [colors](https://design.gitlab.com/product-foundations/colors/)
+- `{size}` is a number from 1-6 from our [Type scale](https://design.gitlab.com/product-foundations/typography/)
+
+#### When should I create component classes?
+
+We recommend a "utility-first" approach.
+
+1. Start with utility classes.
+1. If composing utility classes into a component class removes code duplication and encapsulates a clear responsibility, do it.
+
+This encourages an organic growth of component classes and prevents the creation of one-off unreusable classes. Also, the kind of classes that emerge from "utility-first" tend to be design-centered (e.g. `.button`, `.alert`, `.card`) rather than domain-centered (e.g. `.security-report-widget`, `.commit-header-icon`).
+
+Examples of component classes that were created using "utility-first" include:
+
+- [`.circle-icon-container`](https://gitlab.com/gitlab-org/gitlab/blob/579fa8b8ec7eb38d40c96521f517c9dab8c3b97a/app/assets/stylesheets/framework/icons.scss#L85)
+- [`.d-flex-center`](https://gitlab.com/gitlab-org/gitlab/blob/900083d89cd6af391d26ab7922b3f64fa2839bef/app/assets/stylesheets/framework/common.scss#L425)
+
+Inspiration:
+
+- <https://tailwindcss.com/docs/utility-first/>
+- <https://tailwindcss.com/docs/extracting-components/>
+
+### Naming
+
+Filenames should use `snake_case`.
+
+CSS classes should use the `lowercase-hyphenated` format rather than
+`snake_case` or `camelCase`.
+
+```scss
+// Bad
+.class_name {
+ color: #fff;
+}
+
+// Bad
+.className {
+ color: #fff;
+}
+
+// Good
+.class-name {
+ color: #fff;
+}
+```
+
+### Formatting
+
+You should always use a space before a brace, braces should be on the same
+line, each property should each get its own line, and there should be a space
+between the property and its value.
+
+```scss
+// Bad
+.container-item {
+ width: 100px; height: 100px;
+ margin-top: 0;
+}
+
+// Bad
+.container-item
+{
+ width: 100px;
+ height: 100px;
+ margin-top: 0;
+}
+
+// Bad
+.container-item{
+ width:100px;
+ height:100px;
+ margin-top:0;
+}
+
+// Good
+.container-item {
+ width: 100px;
+ height: 100px;
+ margin-top: 0;
+}
+```
+
+Note that there is an exception for single-line rulesets, although these are
+not typically recommended.
+
+```scss
+p { margin: 0; padding: 0; }
+```
+
+### Colors
+
+HEX (hexadecimal) colors should use shorthand where possible, and should use
+lower case letters to differentiate between letters and numbers, e.g. `#E3E3E3`
+vs. `#e3e3e3`.
+
+```scss
+// Bad
+p {
+ color: #ffffff;
+}
+
+// Bad
+p {
+ color: #FFFFFF;
+}
+
+// Good
+p {
+ color: #fff;
+}
+```
+
+### Indentation
+
+Indentation should always use two spaces for each indentation level.
+
+```scss
+// Bad, four spaces
+p {
+ color: #f00;
+}
+
+// Good
+p {
+ color: #f00;
+}
+```
+
+### Semicolons
+
+Always include semicolons after every property. When the stylesheets are
+minified, the semicolons will be removed automatically.
+
+```scss
+// Bad
+.container-item {
+ width: 100px;
+ height: 100px
+}
+
+// Good
+.container-item {
+ width: 100px;
+ height: 100px;
+}
+```
+
+### Shorthand
+
+The shorthand form should be used for properties that support it.
+
+```scss
+// Bad
+margin: 10px 15px 10px 15px;
+padding: 10px 10px 10px 10px;
+
+// Good
+margin: 10px 15px;
+padding: 10px;
+```
+
+### Zero Units
+
+Omit length units on zero values, they're unnecessary and not including them
+is slightly more performant.
+
+```scss
+// Bad
+.item-with-padding {
+ padding: 0px;
+}
+
+// Good
+.item-with-padding {
+ padding: 0;
+}
+```
+
+### Selectors with a `js-` Prefix
+
+Do not use any selector prefixed with `js-` for styling purposes. These
+selectors are intended for use only with JavaScript to allow for removal or
+renaming without breaking styling.
+
+### IDs
+
+Don't use ID selectors in CSS.
+
+```scss
+// Bad
+#my-element {
+ padding: 0;
+}
+
+// Good
+.my-element {
+ padding: 0;
+}
+```
+
+### Variables
+
+Before adding a new variable for a color or a size, guarantee:
+
+- There isn't already one
+- There isn't a similar one we can use instead.
+
+## Linting
+
+We use [SCSS Lint](https://github.com/sds/scss-lint) to check for style guide conformity. It uses the
+ruleset in `.scss-lint.yml`, which is located in the home directory of the
+project.
+
+To check if any warnings will be produced by your changes, you can run `rake
+scss_lint` in the GitLab directory. SCSS Lint will also run in GitLab CI to
+catch any warnings.
+
+If the Rake task is throwing warnings you don't understand, SCSS Lint's
+documentation includes [a full list of their linters](https://github.com/sds/scss-lint/blob/master/lib/scss_lint/linter/README.md).
+
+### Fixing issues
+
+If you want to automate changing a large portion of the codebase to conform to
+the SCSS style guide, you can use [CSSComb][csscomb]. First install
+[Node][node] and [NPM][npm], then run `npm install csscomb -g` to install
+CSSComb globally (system-wide). Run it in the GitLab directory with
+`csscomb app/assets/stylesheets` to automatically fix issues with CSS/SCSS.
+
+Note that this won't fix every problem, but it should fix a majority.
+
+### Ignoring issues
+
+If you want a line or set of lines to be ignored by the linter, you can use
+`// scss-lint:disable RuleName` ([more info](https://github.com/sds/scss-lint#disabling-linters-via-source)):
+
+```scss
+// This lint rule is disabled because it is supported only in Chrome/Safari
+// scss-lint:disable PropertySpelling
+body {
+ text-decoration-skip: ink;
+}
+// scss-lint:enable PropertySpelling
+```
+
+Make sure a comment is added on the line above the `disable` rule, otherwise the
+linter will throw a warning. `DisableLinterReason` is enabled to make sure the
+style guide isn't being ignored, and to communicate to others why the style
+guide is ignored in this instance.
+
+[csscomb]: https://github.com/csscomb/csscomb.js
+[node]: https://github.com/nodejs/node
+[npm]: https://www.npmjs.com/
diff --git a/doc/development/fe_guide/style/vue.md b/doc/development/fe_guide/style/vue.md
new file mode 100644
index 00000000000..2499623e66a
--- /dev/null
+++ b/doc/development/fe_guide/style/vue.md
@@ -0,0 +1,418 @@
+# Vue.js style guide
+
+## Linting
+
+We default to [eslint-vue-plugin](https://github.com/vuejs/eslint-plugin-vue), with the `plugin:vue/recommended`.
+Please check this [rules](https://github.com/vuejs/eslint-plugin-vue#bulb-rules) for more documentation.
+
+## Basic Rules
+
+1. The service has it's own file
+1. The store has it's own file
+1. Use a function in the bundle file to instantiate the Vue component:
+
+ ```javascript
+ // bad
+ class {
+ init() {
+ new Component({})
+ }
+ }
+
+ // good
+ document.addEventListener('DOMContentLoaded', () => new Vue({
+ el: '#element',
+ components: {
+ componentName
+ },
+ render: createElement => createElement('component-name'),
+ }));
+ ```
+
+1. Do not use a singleton for the service or the store
+
+ ```javascript
+ // bad
+ class Store {
+ constructor() {
+ if (!this.prototype.singleton) {
+ // do something
+ }
+ }
+ }
+
+ // good
+ class Store {
+ constructor() {
+ // do something
+ }
+ }
+ ```
+
+1. Use `.vue` for Vue templates. Do not use `%template` in HAML.
+
+## Naming
+
+1. **Extensions**: Use `.vue` extension for Vue components. Do not use `.js` as file extension ([#34371]).
+1. **Reference Naming**: Use PascalCase for their instances:
+
+ ```javascript
+ // bad
+ import cardBoard from 'cardBoard.vue'
+
+ components: {
+ cardBoard,
+ };
+
+ // good
+ import CardBoard from 'cardBoard.vue'
+
+ components: {
+ CardBoard,
+ };
+ ```
+
+1. **Props Naming:** Avoid using DOM component prop names.
+1. **Props Naming:** Use kebab-case instead of camelCase to provide props in templates.
+
+ ```javascript
+ // bad
+ <component class="btn">
+
+ // good
+ <component css-class="btn">
+
+ // bad
+ <component myProp="prop" />
+
+ // good
+ <component my-prop="prop" />
+ ```
+
+[#34371]: https://gitlab.com/gitlab-org/gitlab-foss/issues/34371
+
+## Alignment
+
+1. Follow these alignment styles for the template method:
+
+ 1. With more than one attribute, all attributes should be on a new line:
+
+ ```javascript
+ // bad
+ <component v-if="bar"
+ param="baz" />
+
+ <button class="btn">Click me</button>
+
+ // good
+ <component
+ v-if="bar"
+ param="baz"
+ />
+
+ <button class="btn">
+ Click me
+ </button>
+ ```
+
+ 1. The tag can be inline if there is only one attribute:
+
+ ```javascript
+ // good
+ <component bar="bar" />
+
+ // good
+ <component
+ bar="bar"
+ />
+
+ // bad
+ <component
+ bar="bar" />
+ ```
+
+## Quotes
+
+1. Always use double quotes `"` inside templates and single quotes `'` for all other JS.
+
+ ```javascript
+ // bad
+ template: `
+ <button :class='style'>Button</button>
+ `
+
+ // good
+ template: `
+ <button :class="style">Button</button>
+ `
+ ```
+
+## Props
+
+1. Props should be declared as an object
+
+ ```javascript
+ // bad
+ props: ['foo']
+
+ // good
+ props: {
+ foo: {
+ type: String,
+ required: false,
+ default: 'bar'
+ }
+ }
+ ```
+
+1. Required key should always be provided when declaring a prop
+
+ ```javascript
+ // bad
+ props: {
+ foo: {
+ type: String,
+ }
+ }
+
+ // good
+ props: {
+ foo: {
+ type: String,
+ required: false,
+ default: 'bar'
+ }
+ }
+ ```
+
+1. Default key should be provided if the prop is not required.
+ _Note:_ There are some scenarios where we need to check for the existence of the property.
+ On those a default key should not be provided.
+
+ ```javascript
+ // good
+ props: {
+ foo: {
+ type: String,
+ required: false,
+ }
+ }
+
+ // good
+ props: {
+ foo: {
+ type: String,
+ required: false,
+ default: 'bar'
+ }
+ }
+
+ // good
+ props: {
+ foo: {
+ type: String,
+ required: true
+ }
+ }
+ ```
+
+## Data
+
+1. `data` method should always be a function
+
+ ```javascript
+ // bad
+ data: {
+ foo: 'foo'
+ }
+
+ // good
+ data() {
+ return {
+ foo: 'foo'
+ };
+ }
+ ```
+
+## Directives
+
+1. Shorthand `@` is preferable over `v-on`
+
+ ```javascript
+ // bad
+ <component v-on:click="eventHandler"/>
+
+ // good
+ <component @click="eventHandler"/>
+ ```
+
+1. Shorthand `:` is preferable over `v-bind`
+
+ ```javascript
+ // bad
+ <component v-bind:class="btn"/>
+
+ // good
+ <component :class="btn"/>
+ ```
+
+1. Shorthand `#` is preferable over `v-slot`
+
+ ```javascript
+ // bad
+ <template v-slot:header></template>
+
+ // good
+ <template #header></template>
+ ```
+
+## Closing tags
+
+1. Prefer self closing component tags
+
+ ```javascript
+ // bad
+ <component></component>
+
+ // good
+ <component />
+ ```
+
+## Component usage within templates
+
+1. Prefer a component's kebab-cased name over other styles when using it in a template
+
+ ```javascript
+ // bad
+ <MyComponent />
+
+ // good
+ <my-component />
+ ```
+
+## Ordering
+
+1. Tag order in `.vue` file
+
+ ```
+ <script>
+ // ...
+ </script>
+
+ <template>
+ // ...
+ </template>
+
+ // We don't use scoped styles but there are few instances of this
+ <style>
+ // ...
+ </style>
+ ```
+
+1. Properties in a Vue Component:
+ Check [order of properties in components rule](https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/order-in-components.md).
+
+## `:key`
+
+When using `v-for` you need to provide a *unique* `:key` attribute for each item.
+
+1. If the elements of the array being iterated have an unique `id` it is advised to use it:
+
+ ```html
+ <div
+ v-for="item in items"
+ :key="item.id"
+ >
+ <!-- content -->
+ </div>
+ ```
+
+1. When the elements being iterated don't have a unique id, you can use the array index as the `:key` attribute
+
+ ```html
+ <div
+ v-for="(item, index) in items"
+ :key="index"
+ >
+ <!-- content -->
+ </div>
+ ```
+
+1. When using `v-for` with `template` and there is more than one child element, the `:key` values must be unique. It's advised to use `kebab-case` namespaces.
+
+ ```html
+ <template v-for="(item, index) in items">
+ <span :key="`span-${index}`"></span>
+ <button :key="`button-${index}`"></button>
+ </template>
+ ```
+
+1. When dealing with nested `v-for` use the same guidelines as above.
+
+ ```html
+ <div
+ v-for="item in items"
+ :key="item.id"
+ >
+ <span
+ v-for="element in array"
+ :key="element.id"
+ >
+ <!-- content -->
+ </span>
+ </div>
+ ```
+
+Useful links:
+
+1. [`key`](https://vuejs.org/v2/guide/list.html#key)
+1. [Vue Style Guide: Keyed v-for](https://vuejs.org/v2/style-guide/#Keyed-v-for-essential )
+
+## Vue and Bootstrap
+
+1. Tooltips: Do not rely on `has-tooltip` class name for Vue components
+
+ ```javascript
+ // bad
+ <span
+ class="has-tooltip"
+ title="Some tooltip text">
+ Text
+ </span>
+
+ // good
+ <span
+ v-tooltip
+ title="Some tooltip text">
+ Text
+ </span>
+ ```
+
+1. Tooltips: When using a tooltip, include the tooltip directive, `./app/assets/javascripts/vue_shared/directives/tooltip.js`
+
+1. Don't change `data-original-title`.
+
+ ```javascript
+ // bad
+ <span data-original-title="tooltip text">Foo</span>
+
+ // good
+ <span title="tooltip text">Foo</span>
+
+ $('span').tooltip('_fixTitle');
+ ```
+
+## The JavaScript/Vue Accord
+
+The goal of this accord is to make sure we are all on the same page.
+
+1. When writing Vue, you may not use jQuery in your application.
+ 1. If you need to grab data from the DOM, you may query the DOM 1 time while bootstrapping your application to grab data attributes using `dataset`. You can do this without jQuery.
+ 1. You may use a jQuery dependency in Vue.js following [this example from the docs](https://vuejs.org/v2/examples/select2.html).
+ 1. If an outside jQuery Event needs to be listen to inside the Vue application, you may use jQuery event listeners.
+ 1. We will avoid adding new jQuery events when they are not required. Instead of adding new jQuery events take a look at [different methods to do the same task](https://vuejs.org/v2/api/#vm-emit).
+1. You may query the `window` object 1 time, while bootstrapping your application for application specific data (e.g. `scrollTo` is ok to access anytime). Do this access during the bootstrapping of your application.
+1. You may have a temporary but immediate need to create technical debt by writing code that does not follow our standards, to be refactored later. Maintainers need to be ok with the tech debt in the first place. An issue should be created for that tech debt to evaluate it further and discuss. In the coming months you should fix that tech debt, with it's priority to be determined by maintainers.
+1. When creating tech debt you must write the tests for that code before hand and those tests may not be rewritten. e.g. jQuery tests rewritten to Vue tests.
+1. You may choose to use VueX as a centralized state management. If you choose not to use VueX, you must use the *store pattern* which can be found in the [Vue.js documentation](https://vuejs.org/v2/guide/state-management.html#Simple-State-Management-from-Scratch).
+1. Once you have chosen a centralized state management solution you must use it for your entire application. i.e. Don't mix and match your state management solutions.
diff --git a/doc/development/fe_guide/style_guide_js.md b/doc/development/fe_guide/style_guide_js.md
index 43cd8180b6e..f3fa80325ef 100644
--- a/doc/development/fe_guide/style_guide_js.md
+++ b/doc/development/fe_guide/style_guide_js.md
@@ -1,731 +1,5 @@
-# Style guides and linting
+---
+redirect_to: 'style/javascript.md'
+---
-See the relevant style guides for our guidelines and for information on linting:
-
-## JavaScript
-
-We defer to [Airbnb][airbnb-js-style-guide] on most style-related
-conventions and enforce them with eslint.
-
-See [our current .eslintrc](https://gitlab.com/gitlab-org/gitlab/blob/master/.eslintrc.yml) for specific rules and patterns.
-
-### Common
-
-#### ESlint
-
-1. **Never** disable eslint rules unless you have a good reason.
- You may see a lot of legacy files with `/* eslint-disable some-rule, some-other-rule */`
- at the top, but legacy files are a special case. Any time you develop a new feature or
- refactor an existing one, you should abide by the eslint rules.
-
-1. **Never Ever EVER** disable eslint globally for a file
-
- ```javascript
- // bad
- /* eslint-disable */
-
- // better
- /* eslint-disable some-rule, some-other-rule */
-
- // best
- // nothing :)
- ```
-
-1. If you do need to disable a rule for a single violation, try to do it as locally as possible
-
- ```javascript
- // bad
- /* eslint-disable no-new */
-
- import Foo from 'foo';
-
- new Foo();
-
- // better
- import Foo from 'foo';
-
- // eslint-disable-next-line no-new
- new Foo();
- ```
-
-1. There are few rules that we need to disable due to technical debt. Which are:
- 1. [no-new](https://eslint.org/docs/rules/no-new)
- 1. [class-methods-use-this](https://eslint.org/docs/rules/class-methods-use-this)
-
-1. When they are needed _always_ place ESlint directive comment blocks on the first line of a script,
- followed by any global declarations, then a blank newline prior to any imports or code.
-
- ```javascript
- // bad
- /* global Foo */
- /* eslint-disable no-new */
- import Bar from './bar';
-
- // good
- /* eslint-disable no-new */
- /* global Foo */
-
- import Bar from './bar';
- ```
-
-1. **Never** disable the `no-undef` rule. Declare globals with `/* global Foo */` instead.
-
-1. When declaring multiple globals, always use one `/* global [name] */` line per variable.
-
- ```javascript
- // bad
- /* globals Flash, Cookies, jQuery */
-
- // good
- /* global Flash */
- /* global Cookies */
- /* global jQuery */
- ```
-
-1. Use up to 3 parameters for a function or class. If you need more accept an Object instead.
-
- ```javascript
- // bad
- fn(p1, p2, p3, p4) {}
-
- // good
- fn(options) {}
- ```
-
-#### Modules, Imports, and Exports
-
-1. Use ES module syntax to import modules
-
- ```javascript
- // bad
- const SomeClass = require('some_class');
-
- // good
- import SomeClass from 'some_class';
-
- // bad
- module.exports = SomeClass;
-
- // good
- export default SomeClass;
- ```
-
- Import statements are following usual naming guidelines, for example object literals use camel case:
-
- ```javascript
- // some_object file
- export default {
- key: 'value',
- };
-
- // bad
- import ObjectLiteral from 'some_object';
-
- // good
- import objectLiteral from 'some_object';
- ```
-
-1. Relative paths: when importing a module in the same directory, a child
- directory, or an immediate parent directory prefer relative paths. When
- importing a module which is two or more levels up, prefer either `~/` or `ee/`.
-
- In **app/assets/javascripts/my-feature/subdir**:
-
- ```javascript
- // bad
- import Foo from '~/my-feature/foo';
- import Bar from '~/my-feature/subdir/bar';
- import Bin from '~/my-feature/subdir/lib/bin';
-
- // good
- import Foo from '../foo';
- import Bar from './bar';
- import Bin from './lib/bin';
- ```
-
- In **spec/javascripts**:
-
- ```javascript
- // bad
- import Foo from '../../app/assets/javascripts/my-feature/foo';
-
- // good
- import Foo from '~/my-feature/foo';
- ```
-
- When referencing an **EE component**:
-
- ```javascript
- // bad
- import Foo from '../../../../../ee/app/assets/javascripts/my-feature/ee-foo';
-
- // good
- import Foo from 'ee/my-feature/foo';
- ```
-
-1. Avoid using IIFE. Although we have a lot of examples of files which wrap their
- contents in IIFEs (immediately-invoked function expressions),
- this is no longer necessary after the transition from Sprockets to webpack.
- Do not use them anymore and feel free to remove them when refactoring legacy code.
-
-1. Avoid adding to the global namespace.
-
- ```javascript
- // bad
- window.MyClass = class { /* ... */ };
-
- // good
- export default class MyClass { /* ... */ }
- ```
-
-1. Side effects are forbidden in any script which contains export
-
- ```javascript
- // bad
- export default class MyClass { /* ... */ }
-
- document.addEventListener("DOMContentLoaded", function(event) {
- new MyClass();
- }
- ```
-
-#### Data Mutation and Pure functions
-
-1. Strive to write many small pure functions, and minimize where mutations occur.
-
- ```javascript
- // bad
- const values = {foo: 1};
-
- function impureFunction(items) {
- const bar = 1;
-
- items.foo = items.a * bar + 2;
-
- return items.a;
- }
-
- const c = impureFunction(values);
-
- // good
- var values = {foo: 1};
-
- function pureFunction (foo) {
- var bar = 1;
-
- foo = foo * bar + 2;
-
- return foo;
- }
-
- var c = pureFunction(values.foo);
- ```
-
-1. Avoid constructors with side-effects.
- Although we aim for code without side-effects we need some side-effects for our code to run.
-
- If the class won't do anything if we only instantiate it, it's ok to add side effects into the constructor (_Note:_ The following is just an example. If the only purpose of the class is to add an event listener and handle the callback a function will be more suitable.)
-
- ```javascript
- // Bad
- export class Foo {
- constructor() {
- this.init();
- }
- init() {
- document.addEventListener('click', this.handleCallback)
- },
- handleCallback() {
-
- }
- }
-
- // Good
- export class Foo {
- constructor() {
- document.addEventListener()
- }
- handleCallback() {
- }
- }
- ```
-
- On the other hand, if a class only needs to extend a third party/add event listeners in some specific cases, they should be initialized outside of the constructor.
-
-1. Prefer `.map`, `.reduce` or `.filter` over `.forEach`
- A forEach will most likely cause side effects, it will be mutating the array being iterated. Prefer using `.map`,
- `.reduce` or `.filter`
-
- ```javascript
- const users = [ { name: 'Foo' }, { name: 'Bar' } ];
-
- // bad
- users.forEach((user, index) => {
- user.id = index;
- });
-
- // good
- const usersWithId = users.map((user, index) => {
- return Object.assign({}, user, { id: index });
- });
- ```
-
-#### Parse Strings into Numbers
-
-1. `parseInt()` is preferable over `Number()` or `+`
-
- ```javascript
- // bad
- +'10' // 10
-
- // good
- Number('10') // 10
-
- // better
- parseInt('10', 10);
- ```
-
-#### CSS classes used for JavaScript
-
-1. If the class is being used in JavaScript it needs to be prepend with `js-`
-
- ```html
- // bad
- <button class="add-user">
- Add User
- </button>
-
- // good
- <button class="js-add-user">
- Add User
- </button>
- ```
-
-### Vue.js
-
-#### `eslint-vue-plugin`
-
-We default to [eslint-vue-plugin][eslint-plugin-vue], with the `plugin:vue/recommended`.
-Please check this [rules][eslint-plugin-vue-rules] for more documentation.
-
-#### Basic Rules
-
-1. The service has it's own file
-1. The store has it's own file
-1. Use a function in the bundle file to instantiate the Vue component:
-
- ```javascript
- // bad
- class {
- init() {
- new Component({})
- }
- }
-
- // good
- document.addEventListener('DOMContentLoaded', () => new Vue({
- el: '#element',
- components: {
- componentName
- },
- render: createElement => createElement('component-name'),
- }));
- ```
-
-1. Do not use a singleton for the service or the store
-
- ```javascript
- // bad
- class Store {
- constructor() {
- if (!this.prototype.singleton) {
- // do something
- }
- }
- }
-
- // good
- class Store {
- constructor() {
- // do something
- }
- }
- ```
-
-1. Use `.vue` for Vue templates. Do not use `%template` in HAML.
-
-#### Naming
-
-1. **Extensions**: Use `.vue` extension for Vue components. Do not use `.js` as file extension ([#34371]).
-1. **Reference Naming**: Use PascalCase for their instances:
-
- ```javascript
- // bad
- import cardBoard from 'cardBoard.vue'
-
- components: {
- cardBoard,
- };
-
- // good
- import CardBoard from 'cardBoard.vue'
-
- components: {
- CardBoard,
- };
- ```
-
-1. **Props Naming:** Avoid using DOM component prop names.
-1. **Props Naming:** Use kebab-case instead of camelCase to provide props in templates.
-
- ```javascript
- // bad
- <component class="btn">
-
- // good
- <component css-class="btn">
-
- // bad
- <component myProp="prop" />
-
- // good
- <component my-prop="prop" />
- ```
-
-[#34371]: https://gitlab.com/gitlab-org/gitlab-foss/issues/34371
-
-#### Alignment
-
-1. Follow these alignment styles for the template method:
-
- 1. With more than one attribute, all attributes should be on a new line:
-
- ```javascript
- // bad
- <component v-if="bar"
- param="baz" />
-
- <button class="btn">Click me</button>
-
- // good
- <component
- v-if="bar"
- param="baz"
- />
-
- <button class="btn">
- Click me
- </button>
- ```
-
- 1. The tag can be inline if there is only one attribute:
-
- ```javascript
- // good
- <component bar="bar" />
-
- // good
- <component
- bar="bar"
- />
-
- // bad
- <component
- bar="bar" />
- ```
-
-#### Quotes
-
-1. Always use double quotes `"` inside templates and single quotes `'` for all other JS.
-
- ```javascript
- // bad
- template: `
- <button :class='style'>Button</button>
- `
-
- // good
- template: `
- <button :class="style">Button</button>
- `
- ```
-
-#### Props
-
-1. Props should be declared as an object
-
- ```javascript
- // bad
- props: ['foo']
-
- // good
- props: {
- foo: {
- type: String,
- required: false,
- default: 'bar'
- }
- }
- ```
-
-1. Required key should always be provided when declaring a prop
-
- ```javascript
- // bad
- props: {
- foo: {
- type: String,
- }
- }
-
- // good
- props: {
- foo: {
- type: String,
- required: false,
- default: 'bar'
- }
- }
- ```
-
-1. Default key should be provided if the prop is not required.
- _Note:_ There are some scenarios where we need to check for the existence of the property.
- On those a default key should not be provided.
-
- ```javascript
- // good
- props: {
- foo: {
- type: String,
- required: false,
- }
- }
-
- // good
- props: {
- foo: {
- type: String,
- required: false,
- default: 'bar'
- }
- }
-
- // good
- props: {
- foo: {
- type: String,
- required: true
- }
- }
- ```
-
-#### Data
-
-1. `data` method should always be a function
-
- ```javascript
- // bad
- data: {
- foo: 'foo'
- }
-
- // good
- data() {
- return {
- foo: 'foo'
- };
- }
- ```
-
-#### Directives
-
-1. Shorthand `@` is preferable over `v-on`
-
- ```javascript
- // bad
- <component v-on:click="eventHandler"/>
-
- // good
- <component @click="eventHandler"/>
- ```
-
-1. Shorthand `:` is preferable over `v-bind`
-
- ```javascript
- // bad
- <component v-bind:class="btn"/>
-
- // good
- <component :class="btn"/>
- ```
-
-1. Shorthand `#` is preferable over `v-slot`
-
- ```javascript
- // bad
- <template v-slot:header></template>
-
- // good
- <template #header></template>
- ```
-
-#### Closing tags
-
-1. Prefer self closing component tags
-
- ```javascript
- // bad
- <component></component>
-
- // good
- <component />
- ```
-
-#### Component usage within templates
-
-1. Prefer a component's kebab-cased name over other styles when using it in a template
-
- ```javascript
- // bad
- <MyComponent />
-
- // good
- <my-component />
- ```
-
-#### Ordering
-
-1. Tag order in `.vue` file
-
- ```
- <script>
- // ...
- </script>
-
- <template>
- // ...
- </template>
-
- // We don't use scoped styles but there are few instances of this
- <style>
- // ...
- </style>
- ```
-
-1. Properties in a Vue Component:
- Check [order of properties in components rule][vue-order].
-
-#### `:key`
-
-When using `v-for` you need to provide a *unique* `:key` attribute for each item.
-
-1. If the elements of the array being iterated have an unique `id` it is advised to use it:
-
- ```html
- <div
- v-for="item in items"
- :key="item.id"
- >
- <!-- content -->
- </div>
- ```
-
-1. When the elements being iterated don't have a unique id, you can use the array index as the `:key` attribute
-
- ```html
- <div
- v-for="(item, index) in items"
- :key="index"
- >
- <!-- content -->
- </div>
- ```
-
-1. When using `v-for` with `template` and there is more than one child element, the `:key` values must be unique. It's advised to use `kebab-case` namespaces.
-
- ```html
- <template v-for="(item, index) in items">
- <span :key="`span-${index}`"></span>
- <button :key="`button-${index}`"></button>
- </template>
- ```
-
-1. When dealing with nested `v-for` use the same guidelines as above.
-
- ```html
- <div
- v-for="item in items"
- :key="item.id"
- >
- <span
- v-for="element in array"
- :key="element.id"
- >
- <!-- content -->
- </span>
- </div>
- ```
-
-Useful links:
-
-1. [`key`](https://vuejs.org/v2/guide/list.html#key)
-1. [Vue Style Guide: Keyed v-for](https://vuejs.org/v2/style-guide/#Keyed-v-for-essential )
-
-#### Vue and Bootstrap
-
-1. Tooltips: Do not rely on `has-tooltip` class name for Vue components
-
- ```javascript
- // bad
- <span
- class="has-tooltip"
- title="Some tooltip text">
- Text
- </span>
-
- // good
- <span
- v-tooltip
- title="Some tooltip text">
- Text
- </span>
- ```
-
-1. Tooltips: When using a tooltip, include the tooltip directive, `./app/assets/javascripts/vue_shared/directives/tooltip.js`
-
-1. Don't change `data-original-title`.
-
- ```javascript
- // bad
- <span data-original-title="tooltip text">Foo</span>
-
- // good
- <span title="tooltip text">Foo</span>
-
- $('span').tooltip('_fixTitle');
- ```
-
-### The JavaScript/Vue Accord
-
-The goal of this accord is to make sure we are all on the same page.
-
-1. When writing Vue, you may not use jQuery in your application.
- 1. If you need to grab data from the DOM, you may query the DOM 1 time while bootstrapping your application to grab data attributes using `dataset`. You can do this without jQuery.
- 1. You may use a jQuery dependency in Vue.js following [this example from the docs](https://vuejs.org/v2/examples/select2.html).
- 1. If an outside jQuery Event needs to be listen to inside the Vue application, you may use jQuery event listeners.
- 1. We will avoid adding new jQuery events when they are not required. Instead of adding new jQuery events take a look at [different methods to do the same task](https://vuejs.org/v2/api/#vm-emit).
-1. You may query the `window` object 1 time, while bootstrapping your application for application specific data (e.g. `scrollTo` is ok to access anytime). Do this access during the bootstrapping of your application.
-1. You may have a temporary but immediate need to create technical debt by writing code that does not follow our standards, to be refactored later. Maintainers need to be ok with the tech debt in the first place. An issue should be created for that tech debt to evaluate it further and discuss. In the coming months you should fix that tech debt, with it's priority to be determined by maintainers.
-1. When creating tech debt you must write the tests for that code before hand and those tests may not be rewritten. e.g. jQuery tests rewritten to Vue tests.
-1. You may choose to use VueX as a centralized state management. If you choose not to use VueX, you must use the *store pattern* which can be found in the [Vue.js documentation](https://vuejs.org/v2/guide/state-management.html#Simple-State-Management-from-Scratch).
-1. Once you have chosen a centralized state management solution you must use it for your entire application. i.e. Don't mix and match your state management solutions.
-
-## SCSS
-
-- [SCSS](style_guide_scss.md)
-
-[airbnb-js-style-guide]: https://github.com/airbnb/javascript
-[eslintrc]: https://gitlab.com/gitlab-org/gitlab/blob/master/.eslintrc
-[eslint-plugin-vue]: https://github.com/vuejs/eslint-plugin-vue
-[eslint-plugin-vue-rules]: https://github.com/vuejs/eslint-plugin-vue#bulb-rules
-[vue-order]: https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/order-in-components.md
+This document was moved to [another location](style/javascript.md).
diff --git a/doc/development/fe_guide/style_guide_scss.md b/doc/development/fe_guide/style_guide_scss.md
index 54d41b42c77..2b4e6427a18 100644
--- a/doc/development/fe_guide/style_guide_scss.md
+++ b/doc/development/fe_guide/style_guide_scss.md
@@ -1,281 +1,5 @@
-# SCSS styleguide
+---
+redirect_to: 'style/scss.md'
+---
-This style guide recommends best practices for SCSS to make styles easy to read,
-easy to maintain, and performant for the end-user.
-
-## Rules
-
-### Utility Classes
-
-As part of the effort for [cleaning up our CSS and moving our components into GitLab-UI](https://gitlab.com/groups/gitlab-org/-/epics/950)
-led by the [GitLab UI WG](https://gitlab.com/gitlab-com/www-gitlab-com/merge_requests/20623) we prefer the use of utility classes over adding new CSS. However, complex CSS can be addressed by adding component classes.
-
-#### Where are utility classes defined?
-
-- [Bootstrap's Utility Classes](https://getbootstrap.com/docs/4.3/utilities/)
-- [`common.scss`](https://gitlab.com/gitlab-org/gitlab/blob/master/app/assets/stylesheets/framework/common.scss) (old)
-- [`utilities.scss`](https://gitlab.com/gitlab-org/gitlab/blob/master/app/assets/stylesheets/utilities.scss) (new)
-
-#### Where should I put new utility classes?
-
-New utility classes should be added to [`utilities.scss`](https://gitlab.com/gitlab-org/gitlab/blob/master/app/assets/stylesheets/utilities.scss). Existing classes include:
-
-| Name | Pattern | Example |
-|------|---------|---------|
-| Background color | `.bg-{variant}-{shade}` | `.bg-warning-400` |
-| Text color | `.text-{variant}-{shade}` | `.text-success-500` |
-| Font size | `.text-{size}` | `.text-2` |
-
-- `{variant}` is one of 'primary', 'secondary', 'success', 'warning', 'error'
-- `{shade}` is one of the shades listed on [colors](https://design.gitlab.com/product-foundations/colors/)
-- `{size}` is a number from 1-6 from our [Type scale](https://design.gitlab.com/product-foundations/typography)
-
-#### When should I create component classes?
-
-We recommend a "utility-first" approach.
-
-1. Start with utility classes.
-1. If composing utility classes into a component class removes code duplication and encapsulates a clear responsibility, do it.
-
-This encourages an organic growth of component classes and prevents the creation of one-off unreusable classes. Also, the kind of classes that emerge from "utility-first" tend to be design-centered (e.g. `.button`, `.alert`, `.card`) rather than domain-centered (e.g. `.security-report-widget`, `.commit-header-icon`).
-
-Examples of component classes that were created using "utility-first" include:
-
-- [`.circle-icon-container`](https://gitlab.com/gitlab-org/gitlab/blob/579fa8b8ec7eb38d40c96521f517c9dab8c3b97a/app/assets/stylesheets/framework/icons.scss#L85)
-- [`.d-flex-center`](https://gitlab.com/gitlab-org/gitlab/blob/900083d89cd6af391d26ab7922b3f64fa2839bef/app/assets/stylesheets/framework/common.scss#L425)
-
-Inspiration:
-
-- <https://tailwindcss.com/docs/utility-first/>
-- <https://tailwindcss.com/docs/extracting-components/>
-
-### Naming
-
-Filenames should use `snake_case`.
-
-CSS classes should use the `lowercase-hyphenated` format rather than
-`snake_case` or `camelCase`.
-
-```scss
-// Bad
-.class_name {
- color: #fff;
-}
-
-// Bad
-.className {
- color: #fff;
-}
-
-// Good
-.class-name {
- color: #fff;
-}
-```
-
-### Formatting
-
-You should always use a space before a brace, braces should be on the same
-line, each property should each get its own line, and there should be a space
-between the property and its value.
-
-```scss
-// Bad
-.container-item {
- width: 100px; height: 100px;
- margin-top: 0;
-}
-
-// Bad
-.container-item
-{
- width: 100px;
- height: 100px;
- margin-top: 0;
-}
-
-// Bad
-.container-item{
- width:100px;
- height:100px;
- margin-top:0;
-}
-
-// Good
-.container-item {
- width: 100px;
- height: 100px;
- margin-top: 0;
-}
-```
-
-Note that there is an exception for single-line rulesets, although these are
-not typically recommended.
-
-```scss
-p { margin: 0; padding: 0; }
-```
-
-### Colors
-
-HEX (hexadecimal) colors should use shorthand where possible, and should use
-lower case letters to differentiate between letters and numbers, e.g. `#E3E3E3`
-vs. `#e3e3e3`.
-
-```scss
-// Bad
-p {
- color: #ffffff;
-}
-
-// Bad
-p {
- color: #FFFFFF;
-}
-
-// Good
-p {
- color: #fff;
-}
-```
-
-### Indentation
-
-Indentation should always use two spaces for each indentation level.
-
-```scss
-// Bad, four spaces
-p {
- color: #f00;
-}
-
-// Good
-p {
- color: #f00;
-}
-```
-
-### Semicolons
-
-Always include semicolons after every property. When the stylesheets are
-minified, the semicolons will be removed automatically.
-
-```scss
-// Bad
-.container-item {
- width: 100px;
- height: 100px
-}
-
-// Good
-.container-item {
- width: 100px;
- height: 100px;
-}
-```
-
-### Shorthand
-
-The shorthand form should be used for properties that support it.
-
-```scss
-// Bad
-margin: 10px 15px 10px 15px;
-padding: 10px 10px 10px 10px;
-
-// Good
-margin: 10px 15px;
-padding: 10px;
-```
-
-### Zero Units
-
-Omit length units on zero values, they're unnecessary and not including them
-is slightly more performant.
-
-```scss
-// Bad
-.item-with-padding {
- padding: 0px;
-}
-
-// Good
-.item-with-padding {
- padding: 0;
-}
-```
-
-### Selectors with a `js-` Prefix
-
-Do not use any selector prefixed with `js-` for styling purposes. These
-selectors are intended for use only with JavaScript to allow for removal or
-renaming without breaking styling.
-
-### IDs
-
-Don't use ID selectors in CSS.
-
-```scss
-// Bad
-#my-element {
- padding: 0;
-}
-
-// Good
-.my-element {
- padding: 0;
-}
-```
-
-### Variables
-
-Before adding a new variable for a color or a size, guarantee:
-
-- There isn't already one
-- There isn't a similar one we can use instead.
-
-## Linting
-
-We use [SCSS Lint](https://github.com/sds/scss-lint) to check for style guide conformity. It uses the
-ruleset in `.scss-lint.yml`, which is located in the home directory of the
-project.
-
-To check if any warnings will be produced by your changes, you can run `rake
-scss_lint` in the GitLab directory. SCSS Lint will also run in GitLab CI to
-catch any warnings.
-
-If the Rake task is throwing warnings you don't understand, SCSS Lint's
-documentation includes [a full list of their linters][scss-lint-documentation](https://github.com/sds/scss-lint/blob/master/lib/scss_lint/linter/README.md).
-
-### Fixing issues
-
-If you want to automate changing a large portion of the codebase to conform to
-the SCSS style guide, you can use [CSSComb][csscomb]. First install
-[Node][node] and [NPM][npm], then run `npm install csscomb -g` to install
-CSSComb globally (system-wide). Run it in the GitLab directory with
-`csscomb app/assets/stylesheets` to automatically fix issues with CSS/SCSS.
-
-Note that this won't fix every problem, but it should fix a majority.
-
-### Ignoring issues
-
-If you want a line or set of lines to be ignored by the linter, you can use
-`// scss-lint:disable RuleName` ([more info](https://github.com/sds/scss-lint#disabling-linters-via-source)):
-
-```scss
-// This lint rule is disabled because it is supported only in Chrome/Safari
-// scss-lint:disable PropertySpelling
-body {
- text-decoration-skip: ink;
-}
-// scss-lint:enable PropertySpelling
-```
-
-Make sure a comment is added on the line above the `disable` rule, otherwise the
-linter will throw a warning. `DisableLinterReason` is enabled to make sure the
-style guide isn't being ignored, and to communicate to others why the style
-guide is ignored in this instance.
-
-[csscomb]: https://github.com/csscomb/csscomb.js
-[node]: https://github.com/nodejs/node
-[npm]: https://www.npmjs.com/
+This document was moved to [another location](style/scss.md).
diff --git a/doc/development/fe_guide/tooling.md b/doc/development/fe_guide/tooling.md
new file mode 100644
index 00000000000..066c2575e2d
--- /dev/null
+++ b/doc/development/fe_guide/tooling.md
@@ -0,0 +1,154 @@
+# Tooling
+
+## ESLint
+
+We use ESLint to encapsulate and enforce frontend code standards. Our configuration may be found in the [`gitlab-eslint-config`](https://gitlab.com/gitlab-org/gitlab-eslint-config) project.
+
+### Disabling ESLint in new files
+
+Do not disable ESLint when creating new files. Existing files may have existing rules
+disabled due to legacy compatibility reasons but they are in the process of being refactored.
+
+Do not disable specific ESLint rules. To avoid introducing technical debt, you may disable the following
+rules only if you are invoking/instantiating existing code modules.
+
+- [`no-new`](https://eslint.org/docs/rules/no-new)
+- [`class-method-use-this`](https://eslint.org/docs/rules/class-methods-use-this)
+
+NOTE: **Note:**
+Disable these rules on a per-line basis. This makes it easier to refactor
+in the future. E.g. use `eslint-disable-next-line` or `eslint-disable-line`.
+
+### Disabling ESLint for a single violation
+
+If you do need to disable a rule for a single violation, disable it for the smallest amount of code necessary:
+
+```javascript
+// bad
+/* eslint-disable no-new */
+
+import Foo from 'foo';
+
+new Foo();
+
+// better
+import Foo from 'foo';
+
+// eslint-disable-next-line no-new
+new Foo();
+```
+
+### The `no-undef` rule and declaring globals
+
+**Never** disable the `no-undef` rule. Declare globals with `/* global Foo */` instead.
+
+When declaring multiple globals, always use one `/* global [name] */` line per variable.
+
+```javascript
+// bad
+/* globals Flash, Cookies, jQuery */
+
+// good
+/* global Flash */
+/* global Cookies */
+/* global jQuery */
+```
+
+## Formatting with Prettier
+
+Our code is automatically formatted with [Prettier](https://prettier.io) to follow our style guides. Prettier is taking care of formatting .js, .vue, and .scss files based on the standard prettier rules. You can find all settings for Prettier in `.prettierrc`.
+
+### Editor
+
+The easiest way to include prettier in your workflow is by setting up your preferred editor (all major editors are supported) accordingly. We suggest setting up prettier to run automatically when each file is saved. Find [here](https://prettier.io/docs/en/editors.html) the best way to set it up in your preferred editor.
+
+Please take care that you only let Prettier format the same file types as the global Yarn script does (.js, .vue, and .scss). In VSCode by example you can easily exclude file formats in your settings file:
+
+```
+ "prettier.disableLanguages": [
+ "json",
+ "markdown"
+ ],
+```
+
+### Yarn Script
+
+The following yarn scripts are available to do global formatting:
+
+```
+yarn prettier-staged-save
+```
+
+Updates all currently staged files (based on `git diff`) with Prettier and saves the needed changes.
+
+```
+yarn prettier-staged
+```
+
+Checks all currently staged files (based on `git diff`) with Prettier and log which files would need manual updating to the console.
+
+```
+yarn prettier-all
+```
+
+Checks all files with Prettier and logs which files need manual updating to the console.
+
+```
+yarn prettier-all-save
+```
+
+Formats all files in the repository with Prettier. (This should only be used to test global rule updates otherwise you would end up with huge MR's).
+
+The source of these Yarn scripts can be found in `/scripts/frontend/prettier.js`.
+
+#### Scripts during Conversion period
+
+```
+node ./scripts/frontend/prettier.js check-all ./vendor/
+```
+
+This will go over all files in a specific folder check it.
+
+```
+node ./scripts/frontend/prettier.js save-all ./vendor/
+```
+
+This will go over all files in a specific folder and save it.
+
+### VSCode Settings
+
+#### Select Prettier as default formatter
+
+To select Prettier as a formatter, add the following properties to your User or Workspace Settings:
+
+```javascript
+{
+ "[html]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
+ },
+ "[javascript]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
+ },
+ "[vue]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
+ }
+}
+```
+
+#### Format on Save
+
+To automatically format your files with Prettier, add the following properties to your User or Workspace Settings:
+
+```javascript
+{
+ "[html]": {
+ "editor.formatOnSave": true
+ },
+ "[javascript]": {
+ "editor.formatOnSave": true
+ },
+ "[vue]": {
+ "editor.formatOnSave": true
+ },
+}
+```
diff --git a/doc/development/fe_guide/vue.md b/doc/development/fe_guide/vue.md
index bca24e6ee0b..96bc89675fe 100644
--- a/doc/development/fe_guide/vue.md
+++ b/doc/development/fe_guide/vue.md
@@ -78,7 +78,7 @@ document.addEventListener('DOMContentLoaded', () => new Vue({
render(createElement) {
return createElement('my-component', {
props: {
- endpoint: this.isLoading,
+ endpoint: this.endpoint,
},
});
},
@@ -179,7 +179,7 @@ Check this [page](vuex.md) for more details.
## Style guide
-Please refer to the Vue section of our [style guide](style_guide_js.md#vuejs)
+Please refer to the Vue section of our [style guide](style/vue.md)
for best practices while writing your Vue components and templates.
## Testing Vue Components
@@ -284,7 +284,7 @@ need to test the rendered output. [Vue][vue-test] guide's to unit test show us e
One should apply to be a Vue.js expert by opening an MR when the Merge Request's they create and review show:
-- Deep understanding of Vue and Vuex reactivy
+- Deep understanding of Vue and Vuex reactivity
- Vue and Vuex code are structured according to both official and our guidelines
- Full understanding of testing a Vue and Vuex application
- Vuex code follows the [documented pattern](vuex.md#actions-pattern-request-and-receive-namespaces)
diff --git a/doc/development/feature_flags/controls.md b/doc/development/feature_flags/controls.md
index cbbbe1cd5ea..3799672ee11 100644
--- a/doc/development/feature_flags/controls.md
+++ b/doc/development/feature_flags/controls.md
@@ -19,7 +19,7 @@ run:
## Where to run commands
To increase visibility, we recommend that GitLab team members run feature flag
-related Chatops commands within certain slack channels based on the environment
+related Chatops commands within certain Slack channels based on the environment
and related feature. For the [staging](https://staging.gitlab.com)
and [development](https://dev.gitlab.org) environments of GitLab.com,
the commands should run in a channel for the stage the feature is relevant too.
diff --git a/doc/development/feature_flags/development.md b/doc/development/feature_flags/development.md
index c410c7eae41..cb5d5fe9ab4 100644
--- a/doc/development/feature_flags/development.md
+++ b/doc/development/feature_flags/development.md
@@ -38,7 +38,7 @@ Feature.enabled?(:feature_flag, project, default_enabled: true)
The [`Project#feature_available?`][project-fa],
[`Namespace#feature_available?`][namespace-fa] (EE), and
[`License.feature_available?`][license-fa] (EE) methods all implicitly check for
-a feature flag by the same name as the provided argument.
+a by default enabled feature flag with the same name as the provided argument.
For example if a feature is license-gated, there's no need to add an additional
explicit feature flag check since the flag will be checked as part of the
@@ -56,12 +56,19 @@ isn't gated by a License or Plan.
unless the feature is explicitly disabled or limited to a percentage of users,
the feature flag check will default to `true`.**
-As an example, if you were to ship the backend half of a feature behind a flag,
-you'd want to explicitly disable that flag until the frontend half is also ready
-to be shipped. To make sure this feature is disabled for both GitLab.com and
-self-managed instances you'd need to explicitly call `Feature.enabled?` method
-before the `feature_available` method. This ensures the feature_flag is defaulting
-to `false`.
+This is relevant when developing the feature using
+[several smaller merge requests](https://about.gitlab.com/handbook/values/#make-small-merge-requests), or when the feature is considered to be an
+[alpha or beta](https://about.gitlab.com/handbook/product/#alpha-beta-ga), and
+should not be available by default.
+
+As an example, if you were to ship the frontend half of a feature without the
+backend, you'd want to disable the feature entirely until the backend half is
+also ready to be shipped. To make sure this feature is disabled for both
+GitLab.com and self-managed instances, you should use the
+[`Namespace#alpha_feature_available?`](https://gitlab.com/gitlab-org/gitlab/blob/458749872f4a8f27abe8add930dbb958044cb926/ee/app/models/ee/namespace.rb#L113) or
+[`Namespace#beta_feature_available?`](https://gitlab.com/gitlab-org/gitlab/blob/458749872f4a8f27abe8add930dbb958044cb926/ee/app/models/ee/namespace.rb#L100-112)
+method, according to our [definitions](https://about.gitlab.com/handbook/product/#alpha-beta-ga). This ensures the feature is disabled unless the feature flag is
+_explicitly_ enabled.
## Feature groups
@@ -129,3 +136,9 @@ In the rails console (`rails c`), enter the following command to enable your fea
```ruby
Feature.enable(:feature_flag_name)
```
+
+Similarly, the following command will disable a feature flag:
+
+```ruby
+Feature.disable(:feature_flag_name)
+```
diff --git a/doc/development/feature_flags/index.md b/doc/development/feature_flags/index.md
index f1374b9e280..f5915f2c0a8 100644
--- a/doc/development/feature_flags/index.md
+++ b/doc/development/feature_flags/index.md
@@ -10,3 +10,6 @@ Before using feature flags for GitLab's development, read through the following:
- [Process for using features flags](process.md).
- [Developing with feature flags](development.md).
- [Controlling feature flags](controls.md).
+
+When documenting feature flags, see [Feature flags](../documentation/styleguide.md#feature-flags)
+in the Documentation Style Guide.
diff --git a/doc/development/git_object_deduplication.md b/doc/development/git_object_deduplication.md
index 6d9eb90d482..938882ba5a2 100644
--- a/doc/development/git_object_deduplication.md
+++ b/doc/development/git_object_deduplication.md
@@ -111,7 +111,7 @@ are as follows:
contents of the pool repository are a Git clone of the source
project repository.
- The occasion for creating a pool is when an existing eligible
- (public, hashed storage, non-forked) GitLab project gets forked and
+ (non-private, hashed storage, non-forked) GitLab project gets forked and
this project does not belong to a pool repository yet. The fork
parent project becomes the source project of the new pool, and both
the fork parent and the fork child project become members of the new
diff --git a/doc/development/gitaly.md b/doc/development/gitaly.md
index 7d3c2b8fdf8..1fa555de994 100644
--- a/doc/development/gitaly.md
+++ b/doc/development/gitaly.md
@@ -277,14 +277,81 @@ Here are the steps to gate a new feature in Gitaly behind a feature flag.
### GitLab Rails
-1. Add feature flag to `lib/gitlab/gitaly_client.rb` (in GitLab Rails):
+1. In GitLab Rails:
- ```ruby
- SERVER_FEATURE_FLAGS = %w[go-find-all-tags].freeze
- ```
+ 1. Add the feature flag to `SERVER_FEATURE_FLAGS` in `lib/feature/gitaly.rb`:
+
+ ```ruby
+ SERVER_FEATURE_FLAGS = %w[go-find-all-tags].freeze
+ ```
+
+ 1. Search for `["gitaly"]["features"]` (currently in `spec/requests/api/internal/base_spec.rb`)
+ and fix the expected results for the tests by adding the new feature flag into it:
+
+ ```ruby
+ expect(json_response["gitaly"]["features"]).to eq('gitaly-feature-get-all-lfs-pointers-go' => 'true', 'gitaly-feature-go-find-all-tags' => 'true')
+ ```
-1. Test in rails console by setting feature flag:
+1. Test in a Rails console by setting the feature flag:
+
+ NOTE: **Note:**
+ Pay attention to the name of the flag and the one used in the Rails console.
+ There is a difference between them (dashes replaced by underscores and name
+ prefix is changed).
```ruby
- Feature.enable('gitaly_go-find-all-tags')
+ Feature.enable('gitaly_go_find_all_tags')
```
+
+### Testing with GDK
+
+To be sure that the flag is set correctly and it goes into Gitaly, you can check
+the integration by using GDK:
+
+1. The state of the flag must be observable. To check it, you need to enable it
+ by fetching the Prometheus metrics:
+ 1. Navigate to GDK's root directory.
+ 1. Make sure you have the proper branch checked out for Gitaly.
+ 1. Recompile it with `make gitaly-setup` and restart the service with `gdk restart gitaly`.
+ 1. Make sure your setup is runnig: `gdk status | grep praefect`.
+ 1. Check what config file is used: `cat ./services/praefect/run | grep praefect` value of the `-config` flag
+ 1. Uncomment `prometheus_listen_addr` in the configuration file and run `gdk restart gitaly`.
+
+1. Make sure that the flag is not enabled yet:
+ 1. Perform whatever action is required to trigger your changes (project creation,
+ submitting commit, observing history, etc.).
+ 1. Check that the list of current metrics has the new counter for the feature flag:
+
+ ```sh
+ curl --silent http://localhost:9236/metrics | grep go_find_all_tags
+ ```
+
+1. Once you observe the metrics for the new feature flag and it increments, you
+ can enable the new feature:
+ 1. Navigate to GDK's root directory.
+ 1. Start a Rails console:
+
+ ```sh
+ bundle install && bundle exec rails console
+ ```
+
+ 1. Check the list of feature flags:
+
+ ```ruby
+ Feature::Gitaly.server_feature_flags
+ ```
+
+ It should be disabled `"gitaly-feature-go-find-all-tags"=>"false"`.
+ 1. Enable it:
+
+ ```ruby
+ Feature.enable('gitaly_go_find_all_tags')
+ ```
+
+ 1. Exit the Rails console and perform whatever action is required to trigger
+ your changes (project creation, submitting commit, observing history, etc.).
+ 1. Verify the feature is on by observing the metrics for it:
+
+ ```sh
+ curl --silent http://localhost:9236/metrics | grep go_find_all_tags
+ ```
diff --git a/doc/development/go_guide/index.md b/doc/development/go_guide/index.md
index 33dd9dd9b6f..724bc240bc2 100644
--- a/doc/development/go_guide/index.md
+++ b/doc/development/go_guide/index.md
@@ -336,6 +336,49 @@ Generated docker images should have the program at their `Entrypoint` to create
portable commands. That way, anyone can run the image, and without parameters
it will display its help message (if `cli` has been used).
+## Distributing Go binaries
+
+With the exception of [GitLab Runner](https://gitlab.com/gitlab-org/gitlab-runner),
+which publishes its own binaries, our Go binaries are created by projects
+managed by the [Distribution group](https://about.gitlab.com/handbook/product/categories/#distribution-group).
+
+The [Omnibus GitLab](https://gitlab.com/gitlab-org/omnibus-gitlab) project creates a
+single, monolithic operating system package containing all the binaries, while
+the [Cloud-Native GitLab (CNG)](https://gitlab.com/gitlab-org/build/CNG) project
+publishes a set of Docker images and Helm charts to glue them together.
+
+Both approaches use the same version of Go for all projects, so it's important
+to ensure all our Go-using projects have at least one Go version in common in
+their test matrices. You can check the version of Go currently being used by
+[Omnibus](https://gitlab.com/gitlab-org/gitlab-omnibus-builder/blob/master/docker/Dockerfile_debian_10#L59),
+and the version being used for [CNG](https://gitlab.com/gitlab-org/build/cng/blob/master/ci_files/variables.yml#L12).
+
+### Updating Go version
+
+We should always use a [supported version](https://golang.org/doc/devel/release.html#policy)
+of Go, i.e., one of the three most recent minor releases, and should always use
+the most recent patch-level for that version, as it may contain security fixes.
+
+Changing the version affects every project being compiled, so it's important to
+ensure that all projects have been updated to test against the new Go version
+before changing the package builders to use it. Despite [Go's compatibility promise](https://golang.org/doc/go1compat),
+changes between minor versions can expose bugs or cause problems in our projects.
+
+Once you've picked a new Go version to use, the steps to update Omnibus and CNG
+are:
+
+- [Create a merge request in the CNG project](https://gitlab.com/gitlab-org/build/CNG/edit/master/ci_files/variables.yml?branch_name=update-go-version),
+ updating the `GO_VERSION` in `ci_files/variables.yml`.
+- Create a merge request in the [`gitlab-omnibus-builder` project](https://gitlab.com/gitlab-org/gitlab-omnibus-builder),
+ updating every file in the `docker/` directory so the `GO_VERSION` is set
+ appropriately. [Here's an example](https://gitlab.com/gitlab-org/gitlab-omnibus-builder/merge_requests/125/diffs).
+- Tag a new release of `gitlab-omnibus-builder` containing the change.
+- [Create a merge request in the `gitlab-omnibus` project](https://gitlab.com/gitlab-org/omnibus-gitlab/edit/master/.gitlab-ci.yml?branch_name=update-gitlab-omnibus-builder-version),
+ updating the `BUILDER_IMAGE_REVISION` to match the newly-created tag.
+
+To reduce unnecessary differences between two distribution methods, Omnibus and
+CNG **should always use the same Go version**.
+
---
[Return to Development documentation](../README.md).
diff --git a/doc/development/gotchas.md b/doc/development/gotchas.md
index da27ae9110b..7529278f902 100644
--- a/doc/development/gotchas.md
+++ b/doc/development/gotchas.md
@@ -155,7 +155,7 @@ refresh_service.execute(oldrev, newrev, ref)
See ["Why is it bad style to `rescue Exception => e` in Ruby?"](https://stackoverflow.com/questions/10048173/why-is-it-bad-style-to-rescue-exception-e-in-ruby).
_**Note:** This rule is [enforced automatically by
-Rubocop](https://gitlab.com/gitlab-org/gitlab/blob/8-4-stable/.rubocop.yml#L911-914)._
+Rubocop](https://gitlab.com/gitlab-org/gitlab-foss/blob/8-4-stable/.rubocop.yml#L911-914)._
## Do not use inline JavaScript in views
diff --git a/doc/development/i18n/externalization.md b/doc/development/i18n/externalization.md
index c8960ac0f61..903ca6ada4a 100644
--- a/doc/development/i18n/externalization.md
+++ b/doc/development/i18n/externalization.md
@@ -311,6 +311,45 @@ Developer documentation][mdn].
[mdn]: https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Localization_content_best_practices#Splitting
+##### Vue components interpolation
+
+When translating UI text in Vue components, you might want to include child components inside
+the translation string.
+You could not use a JavaScript-only solution to render the translation,
+because Vue would not be aware of the child components and would render them as plain text.
+
+For this use case, you should use the `gl-sprintf` component which is maintained
+in **GitLab UI**.
+
+The `gl-sprintf` component accepts a `message` property, which is the translatable string,
+and it exposes a named slot for every placeholder in the string, which lets you include Vue
+components easily.
+
+Assume you want to print the translatable string
+`Pipeline %{pipelineId} triggered %{timeago} by %{author}`. To replace the `%{timeago}` and
+`%{author}` placeholders with Vue components, here's how you would do that with `gl-sprintf`:
+
+```html
+<template>
+ <div>
+ <gl-sprintf :message="__('Pipeline %{pipelineId} triggered %{timeago} by %{author}')">
+ <template #pipelineId>{{ pipeline.id }}</template>
+ <template #timeago>
+ <timeago :time="pipeline.triggerTime" />
+ </template>
+ <template #author>
+ <gl-avatar-labeled
+ :src="pipeline.triggeredBy.avatarPath"
+ :label="pipeline.triggeredBy.name"
+ />
+ </template>
+ </gl-sprintf>
+ </div>
+</template>
+```
+
+For more information, see the [`gl-sprintf`](https://gitlab-org.gitlab.io/gitlab-ui/?path=/story/base-sprintf--default) documentation.
+
## Updating the PO files with the new content
Now that the new content is marked for translation, we need to update
diff --git a/doc/development/img/build_package_v12_6.png b/doc/development/img/build_package_v12_6.png
new file mode 100644
index 00000000000..c3d99e6c6ce
--- /dev/null
+++ b/doc/development/img/build_package_v12_6.png
Binary files differ
diff --git a/doc/development/img/trigger_build_package_v12_6.png b/doc/development/img/trigger_build_package_v12_6.png
new file mode 100644
index 00000000000..6f5879bd8c4
--- /dev/null
+++ b/doc/development/img/trigger_build_package_v12_6.png
Binary files differ
diff --git a/doc/development/img/trigger_ss1.png b/doc/development/img/trigger_ss1.png
deleted file mode 100644
index addbc551f73..00000000000
--- a/doc/development/img/trigger_ss1.png
+++ /dev/null
Binary files differ
diff --git a/doc/development/img/trigger_ss2.png b/doc/development/img/trigger_ss2.png
deleted file mode 100644
index 02ef3810a59..00000000000
--- a/doc/development/img/trigger_ss2.png
+++ /dev/null
Binary files differ
diff --git a/doc/development/import_export.md b/doc/development/import_export.md
index 38119d9bbd0..3ee723bc897 100644
--- a/doc/development/import_export.md
+++ b/doc/development/import_export.md
@@ -208,7 +208,7 @@ and it is useful for knowing which versions won't be compatible between them.
### When to bump the version up
-We will have to bump the verision if we rename model/columns or perform any format
+We will have to bump the version if we rename model/columns or perform any format
modifications in the JSON structure or the file structure of the archive file.
We do not need to bump the version up in any of the following cases:
diff --git a/doc/development/internal_api.md b/doc/development/internal_api.md
index b08112aacb2..dbb721b6018 100644
--- a/doc/development/internal_api.md
+++ b/doc/development/internal_api.md
@@ -4,8 +4,8 @@ The internal API is used by different GitLab components, it can not be
used by other consumers. This documentation is intended for people
working on the GitLab codebase.
-This documentation does not yet include the internal api used by
-GitLab pages.
+This documentation does not yet include the internal API used by
+GitLab Pages.
## Authentication
@@ -19,7 +19,7 @@ file, and include the token Base64 encoded in a `secret_token` param
or in the `Gitlab-Shared-Secret` header.
NOTE: **Note:**
-The internal api used by GitLab pages uses a different kind of
+The internal API used by GitLab Pages uses a different kind of
authentication.
## Git Authentication
@@ -119,7 +119,7 @@ curl --request POST --header "Gitlab-Shared-Secret: <Base64 encoded token>" --da
## Authorized Keys Check
This endpoint is called by the GitLab-shell authorized keys
-check. Which is called by OpenSSH for [fast ssh key
+check. Which is called by OpenSSH for [fast SSH key
lookup](../administration/operations/fast_ssh_key_lookup.md).
| Attribute | Type | Required | Description |
@@ -287,12 +287,10 @@ Example response:
}
```
-## Notify Post Receive [UNUSED] ?
-
## PostReceive
Called from Gitaly after a receiving a push. This triggers the
-`PostReceive`-worker in sidekiq, processes the passed push options and
+`PostReceive`-worker in Sidekiq, processes the passed push options and
builds the response including messages that need to be displayed to
the user.
@@ -300,7 +298,7 @@ the user.
|:----------|:-------|:---------|:------------|
| `identifier` | string | yes | `user-[id]` or `key-[id]` Identifying the user performing the push |
| `gl_repository` | string | yes | identifier of the repository being pushed to |
-| `push_options` | [string] | no | array of push options |
+| `push_options` | string array | no | array of push options |
| `changes` | string | no | refs to be updated in the push in the format `oldrev newrev refname\n`. |
```
diff --git a/doc/development/issuable-like-models.md b/doc/development/issuable-like-models.md
index ce19fd77496..3892f56156e 100644
--- a/doc/development/issuable-like-models.md
+++ b/doc/development/issuable-like-models.md
@@ -1,7 +1,9 @@
# Issuable-like Rails models utilities
-GitLab Rails codebase contains several models that hold common functionality and behave similarly to an [Issue]. Other
-examples of `Issuable`s are [Merge Requests] and [Epics].
+GitLab Rails codebase contains several models that hold common functionality and behave similarly to
+[Issues](https://docs.gitlab.com/ee/user/project/issues/). Other examples of "issuables"
+are [Merge Requests](https://docs.gitlab.com/ee/user/project/merge_requests/) and
+[Epics](https://docs.gitlab.com/ee/user/group/epics/).
This guide accumulates guidelines on working with such Rails models.
@@ -13,7 +15,3 @@ There are max length constraints for the most important text fields for `Issuabl
- `title_html`: 800 chars
- `description`: 1 megabyte
- `description_html`: 5 megabytes
-
-[Issue]: https://docs.gitlab.com/ee/user/project/issues
-[Merge Requests]: https://docs.gitlab.com/ee/user/project/merge_requests
-[Epics]: https://docs.gitlab.com/ee/user/group/epics
diff --git a/doc/development/licensing.md b/doc/development/licensing.md
index 40ff604c7c4..052c90c2b37 100644
--- a/doc/development/licensing.md
+++ b/doc/development/licensing.md
@@ -65,7 +65,6 @@ Libraries with the following licenses require legal approval for use:
- [GNU GPL](https://choosealicense.com/licenses/gpl-3.0/) (version 1, [version 2][GPLv2], [version 3][GPLv3], or any future versions): GPL-licensed libraries cannot be linked to from non-GPL projects.
- [GNU AGPLv3](https://choosealicense.com/licenses/agpl-3.0/): AGPL-licensed libraries cannot be linked to from non-GPL projects.
- [Open Software License (OSL)][OSL]: is a copyleft license. In addition, the FSF [recommend against its use][OSL-GNU].
-- [Facebook BSD + PATENTS][Facebook]: is a 3-clause BSD license with a patent grant that has been deemed [Category X][x-list] by the Apache foundation.
- [WTFPL][WTFPL]: is a public domain dedication [rejected by the OSI (3.2)][WTFPL-OSI]. Also has a strong language which is not in accordance with our diversity policy.
## GPL Cooperation Commitment
@@ -124,7 +123,6 @@ Dependencies which are only used in development or test environment are exempt f
[Org-Repo]: https://gitlab.com/gitlab-com/organization
[UNLICENSE]: https://unlicense.org
[OWFa1]: http://www.openwebfoundation.org/legal/the-owf-1-0-agreements/owfa-1-0
-[Facebook]: https://code.facebook.com/pages/850928938376556
[x-list]: https://www.apache.org/legal/resolved.html#category-x
[Acceptable-Licenses]: #acceptable-licenses
[Unacceptable-Licenses]: #unacceptable-licenses
diff --git a/doc/development/logging.md b/doc/development/logging.md
index b43f1029cc6..2eb140d3b7e 100644
--- a/doc/development/logging.md
+++ b/doc/development/logging.md
@@ -39,7 +39,7 @@ Note that currently on GitLab.com, any messages in `production.log` will
NOT get indexed by Elasticsearch due to the sheer volume and noise. They
do end up in Google Stackdriver, but it is still harder to search for
logs there. See the [GitLab.com logging
-documentation](https://gitlab.com/gitlab-com/runbooks/blob/master/howto/logging.md)
+documentation](https://gitlab.com/gitlab-com/runbooks/blob/master/logging/doc/README.md)
for more details.
## Use structured (JSON) logging
@@ -127,6 +127,68 @@ importer progresses. Here's what to do:
logger.info(message: "Import error", error_code: 1, error: "I/O failure")
```
+## Exception Handling
+
+It often happens that you catch the exception and want to track it.
+
+It should be noted that manual logging of exceptions is not allowed, as:
+
+1. Manual logged exceptions can leak confidential data,
+1. Manual logged exception very often require to clean backtrace
+ which reduces the boilerplate,
+1. Very often manually logged exception needs to be tracked to Sentry as well,
+1. Manually logged exceptions does not use `correlation_id`, which makes hard
+ to pin them to request, user and context in which this exception was raised,
+1. It is very likely that manually logged exceptions will end-up across
+ multiple files, which increases burden scraping all logging files.
+
+To avoid duplicating and having consistent behavior the `Gitlab::ErrorTracking`
+provides helper methods to track exceptions:
+
+1. `Gitlab::ErrorTracking.track_and_raise_exception`: this method logs,
+ sends exception to Sentry (if configured) and re-raises the exception,
+1. `Gitlab::ErrorTracking.track_exception`: this method only logs
+ and sends exception to Sentry (if configured),
+1. `Gitlab::ErrorTracking.log_exception`: this method only logs the exception,
+ and DOES NOT send the exception to Sentry,
+1. `Gitlab::ErrorTracking.track_and_raise_for_dev_exception`: this method logs,
+ sends exception to Sentry (if configured) and re-raises the exception
+ for development and test enviroments.
+
+It is advised to only use `Gitlab::ErrorTracking.track_and_raise_exception`
+and `Gitlab::ErrorTracking.track_exception` as presented on below examples.
+
+Consider adding additional extra parameters to provide more context
+for each tracked exception.
+
+### Example
+
+```ruby
+class MyService < ::BaseService
+ def execute
+ project.perform_expensive_operation
+
+ success
+ rescue => e
+ Gitlab::ErrorTracking.track_exception(e, project_id: project.id)
+
+ error('Exception occurred')
+ end
+end
+```
+
+```ruby
+class MyService < ::BaseService
+ def execute
+ project.perform_expensive_operation
+
+ success
+ rescue => e
+ Gitlab::ErrorTracking.track_and_raise_exception(e, project_id: project.id)
+ end
+end
+```
+
## Additional steps with new log files
1. Consider log retention settings. By default, Omnibus will rotate any
diff --git a/doc/development/mass_insert.md b/doc/development/mass_insert.md
new file mode 100644
index 00000000000..891ce0db87d
--- /dev/null
+++ b/doc/development/mass_insert.md
@@ -0,0 +1,13 @@
+# Mass Inserting Rails Models
+
+Setting the environment variable [`MASS_INSERT=1`](rake_tasks.md#env-variables)
+when running `rake setup` will create millions of records, but these records
+aren't visible to the `root` user by default.
+
+To make any number of the mass-inserted projects visible to the `root` user, run
+the following snippet in the rails console.
+
+```ruby
+u = User.find(1)
+Project.last(100).each { |p| p.set_create_timestamps && p.add_maintainer(u, current_user: u) } # Change 100 to whatever number of projects you need access to
+```
diff --git a/doc/development/merge_request_performance_guidelines.md b/doc/development/merge_request_performance_guidelines.md
index 2e80e813a4b..ec50b1557d4 100644
--- a/doc/development/merge_request_performance_guidelines.md
+++ b/doc/development/merge_request_performance_guidelines.md
@@ -75,7 +75,7 @@ data set is for this feature to process, and what problems it might cause.
If you would think about the following example that puts
a strong emphasis of data set being processed.
The problem is simple: you want to filter a list of files from
-some git repository. Your feature requests a list of all files
+some Git repository. Your feature requests a list of all files
from the repository and perform search for the set of files.
As an author you should in context of that problem consider
the following:
@@ -165,6 +165,54 @@ can quickly spiral out of control.
There are some cases where this may be needed. If this is the case this should
be clearly mentioned in the merge request description.
+## Batch process
+
+**Summary:** Iterating a single process to external services (e.g. PostgreSQL, Redis, Object Storage, etc)
+should be executed in a **batch-style** in order to reduce connection overheads.
+
+For fetching rows from various tables in a batch-style, please see [Eager Loading](#eager-loading) section.
+
+### Example: Delete multiple files from Object Storage
+
+When you delete multiple files from object storage (e.g. GCS),
+executing a single REST API call multiple times is a quite expensive
+process. Ideally, this should be done in a batch-style, for example, S3 provides
+[batch deletion API](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html),
+so it'd be a good idea to consider such an approach.
+
+The `FastDestroyAll` module might help this situation. It's a
+small framework when you remove a bunch of database rows and its associated data
+in a batch style.
+
+## Timeout
+
+**Summary:** You should set a reasonable timeout when the system invokes HTTP calls
+to external services (e.g. Kubernetes), and it should be executed in Sidekiq, not
+in Puma/Unicorn threads.
+
+Often, GitLab needs to communicate with an external service such as Kubernetes
+clusters. In this case, it's hard to estimate when the external service finishes
+the requested process, for example, if it's a user-owned cluster that is inactive for some reason,
+GitLab might wait for the response forever ([Example](https://gitlab.com/gitlab-org/gitlab/issues/31475)).
+This could result in Puma/Unicorn timeout and should be avoided at all cost.
+
+You should set a reasonable timeout, gracefully handle exceptions and surface the
+errors in UI or logging internally.
+
+Using [`ReactiveCaching`](https://docs.gitlab.com/ee/development/utilities.html#reactivecaching) is one of the best solutions to fetch external data.
+
+## Keep database transaction minimal
+
+**Summary:** You should avoid accessing to external services (e.g. Gitaly) during database
+transactions, otherwise it leads to severe contention problems
+as an open transaction basically blocks the release of a Postgres backend connection.
+
+For keeping transaction as minimal as possible, please consider using `AfterCommitQueue`
+module or `after_commit` AR hook.
+
+Here is [an example](https://gitlab.com/gitlab-org/gitlab/issues/36154#note_247228859)
+that one request to Gitaly instance during transaction triggered a P1 issue.
+
## Eager Loading
**Summary:** always eager load associations when retrieving more than one row.
diff --git a/doc/development/migration_style_guide.md b/doc/development/migration_style_guide.md
index 32c4313a1ed..6301ba778bc 100644
--- a/doc/development/migration_style_guide.md
+++ b/doc/development/migration_style_guide.md
@@ -517,9 +517,3 @@ _namespaces_ that have a `project_id`.
The `path` column for these rows will be renamed to their previous value followed
by an integer. For example: `users` would turn into `users0`
-
-### Moving migrations from EE to CE
-
-When migrations need to be moved from GitLab Enterprise Edition to GitLab Community Edition,
-a migration file should be moved from `ee/db/{post_,}migrate` directory in the `gitlab` project to `db/{post_,}migrate` directory in the `gitlab-foss` project. This way
-the schema number remains intact, there is no need to modify old migrations, and proper columns, tables or data are added in the Community Edition.
diff --git a/doc/development/new_fe_guide/index.md b/doc/development/new_fe_guide/index.md
index 227d03bd86f..152ddcdae64 100644
--- a/doc/development/new_fe_guide/index.md
+++ b/doc/development/new_fe_guide/index.md
@@ -15,10 +15,6 @@ Learn about all the dependencies that make up our frontend, including some of ou
Learn about all the internal JavaScript modules that make up our frontend.
-## [Style guides](style/index.md)
-
-Style guides to keep our code consistent.
-
## [Tips](tips.md)
Tips from our frontend team to develop more efficiently and effectively.
diff --git a/doc/development/new_fe_guide/style/html.md b/doc/development/new_fe_guide/style/html.md
index 1445da3f0e1..0b4fce13d90 100644
--- a/doc/development/new_fe_guide/style/html.md
+++ b/doc/development/new_fe_guide/style/html.md
@@ -1,53 +1,5 @@
-# HTML style guide
+---
+redirect_to: '../../fe_guide/style/html.md'
+---
-## Buttons
-
-### Button type
-
-Button tags requires a `type` attribute according to the [W3C HTML specification](https://www.w3.org/TR/2011/WD-html5-20110525/the-button-element.html#dom-button-type).
-
-```html
-// bad
-<button></button>
-
-// good
-<button type="button"></button>
-```
-
-### Button role
-
-If an HTML element has an `onClick` handler but is not a button, it should have `role="button"`. This is [more accessible](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/button_role).
-
-```html
-// bad
-<div onClick="doSomething"></div>
-
-// good
-<div role="button" onClick="doSomething"></div>
-```
-
-## Links
-
-### Blank target
-
-Use `rel="noopener noreferrer"` whenever your links open in a new window, i.e. `target="_blank"`. This prevents a security vulnerability [documented by JitBit](https://www.jitbit.com/alexblog/256-targetblank---the-most-underestimated-vulnerability-ever/).
-
-```html
-// bad
-<a href="url" target="_blank"></a>
-
-// good
-<a href="url" target="_blank" rel="noopener noreferrer"></a>
-```
-
-### Fake links
-
-**Do not use fake links.** Use a button tag if a link only invokes JavaScript click event handlers, which is more semantic.
-
-```html
-// bad
-<a class="js-do-something" href="#"></a>
-
-// good
-<button class="js-do-something" type="button"></button>
-```
+This document was moved to [another location](../../fe_guide/style/html.md).
diff --git a/doc/development/new_fe_guide/style/index.md b/doc/development/new_fe_guide/style/index.md
index f073dc56f1f..284862a2be9 100644
--- a/doc/development/new_fe_guide/style/index.md
+++ b/doc/development/new_fe_guide/style/index.md
@@ -1,15 +1,5 @@
-# Style guides
+---
+redirect_to: '../../fe_guide/style/index.md'
+---
-## [HTML style guide](html.md)
-
-## [SCSS style guide](scss.md)
-
-## [JavaScript style guide](javascript.md)
-
-## [Vue style guide](vue.md)
-
-## Tooling
-
-## [Prettier](prettier.md)
-
-Our code is automatically formatted with [Prettier](https://prettier.io) to follow our guidelines.
+This document was moved to [another location](../../fe_guide/style/index.md).
diff --git a/doc/development/new_fe_guide/style/javascript.md b/doc/development/new_fe_guide/style/javascript.md
index d31edcb372d..003880c2592 100644
--- a/doc/development/new_fe_guide/style/javascript.md
+++ b/doc/development/new_fe_guide/style/javascript.md
@@ -1,195 +1,5 @@
-# JavaScript style guide
+---
+redirect_to: '../../fe_guide/style/javascript.md'
+---
-We use [Airbnb's JavaScript Style Guide](https://github.com/airbnb/javascript) and it's accompanying
-linter to manage most of our JavaScript style guidelines.
-
-In addition to the style guidelines set by Airbnb, we also have a few specific rules
-listed below.
-
-> **Tip:**
-You can run eslint locally by running `yarn eslint`
-
-## Avoid forEach
-
-Avoid forEach when mutating data. Use `map`, `reduce` or `filter` instead of `forEach`
-when mutating data. This will minimize mutations in functions,
-which aligns with [Airbnb's style guide](https://github.com/airbnb/javascript#testing--for-real).
-
-```javascript
-// bad
-users.forEach((user, index) => {
- user.id = index;
-});
-
-// good
-const usersWithId = users.map((user, index) => {
- return Object.assign({}, user, { id: index });
-});
-```
-
-## Limit number of parameters
-
-If your function or method has more than 3 parameters, use an object as a parameter
-instead.
-
-```javascript
-// bad
-function a(p1, p2, p3) {
- // ...
-};
-
-// good
-function a(p) {
- // ...
-};
-```
-
-## Avoid side effects in constructors
-
-Avoid making asynchronous calls, API requests or DOM manipulations in the `constructor`.
-Move them into separate functions instead. This will make tests easier to write and
-code easier to maintain.
-
-```javascript
-// bad
-class myClass {
- constructor(config) {
- this.config = config;
- axios.get(this.config.endpoint)
- }
-}
-
-// good
-class myClass {
- constructor(config) {
- this.config = config;
- }
-
- makeRequest() {
- axios.get(this.config.endpoint)
- }
-}
-const instance = new myClass();
-instance.makeRequest();
-```
-
-## Avoid classes to handle DOM events
-
-If the only purpose of the class is to bind a DOM event and handle the callback, prefer
-using a function.
-
-```javascript
-// bad
-class myClass {
- constructor(config) {
- this.config = config;
- }
-
- init() {
- document.addEventListener('click', () => {});
- }
-}
-
-// good
-
-const myFunction = () => {
- document.addEventListener('click', () => {
- // handle callback here
- });
-}
-```
-
-## Pass element container to constructor
-
-When your class manipulates the DOM, receive the element container as a parameter.
-This is more maintainable and performant.
-
-```javascript
-// bad
-class a {
- constructor() {
- document.querySelector('.b');
- }
-}
-
-// good
-class a {
- constructor(options) {
- options.container.querySelector('.b');
- }
-}
-```
-
-## Use ParseInt
-
-Use `ParseInt` when converting a numeric string into a number.
-
-```javascript
-// bad
-Number('10')
-
-// good
-parseInt('10', 10);
-```
-
-## CSS Selectors - Use `js-` prefix
-
-If a CSS class is only being used in JavaScript as a reference to the element, prefix
-the class name with `js-`.
-
-```html
-// bad
-<button class="add-user"></button>
-
-// good
-<button class="js-add-user"></button>
-```
-
-## Absolute vs relative paths for modules
-
-Use relative paths if the module you are importing is less than two levels up.
-
-```javascript
-// bad
-import GitLabStyleGuide from '~/guides/GitLabStyleGuide';
-
-// good
-import GitLabStyleGuide from '../GitLabStyleGuide';
-```
-
-If the module you are importing is two or more levels up, use an absolute path instead:
-
-```javascript
-// bad
-import GitLabStyleGuide from '../../../guides/GitLabStyleGuide';
-
-// good
-import GitLabStyleGuide from '~/GitLabStyleGuide';
-```
-
-Additionally, **do not add to global namespace**.
-
-## Do not use `DOMContentLoaded` in non-page modules
-
-Imported modules should act the same each time they are loaded. `DOMContentLoaded`
-events are only allowed on modules loaded in the `/pages/*` directory because those
-are loaded dynamically with webpack.
-
-## Avoid XSS
-
-Do not use `innerHTML`, `append()` or `html()` to set content. It opens up too many
-vulnerabilities.
-
-## Disabling ESLint in new files
-
-Do not disable ESLint when creating new files. Existing files may have existing rules
-disabled due to legacy compatibility reasons but they are in the process of being refactored.
-
-Do not disable specific ESLint rules. Due to technical debt, you may disable the following
-rules only if you are invoking/instantiating existing code modules.
-
-- [no-new](https://eslint.org/docs/rules/no-new)
-- [class-method-use-this](https://eslint.org/docs/rules/class-methods-use-this)
-
-> Note: Disable these rules on a per line basis. This makes it easier to refactor
-> in the future. E.g. use `eslint-disable-next-line` or `eslint-disable-line`.
+This document was moved to [another location](../../fe_guide/style/javascript.md).
diff --git a/doc/development/new_fe_guide/style/prettier.md b/doc/development/new_fe_guide/style/prettier.md
index 17b209d419e..9a95aa96dff 100644
--- a/doc/development/new_fe_guide/style/prettier.md
+++ b/doc/development/new_fe_guide/style/prettier.md
@@ -1,98 +1,5 @@
-# Formatting with Prettier
+---
+redirect_to: '../../fe_guide/tooling.md#formatting-with-prettier'
+---
-Our code is automatically formatted with [Prettier](https://prettier.io) to follow our style guides. Prettier is taking care of formatting .js, .vue, and .scss files based on the standard prettier rules. You can find all settings for Prettier in `.prettierrc`.
-
-## Editor
-
-The easiest way to include prettier in your workflow is by setting up your preferred editor (all major editors are supported) accordingly. We suggest setting up prettier to run automatically when each file is saved. Find [here](https://prettier.io/docs/en/editors.html) the best way to set it up in your preferred editor.
-
-Please take care that you only let Prettier format the same file types as the global Yarn script does (.js, .vue, and .scss). In VSCode by example you can easily exclude file formats in your settings file:
-
-```
- "prettier.disableLanguages": [
- "json",
- "markdown"
- ],
-```
-
-## Yarn Script
-
-The following yarn scripts are available to do global formatting:
-
-```
-yarn prettier-staged-save
-```
-
-Updates all currently staged files (based on `git diff`) with Prettier and saves the needed changes.
-
-```
-yarn prettier-staged
-```
-
-Checks all currently staged files (based on `git diff`) with Prettier and log which files would need manual updating to the console.
-
-```
-yarn prettier-all
-```
-
-Checks all files with Prettier and logs which files need manual updating to the console.
-
-```
-yarn prettier-all-save
-```
-
-Formats all files in the repository with Prettier. (This should only be used to test global rule updates otherwise you would end up with huge MR's).
-
-The source of these Yarn scripts can be found in `/scripts/frontend/prettier.js`.
-
-### Scripts during Conversion period
-
-```
-node ./scripts/frontend/prettier.js check-all ./vendor/
-```
-
-This will go over all files in a specific folder check it.
-
-```
-node ./scripts/frontend/prettier.js save-all ./vendor/
-```
-
-This will go over all files in a specific folder and save it.
-
-## VSCode Settings
-
-### Select Prettier as default formatter
-
-To select Prettier as a formatter, add the following properties to your User or Workspace Settings:
-
-```javascript
-{
- "[html]": {
- "editor.defaultFormatter": "esbenp.prettier-vscode"
- },
- "[javascript]": {
- "editor.defaultFormatter": "esbenp.prettier-vscode"
- },
- "[vue]": {
- "editor.defaultFormatter": "esbenp.prettier-vscode"
- }
-}
-```
-
-### Format on Save
-
-To automatically format your files with Prettier, add the following properties to your User or Workspace Settings:
-
-```javascript
-{
- "[html]": {
- "editor.formatOnSave": true
- },
- "[javascript]": {
- "editor.formatOnSave": true
- },
- "[vue]": {
- "editor.formatOnSave": true
- },
-}
-```
+This document was moved to [another location](../../fe_guide/tooling.md#formatting-with-prettier).
diff --git a/doc/development/new_fe_guide/style/scss.md b/doc/development/new_fe_guide/style/scss.md
deleted file mode 100644
index 6f5e818d7db..00000000000
--- a/doc/development/new_fe_guide/style/scss.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# SCSS style guide
-
-> TODO: Add content
diff --git a/doc/development/new_fe_guide/style/vue.md b/doc/development/new_fe_guide/style/vue.md
deleted file mode 100644
index fd9353e0d3f..00000000000
--- a/doc/development/new_fe_guide/style/vue.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Vue style guide
-
-> TODO: Add content
diff --git a/doc/development/new_fe_guide/tips.md b/doc/development/new_fe_guide/tips.md
index 879b54bd93c..657da1be1a7 100644
--- a/doc/development/new_fe_guide/tips.md
+++ b/doc/development/new_fe_guide/tips.md
@@ -23,3 +23,7 @@ Your feature flag can now be:
- [Deleting a feature flag](../../api/features.md#delete-a-feature)
- [Manage feature flags](../feature_flags/process.md)
- [Feature flags API](../../api/features.md)
+
+## Running tests locally
+
+This can be done as outlined by the [frontend testing guide](../testing_guide/frontend_testing.md#running-frontend-tests).
diff --git a/doc/development/packages.md b/doc/development/packages.md
index 6d4a9ea9f41..7ae3cd53e66 100644
--- a/doc/development/packages.md
+++ b/doc/development/packages.md
@@ -5,7 +5,7 @@ This document will guide you through adding another [package management system](
See already supported package types in [Packages documentation](../administration/packages/index.md)
Since GitLab packages' UI is pretty generic, it is possible to add basic new
-package system support by solely backend changes. This guide is superficial and does
+package system support with solely backend changes. This guide is superficial and does
not cover the way the code should be written. However, you can find a good example
by looking at existing merge requests with Maven and NPM support:
@@ -14,6 +14,28 @@ by looking at existing merge requests with Maven and NPM support:
- [Maven repository](https://gitlab.com/gitlab-org/gitlab/merge_requests/6607).
- [Instance level endpoint for Maven repository](https://gitlab.com/gitlab-org/gitlab/merge_requests/8757)
+## Suggested contributions
+
+The goal of the Package group is to build a set of features that, within three years, will allow ninety percent of our customers to store all of their packages in GitLab. To do that we need to ensure that we support the below package manager formats.
+
+| Format | Use case |
+| ------ | ------ |
+| [Bower](https://gitlab.com/gitlab-org/gitlab/issues/36888) | Boost your front end development by hosting your own Bower components. |
+| [Chef](https://gitlab.com/gitlab-org/gitlab/issues/36889) | Configuration management with Chef using all the benefits of a repository manager. |
+| [CocoaPods](https://gitlab.com/gitlab-org/gitlab/issues/36890) | Speed up development with Xcode and CocoaPods. |
+| [Conda](https://gitlab.com/gitlab-org/gitlab/issues/36891) | Secure and private local Conda repositories. |
+| [CRAN](https://gitlab.com/gitlab-org/gitlab/issues/36892) | Deploy and resolve CRAN packages for the R language. |
+| [Debian](https://gitlab.com/gitlab-org/gitlab/issues/5835) | Host and provision Debian packages. |
+| [Go](https://gitlab.com/gitlab-org/gitlab/issues/9773) | Resolve Go dependencies from and publish your Go packages to GitLab. |
+| [Opkg](https://gitlab.com/gitlab-org/gitlab/issues/36894) | Optimize your work with OpenWrt using Opkg repositories. |
+| [P2](https://gitlab.com/gitlab-org/gitlab/issues/36895) | Host all your Eclipse plugins in your own GitLab P2 repository. |
+| [Puppet](https://gitlab.com/gitlab-org/gitlab/issues/36897) | Configuration management meets repository management with Puppet repositories. |
+| [PyPi](https://gitlab.com/gitlab-org/gitlab/issues/10483) | Host PyPi distributions. |
+| [RPM](https://gitlab.com/gitlab-org/gitlab/issues/5932) | Distribute RPMs directly from GitLab. |
+| [RubyGems](https://gitlab.com/gitlab-org/gitlab/issues/803) | Use GitLab to host your own gems. |
+| [SBT](https://gitlab.com/gitlab-org/gitlab/issues/36898) | Resolve dependencies from and deploy build output to SBT repositories when running SBT builds. |
+| [Vagrant](https://gitlab.com/gitlab-org/gitlab/issues/36899) | Securely host your Vagrant boxes in local repositories. |
+
## General information
The existing database model requires the following:
@@ -45,6 +67,29 @@ PUT https://gitlab.com/api/v4/projects/<your_project_id>/packages/npm/
Group-level and instance-level endpoints are good to have but are optional.
+### Remote hierarchy
+
+Packages are scoped within various levels of access, which is generally configured by setting your remote. A
+remote endpoint may be set at the project level, meaning when installing packages, only packages belonging to that
+project will be visible. Alternatively, a group-level endpoint may be used to allow visibility to all packages
+within a given group. Lastly, an instance-level endpoint can be used to allow visibility to all packages within an
+entire GitLab instance.
+
+Using group and project level endpoints will allow for more flexibility in package naming, however, more remotes
+will have to be managed. Using instance level endpoints requires [stricter naming conventions](#naming-conventions).
+
+The current state of existing package registries availability is:
+
+| Repository Type | Project Level | Group Level | Instance Level |
+|-----------------|---------------|-------------|----------------|
+| Maven | Yes | Yes | Yes |
+| Conan | No - [open issue](https://gitlab.com/gitlab-org/gitlab/issues/11679) | No - [open issue](https://gitlab.com/gitlab-org/gitlab/issues/11679) | Yes |
+| NPM | No - [open issue](https://gitlab.com/gitlab-org/gitlab/issues/36853) | Yes | No - [open issue](https://gitlab.com/gitlab-org/gitlab/issues/36853) |
+
+NOTE: **Note:** NPM is currently a hybrid of the instance level and group level.
+It is using the top-level group or namespace as the defining portion of the name
+(for example, `@my-group-name/my-package-name`).
+
## Naming conventions
To avoid name conflict for instance-level endpoints you will need to define a package naming convention
@@ -61,14 +106,14 @@ model for that package type.
## File uploads
-File uploads should be handled by GitLab workhorse using object accelerated uploads. What this means is that
+File uploads should be handled by GitLab Workhorse using object accelerated uploads. What this means is that
the workhorse proxy that checks all incoming requests to GitLab will intercept the upload request,
upload the file, and forward a request to the main GitLab codebase only containing the metadata
and file location rather than the file itself. An overview of this process can be found in the
[development documentation](uploads.md#workhorse-object-storage-acceleration).
In terms of code, this means a route will need to be added to the
-[gitlab-workhorse project](https://gitlab.com/gitlab-org/gitlab-workhorse) for each level of remote being added
+[GitLab Workhorse project](https://gitlab.com/gitlab-org/gitlab-workhorse) for each level of remote being added
(instance, group, project). [This merge request](https://gitlab.com/gitlab-org/gitlab-workhorse/merge_requests/412/diffs)
demonstrates adding an instance-level endpoint for Conan to workhorse. You can also see the Maven project level endpoint
implemented in the same file.
@@ -135,7 +180,7 @@ process.
These changes represent all that is needed to deliver a minimally usable package management system.
-1. Empty file structure (api file, base service for this package)
+1. Empty file structure (API file, base service for this package)
1. Authentication system for 'logging in' to the package manager
1. Identify metadata and create applicable tables
1. Workhorse route for [object storage accelerated uploads](uploads.md#workhorse-object-storage-acceleration)
diff --git a/doc/development/pipelines.md b/doc/development/pipelines.md
index 764bd68000d..99f92e6f39f 100644
--- a/doc/development/pipelines.md
+++ b/doc/development/pipelines.md
@@ -1,6 +1,6 @@
# Pipelines for the GitLab project
-Pipelines for `gitlab-org/gitlab` and `gitlab-org/gitlab-foss` (as well as the
+Pipelines for <https://gitlab.com/gitlab-org/gitlab> and <https://gitlab.com/gitlab-org/gitlab-foss> (as well as the
`dev` instance's mirrors) are configured in the usual
[`.gitlab-ci.yml`](https://gitlab.com/gitlab-org/gitlab/blob/master/.gitlab-ci.yml)
which itself includes files under
@@ -15,33 +15,36 @@ as much as possible.
The current stages are:
-- `sync`: This stage is used to synchronize changes from gitlab-org/gitlab to
- gitlab-org/gitlab-foss.
+- `sync`: This stage is used to synchronize changes from <https://gitlab.com/gitlab-org/gitlab> to
+ <https://gitlab.com/gitlab-org/gitlab-foss>.
- `prepare`: This stage includes jobs that prepare artifacts that are needed by
jobs in subsequent stages.
- `quick-test`: This stage includes test jobs that should run first and fail the
pipeline early (currently used to run Geo tests when the branch name starts
with `geo-`, `geo/`, or ends with `-geo`).
- `test`: This stage includes most of the tests, DB/migration jobs, and static analysis jobs.
+- `post-test`: This stage includes jobs that build reports or gather data from
+ the `test` stage's jobs (e.g. coverage, Knapsack metadata etc.).
- `review-prepare`: This stage includes a job that build the CNG images that are
later used by the (Helm) Review App deployment (see
[Review Apps](testing_guide/review_apps.md) for details).
- `review`: This stage includes jobs that deploy the GitLab and Docs Review Apps.
- `qa`: This stage includes jobs that perform QA tasks against the Review App
that is deployed in the previous stage.
-- `post-test`: This stage includes jobs that build reports or gather data from
- the previous stages' jobs (e.g. coverage, Knapsack metadata etc.).
+- `post-qa`: This stage includes jobs that build reports or gather data from
+ the `qa` stage's jobs (e.g. Review App performance report).
+- `notification`: This stage includes jobs that sends notifications about pipeline status.
- `pages`: This stage includes a job that deploys the various reports as
- GitLab pages (e.g. <https://gitlab-org.gitlab.io/gitlab/coverage-ruby/>,
+ GitLab Pages (e.g. <https://gitlab-org.gitlab.io/gitlab/coverage-ruby/>,
<https://gitlab-org.gitlab.io/gitlab/coverage-javascript/>,
<https://gitlab-org.gitlab.io/gitlab/webpack-report/>).
## Default image
The default image is currently
-`registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.3-golang-1.11-git-2.22-chrome-73.0-node-12.x-yarn-1.16-postgresql-9.6-graphicsmagick-1.3.33`.
+`registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.3-golang-1.12-git-2.24-lfs-2.9-chrome-73.0-node-12.x-yarn-1.16-postgresql-9.6-graphicsmagick-1.3.33`.
-It includes Ruby 2.6.3, Go 1.11, Git 2.22, Chrome 73, Node 12, Yarn 1.16,
+It includes Ruby 2.6.3, Go 1.12, Git 2.24, Git LFS 2.9, Chrome 73, Node 12, Yarn 1.16,
PostgreSQL 9.6, and Graphics Magick 1.3.33.
The images used in our pipelines are configured in the
@@ -191,8 +194,8 @@ subgraph "`review-prepare` stage"
end
subgraph "`review` stage"
- G --> |needs| E;
- G2 --> |needs| E;
+ G
+ G2
end
subgraph "`qa` stage"
@@ -209,6 +212,11 @@ subgraph "`qa` stage"
dast -.-> |needs and depends on| G;
end
+subgraph "`notification` stage"
+ NOTIFICATION1["schedule:package-and-qa:notify-success<br>(on_success)"] -.-> |needs| P;
+ NOTIFICATION2["schedule:package-and-qa:notify-failure<br>(on_failure)"] -.-> |needs| P;
+ end
+
subgraph "`post-test` stage"
M
end
diff --git a/doc/development/prometheus_metrics.md b/doc/development/prometheus_metrics.md
index b479c053862..74dbcddc5db 100644
--- a/doc/development/prometheus_metrics.md
+++ b/doc/development/prometheus_metrics.md
@@ -22,7 +22,9 @@ The requirement for adding a new metric is to make each query to have an unique
### Update existing metrics
-After you add or change existing _common_ metric you have to create a new database migration that will query and update all existing metrics.
+After you add or change an existing common metric, you must [re-run the import script](../administration/raketasks/maintenance.md#import-common-metrics) that will query and update all existing metrics.
+
+Or, you can create a database migration:
NOTE: **Note:**
If a query metric (which is identified by `id:`) is removed it will not be removed from database by default.
diff --git a/doc/development/rake_tasks.md b/doc/development/rake_tasks.md
index 369806d462b..ff978ee2899 100644
--- a/doc/development/rake_tasks.md
+++ b/doc/development/rake_tasks.md
@@ -93,10 +93,10 @@ There are a few environment flags you can pass to change how projects are seeded
In order to run the test you can use the following commands:
- `bin/rake spec` to run the rspec suite
-- `bin/rake spec:unit` to run the only the unit tests
-- `bin/rake spec:integration` to run the only the integration tests
-- `bin/rake spec:system` to run the only the system tests
-- `bin/rake karma` to run the karma test suite
+- `bin/rake spec:unit` to run only the unit tests
+- `bin/rake spec:integration` to run only the integration tests
+- `bin/rake spec:system` to run only the system tests
+- `bin/rake karma` to run the Karma test suite
Note: `bin/rake spec` takes significant time to pass.
Instead of running full test suite locally you can save a lot of time by running
@@ -188,11 +188,10 @@ task, then check the dimensions of the new spritesheet and update the
## Updating project templates
Starting a project from a template needs this project to be exported. On a
-up to date master branch with run:
+up to date master branch run:
```
-gdk run
-# In a new terminal window
+gdk start
bundle exec rake gitlab:update_project_templates
git checkout -b update-project-templates
git add vendor/project_templates
diff --git a/doc/development/shell_scripting_guide/index.md b/doc/development/shell_scripting_guide/index.md
index 60678497bb2..e0895a088ab 100644
--- a/doc/development/shell_scripting_guide/index.md
+++ b/doc/development/shell_scripting_guide/index.md
@@ -60,7 +60,7 @@ All projects with shell scripts should use this GitLab CI/CD job:
```yaml
shell check:
- image: koalaman/shellcheck-alpine
+ image: koalaman/shellcheck-alpine:stable
stage: test
before_script:
- shellcheck --version
diff --git a/doc/development/sidekiq_style_guide.md b/doc/development/sidekiq_style_guide.md
index e433691c1ed..77663b0bb29 100644
--- a/doc/development/sidekiq_style_guide.md
+++ b/doc/development/sidekiq_style_guide.md
@@ -211,7 +211,7 @@ end
We use the following approach to determine whether a worker is CPU-bound:
-- In the sidekiq structured JSON logs, aggregate the worker `duration` and
+- In the Sidekiq structured JSON logs, aggregate the worker `duration` and
`cpu_s` fields.
- `duration` refers to the total job execution duration, in seconds
- `cpu_s` is derived from the
diff --git a/doc/development/sql.md b/doc/development/sql.md
index 8a8204ffe87..84ad11effc5 100644
--- a/doc/development/sql.md
+++ b/doc/development/sql.md
@@ -108,21 +108,114 @@ class AddUsersLowerUsernameEmailIndexes < ActiveRecord::Migration[4.2]
disable_ddl_transaction!
def up
- return unless Gitlab::Database.postgresql?
-
execute 'CREATE INDEX CONCURRENTLY index_on_users_lower_username ON users (LOWER(username));'
execute 'CREATE INDEX CONCURRENTLY index_on_users_lower_email ON users (LOWER(email));'
end
def down
- return unless Gitlab::Database.postgresql?
-
remove_index :users, :index_on_users_lower_username
remove_index :users, :index_on_users_lower_email
end
end
```
+## Reliably referencing database columns
+
+ActiveRecord by default returns all columns from the queried database table. In some cases the returned rows might need to be customized, for example:
+
+- Specify only a few columns to reduce the amount of data returned from the database.
+- Include columns from `JOIN` relations.
+- Perform calculations (`SUM`, `COUNT`).
+
+In this example we specify the columns, but not their tables:
+
+- `path` from the `projects` table
+- `user_id` from the `merge_requests` table
+
+The query:
+
+```ruby
+# bad, avoid
+Project.select("path, user_id").joins(:merge_requests) # SELECT path, user_id FROM "projects" ...
+```
+
+Later on, a new feature adds an extra column to the `projects` table: `user_id`. During deployment there might be a short time window where the database migration is already executed, but the new version of the application code is not deployed yet. When the query mentioned above executes during this period, the query will fail with the following error message: `PG::AmbiguousColumn: ERROR: column reference "user_id" is ambiguous`
+
+The problem is caused by the way the attributes are selected from the database. The `user_id` column is present in both the `users` and `merge_requests` tables. The query planner cannot decide which table to use when looking up the `user_id` column.
+
+When writing a customized `SELECT` statement, it's better to **explicitly specify the columns with the table name**.
+
+### Good (prefer)
+
+```ruby
+Project.select(:path, 'merge_requests.user_id').joins(:merge_requests)
+
+# SELECT "projects"."path", merge_requests.user_id as user_id FROM "projects" ...
+```
+
+```ruby
+Project.select(:path, :'merge_requests.user_id').joins(:merge_requests)
+
+# SELECT "projects"."path", "merge_requests"."id" as user_id FROM "projects" ...
+```
+
+Example using Arel (`arel_table`):
+
+```ruby
+Project.select(:path, MergeRequest.arel_table[:user_id]).joins(:merge_requests)
+
+# SELECT "projects"."path", "merge_requests"."user_id" FROM "projects" ...
+```
+
+When writing raw SQL query:
+
+```sql
+SELECT projects.path, merge_requests.user_id FROM "projects"...
+```
+
+When the raw SQL query is parameterized (needs escaping):
+
+```ruby
+include ActiveRecord::ConnectionAdapters::Quoting
+
+"""
+SELECT
+ #{quote_table_name('projects')}.#{quote_column_name('path')},
+ #{quote_table_name('merge_requests')}.#{quote_column_name('user_id')}
+FROM ...
+"""
+```
+
+### Bad (avoid)
+
+```ruby
+Project.select('id, path, user_id').joins(:merge_requests).to_sql
+
+# SELECT id, path, user_id FROM "projects" ...
+```
+
+```ruby
+Project.select("path", "user_id").joins(:merge_requests)
+# SELECT "projects"."path", "user_id" FROM "projects" ...
+
+# or
+
+Project.select(:path, :user_id).joins(:merge_requests)
+# SELECT "projects"."path", "user_id" FROM "projects" ...
+```
+
+When a column list is given, ActiveRecord tries to match the arguments against the columns defined in the `projects` table and prepend the table name automatically. In this case, the `id` column is not going to be a problem, but the `user_id` column could return unexpected data:
+
+```ruby
+Project.select(:id, :user_id).joins(:merge_requests)
+
+# Before deployment (user_id is taken from the merge_requests table):
+# SELECT "projects"."id", "user_id" FROM "projects" ...
+
+# After deployment (user_id is taken from the projects table):
+# SELECT "projects"."id", "projects"."user_id" FROM "projects" ...
+```
+
## Plucking IDs
This can't be stressed enough: **never** use ActiveRecord's `pluck` to pluck a
diff --git a/doc/development/testing_guide/best_practices.md b/doc/development/testing_guide/best_practices.md
index fe3989474e6..356e3f7a227 100644
--- a/doc/development/testing_guide/best_practices.md
+++ b/doc/development/testing_guide/best_practices.md
@@ -133,6 +133,8 @@ CHROME_HEADLESS=0 bundle exec rspec some_spec.rb
```
The test will go by quickly, but this will give you an idea of what's happening.
+Using `live_debug` with `CHROME_HEADLESS=0` pauses the open browser, and does not
+open the page again. This can be used to debug and inspect elements.
You can also add `byebug` or `binding.pry` to pause execution and [step through](../pry_debugging.md#stepping)
the test.
diff --git a/doc/development/testing_guide/end_to_end/best_practices.md b/doc/development/testing_guide/end_to_end/best_practices.md
index e2a0d267ba1..fc00fcea67e 100644
--- a/doc/development/testing_guide/end_to_end/best_practices.md
+++ b/doc/development/testing_guide/end_to_end/best_practices.md
@@ -54,9 +54,9 @@ In summary:
- **Do**: Split tests across separate files, unless the tests share expensive setup.
- **Don't**: Put new tests in an existing file without considering the impact on parallelization.
-## Limit the use of `before(:all)` hook
+## Limit the use of `before(:all)` and `after` hooks
-Limit the use of `before(:all)` to perform setup tasks with only API calls, non UI operations
+Limit the use of `before(:all)` hook to perform setup tasks with only API calls, non UI operations
or basic UI operations such as login.
We use [`capybara-screenshot`](https://github.com/mattheworiordan/capybara-screenshot) library to automatically save screenshots on failures.
@@ -66,6 +66,10 @@ This library [saves the screenshots in the RSpec's `after` hook](https://github.
Given this fact, we should limit the use of `before(:all)` to only those operations where a screenshot is not
necessary in case of failure and QA logs would be enough for debugging.
+Similarly, the `after` hook should only be used for non-UI operations. Any UI operations in `after` hook in a test file
+would execute before the `after` hook that takes the screenshot. This would result in moving the UI status away from the
+point of failure and so the screenshot would not be captured at the right moment.
+
## Ensure tests do not leave the browser logged in
All QA tests expect to be able to log in at the start of the test.
@@ -74,7 +78,7 @@ That's not possible if a test leaves the browser logged in when it finishes. Nor
For an example see: <https://gitlab.com/gitlab-org/gitlab/issues/34736>
-Ideally, any actions peformed in an `after(:context)` (or [`before(:context)`](#limit-the-use-of-beforeall-hook)) block would be performed via the API. But if it's necessary to do so via the UI (e.g., if API functionality doesn't exist), make sure to log out at the end of the block.
+Ideally, any actions peformed in an `after(:context)` (or [`before(:context)`](#limit-the-use-of-beforeall-and-after-hooks)) block would be performed via the API. But if it's necessary to do so via the UI (e.g., if API functionality doesn't exist), make sure to log out at the end of the block.
```ruby
after(:all) do
diff --git a/doc/development/testing_guide/end_to_end/quick_start_guide.md b/doc/development/testing_guide/end_to_end/quick_start_guide.md
index 2457d8ada5a..fb820ac22a2 100644
--- a/doc/development/testing_guide/end_to_end/quick_start_guide.md
+++ b/doc/development/testing_guide/end_to_end/quick_start_guide.md
@@ -26,7 +26,17 @@ If you don't exactly understand what we mean by **not everything needs to happen
At GitLab we respect the [test pyramid](https://gitlab.com/gitlab-org/gitlab/blob/master/doc/development/testing_guide/testing_levels.md), and so, we recommend you check the code coverage of a specific feature before writing end-to-end tests, for both [CE](https://gitlab-org.gitlab.io/gitlab-foss/coverage-ruby/#_AllFiles) and [EE](https://gitlab-org.gitlab.io/gitlab/coverage-ruby/#_AllFiles) projects.
-Sometimes you may notice that there is already good coverage in other test levels, and we can stay confident that if we break a feature, we will still have quick feedback about it, even without having end-to-end tests.
+Sometimes you may notice that there is already good coverage in lower test levels, and we can stay confident that if we break a feature, we will still have quick feedback about it, even without having end-to-end tests.
+
+> For analyzing the code coverage, you will also need to understand which application files implement specific functionalities.
+
+#### Some other guidelines are as follows
+
+- Take a look at the [How to test at the correct level?](https://gitlab.com/gitlab-org/gitlab/blob/master/doc/development/testing_guide/testing_levels.md#how-to-test-at-the-correct-level) section of the [Testing levels](https://gitlab.com/gitlab-org/gitlab/blob/master/doc/development/testing_guide/testing_levels.md) document
+
+- Look into the frequency in which such a feature is changed (_Stable features that don't change very often might not be worth covering with end-to-end tests if they're already covered in lower levels_)
+
+- Finally, discuss with the developer(s) involved in developing the feature and the tests themselves, to get their feeling
If after this analysis you still think that end-to-end tests are needed, keep reading.
@@ -581,7 +591,7 @@ filter_output = search_field_tag search_id, nil, class: "dropdown-input-field",
> `data-qa-*` data attributes and CSS classes starting with `qa-` are used solely for the purpose of QA and testing.
> By defining these, we add **testability** to the application.
>
-> When defining a data attribute like: `qa_selector: 'labels_block'`, it should match the element definition: `element :labels_block`. We use a [sanity test](https://gitlab.com/gitlab-org/gitlab-foss/tree/master/qa/qa/page#how-did-we-solve-fragile-tests-problem) to check that defined elements have their respective selectors in the specified views.
+> When defining a data attribute like: `qa_selector: 'labels_block'`, it should match the element definition: `element :labels_block`. We use a [sanity test](https://gitlab.com/gitlab-org/gitlab-foss/tree/master/doc/development/testing_guide/end_to_end/page_objects.md#how-did-we-solve-fragile-tests-problem) to check that defined elements have their respective selectors in the specified views.
#### Updates in the `QA::Page::Base` class
diff --git a/doc/development/testing_guide/end_to_end/resources.md b/doc/development/testing_guide/end_to_end/resources.md
index 1e32db4f633..b8a093c54c6 100644
--- a/doc/development/testing_guide/end_to_end/resources.md
+++ b/doc/development/testing_guide/end_to_end/resources.md
@@ -44,6 +44,9 @@ create the resource via the public GitLab API:
- `#api_post_path`: The `POST` path to create a new resource.
- `#api_post_body`: The `POST` body (as a Ruby hash) to create a new resource.
+> Be aware that many API resources are [paginated](../../../api/README.md#pagination).
+> If you don't find the results you expect, check if there is more that one page of results.
+
Let's take the `Shirt` resource class, and add these three API methods:
```ruby
diff --git a/doc/development/testing_guide/frontend_testing.md b/doc/development/testing_guide/frontend_testing.md
index 236f175cee5..8934f0d4b65 100644
--- a/doc/development/testing_guide/frontend_testing.md
+++ b/doc/development/testing_guide/frontend_testing.md
@@ -26,7 +26,7 @@ If you need to update an existing Karma test file (found in `spec/javascripts`),
need to migrate the whole spec to Jest. Simply updating the Karma spec to test your change
is fine. It is probably more appropriate to migrate to Jest in a separate merge request.
-If you need to create a new test file, we strongly recommend creating one in Jest. This will
+If you create a new test file, it needs to be created in Jest. This will
help support our migration and we think you'll love using Jest.
As always, please use discretion. Jest solves a lot of issues we experienced in Karma and
@@ -552,6 +552,7 @@ For running the frontend tests, you need the following commands:
- `rake frontend:fixtures` (re-)generates [fixtures](#frontend-test-fixtures).
- `yarn test` executes the tests.
+- `yarn jest` executes only the Jest tests.
As long as the fixtures don't change, `yarn test` is sufficient (and saves you some time).
@@ -593,6 +594,24 @@ glob otherwise your shell may split it into multiple arguments:
yarn karma -f 'spec/javascripts/ide/**/file_spec.js'
```
+It is also possible to target individual Jest / RSpec tests:
+
+```bash
+# Run specific jest file
+yarn jest ./path/to/local_spec.js
+# Run specific jest folder
+yarn jest ./path/to/folder/
+# Run all jest files which path contain term
+yarn jest term
+```
+
+```bash
+# Run specific rspec file
+rspec ./path/to/local_spec.rb
+# Run specific block within rspec file
+rspec ./path/to/local_spec.rb:15
+```
+
## Frontend test fixtures
Code that is added to HAML templates (in `app/views/`) or makes Ajax requests to the backend has tests that require HTML or JSON from the backend.
diff --git a/doc/development/testing_guide/review_apps.md b/doc/development/testing_guide/review_apps.md
index ecfcbc731e1..b06ea41d91f 100644
--- a/doc/development/testing_guide/review_apps.md
+++ b/doc/development/testing_guide/review_apps.md
@@ -129,6 +129,10 @@ two node pools:
### Helm/Tiller
+The Helm/Tiller version used is defined in the
+[`registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-charts-build-base` image](https://gitlab.com/gitlab-org/gitlab-build-images/blob/master/Dockerfile.gitlab-charts-build-base#L4)
+used by the `review-deploy` and `review-stop` jobs.
+
The `tiller` deployment (the Helm server) is deployed to a dedicated node pool
that has the `app=helm` label and a specific
[taint](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/)
@@ -182,22 +186,89 @@ secure note named `gitlab-{ce,ee} Review App's root password`.
`review-qa-raise-e-12chm0-migrations.1-nqwtx`.
1. Click on the `Container logs` link.
-### Diagnosing unhealthy review-app releases
+## Diagnosing unhealthy Review App releases
+
+If [Review App Stability](https://app.periscopedata.com/app/gitlab/496118/Engineering-Productivity-Sandbox?widget=6690556&udv=785399)
+dips this may be a signal that the `review-apps-ce/ee` cluster is unhealthy.
+Leading indicators may be healthcheck failures leading to restarts or majority failure for Review App deployments.
+
+The [Review Apps Overview dashboard](https://app.google.stackdriver.com/dashboards/6798952013815386466?project=gitlab-review-apps&timeDomain=1d)
+aids in identifying load spikes on the cluster, and if nodes are problematic or the entire cluster is trending towards unhealthy.
+
+### Node count is always increasing (i.e. never stabilizing or decreasing)
+
+**Potential cause:**
+
+That could be a sign that the [`schedule:review-cleanup`][gitlab-ci-yml] job is
+failing to cleanup stale Review Apps and Kubernetes resources.
+
+**Where to look for further debugging:**
+
+Look at the latest `schedule:review-cleanup` job log, and identify look for any
+unexpected failure.
+
+### p99 CPU utilization is at 100% for most of the nodes and/or many components
+
+**Potential cause:**
+
+This could be a sign that Helm is failing to deploy Review Apps. When Helm has a
+lot of `FAILED` releases, it seems that the CPU utilization is increasing, probably
+due to Helm or Kubernetes trying to recreate the components.
+
+**Where to look for further debugging:**
+
+Look at a recent `review-deploy` job log, and at the Tiller logs.
+
+**Useful commands:**
+
+```shell
+# Identify if node spikes are common or load on specific nodes which may get rebalanced by the Kubernetes scheduler
+› kubectl top nodes | sort --key 3 --numeric
+
+# Identify pods under heavy CPU load
+› kubectl top pods | sort --key 2 --numeric
+```
+
+### The `logging/user/events/FailedMount` chart is going up
+
+**Potential cause:**
+
+This could be a sign that there are too many stale secrets and/or config maps.
+
+**Where to look for further debugging:**
+
+Look at [the list of Configurations](https://console.cloud.google.com/kubernetes/config?project=gitlab-review-apps)
+or `kubectl get secret,cm --sort-by='{.metadata.creationTimestamp}' | grep 'review-'`.
+
+Any secrets or config maps older than 5 days are suspect and should be deleted.
+
+**Useful commands:**
+
+```
+# List secrets and config maps ordered by created date
+› kubectl get secret,cm --sort-by='{.metadata.creationTimestamp}' | grep 'review-'
+
+# Delete all secrets that are 5 to 9 days old
+› kubectl get secret --sort-by='{.metadata.creationTimestamp}' | grep '^review-' | grep '[5-9]d$' | cut -d' ' -f1 | xargs kubectl delete secret
+
+# Delete all secrets that are 10 to 99 days old
+› kubectl get secret --sort-by='{.metadata.creationTimestamp}' | grep '^review-' | grep '[1-9][0-9]d$' | cut -d' ' -f1 | xargs kubectl delete secret
+
+# Delete all config maps that are 5 to 9 days old
+› kubectl get cm --sort-by='{.metadata.creationTimestamp}' | grep 'review-' | grep -v 'dns-gitlab-review-app' | grep '[5-9]d$' | cut -d' ' -f1 | xargs kubectl delete cm
+
+# Delete all config maps that are 10 to 99 days old
+› kubectl get cm --sort-by='{.metadata.creationTimestamp}' | grep 'review-' | grep -v 'dns-gitlab-review-app' | grep '[1-9][0-9]d$' | cut -d' ' -f1 | xargs kubectl delete cm
+```
-If [Review App Stability](https://gitlab.com/gitlab-org/quality/team-tasks/issues/93) dips this may be a signal
-that the `review-apps-ce/ee` cluster is unhealthy. Leading indicators may be healthcheck failures leading to restarts or majority failure for Review App deployments.
+### Using K9s
-The following items may help diagnose this:
+[K9s] is a powerful command line dashboard which allows you to filter by labels. This can help identify trends with apps exceeding the [review-app resource requests](https://gitlab.com/gitlab-org/gitlab/blob/master/scripts/review_apps/base-config.yaml). Kubernetes will schedule pods to nodes based on resource requests and allow for CPU usage up to the limits.
-- [Review Apps Health dashboard](https://app.google.stackdriver.com/dashboards/6798952013815386466?project=gitlab-review-apps&timeDomain=1d)
- - Aids in identifying load spikes on the cluster, and if nodes are problematic or the entire cluster is trending towards unhealthy.
-- `kubectl top nodes | sort --key 3 --numeric` - can identify if node spikes are common or load on specific nodes which may get rebalanced by the Kubernetes scheduler.
-- `kubectl top pods | sort --key 2 --numeric` -
-- [K9s] - K9s is a powerful command line dashboard which allows you to filter by labels. This can help identify trends with apps exceeding the [review-app resource requests](https://gitlab.com/gitlab-org/gitlab/blob/master/scripts/review_apps/base-config.yaml). Kubernetes will schedule pods to nodes based on resource requests and allow for CPU usage up to the limits.
- - In K9s you can sort or add filters by typing the `/` character
- - `-lrelease=<review-app-slug>` - filters down to all pods for a release. This aids in determining what is having issues in a single deployment
- - `-lapp=<app>` - filters down to all pods for a specific app. This aids in determining resource usage by app.
- - You can scroll to a Kubernetes resource and hit `d`(describe), `s`(shell), `l`(logs) for a deeper inspection
+- In K9s you can sort or add filters by typing the `/` character
+ - `-lrelease=<review-app-slug>` - filters down to all pods for a release. This aids in determining what is having issues in a single deployment
+ - `-lapp=<app>` - filters down to all pods for a specific app. This aids in determining resource usage by app.
+- You can scroll to a Kubernetes resource and hit `d`(describe), `s`(shell), `l`(logs) for a deeper inspection
![K9s](img/k9s.png)
diff --git a/doc/development/testing_guide/testing_migrations_guide.md b/doc/development/testing_guide/testing_migrations_guide.md
index b28d17a4b55..3fef13afa9c 100644
--- a/doc/development/testing_guide/testing_migrations_guide.md
+++ b/doc/development/testing_guide/testing_migrations_guide.md
@@ -104,9 +104,9 @@ end
### Example database migration test
This spec tests the
-[`db/post_migrate/20170526185842_migrate_pipeline_stages.rb`](https://gitlab.com/gitlab-org/gitlab/blob/v11.6.5/db/post_migrate/20170526185842_migrate_pipeline_stages.rb)
+[`db/post_migrate/20170526185842_migrate_pipeline_stages.rb`](https://gitlab.com/gitlab-org/gitlab-foss/blob/v11.6.5/db/post_migrate/20170526185842_migrate_pipeline_stages.rb)
migration. You can find the complete spec in
-[`spec/migrations/migrate_pipeline_stages_spec.rb`](https://gitlab.com/gitlab-org/gitlab/blob/v11.6.5/spec/migrations/migrate_pipeline_stages_spec.rb).
+[`spec/migrations/migrate_pipeline_stages_spec.rb`](https://gitlab.com/gitlab-org/gitlab-foss/blob/v11.6.5/spec/migrations/migrate_pipeline_stages_spec.rb).
```ruby
require 'spec_helper'
@@ -171,9 +171,9 @@ end
### Example background migration test
This spec tests the
-[`lib/gitlab/background_migration/archive_legacy_traces.rb`](https://gitlab.com/gitlab-org/gitlab/blob/v11.6.5/lib/gitlab/background_migration/archive_legacy_traces.rb)
+[`lib/gitlab/background_migration/archive_legacy_traces.rb`](https://gitlab.com/gitlab-org/gitlab-foss/blob/v11.6.5/lib/gitlab/background_migration/archive_legacy_traces.rb)
background migration. You can find the complete spec on
-[`spec/lib/gitlab/background_migration/archive_legacy_traces_spec.rb`](https://gitlab.com/gitlab-org/gitlab/blob/v11.6.5/spec/lib/gitlab/background_migration/archive_legacy_traces_spec.rb)
+[`spec/lib/gitlab/background_migration/archive_legacy_traces_spec.rb`](https://gitlab.com/gitlab-org/gitlab-foss/blob/v11.6.5/spec/lib/gitlab/background_migration/archive_legacy_traces_spec.rb)
```ruby
require 'spec_helper'
diff --git a/doc/development/utilities.md b/doc/development/utilities.md
index 25869a0d2b5..68851f4d550 100644
--- a/doc/development/utilities.md
+++ b/doc/development/utilities.md
@@ -53,7 +53,7 @@ Refer to <https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/utils/over
- This utility can help you check if one method would override
another or not. It is the same concept as Java's `@Override` annotation
- or Scala's `override` keyword. However, you should only do this check when
+ or Scala's `override` keyword. However, we only run this check when
`ENV['STATIC_VERIFICATION']` is set to avoid production runtime overhead.
This is useful for checking:
@@ -94,6 +94,15 @@ Refer to <https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/utils/over
end
```
+ Note that the check will only happen when either:
+
+ - The overriding method is defined in a class, or:
+ - The overriding method is defined in a module, and it's prepended to
+ a class or a module.
+
+ Because only a class or prepended module can actually override a method.
+ Including or extending a module into another cannot override anything.
+
## `StrongMemoize`
Refer to <https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/utils/strong_memoize.rb>:
diff --git a/doc/development/verifying_database_capabilities.md b/doc/development/verifying_database_capabilities.md
index 6b4995aebe2..1413c782c5d 100644
--- a/doc/development/verifying_database_capabilities.md
+++ b/doc/development/verifying_database_capabilities.md
@@ -6,22 +6,16 @@ necessary to add database (version) specific behaviour.
To facilitate this we have the following methods that you can use:
-- `Gitlab::Database.postgresql?`: returns `true` if PostgreSQL is being used.
- You can normally just assume this is the case.
- `Gitlab::Database.version`: returns the PostgreSQL version number as a string
in the format `X.Y.Z`.
This allows you to write code such as:
```ruby
-if Gitlab::Database.postgresql?
- if Gitlab::Database.version.to_f >= 9.6
- run_really_fast_query
- else
- run_fast_query
- end
+if Gitlab::Database.version.to_f >= 9.6
+ run_really_fast_query
else
- run_query
+ run_fast_query
end
```
diff --git a/doc/development/what_requires_downtime.md b/doc/development/what_requires_downtime.md
index 00371057d3c..9e43758a4aa 100644
--- a/doc/development/what_requires_downtime.md
+++ b/doc/development/what_requires_downtime.md
@@ -37,11 +37,19 @@ information on how to use this method.
## Dropping Columns
Removing columns is tricky because running GitLab processes may still be using
-the columns. To work around this you will need two separate merge requests and
-releases: one to ignore and then remove the column, and one to remove the ignore
-rule.
+the columns. To work around this safely, you will need three steps in three releases:
-### Step 1: Ignoring The Column
+1. Ignoring the column (release M)
+1. Dropping the column (release M+1)
+1. Removing the ignore rule (release M+2)
+
+The reason we spread this out across three releases is that dropping a column is
+a destructive operation that can't be rolled back easily.
+
+Following this procedure helps us to make sure there are no deployments to GitLab.com
+and upgrade processes for self-hosted installations that lump together any of these steps.
+
+### Step 1: Ignoring the column (release M)
The first step is to ignore the column in the application code. This is
necessary because Rails caches the columns and re-uses this cache in various
@@ -50,18 +58,46 @@ places. This can be done by defining the columns to ignore. For example, to igno
```ruby
class User < ApplicationRecord
- self.ignored_columns += %i[updated_at]
+ include IgnorableColumns
+ ignore_column :updated_at, remove_with: '12.7', remove_after: '2019-12-22'
end
```
-Once added you should create a _post-deployment_ migration that removes the
-column. Both these changes should be submitted in the same merge request.
+Multiple columns can be ignored, too:
+
+```ruby
+ignore_columns %i[updated_at created_at], remove_with: '12.7', remove_after: '2019-12-22'
+```
+
+We require indication of when it is safe to remove the column ignore with:
+
+- `remove_with`: set to a GitLab release typically two releases (M+2) after adding the
+ column ignore.
+- `remove_after`: set to a date after which we consider it safe to remove the column
+ ignore, typically within the development cycle of release M+2.
+
+This information allows us to reason better about column ignores and makes sure we
+don't remove column ignores too early for both regular releases and deployments to GitLab.com. For
+example, this avoids a situation where we deploy a bulk of changes that include both changes
+to ignore the column and subsequently remove the column ignore (which would result in a downtime).
+
+In this example, the change to ignore the column went into release 12.5.
+
+### Step 2: Dropping the column (release M+1)
+
+Continuing our example, dropping the column goes into a _post-deployment_ migration in release 12.6:
+
+```ruby
+ remove_column :user, :updated_at
+```
+
+### Step 3: Removing the ignore rule (release M+2)
-### Step 2: Removing The Ignore Rule
+With the next release, in this example 12.7, we set up another merge request to remove the ignore rule.
+This removes the `ignore_column` line and - if not needed anymore - also the inclusion of `IgnoreableColumns`.
-Once the changes from step 1 have been released & deployed you can set up a
-separate merge request that removes the ignore rule. This merge request can
-simply remove the `self.ignored_columns` line.
+This should only get merged with the release indicated with `remove_with` and once
+the `remove_after` date has passed.
## Renaming Columns
diff --git a/doc/gitlab-basics/README.md b/doc/gitlab-basics/README.md
index 258a85d0474..0f95c9e0cb6 100644
--- a/doc/gitlab-basics/README.md
+++ b/doc/gitlab-basics/README.md
@@ -38,7 +38,7 @@ The following are guides to basic GitLab functionality:
If you're familiar with Git on the command line, you can interact with your GitLab
projects just as you would with any other Git repository.
-These resources will help get further acclimated to working on the command line.
+These resources will help you get further acclimated to working on the command line.
- [Start using Git on the command line](start-using-git.md), for some simple Git commands.
- [Command line basics](command-line-commands.md), to create and edit files using the command line.
diff --git a/doc/gitlab-basics/start-using-git.md b/doc/gitlab-basics/start-using-git.md
index 1f43b151d5d..097794d39a7 100644
--- a/doc/gitlab-basics/start-using-git.md
+++ b/doc/gitlab-basics/start-using-git.md
@@ -61,10 +61,12 @@ To verify that you entered your email correctly, type:
git config --global user.email
```
-You'll need to do this only once, since you are using the `--global` option. It tells
-Git to always use this information for anything you do on that system. If you want
-to override this with a different username or email address for specific projects or repositories,
-you can run the command without the `--global` option when you’re in that project, and that will default to `--local`. You can read more on how Git manages configurations in the [Git Config](https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration) documentation.
+You'll need to do this only once, since you are using the `--global` option. It
+tells Git to always use this information for anything you do on that system. If
+you want to override this with a different username or email address for specific
+projects or repositories, you can run the command without the `--global` option
+when you’re in that project, and that will default to `--local`. You can read more
+on how Git manages configurations in the [Git Config](https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration) documentation.
## Check your information
@@ -102,7 +104,10 @@ files to your local computer, automatically preserving the Git connection with t
remote repository.
You can either clone it via HTTPS or [SSH](../ssh/README.md). If you chose to clone
-it via HTTPS, you'll have to enter your credentials every time you pull and push. You can read more about credential storage in the [Git Credentials documentation](https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage). With SSH, you enter your credentials only once.
+it via HTTPS, you'll have to enter your credentials every time you pull and push.
+You can read more about credential storage in the
+[Git Credentials documentation](https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage).
+With SSH, you enter your credentials only once.
You can find both paths (HTTPS and SSH) by navigating to your project's landing page
and clicking **Clone**. GitLab will prompt you with both paths, from which you can copy
@@ -113,8 +118,8 @@ As an example, consider this repository path:
- HTTPS: `https://gitlab.com/gitlab-org/gitlab.git`
- SSH: `git@gitlab.com:gitlab-org/gitlab.git`
-To get started, open a terminal window in the directory you wish to clone the repository
-files into, and run one of the following commands.
+To get started, open a terminal window in the directory you wish to clone the
+repository files into, and run one of the following commands.
Clone via HTTPS:
@@ -134,9 +139,9 @@ on it locally.
### Switch to the master branch
-You are always in a branch when working with Git. The main branch is the master branch,
-but you can use the same command to switch to a different branch by changing `master`
-to the branch name.
+You are always in a branch when working with Git. The main branch is the master
+branch, but you can use the same command to switch to a different branch by
+changing `master` to the branch name.
```bash
git checkout master
@@ -145,10 +150,10 @@ git checkout master
### Download the latest changes in the project
To work on an up-to-date copy of the project (it is important to do this every time
-you start working on a project), you `pull` to get all the changes made by users since
-the last time you cloned or pulled the project. Use `master` for the `<name-of-branch>`
-to get the main branch code, or the branch name of the branch you are currently working
-in.
+you start working on a project), you `pull` to get all the changes made by users
+since the last time you cloned or pulled the project. Use `master` for the
+`<name-of-branch>` to get the main branch code, or the branch name of the branch
+you are currently working in.
```bash
git pull <REMOTE> <name-of-branch>
@@ -156,10 +161,11 @@ git pull <REMOTE> <name-of-branch>
When you clone a repository, `REMOTE` is typically `origin`. This is where the
repository was cloned from, and it indicates the SSH or HTTPS URL of the repository
-on the remote server. `<name-of-branch>` is usually `master`, but it may be any existing
-branch. You can create additional named remotes and branches as necessary.
+on the remote server. `<name-of-branch>` is usually `master`, but it may be any
+existing branch. You can create additional named remotes and branches as necessary.
-You can learn more on how Git manages remote repositories in the [Git Remote documentation](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes).
+You can learn more on how Git manages remote repositories in the
+[Git Remote documentation](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes).
### View your remote repositories
@@ -184,9 +190,9 @@ so use something easy to remember and type.
### Create a branch
-To create a new branch, to work from without affecting the `master` branch, type the
-following (spaces won't be recognized in the branch name, so you will need to use a
-hyphen or underscore):
+To create a new branch, to work from without affecting the `master` branch, type
+the following (spaces won't be recognized in the branch name, so you will need to
+use a hyphen or underscore):
```bash
git checkout -b <name-of-branch>
@@ -245,6 +251,10 @@ The `.` character means _all file changes in the current directory and all subdi
### Send changes to GitLab.com
+NOTE: **Note:**
+To create a merge request from a fork to an upstream repository, see the
+[forking workflow](../user/project/repository/forking_workflow.md)
+
To push all local commits (saved changes) to the remote repository:
```bash
@@ -301,6 +311,21 @@ git checkout <name-of-branch>
git merge master
```
+### Synchronize changes in a forked repository with the upstream
+
+[Forking a repository](../user/project/repository/forking_workflow.md lets you create
+a copy of a repository in your namespace. Changes made to your copy of the repository
+are not synchronized automatically with the original.
+Your local fork (copy) contains changes made by you only, so to keep the project
+in sync with the original project, you need to `pull` from the original repository.
+
+You must [create a link to the remote repository](#add-a-remote-repository) to pull
+changes from the original repository. It is common to call this remote the `upstream`.
+
+You can now use the `upstream` as a [`<remote>` to `pull` new updates](#download-the-latest-changes-in-the-project)
+from the original repository, and use the `origin`
+to [push local changes](#send-changes-to-gitlabcom) and create merge requests.
+
<!-- ## Troubleshooting
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
diff --git a/doc/install/aws/index.md b/doc/install/aws/index.md
index c1dde05196c..8165d3edabb 100644
--- a/doc/install/aws/index.md
+++ b/doc/install/aws/index.md
@@ -362,7 +362,7 @@ Choose the AMI:
You should choose an instance type based on your workload. Consult
[the hardware requirements](../requirements.md#hardware-requirements) to choose
-one that fits your needs (at least `c4.xlarge`, which is enough to accommodate 100 users):
+one that fits your needs (at least `c5.xlarge`, which is enough to accommodate 100 users):
1. Choose the your instance type.
1. Click **Next: Configure Instance Details**.
diff --git a/doc/install/installation.md b/doc/install/installation.md
index 98094ca1185..d420ac5e952 100644
--- a/doc/install/installation.md
+++ b/doc/install/installation.md
@@ -134,7 +134,7 @@ Make sure you have the right version of Git installed:
# Install Git
sudo apt-get install -y git-core
-# Make sure Git is version 2.22.0 or higher
+# Make sure Git is version 2.24.1 or higher (minimal supported version is 2.22.0)
git --version
```
@@ -171,9 +171,9 @@ sudo make install
# Download and compile from source
cd /tmp
-curl --remote-name --location --progress https://www.kernel.org/pub/software/scm/git/git-2.22.0.tar.gz
-echo 'a4b7e4365bee43caa12a38d646d2c93743d755d1cea5eab448ffb40906c9da0b git-2.22.0.tar.gz' | shasum -a256 -c - && tar -xzf git-2.22.0.tar.gz
-cd git-2.22.0/
+curl --remote-name --location --progress https://www.kernel.org/pub/software/scm/git/git-2.24.1.tar.gz
+echo 'ad5334956301c86841eb1e5b1bb20884a6bad89a10a6762c958220c7cf64da02 git-2.24.1.tar.gz' | shasum -a256 -c - && tar -xzf git-2.24.1.tar.gz
+cd git-2.24.1/
./configure --with-libpcre
make prefix=/usr/local all
diff --git a/doc/install/requirements.md b/doc/install/requirements.md
index ecd6516bd2e..106c7714bfe 100644
--- a/doc/install/requirements.md
+++ b/doc/install/requirements.md
@@ -128,6 +128,8 @@ CREATE EXTENSION pg_trgm;
On some systems you may need to install an additional package (e.g.
`postgresql-contrib`) for this extension to become available.
+NOTE: **Note:** Support for PostgreSQL 9.6 and 10 will be removed in GitLab 13.0 so that GitLab can benefit from PostgreSQL 11 improvements, such as partitioning. For the schedule on adding support for PostgreSQL 11 and 12, see [the related epic](https://gitlab.com/groups/gitlab-org/-/epics/2184). For the release schedule for GitLab 13.0, see [GitLab's release and maintenance policy](../policy/maintenance.md).
+
#### Additional requirements for GitLab Geo
If you are using [GitLab Geo](../development/geo.md):
diff --git a/doc/integration/README.md b/doc/integration/README.md
index 3f33aa94cb9..5cda537ac39 100644
--- a/doc/integration/README.md
+++ b/doc/integration/README.md
@@ -30,6 +30,7 @@ GitLab can be configured to authenticate access requests with the following auth
- Use [OmniAuth](omniauth.md) to enable sign in via Twitter, GitHub, GitLab.com, Google,
Bitbucket, Facebook, Shibboleth, SAML, Crowd, Azure or Authentiq ID.
- Use GitLab as an [OpenID Connect](openid_connect_provider.md) identity provider.
+- Authenticate to [Vault](vault.md) through GitLab OpenID Connect.
- Configure GitLab as a [SAML](saml.md) 2.0 Service Provider.
## Security enhancements
diff --git a/doc/integration/akismet.md b/doc/integration/akismet.md
index cb8f25d2895..5b697d387e9 100644
--- a/doc/integration/akismet.md
+++ b/doc/integration/akismet.md
@@ -24,9 +24,9 @@ To use Akismet:
1. Click on **Show** to reveal the API key.
-1. Go to Applications Settings on Admin Area (`admin/application_settings`)
+1. Go to **Admin Area > Settings > Reporting** (`/admin/application_settings/reporting`).
-1. Check the **Enable Akismet** checkbox
+1. Check the **Enable Akismet** checkbox.
1. Fill in the API key from step 3.
diff --git a/doc/integration/elasticsearch.md b/doc/integration/elasticsearch.md
index 5c77bd5bcd9..62b3de72a3a 100644
--- a/doc/integration/elasticsearch.md
+++ b/doc/integration/elasticsearch.md
@@ -158,7 +158,10 @@ If you select `Limit namespaces and projects that can be indexed`, more options
You can select namespaces and projects to index exclusively. Please note that if the namespace is a group it will include
any sub-groups and projects belonging to those sub-groups to be indexed as well.
+Elasticsearch only provides cross-group code/commit search (global) if all name-spaces are indexed. In this particular scenario where only a subset of namespaces are indexed, a global search will not provide a code or commit scope. This will be possible only in the scope of an indexed namespace. Currently there is no way to code/commit search in multiple indexed namespaces (when only a subset of namespaces has been indexed). For example if two groups are indexed, there is no way to run a single code search on both. You can only run a code search on the first group and then on the second.
+
You can filter the selection dropdown by writing part of the namespace or project name you're interested in.
+
![limit namespace filter](img/limit_namespace_filter.png)
NOTE: **Note**:
@@ -270,7 +273,7 @@ or creating [extra Sidekiq processes](../administration/operations/extra_sidekiq
decrease in indexing time. We'll enable them when indexing is done. This step is optional!
```bash
- curl --request PUT localhost:9200/gitlab-production/_settings --data '{
+ curl --request PUT localhost:9200/gitlab-production/_settings --header 'Content-Type: application/json' --data '{
"index" : {
"refresh_interval" : "-1",
"number_of_replicas" : 0
@@ -352,7 +355,7 @@ or creating [extra Sidekiq processes](../administration/operations/extra_sidekiq
1. Enable replication and refreshing again after indexing (only if you previously disabled it):
```bash
- curl --request PUT localhost:9200/gitlab-production/_settings --data '{
+ curl --request PUT localhost:9200/gitlab-production/_settings --header 'Content-Type: application/json' ---data '{
"index" : {
"number_of_replicas" : 1,
"refresh_interval" : "1s"
@@ -364,7 +367,7 @@ or creating [extra Sidekiq processes](../administration/operations/extra_sidekiq
For Elasticsearch 6.x, the index should be in read-only mode before proceeding with the force merge:
```bash
- curl --request PUT localhost:9200/gitlab-production/_settings --data '{
+ curl --request PUT localhost:9200/gitlab-production/_settings ---header 'Content-Type: application/json' --data '{
"settings": {
"index.blocks.write": true
} }'
@@ -373,13 +376,13 @@ or creating [extra Sidekiq processes](../administration/operations/extra_sidekiq
Then, initiate the force merge:
```bash
- curl --request POST 'http://localhost:9200/gitlab-production/_forcemerge?max_num_segments=5'
+ curl --request POST 'localhost:9200/gitlab-production/_forcemerge?max_num_segments=5'
```
After this, if your index is in read-only mode, switch back to read-write:
```bash
- curl --request PUT localhost:9200/gitlab-production/_settings --data '{
+ curl --request PUT localhost:9200/gitlab-production/_settings ---header 'Content-Type: application/json' --data '{
"settings": {
"index.blocks.write": false
} }'
@@ -467,7 +470,7 @@ However, some larger installations may wish to tune the merge policy settings:
- Consider reducing the `index.merge.policy.max_merged_segment` size from the default 5 GB to maybe 2 GB or 3 GB. Merging only happens when a segment has at least 50% deletions. Smaller segment sizes will allow merging to happen more frequently.
```bash
- curl --request PUT http://localhost:9200/gitlab-production/_settings --data '{
+ curl --request PUT localhost:9200/gitlab-production/_settings ---header 'Content-Type: application/json' --data '{
"index" : {
"merge.policy.max_merged_segment": "2gb"
}
@@ -477,7 +480,7 @@ However, some larger installations may wish to tune the merge policy settings:
- You can also adjust `index.merge.policy.reclaim_deletes_weight`, which controls how aggressively deletions are targeted. But this can lead to costly merge decisions, so we recommend not changing this unless you understand the tradeoffs.
```bash
- curl --request PUT http://localhost:9200/gitlab-production/_settings --data '{
+ curl --request PUT localhost:9200/gitlab-production/_settings ---header 'Content-Type: application/json' --data '{
"index" : {
"merge.policy.reclaim_deletes_weight": "3.0"
}
@@ -502,6 +505,9 @@ Here are some common pitfalls and how to overcome them:
If you see `Elasticsearch::Model::Response::Records`, you are using Elasticsearch.
+ NOTE: **Note**:
+ The above instructions are used to verify that GitLab is using Elasticsearch only when indexing all namespaces. This is not to be used for scenarios that only index a [subset of namespaces](https://docs.gitlab.com/ee/integration/elasticsearch.html#limiting-namespaces-and-projects).
+
- **I updated GitLab and now I can't find anything**
We continuously make updates to our indexing strategies and aim to support
@@ -518,10 +524,13 @@ Here are some common pitfalls and how to overcome them:
```ruby
u = User.find_by_username('your-username')
- s = SearchService.new(u, {:search => 'search_term', :scope => ‘blobs’})
+ s = SearchService.new(u, {:search => 'search_term', :scope => 'blobs'})
pp s.search_objects.to_a
```
+ NOTE: **Note**:
+ The above instructions are not to be used for scenarios that only index a [subset of namespaces](https://docs.gitlab.com/ee/integration/elasticsearch.html#limiting-namespaces-and-projects).
+
See [Elasticsearch Index Scopes](#elasticsearch-index-scopes) for more information on searching for specific types of data.
- **I indexed all the repositories but then switched Elasticsearch servers and now I can't find anything**
diff --git a/doc/integration/github.md b/doc/integration/github.md
index 23dd67f6891..f46038269c0 100644
--- a/doc/integration/github.md
+++ b/doc/integration/github.md
@@ -166,3 +166,36 @@ via Omnibus, or [restart GitLab] if you installed from source.
[reconfigure GitLab]: ../administration/restart_gitlab.md#omnibus-gitlab-reconfigure
[restart GitLab]: ../administration/restart_gitlab.md#installations-from-source
+
+## Troubleshooting
+
+### Error 500 when trying to sign in to GitLab via GitHub Enterprise
+
+Check the [`production.log`](../administration/logs.md#productionlog)
+on your GitLab server to obtain further details. If you are getting the error like
+`Faraday::ConnectionFailed (execution expired)` in the log, there may be a connectivity issue
+between your GitLab instance and GitHub Enterprise. To verify it, [start the rails console](https://docs.gitlab.com/omnibus/maintenance/#starting-a-rails-console-session)
+and run the commands below replacing `<github_url>` with the URL of your GitHub Enterprise instance:
+
+```ruby
+uri = URI.parse("https://<github_url>") # replace `GitHub-URL` with the real one here
+http = Net::HTTP.new(uri.host, uri.port)
+http.use_ssl = true
+http.verify_mode = 1
+response = http.request(Net::HTTP::Get.new(uri.request_uri))
+```
+
+If you are getting a similar `execution expired` error, it confirms the theory about the
+network connectivity. In that case, make sure that the GitLab server is able to reach your
+GitHub enterprise instance.
+
+### Signing in using your GitHub account without a pre-existing GitLab account is not allowed
+
+If you're getting the message `Signing in using your GitHub account without a pre-existing
+GitLab account is not allowed. Create a GitLab account first, and then connect it to your
+GitHub account` when signing in, in GitLab:
+
+1. Go to your **Profile > Account**.
+1. Under the "Social sign-in" section, click **Connect** near the GitHub icon.
+
+After that, you should be able to sign in via GitHub successfully.
diff --git a/doc/integration/img/authorize_vault_with_gitlab_v12_6.png b/doc/integration/img/authorize_vault_with_gitlab_v12_6.png
new file mode 100644
index 00000000000..dc5bc954cd7
--- /dev/null
+++ b/doc/integration/img/authorize_vault_with_gitlab_v12_6.png
Binary files differ
diff --git a/doc/integration/img/gitlab_oauth_vault_v12_6.png b/doc/integration/img/gitlab_oauth_vault_v12_6.png
new file mode 100644
index 00000000000..f952abc2c6d
--- /dev/null
+++ b/doc/integration/img/gitlab_oauth_vault_v12_6.png
Binary files differ
diff --git a/doc/integration/img/sign_into_vault_with_gitlab_v12_6.png b/doc/integration/img/sign_into_vault_with_gitlab_v12_6.png
new file mode 100644
index 00000000000..8afa2c6aabd
--- /dev/null
+++ b/doc/integration/img/sign_into_vault_with_gitlab_v12_6.png
Binary files differ
diff --git a/doc/integration/img/signed_into_vault_via_oidc_v12_6.png b/doc/integration/img/signed_into_vault_via_oidc_v12_6.png
new file mode 100644
index 00000000000..0ad81ef40e6
--- /dev/null
+++ b/doc/integration/img/signed_into_vault_via_oidc_v12_6.png
Binary files differ
diff --git a/doc/integration/jenkins.md b/doc/integration/jenkins.md
index a54f6843c53..fe607b2afdf 100644
--- a/doc/integration/jenkins.md
+++ b/doc/integration/jenkins.md
@@ -135,3 +135,32 @@ configured or there was an error reporting the status via the API.
1. [Configure the Jenkins server](#configure-the-jenkins-server) for GitLab API access
1. [Configure a Jenkins project](#configure-a-jenkins-project), including the
'Publish build status to GitLab' post-build action.
+
+### Merge Request event does not trigger a Jenkins Pipeline
+
+Check the `/var/log/gitlab/gitlab-rails/production.log` file for messages like:
+
+```plaintext
+WebHook Error => Net::ReadTimeout
+```
+
+or
+
+```plaintext
+WebHook Error => execution expired
+```
+
+If those are present, the request is exceeding the
+[webhook timeout](../user/project/integrations/webhooks.md#receiving-duplicate-or-multiple-webhook-requests-triggered-by-one-event),
+which is set to 10 seconds by default.
+
+To fix this the `gitlab_rails['webhook_timeout']` value will need to be increased
+in the `gitlab.rb` config file, followed by the [`gitlab-ctl reconfigure` command](../administration/restart_gitlab.md).
+
+If you don't find the errors above, but do find *duplicate* entries like below (in `/var/log/gitlab/gitlab-rail`), this
+could also indicate that [webhook requests are timing out](../user/project/integrations/webhooks.md#receiving-duplicate-or-multiple-webhook-requests-triggered-by-one-event):
+
+```
+2019-10-25_04:22:41.25630 2019-10-25T04:22:41.256Z 1584 TID-ovowh4tek WebHookWorker JID-941fb7f40b69dff3d833c99b INFO: start
+2019-10-25_04:22:41.25630 2019-10-25T04:22:41.256Z 1584 TID-ovowh4tek WebHookWorker JID-941fb7f40b69dff3d833c99b INFO: start
+```
diff --git a/doc/integration/saml.md b/doc/integration/saml.md
index 099cab0f5b8..a667c2e84c9 100644
--- a/doc/integration/saml.md
+++ b/doc/integration/saml.md
@@ -541,7 +541,7 @@ args: {
}
```
-GitLab will sign the request with the provided private key. GitLab will include the configured public x500 certificate in the metadata for your Identity Provider to validate the signature of the received request with. For more information on this option, see the [ruby-saml gem documentation](https://github.com/onelogin/ruby-saml/tree/v1.7.0). The `ruby-saml` gem is used by the [omniauth-saml gem](https://github.com/omniauth/omniauth-saml) to implement the client side of the SAML authentication.
+GitLab will sign the request with the provided private key. GitLab will include the configured public x500 certificate in the metadata for your Identity Provider to validate the signature of the received request with. For more information on this option, see the [Ruby SAML gem documentation](https://github.com/onelogin/ruby-saml/tree/v1.7.0). The Ruby SAML gem is used by the [OmniAuth SAML gem](https://github.com/omniauth/omniauth-saml) to implement the client side of the SAML authentication.
## Troubleshooting
diff --git a/doc/integration/vault.md b/doc/integration/vault.md
new file mode 100644
index 00000000000..68803fed35d
--- /dev/null
+++ b/doc/integration/vault.md
@@ -0,0 +1,120 @@
+---
+type: reference, howto
+---
+
+# Vault Authentication with GitLab OpenID Connect
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/issues/22323) in GitLab 9.0
+
+[Vault](https://www.vaultproject.io/) is a secrets management application offered by HashiCorp.
+It allows you to store and manage sensitive information such secret environment variables, encryption keys, and authentication tokens.
+Vault offers Identity-based Access, which means Vault users can authenticate through several of their preferred cloud providers.
+
+In this document, we'll explain how Vault users can authenticate themselves through GitLab by utilizing our OpenID authentication feature.
+The following assumes you already have Vault installed and running.
+
+1. **Get the OpenID Connect client ID and secret from GitLab:**
+
+ First you'll need to create a GitLab application to obtain an application ID and secret for authenticating into Vault. To do this, sign in to GitLab and follow these steps:
+
+ 1. On GitLab, click your avatar on the top-right corner, and select your user **Settings > Applications**.
+ 1. Fill out the application **Name** and [**Redirect URI**](https://www.vaultproject.io/docs/auth/jwt.html#redirect-uris),
+ making sure to select the **OpenID** scope.
+ 1. Save application.
+ 1. Copy client ID and secret, or keep the page open for reference.
+ ![GitLab OAuth provider](img/gitlab_oauth_vault_v12_6.png)
+
+1. **Enable OIDC auth on Vault:**
+
+ OpenID Connect is not enabled in Vault by default. This needs to be enabled in the terminal.
+
+ Open a terminal session and run the following command to enable the OpenID Connect authentication provider in Vault:
+
+ ```bash
+ vault auth enable oidc
+ ```
+
+ You should see the following output in the terminal:
+
+ ```bash
+ Success! Enabled oidc auth method at: oidc/
+ ```
+
+1. **Write the OIDC config:**
+
+ Next, Vault needs to be given the application ID and secret generated by GitLab.
+
+ In the terminal session, run the following command to give Vault access to the GitLab application you've just created with an OpenID scope. This allows Vault to authenticate through GitLab.
+
+ Replace `your_application_id` and `your_secret` in the example below with the application ID and secret generated for your app:
+
+ ```bash
+ $ vault write auth/oidc/config \
+ oidc_discovery_url="https://gitlab.com" \
+ oidc_client_id="your_application_id" \
+ oidc_client_secret="your_secret" \
+ default_role="demo" \
+ bound_issuer="localhost"
+ ```
+
+ You should see the following output in the terminal:
+
+ ```bash
+ Success! Data written to: auth/oidc/config
+ ```
+
+1. **Write the OIDC Role Config:**
+
+ Now that Vault has a GitLab application ID and secret, it needs to know the [**Redirect URIs**](https://www.vaultproject.io/docs/auth/jwt.html#redirect-uris) and scopes given to GitLab during the application creation process. The redirect URIs need to match where your Vault instance is running. The `oidc_scopes` field needs to include the `openid`. Similarly to the previous step, replace `your_application_id` with the generated application ID from GitLab:
+
+ This configuration is saved under the name of the role you are creating. In this case, we are creating a `demo` role. Later, we'll show how you can access this role through the Vault CLI.
+
+ ```bash
+ vault write auth/oidc/role/demo \
+ user_claim="sub" \
+ allowed_redirect_uris="http://localhost:8250/oidc/callback,http://127.0.0.1:8200/ui/vault/auth/oidc/oidc/callback" \
+ bound_audiences="your_application_id" \
+ role_type="oidc" \
+ oidc_scopes="openid" \
+ policies=demo \
+ ttl=1h
+ ```
+
+1. **Sign in to Vault:**
+
+ 1. Go to your Vault UI (example: [http://127.0.0.1:8200/ui/vault/auth?with=oidc](http://127.0.0.1:8200/ui/vault/auth?with=oidc)).
+ 1. If the `OIDC` method is not currently selected, open the dropdown and select it.
+ 1. Click the **Sign in With GitLab** button, which will open a modal window:
+ ![Sign into Vault with GitLab](img/sign_into_vault_with_gitlab_v12_6.png)
+
+ 1. Click **Authorize** on the modal to allow Vault to sign in through GitLab. This will redirect you back to your Vault UI as a signed-in user.
+ ![Authorize Vault to connect with GitLab](img/authorize_vault_with_gitlab_v12_6.png)
+
+1. **Sign in using the Vault CLI** (optional):
+
+ Vault also allows you to sign in via their CLI.
+
+ After writing the same configurations from above, you can run the command below in your terminal to sign in with the role configuration created in step 4 above:
+
+ ```bash
+ vault login -method=oidc port=8250 role=demo
+ ```
+
+ Here is a short explaination of what this command does:
+
+ 1. In the **Write the OIDC Role Config** (step 4), we created a role called `demo`. We set `role=demo` so Vault knows which configuration we'd like to login in with.
+ 1. To set Vault to use the `OIDC` sign-in method, we set `-method=oidc`.
+ 1. To set the port that GitLab should redirect to, we set `port=8250` or another port number that matches the port given to GitLab when listing [Redirect URIs](https://www.vaultproject.io/docs/auth/jwt.html#redirect-uris).
+
+ Once you run the command above, it will present a link in the terminal.
+ Click the link in the terminal and a tab will open in the browser confirming you're signed into Vault via OIDC:
+
+ ![Signed into Vault via OIDC](img/signed_into_vault_via_oidc_v12_6.png)
+
+ The terminal will output:
+
+ ```
+ Success! You are now authenticated. The token information displayed below
+ is already stored in the token helper. You do NOT need to run "vault login"
+ again. Future Vault requests will automatically use this token.
+ ```
diff --git a/doc/policy/maintenance.md b/doc/policy/maintenance.md
index ef94236d711..7617d0c8881 100644
--- a/doc/policy/maintenance.md
+++ b/doc/policy/maintenance.md
@@ -48,9 +48,9 @@ incremental upgrades (and installations) are as simple as possible.
review process a new change goes through.
1. Ensuring that tests pass on older release is a considerable challenge in some cases, and as such is very time consuming.
-Including new features in patch releases is not possible as that would break [Semantic Versioning].
-Breaking [Semantic Versioning] has the following consequences for users that
-have to adhere to various internal requirements (e.g. org. compliance, verifying new features and similar):
+Including new features in patch releases is not possible as that would break [Semantic Versioning](https://semver.org/).
+Breaking [Semantic Versioning](https://semver.org/) has the following consequences for users that
+have to adhere to various internal requirements (for example, org. compliance, verifying new features, and similar):
1. Inability to quickly upgrade to leverage bug fixes included in patch versions.
1. Inability to quickly upgrade to leverage security fixes included in patch versions.
@@ -58,9 +58,12 @@ have to adhere to various internal requirements (e.g. org. compliance, verifying
In cases where a strategic user has a requirement to test a feature before it is
officially released, we can offer to create a Release Candidate (RC) version that will
-include the specific feature. This should be needed only in extreme cases, and can be requested for consideration by raising an issue in [release/tasks] issue tracker.
-It is important to note that the Release Candidate will also contain other
-features and changes as it is not possible to easily isolate a specific feature (similar reasons as noted above). The Release Candidate will be no different than any code that is deployed to GitLab.com or is publicly accessible.
+include the specific feature. This should be needed only in extreme cases, and can be requested for
+consideration by raising an issue in the [release/tasks](https://gitlab.com/gitlab-org/release/tasks/issues/new?issuable_template=Backporting-request) issue tracker.
+It is important to note that the Release Candidate will also contain other features and changes as
+it is not possible to easily isolate a specific feature (similar reasons as noted above). The
+Release Candidate will be no different than any code that is deployed to GitLab.com or is publicly
+accessible.
### Backporting to older releases
@@ -68,11 +71,16 @@ Backporting to more than one stable release is reserved for [security releases](
In some cases however, we may need to backport *a bug fix* to more than one stable
release, depending on the severity of the bug.
-Decision on whether backporting a change will be performed is done at the discretion of the [current release managers][release-managers], similar to what is described in the [managing bugs] process, based on *all* of the following:
+The decision on whether backporting a change will be performed is done at the discretion of the
+[current release managers](https://about.gitlab.com/community/release-managers/), similar to what is
+described in the [managing bugs](https://gitlab.com/gitlab-org/gitlab/blob/master/PROCESS.md#managing-bugs) process,
+based on *all* of the following:
-1. Estimated [severity][severity-labels] of the bug: Highest possible impact to users based on the current definition of severity.
+1. Estimated [severity](../development/contributing/issue_workflow.md#severity-labels) of the bug:
+ Highest possible impact to users based on the current definition of severity.
-1. Estimated [priority][priority-labels] of the bug: Immediate impact on all impacted users based on the above estimated severity.
+1. Estimated [priority](../development/contributing/issue_workflow.md#priority-labels) of the bug:
+ Immediate impact on all impacted users based on the above estimated severity.
1. Potentially incurring data loss and/or security breach.
@@ -83,7 +91,8 @@ the current stable stable release, and two previous monthly releases.
For instance, if we release `11.2.1` with a fix for a severe bug introduced in
`11.0.0`, we could backport the fix to a new `11.0.x`, and `11.1.x` patch release.
-To request backporting to more than one stable release for consideration, raise an issue in [release/tasks] issue tracker.
+To request backporting to more than one stable release for consideration, raise an issue in the
+[release/tasks](https://gitlab.com/gitlab-org/release/tasks/issues/new?issuable_template=Backporting-request) issue tracker.
### Security releases
@@ -115,17 +124,24 @@ one major version. For example, it is safe to:
- `8.9.0` -> `8.9.7`
- `8.9.0` -> `8.9.1`
- `8.9.2` -> `8.9.6`
+ - `9.5.5` -> `9.5.9`
+ - `10.6.3` -> `10.6.6`
+ - `11.11.1` -> `11.11.8`
+ - `12.0.4` -> `12.0.9`
- Upgrade the minor version:
- `8.9.4` -> `8.12.3`
- `9.2.3` -> `9.5.5`
+ - `10.6.6` -> `10.8.7`
+ - `11.3.4` -> `11.11.8`
Upgrading the major version requires more attention.
We cannot guarantee that upgrading between major versions will be seamless. As previously mentioned, major versions are reserved for backwards incompatible changes.
-
We recommend that you first upgrade to the latest available minor version within
your major version. By doing this, you can address any deprecation messages
that could change behavior in the next major release.
+To ensure background migrations are successful, increment by one minor version during the version jump before installing newer releases.
+For example: `11.11.x` -> `12.0.x`
Please see the table below for some examples:
| Latest stable version | Your version | Recommended upgrade path | Note |
@@ -133,14 +149,11 @@ Please see the table below for some examples:
| 9.4.5 | 8.13.4 | `8.13.4` -> `8.17.7` -> `9.4.5` | `8.17.7` is the last version in version `8` |
| 10.1.4 | 8.13.4 | `8.13.4 -> 8.17.7 -> 9.5.10 -> 10.1.4` | `8.17.7` is the last version in version `8`, `9.5.10` is the last version in version `9` |
| 11.3.4 | 8.13.4 | `8.13.4` -> `8.17.7` -> `9.5.10` -> `10.8.7` -> `11.3.4` | `8.17.7` is the last version in version `8`, `9.5.10` is the last version in version `9`, `10.8.7` is the last version in version `10` |
-| 12.0.2 | 11.3.4 | `11.3.4` -> `11.11.x` -> `12.0.2` | `11.11.x` is the last version in version `11`
+| 12.5.8 | 11.3.4 | `11.3.4` -> `11.11.8` -> `12.0.9` -> `12.5.8` | `11.11.8` is the last version in version `11` |
+
+To check the size of `background_migration` queue and to learn more about background migrations
+see [Upgrading without downtime](../update/README.md#upgrading-without-downtime).
More information about the release procedures can be found in our
[release documentation](https://gitlab.com/gitlab-org/release/docs). You may also want to read our
[Responsible Disclosure Policy](https://about.gitlab.com/security/disclosure/).
-
-[release-managers]: https://about.gitlab.com/community/release-managers/
-[priority-definition]: ../development/contributing/issue_workflow.md#priority-labels
-[severity-labels]: ../development/contributing/issue_workflow.html#severity-labels
-[managing bugs]: https://gitlab.com/gitlab-org/gitlab/blob/master/PROCESS.md#managing-bugs
-[release/tasks]: https://gitlab.com/gitlab-org/release/tasks/issues
diff --git a/doc/public_access/img/project_visibility_confirmation_v12_6.png b/doc/public_access/img/project_visibility_confirmation_v12_6.png
new file mode 100644
index 00000000000..ac4d70ff11a
--- /dev/null
+++ b/doc/public_access/img/project_visibility_confirmation_v12_6.png
Binary files differ
diff --git a/doc/public_access/public_access.md b/doc/public_access/public_access.md
index bb19436017a..1b6895aaef1 100644
--- a/doc/public_access/public_access.md
+++ b/doc/public_access/public_access.md
@@ -77,6 +77,16 @@ by accident. The restricted visibility settings do not apply to admin users.
For details, see [Restricted visibility levels](../user/admin_area/settings/visibility_and_access_controls.md#restricted-visibility-levels).
+## Reducing visibility
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/33358) in GitLab 12.6.
+
+Reducing a project's visibility level will remove the fork relationship between the project and
+any forked project. This is a potentially destructive action which requires confirmation before
+this can be saved.
+
+![Project visibility change confirmation](img/project_visibility_confirmation_v12_6.png)
+
<!-- ## Troubleshooting
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
diff --git a/doc/push_rules/push_rules.md b/doc/push_rules/push_rules.md
index 0771a3e4225..d778d6b929c 100644
--- a/doc/push_rules/push_rules.md
+++ b/doc/push_rules/push_rules.md
@@ -49,6 +49,13 @@ branch names globally in Push Rules, you can now sleep without the anxiety
of your developers' mistakes. Every branch that doesn't match your push rule
will get rejected.
+### Custom Push Rules **(CORE ONLY)**
+
+It's possible to create custom push rules rather than the push rules available in
+**Admin area > Push Rules** by using more advanced server-side Git hooks.
+
+See [custom server-side Git hooks](../administration/custom_hooks.md) for more information.
+
## Enabling push rules
NOTE: **Note:**
diff --git a/doc/raketasks/generate_sample_prometheus_data.md b/doc/raketasks/generate_sample_prometheus_data.md
new file mode 100644
index 00000000000..2489a2c2ad3
--- /dev/null
+++ b/doc/raketasks/generate_sample_prometheus_data.md
@@ -0,0 +1,16 @@
+# Generate Sample Prometheus Data
+
+This command will run Prometheus queries for each of the metrics of a specific environment
+for a default time interval of 7 days ago to now. The results of each of query are stored
+under a `sample_metrics` directory as a yaml file named by the metric's `identifier`.
+When the environmental variable `USE_SAMPLE_METRICS` is set, the Prometheus API query is
+re-routed to `Projects::Environments::SampleMetricsController` which loads the appropriate
+data set if it is present within the `sample_metrics` directory.
+
+- This command requires an id from an Environment with an available Prometheus installation.
+
+**Example:**
+
+```
+bundle exec rake gitlab:generate_sample_prometheus_data[21]
+```
diff --git a/doc/security/password_length_limits.md b/doc/security/password_length_limits.md
index 9909ef4a8e4..235730eb825 100644
--- a/doc/security/password_length_limits.md
+++ b/doc/security/password_length_limits.md
@@ -4,7 +4,19 @@ type: reference, howto
# Custom password length limits
-The user password length is set to a minimum of 8 characters by default.
+By default, GitLab supports passwords with:
+
+- A minimum length of 8.
+- A maximum length of 128.
+
+GitLab administrators can modify password lengths:
+
+- Using configuration file.
+- [From](https://gitlab.com/gitlab-org/gitlab/merge_requests/20661) GitLab 12.6, using the GitLab UI.
+
+## Modify maximum password length using configuration file
+
+The user password length is set to a maximum of 128 characters by default.
To change that for installations from source:
1. Edit `devise_password_length.rb`:
@@ -18,15 +30,35 @@ To change that for installations from source:
1. Change the new password length limits:
```ruby
- config.password_length = 12..128
+ config.password_length = 12..135
```
In this example, the minimum length is 12 characters, and the maximum length
- is 128 characters.
+ is 135 characters.
1. [Restart GitLab](../administration/restart_gitlab.md#installations-from-source)
for the changes to take effect.
+NOTE: **Note:**
+From GitLab 12.6, the minimum password length set in this configuration file will be ignored. Minimum password lengths will now have to be modified via the [GitLab UI](#modify-minimum-password-length-using-gitlab-ui) instead.
+
+## Modify minimum password length using GitLab UI
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/merge_requests/20661) in GitLab 12.6
+
+The user password length is set to a minimum of 8 characters by default.
+To change that using GitLab UI:
+
+In the Admin area under **Settings** (`/admin/application_settings`), go to section **Sign-up Restrictions**.
+
+[Minimum password length settings](../user/admin_area/img/minimum_password_length_settings_v12_6.png)
+
+Set the **Minimum password length** to a value greater than or equal to 8 and hit **Save changes** to save the changes.
+
+CAUTION: **Caution:**
+Changing minimum or maximum limit does not affect existing user passwords in any manner. Existing users will not be asked to reset their password to adhere to the new limits.
+The new limit restriction will only apply during new user sign-ups and when an existing user performs a password reset.
+
<!-- ## Troubleshooting
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
diff --git a/doc/security/rack_attack.md b/doc/security/rack_attack.md
index 51b7d7db3e4..9cbb296338a 100644
--- a/doc/security/rack_attack.md
+++ b/doc/security/rack_attack.md
@@ -53,7 +53,8 @@ default['gitlab']['gitlab-rails']['rack_attack_protected_paths'] = [
'/users',
'/users/confirmation',
'/unsubscribes/',
- '/import/github/personal_access_token'
+ '/import/github/personal_access_token',
+ '/admin/session'
]
```
diff --git a/doc/ssh/README.md b/doc/ssh/README.md
index 01d86331a0a..80b8db84bed 100644
--- a/doc/ssh/README.md
+++ b/doc/ssh/README.md
@@ -273,6 +273,65 @@ git config core.sshCommand "ssh -o IdentitiesOnly=yes -i ~/.ssh/private-key-file
This will not use the SSH Agent and requires at least Git 2.10.
+## Multiple accounts on a single GitLab instance
+
+The [per-repository](#per-repository-ssh-keys) method also works for using
+multiple accounts within a single GitLab instance.
+
+Alternatively, it is possible to directly assign aliases to hosts in
+`~.ssh/config`. SSH and, by extension, Git will fail to log in if there is
+an `IdentityFile` set outside of a `Host` block in `.ssh/config`. This is
+due to how SSH assembles `IdentityFile` entries and is not changed by
+setting `IdentitiesOnly` to `yes`. `IdentityFile` entries should point to
+the private key of an SSH key pair.
+
+NOTE: **Note:**
+Private and public keys should be readable by the user only. Accomplish this
+on Linux and macOS by running: `chmod 0400 ~/.ssh/<example_ssh_key>` and
+`chmod 0400 ~/.ssh/<example_sh_key.pub>`.
+
+```conf
+# User1 Account Identity
+Host <user_1.gitlab.com>
+ Hostname gitlab.com
+ PreferredAuthentications publickey
+ IdentityFile ~/.ssh/<example_ssh_key1>
+
+# User2 Account Identity
+Host <user_2.gitlab.com>
+ Hostname gitlab.com
+ PreferredAuthentications publickey
+ IdentityFile ~/.ssh/<example_ssh_key2>
+```
+
+NOTE: **Note:**
+The example `Host` aliases are defined as `user_1.gitlab.com` and
+`user_2.gitlab.com` for efficiency and transparency. Advanced configurations
+are more difficult to maintain; using this type of alias makes it easier to
+understand when using other tools such as `git remote` subcommands. SSH
+would understand any string as a `Host` alias thus `Tanuki1` and `Tanuki2`,
+despite giving very little context as to where they point, would also work.
+
+Cloning the `gitlab` repository normally looks like this:
+
+```sh
+git clone git@gitlab.com:gitlab-org/gitlab.git
+```
+
+To clone it for `user_1`, replace `gitlab.com` with the SSH alias `user_1.gitlab.com`:
+
+```sh
+git clone git@<user_1.gitlab.com>:gitlab-org/gitlab.git
+```
+
+Fix a previously cloned repository using the `git remote` command.
+
+The example below assumes the remote repository is aliased as `origin`.
+
+```sh
+git remote set-url origin git@<user_1.gitlab.com>:gitlab-org/gitlab.git
+```
+
## Deploy keys
### Per-repository deploy keys
diff --git a/doc/subscriptions/index.md b/doc/subscriptions/index.md
index cae83d6186f..b406abaf481 100644
--- a/doc/subscriptions/index.md
+++ b/doc/subscriptions/index.md
@@ -223,6 +223,46 @@ The following table describes details of your subscription for groups:
| Subscription start date | Date your subscription started. If this is for a Free plan, is the date you transitioned off your group's paid plan. |
| Subscription end date | Date your current subscription will end. Does not apply to Free plans. |
+#### CI pipeline minutes
+
+CI pipeline minutes are the execution time for your [pipelines](../ci/pipelines.md) on our shared runners. Each [GitLab.com tier](https://about.gitlab.com/pricing/) includes a monthly quota of CI pipeline minutes. The quota is applied per group, shared across all members of that group, its subgroups and nested projects. To view the usage, navigate to the group's page, then **Settings > Usage Quotas**.
+
+Only pipeline minutes for our shared runners are restricted. If you have a specific runner setup for your projects, there is no limit to your build time on GitLab.com.
+
+The minutes limit only applies to private projects. The available quota is reset on the first of each calendar month at midnight UTC.
+
+If you reach your limit, you can [purchase additional CI minutes](#extra-shared-runners-pipeline-minutes), or upgrade your account to [Silver or Gold](https://about.gitlab.com/pricing/). Note, your own runners can still be used even if you reach your limits.
+
+##### How pipeline quota usage is calculated
+
+Pipeline quota usage is calculated as the sum of the duration of each individual job. This is slightly different to how pipeline _duration_ is [calculated](https://docs.gitlab.com/ee/ci/pipelines.html#how-pipeline-duration-is-calculated). Pipeline quota usage doesn't consider the intersection of jobs.
+
+A simple example is:
+
+A (1, 3)
+B (2, 4)
+C (6, 7)
+
+In the example:
+
+A begins at 1 and ends at 3.
+B begins at 2 and ends at 4.
+C begins at 6 and ends at 7.
+Visually, it can be viewed as:
+
+```
+0 1 2 3 4 5 6 7
+ AAAAAAA
+ BBBBBBB
+ CCCC
+```
+
+The sum of each individual job is being calculated therefore in this example, `8` runner minutes would be used for this pipeline:
+
+```
+A + B + C = 3 + 3 + 2 => 8
+```
+
#### Extra Shared Runners pipeline minutes
If you're using GitLab.com, you can purchase additional CI minutes so your
diff --git a/doc/topics/autodevops/img/autodevops_banner_v12_6.png b/doc/topics/autodevops/img/autodevops_banner_v12_6.png
new file mode 100644
index 00000000000..51ccdeeaa52
--- /dev/null
+++ b/doc/topics/autodevops/img/autodevops_banner_v12_6.png
Binary files differ
diff --git a/doc/topics/autodevops/index.md b/doc/topics/autodevops/index.md
index 93549ac4de5..33b13935de3 100644
--- a/doc/topics/autodevops/index.md
+++ b/doc/topics/autodevops/index.md
@@ -651,6 +651,8 @@ procfile exec` to replicate the environment where your application will run.
#### Workers
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/30628) in GitLab 12.6, `.gitlab/auto-deploy-values.yaml` will be used by default for Helm upgrades.
+
Some web applications need to run extra deployments for "worker processes". For
example, it is common in a Rails application to have a separate worker process
to run background tasks like sending emails.
@@ -672,13 +674,18 @@ need to:
- Set a CI variable `K8S_SECRET_REDIS_URL`, which the URL of this instance to
ensure it's passed into your deployments.
-Once you have configured your worker to respond to health checks, you will
-need to configure a CI variable `HELM_UPGRADE_EXTRA_ARGS` with the value
-`--values helm-values.yaml`.
+Once you have configured your worker to respond to health checks, run a Sidekiq
+worker for your Rails application. For:
+
+- GitLab 12.6 and later, either:
+ - Add a file named `.gitlab/auto-deploy-values.yaml` to your repository. It will
+ be automatically used if found.
+ - Add a file with a different name or path to the repository, and override the value of the
+ `HELM_UPGRADE_VALUES_FILE` variable with the path and name.
+- GitLab 12.5 and earlier, run the worker with the `--values` parameter that specifies
+ a file in the repository.
-Then you can, for example, run a Sidekiq worker for your Rails application
-by adding a file named `helm-values.yaml` to your repository with the following
-content:
+In any case, the file must contain the following:
```yml
workers:
@@ -766,10 +773,17 @@ or a `.buildpacks` file in your project:
and add the URL of the buildpack to use on a line in the file. If you want to
use multiple buildpacks, you can enter them in, one on each line.
-CAUTION: **Caution:**
-Using multiple buildpacks isn't yet supported by Auto DevOps.
+#### Multiple buildpacks
+
+Using multiple buildpacks isn't fully supported by Auto DevOps because, when using the `.buildpacks`
+file, Auto Test will not work.
-CAUTION: **Caution:** When using the `.buildpacks` file, Auto Test will not work. The buildpack [heroku-buildpack-multi](https://github.com/heroku/heroku-buildpack-multi/) (which is used under the hood to parse the `.buildpacks` file) doesn't provide the necessary commands `bin/test-compile` and `bin/test`. Make sure to provide the project variable `BUILDPACK_URL` instead.
+The buildpack [heroku-buildpack-multi](https://github.com/heroku/heroku-buildpack-multi/),
+which is used under the hood to parse the `.buildpacks` file, doesn't provide the necessary commands
+`bin/test-compile` and `bin/test`.
+
+If your goal is to use only a single custom buildpack, you should provide the project variable
+`BUILDPACK_URL` instead.
### Custom `Dockerfile`
@@ -976,6 +990,7 @@ applications.
| `CANARY_PRODUCTION_REPLICAS` | Number of canary replicas to deploy for [Canary Deployments](../../user/project/canary_deployments.md) in the production environment. Takes precedence over `CANARY_REPLICAS`. Defaults to 1. |
| `CANARY_REPLICAS` | Number of canary replicas to deploy for [Canary Deployments](../../user/project/canary_deployments.md). Defaults to 1. |
| `HELM_RELEASE_NAME` | From GitLab 12.1, allows the `helm` release name to be overridden. Can be used to assign unique release names when deploying multiple projects to a single namespace. |
+| `HELM_UPGRADE_VALUES_FILE` | From GitLab 12.6, allows the `helm upgrade` values file to be overridden. Defaults to `.gitlab/auto-deploy-values.yaml`. |
| `HELM_UPGRADE_EXTRA_ARGS` | From GitLab 11.11, allows extra arguments in `helm` commands when deploying the application. Note that using quotes will not prevent word splitting. **Tip:** you can use this variable to [customize the Auto Deploy Helm chart](#custom-helm-chart) by applying custom override values with `--values my-values.yaml`. |
| `INCREMENTAL_ROLLOUT_MODE` | From GitLab 11.4, if present, can be used to enable an [incremental rollout](#incremental-rollout-to-production-premium) of your application for the production environment. Set to `manual` for manual deployment jobs or `timed` for automatic rollout deployments with a 5 minute delay each one. |
| `K8S_SECRET_*` | From GitLab 11.7, any variable prefixed with [`K8S_SECRET_`](#application-secret-variables) will be made available by Auto DevOps as environment variables to the deployed application. |
@@ -1253,6 +1268,30 @@ Everything behaves the same way, except:
1. `timed rollout 50%`
1. `timed rollout 100%`
+### Auto DevOps banner
+
+The following Auto DevOps banner will show for maintainers+ on new projects when Auto DevOps is not
+enabled:
+
+![Auto DevOps banner](img/autodevops_banner_v12_6.png)
+
+The banner can be disabled for:
+
+- A user when they dismiss it themselves.
+- A project by explicitly [disabling Auto DevOps](#enablingdisabling-auto-devops).
+- An entire GitLab instance:
+ - By an administrator running the following in a Rails console:
+
+ ```ruby
+ Feature.get(:auto_devops_banner_disabled).enable
+ ```
+
+ - Through the REST API with an admin access token:
+
+ ```sh
+ curl --data "value=true" --header "PRIVATE-TOKEN: <personal_access_token>" https://gitlab.example.com/api/v4/features/auto_devops_banner_disabled
+ ```
+
## Currently supported languages
Note that not all buildpacks support Auto Test yet, as it's a relatively new
@@ -1325,27 +1364,6 @@ spec:
service account for your project. For help debugging this issue, see
[Troubleshooting failed deployment jobs](../../user/project/clusters/index.md#troubleshooting).
-### Disable the banner instance wide
-
-If an administrator would like to disable the banners on an instance level, this
-feature can be disabled either through the console:
-
-```sh
-sudo gitlab-rails console
-```
-
-Then run:
-
-```ruby
-Feature.get(:auto_devops_banner_disabled).enable
-```
-
-Or through the HTTP API with an admin access token:
-
-```sh
-curl --data "value=true" --header "PRIVATE-TOKEN: personal_access_token" https://gitlab.example.com/api/v4/features/auto_devops_banner_disabled
-```
-
[ce-37115]: https://gitlab.com/gitlab-org/gitlab-foss/issues/37115
[docker-in-docker]: ../../docker/using_docker_build.md#use-docker-in-docker-executor
[review-app]: ../../ci/review_apps/index.md
diff --git a/doc/topics/git/troubleshooting_git.md b/doc/topics/git/troubleshooting_git.md
index 5391f6e5ad6..d4d559c9483 100644
--- a/doc/topics/git/troubleshooting_git.md
+++ b/doc/topics/git/troubleshooting_git.md
@@ -130,5 +130,25 @@ remote: Calculating new repository size... (cancelled after 729ms)
This could be used to further investigate what operation is performing poorly
and provide GitLab with more information on how to improve the service.
+## `git clone` over HTTP fails with `transfer closed with outstanding read data remaining` error
+
+If the buffer size is lower than what is allowed in the request, the action will fail with an error similar to the one below:
+
+```text
+error: RPC failed; curl 18 transfer closed with outstanding read data remaining
+fatal: The remote end hung up unexpectedly
+fatal: early EOF
+fatal: index-pack failed
+```
+
+This can be fixed by increasing the existing `http.postBuffer` value to one greater than the repository size. For example, if `git clone` fails when cloning a 500M repository, the solution will be to set `http.postBuffer` to `524288000` so that the request only starts buffering after the first 524288000 bytes.
+
+NOTE: **Note:**
+The default value of `http.postBuffer`, 1 MiB, is applied if the setting is not configured.
+
+```sh
+git config http.postBuffer 524288000
+```
+
[SSH troubleshooting]: ../../ssh/README.md#troubleshooting "SSH Troubleshooting"
[Broken-Pipe]: https://stackoverflow.com/questions/19120120/broken-pipe-when-pushing-to-git-repository/36971469#36971469 "StackOverflow: 'Broken pipe when pushing to Git repository'"
diff --git a/doc/topics/git/useful_git_commands.md b/doc/topics/git/useful_git_commands.md
index cfe19c89618..abd06b95b1e 100644
--- a/doc/topics/git/useful_git_commands.md
+++ b/doc/topics/git/useful_git_commands.md
@@ -167,6 +167,14 @@ With HTTPS:
GIT_TRACE_PACKET=1 GIT_TRACE=2 GIT_CURL_VERBOSE=1 git clone <url>
```
+### Debugging with Git embedded traces
+
+Git includes a complete set of [traces for debugging Git commands](https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables#_debugging), for example:
+
+- `GIT_TRACE_PERFORMANCE=1`: enables tracing of performance data, showing how long each particular `git` invocation takes.
+- `GIT_TRACE_SETUP=1`: enables tracing of what `git` is discovering about the repository and environment it’s interacting with.
+- `GIT_TRACE_PACKET=1`: enables packet-level tracing for network operations.
+
## Rebasing
### Rebase your branch onto master
diff --git a/doc/university/README.md b/doc/university/README.md
index 9725cb14fc5..2609bc5728f 100644
--- a/doc/university/README.md
+++ b/doc/university/README.md
@@ -196,8 +196,8 @@ The GitLab University curriculum is composed of GitLab videos, screencasts, pres
## 4. External Articles
1. [2011 WSJ article by Marc Andreessen - Software is Eating the World](https://www.wsj.com/articles/SB10001424053111903480904576512250915629460)
-1. [2014 Blog post by Chris Dixon - Software eats software development](http://cdixon.org/2014/04/13/software-eats-software-development/)
-1. [2015 Venture Beat article - Actually, Open Source is Eating the World](http://venturebeat.com/2015/12/06/its-actually-open-source-software-thats-eating-the-world/)
+1. [2014 Blog post by Chris Dixon - Software eats software development](https://cdixon.org/2014/04/13/software-eats-software-development)
+1. [2015 Venture Beat article - Actually, Open Source is Eating the World](https://venturebeat.com/2015/12/06/its-actually-open-source-software-thats-eating-the-world/)
## 5. Resources for GitLab Team Members
diff --git a/doc/university/training/end-user/README.md b/doc/university/training/end-user/README.md
index 4c86aedff8f..be9db9229cd 100644
--- a/doc/university/training/end-user/README.md
+++ b/doc/university/training/end-user/README.md
@@ -4,7 +4,7 @@ comments: false
# Training
-This training material is the markdown used to generate training slides
+This training material is the Markdown used to generate training slides
which can be found at [End User Slides](https://gitlab-org.gitlab.io/end-user-training-slides/#/)
through it's [RevealJS](https://gitlab.com/gitlab-org/end-user-training-slides)
project.
diff --git a/doc/university/training/index.md b/doc/university/training/index.md
index 61fde9d8336..69f82392027 100644
--- a/doc/university/training/index.md
+++ b/doc/university/training/index.md
@@ -5,7 +5,7 @@ type: index
# GitLab Training Material
-All GitLab training material is stored in markdown format. Slides are
+All GitLab training material is stored in Markdown format. Slides are
generated using [Deskset](https://www.deckset.com/).
All training material is open to public contribution.
diff --git a/doc/update/patch_versions.md b/doc/update/patch_versions.md
index 7314e34666d..b00fc5d90cf 100644
--- a/doc/update/patch_versions.md
+++ b/doc/update/patch_versions.md
@@ -12,13 +12,7 @@ You can select the tag in the version dropdown in the top left corner of GitLab
### 0. Backup
-It's useful to make a backup just in case things go south:
-
-```bash
-cd /home/git/gitlab
-
-sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production
-```
+It's useful to make a backup just in case things go south. Depending on the installation method, backup commands vary, see the [backing up and restoring GitLab](../raketasks/backup_restore.md#creating-a-backup-of-the-gitlab-system) documentation.
### 1. Stop server
diff --git a/doc/update/upgrading_from_ce_to_ee.md b/doc/update/upgrading_from_ce_to_ee.md
index b553b4aa405..52a65a89cbf 100644
--- a/doc/update/upgrading_from_ce_to_ee.md
+++ b/doc/update/upgrading_from_ce_to_ee.md
@@ -59,17 +59,22 @@ sudo -u git -H git checkout EE_BRANCH
```sh
cd /home/git/gitlab
-# MySQL installations (note: the line below states '--without postgres')
-sudo -u git -H bundle install --without postgres development test --deployment
+sudo -u git -H bundle install --deployment --without development test mysql aws kerberos
-# PostgreSQL installations (note: the line below states '--without mysql')
-sudo -u git -H bundle install --without mysql development test --deployment
+# Optional: clean up old gems
+sudo -u git -H bundle clean
# Run database migrations
sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production
-# Clean up assets and cache
-sudo -u git -H bundle exec rake assets:clean assets:precompile cache:clear RAILS_ENV=production
+# Compile GetText PO files
+sudo -u git -H bundle exec rake gettext:compile RAILS_ENV=production
+
+# Update node dependencies and recompile assets
+sudo -u git -H bundle exec rake yarn:install gitlab:assets:clean gitlab:assets:compile RAILS_ENV=production NODE_ENV=production NODE_OPTIONS="--max_old_space_size=4096"
+
+# Clean up cache
+sudo -u git -H bundle exec rake cache:clear RAILS_ENV=production
```
### 4. Install `gitlab-elasticsearch-indexer` (optional) **(STARTER ONLY)**
diff --git a/doc/user/admin_area/appearance.md b/doc/user/admin_area/appearance.md
index 1fea6ab8b02..b9eb9e2a731 100644
--- a/doc/user/admin_area/appearance.md
+++ b/doc/user/admin_area/appearance.md
@@ -46,8 +46,8 @@ of your GitLab instance. These messages will appear on all projects and pages of
instance, including the sign in / sign up page. The default color is white text on
an orange background, but this can be customized by clicking on **Customize colors**.
-Limited [markdown](../markdown.md) is supported, such as bold, italics, and links, for
-example. Other markdown features, including lists, images and quotes, are not supported,
+Limited [Markdown](../markdown.md) is supported, such as bold, italics, and links, for
+example. Other Markdown features, including lists, images and quotes, are not supported,
as the header and footer messages can only be a single line.
![header and footer screenshot](img/appearance_header_footer_v12_3.png)
@@ -61,7 +61,7 @@ to activate it in the GitLab instance.
## Sign in / Sign up pages
You can replace the default message on the sign in / sign up page with your own message
-and logo. You can make full use of [markdown](../markdown.md) in the description:
+and logo. You can make full use of [Markdown](../markdown.md) in the description:
![sign in message screenshot](img/appearance_sign_in_v12_3.png)
@@ -81,7 +81,7 @@ You can add also add a [customized help message](settings/help_page.md) below th
## New project pages
You can add a new project guidelines message to the **New project page** within GitLab.
-You can make full use of [markdown](../markdown.md) in the description:
+You can make full use of [Markdown](../markdown.md) in the description:
![new project message screenshot](img/appearance_new_project_v12_3.png)
diff --git a/doc/user/admin_area/broadcast_messages.md b/doc/user/admin_area/broadcast_messages.md
index b0491499f88..bc51552603d 100644
--- a/doc/user/admin_area/broadcast_messages.md
+++ b/doc/user/admin_area/broadcast_messages.md
@@ -22,6 +22,7 @@ To add a broadcast message:
1. Navigate to the **Admin Area > Messages** page.
1. Add the text for the message to the **Message** field. Markdown and emoji are supported.
1. If required, click the **Customize colors** link to edit the background color and font color of the message.
+1. If required, add a **Target Path** to only show the broadcast message on URLs matching that path. You can use the wildcard character `*` to match multiple URLs, for example `/users/*/issues`.
1. Select a date for the message to start and end.
1. Click the **Add broadcast message** button.
diff --git a/doc/user/admin_area/credentials_inventory.md b/doc/user/admin_area/credentials_inventory.md
new file mode 100644
index 00000000000..30ebbb5b6db
--- /dev/null
+++ b/doc/user/admin_area/credentials_inventory.md
@@ -0,0 +1,19 @@
+# Credentials inventory **(ULTIMATE ONLY)**
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/merge_requests/20912) in GitLab 12.6.
+
+## Overview
+
+GitLab administrators are responsible for the overall security of their instance. To assist, GitLab provides a Credentials inventory to keep track of all the credentials that can be used to access their self-managed instance.
+
+Using Credentials inventory, GitLab administrators can see all the personal access tokens and SSH keys that exist in their instance and:
+
+- Who they belong to.
+- Their access scope.
+- Their usage pattern.
+
+To access the Credentials inventory, navigate to **Admin Area > Credentials**.
+
+The following is an example of the Credentials inventory page:
+
+![Credentials inventory page](img/credentials_inventory_v12_6.png)
diff --git a/doc/user/admin_area/img/credentials_inventory_v12_6.png b/doc/user/admin_area/img/credentials_inventory_v12_6.png
new file mode 100644
index 00000000000..ff46db61cdb
--- /dev/null
+++ b/doc/user/admin_area/img/credentials_inventory_v12_6.png
Binary files differ
diff --git a/doc/user/admin_area/img/minimum_password_length_settings_v12_6.png b/doc/user/admin_area/img/minimum_password_length_settings_v12_6.png
new file mode 100644
index 00000000000..f75d9e9bb29
--- /dev/null
+++ b/doc/user/admin_area/img/minimum_password_length_settings_v12_6.png
Binary files differ
diff --git a/doc/user/admin_area/license.md b/doc/user/admin_area/license.md
index dbcf250bc57..fe8903a9f01 100644
--- a/doc/user/admin_area/license.md
+++ b/doc/user/admin_area/license.md
@@ -67,7 +67,7 @@ Omnibus installations should add this entry to `gitlab.rb`:
gitlab_rails['license_file'] = "/path/to/license/file"
```
-CAUTION:: **Caution:**
+CAUTION: **Caution:**
These methods will only add a license at the time of installation. Use the
admin area in the web ui to renew or upgrade licenses.
diff --git a/doc/user/admin_area/monitoring/convdev.md b/doc/user/admin_area/monitoring/convdev.md
deleted file mode 100644
index 6ad8a5a7ff0..00000000000
--- a/doc/user/admin_area/monitoring/convdev.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-redirect_to: '../../instance_statistics/convdev.md'
----
-
-This document was moved to [another location](../../instance_statistics/convdev.md).
diff --git a/doc/user/admin_area/monitoring/dev_ops_score.md b/doc/user/admin_area/monitoring/dev_ops_score.md
new file mode 100644
index 00000000000..f8b66531f2f
--- /dev/null
+++ b/doc/user/admin_area/monitoring/dev_ops_score.md
@@ -0,0 +1,5 @@
+---
+redirect_to: '../../instance_statistics/dev_ops_score.md'
+---
+
+This document was moved to [another location](../../instance_statistics/dev_ops_score.md).
diff --git a/doc/user/admin_area/monitoring/health_check.md b/doc/user/admin_area/monitoring/health_check.md
index 103d7ecc573..68767efc72a 100644
--- a/doc/user/admin_area/monitoring/health_check.md
+++ b/doc/user/admin_area/monitoring/health_check.md
@@ -103,7 +103,7 @@ This check is being exempt from Rack Attack.
## Liveness
DANGER: **Warning:**
-In Gitlab [12.4](https://about.gitlab.com/upcoming-releases/)
+In GitLab [12.4](https://about.gitlab.com/upcoming-releases/)
the response body of the Liveness check was changed
to match the example below.
diff --git a/doc/user/admin_area/settings/account_and_limit_settings.md b/doc/user/admin_area/settings/account_and_limit_settings.md
index e443127a8a0..9d82b3b4292 100644
--- a/doc/user/admin_area/settings/account_and_limit_settings.md
+++ b/doc/user/admin_area/settings/account_and_limit_settings.md
@@ -84,3 +84,35 @@ add the line below to `/etc/gitlab/gitlab.rb` before increasing the max attachme
```
nginx['client_max_body_size'] = "200m"
```
+
+## Limiting lifetime of personal access tokens **(ULTIMATE ONLY)**
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/3649) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 12.6.
+
+Users can optionally specify an expiration date for
+[personal access tokens](../../profile/personal_access_tokens.md).
+This expiration date is not a requirement, and can be set to any arbitrary date.
+
+Since personal access tokens are the only token needed for programmatic access to GitLab,
+organizations with security requirements may want to enforce more protection to require
+regular rotation of these tokens.
+
+### Setting a limit
+
+Only a GitLab administrator can set a limit. Leaving it empty means
+there are no restrictions.
+
+To set a limit on how long personal access tokens are valid:
+
+1. Navigate to **Admin Area > Settings > General**.
+1. Expand the **Account and limit** section.
+1. Fill in the **Maximun allowable lifetime for personal access tokens (days)** field.
+1. Click **Save changes**.
+
+Once a lifetime for personal access tokens is set, GitLab will:
+
+- Apply the lifetime for new personal access tokens, and require users to set an expiration date
+ and a date no later than the allowed lifetime.
+- After three hours, revoke old tokens with no expiration date or with a lifetime longer than the
+ allowed lifetime. Three hours is given to allow administrators to change the allowed lifetime,
+ or remove it, before revocation takes place.
diff --git a/doc/user/admin_area/settings/protected_paths.md b/doc/user/admin_area/settings/protected_paths.md
index 21c8d79b138..5d2548890e3 100644
--- a/doc/user/admin_area/settings/protected_paths.md
+++ b/doc/user/admin_area/settings/protected_paths.md
@@ -14,7 +14,8 @@ GitLab protects the following paths with Rack Attack by default:
'/users',
'/users/confirmation',
'/unsubscribes/',
-'/import/github/personal_access_token'
+'/import/github/personal_access_token',
+'/admin/session'
```
GitLab responds with HTTP status code `429` to POST requests at protected paths
@@ -59,18 +60,14 @@ NOTE: **Note:** If Omnibus settings are present, applications settings will be a
To migrate from Omnibus GitLab 12.3 and earlier settings:
-1. Disable the Protected Paths throttle from Omnibus, by changing `rack_attack_enabled` value to `false` on [`rack_attack.rb.erb`](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-cookbooks/gitlab/templates/default/rack_attack.rb.erb#L18):
-
- ```ruby
- rack_attack_enabled = false
- ```
-
1. Customize and enable your protected paths settings by following [Configure using GitLab UI](#configure-using-gitlab-ui) section.
-1. Restart GitLab:
+1. SSH into your frontend nodes and add to `/etc/gitlab/gitlab.rb`:
- ```bash
- sudo gitlab-ctl restart
+ ```ruby
+ gitlab_rails['rack_attack_admin_area_protected_paths_enabled'] = true
```
+1. [Reconfigure GitLab](../../../administration/restart_gitlab.md#omnibus-gitlab-reconfigure) for the changes to take effect.
+
That's it. Protected paths throttle are now managed by GitLab admin settings.
diff --git a/doc/user/admin_area/settings/sign_up_restrictions.md b/doc/user/admin_area/settings/sign_up_restrictions.md
index ff26a1ee09c..851a984c285 100644
--- a/doc/user/admin_area/settings/sign_up_restrictions.md
+++ b/doc/user/admin_area/settings/sign_up_restrictions.md
@@ -19,6 +19,13 @@ their email address before they are allowed to sign in.
![Email confirmation](img/email_confirmation.png)
+## Minimum password length limit
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/merge_requests/20661) in GitLab 12.6
+
+You can [change](../../../security/password_length_limits.md#modify-minimum-password-length-using-gitlab-ui)
+the minimum number of characters a user must have in their password using the GitLab UI.
+
## Whitelist email domains
> [Introduced][ce-598] in GitLab 7.11.0
diff --git a/doc/user/admin_area/settings/visibility_and_access_controls.md b/doc/user/admin_area/settings/visibility_and_access_controls.md
index 73406fd5037..74398128593 100644
--- a/doc/user/admin_area/settings/visibility_and_access_controls.md
+++ b/doc/user/admin_area/settings/visibility_and_access_controls.md
@@ -14,8 +14,11 @@ To access the visibility and access control options:
## Default branch protection
-Branch protection specifies which roles can push to branches and which roles can delete
-branches.
+This global option defines the branch protection that applies to every repository's default branch. [Branch protection](../../project/protected_branches.md) specifies which roles can push to branches and which roles can delete
+branches. In this case _Default_ refers to a repository's default branch, which in most cases is _master_.
+branches. "Default" in this case refers to a repository's default branch, which in most cases would be "master".
+
+This setting applies only to each repositories' default branch. To protect other branches, you must configure branch protection in repository. For details, see [Protected Branches](../../project/protected_branches.md).
To change the default branch protection:
@@ -35,7 +38,7 @@ To change the default project creation protection:
For more details, see [Default project-creation level](../../group/index.md#default-project-creation-level).
-## Default project deletion protection
+## Default project deletion protection **(PREMIUM ONLY)**
By default, a project can be deleted by anyone with the **Owner** role, either at the project or
group level.
@@ -45,6 +48,17 @@ To ensure only admin users can delete projects:
1. Check the **Default project deletion protection** checkbox.
1. Click **Save changes**.
+## Project deletion adjourned period **(PREMIUM ONLY)**
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/32935) in GitLab 12.6.
+
+By default, project marked for deletion will be permanently removed after 7 days. This period may be changed.
+
+To change this period:
+
+1. Select the desired option.
+1. Click **Save changes**.
+
## Default project visibility
To set the default visibility levels for new projects:
diff --git a/doc/user/analytics/cycle_analytics.md b/doc/user/analytics/cycle_analytics.md
index c75f101b0e1..796cae70803 100644
--- a/doc/user/analytics/cycle_analytics.md
+++ b/doc/user/analytics/cycle_analytics.md
@@ -153,6 +153,27 @@ A few notes:
cycles, calculate their median time and the result is what the dashboard of
Cycle Analytics is showing.
+## Days to completion chart
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/merge_requests/21631) in GitLab 12.6.
+
+This chart visually depicts the total number of days it takes for cycles to be completed.
+
+This chart uses the global page filters for displaying data based on the selected
+group, projects, and timeframe. In addition, specific stages can be selected
+from within the chart itself.
+
+### Enabling chart
+
+By default, this chart is disabled for self-managed instances. To enable it, ask an
+administrator with Rails console access to run the following:
+
+```ruby
+Feature.enable(:cycle_analytics_scatterplot_enabled)
+```
+
+This chart is enabled by default on GitLab.com.
+
## Permissions
The current permissions on the Project Cycle Analytics dashboard are:
diff --git a/doc/user/application_security/configuration/index.md b/doc/user/application_security/configuration/index.md
new file mode 100644
index 00000000000..c8d7edff2d6
--- /dev/null
+++ b/doc/user/application_security/configuration/index.md
@@ -0,0 +1,27 @@
+---
+type: reference, howto
+---
+
+# Security Configuration **(ULTIMATE)**
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/merge_requests/20711) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 12.6.
+
+## Overview
+
+The security configuration page displays the configuration state of each of the security
+features and can be accessed through a project's sidebar nav.
+
+![Screenshot of security configuration page](../img/security_configuration_page_v12_6.png)
+
+The page uses the project's latest default branch [CI pipeline](../../../ci/pipelines.md) to determine the configuration
+state of each feature. If a job with the expected security report artifact exists in the pipeline,
+the feature is considered configured.
+
+NOTE: **Note:** if the latest pipeline used [Auto DevOps](../../../topics/autodevops/index.md),
+all security features will be configured by default.
+
+## Limitations
+
+It is not possible to enable or disable a feature using the configuration page.
+However, instructions on how to enable or disable a feature can be found through
+the links next to each feature on that page.
diff --git a/doc/user/application_security/container_scanning/index.md b/doc/user/application_security/container_scanning/index.md
index 931755c6305..08242b3c65b 100644
--- a/doc/user/application_security/container_scanning/index.md
+++ b/doc/user/application_security/container_scanning/index.md
@@ -127,7 +127,7 @@ If you want to whitelist specific vulnerabilities, you'll need to:
[overriding the Container Scanning template](#overriding-the-container-scanning-template) section of this document.
1. Define the whitelisted vulnerabilities in a YAML file named `clair-whitelist.yml` which must use the format described
in the [following whitelist example file](https://github.com/arminc/clair-scanner/blob/v12/example-whitelist.yaml).
- 1. Add the `clair-whitelist.yml` file to the git repository of your project
+ 1. Add the `clair-whitelist.yml` file to the Git repository of your project
### Overriding the Container Scanning template
@@ -219,6 +219,94 @@ build_latest_vulnerabilities:
The above template will work for a GitLab Docker registry running on a local installation, however, if you're using a non-GitLab Docker registry, you'll need to change the `$CI_REGISTRY` value and the `docker login` credentials to match the details of your local registry.
+## Reports JSON format
+
+CAUTION: **Caution:**
+The JSON report artifacts are not a public API of Container Scanning and their format may change in the future.
+
+The Container Scanning tool emits a JSON report file. Here is an example of the report structure with all important parts of
+it highlighted:
+
+```json-doc
+{
+ "version": "2.3",
+ "vulnerabilities": [
+ {
+ "category": "container_scanning",
+ "message": "CVE-2019-3462 in apt",
+ "description": "Incorrect sanitation of the 302 redirect field in HTTP transport method of apt versions 1.4.8 and earlier can lead to content injection by a MITM attacker, potentially leading to remote code execution on the target machine.",
+ "cve": "debian:9:apt:CVE-2019-3462",
+ "severity": "High",
+ "confidence": "Unknown",
+ "solution": "Upgrade apt from 1.4.8 to 1.4.9",
+ "scanner": {
+ "id": "klar",
+ "name": "klar"
+ },
+ "location": {
+ "dependency": {
+ "package": {
+ "name": "apt"
+ },
+ "version": "1.4.8"
+ },
+ "operating_system": "debian:9",
+ "image": "registry.gitlab.com/gitlab-org/security-products/dast/webgoat-8.0@sha256:bc09fe2e0721dfaeee79364115aeedf2174cce0947b9ae5fe7c33312ee019a4e"
+ },
+ "identifiers": [
+ {
+ "type": "cve",
+ "name": "CVE-2019-3462",
+ "value": "CVE-2019-3462",
+ "url": "https://security-tracker.debian.org/tracker/CVE-2019-3462"
+ }
+ ],
+ "links": [
+ {
+ "url": "https://security-tracker.debian.org/tracker/CVE-2019-3462"
+ }
+ ]
+ }
+ ],
+ "remediations": [
+ ]
+}
+```
+
+Here is the description of the report file structure nodes and their meaning. All fields are mandatory to be present in
+the report JSON unless stated otherwise. Presence of optional fields depends on the underlying analyzers being used.
+
+| Report JSON node | Description |
+|------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `version` | Report syntax version used to generate this JSON. |
+| `vulnerabilities` | Array of vulnerability objects. |
+| `vulnerabilities[].category` | Where this vulnerability belongs (SAST, Container Scanning etc.). For Container Scanning, it will always be `container_scanning`. |
+| `vulnerabilities[].message` | A short text that describes the vulnerability, it may include occurrence's specific information. Optional. |
+| `vulnerabilities[].description` | A long text that describes the vulnerability. Optional. |
+| `vulnerabilities[].cve` | A fingerprint string value that represents a concrete occurrence of the vulnerability. It's used to determine whether two vulnerability occurrences are same or different. May not be 100% accurate. **This is NOT a [CVE](https://cve.mitre.org/)**. |
+| `vulnerabilities[].severity` | How much the vulnerability impacts the software. Possible values: `Undefined` (an analyzer has not provided this info), `Info`, `Unknown`, `Low`, `Medium`, `High`, `Critical`. **Note:** Our current container scanning tool based on [klar](https://github.com/optiopay/klar) only provides the following levels: `Unknown`, `Low`, `Medium`, `High`, `Critical`. |
+| `vulnerabilities[].confidence` | How reliable the vulnerability's assessment is. Possible values: `Undefined` (an analyzer has not provided this info), `Ignore`, `Unknown`, `Experimental`, `Low`, `Medium`, `High`, `Confirmed`. **Note:** Our current container scanning tool based on [klar](https://github.com/optiopay/klar) does not provide a confidence level, so this value is currently hardcoded to `Unknown`. |
+| `vulnerabilities[].solution` | Explanation of how to fix the vulnerability. Optional. |
+| `vulnerabilities[].scanner` | A node that describes the analyzer used to find this vulnerability. |
+| `vulnerabilities[].scanner.id` | Id of the scanner as a snake_case string. |
+| `vulnerabilities[].scanner.name` | Name of the scanner, for display purposes. |
+| `vulnerabilities[].location` | A node that tells where the vulnerability is located. |
+| `vulnerabilities[].location.dependency` | A node that describes the dependency of a project where the vulnerability is located. |
+| `vulnerabilities[].location.dependency.package` | A node that provides the information on the package where the vulnerability is located. |
+| `vulnerabilities[].location.dependency.package.name` | Name of the package where the vulnerability is located. |
+| `vulnerabilities[].location.dependency.version` | Version of the vulnerable package. Optional. |
+| `vulnerabilities[].location.operating_system` | The operating system that contains the vulnerable package. |
+| `vulnerabilities[].location.image` | The Docker image that was analyzed. Optional. |
+| `vulnerabilities[].identifiers` | An ordered array of references that identify a vulnerability on internal or external DBs. |
+| `vulnerabilities[].identifiers[].type` | Type of the identifier. Possible values: common identifier types (among `cve`, `cwe`, `osvdb`, and `usn`). |
+| `vulnerabilities[].identifiers[].name` | Name of the identifier for display purpose. |
+| `vulnerabilities[].identifiers[].value` | Value of the identifier for matching purpose. |
+| `vulnerabilities[].identifiers[].url` | URL to identifier's documentation. Optional. |
+| `vulnerabilities[].links` | An array of references to external documentation pieces or articles that describe the vulnerability further. Optional. |
+| `vulnerabilities[].links[].name` | Name of the vulnerability details link. Optional. |
+| `vulnerabilities[].links[].url` | URL of the vulnerability details document. Optional. |
+| `remediations` | Not supported yet. |
+
## Troubleshooting
### docker: Error response from daemon: failed to copy xattrs
diff --git a/doc/user/application_security/dast/index.md b/doc/user/application_security/dast/index.md
index d285b5ff585..3a8a81f5f57 100644
--- a/doc/user/application_security/dast/index.md
+++ b/doc/user/application_security/dast/index.md
@@ -85,7 +85,7 @@ There are two ways to define the URL to be scanned by DAST:
1. Add it in an `environment_url.txt` file at the root of your project.
This is great for testing in dynamic environments. In order to run DAST against
- an app that is dynamically created during a Gitlab CI pipeline, have the app
+ an app that is dynamically created during a GitLab CI pipeline, have the app
persist its domain in an `environment_url.txt` file, and DAST will
automatically parse that file to find its scan target.
You can see an [example](https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Deploy.gitlab-ci.yml)
@@ -228,7 +228,7 @@ server {
###### Apache
Apache can also be used as a [reverse proxy](https://httpd.apache.org/docs/2.4/mod/mod_proxy.html)
-to add the Gitlab-DAST-Permission [header](https://httpd.apache.org/docs/current/mod/mod_headers.html).
+to add the `Gitlab-DAST-Permission` [header](https://httpd.apache.org/docs/current/mod/mod_headers.html).
To do so, add the following lines to `httpd.conf`:
diff --git a/doc/user/application_security/dependency_scanning/index.md b/doc/user/application_security/dependency_scanning/index.md
index 0e46052b0bd..01feaaac423 100644
--- a/doc/user/application_security/dependency_scanning/index.md
+++ b/doc/user/application_security/dependency_scanning/index.md
@@ -55,7 +55,7 @@ The following languages and dependency managers are supported.
| Language (package managers) | Supported | Scan tool(s) |
|----------------------------- | --------- | ------------ |
-| Java ([Gradle](https://gradle.org/)) | not currently ([issue](https://gitlab.com/gitlab-org/gitlab/issues/13075 "Dependency Scanning for Gradle" )) | not available |
+| Java ([Gradle](https://gradle.org/)) | yes | [gemnasium](https://gitlab.com/gitlab-org/security-products/gemnasium) |
| Java ([Maven](https://maven.apache.org/)) | yes | [gemnasium](https://gitlab.com/gitlab-org/security-products/gemnasium) |
| JavaScript ([npm](https://www.npmjs.com/), [yarn](https://yarnpkg.com/en/)) | yes | [gemnasium](https://gitlab.com/gitlab-org/security-products/gemnasium), [Retire.js](https://retirejs.github.io/retire.js/) |
| Go ([Golang](https://golang.org/)) | not currently ([issue](https://gitlab.com/gitlab-org/gitlab/issues/7132 "Dependency Scanning for Go")) | not available |
@@ -64,6 +64,7 @@ The following languages and dependency managers are supported.
| Python ([Pipfile](https://pipenv.kennethreitz.org/en/latest/basics/)) | not currently ([issue](https://gitlab.com/gitlab-org/gitlab/issues/11756 "Pipfile.lock support for Dependency Scanning"))| not available |
| Python ([poetry](https://poetry.eustace.io/)) | not currently ([issue](https://gitlab.com/gitlab-org/gitlab/issues/7006 "Support Poetry in Dependency Scanning")) | not available |
| Ruby ([gem](https://rubygems.org/)) | yes | [gemnasium](https://gitlab.com/gitlab-org/security-products/gemnasium), [bundler-audit](https://github.com/rubysec/bundler-audit) |
+| Scala ([sbt](https://www.scala-sbt.org/)) | yes | [gemnasium](https://gitlab.com/gitlab-org/security-products/gemnasium) |
## Configuration
@@ -127,23 +128,26 @@ dependency_scanning:
Dependency Scanning can be [configured](#customizing-the-dependency-scanning-settings)
using environment variables.
-| Environment variable | Description | Example usage |
-| --------------------------------------- | ----------- | ------------- |
-| `DS_ANALYZER_IMAGES` | Comma separated list of custom images. The official default images are still enabled. Read more about [customizing analyzers](analyzers.md). | |
-| `DS_ANALYZER_IMAGE_PREFIX` | Override the name of the Docker registry providing the official default images (proxy). Read more about [customizing analyzers](analyzers.md). | |
-| `DS_ANALYZER_IMAGE_TAG` | Override the Docker tag of the official default images. Read more about [customizing analyzers](analyzers.md). | |
-| `DS_PYTHON_VERSION` | Version of Python. If set to 2, dependencies are installed using Python 2.7 instead of Python 3.6. ([Introduced](https://gitlab.com/gitlab-org/gitlab/issues/12296) in GitLab 12.1)| |
-| `DS_PIP_DEPENDENCY_PATH` | Path to load Python pip dependencies from. ([Introduced](https://gitlab.com/gitlab-org/gitlab/issues/12412) in GitLab 12.2) | |
-| `DS_DEFAULT_ANALYZERS` | Override the names of the official default images. Read more about [customizing analyzers](analyzers.md). | |
-| `DS_DISABLE_DIND` | Disable Docker in Docker and run analyzers [individually](#disabling-docker-in-docker-for-dependency-scanning).| |
-| `DS_PULL_ANALYZER_IMAGES` | Pull the images from the Docker registry (set to `0` to disable). | |
-| `DS_EXCLUDED_PATHS` | Exclude vulnerabilities from output based on the paths. A comma-separated list of patterns. Patterns can be globs, file or folder paths. Parent directories will also match patterns. | `DS_EXCLUDED_PATHS=doc,spec` |
-| `DS_DOCKER_CLIENT_NEGOTIATION_TIMEOUT` | Time limit for Docker client negotiation. Timeouts are parsed using Go's [`ParseDuration`](https://golang.org/pkg/time/#ParseDuration). Valid time units are `ns`, `us` (or `µs`), `ms`, `s`, `m`, `h`. For example, `300ms`, `1.5h`, or `2h45m`. | |
-| `DS_PULL_ANALYZER_IMAGE_TIMEOUT` | Time limit when pulling the image of an analyzer. Timeouts are parsed using Go's [`ParseDuration`](https://golang.org/pkg/time/#ParseDuration). Valid time units are `ns`, `us` (or `µs`), `ms`, `s`, `m`, `h`. For example, `300ms`, `1.5h`, or `2h45m`. | |
-| `DS_RUN_ANALYZER_TIMEOUT` | Time limit when running an analyzer. Timeouts are parsed using Go's [`ParseDuration`](https://golang.org/pkg/time/#ParseDuration). Valid time units are `ns`, `us` (or `µs`), `ms`, `s`, `m`, `h`. For example, `300ms`, `1.5h`, or `2h45m`. | |
-| `PIP_INDEX_URL` | Base URL of Python Package Index (default `https://pypi.org/simple`). | |
-| `PIP_EXTRA_INDEX_URL` | Array of [extra URLs](https://pip.pypa.io/en/stable/reference/pip_install/#cmdoption-extra-index-url) of package indexes to use in addition to `PIP_INDEX_URL`. Comma separated. | |
-| `MAVEN_CLI_OPTS` | List of command line arguments that will be passed to the maven analyzer during the project's build phase (see example for [using private repos](#using-private-maven-repos)). | |
+| Environment variable | Description |
+| --------------------------------------- | ----------- |
+| `DS_ANALYZER_IMAGES` | Comma separated list of custom images. The official default images are still enabled. Read more about [customizing analyzers](analyzers.md). |
+| `DS_ANALYZER_IMAGE_PREFIX` | Override the name of the Docker registry providing the official default images (proxy). Read more about [customizing analyzers](analyzers.md). |
+| `DS_ANALYZER_IMAGE_TAG` | Override the Docker tag of the official default images. Read more about [customizing analyzers](analyzers.md). |
+| `DS_PYTHON_VERSION` | Version of Python. If set to 2, dependencies are installed using Python 2.7 instead of Python 3.6. ([Introduced](https://gitlab.com/gitlab-org/gitlab/issues/12296) in GitLab 12.1)|
+| `DS_PIP_VERSION` | Force the install of a specific pip version (example: `"19.3"`), otherwise the pip installed in the docker image is used. |
+| `DS_PIP_DEPENDENCY_PATH` | Path to load Python pip dependencies from. ([Introduced](https://gitlab.com/gitlab-org/gitlab/issues/12412) in GitLab 12.2) |
+| `DS_DEFAULT_ANALYZERS` | Override the names of the official default images. Read more about [customizing analyzers](analyzers.md). |
+| `DS_DISABLE_DIND` | Disable Docker in Docker and run analyzers [individually](#disabling-docker-in-docker-for-dependency-scanning).|
+| `DS_PULL_ANALYZER_IMAGES` | Pull the images from the Docker registry (set to `0` to disable). |
+| `DS_EXCLUDED_PATHS` | Exclude vulnerabilities from output based on the paths. A comma-separated list of patterns. Patterns can be globs, file or folder paths (e.g., `doc,spec`). Parent directories will also match patterns. |
+| `DS_DOCKER_CLIENT_NEGOTIATION_TIMEOUT` | Time limit for Docker client negotiation. Timeouts are parsed using Go's [`ParseDuration`](https://golang.org/pkg/time/#ParseDuration). Valid time units are `ns`, `us` (or `µs`), `ms`, `s`, `m`, `h`. For example, `300ms`, `1.5h`, or `2h45m`. |
+| `DS_PULL_ANALYZER_IMAGE_TIMEOUT` | Time limit when pulling the image of an analyzer. Timeouts are parsed using Go's [`ParseDuration`](https://golang.org/pkg/time/#ParseDuration). Valid time units are `ns`, `us` (or `µs`), `ms`, `s`, `m`, `h`. For example, `300ms`, `1.5h`, or `2h45m`. |
+| `DS_RUN_ANALYZER_TIMEOUT` | Time limit when running an analyzer. Timeouts are parsed using Go's [`ParseDuration`](https://golang.org/pkg/time/#ParseDuration). Valid time units are `ns`, `us` (or `µs`), `ms`, `s`, `m`, `h`. For example, `300ms`, `1.5h`, or `2h45m`. |
+| `PIP_INDEX_URL` | Base URL of Python Package Index (default `https://pypi.org/simple`). |
+| `PIP_EXTRA_INDEX_URL` | Array of [extra URLs](https://pip.pypa.io/en/stable/reference/pip_install/#cmdoption-extra-index-url) of package indexes to use in addition to `PIP_INDEX_URL`. Comma separated. |
+| `PIP_REQUIREMENTS_FILE` | Pip requirements file to be scanned. |
+| `MAVEN_CLI_OPTS` | List of command line arguments that will be passed to the maven analyzer during the project's build phase (see example for [using private repos](#using-private-maven-repos)). |
+| `BUNDLER_AUDIT_UPDATE_DISABLED` | Disable automatic updates for the `bundler-audit` analyzer (default: `"false"`). Useful if you're running Dependency Scanning in an offline, air-gapped environment.|
### Using private Maven repos
diff --git a/doc/user/application_security/img/security_configuration_page_v12_6.png b/doc/user/application_security/img/security_configuration_page_v12_6.png
new file mode 100644
index 00000000000..d838b648c1f
--- /dev/null
+++ b/doc/user/application_security/img/security_configuration_page_v12_6.png
Binary files differ
diff --git a/doc/user/application_security/sast/analyzers.md b/doc/user/application_security/sast/analyzers.md
index b79edc9d5a8..a42cf7f09ff 100644
--- a/doc/user/application_security/sast/analyzers.md
+++ b/doc/user/application_security/sast/analyzers.md
@@ -18,10 +18,11 @@ SAST supports the following official analyzers:
- [`eslint`](https://gitlab.com/gitlab-org/security-products/analyzers/eslint) (ESLint (JavaScript and React))
- [`flawfinder`](https://gitlab.com/gitlab-org/security-products/analyzers/flawfinder) (Flawfinder)
- [`gosec`](https://gitlab.com/gitlab-org/security-products/analyzers/gosec) (Gosec)
+- [`kubesec`](https://gitlab.com/gitlab-org/security-products/analyzers/kubesec) (Kubesec)
- [`nodejs-scan`](https://gitlab.com/gitlab-org/security-products/analyzers/nodejs-scan) (NodeJsScan)
- [`phpcs-security-audit`](https://gitlab.com/gitlab-org/security-products/analyzers/phpcs-security-audit) (PHP CS security-audit)
- [`pmd-apex`](https://gitlab.com/gitlab-org/security-products/analyzers/pmd-apex) (PMD (Apex only))
-- [`secrets`](https://gitlab.com/gitlab-org/security-products/analyzers/secrets) (Secrets (Gitleaks, TruffleHog & Diffence secret detectors))
+- [`secrets`](https://gitlab.com/gitlab-org/security-products/analyzers/secrets) (Secrets (Gitleaks & TruffleHog secret detectors))
- [`security-code-scan`](https://gitlab.com/gitlab-org/security-products/analyzers/security-code-scan) (Security Code Scan (.NET))
- [`sobelow`](https://gitlab.com/gitlab-org/security-products/analyzers/sobelow) (Sobelow (Elixir Phoenix))
- [`spotbugs`](https://gitlab.com/gitlab-org/security-products/analyzers/spotbugs) (SpotBugs with the Find Sec Bugs plugin (Ant, Gradle and wrapper, Grails, Maven and wrapper, SBT))
@@ -116,24 +117,24 @@ Custom analyzers are not spawned automatically when [Docker In Docker](index.md#
## Analyzers Data
-| Property \ Tool | Apex | Bandit | Brakeman | ESLint security | Find Sec Bugs | Flawfinder | Go AST Scanner | NodeJsScan | Php CS Security Audit | Security code Scan (.NET) | TSLint Security | Sobelow |
-| --------------------------------------- | :------------------: | :------------------: | :------------------: | :------------------: | :------------------: | :------------------: | :------------------: | :------------------: | :---------------------: | :-------------------------: | :-------------: | :----------------: |
-| Severity | ✓ | ✓ | ð„‚ | ð„‚ | ✓ | ð„‚ | ✓ | ð„‚ | ✓ | ð„‚ | ✓ | ð„‚ |
-| Title | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
-| Description | ✓ | ð„‚ | ð„‚ | ✓ | ✓ | ð„‚ | ð„‚ | ✓ | ð„‚ | ð„‚ | ✓ | ✓ |
-| File | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
-| Start line | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
-| End line | ✓ | ✓ | ð„‚ | ✓ | ✓ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ✓ | ð„‚ |
-| Start column | ✓ | ð„‚ | ð„‚ | ✓ | ✓ | ✓ | ✓ | ð„‚ | ✓ | ✓ | ✓ | ð„‚ |
-| End column | ✓ | ð„‚ | ð„‚ | ✓ | ✓ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ✓ | ð„‚ |
-| External id (e.g. CVE) | ð„‚ | ð„‚ | âš  | ð„‚ | âš  | ✓ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ |
-| URLs | ✓ | ð„‚ | ✓ | ð„‚ | âš  | ð„‚ | âš  | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ |
-| Internal doc/explanation | ✓ | âš  | ✓ | ð„‚ | ✓ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ✓ |
-| Solution | ✓ | ð„‚ | ð„‚ | ð„‚ | âš  | ✓ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ |
-| Confidence | ð„‚ | ✓ | ✓ | ð„‚ | ✓ | ✓ | ✓ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ✓ |
-| Affected item (e.g. class or package) | ✓ | ð„‚ | ✓ | ð„‚ | ✓ | ✓ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ |
-| Source code extract | ð„‚ | ✓ | ✓ | ✓ | ð„‚ | ✓ | ✓ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ |
-| Internal ID | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ð„‚ | ✓ | ✓ | ✓ | ✓ |
+| Property \ Tool | Apex | Bandit | Brakeman | ESLint security | Find Sec Bugs | Flawfinder | Go AST Scanner | Kubesec Scanner | NodeJsScan | Php CS Security Audit | Security code Scan (.NET) | Sobelow | TSLint Security |
+| --------------------------------------- | :------------------: | :------------------: | :------------------: | :------------------: | :------------------: | :------------------: | :------------------: | :------------------: | :------------------: | :---------------------: | :-------------------------: | :----------------: | :-------------: |
+| Severity | ✓ | ✓ | ð„‚ | ð„‚ | ✓ | ð„‚ | ✓ | ✓ | ð„‚ | ✓ | ð„‚ | ð„‚ | ✓ |
+| Title | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
+| Description | ✓ | ð„‚ | ð„‚ | ✓ | ✓ | ð„‚ | ð„‚ | ✓ | ✓ | ð„‚ | ð„‚ | ✓ | ✓ |
+| File | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
+| Start line | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ð„‚ | ✓ | ✓ | ✓ | ✓ | ✓ |
+| End line | ✓ | ✓ | ð„‚ | ✓ | ✓ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ✓ |
+| Start column | ✓ | ð„‚ | ð„‚ | ✓ | ✓ | ✓ | ✓ | ð„‚ | ð„‚ | ✓ | ✓ | ð„‚ | ✓ |
+| End column | ✓ | ð„‚ | ð„‚ | ✓ | ✓ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ✓ |
+| External id (e.g. CVE) | ð„‚ | ð„‚ | âš  | ð„‚ | âš  | ✓ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ |
+| URLs | ✓ | ð„‚ | ✓ | ð„‚ | âš  | ð„‚ | âš  | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ |
+| Internal doc/explanation | ✓ | âš  | ✓ | ð„‚ | ✓ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ✓ | ð„‚ |
+| Solution | ✓ | ð„‚ | ð„‚ | ð„‚ | âš  | ✓ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ |
+| Affected item (e.g. class or package) | ✓ | ð„‚ | ✓ | ð„‚ | ✓ | ✓ | ð„‚ | ✓ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ |
+| Confidence | ð„‚ | ✓ | ✓ | ð„‚ | ✓ | ✓ | ✓ | ✓ | ð„‚ | ð„‚ | ð„‚ | ✓ | ð„‚ |
+| Source code extract | ð„‚ | ✓ | ✓ | ✓ | ð„‚ | ✓ | ✓ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ | ð„‚ |
+| Internal ID | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ð„‚ | ð„‚ | ✓ | ✓ | ✓ | ✓ |
- ✓ => we have that data
- âš  => we have that data but it's partially reliable, or we need to extract it from unstructured content
diff --git a/doc/user/application_security/sast/index.md b/doc/user/application_security/sast/index.md
index f427f33c8c2..95027e99c00 100644
--- a/doc/user/application_security/sast/index.md
+++ b/doc/user/application_security/sast/index.md
@@ -73,6 +73,7 @@ The following table shows which languages, package managers and frameworks are s
| Groovy ([Ant](https://ant.apache.org/), [Gradle](https://gradle.org/), [Maven](https://maven.apache.org/) and [SBT](https://www.scala-sbt.org/)) | [SpotBugs](https://spotbugs.github.io/) with the [find-sec-bugs](https://find-sec-bugs.github.io/) plugin | 11.3 (Gradle) & 11.9 (Ant, Maven, SBT) |
| Java ([Ant](https://ant.apache.org/), [Gradle](https://gradle.org/), [Maven](https://maven.apache.org/) and [SBT](https://www.scala-sbt.org/)) | [SpotBugs](https://spotbugs.github.io/) with the [find-sec-bugs](https://find-sec-bugs.github.io/) plugin | 10.6 (Maven), 10.8 (Gradle) & 11.9 (Ant, SBT) |
| JavaScript | [ESLint security plugin](https://github.com/nodesecurity/eslint-plugin-security) | 11.8 |
+| Kubernetes manifests | [Kubesec](https://github.com/controlplaneio/kubesec) | 12.6 |
| Node.js | [NodeJsScan](https://github.com/ajinabraham/NodeJsScan) | 11.1 |
| PHP | [phpcs-security-audit](https://github.com/FloeDesignTechnologies/phpcs-security-audit) | 10.8 |
| Python ([pip](https://pip.pypa.io/en/stable/)) | [bandit](https://github.com/PyCQA/bandit) | 10.3 |
@@ -185,6 +186,22 @@ variables:
This will create individual `<analyzer-name>-sast` jobs for each analyzer that runs in your CI/CD pipeline.
+#### Enabling kubesec analyzer
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/12752) in GitLab Ultimate 12.6.
+
+When [Docker in Docker is disabled](#disabling-docker-in-docker-for-sast),
+you will need to set `SCAN_KUBERNETES_MANIFESTS` to `"true"` to enable the
+kubesec analyzer. In `.gitlab-ci.yml`, define:
+
+```yaml
+include:
+ template: SAST.gitlab-ci.yml
+
+variables:
+ SCAN_KUBERNETES_MANIFESTS: "true"
+```
+
### Available variables
SAST can be [configured](#customizing-the-sast-settings) using environment variables.
@@ -206,14 +223,14 @@ The following are Docker image-related variables.
Some analyzers make it possible to filter out vulnerabilities under a given threshold.
-| Environment variable | Default value | Description | Example usage |
-|----------------------|---------------|-------------|---|
-| `SAST_BANDIT_EXCLUDED_PATHS` | - | comma-separated list of paths to exclude from scan. Uses Python's [`fnmatch` syntax](https://docs.python.org/2/library/fnmatch.html) | |
-| `SAST_BRAKEMAN_LEVEL` | 1 | Ignore Brakeman vulnerabilities under given confidence level. Integer, 1=Low 3=High. | |
-| `SAST_FLAWFINDER_LEVEL` | 1 | Ignore Flawfinder vulnerabilities under given risk level. Integer, 0=No risk, 5=High risk. | |
-| `SAST_GITLEAKS_ENTROPY_LEVEL` | 8.0 | Minimum entropy for secret detection. Float, 0.0 = low, 8.0 = high. | |
-| `SAST_GOSEC_LEVEL` | 0 | Ignore gosec vulnerabilities under given confidence level. Integer, 0=Undefined, 1=Low, 2=Medium, 3=High. | |
-| `SAST_EXCLUDED_PATHS` | - | Exclude vulnerabilities from output based on the paths. This is a comma-separated list of patterns. Patterns can be globs, file or folder paths. Parent directories will also match patterns. | `SAST_EXCLUDED_PATHS=doc,spec` |
+| Environment variable | Default value | Description |
+|----------------------|---------------|-------------|
+| `SAST_BANDIT_EXCLUDED_PATHS` | - | comma-separated list of paths to exclude from scan. Uses Python's [`fnmatch` syntax](https://docs.python.org/2/library/fnmatch.html) |
+| `SAST_BRAKEMAN_LEVEL` | 1 | Ignore Brakeman vulnerabilities under given confidence level. Integer, 1=Low 3=High. |
+| `SAST_FLAWFINDER_LEVEL` | 1 | Ignore Flawfinder vulnerabilities under given risk level. Integer, 0=No risk, 5=High risk. |
+| `SAST_GITLEAKS_ENTROPY_LEVEL` | 8.0 | Minimum entropy for secret detection. Float, 0.0 = low, 8.0 = high. |
+| `SAST_GOSEC_LEVEL` | 0 | Ignore gosec vulnerabilities under given confidence level. Integer, 0=Undefined, 1=Low, 2=Medium, 3=High. |
+| `SAST_EXCLUDED_PATHS` | - | Exclude vulnerabilities from output based on the paths. This is a comma-separated list of patterns. Patterns can be globs, file or folder paths (e.g., `doc,spec` ). Parent directories will also match patterns. |
#### Timeouts
@@ -232,19 +249,20 @@ Timeout variables are not applicable for setups with [disabled Docker In Docker]
Some analyzers can be customized with environment variables.
-| Environment variable | Analyzer | Description |
-|-------------------------|----------|----------|
-| `ANT_HOME` | spotbugs | The `ANT_HOME` environment variable. |
-| `ANT_PATH` | spotbugs | Path to the `ant` executable. |
-| `GRADLE_PATH` | spotbugs | Path to the `gradle` executable. |
-| `JAVA_OPTS` | spotbugs | Additional arguments for the `java` executable. |
-| `JAVA_PATH` | spotbugs | Path to the `java` executable. |
-| `SAST_JAVA_VERSION` | spotbugs | Which Java version to use. Supported versions are `8` and `11`. Defaults to `8`. |
-| `MAVEN_CLI_OPTS` | spotbugs | Additional arguments for the `mvn` or `mvnw` executable. |
-| `MAVEN_PATH` | spotbugs | Path to the `mvn` executable. |
-| `MAVEN_REPO_PATH` | spotbugs | Path to the Maven local repository (shortcut for the `maven.repo.local` property). |
-| `SBT_PATH` | spotbugs | Path to the `sbt` executable. |
-| `FAIL_NEVER` | spotbugs | Set to `1` to ignore compilation failure. |
+| Environment variable | Analyzer | Description |
+|-----------------------------|----------|-------------|
+| `SCAN_KUBERNETES_MANIFESTS` | kubesec | Set to `"true"` to scan Kubernetes manifests when [Docker in Docker](#disabling-docker-in-docker-for-sast) is disabled. |
+| `ANT_HOME` | spotbugs | The `ANT_HOME` environment variable. |
+| `ANT_PATH` | spotbugs | Path to the `ant` executable. |
+| `GRADLE_PATH` | spotbugs | Path to the `gradle` executable. |
+| `JAVA_OPTS` | spotbugs | Additional arguments for the `java` executable. |
+| `JAVA_PATH` | spotbugs | Path to the `java` executable. |
+| `SAST_JAVA_VERSION` | spotbugs | Which Java version to use. Supported versions are `8` and `11`. Defaults to `8`. |
+| `MAVEN_CLI_OPTS` | spotbugs | Additional arguments for the `mvn` or `mvnw` executable. |
+| `MAVEN_PATH` | spotbugs | Path to the `mvn` executable. |
+| `MAVEN_REPO_PATH` | spotbugs | Path to the Maven local repository (shortcut for the `maven.repo.local` property). |
+| `SBT_PATH` | spotbugs | Path to the `sbt` executable. |
+| `FAIL_NEVER` | spotbugs | Set to `1` to ignore compilation failure. |
#### Custom environment variables
@@ -340,7 +358,7 @@ it highlighted:
}
```
-Here is the description of the report file structure nodes and their meaning. All fields are mandatory to be present in
+Here is the description of the report file structure nodes and their meaning. All fields are mandatory in
the report JSON unless stated otherwise. Presence of optional fields depends on the underlying analyzers being used.
| Report JSON node | Function |
diff --git a/doc/user/application_security/security_dashboard/img/group_security_dashboard_v12_4.png b/doc/user/application_security/security_dashboard/img/group_security_dashboard_v12_4.png
deleted file mode 100644
index 682dcbec63f..00000000000
--- a/doc/user/application_security/security_dashboard/img/group_security_dashboard_v12_4.png
+++ /dev/null
Binary files differ
diff --git a/doc/user/application_security/security_dashboard/img/group_security_dashboard_v12_6.png b/doc/user/application_security/security_dashboard/img/group_security_dashboard_v12_6.png
new file mode 100644
index 00000000000..c93a3ce8c35
--- /dev/null
+++ b/doc/user/application_security/security_dashboard/img/group_security_dashboard_v12_6.png
Binary files differ
diff --git a/doc/user/application_security/security_dashboard/img/pipeline_security_dashboard_v12_3.png b/doc/user/application_security/security_dashboard/img/pipeline_security_dashboard_v12_3.png
deleted file mode 100644
index 09979ba99b3..00000000000
--- a/doc/user/application_security/security_dashboard/img/pipeline_security_dashboard_v12_3.png
+++ /dev/null
Binary files differ
diff --git a/doc/user/application_security/security_dashboard/img/pipeline_security_dashboard_v12_6.png b/doc/user/application_security/security_dashboard/img/pipeline_security_dashboard_v12_6.png
new file mode 100644
index 00000000000..670c90d10a3
--- /dev/null
+++ b/doc/user/application_security/security_dashboard/img/pipeline_security_dashboard_v12_6.png
Binary files differ
diff --git a/doc/user/application_security/security_dashboard/index.md b/doc/user/application_security/security_dashboard/index.md
index 7eb0d649648..bb2bf0b7806 100644
--- a/doc/user/application_security/security_dashboard/index.md
+++ b/doc/user/application_security/security_dashboard/index.md
@@ -42,7 +42,7 @@ At the pipeline level, the Security Dashboard displays the vulnerabilities prese
Visit the page for any pipeline which has run any of the [supported reports](#supported-reports). Click the **Security** tab to view the Security Dashboard.
-![Pipeline Security Dashboard](img/pipeline_security_dashboard_v12_3.png)
+![Pipeline Security Dashboard](img/pipeline_security_dashboard_v12_6.png)
## Project Security Dashboard
@@ -71,12 +71,12 @@ Once you're on the dashboard, at the top you should see a series of filters for:
- Report type
- Project
-To the right of the filters, you should see a **Hide dismissed** toggle button ([available for GitLab.com Gold, planned for GitLab Ultimate 12.6](https://gitlab.com/gitlab-org/gitlab/issues/9102)).
+To the right of the filters, you should see a **Hide dismissed** toggle button.
NOTE: **Note:**
The dashboard only shows projects with [security reports](#supported-reports) enabled in a group.
-![dashboard with action buttons and metrics](img/group_security_dashboard_v12_4.png)
+![dashboard with action buttons and metrics](img/group_security_dashboard_v12_6.png)
Selecting one or more filters will filter the results in this page. Disabling the **Hide dismissed**
toggle button will let you also see vulnerabilities that have been dismissed.
@@ -97,6 +97,17 @@ vulnerabilities your projects had at various points in time. You can filter amon
90 days, with the default being 90. Hover over the chart to get more details about
the open vulnerabilities at a specific time.
+Below the timeline chart is a list of projects, grouped and sorted by the severity of the vulnerability found:
+
+- F: 1 or more "critical"
+- D: 1 or more "high" or "unknown"
+- C: 1 or more "medium"
+- B: 1 or more "low"
+- A: 0 vulnerabilities
+
+Projects with no vulnerability tests configured will not appear in the list. Additionally, dismissed
+vulnerabilities are not included either.
+
Read more on how to [interact with the vulnerabilities](../index.md#interacting-with-the-vulnerabilities).
## Keeping the dashboards up to date
diff --git a/doc/user/clusters/applications.md b/doc/user/clusters/applications.md
index 7ee1650f698..95dbe7d3b51 100644
--- a/doc/user/clusters/applications.md
+++ b/doc/user/clusters/applications.md
@@ -267,13 +267,19 @@ This feature:
kubectl -n gitlab-managed-apps exec -it $(kubectl get pods -n gitlab-managed-apps | grep 'ingress-controller' | awk '{print $1}') -- tail -f /var/log/modsec/audit.log
```
-There is a small performance overhead by enabling `modsecurity`. However, if this is
-considered significant for your application, you can toggle the feature flag back to
-false by running the following command within the Rails console:
-
-```ruby
-Feature.disable(:ingress_modsecurity)
-```
+There is a small performance overhead by enabling `modsecurity`. If this is
+considered significant for your application, you can either:
+
+- Disable ModSecurity's rule engine for your deployed application by setting
+ [the deployment variable](../../topics/autodevops/index.md)
+ `AUTO_DEVOPS_MODSECURITY_SEC_RULE_ENGINE` to `Off`. This will prevent ModSecurity from
+ processing any requests for the given application or environment.
+- Toggle the feature flag to false by running the following command within your
+ instance's Rails console:
+
+ ```ruby
+ Feature.disable(:ingress_modsecurity)
+ ```
Once disabled, you must [uninstall](#uninstalling-applications) and reinstall your Ingress
application for the changes to take effect.
@@ -429,6 +435,131 @@ administrator to run following command within a Rails console:
Feature.enable(:enable_cluster_application_crossplane)
```
+## Install using GitLab CI (alpha)
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/merge_requests/20822) in GitLab 12.6.
+
+CAUTION: **Warning:**
+This is an _alpha_ feature, and it is subject to change at any time without
+prior notice.
+
+This alternative method allows users to install GitLab-managed
+applications using GitLab CI. It also allows customization of the
+install using Helm `values.yaml` files.
+
+Supported applications:
+
+- [Ingress](#install-ingress-using-gitlab-ci)
+- [Sentry](#install-sentry-using-gitlab-ci)
+
+### Usage
+
+To install applications using GitLab CI:
+
+1. Connect the cluster to a [cluster management project](management_project.md).
+1. In that project, add a `.gitlab-ci.yml` file with the following content:
+
+ ```yaml
+ include:
+ - template: Managed-Cluster-Applications.gitlab-ci.yml
+ ```
+
+1. Add a `.gitlab/managed-apps/config.yaml` file to define which
+ applications you would like to install. Define the `installed` key as
+ `true` to install the application and `false` to uninstall the
+ application. For example, to install Ingress:
+
+ ```yaml
+ ingress:
+ installed: true
+ ```
+
+1. Optionally, define `.gitlab/managed-apps/<application>/values.yaml` file to
+ customize values for the installed application.
+
+A GitLab CI pipeline will then run on the `master` branch to install the
+applications you have configured.
+
+### Install Ingress using GitLab CI
+
+To install Ingress, define the `.gitlab/managed-apps/config.yaml` file
+with:
+
+```yaml
+ingress:
+ installed: true
+```
+
+Ingress will then be installed into the `gitlab-managed-apps` namespace
+of your cluster.
+
+You can customize the installation of Ingress by defining
+`.gitlab/managed-apps/ingress/values.yaml` file in your cluster
+management project. Refer to the
+[chart](https://github.com/helm/charts/tree/master/stable/nginx-ingress)
+for the available configuration options.
+
+### Install Sentry using GitLab CI
+
+NOTE: **Note:**
+The Sentry Helm chart [recommends](https://github.com/helm/charts/blob/f6e5784f265dd459c5a77430185d0302ed372665/stable/sentry/values.yaml#L284-L285) at least 3GB of available RAM for database migrations.
+
+To install Sentry, define the `.gitlab/managed-apps/config.yaml` file
+with:
+
+```yaml
+sentry:
+ installed: true
+```
+
+Sentry will then be installed into the `gitlab-managed-apps` namespace
+of your cluster.
+
+You can customize the installation of Sentry by defining
+`.gitlab/managed-apps/sentry/values.yaml` file in your cluster
+management project. Refer to the
+[chart](https://github.com/helm/charts/tree/master/stable/sentry)
+for the available configuration options.
+
+We recommend you pay close attention to the following configuration options:
+
+- `email`. Needed to invite users to your Sentry instance and to send error emails.
+- `user`. Where you can set the login credentials for the default admin user.
+- `postgresql`. For a PostgreSQL password that can be used when running future updates.
+
+NOTE: **Note:**
+When upgrading it is important to provide the existing PostgreSQL password (given using the `postgresql.postgresqlPassword` key) or you will receive authentication errors. See the [PostgreSQL chart documentation](https://github.com/helm/charts/tree/master/stable/postgresql#upgrade) for more information.
+
+Here is an example configuration for Sentry:
+
+```yaml
+# Admin user to create
+user:
+ # Indicated to create the admin user or not,
+ # Default is true as the initial installation.
+ create: true
+ email: "<your email>"
+ password: "<your password>"
+
+email:
+ from_address: "<your from email>"
+ host: smtp
+ port: 25
+ use_tls: false
+ user: "<your email username>"
+ password: "<your email password>"
+ enable_replies: false
+
+ingress:
+ enabled: true
+ hostname: "<sentry.example.com>"
+
+# Needs to be here between runs.
+# See https://github.com/helm/charts/tree/master/stable/postgresql#upgrade for more info
+postgresql:
+ postgresqlPassword: example-postgresql-password
+```
+
## Upgrading applications
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/24789) in GitLab 11.8.
@@ -470,6 +601,7 @@ The applications below can be uninstalled.
| Knative | 12.1+ | The associated IP will be deleted and cannot be restored. |
| Prometheus | 11.11+ | All data will be deleted and cannot be restored. |
| Crossplane | 12.5+ | All data will be deleted and cannot be restored. |
+| Sentry | 12.6+ | The PostgreSQL persistent volume will remain and should be manually removed for complete uninstall. |
To uninstall an application:
diff --git a/doc/user/clusters/crossplane.md b/doc/user/clusters/crossplane.md
index 37210b22f6f..ee0bd4c33db 100644
--- a/doc/user/clusters/crossplane.md
+++ b/doc/user/clusters/crossplane.md
@@ -220,9 +220,9 @@ The Resource Classes allow you to define classes of service for a managed servic
The Auto DevOps pipeline can be run with the following options:
-The Environment variables, `AUTO_DEVOPS_POSTGRES_MANAGED` and `AUTO_DEVOPS_POSTGRES_MANAGED_CLASS_SELECTOR` need to be set to provision PostgresQL using Crossplane
+The Environment variables, `AUTO_DEVOPS_POSTGRES_MANAGED` and `AUTO_DEVOPS_POSTGRES_MANAGED_CLASS_SELECTOR` need to be set to provision PostgreSQL using Crossplane
-Alertnatively, the following options can be overridden from the values for the helm chart.
+Alertnatively, the following options can be overridden from the values for the Helm chart.
- `postgres.managed` set to true which will select a default resource class.
The resource class needs to be marked with the annotation
@@ -237,7 +237,7 @@ Alertnatively, the following options can be overridden from the values for the h
The Auto DevOps pipeline should provision a PostgresqlInstance when it runs succesfully.
-Verify creation of the PostgresQL Instance.
+Verify creation of the PostgreSQL Instance.
```sh
kubectl get postgresqlinstance
@@ -286,7 +286,7 @@ serverCACertificateInstance: 41 bytes
serverCACertificateSha1Fingerprint: 40 bytes
```
-## Connect to the PostgresQL instance
+## Connect to the PostgreSQL instance
Follow this [GCP guide](https://cloud.google.com/sql/docs/postgres/connect-kubernetes-engine) if you
would like to connect to the newly provisioned Postgres database instance on CloudSQL.
diff --git a/doc/user/clusters/management_project.md b/doc/user/clusters/management_project.md
index 83b6f6fe300..57a1f46ac6e 100644
--- a/doc/user/clusters/management_project.md
+++ b/doc/user/clusters/management_project.md
@@ -55,7 +55,7 @@ To select a cluster management project to use:
### Configuring your pipeline
After designating a project as the management project for the cluster,
-write a [`.gitlab-ci,yml`](../../ci/yaml/README.md) in that project. For example:
+write a [`.gitlab-ci.yml`](../../ci/yaml/README.md) in that project. For example:
```yaml
configure cluster:
diff --git a/doc/user/discussions/index.md b/doc/user/discussions/index.md
index dcb75a19b2a..d4e485d7c32 100644
--- a/doc/user/discussions/index.md
+++ b/doc/user/discussions/index.md
@@ -386,7 +386,7 @@ from any device you're logged into.
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/issues/18008) in GitLab 11.6.
As a reviewer, you're able to suggest code changes with a simple
-markdown syntax in Merge Request Diff threads. Then, the
+Markdown syntax in Merge Request Diff threads. Then, the
Merge Request author (or other users with appropriate
[permission](../permissions.md)) is able to apply these
suggestions with a click, which will generate a commit in
diff --git a/doc/user/gitlab_com/index.md b/doc/user/gitlab_com/index.md
index 5912fc8e9f9..f174b75abb6 100644
--- a/doc/user/gitlab_com/index.md
+++ b/doc/user/gitlab_com/index.md
@@ -14,6 +14,17 @@ Below are the fingerprints for GitLab.com's SSH host keys.
| ED25519 | `2e:65:6a:c8:cf:bf:b2:8b:9a:bd:6d:9f:11:5c:12:16` | `eUXGGm1YGsMAS7vkcx6JOJdOGHPem5gQp4taiCfCLB8` |
| RSA | `b6:03:0e:39:97:9e:d0:e7:24:ce:a3:77:3e:01:42:09` | `ROQFvPThGrW4RuWLoL9tq9I9zJ42fK4XywyRtbOz/EQ` |
+## SSH `known_hosts` entries
+
+Add the following to `.ssh/known_hosts` to skip manual fingerprint
+confirmation in SSH:
+
+```
+gitlab.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAfuCHKVTjquxvt6CM6tdG4SLp1Btn/nOeHHE5UOzRdf
+gitlab.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCsj2bNKTBSpIYDEGk9KxsGh3mySTRgMtXL583qmBpzeQ+jqCMRgBqB98u3z++J1sKlXHWfM9dyhSevkMwSbhoR8XIq/U0tCNyokEi/ueaBMCvbcTHhO7FcwzY92WK4Yt0aGROY5qX2UKSeOvuP4D6TPqKF1onrSzH9bx9XUf2lEdWT/ia1NEKjunUqu1xOB/StKDHMoX4/OKyIzuS0q/T1zOATthvasJFoPrAjkohTyaDUz2LN5JoH839hViyEG82yB+MjcFV5MU3N1l1QL3cVUCh93xSaua1N85qivl+siMkPGbO5xR/En4iEY6K2XPASUEMaieWVNTRCtJ4S8H+9
+gitlab.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFSMqzJeV9rUzU4kWitGjeR4PWSa29SPqJ1fVkhtj3Hw9xjLVXVYrU9QlYWrOLXBpQ6KWjbjTDTdDkoohFzgbEY=
+```
+
## Mail configuration
GitLab.com sends emails from the `mg.gitlab.com` domain via [Mailgun] and has
@@ -63,6 +74,7 @@ Below are the current settings regarding [GitLab CI/CD](../../ci/README.md).
| ----------- | ----------------- | ------------- |
| Artifacts maximum size (uncompressed) | 1G | 100M |
| Artifacts [expiry time](../../ci/yaml/README.md#artifactsexpire_in) | kept forever | deleted after 30 days unless otherwise specified |
+| Scheduled Pipeline Cron | `*/5 * * * *` | `*/19 * * * *` |
## Repository size limit
@@ -79,7 +91,7 @@ GitLab.com, CI/CD, and related services are deployed into Google Cloud Platform
IP based firewall can be configured by looking up all
[IP address ranges or CIDR blocks for GCP](https://cloud.google.com/compute/docs/faq#where_can_i_find_product_name_short_ip_ranges).
-[Static endpoints](https://gitlab.com/gitlab-com/gl-infra/infrastructure/issues/5071) are being considered.
+[Static endpoints](https://gitlab.com/groups/gitlab-com/gl-infra/-/epics/97) are being considered.
## Shared Runners
@@ -95,6 +107,8 @@ installed. Instances provide 1 vCPU and 25GB of HDD disk space. The default
region of the VMs is US East1.
Each instance is used only for one job, this ensures any sensitive data left on the system can't be accessed by other people their CI jobs.
+The `gitlab-shared-runners-manager-X.gitlab.com` fleet of Runners are dedicated for GitLab projects as well as community forks of them. They use a slightly larger machine type (n1-standard-2) and have a bigger SSD disk size. They will not run untagged jobs and unlike the general fleet of shared Runners, the instances are re-used up to 40 times.
+
Jobs handled by the shared Runners on GitLab.com (`shared-runners-manager-X.gitlab.com`),
**will be timed out after 3 hours**, regardless of the timeout configured in a
project. Check the issues [4010] and [4070] for the reference.
@@ -341,19 +355,44 @@ GitLab.com:
set to the default.
- Does not have the user and IP rate limits settings enabled.
+### Visibility settings
+
+On GitLab.com, projects, groups, and snippets created
+As of GitLab 12.2 (July 2019), projects, groups, and snippets have the
+[**Internal** visibility](../../public_access/public_access.md#internal-projects) setting [disabled on GitLab.com](https://gitlab.com/gitlab-org/gitlab/issues/12388).
+
+## GitLab.com Logging
+
+We use [Fluentd](https://gitlab.com/gitlab-com/runbooks/tree/master/logging/doc#fluentd) to parse our logs. Fluentd sends our logs to
+[Stackdriver Logging](https://gitlab.com/gitlab-com/runbooks/tree/master/logging/doc#stackdriver) and [Cloud Pub/Sub](https://gitlab.com/gitlab-com/runbooks/tree/master/logging/doc#cloud-pubsub).
+Stackdriver is used for storing logs long-term in Google Cold Storage (GCS). Cloud Pub/Sub
+is used to forward logs to an [Elastic cluster](https://gitlab.com/gitlab-com/runbooks/tree/master/logging/doc#elastic) using [pubsubbeat](https://gitlab.com/gitlab-com/runbooks/tree/master/logging/doc#pubsubbeat-vms).
+
+You can view more information in our runbooks such as:
+
+- A [detailed list of what we're logging](https://gitlab.com/gitlab-com/runbooks/tree/master/logging/doc#what-are-we-logging)
+- Our [current log retention policies](https://gitlab.com/gitlab-com/runbooks/tree/master/logging/doc#retention)
+- A [diagram of our logging infrastructure](https://gitlab.com/gitlab-com/runbooks/tree/master/logging/doc#logging-infrastructure-overview)
+
## GitLab.com at scale
In addition to the GitLab Enterprise Edition Omnibus install, GitLab.com uses
the following applications and settings to achieve scale. All settings are
publicly available at [chef cookbooks](https://gitlab.com/gitlab-cookbooks).
-### ELK
+### Elastic Cluster
-We use Elasticsearch, logstash, and Kibana for part of our monitoring solution:
+We use Elasticsearch and Kibana for part of our monitoring solution:
- [`gitlab-cookbooks` / `gitlab-elk` · GitLab](https://gitlab.com/gitlab-cookbooks/gitlab-elk)
- [`gitlab-cookbooks` / `gitlab_elasticsearch` · GitLab](https://gitlab.com/gitlab-cookbooks/gitlab_elasticsearch)
+### Fluentd
+
+We use Fluentd to unify our GitLab logs:
+
+- [`gitlab-cookbooks` / `gitlab_fluentd` · GitLab](https://gitlab.com/gitlab-cookbooks/gitlab_fluentd)
+
### Prometheus
Prometheus complete our monitoring stack:
@@ -393,11 +432,3 @@ High Performance TCP/HTTP Load Balancer:
[unicorn-worker-killer]: https://rubygems.org/gems/unicorn-worker-killer "unicorn-worker-killer"
[4010]: https://gitlab.com/gitlab-com/infrastructure/issues/4010 "Find a good value for maximum timeout for Shared Runners"
[4070]: https://gitlab.com/gitlab-com/infrastructure/issues/4070 "Configure per-runner timeout for shared-runners-manager-X on GitLab.com"
-
-## Group and project settings
-
-On GitLab.com, projects, groups, and snippets created
-after July 2019 have the `Internal` visibility setting disabled.
-
-You can read more about the change in the
-[relevant issue](https://gitlab.com/gitlab-org/gitlab/issues/12388).
diff --git a/doc/user/group/clusters/index.md b/doc/user/group/clusters/index.md
index 1fe456902a2..2b36c3bdf5b 100644
--- a/doc/user/group/clusters/index.md
+++ b/doc/user/group/clusters/index.md
@@ -75,6 +75,21 @@ NOTE: **Note:**
If you [install applications](#installing-applications) on your cluster, GitLab will create
the resources required to run these even if you have chosen to manage your own cluster.
+### Clearing the cluster cache
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/31759) in GitLab 12.6.
+
+If you choose to allow GitLab to manage your cluster for you, GitLab stores a cached
+version of the namespaces and service accounts it creates for your projects. If you
+modify these resources in your cluster manually, this cache can fall out of sync with
+your cluster, which can cause deployment jobs to fail.
+
+To clear the cache:
+
+1. Navigate to your group’s **Kubernetes** page, and select your cluster.
+1. Expand the **Advanced settings** section.
+1. Click **Clear cluster cache**.
+
## Base domain
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/24580) in GitLab 11.8.
diff --git a/doc/user/group/index.md b/doc/user/group/index.md
index 5f45a462f94..ad16aaa34ff 100644
--- a/doc/user/group/index.md
+++ b/doc/user/group/index.md
@@ -431,6 +431,23 @@ To enable this feature:
1. Expand the **Permissions, LFS, 2FA** section, and select **Disable email notifications**.
1. Click **Save changes**.
+#### Disabling group mentions
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/21301) in GitLab 12.6.
+
+You can prevent users from being added to a conversation and getting notified when
+anyone mentions a group in which those users are members.
+
+Groups with disabled mentions are visualized accordingly in the autocompletion dropdown.
+
+This is particularly helpful for groups with a large number of users.
+
+To enable this feature:
+
+1. Navigate to the group's **Settings > General** page.
+1. Expand the **Permissions, LFS, 2FA** section, and select **Disable group mentions**.
+1. Click **Save changes**.
+
### Advanced settings
- **Projects**: View all projects within that group, add members to each project,
diff --git a/doc/user/group/saml_sso/index.md b/doc/user/group/saml_sso/index.md
index 6fd56414796..5fe2d0da5c8 100644
--- a/doc/user/group/saml_sso/index.md
+++ b/doc/user/group/saml_sso/index.md
@@ -2,19 +2,23 @@
type: reference, howto
---
-# SAML SSO for GitLab.com Groups **(SILVER ONLY)**
+# SAML SSO for GitLab.com groups **(SILVER ONLY)**
> Introduced in [GitLab.com Silver](https://about.gitlab.com/pricing/) 11.0.
-NOTE: **Note:**
-This topic is for SAML on GitLab.com Silver tier and above. For SAML on self-managed GitLab instances, see [SAML OmniAuth Provider](../../../integration/saml.md).
-
SAML on GitLab.com allows users to be automatically added to a group, and then allows those users to sign into GitLab.com. Users should already have an account on the GitLab instance, or can create one when logging in for the first time.
User synchronization for GitLab.com is partially supported using [SCIM](scim_setup.md).
-NOTE: **Note:**
-SAML SSO for GitLab.com groups does not sync users between providers without using SCIM. If a group is not using SCIM, group Owners will still need to manage user accounts (for example, removing users when necessary).
+## Important notes
+
+Note the following:
+
+- This topic is for SAML on GitLab.com Silver tier and above. For SAML on self-managed GitLab
+ instances, see [SAML OmniAuth Provider](../../../integration/saml.md).
+- SAML SSO for GitLab.com groups requires SCIM to sync users between providers. If a
+ group is not using SCIM, group Owners will still need to manage user accounts (for example,
+ removing users when necessary).
## Configuring your Identity Provider
@@ -68,16 +72,17 @@ When this option is enabled:
- All existing and new users in the group will be required to log in via the SSO URL associated with the group.
- On successfully authenticating, GitLab will prompt the user to create a new, dedicated account using the email address received from the configured identity provider.
-- After the group managed account has been created, group activity will require the use of this user account.
+- After the group-managed account has been created, group activity will require the use of this user account.
-Since use of the group managed account requires the use of SSO, users of group managed accounts will lose access to these accounts when they are no longer able to authenticate with the connected identity provider. In the case of an offboarded employee who has been removed from your identity provider:
+Since use of the group-managed account requires the use of SSO, users of group-managed accounts will lose access to these accounts when they are no longer able to authenticate with the connected identity provider. In the case of an offboarded employee who has been removed from your identity provider:
- The user will be unable to access the group (their credentials will no longer work on the identity provider when prompted to SSO).
- Contributions in the group (e.g. issues, merge requests) will remain intact.
#### Assertions
-When using Group Manged Accounts, the following user details need to be passed to GitLab as SAML Assertions in order for us to be able to create a user:
+When using group-managed accounts, the following user details need to be passed to GitLab as SAML
+assertions to be able to create a user.
| Field | Supported keys |
|-----------------|----------------|
@@ -91,7 +96,7 @@ When using Group Manged Accounts, the following user details need to be passed t
GitLab provides metadata XML that can be used to configure your Identity Provider.
1. Navigate to the group and click **Settings > SAML SSO**.
-1. Copy the provided **GitLab metadata URL**
+1. Copy the provided **GitLab metadata URL**.
1. Follow your Identity Provider's documentation and paste the metadata URL when it is requested.
## Configuring GitLab
@@ -123,6 +128,25 @@ NOTE: **Note:** GitLab is unable to provide support for IdPs that are not listed
When [configuring your identify provider](#configuring-your-identity-provider), please consider the notes below for specific providers to help avoid common issues and as a guide for terminology used.
+### Azure setup notes
+
+<i class="fa fa-youtube-play youtube" aria-hidden="true"></i>
+For a demo of the Azure SAML setup including SCIM, see [SCIM Provisioning on Azure Using SAML SSO for Groups Demo](https://youtu.be/24-ZxmTeEBU).
+
+| GitLab Setting | Azure Field |
+|--------------|----------------|
+| Identifier | Identifier (Entity ID) |
+| Assertion consumer service URL | Reply URL (Assertion Consumer Service URL) |
+| Identity provider single sign on URL | Login URL |
+| Certificate fingerprint | Thumbprint |
+
+We recommend:
+
+- **Unique User Identifier (Name identifier)** set to `user.objectID`.
+- **nameid-format** set to persistent.
+
+Set other user attributes and claims according to the [assertions table](#assertions).
+
### Okta setup notes
| GitLab Setting | Okta Field |
@@ -193,6 +217,8 @@ For example, to unlink the `MyOrg` account, the following **Disconnect** button
## Troubleshooting
+This section contains possible solutions for problems you might encounter.
+
### SAML debugging tools
SAML responses are base64 encoded, so we recommend the following browser plugins to decode them on the fly:
diff --git a/doc/user/group/saml_sso/scim_setup.md b/doc/user/group/saml_sso/scim_setup.md
index 392b27bb42f..a117364a355 100644
--- a/doc/user/group/saml_sso/scim_setup.md
+++ b/doc/user/group/saml_sso/scim_setup.md
@@ -2,7 +2,7 @@
type: howto, reference
---
-# SCIM provisioning using SAML SSO for Groups **(SILVER ONLY)**
+# SCIM provisioning using SAML SSO for GitLab.com groups **(SILVER ONLY)**
> [Introduced](https://gitlab.com/gitlab-org/gitlab/merge_requests/9388) in [GitLab.com Silver](https://about.gitlab.com/pricing/) 11.10.
@@ -24,7 +24,7 @@ The following identity providers are supported:
## Requirements
-- [Group SSO](index.md) needs to be configured.
+- [Group SSO](index.md) must be configured.
## GitLab configuration
@@ -64,15 +64,25 @@ You can then test the connection by clicking on **Test Connection**. If the conn
1. Click on `Synchronize Azure Active Directory Users to AppName`, to configure the attribute mapping.
1. Click **Delete** next to the `mail` mapping.
-1. Map `userPrincipalName` to `emails[type eq "work"].value` and change it's **Matching precedence** to `2`.
+1. Map `userPrincipalName` to `emails[type eq "work"].value` and change its **Matching precedence** to `2`.
1. Map `mailNickname` to `userName`.
1. Determine how GitLab will uniquely identify users.
- Use `objectId` unless users already have SAML linked for your group.
- If you already have users with SAML linked then use the `Name ID` value from the [SAML configuration](#azure). Using a different value will likely cause duplicate users and prevent users from accessing the GitLab group.
-1. Create a new mapping by clicking **Add New Mapping** then set **Source attribute** to the unique identifier determined above, **Target attribute** to `id`, **Match objects using this attribute** to `Yes`, and **Matching precedence** to `1`.
-1. Create a new mapping by clicking **Add New Mapping** then set **Source attribute** to the unique identifier determined above, and **Target attribute** to `externalId`.
+1. Create a new mapping:
+ 1. Click **Add New Mapping**.
+ 1. Set:
+ - **Source attribute** to the unique identifier determined above.
+ - **Target attribute** to `id`.
+ - **Match objects using this attribute** to `Yes`.
+ - **Matching precedence** to `1`.
+1. Create another new mapping:
+ 1. Click **Add New Mapping**.
+ 1. Set:
+ - **Source attribute** to the unique identifier determined above.
+ - **Target attribute** to `externalId`.
1. Click the `userPrincipalName` mapping and change **Match objects using this attribute** to `No`.
Save your changes and you should have the following configuration:
@@ -109,6 +119,8 @@ Once synchronized, changing the field mapped to `id` and `externalId` will likel
## Troubleshooting
+This section contains possible solutions for problems you might encounter.
+
### Testing Azure connection: invalid credentials
When testing the connection, you may encounter an error: **You appear to have entered invalid credentials. Please confirm you are using the correct information for an administrative account**. If `Tenant URL` and `secret token` are correct, check whether your group path contains characters that may be considered invalid JSON primitives (such as `.`). Removing such characters from the group path typically resolves the error.
diff --git a/doc/user/group/subgroups/img/group_members_filter_v12_6.png b/doc/user/group/subgroups/img/group_members_filter_v12_6.png
new file mode 100644
index 00000000000..0207515ded0
--- /dev/null
+++ b/doc/user/group/subgroups/img/group_members_filter_v12_6.png
Binary files differ
diff --git a/doc/user/group/subgroups/index.md b/doc/user/group/subgroups/index.md
index 52b7035389a..997cb1ba6c5 100644
--- a/doc/user/group/subgroups/index.md
+++ b/doc/user/group/subgroups/index.md
@@ -4,7 +4,7 @@ type: reference, howto, concepts
# Subgroups
->[Introduced](https://gitlab.com/gitlab-org/gitlab-foss/issues/2772) in GitLab 9.0.
+> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/issues/2772) in GitLab 9.0.
Subgroups, also known as nested groups or hierarchical groups, allow you to have up to 20
levels of groups.
@@ -142,6 +142,16 @@ From the image above, we can deduce the following things:
- Administrator is the Owner and member of **all** subgroups and for that reason,
as with User3, there is no indication of an ancestor group.
+[From](https://gitlab.com/gitlab-org/gitlab/issues/21727) GitLab 12.6, you can filter
+this list using dropdown on the right side:
+
+![Group members filter](img/group_members_filter_v12_6.png)
+
+- **Show only direct members** displays only Administrator and User3, since these are
+ the only users that belong to group `four`, which is the one we're inspecting.
+- **Show only inherited members** displays User0, User1 and User2, no matter which group
+ above the hierarchy is the source of inherited permissions.
+
### Overriding the ancestor group membership
NOTE: **Note:**
@@ -186,7 +196,7 @@ Here's a list of what you can't do with subgroups:
[ce-2772]: https://gitlab.com/gitlab-org/gitlab-foss/issues/2772
[permissions]: ../../permissions.md#group-members-permissions
-[reserved]: ../../reserved_names.md
+[reserved]: ../../reserved_names.md
[issue]: https://gitlab.com/gitlab-org/gitlab-foss/issues/30472#note_27747600
<!-- ## Troubleshooting
diff --git a/doc/user/incident_management/index.md b/doc/user/incident_management/index.md
index 5ac27d227a1..febe1a2423a 100644
--- a/doc/user/incident_management/index.md
+++ b/doc/user/incident_management/index.md
@@ -91,7 +91,7 @@ Please refer to a list of [available slash commands](../../integration/slash_com
## Zoom in issues
-In order to communicate synchronously for incidents management, GitLab allows to
+In order to communicate synchronously for incidents management, GitLab allows you to
associate a Zoom meeting with an issue. Once you start a Zoom call for a fire-fight,
you need a way to associate the conference call with an issue, so that your team
members can join swiftly without requesting a link.
diff --git a/doc/user/infrastructure/index.md b/doc/user/infrastructure/index.md
new file mode 100644
index 00000000000..a50cdf1cf0e
--- /dev/null
+++ b/doc/user/infrastructure/index.md
@@ -0,0 +1,6 @@
+# Infrastructure as Code
+
+GitLab can be used to manage infrastructure as code. The following are some examples:
+
+- [A generic tutorial for Terraform with GitLab](https://medium.com/@timhberry/terraform-pipelines-in-gitlab-415b9d842596).
+- [Terraform at GitLab](https://about.gitlab.com/blog/2019/11/12/gitops-part-2/).
diff --git a/doc/user/instance_statistics/convdev.md b/doc/user/instance_statistics/dev_ops_score.md
index 705f9be3d94..fbe4cc3c6df 100644
--- a/doc/user/instance_statistics/convdev.md
+++ b/doc/user/instance_statistics/dev_ops_score.md
@@ -1,12 +1,12 @@
-# Conversational Development Index
+# DevOps Score
-> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/issues/30469) in GitLab 9.3.
+> [Renamed from Conversational Development Index](https://gitlab.com/gitlab-org/gitlab/issues/20976) in GitLab 12.6.
NOTE: **Note:**
Your GitLab instance's [usage ping](../admin_area/settings/usage_statistics.md#usage-ping-core-only) must be activated in order to use this feature.
-The [Conversational Development](http://conversationaldevelopment.com/2017/04/16/what-is-conversational-development/) Index (ConvDev Index) gives you an overview of your entire
-instance's adoption of [Concurrent DevOps](https://about.gitlab.com/concurrent-devops/)
+The DevOps Score gives you an overview of your entire instance's adoption of
+[Concurrent DevOps](https://about.gitlab.com/concurrent-devops/)
from planning to monitoring.
This displays the usage of these GitLab features over
@@ -16,7 +16,7 @@ of top-performing instances based on [usage ping data](../admin_area/settings/us
collected. Your score is compared to the lead score of each feature and then expressed as a percentage at the bottom of said feature.
Your overall index score is an average of all your feature score percentages - this percentage value is presented above all the of features on the page.
-![ConvDev index](img/convdev_index.png)
+![DevOps Score](img/dev_ops_score.png)
The page also provides helpful links to articles and GitLab docs, to help you
improve your scores.
diff --git a/doc/user/instance_statistics/img/cohorts.png b/doc/user/instance_statistics/img/cohorts.png
index 12e839e7cd2..4d070fdb654 100644
--- a/doc/user/instance_statistics/img/cohorts.png
+++ b/doc/user/instance_statistics/img/cohorts.png
Binary files differ
diff --git a/doc/user/instance_statistics/img/convdev_index.png b/doc/user/instance_statistics/img/dev_ops_score.png
index bee1317438d..bee1317438d 100644
--- a/doc/user/instance_statistics/img/convdev_index.png
+++ b/doc/user/instance_statistics/img/dev_ops_score.png
Binary files differ
diff --git a/doc/user/instance_statistics/index.md b/doc/user/instance_statistics/index.md
index fe8e8c96f81..53bf85b6e13 100644
--- a/doc/user/instance_statistics/index.md
+++ b/doc/user/instance_statistics/index.md
@@ -12,5 +12,5 @@ and can be accessed via the top bar.
There are two kinds of statistics:
-- [Conversational Development (ConvDev) Index](convdev.md): Provides an overview of your entire instance's feature usage.
+- [Dev Ops Score](dev_ops_score.md): Provides an overview of your entire instance's feature usage.
- [User Cohorts](user_cohorts.md): Display the monthly cohorts of new users and their activities over time.
diff --git a/doc/user/markdown.md b/doc/user/markdown.md
index 3bd0dcafc19..fdf6cb3c7be 100644
--- a/doc/user/markdown.md
+++ b/doc/user/markdown.md
@@ -1,9 +1,9 @@
# GitLab Markdown
-This markdown guide is **valid only for GitLab's internal markdown rendering system for entries and files**.
+This Markdown guide is **valid only for GitLab's internal Markdown rendering system for entries and files**.
It is **not** valid for the [GitLab documentation website](https://docs.gitlab.com)
or [GitLab's main website](https://about.gitlab.com), as they both use
-[Kramdown](https://kramdown.gettalong.org) as their markdown engine. The documentation
+[Kramdown](https://kramdown.gettalong.org) as their Markdown engine. The documentation
website uses an extended Kramdown gem, [GitLab Kramdown](https://gitlab.com/gitlab-org/gitlab_kramdown).
Consult the [GitLab Kramdown Guide](https://about.gitlab.com/handbook/product/technical-writing/markdown-guide/)
for a complete Kramdown reference.
@@ -40,7 +40,7 @@ repositories are also processed with CommonMark. As of 11.8, the [Redcarpet Ruby
has been removed and all issues and comments, including those from pre-11.1, are now processed
using the [CommonMark Ruby Library](https://github.com/gjtorikian/commonmarker).
-The documentation website had its [markdown engine migrated from Redcarpet to Kramdown](https://gitlab.com/gitlab-org/gitlab-docs/merge_requests/108)
+The documentation website had its [Markdown engine migrated from Redcarpet to Kramdown](https://gitlab.com/gitlab-org/gitlab-docs/merge_requests/108)
in October 2018.
You may have older issues, merge requests, or Markdown documents in your
@@ -71,7 +71,7 @@ the top list item (`C` in this case):
- milk
NOTE: **Note:** We will flag any significant differences between Redcarpet and CommonMark
- markdown in this document.
+ Markdown in this document.
If you have a large volume of Markdown files, it can be tedious to determine
if they will display correctly or not. You can use the
@@ -81,28 +81,28 @@ differences between how RedCarpet and CommonMark render the files. It can give
an indication if anything needs to be changed - often nothing will need
to change.
-### GFM extends standard markdown
+### GFM extends standard Markdown
GitLab makes full use of the standard (CommonMark) formatting, but also includes additional
functionality useful for GitLab users.
-It makes use of [new markdown features](#new-GFM-markdown-extensions),
-not found in standard markdown:
+It makes use of [new Markdown features](#new-GFM-markdown-extensions),
+not found in standard Markdown:
- [Color "chips" written in HEX, RGB or HSL](#colors)
-- [Diagrams and flowcharts using Mermaid](#diagrams-and-flowcharts-using-mermaid)
+- [Diagrams and flowcharts](#diagrams-and-flowcharts)
- [Emoji](#emoji)
- [Front matter](#front-matter)
- [Inline diffs](#inline-diff)
- [Math equations and symbols written in LaTeX](#math)
- [Special GitLab references](#special-gitlab-references)
- [Task Lists](#task-lists)
-- [Wiki specific markdown](#wiki-specific-markdown)
+- [Wiki specific Markdown](#wiki-specific-markdown)
-It also has [extended markdown features](#standard-markdown-and-extensions-in-gitlab), without
-changing how standard markdown is used:
+It also has [extended Markdown features](#standard-markdown-and-extensions-in-gitlab), without
+changing how standard Markdown is used:
-| Standard markdown | Extended markdown in GitLab |
+| Standard Markdown | Extended Markdown in GitLab |
| ------------------------------------- | ------------------------- |
| [blockquotes](#blockquotes) | [multiline blockquotes](#multiline-blockquote) |
| [code blocks](#code-spans-and-blocks) | [colored code and syntax highlighting](#colored-code-and-syntax-highlighting) |
@@ -112,7 +112,7 @@ changing how standard markdown is used:
| [linebreaks](#line-breaks) | [more linebreak control](#newlines) |
| [links](#links) | [automatically linking URLs](#url-auto-linking) |
-## New GFM markdown extensions
+## New GFM Markdown extensions
### Colors
@@ -151,13 +151,16 @@ Color written inside backticks will be followed by a color "chip":
`HSL(540,70%,50%)`
`HSLA(540,70%,50%,0.3)`
-### Diagrams and flowcharts using Mermaid
+### Diagrams and flowcharts
+
+It is possible to generate diagrams and flowcharts from text in GitLab using [Mermaid](https://mermaidjs.github.io/) or [PlantUML](http://plantuml.com).
+
+#### Mermaid
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/15107) in
GitLab 10.3.
-It is possible to generate diagrams and flowcharts from text using [Mermaid](https://mermaidjs.github.io/).
-Visit the official page for more details.
+Visit the [official page](https://mermaidjs.github.io/) for more details.
In order to generate a diagram or flowchart, you should write your text inside the `mermaid` block:
@@ -179,8 +182,6 @@ graph TD;
C-->D;
```
-#### Subgraphs
-
Subgraphs can also be included:
~~~
@@ -219,6 +220,10 @@ graph TB
end
```
+#### PlantUML
+
+To make PlantUML available in GitLab, a GitLab administrator needs to enable it first. Read more in [PlantUML & GitLab](../administration/integration/plantuml.md).
+
### Emoji
> If this is not rendered correctly, [view it in GitLab itself](https://gitlab.com/gitlab-org/gitlab/blob/master/doc/user/markdown.md#emoji).
@@ -258,7 +263,7 @@ this font installed by default.
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/23331) in GitLab 11.6.
-Front matter is metadata included at the beginning of a markdown document, preceding
+Front matter is metadata included at the beginning of a Markdown document, preceding
its content. This data can be used by static site generators such as [Jekyll](https://jekyllrb.com/docs/front-matter/),
[Hugo](https://gohugo.io/content-management/front-matter/), and many other applications.
@@ -529,9 +534,9 @@ This snippet links to `<wiki_root>/miscellaneous.md`:
Metric charts can be embedded within GitLab Flavored Markdown. See [Embedding Metrics within GitLab flavored Markdown](../user/project/integrations/prometheus.md#embedding-metric-charts-within-gitlab-flavored-markdown) for more details.
-## Standard markdown and extensions in GitLab
+## Standard Markdown and extensions in GitLab
-All standard markdown formatting should work as expected within GitLab. Some standard
+All standard Markdown formatting should work as expected within GitLab. Some standard
functionality is extended with additional features, without affecting the standard usage.
If a functionality is extended, the new option will be listed as a sub-section.
@@ -560,7 +565,7 @@ Quote break.
> If this is not rendered correctly, [view it in GitLab itself](https://gitlab.com/gitlab-org/gitlab/blob/master/doc/user/markdown.md#multiline-blockquote).
-GFM extends the standard markdown standard by also supporting multiline blockquotes
+GFM extends the standard Markdown standard by also supporting multiline blockquotes
fenced by `>>>`:
```
@@ -704,7 +709,7 @@ But let's throw in a <b>tag</b>.
### Emphasis
-There are multiple ways to emphasize text in markdown. You can italicize, bold, strikethrough,
+There are multiple ways to emphasize text in Markdown. You can italicize, bold, strikethrough,
as well as combine these emphasis styles together.
Examples:
@@ -735,8 +740,8 @@ NOTE: **Note:** Strikethrough is not part of the core Markdown standard, but is
It is not usually useful to italicize just _part_ of a word, especially when you're
dealing with code and names that often appear with multiple underscores. As a result,
-GFM extends the standard markdown standard by ignoring multiple underlines in words,
-to allow better rendering of markdown documents discussing code:
+GFM extends the standard Markdown standard by ignoring multiple underlines in words,
+to allow better rendering of Markdown documents discussing code:
```md
perform_complicated_task
@@ -768,7 +773,7 @@ do*this*and*do*that*and*another thing
### Footnotes
-Footnotes add a link to a note rendered at the end of a markdown file:
+Footnotes add a link to a note rendered at the end of a Markdown file:
```markdown
You can add footnotes to your text as follows.[^1]
@@ -801,7 +806,7 @@ Alt-H2
#### Header IDs and links
-GFM extends the standard markdown standard so that all Markdown-rendered headers automatically
+GFM extends the standard Markdown standard so that all Markdown-rendered headers automatically
get IDs, which can be linked to, except in comments.
On hover, a link to those IDs becomes visible to make it easier to copy the link to
@@ -906,7 +911,7 @@ Here's a sample video:
> If this is not rendered correctly, [view it in GitLab itself](https://gitlab.com/gitlab-org/gitlab/blob/master/doc/user/markdown.md#audio).
Similar to videos, link tags for files with an audio extension are automatically converted to
-an audio player. The valid audio extensions are `.mp3`, `.ogg`, and `.wav`:
+an audio player. The valid audio extensions are `.mp3`, `.oga`, `.ogg`, `.spx`, and `.wav`:
```md
Here's a sample audio clip:
@@ -920,7 +925,7 @@ Here's a sample audio clip:
### Inline HTML
-> To see the markdown rendered within HTML in the second example, [view it in GitLab itself](https://gitlab.com/gitlab-org/gitlab/blob/master/doc/user/markdown.md#inline-html).
+> To see the Markdown rendered within HTML in the second example, [view it in GitLab itself](https://gitlab.com/gitlab-org/gitlab/blob/master/doc/user/markdown.md#inline-html).
You can also use raw HTML in your Markdown, and it'll usually work pretty well.
@@ -948,7 +953,7 @@ class for the list of allowed HTML tags and attributes. In addition to the defa
---
-It is still possible to use markdown inside HTML tags, but only if the lines containing markdown
+It is still possible to use Markdown inside HTML tags, but only if the lines containing Markdown
are separated into their own lines:
```html
@@ -965,7 +970,7 @@ are separated into their own lines:
</dl>
```
-<!-- Note: The example below uses HTML to force correct rendering on docs.gitlab.com, markdown will be fine in GitLab -->
+<!-- Note: The example below uses HTML to force correct rendering on docs.gitlab.com, Markdown will be fine in GitLab -->
<dl>
<dt>Markdown in HTML</dt>
@@ -981,7 +986,7 @@ are separated into their own lines:
#### Details and Summary
-> To see the markdown rendered within HTML in the second example, [view it in GitLab itself](https://gitlab.com/gitlab-org/gitlab/blob/master/doc/user/markdown.md#details-and-summary).
+> To see the Markdown rendered within HTML in the second example, [view it in GitLab itself](https://gitlab.com/gitlab-org/gitlab/blob/master/doc/user/markdown.md#details-and-summary).
Content can be collapsed using HTML's [`<details>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details)
and [`<summary>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/summary)
@@ -1029,7 +1034,7 @@ PASTE LOGS HERE
</details>
````
-<!-- Note: The example below uses HTML to force correct rendering on docs.gitlab.com, markdown will be fine in GitLab -->
+<!-- Note: The example below uses HTML to force correct rendering on docs.gitlab.com, Markdown will be fine in GitLab -->
<details>
<summary>Click me to collapse/fold.</summary>
@@ -1070,7 +1075,7 @@ in the *same paragraph*.
#### Newlines
-GFM adheres to the markdown specification in how [paragraphs and line breaks are handled](https://spec.commonmark.org/current/).
+GFM adheres to the Markdown specification in how [paragraphs and line breaks are handled](https://spec.commonmark.org/current/).
A paragraph is simply one or more consecutive lines of text, separated by one or
more blank lines (i.e. two newlines at the end of the first paragraph), as [explained above](#line-breaks).
@@ -1117,7 +1122,7 @@ There are two ways to create links, inline-style and reference-style:
Using header ID anchors:
-- This links to [a section on a different markdown page, using a "#" and the header ID](index.md#overview)
+- This links to [a section on a different Markdown page, using a "#" and the header ID](index.md#overview)
- This links to [a different section on the same page, using a "#" and the header ID](#header-ids-and-links)
Using references:
@@ -1140,7 +1145,7 @@ Some text to show that the reference links can follow later.
Using header ID anchors:
-- This links to [a section on a different markdown page, using a "#" and the header ID](index.md#overview)
+- This links to [a section on a different Markdown page, using a "#" and the header ID](index.md#overview)
- This links to [a different section on the same page, using a "#" and the header ID](#header-ids-and-links)
Using references:
@@ -1158,7 +1163,7 @@ Some text to show that the reference links can follow later.
NOTE: **Note:** Relative links do not allow the referencing of project files in a wiki
page, or a wiki page in a project file. The reason for this is that a wiki is always
in a separate Git repository in GitLab. For example, `[I'm a reference-style link](style)`
-will point the link to `wikis/style` only when the link is inside of a wiki markdown file.
+will point the link to `wikis/style` only when the link is inside of a wiki Markdown file.
#### URL auto-linking
@@ -1314,7 +1319,7 @@ Tables aren't part of the core Markdown spec, but they are part of GFM.
1. The first line contains the headers, separated by "pipes" (`|`).
1. The second line separates the headers from the cells, and must contain three or more dashes.
1. The third, and any following lines, contain the cell values.
- - You **can't** have cells separated over many lines in the markdown, they must be kept to single lines,
+ - You **can't** have cells separated over many lines in the Markdown, they must be kept to single lines,
but they can be very long. You can also include HTML `<br>` tags to force newlines if needed.
- The cell sizes **don't** have to match each other. They are flexible, but must be separated
by pipes (`|`).
@@ -1357,6 +1362,6 @@ to the sides of the "dash" lines in the second row. This will affect every cell
- This document leveraged heavily from the [Markdown-Cheatsheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet).
- The original [Markdown Syntax Guide](https://daringfireball.net/projects/markdown/syntax)
- at Daring Fireball is an excellent resource for a detailed explanation of standard markdown.
+ at Daring Fireball is an excellent resource for a detailed explanation of standard Markdown.
- The detailed specification for CommonMark can be found in the [CommonMark Spec](https://spec.commonmark.org/current/)
- The [CommonMark Dingus](http://try.commonmark.org) is a handy tool for testing CommonMark syntax.
diff --git a/doc/user/packages/conan_repository/index.md b/doc/user/packages/conan_repository/index.md
index 953c7472f4d..2366d1ccc0d 100644
--- a/doc/user/packages/conan_repository/index.md
+++ b/doc/user/packages/conan_repository/index.md
@@ -1,6 +1,6 @@
# GitLab Conan Repository **(PREMIUM)**
-> [Introduced](https://gitlab.com/gitlab-org/gitlab-ee/issues/8248) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.5.
+> [Introduced](https://gitlab.com/gitlab-org/gitlab-ee/issues/8248) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.6.
With the GitLab Conan Repository, every
project can have its own space to store Conan packages.
@@ -27,7 +27,7 @@ get familiar with the package naming convention.
## Authenticating to the GitLab Conan Repository
-You will need to generate a [personal access token](../../../user/profile/personal_access_tokens.md) for repository authentication.
+You will need to generate a [personal access token](../../../user/profile/personal_access_tokens.md) with the scope set to `api` for repository authentication.
Now you can run conan commands using your token.
diff --git a/doc/user/packages/container_registry/index.md b/doc/user/packages/container_registry/index.md
index f6c9a2c9e34..9c1a9d5a41a 100644
--- a/doc/user/packages/container_registry/index.md
+++ b/doc/user/packages/container_registry/index.md
@@ -144,7 +144,6 @@ project or branch name. Special characters can include:
- Leading underscore
- Trailing hyphen/dash
-- Double hyphen/dash
To get around this, you can [change the group path](../../group/index.md#changing-a-groups-path),
[change the project path](../../project/settings/index.md#renaming-a-repository) or change the branch
diff --git a/doc/user/packages/index.md b/doc/user/packages/index.md
index 9873bd80e8b..ecaad960340 100644
--- a/doc/user/packages/index.md
+++ b/doc/user/packages/index.md
@@ -13,8 +13,12 @@ The Packages feature allows GitLab to act as a repository for the following:
| [Conan Repository](conan_repository/index.md) **(PREMIUM)** | The GitLab Conan Repository enables every project in GitLab to have its own space to store [Conan](https://conan.io/) packages. | 12.4+ |
| [Maven Repository](maven_repository/index.md) **(PREMIUM)** | The GitLab Maven Repository enables every project in GitLab to have its own space to store [Maven](https://maven.apache.org/) packages. | 11.3+ |
| [NPM Registry](npm_registry/index.md) **(PREMIUM)** | The GitLab NPM Registry enables every project in GitLab to have its own space to store [NPM](https://www.npmjs.com/) packages. | 11.7+ |
+| [NuGet Repository](https://gitlab.com/gitlab-org/gitlab/issues/20050) **(PREMIUM)** | *COMING SOON* The GitLab NuGet Repository will enable every project in GitLab to have its own space to store [NuGet](https://www.nuget.org/) packages. | 12.7 (planned) |
TIP: **Tip:**
Don't you see your package management system supported yet? Consider contributing
to GitLab. This [development documentation](../../development/packages.md) will
-guide you through the process.
+guide you through the process. Or check out how other members of the commmunity
+are adding support for [PHP](https://gitlab.com/gitlab-org/gitlab/merge_requests/17417) or [Terraform](https://gitlab.com/gitlab-org/gitlab/merge_requests/18834).
+
+NOTE: **Note** We are especially interested in adding support for [PyPi](https://gitlab.com/gitlab-org/gitlab/issues/10483), [RubyGems](https://gitlab.com/gitlab-org/gitlab/issues/803), [Debian](https://gitlab.com/gitlab-org/gitlab/issues/5835), and [RPM](https://gitlab.com/gitlab-org/gitlab/issues/5932).
diff --git a/doc/user/packages/maven_repository/img/maven_package_view.png b/doc/user/packages/maven_repository/img/maven_package_view.png
deleted file mode 100644
index 2eb4b6f76b4..00000000000
--- a/doc/user/packages/maven_repository/img/maven_package_view.png
+++ /dev/null
Binary files differ
diff --git a/doc/user/packages/maven_repository/img/maven_package_view_v12_6.png b/doc/user/packages/maven_repository/img/maven_package_view_v12_6.png
new file mode 100644
index 00000000000..92cefc26660
--- /dev/null
+++ b/doc/user/packages/maven_repository/img/maven_package_view_v12_6.png
Binary files differ
diff --git a/doc/user/packages/maven_repository/index.md b/doc/user/packages/maven_repository/index.md
index 8ed10c09891..da5139fcaf9 100644
--- a/doc/user/packages/maven_repository/index.md
+++ b/doc/user/packages/maven_repository/index.md
@@ -5,7 +5,7 @@
With the GitLab [Maven](https://maven.apache.org) Repository, every
project can have its own space to store its Maven artifacts.
-![GitLab Maven Repository](img/maven_package_view.png)
+![GitLab Maven Repository](img/maven_package_view_v12_6.png)
## Enabling the Maven Repository
@@ -37,7 +37,7 @@ credentials do not work.
### Authenticating with a personal access token
To authenticate with a [personal access token](../../profile/personal_access_tokens.md),
-add a corresponding section to your
+set the scope to `api` and add a corresponding section to your
[`settings.xml`](https://maven.apache.org/settings.html) file:
```xml
diff --git a/doc/user/packages/npm_registry/img/npm_package_view.png b/doc/user/packages/npm_registry/img/npm_package_view.png
deleted file mode 100644
index e0634718c02..00000000000
--- a/doc/user/packages/npm_registry/img/npm_package_view.png
+++ /dev/null
Binary files differ
diff --git a/doc/user/packages/npm_registry/img/npm_package_view_v12_5.png b/doc/user/packages/npm_registry/img/npm_package_view_v12_5.png
new file mode 100644
index 00000000000..a6f823011eb
--- /dev/null
+++ b/doc/user/packages/npm_registry/img/npm_package_view_v12_5.png
Binary files differ
diff --git a/doc/user/packages/npm_registry/index.md b/doc/user/packages/npm_registry/index.md
index d8b59ae63d0..7d5db5a60ef 100644
--- a/doc/user/packages/npm_registry/index.md
+++ b/doc/user/packages/npm_registry/index.md
@@ -5,7 +5,7 @@
With the GitLab NPM Registry, every
project can have its own space to store NPM packages.
-![GitLab NPM Registry](img/npm_package_view.png)
+![GitLab NPM Registry](img/npm_package_view_v12_5.png)
NOTE: **Note:**
Only [scoped](https://docs.npmjs.com/misc/scope) packages are supported.
@@ -42,6 +42,20 @@ it is not possible due to a naming collision. For example:
| `gitlab-org/gitlab` | `@gitlab-org/gitlab` | Yes |
| `gitlab-org/gitlab` | `@foo/bar` | No |
+The regex that is used for naming is validating all package names from all package managers:
+
+```
+/\A\@?(([\w\-\.\+]*)\/)*([\w\-\.]+)@?(([\w\-\.\+]*)\/)*([\w\-\.]*)\z/
+```
+
+It allows for capital letters, while NPM does not, and allows for almost all of the
+characters NPM allows with a few exceptions (`~` is not allowed).
+
+NOTE: **Note:** Capital letters are needed because the scope is required to be
+identical to the top level namespace of the project. So, for example, if your
+project path is `My-Group/project-foo`, your package must be named `@My-Group/any-package-name`.
+`@my-group/any-package-name` will not work.
+
CAUTION: **When updating the path of a user/group or transferring a (sub)group/project:**
If you update the root namespace of a project with NPM packages, your changes will be rejected. To be allowed to do that, make sure to remove any NPM package first. Don't forget to update your `.npmrc` files to follow the above naming convention and run `npm publish` if necessary.
@@ -54,7 +68,7 @@ If a project is private or you want to upload an NPM package to GitLab,
credentials will need to be provided for authentication. Support is available for [OAuth tokens](../../../api/oauth2.md#resource-owner-password-credentials-flow) or [personal access tokens](../../profile/personal_access_tokens.md).
CAUTION: **2FA is only supported with personal access tokens:**
-If you have 2FA enabled, you need to use a [personal access token](../../profile/personal_access_tokens.md) with OAuth headers. Standard OAuth tokens won't be able to authenticate to the GitLab NPM Registry.
+If you have 2FA enabled, you need to use a [personal access token](../../profile/personal_access_tokens.md) with OAuth headers with the scope set to `api`. Standard OAuth tokens won't be able to authenticate to the GitLab NPM Registry.
### Authenticating with an OAuth token
@@ -108,7 +122,7 @@ Then, you could run `npm publish` either locally or via GitLab CI/CD:
- **GitLab CI/CD:** Set an `NPM_TOKEN` [variable](../../../ci/variables/README.md)
under your project's **Settings > CI/CD > Variables**.
-
+
### Authenticating with a CI job token
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/9104) in GitLab Premium 12.5.
@@ -116,7 +130,7 @@ Then, you could run `npm publish` either locally or via GitLab CI/CD:
If you’re using NPM with GitLab CI/CD, a CI job token can be used instead of a personal access token.
The token will inherit the permissions of the user that generates the pipeline.
-Add a corresponding section to your `.npmrc` file:
+Add a corresponding section to your `.npmrc` file:
```ini
@foo:registry=https://gitlab.com/api/v4/packages/npm/
@@ -156,9 +170,10 @@ a given scope, you will receive a `403 Forbidden!` error.
## Uploading a package with the same version twice
-If you upload a package with a same name and version twice, GitLab will show
-both packages in the UI, but the GitLab NPM Registry will expose the most recent
-one as it supports only one package per version for `npm install`.
+You cannot upload a package with the same name and version twice, unless you
+delete the existing package first. This aligns with npmjs.org's behavior, with
+the exception that npmjs.org does not allow users to ever publish the same version
+more than once, even if it has been deleted.
## Troubleshooting
@@ -211,3 +226,19 @@ And the `.npmrc` file should look like:
//gitlab.com/api/v4/packages/npm/:_authToken=<your_oauth_token>
@foo:registry=https://gitlab.com/api/v4/packages/npm/
```
+
+## NPM dependencies metadata
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/11867) in GitLab Premium 12.6.
+
+Starting from GitLab 12.6, new packages published to the GitLab NPM Registry expose the following attributes to the NPM client:
+
+- name
+- version
+- dist-tags
+- dependencies
+ - dependencies
+ - devDependencies
+ - bundleDependencies
+ - peerDependencies
+ - deprecated
diff --git a/doc/user/permissions.md b/doc/user/permissions.md
index 70660e5e22f..9cbf4fd6192 100644
--- a/doc/user/permissions.md
+++ b/doc/user/permissions.md
@@ -5,7 +5,7 @@ description: 'Understand and explore the user permission levels in GitLab, and w
# Permissions
Users have different abilities depending on the access level they have in a
-particular group or project. If a user is both in a group's project and the
+particular group or project. If a user is both in a project's group and the
project itself, the highest permission level is used.
On public and internal projects the Guest role is not enforced. All users will
@@ -46,10 +46,11 @@ The following table depicts the various user permission levels in a project.
| Download project | ✓ (*1*) | ✓ | ✓ | ✓ | ✓ |
| Leave comments | ✓ (*1*) | ✓ | ✓ | ✓ | ✓ |
| View Insights charts **(ULTIMATE)** | ✓ | ✓ | ✓ | ✓ | ✓ |
-| View approved/blacklisted licenses **(ULTIMATE)** | ✓ | ✓ | ✓ | ✓ | ✓ |
+| View approved/blacklisted licenses **(ULTIMATE)** | ✓ (*1*) | ✓ | ✓ | ✓ | ✓ |
| View License Compliance reports **(ULTIMATE)** | ✓ (*1*) | ✓ | ✓ | ✓ | ✓ |
| View Security reports **(ULTIMATE)** | ✓ (*3*) | ✓ | ✓ | ✓ | ✓ |
| View Dependency list **(ULTIMATE)** | ✓ (*1*) | ✓ | ✓ | ✓ | ✓ |
+| View License list **(ULTIMATE)** | ✓ (*1*) | ✓ | ✓ | ✓ | ✓ |
| View licenses in Dependency list **(ULTIMATE)** | ✓ (*1*) | ✓ | ✓ | ✓ | ✓ |
| View [Design Management](project/issues/design_management.md) pages **(PREMIUM)** | ✓ | ✓ | ✓ | ✓ | ✓ |
| View project code | ✓ (*1*) | ✓ | ✓ | ✓ | ✓ |
@@ -252,7 +253,7 @@ project and should only have access to that project.
External users:
-- Cannot create groups or projects.
+- Cannot create groups, projects, or personal snippets.
- Can only access projects to which they are explicitly granted access,
thus hiding all other internal or private ones from them (like being
logged out).
diff --git a/doc/user/profile/active_sessions.md b/doc/user/profile/active_sessions.md
index fe2eeebdb99..f68b11a57ec 100644
--- a/doc/user/profile/active_sessions.md
+++ b/doc/user/profile/active_sessions.md
@@ -2,10 +2,9 @@
type: howto
---
-# Active Sessions
+# Active sessions
-> - [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/17867)
-> in GitLab 10.8.
+> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/17867) in GitLab 10.8.
GitLab lists all devices that have logged into your account. This allows you to
review the sessions, and revoke any you don't recognize.
@@ -18,6 +17,13 @@ review the sessions, and revoke any you don't recognize.
![Active sessions list](img/active_sessions_list.png)
+## Active sessions limit
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/31611) in GitLab 12.6.
+
+GitLab allows users to have up to 100 active sessions at once. If the number of active sessions
+exceeds 100, the oldest ones are deleted.
+
<!-- ## Troubleshooting
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
diff --git a/doc/user/project/clusters/add_remove_clusters.md b/doc/user/project/clusters/add_remove_clusters.md
index c73368fbbd2..6a0377f118d 100644
--- a/doc/user/project/clusters/add_remove_clusters.md
+++ b/doc/user/project/clusters/add_remove_clusters.md
@@ -34,7 +34,7 @@ namespace.
This service account will be:
-- Added to the installed Helm Tiller
+- Added to the installed Helm Tiller.
- Used by Helm to install and run [GitLab managed applications](index.md#installing-applications).
Helm will also create additional service accounts and other resources for each
@@ -111,6 +111,11 @@ If you don't want to use GitLab Runner in privileged mode, either:
## Add new cluster
+New clusters can be added using GitLab for:
+
+- Google Kubernetes Engine.
+- Amazon Elastic Kubernetes Service.
+
### GKE cluster
GitLab supports:
@@ -206,46 +211,9 @@ GitLab supports:
Before creating your first cluster on Amazon EKS with GitLab's integration,
make sure the following requirements are met:
-- Enable the `create_eks_clusters` feature flag for your GitLab instance.
- An [Amazon Web Services](https://aws.amazon.com/) account is set up and you are able to log in.
- You have permissions to manage IAM resources.
-#### Enable the `create_eks_clusters` feature flag **(CORE ONLY)**
-
-NOTE: **Note:**
-If you are running a self-managed instance, EKS cluster creation will not be available
-unless the feature flag `create_eks_clusters` is enabled. This can be done from the Rails console
-by instance administrators.
-
-Use these commands to start the Rails console:
-
-```sh
-# Omnibus GitLab
-gitlab-rails console
-
-# Installation from source
-cd /home/git/gitlab
-sudo -u git -H bin/rails console RAILS_ENV=production
-```
-
-Then run the following command to enable the feature flag:
-
-```
-Feature.enable(:create_eks_clusters)
-```
-
-You can also enable the feature flag only for specific projects with:
-
-```
-Feature.enable(:create_eks_clusters, Project.find_by_full_path('my_group/my_project'))
-```
-
-Run the following command to disable the feature flag:
-
-```
-Feature.disable(:create_eks_clusters)
-```
-
##### Additional requirements for self-managed instances
If you are using a self-managed GitLab instance, GitLab must first
@@ -332,6 +300,7 @@ new Kubernetes cluster to your project:
"iam:AttachRolePolicy",
"iam:CreateRole",
"iam:CreateInstanceProfile",
+ "iam:CreateServiceLinkedRole",
"iam:GetRole",
"iam:ListRoles",
"iam:PassRole",
diff --git a/doc/user/project/clusters/index.md b/doc/user/project/clusters/index.md
index c5c2c2c07e7..6d863a8b888 100644
--- a/doc/user/project/clusters/index.md
+++ b/doc/user/project/clusters/index.md
@@ -128,9 +128,31 @@ automatically. If you are using [Auto DevOps](../../../topics/autodevops/index.m
need to explicitly provide the `KUBE_NAMESPACE` [deployment variable](#deployment-variables)
that will be used by your deployment jobs, otherwise a namespace will be created for you.
-NOTE: **Note:**
-If you [install applications](#installing-applications) on your cluster, GitLab will create
-the resources required to run these even if you have chosen to manage your own cluster.
+#### Important notes
+
+Note the following with GitLab and clusters:
+
+- If you [install applications](#installing-applications) on your cluster, GitLab will
+ create the resources required to run these even if you have chosen to manage your own
+ cluster.
+- Be aware that manually managing resources that have been created by GitLab, like
+ namespaces and service accounts, can cause unexpected errors. If this occurs, try
+ [clearing the cluster cache](#clearing-the-cluster-cache).
+
+#### Clearing the cluster cache
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/31759) in GitLab 12.6.
+
+If you choose to allow GitLab to manage your cluster for you, GitLab stores a cached
+version of the namespaces and service accounts it creates for your projects. If you
+modify these resources in your cluster manually, this cache can fall out of sync with
+your cluster, which can cause deployment jobs to fail.
+
+To clear the cache:
+
+1. Navigate to your project’s **Operations > Kubernetes** page, and select your cluster.
+1. Expand the **Advanced settings** section.
+1. Click **Clear cluster cache**.
### Base domain
diff --git a/doc/user/project/clusters/serverless/aws.md b/doc/user/project/clusters/serverless/aws.md
index 2c16748a3ee..0b74f1e73eb 100644
--- a/doc/user/project/clusters/serverless/aws.md
+++ b/doc/user/project/clusters/serverless/aws.md
@@ -4,9 +4,20 @@ GitLab allows users to easily deploy AWS Lambda functions and create rich server
GitLab supports deployment of functions to AWS Lambda using a combination of:
-- [Serverless Framework](https://serverless.com)
+- [Serverless Framework with AWS](https://serverless.com/framework/docs/providers/aws/)
- GitLab CI/CD
+We have prepared an example with a step-by-step guide to create a simple function and deploy it on AWS.
+
+Additionally, in the [How To section](#how-to), you can read about different use cases,
+like:
+
+- Running a function locally.
+- Working with secrets.
+- Setting up CORS.
+
+Alternatively, you can quickly [create a new project with a template](https://docs.gitlab.com/ee/gitlab-basics/create-project.html#project-templates). The [`Serverless Framework/JS` template](https://gitlab.com/gitlab-org/project-templates/serverless-framework/) already includes all parts described below.
+
## Example
In the following example, you will:
@@ -23,13 +34,13 @@ The example consists of the following steps:
1. Crafting the `.gitlab-ci.yml` file
1. Setting up your AWS credentials with your GitLab account
1. Deploying your function
-1. Testing your function
+1. Testing the deployed function
Lets take it step by step.
### Creating a Lambda handler function
-Your Lambda function will be the primary handler of requests. In this case we will create a very simple Node.js "Hello" function:
+Your Lambda function will be the primary handler of requests. In this case we will create a very simple Node.js `hello` function:
```javascript
'use strict';
@@ -46,8 +57,6 @@ module.exports.hello = async event => {
),
};
};
-
-
```
Place this code in the file `src/handler.js`.
@@ -58,7 +67,7 @@ In our case, `module.exports.hello` defines the `hello` handler that will be ref
You can learn more about the AWS Lambda Node.js function handler and all its various options here: <https://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-handler.html>
-### Creating a serverless.yml file
+### Creating a `serverless.yml` file
In the root of your project, create a `serverless.yml` file that will contain configuration specifics for the Serverless Framework.
@@ -69,7 +78,7 @@ service: gitlab-example
provider:
name: aws
runtime: nodejs10.x
-
+
functions:
hello:
handler: src/handler.hello
@@ -85,9 +94,9 @@ The `events` declaration will create a AWS API Gateway `GET` endpoint to receive
You can read more about the available properties and additional configuration possibilities of the Serverless Framework here: <https://serverless.com/framework/docs/providers/aws/guide/serverless.yml/>
-### Crafting the .gitlab-ci.yml file
+### Crafting the `.gitlab-ci.yml` file
-In a `.gitlab-ci.yml` file, place the following code:
+In a `.gitlab-ci.yml` file in the root of your project, place the following code:
```yaml
image: node:latest
@@ -109,21 +118,22 @@ This example code does the following:
1. Uses the `node:latest` image for all GitLab CI builds
1. The `deploy` stage:
-
-- Installs the `serverless framework`.
-- Deploys the serverless function to your AWS account using the AWS credentials defined above.
+ - Installs the Serverless Framework.
+ - Deploys the serverless function to your AWS account using the AWS credentials
+ defined above.
+ - Deploys the serverless function to your AWS account using the AWS credentials defined above
### Setting up your AWS credentials with your GitLab account
-In order to interact with your AWS account, the .gitlab-ci.yml requires both `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` be defined in your GitLab settings under **Settings > CI/CD > Variables**.
+In order to interact with your AWS account, the GitLab CI/CD pipelines require both `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` to be defined in your GitLab settings under **Settings > CI/CD > Variables**.
For more information please see: <https://docs.gitlab.com/ee/ci/variables/README.html#via-the-ui>
NOTE: **Note:**
- The AWS credentials you provide must include IAM policies that provision correct access control to AWS Lambda, API Gateway, and CloudFormation resources.
+ The AWS credentials you provide must include IAM policies that provision correct access control to AWS Lambda, API Gateway, CloudFormation, and IAM resources.
### Deploying your function
-Deploying your function is very simple, just `git push` to your GitLab repository and the GitLab build pipeline will automatically deploy your function.
+`git push` the changes to your GitLab repository and the GitLab build pipeline will automatically deploy your function.
In your GitLab deploy stage log, there will be output containing your AWS Lambda endpoint URL.
The log line will look similar to this:
@@ -133,7 +143,7 @@ endpoints:
GET - https://u768nzby1j.execute-api.us-east-1.amazonaws.com/production/hello
```
-### Testing your function
+### Manually testing your function
Running the following `curl` command should trigger your function.
@@ -144,7 +154,7 @@ NOTE: **Note:**
curl https://u768nzby1j.execute-api.us-east-1.amazonaws.com/production/hello
```
-Should output:
+That should output:
```json
{
@@ -156,8 +166,123 @@ Hooray! You now have a AWS Lambda function deployed via GitLab CI.
Nice work!
-## Example code
+## How To
+
+In this section, we show you how to build on the basic example to:
+
+- Run the function locally.
+- Set up secret variables.
+- Set up CORS.
+
+### Running function locally
+
+The `serverless-offline` plugin allows to run your code locally. To run your code locally:
+
+1. Add the following to your `serverless.yml`:
+
+ ```yaml
+ plugins:
+ - serverless-offline
+ ```
+
+1. Start the service by running the following command:
+
+ ```shell
+ serverless offline
+ ```
+
+Running the following `curl` command should trigger your function.
+
+```sh
+curl http://localhost:3000/hello
+```
+
+It should output:
+
+```json
+{
+ "message": "Your function executed successfully!"
+}
+```
+
+### Secret variables
+
+Secrets are injected into your functions using environment variables.
+
+By defining variables in the provider section of the `serverless.yml`, you add them to
+the environment of the deployed function:
+
+```yaml
+provider:
+ ...
+ environment:
+ A_VARIABLE: ${env:A_VARIABLE}
+```
+
+From there, you can reference them in your functions as well.
+Remember to add `A_VARIABLE` to your GitLab CI variables under **Settings > CI/CD > Variables**, and it will get picked up and deployed with your function.
+
+NOTE: **Note:**
+Anyone with access to the AWS environemnt may be able to see the values of those
+variables persisted in the lambda definition.
+
+### Setting up CORS
+
+If you want to set up a web page that makes calls to your function, like we have done in the [template](https://gitlab.com/gitlab-org/project-templates/serverless-framework/), you need to deal with the Cross-Origin Resource Sharing (CORS).
+
+The quick way to do that is to add the `cors: true` flag to the HTTP endpoint in your `serverless.yml`:
+
+```yaml
+functions:
+ hello:
+ handler: src/handler.hello
+ events:
+ - http: # Rewrite this part to enable CORS
+ path: hello
+ method: get
+ cors: true # <-- CORS here
+```
+
+You also need to return CORS specific headers in your function response:
+
+```javascript
+'use strict';
+
+module.exports.hello = async event => {
+ return {
+ statusCode: 200,
+ headers: {
+ // Uncomment the line below if you need access to cookies or authentication
+ // 'Access-Control-Allow-Credentials': true,
+ 'Access-Control-Allow-Origin': '*'
+ },
+ body: JSON.stringify(
+ {
+ message: 'Your function executed successfully!'
+ },
+ null,
+ 2
+ ),
+ };
+};
+```
+
+For more information, see the [Your CORS and API Gateway survival guide](https://serverless.com/blog/cors-api-gateway-survival-guide/)
+blog post written by the Serverless Framework team.
+
+### Writing automated tests
+
+The [Serverless Framework](https://gitlab.com/gitlab-org/project-templates/serverless-framework/)
+example project shows how to use Jest, Axios, and `serverless-offline` plugin to do
+automated testing of both local and deployed serverless function.
+
+## Examples and template
+
+The example code is available:
-To see the example code for this example please follow the link below:
+- As a [cloneable repository](https://gitlab.com/gitlab-org/serverless/examples/serverless-framework-js).
+- In a version with [tests and secret variables](https://gitlab.com/gitlab-org/project-templates/serverless-framework/).
-- [Node.js example](https://gitlab.com/gitlab-org/serverless/examples/serverless-framework-js): Deploy a AWS Lambda Javascript function + API Gateway using Serverless Framework and GitLab CI/CD
+You can also use a [template](https://docs.gitlab.com/ee/gitlab-basics/create-project.html#project-templates)
+(based on the version with tests and secret variables) from within the GitLab UI (see
+the `Serverless Framework/JS` template).
diff --git a/doc/user/project/clusters/serverless/index.md b/doc/user/project/clusters/serverless/index.md
index ffd7b0c0f2a..ae04dbab1a0 100644
--- a/doc/user/project/clusters/serverless/index.md
+++ b/doc/user/project/clusters/serverless/index.md
@@ -13,7 +13,7 @@ GitLab supports several ways deploy Serverless applications in both Kubernetes E
Currently we support:
-- [Knative](#knative): Build Knative applications with Knative and gitlabktl on GKE.
+- [Knative](#knative): Build Knative applications with Knative and `gitlabktl` on GKE and EKS.
- [AWS Lambda](aws.md): Create serverless applications via the Serverless Framework and GitLab CI.
## Knative
@@ -36,10 +36,12 @@ With GitLab Serverless, you can deploy both functions-as-a-service (FaaS) and se
To run Knative on GitLab, you will need:
1. **Existing GitLab project:** You will need a GitLab project to associate all resources. The simplest way to get started:
-
- - If you are planning on deploying functions, clone the [functions example project](https://gitlab.com/knative-examples/functions) to get started.
- - If you are planning on deploying a serverless application, clone the sample [Knative Ruby App](https://gitlab.com/knative-examples/knative-ruby-app) to get started.
-
+ - If you are planning on [deploying functions](#deploying-functions),
+ clone the [functions example project](https://gitlab.com/knative-examples/functions) to get
+ started.
+ - If you are planning on [deploying a serverless application](#deploying-serverless-applications),
+ clone the sample [Knative Ruby App](https://gitlab.com/knative-examples/knative-ruby-app) to get
+ started.
1. **Kubernetes Cluster:** An RBAC-enabled Kubernetes cluster is required to deploy Knative.
The simplest way to get started is to add a cluster using [GitLab's GKE integration](../add_remove_clusters.md#gke-cluster).
The set of minimum recommended cluster specifications to run Knative is 3 nodes, 6 vCPUs, and 22.50 GB memory.
@@ -58,7 +60,7 @@ To run Knative on GitLab, you will need:
1. **`serverless.yml`** (for [functions only](#deploying-functions)): When using serverless to deploy functions, the `serverless.yml` file
will contain the information for all the functions being hosted in the repository as well as a reference to the
runtime being used.
-1. **`Dockerfile`** (for [applications only](#deploying-serverless-applications): Knative requires a
+1. **`Dockerfile`** (for [applications only](#deploying-serverless-applications)): Knative requires a
`Dockerfile` in order to build your applications. It should be included at the root of your
project's repo and expose port `8080`. `Dockerfile` is not require if you plan to build serverless functions
using our [runtimes](https://gitlab.com/gitlab-org/serverless/runtimes).
@@ -87,7 +89,7 @@ The minimum recommended cluster size to run Knative is 3-nodes, 6 vCPUs, and 22.
for other platforms [Install kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/).
1. The Ingress is now available at this address and will route incoming requests to the proper service based on the DNS
- name in the request. To support this, a wildcard DNS A record should be created for the desired domain name. For example,
+ name in the request. To support this, a wildcard DNS record should be created for the desired domain name. For example,
if your Knative base domain is `knative.info` then you need to create an A record or CNAME record with domain `*.knative.info`
pointing the ip address or hostname of the Ingress.
@@ -116,7 +118,8 @@ You must do the following:
1. Ensure GitLab can manage Knative:
- For a non-GitLab managed cluster, ensure that the service account for the token
- provided can manage resources in the `serving.knative.dev` API group.
+ provided can manage resources in the `serving.knative.dev` API group. It will also
+ need list access to the deployments in the `knative-serving` namespace.
- For a GitLab managed cluster, if you added the cluster in [GitLab 12.1 or later](https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/30235),
then GitLab will already have the required access and you can proceed to the next step.
@@ -153,6 +156,19 @@ You must do the following:
- delete
- patch
- watch
+ ---
+ apiVersion: rbac.authorization.k8s.io/v1
+ kind: ClusterRole
+ metadata:
+ name: gitlab-knative-version-role
+ rules:
+ - apiGroups:
+ - apps
+ resources:
+ - deployments
+ verbs:
+ - list
+ - get
```
Then run the following command:
@@ -217,26 +233,40 @@ Or:
## Supported runtimes
-Serverless functions for GitLab can be written in 6 supported languages:
+Serverless functions for GitLab can be run using:
+
+- [GitLab-managed](#gitlab-managed-runtimes) runtimes.
+- [OpenFaaS](#openfaas-runtimes) runtimes.
-- NodeJS and Ruby, with GitLab-managed and OpenFaas runtimes.
-- C#, Go, PHP, and Python with OpenFaaS runtimes only.
+If a runtime is not available for the required programming language, consider deploying a
+[serverless application](#deploying-serverless-applications).
-### GitLab managed runtimes
+### GitLab-managed runtimes
-Currently the following [runtimes](https://gitlab.com/gitlab-org/serverless/runtimes) are offered:
+Currently the following GitLab-managed [runtimes](https://gitlab.com/gitlab-org/serverless/runtimes)
+are available:
-- ruby
-- node.js
-- Dockerfile
+- `go` (proof of concept)
+- `nodejs`
+- `ruby`
-`Dockerfile` presence is assumed when a runtime is not specified.
+You must provide a `Dockerfile` to run serverless functions if no runtime is specified.
### OpenFaaS runtimes
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/29253) in GitLab 12.5.
[OpenFaaS classic runtimes](https://github.com/openfaas/templates#templates-in-store) can be used with GitLab serverless.
+
+OpenFaas runtimes are available for the following languages:
+
+- C#
+- Go
+- NodeJS
+- PHP
+- Python
+- Ruby
+
Runtimes are specified using the pattern: `openfaas/classic/<template_name>`. The following
example shows how to define a function in `serverless.yml` using an OpenFaaS runtime:
@@ -311,17 +341,21 @@ project):
provider:
name: triggermesh
- environment:
+ envs:
FOO: value
+ secrets:
+ - my-secrets
functions:
echo-js:
handler: echo-js
source: ./echo-js
- runtime: https://gitlab.com/gitlab-org/serverless/runtimes/nodejs
+ runtime: gitlab/runtimes/nodejs
description: "node.js runtime function"
- environment:
+ envs:
MY_FUNCTION: echo-js
+ secrets:
+ - my-secrets
```
Explanation of the fields used above:
@@ -338,7 +372,8 @@ Explanation of the fields used above:
| Parameter | Description |
|-----------|-------------|
| `name` | Indicates which provider is used to execute the `serverless.yml` file. In this case, the TriggerMesh middleware. |
-| `environment` | Includes the environment variables to be passed as part of function execution for **all** functions in the file, where `FOO` is the variable name and `BAR` are he variable contents. You may replace this with you own variables. |
+| `envs` | Includes the environment variables to be passed as part of function execution for **all** functions in the file, where `FOO` is the variable name and `BAR` are he variable contents. You may replace this with you own variables. |
+| `secrets` | Includes the contents of the Kubernetes secret as environment variables accessible to be passed as part of function execution for **all** functions in the file. The secrets are expected in ini format. |
### `functions`
@@ -349,9 +384,29 @@ subsequent lines contain the function attributes.
|-----------|-------------|
| `handler` | The function's name. |
| `source` | Directory with sources of a functions. |
-| `runtime` (optional)| The runtime to be used to execute the function. When the runtime is not specified, we assume that `Dockerfile` is present in the function directory specified by `source`. |
+| `runtime` (optional)| The runtime to be used to execute the function. This can be a runtime alias (see [Runtime aliases](#runtime-aliases)), or it can be a full URL to a custom runtime repository. When the runtime is not specified, we assume that `Dockerfile` is present in the function directory specified by `source`. |
| `description` | A short description of the function. |
-| `environment` | Sets an environment variable for the specific function only. |
+| `envs` | Sets an environment variable for the specific function only. |
+| `secrets` | Includes the contents of the Kubernetes secret as environment variables accessible to be passed as part of function execution for the specific function only. The secrets are expected in ini format. |
+
+### Deployment
+
+#### Runtime aliases
+
+The optional `runtime` parameter can refer to one of the following runtime aliases (also see [Supported runtimes](#supported-runtimes)):
+
+| Runtime alias | Maintained by |
+|-------------|---------------|
+| `gitlab/runtimes/go` | GitLab |
+| `gitlab/runtimes/nodejs` | GitLab |
+| `gitlab/runtimes/ruby` | GitLab |
+| `openfaas/classic/csharp` | OpenFaaS |
+| `openfaas/classic/go` | OpenFaaS |
+| `openfaas/classic/node` | OpenFaaS |
+| `openfaas/classic/php7` | OpenFaaS |
+| `openfaas/classic/python` | OpenFaaS |
+| `openfaas/classic/python3` | OpenFaaS |
+| `openfaas/classic/ruby` | OpenFaaS |
After the `gitlab-ci.yml` template has been added and the `serverless.yml` file
has been created, pushing a commit to your project will result in a CI pipeline
@@ -388,6 +443,33 @@ The sample function can now be triggered from any HTTP client using a simple `PO
![function execution](img/function-execution.png)
+### Secrets
+
+To access your Kubernetes secrets from within your function, the secrets should be created under the namespace of your serverless deployment.
+
+#### CLI example
+
+```bash
+kubectl create secret generic my-secrets -n "$KUBE_NAMESPACE" --from-literal MY_SECRET=imverysecure
+```
+
+#### Part of deployment job
+
+You can extend your `.gitlab-ci.yml` to create the secrets during deployment using the [environment variables](../../../../ci/variables/README.md)
+stored securely under your GitLab project.
+
+```yaml
+deploy:function:
+ stage: deploy
+ environment: production
+ extends: .serverless:deploy:functions
+ before_script:
+ - kubectl create secret generic my-secret
+ --from-literal MY_SECRET="$GITLAB_SECRET_VARIABLE"
+ --namespace "$KUBE_NAMESPACE"
+ --dry-run -o yaml | kubectl apply -f -
+```
+
### Running functions locally
Running a function locally is a good way to quickly verify behavior during development.
@@ -427,9 +509,10 @@ To run a function locally:
> Introduced in GitLab 11.5.
-Serverless applications are the building block of serverless functions. They are useful in scenarios where an existing
-runtime does not meet the needs of an application, such as one written in a language that has no runtime available. Note
-though that serverless applications should be stateless!
+Serverless applications are an alternative to [serverless functions](#deploying-functions).
+They are useful in scenarios where an existing runtime does not meet the needs of an application,
+such as one written in a language that has no runtime available. Note though that serverless
+applications should be stateless!
NOTE: **Note:**
You can reference and import the sample [Knative Ruby App](https://gitlab.com/knative-examples/knative-ruby-app) to get started.
@@ -780,3 +863,23 @@ The instructions below relate to installing and running Certbot on a Linux serve
After your changes are running on your Knative cluster, you can begin using the HTTPS protocol for secure access your deployed Knative services.
In the event a mistake is made during this process and you need to update the cert, you will need to edit the gateway `knative-ingress-gateway`
to switch back to `PASSTHROUGH` mode. Once corrections are made, edit the file again so the gateway will use the new certificates.
+
+## Using an older version of `gitlabktl`
+
+There may be situations where you want to run an older version of `gitlabktl`. This
+requires setting an older version of the `gitlabktl` image in the `.gitlab-ci.yml file.`
+
+To set an older version, add `image:` to the `functions:deploy` block. For example:
+
+```yaml
+functions:deploy:
+ extends: .serverless:deploy:functions
+ environment: production
+ image: registry.gitlab.com/gitlab-org/gitlabktl:0.5.0
+```
+
+Different versions are available by changing the version tag at the end of the registry URL in the
+format `registry.gitlab.com/gitlab-org/gitlabktl:<version>`.
+
+For a full inventory of available `gitlabktl` versions, see the `gitlabktl` project's
+[container registry](https://gitlab.com/gitlab-org/gitlabktl/container_registry).
diff --git a/doc/user/project/deploy_boards.md b/doc/user/project/deploy_boards.md
index b14d7f821bb..98e9188ed9b 100644
--- a/doc/user/project/deploy_boards.md
+++ b/doc/user/project/deploy_boards.md
@@ -14,7 +14,7 @@ With Deploy Boards you can gain more insight into deploys with benefits such as:
- Following a deploy from the start, not just when it's done
- Watching the rollout of a build across multiple servers
-- Finer state detail (Waiting, Deploying, Finished, Unknown)
+- Finer state detail (Succeeded, Running, Failed, Pending, Unknown)
- See [Canary Deployments](canary_deployments.md)
Here's an example of a Deploy Board of the production environment.
diff --git a/doc/user/project/img/service_desk_disabled.png b/doc/user/project/img/service_desk_disabled.png
index edae7e76986..ba11b508682 100644
--- a/doc/user/project/img/service_desk_disabled.png
+++ b/doc/user/project/img/service_desk_disabled.png
Binary files differ
diff --git a/doc/user/project/img/service_desk_enabled.png b/doc/user/project/img/service_desk_enabled.png
index 9c143ff58cd..aee2b53a680 100644
--- a/doc/user/project/img/service_desk_enabled.png
+++ b/doc/user/project/img/service_desk_enabled.png
Binary files differ
diff --git a/doc/user/project/import/gemnasium.md b/doc/user/project/import/gemnasium.md
index f1121745c7e..20614bf5cc5 100644
--- a/doc/user/project/import/gemnasium.md
+++ b/doc/user/project/import/gemnasium.md
@@ -98,7 +98,7 @@ back to both GitLab and GitHub when completed.
1. The result of the job will be visible directly from the pipeline view:
- ![Security Dashboard](../../application_security/security_dashboard/img/pipeline_security_dashboard_v12_3.png)
+ ![Security Dashboard](../../application_security/security_dashboard/img/pipeline_security_dashboard_v12_6.png)
NOTE: **Note:**
If you don't commit very often to your project, you may want to use
diff --git a/doc/user/project/index.md b/doc/user/project/index.md
index c173d3d3e11..29de700af4d 100644
--- a/doc/user/project/index.md
+++ b/doc/user/project/index.md
@@ -200,9 +200,14 @@ When [renaming a user](../profile/index.md#changing-your-username),
## Use your project as a Go package
-Any project can be used as a Go package including private projects in subgroups. To use packages
-hosted in private projects with the `go get` command, use a [`.netrc` file](https://ec.haxx.se/usingcurl-netrc.html)
-and a [personal access token](../profile/personal_access_tokens.md) in the password field.
+Any project can be used as a Go package including private projects in subgroups.
+GitLab responds correctly to `go get` and `godoc.org` discovery requests,
+including the [`go-import`](https://golang.org/cmd/go/#hdr-Remote_import_paths)
+and [`go-source`](https://github.com/golang/gddo/wiki/Source-Code-Links) meta
+tags, respectively. To use packages hosted in private projects with the `go get`
+command, use a [`.netrc` file](https://ec.haxx.se/usingcurl-netrc.html) and a
+[personal access token](../profile/personal_access_tokens.md) in the password
+field.
For example:
diff --git a/doc/user/project/integrations/github.md b/doc/user/project/integrations/github.md
index 9d16748085c..b8b073af2a4 100644
--- a/doc/user/project/integrations/github.md
+++ b/doc/user/project/integrations/github.md
@@ -33,6 +33,9 @@ with `repo:status` access granted:
1. Optionally uncheck **Static status check names** checkbox to disable static status check names.
1. Save or optionally click "Test Settings".
+Once the integration is configured, see [Pipelines for external pull requests](../../../ci/ci_cd_for_external_repos/#pipelines-for-external-pull-requests)
+to configure pipelines to run for open pull requests.
+
#### Static / dynamic status check names
> - Introduced in GitLab 11.5: using static status check names as opt-in option.
diff --git a/doc/user/project/integrations/img/unify_circuit_configuration.png b/doc/user/project/integrations/img/unify_circuit_configuration.png
new file mode 100644
index 00000000000..285d4f92030
--- /dev/null
+++ b/doc/user/project/integrations/img/unify_circuit_configuration.png
Binary files differ
diff --git a/doc/user/project/integrations/jira.md b/doc/user/project/integrations/jira.md
index 874a1092b73..d08c8699eba 100644
--- a/doc/user/project/integrations/jira.md
+++ b/doc/user/project/integrations/jira.md
@@ -20,7 +20,7 @@ Here's how the integration responds when you take the following actions in GitLa
- **Mention a Jira issue ID** in a commit message or MR (merge request).
- GitLab hyperlinks to the Jira issue.
- The Jira issue adds an issue link to the commit/MR in GitLab.
- - The Jira issue adds a comment reflecting the comment made in GitLab, the comment author, and a link to the commit/MR in GitLab.
+ - The Jira issue adds a comment reflecting the comment made in GitLab, the comment author, and a link to the commit/MR in GitLab, unless this commenting to Jira is [disabled](#disabling-comments-on-jira-issues).
- **Mention that a commit or MR 'closes', 'resolves', or 'fixes' a Jira issue ID**. When the commit is made on the project's default branch (usually master) or the change is merged to the default branch:
- GitLab's merge request page displays a note that it "Closed" the Jira issue, with a link to the issue. (Note: Before the merge, an MR will display that it "Closes" the Jira issue.)
- The Jira issue shows the activity and the Jira issue is closed, or otherwise transitioned.
@@ -95,6 +95,15 @@ with all Jira projects in your Jira instance and you'll see the Jira link on the
![Jira service page](img/jira_service_page_v12_2.png)
+### Disabling comments on Jira issues
+
+When you reference a Jira issue, it will always link back to the source commit/MR in GitLab, however, you can control whether GitLab will also cross-post a comment to the Jira issue. That functionality is enabled by default.
+
+To disable the automated commenting on Jira issues:
+
+1. Open the [Integrations page](project_services.md#accessing-the-project-services) and select **Jira**.
+1. In the **Event Action** section, uncheck **Comment**.
+
## Jira issues
By now you should have [configured Jira](#configuring-jira) and enabled the
diff --git a/doc/user/project/integrations/project_services.md b/doc/user/project/integrations/project_services.md
index 315039f82b3..f960c59850d 100644
--- a/doc/user/project/integrations/project_services.md
+++ b/doc/user/project/integrations/project_services.md
@@ -54,6 +54,7 @@ Click on the service links to see further configuration instructions and details
| [Prometheus](prometheus.md) | Monitor the performance of your deployed apps |
| Pushover | Pushover makes it easy to get real-time notifications on your Android device, iPhone, iPad, and Desktop |
| [Redmine](redmine.md) | Redmine issue tracker |
+| [Unify Circuit](unify_circuit.md) | Receive events notifications in Unify Circuit |
| [YouTrack](youtrack.md) | YouTrack issue tracker |
## Push hooks limit
diff --git a/doc/user/project/integrations/prometheus.md b/doc/user/project/integrations/prometheus.md
index d3d4afefb59..3b7309ea7e4 100644
--- a/doc/user/project/integrations/prometheus.md
+++ b/doc/user/project/integrations/prometheus.md
@@ -476,12 +476,12 @@ Prometheus server.
> [Introduced][ce-29691] in GitLab 12.2.
-It is possible to display metrics charts within [GitLab Flavored Markdown](../../markdown.md#gitlab-flavored-markdown-gfm).
+It is possible to display metrics charts within [GitLab Flavored Markdown](../../markdown.md#gitlab-flavored-markdown-gfm). The maximum number of embeds allowed in a GitLab Flavored Markdown field is 100.
NOTE: **Note:**
Requires [Kubernetes](prometheus_library/kubernetes.md) metrics.
-To display a metric chart, include a link of the form `https://<root_url>/<project>/environments/<environment_id>/metrics`.
+To display a metric chart, include a link of the form `https://<root_url>/<project>/-/environments/<environment_id>/metrics`.
A single chart may also be embedded. You can generate a link to the chart via the dropdown located on the right side of the chart:
@@ -520,7 +520,7 @@ The sharing dialog within Grafana provides the link, as highlighted below.
NOTE: **Note:**
For this embed to display correctly the Grafana instance must be available to the target user, either as a public dashboard or on the same network.
-Copy the link and add an image tag as [inline HTML](../../markdown.md#inline-html) in your markdown. You may tweak the query parameters as required. For instance, removing the `&from=` and `&to=` parameters will give you a live chart. Here is example markup for a live chart from GitLab's public dashboard:
+Copy the link and add an image tag as [inline HTML](../../markdown.md#inline-html) in your Markdown. You may tweak the query parameters as required. For instance, removing the `&from=` and `&to=` parameters will give you a live chart. Here is example markup for a live chart from GitLab's public dashboard:
```html
<img src="https://dashboards.gitlab.com/render/d-solo/RZmbBr7mk/gitlab-triage?orgId=1&refresh=30s&var-env=gprd&var-environment=gprd&var-prometheus=prometheus-01-inf-gprd&var-prometheus_app=prometheus-app-01-inf-gprd&var-backend=All&var-type=All&var-stage=main&panelId=1247&width=1000&height=300"/>
@@ -534,7 +534,7 @@ This will render like so:
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/31376) in GitLab 12.5.
-Each project can support integration with one Grafana instance. This configuration allows a user to copy a link to a panel in Grafana, then paste it into a GitLab markdown field. The chart will be rendered in the GitLab chart format.
+Each project can support integration with one Grafana instance. This configuration allows a user to copy a link to a panel in Grafana, then paste it into a GitLab Markdown field. The chart will be rendered in the GitLab chart format.
Prerequisites for embedding from a Grafana instance:
@@ -562,7 +562,7 @@ Prerequisites for embedding from a Grafana instance:
1. If your Prometheus queries use Grafana's custom template variables, ensure that "Template variables" and "Current time range" options are toggled to **On**. Of Grafana global template variables, only `$__interval`, `$__from`, and `$__to` are currently supported.
![Grafana Sharing Dialog](img/grafana_sharing_dialog_v12_5.png)
1. Click **Copy** to copy the URL to the clipboard.
-1. In GitLab, paste the URL into a markdown field and save. The chart will take a few moments to render.
+1. In GitLab, paste the URL into a Markdown field and save. The chart will take a few moments to render.
![GitLab Rendered Grafana Panel](img/rendered_grafana_embed_v12_5.png)
## Troubleshooting
@@ -574,6 +574,7 @@ If the "No data found" screen continues to appear, it could be due to:
are not labeled correctly. To test this, connect to the Prometheus server and
[run a query](prometheus_library/kubernetes.html#metrics-supported), replacing `$CI_ENVIRONMENT_SLUG`
with the name of your environment.
+- You may need to re-add the GitLab predefined common metrics. This can be done by running the [import common metrics rake task](../../../administration/raketasks/maintenance.md#import-common-metrics).
[autodeploy]: ../../../topics/autodevops/index.md#auto-deploy
[kubernetes]: https://kubernetes.io
diff --git a/doc/user/project/integrations/prometheus_library/nginx.md b/doc/user/project/integrations/prometheus_library/nginx.md
index 3c6919561fd..cf46456ca42 100644
--- a/doc/user/project/integrations/prometheus_library/nginx.md
+++ b/doc/user/project/integrations/prometheus_library/nginx.md
@@ -22,7 +22,7 @@ NGINX server metrics are detected, which tracks the pages and content directly s
To get started with NGINX monitoring, you should first enable the [VTS statistics](https://github.com/vozlt/nginx-module-vts)) module for your NGINX server. This will capture and display statistics in an HTML readable form. Next, you should install and configure the [NGINX VTS exporter](https://github.com/hnlq715/nginx-vts-exporter) which parses these statistics and translates them into a Prometheus monitoring endpoint.
-If you are using NGINX as your Kubernetes ingress, GitLab will [automatically detect](nginx_ingress.md) the metrics once enabled in 0.9.0 and later releases.
+If you are using NGINX as your Kubernetes Ingress, GitLab will [automatically detect](nginx_ingress.md) the metrics once enabled in 0.9.0 and later releases.
## Specifying the Environment label
diff --git a/doc/user/project/integrations/unify_circuit.md b/doc/user/project/integrations/unify_circuit.md
new file mode 100644
index 00000000000..e357afb9224
--- /dev/null
+++ b/doc/user/project/integrations/unify_circuit.md
@@ -0,0 +1,27 @@
+# Unify Circuit service
+
+The Unify Circuit service sends notifications from GitLab to the conversation for which the webhook was created.
+
+## On Unify Circuit
+
+1. Open the conversation in which you want to see the notifications.
+1. From the conversation menu, select **Configure Webhooks**.
+1. Click **ADD WEBHOOK** and fill in the name of the bot that will post the messages. Optionally define avatar.
+1. Click **SAVE** and copy the **Webhook URL** of your webhook.
+
+For more information, see the [Unify Circuit documentation for configuring incoming webhooks](https://www.circuit.com/unifyportalfaqdetail?articleId=164448).
+
+## On GitLab
+
+When you have the **Webhook URL** for your Unify Circuit conversation webhook, you can set up the GitLab service.
+
+1. Navigate to the [Integrations page](project_services.md#accessing-the-project-services) in your project's settings, i.e. **Project > Settings > Integrations**.
+1. Select the **Unify Circuit** project service to configure it.
+1. Check the **Active** checkbox to turn on the service.
+1. Check the checkboxes corresponding to the GitLab events you want to receive in Unify Circuit.
+1. Paste the **Webhook URL** that you copied from the Unify Circuit configuration step.
+1. Configure the remaining options and click `Save changes`.
+
+Your Unify Circuit conversation will now start receiving GitLab event notifications as configured.
+
+![Unify Circuit configuration](img/unify_circuit_configuration.png)
diff --git a/doc/user/project/integrations/webhooks.md b/doc/user/project/integrations/webhooks.md
index d0f538a4b52..bb946574371 100644
--- a/doc/user/project/integrations/webhooks.md
+++ b/doc/user/project/integrations/webhooks.md
@@ -47,6 +47,20 @@ and **per project and per group** for **GitLab Enterprise Edition**.
Navigate to the webhooks page by going to your project's
**Settings âž” Integrations**.
+## Maximum number of webhooks (per tier)
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/merge_requests/20730) in GitLab 12.6.
+
+A maximum number of project webhooks applies to each [GitLab.com
+tier](https://about.gitlab.com/pricing/), as shown in the following table:
+
+| Tier | Number of webhooks per project |
+|----------|--------------------------------|
+| Free | 10 |
+| Bronze | 20 |
+| Silver | 30 |
+| Gold | 100 |
+
## Use-cases
- You can set up a webhook in GitLab to send a notification to
@@ -969,7 +983,7 @@ X-Gitlab-Event: Wiki Page Hook
"http_url": "http://example.com/root/awesome-project.git"
},
"wiki": {
- "web_url": "http://example.com/root/awesome-project/wikis/home",
+ "web_url": "http://example.com/root/awesome-project/-/wikis/home",
"git_ssh_url": "git@example.com:root/awesome-project.wiki.git",
"git_http_url": "http://example.com/root/awesome-project.wiki.git",
"path_with_namespace": "root/awesome-project.wiki",
@@ -981,7 +995,7 @@ X-Gitlab-Event: Wiki Page Hook
"format": "markdown",
"message": "adding an awesome page to the wiki",
"slug": "awesome",
- "url": "http://example.com/root/awesome-project/wikis/awesome",
+ "url": "http://example.com/root/awesome-project/-/wikis/awesome",
"action": "create"
}
}
@@ -1076,6 +1090,7 @@ X-Gitlab-Event: Pipeline Hook
"finished_at": null,
"when": "manual",
"manual": true,
+ "allow_failure": false,
"user":{
"name": "Administrator",
"username": "root",
@@ -1097,6 +1112,7 @@ X-Gitlab-Event: Pipeline Hook
"finished_at": null,
"when": "on_success",
"manual": false,
+ "allow_failure": false,
"user":{
"name": "Administrator",
"username": "root",
@@ -1123,6 +1139,7 @@ X-Gitlab-Event: Pipeline Hook
"finished_at": "2016-08-12 15:26:29 UTC",
"when": "on_success",
"manual": false,
+ "allow_failure": false,
"user":{
"name": "Administrator",
"username": "root",
@@ -1149,6 +1166,7 @@ X-Gitlab-Event: Pipeline Hook
"finished_at": "2016-08-12 15:25:26 UTC",
"when": "on_success",
"manual": false,
+ "allow_failure": false,
"user":{
"name": "Administrator",
"username": "root",
@@ -1175,6 +1193,7 @@ X-Gitlab-Event: Pipeline Hook
"finished_at": null,
"when": "on_success",
"manual": false,
+ "allow_failure": false,
"user":{
"name": "Administrator",
"username": "root",
@@ -1218,6 +1237,7 @@ X-Gitlab-Event: Job Hook
"build_duration": null,
"build_allow_failure": false,
"build_failure_reason": "script_failure",
+ "pipeline_id": 2366,
"project_id": 380,
"project_name": "gitlab-org/gitlab-test",
"user": {
@@ -1243,10 +1263,18 @@ X-Gitlab-Event: Job Hook
"git_ssh_url": "git@192.168.64.1:gitlab-org/gitlab-test.git",
"git_http_url": "http://192.168.64.1:3005/gitlab-org/gitlab-test.git",
"visibility_level": 20
+ },
+ "runner": {
+ "active": true,
+ "is_shared": false,
+ "id": 380987,
+ "description": "shared-runners-manager-6.gitlab.com"
}
}
```
+Note that `commit.id` is the id of the pipeline, not the id of the commit.
+
## Image URL rewriting
From GitLab 11.2, simple image references are rewritten to use an absolute URL
@@ -1271,7 +1299,7 @@ Markdown features, like link labels.
## Testing webhooks
-You can trigger the webhook manually. Sample data from the project will be used.Sample data will take from the project.
+You can trigger the webhook manually. Sample data from the project will be used. Sample data will take from the project.
> For example: for triggering `Push Events` your project should have at least one commit.
![Webhook testing](img/webhook_testing.png)
diff --git a/doc/user/project/labels.md b/doc/user/project/labels.md
index d8356abdd1c..e4264615488 100644
--- a/doc/user/project/labels.md
+++ b/doc/user/project/labels.md
@@ -12,7 +12,7 @@ requests are located.
In GitLab, you can create project and group labels:
-- **Project labels** can be assigned to epics, issues and merge requests in that project only.
+- **Project labels** can be assigned to issues and merge requests in that project only.
- **Group labels** can be assigned to any epics, issue and merge request in any project in
that group, or any subgroups of the group.
diff --git a/doc/user/project/members/img/project_members.png b/doc/user/project/members/img/project_members.png
new file mode 100644
index 00000000000..5d44b5d957e
--- /dev/null
+++ b/doc/user/project/members/img/project_members.png
Binary files differ
diff --git a/doc/user/project/members/img/project_members_filter_v12_6.png b/doc/user/project/members/img/project_members_filter_v12_6.png
new file mode 100644
index 00000000000..0207515ded0
--- /dev/null
+++ b/doc/user/project/members/img/project_members_filter_v12_6.png
Binary files differ
diff --git a/doc/user/project/members/index.md b/doc/user/project/members/index.md
index 2f8394eb104..c069882e38f 100644
--- a/doc/user/project/members/index.md
+++ b/doc/user/project/members/index.md
@@ -10,6 +10,31 @@ or import a new user to your project.
To view, edit, add, and remove project's members, go to your
project's **Settings > Members**.
+## Inherited membership
+
+When your project belongs to the group, group members inherit the membership and permission
+level for the project from the group.
+
+![Project members page](img/project_members.png)
+
+From the image above, we can deduce the following things:
+
+- There are 3 members that have access to the project.
+- User0 is a Reporter and has inherited their permissions from group `demo`
+ which contains current project.
+- For User1 there is no indication of a group, therefore they belong directly
+ to the project we're inspecting.
+- Administrator is the Owner and member of **all** groups and for that reason,
+ there is an indication of an ancestor group and inherited Owner permissions.
+
+[From](https://gitlab.com/gitlab-org/gitlab/issues/21727), you can filter this list
+using dropdown on the right side:
+
+![Project members filter](img/project_members_filter_v12_6.png)
+
+- **Show only direct members** displays only User1.
+- **Show only inherited members** displays User0 and Administrator.
+
## Add a user
Right next to **People**, start typing the name or username of the user you
diff --git a/doc/user/project/merge_requests/creating_merge_requests.md b/doc/user/project/merge_requests/creating_merge_requests.md
index 084ebf32a92..1dec58a8bb0 100644
--- a/doc/user/project/merge_requests/creating_merge_requests.md
+++ b/doc/user/project/merge_requests/creating_merge_requests.md
@@ -31,6 +31,8 @@ also appear in the top right of the:
In this case, the merge request will use the most recent branch you pushed changes
to as the source branch, and `master` in the current project as the target.
+You can also [create a new merge request directly from an issue](../repository/web_editor.md#create-a-new-branch-from-an-issue).
+
## Workflow for new merge requests
On the **New Merge Request** page, you can start by filling in the title and description
diff --git a/doc/user/project/merge_requests/img/merge_request_tab_position_v12_6.png b/doc/user/project/merge_requests/img/merge_request_tab_position_v12_6.png
new file mode 100644
index 00000000000..9284e58f456
--- /dev/null
+++ b/doc/user/project/merge_requests/img/merge_request_tab_position_v12_6.png
Binary files differ
diff --git a/doc/user/project/merge_requests/index.md b/doc/user/project/merge_requests/index.md
index 1ca8c882ac7..203a2949243 100644
--- a/doc/user/project/merge_requests/index.md
+++ b/doc/user/project/merge_requests/index.md
@@ -40,6 +40,40 @@ B. Consider you're a web developer writing a webpage for your company's website:
1. Once approved, your merge request is [squashed and merged](squash_and_merge.md), and [deployed to staging with GitLab Pages](https://about.gitlab.com/blog/2016/08/26/ci-deployment-and-environments/)
1. Your production team [cherry picks](cherry_pick_changes.md) the merge commit into production
+## Overview
+
+Merge requests (aka "MRs") display a great deal of information about the changes proposed.
+The body of an MR contains its description, along with its widget (displaying information
+about CI/CD pipelines, when present), followed by the discussion threads of the people
+collaborating with that MR.
+
+MRs also contain navigation tabs from which you can see the discussion happening on the thread,
+the list of commits, the list of pipelines and jobs, the code changes and inline code reviews.
+
+## Merge request navigation tabs at the top
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/33813) in GitLab 12.6. This positioning is experimental.
+
+So far, the navigation tabs present in merge requests to display **Discussion**,
+**Commits**, **Pipelines**, and **Changes** were located after the merge request
+widget.
+
+To facilitate this navigation without having to scroll up and down through the page
+to find these tabs, based on user feedback, we are experimenting with a new positioning
+of these tabs. They are now located at the top of the merge request, with a new
+**Overview** tab, containing the description of the merge request followed by the
+widget. Next to **Overview**, you can find **Pipelines**, **Commits**, and **Changes**.
+
+![Merge request tab positions](img/merge_request_tab_position_v12_6.png)
+
+Please note this change is currently behind a feature flag which is enabled by default. For
+self-managed instances, it can be disabled through the Rails console by a GitLab
+administrator with the following command:
+
+```ruby
+Feature.disable(:mr_tabs_position)
+```
+
## Creating merge requests
While making changes to files in the `master` branch of a repository is possible, it is not
diff --git a/doc/user/project/merge_requests/merge_request_dependencies.md b/doc/user/project/merge_requests/merge_request_dependencies.md
index c99e6663093..8b8aa30e75a 100644
--- a/doc/user/project/merge_requests/merge_request_dependencies.md
+++ b/doc/user/project/merge_requests/merge_request_dependencies.md
@@ -9,6 +9,8 @@ type: reference, concepts
> - [Renamed](https://gitlab.com/gitlab-org/gitlab/merge_requests/17291) from
"Cross-project dependencies" to "Merge Requests dependencies" in
[GitLab Premium](https://about.gitlab.com/pricing/) 12.4.
+> - Intra-project MR dependencies were [introduced](https://gitlab.com/gitlab-org/gitlab/merge_requests/16799)
+in [GitLab Premium](https://about.gitlab.com/pricing/) 12.4.
Merge request dependencies allows a required order of merging
between merge requests to be expressed. If a merge request "depends on" another,
@@ -20,10 +22,6 @@ only enforced for the dependent merge request. A merge request in a **CORE** or
**STARTER** project can be a dependency of a **PREMIUM** merge request, but not
vice-versa.
-NOTE: **Note:**
-A merge request can only depend on merge requests in a different project. Two
-merge requests in the same project cannot depend on each other.
-
## Use cases
- Ensure changes to a library are merged before changes to a project that
diff --git a/doc/user/project/merge_requests/merge_when_pipeline_succeeds.md b/doc/user/project/merge_requests/merge_when_pipeline_succeeds.md
index 6630179ea47..e1ac8b2183c 100644
--- a/doc/user/project/merge_requests/merge_when_pipeline_succeeds.md
+++ b/doc/user/project/merge_requests/merge_when_pipeline_succeeds.md
@@ -69,7 +69,7 @@ For example, to that on merge requests there is always a passing job even though
```yaml
enable_merge:
- only: merge_requests
+ only: [merge_requests]
script:
- echo true
```
diff --git a/doc/user/project/merge_requests/reviewing_and_managing_merge_requests.md b/doc/user/project/merge_requests/reviewing_and_managing_merge_requests.md
index f693b0b1e72..97c16a9794d 100644
--- a/doc/user/project/merge_requests/reviewing_and_managing_merge_requests.md
+++ b/doc/user/project/merge_requests/reviewing_and_managing_merge_requests.md
@@ -68,7 +68,7 @@ list.
By default, the diff shows only the parts of a file which are changed.
To view more unchanged lines above or below a change click on the
-**Expand up** or **Expand down** icons. You can also click on **Show all lines**
+**Expand up** or **Expand down** icons. You can also click on **Show unchanged lines**
to expand the entire file.
![Incrementally expand merge request diffs](img/incrementally_expand_merge_request_diffs_v12_2.png)
diff --git a/doc/user/project/milestones/index.md b/doc/user/project/milestones/index.md
index 21a4e3d8ead..eacc1fd12dc 100644
--- a/doc/user/project/milestones/index.md
+++ b/doc/user/project/milestones/index.md
@@ -68,8 +68,8 @@ If you are expanding from a few projects to a larger number of projects within t
From the project milestone list page, you can promote a project milestone to a group milestone. This will merge all project milestones across all projects in this group with the same name into a single group milestones. All issues and merge requests that previously were assigned one of these project milestones will now be assigned the new group milestones. This action cannot be reversed and the changes are permanent.
->**Note:**
-Not all features on the project milestone view are available on the group milestone view. If you promote a project milestone to a group milestone, you will lose these features. See [Milestone view](#milestone-view) to see which features are missing from the group milestone view.
+CAUTION: **Caution:**
+From GitLab 12.4 and earlier, some information is lost when you promote a project milestone to a group milestone. Not all features on the project milestone view are available on the group milestone view. If you promote a project milestone to a group milestone, you will lose these features. See [Milestone view](#milestone-view) to see which features are missing from the group milestone view.
![Promote milestone](img/milestones_promote_milestone.png)
@@ -105,14 +105,17 @@ The milestone view shows the title and description.
There are also tabs below these that show the following:
-- Issues
- Shows all issues assigned to the milestone. These are displayed in three columns: Unstarted issues, ongoing issues, and completed issues.
-- Merge requests
- Shows all merge requests assigned to the milestone. These are displayed in four columns: Work in progress merge requests, waiting for merge, rejected, and closed.
-- Participants
- Shows all assignees of issues assigned to the milestone.
-- Labels
- Shows all labels that are used in issues assigned to the milestone.
+- **Issues**: Shows all issues assigned to the milestone. These are displayed in three columns named:
+ - Unstarted Issues (open and unassigned)
+ - Ongoing Issues (open and assigned)
+ - Completed Issues (closed)
+- **Merge Requests**: Shows all merge requests assigned to the milestone. These are displayed in four columns named:
+ - Work in progress (open and unassigned)
+ - Waiting for merge (open and unassigned)
+ - Rejected (closed)
+ - Merged
+- **Participants**: Shows all assignees of issues assigned to the milestone.
+- **Labels**: Shows all labels that are used in issues assigned to the milestone.
### Project Burndown Charts **(STARTER)**
diff --git a/doc/user/project/operations/error_tracking.md b/doc/user/project/operations/error_tracking.md
index 04eda026bc3..912d7fdbef5 100644
--- a/doc/user/project/operations/error_tracking.md
+++ b/doc/user/project/operations/error_tracking.md
@@ -32,7 +32,7 @@ GitLab provides an easy way to connect Sentry to your project:
1. Click **Save changes** for the changes to take effect.
1. You can now visit **Operations > Error Tracking** in your project's sidebar to [view a list](#error-tracking-list) of Sentry errors.
-### Enabling Gitlab issues links
+### Enabling GitLab issues links
You may also want to enable Sentry's GitLab integration by following the steps in the [Sentry documentation](https://docs.sentry.io/workflow/integrations/global-integrations/#gitlab)
@@ -42,9 +42,9 @@ NOTE: **Note:**
You will need at least Reporter [permissions](../../permissions.md) to view the Error Tracking list.
The Error Tracking list may be found at **Operations > Error Tracking** in your project's sidebar.
-Errors can be filtered by title.
+Errors can be filtered by title or sorted by Frequency, First Seen or Last Seen. Errors are always sorted in descending order by the field specified.
-![Error Tracking list](img/error_tracking_list.png)
+![Error Tracking list](img/error_tracking_list_v12_6.png)
## Error Details
@@ -52,7 +52,13 @@ From error list, users can navigate to the error details page by clicking the ti
This page has:
-- A link to Sentry issue.
-- A full stack trace along with other details.
+- A link to the Sentry issue.
+- Other details about the issue, including a full stack trace.
-![Error Details](img/error_details_v12_5.png)
+If the error has not been linked to an existing GitLab issue, a 'Create Issue' button will be visible:
+
+![Error Details without Issue Link](img/error_details_v12_6.png)
+
+If a link does exist, it will be shown in the details and the 'Create Issue' button will be hidden:
+
+![Error Details with Issue Link](img/error_details_with_issue_v12_6.png)
diff --git a/doc/user/project/operations/feature_flags.md b/doc/user/project/operations/feature_flags.md
index c05f8fa8bc4..723f9d69995 100644
--- a/doc/user/project/operations/feature_flags.md
+++ b/doc/user/project/operations/feature_flags.md
@@ -75,7 +75,7 @@ To define specs for each environment:
1. Set the status and rollout strategy of the additional spec. This status and rollout strategy combination takes precedence over the default spec since we always use the most specific match available.
1. Click **Create feature flag** or **Update feature flag**.
-![Feature flag specs list](img/specs_list.png)
+![Feature flag specs list](img/specs_list_v12_6.png)
NOTE: **NOTE**
We'd highly recommend you to use the [Environment](../../../ci/environments.md)
@@ -119,17 +119,15 @@ CAUTION: **Caution:**
If this strategy is selected, then the Unleash client **must** be given a user
ID for the feature to be enabled. See the [Ruby example](#ruby-application-example) below.
-### Target users strategy
+#### User IDs
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/8240) in GitLab 12.2.
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/8240) in GitLab 12.2. [Updated](https://gitlab.com/gitlab-org/gitlab/issues/34363) to be defined per environment in GitLab 12.6.
A feature flag may be enabled for a list of target users. It is implemented
using the Unleash [`userWithId`](https://unleash.github.io/docs/activation_strategy#userwithid)
activation strategy.
-The feature will always be enabled for all users in the list across all environments even if the matching environment spec **Status** is disabled.
-
-![Feature flag target users](img/target_users_v12_2.png)
+User IDs should be a comma separated list of values. For example, `user@example.com, user2@example.com`, or `username1,username2,username3`, etc.
CAUTION: **Caution:**
The Unleash client **must** be given a user ID for the feature to be enabled for
diff --git a/doc/user/project/operations/img/error_details_v12_6.png b/doc/user/project/operations/img/error_details_v12_6.png
new file mode 100644
index 00000000000..b9152bd2c11
--- /dev/null
+++ b/doc/user/project/operations/img/error_details_v12_6.png
Binary files differ
diff --git a/doc/user/project/operations/img/error_details_with_issue_v12_6.png b/doc/user/project/operations/img/error_details_with_issue_v12_6.png
new file mode 100644
index 00000000000..963b70bd1e4
--- /dev/null
+++ b/doc/user/project/operations/img/error_details_with_issue_v12_6.png
Binary files differ
diff --git a/doc/user/project/operations/img/error_tracking_list.png b/doc/user/project/operations/img/error_tracking_list.png
deleted file mode 100644
index 79b464e021e..00000000000
--- a/doc/user/project/operations/img/error_tracking_list.png
+++ /dev/null
Binary files differ
diff --git a/doc/user/project/operations/img/error_tracking_list_v12_6.png b/doc/user/project/operations/img/error_tracking_list_v12_6.png
new file mode 100644
index 00000000000..b99c83c14d3
--- /dev/null
+++ b/doc/user/project/operations/img/error_tracking_list_v12_6.png
Binary files differ
diff --git a/doc/user/project/operations/img/specs_list.png b/doc/user/project/operations/img/specs_list.png
deleted file mode 100644
index 43d069c09ce..00000000000
--- a/doc/user/project/operations/img/specs_list.png
+++ /dev/null
Binary files differ
diff --git a/doc/user/project/operations/img/specs_list_v12_6.png b/doc/user/project/operations/img/specs_list_v12_6.png
new file mode 100644
index 00000000000..ea429802a40
--- /dev/null
+++ b/doc/user/project/operations/img/specs_list_v12_6.png
Binary files differ
diff --git a/doc/user/project/operations/img/target_users_v12_2.png b/doc/user/project/operations/img/target_users_v12_2.png
deleted file mode 100644
index c88d2b7be97..00000000000
--- a/doc/user/project/operations/img/target_users_v12_2.png
+++ /dev/null
Binary files differ
diff --git a/doc/user/project/operations/index.md b/doc/user/project/operations/index.md
index 2da9c3e70cf..df7ce61525e 100644
--- a/doc/user/project/operations/index.md
+++ b/doc/user/project/operations/index.md
@@ -6,6 +6,7 @@ your applications:
- Collect [Prometheus metrics](../integrations/prometheus_library/index.md).
- Deploy to different [environments](../../../ci/environments.md).
- Connect your project to a [Kubernetes cluster](../clusters/index.md).
+- Manage your infrastructure with [Infrastructure as Code](../../infrastructure/index.md) approaches.
- Discover and view errors generated by your applications with [Error Tracking](error_tracking.md).
- Create, toggle, and remove [Feature Flags](feature_flags.md). **(PREMIUM)**
- [Trace](tracing.md) the performance and health of a deployed application. **(ULTIMATE)**
diff --git a/doc/user/project/pages/getting_started/fork_sample_project.md b/doc/user/project/pages/getting_started/fork_sample_project.md
index ac1a29ca2a0..9c58189e984 100644
--- a/doc/user/project/pages/getting_started/fork_sample_project.md
+++ b/doc/user/project/pages/getting_started/fork_sample_project.md
@@ -41,7 +41,7 @@ forking (copying) a [sample project from the most popular Static Site Generators
and click **Run pipeline** to trigger GitLab CI/CD to build and deploy your
site to the server.
1. Once the pipeline has finished successfully, find the link to visit your
- website from your project's **Settings > Pages**. It can take aproximatelly
+ website from your project's **Settings > Pages**. It can take approximately
30 minutes to be deployed.
You can also take some **optional** further steps:
diff --git a/doc/user/project/pages/pages_access_control.md b/doc/user/project/pages/pages_access_control.md
index cd715c6e3b9..1d8119cfe87 100644
--- a/doc/user/project/pages/pages_access_control.md
+++ b/doc/user/project/pages/pages_access_control.md
@@ -11,7 +11,7 @@ You can enable Pages access control on your project, so that only
[members of your project](../../permissions.md#project-members-permissions)
(at least Guest) can access your website:
-1. Navigate to your project's **Settings > General > Permissions**.
+1. Navigate to your project's **Settings > General** and expand **Visibility, project features, permissions**.
1. Toggle the **Pages** button to enable the access control.
NOTE: **Note:**
diff --git a/doc/user/project/pipelines/job_artifacts.md b/doc/user/project/pipelines/job_artifacts.md
index 794c3030c6a..4ea46399635 100644
--- a/doc/user/project/pipelines/job_artifacts.md
+++ b/doc/user/project/pipelines/job_artifacts.md
@@ -103,8 +103,12 @@ It is possible to download the latest artifacts of a job via a well known URL
so you can use it for scripting purposes.
NOTE: **Note:**
-The latest artifacts are considered as the artifacts created by jobs in the
-latest pipeline that succeeded for the specific ref.
+The latest artifacts are created by jobs in the **most recent** successful pipeline
+for the specific ref. If you run two types of pipelines for the same ref, the latest
+artifact will be determined by timing. For example, if a branch pipeline created
+by merging a merge request runs at the same time as a scheduled pipeline, the
+latest artifact will be from the pipeline that completed most recently.
+
Artifacts for other pipelines can be accessed with direct access to them.
The structure of the URL to download the whole artifacts archive is the following:
diff --git a/doc/user/project/pipelines/settings.md b/doc/user/project/pipelines/settings.md
index 6480c7e0af9..ca888c69b37 100644
--- a/doc/user/project/pipelines/settings.md
+++ b/doc/user/project/pipelines/settings.md
@@ -67,26 +67,46 @@ For information about setting a maximum artifact size for a project, see
## Custom CI configuration path
-> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/12509) in GitLab 9.4.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/12509) in GitLab 9.4.
+> - [Support for external `.gitlab-ci.yml` locations](https://gitlab.com/gitlab-org/gitlab/issues/14376) introduced in GitLab 12.6.
By default we look for the `.gitlab-ci.yml` file in the project's root
-directory. If you require a different location **within** the repository,
-you can set a custom path that will be used to look up the configuration file,
-this path should be **relative** to the root.
+directory. If needed, you can specify an alternate path and file name, including locations outside the project.
-Here are some valid examples:
+To customize the path:
-- `.gitlab-ci.yml`
+1. Go to the project's **Settings > CI / CD**.
+1. Expand the **General pipelines** section.
+1. Provide a value in the **Custom CI configuration path** field.
+1. Click **Save changes**.
+
+If the CI configuration is stored within the repository in a non-default
+location, the path must be relative to the root directory. Examples of valid
+paths and file names include:
+
+- `.gitlab-ci.yml` (default)
- `.my-custom-file.yml`
- `my/path/.gitlab-ci.yml`
- `my/path/.my-custom-file.yml`
-The path can be customized at a project level. To customize the path:
+If the CI configuration will be hosted on an external site, the URL link must end with `.yml`:
-1. Go to the project's **Settings > CI / CD**.
-1. Expand the **General pipelines** section.
-1. Provide a value in the **Custom CI configuration path** field.
-1. Click **Save changes**.
+- `http://example.com/generate/ci/config.yml`
+
+If the CI configuration will be hosted in a different project within GitLab, the path must be relative
+to the root directory in the other project, with the group and project name added to the end:
+
+- `.gitlab-ci.yml@mygroup/another-project`
+- `my/path/.my-custom-file.yml@mygroup/another-project`
+
+Hosting the configuration file in a separate project allows stricter control of the
+configuration file. For example:
+
+- Create a public project to host the configuration file.
+- Give write permissions on the project only to users who are allowed to edit the file.
+
+Other users and projects will be able to access the configuration file without being
+able to edit it.
## Test coverage parsing
@@ -132,6 +152,9 @@ Pipeline visibility is determined by:
- Your current [user access level](../../permissions.md).
- The **Public pipelines** project setting under your project's **Settings > CI/CD > General pipelines**.
+NOTE: **Note:**
+If the project visibility is set to **Private**, the [**Public pipelines** setting will have no effect](../../../ci/enable_or_disable_ci.md#per-project-user-setting).
+
This also determines the visibility of these related features:
- Job output logs
diff --git a/doc/user/project/push_options.md b/doc/user/project/push_options.md
index 8952f845b96..11789f7d497 100644
--- a/doc/user/project/push_options.md
+++ b/doc/user/project/push_options.md
@@ -31,19 +31,25 @@ git push -o <push_option>
## Push options for GitLab CI/CD
-If the `ci.skip` push option is used, the commit will be pushed, but no [CI pipeline](../../ci/pipelines.md)
-will be created.
+You can use push options to skip a CI/CD pipeline, or pass environment variables.
-| Push option | Description |
-| ----------- | ----------- |
-| `ci.skip` | Do not create a CI pipeline for the latest push. |
+| Push option | Description |
+| ------------------------------ | ------------------------------------------------------------------------------------------- |
+| `ci.skip` | Do not create a CI pipeline for the latest push. |
+| `ci.variable="<name>=<value>"` | Provide [environment variables](../../ci/variables/README.md) to be used in a CI pipeline, if one is created due to the push. |
-For example:
+An example of using `ci.skip`:
```shell
git push -o ci.skip
```
+An example of passing some environment variables for a pipeline:
+
+```shell
+git push -o ci.variable="MAX_RETRIES=10" -o ci.variable="MAX_TIME=600"
+```
+
## Push options for merge requests
You can use Git push options to perform certain actions for merge requests at the same
diff --git a/doc/user/project/quick_actions.md b/doc/user/project/quick_actions.md
index 61bc66a6a69..97ae429a33f 100644
--- a/doc/user/project/quick_actions.md
+++ b/doc/user/project/quick_actions.md
@@ -8,9 +8,9 @@ Quick actions are textual shortcuts for common actions on issues, epics, merge r
and commits that are usually done by clicking buttons or dropdowns in GitLab's UI.
You can enter these commands while creating a new issue or merge request, or
in comments of issues, epics, merge requests, and commits. Each command should be
-on a separate line in order to be properly detected and executed. Once executed,
+on a separate line in order to be properly detected and executed.
-> From [GitLab 12.1](https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/26672), an alert is displayed when a quick action is successfully applied.
+> From [GitLab 12.1](https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/26672), once an action is executed, an alert is displayed when a quick action is successfully applied.
## Quick Actions for issues, merge requests and epics
@@ -60,7 +60,7 @@ The following quick actions are applicable to descriptions, discussions and thre
| `/remove_epic` | ✓ | | | Remove from epic **(ULTIMATE)** |
| `/promote` | ✓ | | | Promote issue to epic **(ULTIMATE)** |
| `/confidential` | ✓ | | | Make confidential |
-| `/duplicate <#issue>` | ✓ | | | Mark this issue as a duplicate of another issue |
+| `/duplicate <#issue>` | ✓ | | | Mark this issue as a duplicate of another issue and relate them for **(STARTER)** |
| `/create_merge_request <branch name>` | ✓ | | | Create a new merge request starting from the current issue |
| `/relate #issue1 #issue2` | ✓ | | | Mark issues as related **(STARTER)** |
| `/move <path/to/project>` | ✓ | | | Move this issue to another project |
diff --git a/doc/user/project/releases/img/edit_release_page_v12_5.png b/doc/user/project/releases/img/edit_release_page_v12_6.png
index 8b9c502a2ef..8b9c502a2ef 100644
--- a/doc/user/project/releases/img/edit_release_page_v12_5.png
+++ b/doc/user/project/releases/img/edit_release_page_v12_6.png
Binary files differ
diff --git a/doc/user/project/releases/img/release_edit_button_v12_5.png b/doc/user/project/releases/img/release_edit_button_v12_6.png
index f60b0ecb1be..f60b0ecb1be 100644
--- a/doc/user/project/releases/img/release_edit_button_v12_5.png
+++ b/doc/user/project/releases/img/release_edit_button_v12_6.png
Binary files differ
diff --git a/doc/user/project/releases/index.md b/doc/user/project/releases/index.md
index 9b7b20be98f..58e028c89be 100644
--- a/doc/user/project/releases/index.md
+++ b/doc/user/project/releases/index.md
@@ -32,7 +32,7 @@ your users to quickly scan the differences between each one you publish.
NOTE: **Note:**
[Git's tagging messages](https://git-scm.com/book/en/v2/Git-Basics-Tagging) and
-Release descriptions are unrelated. Description supports [markdown](../../markdown.md).
+Release descriptions are unrelated. Description supports [Markdown](../../markdown.md).
### Release assets
@@ -92,17 +92,17 @@ project.
## Editing a release
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/26016) in GitLab 12.5.
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/26016) in GitLab 12.6.
To edit the details of a release, navigate to **Project overview > Releases** and click
the edit button (pencil icon) in the top-right corner of the release you want to modify.
-![A release with an edit button](img/release_edit_button_v12_5.png)
+![A release with an edit button](img/release_edit_button_v12_6.png)
This will bring you to the **Edit Release** page, from which you can
change some of the release's details.
-![Edit release page](img/edit_release_page_v12_5.png)
+![Edit release page](img/edit_release_page_v12_6.png)
Currently, it is only possible to edit the release title and notes.
To change other release information, such as its tag, associated
@@ -126,7 +126,7 @@ following modal window will be then displayed, from which you can select **New r
## Add release notes to Git tags
You can add release notes to any Git tag using the notes feature. Release notes
-behave like any other markdown form in GitLab so you can write text and
+behave like any other Markdown form in GitLab so you can write text and
drag and drop files to it. Release notes are stored in GitLab's database.
There are several ways to add release notes:
diff --git a/doc/user/project/repository/forking_workflow.md b/doc/user/project/repository/forking_workflow.md
index 8756760fe4b..4cf0e458a53 100644
--- a/doc/user/project/repository/forking_workflow.md
+++ b/doc/user/project/repository/forking_workflow.md
@@ -37,6 +37,10 @@ After the forking is done, you can start working on the newly created
repository. There, you will have full [Owner](../../permissions.md)
access, so you can set it up as you please.
+CAUTION: **CAUTION:**
+From GitLab 12.6 onwards, if the [visibility of an upstream project is reduced](../../../public_access/public_access.md#reducing-visibility)
+in any way, the fork relationship with all its forks will be removed.
+
## Merging upstream
Once you are ready to send your code back to the main project, you need
diff --git a/doc/user/project/repository/git_blame.md b/doc/user/project/repository/git_blame.md
new file mode 100644
index 00000000000..454b3f86df9
--- /dev/null
+++ b/doc/user/project/repository/git_blame.md
@@ -0,0 +1,50 @@
+---
+type: reference, howto
+description: "Documentation on Git file blame."
+---
+
+# Git file blame
+
+> [Introduced](https://git.sphere.ly/staff/publicgitlab/commit/39c657930625ddc3ac8a921f01ffc83acadce68f) in GitLab 2.5
+
+[Git blame](https://git-scm.com/docs/git-blame) provides more information
+about every line in a file, including the last modified time, author, and
+commit hash.
+
+You can find the **Blame** button with each file in a project.
+
+![File blame button](img/file_blame_button_v12_6.png "Blame button")
+
+When you select the **Blame** button, you'll see a screen with the
+noted information:
+
+![Git blame output](img/file_blame_output_v12_6.png "Blame button output")
+
+If you hover over a commit in the UI, you'll see a precise date and time
+for that commit.
+
+## Associated `git` command
+
+If you're running `git` from the command line, the equivalent command is
+`git blame <filename>`. For example, if you want to find `blame` information
+about a `README.md` file in the local directory, run the following command:
+
+```bash
+git blame README.md
+```
+
+You'll see output similar to the following, which includes the commit time
+in UTC format:
+
+```bash
+62e2353a (Achilleas Pipinellis 2019-07-11 14:52:18 +0300 1) [![build status](https://gitlab.com/gitlab-org/gitlab-docs/badges/master/build.svg)](https://gitlab.com/gitlab-com/gitlab-docs/commits/master)
+fb0fc7d6 (Achilleas Pipinellis 2016-11-07 22:21:22 +0100 2)
+^764ca75 (Connor Shea 2016-10-05 23:40:24 -0600 3) # GitLab Documentation
+^764ca75 (Connor Shea 2016-10-05 23:40:24 -0600 4)
+0e62ed6d (Mike Jang 2019-11-26 21:44:53 +0000 5) This project hosts the repository used to generate the GitLab
+0e62ed6d (Mike Jang 2019-11-26 21:44:53 +0000 6) documentation website and deployed to https://docs.gitlab.com. It uses the
+```
+
+## File blame through the API
+
+You can also get this information over the [Git file blame REST API](../../../api/repository_files.md#get-file-blame-from-repository).
diff --git a/doc/user/project/repository/git_history.md b/doc/user/project/repository/git_history.md
new file mode 100644
index 00000000000..9cd3d0d4ed0
--- /dev/null
+++ b/doc/user/project/repository/git_history.md
@@ -0,0 +1,67 @@
+---
+type: reference, howto
+description: "Documentation on Git file history."
+---
+
+# Git file history
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/blob/9ba1224867665844b117fa037e1465bb706b3685/app/controllers/commits_controller.rb) in GitLab 0.8.0
+
+Git file History provides information about the commit history associated
+with a file.
+
+You can find the **History** button with each file in a project.
+
+![File history button](img/file_history_button_v12_6.png "History button")
+
+When you select the **History** button, you'll see a screen with the
+noted information:
+
+![Git log output](img/file_history_output_v12_6.png "History button output")
+
+If you hover over a commit in the UI, you'll see a precise date and time
+that commit was last modified.
+
+## Associated `git` command
+
+If you're running `git` from the command line, the equivalent command
+is `git log <filename>`. For example, if you want to find `history`
+information about a `README.md` file in the local directory, run the
+following command:
+
+```bash
+git log README.md
+```
+
+You'll see output similar to the following, which includes the commit
+time in UTC format:
+
+```bash
+commit 0e62ed6d9f39fa9bedf7efc6edd628b137fa781a
+Author: Mike Jang <mjang@gitlab.com>
+Date: Tue Nov 26 21:44:53 2019 +0000
+
+ Deemphasize GDK as a doc build tool
+
+commit 418879420b1e3a4662067bd07b64bb6988654697
+Author: Marcin Sedlak-Jakubowski <msedlakjakubowski@gitlab.com>
+Date: Mon Nov 4 19:58:27 2019 +0100
+
+ Fix typo
+
+commit 21cc1fef11349417ed515557748369cfb235fc81
+Author: Jacques Erasmus <jerasmus@gitlab.com>
+Date: Mon Oct 14 22:13:40 2019 +0000
+
+ Add support for modern JS
+
+ Added rollup to the project
+
+commit 2f5e895aebfa5678e51db303b97de56c51e3cebe
+Author: Achilleas Pipinellis <axil@gitlab.com>
+Date: Fri Sep 13 14:03:01 2019 +0000
+
+ Remove gitlab-foss Git URLs as we don't need them anymore
+
+ [ci skip]
+```
diff --git a/doc/user/project/repository/img/file_blame_button_v12_6.png b/doc/user/project/repository/img/file_blame_button_v12_6.png
new file mode 100644
index 00000000000..b5a18e6726f
--- /dev/null
+++ b/doc/user/project/repository/img/file_blame_button_v12_6.png
Binary files differ
diff --git a/doc/user/project/repository/img/file_blame_output_v12_6.png b/doc/user/project/repository/img/file_blame_output_v12_6.png
new file mode 100644
index 00000000000..4aca40353d5
--- /dev/null
+++ b/doc/user/project/repository/img/file_blame_output_v12_6.png
Binary files differ
diff --git a/doc/user/project/repository/img/file_history_button_v12_6.png b/doc/user/project/repository/img/file_history_button_v12_6.png
new file mode 100644
index 00000000000..b5a18e6726f
--- /dev/null
+++ b/doc/user/project/repository/img/file_history_button_v12_6.png
Binary files differ
diff --git a/doc/user/project/repository/img/file_history_output_v12_6.png b/doc/user/project/repository/img/file_history_output_v12_6.png
new file mode 100644
index 00000000000..9e9855203af
--- /dev/null
+++ b/doc/user/project/repository/img/file_history_output_v12_6.png
Binary files differ
diff --git a/doc/user/project/repository/img/web_editor_new_branch_from_issue.png b/doc/user/project/repository/img/web_editor_new_branch_from_issue.png
deleted file mode 100644
index 4e156b8adc8..00000000000
--- a/doc/user/project/repository/img/web_editor_new_branch_from_issue.png
+++ /dev/null
Binary files differ
diff --git a/doc/user/project/repository/img/web_editor_new_branch_from_issue_create_button_v12_6.png b/doc/user/project/repository/img/web_editor_new_branch_from_issue_create_button_v12_6.png
new file mode 100644
index 00000000000..f40cc187b46
--- /dev/null
+++ b/doc/user/project/repository/img/web_editor_new_branch_from_issue_create_button_v12_6.png
Binary files differ
diff --git a/doc/user/project/repository/img/web_editor_new_branch_from_issue_v_12_6.png b/doc/user/project/repository/img/web_editor_new_branch_from_issue_v_12_6.png
new file mode 100644
index 00000000000..d5a92546d40
--- /dev/null
+++ b/doc/user/project/repository/img/web_editor_new_branch_from_issue_v_12_6.png
Binary files differ
diff --git a/doc/user/project/repository/index.md b/doc/user/project/repository/index.md
index 5a6e011220c..fc422bb5aba 100644
--- a/doc/user/project/repository/index.md
+++ b/doc/user/project/repository/index.md
@@ -34,7 +34,7 @@ You can either use the user interface (UI), or connect your local computer
with GitLab [through the command line](../../../gitlab-basics/command-line-commands.md#start-working-on-your-project).
To configure [GitLab CI/CD](../../../ci/README.md) to build, test, and deploy
-you code, add a file called [`.gitlab-ci.yml`](../../../ci/quick_start/README.md)
+your code, add a file called [`.gitlab-ci.yml`](../../../ci/quick_start/README.md)
to your repository's root.
**From the user interface:**
@@ -48,6 +48,8 @@ it's easier to do so [via GitLab UI](web_editor.md):
- [File templates](web_editor.md#template-dropdowns)
- [Create a directory](web_editor.md#create-a-directory)
- [Start a merge request](web_editor.md#tips)
+- [Find file history](git_history.md)
+- [Identify changes by line (Git blame)](git_blame.md)
**From the command line:**
diff --git a/doc/user/project/repository/repository_mirroring.md b/doc/user/project/repository/repository_mirroring.md
index a682983ab83..993c96d2ae4 100644
--- a/doc/user/project/repository/repository_mirroring.md
+++ b/doc/user/project/repository/repository_mirroring.md
@@ -143,6 +143,7 @@ Changes pushed to the upstream repository will be pulled into the GitLab reposit
CAUTION: **Caution:**
If you do manually update a branch in the GitLab repository, the branch will become diverged from
upstream and GitLab will no longer automatically update this branch to prevent any changes from being lost.
+Also note that deleted branches and tags in the upstream repository will not be reflected in the GitLab repository.
### How it works
@@ -247,6 +248,10 @@ If you need to change the key at any time, you can remove and re-add the mirror
to generate a new key. You'll have to update the other repository with the new
key to keep the mirror running.
+NOTE: **Note:**
+The generated keys are stored in the GitLab database, not in the filesystem. Therefore,
+SSH public key authentication for mirrors cannot be used in a pre-receive hook.
+
### Overwrite diverged branches **(STARTER)**
> [Introduced](https://gitlab.com/gitlab-org/gitlab/merge_requests/4559) in [GitLab Starter](https://about.gitlab.com/pricing/) 10.6.
@@ -362,6 +367,7 @@ proxy_push()
branch=$(expr "$refname" : "refs/heads/\(.*\)")
if [ "$whitelisted" = "$branch" ]; then
+ unset GIT_QUARANTINE_PATH # handle https://git-scm.com/docs/git-receive-pack#_quarantine_environment
error="$(git push --quiet $TARGET_REPO $NEWREV:$REFNAME 2>&1)"
fail=$?
@@ -396,6 +402,15 @@ else
fi
```
+Note that this sample has a few limitations:
+
+- This example may not work verbatim for your use case and might need modification.
+ - It does not regard different types of authentication mechanisms for the mirror.
+ - It does not work with forced updates (rewriting history).
+ - Only branches that match the `whitelisted` patterns will be proxy pushed.
+- The script circumvents the Git hook quarantine environment because the update of `$TARGET_REPO`
+ is seen as a ref update and Git will complain about it.
+
### Mirroring with Perforce Helix via Git Fusion **(STARTER)**
CAUTION: **Warning:**
diff --git a/doc/user/project/repository/web_editor.md b/doc/user/project/repository/web_editor.md
index 944720c3863..f41ff12d0a4 100644
--- a/doc/user/project/repository/web_editor.md
+++ b/doc/user/project/repository/web_editor.md
@@ -95,20 +95,31 @@ There are multiple ways to create a branch from GitLab's web interface.
In case your development workflow dictates to have an issue for every merge
request, you can quickly create a branch right on the issue page which will be
-tied with the issue itself. You can see a **New branch** button after the issue
-description, unless there is already a branch with the same name or a referenced
-merge request.
+tied with the issue itself. You can see a **Create merge request** dropdown
+below the issue description unless there is already a branch with the same
+name or a referenced merge request.
-![New Branch Button](img/web_editor_new_branch_from_issue.png)
+![Create Button](img/web_editor_new_branch_from_issue_create_button_v12_6.png)
-Once you click it, a new branch will be created that diverges from the default
+This dropdown contains the options **Create merge request and branch** and **Create branch**.
+
+![New Branch Button](img/web_editor_new_branch_from_issue_v_12_6.png)
+
+Once you choose one of these options, a new branch or branch and merge request
+will be created, based on the default
branch of your project, by default `master`. The branch name will be based on
the title of the issue and as a prefix, it will have its internal ID. Thus, the example
-screenshot above will yield a branch named
-`23177-add-support-for-rich-references-to-referables`.
-
-Since GitLab 9.0, when you click the `New branch` in an empty repository project, GitLab automatically creates the master branch, commits a blank `README.md` file to it and creates and redirects you to a new branch based on the issue title.
-If your [project is already configured with a deployment service][project-services-doc] (e.g. Kubernetes), GitLab takes one step further and prompts you to set up [auto deploy][auto-deploy-doc] by helping you create a `.gitlab-ci.yml` file.
+screenshot above will create a branch named
+`2-make-static-site-auto-deploy-and-serve`.
+
+When you click the **Create branch** button in an empty
+repository project, GitLab automatically creates a `master` branch, commits
+a blank `README.md` file to it, and creates and redirects you to a new branch
+based on the issue title.
+If your [project is already configured with a deployment service](../integrations/project_services.md),
+such as Kubernetes, GitLab takes one step further and prompts you to set up
+[auto deploy](../../../topics/autodevops/index.md#auto-deploy)
+by helping you create a `.gitlab-ci.yml` file.
After the branch is created, you can edit files in the repository to fix
the issue. When a merge request is created based on the newly created branch,
@@ -116,9 +127,6 @@ the description field will automatically display the [issue closing pattern](../
`Closes #ID`, where `ID` the ID of the issue. This will close the issue once the
merge request is merged.
-[project-services-doc]: ../integrations/project_services.md
-[auto-deploy-doc]: ../../../topics/autodevops/index.md#auto-deploy
-
### Create a new branch from a project's dashboard
If you want to make changes to several files before creating a new merge
@@ -152,7 +160,7 @@ SHA. From a project's files page, choose **New tag** from the dropdown.
Give the tag a name such as `v1.0.0`. Choose the branch or SHA from which you
would like to create this new tag. You can optionally add a message and
-release notes. The release notes section supports markdown format and you can
+release notes. The release notes section supports Markdown format and you can
also upload an attachment. Click **Create tag** and you will be taken to the tag
list page.
diff --git a/doc/user/project/service_desk.md b/doc/user/project/service_desk.md
index 0ca34c4ed02..fad4af7102a 100644
--- a/doc/user/project/service_desk.md
+++ b/doc/user/project/service_desk.md
@@ -55,9 +55,9 @@ you can skip the step 1 below; you only need to enable it per project.
1. [Set up incoming email](../../administration/incoming_email.md#set-it-up) for the GitLab instance. This must
support [email sub-addressing](../../administration/incoming_email.md#email-sub-addressing).
-1. Navigate to your project's **Settings** and scroll down to the **Service Desk**
+1. Navigate to your project's **Settings > General** and scroll down to the **Service Desk**
section.
-1. If you have the correct access and an Premium license,
+1. If you have the correct access and a Premium license,
you will see an option to set up Service Desk:
![Activate Service Desk option](img/service_desk_disabled.png)
@@ -79,6 +79,9 @@ you can skip the step 1 below; you only need to enable it per project.
However the older format is still supported, allowing existing aliases
or contacts to continue working._
+1. If you have [templates](description_templates.md) in your repository, then you can optionally
+ select one of these templates from the dropdown to append it to all Service Desk issues.
+
1. Service Desk is now enabled for this project! You should be able to access it from your project's navigation **Issue submenu**:
![Service Desk Navigation Item](img/service_desk_nav_item.png)
diff --git a/doc/user/project/settings/index.md b/doc/user/project/settings/index.md
index 2dc507901d0..2c7a24da8f9 100644
--- a/doc/user/project/settings/index.md
+++ b/doc/user/project/settings/index.md
@@ -18,7 +18,7 @@ Adjust your project's name, description, avatar, [default branch](../repository/
![general project settings](img/general_settings.png)
-The project description also partially supports [standard markdown](../../markdown.md#standard-markdown-and-extensions-in-gitlab). You can use [emphasis](../../markdown.md#emphasis), [links](../../markdown.md#links), and [line-breaks](../../markdown.md#line-breaks) to add more context to the project description.
+The project description also partially supports [standard Markdown](../../markdown.md#standard-markdown-and-extensions-in-gitlab). You can use [emphasis](../../markdown.md#emphasis), [links](../../markdown.md#links), and [line-breaks](../../markdown.md#line-breaks) to add more context to the project description.
### Sharing and permissions
@@ -26,6 +26,10 @@ Set up your project's access, [visibility](../../../public_access/public_access.
![projects sharing permissions](img/sharing_and_permissions_settings_v12_3.png)
+CAUTION: **Caution:**
+[Reducing a project's visibility level](../../../public_access/public_access.md#reducing-visibility)
+will remove the fork relationship between the project and any forked project.
+
If Issues are disabled, or you can't access Issues because you're not a project member, then Labels and Milestones
links will be missing from the sidebar UI.
diff --git a/doc/workflow/README.md b/doc/workflow/README.md
index 9836255932a..ce129f0663b 100644
--- a/doc/workflow/README.md
+++ b/doc/workflow/README.md
@@ -1,11 +1,5 @@
---
-comments: false
+redirect_to: '../README.md'
---
-# Workflow (Deprecated)
-
-This page was deprecated, with all content previously stored under the `/workflow` path moved
-to other locations in the documentation site, organized by topic. You can use the search
-box to find the content you are looking for, browse the main [GitLab Documentation page](../README.md),
-or view the [issue that deprecated this page](https://gitlab.com/gitlab-org/gitlab/issues/32940)
-for more details.
+This document was moved to [another location](../README.md).
diff --git a/jest.config.js b/jest.config.js
index 3f9dc3fe213..59e09c85b5a 100644
--- a/jest.config.js
+++ b/jest.config.js
@@ -40,6 +40,8 @@ const moduleNameMapper = {
'^spec/test_constants$': '<rootDir>/spec/frontend/helpers/test_constants',
};
+const collectCoverageFrom = ['<rootDir>/app/assets/javascripts/**/*.{js,vue}'];
+
if (IS_EE) {
const rootDirEE = '<rootDir>/ee/app/assets/javascripts$1';
Object.assign(moduleNameMapper, {
@@ -47,14 +49,17 @@ if (IS_EE) {
'^ee_component(/.*)$': rootDirEE,
'^ee_else_ce(/.*)$': rootDirEE,
});
+
+ collectCoverageFrom.push(rootDirEE.replace('$1', '/**/*.{js,vue}'));
}
// eslint-disable-next-line import/no-commonjs
module.exports = {
+ clearMocks: true,
testMatch,
moduleFileExtensions: ['js', 'json', 'vue'],
moduleNameMapper,
- collectCoverageFrom: ['<rootDir>/app/assets/javascripts/**/*.{js,vue}'],
+ collectCoverageFrom,
coverageDirectory: '<rootDir>/coverage-frontend/',
coverageReporters: ['json', 'lcov', 'text-summary', 'clover'],
cacheDirectory: '<rootDir>/tmp/cache/jest',
diff --git a/lib/api/api.rb b/lib/api/api.rb
index a2bdb76b834..56eccb036b6 100644
--- a/lib/api/api.rb
+++ b/lib/api/api.rb
@@ -137,6 +137,7 @@ module API
mount ::API::Discussions
mount ::API::ResourceLabelEvents
mount ::API::NotificationSettings
+ mount ::API::Pages
mount ::API::PagesDomains
mount ::API::Pipelines
mount ::API::PipelineSchedules
@@ -156,6 +157,7 @@ module API
mount ::API::ProtectedTags
mount ::API::Releases
mount ::API::Release::Links
+ mount ::API::RemoteMirrors
mount ::API::Repositories
mount ::API::Runner
mount ::API::Runners
diff --git a/lib/api/api_guard.rb b/lib/api/api_guard.rb
index 02ea321df67..0769e464d26 100644
--- a/lib/api/api_guard.rb
+++ b/lib/api/api_guard.rb
@@ -44,7 +44,7 @@ module API
# Helper Methods for Grape Endpoint
module HelperMethods
prepend_if_ee('EE::API::APIGuard::HelperMethods') # rubocop: disable Cop/InjectEnterpriseEditionModule
- include Gitlab::Auth::UserAuthFinders
+ include Gitlab::Auth::AuthFinders
def find_current_user!
user = find_user_from_sources
@@ -56,14 +56,18 @@ module API
# Set admin mode for API requests (if admin)
if Feature.enabled?(:user_mode_in_session)
- Gitlab::Auth::CurrentUserMode.new(user).enable_admin_mode!(skip_password_validation: true)
+ current_user_mode = Gitlab::Auth::CurrentUserMode.new(user)
+
+ current_user_mode.enable_sessionless_admin_mode!
end
user
end
def find_user_from_sources
- find_user_from_access_token || find_user_from_warden
+ find_user_from_access_token ||
+ find_user_from_job_token ||
+ find_user_from_warden
end
private
diff --git a/lib/api/badges.rb b/lib/api/badges.rb
index ba554e00a16..e987c24c707 100644
--- a/lib/api/badges.rb
+++ b/lib/api/badges.rb
@@ -33,7 +33,11 @@ module API
get ":id/badges" do
source = find_source(source_type, params[:id])
- present_badges(source, paginate(source.badges))
+ badges = source.badges
+ name = params[:name]
+ badges = badges.with_name(name) if name
+
+ present_badges(source, paginate(badges))
end
desc "Preview a badge from a #{source_type}." do
@@ -80,6 +84,7 @@ module API
params do
requires :link_url, type: String, desc: 'URL of the badge link'
requires :image_url, type: String, desc: 'URL of the badge image'
+ optional :name, type: String, desc: 'Name for the badge'
end
post ":id/badges" do
source = find_source_if_admin(source_type)
@@ -100,6 +105,7 @@ module API
params do
optional :link_url, type: String, desc: 'URL of the badge link'
optional :image_url, type: String, desc: 'URL of the badge image'
+ optional :name, type: String, desc: 'Name for the badge'
end
put ":id/badges/:badge_id" do
source = find_source_if_admin(source_type)
diff --git a/lib/api/branches.rb b/lib/api/branches.rb
index 054242dca4c..ce3ee0d7e61 100644
--- a/lib/api/branches.rb
+++ b/lib/api/branches.rb
@@ -137,7 +137,7 @@ module API
post ':id/repository/branches' do
authorize_push_project
- result = CreateBranchService.new(user_project, current_user)
+ result = ::Branches::CreateService.new(user_project, current_user)
.execute(params[:branch], params[:ref])
if result[:status] == :success
@@ -162,7 +162,7 @@ module API
commit = user_project.repository.commit(branch.dereferenced_target)
destroy_conditionally!(commit, last_updated: commit.authored_date) do
- result = DeleteBranchService.new(user_project, current_user)
+ result = ::Branches::DeleteService.new(user_project, current_user)
.execute(params[:branch])
if result.error?
@@ -173,7 +173,7 @@ module API
desc 'Delete all merged branches'
delete ':id/repository/merged_branches' do
- DeleteMergedBranchesService.new(user_project, current_user).async_execute
+ ::Branches::DeleteMergedService.new(user_project, current_user).async_execute
accepted!
end
diff --git a/lib/api/broadcast_messages.rb b/lib/api/broadcast_messages.rb
index 19148758fc5..994e12445b7 100644
--- a/lib/api/broadcast_messages.rb
+++ b/lib/api/broadcast_messages.rb
@@ -32,11 +32,12 @@ module API
success Entities::BroadcastMessage
end
params do
- requires :message, type: String, desc: 'Message to display'
+ requires :message, type: String, desc: 'Message to display'
optional :starts_at, type: DateTime, desc: 'Starting time', default: -> { Time.zone.now }
- optional :ends_at, type: DateTime, desc: 'Ending time', default: -> { 1.hour.from_now }
- optional :color, type: String, desc: 'Background color'
- optional :font, type: String, desc: 'Foreground color'
+ optional :ends_at, type: DateTime, desc: 'Ending time', default: -> { 1.hour.from_now }
+ optional :color, type: String, desc: 'Background color'
+ optional :font, type: String, desc: 'Foreground color'
+ optional :target_path, type: String, desc: 'Target path'
end
post do
message = BroadcastMessage.create(declared_params(include_missing: false))
@@ -66,12 +67,13 @@ module API
success Entities::BroadcastMessage
end
params do
- requires :id, type: Integer, desc: 'Broadcast message ID'
- optional :message, type: String, desc: 'Message to display'
+ requires :id, type: Integer, desc: 'Broadcast message ID'
+ optional :message, type: String, desc: 'Message to display'
optional :starts_at, type: DateTime, desc: 'Starting time'
- optional :ends_at, type: DateTime, desc: 'Ending time'
- optional :color, type: String, desc: 'Background color'
- optional :font, type: String, desc: 'Foreground color'
+ optional :ends_at, type: DateTime, desc: 'Ending time'
+ optional :color, type: String, desc: 'Background color'
+ optional :font, type: String, desc: 'Foreground color'
+ optional :target_path, type: String, desc: 'Target path'
end
put ':id' do
message = find_message
diff --git a/lib/api/deployments.rb b/lib/api/deployments.rb
index f97200f20b9..84d1d8a0aac 100644
--- a/lib/api/deployments.rb
+++ b/lib/api/deployments.rb
@@ -17,16 +17,19 @@ module API
end
params do
use :pagination
- optional :order_by, type: String, values: %w[id iid created_at updated_at ref], default: 'id', desc: 'Return deployments ordered by `id` or `iid` or `created_at` or `updated_at` or `ref`'
- optional :sort, type: String, values: %w[asc desc], default: 'asc', desc: 'Sort by asc (ascending) or desc (descending)'
+ optional :order_by, type: String, values: DeploymentsFinder::ALLOWED_SORT_VALUES, default: DeploymentsFinder::DEFAULT_SORT_VALUE, desc: 'Return deployments ordered by specified value'
+ optional :sort, type: String, values: DeploymentsFinder::ALLOWED_SORT_DIRECTIONS, default: DeploymentsFinder::DEFAULT_SORT_DIRECTION, desc: 'Sort by asc (ascending) or desc (descending)'
+ optional :updated_after, type: DateTime, desc: 'Return deployments updated after the specified date'
+ optional :updated_before, type: DateTime, desc: 'Return deployments updated before the specified date'
end
- # rubocop: disable CodeReuse/ActiveRecord
+
get ':id/deployments' do
authorize! :read_deployment, user_project
- present paginate(user_project.deployments.order(params[:order_by] => params[:sort])), with: Entities::Deployment
+ deployments = DeploymentsFinder.new(user_project, params).execute
+
+ present paginate(deployments), with: Entities::Deployment
end
- # rubocop: enable CodeReuse/ActiveRecord
desc 'Gets a specific deployment' do
detail 'This feature was introduced in GitLab 8.11.'
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index 32a0fb9dd60..cc95be5e3be 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -166,6 +166,18 @@ module API
end
end
+ class RemoteMirror < Grape::Entity
+ expose :id
+ expose :enabled
+ expose :safe_url, as: :url
+ expose :update_status
+ expose :last_update_at
+ expose :last_update_started_at
+ expose :last_successful_update_at
+ expose :last_error
+ expose :only_protected_branches
+ end
+
class ProjectImportStatus < ProjectIdentity
expose :import_status
@@ -415,7 +427,7 @@ module API
projects = GroupProjectsFinder.new(
group: group,
current_user: options[:current_user],
- options: { only_owned: true }
+ options: { only_owned: true, limit: projects_limit }
).execute
Entities::Project.prepare_relation(projects)
@@ -425,11 +437,19 @@ module API
projects = GroupProjectsFinder.new(
group: group,
current_user: options[:current_user],
- options: { only_shared: true }
+ options: { only_shared: true, limit: projects_limit }
).execute
Entities::Project.prepare_relation(projects)
end
+
+ def projects_limit
+ if ::Feature.enabled?(:limit_projects_in_groups_api, default_enabled: true)
+ GroupProjectsFinder::DEFAULT_PROJECTS_LIMIT
+ else
+ nil
+ end
+ end
end
class DiffRefs < Grape::Entity
@@ -532,7 +552,7 @@ module API
class PersonalSnippet < Snippet
expose :raw_url do |snippet|
- Gitlab::UrlBuilder.build(snippet) + "/raw"
+ Gitlab::UrlBuilder.build(snippet, raw: true)
end
end
@@ -662,6 +682,8 @@ module API
expose :subscribed, if: -> (_, options) { options.fetch(:include_subscribed, true) } do |issue, options|
issue.subscribed?(options[:current_user], options[:project] || issue.project)
end
+
+ expose :moved_to_id
end
class IssuableTimeStats < Grape::Entity
@@ -1195,7 +1217,7 @@ module API
end
class BroadcastMessage < Grape::Entity
- expose :message, :starts_at, :ends_at, :color, :font
+ expose :message, :starts_at, :ends_at, :color, :font, :target_path
end
class ApplicationStatistics < Grape::Entity
@@ -1317,6 +1339,7 @@ module API
expose :milestones, using: Entities::Milestone, if: -> (release, _) { release.milestones.present? }
expose :commit_path, expose_nil: false
expose :tag_path, expose_nil: false
+ expose :evidence_sha, expose_nil: false, if: ->(_, _) { can_download_code? }
expose :assets do
expose :assets_count, as: :count do |release, _|
assets_to_exclude = can_download_code? ? [] : [:sources]
@@ -1326,6 +1349,7 @@ module API
expose :links, using: Entities::Releases::Link do |release, options|
release.links.sorted
end
+ expose :evidence_file_path, expose_nil: false, if: ->(_, _) { can_download_code? }
end
expose :_links do
expose :merge_requests_url, expose_nil: false
@@ -1648,7 +1672,7 @@ module API
expose :artifacts, using: Artifacts
expose :cache, using: Cache
expose :credentials, using: Credentials
- expose :dependencies, using: Dependency
+ expose :all_dependencies, as: :dependencies, using: Dependency
expose :features
end
end
@@ -1736,6 +1760,7 @@ module API
end
class BasicBadgeDetails < Grape::Entity
+ expose :name
expose :link_url
expose :image_url
expose :rendered_link_url do |badge, options|
@@ -1838,6 +1863,7 @@ end
::API::Entities::Issue.prepend_if_ee('EE::API::Entities::Issue')
::API::Entities::List.prepend_if_ee('EE::API::Entities::List')
::API::Entities::MergeRequestBasic.prepend_if_ee('EE::API::Entities::MergeRequestBasic', with_descendants: true)
+::API::Entities::Member.prepend_if_ee('EE::API::Entities::Member', with_descendants: true)
::API::Entities::Namespace.prepend_if_ee('EE::API::Entities::Namespace')
::API::Entities::Project.prepend_if_ee('EE::API::Entities::Project', with_descendants: true)
::API::Entities::ProtectedRefAccess.prepend_if_ee('EE::API::Entities::ProtectedRefAccess')
diff --git a/lib/api/groups.rb b/lib/api/groups.rb
index 6c88b61eee8..52fa3f8a68e 100644
--- a/lib/api/groups.rb
+++ b/lib/api/groups.rb
@@ -31,7 +31,7 @@ module API
find_params = params.slice(:all_available, :custom_attributes, :owned, :min_access_level)
find_params[:parent] = find_group!(parent_id) if parent_id
find_params[:all_available] =
- find_params.fetch(:all_available, current_user&.full_private_access?)
+ find_params.fetch(:all_available, current_user&.can_read_all_resources?)
groups = GroupsFinder.new(current_user, find_params).execute
groups = groups.search(params[:search]) if params[:search].present?
diff --git a/lib/api/helpers.rb b/lib/api/helpers.rb
index 49b86489a8b..37cb6d6a639 100644
--- a/lib/api/helpers.rb
+++ b/lib/api/helpers.rb
@@ -213,9 +213,9 @@ module API
unauthorized! unless Devise.secure_compare(secret_token, input)
end
- def authenticated_with_full_private_access!
+ def authenticated_with_can_read_all_resources!
authenticate!
- forbidden! unless current_user.full_private_access?
+ forbidden! unless current_user.can_read_all_resources?
end
def authenticated_as_admin!
@@ -384,8 +384,9 @@ module API
def handle_api_exception(exception)
if report_exception?(exception)
define_params_for_grape_middleware
- Gitlab::Sentry.context(current_user)
- Gitlab::Sentry.track_acceptable_exception(exception, extra: params)
+ Gitlab::ErrorTracking.with_context(current_user) do
+ Gitlab::ErrorTracking.track_exception(exception, params)
+ end
end
# This is used with GrapeLogging::Loggers::ExceptionLogger
diff --git a/lib/api/helpers/common_helpers.rb b/lib/api/helpers/common_helpers.rb
index 7551ca50a7f..32a15381f27 100644
--- a/lib/api/helpers/common_helpers.rb
+++ b/lib/api/helpers/common_helpers.rb
@@ -15,3 +15,5 @@ module API
end
end
end
+
+API::Helpers::CommonHelpers.prepend_if_ee('EE::API::Helpers::CommonHelpers')
diff --git a/lib/api/helpers/internal_helpers.rb b/lib/api/helpers/internal_helpers.rb
index dfac777e4a1..b03eb5ad440 100644
--- a/lib/api/helpers/internal_helpers.rb
+++ b/lib/api/helpers/internal_helpers.rb
@@ -7,6 +7,10 @@ module API
delegate :wiki?, to: :repo_type
+ def actor
+ @actor ||= Support::GitAccessActor.from_params(params)
+ end
+
def repo_type
set_project unless defined?(@repo_type) # rubocop:disable Gitlab/ModuleWithInstanceVariables
@repo_type # rubocop:disable Gitlab/ModuleWithInstanceVariables
diff --git a/lib/api/helpers/members_helpers.rb b/lib/api/helpers/members_helpers.rb
index 1395ffadab9..9e624903a62 100644
--- a/lib/api/helpers/members_helpers.rb
+++ b/lib/api/helpers/members_helpers.rb
@@ -13,19 +13,32 @@ module API
authorize! :"admin_#{source_type}", source
end
- def find_all_members(source_type, source)
- members = source_type == 'project' ? find_all_members_for_project(source) : find_all_members_for_group(source)
- members.non_invite
- .non_request
+ # rubocop: disable CodeReuse/ActiveRecord
+ def retrieve_members(source, params:, deep: false)
+ members = deep ? find_all_members(source) : source.members.where.not(user_id: nil)
+ members = members.includes(:user)
+ members = members.references(:user).merge(User.search(params[:query])) if params[:query].present?
+ members = members.where(user_id: params[:user_ids]) if params[:user_ids].present?
+ members
+ end
+ # rubocop: enable CodeReuse/ActiveRecord
+
+ def find_all_members(source)
+ members = source.is_a?(Project) ? find_all_members_for_project(source) : find_all_members_for_group(source)
+ members.non_invite.non_request
end
def find_all_members_for_project(project)
- MembersFinder.new(project, current_user).execute(include_invited_groups_members: true)
+ MembersFinder.new(project, current_user).execute(include_relations: [:inherited, :direct, :invited_groups_members])
end
def find_all_members_for_group(group)
GroupMembersFinder.new(group).execute
end
+
+ def present_members(members)
+ present members, with: Entities::Member, current_user: current_user
+ end
end
end
end
diff --git a/lib/api/helpers/pagination.rb b/lib/api/helpers/pagination.rb
index 9c5b355e823..1b63e450a12 100644
--- a/lib/api/helpers/pagination.rb
+++ b/lib/api/helpers/pagination.rb
@@ -3,8 +3,33 @@
module API
module Helpers
module Pagination
+ # This returns an ActiveRecord relation
def paginate(relation)
- ::Gitlab::Pagination::OffsetPagination.new(self).paginate(relation)
+ Gitlab::Pagination::OffsetPagination.new(self).paginate(relation)
+ end
+
+ # This applies pagination and executes the query
+ # It always returns an array instead of an ActiveRecord relation
+ def paginate_and_retrieve!(relation)
+ offset_or_keyset_pagination(relation).to_a
+ end
+
+ private
+
+ def offset_or_keyset_pagination(relation)
+ return paginate(relation) unless keyset_pagination_enabled?
+
+ request_context = Gitlab::Pagination::Keyset::RequestContext.new(self)
+
+ unless Gitlab::Pagination::Keyset.available?(request_context, relation)
+ return error!('Keyset pagination is not yet available for this type of request', 405)
+ end
+
+ Gitlab::Pagination::Keyset.paginate(request_context, relation)
+ end
+
+ def keyset_pagination_enabled?
+ params[:pagination] == 'keyset' && Feature.enabled?(:api_keyset_pagination, default_enabled: true)
end
end
end
diff --git a/lib/api/helpers/project_snapshots_helpers.rb b/lib/api/helpers/project_snapshots_helpers.rb
index 13cec1bfd5c..e708dbf0156 100644
--- a/lib/api/helpers/project_snapshots_helpers.rb
+++ b/lib/api/helpers/project_snapshots_helpers.rb
@@ -6,7 +6,7 @@ module API
prepend_if_ee('::EE::API::Helpers::ProjectSnapshotsHelpers') # rubocop: disable Cop/InjectEnterpriseEditionModule
def authorize_read_git_snapshot!
- authenticated_with_full_private_access!
+ authenticated_with_can_read_all_resources!
end
def send_git_snapshot(repository)
diff --git a/lib/api/helpers/services_helpers.rb b/lib/api/helpers/services_helpers.rb
index eba4ebb4b6e..b77be6edcf7 100644
--- a/lib/api/helpers/services_helpers.rb
+++ b/lib/api/helpers/services_helpers.rb
@@ -134,6 +134,12 @@ module API
},
{
required: false,
+ name: :confidential_note_events,
+ type: Boolean,
+ desc: 'Enable notifications for confidential_note_events'
+ },
+ {
+ required: false,
name: :tag_push_events,
type: Boolean,
desc: 'Enable notifications for tag_push_events'
@@ -486,6 +492,12 @@ module API
name: :jira_issue_transition_id,
type: String,
desc: 'The ID of a transition that moves issues to a closed state. You can find this number under the Jira workflow administration (**Administration > Issues > Workflows**) by selecting **View** under **Operations** of the desired workflow of your project. The ID of each state can be found inside the parenthesis of each transition name under the **Transitions (id)** column ([see screenshot][trans]). By default, this ID is set to `2`'
+ },
+ {
+ required: false,
+ name: :comment_on_event_enabled,
+ type: Boolean,
+ desc: 'Enable comments inside Jira issues on each GitLab event (commit / merge request)'
}
],
'mattermost-slash-commands' => [
@@ -690,7 +702,16 @@ module API
type: String,
desc: 'The password of the user'
}
- ]
+ ],
+ 'unify-circuit' => [
+ {
+ required: true,
+ name: :webhook,
+ type: String,
+ desc: 'The Unify Circuit webhook. e.g. https://circuit.com/rest/v2/webhooks/incoming/…'
+ },
+ chat_notification_events
+ ].flatten
}
end
diff --git a/lib/api/internal/base.rb b/lib/api/internal/base.rb
index c70f2f3e2c8..50142b8641e 100644
--- a/lib/api/internal/base.rb
+++ b/lib/api/internal/base.rb
@@ -7,7 +7,6 @@ module API
before { authenticate_by_gitlab_shell_token! }
helpers ::API::Helpers::InternalHelpers
- helpers ::Gitlab::Identifier
UNKNOWN_CHECK_RESULT_ERROR = 'Unknown check result'.freeze
@@ -35,7 +34,6 @@ module API
env = parse_env
Gitlab::Git::HookEnv.set(gl_repository, env) if project
- actor = Support::GitAccessActor.from_params(params)
actor.update_last_used_at!
access_checker = access_checker_for(actor, params[:protocol])
@@ -103,36 +101,30 @@ module API
check_allowed(params)
end
- # rubocop: disable CodeReuse/ActiveRecord
post "/lfs_authenticate" do
status 200
- if params[:key_id]
- actor = Key.find(params[:key_id])
- actor.update_last_used_at
- elsif params[:user_id]
- actor = User.find_by(id: params[:user_id])
- raise ActiveRecord::RecordNotFound.new("No such user id!") unless actor
- else
- raise ActiveRecord::RecordNotFound.new("No key_id or user_id passed!")
+ unless actor.key_or_user
+ raise ActiveRecord::RecordNotFound.new('User not found!')
end
+ actor.update_last_used_at!
+
Gitlab::LfsToken
- .new(actor)
+ .new(actor.key_or_user)
.authentication_payload(lfs_authentication_url(project))
end
- # rubocop: enable CodeReuse/ActiveRecord
#
# Get a ssh key using the fingerprint
#
# rubocop: disable CodeReuse/ActiveRecord
- get "/authorized_keys" do
+ get '/authorized_keys' do
fingerprint = params.fetch(:fingerprint) do
Gitlab::InsecureKeyFingerprint.new(params.fetch(:key)).fingerprint
end
key = Key.find_by(fingerprint: fingerprint)
- not_found!("Key") if key.nil?
+ not_found!('Key') if key.nil?
present key, with: Entities::SSHKey
end
# rubocop: enable CodeReuse/ActiveRecord
@@ -141,16 +133,10 @@ module API
# Discover user by ssh key, user id or username
#
get '/discover' do
- if params[:key_id]
- user = UserFinder.new(params[:key_id]).find_by_ssh_key_id
- elsif params[:username]
- user = UserFinder.new(params[:username]).find_by_username
- end
-
- present user, with: Entities::UserSafe
+ present actor.user, with: Entities::UserSafe
end
- get "/check" do
+ get '/check' do
{
api_version: API.version,
gitlab_version: Gitlab::VERSION,
@@ -158,35 +144,26 @@ module API
redis: redis_ping
}
end
-
- # rubocop: disable CodeReuse/ActiveRecord
post '/two_factor_recovery_codes' do
status 200
- if params[:key_id]
- key = Key.find_by(id: params[:key_id])
+ actor.update_last_used_at!
+ user = actor.user
- if key
- key.update_last_used_at
- else
- break { 'success' => false, 'message' => 'Could not find the given key' }
+ if params[:key_id]
+ unless actor.key
+ break { success: false, message: 'Could not find the given key' }
end
- if key.is_a?(DeployKey)
+ if actor.key.is_a?(DeployKey)
break { success: false, message: 'Deploy keys cannot be used to retrieve recovery codes' }
end
- user = key.user
-
unless user
break { success: false, message: 'Could not find a user for the given key' }
end
- elsif params[:user_id]
- user = User.find_by(id: params[:user_id])
-
- unless user
- break { success: false, message: 'Could not find the given user' }
- end
+ elsif params[:user_id] && user.nil?
+ break { success: false, message: 'Could not find the given user' }
end
unless user.two_factor_enabled?
@@ -201,7 +178,6 @@ module API
{ success: true, recovery_codes: codes }
end
- # rubocop: enable CodeReuse/ActiveRecord
post '/pre_receive' do
status 200
@@ -211,7 +187,7 @@ module API
{ reference_counter_increased: reference_counter_increased }
end
- post "/notify_post_receive" do
+ post '/notify_post_receive' do
status 200
# TODO: Re-enable when Gitaly is processing the post-receive notification
@@ -229,8 +205,7 @@ module API
status 200
response = Gitlab::InternalPostReceive::Response.new
- user = identify(params[:identifier])
- project = Gitlab::GlRepository.parse(params[:gl_repository]).first
+ user = actor.user
push_options = Gitlab::PushOptions.new(params[:push_options])
response.reference_counter_decreased = Gitlab::ReferenceCounter.new(params[:gl_repository]).decrease
diff --git a/lib/api/internal/pages.rb b/lib/api/internal/pages.rb
index 003af7f6dd4..a2fe3e09df8 100644
--- a/lib/api/internal/pages.rb
+++ b/lib/api/internal/pages.rb
@@ -25,7 +25,7 @@ module API
end
get "/" do
host = Namespace.find_by_pages_host(params[:host]) || PagesDomain.find_by_domain(params[:host])
- not_found! unless host
+ no_content! unless host
virtual_domain = host.pages_virtual_domain
no_content! unless virtual_domain
diff --git a/lib/api/keys.rb b/lib/api/keys.rb
index d5280a0035d..8f837107192 100644
--- a/lib/api/keys.rb
+++ b/lib/api/keys.rb
@@ -16,6 +16,25 @@ module API
present key, with: Entities::SSHKeyWithUser, current_user: current_user
end
+
+ desc 'Get SSH Key information' do
+ success Entities::UserWithAdmin
+ end
+ params do
+ requires :fingerprint, type: String, desc: 'Search for a SSH fingerprint'
+ end
+ get do
+ authenticated_with_can_read_all_resources!
+
+ finder_params = params.merge(key_type: 'ssh')
+
+ key = KeysFinder.new(current_user, finder_params).execute
+
+ not_found!('Key') unless key
+ present key, with: Entities::SSHKeyWithUser, current_user: current_user
+ rescue KeysFinder::InvalidFingerprint
+ render_api_error!('Failed to return the key', 400)
+ end
end
end
end
diff --git a/lib/api/members.rb b/lib/api/members.rb
index 1d4616fed52..3526671e7f9 100644
--- a/lib/api/members.rb
+++ b/lib/api/members.rb
@@ -21,18 +21,14 @@ module API
optional :user_ids, type: Array[Integer], desc: 'Array of user ids to look up for membership'
use :pagination
end
- # rubocop: disable CodeReuse/ActiveRecord
+
get ":id/members" do
source = find_source(source_type, params[:id])
- members = source.members.where.not(user_id: nil).includes(:user)
- members = members.joins(:user).merge(User.search(params[:query])) if params[:query].present?
- members = members.where(user_id: params[:user_ids]) if params[:user_ids].present?
- members = paginate(members)
+ members = paginate(retrieve_members(source, params: params))
- present members, with: Entities::Member
+ present_members members
end
- # rubocop: enable CodeReuse/ActiveRecord
desc 'Gets a list of group or project members viewable by the authenticated user, including those who gained membership through ancestor group.' do
success Entities::Member
@@ -42,18 +38,14 @@ module API
optional :user_ids, type: Array[Integer], desc: 'Array of user ids to look up for membership'
use :pagination
end
- # rubocop: disable CodeReuse/ActiveRecord
+
get ":id/members/all" do
source = find_source(source_type, params[:id])
- members = find_all_members(source_type, source)
- members = members.includes(:user).references(:user).merge(User.search(params[:query])) if params[:query].present?
- members = members.where(user_id: params[:user_ids]) if params[:user_ids].present?
- members = paginate(members)
+ members = paginate(retrieve_members(source, params: params, deep: true))
- present members, with: Entities::Member
+ present_members members
end
- # rubocop: enable CodeReuse/ActiveRecord
desc 'Gets a member of a group or project.' do
success Entities::Member
@@ -68,7 +60,7 @@ module API
members = source.members
member = members.find_by!(user_id: params[:user_id])
- present member, with: Entities::Member
+ present_members member
end
# rubocop: enable CodeReuse/ActiveRecord
@@ -82,10 +74,10 @@ module API
get ":id/members/all/:user_id" do
source = find_source(source_type, params[:id])
- members = find_all_members(source_type, source)
+ members = find_all_members(source)
member = members.find_by!(user_id: params[:user_id])
- present member, with: Entities::Member
+ present_members member
end
# rubocop: enable CodeReuse/ActiveRecord
@@ -113,7 +105,7 @@ module API
if !member
not_allowed! # This currently can only be reached in EE
elsif member.persisted? && member.valid?
- present member, with: Entities::Member
+ present_members member
else
render_validation_error!(member)
end
@@ -140,7 +132,7 @@ module API
.execute(member)
if updated_member.valid?
- present updated_member, with: Entities::Member
+ present_members updated_member
else
render_validation_error!(updated_member)
end
@@ -165,3 +157,5 @@ module API
end
end
end
+
+API::Members.prepend_if_ee('EE::API::Members')
diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb
index 6e10414def4..794237f8032 100644
--- a/lib/api/merge_requests.rb
+++ b/lib/api/merge_requests.rb
@@ -68,6 +68,10 @@ module API
end
end
+ def not_automatically_mergeable?(merge_when_pipeline_succeeds, merge_request)
+ merge_when_pipeline_succeeds && !merge_request.head_pipeline_active? && !merge_request.actual_head_pipeline_success?
+ end
+
def serializer_options_for(merge_requests)
options = { with: Entities::MergeRequestBasic, current_user: current_user }
@@ -391,12 +395,13 @@ module API
merge_request = find_project_merge_request(params[:merge_request_iid])
merge_when_pipeline_succeeds = to_boolean(params[:merge_when_pipeline_succeeds])
+ not_automatically_mergeable = not_automatically_mergeable?(merge_when_pipeline_succeeds, merge_request)
# Merge request can not be merged
# because user dont have permissions to push into target branch
unauthorized! unless merge_request.can_be_merged_by?(current_user)
- not_allowed! unless merge_request.mergeable_state?(skip_ci_check: merge_when_pipeline_succeeds)
+ not_allowed! if !merge_request.mergeable_state?(skip_ci_check: merge_when_pipeline_succeeds) || not_automatically_mergeable
render_api_error!('Branch cannot be merged', 406) unless merge_request.mergeable?(skip_ci_check: merge_when_pipeline_succeeds)
@@ -411,7 +416,7 @@ module API
sha: params[:sha] || merge_request.diff_head_sha
)
- if merge_when_pipeline_succeeds && merge_request.head_pipeline && merge_request.head_pipeline.active?
+ if merge_when_pipeline_succeeds
AutoMergeService.new(merge_request.target_project, current_user, merge_params)
.execute(merge_request, AutoMergeService::STRATEGY_MERGE_WHEN_PIPELINE_SUCCEEDS)
else
diff --git a/lib/api/pages.rb b/lib/api/pages.rb
new file mode 100644
index 00000000000..39c8f1e6bdf
--- /dev/null
+++ b/lib/api/pages.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+
+module API
+ class Pages < Grape::API
+ before do
+ require_pages_config_enabled!
+ authenticated_with_can_read_all_resources!
+ end
+
+ params do
+ requires :id, type: String, desc: 'The ID of a project'
+ end
+ resource :projects, requirements: API::NAMESPACE_OR_PROJECT_REQUIREMENTS do
+ desc 'Unpublish pages' do
+ detail 'This feature was introduced in GitLab 12.6'
+ end
+ delete ':id/pages' do
+ authorize! :remove_pages, user_project
+
+ status 204
+
+ ::Pages::DeleteService.new(user_project, current_user).execute
+ end
+ end
+ end
+end
diff --git a/lib/api/pages_domains.rb b/lib/api/pages_domains.rb
index 2d02a4e624c..9f8c1e4f916 100644
--- a/lib/api/pages_domains.rb
+++ b/lib/api/pages_domains.rb
@@ -37,7 +37,7 @@ module API
resource :pages do
before do
require_pages_config_enabled!
- authenticated_with_full_private_access!
+ authenticated_with_can_read_all_resources!
end
desc "Get all pages domains" do
diff --git a/lib/api/pipelines.rb b/lib/api/pipelines.rb
index 7c87a9878bf..66a183173af 100644
--- a/lib/api/pipelines.rb
+++ b/lib/api/pipelines.rb
@@ -25,6 +25,8 @@ module API
optional :yaml_errors, type: Boolean, desc: 'Returns pipelines with invalid configurations'
optional :name, type: String, desc: 'The name of the user who triggered pipelines'
optional :username, type: String, desc: 'The username of the user who triggered pipelines'
+ optional :updated_before, type: DateTime, desc: 'Return pipelines updated before the specified datetime. Format: ISO 8601 YYYY-MM-DDTHH:MM:SSZ'
+ optional :updated_after, type: DateTime, desc: 'Return pipelines updated after the specified datetime. Format: ISO 8601 YYYY-MM-DDTHH:MM:SSZ'
optional :order_by, type: String, values: PipelinesFinder::ALLOWED_INDEXED_COLUMNS, default: 'id',
desc: 'Order pipelines'
optional :sort, type: String, values: %w[asc desc], default: 'desc',
diff --git a/lib/api/project_export.rb b/lib/api/project_export.rb
index e34ed0bdb44..ef6a8f1a396 100644
--- a/lib/api/project_export.rb
+++ b/lib/api/project_export.rb
@@ -2,6 +2,15 @@
module API
class ProjectExport < Grape::API
+ helpers do
+ def throttled?(action)
+ rate_limiter.throttled?(action, scope: [current_user, action, user_project])
+ end
+
+ def rate_limiter
+ ::Gitlab::ApplicationRateLimiter
+ end
+ end
before do
not_found! unless Gitlab::CurrentSettings.project_export_enabled?
authorize_admin_project
@@ -23,6 +32,10 @@ module API
detail 'This feature was introduced in GitLab 10.6.'
end
get ':id/export/download' do
+ if throttled?(:project_download_export)
+ render_api_error!({ error: 'This endpoint has been requested too many times. Try again later.' }, 429)
+ end
+
if user_project.export_file_exists?
present_carrierwave_file!(user_project.export_file)
else
@@ -41,6 +54,10 @@ module API
end
end
post ':id/export' do
+ if throttled?(:project_export)
+ render_api_error!({ error: 'This endpoint has been requested too many times. Try again later.' }, 429)
+ end
+
project_export_params = declared_params(include_missing: false)
after_export_params = project_export_params.delete(:upload) || {}
diff --git a/lib/api/projects.rb b/lib/api/projects.rb
index a1fce9e8b20..d1f99ea49ce 100644
--- a/lib/api/projects.rb
+++ b/lib/api/projects.rb
@@ -26,6 +26,14 @@ module API
def verify_update_project_attrs!(project, attrs)
end
+
+ def delete_project(user_project)
+ destroy_conditionally!(user_project) do
+ ::Projects::DestroyService.new(user_project, current_user, {}).async_execute
+ end
+
+ accepted!
+ end
end
helpers do
@@ -404,11 +412,7 @@ module API
delete ":id" do
authorize! :remove_project, user_project
- destroy_conditionally!(user_project) do
- ::Projects::DestroyService.new(user_project, current_user, {}).async_execute
- end
-
- accepted!
+ delete_project(user_project)
end
desc 'Mark this project as forked from another'
diff --git a/lib/api/releases.rb b/lib/api/releases.rb
index 3f600ef4a04..2df6050967b 100644
--- a/lib/api/releases.rb
+++ b/lib/api/releases.rb
@@ -57,6 +57,7 @@ module API
optional :milestones, type: Array, desc: 'The titles of the related milestones', default: []
optional :released_at, type: DateTime, desc: 'The date when the release will be/was ready. Defaults to the current time.'
end
+ route_setting :authentication, job_token_allowed: true
post ':id/releases' do
authorize_create_release!
diff --git a/lib/api/remote_mirrors.rb b/lib/api/remote_mirrors.rb
new file mode 100644
index 00000000000..8a085517ce9
--- /dev/null
+++ b/lib/api/remote_mirrors.rb
@@ -0,0 +1,30 @@
+# frozen_string_literal: true
+
+module API
+ class RemoteMirrors < Grape::API
+ include PaginationParams
+
+ before do
+ # TODO: Remove flag: https://gitlab.com/gitlab-org/gitlab/issues/38121
+ not_found! unless Feature.enabled?(:remote_mirrors_api, user_project)
+ end
+
+ params do
+ requires :id, type: String, desc: 'The ID of a project'
+ end
+ resource :projects, requirements: API::NAMESPACE_OR_PROJECT_REQUIREMENTS do
+ desc "List the project's remote mirrors" do
+ success Entities::RemoteMirror
+ end
+ params do
+ use :pagination
+ end
+ get ':id/remote_mirrors' do
+ unauthorized! unless can?(current_user, :admin_remote_mirror, user_project)
+
+ present paginate(user_project.remote_mirrors),
+ with: Entities::RemoteMirror
+ end
+ end
+ end
+end
diff --git a/lib/api/services.rb b/lib/api/services.rb
index aa5354e20c3..03c51f65172 100644
--- a/lib/api/services.rb
+++ b/lib/api/services.rb
@@ -115,7 +115,7 @@ module API
end
get ":id/services/:service_slug" do
service = user_project.find_or_initialize_service(params[:service_slug].underscore)
- present service, with: Entities::ProjectService, include_passwords: current_user.admin?
+ present service, with: Entities::ProjectService
end
end
diff --git a/lib/api/snippets.rb b/lib/api/snippets.rb
index f8b37b33348..fd5422f2e2c 100644
--- a/lib/api/snippets.rb
+++ b/lib/api/snippets.rb
@@ -14,7 +14,7 @@ module API
end
def public_snippets
- SnippetsFinder.new(current_user, scope: :are_public).execute
+ Snippet.only_personal_snippets.are_public.fresh
end
def snippets
@@ -33,7 +33,7 @@ module API
present paginate(snippets_for_current_user), with: Entities::PersonalSnippet
end
- desc 'List all public snippets current_user has access to' do
+ desc 'List all public personal snippets current_user has access to' do
detail 'This feature was introduced in GitLab 8.15.'
success Entities::PersonalSnippet
end
@@ -131,7 +131,7 @@ module API
snippet = snippets_for_current_user.find_by_id(params.delete(:id))
break not_found!('Snippet') unless snippet
- authorize! :destroy_personal_snippet, snippet
+ authorize! :admin_personal_snippet, snippet
destroy_conditionally!(snippet)
end
diff --git a/lib/api/support/git_access_actor.rb b/lib/api/support/git_access_actor.rb
index 2e0962c6295..cb9bf4472eb 100644
--- a/lib/api/support/git_access_actor.rb
+++ b/lib/api/support/git_access_actor.rb
@@ -3,7 +3,9 @@
module API
module Support
class GitAccessActor
- attr_reader :user
+ extend ::Gitlab::Identifier
+
+ attr_reader :user, :key
def initialize(user: nil, key: nil)
@user = user
@@ -19,6 +21,10 @@ module API
new(user: UserFinder.new(params[:user_id]).find_by_id)
elsif params[:username]
new(user: UserFinder.new(params[:username]).find_by_username)
+ elsif params[:identifier]
+ new(user: identify(params[:identifier]))
+ else
+ new
end
end
@@ -33,10 +39,6 @@ module API
def update_last_used_at!
key&.update_last_used_at
end
-
- private
-
- attr_reader :key
end
end
end
diff --git a/lib/api/users.rb b/lib/api/users.rb
index ff0b1e87b03..b8c60f1969c 100644
--- a/lib/api/users.rb
+++ b/lib/api/users.rb
@@ -446,12 +446,13 @@ module API
end
# rubocop: disable CodeReuse/ActiveRecord
delete ":id" do
- Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-foss/issues/42279')
+ Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab/issues/20757')
authenticated_as_admin!
user = User.find_by(id: params[:id])
not_found!('User') unless user
+ conflict!('User cannot be removed while is the sole-owner of a group') unless user.can_be_removed? || params[:hard_delete]
destroy_conditionally!(user) do
user.delete_async(deleted_by: current_user, params: params)
diff --git a/lib/backup/manager.rb b/lib/backup/manager.rb
index ce0c4c5d974..cb1f2fdcd17 100644
--- a/lib/backup/manager.rb
+++ b/lib/backup/manager.rb
@@ -47,11 +47,7 @@ module Backup
directory = connect_to_remote_directory(connection_settings)
- if directory.files.create(key: remote_target, body: File.open(tar_file), public: false,
- multipart_chunk_size: Gitlab.config.backup.upload.multipart_chunk_size,
- encryption: Gitlab.config.backup.upload.encryption,
- encryption_key: Gitlab.config.backup.upload.encryption_key,
- storage_class: Gitlab.config.backup.upload.storage_class)
+ if directory.files.create(create_attributes)
progress.puts "done".color(:green)
else
puts "uploading backup to #{remote_directory} failed".color(:red)
@@ -252,5 +248,27 @@ module Backup
skipped: ENV["SKIP"]
}
end
+
+ def create_attributes
+ attrs = {
+ key: remote_target,
+ body: File.open(tar_file),
+ multipart_chunk_size: Gitlab.config.backup.upload.multipart_chunk_size,
+ encryption: Gitlab.config.backup.upload.encryption,
+ encryption_key: Gitlab.config.backup.upload.encryption_key,
+ storage_class: Gitlab.config.backup.upload.storage_class
+ }
+
+ # Google bucket-only policies prevent setting an ACL. In any case, by default,
+ # all objects are set to the default ACL, which is project-private:
+ # https://cloud.google.com/storage/docs/json_api/v1/defaultObjectAccessControls
+ attrs[:public] = false unless google_provider?
+
+ attrs
+ end
+
+ def google_provider?
+ Gitlab.config.backup.upload.connection&.provider&.downcase == 'google'
+ end
end
end
diff --git a/lib/banzai/filter/autolink_filter.rb b/lib/banzai/filter/autolink_filter.rb
index 5f2cbc24c60..4723bfbf261 100644
--- a/lib/banzai/filter/autolink_filter.rb
+++ b/lib/banzai/filter/autolink_filter.rb
@@ -121,7 +121,7 @@ module Banzai
def autolink_filter(text)
Gitlab::StringRegexMarker.new(CGI.unescapeHTML(text), text.html_safe).mark(LINK_PATTERN) do |link, left:, right:|
- autolink_match(link)
+ autolink_match(link).html_safe
end
end
diff --git a/lib/banzai/filter/base_sanitization_filter.rb b/lib/banzai/filter/base_sanitization_filter.rb
index 2dabca3552d..1b7af8aee45 100644
--- a/lib/banzai/filter/base_sanitization_filter.rb
+++ b/lib/banzai/filter/base_sanitization_filter.rb
@@ -7,6 +7,7 @@ module Banzai
#
# - Banzai::Filter::SanitizationFilter (Markdown)
# - Banzai::Filter::AsciiDocSanitizationFilter (AsciiDoc/Asciidoctor)
+ # - Banzai::Filter::BroadcastMessageSanitizationFilter (Markdown with styled links and line breaks)
#
# Extends HTML::Pipeline::SanitizationFilter with common rules.
class BaseSanitizationFilter < HTML::Pipeline::SanitizationFilter
diff --git a/lib/banzai/filter/broadcast_message_sanitization_filter.rb b/lib/banzai/filter/broadcast_message_sanitization_filter.rb
new file mode 100644
index 00000000000..042293170c8
--- /dev/null
+++ b/lib/banzai/filter/broadcast_message_sanitization_filter.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+module Banzai
+ module Filter
+ # Sanitize HTML produced by Markdown. Allows styling of links and usage of line breaks.
+ #
+ # Extends Banzai::Filter::BaseSanitizationFilter with specific rules.
+ class BroadcastMessageSanitizationFilter < Banzai::Filter::BaseSanitizationFilter
+ def customize_whitelist(whitelist)
+ whitelist[:elements].push('br')
+
+ whitelist[:attributes]['a'].push('class', 'style')
+
+ whitelist[:css] = { properties: %w(color border background padding margin text-decoration) }
+
+ whitelist
+ end
+ end
+ end
+end
diff --git a/lib/banzai/filter/inline_metrics_redactor_filter.rb b/lib/banzai/filter/inline_metrics_redactor_filter.rb
index e84ba83e03e..c70897fccbf 100644
--- a/lib/banzai/filter/inline_metrics_redactor_filter.rb
+++ b/lib/banzai/filter/inline_metrics_redactor_filter.rb
@@ -8,6 +8,7 @@ module Banzai
include Gitlab::Utils::StrongMemoize
METRICS_CSS_CLASS = '.js-render-metrics'
+ EMBED_LIMIT = 100
URL = Gitlab::Metrics::Dashboard::Url
Embed = Struct.new(:project_path, :permission)
@@ -35,9 +36,16 @@ module Banzai
# Returns all nodes which the FE will identify as
# a metrics embed placeholder element
#
+ # Removes any nodes beyond the first 100
+ #
# @return [Nokogiri::XML::NodeSet]
def nodes
- @nodes ||= doc.css(METRICS_CSS_CLASS)
+ strong_memoize(:nodes) do
+ nodes = doc.css(METRICS_CSS_CLASS)
+ nodes.drop(EMBED_LIMIT).each(&:remove)
+
+ nodes
+ end
end
# Maps a node to key properties of an embed.
diff --git a/lib/banzai/filter/markdown_engines/common_mark.rb b/lib/banzai/filter/markdown_engines/common_mark.rb
index d3af776db05..7be52fc497f 100644
--- a/lib/banzai/filter/markdown_engines/common_mark.rb
+++ b/lib/banzai/filter/markdown_engines/common_mark.rb
@@ -29,7 +29,9 @@ module Banzai
# If in the future the syntax is about to be made GitHub-compatible, please, add `:GITHUB_PRE_LANG` render option below
# and remove `code_block` method from `lib/banzai/renderer/common_mark/html.rb`.
RENDER_OPTIONS = [
- :DEFAULT # default rendering system. Nothing special.
+ # as of commonmarker 0.18.0, we need to use :UNSAFE to get the same as the original :DEFAULT
+ # https://github.com/gjtorikian/commonmarker/pull/81
+ :UNSAFE
].freeze
RENDER_OPTIONS_SOURCEPOS = RENDER_OPTIONS + [
diff --git a/lib/banzai/filter/spaced_link_filter.rb b/lib/banzai/filter/spaced_link_filter.rb
index ee7f10ebdf6..101b55a49e4 100644
--- a/lib/banzai/filter/spaced_link_filter.rb
+++ b/lib/banzai/filter/spaced_link_filter.rb
@@ -77,7 +77,7 @@ module Banzai
def spaced_link_filter(text)
Gitlab::StringRegexMarker.new(CGI.unescapeHTML(text), text.html_safe).mark(LINK_OR_IMAGE_PATTERN) do |link, left:, right:|
- spaced_link_match(link)
+ spaced_link_match(link).html_safe
end
end
diff --git a/lib/banzai/pipeline/broadcast_message_pipeline.rb b/lib/banzai/pipeline/broadcast_message_pipeline.rb
index 580b5b72474..e31795e673c 100644
--- a/lib/banzai/pipeline/broadcast_message_pipeline.rb
+++ b/lib/banzai/pipeline/broadcast_message_pipeline.rb
@@ -6,7 +6,7 @@ module Banzai
def self.filters
@filters ||= FilterArray[
Filter::MarkdownFilter,
- Filter::SanitizationFilter,
+ Filter::BroadcastMessageSanitizationFilter,
Filter::EmojiFilter,
Filter::ColorFilter,
diff --git a/lib/banzai/reference_parser/mentioned_users_by_group_parser.rb b/lib/banzai/reference_parser/mentioned_group_parser.rb
index d4ff6a12cd0..a0892e15df8 100644
--- a/lib/banzai/reference_parser/mentioned_users_by_group_parser.rb
+++ b/lib/banzai/reference_parser/mentioned_group_parser.rb
@@ -2,7 +2,7 @@
module Banzai
module ReferenceParser
- class MentionedUsersByGroupParser < BaseParser
+ class MentionedGroupParser < BaseParser
GROUP_ATTR = 'data-group'
self.reference_type = :user
diff --git a/lib/banzai/reference_parser/mentioned_users_by_project_parser.rb b/lib/banzai/reference_parser/mentioned_project_parser.rb
index 79258d81cc3..40f1819f2d8 100644
--- a/lib/banzai/reference_parser/mentioned_users_by_project_parser.rb
+++ b/lib/banzai/reference_parser/mentioned_project_parser.rb
@@ -2,7 +2,7 @@
module Banzai
module ReferenceParser
- class MentionedUsersByProjectParser < ProjectParser
+ class MentionedProjectParser < ProjectParser
PROJECT_ATTR = 'data-project'
self.reference_type = :user
diff --git a/lib/banzai/reference_parser/user_parser.rb b/lib/banzai/reference_parser/user_parser.rb
index 067b06b7590..36c41c6615f 100644
--- a/lib/banzai/reference_parser/user_parser.rb
+++ b/lib/banzai/reference_parser/user_parser.rb
@@ -97,7 +97,9 @@ module Banzai
def find_users_for_groups(ids)
return [] if ids.empty?
- User.joins(:group_members).where(members: { source_id: ids }).to_a
+ User.joins(:group_members).where(members: {
+ source_id: Namespace.where(id: ids).where('mentions_disabled IS NOT TRUE').select(:id)
+ }).to_a
end
def find_users_for_projects(ids)
diff --git a/lib/container_registry/tag.rb b/lib/container_registry/tag.rb
index 2cc4c8d8b1c..3c308258a3f 100644
--- a/lib/container_registry/tag.rb
+++ b/lib/container_registry/tag.rb
@@ -83,6 +83,8 @@ module ContainerRegistry
strong_memoize(:created_at) do
DateTime.rfc3339(config['created'])
+ rescue ArgumentError
+ nil
end
end
diff --git a/lib/feature/gitaly.rb b/lib/feature/gitaly.rb
index 0ac2d017e1a..625db1fce32 100644
--- a/lib/feature/gitaly.rb
+++ b/lib/feature/gitaly.rb
@@ -8,7 +8,8 @@ class Feature
SERVER_FEATURE_FLAGS =
%w[
inforef_uploadpack_cache
- get_all_lfs_pointers_go
+ get_tag_messages_go
+ filter_shas_with_signatures_go
].freeze
DEFAULT_ON_FLAGS = Set.new([]).freeze
diff --git a/lib/gitaly/server.rb b/lib/gitaly/server.rb
index 907c6e1b605..64ab5db4fcd 100644
--- a/lib/gitaly/server.rb
+++ b/lib/gitaly/server.rb
@@ -2,6 +2,8 @@
module Gitaly
class Server
+ SHA_VERSION_REGEX = /\A\d+\.\d+\.\d+-\d+-g([a-f0-9]{8})\z/.freeze
+
class << self
def all
Gitlab.config.repositories.storages.keys.map { |s| Gitaly::Server.new(s) }
@@ -30,9 +32,10 @@ module Gitaly
info.git_version
end
- def up_to_date?
- server_version == Gitlab::GitalyClient.expected_server_version
+ def expected_version?
+ server_version == Gitlab::GitalyClient.expected_server_version || matches_sha?
end
+ alias_method :up_to_date?, :expected_version?
def read_writeable?
readable? && writeable?
@@ -62,6 +65,13 @@ module Gitaly
@storage_status ||= info.storage_statuses.find { |s| s.storage_name == storage }
end
+ def matches_sha?
+ match = server_version.match(SHA_VERSION_REGEX)
+ return false unless match
+
+ Gitlab::GitalyClient.expected_server_version.start_with?(match[1])
+ end
+
def info
@info ||=
begin
diff --git a/lib/gitlab/action_rate_limiter.rb b/lib/gitlab/action_rate_limiter.rb
deleted file mode 100644
index 0e8707af631..00000000000
--- a/lib/gitlab/action_rate_limiter.rb
+++ /dev/null
@@ -1,81 +0,0 @@
-# frozen_string_literal: true
-
-module Gitlab
- # This class implements a simple rate limiter that can be used to throttle
- # certain actions. Unlike Rack Attack and Rack::Throttle, which operate at
- # the middleware level, this can be used at the controller level.
- class ActionRateLimiter
- TIME_TO_EXPIRE = 60 # 1 min
-
- attr_accessor :action, :expiry_time
-
- def initialize(action:, expiry_time: TIME_TO_EXPIRE)
- @action = action
- @expiry_time = expiry_time
- end
-
- # Increments the given cache key and increments the value by 1 with the
- # given expiration time. Returns the incremented value.
- #
- # key - An array of ActiveRecord instances
- def increment(key)
- value = 0
-
- Gitlab::Redis::Cache.with do |redis|
- cache_key = action_key(key)
- value = redis.incr(cache_key)
- redis.expire(cache_key, expiry_time) if value == 1
- end
-
- value
- end
-
- # Increments the given key and returns true if the action should
- # be throttled.
- #
- # key - An array of ActiveRecord instances or strings
- # threshold_value - The maximum number of times this action should occur in the given time interval. If number is zero is considered disabled.
- def throttled?(key, threshold_value)
- threshold_value > 0 &&
- self.increment(key) > threshold_value
- end
-
- # Logs request into auth.log
- #
- # request - Web request to be logged
- # type - A symbol key that represents the request.
- # current_user - Current user of the request, it can be nil.
- def log_request(request, type, current_user)
- request_information = {
- message: 'Action_Rate_Limiter_Request',
- env: type,
- remote_ip: request.ip,
- request_method: request.request_method,
- path: request.fullpath
- }
-
- if current_user
- request_information.merge!({
- user_id: current_user.id,
- username: current_user.username
- })
- end
-
- Gitlab::AuthLogger.error(request_information)
- end
-
- private
-
- def action_key(key)
- serialized = key.map do |obj|
- if obj.is_a?(String)
- "#{obj}"
- else
- "#{obj.class.model_name.to_s.underscore}:#{obj.id}"
- end
- end.join(":")
-
- "action_rate_limiter:#{action}:#{serialized}"
- end
- end
-end
diff --git a/lib/gitlab/analytics/cycle_analytics/data_collector.rb b/lib/gitlab/analytics/cycle_analytics/data_collector.rb
index 05b16672912..5eca364a697 100644
--- a/lib/gitlab/analytics/cycle_analytics/data_collector.rb
+++ b/lib/gitlab/analytics/cycle_analytics/data_collector.rb
@@ -42,3 +42,5 @@ module Gitlab
end
end
end
+
+Gitlab::Analytics::CycleAnalytics::DataCollector.prepend_if_ee('EE::Gitlab::Analytics::CycleAnalytics::DataCollector')
diff --git a/lib/gitlab/analytics/cycle_analytics/records_fetcher.rb b/lib/gitlab/analytics/cycle_analytics/records_fetcher.rb
index 2662aa38d6b..e8e269a88f0 100644
--- a/lib/gitlab/analytics/cycle_analytics/records_fetcher.rb
+++ b/lib/gitlab/analytics/cycle_analytics/records_fetcher.rb
@@ -21,7 +21,7 @@ module Gitlab
finder_class: MergeRequestsFinder,
serializer_class: AnalyticsMergeRequestSerializer,
includes_for_query: { target_project: [:namespace], author: [] },
- columns_for_select: %I[title iid id created_at author_id state target_project_id]
+ columns_for_select: %I[title iid id created_at author_id state_id target_project_id]
}
}.freeze
diff --git a/lib/gitlab/analytics/cycle_analytics/stage_events/stage_event.rb b/lib/gitlab/analytics/cycle_analytics/stage_events/stage_event.rb
index 667d6def414..0c75a141c3c 100644
--- a/lib/gitlab/analytics/cycle_analytics/stage_events/stage_event.rb
+++ b/lib/gitlab/analytics/cycle_analytics/stage_events/stage_event.rb
@@ -8,6 +8,8 @@ module Gitlab
class StageEvent
include Gitlab::CycleAnalytics::MetricsTables
+ delegate :label_based?, to: :class
+
def initialize(params)
@params = params
end
@@ -35,7 +37,7 @@ module Gitlab
query
end
- def label_based?
+ def self.label_based?
false
end
diff --git a/lib/gitlab/analytics/cycle_analytics/stage_query_helpers.rb b/lib/gitlab/analytics/cycle_analytics/stage_query_helpers.rb
index 34c726b2254..29a2d55df1a 100644
--- a/lib/gitlab/analytics/cycle_analytics/stage_query_helpers.rb
+++ b/lib/gitlab/analytics/cycle_analytics/stage_query_helpers.rb
@@ -9,11 +9,11 @@ module Gitlab
end
def zero_interval
- Arel::Nodes::NamedFunction.new("CAST", [Arel.sql("'0' AS INTERVAL")])
+ Arel::Nodes::NamedFunction.new('CAST', [Arel.sql("'0' AS INTERVAL")])
end
def round_duration_to_seconds
- Arel::Nodes::Extract.new(duration, :epoch)
+ Arel::Nodes::NamedFunction.new('ROUND', [Arel::Nodes::Extract.new(duration, :epoch)])
end
def duration
diff --git a/lib/gitlab/application_rate_limiter.rb b/lib/gitlab/application_rate_limiter.rb
new file mode 100644
index 00000000000..629632b744b
--- /dev/null
+++ b/lib/gitlab/application_rate_limiter.rb
@@ -0,0 +1,129 @@
+# frozen_string_literal: true
+
+module Gitlab
+ # This class implements a simple rate limiter that can be used to throttle
+ # certain actions. Unlike Rack Attack and Rack::Throttle, which operate at
+ # the middleware level, this can be used at the controller or API level.
+ #
+ # @example
+ # if Gitlab::ApplicationRateLimiter.throttled?(:project_export, scope: [@project, @current_user])
+ # flash[:alert] = 'error!'
+ # redirect_to(edit_project_path(@project), status: :too_many_requests)
+ # end
+ class ApplicationRateLimiter
+ class << self
+ # Application rate limits
+ #
+ # Threshold value can be either an Integer or a Proc
+ # in order to not evaluate it's value every time this method is called
+ # and only do that when it's needed.
+ def rate_limits
+ {
+ project_export: { threshold: 1, interval: 5.minutes },
+ project_download_export: { threshold: 10, interval: 10.minutes },
+ project_generate_new_export: { threshold: 1, interval: 5.minutes },
+ play_pipeline_schedule: { threshold: 1, interval: 1.minute },
+ show_raw_controller: { threshold: -> { Gitlab::CurrentSettings.current_application_settings.raw_blob_request_limit }, interval: 1.minute }
+ }.freeze
+ end
+
+ # Increments the given key and returns true if the action should
+ # be throttled.
+ #
+ # @param key [Symbol] Key attribute registered in `.rate_limits`
+ # @option scope [Array<ActiveRecord>] Array of ActiveRecord models to scope throttling to a specific request (e.g. per user per project)
+ # @option threshold [Integer] Optional threshold value to override default one registered in `.rate_limits`
+ # @option interval [Integer] Optional interval value to override default one registered in `.rate_limits`
+ #
+ # @return [Boolean] Whether or not a request should be throttled
+ def throttled?(key, scope: nil, interval: nil, threshold: nil)
+ return unless rate_limits[key]
+
+ threshold_value = threshold || threshold(key)
+
+ threshold_value > 0 &&
+ increment(key, scope, interval) > threshold_value
+ end
+
+ # Increments the given cache key and increments the value by 1 with the
+ # expiration interval defined in `.rate_limits`.
+ #
+ # @param key [Symbol] Key attribute registered in `.rate_limits`
+ # @option scope [Array<ActiveRecord>] Array of ActiveRecord models to scope throttling to a specific request (e.g. per user per project)
+ # @option interval [Integer] Optional interval value to override default one registered in `.rate_limits`
+ #
+ # @return [Integer] incremented value
+ def increment(key, scope, interval = nil)
+ value = 0
+ interval_value = interval || interval(key)
+
+ Gitlab::Redis::Cache.with do |redis|
+ cache_key = action_key(key, scope)
+ value = redis.incr(cache_key)
+ redis.expire(cache_key, interval_value) if value == 1
+ end
+
+ value
+ end
+
+ # Logs request using provided logger
+ #
+ # @param request [Http::Request] - Web request to be logged
+ # @param type [Symbol] A symbol key that represents the request
+ # @param current_user [User] Current user of the request, it can be nil
+ # @param logger [Logger] Logger to log request to a specific log file. Defaults to Gitlab::AuthLogger
+ def log_request(request, type, current_user, logger = Gitlab::AuthLogger)
+ request_information = {
+ message: 'Application_Rate_Limiter_Request',
+ env: type,
+ remote_ip: request.ip,
+ request_method: request.request_method,
+ path: request.fullpath
+ }
+
+ if current_user
+ request_information.merge!({
+ user_id: current_user.id,
+ username: current_user.username
+ })
+ end
+
+ logger.error(request_information)
+ end
+
+ private
+
+ def threshold(key)
+ value = rate_limit_value_by_key(key, :threshold)
+
+ return value.call if value.is_a?(Proc)
+
+ value.to_i
+ end
+
+ def interval(key)
+ rate_limit_value_by_key(key, :interval).to_i
+ end
+
+ def rate_limit_value_by_key(key, setting)
+ action = rate_limits[key]
+
+ action[setting] if action
+ end
+
+ def action_key(key, scope)
+ composed_key = [key, scope].flatten.compact
+
+ serialized = composed_key.map do |obj|
+ if obj.is_a?(String) || obj.is_a?(Symbol)
+ "#{obj}"
+ else
+ "#{obj.class.model_name.to_s.underscore}:#{obj.id}"
+ end
+ end.join(":")
+
+ "application_rate_limiter:#{serialized}"
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/auth.rb b/lib/gitlab/auth.rb
index 4217859f9fb..dfdba617cb6 100644
--- a/lib/gitlab/auth.rb
+++ b/lib/gitlab/auth.rb
@@ -3,6 +3,7 @@
module Gitlab
module Auth
MissingPersonalAccessTokenError = Class.new(StandardError)
+ IpBlacklisted = Class.new(StandardError)
# Scopes used for GitLab API access
API_SCOPES = [:api, :read_user].freeze
@@ -35,6 +36,10 @@ module Gitlab
def find_for_git_client(login, password, project:, ip:)
raise "Must provide an IP for rate limiting" if ip.nil?
+ rate_limiter = Gitlab::Auth::IpRateLimiter.new(ip)
+
+ raise IpBlacklisted if !skip_rate_limit?(login: login) && rate_limiter.banned?
+
# `user_with_password_for_git` should be the last check
# because it's the most expensive, especially when LDAP
# is enabled.
@@ -48,7 +53,7 @@ module Gitlab
user_with_password_for_git(login, password) ||
Gitlab::Auth::Result.new
- rate_limit!(ip, success: result.success?, login: login) unless skip_rate_limit?(login: login)
+ rate_limit!(rate_limiter, success: result.success?, login: login)
Gitlab::Auth::UniqueIpsLimiter.limit_user!(result.actor)
return result if result.success? || authenticate_using_internal_or_ldap_password?
@@ -96,10 +101,11 @@ module Gitlab
end
end
+ private
+
# rubocop:disable Gitlab/RailsLogger
- def rate_limit!(ip, success:, login:)
- rate_limiter = Gitlab::Auth::IpRateLimiter.new(ip)
- return unless rate_limiter.enabled?
+ def rate_limit!(rate_limiter, success:, login:)
+ return if skip_rate_limit?(login: login)
if success
# Repeated login 'failures' are normal behavior for some Git clients so
@@ -109,18 +115,16 @@ module Gitlab
else
# Register a login failure so that Rack::Attack can block the next
# request from this IP if needed.
- rate_limiter.register_fail!
-
- if rate_limiter.banned?
- Rails.logger.info "IP #{ip} failed to login " \
+ # This returns true when the failures are over the threshold and the IP
+ # is banned.
+ if rate_limiter.register_fail!
+ Rails.logger.info "IP #{rate_limiter.ip} failed to login " \
"as #{login} but has been temporarily banned from Git auth"
end
end
end
# rubocop:enable Gitlab/RailsLogger
- private
-
def skip_rate_limit?(login:)
::Ci::Build::CI_REGISTRY_USER == login
end
diff --git a/lib/gitlab/auth/user_auth_finders.rb b/lib/gitlab/auth/auth_finders.rb
index e2f562c0843..33cbb070c2f 100644
--- a/lib/gitlab/auth/user_auth_finders.rb
+++ b/lib/gitlab/auth/auth_finders.rb
@@ -17,13 +17,17 @@ module Gitlab
end
end
- module UserAuthFinders
- prepend_if_ee('::EE::Gitlab::Auth::UserAuthFinders') # rubocop: disable Cop/InjectEnterpriseEditionModule
+ module AuthFinders
+ prepend_if_ee('::EE::Gitlab::Auth::AuthFinders') # rubocop: disable Cop/InjectEnterpriseEditionModule
include Gitlab::Utils::StrongMemoize
+ include ActionController::HttpAuthentication::Basic
PRIVATE_TOKEN_HEADER = 'HTTP_PRIVATE_TOKEN'
PRIVATE_TOKEN_PARAM = :private_token
+ JOB_TOKEN_HEADER = "HTTP_JOB_TOKEN".freeze
+ JOB_TOKEN_PARAM = :job_token
+ RUNNER_TOKEN_PARAM = :token
# Check the Rails session for valid authentication details
def find_user_from_warden
@@ -50,6 +54,33 @@ module Gitlab
User.find_by_feed_token(token) || raise(UnauthorizedError)
end
+ def find_user_from_job_token
+ return unless route_authentication_setting[:job_token_allowed]
+
+ token = (params[JOB_TOKEN_PARAM] || env[JOB_TOKEN_HEADER]).to_s
+ return unless token.present?
+
+ job = ::Ci::Build.find_by_token(token)
+ raise ::Gitlab::Auth::UnauthorizedError unless job
+
+ @current_authenticated_job = job # rubocop:disable Gitlab/ModuleWithInstanceVariables
+
+ job.user
+ end
+
+ def find_user_from_basic_auth_job
+ return unless has_basic_credentials?(current_request)
+
+ login, password = user_name_and_password(current_request)
+ return unless login.present? && password.present?
+ return unless ::Ci::Build::CI_REGISTRY_USER == login
+
+ job = ::Ci::Build.find_by_token(password)
+ raise UnauthorizedError unless job
+
+ job.user
+ end
+
# We only allow Private Access Tokens with `api` scope to be used by web
# requests on RSS feeds or ICS files for backwards compatibility.
# It is also used by GraphQL/API requests.
@@ -69,6 +100,15 @@ module Gitlab
access_token.user || raise(UnauthorizedError)
end
+ def find_runner_from_token
+ return unless api_request?
+
+ token = current_request.params[RUNNER_TOKEN_PARAM].presence
+ return unless token
+
+ ::Ci::Runner.find_by_token(token) || raise(UnauthorizedError)
+ end
+
def validate_access_token!(scopes: [])
return unless access_token
@@ -169,6 +209,8 @@ module Gitlab
case request_format
when :archive
archive_request?
+ when :blob
+ blob_request?
else
false
end
@@ -183,12 +225,16 @@ module Gitlab
end
def api_request?
- current_request.path.starts_with?("/api/")
+ current_request.path.starts_with?('/api/')
end
def archive_request?
current_request.path.include?('/-/archive/')
end
+
+ def blob_request?
+ current_request.path.include?('/raw/')
+ end
end
end
end
diff --git a/lib/gitlab/auth/current_user_mode.rb b/lib/gitlab/auth/current_user_mode.rb
index df5039f50c1..cb39baaa6cc 100644
--- a/lib/gitlab/auth/current_user_mode.rb
+++ b/lib/gitlab/auth/current_user_mode.rb
@@ -8,9 +8,13 @@ module Gitlab
# an administrator must have explicitly enabled admin-mode
# e.g. on web access require re-authentication
class CurrentUserMode
+ NotRequestedError = Class.new(StandardError)
+
SESSION_STORE_KEY = :current_user_mode
ADMIN_MODE_START_TIME_KEY = 'admin_mode'
+ ADMIN_MODE_REQUESTED_TIME_KEY = 'admin_mode_requested'
MAX_ADMIN_MODE_TIME = 6.hours
+ ADMIN_MODE_REQUESTED_GRACE_PERIOD = 5.minutes
def initialize(user)
@user = user
@@ -19,8 +23,16 @@ module Gitlab
def admin_mode?
return false unless user
- Gitlab::SafeRequestStore.fetch(request_store_key) do
- user&.admin? && any_session_with_admin_mode?
+ Gitlab::SafeRequestStore.fetch(admin_mode_rs_key) do
+ user.admin? && any_session_with_admin_mode?
+ end
+ end
+
+ def admin_mode_requested?
+ return false unless user
+
+ Gitlab::SafeRequestStore.fetch(admin_mode_requested_rs_key) do
+ user.admin? && admin_mode_requested_in_grace_period?
end
end
@@ -28,20 +40,45 @@ module Gitlab
return unless user&.admin?
return unless skip_password_validation || user&.valid_password?(password)
+ raise NotRequestedError unless admin_mode_requested?
+
+ reset_request_store
+
+ current_session_data[ADMIN_MODE_REQUESTED_TIME_KEY] = nil
current_session_data[ADMIN_MODE_START_TIME_KEY] = Time.now
end
+ def enable_sessionless_admin_mode!
+ request_admin_mode! && enable_admin_mode!(skip_password_validation: true)
+ end
+
def disable_admin_mode!
+ return unless user&.admin?
+
+ reset_request_store
+
+ current_session_data[ADMIN_MODE_REQUESTED_TIME_KEY] = nil
current_session_data[ADMIN_MODE_START_TIME_KEY] = nil
- Gitlab::SafeRequestStore.delete(request_store_key)
+ end
+
+ def request_admin_mode!
+ return unless user&.admin?
+
+ reset_request_store
+
+ current_session_data[ADMIN_MODE_REQUESTED_TIME_KEY] = Time.now
end
private
attr_reader :user
- def request_store_key
- @request_store_key ||= { res: :current_user_mode, user: user.id }
+ def admin_mode_rs_key
+ @admin_mode_rs_key ||= { res: :current_user_mode, user: user.id, method: :admin_mode? }
+ end
+
+ def admin_mode_requested_rs_key
+ @admin_mode_requested_rs_key ||= { res: :current_user_mode, user: user.id, method: :admin_mode_requested? }
end
def current_session_data
@@ -61,6 +98,15 @@ module Gitlab
Gitlab::NamespacedSessionStore.new(SESSION_STORE_KEY, session.with_indifferent_access )
end
end
+
+ def admin_mode_requested_in_grace_period?
+ current_session_data[ADMIN_MODE_REQUESTED_TIME_KEY].to_i > ADMIN_MODE_REQUESTED_GRACE_PERIOD.ago.to_i
+ end
+
+ def reset_request_store
+ Gitlab::SafeRequestStore.delete(admin_mode_rs_key)
+ Gitlab::SafeRequestStore.delete(admin_mode_requested_rs_key)
+ end
end
end
end
diff --git a/lib/gitlab/auth/ip_rate_limiter.rb b/lib/gitlab/auth/ip_rate_limiter.rb
index acb46abb6f3..f301a2ec2e8 100644
--- a/lib/gitlab/auth/ip_rate_limiter.rb
+++ b/lib/gitlab/auth/ip_rate_limiter.rb
@@ -9,41 +9,48 @@ module Gitlab
def initialize(ip)
@ip = ip
- @banned = false
- end
-
- def enabled?
- config.enabled
end
def reset!
+ return if skip_rate_limit?
+
Rack::Attack::Allow2Ban.reset(ip, config)
end
def register_fail!
- return false if trusted_ip?
+ return false if skip_rate_limit?
# Allow2Ban.filter will return false if this IP has not failed too often yet
- @banned = Rack::Attack::Allow2Ban.filter(ip, config) do
+ Rack::Attack::Allow2Ban.filter(ip, config) do
# We return true to increment the count for this IP
true
end
end
def banned?
- @banned
- end
+ return false if skip_rate_limit?
- def trusted_ip?
- trusted_ips.any? { |netmask| netmask.include?(ip) }
+ Rack::Attack::Allow2Ban.banned?(ip)
end
private
+ def skip_rate_limit?
+ !enabled? || trusted_ip?
+ end
+
+ def enabled?
+ config.enabled
+ end
+
def config
Gitlab.config.rack_attack.git_basic_auth
end
+ def trusted_ip?
+ trusted_ips.any? { |netmask| netmask.include?(ip) }
+ end
+
def trusted_ips
strong_memoize(:trusted_ips) do
config.ip_whitelist.map do |proxy|
diff --git a/lib/gitlab/auth/request_authenticator.rb b/lib/gitlab/auth/request_authenticator.rb
index aca8804b04c..34ccff588f4 100644
--- a/lib/gitlab/auth/request_authenticator.rb
+++ b/lib/gitlab/auth/request_authenticator.rb
@@ -5,7 +5,7 @@
module Gitlab
module Auth
class RequestAuthenticator
- include UserAuthFinders
+ include AuthFinders
attr_reader :request
@@ -23,10 +23,17 @@ module Gitlab
find_user_from_warden
end
+ def runner
+ find_runner_from_token
+ rescue Gitlab::Auth::AuthenticationError
+ nil
+ end
+
def find_sessionless_user(request_format)
find_user_from_web_access_token(request_format) ||
find_user_from_feed_token(request_format) ||
- find_user_from_static_object_token(request_format)
+ find_user_from_static_object_token(request_format) ||
+ find_user_from_basic_auth_job
rescue Gitlab::Auth::AuthenticationError
nil
end
diff --git a/lib/gitlab/background_migration/migrate_legacy_artifacts.rb b/lib/gitlab/background_migration/migrate_legacy_artifacts.rb
index 4377ec2987c..23d99274232 100644
--- a/lib/gitlab/background_migration/migrate_legacy_artifacts.rb
+++ b/lib/gitlab/background_migration/migrate_legacy_artifacts.rb
@@ -123,8 +123,6 @@ module Gitlab
end
def add_missing_db_timezone
- return '' unless Gitlab::Database.postgresql?
-
'at time zone \'UTC\''
end
end
diff --git a/lib/gitlab/bitbucket_import/importer.rb b/lib/gitlab/bitbucket_import/importer.rb
index e01ffb631ba..67118aed549 100644
--- a/lib/gitlab/bitbucket_import/importer.rb
+++ b/lib/gitlab/bitbucket_import/importer.rb
@@ -11,7 +11,6 @@ module Gitlab
{ title: 'task', color: '#7F8C8D' }].freeze
attr_reader :project, :client, :errors, :users
- attr_accessor :logger
def initialize(project)
@project = project
@@ -20,7 +19,6 @@ module Gitlab
@labels = {}
@errors = []
@users = {}
- @logger = Gitlab::Import::Logger.build
end
def execute
@@ -47,7 +45,8 @@ module Gitlab
backtrace = Gitlab::Profiler.clean_backtrace(ex.backtrace)
error = { type: :pull_request, iid: pull_request.iid, errors: ex.message, trace: backtrace, raw_response: pull_request.raw }
- log_error(error)
+ Gitlab::ErrorTracking.log_exception(ex, error)
+
# Omit the details from the database to avoid blowing up usage in the error column
error.delete(:trace)
error.delete(:raw_response)
@@ -275,10 +274,6 @@ module Gitlab
author.to_s + comment.note.to_s
end
- def log_error(details)
- logger.error(log_base_data.merge(details))
- end
-
def log_base_data
{
class: self.class.name,
diff --git a/lib/gitlab/bitbucket_server_import/importer.rb b/lib/gitlab/bitbucket_server_import/importer.rb
index 93c6fdcf69c..b7b2fe115c1 100644
--- a/lib/gitlab/bitbucket_server_import/importer.rb
+++ b/lib/gitlab/bitbucket_server_import/importer.rb
@@ -133,7 +133,10 @@ module Gitlab
log_info(stage: 'import_repository', message: 'finished import')
rescue Gitlab::Shell::Error => e
- log_error(stage: 'import_repository', message: 'failed import', error: e.message)
+ Gitlab::ErrorTracking.log_exception(
+ e,
+ stage: 'import_repository', message: 'failed import', error: e.message
+ )
# Expire cache to prevent scenarios such as:
# 1. First import failed, but the repo was imported successfully, so +exists?+ returns true
@@ -164,8 +167,10 @@ module Gitlab
batch.each do |pull_request|
import_bitbucket_pull_request(pull_request)
rescue StandardError => e
- backtrace = Gitlab::Profiler.clean_backtrace(e.backtrace)
- log_error(stage: 'import_pull_requests', iid: pull_request.iid, error: e.message, backtrace: backtrace)
+ Gitlab::ErrorTracking.log_exception(
+ e,
+ stage: 'import_pull_requests', iid: pull_request.iid, error: e.message
+ )
errors << { type: :pull_request, iid: pull_request.iid, errors: e.message, backtrace: backtrace.join("\n"), raw_response: pull_request.raw }
end
@@ -177,7 +182,11 @@ module Gitlab
client.delete_branch(project_key, repository_slug, branch.name, branch.sha)
project.repository.delete_branch(branch.name)
rescue BitbucketServer::Connection::ConnectionError => e
- log_error(stage: 'delete_temp_branches', branch: branch.name, error: e.message)
+ Gitlab::ErrorTracking.log_exception(
+ e,
+ stage: 'delete_temp_branches', branch: branch.name, error: e.message
+ )
+
@errors << { type: :delete_temp_branches, branch_name: branch.name, errors: e.message }
end
end
@@ -200,7 +209,6 @@ module Gitlab
target_project_id: project.id,
target_branch: Gitlab::Git.ref_name(pull_request.target_branch_name),
target_branch_sha: pull_request.target_branch_sha,
- state: pull_request.state,
state_id: MergeRequest.available_states[pull_request.state],
author_id: author_id,
assignee_id: nil,
@@ -289,7 +297,11 @@ module Gitlab
# a regular note.
create_fallback_diff_note(merge_request, comment, position)
rescue StandardError => e
- log_error(stage: 'create_diff_note', comment_id: comment.id, error: e.message)
+ Gitlab::ErrorTracking.log_exception(
+ e,
+ stage: 'create_diff_note', comment_id: comment.id, error: e.message
+ )
+
errors << { type: :pull_request, id: comment.id, errors: e.message }
nil
end
@@ -326,7 +338,11 @@ module Gitlab
merge_request.notes.create!(pull_request_comment_attributes(replies))
end
rescue StandardError => e
- log_error(stage: 'import_standalone_pr_comments', merge_request_id: merge_request.id, comment_id: comment.id, error: e.message)
+ Gitlab::ErrorTracking.log_exception(
+ e,
+ stage: 'import_standalone_pr_comments', merge_request_id: merge_request.id, comment_id: comment.id, error: e.message
+ )
+
errors << { type: :pull_request, comment_id: comment.id, errors: e.message }
end
end
@@ -361,10 +377,6 @@ module Gitlab
logger.info(log_base_data.merge(details))
end
- def log_error(details)
- logger.error(log_base_data.merge(details))
- end
-
def log_warn(details)
logger.warn(log_base_data.merge(details))
end
diff --git a/lib/gitlab/chaos.rb b/lib/gitlab/chaos.rb
index 4f47cdef971..911f2993b8a 100644
--- a/lib/gitlab/chaos.rb
+++ b/lib/gitlab/chaos.rb
@@ -19,9 +19,11 @@ module Gitlab
# cpu_spin will consume all CPU on a single core for the specified duration
def self.cpu_spin(duration_s)
- expected_end_time = Time.now + duration_s
+ return unless Gitlab::Metrics::System.thread_cpu_time
+
+ expected_end_time = Gitlab::Metrics::System.thread_cpu_time + duration_s
- rand while Time.now < expected_end_time
+ rand while Gitlab::Metrics::System.thread_cpu_time < expected_end_time
end
# db_spin will query the database in a tight loop for the specified duration
diff --git a/lib/gitlab/ci/ansi2json/converter.rb b/lib/gitlab/ci/ansi2json/converter.rb
index cbda3808b86..0373a12ab69 100644
--- a/lib/gitlab/ci/ansi2json/converter.rb
+++ b/lib/gitlab/ci/ansi2json/converter.rb
@@ -37,16 +37,13 @@ module Gitlab
flush_current_line
- # TODO: replace OpenStruct with a better type
- # https://gitlab.com/gitlab-org/gitlab/issues/34305
- OpenStruct.new(
+ Gitlab::Ci::Ansi2json::Result.new(
lines: @lines,
state: @state.encode,
append: append,
truncated: truncated,
offset: start_offset,
- size: stream.tell - start_offset,
- total: stream.size
+ stream: stream
)
end
diff --git a/lib/gitlab/ci/ansi2json/parser.rb b/lib/gitlab/ci/ansi2json/parser.rb
index d428680fb2a..79b42a5f5bf 100644
--- a/lib/gitlab/ci/ansi2json/parser.rb
+++ b/lib/gitlab/ci/ansi2json/parser.rb
@@ -94,7 +94,7 @@ module Gitlab
def on_38(stack) { fg: fg_color_256(stack) } end
- def on_39(_) { fg: fg_color(9) } end
+ def on_39(_) { fg: nil } end
def on_40(_) { bg: bg_color(0) } end
@@ -114,8 +114,7 @@ module Gitlab
def on_48(stack) { bg: bg_color_256(stack) } end
- # TODO: all the x9 never get called?
- def on_49(_) { fg: fg_color(9) } end
+ def on_49(_) { bg: nil } end
def on_90(_) { fg: fg_color(0, 'l') } end
diff --git a/lib/gitlab/ci/ansi2json/result.rb b/lib/gitlab/ci/ansi2json/result.rb
new file mode 100644
index 00000000000..9b573882a52
--- /dev/null
+++ b/lib/gitlab/ci/ansi2json/result.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+# Convertion result object class
+module Gitlab
+ module Ci
+ module Ansi2json
+ class Result
+ attr_reader :lines, :state, :append, :truncated, :offset, :size, :total
+
+ def initialize(lines:, state:, append:, truncated:, offset:, stream:)
+ @lines = lines
+ @state = state
+ @append = append
+ @truncated = truncated
+ @offset = offset
+ @size = stream.tell - offset
+ @total = stream.size
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/ci/ansi2json/style.rb b/lib/gitlab/ci/ansi2json/style.rb
index 77f61178b37..4d38ea55866 100644
--- a/lib/gitlab/ci/ansi2json/style.rb
+++ b/lib/gitlab/ci/ansi2json/style.rb
@@ -61,9 +61,9 @@ module Gitlab
case
when changes[:reset]
reset!
- when changes[:fg]
+ when changes.key?(:fg)
@fg = changes[:fg]
- when changes[:bg]
+ when changes.key?(:bg)
@bg = changes[:bg]
when changes[:enable]
@mask |= changes[:enable]
diff --git a/lib/gitlab/ci/build/prerequisite/kubernetes_namespace.rb b/lib/gitlab/ci/build/prerequisite/kubernetes_namespace.rb
index 9950e1dec55..465877871ea 100644
--- a/lib/gitlab/ci/build/prerequisite/kubernetes_namespace.rb
+++ b/lib/gitlab/ci/build/prerequisite/kubernetes_namespace.rb
@@ -8,7 +8,7 @@ module Gitlab
def unmet?
deployment_cluster.present? &&
deployment_cluster.managed? &&
- missing_namespace?
+ (missing_namespace? || need_knative_version_role_binding?)
end
def complete!
@@ -23,6 +23,10 @@ module Gitlab
kubernetes_namespace.nil? || kubernetes_namespace.service_account_token.blank?
end
+ def need_knative_version_role_binding?
+ !knative_serving_namespace.nil? && knative_version_role_binding.nil?
+ end
+
def deployment_cluster
build.deployment&.cluster
end
@@ -31,6 +35,22 @@ module Gitlab
build.deployment.environment
end
+ def knative_serving_namespace
+ strong_memoize(:knative_serving_namespace) do
+ Clusters::KnativeServingNamespaceFinder.new(
+ deployment_cluster
+ ).execute
+ end
+ end
+
+ def knative_version_role_binding
+ strong_memoize(:knative_version_role_binding) do
+ Clusters::KnativeVersionRoleBindingFinder.new(
+ deployment_cluster
+ ).execute
+ end
+ end
+
def kubernetes_namespace
strong_memoize(:kubernetes_namespace) do
Clusters::KubernetesNamespaceFinder.new(
@@ -43,12 +63,33 @@ module Gitlab
end
def create_namespace
+ namespace = kubernetes_namespace || build_namespace_record
+
+ return if conflicting_ci_namespace_requested?(namespace)
+
Clusters::Kubernetes::CreateOrUpdateNamespaceService.new(
cluster: deployment_cluster,
- kubernetes_namespace: kubernetes_namespace || build_namespace_record
+ kubernetes_namespace: namespace
).execute
end
+ ##
+ # A namespace can only be specified via gitlab-ci.yml
+ # for unmanaged clusters, as we currently have no way
+ # of preventing a job requesting a namespace it
+ # shouldn't have access to.
+ #
+ # To make this clear, we fail the build instead of
+ # silently using a namespace other than the one
+ # explicitly specified.
+ #
+ # Support for managed clusters will be added in
+ # https://gitlab.com/gitlab-org/gitlab/issues/38054
+ def conflicting_ci_namespace_requested?(namespace_record)
+ build.expanded_kubernetes_namespace.present? &&
+ namespace_record.namespace != build.expanded_kubernetes_namespace
+ end
+
def build_namespace_record
Clusters::BuildKubernetesNamespaceService.new(
deployment_cluster,
diff --git a/lib/gitlab/ci/config.rb b/lib/gitlab/ci/config.rb
index 9c1e6277e95..38ab3475d01 100644
--- a/lib/gitlab/ci/config.rb
+++ b/lib/gitlab/ci/config.rb
@@ -67,11 +67,11 @@ module Gitlab
build_config(config)
rescue Gitlab::Config::Loader::Yaml::DataTooLargeError => e
- track_exception(e)
+ track_and_raise_for_dev_exception(e)
raise Config::ConfigError, e.message
rescue Gitlab::Ci::Config::External::Context::TimeoutError => e
- track_exception(e)
+ track_and_raise_for_dev_exception(e)
raise Config::ConfigError, TIMEOUT_MESSAGE
end
@@ -94,8 +94,8 @@ module Gitlab
user: user)
end
- def track_exception(error)
- Gitlab::Sentry.track_exception(error, extra: @context.sentry_payload)
+ def track_and_raise_for_dev_exception(error)
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(error, @context.sentry_payload)
end
# Overriden in EE
diff --git a/lib/gitlab/ci/config/entry/default.rb b/lib/gitlab/ci/config/entry/default.rb
index 83127bde6e4..88db17a75da 100644
--- a/lib/gitlab/ci/config/entry/default.rb
+++ b/lib/gitlab/ci/config/entry/default.rb
@@ -14,7 +14,8 @@ module Gitlab
include ::Gitlab::Config::Entry::Inheritable
ALLOWED_KEYS = %i[before_script image services
- after_script cache interruptible].freeze
+ after_script cache interruptible
+ timeout retry tags artifacts].freeze
validations do
validates :config, allowed_keys: ALLOWED_KEYS
@@ -40,11 +41,27 @@ module Gitlab
description: 'Configure caching between build jobs.',
inherit: true
- entry :interruptible, Entry::Boolean,
+ entry :interruptible, ::Gitlab::Config::Entry::Boolean,
description: 'Set jobs interruptible default value.',
inherit: false
- helpers :before_script, :image, :services, :after_script, :cache, :interruptible
+ entry :timeout, Entry::Timeout,
+ description: 'Set jobs default timeout.',
+ inherit: false
+
+ entry :retry, Entry::Retry,
+ description: 'Set retry default value.',
+ inherit: false
+
+ entry :tags, ::Gitlab::Config::Entry::ArrayOfStrings,
+ description: 'Set the default tags.',
+ inherit: false
+
+ entry :artifacts, Entry::Artifacts,
+ description: 'Default artifacts.',
+ inherit: false
+
+ helpers :before_script, :image, :services, :after_script, :cache
private
diff --git a/lib/gitlab/ci/config/entry/environment.rb b/lib/gitlab/ci/config/entry/environment.rb
index 5a13fd18504..fc62cca58ff 100644
--- a/lib/gitlab/ci/config/entry/environment.rb
+++ b/lib/gitlab/ci/config/entry/environment.rb
@@ -8,9 +8,11 @@ module Gitlab
# Entry that represents an environment.
#
class Environment < ::Gitlab::Config::Entry::Node
- include ::Gitlab::Config::Entry::Validatable
+ include ::Gitlab::Config::Entry::Configurable
- ALLOWED_KEYS = %i[name url action on_stop].freeze
+ ALLOWED_KEYS = %i[name url action on_stop auto_stop_in kubernetes].freeze
+
+ entry :kubernetes, Entry::Kubernetes, description: 'Kubernetes deployment configuration.'
validations do
validate do
@@ -46,6 +48,8 @@ module Gitlab
allow_nil: true
validates :on_stop, type: String, allow_nil: true
+ validates :kubernetes, type: Hash, allow_nil: true
+ validates :auto_stop_in, duration: true, allow_nil: true
end
end
@@ -73,6 +77,14 @@ module Gitlab
value[:on_stop]
end
+ def kubernetes
+ value[:kubernetes]
+ end
+
+ def auto_stop_in
+ value[:auto_stop_in]
+ end
+
def value
case @config
when String then { name: @config, action: 'start' }
@@ -80,6 +92,10 @@ module Gitlab
else {}
end
end
+
+ def skip_config_hash_validation?
+ true
+ end
end
end
end
diff --git a/lib/gitlab/ci/config/entry/job.rb b/lib/gitlab/ci/config/entry/job.rb
index c75ae87a985..6a55b8cda57 100644
--- a/lib/gitlab/ci/config/entry/job.rb
+++ b/lib/gitlab/ci/config/entry/job.rb
@@ -36,7 +36,6 @@ module Gitlab
if: :has_rules?
with_options allow_nil: true do
- validates :tags, array_of_strings: true
validates :allow_failure, boolean: true
validates :parallel, numericality: { only_integer: true,
greater_than_or_equal_to: 2,
@@ -46,14 +45,12 @@ module Gitlab
message: "should be one of: #{ALLOWED_WHEN.join(', ')}"
}
- validates :timeout, duration: { limit: ChronicDuration.output(Project::MAX_BUILD_TIMEOUT) }
-
validates :dependencies, array_of_strings: true
validates :extends, array_of_strings_or_string: true
validates :rules, array_of_hashes: true
end
- validates :start_in, duration: { limit: '1 day' }, if: :delayed?
+ validates :start_in, duration: { limit: '1 week' }, if: :delayed?
validates :start_in, absence: true, if: -> { has_rules? || !delayed? }
validate do
@@ -99,13 +96,29 @@ module Gitlab
description: 'Services that will be used to execute this job.',
inherit: true
- entry :interruptible, Entry::Boolean,
+ entry :interruptible, ::Gitlab::Config::Entry::Boolean,
description: 'Set jobs interruptible value.',
inherit: true
+ entry :timeout, Entry::Timeout,
+ description: 'Timeout duration of this job.',
+ inherit: true
+
+ entry :retry, Entry::Retry,
+ description: 'Retry configuration for this job.',
+ inherit: true
+
+ entry :tags, ::Gitlab::Config::Entry::ArrayOfStrings,
+ description: 'Set the tags.',
+ inherit: true
+
+ entry :artifacts, Entry::Artifacts,
+ description: 'Artifacts configuration for this job.',
+ inherit: true
+
entry :only, Entry::Policy,
description: 'Refs policy this job will be executed for.',
- default: Entry::Policy::DEFAULT_ONLY,
+ default: ::Gitlab::Ci::Config::Entry::Policy::DEFAULT_ONLY,
inherit: false
entry :except, Entry::Policy,
@@ -121,17 +134,13 @@ module Gitlab
entry :needs, Entry::Needs,
description: 'Needs configuration for this job.',
- metadata: { allowed_needs: %i[job] },
+ metadata: { allowed_needs: %i[job cross_dependency] },
inherit: false
entry :variables, Entry::Variables,
description: 'Environment variables available for this job.',
inherit: false
- entry :artifacts, Entry::Artifacts,
- description: 'Artifacts configuration for this job.',
- inherit: false
-
entry :environment, Entry::Environment,
description: 'Environment configuration for this job.',
inherit: false
@@ -140,10 +149,6 @@ module Gitlab
description: 'Coverage configuration for this job.',
inherit: false
- entry :retry, Entry::Retry,
- description: 'Retry configuration for this job.',
- inherit: false
-
helpers :before_script, :script, :stage, :type, :after_script,
:cache, :image, :services, :only, :except, :variables,
:artifacts, :environment, :coverage, :retry, :rules,
@@ -170,11 +175,18 @@ module Gitlab
@entries.delete(:type)
- # This is something of a hack, see issue for details:
- # https://gitlab.com/gitlab-org/gitlab-foss/issues/67150
- if !only_defined? && has_rules?
- @entries.delete(:only)
- @entries.delete(:except)
+ has_workflow_rules = deps&.workflow&.has_rules?
+
+ # If workflow:rules: or rules: are used
+ # they are considered not compatible
+ # with `only/except` defaults
+ #
+ # Context: https://gitlab.com/gitlab-org/gitlab/merge_requests/21742
+ if has_rules? || has_workflow_rules
+ # Remove only/except defaults
+ # defaults are not considered as defined
+ @entries.delete(:only) unless only_defined?
+ @entries.delete(:except) unless except_defined?
end
end
end
diff --git a/lib/gitlab/ci/config/entry/kubernetes.rb b/lib/gitlab/ci/config/entry/kubernetes.rb
new file mode 100644
index 00000000000..2f1595d4437
--- /dev/null
+++ b/lib/gitlab/ci/config/entry/kubernetes.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Ci
+ class Config
+ module Entry
+ class Kubernetes < ::Gitlab::Config::Entry::Node
+ include ::Gitlab::Config::Entry::Validatable
+ include ::Gitlab::Config::Entry::Attributable
+
+ ALLOWED_KEYS = %i[namespace].freeze
+
+ attributes ALLOWED_KEYS
+
+ validations do
+ validates :config, type: Hash
+ validates :config, allowed_keys: ALLOWED_KEYS
+
+ validates :namespace, type: String, presence: true
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/ci/config/entry/need.rb b/lib/gitlab/ci/config/entry/need.rb
index b6db546d8ff..abfffb7a5ed 100644
--- a/lib/gitlab/ci/config/entry/need.rb
+++ b/lib/gitlab/ci/config/entry/need.rb
@@ -5,9 +5,12 @@ module Gitlab
class Config
module Entry
class Need < ::Gitlab::Config::Entry::Simplifiable
- strategy :Job, if: -> (config) { config.is_a?(String) }
+ strategy :JobString, if: -> (config) { config.is_a?(String) }
- class Job < ::Gitlab::Config::Entry::Node
+ strategy :JobHash,
+ if: -> (config) { config.is_a?(Hash) && config.key?(:job) && !(config.key?(:project) || config.key?(:ref)) }
+
+ class JobString < ::Gitlab::Config::Entry::Node
include ::Gitlab::Config::Entry::Validatable
validations do
@@ -20,7 +23,30 @@ module Gitlab
end
def value
- { name: @config }
+ { name: @config, artifacts: true }
+ end
+ end
+
+ class JobHash < ::Gitlab::Config::Entry::Node
+ include ::Gitlab::Config::Entry::Validatable
+ include ::Gitlab::Config::Entry::Attributable
+
+ ALLOWED_KEYS = %i[job artifacts].freeze
+ attributes :job, :artifacts
+
+ validations do
+ validates :config, presence: true
+ validates :config, allowed_keys: ALLOWED_KEYS
+ validates :job, type: String, presence: true
+ validates :artifacts, boolean: true, allow_nil: true
+ end
+
+ def type
+ :job
+ end
+
+ def value
+ { name: job, artifacts: artifacts || artifacts.nil? }
end
end
diff --git a/lib/gitlab/ci/config/entry/needs.rb b/lib/gitlab/ci/config/entry/needs.rb
index 28452aaaa16..5301c453ed4 100644
--- a/lib/gitlab/ci/config/entry/needs.rb
+++ b/lib/gitlab/ci/config/entry/needs.rb
@@ -53,3 +53,5 @@ module Gitlab
end
end
end
+
+::Gitlab::Ci::Config::Entry::Needs.prepend_if_ee('::EE::Gitlab::Ci::Config::Entry::Needs')
diff --git a/lib/gitlab/ci/config/entry/root.rb b/lib/gitlab/ci/config/entry/root.rb
index 25fb278d9b8..12dd942fc1c 100644
--- a/lib/gitlab/ci/config/entry/root.rb
+++ b/lib/gitlab/ci/config/entry/root.rb
@@ -67,7 +67,7 @@ module Gitlab
entry :workflow, Entry::Workflow,
description: 'List of evaluable rules to determine Pipeline status'
- helpers :default, :jobs, :stages, :types, :variables
+ helpers :default, :jobs, :stages, :types, :variables, :workflow
delegate :before_script_value,
:image_value,
@@ -106,6 +106,10 @@ module Gitlab
self[:default]
end
+ def workflow
+ self[:workflow] if workflow_defined?
+ end
+
private
# rubocop: disable CodeReuse/ActiveRecord
diff --git a/lib/gitlab/ci/config/entry/boolean.rb b/lib/gitlab/ci/config/entry/timeout.rb
index 10619ef9f8d..0bffa9340de 100644
--- a/lib/gitlab/ci/config/entry/boolean.rb
+++ b/lib/gitlab/ci/config/entry/timeout.rb
@@ -7,11 +7,11 @@ module Gitlab
##
# Entry that represents the interrutible value.
#
- class Boolean < ::Gitlab::Config::Entry::Node
+ class Timeout < ::Gitlab::Config::Entry::Node
include ::Gitlab::Config::Entry::Validatable
validations do
- validates :config, boolean: true
+ validates :config, duration: { limit: ChronicDuration.output(Project::MAX_BUILD_TIMEOUT) }
end
end
end
diff --git a/lib/gitlab/ci/config/entry/workflow.rb b/lib/gitlab/ci/config/entry/workflow.rb
index a51a3fbdcd2..1d9007c9b9b 100644
--- a/lib/gitlab/ci/config/entry/workflow.rb
+++ b/lib/gitlab/ci/config/entry/workflow.rb
@@ -18,6 +18,10 @@ module Gitlab
entry :rules, Entry::Rules,
description: 'List of evaluable Rules to determine Pipeline status.',
metadata: { allowed_when: %w[always never] }
+
+ def has_rules?
+ @config.try(:key?, :rules)
+ end
end
end
end
diff --git a/lib/gitlab/ci/config/normalizer.rb b/lib/gitlab/ci/config/normalizer.rb
index e714ef225f5..1139efee9e8 100644
--- a/lib/gitlab/ci/config/normalizer.rb
+++ b/lib/gitlab/ci/config/normalizer.rb
@@ -44,7 +44,7 @@ module Gitlab
if all_job_names = parallelized_jobs[job_need_name]
all_job_names.map do |job_name|
- { name: job_name }
+ job_need.merge(name: job_name)
end
else
job_need
diff --git a/lib/gitlab/ci/pipeline/chain/config/content.rb b/lib/gitlab/ci/pipeline/chain/config/content.rb
index a8cd99b8e92..d4b7444005e 100644
--- a/lib/gitlab/ci/pipeline/chain/config/content.rb
+++ b/lib/gitlab/ci/pipeline/chain/config/content.rb
@@ -8,21 +8,28 @@ module Gitlab
class Content < Chain::Base
include Chain::Helpers
- def perform!
- return if @command.config_content
-
- if content = content_from_repo
- @command.config_content = content
- @pipeline.config_source = :repository_source
- # TODO: we should persist ci_config_path
- # @pipeline.config_path = ci_config_path
- elsif content = content_from_auto_devops
- @command.config_content = content
- @pipeline.config_source = :auto_devops_source
- end
+ SOURCES = [
+ Gitlab::Ci::Pipeline::Chain::Config::Content::Runtime,
+ Gitlab::Ci::Pipeline::Chain::Config::Content::Repository,
+ Gitlab::Ci::Pipeline::Chain::Config::Content::ExternalProject,
+ Gitlab::Ci::Pipeline::Chain::Config::Content::Remote,
+ Gitlab::Ci::Pipeline::Chain::Config::Content::AutoDevops
+ ].freeze
+
+ LEGACY_SOURCES = [
+ Gitlab::Ci::Pipeline::Chain::Config::Content::Runtime,
+ Gitlab::Ci::Pipeline::Chain::Config::Content::LegacyRepository,
+ Gitlab::Ci::Pipeline::Chain::Config::Content::LegacyAutoDevops
+ ].freeze
- unless @command.config_content
- return error("Missing #{ci_config_path} file")
+ def perform!
+ if config = find_config
+ # TODO: we should persist config_content
+ # @pipeline.config_content = config.content
+ @command.config_content = config.content
+ @pipeline.config_source = config.source
+ else
+ error('Missing CI config file')
end
end
@@ -32,24 +39,21 @@ module Gitlab
private
- def content_from_repo
- return unless project
- return unless @pipeline.sha
- return unless ci_config_path
+ def find_config
+ sources.each do |source|
+ config = source.new(@pipeline, @command)
+ return config if config.exists?
+ end
- project.repository.gitlab_ci_yml_for(@pipeline.sha, ci_config_path)
- rescue GRPC::NotFound, GRPC::Internal
nil
end
- def content_from_auto_devops
- return unless project&.auto_devops_enabled?
-
- Gitlab::Template::GitlabCiYmlTemplate.find('Auto-DevOps').content
- end
-
- def ci_config_path
- project.ci_config_path.presence || '.gitlab-ci.yml'
+ def sources
+ if Feature.enabled?(:ci_root_config_content, @command.project, default_enabled: true)
+ SOURCES
+ else
+ LEGACY_SOURCES
+ end
end
end
end
diff --git a/lib/gitlab/ci/pipeline/chain/config/content/auto_devops.rb b/lib/gitlab/ci/pipeline/chain/config/content/auto_devops.rb
new file mode 100644
index 00000000000..e9bcc67de9c
--- /dev/null
+++ b/lib/gitlab/ci/pipeline/chain/config/content/auto_devops.rb
@@ -0,0 +1,28 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Ci
+ module Pipeline
+ module Chain
+ module Config
+ class Content
+ class AutoDevops < Source
+ def content
+ strong_memoize(:content) do
+ next unless project&.auto_devops_enabled?
+
+ template = Gitlab::Template::GitlabCiYmlTemplate.find('Auto-DevOps')
+ YAML.dump('include' => [{ 'template' => template.full_name }])
+ end
+ end
+
+ def source
+ :auto_devops_source
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/ci/pipeline/chain/config/content/external_project.rb b/lib/gitlab/ci/pipeline/chain/config/content/external_project.rb
new file mode 100644
index 00000000000..8a19e433483
--- /dev/null
+++ b/lib/gitlab/ci/pipeline/chain/config/content/external_project.rb
@@ -0,0 +1,35 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Ci
+ module Pipeline
+ module Chain
+ module Config
+ class Content
+ class ExternalProject < Source
+ def content
+ strong_memoize(:content) do
+ next unless external_project_path?
+
+ path_file, path_project = ci_config_path.split('@', 2)
+ YAML.dump('include' => [{ 'project' => path_project, 'file' => path_file }])
+ end
+ end
+
+ def source
+ :external_project_source
+ end
+
+ private
+
+ # Example: path/to/.gitlab-ci.yml@another-group/another-project
+ def external_project_path?
+ ci_config_path =~ /\A.+(yml|yaml)@.+\z/
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/ci/pipeline/chain/config/content/legacy_auto_devops.rb b/lib/gitlab/ci/pipeline/chain/config/content/legacy_auto_devops.rb
new file mode 100644
index 00000000000..c4cef356628
--- /dev/null
+++ b/lib/gitlab/ci/pipeline/chain/config/content/legacy_auto_devops.rb
@@ -0,0 +1,28 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Ci
+ module Pipeline
+ module Chain
+ module Config
+ class Content
+ class LegacyAutoDevops < Source
+ def content
+ strong_memoize(:content) do
+ next unless project&.auto_devops_enabled?
+
+ template = Gitlab::Template::GitlabCiYmlTemplate.find('Auto-DevOps')
+ template.content
+ end
+ end
+
+ def source
+ :auto_devops_source
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/ci/pipeline/chain/config/content/legacy_repository.rb b/lib/gitlab/ci/pipeline/chain/config/content/legacy_repository.rb
new file mode 100644
index 00000000000..fa4a97c6880
--- /dev/null
+++ b/lib/gitlab/ci/pipeline/chain/config/content/legacy_repository.rb
@@ -0,0 +1,31 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Ci
+ module Pipeline
+ module Chain
+ module Config
+ class Content
+ class LegacyRepository < Source
+ def content
+ strong_memoize(:content) do
+ next unless project
+ next unless @pipeline.sha
+ next unless ci_config_path
+
+ project.repository.gitlab_ci_yml_for(@pipeline.sha, ci_config_path)
+ rescue GRPC::NotFound, GRPC::Internal
+ nil
+ end
+ end
+
+ def source
+ :repository_source
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/ci/pipeline/chain/config/content/remote.rb b/lib/gitlab/ci/pipeline/chain/config/content/remote.rb
new file mode 100644
index 00000000000..dcc336b8929
--- /dev/null
+++ b/lib/gitlab/ci/pipeline/chain/config/content/remote.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Ci
+ module Pipeline
+ module Chain
+ module Config
+ class Content
+ class Remote < Source
+ def content
+ strong_memoize(:content) do
+ next unless ci_config_path =~ URI.regexp(%w[http https])
+
+ YAML.dump('include' => [{ 'remote' => ci_config_path }])
+ end
+ end
+
+ def source
+ :remote_source
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/ci/pipeline/chain/config/content/repository.rb b/lib/gitlab/ci/pipeline/chain/config/content/repository.rb
new file mode 100644
index 00000000000..0752b099d3d
--- /dev/null
+++ b/lib/gitlab/ci/pipeline/chain/config/content/repository.rb
@@ -0,0 +1,38 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Ci
+ module Pipeline
+ module Chain
+ module Config
+ class Content
+ class Repository < Source
+ def content
+ strong_memoize(:content) do
+ next unless file_in_repository?
+
+ YAML.dump('include' => [{ 'local' => ci_config_path }])
+ end
+ end
+
+ def source
+ :repository_source
+ end
+
+ private
+
+ def file_in_repository?
+ return unless project
+ return unless @pipeline.sha
+
+ project.repository.gitlab_ci_yml_for(@pipeline.sha, ci_config_path).present?
+ rescue GRPC::NotFound, GRPC::Internal
+ nil
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/ci/pipeline/chain/config/content/runtime.rb b/lib/gitlab/ci/pipeline/chain/config/content/runtime.rb
new file mode 100644
index 00000000000..4811d3d913d
--- /dev/null
+++ b/lib/gitlab/ci/pipeline/chain/config/content/runtime.rb
@@ -0,0 +1,30 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Ci
+ module Pipeline
+ module Chain
+ module Config
+ class Content
+ class Runtime < Source
+ def content
+ @command.config_content
+ end
+
+ def source
+ # The only case when this source is used is when the config content
+ # is passed in as parameter to Ci::CreatePipelineService.
+ # This would only occur with parent/child pipelines which is being
+ # implemented.
+ # TODO: change source to return :runtime_source
+ # https://gitlab.com/gitlab-org/gitlab/merge_requests/21041
+
+ nil
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/ci/pipeline/chain/config/content/source.rb b/lib/gitlab/ci/pipeline/chain/config/content/source.rb
new file mode 100644
index 00000000000..3389187473b
--- /dev/null
+++ b/lib/gitlab/ci/pipeline/chain/config/content/source.rb
@@ -0,0 +1,46 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Ci
+ module Pipeline
+ module Chain
+ module Config
+ class Content
+ class Source
+ include Gitlab::Utils::StrongMemoize
+
+ DEFAULT_YAML_FILE = '.gitlab-ci.yml'
+
+ def initialize(pipeline, command)
+ @pipeline = pipeline
+ @command = command
+ end
+
+ def exists?
+ strong_memoize(:exists) do
+ content.present?
+ end
+ end
+
+ def content
+ raise NotImplementedError
+ end
+
+ def source
+ raise NotImplementedError
+ end
+
+ def project
+ @project ||= @pipeline.project
+ end
+
+ def ci_config_path
+ @ci_config_path ||= project.ci_config_path.presence || DEFAULT_YAML_FILE
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/ci/pipeline/chain/config/process.rb b/lib/gitlab/ci/pipeline/chain/config/process.rb
index 731b0fdb286..09d1b0edc93 100644
--- a/lib/gitlab/ci/pipeline/chain/config/process.rb
+++ b/lib/gitlab/ci/pipeline/chain/config/process.rb
@@ -21,10 +21,10 @@ module Gitlab
rescue Gitlab::Ci::YamlProcessor::ValidationError => ex
error(ex.message, config_error: true)
rescue => ex
- Gitlab::Sentry.track_acceptable_exception(ex, extra: {
+ Gitlab::ErrorTracking.track_exception(ex,
project_id: project.id,
sha: @pipeline.sha
- })
+ )
error("Undefined error (#{Labkit::Correlation::CorrelationId.current_id})",
config_error: true)
diff --git a/lib/gitlab/ci/pipeline/chain/evaluate_workflow_rules.rb b/lib/gitlab/ci/pipeline/chain/evaluate_workflow_rules.rb
index 0ee9485eebc..81f5733b279 100644
--- a/lib/gitlab/ci/pipeline/chain/evaluate_workflow_rules.rb
+++ b/lib/gitlab/ci/pipeline/chain/evaluate_workflow_rules.rb
@@ -9,7 +9,13 @@ module Gitlab
include Chain::Helpers
def perform!
- return unless Feature.enabled?(:workflow_rules, @pipeline.project)
+ unless feature_enabled?
+ if has_workflow_rules?
+ error("Workflow rules are disabled", config_error: true)
+ end
+
+ return
+ end
unless workflow_passed?
error('Pipeline filtered out by workflow rules.')
@@ -17,13 +23,15 @@ module Gitlab
end
def break?
- return false unless Feature.enabled?(:workflow_rules, @pipeline.project)
-
- !workflow_passed?
+ @pipeline.errors.any? || @pipeline.persisted?
end
private
+ def feature_enabled?
+ Feature.enabled?(:workflow_rules, @pipeline.project, default_enabled: true)
+ end
+
def workflow_passed?
strong_memoize(:workflow_passed) do
workflow_rules.evaluate(@pipeline, global_context).pass?
@@ -40,6 +48,10 @@ module Gitlab
@pipeline, yaml_variables: workflow_config[:yaml_variables])
end
+ def has_workflow_rules?
+ workflow_config[:rules].present?
+ end
+
def workflow_config
@command.config_processor.workflow_attributes || {}
end
diff --git a/lib/gitlab/ci/pipeline/chain/helpers.rb b/lib/gitlab/ci/pipeline/chain/helpers.rb
index 8ccb1066575..982ecc0ff51 100644
--- a/lib/gitlab/ci/pipeline/chain/helpers.rb
+++ b/lib/gitlab/ci/pipeline/chain/helpers.rb
@@ -5,12 +5,13 @@ module Gitlab
module Pipeline
module Chain
module Helpers
- def error(message, config_error: false)
+ def error(message, config_error: false, drop_reason: nil)
if config_error && command.save_incompleted
+ drop_reason = :config_error
pipeline.yaml_errors = message
- pipeline.drop!(:config_error)
end
+ pipeline.drop!(drop_reason) if drop_reason
pipeline.errors.add(:base, message)
end
end
diff --git a/lib/gitlab/ci/pipeline/chain/validate/external.rb b/lib/gitlab/ci/pipeline/chain/validate/external.rb
new file mode 100644
index 00000000000..44dc333a6a1
--- /dev/null
+++ b/lib/gitlab/ci/pipeline/chain/validate/external.rb
@@ -0,0 +1,100 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Ci
+ module Pipeline
+ module Chain
+ module Validate
+ class External < Chain::Base
+ include Chain::Helpers
+
+ InvalidResponseCode = Class.new(StandardError)
+
+ VALIDATION_REQUEST_TIMEOUT = 5
+
+ def perform!
+ error('External validation failed', drop_reason: :external_validation_failure) unless validate_external
+ end
+
+ def break?
+ @pipeline.errors.any?
+ end
+
+ private
+
+ def validate_external
+ return true unless validation_service_url
+
+ # 200 - accepted
+ # 4xx - not accepted
+ # everything else - accepted and logged
+ response_code = validate_service_request.code
+ case response_code
+ when 200
+ true
+ when 400..499
+ false
+ else
+ raise InvalidResponseCode, "Unsupported response code received from Validation Service: #{response_code}"
+ end
+ rescue => ex
+ Gitlab::ErrorTracking.track_exception(ex)
+
+ true
+ end
+
+ def validate_service_request
+ Gitlab::HTTP.post(
+ validation_service_url, timeout: VALIDATION_REQUEST_TIMEOUT,
+ body: validation_service_payload(@pipeline, @command.config_processor.stages_attributes)
+ )
+ end
+
+ def validation_service_url
+ ENV['EXTERNAL_VALIDATION_SERVICE_URL']
+ end
+
+ def validation_service_payload(pipeline, stages_attributes)
+ {
+ project: {
+ id: pipeline.project.id,
+ path: pipeline.project.full_path
+ },
+ user: {
+ id: pipeline.user.id,
+ username: pipeline.user.username,
+ email: pipeline.user.email
+ },
+ pipeline: {
+ sha: pipeline.sha,
+ ref: pipeline.ref,
+ type: pipeline.source
+ },
+ builds: builds_validation_payload(stages_attributes)
+ }.to_json
+ end
+
+ def builds_validation_payload(stages_attributes)
+ stages_attributes.map { |stage| stage[:builds] }.flatten
+ .map(&method(:build_validation_payload))
+ end
+
+ def build_validation_payload(build)
+ {
+ name: build[:name],
+ stage: build[:stage],
+ image: build.dig(:options, :image, :name),
+ services: build.dig(:options, :services)&.map { |service| service[:name] },
+ script: [
+ build.dig(:options, :before_script),
+ build.dig(:options, :script),
+ build.dig(:options, :after_script)
+ ].flatten.compact
+ }
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/ci/pipeline/seed/build.rb b/lib/gitlab/ci/pipeline/seed/build.rb
index dce56b22666..590c7f4d1dd 100644
--- a/lib/gitlab/ci/pipeline/seed/build.rb
+++ b/lib/gitlab/ci/pipeline/seed/build.rb
@@ -10,7 +10,7 @@ module Gitlab
delegate :dig, to: :@seed_attributes
# When the `ci_dag_limit_needs` is enabled it uses the lower limit
- LOW_NEEDS_LIMIT = 5
+ LOW_NEEDS_LIMIT = 10
HARD_NEEDS_LIMIT = 50
def initialize(pipeline, attributes, previous_stages)
diff --git a/lib/gitlab/ci/templates/Jobs/Browser-Performance-Testing.gitlab-ci.yml b/lib/gitlab/ci/templates/Jobs/Browser-Performance-Testing.gitlab-ci.yml
index b0a79950667..426f0238f9d 100644
--- a/lib/gitlab/ci/templates/Jobs/Browser-Performance-Testing.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Jobs/Browser-Performance-Testing.gitlab-ci.yml
@@ -15,15 +15,15 @@ performance:
fi
- export CI_ENVIRONMENT_URL=$(cat environment_url.txt)
- mkdir gitlab-exporter
- - wget -O gitlab-exporter/index.js https://gitlab.com/gitlab-org/gl-performance/raw/10-5/index.js
+ - wget -O gitlab-exporter/index.js https://gitlab.com/gitlab-org/gl-performance/raw/1.0.0/index.js
- mkdir sitespeed-results
- |
if [ -f .gitlab-urls.txt ]
then
sed -i -e 's@^@'"$CI_ENVIRONMENT_URL"'@' .gitlab-urls.txt
- docker run --shm-size=1g --rm -v "$(pwd)":/sitespeed.io sitespeedio/sitespeed.io:6.3.1 --plugins.add ./gitlab-exporter --outputFolder sitespeed-results .gitlab-urls.txt
+ docker run --shm-size=1g --rm -v "$(pwd)":/sitespeed.io sitespeedio/sitespeed.io:11.2.0 --plugins.add ./gitlab-exporter --outputFolder sitespeed-results .gitlab-urls.txt
else
- docker run --shm-size=1g --rm -v "$(pwd)":/sitespeed.io sitespeedio/sitespeed.io:6.3.1 --plugins.add ./gitlab-exporter --outputFolder sitespeed-results "$CI_ENVIRONMENT_URL"
+ docker run --shm-size=1g --rm -v "$(pwd)":/sitespeed.io sitespeedio/sitespeed.io:11.2.0 --plugins.add ./gitlab-exporter --outputFolder sitespeed-results "$CI_ENVIRONMENT_URL"
fi
- mv sitespeed-results/data/performance.json performance.json
artifacts:
diff --git a/lib/gitlab/ci/templates/Jobs/Code-Quality.gitlab-ci.yml b/lib/gitlab/ci/templates/Jobs/Code-Quality.gitlab-ci.yml
index a60b00b2ee8..1708984c1cb 100644
--- a/lib/gitlab/ci/templates/Jobs/Code-Quality.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Jobs/Code-Quality.gitlab-ci.yml
@@ -7,6 +7,7 @@ code_quality:
variables:
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: ""
+ CODE_QUALITY_IMAGE: "registry.gitlab.com/gitlab-org/security-products/codequality:0.85.5"
script:
- |
if ! docker info &>/dev/null; then
@@ -14,11 +15,12 @@ code_quality:
export DOCKER_HOST='tcp://localhost:2375'
fi
fi
+ - docker pull --quiet "$CODE_QUALITY_IMAGE"
- docker run
--env SOURCE_CODE="$PWD"
--volume "$PWD":/code
--volume /var/run/docker.sock:/var/run/docker.sock
- "registry.gitlab.com/gitlab-org/security-products/codequality:12-5-stable" /code
+ "$CODE_QUALITY_IMAGE" /code
artifacts:
reports:
codequality: gl-code-quality-report.json
diff --git a/lib/gitlab/ci/templates/Jobs/Deploy.gitlab-ci.yml b/lib/gitlab/ci/templates/Jobs/Deploy.gitlab-ci.yml
index 738be44d5f4..d20d04425f6 100644
--- a/lib/gitlab/ci/templates/Jobs/Deploy.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Jobs/Deploy.gitlab-ci.yml
@@ -1,5 +1,5 @@
.auto-deploy:
- image: "registry.gitlab.com/gitlab-org/cluster-integration/auto-deploy-image:v0.7.0"
+ image: "registry.gitlab.com/gitlab-org/cluster-integration/auto-deploy-image:v0.8.3"
review:
extends: .auto-deploy
diff --git a/lib/gitlab/ci/templates/Managed-Cluster-Applications.gitlab-ci.yml b/lib/gitlab/ci/templates/Managed-Cluster-Applications.gitlab-ci.yml
new file mode 100644
index 00000000000..9a5b0f79ecf
--- /dev/null
+++ b/lib/gitlab/ci/templates/Managed-Cluster-Applications.gitlab-ci.yml
@@ -0,0 +1,16 @@
+apply:
+ stage: deploy
+ image: "registry.gitlab.com/gitlab-org/cluster-integration/cluster-applications:v0.3.0"
+ environment:
+ name: production
+ variables:
+ TILLER_NAMESPACE: gitlab-managed-apps
+ GITLAB_MANAGED_APPS_FILE: $CI_PROJECT_DIR/.gitlab/managed-apps/config.yaml
+ INGRESS_VALUES_FILE: $CI_PROJECT_DIR/.gitlab/managed-apps/ingress/values.yaml
+ SENTRY_VALUES_FILE: $CI_PROJECT_DIR/.gitlab/managed-apps/sentry/values.yaml
+ script:
+ - kubectl get namespace "$TILLER_NAMESPACE" || kubectl create namespace "$TILLER_NAMESPACE"
+ - gitlab-managed-apps /usr/local/share/gitlab-managed-apps/helmfile.yaml
+ only:
+ refs:
+ - master
diff --git a/lib/gitlab/ci/templates/Pages/Hugo.gitlab-ci.yml b/lib/gitlab/ci/templates/Pages/Hugo.gitlab-ci.yml
index 9a3ecd1c34f..975cb3b7698 100644
--- a/lib/gitlab/ci/templates/Pages/Hugo.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Pages/Hugo.gitlab-ci.yml
@@ -1,5 +1,16 @@
-# Full project: https://gitlab.com/pages/hugo
-image: dettmering/hugo-build
+---
+# All available Hugo versions are listed here:
+# https://gitlab.com/pages/hugo/container_registry
+image: registry.gitlab.com/pages/hugo:latest
+
+variables:
+ GIT_SUBMODULE_STRATEGY: recursive
+
+test:
+ script:
+ - hugo
+ except:
+ - master
pages:
script:
@@ -9,9 +20,3 @@ pages:
- public
only:
- master
-
-test:
- script:
- - hugo
- except:
- - master
diff --git a/lib/gitlab/ci/templates/Security/Container-Scanning.gitlab-ci.yml b/lib/gitlab/ci/templates/Security/Container-Scanning.gitlab-ci.yml
index ef2fc561201..f708e95c2cf 100644
--- a/lib/gitlab/ci/templates/Security/Container-Scanning.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Security/Container-Scanning.gitlab-ci.yml
@@ -1,7 +1,7 @@
# Read more about this feature here: https://docs.gitlab.com/ee/user/application_security/container_scanning/
variables:
- CS_MAJOR_VERSION: 1
+ CS_MAJOR_VERSION: 2
container_scanning:
stage: test
diff --git a/lib/gitlab/ci/templates/Security/Dependency-Scanning.gitlab-ci.yml b/lib/gitlab/ci/templates/Security/Dependency-Scanning.gitlab-ci.yml
index 4993d22d400..d73f6ccdb3f 100644
--- a/lib/gitlab/ci/templates/Security/Dependency-Scanning.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Security/Dependency-Scanning.gitlab-ci.yml
@@ -6,7 +6,7 @@
variables:
DS_ANALYZER_IMAGE_PREFIX: "registry.gitlab.com/gitlab-org/security-products/analyzers"
- DS_DEFAULT_ANALYZERS: "gemnasium, retire.js, gemnasium-python, gemnasium-maven, bundler-audit"
+ DS_DEFAULT_ANALYZERS: "bundler-audit, retire.js, gemnasium, gemnasium-maven, gemnasium-python"
DS_MAJOR_VERSION: 2
DS_DISABLE_DIND: "false"
@@ -43,15 +43,17 @@ dependency_scanning:
DS_ANALYZER_IMAGE_TAG \
DS_DEFAULT_ANALYZERS \
DS_EXCLUDED_PATHS \
- DEP_SCAN_DISABLE_REMOTE_CHECKS \
DS_DOCKER_CLIENT_NEGOTIATION_TIMEOUT \
DS_PULL_ANALYZER_IMAGE_TIMEOUT \
DS_RUN_ANALYZER_TIMEOUT \
DS_PYTHON_VERSION \
+ DS_PIP_VERSION \
DS_PIP_DEPENDENCY_PATH \
PIP_INDEX_URL \
PIP_EXTRA_INDEX_URL \
+ PIP_REQUIREMENTS_FILE \
MAVEN_CLI_OPTS \
+ BUNDLER_AUDIT_UPDATE_DISABLED \
) \
--volume "$PWD:/code" \
--volume /var/run/docker.sock:/var/run/docker.sock \
@@ -70,7 +72,7 @@ dependency_scanning:
- $DEPENDENCY_SCANNING_DISABLED
- $DS_DISABLE_DIND == 'true'
-.analyzer:
+.ds-analyzer:
extends: dependency_scanning
services: []
except:
@@ -80,7 +82,7 @@ dependency_scanning:
- /analyzer run
gemnasium-dependency_scanning:
- extends: .analyzer
+ extends: .ds-analyzer
image:
name: "$DS_ANALYZER_IMAGE_PREFIX/gemnasium:$DS_MAJOR_VERSION"
only:
@@ -90,7 +92,7 @@ gemnasium-dependency_scanning:
$CI_PROJECT_REPOSITORY_LANGUAGES =~ /ruby|javascript|php/
gemnasium-maven-dependency_scanning:
- extends: .analyzer
+ extends: .ds-analyzer
image:
name: "$DS_ANALYZER_IMAGE_PREFIX/gemnasium-maven:$DS_MAJOR_VERSION"
only:
@@ -100,7 +102,7 @@ gemnasium-maven-dependency_scanning:
$CI_PROJECT_REPOSITORY_LANGUAGES =~ /\bjava\b/
gemnasium-python-dependency_scanning:
- extends: .analyzer
+ extends: .ds-analyzer
image:
name: "$DS_ANALYZER_IMAGE_PREFIX/gemnasium-python:$DS_MAJOR_VERSION"
only:
@@ -110,7 +112,7 @@ gemnasium-python-dependency_scanning:
$CI_PROJECT_REPOSITORY_LANGUAGES =~ /python/
bundler-audit-dependency_scanning:
- extends: .analyzer
+ extends: .ds-analyzer
image:
name: "$DS_ANALYZER_IMAGE_PREFIX/bundler-audit:$DS_MAJOR_VERSION"
only:
@@ -120,7 +122,7 @@ bundler-audit-dependency_scanning:
$CI_PROJECT_REPOSITORY_LANGUAGES =~ /ruby/
retire-js-dependency_scanning:
- extends: .analyzer
+ extends: .ds-analyzer
image:
name: "$DS_ANALYZER_IMAGE_PREFIX/retire.js:$DS_MAJOR_VERSION"
only:
diff --git a/lib/gitlab/ci/templates/Security/SAST.gitlab-ci.yml b/lib/gitlab/ci/templates/Security/SAST.gitlab-ci.yml
index c81b4efddbc..34d84138a8b 100644
--- a/lib/gitlab/ci/templates/Security/SAST.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Security/SAST.gitlab-ci.yml
@@ -6,9 +6,10 @@
variables:
SAST_ANALYZER_IMAGE_PREFIX: "registry.gitlab.com/gitlab-org/security-products/analyzers"
- SAST_DEFAULT_ANALYZERS: "bandit, brakeman, gosec, spotbugs, flawfinder, phpcs-security-audit, security-code-scan, nodejs-scan, eslint, tslint, secrets, sobelow, pmd-apex"
+ SAST_DEFAULT_ANALYZERS: "bandit, brakeman, gosec, spotbugs, flawfinder, phpcs-security-audit, security-code-scan, nodejs-scan, eslint, tslint, secrets, sobelow, pmd-apex, kubesec"
SAST_ANALYZER_IMAGE_TAG: 2
SAST_DISABLE_DIND: "false"
+ SCAN_KUBERNETES_MANIFESTS: "false"
sast:
stage: test
@@ -49,7 +50,7 @@ sast:
- $SAST_DISABLED
- $SAST_DISABLE_DIND == 'true'
-.analyzer:
+.sast-analyzer:
extends: sast
services: []
except:
@@ -59,7 +60,7 @@ sast:
- /analyzer run
bandit-sast:
- extends: .analyzer
+ extends: .sast-analyzer
image:
name: "$SAST_ANALYZER_IMAGE_PREFIX/bandit:$SAST_ANALYZER_IMAGE_TAG"
only:
@@ -69,7 +70,7 @@ bandit-sast:
$CI_PROJECT_REPOSITORY_LANGUAGES =~ /python/
brakeman-sast:
- extends: .analyzer
+ extends: .sast-analyzer
image:
name: "$SAST_ANALYZER_IMAGE_PREFIX/brakeman:$SAST_ANALYZER_IMAGE_TAG"
only:
@@ -79,7 +80,7 @@ brakeman-sast:
$CI_PROJECT_REPOSITORY_LANGUAGES =~ /ruby/
eslint-sast:
- extends: .analyzer
+ extends: .sast-analyzer
image:
name: "$SAST_ANALYZER_IMAGE_PREFIX/eslint:$SAST_ANALYZER_IMAGE_TAG"
only:
@@ -89,7 +90,7 @@ eslint-sast:
$CI_PROJECT_REPOSITORY_LANGUAGES =~ /javascript/
flawfinder-sast:
- extends: .analyzer
+ extends: .sast-analyzer
image:
name: "$SAST_ANALYZER_IMAGE_PREFIX/flawfinder:$SAST_ANALYZER_IMAGE_TAG"
only:
@@ -98,8 +99,18 @@ flawfinder-sast:
$SAST_DEFAULT_ANALYZERS =~ /flawfinder/ &&
$CI_PROJECT_REPOSITORY_LANGUAGES =~ /\b(c\+\+|c)\b/
+kubesec-sast:
+ extends: .sast-analyzer
+ image:
+ name: "$SAST_ANALYZER_IMAGE_PREFIX/kubesec:$SAST_ANALYZER_IMAGE_TAG"
+ only:
+ variables:
+ - $GITLAB_FEATURES =~ /\bsast\b/ &&
+ $SAST_DEFAULT_ANALYZERS =~ /kubesec/ &&
+ $SCAN_KUBERNETES_MANIFESTS == 'true'
+
gosec-sast:
- extends: .analyzer
+ extends: .sast-analyzer
image:
name: "$SAST_ANALYZER_IMAGE_PREFIX/gosec:$SAST_ANALYZER_IMAGE_TAG"
only:
@@ -109,7 +120,7 @@ gosec-sast:
$CI_PROJECT_REPOSITORY_LANGUAGES =~ /\bgo\b/
nodejs-scan-sast:
- extends: .analyzer
+ extends: .sast-analyzer
image:
name: "$SAST_ANALYZER_IMAGE_PREFIX/nodejs-scan:$SAST_ANALYZER_IMAGE_TAG"
only:
@@ -119,7 +130,7 @@ nodejs-scan-sast:
$CI_PROJECT_REPOSITORY_LANGUAGES =~ /javascript/
phpcs-security-audit-sast:
- extends: .analyzer
+ extends: .sast-analyzer
image:
name: "$SAST_ANALYZER_IMAGE_PREFIX/phpcs-security-audit:$SAST_ANALYZER_IMAGE_TAG"
only:
@@ -129,7 +140,7 @@ phpcs-security-audit-sast:
$CI_PROJECT_REPOSITORY_LANGUAGES =~ /php/
pmd-apex-sast:
- extends: .analyzer
+ extends: .sast-analyzer
image:
name: "$SAST_ANALYZER_IMAGE_PREFIX/pmd-apex:$SAST_ANALYZER_IMAGE_TAG"
only:
@@ -139,7 +150,7 @@ pmd-apex-sast:
$CI_PROJECT_REPOSITORY_LANGUAGES =~ /apex/
secrets-sast:
- extends: .analyzer
+ extends: .sast-analyzer
image:
name: "$SAST_ANALYZER_IMAGE_PREFIX/secrets:$SAST_ANALYZER_IMAGE_TAG"
only:
@@ -148,7 +159,7 @@ secrets-sast:
$SAST_DEFAULT_ANALYZERS =~ /secrets/
security-code-scan-sast:
- extends: .analyzer
+ extends: .sast-analyzer
image:
name: "$SAST_ANALYZER_IMAGE_PREFIX/security-code-scan:$SAST_ANALYZER_IMAGE_TAG"
only:
@@ -158,7 +169,7 @@ security-code-scan-sast:
$CI_PROJECT_REPOSITORY_LANGUAGES =~ /\b(c\#|visual basic\b)/
sobelow-sast:
- extends: .analyzer
+ extends: .sast-analyzer
image:
name: "$SAST_ANALYZER_IMAGE_PREFIX/sobelow:$SAST_ANALYZER_IMAGE_TAG"
only:
@@ -168,7 +179,7 @@ sobelow-sast:
$CI_PROJECT_REPOSITORY_LANGUAGES =~ /elixir/
spotbugs-sast:
- extends: .analyzer
+ extends: .sast-analyzer
image:
name: "$SAST_ANALYZER_IMAGE_PREFIX/spotbugs:$SAST_ANALYZER_IMAGE_TAG"
only:
@@ -178,7 +189,7 @@ spotbugs-sast:
$CI_PROJECT_REPOSITORY_LANGUAGES =~ /java\b/
tslint-sast:
- extends: .analyzer
+ extends: .sast-analyzer
image:
name: "$SAST_ANALYZER_IMAGE_PREFIX/tslint:$SAST_ANALYZER_IMAGE_TAG"
only:
diff --git a/lib/gitlab/ci/templates/Verify/Browser-Performance.gitlab-ci.yml b/lib/gitlab/ci/templates/Verify/Browser-Performance.gitlab-ci.yml
index eced181e966..e6097ae322e 100644
--- a/lib/gitlab/ci/templates/Verify/Browser-Performance.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Verify/Browser-Performance.gitlab-ci.yml
@@ -11,7 +11,7 @@ performance:
image: docker:git
variables:
URL: https://example.com
- SITESPEED_VERSION: 6.3.1
+ SITESPEED_VERSION: 11.2.0
SITESPEED_OPTIONS: ''
services:
- docker:stable-dind
diff --git a/lib/gitlab/ci/yaml_processor.rb b/lib/gitlab/ci/yaml_processor.rb
index 833c545fc5b..27cd4f5fd6b 100644
--- a/lib/gitlab/ci/yaml_processor.rb
+++ b/lib/gitlab/ci/yaml_processor.rb
@@ -9,6 +9,12 @@ module Gitlab
attr_reader :stages, :jobs
+ ResultWithErrors = Struct.new(:content, :errors) do
+ def valid?
+ errors.empty?
+ end
+ end
+
def initialize(config, opts = {})
@ci_config = Gitlab::Ci::Config.new(config, **opts)
@config = @ci_config.to_hash
@@ -22,6 +28,18 @@ module Gitlab
raise ValidationError, e.message
end
+ def self.new_with_validation_errors(content, opts = {})
+ return ResultWithErrors.new('', ['Please provide content of .gitlab-ci.yml']) if content.blank?
+
+ config = Gitlab::Ci::Config.new(content, **opts)
+ return ResultWithErrors.new("", config.errors) unless config.valid?
+
+ config = Gitlab::Ci::YamlProcessor.new(content, opts)
+ ResultWithErrors.new(config, [])
+ rescue ValidationError, Gitlab::Ci::Config::ConfigError => e
+ ResultWithErrors.new('', [e.message])
+ end
+
def builds
@jobs.map do |name, _|
build_attributes(name)
@@ -42,6 +60,8 @@ module Gitlab
yaml_variables: transform_to_yaml_variables(job_variables(name)),
needs_attributes: job.dig(:needs, :job),
interruptible: job[:interruptible],
+ only: job[:only],
+ except: job[:except],
rules: job[:rules],
cache: job[:cache],
options: {
@@ -49,6 +69,7 @@ module Gitlab
services: job[:services],
artifacts: job[:artifacts],
dependencies: job[:dependencies],
+ cross_dependencies: job.dig(:needs, :cross_dependency),
job_timeout: job[:timeout],
before_script: job[:before_script],
script: job[:script],
@@ -71,13 +92,7 @@ module Gitlab
def stages_attributes
@stages.uniq.map do |stage|
- seeds = stage_builds_attributes(stage).map do |attributes|
- job = @jobs.fetch(attributes[:name].to_sym)
-
- attributes
- .merge(only: job.fetch(:only, {}))
- .merge(except: job.fetch(:except, {}))
- end
+ seeds = stage_builds_attributes(stage)
{ name: stage, index: @stages.index(stage), builds: seeds }
end
diff --git a/lib/gitlab/config/entry/array_of_strings.rb b/lib/gitlab/config/entry/array_of_strings.rb
new file mode 100644
index 00000000000..403b15e8f32
--- /dev/null
+++ b/lib/gitlab/config/entry/array_of_strings.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Config
+ module Entry
+ ##
+ # Entry that represents a array of strings value.
+ #
+ class ArrayOfStrings < Node
+ include Validatable
+
+ validations do
+ validates :config, array_of_strings: true
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/config/entry/configurable.rb b/lib/gitlab/config/entry/configurable.rb
index bda84dc2cff..d5a093a469a 100644
--- a/lib/gitlab/config/entry/configurable.rb
+++ b/lib/gitlab/config/entry/configurable.rb
@@ -25,7 +25,6 @@ module Gitlab
end
end
- # rubocop: disable CodeReuse/ActiveRecord
def compose!(deps = nil)
return unless valid?
@@ -35,11 +34,7 @@ module Gitlab
# we can end with different config types like String
next unless config.is_a?(Hash)
- factory
- .value(config[key])
- .with(key: key, parent: self)
-
- entries[key] = factory.create!
+ entry_create!(key, config[key])
end
yield if block_given?
@@ -49,6 +44,16 @@ module Gitlab
end
end
end
+
+ # rubocop: disable CodeReuse/ActiveRecord
+ def entry_create!(key, value)
+ factory = self.class
+ .nodes[key]
+ .value(value)
+ .with(key: key, parent: self)
+
+ entries[key] = factory.create!
+ end
# rubocop: enable CodeReuse/ActiveRecord
def skip_config_hash_validation?
diff --git a/lib/gitlab/cycle_analytics/code_event_fetcher.rb b/lib/gitlab/cycle_analytics/code_event_fetcher.rb
index fcc282bf7a6..d75da76415a 100644
--- a/lib/gitlab/cycle_analytics/code_event_fetcher.rb
+++ b/lib/gitlab/cycle_analytics/code_event_fetcher.rb
@@ -10,7 +10,7 @@ module Gitlab
mr_table[:iid],
mr_table[:id],
mr_table[:created_at],
- mr_table[:state],
+ mr_table[:state_id],
mr_table[:author_id]]
@order = mr_table[:created_at]
diff --git a/lib/gitlab/cycle_analytics/review_event_fetcher.rb b/lib/gitlab/cycle_analytics/review_event_fetcher.rb
index 4b5d79097b7..f5f8c19683d 100644
--- a/lib/gitlab/cycle_analytics/review_event_fetcher.rb
+++ b/lib/gitlab/cycle_analytics/review_event_fetcher.rb
@@ -10,7 +10,7 @@ module Gitlab
mr_table[:iid],
mr_table[:id],
mr_table[:created_at],
- mr_table[:state],
+ mr_table[:state_id],
mr_table[:author_id]]
super(*args)
diff --git a/lib/gitlab/danger/changelog.rb b/lib/gitlab/danger/changelog.rb
new file mode 100644
index 00000000000..b53516081be
--- /dev/null
+++ b/lib/gitlab/danger/changelog.rb
@@ -0,0 +1,40 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Danger
+ module Changelog
+ NO_CHANGELOG_LABELS = %w[backstage ci-build meta].freeze
+ NO_CHANGELOG_CATEGORIES = %i[docs none].freeze
+
+ def needed?
+ categories_need_changelog? && (gitlab.mr_labels & NO_CHANGELOG_LABELS).empty?
+ end
+
+ def found
+ git.added_files.find { |path| path =~ %r{\A(ee/)?(changelogs/unreleased)(-ee)?/} }
+ end
+
+ def presented_no_changelog_labels
+ NO_CHANGELOG_LABELS.map { |label| "~#{label}" }.join(', ')
+ end
+
+ def sanitized_mr_title
+ gitlab.mr_json["title"].gsub(/^WIP: */, '').gsub(/`/, '\\\`')
+ end
+
+ def ee_changelog?(changelog_path)
+ changelog_path =~ /unreleased-ee/
+ end
+
+ def ce_port_changelog?(changelog_path)
+ helper.ee? && !ee_changelog?(changelog_path)
+ end
+
+ private
+
+ def categories_need_changelog?
+ (helper.changes_by_category.keys - NO_CHANGELOG_CATEGORIES).any?
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/danger/helper.rb b/lib/gitlab/danger/helper.rb
index 0e7e0c40a8a..cd7d617509b 100644
--- a/lib/gitlab/danger/helper.rb
+++ b/lib/gitlab/danger/helper.rb
@@ -153,7 +153,10 @@ module Gitlab
# Fallbacks in case the above patterns miss anything
%r{\.rb\z} => :backend,
- %r{\.(md|txt)\z} => :none, # To reinstate roulette for documentation, set to `:docs`.
+ %r{(
+ \.(md|txt)\z |
+ \.markdownlint\.json
+ )}x => :none, # To reinstate roulette for documentation, set to `:docs`.
%r{\.js\z} => :frontend
}.freeze
diff --git a/lib/gitlab/danger/teammate.rb b/lib/gitlab/danger/teammate.rb
index e96f5177195..55476cd9789 100644
--- a/lib/gitlab/danger/teammate.rb
+++ b/lib/gitlab/danger/teammate.rb
@@ -63,7 +63,7 @@ module Gitlab
def has_capability?(project, category, kind, labels)
case category
when :test
- area = role[/Test Automation Engineer(?:.*?, (\w+))/, 1]
+ area = role[/Software Engineer in Test(?:.*?, (\w+))/, 1]
area && labels.any?("devops::#{area.downcase}") if kind == :reviewer
when :engineering_productivity
diff --git a/lib/gitlab/data_builder/build.rb b/lib/gitlab/data_builder/build.rb
index 3407380127e..f7b7db50b2f 100644
--- a/lib/gitlab/data_builder/build.rb
+++ b/lib/gitlab/data_builder/build.rb
@@ -31,6 +31,8 @@ module Gitlab
build_duration: build.duration,
build_allow_failure: build.allow_failure,
build_failure_reason: build.failure_reason,
+ pipeline_id: commit.id,
+ runner: build_runner(build.runner),
# TODO: do we still need it?
project_id: project.id,
@@ -43,6 +45,7 @@ module Gitlab
},
commit: {
+ # note: commit.id is actually the pipeline id
id: commit.id,
sha: commit.sha,
message: commit.git_commit_message,
@@ -75,6 +78,17 @@ module Gitlab
author = commit.try(:author)
author ? Gitlab::Routing.url_helpers.user_url(author) : "mailto:#{pipeline.git_author_email}"
end
+
+ def build_runner(runner)
+ return unless runner
+
+ {
+ id: runner.id,
+ description: runner.description,
+ active: runner.active?,
+ is_shared: runner.instance_type?
+ }
+ end
end
end
end
diff --git a/lib/gitlab/data_builder/pipeline.rb b/lib/gitlab/data_builder/pipeline.rb
index da3d6c47431..8e699de8164 100644
--- a/lib/gitlab/data_builder/pipeline.rb
+++ b/lib/gitlab/data_builder/pipeline.rb
@@ -61,6 +61,7 @@ module Gitlab
finished_at: build.finished_at,
when: build.when,
manual: build.action?,
+ allow_failure: build.allow_failure,
user: build.user.try(:hook_attrs),
runner: build.runner && runner_hook_attrs(build.runner),
artifacts_file: {
diff --git a/lib/gitlab/database.rb b/lib/gitlab/database.rb
index 50e23681de0..ceab9322857 100644
--- a/lib/gitlab/database.rb
+++ b/lib/gitlab/database.rb
@@ -95,6 +95,10 @@ module Gitlab
version.to_f >= 9.6
end
+ def self.upsert_supported?
+ version.to_f >= 9.5
+ end
+
# map some of the function names that changed between PostgreSQL 9 and 10
# https://wiki.postgresql.org/wiki/New_in_postgres_10
def self.pg_wal_lsn_diff
@@ -158,7 +162,9 @@ module Gitlab
# disable_quote - A key or an Array of keys to exclude from quoting (You
# become responsible for protection from SQL injection for
# these keys!)
- def self.bulk_insert(table, rows, return_ids: false, disable_quote: [])
+ # on_conflict - Defines an upsert. Values can be: :disabled (default) or
+ # :do_nothing
+ def self.bulk_insert(table, rows, return_ids: false, disable_quote: [], on_conflict: nil)
return if rows.empty?
keys = rows.first.keys
@@ -176,10 +182,12 @@ module Gitlab
VALUES #{tuples.map { |tuple| "(#{tuple.join(', ')})" }.join(', ')}
EOF
- if return_ids
- sql = "#{sql}RETURNING id"
+ if upsert_supported? && on_conflict == :do_nothing
+ sql = "#{sql} ON CONFLICT DO NOTHING"
end
+ sql = "#{sql} RETURNING id" if return_ids
+
result = connection.execute(sql)
if return_ids
diff --git a/lib/gitlab/database/migration_helpers.rb b/lib/gitlab/database/migration_helpers.rb
index 7ea7565f758..f9340b262e5 100644
--- a/lib/gitlab/database/migration_helpers.rb
+++ b/lib/gitlab/database/migration_helpers.rb
@@ -155,6 +155,7 @@ module Gitlab
# column - The name of the column to create the foreign key on.
# on_delete - The action to perform when associated data is removed,
# defaults to "CASCADE".
+ # name - The name of the foreign key.
#
# rubocop:disable Gitlab/RailsLogger
def add_concurrent_foreign_key(source, target, column:, on_delete: :cascade, name: nil)
@@ -164,25 +165,31 @@ module Gitlab
raise 'add_concurrent_foreign_key can not be run inside a transaction'
end
- on_delete = 'SET NULL' if on_delete == :nullify
+ options = {
+ column: column,
+ on_delete: on_delete,
+ name: name.presence || concurrent_foreign_key_name(source, column)
+ }
- key_name = name || concurrent_foreign_key_name(source, column)
-
- unless foreign_key_exists?(source, target, column: column)
- Rails.logger.warn "Foreign key not created because it exists already " \
+ if foreign_key_exists?(source, target, options)
+ warning_message = "Foreign key not created because it exists already " \
"(this may be due to an aborted migration or similar): " \
- "source: #{source}, target: #{target}, column: #{column}"
+ "source: #{source}, target: #{target}, column: #{options[:column]}, "\
+ "name: #{options[:name]}, on_delete: #{options[:on_delete]}"
+ Rails.logger.warn warning_message
+ else
# Using NOT VALID allows us to create a key without immediately
# validating it. This means we keep the ALTER TABLE lock only for a
# short period of time. The key _is_ enforced for any newly created
# data.
+
execute <<-EOF.strip_heredoc
ALTER TABLE #{source}
- ADD CONSTRAINT #{key_name}
- FOREIGN KEY (#{column})
+ ADD CONSTRAINT #{options[:name]}
+ FOREIGN KEY (#{options[:column]})
REFERENCES #{target} (id)
- #{on_delete ? "ON DELETE #{on_delete.upcase}" : ''}
+ #{on_delete_statement(options[:on_delete])}
NOT VALID;
EOF
end
@@ -193,18 +200,15 @@ module Gitlab
#
# Note this is a no-op in case the constraint is VALID already
disable_statement_timeout do
- execute("ALTER TABLE #{source} VALIDATE CONSTRAINT #{key_name};")
+ execute("ALTER TABLE #{source} VALIDATE CONSTRAINT #{options[:name]};")
end
end
# rubocop:enable Gitlab/RailsLogger
- def foreign_key_exists?(source, target = nil, column: nil)
- foreign_keys(source).any? do |key|
- if column
- key.options[:column].to_s == column.to_s
- else
- key.to_table.to_s == target.to_s
- end
+ def foreign_key_exists?(source, target = nil, **options)
+ foreign_keys(source).any? do |foreign_key|
+ tables_match?(target.to_s, foreign_key.to_table.to_s) &&
+ options_match?(foreign_key.options, options)
end
end
@@ -1048,8 +1052,32 @@ into similar problems in the future (e.g. when new tables are created).
connection.select_value(index_sql).to_i > 0
end
+ def create_or_update_plan_limit(limit_name, plan_name, limit_value)
+ execute <<~SQL
+ INSERT INTO plan_limits (plan_id, #{quote_column_name(limit_name)})
+ VALUES
+ ((SELECT id FROM plans WHERE name = #{quote(plan_name)} LIMIT 1), #{quote(limit_value)})
+ ON CONFLICT (plan_id) DO UPDATE SET #{quote_column_name(limit_name)} = EXCLUDED.#{quote_column_name(limit_name)};
+ SQL
+ end
+
private
+ def tables_match?(target_table, foreign_key_table)
+ target_table.blank? || foreign_key_table == target_table
+ end
+
+ def options_match?(foreign_key_options, options)
+ options.all? { |k, v| foreign_key_options[k].to_s == v.to_s }
+ end
+
+ def on_delete_statement(on_delete)
+ return '' if on_delete.blank?
+ return 'ON DELETE SET NULL' if on_delete == :nullify
+
+ "ON DELETE #{on_delete.upcase}"
+ end
+
def create_column_from(table, old, new, type: nil)
old_col = column_for(table, old)
new_type = type || old_col.type
diff --git a/lib/gitlab/database/obsolete_ignored_columns.rb b/lib/gitlab/database/obsolete_ignored_columns.rb
index 6266b6a4b65..ad5473f1b74 100644
--- a/lib/gitlab/database/obsolete_ignored_columns.rb
+++ b/lib/gitlab/database/obsolete_ignored_columns.rb
@@ -23,8 +23,15 @@ module Gitlab
private
def ignored_columns_safe_to_remove_for(klass)
- ignored = klass.ignored_columns.map(&:to_s)
+ ignores = ignored_and_not_present(klass).each_with_object({}) do |col, h|
+ h[col] = klass.ignored_columns_details[col.to_sym]
+ end
+
+ ignores.select { |_, i| i&.safe_to_remove? }
+ end
+ def ignored_and_not_present(klass)
+ ignored = klass.ignored_columns.map(&:to_s)
return [] if ignored.empty?
schema = klass.connection.schema_cache.columns_hash(klass.table_name)
diff --git a/lib/gitlab/database/sha256_attribute.rb b/lib/gitlab/database/sha256_attribute.rb
new file mode 100644
index 00000000000..adf3f7fb5a6
--- /dev/null
+++ b/lib/gitlab/database/sha256_attribute.rb
@@ -0,0 +1,33 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Database
+ # Class for casting binary data to hexadecimal SHA256 hashes (and vice-versa).
+ #
+ # Using Sha256Attribute allows you to store SHA256 values as binary while still
+ # using them as if they were stored as string values. This gives you the
+ # ease of use of string values, but without the storage overhead.
+ class Sha256Attribute < ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Bytea
+ # Casts binary data to a SHA256 and remove trailing = and newline from encode64
+ def deserialize(value)
+ value = super(value)
+ if value.present?
+ Base64.encode64(value).delete("=").chomp("\n")
+ else
+ nil
+ end
+ end
+
+ # Casts a SHA256 in a proper binary format. which is 32 bytes long
+ def serialize(value)
+ arg = if value.present?
+ Base64.decode64(value)
+ else
+ nil
+ end
+
+ super(arg)
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/database_importers/self_monitoring/project/create_service.rb b/lib/gitlab/database_importers/self_monitoring/project/create_service.rb
index 8cd9694b741..fbf252b7ec3 100644
--- a/lib/gitlab/database_importers/self_monitoring/project/create_service.rb
+++ b/lib/gitlab/database_importers/self_monitoring/project/create_service.rb
@@ -29,10 +29,11 @@ module Gitlab
def execute!
result = execute_steps
-
if result[:status] == :success
+ ::Gitlab::Tracking.event("self_monitoring", "project_created")
result
elsif STEPS_ALLOWED_TO_FAIL.include?(result[:last_step])
+ ::Gitlab::Tracking.event("self_monitoring", "project_created")
success
else
raise StandardError, result[:message]
diff --git a/lib/gitlab/dependency_linker/base_linker.rb b/lib/gitlab/dependency_linker/base_linker.rb
index ffad00fa7d7..dd7ab92c6ae 100644
--- a/lib/gitlab/dependency_linker/base_linker.rb
+++ b/lib/gitlab/dependency_linker/base_linker.rb
@@ -62,7 +62,7 @@ module Gitlab
end
def link_tag(name, url)
- %{<a href="#{ERB::Util.html_escape_once(url)}" rel="nofollow noreferrer noopener" target="_blank">#{ERB::Util.html_escape_once(name)}</a>}
+ %{<a href="#{ERB::Util.html_escape_once(url)}" rel="nofollow noreferrer noopener" target="_blank">#{ERB::Util.html_escape_once(name)}</a>}.html_safe
end
# Links package names based on regex.
diff --git a/lib/gitlab/diff/deprecated_highlight_cache.rb b/lib/gitlab/diff/deprecated_highlight_cache.rb
new file mode 100644
index 00000000000..47347686973
--- /dev/null
+++ b/lib/gitlab/diff/deprecated_highlight_cache.rb
@@ -0,0 +1,68 @@
+# frozen_string_literal: true
+#
+module Gitlab
+ module Diff
+ class DeprecatedHighlightCache
+ delegate :diffable, to: :@diff_collection
+ delegate :diff_options, to: :@diff_collection
+
+ def initialize(diff_collection, backend: Rails.cache)
+ @backend = backend
+ @diff_collection = diff_collection
+ end
+
+ # - Reads from cache
+ # - Assigns DiffFile#highlighted_diff_lines for cached files
+ def decorate(diff_file)
+ if content = read_file(diff_file)
+ diff_file.highlighted_diff_lines = content.map do |line|
+ Gitlab::Diff::Line.init_from_hash(line)
+ end
+ end
+ end
+
+ # It populates a Hash in order to submit a single write to the memory
+ # cache. This avoids excessive IO generated by N+1's (1 writing for
+ # each highlighted line or file).
+ def write_if_empty
+ return if cached_content.present?
+
+ @diff_collection.diff_files.each do |diff_file|
+ next unless cacheable?(diff_file)
+
+ diff_file_id = diff_file.file_identifier
+
+ cached_content[diff_file_id] = diff_file.highlighted_diff_lines.map(&:to_hash)
+ end
+
+ cache.write(key, cached_content, expires_in: 1.week)
+ end
+
+ def clear
+ cache.delete(key)
+ end
+
+ def key
+ [diffable, 'highlighted-diff-files', Gitlab::Diff::Line::SERIALIZE_KEYS, diff_options]
+ end
+
+ private
+
+ def read_file(diff_file)
+ cached_content[diff_file.file_identifier]
+ end
+
+ def cache
+ @backend
+ end
+
+ def cached_content
+ @cached_content ||= cache.read(key) || {}
+ end
+
+ def cacheable?(diff_file)
+ diffable.present? && diff_file.text? && diff_file.diffable?
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/diff/file_collection/base.rb b/lib/gitlab/diff/file_collection/base.rb
index c5bbf522f7c..38b636e4e5a 100644
--- a/lib/gitlab/diff/file_collection/base.rb
+++ b/lib/gitlab/diff/file_collection/base.rb
@@ -8,7 +8,7 @@ module Gitlab
attr_reader :project, :diff_options, :diff_refs, :fallback_diff_refs, :diffable
- delegate :count, :size, :real_size, to: :diff_files
+ delegate :count, :size, :real_size, to: :raw_diff_files
def self.default_options
::Commit.max_diff_options.merge(ignore_whitespace_change: false, expanded: false, include_stats: true)
@@ -31,7 +31,23 @@ module Gitlab
end
def diff_files
- @diff_files ||= diffs.decorate! { |diff| decorate_diff!(diff) }
+ raw_diff_files
+ end
+
+ def raw_diff_files
+ @raw_diff_files ||= diffs.decorate! { |diff| decorate_diff!(diff) }
+ end
+
+ def diff_file_paths
+ diff_files.map(&:file_path)
+ end
+
+ def pagination_data
+ {
+ current_page: nil,
+ next_page: nil,
+ total_pages: nil
+ }
end
# This mutates `diff_files` lines.
diff --git a/lib/gitlab/diff/file_collection/merge_request_diff.rb b/lib/gitlab/diff/file_collection/merge_request_diff.rb
index c4288ca6408..fe7df1062c0 100644
--- a/lib/gitlab/diff/file_collection/merge_request_diff.rb
+++ b/lib/gitlab/diff/file_collection/merge_request_diff.rb
@@ -4,37 +4,6 @@ module Gitlab
module Diff
module FileCollection
class MergeRequestDiff < MergeRequestDiffBase
- def diff_files
- diff_files = super
-
- diff_files.each { |diff_file| cache.decorate(diff_file) }
-
- diff_files
- end
-
- override :write_cache
- def write_cache
- cache.write_if_empty
- end
-
- override :clear_cache
- def clear_cache
- cache.clear
- end
-
- def cache_key
- cache.key
- end
-
- def real_size
- @merge_request_diff.real_size
- end
-
- private
-
- def cache
- @cache ||= Gitlab::Diff::HighlightCache.new(self)
- end
end
end
end
diff --git a/lib/gitlab/diff/file_collection/merge_request_diff_base.rb b/lib/gitlab/diff/file_collection/merge_request_diff_base.rb
index a747a6ed475..06cf3d4d168 100644
--- a/lib/gitlab/diff/file_collection/merge_request_diff_base.rb
+++ b/lib/gitlab/diff/file_collection/merge_request_diff_base.rb
@@ -15,6 +15,44 @@ module Gitlab
diff_refs: merge_request_diff.diff_refs,
fallback_diff_refs: merge_request_diff.fallback_diff_refs)
end
+
+ def diff_files
+ strong_memoize(:diff_files) do
+ diff_files = super
+
+ diff_files.each { |diff_file| cache.decorate(diff_file) }
+
+ diff_files
+ end
+ end
+
+ override :write_cache
+ def write_cache
+ cache.write_if_empty
+ end
+
+ override :clear_cache
+ def clear_cache
+ cache.clear
+ end
+
+ def cache_key
+ cache.key
+ end
+
+ def real_size
+ @merge_request_diff.real_size
+ end
+
+ private
+
+ def cache
+ @cache ||= if Feature.enabled?(:hset_redis_diff_caching, project)
+ Gitlab::Diff::HighlightCache.new(self)
+ else
+ Gitlab::Diff::DeprecatedHighlightCache.new(self)
+ end
+ end
end
end
end
diff --git a/lib/gitlab/diff/file_collection/merge_request_diff_batch.rb b/lib/gitlab/diff/file_collection/merge_request_diff_batch.rb
index 663326e01d5..c6d1e0b93a7 100644
--- a/lib/gitlab/diff/file_collection/merge_request_diff_batch.rb
+++ b/lib/gitlab/diff/file_collection/merge_request_diff_batch.rb
@@ -29,10 +29,6 @@ module Gitlab
}
end
- def diff_file_paths
- diff_files.map(&:file_path)
- end
-
override :diffs
def diffs
strong_memoize(:diffs) do
diff --git a/lib/gitlab/diff/highlight.rb b/lib/gitlab/diff/highlight.rb
index ca7974930af..0d027809ba8 100644
--- a/lib/gitlab/diff/highlight.rb
+++ b/lib/gitlab/diff/highlight.rb
@@ -35,7 +35,7 @@ module Gitlab
# match the blob, which is a bug. But we shouldn't fail to render
# completely in that case, even though we want to report the error.
rescue RangeError => e
- Gitlab::Sentry.track_exception(e, issue_url: 'https://gitlab.com/gitlab-org/gitlab-foss/issues/45441')
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(e, issue_url: 'https://gitlab.com/gitlab-org/gitlab-foss/issues/45441')
end
end
diff --git a/lib/gitlab/diff/highlight_cache.rb b/lib/gitlab/diff/highlight_cache.rb
index e4390771db2..403effbb0c6 100644
--- a/lib/gitlab/diff/highlight_cache.rb
+++ b/lib/gitlab/diff/highlight_cache.rb
@@ -3,66 +3,154 @@
module Gitlab
module Diff
class HighlightCache
- delegate :diffable, to: :@diff_collection
+ include Gitlab::Utils::StrongMemoize
+
+ EXPIRATION = 1.week
+ VERSION = 1
+
+ delegate :diffable, to: :@diff_collection
delegate :diff_options, to: :@diff_collection
- def initialize(diff_collection, backend: Rails.cache)
- @backend = backend
+ def initialize(diff_collection)
@diff_collection = diff_collection
end
# - Reads from cache
# - Assigns DiffFile#highlighted_diff_lines for cached files
+ #
def decorate(diff_file)
if content = read_file(diff_file)
diff_file.highlighted_diff_lines = content.map do |line|
- Gitlab::Diff::Line.init_from_hash(line)
+ Gitlab::Diff::Line.safe_init_from_hash(line)
end
end
end
- # It populates a Hash in order to submit a single write to the memory
- # cache. This avoids excessive IO generated by N+1's (1 writing for
- # each highlighted line or file).
+ # For every file that isn't already contained in the redis hash, store the
+ # result of #highlighted_diff_lines, then submit the uncached content
+ # to #write_to_redis_hash to submit a single write. This avoids excessive
+ # IO generated by N+1's (1 writing for each highlighted line or file).
+ #
def write_if_empty
- return if cached_content.present?
+ return if cacheable_files.empty?
- @diff_collection.diff_files.each do |diff_file|
- next unless cacheable?(diff_file)
+ new_cache_content = {}
- diff_file_id = diff_file.file_identifier
-
- cached_content[diff_file_id] = diff_file.highlighted_diff_lines.map(&:to_hash)
+ cacheable_files.each do |diff_file|
+ new_cache_content[diff_file.file_path] = diff_file.highlighted_diff_lines.map(&:to_hash)
end
- cache.write(key, cached_content, expires_in: 1.week)
+ write_to_redis_hash(new_cache_content)
end
def clear
- cache.delete(key)
+ Gitlab::Redis::Cache.with do |redis|
+ redis.del(key)
+ end
end
def key
- [diffable, 'highlighted-diff-files', Gitlab::Diff::Line::SERIALIZE_KEYS, diff_options]
+ strong_memoize(:redis_key) do
+ ['highlighted-diff-files', diffable.cache_key, VERSION, diff_options].join(":")
+ end
end
private
- def read_file(diff_file)
- cached_content[diff_file.file_identifier]
+ # We create a Gitlab::Diff::DeprecatedHighlightCache here in order to
+ # expire deprecated cache entries while we make the transition. This can
+ # be removed when :hset_redis_diff_caching is fully launched.
+ # See https://gitlab.com/gitlab-org/gitlab/issues/38008
+ #
+ def deprecated_cache
+ strong_memoize(:deprecated_cache) do
+ Gitlab::Diff::DeprecatedHighlightCache.new(@diff_collection)
+ end
+ end
+
+ def cacheable_files
+ strong_memoize(:cacheable_files) do
+ diff_files.select { |file| cacheable?(file) && read_file(file).nil? }
+ end
end
- def cache
- @backend
+ # Given a hash of:
+ # { "file/to/cache" =>
+ # [ { line_code: "a5cc2925ca8258af241be7e5b0381edf30266302_19_19",
+ # rich_text: " <span id=\"LC19\" class=\"line\" lang=\"plaintext\">config/initializers/secret_token.rb</span>\n",
+ # text: " config/initializers/secret_token.rb",
+ # type: nil,
+ # index: 3,
+ # old_pos: 19,
+ # new_pos: 19 }
+ # ] }
+ #
+ # ...it will write/update a Gitlab::Redis hash (HSET)
+ #
+ def write_to_redis_hash(hash)
+ Gitlab::Redis::Cache.with do |redis|
+ redis.pipelined do
+ hash.each do |diff_file_id, highlighted_diff_lines_hash|
+ redis.hset(key, diff_file_id, highlighted_diff_lines_hash.to_json)
+ end
+
+ # HSETs have to have their expiration date manually updated
+ #
+ redis.expire(key, EXPIRATION)
+ end
+ end
+
+ # Subsequent read_file calls would need the latest cache.
+ #
+ clear_memoization(:cached_content)
+ clear_memoization(:cacheable_files)
+
+ # Clean up any deprecated hash entries
+ #
+ deprecated_cache.clear
+ end
+
+ def file_paths
+ strong_memoize(:file_paths) do
+ diff_files.collect(&:file_path)
+ end
+ end
+
+ def read_file(diff_file)
+ cached_content[diff_file.file_path]
end
def cached_content
- @cached_content ||= cache.read(key) || {}
+ strong_memoize(:cached_content) { read_cache }
+ end
+
+ def read_cache
+ return {} unless file_paths.any?
+
+ results = []
+
+ Gitlab::Redis::Cache.with do |redis|
+ results = redis.hmget(key, file_paths)
+ end
+
+ results.map! do |result|
+ JSON.parse(result, symbolize_names: true) unless result.nil?
+ end
+
+ file_paths.zip(results).to_h
end
def cacheable?(diff_file)
diffable.present? && diff_file.text? && diff_file.diffable?
end
+
+ def diff_files
+ # We access raw_diff_files here, as diff_files will attempt to apply the
+ # highlighting code found in this class, leading to a circular
+ # reference.
+ #
+ @diff_collection.raw_diff_files
+ end
end
end
end
diff --git a/lib/gitlab/diff/inline_diff_marker.rb b/lib/gitlab/diff/inline_diff_marker.rb
index 1bbde1ffd2a..29dff699ba5 100644
--- a/lib/gitlab/diff/inline_diff_marker.rb
+++ b/lib/gitlab/diff/inline_diff_marker.rb
@@ -9,7 +9,7 @@ module Gitlab
def mark(line_inline_diffs, mode: nil)
super(line_inline_diffs) do |text, left:, right:|
- %{<span class="#{html_class_names(left, right, mode)}">#{text}</span>}
+ %{<span class="#{html_class_names(left, right, mode)}">#{text}</span>}.html_safe
end
end
diff --git a/lib/gitlab/diff/line.rb b/lib/gitlab/diff/line.rb
index 001748afb41..379fc6af875 100644
--- a/lib/gitlab/diff/line.rb
+++ b/lib/gitlab/diff/line.rb
@@ -3,6 +3,9 @@
module Gitlab
module Diff
class Line
+ # When SERIALIZE_KEYS is updated, to reset the redis cache entries you'll
+ # need to bump the VERSION constant on Gitlab::Diff::HighlightCache
+ #
SERIALIZE_KEYS = %i(line_code rich_text text type index old_pos new_pos).freeze
attr_reader :line_code, :type, :old_pos, :new_pos
@@ -31,6 +34,14 @@ module Gitlab
rich_text: hash[:rich_text])
end
+ def self.safe_init_from_hash(hash)
+ line = hash.with_indifferent_access
+ rich_text = line[:rich_text]
+ line[:rich_text] = rich_text&.html_safe
+
+ init_from_hash(line)
+ end
+
def to_hash
hash = {}
SERIALIZE_KEYS.each { |key| hash[key] = send(key) } # rubocop:disable GitlabSecurity/PublicSend
diff --git a/lib/gitlab/discussions_diff/highlight_cache.rb b/lib/gitlab/discussions_diff/highlight_cache.rb
index 369c6b87fb4..1f64883cb69 100644
--- a/lib/gitlab/discussions_diff/highlight_cache.rb
+++ b/lib/gitlab/discussions_diff/highlight_cache.rb
@@ -43,11 +43,7 @@ module Gitlab
next unless lines
JSON.parse(lines).map! do |line|
- line = line.with_indifferent_access
- rich_text = line[:rich_text]
- line[:rich_text] = rich_text&.html_safe
-
- Gitlab::Diff::Line.init_from_hash(line)
+ Gitlab::Diff::Line.safe_init_from_hash(line)
end
end
end
diff --git a/lib/gitlab/elasticsearch/logger.rb b/lib/gitlab/elasticsearch/logger.rb
new file mode 100644
index 00000000000..86cd1d942f2
--- /dev/null
+++ b/lib/gitlab/elasticsearch/logger.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Elasticsearch
+ class Logger < ::Gitlab::JsonLogger
+ def self.file_name_noext
+ 'elasticsearch'
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/error_tracking.rb b/lib/gitlab/error_tracking.rb
new file mode 100644
index 00000000000..6df9bfad657
--- /dev/null
+++ b/lib/gitlab/error_tracking.rb
@@ -0,0 +1,154 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module ErrorTracking
+ class << self
+ def configure
+ Raven.configure do |config|
+ config.dsn = sentry_dsn
+ config.release = Gitlab.revision
+ config.current_environment = Gitlab.config.sentry.environment
+
+ # Sanitize fields based on those sanitized from Rails.
+ config.sanitize_fields = Rails.application.config.filter_parameters.map(&:to_s)
+ # Sanitize authentication headers
+ config.sanitize_http_headers = %w[Authorization Private-Token]
+ config.tags = { program: Gitlab.process_name }
+ # Debugging for https://gitlab.com/gitlab-org/gitlab-foss/issues/57727
+ config.before_send = method(:add_context_from_exception_type)
+ end
+ end
+
+ def with_context(current_user = nil)
+ last_user_context = Raven.context.user
+
+ user_context = {
+ id: current_user&.id,
+ email: current_user&.email,
+ username: current_user&.username
+ }.compact
+
+ Raven.tags_context(default_tags)
+ Raven.user_context(user_context)
+
+ yield
+ ensure
+ Raven.user_context(last_user_context)
+ end
+
+ # This should be used when you want to passthrough exception handling:
+ # rescue and raise to be catched in upper layers of the application.
+ #
+ # If the exception implements the method `sentry_extra_data` and that method
+ # returns a Hash, then the return value of that method will be merged into
+ # `extra`. Exceptions can use this mechanism to provide structured data
+ # to sentry in addition to their message and back-trace.
+ def track_and_raise_exception(exception, extra = {})
+ process_exception(exception, sentry: true, extra: extra)
+
+ raise exception
+ end
+
+ # This can be used for investigating exceptions that can be recovered from in
+ # code. The exception will still be raised in development and test
+ # environments.
+ #
+ # That way we can track down these exceptions with as much information as we
+ # need to resolve them.
+ #
+ # If the exception implements the method `sentry_extra_data` and that method
+ # returns a Hash, then the return value of that method will be merged into
+ # `extra`. Exceptions can use this mechanism to provide structured data
+ # to sentry in addition to their message and back-trace.
+ #
+ # Provide an issue URL for follow up.
+ # as `issue_url: 'http://gitlab.com/gitlab-org/gitlab/issues/111'`
+ def track_and_raise_for_dev_exception(exception, extra = {})
+ process_exception(exception, sentry: true, extra: extra)
+
+ raise exception if should_raise_for_dev?
+ end
+
+ # This should be used when you only want to track the exception.
+ #
+ # If the exception implements the method `sentry_extra_data` and that method
+ # returns a Hash, then the return value of that method will be merged into
+ # `extra`. Exceptions can use this mechanism to provide structured data
+ # to sentry in addition to their message and back-trace.
+ def track_exception(exception, extra = {})
+ process_exception(exception, sentry: true, extra: extra)
+ end
+
+ # This should be used when you only want to log the exception,
+ # but not send it to Sentry.
+ #
+ # If the exception implements the method `sentry_extra_data` and that method
+ # returns a Hash, then the return value of that method will be merged into
+ # `extra`. Exceptions can use this mechanism to provide structured data
+ # to sentry in addition to their message and back-trace.
+ def log_exception(exception, extra = {})
+ process_exception(exception, extra: extra)
+ end
+
+ private
+
+ def process_exception(exception, sentry: false, logging: true, extra:)
+ exception.try(:sentry_extra_data)&.tap do |data|
+ extra = extra.merge(data) if data.is_a?(Hash)
+ end
+
+ if sentry && Raven.configuration.server
+ Raven.capture_exception(exception, tags: default_tags, extra: extra)
+ end
+
+ if logging
+ # TODO: this logic could migrate into `Gitlab::ExceptionLogFormatter`
+ # and we could also flatten deep nested hashes if required for search
+ # (e.g. if `extra` includes hash of hashes).
+ # In the current implementation, we don't flatten multi-level folded hashes.
+ log_hash = {}
+ Raven.context.tags.each { |name, value| log_hash["tags.#{name}"] = value }
+ Raven.context.user.each { |name, value| log_hash["user.#{name}"] = value }
+ Raven.context.extra.merge(extra).each { |name, value| log_hash["extra.#{name}"] = value }
+
+ Gitlab::ExceptionLogFormatter.format!(exception, log_hash)
+
+ Gitlab::ErrorTracking::Logger.error(log_hash)
+ end
+ end
+
+ def sentry_dsn
+ return unless Rails.env.production? || Rails.env.development?
+ return unless Gitlab.config.sentry.enabled
+
+ Gitlab.config.sentry.dsn
+ end
+
+ def should_raise_for_dev?
+ Rails.env.development? || Rails.env.test?
+ end
+
+ def default_tags
+ {
+ Labkit::Correlation::CorrelationId::LOG_KEY.to_sym => Labkit::Correlation::CorrelationId.current_id,
+ locale: I18n.locale
+ }
+ end
+
+ def add_context_from_exception_type(event, hint)
+ if ActiveModel::MissingAttributeError === hint[:exception]
+ columns_hash = ActiveRecord::Base
+ .connection
+ .schema_cache
+ .instance_variable_get(:@columns_hash)
+ .map { |k, v| [k, v.map(&:first)] }
+ .to_h
+
+ event.extra.merge!(columns_hash)
+ end
+
+ event
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/error_tracking/detailed_error.rb b/lib/gitlab/error_tracking/detailed_error.rb
index 225280a42f4..169d6c03f12 100644
--- a/lib/gitlab/error_tracking/detailed_error.rb
+++ b/lib/gitlab/error_tracking/detailed_error.rb
@@ -4,6 +4,7 @@ module Gitlab
module ErrorTracking
class DetailedError
include ActiveModel::Model
+ include GlobalID::Identification
attr_accessor :count,
:culprit,
@@ -13,6 +14,8 @@ module Gitlab
:first_release_short_version,
:first_seen,
:frequency,
+ :gitlab_project,
+ :gitlab_issue,
:id,
:last_release_last_commit,
:last_release_short_version,
@@ -26,6 +29,10 @@ module Gitlab
:title,
:type,
:user_count
+
+ def self.declarative_policy_class
+ 'ErrorTracking::DetailedErrorPolicy'
+ end
end
end
end
diff --git a/lib/gitlab/error_tracking/logger.rb b/lib/gitlab/error_tracking/logger.rb
new file mode 100644
index 00000000000..1b081f943aa
--- /dev/null
+++ b/lib/gitlab/error_tracking/logger.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module ErrorTracking
+ class Logger < ::Gitlab::JsonLogger
+ def self.file_name_noext
+ 'exceptions_json'
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/error_tracking/stack_trace_highlight_decorator.rb b/lib/gitlab/error_tracking/stack_trace_highlight_decorator.rb
new file mode 100644
index 00000000000..a403275fd4e
--- /dev/null
+++ b/lib/gitlab/error_tracking/stack_trace_highlight_decorator.rb
@@ -0,0 +1,43 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module ErrorTracking
+ module StackTraceHighlightDecorator
+ extend self
+
+ def decorate(error_event)
+ ::Gitlab::ErrorTracking::ErrorEvent.new(
+ issue_id: error_event.issue_id,
+ date_received: error_event.date_received,
+ stack_trace_entries: highlight_stack_trace(error_event.stack_trace_entries)
+ )
+ end
+
+ private
+
+ def highlight_stack_trace(stack_trace)
+ stack_trace.map do |entry|
+ highlight_stack_trace_entry(entry)
+ end
+ end
+
+ def highlight_stack_trace_entry(entry)
+ return entry unless entry['context']
+
+ entry.merge('context' => highlight_entry_context(entry['filename'], entry['context']))
+ end
+
+ def highlight_entry_context(filename, context)
+ language = Rouge::Lexer.guess_by_filename(filename).tag
+
+ context.map do |line_number, line_of_code|
+ [
+ line_number,
+ # Passing nil for the blob name allows skipping linking dependencies for the line_of_code
+ Gitlab::Highlight.highlight(nil, line_of_code, language: language)
+ ]
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/etag_caching/router.rb b/lib/gitlab/etag_caching/router.rb
index efddda0ec65..17d9cf08367 100644
--- a/lib/gitlab/etag_caching/router.rb
+++ b/lib/gitlab/etag_caching/router.rb
@@ -23,6 +23,10 @@ module Gitlab
'issue_notes'
),
Gitlab::EtagCaching::Router::Route.new(
+ %r(#{RESERVED_WORDS_PREFIX}/noteable/merge_request/\d+/notes\z),
+ 'merge_request_notes'
+ ),
+ Gitlab::EtagCaching::Router::Route.new(
%r(#{RESERVED_WORDS_PREFIX}/issues/\d+/realtime_changes\z),
'issue_title'
),
diff --git a/lib/gitlab/experimentation.rb b/lib/gitlab/experimentation.rb
index 948f720b01b..4fbf15d521a 100644
--- a/lib/gitlab/experimentation.rb
+++ b/lib/gitlab/experimentation.rb
@@ -14,7 +14,7 @@ module Gitlab
signup_flow: {
feature_toggle: :experimental_separate_sign_up_flow,
environment: ::Gitlab.dev_env_or_com?,
- enabled_ratio: 0.1,
+ enabled_ratio: 1,
tracking_category: 'Growth::Acquisition::Experiment::SignUpFlow'
}
}.freeze
diff --git a/lib/gitlab/file_detector.rb b/lib/gitlab/file_detector.rb
index 9fc2217ad43..a386c21983d 100644
--- a/lib/gitlab/file_detector.rb
+++ b/lib/gitlab/file_detector.rb
@@ -36,7 +36,10 @@ module Gitlab
podspec_json: %r{\A[^/]*\.podspec\.json\z},
podspec: %r{\A[^/]*\.podspec\z},
requirements_txt: %r{\A[^/]*requirements\.txt\z},
- yarn_lock: 'yarn.lock'
+ yarn_lock: 'yarn.lock',
+
+ # OpenAPI Specification files
+ openapi: %r{.*(openapi|swagger).*\.(yaml|yml|json)\z}i
}.freeze
# Returns an Array of file types based on the given paths.
diff --git a/lib/gitlab/file_type_detection.rb b/lib/gitlab/file_type_detection.rb
index ca78d49f99b..e052792675a 100644
--- a/lib/gitlab/file_type_detection.rb
+++ b/lib/gitlab/file_type_detection.rb
@@ -20,6 +20,7 @@
module Gitlab
module FileTypeDetection
SAFE_IMAGE_EXT = %w[png jpg jpeg gif bmp tiff ico].freeze
+ PDF_EXT = 'pdf'
# We recommend using the .mp4 format over .mov. Videos in .mov format can
# still be used but you really need to make sure they are served with the
# proper MIME type video/mp4 and not video/quicktime or your videos won't play
@@ -46,6 +47,10 @@ module Gitlab
extension_match?(SAFE_AUDIO_EXT)
end
+ def pdf?
+ extension_match?([PDF_EXT])
+ end
+
def embeddable?
image? || video? || audio?
end
diff --git a/lib/gitlab/git/commit.rb b/lib/gitlab/git/commit.rb
index 6210223917b..b2dc9a8a3c8 100644
--- a/lib/gitlab/git/commit.rb
+++ b/lib/gitlab/git/commit.rb
@@ -370,15 +370,26 @@ module Gitlab
# subject from the message to make it clearer when there's one
# available but not the other.
@message = message_from_gitaly_body
- @authored_date = Time.at(commit.author.date.seconds).utc
+ @authored_date = init_date_from_gitaly(commit.author)
@author_name = commit.author.name.dup
@author_email = commit.author.email.dup
- @committed_date = Time.at(commit.committer.date.seconds).utc
+
+ @committed_date = init_date_from_gitaly(commit.committer)
@committer_name = commit.committer.name.dup
@committer_email = commit.committer.email.dup
@parent_ids = Array(commit.parent_ids)
end
+ # Gitaly provides a UNIX timestamp in author.date.seconds, and a timezone
+ # offset in author.timezone. If the latter isn't present, assume UTC.
+ def init_date_from_gitaly(author)
+ if author.timezone.present?
+ Time.strptime("#{author.date.seconds} #{author.timezone}", '%s %z')
+ else
+ Time.at(author.date.seconds).utc
+ end
+ end
+
def serialize_keys
SERIALIZE_KEYS
end
diff --git a/lib/gitlab/git/tag.rb b/lib/gitlab/git/tag.rb
index 23d989ff258..0218f6e6232 100644
--- a/lib/gitlab/git/tag.rb
+++ b/lib/gitlab/git/tag.rb
@@ -62,6 +62,10 @@ module Gitlab
encode! @message
end
+ def tagger
+ @raw_tag.tagger
+ end
+
private
def message_from_gitaly_tag
diff --git a/lib/gitlab/gitaly_client.rb b/lib/gitlab/gitaly_client.rb
index 5b47853b9c1..9e033c705bd 100644
--- a/lib/gitlab/gitaly_client.rb
+++ b/lib/gitlab/gitaly_client.rb
@@ -67,8 +67,7 @@ module Gitlab
File.read(cert_file).scan(PEM_REGEX).map do |cert|
OpenSSL::X509::Certificate.new(cert).to_pem
rescue OpenSSL::OpenSSLError => e
- Rails.logger.error "Could not load certificate #{cert_file} #{e}" # rubocop:disable Gitlab/RailsLogger
- Gitlab::Sentry.track_exception(e, extra: { cert_file: cert_file })
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(e, cert_file: cert_file)
nil
end.compact
end.uniq.join("\n")
diff --git a/lib/gitlab/github_import/importer/issue_importer.rb b/lib/gitlab/github_import/importer/issue_importer.rb
index a468f6d8821..8648cbaec9d 100644
--- a/lib/gitlab/github_import/importer/issue_importer.rb
+++ b/lib/gitlab/github_import/importer/issue_importer.rb
@@ -52,7 +52,6 @@ module Gitlab
project_id: project.id,
description: description,
milestone_id: milestone_finder.id_for(issue),
- state: issue.state,
state_id: ::Issue.available_states[issue.state],
created_at: issue.created_at,
updated_at: issue.updated_at
diff --git a/lib/gitlab/github_import/importer/pull_request_importer.rb b/lib/gitlab/github_import/importer/pull_request_importer.rb
index 377e873d24d..6d2aff63a47 100644
--- a/lib/gitlab/github_import/importer/pull_request_importer.rb
+++ b/lib/gitlab/github_import/importer/pull_request_importer.rb
@@ -54,7 +54,6 @@ module Gitlab
target_project_id: project.id,
source_branch: pull_request.formatted_source_branch,
target_branch: pull_request.target_branch,
- state: pull_request.state,
state_id: ::MergeRequest.available_states[pull_request.state],
milestone_id: milestone_finder.id_for(pull_request),
author_id: author_id,
@@ -92,12 +91,10 @@ module Gitlab
project.repository.add_branch(project.creator, source_branch, pull_request.source_branch_sha)
rescue Gitlab::Git::CommandError => e
- Gitlab::Sentry.track_acceptable_exception(e,
- extra: {
- source_branch: source_branch,
- project_id: merge_request.project.id,
- merge_request_id: merge_request.id
- })
+ Gitlab::ErrorTracking.track_exception(e,
+ source_branch: source_branch,
+ project_id: merge_request.project.id,
+ merge_request_id: merge_request.id)
end
end
end
diff --git a/lib/gitlab/gon_helper.rb b/lib/gitlab/gon_helper.rb
index 2616a19fdaa..f22c69c531a 100644
--- a/lib/gitlab/gon_helper.rb
+++ b/lib/gitlab/gon_helper.rb
@@ -41,7 +41,7 @@ module Gitlab
# Initialize gon.features with any flags that should be
# made globally available to the frontend
- push_frontend_feature_flag(:suppress_ajax_navigation_errors, default_enabled: true)
+ push_frontend_feature_flag(:snippets_vue, default_enabled: false)
end
# Exposes the state of a feature flag to the frontend code.
diff --git a/lib/gitlab/gpg.rb b/lib/gitlab/gpg.rb
index 1dce26efc65..e3c474bc0fe 100644
--- a/lib/gitlab/gpg.rb
+++ b/lib/gitlab/gpg.rb
@@ -5,7 +5,7 @@ module Gitlab
extend self
CleanupError = Class.new(StandardError)
- BG_CLEANUP_RUNTIME_S = 2
+ BG_CLEANUP_RUNTIME_S = 10
FG_CLEANUP_RUNTIME_S = 0.5
MUTEX = Mutex.new
@@ -107,19 +107,18 @@ module Gitlab
begin
cleanup_tmp_dir(tmp_dir)
rescue CleanupError => e
+ folder_contents = Dir.children(tmp_dir)
# This means we left a GPG-agent process hanging. Logging the problem in
# sentry will make this more visible.
- Gitlab::Sentry.track_exception(e,
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(e,
issue_url: 'https://gitlab.com/gitlab-org/gitlab/issues/20918',
- extra: { tmp_dir: tmp_dir })
+ tmp_dir: tmp_dir, contents: folder_contents)
end
tmp_keychains_removed.increment unless File.exist?(tmp_dir)
end
def cleanup_tmp_dir(tmp_dir)
- return FileUtils.remove_entry(tmp_dir, true) if Feature.disabled?(:gpg_cleanup_retries)
-
# Retry when removing the tmp directory failed, as we may run into a
# race condition:
# The `gpg-agent` agent process may clean up some files as well while
diff --git a/lib/gitlab/grafana_embed_usage_data.rb b/lib/gitlab/grafana_embed_usage_data.rb
new file mode 100644
index 00000000000..78a87623e1f
--- /dev/null
+++ b/lib/gitlab/grafana_embed_usage_data.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+module Gitlab
+ class GrafanaEmbedUsageData
+ class << self
+ def issue_count
+ # rubocop:disable CodeReuse/ActiveRecord
+ Issue.joins('JOIN grafana_integrations USING (project_id)')
+ .where("issues.description LIKE '%' || grafana_integrations.grafana_url || '%'")
+ .where(grafana_integrations: { enabled: true })
+ .count
+ # rubocop:enable CodeReuse/ActiveRecord
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/graphql/authorize/authorize_resource.rb b/lib/gitlab/graphql/authorize/authorize_resource.rb
index df60b9d8346..26e8c53032f 100644
--- a/lib/gitlab/graphql/authorize/authorize_resource.rb
+++ b/lib/gitlab/graphql/authorize/authorize_resource.rb
@@ -6,6 +6,8 @@ module Gitlab
module AuthorizeResource
extend ActiveSupport::Concern
+ RESOURCE_ACCESS_ERROR = "The resource that you are attempting to access does not exist or you don't have permission to perform this action"
+
class_methods do
def required_permissions
# If the `#authorize` call is used on multiple classes, we add the
@@ -38,8 +40,7 @@ module Gitlab
def authorize!(object)
unless authorized_resource?(object)
- raise Gitlab::Graphql::Errors::ResourceNotAvailable,
- "The resource that you are attempting to access does not exist or you don't have permission to perform this action"
+ raise_resource_not_avaiable_error!
end
end
@@ -61,6 +62,10 @@ module Gitlab
Ability.allowed?(current_user, ability, object, scope: :user)
end
end
+
+ def raise_resource_not_avaiable_error!
+ raise Gitlab::Graphql::Errors::ResourceNotAvailable, RESOURCE_ACCESS_ERROR
+ end
end
end
end
diff --git a/lib/gitlab/graphql/calls_gitaly/instrumentation.rb b/lib/gitlab/graphql/calls_gitaly/instrumentation.rb
index fbd5e348c7d..11d3c50e093 100644
--- a/lib/gitlab/graphql/calls_gitaly/instrumentation.rb
+++ b/lib/gitlab/graphql/calls_gitaly/instrumentation.rb
@@ -32,7 +32,7 @@ module Gitlab
# Will inform you if there needs to be `calls_gitaly: true` as a kwarg in the field declaration
# if there is at least 1 Gitaly call involved with the field resolution.
error = RuntimeError.new("Gitaly is called for field '#{type_object.name}' on #{type_object.owner.try(:name)} - please either specify a constant complexity or add `calls_gitaly: true` to the field declaration")
- Gitlab::Sentry.track_exception(error)
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(error)
end
end
end
diff --git a/lib/gitlab/graphql/connections/keyset/connection.rb b/lib/gitlab/graphql/connections/keyset/connection.rb
index c75ea206edb..5de075f2f7a 100644
--- a/lib/gitlab/graphql/connections/keyset/connection.rb
+++ b/lib/gitlab/graphql/connections/keyset/connection.rb
@@ -32,18 +32,11 @@ module Gitlab
class Connection < GraphQL::Relay::BaseConnection
include Gitlab::Utils::StrongMemoize
- # TODO https://gitlab.com/gitlab-org/gitlab/issues/35104
- include Gitlab::Graphql::Connections::Keyset::LegacyKeysetConnection
-
def cursor_from_node(node)
- return legacy_cursor_from_node(node) if use_legacy_pagination?
-
encoded_json_from_ordering(node)
end
def sliced_nodes
- return legacy_sliced_nodes if use_legacy_pagination?
-
@sliced_nodes ||=
begin
OrderInfo.validate_ordering(ordered_nodes, order_list)
@@ -137,14 +130,7 @@ module Gitlab
def ordering_from_encoded_json(cursor)
JSON.parse(decode(cursor))
rescue JSON::ParserError
- # for the transition period where a client might request using an
- # old style cursor. Once removed, make it an error:
- # raise Gitlab::Graphql::Errors::ArgumentError, "Please provide a valid cursor"
- # TODO can be removed in next release
- # https://gitlab.com/gitlab-org/gitlab/issues/32933
- field_name = order_list.first.attribute_name
-
- { field_name => decode(cursor) }
+ raise Gitlab::Graphql::Errors::ArgumentError, "Please provide a valid cursor"
end
end
end
diff --git a/lib/gitlab/graphql/connections/keyset/legacy_keyset_connection.rb b/lib/gitlab/graphql/connections/keyset/legacy_keyset_connection.rb
deleted file mode 100644
index baf900d1048..00000000000
--- a/lib/gitlab/graphql/connections/keyset/legacy_keyset_connection.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-# frozen_string_literal: true
-
-# TODO https://gitlab.com/gitlab-org/gitlab/issues/35104
-module Gitlab
- module Graphql
- module Connections
- module Keyset
- module LegacyKeysetConnection
- def legacy_cursor_from_node(node)
- encode(node[legacy_order_field].to_s)
- end
-
- # rubocop: disable CodeReuse/ActiveRecord
- def legacy_sliced_nodes
- @sliced_nodes ||=
- begin
- sliced = nodes
-
- sliced = sliced.where(legacy_before_slice) if before.present?
- sliced = sliced.where(legacy_after_slice) if after.present?
-
- sliced
- end
- end
- # rubocop: enable CodeReuse/ActiveRecord
-
- private
-
- def use_legacy_pagination?
- strong_memoize(:feature_disabled) do
- Feature.disabled?(:graphql_keyset_pagination, default_enabled: true)
- end
- end
-
- def legacy_before_slice
- if legacy_sort_direction == :asc
- arel_table[legacy_order_field].lt(decode(before))
- else
- arel_table[legacy_order_field].gt(decode(before))
- end
- end
-
- def legacy_after_slice
- if legacy_sort_direction == :asc
- arel_table[legacy_order_field].gt(decode(after))
- else
- arel_table[legacy_order_field].lt(decode(after))
- end
- end
-
- def legacy_order_info
- @legacy_order_info ||= nodes.order_values.first
- end
-
- def legacy_order_field
- @legacy_order_field ||= legacy_order_info&.expr&.name || nodes.primary_key
- end
-
- def legacy_sort_direction
- @legacy_order_direction ||= legacy_order_info&.direction || :desc
- end
- end
- end
- end
- end
-end
diff --git a/lib/gitlab/graphql/query_analyzers/logger_analyzer.rb b/lib/gitlab/graphql/query_analyzers/logger_analyzer.rb
index 01b55a1667f..327a9c549d5 100644
--- a/lib/gitlab/graphql/query_analyzers/logger_analyzer.rb
+++ b/lib/gitlab/graphql/query_analyzers/logger_analyzer.rb
@@ -18,7 +18,7 @@ module Gitlab
variables: variables
})
rescue => e
- Gitlab::Sentry.track_exception(e)
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(e)
default_initial_values(query)
end
@@ -38,7 +38,7 @@ module Gitlab
GraphqlLogger.info(memo.except!(:time_started, :query))
rescue => e
- Gitlab::Sentry.track_exception(e)
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(e)
end
private
diff --git a/lib/gitlab/hashed_storage/rake_helper.rb b/lib/gitlab/hashed_storage/rake_helper.rb
index 14727b03ce9..7965f165683 100644
--- a/lib/gitlab/hashed_storage/rake_helper.rb
+++ b/lib/gitlab/hashed_storage/rake_helper.rb
@@ -47,23 +47,13 @@ module Gitlab
end
# rubocop: enable CodeReuse/ActiveRecord
- # rubocop: disable CodeReuse/ActiveRecord
def self.legacy_attachments_relation
- Upload.joins(<<~SQL).where('projects.storage_version < :version OR projects.storage_version IS NULL', version: Project::HASHED_STORAGE_FEATURES[:attachments])
- JOIN projects
- ON (uploads.model_type='Project' AND uploads.model_id=projects.id)
- SQL
+ Upload.inner_join_local_uploads_projects.merge(Project.without_storage_feature(:attachments))
end
- # rubocop: enable CodeReuse/ActiveRecord
- # rubocop: disable CodeReuse/ActiveRecord
def self.hashed_attachments_relation
- Upload.joins(<<~SQL).where('projects.storage_version >= :version', version: Project::HASHED_STORAGE_FEATURES[:attachments])
- JOIN projects
- ON (uploads.model_type='Project' AND uploads.model_id=projects.id)
- SQL
+ Upload.inner_join_local_uploads_projects.merge(Project.with_storage_feature(:attachments))
end
- # rubocop: enable CodeReuse/ActiveRecord
def self.relation_summary(relation_name, relation)
relation_count = relation.count
diff --git a/lib/gitlab/highlight.rb b/lib/gitlab/highlight.rb
index 381f1dd4e55..2c243a0d0ae 100644
--- a/lib/gitlab/highlight.rb
+++ b/lib/gitlab/highlight.rb
@@ -61,7 +61,7 @@ module Gitlab
tokens = lexer.lex(text, continue: continue)
Timeout.timeout(timeout_time) { @formatter.format(tokens, tag: tag).html_safe }
rescue Timeout::Error => e
- Gitlab::Sentry.track_exception(e)
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(e)
highlight_plain(text)
rescue
highlight_plain(text)
diff --git a/lib/gitlab/hook_data/merge_request_builder.rb b/lib/gitlab/hook_data/merge_request_builder.rb
index 0678799b64b..ae2ec424ce5 100644
--- a/lib/gitlab/hook_data/merge_request_builder.rb
+++ b/lib/gitlab/hook_data/merge_request_builder.rb
@@ -23,7 +23,7 @@ module Gitlab
milestone_id
source_branch
source_project_id
- state
+ state_id
target_branch
target_project_id
time_estimate
@@ -53,7 +53,8 @@ module Gitlab
human_total_time_spent: merge_request.human_total_time_spent,
human_time_estimate: merge_request.human_time_estimate,
assignee_ids: merge_request.assignee_ids,
- assignee_id: merge_request.assignee_ids.first # This key is deprecated
+ assignee_id: merge_request.assignee_ids.first, # This key is deprecated
+ state: merge_request.state # This key is deprecated
}
merge_request.attributes.with_indifferent_access.slice(*self.class.safe_hook_attributes)
diff --git a/lib/gitlab/import_export/attribute_cleaner.rb b/lib/gitlab/import_export/attribute_cleaner.rb
index 50fec9f3eb9..c8dbec7bcba 100644
--- a/lib/gitlab/import_export/attribute_cleaner.rb
+++ b/lib/gitlab/import_export/attribute_cleaner.rb
@@ -3,7 +3,7 @@
module Gitlab
module ImportExport
class AttributeCleaner
- ALLOWED_REFERENCES = RelationFactory::PROJECT_REFERENCES + RelationFactory::USER_REFERENCES + %w[group_id commit_id]
+ ALLOWED_REFERENCES = RelationFactory::PROJECT_REFERENCES + RelationFactory::USER_REFERENCES + %w[group_id commit_id discussion_id]
PROHIBITED_REFERENCES = Regexp.union(/\Acached_markdown_version\Z/, /_id\Z/, /_ids\Z/, /_html\Z/).freeze
def self.clean(*args)
diff --git a/lib/gitlab/import_export/file_importer.rb b/lib/gitlab/import_export/file_importer.rb
index 2fd12e3aa78..9d04d55770d 100644
--- a/lib/gitlab/import_export/file_importer.rb
+++ b/lib/gitlab/import_export/file_importer.rb
@@ -5,6 +5,8 @@ module Gitlab
class FileImporter
include Gitlab::ImportExport::CommandLineUtil
+ ImporterError = Class.new(StandardError)
+
MAX_RETRIES = 8
IGNORED_FILENAMES = %w(. ..).freeze
@@ -12,8 +14,8 @@ module Gitlab
new(*args).import
end
- def initialize(project:, archive_file:, shared:)
- @project = project
+ def initialize(importable:, archive_file:, shared:)
+ @importable = importable
@archive_file = archive_file
@shared = shared
end
@@ -52,7 +54,7 @@ module Gitlab
def decompress_archive
result = untar_zxf(archive: @archive_file, dir: @shared.export_path)
- raise Projects::ImportService::Error.new("Unable to decompress #{@archive_file} into #{@shared.export_path}") unless result
+ raise ImporterError.new("Unable to decompress #{@archive_file} into #{@shared.export_path}") unless result
result
end
@@ -60,9 +62,9 @@ module Gitlab
def copy_archive
return if @archive_file
- @archive_file = File.join(@shared.archive_path, Gitlab::ImportExport.export_filename(exportable: @project))
+ @archive_file = File.join(@shared.archive_path, Gitlab::ImportExport.export_filename(exportable: @importable))
- download_or_copy_upload(@project.import_export_upload.import_file, @archive_file)
+ download_or_copy_upload(@importable.import_export_upload.import_file, @archive_file)
end
def remove_symlinks
diff --git a/lib/gitlab/import_export/group_import_export.yml b/lib/gitlab/import_export/group_import_export.yml
index c1900350c86..049d81f96a4 100644
--- a/lib/gitlab/import_export/group_import_export.yml
+++ b/lib/gitlab/import_export/group_import_export.yml
@@ -14,9 +14,16 @@ tree:
- :user
included_attributes:
+ user:
+ - :id
+ - :email
+ - :username
+ author:
+ - :name
excluded_attributes:
group:
+ - :id
- :runners_token
- :runners_token_encrypted
@@ -25,6 +32,8 @@ methods:
- :type
badges:
- :type
+ notes:
+ - :type
preloads:
@@ -33,4 +42,11 @@ preloads:
ee:
tree:
group:
- - :epics
+ - epics:
+ - :parent
+ - notes:
+ - :author
+ - boards:
+ - :board_assignee
+ - labels:
+ - :priorities
diff --git a/lib/gitlab/import_export/import_export.yml b/lib/gitlab/import_export/import_export.yml
index 1aafe5804c0..4f4b4c02eb9 100644
--- a/lib/gitlab/import_export/import_export.yml
+++ b/lib/gitlab/import_export/import_export.yml
@@ -29,6 +29,7 @@ tree:
- :priorities
- :issue_assignees
- :zoom_meetings
+ - :sentry_issue
- snippets:
- :award_emoji
- notes:
@@ -72,6 +73,7 @@ tree:
- :auto_devops
- :triggers
- :pipeline_schedules
+ - :container_expiration_policy
- :services
- protected_branches:
- :merge_access_levels
@@ -163,28 +165,43 @@ excluded_attributes:
- :identifier
snippets:
- :expired_at
+ - :secret
+ - :encrypted_secret_token
+ - :encrypted_secret_token_iv
merge_request_diff:
- :external_diff
- :stored_externally
- :external_diff_store
+ - :merge_request_id
+ merge_request_diff_commits:
+ - :merge_request_diff_id
merge_request_diff_files:
- :diff
- :external_diff_offset
- :external_diff_size
+ - :merge_request_diff_id
issues:
- :milestone_id
+ - :moved_to_id
+ - :state_id
+ - :duplicated_to_id
+ - :promoted_to_epic_id
merge_request:
- :milestone_id
- :ref_fetched
- :merge_jid
- :rebase_jid
- :latest_merge_request_diff_id
+ - :head_pipeline_id
+ - :state_id
merge_requests:
- :milestone_id
- :ref_fetched
- :merge_jid
- :rebase_jid
- :latest_merge_request_diff_id
+ - :head_pipeline_id
+ - :state_id
award_emoji:
- :awardable_id
statuses:
@@ -198,6 +215,16 @@ excluded_attributes:
- :artifacts_metadata_store
- :artifacts_size
- :commands
+ - :runner_id
+ - :trigger_request_id
+ - :erased_by_id
+ - :auto_canceled_by_id
+ - :stage_id
+ - :upstream_pipeline_id
+ - :resource_group_id
+ - :waiting_for_resource_at
+ sentry_issue:
+ - :issue_id
push_event_payload:
- :event_id
project_badges:
@@ -206,6 +233,9 @@ excluded_attributes:
- :reference
- :reference_html
- :epic_id
+ - :issue_id
+ - :merge_request_id
+ - :label_id
runners:
- :token
- :token_encrypted
@@ -215,7 +245,66 @@ excluded_attributes:
- :encrypted_token
- :encrypted_token_iv
- :enabled
-
+ service_desk_setting:
+ - :outgoing_name
+ priorities:
+ - :label_id
+ events:
+ - :target_id
+ timelogs:
+ - :issue_id
+ - :merge_request_id
+ notes:
+ - :noteable_id
+ - :review_id
+ label_links:
+ - :label_id
+ - :target_id
+ issue_assignees:
+ - :issue_id
+ zoom_meetings:
+ - :issue_id
+ design:
+ - :issue_id
+ designs:
+ - :issue_id
+ design_versions:
+ - :issue_id
+ actions:
+ - :design_id
+ - :version_id
+ links:
+ - :release_id
+ project_members:
+ - :source_id
+ metrics:
+ - :merge_request_id
+ - :pipeline_id
+ suggestions:
+ - :note_id
+ ci_pipelines:
+ - :auto_canceled_by_id
+ - :pipeline_schedule_id
+ - :merge_request_id
+ - :external_pull_request_id
+ stages:
+ - :pipeline_id
+ merge_access_levels:
+ - :protected_branch_id
+ push_access_levels:
+ - :protected_branch_id
+ unprotect_access_levels:
+ - :protected_branch_id
+ create_access_levels:
+ - :protected_tag_id
+ deploy_access_levels:
+ - :protected_environment_id
+ boards:
+ - :milestone_id
+ lists:
+ - :board_id
+ - :label_id
+ - :milestone_id
methods:
notes:
- :type
@@ -267,8 +356,9 @@ ee:
- :push_event_payload
- design_versions:
- actions:
- - :design # Duplicate export of issues.designs in order to link the record to both Issue and DesignVersion
+ - :design # Duplicate export of issues.designs in order to link the record to both Issue and Action
- protected_branches:
- :unprotect_access_levels
- protected_environments:
- :deploy_access_levels
+ - :service_desk_setting
diff --git a/lib/gitlab/import_export/importer.rb b/lib/gitlab/import_export/importer.rb
index 62cf6c86906..a6463ed678c 100644
--- a/lib/gitlab/import_export/importer.rb
+++ b/lib/gitlab/import_export/importer.rb
@@ -39,7 +39,7 @@ module Gitlab
end
def import_file
- Gitlab::ImportExport::FileImporter.import(project: project,
+ Gitlab::ImportExport::FileImporter.import(importable: project,
archive_file: archive_file,
shared: shared)
end
diff --git a/lib/gitlab/import_export/members_mapper.rb b/lib/gitlab/import_export/members_mapper.rb
index 4e976cfca3a..d2e27388b51 100644
--- a/lib/gitlab/import_export/members_mapper.rb
+++ b/lib/gitlab/import_export/members_mapper.rb
@@ -3,10 +3,10 @@
module Gitlab
module ImportExport
class MembersMapper
- def initialize(exported_members:, user:, project:)
+ def initialize(exported_members:, user:, importable:)
@exported_members = user.admin? ? exported_members : []
@user = user
- @project = project
+ @importable = importable
# This needs to run first, as second call would be from #map
# which means project members already exist.
@@ -19,7 +19,7 @@ module Gitlab
@exported_members.inject(missing_keys_tracking_hash) do |hash, member|
if member['user']
old_user_id = member['user']['id']
- existing_user = User.where(find_project_user_query(member)).first
+ existing_user = User.where(find_user_query(member)).first
hash[old_user_id] = existing_user.id if existing_user && add_team_member(member, existing_user)
else
add_team_member(member)
@@ -47,39 +47,48 @@ module Gitlab
end
def ensure_default_member!
- @project.project_members.destroy_all # rubocop: disable DestroyAll
+ @importable.members.destroy_all # rubocop: disable DestroyAll
- ProjectMember.create!(user: @user, access_level: ProjectMember::MAINTAINER, source_id: @project.id, importing: true)
+ relation_class.create!(user: @user, access_level: relation_class::MAINTAINER, source_id: @importable.id, importing: true)
rescue => e
- raise e, "Error adding importer user to project members. #{e.message}"
+ raise e, "Error adding importer user to #{@importable.class} members. #{e.message}"
end
def add_team_member(member, existing_user = nil)
member['user'] = existing_user
- ProjectMember.create(member_hash(member)).persisted?
+ relation_class.create(member_hash(member)).persisted?
end
def member_hash(member)
parsed_hash(member).merge(
- 'source_id' => @project.id,
+ 'source_id' => @importable.id,
'importing' => true,
- 'access_level' => [member['access_level'], ProjectMember::MAINTAINER].min
+ 'access_level' => [member['access_level'], relation_class::MAINTAINER].min
).except('user_id')
end
def parsed_hash(member)
- Gitlab::ImportExport::AttributeCleaner.clean(relation_hash: member.deep_stringify_keys,
- relation_class: ProjectMember)
+ Gitlab::ImportExport::AttributeCleaner.clean(relation_hash: member.deep_stringify_keys,
+ relation_class: relation_class)
end
- def find_project_user_query(member)
+ def find_user_query(member)
user_arel[:email].eq(member['user']['email']).or(user_arel[:username].eq(member['user']['username']))
end
def user_arel
@user_arel ||= User.arel_table
end
+
+ def relation_class
+ case @importable
+ when Project
+ ProjectMember
+ when Group
+ GroupMember
+ end
+ end
end
end
end
diff --git a/lib/gitlab/import_export/project_tree_restorer.rb b/lib/gitlab/import_export/project_tree_restorer.rb
index c401f96b5c1..e274b68a94f 100644
--- a/lib/gitlab/import_export/project_tree_restorer.rb
+++ b/lib/gitlab/import_export/project_tree_restorer.rb
@@ -3,9 +3,6 @@
module Gitlab
module ImportExport
class ProjectTreeRestorer
- # Relations which cannot be saved at project level (and have a group assigned)
- GROUP_MODELS = [GroupLabel, Milestone].freeze
-
attr_reader :user
attr_reader :shared
attr_reader :project
@@ -13,34 +10,23 @@ module Gitlab
def initialize(user:, shared:, project:)
@path = File.join(shared.export_path, 'project.json')
@user = user
- @shared = shared
+ @shared = shared
@project = project
end
def restore
- begin
- @tree_hash = read_tree_hash
- rescue => e
- Rails.logger.error("Import/Export error: #{e.message}") # rubocop:disable Gitlab/RailsLogger
- raise Gitlab::ImportExport::Error.new('Incorrect JSON format')
- end
-
+ @tree_hash = read_tree_hash
@project_members = @tree_hash.delete('project_members')
RelationRenameService.rename(@tree_hash)
- ActiveRecord::Base.uncached do
- ActiveRecord::Base.no_touching do
- update_project_params!
- create_project_relations!
- post_import!
- end
- end
-
- # ensure that we have latest version of the restore
- @project.reload # rubocop:disable Cop/ActiveRecordAssociationReload
+ if relation_tree_restorer.restore
+ @project.merge_requests.set_latest_merge_request_diff_ids!
- true
+ true
+ else
+ false
+ end
rescue => e
@shared.error(e)
false
@@ -51,173 +37,36 @@ module Gitlab
def read_tree_hash
json = IO.read(@path)
ActiveSupport::JSON.decode(json)
+ rescue => e
+ Rails.logger.error("Import/Export error: #{e.message}") # rubocop:disable Gitlab/RailsLogger
+ raise Gitlab::ImportExport::Error.new('Incorrect JSON format')
end
- def members_mapper
- @members_mapper ||= Gitlab::ImportExport::MembersMapper.new(exported_members: @project_members,
- user: @user,
- project: @project)
- end
-
- # A Hash of the imported merge request ID -> imported ID.
- def merge_requests_mapping
- @merge_requests_mapping ||= {}
- end
-
- # Loops through the tree of models defined in import_export.yml and
- # finds them in the imported JSON so they can be instantiated and saved
- # in the DB. The structure and relationships between models are guessed from
- # the configuration yaml file too.
- # Finally, it updates each attribute in the newly imported project.
- def create_project_relations!
- project_relations.each(&method(
- :process_project_relation!))
- end
-
- def post_import!
- @project.merge_requests.set_latest_merge_request_diff_ids!
- end
-
- def process_project_relation!(relation_key, relation_definition)
- data_hashes = @tree_hash.delete(relation_key)
- return unless data_hashes
-
- # we do not care if we process array or hash
- data_hashes = [data_hashes] unless data_hashes.is_a?(Array)
-
- # consume and remove objects from memory
- while data_hash = data_hashes.shift
- process_project_relation_item!(relation_key, relation_definition, data_hash)
- end
- end
-
- def process_project_relation_item!(relation_key, relation_definition, data_hash)
- relation_object = build_relation(relation_key, relation_definition, data_hash)
- return unless relation_object
- return if group_model?(relation_object)
-
- relation_object.project = @project
- relation_object.save!
-
- save_id_mapping(relation_key, data_hash, relation_object)
- end
-
- # Older, serialized CI pipeline exports may only have a
- # merge_request_id and not the full hash of the merge request. To
- # import these pipelines, we need to preserve the mapping between
- # the old and new the merge request ID.
- def save_id_mapping(relation_key, data_hash, relation_object)
- return unless relation_key == 'merge_requests'
-
- merge_requests_mapping[data_hash['id']] = relation_object.id
- end
-
- def project_relations
- @project_relations ||=
- reader
- .attributes_finder
- .find_relations_tree(:project)
- .deep_stringify_keys
- end
-
- def update_project_params!
- project_params = @tree_hash.reject do |key, value|
- project_relations.include?(key)
- end
-
- project_params = project_params.merge(
- present_project_override_params)
-
- # Cleaning all imported and overridden params
- project_params = Gitlab::ImportExport::AttributeCleaner.clean(
- relation_hash: project_params,
- relation_class: Project,
- excluded_keys: excluded_keys_for_relation(:project))
-
- @project.assign_attributes(project_params)
- @project.drop_visibility_level!
-
- Gitlab::Timeless.timeless(@project) do
- @project.save!
- end
- end
-
- def present_project_override_params
- # we filter out the empty strings from the overrides
- # keeping the default values configured
- project_override_params.transform_values do |value|
- value.is_a?(String) ? value.presence : value
- end.compact
- end
-
- def project_override_params
- @project_override_params ||= @project.import_data&.data&.fetch('override_params', nil) || {}
- end
-
- def build_relations(relation_key, relation_definition, data_hashes)
- data_hashes.map do |data_hash|
- build_relation(relation_key, relation_definition, data_hash)
- end.compact
- end
-
- def build_relation(relation_key, relation_definition, data_hash)
- # TODO: This is hack to not create relation for the author
- # Rather make `RelationFactory#set_note_author` to take care of that
- return data_hash if relation_key == 'author'
-
- # create relation objects recursively for all sub-objects
- relation_definition.each do |sub_relation_key, sub_relation_definition|
- transform_sub_relations!(data_hash, sub_relation_key, sub_relation_definition)
- end
-
- Gitlab::ImportExport::RelationFactory.create(
- relation_sym: relation_key.to_sym,
- relation_hash: data_hash,
- members_mapper: members_mapper,
- merge_requests_mapping: merge_requests_mapping,
+ def relation_tree_restorer
+ @relation_tree_restorer ||= RelationTreeRestorer.new(
user: @user,
- project: @project,
- excluded_keys: excluded_keys_for_relation(relation_key))
+ shared: @shared,
+ importable: @project,
+ tree_hash: @tree_hash,
+ members_mapper: members_mapper,
+ relation_factory: relation_factory,
+ reader: reader
+ )
end
- def transform_sub_relations!(data_hash, sub_relation_key, sub_relation_definition)
- sub_data_hash = data_hash[sub_relation_key]
- return unless sub_data_hash
-
- # if object is a hash we can create simple object
- # as it means that this is 1-to-1 vs 1-to-many
- sub_data_hash =
- if sub_data_hash.is_a?(Array)
- build_relations(
- sub_relation_key,
- sub_relation_definition,
- sub_data_hash).presence
- else
- build_relation(
- sub_relation_key,
- sub_relation_definition,
- sub_data_hash)
- end
-
- # persist object(s) or delete from relation
- if sub_data_hash
- data_hash[sub_relation_key] = sub_data_hash
- else
- data_hash.delete(sub_relation_key)
- end
+ def members_mapper
+ @members_mapper ||= Gitlab::ImportExport::MembersMapper.new(exported_members: @project_members,
+ user: @user,
+ importable: @project)
end
- def group_model?(relation_object)
- GROUP_MODELS.include?(relation_object.class) && relation_object.group_id
+ def relation_factory
+ Gitlab::ImportExport::RelationFactory
end
def reader
@reader ||= Gitlab::ImportExport::Reader.new(shared: @shared)
end
-
- def excluded_keys_for_relation(relation)
- reader.attributes_finder.find_excluded_keys(relation)
- end
end
end
end
diff --git a/lib/gitlab/import_export/relation_factory.rb b/lib/gitlab/import_export/relation_factory.rb
index 5d907300d68..1438a7db001 100644
--- a/lib/gitlab/import_export/relation_factory.rb
+++ b/lib/gitlab/import_export/relation_factory.rb
@@ -38,12 +38,12 @@ module Gitlab
IMPORTED_OBJECT_MAX_RETRIES = 5.freeze
- EXISTING_OBJECT_CHECK = %i[milestone milestones label labels project_label project_labels group_label group_labels project_feature merge_request ProjectCiCdSetting].freeze
+ EXISTING_OBJECT_CHECK = %i[milestone milestones label labels project_label project_labels group_label group_labels project_feature merge_request ProjectCiCdSetting container_expiration_policy].freeze
TOKEN_RESET_MODELS = %i[Project Namespace Ci::Trigger Ci::Build Ci::Runner ProjectHook].freeze
# This represents all relations that have unique key on `project_id`
- UNIQUE_RELATIONS = %i[project_feature ProjectCiCdSetting].freeze
+ UNIQUE_RELATIONS = %i[project_feature ProjectCiCdSetting container_expiration_policy].freeze
def self.create(*args)
new(*args).create
diff --git a/lib/gitlab/import_export/relation_tree_restorer.rb b/lib/gitlab/import_export/relation_tree_restorer.rb
new file mode 100644
index 00000000000..d9c253788b4
--- /dev/null
+++ b/lib/gitlab/import_export/relation_tree_restorer.rb
@@ -0,0 +1,240 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module ImportExport
+ class RelationTreeRestorer
+ # Relations which cannot be saved at project level (and have a group assigned)
+ GROUP_MODELS = [GroupLabel, Milestone].freeze
+
+ attr_reader :user
+ attr_reader :shared
+ attr_reader :importable
+ attr_reader :tree_hash
+
+ def initialize(user:, shared:, importable:, tree_hash:, members_mapper:, relation_factory:, reader:)
+ @user = user
+ @shared = shared
+ @importable = importable
+ @tree_hash = tree_hash
+ @members_mapper = members_mapper
+ @relation_factory = relation_factory
+ @reader = reader
+ end
+
+ def restore
+ ActiveRecord::Base.uncached do
+ ActiveRecord::Base.no_touching do
+ update_params!
+ create_relations!
+ end
+ end
+
+ # ensure that we have latest version of the restore
+ @importable.reload # rubocop:disable Cop/ActiveRecordAssociationReload
+
+ true
+ rescue => e
+ @shared.error(e)
+ false
+ end
+
+ private
+
+ # Loops through the tree of models defined in import_export.yml and
+ # finds them in the imported JSON so they can be instantiated and saved
+ # in the DB. The structure and relationships between models are guessed from
+ # the configuration yaml file too.
+ # Finally, it updates each attribute in the newly imported project/group.
+ def create_relations!
+ relations.each(&method(:process_relation!))
+ end
+
+ def process_relation!(relation_key, relation_definition)
+ data_hashes = @tree_hash.delete(relation_key)
+ return unless data_hashes
+
+ # we do not care if we process array or hash
+ data_hashes = [data_hashes] unless data_hashes.is_a?(Array)
+
+ relation_index = 0
+
+ # consume and remove objects from memory
+ while data_hash = data_hashes.shift
+ process_relation_item!(relation_key, relation_definition, relation_index, data_hash)
+ relation_index += 1
+ end
+ end
+
+ def process_relation_item!(relation_key, relation_definition, relation_index, data_hash)
+ relation_object = build_relation(relation_key, relation_definition, data_hash)
+ return unless relation_object
+ return if importable_class == Project && group_model?(relation_object)
+
+ relation_object.assign_attributes(importable_class_sym => @importable)
+ relation_object.save!
+
+ save_id_mapping(relation_key, data_hash, relation_object)
+ rescue => e
+ # re-raise if not enabled
+ raise e unless Feature.enabled?(:import_graceful_failures, @importable.group, default_enabled: true)
+
+ log_import_failure(relation_key, relation_index, e)
+ end
+
+ def log_import_failure(relation_key, relation_index, exception)
+ Gitlab::ErrorTracking.track_exception(exception,
+ project_id: @importable.id, relation_key: relation_key, relation_index: relation_index)
+
+ ImportFailure.create(
+ project: @importable,
+ relation_key: relation_key,
+ relation_index: relation_index,
+ exception_class: exception.class.to_s,
+ exception_message: exception.message.truncate(255),
+ correlation_id_value: Labkit::Correlation::CorrelationId.current_or_new_id
+ )
+ end
+
+ # Older, serialized CI pipeline exports may only have a
+ # merge_request_id and not the full hash of the merge request. To
+ # import these pipelines, we need to preserve the mapping between
+ # the old and new the merge request ID.
+ def save_id_mapping(relation_key, data_hash, relation_object)
+ return unless importable_class == Project
+ return unless relation_key == 'merge_requests'
+
+ merge_requests_mapping[data_hash['id']] = relation_object.id
+ end
+
+ def relations
+ @relations ||=
+ @reader
+ .attributes_finder
+ .find_relations_tree(importable_class_sym)
+ .deep_stringify_keys
+ end
+
+ def update_params!
+ params = @tree_hash.reject do |key, _|
+ relations.include?(key)
+ end
+
+ params = params.merge(present_override_params)
+
+ # Cleaning all imported and overridden params
+ params = Gitlab::ImportExport::AttributeCleaner.clean(
+ relation_hash: params,
+ relation_class: importable_class,
+ excluded_keys: excluded_keys_for_relation(importable_class_sym))
+
+ @importable.assign_attributes(params)
+ @importable.drop_visibility_level! if importable_class == Project
+
+ Gitlab::Timeless.timeless(@importable) do
+ @importable.save!
+ end
+ end
+
+ def present_override_params
+ # we filter out the empty strings from the overrides
+ # keeping the default values configured
+ override_params&.transform_values do |value|
+ value.is_a?(String) ? value.presence : value
+ end&.compact
+ end
+
+ def override_params
+ @importable_override_params ||= importable_override_params
+ end
+
+ def importable_override_params
+ if @importable.respond_to?(:import_data)
+ @importable.import_data&.data&.fetch('override_params', nil) || {}
+ else
+ {}
+ end
+ end
+
+ def build_relations(relation_key, relation_definition, data_hashes)
+ data_hashes.map do |data_hash|
+ build_relation(relation_key, relation_definition, data_hash)
+ end.compact
+ end
+
+ def build_relation(relation_key, relation_definition, data_hash)
+ # TODO: This is hack to not create relation for the author
+ # Rather make `RelationFactory#set_note_author` to take care of that
+ return data_hash if relation_key == 'author'
+
+ # create relation objects recursively for all sub-objects
+ relation_definition.each do |sub_relation_key, sub_relation_definition|
+ transform_sub_relations!(data_hash, sub_relation_key, sub_relation_definition)
+ end
+
+ @relation_factory.create(relation_factory_params(relation_key, data_hash))
+ end
+
+ def transform_sub_relations!(data_hash, sub_relation_key, sub_relation_definition)
+ sub_data_hash = data_hash[sub_relation_key]
+ return unless sub_data_hash
+
+ # if object is a hash we can create simple object
+ # as it means that this is 1-to-1 vs 1-to-many
+ sub_data_hash =
+ if sub_data_hash.is_a?(Array)
+ build_relations(
+ sub_relation_key,
+ sub_relation_definition,
+ sub_data_hash).presence
+ else
+ build_relation(
+ sub_relation_key,
+ sub_relation_definition,
+ sub_data_hash)
+ end
+
+ # persist object(s) or delete from relation
+ if sub_data_hash
+ data_hash[sub_relation_key] = sub_data_hash
+ else
+ data_hash.delete(sub_relation_key)
+ end
+ end
+
+ def group_model?(relation_object)
+ GROUP_MODELS.include?(relation_object.class) && relation_object.group_id
+ end
+
+ def excluded_keys_for_relation(relation)
+ @reader.attributes_finder.find_excluded_keys(relation)
+ end
+
+ def importable_class
+ @importable.class
+ end
+
+ def importable_class_sym
+ importable_class.to_s.downcase.to_sym
+ end
+
+ # A Hash of the imported merge request ID -> imported ID.
+ def merge_requests_mapping
+ @merge_requests_mapping ||= {}
+ end
+
+ def relation_factory_params(relation_key, data_hash)
+ base_params = {
+ relation_sym: relation_key.to_sym,
+ relation_hash: data_hash,
+ members_mapper: @members_mapper,
+ user: @user,
+ excluded_keys: excluded_keys_for_relation(relation_key)
+ }
+
+ base_params[:merge_requests_mapping] = merge_requests_mapping if importable_class == Project
+ base_params[importable_class_sym] = @importable
+ base_params
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/import_export/shared.rb b/lib/gitlab/import_export/shared.rb
index 2539a6828c3..8d81b2af065 100644
--- a/lib/gitlab/import_export/shared.rb
+++ b/lib/gitlab/import_export/shared.rb
@@ -56,11 +56,7 @@ module Gitlab
end
def error(error)
- error_payload = { message: error.message }
- error_payload[:error_backtrace] = Gitlab::Profiler.clean_backtrace(error.backtrace) if error.backtrace
- log_error(error_payload)
-
- Gitlab::Sentry.track_acceptable_exception(error, extra: log_base_data)
+ Gitlab::ErrorTracking.track_exception(error, log_base_data)
add_error_message(error.message)
end
diff --git a/lib/gitlab/insecure_key_fingerprint.rb b/lib/gitlab/insecure_key_fingerprint.rb
index e4f0e9d2c73..7b1cf5e7931 100644
--- a/lib/gitlab/insecure_key_fingerprint.rb
+++ b/lib/gitlab/insecure_key_fingerprint.rb
@@ -10,6 +10,7 @@ module Gitlab
#
class InsecureKeyFingerprint
attr_accessor :key
+ alias_attribute :fingerprint_md5, :fingerprint
#
# Gets the base64 encoded string representing a rsa or dsa key
@@ -21,5 +22,9 @@ module Gitlab
def fingerprint
OpenSSL::Digest::MD5.hexdigest(Base64.decode64(@key)).scan(/../).join(':')
end
+
+ def fingerprint_sha256
+ Digest::SHA256.base64digest(Base64.decode64(@key)).scan(/../).join('').delete("=")
+ end
end
end
diff --git a/lib/gitlab/json_cache.rb b/lib/gitlab/json_cache.rb
index 9aa71db6b18..4314c131ada 100644
--- a/lib/gitlab/json_cache.rb
+++ b/lib/gitlab/json_cache.rb
@@ -80,15 +80,10 @@ module Gitlab
# when the new_record? method incorrectly returns false.
#
# See https://gitlab.com/gitlab-org/gitlab/issues/9903#note_145329964
- klass
- .allocate
- .init_with(
- "attributes" => attributes_for(klass, raw),
- "new_record" => new_record?(raw, klass)
- )
+ klass.allocate.init_with(encode_for(klass, raw))
end
- def attributes_for(klass, raw)
+ def encode_for(klass, raw)
# We have models that leave out some fields from the JSON export for
# security reasons, e.g. models that include the CacheMarkdownField.
# The ActiveRecord::AttributeSet we build from raw does know about
@@ -96,7 +91,10 @@ module Gitlab
missing_attributes = (klass.columns.map(&:name) - raw.keys)
missing_attributes.each { |column| raw[column] = nil }
- klass.attributes_builder.build_from_database(raw, {})
+ coder = {}
+ klass.new(raw).encode_with(coder)
+ coder["new_record"] = new_record?(raw, klass)
+ coder
end
def new_record?(raw, klass)
diff --git a/lib/gitlab/kubernetes/cluster_role.rb b/lib/gitlab/kubernetes/cluster_role.rb
new file mode 100644
index 00000000000..4d40736a0b5
--- /dev/null
+++ b/lib/gitlab/kubernetes/cluster_role.rb
@@ -0,0 +1,29 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Kubernetes
+ class ClusterRole
+ attr_reader :name, :rules
+
+ def initialize(name:, rules:)
+ @name = name
+ @rules = rules
+ end
+
+ def generate
+ ::Kubeclient::Resource.new(
+ metadata: metadata,
+ rules: rules
+ )
+ end
+
+ private
+
+ def metadata
+ {
+ name: name
+ }
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/kubernetes/helm/client_command.rb b/lib/gitlab/kubernetes/helm/client_command.rb
index a3f732e1283..b953ce24c4a 100644
--- a/lib/gitlab/kubernetes/helm/client_command.rb
+++ b/lib/gitlab/kubernetes/helm/client_command.rb
@@ -5,14 +5,24 @@ module Gitlab
module Helm
module ClientCommand
def init_command
- # Here we are always upgrading to the latest version of Tiller when
- # installing an app. We ensure the helm version stored in the
- # database is correct by also updating this after transition to
- # :installed,:updated in Clusters::Concerns::ApplicationStatus
- 'helm init --upgrade'
+ if local_tiller_enabled?
+ <<~HEREDOC.chomp
+ export HELM_HOST="localhost:44134"
+ tiller -listen ${HELM_HOST} -alsologtostderr &
+ helm init --client-only
+ HEREDOC
+ else
+ # Here we are always upgrading to the latest version of Tiller when
+ # installing an app. We ensure the helm version stored in the
+ # database is correct by also updating this after transition to
+ # :installed,:updated in Clusters::Concerns::ApplicationStatus
+ 'helm init --upgrade'
+ end
end
def wait_for_tiller_command
+ return if local_tiller_enabled?
+
helm_check = ['helm', 'version', *optional_tls_flags].shelljoin
# This is necessary to give Tiller time to restart after upgrade.
# Ideally we'd be able to use --wait but cannot because of
@@ -25,6 +35,18 @@ module Gitlab
['helm', 'repo', 'add', name, repository].shelljoin if repository
end
+ private
+
+ def tls_flags_if_remote_tiller
+ return [] if local_tiller_enabled?
+
+ optional_tls_flags
+ end
+
+ def repository_update_command
+ 'helm repo update'
+ end
+
def optional_tls_flags
return [] unless files.key?(:'ca.pem')
@@ -35,6 +57,10 @@ module Gitlab
'--tls-key', "#{files_dir}/key.pem"
]
end
+
+ def local_tiller_enabled?
+ Feature.enabled?(:managed_apps_local_tiller)
+ end
end
end
end
diff --git a/lib/gitlab/kubernetes/helm/delete_command.rb b/lib/gitlab/kubernetes/helm/delete_command.rb
index dcf22e7abb6..9d0fd30ba8f 100644
--- a/lib/gitlab/kubernetes/helm/delete_command.rb
+++ b/lib/gitlab/kubernetes/helm/delete_command.rb
@@ -39,7 +39,7 @@ module Gitlab
private
def delete_command
- command = ['helm', 'delete', '--purge', name] + optional_tls_flags
+ command = ['helm', 'delete', '--purge', name] + tls_flags_if_remote_tiller
command.shelljoin
end
diff --git a/lib/gitlab/kubernetes/helm/install_command.rb b/lib/gitlab/kubernetes/helm/install_command.rb
index ccb053f507d..8e24cb4c24f 100644
--- a/lib/gitlab/kubernetes/helm/install_command.rb
+++ b/lib/gitlab/kubernetes/helm/install_command.rb
@@ -39,17 +39,13 @@ module Gitlab
private
- def repository_update_command
- 'helm repo update'
- end
-
# Uses `helm upgrade --install` which means we can use this for both
# installation and uprade of applications
def install_command
command = ['helm', 'upgrade', name, chart] +
install_flag +
reset_values_flag +
- optional_tls_flags +
+ tls_flags_if_remote_tiller +
optional_version_flag +
rbac_create_flag +
namespace_flag +
diff --git a/lib/gitlab/kubernetes/helm/patch_command.rb b/lib/gitlab/kubernetes/helm/patch_command.rb
new file mode 100644
index 00000000000..ed7a5c2b2d6
--- /dev/null
+++ b/lib/gitlab/kubernetes/helm/patch_command.rb
@@ -0,0 +1,73 @@
+# frozen_string_literal: true
+
+# PatchCommand is for updating values in installed charts without overwriting
+# existing values.
+module Gitlab
+ module Kubernetes
+ module Helm
+ class PatchCommand
+ include BaseCommand
+ include ClientCommand
+
+ attr_reader :name, :files, :chart, :repository
+ attr_accessor :version
+
+ def initialize(name:, chart:, files:, rbac:, version:, repository: nil)
+ # version is mandatory to prevent chart mismatches
+ # we do not want our values interpreted in the context of the wrong version
+ raise ArgumentError, 'version is required' if version.blank?
+
+ @name = name
+ @chart = chart
+ @version = version
+ @rbac = rbac
+ @files = files
+ @repository = repository
+ end
+
+ def generate_script
+ super + [
+ init_command,
+ wait_for_tiller_command,
+ repository_command,
+ repository_update_command,
+ upgrade_command
+ ].compact.join("\n")
+ end
+
+ def rbac?
+ @rbac
+ end
+
+ private
+
+ def upgrade_command
+ command = ['helm', 'upgrade', name, chart] +
+ reuse_values_flag +
+ tls_flags_if_remote_tiller +
+ version_flag +
+ namespace_flag +
+ value_flag
+
+ command.shelljoin
+ end
+
+ def reuse_values_flag
+ ['--reuse-values']
+ end
+
+ def value_flag
+ ['-f', "/data/helm/#{name}/config/values.yaml"]
+ end
+
+ def namespace_flag
+ ['--namespace', Gitlab::Kubernetes::Helm::NAMESPACE]
+ end
+
+ def version_flag
+ ['--version', version]
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/kubernetes/kube_client.rb b/lib/gitlab/kubernetes/kube_client.rb
index 66c28a9b702..b23ca095414 100644
--- a/lib/gitlab/kubernetes/kube_client.rb
+++ b/lib/gitlab/kubernetes/kube_client.rb
@@ -56,6 +56,7 @@ module Gitlab
# group client
delegate :create_cluster_role_binding,
:get_cluster_role_binding,
+ :get_cluster_role_bindings,
:update_cluster_role_binding,
to: :rbac_client
@@ -68,6 +69,13 @@ module Gitlab
# RBAC methods delegates to the apis/rbac.authorization.k8s.io api
# group client
+ delegate :create_cluster_role,
+ :get_cluster_role,
+ :update_cluster_role,
+ to: :rbac_client
+
+ # RBAC methods delegates to the apis/rbac.authorization.k8s.io api
+ # group client
delegate :create_role_binding,
:get_role_binding,
:update_role_binding,
diff --git a/lib/gitlab/kubernetes/kubectl_cmd.rb b/lib/gitlab/kubernetes/kubectl_cmd.rb
index 981eb5681dc..e8fde28b44d 100644
--- a/lib/gitlab/kubernetes/kubectl_cmd.rb
+++ b/lib/gitlab/kubernetes/kubectl_cmd.rb
@@ -13,6 +13,16 @@ module Gitlab
%w(kubectl apply -f).concat([filename], args).shelljoin
end
+
+ def delete_crds_from_group(group)
+ api_resources_args = %w(-o name --api-group).push(group)
+
+ api_resources(*api_resources_args) + " | xargs " + delete('--ignore-not-found', 'crd')
+ end
+
+ def api_resources(*args)
+ %w(kubectl api-resources).concat(args).shelljoin
+ end
end
end
end
diff --git a/lib/gitlab/mail_room.rb b/lib/gitlab/mail_room.rb
index 78f2d83c1af..f7699ef1718 100644
--- a/lib/gitlab/mail_room.rb
+++ b/lib/gitlab/mail_room.rb
@@ -4,15 +4,21 @@ require 'yaml'
require 'json'
require_relative 'redis/queues' unless defined?(Gitlab::Redis::Queues)
+# This service is run independently of the main Rails process,
+# therefore the `Rails` class and its methods are unavailable.
+
module Gitlab
module MailRoom
+ RAILS_ROOT_DIR = Pathname.new('../..').expand_path(__dir__).freeze
+
DEFAULT_CONFIG = {
enabled: false,
port: 143,
ssl: false,
start_tls: false,
mailbox: 'inbox',
- idle_timeout: 60
+ idle_timeout: 60,
+ log_path: RAILS_ROOT_DIR.join('log', 'mail_room_json.log')
}.freeze
class << self
@@ -33,7 +39,7 @@ module Gitlab
def fetch_config
return {} unless File.exist?(config_file)
- config = YAML.load_file(config_file)[rails_env].deep_symbolize_keys[:incoming_email] || {}
+ config = load_from_yaml || {}
config = DEFAULT_CONFIG.merge(config) do |_key, oldval, newval|
newval.nil? ? oldval : newval
end
@@ -47,6 +53,7 @@ module Gitlab
end
end
+ config[:log_path] = File.expand_path(config[:log_path], RAILS_ROOT_DIR)
config
end
@@ -57,6 +64,10 @@ module Gitlab
def config_file
ENV['MAIL_ROOM_GITLAB_CONFIG_FILE'] || File.expand_path('../../config/gitlab.yml', __dir__)
end
+
+ def load_from_yaml
+ YAML.load_file(config_file)[rails_env].deep_symbolize_keys[:incoming_email]
+ end
end
end
end
diff --git a/lib/gitlab/marginalia.rb b/lib/gitlab/marginalia.rb
new file mode 100644
index 00000000000..2be96cecae3
--- /dev/null
+++ b/lib/gitlab/marginalia.rb
@@ -0,0 +1,28 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Marginalia
+ MARGINALIA_FEATURE_FLAG = :marginalia
+
+ def self.set_application_name
+ ::Marginalia.application_name = Gitlab.process_name
+ end
+
+ def self.enable_sidekiq_instrumentation
+ if Sidekiq.server?
+ ::Marginalia::SidekiqInstrumentation.enable!
+ end
+ end
+
+ def self.cached_feature_enabled?
+ !!@enabled
+ end
+
+ def self.set_feature_cache
+ # During db:create and db:bootstrap skip feature query as DB is not available yet.
+ return false unless ActiveRecord::Base.connected? && Gitlab::Database.cached_table_exists?('features')
+
+ @enabled = Feature.enabled?(MARGINALIA_FEATURE_FLAG)
+ end
+ end
+end
diff --git a/lib/gitlab/marginalia/active_record_instrumentation.rb b/lib/gitlab/marginalia/active_record_instrumentation.rb
new file mode 100644
index 00000000000..3266b9f8336
--- /dev/null
+++ b/lib/gitlab/marginalia/active_record_instrumentation.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+# Patch to annotate sql only when the feature is enabled.
+module Gitlab
+ module Marginalia
+ module ActiveRecordInstrumentation
+ def annotate_sql(sql)
+ Gitlab::Marginalia.cached_feature_enabled? ? super(sql) : sql
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/marginalia/comment.rb b/lib/gitlab/marginalia/comment.rb
new file mode 100644
index 00000000000..a0eee823763
--- /dev/null
+++ b/lib/gitlab/marginalia/comment.rb
@@ -0,0 +1,42 @@
+# frozen_string_literal: true
+
+# Module to support correlation_id and additional job details.
+module Gitlab
+ module Marginalia
+ module Comment
+ private
+
+ def jid
+ bg_job["jid"] if bg_job.present?
+ end
+
+ def job_class
+ bg_job["class"] if bg_job.present?
+ end
+
+ def correlation_id
+ if bg_job.present?
+ bg_job["correlation_id"]
+ else
+ Labkit::Correlation::CorrelationId.current_id
+ end
+ end
+
+ def bg_job
+ job = ::Marginalia::Comment.marginalia_job
+
+ # We are using 'Marginalia::SidekiqInstrumentation' which does not support 'ActiveJob::Base'.
+ # Gitlab also uses 'ActionMailer::DeliveryJob' which inherits from ActiveJob::Base.
+ # So below condition is used to return metadata for such jobs.
+ if job && job.is_a?(ActionMailer::DeliveryJob)
+ {
+ "class" => job.arguments.first,
+ "jid" => job.job_id
+ }
+ else
+ job
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/metrics/dashboard/service_selector.rb b/lib/gitlab/metrics/dashboard/service_selector.rb
index aee7f6685ad..5b6f25420e0 100644
--- a/lib/gitlab/metrics/dashboard/service_selector.rb
+++ b/lib/gitlab/metrics/dashboard/service_selector.rb
@@ -22,6 +22,7 @@ module Gitlab
return SERVICES::DynamicEmbedService if dynamic_embed?(params)
return SERVICES::DefaultEmbedService if params[:embedded]
return SERVICES::SystemDashboardService if system_dashboard?(params[:dashboard_path])
+ return SERVICES::PodDashboardService if pod_dashboard?(params[:dashboard_path])
return SERVICES::ProjectDashboardService if params[:dashboard_path]
default_service
@@ -34,7 +35,11 @@ module Gitlab
end
def system_dashboard?(filepath)
- SERVICES::SystemDashboardService.system_dashboard?(filepath)
+ SERVICES::SystemDashboardService.matching_dashboard?(filepath)
+ end
+
+ def pod_dashboard?(filepath)
+ SERVICES::PodDashboardService.matching_dashboard?(filepath)
end
def custom_metric_embed?(params)
diff --git a/lib/gitlab/metrics/dashboard/stages/endpoint_inserter.rb b/lib/gitlab/metrics/dashboard/stages/endpoint_inserter.rb
index c00ef208848..4f5e9a98799 100644
--- a/lib/gitlab/metrics/dashboard/stages/endpoint_inserter.rb
+++ b/lib/gitlab/metrics/dashboard/stages/endpoint_inserter.rb
@@ -16,12 +16,20 @@ module Gitlab
private
def endpoint_for_metric(metric)
- Gitlab::Routing.url_helpers.prometheus_api_project_environment_path(
- project,
- params[:environment],
- proxy_path: query_type(metric),
- query: query_for_metric(metric)
- )
+ if ENV['USE_SAMPLE_METRICS']
+ Gitlab::Routing.url_helpers.sample_metrics_project_environment_path(
+ project,
+ params[:environment],
+ identifier: metric[:id]
+ )
+ else
+ Gitlab::Routing.url_helpers.prometheus_api_project_environment_path(
+ project,
+ params[:environment],
+ proxy_path: query_type(metric),
+ query: query_for_metric(metric)
+ )
+ end
end
def query_type(metric)
diff --git a/lib/gitlab/metrics/transaction.rb b/lib/gitlab/metrics/transaction.rb
index 115368c8bc6..552eae639e6 100644
--- a/lib/gitlab/metrics/transaction.rb
+++ b/lib/gitlab/metrics/transaction.rb
@@ -164,7 +164,6 @@ module Gitlab
docstring 'Transaction allocated memory bytes'
base_labels BASE_LABELS
buckets [100, 1000, 10000, 100000, 1000000, 10000000]
- with_feature :prometheus_metrics_transaction_allocated_memory
end
def self.transaction_metric(name, type, prefix: nil, tags: {})
diff --git a/lib/gitlab/middleware/go.rb b/lib/gitlab/middleware/go.rb
index f9efef38825..f207d91235f 100644
--- a/lib/gitlab/middleware/go.rb
+++ b/lib/gitlab/middleware/go.rb
@@ -25,13 +25,13 @@ module Gitlab
def render_go_doc(request)
return unless go_request?(request)
- path = project_path(request)
+ path, branch = project_path(request)
return unless path
- body = go_body(path)
+ body, code = go_response(path, branch)
return unless body
- response = Rack::Response.new(body, 200, { 'Content-Type' => 'text/html' })
+ response = Rack::Response.new(body, code, { 'Content-Type' => 'text/html' })
response.finish
end
@@ -39,8 +39,15 @@ module Gitlab
request["go-get"].to_i == 1 && request.env["PATH_INFO"].present?
end
- def go_body(path)
+ def go_response(path, branch)
config = Gitlab.config
+ body_tag = content_tag :body, "go get #{config.gitlab.url}/#{path}"
+
+ unless branch
+ html_tag = content_tag :html, body_tag
+ return html_tag, 404
+ end
+
project_url = Gitlab::Utils.append_path(config.gitlab.url, path)
import_prefix = strip_url(project_url.to_s)
@@ -52,9 +59,11 @@ module Gitlab
"#{project_url}.git"
end
- meta_tag = tag :meta, name: 'go-import', content: "#{import_prefix} git #{repository_url}"
- head_tag = content_tag :head, meta_tag
- content_tag :html, head_tag
+ meta_import_tag = tag :meta, name: 'go-import', content: "#{import_prefix} git #{repository_url}"
+ meta_source_tag = tag :meta, name: 'go-source', content: "#{import_prefix} #{project_url} #{project_url}/tree/#{branch}{/dir} #{project_url}/blob/#{branch}{/dir}/{file}#L{line}"
+ head_tag = content_tag :head, meta_import_tag + meta_source_tag
+ html_tag = content_tag :html, head_tag + body_tag
+ [html_tag, 200]
end
def strip_url(url)
@@ -80,9 +89,6 @@ module Gitlab
path_segments = path.split('/')
simple_project_path = path_segments.first(2).join('/')
- # If the path is at most 2 segments long, it is a simple `namespace/project` path and we're done
- return simple_project_path if path_segments.length <= 2
-
project_paths = []
begin
project_paths << path_segments.join('/')
@@ -94,7 +100,7 @@ module Gitlab
if project
# If a project is found and the user has access, we return the full project path
- project.full_path
+ return project.full_path, project.default_branch
else
# If not, we return the first two components as if it were a simple `namespace/project` path,
# so that we don't reveal the existence of a nested project the user doesn't have access to.
@@ -105,7 +111,7 @@ module Gitlab
# `go get gitlab.com/group/subgroup/project/subpackage` will not work for private projects.
# `go get gitlab.com/group/subgroup/project.git/subpackage` will work, since Go is smart enough
# to figure that out. `import 'gitlab.com/...'` behaves the same as `go get`.
- simple_project_path
+ return simple_project_path, 'master'
end
end
diff --git a/lib/gitlab/pagination/keyset.rb b/lib/gitlab/pagination/keyset.rb
new file mode 100644
index 00000000000..5bd45fa9b56
--- /dev/null
+++ b/lib/gitlab/pagination/keyset.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Pagination
+ module Keyset
+ def self.paginate(request_context, relation)
+ Gitlab::Pagination::Keyset::Pager.new(request_context).paginate(relation)
+ end
+
+ def self.available?(request_context, relation)
+ order_by = request_context.page.order_by
+
+ # This is only available for Project and order-by id (asc/desc)
+ return false unless relation.klass == Project
+ return false unless order_by.size == 1 && order_by[:id]
+
+ true
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/pagination/keyset/page.rb b/lib/gitlab/pagination/keyset/page.rb
new file mode 100644
index 00000000000..735f54faf0f
--- /dev/null
+++ b/lib/gitlab/pagination/keyset/page.rb
@@ -0,0 +1,47 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Pagination
+ module Keyset
+ # A Page models the pagination information for a particular page of the collection
+ class Page
+ # Default number of records for a page
+ DEFAULT_PAGE_SIZE = 20
+
+ # Maximum number of records for a page
+ MAXIMUM_PAGE_SIZE = 100
+
+ attr_accessor :lower_bounds, :end_reached
+ attr_reader :order_by
+
+ def initialize(order_by: {}, lower_bounds: nil, per_page: DEFAULT_PAGE_SIZE, end_reached: false)
+ @order_by = order_by.symbolize_keys
+ @lower_bounds = lower_bounds&.symbolize_keys
+ @per_page = per_page
+ @end_reached = end_reached
+ end
+
+ # Number of records to return per page
+ def per_page
+ return DEFAULT_PAGE_SIZE if @per_page <= 0
+
+ [@per_page, MAXIMUM_PAGE_SIZE].min
+ end
+
+ # Determine whether this page indicates the end of the collection
+ def end_reached?
+ @end_reached
+ end
+
+ # Construct a Page for the next page
+ # Uses identical order_by/per_page information for the next page
+ def next(lower_bounds, end_reached)
+ dup.tap do |next_page|
+ next_page.lower_bounds = lower_bounds&.symbolize_keys
+ next_page.end_reached = end_reached
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/pagination/keyset/pager.rb b/lib/gitlab/pagination/keyset/pager.rb
new file mode 100644
index 00000000000..99b125cc2a0
--- /dev/null
+++ b/lib/gitlab/pagination/keyset/pager.rb
@@ -0,0 +1,56 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Pagination
+ module Keyset
+ class Pager
+ attr_reader :request
+
+ def initialize(request)
+ @request = request
+ end
+
+ def paginate(relation)
+ # Validate assumption: The last two columns must match the page order_by
+ validate_order!(relation)
+
+ # This performs the database query and retrieves records
+ # We retrieve one record more to check if we have data beyond this page
+ all_records = relation.limit(page.per_page + 1).to_a # rubocop: disable CodeReuse/ActiveRecord
+
+ records_for_page = all_records.first(page.per_page)
+
+ # If we retrieved more records than belong on this page,
+ # we know there's a next page
+ there_is_more = all_records.size > records_for_page.size
+ apply_headers(records_for_page.last, there_is_more)
+
+ records_for_page
+ end
+
+ private
+
+ def apply_headers(last_record_in_page, there_is_more)
+ end_reached = last_record_in_page.nil? || !there_is_more
+ lower_bounds = last_record_in_page&.slice(page.order_by.keys)
+
+ next_page = page.next(lower_bounds, end_reached)
+
+ request.apply_headers(next_page)
+ end
+
+ def page
+ @page ||= request.page
+ end
+
+ def validate_order!(rel)
+ present_order = rel.order_values.map { |val| [val.expr.name.to_sym, val.direction] }.last(2).to_h
+
+ unless page.order_by == present_order
+ raise ArgumentError, "Page's order_by does not match the relation's order: #{present_order} vs #{page.order_by}"
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/pagination/keyset/request_context.rb b/lib/gitlab/pagination/keyset/request_context.rb
new file mode 100644
index 00000000000..aeaed7587b3
--- /dev/null
+++ b/lib/gitlab/pagination/keyset/request_context.rb
@@ -0,0 +1,89 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Pagination
+ module Keyset
+ class RequestContext
+ attr_reader :request
+
+ DEFAULT_SORT_DIRECTION = :desc
+ PRIMARY_KEY = :id
+
+ # A tie breaker is added as an additional order-by column
+ # to establish a well-defined order. We use the primary key
+ # column here.
+ TIE_BREAKER = { PRIMARY_KEY => DEFAULT_SORT_DIRECTION }.freeze
+
+ def initialize(request)
+ @request = request
+ end
+
+ # extracts Paging information from request parameters
+ def page
+ @page ||= Page.new(order_by: order_by, per_page: params[:per_page])
+ end
+
+ def apply_headers(next_page)
+ request.header('Links', pagination_links(next_page))
+ end
+
+ private
+
+ def order_by
+ return TIE_BREAKER.dup unless params[:order_by]
+
+ order_by = { params[:order_by].to_sym => params[:sort]&.to_sym || DEFAULT_SORT_DIRECTION }
+
+ # Order by an additional unique key, we use the primary key here
+ order_by = order_by.merge(TIE_BREAKER) unless order_by[PRIMARY_KEY]
+
+ order_by
+ end
+
+ def params
+ @params ||= request.params
+ end
+
+ def lower_bounds_params(page)
+ page.lower_bounds.each_with_object({}) do |(column, value), params|
+ filter = filter_with_comparator(page, column)
+ params[filter] = value
+ end
+ end
+
+ def filter_with_comparator(page, column)
+ direction = page.order_by[column]
+
+ if direction&.to_sym == :desc
+ "#{column}_before"
+ else
+ "#{column}_after"
+ end
+ end
+
+ def page_href(page)
+ base_request_uri.tap do |uri|
+ uri.query = query_params_for(page).to_query
+ end.to_s
+ end
+
+ def pagination_links(next_page)
+ return if next_page.end_reached?
+
+ %(<#{page_href(next_page)}>; rel="next")
+ end
+
+ def base_request_uri
+ @base_request_uri ||= URI.parse(request.request.url).tap do |uri|
+ uri.host = Gitlab.config.gitlab.host
+ uri.port = Gitlab.config.gitlab.port
+ end
+ end
+
+ def query_params_for(page)
+ request.params.merge(lower_bounds_params(page))
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/patch/draw_route.rb b/lib/gitlab/patch/draw_route.rb
index 4c8ca015974..4d1b57fbbbb 100644
--- a/lib/gitlab/patch/draw_route.rb
+++ b/lib/gitlab/patch/draw_route.rb
@@ -10,7 +10,7 @@ module Gitlab
RoutesNotFound = Class.new(StandardError)
def draw(routes_name)
- drawn_any = draw_ce(routes_name) | draw_ee(routes_name)
+ drawn_any = draw_ee(routes_name) | draw_ce(routes_name)
drawn_any || raise(RoutesNotFound.new("Cannot find #{routes_name}"))
end
diff --git a/lib/gitlab/performance_bar/redis_adapter_when_peek_enabled.rb b/lib/gitlab/performance_bar/redis_adapter_when_peek_enabled.rb
index cddd4f18cc3..805283b0f93 100644
--- a/lib/gitlab/performance_bar/redis_adapter_when_peek_enabled.rb
+++ b/lib/gitlab/performance_bar/redis_adapter_when_peek_enabled.rb
@@ -5,7 +5,7 @@ module Gitlab
module PerformanceBar
module RedisAdapterWhenPeekEnabled
def save(request_id)
- super if ::Gitlab::PerformanceBar.enabled_for_request? && request_id.present?
+ super if ::Gitlab::PerformanceBar.enabled_for_request?
end
end
end
diff --git a/lib/gitlab/profiler.rb b/lib/gitlab/profiler.rb
index 560618bb486..f2f6180c464 100644
--- a/lib/gitlab/profiler.rb
+++ b/lib/gitlab/profiler.rb
@@ -118,6 +118,8 @@ module Gitlab
end
def self.clean_backtrace(backtrace)
+ return unless backtrace
+
Array(Rails.backtrace_cleaner.clean(backtrace)).reject do |line|
line.match(Regexp.union(IGNORE_BACKTRACES))
end
diff --git a/lib/gitlab/project_template.rb b/lib/gitlab/project_template.rb
index 279fc4aa375..b4ee8818925 100644
--- a/lib/gitlab/project_template.rb
+++ b/lib/gitlab/project_template.rb
@@ -54,6 +54,7 @@ module Gitlab
ProjectTemplate.new('nfplainhtml', 'Netlify/Plain HTML', _('A plain HTML site that uses Netlify for CI/CD instead of GitLab, but still with all the other great GitLab features.'), 'https://gitlab.com/pages/nfplain-html', 'illustrations/logos/netlify.svg'),
ProjectTemplate.new('nfgitbook', 'Netlify/GitBook', _('A GitBook site that uses Netlify for CI/CD instead of GitLab, but still with all the other great GitLab features.'), 'https://gitlab.com/pages/nfgitbook', 'illustrations/logos/netlify.svg'),
ProjectTemplate.new('nfhexo', 'Netlify/Hexo', _('A Hexo site that uses Netlify for CI/CD instead of GitLab, but still with all the other great GitLab features.'), 'https://gitlab.com/pages/nfhexo', 'illustrations/logos/netlify.svg'),
+ ProjectTemplate.new('salesforcedx', 'SalesforceDX', _('A project boilerplate for Salesforce App development with Salesforce Developer tools.'), 'https://gitlab.com/gitlab-org/project-templates/salesforcedx'),
ProjectTemplate.new('serverless_framework', 'Serverless Framework/JS', _('A basic page and serverless function that uses AWS Lambda, AWS API Gateway, and GitLab Pages'), 'https://gitlab.com/gitlab-org/project-templates/serverless-framework', 'illustrations/logos/serverless_framework.svg')
].freeze
diff --git a/lib/gitlab/puma_logging/json_formatter.rb b/lib/gitlab/puma_logging/json_formatter.rb
new file mode 100644
index 00000000000..9eeb980fc53
--- /dev/null
+++ b/lib/gitlab/puma_logging/json_formatter.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+require 'json'
+
+module Gitlab
+ module PumaLogging
+ class JSONFormatter
+ def call(str)
+ { timestamp: Time.now.utc.iso8601(3), pid: $$, message: str }.to_json
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/push_options.rb b/lib/gitlab/push_options.rb
index 93c0f3132d0..333f848df9b 100644
--- a/lib/gitlab/push_options.rb
+++ b/lib/gitlab/push_options.rb
@@ -16,11 +16,12 @@ module Gitlab
]
},
ci: {
- keys: [:skip]
+ keys: [:skip, :variable]
}
}).freeze
MULTI_VALUE_OPTIONS = [
+ %w[ci variable],
%w[merge_request label],
%w[merge_request unlabel]
].freeze
diff --git a/lib/gitlab/quick_actions/issue_actions.rb b/lib/gitlab/quick_actions/issue_actions.rb
index 838aefb59f0..b0aae363749 100644
--- a/lib/gitlab/quick_actions/issue_actions.rb
+++ b/lib/gitlab/quick_actions/issue_actions.rb
@@ -183,6 +183,7 @@ module Gitlab
command :zoom do |link|
result = @zoom_service.add_link(link)
@execution_message[:zoom] = result.message
+ @updates.merge!(result.payload) if result.payload
end
desc _('Remove Zoom meeting')
diff --git a/lib/gitlab/reference_extractor.rb b/lib/gitlab/reference_extractor.rb
index ea2b03b42c1..f095ac9ffd1 100644
--- a/lib/gitlab/reference_extractor.rb
+++ b/lib/gitlab/reference_extractor.rb
@@ -3,7 +3,7 @@
module Gitlab
# Extract possible GFM references from an arbitrary String for further processing.
class ReferenceExtractor < Banzai::ReferenceExtractor
- REFERABLES = %i(user issue label milestone
+ REFERABLES = %i(user issue label milestone mentioned_user mentioned_group mentioned_project
merge_request snippet commit commit_range directly_addressed_user epic).freeze
attr_accessor :project, :current_user, :author
diff --git a/lib/gitlab/regex.rb b/lib/gitlab/regex.rb
index e3a434dfe35..d9300da38a5 100644
--- a/lib/gitlab/regex.rb
+++ b/lib/gitlab/regex.rb
@@ -19,7 +19,7 @@ module Gitlab
# See https://github.com/docker/distribution/blob/master/reference/regexp.go.
#
def container_repository_name_regex
- @container_repository_regex ||= %r{\A[a-z0-9]+((?:[._/]|__|[-])[a-z0-9]+)*\Z}
+ @container_repository_regex ||= %r{\A[a-z0-9]+((?:[._/]|__|[-]{0,10})[a-z0-9]+)*\Z}
end
##
diff --git a/lib/gitlab/seeder.rb b/lib/gitlab/seeder.rb
index f96346322db..53cbd5b21ea 100644
--- a/lib/gitlab/seeder.rb
+++ b/lib/gitlab/seeder.rb
@@ -16,6 +16,8 @@ module Gitlab
class Seeder
extend ActionView::Helpers::NumberHelper
+ MASS_INSERT_PROJECT_START = 'mass_insert_project_'
+ MASS_INSERT_USER_START = 'mass_insert_user_'
ESTIMATED_INSERT_PER_MINUTE = 2_000_000
MASS_INSERT_ENV = 'MASS_INSERT'
@@ -24,7 +26,7 @@ module Gitlab
included do
scope :not_mass_generated, -> do
- where.not("path LIKE '#{Gitlab::Seeder::Projects::MASS_INSERT_NAME_START}%'")
+ where.not("path LIKE '#{MASS_INSERT_PROJECT_START}%'")
end
end
end
@@ -34,7 +36,7 @@ module Gitlab
included do
scope :not_mass_generated, -> do
- where.not("username LIKE '#{Gitlab::Seeder::Users::MASS_INSERT_USERNAME_START}%'")
+ where.not("username LIKE '#{MASS_INSERT_USER_START}%'")
end
end
end
diff --git a/lib/gitlab/sentry.rb b/lib/gitlab/sentry.rb
deleted file mode 100644
index 005cb3112b8..00000000000
--- a/lib/gitlab/sentry.rb
+++ /dev/null
@@ -1,77 +0,0 @@
-# frozen_string_literal: true
-
-module Gitlab
- module Sentry
- def self.enabled?
- (Rails.env.production? || Rails.env.development?) &&
- Gitlab.config.sentry.enabled
- end
-
- def self.context(current_user = nil)
- return unless enabled?
-
- Raven.tags_context(default_tags)
-
- if current_user
- Raven.user_context(
- id: current_user.id,
- email: current_user.email,
- username: current_user.username
- )
- end
- end
-
- # This can be used for investigating exceptions that can be recovered from in
- # code. The exception will still be raised in development and test
- # environments.
- #
- # That way we can track down these exceptions with as much information as we
- # need to resolve them.
- #
- # Provide an issue URL for follow up.
- def self.track_exception(exception, issue_url: nil, extra: {})
- track_acceptable_exception(exception, issue_url: issue_url, extra: extra)
-
- raise exception if should_raise_for_dev?
- end
-
- # This should be used when you do not want to raise an exception in
- # development and test. If you need development and test to behave
- # just the same as production you can use this instead of
- # track_exception.
- #
- # If the exception implements the method `sentry_extra_data` and that method
- # returns a Hash, then the return value of that method will be merged into
- # `extra`. Exceptions can use this mechanism to provide structured data
- # to sentry in addition to their message and back-trace.
- def self.track_acceptable_exception(exception, issue_url: nil, extra: {})
- if enabled?
- extra = build_extra_data(exception, issue_url, extra)
- context # Make sure we've set everything we know in the context
-
- Raven.capture_exception(exception, tags: default_tags, extra: extra)
- end
- end
-
- def self.should_raise_for_dev?
- Rails.env.development? || Rails.env.test?
- end
-
- def self.default_tags
- {
- Labkit::Correlation::CorrelationId::LOG_KEY.to_sym => Labkit::Correlation::CorrelationId.current_id,
- locale: I18n.locale
- }
- end
-
- def self.build_extra_data(exception, issue_url, extra)
- exception.try(:sentry_extra_data)&.tap do |data|
- extra.merge!(data) if data.is_a?(Hash)
- end
-
- extra.merge({ issue_url: issue_url }.compact)
- end
-
- private_class_method :build_extra_data
- end
-end
diff --git a/lib/gitlab/shell.rb b/lib/gitlab/shell.rb
index 28e5d0ba8f5..290c4cff329 100644
--- a/lib/gitlab/shell.rb
+++ b/lib/gitlab/shell.rb
@@ -126,7 +126,7 @@ module Gitlab
true
rescue => e
- Gitlab::Sentry.track_acceptable_exception(e, extra: { path: path, new_path: new_path, storage: storage })
+ Gitlab::ErrorTracking.track_exception(e, path: path, new_path: new_path, storage: storage)
false
end
@@ -158,7 +158,7 @@ module Gitlab
true
rescue => e
Rails.logger.warn("Repository does not exist: #{e} at: #{name}.git") # rubocop:disable Gitlab/RailsLogger
- Gitlab::Sentry.track_acceptable_exception(e, extra: { path: name, storage: storage })
+ Gitlab::ErrorTracking.track_exception(e, path: name, storage: storage)
false
end
@@ -267,7 +267,7 @@ module Gitlab
def mv_namespace(storage, old_name, new_name)
Gitlab::GitalyClient::NamespaceService.new(storage).rename(old_name, new_name)
rescue GRPC::InvalidArgument => e
- Gitlab::Sentry.track_acceptable_exception(e, extra: { old_name: old_name, new_name: new_name, storage: storage })
+ Gitlab::ErrorTracking.track_exception(e, old_name: old_name, new_name: new_name, storage: storage)
false
end
diff --git a/lib/gitlab/sidekiq_middleware.rb b/lib/gitlab/sidekiq_middleware.rb
new file mode 100644
index 00000000000..c6726dcfa67
--- /dev/null
+++ b/lib/gitlab/sidekiq_middleware.rb
@@ -0,0 +1,34 @@
+# frozen_string_literal: true
+
+module Gitlab
+ # The SidekiqMiddleware class is responsible for configuring the
+ # middleware stacks used in the client and server middlewares
+ module SidekiqMiddleware
+ # The result of this method should be passed to
+ # Sidekiq's `config.server_middleware` method
+ # eg: `config.server_middleware(&Gitlab::SidekiqMiddleware.server_configurator)`
+ def self.server_configurator(metrics: true, arguments_logger: true, memory_killer: true, request_store: true)
+ lambda do |chain|
+ chain.add Gitlab::SidekiqMiddleware::Monitor
+ chain.add Gitlab::SidekiqMiddleware::Metrics if metrics
+ chain.add Gitlab::SidekiqMiddleware::ArgumentsLogger if arguments_logger
+ chain.add Gitlab::SidekiqMiddleware::MemoryKiller if memory_killer
+ chain.add Gitlab::SidekiqMiddleware::RequestStoreMiddleware if request_store
+ chain.add Gitlab::SidekiqMiddleware::BatchLoader
+ chain.add Gitlab::SidekiqMiddleware::CorrelationLogger
+ chain.add Gitlab::SidekiqMiddleware::InstrumentationLogger
+ chain.add Gitlab::SidekiqStatus::ServerMiddleware
+ end
+ end
+
+ # The result of this method should be passed to
+ # Sidekiq's `config.client_middleware` method
+ # eg: `config.client_middleware(&Gitlab::SidekiqMiddleware.client_configurator)`
+ def self.client_configurator
+ lambda do |chain|
+ chain.add Gitlab::SidekiqStatus::ClientMiddleware
+ chain.add Gitlab::SidekiqMiddleware::CorrelationInjector
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/sidekiq_middleware/metrics.rb b/lib/gitlab/sidekiq_middleware/metrics.rb
index bd819843bd4..7bfb0d54d80 100644
--- a/lib/gitlab/sidekiq_middleware/metrics.rb
+++ b/lib/gitlab/sidekiq_middleware/metrics.rb
@@ -7,14 +7,17 @@ module Gitlab
# timeframes than the DEFAULT_BUCKET definition. Defined in seconds.
SIDEKIQ_LATENCY_BUCKETS = [0.1, 0.25, 0.5, 1, 2.5, 5, 10, 60, 300, 600].freeze
+ TRUE_LABEL = "yes"
+ FALSE_LABEL = "no"
+
def initialize
@metrics = init_metrics
@metrics[:sidekiq_concurrency].set({}, Sidekiq.options[:concurrency].to_i)
end
- def call(_worker, job, queue)
- labels = create_labels(queue)
+ def call(worker, job, queue)
+ labels = create_labels(worker.class, queue)
queue_duration = ::Gitlab::InstrumentationHelper.queue_duration_for_job(job)
@metrics[:sidekiq_jobs_queue_duration_seconds].observe(labels, queue_duration) if queue_duration
@@ -42,7 +45,7 @@ module Gitlab
@metrics[:sidekiq_jobs_failed_total].increment(labels, 1) unless job_succeeded
# job_status: done, fail match the job_status attribute in structured logging
- labels[:job_status] = job_succeeded ? :done : :fail
+ labels[:job_status] = job_succeeded ? "done" : "fail"
@metrics[:sidekiq_jobs_cpu_seconds].observe(labels, job_thread_cputime)
@metrics[:sidekiq_jobs_completion_seconds].observe(labels, monotonic_time)
end
@@ -62,10 +65,24 @@ module Gitlab
}
end
- def create_labels(queue)
- {
- queue: queue
- }
+ def create_labels(worker_class, queue)
+ labels = { queue: queue.to_s, latency_sensitive: FALSE_LABEL, external_dependencies: FALSE_LABEL, feature_category: "", boundary: "" }
+ return labels unless worker_class.include? WorkerAttributes
+
+ labels[:latency_sensitive] = bool_as_label(worker_class.latency_sensitive_worker?)
+ labels[:external_dependencies] = bool_as_label(worker_class.worker_has_external_dependencies?)
+
+ feature_category = worker_class.get_feature_category
+ labels[:feature_category] = feature_category.to_s
+
+ resource_boundary = worker_class.get_worker_resource_boundary
+ labels[:boundary] = resource_boundary == :unknown ? "" : resource_boundary.to_s
+
+ labels
+ end
+
+ def bool_as_label(value)
+ value ? TRUE_LABEL : FALSE_LABEL
end
def get_thread_cputime
diff --git a/lib/gitlab/slash_commands/presenters/access.rb b/lib/gitlab/slash_commands/presenters/access.rb
index fbc3cf2e049..c9c5c6da3bf 100644
--- a/lib/gitlab/slash_commands/presenters/access.rb
+++ b/lib/gitlab/slash_commands/presenters/access.rb
@@ -34,8 +34,8 @@ module Gitlab
def authorize
message =
- if @resource
- ":wave: Hi there! Before I do anything for you, please [connect your GitLab account](#{@resource})."
+ if resource
+ ":wave: Hi there! Before I do anything for you, please [connect your GitLab account](#{resource})."
else
":sweat_smile: Couldn't identify you, nor can I authorize you!"
end
diff --git a/lib/gitlab/slash_commands/presenters/base.rb b/lib/gitlab/slash_commands/presenters/base.rb
index 73814aa180f..54d74ed3998 100644
--- a/lib/gitlab/slash_commands/presenters/base.rb
+++ b/lib/gitlab/slash_commands/presenters/base.rb
@@ -18,6 +18,8 @@ module Gitlab
private
+ attr_reader :resource
+
def header_with_list(header, items)
message = [header]
@@ -67,12 +69,51 @@ module Gitlab
def resource_url
url_for(
[
- @resource.project.namespace.becomes(Namespace),
- @resource.project,
- @resource
+ resource.project.namespace.becomes(Namespace),
+ resource.project,
+ resource
]
)
end
+
+ def project_link
+ "[#{project.full_name}](#{project.web_url})"
+ end
+
+ def author_profile_link
+ "[#{author.to_reference}](#{url_for(author)})"
+ end
+
+ def response_message(custom_pretext: pretext)
+ {
+ attachments: [
+ {
+ title: "#{issue.title} · #{issue.to_reference}",
+ title_link: resource_url,
+ author_name: author.name,
+ author_icon: author.avatar_url,
+ fallback: fallback_message,
+ pretext: custom_pretext,
+ text: text,
+ color: color(resource),
+ fields: fields,
+ mrkdwn_in: fields_with_markdown
+ }
+ ]
+ }
+ end
+
+ def pretext
+ ''
+ end
+
+ def text
+ ''
+ end
+
+ def fields_with_markdown
+ %i(title pretext fields)
+ end
end
end
end
diff --git a/lib/gitlab/slash_commands/presenters/issue_base.rb b/lib/gitlab/slash_commands/presenters/issue_base.rb
index 0be31e234b5..4bc05d1f318 100644
--- a/lib/gitlab/slash_commands/presenters/issue_base.rb
+++ b/lib/gitlab/slash_commands/presenters/issue_base.rb
@@ -42,17 +42,11 @@ module Gitlab
]
end
- def project_link
- "[#{project.full_name}](#{project.web_url})"
- end
-
- def author_profile_link
- "[#{author.to_reference}](#{url_for(author)})"
- end
-
private
attr_reader :resource
+
+ alias_method :issue, :resource
end
end
end
diff --git a/lib/gitlab/slash_commands/presenters/issue_close.rb b/lib/gitlab/slash_commands/presenters/issue_close.rb
index b3f24f4296a..f8d9af2c3c6 100644
--- a/lib/gitlab/slash_commands/presenters/issue_close.rb
+++ b/lib/gitlab/slash_commands/presenters/issue_close.rb
@@ -7,43 +7,25 @@ module Gitlab
include Presenters::IssueBase
def present
- if @resource.confidential?
- ephemeral_response(close_issue)
+ if resource.confidential?
+ ephemeral_response(response_message)
else
- in_channel_response(close_issue)
+ in_channel_response(response_message)
end
end
def already_closed
- ephemeral_response(text: "Issue #{@resource.to_reference} is already closed.")
+ ephemeral_response(text: "Issue #{resource.to_reference} is already closed.")
end
private
- def close_issue
- {
- attachments: [
- {
- title: "#{@resource.title} · #{@resource.to_reference}",
- title_link: resource_url,
- author_name: author.name,
- author_icon: author.avatar_url,
- fallback: "Closed issue #{@resource.to_reference}: #{@resource.title}",
- pretext: pretext,
- color: color(@resource),
- fields: fields,
- mrkdwn_in: [
- :title,
- :pretext,
- :fields
- ]
- }
- ]
- }
+ def fallback_message
+ "Closed issue #{issue.to_reference}: #{issue.title}"
end
def pretext
- "I closed an issue on #{author_profile_link}'s behalf: *#{@resource.to_reference}* in #{project_link}"
+ "I closed an issue on #{author_profile_link}'s behalf: *#{issue.to_reference}* in #{project_link}"
end
end
end
diff --git a/lib/gitlab/slash_commands/presenters/issue_comment.rb b/lib/gitlab/slash_commands/presenters/issue_comment.rb
index cce71e23b21..6ad56dd3682 100644
--- a/lib/gitlab/slash_commands/presenters/issue_comment.rb
+++ b/lib/gitlab/slash_commands/presenters/issue_comment.rb
@@ -7,31 +7,13 @@ module Gitlab
include Presenters::NoteBase
def present
- ephemeral_response(new_note)
+ ephemeral_response(response_message)
end
private
- def new_note
- {
- attachments: [
- {
- title: "#{issue.title} · #{issue.to_reference}",
- title_link: resource_url,
- author_name: author.name,
- author_icon: author.avatar_url,
- fallback: "New comment on #{issue.to_reference}: #{issue.title}",
- pretext: pretext,
- color: color,
- fields: fields,
- mrkdwn_in: [
- :title,
- :pretext,
- :fields
- ]
- }
- ]
- }
+ def fallback_message
+ "New comment on #{issue.to_reference}: #{issue.title}"
end
def pretext
diff --git a/lib/gitlab/slash_commands/presenters/issue_move.rb b/lib/gitlab/slash_commands/presenters/issue_move.rb
index 01f2025ee10..5b9ca89c063 100644
--- a/lib/gitlab/slash_commands/presenters/issue_move.rb
+++ b/lib/gitlab/slash_commands/presenters/issue_move.rb
@@ -19,30 +19,15 @@ module Gitlab
private
def moved_issue(old_issue)
- {
- attachments: [
- {
- title: "#{@resource.title} · #{@resource.to_reference}",
- title_link: resource_url,
- author_name: author.name,
- author_icon: author.avatar_url,
- fallback: "Issue #{@resource.to_reference}: #{@resource.title}",
- pretext: pretext(old_issue),
- color: color(@resource),
- fields: fields,
- mrkdwn_in: [
- :title,
- :pretext,
- :text,
- :fields
- ]
- }
- ]
- }
+ response_message(custom_pretext: custom_pretext(old_issue))
end
- def pretext(old_issue)
- "Moved issue *#{issue_link(old_issue)}* to *#{issue_link(@resource)}*"
+ def fallback_message
+ "Issue #{issue.to_reference}: #{issue.title}"
+ end
+
+ def custom_pretext(old_issue)
+ "Moved issue *#{issue_link(old_issue)}* to *#{issue_link(issue)}*"
end
def issue_link(issue)
diff --git a/lib/gitlab/slash_commands/presenters/issue_new.rb b/lib/gitlab/slash_commands/presenters/issue_new.rb
index 1424a4ac381..552456f5836 100644
--- a/lib/gitlab/slash_commands/presenters/issue_new.rb
+++ b/lib/gitlab/slash_commands/presenters/issue_new.rb
@@ -7,36 +7,21 @@ module Gitlab
include Presenters::IssueBase
def present
- in_channel_response(new_issue)
+ in_channel_response(response_message)
end
private
- def new_issue
- {
- attachments: [
- {
- title: "#{@resource.title} · #{@resource.to_reference}",
- title_link: resource_url,
- author_name: author.name,
- author_icon: author.avatar_url,
- fallback: "New issue #{@resource.to_reference}: #{@resource.title}",
- pretext: pretext,
- color: color(@resource),
- fields: fields,
- mrkdwn_in: [
- :title,
- :pretext,
- :text,
- :fields
- ]
- }
- ]
- }
+ def fallback_message
+ "New issue #{issue.to_reference}: #{issue.title}"
+ end
+
+ def fields_with_markdown
+ %i(title pretext text fields)
end
def pretext
- "I created an issue on #{author_profile_link}'s behalf: *#{@resource.to_reference}* in #{project_link}"
+ "I created an issue on #{author_profile_link}'s behalf: *#{issue.to_reference}* in #{project_link}"
end
end
end
diff --git a/lib/gitlab/slash_commands/presenters/issue_search.rb b/lib/gitlab/slash_commands/presenters/issue_search.rb
index 0d497efec0e..fffa082baac 100644
--- a/lib/gitlab/slash_commands/presenters/issue_search.rb
+++ b/lib/gitlab/slash_commands/presenters/issue_search.rb
@@ -7,12 +7,12 @@ module Gitlab
include Presenters::IssueBase
def present
- text = if @resource.count >= 5
+ text = if resource.count >= 5
"Here are the first 5 issues I found:"
- elsif @resource.one?
+ elsif resource.one?
"Here is the only issue I found:"
else
- "Here are the #{@resource.count} issues I found:"
+ "Here are the #{resource.count} issues I found:"
end
ephemeral_response(text: text, attachments: attachments)
@@ -21,7 +21,7 @@ module Gitlab
private
def attachments
- @resource.map do |issue|
+ resource.map do |issue|
url = "[#{issue.to_reference}](#{url_for([namespace, project, issue])})"
{
@@ -37,7 +37,7 @@ module Gitlab
end
def project
- @project ||= @resource.first.project
+ @project ||= resource.first.project
end
def namespace
diff --git a/lib/gitlab/slash_commands/presenters/issue_show.rb b/lib/gitlab/slash_commands/presenters/issue_show.rb
index 5a2c79a928e..448381b64ed 100644
--- a/lib/gitlab/slash_commands/presenters/issue_show.rb
+++ b/lib/gitlab/slash_commands/presenters/issue_show.rb
@@ -7,55 +7,36 @@ module Gitlab
include Presenters::IssueBase
def present
- if @resource.confidential?
- ephemeral_response(show_issue)
+ if resource.confidential?
+ ephemeral_response(response_message)
else
- in_channel_response(show_issue)
+ in_channel_response(response_message)
end
end
private
- def show_issue
- {
- attachments: [
- {
- title: "#{@resource.title} · #{@resource.to_reference}",
- title_link: resource_url,
- author_name: author.name,
- author_icon: author.avatar_url,
- fallback: "Issue #{@resource.to_reference}: #{@resource.title}",
- pretext: pretext,
- text: text,
- color: color(@resource),
- fields: fields,
- mrkdwn_in: [
- :pretext,
- :text,
- :fields
- ]
- }
- ]
- }
+ def fallback_message
+ "Issue #{resource.to_reference}: #{resource.title}"
end
def text
- message = ["**#{status_text(@resource)}**"]
+ message = ["**#{status_text(resource)}**"]
- if @resource.upvotes.zero? && @resource.downvotes.zero? && @resource.user_notes_count.zero?
+ if resource.upvotes.zero? && resource.downvotes.zero? && resource.user_notes_count.zero?
return message.join
end
message << " · "
- message << ":+1: #{@resource.upvotes} " unless @resource.upvotes.zero?
- message << ":-1: #{@resource.downvotes} " unless @resource.downvotes.zero?
- message << ":speech_balloon: #{@resource.user_notes_count}" unless @resource.user_notes_count.zero?
+ message << ":+1: #{resource.upvotes} " unless resource.upvotes.zero?
+ message << ":-1: #{resource.downvotes} " unless resource.downvotes.zero?
+ message << ":speech_balloon: #{resource.user_notes_count}" unless resource.user_notes_count.zero?
message.join
end
def pretext
- "Issue *#{@resource.to_reference}* from #{project.full_name}"
+ "Issue *#{resource.to_reference}* from #{project.full_name}"
end
end
end
diff --git a/lib/gitlab/slash_commands/presenters/note_base.rb b/lib/gitlab/slash_commands/presenters/note_base.rb
index 7758fc740de..71a9b99d0fd 100644
--- a/lib/gitlab/slash_commands/presenters/note_base.rb
+++ b/lib/gitlab/slash_commands/presenters/note_base.rb
@@ -6,7 +6,7 @@ module Gitlab
module NoteBase
GREEN = '#38ae67'
- def color
+ def color(_)
GREEN
end
@@ -18,18 +18,10 @@ module Gitlab
issue.project
end
- def project_link
- "[#{project.full_name}](#{project.web_url})"
- end
-
def author
resource.author
end
- def author_profile_link
- "[#{author.to_reference}](#{url_for(author)})"
- end
-
def fields
[
{
diff --git a/lib/gitlab/sql/pattern.rb b/lib/gitlab/sql/pattern.rb
index f6edbfced7f..ca7ae429986 100644
--- a/lib/gitlab/sql/pattern.rb
+++ b/lib/gitlab/sql/pattern.rb
@@ -35,7 +35,7 @@ module Gitlab
query.length >= min_chars_for_partial_matching
end
- # column - The column name to search in.
+ # column - The column name / Arel column to search in.
# query - The text to search for.
# lower_exact_match - When set to `true` we'll fall back to using
# `LOWER(column) = query` instead of using `ILIKE`.
@@ -43,19 +43,21 @@ module Gitlab
query = query.squish
return unless query.present?
+ arel_column = column.is_a?(Arel::Attributes::Attribute) ? column : arel_table[column]
+
words = select_fuzzy_words(query, use_minimum_char_limit: use_minimum_char_limit)
if words.any?
- words.map { |word| arel_table[column].matches(to_pattern(word, use_minimum_char_limit: use_minimum_char_limit)) }.reduce(:and)
+ words.map { |word| arel_column.matches(to_pattern(word, use_minimum_char_limit: use_minimum_char_limit)) }.reduce(:and)
else
# No words of at least 3 chars, but we can search for an exact
# case insensitive match with the query as a whole
if lower_exact_match
Arel::Nodes::NamedFunction
- .new('LOWER', [arel_table[column]])
+ .new('LOWER', [arel_column])
.eq(query)
else
- arel_table[column].matches(sanitize_sql_like(query))
+ arel_column.matches(sanitize_sql_like(query))
end
end
end
diff --git a/lib/gitlab/tracking.rb b/lib/gitlab/tracking.rb
index 91e2ff0b10d..37688d6e0e7 100644
--- a/lib/gitlab/tracking.rb
+++ b/lib/gitlab/tracking.rb
@@ -29,14 +29,14 @@ module Gitlab
def event(category, action, label: nil, property: nil, value: nil, context: nil)
return unless enabled?
- snowplow.track_struct_event(category, action, label, property, value, context, Time.now.to_i)
+ snowplow.track_struct_event(category, action, label, property, value, context, (Time.now.to_f * 1000).to_i)
end
def self_describing_event(schema_url, event_data_json, context: nil)
return unless enabled?
event_json = SnowplowTracker::SelfDescribingJson.new(schema_url, event_data_json)
- snowplow.track_self_describing_event(event_json, context, Time.now.to_i)
+ snowplow.track_self_describing_event(event_json, context, (Time.now.to_f * 1000).to_i)
end
def snowplow_options(group)
diff --git a/lib/gitlab/url_builder.rb b/lib/gitlab/url_builder.rb
index 038067eeae4..4bedf7a301e 100644
--- a/lib/gitlab/url_builder.rb
+++ b/lib/gitlab/url_builder.rb
@@ -6,10 +6,10 @@ module Gitlab
include GitlabRoutingHelper
include ActionView::RecordIdentifier
- attr_reader :object
+ attr_reader :object, :opts
- def self.build(object)
- new(object).url
+ def self.build(object, opts = {})
+ new(object, opts).url
end
def url
@@ -24,10 +24,8 @@ module Gitlab
note_url
when WikiPage
wiki_page_url
- when ProjectSnippet
- project_snippet_url(object.project, object)
when Snippet
- snippet_url(object)
+ opts[:raw].present? ? gitlab_raw_snippet_url(object) : gitlab_snippet_url(object)
when Milestone
milestone_url(object)
when ::Ci::Build
@@ -41,8 +39,9 @@ module Gitlab
private
- def initialize(object)
+ def initialize(object, opts = {})
@object = object
+ @opts = opts
end
def commit_url(opts = {})
@@ -66,13 +65,7 @@ module Gitlab
merge_request_url(object.noteable, anchor: dom_id(object))
elsif object.for_snippet?
- snippet = object.noteable
-
- if snippet.is_a?(PersonalSnippet)
- snippet_url(snippet, anchor: dom_id(object))
- else
- project_snippet_url(snippet.project, snippet, anchor: dom_id(object))
- end
+ gitlab_snippet_url(object.noteable, anchor: dom_id(object))
end
end
diff --git a/lib/gitlab/usage_data.rb b/lib/gitlab/usage_data.rb
index b6effac25c6..ec2243345e1 100644
--- a/lib/gitlab/usage_data.rb
+++ b/lib/gitlab/usage_data.rb
@@ -82,8 +82,10 @@ module Gitlab
grafana_integrated_projects: count(GrafanaIntegration.enabled),
groups: count(Group),
issues: count(Issue),
+ issues_created_from_gitlab_error_tracking_ui: count(SentryIssue),
issues_with_associated_zoom_link: count(ZoomMeeting.added_to_issue),
issues_using_zoom_quick_actions: count(ZoomMeeting.select(:issue_id).distinct),
+ issues_with_embedded_grafana_charts_approx: ::Gitlab::GrafanaEmbedUsageData.issue_count,
keys: count(Key),
label_lists: count(List.label),
lfs_objects: count(LfsObject),
@@ -107,7 +109,8 @@ module Gitlab
services_usage,
approximate_counts,
usage_counters,
- user_preferences_usage
+ user_preferences_usage,
+ ingress_modsecurity_usage
)
}
end
@@ -169,6 +172,10 @@ module Gitlab
}
end
+ def ingress_modsecurity_usage
+ ::Clusters::Applications::IngressModsecurityUsageService.new.execute
+ end
+
# rubocop: disable CodeReuse/ActiveRecord
def services_usage
types = {
diff --git a/lib/gitlab/usage_data_counters/base_counter.rb b/lib/gitlab/usage_data_counters/base_counter.rb
index 2b52571c3cc..77fc216738f 100644
--- a/lib/gitlab/usage_data_counters/base_counter.rb
+++ b/lib/gitlab/usage_data_counters/base_counter.rb
@@ -8,7 +8,7 @@ module Gitlab::UsageDataCounters
class << self
def redis_key(event)
- Gitlab::Sentry.track_exception(UnknownEvent, extra: { event: event }) unless known_events.include?(event.to_s)
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(UnknownEvent.new, event: event) unless known_events.include?(event.to_s)
"USAGE_#{prefix}_#{event}".upcase
end
diff --git a/lib/gitlab/utils/override.rb b/lib/gitlab/utils/override.rb
index 35aea209cb9..784a6686962 100644
--- a/lib/gitlab/utils/override.rb
+++ b/lib/gitlab/utils/override.rb
@@ -146,7 +146,8 @@ module Gitlab
def prepended(base = nil)
super
- queue_verification(base) if base
+ # prepend can override methods, thus we need to verify it like classes
+ queue_verification(base, verify: true) if base
end
def extended(mod = nil)
@@ -155,11 +156,15 @@ module Gitlab
queue_verification(mod.singleton_class) if mod
end
- def queue_verification(base)
+ def queue_verification(base, verify: false)
return unless ENV['STATIC_VERIFICATION']
- if base.is_a?(Class) # We could check for Class in `override`
- # This could be `nil` if `override` was never called
+ # We could check for Class in `override`
+ # This could be `nil` if `override` was never called.
+ # We also force verification for prepend because it can also override
+ # a method like a class, but not the cases for include or extend.
+ # This includes Rails helpers but not limited to.
+ if base.is_a?(Class) || verify
Override.extensions[self]&.add_class(base)
end
end
diff --git a/lib/gitlab/visibility_level.rb b/lib/gitlab/visibility_level.rb
index e2787744f09..082d93aa354 100644
--- a/lib/gitlab/visibility_level.rb
+++ b/lib/gitlab/visibility_level.rb
@@ -29,7 +29,7 @@ module Gitlab
def levels_for_user(user = nil)
return [PUBLIC] unless user
- if user.full_private_access?
+ if user.can_read_all_resources?
[PRIVATE, INTERNAL, PUBLIC]
elsif user.external?
[PUBLIC]
@@ -115,6 +115,18 @@ module Gitlab
end
end
+ def visibility_level_decreased?
+ return false unless visibility_level_previous_changes
+
+ before, after = visibility_level_previous_changes
+
+ before && after && after < before
+ end
+
+ def visibility_level_previous_changes
+ previous_changes[:visibility_level]
+ end
+
def private?
visibility_level_value == PRIVATE
end
diff --git a/lib/gitlab/webpack/manifest.rb b/lib/gitlab/webpack/manifest.rb
index 1d2aff5e5b4..d2c01bbd55e 100644
--- a/lib/gitlab/webpack/manifest.rb
+++ b/lib/gitlab/webpack/manifest.rb
@@ -12,11 +12,12 @@ module Gitlab
def entrypoint_paths(source)
raise ::Webpack::Rails::Manifest::WebpackError, manifest["errors"] unless manifest_bundled?
+ dll_assets = manifest.fetch("dllAssets", [])
entrypoint = manifest["entrypoints"][source]
if entrypoint && entrypoint["assets"]
# Can be either a string or an array of strings.
# Do not include source maps as they are not javascript
- [entrypoint["assets"]].flatten.reject { |p| p =~ /.*\.map$/ }.map do |p|
+ [dll_assets, entrypoint["assets"]].flatten.reject { |p| p =~ /.*\.map$/ }.map do |p|
"/#{::Rails.configuration.webpack.public_path}/#{p}"
end
else
diff --git a/lib/google_api/cloud_platform/client.rb b/lib/google_api/cloud_platform/client.rb
index 99029b54a69..9668badc757 100644
--- a/lib/google_api/cloud_platform/client.rb
+++ b/lib/google_api/cloud_platform/client.rb
@@ -13,6 +13,11 @@ module GoogleApi
LEAST_TOKEN_LIFE_TIME = 10.minutes
CLUSTER_MASTER_AUTH_USERNAME = 'admin'
CLUSTER_IPV4_CIDR_BLOCK = '/16'
+ CLUSTER_OAUTH_SCOPES = [
+ "https://www.googleapis.com/auth/devstorage.read_only",
+ "https://www.googleapis.com/auth/logging.write",
+ "https://www.googleapis.com/auth/monitoring"
+ ].freeze
class << self
def session_key_for_token
@@ -86,7 +91,8 @@ module GoogleApi
name: cluster_name,
initial_node_count: cluster_size,
node_config: {
- machine_type: machine_type
+ machine_type: machine_type,
+ oauth_scopes: CLUSTER_OAUTH_SCOPES
},
master_auth: {
username: CLUSTER_MASTER_AUTH_USERNAME,
@@ -101,13 +107,17 @@ module GoogleApi
use_ip_aliases: true,
cluster_ipv4_cidr_block: CLUSTER_IPV4_CIDR_BLOCK
},
- addons_config: enable_addons.each_with_object({}) do |addon, hash|
- hash[addon] = { disabled: false }
- end
+ addons_config: make_addons_config(enable_addons)
}
}
end
+ def make_addons_config(enable_addons)
+ enable_addons.each_with_object({}) do |addon, hash|
+ hash[addon] = { disabled: false }
+ end
+ end
+
def token_life_time(expires_at)
DateTime.strptime(expires_at, '%s').to_time.utc - Time.now.utc
end
diff --git a/lib/quality/helm_client.rb b/lib/quality/helm_client.rb
index cf1f03b35b5..fc4e1ca2d18 100644
--- a/lib/quality/helm_client.rb
+++ b/lib/quality/helm_client.rb
@@ -7,7 +7,7 @@ module Quality
class HelmClient
CommandFailedError = Class.new(StandardError)
- attr_reader :namespace
+ attr_reader :tiller_namespace, :namespace
RELEASE_JSON_ATTRIBUTES = %w[Name Revision Updated Status Chart AppVersion Namespace].freeze
@@ -24,7 +24,8 @@ module Quality
# A single page of data and the corresponding page number.
Page = Struct.new(:releases, :number)
- def initialize(namespace:)
+ def initialize(tiller_namespace:, namespace:)
+ @tiller_namespace = tiller_namespace
@namespace = namespace
end
@@ -35,7 +36,7 @@ module Quality
def delete(release_name:)
run_command([
'delete',
- %(--tiller-namespace "#{namespace}"),
+ %(--tiller-namespace "#{tiller_namespace}"),
'--purge',
release_name
])
@@ -60,7 +61,7 @@ module Quality
command = [
'list',
%(--namespace "#{namespace}"),
- %(--tiller-namespace "#{namespace}" --output json),
+ %(--tiller-namespace "#{tiller_namespace}" --output json),
*args
]
json = JSON.parse(run_command(command))
diff --git a/lib/quality/kubernetes_client.rb b/lib/quality/kubernetes_client.rb
index cc899bf9374..db21c0b013b 100644
--- a/lib/quality/kubernetes_client.rb
+++ b/lib/quality/kubernetes_client.rb
@@ -4,6 +4,7 @@ require_relative '../gitlab/popen' unless defined?(Gitlab::Popen)
module Quality
class KubernetesClient
+ RESOURCE_LIST = 'ingress,svc,pdb,hpa,deploy,statefulset,job,pod,secret,configmap,pvc,secret,clusterrole,clusterrolebinding,role,rolebinding,sa,crd'
CommandFailedError = Class.new(StandardError)
attr_reader :namespace
@@ -13,6 +14,13 @@ module Quality
end
def cleanup(release_name:, wait: true)
+ delete_by_selector(release_name: release_name, wait: wait)
+ delete_by_matching_name(release_name: release_name)
+ end
+
+ private
+
+ def delete_by_selector(release_name:, wait:)
selector = case release_name
when String
%(-l release="#{release_name}")
@@ -23,9 +31,9 @@ module Quality
end
command = [
- %(--namespace "#{namespace}"),
'delete',
- 'ingress,svc,pdb,hpa,deploy,statefulset,job,pod,secret,configmap,pvc,secret,clusterrole,clusterrolebinding,role,rolebinding,sa',
+ RESOURCE_LIST,
+ %(--namespace "#{namespace}"),
'--now',
'--ignore-not-found',
'--include-uninitialized',
@@ -36,7 +44,29 @@ module Quality
run_command(command)
end
- private
+ def delete_by_matching_name(release_name:)
+ resource_names = raw_resource_names
+ command = [
+ 'delete',
+ %(--namespace "#{namespace}")
+ ]
+
+ Array(release_name).each do |release|
+ resource_names
+ .select { |resource_name| resource_name.include?(release) }
+ .each { |matching_resource| run_command(command + [matching_resource]) }
+ end
+ end
+
+ def raw_resource_names
+ command = [
+ 'get',
+ RESOURCE_LIST,
+ %(--namespace "#{namespace}"),
+ '-o custom-columns=NAME:.metadata.name'
+ ]
+ run_command(command).lines.map(&:strip)
+ end
def run_command(command)
final_command = ['kubectl', *command].join(' ')
diff --git a/lib/quality/test_level.rb b/lib/quality/test_level.rb
index 90a8096cc2b..84470a73b1b 100644
--- a/lib/quality/test_level.rb
+++ b/lib/quality/test_level.rb
@@ -5,6 +5,10 @@ module Quality
UnknownTestLevelError = Class.new(StandardError)
TEST_LEVEL_FOLDERS = {
+ migration: %w[
+ migrations
+ lib/gitlab/background_migration
+ ],
unit: %w[
bin
config
@@ -19,7 +23,6 @@ module Quality
initializers
javascripts
lib
- migrations
models
policies
presenters
@@ -36,10 +39,6 @@ module Quality
workers
elastic_integration
],
- migration: %w[
- migrations
- lib/gitlab/background_migration
- ],
integration: %w[
controllers
mailers
diff --git a/lib/sentry/client.rb b/lib/sentry/client.rb
index 6191d69c870..3df688a1fda 100644
--- a/lib/sentry/client.rb
+++ b/lib/sentry/client.rb
@@ -2,9 +2,19 @@
module Sentry
class Client
+ include Sentry::Client::Projects
+
Error = Class.new(StandardError)
MissingKeysError = Class.new(StandardError)
ResponseInvalidSizeError = Class.new(StandardError)
+ BadRequestError = Class.new(StandardError)
+
+ SENTRY_API_SORT_VALUE_MAP = {
+ # <accepted_by_client> => <accepted_by_sentry_api>
+ 'frequency' => 'freq',
+ 'first_seen' => 'new',
+ 'last_seen' => nil
+ }.freeze
attr_accessor :url, :token
@@ -25,21 +35,19 @@ module Sentry
map_to_event(latest_event)
end
- def list_issues(issue_status:, limit:)
- issues = get_issues(issue_status: issue_status, limit: limit)
-
- validate_size(issues)
+ def list_issues(**keyword_args)
+ response = get_issues(keyword_args)
- handle_mapping_exceptions do
- map_to_errors(issues)
- end
- end
+ issues = response[:issues]
+ pagination = response[:pagination]
- def list_projects
- projects = get_projects
+ validate_size(issues)
handle_mapping_exceptions do
- map_to_projects(projects)
+ {
+ issues: map_to_errors(issues),
+ pagination: pagination
+ }
end
end
@@ -48,14 +56,14 @@ module Sentry
def validate_size(issues)
return if Gitlab::Utils::DeepSize.new(issues).valid?
- raise Client::ResponseInvalidSizeError, "Sentry API response is too big. Limit is #{Gitlab::Utils::DeepSize.human_default_max_size}."
+ raise ResponseInvalidSizeError, "Sentry API response is too big. Limit is #{Gitlab::Utils::DeepSize.human_default_max_size}."
end
def handle_mapping_exceptions(&block)
yield
rescue KeyError => e
- Gitlab::Sentry.track_acceptable_exception(e)
- raise Client::MissingKeysError, "Sentry API response is missing keys. #{e.message}"
+ Gitlab::ErrorTracking.track_exception(e)
+ raise MissingKeysError, "Sentry API response is missing keys. #{e.message}"
end
def request_params
@@ -71,33 +79,46 @@ module Sentry
response = handle_request_exceptions do
Gitlab::HTTP.get(url, **request_params.merge(params))
end
-
handle_response(response)
end
- def get_issues(issue_status:, limit:)
- http_get(issues_api_url, query: {
- query: "is:#{issue_status}",
- limit: limit
- })
+ def get_issues(**keyword_args)
+ response = http_get(
+ issues_api_url,
+ query: list_issue_sentry_query(keyword_args)
+ )
+
+ {
+ issues: response[:body],
+ pagination: Sentry::PaginationParser.parse(response[:headers])
+ }
end
- def get_issue(issue_id:)
- http_get(issue_api_url(issue_id))
+ def list_issue_sentry_query(issue_status:, limit:, sort: nil, search_term: '', cursor: nil)
+ unless SENTRY_API_SORT_VALUE_MAP.key?(sort)
+ raise BadRequestError, 'Invalid value for sort param'
+ end
+
+ {
+ query: "is:#{issue_status} #{search_term}".strip,
+ limit: limit,
+ sort: SENTRY_API_SORT_VALUE_MAP[sort],
+ cursor: cursor
+ }.compact
end
- def get_issue_latest_event(issue_id:)
- http_get(issue_latest_event_api_url(issue_id))
+ def get_issue(issue_id:)
+ http_get(issue_api_url(issue_id))[:body]
end
- def get_projects
- http_get(projects_api_url)
+ def get_issue_latest_event(issue_id:)
+ http_get(issue_latest_event_api_url(issue_id))[:body]
end
def handle_request_exceptions
yield
rescue Gitlab::HTTP::Error => e
- Gitlab::Sentry.track_acceptable_exception(e)
+ Gitlab::ErrorTracking.track_exception(e)
raise_error 'Error when connecting to Sentry'
rescue Net::OpenTimeout
raise_error 'Connection to Sentry timed out'
@@ -108,7 +129,7 @@ module Sentry
rescue Errno::ECONNREFUSED
raise_error 'Connection refused'
rescue => e
- Gitlab::Sentry.track_acceptable_exception(e)
+ Gitlab::ErrorTracking.track_exception(e)
raise_error "Sentry request failed due to #{e.class}"
end
@@ -117,20 +138,13 @@ module Sentry
raise_error "Sentry response status code: #{response.code}"
end
- response.parsed_response
+ { body: response.parsed_response, headers: response.headers }
end
def raise_error(message)
raise Client::Error, message
end
- def projects_api_url
- projects_url = URI(@url)
- projects_url.path = '/api/0/projects/'
-
- projects_url
- end
-
def issue_api_url(issue_id)
issue_url = URI(@url)
issue_url.path = "/api/0/issues/#{issue_id}/"
@@ -156,10 +170,6 @@ module Sentry
issues.map(&method(:map_to_error))
end
- def map_to_projects(projects)
- projects.map(&method(:map_to_project))
- end
-
def issue_url(id)
issues_url = @url + "/issues/#{id}"
@@ -175,7 +185,7 @@ module Sentry
uri = URI(url)
uri.path.squeeze!('/')
- # Remove trailing spaces
+ # Remove trailing slash
uri = uri.to_s.gsub(/\/\z/, '')
uri
@@ -202,6 +212,15 @@ module Sentry
stack_trace_entry.dig('stacktrace', 'frames')
end
+ def parse_gitlab_issue(plugin_issues)
+ return unless plugin_issues
+
+ gitlab_plugin = plugin_issues.detect { |item| item['id'] == 'gitlab' }
+ return unless gitlab_plugin
+
+ gitlab_plugin.dig('issue', 'url')
+ end
+
def map_to_detailed_error(issue)
Gitlab::ErrorTracking::DetailedError.new(
id: issue.fetch('id'),
@@ -221,6 +240,7 @@ module Sentry
project_id: issue.dig('project', 'id'),
project_name: issue.dig('project', 'name'),
project_slug: issue.dig('project', 'slug'),
+ gitlab_issue: parse_gitlab_issue(issue.fetch('pluginIssues', nil)),
first_release_last_commit: issue.dig('firstRelease', 'lastCommit'),
last_release_last_commit: issue.dig('lastRelease', 'lastCommit'),
first_release_short_version: issue.dig('firstRelease', 'shortVersion'),
@@ -248,19 +268,5 @@ module Sentry
project_slug: issue.dig('project', 'slug')
)
end
-
- def map_to_project(project)
- organization = project.fetch('organization')
-
- Gitlab::ErrorTracking::Project.new(
- id: project.fetch('id', nil),
- name: project.fetch('name'),
- slug: project.fetch('slug'),
- status: project.dig('status'),
- organization_name: organization.fetch('name'),
- organization_id: organization.fetch('id', nil),
- organization_slug: organization.fetch('slug')
- )
- end
end
end
diff --git a/lib/sentry/client/projects.rb b/lib/sentry/client/projects.rb
new file mode 100644
index 00000000000..68f8fe0f9c9
--- /dev/null
+++ b/lib/sentry/client/projects.rb
@@ -0,0 +1,46 @@
+# frozen_string_literal: true
+
+module Sentry
+ class Client
+ module Projects
+ def projects
+ projects = get_projects
+
+ handle_mapping_exceptions do
+ map_to_projects(projects)
+ end
+ end
+
+ private
+
+ def get_projects
+ http_get(projects_api_url)[:body]
+ end
+
+ def projects_api_url
+ projects_url = URI(url)
+ projects_url.path = '/api/0/projects/'
+
+ projects_url
+ end
+
+ def map_to_projects(projects)
+ projects.map(&method(:map_to_project))
+ end
+
+ def map_to_project(project)
+ organization = project.fetch('organization')
+
+ Gitlab::ErrorTracking::Project.new(
+ id: project.fetch('id', nil),
+ name: project.fetch('name'),
+ slug: project.fetch('slug'),
+ status: project.dig('status'),
+ organization_name: organization.fetch('name'),
+ organization_id: organization.fetch('id', nil),
+ organization_slug: organization.fetch('slug')
+ )
+ end
+ end
+ end
+end
diff --git a/lib/sentry/pagination_parser.rb b/lib/sentry/pagination_parser.rb
new file mode 100644
index 00000000000..fa9c1dd8694
--- /dev/null
+++ b/lib/sentry/pagination_parser.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+module Sentry
+ module PaginationParser
+ PATTERN = /rel=\"(?<direction>\w+)\";\sresults=\"(?<results>\w+)\";\scursor=\"(?<cursor>.+)\"/.freeze
+
+ def self.parse(headers)
+ links = headers['link'].to_s.split(',')
+
+ links.map { |link| parse_link(link) }.compact.to_h
+ end
+
+ def self.parse_link(link)
+ match = link.match(PATTERN)
+
+ return unless match
+ return if match['results'] != "true"
+
+ [match['direction'], { 'cursor' => match['cursor'] }]
+ end
+ private_class_method :parse_link
+ end
+end
diff --git a/lib/tasks/db_obsolete_ignored_columns.rake b/lib/tasks/db_obsolete_ignored_columns.rake
index 184e407f28c..00f60231f4f 100644
--- a/lib/tasks/db_obsolete_ignored_columns.rake
+++ b/lib/tasks/db_obsolete_ignored_columns.rake
@@ -8,7 +8,10 @@ task 'db:obsolete_ignored_columns' => :environment do
puts 'The following `ignored_columns` are obsolete and can be removed:'
list.each do |name, ignored_columns|
- puts "- #{name}: #{ignored_columns.join(', ')}"
+ puts "#{name}:"
+ ignored_columns.each do |column, removal|
+ puts " - #{column.ljust(30)} Remove after #{removal.remove_after} with #{removal.remove_with}"
+ end
end
puts <<~TEXT
diff --git a/lib/tasks/gettext.rake b/lib/tasks/gettext.rake
index dfc0047e753..a192293fae6 100644
--- a/lib/tasks/gettext.rake
+++ b/lib/tasks/gettext.rake
@@ -94,7 +94,7 @@ namespace :gettext do
if pot_diff.present?
raise <<~MSG
- Newly translated strings found, please add them to `#{pot_file}` by running:
+ Changes in translated strings found, please update file `#{pot_file}` by running:
bin/rake gettext:regenerate
diff --git a/lib/tasks/gitlab/assets.rake b/lib/tasks/gitlab/assets.rake
index 7a42e4e92a0..3aa1dc403d6 100644
--- a/lib/tasks/gitlab/assets.rake
+++ b/lib/tasks/gitlab/assets.rake
@@ -8,6 +8,7 @@ namespace :gitlab do
yarn:check
gettext:po_to_json
rake:assets:precompile
+ gitlab:assets:vendor
webpack:compile
gitlab:assets:fix_urls
].each(&Gitlab::TaskHelpers.method(:invoke_and_time_task))
@@ -49,5 +50,12 @@ namespace :gitlab do
end
end
end
+
+ desc 'GitLab | Assets | Compile vendor assets'
+ task :vendor do
+ unless system('yarn webpack-vendor')
+ abort 'Error: Unable to compile webpack DLL.'.color(:red)
+ end
+ end
end
end
diff --git a/lib/tasks/gitlab/cleanup.rake b/lib/tasks/gitlab/cleanup.rake
index 0a0ee7b4bfa..63f5d7f2740 100644
--- a/lib/tasks/gitlab/cleanup.rake
+++ b/lib/tasks/gitlab/cleanup.rake
@@ -92,7 +92,7 @@ namespace :gitlab do
lookup_key_count = redis.scard(key)
session_ids = ActiveSession.session_ids_for_user(user_id)
- entries = ActiveSession.raw_active_session_entries(session_ids, user_id)
+ entries = ActiveSession.raw_active_session_entries(redis, session_ids, user_id)
session_ids_and_entries = session_ids.zip(entries)
inactive_session_ids = session_ids_and_entries.map do |session_id, session|
diff --git a/lib/tasks/gitlab/generate_sample_prometheus_data.rake b/lib/tasks/gitlab/generate_sample_prometheus_data.rake
new file mode 100644
index 00000000000..a988494ca61
--- /dev/null
+++ b/lib/tasks/gitlab/generate_sample_prometheus_data.rake
@@ -0,0 +1,20 @@
+namespace :gitlab do
+ desc "GitLab | Generate Sample Prometheus Data"
+ task :generate_sample_prometheus_data, [:environment_id] => :gitlab_environment do |_, args|
+ environment = Environment.find(args[:environment_id])
+ metrics = PrometheusMetric.where(project_id: [environment.project.id, nil])
+ query_variables = Gitlab::Prometheus::QueryVariables.call(environment)
+
+ sample_metrics_directory_name = Metrics::SampleMetricsService::DIRECTORY
+ FileUtils.mkdir_p(sample_metrics_directory_name)
+
+ metrics.each do |metric|
+ query = metric.query % query_variables
+ result = environment.prometheus_adapter.prometheus_client.query_range(query, start: 7.days.ago)
+
+ next unless metric.identifier
+
+ File.write("#{sample_metrics_directory_name}/#{metric.identifier}.yml", result.to_yaml)
+ end
+ end
+end
diff --git a/lib/tasks/gitlab/import_export/import.rake b/lib/tasks/gitlab/import_export/import.rake
new file mode 100644
index 00000000000..a88fb88c7ef
--- /dev/null
+++ b/lib/tasks/gitlab/import_export/import.rake
@@ -0,0 +1,146 @@
+# frozen_string_literal: true
+
+# Import large project archives
+#
+# This task:
+# 1. Disables ObjectStorage for archive upload
+# 2. Performs Sidekiq job synchronously
+#
+# @example
+# bundle exec rake "gitlab:import_export:import[root, root, imported_project, /path/to/file.tar.gz]"
+#
+namespace :gitlab do
+ namespace :import_export do
+ desc 'EXPERIMENTAL | Import large project archives'
+ task :import, [:username, :namespace_path, :project_path, :archive_path] => :gitlab_environment do |_t, args|
+ # Load it here to avoid polluting Rake tasks with Sidekiq test warnings
+ require 'sidekiq/testing'
+
+ warn_user_is_not_gitlab
+
+ if ENV['IMPORT_DEBUG'].present?
+ ActiveRecord::Base.logger = Logger.new(STDOUT)
+ end
+
+ GitlabProjectImport.new(
+ namespace_path: args.namespace_path,
+ project_path: args.project_path,
+ username: args.username,
+ file_path: args.archive_path
+ ).import
+ end
+ end
+end
+
+class GitlabProjectImport
+ def initialize(opts)
+ @project_path = opts.fetch(:project_path)
+ @file_path = opts.fetch(:file_path)
+ @namespace = Namespace.find_by_full_path(opts.fetch(:namespace_path))
+ @current_user = User.find_by_username(opts.fetch(:username))
+ end
+
+ def import
+ show_import_start_message
+
+ run_isolated_sidekiq_job
+
+ show_import_failures_count
+
+ if @project&.import_state&.last_error
+ puts "ERROR: #{@project.import_state.last_error}"
+ exit 1
+ elsif @project.errors.any?
+ puts "ERROR: #{@project.errors.full_messages.join(', ')}"
+ exit 1
+ else
+ puts 'Done!'
+ end
+ rescue StandardError => e
+ puts "Exception: #{e.message}"
+ puts e.backtrace
+ exit 1
+ end
+
+ private
+
+ def with_request_store
+ RequestStore.begin!
+ yield
+ ensure
+ RequestStore.end!
+ RequestStore.clear!
+ end
+
+ # We want to ensure that all Sidekiq jobs are executed
+ # synchronously as part of that process.
+ # This ensures that all expensive operations do not escape
+ # to general Sidekiq clusters/nodes.
+ def run_isolated_sidekiq_job
+ Sidekiq::Testing.fake! do
+ with_request_store do
+ @project = create_project
+
+ execute_sidekiq_job
+ end
+ true
+ end
+ end
+
+ def create_project
+ # We are disabling ObjectStorage for `import`
+ # as it is too slow to handle big archives:
+ # 1. DB transaction timeouts on upload
+ # 2. Download of archive before unpacking
+ disable_upload_object_storage do
+ service = Projects::GitlabProjectsImportService.new(
+ @current_user,
+ {
+ namespace_id: @namespace.id,
+ path: @project_path,
+ file: File.open(@file_path)
+ }
+ )
+
+ service.execute
+ end
+ end
+
+ def execute_sidekiq_job
+ Sidekiq::Worker.drain_all
+ end
+
+ def disable_upload_object_storage
+ overwrite_uploads_setting('background_upload', false) do
+ overwrite_uploads_setting('direct_upload', false) do
+ yield
+ end
+ end
+ end
+
+ def overwrite_uploads_setting(key, value)
+ old_value = Settings.uploads.object_store[key]
+ Settings.uploads.object_store[key] = value
+
+ yield
+
+ ensure
+ Settings.uploads.object_store[key] = old_value
+ end
+
+ def full_path
+ "#{@namespace.full_path}/#{@project_path}"
+ end
+
+ def show_import_start_message
+ puts "Importing GitLab export: #{@file_path} into GitLab" \
+ " #{full_path}" \
+ " as #{@current_user.name}"
+ end
+
+ def show_import_failures_count
+ return unless @project.import_failures.exists?
+
+ puts "Total number of not imported relations: #{@project.import_failures.count}"
+ end
+end
diff --git a/lib/tasks/gitlab/metrics.rake b/lib/tasks/gitlab/metrics.rake
new file mode 100644
index 00000000000..8a57e400dbe
--- /dev/null
+++ b/lib/tasks/gitlab/metrics.rake
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+namespace :metrics do
+ desc "GitLab | Setup common metrics"
+ task setup_common_metrics: :gitlab_environment do
+ ::Gitlab::DatabaseImporters::CommonMetrics::Importer.new.execute
+ end
+end
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index dc40d58a58c..9044dcc2ff8 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -53,10 +53,10 @@ msgstr ""
msgid " or <!merge request id>"
msgstr ""
-msgid " or <#epic id>"
+msgid " or <#issue id>"
msgstr ""
-msgid " or <#issue id>"
+msgid " or <&epic id>"
msgstr ""
msgid " or references (e.g. path/to/project!merge_request_id)"
@@ -153,6 +153,11 @@ msgid_plural "%d more comments"
msgstr[0] ""
msgstr[1] ""
+msgid "%d project"
+msgid_plural "%d projects"
+msgstr[0] ""
+msgstr[1] ""
+
msgid "%d request with warnings"
msgid_plural "%d requests with warnings"
msgstr[0] ""
@@ -234,6 +239,12 @@ msgstr[1] ""
msgid "%{count} related %{pluralized_subject}: %{links}"
msgstr ""
+msgid "%{days} days until tags are automatically removed"
+msgstr ""
+
+msgid "%{description}- Sentry event: %{errorUrl}- First seen: %{firstSeen}- Last seen: %{lastSeen} %{countLabel}: %{count}%{userCountLabel}: %{userCount}"
+msgstr ""
+
msgid "%{duration}ms"
msgstr ""
@@ -288,6 +299,9 @@ msgstr ""
msgid "%{link_start}Read more%{link_end} about role permissions"
msgstr ""
+msgid "%{link} can be used for binding events when something is happening within the project."
+msgstr ""
+
msgid "%{listToShow}, and %{awardsListLength} more."
msgstr ""
@@ -321,6 +335,9 @@ msgstr ""
msgid "%{percent}%% complete"
msgstr ""
+msgid "%{percent}%{percentSymbol} complete"
+msgstr ""
+
msgid "%{primary} (%{secondary})"
msgstr ""
@@ -374,6 +391,15 @@ msgstr[1] ""
msgid "%{tabname} changed"
msgstr ""
+msgid "%{tags} tag per image name"
+msgstr ""
+
+msgid "%{tags} tags per image name"
+msgstr ""
+
+msgid "%{tag}-evidence.json"
+msgstr ""
+
msgid "%{template_project_id} is unknown or invalid"
msgstr ""
@@ -471,12 +497,22 @@ msgstr ""
msgid ", or "
msgstr ""
+msgid "- Event"
+msgid_plural "- Events"
+msgstr[0] ""
+msgstr[1] ""
+
msgid "- Runner is active and can process any new jobs"
msgstr ""
msgid "- Runner is paused and will not receive any new jobs"
msgstr ""
+msgid "- User"
+msgid_plural "- Users"
+msgstr[0] ""
+msgstr[1] ""
+
msgid "- show less"
msgstr ""
@@ -678,6 +714,9 @@ msgstr ""
msgid "A merge request approval is required when the license compliance report contains a blacklisted license."
msgstr ""
+msgid "A new Auto DevOps pipeline has been created, go to %{pipelines_link_start}Pipelines page%{pipelines_link_end} for details"
+msgstr ""
+
msgid "A new Release %{tag} for %{name} was published. Visit the %{release_link_start}Releases page%{release_link_end} to read more about it."
msgstr ""
@@ -693,6 +732,9 @@ msgstr ""
msgid "A plain HTML site that uses Netlify for CI/CD instead of GitLab, but still with all the other great GitLab features."
msgstr ""
+msgid "A project boilerplate for Salesforce App development with Salesforce Developer tools."
+msgstr ""
+
msgid "A project is where you house your files (repository), plan your work (issues), and publish your documentation (wiki), %{among_other_things_link}."
msgstr ""
@@ -965,9 +1007,6 @@ msgstr ""
msgid "Add approval rule"
msgstr ""
-msgid "Add approvers"
-msgstr ""
-
msgid "Add bold text"
msgstr ""
@@ -1019,6 +1058,9 @@ msgstr ""
msgid "Add request manually"
msgstr ""
+msgid "Add system hook"
+msgstr ""
+
msgid "Add to Slack"
msgstr ""
@@ -1046,6 +1088,9 @@ msgstr ""
msgid "Add users to group"
msgstr ""
+msgid "Add webhook"
+msgstr ""
+
msgid "AddMember|No users specified."
msgstr ""
@@ -1100,6 +1145,9 @@ msgstr ""
msgid "Adds an issue to an epic."
msgstr ""
+msgid "Adjust your filters/search criteria above."
+msgstr ""
+
msgid "Admin Area"
msgstr ""
@@ -1109,9 +1157,15 @@ msgstr ""
msgid "Admin Section"
msgstr ""
+msgid "Admin mode already enabled"
+msgstr ""
+
msgid "Admin mode disabled"
msgstr ""
+msgid "Admin mode enabled"
+msgstr ""
+
msgid "Admin notes"
msgstr ""
@@ -1130,6 +1184,12 @@ msgstr ""
msgid "AdminArea|You’re about to stop all jobs.This will halt all current jobs that are running."
msgstr ""
+msgid "AdminCredentials|Personal Access Tokens"
+msgstr ""
+
+msgid "AdminCredentials|SSH Keys"
+msgstr ""
+
msgid "AdminDashboard|Error loading the statistics. Please try again"
msgstr ""
@@ -1274,6 +1334,9 @@ msgstr ""
msgid "AdminUsers|New user"
msgstr ""
+msgid "AdminUsers|No credentials found"
+msgstr ""
+
msgid "AdminUsers|No users found"
msgstr ""
@@ -1657,6 +1720,9 @@ msgstr ""
msgid "An error occurred while loading issues"
msgstr ""
+msgid "An error occurred while loading the data. Please try again."
+msgstr ""
+
msgid "An error occurred while loading the file"
msgstr ""
@@ -1699,6 +1765,9 @@ msgstr ""
msgid "An error occurred while saving the approval settings"
msgstr ""
+msgid "An error occurred while saving the template. Please check if the template exists."
+msgstr ""
+
msgid "An error occurred while subscribing to notifications."
msgstr ""
@@ -1780,6 +1849,15 @@ msgstr ""
msgid "Analytics"
msgstr ""
+msgid "Analyze a review version of your web application."
+msgstr ""
+
+msgid "Analyze your dependencies for known vulnerabilities"
+msgstr ""
+
+msgid "Analyze your source code for known vulnerabilities"
+msgstr ""
+
msgid "Ancestors"
msgstr ""
@@ -1798,9 +1876,15 @@ msgstr ""
msgid "Any Milestone"
msgstr ""
+msgid "Any eligible user"
+msgstr ""
+
msgid "Any encrypted tokens"
msgstr ""
+msgid "Any member with Developer or higher permissions to the project."
+msgstr ""
+
msgid "Any namespace"
msgstr ""
@@ -1882,6 +1966,9 @@ msgstr ""
msgid "Applying suggestion"
msgstr ""
+msgid "Approval rules"
+msgstr ""
+
msgid "ApprovalRuleRemove|%d member"
msgid_plural "ApprovalRuleRemove|%d members"
msgstr[0] ""
@@ -1905,9 +1992,6 @@ msgid_plural "ApprovalRuleSummary|%{count} approvals required from %{membersCoun
msgstr[0] ""
msgstr[1] ""
-msgid "ApprovalRule|All members with Developer role or higher and code owners (if any)"
-msgstr ""
-
msgid "ApprovalRule|Approvers"
msgstr ""
@@ -1950,13 +2034,16 @@ msgstr ""
msgid "Archive project"
msgstr ""
+msgid "Archived project! Repository and other project resources are read only"
+msgstr ""
+
msgid "Archived project! Repository and other project resources are read-only"
msgstr ""
msgid "Archived projects"
msgstr ""
-msgid "Archiving the project will make it entirely read-only. It is hidden from the dashboard and doesn't show up in searches. <strong>The repository cannot be committed to, and no issues, comments or other entities can be created.</strong>"
+msgid "Archiving the project will make it entirely read only. It is hidden from the dashboard and doesn't show up in searches. %{strong_start}The repository cannot be committed to, and no issues, comments, or other entities can be created.%{strong_end}"
msgstr ""
msgid "Are you setting up GitLab for a company?"
@@ -2001,6 +2088,9 @@ msgstr ""
msgid "Are you sure you want to lose your issue information?"
msgstr ""
+msgid "Are you sure you want to merge immediately?"
+msgstr ""
+
msgid "Are you sure you want to permanently delete this license?"
msgstr ""
@@ -2159,6 +2249,9 @@ msgstr ""
msgid "At least one approval from a code owner is required to change files matching the respective CODEOWNER rules."
msgstr ""
+msgid "At least one of group_id or project_id must be specified"
+msgstr ""
+
msgid "Attach a file"
msgstr ""
@@ -2179,6 +2272,18 @@ msgstr ""
msgid "Audit Events is a way to keep track of important events that happened in GitLab."
msgstr ""
+msgid "AuditEvents|(removed)"
+msgstr ""
+
+msgid "AuditEvents|Action"
+msgstr ""
+
+msgid "AuditEvents|At"
+msgstr ""
+
+msgid "AuditEvents|Target"
+msgstr ""
+
msgid "Aug"
msgstr ""
@@ -2254,6 +2359,9 @@ msgstr ""
msgid "Auto License Compliance"
msgstr ""
+msgid "Auto stop successfully canceled."
+msgstr ""
+
msgid "Auto-cancel redundant, pending pipelines"
msgstr ""
@@ -2371,6 +2479,9 @@ msgstr ""
msgid "Badges|Link"
msgstr ""
+msgid "Badges|Name"
+msgstr ""
+
msgid "Badges|No badge image"
msgstr ""
@@ -2503,10 +2614,10 @@ msgstr ""
msgid "BillingPlans|To manage the plan for this group, visit the billing section of %{parent_billing_page_link}."
msgstr ""
-msgid "BillingPlans|Your GitLab.com Gold trial expired on %{expiration_date}. You can restore access to the Gold features at any time by upgrading below."
+msgid "BillingPlans|Your GitLab.com %{plan} trial will <strong>expire after %{expiration_date}</strong>. You can retain access to the %{plan} features by upgrading below."
msgstr ""
-msgid "BillingPlans|Your GitLab.com Gold trial will <strong>expire after %{expiration_date}</strong>. You can retain access to the Gold features by upgrading below."
+msgid "BillingPlans|Your GitLab.com trial expired on %{expiration_date}. You can restore access to the features at any time by upgrading below."
msgstr ""
msgid "BillingPlans|billed annually at %{price_per_year}"
@@ -2884,6 +2995,9 @@ msgstr ""
msgid "Callback URL"
msgstr ""
+msgid "Can deploy manually to"
+msgstr ""
+
msgid "Can override approvers and approvals required per merge request"
msgstr ""
@@ -2899,6 +3013,9 @@ msgstr ""
msgid "Can't scan the code?"
msgstr ""
+msgid "Canary"
+msgstr ""
+
msgid "Canary Deployments is a popular CI strategy, where a small portion of the fleet is updated to the new version of your application."
msgstr ""
@@ -2911,6 +3028,9 @@ msgstr ""
msgid "Cancel this job"
msgstr ""
+msgid "Canceled deploy to"
+msgstr ""
+
msgid "Cancelling Preview"
msgstr ""
@@ -3034,6 +3154,9 @@ msgstr ""
msgid "Charts"
msgstr ""
+msgid "Charts can't be displayed as the request for data has timed out. %{documentationLink}"
+msgstr ""
+
msgid "Chat"
msgstr ""
@@ -3100,6 +3223,9 @@ msgstr ""
msgid "Check your .gitlab-ci.yml"
msgstr ""
+msgid "Check your Docker images for known vulnerabilities"
+msgstr ""
+
msgid "Checking %{text} availability…"
msgstr ""
@@ -3115,6 +3241,21 @@ msgstr ""
msgid "Checking username availability..."
msgstr ""
+msgid "Checkout"
+msgstr ""
+
+msgid "Checkout|1. Your profile"
+msgstr ""
+
+msgid "Checkout|2. Checkout"
+msgstr ""
+
+msgid "Checkout|3. Your GitLab group"
+msgstr ""
+
+msgid "Checkout|Checkout"
+msgstr ""
+
msgid "Cherry-pick this commit"
msgstr ""
@@ -3328,6 +3469,9 @@ msgstr ""
msgid "Clear"
msgstr ""
+msgid "Clear chart filters"
+msgstr ""
+
msgid "Clear input"
msgstr ""
@@ -3439,9 +3583,15 @@ msgstr ""
msgid "Cluster Health"
msgstr ""
+msgid "Cluster cache cleared."
+msgstr ""
+
msgid "ClusterIntegration| %{custom_domain_start}More information%{custom_domain_end}."
msgstr ""
+msgid "ClusterIntegration| This will permanently delete the following resources: <ul> <li>All installed applications and related resources</li> <li>The <code>gitlab-managed-apps</code> namespace</li> <li>Any project namespaces</li> <li><code>clusterroles</code></li> <li><code>clusterrolebindings</code></li> </ul>"
+msgstr ""
+
msgid "ClusterIntegration| can be used instead of a custom domain."
msgstr ""
@@ -3529,9 +3679,6 @@ msgstr ""
msgid "ClusterIntegration|Apply for credit"
msgstr ""
-msgid "ClusterIntegration|Are you sure you want to remove this Kubernetes cluster's integration? This will not delete your actual Kubernetes cluster."
-msgstr ""
-
msgid "ClusterIntegration|Authenticate with AWS"
msgstr ""
@@ -3553,9 +3700,6 @@ msgstr ""
msgid "ClusterIntegration|Certificate Authority bundle (PEM format)"
msgstr ""
-msgid "ClusterIntegration|Choose a prefix to be used for your namespaces. Defaults to your project path."
-msgstr ""
-
msgid "ClusterIntegration|Choose the %{startLink}security group %{externalLinkIcon} %{endLink} to apply to the EKS-managed Elastic Network Interfaces that are created in your worker node subnets."
msgstr ""
@@ -3571,6 +3715,12 @@ msgstr ""
msgid "ClusterIntegration|Choose which of your environments will use this cluster."
msgstr ""
+msgid "ClusterIntegration|Clear cluster cache"
+msgstr ""
+
+msgid "ClusterIntegration|Clear the local cache of namespace and service accounts. This is necessary if your integration has become out of sync. The cache is repopulated during the next CI job that requires namespace and service accounts."
+msgstr ""
+
msgid "ClusterIntegration|Cloud Run"
msgstr ""
@@ -3640,13 +3790,13 @@ msgstr ""
msgid "ClusterIntegration|Create cluster on"
msgstr ""
-msgid "ClusterIntegration|Create new Cluster"
+msgid "ClusterIntegration|Create new cluster"
msgstr ""
-msgid "ClusterIntegration|Create new Cluster on EKS"
+msgid "ClusterIntegration|Create new cluster on EKS"
msgstr ""
-msgid "ClusterIntegration|Create new Cluster on GKE"
+msgid "ClusterIntegration|Create new cluster on GKE"
msgstr ""
msgid "ClusterIntegration|Creating Kubernetes cluster"
@@ -3658,9 +3808,15 @@ msgstr ""
msgid "ClusterIntegration|Crossplane enables declarative provisioning of managed services from your cloud of choice using %{kubectl} or %{gitlabIntegrationLink}. Crossplane runs inside your Kubernetes cluster and supports secure connectivity and secrets management between app containers and the cloud services they depend on."
msgstr ""
+msgid "ClusterIntegration|Deletes all GitLab resources attached to this cluster during removal"
+msgstr ""
+
msgid "ClusterIntegration|Did you know?"
msgstr ""
+msgid "ClusterIntegration|Elastic Kubernetes Service"
+msgstr ""
+
msgid "ClusterIntegration|Elastic Stack"
msgstr ""
@@ -3754,6 +3910,9 @@ msgstr ""
msgid "ClusterIntegration|If you are setting up multiple clusters and are using Auto DevOps, %{help_link_start}read this first%{help_link_end}."
msgstr ""
+msgid "ClusterIntegration|If you do not wish to delete all associated GitLab resources, you can simply remove the integration."
+msgstr ""
+
msgid "ClusterIntegration|In order to view the health of your cluster, you must first install Prometheus below."
msgstr ""
@@ -3892,7 +4051,7 @@ msgstr ""
msgid "ClusterIntegration|Make sure your account %{link_to_requirements} to create Kubernetes clusters"
msgstr ""
-msgid "ClusterIntegration|Manage your Kubernetes cluster by visiting %{link_gke}"
+msgid "ClusterIntegration|Manage your Kubernetes cluster by visiting %{provider_link}"
msgstr ""
msgid "ClusterIntegration|No IAM Roles found"
@@ -3976,9 +4135,21 @@ msgstr ""
msgid "ClusterIntegration|Remove integration"
msgstr ""
+msgid "ClusterIntegration|Remove integration and resources"
+msgstr ""
+
+msgid "ClusterIntegration|Remove integration and resources?"
+msgstr ""
+
+msgid "ClusterIntegration|Remove integration?"
+msgstr ""
+
msgid "ClusterIntegration|Remove this Kubernetes cluster's configuration from this project. This will not delete your actual Kubernetes cluster."
msgstr ""
+msgid "ClusterIntegration|Removes cluster from project but keeps associated resources"
+msgstr ""
+
msgid "ClusterIntegration|Replace this with your own hostname if you want. If you do so, point hostname to Ingress IP Address from above."
msgstr ""
@@ -4039,9 +4210,6 @@ msgstr ""
msgid "ClusterIntegration|Select a VPC to use for your EKS Cluster resources. To use a new VPC, first create one on %{startLink}Amazon Web Services %{externalLinkIcon} %{endLink}."
msgstr ""
-msgid "ClusterIntegration|Select a different AWS role"
-msgstr ""
-
msgid "ClusterIntegration|Select a region to choose a Key Pair"
msgstr ""
@@ -4081,6 +4249,9 @@ msgstr ""
msgid "ClusterIntegration|Service token is required."
msgstr ""
+msgid "ClusterIntegration|Set a prefix for your namespaces. If not set, defaults to your project path. If modified, existing environments will use their current namespaces until the cluster cache is cleared."
+msgstr ""
+
msgid "ClusterIntegration|Show"
msgstr ""
@@ -4147,6 +4318,12 @@ msgstr ""
msgid "ClusterIntegration|To access your application after deployment, point a wildcard DNS to the Knative Endpoint."
msgstr ""
+msgid "ClusterIntegration|To remove your integration and resources, type %{clusterName} to confirm:"
+msgstr ""
+
+msgid "ClusterIntegration|To remove your integration, type %{clusterName} to confirm:"
+msgstr ""
+
msgid "ClusterIntegration|Toggle Kubernetes cluster"
msgstr ""
@@ -4171,6 +4348,12 @@ msgstr ""
msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way."
msgstr ""
+msgid "ClusterIntegration|You are about to remove your cluster integration and all GitLab-created resources associated with this cluster."
+msgstr ""
+
+msgid "ClusterIntegration|You are about to remove your cluster integration."
+msgstr ""
+
msgid "ClusterIntegration|You are about to uninstall %{appTitle} from your cluster."
msgstr ""
@@ -4240,6 +4423,9 @@ msgstr ""
msgid "Code Owners"
msgstr ""
+msgid "Code Owners to the merge request changes."
+msgstr ""
+
msgid "Code owner approval is required"
msgstr ""
@@ -4255,6 +4441,24 @@ msgstr ""
msgid "Cohorts"
msgstr ""
+msgid "Cohorts|Inactive users"
+msgstr ""
+
+msgid "Cohorts|Month %{month_index}"
+msgstr ""
+
+msgid "Cohorts|New users"
+msgstr ""
+
+msgid "Cohorts|Registration month"
+msgstr ""
+
+msgid "Cohorts|Returning users"
+msgstr ""
+
+msgid "Cohorts|User cohorts are shown for the last %{months_included} months. Only users with activity are counted in the 'New users' column; inactive users are counted separately."
+msgstr ""
+
msgid "Collapse"
msgstr ""
@@ -4518,9 +4722,15 @@ msgstr ""
msgid "Connecting..."
msgstr ""
+msgid "Connection failed"
+msgstr ""
+
msgid "Connection failure"
msgstr ""
+msgid "Connection timed out"
+msgstr ""
+
msgid "Contact an owner of group %{namespace_name} to upgrade the plan."
msgstr ""
@@ -4536,6 +4746,12 @@ msgstr ""
msgid "Container Registry"
msgstr ""
+msgid "Container Registry tag expiration policies"
+msgstr ""
+
+msgid "Container Scanning"
+msgstr ""
+
msgid "Container registry images"
msgstr ""
@@ -4560,6 +4776,9 @@ msgstr ""
msgid "ContainerRegistry|If you are not already logged in, you need to authenticate to the Container Registry by using your GitLab username and password. If you have %{twofaDocLinkStart}Two-Factor Authentication%{twofaDocLinkEnd} enabled, use a %{personalAccessTokensDocLinkStart}Personal Access Token%{personalAccessTokensDocLinkEnd} instead of a password."
msgstr ""
+msgid "ContainerRegistry|Image ID"
+msgstr ""
+
msgid "ContainerRegistry|Last Updated"
msgstr ""
@@ -4583,9 +4802,6 @@ msgstr ""
msgid "ContainerRegistry|Tag"
msgstr ""
-msgid "ContainerRegistry|Tag ID"
-msgstr ""
-
msgid "ContainerRegistry|The last tag related to this image was recently removed. This empty image and any associated data will be automatically removed as part of the regular Garbage Collection process. If you have any questions, contact your administrator."
msgstr ""
@@ -4667,9 +4883,6 @@ msgstr ""
msgid "Control the maximum concurrency of repository backfill for this secondary node"
msgstr ""
-msgid "ConvDev Index"
-msgstr ""
-
msgid "Cookie domain"
msgstr ""
@@ -4781,15 +4994,24 @@ msgstr ""
msgid "Could not create group"
msgstr ""
+msgid "Could not create issue"
+msgstr ""
+
msgid "Could not create project"
msgstr ""
msgid "Could not delete chat nickname %{chat_name}."
msgstr ""
+msgid "Could not fetch projects"
+msgstr ""
+
msgid "Could not remove the trigger."
msgstr ""
+msgid "Could not restore the group"
+msgstr ""
+
msgid "Could not revoke impersonation token %{token_name}."
msgstr ""
@@ -4892,6 +5114,9 @@ msgstr ""
msgid "Create group label"
msgstr ""
+msgid "Create issue"
+msgstr ""
+
msgid "Create lists from labels. Issues with that label appear in that list."
msgstr ""
@@ -4952,6 +5177,9 @@ msgstr ""
msgid "Created At"
msgstr ""
+msgid "Created On"
+msgstr ""
+
msgid "Created a branch and a merge request to resolve this issue."
msgstr ""
@@ -5000,6 +5228,12 @@ msgstr ""
msgid "Creation date"
msgstr ""
+msgid "Credentials"
+msgstr ""
+
+msgid "Critical vulnerabilities present"
+msgstr ""
+
msgid "Cron Timezone"
msgstr ""
@@ -5066,6 +5300,9 @@ msgstr ""
msgid "CustomCycleAnalytics|Add stage"
msgstr ""
+msgid "CustomCycleAnalytics|Editing stage"
+msgstr ""
+
msgid "CustomCycleAnalytics|Enter a name for the stage"
msgstr ""
@@ -5099,6 +5336,9 @@ msgstr ""
msgid "CustomCycleAnalytics|Stop event label"
msgstr ""
+msgid "CustomCycleAnalytics|Update stage"
+msgstr ""
+
msgid "Customize colors"
msgstr ""
@@ -5218,17 +5458,27 @@ msgid_plural "CycleAnalytics|%d projects selected"
msgstr[0] ""
msgstr[1] ""
-msgid "CycleAnalytics|%{stageName}"
-msgid_plural "CycleAnalytics|%d stages selected"
-msgstr[0] ""
-msgstr[1] ""
+msgid "CycleAnalytics|%{stageCount} stages selected"
+msgstr ""
msgid "CycleAnalytics|All stages"
msgstr ""
+msgid "CycleAnalytics|Date"
+msgstr ""
+
+msgid "CycleAnalytics|Days to completion"
+msgstr ""
+
+msgid "CycleAnalytics|No stages selected"
+msgstr ""
+
msgid "CycleAnalytics|Stages"
msgstr ""
+msgid "CycleAnalytics|Total days to completion"
+msgstr ""
+
msgid "CycleAnalytics|group dropdown filter"
msgstr ""
@@ -5325,6 +5575,9 @@ msgstr ""
msgid "Default classification label"
msgstr ""
+msgid "Default deletion adjourned period"
+msgstr ""
+
msgid "Default description template for issues"
msgstr ""
@@ -5397,6 +5650,12 @@ msgstr ""
msgid "Delete list"
msgstr ""
+msgid "Delete snippet"
+msgstr ""
+
+msgid "Delete snippet?"
+msgstr ""
+
msgid "Delete source branch"
msgstr ""
@@ -5436,6 +5695,9 @@ msgstr ""
msgid "Deleting the license failed. You are not permitted to perform this action."
msgstr ""
+msgid "Deletion pending. This project will be removed on %{date}. Repository and other project resources are read-only."
+msgstr ""
+
msgid "Denied authorization of chat nickname %{user_name}."
msgstr ""
@@ -5509,6 +5771,9 @@ msgstr ""
msgid "Dependency Proxy"
msgstr ""
+msgid "Dependency Scanning"
+msgstr ""
+
msgid "Dependency proxy"
msgstr ""
@@ -5677,9 +5942,6 @@ msgstr ""
msgid "Deployed"
msgstr ""
-msgid "Deployed %{deployedSince}"
-msgstr ""
-
msgid "Deployed to"
msgstr ""
@@ -5734,9 +5996,15 @@ msgstr ""
msgid "Deselect all"
msgstr ""
+msgid "Design Management"
+msgstr ""
+
msgid "Design Management files and data"
msgstr ""
+msgid "Design Sync Not Enabled"
+msgstr ""
+
msgid "DesignManagement|%{current_design} of %{designs_count}"
msgstr ""
@@ -5746,16 +6014,13 @@ msgstr ""
msgid "DesignManagement|Adding a design with the same filename replaces the file in a new version."
msgstr ""
-msgid "DesignManagement|An error occurred while loading designs. Please try again."
-msgstr ""
-
msgid "DesignManagement|Are you sure you want to delete the selected designs?"
msgstr ""
msgid "DesignManagement|Could not add a new comment. Please try again"
msgstr ""
-msgid "DesignManagement|Could not create new discussion, please try again."
+msgid "DesignManagement|Could not create new discussion. Please try again."
msgstr ""
msgid "DesignManagement|Could not find design, please try again."
@@ -5806,9 +6071,6 @@ msgstr ""
msgid "DesignManagement|We could not delete %{design}. Please try again."
msgstr ""
-msgid "DesignManagement|We could not delete design(s). Please try again."
-msgstr ""
-
msgid "Designs"
msgstr ""
@@ -5824,6 +6086,9 @@ msgstr ""
msgid "Detect host keys"
msgstr ""
+msgid "DevOps Score"
+msgstr ""
+
msgid "Diff content limits"
msgstr ""
@@ -5839,7 +6104,7 @@ msgstr ""
msgid "Diffs|No file name available"
msgstr ""
-msgid "Diffs|Show all lines"
+msgid "Diffs|Show unchanged lines"
msgstr ""
msgid "Diffs|Something went wrong while fetching diff lines."
@@ -5920,16 +6185,19 @@ msgstr ""
msgid "Discussion"
msgstr ""
+msgid "Discussion to reply to cannot be found"
+msgstr ""
+
msgid "Disk Usage"
msgstr ""
msgid "Dismiss"
msgstr ""
-msgid "Dismiss ConvDev introduction"
+msgid "Dismiss Cycle Analytics introduction box"
msgstr ""
-msgid "Dismiss Cycle Analytics introduction box"
+msgid "Dismiss DevOps Score introduction"
msgstr ""
msgid "Dismiss Merge Request promotion"
@@ -6019,6 +6287,9 @@ msgstr ""
msgid "Download codes"
msgstr ""
+msgid "Download evidence JSON"
+msgstr ""
+
msgid "Download export"
msgstr ""
@@ -6058,6 +6329,12 @@ msgstr ""
msgid "During this process, you’ll be asked for URLs from GitLab’s side. Use the URLs shown below."
msgstr ""
+msgid "Dynamic Application Security Testing (DAST)"
+msgstr ""
+
+msgid "Each Runner can be in one of the following states and/or belong to one of the following types:"
+msgstr ""
+
msgid "Each Runner can be in one of the following states:"
msgstr ""
@@ -6076,6 +6353,9 @@ msgstr ""
msgid "Edit Deploy Key"
msgstr ""
+msgid "Edit Group Hook"
+msgstr ""
+
msgid "Edit Label"
msgstr ""
@@ -6088,12 +6368,18 @@ msgstr ""
msgid "Edit Pipeline Schedule %{id}"
msgstr ""
+msgid "Edit Project Hook"
+msgstr ""
+
msgid "Edit Release"
msgstr ""
msgid "Edit Snippet"
msgstr ""
+msgid "Edit System Hook"
+msgstr ""
+
msgid "Edit application"
msgstr ""
@@ -6445,6 +6731,9 @@ msgstr ""
msgid "Environments allow you to track deployments of your application %{link_to_read_more}."
msgstr ""
+msgid "Environments in %{name}"
+msgstr ""
+
msgid "EnvironmentsDashboard|Add a project to the dashboard"
msgstr ""
@@ -6469,15 +6758,6 @@ msgstr ""
msgid "Environments|An error occurred while fetching the environments."
msgstr ""
-msgid "Environments|An error occurred while fetching the logs"
-msgstr ""
-
-msgid "Environments|An error occurred while fetching the logs - Error: %{message}"
-msgstr ""
-
-msgid "Environments|An error occurred while fetching the logs for this environment or pod. Please try again"
-msgstr ""
-
msgid "Environments|An error occurred while making the request."
msgstr ""
@@ -6607,6 +6887,9 @@ msgstr ""
msgid "Epic"
msgstr ""
+msgid "Epic cannot be found."
+msgstr ""
+
msgid "Epic events"
msgstr ""
@@ -6862,7 +7145,7 @@ msgstr ""
msgid "ErrorTracking|Connection has failed. Re-check Auth Token and try again."
msgstr ""
-msgid "ErrorTracking|Find your hostname in your Sentry account settings page"
+msgid "ErrorTracking|If you self-host Sentry, enter the full URL of your Sentry instance. If you're using Sentry's hosted solution, enter https://sentry.io"
msgstr ""
msgid "ErrorTracking|No projects available"
@@ -6880,6 +7163,9 @@ msgstr ""
msgid "Estimated"
msgstr ""
+msgid "Event Actions"
+msgstr ""
+
msgid "EventFilterBy|Filter by all"
msgstr ""
@@ -6907,12 +7193,27 @@ msgstr ""
msgid "Every %{action} attempt has failed: %{job_error_message}. Please try again."
msgstr ""
+msgid "Every day"
+msgstr ""
+
msgid "Every day (at 4:00am)"
msgstr ""
+msgid "Every month"
+msgstr ""
+
msgid "Every month (on the 1st at 4:00am)"
msgstr ""
+msgid "Every three months"
+msgstr ""
+
+msgid "Every two weeks"
+msgstr ""
+
+msgid "Every week"
+msgstr ""
+
msgid "Every week (Sundays at 4:00am)"
msgstr ""
@@ -6943,6 +7244,9 @@ msgstr ""
msgid "Everything you need to create a GitLab Pages site using plain HTML."
msgstr ""
+msgid "Evidence collection"
+msgstr ""
+
msgid "Example: @sub\\.company\\.com$"
msgstr ""
@@ -6982,9 +7286,15 @@ msgstr ""
msgid "Expand up"
msgstr ""
+msgid "Expiration"
+msgstr ""
+
msgid "Expiration date"
msgstr ""
+msgid "Expiration policies for the Container Registry are a perfect solution for keeping the Registry space down while still enjoying the full power of GitLab CI/CD."
+msgstr ""
+
msgid "Expired"
msgstr ""
@@ -7108,13 +7418,19 @@ msgstr ""
msgid "Failed to assign a user because no user was found."
msgstr ""
-msgid "Failed to change the owner"
+msgid "Failed to cancel auto stop because failed to update the environment."
msgstr ""
-msgid "Failed to check related branches."
+msgid "Failed to cancel auto stop because the environment is not set as auto stop."
+msgstr ""
+
+msgid "Failed to cancel auto stop because you do not have permission to update the environment."
+msgstr ""
+
+msgid "Failed to change the owner"
msgstr ""
-msgid "Failed to connect to the prometheus server"
+msgid "Failed to check related branches."
msgstr ""
msgid "Failed to create Merge Request. Please try again."
@@ -7204,9 +7520,6 @@ msgstr ""
msgid "Failed to reset key. Please try again."
msgstr ""
-msgid "Failed to save comment!"
-msgstr ""
-
msgid "Failed to save merge conflicts resolutions. Please try again!"
msgstr ""
@@ -7285,15 +7598,9 @@ msgstr ""
msgid "FeatureFlags|Active"
msgstr ""
-msgid "FeatureFlags|Add"
-msgstr ""
-
msgid "FeatureFlags|All users"
msgstr ""
-msgid "FeatureFlags|Clear all"
-msgstr ""
-
msgid "FeatureFlags|Configure"
msgstr ""
@@ -7315,9 +7622,6 @@ msgstr ""
msgid "FeatureFlags|Edit Feature Flag"
msgstr ""
-msgid "FeatureFlags|Enter comma separated list of user IDs"
-msgstr ""
-
msgid "FeatureFlags|Environment Spec"
msgstr ""
@@ -7351,6 +7655,9 @@ msgstr ""
msgid "FeatureFlags|Inactive flag for %{scope}"
msgstr ""
+msgid "FeatureFlags|Include additional user IDs"
+msgstr ""
+
msgid "FeatureFlags|Install a %{docs_link_anchored_start}compatible client library%{docs_link_anchored_end} and specify the API URL, application name, and instance ID during the configuration setup. %{docs_link_start}More Information%{docs_link_end}"
msgstr ""
@@ -7396,15 +7703,9 @@ msgstr ""
msgid "FeatureFlags|Status"
msgstr ""
-msgid "FeatureFlags|Target Users"
-msgstr ""
-
msgid "FeatureFlags|Target environments"
msgstr ""
-msgid "FeatureFlags|Target user behaviour is built up by creating a list of active user IDs. These IDs should be the users in the system in which the feature flag is set, not GitLab ids. Target users apply across %{strong_start}All Environments%{strong_end} and are not affected by Target Environment rules."
-msgstr ""
-
msgid "FeatureFlags|There are no active feature flags"
msgstr ""
@@ -7530,9 +7831,6 @@ msgstr ""
msgid "Fingerprint"
msgstr ""
-msgid "Fingerprint:"
-msgstr ""
-
msgid "Fingerprints"
msgstr ""
@@ -7548,6 +7846,9 @@ msgstr ""
msgid "Finished"
msgstr ""
+msgid "First Seen"
+msgstr ""
+
msgid "First day of the week"
msgstr ""
@@ -7590,6 +7891,9 @@ msgstr ""
msgid "FogBugz import"
msgstr ""
+msgid "Folder/%{name}"
+msgstr ""
+
msgid "Follow the steps below to export your Google Code project data."
msgstr ""
@@ -7671,6 +7975,9 @@ msgstr ""
msgid "Free Trial of GitLab.com Gold"
msgstr ""
+msgid "Frequency"
+msgstr ""
+
msgid "Friday"
msgstr ""
@@ -7746,9 +8053,18 @@ msgstr ""
msgid "Geo"
msgstr ""
+msgid "Geo Designs"
+msgstr ""
+
msgid "Geo Nodes"
msgstr ""
+msgid "Geo Settings"
+msgstr ""
+
+msgid "Geo Troubleshooting"
+msgstr ""
+
msgid "Geo allows you to replicate your GitLab instance to other geographical locations."
msgstr ""
@@ -8199,15 +8515,15 @@ msgstr ""
msgid "GitLab Enterprise Edition %{plan}"
msgstr ""
-msgid "GitLab Geo"
-msgstr ""
-
msgid "GitLab Group Runners can execute code for all the projects in this group."
msgstr ""
msgid "GitLab Import"
msgstr ""
+msgid "GitLab Issue"
+msgstr ""
+
msgid "GitLab Shared Runners execute code of different projects on the same Runner unless you configure GitLab Runner Autoscale with MaxBuilds 1 (which it is on GitLab.com)."
msgstr ""
@@ -8484,7 +8800,7 @@ msgstr ""
msgid "Google Takeout"
msgstr ""
-msgid "Google authentication is not %{link_start}property configured%{link_end}. Ask your GitLab administrator if you want to use this service."
+msgid "Google authentication is not %{link_start}properly configured%{link_end}. Ask your GitLab administrator if you want to use this service."
msgstr ""
msgid "Got it"
@@ -8544,6 +8860,9 @@ msgstr ""
msgid "Group Git LFS status:"
msgstr ""
+msgid "Group Hooks"
+msgstr ""
+
msgid "Group ID"
msgstr ""
@@ -8571,6 +8890,12 @@ msgstr ""
msgid "Group details"
msgstr ""
+msgid "Group has been already marked for deletion"
+msgstr ""
+
+msgid "Group has not been marked for deletion"
+msgstr ""
+
msgid "Group info:"
msgstr ""
@@ -8766,6 +9091,9 @@ msgstr ""
msgid "GroupSettings|Disable email notifications"
msgstr ""
+msgid "GroupSettings|Disable group mentions"
+msgstr ""
+
msgid "GroupSettings|If the parent group's visibility is lower than the group current visibility, visibility levels for subgroups and projects will be changed to match the new parent group's visibility."
msgstr ""
@@ -8814,6 +9142,9 @@ msgstr ""
msgid "GroupSettings|This setting will override user notification preferences for all members of the group, subgroups, and projects."
msgstr ""
+msgid "GroupSettings|This setting will prevent group members from being notified if the group is mentioned."
+msgstr ""
+
msgid "GroupSettings|Transfer group"
msgstr ""
@@ -8967,6 +9298,9 @@ msgstr ""
msgid "Helps reduce request volume for protected paths"
msgstr ""
+msgid "Hi %{username}!"
+msgstr ""
+
msgid "Hide archived projects"
msgstr ""
@@ -9002,6 +9336,9 @@ msgstr ""
msgid "Hiding all labels"
msgstr ""
+msgid "High or unknown vulnerabilities present"
+msgstr ""
+
msgid "Highest number of requests per minute for each raw path, default to 300. To disable throttling set to 0."
msgstr ""
@@ -9035,6 +9372,9 @@ msgstr ""
msgid "How it works"
msgstr ""
+msgid "How many days need to pass between marking entity for deletion and actual removing it."
+msgstr ""
+
msgid "How many replicas each Elasticsearch shard has."
msgstr ""
@@ -9164,6 +9504,12 @@ msgstr ""
msgid "If using GitHub, you’ll see pipeline statuses on GitHub for your commits and pull requests. %{more_info_link}"
msgstr ""
+msgid "If you believe this may be an error, please refer to the %{linkStart}Geo Troubleshooting%{linkEnd} documentation for more information."
+msgstr ""
+
+msgid "If you believe this page to be an error, check out the links below for more information."
+msgstr ""
+
msgid "If you lose your recovery codes you can generate new ones, invalidating all previous codes."
msgstr ""
@@ -9407,7 +9753,7 @@ msgstr ""
msgid "Install Runner on Kubernetes"
msgstr ""
-msgid "Install a soft token authenticator like %{free_otp_link} or Google Authenticator from your application repository and scan this QR code. More information is available in the %{help_link_start}documentation%{help_link_end}."
+msgid "Install a soft token authenticator like %{free_otp_link} or Google Authenticator from your application repository and use that app to scan this QR code. More information is available in the %{help_link_start}documentation%{help_link_end}."
msgstr ""
msgid "Install on clusters"
@@ -9466,7 +9812,7 @@ msgstr ""
msgid "Introducing Cycle Analytics"
msgstr ""
-msgid "Introducing Your Conversational Development Index"
+msgid "Introducing Your DevOps Score"
msgstr ""
msgid "Invalid Git ref"
@@ -9502,6 +9848,9 @@ msgstr ""
msgid "Invalid input, please avoid emojis"
msgstr ""
+msgid "Invalid login or password"
+msgstr ""
+
msgid "Invalid pin code"
msgstr ""
@@ -9550,15 +9899,24 @@ msgstr ""
msgid "IssuableStatus|moved"
msgstr ""
+msgid "IssuableStatus|promoted"
+msgstr ""
+
msgid "Issue"
msgstr ""
+msgid "Issue %{issue_reference} has already been added to epic %{epic_reference}."
+msgstr ""
+
msgid "Issue Boards"
msgstr ""
msgid "Issue board focus mode"
msgstr ""
+msgid "Issue cannot be found."
+msgstr ""
+
msgid "Issue events"
msgstr ""
@@ -9655,6 +10013,9 @@ msgstr ""
msgid "IssuesAnalytics|Total:"
msgstr ""
+msgid "Issue|Title"
+msgstr ""
+
msgid "It must have a header row and at least two columns: the first column is the issue title and the second column is the issue description. The separator is automatically detected."
msgstr ""
@@ -9901,6 +10262,9 @@ msgstr ""
msgid "Label"
msgstr ""
+msgid "Label List"
+msgstr ""
+
msgid "Label actions dropdown"
msgstr ""
@@ -9963,9 +10327,15 @@ msgstr[1] ""
msgid "Last %{days} days"
msgstr ""
+msgid "Last Accessed On"
+msgstr ""
+
msgid "Last Pipeline"
msgstr ""
+msgid "Last Seen"
+msgstr ""
+
msgid "Last accessed on"
msgstr ""
@@ -9990,12 +10360,21 @@ msgstr ""
msgid "Last reply by"
msgstr ""
+msgid "Last repository check run"
+msgstr ""
+
msgid "Last seen"
msgstr ""
+msgid "Last successful sync"
+msgstr ""
+
msgid "Last successful update"
msgstr ""
+msgid "Last time verified"
+msgstr ""
+
msgid "Last update"
msgstr ""
@@ -10032,6 +10411,9 @@ msgstr ""
msgid "Learn GitLab"
msgstr ""
+msgid "Learn More"
+msgstr ""
+
msgid "Learn how to %{link_start}contribute to the built-in templates%{link_end}"
msgstr ""
@@ -10089,6 +10471,9 @@ msgstr ""
msgid "Leave Admin Mode"
msgstr ""
+msgid "Leave blank for no limit. Once set, existing personal access tokens may be revoked"
+msgstr ""
+
msgid "Leave edit mode? All unsaved changes will be lost."
msgstr ""
@@ -10226,6 +10611,36 @@ msgstr ""
msgid "Licenses"
msgstr ""
+msgid "Licenses|%{remainingComponentsCount} more"
+msgstr ""
+
+msgid "Licenses|Component"
+msgstr ""
+
+msgid "Licenses|Components"
+msgstr ""
+
+msgid "Licenses|Displays licenses detected in the project, based on the %{linkStart}latest pipeline%{linkEnd} scan"
+msgstr ""
+
+msgid "Licenses|Error fetching the license list. Please check your network connection and try again."
+msgstr ""
+
+msgid "Licenses|Learn more about license compliance"
+msgstr ""
+
+msgid "Licenses|License Compliance"
+msgstr ""
+
+msgid "Licenses|Name"
+msgstr ""
+
+msgid "Licenses|The license list details information about the licenses used within your project."
+msgstr ""
+
+msgid "Licenses|View license details for your project"
+msgstr ""
+
msgid "License|Buy license"
msgstr ""
@@ -10273,6 +10688,9 @@ msgstr ""
msgid "List"
msgstr ""
+msgid "List Settings"
+msgstr ""
+
msgid "List Your Gitea Repositories"
msgstr ""
@@ -10306,6 +10724,9 @@ msgstr ""
msgid "Loading issues"
msgstr ""
+msgid "Loading snippet"
+msgstr ""
+
msgid "Loading the GitLab IDE..."
msgstr ""
@@ -10372,6 +10793,12 @@ msgstr ""
msgid "Logs|To see the pod logs, deploy your code to an environment."
msgstr ""
+msgid "Low vulnerabilities present"
+msgstr ""
+
+msgid "MB"
+msgstr ""
+
msgid "MD5"
msgstr ""
@@ -10414,6 +10841,9 @@ msgstr ""
msgid "Makes this issue confidential."
msgstr ""
+msgid "Malformed string"
+msgstr ""
+
msgid "Manage"
msgstr ""
@@ -10573,6 +11003,9 @@ msgstr ""
msgid "Max seats used"
msgstr ""
+msgid "Maximum allowable lifetime for personal access token (days)"
+msgstr ""
+
msgid "Maximum artifacts size (MB)"
msgstr ""
@@ -10591,6 +11024,12 @@ msgstr ""
msgid "Maximum job timeout has a value which could not be accepted"
msgstr ""
+msgid "Maximum lifetime allowable for Personal Access Tokens is active, your expire date must be set before %{maximum_allowable_date}."
+msgstr ""
+
+msgid "Maximum number of %{name} (%{count}) exceeded"
+msgstr ""
+
msgid "Maximum number of comments exceeded"
msgstr ""
@@ -10609,6 +11048,9 @@ msgstr ""
msgid "Median"
msgstr ""
+msgid "Medium vulnerabilities present"
+msgstr ""
+
msgid "Member lock"
msgstr ""
@@ -10801,6 +11243,9 @@ msgstr ""
msgid "Merges this merge request when the pipeline succeeds."
msgstr ""
+msgid "Merging immediately isn't recommended as it may negatively impact the existing merge train. Read the %{docsLinkStart}documentation%{docsLinkEnd} for more information."
+msgstr ""
+
msgid "Messages"
msgstr ""
@@ -10912,6 +11357,9 @@ msgstr ""
msgid "Metrics|There was an error while retrieving metrics"
msgstr ""
+msgid "Metrics|There was an error while retrieving metrics. %{message}"
+msgstr ""
+
msgid "Metrics|Unexpected deployment data response from prometheus endpoint"
msgstr ""
@@ -11010,6 +11458,9 @@ msgstr ""
msgid "Minimum length is %{minimum_password_length} characters."
msgstr ""
+msgid "Minimum password length (number of characters)"
+msgstr ""
+
msgid "Minutes"
msgstr ""
@@ -11097,6 +11548,9 @@ msgstr ""
msgid "More information"
msgstr ""
+msgid "More information and share feedback"
+msgstr ""
+
msgid "More information is available|here"
msgstr ""
@@ -11255,6 +11709,9 @@ msgstr ""
msgid "New branch unavailable"
msgstr ""
+msgid "New changes were added. %{linkStart}Reload the page to review them%{linkEnd}"
+msgstr ""
+
msgid "New deploy key"
msgstr ""
@@ -11285,6 +11742,9 @@ msgstr ""
msgid "New issue"
msgstr ""
+msgid "New issue title"
+msgstr ""
+
msgid "New label"
msgstr ""
@@ -11351,6 +11811,9 @@ msgstr ""
msgid "No %{providerTitle} repositories found"
msgstr ""
+msgid "No Design Repositories match this filter"
+msgstr ""
+
msgid "No Epic"
msgstr ""
@@ -11360,6 +11823,9 @@ msgstr ""
msgid "No Milestone"
msgstr ""
+msgid "No Scopes"
+msgstr ""
+
msgid "No Tag"
msgstr ""
@@ -11414,6 +11880,9 @@ msgstr ""
msgid "No due date"
msgstr ""
+msgid "No endpoint provided"
+msgstr ""
+
msgid "No errors to display."
msgstr ""
@@ -11432,7 +11901,7 @@ msgstr ""
msgid "No files found."
msgstr ""
-msgid "No forks available to you."
+msgid "No forks are available to you."
msgstr ""
msgid "No issues for the selected time period."
@@ -11513,6 +11982,21 @@ msgstr ""
msgid "No value set by top-level parent group."
msgstr ""
+msgid "No vulnerabilities found for this group"
+msgstr ""
+
+msgid "No vulnerabilities found for this pipeline"
+msgstr ""
+
+msgid "No vulnerabilities found for this project"
+msgstr ""
+
+msgid "No vulnerabilities present"
+msgstr ""
+
+msgid "No webhooks found, add one in the form above."
+msgstr ""
+
msgid "No, directly import the existing email addresses and usernames."
msgstr ""
@@ -11534,6 +12018,9 @@ msgstr ""
msgid "None"
msgstr ""
+msgid "Not Implemented"
+msgstr ""
+
msgid "Not all data has been processed yet, the accuracy of the chart for the selected timeframe is limited."
msgstr ""
@@ -11699,6 +12186,9 @@ msgstr ""
msgid "November"
msgstr ""
+msgid "Now you can access the merge request navigation tabs at the top, where they’re easier to find."
+msgstr ""
+
msgid "Number of Elasticsearch replicas"
msgstr ""
@@ -11765,6 +12255,9 @@ msgstr ""
msgid "Once the exported file is ready, you will receive a notification email with a download link, or you can download it from this page."
msgstr ""
+msgid "Once you confirm and press \"Reduce project visibility\":"
+msgstr ""
+
msgid "One more item"
msgid_plural "%d more items"
msgstr[0] ""
@@ -11773,6 +12266,9 @@ msgstr[1] ""
msgid "One or more groups that you don't have access to."
msgstr ""
+msgid "One or more of you personal access tokens were revoked"
+msgstr ""
+
msgid "One or more of your Bitbucket projects cannot be imported into GitLab directly because they use Subversion or Mercurial for version control, rather than Git."
msgstr ""
@@ -11782,12 +12278,18 @@ msgstr ""
msgid "One or more of your dependency files are not supported, and the dependency list may be incomplete. Below is a list of supported file types."
msgstr ""
+msgid "One or more of your personal access tokens will expire in %{days_to_expire} days or less."
+msgstr ""
+
msgid "Only 'Reporter' roles and above on tiers Premium / Silver and above can see Cycle Analytics."
msgstr ""
msgid "Only Project Members"
msgstr ""
+msgid "Only active this projects shows up in the search and on the dashboard."
+msgstr ""
+
msgid "Only admins"
msgstr ""
@@ -11857,6 +12359,9 @@ msgstr ""
msgid "Open source software to collaborate on code"
msgstr ""
+msgid "Open: %{open} • Closed: %{closed}"
+msgstr ""
+
msgid "Opened"
msgstr ""
@@ -11959,6 +12464,21 @@ msgstr ""
msgid "Package was removed"
msgstr ""
+msgid "PackageRegistry|Automatically remove extra images that aren't designed to be kept."
+msgstr ""
+
+msgid "PackageRegistry|Copy Maven XML"
+msgstr ""
+
+msgid "PackageRegistry|Copy Maven command"
+msgstr ""
+
+msgid "PackageRegistry|Copy Maven registry XML"
+msgstr ""
+
+msgid "PackageRegistry|Copy and paste this inside your %{codeStart}pom.xml%{codeEnd} %{codeStart}dependencies%{codeEnd} block."
+msgstr ""
+
msgid "PackageRegistry|Copy npm command"
msgstr ""
@@ -11977,21 +12497,42 @@ msgstr ""
msgid "PackageRegistry|Delete package"
msgstr ""
+msgid "PackageRegistry|For more information on the Maven registry, %{linkStart}see the documentation%{linkEnd}."
+msgstr ""
+
+msgid "PackageRegistry|If you haven't already done so, you will need to add the below to your %{codeStart}pom.xml%{codeEnd} file."
+msgstr ""
+
msgid "PackageRegistry|Installation"
msgstr ""
+msgid "PackageRegistry|Keep and protect the images that matter most."
+msgstr ""
+
msgid "PackageRegistry|Learn how to %{noPackagesLinkStart}publish and share your packages%{noPackagesLinkEnd} with GitLab."
msgstr ""
+msgid "PackageRegistry|Maven Command"
+msgstr ""
+
+msgid "PackageRegistry|Maven XML"
+msgstr ""
+
msgid "PackageRegistry|Package installation"
msgstr ""
+msgid "PackageRegistry|Read more about the %{helpLinkStart}Container Registry tag retention policies%{helpLinkEnd}"
+msgstr ""
+
msgid "PackageRegistry|Registry Setup"
msgstr ""
msgid "PackageRegistry|Remove package"
msgstr ""
+msgid "PackageRegistry|Tag retention policies are designed to:"
+msgstr ""
+
msgid "PackageRegistry|There are no packages yet"
msgstr ""
@@ -12031,9 +12572,6 @@ msgstr ""
msgid "Pages Domain"
msgstr ""
-msgid "Pages Domains"
-msgstr ""
-
msgid "Pages getting started guide"
msgstr ""
@@ -12085,6 +12623,9 @@ msgstr ""
msgid "Password (optional)"
msgstr ""
+msgid "Password Policy Guidelines"
+msgstr ""
+
msgid "Password authentication is unavailable."
msgstr ""
@@ -12121,6 +12662,9 @@ msgstr ""
msgid "Path:"
msgstr ""
+msgid "Paths can contain wildcards, like */welcome"
+msgstr ""
+
msgid "Pause"
msgstr ""
@@ -12148,6 +12692,12 @@ msgstr ""
msgid "Performance optimization"
msgstr ""
+msgid "PerformanceBar|Download"
+msgstr ""
+
+msgid "PerformanceBar|Frontend resources"
+msgstr ""
+
msgid "PerformanceBar|Gitaly calls"
msgstr ""
@@ -12217,6 +12767,9 @@ msgstr ""
msgid "Pipeline quota"
msgstr ""
+msgid "Pipeline subscriptions"
+msgstr ""
+
msgid "Pipeline triggers"
msgstr ""
@@ -12319,6 +12872,9 @@ msgstr ""
msgid "Pipelines|CI Lint"
msgstr ""
+msgid "Pipelines|Child pipeline"
+msgstr ""
+
msgid "Pipelines|Clear Runner Caches"
msgstr ""
@@ -12352,9 +12908,15 @@ msgstr ""
msgid "Pipelines|There was an error fetching the pipelines. Try again in a few moments or contact your support team."
msgstr ""
+msgid "Pipelines|This is a child pipeline within the parent pipeline"
+msgstr ""
+
msgid "Pipelines|This project is not currently set up to run pipelines."
msgstr ""
+msgid "Pipelines|parent"
+msgstr ""
+
msgid "Pipeline|Commit"
msgstr ""
@@ -13126,6 +13688,9 @@ msgstr ""
msgid "Project '%{project_name}' is in the process of being deleted."
msgstr ""
+msgid "Project '%{project_name}' is restored."
+msgstr ""
+
msgid "Project '%{project_name}' queued for deletion."
msgstr ""
@@ -13135,12 +13700,18 @@ msgstr ""
msgid "Project '%{project_name}' was successfully updated."
msgstr ""
+msgid "Project '%{project_name}' will be deleted on %{date}"
+msgstr ""
+
msgid "Project Badges"
msgstr ""
msgid "Project Files"
msgstr ""
+msgid "Project Hooks"
+msgstr ""
+
msgid "Project ID"
msgstr ""
@@ -13153,6 +13724,9 @@ msgstr ""
msgid "Project already created"
msgstr ""
+msgid "Project already deleted"
+msgstr ""
+
msgid "Project and wiki repositories"
msgstr ""
@@ -13204,6 +13778,15 @@ msgstr ""
msgid "Project overview"
msgstr ""
+msgid "Project path"
+msgstr ""
+
+msgid "Project security status"
+msgstr ""
+
+msgid "Project security status help page"
+msgstr ""
+
msgid "Project slug"
msgstr ""
@@ -13285,6 +13868,12 @@ msgstr ""
msgid "ProjectService|%{service_title}: status on"
msgstr ""
+msgid "ProjectService|Comment"
+msgstr ""
+
+msgid "ProjectService|Comment will be posted on each event"
+msgstr ""
+
msgid "ProjectService|Integrations"
msgstr ""
@@ -13546,6 +14135,9 @@ msgstr ""
msgid "ProjectTemplates|Ruby on Rails"
msgstr ""
+msgid "ProjectTemplates|SalesforceDX"
+msgstr ""
+
msgid "ProjectTemplates|Serverless Framework/JS"
msgstr ""
@@ -13564,6 +14156,9 @@ msgstr ""
msgid "Projects Successfully Retrieved"
msgstr ""
+msgid "Projects are graded based on the highest severity vulnerability present"
+msgstr ""
+
msgid "Projects shared with %{group_name}"
msgstr ""
@@ -13573,6 +14168,21 @@ msgstr ""
msgid "Projects to index"
msgstr ""
+msgid "Projects with critical vulnerabilities"
+msgstr ""
+
+msgid "Projects with high or unknown vulnerabilities"
+msgstr ""
+
+msgid "Projects with low vulnerabilities"
+msgstr ""
+
+msgid "Projects with medium vulnerabilities"
+msgstr ""
+
+msgid "Projects with no vulnerabilities and security scanning enabled"
+msgstr ""
+
msgid "Projects with write access"
msgstr ""
@@ -14035,6 +14645,9 @@ msgstr ""
msgid "Query"
msgstr ""
+msgid "Query cannot be processed"
+msgstr ""
+
msgid "Query is valid"
msgstr ""
@@ -14053,6 +14666,9 @@ msgstr ""
msgid "Raw blob request rate limit per minute"
msgstr ""
+msgid "Re-authentication period expired or never requested. Please try again"
+msgstr ""
+
msgid "Re-authentication required"
msgstr ""
@@ -14107,6 +14723,12 @@ msgstr ""
msgid "Redirect to SAML provider to test configuration"
msgstr ""
+msgid "Reduce project visibility"
+msgstr ""
+
+msgid "Reduce this project’s visibility?"
+msgstr ""
+
msgid "Reference:"
msgstr ""
@@ -14369,6 +14991,12 @@ msgstr ""
msgid "Removes time estimate."
msgstr ""
+msgid "Removing a project places it into a read-only state until %{date}, at which point the project will be permanantly removed. Are you ABSOLUTELY sure?"
+msgstr ""
+
+msgid "Removing a project places it into a read-only state until %{date}, at which point the project will be permanently removed."
+msgstr ""
+
msgid "Removing group will cause all child projects and resources to be removed."
msgstr ""
@@ -14664,6 +15292,12 @@ msgstr ""
msgid "Restart Terminal"
msgstr ""
+msgid "Restore project"
+msgstr ""
+
+msgid "Restoring the project will prevent the project from being removed on this date and restore people's ability to make changes to it."
+msgstr ""
+
msgid "Restrict access by IP address"
msgstr ""
@@ -14855,7 +15489,7 @@ msgstr ""
msgid "SSH public key"
msgstr ""
-msgid "SSL Verification"
+msgid "SSL Verification:"
msgstr ""
msgid "Saturday"
@@ -14888,6 +15522,9 @@ msgstr ""
msgid "Save pipeline schedule"
msgstr ""
+msgid "Save template"
+msgstr ""
+
msgid "Save variables"
msgstr ""
@@ -14996,6 +15633,9 @@ msgstr ""
msgid "Search or filter results..."
msgstr ""
+msgid "Search or filter results…"
+msgstr ""
+
msgid "Search or jump to…"
msgstr ""
@@ -15014,6 +15654,9 @@ msgstr ""
msgid "Search users or groups"
msgstr ""
+msgid "Search your project dependencies for their licenses and apply policies"
+msgstr ""
+
msgid "Search your projects"
msgstr ""
@@ -15047,16 +15690,16 @@ msgstr ""
msgid "SearchCodeResults|of %{link_to_project}"
msgstr ""
-msgid "SearchResults|Showing %{count} %{scope} for \"%{term}\""
+msgid "SearchResults|Showing %{count} %{scope} for%{term_element}"
msgstr ""
-msgid "SearchResults|Showing %{count} %{scope} for \"%{term}\" in your personal and project snippets"
+msgid "SearchResults|Showing %{count} %{scope} for%{term_element} in your personal and project snippets"
msgstr ""
-msgid "SearchResults|Showing %{from} - %{to} of %{count} %{scope} for \"%{term}\""
+msgid "SearchResults|Showing %{from} - %{to} of %{count} %{scope} for%{term_element}"
msgstr ""
-msgid "SearchResults|Showing %{from} - %{to} of %{count} %{scope} for \"%{term}\" in your personal and project snippets"
+msgid "SearchResults|Showing %{from} - %{to} of %{count} %{scope} for%{term_element} in your personal and project snippets"
msgstr ""
msgid "SearchResults|We couldn't find any %{scope} matching %{term}"
@@ -15132,6 +15775,9 @@ msgstr ""
msgid "Security & Compliance"
msgstr ""
+msgid "Security Configuration"
+msgstr ""
+
msgid "Security Dashboard"
msgstr ""
@@ -15204,12 +15850,6 @@ msgstr ""
msgid "Security Reports|Undo dismiss"
msgstr ""
-msgid "Security Reports|We've found no vulnerabilities for your group"
-msgstr ""
-
-msgid "Security Reports|While it's rare to have no vulnerabilities for your group, it can happen. In any event, we ask that you please double check your settings to make sure you've set up your dashboard correctly."
-msgstr ""
-
msgid "Security configuration help link"
msgstr ""
@@ -15267,7 +15907,7 @@ msgstr ""
msgid "SecurityDashboard|More information"
msgstr ""
-msgid "SecurityDashboard|Pipeline %{pipelineLink} triggered"
+msgid "SecurityDashboard|Pipeline %{pipelineLink} triggered %{timeago} by %{user}"
msgstr ""
msgid "SecurityDashboard|Project"
@@ -15300,6 +15940,9 @@ msgstr ""
msgid "SecurityDashboard|Unable to add %{invalidProjects}"
msgstr ""
+msgid "See GitLab's %{password_policy_guidelines}"
+msgstr ""
+
msgid "See metrics"
msgstr ""
@@ -15543,6 +16186,15 @@ msgstr ""
msgid "Service Desk"
msgstr ""
+msgid "Service Desk is enabled but not yet active"
+msgstr ""
+
+msgid "Service Desk is off"
+msgstr ""
+
+msgid "Service Desk is on"
+msgstr ""
+
msgid "Service Templates"
msgstr ""
@@ -15645,6 +16297,9 @@ msgstr ""
msgid "Set up new password"
msgstr ""
+msgid "Set up pipeline subscriptions for this project."
+msgstr ""
+
msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically."
msgstr ""
@@ -15735,6 +16390,9 @@ msgstr ""
msgid "Show all activity"
msgstr ""
+msgid "Show all members"
+msgstr ""
+
msgid "Show archived projects"
msgstr ""
@@ -15762,6 +16420,12 @@ msgstr ""
msgid "Show latest version"
msgstr ""
+msgid "Show only direct members"
+msgstr ""
+
+msgid "Show only inherited members"
+msgstr ""
+
msgid "Show parent pages"
msgstr ""
@@ -15824,9 +16488,6 @@ msgstr ""
msgid "Sign in via 2FA code"
msgstr ""
-msgid "Sign in with Google"
-msgstr ""
-
msgid "Sign in with Single Sign-On"
msgstr ""
@@ -15959,6 +16620,9 @@ msgstr ""
msgid "Some email servers do not support overriding the email sender name. Enable this option to include the name of the author of the issue, merge request or comment in the email body instead."
msgstr ""
+msgid "Some of your epics may not be visible. A roadmap is limited to the first 1,000 epics, in your selected sort order."
+msgstr ""
+
msgid "Someone edited the issue at the same time you did. Please check out %{linkStart}the issue%{linkEnd} and make sure your changes will not unintentionally remove theirs."
msgstr ""
@@ -15992,9 +16656,6 @@ msgstr ""
msgid "Something went wrong while adding your award. Please try again."
msgstr ""
-msgid "Something went wrong while adding your comment. Please try again."
-msgstr ""
-
msgid "Something went wrong while applying the suggestion. Please try again."
msgstr ""
@@ -16049,6 +16710,9 @@ msgstr ""
msgid "Something went wrong while fetching the registry list."
msgstr ""
+msgid "Something went wrong while initializing the OpenAPI viewer"
+msgstr ""
+
msgid "Something went wrong while merging this merge request. Please try again."
msgstr ""
@@ -16343,6 +17007,12 @@ msgstr ""
msgid "Stage changes"
msgstr ""
+msgid "Stage data updated"
+msgstr ""
+
+msgid "Stage removed"
+msgstr ""
+
msgid "Staged"
msgstr ""
@@ -16466,6 +17136,9 @@ msgstr ""
msgid "State your message to activate"
msgstr ""
+msgid "Static Application Security Testing (SAST)"
+msgstr ""
+
msgid "Statistics"
msgstr ""
@@ -16655,12 +17328,21 @@ msgstr ""
msgid "SubscriptionTable|Usage count is performed once a day at 12:00 PM."
msgstr ""
+msgid "Subscriptions"
+msgstr ""
+
+msgid "Subscriptions allow successfully completed pipelines on the %{default_branch_docs} of the subscribed project to trigger a new pipeline on the default branch of this project."
+msgstr ""
+
msgid "Subtracted"
msgstr ""
msgid "Subtracts"
msgstr ""
+msgid "Succeeded"
+msgstr ""
+
msgid "Successfully activated"
msgstr ""
@@ -16925,6 +17607,9 @@ msgstr ""
msgid "Target Branch"
msgstr ""
+msgid "Target Path"
+msgstr ""
+
msgid "Target branch"
msgstr ""
@@ -16940,6 +17625,12 @@ msgstr ""
msgid "Template"
msgstr ""
+msgid "Template to append to all Service Desk issues"
+msgstr ""
+
+msgid "Template was successfully saved."
+msgstr ""
+
msgid "Templates"
msgstr ""
@@ -16958,6 +17649,9 @@ msgstr ""
msgid "Terms of Service and Privacy Policy"
msgstr ""
+msgid "Test"
+msgstr ""
+
msgid "Test coverage parsing"
msgstr ""
@@ -17059,6 +17753,9 @@ msgstr ""
msgid "The Issue Tracker is the place to add things that need to be improved or solved in a project. You can register or sign in to create issues for this project."
msgstr ""
+msgid "The Prometheus server responded with \"bad request\". Please check your queries are correct and are supported in your Prometheus version. %{documentationLink}"
+msgstr ""
+
msgid "The URL to use for connecting to Elasticsearch. Use a comma-separated list to support clustering (e.g., \"http://localhost:9200, http://localhost:9201\")."
msgstr ""
@@ -17089,6 +17786,9 @@ msgstr ""
msgid "The content of this page is not encoded in UTF-8. Edits can only be made via the Git repository."
msgstr ""
+msgid "The data source is connected, but there is no data to display. %{documentationLink}"
+msgstr ""
+
msgid "The default CI configuration path for new projects."
msgstr ""
@@ -17122,6 +17822,11 @@ msgstr ""
msgid "The following items will be exported:"
msgstr ""
+msgid "The following personal access token: %{token_names} was revoked, because a new policy to expire personal access tokens were set."
+msgid_plural "The following personal access tokens: %{token_names} were revoked, because a new policy to expire personal access tokens were set."
+msgstr[0] ""
+msgstr[1] ""
+
msgid "The fork relationship has been removed."
msgstr ""
@@ -17251,6 +17956,9 @@ msgstr ""
msgid "The remote repository is being updated..."
msgstr ""
+msgid "The repository can be commited to, and issues, comments and other entities can be created."
+msgstr ""
+
msgid "The repository for this project does not exist."
msgstr ""
@@ -17389,6 +18097,9 @@ msgstr ""
msgid "There are no unstaged changes"
msgstr ""
+msgid "There is a limit of 100 subscriptions from or to a project."
+msgstr ""
+
msgid "There is already a repository with that name on disk"
msgstr ""
@@ -17422,12 +18133,18 @@ msgstr ""
msgid "There was an error fetching cycle analytics stages."
msgstr ""
+msgid "There was an error fetching data for the chart"
+msgstr ""
+
msgid "There was an error fetching data for the selected stage"
msgstr ""
msgid "There was an error fetching label data for the selected group"
msgstr ""
+msgid "There was an error fetching the Designs"
+msgstr ""
+
msgid "There was an error gathering the chart data"
msgstr ""
@@ -17437,6 +18154,9 @@ msgstr ""
msgid "There was an error removing the e-mail."
msgstr ""
+msgid "There was an error removing your custom stage, please try again"
+msgstr ""
+
msgid "There was an error resetting group pipeline minutes."
msgstr ""
@@ -17467,6 +18187,9 @@ msgstr ""
msgid "There was an error while fetching cycle analytics data."
msgstr ""
+msgid "There was an error while fetching cycle analytics duration data."
+msgstr ""
+
msgid "There was an error while fetching cycle analytics summary data."
msgstr ""
@@ -17566,9 +18289,15 @@ msgstr ""
msgid "This domain is not verified. You will need to verify ownership before access is enabled."
msgstr ""
+msgid "This endpoint has been requested too many times. Try again later."
+msgstr ""
+
msgid "This environment has no deployments yet."
msgstr ""
+msgid "This epic already has the maximum number of child epics."
+msgstr ""
+
msgid "This epic does not exist or you don't have sufficient permission."
msgstr ""
@@ -17740,9 +18469,15 @@ msgstr ""
msgid "This project does not have billing enabled. To create a cluster, <a href=%{linkToBilling} target=\"_blank\" rel=\"noopener noreferrer\">enable billing <i class=\"fa fa-external-link\" aria-hidden=\"true\"></i></a> and try again."
msgstr ""
+msgid "This project is archived and cannot be commented on."
+msgstr ""
+
msgid "This project path either does not exist or is private."
msgstr ""
+msgid "This project will be removed on %{date}"
+msgstr ""
+
msgid "This repository"
msgstr ""
@@ -17791,6 +18526,39 @@ msgstr ""
msgid "Those emails automatically become issues (with the comments becoming the email conversation) listed here."
msgstr ""
+msgid "Threat Monitoring"
+msgstr ""
+
+msgid "ThreatMonitoring|A Web Application Firewall (WAF) provides monitoring and rules to protect production applications. GitLab adds the modsecurity WAF plug-in when you install the Ingress app in your Kubernetes cluster."
+msgstr ""
+
+msgid "ThreatMonitoring|At this time, threat monitoring only supports WAF data."
+msgstr ""
+
+msgid "ThreatMonitoring|Environment"
+msgstr ""
+
+msgid "ThreatMonitoring|Something went wrong, unable to fetch WAF statistics"
+msgstr ""
+
+msgid "ThreatMonitoring|Something went wrong, unable to fetch environments"
+msgstr ""
+
+msgid "ThreatMonitoring|The graph below is an overview of traffic coming to your application as tracked by the Web Application Firewall (WAF). View the docs for instructions on how to access the WAF logs to see what type of malicious traffic is trying to access your app. The docs link is also accessible by clicking the \"?\" icon next to the title below."
+msgstr ""
+
+msgid "ThreatMonitoring|Threat Monitoring"
+msgstr ""
+
+msgid "ThreatMonitoring|Threat Monitoring help page link"
+msgstr ""
+
+msgid "ThreatMonitoring|View WAF documentation"
+msgstr ""
+
+msgid "ThreatMonitoring|Web Application Firewall not enabled"
+msgstr ""
+
msgid "Thursday"
msgstr ""
@@ -18089,7 +18857,7 @@ msgstr ""
msgid "To preserve performance only <strong>%{display_size} of %{real_size}</strong> files are displayed."
msgstr ""
-msgid "To protect this issue's confidentiality, %{link_start}fork the project%{link_end} and set the forks visibility to private."
+msgid "To protect this issue's confidentiality, %{forkLink} and set the fork's visibility to private."
msgstr ""
msgid "To protect this issue's confidentiality, a private fork of this project was selected."
@@ -18206,6 +18974,12 @@ msgstr ""
msgid "Too many changes to show."
msgstr ""
+msgid "Too many namespaces enabled. You will need to manage them via the console or the API."
+msgstr ""
+
+msgid "Too many projects enabled. You will need to manage them via the console or the API."
+msgstr ""
+
msgid "Topics"
msgstr ""
@@ -18305,6 +19079,9 @@ msgstr ""
msgid "Trending"
msgstr ""
+msgid "Trigger"
+msgstr ""
+
msgid "Trigger pipelines for mirror updates"
msgstr ""
@@ -18332,7 +19109,7 @@ msgstr ""
msgid "Triggerer"
msgstr ""
-msgid "Triggers can force a specific branch or tag to get rebuilt with an API call. These tokens will impersonate their associated user including their access to projects and their project permissions."
+msgid "Triggers can force a specific branch or tag to get rebuilt with an API call. These tokens will impersonate their associated user including their access to projects and their project permissions."
msgstr ""
msgid "Troubleshoot and monitor your application with tracing"
@@ -18389,6 +19166,9 @@ msgstr ""
msgid "Type"
msgstr ""
+msgid "Type/State"
+msgstr ""
+
msgid "U2F Devices (%{length})"
msgstr ""
@@ -18422,12 +19202,18 @@ msgstr ""
msgid "Unable to connect to server: %{error}"
msgstr ""
+msgid "Unable to fetch vulnerable projects"
+msgstr ""
+
msgid "Unable to generate new instance ID"
msgstr ""
msgid "Unable to load the diff. %{button_try_again}"
msgstr ""
+msgid "Unable to load the merge request widget. Try reloading the page."
+msgstr ""
+
msgid "Unable to resolve"
msgstr ""
@@ -18452,7 +19238,7 @@ msgstr ""
msgid "Unarchive project"
msgstr ""
-msgid "Unarchiving the project will restore people's ability to make changes to it. The repository can be committed to, and issues, comments and other entities can be created. <strong>Once active this project shows up in the search and on the dashboard.</strong>"
+msgid "Unarchiving the project will restore people's ability to make changes to it. The repository can be committed to, and issues, comments, and other entities can be created. %{strong_start}Once active, this project shows up in the search and on the dashboard.%{strong_end}"
msgstr ""
msgid "Unblock"
@@ -18563,6 +19349,9 @@ msgstr ""
msgid "Until"
msgstr ""
+msgid "Until that time, the project can be restored."
+msgstr ""
+
msgid "Unverified"
msgstr ""
@@ -18674,9 +19463,6 @@ msgstr ""
msgid "Upload file"
msgstr ""
-msgid "Upload file does not exist"
-msgstr ""
-
msgid "Upload object map"
msgstr ""
@@ -19007,6 +19793,9 @@ msgstr ""
msgid "UserProfile|Already reported for abuse"
msgstr ""
+msgid "UserProfile|Blocked user"
+msgstr ""
+
msgid "UserProfile|Contributed projects"
msgstr ""
@@ -19067,6 +19856,9 @@ msgstr ""
msgid "UserProfile|This user hasn't starred any projects"
msgstr ""
+msgid "UserProfile|This user is blocked"
+msgstr ""
+
msgid "UserProfile|View all"
msgstr ""
@@ -19100,6 +19892,9 @@ msgstr ""
msgid "Users"
msgstr ""
+msgid "Users or groups set as approvers in the project's or merge request's settings."
+msgstr ""
+
msgid "Users outside of license"
msgstr ""
@@ -19175,6 +19970,9 @@ msgstr ""
msgid "Verify SAML Configuration"
msgstr ""
+msgid "Verify configuration"
+msgstr ""
+
msgid "Version"
msgstr ""
@@ -19216,9 +20014,6 @@ msgstr ""
msgid "View group labels"
msgstr ""
-msgid "View in Sentry"
-msgstr ""
-
msgid "View it on GitLab"
msgstr ""
@@ -19240,6 +20035,9 @@ msgstr ""
msgid "View open merge request"
msgstr ""
+msgid "View previous app"
+msgstr ""
+
msgid "View project labels"
msgstr ""
@@ -19291,13 +20089,10 @@ msgstr ""
msgid "VisualReviewApp|%{stepStart}Step 2%{stepEnd}. Add it to the %{headTags} tags of every page of your application, ensuring the merge request ID is set or not set as required. "
msgstr ""
-msgid "VisualReviewApp|%{stepStart}Step 3%{stepEnd}. Open the Review App and provide a %{linkStart}personal access token%{linkEnd}."
+msgid "VisualReviewApp|%{stepStart}Step 3%{stepEnd}. If not previously %{linkStart}configured%{linkEnd} by a developer, enter the merge request ID for the review when prompted. The ID of this merge request is %{stepStart}%{mrId}%{stepStart}."
msgstr ""
-msgid "VisualReviewApp|%{stepStart}Step 4%{stepEnd}. If not previously %{linkStart}configured%{linkEnd} by a developer, enter the merge request ID for the review when prompted. The ID of this merge request is %{stepStart}%{mrId}%{stepStart}."
-msgstr ""
-
-msgid "VisualReviewApp|%{stepStart}Step 5%{stepEnd}. Leave feedback in the Review App."
+msgid "VisualReviewApp|%{stepStart}Step 4%{stepEnd}. Leave feedback in the Review App."
msgstr ""
msgid "VisualReviewApp|Copy merge request ID"
@@ -19381,18 +20176,15 @@ msgstr ""
msgid "Want to see the data? Please ask an administrator for access."
msgstr ""
-msgid "We can't find an epic that matches what you are looking for."
-msgstr ""
-
-msgid "We can't find an issue that matches what you are looking for."
-msgstr ""
-
msgid "We could not determine the path to remove the epic"
msgstr ""
msgid "We could not determine the path to remove the issue"
msgstr ""
+msgid "We couldn't reach the Prometheus server. Either the server no longer exists or the configuration details need updating."
+msgstr ""
+
msgid "We created a short guided tour that will help you learn the basics of GitLab and how it will help you be better at your job. It should only take a couple of minutes. You will be guided by two types of helpers, best recognized by their color."
msgstr ""
@@ -19417,6 +20209,9 @@ msgstr ""
msgid "We want to be sure it is you, please confirm you are not a robot."
msgstr ""
+msgid "We've found no vulnerabilities"
+msgstr ""
+
msgid "Web IDE"
msgstr ""
@@ -19485,12 +20280,27 @@ msgstr ""
msgid "When:"
msgstr ""
+msgid "While it's rare to have no vulnerabilities for your group, it can happen. In any event, we ask that you double check your settings to make sure you've set up your dashboard correctly."
+msgstr ""
+
+msgid "While it's rare to have no vulnerabilities for your pipeline, it can happen. In any event, we ask that you double check your settings to make sure all security scanning jobs have passed successfully."
+msgstr ""
+
+msgid "While it's rare to have no vulnerabilities for your project, it can happen. In any event, we ask that you double check your settings to make sure you've set up your dashboard correctly."
+msgstr ""
+
+msgid "While it's rare to have no vulnerabilities, it can happen. In any event, we ask that you please double check your settings to make sure you've set up your dashboard correctly."
+msgstr ""
+
msgid "White helpers give contextual information."
msgstr ""
msgid "Whitelist to allow requests to the local network from hooks and services"
msgstr ""
+msgid "Who can be an approver?"
+msgstr ""
+
msgid "Who can see this group?"
msgstr ""
@@ -19716,6 +20526,9 @@ msgstr ""
msgid "You are not allowed to unlink your primary login account"
msgstr ""
+msgid "You are not authorized to perform this action"
+msgstr ""
+
msgid "You are now impersonating %{username}"
msgstr ""
@@ -19749,9 +20562,21 @@ msgstr ""
msgid "You can apply your Trial to your Personal account or create a New Group."
msgstr ""
+msgid "You can create a new one or check them in your %{pat_link_start}Personal Access Tokens%{pat_link_end} settings"
+msgstr ""
+
+msgid "You can create a new one or check them in your Personal Access Tokens settings %{pat_link}"
+msgstr ""
+
msgid "You can create files directly in GitLab using one of the following options."
msgstr ""
+msgid "You can create new ones at your %{pat_link_start}Personal Access Tokens%{pat_link_end} settings"
+msgstr ""
+
+msgid "You can create new ones at your Personal Access Tokens settings %{pat_link}"
+msgstr ""
+
msgid "You can easily contribute to them by requesting to join these groups."
msgstr ""
@@ -19938,6 +20763,9 @@ msgstr ""
msgid "You must select a stack for configuring your cloud provider. Learn more about"
msgstr ""
+msgid "You must set up incoming email before it becomes active."
+msgstr ""
+
msgid "You need a different license to enable FileLocks feature"
msgstr ""
@@ -20010,6 +20838,12 @@ msgstr ""
msgid "You'll need to use different branch names to get a valid comparison."
msgstr ""
+msgid "You're about to reduce the visibility of the project %{strong_start}%{project_name}%{strong_end} in %{strong_start}%{group_name}%{strong_end}."
+msgstr ""
+
+msgid "You're about to reduce the visibility of the project %{strong_start}%{project_name}%{strong_end}."
+msgstr ""
+
msgid "You're not allowed to %{tag_start}edit%{tag_end} files in this project directly. Please fork this project, make your changes there, and submit a merge request."
msgstr ""
@@ -20022,15 +20856,21 @@ msgstr ""
msgid "You're only seeing %{startTag}other activity%{endTag} in the feed. To add a comment, switch to one of the following options."
msgstr ""
-msgid "You're receiving this email because %{reason}."
-msgstr ""
-
msgid "You're receiving this email because of your account on %{host}."
msgstr ""
msgid "You're receiving this email because of your account on %{host}. %{manage_notifications_link} &middot; %{help_link}"
msgstr ""
+msgid "You're receiving this email because of your activity on %{host}."
+msgstr ""
+
+msgid "You're receiving this email because you have been assigned an item on %{host}."
+msgstr ""
+
+msgid "You're receiving this email because you have been mentioned on %{host}."
+msgstr ""
+
msgid "You've already enabled two-factor authentication using one time password authenticators. In order to register a different device, you must first disable two-factor authentication."
msgstr ""
@@ -20040,10 +20880,10 @@ msgstr ""
msgid "Your Commit Email will be used for web based operations, such as edits and merges."
msgstr ""
-msgid "Your Conversational Development Index gives an overview of how you are using GitLab from a feature perspective. View how you compare with other organizations, discover features you are not using, and learn best practices through blog posts and white papers."
+msgid "Your Default Notification Email will be used for account notifications if a %{openingTag}group-specific email address%{closingTag} is not set."
msgstr ""
-msgid "Your Default Notification Email will be used for account notifications if a %{openingTag}group-specific email address%{closingTag} is not set."
+msgid "Your DevOps Score gives an overview of how you are using GitLab from a feature perspective. View how you compare with other organizations, discover features you are not using, and learn best practices through blog posts and white papers."
msgstr ""
msgid "Your GPG keys (%{count})"
@@ -20055,6 +20895,9 @@ msgstr ""
msgid "Your New Personal Access Token"
msgstr ""
+msgid "Your Personal Access Tokens will expire in %{days_to_expire} days or less"
+msgstr ""
+
msgid "Your Primary Email will be used for avatar detection."
msgstr ""
@@ -20112,6 +20955,9 @@ msgstr ""
msgid "Your changes have been successfully committed."
msgstr ""
+msgid "Your comment could not be submitted because %{error}"
+msgstr ""
+
msgid "Your comment could not be submitted! Please check your network connection and try again."
msgstr ""
@@ -20193,9 +21039,15 @@ msgstr ""
msgid "among other things"
msgstr ""
+msgid "archived"
+msgstr ""
+
msgid "assign yourself"
msgstr ""
+msgid "at line %{errorLine}%{errorColumn}"
+msgstr ""
+
msgid "attach a new file"
msgstr ""
@@ -20557,6 +21409,9 @@ msgid_plural "days"
msgstr[0] ""
msgstr[1] ""
+msgid "default branch"
+msgstr ""
+
msgid "deleted"
msgstr ""
@@ -20646,6 +21501,9 @@ msgstr ""
msgid "for this project"
msgstr ""
+msgid "fork this project"
+msgstr ""
+
msgid "from"
msgstr ""
@@ -20673,6 +21531,9 @@ msgstr ""
msgid "importing"
msgstr ""
+msgid "in %{errorFn} "
+msgstr ""
+
msgid "in group %{link_to_group}"
msgstr ""
@@ -20711,6 +21572,9 @@ msgstr ""
msgid "is not an email you own"
msgstr ""
+msgid "is too long (%{current_value}). The maximum size is %{max_size}."
+msgstr ""
+
msgid "is too long (maximum is 100 entries)"
msgstr ""
@@ -21106,9 +21970,6 @@ msgstr ""
msgid "opened %{timeAgoString} by %{user}"
msgstr ""
-msgid "or %{link_start}create a new Google account%{link_end}"
-msgstr ""
-
msgid "out of %d total test"
msgid_plural "out of %d total tests"
msgstr[0] ""
@@ -21125,6 +21986,9 @@ msgstr ""
msgid "pending comment"
msgstr ""
+msgid "pending removal"
+msgstr ""
+
msgid "pipeline"
msgstr ""
@@ -21209,6 +22073,9 @@ msgstr ""
msgid "severity|Medium"
msgstr ""
+msgid "severity|None"
+msgstr ""
+
msgid "severity|Undefined"
msgstr ""
@@ -21218,6 +22085,12 @@ msgstr ""
msgid "should be greater than or equal to %{access} inherited membership from group %{group_name}"
msgstr ""
+msgid "show %{count} more"
+msgstr ""
+
+msgid "show fewer"
+msgstr ""
+
msgid "show less"
msgstr ""
diff --git a/package.json b/package.json
index 016f4f96e21..a4b6f55365e 100644
--- a/package.json
+++ b/package.json
@@ -27,21 +27,23 @@
"stylelint-create-utility-map": "node scripts/frontend/stylelint/stylelint-utility-map.js",
"test": "node scripts/frontend/test",
"webpack": "NODE_OPTIONS=\"--max-old-space-size=3584\" webpack --config config/webpack.config.js",
+ "webpack-vendor": "NODE_OPTIONS=\"--max-old-space-size=3584\" webpack --config config/webpack.vendor.config.js",
"webpack-prod": "NODE_OPTIONS=\"--max-old-space-size=3584\" NODE_ENV=production webpack --config config/webpack.config.js"
},
"dependencies": {
"@babel/core": "^7.6.2",
"@babel/plugin-proposal-class-properties": "^7.5.5",
"@babel/plugin-proposal-json-strings": "^7.2.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.7.5",
"@babel/plugin-proposal-private-methods": "^7.6.0",
"@babel/plugin-syntax-dynamic-import": "^7.2.0",
"@babel/plugin-syntax-import-meta": "^7.2.0",
"@babel/preset-env": "^7.6.2",
- "@gitlab/svgs": "^1.82.0",
- "@gitlab/ui": "7.11.0",
- "@gitlab/visual-review-tools": "1.2.0",
- "@sentry/browser": "^5.7.1",
- "@sourcegraph/code-host-integration": "^0.0.13",
+ "@gitlab/svgs": "^1.88.0",
+ "@gitlab/ui": "8.8.0",
+ "@gitlab/visual-review-tools": "1.5.1",
+ "@sentry/browser": "^5.10.2",
+ "@sourcegraph/code-host-integration": "^0.0.14",
"apollo-cache-inmemory": "^1.6.3",
"apollo-client": "^2.6.4",
"apollo-link": "^1.2.11",
@@ -65,16 +67,8 @@
"cropper": "^2.3.0",
"css-loader": "^1.0.0",
"d3": "^4.13.0",
- "d3-array": "^1.2.1",
- "d3-axis": "^1.0.8",
- "d3-brush": "^1.0.4",
- "d3-ease": "^1.0.3",
"d3-scale": "^1.0.7",
"d3-selection": "^1.2.0",
- "d3-shape": "^1.2.0",
- "d3-time": "^1.0.8",
- "d3-time-format": "^2.1.1",
- "d3-transition": "^1.1.1",
"dateformat": "^3.0.3",
"deckar01-task_list": "^2.2.1",
"diff": "^3.4.0",
@@ -121,10 +115,11 @@
"stickyfilljs": "^2.0.5",
"style-loader": "^1.0.0",
"svg4everybody": "2.1.9",
+ "swagger-ui-dist": "^3.24.3",
"three": "^0.84.0",
"three-orbit-controls": "^82.1.0",
"three-stl-loader": "^1.0.4",
- "timeago.js": "^3.0.2",
+ "timeago.js": "^4.0.1",
"tiptap": "^1.8.0",
"tiptap-commands": "^1.4.0",
"tiptap-extensions": "^1.8.0",
@@ -148,7 +143,7 @@
},
"devDependencies": {
"@babel/plugin-transform-modules-commonjs": "^7.5.0",
- "@gitlab/eslint-config": "^1.6.0",
+ "@gitlab/eslint-config": "^2.0.0",
"@gitlab/eslint-plugin-i18n": "^1.1.0",
"@gitlab/eslint-plugin-vue-i18n": "^1.2.0",
"@vue/test-utils": "^1.0.0-beta.25",
@@ -164,10 +159,9 @@
"eslint": "~5.9.0",
"eslint-import-resolver-jest": "^2.1.1",
"eslint-import-resolver-webpack": "^0.10.1",
- "eslint-plugin-import": "^2.14.0",
"eslint-plugin-jasmine": "^2.10.1",
"eslint-plugin-jest": "^22.3.0",
- "eslint-plugin-no-jquery": "^2.1.0",
+ "eslint-plugin-no-jquery": "^2.3.0",
"gettext-extractor": "^3.4.3",
"gettext-extractor-vue": "^4.0.2",
"graphql-tag": "^2.10.0",
diff --git a/qa/.gitignore b/qa/.gitignore
index b0ae074ac07..7bc4effd8a8 100644
--- a/qa/.gitignore
+++ b/qa/.gitignore
@@ -1,3 +1,4 @@
tmp/
.ruby-version
+.ruby-gemset
urls.yml
diff --git a/qa/Gemfile b/qa/Gemfile
index 5266fc57b0a..3575ecf13e9 100644
--- a/qa/Gemfile
+++ b/qa/Gemfile
@@ -2,8 +2,8 @@ source 'https://rubygems.org'
gem 'gitlab-qa'
gem 'activesupport', '5.2.3' # This should stay in sync with the root's Gemfile
-gem 'capybara', '~> 2.16.1'
-gem 'capybara-screenshot', '~> 1.0.18'
+gem 'capybara', '~> 3.29.0'
+gem 'capybara-screenshot', '~> 1.0.23'
gem 'rake', '~> 12.3.0'
gem 'rspec', '~> 3.7'
gem 'selenium-webdriver', '~> 3.12'
diff --git a/qa/Gemfile.lock b/qa/Gemfile.lock
index 84eab990c95..25c7703ef52 100644
--- a/qa/Gemfile.lock
+++ b/qa/Gemfile.lock
@@ -6,8 +6,8 @@ GEM
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
- addressable (2.5.2)
- public_suffix (>= 2.0.2, < 4.0)
+ addressable (2.7.0)
+ public_suffix (>= 2.0.2, < 5.0)
airborne (0.2.13)
activesupport
rack
@@ -15,18 +15,18 @@ GEM
rest-client (>= 1.7.3, < 3.0)
rspec (~> 3.1)
byebug (9.1.0)
- capybara (2.16.1)
+ capybara (3.29.0)
addressable
mini_mime (>= 0.1.3)
- nokogiri (>= 1.3.3)
- rack (>= 1.0.0)
- rack-test (>= 0.5.4)
- xpath (~> 2.0)
- capybara-screenshot (1.0.18)
- capybara (>= 1.0, < 3)
+ nokogiri (~> 1.8)
+ rack (>= 1.6.0)
+ rack-test (>= 0.6.3)
+ regexp_parser (~> 1.5)
+ xpath (~> 3.2)
+ capybara-screenshot (1.0.23)
+ capybara (>= 1.0, < 4)
launchy
- childprocess (0.9.0)
- ffi (~> 1.0, >= 1.0.11)
+ childprocess (3.0.0)
coderay (1.1.2)
concurrent-ruby (1.1.5)
debase (0.2.4.1)
@@ -37,7 +37,6 @@ GEM
unf (>= 0.0.5, < 1.0.0)
faker (1.9.3)
i18n (>= 0.7)
- ffi (1.9.25)
gitlab-qa (4.0.0)
http-cookie (1.0.3)
domain_name (~> 0.5)
@@ -51,7 +50,7 @@ GEM
mime-types (3.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2016.0521)
- mini_mime (1.0.0)
+ mini_mime (1.0.2)
mini_portile2 (2.4.0)
minitest (5.11.3)
netrc (0.11.0)
@@ -66,11 +65,12 @@ GEM
pry-byebug (3.5.1)
byebug (~> 9.1)
pry (~> 0.10)
- public_suffix (3.0.1)
- rack (2.0.6)
- rack-test (0.8.2)
+ public_suffix (4.0.1)
+ rack (2.0.7)
+ rack-test (0.8.3)
rack (>= 1.0, < 3)
- rake (12.3.3)
+ rake (12.3.0)
+ regexp_parser (1.6.0)
rest-client (2.0.2)
http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 4.0)
@@ -95,17 +95,17 @@ GEM
ruby-debug-ide (0.7.0)
rake (>= 0.8.1)
rubyzip (1.2.2)
- selenium-webdriver (3.141.0)
- childprocess (~> 0.5)
- rubyzip (~> 1.2, >= 1.2.2)
+ selenium-webdriver (3.142.6)
+ childprocess (>= 0.5, < 4.0)
+ rubyzip (>= 1.2.2)
thread_safe (0.3.6)
tzinfo (1.2.5)
thread_safe (~> 0.1)
unf (0.1.4)
unf_ext
unf_ext (0.0.7.4)
- xpath (2.1.0)
- nokogiri (~> 1.3)
+ xpath (3.2.0)
+ nokogiri (~> 1.8)
PLATFORMS
ruby
@@ -113,8 +113,8 @@ PLATFORMS
DEPENDENCIES
activesupport (= 5.2.3)
airborne (~> 0.2.13)
- capybara (~> 2.16.1)
- capybara-screenshot (~> 1.0.18)
+ capybara (~> 3.29.0)
+ capybara-screenshot (~> 1.0.23)
debase (~> 0.2.4.1)
faker (~> 1.6, >= 1.6.6)
gitlab-qa
diff --git a/qa/qa.rb b/qa/qa.rb
index 6397e4216d9..509de4af79c 100644
--- a/qa/qa.rb
+++ b/qa/qa.rb
@@ -15,6 +15,7 @@ module QA
#
module Flow
autoload :Login, 'qa/flow/login'
+ autoload :Project, 'qa/flow/project'
end
##
@@ -33,6 +34,9 @@ module QA
autoload :Fixtures, 'qa/runtime/fixtures'
autoload :Logger, 'qa/runtime/logger'
autoload :GPG, 'qa/runtime/gpg'
+ autoload :MailHog, 'qa/runtime/mail_hog'
+ autoload :IPAddress, 'qa/runtime/ip_address'
+ autoload :Search, 'qa/runtime/search'
module API
autoload :Client, 'qa/runtime/api/client'
@@ -130,6 +134,7 @@ module QA
autoload :Kubernetes, 'qa/scenario/test/integration/kubernetes'
autoload :Mattermost, 'qa/scenario/test/integration/mattermost'
autoload :ObjectStorage, 'qa/scenario/test/integration/object_storage'
+ autoload :SMTP, 'qa/scenario/test/integration/smtp'
end
module Sanity
@@ -331,6 +336,7 @@ module QA
module Admin
autoload :Menu, 'qa/page/admin/menu'
+ autoload :NewSession, 'qa/page/admin/new_session'
module Settings
autoload :Repository, 'qa/page/admin/settings/repository'
@@ -421,6 +427,7 @@ module QA
autoload :Maven, 'qa/service/docker_run/maven'
autoload :NodeJs, 'qa/service/docker_run/node_js'
autoload :GitlabRunner, 'qa/service/docker_run/gitlab_runner'
+ autoload :MailHog, 'qa/service/docker_run/mail_hog'
end
end
diff --git a/qa/qa/flow/login.rb b/qa/qa/flow/login.rb
index d84dfaa9377..5505fabd4ae 100644
--- a/qa/qa/flow/login.rb
+++ b/qa/qa/flow/login.rb
@@ -5,33 +5,33 @@ module QA
module Login
module_function
- def while_signed_in(as: nil)
+ def while_signed_in(as: nil, address: :gitlab)
Page::Main::Menu.perform(&:sign_out_if_signed_in)
- sign_in(as: as)
+ sign_in(as: as, address: address)
yield
Page::Main::Menu.perform(&:sign_out)
end
- def while_signed_in_as_admin
- while_signed_in(as: Runtime::User.admin) do
+ def while_signed_in_as_admin(address: :gitlab)
+ while_signed_in(as: Runtime::User.admin, address: address) do
yield
end
end
- def sign_in(as: nil)
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
+ def sign_in(as: nil, address: :gitlab)
+ Runtime::Browser.visit(address, Page::Main::Login)
Page::Main::Login.perform { |login| login.sign_in_using_credentials(user: as) }
end
- def sign_in_as_admin
- sign_in(as: Runtime::User.admin)
+ def sign_in_as_admin(address: :gitlab)
+ sign_in(as: Runtime::User.admin, address: address)
end
- def sign_in_unless_signed_in(as: nil)
- sign_in(as: as) unless Page::Main::Menu.perform(&:signed_in?)
+ def sign_in_unless_signed_in(as: nil, address: :gitlab)
+ sign_in(as: as, address: address) unless Page::Main::Menu.perform(&:signed_in?)
end
end
end
diff --git a/qa/qa/flow/project.rb b/qa/qa/flow/project.rb
new file mode 100644
index 00000000000..72b9357a604
--- /dev/null
+++ b/qa/qa/flow/project.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+module QA
+ module Flow
+ module Project
+ module_function
+
+ def add_member(project:, username:)
+ project.visit!
+
+ Page::Project::Menu.perform(&:go_to_members_settings)
+
+ Page::Project::Settings::Members.perform do |member_settings|
+ member_settings.add_member(username)
+ end
+ end
+ end
+ end
+end
diff --git a/qa/qa/page/admin/new_session.rb b/qa/qa/page/admin/new_session.rb
new file mode 100644
index 00000000000..3d46bb7f186
--- /dev/null
+++ b/qa/qa/page/admin/new_session.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+module QA
+ module Page
+ module Admin
+ class NewSession < Page::Base
+ view 'app/views/admin/sessions/_new_base.html.haml' do
+ element :enter_admin_mode_button
+ element :password_field
+ end
+
+ def set_password(password)
+ fill_element :password_field, password
+ end
+
+ def click_enter_admin_mode
+ click_element :enter_admin_mode_button
+ end
+ end
+ end
+ end
+end
diff --git a/qa/qa/page/base.rb b/qa/qa/page/base.rb
index ed4d33dc7a3..dcba4fc8544 100644
--- a/qa/qa/page/base.rb
+++ b/qa/qa/page/base.rb
@@ -81,16 +81,24 @@ module QA
find_element(name, class: 'active')
end
- def all_elements(name)
- all(element_selector_css(name))
+ def all_elements(name, **kwargs)
+ all(element_selector_css(name), **kwargs)
end
def check_element(name)
- find_element(name).set(true)
+ retry_until(sleep_interval: 1) do
+ find_element(name).set(true)
+
+ find_element(name).checked?
+ end
end
def uncheck_element(name)
- find_element(name).set(false)
+ retry_until(sleep_interval: 1) do
+ find_element(name).set(false)
+
+ !find_element(name).checked?
+ end
end
# replace with (..., page = self.class)
@@ -125,16 +133,23 @@ module QA
has_no_css?(element_selector_css(name, kwargs), wait: wait, text: text)
end
- def has_text?(text)
- page.has_text? text
+ def has_text?(text, wait: Capybara.default_max_wait_time)
+ page.has_text?(text, wait: wait)
end
def has_no_text?(text)
page.has_no_text? text
end
+ def has_normalized_ws_text?(text, wait: Capybara.default_max_wait_time)
+ page.has_text?(text.gsub(/\s+/, " "), wait: wait)
+ end
+
def finished_loading?
- has_no_css?('.fa-spinner', wait: Capybara.default_max_wait_time)
+ # The number of selectors should be able to be reduced after
+ # migration to the new spinner is complete.
+ # https://gitlab.com/groups/gitlab-org/-/epics/956
+ has_no_css?('.gl-spinner, .fa-spinner, .spinner', wait: Capybara.default_max_wait_time)
end
def finished_loading_block?
@@ -191,12 +206,7 @@ module QA
end
def within_element_by_index(name, index)
- # Finding all elements can be flaky if the elements don't all load
- # immediately. So we wait for any to appear before trying to find a
- # specific one.
- has_element?(name)
-
- page.within all_elements(name)[index] do
+ page.within all_elements(name, minimum: index + 1)[index] do
yield
end
end
diff --git a/qa/qa/page/component/issuable/common.rb b/qa/qa/page/component/issuable/common.rb
index cfd8ac1e7c8..9ecc8f73bdb 100644
--- a/qa/qa/page/component/issuable/common.rb
+++ b/qa/qa/page/component/issuable/common.rb
@@ -8,6 +8,7 @@ module QA
def self.included(base)
base.view 'app/assets/javascripts/issue_show/components/title.vue' do
element :edit_button
+ element :title, required: true
end
base.view 'app/assets/javascripts/issue_show/components/fields/title.vue' do
diff --git a/qa/qa/page/component/select2.rb b/qa/qa/page/component/select2.rb
index 8fe6a4a75b3..1dd718a1d88 100644
--- a/qa/qa/page/component/select2.rb
+++ b/qa/qa/page/component/select2.rb
@@ -31,7 +31,7 @@ module QA
end
def wait_for_search_to_complete
- has_css?('.select2-active')
+ has_css?('.select2-active', wait: 1)
has_no_css?('.select2-active', wait: 30)
end
end
diff --git a/qa/qa/page/dashboard/snippet/show.rb b/qa/qa/page/dashboard/snippet/show.rb
index a75ea63eca7..88d6ef02d22 100644
--- a/qa/qa/page/dashboard/snippet/show.rb
+++ b/qa/qa/page/dashboard/snippet/show.rb
@@ -6,8 +6,8 @@ module QA
module Snippet
class Show < Page::Base
view 'app/views/shared/snippets/_header.html.haml' do
- element :snippet_title
- element :snippet_description
+ element :snippet_title, required: true
+ element :snippet_description, required: true
element :embed_type
element :snippet_box
end
@@ -21,15 +21,11 @@ module QA
end
def has_snippet_title?(snippet_title)
- within_element(:snippet_title) do
- has_text?(snippet_title)
- end
+ has_element? :snippet_title, text: snippet_title
end
def has_snippet_description?(snippet_description)
- within_element(:snippet_description) do
- has_text?(snippet_description)
- end
+ has_element? :snippet_description, text: snippet_description
end
def has_embed_type?(embed_type)
diff --git a/qa/qa/page/group/menu.rb b/qa/qa/page/group/menu.rb
index 6353895ffd4..2b3b872aff4 100644
--- a/qa/qa/page/group/menu.rb
+++ b/qa/qa/page/group/menu.rb
@@ -10,6 +10,7 @@ module QA
element :group_settings_item
element :group_members_item
element :general_settings_link
+ element :contribution_analytics_link
end
def click_group_members_item
@@ -18,6 +19,12 @@ module QA
end
end
+ def click_group_analytics_item
+ within_sidebar do
+ click_element(:contribution_analytics_link)
+ end
+ end
+
def click_group_general_settings_item
hover_element(:group_settings_item) do
within_submenu(:group_sidebar_submenu) do
diff --git a/qa/qa/page/issuable/sidebar.rb b/qa/qa/page/issuable/sidebar.rb
index 9bb1c702576..af5eee35a2d 100644
--- a/qa/qa/page/issuable/sidebar.rb
+++ b/qa/qa/page/issuable/sidebar.rb
@@ -5,19 +5,20 @@ module QA
module Issuable
class Sidebar < Page::Base
view 'app/views/shared/issuable/_sidebar.html.haml' do
- element :labels_block, ".issuable-show-labels" # rubocop:disable QA/ElementWithPattern
- element :milestones_block, '.block.milestone' # rubocop:disable QA/ElementWithPattern
+ element :labels_block
+ element :milestone_block
+ element :milestone_link
end
def has_label?(label)
- page.within('.issuable-show-labels') do
- !!find('span', text: label)
+ within_element(:labels_block) do
+ has_element?(:label, label_name: label)
end
end
- def has_milestone?(milestone)
- page.within('.block.milestone') do
- !!find("[href*='/milestones/']", text: milestone)
+ def has_milestone?(milestone_title)
+ within_element(:milestone_block) do
+ has_element?(:milestone_link, title: milestone_title)
end
end
end
diff --git a/qa/qa/page/layout/performance_bar.rb b/qa/qa/page/layout/performance_bar.rb
index 0cfef6a5705..79e4d3edce0 100644
--- a/qa/qa/page/layout/performance_bar.rb
+++ b/qa/qa/page/layout/performance_bar.rb
@@ -22,7 +22,7 @@ module QA
def has_detailed_metrics?
all_elements(:performance_bar_detailed_metric).all? do |metric|
- metric.has_text?(%r{\d+ms / \d+})
+ metric.has_text?(%r{\d+})
end
end
diff --git a/qa/qa/page/main/login.rb b/qa/qa/page/main/login.rb
index 6e266e26d78..cb3421f93c2 100644
--- a/qa/qa/page/main/login.rb
+++ b/qa/qa/page/main/login.rb
@@ -42,6 +42,10 @@ module QA
element :login_page, required: true
end
+ def can_sign_in?
+ has_element?(:sign_in_button)
+ end
+
def sign_in_using_credentials(user: nil, skip_page_validation: false)
# Don't try to log-in if we're already logged-in
return if Page::Main::Menu.perform(&:signed_in?)
diff --git a/qa/qa/page/main/menu.rb b/qa/qa/page/main/menu.rb
index 49c48568e68..5f4b3946e6a 100644
--- a/qa/qa/page/main/menu.rb
+++ b/qa/qa/page/main/menu.rb
@@ -60,8 +60,15 @@ module QA
end
end
- def click_admin_area
- within_top_menu { click_element :admin_area_link }
+ def go_to_admin_area
+ click_admin_area
+
+ if has_text?('Enter Admin Mode', wait: 1.0)
+ Admin::NewSession.perform do |new_session|
+ new_session.set_password(Runtime::User.admin_password)
+ new_session.click_enter_admin_mode
+ end
+ end
end
def signed_in?
@@ -125,6 +132,10 @@ module QA
end
end
end
+
+ def click_admin_area
+ within_top_menu { click_element :admin_area_link }
+ end
end
end
end
diff --git a/qa/qa/page/mattermost/main.rb b/qa/qa/page/mattermost/main.rb
index e531ace8529..eea5c4b527e 100644
--- a/qa/qa/page/mattermost/main.rb
+++ b/qa/qa/page/mattermost/main.rb
@@ -4,11 +4,6 @@ module QA
module Page
module Mattermost
class Main < Page::Base
- ##
- # TODO, define all selectors required by this page object
- #
- # See gitlab-org/gitlab-qa#154
- #
view 'app/views/projects/mattermosts/new.html.haml'
def initialize
diff --git a/qa/qa/page/merge_request/show.rb b/qa/qa/page/merge_request/show.rb
index 14b8c420b16..c3645a6a755 100644
--- a/qa/qa/page/merge_request/show.rb
+++ b/qa/qa/page/merge_request/show.rb
@@ -26,7 +26,7 @@ module QA
end
view 'app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_merged.vue' do
- element :merged_status, 'The changes were merged into' # rubocop:disable QA/ElementWithPattern
+ element :merged_status_content
end
view 'app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_rebase.vue' do
@@ -60,18 +60,35 @@ module QA
element :edit_button
end
+ def add_comment_to_diff(text)
+ wait(interval: 5) do
+ has_text?("No newline at end of file")
+ end
+ all_elements(:new_diff_line).first.hover
+ click_element :diff_comment
+ fill_element :reply_input, text
+ end
+
def click_discussions_tab
click_element :notes_tab
+
+ finished_loading?
end
def click_diffs_tab
click_element :diffs_tab
+
+ finished_loading?
end
def click_pipeline_link
click_element :pipeline_link
end
+ def edit!
+ click_element :edit_button
+ end
+
def fast_forward_possible?
has_no_text?('Fast-forward merge is not possible')
end
@@ -82,39 +99,6 @@ module QA
has_element?(:merge_button)
end
- def has_merge_options?
- has_element?(:merge_moment_dropdown)
- end
-
- def merge_immediately
- if has_merge_options?
- click_element :merge_moment_dropdown
- click_element :merge_immediately_option
- else
- click_element :merge_button
- end
- end
-
- def rebase!
- # The rebase button is disabled on load
- wait do
- has_element?(:mr_rebase_button)
- end
-
- # The rebase button is enabled via JS
- wait(reload: false) do
- !find_element(:mr_rebase_button).disabled?
- end
-
- click_element :mr_rebase_button
-
- success = wait do
- has_text?('Fast-forward merge without a merge commit')
- end
-
- raise "Rebase did not appear to be successful" unless success
- end
-
def has_assignee?(username)
page.within(element_selector_css(:assignee_block)) do
has_text?(username)
@@ -122,9 +106,8 @@ module QA
end
def has_label?(label)
- page.within(element_selector_css(:labels_block)) do
- element = find('span', text: label)
- !element.nil?
+ within_element(:labels_block) do
+ !!has_element?(:label, label_name: label)
end
end
@@ -141,20 +124,6 @@ module QA
has_element?(:description, text: description)
end
- def try_to_merge!
- merge_immediately if ready_to_merge?
- end
-
- def merge!
- try_to_merge!
-
- success = wait do
- has_text?('The changes were merged into')
- end
-
- raise "Merge did not appear to be successful" unless success
- end
-
def mark_to_squash
# The squash checkbox is disabled on load
wait do
@@ -169,17 +138,14 @@ module QA
click_element :squash_checkbox
end
- def add_comment_to_diff(text)
- wait(interval: 5) do
- has_text?("No newline at end of file")
- end
- all_elements(:new_diff_line).first.hover
- click_element :diff_comment
- fill_element :reply_input, text
+ def merge!
+ click_element :merge_button if ready_to_merge?
+
+ raise "Merge did not appear to be successful" unless merged?
end
- def edit!
- click_element :edit_button
+ def merged?
+ has_element?(:merged_status_content, text: 'The changes were merged into', wait: 30)
end
def ready_to_merge?
@@ -194,6 +160,30 @@ module QA
end
end
+ def rebase!
+ # The rebase button is disabled on load
+ wait do
+ has_element?(:mr_rebase_button)
+ end
+
+ # The rebase button is enabled via JS
+ wait(reload: false) do
+ !find_element(:mr_rebase_button).disabled?
+ end
+
+ click_element :mr_rebase_button
+
+ success = wait do
+ has_text?('Fast-forward merge without a merge commit')
+ end
+
+ raise "Rebase did not appear to be successful" unless success
+ end
+
+ def try_to_merge!
+ click_element :merge_button if ready_to_merge?
+ end
+
def view_email_patches
click_element :dropdown_toggle
visit_link_in_element(:download_email_patches)
diff --git a/qa/qa/page/project/issue/show.rb b/qa/qa/page/project/issue/show.rb
index 6ec80b7c9cc..1ef711d459e 100644
--- a/qa/qa/page/project/issue/show.rb
+++ b/qa/qa/page/project/issue/show.rb
@@ -26,11 +26,6 @@ module QA
element :avatar_image
end
- view 'app/assets/javascripts/sidebar/components/assignees/assignee_title.vue' do
- element :assignee_edit_link
- element :assignee_title
- end
-
view 'app/assets/javascripts/sidebar/components/assignees/uncollapsed_assignee_list.vue' do
element :more_assignees_link
end
@@ -44,6 +39,7 @@ module QA
end
view 'app/views/shared/issuable/_close_reopen_button.html.haml' do
+ element :close_issue_button
element :reopen_issue_button
end
@@ -60,16 +56,6 @@ module QA
element :new_note_form, 'attr: :note' # rubocop:disable QA/ElementWithPattern
end
- def assign(user)
- click_element(:assignee_edit_link)
- select_user(user.username)
- click_body
- end
-
- def assignee_title
- find_element(:assignee_title)
- end
-
def avatar_image_count
wait_assignees_block_finish_loading do
all_elements(:avatar_image).count
@@ -84,6 +70,10 @@ module QA
click_element(:remove_related_issue_button)
end
+ def click_close_issue_button
+ click_element :close_issue_button
+ end
+
# Adds a comment to an issue
# attachment option should be an absolute path
def comment(text, attachment: nil, filter: :all_activities)
@@ -157,25 +147,12 @@ module QA
def select_filter_with_text(text)
retry_on_exception do
- click_body
+ click_element(:title)
click_element :discussion_filter
find_element(:filter_options, text: text).click
end
end
- def select_user(username)
- find("#{element_selector_css(:assignee_block)} input").set(username)
-
- dropdown_menu_user_link_selector = '.dropdown-menu-user-link'
- at_username = "@#{username}"
- ten_seconds = 10
-
- wait(reload: false, max: ten_seconds, interval: 1) do
- has_css?(dropdown_menu_user_link_selector, wait: ten_seconds, text: at_username)
- end
- find(dropdown_menu_user_link_selector, text: at_username).click
- end
-
def wait_assignees_block_finish_loading
within_element(:assignee_block) do
wait(reload: false, max: 10, interval: 1) do
diff --git a/qa/qa/page/project/job/show.rb b/qa/qa/page/project/job/show.rb
index cf847710024..a1a5b3c296e 100644
--- a/qa/qa/page/project/job/show.rb
+++ b/qa/qa/page/project/job/show.rb
@@ -27,7 +27,7 @@ module QA::Page
wait(reload: false, max: wait, interval: 1) do
result = find_element(:build_trace).text
- !result.empty?
+ result.include?('Job')
end
result
diff --git a/qa/qa/page/project/pipeline/index.rb b/qa/qa/page/project/pipeline/index.rb
index b52f3e99a36..269d4dfc411 100644
--- a/qa/qa/page/project/pipeline/index.rb
+++ b/qa/qa/page/project/pipeline/index.rb
@@ -14,11 +14,7 @@ module QA::Page
def click_on_latest_pipeline
css = '.js-pipeline-url-link'
- link = wait(reload: false) do
- first(css)
- end
-
- link.click
+ first(css, wait: 60).click
end
def wait_for_latest_pipeline_success
diff --git a/qa/qa/page/project/settings/advanced.rb b/qa/qa/page/project/settings/advanced.rb
index 3a5067a9541..c95c47fa560 100644
--- a/qa/qa/page/project/settings/advanced.rb
+++ b/qa/qa/page/project/settings/advanced.rb
@@ -12,6 +12,9 @@ module QA
element :project_path_field
element :change_path_button
element :transfer_button
+ end
+
+ view 'app/views/projects/settings/_archive.html.haml' do
element :archive_project_link
element :unarchive_project_link
end
diff --git a/qa/qa/page/project/settings/deploy_keys.rb b/qa/qa/page/project/settings/deploy_keys.rb
index b8d961274a9..602bfc64710 100644
--- a/qa/qa/page/project/settings/deploy_keys.rb
+++ b/qa/qa/page/project/settings/deploy_keys.rb
@@ -12,7 +12,7 @@ module QA
view 'app/assets/javascripts/deploy_keys/components/app.vue' do
element :deploy_keys_section, /class=".*deploy\-keys.*"/ # rubocop:disable QA/ElementWithPattern
- element :project_deploy_keys, 'class="qa-project-deploy-keys"' # rubocop:disable QA/ElementWithPattern
+ element :project_deploy_keys
end
view 'app/assets/javascripts/deploy_keys/components/key.vue' do
diff --git a/qa/qa/page/search/results.rb b/qa/qa/page/search/results.rb
index b9b18abf660..2f99d8da784 100644
--- a/qa/qa/page/search/results.rb
+++ b/qa/qa/page/search/results.rb
@@ -5,6 +5,7 @@ module QA::Page
class Results < QA::Page::Base
view 'app/views/search/_category.html.haml' do
element :code_tab
+ element :projects_tab
end
view 'app/views/search/results/_blob_data.html.haml' do
@@ -13,21 +14,33 @@ module QA::Page
element :file_text_content
end
+ view 'app/views/shared/projects/_project.html.haml' do
+ element :project
+ end
+
def switch_to_code
click_element(:code_tab)
end
+ def switch_to_projects
+ click_element(:projects_tab)
+ end
+
def has_file_in_project?(file_name, project_name)
- has_element? :result_item_content, text: "#{project_name}: #{file_name}"
+ has_element?(:result_item_content, text: "#{project_name}: #{file_name}")
end
def has_file_with_content?(file_name, file_text)
- within_element_by_index :result_item_content, 0 do
- false unless has_element? :file_title_content, text: file_name
+ within_element_by_index(:result_item_content, 0) do
+ false unless has_element?(:file_title_content, text: file_name)
- has_element? :file_text_content, text: file_text
+ has_element?(:file_text_content, text: file_text)
end
end
+
+ def has_project?(project_name)
+ has_element?(:project, project_name: project_name)
+ end
end
end
end
diff --git a/qa/qa/page/settings/common.rb b/qa/qa/page/settings/common.rb
index 2d7b41c76e1..bd1070158f0 100644
--- a/qa/qa/page/settings/common.rb
+++ b/qa/qa/page/settings/common.rb
@@ -6,7 +6,7 @@ module QA
module Common
# Click the Expand button present in the specified section
#
- # @param [Symbol] and `element` name defined in a `view` block
+ # @param [Symbol] element_name `element` name defined in a `view` block
def expand_section(element_name)
within_element(element_name) do
# Because it is possible to click the button before the JS toggle code is bound
@@ -14,6 +14,7 @@ module QA
click_button 'Expand' unless has_css?('button', text: 'Collapse', wait: 1)
has_content?('Collapse')
+ finished_loading?
end
yield if block_given?
diff --git a/qa/qa/resource/api_fabricator.rb b/qa/qa/resource/api_fabricator.rb
index e4f708dc251..e6057433b55 100644
--- a/qa/qa/resource/api_fabricator.rb
+++ b/qa/qa/resource/api_fabricator.rb
@@ -19,8 +19,8 @@ module QA
def api_support?
respond_to?(:api_get_path) &&
- respond_to?(:api_post_path) &&
- respond_to?(:api_post_body)
+ (respond_to?(:api_post_path) && respond_to?(:api_post_body)) ||
+ (respond_to?(:api_put_path) && respond_to?(:api_put_body))
end
def fabricate_via_api!
@@ -84,11 +84,23 @@ module QA
process_api_response(parse_body(response))
end
+ def api_put
+ response = put(
+ Runtime::API::Request.new(api_client, api_put_path).url,
+ api_put_body)
+
+ unless response.code == HTTP_STATUS_OK
+ raise ResourceFabricationFailedError, "Updating #{self.class.name} using the API failed (#{response.code}) with `#{response}`."
+ end
+
+ process_api_response(parse_body(response))
+ end
+
def api_delete
url = Runtime::API::Request.new(api_client, api_delete_path).url
response = delete(url)
- unless response.code == HTTP_STATUS_NO_CONTENT
+ unless [HTTP_STATUS_NO_CONTENT, HTTP_STATUS_ACCEPTED].include? response.code
raise ResourceNotDeletedError, "Resource at #{url} could not be deleted (#{response.code}): `#{response}`."
end
diff --git a/qa/qa/resource/base.rb b/qa/qa/resource/base.rb
index ae20ca1a98e..3bb62703290 100644
--- a/qa/qa/resource/base.rb
+++ b/qa/qa/resource/base.rb
@@ -64,7 +64,7 @@ module QA
end
def visit!
- Runtime::Logger.debug(%Q[Visiting #{self.class.name} at "#{web_url}"]) if Runtime::Env.debug?
+ Runtime::Logger.debug(%Q[Visiting #{self.class.name} at "#{web_url}"])
Support::Retrier.retry_until do
visit(web_url)
diff --git a/qa/qa/resource/deploy_token.rb b/qa/qa/resource/deploy_token.rb
index f0f0da27412..f97e76cc322 100644
--- a/qa/qa/resource/deploy_token.rb
+++ b/qa/qa/resource/deploy_token.rb
@@ -6,16 +6,16 @@ module QA
attr_accessor :name, :expires_at
attribute :username do
- Page::Project::Settings::Repository.perform do |page| # rubocop:disable QA/AmbiguousPageObjectName
- page.expand_deploy_tokens do |token|
+ Page::Project::Settings::Repository.perform do |repository_page|
+ repository_page.expand_deploy_tokens do |token|
token.token_username
end
end
end
attribute :password do
- Page::Project::Settings::Repository.perform do |page| # rubocop:disable QA/AmbiguousPageObjectName
- page.expand_deploy_tokens do |token|
+ Page::Project::Settings::Repository.perform do |repository_page|
+ repository_page.expand_deploy_tokens do |token|
token.token_password
end
end
diff --git a/qa/qa/resource/file.rb b/qa/qa/resource/file.rb
index a870e7d5d26..76c4c71c48d 100644
--- a/qa/qa/resource/file.rb
+++ b/qa/qa/resource/file.rb
@@ -27,11 +27,11 @@ module QA
Page::Project::Show.perform(&:create_first_new_file!)
- Page::File::Form.perform do |page| # rubocop:disable QA/AmbiguousPageObjectName
- page.add_name(@name)
- page.add_content(@content)
- page.add_commit_message(@commit_message)
- page.commit_changes
+ Page::File::Form.perform do |form|
+ form.add_name(@name)
+ form.add_content(@content)
+ form.add_commit_message(@commit_message)
+ form.commit_changes
end
end
diff --git a/qa/qa/resource/fork.rb b/qa/qa/resource/fork.rb
index d203e8eb264..73f1b0b9695 100644
--- a/qa/qa/resource/fork.rb
+++ b/qa/qa/resource/fork.rb
@@ -41,8 +41,8 @@ module QA
fork_new.choose_namespace(user.name)
end
- Page::Layout::Banner.perform do |page| # rubocop:disable QA/AmbiguousPageObjectName
- page.has_notice?('The project was successfully forked.')
+ Page::Layout::Banner.perform do |banner|
+ banner.has_notice?('The project was successfully forked.')
end
populate(:project)
diff --git a/qa/qa/resource/group.rb b/qa/qa/resource/group.rb
index 7511396251d..c12e9dd146b 100644
--- a/qa/qa/resource/group.rb
+++ b/qa/qa/resource/group.rb
@@ -70,6 +70,10 @@ module QA
}
end
+ def api_delete_path
+ "/groups/#{id}"
+ end
+
def full_path
sandbox.path + ' / ' + path
end
diff --git a/qa/qa/resource/kubernetes_cluster.rb b/qa/qa/resource/kubernetes_cluster.rb
index 6778094cee4..1930e0465b2 100644
--- a/qa/qa/resource/kubernetes_cluster.rb
+++ b/qa/qa/resource/kubernetes_cluster.rb
@@ -24,36 +24,36 @@ module QA
Page::Project::Operations::Kubernetes::Add.perform(
&:add_existing_cluster)
- Page::Project::Operations::Kubernetes::AddExisting.perform do |page| # rubocop:disable QA/AmbiguousPageObjectName
- page.set_cluster_name(@cluster.cluster_name)
- page.set_api_url(@cluster.api_url)
- page.set_ca_certificate(@cluster.ca_certificate)
- page.set_token(@cluster.token)
- page.uncheck_rbac! unless @cluster.rbac
- page.add_cluster!
+ Page::Project::Operations::Kubernetes::AddExisting.perform do |cluster_page|
+ cluster_page.set_cluster_name(@cluster.cluster_name)
+ cluster_page.set_api_url(@cluster.api_url)
+ cluster_page.set_ca_certificate(@cluster.ca_certificate)
+ cluster_page.set_token(@cluster.token)
+ cluster_page.uncheck_rbac! unless @cluster.rbac
+ cluster_page.add_cluster!
end
if @install_helm_tiller
- Page::Project::Operations::Kubernetes::Show.perform do |page| # rubocop:disable QA/AmbiguousPageObjectName
+ Page::Project::Operations::Kubernetes::Show.perform do |show|
# We must wait a few seconds for permissions to be set up correctly for new cluster
sleep 10
# Helm must be installed before everything else
- page.install!(:helm)
- page.await_installed(:helm)
+ show.install!(:helm)
+ show.await_installed(:helm)
- page.install!(:ingress) if @install_ingress
- page.install!(:prometheus) if @install_prometheus
- page.install!(:runner) if @install_runner
+ show.install!(:ingress) if @install_ingress
+ show.install!(:prometheus) if @install_prometheus
+ show.install!(:runner) if @install_runner
- page.await_installed(:ingress) if @install_ingress
- page.await_installed(:prometheus) if @install_prometheus
- page.await_installed(:runner) if @install_runner
+ show.await_installed(:ingress) if @install_ingress
+ show.await_installed(:prometheus) if @install_prometheus
+ show.await_installed(:runner) if @install_runner
if @install_ingress
populate(:ingress_ip)
- page.set_domain("#{ingress_ip}.nip.io")
- page.save_domain
+ show.set_domain("#{ingress_ip}.nip.io")
+ show.save_domain
end
end
end
diff --git a/qa/qa/resource/label.rb b/qa/qa/resource/label.rb
index a9177ef3df6..6b0b0184130 100644
--- a/qa/qa/resource/label.rb
+++ b/qa/qa/resource/label.rb
@@ -28,11 +28,11 @@ module QA
Page::Project::Menu.perform(&:go_to_labels)
Page::Label::Index.perform(&:click_new_label_button)
- Page::Label::New.perform do |page| # rubocop:disable QA/AmbiguousPageObjectName
- page.fill_title(@title)
- page.fill_description(@description)
- page.fill_color(@color)
- page.click_label_create_button
+ Page::Label::New.perform do |new_page|
+ new_page.fill_title(@title)
+ new_page.fill_description(@description)
+ new_page.fill_color(@color)
+ new_page.click_label_create_button
end
end
diff --git a/qa/qa/resource/merge_request.rb b/qa/qa/resource/merge_request.rb
index 1a6de8de456..24fb96a20a2 100644
--- a/qa/qa/resource/merge_request.rb
+++ b/qa/qa/resource/merge_request.rb
@@ -65,17 +65,17 @@ module QA
project.visit!
Page::Project::Show.perform(&:new_merge_request)
- Page::MergeRequest::New.perform do |new|
- new.fill_title(@title)
- new.fill_description(@description)
- new.choose_milestone(@milestone) if @milestone
- new.assign_to_me if @assignee == 'me'
+ Page::MergeRequest::New.perform do |new_page|
+ new_page.fill_title(@title)
+ new_page.fill_description(@description)
+ new_page.choose_milestone(@milestone) if @milestone
+ new_page.assign_to_me if @assignee == 'me'
labels.each do |label|
- new.select_label(label)
+ new_page.select_label(label)
end
- new.add_approval_rules(approval_rules) if approval_rules
+ new_page.add_approval_rules(approval_rules) if approval_rules
- new.create_merge_request
+ new_page.create_merge_request
end
end
diff --git a/qa/qa/resource/personal_access_token.rb b/qa/qa/resource/personal_access_token.rb
index f5bebd25202..3b61b3f337c 100644
--- a/qa/qa/resource/personal_access_token.rb
+++ b/qa/qa/resource/personal_access_token.rb
@@ -16,10 +16,10 @@ module QA
Page::Main::Menu.perform(&:click_settings_link)
Page::Profile::Menu.perform(&:click_access_tokens)
- Page::Profile::PersonalAccessTokens.perform do |page| # rubocop:disable QA/AmbiguousPageObjectName
- page.fill_token_name(name || 'api-test-token')
- page.check_api
- page.click_create_token_button
+ Page::Profile::PersonalAccessTokens.perform do |token_page|
+ token_page.fill_token_name(name || 'api-test-token')
+ token_page.check_api
+ token_page.click_create_token_button
end
end
end
diff --git a/qa/qa/resource/project.rb b/qa/qa/resource/project.rb
index 3bebe2aaeda..f2ca0e0b8fd 100644
--- a/qa/qa/resource/project.rb
+++ b/qa/qa/resource/project.rb
@@ -32,14 +32,14 @@ module QA
end
attribute :repository_ssh_location do
- Page::Project::Show.perform do |page| # rubocop:disable QA/AmbiguousPageObjectName
- page.repository_clone_ssh_location
+ Page::Project::Show.perform do |show|
+ show.repository_clone_ssh_location
end
end
attribute :repository_http_location do
- Page::Project::Show.perform do |page| # rubocop:disable QA/AmbiguousPageObjectName
- page.repository_clone_http_location
+ Page::Project::Show.perform do |show|
+ show.repository_clone_http_location
end
end
@@ -48,7 +48,7 @@ module QA
@standalone = false
@description = 'My awesome project'
@initialize_with_readme = false
- @auto_devops_enabled = true
+ @auto_devops_enabled = false
@visibility = 'public'
end
@@ -62,13 +62,13 @@ module QA
Page::Group::Show.perform(&:go_to_new_project)
end
- Page::Project::New.perform do |page| # rubocop:disable QA/AmbiguousPageObjectName
- page.choose_test_namespace
- page.choose_name(@name)
- page.add_description(@description)
- page.set_visibility(@visibility)
- page.enable_initialize_with_readme if @initialize_with_readme
- page.create_new_project
+ Page::Project::New.perform do |new_page|
+ new_page.choose_test_namespace
+ new_page.choose_name(@name)
+ new_page.add_description(@description)
+ new_page.set_visibility(@visibility)
+ new_page.enable_initialize_with_readme if @initialize_with_readme
+ new_page.create_new_project
end
end
@@ -115,8 +115,8 @@ module QA
post_body
end
- def runners
- response = get Runtime::API::Request.new(api_client, api_runners_path).url
+ def runners(tag_list: nil)
+ response = get Runtime::API::Request.new(api_client, "#{api_runners_path}?tag_list=#{tag_list.compact.join(',')}").url
parse_body(response)
end
diff --git a/qa/qa/resource/project_imported_from_github.rb b/qa/qa/resource/project_imported_from_github.rb
index e4a9a8bcd3d..3e25235e6b8 100644
--- a/qa/qa/resource/project_imported_from_github.rb
+++ b/qa/qa/resource/project_imported_from_github.rb
@@ -17,18 +17,14 @@ module QA
Page::Group::Show.perform(&:go_to_new_project)
- Page::Project::New.perform do |page| # rubocop:disable QA/AmbiguousPageObjectName
- page.click_import_project
- end
+ Page::Project::New.perform(&:click_import_project)
- Page::Project::New.perform do |page| # rubocop:disable QA/AmbiguousPageObjectName
- page.click_github_link
- end
+ Page::Project::New.perform(&:click_github_link)
- Page::Project::Import::Github.perform do |page| # rubocop:disable QA/AmbiguousPageObjectName
- page.add_personal_access_token(@personal_access_token)
- page.list_repos
- page.import!(@github_repository_path, @name)
+ Page::Project::Import::Github.perform do |import_page|
+ import_page.add_personal_access_token(@personal_access_token)
+ import_page.list_repos
+ import_page.import!(@github_repository_path, @name)
end
end
end
diff --git a/qa/qa/resource/project_milestone.rb b/qa/qa/resource/project_milestone.rb
index 39077b64a22..11aad4ae65f 100644
--- a/qa/qa/resource/project_milestone.rb
+++ b/qa/qa/resource/project_milestone.rb
@@ -18,9 +18,9 @@ module QA
def fabricate!
project.visit!
- Page::Project::Menu.perform do |page| # rubocop:disable QA/AmbiguousPageObjectName
- page.click_issues
- page.click_milestones
+ Page::Project::Menu.perform do |menu|
+ menu.click_issues
+ menu.click_milestones
end
Page::Project::Milestone::Index.perform(&:click_new_milestone)
diff --git a/qa/qa/resource/runner.rb b/qa/qa/resource/runner.rb
index 102c1ec83f5..d1b4e8f7d54 100644
--- a/qa/qa/resource/runner.rb
+++ b/qa/qa/resource/runner.rb
@@ -41,7 +41,17 @@ module QA
end
def remove_via_api!
- @id = project.runners.find { |runner| runner[:description] == name }[:id]
+ runners = project.runners(tag_list: tags)
+ unless runners && !runners.empty?
+ raise "Project #{project.path_with_namespace} has no runners with tags #{tags}."
+ end
+
+ this_runner = runners.find { |runner| runner[:description] == name }
+ unless this_runner
+ raise "Project #{project.path_with_namespace} does not have a runner with a description matching #{name} and tags #{tags}. Runners available: #{runners}"
+ end
+
+ @id = this_runner[:id]
super
diff --git a/qa/qa/resource/settings/hashed_storage.rb b/qa/qa/resource/settings/hashed_storage.rb
index 08bb95cfd4b..40c06768ffe 100644
--- a/qa/qa/resource/settings/hashed_storage.rb
+++ b/qa/qa/resource/settings/hashed_storage.rb
@@ -8,7 +8,7 @@ module QA
raise ArgumentError unless traits.include?(:enabled)
Page::Main::Login.perform(&:sign_in_using_credentials)
- Page::Main::Menu.perform(&:click_admin_area)
+ Page::Main::Menu.perform(&:go_to_admin_area)
Page::Admin::Menu.perform(&:go_to_repository_settings)
Page::Admin::Settings::Repository.perform do |setting|
diff --git a/qa/qa/resource/snippet.rb b/qa/qa/resource/snippet.rb
index 23c17fdb32a..39be5e5cb7d 100644
--- a/qa/qa/resource/snippet.rb
+++ b/qa/qa/resource/snippet.rb
@@ -16,13 +16,13 @@ module QA
def fabricate!
Page::Dashboard::Snippet::Index.perform(&:go_to_new_snippet_page)
- Page::Dashboard::Snippet::New.perform do |page| # rubocop:disable QA/AmbiguousPageObjectName
- page.fill_title(@title)
- page.fill_description(@description)
- page.set_visibility(@visibility)
- page.fill_file_name(@file_name)
- page.fill_file_content(@file_content)
- page.click_create_snippet_button
+ Page::Dashboard::Snippet::New.perform do |new_page|
+ new_page.fill_title(@title)
+ new_page.fill_description(@description)
+ new_page.set_visibility(@visibility)
+ new_page.fill_file_name(@file_name)
+ new_page.fill_file_content(@file_content)
+ new_page.click_create_snippet_button
end
end
end
diff --git a/qa/qa/resource/ssh_key.rb b/qa/qa/resource/ssh_key.rb
index 9b6494c11bc..c140cb9ca62 100644
--- a/qa/qa/resource/ssh_key.rb
+++ b/qa/qa/resource/ssh_key.rb
@@ -17,8 +17,8 @@ module QA
Page::Main::Menu.perform(&:click_settings_link)
Page::Profile::Menu.perform(&:click_ssh_keys)
- Page::Profile::SSHKeys.perform do |page| # rubocop:disable QA/AmbiguousPageObjectName
- page.add_key(public_key, title)
+ Page::Profile::SSHKeys.perform do |profile_page|
+ profile_page.add_key(public_key, title)
end
end
end
diff --git a/qa/qa/resource/user.rb b/qa/qa/resource/user.rb
index bdbe5f3ef51..9544a3e80b3 100644
--- a/qa/qa/resource/user.rb
+++ b/qa/qa/resource/user.rb
@@ -79,7 +79,7 @@ module QA
def api_delete
super
- QA::Runtime::Logger.debug("Deleted user '#{username}'") if Runtime::Env.debug?
+ QA::Runtime::Logger.debug("Deleted user '#{username}'")
end
def api_delete_path
diff --git a/qa/qa/runtime/api/client.rb b/qa/qa/runtime/api/client.rb
index 83fbb8f15d2..b9a3c9184aa 100644
--- a/qa/qa/runtime/api/client.rb
+++ b/qa/qa/runtime/api/client.rb
@@ -25,6 +25,23 @@ module QA
end
end
+ def self.as_admin
+ if Runtime::Env.admin_personal_access_token
+ Runtime::API::Client.new(:gitlab, personal_access_token: Runtime::Env.admin_personal_access_token)
+ else
+ user = Resource::User.fabricate_via_api! do |user|
+ user.username = Runtime::User.admin_username
+ user.password = Runtime::User.admin_password
+ end
+
+ unless user.admin?
+ raise AuthorizationError, "User '#{user.username}' is not an administrator."
+ end
+
+ Runtime::API::Client.new(:gitlab, user: user)
+ end
+ end
+
private
def enable_ip_limits
@@ -32,7 +49,7 @@ module QA
Runtime::Browser.visit(@address, Page::Main::Login)
Page::Main::Login.perform(&:sign_in_using_admin_credentials)
- Page::Main::Menu.perform(&:click_admin_area)
+ Page::Main::Menu.perform(&:go_to_admin_area)
Page::Admin::Menu.perform(&:go_to_network_settings)
Page::Admin::Settings::Network.perform do |setting|
diff --git a/qa/qa/runtime/browser.rb b/qa/qa/runtime/browser.rb
index 7e45e5e86ea..69ba90702be 100644
--- a/qa/qa/runtime/browser.rb
+++ b/qa/qa/runtime/browser.rb
@@ -132,6 +132,10 @@ module QA
config.default_max_wait_time = CAPYBARA_MAX_WAIT_TIME
# https://github.com/mattheworiordan/capybara-screenshot/issues/164
config.save_path = ::File.expand_path('../../tmp', __dir__)
+
+ # Cabybara 3 does not normalize text by default, so older tests
+ # fail because of unexpected line breaks and other white space
+ config.default_normalize_ws = true
end
end
@@ -152,6 +156,8 @@ module QA
def perform(&block)
visit(url)
+ simulate_slow_connection if Runtime::Env.simulate_slow_connection?
+
page_class.validate_elements_present!
if QA::Runtime::Env.qa_cookies
@@ -174,6 +180,28 @@ module QA
def clear!
visit(url)
reset_session!
+ @network_conditions_configured = false
+ end
+
+ private
+
+ def simulate_slow_connection
+ return if @network_conditions_configured
+
+ QA::Runtime::Logger.info(
+ <<~MSG.tr("\n", " ")
+ Simulating a slow connection with additional latency
+ of #{Runtime::Env.slow_connection_latency} ms and a maximum
+ throughput of #{Runtime::Env.slow_connection_throughput} kbps
+ MSG
+ )
+
+ Capybara.current_session.driver.browser.network_conditions = {
+ latency: Runtime::Env.slow_connection_latency,
+ throughput: Runtime::Env.slow_connection_throughput * 1000
+ }
+
+ @network_conditions_configured = true
end
end
end
diff --git a/qa/qa/runtime/env.rb b/qa/qa/runtime/env.rb
index bcd2a225469..184ccd3ef07 100644
--- a/qa/qa/runtime/env.rb
+++ b/qa/qa/runtime/env.rb
@@ -226,7 +226,7 @@ module QA
end
def gcloud_region
- ENV.fetch('GCLOUD_REGION')
+ ENV['GCLOUD_REGION']
end
def gcloud_num_nodes
@@ -261,10 +261,30 @@ module QA
ENV['QA_RUNTIME_SCENARIO_ATTRIBUTES']
end
+ def disable_rspec_retry?
+ enabled?(ENV['QA_DISABLE_RSPEC_RETRY'], default: false)
+ end
+
+ def simulate_slow_connection?
+ enabled?(ENV['QA_SIMULATE_SLOW_CONNECTION'], default: false)
+ end
+
+ def slow_connection_latency
+ ENV.fetch('QA_SLOW_CONNECTION_LATENCY_MS', 2000).to_i
+ end
+
+ def slow_connection_throughput
+ ENV.fetch('QA_SLOW_CONNECTION_THROUGHPUT_KBPS', 32).to_i
+ end
+
def gitlab_qa_loop_runner_minutes
ENV.fetch('GITLAB_QA_LOOP_RUNNER_MINUTES', 1).to_i
end
+ def mailhog_hostname
+ ENV['MAILHOG_HOSTNAME']
+ end
+
private
def remote_grid_credentials
diff --git a/qa/qa/runtime/ip_address.rb b/qa/qa/runtime/ip_address.rb
new file mode 100644
index 00000000000..f370882e5c7
--- /dev/null
+++ b/qa/qa/runtime/ip_address.rb
@@ -0,0 +1,33 @@
+# frozen_string_literal: true
+require 'socket'
+
+module QA
+ module Runtime
+ module IPAddress
+ include Support::Api
+ HostUnreachableError = Class.new(StandardError)
+
+ LOOPBACK_ADDRESS = '127.0.0.1'
+ PUBLIC_IP_ADDRESS_API = "https://api.ipify.org"
+
+ def fetch_current_ip_address
+ # When running on CI against a live environment such as staging.gitlab.com,
+ # we use the public facing IP address
+ ip_address = if Env.running_in_ci? && !URI.parse(Scenario.gitlab_address).host.include?('test')
+ response = get(PUBLIC_IP_ADDRESS_API)
+ raise HostUnreachableError, "#{PUBLIC_IP_ADDRESS_API} is unreachable" unless response.code == Support::Api::HTTP_STATUS_OK
+
+ response.body
+ elsif page.current_host.include?('localhost')
+ LOOPBACK_ADDRESS
+ else
+ Socket.ip_address_list.detect { |intf| intf.ipv4_private? }.ip_address
+ end
+
+ QA::Runtime::Logger.info "Current IP address: #{ip_address}"
+
+ ip_address
+ end
+ end
+ end
+end
diff --git a/qa/qa/runtime/mail_hog.rb b/qa/qa/runtime/mail_hog.rb
new file mode 100644
index 00000000000..899450a1540
--- /dev/null
+++ b/qa/qa/runtime/mail_hog.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+module QA
+ module Runtime
+ module MailHog
+ def self.base_url
+ host = QA::Runtime::Env.mailhog_hostname || 'localhost'
+ "http://#{host}:8025"
+ end
+
+ def self.api_messages_url
+ "#{base_url}/api/v2/messages"
+ end
+ end
+ end
+end
diff --git a/qa/qa/runtime/search.rb b/qa/qa/runtime/search.rb
new file mode 100644
index 00000000000..faa110c96e7
--- /dev/null
+++ b/qa/qa/runtime/search.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+module QA
+ module Runtime
+ module Search
+ extend self
+ extend Support::Api
+
+ ElasticSearchServerError = Class.new(RuntimeError)
+
+ def elasticsearch_responding?
+ QA::Runtime::Logger.debug("Attempting to search via Elasticsearch...")
+
+ QA::Support::Retrier.retry_on_exception do
+ # We don't care about the results of the search, we just need
+ # any search that uses Elasticsearch, not the native search
+ # The Elasticsearch-only scopes are blobs, wiki_blobs, and commits.
+ request = Runtime::API::Request.new(api_client, "/search?scope=blobs&search=foo")
+ response = get(request.url)
+
+ unless response.code == singleton_class::HTTP_STATUS_OK
+ raise ElasticSearchServerError, "Search attempt failed. Request returned (#{response.code}): `#{response}`."
+ end
+
+ true
+ end
+ end
+
+ private
+
+ def api_client
+ @api_client ||= Runtime::API::Client.new(:gitlab)
+ end
+ end
+ end
+end
diff --git a/qa/qa/scenario/test/integration/smtp.rb b/qa/qa/scenario/test/integration/smtp.rb
new file mode 100644
index 00000000000..a27bb5f9368
--- /dev/null
+++ b/qa/qa/scenario/test/integration/smtp.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+module QA
+ module Scenario
+ module Test
+ module Integration
+ class SMTP < Test::Instance::All
+ tags :smtp
+ end
+ end
+ end
+ end
+end
diff --git a/qa/qa/service/cluster_provider/gcloud.rb b/qa/qa/service/cluster_provider/gcloud.rb
index 9c82151666c..f0fb5eee6e3 100644
--- a/qa/qa/service/cluster_provider/gcloud.rb
+++ b/qa/qa/service/cluster_provider/gcloud.rb
@@ -1,5 +1,7 @@
# frozen_string_literal: true
+require 'active_support/inflector'
+
module QA
module Service
module ClusterProvider
@@ -8,8 +10,22 @@ module QA
find_executable('gcloud') || raise("You must first install `gcloud` executable to run these tests.")
end
+ def initialize(rbac:)
+ super(rbac: rbac)
+ @attempts = 0
+ @available_regions = %w(
+ asia-east1 asia-east2
+ asia-northeast1 asia-south1
+ asia-southeast1 australia-southeast1
+ europe-west1 europe-west2 europe-west4
+ northamerica-northeast1 southamerica-east1
+ us-central1 us-east1 us-east4
+ us-west1 us-west2
+ )
+ end
+
def set_credentials(admin_user)
- master_auth = JSON.parse(`gcloud container clusters describe #{cluster_name} --region #{Runtime::Env.gcloud_region} --format 'json(masterAuth.username, masterAuth.password)'`)
+ master_auth = JSON.parse(`gcloud container clusters describe #{cluster_name} --region #{@region} --format 'json(masterAuth.username, masterAuth.password)'`)
shell <<~CMD.tr("\n", ' ')
kubectl config set-credentials #{admin_user}
@@ -58,29 +74,41 @@ module QA
end
def create_cluster
+ @region = get_region
+
shell <<~CMD.tr("\n", ' ')
gcloud container clusters
create #{cluster_name}
#{auth_options}
--enable-basic-auth
- --region #{Runtime::Env.gcloud_region}
+ --region #{@region}
--disk-size 10GB
--num-nodes #{Runtime::Env.gcloud_num_nodes}
&& gcloud container clusters
get-credentials
- --region #{Runtime::Env.gcloud_region}
+ --region #{@region}
#{cluster_name}
CMD
+ rescue QA::Service::Shellout::CommandError
+ @attempts += 1
+
+ retry unless @attempts > 1
+
+ raise $!, "Tried and failed to provision the cluster #{@attempts} #{"time".pluralize(@attempts)}.", $!.backtrace
end
def delete_cluster
shell <<~CMD.tr("\n", ' ')
gcloud container clusters delete
- --region #{Runtime::Env.gcloud_region}
+ --region #{@region}
#{cluster_name}
--quiet --async
CMD
end
+
+ def get_region
+ Runtime::Env.gcloud_region || @available_regions.delete(@available_regions.sample)
+ end
end
end
end
diff --git a/qa/qa/specs/features/browser_ui/1_manage/group/create_group_with_mattermost_team_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/group/create_group_with_mattermost_team_spec.rb
index de33349a8b2..7143cc574b8 100644
--- a/qa/qa/specs/features/browser_ui/1_manage/group/create_group_with_mattermost_team_spec.rb
+++ b/qa/qa/specs/features/browser_ui/1_manage/group/create_group_with_mattermost_team_spec.rb
@@ -4,14 +4,13 @@ module QA
context 'Configure', :orchestrated, :mattermost do
describe 'Mattermost support' do
it 'user creates a group with a mattermost team' do
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
+ Flow::Login.sign_in
Page::Main::Menu.perform(&:go_to_groups)
- Page::Dashboard::Groups.perform do |page| # rubocop:disable QA/AmbiguousPageObjectName
- page.click_new_group
+ Page::Dashboard::Groups.perform do |groups|
+ groups.click_new_group
- expect(page).to have_content(
+ expect(groups).to have_content(
/Create a Mattermost team for this group/
)
end
diff --git a/qa/qa/specs/features/browser_ui/1_manage/group/transfer_project_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/group/transfer_project_spec.rb
index c9acd7df776..6f75940e1f0 100644
--- a/qa/qa/specs/features/browser_ui/1_manage/group/transfer_project_spec.rb
+++ b/qa/qa/specs/features/browser_ui/1_manage/group/transfer_project_spec.rb
@@ -4,8 +4,7 @@ module QA
context 'Manage' do
describe 'Project transfer between groups' do
it 'user transfers a project between groups' do
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
+ Flow::Login.sign_in
source_group = Resource::Group.fabricate_via_api! do |group|
group.path = 'source-group'
diff --git a/qa/qa/specs/features/browser_ui/1_manage/login/log_in_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/login/log_in_spec.rb
index 6556c28ccab..1050005a231 100644
--- a/qa/qa/specs/features/browser_ui/1_manage/login/log_in_spec.rb
+++ b/qa/qa/specs/features/browser_ui/1_manage/login/log_in_spec.rb
@@ -4,8 +4,7 @@ module QA
context 'Manage', :smoke do
describe 'basic user login' do
it 'user logs in using basic credentials and logs out' do
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
+ Flow::Login.sign_in
Page::Main::Menu.perform do |menu|
expect(menu).to have_personal_area
@@ -14,11 +13,11 @@ module QA
Support::Retrier.retry_until(sleep_interval: 0.5) do
Page::Main::Menu.perform(&:sign_out)
- Page::Main::Login.perform(&:has_sign_in_tab?)
+ Page::Main::Login.perform(&:can_sign_in?)
end
Page::Main::Login.perform do |form|
- expect(form.sign_in_tab?).to be(true)
+ expect(form.can_sign_in?).to be(true)
end
end
end
diff --git a/qa/qa/specs/features/browser_ui/1_manage/login/log_into_gitlab_via_ldap_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/login/log_into_gitlab_via_ldap_spec.rb
index 10cd8470a8f..46a0f1a4c8b 100644
--- a/qa/qa/specs/features/browser_ui/1_manage/login/log_into_gitlab_via_ldap_spec.rb
+++ b/qa/qa/specs/features/browser_ui/1_manage/login/log_into_gitlab_via_ldap_spec.rb
@@ -4,8 +4,7 @@ module QA
context 'Manage', :orchestrated, :ldap_no_tls, :ldap_tls do
describe 'LDAP login' do
it 'user logs into GitLab using LDAP credentials' do
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
+ Flow::Login.sign_in
Page::Main::Menu.perform do |menu|
expect(menu).to have_personal_area
diff --git a/qa/qa/specs/features/browser_ui/1_manage/login/log_into_mattermost_via_gitlab_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/login/log_into_mattermost_via_gitlab_spec.rb
index babe6f7741f..a680cfa96bd 100644
--- a/qa/qa/specs/features/browser_ui/1_manage/login/log_into_mattermost_via_gitlab_spec.rb
+++ b/qa/qa/specs/features/browser_ui/1_manage/login/log_into_mattermost_via_gitlab_spec.rb
@@ -4,15 +4,14 @@ module QA
context 'Manage', :orchestrated, :mattermost do
describe 'Mattermost login' do
it 'user logs into Mattermost using GitLab OAuth' do
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
+ Flow::Login.sign_in
Support::Retrier.retry_on_exception do
Runtime::Browser.visit(:mattermost, Page::Mattermost::Login)
Page::Mattermost::Login.perform(&:sign_in_using_oauth)
- Page::Mattermost::Main.perform do |page| # rubocop:disable QA/AmbiguousPageObjectName
- expect(page).to have_content(/(Welcome to: Mattermost|Logout GitLab Mattermost)/)
+ Page::Mattermost::Main.perform do |mattermost|
+ expect(mattermost).to have_content(/(Welcome to: Mattermost|Logout GitLab Mattermost)/)
end
end
end
diff --git a/qa/qa/specs/features/browser_ui/1_manage/login/login_via_oauth_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/login/login_via_oauth_spec.rb
index a118176eb8a..4fd80c353fb 100644
--- a/qa/qa/specs/features/browser_ui/1_manage/login/login_via_oauth_spec.rb
+++ b/qa/qa/specs/features/browser_ui/1_manage/login/login_via_oauth_spec.rb
@@ -1,7 +1,8 @@
# frozen_string_literal: true
module QA
- context 'Manage', :orchestrated, :oauth do
+ # Failure issue: https://gitlab.com/gitlab-org/gitlab/issues/36305
+ context 'Manage', :orchestrated, :oauth, :skip do
describe 'OAuth login' do
it 'User logs in to GitLab with GitHub OAuth' do
Runtime::Browser.visit(:gitlab, Page::Main::Login)
diff --git a/qa/qa/specs/features/browser_ui/1_manage/project/add_project_member_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/project/add_project_member_spec.rb
index 07298b8a9be..9a273e9cd1c 100644
--- a/qa/qa/specs/features/browser_ui/1_manage/project/add_project_member_spec.rb
+++ b/qa/qa/specs/features/browser_ui/1_manage/project/add_project_member_spec.rb
@@ -4,8 +4,7 @@ module QA
context 'Manage' do
describe 'Add project member' do
it 'user adds project member' do
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
+ Flow::Login.sign_in
user = Resource::User.fabricate_or_use(Runtime::Env.gitlab_qa_username_1, Runtime::Env.gitlab_qa_password_1)
@@ -15,8 +14,8 @@ module QA
project.visit!
Page::Project::Menu.perform(&:go_to_members_settings)
- Page::Project::Settings::Members.perform do |page| # rubocop:disable QA/AmbiguousPageObjectName
- page.add_member(user.username)
+ Page::Project::Settings::Members.perform do |members|
+ members.add_member(user.username)
end
expect(page).to have_content(/@#{user.username}(\n| )?Given access/)
diff --git a/qa/qa/specs/features/browser_ui/1_manage/project/create_project_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/project/create_project_spec.rb
index fbe857dc2a5..9ca933a957f 100644
--- a/qa/qa/specs/features/browser_ui/1_manage/project/create_project_spec.rb
+++ b/qa/qa/specs/features/browser_ui/1_manage/project/create_project_spec.rb
@@ -4,8 +4,7 @@ module QA
context 'Manage', :smoke do
describe 'Project creation' do
it 'user creates a new project' do
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
+ Flow::Login.sign_in
created_project = Resource::Project.fabricate_via_browser_ui! do |project|
project.name = 'awesome-project'
diff --git a/qa/qa/specs/features/browser_ui/1_manage/project/import_github_repo_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/project/import_github_repo_spec.rb
index 4f68500974e..e0045a4d8a1 100644
--- a/qa/qa/specs/features/browser_ui/1_manage/project/import_github_repo_spec.rb
+++ b/qa/qa/specs/features/browser_ui/1_manage/project/import_github_repo_spec.rb
@@ -1,7 +1,8 @@
# frozen_string_literal: true
module QA
- # https://gitlab.com/gitlab-org/gitlab-foss/issues/58158
+ # https://gitlab.com/gitlab-org/gitlab/issues/26952
+ # BUG_IN_CODE
context 'Manage', :github, :quarantine do
describe 'Project import from GitHub' do
let(:imported_project) do
@@ -23,8 +24,7 @@ module QA
end
it 'user imports a GitHub repo' do
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
+ Flow::Login.sign_in
imported_project # import the project
diff --git a/qa/qa/specs/features/browser_ui/1_manage/project/view_project_activity_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/project/view_project_activity_spec.rb
index fe92fbd3ffe..5f3b492ea81 100644
--- a/qa/qa/specs/features/browser_ui/1_manage/project/view_project_activity_spec.rb
+++ b/qa/qa/specs/features/browser_ui/1_manage/project/view_project_activity_spec.rb
@@ -4,8 +4,7 @@ module QA
context 'Manage' do
describe 'Project activity' do
it 'user creates an event in the activity page upon Git push' do
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
+ Flow::Login.sign_in
project_push = Resource::Repository::ProjectPush.fabricate! do |push|
push.file_name = 'README.md'
diff --git a/qa/qa/specs/features/browser_ui/2_plan/email/trigger_email_notification_spec.rb b/qa/qa/specs/features/browser_ui/2_plan/email/trigger_email_notification_spec.rb
new file mode 100644
index 00000000000..90290b4f2a0
--- /dev/null
+++ b/qa/qa/specs/features/browser_ui/2_plan/email/trigger_email_notification_spec.rb
@@ -0,0 +1,43 @@
+# frozen_string_literal: true
+
+module QA
+ context 'Plan', :orchestrated, :smtp do
+ describe 'Email Notification' do
+ let(:user) do
+ Resource::User.fabricate_or_use(Runtime::Env.gitlab_qa_username_1, Runtime::Env.gitlab_qa_password_1)
+ end
+
+ let(:project) do
+ Resource::Project.fabricate_via_api! do |resource|
+ resource.name = 'email-notification-test'
+ end
+ end
+
+ before do
+ Flow::Login.sign_in
+ end
+
+ it 'is received by a user for project invitation' do
+ Flow::Project.add_member(project: project, username: user.username)
+
+ expect(page).to have_content(/@#{user.username}(\n| )?Given access/)
+
+ # Wait for Action Mailer to deliver messages
+ mailhog_json = Support::Retrier.retry_until(sleep_interval: 1) do
+ Runtime::Logger.debug(%Q[retrieving "#{QA::Runtime::MailHog.api_messages_url}"])
+
+ mailhog_response = get QA::Runtime::MailHog.api_messages_url
+
+ mailhog_data = JSON.parse(mailhog_response.body)
+
+ # Expect at least two invitation messages: group and project
+ mailhog_data if mailhog_data.dig('total') >= 2
+ end
+
+ # Check json result from mailhog
+ mailhog_items = mailhog_json.dig('items')
+ expect(mailhog_items).to include(an_object_satisfying { |o| /project was granted/ === o.dig('Content', 'Headers', 'Subject', 0) })
+ end
+ end
+ end
+end
diff --git a/qa/qa/specs/features/browser_ui/2_plan/issue/check_mentions_for_xss_spec.rb b/qa/qa/specs/features/browser_ui/2_plan/issue/check_mentions_for_xss_spec.rb
index 69389672a6d..494108dbefc 100644
--- a/qa/qa/specs/features/browser_ui/2_plan/issue/check_mentions_for_xss_spec.rb
+++ b/qa/qa/specs/features/browser_ui/2_plan/issue/check_mentions_for_xss_spec.rb
@@ -27,8 +27,8 @@ module QA
project.visit!
Page::Project::Show.perform(&:go_to_members_settings)
- Page::Project::Settings::Members.perform do |page| # rubocop:disable QA/AmbiguousPageObjectName
- page.add_member(user.username)
+ Page::Project::Settings::Members.perform do |members|
+ members.add_member(user.username)
end
issue = Resource::Issue.fabricate_via_api! do |issue|
diff --git a/qa/qa/specs/features/browser_ui/2_plan/issue/close_issue_spec.rb b/qa/qa/specs/features/browser_ui/2_plan/issue/close_issue_spec.rb
index dc7fa9f3859..bab6b1ac5fc 100644
--- a/qa/qa/specs/features/browser_ui/2_plan/issue/close_issue_spec.rb
+++ b/qa/qa/specs/features/browser_ui/2_plan/issue/close_issue_spec.rb
@@ -3,19 +3,18 @@
module QA
context 'Plan' do
describe 'Close issue' do
- let(:issue_title) { 'issue title' }
- let(:commit_message) { 'Closes' }
+ let(:issue) do
+ Resource::Issue.fabricate_via_api! do |issue|
+ issue.title = 'Issue to be closed via pushing a commit'
+ end
+ end
+
+ let(:project) { issue.project }
+ let(:issue_id) { issue.api_response[:iid] }
before do
Flow::Login.sign_in
- issue = Resource::Issue.fabricate_via_api! do |issue|
- issue.title = issue_title
- end
-
- @project = issue.project
- @issue_id = issue.api_response[:iid]
-
# Initial commit should be pushed because
# the very first commit to the project doesn't close the issue
# https://gitlab.com/gitlab-org/gitlab-foss/issues/38965
@@ -23,24 +22,15 @@ module QA
end
it 'user closes an issue by pushing commit' do
- push_commit("#{commit_message} ##{@issue_id}", false)
-
- @project.visit!
- Page::Project::Show.perform do |show|
- show.click_commit(commit_message)
- end
- commit_sha = Page::Project::Commit::Show.perform(&:commit_sha)
+ push_commit("Closes ##{issue_id}", false)
- Page::Project::Menu.perform(&:click_issues)
- Page::Project::Issue::Index.perform do |index|
- index.click_closed_issues_link
- index.click_issue_link(issue_title)
- end
+ issue.visit!
Page::Project::Issue::Show.perform do |show|
- show.select_all_activities_filter
- expect(show).to have_element(:reopen_issue_button)
- expect(show).to have_content("closed via commit #{commit_sha}")
+ reopen_issue_button_visible = show.wait(reload: true) do
+ show.has_element?(:reopen_issue_button, wait: 1.0)
+ end
+ expect(reopen_issue_button_visible).to be_truthy
end
end
@@ -49,7 +39,7 @@ module QA
push.commit_message = commit_message
push.new_branch = new_branch
push.file_content = commit_message
- push.project = @project
+ push.project = project
end
end
end
diff --git a/qa/qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb b/qa/qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb
index e15afd1f576..9a1d13cf677 100644
--- a/qa/qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb
+++ b/qa/qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb
@@ -8,27 +8,19 @@ module QA
before do
Flow::Login.sign_in
- project = Resource::Project.fabricate_via_api! do |resource|
- resource.name = 'project-for-issue-suggestions'
- resource.description = 'project for issue suggestions'
- end
-
Resource::Issue.fabricate_via_api! do |issue|
issue.title = issue_title
- issue.project = project
- end
-
- project.visit!
+ end.project.visit!
end
it 'user sees issue suggestions when creating a new issue' do
Page::Project::Show.perform(&:go_to_new_issue)
- Page::Project::Issue::New.perform do |new|
- new.add_title("issue")
- expect(new).to have_content(issue_title)
+ Page::Project::Issue::New.perform do |new_page|
+ new_page.add_title("issue")
+ expect(new_page).to have_content(issue_title)
- new.add_title("Issue Board")
- expect(new).not_to have_content(issue_title)
+ new_page.add_title("Issue Board")
+ expect(new_page).not_to have_content(issue_title)
end
end
end
diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb
index 6969f123f95..eaa1a2a0da8 100644
--- a/qa/qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb
@@ -4,8 +4,7 @@ module QA
context 'Create' do
describe 'Create a new merge request' do
before do
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
+ Flow::Login.sign_in
@project = Resource::Project.fabricate_via_api! do |project|
project.name = 'project'
diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb
index 6ca7af8a3af..370bf30f3a4 100644
--- a/qa/qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb
@@ -4,8 +4,7 @@ module QA
context 'Create' do
describe 'Merge request creation from fork' do
it 'user forks a project, submits a merge request and maintainer merges it' do
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
+ Flow::Login.sign_in
merge_request = Resource::MergeRequestFromFork.fabricate! do |merge_request|
merge_request.fork_branch = 'feature-branch'
diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb
index c7b5e40d0be..e4c79bf75b5 100644
--- a/qa/qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb
@@ -1,12 +1,12 @@
# frozen_string_literal: true
module QA
- # Failure issue: https://gitlab.com/gitlab-org/quality/staging/issues/66
+ # Failure issue: https://gitlab.com/gitlab-org/gitlab/issues/36817
+ # BUG_IN_CODE
context 'Create', :quarantine do
describe 'Merge request rebasing' do
it 'user rebases source branch of merge request' do
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
+ Flow::Login.sign_in
project = Resource::Project.fabricate! do |project|
project.name = "only-fast-forward"
diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/squash_merge_request_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/squash_merge_request_spec.rb
index a93f2695ec2..89f0fc37f3f 100644
--- a/qa/qa/specs/features/browser_ui/3_create/merge_request/squash_merge_request_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/squash_merge_request_spec.rb
@@ -4,8 +4,7 @@ module QA
context 'Create' do
describe 'Merge request squashing' do
it 'user squashes commits while merging' do
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
+ Flow::Login.sign_in
project = Resource::Project.fabricate! do |project|
project.name = "squash-before-merge"
@@ -27,9 +26,11 @@ module QA
merge_request.visit!
- expect(page).to have_text('to be squashed')
-
Page::MergeRequest::Show.perform do |merge_request_page|
+ merge_request_page.retry_on_exception(reload: true) do
+ expect(merge_request_page).to have_text('to be squashed')
+ end
+
merge_request_page.mark_to_squash
merge_request_page.merge!
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb
index d2fd1d743fb..d5346546efe 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb
@@ -1,8 +1,7 @@
# frozen_string_literal: true
module QA
- # Failure issue: https://gitlab.com/gitlab-org/gitlab/issues/34551
- context 'Create', :quarantine do
+ context 'Create' do
describe 'File templates' do
include Runtime::Fixtures
@@ -52,16 +51,16 @@ module QA
Page::Project::Show.perform(&:create_new_file!)
Page::File::Form.perform do |form|
form.select_template template[:file_name], template[:name]
- end
- expect(page).to have_content(content[0..100])
+ expect(form).to have_normalized_ws_text(content[0..100])
- Page::File::Form.perform(&:commit_changes)
+ form.commit_changes
- expect(page).to have_content('The file has been successfully created.')
- expect(page).to have_content(template[:file_name])
- expect(page).to have_content('Add new file')
- expect(page).to have_content(content[0..100])
+ expect(form).to have_content('The file has been successfully created.')
+ expect(form).to have_content(template[:file_name])
+ expect(form).to have_content('Add new file')
+ expect(form).to have_normalized_ws_text(content[0..100])
+ end
end
end
end
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/add_list_delete_branches_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/add_list_delete_branches_spec.rb
index 3306c5f5c50..7b1c2a71158 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/add_list_delete_branches_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/add_list_delete_branches_spec.rb
@@ -16,8 +16,7 @@ module QA
commit_message_of_third_branch = "Add #{file_third_branch}"
before do
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
+ Flow::Login.sign_in
project = Resource::Project.fabricate! do |proj|
proj.name = 'project-qa-test'
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/add_ssh_key_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/add_ssh_key_spec.rb
index 56a7a04e840..474a7904fea 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/add_ssh_key_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/add_ssh_key_spec.rb
@@ -6,8 +6,7 @@ module QA
let(:key_title) { "key for ssh tests #{Time.now.to_f}" }
it 'user adds and then removes an SSH key', :smoke do
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
+ Flow::Login.sign_in
key = Resource::SSHKey.fabricate! do |resource|
resource.title = key_title
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_http_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_http_spec.rb
index ec3c4c1ae94..1f156dfe6d5 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_http_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_http_spec.rb
@@ -2,12 +2,12 @@
module QA
# Git protocol v2 is temporarily disabled
- # https://gitlab.com/gitlab-org/gitlab-foss/issues/55769 (confidential)
+ # https://gitlab.com/gitlab-org/gitlab/issues/27828
+ # BUG_IN_CODE
context 'Create', :quarantine do
describe 'Push over HTTP using Git protocol version 2', :requires_git_protocol_v2 do
it 'user pushes to the repository' do
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
+ Flow::Login.sign_in
# Create a project to push to
project = Resource::Project.fabricate! do |project|
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_ssh_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_ssh_spec.rb
index 58f402a19ce..55c70656462 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_ssh_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_ssh_spec.rb
@@ -2,7 +2,8 @@
module QA
# Git protocol v2 is temporarily disabled
- # https://gitlab.com/gitlab-org/gitlab-foss/issues/55769 (confidential)
+ # https://gitlab.com/gitlab-org/gitlab/issues/27828
+ # BUG_IN_CODE
context 'Create', :quarantine do
describe 'Push over SSH using Git protocol version 2', :requires_git_protocol_v2 do
# Note: If you run this test against GDK make sure you've enabled sshd and
@@ -17,20 +18,15 @@ module QA
end
end
- def login
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
- end
-
around do |example|
# Create an SSH key to be used with Git
- login
+ Flow::Login.sign_in
ssh_key
example.run
# Remove the SSH key
- login
+ Flow::Login.sign_in
Page::Main::Menu.perform(&:click_settings_link)
Page::Profile::Menu.perform(&:click_ssh_keys)
Page::Profile::SSHKeys.perform do |ssh_keys|
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/push_http_private_token_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/push_http_private_token_spec.rb
index 1f4fb08accc..c713f11af7d 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/push_http_private_token_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/push_http_private_token_spec.rb
@@ -4,8 +4,7 @@ module QA
context 'Create' do
describe 'Git push over HTTP', :ldap_no_tls do
it 'user using a personal access token pushes code to the repository' do
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
+ Flow::Login.sign_in
access_token = Resource::PersonalAccessToken.fabricate!.access_token
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb
index 58e6c160a3a..2bd54d763a6 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb
@@ -4,8 +4,7 @@ module QA
context 'Create' do
describe 'Git push over HTTP', :ldap_no_tls do
it 'user pushes code to the repository' do
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
+ Flow::Login.sign_in
project_push = Resource::Repository::ProjectPush.fabricate! do |push|
push.file_name = 'README.md'
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/use_ssh_key_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/use_ssh_key_spec.rb
index a0251e1c385..1837a110d79 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/use_ssh_key_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/use_ssh_key_spec.rb
@@ -9,8 +9,7 @@ module QA
let(:key_title) { "key for ssh tests #{Time.now.to_f}" }
it 'user adds an ssh key and pushes code to the repository' do
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
+ Flow::Login.sign_in
key = Resource::SSHKey.fabricate! do |resource|
resource.title = key_title
diff --git a/qa/qa/specs/features/browser_ui/3_create/snippet/create_snippet_spec.rb b/qa/qa/specs/features/browser_ui/3_create/snippet/create_snippet_spec.rb
index cbc9f63f772..277e7364ada 100644
--- a/qa/qa/specs/features/browser_ui/3_create/snippet/create_snippet_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/snippet/create_snippet_spec.rb
@@ -4,8 +4,7 @@ module QA
context 'Create', :smoke do
describe 'Snippet creation' do
it 'User creates a snippet' do
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
+ Flow::Login.sign_in
Page::Main::Menu.perform(&:go_to_snippets)
diff --git a/qa/qa/specs/features/browser_ui/3_create/web_ide/add_file_template_spec.rb b/qa/qa/specs/features/browser_ui/3_create/web_ide/add_file_template_spec.rb
index 318adc3c272..7c9db5ee496 100644
--- a/qa/qa/specs/features/browser_ui/3_create/web_ide/add_file_template_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/web_ide/add_file_template_spec.rb
@@ -1,8 +1,7 @@
# frozen_string_literal: true
module QA
- # Failure issue: https://gitlab.com/gitlab-org/gitlab/issues/34551
- context 'Create', :quarantine do
+ context 'Create' do
describe 'Web IDE file templates' do
include Runtime::Fixtures
@@ -50,19 +49,19 @@ module QA
@project.visit!
Page::Project::Show.perform(&:open_web_ide!)
- Page::Project::WebIDE::Edit.perform do |page| # rubocop:disable QA/AmbiguousPageObjectName
- page.create_new_file_from_template template[:file_name], template[:name]
+ Page::Project::WebIDE::Edit.perform do |ide|
+ ide.create_new_file_from_template template[:file_name], template[:name]
- expect(page.has_file?(template[:file_name])).to be_truthy
- end
+ expect(ide.has_file?(template[:file_name])).to be_truthy
- expect(page).to have_button('Undo')
- expect(page).to have_content(content[0..100])
+ expect(ide).to have_button('Undo')
+ expect(ide).to have_normalized_ws_text(content[0..100])
- Page::Project::WebIDE::Edit.perform(&:commit_changes)
+ ide.commit_changes
- expect(page).to have_content(template[:file_name])
- expect(page).to have_content(content[0..100])
+ expect(ide).to have_content(template[:file_name])
+ expect(ide).to have_normalized_ws_text(content[0..100])
+ end
end
end
end
diff --git a/qa/qa/specs/features/browser_ui/3_create/wiki/create_edit_clone_push_wiki_spec.rb b/qa/qa/specs/features/browser_ui/3_create/wiki/create_edit_clone_push_wiki_spec.rb
index 2c3f2c86c23..42aa527da85 100644
--- a/qa/qa/specs/features/browser_ui/3_create/wiki/create_edit_clone_push_wiki_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/wiki/create_edit_clone_push_wiki_spec.rb
@@ -4,8 +4,7 @@ module QA
context 'Create' do
describe 'Wiki management' do
it 'user creates, edits, clones, and pushes to the wiki' do
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
+ Flow::Login.sign_in
wiki = Resource::Wiki.fabricate! do |resource|
resource.title = 'Home'
@@ -16,9 +15,9 @@ module QA
validate_content('My First Wiki Content')
Page::Project::Wiki::Edit.perform(&:click_edit)
- Page::Project::Wiki::New.perform do |page| # rubocop:disable QA/AmbiguousPageObjectName
- page.set_content("My Second Wiki Content")
- page.save_changes
+ Page::Project::Wiki::New.perform do |wiki|
+ wiki.set_content("My Second Wiki Content")
+ wiki.save_changes
end
validate_content('My Second Wiki Content')
diff --git a/qa/qa/specs/features/browser_ui/4_verify/ci_variable/add_ci_variable_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/ci_variable/add_ci_variable_spec.rb
index b2c70547421..c813484347e 100644
--- a/qa/qa/specs/features/browser_ui/4_verify/ci_variable/add_ci_variable_spec.rb
+++ b/qa/qa/specs/features/browser_ui/4_verify/ci_variable/add_ci_variable_spec.rb
@@ -4,8 +4,7 @@ module QA
context 'Verify' do
describe 'CI variable support' do
it 'user adds a CI variable', :smoke do
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
+ Flow::Login.sign_in
project = Resource::Project.fabricate_via_api! do |project|
project.name = 'project-with-ci-variables'
diff --git a/qa/qa/specs/features/browser_ui/4_verify/pipeline/create_and_process_pipeline_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/pipeline/create_and_process_pipeline_spec.rb
index 5d91b70082c..d4853a7bcf3 100644
--- a/qa/qa/specs/features/browser_ui/4_verify/pipeline/create_and_process_pipeline_spec.rb
+++ b/qa/qa/specs/features/browser_ui/4_verify/pipeline/create_and_process_pipeline_spec.rb
@@ -10,8 +10,7 @@ module QA
end
it 'users creates a pipeline which gets processed' do
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
+ Flow::Login.sign_in
project = Resource::Project.fabricate! do |project|
project.name = 'project-with-pipelines'
diff --git a/qa/qa/specs/features/browser_ui/4_verify/runner/register_runner_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/runner/register_runner_spec.rb
index 58f129b846d..fb1ee4446a9 100644
--- a/qa/qa/specs/features/browser_ui/4_verify/runner/register_runner_spec.rb
+++ b/qa/qa/specs/features/browser_ui/4_verify/runner/register_runner_spec.rb
@@ -10,8 +10,7 @@ module QA
end
it 'user registers a new specific runner' do
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
+ Flow::Login.sign_in
Resource::Runner.fabricate! do |runner|
runner.name = executor
diff --git a/qa/qa/specs/features/browser_ui/6_release/deploy_key/add_deploy_key_spec.rb b/qa/qa/specs/features/browser_ui/6_release/deploy_key/add_deploy_key_spec.rb
index 6f39a755392..9c964c726f1 100644
--- a/qa/qa/specs/features/browser_ui/6_release/deploy_key/add_deploy_key_spec.rb
+++ b/qa/qa/specs/features/browser_ui/6_release/deploy_key/add_deploy_key_spec.rb
@@ -4,8 +4,7 @@ module QA
context 'Release' do
describe 'Deploy key creation' do
it 'user adds a deploy key' do
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
+ Flow::Login.sign_in
key = Runtime::Key::RSA.new
deploy_key_title = 'deploy key title'
diff --git a/qa/qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb b/qa/qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb
index 9dc4bcc8a03..3badaa983cb 100644
--- a/qa/qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb
+++ b/qa/qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb
@@ -10,8 +10,7 @@ module QA
@job_log_json_flag_enabled = Runtime::Feature.enabled?('job_log_json')
Runtime::Feature.disable('job_log_json') if @job_log_json_flag_enabled
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
+ Flow::Login.sign_in
@runner_name = "qa-runner-#{Time.now.to_i}"
diff --git a/qa/qa/specs/features/browser_ui/6_release/deploy_token/add_deploy_token_spec.rb b/qa/qa/specs/features/browser_ui/6_release/deploy_token/add_deploy_token_spec.rb
index ec0c45652fd..9cb9f9ba529 100644
--- a/qa/qa/specs/features/browser_ui/6_release/deploy_token/add_deploy_token_spec.rb
+++ b/qa/qa/specs/features/browser_ui/6_release/deploy_token/add_deploy_token_spec.rb
@@ -4,8 +4,7 @@ module QA
context 'Release' do
describe 'Deploy token creation' do
it 'user adds a deploy token' do
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
+ Flow::Login.sign_in
deploy_token_name = 'deploy token name'
one_week_from_now = Date.today + 7
diff --git a/qa/qa/specs/features/browser_ui/7_configure/auto_devops/create_project_with_auto_devops_spec.rb b/qa/qa/specs/features/browser_ui/7_configure/auto_devops/create_project_with_auto_devops_spec.rb
index e9a3b0f75e6..a96bfde49f3 100644
--- a/qa/qa/specs/features/browser_ui/7_configure/auto_devops/create_project_with_auto_devops_spec.rb
+++ b/qa/qa/specs/features/browser_ui/7_configure/auto_devops/create_project_with_auto_devops_spec.rb
@@ -4,11 +4,6 @@ require 'pathname'
module QA
context 'Configure' do
- def login
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_credentials)
- end
-
def disable_optional_jobs(project)
# Disable code_quality check in Auto DevOps pipeline as it takes
# too long and times out the test
@@ -55,8 +50,7 @@ module QA
end
end
- # https://gitlab.com/gitlab-org/gitlab/issues/35156
- describe 'Auto DevOps support', :orchestrated, :kubernetes, :quarantine do
+ describe 'Auto DevOps support', :orchestrated, :kubernetes do
context 'when rbac is enabled' do
before(:all) do
@cluster = Service::KubernetesCluster.new.create!
@@ -67,7 +61,7 @@ module QA
end
it 'runs auto devops' do
- login
+ Flow::Login.sign_in
@project = Resource::Project.fabricate! do |p|
p.name = Runtime::Env.auto_devops_project_name || 'project-with-autodevops'
@@ -149,7 +143,7 @@ module QA
describe 'Auto DevOps', :smoke do
before do
- login
+ Flow::Login.sign_in
@project = Resource::Project.fabricate_via_browser_ui! do |p|
p.name = "project-with-autodevops-#{SecureRandom.hex(8)}"
diff --git a/qa/qa/specs/features/browser_ui/non_devops/performance_bar_spec.rb b/qa/qa/specs/features/browser_ui/non_devops/performance_bar_spec.rb
index 187c4a2a248..b067a44e325 100644
--- a/qa/qa/specs/features/browser_ui/non_devops/performance_bar_spec.rb
+++ b/qa/qa/specs/features/browser_ui/non_devops/performance_bar_spec.rb
@@ -1,12 +1,12 @@
# frozen_string_literal: true
module QA
- context 'Performance bar' do
+ # https://gitlab.com/gitlab-org/gitlab/issues/38315
+ context 'Performance bar', :quarantine do
context 'when logged in as an admin user', :requires_admin do
before do
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.perform(&:sign_in_using_admin_credentials)
- Page::Main::Menu.perform(&:click_admin_area)
+ Flow::Login.sign_in_as_admin
+ Page::Main::Menu.perform(&:go_to_admin_area)
Page::Admin::Menu.perform(&:go_to_metrics_and_profiling_settings)
Page::Admin::Settings::MetricsAndProfiling.perform do |setting|
@@ -23,10 +23,10 @@ module QA
issue.title = 'Performance bar test'
end
- Page::Layout::PerformanceBar.perform do |page| # rubocop:disable QA/AmbiguousPageObjectName
- expect(page).to have_performance_bar
- expect(page).to have_detailed_metrics
- expect(page).to have_request_for('realtime_changes') # Always requested on issue pages
+ Page::Layout::PerformanceBar.perform do |bar_component|
+ expect(bar_component).to have_performance_bar
+ expect(bar_component).to have_detailed_metrics
+ expect(bar_component).to have_request_for('realtime_changes') # Always requested on issue pages
end
end
end
diff --git a/qa/qa/support/api.rb b/qa/qa/support/api.rb
index cd496efb4db..90924ffd40e 100644
--- a/qa/qa/support/api.rb
+++ b/qa/qa/support/api.rb
@@ -6,6 +6,7 @@ module QA
HTTP_STATUS_OK = 200
HTTP_STATUS_CREATED = 201
HTTP_STATUS_NO_CONTENT = 204
+ HTTP_STATUS_ACCEPTED = 202
def post(url, payload)
RestClient::Request.execute(
diff --git a/qa/qa/support/page/logging.rb b/qa/qa/support/page/logging.rb
index 6b6e12f86de..5d73d9635f8 100644
--- a/qa/qa/support/page/logging.rb
+++ b/qa/qa/support/page/logging.rb
@@ -49,8 +49,8 @@ module QA
element
end
- def all_elements(name)
- log("finding all :#{name}")
+ def all_elements(name, **kwargs)
+ log("finding all :#{name} with args #{kwargs}")
elements = super
@@ -59,6 +59,18 @@ module QA
elements
end
+ def check_element(name)
+ log("checking :#{name}")
+
+ super
+ end
+
+ def uncheck_element(name)
+ log("unchecking :#{name}")
+
+ super
+ end
+
def click_element(name, page = nil, **kwargs)
msg = ["clicking :#{name}"]
msg << ", expecting to be at #{page.class}" if page
@@ -99,10 +111,10 @@ module QA
found
end
- def has_text?(text)
+ def has_text?(text, **kwargs)
found = super
- log(%Q{has_text?('#{text}') returned #{found}})
+ log(%Q{has_text?('#{text}', wait: #{kwargs[:wait] || Capybara.default_max_wait_time}) returned #{found}})
found
end
diff --git a/qa/qa/tools/revoke_all_personal_access_tokens.rb b/qa/qa/tools/revoke_all_personal_access_tokens.rb
index f14975c0e5e..e33d522bece 100644
--- a/qa/qa/tools/revoke_all_personal_access_tokens.rb
+++ b/qa/qa/tools/revoke_all_personal_access_tokens.rb
@@ -32,9 +32,9 @@ module QA
token_name = 'api-test-token'
- Page::Profile::PersonalAccessTokens.perform do |page| # rubocop:disable QA/AmbiguousPageObjectName
- while page.has_token_row_for_name?(token_name)
- page.revoke_first_token_with_name(token_name)
+ Page::Profile::PersonalAccessTokens.perform do |tokens_page|
+ while tokens_page.has_token_row_for_name?(token_name)
+ tokens_page.revoke_first_token_with_name(token_name)
print "\e[32m.\e[0m"
end
end
diff --git a/qa/qa/vendor/saml_idp/page/login.rb b/qa/qa/vendor/saml_idp/page/login.rb
index 9ebcabe15fc..041b4a0feee 100644
--- a/qa/qa/vendor/saml_idp/page/login.rb
+++ b/qa/qa/vendor/saml_idp/page/login.rb
@@ -8,7 +8,7 @@ module QA
module Page
class Login < Page::Base
def login(username, password)
- QA::Runtime::Logger.debug("Logging into SAMLIdp with username: #{username} and password:#{password}") if QA::Runtime::Env.debug?
+ QA::Runtime::Logger.debug("Logging into SAMLIdp with username: #{username} and password:#{password}")
fill_in 'username', with: username
fill_in 'password', with: password
@@ -21,7 +21,7 @@ module QA
def login_required?
login_required = page.has_text?('Enter your username and password')
- QA::Runtime::Logger.debug("login_required: #{login_required}") if QA::Runtime::Env.debug?
+ QA::Runtime::Logger.debug("login_required: #{login_required}")
login_required
end
end
diff --git a/qa/spec/page/logging_spec.rb b/qa/spec/page/logging_spec.rb
index 92a4f7b40e6..fb89bcd3ab4 100644
--- a/qa/spec/page/logging_spec.rb
+++ b/qa/spec/page/logging_spec.rb
@@ -117,7 +117,7 @@ describe QA::Support::Page::Logging do
allow(page).to receive(:has_text?).and_return(true)
expect { subject.has_text? 'foo' }
- .to output(/has_text\?\('foo'\) returned true/).to_stdout_from_any_process
+ .to output(/has_text\?\('foo', wait: #{QA::Runtime::Browser::CAPYBARA_MAX_WAIT_TIME}\) returned true/).to_stdout_from_any_process
end
it 'logs has_no_text?' do
diff --git a/qa/spec/spec_helper.rb b/qa/spec/spec_helper.rb
index 42f1e6f292a..3a26ed89e9c 100644
--- a/qa/spec/spec_helper.rb
+++ b/qa/spec/spec_helper.rb
@@ -20,7 +20,7 @@ RSpec.configure do |config|
QA::Specs::Helpers::Quarantine.configure_rspec
config.before do |example|
- QA::Runtime::Logger.debug("\nStarting test: #{example.full_description}\n") if QA::Runtime::Env.debug?
+ QA::Runtime::Logger.debug("\nStarting test: #{example.full_description}\n")
end
config.after(:context) do
@@ -62,7 +62,7 @@ RSpec.configure do |config|
# show exception that triggers a retry if verbose_retry is set to true
config.display_try_failure_messages = true
- if ENV['CI']
+ if ENV['CI'] && !QA::Runtime::Env.disable_rspec_retry?
config.around do |example|
retry_times = example.metadata.key?(:quarantine) ? 1 : 2
example.run_with_retry retry: retry_times
diff --git a/rubocop/cop/avoid_route_redirect_leading_slash.rb b/rubocop/cop/avoid_route_redirect_leading_slash.rb
index 261d151fb1b..d66e434dc9c 100644
--- a/rubocop/cop/avoid_route_redirect_leading_slash.rb
+++ b/rubocop/cop/avoid_route_redirect_leading_slash.rb
@@ -7,10 +7,10 @@ module RuboCop
#
# @example
# # bad
- # root to: redirect('/-/instance/statistics/conversational_development_index')
+ # root to: redirect('/-/instance/statistics/dev_ops_score')
#
# # good
- # root to: redirect('-/instance/statistics/conversational_development_index')
+ # root to: redirect('-/instance/statistics/dev_ops_score')
#
class AvoidRouteRedirectLeadingSlash < RuboCop::Cop::Cop
diff --git a/rubocop/cop/graphql/authorize_types.rb b/rubocop/cop/graphql/authorize_types.rb
index c69ce10f1c5..7aaa9299362 100644
--- a/rubocop/cop/graphql/authorize_types.rb
+++ b/rubocop/cop/graphql/authorize_types.rb
@@ -34,7 +34,10 @@ module RuboCop
end
def whitelisted?(class_node)
- return false unless class_node&.const_name
+ class_const = class_node&.const_name
+
+ return false unless class_const
+ return true if class_const.end_with?('Enum')
WHITELISTED_TYPES.any? { |whitelisted| class_node.const_name.include?(whitelisted) }
end
diff --git a/rubocop/cop/ignored_columns.rb b/rubocop/cop/ignored_columns.rb
new file mode 100644
index 00000000000..14bcfa04ae1
--- /dev/null
+++ b/rubocop/cop/ignored_columns.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+module RuboCop
+ module Cop
+ # Cop that blacklists the usage of Group.public_or_visible_to_user
+ class IgnoredColumns < RuboCop::Cop::Cop
+ MSG = 'Use `IgnoredColumns` concern instead of adding to `self.ignored_columns`.'
+
+ def_node_matcher :ignored_columns?, <<~PATTERN
+ (send (self) :ignored_columns)
+ PATTERN
+
+ def on_send(node)
+ return unless ignored_columns?(node)
+
+ add_offense(node, location: :expression)
+ end
+ end
+ end
+end
diff --git a/rubocop/cop/migration/add_column.rb b/rubocop/cop/migration/add_column.rb
index 2530d6477e8..a25bd843559 100644
--- a/rubocop/cop/migration/add_column.rb
+++ b/rubocop/cop/migration/add_column.rb
@@ -8,7 +8,10 @@ module RuboCop
class AddColumn < RuboCop::Cop::Cop
include MigrationHelpers
- WHITELISTED_TABLES = [:application_settings].freeze
+ WHITELISTED_TABLES = %i[
+ application_settings
+ plan_limits
+ ].freeze
MSG = '`add_column` with a default value requires downtime, ' \
'use `add_column_with_default` instead'.freeze
diff --git a/rubocop/cop/put_group_routes_under_scope.rb b/rubocop/cop/put_group_routes_under_scope.rb
new file mode 100644
index 00000000000..bcdde01fdb5
--- /dev/null
+++ b/rubocop/cop/put_group_routes_under_scope.rb
@@ -0,0 +1,43 @@
+# frozen_string_literal: true
+
+module RuboCop
+ module Cop
+ # Checks for a group routes outside '/-/' scope.
+ # For more information see: https://gitlab.com/gitlab-org/gitlab/issues/29572
+ class PutGroupRoutesUnderScope < RuboCop::Cop::Cop
+ MSG = 'Put new group routes under /-/ scope'
+
+ def_node_matcher :dash_scope?, <<~PATTERN
+ (:send nil? :scope (hash <(pair (sym :path)(str "groups/*group_id/-")) ...>))
+ PATTERN
+
+ def on_send(node)
+ return unless in_group_routes?(node)
+ return unless resource?(node)
+ return unless outside_scope?(node)
+
+ add_offense(node)
+ end
+
+ def outside_scope?(node)
+ node.each_ancestor(:block).none? do |parent|
+ dash_scope?(parent.to_a.first)
+ end
+ end
+
+ def in_group_routes?(node)
+ path = node.location.expression.source_buffer.name
+ dirname = File.dirname(path)
+ filename = File.basename(path)
+
+ dirname.end_with?('config/routes') &&
+ filename.end_with?('group.rb')
+ end
+
+ def resource?(node)
+ node.method_name == :resource ||
+ node.method_name == :resources
+ end
+ end
+ end
+end
diff --git a/rubocop/cop/put_project_routes_under_scope.rb b/rubocop/cop/put_project_routes_under_scope.rb
new file mode 100644
index 00000000000..02189f43ea0
--- /dev/null
+++ b/rubocop/cop/put_project_routes_under_scope.rb
@@ -0,0 +1,43 @@
+# frozen_string_literal: true
+
+module RuboCop
+ module Cop
+ # Checks for a project routes outside '/-/' scope.
+ # For more information see: https://gitlab.com/gitlab-org/gitlab/issues/29572
+ class PutProjectRoutesUnderScope < RuboCop::Cop::Cop
+ MSG = 'Put new project routes under /-/ scope'
+
+ def_node_matcher :dash_scope?, <<~PATTERN
+ (:send nil? :scope (:str "-"))
+ PATTERN
+
+ def on_send(node)
+ return unless in_project_routes?(node)
+ return unless resource?(node)
+ return unless outside_scope?(node)
+
+ add_offense(node)
+ end
+
+ def outside_scope?(node)
+ node.each_ancestor(:block).none? do |parent|
+ dash_scope?(parent.to_a.first)
+ end
+ end
+
+ def in_project_routes?(node)
+ path = node.location.expression.source_buffer.name
+ dirname = File.dirname(path)
+ filename = File.basename(path)
+
+ dirname.end_with?('config/routes') &&
+ filename.end_with?('project.rb')
+ end
+
+ def resource?(node)
+ node.method_name == :resource ||
+ node.method_name == :resources
+ end
+ end
+ end
+end
diff --git a/rubocop/rubocop.rb b/rubocop/rubocop.rb
index 159892ae0c1..1465c73d570 100644
--- a/rubocop/rubocop.rb
+++ b/rubocop/rubocop.rb
@@ -14,6 +14,8 @@ require_relative 'cop/avoid_break_from_strong_memoize'
require_relative 'cop/avoid_route_redirect_leading_slash'
require_relative 'cop/line_break_around_conditional_block'
require_relative 'cop/prefer_class_methods_over_module'
+require_relative 'cop/put_project_routes_under_scope'
+require_relative 'cop/put_group_routes_under_scope'
require_relative 'cop/migration/add_column'
require_relative 'cop/migration/add_concurrent_foreign_key'
require_relative 'cop/migration/add_concurrent_index'
@@ -53,3 +55,4 @@ require_relative 'cop/group_public_or_visible_to_user'
require_relative 'cop/inject_enterprise_edition_module'
require_relative 'cop/graphql/authorize_types'
require_relative 'cop/graphql/descriptions'
+require_relative 'cop/ignored_columns'
diff --git a/scripts/ee-specific-lines-check b/scripts/ee-specific-lines-check
deleted file mode 100755
index 4114575168c..00000000000
--- a/scripts/ee-specific-lines-check
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/usr/bin/env ruby
-
-require_relative 'ee_specific_check/ee_specific_check'
-
-include EESpecificCheck # rubocop:disable Style/MixinUsage
-git_version
-
-base = find_compare_base
-
-current_numstat = updated_diff_numstat(base.ce_base, base.ee_base)
-updated_numstat = updated_diff_numstat(base.ce_head, base.ee_head)
-
-offenses = updated_numstat.select do |file, updated_delta|
- current_delta = current_numstat[file]
-
- more_lines = updated_delta > current_delta
-
- more_lines &&
- !WHITELIST.any? { |pattern| Dir.glob(pattern, File::FNM_DOTMATCH).include?(file) }
-end
-
-if offenses.empty?
- say "🎉 All good, congrats! 🎉"
-else
- puts
-
- offenses.each do |(file, delta)|
- puts "* 💥 #{file} has #{delta - current_numstat[file]} updated lines that differ between EE and CE! 💥"
- end
-
- say <<~MESSAGE
- â„¹ï¸ Make sure all lines in shared files have been updated in your backport merge request and the branch name includes #{minimal_ce_branch_name}.
- â„¹ï¸ Consider using an EE module to add the features you want.
- â„¹ï¸ See this for detail: https://docs.gitlab.com/ee/development/ee_features.html#ee-features-based-on-ce-features
- MESSAGE
-end
-
-remove_remotes
-
-say "â„¹ï¸ For more information on why, see https://gitlab.com/gitlab-org/gitlab/issues/2952"
-
-exit(offenses.size)
diff --git a/scripts/frontend/check_no_partial_karma_jest.sh b/scripts/frontend/check_no_partial_karma_jest.sh
new file mode 100755
index 00000000000..c5fffa5900b
--- /dev/null
+++ b/scripts/frontend/check_no_partial_karma_jest.sh
@@ -0,0 +1,44 @@
+#!/usr/bin/env bash
+
+karma_directory=spec/javascripts
+
+if [ -d ee ]; then
+ karma_directory="$karma_directory ee/$karma_directory"
+fi
+
+karma_files=$(find $karma_directory -type f -name '*_spec.js' -not -path '*/helpers/*')
+violations=""
+
+for karma_file in $karma_files; do
+ jest_file=${karma_file/spec\/javascripts/"spec/frontend"}
+
+ if [ -f $jest_file ]; then
+ violations="$violations $jest_file"
+ fi
+done
+
+if [[ -z "$violations" ]]; then
+ echo "All good!"
+ exit 0
+else
+ echo "Danger! The following Jest specs have corresponding files in the Karma spec directory (i.e. spec/javascripts):"
+ echo ""
+ echo "------------------------------"
+ for file in $violations; do
+ echo $file
+ done
+ echo "------------------------------"
+ echo ""
+ echo "For each of these files, please either:"
+ echo ""
+ echo "1. Fully migrate the file to Jest and remove the corresponding Karma file."
+ echo "2. Remove the Jest file for now, make any relevant changes in the corresponding Karma file, and handle the migration to Jest in a separate MR."
+ echo ""
+ echo "Why is this a problem?"
+ echo ""
+ echo "- It's nice to have a single source of truth for the unit tests of a subject."
+ echo "- This will cause conflicts if the remaining Karma spec is migrated using our automated tool."
+ echo " https://gitlab.com/gitlab-org/frontend/playground/migrate-karma-to-jest"
+ echo ""
+ exit 1
+fi
diff --git a/scripts/get-job-id b/scripts/get-job-id
new file mode 100755
index 00000000000..a5d34dc545b
--- /dev/null
+++ b/scripts/get-job-id
@@ -0,0 +1,43 @@
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+require 'gitlab'
+require 'optparse'
+
+#
+# Configure credentials to be used with gitlab gem
+#
+Gitlab.configure do |config|
+ config.endpoint = 'https://gitlab.com/api/v4'
+ config.private_token = ENV['GITLAB_BOT_MULTI_PROJECT_PIPELINE_POLLING_TOKEN']
+end
+
+options = {}
+OptionParser.new do |opts|
+ opts.on("-s", "--scope=SCOPE", "Find job with matching scope") do |scope|
+ options[:scope] = scope
+ end
+end.parse!
+
+class PipelineJobFinder
+ def initialize(project_id, pipeline_id, job_name, options)
+ @project_id = project_id
+ @pipeline_id = pipeline_id
+ @job_name = job_name
+ @options = options
+ end
+
+ def execute
+ Gitlab.pipeline_jobs(@project_id, @pipeline_id, @options).auto_paginate do |job|
+ break job if job.name == @job_name
+ end
+ end
+end
+
+project_id, pipeline_id, job_name = ARGV
+
+job = PipelineJobFinder.new(project_id, pipeline_id, job_name, options).execute
+
+return if job.nil?
+
+puts job.id
diff --git a/scripts/gitaly_test.rb b/scripts/gitaly_test.rb
index b5cc5118530..922dc17ed2e 100644
--- a/scripts/gitaly_test.rb
+++ b/scripts/gitaly_test.rb
@@ -56,6 +56,14 @@ module GitalyTest
end
def check_gitaly_config!
+ puts "Checking gitaly-ruby Gemfile..."
+
+ unless File.exist?(gemfile)
+ message = "#{gemfile} does not exist."
+ message += "\n\nThis might have happened if the CI artifacts for this build were destroyed." if ENV['CI']
+ abort message
+ end
+
puts 'Checking gitaly-ruby bundle...'
abort 'bundle check failed' unless system(env, 'bundle', 'check', chdir: File.dirname(gemfile))
end
diff --git a/scripts/lint-conflicts.sh b/scripts/lint-conflicts.sh
index f3877600c8c..2d04507f81e 100755
--- a/scripts/lint-conflicts.sh
+++ b/scripts/lint-conflicts.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-output=`git ls-files -z | grep -zvE '\.(rb|js|haml)$' | xargs -0n1 grep -HEn '^<<<<<<< '`
+output=`git grep -En '^<<<<<<< ' -- . ':(exclude)spec/lib/gitlab/conflict/file_spec.rb' ':(exclude)spec/lib/gitlab/git/conflict/parser_spec.rb'`
echo $output
test -z "$output"
diff --git a/scripts/notifications.sh b/scripts/notifications.sh
new file mode 100755
index 00000000000..d1b11d44e88
--- /dev/null
+++ b/scripts/notifications.sh
@@ -0,0 +1,27 @@
+# Sends Slack notification MSG to CI_SLACK_WEBHOOK_URL (which needs to be set).
+# ICON_EMOJI needs to be set to an icon emoji name (without the `:` around it).
+function notify_slack() {
+ CHANNEL=$1
+ MSG=$2
+ ICON_EMOJI=$3
+
+ if [ -z "$CHANNEL" ] || [ -z "$CI_SLACK_WEBHOOK_URL" ] || [ -z "$MSG" ] || [ -z "$ICON_EMOJI" ]; then
+ echo "Missing argument(s) - Use: $0 channel message icon_emoji"
+ echo "and set CI_SLACK_WEBHOOK_URL environment variable."
+ else
+ curl -X POST --data-urlencode 'payload={"channel": "#'"${CHANNEL}"'", "username": "GitLab QA Bot", "text": "'"${MSG}"'", "icon_emoji": "'":${ICON_EMOJI}:"'"}' "${CI_SLACK_WEBHOOK_URL}"
+ fi
+}
+
+function notify_on_job_failure() {
+ JOB_NAME=$1
+ CHANNEL=$2
+ MSG=$3
+ ICON_EMOJI=$4
+
+ local job_id
+ job_id=$(scripts/get-job-id "$CI_PROJECT_ID" "$CI_PIPELINE_ID" "$JOB_NAME" -s failed)
+ if [ -n "${job_id}" ]; then
+ notify_slack "${CHANNEL}" "${MSG}" "${ICON_EMOJI}"
+ fi
+}
diff --git a/scripts/prepare_build.sh b/scripts/prepare_build.sh
index 0950ec272a5..e80d752f09f 100644
--- a/scripts/prepare_build.sh
+++ b/scripts/prepare_build.sh
@@ -16,37 +16,21 @@ retry gem install knapsack --no-document
cp config/gitlab.yml.example config/gitlab.yml
sed -i 's/bin_path: \/usr\/bin\/git/bin_path: \/usr\/local\/bin\/git/' config/gitlab.yml
-# Determine the database by looking at the job name.
-# This would make the default database postgresql.
-if [[ "${CI_JOB_NAME#*mysql}" != "$CI_JOB_NAME" ]]; then
- export GITLAB_DATABASE='mysql'
-else
- export GITLAB_DATABASE='postgresql'
-fi
-
-cp config/database.yml.$GITLAB_DATABASE config/database.yml
+cp config/database.yml.postgresql config/database.yml
-if [ -f config/database_geo.yml.$GITLAB_DATABASE ]; then
- cp config/database_geo.yml.$GITLAB_DATABASE config/database_geo.yml
+if [ -f config/database_geo.yml.postgresql ]; then
+ cp config/database_geo.yml.postgresql config/database_geo.yml
fi
# Set user to a non-superuser to ensure we test permissions
sed -i 's/username: root/username: gitlab/g' config/database.yml
-if [ "$GITLAB_DATABASE" = 'postgresql' ]; then
- sed -i 's/localhost/postgres/g' config/database.yml
- sed -i 's/username: git/username: postgres/g' config/database.yml
-
- if [ -f config/database_geo.yml ]; then
- sed -i 's/localhost/postgres/g' config/database_geo.yml
- sed -i 's/username: git/username: postgres/g' config/database_geo.yml
- fi
-else # Assume it's mysql
- sed -i 's/localhost/mysql/g' config/database.yml
+sed -i 's/localhost/postgres/g' config/database.yml
+sed -i 's/username: git/username: postgres/g' config/database.yml
- if [ -f config/database_geo.yml ]; then
- sed -i 's/localhost/mysql/g' config/database_geo.yml
- fi
+if [ -f config/database_geo.yml ]; then
+ sed -i 's/localhost/postgres/g' config/database_geo.yml
+ sed -i 's/username: git/username: postgres/g' config/database_geo.yml
fi
cp config/resque.yml.example config/resque.yml
@@ -63,6 +47,6 @@ sed -i 's|url:.*$|url: redis://redis:6379/12|g' config/redis.shared_state.yml
if [ "$SETUP_DB" != "false" ]; then
setup_db
-elif getent hosts postgres || getent hosts mysql; then
+elif getent hosts postgres; then
setup_db_user_only
fi
diff --git a/scripts/review_apps/automated_cleanup.rb b/scripts/review_apps/automated_cleanup.rb
index c7ab8829088..8a04d8e00bc 100755
--- a/scripts/review_apps/automated_cleanup.rb
+++ b/scripts/review_apps/automated_cleanup.rb
@@ -25,7 +25,6 @@ class AutomatedCleanup
def initialize(project_path: ENV['CI_PROJECT_PATH'], gitlab_token: ENV['GITLAB_BOT_REVIEW_APPS_CLEANUP_TOKEN'])
@project_path = project_path
@gitlab_token = gitlab_token
- ENV['TILLER_NAMESPACE'] ||= review_apps_namespace
end
def gitlab
@@ -45,7 +44,9 @@ class AutomatedCleanup
end
def helm
- @helm ||= Quality::HelmClient.new(namespace: review_apps_namespace)
+ @helm ||= Quality::HelmClient.new(
+ tiller_namespace: review_apps_namespace,
+ namespace: review_apps_namespace)
end
def kubernetes
@@ -75,9 +76,11 @@ class AutomatedCleanup
deployed_at = Time.parse(last_deploy)
if deployed_at < delete_threshold
- delete_environment(environment, deployment)
- release = Quality::HelmClient::Release.new(environment.slug, 1, deployed_at.to_s, nil, nil, review_apps_namespace)
- releases_to_delete << release
+ deleted_environment = delete_environment(environment, deployment)
+ if deleted_environment
+ release = Quality::HelmClient::Release.new(environment.slug, 1, deployed_at.to_s, nil, nil, review_apps_namespace)
+ releases_to_delete << release
+ end
elsif deployed_at < stop_threshold
stop_environment(environment, deployment)
else
@@ -116,11 +119,17 @@ class AutomatedCleanup
def delete_environment(environment, deployment)
print_release_state(subject: 'Review app', release_name: environment.slug, release_date: deployment.created_at, action: 'deleting')
gitlab.delete_environment(project_path, environment.id)
+
+ rescue Gitlab::Error::Forbidden
+ puts "Review app '#{environment.slug}' is forbidden: skipping it"
end
def stop_environment(environment, deployment)
print_release_state(subject: 'Review app', release_name: environment.slug, release_date: deployment.created_at, action: 'stopping')
gitlab.stop_environment(project_path, environment.id)
+
+ rescue Gitlab::Error::Forbidden
+ puts "Review app '#{environment.slug}' is forbidden: skipping it"
end
def helm_releases
diff --git a/scripts/review_apps/base-config.yaml b/scripts/review_apps/base-config.yaml
index 7aaa7544c19..999f730efc5 100644
--- a/scripts/review_apps/base-config.yaml
+++ b/scripts/review_apps/base-config.yaml
@@ -8,6 +8,8 @@ global:
configureCertmanager: false
tls:
secretName: tls-cert
+ initialRootPassword:
+ secret: shared-gitlab-initial-root-password
certmanager:
install: false
gitlab:
@@ -42,7 +44,7 @@ gitlab:
memory: 37.5M
maxReplicas: 3
hpa:
- targetAverageValue: 130m
+ targetAverageValue: 500m
deployment:
livenessProbe:
timeoutSeconds: 5
@@ -50,10 +52,12 @@ gitlab:
resources:
requests:
cpu: 650m
- memory: 880M
+ memory: 970M
limits:
cpu: 975m
- memory: 1320M
+ memory: 1450M
+ hpa:
+ targetAverageValue: 650m
task-runner:
resources:
requests:
@@ -66,10 +70,10 @@ gitlab:
resources:
requests:
cpu: 500m
- memory: 1540M
+ memory: 1630M
limits:
cpu: 750m
- memory: 2310M
+ memory: 2450M
deployment:
readinessProbe:
initialDelaySeconds: 5 # Default is 0
@@ -78,10 +82,10 @@ gitlab:
workhorse:
resources:
requests:
- cpu: 250m
+ cpu: 400m
memory: 50M
limits:
- cpu: 375m
+ cpu: 600m
memory: 75M
readinessProbe:
initialDelaySeconds: 5 # Default is 0
@@ -90,18 +94,18 @@ gitlab:
gitlab-runner:
resources:
requests:
- cpu: 450m
+ cpu: 675m
memory: 100M
limits:
- cpu: 675m
+ cpu: 1015m
memory: 150M
minio:
resources:
requests:
- cpu: 5m
+ cpu: 9m
memory: 128M
limits:
- cpu: 10m
+ cpu: 15m
memory: 280M
nginx-ingress:
controller:
diff --git a/scripts/review_apps/review-apps.sh b/scripts/review_apps/review-apps.sh
index ed872783856..62360dfe298 100755
--- a/scripts/review_apps/review-apps.sh
+++ b/scripts/review_apps/review-apps.sh
@@ -2,29 +2,31 @@
function deploy_exists() {
local namespace="${1}"
- local deploy="${2}"
- echoinfo "Checking if ${deploy} exists in the ${namespace} namespace..." true
+ local release="${2}"
+ local deploy_exists
- helm status --tiller-namespace "${namespace}" "${deploy}" >/dev/null 2>&1
- local deploy_exists=$?
+ echoinfo "Checking if ${release} exists in the ${namespace} namespace..." true
- echoinfo "Deployment status for ${deploy} is ${deploy_exists}"
+ helm status --tiller-namespace "${namespace}" "${release}" >/dev/null 2>&1
+ deploy_exists=$?
+
+ echoinfo "Deployment status for ${release} is ${deploy_exists}"
return $deploy_exists
}
function previous_deploy_failed() {
local namespace="${1}"
- local deploy="${2}"
+ local release="${2}"
- echoinfo "Checking for previous deployment of ${deploy}" true
+ echoinfo "Checking for previous deployment of ${release}" true
- helm status --tiller-namespace "${namespace}" "${deploy}" >/dev/null 2>&1
+ helm status --tiller-namespace "${namespace}" "${release}" >/dev/null 2>&1
local status=$?
# if `status` is `0`, deployment exists, has a status
if [ $status -eq 0 ]; then
echoinfo "Previous deployment found, checking status..."
- deployment_status=$(helm status --tiller-namespace "${namespace}" "${deploy}" | grep ^STATUS | cut -d' ' -f2)
+ deployment_status=$(helm status --tiller-namespace "${namespace}" "${release}" | grep ^STATUS | cut -d' ' -f2)
echoinfo "Previous deployment state: ${deployment_status}"
if [[ "$deployment_status" == "FAILED" || "$deployment_status" == "PENDING_UPGRADE" || "$deployment_status" == "PENDING_INSTALL" ]]; then
status=0;
@@ -39,30 +41,53 @@ function previous_deploy_failed() {
function delete_release() {
local namespace="${KUBE_NAMESPACE}"
- local deploy="${CI_ENVIRONMENT_SLUG}"
+ local release="${CI_ENVIRONMENT_SLUG}"
- if [ -z "$deploy" ]; then
+ if [ -z "${release}" ]; then
echoerr "No release given, aborting the delete!"
return
fi
- echoinfo "Deleting release '$deploy'..." true
+ helm_delete_release "${namespace}" "${release}"
+ kubectl_cleanup_release "${namespace}" "${release}"
+}
+
+function helm_delete_release() {
+ local namespace="${1}"
+ local release="${2}"
+
+ echoinfo "Deleting Helm release '${release}'..." true
+
+ helm delete --tiller-namespace "${namespace}" --purge "${release}"
+}
- helm delete --purge --tiller-namespace "${namespace}" "${deploy}"
+function kubectl_cleanup_release() {
+ local namespace="${1}"
+ local release="${2}"
+
+ echoinfo "Deleting all K8s resources matching '${release}'..." true
+ kubectl --namespace "${namespace}" get ingress,svc,pdb,hpa,deploy,statefulset,job,pod,secret,configmap,pvc,secret,clusterrole,clusterrolebinding,role,rolebinding,sa,crd 2>&1 \
+ | grep "${release}" \
+ | awk '{print $1}' \
+ | xargs kubectl --namespace "${namespace}" delete \
+ || true
}
function delete_failed_release() {
- if [ -z "$CI_ENVIRONMENT_SLUG" ]; then
+ local namespace="${KUBE_NAMESPACE}"
+ local release="${CI_ENVIRONMENT_SLUG}"
+
+ if [ -z "${release}" ]; then
echoerr "No release given, aborting the delete!"
return
fi
- if ! deploy_exists "${KUBE_NAMESPACE}" "${CI_ENVIRONMENT_SLUG}"; then
- echoinfo "No Review App with ${CI_ENVIRONMENT_SLUG} is currently deployed."
+ if ! deploy_exists "${namespace}" "${release}"; then
+ echoinfo "No Review App with ${release} is currently deployed."
else
# Cleanup and previous installs, as FAILED and PENDING_UPGRADE will cause errors with `upgrade`
- if previous_deploy_failed "${KUBE_NAMESPACE}" "$CI_ENVIRONMENT_SLUG" ; then
- echoinfo "Review App deployment in bad state, cleaning up $CI_ENVIRONMENT_SLUG"
+ if previous_deploy_failed "${namespace}" "${release}" ; then
+ echoinfo "Review App deployment in bad state, cleaning up ${release}"
delete_release
else
echoinfo "Review App deployment in good state"
@@ -72,9 +97,12 @@ function delete_failed_release() {
function get_pod() {
+ local namespace="${KUBE_NAMESPACE}"
+ local release="${CI_ENVIRONMENT_SLUG}"
local app_name="${1}"
local status="${2-Running}"
- get_pod_cmd="kubectl get pods -n ${KUBE_NAMESPACE} --field-selector=status.phase=${status} -lapp=${app_name},release=${CI_ENVIRONMENT_SLUG} --no-headers -o=custom-columns=NAME:.metadata.name | tail -n 1"
+
+ get_pod_cmd="kubectl get pods --namespace ${namespace} --field-selector=status.phase=${status} -lapp=${app_name},release=${release} --no-headers -o=custom-columns=NAME:.metadata.name | tail -n 1"
echoinfo "Waiting till '${app_name}' pod is ready" true
echoinfo "Running '${get_pod_cmd}'"
@@ -113,58 +141,68 @@ function check_kube_domain() {
}
function ensure_namespace() {
- echoinfo "Ensuring the ${KUBE_NAMESPACE} namespace exists..." true
+ local namespace="${KUBE_NAMESPACE}"
+
+ echoinfo "Ensuring the ${namespace} namespace exists..." true
- kubectl describe namespace "$KUBE_NAMESPACE" || kubectl create namespace "$KUBE_NAMESPACE"
+ kubectl describe namespace "${namespace}" || kubectl create namespace "${namespace}"
}
function install_tiller() {
- local TILLER_NAMESPACE="$KUBE_NAMESPACE"
- echoinfo "Checking deployment/tiller-deploy status in the ${TILLER_NAMESPACE} namespace..." true
+ local namespace="${KUBE_NAMESPACE}"
+
+ echoinfo "Checking deployment/tiller-deploy status in the ${namespace} namespace..." true
echoinfo "Initiating the Helm client..."
helm init --client-only
# Set toleration for Tiller to be installed on a specific node pool
helm init \
+ --tiller-namespace "${namespace}" \
--wait \
--upgrade \
+ --force-upgrade \
--node-selectors "app=helm" \
--replicas 3 \
--override "spec.template.spec.tolerations[0].key"="dedicated" \
--override "spec.template.spec.tolerations[0].operator"="Equal" \
--override "spec.template.spec.tolerations[0].value"="helm" \
- --override "spec.template.spec.tolerations[0].effect"="NoSchedule" \
- --tiller-namespace "${TILLER_NAMESPACE}"
+ --override "spec.template.spec.tolerations[0].effect"="NoSchedule"
- kubectl rollout status -n "$TILLER_NAMESPACE" -w "deployment/tiller-deploy"
+ kubectl rollout status --namespace "${namespace}" --watch "deployment/tiller-deploy"
- if ! helm version --debug --tiller-namespace "${TILLER_NAMESPACE}"; then
+ if ! helm version --tiller-namespace "${namespace}" --debug; then
echo "Failed to init Tiller."
return 1
fi
}
function install_external_dns() {
- local release_name="dns-gitlab-review-app"
+ local namespace="${KUBE_NAMESPACE}"
+ local release="dns-gitlab-review-app"
local domain
domain=$(echo "${REVIEW_APPS_DOMAIN}" | awk -F. '{printf "%s.%s", $(NF-1), $NF}')
echoinfo "Installing external DNS for domain ${domain}..." true
- if ! deploy_exists "${KUBE_NAMESPACE}" "${release_name}" || previous_deploy_failed "${KUBE_NAMESPACE}" "${release_name}" ; then
+ if ! deploy_exists "${namespace}" "${release}" || previous_deploy_failed "${namespace}" "${release}" ; then
echoinfo "Installing external-dns Helm chart"
- helm repo update
+ helm repo update --tiller-namespace "${namespace}"
+
# Default requested: CPU => 0, memory => 0
- helm install stable/external-dns --version '^2.2.1' \
- -n "${release_name}" \
- --namespace "${KUBE_NAMESPACE}" \
+ # Chart > 2.6.1 has a problem with AWS so we're pinning it for now.
+ # See https://gitlab.com/gitlab-org/gitlab/issues/37269 and https://github.com/kubernetes-sigs/external-dns/issues/1262
+ helm install stable/external-dns \
+ --tiller-namespace "${namespace}" \
+ --namespace "${namespace}" \
+ --version '2.6.1' \
+ --name "${release}" \
--set provider="aws" \
--set aws.credentials.secretKey="${REVIEW_APPS_AWS_SECRET_KEY}" \
--set aws.credentials.accessKey="${REVIEW_APPS_AWS_ACCESS_KEY}" \
--set aws.zoneType="public" \
--set aws.batchChangeSize=400 \
--set domainFilters[0]="${domain}" \
- --set txtOwnerId="${KUBE_NAMESPACE}" \
+ --set txtOwnerId="${namespace}" \
--set rbac.create="true" \
--set policy="sync" \
--set resources.requests.cpu=50m \
@@ -177,23 +215,35 @@ function install_external_dns() {
}
function create_application_secret() {
- echoinfo "Creating the ${CI_ENVIRONMENT_SLUG}-gitlab-initial-root-password secret in the ${KUBE_NAMESPACE} namespace..." true
-
- kubectl create secret generic -n "$KUBE_NAMESPACE" \
- "${CI_ENVIRONMENT_SLUG}-gitlab-initial-root-password" \
- --from-literal="password=${REVIEW_APPS_ROOT_PASSWORD}" \
- --dry-run -o json | kubectl apply -f -
+ local namespace="${KUBE_NAMESPACE}"
+ local release="${CI_ENVIRONMENT_SLUG}"
+ local initial_root_password_shared_secret
+ local gitlab_license_shared_secret
+
+ initial_root_password_shared_secret=$(kubectl get secret --namespace ${namespace} --no-headers -o=custom-columns=NAME:.metadata.name shared-gitlab-initial-root-password | tail -n 1)
+ if [[ "${initial_root_password_shared_secret}" == "" ]]; then
+ echoinfo "Creating the 'shared-gitlab-initial-root-password' secret in the ${namespace} namespace..." true
+ kubectl create secret generic --namespace "${namespace}" \
+ "shared-gitlab-initial-root-password" \
+ --from-literal="password=${REVIEW_APPS_ROOT_PASSWORD}" \
+ --dry-run -o json | kubectl apply -f -
+ else
+ echoinfo "The 'shared-gitlab-initial-root-password' secret already exists in the ${namespace} namespace."
+ fi
if [ -z "${REVIEW_APPS_EE_LICENSE}" ]; then echo "License not found" && return; fi
- echoinfo "Creating the ${CI_ENVIRONMENT_SLUG}-gitlab-license secret in the ${KUBE_NAMESPACE} namespace..." true
-
- echo "${REVIEW_APPS_EE_LICENSE}" > /tmp/license.gitlab
-
- kubectl create secret generic -n "$KUBE_NAMESPACE" \
- "${CI_ENVIRONMENT_SLUG}-gitlab-license" \
- --from-file=license=/tmp/license.gitlab \
- --dry-run -o json | kubectl apply -f -
+ gitlab_license_shared_secret=$(kubectl get secret --namespace ${namespace} --no-headers -o=custom-columns=NAME:.metadata.name shared-gitlab-license | tail -n 1)
+ if [[ "${gitlab_license_shared_secret}" == "" ]]; then
+ echoinfo "Creating the 'shared-gitlab-license' secret in the ${namespace} namespace..." true
+ echo "${REVIEW_APPS_EE_LICENSE}" > /tmp/license.gitlab
+ kubectl create secret generic --namespace "${namespace}" \
+ "shared-gitlab-license" \
+ --from-file=license=/tmp/license.gitlab \
+ --dry-run -o json | kubectl apply -f -
+ else
+ echoinfo "The 'shared-gitlab-license' secret already exists in the ${namespace} namespace."
+ fi
}
function download_chart() {
@@ -217,13 +267,14 @@ function base_config_changed() {
}
function deploy() {
- local name="$CI_ENVIRONMENT_SLUG"
+ local namespace="${KUBE_NAMESPACE}"
+ local release="${CI_ENVIRONMENT_SLUG}"
local edition="${GITLAB_EDITION-ce}"
local base_config_file_ref="master"
- if [[ "$(base_config_changed)" == "true" ]]; then base_config_file_ref="$CI_COMMIT_SHA"; fi
+ if [[ "$(base_config_changed)" == "true" ]]; then base_config_file_ref="${CI_COMMIT_SHA}"; fi
local base_config_file="https://gitlab.com/gitlab-org/gitlab/raw/${base_config_file_ref}/scripts/review_apps/base-config.yaml"
- echoinfo "Deploying ${name}..." true
+ echoinfo "Deploying ${release}..." true
IMAGE_REPOSITORY="registry.gitlab.com/gitlab-org/build/cng-mirror"
gitlab_migrations_image_repository="${IMAGE_REPOSITORY}/gitlab-rails-${edition}"
@@ -237,47 +288,49 @@ function deploy() {
create_application_secret
HELM_CMD=$(cat << EOF
- helm upgrade --install \
+ helm upgrade \
+ --tiller-namespace="${namespace}" \
+ --namespace="${namespace}" \
+ --install \
--wait \
--timeout 900 \
- --set ci.branch="$CI_COMMIT_REF_NAME" \
- --set ci.commit.sha="$CI_COMMIT_SHORT_SHA" \
- --set ci.job.url="$CI_JOB_URL" \
- --set ci.pipeline.url="$CI_PIPELINE_URL" \
- --set releaseOverride="$CI_ENVIRONMENT_SLUG" \
- --set global.hosts.hostSuffix="$HOST_SUFFIX" \
- --set global.hosts.domain="$REVIEW_APPS_DOMAIN" \
- --set gitlab.migrations.image.repository="$gitlab_migrations_image_repository" \
- --set gitlab.migrations.image.tag="$CI_COMMIT_REF_SLUG" \
- --set gitlab.gitaly.image.repository="$gitlab_gitaly_image_repository" \
- --set gitlab.gitaly.image.tag="v$GITALY_VERSION" \
- --set gitlab.gitlab-shell.image.repository="$gitlab_shell_image_repository" \
- --set gitlab.gitlab-shell.image.tag="v$GITLAB_SHELL_VERSION" \
- --set gitlab.sidekiq.image.repository="$gitlab_sidekiq_image_repository" \
- --set gitlab.sidekiq.image.tag="$CI_COMMIT_REF_SLUG" \
- --set gitlab.unicorn.image.repository="$gitlab_unicorn_image_repository" \
- --set gitlab.unicorn.image.tag="$CI_COMMIT_REF_SLUG" \
- --set gitlab.unicorn.workhorse.image="$gitlab_workhorse_image_repository" \
- --set gitlab.unicorn.workhorse.tag="$CI_COMMIT_REF_SLUG" \
- --set gitlab.task-runner.image.repository="$gitlab_task_runner_image_repository" \
- --set gitlab.task-runner.image.tag="$CI_COMMIT_REF_SLUG"
+ --set ci.branch="${CI_COMMIT_REF_NAME}" \
+ --set ci.commit.sha="${CI_COMMIT_SHORT_SHA}" \
+ --set ci.job.url="${CI_JOB_URL}" \
+ --set ci.pipeline.url="${CI_PIPELINE_URL}" \
+ --set releaseOverride="${release}" \
+ --set global.hosts.hostSuffix="${HOST_SUFFIX}" \
+ --set global.hosts.domain="${REVIEW_APPS_DOMAIN}" \
+ --set gitlab.migrations.image.repository="${gitlab_migrations_image_repository}" \
+ --set gitlab.migrations.image.tag="${CI_COMMIT_REF_SLUG}" \
+ --set gitlab.gitaly.image.repository="${gitlab_gitaly_image_repository}" \
+ --set gitlab.gitaly.image.tag="v${GITALY_VERSION}" \
+ --set gitlab.gitlab-shell.image.repository="${gitlab_shell_image_repository}" \
+ --set gitlab.gitlab-shell.image.tag="v${GITLAB_SHELL_VERSION}" \
+ --set gitlab.sidekiq.image.repository="${gitlab_sidekiq_image_repository}" \
+ --set gitlab.sidekiq.image.tag="${CI_COMMIT_REF_SLUG}" \
+ --set gitlab.unicorn.image.repository="${gitlab_unicorn_image_repository}" \
+ --set gitlab.unicorn.image.tag="${CI_COMMIT_REF_SLUG}" \
+ --set gitlab.unicorn.workhorse.image="${gitlab_workhorse_image_repository}" \
+ --set gitlab.unicorn.workhorse.tag="${CI_COMMIT_REF_SLUG}" \
+ --set gitlab.task-runner.image.repository="${gitlab_task_runner_image_repository}" \
+ --set gitlab.task-runner.image.tag="${CI_COMMIT_REF_SLUG}"
EOF
)
if [ -n "${REVIEW_APPS_EE_LICENSE}" ]; then
HELM_CMD=$(cat << EOF
${HELM_CMD} \
- --set global.gitlab.license.secret="${CI_ENVIRONMENT_SLUG}-gitlab-license"
+ --set global.gitlab.license.secret="shared-gitlab-license"
EOF
)
fi
HELM_CMD=$(cat << EOF
${HELM_CMD} \
- --namespace="$KUBE_NAMESPACE" \
--version="${CI_PIPELINE_ID}-${CI_JOB_ID}" \
-f "${base_config_file}" \
- "${name}" .
+ "${release}" .
EOF
)
@@ -288,11 +341,14 @@ EOF
}
function display_deployment_debug() {
+ local namespace="${KUBE_NAMESPACE}"
+ local release="${CI_ENVIRONMENT_SLUG}"
+
# Get all pods for this release
- echoinfo "Pods for release ${CI_ENVIRONMENT_SLUG}"
- kubectl get pods -n "$KUBE_NAMESPACE" -lrelease=${CI_ENVIRONMENT_SLUG}
+ echoinfo "Pods for release ${release}"
+ kubectl get pods --namespace "${namespace}" -lrelease=${release}
# Get all non-completed jobs
- echoinfo "Unsuccessful Jobs for release ${CI_ENVIRONMENT_SLUG}"
- kubectl get jobs -n "$KUBE_NAMESPACE" -lrelease=${CI_ENVIRONMENT_SLUG} --field-selector=status.successful!=1
+ echoinfo "Unsuccessful Jobs for release ${release}"
+ kubectl get jobs --namespace "${namespace}" -lrelease=${release} --field-selector=status.successful!=1
}
diff --git a/scripts/security-harness b/scripts/security-harness
index 8369cf06223..a1642489fe2 100755
--- a/scripts/security-harness
+++ b/scripts/security-harness
@@ -1,57 +1,99 @@
#!/usr/bin/env ruby
+# frozen_string_literal: true
+
require 'digest'
require 'fileutils'
-harness_path = File.expand_path('../.git/security_harness', __dir__)
-hook_path = File.expand_path("../.git/hooks/pre-push", __dir__)
+if ENV['NO_COLOR']
+ SHELL_RED = ''
+ SHELL_GREEN = ''
+ SHELL_YELLOW = ''
+ SHELL_CLEAR = ''
+else
+ SHELL_RED = "\e[1;31m"
+ SHELL_GREEN = "\e[1;32m"
+ SHELL_YELLOW = "\e[1;33m"
+ SHELL_CLEAR = "\e[0m"
+end
-if File.exist?(hook_path)
- # Deal with a pre-existing hook
- source_sum = Digest::SHA256.hexdigest(DATA.read)
- dest_sum = Digest::SHA256.file(hook_path).hexdigest
+HOOK_PATH = File.expand_path("../.git/hooks/pre-push", __dir__)
+HOOK_DATA = <<~HOOK
+ #!/bin/bash
- if source_sum != dest_sum
- puts "#{hook_path} exists and is different from our hook!"
- puts "Remove it and re-run this script to continue."
+ set -e
- exit 1
- end
-else
- File.open(hook_path, 'w') do |file|
- IO.copy_stream(DATA, file)
- end
+ url="$2"
+ harness=`dirname "$0"`/../security_harness
+
+ if [ -e "$harness" ]
+ then
+ if [[ ("$url" != *"dev.gitlab.org"*) && ("$url" != *"gitlab-org/security/"*) ]]
+ then
+ echo "Pushing to remotes other than dev.gitlab.org and gitlab.com/gitlab-org/security has been disabled!"
+ echo "Run scripts/security-harness to disable this check."
+ echo
+
+ exit 1
+ fi
+ fi
+HOOK
- File.chmod(0755, hook_path)
+def write_hook
+ FileUtils.mkdir_p(File.dirname(HOOK_PATH))
+ File.open(HOOK_PATH, 'w') do |file|
+ file.write(HOOK_DATA)
+ end
+ File.chmod(0755, HOOK_PATH)
end
# Toggle the harness on or off
-if File.exist?(harness_path)
- FileUtils.rm(harness_path)
+def toggle
+ harness_path = File.expand_path('../.git/security_harness', __dir__)
- puts "Security harness removed -- you can now push to all remotes."
-else
- FileUtils.touch(harness_path)
+ if File.exist?(harness_path)
+ FileUtils.rm(harness_path)
- puts "Security harness installed -- you will only be able to push to dev.gitlab.org!"
-end
+ puts "#{SHELL_YELLOW}Security harness removed -- you can now push to all remotes.#{SHELL_CLEAR}"
+ else
+ FileUtils.touch(harness_path)
-__END__
-#!/bin/bash
+ puts "#{SHELL_GREEN}Security harness installed -- you will only be able to push to dev.gitlab.org or gitlab.com/gitlab-org/security!#{SHELL_CLEAR}"
+ end
+end
-set -e
+# If we were to change the script and then check for a pre-existing hook before
+# writing, the check would fail even if the user had an unmodified version of
+# the old hook. Checking previous version hashes allows us to safely overwrite a
+# script that differs from the current version, as long as it's an old one and
+# not custom.
+def previous_version?(dest_sum)
+ # SHA256 hashes of previous iterations of the script contained in `DATA`
+ %w[
+ 010bf0363a911ebab2bd5728d80795ed02388da51815f0b2530d08ae8ac574f0
+ ].include?(dest_sum)
+end
-url="$2"
-harness=`dirname "$0"`/../security_harness
+if !File.exist?(HOOK_PATH)
+ write_hook
+ toggle
+else
+ # Deal with a pre-existing hook
+ source_sum = Digest::SHA256.hexdigest(HOOK_DATA)
+ dest_sum = Digest::SHA256.file(HOOK_PATH).hexdigest
-if [ -e "$harness" ]
-then
- if [[ "$url" != *"dev.gitlab.org"* ]]
- then
- echo "Pushing to remotes other than dev.gitlab.org has been disabled!"
- echo "Run scripts/security-harness to disable this check."
- echo
+ if previous_version?(dest_sum)
+ # Upgrading from a previous version, update in-place
+ write_hook
+ toggle
+ elsif source_sum != dest_sum
+ # Pre-existing hook we didn't create; do nothing
+ puts "#{SHELL_RED}#{HOOK_PATH} exists and is different from our hook!"
+ puts "Remove it and re-run this script to continue.#{SHELL_CLEAR}"
exit 1
- fi
-fi
+ else
+ # No hook update needed, just toggle
+ toggle
+ end
+end
diff --git a/scripts/static-analysis b/scripts/static-analysis
index b7f7100c365..1392a4f6a23 100755
--- a/scripts/static-analysis
+++ b/scripts/static-analysis
@@ -35,7 +35,8 @@ def jobs_to_run(node_index, node_total)
%w[yarn run prettier-all],
%w[bundle exec rubocop --parallel],
%w[scripts/lint-conflicts.sh],
- %w[scripts/lint-rugged]
+ %w[scripts/lint-rugged],
+ %w[scripts/frontend/check_no_partial_karma_jest.sh]
]
case node_total
diff --git a/scripts/sync-stable-branch.sh b/scripts/sync-stable-branch.sh
index fc62453d743..b44bf26a151 100644
--- a/scripts/sync-stable-branch.sh
+++ b/scripts/sync-stable-branch.sh
@@ -23,10 +23,24 @@ then
exit 1
fi
+if [[ "$SOURCE_PROJECT" == '' ]]
+then
+ echo 'The variable SOURCE_PROJECT must be set to a non-empy value'
+ exit 1
+fi
+
+if [[ "$TARGET_PROJECT" == '' ]]
+then
+ echo 'The variable TARGET_PROJECT must be set to a non-empy value'
+ exit 1
+fi
+
curl -X POST \
-F token="$MERGE_TRAIN_TRIGGER_TOKEN" \
-F ref=master \
-F "variables[MERGE_FOSS]=1" \
-F "variables[SOURCE_BRANCH]=$CI_COMMIT_REF_NAME" \
-F "variables[TARGET_BRANCH]=${CI_COMMIT_REF_NAME/-ee/}" \
+ -F "variables[SOURCE_PROJECT]=$SOURCE_PROJECT" \
+ -F "variables[TARGET_PROJECT]=$TARGET_PROJECT" \
"$MERGE_TRAIN_TRIGGER_URL"
diff --git a/scripts/trigger-build b/scripts/trigger-build
index 74c1df258c0..537b2692b27 100755
--- a/scripts/trigger-build
+++ b/scripts/trigger-build
@@ -71,7 +71,7 @@ module Trigger
# Can be overridden
def version_param_value(version_file)
- File.read(version_file).strip
+ ENV[version_file]&.strip || File.read(version_file).strip
end
def variables
diff --git a/scripts/utils.sh b/scripts/utils.sh
index f0f08e2e1c5..7eae9531f74 100644
--- a/scripts/utils.sh
+++ b/scripts/utils.sh
@@ -14,11 +14,7 @@ function retry() {
}
function setup_db_user_only() {
- if [ "$GITLAB_DATABASE" = "postgresql" ]; then
- source scripts/create_postgres_user.sh
- else
- source scripts/create_mysql_user.sh
- fi
+ source scripts/create_postgres_user.sh
}
function setup_db() {
@@ -26,10 +22,6 @@ function setup_db() {
bundle exec rake db:drop db:create db:schema:load db:migrate
- if [ "$GITLAB_DATABASE" = "mysql" ]; then
- bundle exec rake add_limits_mysql
- fi
-
bundle exec rake gitlab:db:setup_ee
}
@@ -42,7 +34,8 @@ function install_api_client_dependencies_with_apt() {
}
function install_gitlab_gem() {
- gem install gitlab --no-document
+ gem install httparty --no-document --version 0.17.3
+ gem install gitlab --no-document --version 4.13.0
}
function echoerr() {
diff --git a/spec/controllers/abuse_reports_controller_spec.rb b/spec/controllers/abuse_reports_controller_spec.rb
index e573ef4be49..087b564dddb 100644
--- a/spec/controllers/abuse_reports_controller_spec.rb
+++ b/spec/controllers/abuse_reports_controller_spec.rb
@@ -24,7 +24,7 @@ describe AbuseReportsController do
get :new, params: { user_id: user_id }
expect(response).to redirect_to root_path
- expect(flash[:alert]).to eq('Cannot create the abuse report. The user has been deleted.')
+ expect(flash[:alert]).to eq(_('Cannot create the abuse report. The user has been deleted.'))
end
end
@@ -35,7 +35,7 @@ describe AbuseReportsController do
get :new, params: { user_id: user.id }
expect(response).to redirect_to user
- expect(flash[:alert]).to eq('Cannot create the abuse report. This user has been blocked.')
+ expect(flash[:alert]).to eq(_('Cannot create the abuse report. This user has been blocked.'))
end
end
end
diff --git a/spec/controllers/admin/application_settings_controller_spec.rb b/spec/controllers/admin/application_settings_controller_spec.rb
index bc14e9112a1..fa575ba2eae 100644
--- a/spec/controllers/admin/application_settings_controller_spec.rb
+++ b/spec/controllers/admin/application_settings_controller_spec.rb
@@ -95,6 +95,13 @@ describe Admin::ApplicationSettingsController do
expect(ApplicationSetting.current.default_project_creation).to eq(::Gitlab::Access::MAINTAINER_PROJECT_ACCESS)
end
+ it 'updates minimum_password_length setting' do
+ put :update, params: { application_setting: { minimum_password_length: 10 } }
+
+ expect(response).to redirect_to(admin_application_settings_path)
+ expect(ApplicationSetting.current.minimum_password_length).to eq(10)
+ end
+
context 'external policy classification settings' do
let(:settings) do
{
diff --git a/spec/controllers/admin/clusters_controller_spec.rb b/spec/controllers/admin/clusters_controller_spec.rb
index ebae931764d..f27519496df 100644
--- a/spec/controllers/admin/clusters_controller_spec.rb
+++ b/spec/controllers/admin/clusters_controller_spec.rb
@@ -84,29 +84,11 @@ describe Admin::ClustersController do
GoogleApi::CloudPlatform::Client.session_key_for_redirect_uri(key)
end
- before do
- stub_feature_flags(create_eks_clusters: false)
- allow(SecureRandom).to receive(:hex).and_return(key)
- end
-
- it 'has authorize_url' do
- get_new
-
- expect(assigns(:authorize_url)).to include(key)
- expect(session[session_key_for_redirect_uri]).to eq(new_admin_cluster_path)
- end
-
- context 'when create_eks_clusters feature flag is enabled' do
- before do
- stub_feature_flags(create_eks_clusters: true)
- end
-
- context 'when selected provider is gke and no valid gcp token exists' do
- it 'redirects to gcp authorize_url' do
- get_new
+ context 'when selected provider is gke and no valid gcp token exists' do
+ it 'redirects to gcp authorize_url' do
+ get_new
- expect(response).to redirect_to(assigns(:authorize_url))
- end
+ expect(response).to redirect_to(assigns(:authorize_url))
end
end
end
@@ -399,10 +381,15 @@ describe Admin::ClustersController do
post :authorize_aws_role, params: params
end
+ before do
+ allow(Clusters::Aws::FetchCredentialsService).to receive(:new)
+ .and_return(double(execute: double))
+ end
+
it 'creates an Aws::Role record' do
expect { go }.to change { Aws::Role.count }
- expect(response.status).to eq 201
+ expect(response.status).to eq 200
role = Aws::Role.last
expect(role.user).to eq admin
@@ -427,18 +414,24 @@ describe Admin::ClustersController do
end
end
- describe 'DELETE revoke AWS role for EKS cluster' do
- let!(:role) { create(:aws_role, user: admin) }
+ describe 'DELETE clear cluster cache' do
+ let(:cluster) { create(:cluster, :instance) }
+ let!(:kubernetes_namespace) do
+ create(:cluster_kubernetes_namespace,
+ cluster: cluster,
+ project: create(:project)
+ )
+ end
def go
- delete :revoke_aws_role
+ delete :clear_cache, params: { id: cluster }
end
- it 'deletes the Aws::Role record' do
- expect { go }.to change { Aws::Role.count }
+ it 'deletes the namespaces associated with the cluster' do
+ expect { go }.to change { Clusters::KubernetesNamespace.count }
- expect(response.status).to eq 204
- expect(admin.reload_aws_role).to be_nil
+ expect(response).to redirect_to(admin_cluster_path(cluster))
+ expect(cluster.kubernetes_namespaces).to be_empty
end
describe 'security' do
diff --git a/spec/controllers/admin/identities_controller_spec.rb b/spec/controllers/admin/identities_controller_spec.rb
index 256aafe09f8..f483c88d18d 100644
--- a/spec/controllers/admin/identities_controller_spec.rb
+++ b/spec/controllers/admin/identities_controller_spec.rb
@@ -13,7 +13,7 @@ describe Admin::IdentitiesController do
let(:user) { create(:omniauth_user, provider: 'ldapmain', extern_uid: 'uid=myuser,ou=people,dc=example,dc=com') }
it 'repairs ldap blocks' do
- expect_next_instance_of(RepairLdapBlockedUserService) do |instance|
+ expect_next_instance_of(::Users::RepairLdapBlockedService) do |instance|
expect(instance).to receive(:execute)
end
@@ -25,7 +25,7 @@ describe Admin::IdentitiesController do
let(:user) { create(:omniauth_user, provider: 'ldapmain', extern_uid: 'uid=myuser,ou=people,dc=example,dc=com') }
it 'repairs ldap blocks' do
- expect_next_instance_of(RepairLdapBlockedUserService) do |instance|
+ expect_next_instance_of(::Users::RepairLdapBlockedService) do |instance|
expect(instance).to receive(:execute)
end
diff --git a/spec/controllers/admin/sessions_controller_spec.rb b/spec/controllers/admin/sessions_controller_spec.rb
index c1cb57c0b9d..bd0bb0bd81f 100644
--- a/spec/controllers/admin/sessions_controller_spec.rb
+++ b/spec/controllers/admin/sessions_controller_spec.rb
@@ -17,7 +17,7 @@ describe Admin::SessionsController, :do_not_mock_admin_mode do
get :new
expect(response).to have_gitlab_http_status(:not_found)
- expect(controller.send(:current_user_mode).admin_mode?).to be(false)
+ expect(controller.current_user_mode.admin_mode?).to be(false)
end
end
@@ -28,7 +28,21 @@ describe Admin::SessionsController, :do_not_mock_admin_mode do
get :new
expect(response).to render_template :new
- expect(controller.send(:current_user_mode).admin_mode?).to be(false)
+ expect(controller.current_user_mode.admin_mode?).to be(false)
+ end
+
+ context 'already in admin mode' do
+ before do
+ controller.current_user_mode.request_admin_mode!
+ controller.current_user_mode.enable_admin_mode!(password: user.password)
+ end
+
+ it 'redirects to original location' do
+ get :new
+
+ expect(response).to redirect_to(admin_root_path)
+ expect(controller.current_user_mode.admin_mode?).to be(true)
+ end
end
end
end
@@ -39,7 +53,7 @@ describe Admin::SessionsController, :do_not_mock_admin_mode do
post :create
expect(response).to have_gitlab_http_status(:not_found)
- expect(controller.send(:current_user_mode).admin_mode?).to be(false)
+ expect(controller.current_user_mode.admin_mode?).to be(false)
end
end
@@ -47,24 +61,60 @@ describe Admin::SessionsController, :do_not_mock_admin_mode do
let(:user) { create(:admin) }
it 'sets admin mode with a valid password' do
- expect(controller.send(:current_user_mode).admin_mode?).to be(false)
+ expect(controller.current_user_mode.admin_mode?).to be(false)
controller.store_location_for(:redirect, admin_root_path)
+
+ # triggering the auth form will request admin mode
+ get :new
+
post :create, params: { password: user.password }
expect(response).to redirect_to admin_root_path
- expect(controller.send(:current_user_mode).admin_mode?).to be(true)
+ expect(controller.current_user_mode.admin_mode?).to be(true)
end
it 'fails with an invalid password' do
- expect(controller.send(:current_user_mode).admin_mode?).to be(false)
+ expect(controller.current_user_mode.admin_mode?).to be(false)
controller.store_location_for(:redirect, admin_root_path)
+ # triggering the auth form will request admin mode
+ get :new
+
post :create, params: { password: '' }
expect(response).to render_template :new
- expect(controller.send(:current_user_mode).admin_mode?).to be(false)
+ expect(controller.current_user_mode.admin_mode?).to be(false)
+ end
+
+ it 'fails if not requested first' do
+ expect(controller.current_user_mode.admin_mode?).to be(false)
+
+ controller.store_location_for(:redirect, admin_root_path)
+
+ # do not trigger the auth form
+
+ post :create, params: { password: user.password }
+
+ expect(response).to redirect_to(new_admin_session_path)
+ expect(controller.current_user_mode.admin_mode?).to be(false)
+ end
+
+ it 'fails if request period expired' do
+ expect(controller.current_user_mode.admin_mode?).to be(false)
+
+ controller.store_location_for(:redirect, admin_root_path)
+
+ # triggering the auth form will request admin mode
+ get :new
+
+ Timecop.freeze(Gitlab::Auth::CurrentUserMode::ADMIN_MODE_REQUESTED_GRACE_PERIOD.from_now) do
+ post :create, params: { password: user.password }
+
+ expect(response).to redirect_to(new_admin_session_path)
+ expect(controller.current_user_mode.admin_mode?).to be(false)
+ end
end
end
end
@@ -75,7 +125,7 @@ describe Admin::SessionsController, :do_not_mock_admin_mode do
get :destroy
expect(response).to have_gitlab_http_status(404)
- expect(controller.send(:current_user_mode).admin_mode?).to be(false)
+ expect(controller.current_user_mode.admin_mode?).to be(false)
end
end
@@ -83,15 +133,17 @@ describe Admin::SessionsController, :do_not_mock_admin_mode do
let(:user) { create(:admin) }
it 'disables admin mode and redirects to main page' do
- expect(controller.send(:current_user_mode).admin_mode?).to be(false)
+ expect(controller.current_user_mode.admin_mode?).to be(false)
+
+ get :new
post :create, params: { password: user.password }
- expect(controller.send(:current_user_mode).admin_mode?).to be(true)
+ expect(controller.current_user_mode.admin_mode?).to be(true)
get :destroy
expect(response).to have_gitlab_http_status(:found)
expect(response).to redirect_to(root_path)
- expect(controller.send(:current_user_mode).admin_mode?).to be(false)
+ expect(controller.current_user_mode.admin_mode?).to be(false)
end
end
end
diff --git a/spec/controllers/admin/users_controller_spec.rb b/spec/controllers/admin/users_controller_spec.rb
index 50ba7418d2c..f11b5e798c9 100644
--- a/spec/controllers/admin/users_controller_spec.rb
+++ b/spec/controllers/admin/users_controller_spec.rb
@@ -155,7 +155,7 @@ describe Admin::UsersController do
put :block, params: { id: user.username }
user.reload
expect(user.blocked?).to be_truthy
- expect(flash[:notice]).to eq 'Successfully blocked'
+ expect(flash[:notice]).to eq _('Successfully blocked')
end
end
@@ -171,7 +171,7 @@ describe Admin::UsersController do
put :unblock, params: { id: user.username }
user.reload
expect(user.blocked?).to be_truthy
- expect(flash[:alert]).to eq 'This user cannot be unlocked manually from GitLab'
+ expect(flash[:alert]).to eq _('This user cannot be unlocked manually from GitLab')
end
end
@@ -184,7 +184,7 @@ describe Admin::UsersController do
put :unblock, params: { id: user.username }
user.reload
expect(user.blocked?).to be_falsey
- expect(flash[:notice]).to eq 'Successfully unblocked'
+ expect(flash[:notice]).to eq _('Successfully unblocked')
end
end
end
@@ -234,7 +234,7 @@ describe Admin::UsersController do
go
expect(flash[:notice])
- .to eq 'Two-factor Authentication has been disabled for this user'
+ .to eq _('Two-factor Authentication has been disabled for this user')
end
def go
@@ -249,7 +249,9 @@ describe Admin::UsersController do
it 'shows only one error message for an invalid email' do
post :create, params: { user: attributes_for(:user, email: 'bogus') }
- expect(assigns[:user].errors).to contain_exactly("Email is invalid")
+
+ errors = assigns[:user].errors
+ expect(errors).to contain_exactly(errors.full_message(:email, I18n.t('errors.messages.invalid')))
end
end
@@ -346,7 +348,7 @@ describe Admin::UsersController do
it "shows a notice" do
post :impersonate, params: { id: user.username }
- expect(flash[:alert]).to eq("You cannot impersonate a blocked user")
+ expect(flash[:alert]).to eq(_('You cannot impersonate a blocked user'))
end
it "doesn't sign us in as the user" do
diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb
index 4a10e7b5325..e72ab16f62a 100644
--- a/spec/controllers/application_controller_spec.rb
+++ b/spec/controllers/application_controller_spec.rb
@@ -90,14 +90,6 @@ describe ApplicationController do
let(:format) { :html }
it_behaves_like 'setting gon variables'
-
- context 'for peek requests' do
- before do
- request.path = '/-/peek'
- end
-
- it_behaves_like 'not setting gon variables'
- end
end
context 'with json format' do
@@ -105,6 +97,12 @@ describe ApplicationController do
it_behaves_like 'not setting gon variables'
end
+
+ context 'with atom format' do
+ let(:format) { :atom }
+
+ it_behaves_like 'not setting gon variables'
+ end
end
describe 'session expiration' do
@@ -816,6 +814,7 @@ describe ApplicationController do
context 'that re-authenticated' do
before do
+ Gitlab::Auth::CurrentUserMode.new(user).request_admin_mode!
Gitlab::Auth::CurrentUserMode.new(user).enable_admin_mode!(password: user.password)
end
@@ -869,5 +868,31 @@ describe ApplicationController do
it { is_expected.not_to redirect_to users_sign_up_welcome_path }
end
+
+ describe 'rescue_from Gitlab::Auth::IpBlacklisted' do
+ controller(described_class) do
+ skip_before_action :authenticate_user!
+
+ def index
+ raise Gitlab::Auth::IpBlacklisted
+ end
+ end
+
+ it 'returns a 403 and logs the request' do
+ expect(Gitlab::AuthLogger).to receive(:error).with({
+ message: 'Rack_Attack',
+ env: :blocklist,
+ remote_ip: '1.2.3.4',
+ request_method: 'GET',
+ path: '/anonymous'
+ })
+
+ request.remote_addr = '1.2.3.4'
+
+ get :index
+
+ expect(response).to have_gitlab_http_status(:forbidden)
+ end
+ end
end
end
diff --git a/spec/controllers/autocomplete_controller_spec.rb b/spec/controllers/autocomplete_controller_spec.rb
index 6cdd61e7abd..4227a4453a3 100644
--- a/spec/controllers/autocomplete_controller_spec.rb
+++ b/spec/controllers/autocomplete_controller_spec.rb
@@ -365,36 +365,79 @@ describe AutocompleteController do
expect(json_response[3]).to match('name' => 'thumbsdown')
end
end
+ end
- context 'Get merge_request_target_branches' do
- let(:user2) { create(:user) }
- let!(:merge_request1) { create(:merge_request, source_project: project, target_branch: 'feature') }
+ context 'Get merge_request_target_branches' do
+ let!(:merge_request) { create(:merge_request, source_project: project, target_branch: 'feature') }
- context 'unauthorized user' do
- it 'returns empty json' do
- get :merge_request_target_branches
+ context 'anonymous user' do
+ it 'returns empty json' do
+ get :merge_request_target_branches, params: { project_id: project.id }
- expect(json_response).to be_empty
- end
+ expect(response).to have_gitlab_http_status(200)
+ expect(json_response).to be_empty
end
+ end
- context 'sign in as user without any accesible merge requests' do
- it 'returns empty json' do
- sign_in(user2)
- get :merge_request_target_branches
+ context 'user without any accessible merge requests' do
+ it 'returns empty json' do
+ sign_in(create(:user))
- expect(json_response).to be_empty
- end
+ get :merge_request_target_branches, params: { project_id: project.id }
+
+ expect(response).to have_gitlab_http_status(200)
+ expect(json_response).to be_empty
end
+ end
- context 'sign in as user with a accesible merge request' do
- it 'returns json' do
+ context 'user with an accessible merge request but no scope' do
+ where(
+ params: [
+ {},
+ { group_id: ' ' },
+ { project_id: ' ' },
+ { group_id: ' ', project_id: ' ' }
+ ]
+ )
+
+ with_them do
+ it 'returns an error' do
sign_in(user)
- get :merge_request_target_branches
- expect(json_response).to contain_exactly({ 'title' => 'feature' })
+ get :merge_request_target_branches, params: params
+
+ expect(response).to have_gitlab_http_status(400)
+ expect(json_response).to eq({ 'error' => 'At least one of group_id or project_id must be specified' })
end
end
end
+
+ context 'user with an accessible merge request by project' do
+ it 'returns json' do
+ sign_in(user)
+
+ get :merge_request_target_branches, params: { project_id: project.id }
+
+ expect(response).to have_gitlab_http_status(200)
+ expect(json_response).to contain_exactly({ 'title' => 'feature' })
+ end
+ end
+
+ context 'user with an accessible merge request by group' do
+ let(:group) { create(:group) }
+ let(:project) { create(:project, namespace: group) }
+ let(:user) { create(:user) }
+
+ it 'returns json' do
+ group.add_owner(user)
+
+ sign_in(user)
+
+ get :merge_request_target_branches, params: { group_id: group.id }
+
+ expect(response).to have_gitlab_http_status(200)
+ expect(json_response).to contain_exactly({ 'title' => 'feature' })
+ end
+ end
end
end
diff --git a/spec/controllers/groups/clusters_controller_spec.rb b/spec/controllers/groups/clusters_controller_spec.rb
index d027405703b..cf90d388a61 100644
--- a/spec/controllers/groups/clusters_controller_spec.rb
+++ b/spec/controllers/groups/clusters_controller_spec.rb
@@ -97,29 +97,15 @@ describe Groups::ClustersController do
end
before do
- stub_feature_flags(create_eks_clusters: false)
allow(SecureRandom).to receive(:hex).and_return(key)
end
- it 'has authorize_url' do
+ it 'redirects to gcp authorize_url' do
go
expect(assigns(:authorize_url)).to include(key)
- expect(session[session_key_for_redirect_uri]).to eq(new_group_cluster_path(group))
- end
-
- context 'when create_eks_clusters feature flag is enabled' do
- before do
- stub_feature_flags(create_eks_clusters: true)
- end
-
- context 'when selected provider is gke and no valid gcp token exists' do
- it 'redirects to gcp authorize_url' do
- go
-
- expect(response).to redirect_to(assigns(:authorize_url))
- end
- end
+ expect(session[session_key_for_redirect_uri]).to eq(new_group_cluster_path(group, provider: :gcp))
+ expect(response).to redirect_to(assigns(:authorize_url))
end
end
@@ -457,10 +443,15 @@ describe Groups::ClustersController do
post :authorize_aws_role, params: params.merge(group_id: group)
end
+ before do
+ allow(Clusters::Aws::FetchCredentialsService).to receive(:new)
+ .and_return(double(execute: double))
+ end
+
it 'creates an Aws::Role record' do
expect { go }.to change { Aws::Role.count }
- expect(response.status).to eq 201
+ expect(response.status).to eq 200
role = Aws::Role.last
expect(role.user).to eq user
@@ -490,18 +481,28 @@ describe Groups::ClustersController do
end
end
- describe 'DELETE revoke AWS role for EKS cluster' do
- let!(:role) { create(:aws_role, user: user) }
+ describe 'DELETE clear cluster cache' do
+ let(:cluster) { create(:cluster, :group, groups: [group]) }
+ let!(:kubernetes_namespace) do
+ create(:cluster_kubernetes_namespace,
+ cluster: cluster,
+ project: create(:project)
+ )
+ end
def go
- delete :revoke_aws_role, params: { group_id: group }
+ delete :clear_cache,
+ params: {
+ group_id: group,
+ id: cluster
+ }
end
- it 'deletes the Aws::Role record' do
- expect { go }.to change { Aws::Role.count }
+ it 'deletes the namespaces associated with the cluster' do
+ expect { go }.to change { Clusters::KubernetesNamespace.count }
- expect(response.status).to eq 204
- expect(user.reload_aws_role).to be_nil
+ expect(response).to redirect_to(group_cluster_path(group, cluster))
+ expect(cluster.kubernetes_namespaces).to be_empty
end
describe 'security' do
diff --git a/spec/controllers/groups/group_members_controller_spec.rb b/spec/controllers/groups/group_members_controller_spec.rb
index 22f970133e3..a144d9e0786 100644
--- a/spec/controllers/groups/group_members_controller_spec.rb
+++ b/spec/controllers/groups/group_members_controller_spec.rb
@@ -5,7 +5,7 @@ require 'spec_helper'
describe Groups::GroupMembersController do
include ExternalAuthorizationServiceHelpers
- let(:user) { create(:user) }
+ let(:user) { create(:user) }
let(:group) { create(:group, :public) }
let(:membership) { create(:group_member, group: group) }
@@ -49,6 +49,35 @@ describe Groups::GroupMembersController do
expect(assigns(:invited_members).count).to eq(1)
end
end
+
+ context 'when user has owner access to subgroup' do
+ let(:nested_group) { create(:group, parent: group) }
+ let(:nested_group_user) { create(:user) }
+
+ before do
+ group.add_owner(user)
+ nested_group.add_owner(nested_group_user)
+ sign_in(user)
+ end
+
+ it 'lists inherited group members by default' do
+ get :index, params: { group_id: nested_group }
+
+ expect(assigns(:members).map(&:user_id)).to contain_exactly(user.id, nested_group_user.id)
+ end
+
+ it 'lists direct group members only' do
+ get :index, params: { group_id: nested_group, with_inherited_permissions: 'exclude' }
+
+ expect(assigns(:members).map(&:user_id)).to contain_exactly(nested_group_user.id)
+ end
+
+ it 'lists inherited group members only' do
+ get :index, params: { group_id: nested_group, with_inherited_permissions: 'only' }
+
+ expect(assigns(:members).map(&:user_id)).to contain_exactly(user.id)
+ end
+ end
end
describe 'POST create' do
diff --git a/spec/controllers/instance_statistics/conversational_development_index_controller_spec.rb b/spec/controllers/instance_statistics/dev_ops_score_controller_spec.rb
index 4935cb265bf..5825c6295f6 100644
--- a/spec/controllers/instance_statistics/conversational_development_index_controller_spec.rb
+++ b/spec/controllers/instance_statistics/dev_ops_score_controller_spec.rb
@@ -2,6 +2,6 @@
require 'spec_helper'
-describe InstanceStatistics::ConversationalDevelopmentIndexController do
+describe InstanceStatistics::DevOpsScoreController do
it_behaves_like 'instance statistics availability'
end
diff --git a/spec/controllers/oauth/applications_controller_spec.rb b/spec/controllers/oauth/applications_controller_spec.rb
index df836c2c3e3..270a2fcc1d6 100644
--- a/spec/controllers/oauth/applications_controller_spec.rb
+++ b/spec/controllers/oauth/applications_controller_spec.rb
@@ -62,6 +62,12 @@ describe Oauth::ApplicationsController do
end
end
+ context 'Helpers' do
+ it 'current_user_mode available' do
+ expect(subject.current_user_mode).not_to be_nil
+ end
+ end
+
def disable_user_oauth
allow(Gitlab::CurrentSettings.current_application_settings).to receive(:user_oauth_applications?).and_return(false)
end
diff --git a/spec/controllers/omniauth_callbacks_controller_spec.rb b/spec/controllers/omniauth_callbacks_controller_spec.rb
index 521dbe7ee23..6c5f36804e8 100644
--- a/spec/controllers/omniauth_callbacks_controller_spec.rb
+++ b/spec/controllers/omniauth_callbacks_controller_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-describe OmniauthCallbacksController, type: :controller do
+describe OmniauthCallbacksController, type: :controller, do_not_mock_admin_mode: true do
include LoginHelpers
describe 'omniauth' do
@@ -336,4 +336,109 @@ describe OmniauthCallbacksController, type: :controller do
end
end
end
+
+ describe 'enable admin mode' do
+ include_context 'custom session'
+
+ let(:provider) { :auth0 }
+ let(:extern_uid) { 'my-uid' }
+ let(:user) { create(:omniauth_user, extern_uid: extern_uid, provider: provider) }
+
+ def reauthenticate_and_check_admin_mode(expected_admin_mode:)
+ # Initially admin mode disabled
+ expect(subject.current_user_mode.admin_mode?).to be(false)
+
+ # Trigger OmniAuth admin mode flow and expect admin mode status
+ post provider
+
+ expect(request.env['warden']).to be_authenticated
+ expect(subject.current_user_mode.admin_mode?).to be(expected_admin_mode)
+ end
+
+ context 'user and admin mode requested by the same user' do
+ before do
+ sign_in user
+
+ mock_auth_hash(provider.to_s, extern_uid, user.email, additional_info: {})
+ stub_omniauth_provider(provider, context: request)
+ end
+
+ context 'with a regular user' do
+ it 'cannot be enabled' do
+ reauthenticate_and_check_admin_mode(expected_admin_mode: false)
+
+ expect(response).to redirect_to(root_path)
+ end
+ end
+
+ context 'with an admin user' do
+ let(:user) { create(:omniauth_user, extern_uid: extern_uid, provider: provider, access_level: :admin) }
+
+ context 'when requested first' do
+ before do
+ subject.current_user_mode.request_admin_mode!
+ end
+
+ it 'can be enabled' do
+ reauthenticate_and_check_admin_mode(expected_admin_mode: true)
+
+ expect(response).to redirect_to(admin_root_path)
+ end
+ end
+
+ context 'when not requested first' do
+ it 'cannot be enabled' do
+ reauthenticate_and_check_admin_mode(expected_admin_mode: false)
+
+ expect(response).to redirect_to(root_path)
+ end
+ end
+ end
+ end
+
+ context 'user and admin mode requested by different users' do
+ let(:reauth_extern_uid) { 'another_uid' }
+ let(:reauth_user) { create(:omniauth_user, extern_uid: reauth_extern_uid, provider: provider) }
+
+ before do
+ sign_in user
+
+ mock_auth_hash(provider.to_s, reauth_extern_uid, reauth_user.email, additional_info: {})
+ stub_omniauth_provider(provider, context: request)
+ end
+
+ context 'with a regular user' do
+ it 'cannot be enabled' do
+ reauthenticate_and_check_admin_mode(expected_admin_mode: false)
+
+ expect(response).to redirect_to(profile_account_path)
+ end
+ end
+
+ context 'with an admin user' do
+ let(:user) { create(:omniauth_user, extern_uid: extern_uid, provider: provider, access_level: :admin) }
+ let(:reauth_user) { create(:omniauth_user, extern_uid: reauth_extern_uid, provider: provider, access_level: :admin) }
+
+ context 'when requested first' do
+ before do
+ subject.current_user_mode.request_admin_mode!
+ end
+
+ it 'cannot be enabled' do
+ reauthenticate_and_check_admin_mode(expected_admin_mode: false)
+
+ expect(response).to redirect_to(new_admin_session_path)
+ end
+ end
+
+ context 'when not requested first' do
+ it 'cannot be enabled' do
+ reauthenticate_and_check_admin_mode(expected_admin_mode: false)
+
+ expect(response).to redirect_to(profile_account_path)
+ end
+ end
+ end
+ end
+ end
end
diff --git a/spec/controllers/passwords_controller_spec.rb b/spec/controllers/passwords_controller_spec.rb
index f2db024804d..bf9680329ce 100644
--- a/spec/controllers/passwords_controller_spec.rb
+++ b/spec/controllers/passwords_controller_spec.rb
@@ -16,7 +16,7 @@ describe PasswordsController do
post :create
expect(response).to have_gitlab_http_status(302)
- expect(flash[:alert]).to eq 'Password authentication is unavailable.'
+ expect(flash[:alert]).to eq _('Password authentication is unavailable.')
end
end
@@ -26,7 +26,7 @@ describe PasswordsController do
it 'prevents a password reset' do
post :create, params: { user: { email: user.email } }
- expect(flash[:alert]).to eq 'Password authentication is unavailable.'
+ expect(flash[:alert]).to eq _('Password authentication is unavailable.')
end
end
end
diff --git a/spec/controllers/profiles/preferences_controller_spec.rb b/spec/controllers/profiles/preferences_controller_spec.rb
index 929d57ebaec..e0e6d78bdcd 100644
--- a/spec/controllers/profiles/preferences_controller_spec.rb
+++ b/spec/controllers/profiles/preferences_controller_spec.rb
@@ -37,7 +37,7 @@ describe Profiles::PreferencesController do
context 'on successful update' do
it 'sets the flash' do
go
- expect(flash[:notice]).to eq 'Preferences saved.'
+ expect(flash[:notice]).to eq _('Preferences saved.')
end
it "changes the user's preferences" do
@@ -62,7 +62,7 @@ describe Profiles::PreferencesController do
go
- expect(flash[:alert]).to eq('Failed to save preferences.')
+ expect(flash[:alert]).to eq(_('Failed to save preferences.'))
end
end
diff --git a/spec/controllers/profiles/two_factor_auths_controller_spec.rb b/spec/controllers/profiles/two_factor_auths_controller_spec.rb
index bcda8573468..b02af0096a5 100644
--- a/spec/controllers/profiles/two_factor_auths_controller_spec.rb
+++ b/spec/controllers/profiles/two_factor_auths_controller_spec.rb
@@ -70,7 +70,7 @@ describe Profiles::TwoFactorAuthsController do
it 'assigns error' do
go
- expect(assigns[:error]).to eq 'Invalid pin code'
+ expect(assigns[:error]).to eq _('Invalid pin code')
end
it 'assigns qr_code' do
diff --git a/spec/controllers/profiles_controller_spec.rb b/spec/controllers/profiles_controller_spec.rb
index eb479d9a0aa..265f941e146 100644
--- a/spec/controllers/profiles_controller_spec.rb
+++ b/spec/controllers/profiles_controller_spec.rb
@@ -118,7 +118,7 @@ describe ProfilesController, :request_store do
format: :json
expect(response.status).to eq(200)
- expect(json_response['message']).to eq('Username successfully changed')
+ expect(json_response['message']).to eq(s_('Profiles|Username successfully changed'))
end
it 'renders an error message when the username was not updated' do
diff --git a/spec/controllers/projects/artifacts_controller_spec.rb b/spec/controllers/projects/artifacts_controller_spec.rb
index acc6935cb71..126bb1c9822 100644
--- a/spec/controllers/projects/artifacts_controller_spec.rb
+++ b/spec/controllers/projects/artifacts_controller_spec.rb
@@ -97,7 +97,7 @@ describe Projects::ArtifactsController do
it 'sets the notice' do
subject
- expect(flash[:notice]).to eq('Artifact was successfully deleted.')
+ expect(flash[:notice]).to eq(_('Artifact was successfully deleted.'))
end
context 'when artifact deletion fails' do
@@ -114,7 +114,7 @@ describe Projects::ArtifactsController do
it 'sets the notice' do
subject
- expect(flash[:notice]).to eq('Artifact could not be deleted.')
+ expect(flash[:notice]).to eq(_('Artifact could not be deleted.'))
end
end
diff --git a/spec/controllers/projects/branches_controller_spec.rb b/spec/controllers/projects/branches_controller_spec.rb
index affe0e0f970..4f8ab6a5def 100644
--- a/spec/controllers/projects/branches_controller_spec.rb
+++ b/spec/controllers/projects/branches_controller_spec.rb
@@ -178,7 +178,7 @@ describe Projects::BranchesController do
it 'redirects to newly created branch' do
result = { status: :success, branch: double(name: branch) }
- expect_any_instance_of(CreateBranchService).to receive(:execute).and_return(result)
+ expect_any_instance_of(::Branches::CreateService).to receive(:execute).and_return(result)
expect(SystemNoteService).to receive(:new_issue_branch).and_return(true)
post :create,
@@ -200,7 +200,7 @@ describe Projects::BranchesController do
it 'redirects to autodeploy setup page' do
result = { status: :success, branch: double(name: branch) }
- expect_any_instance_of(CreateBranchService).to receive(:execute).and_return(result)
+ expect_any_instance_of(::Branches::CreateService).to receive(:execute).and_return(result)
expect(SystemNoteService).to receive(:new_issue_branch).and_return(true)
post :create,
@@ -221,7 +221,7 @@ describe Projects::BranchesController do
create(:cluster, :provided_by_gcp, projects: [project])
- expect_any_instance_of(CreateBranchService).to receive(:execute).and_return(result)
+ expect_any_instance_of(::Branches::CreateService).to receive(:execute).and_return(result)
expect(SystemNoteService).to receive(:new_issue_branch).and_return(true)
post :create,
@@ -459,7 +459,7 @@ describe Projects::BranchesController do
end
it 'starts worker to delete merged branches' do
- expect_any_instance_of(DeleteMergedBranchesService).to receive(:async_execute)
+ expect_any_instance_of(::Branches::DeleteMergedService).to receive(:async_execute)
destroy_all_merged
end
diff --git a/spec/controllers/projects/clusters_controller_spec.rb b/spec/controllers/projects/clusters_controller_spec.rb
index 5a0512a042e..ab8bfc0cabe 100644
--- a/spec/controllers/projects/clusters_controller_spec.rb
+++ b/spec/controllers/projects/clusters_controller_spec.rb
@@ -95,29 +95,15 @@ describe Projects::ClustersController do
end
before do
- stub_feature_flags(create_eks_clusters: false)
allow(SecureRandom).to receive(:hex).and_return(key)
end
- it 'has authorize_url' do
+ it 'redirects to gcp authorize_url' do
go
expect(assigns(:authorize_url)).to include(key)
- expect(session[session_key_for_redirect_uri]).to eq(new_project_cluster_path(project))
- end
-
- context 'when create_eks_clusters feature flag is enabled' do
- before do
- stub_feature_flags(create_eks_clusters: true)
- end
-
- context 'when selected provider is gke and no valid gcp token exists' do
- it 'redirects to gcp authorize_url' do
- go
-
- expect(response).to redirect_to(assigns(:authorize_url))
- end
- end
+ expect(session[session_key_for_redirect_uri]).to eq(new_project_cluster_path(project, provider: :gcp))
+ expect(response).to redirect_to(assigns(:authorize_url))
end
end
@@ -458,10 +444,15 @@ describe Projects::ClustersController do
post :authorize_aws_role, params: params.merge(namespace_id: project.namespace, project_id: project)
end
+ before do
+ allow(Clusters::Aws::FetchCredentialsService).to receive(:new)
+ .and_return(double(execute: double))
+ end
+
it 'creates an Aws::Role record' do
expect { go }.to change { Aws::Role.count }
- expect(response.status).to eq 201
+ expect(response.status).to eq 200
role = Aws::Role.last
expect(role.user).to eq user
@@ -491,18 +482,24 @@ describe Projects::ClustersController do
end
end
- describe 'DELETE revoke AWS role for EKS cluster' do
- let!(:role) { create(:aws_role, user: user) }
+ describe 'DELETE clear cluster cache' do
+ let(:cluster) { create(:cluster, :project, projects: [project]) }
+ let!(:kubernetes_namespace) { create(:cluster_kubernetes_namespace, cluster: cluster) }
def go
- delete :revoke_aws_role, params: { namespace_id: project.namespace, project_id: project }
+ delete :clear_cache,
+ params: {
+ namespace_id: project.namespace,
+ project_id: project,
+ id: cluster
+ }
end
- it 'deletes the Aws::Role record' do
- expect { go }.to change { Aws::Role.count }
+ it 'deletes the namespaces associated with the cluster' do
+ expect { go }.to change { Clusters::KubernetesNamespace.count }
- expect(response.status).to eq 204
- expect(user.reload_aws_role).to be_nil
+ expect(response).to redirect_to(project_cluster_path(project, cluster))
+ expect(cluster.kubernetes_namespaces).to be_empty
end
describe 'security' do
diff --git a/spec/controllers/projects/deploy_keys_controller_spec.rb b/spec/controllers/projects/deploy_keys_controller_spec.rb
index 8b1ca2efab2..2c7c99eabf6 100644
--- a/spec/controllers/projects/deploy_keys_controller_spec.rb
+++ b/spec/controllers/projects/deploy_keys_controller_spec.rb
@@ -46,17 +46,27 @@ describe Projects::DeployKeysController do
create(:deploy_keys_project, project: project_private, deploy_key: create(:another_deploy_key))
end
- before do
- project2.add_developer(user)
+ context 'when user has access to all projects where deploy keys are used' do
+ before do
+ project2.add_developer(user)
+ end
+
+ it 'returns json in a correct format' do
+ get :index, params: params.merge(format: :json)
+
+ expect(json_response.keys).to match_array(%w(enabled_keys available_project_keys public_keys))
+ expect(json_response['enabled_keys'].count).to eq(1)
+ expect(json_response['available_project_keys'].count).to eq(1)
+ expect(json_response['public_keys'].count).to eq(1)
+ end
end
- it 'returns json in a correct format' do
- get :index, params: params.merge(format: :json)
+ context 'when user has no access to all projects where deploy keys are used' do
+ it 'returns json in a correct format' do
+ get :index, params: params.merge(format: :json)
- expect(json_response.keys).to match_array(%w(enabled_keys available_project_keys public_keys))
- expect(json_response['enabled_keys'].count).to eq(1)
- expect(json_response['available_project_keys'].count).to eq(1)
- expect(json_response['public_keys'].count).to eq(1)
+ expect(json_response['available_project_keys'].count).to eq(0)
+ end
end
end
end
diff --git a/spec/controllers/projects/environments/prometheus_api_controller_spec.rb b/spec/controllers/projects/environments/prometheus_api_controller_spec.rb
index b12964f8d8b..0940fccb431 100644
--- a/spec/controllers/projects/environments/prometheus_api_controller_spec.rb
+++ b/spec/controllers/projects/environments/prometheus_api_controller_spec.rb
@@ -63,9 +63,7 @@ describe Projects::Environments::PrometheusApiController do
context 'with nil query' do
let(:params_without_query) do
- params = environment_params
- params.delete(:query)
- params
+ environment_params.except(:query)
end
before do
@@ -88,8 +86,8 @@ describe Projects::Environments::PrometheusApiController do
it 'returns 204 no_content' do
get :proxy, params: environment_params
- expect(json_response['status']).to eq('processing')
- expect(json_response['message']).to eq('Not ready yet. Try again later.')
+ expect(json_response['status']).to eq(_('processing'))
+ expect(json_response['message']).to eq(_('Not ready yet. Try again later.'))
expect(response).to have_gitlab_http_status(:no_content)
end
end
diff --git a/spec/controllers/projects/environments/sample_metrics_controller_spec.rb b/spec/controllers/projects/environments/sample_metrics_controller_spec.rb
new file mode 100644
index 00000000000..4faa3ecb567
--- /dev/null
+++ b/spec/controllers/projects/environments/sample_metrics_controller_spec.rb
@@ -0,0 +1,64 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Projects::Environments::SampleMetricsController do
+ include StubENV
+
+ let_it_be(:project) { create(:project) }
+ let_it_be(:environment) { create(:environment, project: project) }
+ let_it_be(:user) { create(:user) }
+
+ before(:context) do
+ RSpec::Mocks.with_temporary_scope do
+ stub_env('USE_SAMPLE_METRICS', 'true')
+ Rails.application.reload_routes!
+ end
+ end
+
+ after(:context) do
+ Rails.application.reload_routes!
+ end
+
+ before do
+ project.add_reporter(user)
+ sign_in(user)
+ end
+
+ describe 'GET #query' do
+ context 'when the file is not found' do
+ before do
+ get :query, params: environment_params
+ end
+
+ it 'returns a 404' do
+ expect(response).to have_gitlab_http_status(:not_found)
+ end
+ end
+
+ context 'when the sample data is found' do
+ before do
+ allow_next_instance_of(Metrics::SampleMetricsService) do |service|
+ allow(service).to receive(:query).and_return([])
+ end
+ get :query, params: environment_params
+ end
+
+ it 'returns JSON with a message and a 200 status code' do
+ expect(json_response.keys).to contain_exactly('status', 'data')
+ expect(response).to have_gitlab_http_status(:ok)
+ end
+ end
+ end
+
+ private
+
+ def environment_params(params = {})
+ {
+ id: environment.id.to_s,
+ namespace_id: project.namespace.full_path,
+ project_id: project.name,
+ identifier: 'sample_metric_query_result'
+ }.merge(params)
+ end
+end
diff --git a/spec/controllers/projects/environments_controller_spec.rb b/spec/controllers/projects/environments_controller_spec.rb
index 7bb956201fd..e7ce2cb0c2e 100644
--- a/spec/controllers/projects/environments_controller_spec.rb
+++ b/spec/controllers/projects/environments_controller_spec.rb
@@ -5,16 +5,14 @@ require 'spec_helper'
describe Projects::EnvironmentsController do
include MetricsDashboardHelpers
- let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project) }
+ let_it_be(:maintainer) { create(:user, name: 'main-dos').tap { |u| project.add_maintainer(u) } }
+ let_it_be(:reporter) { create(:user, name: 'repo-dos').tap { |u| project.add_reporter(u) } }
+ let(:user) { maintainer }
- let_it_be(:environment) do
- create(:environment, name: 'production', project: project)
- end
+ let!(:environment) { create(:environment, name: 'production', project: project) }
before do
- project.add_maintainer(user)
-
sign_in(user)
end
@@ -245,6 +243,36 @@ describe Projects::EnvironmentsController do
end
end
+ describe 'POST #cancel_auto_stop' do
+ subject { post :cancel_auto_stop, params: params }
+
+ let(:params) { environment_params }
+
+ context 'when environment is set as auto-stop' do
+ let(:environment) { create(:environment, :will_auto_stop, name: 'staging', project: project) }
+
+ it_behaves_like 'successful response for #cancel_auto_stop'
+
+ context 'when user is reporter' do
+ let(:user) { reporter }
+
+ it 'shows NOT Found' do
+ subject
+
+ expect(response).to have_gitlab_http_status(:not_found)
+ end
+ end
+ end
+
+ context 'when environment is not set as auto-stop' do
+ let(:environment) { create(:environment, name: 'staging', project: project) }
+
+ it_behaves_like 'failed response for #cancel_auto_stop' do
+ let(:message) { 'the environment is not set as auto stop' }
+ end
+ end
+ end
+
describe 'GET #terminal' do
context 'with valid id' do
it 'responds with a status code 200' do
@@ -320,21 +348,21 @@ describe Projects::EnvironmentsController do
end
describe 'GET #metrics_redirect' do
- let(:project) { create(:project) }
-
it 'redirects to environment if it exists' do
- environment = create(:environment, name: 'production', project: project)
-
get :metrics_redirect, params: { namespace_id: project.namespace, project_id: project }
expect(response).to redirect_to(environment_metrics_path(environment))
end
- it 'redirects to empty metrics page if no environment exists' do
- get :metrics_redirect, params: { namespace_id: project.namespace, project_id: project }
+ context 'when there are no environments' do
+ let(:environment) { }
- expect(response).to be_ok
- expect(response).to render_template 'empty_metrics'
+ it 'redirects to empty metrics page' do
+ get :metrics_redirect, params: { namespace_id: project.namespace, project_id: project }
+
+ expect(response).to be_ok
+ expect(response).to render_template 'empty_metrics'
+ end
end
end
@@ -549,6 +577,10 @@ describe Projects::EnvironmentsController do
let(:project) { project_with_dashboard(dashboard_path, dashboard_yml) }
let(:environment) { create(:environment, name: 'production', project: project) }
+ before do
+ project.add_maintainer(user)
+ end
+
it_behaves_like 'the specified dashboard', 'Test Dashboard'
end
diff --git a/spec/controllers/projects/error_tracking_controller_spec.rb b/spec/controllers/projects/error_tracking_controller_spec.rb
index 8155d6ddafe..e5585d7b52d 100644
--- a/spec/controllers/projects/error_tracking_controller_spec.rb
+++ b/spec/controllers/projects/error_tracking_controller_spec.rb
@@ -49,14 +49,16 @@ describe Projects::ErrorTrackingController do
let(:list_issues_service) { spy(:list_issues_service) }
let(:external_url) { 'http://example.com' }
- before do
- expect(ErrorTracking::ListIssuesService)
- .to receive(:new).with(project, user)
- .and_return(list_issues_service)
- end
-
context 'no data' do
+ let(:permitted_params) do
+ ActionController::Parameters.new({}).permit!
+ end
+
before do
+ expect(ErrorTracking::ListIssuesService)
+ .to receive(:new).with(project, user, permitted_params)
+ .and_return(list_issues_service)
+
expect(list_issues_service).to receive(:execute)
.and_return(status: :error, http_status: :no_content)
end
@@ -68,59 +70,109 @@ describe Projects::ErrorTrackingController do
end
end
- context 'service result is successful' do
+ context 'with extra params' do
+ let(:cursor) { '1572959139000:0:0' }
+ let(:search_term) { 'something' }
+ let(:sort) { 'last_seen' }
+ let(:params) { project_params(format: :json, search_term: search_term, sort: sort, cursor: cursor) }
+ let(:permitted_params) do
+ ActionController::Parameters.new(search_term: search_term, sort: sort, cursor: cursor).permit!
+ end
+
before do
- expect(list_issues_service).to receive(:execute)
- .and_return(status: :success, issues: [error])
- expect(list_issues_service).to receive(:external_url)
- .and_return(external_url)
+ expect(ErrorTracking::ListIssuesService)
+ .to receive(:new).with(project, user, permitted_params)
+ .and_return(list_issues_service)
end
- let(:error) { build(:error_tracking_error) }
+ context 'service result is successful' do
+ before do
+ expect(list_issues_service).to receive(:execute)
+ .and_return(status: :success, issues: [error], pagination: {})
+ expect(list_issues_service).to receive(:external_url)
+ .and_return(external_url)
+ end
- it 'returns a list of errors' do
- get :index, params: project_params(format: :json)
+ let(:error) { build(:error_tracking_error) }
- expect(response).to have_gitlab_http_status(:ok)
- expect(response).to match_response_schema('error_tracking/index')
- expect(json_response['external_url']).to eq(external_url)
- expect(json_response['errors']).to eq([error].as_json)
+ it 'returns a list of errors' do
+ get :index, params: params
+
+ expect(response).to have_gitlab_http_status(:ok)
+ expect(response).to match_response_schema('error_tracking/index')
+ expect(json_response).to eq(
+ 'errors' => [error].as_json,
+ 'pagination' => {},
+ 'external_url' => external_url
+ )
+ end
end
end
- context 'service result is erroneous' do
- let(:error_message) { 'error message' }
+ context 'without extra params' do
+ before do
+ expect(ErrorTracking::ListIssuesService)
+ .to receive(:new).with(project, user, {})
+ .and_return(list_issues_service)
+ end
- context 'without http_status' do
+ context 'service result is successful' do
before do
expect(list_issues_service).to receive(:execute)
- .and_return(status: :error, message: error_message)
+ .and_return(status: :success, issues: [error], pagination: {})
+ expect(list_issues_service).to receive(:external_url)
+ .and_return(external_url)
end
- it 'returns 400 with message' do
+ let(:error) { build(:error_tracking_error) }
+
+ it 'returns a list of errors' do
get :index, params: project_params(format: :json)
- expect(response).to have_gitlab_http_status(:bad_request)
- expect(json_response['message']).to eq(error_message)
+ expect(response).to have_gitlab_http_status(:ok)
+ expect(response).to match_response_schema('error_tracking/index')
+ expect(json_response).to eq(
+ 'errors' => [error].as_json,
+ 'pagination' => {},
+ 'external_url' => external_url
+ )
end
end
- context 'with explicit http_status' do
- let(:http_status) { :no_content }
+ context 'service result is erroneous' do
+ let(:error_message) { 'error message' }
- before do
- expect(list_issues_service).to receive(:execute).and_return(
- status: :error,
- message: error_message,
- http_status: http_status
- )
+ context 'without http_status' do
+ before do
+ expect(list_issues_service).to receive(:execute)
+ .and_return(status: :error, message: error_message)
+ end
+
+ it 'returns 400 with message' do
+ get :index, params: project_params(format: :json)
+
+ expect(response).to have_gitlab_http_status(:bad_request)
+ expect(json_response['message']).to eq(error_message)
+ end
end
- it 'returns http_status with message' do
- get :index, params: project_params(format: :json)
+ context 'with explicit http_status' do
+ let(:http_status) { :no_content }
- expect(response).to have_gitlab_http_status(http_status)
- expect(json_response['message']).to eq(error_message)
+ before do
+ expect(list_issues_service).to receive(:execute).and_return(
+ status: :error,
+ message: error_message,
+ http_status: http_status
+ )
+ end
+
+ it 'returns http_status with message' do
+ get :index, params: project_params(format: :json)
+
+ expect(response).to have_gitlab_http_status(http_status)
+ expect(json_response['message']).to eq(error_message)
+ end
end
end
end
@@ -332,6 +384,10 @@ describe Projects::ErrorTrackingController do
).permit!
end
+ subject(:get_stack_trace) do
+ get :stack_trace, params: issue_params(issue_id: issue_id, format: :json)
+ end
+
before do
expect(ErrorTracking::IssueLatestEventService)
.to receive(:new).with(project, user, permitted_params)
@@ -346,7 +402,7 @@ describe Projects::ErrorTrackingController do
end
it 'returns no data' do
- get :stack_trace, params: issue_params(issue_id: issue_id, format: :json)
+ get_stack_trace
expect(response).to have_gitlab_http_status(:no_content)
end
@@ -356,16 +412,21 @@ describe Projects::ErrorTrackingController do
before do
expect(issue_stack_trace_service).to receive(:execute)
.and_return(status: :success, latest_event: error_event)
+
+ get_stack_trace
end
let(:error_event) { build(:error_tracking_error_event) }
it 'returns an error' do
- get :stack_trace, params: issue_params(issue_id: issue_id, format: :json)
-
expect(response).to have_gitlab_http_status(:ok)
expect(response).to match_response_schema('error_tracking/issue_stack_trace')
- expect(json_response['error']).to eq(error_event.as_json)
+ end
+
+ it 'highlights stack trace source code' do
+ expect(json_response['error']).to eq(
+ Gitlab::ErrorTracking::StackTraceHighlightDecorator.decorate(error_event).as_json
+ )
end
end
@@ -379,7 +440,7 @@ describe Projects::ErrorTrackingController do
end
it 'returns 400 with message' do
- get :stack_trace, params: issue_params(issue_id: issue_id, format: :json)
+ get_stack_trace
expect(response).to have_gitlab_http_status(:bad_request)
expect(json_response['message']).to eq(error_message)
@@ -398,7 +459,7 @@ describe Projects::ErrorTrackingController do
end
it 'returns http_status with message' do
- get :stack_trace, params: issue_params(issue_id: issue_id, format: :json)
+ get_stack_trace
expect(response).to have_gitlab_http_status(http_status)
expect(json_response['message']).to eq(error_message)
diff --git a/spec/controllers/projects/issues_controller_spec.rb b/spec/controllers/projects/issues_controller_spec.rb
index 29746bbd863..f64e928098d 100644
--- a/spec/controllers/projects/issues_controller_spec.rb
+++ b/spec/controllers/projects/issues_controller_spec.rb
@@ -170,7 +170,7 @@ describe Projects::IssuesController do
it 'redirects to signin if not logged in' do
get :new, params: { namespace_id: project.namespace, project_id: project }
- expect(flash[:alert]).to eq 'You need to sign in or sign up before continuing.'
+ expect(flash[:alert]).to eq I18n.t('devise.failure.unauthenticated')
expect(response).to redirect_to(new_user_session_path)
end
@@ -926,7 +926,7 @@ describe Projects::IssuesController do
it 'sets a flash message' do
post_issue(title: 'Hello')
- expect(flash[:notice]).to eq('Resolved all discussions.')
+ expect(flash[:notice]).to eq(_('Resolved all discussions.'))
end
describe "resolving a single discussion" do
@@ -940,7 +940,7 @@ describe Projects::IssuesController do
end
it 'sets a flash message that one discussion was resolved' do
- expect(flash[:notice]).to eq('Resolved 1 discussion.')
+ expect(flash[:notice]).to eq(_('Resolved 1 discussion.'))
end
end
end
@@ -1073,6 +1073,24 @@ describe Projects::IssuesController do
expect(issue.time_estimate).to eq(7200)
end
end
+
+ context 'when created from sentry error' do
+ subject { post_new_issue(sentry_issue_attributes: { sentry_issue_identifier: 1234567 }) }
+
+ it 'creates an issue' do
+ expect { subject }.to change(Issue, :count)
+ end
+
+ it 'creates a sentry issue' do
+ expect { subject }.to change(SentryIssue, :count)
+ end
+
+ it 'with existing issue it will not create an issue' do
+ post_new_issue(sentry_issue_attributes: { sentry_issue_identifier: 1234567 })
+
+ expect { subject }.not_to change(Issue, :count)
+ end
+ end
end
describe 'POST #mark_as_spam' do
@@ -1141,7 +1159,7 @@ describe Projects::IssuesController do
end
it "prevents deletion if destroy_confirm is not set" do
- expect(Gitlab::Sentry).to receive(:track_acceptable_exception).and_call_original
+ expect(Gitlab::ErrorTracking).to receive(:track_exception).and_call_original
delete :destroy, params: { namespace_id: project.namespace, project_id: project, id: issue.iid }
@@ -1150,7 +1168,7 @@ describe Projects::IssuesController do
end
it "prevents deletion in JSON format if destroy_confirm is not set" do
- expect(Gitlab::Sentry).to receive(:track_acceptable_exception).and_call_original
+ expect(Gitlab::ErrorTracking).to receive(:track_exception).and_call_original
delete :destroy, params: { namespace_id: project.namespace, project_id: project, id: issue.iid, format: 'json' }
@@ -1314,7 +1332,7 @@ describe Projects::IssuesController do
it "returns 302 for project members with developer role" do
import_csv
- expect(flash[:notice]).to include('Your issues are being imported')
+ expect(flash[:notice]).to eq(_("Your issues are being imported. Once finished, you'll get a confirmation email."))
expect(response).to redirect_to(project_issues_path(project))
end
@@ -1325,7 +1343,7 @@ describe Projects::IssuesController do
import_csv
- expect(flash[:alert]).to include('File upload error.')
+ expect(flash[:alert]).to include(_('File upload error.'))
expect(response).to redirect_to(project_issues_path(project))
end
end
diff --git a/spec/controllers/projects/jobs_controller_spec.rb b/spec/controllers/projects/jobs_controller_spec.rb
index 349d73f13ca..edef24f6595 100644
--- a/spec/controllers/projects/jobs_controller_spec.rb
+++ b/spec/controllers/projects/jobs_controller_spec.rb
@@ -5,13 +5,12 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do
include ApiHelpers
include HttpIOHelpers
- let(:project) { create(:project, :public) }
+ let(:project) { create(:project, :public, :repository) }
let(:pipeline) { create(:ci_pipeline, project: project) }
let(:user) { create(:user) }
before do
stub_feature_flags(ci_enable_live_trace: true)
- stub_feature_flags(job_log_json: false)
stub_not_protect_default_branch
end
@@ -154,7 +153,7 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do
.and_return(merge_request)
end
- it 'does not serialize builds in exposed stages', :sidekiq_might_not_need_inline do
+ it 'does not serialize builds in exposed stages' do
get_show_json
json_response.dig('pipeline', 'details', 'stages').tap do |stages|
@@ -183,7 +182,7 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do
context 'job is cancelable' do
let(:job) { create(:ci_build, :running, pipeline: pipeline) }
- it 'cancel_path is present with correct redirect', :sidekiq_might_not_need_inline do
+ it 'cancel_path is present with correct redirect' do
expect(response).to have_gitlab_http_status(:ok)
expect(response).to match_response_schema('job/job_details')
expect(json_response['cancel_path']).to include(CGI.escape(json_response['build_path']))
@@ -193,7 +192,7 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do
context 'with web terminal' do
let(:job) { create(:ci_build, :running, :with_runner_session, pipeline: pipeline) }
- it 'exposes the terminal path', :sidekiq_might_not_need_inline do
+ it 'exposes the terminal path' do
expect(response).to have_gitlab_http_status(:ok)
expect(response).to match_response_schema('job/job_details')
expect(json_response['terminal_path']).to match(%r{/terminal})
@@ -268,7 +267,7 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do
project.add_maintainer(user) # Need to be a maintianer to view cluster.path
end
- it 'exposes the deployment information', :sidekiq_might_not_need_inline do
+ it 'exposes the deployment information' do
get_show_json
expect(response).to have_gitlab_http_status(:ok)
@@ -292,7 +291,7 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do
sign_in(user)
end
- it 'user can edit runner', :sidekiq_might_not_need_inline do
+ it 'user can edit runner' do
get_show_json
expect(response).to have_gitlab_http_status(:ok)
@@ -312,7 +311,7 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do
sign_in(user)
end
- it 'user can not edit runner', :sidekiq_might_not_need_inline do
+ it 'user can not edit runner' do
get_show_json
expect(response).to have_gitlab_http_status(:ok)
@@ -331,7 +330,7 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do
sign_in(user)
end
- it 'user can not edit runner', :sidekiq_might_not_need_inline do
+ it 'user can not edit runner' do
get_show_json
expect(response).to have_gitlab_http_status(:ok)
@@ -412,7 +411,7 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do
context 'when job has trace' do
let(:job) { create(:ci_build, :running, :trace_live, pipeline: pipeline) }
- it "has_trace is true", :sidekiq_might_not_need_inline do
+ it "has_trace is true" do
get_show_json
expect(response).to match_response_schema('job/job_details')
@@ -458,7 +457,7 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do
create(:ci_pipeline_variable, pipeline: pipeline, key: :TRIGGER_KEY_1, value: 'TRIGGER_VALUE_1')
end
- context 'user is a maintainer', :sidekiq_might_not_need_inline do
+ context 'user is a maintainer' do
before do
project.add_maintainer(user)
@@ -512,7 +511,7 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do
def get_show_json
expect { get_show(id: job.id, format: :json) }
- .not_to change { Gitlab::GitalyClient.get_request_count }
+ .to change { Gitlab::GitalyClient.get_request_count }.by_at_most(2)
end
def get_show(**extra_params)
@@ -527,7 +526,6 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do
describe 'GET trace.json' do
before do
- stub_feature_flags(job_log_json: true)
get_trace
end
@@ -634,6 +632,7 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do
describe 'GET legacy trace.json' do
before do
+ stub_feature_flags(job_log_json: false)
get_trace
end
diff --git a/spec/controllers/projects/merge_requests/diffs_controller_spec.rb b/spec/controllers/projects/merge_requests/diffs_controller_spec.rb
index 06d9af33189..d7e790360e3 100644
--- a/spec/controllers/projects/merge_requests/diffs_controller_spec.rb
+++ b/spec/controllers/projects/merge_requests/diffs_controller_spec.rb
@@ -5,6 +5,19 @@ require 'spec_helper'
describe Projects::MergeRequests::DiffsController do
include ProjectForksHelper
+ shared_examples '404 for unexistent diffable' do
+ context 'when diffable does not exists' do
+ it 'returns 404' do
+ unexistent_diff_id = 9999
+
+ go(diff_id: unexistent_diff_id)
+
+ expect(MergeRequestDiff.find_by(id: unexistent_diff_id)).to be_nil
+ expect(response).to have_gitlab_http_status(404)
+ end
+ end
+ end
+
shared_examples 'forked project with submodules' do
render_views
@@ -25,6 +38,16 @@ describe Projects::MergeRequests::DiffsController do
end
end
+ shared_examples 'cached diff collection' do
+ it 'ensures diff highlighting cache writing' do
+ expect_next_instance_of(Gitlab::Diff::HighlightCache) do |cache|
+ expect(cache).to receive(:write_if_empty).once
+ end
+
+ go
+ end
+ end
+
shared_examples 'persisted preferred diff view cookie' do
context 'with view param' do
before do
@@ -112,6 +135,7 @@ describe Projects::MergeRequests::DiffsController do
end
it_behaves_like 'persisted preferred diff view cookie'
+ it_behaves_like 'cached diff collection'
end
describe 'GET diffs_metadata' do
@@ -126,6 +150,8 @@ describe Projects::MergeRequests::DiffsController do
get :diffs_metadata, params: params.merge(extra_params)
end
+ it_behaves_like '404 for unexistent diffable'
+
context 'when not authorized' do
let(:another_user) { create(:user) }
@@ -148,14 +174,6 @@ describe Projects::MergeRequests::DiffsController do
end
end
- context 'when diffable does not exists' do
- it 'returns 404' do
- go(diff_id: 9999)
-
- expect(response).to have_gitlab_http_status(404)
- end
- end
-
context 'with valid diff_id' do
it 'returns success' do
go(diff_id: merge_request.merge_request_diff.id)
@@ -317,17 +335,53 @@ describe Projects::MergeRequests::DiffsController do
end
describe 'GET diffs_batch' do
+ shared_examples_for 'serializes diffs with expected arguments' do
+ it 'serializes paginated merge request diff collection' do
+ expect_next_instance_of(PaginatedDiffSerializer) do |instance|
+ expect(instance).to receive(:represent)
+ .with(an_instance_of(collection), expected_options)
+ .and_call_original
+ end
+
+ subject
+ end
+ end
+
+ shared_examples_for 'successful request' do
+ it 'returns success' do
+ subject
+
+ expect(response).to have_gitlab_http_status(200)
+ end
+ end
+
+ def collection_arguments(pagination_data = {})
+ {
+ merge_request: merge_request,
+ diff_view: :inline,
+ pagination_data: {
+ current_page: nil,
+ next_page: nil,
+ total_pages: nil
+ }.merge(pagination_data)
+ }
+ end
+
def go(extra_params = {})
params = {
namespace_id: project.namespace.to_param,
project_id: project,
id: merge_request.iid,
+ page: 1,
+ per_page: 20,
format: 'json'
}
get :diffs_batch, params: params.merge(extra_params)
end
+ it_behaves_like '404 for unexistent diffable'
+
context 'when feature is disabled' do
before do
stub_feature_flags(diffs_batch_load: false)
@@ -354,56 +408,65 @@ describe Projects::MergeRequests::DiffsController do
end
end
- context 'with default params' do
- let(:expected_options) do
- {
- merge_request: merge_request,
- diff_view: :inline,
- pagination_data: {
- current_page: 1,
- next_page: nil,
- total_pages: 1
- }
- }
+ context 'with valid diff_id' do
+ subject { go(diff_id: merge_request.merge_request_diff.id) }
+
+ it_behaves_like 'serializes diffs with expected arguments' do
+ let(:collection) { Gitlab::Diff::FileCollection::MergeRequestDiffBatch }
+ let(:expected_options) { collection_arguments(current_page: 1, total_pages: 1) }
end
- it 'serializes paginated merge request diff collection' do
- expect_next_instance_of(PaginatedDiffSerializer) do |instance|
- expect(instance).to receive(:represent)
- .with(an_instance_of(Gitlab::Diff::FileCollection::MergeRequestDiffBatch), expected_options)
- .and_call_original
- end
+ it_behaves_like 'successful request'
+ end
- go
+ context 'with commit_id param' do
+ subject { go(commit_id: merge_request.diff_head_sha) }
+
+ it_behaves_like 'serializes diffs with expected arguments' do
+ let(:collection) { Gitlab::Diff::FileCollection::Commit }
+ let(:expected_options) { collection_arguments }
end
end
- context 'with smaller diff batch params' do
- let(:expected_options) do
- {
- merge_request: merge_request,
- diff_view: :inline,
- pagination_data: {
- current_page: 2,
- next_page: 3,
- total_pages: 4
- }
- }
+ context 'with diff_id and start_sha params' do
+ subject do
+ go(diff_id: merge_request.merge_request_diff.id,
+ start_sha: merge_request.merge_request_diff.start_commit_sha)
end
- it 'serializes paginated merge request diff collection' do
- expect_next_instance_of(PaginatedDiffSerializer) do |instance|
- expect(instance).to receive(:represent)
- .with(an_instance_of(Gitlab::Diff::FileCollection::MergeRequestDiffBatch), expected_options)
- .and_call_original
- end
+ it_behaves_like 'serializes diffs with expected arguments' do
+ let(:collection) { Gitlab::Diff::FileCollection::Compare }
+ let(:expected_options) { collection_arguments }
+ end
+
+ it_behaves_like 'successful request'
+ end
- go(page: 2, per_page: 5)
+ context 'with default params' do
+ subject { go }
+
+ it_behaves_like 'serializes diffs with expected arguments' do
+ let(:collection) { Gitlab::Diff::FileCollection::MergeRequestDiffBatch }
+ let(:expected_options) { collection_arguments(current_page: 1, total_pages: 1) }
end
+
+ it_behaves_like 'successful request'
+ end
+
+ context 'with smaller diff batch params' do
+ subject { go(page: 2, per_page: 5) }
+
+ it_behaves_like 'serializes diffs with expected arguments' do
+ let(:collection) { Gitlab::Diff::FileCollection::MergeRequestDiffBatch }
+ let(:expected_options) { collection_arguments(current_page: 2, next_page: 3, total_pages: 4) }
+ end
+
+ it_behaves_like 'successful request'
end
it_behaves_like 'forked project with submodules'
it_behaves_like 'persisted preferred diff view cookie'
+ it_behaves_like 'cached diff collection'
context 'diff unfolding' do
let!(:unfoldable_diff_note) do
diff --git a/spec/controllers/projects/merge_requests_controller_spec.rb b/spec/controllers/projects/merge_requests_controller_spec.rb
index 9f7fde2f0da..3b7d8adb8e5 100644
--- a/spec/controllers/projects/merge_requests_controller_spec.rb
+++ b/spec/controllers/projects/merge_requests_controller_spec.rb
@@ -620,7 +620,7 @@ describe Projects::MergeRequestsController do
end
it "prevents deletion if destroy_confirm is not set" do
- expect(Gitlab::Sentry).to receive(:track_acceptable_exception).and_call_original
+ expect(Gitlab::ErrorTracking).to receive(:track_exception).and_call_original
delete :destroy, params: { namespace_id: project.namespace, project_id: project, id: merge_request.iid }
@@ -629,7 +629,7 @@ describe Projects::MergeRequestsController do
end
it "prevents deletion in JSON format if destroy_confirm is not set" do
- expect(Gitlab::Sentry).to receive(:track_acceptable_exception).and_call_original
+ expect(Gitlab::ErrorTracking).to receive(:track_exception).and_call_original
delete :destroy, params: { namespace_id: project.namespace, project_id: project, id: merge_request.iid, format: 'json' }
@@ -1073,7 +1073,7 @@ describe Projects::MergeRequestsController do
end
it 'renders MergeRequest as JSON' do
- expect(json_response.keys).to include('id', 'iid', 'description')
+ expect(json_response.keys).to include('id', 'iid')
end
end
@@ -1107,7 +1107,7 @@ describe Projects::MergeRequestsController do
it 'renders MergeRequest as JSON' do
subject
- expect(json_response.keys).to include('id', 'iid', 'description')
+ expect(json_response.keys).to include('id', 'iid')
end
end
@@ -1226,9 +1226,9 @@ describe Projects::MergeRequestsController do
environment2 = create(:environment, project: forked)
create(:deployment, :succeed, environment: environment2, sha: sha, ref: 'master', deployable: build)
- # TODO address the last 5 queries
- # See https://gitlab.com/gitlab-org/gitlab-foss/issues/63952 (5 queries)
- leeway = 5
+ # TODO address the last 3 queries
+ # See https://gitlab.com/gitlab-org/gitlab-foss/issues/63952 (3 queries)
+ leeway = 3
expect { get_ci_environments_status }.not_to exceed_all_query_limit(control_count + leeway)
end
end
@@ -1280,6 +1280,28 @@ describe Projects::MergeRequestsController do
end
end
+ it 'uses the explicitly linked deployments' do
+ expect(EnvironmentStatus)
+ .to receive(:for_deployed_merge_request)
+ .with(merge_request, user)
+ .and_call_original
+
+ get_ci_environments_status(environment_target: 'merge_commit')
+ end
+
+ context 'when the deployment_merge_requests_widget feature flag is disabled' do
+ it 'uses the deployments retrieved using CI builds' do
+ stub_feature_flags(deployment_merge_requests_widget: false)
+
+ expect(EnvironmentStatus)
+ .to receive(:after_merge_request)
+ .with(merge_request, user)
+ .and_call_original
+
+ get_ci_environments_status(environment_target: 'merge_commit')
+ end
+ end
+
def get_ci_environments_status(extra_params = {})
params = {
namespace_id: merge_request.project.namespace.to_param,
diff --git a/spec/controllers/projects/notes_controller_spec.rb b/spec/controllers/projects/notes_controller_spec.rb
index e576a3d2d40..abc9e728cb3 100644
--- a/spec/controllers/projects/notes_controller_spec.rb
+++ b/spec/controllers/projects/notes_controller_spec.rb
@@ -259,6 +259,17 @@ describe Projects::NotesController do
end
end
+ context 'the note does not have commands_only errors' do
+ context 'for empty note' do
+ let(:note_text) { '' }
+ let(:extra_request_params) { { format: :json } }
+
+ it "returns status 422 for json" do
+ expect(response).to have_gitlab_http_status(422)
+ end
+ end
+ end
+
context 'the project is a private project' do
let(:project_visibility) { Gitlab::VisibilityLevel::PRIVATE }
diff --git a/spec/controllers/projects/pages_domains_controller_spec.rb b/spec/controllers/projects/pages_domains_controller_spec.rb
index 3987bebb124..ef6a193e677 100644
--- a/spec/controllers/projects/pages_domains_controller_spec.rb
+++ b/spec/controllers/projects/pages_domains_controller_spec.rb
@@ -32,10 +32,11 @@ describe Projects::PagesDomainsController do
get(:show, params: request_params.merge(id: pages_domain.domain))
end
- it "redirects to the 'edit' page" do
+ it "displays to the 'show' page" do
make_request
- expect(response).to redirect_to(edit_project_pages_domain_path(project, pages_domain.domain))
+ expect(response).to have_gitlab_http_status(200)
+ expect(response).to render_template('show')
end
context 'when user is developer' do
@@ -69,16 +70,16 @@ describe Projects::PagesDomainsController do
created_domain = PagesDomain.reorder(:id).last
expect(created_domain).to be_present
- expect(response).to redirect_to(edit_project_pages_domain_path(project, created_domain))
+ expect(response).to redirect_to(project_pages_domain_path(project, created_domain))
end
end
- describe 'GET edit' do
- it "displays the 'edit' page" do
- get(:edit, params: request_params.merge(id: pages_domain.domain))
+ describe 'GET show' do
+ it "displays the 'show' page" do
+ get(:show, params: request_params.merge(id: pages_domain.domain))
expect(response).to have_gitlab_http_status(200)
- expect(response).to render_template('edit')
+ expect(response).to render_template('show')
end
end
@@ -128,10 +129,10 @@ describe Projects::PagesDomainsController do
context 'the domain is invalid' do
let(:pages_domain_params) { { user_provided_certificate: 'blabla' } }
- it 'renders the edit action' do
+ it 'renders the show action' do
patch(:update, params: params)
- expect(response).to render_template('edit')
+ expect(response).to render_template('show')
end
end
@@ -160,7 +161,7 @@ describe Projects::PagesDomainsController do
post :verify, params: params
- expect(response).to redirect_to edit_project_pages_domain_path(project, pages_domain)
+ expect(response).to redirect_to project_pages_domain_path(project, pages_domain)
expect(flash[:notice]).to eq('Successfully verified domain ownership')
end
@@ -169,7 +170,7 @@ describe Projects::PagesDomainsController do
post :verify, params: params
- expect(response).to redirect_to edit_project_pages_domain_path(project, pages_domain)
+ expect(response).to redirect_to project_pages_domain_path(project, pages_domain)
expect(flash[:alert]).to eq('Failed to verify domain ownership')
end
@@ -195,10 +196,10 @@ describe Projects::PagesDomainsController do
delete(:clean_certificate, params: request_params.merge(id: pages_domain.domain))
end
- it 'redirects to edit page' do
+ it 'redirects to show page' do
subject
- expect(response).to redirect_to(edit_project_pages_domain_path(project, pages_domain))
+ expect(response).to redirect_to(project_pages_domain_path(project, pages_domain))
end
it 'removes certificate' do
@@ -230,12 +231,12 @@ describe Projects::PagesDomainsController do
expect(pages_domain.key).to be_present
end
- it 'redirects to edit page with a flash message' do
+ it 'redirects to show page with a flash message' do
subject
expect(flash[:alert]).to include('Certificate')
expect(flash[:alert]).to include('Key')
- expect(response).to redirect_to(edit_project_pages_domain_path(project, pages_domain))
+ expect(response).to redirect_to(project_pages_domain_path(project, pages_domain))
end
end
end
diff --git a/spec/controllers/projects/pipeline_schedules_controller_spec.rb b/spec/controllers/projects/pipeline_schedules_controller_spec.rb
index 63e2c8a339c..60b802f1cab 100644
--- a/spec/controllers/projects/pipeline_schedules_controller_spec.rb
+++ b/spec/controllers/projects/pipeline_schedules_controller_spec.rb
@@ -416,7 +416,7 @@ describe Projects::PipelineSchedulesController do
end
expect(flash.to_a.size).to eq(2)
- expect(flash[:alert]).to eq 'You cannot play this scheduled pipeline at the moment. Please wait a minute.'
+ expect(flash[:alert]).to eq _('You cannot play this scheduled pipeline at the moment. Please wait a minute.')
expect(response).to have_gitlab_http_status(302)
end
end
diff --git a/spec/controllers/projects/pipelines_controller_spec.rb b/spec/controllers/projects/pipelines_controller_spec.rb
index 3c7f69f0e6e..b4549e4e635 100644
--- a/spec/controllers/projects/pipelines_controller_spec.rb
+++ b/spec/controllers/projects/pipelines_controller_spec.rb
@@ -93,7 +93,7 @@ describe Projects::PipelinesController do
end
context 'when performing gitaly calls', :request_store do
- it 'limits the Gitaly requests', :sidekiq_might_not_need_inline do
+ it 'limits the Gitaly requests' do
# Isolate from test preparation (Repository#exists? is also cached in RequestStore)
RequestStore.end!
RequestStore.clear!
@@ -101,8 +101,9 @@ describe Projects::PipelinesController do
expect(::Gitlab::GitalyClient).to receive(:allow_ref_name_caching).and_call_original
+ # ListCommitsByOid, RepositoryExists, HasLocalBranches
expect { get_pipelines_index_json }
- .to change { Gitlab::GitalyClient.get_request_count }.by(2)
+ .to change { Gitlab::GitalyClient.get_request_count }.by(3)
end
end
diff --git a/spec/controllers/projects/project_members_controller_spec.rb b/spec/controllers/projects/project_members_controller_spec.rb
index 072df1f5060..0df19aa6e44 100644
--- a/spec/controllers/projects/project_members_controller_spec.rb
+++ b/spec/controllers/projects/project_members_controller_spec.rb
@@ -4,6 +4,7 @@ require('spec_helper')
describe Projects::ProjectMembersController do
let(:user) { create(:user) }
+ let(:group) { create(:group, :public) }
let(:project) { create(:project, :public) }
describe 'GET index' do
@@ -12,6 +13,35 @@ describe Projects::ProjectMembersController do
expect(response).to have_gitlab_http_status(200)
end
+
+ context 'when project belongs to group' do
+ let(:user_in_group) { create(:user) }
+ let(:project_in_group) { create(:project, :public, group: group) }
+
+ before do
+ group.add_owner(user_in_group)
+ project_in_group.add_maintainer(user)
+ sign_in(user)
+ end
+
+ it 'lists inherited project members by default' do
+ get :index, params: { namespace_id: project_in_group.namespace, project_id: project_in_group }
+
+ expect(assigns(:project_members).map(&:user_id)).to contain_exactly(user.id, user_in_group.id)
+ end
+
+ it 'lists direct project members only' do
+ get :index, params: { namespace_id: project_in_group.namespace, project_id: project_in_group, with_inherited_permissions: 'exclude' }
+
+ expect(assigns(:project_members).map(&:user_id)).to contain_exactly(user.id)
+ end
+
+ it 'lists inherited project members only' do
+ get :index, params: { namespace_id: project_in_group.namespace, project_id: project_in_group, with_inherited_permissions: 'only' }
+
+ expect(assigns(:project_members).map(&:user_id)).to contain_exactly(user_in_group.id)
+ end
+ end
end
describe 'POST create' do
diff --git a/spec/controllers/projects/raw_controller_spec.rb b/spec/controllers/projects/raw_controller_spec.rb
index 8b43d1264b2..bdf1c1a84d3 100644
--- a/spec/controllers/projects/raw_controller_spec.rb
+++ b/spec/controllers/projects/raw_controller_spec.rb
@@ -59,13 +59,13 @@ describe Projects::RawController do
it 'prevents from accessing the raw file' do
execute_raw_requests(requests: 6, project: project, file_path: file_path)
- expect(flash[:alert]).to eq('You cannot access the raw file. Please wait a minute.')
+ expect(flash[:alert]).to eq(_('You cannot access the raw file. Please wait a minute.'))
expect(response).to have_gitlab_http_status(429)
end
it 'logs the event on auth.log' do
attributes = {
- message: 'Action_Rate_Limiter_Request',
+ message: 'Application_Rate_Limiter_Request',
env: :raw_blob_request_limit,
remote_ip: '0.0.0.0',
request_method: 'GET',
@@ -77,6 +77,24 @@ describe Projects::RawController do
execute_raw_requests(requests: 6, project: project, file_path: file_path)
end
+ context 'when receiving an external storage request' do
+ let(:token) { 'letmein' }
+
+ before do
+ stub_application_setting(
+ static_objects_external_storage_url: 'https://cdn.gitlab.com',
+ static_objects_external_storage_auth_token: token
+ )
+ end
+
+ it 'does not prevent from accessing the raw file' do
+ request.headers['X-Gitlab-External-Storage-Token'] = token
+ execute_raw_requests(requests: 6, project: project, file_path: file_path)
+
+ expect(response).to have_gitlab_http_status(200)
+ end
+ end
+
context 'when the request uses a different version of a commit' do
it 'prevents from accessing the raw file' do
# 3 times with the normal sha
@@ -91,7 +109,7 @@ describe Projects::RawController do
execute_raw_requests(requests: 3, project: project, file_path: modified_path)
- expect(flash[:alert]).to eq('You cannot access the raw file. Please wait a minute.')
+ expect(flash[:alert]).to eq(_('You cannot access the raw file. Please wait a minute.'))
expect(response).to have_gitlab_http_status(429)
end
end
@@ -119,7 +137,7 @@ describe Projects::RawController do
# Accessing downcase version of readme
execute_raw_requests(requests: 6, project: project, file_path: file_path)
- expect(flash[:alert]).to eq('You cannot access the raw file. Please wait a minute.')
+ expect(flash[:alert]).to eq(_('You cannot access the raw file. Please wait a minute.'))
expect(response).to have_gitlab_http_status(429)
# Accessing upcase version of readme
@@ -131,15 +149,74 @@ describe Projects::RawController do
end
end
end
+
+ context 'as a sessionless user' do
+ let_it_be(:project) { create(:project, :private, :repository) }
+ let_it_be(:user) { create(:user, static_object_token: 'very-secure-token') }
+ let_it_be(:file_path) { 'master/README.md' }
+
+ before do
+ project.add_developer(user)
+ end
+
+ context 'when no token is provided' do
+ it 'redirects to sign in page' do
+ execute_raw_requests(requests: 1, project: project, file_path: file_path)
+
+ expect(response).to have_gitlab_http_status(302)
+ expect(response.location).to end_with('/users/sign_in')
+ end
+ end
+
+ context 'when a token param is present' do
+ context 'when token is correct' do
+ it 'calls the action normally' do
+ execute_raw_requests(requests: 1, project: project, file_path: file_path, token: user.static_object_token)
+
+ expect(response).to have_gitlab_http_status(200)
+ end
+ end
+
+ context 'when token is incorrect' do
+ it 'redirects to sign in page' do
+ execute_raw_requests(requests: 1, project: project, file_path: file_path, token: 'foobar')
+
+ expect(response).to have_gitlab_http_status(302)
+ expect(response.location).to end_with('/users/sign_in')
+ end
+ end
+ end
+
+ context 'when a token header is present' do
+ context 'when token is correct' do
+ it 'calls the action normally' do
+ request.headers['X-Gitlab-Static-Object-Token'] = user.static_object_token
+ execute_raw_requests(requests: 1, project: project, file_path: file_path)
+
+ expect(response).to have_gitlab_http_status(200)
+ end
+ end
+
+ context 'when token is incorrect' do
+ it 'redirects to sign in page' do
+ request.headers['X-Gitlab-Static-Object-Token'] = 'foobar'
+ execute_raw_requests(requests: 1, project: project, file_path: file_path)
+
+ expect(response).to have_gitlab_http_status(302)
+ expect(response.location).to end_with('/users/sign_in')
+ end
+ end
+ end
+ end
end
- def execute_raw_requests(requests:, project:, file_path:)
+ def execute_raw_requests(requests:, project:, file_path:, **params)
requests.times do
get :show, params: {
namespace_id: project.namespace,
project_id: project,
id: file_path
- }
+ }.merge(params)
end
end
end
diff --git a/spec/controllers/projects/releases_controller_spec.rb b/spec/controllers/projects/releases_controller_spec.rb
index 562119d967f..e9fa3764117 100644
--- a/spec/controllers/projects/releases_controller_spec.rb
+++ b/spec/controllers/projects/releases_controller_spec.rb
@@ -166,6 +166,62 @@ describe Projects::ReleasesController do
end
end
+ describe 'GET #evidence' do
+ let(:tag_name) { "v1.1.0-evidence" }
+ let!(:release) { create(:release, :with_evidence, project: project, tag: tag_name) }
+ let(:tag) { CGI.escape(release.tag) }
+ let(:format) { :json }
+
+ subject do
+ get :evidence, params: {
+ namespace_id: project.namespace,
+ project_id: project,
+ tag: tag,
+ format: format
+ }
+ end
+
+ before do
+ sign_in(user)
+ end
+
+ context 'when the user is a developer' do
+ it 'returns the correct evidence summary as a json' do
+ subject
+
+ expect(json_response).to eq(release.evidence.summary)
+ end
+
+ context 'when the release was created before evidence existed' do
+ before do
+ release.evidence.destroy
+ end
+
+ it 'returns an empty json' do
+ subject
+
+ expect(json_response).to eq({})
+ end
+ end
+ end
+
+ context 'when the user is a guest for the project' do
+ before do
+ project.add_guest(user)
+ end
+
+ context 'when the project is private' do
+ let(:project) { private_project }
+
+ it_behaves_like 'not found'
+ end
+
+ context 'when the project is public' do
+ it_behaves_like 'successful request'
+ end
+ end
+ end
+
private
def get_index
diff --git a/spec/controllers/projects/serverless/functions_controller_spec.rb b/spec/controllers/projects/serverless/functions_controller_spec.rb
index 73fb0fad646..33d66f4ac5a 100644
--- a/spec/controllers/projects/serverless/functions_controller_spec.rb
+++ b/spec/controllers/projects/serverless/functions_controller_spec.rb
@@ -149,6 +149,14 @@ describe Projects::Serverless::FunctionsController do
include_examples 'GET #show with valid data'
end
+
+ context 'on Knative 0.9.0' do
+ before do
+ prepare_knative_stubs(knative_09_service(knative_stub_options))
+ end
+
+ include_examples 'GET #show with valid data'
+ end
end
end
@@ -210,6 +218,14 @@ describe Projects::Serverless::FunctionsController do
include_examples 'GET #index with data'
end
+
+ context 'on Knative 0.9.0' do
+ before do
+ prepare_knative_stubs(knative_09_service(knative_stub_options))
+ end
+
+ include_examples 'GET #index with data'
+ end
end
def prepare_knative_stubs(knative_service)
diff --git a/spec/controllers/projects/service_hook_logs_controller_spec.rb b/spec/controllers/projects/service_hook_logs_controller_spec.rb
new file mode 100644
index 00000000000..ca57b0579a8
--- /dev/null
+++ b/spec/controllers/projects/service_hook_logs_controller_spec.rb
@@ -0,0 +1,41 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Projects::ServiceHookLogsController do
+ let(:project) { create(:project, :repository) }
+ let(:user) { create(:user) }
+ let(:service) { create(:drone_ci_service, project: project) }
+ let(:log) { create(:web_hook_log, web_hook: service.service_hook) }
+ let(:log_params) do
+ {
+ namespace_id: project.namespace,
+ project_id: project,
+ service_id: service.to_param,
+ id: log.id
+ }
+ end
+
+ before do
+ sign_in(user)
+ project.add_maintainer(user)
+ end
+
+ describe 'GET #show' do
+ subject { get :show, params: log_params }
+
+ it do
+ expect(response).to be_successful
+ end
+ end
+
+ describe 'POST #retry' do
+ subject { post :retry, params: log_params }
+
+ it 'executes the hook and redirects to the service form' do
+ expect_any_instance_of(ServiceHook).to receive(:execute)
+ expect_any_instance_of(described_class).to receive(:set_hook_execution_notice)
+ expect(subject).to redirect_to(edit_project_service_path(project, service))
+ end
+ end
+end
diff --git a/spec/controllers/projects/settings/ci_cd_controller_spec.rb b/spec/controllers/projects/settings/ci_cd_controller_spec.rb
index 98f8826397f..abe31a0c86e 100644
--- a/spec/controllers/projects/settings/ci_cd_controller_spec.rb
+++ b/spec/controllers/projects/settings/ci_cd_controller_spec.rb
@@ -81,6 +81,7 @@ describe Projects::Settings::CiCdController do
it 'resets runner registration token' do
expect { subject }.to change { project.reload.runners_token }
+ expect(flash[:toast]).to eq('New runners registration token has been generated!')
end
it 'redirects the user to admin runners page' do
@@ -106,7 +107,7 @@ describe Projects::Settings::CiCdController do
subject
expect(response).to have_gitlab_http_status(302)
- expect(flash[:notice]).to eq("Pipelines settings for '#{project.name}' were successfully updated.")
+ expect(flash[:toast]).to eq("Pipelines settings for '#{project.name}' were successfully updated.")
end
context 'when updating the auto_devops settings' do
@@ -131,8 +132,8 @@ describe Projects::Settings::CiCdController do
end
context 'when the project repository is empty' do
- it 'sets a warning flash' do
- expect(subject).to set_flash[:warning]
+ it 'sets a notice flash' do
+ expect(subject).to set_flash[:notice]
end
it 'does not queue a CreatePipelineWorker' do
@@ -145,10 +146,10 @@ describe Projects::Settings::CiCdController do
context 'when the project repository is not empty' do
let(:project) { create(:project, :repository) }
- it 'sets a success flash' do
+ it 'displays a toast message' do
allow(CreatePipelineWorker).to receive(:perform_async).with(project.id, user.id, project.default_branch, :web, any_args)
- expect(subject).to set_flash[:success]
+ expect(subject).to set_flash[:toast]
end
it 'queues a CreatePipelineWorker' do
diff --git a/spec/controllers/projects/uploads_controller_spec.rb b/spec/controllers/projects/uploads_controller_spec.rb
index 661ed9840b1..cd6a9886f72 100644
--- a/spec/controllers/projects/uploads_controller_spec.rb
+++ b/spec/controllers/projects/uploads_controller_spec.rb
@@ -35,7 +35,7 @@ describe Projects::UploadsController do
post_authorize
expect(response).to have_gitlab_http_status(500)
- expect(response.body).to eq('Error uploading file')
+ expect(response.body).to eq(_('Error uploading file'))
end
end
diff --git a/spec/controllers/projects/wikis_controller_spec.rb b/spec/controllers/projects/wikis_controller_spec.rb
index f46da908218..3100aa2cb96 100644
--- a/spec/controllers/projects/wikis_controller_spec.rb
+++ b/spec/controllers/projects/wikis_controller_spec.rb
@@ -114,7 +114,7 @@ describe Projects::WikisController do
subject
expect(response).to have_http_status(:ok)
- expect(flash[:notice]).to eq('The content of this page is not encoded in UTF-8. Edits can only be made via the Git repository.')
+ expect(flash[:notice]).to eq(_('The content of this page is not encoded in UTF-8. Edits can only be made via the Git repository.'))
end
end
end
@@ -205,7 +205,7 @@ describe Projects::WikisController do
subject
expect(response).to have_http_status(:ok)
- expect(response.body).to include('Edit Page')
+ expect(response.body).to include(s_('Wiki|Edit Page'))
end
end
end
diff --git a/spec/controllers/projects_controller_spec.rb b/spec/controllers/projects_controller_spec.rb
index d16201fff5a..5259c612bbd 100644
--- a/spec/controllers/projects_controller_spec.rb
+++ b/spec/controllers/projects_controller_spec.rb
@@ -506,7 +506,7 @@ describe ProjectsController do
expect { update_project path: 'renamed_path' }
.not_to change { project.reload.path }
- expect(controller).to set_flash.now[:alert].to(/container registry tags/)
+ expect(controller).to set_flash.now[:alert].to(s_('UpdateProject|Cannot rename project because it contains container registry tags!'))
expect(response).to have_gitlab_http_status(200)
end
end
@@ -645,7 +645,7 @@ describe ProjectsController do
expect(project.namespace).to eq(old_namespace)
expect(response).to have_gitlab_http_status(200)
- expect(flash[:alert]).to eq 'Please select a new namespace for your project.'
+ expect(flash[:alert]).to eq s_('TransferProject|Please select a new namespace for your project.')
end
end
end
@@ -797,7 +797,7 @@ describe ProjectsController do
format: :js)
expect(forked_project.reload.forked?).to be_falsey
- expect(flash[:notice]).to eq('The fork relationship has been removed.')
+ expect(flash[:notice]).to eq(s_('The fork relationship has been removed.'))
expect(response).to render_template(:remove_fork)
end
end
@@ -1055,45 +1055,34 @@ describe ProjectsController do
end
end
- describe '#export' do
+ describe 'project export' do
before do
sign_in(user)
project.add_maintainer(user)
end
- context 'when project export is enabled' do
- it 'returns 302' do
- get :export, params: { namespace_id: project.namespace, id: project }
-
- expect(response).to have_gitlab_http_status(302)
- end
- end
-
- context 'when project export is disabled' do
+ shared_examples 'rate limits project export endpoint' do
before do
- stub_application_setting(project_export_enabled?: false)
+ allow(::Gitlab::ApplicationRateLimiter)
+ .to receive(:throttled?)
+ .and_return(true)
end
- it 'returns 404' do
- get :export, params: { namespace_id: project.namespace, id: project }
+ it 'prevents requesting project export' do
+ get action, params: { namespace_id: project.namespace, id: project }
- expect(response).to have_gitlab_http_status(404)
+ expect(flash[:alert]).to eq('This endpoint has been requested too many times. Try again later.')
+ expect(response).to have_gitlab_http_status(302)
end
end
- end
- describe '#download_export' do
- before do
- sign_in(user)
+ describe '#export' do
+ let(:action) { :export }
- project.add_maintainer(user)
- end
-
- context 'object storage enabled' do
context 'when project export is enabled' do
it 'returns 302' do
- get :download_export, params: { namespace_id: project.namespace, id: project }
+ get action, params: { namespace_id: project.namespace, id: project }
expect(response).to have_gitlab_http_status(302)
end
@@ -1105,66 +1094,96 @@ describe ProjectsController do
end
it 'returns 404' do
- get :download_export, params: { namespace_id: project.namespace, id: project }
+ get action, params: { namespace_id: project.namespace, id: project }
expect(response).to have_gitlab_http_status(404)
end
end
+
+ context 'when the endpoint receives requests above the limit', :clean_gitlab_redis_cache do
+ include_examples 'rate limits project export endpoint'
+ end
end
- end
- describe '#remove_export' do
- before do
- sign_in(user)
+ describe '#download_export' do
+ let(:action) { :download_export }
- project.add_maintainer(user)
- end
+ context 'object storage enabled' do
+ context 'when project export is enabled' do
+ it 'returns 302' do
+ get action, params: { namespace_id: project.namespace, id: project }
- context 'when project export is enabled' do
- it 'returns 302' do
- post :remove_export, params: { namespace_id: project.namespace, id: project }
+ expect(response).to have_gitlab_http_status(302)
+ end
+ end
- expect(response).to have_gitlab_http_status(302)
- end
- end
+ context 'when project export is disabled' do
+ before do
+ stub_application_setting(project_export_enabled?: false)
+ end
- context 'when project export is disabled' do
- before do
- stub_application_setting(project_export_enabled?: false)
- end
+ it 'returns 404' do
+ get action, params: { namespace_id: project.namespace, id: project }
- it 'returns 404' do
- post :remove_export, params: { namespace_id: project.namespace, id: project }
+ expect(response).to have_gitlab_http_status(404)
+ end
+ end
- expect(response).to have_gitlab_http_status(404)
+ context 'when the endpoint receives requests above the limit', :clean_gitlab_redis_cache do
+ include_examples 'rate limits project export endpoint'
+ end
end
end
- end
- describe '#generate_new_export' do
- before do
- sign_in(user)
+ describe '#remove_export' do
+ let(:action) { :remove_export }
- project.add_maintainer(user)
- end
+ context 'when project export is enabled' do
+ it 'returns 302' do
+ post action, params: { namespace_id: project.namespace, id: project }
- context 'when project export is enabled' do
- it 'returns 302' do
- post :generate_new_export, params: { namespace_id: project.namespace, id: project }
+ expect(response).to have_gitlab_http_status(302)
+ end
+ end
- expect(response).to have_gitlab_http_status(302)
+ context 'when project export is disabled' do
+ before do
+ stub_application_setting(project_export_enabled?: false)
+ end
+
+ it 'returns 404' do
+ post action, params: { namespace_id: project.namespace, id: project }
+
+ expect(response).to have_gitlab_http_status(404)
+ end
end
end
- context 'when project export is disabled' do
- before do
- stub_application_setting(project_export_enabled?: false)
+ describe '#generate_new_export' do
+ let(:action) { :generate_new_export }
+
+ context 'when project export is enabled' do
+ it 'returns 302' do
+ post action, params: { namespace_id: project.namespace, id: project }
+
+ expect(response).to have_gitlab_http_status(302)
+ end
end
- it 'returns 404' do
- post :generate_new_export, params: { namespace_id: project.namespace, id: project }
+ context 'when project export is disabled' do
+ before do
+ stub_application_setting(project_export_enabled?: false)
+ end
- expect(response).to have_gitlab_http_status(404)
+ it 'returns 404' do
+ post action, params: { namespace_id: project.namespace, id: project }
+
+ expect(response).to have_gitlab_http_status(404)
+ end
+ end
+
+ context 'when the endpoint receives requests above the limit', :clean_gitlab_redis_cache do
+ include_examples 'rate limits project export endpoint'
end
end
end
diff --git a/spec/controllers/registrations_controller_spec.rb b/spec/controllers/registrations_controller_spec.rb
index c5cfdd32619..da36148ba85 100644
--- a/spec/controllers/registrations_controller_spec.rb
+++ b/spec/controllers/registrations_controller_spec.rb
@@ -136,13 +136,13 @@ describe RegistrationsController do
post(:create, params: user_params)
expect(response).to render_template(:new)
- expect(flash[:alert]).to include 'There was an error with the reCAPTCHA. Please solve the reCAPTCHA again.'
+ expect(flash[:alert]).to eq(_('There was an error with the reCAPTCHA. Please solve the reCAPTCHA again.'))
end
it 'redirects to the dashboard when the recaptcha is solved' do
post(:create, params: user_params)
- expect(flash[:notice]).to include 'Welcome! You have signed up successfully.'
+ expect(flash[:notice]).to eq(I18n.t('devise.registrations.signed_up'))
end
it 'does not require reCAPTCHA if disabled by feature flag' do
@@ -152,7 +152,7 @@ describe RegistrationsController do
expect(controller).not_to receive(:verify_recaptcha)
expect(flash[:alert]).to be_nil
- expect(flash[:notice]).to include 'Welcome! You have signed up successfully.'
+ expect(flash[:notice]).to eq(I18n.t('devise.registrations.signed_up'))
end
end
@@ -220,7 +220,7 @@ describe RegistrationsController do
expect(Gitlab::AuthLogger).to receive(:error).with(auth_log_attributes).once
expect { post(:create, params: user_params, session: session_params) }.not_to change(User, :count)
expect(response).to redirect_to(new_user_session_path)
- expect(flash[:alert]).to include 'That was a bit too quick! Please resubmit.'
+ expect(flash[:alert]).to eq(I18n.t('invisible_captcha.timestamp_error_message'))
end
end
end
@@ -236,7 +236,7 @@ describe RegistrationsController do
expect(Gitlab::AuthLogger).to receive(:error).with(auth_log_attributes).once
expect { post(:create, params: user_params, session: session_params) }.not_to change(User, :count)
expect(response).to redirect_to(new_user_session_path)
- expect(flash[:alert]).to include 'That was a bit too quick! Please resubmit.'
+ expect(flash[:alert]).to eq(I18n.t('invisible_captcha.timestamp_error_message'))
end
end
end
@@ -251,7 +251,7 @@ describe RegistrationsController do
it 'redirects back with a notice when the checkbox was not checked' do
post :create, params: user_params
- expect(flash[:alert]).to match /you must accept our terms/i
+ expect(flash[:alert]).to eq(_('You must accept our Terms of Service and privacy policy in order to register an account'))
end
it 'creates the user with agreement when terms are accepted' do
@@ -322,15 +322,15 @@ describe RegistrationsController do
end
def expect_password_failure
- expect_failure('Invalid password')
+ expect_failure(s_('Profiles|Invalid password'))
end
def expect_username_failure
- expect_failure('Invalid username')
+ expect_failure(s_('Profiles|Invalid username'))
end
def expect_success
- expect(flash[:notice]).to eq 'Account scheduled for removal.'
+ expect(flash[:notice]).to eq s_('Profiles|Account scheduled for removal.')
expect(response.status).to eq(303)
expect(response).to redirect_to new_user_session_path
end
diff --git a/spec/controllers/snippets_controller_spec.rb b/spec/controllers/snippets_controller_spec.rb
index 054d448c28d..510db4374c0 100644
--- a/spec/controllers/snippets_controller_spec.rb
+++ b/spec/controllers/snippets_controller_spec.rb
@@ -53,6 +53,16 @@ describe SnippetsController do
expect(response).to have_gitlab_http_status(200)
end
+
+ context 'when user is not allowed to create a personal snippet' do
+ let(:user) { create(:user, :external) }
+
+ it 'responds with status 404' do
+ get :new
+
+ expect(response).to have_gitlab_http_status(404)
+ end
+ end
end
context 'when not signed in' do
@@ -215,6 +225,20 @@ describe SnippetsController do
expect(snippet.description).to eq('Description')
end
+ context 'when user is not allowed to create a personal snippet' do
+ let(:user) { create(:user, :external) }
+
+ it 'responds with status 404' do
+ aggregate_failures do
+ expect do
+ create_snippet(visibility_level: Snippet::PUBLIC)
+ end.not_to change { Snippet.count }
+
+ expect(response).to have_gitlab_http_status(404)
+ end
+ end
+ end
+
context 'when the snippet description contains a file' do
include FileMoverHelpers
diff --git a/spec/controllers/uploads_controller_spec.rb b/spec/controllers/uploads_controller_spec.rb
index 1bcf3bb106b..ff15e685007 100644
--- a/spec/controllers/uploads_controller_spec.rb
+++ b/spec/controllers/uploads_controller_spec.rb
@@ -196,24 +196,39 @@ describe UploadsController do
describe "GET show" do
context 'Content-Disposition security measures' do
+ let(:expected_disposition) { 'inline;' }
let(:project) { create(:project, :public) }
- context 'for PNG files' do
- it 'returns Content-Disposition: inline' do
- note = create(:note, :with_attachment, project: project)
- get :show, params: { model: 'note', mounted_as: 'attachment', id: note.id, filename: 'dk.png' }
+ shared_examples_for 'uploaded file with disposition' do
+ it 'returns correct Content-Disposition' do
+ get :show, params: { model: 'note', mounted_as: 'attachment', id: note.id, filename: filename }
- expect(response['Content-Disposition']).to start_with('inline;')
+ expect(response['Content-Disposition']).to start_with(expected_disposition)
end
end
+ context 'for PNG files' do
+ let(:filename) { 'dk.png' }
+ let(:expected_disposition) { 'inline;' }
+ let(:note) { create(:note, :with_attachment, project: project) }
+
+ it_behaves_like 'uploaded file with disposition'
+ end
+
+ context 'for PDF files' do
+ let(:filename) { 'git-cheat-sheet.pdf' }
+ let(:expected_disposition) { 'inline;' }
+ let(:note) { create(:note, :with_pdf_attachment, project: project) }
+
+ it_behaves_like 'uploaded file with disposition'
+ end
+
context 'for SVG files' do
- it 'returns Content-Disposition: attachment' do
- note = create(:note, :with_svg_attachment, project: project)
- get :show, params: { model: 'note', mounted_as: 'attachment', id: note.id, filename: 'unsanitized.svg' }
+ let(:filename) { 'unsanitized.svg' }
+ let(:expected_disposition) { 'attachment;' }
+ let(:note) { create(:note, :with_svg_attachment, project: project) }
- expect(response['Content-Disposition']).to start_with('attachment;')
- end
+ it_behaves_like 'uploaded file with disposition'
end
end
@@ -228,10 +243,10 @@ describe UploadsController do
user.block
end
- it "redirects to the sign in page" do
+ it "responds with status 401" do
get :show, params: { model: "user", mounted_as: "avatar", id: user.id, filename: "dk.png" }
- expect(response).to redirect_to(new_user_session_path)
+ expect(response).to have_gitlab_http_status(401)
end
end
@@ -320,10 +335,10 @@ describe UploadsController do
end
context "when not signed in" do
- it "redirects to the sign in page" do
+ it "responds with status 401" do
get :show, params: { model: "project", mounted_as: "avatar", id: project.id, filename: "dk.png" }
- expect(response).to redirect_to(new_user_session_path)
+ expect(response).to have_gitlab_http_status(401)
end
end
@@ -343,10 +358,10 @@ describe UploadsController do
project.add_maintainer(user)
end
- it "redirects to the sign in page" do
+ it "responds with status 401" do
get :show, params: { model: "project", mounted_as: "avatar", id: project.id, filename: "dk.png" }
- expect(response).to redirect_to(new_user_session_path)
+ expect(response).to have_gitlab_http_status(401)
end
end
@@ -439,10 +454,10 @@ describe UploadsController do
user.block
end
- it "redirects to the sign in page" do
+ it "responds with status 401" do
get :show, params: { model: "group", mounted_as: "avatar", id: group.id, filename: "dk.png" }
- expect(response).to redirect_to(new_user_session_path)
+ expect(response).to have_gitlab_http_status(401)
end
end
@@ -526,10 +541,10 @@ describe UploadsController do
end
context "when not signed in" do
- it "redirects to the sign in page" do
+ it "responds with status 401" do
get :show, params: { model: "note", mounted_as: "attachment", id: note.id, filename: "dk.png" }
- expect(response).to redirect_to(new_user_session_path)
+ expect(response).to have_gitlab_http_status(401)
end
end
@@ -549,10 +564,10 @@ describe UploadsController do
project.add_maintainer(user)
end
- it "redirects to the sign in page" do
+ it "responds with status 401" do
get :show, params: { model: "note", mounted_as: "attachment", id: note.id, filename: "dk.png" }
- expect(response).to redirect_to(new_user_session_path)
+ expect(response).to have_gitlab_http_status(401)
end
end
diff --git a/spec/db/schema_spec.rb b/spec/db/schema_spec.rb
index e8b30868801..a42916a83a6 100644
--- a/spec/db/schema_spec.rb
+++ b/spec/db/schema_spec.rb
@@ -43,6 +43,8 @@ describe 'Database schema' do
geo_nodes: %w[oauth_application_id],
geo_repository_deleted_events: %w[project_id],
geo_upload_deleted_events: %w[upload_id model_id],
+ gitlab_subscription_histories: %w[gitlab_subscription_id hosted_plan_id namespace_id],
+ import_failures: %w[project_id],
identities: %w[user_id],
issues: %w[last_edited_by_id state_id],
jira_tracker_data: %w[jira_issue_transition_id],
@@ -79,7 +81,8 @@ describe 'Database schema' do
vulnerability_identifiers: %w[external_id],
vulnerability_scanners: %w[external_id],
web_hooks: %w[service_id group_id],
- suggestions: %w[commit_id]
+ suggestions: %w[commit_id],
+ commit_user_mentions: %w[commit_id]
}.with_indifferent_access.freeze
context 'for table' do
diff --git a/spec/factories/ci/builds.rb b/spec/factories/ci/builds.rb
index 0bd39d4cdcf..ecb1f1996d9 100644
--- a/spec/factories/ci/builds.rb
+++ b/spec/factories/ci/builds.rb
@@ -373,6 +373,14 @@ FactoryBot.define do
end
end
+ trait :license_management do
+ options do
+ {
+ artifacts: { reports: { license_management: 'gl-license-management-report.json' } }
+ }
+ end
+ end
+
trait :non_playable do
status { 'created' }
self.when { 'manual' }
diff --git a/spec/factories/clusters/clusters.rb b/spec/factories/clusters/clusters.rb
index 609e7e20187..7121850e5ff 100644
--- a/spec/factories/clusters/clusters.rb
+++ b/spec/factories/clusters/clusters.rb
@@ -90,6 +90,28 @@ FactoryBot.define do
domain { 'example.com' }
end
+ trait :with_environments do
+ transient do
+ environments { %i(staging production) }
+ end
+
+ cluster_type { Clusters::Cluster.cluster_types[:project_type] }
+
+ before(:create) do |cluster, evaluator|
+ cluster_project = create(:cluster_project, cluster: cluster)
+
+ evaluator.environments.each do |env_name|
+ environment = create(:environment, name: env_name, project: cluster_project.project)
+
+ cluster.kubernetes_namespaces << create(:cluster_kubernetes_namespace,
+ cluster: cluster,
+ cluster_project: cluster_project,
+ project: cluster_project.project,
+ environment: environment)
+ end
+ end
+ end
+
trait :not_managed do
managed { false }
end
diff --git a/spec/factories/conversational_development_index_metrics.rb b/spec/factories/dev_ops_score_metrics.rb
index f039bac81d0..0d9d7059e7f 100644
--- a/spec/factories/conversational_development_index_metrics.rb
+++ b/spec/factories/dev_ops_score_metrics.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
FactoryBot.define do
- factory :conversational_development_index_metric, class: ConversationalDevelopmentIndex::Metric do
+ factory :dev_ops_score_metric, class: DevOpsScore::Metric do
leader_issues { 9.256 }
instance_issues { 1.234 }
percentage_issues { 13.331 }
diff --git a/spec/factories/environments.rb b/spec/factories/environments.rb
index 9286f49bc59..44aa4527e12 100644
--- a/spec/factories/environments.rb
+++ b/spec/factories/environments.rb
@@ -44,5 +44,13 @@ FactoryBot.define do
status { 'created' }
self.when { 'manual' }
end
+
+ trait :auto_stopped do
+ auto_stop_at { 1.day.ago }
+ end
+
+ trait :will_auto_stop do
+ auto_stop_at { 1.day.from_now }
+ end
end
end
diff --git a/spec/factories/error_tracking/detailed_error.rb b/spec/factories/error_tracking/detailed_error.rb
index cf7de2ece96..f12c327d403 100644
--- a/spec/factories/error_tracking/detailed_error.rb
+++ b/spec/factories/error_tracking/detailed_error.rb
@@ -2,13 +2,13 @@
FactoryBot.define do
factory :detailed_error_tracking_error, class: Gitlab::ErrorTracking::DetailedError do
- id { 'id' }
+ id { '1' }
title { 'title' }
type { 'error' }
user_count { 1 }
count { 2 }
- first_seen { Time.now }
- last_seen { Time.now }
+ first_seen { Time.now.iso8601 }
+ last_seen { Time.now.iso8601 }
message { 'message' }
culprit { 'culprit' }
external_url { 'http://example.com/id' }
@@ -18,7 +18,12 @@ FactoryBot.define do
project_slug { 'project_name' }
short_id { 'ID' }
status { 'unresolved' }
- frequency { [] }
+ frequency do
+ [
+ [Time.now.to_i, 10]
+ ]
+ end
+ gitlab_issue { 'http://gitlab.example.com/issues/1' }
first_release_last_commit { '68c914da9' }
last_release_last_commit { '9ad419c86' }
first_release_short_version { 'abc123' }
diff --git a/spec/factories/error_tracking/error_event.rb b/spec/factories/error_tracking/error_event.rb
index 44c127e7bf5..c4dcd67bc9f 100644
--- a/spec/factories/error_tracking/error_event.rb
+++ b/spec/factories/error_tracking/error_event.rb
@@ -5,12 +5,40 @@ FactoryBot.define do
issue_id { 'id' }
date_received { Time.now.iso8601 }
stack_trace_entries do
- {
- 'stacktrace' =>
- {
- 'frames' => [{ 'file' => 'test.rb' }]
- }
- }
+ [
+ {
+ 'function' => 'puts',
+ 'lineNo' => 14,
+ 'filename' => 'hello_world.rb',
+ 'context' => [
+ [10, "# Ruby example\n"],
+ [11, "class HelloWorld\n"],
+ [12, " def self.message\n"],
+ [13, " @name = 'World'\n"],
+ [14, " puts \"Hello \#{@name}\"\n"],
+ [15, " end\n"],
+ [16, "end\n"]
+ ]
+ },
+ {
+ 'function' => 'print',
+ 'lineNo' => 6,
+ 'filename' => 'HelloWorld.swift',
+ 'context' => [
+ [1, "// Swift example\n"],
+ [2, "struct HelloWorld {\n"],
+ [3, " let name = \"World\"\n"],
+ [4, "\n"],
+ [5, " static func message() {\n"],
+ [6, " print(\"Hello, \\(self.name)\")\n"],
+ [7, " }\n"],
+ [8, "}\n"]
+ ]
+ },
+ {
+ 'filename' => 'blank.txt'
+ }
+ ]
end
skip_create
diff --git a/spec/factories/lists.rb b/spec/factories/lists.rb
index 8785d3f0468..cf00351b231 100644
--- a/spec/factories/lists.rb
+++ b/spec/factories/lists.rb
@@ -5,6 +5,8 @@ FactoryBot.define do
board
label
list_type { :label }
+ max_issue_count { 0 }
+ max_issue_weight { 0 }
sequence(:position)
end
diff --git a/spec/factories/merge_request_diff_commits.rb b/spec/factories/merge_request_diff_commits.rb
new file mode 100644
index 00000000000..55626253e34
--- /dev/null
+++ b/spec/factories/merge_request_diff_commits.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :merge_request_diff_commit do
+ association :merge_request_diff
+
+ sha { Digest::SHA1.hexdigest(SecureRandom.hex) }
+ relative_order { 0 }
+ end
+end
diff --git a/spec/factories/merge_requests.rb b/spec/factories/merge_requests.rb
index 42248dc1165..2344ffffa65 100644
--- a/spec/factories/merge_requests.rb
+++ b/spec/factories/merge_requests.rb
@@ -188,6 +188,10 @@ FactoryBot.define do
end
end
+ trait :sequence_source_branch do
+ sequence(:source_branch) { |n| "feature#{n}" }
+ end
+
after(:build) do |merge_request|
target_project = merge_request.target_project
source_project = merge_request.source_project
diff --git a/spec/factories/notes.rb b/spec/factories/notes.rb
index 2f02acca794..330f5276422 100644
--- a/spec/factories/notes.rb
+++ b/spec/factories/notes.rb
@@ -167,6 +167,10 @@ FactoryBot.define do
attachment { fixture_file_upload("spec/fixtures/unsanitized.svg", "image/svg+xml") }
end
+ trait :with_pdf_attachment do
+ attachment { fixture_file_upload("spec/fixtures/git-cheat-sheet.pdf", "application/pdf") }
+ end
+
transient do
in_reply_to { nil }
end
diff --git a/spec/factories/oauth_openid_requests.rb b/spec/factories/oauth_openid_requests.rb
new file mode 100644
index 00000000000..82d89b5c8ca
--- /dev/null
+++ b/spec/factories/oauth_openid_requests.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :oauth_openid_request, class: 'Doorkeeper::OpenidConnect::Request' do
+ access_grant factory: :oauth_access_grant
+ sequence(:nonce) { |n| n.to_s }
+ end
+end
diff --git a/spec/factories/releases.rb b/spec/factories/releases.rb
index 2f77bb95ea3..182ee2378d4 100644
--- a/spec/factories/releases.rb
+++ b/spec/factories/releases.rb
@@ -14,5 +14,11 @@ FactoryBot.define do
sha { nil }
author { nil }
end
+
+ trait :with_evidence do
+ after(:create) do |release, _|
+ create(:evidence, release: release)
+ end
+ end
end
end
diff --git a/spec/factories/sentry_issue.rb b/spec/factories/sentry_issue.rb
new file mode 100644
index 00000000000..c9886f1673a
--- /dev/null
+++ b/spec/factories/sentry_issue.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :sentry_issue, class: SentryIssue do
+ issue
+ sentry_issue_identifier { 1234567891 }
+ end
+end
diff --git a/spec/factories/serverless/domain_cluster.rb b/spec/factories/serverless/domain_cluster.rb
new file mode 100644
index 00000000000..290d3fc152e
--- /dev/null
+++ b/spec/factories/serverless/domain_cluster.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :serverless_domain_cluster, class: Serverless::DomainCluster do
+ pages_domain { create(:pages_domain) }
+ knative { create(:clusters_applications_knative) }
+ creator { create(:user) }
+ uuid { SecureRandom.hex(7) }
+ end
+end
diff --git a/spec/factories/services.rb b/spec/factories/services.rb
index f9c77dbf87f..b6bb30d1f93 100644
--- a/spec/factories/services.rb
+++ b/spec/factories/services.rb
@@ -44,6 +44,13 @@ FactoryBot.define do
end
end
+ factory :drone_ci_service do
+ project
+ active { true }
+ drone_url { 'https://bamboo.example.com' }
+ token { 'test' }
+ end
+
factory :jira_service do
project
active { true }
diff --git a/spec/factories/snippets.rb b/spec/factories/snippets.rb
index ede071ae70c..5990ed7ffb0 100644
--- a/spec/factories/snippets.rb
+++ b/spec/factories/snippets.rb
@@ -7,6 +7,7 @@ FactoryBot.define do
content { generate(:title) }
description { generate(:title) }
file_name { generate(:filename) }
+ secret { false }
trait :public do
visibility_level { Snippet::PUBLIC }
@@ -27,5 +28,9 @@ FactoryBot.define do
end
factory :personal_snippet, parent: :snippet, class: :PersonalSnippet do
+ trait :secret do
+ visibility_level { Snippet::PUBLIC }
+ secret { true }
+ end
end
end
diff --git a/spec/features/admin/admin_broadcast_messages_spec.rb b/spec/features/admin/admin_broadcast_messages_spec.rb
index dfc7c89840a..c5a302ce78b 100644
--- a/spec/features/admin/admin_broadcast_messages_spec.rb
+++ b/spec/features/admin/admin_broadcast_messages_spec.rb
@@ -16,12 +16,14 @@ describe 'Admin Broadcast Messages' do
it 'Create a customized broadcast message' do
fill_in 'broadcast_message_message', with: 'Application update from **4:00 CST to 5:00 CST**'
fill_in 'broadcast_message_color', with: '#f2dede'
+ fill_in 'broadcast_message_target_path', with: '*/user_onboarded'
fill_in 'broadcast_message_font', with: '#b94a48'
select Date.today.next_year.year, from: 'broadcast_message_ends_at_1i'
click_button 'Add broadcast message'
expect(current_path).to eq admin_broadcast_messages_path
expect(page).to have_content 'Application update from 4:00 CST to 5:00 CST'
+ expect(page).to have_content '*/user_onboarded'
expect(page).to have_selector 'strong', text: '4:00 CST to 5:00 CST'
expect(page).to have_selector %(div[style="background-color: #f2dede; color: #b94a48"])
end
diff --git a/spec/features/admin/admin_groups_spec.rb b/spec/features/admin/admin_groups_spec.rb
index 34356a2ee90..257e5cb8bf0 100644
--- a/spec/features/admin/admin_groups_spec.rb
+++ b/spec/features/admin/admin_groups_spec.rb
@@ -94,6 +94,14 @@ describe 'Admin Groups' do
expect(page).to have_content("Group: #{group.name}")
expect(page).to have_content("ID: #{group.id}")
end
+
+ it 'has a link to the group' do
+ group = create(:group, :private)
+
+ visit admin_group_path(group)
+
+ expect(page).to have_link(group.name, href: group_path(group))
+ end
end
describe 'group edit' do
diff --git a/spec/features/admin/admin_hooks_spec.rb b/spec/features/admin/admin_hooks_spec.rb
index 0fd748af3ce..b4bcbe9d812 100644
--- a/spec/features/admin/admin_hooks_spec.rb
+++ b/spec/features/admin/admin_hooks_spec.rb
@@ -85,7 +85,7 @@ describe 'Admin::Hooks' do
it 'from hooks list page' do
visit admin_hooks_path
- accept_confirm { click_link 'Remove' }
+ accept_confirm { click_link 'Delete' }
expect(page).not_to have_content(hook_url)
end
@@ -93,7 +93,7 @@ describe 'Admin::Hooks' do
visit admin_hooks_path
click_link 'Edit'
- accept_confirm { click_link 'Remove' }
+ accept_confirm { click_link 'Delete' }
expect(page).not_to have_content(hook_url)
end
end
diff --git a/spec/features/admin/clusters/eks_spec.rb b/spec/features/admin/clusters/eks_spec.rb
index b262db1ad7c..40561aa508c 100644
--- a/spec/features/admin/clusters/eks_spec.rb
+++ b/spec/features/admin/clusters/eks_spec.rb
@@ -22,7 +22,7 @@ describe 'Instance-level AWS EKS Cluster', :js do
end
it 'user sees a form to create an EKS cluster' do
- expect(page).to have_content('Create new Cluster on EKS')
+ expect(page).to have_content('Create new cluster on EKS')
end
end
end
diff --git a/spec/features/boards/boards_spec.rb b/spec/features/boards/boards_spec.rb
index e26582d3444..c740e4e26d9 100644
--- a/spec/features/boards/boards_spec.rb
+++ b/spec/features/boards/boards_spec.rb
@@ -72,7 +72,6 @@ describe 'Issue Boards', :js do
let!(:closed) { create(:label, project: project, name: 'Closed') }
let!(:accepting) { create(:label, project: project, name: 'Accepting Merge Requests') }
let!(:a_plus) { create(:label, project: project, name: 'A+') }
-
let!(:list1) { create(:list, board: board, label: planning, position: 0) }
let!(:list2) { create(:list, board: board, label: development, position: 1) }
@@ -289,6 +288,17 @@ describe 'Issue Boards', :js do
expect(page).to have_selector('.avatar', count: 1)
end
end
+
+ context 'list header' do
+ let(:total_planning_issues) { "8" }
+
+ it 'shows issue count on the list' do
+ page.within(find(".board:nth-child(2)")) do
+ expect(page.find('.js-issue-size')).to have_text(total_planning_issues)
+ expect(page).not_to have_selector('.js-max-issue-size')
+ end
+ end
+ end
end
context 'new list' do
diff --git a/spec/features/dashboard/milestones_spec.rb b/spec/features/dashboard/milestones_spec.rb
index c21bc922de7..4ad19710d90 100644
--- a/spec/features/dashboard/milestones_spec.rb
+++ b/spec/features/dashboard/milestones_spec.rb
@@ -30,6 +30,7 @@ describe 'Dashboard > Milestones' do
expect(current_path).to eq dashboard_milestones_path
expect(page).to have_content(milestone.title)
expect(page).to have_content(group.name)
+ expect(first('.milestone')).to have_content('Merge Requests')
end
describe 'new milestones dropdown', :js do
@@ -46,4 +47,23 @@ describe 'Dashboard > Milestones' do
end
end
end
+
+ describe 'with merge requests disabled' do
+ let(:user) { create(:user) }
+ let(:group) { create(:group) }
+ let(:project) { create(:project, :merge_requests_disabled, namespace: user.namespace) }
+ let!(:milestone) { create(:milestone, project: project) }
+
+ before do
+ group.add_developer(user)
+ sign_in(user)
+ visit dashboard_milestones_path
+ end
+
+ it 'does not see milestones' do
+ expect(current_path).to eq dashboard_milestones_path
+ expect(page).to have_content(milestone.title)
+ expect(first('.milestone')).to have_no_content('Merge Requests')
+ end
+ end
end
diff --git a/spec/features/dashboard/snippets_spec.rb b/spec/features/dashboard/snippets_spec.rb
index 4fb01995cb0..ff3eb58931d 100644
--- a/spec/features/dashboard/snippets_spec.rb
+++ b/spec/features/dashboard/snippets_spec.rb
@@ -6,6 +6,7 @@ describe 'Dashboard snippets' do
context 'when the project has snippets' do
let(:project) { create(:project, :public) }
let!(:snippets) { create_list(:project_snippet, 2, :public, author: project.owner, project: project) }
+
before do
allow(Snippet).to receive(:default_per_page).and_return(1)
sign_in(project.owner)
@@ -13,10 +14,16 @@ describe 'Dashboard snippets' do
end
it_behaves_like 'paginated snippets'
+
+ it 'shows new snippet button in header' do
+ parent_element = page.find('.page-title-controls')
+ expect(parent_element).to have_link('New snippet')
+ end
end
context 'when there are no project snippets', :js do
let(:project) { create(:project, :public) }
+
before do
sign_in(project.owner)
visit dashboard_snippets_path
@@ -28,6 +35,11 @@ describe 'Dashboard snippets' do
expect(element).to have_content("Snippets are small pieces of code or notes that you want to keep.")
expect(element.find('.svg-content img')['src']).to have_content('illustrations/snippets_empty')
end
+
+ it 'shows new snippet button in main content area' do
+ parent_element = page.find('.row.empty-state')
+ expect(parent_element).to have_link('New snippet')
+ end
end
context 'filtering by visibility' do
@@ -76,4 +88,26 @@ describe 'Dashboard snippets' do
expect(page).to have_content(snippets[0].title)
end
end
+
+ context 'as an external user' do
+ let(:user) { create(:user, :external) }
+ before do
+ sign_in(user)
+ visit dashboard_snippets_path
+ end
+
+ context 'without snippets' do
+ it 'hides new snippet button' do
+ expect(page).not_to have_link('New snippet')
+ end
+ end
+
+ context 'with snippets' do
+ let!(:snippets) { create(:personal_snippet, author: user) }
+
+ it 'hides new snippet button' do
+ expect(page).not_to have_link('New snippet')
+ end
+ end
+ end
end
diff --git a/spec/features/discussion_comments/snippets_spec.rb b/spec/features/discussion_comments/snippets_spec.rb
index 082f35050c0..0dccb7f5bb3 100644
--- a/spec/features/discussion_comments/snippets_spec.rb
+++ b/spec/features/discussion_comments/snippets_spec.rb
@@ -8,6 +8,7 @@ describe 'Thread Comments Snippet', :js do
let(:snippet) { create(:project_snippet, :private, project: project, author: user) }
before do
+ stub_feature_flags(snippets_vue: false)
project.add_maintainer(user)
sign_in(user)
diff --git a/spec/features/groups/clusters/eks_spec.rb b/spec/features/groups/clusters/eks_spec.rb
index b6942304c22..a9267d58739 100644
--- a/spec/features/groups/clusters/eks_spec.rb
+++ b/spec/features/groups/clusters/eks_spec.rb
@@ -28,7 +28,7 @@ describe 'Group AWS EKS Cluster', :js do
end
it 'user sees a form to create an EKS cluster' do
- expect(page).to have_content('Create new Cluster on EKS')
+ expect(page).to have_content('Create new cluster on EKS')
end
end
end
diff --git a/spec/features/groups/clusters/user_spec.rb b/spec/features/groups/clusters/user_spec.rb
index e06f2efe183..ceec50e4f58 100644
--- a/spec/features/groups/clusters/user_spec.rb
+++ b/spec/features/groups/clusters/user_spec.rb
@@ -115,11 +115,11 @@ describe 'User Cluster', :js do
end
end
- context 'when user destroy the cluster' do
+ context 'when user destroys the cluster' do
before do
- page.accept_confirm do
- click_link 'Remove integration'
- end
+ click_button 'Remove integration and resources'
+ fill_in 'confirm_cluster_name_input', with: cluster.name
+ click_button 'Remove integration'
end
it 'user sees creation form with the successful message' do
diff --git a/spec/features/groups/group_settings_spec.rb b/spec/features/groups/group_settings_spec.rb
index 41ecd21a386..d686e0ed9d2 100644
--- a/spec/features/groups/group_settings_spec.rb
+++ b/spec/features/groups/group_settings_spec.rb
@@ -19,6 +19,7 @@ describe 'Edit group settings' do
it 'the group is accessible via the new path' do
update_path(new_group_path)
visit new_group_full_path
+
expect(current_path).to eq(new_group_full_path)
expect(find('h1.home-panel-title')).to have_content(group.name)
end
@@ -26,6 +27,7 @@ describe 'Edit group settings' do
it 'the old group path redirects to the new path' do
update_path(new_group_path)
visit old_group_full_path
+
expect(current_path).to eq(new_group_full_path)
expect(find('h1.home-panel-title')).to have_content(group.name)
end
@@ -38,6 +40,7 @@ describe 'Edit group settings' do
it 'the subgroup is accessible via the new path' do
update_path(new_group_path)
visit new_subgroup_full_path
+
expect(current_path).to eq(new_subgroup_full_path)
expect(find('h1.home-panel-title')).to have_content(subgroup.name)
end
@@ -45,6 +48,7 @@ describe 'Edit group settings' do
it 'the old subgroup path redirects to the new path' do
update_path(new_group_path)
visit old_subgroup_full_path
+
expect(current_path).to eq(new_subgroup_full_path)
expect(find('h1.home-panel-title')).to have_content(subgroup.name)
end
@@ -66,6 +70,7 @@ describe 'Edit group settings' do
it 'the project is accessible via the new path' do
update_path(new_group_path)
visit new_project_full_path
+
expect(current_path).to eq(new_project_full_path)
expect(find('.breadcrumbs')).to have_content(project.path)
end
@@ -73,6 +78,7 @@ describe 'Edit group settings' do
it 'the old project path redirects to the new path' do
update_path(new_group_path)
visit old_project_full_path
+
expect(current_path).to eq(new_project_full_path)
expect(find('.breadcrumbs')).to have_content(project.path)
end
@@ -101,7 +107,7 @@ describe 'Edit group settings' do
attach_file(:group_avatar, Rails.root.join('spec', 'fixtures', 'banana_sample.gif'))
- expect { save_group }.to change { group.reload.avatar? }.to(true)
+ expect { save_general_group }.to change { group.reload.avatar? }.to(true)
end
it 'uploads new group avatar' do
@@ -132,6 +138,21 @@ describe 'Edit group settings' do
end
end
+ context 'disable email notifications' do
+ it 'is visible' do
+ visit edit_group_path(group)
+
+ expect(page).to have_selector('#group_emails_disabled', visible: true)
+ end
+
+ it 'accepts the changed state' do
+ visit edit_group_path(group)
+ check 'group_emails_disabled'
+
+ expect { save_permissions_group }.to change { updated_emails_disabled? }.to(true)
+ end
+ end
+
def update_path(new_group_path)
visit edit_group_path(group)
@@ -141,9 +162,20 @@ describe 'Edit group settings' do
end
end
- def save_group
+ def save_general_group
page.within('.gs-general') do
click_button 'Save changes'
end
end
+
+ def save_permissions_group
+ page.within('.gs-permissions') do
+ click_button 'Save changes'
+ end
+ end
+
+ def updated_emails_disabled?
+ group.reload.clear_memoization(:emails_disabled)
+ group.emails_disabled?
+ end
end
diff --git a/spec/features/groups/members/filter_members_spec.rb b/spec/features/groups/members/filter_members_spec.rb
index fc62c92db4e..cba86f7e651 100644
--- a/spec/features/groups/members/filter_members_spec.rb
+++ b/spec/features/groups/members/filter_members_spec.rb
@@ -3,42 +3,71 @@
require 'spec_helper'
describe 'Groups > Members > Filter members' do
- let(:user) { create(:user) }
- let(:user_with_2fa) { create(:user, :two_factor_via_otp) }
- let(:group) { create(:group) }
+ let(:user) { create(:user) }
+ let(:nested_group_user) { create(:user) }
+ let(:user_with_2fa) { create(:user, :two_factor_via_otp) }
+ let(:group) { create(:group) }
+ let(:nested_group) { create(:group, parent: group) }
before do
group.add_owner(user)
group.add_maintainer(user_with_2fa)
+ nested_group.add_maintainer(nested_group_user)
sign_in(user)
end
it 'shows all members' do
- visit_members_list
+ visit_members_list(group)
- expect(first_member).to include(user.name)
- expect(second_member).to include(user_with_2fa.name)
+ expect(member(0)).to include(user.name)
+ expect(member(1)).to include(user_with_2fa.name)
expect(page).to have_css('.member-filter-2fa-dropdown .dropdown-toggle-text', text: 'Everyone')
end
it 'shows only 2FA members' do
- visit_members_list(two_factor: 'enabled')
+ visit_members_list(group, two_factor: 'enabled')
- expect(first_member).to include(user_with_2fa.name)
+ expect(member(0)).to include(user_with_2fa.name)
expect(members_list.size).to eq(1)
expect(page).to have_css('.member-filter-2fa-dropdown .dropdown-toggle-text', text: 'Enabled')
end
it 'shows only non 2FA members' do
- visit_members_list(two_factor: 'disabled')
+ visit_members_list(group, two_factor: 'disabled')
- expect(first_member).to include(user.name)
+ expect(member(0)).to include(user.name)
expect(members_list.size).to eq(1)
expect(page).to have_css('.member-filter-2fa-dropdown .dropdown-toggle-text', text: 'Disabled')
end
- def visit_members_list(options = {})
+ it 'shows inherited members by default' do
+ visit_members_list(nested_group)
+
+ expect(member(0)).to include(user.name)
+ expect(member(1)).to include(user_with_2fa.name)
+ expect(member(2)).to include(nested_group_user.name)
+ expect(members_list.size).to eq(3)
+
+ expect(page).to have_css('[data-qa-selector="filter-members-with-inherited-permissions"] a.is-active', text: 'Show all members')
+ end
+
+ it 'shows only group members' do
+ visit_members_list(nested_group, with_inherited_permissions: 'exclude')
+ expect(member(0)).to include(nested_group_user.name)
+ expect(members_list.size).to eq(1)
+ expect(page).to have_css('[data-qa-selector="filter-members-with-inherited-permissions"] a.is-active', text: 'Show only direct members')
+ end
+
+ it 'shows only inherited members' do
+ visit_members_list(nested_group, with_inherited_permissions: 'only')
+ expect(member(0)).to include(user.name)
+ expect(member(1)).to include(user_with_2fa.name)
+ expect(members_list.size).to eq(2)
+ expect(page).to have_css('[data-qa-selector="filter-members-with-inherited-permissions"] a.is-active', text: 'Show only inherited members')
+ end
+
+ def visit_members_list(group, options = {})
visit group_group_members_path(group.to_param, options)
end
@@ -46,11 +75,7 @@ describe 'Groups > Members > Filter members' do
page.all('ul.content-list > li')
end
- def first_member
- members_list.first.text
- end
-
- def second_member
- members_list.last.text
+ def member(number)
+ members_list[number].text
end
end
diff --git a/spec/features/instance_statistics/conversational_development_index_spec.rb b/spec/features/instance_statistics/dev_ops_score_spec.rb
index 713cd944f8c..453b5582f48 100644
--- a/spec/features/instance_statistics/conversational_development_index_spec.rb
+++ b/spec/features/instance_statistics/dev_ops_score_spec.rb
@@ -2,19 +2,19 @@
require 'spec_helper'
-describe 'Conversational Development Index' do
+describe 'DevOps Score' do
before do
sign_in(create(:admin))
end
it 'has dismissable intro callout', :js do
- visit instance_statistics_conversational_development_index_index_path
+ visit instance_statistics_dev_ops_score_index_path
- expect(page).to have_content 'Introducing Your Conversational Development Index'
+ expect(page).to have_content 'Introducing Your DevOps Score'
find('.js-close-callout').click
- expect(page).not_to have_content 'Introducing Your Conversational Development Index'
+ expect(page).not_to have_content 'Introducing Your DevOps Score'
end
context 'when usage ping is disabled' do
@@ -23,15 +23,15 @@ describe 'Conversational Development Index' do
end
it 'shows empty state' do
- visit instance_statistics_conversational_development_index_index_path
+ visit instance_statistics_dev_ops_score_index_path
expect(page).to have_content('Usage ping is not enabled')
end
it 'hides the intro callout' do
- visit instance_statistics_conversational_development_index_index_path
+ visit instance_statistics_dev_ops_score_index_path
- expect(page).not_to have_content 'Introducing Your Conversational Development Index'
+ expect(page).not_to have_content 'Introducing Your DevOps Score'
end
end
@@ -39,7 +39,7 @@ describe 'Conversational Development Index' do
it 'shows empty state' do
stub_application_setting(usage_ping_enabled: true)
- visit instance_statistics_conversational_development_index_index_path
+ visit instance_statistics_dev_ops_score_index_path
expect(page).to have_content('Data is still calculating')
end
@@ -48,9 +48,9 @@ describe 'Conversational Development Index' do
context 'when there is data to display' do
it 'shows numbers for each metric' do
stub_application_setting(usage_ping_enabled: true)
- create(:conversational_development_index_metric)
+ create(:dev_ops_score_metric)
- visit instance_statistics_conversational_development_index_index_path
+ visit instance_statistics_dev_ops_score_index_path
expect(page).to have_content(
'Issues created per active user 1.2 You 9.3 Lead 13.3%'
diff --git a/spec/features/issues/move_spec.rb b/spec/features/issues/move_spec.rb
index 1122504248f..7126707affd 100644
--- a/spec/features/issues/move_spec.rb
+++ b/spec/features/issues/move_spec.rb
@@ -70,6 +70,7 @@ describe 'issue move to another project' do
context 'user does not have permission to move the issue to a project', :js do
let!(:private_project) { create(:project, :private) }
let(:another_project) { create(:project) }
+
before do
another_project.add_guest(user)
end
diff --git a/spec/features/issues/user_creates_confidential_merge_request_spec.rb b/spec/features/issues/user_creates_confidential_merge_request_spec.rb
index 838c0a6349c..84f358061e6 100644
--- a/spec/features/issues/user_creates_confidential_merge_request_spec.rb
+++ b/spec/features/issues/user_creates_confidential_merge_request_spec.rb
@@ -29,7 +29,7 @@ describe 'User creates confidential merge request on issue page', :js do
click_button 'Create confidential merge request'
page.within '.create-confidential-merge-request-dropdown-menu' do
- expect(page).to have_content('No forks available to you')
+ expect(page).to have_content('No forks are available to you')
end
end
end
diff --git a/spec/features/issues/user_views_issues_spec.rb b/spec/features/issues/user_views_issues_spec.rb
index b986991f38f..8f174472f49 100644
--- a/spec/features/issues/user_views_issues_spec.rb
+++ b/spec/features/issues/user_views_issues_spec.rb
@@ -6,6 +6,7 @@ describe "User views issues" do
let!(:closed_issue) { create(:closed_issue, project: project) }
let!(:open_issue1) { create(:issue, project: project) }
let!(:open_issue2) { create(:issue, project: project) }
+
set(:user) { create(:user) }
shared_examples "opens issue from list" do
diff --git a/spec/features/merge_request/user_expands_diff_spec.rb b/spec/features/merge_request/user_expands_diff_spec.rb
index ba7abd3af2c..9b040271468 100644
--- a/spec/features/merge_request/user_expands_diff_spec.rb
+++ b/spec/features/merge_request/user_expands_diff_spec.rb
@@ -8,6 +8,7 @@ describe 'User expands diff', :js do
before do
stub_feature_flags(single_mr_diff_view: false)
+ stub_feature_flags(diffs_batch_load: false)
allow(Gitlab::Git::Diff).to receive(:size_limit).and_return(100.kilobytes)
allow(Gitlab::Git::Diff).to receive(:collapse_limit).and_return(10.kilobytes)
@@ -20,7 +21,7 @@ describe 'User expands diff', :js do
it_behaves_like 'rendering a single diff version'
it 'allows user to expand diff' do
- page.within find('[id="2f6fcd96b88b36ce98c38da085c795a27d92a3dd"]') do
+ page.within find('[id="6eb14e00385d2fb284765eb1cd8d420d33d63fc9"]') do
click_link 'Click to expand it.'
wait_for_requests
diff --git a/spec/features/merge_request/user_posts_notes_spec.rb b/spec/features/merge_request/user_posts_notes_spec.rb
index 733d79127f7..c0655581b18 100644
--- a/spec/features/merge_request/user_posts_notes_spec.rb
+++ b/spec/features/merge_request/user_posts_notes_spec.rb
@@ -95,6 +95,24 @@ describe 'Merge request > User posts notes', :js do
end
end
+ describe 'reply on a deleted conversation' do
+ before do
+ visit project_merge_request_path(project, merge_request)
+ end
+
+ it 'shows an error message' do
+ find('.js-reply-button').click
+ note.delete
+
+ page.within('.discussion-reply-holder') do
+ fill_in 'note[note]', with: 'A reply'
+ click_button 'Comment'
+ wait_for_requests
+ expect(page).to have_content('Your comment could not be submitted because discussion to reply to cannot be found')
+ end
+ end
+ end
+
describe 'when previewing a note' do
it 'shows the toolbar buttons when editing a note' do
page.within('.js-main-target-form') do
diff --git a/spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb b/spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb
index 7cb46d90092..9cbea8a8466 100644
--- a/spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb
+++ b/spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb
@@ -21,6 +21,7 @@ describe 'Merge request > User resolves diff notes and threads', :js do
before do
stub_feature_flags(single_mr_diff_view: false)
+ stub_feature_flags(diffs_batch_load: false)
end
it_behaves_like 'rendering a single diff version'
diff --git a/spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb b/spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb
index e882b401122..70afe056c64 100644
--- a/spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb
+++ b/spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb
@@ -22,6 +22,7 @@ describe 'Merge request > User sees avatars on diff notes', :js do
before do
stub_feature_flags(single_mr_diff_view: false)
+ stub_feature_flags(diffs_batch_load: false)
project.add_maintainer(user)
sign_in user
diff --git a/spec/features/merge_request/user_sees_deleted_target_branch_spec.rb b/spec/features/merge_request/user_sees_deleted_target_branch_spec.rb
index 224261dec00..9ef6847f7f5 100644
--- a/spec/features/merge_request/user_sees_deleted_target_branch_spec.rb
+++ b/spec/features/merge_request/user_sees_deleted_target_branch_spec.rb
@@ -9,7 +9,7 @@ describe 'Merge request > User sees deleted target branch', :js do
before do
project.add_maintainer(user)
- DeleteBranchService.new(project, user).execute('feature')
+ ::Branches::DeleteService.new(project, user).execute('feature')
sign_in(user)
visit project_merge_request_path(project, merge_request)
end
diff --git a/spec/features/merge_request/user_sees_deployment_widget_spec.rb b/spec/features/merge_request/user_sees_deployment_widget_spec.rb
index cdffd2ae2f6..3743ef0f25d 100644
--- a/spec/features/merge_request/user_sees_deployment_widget_spec.rb
+++ b/spec/features/merge_request/user_sees_deployment_widget_spec.rb
@@ -96,7 +96,7 @@ describe 'Merge request > User sees deployment widget', :js do
visit project_merge_request_path(project, merge_request)
wait_for_requests
- expect(page).to have_content("Failed to deploy to #{environment.name}")
+ expect(page).to have_content("Canceled deploy to #{environment.name}")
expect(page).not_to have_css('.js-deploy-time')
end
end
diff --git a/spec/features/merge_request/user_sees_diff_spec.rb b/spec/features/merge_request/user_sees_diff_spec.rb
index 82dd779577c..de142344c26 100644
--- a/spec/features/merge_request/user_sees_diff_spec.rb
+++ b/spec/features/merge_request/user_sees_diff_spec.rb
@@ -11,6 +11,7 @@ describe 'Merge request > User sees diff', :js do
before do
stub_feature_flags(single_mr_diff_view: false)
+ stub_feature_flags(diffs_batch_load: false)
end
it_behaves_like 'rendering a single diff version'
diff --git a/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb b/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb
index abf159949db..5b14450a289 100644
--- a/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb
+++ b/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb
@@ -8,6 +8,7 @@ describe 'Merge request > User sees pipelines triggered by merge request', :js d
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
+ let(:enable_mr_tabs_position_flag) { true }
let(:config) do
{
@@ -26,6 +27,7 @@ describe 'Merge request > User sees pipelines triggered by merge request', :js d
end
before do
+ stub_feature_flags(mr_tabs_position: enable_mr_tabs_position_flag)
stub_application_setting(auto_devops_enabled: false)
stub_feature_flags(ci_merge_request_pipeline: true)
stub_ci_pipeline_yaml_file(YAML.dump(config))
@@ -51,6 +53,7 @@ describe 'Merge request > User sees pipelines triggered by merge request', :js d
Ci::CreatePipelineService.new(project, user, ref: 'feature')
.execute(:merge_request_event, merge_request: merge_request)
end
+ let(:enable_mr_tabs_position_flag) { false }
before do
visit project_merge_request_path(project, merge_request)
@@ -67,9 +70,23 @@ describe 'Merge request > User sees pipelines triggered by merge request', :js d
end
end
- it 'sees the latest detached merge request pipeline as the head pipeline', :sidekiq_might_not_need_inline do
- page.within('.ci-widget-content') do
- expect(page).to have_content("##{detached_merge_request_pipeline.id}")
+ context 'when merge request tabs feature flag is disabled' do
+ it 'sees the latest detached merge request pipeline as the head pipeline', :sidekiq_might_not_need_inline do
+ page.within('.ci-widget-content') do
+ expect(page).to have_content("##{detached_merge_request_pipeline.id}")
+ end
+ end
+ end
+
+ context 'when merge request tabs feature flag is enabled' do
+ let(:enable_mr_tabs_position_flag) { true }
+
+ it 'sees the latest detached merge request pipeline as the head pipeline', :sidekiq_might_not_need_inline do
+ click_link "Overview"
+
+ page.within('.ci-widget-content') do
+ expect(page).to have_content("##{detached_merge_request_pipeline.id}")
+ end
end
end
@@ -243,9 +260,23 @@ describe 'Merge request > User sees pipelines triggered by merge request', :js d
end
end
- it 'sees the latest detached merge request pipeline as the head pipeline' do
- page.within('.ci-widget-content') do
- expect(page).to have_content("##{detached_merge_request_pipeline.id}")
+ context 'when merge request tabs feature flag is enabled' do
+ it 'sees the latest detached merge request pipeline as the head pipeline' do
+ click_link "Overview"
+
+ page.within('.ci-widget-content') do
+ expect(page).to have_content("##{detached_merge_request_pipeline.id}")
+ end
+ end
+ end
+
+ context 'when merge request tabs feature flag is disabled' do
+ let(:enable_mr_tabs_position_flag) { false }
+
+ it 'sees the latest detached merge request pipeline as the head pipeline' do
+ page.within('.ci-widget-content') do
+ expect(page).to have_content("##{detached_merge_request_pipeline.id}")
+ end
end
end
@@ -309,6 +340,8 @@ describe 'Merge request > User sees pipelines triggered by merge request', :js d
end
it 'sees the latest detached merge request pipeline as the head pipeline' do
+ click_link "Overview"
+
page.within('.ci-widget-content') do
expect(page).to have_content("##{detached_merge_request_pipeline_2.id}")
end
@@ -323,6 +356,8 @@ describe 'Merge request > User sees pipelines triggered by merge request', :js d
context 'when a user merges a merge request from a forked project to the parent project' do
before do
+ click_link("Overview")
+
click_button 'Merge when pipeline succeeds'
wait_for_requests
diff --git a/spec/features/merge_request/user_sees_mr_with_deleted_source_branch_spec.rb b/spec/features/merge_request/user_sees_mr_with_deleted_source_branch_spec.rb
index 3d25611e1ea..e28d2ca5536 100644
--- a/spec/features/merge_request/user_sees_mr_with_deleted_source_branch_spec.rb
+++ b/spec/features/merge_request/user_sees_mr_with_deleted_source_branch_spec.rb
@@ -25,15 +25,16 @@ describe 'Merge request > User sees MR with deleted source branch', :js do
it 'still contains Discussion, Commits and Changes tabs' do
within '.merge-request-details' do
- expect(page).to have_content('Discussion')
+ expect(page).to have_content('Overview')
expect(page).to have_content('Commits')
expect(page).to have_content('Changes')
end
+ expect(page).to have_content('Source branch does not exist.')
+
click_on 'Changes'
wait_for_requests
expect(page).to have_selector('.diffs.tab-pane .file-holder')
- expect(page).to have_content('Source branch does not exist.')
end
end
diff --git a/spec/features/merge_request/user_sees_versions_spec.rb b/spec/features/merge_request/user_sees_versions_spec.rb
index c3fce9761df..b3aef601c7b 100644
--- a/spec/features/merge_request/user_sees_versions_spec.rb
+++ b/spec/features/merge_request/user_sees_versions_spec.rb
@@ -17,6 +17,7 @@ describe 'Merge request > User sees versions', :js do
before do
stub_feature_flags(single_mr_diff_view: false)
+ stub_feature_flags(diffs_batch_load: false)
project.add_maintainer(user)
sign_in(user)
diff --git a/spec/features/merge_request/user_selects_branches_for_new_mr_spec.rb b/spec/features/merge_request/user_selects_branches_for_new_mr_spec.rb
index c42eb8560a4..22b2ea81b32 100644
--- a/spec/features/merge_request/user_selects_branches_for_new_mr_spec.rb
+++ b/spec/features/merge_request/user_selects_branches_for_new_mr_spec.rb
@@ -178,10 +178,11 @@ describe 'Merge request > User selects branches for new MR', :js do
end
context 'with special characters in branch names' do
+ let(:create_branch_service) { ::Branches::CreateService.new(project, user) }
+
it 'escapes quotes in branch names' do
special_branch_name = '"with-quotes"'
- CreateBranchService.new(project, user)
- .execute(special_branch_name, 'add-pdf-file')
+ create_branch_service.execute(special_branch_name, 'add-pdf-file')
visit project_new_merge_request_path(project)
select_source_branch(special_branch_name)
@@ -192,8 +193,7 @@ describe 'Merge request > User selects branches for new MR', :js do
it 'does not escape unicode in branch names' do
special_branch_name = 'ʕ•ᴥ•ʔ'
- CreateBranchService.new(project, user)
- .execute(special_branch_name, 'add-pdf-file')
+ create_branch_service.execute(special_branch_name, 'add-pdf-file')
visit project_new_merge_request_path(project)
select_source_branch(special_branch_name)
diff --git a/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb b/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb
index 859638f1a52..7fe72e1bc8a 100644
--- a/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb
+++ b/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb
@@ -97,7 +97,9 @@ describe 'User comments on a diff', :js do
end
context 'multiple suggestions in expanded lines' do
- it 'suggestions are appliable' do
+ # Report issue: https://gitlab.com/gitlab-org/gitlab/issues/38277
+ # Fix issue: https://gitlab.com/gitlab-org/gitlab/issues/39095
+ it 'suggestions are appliable', :quarantine do
diff_file = merge_request.diffs(paths: ['files/ruby/popen.rb']).diff_files.first
hash = Digest::SHA1.hexdigest(diff_file.file_path)
diff --git a/spec/features/merge_request/user_views_diffs_spec.rb b/spec/features/merge_request/user_views_diffs_spec.rb
index 5a29477e597..313f438e23b 100644
--- a/spec/features/merge_request/user_views_diffs_spec.rb
+++ b/spec/features/merge_request/user_views_diffs_spec.rb
@@ -10,6 +10,7 @@ describe 'User views diffs', :js do
before do
stub_feature_flags(single_mr_diff_view: false)
+ stub_feature_flags(diffs_batch_load: false)
visit(diffs_project_merge_request_path(project, merge_request))
wait_for_requests
diff --git a/spec/features/merge_requests/user_sorts_merge_requests_spec.rb b/spec/features/merge_requests/user_sorts_merge_requests_spec.rb
index ca3e24d7036..3c217786d43 100644
--- a/spec/features/merge_requests/user_sorts_merge_requests_spec.rb
+++ b/spec/features/merge_requests/user_sorts_merge_requests_spec.rb
@@ -9,6 +9,7 @@ describe 'User sorts merge requests' do
let!(:merge_request2) do
create(:merge_request_with_diffs, source_project: project, target_project: project, source_branch: 'merge-test')
end
+
set(:user) { create(:user) }
set(:group) { create(:group) }
set(:group_member) { create(:group_member, :maintainer, user: user, group: group) }
diff --git a/spec/features/merge_requests/user_views_open_merge_requests_spec.rb b/spec/features/merge_requests/user_views_open_merge_requests_spec.rb
index cefac9690ce..932090bdbce 100644
--- a/spec/features/merge_requests/user_views_open_merge_requests_spec.rb
+++ b/spec/features/merge_requests/user_views_open_merge_requests_spec.rb
@@ -113,6 +113,7 @@ describe 'User views open merge requests' do
context 'when project is internal' do
let!(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
+
set(:project) { create(:project, :internal, :repository) }
context 'when signed in' do
diff --git a/spec/features/milestones/user_views_milestones_spec.rb b/spec/features/milestones/user_views_milestones_spec.rb
index 09378cab5e3..c91fe95aa77 100644
--- a/spec/features/milestones/user_views_milestones_spec.rb
+++ b/spec/features/milestones/user_views_milestones_spec.rb
@@ -18,6 +18,7 @@ describe "User views milestones" do
expect(page).to have_content(milestone.title)
.and have_content(milestone.expires_at)
.and have_content("Issues")
+ .and have_content("Merge Requests")
end
context "with issues" do
@@ -32,6 +33,7 @@ describe "User views milestones" do
.and have_selector("#tab-issues li.issuable-row", count: 2)
.and have_content(issue.title)
.and have_content(closed_issue.title)
+ .and have_selector("#tab-merge-requests")
end
end
@@ -62,3 +64,32 @@ describe "User views milestones" do
end
end
end
+
+describe "User views milestones with no MR" do
+ set(:user) { create(:user) }
+ set(:project) { create(:project, :merge_requests_disabled) }
+ set(:milestone) { create(:milestone, project: project) }
+
+ before do
+ project.add_developer(user)
+ sign_in(user)
+
+ visit(project_milestones_path(project))
+ end
+
+ it "shows milestone" do
+ expect(page).to have_content(milestone.title)
+ .and have_content(milestone.expires_at)
+ .and have_content("Issues")
+ .and have_no_content("Merge Requests")
+ end
+
+ it "opens milestone" do
+ click_link(milestone.title)
+
+ expect(current_path).to eq(project_milestone_path(project, milestone))
+ expect(page).to have_content(milestone.title)
+ .and have_selector("#tab-issues")
+ .and have_no_selector("#tab-merge-requests")
+ end
+end
diff --git a/spec/features/oauth_login_spec.rb b/spec/features/oauth_login_spec.rb
index 4a1e8598131..29e9b0c313a 100644
--- a/spec/features/oauth_login_spec.rb
+++ b/spec/features/oauth_login_spec.rb
@@ -33,6 +33,7 @@ describe 'OAuth Login', :js, :allow_forgery_protection do
let(:remember_me) { false }
let(:user) { create(:omniauth_user, extern_uid: uid, provider: provider.to_s) }
let(:two_factor_user) { create(:omniauth_user, :two_factor, extern_uid: uid, provider: provider.to_s) }
+
provider == :salesforce ? let(:additional_info) { { extra: { email_verified: true } } } : let(:additional_info) { {} }
before do
diff --git a/spec/features/participants_autocomplete_spec.rb b/spec/features/participants_autocomplete_spec.rb
index 312285ca2cb..fdedd319116 100644
--- a/spec/features/participants_autocomplete_spec.rb
+++ b/spec/features/participants_autocomplete_spec.rb
@@ -34,6 +34,7 @@ describe 'Member autocomplete', :js do
context 'adding a new note on a Issue' do
let(:noteable) { create(:issue, author: author, project: project) }
+
before do
visit project_issue_path(project, noteable)
end
@@ -47,6 +48,7 @@ describe 'Member autocomplete', :js do
create(:merge_request, source_project: project,
target_project: project, author: author)
end
+
before do
visit project_merge_request_path(project, noteable)
end
@@ -61,7 +63,7 @@ describe 'Member autocomplete', :js do
before do
allow(User).to receive(:find_by_any_email)
- .with(noteable.author_email.downcase).and_return(author)
+ .with(noteable.author_email.downcase, confirmed: true).and_return(author)
visit project_commit_path(project, noteable)
end
diff --git a/spec/features/projects/badges/pipeline_badge_spec.rb b/spec/features/projects/badges/pipeline_badge_spec.rb
index af936c80886..5ddaf1e1591 100644
--- a/spec/features/projects/badges/pipeline_badge_spec.rb
+++ b/spec/features/projects/badges/pipeline_badge_spec.rb
@@ -6,17 +6,6 @@ describe 'Pipeline Badge' do
set(:project) { create(:project, :repository, :public) }
let(:ref) { project.default_branch }
- # this can't be tested in the controller, as it bypasses the rails router
- # and constructs a route based on the controller being tested
- # Keep around until 10.0, see gitlab-org/gitlab-ce#35307
- context 'when the deprecated badge is requested' do
- it 'displays the badge' do
- visit build_project_badges_path(project, ref: ref, format: :svg)
-
- expect(page.status_code).to eq(200)
- end
- end
-
context 'when the project has a pipeline' do
let!(:pipeline) { create(:ci_empty_pipeline, project: project, ref: ref, sha: project.commit(ref).sha) }
let!(:job) { create(:ci_build, pipeline: pipeline) }
diff --git a/spec/features/projects/blobs/blob_show_spec.rb b/spec/features/projects/blobs/blob_show_spec.rb
index af6bb8c271f..5d86e4125df 100644
--- a/spec/features/projects/blobs/blob_show_spec.rb
+++ b/spec/features/projects/blobs/blob_show_spec.rb
@@ -611,4 +611,50 @@ describe 'File blob', :js do
expect(page).to have_selector '.gpg-status-box.invalid'
end
end
+
+ context 'when static objects external storage is enabled' do
+ before do
+ stub_application_setting(static_objects_external_storage_url: 'https://cdn.gitlab.com')
+ end
+
+ context 'private project' do
+ let_it_be(:project) { create(:project, :repository, :private) }
+ let_it_be(:user) { create(:user) }
+
+ before do
+ project.add_developer(user)
+
+ sign_in(user)
+ visit_blob('README.md')
+ end
+
+ it 'shows open raw and download buttons with external storage URL prepended and user token appended to their href' do
+ path = project_raw_path(project, 'master/README.md')
+ raw_uri = "https://cdn.gitlab.com#{path}?token=#{user.static_object_token}"
+ download_uri = "https://cdn.gitlab.com#{path}?inline=false&token=#{user.static_object_token}"
+
+ aggregate_failures do
+ expect(page).to have_link 'Open raw', href: raw_uri
+ expect(page).to have_link 'Download', href: download_uri
+ end
+ end
+ end
+
+ context 'public project' do
+ before do
+ visit_blob('README.md')
+ end
+
+ it 'shows open raw and download buttons with external storage URL prepended to their href' do
+ path = project_raw_path(project, 'master/README.md')
+ raw_uri = "https://cdn.gitlab.com#{path}"
+ download_uri = "https://cdn.gitlab.com#{path}?inline=false"
+
+ aggregate_failures do
+ expect(page).to have_link 'Open raw', href: raw_uri
+ expect(page).to have_link 'Download', href: download_uri
+ end
+ end
+ end
+ end
end
diff --git a/spec/features/projects/clusters/eks_spec.rb b/spec/features/projects/clusters/eks_spec.rb
index e0ebccd85ac..bb0072fc8dd 100644
--- a/spec/features/projects/clusters/eks_spec.rb
+++ b/spec/features/projects/clusters/eks_spec.rb
@@ -28,7 +28,7 @@ describe 'AWS EKS Cluster', :js do
end
it 'user sees a form to create an EKS cluster' do
- expect(page).to have_content('Create new Cluster on EKS')
+ expect(page).to have_content('Create new cluster on EKS')
end
end
end
diff --git a/spec/features/projects/clusters/gcp_spec.rb b/spec/features/projects/clusters/gcp_spec.rb
index bdc946a9c98..4bc0aef0cd4 100644
--- a/spec/features/projects/clusters/gcp_spec.rb
+++ b/spec/features/projects/clusters/gcp_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-describe 'Gcp Cluster', :js do
+describe 'Gcp Cluster', :js, :do_not_mock_admin_mode do
include GoogleApi::CloudPlatformHelpers
let(:project) { create(:project) }
@@ -18,8 +18,6 @@ describe 'Gcp Cluster', :js do
let(:project_id) { 'test-project-1234' }
before do
- stub_feature_flags(create_eks_clusters: false)
-
allow_any_instance_of(Projects::ClustersController)
.to receive(:token_in_session).and_return('token')
allow_any_instance_of(Projects::ClustersController)
@@ -31,7 +29,8 @@ describe 'Gcp Cluster', :js do
visit project_clusters_path(project)
click_link 'Add Kubernetes cluster'
- click_link 'Create new Cluster on GKE'
+ click_link 'Create new cluster'
+ click_link 'Google GKE'
end
context 'when user filled form with valid parameters' do
@@ -132,11 +131,11 @@ describe 'Gcp Cluster', :js do
end
end
- context 'when user destroy the cluster' do
+ context 'when user destroys the cluster' do
before do
- page.accept_confirm do
- click_link 'Remove integration'
- end
+ click_button 'Remove integration and resources'
+ fill_in 'confirm_cluster_name_input', with: cluster.name
+ click_button 'Remove integration'
end
it 'user sees creation form with the successful message' do
@@ -147,21 +146,6 @@ describe 'Gcp Cluster', :js do
end
end
- context 'when user has not signed with Google' do
- before do
- stub_feature_flags(create_eks_clusters: false)
- visit project_clusters_path(project)
-
- click_link 'Add Kubernetes cluster'
- click_link 'Create new Cluster on GKE'
- end
-
- it 'user sees a login page' do
- expect(page).to have_css('.signin-with-google')
- expect(page).to have_link('Google account')
- end
- end
-
context 'when a user cannot edit the environment scope' do
before do
visit project_clusters_path(project)
@@ -177,7 +161,6 @@ describe 'Gcp Cluster', :js do
context 'when user has not dismissed GCP signup offer' do
before do
- stub_feature_flags(create_eks_clusters: false)
visit project_clusters_path(project)
end
@@ -190,18 +173,10 @@ describe 'Gcp Cluster', :js do
expect(page).to have_css('.gcp-signup-offer')
end
-
- it 'user sees offer on cluster GCP login page' do
- click_link 'Add Kubernetes cluster'
- click_link 'Create new Cluster on GKE'
-
- expect(page).to have_css('.gcp-signup-offer')
- end
end
context 'when user has dismissed GCP signup offer' do
before do
- stub_feature_flags(create_eks_clusters: false)
visit project_clusters_path(project)
end
@@ -216,4 +191,29 @@ describe 'Gcp Cluster', :js do
expect(page).not_to have_css('.gcp-signup-offer')
end
end
+
+ context 'when third party offers are disabled' do
+ let(:admin) { create(:admin) }
+
+ before do
+ stub_env('IN_MEMORY_APPLICATION_SETTINGS', 'false')
+ sign_in(admin)
+ gitlab_enable_admin_mode_sign_in(admin)
+ visit integrations_admin_application_settings_path
+ end
+
+ it 'user does not see the offer' do
+ page.within('.as-third-party-offers') do
+ click_button 'Expand'
+ check 'Do not display offers from third parties within GitLab'
+ click_button 'Save changes'
+ end
+
+ expect(page).to have_content "Application settings saved successfully"
+
+ visit project_clusters_path(project)
+
+ expect(page).not_to have_css('.gcp-signup-offer')
+ end
+ end
end
diff --git a/spec/features/projects/clusters/user_spec.rb b/spec/features/projects/clusters/user_spec.rb
index bdaeda83926..38efcf758e1 100644
--- a/spec/features/projects/clusters/user_spec.rb
+++ b/spec/features/projects/clusters/user_spec.rb
@@ -101,11 +101,11 @@ describe 'User Cluster', :js do
end
end
- context 'when user destroy the cluster' do
+ context 'when user destroys the cluster' do
before do
- page.accept_confirm do
- click_link 'Remove integration'
- end
+ click_button 'Remove integration and resources'
+ fill_in 'confirm_cluster_name_input', with: cluster.name
+ click_button 'Remove integration'
end
it 'user sees creation form with the successful message' do
diff --git a/spec/features/projects/clusters_spec.rb b/spec/features/projects/clusters_spec.rb
index 67d14d0a58a..ad51533c42c 100644
--- a/spec/features/projects/clusters_spec.rb
+++ b/spec/features/projects/clusters_spec.rb
@@ -49,41 +49,20 @@ describe 'Clusters', :js do
end
end
- context 'when user has not signed in Google' do
+ context 'user visits create cluster page' do
before do
- stub_feature_flags(create_eks_clusters: false)
visit project_clusters_path(project)
click_link 'Add Kubernetes cluster'
- click_link 'Create new Cluster on GKE'
+ click_link 'Create new cluster'
end
- it 'user sees a login page' do
- expect(page).to have_css('.signin-with-google')
- expect(page).to have_link('Google account')
+ it 'user sees a link to create a GKE cluster' do
+ expect(page).to have_link('Google GKE')
end
- end
-
- context 'when create_eks_clusters feature flag is enabled' do
- before do
- stub_feature_flags(create_eks_clusters: true)
- end
-
- context 'when user access create cluster page' do
- before do
- visit project_clusters_path(project)
- click_link 'Add Kubernetes cluster'
- click_link 'Create new Cluster'
- end
-
- it 'user sees a link to create a GKE cluster' do
- expect(page).to have_link('Google GKE')
- end
-
- it 'user sees a link to create an EKS cluster' do
- expect(page).to have_link('Amazon EKS')
- end
+ it 'user sees a link to create an EKS cluster' do
+ expect(page).to have_link('Amazon EKS')
end
end
end
diff --git a/spec/features/projects/commits/user_browses_commits_spec.rb b/spec/features/projects/commits/user_browses_commits_spec.rb
index b22715a44f0..7e59e36ccb7 100644
--- a/spec/features/projects/commits/user_browses_commits_spec.rb
+++ b/spec/features/projects/commits/user_browses_commits_spec.rb
@@ -76,16 +76,23 @@ describe 'User browses commits' do
end
context 'secondary email' do
+ let(:user) { create(:user) }
+
it 'finds a commit by a secondary email' do
- user =
- create(:user) do |user|
- create(:email, { user: user, email: 'dmitriy.zaporozhets@gmail.com' })
- end
+ create(:email, :confirmed, user: user, email: 'dmitriy.zaporozhets@gmail.com')
visit(project_commit_path(project, sample_commit.parent_id))
check_author_link(sample_commit.author_email, user)
end
+
+ it 'links to an unverified e-mail address instead of the user' do
+ create(:email, user: user, email: 'dmitriy.zaporozhets@gmail.com')
+
+ visit(project_commit_path(project, sample_commit.parent_id))
+
+ check_author_email(sample_commit.author_email)
+ end
end
context 'when the blob does not exist' do
@@ -263,3 +270,9 @@ def check_author_link(email, author)
expect(author_link['href']).to eq(user_path(author))
expect(find('.commit-author-name').text).to eq(author.name)
end
+
+def check_author_email(email)
+ author_link = find('.commit-author-link')
+
+ expect(author_link['href']).to eq("mailto:#{email}")
+end
diff --git a/spec/features/projects/environments/environments_spec.rb b/spec/features/projects/environments/environments_spec.rb
index 74c2758c30f..01687674309 100644
--- a/spec/features/projects/environments/environments_spec.rb
+++ b/spec/features/projects/environments/environments_spec.rb
@@ -49,11 +49,11 @@ describe 'Environments page', :js do
it 'renders second page of pipelines' do
visit_environments(project, scope: 'available')
- find('.js-next-button').click
+ find('.page-link.next-page-item').click
wait_for_requests
- expect(page).to have_selector('.gl-pagination .page', count: 2)
- expect(find('.gl-pagination .page-item.active .page-link').text).to eq("2")
+ expect(page).to have_selector('.gl-pagination .page-link', count: 4)
+ expect(find('.gl-pagination .page-link.active').text).to eq("2")
end
end
@@ -144,8 +144,8 @@ describe 'Environments page', :js do
expect(page).to have_content('No deployments yet')
end
- it 'does not show stip button when environment is not stoppable' do
- expect(page).not_to have_selector(stop_button_selector)
+ it 'shows stop button when environment is not stoppable' do
+ expect(page).to have_selector(stop_button_selector)
end
end
@@ -205,7 +205,7 @@ describe 'Environments page', :js do
end
it 'shows a stop button' do
- expect(page).not_to have_selector(stop_button_selector)
+ expect(page).to have_selector(stop_button_selector)
end
it 'does not show external link button' do
diff --git a/spec/features/projects/features_visibility_spec.rb b/spec/features/projects/features_visibility_spec.rb
index 5553e496e7a..a825911b01a 100644
--- a/spec/features/projects/features_visibility_spec.rb
+++ b/spec/features/projects/features_visibility_spec.rb
@@ -41,7 +41,7 @@ describe 'Edit Project Settings' do
end
context 'When external issue tracker is enabled and issues enabled on project settings' do
- it 'does not hide issues tab' do
+ it 'does not hide issues tab and hides labels tab' do
allow_next_instance_of(Project) do |instance|
allow(instance).to receive(:external_issue_tracker).and_return(JiraService.new)
end
@@ -49,11 +49,12 @@ describe 'Edit Project Settings' do
visit project_path(project)
expect(page).to have_selector('.shortcuts-issues')
+ expect(page).not_to have_selector('.shortcuts-labels')
end
end
context 'When external issue tracker is enabled and issues disabled on project settings' do
- it 'hides issues tab' do
+ it 'hides issues tab and show labels tab' do
project.issues_enabled = false
project.save!
allow_next_instance_of(Project) do |instance|
@@ -63,6 +64,7 @@ describe 'Edit Project Settings' do
visit project_path(project)
expect(page).not_to have_selector('.shortcuts-issues')
+ expect(page).to have_selector('.shortcuts-labels')
end
end
diff --git a/spec/features/projects/files/user_edits_files_spec.rb b/spec/features/projects/files/user_edits_files_spec.rb
index 374a7fb7936..cc428dce2a8 100644
--- a/spec/features/projects/files/user_edits_files_spec.rb
+++ b/spec/features/projects/files/user_edits_files_spec.rb
@@ -193,6 +193,7 @@ describe 'Projects > Files > User edits files', :js do
context 'when the user already had a fork of the project', :js do
let!(:forked_project) { fork_project(project2, user, namespace: user.namespace, repository: true) }
+
before do
visit(project2_tree_path_root_ref)
wait_for_requests
diff --git a/spec/features/projects/import_export/export_file_spec.rb b/spec/features/projects/import_export/export_file_spec.rb
index c15a3250221..54a6ac1551b 100644
--- a/spec/features/projects/import_export/export_file_spec.rb
+++ b/spec/features/projects/import_export/export_file_spec.rb
@@ -12,8 +12,6 @@ describe 'Import/Export - project export integration test', :js do
let(:user) { create(:admin) }
let(:export_path) { "#{Dir.tmpdir}/import_file_spec" }
- let(:config_hash) { Gitlab::ImportExport::Config.new.to_h.deep_stringify_keys }
-
let(:sensitive_words) { %w[pass secret token key encrypted html] }
let(:safe_list) do
{
diff --git a/spec/features/projects/jobs/permissions_spec.rb b/spec/features/projects/jobs/permissions_spec.rb
index ae506b66a86..d78cf674dc6 100644
--- a/spec/features/projects/jobs/permissions_spec.rb
+++ b/spec/features/projects/jobs/permissions_spec.rb
@@ -10,7 +10,6 @@ describe 'Project Jobs Permissions' do
let!(:job) { create(:ci_build, :running, :coverage, :trace_artifact, pipeline: pipeline) }
before do
- stub_feature_flags(job_log_json: true)
sign_in(user)
project.enable_ci
diff --git a/spec/features/projects/jobs/user_browses_job_spec.rb b/spec/features/projects/jobs/user_browses_job_spec.rb
index 856c39df8b3..16ba1c1b73d 100644
--- a/spec/features/projects/jobs/user_browses_job_spec.rb
+++ b/spec/features/projects/jobs/user_browses_job_spec.rb
@@ -10,8 +10,6 @@ describe 'User browses a job', :js do
let!(:build) { create(:ci_build, :success, :trace_artifact, :coverage, pipeline: pipeline) }
before do
- stub_feature_flags(job_log_json: false)
-
project.add_maintainer(user)
project.enable_ci
@@ -24,7 +22,7 @@ describe 'User browses a job', :js do
wait_for_requests
expect(page).to have_content("Job ##{build.id}")
- expect(page).to have_css('.js-build-trace')
+ expect(page).to have_css('.job-log')
# scroll to the top of the page first
execute_script "window.scrollTo(0,0)"
diff --git a/spec/features/projects/jobs_spec.rb b/spec/features/projects/jobs_spec.rb
index c9568dbb7ce..26ba7ae7a29 100644
--- a/spec/features/projects/jobs_spec.rb
+++ b/spec/features/projects/jobs_spec.rb
@@ -22,7 +22,6 @@ describe 'Jobs', :clean_gitlab_redis_shared_state do
before do
project.add_role(user, user_access_level)
sign_in(user)
- stub_feature_flags(job_log_json: false)
end
describe "GET /:project/jobs" do
@@ -810,7 +809,7 @@ describe 'Jobs', :clean_gitlab_redis_shared_state do
it 'renders job log' do
wait_for_all_requests
- expect(page).to have_selector('.js-build-trace')
+ expect(page).to have_selector('.job-log')
end
end
diff --git a/spec/features/projects/members/group_members_spec.rb b/spec/features/projects/members/group_members_spec.rb
index 4ecc3db78b3..d37f912a2bc 100644
--- a/spec/features/projects/members/group_members_spec.rb
+++ b/spec/features/projects/members/group_members_spec.rb
@@ -31,6 +31,41 @@ describe 'Projects members' do
end
end
+ context 'with a group' do
+ it 'shows group and project members by default' do
+ visit project_project_members_path(project)
+
+ page.within first('.content-list') do
+ expect(page).to have_content(developer.name)
+
+ expect(page).to have_content(user.name)
+ expect(page).to have_content(group.name)
+ end
+ end
+
+ it 'shows project members only if requested' do
+ visit project_project_members_path(project, with_inherited_permissions: 'exclude')
+
+ page.within first('.content-list') do
+ expect(page).to have_content(developer.name)
+
+ expect(page).not_to have_content(user.name)
+ expect(page).not_to have_content(group.name)
+ end
+ end
+
+ it 'shows group members only if requested' do
+ visit project_project_members_path(project, with_inherited_permissions: 'only')
+
+ page.within first('.content-list') do
+ expect(page).not_to have_content(developer.name)
+
+ expect(page).to have_content(user.name)
+ expect(page).to have_content(group.name)
+ end
+ end
+ end
+
context 'with a group and a project invitee' do
before do
group_invitee
diff --git a/spec/features/projects/pages_lets_encrypt_spec.rb b/spec/features/projects/pages_lets_encrypt_spec.rb
index d09014e915d..4f9c1903344 100644
--- a/spec/features/projects/pages_lets_encrypt_spec.rb
+++ b/spec/features/projects/pages_lets_encrypt_spec.rb
@@ -41,7 +41,7 @@ describe "Pages with Let's Encrypt", :https_pages_enabled do
end
it 'enables auto SSL and dynamically updates the form accordingly', :js do
- visit edit_project_pages_domain_path(project, domain)
+ visit project_pages_domain_path(project, domain)
expect(domain.auto_ssl_enabled).to eq false
@@ -67,7 +67,7 @@ describe "Pages with Let's Encrypt", :https_pages_enabled do
end
it 'disables auto SSL and dynamically updates the form accordingly', :js do
- visit edit_project_pages_domain_path(project, domain)
+ visit project_pages_domain_path(project, domain)
expect(find("#pages_domain_auto_ssl_enabled", visible: false).value).to eq 'true'
expect(page).not_to have_field 'Certificate (PEM)', type: 'textarea'
@@ -88,7 +88,7 @@ describe "Pages with Let's Encrypt", :https_pages_enabled do
shared_examples 'user sees private keys only for user provided certificate' do
shared_examples 'user do not see private key' do
it 'user do not see private key' do
- visit edit_project_pages_domain_path(project, domain)
+ visit project_pages_domain_path(project, domain)
expect(page).not_to have_selector '.card-header', text: 'Certificate'
expect(page).not_to have_text domain.subject
@@ -111,14 +111,14 @@ describe "Pages with Let's Encrypt", :https_pages_enabled do
let(:domain) { create(:pages_domain, project: project, auto_ssl_enabled: false) }
it 'user sees certificate subject' do
- visit edit_project_pages_domain_path(project, domain)
+ visit project_pages_domain_path(project, domain)
expect(page).to have_selector '.card-header', text: 'Certificate'
expect(page).to have_text domain.subject
end
it 'user can delete the certificate', :js do
- visit edit_project_pages_domain_path(project, domain)
+ visit project_pages_domain_path(project, domain)
expect(page).to have_selector '.card-header', text: 'Certificate'
expect(page).to have_text domain.subject
@@ -139,7 +139,7 @@ describe "Pages with Let's Encrypt", :https_pages_enabled do
before do
stub_application_setting(lets_encrypt_terms_of_service_accepted: false)
- visit edit_project_pages_domain_path(project, domain)
+ visit project_pages_domain_path(project, domain)
end
it "does not render the Let's Encrypt field", :js do
diff --git a/spec/features/projects/pipelines/pipelines_spec.rb b/spec/features/projects/pipelines/pipelines_spec.rb
index f6eeb8d7065..b4c9eb7ebec 100644
--- a/spec/features/projects/pipelines/pipelines_spec.rb
+++ b/spec/features/projects/pipelines/pipelines_spec.rb
@@ -592,15 +592,15 @@ describe 'Pipelines', :js do
visit project_pipelines_path(project, page: '2')
wait_for_requests
- expect(page).to have_selector('.gl-pagination .page', count: 2)
+ expect(page).to have_selector('.gl-pagination .page-link', count: 4)
end
it 'shows updated content' do
visit project_pipelines_path(project)
wait_for_requests
- page.find('.js-next-button .page-link').click
+ page.find('.page-link.next-page-item').click
- expect(page).to have_selector('.gl-pagination .page', count: 2)
+ expect(page).to have_selector('.gl-pagination .page-link', count: 4)
end
end
end
@@ -706,7 +706,7 @@ describe 'Pipelines', :js do
click_on 'Run Pipeline'
end
- it { expect(page).to have_content('Missing .gitlab-ci.yml file') }
+ it { expect(page).to have_content('Missing CI config file') }
it 'creates a pipeline after first request failed and a valid gitlab-ci.yml file is available when trying again' do
click_button project.default_branch
diff --git a/spec/features/projects/settings/integration_settings_spec.rb b/spec/features/projects/settings/integration_settings_spec.rb
index 26ea4ec5944..de987b879eb 100644
--- a/spec/features/projects/settings/integration_settings_spec.rb
+++ b/spec/features/projects/settings/integration_settings_spec.rb
@@ -89,12 +89,12 @@ describe 'Projects > Settings > Integration settings' do
expect(current_path).to eq(integrations_path)
end
- context 'remove existing webhook' do
+ context 'delete existing webhook' do
it 'from webhooks list page' do
hook
visit integrations_path
- expect { click_link 'Remove' }.to change(ProjectHook, :count).by(-1)
+ expect { click_link 'Delete' }.to change(ProjectHook, :count).by(-1)
end
it 'from webhook edit page' do
@@ -102,7 +102,7 @@ describe 'Projects > Settings > Integration settings' do
visit integrations_path
click_link 'Edit'
- expect { click_link 'Remove' }.to change(ProjectHook, :count).by(-1)
+ expect { click_link 'Delete' }.to change(ProjectHook, :count).by(-1)
end
end
end
diff --git a/spec/features/projects/settings/visibility_settings_spec.rb b/spec/features/projects/settings/visibility_settings_spec.rb
index 0e757e647a0..a2b36874aea 100644
--- a/spec/features/projects/settings/visibility_settings_spec.rb
+++ b/spec/features/projects/settings/visibility_settings_spec.rb
@@ -64,6 +64,12 @@ describe 'Projects > Settings > Visibility settings', :js do
it 'is visible' do
expect(page).to have_selector('.js-emails-disabled', visible: true)
end
+
+ it 'accepts the changed state' do
+ find('.js-emails-disabled input[type="checkbox"]').click
+
+ expect { save_permissions_group }.to change { updated_emails_disabled? }.to(true)
+ end
end
end
@@ -89,4 +95,16 @@ describe 'Projects > Settings > Visibility settings', :js do
end
end
end
+
+ def save_permissions_group
+ page.within('.sharing-permissions') do
+ click_button 'Save changes'
+ wait_for_requests
+ end
+ end
+
+ def updated_emails_disabled?
+ project.reload.clear_memoization(:emails_disabled)
+ project.emails_disabled?
+ end
end
diff --git a/spec/features/projects/snippets/create_snippet_spec.rb b/spec/features/projects/snippets/create_snippet_spec.rb
index 891b780a100..ad65e04473c 100644
--- a/spec/features/projects/snippets/create_snippet_spec.rb
+++ b/spec/features/projects/snippets/create_snippet_spec.rb
@@ -18,6 +18,7 @@ describe 'Projects > Snippets > Create Snippet', :js do
context 'when a user is authenticated' do
before do
+ stub_feature_flags(snippets_vue: false)
project.add_maintainer(user)
sign_in(user)
@@ -52,7 +53,7 @@ describe 'Projects > Snippets > Create Snippet', :js do
expect(link).to match(%r{/#{Regexp.escape(project.full_path) }/uploads/\h{32}/banana_sample\.gif\z})
end
- it 'creates a snippet when all reuiqred fields are filled in after validation failing' do
+ it 'creates a snippet when all required fields are filled in after validation failing' do
fill_in 'project_snippet_title', with: 'My Snippet Title'
click_button('Create snippet')
@@ -76,6 +77,10 @@ describe 'Projects > Snippets > Create Snippet', :js do
end
context 'when a user is not authenticated' do
+ before do
+ stub_feature_flags(snippets_vue: false)
+ end
+
it 'shows a public snippet on the index page but not the New snippet button' do
snippet = create(:project_snippet, :public, project: project)
diff --git a/spec/features/projects/snippets/show_spec.rb b/spec/features/projects/snippets/show_spec.rb
index e448309356d..9be226c017f 100644
--- a/spec/features/projects/snippets/show_spec.rb
+++ b/spec/features/projects/snippets/show_spec.rb
@@ -8,6 +8,7 @@ describe 'Projects > Snippets > Project snippet', :js do
let(:snippet) { create(:project_snippet, project: project, file_name: file_name, content: content) }
before do
+ stub_feature_flags(snippets_vue: false)
project.add_maintainer(user)
sign_in(user)
end
diff --git a/spec/features/projects/snippets/user_comments_on_snippet_spec.rb b/spec/features/projects/snippets/user_comments_on_snippet_spec.rb
index 239d19d35d1..11707378996 100644
--- a/spec/features/projects/snippets/user_comments_on_snippet_spec.rb
+++ b/spec/features/projects/snippets/user_comments_on_snippet_spec.rb
@@ -8,6 +8,7 @@ describe 'Projects > Snippets > User comments on a snippet', :js do
let(:user) { create(:user) }
before do
+ stub_feature_flags(snippets_vue: false)
project.add_maintainer(user)
sign_in(user)
diff --git a/spec/features/projects/snippets/user_deletes_snippet_spec.rb b/spec/features/projects/snippets/user_deletes_snippet_spec.rb
index 1b56d7bf26d..7e337710e19 100644
--- a/spec/features/projects/snippets/user_deletes_snippet_spec.rb
+++ b/spec/features/projects/snippets/user_deletes_snippet_spec.rb
@@ -8,6 +8,7 @@ describe 'Projects > Snippets > User deletes a snippet' do
let(:user) { create(:user) }
before do
+ stub_feature_flags(snippets_vue: false)
project.add_maintainer(user)
sign_in(user)
diff --git a/spec/features/projects/snippets/user_updates_snippet_spec.rb b/spec/features/projects/snippets/user_updates_snippet_spec.rb
index c7ff4f89fd6..93a5b4a7262 100644
--- a/spec/features/projects/snippets/user_updates_snippet_spec.rb
+++ b/spec/features/projects/snippets/user_updates_snippet_spec.rb
@@ -8,6 +8,7 @@ describe 'Projects > Snippets > User updates a snippet' do
let(:user) { create(:user) }
before do
+ stub_feature_flags(snippets_vue: false)
project.add_maintainer(user)
sign_in(user)
diff --git a/spec/features/projects/snippets/user_views_snippets_spec.rb b/spec/features/projects/snippets/user_views_snippets_spec.rb
index 59869244b4a..5739c9510a8 100644
--- a/spec/features/projects/snippets/user_views_snippets_spec.rb
+++ b/spec/features/projects/snippets/user_views_snippets_spec.rb
@@ -28,7 +28,7 @@ describe 'Projects > Snippets > User views snippets' do
end
it 'shows snippets' do
- expect(page).to have_content(project_snippet.title)
+ expect(page).to have_link(project_snippet.title, href: project_snippet_path(project, project_snippet))
expect(page).not_to have_content(snippet.title)
end
end
diff --git a/spec/features/projects/user_changes_project_visibility_spec.rb b/spec/features/projects/user_changes_project_visibility_spec.rb
new file mode 100644
index 00000000000..31da4140d35
--- /dev/null
+++ b/spec/features/projects/user_changes_project_visibility_spec.rb
@@ -0,0 +1,46 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe 'User changes public project visibility', :js do
+ include ProjectForksHelper
+
+ before do
+ fork_project(project, project.owner)
+
+ sign_in(project.owner)
+
+ visit edit_project_path(project)
+ end
+
+ shared_examples 'changing visibility to private' do
+ it 'requires confirmation' do
+ visibility_select = first('.project-feature-controls .select-control')
+ visibility_select.select('Private')
+
+ page.within('#js-shared-permissions') do
+ click_button 'Save changes'
+ end
+
+ find('.js-confirm-danger-input').send_keys(project.path_with_namespace)
+
+ page.within '.modal' do
+ click_button 'Reduce project visibility'
+ end
+
+ expect(page).to have_text("Project '#{project.name}' was successfully updated")
+ end
+ end
+
+ context 'when a project is public' do
+ let(:project) { create(:project, :empty_repo, :public) }
+
+ it_behaves_like 'changing visibility to private'
+ end
+
+ context 'when the project is internal' do
+ let(:project) { create(:project, :empty_repo, :internal) }
+
+ it_behaves_like 'changing visibility to private'
+ end
+end
diff --git a/spec/features/projects/view_on_env_spec.rb b/spec/features/projects/view_on_env_spec.rb
index 832985f1a30..c2d4cefad12 100644
--- a/spec/features/projects/view_on_env_spec.rb
+++ b/spec/features/projects/view_on_env_spec.rb
@@ -10,6 +10,7 @@ describe 'View on environment', :js do
before do
stub_feature_flags(single_mr_diff_view: false)
+ stub_feature_flags(diffs_batch_load: false)
project.add_maintainer(user)
end
diff --git a/spec/features/projects/wiki/markdown_preview_spec.rb b/spec/features/projects/wiki/markdown_preview_spec.rb
index 5c6b04a7141..331ba58d067 100644
--- a/spec/features/projects/wiki/markdown_preview_spec.rb
+++ b/spec/features/projects/wiki/markdown_preview_spec.rb
@@ -29,11 +29,11 @@ describe 'Projects > Wiki > User previews markdown changes', :js do
expect(page).to have_content("regular link")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/regular\">regular link</a>")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a/b/relative\">relative link 1</a>")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a/b/c/relative\">relative link 2</a>")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a/b/c/e/f/relative\">relative link 3</a>")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/title%20with%20spaces\">spaced link</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/regular\">regular link</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/a/b/relative\">relative link 1</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/a/b/c/relative\">relative link 2</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/a/b/c/e/f/relative\">relative link 3</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/title%20with%20spaces\">spaced link</a>")
end
end
@@ -43,11 +43,11 @@ describe 'Projects > Wiki > User previews markdown changes', :js do
expect(page).to have_content("regular link")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/regular\">regular link</a>")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/relative\">relative link 1</a>")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/c-page/relative\">relative link 2</a>")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/c-page/e/f/relative\">relative link 3</a>")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/title%20with%20spaces\">spaced link</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/regular\">regular link</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/a-page/b-page/relative\">relative link 1</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/a-page/b-page/c-page/relative\">relative link 2</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/a-page/b-page/c-page/e/f/relative\">relative link 3</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/title%20with%20spaces\">spaced link</a>")
end
end
@@ -57,11 +57,11 @@ describe 'Projects > Wiki > User previews markdown changes', :js do
expect(page).to have_content("regular link")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/regular\">regular link</a>")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/relative\">relative link 1</a>")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/c-page/relative\">relative link 2</a>")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/c-page/e/f/relative\">relative link 3</a>")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/title%20with%20spaces\">spaced link</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/regular\">regular link</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/a-page/b-page/relative\">relative link 1</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/a-page/b-page/c-page/relative\">relative link 2</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/a-page/b-page/c-page/e/f/relative\">relative link 3</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/title%20with%20spaces\">spaced link</a>")
end
end
end
@@ -77,11 +77,11 @@ describe 'Projects > Wiki > User previews markdown changes', :js do
expect(page).to have_content("regular link")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/regular\">regular link</a>")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a/b/relative\">relative link 1</a>")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a/b/c/relative\">relative link 2</a>")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a/b/c/e/f/relative\">relative link 3</a>")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/title%20with%20spaces\">spaced link</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/regular\">regular link</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/a/b/relative\">relative link 1</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/a/b/c/relative\">relative link 2</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/a/b/c/e/f/relative\">relative link 3</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/title%20with%20spaces\">spaced link</a>")
end
end
@@ -95,11 +95,11 @@ describe 'Projects > Wiki > User previews markdown changes', :js do
expect(page).to have_content("regular link")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/regular\">regular link</a>")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/relative\">relative link 1</a>")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/c-page/relative\">relative link 2</a>")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/c-page/e/f/relative\">relative link 3</a>")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/title%20with%20spaces\">spaced link</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/regular\">regular link</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/a-page/b-page/relative\">relative link 1</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/a-page/b-page/c-page/relative\">relative link 2</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/a-page/b-page/c-page/e/f/relative\">relative link 3</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/title%20with%20spaces\">spaced link</a>")
end
end
@@ -113,11 +113,11 @@ describe 'Projects > Wiki > User previews markdown changes', :js do
expect(page).to have_content("regular link")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/regular\">regular link</a>")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/relative\">relative link 1</a>")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/c-page/relative\">relative link 2</a>")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/c-page/e/f/relative\">relative link 3</a>")
- expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/title%20with%20spaces\">spaced link</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/regular\">regular link</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/a-page/b-page/relative\">relative link 1</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/a-page/b-page/c-page/relative\">relative link 2</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/a-page/b-page/c-page/e/f/relative\">relative link 3</a>")
+ expect(page.html).to include("<a href=\"/#{project.full_path}/-/wikis/title%20with%20spaces\">spaced link</a>")
end
end
diff --git a/spec/features/projects/wiki/user_creates_wiki_page_spec.rb b/spec/features/projects/wiki/user_creates_wiki_page_spec.rb
index 56d0518015d..499c459621a 100644
--- a/spec/features/projects/wiki/user_creates_wiki_page_spec.rb
+++ b/spec/features/projects/wiki/user_creates_wiki_page_spec.rb
@@ -55,7 +55,7 @@ describe "User creates wiki page" do
end
expect(current_path).to include("one/two/three-test")
- expect(page).to have_xpath("//a[@href='/#{project.full_path}/wikis/one/two/three-test']")
+ expect(page).to have_xpath("//a[@href='/#{project.full_path}/-/wikis/one/two/three-test']")
end
it "has `Create home` as a commit message", :js do
diff --git a/spec/features/reportable_note/snippets_spec.rb b/spec/features/reportable_note/snippets_spec.rb
index c2c853cdb05..bd37675315f 100644
--- a/spec/features/reportable_note/snippets_spec.rb
+++ b/spec/features/reportable_note/snippets_spec.rb
@@ -7,6 +7,7 @@ describe 'Reportable note on snippets', :js do
let(:project) { create(:project) }
before do
+ stub_feature_flags(snippets_vue: false)
project.add_maintainer(user)
sign_in(user)
end
diff --git a/spec/features/security/group/internal_access_spec.rb b/spec/features/security/group/internal_access_spec.rb
index a182b6b9d57..8dd15789cd1 100644
--- a/spec/features/security/group/internal_access_spec.rb
+++ b/spec/features/security/group/internal_access_spec.rb
@@ -53,6 +53,7 @@ describe 'Internal Group access' do
describe 'GET /groups/:path/merge_requests' do
let(:project) { create(:project, :internal, :repository, group: group) }
+
subject { merge_requests_group_path(group) }
it { is_expected.to be_allowed_for(:admin) }
diff --git a/spec/features/security/group/private_access_spec.rb b/spec/features/security/group/private_access_spec.rb
index 5e3e9824aaa..0720302b03b 100644
--- a/spec/features/security/group/private_access_spec.rb
+++ b/spec/features/security/group/private_access_spec.rb
@@ -53,6 +53,7 @@ describe 'Private Group access' do
describe 'GET /groups/:path/merge_requests' do
let(:project) { create(:project, :private, :repository, group: group) }
+
subject { merge_requests_group_path(group) }
it { is_expected.to be_allowed_for(:admin) }
diff --git a/spec/features/security/group/public_access_spec.rb b/spec/features/security/group/public_access_spec.rb
index efc84205980..0a18a0ff812 100644
--- a/spec/features/security/group/public_access_spec.rb
+++ b/spec/features/security/group/public_access_spec.rb
@@ -53,6 +53,7 @@ describe 'Public Group access' do
describe 'GET /groups/:path/merge_requests' do
let(:project) { create(:project, :public, :repository, group: group) }
+
subject { merge_requests_group_path(group) }
it { is_expected.to be_allowed_for(:admin) }
diff --git a/spec/features/security/project/internal_access_spec.rb b/spec/features/security/project/internal_access_spec.rb
index 9c1c81918fa..5c74b566ef0 100644
--- a/spec/features/security/project/internal_access_spec.rb
+++ b/spec/features/security/project/internal_access_spec.rb
@@ -7,10 +7,6 @@ describe "Internal Project Access" do
set(:project) { create(:project, :internal, :repository) }
- before do
- stub_feature_flags(job_log_json: false)
- end
-
describe "Project should be internal" do
describe '#internal?' do
subject { project.internal? }
@@ -89,7 +85,7 @@ describe "Internal Project Access" do
it { is_expected.to be_denied_for(:visitor) }
end
- describe "GET /:project_path/settings/members" do
+ describe "GET /:project_path/-/settings/members" do
subject { project_settings_members_path(project) }
it { is_expected.to be_allowed_for(:admin) }
@@ -103,7 +99,7 @@ describe "Internal Project Access" do
it { is_expected.to be_denied_for(:external) }
end
- describe "GET /:project_path/settings/ci_cd" do
+ describe "GET /:project_path/-/settings/ci_cd" do
subject { project_settings_ci_cd_path(project) }
it { is_expected.to be_allowed_for(:admin) }
@@ -117,7 +113,7 @@ describe "Internal Project Access" do
it { is_expected.to be_denied_for(:external) }
end
- describe "GET /:project_path/settings/repository" do
+ describe "GET /:project_path/-/settings/repository" do
subject { project_settings_repository_path(project) }
it { is_expected.to be_allowed_for(:admin) }
@@ -133,6 +129,7 @@ describe "Internal Project Access" do
describe "GET /:project_path/blob" do
let(:commit) { project.repository.commit }
+
subject { project_blob_path(project, File.join(commit.id, '.gitignore')) }
it { is_expected.to be_allowed_for(:admin) }
@@ -190,6 +187,7 @@ describe "Internal Project Access" do
describe "GET /:project_path/issues/:id/edit" do
let(:issue) { create(:issue, project: project) }
+
subject { edit_project_issue_path(project, issue) }
it { is_expected.to be_allowed_for(:admin) }
@@ -301,7 +299,7 @@ describe "Internal Project Access" do
it { is_expected.to be_denied_for(:visitor) }
end
- describe "GET /:project_path/settings/integrations" do
+ describe "GET /:project_path/-/settings/integrations" do
subject { project_settings_integrations_path(project) }
it { is_expected.to be_allowed_for(:admin) }
@@ -331,6 +329,7 @@ describe "Internal Project Access" do
describe "GET /:project_path/pipelines/:id" do
let(:pipeline) { create(:ci_pipeline, project: project) }
+
subject { project_pipeline_path(project, pipeline) }
it { is_expected.to be_allowed_for(:admin) }
@@ -383,6 +382,7 @@ describe "Internal Project Access" do
describe "GET /:project_path/builds/:id" do
let(:pipeline) { create(:ci_pipeline, project: project) }
let(:build) { create(:ci_build, pipeline: pipeline) }
+
subject { project_job_path(project, build.id) }
context "when allowed for public and internal" do
@@ -421,6 +421,7 @@ describe "Internal Project Access" do
describe 'GET /:project_path/builds/:id/trace' do
let(:pipeline) { create(:ci_pipeline, project: project) }
let(:build) { create(:ci_build, pipeline: pipeline) }
+
subject { trace_project_job_path(project, build.id) }
context 'when allowed for public and internal' do
@@ -470,7 +471,7 @@ describe "Internal Project Access" do
it { is_expected.to be_denied_for(:visitor) }
end
- describe "GET /:project_path/environments" do
+ describe "GET /:project_path/-/environments" do
subject { project_environments_path(project) }
it { is_expected.to be_allowed_for(:admin) }
@@ -484,8 +485,9 @@ describe "Internal Project Access" do
it { is_expected.to be_denied_for(:visitor) }
end
- describe "GET /:project_path/environments/:id" do
+ describe "GET /:project_path/-/environments/:id" do
let(:environment) { create(:environment, project: project) }
+
subject { project_environment_path(project, environment) }
it { is_expected.to be_allowed_for(:admin) }
@@ -499,8 +501,9 @@ describe "Internal Project Access" do
it { is_expected.to be_denied_for(:visitor) }
end
- describe "GET /:project_path/environments/:id/deployments" do
+ describe "GET /:project_path/-/environments/:id/deployments" do
let(:environment) { create(:environment, project: project) }
+
subject { project_environment_deployments_path(project, environment) }
it { is_expected.to be_allowed_for(:admin) }
@@ -514,7 +517,7 @@ describe "Internal Project Access" do
it { is_expected.to be_denied_for(:visitor) }
end
- describe "GET /:project_path/environments/new" do
+ describe "GET /:project_path/-/environments/new" do
subject { new_project_environment_path(project) }
it { is_expected.to be_allowed_for(:admin) }
diff --git a/spec/features/security/project/private_access_spec.rb b/spec/features/security/project/private_access_spec.rb
index dbaf97bc3fd..2404b7cc69d 100644
--- a/spec/features/security/project/private_access_spec.rb
+++ b/spec/features/security/project/private_access_spec.rb
@@ -7,10 +7,6 @@ describe "Private Project Access" do
set(:project) { create(:project, :private, :repository, public_builds: false) }
- before do
- stub_feature_flags(job_log_json: false)
- end
-
describe "Project should be private" do
describe '#private?' do
subject { project.private? }
@@ -89,7 +85,7 @@ describe "Private Project Access" do
it { is_expected.to be_denied_for(:visitor) }
end
- describe "GET /:project_path/settings/members" do
+ describe "GET /:project_path/-/settings/members" do
subject { project_settings_members_path(project) }
it { is_expected.to be_allowed_for(:admin) }
@@ -103,7 +99,7 @@ describe "Private Project Access" do
it { is_expected.to be_denied_for(:external) }
end
- describe "GET /:project_path/settings/ci_cd" do
+ describe "GET /:project_path/-/settings/ci_cd" do
subject { project_settings_ci_cd_path(project) }
it { is_expected.to be_allowed_for(:admin) }
@@ -117,7 +113,7 @@ describe "Private Project Access" do
it { is_expected.to be_denied_for(:external) }
end
- describe "GET /:project_path/settings/repository" do
+ describe "GET /:project_path/-/settings/repository" do
subject { project_settings_repository_path(project) }
it { is_expected.to be_allowed_for(:admin) }
@@ -133,6 +129,7 @@ describe "Private Project Access" do
describe "GET /:project_path/blob" do
let(:commit) { project.repository.commit }
+
subject { project_blob_path(project, File.join(commit.id, '.gitignore')) }
it { is_expected.to be_allowed_for(:admin) }
@@ -190,6 +187,7 @@ describe "Private Project Access" do
describe "GET /:project_path/issues/:id/edit" do
let(:issue) { create(:issue, project: project) }
+
subject { edit_project_issue_path(project, issue) }
it { is_expected.to be_allowed_for(:admin) }
@@ -273,7 +271,7 @@ describe "Private Project Access" do
it { is_expected.to be_denied_for(:visitor) }
end
- describe "GET /:project_path/namespace/hooks" do
+ describe "GET /:project_path/-/settings/integrations" do
subject { project_settings_integrations_path(project) }
it { is_expected.to be_allowed_for(:admin) }
@@ -315,6 +313,7 @@ describe "Private Project Access" do
describe "GET /:project_path/pipelines/:id" do
let(:pipeline) { create(:ci_pipeline, project: project) }
+
subject { project_pipeline_path(project, pipeline) }
it { is_expected.to be_allowed_for(:admin) }
@@ -369,6 +368,7 @@ describe "Private Project Access" do
describe "GET /:project_path/builds/:id" do
let(:pipeline) { create(:ci_pipeline, project: project) }
let(:build) { create(:ci_build, pipeline: pipeline) }
+
subject { project_job_path(project, build.id) }
it { is_expected.to be_allowed_for(:admin) }
@@ -402,6 +402,7 @@ describe "Private Project Access" do
describe 'GET /:project_path/builds/:id/trace' do
let(:pipeline) { create(:ci_pipeline, project: project) }
let(:build) { create(:ci_build, pipeline: pipeline) }
+
subject { trace_project_job_path(project, build.id) }
it { is_expected.to be_allowed_for(:admin) }
@@ -431,7 +432,7 @@ describe "Private Project Access" do
end
end
- describe "GET /:project_path/environments" do
+ describe "GET /:project_path/-/environments" do
subject { project_environments_path(project) }
it { is_expected.to be_allowed_for(:admin) }
@@ -445,8 +446,9 @@ describe "Private Project Access" do
it { is_expected.to be_denied_for(:visitor) }
end
- describe "GET /:project_path/environments/:id" do
+ describe "GET /:project_path/-/environments/:id" do
let(:environment) { create(:environment, project: project) }
+
subject { project_environment_path(project, environment) }
it { is_expected.to be_allowed_for(:admin) }
@@ -460,8 +462,9 @@ describe "Private Project Access" do
it { is_expected.to be_denied_for(:visitor) }
end
- describe "GET /:project_path/environments/:id/deployments" do
+ describe "GET /:project_path/-/environments/:id/deployments" do
let(:environment) { create(:environment, project: project) }
+
subject { project_environment_deployments_path(project, environment) }
it { is_expected.to be_allowed_for(:admin) }
@@ -475,7 +478,7 @@ describe "Private Project Access" do
it { is_expected.to be_denied_for(:visitor) }
end
- describe "GET /:project_path/environments/new" do
+ describe "GET /:project_path/-/environments/new" do
subject { new_project_environment_path(project) }
it { is_expected.to be_allowed_for(:admin) }
@@ -517,7 +520,7 @@ describe "Private Project Access" do
it { is_expected.to be_denied_for(:visitor) }
end
- describe "GET /:project_path/environments/new" do
+ describe "GET /:project_path/-/environments/new" do
subject { new_project_pipeline_schedule_path(project) }
it { is_expected.to be_allowed_for(:admin) }
diff --git a/spec/features/security/project/public_access_spec.rb b/spec/features/security/project/public_access_spec.rb
index 35cbc195f4f..8e07af61c8b 100644
--- a/spec/features/security/project/public_access_spec.rb
+++ b/spec/features/security/project/public_access_spec.rb
@@ -7,10 +7,6 @@ describe "Public Project Access" do
set(:project) { create(:project, :public, :repository) }
- before do
- stub_feature_flags(job_log_json: false)
- end
-
describe "Project should be public" do
describe '#public?' do
subject { project.public? }
@@ -89,7 +85,7 @@ describe "Public Project Access" do
it { is_expected.to be_allowed_for(:visitor) }
end
- describe "GET /:project_path/settings/members" do
+ describe "GET /:project_path/-/settings/members" do
subject { project_settings_members_path(project) }
it { is_expected.to be_allowed_for(:admin) }
@@ -103,7 +99,7 @@ describe "Public Project Access" do
it { is_expected.to be_allowed_for(:external) }
end
- describe "GET /:project_path/settings/ci_cd" do
+ describe "GET /:project_path/-/settings/ci_cd" do
subject { project_settings_ci_cd_path(project) }
it { is_expected.to be_allowed_for(:admin) }
@@ -117,7 +113,7 @@ describe "Public Project Access" do
it { is_expected.to be_denied_for(:external) }
end
- describe "GET /:project_path/settings/repository" do
+ describe "GET /:project_path/-/settings/repository" do
subject { project_settings_repository_path(project) }
it { is_expected.to be_allowed_for(:admin) }
@@ -147,6 +143,7 @@ describe "Public Project Access" do
describe "GET /:project_path/pipelines/:id" do
let(:pipeline) { create(:ci_pipeline, project: project) }
+
subject { project_pipeline_path(project, pipeline) }
it { is_expected.to be_allowed_for(:admin) }
@@ -199,6 +196,7 @@ describe "Public Project Access" do
describe "GET /:project_path/builds/:id" do
let(:pipeline) { create(:ci_pipeline, project: project) }
let(:build) { create(:ci_build, pipeline: pipeline) }
+
subject { project_job_path(project, build.id) }
context "when allowed for public" do
@@ -237,6 +235,7 @@ describe "Public Project Access" do
describe 'GET /:project_path/builds/:id/trace' do
let(:pipeline) { create(:ci_pipeline, project: project) }
let(:build) { create(:ci_build, pipeline: pipeline) }
+
subject { trace_project_job_path(project, build.id) }
context 'when allowed for public' do
@@ -286,7 +285,7 @@ describe "Public Project Access" do
it { is_expected.to be_denied_for(:visitor) }
end
- describe "GET /:project_path/environments" do
+ describe "GET /:project_path/-/environments" do
subject { project_environments_path(project) }
it { is_expected.to be_allowed_for(:admin) }
@@ -300,8 +299,9 @@ describe "Public Project Access" do
it { is_expected.to be_denied_for(:visitor) }
end
- describe "GET /:project_path/environments/:id" do
+ describe "GET /:project_path/-/environments/:id" do
let(:environment) { create(:environment, project: project) }
+
subject { project_environment_path(project, environment) }
it { is_expected.to be_allowed_for(:admin) }
@@ -315,8 +315,9 @@ describe "Public Project Access" do
it { is_expected.to be_denied_for(:visitor) }
end
- describe "GET /:project_path/environments/:id/deployments" do
+ describe "GET /:project_path/-/environments/:id/deployments" do
let(:environment) { create(:environment, project: project) }
+
subject { project_environment_deployments_path(project, environment) }
it { is_expected.to be_allowed_for(:admin) }
@@ -330,7 +331,7 @@ describe "Public Project Access" do
it { is_expected.to be_denied_for(:visitor) }
end
- describe "GET /:project_path/environments/new" do
+ describe "GET /:project_path/-/environments/new" do
subject { new_project_environment_path(project) }
it { is_expected.to be_allowed_for(:admin) }
@@ -403,6 +404,7 @@ describe "Public Project Access" do
describe "GET /:project_path/issues/:id/edit" do
let(:issue) { create(:issue, project: project) }
+
subject { edit_project_issue_path(project, issue) }
it { is_expected.to be_allowed_for(:admin) }
@@ -514,7 +516,7 @@ describe "Public Project Access" do
it { is_expected.to be_allowed_for(:visitor) }
end
- describe "GET /:project_path/settings/integrations" do
+ describe "GET /:project_path/-/settings/integrations" do
subject { project_settings_integrations_path(project) }
it { is_expected.to be_allowed_for(:admin) }
diff --git a/spec/features/snippets/explore_spec.rb b/spec/features/snippets/explore_spec.rb
index 57e91fea709..2075742eafb 100644
--- a/spec/features/snippets/explore_spec.rb
+++ b/spec/features/snippets/explore_spec.rb
@@ -6,30 +6,59 @@ describe 'Explore Snippets' do
let!(:public_snippet) { create(:personal_snippet, :public) }
let!(:internal_snippet) { create(:personal_snippet, :internal) }
let!(:private_snippet) { create(:personal_snippet, :private) }
+ let(:user) { nil }
- it 'User should see snippets that are not private' do
- sign_in create(:user)
+ before do
+ sign_in(user) if user
visit explore_snippets_path
-
- expect(page).to have_content(public_snippet.title)
- expect(page).to have_content(internal_snippet.title)
- expect(page).not_to have_content(private_snippet.title)
end
- it 'External user should see only public snippets' do
- sign_in create(:user, :external)
- visit explore_snippets_path
+ context 'User' do
+ let(:user) { create(:user) }
+
+ it 'see snippets that are not private' do
+ expect(page).to have_content(public_snippet.title)
+ expect(page).to have_content(internal_snippet.title)
+ expect(page).not_to have_content(private_snippet.title)
+ end
- expect(page).to have_content(public_snippet.title)
- expect(page).not_to have_content(internal_snippet.title)
- expect(page).not_to have_content(private_snippet.title)
+ it 'shows new snippet button in header' do
+ parent_element = page.find('.page-title-controls')
+ expect(parent_element).to have_link('New snippet')
+ end
end
- it 'Not authenticated user should see only public snippets' do
- visit explore_snippets_path
+ context 'External user' do
+ let(:user) { create(:user, :external) }
+
+ it 'see only public snippets' do
+ expect(page).to have_content(public_snippet.title)
+ expect(page).not_to have_content(internal_snippet.title)
+ expect(page).not_to have_content(private_snippet.title)
+ end
+
+ context 'without snippets' do
+ before do
+ Snippet.delete_all
+ end
+
+ it 'hides new snippet button' do
+ expect(page).not_to have_link('New snippet')
+ end
+ end
+
+ context 'with snippets' do
+ it 'hides new snippet button' do
+ expect(page).not_to have_link('New snippet')
+ end
+ end
+ end
- expect(page).to have_content(public_snippet.title)
- expect(page).not_to have_content(internal_snippet.title)
- expect(page).not_to have_content(private_snippet.title)
+ context 'Not authenticated user' do
+ it 'see only public snippets' do
+ expect(page).to have_content(public_snippet.title)
+ expect(page).not_to have_content(internal_snippet.title)
+ expect(page).not_to have_content(private_snippet.title)
+ end
end
end
diff --git a/spec/features/snippets/internal_snippet_spec.rb b/spec/features/snippets/internal_snippet_spec.rb
index 4ef3b0e5e7a..fd7ef71db15 100644
--- a/spec/features/snippets/internal_snippet_spec.rb
+++ b/spec/features/snippets/internal_snippet_spec.rb
@@ -5,6 +5,10 @@ require 'spec_helper'
describe 'Internal Snippets', :js do
let(:internal_snippet) { create(:personal_snippet, :internal) }
+ before do
+ stub_feature_flags(snippets_vue: false)
+ end
+
describe 'normal user' do
before do
sign_in(create(:user))
diff --git a/spec/features/snippets/notes_on_personal_snippets_spec.rb b/spec/features/snippets/notes_on_personal_snippets_spec.rb
index 2bd01be25e9..57264f97ddc 100644
--- a/spec/features/snippets/notes_on_personal_snippets_spec.rb
+++ b/spec/features/snippets/notes_on_personal_snippets_spec.rb
@@ -16,6 +16,7 @@ describe 'Comments on personal snippets', :js do
let!(:other_note) { create(:note_on_personal_snippet) }
before do
+ stub_feature_flags(snippets_vue: false)
sign_in user
visit snippet_path(snippet)
diff --git a/spec/features/snippets/private_snippets_spec.rb b/spec/features/snippets/private_snippets_spec.rb
index 9df4cd01103..37f45f22a27 100644
--- a/spec/features/snippets/private_snippets_spec.rb
+++ b/spec/features/snippets/private_snippets_spec.rb
@@ -6,6 +6,7 @@ describe 'Private Snippets', :js do
let(:user) { create(:user) }
before do
+ stub_feature_flags(snippets_vue: false)
sign_in(user)
end
diff --git a/spec/features/snippets/public_snippets_spec.rb b/spec/features/snippets/public_snippets_spec.rb
index 82edda509c2..295e61ffb56 100644
--- a/spec/features/snippets/public_snippets_spec.rb
+++ b/spec/features/snippets/public_snippets_spec.rb
@@ -3,6 +3,10 @@
require 'spec_helper'
describe 'Public Snippets', :js do
+ before do
+ stub_feature_flags(snippets_vue: false)
+ end
+
it 'Unauthenticated user should see public snippets' do
public_snippet = create(:personal_snippet, :public)
@@ -12,6 +16,7 @@ describe 'Public Snippets', :js do
expect(page).to have_content(public_snippet.content)
expect(page).to have_css('.js-embed-btn', visible: false)
expect(page).to have_css('.js-share-btn', visible: false)
+ expect(page.find('.js-snippet-url-area')).to be_readonly
end
it 'Unauthenticated user should see raw public snippets' do
diff --git a/spec/features/snippets/show_spec.rb b/spec/features/snippets/show_spec.rb
index edf7d37fd6d..9c686be012b 100644
--- a/spec/features/snippets/show_spec.rb
+++ b/spec/features/snippets/show_spec.rb
@@ -6,6 +6,10 @@ describe 'Snippet', :js do
let(:project) { create(:project, :repository) }
let(:snippet) { create(:personal_snippet, :public, file_name: file_name, content: content) }
+ before do
+ stub_feature_flags(snippets_vue: false)
+ end
+
context 'Ruby file' do
let(:file_name) { 'popen.rb' }
let(:content) { project.repository.blob_at('master', 'files/ruby/popen.rb').data }
@@ -158,4 +162,21 @@ describe 'Snippet', :js do
subject { visit snippet_path(snippet) }
end
+
+ context 'when user cannot create snippets' do
+ let(:user) { create(:user, :external) }
+ let(:snippet) { create(:personal_snippet, :public) }
+
+ before do
+ sign_in(user)
+
+ visit snippet_path(snippet)
+
+ wait_for_requests
+ end
+
+ it 'does not show the "New Snippet" button' do
+ expect(page).not_to have_link('New snippet')
+ end
+ end
end
diff --git a/spec/features/snippets/spam_snippets_spec.rb b/spec/features/snippets/spam_snippets_spec.rb
index 3e71a4e7879..0c3ca6f17c8 100644
--- a/spec/features/snippets/spam_snippets_spec.rb
+++ b/spec/features/snippets/spam_snippets_spec.rb
@@ -7,6 +7,7 @@ describe 'User creates snippet', :js do
before do
stub_feature_flags(allow_possible_spam: false)
+ stub_feature_flags(snippets_vue: false)
stub_env('IN_MEMORY_APPLICATION_SETTINGS', 'false')
Gitlab::CurrentSettings.update!(
diff --git a/spec/features/snippets/user_creates_snippet_spec.rb b/spec/features/snippets/user_creates_snippet_spec.rb
index 9a141dd463a..b373264bbe4 100644
--- a/spec/features/snippets/user_creates_snippet_spec.rb
+++ b/spec/features/snippets/user_creates_snippet_spec.rb
@@ -8,6 +8,7 @@ describe 'User creates snippet', :js do
let(:user) { create(:user) }
before do
+ stub_feature_flags(snippets_vue: false)
sign_in(user)
visit new_snippet_path
end
diff --git a/spec/features/snippets/user_deletes_snippet_spec.rb b/spec/features/snippets/user_deletes_snippet_spec.rb
index 217419a220a..35619b92561 100644
--- a/spec/features/snippets/user_deletes_snippet_spec.rb
+++ b/spec/features/snippets/user_deletes_snippet_spec.rb
@@ -10,6 +10,8 @@ describe 'User deletes snippet' do
before do
sign_in(user)
+ stub_feature_flags(snippets_vue: false)
+
visit snippet_path(snippet)
end
diff --git a/spec/features/snippets/user_edits_snippet_spec.rb b/spec/features/snippets/user_edits_snippet_spec.rb
index 51d9baf44bc..1d26660a4f6 100644
--- a/spec/features/snippets/user_edits_snippet_spec.rb
+++ b/spec/features/snippets/user_edits_snippet_spec.rb
@@ -12,6 +12,7 @@ describe 'User edits snippet', :js do
let(:snippet) { create(:personal_snippet, :public, file_name: file_name, content: content, author: user) }
before do
+ stub_feature_flags(snippets_vue: false)
sign_in(user)
visit edit_snippet_path(snippet)
diff --git a/spec/features/snippets/user_snippets_spec.rb b/spec/features/snippets/user_snippets_spec.rb
index c6daa19d5e6..d9faea55b29 100644
--- a/spec/features/snippets/user_snippets_spec.rb
+++ b/spec/features/snippets/user_snippets_spec.rb
@@ -14,9 +14,9 @@ describe 'User Snippets' do
end
it 'View all of my snippets' do
- expect(page).to have_content(public_snippet.title)
- expect(page).to have_content(internal_snippet.title)
- expect(page).to have_content(private_snippet.title)
+ expect(page).to have_link(public_snippet.title, href: snippet_path(public_snippet))
+ expect(page).to have_link(internal_snippet.title, href: snippet_path(internal_snippet))
+ expect(page).to have_link(private_snippet.title, href: snippet_path(private_snippet))
end
it 'View my public snippets' do
diff --git a/spec/features/snippets_spec.rb b/spec/features/snippets_spec.rb
index 9df6fe7d16b..bc7fa161e87 100644
--- a/spec/features/snippets_spec.rb
+++ b/spec/features/snippets_spec.rb
@@ -6,11 +6,38 @@ describe 'Snippets' do
context 'when the project has snippets' do
let(:project) { create(:project, :public) }
let!(:snippets) { create_list(:project_snippet, 2, :public, author: project.owner, project: project) }
+
before do
allow(Snippet).to receive(:default_per_page).and_return(1)
- visit snippets_path(username: project.owner.username)
+
+ visit project_snippets_path(project)
end
it_behaves_like 'paginated snippets'
end
+
+ describe 'rendering engine' do
+ let_it_be(:snippet) { create(:personal_snippet, :public) }
+ let(:snippets_vue_feature_flag_enabled) { true }
+
+ before do
+ stub_feature_flags(snippets_vue: snippets_vue_feature_flag_enabled)
+
+ visit snippet_path(snippet)
+ end
+
+ it 'renders Vue application' do
+ expect(page).to have_selector('#js-snippet-view')
+ expect(page).not_to have_selector('.personal-snippets')
+ end
+
+ context 'when feature flag is disabled' do
+ let(:snippets_vue_feature_flag_enabled) { false }
+
+ it 'renders HAML application and not Vue' do
+ expect(page).not_to have_selector('#js-snippet-view')
+ expect(page).to have_selector('.personal-snippets')
+ end
+ end
+ end
end
diff --git a/spec/features/task_lists_spec.rb b/spec/features/task_lists_spec.rb
index acffc4ce580..11429f16f42 100644
--- a/spec/features/task_lists_spec.rb
+++ b/spec/features/task_lists_spec.rb
@@ -146,6 +146,7 @@ describe 'Task Lists' do
describe 'for Notes' do
let!(:issue) { create(:issue, author: user, project: project) }
+
describe 'multiple tasks' do
let!(:note) do
create(:note, note: markdown, noteable: issue,
diff --git a/spec/features/users/login_spec.rb b/spec/features/users/login_spec.rb
index b7c54bb6de8..5f4f92e547c 100644
--- a/spec/features/users/login_spec.rb
+++ b/spec/features/users/login_spec.rb
@@ -406,6 +406,7 @@ describe 'Login' do
describe 'with required two-factor authentication enabled' do
let(:user) { create(:user) }
+
# TODO: otp_grace_period_started_at
context 'global setting' do
diff --git a/spec/features/users/show_spec.rb b/spec/features/users/show_spec.rb
index 932c1d8d4bd..8c2b555305a 100644
--- a/spec/features/users/show_spec.rb
+++ b/spec/features/users/show_spec.rb
@@ -59,6 +59,42 @@ describe 'User page' do
end
end
+ context 'with blocked profile' do
+ let(:user) { create(:user, state: :blocked) }
+
+ it 'shows no tab' do
+ visit(user_path(user))
+
+ expect(page).to have_css("div.profile-header")
+ expect(page).not_to have_css("ul.nav-links")
+ end
+
+ it 'shows blocked message' do
+ visit(user_path(user))
+
+ expect(page).to have_content("This user is blocked")
+ end
+
+ it 'shows user name as blocked' do
+ visit(user_path(user))
+
+ expect(page).to have_css(".cover-title", text: 'Blocked user')
+ end
+
+ it 'shows no additional fields' do
+ visit(user_path(user))
+
+ expect(page).not_to have_css(".profile-user-bio")
+ expect(page).not_to have_css(".profile-link-holder")
+ end
+
+ it 'shows username' do
+ visit(user_path(user))
+
+ expect(page).to have_content("@#{user.username}")
+ end
+ end
+
it 'shows the status if there was one' do
create(:user_status, user: user, message: "Working hard!")
diff --git a/spec/finders/clusters_finder_spec.rb b/spec/finders/clusters_finder_spec.rb
index f6ea8347f67..5dde616f679 100644
--- a/spec/finders/clusters_finder_spec.rb
+++ b/spec/finders/clusters_finder_spec.rb
@@ -4,6 +4,7 @@ require 'spec_helper'
describe ClustersFinder do
let(:project) { create(:project) }
+
set(:user) { create(:user) }
describe '#execute' do
diff --git a/spec/finders/deployments_finder_spec.rb b/spec/finders/deployments_finder_spec.rb
new file mode 100644
index 00000000000..be35a705b0d
--- /dev/null
+++ b/spec/finders/deployments_finder_spec.rb
@@ -0,0 +1,97 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe DeploymentsFinder do
+ subject { described_class.new(project, params).execute }
+
+ let(:project) { create(:project, :public, :repository) }
+ let(:params) { {} }
+
+ describe "#execute" do
+ it 'returns all deployments by default' do
+ deployments = create_list(:deployment, 2, :success, project: project)
+ is_expected.to match_array(deployments)
+ end
+
+ describe 'filtering' do
+ context 'when updated_at filters are specified' do
+ let(:params) { { updated_before: 1.day.ago, updated_after: 3.days.ago } }
+ let!(:deployment_1) { create(:deployment, :success, project: project, updated_at: 2.days.ago) }
+ let!(:deployment_2) { create(:deployment, :success, project: project, updated_at: 4.days.ago) }
+ let!(:deployment_3) { create(:deployment, :success, project: project, updated_at: 1.hour.ago) }
+
+ it 'returns deployments with matched updated_at' do
+ is_expected.to match_array([deployment_1])
+ end
+ end
+ end
+
+ describe 'ordering' do
+ using RSpec::Parameterized::TableSyntax
+
+ let(:params) { { order_by: order_by, sort: sort } }
+
+ let!(:deployment_1) { create(:deployment, :success, project: project, iid: 11, ref: 'master', created_at: 2.days.ago, updated_at: Time.now) }
+ let!(:deployment_2) { create(:deployment, :success, project: project, iid: 12, ref: 'feature', created_at: 1.day.ago, updated_at: 2.hours.ago) }
+ let!(:deployment_3) { create(:deployment, :success, project: project, iid: 8, ref: 'patch', created_at: Time.now, updated_at: 1.hour.ago) }
+
+ where(:order_by, :sort, :ordered_deployments) do
+ 'created_at' | 'asc' | [:deployment_1, :deployment_2, :deployment_3]
+ 'created_at' | 'desc' | [:deployment_3, :deployment_2, :deployment_1]
+ 'id' | 'asc' | [:deployment_1, :deployment_2, :deployment_3]
+ 'id' | 'desc' | [:deployment_3, :deployment_2, :deployment_1]
+ 'iid' | 'asc' | [:deployment_3, :deployment_1, :deployment_2]
+ 'iid' | 'desc' | [:deployment_2, :deployment_1, :deployment_3]
+ 'ref' | 'asc' | [:deployment_2, :deployment_1, :deployment_3]
+ 'ref' | 'desc' | [:deployment_3, :deployment_1, :deployment_2]
+ 'updated_at' | 'asc' | [:deployment_2, :deployment_3, :deployment_1]
+ 'updated_at' | 'desc' | [:deployment_1, :deployment_3, :deployment_2]
+ 'invalid' | 'asc' | [:deployment_1, :deployment_2, :deployment_3]
+ 'iid' | 'err' | [:deployment_3, :deployment_1, :deployment_2]
+ end
+
+ with_them do
+ it 'returns the deployments ordered' do
+ expect(subject).to eq(ordered_deployments.map { |name| public_send(name) })
+ end
+ end
+ end
+
+ describe 'transform `created_at` sorting to `id` sorting' do
+ let(:params) { { order_by: 'created_at', sort: 'asc' } }
+
+ it 'sorts by only one column' do
+ expect(subject.order_values.size).to eq(1)
+ end
+
+ it 'sorts by `id`' do
+ expect(subject.order_values.first.to_sql).to eq(Deployment.arel_table[:id].asc.to_sql)
+ end
+ end
+
+ describe 'tie-breaker for `updated_at` sorting' do
+ let(:params) { { order_by: 'updated_at', sort: 'asc' } }
+
+ it 'sorts by two columns' do
+ expect(subject.order_values.size).to eq(2)
+ end
+
+ it 'adds `id` sorting as the second order column' do
+ order_value = subject.order_values[1]
+
+ expect(order_value.to_sql).to eq(Deployment.arel_table[:id].desc.to_sql)
+ end
+
+ it 'uses the `id DESC` as tie-breaker when ordering' do
+ updated_at = Time.now
+
+ deployment_1 = create(:deployment, :success, project: project, updated_at: updated_at)
+ deployment_2 = create(:deployment, :success, project: project, updated_at: updated_at)
+ deployment_3 = create(:deployment, :success, project: project, updated_at: updated_at)
+
+ expect(subject).to eq([deployment_3, deployment_2, deployment_1])
+ end
+ end
+ end
+end
diff --git a/spec/finders/group_descendants_finder_spec.rb b/spec/finders/group_descendants_finder_spec.rb
index 17875a9b9ab..ee8606e474e 100644
--- a/spec/finders/group_descendants_finder_spec.rb
+++ b/spec/finders/group_descendants_finder_spec.rb
@@ -6,6 +6,7 @@ describe GroupDescendantsFinder do
let(:user) { create(:user) }
let(:group) { create(:group) }
let(:params) { {} }
+
subject(:finder) do
described_class.new(current_user: user, parent_group: group, params: params)
end
diff --git a/spec/finders/group_members_finder_spec.rb b/spec/finders/group_members_finder_spec.rb
index 08f3b4024b3..f161a1df9c3 100644
--- a/spec/finders/group_members_finder_spec.rb
+++ b/spec/finders/group_members_finder_spec.rb
@@ -3,12 +3,13 @@
require 'spec_helper'
describe GroupMembersFinder, '#execute' do
- let(:group) { create(:group) }
+ let(:group) { create(:group) }
let(:nested_group) { create(:group, parent: group) }
- let(:user1) { create(:user) }
- let(:user2) { create(:user) }
- let(:user3) { create(:user) }
- let(:user4) { create(:user) }
+ let(:deeper_nested_group) { create(:group, parent: nested_group) }
+ let(:user1) { create(:user) }
+ let(:user2) { create(:user) }
+ let(:user3) { create(:user) }
+ let(:user4) { create(:user) }
it 'returns members for top-level group' do
member1 = group.add_maintainer(user1)
@@ -20,7 +21,7 @@ describe GroupMembersFinder, '#execute' do
expect(result.to_a).to match_array([member3, member2, member1])
end
- it 'returns members for nested group' do
+ it 'returns members & inherited members for nested group by default' do
group.add_developer(user2)
nested_group.request_access(user4)
member1 = group.add_maintainer(user1)
@@ -32,6 +33,29 @@ describe GroupMembersFinder, '#execute' do
expect(result.to_a).to match_array([member1, member3, member4])
end
+ it 'does not return inherited members for nested group if requested' do
+ group.add_maintainer(user1)
+ group.add_developer(user2)
+ member2 = nested_group.add_maintainer(user2)
+ member3 = nested_group.add_maintainer(user3)
+
+ result = described_class.new(nested_group).execute(include_relations: [:direct])
+
+ expect(result.to_a).to match_array([member2, member3])
+ end
+
+ it 'returns only inherited members for nested group if requested' do
+ group.add_developer(user2)
+ nested_group.request_access(user4)
+ member1 = group.add_maintainer(user1)
+ nested_group.add_maintainer(user2)
+ nested_group.add_maintainer(user3)
+
+ result = described_class.new(nested_group).execute(include_relations: [:inherited])
+
+ expect(result.to_a).to match_array([member1])
+ end
+
it 'returns members for descendant groups if requested' do
member1 = group.add_maintainer(user2)
member2 = group.add_maintainer(user1)
@@ -39,7 +63,7 @@ describe GroupMembersFinder, '#execute' do
member3 = nested_group.add_maintainer(user3)
member4 = nested_group.add_maintainer(user4)
- result = described_class.new(group).execute(include_descendants: true)
+ result = described_class.new(group).execute(include_relations: [:direct, :descendants])
expect(result.to_a).to match_array([member1, member2, member3, member4])
end
diff --git a/spec/finders/group_projects_finder_spec.rb b/spec/finders/group_projects_finder_spec.rb
index b291b5d4b90..89fc1e380dc 100644
--- a/spec/finders/group_projects_finder_spec.rb
+++ b/spec/finders/group_projects_finder_spec.rb
@@ -132,11 +132,13 @@ describe GroupProjectsFinder do
context "only shared" do
let(:options) { { only_shared: true } }
+
it { is_expected.to eq([shared_project_3, shared_project_2, shared_project_1]) }
end
context "only owned" do
let(:options) { { only_owned: true } }
+
it { is_expected.to eq([private_project, public_project]) }
end
@@ -168,4 +170,20 @@ describe GroupProjectsFinder do
end
end
end
+
+ describe 'limiting' do
+ context 'without limiting' do
+ it 'returns all projects' do
+ expect(subject.count).to eq(3)
+ end
+ end
+
+ context 'with limiting' do
+ let(:options) { { limit: 1 } }
+
+ it 'returns only the number of projects specified by the limit' do
+ expect(subject.count).to eq(1)
+ end
+ end
+ end
end
diff --git a/spec/finders/groups_finder_spec.rb b/spec/finders/groups_finder_spec.rb
index 741a89a270b..939b818f165 100644
--- a/spec/finders/groups_finder_spec.rb
+++ b/spec/finders/groups_finder_spec.rb
@@ -111,6 +111,7 @@ describe GroupsFinder do
context 'authorized to private project' do
context 'project one level deep' do
let!(:subproject) { create(:project, :private, namespace: private_subgroup) }
+
before do
subproject.add_guest(user)
end
@@ -129,6 +130,7 @@ describe GroupsFinder do
context 'project two levels deep' do
let!(:private_subsubgroup) { create(:group, :private, parent: private_subgroup) }
let!(:subsubproject) { create(:project, :private, namespace: private_subsubgroup) }
+
before do
subsubproject.add_guest(user)
end
diff --git a/spec/finders/issues_finder_spec.rb b/spec/finders/issues_finder_spec.rb
index 6c10a617279..c52ee89006b 100644
--- a/spec/finders/issues_finder_spec.rb
+++ b/spec/finders/issues_finder_spec.rb
@@ -786,6 +786,7 @@ describe IssuesFinder do
describe '#with_confidentiality_access_check' do
let(:guest) { create(:user) }
+
set(:authorized_user) { create(:user) }
set(:project) { create(:project, namespace: authorized_user.namespace) }
set(:public_issue) { create(:issue, project: project) }
diff --git a/spec/finders/jobs_finder_spec.rb b/spec/finders/jobs_finder_spec.rb
new file mode 100644
index 00000000000..675d170b90e
--- /dev/null
+++ b/spec/finders/jobs_finder_spec.rb
@@ -0,0 +1,89 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe JobsFinder, '#execute' do
+ set(:user) { create(:user) }
+ set(:admin) { create(:user, :admin) }
+ set(:project) { create(:project, :private, public_builds: false) }
+ set(:pipeline) { create(:ci_pipeline, project: project) }
+ set(:job_1) { create(:ci_build) }
+ set(:job_2) { create(:ci_build, :running) }
+ set(:job_3) { create(:ci_build, :success, pipeline: pipeline) }
+
+ let(:params) { {} }
+
+ context 'no project' do
+ subject { described_class.new(current_user: admin, params: params).execute }
+
+ it 'returns all jobs' do
+ expect(subject).to match_array([job_1, job_2, job_3])
+ end
+
+ context 'non admin user' do
+ let(:admin) { user }
+
+ it 'returns no jobs' do
+ expect(subject).to be_empty
+ end
+ end
+
+ context 'without user' do
+ let(:admin) { nil }
+
+ it 'returns no jobs' do
+ expect(subject).to be_empty
+ end
+ end
+
+ context 'scope is present' do
+ let(:jobs) { [job_1, job_2, job_3] }
+
+ where(:scope, :index) do
+ [
+ ['pending', 0],
+ ['running', 1],
+ ['finished', 2]
+ ]
+ end
+
+ with_them do
+ let(:params) { { scope: scope } }
+
+ it { expect(subject).to match_array([jobs[index]]) }
+ end
+ end
+ end
+
+ context 'a project is present' do
+ subject { described_class.new(current_user: user, project: project, params: params).execute }
+
+ context 'user has access to the project' do
+ before do
+ project.add_maintainer(user)
+ end
+
+ it 'returns jobs for the specified project' do
+ expect(subject).to match_array([job_3])
+ end
+ end
+
+ context 'user has no access to project builds' do
+ before do
+ project.add_guest(user)
+ end
+
+ it 'returns no jobs' do
+ expect(subject).to be_empty
+ end
+ end
+
+ context 'without user' do
+ let(:user) { nil }
+
+ it 'returns no jobs' do
+ expect(subject).to be_empty
+ end
+ end
+ end
+end
diff --git a/spec/finders/keys_finder_spec.rb b/spec/finders/keys_finder_spec.rb
new file mode 100644
index 00000000000..f80abdcdb38
--- /dev/null
+++ b/spec/finders/keys_finder_spec.rb
@@ -0,0 +1,148 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe KeysFinder do
+ subject { described_class.new(user, params).execute }
+
+ let(:user) { create(:user) }
+ let(:params) { {} }
+
+ let!(:key_1) do
+ create(:personal_key,
+ last_used_at: 7.days.ago,
+ user: user,
+ key: 'ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt1016k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=',
+ fingerprint: 'ba:81:59:68:d7:6c:cd:02:02:bf:6a:9b:55:4e:af:d1',
+ fingerprint_sha256: 'nUhzNyftwADy8AH3wFY31tAKs7HufskYTte2aXo/lCg')
+ end
+
+ let!(:key_2) { create(:personal_key, last_used_at: nil, user: user) }
+ let!(:key_3) { create(:personal_key, last_used_at: 2.days.ago) }
+
+ context 'with a regular user' do
+ it 'raises GitLabAccessDeniedError' do
+ expect { subject }.to raise_error(KeysFinder::GitLabAccessDeniedError)
+ end
+ end
+
+ context 'with an admin user' do
+ let(:user) {create(:admin)}
+
+ context 'key_type' do
+ let!(:deploy_key) { create(:deploy_key) }
+
+ context 'when `key_type` is `ssh`' do
+ before do
+ params[:key_type] = 'ssh'
+ end
+
+ it 'returns only SSH keys' do
+ expect(subject).to contain_exactly(key_1, key_2, key_3)
+ end
+ end
+
+ context 'when `key_type` is not specified' do
+ it 'returns all types of keys' do
+ expect(subject).to contain_exactly(key_1, key_2, key_3, deploy_key)
+ end
+ end
+ end
+
+ context 'fingerprint' do
+ context 'with invalid fingerprint' do
+ context 'with invalid MD5 fingerprint' do
+ before do
+ params[:fingerprint] = '11:11:11:11'
+ end
+
+ it 'raises InvalidFingerprint' do
+ expect { subject }.to raise_error(KeysFinder::InvalidFingerprint)
+ end
+ end
+
+ context 'with invalid SHA fingerprint' do
+ before do
+ params[:fingerprint] = 'nUhzNyftwAAKs7HufskYTte2g'
+ end
+
+ it 'raises InvalidFingerprint' do
+ expect { subject }.to raise_error(KeysFinder::InvalidFingerprint)
+ end
+ end
+ end
+
+ context 'with valid fingerprints' do
+ context 'with valid MD5 params' do
+ context 'with an existent fingerprint' do
+ before do
+ params[:fingerprint] = 'ba:81:59:68:d7:6c:cd:02:02:bf:6a:9b:55:4e:af:d1'
+ end
+
+ it 'returns the key' do
+ expect(subject).to eq(key_1)
+ expect(subject.user).to eq(user)
+ end
+ end
+
+ context 'with a non-existent fingerprint' do
+ before do
+ params[:fingerprint] = 'bb:81:59:68:d7:6c:cd:02:02:bf:6a:9b:55:4e:af:d2'
+ end
+
+ it 'returns nil' do
+ expect(subject).to be_nil
+ end
+ end
+ end
+
+ context 'with valid SHA256 params' do
+ context 'with an existent fingerprint' do
+ before do
+ params[:fingerprint] = 'SHA256:nUhzNyftwADy8AH3wFY31tAKs7HufskYTte2aXo/lCg'
+ end
+
+ it 'returns key' do
+ expect(subject).to eq(key_1)
+ expect(subject.user).to eq(user)
+ end
+ end
+
+ context 'with a non-existent fingerprint' do
+ before do
+ params[:fingerprint] = 'SHA256:xTjuFqftwADy8AH3wFY31tAKs7HufskYTte2aXi/mNp'
+ end
+
+ it 'returns nil' do
+ expect(subject).to be_nil
+ end
+ end
+ end
+ end
+ end
+
+ context 'user' do
+ context 'without user' do
+ it 'contains ssh_keys of all users in the system' do
+ expect(subject).to contain_exactly(key_1, key_2, key_3)
+ end
+ end
+
+ context 'with user' do
+ before do
+ params[:user] = user
+ end
+
+ it 'contains ssh_keys of only the specified users' do
+ expect(subject).to contain_exactly(key_1, key_2)
+ end
+ end
+ end
+
+ context 'sort order' do
+ it 'sorts in last_used_at_desc order' do
+ expect(subject).to eq([key_3, key_1, key_2])
+ end
+ end
+ end
+end
diff --git a/spec/finders/members_finder_spec.rb b/spec/finders/members_finder_spec.rb
index f9b8fee6f2d..2bc37606a25 100644
--- a/spec/finders/members_finder_spec.rb
+++ b/spec/finders/members_finder_spec.rb
@@ -22,22 +22,64 @@ describe MembersFinder, '#execute' do
expect(result).to contain_exactly(member1, member2, member3)
end
+ it 'includes only non-invite members if user do not have amdin permissions on project' do
+ create(:project_member, :invited, project: project, invite_email: create(:user).email)
+ member1 = project.add_maintainer(user1)
+ member2 = project.add_developer(user2)
+
+ result = described_class.new(project, user2).execute(include_relations: [:direct])
+
+ expect(result).to contain_exactly(member1, member2)
+ end
+
+ it 'includes invited members if user have admin permissions on project' do
+ member_invite = create(:project_member, :invited, project: project, invite_email: create(:user).email)
+ member1 = project.add_maintainer(user1)
+ member2 = project.add_maintainer(user2)
+
+ result = described_class.new(project, user2).execute(include_relations: [:direct])
+
+ expect(result).to contain_exactly(member1, member2, member_invite)
+ end
+
it 'includes nested group members if asked', :nested_groups do
nested_group.request_access(user1)
member1 = group.add_maintainer(user2)
member2 = nested_group.add_maintainer(user3)
member3 = project.add_maintainer(user4)
- result = described_class.new(project, user2).execute(include_descendants: true)
+ result = described_class.new(project, user2).execute(include_relations: [:direct, :descendants])
expect(result).to contain_exactly(member1, member2, member3)
end
+ it 'returns only members of project if asked' do
+ nested_group.request_access(user1)
+ group.add_maintainer(user2)
+ nested_group.add_maintainer(user3)
+ member4 = project.add_maintainer(user4)
+
+ result = described_class.new(project, user2).execute(include_relations: [:direct])
+
+ expect(result).to contain_exactly(member4)
+ end
+
+ it 'returns only inherited members of project if asked' do
+ nested_group.request_access(user1)
+ member2 = group.add_maintainer(user2)
+ member3 = nested_group.add_maintainer(user3)
+ project.add_maintainer(user4)
+
+ result = described_class.new(project, user2).execute(include_relations: [:inherited])
+
+ expect(result).to contain_exactly(member2, member3)
+ end
+
it 'returns the members.access_level when the user is invited', :nested_groups do
member_invite = create(:project_member, :invited, project: project, invite_email: create(:user).email)
member1 = group.add_maintainer(user2)
- result = described_class.new(project, user2).execute(include_descendants: true)
+ result = described_class.new(project, user2).execute(include_relations: [:direct, :descendants])
expect(result).to contain_exactly(member1, member_invite)
expect(result.last.access_level).to eq(member_invite.access_level)
@@ -48,14 +90,14 @@ describe MembersFinder, '#execute' do
group.add_developer(user1)
nested_group.add_reporter(user1)
- result = described_class.new(project, user1).execute(include_descendants: true)
+ result = described_class.new(project, user1).execute(include_relations: [:direct, :descendants])
expect(result).to contain_exactly(member1)
expect(result.first.access_level).to eq(Gitlab::Access::DEVELOPER)
end
context 'when include_invited_groups_members == true' do
- subject { described_class.new(project, user2).execute(include_invited_groups_members: true) }
+ subject { described_class.new(project, user2).execute(include_relations: [:inherited, :direct, :invited_groups_members]) }
set(:linked_group) { create(:group, :public) }
set(:nested_linked_group) { create(:group, parent: linked_group) }
diff --git a/spec/finders/merge_request_target_project_finder_spec.rb b/spec/finders/merge_request_target_project_finder_spec.rb
index 1d78b7ba4e3..4d2e4c5318c 100644
--- a/spec/finders/merge_request_target_project_finder_spec.rb
+++ b/spec/finders/merge_request_target_project_finder_spec.rb
@@ -6,6 +6,7 @@ describe MergeRequestTargetProjectFinder do
include ProjectForksHelper
let(:user) { create(:user) }
+
subject(:finder) { described_class.new(current_user: user, source_project: forked_project) }
shared_examples 'finding related projects' do
@@ -27,6 +28,22 @@ describe MergeRequestTargetProjectFinder do
expect(finder.execute).to contain_exactly(other_fork, forked_project)
end
+
+ it 'does not include routes by default' do
+ row = finder.execute.first
+
+ expect(row.association(:route).loaded?).to be_falsey
+ expect(row.association(:namespace).loaded?).to be_falsey
+ expect(row.namespace.association(:route).loaded?).to be_falsey
+ end
+
+ it 'includes routes when requested' do
+ row = finder.execute(include_routes: true).first
+
+ expect(row.association(:route).loaded?).to be_truthy
+ expect(row.association(:namespace).loaded?).to be_truthy
+ expect(row.namespace.association(:route).loaded?).to be_truthy
+ end
end
context 'public projects' do
diff --git a/spec/finders/personal_access_tokens_finder_spec.rb b/spec/finders/personal_access_tokens_finder_spec.rb
index a44daf585ba..ce8ef80bb99 100644
--- a/spec/finders/personal_access_tokens_finder_spec.rb
+++ b/spec/finders/personal_access_tokens_finder_spec.rb
@@ -26,6 +26,16 @@ describe PersonalAccessTokensFinder do
revoked_impersonation_token, expired_impersonation_token)
end
+ describe 'with sort order' do
+ before do
+ params[:sort] = 'id_asc'
+ end
+
+ it 'sorts records as per the specified sort order' do
+ expect(subject).to match_array(PersonalAccessToken.all.order(id: :asc))
+ end
+ end
+
describe 'without impersonation' do
before do
params[:impersonation] = false
diff --git a/spec/finders/pipelines_finder_spec.rb b/spec/finders/pipelines_finder_spec.rb
index 05d13a76e0e..c8a4ea799c3 100644
--- a/spec/finders/pipelines_finder_spec.rb
+++ b/spec/finders/pipelines_finder_spec.rb
@@ -6,6 +6,7 @@ describe PipelinesFinder do
let(:project) { create(:project, :public, :repository) }
let(:current_user) { nil }
let(:params) { {} }
+
subject { described_class.new(project, current_user, params).execute }
describe "#execute" do
@@ -170,41 +171,14 @@ describe PipelinesFinder do
end
end
- context 'when order_by and sort are specified' do
- context 'when order_by user_id' do
- let(:params) { { order_by: 'user_id', sort: 'asc' } }
- let(:users) { Array.new(2) { create(:user, developer_projects: [project]) } }
- let!(:pipelines) { users.map { |user| create(:ci_pipeline, project: project, user: user) } }
-
- it 'sorts as user_id: :asc' do
- is_expected.to match_array(pipelines)
- end
-
- context 'when sort is invalid' do
- let(:params) { { order_by: 'user_id', sort: 'invalid_sort' } }
-
- it 'sorts as user_id: :desc' do
- is_expected.to eq(pipelines.sort_by { |p| -p.user.id })
- end
- end
- end
-
- context 'when order_by is invalid' do
- let(:params) { { order_by: 'invalid_column', sort: 'asc' } }
- let!(:pipelines) { create_list(:ci_pipeline, 2, project: project) }
+ context 'when updated_at filters are specified' do
+ let(:params) { { updated_before: 1.day.ago, updated_after: 3.days.ago } }
+ let!(:pipeline1) { create(:ci_pipeline, project: project, updated_at: 2.days.ago) }
+ let!(:pipeline2) { create(:ci_pipeline, project: project, updated_at: 4.days.ago) }
+ let!(:pipeline3) { create(:ci_pipeline, project: project, updated_at: 1.hour.ago) }
- it 'sorts as id: :asc' do
- is_expected.to eq(pipelines.sort_by { |p| p.id })
- end
- end
-
- context 'when both are nil' do
- let(:params) { { order_by: nil, sort: nil } }
- let!(:pipelines) { create_list(:ci_pipeline, 2, project: project) }
-
- it 'sorts as id: :desc' do
- is_expected.to eq(pipelines.sort_by { |p| -p.id })
- end
+ it 'returns deployments with matched updated_at' do
+ is_expected.to match_array([pipeline1])
end
end
@@ -249,5 +223,36 @@ describe PipelinesFinder do
end
end
end
+
+ describe 'ordering' do
+ using RSpec::Parameterized::TableSyntax
+
+ let(:params) { { order_by: order_by, sort: sort } }
+
+ let!(:pipeline_1) { create(:ci_pipeline, :scheduled, project: project, iid: 11, ref: 'master', created_at: Time.now, updated_at: Time.now, user: create(:user)) }
+ let!(:pipeline_2) { create(:ci_pipeline, :created, project: project, iid: 12, ref: 'feature', created_at: 1.day.ago, updated_at: 2.hours.ago, user: create(:user)) }
+ let!(:pipeline_3) { create(:ci_pipeline, :success, project: project, iid: 8, ref: 'patch', created_at: 2.days.ago, updated_at: 1.hour.ago, user: create(:user)) }
+
+ where(:order_by, :sort, :ordered_pipelines) do
+ 'id' | 'asc' | [:pipeline_1, :pipeline_2, :pipeline_3]
+ 'id' | 'desc' | [:pipeline_3, :pipeline_2, :pipeline_1]
+ 'ref' | 'asc' | [:pipeline_2, :pipeline_1, :pipeline_3]
+ 'ref' | 'desc' | [:pipeline_3, :pipeline_1, :pipeline_2]
+ 'status' | 'asc' | [:pipeline_2, :pipeline_1, :pipeline_3]
+ 'status' | 'desc' | [:pipeline_3, :pipeline_1, :pipeline_2]
+ 'updated_at' | 'asc' | [:pipeline_2, :pipeline_3, :pipeline_1]
+ 'updated_at' | 'desc' | [:pipeline_1, :pipeline_3, :pipeline_2]
+ 'user_id' | 'asc' | [:pipeline_1, :pipeline_2, :pipeline_3]
+ 'user_id' | 'desc' | [:pipeline_3, :pipeline_2, :pipeline_1]
+ 'invalid' | 'asc' | [:pipeline_1, :pipeline_2, :pipeline_3]
+ 'id' | 'err' | [:pipeline_3, :pipeline_2, :pipeline_1]
+ end
+
+ with_them do
+ it 'returns the pipelines ordered' do
+ expect(subject).to eq(ordered_pipelines.map { |name| public_send(name) })
+ end
+ end
+ end
end
end
diff --git a/spec/finders/projects_finder_spec.rb b/spec/finders/projects_finder_spec.rb
index a9344cd593a..bf97e3cf7db 100644
--- a/spec/finders/projects_finder_spec.rb
+++ b/spec/finders/projects_finder_spec.rb
@@ -181,6 +181,7 @@ describe ProjectsFinder, :do_not_mock_admin_mode do
describe 'filter by non_public' do
let(:params) { { non_public: true } }
+
before do
private_project.add_developer(current_user)
end
@@ -190,6 +191,7 @@ describe ProjectsFinder, :do_not_mock_admin_mode do
describe 'filter by starred' do
let(:params) { { starred: true } }
+
before do
current_user.toggle_star(public_project)
end
diff --git a/spec/finders/snippets_finder_spec.rb b/spec/finders/snippets_finder_spec.rb
index bcb762664f7..8f83cb77709 100644
--- a/spec/finders/snippets_finder_spec.rb
+++ b/spec/finders/snippets_finder_spec.rb
@@ -60,10 +60,20 @@ describe SnippetsFinder do
end
context 'filter by author' do
- it 'returns all public and internal snippets' do
- snippets = described_class.new(create(:user), author: user).execute
+ context 'when the author is a User object' do
+ it 'returns all public and internal snippets' do
+ snippets = described_class.new(create(:user), author: user).execute
- expect(snippets).to contain_exactly(internal_personal_snippet, public_personal_snippet)
+ expect(snippets).to contain_exactly(internal_personal_snippet, public_personal_snippet)
+ end
+ end
+
+ context 'when the author is the User id' do
+ it 'returns all public and internal snippets' do
+ snippets = described_class.new(create(:user), author: user.id).execute
+
+ expect(snippets).to contain_exactly(internal_personal_snippet, public_personal_snippet)
+ end
end
it 'returns internal snippets' do
@@ -101,13 +111,33 @@ describe SnippetsFinder do
expect(snippets).to contain_exactly(private_personal_snippet, internal_personal_snippet, public_personal_snippet)
end
+
+ context 'when author is not valid' do
+ it 'returns quickly' do
+ finder = described_class.new(admin, author: 1234)
+
+ expect(finder).not_to receive(:init_collection)
+ expect(Snippet).to receive(:none).and_call_original
+ expect(finder.execute).to be_empty
+ end
+ end
end
- context 'project snippets' do
- it 'returns public personal and project snippets for unauthorized user' do
- snippets = described_class.new(nil, project: project).execute
+ context 'filter by project' do
+ context 'when project is a Project object' do
+ it 'returns public personal and project snippets for unauthorized user' do
+ snippets = described_class.new(nil, project: project).execute
- expect(snippets).to contain_exactly(public_project_snippet)
+ expect(snippets).to contain_exactly(public_project_snippet)
+ end
+ end
+
+ context 'when project is a Project id' do
+ it 'returns public personal and project snippets for unauthorized user' do
+ snippets = described_class.new(nil, project: project.id).execute
+
+ expect(snippets).to contain_exactly(public_project_snippet)
+ end
end
it 'returns public and internal snippets for non project members' do
@@ -175,6 +205,49 @@ describe SnippetsFinder do
)
end
end
+
+ context 'when project is not valid' do
+ it 'returns quickly' do
+ finder = described_class.new(admin, project: 1234)
+
+ expect(finder).not_to receive(:init_collection)
+ expect(Snippet).to receive(:none).and_call_original
+ expect(finder.execute).to be_empty
+ end
+ end
+ end
+
+ context 'filter by snippet type' do
+ context 'when filtering by only_personal snippet' do
+ it 'returns only personal snippet' do
+ snippets = described_class.new(admin, only_personal: true).execute
+
+ expect(snippets).to contain_exactly(private_personal_snippet,
+ internal_personal_snippet,
+ public_personal_snippet)
+ end
+ end
+
+ context 'when filtering by only_project snippet' do
+ it 'returns only project snippet' do
+ snippets = described_class.new(admin, only_project: true).execute
+
+ expect(snippets).to contain_exactly(private_project_snippet,
+ internal_project_snippet,
+ public_project_snippet)
+ end
+ end
+ end
+
+ context 'filtering by ids' do
+ it 'returns only personal snippet' do
+ snippets = described_class.new(
+ admin, ids: [private_personal_snippet.id,
+ internal_personal_snippet.id]
+ ).execute
+
+ expect(snippets).to contain_exactly(private_personal_snippet, internal_personal_snippet)
+ end
end
context 'explore snippets' do
diff --git a/spec/finders/tags_finder_spec.rb b/spec/finders/tags_finder_spec.rb
index 582d82bbf79..b9de2d29895 100644
--- a/spec/finders/tags_finder_spec.rb
+++ b/spec/finders/tags_finder_spec.rb
@@ -96,6 +96,7 @@ describe TagsFinder do
context 'filter and sort' do
let(:tags_to_compare) { %w[v1.0.0 v1.1.0] }
+
subject { described_class.new(repository, params).execute.select { |tag| tags_to_compare.include?(tag.name) } }
context 'when sort by updated_desc' do
diff --git a/spec/finders/user_finder_spec.rb b/spec/finders/user_finder_spec.rb
index c20d7850d68..b89b422aa2c 100644
--- a/spec/finders/user_finder_spec.rb
+++ b/spec/finders/user_finder_spec.rb
@@ -176,26 +176,4 @@ describe UserFinder do
end
end
end
-
- describe '#find_by_ssh_key_id' do
- let_it_be(:ssh_key) { create(:key, user: user) }
-
- it 'returns the user when passing the ssh key id' do
- found = described_class.new(ssh_key.id).find_by_ssh_key_id
-
- expect(found).to eq(user)
- end
-
- it 'returns the user when passing the ssh key id (string)' do
- found = described_class.new(ssh_key.id.to_s).find_by_ssh_key_id
-
- expect(found).to eq(user)
- end
-
- it 'returns nil when the id does not exist' do
- found = described_class.new(-1).find_by_ssh_key_id
-
- expect(found).to be_nil
- end
- end
end
diff --git a/spec/fixtures/api/schemas/entities/merge_request_noteable.json b/spec/fixtures/api/schemas/entities/merge_request_noteable.json
index d37f5b864d7..c0eb320e67f 100644
--- a/spec/fixtures/api/schemas/entities/merge_request_noteable.json
+++ b/spec/fixtures/api/schemas/entities/merge_request_noteable.json
@@ -1,6 +1,9 @@
{
"type": "object",
- "properties" : {
+ "required": ["id", "iid", "title", "description", "merge_params", "state", "source_branch", "target_branch",
+ "diff_head_sha", "create_note_path", "preview_note_path", "can_receive_suggestion", "create_issue_to_resolve_discussions_path",
+ "new_blob_path", "current_user", "is_project_archived"],
+ "properties": {
"id": { "type": "integer" },
"iid": { "type": "integer" },
"title": { "type": "string" },
@@ -26,7 +29,10 @@
"can_update": { "type": "boolean" }
},
"additionalProperties": false
- }
+ },
+ "is_project_archived": { "type": "boolean" },
+ "locked_discussion_docs_path": { "type": "string" },
+ "archived_project_docs_path": { "type": "string" }
},
"additionalProperties": false
}
diff --git a/spec/fixtures/api/schemas/entities/merge_request_poll_cached_widget.json b/spec/fixtures/api/schemas/entities/merge_request_poll_cached_widget.json
index e8959307767..b40b71d2cd6 100644
--- a/spec/fixtures/api/schemas/entities/merge_request_poll_cached_widget.json
+++ b/spec/fixtures/api/schemas/entities/merge_request_poll_cached_widget.json
@@ -26,6 +26,7 @@
"has_conflicts": { "type": "boolean" },
"can_be_merged": { "type": "boolean" },
"remove_source_branch": { "type": ["boolean", "null"] },
+ "diffs_path": { "type": "string" },
"source_branch_exists": { "type": "boolean" },
"branch_missing": { "type": "boolean" },
"commits_without_merge_commits": { "type": "array" },
diff --git a/spec/fixtures/api/schemas/environment.json b/spec/fixtures/api/schemas/environment.json
index e38b05ec008..321c495a575 100644
--- a/spec/fixtures/api/schemas/environment.json
+++ b/spec/fixtures/api/schemas/environment.json
@@ -24,9 +24,12 @@
"has_stop_action": { "type": "boolean" },
"environment_path": { "type": "string" },
"stop_path": { "type": "string" },
+ "cancel_auto_stop_path": { "type": "string" },
"folder_path": { "type": "string" },
+ "project_path": { "type": "string" },
"created_at": { "type": "string", "format": "date-time" },
"updated_at": { "type": "string", "format": "date-time" },
+ "auto_stop_at": { "type": "string", "format": "date-time" },
"can_stop": { "type": "boolean" },
"cluster_type": { "type": "types/nullable_string.json" },
"terminal_path": { "type": "types/nullable_string.json" },
diff --git a/spec/fixtures/api/schemas/error_tracking/error_detailed.json b/spec/fixtures/api/schemas/error_tracking/error_detailed.json
index 40d6773f0e6..2a1cd2c03e0 100644
--- a/spec/fixtures/api/schemas/error_tracking/error_detailed.json
+++ b/spec/fixtures/api/schemas/error_tracking/error_detailed.json
@@ -13,6 +13,7 @@
"short_id",
"status",
"frequency",
+ "gitlab_issue",
"first_release_last_commit",
"last_release_last_commit",
"first_release_short_version",
@@ -36,6 +37,7 @@
"short_id": { "type": "string"},
"status": { "type": "string"},
"frequency": { "type": "array"},
+ "gitlab_issue": { "type": ["string", "null"] },
"first_release_last_commit": { "type": ["string", "null"] },
"last_release_last_commit": { "type": ["string", "null"] },
"first_release_short_version": { "type": ["string", "null"] },
diff --git a/spec/fixtures/api/schemas/error_tracking/error_stack_trace.json b/spec/fixtures/api/schemas/error_tracking/error_stack_trace.json
index a684dd0496a..e2eeefcdd53 100644
--- a/spec/fixtures/api/schemas/error_tracking/error_stack_trace.json
+++ b/spec/fixtures/api/schemas/error_tracking/error_stack_trace.json
@@ -7,7 +7,7 @@
],
"properties": {
"issue_id": { "type": ["string", "integer"] },
- "stack_trace_entries": { "type": "object" },
+ "stack_trace_entries": { "type": "array" },
"date_received": { "type": "string" }
},
"additionalProperties": false
diff --git a/spec/fixtures/api/schemas/error_tracking/index.json b/spec/fixtures/api/schemas/error_tracking/index.json
index d3abc29ffa7..7a570641211 100644
--- a/spec/fixtures/api/schemas/error_tracking/index.json
+++ b/spec/fixtures/api/schemas/error_tracking/index.json
@@ -2,6 +2,7 @@
"type": "object",
"required": [
"external_url",
+ "pagination",
"errors"
],
"properties": {
@@ -9,6 +10,9 @@
"errors": {
"type": "array",
"items": { "$ref": "error.json" }
+ },
+ "pagination": {
+ "type": "object"
}
},
"additionalProperties": false
diff --git a/spec/fixtures/api/schemas/external_validation.json b/spec/fixtures/api/schemas/external_validation.json
new file mode 100644
index 00000000000..1bd00a2e6fc
--- /dev/null
+++ b/spec/fixtures/api/schemas/external_validation.json
@@ -0,0 +1,75 @@
+{
+ "type": "object",
+ "required" : [
+ "project",
+ "user",
+ "pipeline",
+ "builds"
+ ],
+ "properties" : {
+ "project": {
+ "type": "object",
+ "required": [
+ "id",
+ "path"
+ ],
+ "properties": {
+ "id": { "type": "integer" },
+ "path": { "type": "string" }
+ }
+ },
+ "user": {
+ "type": "object",
+ "required": [
+ "id",
+ "username",
+ "email"
+ ],
+ "properties": {
+ "id": { "type": "integer" },
+ "username": { "type": "string" },
+ "email": { "type": "string" }
+ }
+ },
+ "pipeline": {
+ "type": "object",
+ "required": [
+ "sha",
+ "ref",
+ "type"
+ ],
+ "properties": {
+ "sha": { "type": "string" },
+ "ref": { "type": "string" },
+ "type": { "type": "string" }
+ }
+ },
+ "builds": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "stage",
+ "image",
+ "services",
+ "script"
+ ],
+ "properties": {
+ "name": { "type": "string" },
+ "stage": { "type": "string" },
+ "image": { "type": ["string", "null"] },
+ "services": {
+ "type": ["array", "null"],
+ "items": { "type": "string" }
+ },
+ "script": {
+ "type": "array",
+ "items": { "type": "string" }
+ }
+ }
+ }
+ }
+ },
+ "additionalProperties": false
+}
diff --git a/spec/fixtures/api/schemas/list.json b/spec/fixtures/api/schemas/list.json
index 7603892e198..760dcb96252 100644
--- a/spec/fixtures/api/schemas/list.json
+++ b/spec/fixtures/api/schemas/list.json
@@ -36,7 +36,8 @@
},
"title": { "type": "string" },
"position": { "type": ["integer", "null"] },
- "max_issue_count": { "type": "integer" }
+ "max_issue_count": { "type": "integer" },
+ "max_issue_weight": { "type": "integer" }
},
"additionalProperties": true
}
diff --git a/spec/fixtures/api/schemas/public_api/v4/board.json b/spec/fixtures/api/schemas/public_api/v4/board.json
index 8dc3999baa2..e4933ee0b93 100644
--- a/spec/fixtures/api/schemas/public_api/v4/board.json
+++ b/spec/fixtures/api/schemas/public_api/v4/board.json
@@ -77,7 +77,8 @@
}
},
"position": { "type": ["integer", "null"] },
- "max_issue_count": { "type": "integer" }
+ "max_issue_count": { "type": "integer" },
+ "max_issue_weight": { "type": "integer" }
},
"additionalProperties": false
}
diff --git a/spec/fixtures/api/schemas/public_api/v4/release.json b/spec/fixtures/api/schemas/public_api/v4/release.json
index c83eefeb7ed..46703c69dc0 100644
--- a/spec/fixtures/api/schemas/public_api/v4/release.json
+++ b/spec/fixtures/api/schemas/public_api/v4/release.json
@@ -38,7 +38,7 @@
"additionalProperties": false
},
"_links": {
- "required": ["merge_requests_url", "issues_url", "edit_url"],
+ "required": ["merge_requests_url", "issues_url"],
"properties": {
"merge_requests_url": { "type": "string" },
"issues_url": { "type": "string" },
diff --git a/spec/fixtures/api/schemas/public_api/v4/release/release_for_guest.json b/spec/fixtures/api/schemas/public_api/v4/release/release_for_guest.json
index dd65a4c7cdb..bce74892059 100644
--- a/spec/fixtures/api/schemas/public_api/v4/release/release_for_guest.json
+++ b/spec/fixtures/api/schemas/public_api/v4/release/release_for_guest.json
@@ -26,11 +26,10 @@
"additionalProperties": false
},
"_links": {
- "required": ["merge_requests_url", "issues_url", "edit_url"],
+ "required": ["merge_requests_url", "issues_url"],
"properties": {
"merge_requests_url": { "type": "string" },
- "issues_url": { "type": "string" },
- "edit_url": { "type": "string"}
+ "issues_url": { "type": "string" }
}
}
},
diff --git a/spec/fixtures/api/schemas/remote_mirror.json b/spec/fixtures/api/schemas/remote_mirror.json
new file mode 100644
index 00000000000..416b0f080d9
--- /dev/null
+++ b/spec/fixtures/api/schemas/remote_mirror.json
@@ -0,0 +1,26 @@
+{
+ "type": "object",
+ "required": [
+ "id",
+ "enabled",
+ "url",
+ "update_status",
+ "last_update_at",
+ "last_update_started_at",
+ "last_successful_update_at",
+ "last_error",
+ "only_protected_branches"
+ ],
+ "properties": {
+ "id": { "type": "integer" },
+ "enabled": { "type": "boolean" },
+ "url": { "type": "string" },
+ "update_status": { "type": "string" },
+ "last_update_at": { "type": ["string", "null"] },
+ "last_update_started_at": { "type": ["string", "null"] },
+ "last_successful_update_at": { "type": ["string", "null"] },
+ "last_error": { "type": ["string", "null"] },
+ "only_protected_branches": { "type": "boolean" }
+ },
+ "additionalProperties": false
+}
diff --git a/spec/fixtures/api/schemas/remote_mirrors.json b/spec/fixtures/api/schemas/remote_mirrors.json
new file mode 100644
index 00000000000..3c4600c6caa
--- /dev/null
+++ b/spec/fixtures/api/schemas/remote_mirrors.json
@@ -0,0 +1,4 @@
+{
+ "type": "array",
+ "items": { "$ref": "remote_mirror.json" }
+}
diff --git a/spec/fixtures/container_registry/config_blob_helm.json b/spec/fixtures/container_registry/config_blob_helm.json
new file mode 100644
index 00000000000..c2fc68c2e8b
--- /dev/null
+++ b/spec/fixtures/container_registry/config_blob_helm.json
@@ -0,0 +1,8 @@
+{
+ "name": "mychart",
+ "version": "0.1.0",
+ "description": "A Helm chart for Kubernetes",
+ "apiVersion": "v2",
+ "appVersion": "1.16.0",
+ "type": "application"
+}
diff --git a/spec/fixtures/container_registry/tag_manifest_helm.json b/spec/fixtures/container_registry/tag_manifest_helm.json
new file mode 100644
index 00000000000..8097d9f3f7a
--- /dev/null
+++ b/spec/fixtures/container_registry/tag_manifest_helm.json
@@ -0,0 +1,15 @@
+{
+ "schemaVersion": 2,
+ "config": {
+ "mediaType": "application/vnd.cncf.helm.config.v1+json",
+ "digest": "sha256:65a07b841ece031e6d0ec5eb948eacb17aa6d7294cdeb01d5348e86242951487",
+ "size": 141
+ },
+ "layers": [
+ {
+ "mediaType": "application/tar+gzip",
+ "digest": "sha256:896935a875c8fe8f8b9b81e5862413de316f8da3d6d9a7e0f6f1e90f6204f551",
+ "size": 2801
+ }
+ ]
+}
diff --git a/spec/fixtures/git-cheat-sheet.pdf b/spec/fixtures/git-cheat-sheet.pdf
index da38c840fd3..5ef905c0889 100644
--- a/spec/fixtures/git-cheat-sheet.pdf
+++ b/spec/fixtures/git-cheat-sheet.pdf
@@ -1,130423 +1,3 @@
-%PDF-1.5 %âãÏÓ
-1 0 obj <</Metadata 2 0 R/OCProperties<</D<</ON[5 0 R]/Order 6 0 R/RBGroups[]>>/OCGs[5 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <</Length 52318/Subtype/XML/Type/Metadata>>stream
-<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c132 79.159284, 2016/04/19-13:13:40 ">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
- xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
- xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/"
- xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"
- xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
- xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/"
- xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
- <dc:format>application/pdf</dc:format>
- <dc:title>
- <rdf:Alt>
- <rdf:li xml:lang="x-default">Untitled-2</rdf:li>
- </rdf:Alt>
- </dc:title>
- <xmp:MetadataDate>2016-10-31T17:24:20Z</xmp:MetadataDate>
- <xmp:ModifyDate>2016-10-31T17:24:20Z</xmp:ModifyDate>
- <xmp:CreateDate>2016-10-31T17:24:20Z</xmp:CreateDate>
- <xmp:CreatorTool>Adobe Illustrator CC 2015.3 (Macintosh)</xmp:CreatorTool>
- <xmp:Thumbnails>
- <rdf:Alt>
- <rdf:li rdf:parseType="Resource">
- <xmpGImg:width>256</xmpGImg:width>
- <xmpGImg:height>92</xmpGImg:height>
- <xmpGImg:format>JPEG</xmpGImg:format>
- <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAXAEAAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8AgedEzdirsVdirsVdirsV&#xA;dirsVdirsVdirsVdir07/nHj/lPn/wCYGb/iceYmt+j4oL6XzUMXYq+aP+ch/wDlPk/5gYf+JyZt&#xA;9F9HxZB5jmWl2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kpr5b0qTU9RMMfAmONpeD9GpQUHv8Vc1H&#xA;berODTmQuyQLHT8U7PsnFCecce8RvSaab5Qnnu54AymgKVcfZB/arQ9Bml1XtF6ImIINgnz8vi7n&#xA;F2LDFxGZ4oyiRHvF9feFfSvy+F9ollqbah6P1u4a3ZBEHSPixTeQSCrkivAL0INd86o596p5M7FV&#xA;sPys1q9kISQRIxRIGljkQyNJbmdWC0P7v4Speu3U4y1ACsLYFWINKg02II+8ZerWKuxVug8cVb4j&#xA;FWuPviq6ib1Py/zpiq0ih9uxxVxBBoRQ+BxVxBHUUxV6b/zjx/ynz/8AMDN/xOPMTW/R8UF9L5qG&#xA;LsVfNH/OQ/8Aynyf8wMP/E5M2+i+j4sgxyXR/LqQS3q3gNm0PGJ6AsZKUCiP7XMbV+/Ocx6zXHIM&#xA;Rj6hKz/Vv+dy4e75eT088WjGI5R1jw150N658Silj5DeK3/3I3cUjLH9ZZ4wQrHj6nBVVuVPipVh&#xA;2zqbn3PMpJqSael9KunSPLZg/uZJQFcigrUDwO1e/gOmWRut1Qwwqu+Gm9MVbFO3H5HFW/TiqKyA&#xA;VPuaD6MValRUYBWDAiuxr/TFUXoTaYuqRHUwrWdJA3PnwDmNhEX9P4+Ik4luO9MjO62VP7688kPd&#xA;28NnbxparJKWndJxt9UjEPqDk7cPrRcuFq3Ed9q1gTrf8b/qVXSb8u5JJU4CGNjCDKwnPwCOL1vR&#xA;ULIQ/IScQ7Ur+0Bgqaof655Jk1tK2yR6SIpmoROHDyOzRo/FizGOOiihAJ/aH2ganXmqOt7r8ufR&#xA;taQRq4a8+si4NySeQk+q0McTjiDwr3G2zb5Eif3KxXXbnT7i9R7CGOCBYIFZYg4Uy+kpmPxkn+9L&#xA;U9sugCBuqBillhkWWJzHIhqjqSCCO4IxnASBjIWCmMiDY5ppfeaNVu7YwO4jEn+9Lxji0ppT46dq&#xA;dhtmr0vYunw5OOIs9L34fd+tzs/aWXLAQJ2H2pro3lbQrvSrW9utTSKSZ40lhEkauvqXQgPwsP2I&#xA;/wB6T4H9nqdhLIQaAcBrRvLGg6jbwTT6ktiJipZ5ZIyqcroQ+kyr+85rF+85cOO4rxG+MshHS1Vp&#xA;PKXl+KJ5W1NX4N8MKSoGaNYebSVZBT94yIFAP7XxGmDxJdyrbXyhoM2lWN3LrEdvPccfVgd0J3SR&#xA;zxC8uNCij4jT3DfDhOQ2RSqWq+W9CsbKSZLwXEot5ZUSOYH94l2LdEIaFK1jb1dt6A7AUOMZknl+&#xA;KVi1R4ZcrYYeH+f34q7kPD9eKt81I3Ar47n+OKr1liAoyBh/LuPxrirvrPx8zGvI03q1dvA1wUrc&#xA;0sTpsDz2oTXYb16s3iMVej/848f8p8//ADAzf8TjzF1v0fFBfS+ahi7FUDe6BoV/N699p1rdTUC+&#xA;rPDHI3EdByZSab5ITkORV4ALzzoQCLbyoQQSDXStwFVift/yup+RGbDxMX86X2skXpcXn6/umig0&#xA;3y5dLbsgvFtU0uWSNWJG6h9ieLU5eGJyYv50vtVlsOg6iLI+tocRvuDcSlpooiL78agyFuPSuVHJ&#xA;G+e3vktqiaFdFk56CiqVPOltohIaq8QPiFRx5V6dsHiD+d/ulSvzRZ6vpuiRT22m6Ja3El9JHG2p&#xA;RaZCWtvTT0wfi9LnzLbK3hkoZIXuTy81tKtJ0/8AMK9QXP6H0G4sXST0prSHTJAzqCFAblx48xRj&#xA;23yZyYukj9qspm0C4ED+joqtcUPp87PRFStDTlSVj1plQyDv+2S26bQbmi+joaE8zy52miD93xNK&#xA;Uc/Fyp9GIyDv+2S2irLy8X1G1Q6HCbdnT12uLTSFXjy+PaB3k+z0p3wHIK5/bJbYnN5Y/N/1X9Py&#xA;3ofp8jw/0aw+zXbvl/iYv50vtW0+g8seZKf6R5cgr6nWO10enp8W7FvtcuH0V9sqOSP87/dLarB5&#xA;X1v1AJ/L0fpfHVo7TRuX2/g2L/ydd+uJyR7/ALZLaAnXS47n0zb2USRLItwkkXl/1FlHHiKeuKAf&#xA;Fyrv0yQvz/2Sst8peV7Cexnl1bRbBg8wawkNrZcntzDGQx+r+pHvKXpRvs0yjLkIOxP2oJSb8wfJ&#xA;2m6To0Nz5X8oabqOoPcrHLBLbc1EJRyz0RojUMqjr3yeHKZH1SICh5/9X88f+W20f/pCf/sozKuH&#xA;88/P9iUXpun+Z57gJf8AkHSbODkoaVNNkmIUmjEKLpKkeFcjKUekz8/2KnMOgIyVl8s2MblmHEaA&#xA;7AKCeLE/pAdcgZ/0v9l+xWpNAYep6XlfT5WUViU6HJGHNDRSxvm4VNBWh648f9I/6b9ipf5m0vzH&#xA;Za9e2ukfl9pN1pkMpW1uHs2ZnTsSVmQfhkscomIJmb96pZ9X88f+W20f/pCf/soydw/nn5/sVOLL&#xA;RtSktfVvPJ+mW8/EEW8ejyy/ETQjkbyMbda5WZi9pH/TfsVEjQjzUf4WsQhZgzfoF6hQGIan6Q3q&#xA;QopXv7YOP+l/sv2Kp65pq6b5fuL6LyppE12t1FDb/WbA2avG0cjyH03uZCSvAb8/HbGMwTRka9/7&#xA;FYedf1QR+ofJnloR/wA/pLx6V6/WvAZbcP55+f7FRFnq2oTTIs/lDy5BFKsnpyi39QF0X4VAF1Ug&#xA;yFVYj7Neh6YCYfzz8/2Knkdz5WeBJ/qOh+jKwjhlGkgo8oJDorfpKhKkEZXx/wBI/wCm/Yqx5dJS&#xA;ykuG0fQqqjtHTSz6TFR8I9Rr9aVagJ47YeMfzj/pv2K9l0ryf5W0i6N3pelW1nclShmhjVG4mhIq&#xA;O22YUsspCiWKcZWrsVdirwjXNAul1e5FzaTiV5nLx2K601rG7woQ8DwWUyceZoQrUH30KUvt7bVb&#xA;azeW2h1WG+mZPVAi8wJVeG5Yrp55EMx/aoN+Na7lUfI2rvqKpO+txaYgUO8K+YGmKghSy8bFQZK7&#xA;0O3vT4iFTuKPQlLK195sJmcKeVrrJ4ANUUK2tAO1a1od/EKGQ39xd2nkvT7jTrA6vbpIPUj1a2vZ&#xA;rwKX2ZoEt5Lgup/mj6AGvfFUpg86+YYI0jh0CKGECfkiaTrqqJOTNGQFsPsvyVmNP5u+KoOT86NP&#xA;0rUI7fzK+n6cio0t4rWmqxzJGwb0nEc9pHszLT4qe2NKiX/5yD/KgMETVIpJCQBGtpdBtzQfaiX5&#xA;40qF8i+dPy71XzvFb6J5l1DUNRufVeOwne7Nsw4NI3FJ4lVeAU8dx9OKo/zBpVxZeckuW1PldSM1&#xA;/FblY4UEUbqqK0srxxBq+FSaE065mQlcOXkyZnovm6y1O8hsDE0F/La/XPT5Ryx8FZEcLLEzKSrS&#xA;LsaHvTMaWIgWilC/8+aDa313YSB5JbMhLgfulWrKG4r6rxl9m/ZB8MlHDIgFaebaF5D1DW3m+oam&#xA;sENtN9Xu0kDerFQ81UBB6cv7p1NQ4FajsDmVLMI8wm3r2gaSNI0e2071jcG3UhpmHEuxYsxpU03P&#xA;jmDOXEbYoPzdprahpscK6PY63SUMbTUnEcK/A6+oCYbj4qtx+z9kt/qmKvIPMcOm3bahbw+ULTT5&#xA;7W4YTT2GnzXAuHWQq/rPcaDdoVX7YeIPU0+LcVKpK+nB40ki0+QvGIx8OlAgFCQFc/4UYoEptsKe&#xA;2Kr7eKe0vFubGykVopne0uzpwhuatUNKgj8rfCSo5Eqx8K4VZr5Z1jUZL60j1XV9aju3uljWyk04&#xA;m2kBI4pJPJomnsgb9rcUH7XfAqP88eRNQ1vU5JbXQtIQ81Mt88tn61ynKtJhdaVqFOA3AU/tHfFU&#xA;j0u81yyefS9V1DWdNWz4wWn6OsEvYeK/DxEi6BBAoQBQOBdd+u2Ko+TV0NJh5i8zrD8VVXQq+4rX&#xA;RyQBy/V71VWpqqLGS3mbzS2+/LQ0DCgpTiNGB3+WKqPmvTYfMXkE2v6Uv7tl1OKRJtSs47SfkkLM&#xA;I442OgLQjdX5HfxA+FVhWh/lj5ZgnuJfMGk3moUVPQNm9nZRKIgrSQy+tq96snIso/Z35bnqDap/&#xA;pn5d/k/canwm0e905VgDstzqFm1uWJEKqyw3U5aQ8OVaUruTypgtUw/5UV+S6IFKXIWImgbUHIUk&#xA;VOxelaLX/M42qvB+Sf5PSTJbxxSzzN6hWL62HY8l9MlVrUce3HoaeAxtL2HAh2KuxV2KvHdd0nyH&#xA;Jcwg6Je+X+cUipBFpejUcJGtTS6guX+MBYuoX4QNhuSqNMUsnl9X0DzfdW10I1FpaXiaMsMVCP3U&#xA;gt7NuIRPh4r7YqkjW35ncyq+eLLlRgB/oH2qgrVfqJP2evxYpWJb/mkIiW882BdWpJtY0ANK7/Ut&#xA;iN6AjwxVl8cepN5O01dYudT1TUBcP6l55ecKXImNOZhW1T01X4DVex3J3xQhr63c6XCtvD5u9ZQ4&#xA;i/enmH9STi059SrKp9zVOPXFUiu/J35lW0T3VxrqQASIfXmvtSVFBYqF3dVHIuB89sbSm4178wVY&#xA;iXVPLqgDl/eXNQBQt1cdjWvyxVNPLer+cJ9es7fUL3RpbRg5nis5Z2uDRW4mNXJWlePKvauKGVar&#xA;omiaqySXtr6s0SlY5CsqkAnoSnAkV7VycZyjyVj2gaBdWDJepCtprJgmgiSVZJIQryIxDBZJOnpI&#xA;w4v/ADA9qWZJg+5JR19odnqFnKKSQ6veRuHvIVmiSOZAIzMIeciVRqEKeXIjc98iJke5VtnbapoC&#xA;tMFjvLaWQPdRWVlcfWGPEIGMk13KTxoo+ydh26gkiX9v7FT3SdT/AEjbNP8AVZ7Ti5T07lPTc0AP&#xA;IDfbfKpRooY/+Zmt+U9H0GC58z6c2p6e90sUcCRxykStFIQ3GRoxTgrKd++Tw4jM0FDzN/zI/Ih2&#xA;kZvJ7kzNzm/0GzAdg3Lk49ajGvc5kfkZ94TSIPmT8pdcsmj0jy+ml3Z4Rw6g1npCtEIHSQKFuZeF&#xA;CKBaj3G67RlpJjr9/wCpaVY9Rh0vT47bT9cnsrOKqR29pD5eVUPEyMRGs3EcjVthux8TkRpyfwf1&#xA;JpGReaTZ3Md5c69e3NpAY5ZrbhobLKnQopgn9T4qfskkVxGml+L/AFLSH/M/ynLHql5rM+n2slvd&#xA;TwrbN6FpcuXCsaFF0PU7hd058ndviOxGwzHDFh1zYaK9k1xHatNfMT+kA+kQbAtsoY+Wecpb4SQU&#xA;X59yVZpaazo8EEdpZeZ9fggtkWKGCPRYUiWNSI1VFGjqvFduPHantgVVHmLT/TD/AOLPMRUP9oaP&#xA;HU96UGj9Nuo+/FUJ5uuvLmo/l4zapLrvmOxTVYwD9USzvEcQMQvpmytVaLqORj3LU5dsQrzaO08k&#xA;RwzKfKHmQxxyEyoTBJIXBJDhfqxqaAitenjhSmehp+X+nXrahB5K13UWgVDNYX8EE0Mvq8Y6uhgo&#xA;xRpCakj4h74qn8nn78v1VWl/KUlpfiqNMt3AYV5F6Q8tj3oa9saQibX8yPKVleLcW35VywXFrIzw&#xA;3Ftp8QeOQBWd1cQrxJkk4hgd9ySMFK95wK7FXYq7FXz/AOYvMHlvVLyzWw8yPrvoBnYajCEkVUQc&#xA;lAGh33OPghZt13+LwIyfyuQdPu/Wmk5S5DFZG8oaU8n2kItNVGw+JyG/Qrd9/p9t4eDLy+Y/Wrf1&#xA;qMstfJulcAfSX/RtVJ5V3Qf7gx49MfBl5fMfrVtpQrIqeS9L/lCG11UGnGhVf9wZ6Db5D7h4R8vm&#xA;P1qiPMHmLXrDyhp50C90zyrcRXcsF9bTlLWBSQrokY1G1s2qwkVzSIfa6nrlmKMIn1/j5KxRvPP5&#xA;oojSP550FUVzGzm70oAOOqk8Ovtl96fu+9dkwtPOOp3tnPaeZPNmmahGq1ubeG+0L0gUk6yJNbzb&#xA;K3HqNmyuRxdB9/612RGm6ZZa2Gm0b6lqccLenPJbP5duOKcCY0LR2LcTyNd+1cF4/L/ZfrXZkPl/&#xA;yvqdnrVhdRWaQyxSr605j0gUjIKOFNtZwzAmM8fhcfdtkZHHR/b+tXouqTXUOnXEtqjSXCIWiRQG&#xA;YkeCkivyyiIF7oYNbz+cdfkbSdYtJ7Ozm3W9jg9MxslXWQMz/CwZRTr92ZE4wAsHdKLk8p+QNNu4&#xA;YLq/itbmPi8UJmt7Sb4vhVleFYZxUr1VhWmR8Schy+9bS6P8wZLU3t39QDTrK0dta3GrRhpI6rQ+&#xA;mxaKJh4PxYd9ya2HBdC/sTTP9Jvv0hpVnf8ApmH63BFP6RIYp6qB+PJdjStKjMWQokMWO/mbqdjp&#xA;nlsXt7PfW8Mc6qG01bZpmaRHQLS7DRU+Ku/cDAFeAj81vMckdVttRSd3L0W+0srQ0PFVbTHoqsvw&#xA;+zbk5KyqY6R+c/mGCWV20CbUfUarQXd9ZKIIkrvG0Nlb9eVKtyrQbim7Z71R5/PzUeE1fJ0cckXV&#xA;WvomHwmjD4IWJY0Ow6dyemNnvSm/lD839Q1vzDpul3PleO1iv5vSN2LqNuA6giP0uTHf8Ovg2e9W&#xA;U+dNM8r3GqPING1FNTgnhnn1C001roTBHLBAzKyN8W5I3GRQwXQdE/NPSWvNP0WWz0vT4bkusl7C&#xA;1sk4BK8t7DhydI1rxY7DbClP/wBG/ngyFk1XSynMEN6g6cR8Ff0fTf7Xjv4YNlbfSPzxiKt+l9OY&#xA;KfjErKoNAxP2dPBFVo3Xanhjsqtr2n+bY/y7Ca/qmkfpVdQ9Vb7UhavZiEQuKKZ7WKMPTlv6daV+&#xA;Km2W4ZRErkrA49O1oSGFPMHk0yqfTMfDSSwJ+HjT6tWvXbM38xj/AKXzP602zzy55W8/aRG7R3Vn&#xA;aXEyqsx06LTbVWKuxqSLBiw4EUB6Gu++1M8uOX7b/WhkCQee+fx6vdFO4Eumg0p4/o898r4sfd9/&#xA;61Up7f8AMU2kwt9YmW7Ik9B5JNOaMGp9LmosFZhSnKjD2xEsd8vv/Wr0PMZDsVdirsVeJalpug6b&#xA;DBc2N75av7l5PTS2sLO0juJAyIf3TXWp28dQGqfiPwuPh75d48+8ptT0fzNpduZZNW02ymjkI9EW&#xA;zaNZiMoP3jOz61c+pVZEHw0409xg8WXetskhntJ4Uli8kXcluwEsMqSaOyMGHIMhXUTWtdjg8WXe&#xA;tuX6uCgHkG9XckfFo9AevbUcPiy71tMNasJpPKCJY6HdwPPK01xBa366dcWzBOHqyy2twFk4rvwE&#xA;pBoPDaBkTzQ8Lk1a9IedPO96xqwEQ1lVBFD8dPru2/QbHptilM9NudNuYrgah+ZV3pjRSA25bVZZ&#xA;C8KrTkOF2djt9qreO++KExaPRFjEkn5szhCjK4N5cqXG7niBdhg3E7cN6Upilk35c2umR+bbR7b8&#xA;wJ/MDgNx0uS7mmVxJCzgsrzyqSq/EPh7eOAoZ9qXnDUodSaztNFupoNlGomC5MaMdiWjEIZgp3+A&#xA;/EOh8LY4gRdhNIGDytrlk1uLGeadBamGedp47P1TJGAeSi3lmSjKGDci6+P2uUjkBG/P8ea2g7Hz&#xA;Jrk5sbWGMypDfCGaLjLPzj9c27GS5kYl/S5eqaKPsUqBXJGEefkqdaz5e1mfy+tnatbi9W7+t/u0&#xA;9KLkZjcc+LGQFxN+8B/m3675XCUeLfkqd6HBqEGlW0Woyepeqv79+RcFq/zHK5kE7ckJN+YOuWOj&#xA;aLDdXusXOiRPcLEt3aQxzuzNHIeBWWKdaUUtXj1A7VBljxmZoK8gvvzY1MXc6WXmmV7IyMYZpZIk&#xA;m9PfiPTGhui9ehdv9brW/wDJ5O5NIjSfzp1a2Mhnv4NSeZIVihuruZfTdQwcq1tosNTIeJNaiv2e&#xA;I2I/J5O5aZda/mB54uU9SLy+rR8nQMs2pMOUZKkbaVT7S0/zplZwkdR8wtICPV7aTzNFrWveULO3&#xA;uLb45tdEFzPewelHswaXTYG4qXVamUUBr7Y+Ae8fNaRHnfzBqtnrt9Hp/mu0s7aKISXEFzqtvaSw&#xA;FS7PxgfStQPHiuxMldtgN8qQstrzzH5p0WKOTTfLfmPTrdkVJLrVp7oGaNeLO9dI4CXg5rRRSp27&#xA;YqsPkiZ6rJ5F8ntDQUT6wx7VpvpFPtE9sVQOqaBqlq0Yh/LPy1fuqmQSQXcXBWDEhQZdNiblWjV4&#xA;0xVO7K0EfkS+jmsdM/L4zXlXUTmOF1jQOkpmsX0t1duHxAPuilTVTiqR/o+wadoYvzF0lpIixeP9&#xA;JauXRIwSeQGuVPED4q07nFUXbNo02oSWVmdU12/tYoZbiXS/MTehIWRZfUjgl1hZkj5txAkUV/yl&#xA;3xVX/RxO58u+ahSo/wCO+f2jQ7DWd+lf1Yqr2OmNHe2oGgeZI1+sJIZ59cEsMZ5A85UOryl41pUo&#xA;Eav8prir1PArsVdirsVeA+avNOozXMdobaBPqlxJ6N1pUFxEJHEKiN0lhuEDIeQff9mnSnLJJSzS&#xA;9Y0VxN+nYdRf1aywmya4QBaK78/UuJO6pTj8j1xVk0d9prxqILHzc0Kf3TRyXQjKqoZShEwDKwPw&#xA;02OBVRr+0KN/oHnAAIAKPdVIBUbfvup7nr1OKsm/x9YeWtI0uKa0vZlvFkMP1uQLcrxZiRObhg1a&#xA;DarHbLsWEzWkfpX5k2+ppE8GnTLHLJLGJJGQIDC5RyziqgVHWuGWnrqtJnqV5bahaS2Go2Ftc2s6&#xA;/vraa4hZHVSD8StsR0yvg/FISNvKn5fgFW8n6EAoqQYrDYHf+TvjwKmeieWfLdtenU9L8t6ZYX0V&#xA;YhdQJDHJRlBNHhi7g06+2AgBWKW35xeZp7qSA+S7iBY+RE0006o3E0242jbntmUdLGvq/HzTSM17&#xA;zXrd/pvpnTUT4uYS0vb2OYlQaLybTuABPi1MjDEAef2D/ilpfovmfWNMsI7OHToZI6syme7vmdeX&#xA;xEEjTB+1+PtjPGCbv7B/xSohvzD18NGBoluecrRf703vwhQx9Rj+jqcDx277jbI+BHv+79a0yPyv&#xA;rt5rFtdy3Vl9Se2uTbpxeR0lURxyeojSxW78ayFfsdRlWSAieaGI/n3fyWHkiK7js1v3jvYwLZo4&#xA;pK8opVLD1op1XgG5149vCoIhIg7FWJ6D5KurrV4ZNS0U2tm9JJY/qWivaAU5emssUklyQfs8uHXf&#xA;YZPx595TbN/8EeTf+rHYf9I8X/NODx595VWHlPywOmk2g3r/AHKdfuweNPvK22vlPyvy/wCOTabk&#xA;V/cx7/hj40+8raU+er6zupL/AE27876XpEUZRzA4mt7uBgxK/v7W+s5d+NKDrvWvTIIVNP8AJfkX&#xA;VLWSSy1u8v4iTBcy2ut6s8ZkU1dW4XjUYFtwTXfAqhq/lDTLKaNLW28wapDMHMr2mu3yCNif2kud&#xA;St615E1WuKpauhwL6qJ5d81Kk1WNNeZakksems/DU/y+OFU3ZY9M8iau82mapDbrKzSJqGr+pchF&#xA;QcZY7ua6vPSVmAXj6g77b7qvPZ/PnlD64YDeaoRHIsfI+YkEZVeVHryIDKVGzEHeu5GGkplpnmX8&#xA;ub2znM3mO90iaItHCH1p5AUHCk37tgoBc7qGFab4FS9pNJc/vPzVkoTUcJp0pzAaikXPcL8INfbq&#xA;cKpp5auNFfXNNMP5iNqZ9eF4rAzzfvxI4KwvyuGBLl1WjL7UwK91wIdirsVdirzDVbDU9Ikt5rry&#xA;noUyv6p52Nhd3jqwiWm1vayFOT9z+yKCpwq87n8o6g7zyQ2EkIcFz/uJ1NqepIrHiraU/wAXEd69&#xA;BXClk+hR3dvpwg1C68xpJbsDFBYadqPo+kCAsYMunxkcaU4rRePTvgVNpfqcvOU6r5qACxq0a6Xq&#xA;CV4KE+EDTlNW4gsR332qaqGvM3krWPMlroTaXPPIun/vJ5r0yWN46OXX4leBGVjxIPKIbZlafKIA&#xA;31SCq6Z+XGtw2Ho3EcSyetcSji/qALNM0gHLlDUhSP2euSlnjabRn+AdVFSFQmROEpapNaEAqfWF&#xA;Ou+Dxwtpbcw6N5d1OH/EnqLEKMgEMrpKUowXmWkjYLQVXJAmY9Ksj0T8xvJMkrWljLIrSuzQWkNr&#xA;OzUSMV4xxRtX7BNFynJhmBZRSYaFrnmjU9EstRWwsXF1Cspb63NEPiFT8H1eXjvX9o5GcIiRFn5f&#xA;tVCXy+a79r11i+oMbZY7WeymacErIrlv3sdtuQGWgB2777GPCPmqEsdP/MCyE076jLdzLQrbSwxt&#xA;EyMaUDCTkrildgae+SkYGtqVkuq6tq0CRnStKbU3JImQzR2xjoKivq7mvsMqjEdTSozT9RhvoXki&#xA;WRDFI8MqSo0bB424sPiAqPBhsRuDkCKQwz86V8xv5Qji0C0lvLqS7iWaOGN5WEIR2LcEDVHIKNwc&#xA;QrzXSPL/AOf2r2Mtwtx9TLK8YjuDPaOHI5AiOQhlAErKCu2y/wAu52SmD+U/+chTcSulxaiFm5CB&#xA;rpyN52lAV1IZfh4oe1OgwbK6Tyh/zkGwHG9t1DxxRsBck8CjqWcV4lmKp4gGprjsqK0Hyl+ecfmf&#xA;TptUvUOkRXET3SrcK1YUcB0YGvqF4+9BvXpjsr0PzDoHnTU0vLa11ixtLK5BSMfU7tbhAT/y0W99&#xA;bOGp3Tif1YEMWl/Lq80xQLhNZ19pS/ptpur6jaiFI1HBZRe6wOTMT8LR7VFSF2OFUJc+XZFiUSeW&#xA;PODjkoTjr7u3KnIH4daNOJNKnb8MVXHy08UI4eWfNzx1UIo19yRtRSA2sgr9r2p1NKVxVkWnaNr/&#xA;APhnUItGj1TQ9Ua4MkSapfR3Ukh4AErPM2tpHFQ1VVX7S/ZArUKlf6J/OgCZRe1aRWEbtqNmRGxN&#xA;QwA0RSaDYcq+/jhVMdMX82rOFYrm1tNS5MGNxc6oElQMBVeNvpcEbBd6GlTiqtdan+aFvZzXP6As&#xA;pTCjuYItUleRuHI0RRYfEWoOI679MVYfpk91feadNmn/AC2t7W5nuEnn1t4JRLbyvJyeX1G09GLg&#xA;sW5cwCerDrir2fArsVdirsVS7VNNZ9OuF02G2jvyhFs8sYKB+xYAHJxlvvyV5RbXX5rCVo7nTnZe&#xA;QHqNZxKqb0r+5iLMN+wOZpGLv+1ls3cnWXsJ5b9bpEiDl2igvo02FOLN6UdCW/2I/DCKvb9CpJGn&#xA;p3kR0lLs3fJmVLGSO9LAUr6iJLP08CN8s6b/AKkvQfKtp+ZD3tvcXc0cGkSqDcwXEMMNwRuDRYEV&#xA;lbw5N/TMTIcdbc2JpNU0TztFcJEmqQyWS8VNxMZWuCoABZlUpHyPXamQE4Vy3VkkFoVhjWWR5JVU&#xA;CSQM6hmA3YLyNKntXKSUL/q0fi//ACMf/mrG1Y/rvl/V2vFv9EFgLugVmvUn9ToQXE8UnL7NAF4/&#xA;TlsMgqpWm0qS21rR7GNNRtrjUZioiSw0p5xaxRqSOQY0YuQR8LGm22TsSOxr30qiPNGpX7y2Gl6T&#xA;fJqDQOsD3lzNDFzRSalgG+Pw6AnaoG+E4wNyRS0ym70e7nsCLe8mtL1kX4vVkdA6g9ix2JO9D2yk&#xA;TAPLZDHGtvM9netdamNQubSAkhdN4lpafCqspnaQoeXKiqDUdRuDbcSKFfH+xLJfL0U6w3U8ttJa&#xA;/Wrhpo4ZuJlCFEQFyry7nhXc1HSmUzPJD490nWL/AEm4a4sjEJXQxN60MNwvFiCfgmSRe3Wlc3so&#xA;iXNmmI876+IDCfqbIS5+KwsWI9RmdqEw1A5OT7dsj4UfP5lWx568wiN4x9SCyVD006wBNdzuIK4P&#xA;Bj5/Mqtt/O2vW8EUEX1MJDGsSFtPsXcogoOTvCzMadyanvhOKJ7/AJlV0/nnzBMgRxZBQhjXjp9i&#xA;rKrCh4sIOSn3BriMUfP5lWP5YrsVdirsVdirsVdirsVRFlePaTiZI4pSBThPGsqf8C4IwEWr0b/n&#xA;Hj/lPn/5gZv+Jx5i636PigvpfNQxdir5o/5yH/5T5P8AmBh/4nJm30X0fFkGHv5212ScTSLYu3D0&#xA;iradYFChKndPQ4k/AtDSoy/wh5/MpWr5w1dZPUWDTg3Uf7i9OoOnQfV6fs4+EPP5n9auXzlrS3M9&#xA;xwsTLcBPV5adYMtYyxVghg4K3xmrAVPfoMfCHn8yqp/jnXeMg9PT/wB7/ef7jNO3+f7jB4MfP5n9&#xA;apRf39xfXBuJ1iVyAvGCGK3jAHhHCsaD6BlgFKhsKuxV2KuxV2KuxV2KuxV2Ksq/5Bb/ANrz/p0y&#xA;n95/R+1Xf8gt/wC15/06Y/vP6P2q7/kFv/a8/wCnTH95/R+1Xf8AILf+15/06Y/vP6P2q7/kFv8A&#xA;2vP+nTH95/R+1Xf8gt/7Xn/Tpj+8/o/arv8AkFv/AGvP+nTH95/R+1Xf8gt/7Xn/AE6Y/vP6P2q7&#xA;/kFv/a8/6dMf3n9H7Vd/yC3/ALXn/Tpj+8/o/arv+QW/9rz/AKdMf3n9H7Vd/wAgt/7Xn/Tpj+8/&#xA;o/arv+QW/wDa8/6dMf3n9H7Vd/yC3/tef9OmP7z+j9qvQPyR/wAE/wCM3/Qv6S+ufVJa/XPQ9Lhy&#xA;Sv8Ad/FXpmNq+Pg3pBe95rGLsVeHfnL/AMq1/wAXr/iP9M/pD6rFT9HfVfR9Pk/H+++LlWtc2Ol8&#xA;Tg9PDXnbIMF/5Af/AN/N/wBy/Mn99/R+1d3f8gP/AO/m/wC5fj++/o/au7v+QH/9/N/3L8f339H7&#xA;V3d/yA//AL+b/uX4/vv6P2ru7/kB/wD383/cvx/ff0ftXd3/ACA//v5v+5fj++/o/au7v+QH/wDf&#xA;zf8Acvx/ff0ftXd3/ID/APv5v+5fj++/o/au7v8AkB//AH83/cvx/ff0ftXd3/ID/wDv5v8AuX4/&#xA;vv6P2ru7/kB//fzf9y/H99/R+1d3f8gP/wC/m/7l+P77+j9q7u/5Af8A9/N/3L8f339H7V3d/wAg&#xA;P/7+b/uX4/vv6P2ru//Z</xmpGImg:image>
- </rdf:li>
- </rdf:Alt>
- </xmp:Thumbnails>
- <xmpMM:InstanceID>uuid:9ceda8ff-23f0-3d4d-bee2-d129ed5be150</xmpMM:InstanceID>
- <xmpMM:DocumentID>xmp.did:6e0ad609-63ba-4487-8c26-1d3d45c1e92e</xmpMM:DocumentID>
- <xmpMM:OriginalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</xmpMM:OriginalDocumentID>
- <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass>
- <xmpMM:DerivedFrom rdf:parseType="Resource">
- <stRef:instanceID>uuid:1429a63f-381b-4bbe-b610-dcd92ca51b5b</stRef:instanceID>
- <stRef:documentID>xmp.did:d92220c8-81e6-9646-85ef-ad1bfcf188fa</stRef:documentID>
- <stRef:originalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</stRef:originalDocumentID>
- <stRef:renditionClass>proof:pdf</stRef:renditionClass>
- </xmpMM:DerivedFrom>
- <xmpMM:History>
- <rdf:Seq>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:6e0ad609-63ba-4487-8c26-1d3d45c1e92e</stEvt:instanceID>
- <stEvt:when>2016-10-31T17:23:56Z</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CC 2015.3 (Macintosh)</stEvt:softwareAgent>
- <stEvt:changed>/</stEvt:changed>
- </rdf:li>
- </rdf:Seq>
- </xmpMM:History>
- <illustrator:StartupProfile>Print</illustrator:StartupProfile>
- <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint>
- <xmpTPg:HasVisibleTransparency>True</xmpTPg:HasVisibleTransparency>
- <xmpTPg:NPages>1</xmpTPg:NPages>
- <xmpTPg:MaxPageSize rdf:parseType="Resource">
- <stDim:w>11.000000</stDim:w>
- <stDim:h>8.500000</stDim:h>
- <stDim:unit>Inches</stDim:unit>
- </xmpTPg:MaxPageSize>
- <xmpTPg:PlateNames>
- <rdf:Seq>
- <rdf:li>Cyan</rdf:li>
- <rdf:li>Magenta</rdf:li>
- <rdf:li>Yellow</rdf:li>
- <rdf:li>Black</rdf:li>
- </rdf:Seq>
- </xmpTPg:PlateNames>
- <xmpTPg:SwatchGroups>
- <rdf:Seq>
- <rdf:li rdf:parseType="Resource">
- <xmpG:groupName>Default Swatch Group</xmpG:groupName>
- <xmpG:groupType>0</xmpG:groupType>
- <xmpG:Colorants>
- <rdf:Seq>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>White</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>0.000000</xmpG:cyan>
- <xmpG:magenta>0.000000</xmpG:magenta>
- <xmpG:yellow>0.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>Black</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>0.000000</xmpG:cyan>
- <xmpG:magenta>0.000000</xmpG:magenta>
- <xmpG:yellow>0.000000</xmpG:yellow>
- <xmpG:black>100.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>CMYK Red</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>0.000000</xmpG:cyan>
- <xmpG:magenta>100.000000</xmpG:magenta>
- <xmpG:yellow>100.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>CMYK Yellow</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>0.000000</xmpG:cyan>
- <xmpG:magenta>0.000000</xmpG:magenta>
- <xmpG:yellow>100.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>CMYK Green</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>100.000000</xmpG:cyan>
- <xmpG:magenta>0.000000</xmpG:magenta>
- <xmpG:yellow>100.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>CMYK Cyan</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>100.000000</xmpG:cyan>
- <xmpG:magenta>0.000000</xmpG:magenta>
- <xmpG:yellow>0.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>CMYK Blue</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>100.000000</xmpG:cyan>
- <xmpG:magenta>100.000000</xmpG:magenta>
- <xmpG:yellow>0.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>CMYK Magenta</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>0.000000</xmpG:cyan>
- <xmpG:magenta>100.000000</xmpG:magenta>
- <xmpG:yellow>0.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=15 M=100 Y=90 K=10</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>15.000000</xmpG:cyan>
- <xmpG:magenta>100.000000</xmpG:magenta>
- <xmpG:yellow>90.000000</xmpG:yellow>
- <xmpG:black>10.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=0 M=90 Y=85 K=0</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>0.000000</xmpG:cyan>
- <xmpG:magenta>90.000000</xmpG:magenta>
- <xmpG:yellow>85.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=0 M=80 Y=95 K=0</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>0.000000</xmpG:cyan>
- <xmpG:magenta>80.000000</xmpG:magenta>
- <xmpG:yellow>95.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=0 M=50 Y=100 K=0</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>0.000000</xmpG:cyan>
- <xmpG:magenta>50.000000</xmpG:magenta>
- <xmpG:yellow>100.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=0 M=35 Y=85 K=0</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>0.000000</xmpG:cyan>
- <xmpG:magenta>35.000000</xmpG:magenta>
- <xmpG:yellow>85.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=5 M=0 Y=90 K=0</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>5.000000</xmpG:cyan>
- <xmpG:magenta>0.000000</xmpG:magenta>
- <xmpG:yellow>90.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=20 M=0 Y=100 K=0</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>20.000000</xmpG:cyan>
- <xmpG:magenta>0.000000</xmpG:magenta>
- <xmpG:yellow>100.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=50 M=0 Y=100 K=0</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>50.000000</xmpG:cyan>
- <xmpG:magenta>0.000000</xmpG:magenta>
- <xmpG:yellow>100.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=75 M=0 Y=100 K=0</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>75.000000</xmpG:cyan>
- <xmpG:magenta>0.000000</xmpG:magenta>
- <xmpG:yellow>100.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=85 M=10 Y=100 K=10</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>85.000000</xmpG:cyan>
- <xmpG:magenta>10.000000</xmpG:magenta>
- <xmpG:yellow>100.000000</xmpG:yellow>
- <xmpG:black>10.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=90 M=30 Y=95 K=30</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>90.000000</xmpG:cyan>
- <xmpG:magenta>30.000000</xmpG:magenta>
- <xmpG:yellow>95.000000</xmpG:yellow>
- <xmpG:black>30.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=75 M=0 Y=75 K=0</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>75.000000</xmpG:cyan>
- <xmpG:magenta>0.000000</xmpG:magenta>
- <xmpG:yellow>75.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=80 M=10 Y=45 K=0</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>80.000000</xmpG:cyan>
- <xmpG:magenta>10.000000</xmpG:magenta>
- <xmpG:yellow>45.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=70 M=15 Y=0 K=0</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>70.000000</xmpG:cyan>
- <xmpG:magenta>15.000000</xmpG:magenta>
- <xmpG:yellow>0.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=85 M=50 Y=0 K=0</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>85.000000</xmpG:cyan>
- <xmpG:magenta>50.000000</xmpG:magenta>
- <xmpG:yellow>0.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=100 M=95 Y=5 K=0</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>100.000000</xmpG:cyan>
- <xmpG:magenta>95.000000</xmpG:magenta>
- <xmpG:yellow>5.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=100 M=100 Y=25 K=25</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>100.000000</xmpG:cyan>
- <xmpG:magenta>100.000000</xmpG:magenta>
- <xmpG:yellow>25.000000</xmpG:yellow>
- <xmpG:black>25.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=75 M=100 Y=0 K=0</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>75.000000</xmpG:cyan>
- <xmpG:magenta>100.000000</xmpG:magenta>
- <xmpG:yellow>0.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=50 M=100 Y=0 K=0</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>50.000000</xmpG:cyan>
- <xmpG:magenta>100.000000</xmpG:magenta>
- <xmpG:yellow>0.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=35 M=100 Y=35 K=10</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>35.000000</xmpG:cyan>
- <xmpG:magenta>100.000000</xmpG:magenta>
- <xmpG:yellow>35.000000</xmpG:yellow>
- <xmpG:black>10.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=10 M=100 Y=50 K=0</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>10.000000</xmpG:cyan>
- <xmpG:magenta>100.000000</xmpG:magenta>
- <xmpG:yellow>50.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=0 M=95 Y=20 K=0</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>0.000000</xmpG:cyan>
- <xmpG:magenta>95.000000</xmpG:magenta>
- <xmpG:yellow>20.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=25 M=25 Y=40 K=0</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>25.000000</xmpG:cyan>
- <xmpG:magenta>25.000000</xmpG:magenta>
- <xmpG:yellow>40.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=40 M=45 Y=50 K=5</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>40.000000</xmpG:cyan>
- <xmpG:magenta>45.000000</xmpG:magenta>
- <xmpG:yellow>50.000000</xmpG:yellow>
- <xmpG:black>5.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=50 M=50 Y=60 K=25</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>50.000000</xmpG:cyan>
- <xmpG:magenta>50.000000</xmpG:magenta>
- <xmpG:yellow>60.000000</xmpG:yellow>
- <xmpG:black>25.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=55 M=60 Y=65 K=40</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>55.000000</xmpG:cyan>
- <xmpG:magenta>60.000000</xmpG:magenta>
- <xmpG:yellow>65.000000</xmpG:yellow>
- <xmpG:black>40.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=25 M=40 Y=65 K=0</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>25.000000</xmpG:cyan>
- <xmpG:magenta>40.000000</xmpG:magenta>
- <xmpG:yellow>65.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=30 M=50 Y=75 K=10</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>30.000000</xmpG:cyan>
- <xmpG:magenta>50.000000</xmpG:magenta>
- <xmpG:yellow>75.000000</xmpG:yellow>
- <xmpG:black>10.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=35 M=60 Y=80 K=25</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>35.000000</xmpG:cyan>
- <xmpG:magenta>60.000000</xmpG:magenta>
- <xmpG:yellow>80.000000</xmpG:yellow>
- <xmpG:black>25.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=40 M=65 Y=90 K=35</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>40.000000</xmpG:cyan>
- <xmpG:magenta>65.000000</xmpG:magenta>
- <xmpG:yellow>90.000000</xmpG:yellow>
- <xmpG:black>35.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=40 M=70 Y=100 K=50</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>40.000000</xmpG:cyan>
- <xmpG:magenta>70.000000</xmpG:magenta>
- <xmpG:yellow>100.000000</xmpG:yellow>
- <xmpG:black>50.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=50 M=70 Y=80 K=70</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>50.000000</xmpG:cyan>
- <xmpG:magenta>70.000000</xmpG:magenta>
- <xmpG:yellow>80.000000</xmpG:yellow>
- <xmpG:black>70.000000</xmpG:black>
- </rdf:li>
- </rdf:Seq>
- </xmpG:Colorants>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:groupName>Grays</xmpG:groupName>
- <xmpG:groupType>1</xmpG:groupType>
- <xmpG:Colorants>
- <rdf:Seq>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=0 M=0 Y=0 K=100</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>0.000000</xmpG:cyan>
- <xmpG:magenta>0.000000</xmpG:magenta>
- <xmpG:yellow>0.000000</xmpG:yellow>
- <xmpG:black>100.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=0 M=0 Y=0 K=90</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>0.000000</xmpG:cyan>
- <xmpG:magenta>0.000000</xmpG:magenta>
- <xmpG:yellow>0.000000</xmpG:yellow>
- <xmpG:black>89.999400</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=0 M=0 Y=0 K=80</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>0.000000</xmpG:cyan>
- <xmpG:magenta>0.000000</xmpG:magenta>
- <xmpG:yellow>0.000000</xmpG:yellow>
- <xmpG:black>79.998800</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=0 M=0 Y=0 K=70</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>0.000000</xmpG:cyan>
- <xmpG:magenta>0.000000</xmpG:magenta>
- <xmpG:yellow>0.000000</xmpG:yellow>
- <xmpG:black>69.999700</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=0 M=0 Y=0 K=60</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>0.000000</xmpG:cyan>
- <xmpG:magenta>0.000000</xmpG:magenta>
- <xmpG:yellow>0.000000</xmpG:yellow>
- <xmpG:black>59.999100</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=0 M=0 Y=0 K=50</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>0.000000</xmpG:cyan>
- <xmpG:magenta>0.000000</xmpG:magenta>
- <xmpG:yellow>0.000000</xmpG:yellow>
- <xmpG:black>50.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=0 M=0 Y=0 K=40</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>0.000000</xmpG:cyan>
- <xmpG:magenta>0.000000</xmpG:magenta>
- <xmpG:yellow>0.000000</xmpG:yellow>
- <xmpG:black>39.999400</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=0 M=0 Y=0 K=30</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>0.000000</xmpG:cyan>
- <xmpG:magenta>0.000000</xmpG:magenta>
- <xmpG:yellow>0.000000</xmpG:yellow>
- <xmpG:black>29.998800</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=0 M=0 Y=0 K=20</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>0.000000</xmpG:cyan>
- <xmpG:magenta>0.000000</xmpG:magenta>
- <xmpG:yellow>0.000000</xmpG:yellow>
- <xmpG:black>19.999700</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=0 M=0 Y=0 K=10</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>0.000000</xmpG:cyan>
- <xmpG:magenta>0.000000</xmpG:magenta>
- <xmpG:yellow>0.000000</xmpG:yellow>
- <xmpG:black>9.999100</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=0 M=0 Y=0 K=5</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>0.000000</xmpG:cyan>
- <xmpG:magenta>0.000000</xmpG:magenta>
- <xmpG:yellow>0.000000</xmpG:yellow>
- <xmpG:black>4.998800</xmpG:black>
- </rdf:li>
- </rdf:Seq>
- </xmpG:Colorants>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:groupName>Brights</xmpG:groupName>
- <xmpG:groupType>1</xmpG:groupType>
- <xmpG:Colorants>
- <rdf:Seq>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=0 M=100 Y=100 K=0</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>0.000000</xmpG:cyan>
- <xmpG:magenta>100.000000</xmpG:magenta>
- <xmpG:yellow>100.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=0 M=75 Y=100 K=0</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>0.000000</xmpG:cyan>
- <xmpG:magenta>75.000000</xmpG:magenta>
- <xmpG:yellow>100.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=0 M=10 Y=95 K=0</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>0.000000</xmpG:cyan>
- <xmpG:magenta>10.000000</xmpG:magenta>
- <xmpG:yellow>95.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=85 M=10 Y=100 K=0</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>85.000000</xmpG:cyan>
- <xmpG:magenta>10.000000</xmpG:magenta>
- <xmpG:yellow>100.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=100 M=90 Y=0 K=0</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>100.000000</xmpG:cyan>
- <xmpG:magenta>90.000000</xmpG:magenta>
- <xmpG:yellow>0.000000</xmpG:yellow>
- <xmpG:black>0.000000</xmpG:black>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>C=60 M=90 Y=0 K=0</xmpG:swatchName>
- <xmpG:mode>CMYK</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:cyan>60.000000</xmpG:cyan>
- <xmpG:magenta>90.000000</xmpG:magenta>
- <xmpG:yellow>0.003100</xmpG:yellow>
- <xmpG:black>0.003100</xmpG:black>
- </rdf:li>
- </rdf:Seq>
- </xmpG:Colorants>
- </rdf:li>
- </rdf:Seq>
- </xmpTPg:SwatchGroups>
- <pdf:Producer>Adobe PDF library 15.00</pdf:Producer>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<?xpacket end="w"?> endstream endobj 3 0 obj <</Count 2/Kids[7 0 R 8 0 R]/Type/Pages>> endobj 7 0 obj <</ArtBox[9.0 9.0 801.0 621.0]/BleedBox[0.0 0.0 810.0 630.0]/Contents 9 0 R/Group 10 0 R/LastModified(D:20161031172420Z)/MediaBox[0.0 0.0 810.0 630.0]/Parent 3 0 R/PieceInfo<</Illustrator 11 0 R>>/Resources<</ExtGState<</GS0 12 0 R>>/Properties<</MC0 5 0 R>>/XObject<</Fm0 13 0 R>>>>/Thumb 14 0 R/TrimBox[9.0 9.0 801.0 621.0]/Type/Page>> endobj 8 0 obj <</ArtBox[9.0 9.0 801.0 621.0]/BleedBox[0.0 0.0 810.0 630.0]/Contents 15 0 R/Group 16 0 R/LastModified(D:20161031172420Z)/MediaBox[0.0 0.0 810.0 630.0]/Parent 3 0 R/PieceInfo<</Illustrator 11 0 R>>/Resources<</ExtGState<</GS0 12 0 R>>/Properties<</MC0 5 0 R>>/XObject<</Fm0 17 0 R>>>>/Thumb 18 0 R/TrimBox[9.0 9.0 801.0 621.0]/Type/Page>> endobj 15 0 obj <</Filter/FlateDecode/Length 74>>stream
-H‰Ò÷wVÐ÷u6PprqVà*ä2P036P°04PÐ1ŠR¹Âò€âúîÁ
-éÅ@ù}·\—|®@.W_ ¦@.€
-8;Z,'9pXNV$mt_*&*&q$Q^LQqM6=FYXa>kGj/ck9Fc%GnKFj5?R_77h@jVCad\dU!
-!@o_jlu@L%GWqGb9DU0#r%F![m'CIIL+eng%_hma##WkB(D#8`gtokLpXBs3)T[]P
-aS.3->!%A_T&_MJ,.&D(*L5Edr1-s#*Od-"j0Mi3,pO$DiV>V\g<)I+Z1a:?3'!"[
-,E099(b'^6ZSm'GOo6<8kT`ZX*hT,FC^<44q*l4X_u'_.`Qg#05&SD*+".%fD61.H
-R3,5+c1C>:Q`[@B;L74hfr_AP(eMi`mgk?e"PoS0\N%H-D5T74Kt?Ne'YAX&%haHu
-P_QqYYRpg=_9lFk2c2P&U81d_M.nn`,7i-VSHhbY]-AD+,^:i2@Ps=TT$<4M+hb&0
-1ad[Z.E!U&()-Sl?c^U4S*59e(go7lo&#+bq6I3pA,6YCMQYQ$jp8M?hGn2Rf@qKE
-O;X+!e@p\Dq"3iaqO,*W76BMFBCbG<5>kBq[[**iM@5@RdPoGr2R<Ka1(MP&.5G@s
-CjsQb`[@+3'5Ma&:e/^ns)nF7iJOBbYS5QMN8`V<Z^8>.!%X(VM'%%CXt5D=K88^U
-A5PjHofbFW8*?AjCs7^-AA;:^@)W]T#"r6%;SJgZ^htOc6TX`OFo,Lq:^s9]_c?9m
-oR%+FcUm#3ChlpHATYp8hgauV=NRL]JA<tDnj)@OSSo.(PX$L'M54K;L%if51>$rp
-:=oT7;hT@-Q0a#TENIMp$k$ohE)'FaP;p*G$(`5WN]D-E9o,XIAQ!_t]*a?=$],97
-]8g$nlRo3>0LXRJoJ_.mZ(d?t'dU$&'Lsd\loEhPFS5T0'Aju;@L`r:P,Vt.q<\'n
-[<6!\'mG%DPnK(i3iT/pf(<W,DWNZ%IT0K.Oe@i$`[>"]bKqF2Djj_$I]22]I.HH;
-&gn4GDaA%SD4eK()fLpnaiTm!ol;7#Z8:7IVIpulM7Ol(0^A&$=<Tar\`CKE(3a5=
-Z^c<E>oQ?KL:YTRZFFH@4KR"af:8PTLqe7[Gq8(QF<=YlR)Fe:0XaS'<[RW*5LDJ,
-B>MXR==NO+:52b`%n08C`ot099)<O:-n3BMGWXDnl.K3%)bR?Rq\:ZiZq?8T/R1W]
-0*]a#[b`XKMUS3P#)$X9C[nFM-]M?si(b^ZWj]5LoGFjkq;rMWE*=36_=ES@Oqd&k
-bHXok9NT;OH">-<<4'5B+G:Mj-r6@8Bc#iW8s>7%Kc1'=)5=O9Q@fl5`ll*c&2>$C
-HCC:$.mFi2(9d>$,RgouR/$79a$FJ3]Jpki*3)-UbWOAs[IQL,Y8P[,o!c7qm]SnH
-&k7<\!;*UBg&~> endstream endobj 19 0 obj [/Indexed/DeviceRGB 255 20 0 R] endobj 20 0 obj <</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream
-8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0
-b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup`
-E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn
-6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1
-VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH<
-PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O(
-l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 17 0 obj <</BBox[0.0 630.0 810.0 0.332611]/Group 21 0 R/Length 1521589/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R/GS1 22 0 R/GS2 23 0 R/GS3 24 0 R/GS4 25 0 R/GS5 26 0 R/GS6 27 0 R>>/XObject<</Fm0 28 0 R/Fm1 29 0 R/Fm10 30 0 R/Fm11 31 0 R/Fm12 32 0 R/Fm13 33 0 R/Fm14 34 0 R/Fm15 35 0 R/Fm16 36 0 R/Fm17 37 0 R/Fm18 38 0 R/Fm19 39 0 R/Fm2 40 0 R/Fm20 41 0 R/Fm21 42 0 R/Fm22 43 0 R/Fm23 44 0 R/Fm24 45 0 R/Fm25 46 0 R/Fm26 47 0 R/Fm27 48 0 R/Fm28 49 0 R/Fm29 50 0 R/Fm3 51 0 R/Fm30 52 0 R/Fm31 53 0 R/Fm32 54 0 R/Fm33 55 0 R/Fm34 56 0 R/Fm4 57 0 R/Fm5 58 0 R/Fm6 59 0 R/Fm7 60 0 R/Fm8 61 0 R/Fm9 62 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-0 630 810 -114.999 re
-f
-0 75 810 -74.667 re
-f
-q
-273.583 568.502 m
-272.764 568.502 272.076 567.939 271.892 567.175 c
-245.324 567.175 l
-245.232 567.175 245.159 567.061 245.166 566.97 c
-245.174 566.877 245.265 566.796 245.361 566.796 c
-271.834 566.796 l
-271.834 566.763 l
-271.834 565.801 272.621 565.025 273.583 565.025 c
-274.516 565.025 275.266 565.761 275.306 566.683 c
-278.83 566.191 280.818 564.192 282.861 562.148 c
-284.872 560.138 286.941 558.087 290.472 557.532 c
-290.568 556.662 291.288 555.989 292.184 555.989 c
-293.03 555.989 293.728 556.585 293.886 557.381 c
-300.581 557.381 l
-300.739 556.585 301.441 555.989 302.287 555.989 c
-303.132 555.989 303.83 556.585 303.988 557.381 c
-311.257 557.381 l
-316.026 557.381 318.452 559.793 320.807 562.148 c
-322.916 564.257 324.971 566.311 328.715 566.719 c
-328.738 565.779 329.516 565.025 330.465 565.025 c
-331.423 565.025 332.199 565.801 332.199 566.763 c
-332.199 566.796 l
-347.328 566.796 l
-347.328 566.763 l
-347.328 565.801 348.104 565.025 349.066 565.025 c
-350.003 565.025 350.764 565.763 350.801 566.694 c
-354.542 566.293 357.463 564.695 359.977 562.434 c
-362.895 559.807 365.253 556.286 367.609 552.755 c
-369.965 549.223 372.32 545.678 375.289 543.01 c
-377.454 541.062 379.945 539.588 382.977 538.931 c
-369.38 538.931 l
-369.222 539.729 368.524 540.334 367.679 540.334 c
-366.834 540.334 366.121 539.729 365.963 538.931 c
-350.779 538.931 l
-350.621 539.729 349.912 540.334 349.066 540.334 c
-348.254 540.334 347.578 539.773 347.387 539.019 c
-343.745 539.471 341.717 541.503 339.637 543.579 c
-337.561 545.659 335.418 547.783 331.662 548.253 c
-331.612 549.169 330.854 549.9 329.925 549.9 c
-329.028 549.9 328.308 549.217 328.212 548.346 c
-322.611 548.346 l
-322.52 549.217 321.785 549.9 320.888 549.9 c
-319.992 549.9 319.267 549.217 319.172 548.346 c
-314.295 548.346 l
-317.177 549.11 319.014 550.94 320.807 552.733 c
-322.829 554.754 324.802 556.735 328.256 557.256 c
-328.462 556.522 329.127 555.989 329.925 555.989 c
-330.773 555.989 331.486 556.588 331.641 557.393 c
-347.361 557.393 l
-347.516 556.588 348.217 555.989 349.066 555.989 c
-350.026 555.989 350.812 556.764 350.812 557.724 c
-350.812 558.686 350.026 559.461 349.066 559.461 c
-348.115 559.461 347.346 558.705 347.328 557.761 c
-331.674 557.761 l
-331.655 558.705 330.876 559.461 329.925 559.461 c
-328.965 559.461 328.19 558.686 328.19 557.724 c
-328.19 557.69 328.198 557.657 328.201 557.624 c
-324.637 557.08 322.553 555.016 320.531 552.994 c
-318.253 550.712 316.049 548.481 311.69 548.346 c
-303.473 548.346 l
-303.463 548.456 303.436 548.558 303.403 548.666 c
-303.374 548.764 303.338 548.86 303.29 548.948 c
-303.242 549.047 303.187 549.14 303.12 549.223 c
-303.069 549.29 303.01 549.349 302.948 549.408 c
-302.933 549.418 302.929 549.441 302.915 549.452 c
-302.893 549.47 302.867 549.481 302.845 549.499 c
-302.786 549.547 302.727 549.595 302.661 549.635 c
-302.577 549.691 302.485 549.734 302.389 549.771 c
-302.191 549.848 301.974 549.9 301.75 549.9 c
-301.632 549.9 301.514 549.886 301.404 549.863 c
-301.291 549.841 301.18 549.805 301.074 549.761 c
-300.978 549.72 300.876 549.668 300.787 549.613 c
-300.783 549.61 300.78 549.603 300.776 549.603 c
-300.685 549.539 300.604 549.462 300.527 549.385 c
-300.456 549.312 300.39 549.238 300.332 549.154 c
-300.295 549.103 300.261 549.044 300.228 548.985 c
-300.207 548.945 300.178 548.911 300.159 548.871 c
-300.155 548.86 300.155 548.845 300.148 548.834 c
-300.107 548.735 300.082 548.635 300.056 548.525 c
-300.049 548.481 300.041 548.437 300.034 548.39 c
-300.026 548.334 300.012 548.276 300.012 548.217 c
-296.411 547.688 294.32 545.612 292.288 543.579 c
-291.983 543.274 291.681 542.977 291.372 542.675 c
-289.866 544.288 288.874 546.247 287.878 548.242 c
-286.698 550.594 285.504 552.98 283.409 554.777 c
-281.568 556.353 279.036 557.455 275.241 557.701 c
-275.019 558.414 274.366 558.937 273.583 558.937 c
-272.819 558.937 272.172 558.444 271.937 557.761 c
-226.7 557.761 l
-226.642 557.761 l
-226.546 557.746 226.469 557.639 226.484 557.543 c
-226.494 557.445 226.601 557.371 226.7 557.381 c
-271.856 557.381 l
-271.852 557.319 271.834 557.264 271.834 557.198 c
-271.834 556.239 272.621 555.453 273.583 555.453 c
-274.545 555.453 275.321 556.239 275.321 557.198 c
-275.321 557.242 275.31 557.283 275.306 557.327 c
-278.985 557.069 281.41 555.989 283.17 554.478 c
-285.195 552.745 286.356 550.426 287.532 548.07 c
-288.528 546.078 289.535 544.064 291.089 542.403 c
-289.429 540.831 287.602 539.478 284.813 539.067 c
-284.607 539.794 283.942 540.334 283.145 540.334 c
-282.3 540.334 281.601 539.729 281.443 538.927 c
-275.285 538.927 l
-275.127 539.729 274.428 540.334 273.583 540.334 c
-272.738 540.334 272.029 539.729 271.867 538.927 c
-226.484 538.927 l
-226.476 538.931 198.221 538.931 198.214 538.927 c
-198.114 538.923 198.027 538.824 198.033 538.725 c
-198.037 538.622 198.125 538.538 198.225 538.541 c
-271.834 538.541 l
-271.86 537.601 272.635 536.851 273.583 536.851 c
-274.527 536.851 275.295 537.601 275.321 538.541 c
-281.41 538.541 l
-281.432 537.601 282.2 536.851 283.145 536.851 c
-284.093 536.851 284.857 537.601 284.883 538.541 c
-300.012 538.541 l
-300.037 537.601 300.802 536.851 301.75 536.851 c
-302.694 536.851 303.473 537.601 303.496 538.541 c
-308.217 538.541 l
-305.337 537.77 303.496 535.947 301.703 534.154 c
-299.7 532.147 297.734 530.192 294.335 529.652 c
-294.081 530.299 293.449 530.759 292.71 530.759 c
-291.92 530.759 291.266 530.225 291.052 529.502 c
-275.241 529.502 l
-275.027 530.225 274.373 530.759 273.583 530.759 c
-272.793 530.759 272.128 530.225 271.915 529.502 c
-235.898 529.502 l
-235.792 529.516 235.693 529.425 235.693 529.317 c
-235.693 529.211 235.792 529.123 235.898 529.138 c
-271.844 529.138 l
-271.844 529.097 271.834 529.064 271.834 529.024 c
-271.834 528.061 272.621 527.274 273.583 527.274 c
-274.545 527.274 275.321 528.061 275.321 529.024 c
-275.321 529.064 275.31 529.097 275.306 529.138 c
-290.987 529.138 l
-290.983 529.097 290.972 529.064 290.972 529.024 c
-290.972 528.061 291.748 527.274 292.71 527.274 c
-293.672 527.274 294.459 528.061 294.459 529.024 c
-294.459 529.119 294.452 529.203 294.437 529.296 c
-297.917 529.869 299.972 531.894 301.967 533.889 c
-304.021 535.947 306.031 537.961 309.599 538.439 c
-309.676 537.545 310.411 536.851 311.323 536.851 c
-312.271 536.851 313.036 537.601 313.061 538.541 c
-319.15 538.541 l
-319.176 537.601 319.94 536.851 320.888 536.851 c
-321.833 536.851 322.611 537.601 322.638 538.541 c
-330.086 538.541 l
-334.731 538.541 337.021 536.245 339.376 533.889 c
-341.455 531.813 343.595 529.696 347.35 529.23 c
-347.343 529.159 347.328 529.093 347.328 529.024 c
-347.328 528.061 348.104 527.274 349.066 527.274 c
-350.026 527.274 350.812 528.061 350.812 529.024 c
-350.812 529.064 350.804 529.097 350.801 529.138 c
-356.904 529.138 l
-356.9 529.097 356.894 529.064 356.894 529.024 c
-356.894 528.061 357.68 527.274 358.639 527.274 c
-359.602 527.274 360.377 528.061 360.377 529.024 c
-360.377 529.064 360.37 529.097 360.366 529.138 c
-375.517 529.138 l
-375.514 529.097 375.506 529.064 375.506 529.024 c
-375.506 528.061 376.282 527.274 377.244 527.274 c
-378.204 527.274 378.979 528.061 378.979 529.024 c
-378.979 529.101 378.967 529.174 378.957 529.252 c
-382.595 529.766 384.697 531.846 386.74 533.889 c
-388.75 535.899 390.713 537.857 394.13 538.391 c
-394.229 537.523 394.95 536.851 395.846 536.851 c
-396.791 536.851 397.57 537.601 397.591 538.541 c
-414.859 538.541 l
-419.504 538.541 421.782 536.245 424.138 533.889 c
-426.17 531.856 428.265 529.788 431.874 529.263 c
-431.862 529.182 431.851 529.108 431.851 529.024 c
-431.851 528.061 432.634 527.274 433.597 527.274 c
-434.559 527.274 435.335 528.061 435.335 529.024 c
-435.335 529.064 435.324 529.097 435.324 529.138 c
-441.435 529.138 l
-441.435 529.097 441.424 529.064 441.424 529.024 c
-441.424 528.061 442.199 527.274 443.163 527.274 c
-444.125 527.274 444.911 528.061 444.911 529.024 c
-444.911 529.982 444.125 530.759 443.163 530.759 c
-442.369 530.759 441.718 530.225 441.505 529.502 c
-435.254 529.502 l
-435.041 530.225 434.391 530.759 433.597 530.759 c
-432.847 530.759 432.208 530.281 431.965 529.616 c
-428.441 530.111 426.453 532.11 424.41 534.154 c
-422.617 535.947 420.779 537.77 417.898 538.541 c
-431.851 538.541 l
-431.874 537.601 432.653 536.851 433.597 536.851 c
-434.559 536.851 435.335 537.622 435.335 538.586 c
-435.335 539.548 434.559 540.334 433.597 540.334 c
-432.751 540.334 432.042 539.729 431.884 538.927 c
-408.473 538.927 l
-411.353 539.698 413.191 541.51 414.985 543.303 c
-416.98 545.302 418.938 547.258 422.319 547.809 c
-422.48 547.016 423.182 546.412 424.024 546.412 c
-424.917 546.412 425.652 547.096 425.748 547.967 c
-431.874 547.967 l
-431.969 547.096 432.704 546.412 433.597 546.412 c
-434.559 546.412 435.335 547.199 435.335 548.162 c
-435.335 549.125 434.559 549.9 433.597 549.9 c
-432.701 549.9 431.969 549.217 431.874 548.346 c
-425.748 548.346 l
-425.652 549.217 424.921 549.9 424.024 549.9 c
-423.068 549.9 422.297 549.136 422.286 548.184 c
-418.784 547.618 416.722 545.582 414.723 543.579 c
-412.367 541.224 410.079 538.927 405.433 538.927 c
-397.558 538.927 l
-397.4 539.729 396.691 540.334 395.846 540.334 c
-395 540.334 394.302 539.729 394.141 538.927 c
-388.522 538.927 l
-388.515 538.96 388.507 538.99 388.496 539.019 c
-388.478 539.104 388.452 539.181 388.419 539.262 c
-388.386 539.339 388.349 539.416 388.305 539.49 c
-388.284 539.526 388.257 539.559 388.236 539.592 c
-388.176 539.673 388.11 539.75 388.041 539.82 c
-387.971 539.89 387.904 539.956 387.824 540.015 c
-387.813 540.022 387.802 540.03 387.791 540.037 c
-387.784 540.045 387.773 540.045 387.765 540.048 c
-387.681 540.107 387.589 540.155 387.493 540.199 c
-387.287 540.284 387.056 540.334 386.817 540.334 c
-386.696 540.334 386.582 540.313 386.464 540.286 c
-386.376 540.268 386.284 540.253 386.2 540.221 c
-386.141 540.199 386.086 540.169 386.03 540.14 c
-385.994 540.122 385.961 540.103 385.928 540.085 c
-385.876 540.051 385.824 540.026 385.777 539.993 c
-385.726 539.952 385.678 539.897 385.63 539.853 c
-385.612 539.839 385.589 539.827 385.571 539.809 c
-385.494 539.732 385.428 539.648 385.365 539.555 c
-385.307 539.467 385.252 539.372 385.207 539.272 c
-385.207 539.262 l
-385.171 539.174 385.138 539.089 385.116 538.997 c
-381.184 539.324 378.141 540.941 375.539 543.282 c
-372.621 545.909 370.273 549.429 367.917 552.961 c
-365.566 556.492 363.21 560.046 360.241 562.717 c
-357.673 565.033 354.633 566.683 350.779 567.083 c
-350.631 567.891 349.919 568.502 349.066 568.502 c
-348.247 568.502 347.57 567.936 347.387 567.175 c
-332.144 567.175 l
-331.957 567.936 331.284 568.502 330.465 568.502 c
-329.619 568.502 328.907 567.906 328.749 567.105 c
-324.846 566.701 322.656 564.533 320.535 562.409 c
-318.18 560.057 315.901 557.761 311.257 557.761 c
-304.024 557.761 l
-304.006 558.705 303.238 559.461 302.287 559.461 c
-301.335 559.461 300.567 558.705 300.548 557.761 c
-293.923 557.761 l
-293.905 558.705 293.136 559.461 292.184 559.461 c
-291.288 559.461 290.568 558.789 290.472 557.919 c
-287.084 558.466 285.122 560.41 283.123 562.409 c
-281.068 564.467 278.967 566.573 275.285 567.072 c
-275.141 567.888 274.439 568.502 273.583 568.502 c
-271.639 551.054 m
-271.639 545.329 l
-273.55 542.459 l
-275.457 545.329 l
-275.457 551.054 l
-h
-394.086 551.054 m
-394.086 545.329 l
-395.993 542.459 l
-397.9 545.329 l
-397.9 551.054 l
-h
-303.473 547.967 m
-319.172 547.967 l
-319.271 547.096 319.992 546.412 320.888 546.412 c
-321.785 546.412 322.516 547.096 322.611 547.967 c
-328.212 547.967 l
-328.308 547.096 329.031 546.412 329.925 546.412 c
-330.791 546.412 331.516 547.048 331.652 547.875 c
-335.275 547.419 337.303 545.38 339.376 543.303 c
-341.169 541.51 343.007 539.698 345.887 538.931 c
-341.202 538.931 l
-341.044 539.729 340.346 540.334 339.501 540.334 c
-338.656 540.334 337.946 539.729 337.788 538.931 c
-322.6 538.931 l
-322.443 539.729 321.734 540.334 320.888 540.334 c
-320.043 540.334 319.345 539.729 319.187 538.931 c
-313.028 538.931 l
-312.87 539.729 312.168 540.334 311.323 540.334 c
-310.478 540.334 309.78 539.729 309.622 538.931 c
-303.463 538.931 l
-303.305 539.729 302.595 540.334 301.75 540.334 c
-300.93 540.334 300.255 539.761 300.067 538.997 c
-296.411 539.254 293.996 540.316 292.243 541.819 c
-292.026 542.003 291.821 542.208 291.626 542.403 c
-291.939 542.705 292.243 542.999 292.552 543.303 c
-294.58 545.333 296.565 547.328 300.045 547.842 c
-300.063 547.754 300.085 547.662 300.115 547.577 c
-300.118 547.563 300.122 547.548 300.126 547.534 c
-300.155 547.457 300.199 547.386 300.24 547.317 c
-300.247 547.302 300.255 547.284 300.261 547.269 c
-300.295 547.214 300.328 547.162 300.365 547.111 c
-300.416 547.045 300.467 546.986 300.527 546.927 c
-300.589 546.865 300.651 546.81 300.721 546.754 c
-300.754 546.732 300.787 546.711 300.824 546.688 c
-300.872 546.659 300.92 546.634 300.971 546.607 c
-301.022 546.582 301.074 546.549 301.133 546.526 c
-301.217 546.493 301.313 546.468 301.404 546.449 c
-301.518 546.424 301.628 546.412 301.75 546.412 c
-301.974 546.412 302.18 546.46 302.378 546.538 c
-302.478 546.578 302.573 546.622 302.661 546.677 c
-302.727 546.717 302.786 546.765 302.845 546.813 c
-302.867 546.831 302.893 546.839 302.915 546.857 c
-302.937 546.879 302.959 546.905 302.981 546.927 c
-303.11 547.056 303.209 547.203 303.29 547.361 c
-303.338 547.453 303.374 547.548 303.403 547.648 c
-303.436 547.75 303.463 547.857 303.473 547.967 c
-291.351 542.139 m
-291.556 541.933 291.773 541.731 292.001 541.533 c
-293.397 540.338 295.195 539.416 297.634 538.931 c
-286.036 538.931 l
-288.286 539.53 289.899 540.768 291.351 542.139 c
-441.174 540.687 m
-441.174 534.966 l
-443.082 532.107 l
-444.988 534.966 l
-444.988 540.687 l
-h
-333.125 538.541 m
-337.752 538.541 l
-337.777 537.601 338.556 536.851 339.501 536.851 c
-340.449 536.851 341.214 537.601 341.239 538.541 c
-347.328 538.541 l
-347.354 537.601 348.118 536.851 349.066 536.851 c
-350.01 536.851 350.789 537.601 350.812 538.541 c
-365.93 538.541 l
-365.955 537.601 366.731 536.851 367.679 536.851 c
-368.623 536.851 369.392 537.601 369.417 538.541 c
-385.068 538.541 l
-385.072 538.497 385.076 538.457 385.079 538.416 c
-385.09 538.343 385.097 538.269 385.116 538.2 c
-385.138 538.096 385.167 538.005 385.207 537.913 c
-385.23 537.861 385.259 537.814 385.284 537.762 c
-385.365 537.616 385.465 537.472 385.583 537.35 c
-385.604 537.332 385.63 537.314 385.652 537.296 c
-385.795 537.167 385.953 537.064 386.134 536.987 c
-386.144 536.987 l
-386.244 536.943 386.354 536.906 386.464 536.884 c
-386.475 536.884 l
-386.586 536.862 386.699 536.851 386.817 536.851 c
-386.938 536.851 387.048 536.862 387.158 536.884 c
-387.332 536.917 387.49 536.987 387.64 537.068 c
-387.688 537.094 387.744 537.115 387.787 537.145 c
-387.875 537.204 387.952 537.269 388.03 537.34 c
-388.041 537.35 l
-388.052 537.365 388.062 537.383 388.074 537.398 c
-388.137 537.464 388.206 537.538 388.257 537.616 c
-388.313 537.699 388.364 537.784 388.405 537.876 c
-388.411 537.888 388.411 537.902 388.415 537.913 c
-388.456 538.005 388.486 538.1 388.507 538.2 c
-388.526 538.269 388.537 538.343 388.544 538.416 c
-388.548 538.457 388.552 538.497 388.555 538.541 c
-392.976 538.541 l
-390.095 537.77 388.257 535.947 386.464 534.154 c
-384.413 532.103 382.418 530.104 378.876 529.616 c
-378.63 530.281 377.994 530.759 377.241 530.759 c
-376.451 530.759 375.796 530.225 375.587 529.502 c
-360.297 529.502 l
-360.083 530.225 359.433 530.759 358.639 530.759 c
-357.849 530.759 357.184 530.225 356.971 529.502 c
-350.735 529.502 l
-350.521 530.225 349.856 530.759 349.066 530.759 c
-348.306 530.759 347.67 530.269 347.431 529.593 c
-343.764 530.03 341.724 532.066 339.637 534.154 c
-337.844 535.947 336.006 537.77 333.125 538.541 c
-320.866 535.079 m
-318.955 532.221 l
-318.955 526.485 l
-322.773 526.485 l
-322.773 532.221 l
-h
-W n
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-/GS1 gs
-0 TL/Fm0 Do
-Q
-Q
-0 0 0 0 k
-q 1 0 0 1 40.6324 64.7361 cm
-0 0 m
--0.276 -0.306 -0.632 -0.541 -1.073 -0.706 c
--1.507 -0.871 -1.97 -0.948 -2.469 -0.941 c
--2.911 -0.941 -3.293 -0.846 -3.616 -0.662 c
--3.939 -0.467 -4.189 -0.188 -4.366 0.176 c
--4.542 0.536 -4.642 0.955 -4.659 1.425 c
--4.671 1.679 -4.656 1.944 -4.615 2.219 c
--4.439 3.424 l
--4.285 4.453 -3.95 5.247 -3.439 5.805 c
--2.932 6.364 -2.263 6.632 -1.44 6.614 c
--0.735 6.603 -0.206 6.393 0.147 5.982 c
-0.5 5.57 0.68 4.968 0.69 4.174 c
--0.721 4.174 l
--0.735 4.586 l
--0.775 5.104 -1.037 5.373 -1.514 5.394 c
--2.213 5.423 -2.668 4.961 -2.881 4.012 c
--2.955 3.63 l
--3.16 2.219 l
--3.2 1.896 -3.215 1.616 -3.204 1.381 c
--3.197 1.007 -3.113 0.735 -2.955 0.558 c
--2.801 0.389 -2.583 0.301 -2.308 0.294 c
--2.043 0.294 -1.749 0.382 -1.426 0.558 c
--1.176 1.911 l
--2.19 1.911 l
--1.984 3.027 l
-0.47 3.027 l
-h
-2.095 -0.838 m
-0.698 -0.838 l
-1.639 4.629 l
-3.05 4.629 l
-h
-1.83 6.011 m
-1.83 6.247 1.903 6.437 2.051 6.585 c
-2.198 6.732 2.373 6.805 2.579 6.805 c
-2.793 6.813 2.977 6.746 3.123 6.599 c
-3.271 6.46 3.344 6.283 3.344 6.071 c
-3.344 5.835 3.271 5.644 3.123 5.497 c
-2.977 5.35 2.793 5.277 2.579 5.277 c
-2.363 5.265 2.183 5.328 2.036 5.468 c
-1.897 5.614 1.83 5.795 1.83 6.011 c
-5.945 5.967 m
-5.71 4.629 l
-6.416 4.629 l
-6.24 3.557 l
-5.534 3.557 l
-5.064 0.793 l
-5.049 0.631 l
-5.038 0.404 5.13 0.294 5.328 0.294 c
-5.388 0.282 5.505 0.286 5.681 0.309 c
-5.548 -0.809 l
-5.343 -0.897 5.097 -0.941 4.814 -0.941 c
-4.409 -0.93 4.108 -0.786 3.902 -0.5 c
-3.697 -0.206 3.616 0.183 3.667 0.675 c
-4.137 3.557 l
-3.52 3.557 l
-3.697 4.629 l
-4.314 4.629 l
-4.549 5.967 l
-h
-7.915 0.396 m
-10.444 0.396 l
-10.238 -0.838 l
-6.254 -0.838 l
-7.533 6.526 l
-8.974 6.526 l
-h
-13.498 -0.838 m
-13.475 -0.721 13.468 -0.581 13.468 -0.412 c
-13.152 -0.765 12.796 -0.941 12.395 -0.941 c
-11.973 -0.941 11.634 -0.79 11.381 -0.485 c
-11.135 -0.184 11.021 0.195 11.042 0.646 c
-11.072 1.234 11.296 1.69 11.719 2.013 c
-12.137 2.344 12.704 2.513 13.409 2.513 c
-13.82 2.513 l
-13.88 2.954 l
-13.895 3.175 l
-13.895 3.469 13.777 3.615 13.542 3.615 c
-13.218 3.623 13.02 3.417 12.954 2.998 c
-11.557 2.983 l
-11.586 3.501 11.8 3.924 12.204 4.247 c
-12.604 4.579 13.093 4.74 13.674 4.733 c
-14.21 4.722 14.622 4.549 14.909 4.218 c
-15.202 3.895 15.324 3.461 15.276 2.925 c
-14.82 0.147 l
-14.805 -0.133 l
-14.795 -0.368 14.82 -0.574 14.879 -0.75 c
-14.865 -0.838 l
-h
-12.792 0.176 m
-13.034 0.165 13.263 0.272 13.468 0.5 c
-13.718 1.646 l
-13.409 1.646 l
-13.145 1.635 12.928 1.547 12.762 1.381 c
-12.594 1.213 12.498 1.003 12.469 0.749 c
-12.469 0.558 l
-12.469 0.448 12.49 0.357 12.542 0.278 c
-12.601 0.209 12.681 0.176 12.792 0.176 c
-18.057 -0.941 m
-17.595 -0.919 17.249 -0.706 17.014 -0.294 c
-16.837 -0.838 l
-15.53 -0.838 l
-16.882 6.923 l
-18.279 6.923 l
-17.749 4.174 l
-18.061 4.556 18.418 4.74 18.822 4.733 c
-19.3 4.722 19.66 4.542 19.895 4.189 c
-20.13 3.844 20.233 3.34 20.204 2.675 c
-20.182 1.899 20.087 1.227 19.91 0.661 c
-19.74 0.091 19.502 -0.324 19.189 -0.588 c
-18.874 -0.842 18.499 -0.96 18.057 -0.941 c
-18.836 2.66 m
-18.844 2.973 18.807 3.193 18.719 3.322 c
-18.639 3.457 18.506 3.528 18.323 3.528 c
-18.065 3.534 17.83 3.403 17.617 3.131 c
-17.19 0.617 l
-17.286 0.382 17.477 0.253 17.764 0.235 c
-18.282 0.205 18.591 0.577 18.69 1.352 c
-18.734 1.72 l
-h
-25.672 1.72 m
-23.262 1.72 l
-23.482 2.91 l
-25.878 2.91 l
-h
-32.933 2.352 m
-30.684 2.352 l
-30.346 0.396 l
-33.007 0.396 l
-32.787 -0.838 l
-28.685 -0.838 l
-29.964 6.526 l
-34.065 6.526 l
-33.845 5.277 l
-31.199 5.277 l
-30.89 3.542 l
-33.139 3.542 l
-h
-35.424 1.205 m
-36.63 4.629 l
-38.115 4.629 l
-35.807 -0.838 l
-34.484 -0.838 l
-33.867 4.629 l
-35.293 4.629 l
-h
-39.966 -0.941 m
-39.526 -0.941 39.147 -0.834 38.835 -0.618 c
-38.53 -0.405 38.31 -0.103 38.173 0.278 c
-38.034 0.661 37.99 1.095 38.041 1.587 c
-38.085 1.955 l
-38.202 2.865 38.474 3.561 38.908 4.041 c
-39.349 4.519 39.912 4.751 40.599 4.733 c
-41.098 4.71 41.488 4.556 41.774 4.262 c
-42.058 3.968 42.223 3.549 42.274 3.013 c
-42.293 2.69 42.282 2.373 42.245 2.072 c
-42.157 1.411 l
-39.423 1.411 l
-39.401 1.271 39.397 1.135 39.409 0.999 c
-39.438 0.507 39.677 0.257 40.128 0.249 c
-40.548 0.239 40.955 0.4 41.348 0.735 c
-41.819 -0.133 l
-41.631 -0.389 41.371 -0.588 41.04 -0.736 c
-40.706 -0.882 40.349 -0.948 39.966 -0.941 c
-40.467 3.557 m
-40.062 3.564 39.783 3.307 39.629 2.778 c
-39.526 2.41 l
-40.907 2.41 l
-40.944 2.605 40.966 2.763 40.966 2.881 c
-40.974 3.31 40.808 3.534 40.467 3.557 c
-45.799 3.248 m
-45.358 3.307 l
-44.982 3.314 44.681 3.138 44.446 2.778 c
-43.814 -0.838 l
-42.418 -0.838 l
-43.373 4.629 l
-44.681 4.629 l
-44.564 4.027 l
-44.729 4.292 44.891 4.475 45.049 4.586 c
-45.203 4.692 45.376 4.747 45.564 4.747 c
-45.67 4.747 45.813 4.722 45.99 4.674 c
-h
-47.897 1.572 m
-49.146 4.629 l
-50.661 4.629 l
-47.853 -1.661 l
-47.647 -2.151 47.405 -2.503 47.133 -2.72 c
-46.857 -2.944 46.537 -3.057 46.177 -3.057 c
-46.037 -3.057 45.832 -3.021 45.56 -2.955 c
-45.692 -1.838 l
-45.839 -1.852 l
-46.221 -1.852 46.501 -1.68 46.677 -1.338 c
-46.912 -0.823 l
-46.339 4.629 l
-47.808 4.629 l
-h
-52.997 4.733 m
-53.556 4.71 53.986 4.519 54.291 4.159 c
-54.603 3.806 54.776 3.326 54.806 2.719 c
-54.806 2.366 l
-54.754 1.308 54.501 0.484 54.041 -0.103 c
-53.578 -0.684 52.976 -0.96 52.233 -0.941 c
-51.8 -0.93 51.443 -0.817 51.16 -0.588 c
-50.873 -0.364 50.667 -0.056 50.543 0.338 c
-50.426 0.738 50.389 1.198 50.44 1.72 c
-50.469 1.984 l
-50.565 2.844 50.84 3.52 51.292 4.012 c
-51.741 4.512 52.31 4.751 52.997 4.733 c
-51.822 1.146 m
-51.822 0.558 51.997 0.253 52.35 0.235 c
-52.839 0.205 53.159 0.577 53.306 1.352 c
-53.35 1.72 l
-53.398 2.198 53.424 2.506 53.424 2.645 c
-53.424 3.222 53.24 3.528 52.88 3.557 c
-52.604 3.564 52.38 3.439 52.204 3.175 c
-52.035 2.917 51.928 2.547 51.88 2.057 c
-51.839 1.565 51.822 1.263 51.822 1.146 c
-57.246 4.629 m
-57.142 4.086 l
-57.532 4.534 57.958 4.751 58.422 4.733 c
-58.804 4.722 59.091 4.575 59.288 4.292 c
-59.494 4.016 59.598 3.619 59.598 3.101 c
-59.568 2.645 l
-58.98 -0.838 l
-57.584 -0.838 l
-58.157 2.645 l
-58.187 2.94 l
-58.204 3.34 58.058 3.542 57.745 3.542 c
-57.599 3.542 57.47 3.501 57.363 3.424 c
-57.264 3.343 57.175 3.252 57.098 3.145 c
-56.393 -0.838 l
-54.997 -0.838 l
-55.952 4.629 l
-h
-62.141 -0.941 m
-61.699 -0.941 61.321 -0.834 61.009 -0.618 c
-60.703 -0.405 60.483 -0.103 60.347 0.278 c
-60.207 0.661 60.163 1.095 60.215 1.587 c
-60.259 1.955 l
-60.377 2.865 60.649 3.561 61.082 4.041 c
-61.522 4.519 62.085 4.751 62.773 4.733 c
-63.272 4.71 63.662 4.556 63.949 4.262 c
-64.231 3.968 64.396 3.549 64.448 3.013 c
-64.466 2.69 64.456 2.373 64.419 2.072 c
-64.331 1.411 l
-61.597 1.411 l
-61.574 1.271 61.57 1.135 61.582 0.999 c
-61.611 0.507 61.85 0.257 62.302 0.249 c
-62.721 0.239 63.128 0.4 63.522 0.735 c
-63.992 -0.133 l
-63.805 -0.389 63.544 -0.588 63.213 -0.736 c
-62.879 -0.882 62.522 -0.948 62.141 -0.941 c
-62.64 3.557 m
-62.236 3.564 61.956 3.307 61.802 2.778 c
-61.699 2.41 l
-63.081 2.41 l
-63.118 2.605 63.14 2.763 63.14 2.881 c
-63.147 3.31 62.982 3.534 62.64 3.557 c
-69.034 0.235 m
-69.416 0.224 69.655 0.5 69.754 1.058 c
-71.063 1.058 l
-71.004 0.448 70.776 -0.04 70.386 -0.412 c
-69.993 -0.786 69.519 -0.96 68.961 -0.941 c
-68.45 -0.93 68.042 -0.78 67.741 -0.485 c
-67.436 -0.192 67.255 0.213 67.197 0.735 c
-67.145 1.153 67.171 1.664 67.27 2.263 c
-67.365 2.869 67.554 3.373 67.829 3.777 c
-68.269 4.432 68.894 4.751 69.711 4.733 c
-70.258 4.71 70.681 4.512 70.974 4.13 c
-71.269 3.748 71.4 3.233 71.371 2.587 c
-70.048 2.587 l
-70.048 2.896 l
-70.037 3.314 69.875 3.534 69.563 3.557 c
-69.063 3.575 68.77 3.189 68.682 2.395 c
-68.578 1.484 l
-68.538 1.209 68.523 0.984 68.535 0.808 c
-68.564 0.434 68.729 0.242 69.034 0.235 c
-74.028 -0.838 m
-74.006 -0.721 73.999 -0.581 73.999 -0.412 c
-73.682 -0.765 73.326 -0.941 72.926 -0.941 c
-72.503 -0.941 72.165 -0.79 71.911 -0.485 c
-71.666 -0.184 71.552 0.195 71.573 0.646 c
-71.602 1.234 71.827 1.69 72.25 2.013 c
-72.668 2.344 73.235 2.513 73.94 2.513 c
-74.351 2.513 l
-74.411 2.954 l
-74.425 3.175 l
-74.425 3.469 74.307 3.615 74.072 3.615 c
-73.749 3.623 73.551 3.417 73.484 2.998 c
-72.088 2.983 l
-72.117 3.501 72.331 3.924 72.734 4.247 c
-73.135 4.579 73.624 4.74 74.205 4.733 c
-74.741 4.722 75.153 4.549 75.439 4.218 c
-75.733 3.895 75.855 3.461 75.807 2.925 c
-75.351 0.147 l
-75.336 -0.133 l
-75.325 -0.368 75.351 -0.574 75.41 -0.75 c
-75.396 -0.838 l
-h
-73.322 0.176 m
-73.565 0.165 73.793 0.272 73.999 0.5 c
-74.249 1.646 l
-73.94 1.646 l
-73.675 1.635 73.459 1.547 73.293 1.381 c
-73.124 1.213 73.029 1.003 72.999 0.749 c
-72.999 0.558 l
-72.999 0.448 73.021 0.357 73.073 0.278 c
-73.131 0.209 73.212 0.176 73.322 0.176 c
-78.28 4.629 m
-78.177 4.086 l
-78.567 4.534 78.993 4.751 79.456 4.733 c
-79.838 4.722 80.125 4.575 80.323 4.292 c
-80.529 4.016 80.632 3.619 80.632 3.101 c
-80.603 2.645 l
-80.015 -0.838 l
-78.618 -0.838 l
-79.191 2.645 l
-79.221 2.94 l
-79.238 3.34 79.092 3.542 78.779 3.542 c
-78.633 3.542 78.504 3.501 78.397 3.424 c
-78.298 3.343 78.21 3.252 78.133 3.145 c
-77.428 -0.838 l
-76.031 -0.838 l
-76.986 4.629 l
-h
-85.357 0.235 m
-85.74 0.224 85.979 0.5 86.078 1.058 c
-87.386 1.058 l
-87.327 0.448 87.099 -0.04 86.71 -0.412 c
-86.317 -0.786 85.842 -0.96 85.284 -0.941 c
-84.773 -0.93 84.366 -0.78 84.064 -0.485 c
-83.759 -0.192 83.579 0.213 83.52 0.735 c
-83.469 1.153 83.494 1.664 83.593 2.263 c
-83.689 2.869 83.876 3.373 84.152 3.777 c
-84.593 4.432 85.218 4.751 86.033 4.733 c
-86.581 4.71 87.003 4.512 87.298 4.13 c
-87.591 3.748 87.724 3.233 87.695 2.587 c
-86.372 2.587 l
-86.372 2.896 l
-86.361 3.314 86.199 3.534 85.887 3.557 c
-85.387 3.575 85.093 3.189 85.004 2.395 c
-84.902 1.484 l
-84.861 1.209 84.846 0.984 84.858 0.808 c
-84.887 0.434 85.052 0.242 85.357 0.235 c
-90.627 4.733 m
-91.186 4.71 91.616 4.519 91.921 4.159 c
-92.233 3.806 92.406 3.326 92.435 2.719 c
-92.435 2.366 l
-92.383 1.308 92.13 0.484 91.67 -0.103 c
-91.208 -0.684 90.605 -0.96 89.862 -0.941 c
-89.43 -0.93 89.073 -0.817 88.79 -0.588 c
-88.503 -0.364 88.297 -0.056 88.173 0.338 c
-88.055 0.738 88.018 1.198 88.069 1.72 c
-88.098 1.984 l
-88.194 2.844 88.47 3.52 88.921 4.012 c
-89.37 4.512 89.939 4.751 90.627 4.733 c
-89.451 1.146 m
-89.451 0.558 89.627 0.253 89.98 0.235 c
-90.469 0.205 90.789 0.577 90.936 1.352 c
-90.98 1.72 l
-91.028 2.198 91.053 2.506 91.053 2.645 c
-91.053 3.222 90.87 3.528 90.509 3.557 c
-90.234 3.564 90.01 3.439 89.833 3.175 c
-89.665 2.917 89.557 2.547 89.509 2.057 c
-89.469 1.565 89.451 1.263 89.451 1.146 c
-94.878 4.629 m
-94.776 4.086 l
-95.165 4.534 95.591 4.751 96.054 4.733 c
-96.437 4.722 96.723 4.575 96.922 4.292 c
-97.128 4.016 97.23 3.619 97.23 3.101 c
-97.201 2.645 l
-96.613 -0.838 l
-95.217 -0.838 l
-95.79 2.645 l
-95.819 2.94 l
-95.838 3.34 95.691 3.542 95.379 3.542 c
-95.231 3.542 95.103 3.501 94.996 3.424 c
-94.897 3.343 94.809 3.252 94.732 3.145 c
-94.026 -0.838 l
-92.63 -0.838 l
-93.585 4.629 l
-h
-100.318 5.967 m
-100.082 4.629 l
-100.788 4.629 l
-100.611 3.557 l
-99.906 3.557 l
-99.435 0.793 l
-99.421 0.631 l
-99.41 0.404 99.502 0.294 99.7 0.294 c
-99.759 0.282 99.876 0.286 100.052 0.309 c
-99.921 -0.809 l
-99.715 -0.897 99.468 -0.941 99.186 -0.941 c
-98.781 -0.93 98.48 -0.786 98.274 -0.5 c
-98.068 -0.206 97.987 0.183 98.039 0.675 c
-98.51 3.557 l
-97.892 3.557 l
-98.068 4.629 l
-98.685 4.629 l
-98.921 5.967 l
-h
-103.933 3.248 m
-103.493 3.307 l
-103.117 3.314 102.816 3.138 102.581 2.778 c
-101.949 -0.838 l
-100.553 -0.838 l
-101.508 4.629 l
-102.816 4.629 l
-102.699 4.027 l
-102.864 4.292 103.026 4.475 103.184 4.586 c
-103.338 4.692 103.51 4.747 103.698 4.747 c
-103.805 4.747 103.948 4.722 104.125 4.674 c
-h
-105.304 -0.838 m
-103.907 -0.838 l
-104.848 4.629 l
-106.259 4.629 l
-h
-105.039 6.011 m
-105.039 6.247 105.113 6.437 105.26 6.585 c
-105.407 6.732 105.583 6.805 105.789 6.805 c
-106.003 6.813 106.186 6.746 106.333 6.599 c
-106.479 6.46 106.554 6.283 106.554 6.071 c
-106.554 5.835 106.479 5.644 106.333 5.497 c
-106.186 5.35 106.003 5.277 105.789 5.277 c
-105.573 5.265 105.392 5.328 105.245 5.468 c
-105.106 5.614 105.039 5.795 105.039 6.011 c
-108.876 -0.941 m
-108.413 -0.919 108.067 -0.706 107.832 -0.294 c
-107.655 -0.838 l
-106.348 -0.838 l
-107.7 6.923 l
-109.097 6.923 l
-108.567 4.174 l
-108.879 4.556 109.236 4.74 109.64 4.733 c
-110.118 4.722 110.478 4.542 110.713 4.189 c
-110.948 3.844 111.051 3.34 111.022 2.675 c
-111 1.899 110.905 1.227 110.728 0.661 c
-110.559 0.091 110.32 -0.324 110.007 -0.588 c
-109.692 -0.842 109.317 -0.96 108.876 -0.941 c
-109.655 2.66 m
-109.662 2.973 109.625 3.193 109.537 3.322 c
-109.457 3.457 109.324 3.528 109.141 3.528 c
-108.883 3.534 108.648 3.403 108.435 3.131 c
-108.009 0.617 l
-108.104 0.382 108.295 0.253 108.582 0.235 c
-109.1 0.205 109.409 0.577 109.508 1.352 c
-109.552 1.72 l
-h
-114.003 -0.339 m
-113.656 -0.75 113.257 -0.948 112.797 -0.941 c
-112.433 -0.941 112.143 -0.823 111.929 -0.588 c
-111.713 -0.346 111.591 -0.015 111.562 0.396 c
-111.54 0.631 111.54 0.86 111.562 1.087 c
-112.164 4.629 l
-113.546 4.629 l
-112.958 1.072 l
-112.944 0.823 l
-112.933 0.654 112.958 0.517 113.018 0.411 c
-113.076 0.312 113.168 0.257 113.297 0.249 c
-113.569 0.239 113.826 0.382 114.061 0.675 c
-114.751 4.629 l
-116.148 4.629 l
-115.208 -0.838 l
-113.899 -0.838 l
-h
-118.897 5.967 m
-118.662 4.629 l
-119.368 4.629 l
-119.191 3.557 l
-118.485 3.557 l
-118.015 0.793 l
-118.001 0.631 l
-117.989 0.404 118.082 0.294 118.279 0.294 c
-118.338 0.282 118.456 0.286 118.632 0.309 c
-118.5 -0.809 l
-118.294 -0.897 118.048 -0.941 117.766 -0.941 c
-117.361 -0.93 117.06 -0.786 116.854 -0.5 c
-116.648 -0.206 116.567 0.183 116.619 0.675 c
-117.089 3.557 l
-116.472 3.557 l
-116.648 4.629 l
-117.265 4.629 l
-117.5 5.967 l
-h
-121.396 -0.941 m
-120.955 -0.941 120.576 -0.834 120.264 -0.618 c
-119.959 -0.405 119.738 -0.103 119.603 0.278 c
-119.463 0.661 119.418 1.095 119.47 1.587 c
-119.514 1.955 l
-119.632 2.865 119.904 3.561 120.337 4.041 c
-120.779 4.519 121.34 4.751 122.028 4.733 c
-122.528 4.71 122.917 4.556 123.204 4.262 c
-123.487 3.968 123.652 3.549 123.703 3.013 c
-123.722 2.69 123.711 2.373 123.674 2.072 c
-123.586 1.411 l
-120.852 1.411 l
-120.829 1.271 120.826 1.135 120.837 0.999 c
-120.866 0.507 121.105 0.257 121.558 0.249 c
-121.976 0.239 122.385 0.4 122.778 0.735 c
-123.248 -0.133 l
-123.061 -0.389 122.799 -0.588 122.469 -0.736 c
-122.134 -0.882 121.778 -0.948 121.396 -0.941 c
-121.895 3.557 m
-121.492 3.564 121.212 3.307 121.058 2.778 c
-120.955 2.41 l
-122.337 2.41 l
-122.373 2.605 122.395 2.763 122.395 2.881 c
-122.402 3.31 122.237 3.534 121.895 3.557 c
-135.212 4.145 m
-135.565 4.546 135.948 4.74 136.359 4.733 c
-136.76 4.722 137.065 4.571 137.271 4.277 c
-137.484 3.991 137.594 3.594 137.594 3.087 c
-137.579 2.601 l
-136.991 -0.838 l
-135.595 -0.838 l
-136.168 2.616 l
-136.197 2.91 l
-136.205 3.322 136.058 3.528 135.757 3.528 c
-135.529 3.534 135.316 3.417 135.11 3.175 c
-134.404 -0.838 l
-133.008 -0.838 l
-134.36 6.923 l
-135.757 6.923 l
-h
-140.696 5.967 m
-140.461 4.629 l
-141.166 4.629 l
-140.99 3.557 l
-140.284 3.557 l
-139.814 0.793 l
-139.799 0.631 l
-139.788 0.404 139.879 0.294 140.078 0.294 c
-140.137 0.282 140.255 0.286 140.431 0.309 c
-140.299 -0.809 l
-140.093 -0.897 139.847 -0.941 139.563 -0.941 c
-139.16 -0.93 138.858 -0.786 138.653 -0.5 c
-138.447 -0.206 138.366 0.183 138.418 0.675 c
-138.888 3.557 l
-138.27 3.557 l
-138.447 4.629 l
-139.064 4.629 l
-139.299 5.967 l
-h
-143.742 5.967 m
-143.507 4.629 l
-144.213 4.629 l
-144.036 3.557 l
-143.33 3.557 l
-142.86 0.793 l
-142.846 0.631 l
-142.834 0.404 142.927 0.294 143.125 0.294 c
-143.183 0.282 143.301 0.286 143.478 0.309 c
-143.345 -0.809 l
-143.139 -0.897 142.894 -0.941 142.61 -0.941 c
-142.206 -0.93 141.905 -0.786 141.699 -0.5 c
-141.493 -0.206 141.412 0.183 141.464 0.675 c
-141.934 3.557 l
-141.317 3.557 l
-141.493 4.629 l
-142.111 4.629 l
-142.346 5.967 l
-h
-146.491 -0.941 m
-146.069 -0.93 145.734 -0.746 145.491 -0.383 c
-145.007 -2.94 l
-143.625 -2.94 l
-144.933 4.629 l
-146.212 4.629 l
-146.123 4.13 l
-146.454 4.542 146.836 4.74 147.27 4.733 c
-147.748 4.722 148.107 4.542 148.342 4.189 c
-148.578 3.836 148.681 3.326 148.652 2.66 c
-148.629 1.866 148.534 1.194 148.357 0.646 c
-148.182 0.106 147.931 -0.302 147.608 -0.574 c
-147.292 -0.838 146.921 -0.96 146.491 -0.941 c
-147.27 2.675 m
-147.27 2.987 147.226 3.208 147.137 3.336 c
-147.056 3.461 146.931 3.532 146.755 3.542 c
-146.509 3.542 146.285 3.417 146.079 3.175 c
-145.624 0.588 l
-145.73 0.371 145.921 0.257 146.197 0.249 c
-146.704 0.22 147.023 0.621 147.152 1.454 c
-147.255 2.484 l
-h
-151.499 0.661 m
-151.536 0.897 151.356 1.105 150.956 1.294 c
-150.551 1.477 150.25 1.65 150.044 1.807 c
-149.846 1.973 149.699 2.153 149.603 2.352 c
-149.515 2.557 149.475 2.786 149.485 3.042 c
-149.515 3.532 149.721 3.939 150.103 4.262 c
-150.485 4.586 150.948 4.74 151.499 4.733 c
-152.047 4.722 152.477 4.56 152.793 4.247 c
-153.105 3.931 153.256 3.52 153.248 3.013 c
-151.852 3.013 l
-151.86 3.248 151.831 3.414 151.764 3.513 c
-151.694 3.619 151.58 3.675 151.426 3.675 c
-151.257 3.675 151.118 3.615 151 3.498 c
-150.89 3.388 150.827 3.256 150.809 3.101 c
-150.757 2.884 150.927 2.69 151.309 2.513 c
-151.698 2.344 151.977 2.204 152.146 2.087 c
-152.646 1.753 152.874 1.297 152.837 0.72 c
-152.815 0.386 152.712 0.091 152.529 -0.162 c
-152.34 -0.42 152.087 -0.614 151.764 -0.75 c
-151.448 -0.886 151.106 -0.948 150.735 -0.941 c
-150.195 -0.93 149.757 -0.761 149.427 -0.427 c
-149.092 -0.085 148.928 0.345 148.928 0.866 c
-150.264 0.852 l
-150.254 0.588 150.294 0.396 150.382 0.278 c
-150.478 0.168 150.625 0.118 150.823 0.118 c
-151 0.118 151.147 0.161 151.264 0.249 c
-151.389 0.345 151.47 0.484 151.499 0.661 c
-153.595 -0.148 m
-153.595 0.095 153.668 0.294 153.815 0.44 c
-153.969 0.595 154.167 0.675 154.403 0.675 c
-154.638 0.675 154.829 0.602 154.976 0.455 c
-155.13 0.316 155.211 0.139 155.211 -0.074 c
-155.211 -0.32 155.126 -0.522 154.961 -0.676 c
-154.803 -0.823 154.612 -0.897 154.388 -0.897 c
-154.152 -0.897 153.961 -0.831 153.815 -0.691 c
-153.668 -0.545 153.595 -0.364 153.595 -0.148 c
-154.535 3.615 m
-154.535 3.858 154.609 4.056 154.755 4.203 c
-154.91 4.357 155.108 4.438 155.343 4.438 c
-155.579 4.438 155.77 4.365 155.916 4.218 c
-156.071 4.079 156.151 3.902 156.151 3.689 c
-156.151 3.443 156.067 3.241 155.902 3.087 c
-155.744 2.94 155.553 2.865 155.328 2.865 c
-155.093 2.865 154.902 2.932 154.755 3.072 c
-154.609 3.218 154.535 3.399 154.535 3.615 c
-156.5 -1.47 m
-155.442 -1.47 l
-158.97 6.526 l
-160.028 6.526 l
-h
-158.566 -1.47 m
-157.508 -1.47 l
-161.036 6.526 l
-162.094 6.526 l
-h
-164.02 -0.838 m
-163.997 -0.721 163.99 -0.581 163.99 -0.412 c
-163.674 -0.765 163.317 -0.941 162.917 -0.941 c
-162.494 -0.941 162.156 -0.79 161.903 -0.485 c
-161.657 -0.184 161.543 0.195 161.564 0.646 c
-161.594 1.234 161.818 1.69 162.241 2.013 c
-162.659 2.344 163.226 2.513 163.931 2.513 c
-164.342 2.513 l
-164.402 2.954 l
-164.416 3.175 l
-164.416 3.469 164.298 3.615 164.063 3.615 c
-163.74 3.623 163.542 3.417 163.475 2.998 c
-162.079 2.983 l
-162.108 3.501 162.322 3.924 162.726 4.247 c
-163.126 4.579 163.615 4.74 164.196 4.733 c
-164.732 4.722 165.144 4.549 165.431 4.218 c
-165.724 3.895 165.846 3.461 165.798 2.925 c
-165.342 0.147 l
-165.327 -0.133 l
-165.316 -0.368 165.342 -0.574 165.401 -0.75 c
-165.387 -0.838 l
-h
-163.314 0.176 m
-163.556 0.165 163.785 0.272 163.99 0.5 c
-164.24 1.646 l
-163.931 1.646 l
-163.667 1.635 163.45 1.547 163.284 1.381 c
-163.116 1.213 163.02 1.003 162.991 0.749 c
-162.991 0.558 l
-162.991 0.448 163.012 0.357 163.064 0.278 c
-163.122 0.209 163.203 0.176 163.314 0.176 c
-168.58 -0.941 m
-168.117 -0.919 167.771 -0.706 167.536 -0.294 c
-167.359 -0.838 l
-166.052 -0.838 l
-167.404 6.923 l
-168.801 6.923 l
-168.271 4.174 l
-168.583 4.556 168.94 4.74 169.344 4.733 c
-169.822 4.722 170.182 4.542 170.417 4.189 c
-170.652 3.844 170.755 3.34 170.725 2.675 c
-170.704 1.899 170.608 1.227 170.432 0.661 c
-170.263 0.091 170.024 -0.324 169.711 -0.588 c
-169.395 -0.842 169.021 -0.96 168.58 -0.941 c
-169.358 2.66 m
-169.366 2.973 169.329 3.193 169.241 3.322 c
-169.16 3.457 169.028 3.528 168.844 3.528 c
-168.587 3.534 168.352 3.403 168.138 3.131 c
-167.712 0.617 l
-167.808 0.382 167.999 0.253 168.286 0.235 c
-168.803 0.205 169.113 0.577 169.212 1.352 c
-169.256 1.72 l
-h
-173.823 4.733 m
-174.382 4.71 174.812 4.519 175.117 4.159 c
-175.429 3.806 175.602 3.326 175.631 2.719 c
-175.631 2.366 l
-175.581 1.308 175.327 0.484 174.867 -0.103 c
-174.405 -0.684 173.802 -0.96 173.059 -0.941 c
-172.626 -0.93 172.269 -0.817 171.986 -0.588 c
-171.7 -0.364 171.494 -0.056 171.369 0.338 c
-171.251 0.738 171.215 1.198 171.266 1.72 c
-171.295 1.984 l
-171.39 2.844 171.666 3.52 172.119 4.012 c
-172.566 4.512 173.136 4.751 173.823 4.733 c
-172.647 1.146 m
-172.647 0.558 172.824 0.253 173.177 0.235 c
-173.665 0.205 173.985 0.577 174.133 1.352 c
-174.176 1.72 l
-174.224 2.198 174.25 2.506 174.25 2.645 c
-174.25 3.222 174.066 3.528 173.706 3.557 c
-173.43 3.564 173.206 3.439 173.03 3.175 c
-172.861 2.917 172.755 2.547 172.707 2.057 c
-172.666 1.565 172.647 1.263 172.647 1.146 c
-178.615 -0.339 m
-178.27 -0.75 177.869 -0.948 177.41 -0.941 c
-177.046 -0.941 176.756 -0.823 176.543 -0.588 c
-176.327 -0.346 176.205 -0.015 176.175 0.396 c
-176.153 0.631 176.153 0.86 176.175 1.087 c
-176.778 4.629 l
-178.16 4.629 l
-177.572 1.072 l
-177.557 0.823 l
-177.546 0.654 177.572 0.517 177.63 0.411 c
-177.69 0.312 177.781 0.257 177.91 0.249 c
-178.182 0.239 178.439 0.382 178.675 0.675 c
-179.365 4.629 l
-180.761 4.629 l
-179.82 -0.838 l
-178.513 -0.838 l
-h
-183.514 5.967 m
-183.279 4.629 l
-183.984 4.629 l
-183.808 3.557 l
-183.103 3.557 l
-182.632 0.793 l
-182.617 0.631 l
-182.606 0.404 182.698 0.294 182.897 0.294 c
-182.955 0.282 183.073 0.286 183.249 0.309 c
-183.117 -0.809 l
-182.912 -0.897 182.665 -0.941 182.382 -0.941 c
-181.978 -0.93 181.677 -0.786 181.47 -0.5 c
-181.265 -0.206 181.185 0.183 181.235 0.675 c
-181.706 3.557 l
-181.089 3.557 l
-181.265 4.629 l
-181.883 4.629 l
-182.118 5.967 l
-h
-183.999 -0.148 m
-183.999 0.095 184.073 0.294 184.219 0.44 c
-184.374 0.595 184.572 0.675 184.807 0.675 c
-185.042 0.675 185.233 0.602 185.381 0.455 c
-185.535 0.316 185.616 0.139 185.616 -0.074 c
-185.616 -0.32 185.532 -0.522 185.366 -0.676 c
-185.208 -0.823 185.017 -0.897 184.793 -0.897 c
-184.558 -0.897 184.366 -0.831 184.219 -0.691 c
-184.073 -0.545 183.999 -0.364 183.999 -0.148 c
-189.137 4.733 m
-189.614 4.71 189.967 4.512 190.195 4.13 c
-190.371 4.629 l
-191.635 4.629 l
-190.71 -0.838 l
-190.61 -1.551 190.334 -2.095 189.886 -2.469 c
-189.445 -2.841 188.886 -3.017 188.21 -2.999 c
-187.916 -2.988 187.622 -2.926 187.328 -2.808 c
-187.034 -2.698 186.792 -2.544 186.608 -2.338 c
-187.167 -1.353 l
-187.45 -1.676 187.803 -1.841 188.225 -1.852 c
-188.82 -1.881 189.187 -1.548 189.328 -0.853 c
-189.43 -0.397 l
-189.107 -0.761 188.743 -0.941 188.343 -0.941 c
-187.872 -0.941 187.512 -0.761 187.269 -0.397 c
-187.024 -0.037 186.906 0.47 186.916 1.117 c
-186.916 1.506 186.953 1.929 187.034 2.381 c
-187.111 2.84 187.226 3.226 187.373 3.542 c
-187.755 4.355 188.343 4.751 189.137 4.733 c
-188.284 1.132 m
-188.284 0.551 188.468 0.257 188.842 0.249 c
-189.085 0.249 189.316 0.357 189.534 0.573 c
-190.004 3.189 l
-189.875 3.414 189.688 3.532 189.445 3.542 c
-188.857 3.571 188.497 3.09 188.372 2.102 c
-188.313 1.631 188.284 1.308 188.284 1.132 c
-193.054 -0.838 m
-191.657 -0.838 l
-192.598 4.629 l
-194.009 4.629 l
-h
-192.789 6.011 m
-192.789 6.247 192.863 6.437 193.01 6.585 c
-193.156 6.732 193.333 6.805 193.538 6.805 c
-193.752 6.813 193.935 6.746 194.083 6.599 c
-194.23 6.46 194.303 6.283 194.303 6.071 c
-194.303 5.835 194.23 5.644 194.083 5.497 c
-193.935 5.35 193.752 5.277 193.538 5.277 c
-193.322 5.265 193.142 5.328 192.995 5.468 c
-192.855 5.614 192.789 5.795 192.789 6.011 c
-196.909 5.967 m
-196.674 4.629 l
-197.379 4.629 l
-197.202 3.557 l
-196.497 3.557 l
-196.027 0.793 l
-196.012 0.631 l
-196.001 0.404 196.092 0.294 196.291 0.294 c
-196.35 0.282 196.468 0.286 196.644 0.309 c
-196.512 -0.809 l
-196.306 -0.897 196.059 -0.941 195.776 -0.941 c
-195.373 -0.93 195.071 -0.786 194.866 -0.5 c
-194.66 -0.206 194.579 0.183 194.631 0.675 c
-195.101 3.557 l
-194.483 3.557 l
-194.66 4.629 l
-195.277 4.629 l
-195.512 5.967 l
-h
-198.614 -0.838 m
-197.218 -0.838 l
-198.555 6.923 l
-199.966 6.923 l
-h
-202.259 -0.838 m
-202.237 -0.721 202.23 -0.581 202.23 -0.412 c
-201.914 -0.765 201.557 -0.941 201.156 -0.941 c
-200.734 -0.941 200.396 -0.79 200.142 -0.485 c
-199.896 -0.184 199.782 0.195 199.805 0.646 c
-199.834 1.234 200.058 1.69 200.48 2.013 c
-200.9 2.344 201.465 2.513 202.171 2.513 c
-202.583 2.513 l
-202.641 2.954 l
-202.656 3.175 l
-202.656 3.469 202.538 3.615 202.303 3.615 c
-201.98 3.623 201.781 3.417 201.715 2.998 c
-200.318 2.983 l
-200.348 3.501 200.561 3.924 200.965 4.247 c
-201.366 4.579 201.854 4.74 202.435 4.733 c
-202.972 4.722 203.383 4.549 203.67 4.218 c
-203.965 3.895 204.085 3.461 204.038 2.925 c
-203.582 0.147 l
-203.568 -0.133 l
-203.556 -0.368 203.582 -0.574 203.641 -0.75 c
-203.626 -0.838 l
-h
-201.553 0.176 m
-201.796 0.165 202.024 0.272 202.23 0.5 c
-202.479 1.646 l
-202.171 1.646 l
-201.906 1.635 201.69 1.547 201.524 1.381 c
-201.355 1.213 201.259 1.003 201.23 0.749 c
-201.23 0.558 l
-201.23 0.448 201.252 0.357 201.303 0.278 c
-201.362 0.209 201.443 0.176 201.553 0.176 c
-206.82 -0.941 m
-206.356 -0.919 206.011 -0.706 205.775 -0.294 c
-205.6 -0.838 l
-204.291 -0.838 l
-205.644 6.923 l
-207.04 6.923 l
-206.511 4.174 l
-206.823 4.556 207.179 4.74 207.584 4.733 c
-208.061 4.722 208.422 4.542 208.657 4.189 c
-208.892 3.844 208.995 3.34 208.965 2.675 c
-208.943 1.899 208.848 1.227 208.671 0.661 c
-208.503 0.091 208.264 -0.324 207.951 -0.588 c
-207.635 -0.842 207.26 -0.96 206.82 -0.941 c
-207.599 2.66 m
-207.606 2.973 207.569 3.193 207.481 3.322 c
-207.4 3.457 207.267 3.528 207.084 3.528 c
-206.826 3.534 206.591 3.403 206.378 3.131 c
-205.952 0.617 l
-206.047 0.382 206.238 0.253 206.525 0.235 c
-207.044 0.205 207.352 0.577 207.452 1.352 c
-207.495 1.72 l
-h
-209.432 -0.148 m
-209.432 0.095 209.505 0.294 209.652 0.44 c
-209.807 0.595 210.005 0.675 210.24 0.675 c
-210.475 0.675 210.666 0.602 210.814 0.455 c
-210.968 0.316 211.049 0.139 211.049 -0.074 c
-211.049 -0.32 210.965 -0.522 210.799 -0.676 c
-210.641 -0.823 210.45 -0.897 210.226 -0.897 c
-209.991 -0.897 209.8 -0.831 209.652 -0.691 c
-209.505 -0.545 209.432 -0.364 209.432 -0.148 c
-214.217 0.235 m
-214.599 0.224 214.838 0.5 214.937 1.058 c
-216.245 1.058 l
-216.187 0.448 215.959 -0.04 215.569 -0.412 c
-215.175 -0.786 214.702 -0.96 214.143 -0.941 c
-213.632 -0.93 213.224 -0.78 212.923 -0.485 c
-212.618 -0.192 212.438 0.213 212.379 0.735 c
-212.328 1.153 212.353 1.664 212.453 2.263 c
-212.548 2.869 212.736 3.373 213.012 3.777 c
-213.452 4.432 214.077 4.751 214.893 4.733 c
-215.441 4.71 215.863 4.512 216.157 4.13 c
-216.451 3.748 216.584 3.233 216.553 2.587 c
-215.231 2.587 l
-215.231 2.896 l
-215.22 3.314 215.058 3.534 214.745 3.557 c
-214.246 3.575 213.952 3.189 213.864 2.395 c
-213.761 1.484 l
-213.721 1.209 213.706 0.984 213.717 0.808 c
-213.746 0.434 213.912 0.242 214.217 0.235 c
-219.49 4.733 m
-220.048 4.71 220.478 4.519 220.783 4.159 c
-221.095 3.806 221.268 3.326 221.298 2.719 c
-221.298 2.366 l
-221.247 1.308 220.993 0.484 220.534 -0.103 c
-220.071 -0.684 219.468 -0.96 218.726 -0.941 c
-218.292 -0.93 217.935 -0.817 217.652 -0.588 c
-217.366 -0.364 217.16 -0.056 217.035 0.338 c
-216.918 0.738 216.881 1.198 216.933 1.72 c
-216.962 1.984 l
-217.057 2.844 217.332 3.52 217.785 4.012 c
-218.233 4.512 218.803 4.751 219.49 4.733 c
-218.314 1.146 m
-218.314 0.558 218.49 0.253 218.843 0.235 c
-219.331 0.205 219.651 0.577 219.799 1.352 c
-219.842 1.72 l
-219.89 2.198 219.917 2.506 219.917 2.645 c
-219.917 3.222 219.732 3.528 219.372 3.557 c
-219.096 3.564 218.872 3.439 218.696 3.175 c
-218.527 2.917 218.421 2.547 218.373 2.057 c
-218.332 1.565 218.314 1.263 218.314 1.146 c
-223.767 4.629 m
-223.68 4.116 l
-224.062 4.534 224.491 4.74 224.973 4.733 c
-225.491 4.71 225.829 4.469 225.987 3.998 c
-226.398 4.498 226.857 4.74 227.368 4.733 c
-227.758 4.722 228.052 4.575 228.251 4.292 c
-228.457 4.016 228.559 3.619 228.559 3.101 c
-228.53 2.645 l
-227.956 -0.838 l
-226.56 -0.838 l
-227.133 2.645 l
-227.163 2.925 l
-227.192 3.336 227.052 3.542 226.751 3.542 c
-226.516 3.542 226.3 3.373 226.105 3.042 c
-226.075 2.807 l
-225.443 -0.838 l
-224.046 -0.838 l
-224.62 2.645 l
-224.649 2.925 l
-224.679 3.336 224.546 3.542 224.252 3.542 c
-224.106 3.542 223.981 3.501 223.885 3.424 c
-223.786 3.343 223.697 3.252 223.62 3.145 c
-222.93 -0.838 l
-221.533 -0.838 l
-222.474 4.629 l
-h
-229.232 -1.47 m
-228.174 -1.47 l
-231.701 6.526 l
-232.76 6.526 l
-h
-f
-Q
-q 1 0 0 1 127.5482 553.4567 cm
-0 0 m
--2.23 0 l
--2.224 -16.602 l
-6.802 -16.602 l
-6.802 -14.548 l
-0.007 -14.548 l
-h
-f
-Q
-q 1 0 0 1 142.9453 539.769 cm
-0 0 m
--0.559 -0.584 -1.496 -1.166 -2.764 -1.166 c
--4.461 -1.166 -5.145 -0.331 -5.145 0.76 c
--5.145 2.406 -4.006 3.193 -1.573 3.193 c
--1.114 3.193 -0.379 3.141 0 3.068 c
-h
--2.308 10.065 m
--4.108 10.065 -5.762 9.425 -7.052 8.363 c
--6.262 6.996 l
--5.351 7.53 -4.233 8.062 -2.635 8.062 c
--0.812 8.062 0 7.121 0 5.552 c
-0 4.74 l
--0.357 4.818 -1.091 4.868 -1.548 4.868 c
--5.45 4.868 -7.427 3.498 -7.427 0.635 c
--7.427 -1.926 -5.858 -3.219 -3.473 -3.219 c
--1.867 -3.219 -0.331 -2.484 0.202 -1.294 c
-0.61 -2.914 l
-2.179 -2.914 l
-2.179 5.578 l
-2.179 8.264 1.014 10.065 -2.308 10.065 c
-f
-Q
-q 1 0 0 1 152.3235 538.5263 cm
-0 0 m
--0.834 0 -1.569 0.103 -2.128 0.357 c
--2.128 8.037 l
--1.368 8.669 -0.43 9.125 0.76 9.125 c
-2.917 9.125 3.752 7.603 3.752 5.145 c
-3.752 1.646 2.41 0 0 0 c
-0.937 11.308 m
--1.056 11.308 -2.128 9.948 y
--2.128 12.09 l
--2.135 14.93 l
--4.314 14.93 l
--4.31 -1.267 l
--3.219 -1.724 -1.723 -1.977 -0.1 -1.977 c
-4.056 -1.977 6.059 0.684 6.059 5.274 c
-6.059 8.896 4.207 11.308 0.937 11.308 c
-f
-Q
-q 1 0 0 1 103.2978 551.6561 cm
-0 0 m
-1.977 0 3.246 -0.658 4.083 -1.319 c
-5.042 0.342 l
-3.734 1.488 1.977 2.106 0.1 2.106 c
--4.641 2.106 -7.96 -0.786 -7.96 -6.614 c
--7.96 -12.725 -4.376 -15.106 -0.279 -15.106 c
-1.775 -15.106 3.524 -14.626 4.663 -14.144 c
-4.619 -7.617 l
-4.619 -5.564 l
--1.466 -5.564 l
--1.466 -7.617 l
-2.411 -7.617 l
-2.459 -12.571 l
-1.951 -12.824 1.066 -13.026 -0.128 -13.026 c
--3.424 -13.026 -5.629 -10.954 -5.629 -6.589 c
--5.629 -2.153 -3.347 0 0 0 c
-f
-Q
-q 1 0 0 1 118.9894 553.4567 cm
-0 0 m
--2.183 0 l
--2.176 -2.788 l
--2.176 -12.421 l
--2.176 -15.106 -1.01 -16.907 2.311 -16.907 c
-2.77 -16.907 3.219 -16.867 3.657 -16.786 c
-3.657 -14.827 l
-3.341 -14.875 3.002 -14.904 2.643 -14.904 c
-0.816 -14.904 0.004 -13.967 0.004 -12.394 c
-0.004 -5.755 l
-3.657 -5.755 l
-3.657 -3.928 l
-0.004 -3.928 l
-h
-f
-Q
-111.276 549.529 2.179 -12.675 re
-f
-111.276 553.457 2.179 -2.179 re
-f
-0 0.672 0.855 0 k
-q 1 0 0 1 85.9054 541.8301 cm
-0 0 m
--2.815 8.665 l
--8.397 25.841 l
--8.683 26.723 -9.936 26.723 -10.223 25.841 c
--15.805 8.665 l
--34.341 8.665 l
--39.923 25.841 l
--40.209 26.723 -41.458 26.723 -41.745 25.841 c
--47.328 8.665 l
--50.146 0 l
--50.403 -0.794 -50.12 -1.658 -49.447 -2.146 c
--25.073 -19.854 l
--0.698 -2.146 l
--0.025 -1.658 0.257 -0.794 0 0 c
-f
-Q
-0.031 0.844 0.875 0.004 k
-q 1 0 0 1 60.8329 521.9758 cm
-0 0 m
-9.267 28.519 l
--9.268 28.519 l
-h
-f
-Q
-0 0.672 0.855 0 k
-q 1 0 0 1 60.8329 521.9758 cm
-0 0 m
--9.268 28.519 l
--22.255 28.519 l
-h
-f
-Q
-0 0.43 0.871 0 k
-q 1 0 0 1 38.5778 550.4952 cm
-0 0 m
--2.818 -8.665 l
--3.075 -9.459 -2.792 -10.323 -2.119 -10.811 c
-22.255 -28.517 l
-h
-f
-Q
-0.031 0.844 0.875 0.004 k
-q 1 0 0 1 38.5778 550.4952 cm
-0 0 m
-12.987 0 l
-7.405 17.176 l
-7.119 18.058 5.869 18.058 5.582 17.176 c
-h
-f
-Q
-0 0.672 0.855 0 k
-q 1 0 0 1 60.8329 521.9758 cm
-0 0 m
-9.267 28.519 l
-22.258 28.519 l
-h
-f
-Q
-0 0.43 0.871 0 k
-q 1 0 0 1 83.0908 550.4952 cm
-0 0 m
-2.815 -8.665 l
-3.072 -9.459 2.789 -10.323 2.117 -10.811 c
--22.258 -28.517 l
-h
-f
-Q
-0.031 0.844 0.875 0.004 k
-q 1 0 0 1 83.0908 550.4952 cm
-0 0 m
--12.991 0 l
--7.408 17.176 l
--7.121 18.058 -5.868 18.058 -5.582 17.176 c
-h
-f
-Q
-0 0 0 0 k
-q 1 0 0 1 537.4641 538.8828 cm
-0 0 m
--0.559 -0.706 l
--2.168 -2.58 -4.513 -3.513 -7.599 -3.513 c
--10.356 -3.513 -12.517 -2.601 -14.082 -0.779 c
--15.64 1.044 -16.441 3.62 -16.478 6.953 c
--16.478 11.936 l
--16.478 15.501 -15.769 18.172 -14.346 19.946 c
--12.917 21.718 -10.782 22.607 -7.938 22.607 c
--5.519 22.607 -3.628 21.931 -2.263 20.579 c
--0.893 19.227 -0.14 17.301 0 14.802 c
--3.19 14.802 l
--3.318 16.378 -3.759 17.613 -4.513 18.506 c
--5.259 19.395 -6.394 19.844 -7.923 19.844 c
--9.745 19.844 -11.083 19.245 -11.936 18.051 c
--12.788 16.864 -13.23 14.963 -13.259 12.347 c
--13.259 7.159 l
--13.259 4.601 -12.773 2.635 -11.803 1.264 c
--10.826 -0.099 -9.419 -0.779 -7.585 -0.779 c
--5.872 -0.779 -4.565 -0.363 -3.66 0.47 c
--3.19 0.912 l
--3.19 6.776 l
--7.834 6.776 l
--7.834 9.496 l
-0 9.496 l
-h
-8.673 -3.16 -3.19 25.414 re
-28.677 19.491 m
-21.99 19.491 l
-21.99 -3.16 l
-18.8 -3.16 l
-18.8 19.491 l
-12.127 19.491 l
-12.127 22.254 l
-28.677 22.254 l
-h
-55.982 4.91 m
-55.834 2.183 55.062 0.096 53.674 -1.352 c
-52.292 -2.793 50.33 -3.513 47.794 -3.513 c
-45.244 -3.513 43.215 -2.543 41.709 -0.602 c
-40.209 1.338 39.459 3.961 39.459 7.277 c
-39.459 11.892 l
-39.459 15.192 40.228 17.804 41.767 19.726 c
-43.314 21.644 45.42 22.607 48.088 22.607 c
-50.536 22.607 52.431 21.865 53.776 20.388 c
-55.128 18.918 55.864 16.816 55.982 14.082 c
-52.747 14.082 l
-52.608 16.158 52.174 17.639 51.44 18.521 c
-50.704 19.403 49.587 19.844 48.088 19.844 c
-46.353 19.844 45.019 19.16 44.09 17.801 c
-43.156 16.449 42.694 14.464 42.694 11.848 c
-42.694 7.188 l
-42.694 4.619 43.123 2.65 43.987 1.279 c
-44.858 -0.095 46.125 -0.779 47.794 -0.779 c
-49.458 -0.779 50.653 -0.367 51.38 0.456 c
-52.115 1.279 52.571 2.764 52.747 4.91 c
-h
-77 -3.16 m
-73.796 -3.16 l
-73.796 8.584 l
-63.566 8.584 l
-63.566 -3.16 l
-60.362 -3.16 l
-60.362 22.254 l
-63.566 22.254 l
-63.566 11.333 l
-73.796 11.333 l
-73.796 22.254 l
-77 22.254 l
-h
-94.838 8.584 m
-85.858 8.584 l
-85.858 -0.426 l
-96.323 -0.426 l
-96.323 -3.16 l
-82.652 -3.16 l
-82.652 22.254 l
-96.146 22.254 l
-96.146 19.491 l
-85.858 19.491 l
-85.858 11.333 l
-94.838 11.333 l
-h
-112.319 3.469 m
-103.734 3.469 l
-101.75 -3.16 l
-98.473 -3.16 l
-106.66 22.254 l
-109.394 22.254 l
-117.61 -3.16 l
-114.318 -3.16 l
-h
-104.573 6.232 m
-111.495 6.232 l
-108.027 17.786 l
-h
-133.754 19.491 m
-127.066 19.491 l
-127.066 -3.16 l
-123.877 -3.16 l
-123.877 19.491 l
-117.203 19.491 l
-117.203 22.254 l
-133.754 22.254 l
-h
-156.221 3.263 m
-156.221 4.528 155.876 5.498 155.193 6.174 c
-154.505 6.849 153.267 7.504 151.474 8.143 c
-149.68 8.79 148.306 9.467 147.358 10.172 c
-146.406 10.878 145.697 11.678 145.227 12.582 c
-144.756 13.483 144.521 14.512 144.521 15.669 c
-144.521 17.687 145.19 19.348 146.535 20.652 c
-147.876 21.953 149.636 22.607 151.812 22.607 c
-153.3 22.607 154.626 22.269 155.795 21.593 c
-156.96 20.924 157.857 19.998 158.485 18.815 c
-159.11 17.628 159.426 16.324 159.426 14.905 c
-156.221 14.905 l
-156.221 16.47 155.839 17.687 155.075 18.55 c
-154.318 19.41 153.23 19.844 151.812 19.844 c
-150.526 19.844 149.526 19.48 148.813 18.756 c
-148.107 18.04 147.754 17.029 147.754 15.728 c
-147.754 14.659 148.137 13.762 148.901 13.039 c
-149.673 12.31 150.86 11.664 152.458 11.098 c
-154.964 10.275 156.754 9.253 157.824 8.04 c
-158.9 6.835 159.44 5.251 159.44 3.293 c
-159.44 1.235 158.768 -0.419 157.427 -1.66 c
-156.093 -2.896 154.274 -3.513 151.974 -3.513 c
-150.493 -3.513 149.125 -3.189 147.872 -2.543 c
-146.626 -1.896 145.645 -0.992 144.932 0.177 c
-144.216 1.353 143.86 2.694 143.86 4.204 c
-147.064 4.204 l
-147.064 2.635 147.505 1.415 148.387 0.544 c
-149.269 -0.33 150.463 -0.764 151.974 -0.764 c
-153.385 -0.764 154.443 -0.407 155.149 0.309 c
-155.862 1.033 156.221 2.018 156.221 3.263 c
-180.325 -3.16 m
-177.12 -3.16 l
-177.12 8.584 l
-166.889 8.584 l
-166.889 -3.16 l
-163.685 -3.16 l
-163.685 22.254 l
-166.889 22.254 l
-166.889 11.333 l
-177.12 11.333 l
-177.12 22.254 l
-180.325 22.254 l
-h
-198.161 8.584 m
-189.181 8.584 l
-189.181 -0.426 l
-199.646 -0.426 l
-199.646 -3.16 l
-185.976 -3.16 l
-185.976 22.254 l
-199.47 22.254 l
-199.47 19.491 l
-189.181 19.491 l
-189.181 11.333 l
-198.161 11.333 l
-h
-215.969 8.584 m
-206.988 8.584 l
-206.988 -0.426 l
-217.454 -0.426 l
-217.454 -3.16 l
-203.784 -3.16 l
-203.784 22.254 l
-217.278 22.254 l
-217.278 19.491 l
-206.988 19.491 l
-206.988 11.333 l
-215.969 11.333 l
-h
-236.798 19.491 m
-230.11 19.491 l
-230.11 -3.16 l
-226.92 -3.16 l
-226.92 19.491 l
-220.247 19.491 l
-220.247 22.254 l
-236.798 22.254 l
-h
-f
-Q
-0.793 0.801 0.129 0.016 k
-35.668 501.669 238.665 -21.46 re
-f
-0 0 0 0 k
-q 1 0 0 1 142.3903 490.78 cm
-0 0 m
-0.47 4.763 l
-4.997 4.763 l
-4.997 3.205 l
-1.955 3.205 l
-1.793 1.206 l
-2.146 1.441 2.506 1.559 2.881 1.559 c
-3.653 1.559 4.248 1.283 4.659 0.736 c
-5.078 0.184 5.292 -0.595 5.292 -1.602 c
-5.292 -2.535 5.041 -3.289 4.542 -3.865 c
-4.042 -4.446 3.381 -4.733 2.558 -4.733 c
-2.057 -4.733 1.595 -4.615 1.176 -4.38 c
-0.754 -4.145 0.419 -3.821 0.176 -3.41 c
--0.059 -2.991 -0.177 -2.513 -0.177 -1.984 c
-1.617 -1.984 l
-1.646 -2.377 1.738 -2.682 1.897 -2.896 c
-2.061 -3.112 2.278 -3.218 2.543 -3.218 c
-2.837 -3.218 3.065 -3.079 3.233 -2.792 c
-3.399 -2.499 3.484 -2.065 3.484 -1.484 c
-3.484 -0.947 3.385 -0.54 3.19 -0.264 c
-2.992 0.008 2.72 0.148 2.367 0.148 c
-2.021 0.148 1.756 0.03 1.573 -0.205 c
-1.455 -0.367 l
-h
-6.868 -3.674 m
-6.868 -3.38 6.963 -3.141 7.162 -2.954 c
-7.357 -2.77 7.611 -2.675 7.927 -2.675 c
-8.228 -2.675 8.478 -2.77 8.676 -2.954 c
-8.882 -3.141 8.985 -3.38 8.985 -3.674 c
-8.985 -3.979 8.882 -4.226 8.676 -4.409 c
-8.478 -4.586 8.228 -4.674 7.927 -4.674 c
-7.622 -4.674 7.368 -4.582 7.162 -4.394 c
-6.963 -4.211 6.868 -3.968 6.868 -3.674 c
-16.709 -1.176 m
-15.769 -1.176 l
-15.769 -4.6 l
-13.887 -4.6 l
-13.887 4.763 l
-16.9 4.763 l
-17.849 4.763 18.58 4.516 19.09 4.028 c
-19.609 3.535 19.869 2.841 19.869 1.941 c
-19.869 0.695 19.418 -0.176 18.518 -0.675 c
-20.149 -4.512 l
-20.149 -4.6 l
-18.121 -4.6 l
-h
-15.769 0.397 m
-16.841 0.397 l
-17.224 0.397 17.506 0.518 17.694 0.765 c
-17.878 1.018 17.973 1.357 17.973 1.779 c
-17.973 2.72 17.61 3.19 16.885 3.19 c
-15.769 3.19 l
-h
-26.223 -0.544 m
-23.283 -0.544 l
-23.283 -3.027 l
-26.767 -3.027 l
-26.767 -4.6 l
-21.387 -4.6 l
-21.387 4.763 l
-26.752 4.763 l
-26.752 3.19 l
-23.283 3.19 l
-23.283 0.971 l
-26.223 0.971 l
-h
-31.085 -2.028 m
-32.658 4.763 l
-34.759 4.763 l
-32.07 -4.6 l
-30.1 -4.6 l
-27.41 4.763 l
-29.512 4.763 l
-h
-37.846 -4.6 -1.896 9.363 re
-44.373 -0.544 m
-41.433 -0.544 l
-41.433 -3.027 l
-44.917 -3.027 l
-44.917 -4.6 l
-39.536 -4.6 l
-39.536 4.763 l
-44.901 4.763 l
-44.901 3.19 l
-41.433 3.19 l
-41.433 0.971 l
-44.373 0.971 l
-h
-52.267 -1.117 m
-53.148 4.763 l
-55.029 4.763 l
-53.354 -4.6 l
-51.458 -4.6 l
-50.37 0.912 l
-49.297 -4.6 l
-47.386 -4.6 l
-45.711 4.763 l
-47.592 4.763 l
-48.473 -1.117 l
-49.576 4.763 l
-51.164 4.763 l
-h
-62.284 0.559 m
-63.695 4.763 l
-65.753 4.763 l
-63.239 -1.205 l
-63.239 -4.6 l
-61.328 -4.6 l
-61.328 -1.205 l
-58.814 4.763 l
-60.872 4.763 l
-h
-73.231 -0.764 m
-73.231 -2.021 72.929 -2.994 72.334 -3.689 c
-71.735 -4.388 70.912 -4.733 69.865 -4.733 c
-68.813 -4.733 67.986 -4.391 67.38 -3.704 c
-66.781 -3.009 66.476 -2.042 66.469 -0.808 c
-66.469 0.794 l
-66.469 2.076 66.767 3.08 67.365 3.807 c
-67.961 4.532 68.792 4.896 69.85 4.896 c
-70.887 4.896 71.706 4.535 72.304 3.822 c
-72.911 3.117 73.22 2.12 73.231 0.838 c
-h
-71.334 0.809 m
-71.334 1.65 71.209 2.278 70.967 2.691 c
-70.731 3.102 70.357 3.308 69.85 3.308 c
-69.35 3.308 68.975 3.105 68.732 2.705 c
-68.497 2.311 68.373 1.713 68.365 0.912 c
-68.365 -0.764 l
-68.365 -1.579 68.487 -2.182 68.732 -2.572 c
-68.975 -2.965 69.354 -3.16 69.865 -3.16 c
-70.353 -3.16 70.717 -2.969 70.952 -2.587 c
-71.195 -2.204 71.323 -1.616 71.334 -0.823 c
-h
-80.907 4.763 m
-80.907 -1.72 l
-80.896 -2.69 80.628 -3.436 80.099 -3.954 c
-79.57 -4.475 78.809 -4.733 77.821 -4.733 c
-76.821 -4.733 76.057 -4.475 75.527 -3.954 c
-74.999 -3.424 74.733 -2.668 74.733 -1.675 c
-74.733 4.763 l
-76.63 4.763 l
-76.63 -1.675 l
-76.63 -2.215 76.711 -2.597 76.88 -2.822 c
-77.056 -3.05 77.368 -3.16 77.821 -3.16 c
-78.269 -3.16 78.577 -3.05 78.746 -2.822 c
-78.912 -2.597 79 -2.23 79.011 -1.72 c
-79.011 4.763 l
-h
-85.398 -1.176 m
-84.457 -1.176 l
-84.457 -4.6 l
-82.575 -4.6 l
-82.575 4.763 l
-85.588 4.763 l
-86.537 4.763 87.269 4.516 87.779 4.028 c
-88.297 3.535 88.558 2.841 88.558 1.941 c
-88.558 0.695 88.106 -0.176 87.206 -0.675 c
-88.838 -4.512 l
-88.838 -4.6 l
-86.809 -4.6 l
-h
-84.457 0.397 m
-85.53 0.397 l
-85.912 0.397 86.195 0.518 86.382 0.765 c
-86.566 1.018 86.662 1.357 86.662 1.779 c
-86.662 2.72 86.298 3.19 85.574 3.19 c
-84.457 3.19 l
-h
-99.281 -1.117 m
-100.163 4.763 l
-102.045 4.763 l
-100.368 -4.6 l
-98.473 -4.6 l
-97.384 0.912 l
-96.312 -4.6 l
-94.401 -4.6 l
-92.725 4.763 l
-94.606 4.763 l
-95.489 -1.117 l
-96.591 4.763 l
-98.178 4.763 l
-h
-109.956 -0.764 m
-109.956 -2.021 109.654 -2.994 109.06 -3.689 c
-108.461 -4.388 107.638 -4.733 106.59 -4.733 c
-105.539 -4.733 104.713 -4.391 104.106 -3.704 c
-103.507 -3.009 103.202 -2.042 103.194 -0.808 c
-103.194 0.794 l
-103.194 2.076 103.493 3.08 104.091 3.807 c
-104.686 4.532 105.517 4.896 106.575 4.896 c
-107.612 4.896 108.431 4.535 109.03 3.822 c
-109.637 3.117 109.945 2.12 109.956 0.838 c
-h
-108.06 0.809 m
-108.06 1.65 107.935 2.278 107.693 2.691 c
-107.458 3.102 107.082 3.308 106.575 3.308 c
-106.076 3.308 105.701 3.105 105.459 2.705 c
-105.224 2.311 105.098 1.713 105.091 0.912 c
-105.091 -0.764 l
-105.091 -1.579 105.212 -2.182 105.459 -2.572 c
-105.701 -2.965 106.08 -3.16 106.59 -3.16 c
-107.079 -3.16 107.443 -2.969 107.678 -2.587 c
-107.921 -2.204 108.049 -1.616 108.06 -0.823 c
-h
-114.369 -1.176 m
-113.429 -1.176 l
-113.429 -4.6 l
-111.547 -4.6 l
-111.547 4.763 l
-114.56 4.763 l
-115.509 4.763 116.24 4.516 116.75 4.028 c
-117.269 3.535 117.53 2.841 117.53 1.941 c
-117.53 0.695 117.078 -0.176 116.178 -0.675 c
-117.809 -4.512 l
-117.809 -4.6 l
-115.781 -4.6 l
-h
-113.429 0.397 m
-114.502 0.397 l
-114.884 0.397 115.167 0.518 115.354 0.765 c
-115.538 1.018 115.634 1.357 115.634 1.779 c
-115.634 2.72 115.27 3.19 114.546 3.19 c
-113.429 3.19 l
-h
-121.689 -0.984 m
-120.94 -1.925 l
-120.94 -4.6 l
-119.044 -4.6 l
-119.044 4.763 l
-120.94 4.763 l
-120.94 0.676 l
-121.543 1.69 l
-123.277 4.763 l
-125.6 4.763 l
-122.909 0.647 l
-125.644 -4.6 l
-123.395 -4.6 l
-h
-f
-Q
-0.113 0.082 0.09 0 k
-35.668 471.367 238.665 -12.898 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 40.8563 464.5277 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.646 -0.243 -0.775 -0.367 -0.881 c
--0.496 -0.992 -0.658 -1.08 -0.852 -1.147 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.161 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.926 c
--3.127 -0.819 -3.23 -0.691 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.213 -3.484 -0.014 c
--2.66 0.133 l
--2.642 0.033 -2.616 -0.058 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.367 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.684 -1.992 0.691 -1.999 0.691 c
--2.167 0.728 -2.329 0.771 -2.484 0.823 c
--2.642 0.882 -2.786 0.96 -2.91 1.058 c
--3.039 1.154 -3.142 1.279 -3.219 1.426 c
--3.289 1.573 -3.322 1.756 -3.322 1.985 c
--3.322 2.18 -3.289 2.344 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.837 c
--2.8 2.932 -2.645 3.003 -2.469 3.043 c
--2.293 3.09 -2.102 3.12 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.12 -1.128 3.09 -0.97 3.043 c
--0.804 2.992 -0.669 2.918 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.202 2.344 -0.143 2.182 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.253 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.353 c
--1.294 1.312 -1.117 1.264 -0.941 1.205 c
--0.756 1.147 -0.595 1.066 -0.455 0.97 c
--0.32 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.455 c
--2.26 2.425 -2.319 2.385 -2.366 2.338 c
--2.406 2.297 -2.437 2.249 -2.454 2.19 c
--2.477 2.132 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.779 c
--2.41 1.72 -2.373 1.669 -2.322 1.632 c
--2.263 1.592 -2.201 1.558 -2.131 1.529 c
--2.065 1.5 -1.984 1.47 -1.896 1.44 c
-h
--0.837 -0.014 m
--0.837 0.092 -0.86 0.177 -0.897 0.235 c
--0.926 0.301 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.53 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.529 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.014 c
-6.402 -2.66 m
-6.185 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.396 c
-5.284 -2.315 5.185 -2.219 5.108 -2.102 c
-5.039 -1.984 4.991 -1.855 4.961 -1.72 c
-5.858 -1.617 l
-5.895 -1.753 5.964 -1.859 6.064 -1.94 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.057 6.681 -2.028 c
-6.758 -1.999 6.828 -1.944 6.887 -1.866 c
-6.945 -1.797 6.99 -1.705 7.019 -1.587 c
-7.056 -1.469 7.078 -1.323 7.078 -1.147 c
-7.078 -0.955 l
-7.078 -0.889 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.072 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.215 -0.897 5.108 -0.75 c
-5.009 -0.596 4.935 -0.411 4.888 -0.206 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.771 4.836 1.018 4.888 1.235 c
-4.946 1.448 5.027 1.632 5.137 1.779 c
-5.245 1.933 5.376 2.051 5.534 2.132 c
-5.689 2.22 5.876 2.263 6.093 2.263 c
-6.188 2.263 6.288 2.253 6.387 2.234 c
-6.483 2.213 6.571 2.18 6.652 2.132 c
-6.739 2.08 6.817 2.018 6.887 1.941 c
-6.964 1.86 7.026 1.768 7.078 1.661 c
-7.092 1.661 l
-7.092 1.808 l
-7.1 1.867 7.107 1.918 7.107 1.97 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.152 2.22 c
-8.004 2.22 l
-7.993 2.139 7.982 2.028 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.161 l
-7.975 -1.415 7.938 -1.635 7.871 -1.822 c
-7.802 -2.007 7.699 -2.161 7.563 -2.279 c
-7.423 -2.404 7.258 -2.499 7.063 -2.558 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.53 m
-7.092 0.742 7.067 0.919 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.5 6.729 1.558 6.652 1.588 c
-6.571 1.625 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.621 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.367 c
-5.88 1.279 5.835 1.162 5.799 1.014 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.338 c
-6.049 -0.515 6.211 -0.602 6.417 -0.602 c
-6.483 -0.602 6.556 -0.588 6.637 -0.559 c
-6.725 -0.522 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.176 7.019 -0.029 c
-7.067 0.118 7.092 0.301 7.092 0.53 c
-11.036 -0.646 m
-12.168 -0.646 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.646 l
-10.124 -0.646 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.22 l
-11.036 2.22 l
-h
-10.124 3.514 0.912 -0.676 re
-10.124 2.837 m
-13.6 1.602 m
-13.057 1.602 l
-13.057 2.22 l
-13.644 2.22 l
-13.924 3.117 l
-14.497 3.117 l
-14.497 2.22 l
-15.732 2.22 l
-15.732 1.602 l
-14.497 1.602 l
-14.497 -0.103 l
-14.497 -0.324 l
-14.504 -0.393 14.527 -0.455 14.556 -0.515 c
-14.593 -0.565 14.648 -0.61 14.718 -0.646 c
-14.795 -0.676 14.909 -0.691 15.056 -0.691 c
-15.192 -0.691 15.327 -0.687 15.468 -0.676 c
-15.603 -0.658 15.736 -0.632 15.865 -0.602 c
-15.865 -1.205 l
-15.784 -1.216 15.707 -1.23 15.629 -1.249 c
-15.549 -1.261 15.471 -1.267 15.394 -1.278 c
-15.313 -1.286 15.225 -1.294 15.129 -1.294 c
-15.041 -1.301 14.942 -1.308 14.835 -1.308 c
-14.648 -1.308 14.486 -1.294 14.35 -1.264 c
-14.221 -1.228 14.107 -1.183 14.012 -1.132 c
-13.924 -1.084 13.85 -1.025 13.791 -0.955 c
-13.733 -0.878 13.689 -0.801 13.66 -0.72 c
-13.63 -0.632 13.608 -0.544 13.6 -0.455 c
-13.59 -0.36 13.586 -0.264 13.586 -0.176 c
-h
-23.221 -0.646 m
-24.353 -0.646 l
-24.353 -1.264 l
-21.045 -1.264 l
-21.045 -0.646 l
-22.31 -0.646 l
-22.31 2.896 l
-21.384 2.896 l
-21.384 3.514 l
-23.221 3.514 l
-h
-28.384 0.485 m
-28.384 0.21 28.347 -0.04 28.281 -0.264 c
-28.212 -0.482 28.108 -0.669 27.973 -0.823 c
-27.833 -0.981 27.657 -1.103 27.443 -1.19 c
-27.227 -1.278 26.973 -1.323 26.679 -1.323 c
-26.404 -1.323 26.157 -1.278 25.944 -1.19 c
-25.739 -1.103 25.566 -0.981 25.43 -0.823 c
-25.29 -0.669 25.187 -0.482 25.121 -0.264 c
-25.051 -0.04 25.018 0.21 25.018 0.485 c
-25.018 0.738 25.047 0.974 25.106 1.191 c
-25.172 1.415 25.275 1.606 25.415 1.764 c
-25.55 1.929 25.727 2.058 25.944 2.146 c
-26.157 2.234 26.414 2.278 26.709 2.278 c
-27.021 2.278 27.281 2.234 27.487 2.146 c
-27.701 2.058 27.873 1.929 28.002 1.764 c
-28.138 1.606 28.237 1.415 28.296 1.191 c
-28.355 0.974 28.384 0.738 28.384 0.485 c
-27.429 0.485 m
-27.429 0.691 27.414 0.867 27.385 1.014 c
-27.362 1.162 27.326 1.282 27.267 1.382 c
-27.208 1.477 27.135 1.548 27.046 1.588 c
-26.959 1.635 26.848 1.661 26.724 1.661 c
-26.458 1.661 26.267 1.562 26.15 1.367 c
-26.032 1.18 25.974 0.886 25.974 0.485 c
-25.974 0.063 26.032 -0.243 26.15 -0.426 c
-26.267 -0.613 26.444 -0.706 26.679 -0.706 c
-26.804 -0.706 26.918 -0.687 27.017 -0.646 c
-27.113 -0.599 27.194 -0.525 27.252 -0.426 c
-27.318 -0.33 27.362 -0.206 27.385 -0.058 c
-27.414 0.088 27.429 0.268 27.429 0.485 c
-30.769 -2.66 m
-30.552 -2.66 30.361 -2.635 30.196 -2.587 c
-30.027 -2.547 29.887 -2.484 29.77 -2.396 c
-29.652 -2.315 29.552 -2.219 29.475 -2.102 c
-29.406 -1.984 29.358 -1.855 29.328 -1.72 c
-30.225 -1.617 l
-30.262 -1.753 30.331 -1.859 30.431 -1.94 c
-30.526 -2.028 30.651 -2.072 30.799 -2.072 c
-30.886 -2.072 30.967 -2.057 31.048 -2.028 c
-31.125 -1.999 31.195 -1.944 31.254 -1.866 c
-31.313 -1.797 31.357 -1.705 31.387 -1.587 c
-31.424 -1.469 31.445 -1.323 31.445 -1.147 c
-31.445 -0.955 l
-31.445 -0.889 31.449 -0.831 31.46 -0.779 c
-31.46 -0.588 l
-31.445 -0.588 l
-31.346 -0.816 31.202 -0.977 31.019 -1.072 c
-30.832 -1.172 30.626 -1.22 30.402 -1.22 c
-30.196 -1.22 30.012 -1.183 29.858 -1.103 c
-29.71 -1.014 29.582 -0.897 29.475 -0.75 c
-29.376 -0.596 29.303 -0.411 29.255 -0.206 c
-29.203 0.008 29.182 0.243 29.182 0.5 c
-29.182 0.771 29.203 1.018 29.255 1.235 c
-29.313 1.448 29.394 1.632 29.505 1.779 c
-29.612 1.933 29.743 2.051 29.901 2.132 c
-30.056 2.22 30.244 2.263 30.46 2.263 c
-30.556 2.263 30.655 2.253 30.755 2.234 c
-30.85 2.213 30.938 2.18 31.019 2.132 c
-31.107 2.08 31.185 2.018 31.254 1.941 c
-31.331 1.86 31.393 1.768 31.445 1.661 c
-31.46 1.661 l
-31.46 1.808 l
-31.467 1.867 31.474 1.918 31.474 1.97 c
-31.482 2.028 31.489 2.076 31.489 2.117 c
-31.497 2.165 31.507 2.198 31.519 2.22 c
-32.371 2.22 l
-32.36 2.139 32.349 2.028 32.342 1.881 c
-32.342 1.411 l
-32.342 -1.161 l
-32.342 -1.415 32.305 -1.635 32.239 -1.822 c
-32.17 -2.007 32.066 -2.161 31.931 -2.279 c
-31.79 -2.404 31.625 -2.499 31.43 -2.558 c
-31.232 -2.624 31.011 -2.66 30.769 -2.66 c
-31.46 0.53 m
-31.46 0.742 31.434 0.919 31.387 1.058 c
-31.346 1.205 31.291 1.323 31.225 1.411 c
-31.166 1.5 31.096 1.558 31.019 1.588 c
-30.938 1.625 30.861 1.646 30.784 1.646 c
-30.684 1.646 30.593 1.621 30.504 1.573 c
-30.424 1.532 30.358 1.463 30.298 1.367 c
-30.248 1.279 30.203 1.162 30.167 1.014 c
-30.137 0.875 30.122 0.706 30.122 0.5 c
-30.122 0.125 30.181 -0.154 30.298 -0.338 c
-30.416 -0.515 30.578 -0.602 30.784 -0.602 c
-30.85 -0.602 30.923 -0.588 31.004 -0.559 c
-31.092 -0.522 31.166 -0.463 31.225 -0.382 c
-31.291 -0.294 31.346 -0.176 31.387 -0.029 c
-31.434 0.118 31.46 0.301 31.46 0.53 c
-38.115 -2.631 m
-38.115 3.514 l
-40.041 3.514 l
-40.041 2.896 l
-38.967 2.896 l
-38.967 -2.013 l
-40.041 -2.013 l
-40.041 -2.631 l
-h
-42.013 0.838 1.867 -0.794 re
-42.013 0.044 m
-47.677 -1.264 m
-47.677 0.721 l
-47.677 1.022 47.632 1.242 47.544 1.382 c
-47.463 1.529 47.328 1.602 47.133 1.602 c
-47.023 1.602 46.919 1.577 46.824 1.529 c
-46.736 1.477 46.655 1.411 46.589 1.323 c
-46.53 1.235 46.479 1.124 46.441 1 c
-46.412 0.882 46.398 0.75 46.398 0.603 c
-46.398 -1.264 l
-45.487 -1.264 l
-45.487 1.44 l
-45.487 1.661 l
-45.487 1.75 45.479 1.827 45.472 1.897 c
-45.472 2.087 l
-45.472 2.22 l
-46.324 2.22 l
-46.331 2.19 46.339 2.146 46.339 2.087 c
-46.339 1.897 l
-46.346 1.827 46.354 1.756 46.354 1.691 c
-46.362 1.621 46.368 1.565 46.368 1.529 c
-46.383 1.529 l
-46.501 1.793 46.651 1.985 46.838 2.103 c
-47.023 2.22 47.243 2.278 47.5 2.278 c
-47.684 2.278 47.846 2.249 47.985 2.19 c
-48.122 2.132 48.235 2.043 48.323 1.926 c
-48.411 1.808 48.474 1.665 48.515 1.5 c
-48.562 1.341 48.588 1.154 48.588 0.941 c
-48.588 -1.264 l
-h
-55.17 -1.323 m
-54.883 -1.323 54.64 -1.282 54.435 -1.205 c
-54.229 -1.117 54.056 -0.995 53.92 -0.837 c
-53.78 -0.683 53.678 -0.496 53.612 -0.279 c
-53.541 -0.055 53.508 0.191 53.508 0.456 c
-53.508 0.75 53.541 1.007 53.612 1.235 c
-53.689 1.459 53.795 1.646 53.934 1.793 c
-54.082 1.947 54.258 2.065 54.464 2.146 c
-54.67 2.234 54.905 2.278 55.17 2.278 c
-55.394 2.278 55.596 2.249 55.772 2.19 c
-55.949 2.132 56.099 2.047 56.228 1.941 c
-56.353 1.841 56.456 1.72 56.537 1.573 c
-56.614 1.434 56.669 1.282 56.698 1.118 c
-55.787 1.073 l
-55.758 1.249 55.688 1.389 55.581 1.5 c
-55.482 1.606 55.339 1.661 55.155 1.661 c
-54.908 1.661 54.732 1.558 54.626 1.353 c
-54.515 1.154 54.464 0.867 54.464 0.485 c
-54.464 -0.309 54.699 -0.706 55.17 -0.706 c
-55.335 -0.706 55.478 -0.654 55.596 -0.544 c
-55.713 -0.437 55.787 -0.276 55.816 -0.058 c
-56.728 -0.103 l
-56.698 -0.272 56.643 -0.426 56.566 -0.573 c
-56.496 -0.72 56.394 -0.852 56.257 -0.97 c
-56.128 -1.08 55.97 -1.168 55.787 -1.234 c
-55.611 -1.294 55.405 -1.323 55.17 -1.323 c
-60.876 0.485 m
-60.876 0.21 60.839 -0.04 60.774 -0.264 c
-60.704 -0.482 60.601 -0.669 60.465 -0.823 c
-60.325 -0.981 60.149 -1.103 59.935 -1.19 c
-59.719 -1.278 59.465 -1.323 59.172 -1.323 c
-58.896 -1.323 58.649 -1.278 58.436 -1.19 c
-58.231 -1.103 58.058 -0.981 57.922 -0.823 c
-57.782 -0.669 57.68 -0.482 57.613 -0.264 c
-57.543 -0.04 57.51 0.21 57.51 0.485 c
-57.51 0.738 57.539 0.974 57.599 1.191 c
-57.665 1.415 57.768 1.606 57.907 1.764 c
-58.043 1.929 58.22 2.058 58.436 2.146 c
-58.649 2.234 58.906 2.278 59.201 2.278 c
-59.513 2.278 59.774 2.234 59.98 2.146 c
-60.193 2.058 60.365 1.929 60.494 1.764 c
-60.63 1.606 60.729 1.415 60.788 1.191 c
-60.847 0.974 60.876 0.738 60.876 0.485 c
-59.921 0.485 m
-59.921 0.691 59.906 0.867 59.877 1.014 c
-59.855 1.162 59.818 1.282 59.76 1.382 c
-59.7 1.477 59.627 1.548 59.538 1.588 c
-59.451 1.635 59.34 1.661 59.216 1.661 c
-58.95 1.661 58.76 1.562 58.642 1.367 c
-58.524 1.18 58.466 0.886 58.466 0.485 c
-58.466 0.063 58.524 -0.243 58.642 -0.426 c
-58.76 -0.613 58.936 -0.706 59.172 -0.706 c
-59.297 -0.706 59.411 -0.687 59.509 -0.646 c
-59.605 -0.599 59.686 -0.525 59.744 -0.426 c
-59.81 -0.33 59.855 -0.206 59.877 -0.058 c
-59.906 0.088 59.921 0.268 59.921 0.485 c
-62.615 2.22 m
-62.615 0.264 l
-62.615 0.125 62.622 0 62.644 -0.118 c
-62.663 -0.228 62.696 -0.32 62.746 -0.397 c
-62.794 -0.478 62.854 -0.54 62.923 -0.588 c
-62.989 -0.628 63.074 -0.646 63.173 -0.646 c
-63.261 -0.646 63.342 -0.628 63.423 -0.588 c
-63.511 -0.54 63.585 -0.47 63.644 -0.382 c
-63.702 -0.287 63.746 -0.176 63.776 -0.058 c
-63.812 0.066 63.835 0.206 63.835 0.353 c
-63.835 2.22 l
-64.731 2.22 l
-64.731 -0.484 l
-64.731 -0.72 l
-64.739 -0.801 64.746 -0.878 64.746 -0.955 c
-64.746 -1.147 l
-64.753 -1.198 64.76 -1.234 64.76 -1.264 c
-63.908 -1.264 l
-63.897 -1.234 63.886 -1.198 63.879 -1.147 c
-63.879 -0.955 l
-63.879 -0.889 63.872 -0.819 63.864 -0.75 c
-63.864 -0.573 l
-63.849 -0.573 l
-63.731 -0.837 63.577 -1.029 63.394 -1.147 c
-63.217 -1.264 63.015 -1.323 62.791 -1.323 c
-62.586 -1.323 62.412 -1.286 62.276 -1.22 c
-62.137 -1.153 62.027 -1.058 61.938 -0.941 c
-61.857 -0.823 61.799 -0.687 61.762 -0.529 c
-61.732 -0.364 61.718 -0.187 61.718 0 c
-61.718 2.22 l
-h
-67.983 -1.264 m
-67.983 0.721 l
-67.983 1.022 67.939 1.242 67.851 1.382 c
-67.77 1.529 67.634 1.602 67.44 1.602 c
-67.33 1.602 67.226 1.577 67.131 1.529 c
-67.043 1.477 66.962 1.411 66.896 1.323 c
-66.837 1.235 66.785 1.124 66.748 1 c
-66.719 0.882 66.705 0.75 66.705 0.603 c
-66.705 -1.264 l
-65.793 -1.264 l
-65.793 1.44 l
-65.793 1.661 l
-65.793 1.75 65.786 1.827 65.778 1.897 c
-65.778 2.087 l
-65.778 2.22 l
-66.631 2.22 l
-66.638 2.19 66.646 2.146 66.646 2.087 c
-66.646 1.897 l
-66.653 1.827 66.661 1.756 66.661 1.691 c
-66.667 1.621 66.675 1.565 66.675 1.529 c
-66.69 1.529 l
-66.808 1.793 66.958 1.985 67.145 2.103 c
-67.33 2.22 67.55 2.278 67.807 2.278 c
-67.991 2.278 68.153 2.249 68.292 2.19 c
-68.428 2.132 68.542 2.043 68.63 1.926 c
-68.718 1.808 68.781 1.665 68.822 1.5 c
-68.869 1.341 68.895 1.154 68.895 0.941 c
-68.895 -1.264 l
-h
-70.457 1.602 m
-69.913 1.602 l
-69.913 2.22 l
-70.501 2.22 l
-70.78 3.117 l
-71.353 3.117 l
-71.353 2.22 l
-72.587 2.22 l
-72.587 1.602 l
-71.353 1.602 l
-71.353 -0.103 l
-71.353 -0.324 l
-71.361 -0.393 71.382 -0.455 71.412 -0.515 c
-71.448 -0.565 71.504 -0.61 71.573 -0.646 c
-71.65 -0.676 71.764 -0.691 71.912 -0.691 c
-72.047 -0.691 72.184 -0.687 72.323 -0.676 c
-72.46 -0.658 72.591 -0.632 72.72 -0.602 c
-72.72 -1.205 l
-72.639 -1.216 72.562 -1.23 72.485 -1.249 c
-72.404 -1.261 72.327 -1.267 72.25 -1.278 c
-72.169 -1.286 72.08 -1.294 71.985 -1.294 c
-71.897 -1.301 71.798 -1.308 71.691 -1.308 c
-71.504 -1.308 71.342 -1.294 71.206 -1.264 c
-71.078 -1.228 70.964 -1.183 70.868 -1.132 c
-70.78 -1.084 70.706 -1.025 70.648 -0.955 c
-70.588 -0.878 70.545 -0.801 70.515 -0.72 c
-70.486 -0.632 70.464 -0.544 70.457 -0.455 c
-70.445 -0.36 70.442 -0.264 70.442 -0.176 c
-h
-74.285 -2.631 m
-74.285 -2.013 l
-75.359 -2.013 l
-75.359 2.896 l
-74.285 2.896 l
-74.285 3.514 l
-76.211 3.514 l
-76.211 -2.631 l
-h
-f
-Q
-q 1 0 0 1 47.3793 448.9472 cm
-0 0 m
-2.102 0 l
-2.102 -0.574 l
--0.676 -0.574 l
--0.676 4.777 l
-0 4.777 l
-h
-3.513 -0.574 -0.646 3.984 re
-3.557 4.453 m
-3.557 4.343 3.528 4.251 3.469 4.174 c
-3.41 4.104 3.314 4.072 3.19 4.072 c
-3.072 4.072 2.977 4.104 2.911 4.174 c
-2.851 4.251 2.822 4.343 2.822 4.453 c
-2.822 4.571 2.851 4.663 2.911 4.733 c
-2.977 4.81 3.072 4.85 3.19 4.85 c
-3.314 4.85 3.41 4.81 3.469 4.733 c
-3.528 4.652 3.557 4.56 3.557 4.453 c
-6.468 0.44 m
-6.468 0.588 6.412 0.709 6.306 0.808 c
-6.196 0.904 5.99 1.022 5.689 1.161 c
-5.343 1.308 5.101 1.429 4.953 1.529 c
-4.806 1.635 4.696 1.753 4.63 1.881 c
-4.561 2.006 4.527 2.164 4.527 2.352 c
-4.527 2.674 4.644 2.944 4.88 3.16 c
-5.115 3.374 5.417 3.484 5.791 3.484 c
-6.173 3.484 6.483 3.37 6.718 3.145 c
-6.953 2.917 7.07 2.631 7.07 2.278 c
-6.423 2.278 l
-6.423 2.454 6.364 2.605 6.247 2.734 c
-6.129 2.859 5.975 2.925 5.791 2.925 c
-5.593 2.925 5.442 2.869 5.336 2.763 c
-5.226 2.664 5.174 2.532 5.174 2.366 c
-5.174 2.238 5.211 2.131 5.292 2.043 c
-5.369 1.962 5.56 1.859 5.865 1.734 c
-6.342 1.547 6.674 1.359 6.85 1.176 c
-7.026 0.999 7.114 0.771 7.114 0.5 c
-7.114 0.147 6.99 -0.133 6.747 -0.339 c
-6.512 -0.544 6.196 -0.647 5.806 -0.647 c
-5.384 -0.647 5.045 -0.53 4.792 -0.294 c
-4.534 -0.052 4.409 0.253 4.409 0.617 c
-5.056 0.617 l
-5.064 0.389 5.134 0.213 5.262 0.087 c
-5.387 -0.03 5.571 -0.088 5.806 -0.088 c
-6.019 -0.088 6.181 -0.04 6.291 0.058 c
-6.408 0.154 6.468 0.282 6.468 0.44 c
-8.804 4.365 m
-8.804 3.41 l
-9.407 3.41 l
-9.407 2.881 l
-8.804 2.881 l
-8.804 0.411 l
-8.804 0.253 8.827 0.135 8.878 0.058 c
-8.937 -0.023 9.025 -0.059 9.143 -0.059 c
-9.231 -0.059 9.319 -0.044 9.407 -0.015 c
-9.407 -0.574 l
-9.261 -0.621 9.106 -0.647 8.951 -0.647 c
-8.694 -0.647 8.5 -0.555 8.364 -0.368 c
-8.224 -0.184 8.158 0.077 8.158 0.411 c
-8.158 2.881 l
-7.555 2.881 l
-7.555 3.41 l
-8.158 3.41 l
-8.158 4.365 l
-h
-13.273 -0.088 m
-13.486 -0.088 13.659 -0.026 13.787 0.103 c
-13.924 0.239 13.997 0.43 14.009 0.675 c
-14.626 0.675 l
-14.603 0.294 14.468 -0.026 14.214 -0.279 c
-13.957 -0.526 13.644 -0.647 13.273 -0.647 c
-12.781 -0.647 12.406 -0.497 12.141 -0.191 c
-11.884 0.121 11.759 0.588 11.759 1.205 c
-11.759 1.646 l
-11.759 2.241 11.884 2.697 12.141 3.013 c
-12.406 3.326 12.781 3.484 13.273 3.484 c
-13.674 3.484 13.993 3.351 14.229 3.087 c
-14.471 2.829 14.603 2.484 14.626 2.043 c
-14.009 2.043 l
-13.986 2.337 13.913 2.557 13.787 2.705 c
-13.67 2.851 13.498 2.925 13.273 2.925 c
-12.979 2.925 12.762 2.826 12.627 2.631 c
-12.486 2.443 12.413 2.135 12.406 1.705 c
-12.406 1.19 l
-12.406 0.72 12.472 0.386 12.612 0.191 c
-12.758 0.004 12.979 -0.088 13.273 -0.088 c
-15.243 1.602 m
-15.243 2.179 15.379 2.634 15.655 2.969 c
-15.937 3.31 16.309 3.484 16.771 3.484 c
-17.231 3.484 17.598 3.314 17.874 2.984 c
-18.157 2.66 18.304 2.212 18.315 1.646 c
-18.315 1.22 l
-18.315 0.65 18.171 0.195 17.888 -0.148 c
-17.613 -0.482 17.246 -0.647 16.787 -0.647 c
-16.323 -0.647 15.952 -0.485 15.669 -0.162 c
-15.393 0.168 15.25 0.61 15.243 1.161 c
-h
-15.89 1.22 m
-15.89 0.816 15.967 0.5 16.125 0.264 c
-16.29 0.029 16.511 -0.088 16.787 -0.088 c
-17.352 -0.088 17.646 0.323 17.668 1.146 c
-17.668 1.602 l
-17.668 2.003 17.583 2.322 17.418 2.557 c
-17.261 2.8 17.043 2.925 16.771 2.925 c
-16.507 2.925 16.29 2.8 16.125 2.557 c
-15.967 2.322 15.89 2.003 15.89 1.602 c
-h
-19.77 3.41 m
-19.785 3.042 l
-20.027 3.337 20.347 3.484 20.74 3.484 c
-21.181 3.484 21.49 3.285 21.666 2.896 c
-21.92 3.285 22.269 3.484 22.71 3.484 c
-23.445 3.484 23.82 3.021 23.842 2.102 c
-23.842 -0.574 l
-23.195 -0.574 l
-23.195 2.043 l
-23.195 2.337 23.14 2.55 23.033 2.69 c
-22.934 2.826 22.761 2.896 22.518 2.896 c
-22.32 2.896 22.159 2.815 22.034 2.66 c
-21.916 2.514 21.847 2.322 21.828 2.087 c
-21.828 -0.574 l
-21.167 -0.574 l
-21.167 2.072 l
-21.167 2.62 20.946 2.896 20.505 2.896 c
-20.17 2.896 19.935 2.734 19.8 2.41 c
-19.8 -0.574 l
-19.153 -0.574 l
-19.153 3.41 l
-h
-25.429 3.41 m
-25.444 3.042 l
-25.687 3.337 26.006 3.484 26.399 3.484 c
-26.84 3.484 27.149 3.285 27.326 2.896 c
-27.579 3.285 27.928 3.484 28.369 3.484 c
-29.104 3.484 29.479 3.021 29.501 2.102 c
-29.501 -0.574 l
-28.854 -0.574 l
-28.854 2.043 l
-28.854 2.337 28.799 2.55 28.693 2.69 c
-28.593 2.826 28.421 2.896 28.178 2.896 c
-27.979 2.896 27.818 2.815 27.693 2.66 c
-27.575 2.514 27.505 2.322 27.487 2.087 c
-27.487 -0.574 l
-26.825 -0.574 l
-26.825 2.072 l
-26.825 2.62 26.605 2.896 26.164 2.896 c
-25.83 2.896 25.595 2.734 25.458 2.41 c
-25.458 -0.574 l
-24.812 -0.574 l
-24.812 3.41 l
-h
-31.177 -0.574 -0.647 3.984 re
-31.22 4.453 m
-31.22 4.343 31.191 4.251 31.133 4.174 c
-31.074 4.104 30.979 4.072 30.853 4.072 c
-30.736 4.072 30.64 4.104 30.574 4.174 c
-30.515 4.251 30.486 4.343 30.486 4.453 c
-30.486 4.571 30.515 4.663 30.574 4.733 c
-30.64 4.81 30.736 4.85 30.853 4.85 c
-30.979 4.85 31.074 4.81 31.133 4.733 c
-31.191 4.652 31.22 4.56 31.22 4.453 c
-33.043 4.365 m
-33.043 3.41 l
-33.646 3.41 l
-33.646 2.881 l
-33.043 2.881 l
-33.043 0.411 l
-33.043 0.253 33.065 0.135 33.117 0.058 c
-33.175 -0.023 33.264 -0.059 33.381 -0.059 c
-33.47 -0.059 33.558 -0.044 33.646 -0.015 c
-33.646 -0.574 l
-33.499 -0.621 33.344 -0.647 33.19 -0.647 c
-32.933 -0.647 32.739 -0.555 32.602 -0.368 c
-32.463 -0.184 32.396 0.077 32.396 0.411 c
-32.396 2.881 l
-31.794 2.881 l
-31.794 3.41 l
-32.396 3.41 l
-32.396 4.365 l
-h
-36.777 2.998 m
-37.03 3.322 37.35 3.484 37.732 3.484 c
-38.438 3.484 38.794 3.013 38.805 2.072 c
-38.805 -0.574 l
-38.158 -0.574 l
-38.158 2.043 l
-38.158 2.356 38.104 2.576 37.997 2.705 c
-37.886 2.829 37.732 2.896 37.527 2.896 c
-37.369 2.896 37.221 2.84 37.086 2.734 c
-36.957 2.624 36.854 2.487 36.777 2.322 c
-36.777 -0.574 l
-36.13 -0.574 l
-36.13 5.071 l
-36.777 5.071 l
-h
-40.466 -0.574 -0.646 3.984 re
-40.51 4.453 m
-40.51 4.343 40.481 4.251 40.423 4.174 c
-40.363 4.104 40.268 4.072 40.143 4.072 c
-40.026 4.072 39.93 4.104 39.864 4.174 c
-39.805 4.251 39.775 4.343 39.775 4.453 c
-39.775 4.571 39.805 4.663 39.864 4.733 c
-39.93 4.81 40.026 4.85 40.143 4.85 c
-40.268 4.85 40.363 4.81 40.423 4.733 c
-40.481 4.652 40.51 4.56 40.51 4.453 c
-43.421 0.44 m
-43.421 0.588 43.366 0.709 43.259 0.808 c
-43.149 0.904 42.943 1.022 42.642 1.161 c
-42.297 1.308 42.054 1.429 41.907 1.529 c
-41.76 1.635 41.649 1.753 41.583 1.881 c
-41.514 2.006 41.481 2.164 41.481 2.352 c
-41.481 2.674 41.599 2.944 41.834 3.16 c
-42.069 3.374 42.37 3.484 42.744 3.484 c
-43.127 3.484 43.436 3.37 43.671 3.145 c
-43.906 2.917 44.024 2.631 44.024 2.278 c
-43.377 2.278 l
-43.377 2.454 43.318 2.605 43.201 2.734 c
-43.083 2.859 42.929 2.925 42.744 2.925 c
-42.546 2.925 42.395 2.869 42.289 2.763 c
-42.179 2.664 42.127 2.532 42.127 2.366 c
-42.127 2.238 42.164 2.131 42.245 2.043 c
-42.322 1.962 42.513 1.859 42.818 1.734 c
-43.296 1.547 43.627 1.359 43.803 1.176 c
-43.98 0.999 44.068 0.771 44.068 0.5 c
-44.068 0.147 43.943 -0.133 43.7 -0.339 c
-43.465 -0.544 43.149 -0.647 42.759 -0.647 c
-42.337 -0.647 41.998 -0.53 41.745 -0.294 c
-41.488 -0.052 41.363 0.253 41.363 0.617 c
-42.01 0.617 l
-42.017 0.389 42.087 0.213 42.216 0.087 c
-42.341 -0.03 42.524 -0.088 42.759 -0.088 c
-42.973 -0.088 43.134 -0.04 43.245 0.058 c
-43.362 0.154 43.421 0.282 43.421 0.44 c
-45.758 4.365 m
-45.758 3.41 l
-46.361 3.41 l
-46.361 2.881 l
-45.758 2.881 l
-45.758 0.411 l
-45.758 0.253 45.78 0.135 45.832 0.058 c
-45.89 -0.023 45.979 -0.059 46.096 -0.059 c
-46.185 -0.059 46.272 -0.044 46.361 -0.015 c
-46.361 -0.574 l
-46.214 -0.621 46.06 -0.647 45.905 -0.647 c
-45.647 -0.647 45.453 -0.555 45.317 -0.368 c
-45.177 -0.184 45.111 0.077 45.111 0.411 c
-45.111 2.881 l
-44.508 2.881 l
-44.508 3.41 l
-45.111 3.41 l
-45.111 4.365 l
-h
-46.919 1.602 m
-46.919 2.179 47.055 2.634 47.33 2.969 c
-47.614 3.31 47.985 3.484 48.448 3.484 c
-48.907 3.484 49.275 3.314 49.551 2.984 c
-49.834 2.66 49.981 2.212 49.992 1.646 c
-49.992 1.22 l
-49.992 0.65 49.848 0.195 49.565 -0.148 c
-49.289 -0.482 48.922 -0.647 48.462 -0.647 c
-47.999 -0.647 47.629 -0.485 47.346 -0.162 c
-47.07 0.168 46.927 0.61 46.919 1.161 c
-h
-47.566 1.22 m
-47.566 0.816 47.643 0.5 47.801 0.264 c
-47.966 0.029 48.187 -0.088 48.462 -0.088 c
-49.029 -0.088 49.323 0.323 49.345 1.146 c
-49.345 1.602 l
-49.345 2.003 49.26 2.322 49.094 2.557 c
-48.936 2.8 48.72 2.925 48.448 2.925 c
-48.184 2.925 47.966 2.8 47.801 2.557 c
-47.643 2.322 47.566 2.003 47.566 1.602 c
-h
-52.475 2.792 m
-52.387 2.811 52.288 2.822 52.182 2.822 c
-51.847 2.822 51.612 2.638 51.476 2.278 c
-51.476 -0.574 l
-50.829 -0.574 l
-50.829 3.41 l
-51.461 3.41 l
-51.476 2.998 l
-51.652 3.322 51.895 3.484 52.211 3.484 c
-52.317 3.484 52.406 3.461 52.475 3.424 c
-h
-54.283 0.515 m
-55.004 3.41 l
-55.695 3.41 l
-54.401 -1.132 l
-54.302 -1.474 54.158 -1.735 53.975 -1.912 c
-53.798 -2.087 53.597 -2.176 53.372 -2.176 c
-53.284 -2.176 53.17 -2.153 53.034 -2.117 c
-53.034 -1.573 l
-53.181 -1.588 l
-53.364 -1.588 53.512 -1.544 53.622 -1.455 c
-53.728 -1.367 53.817 -1.209 53.886 -0.985 c
-54.004 -0.544 l
-52.843 3.41 l
-53.549 3.41 l
-h
-57.914 1.602 m
-57.914 2.179 58.05 2.634 58.326 2.969 c
-58.609 3.31 58.98 3.484 59.443 3.484 c
-59.903 3.484 60.269 3.314 60.545 2.984 c
-60.828 2.66 60.975 2.212 60.986 1.646 c
-60.986 1.22 l
-60.986 0.65 60.843 0.195 60.56 -0.148 c
-60.284 -0.482 59.917 -0.647 59.458 -0.647 c
-58.995 -0.647 58.623 -0.485 58.34 -0.162 c
-58.065 0.168 57.921 0.61 57.914 1.161 c
-h
-58.561 1.22 m
-58.561 0.816 58.638 0.5 58.796 0.264 c
-58.962 0.029 59.182 -0.088 59.458 -0.088 c
-60.024 -0.088 60.317 0.323 60.34 1.146 c
-60.34 1.602 l
-60.34 2.003 60.255 2.322 60.09 2.557 c
-59.932 2.8 59.714 2.925 59.443 2.925 c
-59.178 2.925 58.962 2.8 58.796 2.557 c
-58.638 2.322 58.561 2.003 58.561 1.602 c
-h
-62.118 -0.574 m
-62.118 2.881 l
-61.589 2.881 l
-61.589 3.41 l
-62.118 3.41 l
-62.118 3.866 l
-62.118 4.266 62.214 4.579 62.412 4.806 c
-62.617 5.03 62.897 5.144 63.25 5.144 c
-63.386 5.144 63.518 5.122 63.647 5.086 c
-63.617 4.542 l
-63.518 4.56 63.419 4.571 63.323 4.571 c
-62.949 4.571 62.765 4.307 62.765 3.777 c
-62.765 3.41 l
-63.441 3.41 l
-63.441 2.881 l
-62.765 2.881 l
-62.765 -0.574 l
-h
-67.307 -0.088 m
-67.52 -0.088 67.693 -0.026 67.822 0.103 c
-67.957 0.239 68.031 0.43 68.042 0.675 c
-68.659 0.675 l
-68.637 0.294 68.501 -0.026 68.248 -0.279 c
-67.99 -0.526 67.678 -0.647 67.307 -0.647 c
-66.814 -0.647 66.44 -0.497 66.175 -0.191 c
-65.918 0.121 65.792 0.588 65.792 1.205 c
-65.792 1.646 l
-65.792 2.241 65.918 2.697 66.175 3.013 c
-66.44 3.326 66.814 3.484 67.307 3.484 c
-67.708 3.484 68.027 3.351 68.262 3.087 c
-68.505 2.829 68.637 2.484 68.659 2.043 c
-68.042 2.043 l
-68.02 2.337 67.946 2.557 67.822 2.705 c
-67.704 2.851 67.531 2.925 67.307 2.925 c
-67.013 2.925 66.796 2.826 66.66 2.631 c
-66.521 2.443 66.447 2.135 66.44 1.705 c
-66.44 1.19 l
-66.44 0.72 66.506 0.386 66.646 0.191 c
-66.792 0.004 67.013 -0.088 67.307 -0.088 c
-71.437 -0.221 m
-71.221 -0.507 70.908 -0.647 70.496 -0.647 c
-70.133 -0.647 69.857 -0.526 69.673 -0.279 c
-69.497 -0.026 69.401 0.338 69.394 0.808 c
-69.394 3.41 l
-70.041 3.41 l
-70.041 0.867 l
-70.041 0.239 70.224 -0.073 70.6 -0.073 c
-71 -0.073 71.275 0.103 71.423 0.455 c
-71.423 3.41 l
-72.069 3.41 l
-72.069 -0.574 l
-71.452 -0.574 l
-h
-74.7 2.792 m
-74.612 2.811 74.513 2.822 74.407 2.822 c
-74.072 2.822 73.837 2.638 73.701 2.278 c
-73.701 -0.574 l
-73.054 -0.574 l
-73.054 3.41 l
-73.686 3.41 l
-73.701 2.998 l
-73.877 3.322 74.12 3.484 74.436 3.484 c
-74.542 3.484 74.631 3.461 74.7 3.424 c
-h
-76.994 2.792 m
-76.905 2.811 76.806 2.822 76.699 2.822 c
-76.365 2.822 76.13 2.638 75.994 2.278 c
-75.994 -0.574 l
-75.348 -0.574 l
-75.348 3.41 l
-75.979 3.41 l
-75.994 2.998 l
-76.171 3.322 76.412 3.484 76.729 3.484 c
-76.836 3.484 76.923 3.461 76.994 3.424 c
-h
-78.993 -0.647 m
-78.492 -0.647 78.111 -0.5 77.846 -0.206 c
-77.582 0.087 77.449 0.521 77.449 1.103 c
-77.449 1.573 l
-77.449 2.167 77.574 2.634 77.831 2.969 c
-78.095 3.31 78.456 3.484 78.92 3.484 c
-79.379 3.484 79.72 3.329 79.948 3.027 c
-80.183 2.734 80.304 2.271 80.316 1.646 c
-80.316 1.22 l
-78.095 1.22 l
-78.095 1.132 l
-78.095 0.698 78.174 0.386 78.331 0.191 c
-78.496 0.004 78.728 -0.088 79.022 -0.088 c
-79.217 -0.088 79.39 -0.055 79.537 0.014 c
-79.683 0.091 79.82 0.209 79.948 0.367 c
-80.286 -0.044 l
-80 -0.449 79.57 -0.647 78.993 -0.647 c
-78.92 2.925 m
-78.644 2.925 78.442 2.829 78.317 2.645 c
-78.188 2.458 78.114 2.167 78.095 1.778 c
-79.668 1.778 l
-79.668 1.866 l
-79.647 2.248 79.581 2.516 79.463 2.674 c
-79.346 2.84 79.161 2.925 78.92 2.925 c
-81.712 3.41 m
-81.727 2.969 l
-81.98 3.31 82.303 3.484 82.697 3.484 c
-83.402 3.484 83.759 3.013 83.77 2.072 c
-83.77 -0.574 l
-83.123 -0.574 l
-83.123 2.043 l
-83.123 2.356 83.068 2.576 82.961 2.705 c
-82.851 2.829 82.697 2.896 82.491 2.896 c
-82.333 2.896 82.186 2.84 82.05 2.734 c
-81.921 2.624 81.819 2.487 81.742 2.322 c
-81.742 -0.574 l
-81.095 -0.574 l
-81.095 3.41 l
-h
-85.592 4.365 m
-85.592 3.41 l
-86.195 3.41 l
-86.195 2.881 l
-85.592 2.881 l
-85.592 0.411 l
-85.592 0.253 85.615 0.135 85.666 0.058 c
-85.725 -0.023 85.813 -0.059 85.931 -0.059 c
-86.018 -0.059 86.107 -0.044 86.195 -0.015 c
-86.195 -0.574 l
-86.048 -0.621 85.894 -0.647 85.74 -0.647 c
-85.482 -0.647 85.287 -0.555 85.151 -0.368 c
-85.012 -0.184 84.946 0.077 84.946 0.411 c
-84.946 2.881 l
-84.343 2.881 l
-84.343 3.41 l
-84.946 3.41 l
-84.946 4.365 l
-h
-91.56 1.22 m
-91.56 0.602 91.446 0.135 91.223 -0.177 c
-91.005 -0.493 90.682 -0.647 90.252 -0.647 c
-89.829 -0.647 89.517 -0.467 89.311 -0.103 c
-89.282 -0.574 l
-88.679 -0.574 l
-88.679 5.071 l
-89.326 5.071 l
-89.326 2.969 l
-89.54 3.31 89.848 3.484 90.252 3.484 c
-90.682 3.484 91.005 3.326 91.223 3.013 c
-91.446 2.708 91.56 2.241 91.56 1.616 c
-h
-90.914 1.602 m
-90.914 2.072 90.843 2.403 90.708 2.601 c
-90.579 2.796 90.369 2.896 90.076 2.896 c
-89.741 2.896 89.492 2.711 89.326 2.352 c
-89.326 0.47 l
-89.492 0.106 89.745 -0.073 90.09 -0.073 c
-90.384 -0.073 90.594 0.029 90.722 0.235 c
-90.847 0.44 90.914 0.756 90.914 1.19 c
-h
-94.045 2.792 m
-93.956 2.811 93.857 2.822 93.75 2.822 c
-93.416 2.822 93.181 2.638 93.045 2.278 c
-93.045 -0.574 l
-92.398 -0.574 l
-92.398 3.41 l
-93.031 3.41 l
-93.045 2.998 l
-93.222 3.322 93.463 3.484 93.779 3.484 c
-93.887 3.484 93.974 3.461 94.045 3.424 c
-h
-96.588 -0.574 m
-96.547 -0.485 96.521 -0.339 96.514 -0.133 c
-96.279 -0.478 95.985 -0.647 95.632 -0.647 c
-95.268 -0.647 94.986 -0.551 94.779 -0.353 c
-94.581 -0.148 94.485 0.139 94.485 0.515 c
-94.485 0.914 94.621 1.234 94.897 1.469 c
-95.169 1.712 95.543 1.837 96.014 1.837 c
-96.499 1.837 l
-96.499 2.263 l
-96.499 2.499 96.444 2.664 96.337 2.763 c
-96.227 2.869 96.065 2.925 95.853 2.925 c
-95.654 2.925 95.493 2.866 95.367 2.749 c
-95.25 2.631 95.191 2.484 95.191 2.308 c
-94.544 2.308 l
-94.544 2.502 94.603 2.693 94.72 2.881 c
-94.845 3.064 95.007 3.212 95.206 3.322 c
-95.412 3.428 95.639 3.484 95.896 3.484 c
-96.297 3.484 96.602 3.38 96.808 3.175 c
-97.021 2.969 97.135 2.674 97.145 2.293 c
-97.145 0.279 l
-97.145 -0.026 97.183 -0.291 97.264 -0.515 c
-97.264 -0.574 l
-h
-95.72 -0.059 m
-95.886 -0.059 96.036 -0.015 96.176 0.073 c
-96.323 0.162 96.43 0.272 96.499 0.411 c
-96.499 1.352 l
-96.131 1.352 l
-95.815 1.352 95.573 1.282 95.397 1.146 c
-95.221 1.018 95.132 0.83 95.132 0.588 c
-95.132 0.359 95.176 0.195 95.264 0.087 c
-95.352 -0.011 95.503 -0.059 95.72 -0.059 c
-98.763 3.41 m
-98.778 2.969 l
-99.031 3.31 99.354 3.484 99.748 3.484 c
-100.453 3.484 100.81 3.013 100.821 2.072 c
-100.821 -0.574 l
-100.174 -0.574 l
-100.174 2.043 l
-100.174 2.356 100.119 2.576 100.012 2.705 c
-99.902 2.829 99.748 2.896 99.542 2.896 c
-99.383 2.896 99.237 2.84 99.101 2.734 c
-98.972 2.624 98.87 2.487 98.792 2.322 c
-98.792 -0.574 l
-98.145 -0.574 l
-98.145 3.41 l
-h
-103.173 -0.088 m
-103.385 -0.088 103.558 -0.026 103.687 0.103 c
-103.823 0.239 103.896 0.43 103.907 0.675 c
-104.525 0.675 l
-104.503 0.294 104.367 -0.026 104.113 -0.279 c
-103.856 -0.526 103.543 -0.647 103.173 -0.647 c
-102.68 -0.647 102.305 -0.497 102.041 -0.191 c
-101.783 0.121 101.658 0.588 101.658 1.205 c
-101.658 1.646 l
-101.658 2.241 101.783 2.697 102.041 3.013 c
-102.305 3.326 102.68 3.484 103.173 3.484 c
-103.574 3.484 103.892 3.351 104.128 3.087 c
-104.37 2.829 104.503 2.484 104.525 2.043 c
-103.907 2.043 l
-103.886 2.337 103.812 2.557 103.687 2.705 c
-103.57 2.851 103.397 2.925 103.173 2.925 c
-102.878 2.925 102.662 2.826 102.526 2.631 c
-102.386 2.443 102.313 2.135 102.305 1.705 c
-102.305 1.19 l
-102.305 0.72 102.371 0.386 102.511 0.191 c
-102.658 0.004 102.878 -0.088 103.173 -0.088 c
-105.922 2.998 m
-106.175 3.322 106.495 3.484 106.876 3.484 c
-107.582 3.484 107.939 3.013 107.95 2.072 c
-107.95 -0.574 l
-107.303 -0.574 l
-107.303 2.043 l
-107.303 2.356 107.248 2.576 107.142 2.705 c
-107.031 2.829 106.876 2.896 106.671 2.896 c
-106.513 2.896 106.366 2.84 106.23 2.734 c
-106.101 2.624 105.999 2.487 105.922 2.322 c
-105.922 -0.574 l
-105.274 -0.574 l
-105.274 5.071 l
-105.922 5.071 l
-h
-108.949 -0.221 m
-108.949 -0.103 108.983 -0.008 109.052 0.073 c
-109.118 0.151 109.221 0.191 109.361 0.191 c
-109.508 0.191 109.614 0.151 109.685 0.073 c
-109.762 -0.008 109.802 -0.103 109.802 -0.221 c
-109.802 -0.331 109.762 -0.423 109.685 -0.5 c
-109.614 -0.578 109.508 -0.618 109.361 -0.618 c
-109.221 -0.618 109.118 -0.578 109.052 -0.5 c
-108.983 -0.423 108.949 -0.331 108.949 -0.221 c
-f
-Q
-161.753 450.241 -1.793 0.867 re
-163.575 452.357 m
-163.605 451.96 l
-163.84 452.273 164.141 452.431 164.516 452.431 c
-165.199 452.431 165.552 451.949 165.575 450.99 c
-165.575 448.373 l
-164.531 448.373 l
-164.531 450.916 l
-164.531 451.141 164.494 451.303 164.428 451.402 c
-164.358 451.498 164.241 451.548 164.075 451.548 c
-163.888 451.548 163.74 451.453 163.634 451.269 c
-163.634 448.373 l
-162.591 448.373 l
-162.591 452.357 l
-h
-169.499 449.167 m
-169.793 449.167 169.944 449.362 169.955 449.755 c
-170.925 449.755 l
-170.925 449.322 170.792 448.969 170.528 448.697 c
-170.263 448.433 169.925 448.3 169.514 448.3 c
-169.003 448.3 168.61 448.454 168.338 448.77 c
-168.073 449.094 167.933 449.564 167.927 450.181 c
-167.927 450.505 l
-167.927 451.13 168.058 451.608 168.323 451.931 c
-168.595 452.261 168.992 452.431 169.514 452.431 c
-169.944 452.431 170.285 452.291 170.543 452.019 c
-170.796 451.743 170.925 451.361 170.925 450.873 c
-169.955 450.873 l
-169.955 451.085 169.914 451.255 169.837 451.372 c
-169.768 451.498 169.65 451.563 169.484 451.563 c
-169.308 451.563 169.18 451.498 169.103 451.372 c
-169.022 451.244 168.977 450.993 168.97 450.623 c
-168.97 450.211 l
-168.97 449.888 168.984 449.659 169.014 449.535 c
-169.051 449.406 169.105 449.314 169.176 449.256 c
-169.253 449.196 169.359 449.167 169.499 449.167 c
-171.41 450.49 m
-171.41 451.097 171.549 451.571 171.836 451.916 c
-172.12 452.258 172.512 452.431 173.012 452.431 c
-173.519 452.431 173.916 452.258 174.202 451.916 c
-174.485 451.571 174.628 451.097 174.628 450.49 c
-174.628 450.226 l
-174.628 449.626 174.485 449.156 174.202 448.815 c
-173.916 448.469 173.519 448.3 173.012 448.3 c
-172.501 448.3 172.104 448.469 171.821 448.815 c
-171.546 449.156 171.41 449.63 171.41 450.241 c
-h
-172.453 450.226 m
-172.453 449.52 172.637 449.167 173.012 449.167 c
-173.365 449.167 173.556 449.462 173.585 450.05 c
-173.585 450.49 l
-173.585 450.85 173.533 451.122 173.438 451.299 c
-173.339 451.475 173.196 451.563 173.012 451.563 c
-172.835 451.563 172.696 451.475 172.6 451.299 c
-172.501 451.122 172.453 450.85 172.453 450.49 c
-h
-177.231 448.741 m
-177.014 448.447 176.723 448.3 176.363 448.3 c
-176 448.3 175.721 448.421 175.526 448.668 c
-175.338 448.921 175.247 449.289 175.247 449.77 c
-175.247 452.357 l
-176.29 452.357 l
-176.29 449.755 l
-176.29 449.362 176.415 449.167 176.672 449.167 c
-176.907 449.167 177.076 449.27 177.186 449.476 c
-177.186 452.357 l
-178.231 452.357 l
-178.231 448.373 l
-177.26 448.373 l
-h
-179.935 452.357 m
-179.964 451.96 l
-180.2 452.273 180.501 452.431 180.876 452.431 c
-181.56 452.431 181.913 451.949 181.934 450.99 c
-181.934 448.373 l
-180.891 448.373 l
-180.891 450.916 l
-180.891 451.141 180.854 451.303 180.787 451.402 c
-180.718 451.498 180.6 451.548 180.435 451.548 c
-180.247 451.548 180.101 451.453 179.994 451.269 c
-179.994 448.373 l
-178.95 448.373 l
-178.95 452.357 l
-h
-183.889 453.327 m
-183.889 452.357 l
-184.419 452.357 l
-184.419 451.563 l
-183.889 451.563 l
-183.889 449.593 l
-183.889 449.435 183.908 449.329 183.948 449.27 c
-183.996 449.212 184.08 449.182 184.198 449.182 c
-184.305 449.182 184.39 449.189 184.448 449.212 c
-184.448 448.403 l
-184.271 448.337 184.08 448.3 183.875 448.3 c
-183.199 448.3 182.853 448.686 182.846 449.462 c
-182.846 451.563 l
-182.39 451.563 l
-182.39 452.357 l
-182.846 452.357 l
-182.846 453.327 l
-h
-f
-187.52 448.373 -0.647 5.644 re
-189.24 448.373 -0.647 3.984 re
-189.284 453.401 m
-189.284 453.291 189.254 453.198 189.196 453.121 c
-189.137 453.052 189.042 453.019 188.916 453.019 c
-188.799 453.019 188.703 453.052 188.637 453.121 c
-188.579 453.198 188.549 453.291 188.549 453.401 c
-188.549 453.518 188.579 453.61 188.637 453.68 c
-188.703 453.757 188.799 453.798 188.916 453.798 c
-189.042 453.798 189.137 453.757 189.196 453.68 c
-189.254 453.599 189.284 453.507 189.284 453.401 c
-190.871 452.357 m
-190.886 451.99 l
-191.129 452.284 191.448 452.431 191.841 452.431 c
-192.282 452.431 192.591 452.232 192.768 451.843 c
-193.021 452.232 193.37 452.431 193.811 452.431 c
-194.546 452.431 194.921 451.968 194.943 451.049 c
-194.943 448.373 l
-194.296 448.373 l
-194.296 450.99 l
-194.296 451.284 194.241 451.498 194.135 451.637 c
-194.035 451.773 193.863 451.843 193.62 451.843 c
-193.422 451.843 193.26 451.762 193.135 451.608 c
-193.017 451.461 192.947 451.269 192.93 451.034 c
-192.93 448.373 l
-192.267 448.373 l
-192.267 451.02 l
-192.267 451.567 192.047 451.843 191.606 451.843 c
-191.272 451.843 191.037 451.681 190.9 451.357 c
-190.9 448.373 l
-190.254 448.373 l
-190.254 452.357 l
-h
-196.619 448.373 -0.647 3.984 re
-196.662 453.401 m
-196.662 453.291 196.633 453.198 196.575 453.121 c
-196.516 453.052 196.421 453.019 196.296 453.019 c
-196.178 453.019 196.082 453.052 196.016 453.121 c
-195.957 453.198 195.928 453.291 195.928 453.401 c
-195.928 453.518 195.957 453.61 196.016 453.68 c
-196.082 453.757 196.178 453.798 196.296 453.798 c
-196.421 453.798 196.516 453.757 196.575 453.68 c
-196.633 453.599 196.662 453.507 196.662 453.401 c
-198.486 453.312 m
-198.486 452.357 l
-199.088 452.357 l
-199.088 451.828 l
-198.486 451.828 l
-198.486 449.358 l
-198.486 449.2 198.507 449.083 198.559 449.006 c
-198.617 448.925 198.706 448.888 198.823 448.888 c
-198.912 448.888 199 448.903 199.088 448.932 c
-199.088 448.373 l
-198.941 448.326 198.787 448.3 198.632 448.3 c
-198.376 448.3 198.181 448.392 198.044 448.579 c
-197.905 448.763 197.838 449.024 197.838 449.358 c
-197.838 451.828 l
-197.236 451.828 l
-197.236 452.357 l
-197.838 452.357 l
-197.838 453.312 l
-h
-201.793 449.387 m
-201.793 449.535 201.738 449.656 201.631 449.755 c
-201.52 449.851 201.315 449.969 201.013 450.108 c
-200.668 450.255 200.425 450.376 200.279 450.476 c
-200.132 450.582 200.022 450.7 199.955 450.829 c
-199.885 450.953 199.852 451.111 199.852 451.299 c
-199.852 451.622 199.97 451.891 200.205 452.107 c
-200.44 452.321 200.742 452.431 201.117 452.431 c
-201.499 452.431 201.807 452.317 202.043 452.092 c
-202.278 451.864 202.395 451.578 202.395 451.226 c
-201.749 451.226 l
-201.749 451.402 201.69 451.552 201.572 451.681 c
-201.455 451.806 201.3 451.872 201.117 451.872 c
-200.918 451.872 200.768 451.816 200.661 451.71 c
-200.551 451.611 200.499 451.479 200.499 451.313 c
-200.499 451.185 200.536 451.078 200.617 450.99 c
-200.694 450.91 200.885 450.806 201.19 450.681 c
-201.668 450.494 201.998 450.307 202.175 450.123 c
-202.351 449.946 202.44 449.719 202.44 449.447 c
-202.44 449.094 202.314 448.815 202.072 448.608 c
-201.837 448.403 201.52 448.3 201.131 448.3 c
-200.709 448.3 200.371 448.418 200.117 448.653 c
-199.86 448.895 199.735 449.2 199.735 449.564 c
-200.382 449.564 l
-200.389 449.337 200.459 449.16 200.587 449.035 c
-200.712 448.917 200.896 448.859 201.131 448.859 c
-201.345 448.859 201.506 448.907 201.616 449.006 c
-201.734 449.101 201.793 449.229 201.793 449.387 c
-205.703 448.373 -0.647 5.644 re
-207.423 448.373 -0.647 3.984 re
-207.467 453.401 m
-207.467 453.291 207.438 453.198 207.378 453.121 c
-207.319 453.052 207.224 453.019 207.099 453.019 c
-206.981 453.019 206.886 453.052 206.82 453.121 c
-206.761 453.198 206.732 453.291 206.732 453.401 c
-206.732 453.518 206.761 453.61 206.82 453.68 c
-206.886 453.757 206.981 453.798 207.099 453.798 c
-207.224 453.798 207.319 453.757 207.378 453.68 c
-207.438 453.599 207.467 453.507 207.467 453.401 c
-210.377 449.387 m
-210.377 449.535 210.322 449.656 210.216 449.755 c
-210.105 449.851 209.9 449.969 209.598 450.108 c
-209.252 450.255 209.01 450.376 208.863 450.476 c
-208.716 450.582 208.606 450.7 208.539 450.829 c
-208.47 450.953 208.437 451.111 208.437 451.299 c
-208.437 451.622 208.554 451.891 208.79 452.107 c
-209.025 452.321 209.326 452.431 209.701 452.431 c
-210.083 452.431 210.392 452.317 210.627 452.092 c
-210.862 451.864 210.98 451.578 210.98 451.226 c
-210.333 451.226 l
-210.333 451.402 210.274 451.552 210.156 451.681 c
-210.039 451.806 209.885 451.872 209.701 451.872 c
-209.503 451.872 209.352 451.816 209.245 451.71 c
-209.135 451.611 209.084 451.479 209.084 451.313 c
-209.084 451.185 209.121 451.078 209.201 450.99 c
-209.279 450.91 209.47 450.806 209.774 450.681 c
-210.252 450.494 210.583 450.307 210.759 450.123 c
-210.935 449.946 211.024 449.719 211.024 449.447 c
-211.024 449.094 210.899 448.815 210.656 448.608 c
-210.421 448.403 210.105 448.3 209.715 448.3 c
-209.293 448.3 208.955 448.418 208.701 448.653 c
-208.444 448.895 208.319 449.2 208.319 449.564 c
-208.965 449.564 l
-208.973 449.337 209.044 449.16 209.171 449.035 c
-209.297 448.917 209.48 448.859 209.715 448.859 c
-209.929 448.859 210.091 448.907 210.201 449.006 c
-210.318 449.101 210.377 449.229 210.377 449.387 c
-212.714 453.312 m
-212.714 452.357 l
-213.317 452.357 l
-213.317 451.828 l
-212.714 451.828 l
-212.714 449.358 l
-212.714 449.2 212.736 449.083 212.788 449.006 c
-212.847 448.925 212.934 448.888 213.052 448.888 c
-213.14 448.888 213.229 448.903 213.317 448.932 c
-213.317 448.373 l
-213.17 448.326 213.015 448.3 212.861 448.3 c
-212.604 448.3 212.41 448.392 212.273 448.579 c
-212.134 448.763 212.067 449.024 212.067 449.358 c
-212.067 451.828 l
-211.465 451.828 l
-211.465 452.357 l
-212.067 452.357 l
-212.067 453.312 l
-h
-216.653 453.312 m
-216.653 452.357 l
-217.256 452.357 l
-217.256 451.828 l
-216.653 451.828 l
-216.653 449.358 l
-216.653 449.2 216.676 449.083 216.727 449.006 c
-216.786 448.925 216.874 448.888 216.992 448.888 c
-217.08 448.888 217.168 448.903 217.256 448.932 c
-217.256 448.373 l
-217.109 448.326 216.955 448.3 216.801 448.3 c
-216.543 448.3 216.348 448.392 216.213 448.579 c
-216.073 448.763 216.007 449.024 216.007 449.358 c
-216.007 451.828 l
-215.404 451.828 l
-215.404 452.357 l
-216.007 452.357 l
-216.007 453.312 l
-h
-217.815 450.549 m
-217.815 451.126 217.95 451.581 218.226 451.916 c
-218.509 452.258 218.881 452.431 219.344 452.431 c
-219.803 452.431 220.171 452.261 220.446 451.931 c
-220.728 451.608 220.876 451.159 220.886 450.593 c
-220.886 450.167 l
-220.886 449.597 220.743 449.142 220.46 448.799 c
-220.185 448.466 219.818 448.3 219.358 448.3 c
-218.895 448.3 218.524 448.462 218.241 448.785 c
-217.965 449.116 217.823 449.557 217.815 450.108 c
-h
-218.461 450.167 m
-218.461 449.763 218.538 449.447 218.696 449.212 c
-218.862 448.976 219.082 448.859 219.358 448.859 c
-219.924 448.859 220.218 449.27 220.24 450.093 c
-220.24 450.549 l
-220.24 450.95 220.156 451.269 219.99 451.504 c
-219.832 451.747 219.616 451.872 219.344 451.872 c
-219.078 451.872 218.862 451.747 218.696 451.504 c
-218.538 451.269 218.461 450.95 218.461 450.549 c
-h
-224.15 448.373 -0.646 5.644 re
-227.207 448.373 m
-227.167 448.462 227.141 448.608 227.134 448.815 c
-226.899 448.469 226.604 448.3 226.252 448.3 c
-225.888 448.3 225.605 448.396 225.399 448.594 c
-225.201 448.799 225.106 449.086 225.106 449.462 c
-225.106 449.862 225.241 450.181 225.517 450.417 c
-225.789 450.659 226.164 450.784 226.634 450.784 c
-227.119 450.784 l
-227.119 451.211 l
-227.119 451.446 227.064 451.611 226.958 451.71 c
-226.847 451.816 226.685 451.872 226.473 451.872 c
-226.274 451.872 226.112 451.814 225.987 451.696 c
-225.87 451.578 225.811 451.431 225.811 451.255 c
-225.164 451.255 l
-225.164 451.45 225.223 451.641 225.341 451.828 c
-225.466 452.011 225.627 452.159 225.825 452.269 c
-226.031 452.375 226.259 452.431 226.517 452.431 c
-226.918 452.431 227.222 452.327 227.428 452.122 c
-227.641 451.916 227.755 451.622 227.766 451.24 c
-227.766 449.227 l
-227.766 448.921 227.803 448.656 227.884 448.433 c
-227.884 448.373 l
-h
-226.34 448.888 m
-226.506 448.888 226.656 448.932 226.796 449.021 c
-226.943 449.109 227.049 449.219 227.119 449.358 c
-227.119 450.299 l
-226.752 450.299 l
-226.436 450.299 226.193 450.229 226.017 450.093 c
-225.84 449.965 225.752 449.777 225.752 449.535 c
-225.752 449.307 225.796 449.142 225.885 449.035 c
-225.973 448.936 226.124 448.888 226.34 448.888 c
-230.706 449.387 m
-230.706 449.535 230.65 449.656 230.544 449.755 c
-230.434 449.851 230.228 449.969 229.927 450.108 c
-229.582 450.255 229.339 450.376 229.191 450.476 c
-229.045 450.582 228.935 450.7 228.869 450.829 c
-228.799 450.953 228.765 451.111 228.765 451.299 c
-228.765 451.622 228.883 451.891 229.118 452.107 c
-229.353 452.321 229.655 452.431 230.03 452.431 c
-230.411 452.431 230.721 452.317 230.956 452.092 c
-231.191 451.864 231.308 451.578 231.308 451.226 c
-230.662 451.226 l
-230.662 451.402 230.602 451.552 230.486 451.681 c
-230.367 451.806 230.213 451.872 230.03 451.872 c
-229.831 451.872 229.681 451.816 229.574 451.71 c
-229.464 451.611 229.412 451.479 229.412 451.313 c
-229.412 451.185 229.449 451.078 229.53 450.99 c
-229.607 450.91 229.798 450.806 230.103 450.681 c
-230.581 450.494 230.912 450.307 231.088 450.123 c
-231.265 449.946 231.352 449.719 231.352 449.447 c
-231.352 449.094 231.228 448.815 230.985 448.608 c
-230.75 448.403 230.434 448.3 230.045 448.3 c
-229.622 448.3 229.284 448.418 229.03 448.653 c
-228.773 448.895 228.648 449.2 228.648 449.564 c
-229.295 449.564 l
-229.302 449.337 229.372 449.16 229.501 449.035 c
-229.625 448.917 229.809 448.859 230.045 448.859 c
-230.257 448.859 230.419 448.907 230.529 449.006 c
-230.647 449.101 230.706 449.229 230.706 449.387 c
-233.043 453.312 m
-233.043 452.357 l
-233.646 452.357 l
-233.646 451.828 l
-233.043 451.828 l
-233.043 449.358 l
-233.043 449.2 233.065 449.083 233.116 449.006 c
-233.175 448.925 233.264 448.888 233.381 448.888 c
-233.469 448.888 233.557 448.903 233.646 448.932 c
-233.646 448.373 l
-233.499 448.326 233.345 448.3 233.189 448.3 c
-232.933 448.3 232.738 448.392 232.602 448.579 c
-232.462 448.763 232.396 449.024 232.396 449.358 c
-232.396 451.828 l
-231.793 451.828 l
-231.793 452.357 l
-232.396 452.357 l
-232.396 453.312 l
-h
-f
-q 1 0 0 1 236.9825 452.3574 cm
-0 0 m
-0.029 -0.397 l
-0.264 -0.085 0.565 0.073 0.941 0.073 c
-1.624 0.073 1.977 -0.408 1.999 -1.367 c
-1.999 -3.984 l
-0.955 -3.984 l
-0.955 -1.441 l
-0.955 -1.216 0.918 -1.055 0.852 -0.956 c
-0.783 -0.86 0.665 -0.809 0.5 -0.809 c
-0.312 -0.809 0.166 -0.904 0.058 -1.088 c
-0.058 -3.984 l
--0.985 -3.984 l
--0.985 0 l
-h
-f
-Q
-q 1 0 0 1 242.9355 448.8588 cm
-0 0 m
-0.213 0 0.386 0.062 0.515 0.191 c
-0.65 0.327 0.723 0.518 0.735 0.764 c
-1.352 0.764 l
-1.33 0.382 1.194 0.062 0.941 -0.191 c
-0.683 -0.437 0.371 -0.559 0 -0.559 c
--0.493 -0.559 -0.867 -0.408 -1.132 -0.103 c
--1.389 0.21 -1.515 0.676 -1.515 1.294 c
--1.515 1.735 l
--1.515 2.329 -1.389 2.786 -1.132 3.102 c
--0.867 3.414 -0.493 3.572 0 3.572 c
-0.401 3.572 0.721 3.439 0.956 3.175 c
-1.198 2.917 1.33 2.572 1.352 2.132 c
-0.735 2.132 l
-0.713 2.425 0.64 2.645 0.515 2.793 c
-0.397 2.94 0.224 3.013 0 3.013 c
--0.294 3.013 -0.511 2.914 -0.647 2.72 c
--0.786 2.531 -0.86 2.223 -0.867 1.793 c
--0.867 1.278 l
--0.867 0.808 -0.801 0.474 -0.661 0.279 c
--0.515 0.092 -0.294 0 0 0 c
-1.97 1.69 m
-1.97 2.267 2.105 2.722 2.381 3.057 c
-2.664 3.399 3.035 3.572 3.499 3.572 c
-3.958 3.572 4.326 3.403 4.6 3.072 c
-4.883 2.749 5.031 2.3 5.041 1.735 c
-5.041 1.309 l
-5.041 0.738 4.898 0.283 4.615 -0.059 c
-4.34 -0.393 3.973 -0.559 3.513 -0.559 c
-3.05 -0.559 2.679 -0.397 2.396 -0.073 c
-2.12 0.257 1.977 0.698 1.97 1.249 c
-h
-2.616 1.309 m
-2.616 0.904 2.693 0.588 2.851 0.353 c
-3.017 0.118 3.237 0 3.513 0 c
-4.079 0 4.373 0.411 4.395 1.234 c
-4.395 1.69 l
-4.395 2.091 4.31 2.41 4.145 2.645 c
-3.987 2.888 3.77 3.013 3.499 3.013 c
-3.233 3.013 3.017 2.888 2.851 2.645 c
-2.693 2.41 2.616 2.091 2.616 1.69 c
-h
-6.497 3.499 m
-6.512 3.131 l
-6.755 3.425 7.073 3.572 7.467 3.572 c
-7.908 3.572 8.216 3.373 8.393 2.984 c
-8.646 3.373 8.995 3.572 9.437 3.572 c
-10.171 3.572 10.547 3.109 10.568 2.19 c
-10.568 -0.485 l
-9.922 -0.485 l
-9.922 2.132 l
-9.922 2.425 9.866 2.639 9.76 2.778 c
-9.66 2.914 9.488 2.984 9.246 2.984 c
-9.047 2.984 8.885 2.903 8.76 2.749 c
-8.643 2.602 8.573 2.41 8.555 2.175 c
-8.555 -0.485 l
-7.893 -0.485 l
-7.893 2.161 l
-7.893 2.708 7.673 2.984 7.231 2.984 c
-6.898 2.984 6.662 2.822 6.526 2.499 c
-6.526 -0.485 l
-5.88 -0.485 l
-5.88 3.499 l
-h
-12.156 3.499 m
-12.17 3.131 l
-12.413 3.425 12.733 3.572 13.126 3.572 c
-13.567 3.572 13.876 3.373 14.052 2.984 c
-14.306 3.373 14.655 3.572 15.096 3.572 c
-15.831 3.572 16.205 3.109 16.228 2.19 c
-16.228 -0.485 l
-15.581 -0.485 l
-15.581 2.132 l
-15.581 2.425 15.526 2.639 15.419 2.778 c
-15.32 2.914 15.147 2.984 14.905 2.984 c
-14.707 2.984 14.545 2.903 14.42 2.749 c
-14.302 2.602 14.232 2.41 14.214 2.175 c
-14.214 -0.485 l
-13.552 -0.485 l
-13.552 2.161 l
-13.552 2.708 13.332 2.984 12.891 2.984 c
-12.557 2.984 12.322 2.822 12.185 2.499 c
-12.185 -0.485 l
-11.539 -0.485 l
-11.539 3.499 l
-h
-17.903 -0.485 -0.646 3.984 re
-17.947 4.542 m
-17.947 4.432 17.918 4.34 17.859 4.262 c
-17.801 4.193 17.705 4.16 17.58 4.16 c
-17.462 4.16 17.367 4.193 17.3 4.262 c
-17.242 4.34 17.213 4.432 17.213 4.542 c
-17.213 4.659 17.242 4.752 17.3 4.821 c
-17.367 4.898 17.462 4.939 17.58 4.939 c
-17.705 4.939 17.801 4.898 17.859 4.821 c
-17.918 4.74 17.947 4.648 17.947 4.542 c
-19.771 4.453 m
-19.771 3.499 l
-20.373 3.499 l
-20.373 2.969 l
-19.771 2.969 l
-19.771 0.5 l
-19.771 0.341 19.792 0.224 19.844 0.147 c
-19.902 0.066 19.991 0.029 20.108 0.029 c
-20.197 0.029 20.284 0.044 20.373 0.073 c
-20.373 -0.485 l
-20.226 -0.532 20.072 -0.559 19.917 -0.559 c
-19.66 -0.559 19.465 -0.467 19.329 -0.279 c
-19.189 -0.096 19.123 0.166 19.123 0.5 c
-19.123 2.969 l
-18.52 2.969 l
-18.52 3.499 l
-19.123 3.499 l
-19.123 4.453 l
-h
-23.077 0.529 m
-23.077 0.676 23.023 0.798 22.915 0.897 c
-22.805 0.992 22.599 1.11 22.298 1.249 c
-21.953 1.396 21.71 1.517 21.564 1.617 c
-21.417 1.723 21.306 1.841 21.24 1.97 c
-21.17 2.094 21.137 2.252 21.137 2.44 c
-21.137 2.763 21.255 3.032 21.49 3.248 c
-21.725 3.462 22.026 3.572 22.401 3.572 c
-22.784 3.572 23.092 3.458 23.328 3.233 c
-23.563 3.006 23.68 2.72 23.68 2.367 c
-23.033 2.367 l
-23.033 2.543 22.975 2.693 22.857 2.822 c
-22.74 2.947 22.585 3.013 22.401 3.013 c
-22.202 3.013 22.052 2.958 21.946 2.851 c
-21.835 2.753 21.784 2.62 21.784 2.454 c
-21.784 2.326 21.82 2.219 21.901 2.132 c
-21.979 2.051 22.169 1.947 22.474 1.822 c
-22.952 1.635 23.283 1.448 23.459 1.264 c
-23.636 1.087 23.725 0.86 23.725 0.588 c
-23.725 0.235 23.599 -0.044 23.357 -0.25 c
-23.122 -0.455 22.805 -0.559 22.416 -0.559 c
-21.994 -0.559 21.655 -0.441 21.402 -0.206 c
-21.144 0.037 21.02 0.341 21.02 0.706 c
-21.666 0.706 l
-21.674 0.478 21.743 0.301 21.872 0.176 c
-21.997 0.058 22.181 0 22.416 0 c
-22.629 0 22.79 0.048 22.901 0.147 c
-23.019 0.243 23.077 0.371 23.077 0.529 c
-24.606 -0.133 m
-24.606 -0.015 24.639 0.081 24.709 0.162 c
-24.775 0.239 24.878 0.279 25.018 0.279 c
-25.165 0.279 25.271 0.239 25.341 0.162 c
-25.418 0.081 25.458 -0.015 25.458 -0.133 c
-25.458 -0.243 25.418 -0.335 25.341 -0.412 c
-25.271 -0.489 25.165 -0.53 25.018 -0.53 c
-24.878 -0.53 24.775 -0.489 24.709 -0.412 c
-24.639 -0.335 24.606 -0.243 24.606 -0.133 c
-f
-Q
-0.113 0.082 0.09 0 k
-35.668 441.263 238.665 -12.898 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 40.8563 434.424 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.646 -0.243 -0.775 -0.367 -0.881 c
--0.496 -0.992 -0.658 -1.08 -0.852 -1.147 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.161 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.926 c
--3.127 -0.819 -3.23 -0.69 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.213 -3.484 -0.014 c
--2.66 0.133 l
--2.642 0.033 -2.616 -0.058 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.367 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.684 -1.992 0.691 -1.999 0.691 c
--2.167 0.728 -2.329 0.771 -2.484 0.823 c
--2.642 0.882 -2.786 0.96 -2.91 1.058 c
--3.039 1.154 -3.142 1.279 -3.219 1.426 c
--3.289 1.573 -3.322 1.756 -3.322 1.985 c
--3.322 2.18 -3.289 2.344 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.837 c
--2.8 2.932 -2.645 3.003 -2.469 3.043 c
--2.293 3.09 -2.102 3.12 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.12 -1.128 3.09 -0.97 3.043 c
--0.804 2.992 -0.669 2.918 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.202 2.344 -0.143 2.182 -0.103 1.999 c
--0.941 1.882 l
--1.01 2.253 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.353 c
--1.294 1.312 -1.117 1.264 -0.941 1.205 c
--0.756 1.147 -0.595 1.066 -0.455 0.97 c
--0.32 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.455 c
--2.26 2.425 -2.319 2.385 -2.366 2.338 c
--2.406 2.297 -2.437 2.249 -2.454 2.19 c
--2.477 2.132 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.779 c
--2.41 1.72 -2.373 1.669 -2.322 1.632 c
--2.263 1.592 -2.201 1.558 -2.131 1.529 c
--2.065 1.5 -1.984 1.47 -1.896 1.44 c
-h
--0.837 -0.014 m
--0.837 0.092 -0.86 0.177 -0.897 0.235 c
--0.926 0.301 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.53 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.529 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.014 c
-6.402 -2.66 m
-6.185 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.396 c
-5.284 -2.315 5.185 -2.219 5.108 -2.102 c
-5.039 -1.984 4.991 -1.855 4.961 -1.72 c
-5.858 -1.617 l
-5.895 -1.753 5.964 -1.859 6.064 -1.94 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.057 6.681 -2.028 c
-6.758 -1.999 6.828 -1.944 6.887 -1.866 c
-6.945 -1.797 6.99 -1.705 7.019 -1.587 c
-7.056 -1.469 7.078 -1.323 7.078 -1.147 c
-7.078 -0.955 l
-7.078 -0.889 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.072 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.215 -0.897 5.108 -0.75 c
-5.009 -0.595 4.935 -0.411 4.888 -0.206 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.771 4.836 1.018 4.888 1.235 c
-4.946 1.448 5.027 1.632 5.137 1.779 c
-5.245 1.933 5.376 2.051 5.534 2.132 c
-5.689 2.22 5.876 2.263 6.093 2.263 c
-6.188 2.263 6.288 2.253 6.387 2.234 c
-6.483 2.213 6.571 2.18 6.652 2.132 c
-6.739 2.08 6.817 2.018 6.887 1.941 c
-6.964 1.86 7.026 1.768 7.078 1.661 c
-7.092 1.661 l
-7.092 1.808 l
-7.1 1.867 7.107 1.918 7.107 1.97 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.152 2.22 c
-8.004 2.22 l
-7.993 2.139 7.982 2.028 7.975 1.882 c
-7.975 1.411 l
-7.975 -1.161 l
-7.975 -1.415 7.938 -1.635 7.871 -1.822 c
-7.802 -2.007 7.699 -2.161 7.563 -2.278 c
-7.423 -2.404 7.258 -2.499 7.063 -2.558 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.53 m
-7.092 0.742 7.067 0.919 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.5 6.729 1.558 6.652 1.588 c
-6.571 1.625 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.621 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.367 c
-5.88 1.279 5.835 1.162 5.799 1.014 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.338 c
-6.049 -0.515 6.211 -0.602 6.417 -0.602 c
-6.483 -0.602 6.556 -0.588 6.637 -0.559 c
-6.725 -0.522 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.176 7.019 -0.029 c
-7.067 0.118 7.092 0.301 7.092 0.53 c
-11.036 -0.646 m
-12.168 -0.646 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.646 l
-10.124 -0.646 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.22 l
-11.036 2.22 l
-h
-10.124 3.514 0.912 -0.676 re
-10.124 2.837 m
-13.6 1.602 m
-13.057 1.602 l
-13.057 2.22 l
-13.644 2.22 l
-13.924 3.117 l
-14.497 3.117 l
-14.497 2.22 l
-15.732 2.22 l
-15.732 1.602 l
-14.497 1.602 l
-14.497 -0.103 l
-14.497 -0.324 l
-14.504 -0.393 14.527 -0.455 14.556 -0.515 c
-14.593 -0.565 14.648 -0.61 14.718 -0.646 c
-14.795 -0.676 14.909 -0.69 15.056 -0.69 c
-15.192 -0.69 15.327 -0.687 15.468 -0.676 c
-15.603 -0.658 15.736 -0.632 15.865 -0.602 c
-15.865 -1.205 l
-15.784 -1.216 15.707 -1.23 15.629 -1.249 c
-15.549 -1.261 15.471 -1.267 15.394 -1.278 c
-15.313 -1.286 15.225 -1.294 15.129 -1.294 c
-15.041 -1.301 14.942 -1.308 14.835 -1.308 c
-14.648 -1.308 14.486 -1.294 14.35 -1.264 c
-14.221 -1.228 14.107 -1.183 14.012 -1.132 c
-13.924 -1.084 13.85 -1.025 13.791 -0.955 c
-13.733 -0.878 13.689 -0.801 13.66 -0.72 c
-13.63 -0.632 13.608 -0.544 13.6 -0.455 c
-13.59 -0.36 13.586 -0.264 13.586 -0.176 c
-h
-23.221 -0.646 m
-24.353 -0.646 l
-24.353 -1.264 l
-21.045 -1.264 l
-21.045 -0.646 l
-22.31 -0.646 l
-22.31 2.896 l
-21.384 2.896 l
-21.384 3.514 l
-23.221 3.514 l
-h
-28.384 0.485 m
-28.384 0.21 28.347 -0.04 28.281 -0.264 c
-28.212 -0.482 28.108 -0.669 27.973 -0.823 c
-27.833 -0.981 27.657 -1.103 27.443 -1.19 c
-27.227 -1.278 26.973 -1.323 26.679 -1.323 c
-26.404 -1.323 26.157 -1.278 25.944 -1.19 c
-25.739 -1.103 25.566 -0.981 25.43 -0.823 c
-25.29 -0.669 25.187 -0.482 25.121 -0.264 c
-25.051 -0.04 25.018 0.21 25.018 0.485 c
-25.018 0.738 25.047 0.974 25.106 1.191 c
-25.172 1.415 25.275 1.606 25.415 1.764 c
-25.55 1.929 25.727 2.058 25.944 2.146 c
-26.157 2.234 26.414 2.278 26.709 2.278 c
-27.021 2.278 27.281 2.234 27.487 2.146 c
-27.701 2.058 27.873 1.929 28.002 1.764 c
-28.138 1.606 28.237 1.415 28.296 1.191 c
-28.355 0.974 28.384 0.738 28.384 0.485 c
-27.429 0.485 m
-27.429 0.691 27.414 0.867 27.385 1.014 c
-27.362 1.162 27.326 1.282 27.267 1.382 c
-27.208 1.477 27.135 1.548 27.046 1.588 c
-26.959 1.635 26.848 1.661 26.724 1.661 c
-26.458 1.661 26.267 1.562 26.15 1.367 c
-26.032 1.18 25.974 0.886 25.974 0.485 c
-25.974 0.063 26.032 -0.243 26.15 -0.426 c
-26.267 -0.613 26.444 -0.706 26.679 -0.706 c
-26.804 -0.706 26.918 -0.687 27.017 -0.646 c
-27.113 -0.599 27.194 -0.525 27.252 -0.426 c
-27.318 -0.33 27.362 -0.206 27.385 -0.058 c
-27.414 0.088 27.429 0.268 27.429 0.485 c
-30.769 -2.66 m
-30.552 -2.66 30.361 -2.635 30.196 -2.587 c
-30.027 -2.547 29.887 -2.484 29.77 -2.396 c
-29.652 -2.315 29.552 -2.219 29.475 -2.102 c
-29.406 -1.984 29.358 -1.855 29.328 -1.72 c
-30.225 -1.617 l
-30.262 -1.753 30.331 -1.859 30.431 -1.94 c
-30.526 -2.028 30.651 -2.072 30.799 -2.072 c
-30.886 -2.072 30.967 -2.057 31.048 -2.028 c
-31.125 -1.999 31.195 -1.944 31.254 -1.866 c
-31.313 -1.797 31.357 -1.705 31.387 -1.587 c
-31.424 -1.469 31.445 -1.323 31.445 -1.147 c
-31.445 -0.955 l
-31.445 -0.889 31.449 -0.831 31.46 -0.779 c
-31.46 -0.588 l
-31.445 -0.588 l
-31.346 -0.816 31.202 -0.977 31.019 -1.072 c
-30.832 -1.172 30.626 -1.22 30.402 -1.22 c
-30.196 -1.22 30.012 -1.183 29.858 -1.103 c
-29.71 -1.014 29.582 -0.897 29.475 -0.75 c
-29.376 -0.595 29.303 -0.411 29.255 -0.206 c
-29.203 0.008 29.182 0.243 29.182 0.5 c
-29.182 0.771 29.203 1.018 29.255 1.235 c
-29.313 1.448 29.394 1.632 29.505 1.779 c
-29.612 1.933 29.743 2.051 29.901 2.132 c
-30.056 2.22 30.244 2.263 30.46 2.263 c
-30.556 2.263 30.655 2.253 30.755 2.234 c
-30.85 2.213 30.938 2.18 31.019 2.132 c
-31.107 2.08 31.185 2.018 31.254 1.941 c
-31.331 1.86 31.393 1.768 31.445 1.661 c
-31.46 1.661 l
-31.46 1.808 l
-31.467 1.867 31.474 1.918 31.474 1.97 c
-31.482 2.028 31.489 2.076 31.489 2.117 c
-31.497 2.165 31.507 2.198 31.519 2.22 c
-32.371 2.22 l
-32.36 2.139 32.349 2.028 32.342 1.882 c
-32.342 1.411 l
-32.342 -1.161 l
-32.342 -1.415 32.305 -1.635 32.239 -1.822 c
-32.17 -2.007 32.066 -2.161 31.931 -2.278 c
-31.79 -2.404 31.625 -2.499 31.43 -2.558 c
-31.232 -2.624 31.011 -2.66 30.769 -2.66 c
-31.46 0.53 m
-31.46 0.742 31.434 0.919 31.387 1.058 c
-31.346 1.205 31.291 1.323 31.225 1.411 c
-31.166 1.5 31.096 1.558 31.019 1.588 c
-30.938 1.625 30.861 1.646 30.784 1.646 c
-30.684 1.646 30.593 1.621 30.504 1.573 c
-30.424 1.532 30.358 1.463 30.298 1.367 c
-30.248 1.279 30.203 1.162 30.167 1.014 c
-30.137 0.875 30.122 0.706 30.122 0.5 c
-30.122 0.125 30.181 -0.154 30.298 -0.338 c
-30.416 -0.515 30.578 -0.602 30.784 -0.602 c
-30.85 -0.602 30.923 -0.588 31.004 -0.559 c
-31.092 -0.522 31.166 -0.463 31.225 -0.382 c
-31.291 -0.294 31.346 -0.176 31.387 -0.029 c
-31.434 0.118 31.46 0.301 31.46 0.53 c
-37.953 0.838 1.866 -0.794 re
-37.953 0.044 m
-42.013 0.838 1.867 -0.794 re
-42.013 0.044 m
-48.691 0.485 m
-48.691 0.21 48.654 -0.04 48.588 -0.264 c
-48.519 -0.482 48.415 -0.669 48.28 -0.823 c
-48.14 -0.981 47.964 -1.103 47.75 -1.19 c
-47.534 -1.278 47.28 -1.323 46.986 -1.323 c
-46.711 -1.323 46.464 -1.278 46.251 -1.19 c
-46.045 -1.103 45.872 -0.981 45.736 -0.823 c
-45.597 -0.669 45.494 -0.482 45.427 -0.264 c
-45.358 -0.04 45.325 0.21 45.325 0.485 c
-45.325 0.738 45.354 0.974 45.413 1.191 c
-45.479 1.415 45.582 1.606 45.722 1.764 c
-45.857 1.929 46.034 2.058 46.251 2.146 c
-46.464 2.234 46.721 2.278 47.015 2.278 c
-47.328 2.278 47.588 2.234 47.794 2.146 c
-48.008 2.058 48.18 1.929 48.309 1.764 c
-48.444 1.606 48.544 1.415 48.602 1.191 c
-48.662 0.974 48.691 0.738 48.691 0.485 c
-47.735 0.485 m
-47.735 0.691 47.721 0.867 47.692 1.014 c
-47.669 1.162 47.632 1.282 47.574 1.382 c
-47.515 1.477 47.441 1.548 47.353 1.588 c
-47.265 1.635 47.155 1.661 47.029 1.661 c
-46.765 1.661 46.574 1.562 46.457 1.367 c
-46.339 1.18 46.281 0.886 46.281 0.485 c
-46.281 0.063 46.339 -0.243 46.457 -0.426 c
-46.574 -0.613 46.751 -0.706 46.986 -0.706 c
-47.11 -0.706 47.224 -0.687 47.324 -0.646 c
-47.42 -0.599 47.5 -0.525 47.559 -0.426 c
-47.625 -0.33 47.669 -0.206 47.692 -0.058 c
-47.721 0.088 47.735 0.268 47.735 0.485 c
-51.737 -1.264 m
-51.737 0.721 l
-51.737 1.022 51.693 1.242 51.605 1.382 c
-51.524 1.529 51.388 1.602 51.193 1.602 c
-51.083 1.602 50.981 1.577 50.885 1.529 c
-50.796 1.477 50.715 1.411 50.649 1.323 c
-50.591 1.235 50.539 1.124 50.503 1 c
-50.473 0.882 50.458 0.75 50.458 0.603 c
-50.458 -1.264 l
-49.547 -1.264 l
-49.547 1.44 l
-49.547 1.661 l
-49.547 1.75 49.539 1.827 49.533 1.897 c
-49.533 2.087 l
-49.533 2.22 l
-50.385 2.22 l
-50.393 2.19 50.4 2.146 50.4 2.087 c
-50.4 1.897 l
-50.407 1.827 50.414 1.756 50.414 1.691 c
-50.422 1.621 50.429 1.565 50.429 1.529 c
-50.443 1.529 l
-50.561 1.793 50.712 1.985 50.9 2.103 c
-51.083 2.22 51.303 2.278 51.561 2.278 c
-51.744 2.278 51.906 2.249 52.046 2.19 c
-52.182 2.132 52.296 2.043 52.384 1.926 c
-52.473 1.808 52.535 1.665 52.575 1.5 c
-52.623 1.341 52.648 1.154 52.648 0.941 c
-52.648 -1.264 l
-h
-55.17 -1.323 m
-54.912 -1.323 54.684 -1.286 54.478 -1.22 c
-54.273 -1.143 54.096 -1.029 53.95 -0.881 c
-53.803 -0.727 53.685 -0.536 53.597 -0.309 c
-53.516 -0.085 53.479 0.181 53.479 0.485 c
-53.479 0.816 53.523 1.095 53.612 1.323 c
-53.707 1.558 53.836 1.742 53.994 1.882 c
-54.159 2.018 54.347 2.117 54.553 2.176 c
-54.758 2.242 54.967 2.278 55.184 2.278 c
-55.456 2.278 55.691 2.227 55.889 2.132 c
-56.095 2.043 56.261 1.911 56.39 1.735 c
-56.525 1.565 56.625 1.359 56.683 1.118 c
-56.75 0.882 56.787 0.617 56.787 0.324 c
-56.787 0.309 l
-54.42 0.309 l
-54.42 0.162 54.435 0.023 54.464 -0.103 c
-54.501 -0.231 54.555 -0.345 54.626 -0.441 c
-54.692 -0.529 54.776 -0.599 54.875 -0.646 c
-54.971 -0.698 55.085 -0.72 55.214 -0.72 c
-55.368 -0.72 55.507 -0.687 55.625 -0.617 c
-55.75 -0.551 55.839 -0.448 55.889 -0.309 c
-56.728 -0.382 l
-56.698 -0.482 56.643 -0.588 56.566 -0.706 c
-56.485 -0.816 56.382 -0.918 56.257 -1.014 c
-56.14 -1.103 55.985 -1.176 55.802 -1.234 c
-55.625 -1.294 55.412 -1.323 55.17 -1.323 c
-55.17 1.706 m
-55.081 1.706 54.993 1.691 54.905 1.661 c
-54.817 1.632 54.736 1.58 54.67 1.515 c
-54.6 1.444 54.541 1.357 54.493 1.249 c
-54.453 1.139 54.435 1.014 54.435 0.867 c
-55.904 0.867 l
-55.904 1.004 55.879 1.124 55.831 1.235 c
-55.791 1.341 55.735 1.43 55.669 1.5 c
-55.611 1.565 55.537 1.617 55.449 1.646 c
-55.361 1.683 55.265 1.706 55.17 1.706 c
-59.774 -0.646 m
-60.905 -0.646 l
-60.905 -1.264 l
-57.599 -1.264 l
-57.599 -0.646 l
-58.863 -0.646 l
-58.863 2.896 l
-57.936 2.896 l
-57.936 3.514 l
-59.774 3.514 l
-h
-63.835 -0.646 m
-64.967 -0.646 l
-64.967 -1.264 l
-61.659 -1.264 l
-61.659 -0.646 l
-62.923 -0.646 l
-62.923 1.602 l
-61.998 1.602 l
-61.998 2.22 l
-63.835 2.22 l
-h
-62.923 3.514 0.912 -0.676 re
-62.923 2.837 m
-67.983 -1.264 m
-67.983 0.721 l
-67.983 1.022 67.939 1.242 67.851 1.382 c
-67.77 1.529 67.634 1.602 67.44 1.602 c
-67.33 1.602 67.226 1.577 67.131 1.529 c
-67.043 1.477 66.962 1.411 66.896 1.323 c
-66.837 1.235 66.785 1.124 66.748 1 c
-66.719 0.882 66.705 0.75 66.705 0.603 c
-66.705 -1.264 l
-65.793 -1.264 l
-65.793 1.44 l
-65.793 1.661 l
-65.793 1.75 65.786 1.827 65.778 1.897 c
-65.778 2.087 l
-65.778 2.22 l
-66.631 2.22 l
-66.638 2.19 66.646 2.146 66.646 2.087 c
-66.646 1.897 l
-66.653 1.827 66.661 1.756 66.661 1.691 c
-66.667 1.621 66.675 1.565 66.675 1.529 c
-66.69 1.529 l
-66.808 1.793 66.958 1.985 67.145 2.103 c
-67.33 2.22 67.55 2.278 67.807 2.278 c
-67.991 2.278 68.153 2.249 68.292 2.19 c
-68.428 2.132 68.542 2.043 68.63 1.926 c
-68.718 1.808 68.781 1.665 68.822 1.5 c
-68.869 1.341 68.895 1.154 68.895 0.941 c
-68.895 -1.264 l
-h
-71.412 -1.323 m
-71.155 -1.323 70.927 -1.286 70.721 -1.22 c
-70.515 -1.143 70.339 -1.029 70.192 -0.881 c
-70.045 -0.727 69.927 -0.536 69.84 -0.309 c
-69.759 -0.085 69.722 0.181 69.722 0.485 c
-69.722 0.816 69.765 1.095 69.854 1.323 c
-69.95 1.558 70.078 1.742 70.236 1.882 c
-70.401 2.018 70.588 2.117 70.794 2.176 c
-71 2.242 71.21 2.278 71.427 2.278 c
-71.698 2.278 71.934 2.227 72.132 2.132 c
-72.338 2.043 72.504 1.911 72.632 1.735 c
-72.768 1.565 72.867 1.359 72.926 1.118 c
-72.992 0.882 73.029 0.617 73.029 0.324 c
-73.029 0.309 l
-70.663 0.309 l
-70.663 0.162 70.677 0.023 70.706 -0.103 c
-70.743 -0.231 70.798 -0.345 70.868 -0.441 c
-70.935 -0.529 71.018 -0.599 71.118 -0.646 c
-71.213 -0.698 71.328 -0.72 71.456 -0.72 c
-71.61 -0.72 71.75 -0.687 71.868 -0.617 c
-71.993 -0.551 72.08 -0.448 72.132 -0.309 c
-72.97 -0.382 l
-72.94 -0.482 72.886 -0.588 72.809 -0.706 c
-72.728 -0.816 72.624 -0.918 72.5 -1.014 c
-72.382 -1.103 72.228 -1.176 72.044 -1.234 c
-71.868 -1.294 71.654 -1.323 71.412 -1.323 c
-71.412 1.706 m
-71.324 1.706 71.236 1.691 71.147 1.661 c
-71.059 1.632 70.978 1.58 70.912 1.515 c
-70.842 1.444 70.783 1.357 70.736 1.249 c
-70.696 1.139 70.677 1.014 70.677 0.867 c
-72.147 0.867 l
-72.147 1.004 72.121 1.124 72.074 1.235 c
-72.033 1.341 71.978 1.43 71.912 1.5 c
-71.853 1.565 71.779 1.617 71.691 1.646 c
-71.603 1.683 71.507 1.706 71.412 1.706 c
-78.567 0.838 1.866 -0.794 re
-78.567 0.044 m
-82.627 0.838 1.867 -0.794 re
-82.627 0.044 m
-87.629 -2.66 m
-87.412 -2.66 87.221 -2.635 87.055 -2.587 c
-86.887 -2.547 86.747 -2.484 86.629 -2.396 c
-86.511 -2.315 86.413 -2.219 86.335 -2.102 c
-86.265 -1.984 86.218 -1.855 86.188 -1.72 c
-87.085 -1.617 l
-87.122 -1.753 87.191 -1.859 87.29 -1.94 c
-87.386 -2.028 87.511 -2.072 87.658 -2.072 c
-87.747 -2.072 87.827 -2.057 87.908 -2.028 c
-87.985 -1.999 88.055 -1.944 88.113 -1.866 c
-88.173 -1.797 88.217 -1.705 88.246 -1.587 c
-88.283 -1.469 88.304 -1.323 88.304 -1.147 c
-88.304 -0.955 l
-88.304 -0.889 88.308 -0.831 88.319 -0.779 c
-88.319 -0.588 l
-88.304 -0.588 l
-88.206 -0.816 88.063 -0.977 87.878 -1.072 c
-87.691 -1.172 87.485 -1.22 87.261 -1.22 c
-87.055 -1.22 86.872 -1.183 86.717 -1.103 c
-86.571 -1.014 86.442 -0.897 86.335 -0.75 c
-86.236 -0.595 86.162 -0.411 86.114 -0.206 c
-86.064 0.008 86.041 0.243 86.041 0.5 c
-86.041 0.771 86.064 1.018 86.114 1.235 c
-86.174 1.448 86.255 1.632 86.365 1.779 c
-86.471 1.933 86.604 2.051 86.762 2.132 c
-86.916 2.22 87.103 2.263 87.32 2.263 c
-87.415 2.263 87.515 2.253 87.614 2.234 c
-87.71 2.213 87.797 2.18 87.878 2.132 c
-87.967 2.08 88.044 2.018 88.113 1.941 c
-88.191 1.86 88.254 1.768 88.304 1.661 c
-88.319 1.661 l
-88.319 1.808 l
-88.327 1.867 88.334 1.918 88.334 1.97 c
-88.342 2.028 88.349 2.076 88.349 2.117 c
-88.356 2.165 88.367 2.198 88.379 2.22 c
-89.231 2.22 l
-89.22 2.139 89.208 2.028 89.202 1.882 c
-89.202 1.411 l
-89.202 -1.161 l
-89.202 -1.415 89.165 -1.635 89.098 -1.822 c
-89.029 -2.007 88.926 -2.161 88.79 -2.278 c
-88.651 -2.404 88.485 -2.499 88.29 -2.558 c
-88.092 -2.624 87.872 -2.66 87.629 -2.66 c
-88.319 0.53 m
-88.319 0.742 88.294 0.919 88.246 1.058 c
-88.206 1.205 88.15 1.323 88.084 1.411 c
-88.026 1.5 87.955 1.558 87.878 1.588 c
-87.797 1.625 87.72 1.646 87.643 1.646 c
-87.544 1.646 87.452 1.621 87.364 1.573 c
-87.284 1.532 87.217 1.463 87.159 1.367 c
-87.107 1.279 87.063 1.162 87.026 1.014 c
-86.997 0.875 86.982 0.706 86.982 0.5 c
-86.982 0.125 87.041 -0.154 87.159 -0.338 c
-87.276 -0.515 87.438 -0.602 87.643 -0.602 c
-87.71 -0.602 87.783 -0.588 87.864 -0.559 c
-87.952 -0.522 88.026 -0.463 88.084 -0.382 c
-88.15 -0.294 88.206 -0.176 88.246 -0.029 c
-88.294 0.118 88.319 0.301 88.319 0.53 c
-93.174 1.47 m
-93.075 1.477 92.971 1.488 92.865 1.5 c
-92.755 1.517 92.634 1.529 92.498 1.529 c
-92.321 1.529 92.163 1.488 92.028 1.411 c
-91.888 1.341 91.77 1.242 91.674 1.118 c
-91.587 0.989 91.517 0.842 91.469 0.676 c
-91.429 0.507 91.41 0.331 91.41 0.147 c
-91.41 -1.264 l
-90.513 -1.264 l
-90.513 0.985 l
-90.513 1.11 90.502 1.235 90.484 1.353 c
-90.473 1.477 90.459 1.595 90.44 1.706 c
-90.429 1.823 90.414 1.918 90.396 1.999 c
-90.374 2.087 90.355 2.161 90.337 2.22 c
-91.219 2.22 l
-91.226 2.168 91.238 2.117 91.248 2.058 c
-91.267 1.999 91.282 1.933 91.292 1.867 c
-91.311 1.808 91.325 1.742 91.336 1.675 c
-91.344 1.606 91.355 1.544 91.366 1.484 c
-91.381 1.484 l
-91.417 1.602 91.469 1.709 91.527 1.808 c
-91.594 1.904 91.674 1.988 91.763 2.058 c
-91.851 2.124 91.954 2.18 92.071 2.22 c
-92.196 2.257 92.343 2.278 92.512 2.278 c
-92.637 2.278 92.755 2.271 92.865 2.263 c
-92.983 2.253 93.085 2.238 93.174 2.22 c
-h
-95.18 -1.323 m
-95.011 -1.323 94.86 -1.301 94.725 -1.264 c
-94.596 -1.216 94.482 -1.147 94.386 -1.058 c
-94.299 -0.97 94.228 -0.864 94.181 -0.735 c
-94.129 -0.599 94.107 -0.448 94.107 -0.279 c
-94.107 -0.073 94.141 0.096 94.21 0.235 c
-94.276 0.382 94.372 0.493 94.49 0.574 c
-94.615 0.661 94.758 0.724 94.916 0.765 c
-95.081 0.802 95.257 0.827 95.445 0.838 c
-96.165 0.852 l
-96.165 1.029 l
-96.165 1.147 96.154 1.249 96.136 1.338 c
-96.113 1.426 96.081 1.492 96.033 1.544 c
-95.992 1.602 95.945 1.639 95.886 1.661 c
-95.827 1.679 95.761 1.691 95.695 1.691 c
-95.625 1.691 95.562 1.679 95.504 1.661 c
-95.452 1.65 95.404 1.625 95.357 1.588 c
-95.317 1.558 95.283 1.507 95.254 1.44 c
-95.232 1.382 95.217 1.301 95.209 1.205 c
-94.269 1.249 l
-94.299 1.397 94.342 1.532 94.401 1.661 c
-94.467 1.786 94.563 1.897 94.681 1.985 c
-94.798 2.08 94.938 2.153 95.107 2.205 c
-95.283 2.253 95.489 2.278 95.724 2.278 c
-96.165 2.278 96.496 2.168 96.724 1.955 c
-96.959 1.75 97.077 1.44 97.077 1.029 c
-97.077 -0.235 l
-97.077 -0.455 l
-97.083 -0.515 97.098 -0.569 97.121 -0.617 c
-97.139 -0.658 97.168 -0.69 97.208 -0.72 c
-97.245 -0.742 97.297 -0.75 97.356 -0.75 c
-97.422 -0.75 97.492 -0.746 97.561 -0.735 c
-97.561 -1.22 l
-97.503 -1.23 97.447 -1.242 97.399 -1.249 c
-97.359 -1.261 97.319 -1.267 97.282 -1.278 c
-97.241 -1.286 97.198 -1.294 97.15 -1.294 c
-97.098 -1.301 97.04 -1.308 96.973 -1.308 c
-96.746 -1.308 96.58 -1.257 96.474 -1.147 c
-96.364 -1.029 96.301 -0.864 96.283 -0.646 c
-96.268 -0.646 l
-96.198 -0.757 96.129 -0.852 96.063 -0.941 c
-95.992 -1.022 95.915 -1.087 95.827 -1.147 c
-95.739 -1.205 95.639 -1.249 95.533 -1.278 c
-95.434 -1.308 95.317 -1.323 95.18 -1.323 c
-96.165 0.353 m
-95.739 0.339 l
-95.639 0.339 95.548 0.331 95.46 0.324 c
-95.379 0.312 95.313 0.287 95.254 0.25 c
-95.195 0.21 95.144 0.151 95.107 0.073 c
-95.066 0.004 95.048 -0.088 95.048 -0.206 c
-95.048 -0.374 95.081 -0.496 95.151 -0.573 c
-95.217 -0.654 95.317 -0.69 95.445 -0.69 c
-95.552 -0.69 95.651 -0.669 95.739 -0.617 c
-95.834 -0.569 95.915 -0.507 95.974 -0.426 c
-96.04 -0.349 96.092 -0.261 96.121 -0.162 c
-96.15 -0.055 96.165 0.059 96.165 0.177 c
-h
-99.153 2.22 m
-99.161 2.198 99.167 2.165 99.167 2.117 c
-99.175 2.076 99.182 2.028 99.182 1.97 c
-99.19 1.918 99.197 1.867 99.197 1.808 c
-99.197 1.646 l
-99.211 1.646 l
-99.271 1.764 99.336 1.86 99.417 1.941 c
-99.494 2.018 99.579 2.08 99.668 2.132 c
-99.755 2.19 99.843 2.227 99.932 2.249 c
-100.027 2.267 100.127 2.278 100.225 2.278 c
-100.431 2.278 100.611 2.234 100.769 2.146 c
-100.924 2.058 101.052 1.929 101.152 1.764 c
-101.258 1.606 101.335 1.415 101.387 1.191 c
-101.446 0.974 101.475 0.738 101.475 0.485 c
-101.475 0.221 101.446 -0.025 101.387 -0.249 c
-101.335 -0.467 101.258 -0.658 101.152 -0.823 c
-101.052 -0.981 100.921 -1.103 100.755 -1.19 c
-100.597 -1.278 100.41 -1.323 100.196 -1.323 c
-100.097 -1.323 99.998 -1.311 99.903 -1.294 c
-99.803 -1.271 99.711 -1.242 99.623 -1.19 c
-99.542 -1.143 99.465 -1.08 99.388 -0.999 c
-99.319 -0.922 99.259 -0.831 99.211 -0.72 c
-99.197 -0.72 l
-99.197 -0.808 l
-99.204 -0.849 99.211 -0.897 99.211 -0.955 c
-99.211 -1.117 l
-99.211 -1.294 l
-99.211 -2.631 l
-98.3 -2.631 l
-98.3 1.455 l
-98.3 1.621 98.293 1.768 98.286 1.897 c
-98.286 2.22 l
-h
-99.197 0.456 m
-99.197 0.228 99.215 0.037 99.256 -0.118 c
-99.303 -0.264 99.358 -0.382 99.417 -0.47 c
-99.483 -0.559 99.557 -0.625 99.637 -0.661 c
-99.715 -0.702 99.792 -0.72 99.873 -0.72 c
-99.969 -0.72 100.057 -0.698 100.138 -0.646 c
-100.225 -0.599 100.292 -0.529 100.343 -0.441 c
-100.402 -0.345 100.446 -0.22 100.476 -0.073 c
-100.512 0.081 100.534 0.268 100.534 0.485 c
-100.534 0.875 100.476 1.168 100.358 1.367 c
-100.248 1.562 100.094 1.661 99.888 1.661 c
-99.807 1.661 99.73 1.639 99.653 1.602 c
-99.572 1.562 99.498 1.5 99.432 1.411 c
-99.362 1.323 99.303 1.198 99.256 1.044 c
-99.215 0.886 99.197 0.691 99.197 0.456 c
-103.242 1.515 m
-103.36 1.786 103.511 1.985 103.699 2.103 c
-103.882 2.22 104.102 2.278 104.36 2.278 c
-104.566 2.278 104.734 2.242 104.875 2.176 c
-105.021 2.105 105.131 2.014 105.212 1.897 c
-105.301 1.779 105.359 1.635 105.389 1.47 c
-105.426 1.301 105.447 1.124 105.447 0.941 c
-105.447 -1.264 l
-104.536 -1.264 l
-104.536 0.735 l
-104.536 0.871 104.526 0.992 104.507 1.103 c
-104.495 1.209 104.47 1.297 104.433 1.367 c
-104.393 1.444 104.335 1.503 104.257 1.544 c
-104.187 1.58 104.096 1.602 103.978 1.602 c
-103.867 1.602 103.772 1.577 103.684 1.529 c
-103.595 1.477 103.514 1.411 103.448 1.323 c
-103.39 1.235 103.338 1.124 103.302 1 c
-103.272 0.882 103.257 0.75 103.257 0.603 c
-103.257 -1.264 l
-102.346 -1.264 l
-102.346 3.514 l
-103.257 3.514 l
-103.257 2.205 l
-103.257 2.135 103.25 2.065 103.242 1.999 c
-103.242 1.793 l
-103.242 1.735 103.236 1.679 103.228 1.632 c
-103.228 1.515 l
-h
-111.055 0.838 1.866 -0.794 re
-111.055 0.044 m
-115.119 0.838 1.867 -0.794 re
-115.119 0.044 m
-120.767 -1.264 m
-120.757 -1.246 120.746 -1.216 120.738 -1.176 c
-120.738 -1.128 120.731 -1.08 120.723 -1.029 c
-120.723 -0.97 120.717 -0.912 120.709 -0.852 c
-120.709 -0.69 l
-120.591 -0.926 120.448 -1.095 120.283 -1.19 c
-120.114 -1.278 119.915 -1.323 119.68 -1.323 c
-119.481 -1.323 119.306 -1.278 119.151 -1.19 c
-118.993 -1.103 118.861 -0.981 118.754 -0.823 c
-118.655 -0.658 118.577 -0.467 118.519 -0.249 c
-118.467 -0.037 118.446 0.206 118.446 0.47 c
-118.446 0.735 118.467 0.974 118.519 1.191 c
-118.577 1.415 118.655 1.606 118.754 1.764 c
-118.861 1.918 118.993 2.043 119.151 2.132 c
-119.316 2.227 119.507 2.278 119.724 2.278 c
-119.819 2.278 119.915 2.263 120.004 2.234 c
-120.099 2.213 120.195 2.18 120.283 2.132 c
-120.37 2.08 120.448 2.018 120.518 1.941 c
-120.595 1.86 120.657 1.768 120.709 1.661 c
-120.709 1.75 l
-120.709 1.897 l
-120.709 2.058 l
-120.709 2.234 l
-120.709 3.514 l
-121.606 3.514 l
-121.606 -0.5 l
-121.606 -0.676 121.609 -0.834 121.621 -0.97 c
-121.627 -1.099 121.635 -1.198 121.635 -1.264 c
-h
-120.723 0.485 m
-120.723 0.721 120.698 0.912 120.65 1.058 c
-120.609 1.213 120.555 1.338 120.488 1.426 c
-120.43 1.515 120.36 1.573 120.283 1.602 c
-120.202 1.639 120.125 1.661 120.048 1.661 c
-119.948 1.661 119.857 1.635 119.768 1.588 c
-119.687 1.548 119.622 1.477 119.562 1.382 c
-119.511 1.282 119.466 1.162 119.43 1.014 c
-119.401 0.867 119.386 0.684 119.386 0.47 c
-119.386 0.077 119.437 -0.216 119.547 -0.411 c
-119.665 -0.61 119.827 -0.706 120.033 -0.706 c
-120.11 -0.706 120.187 -0.687 120.268 -0.646 c
-120.345 -0.61 120.418 -0.544 120.488 -0.455 c
-120.555 -0.367 120.609 -0.246 120.65 -0.088 c
-120.698 0.066 120.723 0.258 120.723 0.485 c
-124.211 -1.323 m
-123.954 -1.323 123.726 -1.286 123.52 -1.22 c
-123.314 -1.143 123.138 -1.029 122.991 -0.881 c
-122.844 -0.727 122.726 -0.536 122.639 -0.309 c
-122.558 -0.085 122.521 0.181 122.521 0.485 c
-122.521 0.816 122.564 1.095 122.653 1.323 c
-122.749 1.558 122.877 1.742 123.035 1.882 c
-123.2 2.018 123.387 2.117 123.593 2.176 c
-123.799 2.242 124.009 2.278 124.226 2.278 c
-124.497 2.278 124.733 2.227 124.931 2.132 c
-125.137 2.043 125.303 1.911 125.431 1.735 c
-125.567 1.565 125.666 1.359 125.725 1.118 c
-125.791 0.882 125.828 0.617 125.828 0.324 c
-125.828 0.309 l
-123.462 0.309 l
-123.462 0.162 123.476 0.023 123.505 -0.103 c
-123.543 -0.231 123.597 -0.345 123.667 -0.441 c
-123.734 -0.529 123.817 -0.599 123.917 -0.646 c
-124.013 -0.698 124.127 -0.72 124.255 -0.72 c
-124.409 -0.72 124.549 -0.687 124.667 -0.617 c
-124.792 -0.551 124.879 -0.448 124.931 -0.309 c
-125.769 -0.382 l
-125.739 -0.482 125.685 -0.588 125.608 -0.706 c
-125.527 -0.816 125.424 -0.918 125.299 -1.014 c
-125.181 -1.103 125.027 -1.176 124.843 -1.234 c
-124.667 -1.294 124.453 -1.323 124.211 -1.323 c
-124.211 1.706 m
-124.123 1.706 124.035 1.691 123.946 1.661 c
-123.858 1.632 123.778 1.58 123.711 1.515 c
-123.641 1.444 123.582 1.357 123.535 1.249 c
-123.495 1.139 123.476 1.014 123.476 0.867 c
-124.946 0.867 l
-124.946 1.004 124.92 1.124 124.873 1.235 c
-124.832 1.341 124.777 1.43 124.711 1.5 c
-124.652 1.565 124.578 1.617 124.49 1.646 c
-124.402 1.683 124.306 1.706 124.211 1.706 c
-128.272 -1.323 m
-127.985 -1.323 127.742 -1.282 127.537 -1.205 c
-127.331 -1.117 127.158 -0.995 127.022 -0.837 c
-126.882 -0.683 126.78 -0.496 126.714 -0.279 c
-126.643 -0.055 126.61 0.191 126.61 0.456 c
-126.61 0.75 126.643 1.007 126.714 1.235 c
-126.791 1.459 126.897 1.646 127.036 1.793 c
-127.184 1.947 127.36 2.065 127.566 2.146 c
-127.772 2.234 128.007 2.278 128.272 2.278 c
-128.496 2.278 128.698 2.249 128.874 2.19 c
-129.051 2.132 129.201 2.047 129.33 1.941 c
-129.455 1.841 129.558 1.72 129.639 1.573 c
-129.716 1.434 129.771 1.282 129.8 1.118 c
-128.889 1.073 l
-128.86 1.249 128.79 1.389 128.683 1.5 c
-128.584 1.606 128.441 1.661 128.257 1.661 c
-128.011 1.661 127.834 1.558 127.728 1.353 c
-127.618 1.154 127.566 0.867 127.566 0.485 c
-127.566 -0.309 127.801 -0.706 128.272 -0.706 c
-128.437 -0.706 128.58 -0.654 128.698 -0.544 c
-128.815 -0.437 128.889 -0.276 128.918 -0.058 c
-129.83 -0.103 l
-129.8 -0.272 129.745 -0.426 129.668 -0.573 c
-129.598 -0.72 129.496 -0.852 129.359 -0.97 c
-129.23 -1.08 129.072 -1.168 128.889 -1.234 c
-128.713 -1.294 128.507 -1.323 128.272 -1.323 c
-133.978 0.485 m
-133.978 0.21 133.942 -0.04 133.876 -0.264 c
-133.806 -0.482 133.703 -0.669 133.567 -0.823 c
-133.427 -0.981 133.251 -1.103 133.037 -1.19 c
-132.821 -1.278 132.567 -1.323 132.274 -1.323 c
-131.998 -1.323 131.751 -1.278 131.539 -1.19 c
-131.333 -1.103 131.16 -0.981 131.024 -0.823 c
-130.884 -0.669 130.782 -0.482 130.715 -0.264 c
-130.645 -0.04 130.612 0.21 130.612 0.485 c
-130.612 0.738 130.641 0.974 130.701 1.191 c
-130.767 1.415 130.87 1.606 131.009 1.764 c
-131.146 1.929 131.322 2.058 131.539 2.146 c
-131.751 2.234 132.009 2.278 132.303 2.278 c
-132.615 2.278 132.876 2.234 133.082 2.146 c
-133.295 2.058 133.467 1.929 133.596 1.764 c
-133.733 1.606 133.831 1.415 133.891 1.191 c
-133.949 0.974 133.978 0.738 133.978 0.485 c
-133.023 0.485 m
-133.023 0.691 133.008 0.867 132.979 1.014 c
-132.957 1.162 132.92 1.282 132.862 1.382 c
-132.802 1.477 132.729 1.548 132.64 1.588 c
-132.553 1.635 132.442 1.661 132.318 1.661 c
-132.053 1.661 131.862 1.562 131.744 1.367 c
-131.626 1.18 131.568 0.886 131.568 0.485 c
-131.568 0.063 131.626 -0.243 131.744 -0.426 c
-131.862 -0.613 132.038 -0.706 132.274 -0.706 c
-132.399 -0.706 132.513 -0.687 132.611 -0.646 c
-132.707 -0.599 132.788 -0.525 132.847 -0.426 c
-132.912 -0.33 132.957 -0.206 132.979 -0.058 c
-133.008 0.088 133.023 0.268 133.023 0.485 c
-137.851 1.47 m
-137.752 1.477 137.65 1.488 137.543 1.5 c
-137.433 1.517 137.311 1.529 137.176 1.529 c
-136.999 1.529 136.841 1.488 136.705 1.411 c
-136.565 1.341 136.448 1.242 136.353 1.118 c
-136.264 0.989 136.195 0.842 136.147 0.676 c
-136.106 0.507 136.087 0.331 136.087 0.147 c
-136.087 -1.264 l
-135.191 -1.264 l
-135.191 0.985 l
-135.191 1.11 135.18 1.235 135.162 1.353 c
-135.15 1.477 135.136 1.595 135.117 1.706 c
-135.106 1.823 135.092 1.918 135.073 1.999 c
-135.052 2.087 135.033 2.161 135.015 2.22 c
-135.896 2.22 l
-135.904 2.168 135.915 2.117 135.926 2.058 c
-135.944 1.999 135.959 1.933 135.97 1.867 c
-135.989 1.808 136.004 1.742 136.014 1.675 c
-136.021 1.606 136.033 1.544 136.044 1.484 c
-136.058 1.484 l
-136.095 1.602 136.147 1.709 136.205 1.808 c
-136.272 1.904 136.353 1.988 136.44 2.058 c
-136.529 2.124 136.632 2.18 136.75 2.22 c
-136.874 2.257 137.022 2.278 137.19 2.278 c
-137.315 2.278 137.433 2.271 137.543 2.263 c
-137.66 2.253 137.764 2.238 137.851 2.22 c
-h
-139.854 -1.323 m
-139.686 -1.323 139.535 -1.301 139.399 -1.264 c
-139.27 -1.216 139.156 -1.147 139.061 -1.058 c
-138.973 -0.97 138.903 -0.864 138.855 -0.735 c
-138.803 -0.599 138.782 -0.448 138.782 -0.279 c
-138.782 -0.073 138.815 0.096 138.884 0.235 c
-138.95 0.382 139.046 0.493 139.164 0.574 c
-139.289 0.661 139.432 0.724 139.59 0.765 c
-139.755 0.802 139.931 0.827 140.119 0.838 c
-140.839 0.852 l
-140.839 1.029 l
-140.839 1.147 140.828 1.249 140.81 1.338 c
-140.788 1.426 140.754 1.492 140.707 1.544 c
-140.667 1.602 140.619 1.639 140.56 1.661 c
-140.501 1.679 140.435 1.691 140.369 1.691 c
-140.299 1.691 140.237 1.679 140.178 1.661 c
-140.126 1.65 140.079 1.625 140.031 1.588 c
-139.99 1.558 139.958 1.507 139.927 1.44 c
-139.906 1.382 139.891 1.301 139.884 1.205 c
-138.943 1.249 l
-138.973 1.397 139.017 1.532 139.075 1.661 c
-139.142 1.786 139.237 1.897 139.355 1.985 c
-139.472 2.08 139.612 2.153 139.781 2.205 c
-139.958 2.253 140.163 2.278 140.398 2.278 c
-140.839 2.278 141.17 2.168 141.398 1.955 c
-141.633 1.75 141.751 1.44 141.751 1.029 c
-141.751 -0.235 l
-141.751 -0.455 l
-141.758 -0.515 141.772 -0.569 141.795 -0.617 c
-141.813 -0.658 141.843 -0.69 141.883 -0.72 c
-141.92 -0.742 141.971 -0.75 142.03 -0.75 c
-142.096 -0.75 142.165 -0.746 142.236 -0.735 c
-142.236 -1.22 l
-142.177 -1.23 142.122 -1.242 142.074 -1.249 c
-142.034 -1.261 141.993 -1.267 141.957 -1.278 c
-141.916 -1.286 141.872 -1.294 141.824 -1.294 c
-141.772 -1.301 141.714 -1.308 141.648 -1.308 c
-141.419 -1.308 141.255 -1.257 141.148 -1.147 c
-141.038 -1.029 140.975 -0.864 140.957 -0.646 c
-140.943 -0.646 l
-140.872 -0.757 140.802 -0.852 140.736 -0.941 c
-140.667 -1.022 140.59 -1.087 140.501 -1.147 c
-140.413 -1.205 140.314 -1.249 140.207 -1.278 c
-140.108 -1.308 139.99 -1.323 139.854 -1.323 c
-140.839 0.353 m
-140.413 0.339 l
-140.314 0.339 140.222 0.331 140.133 0.324 c
-140.053 0.312 139.987 0.287 139.927 0.25 c
-139.869 0.21 139.817 0.151 139.781 0.073 c
-139.74 0.004 139.722 -0.088 139.722 -0.206 c
-139.722 -0.374 139.755 -0.496 139.825 -0.573 c
-139.891 -0.654 139.99 -0.69 140.119 -0.69 c
-140.226 -0.69 140.324 -0.669 140.413 -0.617 c
-140.509 -0.569 140.59 -0.507 140.648 -0.426 c
-140.714 -0.349 140.766 -0.261 140.795 -0.162 c
-140.825 -0.055 140.839 0.059 140.839 0.177 c
-h
-143.562 1.602 m
-143.019 1.602 l
-143.019 2.22 l
-143.607 2.22 l
-143.885 3.117 l
-144.459 3.117 l
-144.459 2.22 l
-145.693 2.22 l
-145.693 1.602 l
-144.459 1.602 l
-144.459 -0.103 l
-144.459 -0.324 l
-144.467 -0.393 144.488 -0.455 144.517 -0.515 c
-144.554 -0.565 144.61 -0.61 144.679 -0.646 c
-144.756 -0.676 144.87 -0.69 145.018 -0.69 c
-145.153 -0.69 145.29 -0.687 145.429 -0.676 c
-145.565 -0.658 145.697 -0.632 145.826 -0.602 c
-145.826 -1.205 l
-145.745 -1.216 145.668 -1.23 145.591 -1.249 c
-145.51 -1.261 145.433 -1.267 145.356 -1.278 c
-145.275 -1.286 145.186 -1.294 145.091 -1.294 c
-145.003 -1.301 144.904 -1.308 144.797 -1.308 c
-144.61 -1.308 144.448 -1.294 144.312 -1.264 c
-144.183 -1.228 144.07 -1.183 143.974 -1.132 c
-143.885 -1.084 143.812 -1.025 143.753 -0.955 c
-143.694 -0.878 143.65 -0.801 143.621 -0.72 c
-143.592 -0.632 143.57 -0.544 143.562 -0.455 c
-143.551 -0.36 143.547 -0.264 143.547 -0.176 c
-h
-148.578 -1.323 m
-148.321 -1.323 148.093 -1.286 147.887 -1.22 c
-147.682 -1.143 147.505 -1.029 147.358 -0.881 c
-147.212 -0.727 147.094 -0.536 147.006 -0.309 c
-146.925 -0.085 146.888 0.181 146.888 0.485 c
-146.888 0.816 146.932 1.095 147.021 1.323 c
-147.116 1.558 147.245 1.742 147.403 1.882 c
-147.568 2.018 147.755 2.117 147.961 2.176 c
-148.166 2.242 148.376 2.278 148.593 2.278 c
-148.864 2.278 149.1 2.227 149.298 2.132 c
-149.504 2.043 149.67 1.911 149.799 1.735 c
-149.934 1.565 150.034 1.359 150.092 1.118 c
-150.158 0.882 150.196 0.617 150.196 0.324 c
-150.196 0.309 l
-147.829 0.309 l
-147.829 0.162 147.844 0.023 147.873 -0.103 c
-147.91 -0.231 147.964 -0.345 148.035 -0.441 c
-148.101 -0.529 148.185 -0.599 148.284 -0.646 c
-148.38 -0.698 148.494 -0.72 148.623 -0.72 c
-148.777 -0.72 148.916 -0.687 149.034 -0.617 c
-149.159 -0.551 149.247 -0.448 149.298 -0.309 c
-150.136 -0.382 l
-150.107 -0.482 150.052 -0.588 149.975 -0.706 c
-149.894 -0.816 149.791 -0.918 149.666 -1.014 c
-149.548 -1.103 149.394 -1.176 149.211 -1.234 c
-149.034 -1.294 148.821 -1.323 148.578 -1.323 c
-148.578 1.706 m
-148.49 1.706 148.402 1.691 148.314 1.661 c
-148.226 1.632 148.145 1.58 148.079 1.515 c
-148.008 1.444 147.95 1.357 147.902 1.249 c
-147.862 1.139 147.844 1.014 147.844 0.867 c
-149.313 0.867 l
-149.313 1.004 149.288 1.124 149.24 1.235 c
-149.199 1.341 149.144 1.43 149.078 1.5 c
-149.02 1.565 148.945 1.617 148.858 1.646 c
-148.769 1.683 148.673 1.706 148.578 1.706 c
-f
-Q
-q 1 0 0 1 51.1272 419.6667 cm
-0 0 m
--1.808 0 l
--2.219 -1.397 l
--2.91 -1.397 l
--1.19 3.954 l
--0.617 3.954 l
-1.118 -1.397 l
-0.426 -1.397 l
-h
--1.631 0.588 m
--0.176 0.588 l
--0.897 3.013 l
-h
-2.367 2.587 m
-2.381 2.146 l
-2.635 2.487 2.959 2.66 3.352 2.66 c
-4.057 2.66 4.414 2.19 4.424 1.249 c
-4.424 -1.397 l
-3.778 -1.397 l
-3.778 1.22 l
-3.778 1.532 3.723 1.753 3.616 1.882 c
-3.506 2.006 3.352 2.072 3.146 2.072 c
-2.988 2.072 2.841 2.017 2.705 1.911 c
-2.577 1.801 2.473 1.664 2.396 1.499 c
-2.396 -1.397 l
-1.75 -1.397 l
-1.75 2.587 l
-h
-6.982 0.779 m
-6.982 1.356 7.119 1.811 7.394 2.146 c
-7.676 2.487 8.048 2.66 8.511 2.66 c
-8.97 2.66 9.338 2.491 9.613 2.161 c
-9.897 1.837 10.043 1.389 10.055 0.823 c
-10.055 0.397 l
-10.055 -0.173 9.911 -0.628 9.628 -0.971 c
-9.353 -1.305 8.985 -1.47 8.526 -1.47 c
-8.063 -1.47 7.691 -1.309 7.408 -0.985 c
-7.133 -0.655 6.99 -0.214 6.982 0.338 c
-h
-7.629 0.397 m
-7.629 -0.008 7.707 -0.324 7.865 -0.559 c
-8.029 -0.794 8.25 -0.912 8.526 -0.912 c
-9.091 -0.912 9.386 -0.5 9.407 0.323 c
-9.407 0.779 l
-9.407 1.18 9.323 1.499 9.158 1.734 c
-9 1.976 8.783 2.102 8.511 2.102 c
-8.247 2.102 8.029 1.976 7.865 1.734 c
-7.707 1.499 7.629 1.18 7.629 0.779 c
-h
-11.965 -0.412 m
-12.715 2.587 l
-13.376 2.587 l
-12.2 -1.397 l
-11.715 -1.397 l
-10.525 2.587 l
-11.186 2.587 l
-h
-15.435 -1.47 m
-14.934 -1.47 14.552 -1.324 14.288 -1.029 c
-14.024 -0.736 13.891 -0.302 13.891 0.279 c
-13.891 0.75 l
-13.891 1.344 14.016 1.811 14.273 2.146 c
-14.537 2.487 14.898 2.66 15.36 2.66 c
-15.82 2.66 16.162 2.506 16.39 2.204 c
-16.625 1.911 16.746 1.448 16.757 0.823 c
-16.757 0.397 l
-14.537 0.397 l
-14.537 0.309 l
-14.537 -0.125 14.614 -0.437 14.772 -0.632 c
-14.938 -0.819 15.169 -0.912 15.464 -0.912 c
-15.659 -0.912 15.831 -0.879 15.978 -0.809 c
-16.125 -0.732 16.261 -0.614 16.39 -0.456 c
-16.727 -0.867 l
-16.441 -1.272 16.011 -1.47 15.435 -1.47 c
-15.36 2.102 m
-15.085 2.102 14.883 2.006 14.758 1.822 c
-14.629 1.635 14.556 1.344 14.537 0.955 c
-16.11 0.955 l
-16.11 1.043 l
-16.089 1.425 16.022 1.693 15.905 1.851 c
-15.787 2.017 15.603 2.102 15.36 2.102 c
-19.183 1.969 m
-19.094 1.988 18.995 1.999 18.888 1.999 c
-18.554 1.999 18.319 1.815 18.183 1.455 c
-18.183 -1.397 l
-17.536 -1.397 l
-17.536 2.587 l
-18.169 2.587 l
-18.183 2.175 l
-18.359 2.499 18.602 2.66 18.918 2.66 c
-19.025 2.66 19.113 2.638 19.183 2.601 c
-h
-21.035 -0.412 m
-21.785 2.587 l
-22.446 2.587 l
-21.27 -1.397 l
-20.785 -1.397 l
-19.594 2.587 l
-20.255 2.587 l
-h
-23.827 -1.397 -0.646 3.984 re
-23.871 3.63 m
-23.871 3.52 23.842 3.428 23.783 3.351 c
-23.725 3.281 23.629 3.248 23.504 3.248 c
-23.387 3.248 23.291 3.281 23.225 3.351 c
-23.166 3.428 23.137 3.52 23.137 3.63 c
-23.137 3.748 23.166 3.84 23.225 3.91 c
-23.291 3.987 23.387 4.027 23.504 4.027 c
-23.629 4.027 23.725 3.987 23.783 3.91 c
-23.842 3.829 23.871 3.737 23.871 3.63 c
-26.267 -1.47 m
-25.768 -1.47 25.386 -1.324 25.121 -1.029 c
-24.856 -0.736 24.724 -0.302 24.724 0.279 c
-24.724 0.75 l
-24.724 1.344 24.849 1.811 25.106 2.146 c
-25.371 2.487 25.731 2.66 26.194 2.66 c
-26.653 2.66 26.995 2.506 27.223 2.204 c
-27.458 1.911 27.58 1.448 27.59 0.823 c
-27.59 0.397 l
-25.371 0.397 l
-25.371 0.309 l
-25.371 -0.125 25.448 -0.437 25.606 -0.632 c
-25.772 -0.819 26.003 -0.912 26.296 -0.912 c
-26.491 -0.912 26.664 -0.879 26.811 -0.809 c
-26.959 -0.732 27.094 -0.614 27.223 -0.456 c
-27.561 -0.867 l
-27.274 -1.272 26.844 -1.47 26.267 -1.47 c
-26.194 2.102 m
-25.918 2.102 25.716 2.006 25.591 1.822 c
-25.463 1.635 25.39 1.344 25.371 0.955 c
-26.944 0.955 l
-26.944 1.043 l
-26.921 1.425 26.855 1.693 26.738 1.851 c
-26.62 2.017 26.437 2.102 26.194 2.102 c
-31.339 -0.25 m
-31.941 2.587 l
-32.588 2.587 l
-31.603 -1.397 l
-31.089 -1.397 l
-30.31 1.455 l
-29.56 -1.397 l
-29.031 -1.397 l
-28.075 2.587 l
-28.708 2.587 l
-29.325 -0.177 l
-30.059 2.587 l
-30.574 2.587 l
-h
-37.953 -0.25 m
-38.556 2.587 l
-39.202 2.587 l
-38.218 -1.397 l
-37.703 -1.397 l
-36.924 1.455 l
-36.174 -1.397 l
-35.646 -1.397 l
-34.69 2.587 l
-35.322 2.587 l
-35.939 -0.177 l
-36.675 2.587 l
-37.188 2.587 l
-h
-40.584 -1.397 -0.647 3.984 re
-40.629 3.63 m
-40.629 3.52 40.6 3.428 40.54 3.351 c
-40.481 3.281 40.386 3.248 40.261 3.248 c
-40.143 3.248 40.048 3.281 39.981 3.351 c
-39.923 3.428 39.894 3.52 39.894 3.63 c
-39.894 3.748 39.923 3.84 39.981 3.91 c
-40.048 3.987 40.143 4.027 40.261 4.027 c
-40.386 4.027 40.481 3.987 40.54 3.91 c
-40.6 3.829 40.629 3.737 40.629 3.63 c
-42.451 3.542 m
-42.451 2.587 l
-43.054 2.587 l
-43.054 2.057 l
-42.451 2.057 l
-42.451 -0.412 l
-42.451 -0.57 42.473 -0.688 42.524 -0.765 c
-42.584 -0.846 42.672 -0.882 42.79 -0.882 c
-42.877 -0.882 42.965 -0.867 43.054 -0.838 c
-43.054 -1.397 l
-42.907 -1.444 42.753 -1.47 42.598 -1.47 c
-42.341 -1.47 42.146 -1.378 42.011 -1.191 c
-41.87 -1.008 41.805 -0.746 41.805 -0.412 c
-41.805 2.057 l
-41.202 2.057 l
-41.202 2.587 l
-41.805 2.587 l
-41.805 3.542 l
-h
-44.465 2.175 m
-44.718 2.499 45.038 2.66 45.42 2.66 c
-46.125 2.66 46.482 2.19 46.493 1.249 c
-46.493 -1.397 l
-45.847 -1.397 l
-45.847 1.22 l
-45.847 1.532 45.791 1.753 45.685 1.882 c
-45.575 2.006 45.42 2.072 45.215 2.072 c
-45.057 2.072 44.91 2.017 44.774 1.911 c
-44.645 1.801 44.542 1.664 44.465 1.499 c
-44.465 -1.397 l
-43.818 -1.397 l
-43.818 4.247 l
-44.465 4.247 l
-h
-50.815 1.969 m
-50.727 1.988 50.628 1.999 50.521 1.999 c
-50.187 1.999 49.951 1.815 49.815 1.455 c
-49.815 -1.397 l
-49.169 -1.397 l
-49.169 2.587 l
-49.801 2.587 l
-49.815 2.175 l
-49.992 2.499 50.235 2.66 50.551 2.66 c
-50.657 2.66 50.745 2.638 50.815 2.601 c
-h
-52.814 -1.47 m
-52.315 -1.47 51.932 -1.324 51.667 -1.029 c
-51.403 -0.736 51.27 -0.302 51.27 0.279 c
-51.27 0.75 l
-51.27 1.344 51.395 1.811 51.653 2.146 c
-51.918 2.487 52.278 2.66 52.741 2.66 c
-53.2 2.66 53.541 2.506 53.77 2.204 c
-54.005 1.911 54.125 1.448 54.137 0.823 c
-54.137 0.397 l
-51.918 0.397 l
-51.918 0.309 l
-51.918 -0.125 51.995 -0.437 52.153 -0.632 c
-52.318 -0.819 52.55 -0.912 52.843 -0.912 c
-53.038 -0.912 53.211 -0.879 53.358 -0.809 c
-53.505 -0.732 53.641 -0.614 53.77 -0.456 c
-54.108 -0.867 l
-53.821 -1.272 53.391 -1.47 52.814 -1.47 c
-52.741 2.102 m
-52.465 2.102 52.263 2.006 52.138 1.822 c
-52.009 1.635 51.935 1.344 51.918 0.955 c
-53.49 0.955 l
-53.49 1.043 l
-53.468 1.425 53.402 1.693 53.284 1.851 c
-53.167 2.017 52.983 2.102 52.741 2.102 c
-55.21 -1.397 m
-55.21 2.057 l
-54.68 2.057 l
-54.68 2.587 l
-55.21 2.587 l
-55.21 3.042 l
-55.21 3.443 55.305 3.755 55.504 3.983 c
-55.71 4.207 55.989 4.321 56.342 4.321 c
-56.477 4.321 56.61 4.299 56.739 4.263 c
-56.709 3.719 l
-56.61 3.737 56.511 3.748 56.415 3.748 c
-56.041 3.748 55.856 3.484 55.856 2.954 c
-55.856 2.587 l
-56.533 2.587 l
-56.533 2.057 l
-55.856 2.057 l
-55.856 -1.397 l
-h
-58.634 -1.47 m
-58.135 -1.47 57.753 -1.324 57.489 -1.029 c
-57.223 -0.736 57.092 -0.302 57.092 0.279 c
-57.092 0.75 l
-57.092 1.344 57.217 1.811 57.474 2.146 c
-57.738 2.487 58.098 2.66 58.561 2.66 c
-59.021 2.66 59.363 2.506 59.59 2.204 c
-59.825 1.911 59.947 1.448 59.958 0.823 c
-59.958 0.397 l
-57.738 0.397 l
-57.738 0.309 l
-57.738 -0.125 57.815 -0.437 57.973 -0.632 c
-58.139 -0.819 58.37 -0.912 58.665 -0.912 c
-58.859 -0.912 59.031 -0.879 59.179 -0.809 c
-59.326 -0.732 59.461 -0.614 59.59 -0.456 c
-59.928 -0.867 l
-59.642 -1.272 59.212 -1.47 58.634 -1.47 c
-58.561 2.102 m
-58.285 2.102 58.083 2.006 57.959 1.822 c
-57.83 1.635 57.757 1.344 57.738 0.955 c
-59.311 0.955 l
-59.311 1.043 l
-59.289 1.425 59.222 1.693 59.105 1.851 c
-58.987 2.017 58.804 2.102 58.561 2.102 c
-62.383 1.969 m
-62.295 1.988 62.196 1.999 62.089 1.999 c
-61.755 1.999 61.52 1.815 61.383 1.455 c
-61.383 -1.397 l
-60.737 -1.397 l
-60.737 2.587 l
-61.369 2.587 l
-61.383 2.175 l
-61.56 2.499 61.803 2.66 62.118 2.66 c
-62.225 2.66 62.314 2.638 62.383 2.601 c
-h
-64.382 -1.47 m
-63.883 -1.47 63.5 -1.324 63.236 -1.029 c
-62.971 -0.736 62.839 -0.302 62.839 0.279 c
-62.839 0.75 l
-62.839 1.344 62.964 1.811 63.221 2.146 c
-63.486 2.487 63.845 2.66 64.309 2.66 c
-64.768 2.66 65.11 2.506 65.337 2.204 c
-65.572 1.911 65.694 1.448 65.705 0.823 c
-65.705 0.397 l
-63.486 0.397 l
-63.486 0.309 l
-63.486 -0.125 63.563 -0.437 63.721 -0.632 c
-63.886 -0.819 64.118 -0.912 64.411 -0.912 c
-64.606 -0.912 64.779 -0.879 64.926 -0.809 c
-65.073 -0.732 65.209 -0.614 65.337 -0.456 c
-65.676 -0.867 l
-65.389 -1.272 64.959 -1.47 64.382 -1.47 c
-64.309 2.102 m
-64.033 2.102 63.831 2.006 63.706 1.822 c
-63.577 1.635 63.504 1.344 63.486 0.955 c
-65.059 0.955 l
-65.059 1.043 l
-65.036 1.425 64.97 1.693 64.853 1.851 c
-64.735 2.017 64.551 2.102 64.309 2.102 c
-67.101 2.587 m
-67.116 2.146 l
-67.37 2.487 67.693 2.66 68.086 2.66 c
-68.792 2.66 69.148 2.19 69.159 1.249 c
-69.159 -1.397 l
-68.512 -1.397 l
-68.512 1.22 l
-68.512 1.532 68.458 1.753 68.351 1.882 c
-68.24 2.006 68.086 2.072 67.881 2.072 c
-67.723 2.072 67.575 2.017 67.44 1.911 c
-67.311 1.801 67.208 1.664 67.131 1.499 c
-67.131 -1.397 l
-66.484 -1.397 l
-66.484 2.587 l
-h
-71.511 -0.912 m
-71.724 -0.912 71.897 -0.849 72.026 -0.721 c
-72.161 -0.584 72.235 -0.393 72.246 -0.148 c
-72.863 -0.148 l
-72.841 -0.53 72.705 -0.849 72.452 -1.103 c
-72.194 -1.349 71.882 -1.47 71.511 -1.47 c
-71.018 -1.47 70.644 -1.32 70.38 -1.014 c
-70.122 -0.702 69.998 -0.235 69.998 0.382 c
-69.998 0.823 l
-69.998 1.418 70.122 1.874 70.38 2.19 c
-70.644 2.502 71.018 2.66 71.511 2.66 c
-71.912 2.66 72.231 2.528 72.466 2.263 c
-72.709 2.006 72.841 1.66 72.863 1.22 c
-72.246 1.22 l
-72.224 1.514 72.151 1.734 72.026 1.882 c
-71.908 2.028 71.735 2.102 71.511 2.102 c
-71.217 2.102 71 2.003 70.864 1.808 c
-70.725 1.62 70.651 1.311 70.644 0.882 c
-70.644 0.367 l
-70.644 -0.103 70.71 -0.437 70.85 -0.632 c
-70.997 -0.819 71.217 -0.912 71.511 -0.912 c
-75.039 -1.47 m
-74.539 -1.47 74.157 -1.324 73.892 -1.029 c
-73.628 -0.736 73.495 -0.302 73.495 0.279 c
-73.495 0.75 l
-73.495 1.344 73.62 1.811 73.877 2.146 c
-74.143 2.487 74.503 2.66 74.966 2.66 c
-75.425 2.66 75.766 2.506 75.994 2.204 c
-76.229 1.911 76.35 1.448 76.362 0.823 c
-76.362 0.397 l
-74.143 0.397 l
-74.143 0.309 l
-74.143 -0.125 74.22 -0.437 74.378 -0.632 c
-74.543 -0.819 74.775 -0.912 75.068 -0.912 c
-75.263 -0.912 75.436 -0.879 75.583 -0.809 c
-75.73 -0.732 75.866 -0.614 75.994 -0.456 c
-76.333 -0.867 l
-76.046 -1.272 75.616 -1.47 75.039 -1.47 c
-74.966 2.102 m
-74.69 2.102 74.488 2.006 74.363 1.822 c
-74.234 1.635 74.16 1.344 74.143 0.955 c
-75.715 0.955 l
-75.715 1.043 l
-75.693 1.425 75.627 1.693 75.509 1.851 c
-75.392 2.017 75.208 2.102 74.966 2.102 c
-79.081 -0.383 m
-79.081 -0.235 79.026 -0.114 78.92 -0.015 c
-78.809 0.081 78.603 0.199 78.302 0.338 c
-77.956 0.484 77.714 0.606 77.567 0.706 c
-77.42 0.812 77.31 0.929 77.244 1.058 c
-77.174 1.182 77.141 1.341 77.141 1.529 c
-77.141 1.851 77.258 2.12 77.493 2.337 c
-77.729 2.55 78.031 2.66 78.405 2.66 c
-78.787 2.66 79.095 2.547 79.331 2.322 c
-79.566 2.094 79.683 1.808 79.683 1.455 c
-79.037 1.455 l
-79.037 1.631 78.978 1.782 78.86 1.911 c
-78.743 2.036 78.588 2.102 78.405 2.102 c
-78.206 2.102 78.056 2.046 77.95 1.94 c
-77.839 1.841 77.788 1.708 77.788 1.543 c
-77.788 1.415 77.825 1.308 77.905 1.22 c
-77.983 1.139 78.174 1.036 78.478 0.911 c
-78.956 0.723 79.286 0.536 79.463 0.353 c
-79.64 0.176 79.728 -0.052 79.728 -0.324 c
-79.728 -0.676 79.603 -0.956 79.361 -1.162 c
-79.126 -1.367 78.809 -1.47 78.42 -1.47 c
-77.997 -1.47 77.659 -1.353 77.405 -1.118 c
-77.148 -0.875 77.023 -0.57 77.023 -0.206 c
-77.67 -0.206 l
-77.678 -0.434 77.747 -0.611 77.875 -0.736 c
-78 -0.853 78.185 -0.912 78.42 -0.912 c
-78.633 -0.912 78.794 -0.864 78.905 -0.765 c
-79.022 -0.669 79.081 -0.541 79.081 -0.383 c
-82.991 -1.397 -0.647 5.644 re
-86.048 -1.397 m
-86.008 -1.309 85.983 -1.162 85.975 -0.956 c
-85.74 -1.301 85.445 -1.47 85.093 -1.47 c
-84.73 -1.47 84.446 -1.374 84.24 -1.176 c
-84.042 -0.971 83.947 -0.684 83.947 -0.309 c
-83.947 0.091 84.082 0.411 84.358 0.646 c
-84.63 0.889 85.005 1.014 85.476 1.014 c
-85.96 1.014 l
-85.96 1.44 l
-85.96 1.675 85.906 1.841 85.798 1.94 c
-85.688 2.046 85.526 2.102 85.314 2.102 c
-85.115 2.102 84.953 2.043 84.828 1.926 c
-84.711 1.808 84.652 1.66 84.652 1.484 c
-84.005 1.484 l
-84.005 1.679 84.064 1.87 84.182 2.057 c
-84.306 2.241 84.468 2.389 84.667 2.499 c
-84.873 2.605 85.1 2.66 85.358 2.66 c
-85.758 2.66 86.064 2.557 86.269 2.352 c
-86.482 2.146 86.596 1.851 86.607 1.469 c
-86.607 -0.544 l
-86.607 -0.849 86.644 -1.114 86.725 -1.338 c
-86.725 -1.397 l
-h
-85.181 -0.882 m
-85.347 -0.882 85.497 -0.838 85.636 -0.75 c
-85.784 -0.661 85.89 -0.551 85.96 -0.412 c
-85.96 0.529 l
-85.593 0.529 l
-85.277 0.529 85.034 0.459 84.858 0.323 c
-84.682 0.195 84.593 0.007 84.593 -0.235 c
-84.593 -0.464 84.637 -0.628 84.726 -0.736 c
-84.814 -0.834 84.965 -0.882 85.181 -0.882 c
-90.488 0.397 m
-90.488 -0.221 90.374 -0.688 90.149 -1 c
-89.933 -1.316 89.609 -1.47 89.179 -1.47 c
-88.757 -1.47 88.445 -1.29 88.239 -0.927 c
-88.209 -1.397 l
-87.606 -1.397 l
-87.606 4.247 l
-88.254 4.247 l
-88.254 2.146 l
-88.466 2.487 88.775 2.66 89.179 2.66 c
-89.609 2.66 89.933 2.502 90.149 2.19 c
-90.374 1.885 90.488 1.418 90.488 0.793 c
-h
-89.841 0.779 m
-89.841 1.249 89.771 1.579 89.635 1.778 c
-89.507 1.973 89.297 2.072 89.003 2.072 c
-88.668 2.072 88.419 1.888 88.254 1.529 c
-88.254 -0.353 l
-88.419 -0.717 88.672 -0.897 89.017 -0.897 c
-89.312 -0.897 89.521 -0.794 89.65 -0.588 c
-89.775 -0.383 89.841 -0.067 89.841 0.367 c
-h
-92.751 -1.47 m
-92.252 -1.47 91.87 -1.324 91.605 -1.029 c
-91.34 -0.736 91.208 -0.302 91.208 0.279 c
-91.208 0.75 l
-91.208 1.344 91.333 1.811 91.59 2.146 c
-91.855 2.487 92.215 2.66 92.678 2.66 c
-93.137 2.66 93.478 2.506 93.707 2.204 c
-93.942 1.911 94.064 1.448 94.074 0.823 c
-94.074 0.397 l
-91.855 0.397 l
-91.855 0.309 l
-91.855 -0.125 91.932 -0.437 92.09 -0.632 c
-92.256 -0.819 92.487 -0.912 92.78 -0.912 c
-92.975 -0.912 93.148 -0.879 93.295 -0.809 c
-93.442 -0.732 93.578 -0.614 93.707 -0.456 c
-94.045 -0.867 l
-93.758 -1.272 93.328 -1.47 92.751 -1.47 c
-92.678 2.102 m
-92.402 2.102 92.2 2.006 92.075 1.822 c
-91.947 1.635 91.873 1.344 91.855 0.955 c
-93.428 0.955 l
-93.428 1.043 l
-93.405 1.425 93.339 1.693 93.222 1.851 c
-93.104 2.017 92.921 2.102 92.678 2.102 c
-95.558 -1.397 -0.646 5.644 re
-98.513 -0.383 m
-98.513 -0.235 98.458 -0.114 98.351 -0.015 c
-98.241 0.081 98.035 0.199 97.734 0.338 c
-97.389 0.484 97.146 0.606 97 0.706 c
-96.852 0.812 96.742 0.929 96.676 1.058 c
-96.606 1.182 96.573 1.341 96.573 1.529 c
-96.573 1.851 96.69 2.12 96.925 2.337 c
-97.161 2.55 97.462 2.66 97.837 2.66 c
-98.22 2.66 98.528 2.547 98.764 2.322 c
-98.999 2.094 99.116 1.808 99.116 1.455 c
-98.469 1.455 l
-98.469 1.631 98.411 1.782 98.293 1.911 c
-98.176 2.036 98.021 2.102 97.837 2.102 c
-97.638 2.102 97.488 2.046 97.382 1.94 c
-97.272 1.841 97.22 1.708 97.22 1.543 c
-97.22 1.415 97.256 1.308 97.337 1.22 c
-97.415 1.139 97.605 1.036 97.91 0.911 c
-98.388 0.723 98.719 0.536 98.895 0.353 c
-99.072 0.176 99.161 -0.052 99.161 -0.324 c
-99.161 -0.676 99.035 -0.956 98.793 -1.162 c
-98.558 -1.367 98.241 -1.47 97.852 -1.47 c
-97.43 -1.47 97.091 -1.353 96.838 -1.118 c
-96.58 -0.875 96.455 -0.57 96.455 -0.206 c
-97.102 -0.206 l
-97.11 -0.434 97.179 -0.611 97.308 -0.736 c
-97.433 -0.853 97.617 -0.912 97.852 -0.912 c
-98.065 -0.912 98.226 -0.864 98.336 -0.765 c
-98.455 -0.669 98.513 -0.541 98.513 -0.383 c
-103.761 -1.397 m
-103.72 -1.309 103.695 -1.162 103.687 -0.956 c
-103.452 -1.301 103.159 -1.47 102.805 -1.47 c
-102.442 -1.47 102.159 -1.374 101.953 -1.176 c
-101.754 -0.971 101.659 -0.684 101.659 -0.309 c
-101.659 0.091 101.795 0.411 102.07 0.646 c
-102.342 0.889 102.717 1.014 103.188 1.014 c
-103.672 1.014 l
-103.672 1.44 l
-103.672 1.675 103.618 1.841 103.51 1.94 c
-103.4 2.046 103.239 2.102 103.026 2.102 c
-102.828 2.102 102.666 2.043 102.541 1.926 c
-102.423 1.808 102.365 1.66 102.365 1.484 c
-101.717 1.484 l
-101.717 1.679 101.777 1.87 101.894 2.057 c
-102.019 2.241 102.18 2.389 102.379 2.499 c
-102.585 2.605 102.812 2.66 103.07 2.66 c
-103.471 2.66 103.776 2.557 103.981 2.352 c
-104.194 2.146 104.308 1.851 104.32 1.469 c
-104.32 -0.544 l
-104.32 -0.849 104.356 -1.114 104.437 -1.338 c
-104.437 -1.397 l
-h
-102.893 -0.882 m
-103.059 -0.882 103.209 -0.838 103.35 -0.75 c
-103.496 -0.661 103.603 -0.551 103.672 -0.412 c
-103.672 0.529 l
-103.305 0.529 l
-102.989 0.529 102.747 0.459 102.57 0.323 c
-102.394 0.195 102.305 0.007 102.305 -0.235 c
-102.305 -0.464 102.35 -0.628 102.438 -0.736 c
-102.526 -0.834 102.677 -0.882 102.893 -0.882 c
-105.937 2.587 m
-105.951 2.146 l
-106.205 2.487 106.528 2.66 106.922 2.66 c
-107.627 2.66 107.983 2.19 107.994 1.249 c
-107.994 -1.397 l
-107.348 -1.397 l
-107.348 1.22 l
-107.348 1.532 107.292 1.753 107.186 1.882 c
-107.076 2.006 106.922 2.072 106.716 2.072 c
-106.558 2.072 106.411 2.017 106.274 1.911 c
-106.146 1.801 106.043 1.664 105.966 1.499 c
-105.966 -1.397 l
-105.319 -1.397 l
-105.319 2.587 l
-h
-108.832 0.779 m
-108.832 1.385 108.942 1.851 109.17 2.175 c
-109.405 2.499 109.733 2.66 110.155 2.66 c
-110.537 2.66 110.835 2.502 111.051 2.19 c
-111.051 4.247 l
-111.699 4.247 l
-111.699 -1.397 l
-111.111 -1.397 l
-111.067 -0.971 l
-110.861 -1.305 110.556 -1.47 110.155 -1.47 c
-109.744 -1.47 109.42 -1.316 109.185 -1 c
-108.95 -0.676 108.832 -0.221 108.832 0.367 c
-h
-109.479 0.397 m
-109.479 -0.044 109.542 -0.375 109.67 -0.588 c
-109.806 -0.794 110.026 -0.897 110.331 -0.897 c
-110.654 -0.897 110.893 -0.736 111.051 -0.412 c
-111.051 1.602 l
-110.882 1.914 110.644 2.072 110.331 2.072 c
-110.026 2.072 109.806 1.969 109.67 1.764 c
-109.542 1.558 109.479 1.234 109.479 0.793 c
-h
-115.065 2.175 m
-115.318 2.499 115.638 2.66 116.02 2.66 c
-116.725 2.66 117.082 2.19 117.093 1.249 c
-117.093 -1.397 l
-116.446 -1.397 l
-116.446 1.22 l
-116.446 1.532 116.391 1.753 116.285 1.882 c
-116.174 2.006 116.02 2.072 115.814 2.072 c
-115.656 2.072 115.509 2.017 115.373 1.911 c
-115.244 1.801 115.142 1.664 115.065 1.499 c
-115.065 -1.397 l
-114.417 -1.397 l
-114.417 4.247 l
-115.065 4.247 l
-h
-118.754 -1.397 -0.647 3.984 re
-118.798 3.63 m
-118.798 3.52 118.768 3.428 118.71 3.351 c
-118.651 3.281 118.556 3.248 118.431 3.248 c
-118.313 3.248 118.217 3.281 118.151 3.351 c
-118.092 3.428 118.063 3.52 118.063 3.63 c
-118.063 3.748 118.092 3.84 118.151 3.91 c
-118.217 3.987 118.313 4.027 118.431 4.027 c
-118.556 4.027 118.651 3.987 118.71 3.91 c
-118.768 3.829 118.798 3.737 118.798 3.63 c
-121.708 -0.383 m
-121.708 -0.235 121.654 -0.114 121.546 -0.015 c
-121.436 0.081 121.23 0.199 120.929 0.338 c
-120.584 0.484 120.341 0.606 120.195 0.706 c
-120.048 0.812 119.937 0.929 119.871 1.058 c
-119.801 1.182 119.768 1.341 119.768 1.529 c
-119.768 1.851 119.886 2.12 120.121 2.337 c
-120.356 2.55 120.657 2.66 121.033 2.66 c
-121.415 2.66 121.723 2.547 121.958 2.322 c
-122.194 2.094 122.311 1.808 122.311 1.455 c
-121.664 1.455 l
-121.664 1.631 121.606 1.782 121.488 1.911 c
-121.37 2.036 121.216 2.102 121.033 2.102 c
-120.834 2.102 120.683 2.046 120.576 1.94 c
-120.466 1.841 120.415 1.708 120.415 1.543 c
-120.415 1.415 120.451 1.308 120.532 1.22 c
-120.609 1.139 120.8 1.036 121.106 0.911 c
-121.583 0.723 121.914 0.536 122.09 0.353 c
-122.267 0.176 122.355 -0.052 122.355 -0.324 c
-122.355 -0.676 122.23 -0.956 121.988 -1.162 c
-121.752 -1.367 121.436 -1.47 121.047 -1.47 c
-120.624 -1.47 120.287 -1.353 120.033 -1.118 c
-119.776 -0.875 119.651 -0.57 119.651 -0.206 c
-120.297 -0.206 l
-120.305 -0.434 120.374 -0.611 120.503 -0.736 c
-120.628 -0.853 120.812 -0.912 121.047 -0.912 c
-121.26 -0.912 121.422 -0.864 121.532 -0.765 c
-121.65 -0.669 121.708 -0.541 121.708 -0.383 c
-124.046 3.542 m
-124.046 2.587 l
-124.648 2.587 l
-124.648 2.057 l
-124.046 2.057 l
-124.046 -0.412 l
-124.046 -0.57 124.068 -0.688 124.119 -0.765 c
-124.178 -0.846 124.266 -0.882 124.384 -0.882 c
-124.472 -0.882 124.56 -0.867 124.648 -0.838 c
-124.648 -1.397 l
-124.501 -1.444 124.347 -1.47 124.193 -1.47 c
-123.935 -1.47 123.74 -1.378 123.605 -1.191 c
-123.465 -1.008 123.399 -0.746 123.399 -0.412 c
-123.399 2.057 l
-122.796 2.057 l
-122.796 2.587 l
-123.399 2.587 l
-123.399 3.542 l
-h
-125.207 0.779 m
-125.207 1.356 125.343 1.811 125.618 2.146 c
-125.901 2.487 126.273 2.66 126.735 2.66 c
-127.195 2.66 127.562 2.491 127.838 2.161 c
-128.121 1.837 128.268 1.389 128.279 0.823 c
-128.279 0.397 l
-128.279 -0.173 128.135 -0.628 127.853 -0.971 c
-127.577 -1.305 127.21 -1.47 126.751 -1.47 c
-126.287 -1.47 125.916 -1.309 125.633 -0.985 c
-125.357 -0.655 125.214 -0.214 125.207 0.338 c
-h
-125.853 0.397 m
-125.853 -0.008 125.931 -0.324 126.088 -0.559 c
-126.254 -0.794 126.475 -0.912 126.751 -0.912 c
-127.316 -0.912 127.61 -0.5 127.632 0.323 c
-127.632 0.779 l
-127.632 1.18 127.547 1.499 127.383 1.734 c
-127.225 1.976 127.007 2.102 126.735 2.102 c
-126.471 2.102 126.254 1.976 126.088 1.734 c
-125.931 1.499 125.853 1.18 125.853 0.779 c
-h
-130.763 1.969 m
-130.675 1.988 130.576 1.999 130.469 1.999 c
-130.134 1.999 129.899 1.815 129.764 1.455 c
-129.764 -1.397 l
-129.116 -1.397 l
-129.116 2.587 l
-129.749 2.587 l
-129.764 2.175 l
-129.94 2.499 130.182 2.66 130.498 2.66 c
-130.605 2.66 130.693 2.638 130.763 2.601 c
-h
-132.571 -0.309 m
-133.291 2.587 l
-133.982 2.587 l
-132.688 -1.955 l
-132.59 -2.297 132.446 -2.558 132.262 -2.735 c
-132.086 -2.911 131.884 -2.999 131.659 -2.999 c
-131.572 -2.999 131.458 -2.977 131.322 -2.94 c
-131.322 -2.396 l
-131.468 -2.411 l
-131.653 -2.411 131.799 -2.367 131.91 -2.278 c
-132.016 -2.19 132.104 -2.032 132.174 -1.808 c
-132.291 -1.367 l
-131.131 2.587 l
-131.836 2.587 l
-h
-136.201 0.779 m
-136.201 1.396 136.312 1.859 136.54 2.175 c
-136.764 2.499 137.099 2.66 137.539 2.66 c
-137.94 2.66 138.244 2.484 138.451 2.131 c
-138.495 2.587 l
-139.083 2.587 l
-139.083 -1.441 l
-139.083 -1.929 138.954 -2.308 138.701 -2.573 c
-138.443 -2.837 138.09 -2.97 137.642 -2.97 c
-137.444 -2.97 137.223 -2.918 136.981 -2.822 c
-136.735 -2.723 136.555 -2.602 136.436 -2.455 c
-136.702 -2.014 l
-136.966 -2.278 137.263 -2.411 137.598 -2.411 c
-138.134 -2.411 138.41 -2.117 138.421 -1.529 c
-138.421 -1 l
-138.215 -1.316 137.914 -1.47 137.525 -1.47 c
-137.113 -1.47 136.79 -1.32 136.555 -1.014 c
-136.326 -0.702 136.209 -0.25 136.201 0.338 c
-h
-136.863 0.397 m
-136.863 -0.044 136.926 -0.375 137.054 -0.588 c
-137.18 -0.794 137.396 -0.897 137.701 -0.897 c
-138.024 -0.897 138.263 -0.732 138.421 -0.397 c
-138.421 1.587 l
-138.252 1.911 138.013 2.072 137.701 2.072 c
-137.407 2.072 137.19 1.969 137.054 1.764 c
-136.926 1.558 136.863 1.234 136.863 0.793 c
-h
-141.685 1.969 m
-141.596 1.988 141.497 1.999 141.39 1.999 c
-141.056 1.999 140.821 1.815 140.685 1.455 c
-140.685 -1.397 l
-140.038 -1.397 l
-140.038 2.587 l
-140.67 2.587 l
-140.685 2.175 l
-140.862 2.499 141.103 2.66 141.419 2.66 c
-141.527 2.66 141.614 2.638 141.685 2.601 c
-h
-144.228 -1.397 m
-144.187 -1.309 144.161 -1.162 144.154 -0.956 c
-143.919 -1.301 143.625 -1.47 143.272 -1.47 c
-142.908 -1.47 142.626 -1.374 142.419 -1.176 c
-142.221 -0.971 142.125 -0.684 142.125 -0.309 c
-142.125 0.091 142.261 0.411 142.537 0.646 c
-142.809 0.889 143.183 1.014 143.654 1.014 c
-144.139 1.014 l
-144.139 1.44 l
-144.139 1.675 144.084 1.841 143.977 1.94 c
-143.867 2.046 143.705 2.102 143.492 2.102 c
-143.294 2.102 143.133 2.043 143.007 1.926 c
-142.89 1.808 142.831 1.66 142.831 1.484 c
-142.184 1.484 l
-142.184 1.679 142.243 1.87 142.36 2.057 c
-142.485 2.241 142.647 2.389 142.846 2.499 c
-143.052 2.605 143.279 2.66 143.536 2.66 c
-143.937 2.66 144.242 2.557 144.448 2.352 c
-144.661 2.146 144.775 1.851 144.786 1.469 c
-144.786 -0.544 l
-144.786 -0.849 144.823 -1.114 144.903 -1.338 c
-144.903 -1.397 l
-h
-143.36 -0.882 m
-143.526 -0.882 143.676 -0.838 143.816 -0.75 c
-143.962 -0.661 144.07 -0.551 144.139 -0.412 c
-144.139 0.529 l
-143.771 0.529 l
-143.455 0.529 143.213 0.459 143.037 0.323 c
-142.861 0.195 142.772 0.007 142.772 -0.235 c
-142.772 -0.464 142.816 -0.628 142.905 -0.736 c
-142.992 -0.834 143.143 -0.882 143.36 -0.882 c
-148.666 0.397 m
-148.666 -0.231 148.549 -0.702 148.314 -1.014 c
-148.086 -1.32 147.769 -1.47 147.358 -1.47 c
-146.954 -1.47 146.645 -1.32 146.433 -1.014 c
-146.433 -2.926 l
-145.785 -2.926 l
-145.785 2.587 l
-146.373 2.587 l
-146.418 2.146 l
-146.63 2.487 146.94 2.66 147.343 2.66 c
-147.785 2.66 148.112 2.506 148.328 2.204 c
-148.542 1.899 148.656 1.444 148.666 0.837 c
-h
-148.02 0.779 m
-148.02 1.22 147.95 1.543 147.814 1.749 c
-147.674 1.962 147.453 2.072 147.152 2.072 c
-146.836 2.072 146.597 1.918 146.433 1.616 c
-146.433 -0.456 l
-146.597 -0.761 146.836 -0.912 147.152 -0.912 c
-147.447 -0.912 147.659 -0.809 147.8 -0.603 c
-147.935 -0.389 148.008 -0.059 148.02 0.382 c
-h
-150.151 2.175 m
-150.404 2.499 150.724 2.66 151.106 2.66 c
-151.812 2.66 152.168 2.19 152.18 1.249 c
-152.18 -1.397 l
-151.532 -1.397 l
-151.532 1.22 l
-151.532 1.532 151.478 1.753 151.372 1.882 c
-151.261 2.006 151.106 2.072 150.901 2.072 c
-150.743 2.072 150.595 2.017 150.46 1.911 c
-150.331 1.801 150.229 1.664 150.151 1.499 c
-150.151 -1.397 l
-149.504 -1.397 l
-149.504 4.247 l
-150.151 4.247 l
-h
-153.179 -1.044 m
-153.179 -0.927 153.213 -0.831 153.282 -0.75 c
-153.348 -0.673 153.451 -0.632 153.591 -0.632 c
-153.738 -0.632 153.844 -0.673 153.914 -0.75 c
-153.992 -0.831 154.032 -0.927 154.032 -1.044 c
-154.032 -1.154 153.992 -1.246 153.914 -1.324 c
-153.844 -1.401 153.738 -1.441 153.591 -1.441 c
-153.451 -1.441 153.348 -1.401 153.282 -1.324 c
-153.213 -1.246 153.179 -1.154 153.179 -1.044 c
-160.411 0.808 m
-160.411 0.081 160.253 -0.482 159.941 -0.882 c
-159.636 -1.276 159.195 -1.47 158.618 -1.47 c
-158.067 -1.47 157.633 -1.279 157.31 -0.897 c
-156.993 -0.515 156.828 0.029 156.81 0.735 c
-156.81 1.734 l
-156.81 2.447 156.964 3.006 157.28 3.41 c
-157.603 3.821 158.048 4.027 158.618 4.027 c
-159.176 4.027 159.61 3.829 159.926 3.439 c
-160.238 3.057 160.4 2.502 160.411 1.778 c
-h
-159.735 1.749 m
-159.735 2.315 159.64 2.738 159.455 3.013 c
-159.279 3.285 159 3.424 158.618 3.424 c
-158.243 3.424 157.96 3.281 157.765 2.998 c
-157.578 2.723 157.486 2.311 157.486 1.764 c
-157.486 0.808 l
-157.486 0.257 157.578 -0.158 157.765 -0.441 c
-157.96 -0.728 158.243 -0.867 158.618 -0.867 c
-159 -0.867 159.279 -0.736 159.455 -0.47 c
-159.64 -0.206 159.735 0.199 159.735 0.75 c
-h
-161.984 2.587 m
-161.998 2.146 l
-162.252 2.487 162.576 2.66 162.969 2.66 c
-163.675 2.66 164.031 2.19 164.041 1.249 c
-164.041 -1.397 l
-163.395 -1.397 l
-163.395 1.22 l
-163.395 1.532 163.34 1.753 163.233 1.882 c
-163.123 2.006 162.969 2.072 162.763 2.072 c
-162.605 2.072 162.458 2.017 162.322 1.911 c
-162.193 1.801 162.09 1.664 162.013 1.499 c
-162.013 -1.397 l
-161.366 -1.397 l
-161.366 2.587 l
-h
-166.437 -1.47 m
-165.938 -1.47 165.556 -1.324 165.291 -1.029 c
-165.026 -0.736 164.894 -0.302 164.894 0.279 c
-164.894 0.75 l
-164.894 1.344 165.019 1.811 165.277 2.146 c
-165.541 2.487 165.901 2.66 166.364 2.66 c
-166.823 2.66 167.166 2.506 167.393 2.204 c
-167.628 1.911 167.75 1.448 167.76 0.823 c
-167.76 0.397 l
-165.541 0.397 l
-165.541 0.309 l
-165.541 -0.125 165.618 -0.437 165.776 -0.632 c
-165.942 -0.819 166.173 -0.912 166.467 -0.912 c
-166.661 -0.912 166.834 -0.879 166.981 -0.809 c
-167.129 -0.732 167.264 -0.614 167.393 -0.456 c
-167.731 -0.867 l
-167.444 -1.272 167.014 -1.47 166.437 -1.47 c
-166.364 2.102 m
-166.088 2.102 165.886 2.006 165.761 1.822 c
-165.633 1.635 165.56 1.344 165.541 0.955 c
-167.114 0.955 l
-167.114 1.043 l
-167.091 1.425 167.025 1.693 166.908 1.851 c
-166.79 2.017 166.607 2.102 166.364 2.102 c
-171.641 -0.912 m
-171.854 -0.912 172.027 -0.849 172.155 -0.721 c
-172.292 -0.584 172.365 -0.393 172.376 -0.148 c
-172.993 -0.148 l
-172.971 -0.53 172.835 -0.849 172.581 -1.103 c
-172.325 -1.349 172.012 -1.47 171.641 -1.47 c
-171.149 -1.47 170.773 -1.32 170.509 -1.014 c
-170.252 -0.702 170.127 -0.235 170.127 0.382 c
-170.127 0.823 l
-170.127 1.418 170.252 1.874 170.509 2.19 c
-170.773 2.502 171.149 2.66 171.641 2.66 c
-172.041 2.66 172.361 2.528 172.597 2.263 c
-172.839 2.006 172.971 1.66 172.993 1.22 c
-172.376 1.22 l
-172.354 1.514 172.28 1.734 172.155 1.882 c
-172.038 2.028 171.866 2.102 171.641 2.102 c
-171.347 2.102 171.13 2.003 170.994 1.808 c
-170.854 1.62 170.781 1.311 170.773 0.882 c
-170.773 0.367 l
-170.773 -0.103 170.84 -0.437 170.979 -0.632 c
-171.127 -0.819 171.347 -0.912 171.641 -0.912 c
-173.611 0.779 m
-173.611 1.356 173.747 1.811 174.023 2.146 c
-174.305 2.487 174.676 2.66 175.139 2.66 c
-175.598 2.66 175.966 2.491 176.242 2.161 c
-176.525 1.837 176.672 1.389 176.683 0.823 c
-176.683 0.397 l
-176.683 -0.173 176.539 -0.628 176.257 -0.971 c
-175.981 -1.305 175.613 -1.47 175.154 -1.47 c
-174.692 -1.47 174.32 -1.309 174.037 -0.985 c
-173.761 -0.655 173.618 -0.214 173.611 0.338 c
-h
-174.258 0.397 m
-174.258 -0.008 174.335 -0.324 174.493 -0.559 c
-174.658 -0.794 174.879 -0.912 175.154 -0.912 c
-175.72 -0.912 176.014 -0.5 176.036 0.323 c
-176.036 0.779 l
-176.036 1.18 175.951 1.499 175.787 1.734 c
-175.629 1.976 175.411 2.102 175.139 2.102 c
-174.875 2.102 174.658 1.976 174.493 1.734 c
-174.335 1.499 174.258 1.18 174.258 0.779 c
-h
-178.138 2.587 m
-178.153 2.219 l
-178.395 2.514 178.715 2.66 179.108 2.66 c
-179.55 2.66 179.858 2.462 180.034 2.072 c
-180.288 2.462 180.637 2.66 181.078 2.66 c
-181.813 2.66 182.187 2.198 182.21 1.278 c
-182.21 -1.397 l
-181.563 -1.397 l
-181.563 1.22 l
-181.563 1.514 181.508 1.727 181.401 1.866 c
-181.302 2.003 181.129 2.072 180.886 2.072 c
-180.689 2.072 180.527 1.992 180.402 1.837 c
-180.284 1.691 180.215 1.499 180.196 1.263 c
-180.196 -1.397 l
-179.534 -1.397 l
-179.534 1.249 l
-179.534 1.797 179.314 2.072 178.873 2.072 c
-178.538 2.072 178.303 1.911 178.168 1.587 c
-178.168 -1.397 l
-177.52 -1.397 l
-177.52 2.587 l
-h
-183.797 2.587 m
-183.812 2.219 l
-184.055 2.514 184.375 2.66 184.768 2.66 c
-185.208 2.66 185.517 2.462 185.693 2.072 c
-185.947 2.462 186.296 2.66 186.737 2.66 c
-187.471 2.66 187.847 2.198 187.868 1.278 c
-187.868 -1.397 l
-187.222 -1.397 l
-187.222 1.22 l
-187.222 1.514 187.167 1.727 187.06 1.866 c
-186.962 2.003 186.789 2.072 186.546 2.072 c
-186.347 2.072 186.186 1.992 186.06 1.837 c
-185.944 1.691 185.873 1.499 185.855 1.263 c
-185.855 -1.397 l
-185.194 -1.397 l
-185.194 1.249 l
-185.194 1.797 184.973 2.072 184.533 2.072 c
-184.198 2.072 183.963 1.911 183.827 1.587 c
-183.827 -1.397 l
-183.18 -1.397 l
-183.18 2.587 l
-h
-189.545 -1.397 -0.647 3.984 re
-189.588 3.63 m
-189.588 3.52 189.559 3.428 189.501 3.351 c
-189.441 3.281 189.346 3.248 189.221 3.248 c
-189.104 3.248 189.008 3.281 188.942 3.351 c
-188.883 3.428 188.853 3.52 188.853 3.63 c
-188.853 3.748 188.883 3.84 188.942 3.91 c
-189.008 3.987 189.104 4.027 189.221 4.027 c
-189.346 4.027 189.441 3.987 189.501 3.91 c
-189.559 3.829 189.588 3.737 189.588 3.63 c
-191.411 3.542 m
-191.411 2.587 l
-192.014 2.587 l
-192.014 2.057 l
-191.411 2.057 l
-191.411 -0.412 l
-191.411 -0.57 191.433 -0.688 191.485 -0.765 c
-191.544 -0.846 191.631 -0.882 191.749 -0.882 c
-191.837 -0.882 191.926 -0.867 192.014 -0.838 c
-192.014 -1.397 l
-191.867 -1.444 191.712 -1.47 191.558 -1.47 c
-191.301 -1.47 191.107 -1.378 190.97 -1.191 c
-190.831 -1.008 190.764 -0.746 190.764 -0.412 c
-190.764 2.057 l
-190.162 2.057 l
-190.162 2.587 l
-190.764 2.587 l
-190.764 3.542 l
-h
-197.379 0.397 m
-197.379 -0.231 197.262 -0.702 197.027 -1.014 c
-196.799 -1.32 196.483 -1.47 196.071 -1.47 c
-195.666 -1.47 195.358 -1.32 195.145 -1.014 c
-195.145 -2.926 l
-194.498 -2.926 l
-194.498 2.587 l
-195.086 2.587 l
-195.13 2.146 l
-195.344 2.487 195.652 2.66 196.057 2.66 c
-196.497 2.66 196.824 2.506 197.041 2.204 c
-197.254 1.899 197.368 1.444 197.379 0.837 c
-h
-196.732 0.779 m
-196.732 1.22 196.663 1.543 196.527 1.749 c
-196.387 1.962 196.167 2.072 195.865 2.072 c
-195.549 2.072 195.311 1.918 195.145 1.616 c
-195.145 -0.456 l
-195.311 -0.761 195.549 -0.912 195.865 -0.912 c
-196.159 -0.912 196.372 -0.809 196.512 -0.603 c
-196.647 -0.389 196.722 -0.059 196.732 0.382 c
-h
-199.643 -1.47 m
-199.143 -1.47 198.76 -1.324 198.496 -1.029 c
-198.232 -0.736 198.099 -0.302 198.099 0.279 c
-198.099 0.75 l
-198.099 1.344 198.224 1.811 198.482 2.146 c
-198.746 2.487 199.107 2.66 199.569 2.66 c
-200.028 2.66 200.37 2.506 200.599 2.204 c
-200.834 1.911 200.955 1.448 200.965 0.823 c
-200.965 0.397 l
-198.746 0.397 l
-198.746 0.309 l
-198.746 -0.125 198.823 -0.437 198.981 -0.632 c
-199.147 -0.819 199.378 -0.912 199.672 -0.912 c
-199.867 -0.912 200.04 -0.879 200.187 -0.809 c
-200.333 -0.732 200.47 -0.614 200.599 -0.456 c
-200.936 -0.867 l
-200.649 -1.272 200.219 -1.47 199.643 -1.47 c
-199.569 2.102 m
-199.294 2.102 199.092 2.006 198.966 1.822 c
-198.838 1.635 198.764 1.344 198.746 0.955 c
-200.319 0.955 l
-200.319 1.043 l
-200.297 1.425 200.231 1.693 200.113 1.851 c
-199.996 2.017 199.812 2.102 199.569 2.102 c
-203.391 1.969 m
-203.303 1.988 203.203 1.999 203.097 1.999 c
-202.762 1.999 202.527 1.815 202.392 1.455 c
-202.392 -1.397 l
-201.744 -1.397 l
-201.744 2.587 l
-202.377 2.587 l
-202.392 2.175 l
-202.568 2.499 202.81 2.66 203.126 2.66 c
-203.233 2.66 203.321 2.638 203.391 2.601 c
-h
-206.463 -1.397 -0.647 5.644 re
-208.183 -1.397 -0.646 3.984 re
-208.227 3.63 m
-208.227 3.52 208.198 3.428 208.139 3.351 c
-208.08 3.281 207.984 3.248 207.859 3.248 c
-207.742 3.248 207.647 3.281 207.581 3.351 c
-207.521 3.428 207.492 3.52 207.492 3.63 c
-207.492 3.748 207.521 3.84 207.581 3.91 c
-207.647 3.987 207.742 4.027 207.859 4.027 c
-207.984 4.027 208.08 3.987 208.139 3.91 c
-208.198 3.829 208.227 3.737 208.227 3.63 c
-209.814 2.587 m
-209.829 2.146 l
-210.083 2.487 210.406 2.66 210.799 2.66 c
-211.505 2.66 211.861 2.19 211.872 1.249 c
-211.872 -1.397 l
-211.225 -1.397 l
-211.225 1.22 l
-211.225 1.532 211.171 1.753 211.064 1.882 c
-210.953 2.006 210.799 2.072 210.594 2.072 c
-210.436 2.072 210.288 2.017 210.153 1.911 c
-210.024 1.801 209.921 1.664 209.844 1.499 c
-209.844 -1.397 l
-209.197 -1.397 l
-209.197 2.587 l
-h
-214.268 -1.47 m
-213.769 -1.47 213.386 -1.324 213.122 -1.029 c
-212.857 -0.736 212.725 -0.302 212.725 0.279 c
-212.725 0.75 l
-212.725 1.344 212.85 1.811 213.107 2.146 c
-213.372 2.487 213.732 2.66 214.195 2.66 c
-214.654 2.66 214.996 2.506 215.223 2.204 c
-215.459 1.911 215.58 1.448 215.591 0.823 c
-215.591 0.397 l
-213.372 0.397 l
-213.372 0.309 l
-213.372 -0.125 213.449 -0.437 213.607 -0.632 c
-213.773 -0.819 214.004 -0.912 214.298 -0.912 c
-214.492 -0.912 214.665 -0.879 214.812 -0.809 c
-214.959 -0.732 215.095 -0.614 215.223 -0.456 c
-215.562 -0.867 l
-215.275 -1.272 214.845 -1.47 214.268 -1.47 c
-214.195 2.102 m
-213.919 2.102 213.717 2.006 213.592 1.822 c
-213.463 1.635 213.39 1.344 213.372 0.955 c
-214.945 0.955 l
-214.945 1.043 l
-214.922 1.425 214.856 1.693 214.739 1.851 c
-214.621 2.017 214.438 2.102 214.195 2.102 c
-216.414 -1.044 m
-216.414 -0.927 216.447 -0.831 216.518 -0.75 c
-216.584 -0.673 216.686 -0.632 216.826 -0.632 c
-216.973 -0.632 217.079 -0.673 217.149 -0.75 c
-217.226 -0.831 217.267 -0.927 217.267 -1.044 c
-217.267 -1.154 217.226 -1.246 217.149 -1.324 c
-217.079 -1.401 216.973 -1.441 216.826 -1.441 c
-216.686 -1.441 216.584 -1.401 216.518 -1.324 c
-216.447 -1.246 216.414 -1.154 216.414 -1.044 c
-f
-Q
-0.113 0.082 0.09 0 k
-35.668 411.16 238.665 -12.898 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 40.8563 404.3204 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.646 -0.243 -0.775 -0.367 -0.882 c
--0.496 -0.993 -0.658 -1.08 -0.852 -1.147 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.161 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.926 c
--3.127 -0.819 -3.23 -0.691 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.213 -3.484 -0.014 c
--2.66 0.133 l
--2.642 0.033 -2.616 -0.058 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.367 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.684 -1.992 0.691 -1.999 0.691 c
--2.167 0.728 -2.329 0.771 -2.484 0.823 c
--2.642 0.882 -2.786 0.96 -2.91 1.058 c
--3.039 1.154 -3.142 1.279 -3.219 1.426 c
--3.289 1.573 -3.322 1.756 -3.322 1.985 c
--3.322 2.18 -3.289 2.344 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.837 c
--2.8 2.932 -2.645 3.003 -2.469 3.043 c
--2.293 3.09 -2.102 3.12 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.12 -1.128 3.09 -0.97 3.043 c
--0.804 2.992 -0.669 2.918 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.202 2.344 -0.143 2.182 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.253 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.353 c
--1.294 1.312 -1.117 1.264 -0.941 1.205 c
--0.756 1.147 -0.595 1.066 -0.455 0.97 c
--0.32 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.455 c
--2.26 2.425 -2.319 2.385 -2.366 2.338 c
--2.406 2.297 -2.437 2.249 -2.454 2.19 c
--2.477 2.132 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.779 c
--2.41 1.72 -2.373 1.669 -2.322 1.632 c
--2.263 1.592 -2.201 1.558 -2.131 1.529 c
--2.065 1.5 -1.984 1.47 -1.896 1.44 c
-h
--0.837 -0.014 m
--0.837 0.092 -0.86 0.177 -0.897 0.235 c
--0.926 0.301 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.53 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.529 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.014 c
-6.402 -2.66 m
-6.185 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.396 c
-5.284 -2.315 5.185 -2.219 5.108 -2.102 c
-5.039 -1.984 4.991 -1.855 4.961 -1.72 c
-5.858 -1.617 l
-5.895 -1.753 5.964 -1.859 6.064 -1.94 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.057 6.681 -2.028 c
-6.758 -1.999 6.828 -1.944 6.887 -1.866 c
-6.945 -1.797 6.99 -1.705 7.019 -1.587 c
-7.056 -1.469 7.078 -1.323 7.078 -1.147 c
-7.078 -0.955 l
-7.078 -0.889 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.072 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.215 -0.897 5.108 -0.75 c
-5.009 -0.596 4.935 -0.411 4.888 -0.206 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.771 4.836 1.018 4.888 1.235 c
-4.946 1.448 5.027 1.632 5.137 1.779 c
-5.245 1.933 5.376 2.051 5.534 2.132 c
-5.689 2.22 5.876 2.263 6.093 2.263 c
-6.188 2.263 6.288 2.253 6.387 2.234 c
-6.483 2.213 6.571 2.18 6.652 2.132 c
-6.739 2.08 6.817 2.018 6.887 1.941 c
-6.964 1.86 7.026 1.768 7.078 1.661 c
-7.092 1.661 l
-7.092 1.808 l
-7.1 1.867 7.107 1.918 7.107 1.97 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.152 2.22 c
-8.004 2.22 l
-7.993 2.139 7.982 2.028 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.161 l
-7.975 -1.415 7.938 -1.635 7.871 -1.822 c
-7.802 -2.007 7.699 -2.161 7.563 -2.279 c
-7.423 -2.404 7.258 -2.499 7.063 -2.558 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.53 m
-7.092 0.742 7.067 0.919 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.5 6.729 1.558 6.652 1.588 c
-6.571 1.625 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.621 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.367 c
-5.88 1.279 5.835 1.162 5.799 1.014 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.338 c
-6.049 -0.515 6.211 -0.602 6.417 -0.602 c
-6.483 -0.602 6.556 -0.588 6.637 -0.559 c
-6.725 -0.522 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.176 7.019 -0.029 c
-7.067 0.118 7.092 0.301 7.092 0.53 c
-11.036 -0.646 m
-12.168 -0.646 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.646 l
-10.124 -0.646 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.22 l
-11.036 2.22 l
-h
-10.124 3.514 0.912 -0.676 re
-10.124 2.837 m
-13.6 1.602 m
-13.057 1.602 l
-13.057 2.22 l
-13.644 2.22 l
-13.924 3.117 l
-14.497 3.117 l
-14.497 2.22 l
-15.732 2.22 l
-15.732 1.602 l
-14.497 1.602 l
-14.497 -0.103 l
-14.497 -0.324 l
-14.504 -0.393 14.527 -0.455 14.556 -0.515 c
-14.593 -0.565 14.648 -0.61 14.718 -0.646 c
-14.795 -0.676 14.909 -0.691 15.056 -0.691 c
-15.192 -0.691 15.327 -0.687 15.468 -0.676 c
-15.603 -0.658 15.736 -0.632 15.865 -0.602 c
-15.865 -1.205 l
-15.784 -1.216 15.707 -1.23 15.629 -1.249 c
-15.549 -1.261 15.471 -1.267 15.394 -1.278 c
-15.313 -1.286 15.225 -1.294 15.129 -1.294 c
-15.041 -1.301 14.942 -1.308 14.835 -1.308 c
-14.648 -1.308 14.486 -1.294 14.35 -1.264 c
-14.221 -1.228 14.107 -1.183 14.012 -1.132 c
-13.924 -1.084 13.85 -1.025 13.791 -0.955 c
-13.733 -0.878 13.689 -0.801 13.66 -0.72 c
-13.63 -0.632 13.608 -0.544 13.6 -0.455 c
-13.59 -0.36 13.586 -0.264 13.586 -0.176 c
-h
-23.221 -0.646 m
-24.353 -0.646 l
-24.353 -1.264 l
-21.045 -1.264 l
-21.045 -0.646 l
-22.31 -0.646 l
-22.31 2.896 l
-21.384 2.896 l
-21.384 3.514 l
-23.221 3.514 l
-h
-28.384 0.485 m
-28.384 0.21 28.347 -0.04 28.281 -0.264 c
-28.212 -0.482 28.108 -0.669 27.973 -0.823 c
-27.833 -0.981 27.657 -1.103 27.443 -1.19 c
-27.227 -1.278 26.973 -1.323 26.679 -1.323 c
-26.404 -1.323 26.157 -1.278 25.944 -1.19 c
-25.739 -1.103 25.566 -0.981 25.43 -0.823 c
-25.29 -0.669 25.187 -0.482 25.121 -0.264 c
-25.051 -0.04 25.018 0.21 25.018 0.485 c
-25.018 0.738 25.047 0.974 25.106 1.191 c
-25.172 1.415 25.275 1.606 25.415 1.764 c
-25.55 1.929 25.727 2.058 25.944 2.146 c
-26.157 2.234 26.414 2.278 26.709 2.278 c
-27.021 2.278 27.281 2.234 27.487 2.146 c
-27.701 2.058 27.873 1.929 28.002 1.764 c
-28.138 1.606 28.237 1.415 28.296 1.191 c
-28.355 0.974 28.384 0.738 28.384 0.485 c
-27.429 0.485 m
-27.429 0.691 27.414 0.867 27.385 1.014 c
-27.362 1.162 27.326 1.282 27.267 1.382 c
-27.208 1.477 27.135 1.547 27.046 1.588 c
-26.959 1.635 26.848 1.661 26.724 1.661 c
-26.458 1.661 26.267 1.562 26.15 1.367 c
-26.032 1.18 25.974 0.886 25.974 0.485 c
-25.974 0.063 26.032 -0.243 26.15 -0.426 c
-26.267 -0.613 26.444 -0.706 26.679 -0.706 c
-26.804 -0.706 26.918 -0.687 27.017 -0.646 c
-27.113 -0.599 27.194 -0.525 27.252 -0.426 c
-27.318 -0.33 27.362 -0.206 27.385 -0.058 c
-27.414 0.088 27.429 0.268 27.429 0.485 c
-30.769 -2.66 m
-30.552 -2.66 30.361 -2.635 30.196 -2.587 c
-30.027 -2.547 29.887 -2.484 29.77 -2.396 c
-29.652 -2.315 29.552 -2.219 29.475 -2.102 c
-29.406 -1.984 29.358 -1.855 29.328 -1.72 c
-30.225 -1.617 l
-30.262 -1.753 30.331 -1.859 30.431 -1.94 c
-30.526 -2.028 30.651 -2.072 30.799 -2.072 c
-30.886 -2.072 30.967 -2.057 31.048 -2.028 c
-31.125 -1.999 31.195 -1.944 31.254 -1.866 c
-31.313 -1.797 31.357 -1.705 31.387 -1.587 c
-31.424 -1.469 31.445 -1.323 31.445 -1.147 c
-31.445 -0.955 l
-31.445 -0.889 31.449 -0.831 31.46 -0.779 c
-31.46 -0.588 l
-31.445 -0.588 l
-31.346 -0.816 31.202 -0.977 31.019 -1.072 c
-30.832 -1.172 30.626 -1.22 30.402 -1.22 c
-30.196 -1.22 30.012 -1.183 29.858 -1.103 c
-29.71 -1.014 29.582 -0.897 29.475 -0.75 c
-29.376 -0.596 29.303 -0.411 29.255 -0.206 c
-29.203 0.008 29.182 0.243 29.182 0.5 c
-29.182 0.771 29.203 1.018 29.255 1.235 c
-29.313 1.448 29.394 1.632 29.505 1.779 c
-29.612 1.933 29.743 2.051 29.901 2.132 c
-30.056 2.22 30.244 2.263 30.46 2.263 c
-30.556 2.263 30.655 2.253 30.755 2.234 c
-30.85 2.213 30.938 2.18 31.019 2.132 c
-31.107 2.08 31.185 2.018 31.254 1.941 c
-31.331 1.86 31.393 1.768 31.445 1.661 c
-31.46 1.661 l
-31.46 1.808 l
-31.467 1.867 31.474 1.918 31.474 1.97 c
-31.482 2.028 31.489 2.076 31.489 2.117 c
-31.497 2.165 31.507 2.198 31.519 2.22 c
-32.371 2.22 l
-32.36 2.139 32.349 2.028 32.342 1.881 c
-32.342 1.411 l
-32.342 -1.161 l
-32.342 -1.415 32.305 -1.635 32.239 -1.822 c
-32.17 -2.007 32.066 -2.161 31.931 -2.279 c
-31.79 -2.404 31.625 -2.499 31.43 -2.558 c
-31.232 -2.624 31.011 -2.66 30.769 -2.66 c
-31.46 0.53 m
-31.46 0.742 31.434 0.919 31.387 1.058 c
-31.346 1.205 31.291 1.323 31.225 1.411 c
-31.166 1.5 31.096 1.558 31.019 1.588 c
-30.938 1.625 30.861 1.646 30.784 1.646 c
-30.684 1.646 30.593 1.621 30.504 1.573 c
-30.424 1.532 30.358 1.463 30.298 1.367 c
-30.248 1.279 30.203 1.162 30.167 1.014 c
-30.137 0.875 30.122 0.706 30.122 0.5 c
-30.122 0.125 30.181 -0.154 30.298 -0.338 c
-30.416 -0.515 30.578 -0.602 30.784 -0.602 c
-30.85 -0.602 30.923 -0.588 31.004 -0.559 c
-31.092 -0.522 31.166 -0.463 31.225 -0.382 c
-31.291 -0.294 31.346 -0.176 31.387 -0.029 c
-31.434 0.118 31.46 0.301 31.46 0.53 c
-40.378 1.47 m
-40.28 1.477 40.176 1.488 40.07 1.5 c
-39.96 1.517 39.838 1.529 39.702 1.529 c
-39.526 1.529 39.368 1.488 39.232 1.411 c
-39.092 1.341 38.975 1.242 38.879 1.118 c
-38.791 0.989 38.721 0.842 38.674 0.676 c
-38.633 0.507 38.615 0.331 38.615 0.147 c
-38.615 -1.264 l
-37.718 -1.264 l
-37.718 0.985 l
-37.718 1.11 37.707 1.235 37.689 1.353 c
-37.678 1.477 37.663 1.595 37.645 1.706 c
-37.633 1.823 37.619 1.918 37.6 1.999 c
-37.579 2.087 37.56 2.161 37.542 2.22 c
-38.424 2.22 l
-38.431 2.168 38.442 2.117 38.453 2.058 c
-38.472 1.999 38.486 1.933 38.497 1.867 c
-38.516 1.808 38.53 1.742 38.541 1.675 c
-38.549 1.606 38.56 1.544 38.57 1.484 c
-38.585 1.484 l
-38.622 1.602 38.674 1.709 38.732 1.808 c
-38.798 1.904 38.879 1.988 38.967 2.058 c
-39.056 2.124 39.158 2.18 39.276 2.22 c
-39.401 2.257 39.548 2.278 39.717 2.278 c
-39.842 2.278 39.96 2.271 40.07 2.263 c
-40.187 2.253 40.29 2.238 40.378 2.22 c
-h
-42.984 -1.323 m
-42.727 -1.323 42.499 -1.286 42.293 -1.22 c
-42.088 -1.143 41.911 -1.029 41.764 -0.882 c
-41.617 -0.727 41.5 -0.536 41.411 -0.309 c
-41.33 -0.085 41.294 0.181 41.294 0.485 c
-41.294 0.816 41.338 1.095 41.425 1.323 c
-41.521 1.558 41.65 1.742 41.808 1.881 c
-41.973 2.018 42.161 2.117 42.366 2.176 c
-42.572 2.242 42.782 2.278 42.998 2.278 c
-43.27 2.278 43.505 2.227 43.704 2.132 c
-43.91 2.043 44.076 1.911 44.204 1.735 c
-44.34 1.565 44.44 1.359 44.498 1.118 c
-44.564 0.882 44.6 0.617 44.6 0.324 c
-44.6 0.309 l
-42.234 0.309 l
-42.234 0.162 42.249 0.023 42.279 -0.103 c
-42.315 -0.231 42.37 -0.345 42.441 -0.441 c
-42.506 -0.529 42.591 -0.599 42.69 -0.646 c
-42.786 -0.698 42.9 -0.72 43.028 -0.72 c
-43.183 -0.72 43.322 -0.687 43.44 -0.617 c
-43.565 -0.551 43.653 -0.448 43.704 -0.309 c
-44.542 -0.382 l
-44.513 -0.482 44.457 -0.588 44.38 -0.706 c
-44.299 -0.816 44.197 -0.918 44.072 -1.014 c
-43.954 -1.103 43.8 -1.176 43.616 -1.234 c
-43.44 -1.294 43.226 -1.323 42.984 -1.323 c
-42.984 1.706 m
-42.896 1.706 42.807 1.69 42.719 1.661 c
-42.631 1.632 42.551 1.58 42.484 1.515 c
-42.414 1.444 42.356 1.357 42.308 1.249 c
-42.267 1.139 42.249 1.014 42.249 0.867 c
-43.719 0.867 l
-43.719 1.004 43.694 1.124 43.646 1.235 c
-43.605 1.341 43.55 1.43 43.484 1.5 c
-43.425 1.565 43.351 1.617 43.264 1.646 c
-43.175 1.683 43.079 1.706 42.984 1.706 c
-47.133 1.602 m
-47.133 -1.264 l
-46.236 -1.264 l
-46.236 1.602 l
-45.413 1.602 l
-45.413 2.22 l
-46.236 2.22 l
-46.236 2.484 l
-46.236 2.61 46.251 2.741 46.281 2.881 c
-46.317 3.017 46.387 3.134 46.486 3.234 c
-46.593 3.341 46.736 3.429 46.912 3.499 c
-47.089 3.564 47.313 3.601 47.588 3.601 c
-47.802 3.601 48 3.591 48.176 3.572 c
-48.353 3.55 48.504 3.532 48.632 3.514 c
-48.632 2.926 l
-48.504 2.944 48.361 2.959 48.205 2.969 c
-48.048 2.976 47.897 2.984 47.75 2.984 c
-47.621 2.984 47.519 2.969 47.441 2.94 c
-47.361 2.911 47.298 2.87 47.251 2.822 c
-47.199 2.77 47.166 2.708 47.147 2.631 c
-47.137 2.562 47.133 2.484 47.133 2.396 c
-47.133 2.22 l
-48.558 2.22 l
-48.558 1.602 l
-h
-50.605 -0.279 0.927 -0.985 re
-50.605 -1.264 m
-54.67 -0.279 0.926 -0.985 re
-54.67 -1.264 m
-f
-Q
-q 1 0 0 1 58.4255 388.7399 cm
-0 0 m
-2.102 0 l
-2.102 -0.574 l
--0.676 -0.574 l
--0.676 4.777 l
-0 4.777 l
-h
-3.513 -0.574 -0.646 3.984 re
-3.557 4.453 m
-3.557 4.343 3.528 4.251 3.469 4.174 c
-3.41 4.104 3.314 4.072 3.19 4.072 c
-3.072 4.072 2.977 4.104 2.911 4.174 c
-2.851 4.251 2.822 4.343 2.822 4.453 c
-2.822 4.571 2.851 4.663 2.911 4.733 c
-2.977 4.81 3.072 4.85 3.19 4.85 c
-3.314 4.85 3.41 4.81 3.469 4.733 c
-3.528 4.652 3.557 4.56 3.557 4.453 c
-6.468 0.44 m
-6.468 0.588 6.412 0.709 6.306 0.808 c
-6.196 0.904 5.99 1.022 5.689 1.161 c
-5.343 1.308 5.101 1.429 4.954 1.529 c
-4.806 1.635 4.696 1.753 4.63 1.881 c
-4.561 2.006 4.528 2.164 4.528 2.352 c
-4.528 2.674 4.645 2.944 4.881 3.16 c
-5.116 3.373 5.417 3.484 5.791 3.484 c
-6.174 3.484 6.483 3.37 6.718 3.145 c
-6.953 2.917 7.071 2.631 7.071 2.278 c
-6.423 2.278 l
-6.423 2.454 6.365 2.605 6.247 2.734 c
-6.13 2.859 5.976 2.925 5.791 2.925 c
-5.593 2.925 5.442 2.869 5.336 2.763 c
-5.226 2.664 5.174 2.532 5.174 2.366 c
-5.174 2.238 5.211 2.131 5.292 2.043 c
-5.369 1.962 5.56 1.859 5.865 1.734 c
-6.342 1.547 6.674 1.359 6.85 1.176 c
-7.026 0.999 7.115 0.771 7.115 0.5 c
-7.115 0.147 6.99 -0.133 6.747 -0.339 c
-6.512 -0.544 6.196 -0.647 5.806 -0.647 c
-5.384 -0.647 5.045 -0.53 4.792 -0.294 c
-4.534 -0.052 4.41 0.253 4.41 0.617 c
-5.056 0.617 l
-5.064 0.389 5.134 0.213 5.262 0.087 c
-5.388 -0.03 5.571 -0.088 5.806 -0.088 c
-6.02 -0.088 6.181 -0.04 6.292 0.058 c
-6.409 0.154 6.468 0.282 6.468 0.44 c
-8.804 4.365 m
-8.804 3.41 l
-9.407 3.41 l
-9.407 2.881 l
-8.804 2.881 l
-8.804 0.411 l
-8.804 0.253 8.827 0.135 8.879 0.058 c
-8.937 -0.023 9.025 -0.059 9.143 -0.059 c
-9.231 -0.059 9.319 -0.044 9.407 -0.015 c
-9.407 -0.574 l
-9.261 -0.621 9.106 -0.647 8.952 -0.647 c
-8.694 -0.647 8.5 -0.555 8.364 -0.368 c
-8.224 -0.184 8.158 0.077 8.158 0.411 c
-8.158 2.881 l
-7.555 2.881 l
-7.555 3.41 l
-8.158 3.41 l
-8.158 4.365 l
-h
-13.273 -0.088 m
-13.486 -0.088 13.66 -0.026 13.787 0.103 c
-13.924 0.239 13.997 0.43 14.009 0.675 c
-14.626 0.675 l
-14.603 0.294 14.468 -0.026 14.214 -0.279 c
-13.957 -0.526 13.644 -0.647 13.273 -0.647 c
-12.781 -0.647 12.406 -0.497 12.141 -0.191 c
-11.884 0.121 11.759 0.588 11.759 1.205 c
-11.759 1.646 l
-11.759 2.241 11.884 2.697 12.141 3.013 c
-12.406 3.326 12.781 3.484 13.273 3.484 c
-13.674 3.484 13.993 3.351 14.229 3.087 c
-14.471 2.829 14.603 2.484 14.626 2.043 c
-14.009 2.043 l
-13.986 2.337 13.913 2.557 13.787 2.705 c
-13.67 2.851 13.498 2.925 13.273 2.925 c
-12.979 2.925 12.762 2.826 12.627 2.631 c
-12.486 2.443 12.413 2.135 12.406 1.705 c
-12.406 1.19 l
-12.406 0.72 12.472 0.386 12.612 0.191 c
-12.759 0.004 12.979 -0.088 13.273 -0.088 c
-15.243 1.602 m
-15.243 2.179 15.379 2.634 15.655 2.969 c
-15.937 3.31 16.309 3.484 16.771 3.484 c
-17.231 3.484 17.598 3.314 17.874 2.984 c
-18.157 2.66 18.304 2.212 18.315 1.646 c
-18.315 1.22 l
-18.315 0.65 18.171 0.195 17.889 -0.148 c
-17.613 -0.482 17.246 -0.647 16.787 -0.647 c
-16.324 -0.647 15.952 -0.485 15.669 -0.162 c
-15.393 0.168 15.25 0.61 15.243 1.161 c
-h
-15.89 1.22 m
-15.89 0.816 15.967 0.5 16.125 0.264 c
-16.29 0.029 16.511 -0.088 16.787 -0.088 c
-17.352 -0.088 17.646 0.323 17.668 1.146 c
-17.668 1.602 l
-17.668 2.003 17.583 2.322 17.419 2.557 c
-17.261 2.8 17.043 2.925 16.771 2.925 c
-16.507 2.925 16.29 2.8 16.125 2.557 c
-15.967 2.322 15.89 2.003 15.89 1.602 c
-h
-19.771 3.41 m
-19.785 3.042 l
-20.027 3.337 20.347 3.484 20.74 3.484 c
-21.182 3.484 21.49 3.285 21.666 2.896 c
-21.92 3.285 22.269 3.484 22.71 3.484 c
-23.445 3.484 23.82 3.021 23.842 2.102 c
-23.842 -0.574 l
-23.195 -0.574 l
-23.195 2.043 l
-23.195 2.337 23.14 2.55 23.033 2.69 c
-22.934 2.826 22.761 2.896 22.519 2.896 c
-22.321 2.896 22.159 2.815 22.034 2.66 c
-21.916 2.514 21.847 2.322 21.828 2.087 c
-21.828 -0.574 l
-21.167 -0.574 l
-21.167 2.072 l
-21.167 2.62 20.947 2.896 20.505 2.896 c
-20.17 2.896 19.935 2.734 19.8 2.41 c
-19.8 -0.574 l
-19.153 -0.574 l
-19.153 3.41 l
-h
-25.429 3.41 m
-25.444 3.042 l
-25.687 3.337 26.007 3.484 26.4 3.484 c
-26.84 3.484 27.149 3.285 27.326 2.896 c
-27.579 3.285 27.929 3.484 28.369 3.484 c
-29.105 3.484 29.479 3.021 29.501 2.102 c
-29.501 -0.574 l
-28.854 -0.574 l
-28.854 2.043 l
-28.854 2.337 28.799 2.55 28.693 2.69 c
-28.594 2.826 28.421 2.896 28.178 2.896 c
-27.979 2.896 27.818 2.815 27.693 2.66 c
-27.576 2.514 27.505 2.322 27.487 2.087 c
-27.487 -0.574 l
-26.826 -0.574 l
-26.826 2.072 l
-26.826 2.62 26.605 2.896 26.165 2.896 c
-25.83 2.896 25.595 2.734 25.459 2.41 c
-25.459 -0.574 l
-24.812 -0.574 l
-24.812 3.41 l
-h
-31.177 -0.574 -0.647 3.984 re
-31.221 4.453 m
-31.221 4.343 31.191 4.251 31.133 4.174 c
-31.074 4.104 30.979 4.072 30.853 4.072 c
-30.736 4.072 30.64 4.104 30.574 4.174 c
-30.516 4.251 30.486 4.343 30.486 4.453 c
-30.486 4.571 30.516 4.663 30.574 4.733 c
-30.64 4.81 30.736 4.85 30.853 4.85 c
-30.979 4.85 31.074 4.81 31.133 4.733 c
-31.191 4.652 31.221 4.56 31.221 4.453 c
-33.043 4.365 m
-33.043 3.41 l
-33.646 3.41 l
-33.646 2.881 l
-33.043 2.881 l
-33.043 0.411 l
-33.043 0.253 33.066 0.135 33.117 0.058 c
-33.176 -0.023 33.264 -0.059 33.381 -0.059 c
-33.47 -0.059 33.558 -0.044 33.646 -0.015 c
-33.646 -0.574 l
-33.499 -0.621 33.345 -0.647 33.19 -0.647 c
-32.933 -0.647 32.739 -0.555 32.602 -0.368 c
-32.463 -0.184 32.397 0.077 32.397 0.411 c
-32.397 2.881 l
-31.794 2.881 l
-31.794 3.41 l
-32.397 3.41 l
-32.397 4.365 l
-h
-36.351 0.44 m
-36.351 0.588 36.296 0.709 36.189 0.808 c
-36.079 0.904 35.873 1.022 35.572 1.161 c
-35.226 1.308 34.984 1.429 34.837 1.529 c
-34.69 1.635 34.58 1.753 34.514 1.881 c
-34.443 2.006 34.41 2.164 34.41 2.352 c
-34.41 2.674 34.528 2.944 34.763 3.16 c
-34.998 3.373 35.299 3.484 35.675 3.484 c
-36.057 3.484 36.365 3.37 36.6 3.145 c
-36.836 2.917 36.953 2.631 36.953 2.278 c
-36.307 2.278 l
-36.307 2.454 36.248 2.605 36.13 2.734 c
-36.012 2.859 35.858 2.925 35.675 2.925 c
-35.476 2.925 35.326 2.869 35.219 2.763 c
-35.108 2.664 35.058 2.532 35.058 2.366 c
-35.058 2.238 35.094 2.131 35.175 2.043 c
-35.252 1.962 35.443 1.859 35.748 1.734 c
-36.226 1.547 36.556 1.359 36.733 1.176 c
-36.909 0.999 36.997 0.771 36.997 0.5 c
-36.997 0.147 36.872 -0.133 36.631 -0.339 c
-36.395 -0.544 36.079 -0.647 35.69 -0.647 c
-35.266 -0.647 34.929 -0.53 34.675 -0.294 c
-34.418 -0.052 34.293 0.253 34.293 0.617 c
-34.94 0.617 l
-34.948 0.389 35.017 0.213 35.145 0.087 c
-35.27 -0.03 35.455 -0.088 35.69 -0.088 c
-35.902 -0.088 36.064 -0.04 36.174 0.058 c
-36.292 0.154 36.351 0.282 36.351 0.44 c
-40.408 4.365 m
-40.408 3.41 l
-41.011 3.41 l
-41.011 2.881 l
-40.408 2.881 l
-40.408 0.411 l
-40.408 0.253 40.43 0.135 40.481 0.058 c
-40.54 -0.023 40.629 -0.059 40.746 -0.059 c
-40.834 -0.059 40.922 -0.044 41.011 -0.015 c
-41.011 -0.574 l
-40.864 -0.621 40.709 -0.647 40.554 -0.647 c
-40.298 -0.647 40.103 -0.555 39.966 -0.368 c
-39.827 -0.184 39.761 0.077 39.761 0.411 c
-39.761 2.881 l
-39.158 2.881 l
-39.158 3.41 l
-39.761 3.41 l
-39.761 4.365 l
-h
-42.422 2.998 m
-42.675 3.322 42.995 3.484 43.377 3.484 c
-44.082 3.484 44.439 3.013 44.45 2.072 c
-44.45 -0.574 l
-43.804 -0.574 l
-43.804 2.043 l
-43.804 2.356 43.748 2.576 43.642 2.705 c
-43.531 2.829 43.377 2.896 43.171 2.896 c
-43.013 2.896 42.866 2.84 42.73 2.734 c
-42.601 2.624 42.499 2.487 42.422 2.322 c
-42.422 -0.574 l
-41.774 -0.574 l
-41.774 5.071 l
-42.422 5.071 l
-h
-47.449 -0.574 m
-47.409 -0.485 47.382 -0.339 47.375 -0.133 c
-47.14 -0.478 46.846 -0.647 46.493 -0.647 c
-46.129 -0.647 45.846 -0.551 45.641 -0.353 c
-45.442 -0.148 45.346 0.139 45.346 0.515 c
-45.346 0.914 45.483 1.234 45.759 1.469 c
-46.03 1.712 46.405 1.837 46.875 1.837 c
-47.361 1.837 l
-47.361 2.263 l
-47.361 2.499 47.305 2.664 47.199 2.763 c
-47.089 2.869 46.927 2.925 46.713 2.925 c
-46.515 2.925 46.353 2.866 46.229 2.749 c
-46.111 2.631 46.052 2.484 46.052 2.308 c
-45.406 2.308 l
-45.406 2.502 45.464 2.693 45.582 2.881 c
-45.707 3.064 45.869 3.212 46.067 3.322 c
-46.273 3.428 46.501 3.484 46.758 3.484 c
-47.158 3.484 47.463 3.38 47.669 3.175 c
-47.883 2.969 47.997 2.674 48.007 2.293 c
-48.007 0.279 l
-48.007 -0.026 48.044 -0.291 48.124 -0.515 c
-48.124 -0.574 l
-h
-46.582 -0.059 m
-46.746 -0.059 46.898 -0.015 47.037 0.073 c
-47.184 0.162 47.291 0.272 47.361 0.411 c
-47.361 1.352 l
-46.993 1.352 l
-46.677 1.352 46.434 1.282 46.258 1.146 c
-46.081 1.018 45.994 0.83 45.994 0.588 c
-45.994 0.359 46.038 0.195 46.125 0.087 c
-46.214 -0.011 46.364 -0.059 46.582 -0.059 c
-49.859 4.365 m
-49.859 3.41 l
-50.462 3.41 l
-50.462 2.881 l
-49.859 2.881 l
-49.859 0.411 l
-49.859 0.253 49.881 0.135 49.933 0.058 c
-49.992 -0.023 50.079 -0.059 50.197 -0.059 c
-50.285 -0.059 50.374 -0.044 50.462 -0.015 c
-50.462 -0.574 l
-50.315 -0.621 50.16 -0.647 50.006 -0.647 c
-49.749 -0.647 49.554 -0.555 49.418 -0.368 c
-49.279 -0.184 49.213 0.077 49.213 0.411 c
-49.213 2.881 l
-48.61 2.881 l
-48.61 3.41 l
-49.213 3.41 l
-49.213 4.365 l
-h
-54.989 -0.574 m
-54.949 -0.485 54.923 -0.339 54.916 -0.133 c
-54.68 -0.478 54.387 -0.647 54.034 -0.647 c
-53.67 -0.647 53.387 -0.551 53.181 -0.353 c
-52.982 -0.148 52.887 0.139 52.887 0.515 c
-52.887 0.914 53.023 1.234 53.299 1.469 c
-53.57 1.712 53.946 1.837 54.416 1.837 c
-54.901 1.837 l
-54.901 2.263 l
-54.901 2.499 54.846 2.664 54.74 2.763 c
-54.629 2.869 54.468 2.925 54.254 2.925 c
-54.056 2.925 53.894 2.866 53.769 2.749 c
-53.651 2.631 53.593 2.484 53.593 2.308 c
-52.946 2.308 l
-52.946 2.502 53.005 2.693 53.123 2.881 c
-53.248 3.064 53.409 3.212 53.607 3.322 c
-53.813 3.428 54.041 3.484 54.299 3.484 c
-54.699 3.484 55.004 3.38 55.21 3.175 c
-55.423 2.969 55.537 2.674 55.548 2.293 c
-55.548 0.279 l
-55.548 -0.026 55.585 -0.291 55.665 -0.515 c
-55.665 -0.574 l
-h
-54.122 -0.059 m
-54.287 -0.059 54.438 -0.015 54.578 0.073 c
-54.725 0.162 54.831 0.272 54.901 0.411 c
-54.901 1.352 l
-54.534 1.352 l
-54.218 1.352 53.975 1.282 53.799 1.146 c
-53.622 1.018 53.534 0.83 53.534 0.588 c
-53.534 0.359 53.578 0.195 53.666 0.087 c
-53.755 -0.011 53.905 -0.059 54.122 -0.059 c
-58.193 2.792 m
-58.106 2.811 58.006 2.822 57.9 2.822 c
-57.565 2.822 57.33 2.638 57.194 2.278 c
-57.194 -0.574 l
-56.547 -0.574 l
-56.547 3.41 l
-57.179 3.41 l
-57.194 2.998 l
-57.37 3.322 57.613 3.484 57.929 3.484 c
-58.035 3.484 58.124 3.461 58.193 3.424 c
-h
-60.192 -0.647 m
-59.693 -0.647 59.311 -0.5 59.046 -0.206 c
-58.781 0.087 58.649 0.521 58.649 1.103 c
-58.649 1.573 l
-58.649 2.167 58.775 2.634 59.031 2.969 c
-59.296 3.31 59.656 3.484 60.119 3.484 c
-60.579 3.484 60.92 3.329 61.148 3.027 c
-61.383 2.734 61.505 2.271 61.516 1.646 c
-61.516 1.22 l
-59.296 1.22 l
-59.296 1.132 l
-59.296 0.698 59.373 0.386 59.531 0.191 c
-59.697 0.004 59.928 -0.088 60.222 -0.088 c
-60.417 -0.088 60.589 -0.056 60.737 0.014 c
-60.884 0.091 61.019 0.209 61.148 0.367 c
-61.486 -0.044 l
-61.2 -0.449 60.77 -0.647 60.192 -0.647 c
-60.119 2.925 m
-59.843 2.925 59.642 2.829 59.517 2.645 c
-59.388 2.458 59.315 2.167 59.296 1.778 c
-60.869 1.778 l
-60.869 1.866 l
-60.847 2.248 60.78 2.516 60.663 2.674 c
-60.545 2.84 60.362 2.925 60.119 2.925 c
-66.895 1.22 m
-66.895 0.592 66.777 0.121 66.542 -0.191 c
-66.315 -0.497 65.999 -0.647 65.587 -0.647 c
-65.183 -0.647 64.874 -0.497 64.661 -0.191 c
-64.661 -2.103 l
-64.014 -2.103 l
-64.014 3.41 l
-64.602 3.41 l
-64.647 2.969 l
-64.859 3.31 65.168 3.484 65.572 3.484 c
-66.014 3.484 66.341 3.329 66.557 3.027 c
-66.771 2.722 66.885 2.267 66.895 1.66 c
-h
-66.249 1.602 m
-66.249 2.043 66.179 2.366 66.043 2.572 c
-65.904 2.786 65.682 2.896 65.381 2.896 c
-65.065 2.896 64.826 2.741 64.661 2.439 c
-64.661 0.367 l
-64.826 0.062 65.065 -0.088 65.381 -0.088 c
-65.676 -0.088 65.888 0.014 66.029 0.22 c
-66.164 0.434 66.237 0.764 66.249 1.205 c
-h
-69.38 2.792 m
-69.291 2.811 69.192 2.822 69.086 2.822 c
-68.751 2.822 68.516 2.638 68.38 2.278 c
-68.38 -0.574 l
-67.733 -0.574 l
-67.733 3.41 l
-68.365 3.41 l
-68.38 2.998 l
-68.556 3.322 68.799 3.484 69.115 3.484 c
-69.221 3.484 69.31 3.461 69.38 3.424 c
-h
-71.379 -0.647 m
-70.879 -0.647 70.497 -0.5 70.232 -0.206 c
-69.967 0.087 69.835 0.521 69.835 1.103 c
-69.835 1.573 l
-69.835 2.167 69.96 2.634 70.218 2.969 c
-70.482 3.31 70.842 3.484 71.305 3.484 c
-71.764 3.484 72.107 3.329 72.334 3.027 c
-72.57 2.734 72.691 2.271 72.701 1.646 c
-72.701 1.22 l
-70.482 1.22 l
-70.482 1.132 l
-70.482 0.698 70.559 0.386 70.717 0.191 c
-70.883 0.004 71.114 -0.088 71.408 -0.088 c
-71.602 -0.088 71.776 -0.056 71.922 0.014 c
-72.069 0.091 72.206 0.209 72.334 0.367 c
-72.672 -0.044 l
-72.385 -0.449 71.955 -0.647 71.379 -0.647 c
-71.305 2.925 m
-71.03 2.925 70.827 2.829 70.702 2.645 c
-70.574 2.458 70.5 2.167 70.482 1.778 c
-72.055 1.778 l
-72.055 1.866 l
-72.032 2.248 71.967 2.516 71.849 2.674 c
-71.731 2.84 71.548 2.925 71.305 2.925 c
-75.421 0.44 m
-75.421 0.588 75.365 0.709 75.259 0.808 c
-75.149 0.904 74.943 1.022 74.642 1.161 c
-74.297 1.308 74.054 1.429 73.907 1.529 c
-73.76 1.635 73.65 1.753 73.584 1.881 c
-73.514 2.006 73.48 2.164 73.48 2.352 c
-73.48 2.674 73.598 2.944 73.833 3.16 c
-74.068 3.373 74.37 3.484 74.745 3.484 c
-75.126 3.484 75.436 3.37 75.671 3.145 c
-75.906 2.917 76.024 2.631 76.024 2.278 c
-75.377 2.278 l
-75.377 2.454 75.318 2.605 75.201 2.734 c
-75.083 2.859 74.929 2.925 74.745 2.925 c
-74.546 2.925 74.396 2.869 74.289 2.763 c
-74.179 2.664 74.127 2.532 74.127 2.366 c
-74.127 2.238 74.164 2.131 74.245 2.043 c
-74.322 1.962 74.513 1.859 74.818 1.734 c
-75.296 1.547 75.627 1.359 75.803 1.176 c
-75.98 0.999 76.067 0.771 76.067 0.5 c
-76.067 0.147 75.943 -0.133 75.7 -0.339 c
-75.465 -0.544 75.149 -0.647 74.76 -0.647 c
-74.337 -0.647 73.999 -0.53 73.745 -0.294 c
-73.488 -0.052 73.363 0.253 73.363 0.617 c
-74.01 0.617 l
-74.017 0.389 74.087 0.213 74.216 0.087 c
-74.34 -0.03 74.524 -0.088 74.76 -0.088 c
-74.972 -0.088 75.134 -0.04 75.244 0.058 c
-75.362 0.154 75.421 0.282 75.421 0.44 c
-78.332 -0.647 m
-77.831 -0.647 77.449 -0.5 77.185 -0.206 c
-76.92 0.087 76.788 0.521 76.788 1.103 c
-76.788 1.573 l
-76.788 2.167 76.913 2.634 77.17 2.969 c
-77.435 3.31 77.794 3.484 78.258 3.484 c
-78.717 3.484 79.059 3.329 79.286 3.027 c
-79.522 2.734 79.643 2.271 79.654 1.646 c
-79.654 1.22 l
-77.435 1.22 l
-77.435 1.132 l
-77.435 0.698 77.512 0.386 77.67 0.191 c
-77.835 0.004 78.066 -0.088 78.361 -0.088 c
-78.555 -0.088 78.729 -0.056 78.875 0.014 c
-79.022 0.091 79.159 0.209 79.286 0.367 c
-79.625 -0.044 l
-79.338 -0.449 78.908 -0.647 78.332 -0.647 c
-78.258 2.925 m
-77.983 2.925 77.78 2.829 77.655 2.645 c
-77.526 2.458 77.453 2.167 77.435 1.778 c
-79.007 1.778 l
-79.007 1.866 l
-78.985 2.248 78.92 2.516 78.802 2.674 c
-78.684 2.84 78.5 2.925 78.258 2.925 c
-81.05 3.41 m
-81.065 2.969 l
-81.318 3.31 81.642 3.484 82.035 3.484 c
-82.741 3.484 83.097 3.013 83.109 2.072 c
-83.109 -0.574 l
-82.461 -0.574 l
-82.461 2.043 l
-82.461 2.356 82.407 2.576 82.3 2.705 c
-82.19 2.829 82.035 2.896 81.829 2.896 c
-81.671 2.896 81.524 2.84 81.389 2.734 c
-81.26 2.624 81.158 2.487 81.08 2.322 c
-81.08 -0.574 l
-80.433 -0.574 l
-80.433 3.41 l
-h
-84.931 4.365 m
-84.931 3.41 l
-85.534 3.41 l
-85.534 2.881 l
-84.931 2.881 l
-84.931 0.411 l
-84.931 0.253 84.953 0.135 85.004 0.058 c
-85.064 -0.023 85.152 -0.059 85.27 -0.059 c
-85.357 -0.059 85.445 -0.044 85.534 -0.015 c
-85.534 -0.574 l
-85.387 -0.621 85.233 -0.647 85.079 -0.647 c
-84.821 -0.647 84.626 -0.555 84.491 -0.368 c
-84.35 -0.184 84.285 0.077 84.285 0.411 c
-84.285 2.881 l
-83.682 2.881 l
-83.682 3.41 l
-84.285 3.41 l
-84.285 4.365 l
-h
-87.886 1.602 m
-87.886 2.179 88.021 2.634 88.297 2.969 c
-88.58 3.31 88.952 3.484 89.414 3.484 c
-89.874 3.484 90.241 3.314 90.517 2.984 c
-90.8 2.66 90.947 2.212 90.958 1.646 c
-90.958 1.22 l
-90.958 0.65 90.814 0.195 90.531 -0.148 c
-90.255 -0.482 89.889 -0.647 89.43 -0.647 c
-88.966 -0.647 88.595 -0.485 88.312 -0.162 c
-88.036 0.168 87.893 0.61 87.886 1.161 c
-h
-88.532 1.22 m
-88.532 0.816 88.609 0.5 88.767 0.264 c
-88.933 0.029 89.154 -0.088 89.43 -0.088 c
-89.995 -0.088 90.289 0.323 90.311 1.146 c
-90.311 1.602 l
-90.311 2.003 90.226 2.322 90.061 2.557 c
-89.903 2.8 89.686 2.925 89.414 2.925 c
-89.15 2.925 88.933 2.8 88.767 2.557 c
-88.609 2.322 88.532 2.003 88.532 1.602 c
-h
-92.413 3.41 m
-92.428 2.969 l
-92.682 3.31 93.004 3.484 93.398 3.484 c
-94.103 3.484 94.46 3.013 94.471 2.072 c
-94.471 -0.574 l
-93.824 -0.574 l
-93.824 2.043 l
-93.824 2.356 93.769 2.576 93.663 2.705 c
-93.552 2.829 93.398 2.896 93.192 2.896 c
-93.034 2.896 92.887 2.84 92.751 2.734 c
-92.622 2.624 92.52 2.487 92.443 2.322 c
-92.443 -0.574 l
-91.795 -0.574 l
-91.795 3.41 l
-h
-98.542 -0.088 m
-98.756 -0.088 98.928 -0.026 99.057 0.103 c
-99.192 0.239 99.267 0.43 99.277 0.675 c
-99.895 0.675 l
-99.873 0.294 99.737 -0.026 99.483 -0.279 c
-99.226 -0.526 98.914 -0.647 98.542 -0.647 c
-98.05 -0.647 97.675 -0.497 97.411 -0.191 c
-97.153 0.121 97.029 0.588 97.029 1.205 c
-97.029 1.646 l
-97.029 2.241 97.153 2.697 97.411 3.013 c
-97.675 3.326 98.05 3.484 98.542 3.484 c
-98.943 3.484 99.263 3.351 99.498 3.087 c
-99.74 2.829 99.873 2.484 99.895 2.043 c
-99.277 2.043 l
-99.256 2.337 99.182 2.557 99.057 2.705 c
-98.939 2.851 98.766 2.925 98.542 2.925 c
-98.249 2.925 98.032 2.826 97.896 2.631 c
-97.756 2.443 97.683 2.135 97.675 1.705 c
-97.675 1.19 l
-97.675 0.72 97.742 0.386 97.881 0.191 c
-98.028 0.004 98.249 -0.088 98.542 -0.088 c
-102.673 -0.221 m
-102.456 -0.507 102.144 -0.647 101.732 -0.647 c
-101.368 -0.647 101.093 -0.526 100.909 -0.279 c
-100.732 -0.026 100.637 0.338 100.63 0.808 c
-100.63 3.41 l
-101.276 3.41 l
-101.276 0.867 l
-101.276 0.239 101.461 -0.073 101.835 -0.073 c
-102.236 -0.073 102.511 0.103 102.658 0.455 c
-102.658 3.41 l
-103.305 3.41 l
-103.305 -0.574 l
-102.687 -0.574 l
-h
-105.936 2.792 m
-105.848 2.811 105.749 2.822 105.642 2.822 c
-105.307 2.822 105.072 2.638 104.937 2.278 c
-104.937 -0.574 l
-104.289 -0.574 l
-104.289 3.41 l
-104.922 3.41 l
-104.937 2.998 l
-105.113 3.322 105.355 3.484 105.671 3.484 c
-105.778 3.484 105.866 3.461 105.936 3.424 c
-h
-108.229 2.792 m
-108.141 2.811 108.042 2.822 107.935 2.822 c
-107.601 2.822 107.366 2.638 107.229 2.278 c
-107.229 -0.574 l
-106.583 -0.574 l
-106.583 3.41 l
-107.215 3.41 l
-107.229 2.998 l
-107.406 3.322 107.649 3.484 107.965 3.484 c
-108.071 3.484 108.16 3.461 108.229 3.424 c
-h
-110.228 -0.647 m
-109.729 -0.647 109.346 -0.5 109.082 -0.206 c
-108.817 0.087 108.685 0.521 108.685 1.103 c
-108.685 1.573 l
-108.685 2.167 108.81 2.634 109.067 2.969 c
-109.332 3.31 109.692 3.484 110.155 3.484 c
-110.614 3.484 110.956 3.329 111.184 3.027 c
-111.419 2.734 111.54 2.271 111.551 1.646 c
-111.551 1.22 l
-109.332 1.22 l
-109.332 1.132 l
-109.332 0.698 109.409 0.386 109.567 0.191 c
-109.733 0.004 109.964 -0.088 110.257 -0.088 c
-110.452 -0.088 110.625 -0.056 110.772 0.014 c
-110.919 0.091 111.055 0.209 111.184 0.367 c
-111.522 -0.044 l
-111.235 -0.449 110.805 -0.647 110.228 -0.647 c
-110.155 2.925 m
-109.879 2.925 109.677 2.829 109.552 2.645 c
-109.423 2.458 109.35 2.167 109.332 1.778 c
-110.905 1.778 l
-110.905 1.866 l
-110.882 2.248 110.816 2.516 110.699 2.674 c
-110.581 2.84 110.398 2.925 110.155 2.925 c
-112.948 3.41 m
-112.962 2.969 l
-113.216 3.31 113.539 3.484 113.932 3.484 c
-114.638 3.484 114.994 3.013 115.005 2.072 c
-115.005 -0.574 l
-114.359 -0.574 l
-114.359 2.043 l
-114.359 2.356 114.304 2.576 114.197 2.705 c
-114.086 2.829 113.932 2.896 113.727 2.896 c
-113.569 2.896 113.421 2.84 113.286 2.734 c
-113.157 2.624 113.054 2.487 112.977 2.322 c
-112.977 -0.574 l
-112.33 -0.574 l
-112.33 3.41 l
-h
-116.829 4.365 m
-116.829 3.41 l
-117.431 3.41 l
-117.431 2.881 l
-116.829 2.881 l
-116.829 0.411 l
-116.829 0.253 116.85 0.135 116.902 0.058 c
-116.96 -0.023 117.049 -0.059 117.166 -0.059 c
-117.255 -0.059 117.342 -0.044 117.431 -0.015 c
-117.431 -0.574 l
-117.284 -0.621 117.13 -0.647 116.975 -0.647 c
-116.718 -0.647 116.523 -0.555 116.387 -0.368 c
-116.247 -0.184 116.181 0.077 116.181 0.411 c
-116.181 2.881 l
-115.578 2.881 l
-115.578 3.41 l
-116.181 3.41 l
-116.181 4.365 l
-h
-122.796 1.22 m
-122.796 0.602 122.682 0.135 122.458 -0.177 c
-122.241 -0.493 121.918 -0.647 121.488 -0.647 c
-121.065 -0.647 120.752 -0.467 120.547 -0.104 c
-120.517 -0.574 l
-119.915 -0.574 l
-119.915 5.071 l
-120.561 5.071 l
-120.561 2.969 l
-120.775 3.31 121.084 3.484 121.488 3.484 c
-121.918 3.484 122.241 3.326 122.458 3.013 c
-122.682 2.708 122.796 2.241 122.796 1.616 c
-h
-122.149 1.602 m
-122.149 2.072 122.08 2.403 121.943 2.601 c
-121.814 2.796 121.606 2.896 121.311 2.896 c
-120.977 2.896 120.727 2.711 120.561 2.352 c
-120.561 0.47 l
-120.727 0.106 120.981 -0.073 121.326 -0.073 c
-121.62 -0.073 121.83 0.029 121.958 0.235 c
-122.083 0.44 122.149 0.756 122.149 1.19 c
-h
-125.28 2.792 m
-125.192 2.811 125.093 2.822 124.986 2.822 c
-124.652 2.822 124.417 2.638 124.28 2.278 c
-124.28 -0.574 l
-123.634 -0.574 l
-123.634 3.41 l
-124.266 3.41 l
-124.28 2.998 l
-124.457 3.322 124.7 3.484 125.016 3.484 c
-125.122 3.484 125.211 3.461 125.28 3.424 c
-h
-127.823 -0.574 m
-127.783 -0.485 127.757 -0.339 127.75 -0.133 c
-127.514 -0.478 127.22 -0.647 126.867 -0.647 c
-126.504 -0.647 126.221 -0.551 126.015 -0.353 c
-125.816 -0.148 125.721 0.139 125.721 0.515 c
-125.721 0.914 125.857 1.234 126.132 1.469 c
-126.404 1.712 126.78 1.837 127.25 1.837 c
-127.735 1.837 l
-127.735 2.263 l
-127.735 2.499 127.68 2.664 127.573 2.763 c
-127.463 2.869 127.301 2.925 127.088 2.925 c
-126.89 2.925 126.728 2.866 126.603 2.749 c
-126.485 2.631 126.427 2.484 126.427 2.308 c
-125.78 2.308 l
-125.78 2.502 125.839 2.693 125.957 2.881 c
-126.081 3.064 126.243 3.212 126.441 3.322 c
-126.647 3.428 126.875 3.484 127.132 3.484 c
-127.532 3.484 127.838 3.38 128.043 3.175 c
-128.257 2.969 128.37 2.674 128.382 2.293 c
-128.382 0.279 l
-128.382 -0.026 128.418 -0.291 128.499 -0.515 c
-128.499 -0.574 l
-h
-126.956 -0.059 m
-127.121 -0.059 127.272 -0.015 127.412 0.073 c
-127.559 0.162 127.665 0.272 127.735 0.411 c
-127.735 1.352 l
-127.368 1.352 l
-127.052 1.352 126.809 1.282 126.632 1.146 c
-126.456 1.018 126.368 0.83 126.368 0.588 c
-126.368 0.359 126.412 0.195 126.5 0.087 c
-126.589 -0.011 126.739 -0.059 126.956 -0.059 c
-129.999 3.41 m
-130.013 2.969 l
-130.267 3.31 130.59 3.484 130.983 3.484 c
-131.688 3.484 132.045 3.013 132.056 2.072 c
-132.056 -0.574 l
-131.41 -0.574 l
-131.41 2.043 l
-131.41 2.356 131.354 2.576 131.248 2.705 c
-131.138 2.829 130.983 2.896 130.778 2.896 c
-130.62 2.896 130.472 2.84 130.337 2.734 c
-130.208 2.624 130.105 2.487 130.028 2.322 c
-130.028 -0.574 l
-129.381 -0.574 l
-129.381 3.41 l
-h
-134.408 -0.088 m
-134.622 -0.088 134.794 -0.026 134.923 0.103 c
-135.058 0.239 135.133 0.43 135.143 0.675 c
-135.761 0.675 l
-135.738 0.294 135.603 -0.026 135.349 -0.279 c
-135.092 -0.526 134.78 -0.647 134.408 -0.647 c
-133.916 -0.647 133.541 -0.497 133.276 -0.191 c
-133.02 0.121 132.894 0.588 132.894 1.205 c
-132.894 1.646 l
-132.894 2.241 133.02 2.697 133.276 3.013 c
-133.541 3.326 133.916 3.484 134.408 3.484 c
-134.809 3.484 135.129 3.351 135.364 3.087 c
-135.607 2.829 135.738 2.484 135.761 2.043 c
-135.143 2.043 l
-135.121 2.337 135.048 2.557 134.923 2.705 c
-134.805 2.851 134.632 2.925 134.408 2.925 c
-134.115 2.925 133.897 2.826 133.762 2.631 c
-133.622 2.443 133.548 2.135 133.541 1.705 c
-133.541 1.19 l
-133.541 0.72 133.607 0.386 133.747 0.191 c
-133.894 0.004 134.115 -0.088 134.408 -0.088 c
-137.157 2.998 m
-137.41 3.322 137.73 3.484 138.113 3.484 c
-138.818 3.484 139.174 3.013 139.185 2.072 c
-139.185 -0.574 l
-138.539 -0.574 l
-138.539 2.043 l
-138.539 2.356 138.483 2.576 138.377 2.705 c
-138.267 2.829 138.113 2.896 137.907 2.896 c
-137.749 2.896 137.602 2.84 137.466 2.734 c
-137.337 2.624 137.234 2.487 137.157 2.322 c
-137.157 -0.574 l
-136.51 -0.574 l
-136.51 5.071 l
-137.157 5.071 l
-h
-143.904 -0.574 m
-143.864 -0.485 143.838 -0.339 143.831 -0.133 c
-143.595 -0.478 143.301 -0.647 142.948 -0.647 c
-142.584 -0.647 142.302 -0.551 142.096 -0.353 c
-141.897 -0.148 141.801 0.139 141.801 0.515 c
-141.801 0.914 141.938 1.234 142.213 1.469 c
-142.485 1.712 142.86 1.837 143.33 1.837 c
-143.816 1.837 l
-143.816 2.263 l
-143.816 2.499 143.76 2.664 143.654 2.763 c
-143.544 2.869 143.382 2.925 143.169 2.925 c
-142.971 2.925 142.809 2.866 142.684 2.749 c
-142.566 2.631 142.507 2.484 142.507 2.308 c
-141.861 2.308 l
-141.861 2.502 141.919 2.693 142.037 2.881 c
-142.162 3.064 142.324 3.212 142.522 3.322 c
-142.728 3.428 142.956 3.484 143.213 3.484 c
-143.613 3.484 143.918 3.38 144.124 3.175 c
-144.338 2.969 144.451 2.674 144.463 2.293 c
-144.463 0.279 l
-144.463 -0.026 144.499 -0.291 144.58 -0.515 c
-144.58 -0.574 l
-h
-143.037 -0.059 m
-143.202 -0.059 143.353 -0.015 143.492 0.073 c
-143.64 0.162 143.746 0.272 143.816 0.411 c
-143.816 1.352 l
-143.448 1.352 l
-143.133 1.352 142.89 1.282 142.713 1.146 c
-142.537 1.018 142.449 0.83 142.449 0.588 c
-142.449 0.359 142.493 0.195 142.581 0.087 c
-142.669 -0.011 142.819 -0.059 143.037 -0.059 c
-146.079 3.41 m
-146.094 2.969 l
-146.347 3.31 146.671 3.484 147.064 3.484 c
-147.769 3.484 148.126 3.013 148.137 2.072 c
-148.137 -0.574 l
-147.49 -0.574 l
-147.49 2.043 l
-147.49 2.356 147.435 2.576 147.328 2.705 c
-147.218 2.829 147.064 2.896 146.858 2.896 c
-146.7 2.896 146.553 2.84 146.418 2.734 c
-146.289 2.624 146.186 2.487 146.109 2.322 c
-146.109 -0.574 l
-145.462 -0.574 l
-145.462 3.41 l
-h
-148.975 1.602 m
-148.975 2.208 149.086 2.674 149.313 2.998 c
-149.548 3.322 149.875 3.484 150.298 3.484 c
-150.68 3.484 150.977 3.326 151.195 3.013 c
-151.195 5.071 l
-151.841 5.071 l
-151.841 -0.574 l
-151.253 -0.574 l
-151.209 -0.148 l
-151.004 -0.482 150.698 -0.647 150.298 -0.647 c
-149.886 -0.647 149.562 -0.493 149.327 -0.177 c
-149.092 0.147 148.975 0.602 148.975 1.19 c
-h
-149.622 1.22 m
-149.622 0.779 149.684 0.448 149.813 0.235 c
-149.949 0.029 150.169 -0.073 150.474 -0.073 c
-150.798 -0.073 151.037 0.087 151.195 0.411 c
-151.195 2.425 l
-151.025 2.738 150.786 2.896 150.474 2.896 c
-150.169 2.896 149.949 2.792 149.813 2.587 c
-149.684 2.381 149.622 2.057 149.622 1.616 c
-h
-155.178 3.41 m
-155.193 2.969 l
-155.446 3.31 155.77 3.484 156.163 3.484 c
-156.868 3.484 157.225 3.013 157.236 2.072 c
-157.236 -0.574 l
-156.589 -0.574 l
-156.589 2.043 l
-156.589 2.356 156.534 2.576 156.427 2.705 c
-156.317 2.829 156.163 2.896 155.957 2.896 c
-155.799 2.896 155.652 2.84 155.516 2.734 c
-155.388 2.624 155.284 2.487 155.207 2.322 c
-155.207 -0.574 l
-154.561 -0.574 l
-154.561 3.41 l
-h
-158.073 1.602 m
-158.073 2.179 158.21 2.634 158.485 2.969 c
-158.769 3.31 159.139 3.484 159.602 3.484 c
-160.062 3.484 160.429 3.314 160.705 2.984 c
-160.988 2.66 161.135 2.212 161.146 1.646 c
-161.146 1.22 l
-161.146 0.65 161.003 0.195 160.72 -0.148 c
-160.444 -0.482 160.076 -0.647 159.617 -0.647 c
-159.154 -0.647 158.783 -0.485 158.5 -0.162 c
-158.224 0.168 158.081 0.61 158.073 1.161 c
-h
-158.721 1.22 m
-158.721 0.816 158.798 0.5 158.956 0.264 c
-159.121 0.029 159.341 -0.088 159.617 -0.088 c
-160.183 -0.088 160.477 0.323 160.499 1.146 c
-160.499 1.602 l
-160.499 2.003 160.415 2.322 160.249 2.557 c
-160.091 2.8 159.874 2.925 159.602 2.925 c
-159.338 2.925 159.121 2.8 158.956 2.557 c
-158.798 2.322 158.721 2.003 158.721 1.602 c
-h
-162.836 4.365 m
-162.836 3.41 l
-163.438 3.41 l
-163.438 2.881 l
-162.836 2.881 l
-162.836 0.411 l
-162.836 0.253 162.858 0.135 162.91 0.058 c
-162.968 -0.023 163.056 -0.059 163.174 -0.059 c
-163.262 -0.059 163.351 -0.044 163.438 -0.015 c
-163.438 -0.574 l
-163.292 -0.621 163.137 -0.647 162.983 -0.647 c
-162.726 -0.647 162.532 -0.555 162.395 -0.368 c
-162.256 -0.184 162.189 0.077 162.189 0.411 c
-162.189 2.881 l
-161.587 2.881 l
-161.587 3.41 l
-162.189 3.41 l
-162.189 4.365 l
-h
-166.54 3.41 m
-166.555 3.042 l
-166.798 3.337 167.118 3.484 167.511 3.484 c
-167.951 3.484 168.26 3.285 168.437 2.896 c
-168.69 3.285 169.04 3.484 169.48 3.484 c
-170.215 3.484 170.59 3.021 170.612 2.102 c
-170.612 -0.574 l
-169.965 -0.574 l
-169.965 2.043 l
-169.965 2.337 169.91 2.55 169.803 2.69 c
-169.705 2.826 169.532 2.896 169.289 2.896 c
-169.09 2.896 168.929 2.815 168.804 2.66 c
-168.687 2.514 168.616 2.322 168.598 2.087 c
-168.598 -0.574 l
-167.937 -0.574 l
-167.937 2.072 l
-167.937 2.62 167.716 2.896 167.276 2.896 c
-166.941 2.896 166.706 2.734 166.57 2.41 c
-166.57 -0.574 l
-165.923 -0.574 l
-165.923 3.41 l
-h
-173.008 -0.647 m
-172.508 -0.647 172.126 -0.5 171.862 -0.206 c
-171.597 0.087 171.465 0.521 171.465 1.103 c
-171.465 1.573 l
-171.465 2.167 171.59 2.634 171.847 2.969 c
-172.111 3.31 172.471 3.484 172.934 3.484 c
-173.393 3.484 173.736 3.329 173.963 3.027 c
-174.199 2.734 174.32 2.271 174.331 1.646 c
-174.331 1.22 l
-172.111 1.22 l
-172.111 1.132 l
-172.111 0.698 172.188 0.386 172.346 0.191 c
-172.512 0.004 172.743 -0.088 173.038 -0.088 c
-173.232 -0.088 173.405 -0.056 173.551 0.014 c
-173.699 0.091 173.835 0.209 173.963 0.367 c
-174.301 -0.044 l
-174.015 -0.449 173.585 -0.647 173.008 -0.647 c
-172.934 2.925 m
-172.659 2.925 172.456 2.829 172.332 2.645 c
-172.203 2.458 172.13 2.167 172.111 1.778 c
-173.684 1.778 l
-173.684 1.866 l
-173.662 2.248 173.596 2.516 173.478 2.674 c
-173.36 2.84 173.177 2.925 172.934 2.925 c
-176.756 2.792 m
-176.668 2.811 176.568 2.822 176.462 2.822 c
-176.128 2.822 175.893 2.638 175.756 2.278 c
-175.756 -0.574 l
-175.11 -0.574 l
-175.11 3.41 l
-175.742 3.41 l
-175.756 2.998 l
-175.933 3.322 176.175 3.484 176.491 3.484 c
-176.598 3.484 176.686 3.461 176.756 3.424 c
-h
-177.197 1.602 m
-177.197 2.219 177.308 2.682 177.535 2.998 c
-177.759 3.322 178.094 3.484 178.534 3.484 c
-178.935 3.484 179.24 3.307 179.446 2.954 c
-179.49 3.41 l
-180.078 3.41 l
-180.078 -0.618 l
-180.078 -1.106 179.949 -1.484 179.696 -1.75 c
-179.439 -2.014 179.086 -2.147 178.638 -2.147 c
-178.439 -2.147 178.218 -2.095 177.977 -1.999 c
-177.73 -1.9 177.549 -1.779 177.432 -1.632 c
-177.697 -1.191 l
-177.962 -1.455 178.259 -1.588 178.594 -1.588 c
-179.13 -1.588 179.406 -1.294 179.417 -0.706 c
-179.417 -0.177 l
-179.211 -0.493 178.91 -0.647 178.52 -0.647 c
-178.108 -0.647 177.785 -0.497 177.549 -0.191 c
-177.322 0.121 177.204 0.573 177.197 1.161 c
-h
-177.859 1.22 m
-177.859 0.779 177.921 0.448 178.05 0.235 c
-178.175 0.029 178.391 -0.073 178.696 -0.073 c
-179.02 -0.073 179.259 0.091 179.417 0.426 c
-179.417 2.41 l
-179.248 2.734 179.009 2.896 178.696 2.896 c
-178.403 2.896 178.185 2.792 178.05 2.587 c
-177.921 2.381 177.859 2.057 177.859 1.616 c
-h
-182.459 -0.647 m
-181.96 -0.647 181.578 -0.5 181.312 -0.206 c
-181.048 0.087 180.916 0.521 180.916 1.103 c
-180.916 1.573 l
-180.916 2.167 181.041 2.634 181.298 2.969 c
-181.563 3.31 181.923 3.484 182.386 3.484 c
-182.845 3.484 183.187 3.329 183.415 3.027 c
-183.65 2.734 183.772 2.271 183.782 1.646 c
-183.782 1.22 l
-181.563 1.22 l
-181.563 1.132 l
-181.563 0.698 181.64 0.386 181.798 0.191 c
-181.963 0.004 182.195 -0.088 182.488 -0.088 c
-182.683 -0.088 182.856 -0.056 183.003 0.014 c
-183.151 0.091 183.286 0.209 183.415 0.367 c
-183.753 -0.044 l
-183.466 -0.449 183.036 -0.647 182.459 -0.647 c
-182.386 2.925 m
-182.11 2.925 181.908 2.829 181.783 2.645 c
-181.655 2.458 181.582 2.167 181.563 1.778 c
-183.136 1.778 l
-183.136 1.866 l
-183.114 2.248 183.047 2.516 182.93 2.674 c
-182.812 2.84 182.629 2.925 182.386 2.925 c
-184.429 1.602 m
-184.429 2.208 184.539 2.674 184.767 2.998 c
-185.002 3.322 185.329 3.484 185.752 3.484 c
-186.134 3.484 186.432 3.326 186.648 3.013 c
-186.648 5.071 l
-187.296 5.071 l
-187.296 -0.574 l
-186.708 -0.574 l
-186.663 -0.148 l
-186.457 -0.482 186.153 -0.647 185.752 -0.647 c
-185.341 -0.647 185.017 -0.493 184.782 -0.177 c
-184.547 0.147 184.429 0.602 184.429 1.19 c
-h
-185.075 1.22 m
-185.075 0.779 185.138 0.448 185.267 0.235 c
-185.403 0.029 185.623 -0.073 185.929 -0.073 c
-186.251 -0.073 186.49 0.087 186.648 0.411 c
-186.648 2.425 l
-186.48 2.738 186.241 2.896 185.929 2.896 c
-185.623 2.896 185.403 2.792 185.267 2.587 c
-185.138 2.381 185.075 2.057 185.075 1.616 c
-h
-190.72 -0.574 -0.646 3.984 re
-190.764 4.453 m
-190.764 4.343 190.735 4.251 190.677 4.174 c
-190.617 4.104 190.521 4.072 190.397 4.072 c
-190.28 4.072 190.184 4.104 190.118 4.174 c
-190.059 4.251 190.029 4.343 190.029 4.453 c
-190.029 4.571 190.059 4.663 190.118 4.733 c
-190.184 4.81 190.28 4.85 190.397 4.85 c
-190.521 4.85 190.617 4.81 190.677 4.733 c
-190.735 4.652 190.764 4.56 190.764 4.453 c
-192.352 3.41 m
-192.366 2.969 l
-192.62 3.31 192.944 3.484 193.337 3.484 c
-194.043 3.484 194.399 3.013 194.409 2.072 c
-194.409 -0.574 l
-193.763 -0.574 l
-193.763 2.043 l
-193.763 2.356 193.708 2.576 193.601 2.705 c
-193.491 2.829 193.337 2.896 193.131 2.896 c
-192.973 2.896 192.826 2.84 192.69 2.734 c
-192.561 2.624 192.458 2.487 192.381 2.322 c
-192.381 -0.574 l
-191.735 -0.574 l
-191.735 3.41 l
-h
-196.233 4.365 m
-196.233 3.41 l
-196.835 3.41 l
-196.835 2.881 l
-196.233 2.881 l
-196.233 0.411 l
-196.233 0.253 196.254 0.135 196.306 0.058 c
-196.364 -0.023 196.453 -0.059 196.57 -0.059 c
-196.659 -0.059 196.747 -0.044 196.835 -0.015 c
-196.835 -0.574 l
-196.688 -0.621 196.534 -0.647 196.379 -0.647 c
-196.123 -0.647 195.928 -0.555 195.791 -0.368 c
-195.652 -0.184 195.585 0.077 195.585 0.411 c
-195.585 2.881 l
-194.983 2.881 l
-194.983 3.41 l
-195.585 3.41 l
-195.585 4.365 l
-h
-197.393 1.602 m
-197.393 2.179 197.53 2.634 197.806 2.969 c
-198.088 3.31 198.459 3.484 198.922 3.484 c
-199.381 3.484 199.749 3.314 200.025 2.984 c
-200.308 2.66 200.455 2.212 200.466 1.646 c
-200.466 1.22 l
-200.466 0.65 200.322 0.195 200.04 -0.148 c
-199.764 -0.482 199.396 -0.647 198.937 -0.647 c
-198.474 -0.647 198.103 -0.485 197.82 -0.162 c
-197.544 0.168 197.401 0.61 197.393 1.161 c
-h
-198.041 1.22 m
-198.041 0.816 198.118 0.5 198.276 0.264 c
-198.441 0.029 198.662 -0.088 198.937 -0.088 c
-199.503 -0.088 199.797 0.323 199.819 1.146 c
-199.819 1.602 l
-199.819 2.003 199.734 2.322 199.569 2.557 c
-199.411 2.8 199.194 2.925 198.922 2.925 c
-198.658 2.925 198.441 2.8 198.276 2.557 c
-198.118 2.322 198.041 2.003 198.041 1.602 c
-h
-f
-Q
-q 1 0 0 1 263.3007 391.1359 cm
-0 0 m
--0.338 0.029 l
--0.625 0.029 -0.816 -0.096 -0.911 -0.339 c
--0.911 -2.97 l
--1.955 -2.97 l
--1.955 1.014 l
--0.985 1.014 l
--0.955 0.573 l
--0.79 0.914 -0.558 1.087 -0.264 1.087 c
--0.147 1.087 -0.055 1.065 0.015 1.028 c
-h
-2.072 -3.043 m
-1.544 -3.043 1.125 -2.889 0.823 -2.573 c
-0.53 -2.249 0.383 -1.79 0.383 -1.191 c
-0.383 -0.882 l
-0.383 -0.258 0.518 0.228 0.794 0.573 c
-1.066 0.914 1.459 1.087 1.97 1.087 c
-2.469 1.087 2.841 0.926 3.087 0.602 c
-3.341 0.278 3.473 -0.199 3.484 -0.823 c
-3.484 -1.324 l
-1.411 -1.324 l
-1.43 -1.617 1.492 -1.834 1.602 -1.97 c
-1.72 -2.11 1.9 -2.176 2.147 -2.176 c
-2.488 -2.176 2.778 -2.058 3.013 -1.823 c
-3.425 -2.455 l
-3.296 -2.631 3.109 -2.775 2.866 -2.881 c
-2.62 -2.988 2.356 -3.043 2.072 -3.043 c
-1.426 -0.603 m
-2.455 -0.603 l
-2.455 -0.5 l
-2.455 -0.265 2.415 -0.088 2.338 0.029 c
-2.267 0.154 2.139 0.22 1.955 0.22 c
-1.779 0.22 1.646 0.151 1.559 0.014 c
-1.478 -0.115 1.434 -0.32 1.426 -0.603 c
-4.307 -2.97 m
-4.307 0.22 l
-3.822 0.22 l
-3.822 1.014 l
-4.307 1.014 l
-4.307 1.367 l
-4.307 1.807 4.418 2.146 4.645 2.381 c
-4.881 2.624 5.197 2.748 5.6 2.748 c
-5.725 2.748 5.883 2.723 6.071 2.674 c
-6.071 1.851 l
-6.001 1.87 5.916 1.881 5.821 1.881 c
-5.505 1.881 5.351 1.697 5.351 1.337 c
-5.351 1.014 l
-5.968 1.014 l
-5.968 0.22 l
-5.351 0.22 l
-5.351 -2.97 l
-h
-f
-Q
-q 1 0 0 1 269.9893 388.5188 cm
-0 0 m
-0 0.118 0.033 0.214 0.103 0.294 c
-0.168 0.372 0.272 0.412 0.411 0.412 c
-0.558 0.412 0.665 0.372 0.735 0.294 c
-0.812 0.214 0.852 0.118 0.852 0 c
-0.852 -0.11 0.812 -0.202 0.735 -0.279 c
-0.665 -0.357 0.558 -0.397 0.411 -0.397 c
-0.272 -0.397 0.168 -0.357 0.103 -0.279 c
-0.033 -0.202 0 -0.11 0 0 c
-f
-Q
-q 1 0 0 1 135.7129 380.1556 cm
-0 0 m
--1.808 0 l
--2.219 -1.397 l
--2.91 -1.397 l
--1.19 3.954 l
--0.617 3.954 l
-1.118 -1.397 l
-0.426 -1.397 l
-h
--1.631 0.588 m
--0.176 0.588 l
--0.897 3.013 l
-h
-f
-Q
-q 1 0 0 1 141.0347 381.7285 cm
-0 0 m
--0.339 0.029 l
--0.625 0.029 -0.817 -0.096 -0.912 -0.339 c
--0.912 -2.97 l
--1.956 -2.97 l
--1.956 1.014 l
--0.985 1.014 l
--0.956 0.573 l
--0.79 0.914 -0.559 1.087 -0.265 1.087 c
--0.148 1.087 -0.056 1.065 0.014 1.028 c
-h
-2.072 -3.043 m
-1.543 -3.043 1.124 -2.889 0.823 -2.573 c
-0.529 -2.249 0.382 -1.79 0.382 -1.191 c
-0.382 -0.882 l
-0.382 -0.258 0.517 0.228 0.793 0.573 c
-1.065 0.914 1.458 1.087 1.969 1.087 c
-2.469 1.087 2.84 0.926 3.087 0.602 c
-3.34 0.278 3.472 -0.198 3.484 -0.823 c
-3.484 -1.324 l
-1.411 -1.324 l
-1.429 -1.617 1.492 -1.834 1.602 -1.97 c
-1.72 -2.11 1.899 -2.176 2.146 -2.176 c
-2.487 -2.176 2.778 -2.058 3.013 -1.823 c
-3.424 -2.455 l
-3.295 -2.631 3.108 -2.775 2.865 -2.881 c
-2.62 -2.988 2.355 -3.043 2.072 -3.043 c
-1.425 -0.603 m
-2.454 -0.603 l
-2.454 -0.5 l
-2.454 -0.265 2.414 -0.088 2.337 0.029 c
-2.267 0.154 2.138 0.22 1.955 0.22 c
-1.778 0.22 1.646 0.151 1.558 0.014 c
-1.477 -0.115 1.433 -0.32 1.425 -0.603 c
-4.307 -2.97 m
-4.307 0.22 l
-3.821 0.22 l
-3.821 1.014 l
-4.307 1.014 l
-4.307 1.367 l
-4.307 1.807 4.417 2.146 4.644 2.381 c
-4.88 2.624 5.196 2.748 5.6 2.748 c
-5.725 2.748 5.882 2.723 6.071 2.675 c
-6.071 1.851 l
-6 1.87 5.916 1.882 5.82 1.882 c
-5.504 1.882 5.35 1.697 5.35 1.337 c
-5.35 1.014 l
-5.967 1.014 l
-5.967 0.22 l
-5.35 0.22 l
-5.35 -2.97 l
-h
-f
-Q
-q 1 0 0 1 150.7798 379.244 cm
-0 0 m
-0.214 0 0.386 0.062 0.515 0.191 c
-0.65 0.327 0.723 0.518 0.735 0.764 c
-1.352 0.764 l
-1.33 0.382 1.194 0.062 0.941 -0.191 c
-0.684 -0.437 0.371 -0.559 0 -0.559 c
--0.492 -0.559 -0.867 -0.408 -1.132 -0.103 c
--1.389 0.21 -1.514 0.676 -1.514 1.294 c
--1.514 1.735 l
--1.514 2.329 -1.389 2.786 -1.132 3.102 c
--0.867 3.414 -0.492 3.572 0 3.572 c
-0.401 3.572 0.721 3.439 0.956 3.175 c
-1.198 2.917 1.33 2.572 1.352 2.132 c
-0.735 2.132 l
-0.713 2.425 0.64 2.645 0.515 2.793 c
-0.397 2.94 0.224 3.013 0 3.013 c
--0.294 3.013 -0.511 2.914 -0.647 2.72 c
--0.786 2.531 -0.86 2.223 -0.867 1.793 c
--0.867 1.278 l
--0.867 0.808 -0.802 0.474 -0.661 0.279 c
--0.515 0.092 -0.294 0 0 0 c
-4.145 -0.485 m
-4.104 -0.397 4.079 -0.25 4.072 -0.044 c
-3.836 -0.389 3.543 -0.559 3.19 -0.559 c
-2.826 -0.559 2.543 -0.463 2.337 -0.264 c
-2.138 -0.059 2.043 0.228 2.043 0.603 c
-2.043 1.003 2.179 1.323 2.454 1.558 c
-2.726 1.801 3.102 1.926 3.572 1.926 c
-4.056 1.926 l
-4.056 2.352 l
-4.056 2.587 4.002 2.753 3.896 2.851 c
-3.785 2.958 3.623 3.013 3.41 3.013 c
-3.212 3.013 3.05 2.955 2.925 2.837 c
-2.807 2.72 2.749 2.572 2.749 2.396 c
-2.102 2.396 l
-2.102 2.591 2.161 2.782 2.278 2.969 c
-2.404 3.152 2.565 3.3 2.763 3.41 c
-2.969 3.516 3.197 3.572 3.454 3.572 c
-3.855 3.572 4.16 3.468 4.366 3.263 c
-4.579 3.057 4.692 2.763 4.704 2.381 c
-4.704 0.368 l
-4.704 0.062 4.74 -0.202 4.821 -0.426 c
-4.821 -0.485 l
-h
-3.278 0.029 m
-3.443 0.029 3.594 0.073 3.734 0.162 c
-3.881 0.25 3.987 0.36 4.056 0.5 c
-4.056 1.44 l
-3.69 1.44 l
-3.373 1.44 3.131 1.371 2.955 1.234 c
-2.778 1.106 2.69 0.918 2.69 0.676 c
-2.69 0.448 2.734 0.283 2.822 0.176 c
-2.911 0.077 3.061 0.029 3.278 0.029 c
-6.321 3.499 m
-6.335 3.057 l
-6.589 3.399 6.913 3.572 7.306 3.572 c
-8.011 3.572 8.367 3.102 8.378 2.161 c
-8.378 -0.485 l
-7.732 -0.485 l
-7.732 2.132 l
-7.732 2.444 7.676 2.664 7.57 2.793 c
-7.46 2.917 7.306 2.984 7.1 2.984 c
-6.942 2.984 6.795 2.928 6.659 2.822 c
-6.53 2.712 6.427 2.576 6.35 2.41 c
-6.35 -0.485 l
-5.703 -0.485 l
-5.703 3.499 l
-h
-13.949 1.309 m
-13.949 0.69 13.835 0.224 13.612 -0.088 c
-13.394 -0.405 13.071 -0.559 12.641 -0.559 c
-12.218 -0.559 11.906 -0.378 11.7 -0.015 c
-11.671 -0.485 l
-11.069 -0.485 l
-11.069 5.159 l
-11.715 5.159 l
-11.715 3.057 l
-11.929 3.399 12.237 3.572 12.641 3.572 c
-13.071 3.572 13.394 3.414 13.612 3.102 c
-13.835 2.797 13.949 2.329 13.949 1.705 c
-h
-13.303 1.69 m
-13.303 2.161 13.232 2.491 13.097 2.69 c
-12.968 2.884 12.758 2.984 12.465 2.984 c
-12.13 2.984 11.881 2.8 11.715 2.44 c
-11.715 0.559 l
-11.881 0.195 12.134 0.015 12.48 0.015 c
-12.773 0.015 12.983 0.118 13.111 0.324 c
-13.236 0.529 13.303 0.845 13.303 1.278 c
-h
-16.213 -0.559 m
-15.713 -0.559 15.331 -0.412 15.067 -0.118 c
-14.802 0.176 14.67 0.61 14.67 1.191 c
-14.67 1.661 l
-14.67 2.256 14.795 2.722 15.052 3.057 c
-15.316 3.399 15.676 3.572 16.139 3.572 c
-16.598 3.572 16.941 3.418 17.168 3.116 c
-17.404 2.822 17.525 2.359 17.536 1.735 c
-17.536 1.309 l
-15.316 1.309 l
-15.316 1.22 l
-15.316 0.786 15.393 0.474 15.551 0.279 c
-15.717 0.092 15.948 0 16.243 0 c
-16.438 0 16.61 0.033 16.756 0.103 c
-16.904 0.18 17.04 0.297 17.168 0.455 c
-17.506 0.044 l
-17.22 -0.36 16.79 -0.559 16.213 -0.559 c
-16.139 3.013 m
-15.864 3.013 15.661 2.917 15.537 2.734 c
-15.408 2.547 15.335 2.256 15.316 1.866 c
-16.889 1.866 l
-16.889 1.955 l
-16.867 2.337 16.801 2.605 16.683 2.763 c
-16.565 2.928 16.382 3.013 16.139 3.013 c
-21.46 -0.559 m
-20.961 -0.559 20.579 -0.412 20.314 -0.118 c
-20.049 0.176 19.917 0.61 19.917 1.191 c
-19.917 1.661 l
-19.917 2.256 20.042 2.722 20.299 3.057 c
-20.564 3.399 20.924 3.572 21.387 3.572 c
-21.847 3.572 22.188 3.418 22.416 3.116 c
-22.651 2.822 22.772 2.359 22.784 1.735 c
-22.784 1.309 l
-20.564 1.309 l
-20.564 1.22 l
-20.564 0.786 20.641 0.474 20.799 0.279 c
-20.964 0.092 21.196 0 21.49 0 c
-21.685 0 21.857 0.033 22.005 0.103 c
-22.152 0.18 22.287 0.297 22.416 0.455 c
-22.754 0.044 l
-22.468 -0.36 22.038 -0.559 21.46 -0.559 c
-21.387 3.013 m
-21.111 3.013 20.91 2.917 20.785 2.734 c
-20.656 2.547 20.582 2.256 20.564 1.866 c
-22.137 1.866 l
-22.137 1.955 l
-22.115 2.337 22.048 2.605 21.931 2.763 c
-21.813 2.928 21.629 3.013 21.387 3.013 c
-23.607 -0.133 m
-23.607 -0.015 23.64 0.081 23.709 0.162 c
-23.775 0.239 23.879 0.279 24.018 0.279 c
-24.165 0.279 24.272 0.239 24.342 0.162 c
-24.419 0.081 24.459 -0.015 24.459 -0.133 c
-24.459 -0.243 24.419 -0.335 24.342 -0.412 c
-24.272 -0.489 24.165 -0.53 24.018 -0.53 c
-23.879 -0.53 23.775 -0.489 23.709 -0.412 c
-23.64 -0.335 23.607 -0.243 23.607 -0.133 c
-25.415 1.69 m
-25.415 2.308 25.525 2.77 25.753 3.087 c
-25.977 3.41 26.312 3.572 26.752 3.572 c
-27.153 3.572 27.457 3.395 27.663 3.042 c
-27.708 3.499 l
-28.296 3.499 l
-28.296 -0.53 l
-28.296 -1.018 28.167 -1.396 27.914 -1.661 c
-27.656 -1.926 27.303 -2.058 26.855 -2.058 c
-26.657 -2.058 26.436 -2.007 26.194 -1.911 c
-25.947 -1.812 25.768 -1.691 25.65 -1.544 c
-25.915 -1.103 l
-26.179 -1.367 26.476 -1.5 26.811 -1.5 c
-27.347 -1.5 27.623 -1.205 27.634 -0.617 c
-27.634 -0.088 l
-27.428 -0.405 27.127 -0.559 26.738 -0.559 c
-26.326 -0.559 26.003 -0.408 25.768 -0.103 c
-25.539 0.21 25.422 0.661 25.415 1.249 c
-h
-26.076 1.309 m
-26.076 0.867 26.138 0.536 26.267 0.324 c
-26.392 0.118 26.609 0.015 26.914 0.015 c
-27.237 0.015 27.476 0.18 27.634 0.515 c
-27.634 2.499 l
-27.465 2.822 27.226 2.984 26.914 2.984 c
-26.62 2.984 26.403 2.881 26.267 2.675 c
-26.138 2.469 26.076 2.146 26.076 1.705 c
-h
-29.296 -0.133 m
-29.296 -0.015 29.328 0.081 29.398 0.162 c
-29.464 0.239 29.567 0.279 29.707 0.279 c
-29.853 0.279 29.961 0.239 30.03 0.162 c
-30.107 0.081 30.148 -0.015 30.148 -0.133 c
-30.148 -0.243 30.107 -0.335 30.03 -0.412 c
-29.961 -0.489 29.853 -0.53 29.707 -0.53 c
-29.567 -0.53 29.464 -0.489 29.398 -0.412 c
-29.328 -0.335 29.296 -0.243 29.296 -0.133 c
-34.998 -0.485 m
-34.958 -0.397 34.932 -0.25 34.925 -0.044 c
-34.69 -0.389 34.395 -0.559 34.043 -0.559 c
-33.679 -0.559 33.396 -0.463 33.19 -0.264 c
-32.992 -0.059 32.897 0.228 32.897 0.603 c
-32.897 1.003 33.032 1.323 33.308 1.558 c
-33.58 1.801 33.955 1.926 34.425 1.926 c
-34.91 1.926 l
-34.91 2.352 l
-34.91 2.587 34.855 2.753 34.748 2.851 c
-34.638 2.958 34.476 3.013 34.264 3.013 c
-34.065 3.013 33.903 2.955 33.778 2.837 c
-33.661 2.72 33.602 2.572 33.602 2.396 c
-32.955 2.396 l
-32.955 2.591 33.014 2.782 33.132 2.969 c
-33.256 3.152 33.418 3.3 33.616 3.41 c
-33.822 3.516 34.05 3.572 34.308 3.572 c
-34.708 3.572 35.013 3.468 35.218 3.263 c
-35.432 3.057 35.546 2.763 35.557 2.381 c
-35.557 0.368 l
-35.557 0.062 35.594 -0.202 35.675 -0.426 c
-35.675 -0.485 l
-h
-34.131 0.029 m
-34.297 0.029 34.447 0.073 34.587 0.162 c
-34.734 0.25 34.84 0.36 34.91 0.5 c
-34.91 1.44 l
-34.543 1.44 l
-34.227 1.44 33.984 1.371 33.807 1.234 c
-33.631 1.106 33.543 0.918 33.543 0.676 c
-33.543 0.448 33.587 0.283 33.676 0.176 c
-33.764 0.077 33.915 0.029 34.131 0.029 c
-41.157 1.309 m
-41.157 0.69 41.044 0.224 40.82 -0.088 c
-40.602 -0.405 40.279 -0.559 39.849 -0.559 c
-39.426 -0.559 39.114 -0.378 38.908 -0.015 c
-38.879 -0.485 l
-38.276 -0.485 l
-38.276 5.159 l
-38.923 5.159 l
-38.923 3.057 l
-39.136 3.399 39.445 3.572 39.849 3.572 c
-40.279 3.572 40.602 3.414 40.82 3.102 c
-41.044 2.797 41.157 2.329 41.157 1.705 c
-h
-40.51 1.69 m
-40.51 2.161 40.441 2.491 40.305 2.69 c
-40.176 2.884 39.966 2.984 39.673 2.984 c
-39.338 2.984 39.089 2.8 38.923 2.44 c
-38.923 0.559 l
-39.089 0.195 39.342 0.015 39.687 0.015 c
-39.981 0.015 40.191 0.118 40.319 0.324 c
-40.444 0.529 40.51 0.845 40.51 1.278 c
-h
-43.642 2.881 m
-43.553 2.899 43.454 2.911 43.347 2.911 c
-43.013 2.911 42.778 2.726 42.642 2.367 c
-42.642 -0.485 l
-41.996 -0.485 l
-41.996 3.499 l
-42.627 3.499 l
-42.642 3.087 l
-42.819 3.41 43.06 3.572 43.377 3.572 c
-43.484 3.572 43.571 3.549 43.642 3.513 c
-h
-46.185 -0.485 m
-46.144 -0.397 46.118 -0.25 46.111 -0.044 c
-45.876 -0.389 45.582 -0.559 45.229 -0.559 c
-44.865 -0.559 44.583 -0.463 44.377 -0.264 c
-44.178 -0.059 44.082 0.228 44.082 0.603 c
-44.082 1.003 44.219 1.323 44.494 1.558 c
-44.766 1.801 45.14 1.926 45.611 1.926 c
-46.096 1.926 l
-46.096 2.352 l
-46.096 2.587 46.041 2.753 45.934 2.851 c
-45.824 2.958 45.663 3.013 45.449 3.013 c
-45.251 3.013 45.09 2.955 44.965 2.837 c
-44.847 2.72 44.788 2.572 44.788 2.396 c
-44.141 2.396 l
-44.141 2.591 44.2 2.782 44.317 2.969 c
-44.442 3.152 44.604 3.3 44.803 3.41 c
-45.009 3.516 45.236 3.572 45.493 3.572 c
-45.894 3.572 46.199 3.468 46.405 3.263 c
-46.618 3.057 46.732 2.763 46.743 2.381 c
-46.743 0.368 l
-46.743 0.062 46.78 -0.202 46.86 -0.426 c
-46.86 -0.485 l
-h
-45.317 0.029 m
-45.483 0.029 45.633 0.073 45.773 0.162 c
-45.919 0.25 46.027 0.36 46.096 0.5 c
-46.096 1.44 l
-45.728 1.44 l
-45.412 1.44 45.171 1.371 44.994 1.234 c
-44.818 1.106 44.729 0.918 44.729 0.676 c
-44.729 0.448 44.774 0.283 44.861 0.176 c
-44.949 0.077 45.1 0.029 45.317 0.029 c
-48.36 3.499 m
-48.375 3.057 l
-48.628 3.399 48.951 3.572 49.345 3.572 c
-50.05 3.572 50.407 3.102 50.418 2.161 c
-50.418 -0.485 l
-49.771 -0.485 l
-49.771 2.132 l
-49.771 2.444 49.716 2.664 49.609 2.793 c
-49.499 2.917 49.345 2.984 49.139 2.984 c
-48.981 2.984 48.834 2.928 48.698 2.822 c
-48.569 2.712 48.466 2.576 48.389 2.41 c
-48.389 -0.485 l
-47.743 -0.485 l
-47.743 3.499 l
-h
-52.77 0 m
-52.982 0 53.156 0.062 53.284 0.191 c
-53.42 0.327 53.493 0.518 53.505 0.764 c
-54.122 0.764 l
-54.1 0.382 53.964 0.062 53.711 -0.191 c
-53.453 -0.437 53.14 -0.559 52.77 -0.559 c
-52.277 -0.559 51.902 -0.408 51.638 -0.103 c
-51.38 0.21 51.255 0.676 51.255 1.294 c
-51.255 1.735 l
-51.255 2.329 51.38 2.786 51.638 3.102 c
-51.902 3.414 52.277 3.572 52.77 3.572 c
-53.17 3.572 53.49 3.439 53.725 3.175 c
-53.967 2.917 54.1 2.572 54.122 2.132 c
-53.505 2.132 l
-53.482 2.425 53.409 2.645 53.284 2.793 c
-53.167 2.94 52.994 3.013 52.77 3.013 c
-52.475 3.013 52.259 2.914 52.123 2.72 c
-51.983 2.531 51.91 2.223 51.902 1.793 c
-51.902 1.278 l
-51.902 0.808 51.968 0.474 52.109 0.279 c
-52.255 0.092 52.475 0 52.77 0 c
-55.519 3.087 m
-55.772 3.41 56.092 3.572 56.474 3.572 c
-57.179 3.572 57.536 3.102 57.547 2.161 c
-57.547 -0.485 l
-56.9 -0.485 l
-56.9 2.132 l
-56.9 2.444 56.845 2.664 56.738 2.793 c
-56.628 2.917 56.474 2.984 56.268 2.984 c
-56.109 2.984 55.963 2.928 55.827 2.822 c
-55.698 2.712 55.596 2.576 55.519 2.41 c
-55.519 -0.485 l
-54.871 -0.485 l
-54.871 5.159 l
-55.519 5.159 l
-h
-60.839 3.499 m
-60.854 3.057 l
-61.108 3.399 61.431 3.572 61.824 3.572 c
-62.53 3.572 62.887 3.102 62.897 2.161 c
-62.897 -0.485 l
-62.251 -0.485 l
-62.251 2.132 l
-62.251 2.444 62.195 2.664 62.089 2.793 c
-61.979 2.917 61.824 2.984 61.618 2.984 c
-61.46 2.984 61.314 2.928 61.177 2.822 c
-61.048 2.712 60.946 2.576 60.869 2.41 c
-60.869 -0.485 l
-60.222 -0.485 l
-60.222 3.499 l
-h
-65.91 -0.485 m
-65.87 -0.397 65.844 -0.25 65.837 -0.044 c
-65.602 -0.389 65.308 -0.559 64.955 -0.559 c
-64.591 -0.559 64.308 -0.463 64.103 -0.264 c
-63.904 -0.059 63.808 0.228 63.808 0.603 c
-63.808 1.003 63.945 1.323 64.221 1.558 c
-64.492 1.801 64.867 1.926 65.337 1.926 c
-65.823 1.926 l
-65.823 2.352 l
-65.823 2.587 65.767 2.753 65.661 2.851 c
-65.551 2.958 65.389 3.013 65.175 3.013 c
-64.977 3.013 64.815 2.955 64.691 2.837 c
-64.573 2.72 64.514 2.572 64.514 2.396 c
-63.868 2.396 l
-63.868 2.591 63.926 2.782 64.044 2.969 c
-64.169 3.152 64.331 3.3 64.529 3.41 c
-64.734 3.516 64.963 3.572 65.22 3.572 c
-65.62 3.572 65.925 3.468 66.131 3.263 c
-66.344 3.057 66.458 2.763 66.469 2.381 c
-66.469 0.368 l
-66.469 0.062 66.506 -0.202 66.586 -0.426 c
-66.586 -0.485 l
-h
-65.044 0.029 m
-65.208 0.029 65.36 0.073 65.499 0.162 c
-65.646 0.25 65.752 0.36 65.823 0.5 c
-65.823 1.44 l
-65.455 1.44 l
-65.139 1.44 64.896 1.371 64.72 1.234 c
-64.543 1.106 64.456 0.918 64.456 0.676 c
-64.456 0.448 64.499 0.283 64.587 0.176 c
-64.676 0.077 64.826 0.029 65.044 0.029 c
-68.086 3.499 m
-68.101 3.131 l
-68.343 3.425 68.663 3.572 69.056 3.572 c
-69.497 3.572 69.806 3.373 69.983 2.984 c
-70.236 3.373 70.585 3.572 71.026 3.572 c
-71.761 3.572 72.136 3.109 72.158 2.19 c
-72.158 -0.485 l
-71.511 -0.485 l
-71.511 2.132 l
-71.511 2.425 71.456 2.639 71.349 2.778 c
-71.25 2.914 71.078 2.984 70.835 2.984 c
-70.636 2.984 70.475 2.903 70.349 2.749 c
-70.232 2.602 70.162 2.41 70.143 2.175 c
-70.143 -0.485 l
-69.482 -0.485 l
-69.482 2.161 l
-69.482 2.708 69.262 2.984 68.821 2.984 c
-68.487 2.984 68.252 2.822 68.115 2.499 c
-68.115 -0.485 l
-67.469 -0.485 l
-67.469 3.499 l
-h
-74.554 -0.559 m
-74.054 -0.559 73.671 -0.412 73.407 -0.118 c
-73.142 0.176 73.01 0.61 73.01 1.191 c
-73.01 1.661 l
-73.01 2.256 73.135 2.722 73.393 3.057 c
-73.657 3.399 74.017 3.572 74.48 3.572 c
-74.939 3.572 75.281 3.418 75.509 3.116 c
-75.745 2.822 75.865 2.359 75.876 1.735 c
-75.876 1.309 l
-73.657 1.309 l
-73.657 1.22 l
-73.657 0.786 73.734 0.474 73.892 0.279 c
-74.058 0.092 74.289 0 74.583 0 c
-74.777 0 74.951 0.033 75.097 0.103 c
-75.244 0.18 75.381 0.297 75.509 0.455 c
-75.847 0.044 l
-75.56 -0.36 75.13 -0.559 74.554 -0.559 c
-74.48 3.013 m
-74.205 3.013 74.002 2.917 73.877 2.734 c
-73.748 2.547 73.675 2.256 73.657 1.866 c
-75.23 1.866 l
-75.23 1.955 l
-75.207 2.337 75.142 2.605 75.024 2.763 c
-74.906 2.928 74.723 3.013 74.48 3.013 c
-78.243 1.69 m
-78.243 2.267 78.379 2.722 78.654 3.057 c
-78.937 3.399 79.309 3.572 79.772 3.572 c
-80.231 3.572 80.599 3.403 80.874 3.072 c
-81.157 2.749 81.304 2.3 81.315 1.735 c
-81.315 1.309 l
-81.315 0.738 81.172 0.283 80.889 -0.059 c
-80.613 -0.393 80.246 -0.559 79.786 -0.559 c
-79.323 -0.559 78.952 -0.397 78.669 -0.073 c
-78.394 0.257 78.251 0.698 78.243 1.249 c
-h
-78.889 1.309 m
-78.889 0.904 78.967 0.588 79.125 0.353 c
-79.29 0.118 79.51 0 79.786 0 c
-80.352 0 80.647 0.411 80.668 1.234 c
-80.668 1.69 l
-80.668 2.091 80.584 2.41 80.418 2.645 c
-80.26 2.888 80.044 3.013 79.772 3.013 c
-79.508 3.013 79.29 2.888 79.125 2.645 c
-78.967 2.41 78.889 2.091 78.889 1.69 c
-h
-83.799 2.881 m
-83.711 2.899 83.612 2.911 83.506 2.911 c
-83.171 2.911 82.936 2.726 82.8 2.367 c
-82.8 -0.485 l
-82.153 -0.485 l
-82.153 3.499 l
-82.785 3.499 l
-82.8 3.087 l
-82.976 3.41 83.219 3.572 83.535 3.572 c
-83.641 3.572 83.73 3.549 83.799 3.513 c
-h
-88.209 -0.485 m
-88.169 -0.397 88.143 -0.25 88.135 -0.044 c
-87.9 -0.389 87.606 -0.559 87.254 -0.559 c
-86.89 -0.559 86.606 -0.463 86.401 -0.264 c
-86.203 -0.059 86.107 0.228 86.107 0.603 c
-86.107 1.003 86.243 1.323 86.519 1.558 c
-86.791 1.801 87.165 1.926 87.636 1.926 c
-88.121 1.926 l
-88.121 2.352 l
-88.121 2.587 88.065 2.753 87.959 2.851 c
-87.849 2.958 87.687 3.013 87.474 3.013 c
-87.275 3.013 87.113 2.955 86.989 2.837 c
-86.872 2.72 86.812 2.572 86.812 2.396 c
-86.166 2.396 l
-86.166 2.591 86.224 2.782 86.342 2.969 c
-86.467 3.152 86.629 3.3 86.827 3.41 c
-87.033 3.516 87.261 3.572 87.518 3.572 c
-87.919 3.572 88.223 3.468 88.43 3.263 c
-88.643 3.057 88.757 2.763 88.767 2.381 c
-88.767 0.368 l
-88.767 0.062 88.804 -0.202 88.885 -0.426 c
-88.885 -0.485 l
-h
-87.342 0.029 m
-87.507 0.029 87.658 0.073 87.797 0.162 c
-87.944 0.25 88.051 0.36 88.121 0.5 c
-88.121 1.44 l
-87.753 1.44 l
-87.437 1.44 87.194 1.371 87.018 1.234 c
-86.842 1.106 86.754 0.918 86.754 0.676 c
-86.754 0.448 86.798 0.283 86.886 0.176 c
-86.974 0.077 87.125 0.029 87.342 0.029 c
-92.339 4.453 m
-92.339 3.499 l
-92.942 3.499 l
-92.942 2.969 l
-92.339 2.969 l
-92.339 0.5 l
-92.339 0.341 92.362 0.224 92.413 0.147 c
-92.472 0.066 92.56 0.029 92.678 0.029 c
-92.765 0.029 92.854 0.044 92.942 0.073 c
-92.942 -0.485 l
-92.795 -0.532 92.641 -0.559 92.486 -0.559 c
-92.229 -0.559 92.034 -0.467 91.898 -0.279 c
-91.759 -0.096 91.693 0.166 91.693 0.5 c
-91.693 2.969 l
-91.09 2.969 l
-91.09 3.499 l
-91.693 3.499 l
-91.693 4.453 l
-h
-95.749 -0.485 m
-95.709 -0.397 95.684 -0.25 95.676 -0.044 c
-95.441 -0.389 95.147 -0.559 94.795 -0.559 c
-94.43 -0.559 94.147 -0.463 93.941 -0.264 c
-93.743 -0.059 93.648 0.228 93.648 0.603 c
-93.648 1.003 93.783 1.323 94.059 1.558 c
-94.331 1.801 94.706 1.926 95.176 1.926 c
-95.661 1.926 l
-95.661 2.352 l
-95.661 2.587 95.606 2.753 95.5 2.851 c
-95.389 2.958 95.228 3.013 95.015 3.013 c
-94.816 3.013 94.654 2.955 94.529 2.837 c
-94.412 2.72 94.353 2.572 94.353 2.396 c
-93.706 2.396 l
-93.706 2.591 93.765 2.782 93.883 2.969 c
-94.008 3.152 94.169 3.3 94.367 3.41 c
-94.573 3.516 94.801 3.572 95.059 3.572 c
-95.46 3.572 95.764 3.468 95.97 3.263 c
-96.183 3.057 96.297 2.763 96.308 2.381 c
-96.308 0.368 l
-96.308 0.062 96.345 -0.202 96.426 -0.426 c
-96.426 -0.485 l
-h
-94.882 0.029 m
-95.048 0.029 95.198 0.073 95.338 0.162 c
-95.485 0.25 95.591 0.36 95.661 0.5 c
-95.661 1.44 l
-95.294 1.44 l
-94.978 1.44 94.735 1.371 94.559 1.234 c
-94.383 1.106 94.294 0.918 94.294 0.676 c
-94.294 0.448 94.338 0.283 94.427 0.176 c
-94.515 0.077 94.666 0.029 94.882 0.029 c
-97.176 1.69 m
-97.176 2.308 97.286 2.77 97.513 3.087 c
-97.737 3.41 98.072 3.572 98.513 3.572 c
-98.913 3.572 99.219 3.395 99.424 3.042 c
-99.468 3.499 l
-100.056 3.499 l
-100.056 -0.53 l
-100.056 -1.018 99.928 -1.396 99.674 -1.661 c
-99.417 -1.926 99.065 -2.058 98.616 -2.058 c
-98.417 -2.058 98.197 -2.007 97.954 -1.911 c
-97.708 -1.812 97.528 -1.691 97.411 -1.544 c
-97.675 -1.103 l
-97.939 -1.367 98.238 -1.5 98.572 -1.5 c
-99.108 -1.5 99.383 -1.205 99.395 -0.617 c
-99.395 -0.088 l
-99.189 -0.405 98.888 -0.559 98.498 -0.559 c
-98.087 -0.559 97.764 -0.408 97.528 -0.103 c
-97.301 0.21 97.183 0.661 97.176 1.249 c
-h
-97.837 1.309 m
-97.837 0.867 97.899 0.536 98.028 0.324 c
-98.153 0.118 98.369 0.015 98.675 0.015 c
-98.998 0.015 99.237 0.18 99.395 0.515 c
-99.395 2.499 l
-99.226 2.822 98.987 2.984 98.675 2.984 c
-98.381 2.984 98.164 2.881 98.028 2.675 c
-97.899 2.469 97.837 2.146 97.837 1.705 c
-h
-103.349 3.499 m
-103.364 3.057 l
-103.617 3.399 103.94 3.572 104.334 3.572 c
-105.039 3.572 105.396 3.102 105.407 2.161 c
-105.407 -0.485 l
-104.76 -0.485 l
-104.76 2.132 l
-104.76 2.444 104.705 2.664 104.598 2.793 c
-104.488 2.917 104.334 2.984 104.128 2.984 c
-103.97 2.984 103.823 2.928 103.687 2.822 c
-103.558 2.712 103.456 2.576 103.379 2.41 c
-103.379 -0.485 l
-102.732 -0.485 l
-102.732 3.499 l
-h
-108.42 -0.485 m
-108.38 -0.397 108.354 -0.25 108.347 -0.044 c
-108.112 -0.389 107.817 -0.559 107.464 -0.559 c
-107.101 -0.559 106.818 -0.463 106.612 -0.264 c
-106.414 -0.059 106.319 0.228 106.319 0.603 c
-106.319 1.003 106.454 1.323 106.73 1.558 c
-107.002 1.801 107.377 1.926 107.847 1.926 c
-108.332 1.926 l
-108.332 2.352 l
-108.332 2.587 108.277 2.753 108.17 2.851 c
-108.06 2.958 107.898 3.013 107.686 3.013 c
-107.487 3.013 107.325 2.955 107.2 2.837 c
-107.082 2.72 107.024 2.572 107.024 2.396 c
-106.377 2.396 l
-106.377 2.591 106.436 2.782 106.554 2.969 c
-106.678 3.152 106.84 3.3 107.038 3.41 c
-107.244 3.516 107.472 3.572 107.73 3.572 c
-108.13 3.572 108.435 3.468 108.64 3.263 c
-108.854 3.057 108.968 2.763 108.979 2.381 c
-108.979 0.368 l
-108.979 0.062 109.016 -0.202 109.097 -0.426 c
-109.097 -0.485 l
-h
-107.553 0.029 m
-107.718 0.029 107.869 0.073 108.008 0.162 c
-108.156 0.25 108.262 0.36 108.332 0.5 c
-108.332 1.44 l
-107.965 1.44 l
-107.649 1.44 107.406 1.371 107.229 1.234 c
-107.053 1.106 106.965 0.918 106.965 0.676 c
-106.965 0.448 107.009 0.283 107.098 0.176 c
-107.185 0.077 107.336 0.029 107.553 0.029 c
-110.595 3.499 m
-110.61 3.131 l
-110.853 3.425 111.173 3.572 111.566 3.572 c
-112.006 3.572 112.316 3.373 112.492 2.984 c
-112.746 3.373 113.095 3.572 113.535 3.572 c
-114.271 3.572 114.645 3.109 114.668 2.19 c
-114.668 -0.485 l
-114.02 -0.485 l
-114.02 2.132 l
-114.02 2.425 113.965 2.639 113.859 2.778 c
-113.76 2.914 113.587 2.984 113.344 2.984 c
-113.146 2.984 112.984 2.903 112.86 2.749 c
-112.742 2.602 112.671 2.41 112.654 2.175 c
-112.654 -0.485 l
-111.992 -0.485 l
-111.992 2.161 l
-111.992 2.708 111.771 2.984 111.331 2.984 c
-110.996 2.984 110.761 2.822 110.625 2.499 c
-110.625 -0.485 l
-109.978 -0.485 l
-109.978 3.499 l
-h
-117.063 -0.559 m
-116.563 -0.559 116.181 -0.412 115.917 -0.118 c
-115.652 0.176 115.52 0.61 115.52 1.191 c
-115.52 1.661 l
-115.52 2.256 115.645 2.722 115.902 3.057 c
-116.166 3.399 116.527 3.572 116.989 3.572 c
-117.449 3.572 117.791 3.418 118.019 3.116 c
-118.254 2.822 118.375 2.359 118.386 1.735 c
-118.386 1.309 l
-116.166 1.309 l
-116.166 1.22 l
-116.166 0.786 116.243 0.474 116.401 0.279 c
-116.567 0.092 116.798 0 117.093 0 c
-117.288 0 117.46 0.033 117.607 0.103 c
-117.754 0.18 117.89 0.297 118.019 0.455 c
-118.356 0.044 l
-118.07 -0.36 117.64 -0.559 117.063 -0.559 c
-116.989 3.013 m
-116.714 3.013 116.512 2.917 116.387 2.734 c
-116.258 2.547 116.185 2.256 116.166 1.866 c
-117.739 1.866 l
-117.739 1.955 l
-117.718 2.337 117.651 2.605 117.533 2.763 c
-117.416 2.928 117.232 3.013 116.989 3.013 c
-119.21 -0.133 m
-119.21 -0.015 119.242 0.081 119.312 0.162 c
-119.378 0.239 119.481 0.279 119.621 0.279 c
-119.767 0.279 119.875 0.239 119.944 0.162 c
-120.021 0.081 120.062 -0.015 120.062 -0.133 c
-120.062 -0.243 120.021 -0.335 119.944 -0.412 c
-119.875 -0.489 119.767 -0.53 119.621 -0.53 c
-119.481 -0.53 119.378 -0.489 119.312 -0.412 c
-119.242 -0.335 119.21 -0.243 119.21 -0.133 c
-f
-Q
-0.113 0.082 0.09 0 k
-35.668 373.53 238.665 -12.898 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 40.8563 366.6908 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.646 -0.243 -0.775 -0.367 -0.882 c
--0.496 -0.993 -0.658 -1.08 -0.852 -1.147 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.161 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.926 c
--3.127 -0.819 -3.23 -0.691 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.213 -3.484 -0.014 c
--2.66 0.133 l
--2.642 0.033 -2.616 -0.058 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.367 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.684 -1.992 0.691 -1.999 0.691 c
--2.167 0.728 -2.329 0.771 -2.484 0.823 c
--2.642 0.882 -2.786 0.96 -2.91 1.058 c
--3.039 1.154 -3.142 1.279 -3.219 1.426 c
--3.289 1.573 -3.322 1.756 -3.322 1.985 c
--3.322 2.18 -3.289 2.344 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.837 c
--2.8 2.932 -2.645 3.003 -2.469 3.043 c
--2.293 3.09 -2.102 3.12 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.12 -1.128 3.09 -0.97 3.043 c
--0.804 2.992 -0.669 2.918 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.202 2.344 -0.143 2.182 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.253 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.353 c
--1.294 1.312 -1.117 1.264 -0.941 1.205 c
--0.756 1.147 -0.595 1.066 -0.455 0.97 c
--0.32 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.455 c
--2.26 2.425 -2.319 2.385 -2.366 2.338 c
--2.406 2.297 -2.437 2.249 -2.454 2.19 c
--2.477 2.132 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.779 c
--2.41 1.72 -2.373 1.669 -2.322 1.632 c
--2.263 1.592 -2.201 1.558 -2.131 1.529 c
--2.065 1.5 -1.984 1.47 -1.896 1.44 c
-h
--0.837 -0.014 m
--0.837 0.092 -0.86 0.177 -0.897 0.235 c
--0.926 0.301 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.53 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.529 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.014 c
-6.402 -2.66 m
-6.185 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.396 c
-5.284 -2.315 5.185 -2.219 5.108 -2.102 c
-5.039 -1.984 4.991 -1.855 4.961 -1.72 c
-5.858 -1.617 l
-5.895 -1.753 5.964 -1.859 6.064 -1.94 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.057 6.681 -2.028 c
-6.758 -1.999 6.828 -1.944 6.887 -1.866 c
-6.945 -1.797 6.99 -1.705 7.019 -1.587 c
-7.056 -1.469 7.078 -1.323 7.078 -1.147 c
-7.078 -0.955 l
-7.078 -0.889 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.072 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.215 -0.897 5.108 -0.75 c
-5.009 -0.596 4.935 -0.411 4.888 -0.206 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.771 4.836 1.018 4.888 1.235 c
-4.946 1.448 5.027 1.632 5.137 1.779 c
-5.245 1.933 5.376 2.051 5.534 2.132 c
-5.689 2.22 5.876 2.263 6.093 2.263 c
-6.188 2.263 6.288 2.253 6.387 2.234 c
-6.483 2.213 6.571 2.18 6.652 2.132 c
-6.739 2.08 6.817 2.018 6.887 1.941 c
-6.964 1.86 7.026 1.768 7.078 1.661 c
-7.092 1.661 l
-7.092 1.808 l
-7.1 1.867 7.107 1.918 7.107 1.97 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.152 2.22 c
-8.004 2.22 l
-7.993 2.139 7.982 2.028 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.161 l
-7.975 -1.415 7.938 -1.635 7.871 -1.822 c
-7.802 -2.007 7.699 -2.161 7.563 -2.279 c
-7.423 -2.404 7.258 -2.499 7.063 -2.558 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.53 m
-7.092 0.742 7.067 0.919 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.5 6.729 1.558 6.652 1.588 c
-6.571 1.625 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.621 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.367 c
-5.88 1.279 5.835 1.162 5.799 1.014 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.338 c
-6.049 -0.515 6.211 -0.602 6.417 -0.602 c
-6.483 -0.602 6.556 -0.588 6.637 -0.559 c
-6.725 -0.522 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.176 7.019 -0.029 c
-7.067 0.118 7.092 0.301 7.092 0.53 c
-11.036 -0.646 m
-12.168 -0.646 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.646 l
-10.124 -0.646 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.22 l
-11.036 2.22 l
-h
-10.124 3.514 0.912 -0.676 re
-10.124 2.837 m
-13.6 1.602 m
-13.057 1.602 l
-13.057 2.22 l
-13.644 2.22 l
-13.924 3.117 l
-14.497 3.117 l
-14.497 2.22 l
-15.732 2.22 l
-15.732 1.602 l
-14.497 1.602 l
-14.497 -0.103 l
-14.497 -0.324 l
-14.504 -0.393 14.527 -0.455 14.556 -0.515 c
-14.593 -0.565 14.648 -0.61 14.718 -0.646 c
-14.795 -0.676 14.909 -0.691 15.056 -0.691 c
-15.192 -0.691 15.327 -0.687 15.468 -0.676 c
-15.603 -0.658 15.736 -0.632 15.865 -0.602 c
-15.865 -1.205 l
-15.784 -1.216 15.707 -1.23 15.629 -1.249 c
-15.549 -1.261 15.471 -1.267 15.394 -1.278 c
-15.313 -1.286 15.225 -1.294 15.129 -1.294 c
-15.041 -1.301 14.942 -1.308 14.835 -1.308 c
-14.648 -1.308 14.486 -1.294 14.35 -1.264 c
-14.221 -1.228 14.107 -1.183 14.012 -1.132 c
-13.924 -1.084 13.85 -1.025 13.791 -0.955 c
-13.733 -0.878 13.689 -0.801 13.66 -0.72 c
-13.63 -0.632 13.608 -0.544 13.6 -0.455 c
-13.59 -0.36 13.586 -0.264 13.586 -0.176 c
-h
-23.221 -0.646 m
-24.353 -0.646 l
-24.353 -1.264 l
-21.045 -1.264 l
-21.045 -0.646 l
-22.31 -0.646 l
-22.31 2.896 l
-21.384 2.896 l
-21.384 3.514 l
-23.221 3.514 l
-h
-28.384 0.485 m
-28.384 0.21 28.347 -0.04 28.281 -0.264 c
-28.212 -0.482 28.108 -0.669 27.973 -0.823 c
-27.833 -0.981 27.657 -1.103 27.443 -1.19 c
-27.227 -1.278 26.973 -1.323 26.679 -1.323 c
-26.404 -1.323 26.157 -1.278 25.944 -1.19 c
-25.739 -1.103 25.566 -0.981 25.43 -0.823 c
-25.29 -0.669 25.187 -0.482 25.121 -0.264 c
-25.051 -0.04 25.018 0.21 25.018 0.485 c
-25.018 0.738 25.047 0.974 25.106 1.191 c
-25.172 1.415 25.275 1.606 25.415 1.764 c
-25.55 1.929 25.727 2.058 25.944 2.146 c
-26.157 2.234 26.414 2.278 26.709 2.278 c
-27.021 2.278 27.281 2.234 27.487 2.146 c
-27.701 2.058 27.873 1.929 28.002 1.764 c
-28.138 1.606 28.237 1.415 28.296 1.191 c
-28.355 0.974 28.384 0.738 28.384 0.485 c
-27.429 0.485 m
-27.429 0.691 27.414 0.867 27.385 1.014 c
-27.362 1.162 27.326 1.282 27.267 1.382 c
-27.208 1.477 27.135 1.547 27.046 1.588 c
-26.959 1.635 26.848 1.661 26.724 1.661 c
-26.458 1.661 26.267 1.562 26.15 1.367 c
-26.032 1.18 25.974 0.886 25.974 0.485 c
-25.974 0.063 26.032 -0.243 26.15 -0.426 c
-26.267 -0.613 26.444 -0.706 26.679 -0.706 c
-26.804 -0.706 26.918 -0.687 27.017 -0.646 c
-27.113 -0.599 27.194 -0.525 27.252 -0.426 c
-27.318 -0.33 27.362 -0.206 27.385 -0.058 c
-27.414 0.088 27.429 0.268 27.429 0.485 c
-30.769 -2.66 m
-30.552 -2.66 30.361 -2.635 30.196 -2.587 c
-30.027 -2.547 29.887 -2.484 29.77 -2.396 c
-29.652 -2.315 29.552 -2.219 29.475 -2.102 c
-29.406 -1.984 29.358 -1.855 29.328 -1.72 c
-30.225 -1.617 l
-30.262 -1.753 30.331 -1.859 30.431 -1.94 c
-30.526 -2.028 30.651 -2.072 30.799 -2.072 c
-30.886 -2.072 30.967 -2.057 31.048 -2.028 c
-31.125 -1.999 31.195 -1.944 31.254 -1.866 c
-31.313 -1.797 31.357 -1.705 31.387 -1.587 c
-31.424 -1.469 31.445 -1.323 31.445 -1.147 c
-31.445 -0.955 l
-31.445 -0.889 31.449 -0.831 31.46 -0.779 c
-31.46 -0.588 l
-31.445 -0.588 l
-31.346 -0.816 31.202 -0.977 31.019 -1.072 c
-30.832 -1.172 30.626 -1.22 30.402 -1.22 c
-30.196 -1.22 30.012 -1.183 29.858 -1.103 c
-29.71 -1.014 29.582 -0.897 29.475 -0.75 c
-29.376 -0.596 29.303 -0.411 29.255 -0.206 c
-29.203 0.008 29.182 0.243 29.182 0.5 c
-29.182 0.771 29.203 1.018 29.255 1.235 c
-29.313 1.448 29.394 1.632 29.505 1.779 c
-29.612 1.933 29.743 2.051 29.901 2.132 c
-30.056 2.22 30.244 2.263 30.46 2.263 c
-30.556 2.263 30.655 2.253 30.755 2.234 c
-30.85 2.213 30.938 2.18 31.019 2.132 c
-31.107 2.08 31.185 2.018 31.254 1.941 c
-31.331 1.86 31.393 1.768 31.445 1.661 c
-31.46 1.661 l
-31.46 1.808 l
-31.467 1.867 31.474 1.918 31.474 1.97 c
-31.482 2.028 31.489 2.076 31.489 2.117 c
-31.497 2.165 31.507 2.198 31.519 2.22 c
-32.371 2.22 l
-32.36 2.139 32.349 2.028 32.342 1.881 c
-32.342 1.411 l
-32.342 -1.161 l
-32.342 -1.415 32.305 -1.635 32.239 -1.822 c
-32.17 -2.007 32.066 -2.161 31.931 -2.279 c
-31.79 -2.404 31.625 -2.499 31.43 -2.558 c
-31.232 -2.624 31.011 -2.66 30.769 -2.66 c
-31.46 0.53 m
-31.46 0.742 31.434 0.919 31.387 1.058 c
-31.346 1.205 31.291 1.323 31.225 1.411 c
-31.166 1.5 31.096 1.558 31.019 1.588 c
-30.938 1.625 30.861 1.646 30.784 1.646 c
-30.684 1.646 30.593 1.621 30.504 1.573 c
-30.424 1.532 30.358 1.463 30.298 1.367 c
-30.248 1.279 30.203 1.162 30.167 1.014 c
-30.137 0.875 30.122 0.706 30.122 0.5 c
-30.122 0.125 30.181 -0.154 30.298 -0.338 c
-30.416 -0.515 30.578 -0.602 30.784 -0.602 c
-30.85 -0.602 30.923 -0.588 31.004 -0.559 c
-31.092 -0.522 31.166 -0.463 31.225 -0.382 c
-31.291 -0.294 31.346 -0.176 31.387 -0.029 c
-31.434 0.118 31.46 0.301 31.46 0.53 c
-38.424 -0.279 0.926 -0.985 re
-38.424 -1.264 m
-42.484 -0.279 0.927 -0.985 re
-42.484 -1.264 m
-48.5 1.47 m
-48.4 1.477 48.298 1.488 48.191 1.5 c
-48.081 1.517 47.96 1.529 47.823 1.529 c
-47.648 1.529 47.489 1.488 47.353 1.411 c
-47.214 1.341 47.096 1.242 47 1.118 c
-46.912 0.989 46.842 0.842 46.794 0.676 c
-46.754 0.507 46.736 0.331 46.736 0.147 c
-46.736 -1.264 l
-45.839 -1.264 l
-45.839 0.985 l
-45.839 1.11 45.828 1.235 45.81 1.353 c
-45.799 1.477 45.784 1.595 45.766 1.706 c
-45.755 1.823 45.74 1.918 45.722 1.999 c
-45.699 2.087 45.681 2.161 45.663 2.22 c
-46.545 2.22 l
-46.552 2.168 46.563 2.117 46.574 2.058 c
-46.593 1.999 46.607 1.933 46.618 1.867 c
-46.637 1.808 46.651 1.742 46.663 1.675 c
-46.67 1.606 46.68 1.544 46.692 1.484 c
-46.707 1.484 l
-46.743 1.602 46.794 1.709 46.854 1.808 c
-46.919 1.904 47 1.988 47.089 2.058 c
-47.177 2.124 47.28 2.18 47.397 2.22 c
-47.522 2.257 47.669 2.278 47.838 2.278 c
-47.964 2.278 48.081 2.271 48.191 2.263 c
-48.309 2.253 48.411 2.238 48.5 2.22 c
-h
-51.106 -1.323 m
-50.848 -1.323 50.62 -1.286 50.414 -1.22 c
-50.208 -1.143 50.032 -1.029 49.886 -0.882 c
-49.738 -0.727 49.62 -0.536 49.533 -0.309 c
-49.452 -0.085 49.415 0.181 49.415 0.485 c
-49.415 0.816 49.459 1.095 49.547 1.323 c
-49.643 1.558 49.772 1.742 49.93 1.881 c
-50.094 2.018 50.282 2.117 50.488 2.176 c
-50.694 2.242 50.903 2.278 51.12 2.278 c
-51.392 2.278 51.627 2.227 51.825 2.132 c
-52.031 2.043 52.197 1.911 52.325 1.735 c
-52.461 1.565 52.56 1.359 52.619 1.118 c
-52.685 0.882 52.722 0.617 52.722 0.324 c
-52.722 0.309 l
-50.356 0.309 l
-50.356 0.162 50.37 0.023 50.4 -0.103 c
-50.437 -0.231 50.491 -0.345 50.561 -0.441 c
-50.628 -0.529 50.712 -0.599 50.811 -0.646 c
-50.907 -0.698 51.021 -0.72 51.149 -0.72 c
-51.303 -0.72 51.443 -0.687 51.561 -0.617 c
-51.686 -0.551 51.774 -0.448 51.825 -0.309 c
-52.664 -0.382 l
-52.633 -0.482 52.579 -0.588 52.502 -0.706 c
-52.421 -0.816 52.318 -0.918 52.193 -1.014 c
-52.076 -1.103 51.921 -1.176 51.737 -1.234 c
-51.561 -1.294 51.347 -1.323 51.106 -1.323 c
-51.106 1.706 m
-51.017 1.706 50.929 1.69 50.84 1.661 c
-50.752 1.632 50.672 1.58 50.605 1.515 c
-50.536 1.444 50.477 1.357 50.429 1.249 c
-50.389 1.139 50.37 1.014 50.37 0.867 c
-51.84 0.867 l
-51.84 1.004 51.814 1.124 51.767 1.235 c
-51.727 1.341 51.671 1.43 51.605 1.5 c
-51.546 1.565 51.473 1.617 51.384 1.646 c
-51.297 1.683 51.201 1.706 51.106 1.706 c
-55.258 1.602 m
-55.258 -1.264 l
-54.361 -1.264 l
-54.361 1.602 l
-53.537 1.602 l
-53.537 2.22 l
-54.361 2.22 l
-54.361 2.484 l
-54.361 2.61 54.376 2.741 54.405 2.881 c
-54.442 3.017 54.512 3.135 54.611 3.234 c
-54.717 3.341 54.861 3.429 55.037 3.499 c
-55.214 3.564 55.438 3.601 55.713 3.601 c
-55.926 3.601 56.125 3.591 56.301 3.572 c
-56.477 3.55 56.629 3.532 56.757 3.514 c
-56.757 2.926 l
-56.629 2.944 56.485 2.959 56.331 2.969 c
-56.172 2.976 56.022 2.984 55.875 2.984 c
-55.746 2.984 55.644 2.969 55.567 2.94 c
-55.486 2.911 55.423 2.87 55.376 2.822 c
-55.324 2.77 55.291 2.708 55.272 2.631 c
-55.261 2.562 55.258 2.484 55.258 2.396 c
-55.258 2.22 l
-56.683 2.22 l
-56.683 1.602 l
-h
-f
-Q
-q 1 0 0 1 60.3663 351.1103 cm
-0 0 m
-2.102 0 l
-2.102 -0.574 l
--0.676 -0.574 l
--0.676 4.777 l
-0 4.777 l
-h
-3.513 -0.574 -0.647 3.984 re
-3.557 4.453 m
-3.557 4.343 3.528 4.251 3.469 4.174 c
-3.41 4.104 3.314 4.072 3.189 4.072 c
-3.072 4.072 2.977 4.104 2.91 4.174 c
-2.851 4.251 2.822 4.343 2.822 4.453 c
-2.822 4.571 2.851 4.663 2.91 4.733 c
-2.977 4.81 3.072 4.85 3.189 4.85 c
-3.314 4.85 3.41 4.81 3.469 4.733 c
-3.528 4.652 3.557 4.56 3.557 4.453 c
-6.468 0.44 m
-6.468 0.588 6.412 0.709 6.306 0.808 c
-6.196 0.904 5.99 1.022 5.688 1.161 c
-5.342 1.308 5.1 1.429 4.953 1.529 c
-4.806 1.635 4.696 1.753 4.629 1.881 c
-4.56 2.006 4.527 2.164 4.527 2.352 c
-4.527 2.674 4.644 2.944 4.88 3.16 c
-5.115 3.373 5.416 3.484 5.791 3.484 c
-6.173 3.484 6.482 3.37 6.717 3.145 c
-6.952 2.917 7.07 2.631 7.07 2.278 c
-6.423 2.278 l
-6.423 2.454 6.364 2.605 6.247 2.734 c
-6.129 2.859 5.975 2.925 5.791 2.925 c
-5.593 2.925 5.442 2.869 5.335 2.763 c
-5.225 2.664 5.174 2.532 5.174 2.366 c
-5.174 2.238 5.211 2.131 5.292 2.043 c
-5.369 1.962 5.56 1.859 5.865 1.734 c
-6.342 1.547 6.673 1.359 6.85 1.176 c
-7.025 0.999 7.114 0.771 7.114 0.5 c
-7.114 0.147 6.989 -0.133 6.746 -0.339 c
-6.511 -0.544 6.196 -0.647 5.805 -0.647 c
-5.383 -0.647 5.045 -0.53 4.791 -0.294 c
-4.534 -0.052 4.409 0.253 4.409 0.617 c
-5.056 0.617 l
-5.063 0.389 5.134 0.213 5.262 0.087 c
-5.387 -0.03 5.57 -0.088 5.805 -0.088 c
-6.019 -0.088 6.181 -0.04 6.291 0.058 c
-6.408 0.154 6.468 0.282 6.468 0.44 c
-8.804 4.365 m
-8.804 3.41 l
-9.407 3.41 l
-9.407 2.881 l
-8.804 2.881 l
-8.804 0.411 l
-8.804 0.253 8.826 0.135 8.878 0.058 c
-8.937 -0.023 9.025 -0.059 9.142 -0.059 c
-9.231 -0.059 9.319 -0.044 9.407 -0.015 c
-9.407 -0.574 l
-9.26 -0.621 9.105 -0.647 8.951 -0.647 c
-8.694 -0.647 8.5 -0.555 8.363 -0.368 c
-8.224 -0.184 8.157 0.077 8.157 0.411 c
-8.157 2.881 l
-7.555 2.881 l
-7.555 3.41 l
-8.157 3.41 l
-8.157 4.365 l
-h
-13.273 -0.088 m
-13.486 -0.088 13.659 -0.026 13.787 0.103 c
-13.923 0.239 13.996 0.43 14.008 0.675 c
-14.625 0.675 l
-14.603 0.294 14.467 -0.026 14.214 -0.279 c
-13.957 -0.526 13.644 -0.647 13.273 -0.647 c
-12.781 -0.647 12.406 -0.497 12.141 -0.191 c
-11.883 0.121 11.759 0.588 11.759 1.205 c
-11.759 1.646 l
-11.759 2.241 11.883 2.697 12.141 3.013 c
-12.406 3.326 12.781 3.484 13.273 3.484 c
-13.674 3.484 13.993 3.351 14.229 3.087 c
-14.47 2.829 14.603 2.484 14.625 2.043 c
-14.008 2.043 l
-13.986 2.337 13.913 2.557 13.787 2.705 c
-13.67 2.851 13.497 2.925 13.273 2.925 c
-12.978 2.925 12.762 2.826 12.626 2.631 c
-12.486 2.443 12.413 2.135 12.406 1.705 c
-12.406 1.19 l
-12.406 0.72 12.471 0.386 12.612 0.191 c
-12.758 0.004 12.978 -0.088 13.273 -0.088 c
-15.243 1.602 m
-15.243 2.179 15.378 2.634 15.654 2.969 c
-15.937 3.31 16.309 3.484 16.771 3.484 c
-17.231 3.484 17.598 3.314 17.874 2.984 c
-18.156 2.66 18.304 2.212 18.314 1.646 c
-18.314 1.22 l
-18.314 0.65 18.171 0.195 17.888 -0.148 c
-17.613 -0.482 17.246 -0.647 16.786 -0.647 c
-16.323 -0.647 15.952 -0.485 15.669 -0.162 c
-15.393 0.168 15.249 0.61 15.243 1.161 c
-h
-15.889 1.22 m
-15.889 0.816 15.966 0.5 16.124 0.264 c
-16.29 0.029 16.51 -0.088 16.786 -0.088 c
-17.352 -0.088 17.645 0.323 17.668 1.146 c
-17.668 1.602 l
-17.668 2.003 17.583 2.322 17.418 2.557 c
-17.26 2.8 17.043 2.925 16.771 2.925 c
-16.506 2.925 16.29 2.8 16.124 2.557 c
-15.966 2.322 15.889 2.003 15.889 1.602 c
-h
-19.77 3.41 m
-19.785 3.042 l
-20.027 3.337 20.346 3.484 20.74 3.484 c
-21.181 3.484 21.489 3.285 21.666 2.896 c
-21.919 3.285 22.268 3.484 22.709 3.484 c
-23.444 3.484 23.82 3.021 23.841 2.102 c
-23.841 -0.574 l
-23.195 -0.574 l
-23.195 2.043 l
-23.195 2.337 23.139 2.55 23.033 2.69 c
-22.933 2.826 22.761 2.896 22.518 2.896 c
-22.32 2.896 22.158 2.815 22.033 2.66 c
-21.915 2.514 21.846 2.322 21.828 2.087 c
-21.828 -0.574 l
-21.167 -0.574 l
-21.167 2.072 l
-21.167 2.62 20.946 2.896 20.504 2.896 c
-20.17 2.896 19.935 2.734 19.799 2.41 c
-19.799 -0.574 l
-19.153 -0.574 l
-19.153 3.41 l
-h
-25.429 3.41 m
-25.443 3.042 l
-25.686 3.337 26.006 3.484 26.399 3.484 c
-26.84 3.484 27.149 3.285 27.325 2.896 c
-27.579 3.285 27.928 3.484 28.369 3.484 c
-29.104 3.484 29.479 3.021 29.501 2.102 c
-29.501 -0.574 l
-28.853 -0.574 l
-28.853 2.043 l
-28.853 2.337 28.799 2.55 28.693 2.69 c
-28.593 2.826 28.42 2.896 28.178 2.896 c
-27.979 2.896 27.818 2.815 27.693 2.66 c
-27.575 2.514 27.505 2.322 27.487 2.087 c
-27.487 -0.574 l
-26.825 -0.574 l
-26.825 2.072 l
-26.825 2.62 26.605 2.896 26.164 2.896 c
-25.83 2.896 25.595 2.734 25.458 2.41 c
-25.458 -0.574 l
-24.812 -0.574 l
-24.812 3.41 l
-h
-31.176 -0.574 -0.646 3.984 re
-31.22 4.453 m
-31.22 4.343 31.191 4.251 31.132 4.174 c
-31.074 4.104 30.978 4.072 30.852 4.072 c
-30.735 4.072 30.64 4.104 30.574 4.174 c
-30.515 4.251 30.486 4.343 30.486 4.453 c
-30.486 4.571 30.515 4.663 30.574 4.733 c
-30.64 4.81 30.735 4.85 30.852 4.85 c
-30.978 4.85 31.074 4.81 31.132 4.733 c
-31.191 4.652 31.22 4.56 31.22 4.453 c
-33.043 4.365 m
-33.043 3.41 l
-33.646 3.41 l
-33.646 2.881 l
-33.043 2.881 l
-33.043 0.411 l
-33.043 0.253 33.065 0.135 33.117 0.058 c
-33.175 -0.023 33.264 -0.059 33.381 -0.059 c
-33.47 -0.059 33.557 -0.044 33.646 -0.015 c
-33.646 -0.574 l
-33.499 -0.621 33.344 -0.647 33.19 -0.647 c
-32.932 -0.647 32.738 -0.555 32.602 -0.368 c
-32.462 -0.184 32.396 0.077 32.396 0.411 c
-32.396 2.881 l
-31.793 2.881 l
-31.793 3.41 l
-32.396 3.41 l
-32.396 4.365 l
-h
-34.424 -1.646 m
-34.027 -1.382 l
-34.263 -1.058 34.384 -0.724 34.395 -0.383 c
-34.395 0.235 l
-35.057 0.235 l
-35.057 -0.294 l
-35.057 -0.551 34.991 -0.798 34.866 -1.044 c
-34.748 -1.287 34.601 -1.488 34.424 -1.646 c
-38.467 4.365 m
-38.467 3.41 l
-39.07 3.41 l
-39.07 2.881 l
-38.467 2.881 l
-38.467 0.411 l
-38.467 0.253 38.489 0.135 38.54 0.058 c
-38.599 -0.023 38.688 -0.059 38.805 -0.059 c
-38.893 -0.059 38.981 -0.044 39.07 -0.015 c
-39.07 -0.574 l
-38.923 -0.621 38.768 -0.647 38.614 -0.647 c
-38.357 -0.647 38.162 -0.555 38.026 -0.368 c
-37.886 -0.184 37.821 0.077 37.821 0.411 c
-37.821 2.881 l
-37.218 2.881 l
-37.218 3.41 l
-37.821 3.41 l
-37.821 4.365 l
-h
-40.481 2.998 m
-40.734 3.322 41.054 3.484 41.436 3.484 c
-42.141 3.484 42.498 3.013 42.509 2.072 c
-42.509 -0.574 l
-41.863 -0.574 l
-41.863 2.043 l
-41.863 2.356 41.807 2.576 41.701 2.705 c
-41.59 2.829 41.436 2.896 41.231 2.896 c
-41.073 2.896 40.925 2.84 40.79 2.734 c
-40.661 2.624 40.558 2.487 40.481 2.322 c
-40.481 -0.574 l
-39.834 -0.574 l
-39.834 5.071 l
-40.481 5.071 l
-h
-45.508 -0.574 m
-45.468 -0.485 45.441 -0.339 45.434 -0.133 c
-45.199 -0.478 44.905 -0.647 44.552 -0.647 c
-44.188 -0.647 43.905 -0.551 43.7 -0.353 c
-43.502 -0.148 43.406 0.139 43.406 0.515 c
-43.406 0.914 43.542 1.234 43.818 1.469 c
-44.09 1.712 44.464 1.837 44.934 1.837 c
-45.42 1.837 l
-45.42 2.263 l
-45.42 2.499 45.364 2.664 45.258 2.763 c
-45.148 2.869 44.986 2.925 44.773 2.925 c
-44.574 2.925 44.412 2.866 44.288 2.749 c
-44.171 2.631 44.111 2.484 44.111 2.308 c
-43.465 2.308 l
-43.465 2.502 43.523 2.693 43.641 2.881 c
-43.766 3.064 43.928 3.212 44.126 3.322 c
-44.332 3.428 44.56 3.484 44.817 3.484 c
-45.218 3.484 45.522 3.38 45.728 3.175 c
-45.942 2.969 46.056 2.674 46.066 2.293 c
-46.066 0.279 l
-46.066 -0.026 46.103 -0.291 46.184 -0.515 c
-46.184 -0.574 l
-h
-44.641 -0.059 m
-44.806 -0.059 44.957 -0.015 45.096 0.073 c
-45.243 0.162 45.35 0.272 45.42 0.411 c
-45.42 1.352 l
-45.052 1.352 l
-44.736 1.352 44.493 1.282 44.317 1.146 c
-44.14 1.018 44.053 0.83 44.053 0.588 c
-44.053 0.359 44.097 0.195 44.185 0.087 c
-44.273 -0.011 44.424 -0.059 44.641 -0.059 c
-47.918 4.365 m
-47.918 3.41 l
-48.521 3.41 l
-48.521 2.881 l
-47.918 2.881 l
-47.918 0.411 l
-47.918 0.253 47.94 0.135 47.992 0.058 c
-48.051 -0.023 48.139 -0.059 48.256 -0.059 c
-48.345 -0.059 48.433 -0.044 48.521 -0.015 c
-48.521 -0.574 l
-48.374 -0.621 48.219 -0.647 48.065 -0.647 c
-47.808 -0.647 47.614 -0.555 47.477 -0.368 c
-47.338 -0.184 47.272 0.077 47.272 0.411 c
-47.272 2.881 l
-46.669 2.881 l
-46.669 3.41 l
-47.272 3.41 l
-47.272 4.365 l
-h
-53.048 -0.574 m
-53.008 -0.485 52.982 -0.339 52.975 -0.133 c
-52.74 -0.478 52.446 -0.647 52.093 -0.647 c
-51.729 -0.647 51.446 -0.551 51.24 -0.353 c
-51.042 -0.148 50.947 0.139 50.947 0.515 c
-50.947 0.914 51.082 1.234 51.358 1.469 c
-51.63 1.712 52.005 1.837 52.475 1.837 c
-52.96 1.837 l
-52.96 2.263 l
-52.96 2.499 52.905 2.664 52.799 2.763 c
-52.688 2.869 52.527 2.925 52.314 2.925 c
-52.115 2.925 51.953 2.866 51.828 2.749 c
-51.711 2.631 51.652 2.484 51.652 2.308 c
-51.005 2.308 l
-51.005 2.502 51.064 2.693 51.182 2.881 c
-51.307 3.064 51.468 3.212 51.666 3.322 c
-51.872 3.428 52.1 3.484 52.358 3.484 c
-52.759 3.484 53.063 3.38 53.269 3.175 c
-53.482 2.969 53.596 2.674 53.607 2.293 c
-53.607 0.279 l
-53.607 -0.026 53.644 -0.291 53.725 -0.515 c
-53.725 -0.574 l
-h
-52.181 -0.059 m
-52.346 -0.059 52.497 -0.015 52.637 0.073 c
-52.784 0.162 52.89 0.272 52.96 0.411 c
-52.96 1.352 l
-52.593 1.352 l
-52.277 1.352 52.034 1.282 51.858 1.146 c
-51.681 1.018 51.593 0.83 51.593 0.588 c
-51.593 0.359 51.637 0.195 51.726 0.087 c
-51.814 -0.011 51.965 -0.059 52.181 -0.059 c
-56.252 2.792 m
-56.165 2.811 56.065 2.822 55.959 2.822 c
-55.624 2.822 55.389 2.638 55.253 2.278 c
-55.253 -0.574 l
-54.606 -0.574 l
-54.606 3.41 l
-55.238 3.41 l
-55.253 2.998 l
-55.429 3.322 55.672 3.484 55.988 3.484 c
-56.094 3.484 56.183 3.461 56.252 3.424 c
-h
-58.252 -0.647 m
-57.752 -0.647 57.37 -0.5 57.106 -0.206 c
-56.84 0.087 56.709 0.521 56.709 1.103 c
-56.709 1.573 l
-56.709 2.167 56.834 2.634 57.091 2.969 c
-57.355 3.31 57.715 3.484 58.178 3.484 c
-58.638 3.484 58.98 3.329 59.207 3.027 c
-59.443 2.734 59.564 2.271 59.575 1.646 c
-59.575 1.22 l
-57.355 1.22 l
-57.355 1.132 l
-57.355 0.698 57.432 0.386 57.59 0.191 c
-57.756 0.004 57.987 -0.088 58.282 -0.088 c
-58.476 -0.088 58.649 -0.056 58.796 0.014 c
-58.943 0.091 59.078 0.209 59.207 0.367 c
-59.545 -0.044 l
-59.259 -0.449 58.829 -0.647 58.252 -0.647 c
-58.178 2.925 m
-57.903 2.925 57.701 2.829 57.576 2.645 c
-57.447 2.458 57.374 2.167 57.355 1.778 c
-58.928 1.778 l
-58.928 1.866 l
-58.906 2.248 58.839 2.516 58.722 2.674 c
-58.604 2.84 58.421 2.925 58.178 2.925 c
-64.954 1.22 m
-64.954 0.592 64.837 0.121 64.602 -0.191 c
-64.374 -0.497 64.058 -0.647 63.647 -0.647 c
-63.242 -0.647 62.934 -0.497 62.72 -0.191 c
-62.72 -2.103 l
-62.074 -2.103 l
-62.074 3.41 l
-62.662 3.41 l
-62.706 2.969 l
-62.919 3.31 63.227 3.484 63.632 3.484 c
-64.073 3.484 64.4 3.329 64.617 3.027 c
-64.83 2.722 64.944 2.267 64.954 1.66 c
-h
-64.308 1.602 m
-64.308 2.043 64.238 2.366 64.102 2.572 c
-63.963 2.786 63.742 2.896 63.441 2.896 c
-63.125 2.896 62.886 2.741 62.72 2.439 c
-62.72 0.367 l
-62.886 0.062 63.125 -0.088 63.441 -0.088 c
-63.735 -0.088 63.948 0.014 64.088 0.22 c
-64.223 0.434 64.297 0.764 64.308 1.205 c
-h
-67.439 2.792 m
-67.35 2.811 67.252 2.822 67.145 2.822 c
-66.81 2.822 66.575 2.638 66.44 2.278 c
-66.44 -0.574 l
-65.792 -0.574 l
-65.792 3.41 l
-66.425 3.41 l
-66.44 2.998 l
-66.616 3.322 66.858 3.484 67.174 3.484 c
-67.281 3.484 67.369 3.461 67.439 3.424 c
-h
-69.438 -0.647 m
-68.938 -0.647 68.556 -0.5 68.291 -0.206 c
-68.027 0.087 67.894 0.521 67.894 1.103 c
-67.894 1.573 l
-67.894 2.167 68.019 2.634 68.277 2.969 c
-68.541 3.31 68.902 3.484 69.364 3.484 c
-69.824 3.484 70.166 3.329 70.394 3.027 c
-70.629 2.734 70.75 2.271 70.761 1.646 c
-70.761 1.22 l
-68.541 1.22 l
-68.541 1.132 l
-68.541 0.698 68.618 0.386 68.777 0.191 c
-68.942 0.004 69.173 -0.088 69.467 -0.088 c
-69.662 -0.088 69.835 -0.056 69.982 0.014 c
-70.128 0.091 70.265 0.209 70.394 0.367 c
-70.731 -0.044 l
-70.444 -0.449 70.015 -0.647 69.438 -0.647 c
-69.364 2.925 m
-69.089 2.925 68.887 2.829 68.761 2.645 c
-68.634 2.458 68.559 2.167 68.541 1.778 c
-70.114 1.778 l
-70.114 1.866 l
-70.092 2.248 70.026 2.516 69.908 2.674 c
-69.791 2.84 69.607 2.925 69.364 2.925 c
-73.48 0.44 m
-73.48 0.588 73.425 0.709 73.318 0.808 c
-73.208 0.904 73.002 1.022 72.701 1.161 c
-72.356 1.308 72.113 1.429 71.967 1.529 c
-71.819 1.635 71.709 1.753 71.643 1.881 c
-71.573 2.006 71.539 2.164 71.539 2.352 c
-71.539 2.674 71.657 2.944 71.892 3.16 c
-72.127 3.373 72.429 3.484 72.804 3.484 c
-73.186 3.484 73.495 3.37 73.73 3.145 c
-73.966 2.917 74.083 2.631 74.083 2.278 c
-73.436 2.278 l
-73.436 2.454 73.378 2.605 73.26 2.734 c
-73.142 2.859 72.988 2.925 72.804 2.925 c
-72.605 2.925 72.455 2.869 72.348 2.763 c
-72.238 2.664 72.187 2.532 72.187 2.366 c
-72.187 2.238 72.223 2.131 72.304 2.043 c
-72.381 1.962 72.572 1.859 72.877 1.734 c
-73.355 1.547 73.686 1.359 73.862 1.176 c
-74.039 0.999 74.126 0.771 74.126 0.5 c
-74.126 0.147 74.002 -0.133 73.76 -0.339 c
-73.524 -0.544 73.208 -0.647 72.819 -0.647 c
-72.396 -0.647 72.058 -0.53 71.805 -0.294 c
-71.547 -0.052 71.422 0.253 71.422 0.617 c
-72.069 0.617 l
-72.077 0.389 72.146 0.213 72.275 0.087 c
-72.399 -0.03 72.584 -0.088 72.819 -0.088 c
-73.031 -0.088 73.193 -0.04 73.303 0.058 c
-73.421 0.154 73.48 0.282 73.48 0.44 c
-76.391 -0.647 m
-75.89 -0.647 75.508 -0.5 75.244 -0.206 c
-74.98 0.087 74.847 0.521 74.847 1.103 c
-74.847 1.573 l
-74.847 2.167 74.972 2.634 75.229 2.969 c
-75.494 3.31 75.854 3.484 76.317 3.484 c
-76.777 3.484 77.118 3.329 77.346 3.027 c
-77.581 2.734 77.702 2.271 77.714 1.646 c
-77.714 1.22 l
-75.494 1.22 l
-75.494 1.132 l
-75.494 0.698 75.571 0.386 75.73 0.191 c
-75.894 0.004 76.126 -0.088 76.42 -0.088 c
-76.615 -0.088 76.788 -0.056 76.935 0.014 c
-77.081 0.091 77.218 0.209 77.346 0.367 c
-77.684 -0.044 l
-77.397 -0.449 76.968 -0.647 76.391 -0.647 c
-76.317 2.925 m
-76.042 2.925 75.84 2.829 75.714 2.645 c
-75.586 2.458 75.512 2.167 75.494 1.778 c
-77.066 1.778 l
-77.066 1.866 l
-77.045 2.248 76.979 2.516 76.861 2.674 c
-76.744 2.84 76.559 2.925 76.317 2.925 c
-79.11 3.41 m
-79.125 2.969 l
-79.378 3.31 79.701 3.484 80.095 3.484 c
-80.8 3.484 81.157 3.013 81.168 2.072 c
-81.168 -0.574 l
-80.521 -0.574 l
-80.521 2.043 l
-80.521 2.356 80.466 2.576 80.359 2.705 c
-80.249 2.829 80.095 2.896 79.889 2.896 c
-79.73 2.896 79.584 2.84 79.448 2.734 c
-79.319 2.624 79.217 2.487 79.14 2.322 c
-79.14 -0.574 l
-78.492 -0.574 l
-78.492 3.41 l
-h
-82.99 4.365 m
-82.99 3.41 l
-83.593 3.41 l
-83.593 2.881 l
-82.99 2.881 l
-82.99 0.411 l
-82.99 0.253 83.013 0.135 83.064 0.058 c
-83.123 -0.023 83.211 -0.059 83.329 -0.059 c
-83.416 -0.059 83.505 -0.044 83.593 -0.015 c
-83.593 -0.574 l
-83.446 -0.621 83.292 -0.647 83.138 -0.647 c
-82.88 -0.647 82.685 -0.555 82.55 -0.368 c
-82.41 -0.184 82.344 0.077 82.344 0.411 c
-82.344 2.881 l
-81.741 2.881 l
-81.741 3.41 l
-82.344 3.41 l
-82.344 4.365 l
-h
-85.945 1.602 m
-85.945 2.179 86.08 2.634 86.356 2.969 c
-86.639 3.31 87.011 3.484 87.474 3.484 c
-87.933 3.484 88.301 3.314 88.576 2.984 c
-88.859 2.66 89.006 2.212 89.017 1.646 c
-89.017 1.22 l
-89.017 0.65 88.874 0.195 88.59 -0.148 c
-88.315 -0.482 87.948 -0.647 87.489 -0.647 c
-87.025 -0.647 86.654 -0.485 86.371 -0.162 c
-86.096 0.168 85.953 0.61 85.945 1.161 c
-h
-86.591 1.22 m
-86.591 0.816 86.668 0.5 86.826 0.264 c
-86.992 0.029 87.213 -0.088 87.489 -0.088 c
-88.054 -0.088 88.349 0.323 88.37 1.146 c
-88.37 1.602 l
-88.37 2.003 88.286 2.322 88.12 2.557 c
-87.962 2.8 87.746 2.925 87.474 2.925 c
-87.209 2.925 86.992 2.8 86.826 2.557 c
-86.668 2.322 86.591 2.003 86.591 1.602 c
-h
-90.472 3.41 m
-90.487 2.969 l
-90.741 3.31 91.064 3.484 91.457 3.484 c
-92.162 3.484 92.519 3.013 92.53 2.072 c
-92.53 -0.574 l
-91.883 -0.574 l
-91.883 2.043 l
-91.883 2.356 91.828 2.576 91.722 2.705 c
-91.611 2.829 91.457 2.896 91.252 2.896 c
-91.094 2.896 90.946 2.84 90.811 2.734 c
-90.682 2.624 90.579 2.487 90.502 2.322 c
-90.502 -0.574 l
-89.855 -0.574 l
-89.855 3.41 l
-h
-f
-Q
-q 1 0 0 1 157.4383 353.5063 cm
-0 0 m
--0.338 0.029 l
--0.625 0.029 -0.816 -0.096 -0.912 -0.339 c
--0.912 -2.97 l
--1.955 -2.97 l
--1.955 1.014 l
--0.985 1.014 l
--0.956 0.573 l
--0.79 0.914 -0.559 1.087 -0.264 1.087 c
--0.147 1.087 -0.056 1.065 0.015 1.028 c
-h
-2.072 -3.043 m
-1.544 -3.043 1.124 -2.889 0.823 -2.573 c
-0.53 -2.249 0.382 -1.79 0.382 -1.191 c
-0.382 -0.882 l
-0.382 -0.258 0.518 0.228 0.794 0.573 c
-1.066 0.914 1.459 1.087 1.97 1.087 c
-2.469 1.087 2.841 0.926 3.087 0.602 c
-3.341 0.278 3.472 -0.198 3.484 -0.823 c
-3.484 -1.324 l
-1.411 -1.324 l
-1.43 -1.617 1.492 -1.834 1.602 -1.97 c
-1.72 -2.11 1.9 -2.176 2.146 -2.176 c
-2.488 -2.176 2.778 -2.058 3.013 -1.823 c
-3.425 -2.455 l
-3.296 -2.631 3.109 -2.775 2.866 -2.881 c
-2.62 -2.988 2.356 -3.043 2.072 -3.043 c
-1.426 -0.603 m
-2.454 -0.603 l
-2.454 -0.5 l
-2.454 -0.265 2.414 -0.088 2.337 0.029 c
-2.267 0.154 2.138 0.22 1.955 0.22 c
-1.779 0.22 1.646 0.151 1.558 0.014 c
-1.477 -0.115 1.433 -0.32 1.426 -0.603 c
-4.307 -2.97 m
-4.307 0.22 l
-3.822 0.22 l
-3.822 1.014 l
-4.307 1.014 l
-4.307 1.367 l
-4.307 1.807 4.417 2.146 4.645 2.381 c
-4.881 2.624 5.196 2.748 5.6 2.748 c
-5.725 2.748 5.883 2.723 6.071 2.674 c
-6.071 1.851 l
-6.001 1.87 5.916 1.881 5.821 1.881 c
-5.505 1.881 5.351 1.697 5.351 1.337 c
-5.351 1.014 l
-5.968 1.014 l
-5.968 0.22 l
-5.351 0.22 l
-5.351 -2.97 l
-h
-f
-Q
-q 1 0 0 1 167.8457 350.5364 cm
-0 0 m
--0.04 0.088 -0.067 0.235 -0.074 0.441 c
--0.31 0.096 -0.603 -0.073 -0.956 -0.073 c
--1.32 -0.073 -1.603 0.023 -1.808 0.221 c
--2.007 0.426 -2.103 0.713 -2.103 1.088 c
--2.103 1.488 -1.966 1.808 -1.691 2.043 c
--1.419 2.286 -1.044 2.411 -0.574 2.411 c
--0.088 2.411 l
--0.088 2.837 l
--0.088 3.072 -0.144 3.238 -0.25 3.337 c
--0.36 3.443 -0.522 3.499 -0.736 3.499 c
--0.934 3.499 -1.095 3.44 -1.22 3.323 c
--1.338 3.205 -1.397 3.057 -1.397 2.882 c
--2.043 2.882 l
--2.043 3.076 -1.985 3.267 -1.867 3.454 c
--1.742 3.638 -1.58 3.786 -1.382 3.896 c
--1.176 4.002 -0.948 4.057 -0.691 4.057 c
--0.291 4.057 0.014 3.954 0.22 3.749 c
-0.433 3.543 0.548 3.248 0.558 2.866 c
-0.558 0.853 l
-0.558 0.548 0.595 0.283 0.675 0.059 c
-0.675 0 l
-h
--0.867 0.515 m
--0.703 0.515 -0.551 0.559 -0.412 0.647 c
--0.265 0.736 -0.158 0.846 -0.088 0.985 c
--0.088 1.926 l
--0.456 1.926 l
--0.772 1.926 -1.015 1.856 -1.191 1.72 c
--1.368 1.592 -1.455 1.404 -1.455 1.162 c
--1.455 0.933 -1.411 0.769 -1.324 0.661 c
--1.235 0.563 -1.085 0.515 -0.867 0.515 c
-2.175 3.984 m
-2.19 3.543 l
-2.443 3.884 2.767 4.057 3.16 4.057 c
-3.865 4.057 4.222 3.587 4.233 2.646 c
-4.233 0 l
-3.586 0 l
-3.586 2.617 l
-3.586 2.929 3.531 3.15 3.424 3.279 c
-3.314 3.403 3.16 3.469 2.954 3.469 c
-2.796 3.469 2.649 3.414 2.513 3.308 c
-2.385 3.198 2.281 3.061 2.204 2.896 c
-2.204 0 l
-1.558 0 l
-1.558 3.984 l
-h
-5.071 2.176 m
-5.071 2.782 5.181 3.248 5.409 3.572 c
-5.644 3.896 5.971 4.057 6.393 4.057 c
-6.776 4.057 7.073 3.899 7.291 3.587 c
-7.291 5.644 l
-7.937 5.644 l
-7.937 0 l
-7.349 0 l
-7.305 0.426 l
-7.099 0.092 6.794 -0.073 6.393 -0.073 c
-5.982 -0.073 5.659 0.081 5.423 0.397 c
-5.188 0.721 5.071 1.176 5.071 1.764 c
-h
-5.718 1.794 m
-5.718 1.353 5.78 1.022 5.909 0.809 c
-6.044 0.603 6.265 0.5 6.57 0.5 c
-6.894 0.5 7.133 0.661 7.291 0.985 c
-7.291 2.999 l
-7.121 3.311 6.882 3.469 6.57 3.469 c
-6.265 3.469 6.044 3.366 5.909 3.161 c
-5.78 2.955 5.718 2.631 5.718 2.19 c
-h
-11.274 3.984 m
-11.289 3.543 l
-11.542 3.884 11.866 4.057 12.259 4.057 c
-12.964 4.057 13.321 3.587 13.331 2.646 c
-13.331 0 l
-12.685 0 l
-12.685 2.617 l
-12.685 2.929 12.629 3.15 12.523 3.279 c
-12.413 3.403 12.259 3.469 12.053 3.469 c
-11.895 3.469 11.748 3.414 11.612 3.308 c
-11.484 3.198 11.38 3.061 11.303 2.896 c
-11.303 0 l
-10.657 0 l
-10.657 3.984 l
-h
-14.169 2.176 m
-14.169 2.753 14.306 3.208 14.581 3.543 c
-14.864 3.884 15.235 4.057 15.698 4.057 c
-16.157 4.057 16.525 3.888 16.801 3.558 c
-17.084 3.234 17.231 2.786 17.242 2.22 c
-17.242 1.794 l
-17.242 1.224 17.098 0.769 16.816 0.426 c
-16.54 0.092 16.172 -0.073 15.713 -0.073 c
-15.249 -0.073 14.879 0.088 14.596 0.412 c
-14.32 0.742 14.177 1.183 14.169 1.735 c
-h
-14.817 1.794 m
-14.817 1.389 14.894 1.073 15.052 0.838 c
-15.216 0.603 15.438 0.485 15.713 0.485 c
-16.279 0.485 16.573 0.897 16.595 1.72 c
-16.595 2.176 l
-16.595 2.577 16.51 2.896 16.345 3.131 c
-16.187 3.374 15.97 3.499 15.698 3.499 c
-15.434 3.499 15.216 3.374 15.052 3.131 c
-14.894 2.896 14.817 2.577 14.817 2.176 c
-h
-18.932 4.939 m
-18.932 3.984 l
-19.534 3.984 l
-19.534 3.454 l
-18.932 3.454 l
-18.932 0.985 l
-18.932 0.827 18.954 0.709 19.006 0.632 c
-19.064 0.551 19.152 0.515 19.27 0.515 c
-19.359 0.515 19.446 0.53 19.534 0.559 c
-19.534 0 l
-19.388 -0.047 19.233 -0.073 19.079 -0.073 c
-18.821 -0.073 18.627 0.019 18.491 0.206 c
-18.351 0.389 18.285 0.651 18.285 0.985 c
-18.285 3.454 l
-17.682 3.454 l
-17.682 3.984 l
-18.285 3.984 l
-18.285 4.939 l
-h
-22.636 3.984 m
-22.651 3.616 l
-22.894 3.911 23.213 4.057 23.606 4.057 c
-24.047 4.057 24.356 3.859 24.533 3.469 c
-24.786 3.859 25.135 4.057 25.576 4.057 c
-26.311 4.057 26.686 3.595 26.708 2.676 c
-26.708 0 l
-26.061 0 l
-26.061 2.617 l
-26.061 2.911 26.006 3.124 25.899 3.263 c
-25.8 3.4 25.628 3.469 25.385 3.469 c
-25.186 3.469 25.025 3.389 24.899 3.234 c
-24.782 3.088 24.712 2.896 24.694 2.66 c
-24.694 0 l
-24.032 0 l
-24.032 2.646 l
-24.032 3.194 23.812 3.469 23.371 3.469 c
-23.037 3.469 22.802 3.308 22.665 2.984 c
-22.665 0 l
-22.019 0 l
-22.019 3.984 l
-h
-29.104 -0.073 m
-28.604 -0.073 28.222 0.073 27.957 0.368 c
-27.693 0.661 27.56 1.095 27.56 1.676 c
-27.56 2.147 l
-27.56 2.741 27.685 3.208 27.943 3.543 c
-28.207 3.884 28.567 4.057 29.03 4.057 c
-29.489 4.057 29.831 3.903 30.059 3.601 c
-30.295 3.308 30.416 2.845 30.426 2.22 c
-30.426 1.794 l
-28.207 1.794 l
-28.207 1.706 l
-28.207 1.272 28.284 0.96 28.442 0.765 c
-28.608 0.578 28.839 0.485 29.133 0.485 c
-29.328 0.485 29.501 0.518 29.647 0.588 c
-29.794 0.665 29.931 0.783 30.059 0.941 c
-30.397 0.53 l
-30.11 0.125 29.68 -0.073 29.104 -0.073 c
-29.03 3.499 m
-28.755 3.499 28.552 3.403 28.427 3.219 c
-28.299 3.032 28.225 2.741 28.207 2.352 c
-29.78 2.352 l
-29.78 2.44 l
-29.757 2.822 29.692 3.09 29.574 3.248 c
-29.456 3.414 29.273 3.499 29.03 3.499 c
-32.852 3.366 m
-32.764 3.385 32.664 3.396 32.558 3.396 c
-32.223 3.396 31.988 3.212 31.852 2.852 c
-31.852 0 l
-31.205 0 l
-31.205 3.984 l
-31.837 3.984 l
-31.852 3.572 l
-32.028 3.896 32.271 4.057 32.587 4.057 c
-32.693 4.057 32.782 4.035 32.852 3.998 c
-h
-33.293 2.176 m
-33.293 2.793 33.403 3.256 33.631 3.572 c
-33.855 3.896 34.189 4.057 34.63 4.057 c
-35.031 4.057 35.336 3.881 35.542 3.528 c
-35.586 3.984 l
-36.174 3.984 l
-36.174 -0.044 l
-36.174 -0.532 36.045 -0.911 35.791 -1.176 c
-35.535 -1.44 35.182 -1.573 34.733 -1.573 c
-34.535 -1.573 34.314 -1.521 34.072 -1.425 c
-33.826 -1.326 33.646 -1.205 33.528 -1.058 c
-33.792 -0.617 l
-34.058 -0.881 34.355 -1.014 34.69 -1.014 c
-35.226 -1.014 35.502 -0.72 35.513 -0.132 c
-35.513 0.397 l
-35.307 0.081 35.005 -0.073 34.615 -0.073 c
-34.204 -0.073 33.881 0.077 33.646 0.383 c
-33.418 0.695 33.3 1.147 33.293 1.735 c
-h
-33.954 1.794 m
-33.954 1.353 34.017 1.022 34.145 0.809 c
-34.27 0.603 34.487 0.5 34.792 0.5 c
-35.116 0.5 35.355 0.665 35.513 1 c
-35.513 2.984 l
-35.344 3.308 35.105 3.469 34.792 3.469 c
-34.498 3.469 34.281 3.366 34.145 3.161 c
-34.017 2.955 33.954 2.631 33.954 2.19 c
-h
-38.555 -0.073 m
-38.056 -0.073 37.673 0.073 37.408 0.368 c
-37.144 0.661 37.012 1.095 37.012 1.676 c
-37.012 2.147 l
-37.012 2.741 37.137 3.208 37.394 3.543 c
-37.659 3.884 38.019 4.057 38.482 4.057 c
-38.941 4.057 39.282 3.903 39.511 3.601 c
-39.746 3.308 39.867 2.845 39.878 2.22 c
-39.878 1.794 l
-37.659 1.794 l
-37.659 1.706 l
-37.659 1.272 37.736 0.96 37.894 0.765 c
-38.059 0.578 38.291 0.485 38.584 0.485 c
-38.779 0.485 38.952 0.518 39.099 0.588 c
-39.246 0.665 39.382 0.783 39.511 0.941 c
-39.849 0.53 l
-39.562 0.125 39.132 -0.073 38.555 -0.073 c
-38.482 3.499 m
-38.206 3.499 38.004 3.403 37.879 3.219 c
-37.75 3.032 37.677 2.741 37.659 2.352 c
-39.232 2.352 l
-39.232 2.44 l
-39.209 2.822 39.143 3.09 39.026 3.248 c
-38.908 3.414 38.725 3.499 38.482 3.499 c
-40.525 2.176 m
-40.525 2.782 40.635 3.248 40.863 3.572 c
-41.098 3.896 41.425 4.057 41.848 4.057 c
-42.23 4.057 42.528 3.899 42.744 3.587 c
-42.744 5.644 l
-43.392 5.644 l
-43.392 0 l
-42.804 0 l
-42.759 0.426 l
-42.553 0.092 42.249 -0.073 41.848 -0.073 c
-41.436 -0.073 41.113 0.081 40.878 0.397 c
-40.643 0.721 40.525 1.176 40.525 1.764 c
-h
-41.171 1.794 m
-41.171 1.353 41.234 1.022 41.362 0.809 c
-41.499 0.603 41.719 0.5 42.024 0.5 c
-42.347 0.5 42.586 0.661 42.744 0.985 c
-42.744 2.999 l
-42.575 3.311 42.336 3.469 42.024 3.469 c
-41.719 3.469 41.499 3.366 41.362 3.161 c
-41.234 2.955 41.171 2.631 41.171 2.19 c
-h
-46.816 0 -0.646 3.984 re
-46.86 5.027 m
-46.86 4.917 46.831 4.825 46.772 4.748 c
-46.713 4.678 46.617 4.645 46.492 4.645 c
-46.375 4.645 46.28 4.678 46.214 4.748 c
-46.155 4.825 46.125 4.917 46.125 5.027 c
-46.125 5.145 46.155 5.237 46.214 5.307 c
-46.28 5.384 46.375 5.424 46.492 5.424 c
-46.617 5.424 46.713 5.384 46.772 5.307 c
-46.831 5.226 46.86 5.134 46.86 5.027 c
-48.448 3.984 m
-48.462 3.543 l
-48.716 3.884 49.039 4.057 49.432 4.057 c
-50.138 4.057 50.494 3.587 50.505 2.646 c
-50.505 0 l
-49.859 0 l
-49.859 2.617 l
-49.859 2.929 49.804 3.15 49.697 3.279 c
-49.586 3.403 49.432 3.469 49.227 3.469 c
-49.069 3.469 48.921 3.414 48.786 3.308 c
-48.657 3.198 48.554 3.061 48.477 2.896 c
-48.477 0 l
-47.83 0 l
-47.83 3.984 l
-h
-52.329 4.939 m
-52.329 3.984 l
-52.931 3.984 l
-52.931 3.454 l
-52.329 3.454 l
-52.329 0.985 l
-52.329 0.827 52.35 0.709 52.402 0.632 c
-52.46 0.551 52.549 0.515 52.666 0.515 c
-52.755 0.515 52.842 0.53 52.931 0.559 c
-52.931 0 l
-52.784 -0.047 52.63 -0.073 52.475 -0.073 c
-52.218 -0.073 52.023 0.019 51.887 0.206 c
-51.747 0.389 51.681 0.651 51.681 0.985 c
-51.681 3.454 l
-51.078 3.454 l
-51.078 3.984 l
-51.681 3.984 l
-51.681 4.939 l
-h
-53.489 2.176 m
-53.489 2.753 53.625 3.208 53.901 3.543 c
-54.184 3.884 54.555 4.057 55.018 4.057 c
-55.477 4.057 55.845 3.888 56.121 3.558 c
-56.404 3.234 56.551 2.786 56.562 2.22 c
-56.562 1.794 l
-56.562 1.224 56.418 0.769 56.135 0.426 c
-55.859 0.092 55.492 -0.073 55.033 -0.073 c
-54.569 -0.073 54.199 0.088 53.916 0.412 c
-53.64 0.742 53.497 1.183 53.489 1.735 c
-h
-54.136 1.794 m
-54.136 1.389 54.213 1.073 54.371 0.838 c
-54.537 0.603 54.758 0.485 55.033 0.485 c
-55.599 0.485 55.893 0.897 55.915 1.72 c
-55.915 2.176 l
-55.915 2.577 55.83 2.896 55.664 3.131 c
-55.506 3.374 55.29 3.499 55.018 3.499 c
-54.754 3.499 54.537 3.374 54.371 3.131 c
-54.213 2.896 54.136 2.577 54.136 2.176 c
-h
-60.501 0.485 m
-60.714 0.485 60.887 0.548 61.015 0.676 c
-61.151 0.813 61.225 1.004 61.236 1.249 c
-61.854 1.249 l
-61.831 0.867 61.696 0.548 61.442 0.294 c
-61.185 0.048 60.872 -0.073 60.501 -0.073 c
-60.009 -0.073 59.633 0.077 59.369 0.383 c
-59.112 0.695 58.987 1.162 58.987 1.779 c
-58.987 2.22 l
-58.987 2.815 59.112 3.271 59.369 3.587 c
-59.633 3.899 60.009 4.057 60.501 4.057 c
-60.902 4.057 61.221 3.925 61.457 3.66 c
-61.699 3.403 61.831 3.057 61.854 2.617 c
-61.236 2.617 l
-61.214 2.911 61.141 3.131 61.015 3.279 c
-60.898 3.425 60.725 3.499 60.501 3.499 c
-60.207 3.499 59.99 3.4 59.855 3.205 c
-59.714 3.017 59.641 2.708 59.633 2.279 c
-59.633 1.764 l
-59.633 1.294 59.699 0.96 59.839 0.765 c
-59.986 0.578 60.207 0.485 60.501 0.485 c
-64.632 0.353 m
-64.414 0.067 64.102 -0.073 63.691 -0.073 c
-63.327 -0.073 63.051 0.048 62.868 0.294 c
-62.691 0.548 62.596 0.912 62.588 1.382 c
-62.588 3.984 l
-63.235 3.984 l
-63.235 1.441 l
-63.235 0.813 63.419 0.5 63.793 0.5 c
-64.194 0.5 64.47 0.676 64.617 1.029 c
-64.617 3.984 l
-65.264 3.984 l
-65.264 0 l
-64.646 0 l
-h
-67.894 3.366 m
-67.807 3.385 67.707 3.396 67.601 3.396 c
-67.266 3.396 67.03 3.212 66.895 2.852 c
-66.895 0 l
-66.248 0 l
-66.248 3.984 l
-66.88 3.984 l
-66.895 3.572 l
-67.071 3.896 67.314 4.057 67.63 4.057 c
-67.736 4.057 67.824 4.035 67.894 3.998 c
-h
-70.188 3.366 m
-70.099 3.385 70 3.396 69.893 3.396 c
-69.559 3.396 69.324 3.212 69.188 2.852 c
-69.188 0 l
-68.541 0 l
-68.541 3.984 l
-69.173 3.984 l
-69.188 3.572 l
-69.364 3.896 69.607 4.057 69.923 4.057 c
-70.03 4.057 70.118 4.035 70.188 3.998 c
-h
-72.187 -0.073 m
-71.687 -0.073 71.304 0.073 71.04 0.368 c
-70.776 0.661 70.643 1.095 70.643 1.676 c
-70.643 2.147 l
-70.643 2.741 70.768 3.208 71.026 3.543 c
-71.29 3.884 71.65 4.057 72.113 4.057 c
-72.572 4.057 72.914 3.903 73.142 3.601 c
-73.378 3.308 73.498 2.845 73.509 2.22 c
-73.509 1.794 l
-71.29 1.794 l
-71.29 1.706 l
-71.29 1.272 71.367 0.96 71.525 0.765 c
-71.691 0.578 71.922 0.485 72.216 0.485 c
-72.411 0.485 72.584 0.518 72.73 0.588 c
-72.877 0.665 73.014 0.783 73.142 0.941 c
-73.48 0.53 l
-73.193 0.125 72.763 -0.073 72.187 -0.073 c
-72.113 3.499 m
-71.838 3.499 71.635 3.403 71.51 3.219 c
-71.381 3.032 71.308 2.741 71.29 2.352 c
-72.863 2.352 l
-72.863 2.44 l
-72.84 2.822 72.775 3.09 72.657 3.248 c
-72.539 3.414 72.356 3.499 72.113 3.499 c
-74.906 3.984 m
-74.92 3.543 l
-75.174 3.884 75.497 4.057 75.89 4.057 c
-76.596 4.057 76.952 3.587 76.964 2.646 c
-76.964 0 l
-76.317 0 l
-76.317 2.617 l
-76.317 2.929 76.262 3.15 76.156 3.279 c
-76.046 3.403 75.89 3.469 75.685 3.469 c
-75.527 3.469 75.38 3.414 75.244 3.308 c
-75.115 3.198 75.013 3.061 74.936 2.896 c
-74.936 0 l
-74.288 0 l
-74.288 3.984 l
-h
-78.787 4.939 m
-78.787 3.984 l
-79.389 3.984 l
-79.389 3.454 l
-78.787 3.454 l
-78.787 0.985 l
-78.787 0.827 78.809 0.709 78.86 0.632 c
-78.919 0.551 79.007 0.515 79.125 0.515 c
-79.213 0.515 79.301 0.53 79.389 0.559 c
-79.389 0 l
-79.242 -0.047 79.088 -0.073 78.934 -0.073 c
-78.676 -0.073 78.481 0.019 78.346 0.206 c
-78.206 0.389 78.14 0.651 78.14 0.985 c
-78.14 3.454 l
-77.537 3.454 l
-77.537 3.984 l
-78.14 3.984 l
-78.14 4.939 l
-h
-84.754 1.794 m
-84.754 1.176 84.64 0.709 84.416 0.397 c
-84.199 0.081 83.876 -0.073 83.446 -0.073 c
-83.023 -0.073 82.711 0.107 82.506 0.47 c
-82.476 0 l
-81.873 0 l
-81.873 5.644 l
-82.52 5.644 l
-82.52 3.543 l
-82.733 3.884 83.042 4.057 83.446 4.057 c
-83.876 4.057 84.199 3.899 84.416 3.587 c
-84.64 3.282 84.754 2.815 84.754 2.19 c
-h
-84.108 2.176 m
-84.108 2.646 84.038 2.977 83.902 3.175 c
-83.773 3.37 83.564 3.469 83.27 3.469 c
-82.936 3.469 82.685 3.285 82.52 2.926 c
-82.52 1.044 l
-82.685 0.68 82.939 0.5 83.285 0.5 c
-83.578 0.5 83.788 0.603 83.917 0.809 c
-84.042 1.014 84.108 1.33 84.108 1.764 c
-h
-87.239 3.366 m
-87.15 3.385 87.051 3.396 86.944 3.396 c
-86.61 3.396 86.375 3.212 86.239 2.852 c
-86.239 0 l
-85.592 0 l
-85.592 3.984 l
-86.224 3.984 l
-86.239 3.572 l
-86.415 3.896 86.658 4.057 86.974 4.057 c
-87.08 4.057 87.169 4.035 87.239 3.998 c
-h
-89.781 0 m
-89.741 0.088 89.715 0.235 89.708 0.441 c
-89.473 0.096 89.178 -0.073 88.826 -0.073 c
-88.462 -0.073 88.179 0.023 87.973 0.221 c
-87.775 0.426 87.68 0.713 87.68 1.088 c
-87.68 1.488 87.815 1.808 88.091 2.043 c
-88.363 2.286 88.738 2.411 89.208 2.411 c
-89.693 2.411 l
-89.693 2.837 l
-89.693 3.072 89.638 3.238 89.531 3.337 c
-89.421 3.443 89.259 3.499 89.047 3.499 c
-88.848 3.499 88.686 3.44 88.561 3.323 c
-88.444 3.205 88.385 3.057 88.385 2.882 c
-87.738 2.882 l
-87.738 3.076 87.797 3.267 87.915 3.454 c
-88.04 3.638 88.201 3.786 88.399 3.896 c
-88.605 4.002 88.833 4.057 89.091 4.057 c
-89.491 4.057 89.796 3.954 90.001 3.749 c
-90.215 3.543 90.329 3.248 90.34 2.866 c
-90.34 0.853 l
-90.34 0.548 90.377 0.283 90.458 0.059 c
-90.458 0 l
-h
-88.914 0.515 m
-89.08 0.515 89.23 0.559 89.37 0.647 c
-89.517 0.736 89.623 0.846 89.693 0.985 c
-89.693 1.926 l
-89.326 1.926 l
-89.01 1.926 88.767 1.856 88.59 1.72 c
-88.414 1.592 88.326 1.404 88.326 1.162 c
-88.326 0.933 88.37 0.769 88.459 0.661 c
-88.547 0.563 88.698 0.515 88.914 0.515 c
-91.957 3.984 m
-91.971 3.543 l
-92.225 3.884 92.548 4.057 92.941 4.057 c
-93.647 4.057 94.003 3.587 94.015 2.646 c
-94.015 0 l
-93.368 0 l
-93.368 2.617 l
-93.368 2.929 93.313 3.15 93.207 3.279 c
-93.096 3.403 92.941 3.469 92.736 3.469 c
-92.578 3.469 92.43 3.414 92.295 3.308 c
-92.166 3.198 92.064 3.061 91.986 2.896 c
-91.986 0 l
-91.339 0 l
-91.339 3.984 l
-h
-96.367 0.485 m
-96.58 0.485 96.752 0.548 96.881 0.676 c
-97.017 0.813 97.091 1.004 97.101 1.249 c
-97.719 1.249 l
-97.697 0.867 97.561 0.548 97.307 0.294 c
-97.05 0.048 96.738 -0.073 96.367 -0.073 c
-95.874 -0.073 95.499 0.077 95.235 0.383 c
-94.977 0.695 94.853 1.162 94.853 1.779 c
-94.853 2.22 l
-94.853 2.815 94.977 3.271 95.235 3.587 c
-95.499 3.899 95.874 4.057 96.367 4.057 c
-96.767 4.057 97.087 3.925 97.322 3.66 c
-97.564 3.403 97.697 3.057 97.719 2.617 c
-97.101 2.617 l
-97.08 2.911 97.006 3.131 96.881 3.279 c
-96.763 3.425 96.59 3.499 96.367 3.499 c
-96.073 3.499 95.856 3.4 95.72 3.205 c
-95.58 3.017 95.507 2.708 95.499 2.279 c
-95.499 1.764 l
-95.499 1.294 95.566 0.96 95.705 0.765 c
-95.852 0.578 96.073 0.485 96.367 0.485 c
-99.115 3.572 m
-99.368 3.896 99.688 4.057 100.071 4.057 c
-100.777 4.057 101.132 3.587 101.144 2.646 c
-101.144 0 l
-100.497 0 l
-100.497 2.617 l
-100.497 2.929 100.442 3.15 100.335 3.279 c
-100.225 3.403 100.071 3.469 99.865 3.469 c
-99.707 3.469 99.56 3.414 99.424 3.308 c
-99.295 3.198 99.192 3.061 99.115 2.896 c
-99.115 0 l
-98.468 0 l
-98.468 5.644 l
-99.115 5.644 l
-h
-102.144 0.353 m
-102.144 0.47 102.177 0.566 102.246 0.647 c
-102.312 0.724 102.415 0.765 102.555 0.765 c
-102.701 0.765 102.809 0.724 102.878 0.647 c
-102.955 0.566 102.996 0.47 102.996 0.353 c
-102.996 0.243 102.955 0.151 102.878 0.073 c
-102.809 -0.004 102.701 -0.044 102.555 -0.044 c
-102.415 -0.044 102.312 -0.004 102.246 0.073 c
-102.177 0.151 102.144 0.243 102.144 0.353 c
-f
-Q
-0.113 0.082 0.09 0 k
-35.668 343.426 238.665 -12.898 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 40.8563 336.5872 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.646 -0.243 -0.775 -0.367 -0.881 c
--0.496 -0.992 -0.658 -1.08 -0.852 -1.147 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.161 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.926 c
--3.127 -0.819 -3.23 -0.691 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.213 -3.484 -0.014 c
--2.66 0.133 l
--2.642 0.033 -2.616 -0.058 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.367 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.684 -1.992 0.691 -1.999 0.691 c
--2.167 0.728 -2.329 0.771 -2.484 0.823 c
--2.642 0.882 -2.786 0.96 -2.91 1.058 c
--3.039 1.154 -3.142 1.279 -3.219 1.426 c
--3.289 1.573 -3.322 1.756 -3.322 1.985 c
--3.322 2.18 -3.289 2.344 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.837 c
--2.8 2.932 -2.645 3.003 -2.469 3.043 c
--2.293 3.09 -2.102 3.12 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.12 -1.128 3.09 -0.97 3.043 c
--0.804 2.992 -0.669 2.918 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.202 2.344 -0.143 2.182 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.253 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.353 c
--1.294 1.312 -1.117 1.264 -0.941 1.205 c
--0.756 1.147 -0.595 1.066 -0.455 0.97 c
--0.32 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.455 c
--2.26 2.425 -2.319 2.385 -2.366 2.338 c
--2.406 2.297 -2.437 2.249 -2.454 2.19 c
--2.477 2.132 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.779 c
--2.41 1.72 -2.373 1.669 -2.322 1.632 c
--2.263 1.592 -2.201 1.558 -2.131 1.529 c
--2.065 1.5 -1.984 1.47 -1.896 1.44 c
-h
--0.837 -0.014 m
--0.837 0.092 -0.86 0.177 -0.897 0.235 c
--0.926 0.301 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.53 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.529 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.014 c
-6.402 -2.66 m
-6.185 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.396 c
-5.284 -2.315 5.185 -2.219 5.108 -2.102 c
-5.039 -1.984 4.991 -1.855 4.961 -1.72 c
-5.858 -1.617 l
-5.895 -1.753 5.964 -1.859 6.064 -1.94 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.057 6.681 -2.028 c
-6.758 -1.999 6.828 -1.944 6.887 -1.866 c
-6.945 -1.797 6.99 -1.705 7.019 -1.587 c
-7.056 -1.469 7.078 -1.323 7.078 -1.147 c
-7.078 -0.955 l
-7.078 -0.889 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.072 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.215 -0.897 5.108 -0.75 c
-5.009 -0.596 4.935 -0.411 4.888 -0.206 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.771 4.836 1.018 4.888 1.235 c
-4.946 1.448 5.027 1.632 5.137 1.779 c
-5.245 1.933 5.376 2.051 5.534 2.132 c
-5.689 2.22 5.876 2.263 6.093 2.263 c
-6.188 2.263 6.288 2.253 6.387 2.234 c
-6.483 2.213 6.571 2.18 6.652 2.132 c
-6.739 2.08 6.817 2.018 6.887 1.941 c
-6.964 1.86 7.026 1.768 7.078 1.661 c
-7.092 1.661 l
-7.092 1.808 l
-7.1 1.867 7.107 1.918 7.107 1.97 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.152 2.22 c
-8.004 2.22 l
-7.993 2.139 7.982 2.028 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.161 l
-7.975 -1.415 7.938 -1.635 7.871 -1.822 c
-7.802 -2.007 7.699 -2.161 7.563 -2.279 c
-7.423 -2.404 7.258 -2.499 7.063 -2.558 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.53 m
-7.092 0.742 7.067 0.919 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.5 6.729 1.558 6.652 1.588 c
-6.571 1.625 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.621 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.367 c
-5.88 1.279 5.835 1.162 5.799 1.014 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.338 c
-6.049 -0.515 6.211 -0.602 6.417 -0.602 c
-6.483 -0.602 6.556 -0.588 6.637 -0.559 c
-6.725 -0.522 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.176 7.019 -0.029 c
-7.067 0.118 7.092 0.301 7.092 0.53 c
-11.036 -0.646 m
-12.168 -0.646 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.646 l
-10.124 -0.646 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.22 l
-11.036 2.22 l
-h
-10.124 3.514 0.912 -0.676 re
-10.124 2.837 m
-13.6 1.602 m
-13.057 1.602 l
-13.057 2.22 l
-13.644 2.22 l
-13.924 3.117 l
-14.497 3.117 l
-14.497 2.22 l
-15.732 2.22 l
-15.732 1.602 l
-14.497 1.602 l
-14.497 -0.103 l
-14.497 -0.324 l
-14.504 -0.393 14.527 -0.455 14.556 -0.515 c
-14.593 -0.565 14.648 -0.61 14.718 -0.646 c
-14.795 -0.676 14.909 -0.691 15.056 -0.691 c
-15.192 -0.691 15.327 -0.687 15.468 -0.676 c
-15.603 -0.658 15.736 -0.632 15.865 -0.602 c
-15.865 -1.205 l
-15.784 -1.216 15.707 -1.23 15.629 -1.249 c
-15.549 -1.261 15.471 -1.267 15.394 -1.278 c
-15.313 -1.286 15.225 -1.294 15.129 -1.294 c
-15.041 -1.301 14.942 -1.308 14.835 -1.308 c
-14.648 -1.308 14.486 -1.294 14.35 -1.264 c
-14.221 -1.228 14.107 -1.183 14.012 -1.132 c
-13.924 -1.084 13.85 -1.025 13.791 -0.955 c
-13.733 -0.878 13.689 -0.801 13.66 -0.72 c
-13.63 -0.632 13.608 -0.544 13.6 -0.455 c
-13.59 -0.36 13.586 -0.264 13.586 -0.176 c
-h
-24.133 1.47 m
-24.033 1.477 23.931 1.488 23.824 1.5 c
-23.713 1.517 23.592 1.529 23.456 1.529 c
-23.28 1.529 23.121 1.488 22.986 1.411 c
-22.846 1.341 22.728 1.242 22.633 1.118 c
-22.545 0.989 22.475 0.842 22.427 0.676 c
-22.387 0.507 22.369 0.331 22.369 0.147 c
-22.369 -1.264 l
-21.472 -1.264 l
-21.472 0.985 l
-21.472 1.11 21.461 1.235 21.442 1.353 c
-21.432 1.477 21.417 1.595 21.398 1.706 c
-21.388 1.823 21.373 1.918 21.354 1.999 c
-21.332 2.087 21.314 2.161 21.296 2.22 c
-22.178 2.22 l
-22.185 2.168 22.196 2.117 22.207 2.058 c
-22.225 1.999 22.24 1.933 22.251 1.867 c
-22.269 1.808 22.284 1.742 22.295 1.675 c
-22.302 1.606 22.313 1.544 22.325 1.484 c
-22.339 1.484 l
-22.375 1.602 22.427 1.709 22.486 1.808 c
-22.552 1.904 22.633 1.988 22.722 2.058 c
-22.809 2.124 22.913 2.18 23.03 2.22 c
-23.155 2.257 23.302 2.278 23.471 2.278 c
-23.596 2.278 23.713 2.271 23.824 2.263 c
-23.941 2.253 24.044 2.238 24.133 2.22 c
-h
-26.738 -1.323 m
-26.481 -1.323 26.253 -1.286 26.047 -1.22 c
-25.841 -1.143 25.665 -1.029 25.518 -0.881 c
-25.371 -0.727 25.253 -0.536 25.165 -0.309 c
-25.084 -0.085 25.047 0.181 25.047 0.485 c
-25.047 0.816 25.091 1.095 25.18 1.323 c
-25.275 1.558 25.404 1.742 25.562 1.881 c
-25.727 2.018 25.915 2.117 26.121 2.176 c
-26.327 2.242 26.535 2.278 26.753 2.278 c
-27.025 2.278 27.26 2.227 27.458 2.132 c
-27.664 2.043 27.829 1.911 27.958 1.735 c
-28.094 1.565 28.193 1.359 28.252 1.118 c
-28.318 0.882 28.355 0.617 28.355 0.324 c
-28.355 0.309 l
-25.988 0.309 l
-25.988 0.162 26.003 0.023 26.032 -0.103 c
-26.069 -0.231 26.124 -0.345 26.194 -0.441 c
-26.26 -0.529 26.344 -0.599 26.444 -0.646 c
-26.539 -0.698 26.653 -0.72 26.782 -0.72 c
-26.936 -0.72 27.076 -0.687 27.194 -0.617 c
-27.318 -0.551 27.407 -0.448 27.458 -0.309 c
-28.296 -0.382 l
-28.266 -0.482 28.212 -0.588 28.135 -0.706 c
-28.054 -0.816 27.95 -0.918 27.825 -1.014 c
-27.708 -1.103 27.553 -1.176 27.37 -1.234 c
-27.194 -1.294 26.98 -1.323 26.738 -1.323 c
-26.738 1.706 m
-26.649 1.706 26.562 1.691 26.473 1.661 c
-26.385 1.632 26.304 1.58 26.238 1.515 c
-26.169 1.444 26.109 1.357 26.061 1.249 c
-26.021 1.139 26.003 1.014 26.003 0.867 c
-27.472 0.867 l
-27.472 1.004 27.447 1.124 27.399 1.235 c
-27.359 1.341 27.304 1.43 27.237 1.5 c
-27.179 1.565 27.106 1.617 27.017 1.646 c
-26.929 1.683 26.834 1.706 26.738 1.706 c
-30.886 1.602 m
-30.886 -1.264 l
-29.99 -1.264 l
-29.99 1.602 l
-29.167 1.602 l
-29.167 2.22 l
-29.99 2.22 l
-29.99 2.484 l
-29.99 2.61 30.005 2.741 30.034 2.881 c
-30.071 3.017 30.14 3.135 30.24 3.234 c
-30.346 3.341 30.489 3.429 30.666 3.499 c
-30.842 3.564 31.067 3.601 31.343 3.601 c
-31.555 3.601 31.754 3.591 31.931 3.572 c
-32.106 3.55 32.257 3.532 32.386 3.514 c
-32.386 2.926 l
-32.257 2.944 32.114 2.959 31.96 2.969 c
-31.802 2.976 31.651 2.984 31.504 2.984 c
-31.376 2.984 31.272 2.969 31.195 2.94 c
-31.115 2.911 31.052 2.87 31.004 2.822 c
-30.953 2.77 30.919 2.708 30.901 2.631 c
-30.89 2.562 30.886 2.484 30.886 2.396 c
-30.886 2.22 l
-32.313 2.22 l
-32.313 1.602 l
-h
-35.407 -0.646 m
-36.538 -0.646 l
-36.538 -1.264 l
-33.232 -1.264 l
-33.232 -0.646 l
-34.495 -0.646 l
-34.495 2.896 l
-33.569 2.896 l
-33.569 3.514 l
-35.407 3.514 l
-h
-40.569 0.485 m
-40.569 0.21 40.533 -0.04 40.467 -0.264 c
-40.397 -0.482 40.294 -0.669 40.158 -0.823 c
-40.018 -0.981 39.842 -1.103 39.629 -1.19 c
-39.412 -1.278 39.158 -1.323 38.865 -1.323 c
-38.589 -1.323 38.343 -1.278 38.13 -1.19 c
-37.924 -1.103 37.751 -0.981 37.615 -0.823 c
-37.475 -0.669 37.373 -0.482 37.307 -0.264 c
-37.236 -0.04 37.203 0.21 37.203 0.485 c
-37.203 0.738 37.233 0.974 37.292 1.191 c
-37.358 1.415 37.461 1.606 37.6 1.764 c
-37.737 1.929 37.913 2.058 38.13 2.146 c
-38.343 2.234 38.6 2.278 38.894 2.278 c
-39.206 2.278 39.467 2.234 39.673 2.146 c
-39.886 2.058 40.059 1.929 40.187 1.764 c
-40.324 1.606 40.423 1.415 40.482 1.191 c
-40.54 0.974 40.569 0.738 40.569 0.485 c
-39.615 0.485 m
-39.615 0.691 39.599 0.867 39.57 1.014 c
-39.548 1.162 39.511 1.282 39.453 1.382 c
-39.393 1.477 39.32 1.548 39.232 1.588 c
-39.144 1.635 39.033 1.661 38.909 1.661 c
-38.644 1.661 38.453 1.562 38.335 1.367 c
-38.218 1.18 38.159 0.886 38.159 0.485 c
-38.159 0.063 38.218 -0.243 38.335 -0.426 c
-38.453 -0.613 38.63 -0.706 38.865 -0.706 c
-38.99 -0.706 39.104 -0.687 39.202 -0.646 c
-39.298 -0.599 39.379 -0.525 39.438 -0.426 c
-39.504 -0.33 39.548 -0.206 39.57 -0.058 c
-39.599 0.088 39.615 0.268 39.615 0.485 c
-42.954 -2.66 m
-42.738 -2.66 42.547 -2.635 42.381 -2.587 c
-42.212 -2.547 42.073 -2.484 41.955 -2.396 c
-41.837 -2.315 41.738 -2.219 41.661 -2.102 c
-41.591 -1.984 41.543 -1.855 41.514 -1.72 c
-42.41 -1.617 l
-42.447 -1.753 42.518 -1.859 42.616 -1.94 c
-42.712 -2.028 42.837 -2.072 42.984 -2.072 c
-43.072 -2.072 43.153 -2.057 43.234 -2.028 c
-43.311 -1.999 43.381 -1.944 43.44 -1.866 c
-43.499 -1.797 43.542 -1.705 43.572 -1.587 c
-43.609 -1.469 43.631 -1.323 43.631 -1.147 c
-43.631 -0.955 l
-43.631 -0.889 43.634 -0.831 43.646 -0.779 c
-43.646 -0.588 l
-43.631 -0.588 l
-43.532 -0.816 43.388 -0.977 43.204 -1.072 c
-43.017 -1.172 42.811 -1.22 42.587 -1.22 c
-42.381 -1.22 42.198 -1.183 42.044 -1.103 c
-41.896 -1.014 41.768 -0.897 41.661 -0.75 c
-41.562 -0.596 41.488 -0.411 41.441 -0.206 c
-41.389 0.008 41.367 0.243 41.367 0.5 c
-41.367 0.771 41.389 1.018 41.441 1.235 c
-41.5 1.448 41.58 1.632 41.691 1.779 c
-41.797 1.933 41.93 2.051 42.088 2.132 c
-42.242 2.22 42.429 2.263 42.646 2.263 c
-42.742 2.263 42.84 2.253 42.94 2.234 c
-43.035 2.213 43.123 2.18 43.204 2.132 c
-43.293 2.08 43.37 2.018 43.44 1.941 c
-43.517 1.86 43.58 1.768 43.631 1.661 c
-43.646 1.661 l
-43.646 1.808 l
-43.653 1.867 43.66 1.918 43.66 1.97 c
-43.667 2.028 43.675 2.076 43.675 2.117 c
-43.682 2.165 43.694 2.198 43.704 2.22 c
-44.557 2.22 l
-44.546 2.139 44.535 2.028 44.527 1.881 c
-44.527 1.411 l
-44.527 -1.161 l
-44.527 -1.415 44.49 -1.635 44.425 -1.822 c
-44.355 -2.007 44.251 -2.161 44.116 -2.279 c
-43.976 -2.404 43.811 -2.499 43.616 -2.558 c
-43.418 -2.624 43.197 -2.66 42.954 -2.66 c
-43.646 0.53 m
-43.646 0.742 43.619 0.919 43.572 1.058 c
-43.532 1.205 43.476 1.323 43.41 1.411 c
-43.351 1.5 43.282 1.558 43.204 1.588 c
-43.123 1.625 43.046 1.646 42.969 1.646 c
-42.87 1.646 42.778 1.621 42.69 1.573 c
-42.609 1.532 42.543 1.463 42.484 1.367 c
-42.433 1.279 42.389 1.162 42.352 1.014 c
-42.323 0.875 42.308 0.706 42.308 0.5 c
-42.308 0.125 42.366 -0.154 42.484 -0.338 c
-42.601 -0.515 42.763 -0.602 42.969 -0.602 c
-43.035 -0.602 43.109 -0.588 43.189 -0.559 c
-43.278 -0.522 43.351 -0.463 43.41 -0.382 c
-43.476 -0.294 43.532 -0.176 43.572 -0.029 c
-43.619 0.118 43.646 0.301 43.646 0.53 c
-f
-Q
-q 1 0 0 1 60.7924 321.0066 cm
-0 0 m
-2.102 0 l
-2.102 -0.574 l
--0.676 -0.574 l
--0.676 4.777 l
-0 4.777 l
-h
-3.513 -0.574 -0.646 3.984 re
-3.557 4.453 m
-3.557 4.343 3.528 4.251 3.469 4.174 c
-3.41 4.104 3.314 4.072 3.189 4.072 c
-3.072 4.072 2.977 4.104 2.91 4.174 c
-2.851 4.251 2.822 4.343 2.822 4.453 c
-2.822 4.571 2.851 4.663 2.91 4.733 c
-2.977 4.81 3.072 4.85 3.189 4.85 c
-3.314 4.85 3.41 4.81 3.469 4.733 c
-3.528 4.652 3.557 4.56 3.557 4.453 c
-6.468 0.44 m
-6.468 0.588 6.412 0.709 6.306 0.808 c
-6.196 0.904 5.99 1.022 5.689 1.161 c
-5.342 1.308 5.101 1.429 4.953 1.529 c
-4.806 1.635 4.696 1.753 4.63 1.881 c
-4.56 2.006 4.527 2.164 4.527 2.352 c
-4.527 2.674 4.644 2.944 4.88 3.16 c
-5.115 3.374 5.416 3.484 5.791 3.484 c
-6.173 3.484 6.482 3.37 6.717 3.145 c
-6.952 2.917 7.07 2.631 7.07 2.278 c
-6.423 2.278 l
-6.423 2.454 6.364 2.605 6.247 2.734 c
-6.129 2.859 5.975 2.925 5.791 2.925 c
-5.593 2.925 5.442 2.869 5.336 2.763 c
-5.225 2.664 5.174 2.532 5.174 2.366 c
-5.174 2.238 5.211 2.131 5.292 2.043 c
-5.369 1.962 5.56 1.859 5.865 1.734 c
-6.342 1.547 6.673 1.359 6.85 1.176 c
-7.025 0.999 7.114 0.771 7.114 0.5 c
-7.114 0.147 6.989 -0.133 6.747 -0.339 c
-6.512 -0.544 6.196 -0.647 5.806 -0.647 c
-5.383 -0.647 5.045 -0.53 4.791 -0.294 c
-4.534 -0.052 4.409 0.253 4.409 0.617 c
-5.056 0.617 l
-5.064 0.389 5.134 0.213 5.262 0.087 c
-5.387 -0.03 5.571 -0.088 5.806 -0.088 c
-6.019 -0.088 6.181 -0.04 6.291 0.058 c
-6.408 0.154 6.468 0.282 6.468 0.44 c
-8.804 4.365 m
-8.804 3.41 l
-9.407 3.41 l
-9.407 2.881 l
-8.804 2.881 l
-8.804 0.411 l
-8.804 0.253 8.827 0.135 8.878 0.058 c
-8.937 -0.023 9.025 -0.059 9.142 -0.059 c
-9.231 -0.059 9.319 -0.044 9.407 -0.015 c
-9.407 -0.574 l
-9.26 -0.621 9.105 -0.647 8.951 -0.647 c
-8.694 -0.647 8.5 -0.555 8.363 -0.368 c
-8.224 -0.184 8.158 0.077 8.158 0.411 c
-8.158 2.881 l
-7.555 2.881 l
-7.555 3.41 l
-8.158 3.41 l
-8.158 4.365 l
-h
-11.759 1.602 m
-11.759 2.179 11.895 2.634 12.17 2.969 c
-12.454 3.31 12.825 3.484 13.288 3.484 c
-13.747 3.484 14.115 3.314 14.39 2.984 c
-14.673 2.66 14.82 2.212 14.831 1.646 c
-14.831 1.22 l
-14.831 0.65 14.688 0.195 14.405 -0.148 c
-14.129 -0.482 13.762 -0.647 13.302 -0.647 c
-12.839 -0.647 12.469 -0.485 12.185 -0.162 c
-11.91 0.168 11.766 0.61 11.759 1.161 c
-h
-12.406 1.22 m
-12.406 0.816 12.483 0.5 12.641 0.264 c
-12.806 0.029 13.026 -0.088 13.302 -0.088 c
-13.868 -0.088 14.162 0.323 14.184 1.146 c
-14.184 1.602 l
-14.184 2.003 14.1 2.322 13.934 2.557 c
-13.776 2.8 13.56 2.925 13.288 2.925 c
-13.023 2.925 12.806 2.8 12.641 2.557 c
-12.483 2.322 12.406 2.003 12.406 1.602 c
-h
-18.549 1.22 m
-18.549 0.592 18.432 0.121 18.197 -0.191 c
-17.969 -0.497 17.653 -0.647 17.242 -0.647 c
-16.837 -0.647 16.529 -0.497 16.315 -0.191 c
-16.315 -2.103 l
-15.669 -2.103 l
-15.669 3.41 l
-16.257 3.41 l
-16.301 2.969 l
-16.514 3.31 16.823 3.484 17.227 3.484 c
-17.668 3.484 17.995 3.329 18.212 3.027 c
-18.425 2.722 18.539 2.267 18.549 1.66 c
-h
-17.903 1.602 m
-17.903 2.043 17.834 2.366 17.697 2.572 c
-17.558 2.786 17.337 2.896 17.036 2.896 c
-16.72 2.896 16.481 2.741 16.315 2.439 c
-16.315 0.367 l
-16.481 0.062 16.72 -0.088 17.036 -0.088 c
-17.33 -0.088 17.543 0.014 17.683 0.22 c
-17.819 0.434 17.892 0.764 17.903 1.205 c
-h
-20.814 -0.647 m
-20.313 -0.647 19.931 -0.5 19.667 -0.206 c
-19.403 0.087 19.27 0.521 19.27 1.103 c
-19.27 1.573 l
-19.27 2.167 19.395 2.634 19.652 2.969 c
-19.917 3.31 20.277 3.484 20.74 3.484 c
-21.2 3.484 21.541 3.329 21.769 3.027 c
-22.004 2.734 22.125 2.271 22.137 1.646 c
-22.137 1.22 l
-19.917 1.22 l
-19.917 1.132 l
-19.917 0.698 19.994 0.386 20.153 0.191 c
-20.317 0.004 20.549 -0.088 20.843 -0.088 c
-21.038 -0.088 21.211 -0.055 21.358 0.014 c
-21.504 0.091 21.641 0.209 21.769 0.367 c
-22.107 -0.044 l
-21.82 -0.449 21.391 -0.647 20.814 -0.647 c
-20.74 2.925 m
-20.465 2.925 20.263 2.829 20.137 2.645 c
-20.009 2.458 19.935 2.167 19.917 1.778 c
-21.489 1.778 l
-21.489 1.866 l
-21.468 2.248 21.402 2.516 21.284 2.674 c
-21.167 2.84 20.982 2.925 20.74 2.925 c
-24.562 2.792 m
-24.473 2.811 24.375 2.822 24.268 2.822 c
-23.933 2.822 23.698 2.638 23.563 2.278 c
-23.563 -0.574 l
-22.915 -0.574 l
-22.915 3.41 l
-23.548 3.41 l
-23.563 2.998 l
-23.739 3.322 23.981 3.484 24.297 3.484 c
-24.404 3.484 24.492 3.461 24.562 3.424 c
-h
-27.105 -0.574 m
-27.064 -0.485 27.039 -0.339 27.031 -0.133 c
-26.796 -0.478 26.503 -0.647 26.15 -0.647 c
-25.786 -0.647 25.503 -0.551 25.296 -0.353 c
-25.098 -0.148 25.003 0.139 25.003 0.515 c
-25.003 0.914 25.138 1.234 25.414 1.469 c
-25.686 1.712 26.061 1.837 26.532 1.837 c
-27.016 1.837 l
-27.016 2.263 l
-27.016 2.499 26.962 2.664 26.855 2.763 c
-26.744 2.869 26.582 2.925 26.37 2.925 c
-26.171 2.925 26.01 2.866 25.884 2.749 c
-25.767 2.631 25.709 2.484 25.709 2.308 c
-25.061 2.308 l
-25.061 2.502 25.121 2.693 25.238 2.881 c
-25.363 3.064 25.525 3.212 25.723 3.322 c
-25.929 3.428 26.156 3.484 26.414 3.484 c
-26.815 3.484 27.12 3.38 27.326 3.175 c
-27.538 2.969 27.652 2.674 27.663 2.293 c
-27.663 0.279 l
-27.663 -0.026 27.7 -0.291 27.781 -0.515 c
-27.781 -0.574 l
-h
-26.237 -0.059 m
-26.403 -0.059 26.553 -0.015 26.693 0.073 c
-26.84 0.162 26.947 0.272 27.016 0.411 c
-27.016 1.352 l
-26.649 1.352 l
-26.333 1.352 26.09 1.282 25.915 1.146 c
-25.738 1.018 25.649 0.83 25.649 0.588 c
-25.649 0.359 25.693 0.195 25.782 0.087 c
-25.87 -0.011 26.021 -0.059 26.237 -0.059 c
-29.516 4.365 m
-29.516 3.41 l
-30.118 3.41 l
-30.118 2.881 l
-29.516 2.881 l
-29.516 0.411 l
-29.516 0.253 29.537 0.135 29.589 0.058 c
-29.647 -0.023 29.736 -0.059 29.853 -0.059 c
-29.942 -0.059 30.03 -0.044 30.118 -0.015 c
-30.118 -0.574 l
-29.971 -0.621 29.817 -0.647 29.662 -0.647 c
-29.405 -0.647 29.21 -0.555 29.074 -0.368 c
-28.934 -0.184 28.868 0.077 28.868 0.411 c
-28.868 2.881 l
-28.266 2.881 l
-28.266 3.41 l
-28.868 3.41 l
-28.868 4.365 l
-h
-31.588 -0.574 -0.647 3.984 re
-31.632 4.453 m
-31.632 4.343 31.602 4.251 31.544 4.174 c
-31.485 4.104 31.39 4.072 31.265 4.072 c
-31.147 4.072 31.051 4.104 30.985 4.174 c
-30.927 4.251 30.897 4.343 30.897 4.453 c
-30.897 4.571 30.927 4.663 30.985 4.733 c
-31.051 4.81 31.147 4.85 31.265 4.85 c
-31.39 4.85 31.485 4.81 31.544 4.733 c
-31.602 4.652 31.632 4.56 31.632 4.453 c
-32.47 1.602 m
-32.47 2.179 32.606 2.634 32.882 2.969 c
-33.165 3.31 33.535 3.484 33.998 3.484 c
-34.458 3.484 34.825 3.314 35.101 2.984 c
-35.384 2.66 35.531 2.212 35.542 1.646 c
-35.542 1.22 l
-35.542 0.65 35.399 0.195 35.116 -0.148 c
-34.84 -0.482 34.472 -0.647 34.013 -0.647 c
-33.551 -0.647 33.179 -0.485 32.896 -0.162 c
-32.62 0.168 32.477 0.61 32.47 1.161 c
-h
-33.117 1.22 m
-33.117 0.816 33.194 0.5 33.352 0.264 c
-33.518 0.029 33.738 -0.088 34.013 -0.088 c
-34.579 -0.088 34.873 0.323 34.895 1.146 c
-34.895 1.602 l
-34.895 2.003 34.811 2.322 34.646 2.557 c
-34.488 2.8 34.27 2.925 33.998 2.925 c
-33.734 2.925 33.518 2.8 33.352 2.557 c
-33.194 2.322 33.117 2.003 33.117 1.602 c
-h
-36.997 3.41 m
-37.012 2.969 l
-37.266 3.31 37.589 3.484 37.982 3.484 c
-38.688 3.484 39.044 3.013 39.055 2.072 c
-39.055 -0.574 l
-38.409 -0.574 l
-38.409 2.043 l
-38.409 2.356 38.353 2.576 38.247 2.705 c
-38.137 2.829 37.982 2.896 37.776 2.896 c
-37.618 2.896 37.472 2.84 37.335 2.734 c
-37.206 2.624 37.104 2.487 37.027 2.322 c
-37.027 -0.574 l
-36.38 -0.574 l
-36.38 3.41 l
-h
-41.965 0.44 m
-41.965 0.588 41.91 0.709 41.804 0.808 c
-41.694 0.904 41.488 1.022 41.187 1.161 c
-40.841 1.308 40.599 1.429 40.452 1.529 c
-40.304 1.635 40.194 1.753 40.128 1.881 c
-40.059 2.006 40.026 2.164 40.026 2.352 c
-40.026 2.674 40.143 2.944 40.378 3.16 c
-40.614 3.374 40.915 3.484 41.289 3.484 c
-41.672 3.484 41.98 3.37 42.216 3.145 c
-42.451 2.917 42.568 2.631 42.568 2.278 c
-41.921 2.278 l
-41.921 2.454 41.863 2.605 41.745 2.734 c
-41.628 2.859 41.473 2.925 41.289 2.925 c
-41.091 2.925 40.94 2.869 40.834 2.763 c
-40.724 2.664 40.672 2.532 40.672 2.366 c
-40.672 2.238 40.709 2.131 40.79 2.043 c
-40.867 1.962 41.058 1.859 41.362 1.734 c
-41.84 1.547 42.171 1.359 42.347 1.176 c
-42.524 0.999 42.613 0.771 42.613 0.5 c
-42.613 0.147 42.488 -0.133 42.245 -0.339 c
-42.01 -0.544 41.694 -0.647 41.304 -0.647 c
-40.882 -0.647 40.543 -0.53 40.29 -0.294 c
-40.032 -0.052 39.908 0.253 39.908 0.617 c
-40.554 0.617 l
-40.562 0.389 40.631 0.213 40.76 0.087 c
-40.885 -0.03 41.069 -0.088 41.304 -0.088 c
-41.518 -0.088 41.679 -0.04 41.79 0.058 c
-41.907 0.154 41.965 0.282 41.965 0.44 c
-45.156 1.602 m
-45.156 2.238 45.243 2.84 45.42 3.41 c
-45.596 3.976 45.838 4.472 46.155 4.895 c
-46.349 5.159 46.536 5.35 46.713 5.468 c
-46.846 5.012 l
-46.552 4.737 46.309 4.314 46.125 3.748 c
-45.938 3.179 45.835 2.547 45.817 1.851 c
-45.817 1.558 l
-45.817 0.694 45.934 -0.071 46.17 -0.736 c
-46.353 -1.235 46.581 -1.617 46.846 -1.881 c
-46.713 -2.308 l
-46.486 -2.15 46.261 -1.9 46.037 -1.559 c
-45.449 -0.676 45.156 0.374 45.156 1.602 c
-48.242 -0.574 -0.647 5.644 re
-49.962 -0.574 -0.646 3.984 re
-50.006 4.453 m
-50.006 4.343 49.977 4.251 49.918 4.174 c
-49.859 4.104 49.763 4.072 49.638 4.072 c
-49.521 4.072 49.426 4.104 49.359 4.174 c
-49.3 4.251 49.271 4.343 49.271 4.453 c
-49.271 4.571 49.3 4.663 49.359 4.733 c
-49.426 4.81 49.521 4.85 49.638 4.85 c
-49.763 4.85 49.859 4.81 49.918 4.733 c
-49.977 4.652 50.006 4.56 50.006 4.453 c
-51.976 1.249 m
-51.637 0.852 l
-51.637 -0.574 l
-50.976 -0.574 l
-50.976 5.071 l
-51.637 5.071 l
-51.637 1.691 l
-52.872 3.41 l
-53.651 3.41 l
-52.387 1.749 l
-53.813 -0.574 l
-53.063 -0.574 l
-h
-55.724 -0.647 m
-55.224 -0.647 54.842 -0.5 54.577 -0.206 c
-54.313 0.087 54.18 0.521 54.18 1.103 c
-54.18 1.573 l
-54.18 2.167 54.305 2.634 54.563 2.969 c
-54.827 3.31 55.188 3.484 55.65 3.484 c
-56.109 3.484 56.451 3.329 56.68 3.027 c
-56.915 2.734 57.036 2.271 57.046 1.646 c
-57.046 1.22 l
-54.827 1.22 l
-54.827 1.132 l
-54.827 0.698 54.904 0.386 55.062 0.191 c
-55.228 0.004 55.459 -0.088 55.753 -0.088 c
-55.948 -0.088 56.121 -0.055 56.268 0.014 c
-56.414 0.091 56.551 0.209 56.68 0.367 c
-57.017 -0.044 l
-56.73 -0.449 56.3 -0.647 55.724 -0.647 c
-55.65 2.925 m
-55.375 2.925 55.172 2.829 55.047 2.645 c
-54.919 2.458 54.845 2.167 54.827 1.778 c
-56.4 1.778 l
-56.4 1.866 l
-56.378 2.248 56.312 2.516 56.194 2.674 c
-56.077 2.84 55.893 2.925 55.65 2.925 c
-60.927 -0.088 m
-61.141 -0.088 61.313 -0.026 61.442 0.103 c
-61.578 0.239 61.651 0.43 61.663 0.675 c
-62.28 0.675 l
-62.257 0.294 62.122 -0.026 61.868 -0.279 c
-61.611 -0.526 61.299 -0.647 60.927 -0.647 c
-60.435 -0.647 60.06 -0.497 59.795 -0.191 c
-59.538 0.121 59.413 0.588 59.413 1.205 c
-59.413 1.646 l
-59.413 2.241 59.538 2.697 59.795 3.013 c
-60.06 3.326 60.435 3.484 60.927 3.484 c
-61.328 3.484 61.648 3.351 61.883 3.087 c
-62.125 2.829 62.257 2.484 62.28 2.043 c
-61.663 2.043 l
-61.64 2.337 61.567 2.557 61.442 2.705 c
-61.324 2.851 61.152 2.925 60.927 2.925 c
-60.633 2.925 60.416 2.826 60.281 2.631 c
-60.141 2.443 60.067 2.135 60.06 1.705 c
-60.06 1.19 l
-60.06 0.72 60.126 0.386 60.266 0.191 c
-60.412 0.004 60.633 -0.088 60.927 -0.088 c
-63.676 2.998 m
-63.93 3.322 64.25 3.484 64.632 3.484 c
-65.337 3.484 65.694 3.013 65.704 2.072 c
-65.704 -0.574 l
-65.058 -0.574 l
-65.058 2.043 l
-65.058 2.356 65.002 2.576 64.896 2.705 c
-64.786 2.829 64.632 2.896 64.426 2.896 c
-64.268 2.896 64.121 2.84 63.984 2.734 c
-63.856 2.624 63.753 2.487 63.676 2.322 c
-63.676 -0.574 l
-63.03 -0.574 l
-63.03 5.071 l
-63.676 5.071 l
-h
-68.086 -0.647 m
-67.586 -0.647 67.204 -0.5 66.939 -0.206 c
-66.675 0.087 66.542 0.521 66.542 1.103 c
-66.542 1.573 l
-66.542 2.167 66.667 2.634 66.924 2.969 c
-67.189 3.31 67.549 3.484 68.013 3.484 c
-68.472 3.484 68.813 3.329 69.041 3.027 c
-69.276 2.734 69.397 2.271 69.409 1.646 c
-69.409 1.22 l
-67.189 1.22 l
-67.189 1.132 l
-67.189 0.698 67.267 0.386 67.425 0.191 c
-67.589 0.004 67.821 -0.088 68.115 -0.088 c
-68.31 -0.088 68.483 -0.055 68.63 0.014 c
-68.777 0.091 68.913 0.209 69.041 0.367 c
-69.38 -0.044 l
-69.093 -0.449 68.663 -0.647 68.086 -0.647 c
-68.013 2.925 m
-67.737 2.925 67.535 2.829 67.41 2.645 c
-67.281 2.458 67.207 2.167 67.189 1.778 c
-68.761 1.778 l
-68.761 1.866 l
-68.74 2.248 68.674 2.516 68.556 2.674 c
-68.439 2.84 68.254 2.925 68.013 2.925 c
-71.57 -0.088 m
-71.782 -0.088 71.955 -0.026 72.084 0.103 c
-72.22 0.239 72.293 0.43 72.304 0.675 c
-72.921 0.675 l
-72.9 0.294 72.763 -0.026 72.51 -0.279 c
-72.253 -0.526 71.94 -0.647 71.57 -0.647 c
-71.077 -0.647 70.702 -0.497 70.438 -0.191 c
-70.18 0.121 70.055 0.588 70.055 1.205 c
-70.055 1.646 l
-70.055 2.241 70.18 2.697 70.438 3.013 c
-70.702 3.326 71.077 3.484 71.57 3.484 c
-71.97 3.484 72.289 3.351 72.524 3.087 c
-72.767 2.829 72.9 2.484 72.921 2.043 c
-72.304 2.043 l
-72.283 2.337 72.208 2.557 72.084 2.705 c
-71.967 2.851 71.793 2.925 71.57 2.925 c
-71.275 2.925 71.059 2.826 70.922 2.631 c
-70.783 2.443 70.71 2.135 70.702 1.705 c
-70.702 1.19 l
-70.702 0.72 70.768 0.386 70.908 0.191 c
-71.055 0.004 71.275 -0.088 71.57 -0.088 c
-74.671 1.249 m
-74.333 0.852 l
-74.333 -0.574 l
-73.671 -0.574 l
-73.671 5.071 l
-74.333 5.071 l
-74.333 1.691 l
-75.568 3.41 l
-76.347 3.41 l
-75.082 1.749 l
-76.508 -0.574 l
-75.759 -0.574 l
-h
-76.935 1.602 m
-76.935 2.179 77.07 2.634 77.346 2.969 c
-77.629 3.31 78 3.484 78.463 3.484 c
-78.922 3.484 79.29 3.314 79.566 2.984 c
-79.849 2.66 79.996 2.212 80.007 1.646 c
-80.007 1.22 l
-80.007 0.65 79.863 0.195 79.58 -0.148 c
-79.304 -0.482 78.937 -0.647 78.478 -0.647 c
-78.015 -0.647 77.644 -0.485 77.361 -0.162 c
-77.085 0.168 76.942 0.61 76.935 1.161 c
-h
-77.581 1.22 m
-77.581 0.816 77.658 0.5 77.816 0.264 c
-77.982 0.029 78.203 -0.088 78.478 -0.088 c
-79.044 -0.088 79.338 0.323 79.36 1.146 c
-79.36 1.602 l
-79.36 2.003 79.275 2.322 79.11 2.557 c
-78.952 2.8 78.735 2.925 78.463 2.925 c
-78.199 2.925 77.982 2.8 77.816 2.557 c
-77.658 2.322 77.581 2.003 77.581 1.602 c
-h
-82.873 -0.221 m
-82.656 -0.507 82.344 -0.647 81.932 -0.647 c
-81.569 -0.647 81.293 -0.526 81.109 -0.279 c
-80.933 -0.026 80.837 0.338 80.83 0.808 c
-80.83 3.41 l
-81.477 3.41 l
-81.477 0.867 l
-81.477 0.239 81.66 -0.073 82.035 -0.073 c
-82.436 -0.073 82.712 0.103 82.858 0.455 c
-82.858 3.41 l
-83.505 3.41 l
-83.505 -0.574 l
-82.888 -0.574 l
-h
-85.342 4.365 m
-85.342 3.41 l
-85.945 3.41 l
-85.945 2.881 l
-85.342 2.881 l
-85.342 0.411 l
-85.342 0.253 85.365 0.135 85.416 0.058 c
-85.475 -0.023 85.563 -0.059 85.681 -0.059 c
-85.769 -0.059 85.857 -0.044 85.945 -0.015 c
-85.945 -0.574 l
-85.798 -0.621 85.644 -0.647 85.49 -0.647 c
-85.232 -0.647 85.037 -0.555 84.902 -0.368 c
-84.762 -0.184 84.696 0.077 84.696 0.411 c
-84.696 2.881 l
-84.093 2.881 l
-84.093 3.41 l
-84.696 3.41 l
-84.696 4.365 l
-h
-88.65 0.44 m
-88.65 0.588 88.594 0.709 88.488 0.808 c
-88.378 0.904 88.172 1.022 87.871 1.161 c
-87.525 1.308 87.283 1.429 87.136 1.529 c
-86.988 1.635 86.878 1.753 86.812 1.881 c
-86.743 2.006 86.71 2.164 86.71 2.352 c
-86.71 2.674 86.827 2.944 87.063 3.16 c
-87.298 3.374 87.599 3.484 87.973 3.484 c
-88.356 3.484 88.665 3.37 88.9 3.145 c
-89.135 2.917 89.253 2.631 89.253 2.278 c
-88.605 2.278 l
-88.605 2.454 88.547 2.605 88.429 2.734 c
-88.312 2.859 88.158 2.925 87.973 2.925 c
-87.775 2.925 87.624 2.869 87.518 2.763 c
-87.408 2.664 87.356 2.532 87.356 2.366 c
-87.356 2.238 87.393 2.131 87.474 2.043 c
-87.551 1.962 87.742 1.859 88.047 1.734 c
-88.525 1.547 88.856 1.359 89.032 1.176 c
-89.208 0.999 89.297 0.771 89.297 0.5 c
-89.297 0.147 89.172 -0.133 88.929 -0.339 c
-88.694 -0.544 88.378 -0.647 87.988 -0.647 c
-87.566 -0.647 87.227 -0.53 86.974 -0.294 c
-86.716 -0.052 86.592 0.253 86.592 0.617 c
-87.239 0.617 l
-87.246 0.389 87.316 0.213 87.445 0.087 c
-87.57 -0.03 87.753 -0.088 87.988 -0.088 c
-88.201 -0.088 88.363 -0.04 88.474 0.058 c
-88.591 0.154 88.65 0.282 88.65 0.44 c
-90.149 -1.646 m
-89.752 -1.382 l
-89.987 -1.058 90.109 -0.724 90.12 -0.383 c
-90.12 0.235 l
-90.781 0.235 l
-90.781 -0.294 l
-90.781 -0.551 90.715 -0.798 90.59 -1.044 c
-90.473 -1.287 90.325 -1.488 90.149 -1.646 c
-94.72 -0.088 m
-94.934 -0.088 95.106 -0.026 95.235 0.103 c
-95.371 0.239 95.445 0.43 95.455 0.675 c
-96.073 0.675 l
-96.05 0.294 95.915 -0.026 95.661 -0.279 c
-95.404 -0.526 95.092 -0.647 94.72 -0.647 c
-94.228 -0.647 93.853 -0.497 93.589 -0.191 c
-93.332 0.121 93.207 0.588 93.207 1.205 c
-93.207 1.646 l
-93.207 2.241 93.332 2.697 93.589 3.013 c
-93.853 3.326 94.228 3.484 94.72 3.484 c
-95.121 3.484 95.441 3.351 95.676 3.087 c
-95.919 2.829 96.05 2.484 96.073 2.043 c
-95.455 2.043 l
-95.433 2.337 95.36 2.557 95.235 2.705 c
-95.117 2.851 94.944 2.925 94.72 2.925 c
-94.427 2.925 94.209 2.826 94.074 2.631 c
-93.934 2.443 93.86 2.135 93.853 1.705 c
-93.853 1.19 l
-93.853 0.72 93.92 0.386 94.059 0.191 c
-94.206 0.004 94.427 -0.088 94.72 -0.088 c
-96.69 1.602 m
-96.69 2.179 96.826 2.634 97.101 2.969 c
-97.384 3.31 97.756 3.484 98.219 3.484 c
-98.678 3.484 99.046 3.314 99.321 2.984 c
-99.605 2.66 99.751 2.212 99.763 1.646 c
-99.763 1.22 l
-99.763 0.65 99.619 0.195 99.335 -0.148 c
-99.06 -0.482 98.693 -0.647 98.234 -0.647 c
-97.77 -0.647 97.399 -0.485 97.116 -0.162 c
-96.841 0.168 96.698 0.61 96.69 1.161 c
-h
-97.336 1.22 m
-97.336 0.816 97.414 0.5 97.572 0.264 c
-97.737 0.029 97.958 -0.088 98.234 -0.088 c
-98.799 -0.088 99.094 0.323 99.115 1.146 c
-99.115 1.602 l
-99.115 2.003 99.031 2.322 98.865 2.557 c
-98.707 2.8 98.491 2.925 98.219 2.925 c
-97.954 2.925 97.737 2.8 97.572 2.557 c
-97.414 2.322 97.336 2.003 97.336 1.602 c
-h
-101.217 3.41 m
-101.232 3.042 l
-101.475 3.337 101.795 3.484 102.188 3.484 c
-102.628 3.484 102.938 3.285 103.114 2.896 c
-103.368 3.285 103.717 3.484 104.157 3.484 c
-104.892 3.484 105.267 3.021 105.289 2.102 c
-105.289 -0.574 l
-104.642 -0.574 l
-104.642 2.043 l
-104.642 2.337 104.587 2.55 104.48 2.69 c
-104.382 2.826 104.209 2.896 103.966 2.896 c
-103.767 2.896 103.606 2.815 103.481 2.66 c
-103.364 2.514 103.293 2.322 103.275 2.087 c
-103.275 -0.574 l
-102.614 -0.574 l
-102.614 2.072 l
-102.614 2.62 102.393 2.896 101.953 2.896 c
-101.618 2.896 101.383 2.734 101.247 2.41 c
-101.247 -0.574 l
-100.6 -0.574 l
-100.6 3.41 l
-h
-106.876 3.41 m
-106.892 3.042 l
-107.134 3.337 107.453 3.484 107.846 3.484 c
-108.288 3.484 108.596 3.285 108.773 2.896 c
-109.026 3.285 109.375 3.484 109.816 3.484 c
-110.551 3.484 110.926 3.021 110.948 2.102 c
-110.948 -0.574 l
-110.302 -0.574 l
-110.302 2.043 l
-110.302 2.337 110.246 2.55 110.14 2.69 c
-110.04 2.826 109.868 2.896 109.625 2.896 c
-109.427 2.896 109.265 2.815 109.14 2.66 c
-109.022 2.514 108.953 2.322 108.935 2.087 c
-108.935 -0.574 l
-108.273 -0.574 l
-108.273 2.072 l
-108.273 2.62 108.052 2.896 107.611 2.896 c
-107.277 2.896 107.042 2.734 106.906 2.41 c
-106.906 -0.574 l
-106.259 -0.574 l
-106.259 3.41 l
-h
-112.623 -0.574 -0.646 3.984 re
-112.668 4.453 m
-112.668 4.343 112.638 4.251 112.58 4.174 c
-112.521 4.104 112.425 4.072 112.301 4.072 c
-112.183 4.072 112.087 4.104 112.021 4.174 c
-111.962 4.251 111.933 4.343 111.933 4.453 c
-111.933 4.571 111.962 4.663 112.021 4.733 c
-112.087 4.81 112.183 4.85 112.301 4.85 c
-112.425 4.85 112.521 4.81 112.58 4.733 c
-112.638 4.652 112.668 4.56 112.668 4.453 c
-114.491 4.365 m
-114.491 3.41 l
-115.093 3.41 l
-115.093 2.881 l
-114.491 2.881 l
-114.491 0.411 l
-114.491 0.253 114.512 0.135 114.564 0.058 c
-114.622 -0.023 114.711 -0.059 114.829 -0.059 c
-114.917 -0.059 115.005 -0.044 115.093 -0.015 c
-115.093 -0.574 l
-114.946 -0.621 114.792 -0.647 114.638 -0.647 c
-114.381 -0.647 114.186 -0.555 114.05 -0.368 c
-113.91 -0.184 113.844 0.077 113.844 0.411 c
-113.844 2.881 l
-113.242 2.881 l
-113.242 3.41 l
-113.844 3.41 l
-113.844 4.365 l
-h
-117.798 0.44 m
-117.798 0.588 117.743 0.709 117.637 0.808 c
-117.526 0.904 117.321 1.022 117.019 1.161 c
-116.673 1.308 116.431 1.429 116.284 1.529 c
-116.137 1.635 116.027 1.753 115.96 1.881 c
-115.891 2.006 115.858 2.164 115.858 2.352 c
-115.858 2.674 115.975 2.944 116.21 3.16 c
-116.446 3.374 116.747 3.484 117.122 3.484 c
-117.504 3.484 117.813 3.37 118.048 3.145 c
-118.283 2.917 118.401 2.631 118.401 2.278 c
-117.754 2.278 l
-117.754 2.454 117.695 2.605 117.577 2.734 c
-117.46 2.859 117.305 2.925 117.122 2.925 c
-116.924 2.925 116.773 2.869 116.666 2.763 c
-116.556 2.664 116.504 2.532 116.504 2.366 c
-116.504 2.238 116.542 2.131 116.622 2.043 c
-116.699 1.962 116.891 1.859 117.195 1.734 c
-117.673 1.547 118.004 1.359 118.18 1.176 c
-118.356 0.999 118.445 0.771 118.445 0.5 c
-118.445 0.147 118.32 -0.133 118.077 -0.339 c
-117.842 -0.544 117.526 -0.647 117.136 -0.647 c
-116.714 -0.647 116.376 -0.53 116.122 -0.294 c
-115.865 -0.052 115.74 0.253 115.74 0.617 c
-116.386 0.617 l
-116.394 0.389 116.464 0.213 116.592 0.087 c
-116.718 -0.03 116.901 -0.088 117.136 -0.088 c
-117.35 -0.088 117.512 -0.04 117.622 0.058 c
-117.739 0.154 117.798 0.282 117.798 0.44 c
-122.428 -0.647 m
-121.928 -0.647 121.546 -0.5 121.282 -0.206 c
-121.017 0.087 120.885 0.521 120.885 1.103 c
-120.885 1.573 l
-120.885 2.167 121.01 2.634 121.267 2.969 c
-121.531 3.31 121.892 3.484 122.354 3.484 c
-122.814 3.484 123.156 3.329 123.384 3.027 c
-123.619 2.734 123.74 2.271 123.751 1.646 c
-123.751 1.22 l
-121.531 1.22 l
-121.531 1.132 l
-121.531 0.698 121.608 0.386 121.766 0.191 c
-121.932 0.004 122.163 -0.088 122.458 -0.088 c
-122.653 -0.088 122.825 -0.055 122.972 0.014 c
-123.119 0.091 123.255 0.209 123.384 0.367 c
-123.721 -0.044 l
-123.435 -0.449 123.005 -0.647 122.428 -0.647 c
-122.354 2.925 m
-122.079 2.925 121.877 2.829 121.752 2.645 c
-121.623 2.458 121.55 2.167 121.531 1.778 c
-123.104 1.778 l
-123.104 1.866 l
-123.083 2.248 123.016 2.516 122.898 2.674 c
-122.781 2.84 122.597 2.925 122.354 2.925 c
-125.383 4.365 m
-125.383 3.41 l
-125.986 3.41 l
-125.986 2.881 l
-125.383 2.881 l
-125.383 0.411 l
-125.383 0.253 125.404 0.135 125.456 0.058 c
-125.515 -0.023 125.603 -0.059 125.72 -0.059 c
-125.809 -0.059 125.897 -0.044 125.986 -0.015 c
-125.986 -0.574 l
-125.838 -0.621 125.684 -0.647 125.529 -0.647 c
-125.273 -0.647 125.078 -0.555 124.941 -0.368 c
-124.802 -0.184 124.735 0.077 124.735 0.411 c
-124.735 2.881 l
-124.133 2.881 l
-124.133 3.41 l
-124.735 3.41 l
-124.735 4.365 l
-h
-128.132 -0.088 m
-128.344 -0.088 128.517 -0.026 128.646 0.103 c
-128.782 0.239 128.855 0.43 128.866 0.675 c
-129.483 0.675 l
-129.462 0.294 129.325 -0.026 129.072 -0.279 c
-128.814 -0.526 128.502 -0.647 128.132 -0.647 c
-127.639 -0.647 127.264 -0.497 127 -0.191 c
-126.742 0.121 126.617 0.588 126.617 1.205 c
-126.617 1.646 l
-126.617 2.241 126.742 2.697 127 3.013 c
-127.264 3.326 127.639 3.484 128.132 3.484 c
-128.532 3.484 128.851 3.351 129.086 3.087 c
-129.329 2.829 129.462 2.484 129.483 2.043 c
-128.866 2.043 l
-128.845 2.337 128.771 2.557 128.646 2.705 c
-128.529 2.851 128.355 2.925 128.132 2.925 c
-127.837 2.925 127.621 2.826 127.484 2.631 c
-127.345 2.443 127.272 2.135 127.264 1.705 c
-127.264 1.19 l
-127.264 0.72 127.33 0.386 127.47 0.191 c
-127.617 0.004 127.837 -0.088 128.132 -0.088 c
-130.277 -0.221 m
-130.277 -0.103 130.31 -0.008 130.38 0.073 c
-130.447 0.151 130.549 0.191 130.689 0.191 c
-130.836 0.191 130.942 0.151 131.012 0.073 c
-131.089 -0.008 131.13 -0.103 131.13 -0.221 c
-131.13 -0.331 131.089 -0.423 131.012 -0.5 c
-130.942 -0.578 130.836 -0.618 130.689 -0.618 c
-130.549 -0.618 130.447 -0.578 130.38 -0.5 c
-130.31 -0.423 130.277 -0.331 130.277 -0.221 c
-133.614 1.558 m
-133.614 0.47 133.368 -0.497 132.879 -1.338 c
-132.614 -1.786 132.339 -2.11 132.056 -2.308 c
-131.939 -1.881 l
-132.24 -1.588 132.486 -1.135 132.673 -0.53 c
-132.868 0.077 132.967 0.742 132.967 1.469 c
-132.967 1.602 l
-132.967 2.532 132.813 3.366 132.512 4.101 c
-132.342 4.501 132.151 4.821 131.939 5.056 c
-132.056 5.468 l
-132.328 5.28 132.593 4.983 132.849 4.571 c
-133.356 3.719 133.614 2.711 133.614 1.558 c
-136.951 3.41 m
-136.965 3.042 l
-137.208 3.337 137.528 3.484 137.921 3.484 c
-138.362 3.484 138.671 3.285 138.847 2.896 c
-139.101 3.285 139.45 3.484 139.891 3.484 c
-140.625 3.484 141.001 3.021 141.022 2.102 c
-141.022 -0.574 l
-140.375 -0.574 l
-140.375 2.043 l
-140.375 2.337 140.321 2.55 140.214 2.69 c
-140.115 2.826 139.942 2.896 139.7 2.896 c
-139.501 2.896 139.339 2.815 139.214 2.66 c
-139.097 2.514 139.027 2.322 139.008 2.087 c
-139.008 -0.574 l
-138.347 -0.574 l
-138.347 2.072 l
-138.347 2.62 138.127 2.896 137.686 2.896 c
-137.352 2.896 137.117 2.734 136.98 2.41 c
-136.98 -0.574 l
-136.334 -0.574 l
-136.334 3.41 l
-h
-144.036 -0.574 m
-143.995 -0.485 143.97 -0.339 143.962 -0.133 c
-143.727 -0.478 143.433 -0.647 143.08 -0.647 c
-142.717 -0.647 142.434 -0.551 142.228 -0.353 c
-142.029 -0.148 141.934 0.139 141.934 0.515 c
-141.934 0.914 142.07 1.234 142.345 1.469 c
-142.617 1.712 142.992 1.837 143.463 1.837 c
-143.947 1.837 l
-143.947 2.263 l
-143.947 2.499 143.893 2.664 143.785 2.763 c
-143.675 2.869 143.514 2.925 143.301 2.925 c
-143.102 2.925 142.941 2.866 142.816 2.749 c
-142.698 2.631 142.64 2.484 142.64 2.308 c
-141.992 2.308 l
-141.992 2.502 142.052 2.693 142.169 2.881 c
-142.293 3.064 142.455 3.212 142.654 3.322 c
-142.86 3.428 143.087 3.484 143.345 3.484 c
-143.745 3.484 144.051 3.38 144.256 3.175 c
-144.469 2.969 144.583 2.674 144.594 2.293 c
-144.594 0.279 l
-144.594 -0.026 144.631 -0.291 144.712 -0.515 c
-144.712 -0.574 l
-h
-143.168 -0.059 m
-143.334 -0.059 143.484 -0.015 143.625 0.073 c
-143.771 0.162 143.878 0.272 143.947 0.411 c
-143.947 1.352 l
-143.58 1.352 l
-143.264 1.352 143.022 1.282 142.845 1.146 c
-142.669 1.018 142.58 0.83 142.58 0.588 c
-142.58 0.359 142.625 0.195 142.713 0.087 c
-142.801 -0.011 142.952 -0.059 143.168 -0.059 c
-145.462 1.602 m
-145.462 2.208 145.572 2.674 145.8 2.998 c
-146.035 3.322 146.362 3.484 146.785 3.484 c
-147.166 3.484 147.465 3.326 147.681 3.013 c
-147.681 5.071 l
-148.328 5.071 l
-148.328 -0.574 l
-147.74 -0.574 l
-147.696 -0.148 l
-147.49 -0.482 147.185 -0.647 146.785 -0.647 c
-146.372 -0.647 146.05 -0.493 145.815 -0.177 c
-145.579 0.147 145.462 0.602 145.462 1.19 c
-h
-146.108 1.22 m
-146.108 0.779 146.171 0.448 146.299 0.235 c
-146.435 0.029 146.656 -0.073 146.96 -0.073 c
-147.284 -0.073 147.523 0.087 147.681 0.411 c
-147.681 2.425 l
-147.512 2.738 147.273 2.896 146.96 2.896 c
-146.656 2.896 146.435 2.792 146.299 2.587 c
-146.171 2.381 146.108 2.057 146.108 1.616 c
-h
-150.753 -0.647 m
-150.253 -0.647 149.871 -0.5 149.607 -0.206 c
-149.342 0.087 149.21 0.521 149.21 1.103 c
-149.21 1.573 l
-149.21 2.167 149.335 2.634 149.592 2.969 c
-149.857 3.31 150.216 3.484 150.68 3.484 c
-151.139 3.484 151.481 3.329 151.708 3.027 c
-151.944 2.734 152.065 2.271 152.076 1.646 c
-152.076 1.22 l
-149.857 1.22 l
-149.857 1.132 l
-149.857 0.698 149.934 0.386 150.092 0.191 c
-150.257 0.004 150.488 -0.088 150.783 -0.088 c
-150.977 -0.088 151.15 -0.055 151.297 0.014 c
-151.444 0.091 151.58 0.209 151.708 0.367 c
-152.047 -0.044 l
-151.76 -0.449 151.33 -0.647 150.753 -0.647 c
-150.68 2.925 m
-150.404 2.925 150.202 2.829 150.077 2.645 c
-149.948 2.458 149.875 2.167 149.857 1.778 c
-151.429 1.778 l
-151.429 1.866 l
-151.407 2.248 151.341 2.516 151.224 2.674 c
-151.106 2.84 150.922 2.925 150.68 2.925 c
-154.443 1.602 m
-154.443 2.179 154.579 2.634 154.854 2.969 c
-155.137 3.31 155.508 3.484 155.972 3.484 c
-156.431 3.484 156.798 3.314 157.073 2.984 c
-157.357 2.66 157.503 2.212 157.515 1.646 c
-157.515 1.22 l
-157.515 0.65 157.372 0.195 157.088 -0.148 c
-156.813 -0.482 156.445 -0.647 155.986 -0.647 c
-155.523 -0.647 155.151 -0.485 154.869 -0.162 c
-154.594 0.168 154.45 0.61 154.443 1.161 c
-h
-155.089 1.22 m
-155.089 0.816 155.166 0.5 155.325 0.264 c
-155.49 0.029 155.71 -0.088 155.986 -0.088 c
-156.552 -0.088 156.846 0.323 156.868 1.146 c
-156.868 1.602 l
-156.868 2.003 156.784 2.322 156.618 2.557 c
-156.46 2.8 156.244 2.925 155.972 2.925 c
-155.706 2.925 155.49 2.8 155.325 2.557 c
-155.166 2.322 155.089 2.003 155.089 1.602 c
-h
-158.97 3.41 m
-158.985 2.969 l
-159.238 3.31 159.562 3.484 159.955 3.484 c
-160.66 3.484 161.017 3.013 161.028 2.072 c
-161.028 -0.574 l
-160.381 -0.574 l
-160.381 2.043 l
-160.381 2.356 160.326 2.576 160.219 2.705 c
-160.109 2.829 159.955 2.896 159.749 2.896 c
-159.591 2.896 159.444 2.84 159.308 2.734 c
-159.18 2.624 159.076 2.487 158.999 2.322 c
-158.999 -0.574 l
-158.353 -0.574 l
-158.353 3.41 l
-h
-164.423 -0.574 -0.647 5.644 re
-165.305 1.602 m
-165.305 2.179 165.441 2.634 165.717 2.969 c
-166 3.31 166.371 3.484 166.834 3.484 c
-167.294 3.484 167.66 3.314 167.936 2.984 c
-168.219 2.66 168.366 2.212 168.377 1.646 c
-168.377 1.22 l
-168.377 0.65 168.234 0.195 167.951 -0.148 c
-167.676 -0.482 167.308 -0.647 166.849 -0.647 c
-166.386 -0.647 166.014 -0.485 165.732 -0.162 c
-165.456 0.168 165.312 0.61 165.305 1.161 c
-h
-165.952 1.22 m
-165.952 0.816 166.029 0.5 166.187 0.264 c
-166.353 0.029 166.573 -0.088 166.849 -0.088 c
-167.415 -0.088 167.708 0.323 167.731 1.146 c
-167.731 1.602 l
-167.731 2.003 167.646 2.322 167.481 2.557 c
-167.323 2.8 167.106 2.925 166.834 2.925 c
-166.569 2.925 166.353 2.8 166.187 2.557 c
-166.029 2.322 165.952 2.003 165.952 1.602 c
-h
-170.596 -0.088 m
-170.81 -0.088 170.983 -0.026 171.111 0.103 c
-171.247 0.239 171.321 0.43 171.332 0.675 c
-171.949 0.675 l
-171.927 0.294 171.791 -0.026 171.537 -0.279 c
-171.28 -0.526 170.968 -0.647 170.596 -0.647 c
-170.104 -0.647 169.73 -0.497 169.465 -0.191 c
-169.208 0.121 169.083 0.588 169.083 1.205 c
-169.083 1.646 l
-169.083 2.241 169.208 2.697 169.465 3.013 c
-169.73 3.326 170.104 3.484 170.596 3.484 c
-170.997 3.484 171.317 3.351 171.552 3.087 c
-171.795 2.829 171.927 2.484 171.949 2.043 c
-171.332 2.043 l
-171.31 2.337 171.236 2.557 171.111 2.705 c
-170.993 2.851 170.821 2.925 170.596 2.925 c
-170.303 2.925 170.086 2.826 169.95 2.631 c
-169.81 2.443 169.737 2.135 169.73 1.705 c
-169.73 1.19 l
-169.73 0.72 169.796 0.386 169.935 0.191 c
-170.083 0.004 170.303 -0.088 170.596 -0.088 c
-174.742 -0.574 m
-174.702 -0.485 174.676 -0.339 174.669 -0.133 c
-174.434 -0.478 174.139 -0.647 173.787 -0.647 c
-173.422 -0.647 173.14 -0.551 172.934 -0.353 c
-172.736 -0.148 172.64 0.139 172.64 0.515 c
-172.64 0.914 172.776 1.234 173.052 1.469 c
-173.324 1.712 173.698 1.837 174.169 1.837 c
-174.654 1.837 l
-174.654 2.263 l
-174.654 2.499 174.598 2.664 174.492 2.763 c
-174.382 2.869 174.22 2.925 174.007 2.925 c
-173.808 2.925 173.647 2.866 173.522 2.749 c
-173.405 2.631 173.345 2.484 173.345 2.308 c
-172.699 2.308 l
-172.699 2.502 172.757 2.693 172.875 2.881 c
-173 3.064 173.162 3.212 173.36 3.322 c
-173.566 3.428 173.794 3.484 174.051 3.484 c
-174.452 3.484 174.756 3.38 174.962 3.175 c
-175.176 2.969 175.29 2.674 175.3 2.293 c
-175.3 0.279 l
-175.3 -0.026 175.338 -0.291 175.418 -0.515 c
-175.418 -0.574 l
-h
-173.875 -0.059 m
-174.041 -0.059 174.191 -0.015 174.33 0.073 c
-174.477 0.162 174.584 0.272 174.654 0.411 c
-174.654 1.352 l
-174.286 1.352 l
-173.97 1.352 173.728 1.282 173.551 1.146 c
-173.375 1.018 173.287 0.83 173.287 0.588 c
-173.287 0.359 173.331 0.195 173.419 0.087 c
-173.507 -0.011 173.658 -0.059 173.875 -0.059 c
-177.006 -0.574 -0.647 5.644 re
-181.386 2.792 m
-181.297 2.811 181.199 2.822 181.092 2.822 c
-180.757 2.822 180.522 2.638 180.387 2.278 c
-180.387 -0.574 l
-179.74 -0.574 l
-179.74 3.41 l
-180.372 3.41 l
-180.387 2.998 l
-180.563 3.322 180.805 3.484 181.121 3.484 c
-181.228 3.484 181.316 3.461 181.386 3.424 c
-h
-183.385 -0.647 m
-182.885 -0.647 182.503 -0.5 182.238 -0.206 c
-181.974 0.087 181.842 0.521 181.842 1.103 c
-181.842 1.573 l
-181.842 2.167 181.966 2.634 182.224 2.969 c
-182.488 3.31 182.849 3.484 183.312 3.484 c
-183.771 3.484 184.113 3.329 184.341 3.027 c
-184.576 2.734 184.697 2.271 184.708 1.646 c
-184.708 1.22 l
-182.488 1.22 l
-182.488 1.132 l
-182.488 0.698 182.566 0.386 182.724 0.191 c
-182.889 0.004 183.121 -0.088 183.414 -0.088 c
-183.609 -0.088 183.782 -0.055 183.929 0.014 c
-184.076 0.091 184.212 0.209 184.341 0.367 c
-184.678 -0.044 l
-184.391 -0.449 183.962 -0.647 183.385 -0.647 c
-183.312 2.925 m
-183.036 2.925 182.834 2.829 182.709 2.645 c
-182.581 2.458 182.507 2.167 182.488 1.778 c
-184.061 1.778 l
-184.061 1.866 l
-184.04 2.248 183.973 2.516 183.855 2.674 c
-183.738 2.84 183.554 2.925 183.312 2.925 c
-188.368 1.22 m
-188.368 0.592 188.25 0.121 188.015 -0.191 c
-187.788 -0.497 187.471 -0.647 187.059 -0.647 c
-186.656 -0.647 186.347 -0.497 186.134 -0.191 c
-186.134 -2.103 l
-185.487 -2.103 l
-185.487 3.41 l
-186.075 3.41 l
-186.119 2.969 l
-186.332 3.31 186.641 3.484 187.045 3.484 c
-187.487 3.484 187.813 3.329 188.03 3.027 c
-188.243 2.722 188.357 2.267 188.368 1.66 c
-h
-187.722 1.602 m
-187.722 2.043 187.651 2.366 187.516 2.572 c
-187.376 2.786 187.155 2.896 186.854 2.896 c
-186.538 2.896 186.299 2.741 186.134 2.439 c
-186.134 0.367 l
-186.299 0.062 186.538 -0.088 186.854 -0.088 c
-187.148 -0.088 187.361 0.014 187.501 0.22 c
-187.637 0.434 187.71 0.764 187.722 1.205 c
-h
-189.074 1.602 m
-189.074 2.179 189.21 2.634 189.486 2.969 c
-189.768 3.31 190.139 3.484 190.602 3.484 c
-191.061 3.484 191.429 3.314 191.705 2.984 c
-191.988 2.66 192.135 2.212 192.146 1.646 c
-192.146 1.22 l
-192.146 0.65 192.002 0.195 191.72 -0.148 c
-191.444 -0.482 191.076 -0.647 190.617 -0.647 c
-190.154 -0.647 189.783 -0.485 189.5 -0.162 c
-189.224 0.168 189.081 0.61 189.074 1.161 c
-h
-189.721 1.22 m
-189.721 0.816 189.798 0.5 189.956 0.264 c
-190.121 0.029 190.342 -0.088 190.617 -0.088 c
-191.183 -0.088 191.477 0.323 191.499 1.146 c
-191.499 1.602 l
-191.499 2.003 191.414 2.322 191.249 2.557 c
-191.091 2.8 190.874 2.925 190.602 2.925 c
-190.338 2.925 190.121 2.8 189.956 2.557 c
-189.798 2.322 189.721 2.003 189.721 1.602 c
-h
-194.924 0.44 m
-194.924 0.588 194.869 0.709 194.762 0.808 c
-194.652 0.904 194.446 1.022 194.145 1.161 c
-193.799 1.308 193.557 1.429 193.409 1.529 c
-193.263 1.635 193.153 1.753 193.087 1.881 c
-193.016 2.006 192.983 2.164 192.983 2.352 c
-192.983 2.674 193.101 2.944 193.336 3.16 c
-193.571 3.374 193.873 3.484 194.248 3.484 c
-194.63 3.484 194.938 3.37 195.173 3.145 c
-195.409 2.917 195.526 2.631 195.526 2.278 c
-194.88 2.278 l
-194.88 2.454 194.821 2.605 194.703 2.734 c
-194.585 2.859 194.431 2.925 194.248 2.925 c
-194.049 2.925 193.899 2.869 193.792 2.763 c
-193.682 2.664 193.63 2.532 193.63 2.366 c
-193.63 2.238 193.667 2.131 193.748 2.043 c
-193.825 1.962 194.016 1.859 194.321 1.734 c
-194.799 1.547 195.13 1.359 195.306 1.176 c
-195.483 0.999 195.57 0.771 195.57 0.5 c
-195.57 0.147 195.445 -0.133 195.203 -0.339 c
-194.968 -0.544 194.652 -0.647 194.263 -0.647 c
-193.839 -0.647 193.502 -0.53 193.249 -0.294 c
-192.991 -0.052 192.866 0.253 192.866 0.617 c
-193.513 0.617 l
-193.52 0.389 193.59 0.213 193.719 0.087 c
-193.843 -0.03 194.027 -0.088 194.263 -0.088 c
-194.475 -0.088 194.637 -0.04 194.747 0.058 c
-194.865 0.154 194.924 0.282 194.924 0.44 c
-197.114 -0.574 -0.647 3.984 re
-197.158 4.453 m
-197.158 4.343 197.129 4.251 197.07 4.174 c
-197.012 4.104 196.916 4.072 196.79 4.072 c
-196.673 4.072 196.578 4.104 196.511 4.174 c
-196.453 4.251 196.424 4.343 196.424 4.453 c
-196.424 4.571 196.453 4.663 196.511 4.733 c
-196.578 4.81 196.673 4.85 196.79 4.85 c
-196.916 4.85 197.012 4.81 197.07 4.733 c
-197.129 4.652 197.158 4.56 197.158 4.453 c
-198.98 4.365 m
-198.98 3.41 l
-199.584 3.41 l
-199.584 2.881 l
-198.98 2.881 l
-198.98 0.411 l
-198.98 0.253 199.003 0.135 199.054 0.058 c
-199.113 -0.023 199.202 -0.059 199.319 -0.059 c
-199.407 -0.059 199.495 -0.044 199.584 -0.015 c
-199.584 -0.574 l
-199.437 -0.621 199.282 -0.647 199.128 -0.647 c
-198.87 -0.647 198.676 -0.555 198.54 -0.368 c
-198.4 -0.184 198.334 0.077 198.334 0.411 c
-198.334 2.881 l
-197.731 2.881 l
-197.731 3.41 l
-198.334 3.41 l
-198.334 4.365 l
-h
-200.142 1.602 m
-200.142 2.179 200.278 2.634 200.553 2.969 c
-200.837 3.31 201.208 3.484 201.671 3.484 c
-202.13 3.484 202.498 3.314 202.774 2.984 c
-203.056 2.66 203.203 2.212 203.214 1.646 c
-203.214 1.22 l
-203.214 0.65 203.071 0.195 202.788 -0.148 c
-202.512 -0.482 202.145 -0.647 201.685 -0.647 c
-201.222 -0.647 200.852 -0.485 200.568 -0.162 c
-200.293 0.168 200.149 0.61 200.142 1.161 c
-h
-200.789 1.22 m
-200.789 0.816 200.866 0.5 201.024 0.264 c
-201.189 0.029 201.41 -0.088 201.685 -0.088 c
-202.251 -0.088 202.545 0.323 202.568 1.146 c
-202.568 1.602 l
-202.568 2.003 202.483 2.322 202.317 2.557 c
-202.159 2.8 201.943 2.925 201.671 2.925 c
-201.406 2.925 201.189 2.8 201.024 2.557 c
-200.866 2.322 200.789 2.003 200.789 1.602 c
-h
-205.698 2.792 m
-205.61 2.811 205.511 2.822 205.404 2.822 c
-205.07 2.822 204.835 2.638 204.698 2.278 c
-204.698 -0.574 l
-204.052 -0.574 l
-204.052 3.41 l
-204.684 3.41 l
-204.698 2.998 l
-204.875 3.322 205.118 3.484 205.434 3.484 c
-205.54 3.484 205.629 3.461 205.698 3.424 c
-h
-207.506 0.515 m
-208.226 3.41 l
-208.918 3.41 l
-207.624 -1.132 l
-207.524 -1.474 207.381 -1.735 207.198 -1.912 c
-207.021 -2.087 206.819 -2.176 206.595 -2.176 c
-206.506 -2.176 206.393 -2.153 206.257 -2.117 c
-206.257 -1.573 l
-206.404 -1.588 l
-206.587 -1.588 206.734 -1.544 206.845 -1.455 c
-206.951 -1.367 207.04 -1.209 207.109 -0.985 c
-207.227 -0.544 l
-206.066 3.41 l
-206.772 3.41 l
-h
-209.197 -0.221 m
-209.197 -0.103 209.23 -0.008 209.299 0.073 c
-209.365 0.151 209.469 0.191 209.608 0.191 c
-209.755 0.191 209.862 0.151 209.932 0.073 c
-210.009 -0.008 210.049 -0.103 210.049 -0.221 c
-210.049 -0.331 210.009 -0.423 209.932 -0.5 c
-209.862 -0.578 209.755 -0.618 209.608 -0.618 c
-209.469 -0.618 209.365 -0.578 209.299 -0.5 c
-209.23 -0.423 209.197 -0.331 209.197 -0.221 c
-f
-Q
-0.793 0.801 0.129 0.016 k
-287.665 501.669 234.667 -21.46 re
-f
-0 0 0 0 k
-q 1 0 0 1 356.4047 495.6455 cm
-0 0 m
-0 -1.543 l
--0.103 -1.543 l
--0.79 -1.554 -1.334 -1.764 -1.735 -2.175 c
--2.128 -2.579 -2.367 -3.142 -2.454 -3.865 c
--2.065 -3.418 -1.573 -3.189 -0.985 -3.189 c
--0.309 -3.189 0.228 -3.484 0.632 -4.072 c
-1.033 -4.652 1.235 -5.42 1.235 -6.379 c
-1.235 -6.996 1.118 -7.551 0.882 -8.04 c
-0.654 -8.533 0.331 -8.914 -0.088 -9.186 c
--0.5 -9.462 -0.97 -9.598 -1.5 -9.598 c
--2.352 -9.598 -3.036 -9.26 -3.543 -8.584 c
--4.054 -7.9 -4.307 -6.978 -4.307 -5.82 c
--4.307 -5.144 l
--4.307 -4.116 -4.145 -3.215 -3.821 -2.439 c
--3.499 -1.657 -3.036 -1.058 -2.425 -0.646 c
--1.808 -0.228 -1.095 -0.01 -0.279 0 c
-h
--1.558 -4.704 m
--1.793 -4.704 -1.992 -4.777 -2.146 -4.924 c
--2.304 -5.071 -2.421 -5.247 -2.499 -5.453 c
--2.499 -6.115 l
--2.499 -6.772 -2.41 -7.268 -2.234 -7.599 c
--2.057 -7.923 -1.83 -8.084 -1.544 -8.084 c
--1.249 -8.084 -1.014 -7.93 -0.838 -7.613 c
--0.661 -7.301 -0.573 -6.894 -0.573 -6.394 c
--0.573 -5.894 -0.669 -5.49 -0.852 -5.174 c
--1.029 -4.862 -1.264 -4.704 -1.558 -4.704 c
-2.708 -8.54 m
-2.708 -8.246 2.804 -8.007 3.002 -7.819 c
-3.198 -7.636 3.451 -7.54 3.767 -7.54 c
-4.068 -7.54 4.318 -7.636 4.516 -7.819 c
-4.723 -8.007 4.825 -8.246 4.825 -8.54 c
-4.825 -8.845 4.723 -9.091 4.516 -9.275 c
-4.318 -9.452 4.068 -9.539 3.767 -9.539 c
-3.462 -9.539 3.208 -9.448 3.002 -9.26 c
-2.804 -9.076 2.708 -8.834 2.708 -8.54 c
-15.387 -1.675 m
-13.064 -1.675 l
-13.064 -9.466 l
-11.168 -9.466 l
-11.168 -1.675 l
-8.889 -1.675 l
-8.889 -0.103 l
-15.387 -0.103 l
-h
-20.347 -7.555 m
-17.775 -7.555 l
-17.275 -9.466 l
-15.276 -9.466 l
-18.201 -0.103 l
-19.921 -0.103 l
-22.875 -9.466 l
-20.847 -9.466 l
-h
-18.186 -5.967 m
-19.935 -5.967 l
-19.054 -2.631 l
-h
-30.206 -8.407 m
-29.843 -8.801 29.398 -9.099 28.869 -9.304 c
-28.34 -9.499 27.759 -9.598 27.135 -9.598 c
-26.054 -9.598 25.217 -9.267 24.621 -8.598 c
-24.022 -7.933 23.717 -6.963 23.709 -5.689 c
-23.709 -3.998 l
-23.709 -2.705 23.989 -1.712 24.548 -1.014 c
-25.113 -0.32 25.936 0.03 27.017 0.03 c
-28.035 0.03 28.799 -0.228 29.31 -0.735 c
-29.828 -1.234 30.125 -2.021 30.206 -3.087 c
-28.369 -3.087 l
-28.318 -2.491 28.197 -2.084 28.002 -1.866 c
-27.804 -1.654 27.495 -1.543 27.075 -1.543 c
-26.565 -1.543 26.194 -1.731 25.959 -2.102 c
-25.731 -2.477 25.613 -3.068 25.606 -3.881 c
-25.606 -5.585 l
-25.606 -6.437 25.731 -7.063 25.988 -7.453 c
-26.242 -7.834 26.657 -8.025 27.237 -8.025 c
-27.609 -8.025 27.914 -7.952 28.149 -7.805 c
-28.311 -7.688 l
-28.311 -5.967 l
-26.988 -5.967 l
-26.988 -4.542 l
-30.206 -4.542 l
-h
-38.144 -8.407 m
-37.78 -8.801 37.336 -9.099 36.806 -9.304 c
-36.278 -9.499 35.696 -9.598 35.072 -9.598 c
-33.992 -9.598 33.154 -9.267 32.558 -8.598 c
-31.96 -7.933 31.655 -6.963 31.647 -5.689 c
-31.647 -3.998 l
-31.647 -2.705 31.927 -1.712 32.485 -1.014 c
-33.051 -0.32 33.874 0.03 34.954 0.03 c
-35.972 0.03 36.737 -0.228 37.248 -0.735 c
-37.766 -1.234 38.063 -2.021 38.144 -3.087 c
-36.307 -3.087 l
-36.255 -2.491 36.134 -2.084 35.939 -1.866 c
-35.741 -1.654 35.432 -1.543 35.013 -1.543 c
-34.503 -1.543 34.131 -1.731 33.896 -2.102 c
-33.668 -2.477 33.551 -3.068 33.543 -3.881 c
-33.543 -5.585 l
-33.543 -6.437 33.668 -7.063 33.926 -7.453 c
-34.179 -7.834 34.594 -8.025 35.175 -8.025 c
-35.546 -8.025 35.851 -7.952 36.086 -7.805 c
-36.248 -7.688 l
-36.248 -5.967 l
-34.925 -5.967 l
-34.925 -4.542 l
-38.144 -4.542 l
-h
-41.701 -9.466 -1.896 9.363 re
-49.951 -9.466 m
-48.055 -9.466 l
-45.292 -3.322 l
-45.292 -9.466 l
-43.395 -9.466 l
-43.395 -0.103 l
-45.292 -0.103 l
-48.055 -6.247 l
-48.055 -0.103 l
-49.951 -0.103 l
-h
-58.069 -8.407 m
-57.705 -8.801 57.26 -9.099 56.731 -9.304 c
-56.202 -9.499 55.621 -9.598 54.997 -9.598 c
-53.917 -9.598 53.078 -9.267 52.483 -8.598 c
-51.884 -7.933 51.579 -6.963 51.571 -5.689 c
-51.571 -3.998 l
-51.571 -2.705 51.851 -1.712 52.41 -1.014 c
-52.976 -0.32 53.799 0.03 54.879 0.03 c
-55.897 0.03 56.662 -0.228 57.172 -0.735 c
-57.69 -1.234 57.988 -2.021 58.069 -3.087 c
-56.231 -3.087 l
-56.18 -2.491 56.059 -2.084 55.864 -1.866 c
-55.665 -1.654 55.357 -1.543 54.938 -1.543 c
-54.427 -1.543 54.056 -1.731 53.821 -2.102 c
-53.593 -2.477 53.475 -3.068 53.468 -3.881 c
-53.468 -5.585 l
-53.468 -6.437 53.593 -7.063 53.85 -7.453 c
-54.104 -7.834 54.519 -8.025 55.099 -8.025 c
-55.471 -8.025 55.776 -7.952 56.011 -7.805 c
-56.172 -7.688 l
-56.172 -5.967 l
-54.85 -5.967 l
-54.85 -4.542 l
-58.069 -4.542 l
-h
-65.407 -5.85 m
-64.658 -6.79 l
-64.658 -9.466 l
-62.761 -9.466 l
-62.761 -0.103 l
-64.658 -0.103 l
-64.658 -4.189 l
-65.26 -3.175 l
-66.995 -0.103 l
-69.317 -0.103 l
-66.627 -4.218 l
-69.362 -9.466 l
-67.112 -9.466 l
-h
-76.807 -9.466 m
-74.91 -9.466 l
-72.146 -3.322 l
-72.146 -9.466 l
-70.251 -9.466 l
-70.251 -0.103 l
-72.146 -0.103 l
-74.91 -6.247 l
-74.91 -0.103 l
-76.807 -0.103 l
-h
-85.159 -5.629 m
-85.159 -6.886 84.858 -7.86 84.262 -8.554 c
-83.664 -9.253 82.841 -9.598 81.793 -9.598 c
-80.742 -9.598 79.915 -9.257 79.309 -8.569 c
-78.71 -7.875 78.405 -6.908 78.397 -5.674 c
-78.397 -4.072 l
-78.397 -2.789 78.695 -1.786 79.294 -1.058 c
-79.889 -0.334 80.72 0.03 81.778 0.03 c
-82.814 0.03 83.634 -0.33 84.233 -1.043 c
-84.84 -1.749 85.148 -2.745 85.159 -4.027 c
-h
-83.263 -4.056 m
-83.263 -3.215 83.138 -2.587 82.895 -2.175 c
-82.66 -1.764 82.286 -1.558 81.778 -1.558 c
-81.279 -1.558 80.904 -1.76 80.661 -2.161 c
-80.426 -2.554 80.301 -3.152 80.294 -3.954 c
-80.294 -5.629 l
-80.294 -6.445 80.415 -7.048 80.661 -7.437 c
-80.904 -7.831 81.282 -8.025 81.793 -8.025 c
-82.282 -8.025 82.646 -7.834 82.881 -7.453 c
-83.123 -7.07 83.252 -6.482 83.263 -5.689 c
-h
-92.821 -5.982 m
-93.703 -0.103 l
-95.585 -0.103 l
-93.908 -9.466 l
-92.013 -9.466 l
-90.924 -3.954 l
-89.852 -9.466 l
-87.941 -9.466 l
-86.265 -0.103 l
-88.146 -0.103 l
-89.029 -5.982 l
-90.131 -0.103 l
-91.718 -0.103 l
-h
-103.448 -9.466 m
-101.552 -9.466 l
-98.789 -3.322 l
-98.789 -9.466 l
-96.892 -9.466 l
-96.892 -0.103 l
-98.789 -0.103 l
-101.552 -6.247 l
-101.552 -0.103 l
-103.448 -0.103 l
-h
-114.675 -6.35 m
-114.623 -7.419 114.322 -8.228 113.764 -8.775 c
-113.212 -9.327 112.44 -9.598 111.441 -9.598 c
-110.371 -9.598 109.552 -9.253 108.987 -8.554 c
-108.428 -7.86 108.148 -6.865 108.148 -5.571 c
-108.148 -3.998 l
-108.148 -2.705 108.435 -1.712 109.016 -1.014 c
-109.604 -0.32 110.416 0.03 111.456 0.03 c
-112.474 0.03 113.249 -0.261 113.778 -0.837 c
-114.307 -1.407 114.608 -2.227 114.689 -3.293 c
-112.794 -3.293 l
-112.771 -2.628 112.669 -2.171 112.484 -1.926 c
-112.297 -1.672 111.956 -1.543 111.456 -1.543 c
-110.956 -1.543 110.596 -1.72 110.383 -2.072 c
-110.177 -2.425 110.063 -3.009 110.045 -3.821 c
-110.045 -5.585 l
-110.045 -6.518 110.147 -7.158 110.353 -7.511 c
-110.566 -7.856 110.93 -8.025 111.441 -8.025 c
-111.93 -8.025 112.268 -7.908 112.455 -7.673 c
-112.65 -7.43 112.756 -6.989 112.779 -6.35 c
-h
-122.649 -5.629 m
-122.649 -6.886 122.348 -7.86 121.752 -8.554 c
-121.153 -9.253 120.33 -9.598 119.283 -9.598 c
-118.232 -9.598 117.405 -9.257 116.798 -8.569 c
-116.2 -7.875 115.894 -6.908 115.888 -5.674 c
-115.888 -4.072 l
-115.888 -2.789 116.185 -1.786 116.784 -1.058 c
-117.379 -0.334 118.21 0.03 119.268 0.03 c
-120.305 0.03 121.124 -0.33 121.723 -1.043 c
-122.329 -1.749 122.638 -2.745 122.649 -4.027 c
-h
-120.752 -4.056 m
-120.752 -3.215 120.628 -2.587 120.385 -2.175 c
-120.15 -1.764 119.775 -1.558 119.268 -1.558 c
-118.768 -1.558 118.394 -1.76 118.151 -2.161 c
-117.916 -2.554 117.791 -3.152 117.783 -3.954 c
-117.783 -5.629 l
-117.783 -6.445 117.905 -7.048 118.151 -7.437 c
-118.394 -7.831 118.772 -8.025 119.283 -8.025 c
-119.771 -8.025 120.135 -7.834 120.37 -7.453 c
-120.613 -7.07 120.742 -6.482 120.752 -5.689 c
-h
-126.695 -0.103 m
-128.473 -6.879 l
-130.223 -0.103 l
-132.692 -0.103 l
-132.692 -9.466 l
-130.796 -9.466 l
-130.796 -6.938 l
-130.973 -3.027 l
-129.105 -9.466 l
-127.812 -9.466 l
-125.945 -3.027 l
-126.121 -6.938 l
-126.121 -9.466 l
-124.226 -9.466 l
-124.226 -0.103 l
-h
-136.962 -0.103 m
-138.741 -6.879 l
-140.49 -0.103 l
-142.96 -0.103 l
-142.96 -9.466 l
-141.063 -9.466 l
-141.063 -6.938 l
-141.24 -3.027 l
-139.372 -9.466 l
-138.079 -9.466 l
-136.212 -3.027 l
-136.389 -6.938 l
-136.389 -9.466 l
-134.493 -9.466 l
-134.493 -0.103 l
-h
-146.74 -9.466 -1.896 9.363 re
-154.322 -1.675 m
-151.999 -1.675 l
-151.999 -9.466 l
-150.103 -9.466 l
-150.103 -1.675 l
-147.825 -1.675 l
-147.825 -0.103 l
-154.322 -0.103 l
-h
-159.452 -7.011 m
-159.452 -6.629 159.353 -6.342 159.158 -6.144 c
-158.96 -5.949 158.607 -5.747 158.1 -5.541 c
-157.159 -5.182 156.483 -4.762 156.071 -4.292 c
-155.659 -3.814 155.453 -3.245 155.453 -2.587 c
-155.453 -1.804 155.733 -1.172 156.292 -0.69 c
-156.85 -0.213 157.559 0.03 158.422 0.03 c
-159 0.03 159.515 -0.095 159.966 -0.338 c
-160.415 -0.584 160.76 -0.926 160.995 -1.367 c
-161.238 -1.808 161.362 -2.308 161.362 -2.866 c
-159.481 -2.866 l
-159.481 -2.425 159.386 -2.094 159.202 -1.866 c
-159.014 -1.643 158.746 -1.529 158.393 -1.529 c
-158.059 -1.529 157.798 -1.627 157.614 -1.822 c
-157.438 -2.009 157.35 -2.271 157.35 -2.601 c
-157.35 -2.859 157.452 -3.094 157.659 -3.307 c
-157.865 -3.513 158.224 -3.73 158.746 -3.954 c
-159.658 -4.278 160.319 -4.681 160.731 -5.159 c
-161.15 -5.641 161.362 -6.254 161.362 -6.996 c
-161.362 -7.812 161.102 -8.448 160.583 -8.907 c
-160.062 -9.371 159.357 -9.598 158.467 -9.598 c
-157.857 -9.598 157.306 -9.473 156.806 -9.231 c
-156.313 -8.977 155.928 -8.621 155.644 -8.158 c
-155.358 -7.688 155.218 -7.14 155.218 -6.512 c
-157.115 -6.512 l
-157.115 -7.052 157.217 -7.445 157.423 -7.688 c
-157.636 -7.933 157.986 -8.055 158.467 -8.055 c
-159.121 -8.055 159.452 -7.709 159.452 -7.011 c
-f
-Q
-0.113 0.082 0.09 0 k
-287.665 471.367 234.667 -12.898 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 292.8568 464.5277 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.646 -0.243 -0.775 -0.367 -0.881 c
--0.496 -0.992 -0.658 -1.08 -0.852 -1.147 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.161 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.926 c
--3.127 -0.819 -3.23 -0.691 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.213 -3.484 -0.014 c
--2.66 0.133 l
--2.642 0.033 -2.616 -0.058 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.367 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.684 -1.992 0.691 -1.999 0.691 c
--2.167 0.728 -2.329 0.771 -2.484 0.823 c
--2.642 0.882 -2.786 0.96 -2.91 1.058 c
--3.039 1.154 -3.142 1.279 -3.219 1.426 c
--3.289 1.573 -3.322 1.756 -3.322 1.985 c
--3.322 2.18 -3.289 2.344 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.837 c
--2.8 2.932 -2.645 3.003 -2.469 3.043 c
--2.293 3.09 -2.102 3.12 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.12 -1.128 3.09 -0.97 3.043 c
--0.804 2.992 -0.669 2.918 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.202 2.344 -0.143 2.182 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.253 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.353 c
--1.294 1.312 -1.117 1.264 -0.941 1.205 c
--0.756 1.147 -0.595 1.066 -0.455 0.97 c
--0.32 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.455 c
--2.26 2.425 -2.319 2.385 -2.366 2.338 c
--2.406 2.297 -2.436 2.249 -2.454 2.19 c
--2.477 2.132 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.779 c
--2.41 1.72 -2.373 1.669 -2.322 1.632 c
--2.263 1.592 -2.201 1.558 -2.131 1.529 c
--2.065 1.5 -1.984 1.47 -1.896 1.44 c
-h
--0.837 -0.014 m
--0.837 0.092 -0.86 0.177 -0.897 0.235 c
--0.926 0.301 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.53 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.529 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.014 c
-6.402 -2.66 m
-6.184 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.396 c
-5.284 -2.315 5.185 -2.219 5.108 -2.102 c
-5.039 -1.984 4.991 -1.855 4.961 -1.72 c
-5.858 -1.617 l
-5.895 -1.753 5.964 -1.859 6.064 -1.94 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.057 6.681 -2.028 c
-6.758 -1.999 6.828 -1.944 6.887 -1.866 c
-6.945 -1.797 6.99 -1.705 7.019 -1.587 c
-7.056 -1.469 7.078 -1.323 7.078 -1.147 c
-7.078 -0.955 l
-7.078 -0.889 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.072 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.215 -0.897 5.108 -0.75 c
-5.009 -0.596 4.935 -0.411 4.888 -0.206 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.771 4.836 1.018 4.888 1.235 c
-4.946 1.448 5.027 1.632 5.137 1.779 c
-5.244 1.933 5.376 2.051 5.534 2.132 c
-5.689 2.22 5.876 2.263 6.093 2.263 c
-6.188 2.263 6.288 2.253 6.387 2.234 c
-6.483 2.213 6.571 2.18 6.652 2.132 c
-6.739 2.08 6.817 2.018 6.887 1.941 c
-6.964 1.86 7.026 1.768 7.078 1.661 c
-7.092 1.661 l
-7.092 1.808 l
-7.1 1.867 7.107 1.918 7.107 1.97 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.151 2.22 c
-8.004 2.22 l
-7.993 2.139 7.982 2.028 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.161 l
-7.975 -1.415 7.938 -1.635 7.871 -1.822 c
-7.802 -2.007 7.699 -2.161 7.563 -2.279 c
-7.423 -2.404 7.258 -2.499 7.063 -2.558 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.53 m
-7.092 0.742 7.067 0.919 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.5 6.729 1.558 6.652 1.588 c
-6.571 1.625 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.621 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.367 c
-5.88 1.279 5.835 1.162 5.799 1.014 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.338 c
-6.049 -0.515 6.211 -0.602 6.417 -0.602 c
-6.483 -0.602 6.556 -0.588 6.637 -0.559 c
-6.725 -0.522 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.176 7.019 -0.029 c
-7.067 0.118 7.092 0.301 7.092 0.53 c
-11.036 -0.646 m
-12.168 -0.646 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.646 l
-10.124 -0.646 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.22 l
-11.036 2.22 l
-h
-10.124 3.514 0.912 -0.676 re
-10.124 2.837 m
-13.597 1.602 m
-13.053 1.602 l
-13.053 2.22 l
-13.641 2.22 l
-13.92 3.117 l
-14.494 3.117 l
-14.494 2.22 l
-15.728 2.22 l
-15.728 1.602 l
-14.494 1.602 l
-14.494 -0.103 l
-14.494 -0.324 l
-14.501 -0.393 14.523 -0.455 14.552 -0.515 c
-14.589 -0.565 14.645 -0.61 14.714 -0.646 c
-14.791 -0.676 14.905 -0.691 15.052 -0.691 c
-15.188 -0.691 15.324 -0.687 15.464 -0.676 c
-15.599 -0.658 15.732 -0.632 15.861 -0.602 c
-15.861 -1.205 l
-15.78 -1.216 15.703 -1.23 15.626 -1.249 c
-15.545 -1.261 15.468 -1.267 15.391 -1.278 c
-15.31 -1.286 15.221 -1.294 15.125 -1.294 c
-15.038 -1.301 14.938 -1.308 14.832 -1.308 c
-14.645 -1.308 14.483 -1.294 14.346 -1.264 c
-14.218 -1.228 14.104 -1.183 14.009 -1.132 c
-13.92 -1.084 13.847 -1.025 13.788 -0.955 c
-13.729 -0.878 13.685 -0.801 13.656 -0.72 c
-13.627 -0.632 13.604 -0.544 13.597 -0.455 c
-13.586 -0.36 13.582 -0.264 13.582 -0.176 c
-h
-21.722 1.602 m
-21.178 1.602 l
-21.178 2.22 l
-21.766 2.22 l
-22.045 3.117 l
-22.618 3.117 l
-22.618 2.22 l
-23.853 2.22 l
-23.853 1.602 l
-22.618 1.602 l
-22.618 -0.103 l
-22.618 -0.324 l
-22.626 -0.393 22.647 -0.455 22.677 -0.515 c
-22.714 -0.565 22.769 -0.61 22.839 -0.646 c
-22.916 -0.676 23.03 -0.691 23.177 -0.691 c
-23.313 -0.691 23.449 -0.687 23.588 -0.676 c
-23.725 -0.658 23.857 -0.632 23.985 -0.602 c
-23.985 -1.205 l
-23.904 -1.216 23.827 -1.23 23.75 -1.249 c
-23.669 -1.261 23.592 -1.267 23.515 -1.278 c
-23.434 -1.286 23.346 -1.294 23.25 -1.294 c
-23.162 -1.301 23.063 -1.308 22.957 -1.308 c
-22.769 -1.308 22.608 -1.294 22.471 -1.264 c
-22.343 -1.228 22.229 -1.183 22.134 -1.132 c
-22.045 -1.084 21.972 -1.025 21.913 -0.955 c
-21.854 -0.878 21.81 -0.801 21.781 -0.72 c
-21.751 -0.632 21.729 -0.544 21.722 -0.455 c
-21.71 -0.36 21.707 -0.264 21.707 -0.176 c
-h
-26.136 -1.323 m
-25.966 -1.323 25.816 -1.301 25.679 -1.264 c
-25.551 -1.216 25.437 -1.147 25.342 -1.058 c
-25.253 -0.97 25.184 -0.864 25.136 -0.735 c
-25.084 -0.599 25.062 -0.448 25.062 -0.279 c
-25.062 -0.073 25.095 0.096 25.165 0.235 c
-25.232 0.382 25.327 0.493 25.444 0.574 c
-25.569 0.661 25.712 0.724 25.87 0.765 c
-26.036 0.802 26.213 0.827 26.4 0.838 c
-27.12 0.852 l
-27.12 1.029 l
-27.12 1.147 27.109 1.249 27.09 1.338 c
-27.069 1.426 27.036 1.492 26.988 1.544 c
-26.947 1.602 26.9 1.639 26.841 1.661 c
-26.782 1.679 26.716 1.691 26.649 1.691 c
-26.58 1.691 26.518 1.679 26.458 1.661 c
-26.408 1.65 26.36 1.625 26.312 1.588 c
-26.271 1.558 26.238 1.507 26.209 1.44 c
-26.186 1.382 26.172 1.301 26.165 1.205 c
-25.224 1.249 l
-25.253 1.397 25.297 1.532 25.356 1.661 c
-25.423 1.786 25.518 1.897 25.635 1.985 c
-25.753 2.08 25.893 2.153 26.061 2.205 c
-26.238 2.253 26.444 2.278 26.679 2.278 c
-27.12 2.278 27.451 2.168 27.678 1.955 c
-27.914 1.75 28.031 1.44 28.031 1.029 c
-28.031 -0.235 l
-28.031 -0.455 l
-28.039 -0.515 28.054 -0.569 28.075 -0.617 c
-28.094 -0.658 28.123 -0.691 28.164 -0.72 c
-28.201 -0.742 28.252 -0.75 28.311 -0.75 c
-28.376 -0.75 28.447 -0.746 28.517 -0.735 c
-28.517 -1.22 l
-28.457 -1.23 28.403 -1.242 28.355 -1.249 c
-28.314 -1.261 28.274 -1.267 28.237 -1.278 c
-28.197 -1.286 28.153 -1.294 28.105 -1.294 c
-28.054 -1.301 27.995 -1.308 27.929 -1.308 c
-27.701 -1.308 27.535 -1.257 27.429 -1.147 c
-27.318 -1.029 27.256 -0.864 27.237 -0.646 c
-27.223 -0.646 l
-27.154 -0.757 27.083 -0.852 27.017 -0.941 c
-26.947 -1.022 26.87 -1.087 26.782 -1.147 c
-26.693 -1.205 26.595 -1.249 26.488 -1.278 c
-26.389 -1.308 26.271 -1.323 26.136 -1.323 c
-27.12 0.353 m
-26.693 0.339 l
-26.595 0.339 26.503 0.331 26.414 0.324 c
-26.333 0.312 26.267 0.287 26.209 0.25 c
-26.15 0.21 26.098 0.15 26.061 0.073 c
-26.021 0.004 26.003 -0.088 26.003 -0.206 c
-26.003 -0.374 26.036 -0.496 26.106 -0.573 c
-26.172 -0.654 26.271 -0.691 26.4 -0.691 c
-26.506 -0.691 26.606 -0.669 26.693 -0.617 c
-26.789 -0.569 26.87 -0.507 26.929 -0.426 c
-26.995 -0.349 27.046 -0.261 27.076 -0.162 c
-27.106 -0.055 27.12 0.059 27.12 0.177 c
-h
-30.769 -2.66 m
-30.552 -2.66 30.361 -2.635 30.196 -2.587 c
-30.027 -2.547 29.887 -2.484 29.77 -2.396 c
-29.652 -2.315 29.552 -2.219 29.475 -2.102 c
-29.406 -1.984 29.358 -1.855 29.328 -1.72 c
-30.225 -1.617 l
-30.262 -1.753 30.331 -1.859 30.431 -1.94 c
-30.527 -2.028 30.651 -2.072 30.799 -2.072 c
-30.886 -2.072 30.967 -2.057 31.048 -2.028 c
-31.125 -1.999 31.195 -1.944 31.254 -1.866 c
-31.313 -1.797 31.357 -1.705 31.387 -1.587 c
-31.424 -1.469 31.445 -1.323 31.445 -1.147 c
-31.445 -0.955 l
-31.445 -0.889 31.449 -0.831 31.46 -0.779 c
-31.46 -0.588 l
-31.445 -0.588 l
-31.346 -0.816 31.202 -0.977 31.019 -1.072 c
-30.832 -1.172 30.626 -1.22 30.402 -1.22 c
-30.196 -1.22 30.012 -1.183 29.858 -1.103 c
-29.71 -1.014 29.582 -0.897 29.475 -0.75 c
-29.376 -0.596 29.303 -0.411 29.255 -0.206 c
-29.203 0.008 29.182 0.243 29.182 0.5 c
-29.182 0.771 29.203 1.018 29.255 1.235 c
-29.313 1.448 29.394 1.632 29.505 1.779 c
-29.612 1.933 29.743 2.051 29.901 2.132 c
-30.057 2.22 30.244 2.263 30.46 2.263 c
-30.556 2.263 30.655 2.253 30.755 2.234 c
-30.85 2.213 30.938 2.18 31.019 2.132 c
-31.107 2.08 31.185 2.018 31.254 1.941 c
-31.331 1.86 31.393 1.768 31.445 1.661 c
-31.46 1.661 l
-31.46 1.808 l
-31.468 1.867 31.474 1.918 31.474 1.97 c
-31.482 2.028 31.489 2.076 31.489 2.117 c
-31.497 2.165 31.507 2.198 31.519 2.22 c
-32.371 2.22 l
-32.361 2.139 32.349 2.028 32.342 1.881 c
-32.342 1.411 l
-32.342 -1.161 l
-32.342 -1.415 32.305 -1.635 32.239 -1.822 c
-32.17 -2.007 32.066 -2.161 31.931 -2.279 c
-31.79 -2.404 31.625 -2.499 31.43 -2.558 c
-31.233 -2.624 31.011 -2.66 30.769 -2.66 c
-31.46 0.53 m
-31.46 0.742 31.434 0.919 31.387 1.058 c
-31.346 1.205 31.291 1.323 31.225 1.411 c
-31.166 1.5 31.096 1.558 31.019 1.588 c
-30.938 1.625 30.861 1.646 30.784 1.646 c
-30.684 1.646 30.593 1.621 30.504 1.573 c
-30.424 1.532 30.358 1.463 30.298 1.367 c
-30.248 1.279 30.203 1.162 30.167 1.014 c
-30.137 0.875 30.122 0.706 30.122 0.5 c
-30.122 0.125 30.181 -0.154 30.298 -0.338 c
-30.416 -0.515 30.578 -0.602 30.784 -0.602 c
-30.85 -0.602 30.923 -0.588 31.004 -0.559 c
-31.092 -0.522 31.166 -0.463 31.225 -0.382 c
-31.291 -0.294 31.346 -0.176 31.387 -0.029 c
-31.434 0.118 31.46 0.301 31.46 0.53 c
-f
-Q
-q 1 0 0 1 482.8862 448.9472 cm
-0 0 m
-2.103 0 l
-2.103 -0.574 l
--0.675 -0.574 l
--0.675 4.777 l
-0 4.777 l
-h
-3.514 -0.574 -0.647 3.984 re
-3.558 4.453 m
-3.558 4.343 3.528 4.251 3.469 4.174 c
-3.41 4.104 3.315 4.072 3.19 4.072 c
-3.072 4.072 2.977 4.104 2.911 4.174 c
-2.852 4.251 2.822 4.343 2.822 4.453 c
-2.822 4.571 2.852 4.663 2.911 4.733 c
-2.977 4.81 3.072 4.85 3.19 4.85 c
-3.315 4.85 3.41 4.81 3.469 4.733 c
-3.528 4.652 3.558 4.56 3.558 4.453 c
-6.468 0.44 m
-6.468 0.588 6.413 0.709 6.306 0.808 c
-6.196 0.904 5.99 1.022 5.689 1.161 c
-5.343 1.308 5.101 1.429 4.954 1.529 c
-4.807 1.635 4.696 1.753 4.63 1.881 c
-4.561 2.006 4.528 2.164 4.528 2.352 c
-4.528 2.674 4.645 2.944 4.881 3.16 c
-5.116 3.374 5.417 3.484 5.792 3.484 c
-6.174 3.484 6.483 3.37 6.718 3.145 c
-6.953 2.917 7.071 2.631 7.071 2.278 c
-6.423 2.278 l
-6.423 2.454 6.365 2.605 6.247 2.734 c
-6.13 2.859 5.976 2.925 5.792 2.925 c
-5.594 2.925 5.442 2.869 5.336 2.763 c
-5.226 2.664 5.174 2.532 5.174 2.366 c
-5.174 2.238 5.211 2.131 5.292 2.043 c
-5.369 1.962 5.56 1.859 5.866 1.734 c
-6.342 1.547 6.674 1.359 6.85 1.176 c
-7.026 0.999 7.115 0.771 7.115 0.5 c
-7.115 0.147 6.99 -0.133 6.747 -0.339 c
-6.512 -0.544 6.196 -0.647 5.806 -0.647 c
-5.384 -0.647 5.046 -0.53 4.792 -0.294 c
-4.535 -0.052 4.41 0.253 4.41 0.617 c
-5.056 0.617 l
-5.064 0.389 5.134 0.213 5.262 0.087 c
-5.388 -0.03 5.571 -0.088 5.806 -0.088 c
-6.02 -0.088 6.182 -0.04 6.292 0.058 c
-6.409 0.154 6.468 0.282 6.468 0.44 c
-8.805 4.365 m
-8.805 3.41 l
-9.407 3.41 l
-9.407 2.881 l
-8.805 2.881 l
-8.805 0.411 l
-8.805 0.253 8.827 0.135 8.879 0.058 c
-8.937 -0.023 9.025 -0.059 9.143 -0.059 c
-9.232 -0.059 9.32 -0.044 9.407 -0.015 c
-9.407 -0.574 l
-9.261 -0.621 9.106 -0.647 8.952 -0.647 c
-8.694 -0.647 8.5 -0.555 8.364 -0.368 c
-8.224 -0.184 8.158 0.077 8.158 0.411 c
-8.158 2.881 l
-7.556 2.881 l
-7.556 3.41 l
-8.158 3.41 l
-8.158 4.365 l
-h
-13.935 -0.574 m
-13.895 -0.485 13.868 -0.339 13.862 -0.133 c
-13.627 -0.478 13.332 -0.647 12.979 -0.647 c
-12.615 -0.647 12.333 -0.551 12.127 -0.353 c
-11.929 -0.148 11.833 0.139 11.833 0.515 c
-11.833 0.914 11.969 1.234 12.245 1.469 c
-12.517 1.712 12.891 1.837 13.361 1.837 c
-13.847 1.837 l
-13.847 2.263 l
-13.847 2.499 13.791 2.664 13.685 2.763 c
-13.575 2.869 13.413 2.925 13.2 2.925 c
-13.002 2.925 12.84 2.866 12.715 2.749 c
-12.597 2.631 12.538 2.484 12.538 2.308 c
-11.892 2.308 l
-11.892 2.502 11.95 2.693 12.068 2.881 c
-12.193 3.064 12.355 3.212 12.553 3.322 c
-12.759 3.428 12.987 3.484 13.244 3.484 c
-13.645 3.484 13.949 3.38 14.155 3.175 c
-14.369 2.969 14.483 2.674 14.494 2.293 c
-14.494 0.279 l
-14.494 -0.026 14.531 -0.291 14.612 -0.515 c
-14.612 -0.574 l
-h
-13.068 -0.059 m
-13.233 -0.059 13.384 -0.015 13.523 0.073 c
-13.671 0.162 13.777 0.272 13.847 0.411 c
-13.847 1.352 l
-13.479 1.352 l
-13.163 1.352 12.921 1.282 12.744 1.146 c
-12.568 1.018 12.48 0.83 12.48 0.588 c
-12.48 0.359 12.524 0.195 12.613 0.087 c
-12.7 -0.011 12.85 -0.059 13.068 -0.059 c
-16.199 -0.574 -0.646 5.644 re
-17.918 -0.574 -0.646 5.644 re
-21.505 4.365 m
-21.505 3.41 l
-22.107 3.41 l
-22.107 2.881 l
-21.505 2.881 l
-21.505 0.411 l
-21.505 0.253 21.527 0.135 21.579 0.058 c
-21.637 -0.023 21.725 -0.059 21.843 -0.059 c
-21.931 -0.059 22.02 -0.044 22.107 -0.015 c
-22.107 -0.574 l
-21.961 -0.621 21.806 -0.647 21.652 -0.647 c
-21.394 -0.647 21.2 -0.555 21.064 -0.368 c
-20.924 -0.184 20.858 0.077 20.858 0.411 c
-20.858 2.881 l
-20.256 2.881 l
-20.256 3.41 l
-20.858 3.41 l
-20.858 4.365 l
-h
-24.915 -0.574 m
-24.875 -0.485 24.849 -0.339 24.842 -0.133 c
-24.607 -0.478 24.312 -0.647 23.96 -0.647 c
-23.596 -0.647 23.313 -0.551 23.107 -0.353 c
-22.909 -0.148 22.813 0.139 22.813 0.515 c
-22.813 0.914 22.949 1.234 23.225 1.469 c
-23.497 1.712 23.871 1.837 24.342 1.837 c
-24.827 1.837 l
-24.827 2.263 l
-24.827 2.499 24.772 2.664 24.665 2.763 c
-24.555 2.869 24.393 2.925 24.18 2.925 c
-23.981 2.925 23.82 2.866 23.695 2.749 c
-23.578 2.631 23.518 2.484 23.518 2.308 c
-22.872 2.308 l
-22.872 2.502 22.931 2.693 23.048 2.881 c
-23.173 3.064 23.335 3.212 23.534 3.322 c
-23.74 3.428 23.967 3.484 24.224 3.484 c
-24.625 3.484 24.93 3.38 25.136 3.175 c
-25.349 2.969 25.463 2.674 25.473 2.293 c
-25.473 0.279 l
-25.473 -0.026 25.51 -0.291 25.591 -0.515 c
-25.591 -0.574 l
-h
-24.048 -0.059 m
-24.214 -0.059 24.364 -0.015 24.503 0.073 c
-24.65 0.162 24.757 0.272 24.827 0.411 c
-24.827 1.352 l
-24.459 1.352 l
-24.143 1.352 23.901 1.282 23.724 1.146 c
-23.549 1.018 23.46 0.83 23.46 0.588 c
-23.46 0.359 23.504 0.195 23.592 0.087 c
-23.68 -0.011 23.831 -0.059 24.048 -0.059 c
-26.341 1.602 m
-26.341 2.219 26.451 2.682 26.679 2.998 c
-26.903 3.322 27.237 3.484 27.678 3.484 c
-28.079 3.484 28.384 3.307 28.59 2.954 c
-28.634 3.41 l
-29.222 3.41 l
-29.222 -0.618 l
-29.222 -1.106 29.093 -1.484 28.84 -1.75 c
-28.582 -2.014 28.23 -2.147 27.782 -2.147 c
-27.583 -2.147 27.362 -2.095 27.12 -1.999 c
-26.874 -1.9 26.693 -1.779 26.576 -1.632 c
-26.841 -1.191 l
-27.106 -1.455 27.403 -1.588 27.738 -1.588 c
-28.274 -1.588 28.55 -1.294 28.561 -0.706 c
-28.561 -0.177 l
-28.355 -0.493 28.054 -0.647 27.664 -0.647 c
-27.252 -0.647 26.929 -0.497 26.693 -0.191 c
-26.466 0.121 26.348 0.573 26.341 1.161 c
-h
-27.002 1.22 m
-27.002 0.779 27.065 0.448 27.194 0.235 c
-27.318 0.029 27.535 -0.073 27.84 -0.073 c
-28.164 -0.073 28.403 0.091 28.561 0.426 c
-28.561 2.41 l
-28.392 2.734 28.153 2.896 27.84 2.896 c
-27.547 2.896 27.329 2.792 27.194 2.587 c
-27.065 2.381 27.002 2.057 27.002 1.616 c
-h
-32.118 0.44 m
-32.118 0.588 32.062 0.709 31.956 0.808 c
-31.846 0.904 31.64 1.022 31.339 1.161 c
-30.994 1.308 30.751 1.429 30.604 1.529 c
-30.456 1.635 30.346 1.753 30.281 1.881 c
-30.211 2.006 30.177 2.164 30.177 2.352 c
-30.177 2.674 30.295 2.944 30.53 3.16 c
-30.765 3.374 31.067 3.484 31.441 3.484 c
-31.823 3.484 32.133 3.37 32.368 3.145 c
-32.603 2.917 32.721 2.631 32.721 2.278 c
-32.074 2.278 l
-32.074 2.454 32.015 2.605 31.898 2.734 c
-31.78 2.859 31.625 2.925 31.441 2.925 c
-31.243 2.925 31.092 2.869 30.986 2.763 c
-30.876 2.664 30.824 2.532 30.824 2.366 c
-30.824 2.238 30.861 2.131 30.942 2.043 c
-31.019 1.962 31.21 1.859 31.515 1.734 c
-31.993 1.547 32.324 1.359 32.5 1.176 c
-32.677 0.999 32.764 0.771 32.764 0.5 c
-32.764 0.147 32.64 -0.133 32.397 -0.339 c
-32.162 -0.544 31.846 -0.647 31.456 -0.647 c
-31.034 -0.647 30.695 -0.53 30.442 -0.294 c
-30.185 -0.052 30.059 0.253 30.059 0.617 c
-30.707 0.617 l
-30.714 0.389 30.784 0.213 30.913 0.087 c
-31.037 -0.03 31.221 -0.088 31.456 -0.088 c
-31.669 -0.088 31.831 -0.04 31.941 0.058 c
-32.058 0.154 32.118 0.282 32.118 0.44 c
-33.646 -0.221 m
-33.646 -0.103 33.679 -0.008 33.749 0.073 c
-33.816 0.151 33.918 0.191 34.058 0.191 c
-34.205 0.191 34.312 0.151 34.381 0.073 c
-34.458 -0.008 34.499 -0.103 34.499 -0.221 c
-34.499 -0.331 34.458 -0.423 34.381 -0.5 c
-34.312 -0.578 34.205 -0.618 34.058 -0.618 c
-33.918 -0.618 33.816 -0.578 33.749 -0.5 c
-33.679 -0.423 33.646 -0.331 33.646 -0.221 c
-f
-Q
-0.113 0.082 0.09 0 k
-287.665 441.263 234.667 -12.898 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 292.8568 434.424 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.646 -0.243 -0.775 -0.367 -0.881 c
--0.496 -0.992 -0.658 -1.08 -0.852 -1.147 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.161 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.926 c
--3.127 -0.819 -3.23 -0.69 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.213 -3.484 -0.014 c
--2.66 0.133 l
--2.642 0.033 -2.616 -0.058 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.367 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.684 -1.992 0.691 -1.999 0.691 c
--2.167 0.728 -2.329 0.771 -2.484 0.823 c
--2.642 0.882 -2.786 0.96 -2.91 1.058 c
--3.039 1.154 -3.142 1.279 -3.219 1.426 c
--3.289 1.573 -3.322 1.756 -3.322 1.985 c
--3.322 2.18 -3.289 2.344 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.837 c
--2.8 2.932 -2.645 3.003 -2.469 3.043 c
--2.293 3.09 -2.102 3.12 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.12 -1.128 3.09 -0.97 3.043 c
--0.804 2.992 -0.669 2.918 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.202 2.344 -0.143 2.182 -0.103 1.999 c
--0.941 1.882 l
--1.01 2.253 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.353 c
--1.294 1.312 -1.117 1.264 -0.941 1.205 c
--0.756 1.147 -0.595 1.066 -0.455 0.97 c
--0.32 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.455 c
--2.26 2.425 -2.319 2.385 -2.366 2.338 c
--2.406 2.297 -2.436 2.249 -2.454 2.19 c
--2.477 2.132 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.779 c
--2.41 1.72 -2.373 1.669 -2.322 1.632 c
--2.263 1.592 -2.201 1.558 -2.131 1.529 c
--2.065 1.5 -1.984 1.47 -1.896 1.44 c
-h
--0.837 -0.014 m
--0.837 0.092 -0.86 0.177 -0.897 0.235 c
--0.926 0.301 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.53 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.529 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.014 c
-6.402 -2.66 m
-6.184 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.396 c
-5.284 -2.315 5.185 -2.219 5.108 -2.102 c
-5.039 -1.984 4.991 -1.855 4.961 -1.72 c
-5.858 -1.617 l
-5.895 -1.753 5.964 -1.859 6.064 -1.94 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.057 6.681 -2.028 c
-6.758 -1.999 6.828 -1.944 6.887 -1.866 c
-6.945 -1.797 6.99 -1.705 7.019 -1.587 c
-7.056 -1.469 7.078 -1.323 7.078 -1.147 c
-7.078 -0.955 l
-7.078 -0.889 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.072 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.215 -0.897 5.108 -0.75 c
-5.009 -0.595 4.935 -0.411 4.888 -0.206 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.771 4.836 1.018 4.888 1.235 c
-4.946 1.448 5.027 1.632 5.137 1.779 c
-5.244 1.933 5.376 2.051 5.534 2.132 c
-5.689 2.22 5.876 2.263 6.093 2.263 c
-6.188 2.263 6.288 2.253 6.387 2.234 c
-6.483 2.213 6.571 2.18 6.652 2.132 c
-6.739 2.08 6.817 2.018 6.887 1.941 c
-6.964 1.86 7.026 1.768 7.078 1.661 c
-7.092 1.661 l
-7.092 1.808 l
-7.1 1.867 7.107 1.918 7.107 1.97 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.151 2.22 c
-8.004 2.22 l
-7.993 2.139 7.982 2.028 7.975 1.882 c
-7.975 1.411 l
-7.975 -1.161 l
-7.975 -1.415 7.938 -1.635 7.871 -1.822 c
-7.802 -2.007 7.699 -2.161 7.563 -2.278 c
-7.423 -2.404 7.258 -2.499 7.063 -2.558 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.53 m
-7.092 0.742 7.067 0.919 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.5 6.729 1.558 6.652 1.588 c
-6.571 1.625 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.621 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.367 c
-5.88 1.279 5.835 1.162 5.799 1.014 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.338 c
-6.049 -0.515 6.211 -0.602 6.417 -0.602 c
-6.483 -0.602 6.556 -0.588 6.637 -0.559 c
-6.725 -0.522 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.176 7.019 -0.029 c
-7.067 0.118 7.092 0.301 7.092 0.53 c
-11.036 -0.646 m
-12.168 -0.646 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.646 l
-10.124 -0.646 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.22 l
-11.036 2.22 l
-h
-10.124 3.514 0.912 -0.676 re
-10.124 2.837 m
-13.597 1.602 m
-13.053 1.602 l
-13.053 2.22 l
-13.641 2.22 l
-13.92 3.117 l
-14.494 3.117 l
-14.494 2.22 l
-15.728 2.22 l
-15.728 1.602 l
-14.494 1.602 l
-14.494 -0.103 l
-14.494 -0.324 l
-14.501 -0.393 14.523 -0.455 14.552 -0.515 c
-14.589 -0.565 14.645 -0.61 14.714 -0.646 c
-14.791 -0.676 14.905 -0.69 15.052 -0.69 c
-15.188 -0.69 15.324 -0.687 15.464 -0.676 c
-15.599 -0.658 15.732 -0.632 15.861 -0.602 c
-15.861 -1.205 l
-15.78 -1.216 15.703 -1.23 15.626 -1.249 c
-15.545 -1.261 15.468 -1.267 15.391 -1.278 c
-15.31 -1.286 15.221 -1.294 15.125 -1.294 c
-15.038 -1.301 14.938 -1.308 14.832 -1.308 c
-14.645 -1.308 14.483 -1.294 14.346 -1.264 c
-14.218 -1.228 14.104 -1.183 14.009 -1.132 c
-13.92 -1.084 13.847 -1.025 13.788 -0.955 c
-13.729 -0.878 13.685 -0.801 13.656 -0.72 c
-13.627 -0.632 13.604 -0.544 13.597 -0.455 c
-13.586 -0.36 13.582 -0.264 13.582 -0.176 c
-h
-21.722 1.602 m
-21.178 1.602 l
-21.178 2.22 l
-21.766 2.22 l
-22.045 3.117 l
-22.618 3.117 l
-22.618 2.22 l
-23.853 2.22 l
-23.853 1.602 l
-22.618 1.602 l
-22.618 -0.103 l
-22.618 -0.324 l
-22.626 -0.393 22.647 -0.455 22.677 -0.515 c
-22.714 -0.565 22.769 -0.61 22.839 -0.646 c
-22.916 -0.676 23.03 -0.69 23.177 -0.69 c
-23.313 -0.69 23.449 -0.687 23.588 -0.676 c
-23.725 -0.658 23.857 -0.632 23.985 -0.602 c
-23.985 -1.205 l
-23.904 -1.216 23.827 -1.23 23.75 -1.249 c
-23.669 -1.261 23.592 -1.267 23.515 -1.278 c
-23.434 -1.286 23.346 -1.294 23.25 -1.294 c
-23.162 -1.301 23.063 -1.308 22.957 -1.308 c
-22.769 -1.308 22.608 -1.294 22.471 -1.264 c
-22.343 -1.228 22.229 -1.183 22.134 -1.132 c
-22.045 -1.084 21.972 -1.025 21.913 -0.955 c
-21.854 -0.878 21.81 -0.801 21.781 -0.72 c
-21.751 -0.632 21.729 -0.544 21.722 -0.455 c
-21.71 -0.36 21.707 -0.264 21.707 -0.176 c
-h
-26.136 -1.323 m
-25.966 -1.323 25.816 -1.301 25.679 -1.264 c
-25.551 -1.216 25.437 -1.147 25.342 -1.058 c
-25.253 -0.97 25.184 -0.864 25.136 -0.735 c
-25.084 -0.599 25.062 -0.448 25.062 -0.279 c
-25.062 -0.073 25.095 0.096 25.165 0.235 c
-25.232 0.382 25.327 0.493 25.444 0.574 c
-25.569 0.661 25.712 0.724 25.87 0.765 c
-26.036 0.802 26.213 0.827 26.4 0.838 c
-27.12 0.852 l
-27.12 1.029 l
-27.12 1.147 27.109 1.249 27.09 1.338 c
-27.069 1.426 27.036 1.492 26.988 1.544 c
-26.947 1.602 26.9 1.639 26.841 1.661 c
-26.782 1.679 26.716 1.691 26.649 1.691 c
-26.58 1.691 26.518 1.679 26.458 1.661 c
-26.408 1.65 26.36 1.625 26.312 1.588 c
-26.271 1.558 26.238 1.507 26.209 1.44 c
-26.186 1.382 26.172 1.301 26.165 1.205 c
-25.224 1.249 l
-25.253 1.397 25.297 1.532 25.356 1.661 c
-25.423 1.786 25.518 1.897 25.635 1.985 c
-25.753 2.08 25.893 2.153 26.061 2.205 c
-26.238 2.253 26.444 2.278 26.679 2.278 c
-27.12 2.278 27.451 2.168 27.678 1.955 c
-27.914 1.75 28.031 1.44 28.031 1.029 c
-28.031 -0.235 l
-28.031 -0.455 l
-28.039 -0.515 28.054 -0.569 28.075 -0.617 c
-28.094 -0.658 28.123 -0.69 28.164 -0.72 c
-28.201 -0.742 28.252 -0.75 28.311 -0.75 c
-28.376 -0.75 28.447 -0.746 28.517 -0.735 c
-28.517 -1.22 l
-28.457 -1.23 28.403 -1.242 28.355 -1.249 c
-28.314 -1.261 28.274 -1.267 28.237 -1.278 c
-28.197 -1.286 28.153 -1.294 28.105 -1.294 c
-28.054 -1.301 27.995 -1.308 27.929 -1.308 c
-27.701 -1.308 27.535 -1.257 27.429 -1.147 c
-27.318 -1.029 27.256 -0.864 27.237 -0.646 c
-27.223 -0.646 l
-27.154 -0.757 27.083 -0.852 27.017 -0.941 c
-26.947 -1.022 26.87 -1.087 26.782 -1.147 c
-26.693 -1.205 26.595 -1.249 26.488 -1.278 c
-26.389 -1.308 26.271 -1.323 26.136 -1.323 c
-27.12 0.353 m
-26.693 0.339 l
-26.595 0.339 26.503 0.331 26.414 0.324 c
-26.333 0.312 26.267 0.287 26.209 0.25 c
-26.15 0.21 26.098 0.151 26.061 0.073 c
-26.021 0.004 26.003 -0.088 26.003 -0.206 c
-26.003 -0.374 26.036 -0.496 26.106 -0.573 c
-26.172 -0.654 26.271 -0.69 26.4 -0.69 c
-26.506 -0.69 26.606 -0.669 26.693 -0.617 c
-26.789 -0.569 26.87 -0.507 26.929 -0.426 c
-26.995 -0.349 27.046 -0.261 27.076 -0.162 c
-27.106 -0.055 27.12 0.059 27.12 0.177 c
-h
-30.769 -2.66 m
-30.552 -2.66 30.361 -2.635 30.196 -2.587 c
-30.027 -2.547 29.887 -2.484 29.77 -2.396 c
-29.652 -2.315 29.552 -2.219 29.475 -2.102 c
-29.406 -1.984 29.358 -1.855 29.328 -1.72 c
-30.225 -1.617 l
-30.262 -1.753 30.331 -1.859 30.431 -1.94 c
-30.527 -2.028 30.651 -2.072 30.799 -2.072 c
-30.886 -2.072 30.967 -2.057 31.048 -2.028 c
-31.125 -1.999 31.195 -1.944 31.254 -1.866 c
-31.313 -1.797 31.357 -1.705 31.387 -1.587 c
-31.424 -1.469 31.445 -1.323 31.445 -1.147 c
-31.445 -0.955 l
-31.445 -0.889 31.449 -0.831 31.46 -0.779 c
-31.46 -0.588 l
-31.445 -0.588 l
-31.346 -0.816 31.202 -0.977 31.019 -1.072 c
-30.832 -1.172 30.626 -1.22 30.402 -1.22 c
-30.196 -1.22 30.012 -1.183 29.858 -1.103 c
-29.71 -1.014 29.582 -0.897 29.475 -0.75 c
-29.376 -0.595 29.303 -0.411 29.255 -0.206 c
-29.203 0.008 29.182 0.243 29.182 0.5 c
-29.182 0.771 29.203 1.018 29.255 1.235 c
-29.313 1.448 29.394 1.632 29.505 1.779 c
-29.612 1.933 29.743 2.051 29.901 2.132 c
-30.057 2.22 30.244 2.263 30.46 2.263 c
-30.556 2.263 30.655 2.253 30.755 2.234 c
-30.85 2.213 30.938 2.18 31.019 2.132 c
-31.107 2.08 31.185 2.018 31.254 1.941 c
-31.331 1.86 31.393 1.768 31.445 1.661 c
-31.46 1.661 l
-31.46 1.808 l
-31.468 1.867 31.474 1.918 31.474 1.97 c
-31.482 2.028 31.489 2.076 31.489 2.117 c
-31.497 2.165 31.507 2.198 31.519 2.22 c
-32.371 2.22 l
-32.361 2.139 32.349 2.028 32.342 1.882 c
-32.342 1.411 l
-32.342 -1.161 l
-32.342 -1.415 32.305 -1.635 32.239 -1.822 c
-32.17 -2.007 32.066 -2.161 31.931 -2.278 c
-31.79 -2.404 31.625 -2.499 31.43 -2.558 c
-31.233 -2.624 31.011 -2.66 30.769 -2.66 c
-31.46 0.53 m
-31.46 0.742 31.434 0.919 31.387 1.058 c
-31.346 1.205 31.291 1.323 31.225 1.411 c
-31.166 1.5 31.096 1.558 31.019 1.588 c
-30.938 1.625 30.861 1.646 30.784 1.646 c
-30.684 1.646 30.593 1.621 30.504 1.573 c
-30.424 1.532 30.358 1.463 30.298 1.367 c
-30.248 1.279 30.203 1.162 30.167 1.014 c
-30.137 0.875 30.122 0.706 30.122 0.5 c
-30.122 0.125 30.181 -0.154 30.298 -0.338 c
-30.416 -0.515 30.578 -0.602 30.784 -0.602 c
-30.85 -0.602 30.923 -0.588 31.004 -0.559 c
-31.092 -0.522 31.166 -0.463 31.225 -0.382 c
-31.291 -0.294 31.346 -0.176 31.387 -0.029 c
-31.434 0.118 31.46 0.301 31.46 0.53 c
-38.115 -2.631 m
-38.115 3.514 l
-40.041 3.514 l
-40.041 2.896 l
-38.967 2.896 l
-38.967 -2.013 l
-40.041 -2.013 l
-40.041 -2.631 l
-h
-43.616 -1.264 m
-43.616 0.721 l
-43.616 1.022 43.572 1.242 43.484 1.382 c
-43.403 1.529 43.267 1.602 43.072 1.602 c
-42.962 1.602 42.859 1.577 42.763 1.529 c
-42.676 1.477 42.595 1.411 42.528 1.323 c
-42.47 1.235 42.418 1.124 42.381 1 c
-42.352 0.882 42.337 0.75 42.337 0.603 c
-42.337 -1.264 l
-41.425 -1.264 l
-41.425 1.44 l
-41.425 1.661 l
-41.425 1.75 41.419 1.827 41.411 1.897 c
-41.411 2.087 l
-41.411 2.22 l
-42.264 2.22 l
-42.271 2.19 42.279 2.146 42.279 2.087 c
-42.279 1.897 l
-42.286 1.827 42.293 1.756 42.293 1.691 c
-42.3 1.621 42.308 1.565 42.308 1.529 c
-42.323 1.529 l
-42.441 1.793 42.591 1.985 42.778 2.103 c
-42.962 2.22 43.183 2.278 43.44 2.278 c
-43.623 2.278 43.785 2.249 43.925 2.19 c
-44.06 2.132 44.174 2.043 44.263 1.926 c
-44.351 1.808 44.413 1.665 44.454 1.5 c
-44.502 1.341 44.527 1.154 44.527 0.941 c
-44.527 -1.264 l
-h
-46.441 -1.323 m
-46.273 -1.323 46.123 -1.301 45.986 -1.264 c
-45.857 -1.216 45.743 -1.147 45.648 -1.058 c
-45.56 -0.97 45.49 -0.864 45.442 -0.735 c
-45.391 -0.599 45.369 -0.448 45.369 -0.279 c
-45.369 -0.073 45.402 0.096 45.472 0.235 c
-45.538 0.382 45.633 0.493 45.751 0.574 c
-45.876 0.661 46.019 0.724 46.177 0.765 c
-46.343 0.802 46.52 0.827 46.707 0.838 c
-47.426 0.852 l
-47.426 1.029 l
-47.426 1.147 47.416 1.249 47.397 1.338 c
-47.376 1.426 47.342 1.492 47.295 1.544 c
-47.254 1.602 47.206 1.639 47.147 1.661 c
-47.089 1.679 47.023 1.691 46.956 1.691 c
-46.886 1.691 46.824 1.679 46.765 1.661 c
-46.714 1.65 46.666 1.625 46.618 1.588 c
-46.578 1.558 46.545 1.507 46.516 1.44 c
-46.493 1.382 46.479 1.301 46.472 1.205 c
-45.531 1.249 l
-45.56 1.397 45.604 1.532 45.663 1.661 c
-45.729 1.786 45.824 1.897 45.942 1.985 c
-46.06 2.08 46.2 2.153 46.368 2.205 c
-46.545 2.253 46.751 2.278 46.986 2.278 c
-47.426 2.278 47.758 2.168 47.985 1.955 c
-48.22 1.75 48.338 1.44 48.338 1.029 c
-48.338 -0.235 l
-48.338 -0.455 l
-48.346 -0.515 48.361 -0.569 48.382 -0.617 c
-48.401 -0.658 48.43 -0.69 48.471 -0.72 c
-48.507 -0.742 48.558 -0.75 48.617 -0.75 c
-48.683 -0.75 48.753 -0.746 48.823 -0.735 c
-48.823 -1.22 l
-48.764 -1.23 48.71 -1.242 48.662 -1.249 c
-48.621 -1.261 48.581 -1.267 48.544 -1.278 c
-48.504 -1.286 48.459 -1.294 48.411 -1.294 c
-48.361 -1.301 48.301 -1.308 48.235 -1.308 c
-48.008 -1.308 47.842 -1.257 47.735 -1.147 c
-47.625 -1.029 47.563 -0.864 47.544 -0.646 c
-47.53 -0.646 l
-47.46 -0.757 47.39 -0.852 47.324 -0.941 c
-47.254 -1.022 47.177 -1.087 47.089 -1.147 c
-47 -1.205 46.901 -1.249 46.794 -1.278 c
-46.695 -1.308 46.578 -1.323 46.441 -1.323 c
-47.426 0.353 m
-47 0.339 l
-46.901 0.339 46.809 0.331 46.721 0.324 c
-46.64 0.312 46.574 0.287 46.516 0.25 c
-46.457 0.21 46.405 0.151 46.368 0.073 c
-46.328 0.004 46.31 -0.088 46.31 -0.206 c
-46.31 -0.374 46.343 -0.496 46.412 -0.573 c
-46.479 -0.654 46.578 -0.69 46.707 -0.69 c
-46.813 -0.69 46.912 -0.669 47 -0.617 c
-47.096 -0.569 47.177 -0.507 47.235 -0.426 c
-47.302 -0.349 47.353 -0.261 47.382 -0.162 c
-47.412 -0.055 47.426 0.059 47.426 0.177 c
-h
-50.709 -1.264 m
-50.709 0.852 l
-50.709 1.018 50.701 1.154 50.694 1.264 c
-50.682 1.371 50.664 1.455 50.634 1.515 c
-50.613 1.58 50.584 1.632 50.547 1.661 c
-50.518 1.691 50.477 1.706 50.429 1.706 c
-50.37 1.706 50.315 1.675 50.267 1.617 c
-50.227 1.565 50.194 1.492 50.164 1.397 c
-50.135 1.309 50.109 1.195 50.091 1.058 c
-50.08 0.919 50.077 0.769 50.077 0.603 c
-50.077 -1.264 l
-49.327 -1.264 l
-49.327 1.47 l
-49.327 1.706 l
-49.327 1.926 l
-49.327 2.003 49.319 2.065 49.312 2.117 c
-49.312 2.22 l
-49.988 2.22 l
-49.988 2.132 l
-49.988 1.985 l
-49.996 1.926 50.003 1.867 50.003 1.808 c
-50.003 1.646 l
-50.017 1.646 l
-50.036 1.735 50.065 1.812 50.106 1.882 c
-50.142 1.959 50.187 2.028 50.238 2.087 c
-50.297 2.146 50.362 2.19 50.443 2.22 c
-50.521 2.257 50.609 2.278 50.709 2.278 c
-50.892 2.278 51.031 2.223 51.12 2.117 c
-51.216 2.018 51.285 1.86 51.326 1.646 c
-51.34 1.646 l
-51.378 1.742 51.418 1.83 51.458 1.911 c
-51.505 1.988 51.561 2.051 51.619 2.103 c
-51.679 2.161 51.744 2.205 51.825 2.234 c
-51.902 2.263 51.991 2.278 52.09 2.278 c
-52.226 2.278 52.34 2.253 52.428 2.205 c
-52.516 2.153 52.583 2.08 52.634 1.985 c
-52.693 1.885 52.729 1.756 52.751 1.602 c
-52.781 1.455 52.795 1.272 52.795 1.058 c
-52.795 -1.264 l
-52.076 -1.264 l
-52.076 0.852 l
-52.076 1.018 52.068 1.154 52.061 1.264 c
-52.049 1.371 52.031 1.455 52.002 1.515 c
-51.98 1.58 51.95 1.632 51.914 1.661 c
-51.885 1.691 51.844 1.706 51.796 1.706 c
-51.679 1.706 51.583 1.617 51.517 1.44 c
-51.458 1.272 51.428 1.014 51.428 0.661 c
-51.428 -1.264 l
-h
-55.166 -1.323 m
-54.908 -1.323 54.68 -1.286 54.475 -1.22 c
-54.269 -1.143 54.093 -1.029 53.946 -0.881 c
-53.799 -0.727 53.681 -0.536 53.593 -0.309 c
-53.512 -0.085 53.475 0.181 53.475 0.485 c
-53.475 0.816 53.52 1.095 53.608 1.323 c
-53.703 1.558 53.832 1.742 53.99 1.882 c
-54.156 2.018 54.343 2.117 54.549 2.176 c
-54.754 2.242 54.964 2.278 55.181 2.278 c
-55.453 2.278 55.688 2.227 55.887 2.132 c
-56.092 2.043 56.257 1.911 56.386 1.735 c
-56.522 1.565 56.621 1.359 56.68 1.118 c
-56.746 0.882 56.783 0.617 56.783 0.324 c
-56.783 0.309 l
-54.416 0.309 l
-54.416 0.162 54.431 0.023 54.46 -0.103 c
-54.497 -0.231 54.553 -0.345 54.622 -0.441 c
-54.688 -0.529 54.773 -0.599 54.871 -0.646 c
-54.967 -0.698 55.081 -0.72 55.21 -0.72 c
-55.364 -0.72 55.504 -0.687 55.621 -0.617 c
-55.746 -0.551 55.835 -0.448 55.887 -0.309 c
-56.724 -0.382 l
-56.695 -0.482 56.639 -0.588 56.562 -0.706 c
-56.481 -0.816 56.379 -0.918 56.253 -1.014 c
-56.136 -1.103 55.982 -1.176 55.798 -1.234 c
-55.621 -1.294 55.409 -1.323 55.166 -1.323 c
-55.166 1.706 m
-55.077 1.706 54.989 1.691 54.902 1.661 c
-54.813 1.632 54.732 1.58 54.666 1.515 c
-54.596 1.444 54.537 1.357 54.49 1.249 c
-54.449 1.139 54.431 1.014 54.431 0.867 c
-55.901 0.867 l
-55.901 1.004 55.875 1.124 55.827 1.235 c
-55.787 1.341 55.731 1.43 55.665 1.5 c
-55.607 1.565 55.534 1.617 55.445 1.646 c
-55.357 1.683 55.261 1.706 55.166 1.706 c
-58.04 -2.631 m
-58.04 -2.013 l
-59.112 -2.013 l
-59.112 2.896 l
-58.04 2.896 l
-58.04 3.514 l
-59.965 3.514 l
-59.965 -2.631 l
-h
-66.543 -2.631 m
-66.543 3.514 l
-68.469 3.514 l
-68.469 2.896 l
-67.396 2.896 l
-67.396 -2.013 l
-68.469 -2.013 l
-68.469 -2.631 l
-h
-71.412 -1.323 m
-71.126 -1.323 70.883 -1.282 70.677 -1.205 c
-70.471 -1.117 70.299 -0.995 70.162 -0.837 c
-70.023 -0.683 69.92 -0.496 69.854 -0.279 c
-69.784 -0.055 69.751 0.191 69.751 0.456 c
-69.751 0.75 69.784 1.007 69.854 1.235 c
-69.931 1.459 70.038 1.646 70.177 1.793 c
-70.324 1.947 70.501 2.065 70.706 2.146 c
-70.912 2.234 71.147 2.278 71.412 2.278 c
-71.636 2.278 71.839 2.249 72.015 2.19 c
-72.191 2.132 72.342 2.047 72.47 1.941 c
-72.595 1.841 72.698 1.72 72.779 1.573 c
-72.857 1.434 72.911 1.282 72.94 1.118 c
-72.03 1.073 l
-72 1.249 71.93 1.389 71.824 1.5 c
-71.724 1.606 71.581 1.661 71.397 1.661 c
-71.151 1.661 70.975 1.558 70.868 1.353 c
-70.758 1.154 70.706 0.867 70.706 0.485 c
-70.706 -0.309 70.941 -0.706 71.412 -0.706 c
-71.577 -0.706 71.721 -0.654 71.839 -0.544 c
-71.956 -0.437 72.03 -0.276 72.059 -0.058 c
-72.97 -0.103 l
-72.94 -0.272 72.886 -0.426 72.809 -0.573 c
-72.739 -0.72 72.635 -0.852 72.5 -0.97 c
-72.371 -1.08 72.213 -1.168 72.03 -1.234 c
-71.853 -1.294 71.647 -1.323 71.412 -1.323 c
-77.119 0.485 m
-77.119 0.21 77.082 -0.04 77.016 -0.264 c
-76.946 -0.482 76.843 -0.669 76.707 -0.823 c
-76.568 -0.981 76.391 -1.103 76.178 -1.19 c
-75.961 -1.278 75.708 -1.323 75.413 -1.323 c
-75.138 -1.323 74.892 -1.278 74.679 -1.19 c
-74.473 -1.103 74.301 -0.981 74.164 -0.823 c
-74.025 -0.669 73.921 -0.482 73.856 -0.264 c
-73.786 -0.04 73.753 0.21 73.753 0.485 c
-73.753 0.738 73.782 0.974 73.841 1.191 c
-73.907 1.415 74.01 1.606 74.15 1.764 c
-74.285 1.929 74.462 2.058 74.679 2.146 c
-74.892 2.234 75.149 2.278 75.444 2.278 c
-75.756 2.278 76.016 2.234 76.222 2.146 c
-76.435 2.058 76.608 1.929 76.737 1.764 c
-76.873 1.606 76.972 1.415 77.031 1.191 c
-77.09 0.974 77.119 0.738 77.119 0.485 c
-76.163 0.485 m
-76.163 0.691 76.149 0.867 76.119 1.014 c
-76.097 1.162 76.061 1.282 76.001 1.382 c
-75.943 1.477 75.87 1.548 75.781 1.588 c
-75.693 1.635 75.583 1.661 75.458 1.661 c
-75.193 1.661 75.002 1.562 74.885 1.367 c
-74.767 1.18 74.708 0.886 74.708 0.485 c
-74.708 0.063 74.767 -0.243 74.885 -0.426 c
-75.002 -0.613 75.178 -0.706 75.413 -0.706 c
-75.539 -0.706 75.652 -0.687 75.752 -0.646 c
-75.847 -0.599 75.928 -0.525 75.987 -0.426 c
-76.053 -0.33 76.097 -0.206 76.119 -0.058 c
-76.149 0.088 76.163 0.268 76.163 0.485 c
-79.14 -1.264 m
-79.14 0.852 l
-79.14 1.018 79.132 1.154 79.126 1.264 c
-79.114 1.371 79.095 1.455 79.066 1.515 c
-79.045 1.58 79.015 1.632 78.978 1.661 c
-78.949 1.691 78.908 1.706 78.86 1.706 c
-78.802 1.706 78.746 1.675 78.699 1.617 c
-78.659 1.565 78.625 1.492 78.596 1.397 c
-78.567 1.309 78.541 1.195 78.523 1.058 c
-78.511 0.919 78.508 0.769 78.508 0.603 c
-78.508 -1.264 l
-77.759 -1.264 l
-77.759 1.47 l
-77.759 1.706 l
-77.759 1.926 l
-77.759 2.003 77.751 2.065 77.744 2.117 c
-77.744 2.22 l
-78.42 2.22 l
-78.42 2.132 l
-78.42 1.985 l
-78.427 1.926 78.434 1.867 78.434 1.808 c
-78.434 1.646 l
-78.449 1.646 l
-78.467 1.735 78.497 1.812 78.538 1.882 c
-78.574 1.959 78.619 2.028 78.669 2.087 c
-78.729 2.146 78.794 2.19 78.875 2.22 c
-78.952 2.257 79.041 2.278 79.14 2.278 c
-79.324 2.278 79.463 2.223 79.552 2.117 c
-79.647 2.018 79.717 1.86 79.758 1.646 c
-79.772 1.646 l
-79.809 1.742 79.849 1.83 79.889 1.911 c
-79.937 1.988 79.993 2.051 80.051 2.103 c
-80.111 2.161 80.176 2.205 80.257 2.234 c
-80.334 2.263 80.423 2.278 80.522 2.278 c
-80.658 2.278 80.772 2.253 80.859 2.205 c
-80.948 2.153 81.014 2.08 81.065 1.985 c
-81.125 1.885 81.161 1.756 81.183 1.602 c
-81.212 1.455 81.227 1.272 81.227 1.058 c
-81.227 -1.264 l
-80.507 -1.264 l
-80.507 0.852 l
-80.507 1.018 80.5 1.154 80.492 1.264 c
-80.481 1.371 80.463 1.455 80.433 1.515 c
-80.412 1.58 80.382 1.632 80.346 1.661 c
-80.316 1.691 80.275 1.706 80.228 1.706 c
-80.111 1.706 80.015 1.617 79.949 1.44 c
-79.889 1.272 79.86 1.014 79.86 0.661 c
-79.86 -1.264 l
-h
-83.201 -1.264 m
-83.201 0.852 l
-83.201 1.018 83.193 1.154 83.186 1.264 c
-83.175 1.371 83.157 1.455 83.128 1.515 c
-83.105 1.58 83.076 1.632 83.039 1.661 c
-83.01 1.691 82.969 1.706 82.921 1.706 c
-82.862 1.706 82.808 1.675 82.76 1.617 c
-82.719 1.565 82.686 1.492 82.657 1.397 c
-82.627 1.309 82.602 1.195 82.583 1.058 c
-82.572 0.919 82.569 0.769 82.569 0.603 c
-82.569 -1.264 l
-81.819 -1.264 l
-81.819 1.47 l
-81.819 1.706 l
-81.819 1.926 l
-81.819 2.003 81.811 2.065 81.804 2.117 c
-81.804 2.22 l
-82.48 2.22 l
-82.48 2.132 l
-82.48 1.985 l
-82.488 1.926 82.495 1.867 82.495 1.808 c
-82.495 1.646 l
-82.509 1.646 l
-82.528 1.735 82.557 1.812 82.598 1.882 c
-82.635 1.959 82.679 2.028 82.73 2.087 c
-82.789 2.146 82.855 2.19 82.936 2.22 c
-83.013 2.257 83.101 2.278 83.201 2.278 c
-83.384 2.278 83.524 2.223 83.612 2.117 c
-83.708 2.018 83.778 1.86 83.818 1.646 c
-83.833 1.646 l
-83.87 1.742 83.91 1.83 83.951 1.911 c
-83.998 1.988 84.053 2.051 84.112 2.103 c
-84.171 2.161 84.237 2.205 84.318 2.234 c
-84.395 2.263 84.483 2.278 84.582 2.278 c
-84.718 2.278 84.832 2.253 84.921 2.205 c
-85.009 2.153 85.075 2.08 85.127 1.985 c
-85.185 1.885 85.222 1.756 85.244 1.602 c
-85.273 1.455 85.287 1.272 85.287 1.058 c
-85.287 -1.264 l
-84.568 -1.264 l
-84.568 0.852 l
-84.568 1.018 84.56 1.154 84.553 1.264 c
-84.541 1.371 84.524 1.455 84.494 1.515 c
-84.472 1.58 84.443 1.632 84.406 1.661 c
-84.377 1.691 84.336 1.706 84.288 1.706 c
-84.171 1.706 84.075 1.617 84.009 1.44 c
-83.951 1.272 83.921 1.014 83.921 0.661 c
-83.921 -1.264 l
-h
-88.202 -0.646 m
-89.334 -0.646 l
-89.334 -1.264 l
-86.027 -1.264 l
-86.027 -0.646 l
-87.29 -0.646 l
-87.29 1.602 l
-86.365 1.602 l
-86.365 2.22 l
-88.202 2.22 l
-h
-87.29 3.514 0.912 -0.676 re
-87.29 2.837 m
-90.763 1.602 m
-90.22 1.602 l
-90.22 2.22 l
-90.808 2.22 l
-91.086 3.117 l
-91.66 3.117 l
-91.66 2.22 l
-92.894 2.22 l
-92.894 1.602 l
-91.66 1.602 l
-91.66 -0.103 l
-91.66 -0.324 l
-91.668 -0.393 91.689 -0.455 91.718 -0.515 c
-91.755 -0.565 91.811 -0.61 91.88 -0.646 c
-91.957 -0.676 92.071 -0.69 92.219 -0.69 c
-92.354 -0.69 92.491 -0.687 92.63 -0.676 c
-92.766 -0.658 92.898 -0.632 93.027 -0.602 c
-93.027 -1.205 l
-92.946 -1.216 92.869 -1.23 92.792 -1.249 c
-92.711 -1.261 92.634 -1.267 92.557 -1.278 c
-92.476 -1.286 92.387 -1.294 92.292 -1.294 c
-92.204 -1.301 92.105 -1.308 91.998 -1.308 c
-91.811 -1.308 91.649 -1.294 91.513 -1.264 c
-91.384 -1.228 91.271 -1.183 91.175 -1.132 c
-91.086 -1.084 91.013 -1.025 90.954 -0.955 c
-90.895 -0.878 90.851 -0.801 90.822 -0.72 c
-90.793 -0.632 90.771 -0.544 90.763 -0.455 c
-90.752 -0.36 90.748 -0.264 90.748 -0.176 c
-h
-101.387 -0.249 m
-101.387 -0.419 101.347 -0.569 101.27 -0.706 c
-101.199 -0.834 101.097 -0.948 100.961 -1.043 c
-100.832 -1.132 100.67 -1.201 100.476 -1.249 c
-100.288 -1.297 100.071 -1.323 99.828 -1.323 c
-99.601 -1.323 99.402 -1.308 99.226 -1.278 c
-99.05 -1.249 98.891 -1.201 98.756 -1.132 c
-98.616 -1.055 98.506 -0.955 98.417 -0.837 c
-98.33 -0.72 98.26 -0.573 98.212 -0.397 c
-99.02 -0.279 l
-99.039 -0.378 99.068 -0.455 99.109 -0.515 c
-99.157 -0.573 99.215 -0.617 99.285 -0.646 c
-99.351 -0.676 99.432 -0.702 99.52 -0.72 c
-99.608 -0.731 99.711 -0.735 99.828 -0.735 c
-99.924 -0.735 100.02 -0.731 100.108 -0.72 c
-100.196 -0.702 100.273 -0.676 100.343 -0.646 c
-100.41 -0.617 100.461 -0.58 100.491 -0.529 c
-100.527 -0.482 100.549 -0.419 100.549 -0.338 c
-100.549 -0.243 100.52 -0.169 100.461 -0.118 c
-100.41 -0.07 100.343 -0.029 100.256 0 c
-100.167 0.037 100.057 0.066 99.932 0.088 c
-99.814 0.118 99.682 0.147 99.535 0.177 c
-99.396 0.214 99.256 0.254 99.109 0.294 c
-98.969 0.341 98.844 0.405 98.727 0.485 c
-98.616 0.563 98.528 0.661 98.462 0.779 c
-98.392 0.897 98.359 1.047 98.359 1.235 c
-98.359 1.389 98.388 1.532 98.447 1.661 c
-98.513 1.797 98.609 1.911 98.727 1.999 c
-98.851 2.087 99.009 2.153 99.197 2.205 c
-99.381 2.253 99.593 2.278 99.828 2.278 c
-100.013 2.278 100.189 2.257 100.358 2.22 c
-100.524 2.19 100.67 2.135 100.799 2.058 c
-100.924 1.988 101.034 1.889 101.122 1.764 c
-101.21 1.646 101.27 1.503 101.299 1.338 c
-100.505 1.264 l
-100.483 1.341 100.454 1.404 100.416 1.455 c
-100.377 1.515 100.329 1.558 100.27 1.588 c
-100.219 1.625 100.156 1.65 100.079 1.661 c
-99.998 1.669 99.917 1.675 99.828 1.675 c
-99.612 1.675 99.45 1.646 99.344 1.588 c
-99.234 1.536 99.182 1.448 99.182 1.323 c
-99.182 1.242 99.201 1.18 99.24 1.132 c
-99.288 1.081 99.351 1.044 99.432 1.014 c
-99.52 0.985 99.616 0.956 99.726 0.927 c
-99.832 0.904 99.954 0.882 100.094 0.852 c
-100.248 0.823 100.406 0.783 100.564 0.735 c
-100.718 0.684 100.858 0.621 100.975 0.544 c
-101.093 0.463 101.189 0.36 101.27 0.235 c
-101.347 0.106 101.387 -0.055 101.387 -0.249 c
-103.242 1.515 m
-103.36 1.786 103.511 1.985 103.699 2.103 c
-103.882 2.22 104.102 2.278 104.36 2.278 c
-104.566 2.278 104.734 2.242 104.875 2.176 c
-105.021 2.105 105.131 2.014 105.212 1.897 c
-105.301 1.779 105.359 1.635 105.389 1.47 c
-105.426 1.301 105.447 1.124 105.447 0.941 c
-105.447 -1.264 l
-104.536 -1.264 l
-104.536 0.735 l
-104.536 0.871 104.526 0.992 104.507 1.103 c
-104.495 1.209 104.47 1.297 104.433 1.367 c
-104.393 1.444 104.335 1.503 104.257 1.544 c
-104.187 1.58 104.096 1.602 103.978 1.602 c
-103.867 1.602 103.772 1.577 103.684 1.529 c
-103.595 1.477 103.514 1.411 103.448 1.323 c
-103.39 1.235 103.338 1.124 103.302 1 c
-103.272 0.882 103.257 0.75 103.257 0.603 c
-103.257 -1.264 l
-102.346 -1.264 l
-102.346 3.514 l
-103.257 3.514 l
-103.257 2.205 l
-103.257 2.135 103.25 2.065 103.242 1.999 c
-103.242 1.793 l
-103.242 1.735 103.236 1.679 103.228 1.632 c
-103.228 1.515 l
-h
-107.362 -1.323 m
-107.193 -1.323 107.042 -1.301 106.907 -1.264 c
-106.778 -1.216 106.664 -1.147 106.569 -1.058 c
-106.48 -0.97 106.411 -0.864 106.363 -0.735 c
-106.311 -0.599 106.289 -0.448 106.289 -0.279 c
-106.289 -0.073 106.322 0.096 106.392 0.235 c
-106.458 0.382 106.554 0.493 106.671 0.574 c
-106.797 0.661 106.939 0.724 107.098 0.765 c
-107.263 0.802 107.439 0.827 107.627 0.838 c
-108.347 0.852 l
-108.347 1.029 l
-108.347 1.147 108.336 1.249 108.318 1.338 c
-108.295 1.426 108.262 1.492 108.215 1.544 c
-108.175 1.602 108.127 1.639 108.067 1.661 c
-108.009 1.679 107.942 1.691 107.876 1.691 c
-107.807 1.691 107.745 1.679 107.685 1.661 c
-107.634 1.65 107.587 1.625 107.539 1.588 c
-107.498 1.558 107.465 1.507 107.435 1.44 c
-107.414 1.382 107.399 1.301 107.392 1.205 c
-106.451 1.249 l
-106.48 1.397 106.525 1.532 106.583 1.661 c
-106.649 1.786 106.745 1.897 106.862 1.985 c
-106.98 2.08 107.119 2.153 107.289 2.205 c
-107.465 2.253 107.67 2.278 107.906 2.278 c
-108.347 2.278 108.678 2.168 108.906 1.955 c
-109.141 1.75 109.258 1.44 109.258 1.029 c
-109.258 -0.235 l
-109.258 -0.455 l
-109.266 -0.515 109.28 -0.569 109.303 -0.617 c
-109.321 -0.658 109.351 -0.69 109.391 -0.72 c
-109.428 -0.742 109.479 -0.75 109.538 -0.75 c
-109.604 -0.75 109.673 -0.746 109.744 -0.735 c
-109.744 -1.22 l
-109.685 -1.23 109.629 -1.242 109.582 -1.249 c
-109.542 -1.261 109.501 -1.267 109.464 -1.278 c
-109.424 -1.286 109.38 -1.294 109.332 -1.294 c
-109.28 -1.301 109.222 -1.308 109.156 -1.308 c
-108.927 -1.308 108.763 -1.257 108.655 -1.147 c
-108.545 -1.029 108.483 -0.864 108.464 -0.646 c
-108.45 -0.646 l
-108.38 -0.757 108.31 -0.852 108.244 -0.941 c
-108.175 -1.022 108.098 -1.087 108.009 -1.147 c
-107.921 -1.205 107.822 -1.249 107.715 -1.278 c
-107.616 -1.308 107.498 -1.323 107.362 -1.323 c
-108.347 0.353 m
-107.921 0.339 l
-107.822 0.339 107.73 0.331 107.641 0.324 c
-107.56 0.312 107.495 0.287 107.435 0.25 c
-107.377 0.21 107.325 0.151 107.289 0.073 c
-107.248 0.004 107.23 -0.088 107.23 -0.206 c
-107.23 -0.374 107.263 -0.496 107.333 -0.573 c
-107.399 -0.654 107.498 -0.69 107.627 -0.69 c
-107.733 -0.69 107.832 -0.669 107.921 -0.617 c
-108.017 -0.569 108.098 -0.507 108.156 -0.426 c
-108.222 -0.349 108.273 -0.261 108.303 -0.162 c
-108.333 -0.055 108.347 0.059 108.347 0.177 c
-h
-110.835 -2.631 m
-110.835 -2.013 l
-111.908 -2.013 l
-111.908 2.896 l
-110.835 2.896 l
-110.835 3.514 l
-112.761 3.514 l
-112.761 -2.631 l
-h
-f
-Q
-q 1 0 0 1 300.6696 419.9752 cm
-0 0 m
--0.029 -0.58 -0.191 -1.022 -0.485 -1.323 c
--0.779 -1.628 -1.198 -1.779 -1.735 -1.779 c
--2.263 -1.779 -2.69 -1.58 -3.013 -1.176 c
--3.329 -0.765 -3.484 -0.206 -3.484 0.5 c
--3.484 1.469 l
--3.484 2.165 -3.322 2.712 -2.999 3.116 c
--2.675 3.517 -2.23 3.719 -1.661 3.719 c
--1.154 3.719 -0.757 3.561 -0.47 3.248 c
--0.187 2.944 -0.029 2.502 0 1.926 c
--0.69 1.926 l
--0.721 2.366 -0.816 2.678 -0.97 2.866 c
--1.118 3.05 -1.349 3.146 -1.661 3.146 c
--2.036 3.146 -2.319 2.998 -2.514 2.705 c
--2.712 2.418 -2.807 2.003 -2.807 1.455 c
--2.807 0.47 l
--2.807 -0.07 -2.716 -0.485 -2.529 -0.779 c
--2.344 -1.066 -2.08 -1.205 -1.735 -1.205 c
--1.382 -1.205 -1.128 -1.118 -0.97 -0.941 c
--0.816 -0.765 -0.721 -0.453 -0.69 0 c
-h
-2.454 1.66 m
-2.367 1.679 2.267 1.691 2.161 1.691 c
-1.826 1.691 1.591 1.506 1.455 1.147 c
-1.455 -1.706 l
-0.808 -1.706 l
-0.808 2.278 l
-1.44 2.278 l
-1.455 1.866 l
-1.631 2.19 1.874 2.352 2.19 2.352 c
-2.296 2.352 2.385 2.329 2.454 2.293 c
-h
-4.453 -1.779 m
-3.954 -1.779 3.572 -1.632 3.308 -1.338 c
-3.042 -1.044 2.911 -0.611 2.911 -0.029 c
-2.911 0.441 l
-2.911 1.036 3.036 1.502 3.293 1.837 c
-3.557 2.179 3.917 2.352 4.38 2.352 c
-4.84 2.352 5.182 2.198 5.409 1.896 c
-5.644 1.602 5.766 1.139 5.777 0.515 c
-5.777 0.088 l
-3.557 0.088 l
-3.557 0 l
-3.557 -0.434 3.634 -0.746 3.792 -0.941 c
-3.958 -1.128 4.189 -1.22 4.484 -1.22 c
-4.678 -1.22 4.85 -1.187 4.997 -1.118 c
-5.145 -1.04 5.28 -0.923 5.409 -0.765 c
-5.747 -1.176 l
-5.461 -1.58 5.031 -1.779 4.453 -1.779 c
-4.38 1.793 m
-4.104 1.793 3.902 1.697 3.778 1.514 c
-3.649 1.326 3.576 1.036 3.557 0.646 c
-5.13 0.646 l
-5.13 0.735 l
-5.108 1.117 5.041 1.385 4.924 1.543 c
-4.806 1.708 4.623 1.793 4.38 1.793 c
-8.599 -1.706 m
-8.559 -1.617 8.533 -1.47 8.525 -1.264 c
-8.29 -1.61 7.996 -1.779 7.644 -1.779 c
-7.279 -1.779 6.996 -1.683 6.791 -1.484 c
-6.593 -1.279 6.497 -0.992 6.497 -0.617 c
-6.497 -0.217 6.633 0.103 6.909 0.338 c
-7.181 0.58 7.555 0.706 8.025 0.706 c
-8.511 0.706 l
-8.511 1.132 l
-8.511 1.367 8.455 1.532 8.349 1.631 c
-8.239 1.738 8.077 1.793 7.864 1.793 c
-7.665 1.793 7.504 1.735 7.379 1.617 c
-7.262 1.5 7.202 1.352 7.202 1.176 c
-6.556 1.176 l
-6.556 1.371 6.614 1.562 6.732 1.749 c
-6.857 1.932 7.019 2.08 7.217 2.19 c
-7.423 2.296 7.651 2.352 7.908 2.352 c
-8.309 2.352 8.613 2.248 8.819 2.043 c
-9.033 1.837 9.147 1.543 9.157 1.161 c
-9.157 -0.852 l
-9.157 -1.158 9.194 -1.422 9.275 -1.646 c
-9.275 -1.706 l
-h
-7.732 -1.191 m
-7.897 -1.191 8.048 -1.147 8.187 -1.058 c
-8.334 -0.97 8.441 -0.86 8.511 -0.721 c
-8.511 0.22 l
-8.143 0.22 l
-7.827 0.22 7.584 0.151 7.408 0.014 c
-7.231 -0.114 7.144 -0.302 7.144 -0.544 c
-7.144 -0.772 7.188 -0.937 7.276 -1.044 c
-7.364 -1.143 7.515 -1.191 7.732 -1.191 c
-11.009 3.233 m
-11.009 2.278 l
-11.612 2.278 l
-11.612 1.749 l
-11.009 1.749 l
-11.009 -0.721 l
-11.009 -0.879 11.032 -0.996 11.083 -1.073 c
-11.142 -1.154 11.23 -1.191 11.347 -1.191 c
-11.436 -1.191 11.524 -1.176 11.612 -1.147 c
-11.612 -1.706 l
-11.465 -1.753 11.311 -1.779 11.156 -1.779 c
-10.899 -1.779 10.705 -1.687 10.568 -1.5 c
-10.429 -1.316 10.363 -1.055 10.363 -0.721 c
-10.363 1.749 l
-9.76 1.749 l
-9.76 2.278 l
-10.363 2.278 l
-10.363 3.233 l
-h
-13.803 -1.779 m
-13.303 -1.779 12.92 -1.632 12.656 -1.338 c
-12.391 -1.044 12.259 -0.611 12.259 -0.029 c
-12.259 0.441 l
-12.259 1.036 12.384 1.502 12.641 1.837 c
-12.906 2.179 13.266 2.352 13.729 2.352 c
-14.188 2.352 14.53 2.198 14.757 1.896 c
-14.993 1.602 15.114 1.139 15.125 0.515 c
-15.125 0.088 l
-12.906 0.088 l
-12.906 0 l
-12.906 -0.434 12.983 -0.746 13.141 -0.941 c
-13.307 -1.128 13.538 -1.22 13.832 -1.22 c
-14.026 -1.22 14.2 -1.187 14.346 -1.118 c
-14.493 -1.04 14.629 -0.923 14.757 -0.765 c
-15.096 -1.176 l
-14.809 -1.58 14.379 -1.779 13.803 -1.779 c
-13.729 1.793 m
-13.454 1.793 13.251 1.697 13.126 1.514 c
-12.997 1.326 12.924 1.036 12.906 0.646 c
-14.479 0.646 l
-14.479 0.735 l
-14.456 1.117 14.391 1.385 14.273 1.543 c
-14.155 1.708 13.972 1.793 13.729 1.793 c
-19.667 -1.706 m
-19.627 -1.617 19.601 -1.47 19.594 -1.264 c
-19.359 -1.61 19.065 -1.779 18.712 -1.779 c
-18.348 -1.779 18.065 -1.683 17.859 -1.484 c
-17.661 -1.279 17.565 -0.992 17.565 -0.617 c
-17.565 -0.217 17.701 0.103 17.977 0.338 c
-18.248 0.58 18.624 0.706 19.094 0.706 c
-19.579 0.706 l
-19.579 1.132 l
-19.579 1.367 19.524 1.532 19.418 1.631 c
-19.307 1.738 19.146 1.793 18.932 1.793 c
-18.734 1.793 18.572 1.735 18.447 1.617 c
-18.329 1.5 18.271 1.352 18.271 1.176 c
-17.624 1.176 l
-17.624 1.371 17.683 1.562 17.801 1.749 c
-17.926 1.932 18.088 2.08 18.285 2.19 c
-18.491 2.296 18.719 2.352 18.977 2.352 c
-19.377 2.352 19.682 2.248 19.888 2.043 c
-20.101 1.837 20.215 1.543 20.226 1.161 c
-20.226 -0.852 l
-20.226 -1.158 20.263 -1.422 20.344 -1.646 c
-20.344 -1.706 l
-h
-18.8 -1.191 m
-18.965 -1.191 19.116 -1.147 19.256 -1.058 c
-19.403 -0.97 19.509 -0.86 19.579 -0.721 c
-19.579 0.22 l
-19.212 0.22 l
-18.896 0.22 18.653 0.151 18.477 0.014 c
-18.3 -0.114 18.212 -0.302 18.212 -0.544 c
-18.212 -0.772 18.256 -0.937 18.344 -1.044 c
-18.433 -1.143 18.583 -1.191 18.8 -1.191 c
-23.798 3.233 m
-23.798 2.278 l
-24.4 2.278 l
-24.4 1.749 l
-23.798 1.749 l
-23.798 -0.721 l
-23.798 -0.879 23.82 -0.996 23.871 -1.073 c
-23.93 -1.154 24.018 -1.191 24.136 -1.191 c
-24.224 -1.191 24.312 -1.176 24.4 -1.147 c
-24.4 -1.706 l
-24.253 -1.753 24.099 -1.779 23.945 -1.779 c
-23.688 -1.779 23.493 -1.687 23.357 -1.5 c
-23.217 -1.316 23.151 -1.055 23.151 -0.721 c
-23.151 1.749 l
-22.549 1.749 l
-22.549 2.278 l
-23.151 2.278 l
-23.151 3.233 l
-h
-27.208 -1.706 m
-27.168 -1.617 27.142 -1.47 27.135 -1.264 c
-26.9 -1.61 26.605 -1.779 26.252 -1.779 c
-25.888 -1.779 25.606 -1.683 25.4 -1.484 c
-25.201 -1.279 25.106 -0.992 25.106 -0.617 c
-25.106 -0.217 25.242 0.103 25.518 0.338 c
-25.789 0.58 26.164 0.706 26.634 0.706 c
-27.12 0.706 l
-27.12 1.132 l
-27.12 1.367 27.064 1.532 26.958 1.631 c
-26.848 1.738 26.686 1.793 26.473 1.793 c
-26.275 1.793 26.113 1.735 25.988 1.617 c
-25.87 1.5 25.811 1.352 25.811 1.176 c
-25.165 1.176 l
-25.165 1.371 25.223 1.562 25.341 1.749 c
-25.466 1.932 25.628 2.08 25.826 2.19 c
-26.032 2.296 26.26 2.352 26.517 2.352 c
-26.917 2.352 27.222 2.248 27.428 2.043 c
-27.642 1.837 27.756 1.543 27.767 1.161 c
-27.767 -0.852 l
-27.767 -1.158 27.804 -1.422 27.884 -1.646 c
-27.884 -1.706 l
-h
-26.341 -1.191 m
-26.506 -1.191 26.657 -1.147 26.796 -1.058 c
-26.944 -0.97 27.05 -0.86 27.12 -0.721 c
-27.12 0.22 l
-26.752 0.22 l
-26.437 0.22 26.194 0.151 26.017 0.014 c
-25.841 -0.114 25.753 -0.302 25.753 -0.544 c
-25.753 -0.772 25.797 -0.937 25.885 -1.044 c
-25.973 -1.143 26.123 -1.191 26.341 -1.191 c
-28.633 0.47 m
-28.633 1.088 28.744 1.55 28.972 1.866 c
-29.196 2.19 29.531 2.352 29.971 2.352 c
-30.372 2.352 30.677 2.175 30.883 1.822 c
-30.927 2.278 l
-31.515 2.278 l
-31.515 -1.75 l
-31.515 -2.238 31.386 -2.616 31.133 -2.882 c
-30.875 -3.146 30.522 -3.278 30.074 -3.278 c
-29.876 -3.278 29.655 -3.227 29.413 -3.131 c
-29.167 -3.032 28.986 -2.911 28.868 -2.764 c
-29.134 -2.323 l
-29.398 -2.587 29.695 -2.72 30.03 -2.72 c
-30.567 -2.72 30.842 -2.425 30.853 -1.837 c
-30.853 -1.309 l
-30.647 -1.625 30.346 -1.779 29.957 -1.779 c
-29.545 -1.779 29.221 -1.628 28.986 -1.323 c
-28.758 -1.01 28.641 -0.559 28.633 0.029 c
-h
-29.296 0.088 m
-29.296 -0.353 29.358 -0.684 29.487 -0.897 c
-29.612 -1.103 29.828 -1.205 30.133 -1.205 c
-30.456 -1.205 30.695 -1.04 30.853 -0.706 c
-30.853 1.278 l
-30.684 1.602 30.445 1.764 30.133 1.764 c
-29.839 1.764 29.622 1.66 29.487 1.455 c
-29.358 1.249 29.296 0.926 29.296 0.484 c
-h
-35.837 1.66 m
-35.748 1.679 35.649 1.691 35.542 1.691 c
-35.208 1.691 34.973 1.506 34.837 1.147 c
-34.837 -1.706 l
-34.19 -1.706 l
-34.19 2.278 l
-34.822 2.278 l
-34.837 1.866 l
-35.013 2.19 35.256 2.352 35.571 2.352 c
-35.678 2.352 35.766 2.329 35.837 2.293 c
-h
-37.836 -1.779 m
-37.335 -1.779 36.953 -1.632 36.689 -1.338 c
-36.424 -1.044 36.292 -0.611 36.292 -0.029 c
-36.292 0.441 l
-36.292 1.036 36.417 1.502 36.674 1.837 c
-36.939 2.179 37.298 2.352 37.762 2.352 c
-38.221 2.352 38.563 2.198 38.79 1.896 c
-39.026 1.602 39.147 1.139 39.158 0.515 c
-39.158 0.088 l
-36.939 0.088 l
-36.939 0 l
-36.939 -0.434 37.016 -0.746 37.174 -0.941 c
-37.339 -1.128 37.57 -1.22 37.865 -1.22 c
-38.06 -1.22 38.233 -1.187 38.379 -1.118 c
-38.526 -1.04 38.663 -0.923 38.79 -0.765 c
-39.129 -1.176 l
-38.842 -1.58 38.412 -1.779 37.836 -1.779 c
-37.762 1.793 m
-37.487 1.793 37.284 1.697 37.159 1.514 c
-37.03 1.326 36.957 1.036 36.939 0.646 c
-38.511 0.646 l
-38.511 0.735 l
-38.489 1.117 38.424 1.385 38.306 1.543 c
-38.188 1.708 38.004 1.793 37.762 1.793 c
-40.232 -1.706 m
-40.232 1.749 l
-39.702 1.749 l
-39.702 2.278 l
-40.232 2.278 l
-40.232 2.734 l
-40.232 3.135 40.327 3.447 40.525 3.675 c
-40.731 3.898 41.011 4.012 41.363 4.012 c
-41.499 4.012 41.632 3.991 41.76 3.954 c
-41.73 3.41 l
-41.632 3.428 41.532 3.439 41.437 3.439 c
-41.061 3.439 40.878 3.175 40.878 2.645 c
-40.878 2.278 l
-41.554 2.278 l
-41.554 1.749 l
-40.878 1.749 l
-40.878 -1.706 l
-h
-43.656 -1.779 m
-43.156 -1.779 42.774 -1.632 42.509 -1.338 c
-42.245 -1.044 42.113 -0.611 42.113 -0.029 c
-42.113 0.441 l
-42.113 1.036 42.237 1.502 42.495 1.837 c
-42.759 2.179 43.12 2.352 43.583 2.352 c
-44.042 2.352 44.384 2.198 44.612 1.896 c
-44.847 1.602 44.968 1.139 44.979 0.515 c
-44.979 0.088 l
-42.759 0.088 l
-42.759 0 l
-42.759 -0.434 42.837 -0.746 42.995 -0.941 c
-43.16 -1.128 43.392 -1.22 43.685 -1.22 c
-43.881 -1.22 44.053 -1.187 44.2 -1.118 c
-44.347 -1.04 44.483 -0.923 44.612 -0.765 c
-44.949 -1.176 l
-44.663 -1.58 44.233 -1.779 43.656 -1.779 c
-43.583 1.793 m
-43.307 1.793 43.105 1.697 42.98 1.514 c
-42.852 1.326 42.778 1.036 42.759 0.646 c
-44.332 0.646 l
-44.332 0.735 l
-44.311 1.117 44.244 1.385 44.126 1.543 c
-44.009 1.708 43.825 1.793 43.583 1.793 c
-47.405 1.66 m
-47.316 1.679 47.217 1.691 47.11 1.691 c
-46.776 1.691 46.541 1.506 46.405 1.147 c
-46.405 -1.706 l
-45.759 -1.706 l
-45.759 2.278 l
-46.39 2.278 l
-46.405 1.866 l
-46.582 2.19 46.823 2.352 47.14 2.352 c
-47.247 2.352 47.334 2.329 47.405 2.293 c
-h
-49.404 -1.779 m
-48.903 -1.779 48.521 -1.632 48.257 -1.338 c
-47.993 -1.044 47.86 -0.611 47.86 -0.029 c
-47.86 0.441 l
-47.86 1.036 47.985 1.502 48.242 1.837 c
-48.506 2.179 48.867 2.352 49.33 2.352 c
-49.79 2.352 50.131 2.198 50.359 1.896 c
-50.594 1.602 50.715 1.139 50.727 0.515 c
-50.727 0.088 l
-48.506 0.088 l
-48.506 0 l
-48.506 -0.434 48.584 -0.746 48.742 -0.941 c
-48.907 -1.128 49.139 -1.22 49.433 -1.22 c
-49.628 -1.22 49.8 -1.187 49.948 -1.118 c
-50.094 -1.04 50.231 -0.923 50.359 -0.765 c
-50.697 -1.176 l
-50.41 -1.58 49.981 -1.779 49.404 -1.779 c
-49.33 1.793 m
-49.055 1.793 48.853 1.697 48.727 1.514 c
-48.599 1.326 48.525 1.036 48.506 0.646 c
-50.079 0.646 l
-50.079 0.735 l
-50.058 1.117 49.992 1.385 49.874 1.543 c
-49.757 1.708 49.572 1.793 49.33 1.793 c
-52.123 2.278 m
-52.138 1.837 l
-52.391 2.179 52.714 2.352 53.108 2.352 c
-53.813 2.352 54.17 1.882 54.181 0.941 c
-54.181 -1.706 l
-53.534 -1.706 l
-53.534 0.912 l
-53.534 1.224 53.479 1.444 53.372 1.573 c
-53.262 1.697 53.108 1.764 52.902 1.764 c
-52.743 1.764 52.597 1.708 52.461 1.602 c
-52.332 1.492 52.229 1.356 52.152 1.19 c
-52.152 -1.706 l
-51.505 -1.706 l
-51.505 2.278 l
-h
-56.533 -1.22 m
-56.745 -1.22 56.918 -1.158 57.047 -1.029 c
-57.183 -0.893 57.256 -0.702 57.268 -0.456 c
-57.885 -0.456 l
-57.863 -0.838 57.727 -1.158 57.474 -1.411 c
-57.216 -1.658 56.903 -1.779 56.533 -1.779 c
-56.04 -1.779 55.665 -1.628 55.401 -1.323 c
-55.143 -1.01 55.018 -0.544 55.018 0.073 c
-55.018 0.515 l
-55.018 1.109 55.143 1.565 55.401 1.882 c
-55.665 2.194 56.04 2.352 56.533 2.352 c
-56.933 2.352 57.252 2.219 57.488 1.955 c
-57.73 1.697 57.863 1.352 57.885 0.912 c
-57.268 0.912 l
-57.246 1.205 57.172 1.425 57.047 1.573 c
-56.93 1.72 56.757 1.793 56.533 1.793 c
-56.238 1.793 56.022 1.694 55.886 1.5 c
-55.746 1.311 55.673 1.003 55.665 0.573 c
-55.665 0.058 l
-55.665 -0.412 55.731 -0.746 55.871 -0.941 c
-56.018 -1.128 56.238 -1.22 56.533 -1.22 c
-60.061 -1.779 m
-59.56 -1.779 59.178 -1.632 58.914 -1.338 c
-58.649 -1.044 58.517 -0.611 58.517 -0.029 c
-58.517 0.441 l
-58.517 1.036 58.642 1.502 58.899 1.837 c
-59.164 2.179 59.523 2.352 59.987 2.352 c
-60.446 2.352 60.788 2.198 61.015 1.896 c
-61.251 1.602 61.372 1.139 61.383 0.515 c
-61.383 0.088 l
-59.164 0.088 l
-59.164 0 l
-59.164 -0.434 59.241 -0.746 59.399 -0.941 c
-59.564 -1.128 59.795 -1.22 60.09 -1.22 c
-60.284 -1.22 60.458 -1.187 60.604 -1.118 c
-60.751 -1.04 60.887 -0.923 61.015 -0.765 c
-61.354 -1.176 l
-61.067 -1.58 60.637 -1.779 60.061 -1.779 c
-59.987 1.793 m
-59.712 1.793 59.509 1.697 59.384 1.514 c
-59.255 1.326 59.182 1.036 59.164 0.646 c
-60.736 0.646 l
-60.736 0.735 l
-60.714 1.117 60.649 1.385 60.531 1.543 c
-60.413 1.708 60.229 1.793 59.987 1.793 c
-64.499 2.278 m
-64.514 1.837 l
-64.768 2.179 65.091 2.352 65.484 2.352 c
-66.189 2.352 66.546 1.882 66.557 0.941 c
-66.557 -1.706 l
-65.91 -1.706 l
-65.91 0.912 l
-65.91 1.224 65.856 1.444 65.749 1.573 c
-65.638 1.697 65.484 1.764 65.279 1.764 c
-65.121 1.764 64.973 1.708 64.838 1.602 c
-64.709 1.492 64.606 1.356 64.529 1.19 c
-64.529 -1.706 l
-63.882 -1.706 l
-63.882 2.278 l
-h
-69.57 -1.706 m
-69.53 -1.617 69.505 -1.47 69.497 -1.264 c
-69.262 -1.61 68.967 -1.779 68.615 -1.779 c
-68.252 -1.779 67.968 -1.683 67.762 -1.484 c
-67.564 -1.279 67.469 -0.992 67.469 -0.617 c
-67.469 -0.217 67.604 0.103 67.88 0.338 c
-68.152 0.58 68.527 0.706 68.998 0.706 c
-69.482 0.706 l
-69.482 1.132 l
-69.482 1.367 69.428 1.532 69.32 1.631 c
-69.21 1.738 69.048 1.793 68.836 1.793 c
-68.637 1.793 68.475 1.735 68.35 1.617 c
-68.233 1.5 68.174 1.352 68.174 1.176 c
-67.527 1.176 l
-67.527 1.371 67.586 1.562 67.704 1.749 c
-67.829 1.932 67.99 2.08 68.189 2.19 c
-68.395 2.296 68.622 2.352 68.88 2.352 c
-69.281 2.352 69.586 2.248 69.791 2.043 c
-70.004 1.837 70.118 1.543 70.129 1.161 c
-70.129 -0.852 l
-70.129 -1.158 70.166 -1.422 70.247 -1.646 c
-70.247 -1.706 l
-h
-68.703 -1.191 m
-68.869 -1.191 69.019 -1.147 69.159 -1.058 c
-69.306 -0.97 69.412 -0.86 69.482 -0.721 c
-69.482 0.22 l
-69.115 0.22 l
-68.799 0.22 68.556 0.151 68.38 0.014 c
-68.204 -0.114 68.115 -0.302 68.115 -0.544 c
-68.115 -0.772 68.159 -0.937 68.248 -1.044 c
-68.336 -1.143 68.487 -1.191 68.703 -1.191 c
-71.746 2.278 m
-71.761 1.911 l
-72.003 2.205 72.323 2.352 72.716 2.352 c
-73.158 2.352 73.466 2.153 73.642 1.764 c
-73.896 2.153 74.245 2.352 74.686 2.352 c
-75.421 2.352 75.795 1.889 75.818 0.97 c
-75.818 -1.706 l
-75.171 -1.706 l
-75.171 0.912 l
-75.171 1.205 75.116 1.419 75.009 1.558 c
-74.91 1.694 74.737 1.764 74.494 1.764 c
-74.297 1.764 74.135 1.683 74.01 1.529 c
-73.892 1.382 73.823 1.19 73.804 0.955 c
-73.804 -1.706 l
-73.142 -1.706 l
-73.142 0.941 l
-73.142 1.488 72.922 1.764 72.481 1.764 c
-72.146 1.764 71.911 1.602 71.776 1.278 c
-71.776 -1.706 l
-71.128 -1.706 l
-71.128 2.278 l
-h
-78.214 -1.779 m
-77.714 -1.779 77.332 -1.632 77.067 -1.338 c
-76.803 -1.044 76.67 -0.611 76.67 -0.029 c
-76.67 0.441 l
-76.67 1.036 76.795 1.502 77.052 1.837 c
-77.317 2.179 77.677 2.352 78.14 2.352 c
-78.6 2.352 78.941 2.198 79.169 1.896 c
-79.404 1.602 79.525 1.139 79.537 0.515 c
-79.537 0.088 l
-77.317 0.088 l
-77.317 0 l
-77.317 -0.434 77.394 -0.746 77.552 -0.941 c
-77.717 -1.128 77.949 -1.22 78.243 -1.22 c
-78.438 -1.22 78.61 -1.187 78.758 -1.118 c
-78.905 -1.04 79.04 -0.923 79.169 -0.765 c
-79.508 -1.176 l
-79.221 -1.58 78.791 -1.779 78.214 -1.779 c
-78.14 1.793 m
-77.864 1.793 77.663 1.697 77.538 1.514 c
-77.409 1.326 77.335 1.036 77.317 0.646 c
-78.889 0.646 l
-78.889 0.735 l
-78.868 1.117 78.802 1.385 78.684 1.543 c
-78.567 1.708 78.382 1.793 78.14 1.793 c
-80.183 0.47 m
-80.183 1.076 80.294 1.543 80.522 1.866 c
-80.757 2.19 81.083 2.352 81.507 2.352 c
-81.889 2.352 82.186 2.194 82.403 1.882 c
-82.403 3.939 l
-83.049 3.939 l
-83.049 -1.706 l
-82.461 -1.706 l
-82.417 -1.279 l
-82.212 -1.613 81.906 -1.779 81.507 -1.779 c
-81.095 -1.779 80.771 -1.625 80.536 -1.309 c
-80.301 -0.985 80.183 -0.53 80.183 0.058 c
-h
-80.83 0.088 m
-80.83 -0.353 80.892 -0.684 81.021 -0.897 c
-81.157 -1.103 81.378 -1.205 81.683 -1.205 c
-82.006 -1.205 82.245 -1.044 82.403 -0.721 c
-82.403 1.294 l
-82.234 1.606 81.995 1.764 81.683 1.764 c
-81.378 1.764 81.157 1.66 81.021 1.455 c
-80.892 1.249 80.83 0.926 80.83 0.484 c
-h
-f
-Q
-q 1 0 0 1 387.291 422.2537 cm
-0 0 m
-0.029 -0.397 l
-0.264 -0.085 0.566 0.073 0.941 0.073 c
-1.625 0.073 1.977 -0.408 1.999 -1.367 c
-1.999 -3.984 l
-0.956 -3.984 l
-0.956 -1.441 l
-0.956 -1.216 0.919 -1.055 0.852 -0.956 c
-0.783 -0.86 0.665 -0.809 0.5 -0.809 c
-0.312 -0.809 0.166 -0.904 0.059 -1.088 c
-0.059 -3.984 l
--0.985 -3.984 l
--0.985 0 l
-h
-4.63 -3.984 m
-4.601 -3.925 4.571 -3.822 4.542 -3.675 c
-4.355 -3.932 4.104 -4.057 3.792 -4.057 c
-3.458 -4.057 3.179 -3.951 2.955 -3.734 c
-2.738 -3.51 2.631 -3.219 2.631 -2.866 c
-2.631 -2.455 2.764 -2.139 3.028 -1.912 c
-3.293 -1.676 3.675 -1.559 4.175 -1.559 c
-4.498 -1.559 l
-4.498 -1.235 l
-4.498 -1.058 4.461 -0.937 4.395 -0.867 c
-4.336 -0.79 4.248 -0.75 4.131 -0.75 c
-3.873 -0.75 3.748 -0.904 3.748 -1.206 c
-2.705 -1.206 l
-2.705 -0.834 2.841 -0.53 3.117 -0.294 c
-3.389 -0.052 3.738 0.073 4.16 0.073 c
-4.601 0.073 4.939 -0.044 5.174 -0.279 c
-5.417 -0.507 5.542 -0.831 5.542 -1.249 c
-5.542 -3.117 l
-5.542 -3.462 5.589 -3.73 5.689 -3.925 c
-5.689 -3.984 l
-h
-4.027 -3.234 m
-4.135 -3.234 4.226 -3.215 4.307 -3.175 c
-4.395 -3.128 4.457 -3.069 4.498 -2.999 c
-4.498 -2.176 l
-4.248 -2.176 l
-4.072 -2.176 3.929 -2.234 3.822 -2.352 c
-3.723 -2.463 3.675 -2.61 3.675 -2.793 c
-3.675 -3.088 3.792 -3.234 4.027 -3.234 c
-7.262 0 m
-7.291 -0.368 l
-7.526 -0.073 7.835 0.073 8.216 0.073 c
-8.617 0.073 8.897 -0.111 9.055 -0.47 c
-9.29 -0.111 9.617 0.073 10.04 0.073 c
-10.734 0.073 11.087 -0.412 11.098 -1.382 c
-11.098 -3.984 l
-10.069 -3.984 l
-10.069 -1.441 l
-10.069 -1.216 10.032 -1.055 9.966 -0.956 c
-9.907 -0.86 9.797 -0.809 9.643 -0.809 c
-9.444 -0.809 9.305 -0.927 9.216 -1.162 c
-9.216 -3.984 l
-8.173 -3.984 l
-8.173 -1.455 l
-8.173 -1.22 8.143 -1.055 8.085 -0.956 c
-8.025 -0.86 7.915 -0.809 7.761 -0.809 c
-7.585 -0.809 7.441 -0.904 7.335 -1.088 c
-7.335 -3.984 l
-6.292 -3.984 l
-6.292 0 l
-h
-13.479 -4.057 m
-12.95 -4.057 12.531 -3.903 12.23 -3.587 c
-11.936 -3.263 11.788 -2.804 11.788 -2.205 c
-11.788 -1.897 l
-11.788 -1.272 11.925 -0.786 12.2 -0.441 c
-12.472 -0.1 12.866 0.073 13.376 0.073 c
-13.876 0.073 14.247 -0.088 14.493 -0.412 c
-14.747 -0.736 14.88 -1.213 14.89 -1.837 c
-14.89 -2.338 l
-12.818 -2.338 l
-12.836 -2.631 12.898 -2.849 13.009 -2.984 c
-13.126 -3.124 13.307 -3.19 13.552 -3.19 c
-13.895 -3.19 14.184 -3.072 14.42 -2.837 c
-14.832 -3.469 l
-14.703 -3.645 14.516 -3.789 14.273 -3.896 c
-14.026 -4.002 13.762 -4.057 13.479 -4.057 c
-12.833 -1.617 m
-13.861 -1.617 l
-13.861 -1.515 l
-13.861 -1.279 13.82 -1.103 13.743 -0.985 c
-13.674 -0.86 13.546 -0.794 13.361 -0.794 c
-13.185 -0.794 13.053 -0.864 12.964 -1 c
-12.883 -1.129 12.84 -1.334 12.833 -1.617 c
-f
-Q
-q 1 0 0 1 404.8857 418.2697 cm
-0 0 m
-0 3.454 l
--0.529 3.454 l
--0.529 3.984 l
-0 3.984 l
-0 4.439 l
-0 4.84 0.096 5.152 0.294 5.38 c
-0.5 5.604 0.779 5.718 1.132 5.718 c
-1.268 5.718 1.4 5.696 1.529 5.66 c
-1.5 5.116 l
-1.4 5.134 1.301 5.145 1.205 5.145 c
-0.831 5.145 0.647 4.881 0.647 4.351 c
-0.647 3.984 l
-1.323 3.984 l
-1.323 3.454 l
-0.647 3.454 l
-0.647 0 l
-h
-1.955 2.176 m
-1.955 2.753 2.091 3.208 2.367 3.543 c
-2.65 3.884 3.021 4.057 3.484 4.057 c
-3.944 4.057 4.31 3.888 4.586 3.558 c
-4.869 3.234 5.016 2.786 5.027 2.22 c
-5.027 1.794 l
-5.027 1.224 4.884 0.769 4.601 0.426 c
-4.326 0.092 3.958 -0.073 3.499 -0.073 c
-3.036 -0.073 2.664 0.088 2.381 0.412 c
-2.105 0.742 1.962 1.183 1.955 1.735 c
-h
-2.602 1.794 m
-2.602 1.389 2.679 1.073 2.837 0.838 c
-3.003 0.603 3.223 0.485 3.499 0.485 c
-4.065 0.485 4.358 0.897 4.38 1.72 c
-4.38 2.176 l
-4.38 2.577 4.296 2.896 4.131 3.131 c
-3.973 3.373 3.755 3.499 3.484 3.499 c
-3.219 3.499 3.003 3.373 2.837 3.131 c
-2.679 2.896 2.602 2.577 2.602 2.176 c
-h
-7.512 3.366 m
-7.423 3.385 7.324 3.396 7.217 3.396 c
-6.883 3.396 6.648 3.212 6.512 2.852 c
-6.512 0 l
-5.865 0 l
-5.865 3.984 l
-6.497 3.984 l
-6.512 3.572 l
-6.689 3.896 6.93 4.057 7.247 4.057 c
-7.354 4.057 7.441 4.035 7.512 3.998 c
-h
-11.26 0.485 m
-11.473 0.485 11.645 0.548 11.774 0.676 c
-11.91 0.813 11.983 1.004 11.994 1.249 c
-12.612 1.249 l
-12.59 0.867 12.454 0.548 12.2 0.294 c
-11.944 0.048 11.631 -0.073 11.26 -0.073 c
-10.768 -0.073 10.392 0.077 10.128 0.383 c
-9.87 0.695 9.746 1.162 9.746 1.779 c
-9.746 2.22 l
-9.746 2.815 9.87 3.271 10.128 3.587 c
-10.392 3.899 10.768 4.057 11.26 4.057 c
-11.66 4.057 11.98 3.925 12.215 3.66 c
-12.457 3.403 12.59 3.057 12.612 2.617 c
-11.994 2.617 l
-11.973 2.911 11.899 3.131 11.774 3.279 c
-11.657 3.425 11.484 3.499 11.26 3.499 c
-10.965 3.499 10.749 3.4 10.612 3.205 c
-10.473 3.017 10.4 2.708 10.392 2.279 c
-10.392 1.764 l
-10.392 1.294 10.458 0.96 10.598 0.765 c
-10.745 0.578 10.965 0.485 11.26 0.485 c
-15.39 0.353 m
-15.173 0.067 14.861 -0.073 14.45 -0.073 c
-14.086 -0.073 13.81 0.048 13.627 0.294 c
-13.45 0.548 13.355 0.912 13.347 1.382 c
-13.347 3.984 l
-13.993 3.984 l
-13.993 1.441 l
-13.993 0.813 14.178 0.5 14.552 0.5 c
-14.953 0.5 15.229 0.676 15.375 1.029 c
-15.375 3.984 l
-16.022 3.984 l
-16.022 0 l
-15.405 0 l
-h
-18.653 3.366 m
-18.565 3.385 18.466 3.396 18.359 3.396 c
-18.025 3.396 17.789 3.212 17.654 2.852 c
-17.654 0 l
-17.007 0 l
-17.007 3.984 l
-17.639 3.984 l
-17.654 3.572 l
-17.83 3.896 18.073 4.057 18.389 4.057 c
-18.495 4.057 18.583 4.035 18.653 3.998 c
-h
-20.947 3.366 m
-20.858 3.385 20.759 3.396 20.652 3.396 c
-20.318 3.396 20.083 3.212 19.947 2.852 c
-19.947 0 l
-19.3 0 l
-19.3 3.984 l
-19.932 3.984 l
-19.947 3.572 l
-20.123 3.896 20.366 4.057 20.682 4.057 c
-20.788 4.057 20.877 4.035 20.947 3.998 c
-h
-22.946 -0.073 m
-22.446 -0.073 22.063 0.073 21.799 0.368 c
-21.534 0.661 21.402 1.095 21.402 1.676 c
-21.402 2.147 l
-21.402 2.741 21.527 3.208 21.784 3.543 c
-22.049 3.884 22.409 4.057 22.872 4.057 c
-23.331 4.057 23.673 3.903 23.9 3.601 c
-24.136 3.308 24.257 2.845 24.268 2.22 c
-24.268 1.794 l
-22.049 1.794 l
-22.049 1.706 l
-22.049 1.272 22.126 0.96 22.284 0.765 c
-22.45 0.578 22.681 0.485 22.975 0.485 c
-23.169 0.485 23.343 0.518 23.489 0.588 c
-23.636 0.665 23.772 0.783 23.9 0.941 c
-24.239 0.53 l
-23.952 0.125 23.522 -0.073 22.946 -0.073 c
-22.872 3.499 m
-22.597 3.499 22.394 3.403 22.269 3.219 c
-22.14 3.032 22.067 2.741 22.049 2.352 c
-23.622 2.352 l
-23.622 2.44 l
-23.599 2.822 23.534 3.09 23.416 3.248 c
-23.298 3.414 23.115 3.499 22.872 3.499 c
-25.664 3.984 m
-25.679 3.543 l
-25.933 3.884 26.256 4.057 26.649 4.057 c
-27.355 4.057 27.711 3.587 27.723 2.646 c
-27.723 0 l
-27.075 0 l
-27.075 2.617 l
-27.075 2.929 27.021 3.15 26.915 3.279 c
-26.804 3.403 26.649 3.469 26.444 3.469 c
-26.286 3.469 26.138 3.414 26.003 3.308 c
-25.874 3.198 25.772 3.061 25.694 2.896 c
-25.694 0 l
-25.047 0 l
-25.047 3.984 l
-h
-29.545 4.939 m
-29.545 3.984 l
-30.148 3.984 l
-30.148 3.454 l
-29.545 3.454 l
-29.545 0.985 l
-29.545 0.827 29.567 0.709 29.619 0.632 c
-29.677 0.551 29.766 0.515 29.884 0.515 c
-29.972 0.515 30.059 0.53 30.148 0.559 c
-30.148 0 l
-30.001 -0.047 29.847 -0.073 29.693 -0.073 c
-29.435 -0.073 29.24 0.019 29.105 0.206 c
-28.964 0.389 28.899 0.651 28.899 0.985 c
-28.899 3.454 l
-28.296 3.454 l
-28.296 3.984 l
-28.899 3.984 l
-28.899 4.939 l
-h
-34.013 0.485 m
-34.227 0.485 34.4 0.548 34.528 0.676 c
-34.664 0.813 34.738 1.004 34.749 1.249 c
-35.366 1.249 l
-35.345 0.867 35.208 0.548 34.954 0.294 c
-34.697 0.048 34.385 -0.073 34.013 -0.073 c
-33.521 -0.073 33.147 0.077 32.882 0.383 c
-32.625 0.695 32.5 1.162 32.5 1.779 c
-32.5 2.22 l
-32.5 2.815 32.625 3.271 32.882 3.587 c
-33.147 3.899 33.521 4.057 34.013 4.057 c
-34.414 4.057 34.734 3.925 34.969 3.66 c
-35.212 3.403 35.345 3.057 35.366 2.617 c
-34.749 2.617 l
-34.726 2.911 34.653 3.131 34.528 3.279 c
-34.41 3.425 34.238 3.499 34.013 3.499 c
-33.72 3.499 33.503 3.4 33.367 3.205 c
-33.228 3.017 33.154 2.708 33.147 2.279 c
-33.147 1.764 l
-33.147 1.294 33.213 0.96 33.352 0.765 c
-33.5 0.578 33.72 0.485 34.013 0.485 c
-35.983 2.176 m
-35.983 2.753 36.12 3.208 36.395 3.543 c
-36.678 3.884 37.049 4.057 37.512 4.057 c
-37.972 4.057 38.339 3.888 38.615 3.558 c
-38.898 3.234 39.044 2.786 39.056 2.22 c
-39.056 1.794 l
-39.056 1.224 38.913 0.769 38.63 0.426 c
-38.354 0.092 37.986 -0.073 37.527 -0.073 c
-37.064 -0.073 36.693 0.088 36.409 0.412 c
-36.134 0.742 35.991 1.183 35.983 1.735 c
-h
-36.63 1.794 m
-36.63 1.389 36.708 1.073 36.866 0.838 c
-37.031 0.603 37.251 0.485 37.527 0.485 c
-38.092 0.485 38.387 0.897 38.409 1.72 c
-38.409 2.176 l
-38.409 2.577 38.324 2.896 38.159 3.131 c
-38.001 3.373 37.784 3.499 37.512 3.499 c
-37.248 3.499 37.031 3.373 36.866 3.131 c
-36.708 2.896 36.63 2.577 36.63 2.176 c
-h
-40.511 3.984 m
-40.525 3.616 l
-40.768 3.911 41.088 4.057 41.481 4.057 c
-41.922 4.057 42.231 3.859 42.407 3.469 c
-42.661 3.859 43.01 4.057 43.451 4.057 c
-44.186 4.057 44.56 3.595 44.583 2.675 c
-44.583 0 l
-43.935 0 l
-43.935 2.617 l
-43.935 2.911 43.881 3.124 43.774 3.263 c
-43.675 3.4 43.502 3.469 43.26 3.469 c
-43.061 3.469 42.9 3.389 42.774 3.234 c
-42.657 3.088 42.587 2.896 42.568 2.66 c
-42.568 0 l
-41.907 0 l
-41.907 2.646 l
-41.907 3.194 41.687 3.469 41.246 3.469 c
-40.911 3.469 40.676 3.308 40.54 2.984 c
-40.54 0 l
-39.893 0 l
-39.893 3.984 l
-h
-46.17 3.984 m
-46.185 3.616 l
-46.427 3.911 46.747 4.057 47.14 4.057 c
-47.581 4.057 47.889 3.859 48.066 3.469 c
-48.32 3.859 48.669 4.057 49.109 4.057 c
-49.845 4.057 50.219 3.595 50.241 2.675 c
-50.241 0 l
-49.595 0 l
-49.595 2.617 l
-49.595 2.911 49.539 3.124 49.433 3.263 c
-49.334 3.4 49.161 3.469 48.918 3.469 c
-48.72 3.469 48.558 3.389 48.434 3.234 c
-48.316 3.088 48.246 2.896 48.228 2.66 c
-48.228 0 l
-47.567 0 l
-47.567 2.646 l
-47.567 3.194 47.346 3.469 46.905 3.469 c
-46.57 3.469 46.335 3.308 46.2 2.984 c
-46.2 0 l
-45.552 0 l
-45.552 3.984 l
-h
-51.918 0 -0.647 3.984 re
-51.962 5.027 m
-51.962 4.917 51.932 4.825 51.873 4.748 c
-51.814 4.678 51.719 4.645 51.594 4.645 c
-51.476 4.645 51.38 4.678 51.315 4.748 c
-51.256 4.825 51.226 4.917 51.226 5.027 c
-51.226 5.145 51.256 5.237 51.315 5.307 c
-51.38 5.384 51.476 5.424 51.594 5.424 c
-51.719 5.424 51.814 5.384 51.873 5.307 c
-51.932 5.226 51.962 5.134 51.962 5.027 c
-53.784 4.939 m
-53.784 3.984 l
-54.387 3.984 l
-54.387 3.454 l
-53.784 3.454 l
-53.784 0.985 l
-53.784 0.827 53.807 0.709 53.857 0.632 c
-53.917 0.551 54.004 0.515 54.122 0.515 c
-54.21 0.515 54.299 0.53 54.387 0.559 c
-54.387 0 l
-54.239 -0.047 54.085 -0.073 53.931 -0.073 c
-53.674 -0.073 53.479 0.019 53.343 0.206 c
-53.203 0.389 53.138 0.651 53.138 0.985 c
-53.138 3.454 l
-52.535 3.454 l
-52.535 3.984 l
-53.138 3.984 l
-53.138 4.939 l
-h
-55.195 0.353 m
-55.195 0.47 55.228 0.566 55.298 0.647 c
-55.364 0.724 55.467 0.765 55.607 0.765 c
-55.754 0.765 55.86 0.724 55.93 0.647 c
-56.007 0.566 56.047 0.47 56.047 0.353 c
-56.047 0.243 56.007 0.151 55.93 0.073 c
-55.86 -0.004 55.754 -0.044 55.607 -0.044 c
-55.467 -0.044 55.364 -0.004 55.298 0.073 c
-55.228 0.151 55.195 0.243 55.195 0.353 c
-61.443 1.397 m
-59.634 1.397 l
-59.222 0 l
-58.532 0 l
-60.252 5.351 l
-60.824 5.351 l
-62.559 0 l
-61.869 0 l
-h
-59.81 1.985 m
-61.266 1.985 l
-60.546 4.41 l
-h
-63.059 2.176 m
-63.059 2.782 63.17 3.248 63.397 3.572 c
-63.633 3.896 63.959 4.057 64.382 4.057 c
-64.764 4.057 65.062 3.899 65.279 3.587 c
-65.279 5.644 l
-65.925 5.644 l
-65.925 0 l
-65.337 0 l
-65.293 0.426 l
-65.088 0.092 64.783 -0.073 64.382 -0.073 c
-63.97 -0.073 63.647 0.081 63.411 0.397 c
-63.176 0.721 63.059 1.176 63.059 1.764 c
-h
-63.706 1.794 m
-63.706 1.353 63.768 1.022 63.897 0.809 c
-64.033 0.603 64.253 0.5 64.558 0.5 c
-64.882 0.5 65.121 0.661 65.279 0.985 c
-65.279 2.999 l
-65.109 3.311 64.871 3.469 64.558 3.469 c
-64.253 3.469 64.033 3.366 63.897 3.161 c
-63.768 2.955 63.706 2.631 63.706 2.19 c
-h
-66.792 2.176 m
-66.792 2.782 66.903 3.248 67.131 3.572 c
-67.366 3.896 67.693 4.057 68.115 4.057 c
-68.498 4.057 68.795 3.899 69.013 3.587 c
-69.013 5.644 l
-69.659 5.644 l
-69.659 0 l
-69.071 0 l
-69.027 0.426 l
-68.821 0.092 68.516 -0.073 68.115 -0.073 c
-67.704 -0.073 67.38 0.081 67.145 0.397 c
-66.91 0.721 66.792 1.176 66.792 1.764 c
-h
-67.44 1.794 m
-67.44 1.353 67.502 1.022 67.631 0.809 c
-67.766 0.603 67.987 0.5 68.292 0.5 c
-68.616 0.5 68.855 0.661 69.013 0.985 c
-69.013 2.999 l
-68.843 3.311 68.604 3.469 68.292 3.469 c
-67.987 3.469 67.766 3.366 67.631 3.161 c
-67.502 2.955 67.44 2.631 67.44 2.19 c
-h
-f
-Q
-q 1 0 0 1 478.602 419.0637 cm
-0 0 m
-0.294 0 0.444 0.195 0.455 0.588 c
-1.425 0.588 l
-1.425 0.154 1.294 -0.198 1.028 -0.47 c
-0.764 -0.735 0.426 -0.867 0.014 -0.867 c
--0.497 -0.867 -0.89 -0.713 -1.162 -0.397 c
--1.426 -0.073 -1.565 0.397 -1.573 1.014 c
--1.573 1.338 l
--1.573 1.962 -1.441 2.44 -1.176 2.764 c
--0.904 3.094 -0.507 3.263 0.014 3.263 c
-0.444 3.263 0.786 3.123 1.043 2.851 c
-1.296 2.576 1.425 2.194 1.425 1.706 c
-0.455 1.706 l
-0.455 1.918 0.415 2.087 0.338 2.205 c
-0.268 2.33 0.151 2.396 -0.015 2.396 c
--0.192 2.396 -0.32 2.33 -0.397 2.205 c
--0.478 2.076 -0.522 1.826 -0.53 1.455 c
--0.53 1.043 l
--0.53 0.721 -0.515 0.492 -0.485 0.368 c
--0.449 0.239 -0.393 0.147 -0.324 0.088 c
--0.246 0.029 -0.14 0 0 0 c
-1.911 1.323 m
-1.911 1.929 2.05 2.404 2.337 2.749 c
-2.62 3.09 3.013 3.263 3.513 3.263 c
-4.02 3.263 4.417 3.09 4.704 2.749 c
-4.986 2.404 5.13 1.929 5.13 1.323 c
-5.13 1.058 l
-5.13 0.459 4.986 -0.011 4.704 -0.353 c
-4.417 -0.698 4.02 -0.867 3.513 -0.867 c
-3.002 -0.867 2.605 -0.698 2.322 -0.353 c
-2.046 -0.011 1.911 0.463 1.911 1.073 c
-h
-2.954 1.058 m
-2.954 0.353 3.138 0 3.513 0 c
-3.866 0 4.056 0.294 4.086 0.882 c
-4.086 1.323 l
-4.086 1.683 4.035 1.955 3.939 2.132 c
-3.84 2.308 3.696 2.396 3.513 2.396 c
-3.336 2.396 3.197 2.308 3.101 2.132 c
-3.002 1.955 2.954 1.683 2.954 1.323 c
-h
-6.746 3.19 m
-6.776 2.822 l
-7.011 3.117 7.32 3.263 7.702 3.263 c
-8.103 3.263 8.382 3.079 8.54 2.72 c
-8.775 3.079 9.102 3.263 9.525 3.263 c
-10.219 3.263 10.572 2.778 10.583 1.808 c
-10.583 -0.794 l
-9.554 -0.794 l
-9.554 1.749 l
-9.554 1.974 9.517 2.135 9.451 2.234 c
-9.392 2.33 9.282 2.381 9.128 2.381 c
-8.93 2.381 8.789 2.263 8.702 2.028 c
-8.702 -0.794 l
-7.658 -0.794 l
-7.658 1.735 l
-7.658 1.97 7.628 2.135 7.569 2.234 c
-7.511 2.33 7.401 2.381 7.247 2.381 c
-7.07 2.381 6.927 2.286 6.82 2.102 c
-6.82 -0.794 l
-5.776 -0.794 l
-5.776 3.19 l
-h
-12.332 3.19 m
-12.361 2.822 l
-12.596 3.117 12.905 3.263 13.288 3.263 c
-13.688 3.263 13.967 3.079 14.125 2.72 c
-14.36 3.079 14.688 3.263 15.11 3.263 c
-15.804 3.263 16.157 2.778 16.168 1.808 c
-16.168 -0.794 l
-15.139 -0.794 l
-15.139 1.749 l
-15.139 1.974 15.103 2.135 15.037 2.234 c
-14.978 2.33 14.867 2.381 14.713 2.381 c
-14.515 2.381 14.375 2.263 14.287 2.028 c
-14.287 -0.794 l
-13.244 -0.794 l
-13.244 1.735 l
-13.244 1.97 13.214 2.135 13.155 2.234 c
-13.096 2.33 12.986 2.381 12.832 2.381 c
-12.656 2.381 12.512 2.286 12.406 2.102 c
-12.406 -0.794 l
-11.362 -0.794 l
-11.362 3.19 l
-h
-18.035 -0.794 -1.043 3.984 re
-16.947 4.218 m
-16.947 4.373 16.995 4.501 17.094 4.601 c
-17.201 4.707 17.337 4.763 17.506 4.763 c
-17.682 4.763 17.819 4.707 17.917 4.601 c
-18.025 4.501 18.079 4.373 18.079 4.218 c
-18.079 4.05 18.025 3.913 17.917 3.807 c
-17.819 3.707 17.682 3.66 17.506 3.66 c
-17.337 3.66 17.201 3.707 17.094 3.807 c
-16.995 3.913 16.947 4.05 16.947 4.218 c
-20.049 4.16 m
-20.049 3.19 l
-20.579 3.19 l
-20.579 2.396 l
-20.049 2.396 l
-20.049 0.426 l
-20.049 0.268 20.068 0.162 20.108 0.103 c
-20.155 0.044 20.24 0.015 20.358 0.015 c
-20.465 0.015 20.549 0.022 20.608 0.044 c
-20.608 -0.764 l
-20.431 -0.831 20.24 -0.867 20.034 -0.867 c
-19.359 -0.867 19.013 -0.482 19.006 0.294 c
-19.006 2.396 l
-18.549 2.396 l
-18.549 3.19 l
-19.006 3.19 l
-19.006 4.16 l
-h
-24.65 0.279 m
-24.65 0.368 24.606 0.445 24.518 0.515 c
-24.429 0.592 24.242 0.694 23.959 0.823 c
-23.525 1 23.228 1.18 23.062 1.367 c
-22.904 1.55 22.827 1.783 22.827 2.058 c
-22.827 2.4 22.948 2.683 23.195 2.911 c
-23.448 3.146 23.787 3.263 24.209 3.263 c
-24.639 3.263 24.988 3.15 25.252 2.925 c
-25.518 2.697 25.649 2.396 25.649 2.014 c
-24.606 2.014 l
-24.606 2.337 24.466 2.499 24.194 2.499 c
-24.084 2.499 23.995 2.462 23.93 2.396 c
-23.86 2.326 23.827 2.227 23.827 2.102 c
-23.827 2.014 23.864 1.933 23.945 1.866 c
-24.022 1.808 24.201 1.712 24.488 1.588 c
-24.918 1.43 25.216 1.253 25.385 1.058 c
-25.561 0.871 25.649 0.621 25.649 0.309 c
-25.649 -0.044 25.518 -0.331 25.252 -0.544 c
-24.988 -0.761 24.639 -0.867 24.209 -0.867 c
-23.915 -0.867 23.654 -0.812 23.43 -0.706 c
-23.202 -0.588 23.026 -0.426 22.9 -0.22 c
-22.783 -0.015 22.725 0.206 22.725 0.441 c
-23.71 0.441 l
-23.71 0.254 23.746 0.118 23.827 0.029 c
-23.915 -0.058 24.047 -0.103 24.224 -0.103 c
-24.506 -0.103 24.65 0.022 24.65 0.279 c
-27.325 2.837 m
-27.55 3.119 27.825 3.263 28.148 3.263 c
-28.508 3.263 28.784 3.135 28.971 2.881 c
-29.167 2.624 29.266 2.242 29.266 1.735 c
-29.266 -0.794 l
-28.222 -0.794 l
-28.222 1.72 l
-28.222 1.955 28.182 2.12 28.105 2.219 c
-28.034 2.326 27.92 2.381 27.766 2.381 c
-27.579 2.381 27.432 2.296 27.325 2.132 c
-27.325 -0.794 l
-26.281 -0.794 l
-26.281 4.85 l
-27.325 4.85 l
-h
-31.897 -0.794 m
-31.868 -0.735 31.837 -0.632 31.808 -0.485 c
-31.621 -0.742 31.371 -0.867 31.059 -0.867 c
-30.725 -0.867 30.445 -0.761 30.221 -0.544 c
-30.004 -0.32 29.898 -0.029 29.898 0.324 c
-29.898 0.735 30.029 1.051 30.295 1.278 c
-30.559 1.514 30.941 1.631 31.44 1.631 c
-31.764 1.631 l
-31.764 1.955 l
-31.764 2.132 31.727 2.253 31.662 2.323 c
-31.602 2.4 31.515 2.44 31.397 2.44 c
-31.139 2.44 31.014 2.286 31.014 1.984 c
-29.971 1.984 l
-29.971 2.356 30.107 2.66 30.382 2.896 c
-30.655 3.138 31.004 3.263 31.426 3.263 c
-31.868 3.263 32.205 3.146 32.44 2.911 c
-32.683 2.683 32.808 2.359 32.808 1.941 c
-32.808 0.073 l
-32.808 -0.272 32.855 -0.54 32.955 -0.735 c
-32.955 -0.794 l
-h
-31.294 -0.044 m
-31.4 -0.044 31.492 -0.025 31.573 0.015 c
-31.662 0.062 31.724 0.121 31.764 0.191 c
-31.764 1.014 l
-31.515 1.014 l
-31.338 1.014 31.195 0.956 31.088 0.838 c
-30.989 0.727 30.941 0.58 30.941 0.397 c
-30.941 0.103 31.059 -0.044 31.294 -0.044 c
-f
-Q
-q 1 0 0 1 514.8346 423.2085 cm
-0 0 m
-0 -0.955 l
-0.603 -0.955 l
-0.603 -1.484 l
-0 -1.484 l
-0 -3.954 l
-0 -4.112 0.023 -4.23 0.073 -4.307 c
-0.133 -4.388 0.221 -4.424 0.339 -4.424 c
-0.426 -4.424 0.515 -4.409 0.603 -4.38 c
-0.603 -4.939 l
-0.456 -4.986 0.302 -5.012 0.147 -5.012 c
--0.11 -5.012 -0.305 -4.92 -0.441 -4.733 c
--0.58 -4.549 -0.646 -4.288 -0.646 -3.954 c
--0.646 -1.484 l
--1.249 -1.484 l
--1.249 -0.955 l
--0.646 -0.955 l
--0.646 0 l
-h
-1.162 -2.763 m
-1.162 -2.186 1.297 -1.731 1.573 -1.396 c
-1.856 -1.055 2.227 -0.881 2.691 -0.881 c
-3.15 -0.881 3.517 -1.051 3.792 -1.381 c
-4.075 -1.705 4.223 -2.153 4.233 -2.719 c
-4.233 -3.145 l
-4.233 -3.715 4.09 -4.17 3.807 -4.513 c
-3.532 -4.847 3.164 -5.012 2.705 -5.012 c
-2.242 -5.012 1.871 -4.85 1.588 -4.527 c
-1.312 -4.197 1.168 -3.755 1.162 -3.204 c
-h
-1.808 -3.145 m
-1.808 -3.549 1.885 -3.865 2.043 -4.101 c
-2.209 -4.336 2.429 -4.453 2.705 -4.453 c
-3.271 -4.453 3.564 -4.042 3.587 -3.219 c
-3.587 -2.763 l
-3.587 -2.362 3.502 -2.043 3.337 -1.808 c
-3.179 -1.565 2.962 -1.44 2.691 -1.44 c
-2.425 -1.44 2.209 -1.565 2.043 -1.808 c
-1.885 -2.043 1.808 -2.362 1.808 -2.763 c
-h
-f
-Q
-q 1 0 0 1 388.0258 413.8011 cm
-0 0 m
-0 -0.955 l
-0.603 -0.955 l
-0.603 -1.484 l
-0 -1.484 l
-0 -3.954 l
-0 -4.112 0.023 -4.23 0.073 -4.307 c
-0.133 -4.388 0.221 -4.424 0.339 -4.424 c
-0.426 -4.424 0.515 -4.409 0.603 -4.38 c
-0.603 -4.939 l
-0.456 -4.986 0.302 -5.012 0.148 -5.012 c
--0.11 -5.012 -0.305 -4.92 -0.44 -4.733 c
--0.58 -4.549 -0.646 -4.288 -0.646 -3.954 c
--0.646 -1.484 l
--1.249 -1.484 l
--1.249 -0.955 l
--0.646 -0.955 l
--0.646 0 l
-h
-3.41 -4.939 m
-3.37 -4.85 3.344 -4.704 3.337 -4.498 c
-3.102 -4.843 2.808 -5.012 2.455 -5.012 c
-2.091 -5.012 1.808 -4.916 1.602 -4.718 c
-1.405 -4.513 1.309 -4.226 1.309 -3.85 c
-1.309 -3.451 1.445 -3.131 1.72 -2.896 c
-1.992 -2.653 2.367 -2.528 2.837 -2.528 c
-3.323 -2.528 l
-3.323 -2.102 l
-3.323 -1.866 3.267 -1.701 3.161 -1.602 c
-3.051 -1.496 2.889 -1.44 2.675 -1.44 c
-2.477 -1.44 2.315 -1.499 2.19 -1.616 c
-2.072 -1.734 2.014 -1.882 2.014 -2.057 c
-1.367 -2.057 l
-1.367 -1.863 1.426 -1.672 1.544 -1.484 c
-1.669 -1.301 1.831 -1.153 2.029 -1.043 c
-2.234 -0.937 2.463 -0.881 2.72 -0.881 c
-3.12 -0.881 3.425 -0.985 3.631 -1.19 c
-3.844 -1.396 3.958 -1.691 3.969 -2.072 c
-3.969 -4.086 l
-3.969 -4.391 4.006 -4.656 4.087 -4.88 c
-4.087 -4.939 l
-h
-2.543 -4.424 m
-2.708 -4.424 2.859 -4.38 2.999 -4.292 c
-3.146 -4.203 3.252 -4.093 3.323 -3.954 c
-3.323 -3.013 l
-2.955 -3.013 l
-2.639 -3.013 2.396 -3.083 2.22 -3.219 c
-2.043 -3.347 1.955 -3.535 1.955 -3.777 c
-1.955 -4.006 1.999 -4.17 2.087 -4.278 c
-2.176 -4.376 2.326 -4.424 2.543 -4.424 c
-4.836 -2.763 m
-4.836 -2.146 4.946 -1.683 5.174 -1.367 c
-5.399 -1.043 5.733 -0.881 6.174 -0.881 c
-6.575 -0.881 6.88 -1.058 7.086 -1.411 c
-7.129 -0.955 l
-7.717 -0.955 l
-7.717 -4.983 l
-7.717 -5.471 7.589 -5.85 7.335 -6.115 c
-7.078 -6.379 6.725 -6.512 6.277 -6.512 c
-6.078 -6.512 5.858 -6.46 5.615 -6.364 c
-5.369 -6.265 5.189 -6.144 5.072 -5.997 c
-5.336 -5.556 l
-5.6 -5.82 5.898 -5.953 6.232 -5.953 c
-6.77 -5.953 7.045 -5.659 7.056 -5.071 c
-7.056 -4.542 l
-6.85 -4.858 6.548 -5.012 6.159 -5.012 c
-5.748 -5.012 5.424 -4.862 5.189 -4.556 c
-4.961 -4.244 4.844 -3.792 4.836 -3.204 c
-h
-5.498 -3.145 m
-5.498 -3.586 5.56 -3.917 5.689 -4.13 c
-5.814 -4.336 6.03 -4.438 6.336 -4.438 c
-6.659 -4.438 6.897 -4.274 7.056 -3.939 c
-7.056 -1.955 l
-6.887 -1.631 6.648 -1.469 6.336 -1.469 c
-6.041 -1.469 5.825 -1.573 5.689 -1.778 c
-5.56 -1.984 5.498 -2.308 5.498 -2.749 c
-h
-12.436 -4.939 m
-12.395 -4.85 12.37 -4.704 12.362 -4.498 c
-12.127 -4.843 11.833 -5.012 11.48 -5.012 c
-11.117 -5.012 10.834 -4.916 10.628 -4.718 c
-10.429 -4.513 10.334 -4.226 10.334 -3.85 c
-10.334 -3.451 10.469 -3.131 10.745 -2.896 c
-11.017 -2.653 11.392 -2.528 11.863 -2.528 c
-12.347 -2.528 l
-12.347 -2.102 l
-12.347 -1.866 12.293 -1.701 12.185 -1.602 c
-12.075 -1.496 11.914 -1.44 11.701 -1.44 c
-11.502 -1.44 11.341 -1.499 11.215 -1.616 c
-11.098 -1.734 11.04 -1.882 11.04 -2.057 c
-10.392 -2.057 l
-10.392 -1.863 10.452 -1.672 10.569 -1.484 c
-10.694 -1.301 10.855 -1.153 11.054 -1.043 c
-11.26 -0.937 11.487 -0.881 11.745 -0.881 c
-12.145 -0.881 12.451 -0.985 12.656 -1.19 c
-12.869 -1.396 12.983 -1.691 12.994 -2.072 c
-12.994 -4.086 l
-12.994 -4.391 13.031 -4.656 13.112 -4.88 c
-13.112 -4.939 l
-h
-11.568 -4.424 m
-11.734 -4.424 11.884 -4.38 12.025 -4.292 c
-12.171 -4.203 12.278 -4.093 12.347 -3.954 c
-12.347 -3.013 l
-11.98 -3.013 l
-11.664 -3.013 11.422 -3.083 11.245 -3.219 c
-11.069 -3.347 10.98 -3.535 10.98 -3.777 c
-10.98 -4.006 11.025 -4.17 11.113 -4.278 c
-11.201 -4.376 11.352 -4.424 11.568 -4.424 c
-17.654 -3.925 m
-17.654 -3.777 17.598 -3.656 17.492 -3.557 c
-17.382 -3.461 17.176 -3.343 16.875 -3.204 c
-16.53 -3.057 16.287 -2.936 16.14 -2.836 c
-15.993 -2.73 15.883 -2.612 15.817 -2.484 c
-15.747 -2.359 15.713 -2.201 15.713 -2.013 c
-15.713 -1.691 15.831 -1.421 16.066 -1.205 c
-16.301 -0.992 16.603 -0.881 16.978 -0.881 c
-17.359 -0.881 17.669 -0.995 17.904 -1.22 c
-18.139 -1.448 18.257 -1.734 18.257 -2.087 c
-17.61 -2.087 l
-17.61 -1.911 17.551 -1.76 17.434 -1.631 c
-17.316 -1.506 17.162 -1.44 16.978 -1.44 c
-16.779 -1.44 16.629 -1.496 16.522 -1.602 c
-16.412 -1.701 16.36 -1.833 16.36 -1.999 c
-16.36 -2.127 16.397 -2.234 16.478 -2.322 c
-16.555 -2.403 16.746 -2.506 17.051 -2.631 c
-17.529 -2.818 17.86 -3.006 18.036 -3.189 c
-18.213 -3.366 18.3 -3.594 18.3 -3.865 c
-18.3 -4.218 18.176 -4.498 17.933 -4.704 c
-17.698 -4.909 17.382 -5.012 16.993 -5.012 c
-16.57 -5.012 16.232 -4.895 15.978 -4.659 c
-15.721 -4.417 15.596 -4.112 15.596 -3.748 c
-16.243 -3.748 l
-16.25 -3.976 16.32 -4.152 16.449 -4.278 c
-16.574 -4.395 16.757 -4.453 16.993 -4.453 c
-17.205 -4.453 17.367 -4.405 17.477 -4.307 c
-17.595 -4.211 17.654 -4.083 17.654 -3.925 c
-22.02 -3.145 m
-22.02 -3.773 21.902 -4.244 21.667 -4.556 c
-21.439 -4.862 21.122 -5.012 20.711 -5.012 c
-20.307 -5.012 19.998 -4.862 19.786 -4.556 c
-19.786 -6.468 l
-19.138 -6.468 l
-19.138 -0.955 l
-19.726 -0.955 l
-19.771 -1.396 l
-19.984 -1.055 20.293 -0.881 20.696 -0.881 c
-21.137 -0.881 21.465 -1.036 21.681 -1.338 c
-21.895 -1.643 22.009 -2.098 22.02 -2.705 c
-h
-21.373 -2.763 m
-21.373 -2.322 21.303 -1.999 21.167 -1.793 c
-21.027 -1.579 20.807 -1.469 20.505 -1.469 c
-20.189 -1.469 19.95 -1.624 19.786 -1.926 c
-19.786 -3.998 l
-19.95 -4.303 20.189 -4.453 20.505 -4.453 c
-20.8 -4.453 21.012 -4.351 21.152 -4.145 c
-21.288 -3.931 21.361 -3.601 21.373 -3.16 c
-h
-24.283 -5.012 m
-23.784 -5.012 23.401 -4.866 23.137 -4.571 c
-22.872 -4.278 22.74 -3.844 22.74 -3.262 c
-22.74 -2.792 l
-22.74 -2.198 22.865 -1.731 23.121 -1.396 c
-23.387 -1.055 23.747 -0.881 24.21 -0.881 c
-24.669 -0.881 25.01 -1.036 25.238 -1.338 c
-25.473 -1.631 25.595 -2.094 25.606 -2.719 c
-25.606 -3.145 l
-23.387 -3.145 l
-23.387 -3.233 l
-23.387 -3.667 23.464 -3.979 23.622 -4.174 c
-23.788 -4.361 24.019 -4.453 24.312 -4.453 c
-24.507 -4.453 24.68 -4.421 24.827 -4.351 c
-24.974 -4.274 25.11 -4.156 25.238 -3.998 c
-25.577 -4.409 l
-25.29 -4.814 24.86 -5.012 24.283 -5.012 c
-24.21 -1.44 m
-23.934 -1.44 23.732 -1.536 23.607 -1.72 c
-23.478 -1.907 23.405 -2.198 23.387 -2.587 c
-24.96 -2.587 l
-24.96 -2.499 l
-24.937 -2.117 24.871 -1.849 24.754 -1.691 c
-24.636 -1.525 24.453 -1.44 24.21 -1.44 c
-27.767 -4.453 m
-27.98 -4.453 28.153 -4.391 28.281 -4.262 c
-28.417 -4.126 28.491 -3.935 28.502 -3.69 c
-29.119 -3.69 l
-29.097 -4.072 28.962 -4.391 28.708 -4.644 c
-28.451 -4.891 28.138 -5.012 27.767 -5.012 c
-27.275 -5.012 26.899 -4.862 26.635 -4.556 c
-26.377 -4.244 26.253 -3.777 26.253 -3.16 c
-26.253 -2.719 l
-26.253 -2.124 26.377 -1.668 26.635 -1.352 c
-26.899 -1.04 27.275 -0.881 27.767 -0.881 c
-28.168 -0.881 28.487 -1.014 28.723 -1.278 c
-28.964 -1.536 29.097 -1.882 29.119 -2.322 c
-28.502 -2.322 l
-28.48 -2.028 28.407 -1.808 28.281 -1.66 c
-28.164 -1.514 27.991 -1.44 27.767 -1.44 c
-27.472 -1.44 27.256 -1.539 27.12 -1.734 c
-26.98 -1.922 26.907 -2.23 26.899 -2.66 c
-26.899 -3.175 l
-26.899 -3.645 26.965 -3.979 27.105 -4.174 c
-27.252 -4.361 27.472 -4.453 27.767 -4.453 c
-30.574 -4.939 -0.646 3.984 re
-30.618 0.088 m
-30.618 -0.022 30.589 -0.114 30.53 -0.191 c
-30.471 -0.261 30.376 -0.293 30.251 -0.293 c
-30.134 -0.293 30.038 -0.261 29.972 -0.191 c
-29.913 -0.114 29.884 -0.022 29.884 0.088 c
-29.884 0.206 29.913 0.298 29.972 0.368 c
-30.038 0.445 30.134 0.485 30.251 0.485 c
-30.376 0.485 30.471 0.445 30.53 0.368 c
-30.589 0.287 30.618 0.195 30.618 0.088 c
-31.765 -4.939 m
-31.765 -1.484 l
-31.25 -1.484 l
-31.25 -0.955 l
-31.765 -0.955 l
-31.765 -0.588 l
-31.773 -0.158 31.886 0.177 32.103 0.412 c
-32.328 0.655 32.64 0.779 33.043 0.779 c
-33.191 0.779 33.33 0.757 33.47 0.721 c
-33.617 0.68 33.768 0.625 33.926 0.559 c
-33.808 -0.014 l
-33.573 0.11 33.33 0.177 33.088 0.177 c
-32.841 0.177 32.669 0.107 32.573 -0.029 c
-32.474 -0.158 32.426 -0.353 32.426 -0.617 c
-32.426 -0.955 l
-33.074 -0.955 l
-33.074 -1.484 l
-32.426 -1.484 l
-32.426 -4.939 l
-h
-34.234 -4.939 -0.647 3.984 re
-36.66 -4.453 m
-36.873 -4.453 37.045 -4.391 37.174 -4.262 c
-37.31 -4.126 37.384 -3.935 37.394 -3.69 c
-38.012 -3.69 l
-37.99 -4.072 37.854 -4.391 37.6 -4.644 c
-37.344 -4.891 37.031 -5.012 36.66 -5.012 c
-36.168 -5.012 35.792 -4.862 35.528 -4.556 c
-35.271 -4.244 35.146 -3.777 35.146 -3.16 c
-35.146 -2.719 l
-35.146 -2.124 35.271 -1.668 35.528 -1.352 c
-35.792 -1.04 36.168 -0.881 36.66 -0.881 c
-37.06 -0.881 37.38 -1.014 37.615 -1.278 c
-37.858 -1.536 37.99 -1.882 38.012 -2.322 c
-37.394 -2.322 l
-37.373 -2.028 37.299 -1.808 37.174 -1.66 c
-37.057 -1.514 36.884 -1.44 36.66 -1.44 c
-36.366 -1.44 36.149 -1.539 36.013 -1.734 c
-35.873 -1.922 35.8 -2.23 35.792 -2.66 c
-35.792 -3.175 l
-35.792 -3.645 35.859 -3.979 35.998 -4.174 c
-36.145 -4.361 36.366 -4.453 36.66 -4.453 c
-41.863 -4.453 m
-42.076 -4.453 42.249 -4.391 42.377 -4.262 c
-42.514 -4.126 42.587 -3.935 42.599 -3.69 c
-43.216 -3.69 l
-43.193 -4.072 43.058 -4.391 42.804 -4.644 c
-42.547 -4.891 42.234 -5.012 41.863 -5.012 c
-41.371 -5.012 40.996 -4.862 40.731 -4.556 c
-40.474 -4.244 40.349 -3.777 40.349 -3.16 c
-40.349 -2.719 l
-40.349 -2.124 40.474 -1.668 40.731 -1.352 c
-40.996 -1.04 41.371 -0.881 41.863 -0.881 c
-42.264 -0.881 42.583 -1.014 42.819 -1.278 c
-43.061 -1.536 43.193 -1.882 43.216 -2.322 c
-42.599 -2.322 l
-42.576 -2.028 42.503 -1.808 42.377 -1.66 c
-42.26 -1.514 42.088 -1.44 41.863 -1.44 c
-41.569 -1.44 41.352 -1.539 41.217 -1.734 c
-41.076 -1.922 41.003 -2.23 40.996 -2.66 c
-40.996 -3.175 l
-40.996 -3.645 41.062 -3.979 41.202 -4.174 c
-41.348 -4.361 41.569 -4.453 41.863 -4.453 c
-43.833 -2.763 m
-43.833 -2.186 43.969 -1.731 44.245 -1.396 c
-44.527 -1.055 44.899 -0.881 45.362 -0.881 c
-45.821 -0.881 46.188 -1.051 46.464 -1.381 c
-46.747 -1.705 46.894 -2.153 46.905 -2.719 c
-46.905 -3.145 l
-46.905 -3.715 46.761 -4.17 46.479 -4.513 c
-46.203 -4.847 45.836 -5.012 45.377 -5.012 c
-44.914 -5.012 44.542 -4.85 44.259 -4.527 c
-43.983 -4.197 43.84 -3.755 43.833 -3.204 c
-h
-44.48 -3.145 m
-44.48 -3.549 44.557 -3.865 44.715 -4.101 c
-44.88 -4.336 45.101 -4.453 45.377 -4.453 c
-45.942 -4.453 46.236 -4.042 46.258 -3.219 c
-46.258 -2.763 l
-46.258 -2.362 46.173 -2.043 46.009 -1.808 c
-45.851 -1.565 45.633 -1.44 45.362 -1.44 c
-45.097 -1.44 44.88 -1.565 44.715 -1.808 c
-44.557 -2.043 44.48 -2.362 44.48 -2.763 c
-h
-48.361 -0.955 m
-48.375 -1.323 l
-48.617 -1.028 48.937 -0.881 49.33 -0.881 c
-49.772 -0.881 50.08 -1.08 50.256 -1.469 c
-50.51 -1.08 50.859 -0.881 51.3 -0.881 c
-52.035 -0.881 52.41 -1.344 52.432 -2.263 c
-52.432 -4.939 l
-51.785 -4.939 l
-51.785 -2.322 l
-51.785 -2.028 51.73 -1.815 51.623 -1.675 c
-51.524 -1.539 51.351 -1.469 51.108 -1.469 c
-50.911 -1.469 50.749 -1.55 50.624 -1.705 c
-50.506 -1.851 50.437 -2.043 50.418 -2.278 c
-50.418 -4.939 l
-49.757 -4.939 l
-49.757 -2.293 l
-49.757 -1.745 49.536 -1.469 49.095 -1.469 c
-48.76 -1.469 48.525 -1.631 48.39 -1.955 c
-48.39 -4.939 l
-47.743 -4.939 l
-47.743 -0.955 l
-h
-54.019 -0.955 m
-54.034 -1.323 l
-54.277 -1.028 54.597 -0.881 54.989 -0.881 c
-55.43 -0.881 55.739 -1.08 55.916 -1.469 c
-56.169 -1.08 56.518 -0.881 56.959 -0.881 c
-57.694 -0.881 58.069 -1.344 58.091 -2.263 c
-58.091 -4.939 l
-57.444 -4.939 l
-57.444 -2.322 l
-57.444 -2.028 57.389 -1.815 57.283 -1.675 c
-57.184 -1.539 57.011 -1.469 56.768 -1.469 c
-56.569 -1.469 56.408 -1.55 56.283 -1.705 c
-56.165 -1.851 56.095 -2.043 56.077 -2.278 c
-56.077 -4.939 l
-55.416 -4.939 l
-55.416 -2.293 l
-55.416 -1.745 55.195 -1.469 54.754 -1.469 c
-54.42 -1.469 54.185 -1.631 54.048 -1.955 c
-54.048 -4.939 l
-53.402 -4.939 l
-53.402 -0.955 l
-h
-59.767 -4.939 -0.647 3.984 re
-59.81 0.088 m
-59.81 -0.022 59.781 -0.114 59.723 -0.191 c
-59.664 -0.261 59.569 -0.293 59.443 -0.293 c
-59.326 -0.293 59.23 -0.261 59.164 -0.191 c
-59.105 -0.114 59.076 -0.022 59.076 0.088 c
-59.076 0.206 59.105 0.298 59.164 0.368 c
-59.23 0.445 59.326 0.485 59.443 0.485 c
-59.569 0.485 59.664 0.445 59.723 0.368 c
-59.781 0.287 59.81 0.195 59.81 0.088 c
-61.633 0 m
-61.633 -0.955 l
-62.236 -0.955 l
-62.236 -1.484 l
-61.633 -1.484 l
-61.633 -3.954 l
-61.633 -4.112 61.655 -4.23 61.707 -4.307 c
-61.766 -4.388 61.854 -4.424 61.971 -4.424 c
-62.06 -4.424 62.148 -4.409 62.236 -4.38 c
-62.236 -4.939 l
-62.089 -4.986 61.935 -5.012 61.78 -5.012 c
-61.523 -5.012 61.329 -4.92 61.192 -4.733 c
-61.053 -4.549 60.986 -4.288 60.986 -3.954 c
-60.986 -1.484 l
-60.384 -1.484 l
-60.384 -0.955 l
-60.986 -0.955 l
-60.986 0 l
-h
-65.426 -4.939 -0.646 3.984 re
-65.47 0.088 m
-65.47 -0.022 65.441 -0.114 65.381 -0.191 c
-65.323 -0.261 65.227 -0.293 65.102 -0.293 c
-64.984 -0.293 64.889 -0.261 64.824 -0.191 c
-64.764 -0.114 64.735 -0.022 64.735 0.088 c
-64.735 0.206 64.764 0.298 64.824 0.368 c
-64.889 0.445 64.984 0.485 65.102 0.485 c
-65.227 0.485 65.323 0.445 65.381 0.368 c
-65.441 0.287 65.47 0.195 65.47 0.088 c
-67.058 -0.955 m
-67.072 -1.396 l
-67.326 -1.055 67.649 -0.881 68.042 -0.881 c
-68.747 -0.881 69.104 -1.352 69.115 -2.293 c
-69.115 -4.939 l
-68.469 -4.939 l
-68.469 -2.322 l
-68.469 -2.009 68.413 -1.789 68.307 -1.66 c
-68.197 -1.536 68.042 -1.469 67.837 -1.469 c
-67.679 -1.469 67.532 -1.525 67.396 -1.631 c
-67.267 -1.741 67.164 -1.878 67.087 -2.043 c
-67.087 -4.939 l
-66.44 -4.939 l
-66.44 -0.955 l
-h
-72.026 -3.925 m
-72.026 -3.777 71.97 -3.656 71.864 -3.557 c
-71.754 -3.461 71.548 -3.343 71.247 -3.204 c
-70.902 -3.057 70.659 -2.936 70.511 -2.836 c
-70.364 -2.73 70.254 -2.612 70.189 -2.484 c
-70.119 -2.359 70.085 -2.201 70.085 -2.013 c
-70.085 -1.691 70.203 -1.421 70.438 -1.205 c
-70.673 -0.992 70.975 -0.881 71.349 -0.881 c
-71.731 -0.881 72.04 -0.995 72.275 -1.22 c
-72.51 -1.448 72.628 -1.734 72.628 -2.087 c
-71.982 -2.087 l
-71.982 -1.911 71.922 -1.76 71.805 -1.631 c
-71.687 -1.506 71.533 -1.44 71.349 -1.44 c
-71.151 -1.44 71 -1.496 70.894 -1.602 c
-70.784 -1.701 70.732 -1.833 70.732 -1.999 c
-70.732 -2.127 70.769 -2.234 70.85 -2.322 c
-70.927 -2.403 71.118 -2.506 71.423 -2.631 c
-71.901 -2.818 72.232 -3.006 72.408 -3.189 c
-72.585 -3.366 72.672 -3.594 72.672 -3.865 c
-72.672 -4.218 72.548 -4.498 72.305 -4.704 c
-72.07 -4.909 71.754 -5.012 71.364 -5.012 c
-70.941 -5.012 70.603 -4.895 70.35 -4.659 c
-70.093 -4.417 69.967 -4.112 69.967 -3.748 c
-70.615 -3.748 l
-70.622 -3.976 70.692 -4.152 70.821 -4.278 c
-70.945 -4.395 71.129 -4.453 71.364 -4.453 c
-71.577 -4.453 71.739 -4.405 71.849 -4.307 c
-71.967 -4.211 72.026 -4.083 72.026 -3.925 c
-74.363 0 m
-74.363 -0.955 l
-74.966 -0.955 l
-74.966 -1.484 l
-74.363 -1.484 l
-74.363 -3.954 l
-74.363 -4.112 74.385 -4.23 74.436 -4.307 c
-74.495 -4.388 74.584 -4.424 74.701 -4.424 c
-74.789 -4.424 74.877 -4.409 74.966 -4.38 c
-74.966 -4.939 l
-74.819 -4.986 74.665 -5.012 74.509 -5.012 c
-74.253 -5.012 74.058 -4.92 73.921 -4.733 c
-73.782 -4.549 73.716 -4.288 73.716 -3.954 c
-73.716 -1.484 l
-73.113 -1.484 l
-73.113 -0.955 l
-73.716 -0.955 l
-73.716 0 l
-h
-77.156 -5.012 m
-76.656 -5.012 76.273 -4.866 76.009 -4.571 c
-75.745 -4.278 75.612 -3.844 75.612 -3.262 c
-75.612 -2.792 l
-75.612 -2.198 75.737 -1.731 75.995 -1.396 c
-76.259 -1.055 76.619 -0.881 77.082 -0.881 c
-77.541 -0.881 77.883 -1.036 78.111 -1.338 c
-78.347 -1.631 78.467 -2.094 78.478 -2.719 c
-78.478 -3.145 l
-76.259 -3.145 l
-76.259 -3.233 l
-76.259 -3.667 76.336 -3.979 76.494 -4.174 c
-76.66 -4.361 76.891 -4.453 77.185 -4.453 c
-77.38 -4.453 77.553 -4.421 77.699 -4.351 c
-77.846 -4.274 77.983 -4.156 78.111 -3.998 c
-78.449 -4.409 l
-78.162 -4.814 77.732 -5.012 77.156 -5.012 c
-77.082 -1.44 m
-76.807 -1.44 76.604 -1.536 76.479 -1.72 c
-76.35 -1.907 76.277 -2.198 76.259 -2.587 c
-77.832 -2.587 l
-77.832 -2.499 l
-77.809 -2.117 77.744 -1.849 77.626 -1.691 c
-77.508 -1.525 77.325 -1.44 77.082 -1.44 c
-81.301 -4.939 m
-81.26 -4.85 81.235 -4.704 81.227 -4.498 c
-80.992 -4.843 80.698 -5.012 80.346 -5.012 c
-79.982 -5.012 79.698 -4.916 79.492 -4.718 c
-79.294 -4.513 79.199 -4.226 79.199 -3.85 c
-79.199 -3.451 79.334 -3.131 79.61 -2.896 c
-79.882 -2.653 80.257 -2.528 80.728 -2.528 c
-81.212 -2.528 l
-81.212 -2.102 l
-81.212 -1.866 81.158 -1.701 81.051 -1.602 c
-80.94 -1.496 80.779 -1.44 80.566 -1.44 c
-80.367 -1.44 80.206 -1.499 80.08 -1.616 c
-79.963 -1.734 79.905 -1.882 79.905 -2.057 c
-79.257 -2.057 l
-79.257 -1.863 79.317 -1.672 79.434 -1.484 c
-79.559 -1.301 79.721 -1.153 79.919 -1.043 c
-80.125 -0.937 80.352 -0.881 80.61 -0.881 c
-81.011 -0.881 81.316 -0.985 81.522 -1.19 c
-81.734 -1.396 81.848 -1.691 81.859 -2.072 c
-81.859 -4.086 l
-81.859 -4.391 81.896 -4.656 81.977 -4.88 c
-81.977 -4.939 l
-h
-80.433 -4.424 m
-80.599 -4.424 80.749 -4.38 80.889 -4.292 c
-81.036 -4.203 81.143 -4.093 81.212 -3.954 c
-81.212 -3.013 l
-80.845 -3.013 l
-80.529 -3.013 80.286 -3.083 80.111 -3.219 c
-79.934 -3.347 79.845 -3.535 79.845 -3.777 c
-79.845 -4.006 79.889 -4.17 79.978 -4.278 c
-80.066 -4.376 80.217 -4.424 80.433 -4.424 c
-82.727 -2.763 m
-82.727 -2.157 82.837 -1.691 83.064 -1.367 c
-83.3 -1.043 83.627 -0.881 84.049 -0.881 c
-84.431 -0.881 84.73 -1.04 84.946 -1.352 c
-84.946 0.706 l
-85.593 0.706 l
-85.593 -4.939 l
-85.005 -4.939 l
-84.961 -4.513 l
-84.755 -4.847 84.45 -5.012 84.049 -5.012 c
-83.638 -5.012 83.315 -4.858 83.079 -4.542 c
-82.844 -4.218 82.727 -3.763 82.727 -3.175 c
-h
-83.373 -3.145 m
-83.373 -3.586 83.436 -3.917 83.564 -4.13 c
-83.7 -4.336 83.921 -4.438 84.226 -4.438 c
-84.549 -4.438 84.788 -4.278 84.946 -3.954 c
-84.946 -1.94 l
-84.778 -1.627 84.539 -1.469 84.226 -1.469 c
-83.921 -1.469 83.7 -1.573 83.564 -1.778 c
-83.436 -1.984 83.373 -2.308 83.373 -2.749 c
-h
-88.18 -2.763 m
-88.18 -2.186 88.316 -1.731 88.591 -1.396 c
-88.874 -1.055 89.246 -0.881 89.709 -0.881 c
-90.168 -0.881 90.536 -1.051 90.811 -1.381 c
-91.094 -1.705 91.241 -2.153 91.252 -2.719 c
-91.252 -3.145 l
-91.252 -3.715 91.109 -4.17 90.826 -4.513 c
-90.55 -4.847 90.183 -5.012 89.723 -5.012 c
-89.26 -5.012 88.889 -4.85 88.606 -4.527 c
-88.331 -4.197 88.188 -3.755 88.18 -3.204 c
-h
-88.826 -3.145 m
-88.826 -3.549 88.904 -3.865 89.062 -4.101 c
-89.227 -4.336 89.447 -4.453 89.723 -4.453 c
-90.289 -4.453 90.583 -4.042 90.605 -3.219 c
-90.605 -2.763 l
-90.605 -2.362 90.521 -2.043 90.355 -1.808 c
-90.197 -1.565 89.981 -1.44 89.709 -1.44 c
-89.444 -1.44 89.227 -1.565 89.062 -1.808 c
-88.904 -2.043 88.826 -2.362 88.826 -2.763 c
-h
-92.383 -4.939 m
-92.383 -1.484 l
-91.855 -1.484 l
-91.855 -0.955 l
-92.383 -0.955 l
-92.383 -0.5 l
-92.383 -0.099 92.479 0.214 92.678 0.441 c
-92.884 0.665 93.163 0.779 93.516 0.779 c
-93.652 0.779 93.784 0.757 93.912 0.721 c
-93.883 0.177 l
-93.784 0.195 93.684 0.206 93.589 0.206 c
-93.214 0.206 93.031 -0.058 93.031 -0.588 c
-93.031 -0.955 l
-93.707 -0.955 l
-93.707 -1.484 l
-93.031 -1.484 l
-93.031 -4.939 l
-h
-97.573 -4.453 m
-97.786 -4.453 97.958 -4.391 98.087 -4.262 c
-98.223 -4.126 98.297 -3.935 98.307 -3.69 c
-98.925 -3.69 l
-98.903 -4.072 98.767 -4.391 98.513 -4.644 c
-98.256 -4.891 97.944 -5.012 97.573 -5.012 c
-97.081 -5.012 96.705 -4.862 96.441 -4.556 c
-96.184 -4.244 96.059 -3.777 96.059 -3.16 c
-96.059 -2.719 l
-96.059 -2.124 96.184 -1.668 96.441 -1.352 c
-96.705 -1.04 97.081 -0.881 97.573 -0.881 c
-97.973 -0.881 98.293 -1.014 98.528 -1.278 c
-98.771 -1.536 98.903 -1.882 98.925 -2.322 c
-98.307 -2.322 l
-98.286 -2.028 98.212 -1.808 98.087 -1.66 c
-97.97 -1.514 97.796 -1.44 97.573 -1.44 c
-97.279 -1.44 97.062 -1.539 96.926 -1.734 c
-96.786 -1.922 96.713 -2.23 96.705 -2.66 c
-96.705 -3.175 l
-96.705 -3.645 96.772 -3.979 96.911 -4.174 c
-97.058 -4.361 97.279 -4.453 97.573 -4.453 c
-101.703 -4.586 m
-101.486 -4.872 101.174 -5.012 100.763 -5.012 c
-100.398 -5.012 100.123 -4.891 99.939 -4.644 c
-99.763 -4.391 99.668 -4.027 99.66 -3.557 c
-99.66 -0.955 l
-100.306 -0.955 l
-100.306 -3.498 l
-100.306 -4.126 100.491 -4.438 100.865 -4.438 c
-101.266 -4.438 101.542 -4.262 101.688 -3.91 c
-101.688 -0.955 l
-102.335 -0.955 l
-102.335 -4.939 l
-101.717 -4.939 l
-h
-104.966 -1.573 m
-104.878 -1.554 104.779 -1.543 104.672 -1.543 c
-104.337 -1.543 104.102 -1.727 103.967 -2.087 c
-103.967 -4.939 l
-103.319 -4.939 l
-103.319 -0.955 l
-103.952 -0.955 l
-103.967 -1.367 l
-104.143 -1.043 104.385 -0.881 104.701 -0.881 c
-104.808 -0.881 104.896 -0.904 104.966 -0.941 c
-h
-107.259 -1.573 m
-107.171 -1.554 107.072 -1.543 106.965 -1.543 c
-106.631 -1.543 106.396 -1.727 106.259 -2.087 c
-106.259 -4.939 l
-105.613 -4.939 l
-105.613 -0.955 l
-106.245 -0.955 l
-106.259 -1.367 l
-106.436 -1.043 106.679 -0.881 106.995 -0.881 c
-107.101 -0.881 107.19 -0.904 107.259 -0.941 c
-h
-109.258 -5.012 m
-108.759 -5.012 108.376 -4.866 108.112 -4.571 c
-107.847 -4.278 107.715 -3.844 107.715 -3.262 c
-107.715 -2.792 l
-107.715 -2.198 107.84 -1.731 108.098 -1.396 c
-108.362 -1.055 108.722 -0.881 109.185 -0.881 c
-109.644 -0.881 109.986 -1.036 110.214 -1.338 c
-110.449 -1.631 110.571 -2.094 110.581 -2.719 c
-110.581 -3.145 l
-108.362 -3.145 l
-108.362 -3.233 l
-108.362 -3.667 108.439 -3.979 108.597 -4.174 c
-108.763 -4.361 108.994 -4.453 109.288 -4.453 c
-109.482 -4.453 109.655 -4.421 109.802 -4.351 c
-109.949 -4.274 110.085 -4.156 110.214 -3.998 c
-110.552 -4.409 l
-110.265 -4.814 109.835 -5.012 109.258 -5.012 c
-109.185 -1.44 m
-108.909 -1.44 108.707 -1.536 108.582 -1.72 c
-108.454 -1.907 108.38 -2.198 108.362 -2.587 c
-109.935 -2.587 l
-109.935 -2.499 l
-109.912 -2.117 109.846 -1.849 109.729 -1.691 c
-109.611 -1.525 109.428 -1.44 109.185 -1.44 c
-111.978 -0.955 m
-111.992 -1.396 l
-112.246 -1.055 112.569 -0.881 112.962 -0.881 c
-113.668 -0.881 114.024 -1.352 114.035 -2.293 c
-114.035 -4.939 l
-113.389 -4.939 l
-113.389 -2.322 l
-113.389 -2.009 113.334 -1.789 113.227 -1.66 c
-113.117 -1.536 112.962 -1.469 112.757 -1.469 c
-112.599 -1.469 112.452 -1.525 112.316 -1.631 c
-112.187 -1.741 112.084 -1.878 112.007 -2.043 c
-112.007 -4.939 l
-111.36 -4.939 l
-111.36 -0.955 l
-h
-115.859 0 m
-115.859 -0.955 l
-116.461 -0.955 l
-116.461 -1.484 l
-115.859 -1.484 l
-115.859 -3.954 l
-115.859 -4.112 115.88 -4.23 115.932 -4.307 c
-115.99 -4.388 116.079 -4.424 116.196 -4.424 c
-116.285 -4.424 116.372 -4.409 116.461 -4.38 c
-116.461 -4.939 l
-116.314 -4.986 116.16 -5.012 116.005 -5.012 c
-115.748 -5.012 115.553 -4.92 115.417 -4.733 c
-115.277 -4.549 115.211 -4.288 115.211 -3.954 c
-115.211 -1.484 l
-114.608 -1.484 l
-114.608 -0.955 l
-115.211 -0.955 l
-115.211 0 l
-h
-118.813 -2.763 m
-118.813 -2.186 118.949 -1.731 119.225 -1.396 c
-119.508 -1.055 119.878 -0.881 120.341 -0.881 c
-120.8 -0.881 121.168 -1.051 121.444 -1.381 c
-121.727 -1.705 121.874 -2.153 121.885 -2.719 c
-121.885 -3.145 l
-121.885 -3.715 121.741 -4.17 121.459 -4.513 c
-121.183 -4.847 120.815 -5.012 120.356 -5.012 c
-119.893 -5.012 119.522 -4.85 119.239 -4.527 c
-118.963 -4.197 118.82 -3.755 118.813 -3.204 c
-h
-119.46 -3.145 m
-119.46 -3.549 119.537 -3.865 119.695 -4.101 c
-119.86 -4.336 120.081 -4.453 120.356 -4.453 c
-120.922 -4.453 121.216 -4.042 121.238 -3.219 c
-121.238 -2.763 l
-121.238 -2.362 121.154 -2.043 120.988 -1.808 c
-120.83 -1.565 120.613 -1.44 120.341 -1.44 c
-120.077 -1.44 119.86 -1.565 119.695 -1.808 c
-119.537 -2.043 119.46 -2.362 119.46 -2.763 c
-h
-123.34 -0.955 m
-123.354 -1.396 l
-123.608 -1.055 123.932 -0.881 124.325 -0.881 c
-125.031 -0.881 125.387 -1.352 125.398 -2.293 c
-125.398 -4.939 l
-124.751 -4.939 l
-124.751 -2.322 l
-124.751 -2.009 124.696 -1.789 124.59 -1.66 c
-124.48 -1.536 124.325 -1.469 124.119 -1.469 c
-123.961 -1.469 123.814 -1.525 123.678 -1.631 c
-123.549 -1.741 123.447 -1.878 123.37 -2.043 c
-123.37 -4.939 l
-122.722 -4.939 l
-122.722 -0.955 l
-h
-127.794 -5.012 m
-127.294 -5.012 126.912 -4.866 126.647 -4.571 c
-126.383 -4.278 126.25 -3.844 126.25 -3.262 c
-126.25 -2.792 l
-126.25 -2.198 126.375 -1.731 126.633 -1.396 c
-126.897 -1.055 127.258 -0.881 127.72 -0.881 c
-128.179 -0.881 128.522 -1.036 128.75 -1.338 c
-128.985 -1.631 129.106 -2.094 129.116 -2.719 c
-129.116 -3.145 l
-126.897 -3.145 l
-126.897 -3.233 l
-126.897 -3.667 126.974 -3.979 127.132 -4.174 c
-127.298 -4.361 127.529 -4.453 127.823 -4.453 c
-128.018 -4.453 128.191 -4.421 128.337 -4.351 c
-128.484 -4.274 128.621 -4.156 128.75 -3.998 c
-129.087 -4.409 l
-128.8 -4.814 128.37 -5.012 127.794 -5.012 c
-127.72 -1.44 m
-127.445 -1.44 127.242 -1.536 127.117 -1.72 c
-126.989 -1.907 126.915 -2.198 126.897 -2.587 c
-128.47 -2.587 l
-128.47 -2.499 l
-128.448 -2.117 128.382 -1.849 128.264 -1.691 c
-128.147 -1.525 127.963 -1.44 127.72 -1.44 c
-129.94 -4.586 m
-129.94 -4.469 129.973 -4.373 130.043 -4.292 c
-130.109 -4.215 130.211 -4.174 130.352 -4.174 c
-130.498 -4.174 130.605 -4.215 130.675 -4.292 c
-130.752 -4.373 130.793 -4.469 130.793 -4.586 c
-130.793 -4.696 130.752 -4.788 130.675 -4.866 c
-130.605 -4.943 130.498 -4.983 130.352 -4.983 c
-130.211 -4.983 130.109 -4.943 130.043 -4.866 c
-129.973 -4.788 129.94 -4.696 129.94 -4.586 c
-f
-Q
-0.113 0.082 0.09 0 k
-287.665 402.127 234.667 -12.895 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 292.8568 395.2921 cm
-0 0 m
-0 -0.188 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.647 -0.243 -0.776 -0.367 -0.882 c
--0.496 -0.992 -0.658 -1.081 -0.852 -1.147 c
--1.051 -1.206 -1.278 -1.243 -1.543 -1.25 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.162 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.927 c
--3.127 -0.82 -3.23 -0.691 -3.307 -0.545 c
--3.388 -0.39 -3.447 -0.214 -3.484 -0.015 c
--2.66 0.132 l
--2.642 0.033 -2.616 -0.059 -2.587 -0.148 c
--2.55 -0.229 -2.506 -0.302 -2.454 -0.368 c
--2.396 -0.427 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.581 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.675 c
--1.977 0.683 -1.992 0.69 -1.999 0.69 c
--2.167 0.727 -2.329 0.771 -2.484 0.823 c
--2.642 0.881 -2.786 0.959 -2.91 1.058 c
--3.039 1.153 -3.142 1.278 -3.219 1.425 c
--3.289 1.572 -3.322 1.756 -3.322 1.984 c
--3.322 2.179 -3.289 2.344 -3.219 2.484 c
--3.152 2.63 -3.054 2.748 -2.925 2.836 c
--2.8 2.932 -2.645 3.002 -2.469 3.042 c
--2.293 3.09 -2.102 3.119 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.119 -1.128 3.09 -0.97 3.042 c
--0.804 2.991 -0.669 2.917 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.202 2.344 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.252 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.352 c
--1.294 1.311 -1.117 1.263 -0.941 1.205 c
--0.756 1.146 -0.595 1.065 -0.455 0.97 c
--0.32 0.87 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.513 m
--2.013 2.502 -2.113 2.484 -2.19 2.454 c
--2.26 2.425 -2.319 2.385 -2.366 2.337 c
--2.406 2.296 -2.436 2.248 -2.454 2.19 c
--2.477 2.131 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.778 c
--2.41 1.72 -2.373 1.668 -2.322 1.631 c
--2.263 1.591 -2.201 1.558 -2.131 1.529 c
--2.065 1.499 -1.984 1.469 -1.896 1.44 c
-h
--0.837 -0.015 m
--0.837 0.091 -0.86 0.176 -0.897 0.235 c
--0.926 0.301 -0.977 0.356 -1.043 0.396 c
--1.103 0.433 -1.176 0.47 -1.263 0.5 c
--1.352 0.529 -1.448 0.558 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.581 -1.146 -0.53 -1.028 -0.441 c
--0.904 -0.346 -0.837 -0.202 -0.837 -0.015 c
-6.402 -2.661 m
-6.184 -2.661 5.993 -2.635 5.829 -2.587 c
-5.659 -2.548 5.519 -2.484 5.402 -2.396 c
-5.284 -2.315 5.185 -2.22 5.108 -2.103 c
-5.039 -1.985 4.991 -1.856 4.961 -1.721 c
-5.858 -1.617 l
-5.895 -1.754 5.964 -1.86 6.064 -1.941 c
-6.159 -2.029 6.284 -2.073 6.431 -2.073 c
-6.519 -2.073 6.6 -2.058 6.681 -2.029 c
-6.758 -1.999 6.828 -1.945 6.887 -1.867 c
-6.945 -1.798 6.99 -1.706 7.019 -1.588 c
-7.056 -1.47 7.078 -1.324 7.078 -1.147 c
-7.078 -0.956 l
-7.078 -0.89 7.082 -0.831 7.092 -0.78 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.817 6.835 -0.978 6.652 -1.073 c
-6.464 -1.173 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.015 5.215 -0.897 5.108 -0.75 c
-5.009 -0.595 4.935 -0.412 4.888 -0.206 c
-4.836 0.007 4.814 0.242 4.814 0.5 c
-4.814 0.771 4.836 1.018 4.888 1.234 c
-4.946 1.448 5.027 1.631 5.137 1.778 c
-5.244 1.932 5.376 2.05 5.534 2.131 c
-5.689 2.219 5.876 2.263 6.093 2.263 c
-6.188 2.263 6.288 2.252 6.387 2.234 c
-6.483 2.212 6.571 2.179 6.652 2.131 c
-6.739 2.079 6.817 2.017 6.887 1.94 c
-6.964 1.859 7.026 1.767 7.078 1.66 c
-7.092 1.66 l
-7.092 1.807 l
-7.1 1.866 7.107 1.918 7.107 1.969 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.129 2.164 7.14 2.197 7.151 2.219 c
-8.004 2.219 l
-7.993 2.138 7.982 2.028 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.162 l
-7.975 -1.415 7.938 -1.636 7.871 -1.823 c
-7.802 -2.007 7.699 -2.161 7.563 -2.278 c
-7.423 -2.404 7.258 -2.5 7.063 -2.558 c
-6.865 -2.625 6.644 -2.661 6.402 -2.661 c
-7.092 0.529 m
-7.092 0.742 7.067 0.918 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.499 6.729 1.558 6.652 1.587 c
-6.571 1.624 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.62 6.137 1.572 c
-6.056 1.531 5.99 1.462 5.931 1.367 c
-5.88 1.278 5.835 1.161 5.799 1.014 c
-5.77 0.874 5.755 0.706 5.755 0.5 c
-5.755 0.124 5.814 -0.155 5.931 -0.339 c
-6.049 -0.515 6.211 -0.603 6.417 -0.603 c
-6.483 -0.603 6.556 -0.588 6.637 -0.559 c
-6.725 -0.522 6.799 -0.464 6.857 -0.383 c
-6.924 -0.294 6.978 -0.177 7.019 -0.03 c
-7.067 0.118 7.092 0.301 7.092 0.529 c
-11.036 -0.647 m
-12.168 -0.647 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.647 l
-10.124 -0.647 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.219 l
-11.036 2.219 l
-h
-10.124 3.513 0.912 -0.676 re
-10.124 2.836 m
-13.597 1.602 m
-13.053 1.602 l
-13.053 2.219 l
-13.641 2.219 l
-13.92 3.116 l
-14.494 3.116 l
-14.494 2.219 l
-15.728 2.219 l
-15.728 1.602 l
-14.494 1.602 l
-14.494 -0.103 l
-14.494 -0.324 l
-14.501 -0.393 14.523 -0.456 14.552 -0.515 c
-14.589 -0.566 14.645 -0.611 14.714 -0.647 c
-14.791 -0.676 14.905 -0.691 15.052 -0.691 c
-15.188 -0.691 15.324 -0.688 15.464 -0.676 c
-15.599 -0.659 15.732 -0.632 15.861 -0.603 c
-15.861 -1.206 l
-15.78 -1.216 15.703 -1.231 15.626 -1.25 c
-15.545 -1.261 15.468 -1.268 15.391 -1.279 c
-15.31 -1.287 15.221 -1.294 15.125 -1.294 c
-15.038 -1.301 14.938 -1.309 14.832 -1.309 c
-14.645 -1.309 14.483 -1.294 14.346 -1.264 c
-14.218 -1.228 14.104 -1.183 14.009 -1.133 c
-13.92 -1.085 13.847 -1.025 13.788 -0.956 c
-13.729 -0.879 13.685 -0.802 13.656 -0.721 c
-13.627 -0.632 13.604 -0.545 13.597 -0.456 c
-13.586 -0.36 13.582 -0.265 13.582 -0.177 c
-h
-21.722 1.602 m
-21.178 1.602 l
-21.178 2.219 l
-21.766 2.219 l
-22.045 3.116 l
-22.618 3.116 l
-22.618 2.219 l
-23.853 2.219 l
-23.853 1.602 l
-22.618 1.602 l
-22.618 -0.103 l
-22.618 -0.324 l
-22.626 -0.393 22.647 -0.456 22.677 -0.515 c
-22.714 -0.566 22.769 -0.611 22.839 -0.647 c
-22.916 -0.676 23.03 -0.691 23.177 -0.691 c
-23.313 -0.691 23.449 -0.688 23.588 -0.676 c
-23.725 -0.659 23.857 -0.632 23.985 -0.603 c
-23.985 -1.206 l
-23.904 -1.216 23.827 -1.231 23.75 -1.25 c
-23.669 -1.261 23.592 -1.268 23.515 -1.279 c
-23.434 -1.287 23.346 -1.294 23.25 -1.294 c
-23.162 -1.301 23.063 -1.309 22.957 -1.309 c
-22.769 -1.309 22.608 -1.294 22.471 -1.264 c
-22.343 -1.228 22.229 -1.183 22.134 -1.133 c
-22.045 -1.085 21.972 -1.025 21.913 -0.956 c
-21.854 -0.879 21.81 -0.802 21.781 -0.721 c
-21.751 -0.632 21.729 -0.545 21.722 -0.456 c
-21.71 -0.36 21.707 -0.265 21.707 -0.177 c
-h
-26.136 -1.324 m
-25.966 -1.324 25.816 -1.301 25.679 -1.264 c
-25.551 -1.216 25.437 -1.147 25.342 -1.058 c
-25.253 -0.971 25.184 -0.864 25.136 -0.736 c
-25.084 -0.599 25.062 -0.449 25.062 -0.279 c
-25.062 -0.074 25.095 0.095 25.165 0.235 c
-25.232 0.382 25.327 0.492 25.444 0.573 c
-25.569 0.661 25.712 0.723 25.87 0.764 c
-26.036 0.801 26.213 0.826 26.4 0.837 c
-27.12 0.852 l
-27.12 1.028 l
-27.12 1.146 27.109 1.249 27.09 1.337 c
-27.069 1.425 27.036 1.491 26.988 1.543 c
-26.947 1.602 26.9 1.639 26.841 1.66 c
-26.782 1.679 26.716 1.69 26.649 1.69 c
-26.58 1.69 26.518 1.679 26.458 1.66 c
-26.408 1.649 26.36 1.624 26.312 1.587 c
-26.271 1.558 26.238 1.506 26.209 1.44 c
-26.186 1.381 26.172 1.3 26.165 1.205 c
-25.224 1.249 l
-25.253 1.396 25.297 1.531 25.356 1.66 c
-25.423 1.786 25.518 1.896 25.635 1.984 c
-25.753 2.079 25.893 2.153 26.061 2.204 c
-26.238 2.252 26.444 2.277 26.679 2.277 c
-27.12 2.277 27.451 2.167 27.678 1.955 c
-27.914 1.749 28.031 1.44 28.031 1.028 c
-28.031 -0.235 l
-28.031 -0.456 l
-28.039 -0.515 28.054 -0.57 28.075 -0.618 c
-28.094 -0.659 28.123 -0.691 28.164 -0.721 c
-28.201 -0.743 28.252 -0.75 28.311 -0.75 c
-28.376 -0.75 28.447 -0.746 28.517 -0.736 c
-28.517 -1.22 l
-28.457 -1.231 28.403 -1.243 28.355 -1.25 c
-28.314 -1.261 28.274 -1.268 28.237 -1.279 c
-28.197 -1.287 28.153 -1.294 28.105 -1.294 c
-28.054 -1.301 27.995 -1.309 27.929 -1.309 c
-27.701 -1.309 27.535 -1.257 27.429 -1.147 c
-27.318 -1.029 27.256 -0.864 27.237 -0.647 c
-27.223 -0.647 l
-27.154 -0.757 27.083 -0.853 27.017 -0.941 c
-26.947 -1.022 26.87 -1.088 26.782 -1.147 c
-26.693 -1.206 26.595 -1.25 26.488 -1.279 c
-26.389 -1.309 26.271 -1.324 26.136 -1.324 c
-27.12 0.353 m
-26.693 0.338 l
-26.595 0.338 26.503 0.33 26.414 0.323 c
-26.333 0.312 26.267 0.286 26.209 0.249 c
-26.15 0.209 26.098 0.151 26.061 0.073 c
-26.021 0.003 26.003 -0.088 26.003 -0.206 c
-26.003 -0.375 26.036 -0.497 26.106 -0.574 c
-26.172 -0.655 26.271 -0.691 26.4 -0.691 c
-26.506 -0.691 26.606 -0.669 26.693 -0.618 c
-26.789 -0.57 26.87 -0.508 26.929 -0.427 c
-26.995 -0.35 27.046 -0.262 27.076 -0.162 c
-27.106 -0.056 27.12 0.058 27.12 0.176 c
-h
-30.769 -2.661 m
-30.552 -2.661 30.361 -2.635 30.196 -2.587 c
-30.027 -2.548 29.887 -2.484 29.77 -2.396 c
-29.652 -2.315 29.552 -2.22 29.475 -2.103 c
-29.406 -1.985 29.358 -1.856 29.328 -1.721 c
-30.225 -1.617 l
-30.262 -1.754 30.331 -1.86 30.431 -1.941 c
-30.527 -2.029 30.651 -2.073 30.799 -2.073 c
-30.886 -2.073 30.967 -2.058 31.048 -2.029 c
-31.125 -1.999 31.195 -1.945 31.254 -1.867 c
-31.313 -1.798 31.357 -1.706 31.387 -1.588 c
-31.424 -1.47 31.445 -1.324 31.445 -1.147 c
-31.445 -0.956 l
-31.445 -0.89 31.449 -0.831 31.46 -0.78 c
-31.46 -0.588 l
-31.445 -0.588 l
-31.346 -0.817 31.202 -0.978 31.019 -1.073 c
-30.832 -1.173 30.626 -1.22 30.402 -1.22 c
-30.196 -1.22 30.012 -1.183 29.858 -1.103 c
-29.71 -1.015 29.582 -0.897 29.475 -0.75 c
-29.376 -0.595 29.303 -0.412 29.255 -0.206 c
-29.203 0.007 29.182 0.242 29.182 0.5 c
-29.182 0.771 29.203 1.018 29.255 1.234 c
-29.313 1.448 29.394 1.631 29.505 1.778 c
-29.612 1.932 29.743 2.05 29.901 2.131 c
-30.057 2.219 30.244 2.263 30.46 2.263 c
-30.556 2.263 30.655 2.252 30.755 2.234 c
-30.85 2.212 30.938 2.179 31.019 2.131 c
-31.107 2.079 31.185 2.017 31.254 1.94 c
-31.331 1.859 31.393 1.767 31.445 1.66 c
-31.46 1.66 l
-31.46 1.807 l
-31.468 1.866 31.474 1.918 31.474 1.969 c
-31.482 2.028 31.489 2.076 31.489 2.117 c
-31.497 2.164 31.507 2.197 31.519 2.219 c
-32.371 2.219 l
-32.361 2.138 32.349 2.028 32.342 1.881 c
-32.342 1.411 l
-32.342 -1.162 l
-32.342 -1.415 32.305 -1.636 32.239 -1.823 c
-32.17 -2.007 32.066 -2.161 31.931 -2.278 c
-31.79 -2.404 31.625 -2.5 31.43 -2.558 c
-31.233 -2.625 31.011 -2.661 30.769 -2.661 c
-31.46 0.529 m
-31.46 0.742 31.434 0.918 31.387 1.058 c
-31.346 1.205 31.291 1.323 31.225 1.411 c
-31.166 1.499 31.096 1.558 31.019 1.587 c
-30.938 1.624 30.861 1.646 30.784 1.646 c
-30.684 1.646 30.593 1.62 30.504 1.572 c
-30.424 1.531 30.358 1.462 30.298 1.367 c
-30.248 1.278 30.203 1.161 30.167 1.014 c
-30.137 0.874 30.122 0.706 30.122 0.5 c
-30.122 0.124 30.181 -0.155 30.298 -0.339 c
-30.416 -0.515 30.578 -0.603 30.784 -0.603 c
-30.85 -0.603 30.923 -0.588 31.004 -0.559 c
-31.092 -0.522 31.166 -0.464 31.225 -0.383 c
-31.291 -0.294 31.346 -0.177 31.387 -0.03 c
-31.434 0.118 31.46 0.301 31.46 0.529 c
-37.953 0.837 1.866 -0.794 re
-37.953 0.043 m
-42.381 -1.324 m
-42.212 -1.324 42.061 -1.301 41.926 -1.264 c
-41.797 -1.216 41.683 -1.147 41.587 -1.058 c
-41.5 -0.971 41.429 -0.864 41.382 -0.736 c
-41.33 -0.599 41.308 -0.449 41.308 -0.279 c
-41.308 -0.074 41.342 0.095 41.411 0.235 c
-41.477 0.382 41.573 0.492 41.691 0.573 c
-41.816 0.661 41.959 0.723 42.117 0.764 c
-42.282 0.801 42.458 0.826 42.646 0.837 c
-43.366 0.852 l
-43.366 1.028 l
-43.366 1.146 43.355 1.249 43.337 1.337 c
-43.314 1.425 43.282 1.491 43.234 1.543 c
-43.193 1.602 43.146 1.639 43.087 1.66 c
-43.028 1.679 42.962 1.69 42.896 1.69 c
-42.826 1.69 42.763 1.679 42.705 1.66 c
-42.653 1.649 42.605 1.624 42.558 1.587 c
-42.518 1.558 42.484 1.506 42.455 1.44 c
-42.433 1.381 42.418 1.3 42.41 1.205 c
-41.47 1.249 l
-41.5 1.396 41.543 1.531 41.602 1.66 c
-41.668 1.786 41.764 1.896 41.882 1.984 c
-41.999 2.079 42.139 2.153 42.308 2.204 c
-42.484 2.252 42.69 2.277 42.925 2.277 c
-43.366 2.277 43.697 2.167 43.925 1.955 c
-44.16 1.749 44.278 1.44 44.278 1.028 c
-44.278 -0.235 l
-44.278 -0.456 l
-44.284 -0.515 44.299 -0.57 44.322 -0.618 c
-44.34 -0.659 44.369 -0.691 44.409 -0.721 c
-44.446 -0.743 44.498 -0.75 44.557 -0.75 c
-44.623 -0.75 44.693 -0.746 44.762 -0.736 c
-44.762 -1.22 l
-44.704 -1.231 44.648 -1.243 44.6 -1.25 c
-44.56 -1.261 44.52 -1.268 44.483 -1.279 c
-44.442 -1.287 44.399 -1.294 44.351 -1.294 c
-44.299 -1.301 44.241 -1.309 44.174 -1.309 c
-43.947 -1.309 43.781 -1.257 43.675 -1.147 c
-43.565 -1.029 43.502 -0.864 43.484 -0.647 c
-43.469 -0.647 l
-43.399 -0.757 43.33 -0.853 43.264 -0.941 c
-43.193 -1.022 43.116 -1.088 43.028 -1.147 c
-42.94 -1.206 42.84 -1.25 42.734 -1.279 c
-42.635 -1.309 42.518 -1.324 42.381 -1.324 c
-43.366 0.353 m
-42.94 0.338 l
-42.84 0.338 42.749 0.33 42.661 0.323 c
-42.58 0.312 42.514 0.286 42.455 0.249 c
-42.396 0.209 42.345 0.151 42.308 0.073 c
-42.267 0.003 42.249 -0.088 42.249 -0.206 c
-42.249 -0.375 42.282 -0.497 42.352 -0.574 c
-42.418 -0.655 42.518 -0.691 42.646 -0.691 c
-42.753 -0.691 42.852 -0.669 42.94 -0.618 c
-43.035 -0.57 43.116 -0.508 43.175 -0.427 c
-43.241 -0.35 43.293 -0.262 43.322 -0.162 c
-43.351 -0.056 43.366 0.058 43.366 0.176 c
-h
-50.297 -2.631 m
-50.297 3.513 l
-52.222 3.513 l
-52.222 2.896 l
-51.149 2.896 l
-51.149 -2.014 l
-52.222 -2.014 l
-52.222 -2.631 l
-h
-55.798 -1.264 m
-55.798 0.72 l
-55.798 1.021 55.754 1.242 55.665 1.381 c
-55.585 1.529 55.449 1.602 55.254 1.602 c
-55.143 1.602 55.041 1.576 54.946 1.529 c
-54.857 1.477 54.776 1.411 54.711 1.323 c
-54.651 1.234 54.6 1.124 54.563 0.999 c
-54.534 0.881 54.519 0.749 54.519 0.602 c
-54.519 -1.264 l
-53.608 -1.264 l
-53.608 1.44 l
-53.608 1.66 l
-53.608 1.749 53.6 1.826 53.593 1.896 c
-53.593 2.087 l
-53.593 2.219 l
-54.445 2.219 l
-54.453 2.19 54.46 2.146 54.46 2.087 c
-54.46 1.896 l
-54.468 1.826 54.475 1.756 54.475 1.69 c
-54.482 1.62 54.49 1.565 54.49 1.529 c
-54.505 1.529 l
-54.622 1.793 54.773 1.984 54.96 2.102 c
-55.143 2.219 55.364 2.277 55.621 2.277 c
-55.806 2.277 55.966 2.248 56.107 2.19 c
-56.242 2.131 56.357 2.042 56.444 1.925 c
-56.533 1.807 56.595 1.664 56.635 1.499 c
-56.683 1.341 56.71 1.153 56.71 0.941 c
-56.71 -1.264 l
-h
-58.628 -1.324 m
-58.458 -1.324 58.308 -1.301 58.172 -1.264 c
-58.044 -1.216 57.929 -1.147 57.834 -1.058 c
-57.745 -0.971 57.676 -0.864 57.628 -0.736 c
-57.576 -0.599 57.554 -0.449 57.554 -0.279 c
-57.554 -0.074 57.587 0.095 57.657 0.235 c
-57.724 0.382 57.819 0.492 57.936 0.573 c
-58.061 0.661 58.204 0.723 58.363 0.764 c
-58.528 0.801 58.705 0.826 58.892 0.837 c
-59.612 0.852 l
-59.612 1.028 l
-59.612 1.146 59.601 1.249 59.583 1.337 c
-59.561 1.425 59.528 1.491 59.48 1.543 c
-59.44 1.602 59.392 1.639 59.333 1.66 c
-59.274 1.679 59.208 1.69 59.141 1.69 c
-59.072 1.69 59.01 1.679 58.951 1.66 c
-58.9 1.649 58.852 1.624 58.804 1.587 c
-58.763 1.558 58.73 1.506 58.701 1.44 c
-58.679 1.381 58.664 1.3 58.657 1.205 c
-57.716 1.249 l
-57.745 1.396 57.79 1.531 57.848 1.66 c
-57.915 1.786 58.01 1.896 58.127 1.984 c
-58.245 2.079 58.385 2.153 58.554 2.204 c
-58.73 2.252 58.936 2.277 59.172 2.277 c
-59.612 2.277 59.943 2.167 60.171 1.955 c
-60.406 1.749 60.523 1.44 60.523 1.028 c
-60.523 -0.235 l
-60.523 -0.456 l
-60.531 -0.515 60.546 -0.57 60.568 -0.618 c
-60.586 -0.659 60.616 -0.691 60.656 -0.721 c
-60.693 -0.743 60.744 -0.75 60.803 -0.75 c
-60.869 -0.75 60.939 -0.746 61.009 -0.736 c
-61.009 -1.22 l
-60.95 -1.231 60.895 -1.243 60.847 -1.25 c
-60.807 -1.261 60.766 -1.268 60.729 -1.279 c
-60.689 -1.287 60.645 -1.294 60.597 -1.294 c
-60.546 -1.301 60.487 -1.309 60.421 -1.309 c
-60.193 -1.309 60.028 -1.257 59.921 -1.147 c
-59.81 -1.029 59.748 -0.864 59.729 -0.647 c
-59.715 -0.647 l
-59.646 -0.757 59.575 -0.853 59.509 -0.941 c
-59.44 -1.022 59.363 -1.088 59.274 -1.147 c
-59.186 -1.206 59.087 -1.25 58.981 -1.279 c
-58.881 -1.309 58.763 -1.324 58.628 -1.324 c
-59.612 0.353 m
-59.186 0.338 l
-59.087 0.338 58.995 0.33 58.906 0.323 c
-58.826 0.312 58.76 0.286 58.701 0.249 c
-58.642 0.209 58.591 0.151 58.554 0.073 c
-58.514 0.003 58.495 -0.088 58.495 -0.206 c
-58.495 -0.375 58.528 -0.497 58.598 -0.574 c
-58.664 -0.655 58.763 -0.691 58.892 -0.691 c
-58.998 -0.691 59.098 -0.669 59.186 -0.618 c
-59.282 -0.57 59.363 -0.508 59.421 -0.427 c
-59.488 -0.35 59.538 -0.262 59.569 -0.162 c
-59.598 -0.056 59.612 0.058 59.612 0.176 c
-h
-62.894 -1.264 m
-62.894 0.852 l
-62.894 1.018 62.887 1.153 62.879 1.263 c
-62.868 1.371 62.85 1.454 62.821 1.514 c
-62.798 1.579 62.769 1.631 62.732 1.66 c
-62.703 1.69 62.663 1.705 62.615 1.705 c
-62.555 1.705 62.501 1.675 62.453 1.616 c
-62.412 1.565 62.379 1.491 62.35 1.396 c
-62.32 1.308 62.295 1.194 62.277 1.058 c
-62.266 0.918 62.262 0.768 62.262 0.602 c
-62.262 -1.264 l
-61.512 -1.264 l
-61.512 1.469 l
-61.512 1.705 l
-61.512 1.925 l
-61.512 2.002 61.505 2.065 61.497 2.117 c
-61.497 2.219 l
-62.173 2.219 l
-62.173 2.131 l
-62.173 1.984 l
-62.181 1.925 62.189 1.866 62.189 1.807 c
-62.189 1.646 l
-62.203 1.646 l
-62.221 1.734 62.251 1.811 62.291 1.881 c
-62.328 1.959 62.372 2.028 62.424 2.087 c
-62.482 2.146 62.549 2.19 62.629 2.219 c
-62.707 2.256 62.794 2.277 62.894 2.277 c
-63.078 2.277 63.218 2.223 63.305 2.117 c
-63.401 2.017 63.471 1.859 63.511 1.646 c
-63.526 1.646 l
-63.563 1.741 63.603 1.83 63.644 1.911 c
-63.691 1.988 63.746 2.05 63.805 2.102 c
-63.864 2.16 63.93 2.204 64.011 2.234 c
-64.088 2.263 64.176 2.277 64.275 2.277 c
-64.411 2.277 64.525 2.252 64.614 2.204 c
-64.702 2.153 64.768 2.079 64.82 1.984 c
-64.878 1.884 64.915 1.756 64.937 1.602 c
-64.967 1.454 64.981 1.271 64.981 1.058 c
-64.981 -1.264 l
-64.261 -1.264 l
-64.261 0.852 l
-64.261 1.018 64.253 1.153 64.246 1.263 c
-64.236 1.371 64.217 1.454 64.188 1.514 c
-64.165 1.579 64.136 1.631 64.099 1.66 c
-64.07 1.69 64.03 1.705 63.982 1.705 c
-63.864 1.705 63.768 1.616 63.702 1.44 c
-63.644 1.271 63.614 1.014 63.614 0.661 c
-63.614 -1.264 l
-h
-67.351 -1.324 m
-67.094 -1.324 66.866 -1.287 66.661 -1.22 c
-66.455 -1.143 66.278 -1.029 66.131 -0.882 c
-65.984 -0.728 65.867 -0.537 65.778 -0.31 c
-65.697 -0.085 65.661 0.18 65.661 0.484 c
-65.661 0.816 65.705 1.095 65.793 1.323 c
-65.888 1.558 66.017 1.741 66.175 1.881 c
-66.341 2.017 66.528 2.117 66.734 2.175 c
-66.94 2.241 67.149 2.277 67.366 2.277 c
-67.638 2.277 67.873 2.227 68.072 2.131 c
-68.277 2.042 68.443 1.911 68.571 1.734 c
-68.707 1.565 68.807 1.359 68.865 1.117 c
-68.932 0.881 68.968 0.617 68.968 0.323 c
-68.968 0.309 l
-66.602 0.309 l
-66.602 0.161 66.617 0.022 66.646 -0.103 c
-66.682 -0.232 66.738 -0.346 66.808 -0.441 c
-66.873 -0.53 66.958 -0.599 67.058 -0.647 c
-67.153 -0.699 67.267 -0.721 67.396 -0.721 c
-67.55 -0.721 67.689 -0.688 67.807 -0.618 c
-67.932 -0.551 68.02 -0.449 68.072 -0.31 c
-68.909 -0.383 l
-68.88 -0.482 68.824 -0.588 68.747 -0.706 c
-68.666 -0.817 68.564 -0.919 68.439 -1.015 c
-68.321 -1.103 68.167 -1.176 67.983 -1.235 c
-67.807 -1.294 67.594 -1.324 67.351 -1.324 c
-67.351 1.705 m
-67.263 1.705 67.175 1.69 67.087 1.66 c
-66.999 1.631 66.918 1.579 66.852 1.514 c
-66.782 1.444 66.723 1.356 66.675 1.249 c
-66.634 1.138 66.617 1.014 66.617 0.866 c
-68.086 0.866 l
-68.086 1.003 68.061 1.124 68.013 1.234 c
-67.972 1.341 67.918 1.429 67.851 1.499 c
-67.793 1.565 67.719 1.616 67.631 1.646 c
-67.542 1.683 67.447 1.705 67.351 1.705 c
-70.221 -2.631 m
-70.221 -2.014 l
-71.294 -2.014 l
-71.294 2.896 l
-70.221 2.896 l
-70.221 3.513 l
-72.147 3.513 l
-72.147 -2.631 l
-h
-78.729 -2.631 m
-78.729 3.513 l
-80.654 3.513 l
-80.654 2.896 l
-79.581 2.896 l
-79.581 -2.014 l
-80.654 -2.014 l
-80.654 -2.631 l
-h
-83.598 -1.324 m
-83.311 -1.324 83.068 -1.283 82.862 -1.206 c
-82.657 -1.118 82.484 -0.996 82.348 -0.838 c
-82.208 -0.684 82.106 -0.497 82.039 -0.279 c
-81.969 -0.056 81.937 0.191 81.937 0.455 c
-81.937 0.749 81.969 1.007 82.039 1.234 c
-82.116 1.458 82.223 1.646 82.363 1.793 c
-82.509 1.947 82.686 2.065 82.892 2.146 c
-83.097 2.234 83.333 2.277 83.598 2.277 c
-83.822 2.277 84.024 2.248 84.2 2.19 c
-84.377 2.131 84.527 2.046 84.656 1.94 c
-84.78 1.841 84.884 1.72 84.965 1.572 c
-85.042 1.433 85.096 1.282 85.127 1.117 c
-84.215 1.072 l
-84.186 1.249 84.115 1.389 84.009 1.499 c
-83.91 1.606 83.766 1.66 83.583 1.66 c
-83.336 1.66 83.16 1.558 83.053 1.352 c
-82.943 1.153 82.892 0.866 82.892 0.484 c
-82.892 -0.31 83.128 -0.706 83.598 -0.706 c
-83.763 -0.706 83.906 -0.655 84.024 -0.545 c
-84.142 -0.437 84.215 -0.276 84.244 -0.059 c
-85.156 -0.103 l
-85.127 -0.273 85.071 -0.427 84.994 -0.574 c
-84.924 -0.721 84.821 -0.853 84.685 -0.971 c
-84.556 -1.081 84.398 -1.169 84.215 -1.235 c
-84.038 -1.294 83.833 -1.324 83.598 -1.324 c
-89.304 0.484 m
-89.304 0.209 89.268 -0.04 89.202 -0.265 c
-89.131 -0.482 89.029 -0.669 88.892 -0.823 c
-88.753 -0.981 88.577 -1.103 88.364 -1.191 c
-88.147 -1.279 87.893 -1.324 87.599 -1.324 c
-87.323 -1.324 87.078 -1.279 86.864 -1.191 c
-86.658 -1.103 86.486 -0.981 86.35 -0.823 c
-86.21 -0.669 86.108 -0.482 86.041 -0.265 c
-85.971 -0.04 85.938 0.209 85.938 0.484 c
-85.938 0.738 85.968 0.974 86.027 1.19 c
-86.093 1.414 86.195 1.606 86.335 1.764 c
-86.471 1.928 86.648 2.057 86.864 2.146 c
-87.078 2.234 87.335 2.277 87.629 2.277 c
-87.941 2.277 88.202 2.234 88.408 2.146 c
-88.62 2.057 88.794 1.928 88.922 1.764 c
-89.058 1.606 89.158 1.414 89.216 1.19 c
-89.275 0.974 89.304 0.738 89.304 0.484 c
-88.349 0.484 m
-88.349 0.69 88.334 0.866 88.304 1.014 c
-88.283 1.161 88.246 1.282 88.187 1.381 c
-88.128 1.477 88.055 1.547 87.967 1.587 c
-87.878 1.635 87.768 1.66 87.643 1.66 c
-87.379 1.66 87.188 1.562 87.07 1.367 c
-86.953 1.179 86.893 0.885 86.893 0.484 c
-86.893 0.062 86.953 -0.243 87.07 -0.427 c
-87.188 -0.614 87.364 -0.706 87.599 -0.706 c
-87.724 -0.706 87.838 -0.688 87.938 -0.647 c
-88.033 -0.599 88.113 -0.526 88.173 -0.427 c
-88.239 -0.331 88.283 -0.206 88.304 -0.059 c
-88.334 0.087 88.349 0.268 88.349 0.484 c
-91.321 -1.264 m
-91.321 0.852 l
-91.321 1.018 91.315 1.153 91.307 1.263 c
-91.296 1.371 91.278 1.454 91.248 1.514 c
-91.226 1.579 91.197 1.631 91.16 1.66 c
-91.13 1.69 91.09 1.705 91.043 1.705 c
-90.984 1.705 90.929 1.675 90.881 1.616 c
-90.841 1.565 90.808 1.491 90.778 1.396 c
-90.748 1.308 90.723 1.194 90.704 1.058 c
-90.694 0.918 90.69 0.768 90.69 0.602 c
-90.69 -1.264 l
-89.94 -1.264 l
-89.94 1.469 l
-89.94 1.705 l
-89.94 1.925 l
-89.94 2.002 89.933 2.065 89.925 2.117 c
-89.925 2.219 l
-90.602 2.219 l
-90.602 2.131 l
-90.602 1.984 l
-90.609 1.925 90.616 1.866 90.616 1.807 c
-90.616 1.646 l
-90.631 1.646 l
-90.65 1.734 90.679 1.811 90.719 1.881 c
-90.756 1.959 90.8 2.028 90.851 2.087 c
-90.91 2.146 90.976 2.19 91.057 2.219 c
-91.134 2.256 91.223 2.277 91.321 2.277 c
-91.506 2.277 91.645 2.223 91.733 2.117 c
-91.829 2.017 91.899 1.859 91.939 1.646 c
-91.954 1.646 l
-91.99 1.741 92.031 1.83 92.071 1.911 c
-92.119 1.988 92.175 2.05 92.233 2.102 c
-92.292 2.16 92.358 2.204 92.439 2.234 c
-92.516 2.263 92.604 2.277 92.703 2.277 c
-92.84 2.277 92.954 2.252 93.042 2.204 c
-93.129 2.153 93.196 2.079 93.247 1.984 c
-93.306 1.884 93.343 1.756 93.365 1.602 c
-93.395 1.454 93.409 1.271 93.409 1.058 c
-93.409 -1.264 l
-92.689 -1.264 l
-92.689 0.852 l
-92.689 1.018 92.682 1.153 92.674 1.263 c
-92.663 1.371 92.645 1.454 92.616 1.514 c
-92.593 1.579 92.564 1.631 92.527 1.66 c
-92.497 1.69 92.458 1.705 92.41 1.705 c
-92.292 1.705 92.196 1.616 92.13 1.44 c
-92.071 1.271 92.042 1.014 92.042 0.661 c
-92.042 -1.264 l
-h
-95.383 -1.264 m
-95.383 0.852 l
-95.383 1.018 95.375 1.153 95.367 1.263 c
-95.357 1.371 95.338 1.454 95.309 1.514 c
-95.287 1.579 95.257 1.631 95.221 1.66 c
-95.192 1.69 95.151 1.705 95.103 1.705 c
-95.045 1.705 94.989 1.675 94.941 1.616 c
-94.901 1.565 94.868 1.491 94.839 1.396 c
-94.81 1.308 94.783 1.194 94.765 1.058 c
-94.754 0.918 94.75 0.768 94.75 0.602 c
-94.75 -1.264 l
-94.001 -1.264 l
-94.001 1.469 l
-94.001 1.705 l
-94.001 1.925 l
-94.001 2.002 93.993 2.065 93.986 2.117 c
-93.986 2.219 l
-94.662 2.219 l
-94.662 2.131 l
-94.662 1.984 l
-94.669 1.925 94.677 1.866 94.677 1.807 c
-94.677 1.646 l
-94.692 1.646 l
-94.71 1.734 94.739 1.811 94.78 1.881 c
-94.816 1.959 94.86 2.028 94.912 2.087 c
-94.97 2.146 95.037 2.19 95.118 2.219 c
-95.195 2.256 95.283 2.277 95.383 2.277 c
-95.566 2.277 95.706 2.223 95.794 2.117 c
-95.89 2.017 95.959 1.859 96 1.646 c
-96.015 1.646 l
-96.051 1.741 96.092 1.83 96.132 1.911 c
-96.18 1.988 96.235 2.05 96.294 2.102 c
-96.352 2.16 96.418 2.204 96.499 2.234 c
-96.576 2.263 96.665 2.277 96.764 2.277 c
-96.9 2.277 97.014 2.252 97.102 2.204 c
-97.191 2.153 97.256 2.079 97.308 1.984 c
-97.367 1.884 97.403 1.756 97.426 1.602 c
-97.455 1.454 97.47 1.271 97.47 1.058 c
-97.47 -1.264 l
-96.749 -1.264 l
-96.749 0.852 l
-96.749 1.018 96.742 1.153 96.734 1.263 c
-96.724 1.371 96.705 1.454 96.676 1.514 c
-96.653 1.579 96.624 1.631 96.588 1.66 c
-96.558 1.69 96.518 1.705 96.47 1.705 c
-96.352 1.705 96.257 1.616 96.191 1.44 c
-96.132 1.271 96.103 1.014 96.103 0.661 c
-96.103 -1.264 l
-h
-100.387 -0.647 m
-101.519 -0.647 l
-101.519 -1.264 l
-98.212 -1.264 l
-98.212 -0.647 l
-99.476 -0.647 l
-99.476 1.602 l
-98.55 1.602 l
-98.55 2.219 l
-100.387 2.219 l
-h
-99.476 3.513 0.912 -0.676 re
-99.476 2.836 m
-102.949 1.602 m
-102.405 1.602 l
-102.405 2.219 l
-102.993 2.219 l
-103.272 3.116 l
-103.845 3.116 l
-103.845 2.219 l
-105.081 2.219 l
-105.081 1.602 l
-103.845 1.602 l
-103.845 -0.103 l
-103.845 -0.324 l
-103.853 -0.393 103.875 -0.456 103.905 -0.515 c
-103.941 -0.566 103.996 -0.611 104.066 -0.647 c
-104.143 -0.676 104.257 -0.691 104.404 -0.691 c
-104.54 -0.691 104.676 -0.688 104.815 -0.676 c
-104.952 -0.659 105.083 -0.632 105.212 -0.603 c
-105.212 -1.206 l
-105.131 -1.216 105.054 -1.231 104.977 -1.25 c
-104.896 -1.261 104.819 -1.268 104.742 -1.279 c
-104.661 -1.287 104.573 -1.294 104.478 -1.294 c
-104.389 -1.301 104.29 -1.309 104.183 -1.309 c
-103.996 -1.309 103.834 -1.294 103.699 -1.264 c
-103.57 -1.228 103.456 -1.183 103.36 -1.133 c
-103.272 -1.085 103.199 -1.025 103.14 -0.956 c
-103.081 -0.879 103.037 -0.802 103.007 -0.721 c
-102.978 -0.632 102.956 -0.545 102.949 -0.456 c
-102.938 -0.36 102.934 -0.265 102.934 -0.177 c
-h
-113.569 -0.25 m
-113.569 -0.42 113.528 -0.57 113.451 -0.706 c
-113.382 -0.834 113.278 -0.948 113.143 -1.044 c
-113.014 -1.133 112.852 -1.202 112.657 -1.25 c
-112.47 -1.297 112.253 -1.324 112.011 -1.324 c
-111.782 -1.324 111.585 -1.309 111.408 -1.279 c
-111.232 -1.25 111.074 -1.202 110.938 -1.133 c
-110.798 -1.056 110.687 -0.956 110.6 -0.838 c
-110.511 -0.721 110.442 -0.574 110.394 -0.397 c
-111.202 -0.279 l
-111.221 -0.379 111.25 -0.456 111.29 -0.515 c
-111.338 -0.574 111.397 -0.618 111.467 -0.647 c
-111.533 -0.676 111.614 -0.703 111.702 -0.721 c
-111.79 -0.732 111.893 -0.736 112.011 -0.736 c
-112.106 -0.736 112.202 -0.732 112.29 -0.721 c
-112.378 -0.703 112.455 -0.676 112.526 -0.647 c
-112.591 -0.618 112.643 -0.581 112.672 -0.53 c
-112.709 -0.482 112.731 -0.42 112.731 -0.339 c
-112.731 -0.243 112.702 -0.169 112.643 -0.118 c
-112.591 -0.071 112.526 -0.03 112.437 0 c
-112.349 0.037 112.239 0.066 112.114 0.087 c
-111.996 0.118 111.863 0.147 111.717 0.176 c
-111.577 0.213 111.437 0.253 111.29 0.294 c
-111.151 0.341 111.026 0.404 110.908 0.484 c
-110.798 0.562 110.71 0.661 110.644 0.779 c
-110.574 0.897 110.541 1.047 110.541 1.234 c
-110.541 1.389 110.57 1.531 110.629 1.66 c
-110.695 1.797 110.791 1.911 110.908 1.999 c
-111.034 2.087 111.192 2.153 111.379 2.204 c
-111.562 2.252 111.776 2.277 112.011 2.277 c
-112.194 2.277 112.371 2.256 112.54 2.219 c
-112.705 2.19 112.852 2.135 112.981 2.057 c
-113.106 1.988 113.216 1.888 113.305 1.764 c
-113.392 1.646 113.451 1.502 113.48 1.337 c
-112.686 1.263 l
-112.665 1.341 112.636 1.404 112.599 1.454 c
-112.559 1.514 112.511 1.558 112.451 1.587 c
-112.4 1.624 112.337 1.649 112.26 1.66 c
-112.179 1.668 112.099 1.675 112.011 1.675 c
-111.794 1.675 111.632 1.646 111.526 1.587 c
-111.416 1.535 111.364 1.448 111.364 1.323 c
-111.364 1.242 111.383 1.179 111.423 1.132 c
-111.47 1.08 111.533 1.043 111.614 1.014 c
-111.702 0.984 111.797 0.955 111.908 0.926 c
-112.015 0.903 112.136 0.881 112.275 0.852 c
-112.43 0.823 112.588 0.783 112.746 0.735 c
-112.9 0.683 113.039 0.621 113.157 0.544 c
-113.274 0.463 113.37 0.359 113.451 0.235 c
-113.528 0.106 113.569 -0.056 113.569 -0.25 c
-115.425 1.514 m
-115.543 1.786 115.693 1.984 115.88 2.102 c
-116.064 2.219 116.285 2.277 116.542 2.277 c
-116.748 2.277 116.917 2.241 117.056 2.175 c
-117.203 2.105 117.313 2.013 117.394 1.896 c
-117.482 1.778 117.542 1.635 117.571 1.469 c
-117.607 1.3 117.629 1.124 117.629 0.941 c
-117.629 -1.264 l
-116.718 -1.264 l
-116.718 0.735 l
-116.718 0.87 116.707 0.992 116.688 1.102 c
-116.678 1.209 116.652 1.296 116.615 1.367 c
-116.575 1.444 116.516 1.502 116.439 1.543 c
-116.369 1.579 116.277 1.602 116.16 1.602 c
-116.05 1.602 115.954 1.576 115.865 1.529 c
-115.778 1.477 115.697 1.411 115.63 1.323 c
-115.572 1.234 115.52 1.124 115.483 0.999 c
-115.454 0.881 115.439 0.749 115.439 0.602 c
-115.439 -1.264 l
-114.527 -1.264 l
-114.527 3.513 l
-115.439 3.513 l
-115.439 2.204 l
-115.439 2.135 115.432 2.065 115.425 1.999 c
-115.425 1.793 l
-115.425 1.734 115.417 1.679 115.41 1.631 c
-115.41 1.514 l
-h
-119.547 -1.324 m
-119.379 -1.324 119.228 -1.301 119.092 -1.264 c
-118.963 -1.216 118.849 -1.147 118.754 -1.058 c
-118.666 -0.971 118.596 -0.864 118.548 -0.736 c
-118.496 -0.599 118.475 -0.449 118.475 -0.279 c
-118.475 -0.074 118.508 0.095 118.577 0.235 c
-118.643 0.382 118.739 0.492 118.857 0.573 c
-118.982 0.661 119.125 0.723 119.283 0.764 c
-119.449 0.801 119.624 0.826 119.813 0.837 c
-120.532 0.852 l
-120.532 1.028 l
-120.532 1.146 120.522 1.249 120.503 1.337 c
-120.481 1.425 120.448 1.491 120.401 1.543 c
-120.36 1.602 120.312 1.639 120.253 1.66 c
-120.195 1.679 120.129 1.69 120.062 1.69 c
-119.992 1.69 119.93 1.679 119.871 1.66 c
-119.819 1.649 119.772 1.624 119.724 1.587 c
-119.684 1.558 119.651 1.506 119.622 1.44 c
-119.599 1.381 119.584 1.3 119.577 1.205 c
-118.637 1.249 l
-118.666 1.396 118.71 1.531 118.768 1.66 c
-118.835 1.786 118.93 1.896 119.048 1.984 c
-119.165 2.079 119.306 2.153 119.474 2.204 c
-119.651 2.252 119.857 2.277 120.092 2.277 c
-120.532 2.277 120.863 2.167 121.091 1.955 c
-121.326 1.749 121.444 1.44 121.444 1.028 c
-121.444 -0.235 l
-121.444 -0.456 l
-121.451 -0.515 121.465 -0.57 121.488 -0.618 c
-121.506 -0.659 121.536 -0.691 121.576 -0.721 c
-121.613 -0.743 121.664 -0.75 121.723 -0.75 c
-121.789 -0.75 121.859 -0.746 121.929 -0.736 c
-121.929 -1.22 l
-121.87 -1.231 121.815 -1.243 121.767 -1.25 c
-121.727 -1.261 121.687 -1.268 121.65 -1.279 c
-121.609 -1.287 121.565 -1.294 121.517 -1.294 c
-121.465 -1.301 121.407 -1.309 121.341 -1.309 c
-121.113 -1.309 120.948 -1.257 120.841 -1.147 c
-120.731 -1.029 120.669 -0.864 120.65 -0.647 c
-120.636 -0.647 l
-120.565 -0.757 120.496 -0.853 120.43 -0.941 c
-120.36 -1.022 120.283 -1.088 120.195 -1.147 c
-120.106 -1.206 120.007 -1.25 119.9 -1.279 c
-119.801 -1.309 119.684 -1.324 119.547 -1.324 c
-120.532 0.353 m
-120.106 0.338 l
-120.007 0.338 119.915 0.33 119.827 0.323 c
-119.746 0.312 119.68 0.286 119.622 0.249 c
-119.562 0.209 119.511 0.151 119.474 0.073 c
-119.433 0.003 119.416 -0.088 119.416 -0.206 c
-119.416 -0.375 119.449 -0.497 119.518 -0.574 c
-119.584 -0.655 119.684 -0.691 119.813 -0.691 c
-119.919 -0.691 120.018 -0.669 120.106 -0.618 c
-120.202 -0.57 120.283 -0.508 120.341 -0.427 c
-120.407 -0.35 120.459 -0.262 120.488 -0.162 c
-120.518 -0.056 120.532 0.058 120.532 0.176 c
-h
-123.02 -2.631 m
-123.02 -2.014 l
-124.093 -2.014 l
-124.093 2.896 l
-123.02 2.896 l
-123.02 3.513 l
-124.946 3.513 l
-124.946 -2.631 l
-h
-f
-Q
-q 1 0 0 1 368.1085 380.8423 cm
-0 0 m
--0.029 -0.58 -0.191 -1.022 -0.484 -1.323 c
--0.779 -1.627 -1.198 -1.778 -1.734 -1.778 c
--2.263 -1.778 -2.69 -1.58 -3.013 -1.176 c
--3.329 -0.764 -3.484 -0.206 -3.484 0.5 c
--3.484 1.47 l
--3.484 2.165 -3.322 2.712 -2.998 3.117 c
--2.675 3.516 -2.23 3.719 -1.66 3.719 c
--1.153 3.719 -0.756 3.561 -0.47 3.248 c
--0.187 2.944 -0.029 2.502 0 1.926 c
--0.691 1.926 l
--0.72 2.367 -0.816 2.679 -0.97 2.866 c
--1.117 3.05 -1.348 3.146 -1.66 3.146 c
--2.036 3.146 -2.318 2.999 -2.513 2.705 c
--2.711 2.418 -2.807 2.003 -2.807 1.455 c
--2.807 0.47 l
--2.807 -0.07 -2.715 -0.484 -2.528 -0.779 c
--2.344 -1.066 -2.079 -1.205 -1.734 -1.205 c
--1.381 -1.205 -1.128 -1.117 -0.97 -0.941 c
--0.816 -0.764 -0.72 -0.452 -0.691 0 c
-h
-2.455 1.661 m
-2.367 1.679 2.268 1.691 2.161 1.691 c
-1.827 1.691 1.592 1.507 1.455 1.147 c
-1.455 -1.705 l
-0.809 -1.705 l
-0.809 2.278 l
-1.441 2.278 l
-1.455 1.867 l
-1.632 2.19 1.875 2.352 2.191 2.352 c
-2.297 2.352 2.386 2.33 2.455 2.294 c
-h
-4.454 -1.778 m
-3.955 -1.778 3.572 -1.631 3.308 -1.338 c
-3.043 -1.043 2.911 -0.61 2.911 -0.029 c
-2.911 0.441 l
-2.911 1.037 3.036 1.503 3.293 1.837 c
-3.558 2.18 3.918 2.352 4.381 2.352 c
-4.84 2.352 5.182 2.198 5.409 1.897 c
-5.644 1.602 5.766 1.139 5.777 0.515 c
-5.777 0.088 l
-3.558 0.088 l
-3.558 0 l
-3.558 -0.434 3.635 -0.746 3.793 -0.941 c
-3.959 -1.128 4.19 -1.22 4.484 -1.22 c
-4.678 -1.22 4.851 -1.187 4.998 -1.117 c
-5.145 -1.04 5.281 -0.922 5.409 -0.764 c
-5.748 -1.176 l
-5.461 -1.58 5.031 -1.778 4.454 -1.778 c
-4.381 1.793 m
-4.105 1.793 3.903 1.698 3.778 1.515 c
-3.649 1.326 3.576 1.037 3.558 0.647 c
-5.131 0.647 l
-5.131 0.735 l
-5.108 1.118 5.042 1.386 4.925 1.544 c
-4.807 1.709 4.624 1.793 4.381 1.793 c
-8.599 -1.705 m
-8.559 -1.617 8.533 -1.469 8.526 -1.264 c
-8.291 -1.61 7.996 -1.778 7.643 -1.778 c
-7.28 -1.778 6.997 -1.683 6.791 -1.484 c
-6.593 -1.278 6.498 -0.992 6.498 -0.617 c
-6.498 -0.216 6.633 0.103 6.909 0.339 c
-7.181 0.58 7.556 0.706 8.026 0.706 c
-8.511 0.706 l
-8.511 1.132 l
-8.511 1.367 8.456 1.532 8.349 1.632 c
-8.239 1.738 8.077 1.793 7.865 1.793 c
-7.666 1.793 7.504 1.735 7.379 1.617 c
-7.262 1.5 7.203 1.353 7.203 1.176 c
-6.556 1.176 l
-6.556 1.371 6.615 1.562 6.733 1.75 c
-6.858 1.933 7.019 2.08 7.217 2.19 c
-7.423 2.297 7.651 2.352 7.909 2.352 c
-8.309 2.352 8.614 2.249 8.819 2.043 c
-9.033 1.837 9.147 1.544 9.158 1.162 c
-9.158 -0.852 l
-9.158 -1.157 9.195 -1.422 9.276 -1.646 c
-9.276 -1.705 l
-h
-7.732 -1.19 m
-7.897 -1.19 8.048 -1.147 8.188 -1.058 c
-8.335 -0.97 8.441 -0.86 8.511 -0.72 c
-8.511 0.221 l
-8.144 0.221 l
-7.828 0.221 7.585 0.151 7.408 0.015 c
-7.232 -0.114 7.144 -0.301 7.144 -0.544 c
-7.144 -0.771 7.188 -0.937 7.277 -1.043 c
-7.365 -1.143 7.516 -1.19 7.732 -1.19 c
-11.01 3.234 m
-11.01 2.278 l
-11.612 2.278 l
-11.612 1.75 l
-11.01 1.75 l
-11.01 -0.72 l
-11.01 -0.878 11.032 -0.995 11.084 -1.072 c
-11.142 -1.153 11.231 -1.19 11.348 -1.19 c
-11.437 -1.19 11.524 -1.176 11.612 -1.147 c
-11.612 -1.705 l
-11.466 -1.753 11.311 -1.778 11.157 -1.778 c
-10.899 -1.778 10.705 -1.687 10.569 -1.5 c
-10.429 -1.315 10.363 -1.055 10.363 -0.72 c
-10.363 1.75 l
-9.76 1.75 l
-9.76 2.278 l
-10.363 2.278 l
-10.363 3.234 l
-h
-13.803 -1.778 m
-13.303 -1.778 12.921 -1.631 12.657 -1.338 c
-12.391 -1.043 12.26 -0.61 12.26 -0.029 c
-12.26 0.441 l
-12.26 1.037 12.385 1.503 12.642 1.837 c
-12.906 2.18 13.266 2.352 13.729 2.352 c
-14.188 2.352 14.531 2.198 14.758 1.897 c
-14.993 1.602 15.115 1.139 15.126 0.515 c
-15.126 0.088 l
-12.906 0.088 l
-12.906 0 l
-12.906 -0.434 12.983 -0.746 13.141 -0.941 c
-13.307 -1.128 13.538 -1.22 13.833 -1.22 c
-14.027 -1.22 14.199 -1.187 14.346 -1.117 c
-14.494 -1.04 14.629 -0.922 14.758 -0.764 c
-15.096 -1.176 l
-14.81 -1.58 14.38 -1.778 13.803 -1.778 c
-13.729 1.793 m
-13.453 1.793 13.251 1.698 13.127 1.515 c
-12.998 1.326 12.925 1.037 12.906 0.647 c
-14.479 0.647 l
-14.479 0.735 l
-14.457 1.118 14.39 1.386 14.273 1.544 c
-14.155 1.709 13.972 1.793 13.729 1.793 c
-19.668 -1.705 m
-19.628 -1.617 19.601 -1.469 19.595 -1.264 c
-19.359 -1.61 19.065 -1.778 18.712 -1.778 c
-18.348 -1.778 18.066 -1.683 17.86 -1.484 c
-17.661 -1.278 17.565 -0.992 17.565 -0.617 c
-17.565 -0.216 17.702 0.103 17.978 0.339 c
-18.249 0.58 18.624 0.706 19.094 0.706 c
-19.58 0.706 l
-19.58 1.132 l
-19.58 1.367 19.524 1.532 19.418 1.632 c
-19.308 1.738 19.146 1.793 18.932 1.793 c
-18.735 1.793 18.573 1.735 18.448 1.617 c
-18.33 1.5 18.271 1.353 18.271 1.176 c
-17.625 1.176 l
-17.625 1.371 17.683 1.562 17.801 1.75 c
-17.926 1.933 18.088 2.08 18.286 2.19 c
-18.492 2.297 18.72 2.352 18.977 2.352 c
-19.377 2.352 19.682 2.249 19.888 2.043 c
-20.102 1.837 20.216 1.544 20.226 1.162 c
-20.226 -0.852 l
-20.226 -1.157 20.263 -1.422 20.343 -1.646 c
-20.343 -1.705 l
-h
-18.801 -1.19 m
-18.966 -1.19 19.117 -1.147 19.256 -1.058 c
-19.403 -0.97 19.51 -0.86 19.58 -0.72 c
-19.58 0.221 l
-19.212 0.221 l
-18.896 0.221 18.654 0.151 18.477 0.015 c
-18.301 -0.114 18.213 -0.301 18.213 -0.544 c
-18.213 -0.771 18.257 -0.937 18.344 -1.043 c
-18.433 -1.143 18.583 -1.19 18.801 -1.19 c
-23.798 3.234 m
-23.798 2.278 l
-24.401 2.278 l
-24.401 1.75 l
-23.798 1.75 l
-23.798 -0.72 l
-23.798 -0.878 23.82 -0.995 23.871 -1.072 c
-23.931 -1.153 24.019 -1.19 24.137 -1.19 c
-24.224 -1.19 24.312 -1.176 24.401 -1.147 c
-24.401 -1.705 l
-24.254 -1.753 24.1 -1.778 23.946 -1.778 c
-23.688 -1.778 23.493 -1.687 23.358 -1.5 c
-23.217 -1.315 23.152 -1.055 23.152 -0.72 c
-23.152 1.75 l
-22.549 1.75 l
-22.549 2.278 l
-23.152 2.278 l
-23.152 3.234 l
-h
-27.208 -1.705 m
-27.168 -1.617 27.142 -1.469 27.135 -1.264 c
-26.899 -1.61 26.606 -1.778 26.253 -1.778 c
-25.889 -1.778 25.606 -1.683 25.4 -1.484 c
-25.202 -1.278 25.106 -0.992 25.106 -0.617 c
-25.106 -0.216 25.242 0.103 25.518 0.339 c
-25.79 0.58 26.165 0.706 26.635 0.706 c
-27.121 0.706 l
-27.121 1.132 l
-27.121 1.367 27.065 1.532 26.959 1.632 c
-26.849 1.738 26.687 1.793 26.473 1.793 c
-26.275 1.793 26.113 1.735 25.988 1.617 c
-25.87 1.5 25.812 1.353 25.812 1.176 c
-25.165 1.176 l
-25.165 1.371 25.224 1.562 25.342 1.75 c
-25.467 1.933 25.629 2.08 25.827 2.19 c
-26.032 2.297 26.261 2.352 26.518 2.352 c
-26.918 2.352 27.223 2.249 27.429 2.043 c
-27.642 1.837 27.756 1.544 27.767 1.162 c
-27.767 -0.852 l
-27.767 -1.157 27.804 -1.422 27.884 -1.646 c
-27.884 -1.705 l
-h
-26.341 -1.19 m
-26.506 -1.19 26.657 -1.147 26.797 -1.058 c
-26.944 -0.97 27.05 -0.86 27.121 -0.72 c
-27.121 0.221 l
-26.753 0.221 l
-26.437 0.221 26.194 0.151 26.018 0.015 c
-25.841 -0.114 25.753 -0.301 25.753 -0.544 c
-25.753 -0.771 25.797 -0.937 25.885 -1.043 c
-25.974 -1.143 26.124 -1.19 26.341 -1.19 c
-28.634 0.47 m
-28.634 1.087 28.744 1.551 28.972 1.867 c
-29.197 2.19 29.531 2.352 29.972 2.352 c
-30.373 2.352 30.677 2.176 30.884 1.823 c
-30.927 2.278 l
-31.515 2.278 l
-31.515 -1.749 l
-31.515 -2.238 31.387 -2.616 31.133 -2.881 c
-30.876 -3.146 30.523 -3.278 30.074 -3.278 c
-29.876 -3.278 29.656 -3.227 29.413 -3.131 c
-29.167 -3.032 28.987 -2.911 28.869 -2.763 c
-29.134 -2.323 l
-29.398 -2.587 29.696 -2.719 30.03 -2.719 c
-30.567 -2.719 30.843 -2.425 30.853 -1.837 c
-30.853 -1.308 l
-30.648 -1.624 30.346 -1.778 29.957 -1.778 c
-29.546 -1.778 29.222 -1.627 28.987 -1.323 c
-28.759 -1.01 28.642 -0.559 28.634 0.029 c
-h
-29.296 0.088 m
-29.296 -0.353 29.359 -0.683 29.487 -0.897 c
-29.612 -1.103 29.829 -1.205 30.134 -1.205 c
-30.456 -1.205 30.695 -1.04 30.853 -0.706 c
-30.853 1.279 l
-30.685 1.602 30.446 1.764 30.134 1.764 c
-29.839 1.764 29.623 1.661 29.487 1.455 c
-29.359 1.249 29.296 0.927 29.296 0.485 c
-h
-34.059 0.47 m
-34.059 1.047 34.194 1.503 34.47 1.837 c
-34.753 2.18 35.123 2.352 35.587 2.352 c
-36.046 2.352 36.414 2.182 36.689 1.852 c
-36.972 1.529 37.12 1.081 37.13 0.515 c
-37.13 0.088 l
-37.13 -0.482 36.987 -0.937 36.704 -1.278 c
-36.428 -1.613 36.06 -1.778 35.601 -1.778 c
-35.138 -1.778 34.768 -1.617 34.485 -1.293 c
-34.209 -0.962 34.065 -0.522 34.059 0.029 c
-h
-34.705 0.088 m
-34.705 -0.316 34.782 -0.632 34.94 -0.867 c
-35.106 -1.103 35.326 -1.22 35.601 -1.22 c
-36.168 -1.22 36.461 -0.808 36.484 0.015 c
-36.484 0.47 l
-36.484 0.871 36.399 1.191 36.233 1.426 c
-36.075 1.669 35.859 1.793 35.587 1.793 c
-35.322 1.793 35.106 1.669 34.94 1.426 c
-34.782 1.191 34.705 0.871 34.705 0.47 c
-h
-40.849 0.088 m
-40.849 -0.529 40.735 -0.995 40.511 -1.308 c
-40.294 -1.624 39.971 -1.778 39.541 -1.778 c
-39.118 -1.778 38.805 -1.598 38.6 -1.234 c
-38.57 -1.705 l
-37.968 -1.705 l
-37.968 3.94 l
-38.615 3.94 l
-38.615 1.837 l
-38.828 2.18 39.137 2.352 39.541 2.352 c
-39.971 2.352 40.294 2.194 40.511 1.882 c
-40.735 1.577 40.849 1.11 40.849 0.485 c
-h
-40.202 0.47 m
-40.202 0.941 40.133 1.272 39.996 1.47 c
-39.868 1.665 39.659 1.764 39.364 1.764 c
-39.03 1.764 38.78 1.58 38.615 1.22 c
-38.615 -0.661 l
-38.78 -1.025 39.034 -1.205 39.379 -1.205 c
-39.673 -1.205 39.883 -1.103 40.012 -0.897 c
-40.137 -0.69 40.202 -0.374 40.202 0.059 c
-h
-42.348 2.278 m
-42.348 -2.205 l
-42.348 -2.94 42.059 -3.307 41.481 -3.307 c
-41.342 -3.307 41.22 -3.285 41.114 -3.248 c
-41.114 -2.705 l
-41.184 -2.723 41.268 -2.734 41.378 -2.734 c
-41.485 -2.734 41.562 -2.69 41.614 -2.601 c
-41.672 -2.521 41.702 -2.381 41.702 -2.175 c
-41.702 2.278 l
-h
-42.377 3.322 m
-42.377 3.212 42.348 3.12 42.29 3.043 c
-42.231 2.973 42.136 2.94 42.011 2.94 c
-41.893 2.94 41.797 2.973 41.731 3.043 c
-41.672 3.12 41.643 3.212 41.643 3.322 c
-41.643 3.439 41.672 3.532 41.731 3.601 c
-41.797 3.678 41.893 3.719 42.011 3.719 c
-42.136 3.719 42.231 3.678 42.29 3.601 c
-42.348 3.52 42.377 3.429 42.377 3.322 c
-44.803 -1.778 m
-44.303 -1.778 43.921 -1.631 43.657 -1.338 c
-43.392 -1.043 43.26 -0.61 43.26 -0.029 c
-43.26 0.441 l
-43.26 1.037 43.385 1.503 43.642 1.837 c
-43.906 2.18 44.266 2.352 44.729 2.352 c
-45.189 2.352 45.531 2.198 45.758 1.897 c
-45.994 1.602 46.115 1.139 46.126 0.515 c
-46.126 0.088 l
-43.906 0.088 l
-43.906 0 l
-43.906 -0.434 43.983 -0.746 44.141 -0.941 c
-44.307 -1.128 44.538 -1.22 44.833 -1.22 c
-45.028 -1.22 45.2 -1.187 45.347 -1.117 c
-45.494 -1.04 45.63 -0.922 45.758 -0.764 c
-46.096 -1.176 l
-45.81 -1.58 45.38 -1.778 44.803 -1.778 c
-44.729 1.793 m
-44.454 1.793 44.252 1.698 44.127 1.515 c
-43.998 1.326 43.925 1.037 43.906 0.647 c
-45.479 0.647 l
-45.479 0.735 l
-45.457 1.118 45.391 1.386 45.273 1.544 c
-45.155 1.709 44.972 1.793 44.729 1.793 c
-48.287 -1.22 m
-48.5 -1.22 48.673 -1.157 48.801 -1.029 c
-48.937 -0.893 49.011 -0.702 49.022 -0.455 c
-49.639 -0.455 l
-49.617 -0.837 49.481 -1.157 49.228 -1.411 c
-48.97 -1.658 48.658 -1.778 48.287 -1.778 c
-47.794 -1.778 47.42 -1.627 47.155 -1.323 c
-46.898 -1.01 46.773 -0.544 46.773 0.073 c
-46.773 0.515 l
-46.773 1.11 46.898 1.565 47.155 1.882 c
-47.42 2.194 47.794 2.352 48.287 2.352 c
-48.687 2.352 49.007 2.22 49.242 1.955 c
-49.485 1.698 49.617 1.353 49.639 0.912 c
-49.022 0.912 l
-48.999 1.205 48.926 1.426 48.801 1.573 c
-48.683 1.72 48.511 1.793 48.287 1.793 c
-47.993 1.793 47.776 1.694 47.64 1.5 c
-47.501 1.312 47.427 1.004 47.42 0.574 c
-47.42 0.059 l
-47.42 -0.411 47.486 -0.746 47.625 -0.941 c
-47.773 -1.128 47.993 -1.22 48.287 -1.22 c
-51.241 3.234 m
-51.241 2.278 l
-51.844 2.278 l
-51.844 1.75 l
-51.241 1.75 l
-51.241 -0.72 l
-51.241 -0.878 51.264 -0.995 51.314 -1.072 c
-51.374 -1.153 51.462 -1.19 51.58 -1.19 c
-51.667 -1.19 51.756 -1.176 51.844 -1.147 c
-51.844 -1.705 l
-51.697 -1.753 51.543 -1.778 51.388 -1.778 c
-51.131 -1.778 50.936 -1.687 50.8 -1.5 c
-50.661 -1.315 50.595 -1.055 50.595 -0.72 c
-50.595 1.75 l
-49.992 1.75 l
-49.992 2.278 l
-50.595 2.278 l
-50.595 3.234 l
-h
-54.946 2.278 m
-54.96 1.837 l
-55.214 2.18 55.537 2.352 55.931 2.352 c
-56.636 2.352 56.992 1.882 57.003 0.941 c
-57.003 -1.705 l
-56.357 -1.705 l
-56.357 0.912 l
-56.357 1.224 56.301 1.444 56.195 1.573 c
-56.085 1.698 55.931 1.764 55.725 1.764 c
-55.567 1.764 55.42 1.709 55.283 1.602 c
-55.155 1.492 55.052 1.357 54.975 1.191 c
-54.975 -1.705 l
-54.328 -1.705 l
-54.328 2.278 l
-h
-60.016 -1.705 m
-59.976 -1.617 59.95 -1.469 59.943 -1.264 c
-59.708 -1.61 59.414 -1.778 59.061 -1.778 c
-58.697 -1.778 58.414 -1.683 58.208 -1.484 c
-58.011 -1.278 57.915 -0.992 57.915 -0.617 c
-57.915 -0.216 58.051 0.103 58.326 0.339 c
-58.599 0.58 58.973 0.706 59.443 0.706 c
-59.929 0.706 l
-59.929 1.132 l
-59.929 1.367 59.873 1.532 59.767 1.632 c
-59.657 1.738 59.495 1.793 59.282 1.793 c
-59.083 1.793 58.921 1.735 58.796 1.617 c
-58.679 1.5 58.62 1.353 58.62 1.176 c
-57.973 1.176 l
-57.973 1.371 58.032 1.562 58.15 1.75 c
-58.275 1.933 58.437 2.08 58.635 2.19 c
-58.84 2.297 59.069 2.352 59.326 2.352 c
-59.727 2.352 60.031 2.249 60.237 2.043 c
-60.45 1.837 60.564 1.544 60.575 1.162 c
-60.575 -0.852 l
-60.575 -1.157 60.612 -1.422 60.693 -1.646 c
-60.693 -1.705 l
-h
-59.149 -1.19 m
-59.315 -1.19 59.465 -1.147 59.605 -1.058 c
-59.752 -0.97 59.858 -0.86 59.929 -0.72 c
-59.929 0.221 l
-59.561 0.221 l
-59.245 0.221 59.002 0.151 58.826 0.015 c
-58.649 -0.114 58.561 -0.301 58.561 -0.544 c
-58.561 -0.771 58.605 -0.937 58.694 -1.043 c
-58.782 -1.143 58.933 -1.19 59.149 -1.19 c
-62.192 2.278 m
-62.206 1.911 l
-62.449 2.205 62.769 2.352 63.162 2.352 c
-63.603 2.352 63.912 2.153 64.088 1.764 c
-64.342 2.153 64.691 2.352 65.132 2.352 c
-65.867 2.352 66.242 1.889 66.264 0.97 c
-66.264 -1.705 l
-65.617 -1.705 l
-65.617 0.912 l
-65.617 1.205 65.562 1.419 65.456 1.558 c
-65.356 1.694 65.184 1.764 64.941 1.764 c
-64.743 1.764 64.581 1.683 64.456 1.529 c
-64.338 1.382 64.268 1.191 64.25 0.956 c
-64.25 -1.705 l
-63.588 -1.705 l
-63.588 0.941 l
-63.588 1.488 63.368 1.764 62.927 1.764 c
-62.593 1.764 62.358 1.602 62.221 1.279 c
-62.221 -1.705 l
-61.575 -1.705 l
-61.575 2.278 l
-h
-68.66 -1.778 m
-68.16 -1.778 67.777 -1.631 67.513 -1.338 c
-67.249 -1.043 67.116 -0.61 67.116 -0.029 c
-67.116 0.441 l
-67.116 1.037 67.241 1.503 67.498 1.837 c
-67.763 2.18 68.124 2.352 68.586 2.352 c
-69.046 2.352 69.387 2.198 69.615 1.897 c
-69.85 1.602 69.971 1.139 69.983 0.515 c
-69.983 0.088 l
-67.763 0.088 l
-67.763 0 l
-67.763 -0.434 67.84 -0.746 67.999 -0.941 c
-68.164 -1.128 68.395 -1.22 68.689 -1.22 c
-68.884 -1.22 69.057 -1.187 69.204 -1.117 c
-69.35 -1.04 69.487 -0.922 69.615 -0.764 c
-69.953 -1.176 l
-69.666 -1.58 69.237 -1.778 68.66 -1.778 c
-68.586 1.793 m
-68.311 1.793 68.109 1.698 67.983 1.515 c
-67.855 1.326 67.781 1.037 67.763 0.647 c
-69.336 0.647 l
-69.336 0.735 l
-69.314 1.118 69.248 1.386 69.13 1.544 c
-69.013 1.709 68.829 1.793 68.586 1.793 c
-70.63 0.47 m
-70.63 1.077 70.74 1.544 70.967 1.867 c
-71.203 2.19 71.53 2.352 71.952 2.352 c
-72.334 2.352 72.633 2.194 72.849 1.882 c
-72.849 3.94 l
-73.495 3.94 l
-73.495 -1.705 l
-72.907 -1.705 l
-72.864 -1.278 l
-72.658 -1.613 72.353 -1.778 71.952 -1.778 c
-71.54 -1.778 71.218 -1.624 70.983 -1.308 c
-70.747 -0.985 70.63 -0.529 70.63 0.059 c
-h
-71.276 0.088 m
-71.276 -0.353 71.338 -0.683 71.467 -0.897 c
-71.603 -1.103 71.824 -1.205 72.128 -1.205 c
-72.452 -1.205 72.691 -1.043 72.849 -0.72 c
-72.849 1.294 l
-72.68 1.606 72.441 1.764 72.128 1.764 c
-71.824 1.764 71.603 1.661 71.467 1.455 c
-71.338 1.249 71.276 0.927 71.276 0.485 c
-h
-f
-Q
-q 1 0 0 1 445.1757 383.1208 cm
-0 0 m
-0.03 -0.397 l
-0.265 -0.085 0.566 0.073 0.941 0.073 c
-1.625 0.073 1.977 -0.408 1.999 -1.367 c
-1.999 -3.983 l
-0.956 -3.983 l
-0.956 -1.44 l
-0.956 -1.216 0.919 -1.055 0.853 -0.956 c
-0.783 -0.86 0.665 -0.808 0.5 -0.808 c
-0.312 -0.808 0.166 -0.904 0.059 -1.087 c
-0.059 -3.983 l
--0.985 -3.983 l
--0.985 0 l
-h
-4.63 -3.983 m
-4.601 -3.925 4.572 -3.821 4.542 -3.675 c
-4.355 -3.932 4.105 -4.056 3.793 -4.056 c
-3.458 -4.056 3.179 -3.95 2.955 -3.734 c
-2.738 -3.509 2.631 -3.219 2.631 -2.866 c
-2.631 -2.454 2.764 -2.138 3.028 -1.911 c
-3.293 -1.675 3.675 -1.558 4.175 -1.558 c
-4.499 -1.558 l
-4.499 -1.234 l
-4.499 -1.058 4.462 -0.937 4.395 -0.867 c
-4.337 -0.79 4.248 -0.75 4.131 -0.75 c
-3.874 -0.75 3.749 -0.904 3.749 -1.205 c
-2.705 -1.205 l
-2.705 -0.834 2.841 -0.529 3.117 -0.294 c
-3.389 -0.052 3.738 0.073 4.16 0.073 c
-4.601 0.073 4.939 -0.044 5.174 -0.279 c
-5.417 -0.507 5.542 -0.831 5.542 -1.249 c
-5.542 -3.116 l
-5.542 -3.462 5.59 -3.73 5.689 -3.925 c
-5.689 -3.983 l
-h
-4.028 -3.233 m
-4.135 -3.233 4.227 -3.215 4.307 -3.175 c
-4.395 -3.127 4.458 -3.069 4.499 -2.998 c
-4.499 -2.175 l
-4.248 -2.175 l
-4.072 -2.175 3.929 -2.234 3.822 -2.352 c
-3.723 -2.462 3.675 -2.609 3.675 -2.793 c
-3.675 -3.087 3.793 -3.233 4.028 -3.233 c
-7.262 0 m
-7.291 -0.368 l
-7.526 -0.073 7.835 0.073 8.217 0.073 c
-8.617 0.073 8.897 -0.11 9.055 -0.47 c
-9.29 -0.11 9.617 0.073 10.04 0.073 c
-10.734 0.073 11.088 -0.411 11.098 -1.382 c
-11.098 -3.983 l
-10.069 -3.983 l
-10.069 -1.44 l
-10.069 -1.216 10.032 -1.055 9.966 -0.956 c
-9.908 -0.86 9.797 -0.808 9.643 -0.808 c
-9.444 -0.808 9.305 -0.926 9.216 -1.161 c
-9.216 -3.983 l
-8.173 -3.983 l
-8.173 -1.455 l
-8.173 -1.22 8.144 -1.055 8.085 -0.956 c
-8.026 -0.86 7.915 -0.808 7.761 -0.808 c
-7.585 -0.808 7.441 -0.904 7.335 -1.087 c
-7.335 -3.983 l
-6.292 -3.983 l
-6.292 0 l
-h
-13.479 -4.056 m
-12.95 -4.056 12.532 -3.902 12.23 -3.586 c
-11.936 -3.263 11.789 -2.803 11.789 -2.205 c
-11.789 -1.897 l
-11.789 -1.272 11.925 -0.786 12.2 -0.441 c
-12.472 -0.099 12.866 0.073 13.376 0.073 c
-13.876 0.073 14.247 -0.088 14.494 -0.411 c
-14.747 -0.735 14.88 -1.213 14.89 -1.837 c
-14.89 -2.337 l
-12.818 -2.337 l
-12.836 -2.631 12.898 -2.848 13.009 -2.984 c
-13.126 -3.123 13.307 -3.19 13.553 -3.19 c
-13.895 -3.19 14.184 -3.072 14.42 -2.837 c
-14.832 -3.469 l
-14.703 -3.645 14.516 -3.788 14.273 -3.896 c
-14.026 -4.002 13.762 -4.056 13.479 -4.056 c
-12.833 -1.617 m
-13.862 -1.617 l
-13.862 -1.514 l
-13.862 -1.278 13.821 -1.103 13.744 -0.985 c
-13.675 -0.86 13.546 -0.794 13.361 -0.794 c
-13.185 -0.794 13.053 -0.864 12.965 -0.999 c
-12.884 -1.128 12.84 -1.334 12.833 -1.617 c
-f
-Q
-q 1 0 0 1 462.7704 379.1377 cm
-0 0 m
-0 3.454 l
--0.529 3.454 l
--0.529 3.983 l
-0 3.983 l
-0 4.438 l
-0 4.839 0.096 5.151 0.294 5.379 c
-0.5 5.604 0.78 5.718 1.133 5.718 c
-1.268 5.718 1.401 5.695 1.529 5.659 c
-1.5 5.115 l
-1.401 5.134 1.301 5.144 1.206 5.144 c
-0.831 5.144 0.647 4.88 0.647 4.351 c
-0.647 3.983 l
-1.324 3.983 l
-1.324 3.454 l
-0.647 3.454 l
-0.647 0 l
-h
-1.956 2.175 m
-1.956 2.752 2.091 3.208 2.367 3.542 c
-2.65 3.884 3.021 4.056 3.484 4.056 c
-3.944 4.056 4.311 3.887 4.586 3.557 c
-4.869 3.233 5.017 2.786 5.027 2.219 c
-5.027 1.793 l
-5.027 1.223 4.884 0.768 4.601 0.426 c
-4.326 0.091 3.958 -0.073 3.499 -0.073 c
-3.036 -0.073 2.665 0.087 2.382 0.411 c
-2.106 0.742 1.962 1.182 1.956 1.734 c
-h
-2.602 1.793 m
-2.602 1.389 2.679 1.072 2.837 0.837 c
-3.003 0.602 3.223 0.484 3.499 0.484 c
-4.065 0.484 4.358 0.897 4.381 1.72 c
-4.381 2.175 l
-4.381 2.576 4.296 2.896 4.131 3.131 c
-3.973 3.374 3.756 3.498 3.484 3.498 c
-3.219 3.498 3.003 3.374 2.837 3.131 c
-2.679 2.896 2.602 2.576 2.602 2.175 c
-h
-7.512 3.366 m
-7.423 3.384 7.325 3.395 7.217 3.395 c
-6.883 3.395 6.648 3.212 6.512 2.851 c
-6.512 0 l
-5.865 0 l
-5.865 3.983 l
-6.498 3.983 l
-6.512 3.572 l
-6.689 3.895 6.931 4.056 7.247 4.056 c
-7.354 4.056 7.442 4.035 7.512 3.998 c
-h
-11.26 0.484 m
-11.473 0.484 11.645 0.548 11.774 0.675 c
-11.911 0.812 11.984 1.003 11.994 1.249 c
-12.612 1.249 l
-12.59 0.867 12.454 0.548 12.2 0.294 c
-11.944 0.047 11.631 -0.073 11.26 -0.073 c
-10.768 -0.073 10.392 0.077 10.128 0.382 c
-9.871 0.694 9.746 1.161 9.746 1.778 c
-9.746 2.219 l
-9.746 2.815 9.871 3.27 10.128 3.586 c
-10.392 3.898 10.768 4.056 11.26 4.056 c
-11.66 4.056 11.98 3.925 12.215 3.659 c
-12.458 3.403 12.59 3.057 12.612 2.616 c
-11.994 2.616 l
-11.973 2.91 11.899 3.131 11.774 3.278 c
-11.657 3.424 11.484 3.498 11.26 3.498 c
-10.966 3.498 10.749 3.399 10.613 3.204 c
-10.473 3.017 10.4 2.708 10.392 2.278 c
-10.392 1.764 l
-10.392 1.294 10.459 0.959 10.598 0.764 c
-10.745 0.577 10.966 0.484 11.26 0.484 c
-15.39 0.353 m
-15.173 0.066 14.861 -0.073 14.45 -0.073 c
-14.086 -0.073 13.81 0.047 13.627 0.294 c
-13.45 0.548 13.355 0.911 13.347 1.381 c
-13.347 3.983 l
-13.993 3.983 l
-13.993 1.44 l
-13.993 0.812 14.178 0.5 14.552 0.5 c
-14.953 0.5 15.229 0.675 15.375 1.028 c
-15.375 3.983 l
-16.023 3.983 l
-16.023 0 l
-15.405 0 l
-h
-18.654 3.366 m
-18.565 3.384 18.466 3.395 18.359 3.395 c
-18.025 3.395 17.79 3.212 17.654 2.851 c
-17.654 0 l
-17.008 0 l
-17.008 3.983 l
-17.639 3.983 l
-17.654 3.572 l
-17.831 3.895 18.073 4.056 18.389 4.056 c
-18.496 4.056 18.583 4.035 18.654 3.998 c
-h
-20.947 3.366 m
-20.858 3.384 20.759 3.395 20.653 3.395 c
-20.318 3.395 20.083 3.212 19.947 2.851 c
-19.947 0 l
-19.3 0 l
-19.3 3.983 l
-19.932 3.983 l
-19.947 3.572 l
-20.123 3.895 20.366 4.056 20.682 4.056 c
-20.788 4.056 20.877 4.035 20.947 3.998 c
-h
-22.946 -0.073 m
-22.446 -0.073 22.064 0.073 21.799 0.367 c
-21.534 0.661 21.402 1.095 21.402 1.675 c
-21.402 2.146 l
-21.402 2.741 21.527 3.208 21.785 3.542 c
-22.049 3.884 22.409 4.056 22.872 4.056 c
-23.331 4.056 23.674 3.902 23.901 3.601 c
-24.137 3.307 24.258 2.844 24.268 2.219 c
-24.268 1.793 l
-22.049 1.793 l
-22.049 1.705 l
-22.049 1.271 22.126 0.959 22.284 0.764 c
-22.45 0.577 22.681 0.484 22.975 0.484 c
-23.169 0.484 23.343 0.517 23.489 0.588 c
-23.636 0.665 23.772 0.783 23.901 0.941 c
-24.239 0.529 l
-23.952 0.124 23.522 -0.073 22.946 -0.073 c
-22.872 3.498 m
-22.597 3.498 22.394 3.403 22.269 3.219 c
-22.141 3.031 22.067 2.741 22.049 2.352 c
-23.622 2.352 l
-23.622 2.439 l
-23.599 2.822 23.534 3.09 23.416 3.248 c
-23.298 3.414 23.115 3.498 22.872 3.498 c
-25.665 3.983 m
-25.679 3.542 l
-25.933 3.884 26.257 4.056 26.65 4.056 c
-27.356 4.056 27.711 3.586 27.723 2.645 c
-27.723 0 l
-27.076 0 l
-27.076 2.616 l
-27.076 2.929 27.021 3.149 26.915 3.278 c
-26.804 3.403 26.65 3.469 26.444 3.469 c
-26.286 3.469 26.139 3.414 26.003 3.307 c
-25.874 3.197 25.772 3.061 25.694 2.896 c
-25.694 0 l
-25.047 0 l
-25.047 3.983 l
-h
-29.546 4.939 m
-29.546 3.983 l
-30.148 3.983 l
-30.148 3.454 l
-29.546 3.454 l
-29.546 0.985 l
-29.546 0.827 29.567 0.709 29.619 0.632 c
-29.677 0.551 29.766 0.515 29.883 0.515 c
-29.972 0.515 30.06 0.529 30.148 0.558 c
-30.148 0 l
-30.001 -0.048 29.847 -0.073 29.693 -0.073 c
-29.436 -0.073 29.241 0.018 29.105 0.205 c
-28.965 0.389 28.899 0.65 28.899 0.985 c
-28.899 3.454 l
-28.297 3.454 l
-28.297 3.983 l
-28.899 3.983 l
-28.899 4.939 l
-h
-34.014 0.484 m
-34.227 0.484 34.4 0.548 34.529 0.675 c
-34.664 0.812 34.738 1.003 34.749 1.249 c
-35.366 1.249 l
-35.345 0.867 35.208 0.548 34.955 0.294 c
-34.697 0.047 34.385 -0.073 34.014 -0.073 c
-33.521 -0.073 33.147 0.077 32.883 0.382 c
-32.625 0.694 32.5 1.161 32.5 1.778 c
-32.5 2.219 l
-32.5 2.815 32.625 3.27 32.883 3.586 c
-33.147 3.898 33.521 4.056 34.014 4.056 c
-34.415 4.056 34.734 3.925 34.969 3.659 c
-35.212 3.403 35.345 3.057 35.366 2.616 c
-34.749 2.616 l
-34.727 2.91 34.653 3.131 34.529 3.278 c
-34.411 3.424 34.238 3.498 34.014 3.498 c
-33.72 3.498 33.503 3.399 33.367 3.204 c
-33.228 3.017 33.154 2.708 33.147 2.278 c
-33.147 1.764 l
-33.147 1.294 33.213 0.959 33.353 0.764 c
-33.5 0.577 33.72 0.484 34.014 0.484 c
-35.983 2.175 m
-35.983 2.752 36.12 3.208 36.395 3.542 c
-36.678 3.884 37.049 4.056 37.512 4.056 c
-37.972 4.056 38.339 3.887 38.615 3.557 c
-38.898 3.233 39.044 2.786 39.056 2.219 c
-39.056 1.793 l
-39.056 1.223 38.913 0.768 38.63 0.426 c
-38.354 0.091 37.986 -0.073 37.527 -0.073 c
-37.064 -0.073 36.693 0.087 36.41 0.411 c
-36.135 0.742 35.991 1.182 35.983 1.734 c
-h
-36.631 1.793 m
-36.631 1.389 36.708 1.072 36.866 0.837 c
-37.031 0.602 37.251 0.484 37.527 0.484 c
-38.093 0.484 38.387 0.897 38.409 1.72 c
-38.409 2.175 l
-38.409 2.576 38.325 2.896 38.159 3.131 c
-38.001 3.374 37.785 3.498 37.512 3.498 c
-37.248 3.498 37.031 3.374 36.866 3.131 c
-36.708 2.896 36.631 2.576 36.631 2.175 c
-h
-40.511 3.983 m
-40.526 3.615 l
-40.768 3.91 41.088 4.056 41.481 4.056 c
-41.922 4.056 42.231 3.858 42.408 3.469 c
-42.661 3.858 43.01 4.056 43.451 4.056 c
-44.186 4.056 44.561 3.594 44.583 2.674 c
-44.583 0 l
-43.936 0 l
-43.936 2.616 l
-43.936 2.91 43.881 3.123 43.774 3.262 c
-43.675 3.399 43.503 3.469 43.26 3.469 c
-43.061 3.469 42.9 3.388 42.774 3.233 c
-42.657 3.087 42.587 2.896 42.568 2.66 c
-42.568 0 l
-41.907 0 l
-41.907 2.645 l
-41.907 3.193 41.687 3.469 41.246 3.469 c
-40.912 3.469 40.677 3.307 40.54 2.984 c
-40.54 0 l
-39.894 0 l
-39.894 3.983 l
-h
-46.171 3.983 m
-46.185 3.615 l
-46.427 3.91 46.747 4.056 47.14 4.056 c
-47.582 4.056 47.89 3.858 48.066 3.469 c
-48.32 3.858 48.669 4.056 49.11 4.056 c
-49.845 4.056 50.219 3.594 50.242 2.674 c
-50.242 0 l
-49.595 0 l
-49.595 2.616 l
-49.595 2.91 49.54 3.123 49.433 3.262 c
-49.334 3.399 49.161 3.469 48.918 3.469 c
-48.721 3.469 48.559 3.388 48.434 3.233 c
-48.316 3.087 48.247 2.896 48.228 2.66 c
-48.228 0 l
-47.567 0 l
-47.567 2.645 l
-47.567 3.193 47.346 3.469 46.905 3.469 c
-46.57 3.469 46.335 3.307 46.2 2.984 c
-46.2 0 l
-45.552 0 l
-45.552 3.983 l
-h
-51.918 0 -0.647 3.983 re
-51.962 5.026 m
-51.962 4.916 51.933 4.825 51.873 4.748 c
-51.815 4.677 51.719 4.644 51.594 4.644 c
-51.476 4.644 51.381 4.677 51.314 4.748 c
-51.256 4.825 51.227 4.916 51.227 5.026 c
-51.227 5.144 51.256 5.236 51.314 5.306 c
-51.381 5.383 51.476 5.423 51.594 5.423 c
-51.719 5.423 51.815 5.383 51.873 5.306 c
-51.933 5.225 51.962 5.134 51.962 5.026 c
-53.784 4.939 m
-53.784 3.983 l
-54.387 3.983 l
-54.387 3.454 l
-53.784 3.454 l
-53.784 0.985 l
-53.784 0.827 53.807 0.709 53.857 0.632 c
-53.917 0.551 54.005 0.515 54.123 0.515 c
-54.21 0.515 54.298 0.529 54.387 0.558 c
-54.387 0 l
-54.24 -0.048 54.086 -0.073 53.932 -0.073 c
-53.674 -0.073 53.479 0.018 53.344 0.205 c
-53.203 0.389 53.138 0.65 53.138 0.985 c
-53.138 3.454 l
-52.535 3.454 l
-52.535 3.983 l
-53.138 3.983 l
-53.138 4.939 l
-h
-55.195 0.353 m
-55.195 0.47 55.228 0.565 55.299 0.646 c
-55.364 0.723 55.467 0.764 55.607 0.764 c
-55.754 0.764 55.86 0.723 55.931 0.646 c
-56.008 0.565 56.048 0.47 56.048 0.353 c
-56.048 0.242 56.008 0.151 55.931 0.073 c
-55.86 -0.004 55.754 -0.044 55.607 -0.044 c
-55.467 -0.044 55.364 -0.004 55.299 0.073 c
-55.228 0.151 55.195 0.242 55.195 0.353 c
-f
-Q
-0.113 0.082 0.09 0 k
-287.665 373.53 234.667 -12.898 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 292.8568 366.6908 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.646 -0.243 -0.775 -0.367 -0.882 c
--0.496 -0.993 -0.658 -1.08 -0.852 -1.147 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.161 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.926 c
--3.127 -0.819 -3.23 -0.691 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.213 -3.484 -0.014 c
--2.66 0.133 l
--2.642 0.033 -2.616 -0.058 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.367 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.684 -1.992 0.691 -1.999 0.691 c
--2.167 0.728 -2.329 0.771 -2.484 0.823 c
--2.642 0.882 -2.786 0.96 -2.91 1.058 c
--3.039 1.154 -3.142 1.279 -3.219 1.426 c
--3.289 1.573 -3.322 1.756 -3.322 1.985 c
--3.322 2.18 -3.289 2.344 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.837 c
--2.8 2.932 -2.645 3.003 -2.469 3.043 c
--2.293 3.09 -2.102 3.12 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.12 -1.128 3.09 -0.97 3.043 c
--0.804 2.992 -0.669 2.918 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.202 2.344 -0.143 2.182 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.253 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.353 c
--1.294 1.312 -1.117 1.264 -0.941 1.205 c
--0.756 1.147 -0.595 1.066 -0.455 0.97 c
--0.32 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.455 c
--2.26 2.425 -2.319 2.385 -2.366 2.338 c
--2.406 2.297 -2.436 2.249 -2.454 2.19 c
--2.477 2.132 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.779 c
--2.41 1.72 -2.373 1.669 -2.322 1.632 c
--2.263 1.592 -2.201 1.558 -2.131 1.529 c
--2.065 1.5 -1.984 1.47 -1.896 1.44 c
-h
--0.837 -0.014 m
--0.837 0.092 -0.86 0.177 -0.897 0.235 c
--0.926 0.301 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.53 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.529 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.014 c
-6.402 -2.66 m
-6.184 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.396 c
-5.284 -2.315 5.185 -2.219 5.108 -2.102 c
-5.039 -1.984 4.991 -1.855 4.961 -1.72 c
-5.858 -1.617 l
-5.895 -1.753 5.964 -1.859 6.064 -1.94 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.057 6.681 -2.028 c
-6.758 -1.999 6.828 -1.944 6.887 -1.866 c
-6.945 -1.797 6.99 -1.705 7.019 -1.587 c
-7.056 -1.469 7.078 -1.323 7.078 -1.147 c
-7.078 -0.955 l
-7.078 -0.889 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.072 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.215 -0.897 5.108 -0.75 c
-5.009 -0.596 4.935 -0.411 4.888 -0.206 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.771 4.836 1.018 4.888 1.235 c
-4.946 1.448 5.027 1.632 5.137 1.779 c
-5.244 1.933 5.376 2.051 5.534 2.132 c
-5.689 2.22 5.876 2.263 6.093 2.263 c
-6.188 2.263 6.288 2.253 6.387 2.234 c
-6.483 2.213 6.571 2.18 6.652 2.132 c
-6.739 2.08 6.817 2.018 6.887 1.941 c
-6.964 1.86 7.026 1.768 7.078 1.661 c
-7.092 1.661 l
-7.092 1.808 l
-7.1 1.867 7.107 1.918 7.107 1.97 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.151 2.22 c
-8.004 2.22 l
-7.993 2.139 7.982 2.028 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.161 l
-7.975 -1.415 7.938 -1.635 7.871 -1.822 c
-7.802 -2.007 7.699 -2.161 7.563 -2.279 c
-7.423 -2.404 7.258 -2.499 7.063 -2.558 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.53 m
-7.092 0.742 7.067 0.919 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.5 6.729 1.558 6.652 1.588 c
-6.571 1.625 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.621 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.367 c
-5.88 1.279 5.835 1.162 5.799 1.014 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.338 c
-6.049 -0.515 6.211 -0.602 6.417 -0.602 c
-6.483 -0.602 6.556 -0.588 6.637 -0.559 c
-6.725 -0.522 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.176 7.019 -0.029 c
-7.067 0.118 7.092 0.301 7.092 0.53 c
-11.036 -0.646 m
-12.168 -0.646 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.646 l
-10.124 -0.646 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.22 l
-11.036 2.22 l
-h
-10.124 3.514 0.912 -0.676 re
-10.124 2.837 m
-13.597 1.602 m
-13.053 1.602 l
-13.053 2.22 l
-13.641 2.22 l
-13.92 3.117 l
-14.494 3.117 l
-14.494 2.22 l
-15.728 2.22 l
-15.728 1.602 l
-14.494 1.602 l
-14.494 -0.103 l
-14.494 -0.324 l
-14.501 -0.393 14.523 -0.455 14.552 -0.515 c
-14.589 -0.565 14.645 -0.61 14.714 -0.646 c
-14.791 -0.676 14.905 -0.691 15.052 -0.691 c
-15.188 -0.691 15.324 -0.687 15.464 -0.676 c
-15.599 -0.658 15.732 -0.632 15.861 -0.602 c
-15.861 -1.205 l
-15.78 -1.216 15.703 -1.23 15.626 -1.249 c
-15.545 -1.261 15.468 -1.267 15.391 -1.278 c
-15.31 -1.286 15.221 -1.294 15.125 -1.294 c
-15.038 -1.301 14.938 -1.308 14.832 -1.308 c
-14.645 -1.308 14.483 -1.294 14.346 -1.264 c
-14.218 -1.228 14.104 -1.183 14.009 -1.132 c
-13.92 -1.084 13.847 -1.025 13.788 -0.955 c
-13.729 -0.878 13.685 -0.801 13.656 -0.72 c
-13.627 -0.632 13.604 -0.544 13.597 -0.455 c
-13.586 -0.36 13.582 -0.264 13.582 -0.176 c
-h
-21.722 1.602 m
-21.178 1.602 l
-21.178 2.22 l
-21.766 2.22 l
-22.045 3.117 l
-22.618 3.117 l
-22.618 2.22 l
-23.853 2.22 l
-23.853 1.602 l
-22.618 1.602 l
-22.618 -0.103 l
-22.618 -0.324 l
-22.626 -0.393 22.647 -0.455 22.677 -0.515 c
-22.714 -0.565 22.769 -0.61 22.839 -0.646 c
-22.916 -0.676 23.03 -0.691 23.177 -0.691 c
-23.313 -0.691 23.449 -0.687 23.588 -0.676 c
-23.725 -0.658 23.857 -0.632 23.985 -0.602 c
-23.985 -1.205 l
-23.904 -1.216 23.827 -1.23 23.75 -1.249 c
-23.669 -1.261 23.592 -1.267 23.515 -1.278 c
-23.434 -1.286 23.346 -1.294 23.25 -1.294 c
-23.162 -1.301 23.063 -1.308 22.957 -1.308 c
-22.769 -1.308 22.608 -1.294 22.471 -1.264 c
-22.343 -1.228 22.229 -1.183 22.134 -1.132 c
-22.045 -1.084 21.972 -1.025 21.913 -0.955 c
-21.854 -0.878 21.81 -0.801 21.781 -0.72 c
-21.751 -0.632 21.729 -0.544 21.722 -0.455 c
-21.71 -0.36 21.707 -0.264 21.707 -0.176 c
-h
-26.136 -1.323 m
-25.966 -1.323 25.816 -1.301 25.679 -1.264 c
-25.551 -1.216 25.437 -1.147 25.342 -1.058 c
-25.253 -0.97 25.184 -0.864 25.136 -0.735 c
-25.084 -0.599 25.062 -0.448 25.062 -0.279 c
-25.062 -0.073 25.095 0.096 25.165 0.235 c
-25.232 0.382 25.327 0.493 25.444 0.574 c
-25.569 0.661 25.712 0.724 25.87 0.765 c
-26.036 0.801 26.213 0.827 26.4 0.838 c
-27.12 0.852 l
-27.12 1.029 l
-27.12 1.147 27.109 1.249 27.09 1.338 c
-27.069 1.426 27.036 1.492 26.988 1.544 c
-26.947 1.602 26.9 1.639 26.841 1.661 c
-26.782 1.679 26.716 1.69 26.649 1.69 c
-26.58 1.69 26.518 1.679 26.458 1.661 c
-26.408 1.65 26.36 1.625 26.312 1.588 c
-26.271 1.558 26.238 1.507 26.209 1.44 c
-26.186 1.382 26.172 1.301 26.165 1.205 c
-25.224 1.249 l
-25.253 1.397 25.297 1.532 25.356 1.661 c
-25.423 1.786 25.518 1.897 25.635 1.985 c
-25.753 2.08 25.893 2.153 26.061 2.205 c
-26.238 2.253 26.444 2.278 26.679 2.278 c
-27.12 2.278 27.451 2.168 27.678 1.955 c
-27.914 1.75 28.031 1.44 28.031 1.029 c
-28.031 -0.235 l
-28.031 -0.455 l
-28.039 -0.515 28.054 -0.569 28.075 -0.617 c
-28.094 -0.658 28.123 -0.691 28.164 -0.72 c
-28.201 -0.742 28.252 -0.75 28.311 -0.75 c
-28.376 -0.75 28.447 -0.746 28.517 -0.735 c
-28.517 -1.22 l
-28.457 -1.23 28.403 -1.242 28.355 -1.249 c
-28.314 -1.261 28.274 -1.267 28.237 -1.278 c
-28.197 -1.286 28.153 -1.294 28.105 -1.294 c
-28.054 -1.301 27.995 -1.308 27.929 -1.308 c
-27.701 -1.308 27.535 -1.257 27.429 -1.147 c
-27.318 -1.029 27.256 -0.864 27.237 -0.646 c
-27.223 -0.646 l
-27.154 -0.757 27.083 -0.852 27.017 -0.941 c
-26.947 -1.022 26.87 -1.087 26.782 -1.147 c
-26.693 -1.205 26.595 -1.249 26.488 -1.278 c
-26.389 -1.308 26.271 -1.323 26.136 -1.323 c
-27.12 0.353 m
-26.693 0.339 l
-26.595 0.339 26.503 0.331 26.414 0.324 c
-26.333 0.312 26.267 0.287 26.209 0.25 c
-26.15 0.21 26.098 0.15 26.061 0.073 c
-26.021 0.004 26.003 -0.088 26.003 -0.206 c
-26.003 -0.374 26.036 -0.496 26.106 -0.573 c
-26.172 -0.654 26.271 -0.691 26.4 -0.691 c
-26.506 -0.691 26.606 -0.669 26.693 -0.617 c
-26.789 -0.569 26.87 -0.507 26.929 -0.426 c
-26.995 -0.349 27.046 -0.261 27.076 -0.162 c
-27.106 -0.055 27.12 0.059 27.12 0.177 c
-h
-30.769 -2.66 m
-30.552 -2.66 30.361 -2.635 30.196 -2.587 c
-30.027 -2.547 29.887 -2.484 29.77 -2.396 c
-29.652 -2.315 29.552 -2.219 29.475 -2.102 c
-29.406 -1.984 29.358 -1.855 29.328 -1.72 c
-30.225 -1.617 l
-30.262 -1.753 30.331 -1.859 30.431 -1.94 c
-30.527 -2.028 30.651 -2.072 30.799 -2.072 c
-30.886 -2.072 30.967 -2.057 31.048 -2.028 c
-31.125 -1.999 31.195 -1.944 31.254 -1.866 c
-31.313 -1.797 31.357 -1.705 31.387 -1.587 c
-31.424 -1.469 31.445 -1.323 31.445 -1.147 c
-31.445 -0.955 l
-31.445 -0.889 31.449 -0.831 31.46 -0.779 c
-31.46 -0.588 l
-31.445 -0.588 l
-31.346 -0.816 31.202 -0.977 31.019 -1.072 c
-30.832 -1.172 30.626 -1.22 30.402 -1.22 c
-30.196 -1.22 30.012 -1.183 29.858 -1.103 c
-29.71 -1.014 29.582 -0.897 29.475 -0.75 c
-29.376 -0.596 29.303 -0.411 29.255 -0.206 c
-29.203 0.008 29.182 0.243 29.182 0.5 c
-29.182 0.771 29.203 1.018 29.255 1.235 c
-29.313 1.448 29.394 1.632 29.505 1.779 c
-29.612 1.933 29.743 2.051 29.901 2.132 c
-30.057 2.22 30.244 2.263 30.46 2.263 c
-30.556 2.263 30.655 2.253 30.755 2.234 c
-30.85 2.213 30.938 2.18 31.019 2.132 c
-31.107 2.08 31.185 2.018 31.254 1.941 c
-31.331 1.86 31.393 1.768 31.445 1.661 c
-31.46 1.661 l
-31.46 1.808 l
-31.468 1.867 31.474 1.918 31.474 1.97 c
-31.482 2.028 31.489 2.076 31.489 2.117 c
-31.497 2.165 31.507 2.198 31.519 2.22 c
-32.371 2.22 l
-32.361 2.139 32.349 2.028 32.342 1.881 c
-32.342 1.411 l
-32.342 -1.161 l
-32.342 -1.415 32.305 -1.635 32.239 -1.822 c
-32.17 -2.007 32.066 -2.161 31.931 -2.279 c
-31.79 -2.404 31.625 -2.499 31.43 -2.558 c
-31.233 -2.624 31.011 -2.66 30.769 -2.66 c
-31.46 0.53 m
-31.46 0.742 31.434 0.919 31.387 1.058 c
-31.346 1.205 31.291 1.323 31.225 1.411 c
-31.166 1.5 31.096 1.558 31.019 1.588 c
-30.938 1.625 30.861 1.646 30.784 1.646 c
-30.684 1.646 30.593 1.621 30.504 1.573 c
-30.424 1.532 30.358 1.463 30.298 1.367 c
-30.248 1.279 30.203 1.162 30.167 1.014 c
-30.137 0.875 30.122 0.706 30.122 0.5 c
-30.122 0.125 30.181 -0.154 30.298 -0.338 c
-30.416 -0.515 30.578 -0.602 30.784 -0.602 c
-30.85 -0.602 30.923 -0.588 31.004 -0.559 c
-31.092 -0.522 31.166 -0.463 31.225 -0.382 c
-31.291 -0.294 31.346 -0.176 31.387 -0.029 c
-31.434 0.118 31.46 0.301 31.46 0.53 c
-37.953 0.838 1.866 -0.794 re
-37.953 0.044 m
-43.601 -1.264 m
-43.59 -1.246 43.579 -1.216 43.572 -1.176 c
-43.572 -1.128 43.565 -1.08 43.557 -1.029 c
-43.557 -0.97 43.55 -0.912 43.542 -0.852 c
-43.542 -0.691 l
-43.425 -0.926 43.282 -1.095 43.116 -1.19 c
-42.948 -1.278 42.749 -1.323 42.514 -1.323 c
-42.315 -1.323 42.139 -1.278 41.984 -1.19 c
-41.826 -1.103 41.695 -0.981 41.587 -0.823 c
-41.488 -0.658 41.411 -0.467 41.352 -0.249 c
-41.301 -0.037 41.279 0.206 41.279 0.47 c
-41.279 0.735 41.301 0.974 41.352 1.191 c
-41.411 1.415 41.488 1.606 41.587 1.764 c
-41.695 1.918 41.826 2.043 41.984 2.132 c
-42.15 2.227 42.341 2.278 42.558 2.278 c
-42.653 2.278 42.749 2.263 42.837 2.234 c
-42.933 2.213 43.028 2.18 43.116 2.132 c
-43.204 2.08 43.282 2.018 43.351 1.941 c
-43.428 1.86 43.491 1.768 43.542 1.661 c
-43.542 1.75 l
-43.542 1.897 l
-43.542 2.058 l
-43.542 2.234 l
-43.542 3.514 l
-44.44 3.514 l
-44.44 -0.5 l
-44.44 -0.676 44.442 -0.834 44.454 -0.97 c
-44.461 -1.099 44.469 -1.198 44.469 -1.264 c
-h
-43.557 0.485 m
-43.557 0.721 43.532 0.912 43.484 1.058 c
-43.443 1.213 43.388 1.338 43.322 1.426 c
-43.264 1.515 43.193 1.573 43.116 1.602 c
-43.035 1.639 42.958 1.661 42.881 1.661 c
-42.782 1.661 42.69 1.635 42.601 1.588 c
-42.521 1.547 42.455 1.477 42.396 1.382 c
-42.345 1.282 42.3 1.162 42.264 1.014 c
-42.234 0.867 42.219 0.684 42.219 0.47 c
-42.219 0.077 42.271 -0.216 42.381 -0.411 c
-42.499 -0.61 42.661 -0.706 42.867 -0.706 c
-42.944 -0.706 43.021 -0.687 43.102 -0.646 c
-43.179 -0.61 43.252 -0.544 43.322 -0.455 c
-43.388 -0.367 43.443 -0.246 43.484 -0.088 c
-43.532 0.066 43.557 0.258 43.557 0.485 c
-50.297 -2.631 m
-50.297 3.514 l
-52.222 3.514 l
-52.222 2.896 l
-51.149 2.896 l
-51.149 -2.013 l
-52.222 -2.013 l
-52.222 -2.631 l
-h
-55.798 -1.264 m
-55.798 0.721 l
-55.798 1.022 55.754 1.242 55.665 1.382 c
-55.585 1.529 55.449 1.602 55.254 1.602 c
-55.143 1.602 55.041 1.577 54.946 1.529 c
-54.857 1.477 54.776 1.411 54.711 1.323 c
-54.651 1.235 54.6 1.124 54.563 1 c
-54.534 0.882 54.519 0.75 54.519 0.603 c
-54.519 -1.264 l
-53.608 -1.264 l
-53.608 1.44 l
-53.608 1.661 l
-53.608 1.75 53.6 1.827 53.593 1.897 c
-53.593 2.087 l
-53.593 2.22 l
-54.445 2.22 l
-54.453 2.19 54.46 2.146 54.46 2.087 c
-54.46 1.897 l
-54.468 1.827 54.475 1.756 54.475 1.69 c
-54.482 1.621 54.49 1.565 54.49 1.529 c
-54.505 1.529 l
-54.622 1.793 54.773 1.985 54.96 2.103 c
-55.143 2.22 55.364 2.278 55.621 2.278 c
-55.806 2.278 55.966 2.249 56.107 2.19 c
-56.242 2.132 56.357 2.043 56.444 1.926 c
-56.533 1.808 56.595 1.665 56.635 1.5 c
-56.683 1.341 56.71 1.154 56.71 0.941 c
-56.71 -1.264 l
-h
-58.628 -1.323 m
-58.458 -1.323 58.308 -1.301 58.172 -1.264 c
-58.044 -1.216 57.929 -1.147 57.834 -1.058 c
-57.745 -0.97 57.676 -0.864 57.628 -0.735 c
-57.576 -0.599 57.554 -0.448 57.554 -0.279 c
-57.554 -0.073 57.587 0.096 57.657 0.235 c
-57.724 0.382 57.819 0.493 57.936 0.574 c
-58.061 0.661 58.204 0.724 58.363 0.765 c
-58.528 0.801 58.705 0.827 58.892 0.838 c
-59.612 0.852 l
-59.612 1.029 l
-59.612 1.147 59.601 1.249 59.583 1.338 c
-59.561 1.426 59.528 1.492 59.48 1.544 c
-59.44 1.602 59.392 1.639 59.333 1.661 c
-59.274 1.679 59.208 1.69 59.141 1.69 c
-59.072 1.69 59.01 1.679 58.951 1.661 c
-58.9 1.65 58.852 1.625 58.804 1.588 c
-58.763 1.558 58.73 1.507 58.701 1.44 c
-58.679 1.382 58.664 1.301 58.657 1.205 c
-57.716 1.249 l
-57.745 1.397 57.79 1.532 57.848 1.661 c
-57.915 1.786 58.01 1.897 58.127 1.985 c
-58.245 2.08 58.385 2.153 58.554 2.205 c
-58.73 2.253 58.936 2.278 59.172 2.278 c
-59.612 2.278 59.943 2.168 60.171 1.955 c
-60.406 1.75 60.523 1.44 60.523 1.029 c
-60.523 -0.235 l
-60.523 -0.455 l
-60.531 -0.515 60.546 -0.569 60.568 -0.617 c
-60.586 -0.658 60.616 -0.691 60.656 -0.72 c
-60.693 -0.742 60.744 -0.75 60.803 -0.75 c
-60.869 -0.75 60.939 -0.746 61.009 -0.735 c
-61.009 -1.22 l
-60.95 -1.23 60.895 -1.242 60.847 -1.249 c
-60.807 -1.261 60.766 -1.267 60.729 -1.278 c
-60.689 -1.286 60.645 -1.294 60.597 -1.294 c
-60.546 -1.301 60.487 -1.308 60.421 -1.308 c
-60.193 -1.308 60.028 -1.257 59.921 -1.147 c
-59.81 -1.029 59.748 -0.864 59.729 -0.646 c
-59.715 -0.646 l
-59.646 -0.757 59.575 -0.852 59.509 -0.941 c
-59.44 -1.022 59.363 -1.087 59.274 -1.147 c
-59.186 -1.205 59.087 -1.249 58.981 -1.278 c
-58.881 -1.308 58.763 -1.323 58.628 -1.323 c
-59.612 0.353 m
-59.186 0.339 l
-59.087 0.339 58.995 0.331 58.906 0.324 c
-58.826 0.312 58.76 0.287 58.701 0.25 c
-58.642 0.21 58.591 0.15 58.554 0.073 c
-58.514 0.004 58.495 -0.088 58.495 -0.206 c
-58.495 -0.374 58.528 -0.496 58.598 -0.573 c
-58.664 -0.654 58.763 -0.691 58.892 -0.691 c
-58.998 -0.691 59.098 -0.669 59.186 -0.617 c
-59.282 -0.569 59.363 -0.507 59.421 -0.426 c
-59.488 -0.349 59.538 -0.261 59.569 -0.162 c
-59.598 -0.055 59.612 0.059 59.612 0.177 c
-h
-62.894 -1.264 m
-62.894 0.852 l
-62.894 1.018 62.887 1.154 62.879 1.264 c
-62.868 1.371 62.85 1.455 62.821 1.515 c
-62.798 1.58 62.769 1.632 62.732 1.661 c
-62.703 1.69 62.663 1.706 62.615 1.706 c
-62.555 1.706 62.501 1.675 62.453 1.617 c
-62.412 1.565 62.379 1.492 62.35 1.397 c
-62.32 1.309 62.295 1.195 62.277 1.058 c
-62.266 0.919 62.262 0.769 62.262 0.603 c
-62.262 -1.264 l
-61.512 -1.264 l
-61.512 1.47 l
-61.512 1.706 l
-61.512 1.926 l
-61.512 2.003 61.505 2.065 61.497 2.117 c
-61.497 2.22 l
-62.173 2.22 l
-62.173 2.132 l
-62.173 1.985 l
-62.181 1.926 62.189 1.867 62.189 1.808 c
-62.189 1.646 l
-62.203 1.646 l
-62.221 1.735 62.251 1.812 62.291 1.881 c
-62.328 1.959 62.372 2.028 62.424 2.087 c
-62.482 2.146 62.549 2.19 62.629 2.22 c
-62.707 2.257 62.794 2.278 62.894 2.278 c
-63.078 2.278 63.218 2.223 63.305 2.117 c
-63.401 2.018 63.471 1.86 63.511 1.646 c
-63.526 1.646 l
-63.563 1.742 63.603 1.83 63.644 1.911 c
-63.691 1.988 63.746 2.051 63.805 2.103 c
-63.864 2.161 63.93 2.205 64.011 2.234 c
-64.088 2.263 64.176 2.278 64.275 2.278 c
-64.411 2.278 64.525 2.253 64.614 2.205 c
-64.702 2.153 64.768 2.08 64.82 1.985 c
-64.878 1.885 64.915 1.756 64.937 1.602 c
-64.967 1.455 64.981 1.272 64.981 1.058 c
-64.981 -1.264 l
-64.261 -1.264 l
-64.261 0.852 l
-64.261 1.018 64.253 1.154 64.246 1.264 c
-64.236 1.371 64.217 1.455 64.188 1.515 c
-64.165 1.58 64.136 1.632 64.099 1.661 c
-64.07 1.69 64.03 1.706 63.982 1.706 c
-63.864 1.706 63.768 1.617 63.702 1.44 c
-63.644 1.272 63.614 1.014 63.614 0.661 c
-63.614 -1.264 l
-h
-67.351 -1.323 m
-67.094 -1.323 66.866 -1.286 66.661 -1.22 c
-66.455 -1.143 66.278 -1.029 66.131 -0.882 c
-65.984 -0.727 65.867 -0.536 65.778 -0.309 c
-65.697 -0.085 65.661 0.181 65.661 0.485 c
-65.661 0.816 65.705 1.095 65.793 1.323 c
-65.888 1.558 66.017 1.742 66.175 1.881 c
-66.341 2.018 66.528 2.117 66.734 2.176 c
-66.94 2.242 67.149 2.278 67.366 2.278 c
-67.638 2.278 67.873 2.227 68.072 2.132 c
-68.277 2.043 68.443 1.911 68.571 1.735 c
-68.707 1.565 68.807 1.359 68.865 1.118 c
-68.932 0.882 68.968 0.617 68.968 0.324 c
-68.968 0.309 l
-66.602 0.309 l
-66.602 0.162 66.617 0.023 66.646 -0.103 c
-66.682 -0.231 66.738 -0.345 66.808 -0.441 c
-66.873 -0.529 66.958 -0.599 67.058 -0.646 c
-67.153 -0.698 67.267 -0.72 67.396 -0.72 c
-67.55 -0.72 67.689 -0.687 67.807 -0.617 c
-67.932 -0.551 68.02 -0.448 68.072 -0.309 c
-68.909 -0.382 l
-68.88 -0.482 68.824 -0.588 68.747 -0.706 c
-68.666 -0.816 68.564 -0.918 68.439 -1.014 c
-68.321 -1.103 68.167 -1.176 67.983 -1.234 c
-67.807 -1.294 67.594 -1.323 67.351 -1.323 c
-67.351 1.706 m
-67.263 1.706 67.175 1.69 67.087 1.661 c
-66.999 1.632 66.918 1.58 66.852 1.515 c
-66.782 1.444 66.723 1.357 66.675 1.249 c
-66.634 1.139 66.617 1.014 66.617 0.867 c
-68.086 0.867 l
-68.086 1.004 68.061 1.124 68.013 1.235 c
-67.972 1.341 67.918 1.43 67.851 1.5 c
-67.793 1.565 67.719 1.617 67.631 1.646 c
-67.542 1.683 67.447 1.706 67.351 1.706 c
-70.221 -2.631 m
-70.221 -2.013 l
-71.294 -2.013 l
-71.294 2.896 l
-70.221 2.896 l
-70.221 3.514 l
-72.147 3.514 l
-72.147 -2.631 l
-h
-f
-Q
-q 1 0 0 1 411.2216 352.6973 cm
-0 0 m
--0.941 0 l
--0.941 -2.161 l
--1.617 -2.161 l
--1.617 3.19 l
--0.118 3.19 l
-0.411 3.19 0.808 3.05 1.072 2.778 c
-1.344 2.502 1.484 2.105 1.484 1.588 c
-1.484 1.253 1.411 0.963 1.263 0.721 c
-1.117 0.474 0.911 0.287 0.646 0.162 c
-1.675 -2.117 l
-1.675 -2.161 l
-0.955 -2.161 l
-h
--0.941 0.588 m
--0.118 0.588 l
-0.165 0.588 0.389 0.676 0.558 0.852 c
-0.723 1.037 0.808 1.282 0.808 1.588 c
-0.808 2.271 0.492 2.616 -0.133 2.616 c
--0.941 2.616 l
-h
-3.719 -2.234 m
-3.218 -2.234 2.836 -2.088 2.572 -1.793 c
-2.308 -1.5 2.175 -1.066 2.175 -0.484 c
-2.175 -0.014 l
-2.175 0.58 2.3 1.047 2.557 1.382 c
-2.822 1.723 3.182 1.897 3.645 1.897 c
-4.104 1.897 4.446 1.742 4.674 1.44 c
-4.909 1.147 5.03 0.684 5.041 0.059 c
-5.041 -0.367 l
-2.822 -0.367 l
-2.822 -0.455 l
-2.822 -0.889 2.899 -1.201 3.057 -1.396 c
-3.222 -1.583 3.453 -1.675 3.748 -1.675 c
-3.943 -1.675 4.116 -1.643 4.262 -1.573 c
-4.409 -1.496 4.546 -1.378 4.674 -1.22 c
-5.012 -1.631 l
-4.725 -2.036 4.295 -2.234 3.719 -2.234 c
-3.645 1.338 m
-3.37 1.338 3.167 1.242 3.042 1.058 c
-2.913 0.871 2.84 0.58 2.822 0.191 c
-4.394 0.191 l
-4.394 0.279 l
-4.373 0.661 4.307 0.929 4.189 1.087 c
-4.072 1.253 3.887 1.338 3.645 1.338 c
-6.437 1.823 m
-6.453 1.455 l
-6.695 1.75 7.015 1.897 7.408 1.897 c
-7.849 1.897 8.157 1.698 8.334 1.309 c
-8.588 1.698 8.937 1.897 9.377 1.897 c
-10.113 1.897 10.487 1.434 10.509 0.515 c
-10.509 -2.161 l
-9.863 -2.161 l
-9.863 0.456 l
-9.863 0.75 9.807 0.963 9.701 1.103 c
-9.602 1.239 9.429 1.309 9.186 1.309 c
-8.988 1.309 8.826 1.228 8.702 1.073 c
-8.584 0.927 8.514 0.735 8.496 0.5 c
-8.496 -2.161 l
-7.834 -2.161 l
-7.834 0.485 l
-7.834 1.033 7.613 1.309 7.173 1.309 c
-6.838 1.309 6.603 1.147 6.468 0.823 c
-6.468 -2.161 l
-5.82 -2.161 l
-5.82 1.823 l
-h
-11.347 0.015 m
-11.347 0.592 11.484 1.047 11.759 1.382 c
-12.041 1.723 12.413 1.897 12.876 1.897 c
-13.335 1.897 13.703 1.727 13.978 1.397 c
-14.262 1.073 14.408 0.625 14.42 0.059 c
-14.42 -0.367 l
-14.42 -0.937 14.276 -1.392 13.993 -1.735 c
-13.718 -2.069 13.35 -2.234 12.891 -2.234 c
-12.428 -2.234 12.057 -2.072 11.773 -1.749 c
-11.498 -1.419 11.355 -0.977 11.347 -0.426 c
-h
-11.994 -0.367 m
-11.994 -0.771 12.072 -1.087 12.23 -1.323 c
-12.394 -1.558 12.615 -1.675 12.891 -1.675 c
-13.456 -1.675 13.751 -1.264 13.772 -0.441 c
-13.772 0.015 l
-13.772 0.416 13.688 0.735 13.523 0.97 c
-13.365 1.213 13.148 1.338 12.876 1.338 c
-12.612 1.338 12.394 1.213 12.23 0.97 c
-12.072 0.735 11.994 0.416 11.994 0.015 c
-h
-16.33 -1.176 m
-17.08 1.823 l
-17.741 1.823 l
-16.565 -2.161 l
-16.08 -2.161 l
-14.89 1.823 l
-15.551 1.823 l
-h
-19.799 -2.234 m
-19.299 -2.234 18.917 -2.088 18.653 -1.793 c
-18.388 -1.5 18.256 -1.066 18.256 -0.484 c
-18.256 -0.014 l
-18.256 0.58 18.381 1.047 18.638 1.382 c
-18.902 1.723 19.263 1.897 19.725 1.897 c
-20.185 1.897 20.527 1.742 20.755 1.44 c
-20.99 1.147 21.111 0.684 21.122 0.059 c
-21.122 -0.367 l
-18.902 -0.367 l
-18.902 -0.455 l
-18.902 -0.889 18.979 -1.201 19.137 -1.396 c
-19.303 -1.583 19.534 -1.675 19.829 -1.675 c
-20.024 -1.675 20.196 -1.643 20.343 -1.573 c
-20.49 -1.496 20.626 -1.378 20.755 -1.22 c
-21.092 -1.631 l
-20.806 -2.036 20.376 -2.234 19.799 -2.234 c
-19.725 1.338 m
-19.45 1.338 19.248 1.242 19.123 1.058 c
-18.994 0.871 18.921 0.58 18.902 0.191 c
-20.475 0.191 l
-20.475 0.279 l
-20.454 0.661 20.387 0.929 20.269 1.087 c
-20.152 1.253 19.968 1.338 19.725 1.338 c
-25.664 -2.161 m
-25.624 -2.072 25.598 -1.926 25.591 -1.72 c
-25.356 -2.065 25.061 -2.234 24.709 -2.234 c
-24.345 -2.234 24.062 -2.138 23.856 -1.94 c
-23.658 -1.735 23.562 -1.448 23.562 -1.072 c
-23.562 -0.673 23.698 -0.353 23.974 -0.118 c
-24.246 0.125 24.62 0.25 25.09 0.25 c
-25.576 0.25 l
-25.576 0.676 l
-25.576 0.912 25.521 1.077 25.414 1.176 c
-25.304 1.282 25.142 1.338 24.93 1.338 c
-24.731 1.338 24.569 1.279 24.444 1.162 c
-24.327 1.044 24.267 0.896 24.267 0.721 c
-23.621 0.721 l
-23.621 0.915 23.679 1.106 23.797 1.294 c
-23.922 1.477 24.084 1.625 24.282 1.735 c
-24.488 1.841 24.716 1.897 24.973 1.897 c
-25.374 1.897 25.678 1.793 25.884 1.588 c
-26.098 1.382 26.212 1.087 26.223 0.706 c
-26.223 -1.308 l
-26.223 -1.613 26.26 -1.878 26.341 -2.102 c
-26.341 -2.161 l
-h
-24.797 -1.646 m
-24.963 -1.646 25.113 -1.602 25.252 -1.514 c
-25.4 -1.425 25.506 -1.315 25.576 -1.176 c
-25.576 -0.235 l
-25.208 -0.235 l
-24.893 -0.235 24.65 -0.305 24.473 -0.441 c
-24.297 -0.569 24.209 -0.757 24.209 -0.999 c
-24.209 -1.228 24.253 -1.392 24.342 -1.5 c
-24.429 -1.598 24.581 -1.646 24.797 -1.646 c
-29.794 2.778 m
-29.794 1.823 l
-30.397 1.823 l
-30.397 1.294 l
-29.794 1.294 l
-29.794 -1.176 l
-29.794 -1.334 29.817 -1.452 29.868 -1.529 c
-29.927 -1.61 30.015 -1.646 30.133 -1.646 c
-30.221 -1.646 30.309 -1.631 30.397 -1.602 c
-30.397 -2.161 l
-30.25 -2.208 30.096 -2.234 29.942 -2.234 c
-29.684 -2.234 29.489 -2.142 29.354 -1.955 c
-29.214 -1.771 29.148 -1.51 29.148 -1.176 c
-29.148 1.294 l
-28.545 1.294 l
-28.545 1.823 l
-29.148 1.823 l
-29.148 2.778 l
-h
-33.204 -2.161 m
-33.164 -2.072 33.138 -1.926 33.131 -1.72 c
-32.896 -2.065 32.602 -2.234 32.249 -2.234 c
-31.885 -2.234 31.602 -2.138 31.397 -1.94 c
-31.199 -1.735 31.103 -1.448 31.103 -1.072 c
-31.103 -0.673 31.239 -0.353 31.515 -0.118 c
-31.787 0.125 32.161 0.25 32.631 0.25 c
-33.117 0.25 l
-33.117 0.676 l
-33.117 0.912 33.061 1.077 32.955 1.176 c
-32.845 1.282 32.683 1.338 32.47 1.338 c
-32.271 1.338 32.109 1.279 31.985 1.162 c
-31.868 1.044 31.808 0.896 31.808 0.721 c
-31.162 0.721 l
-31.162 0.915 31.22 1.106 31.338 1.294 c
-31.463 1.477 31.625 1.625 31.823 1.735 c
-32.028 1.841 32.257 1.897 32.514 1.897 c
-32.915 1.897 33.219 1.793 33.425 1.588 c
-33.638 1.382 33.753 1.087 33.763 0.706 c
-33.763 -1.308 l
-33.763 -1.613 33.8 -1.878 33.881 -2.102 c
-33.881 -2.161 l
-h
-32.338 -1.646 m
-32.503 -1.646 32.654 -1.602 32.793 -1.514 c
-32.94 -1.425 33.047 -1.315 33.117 -1.176 c
-33.117 -0.235 l
-32.749 -0.235 l
-32.433 -0.235 32.19 -0.305 32.014 -0.441 c
-31.837 -0.569 31.75 -0.757 31.75 -0.999 c
-31.75 -1.228 31.793 -1.392 31.882 -1.5 c
-31.97 -1.598 32.121 -1.646 32.338 -1.646 c
-34.63 0.015 m
-34.63 0.632 34.741 1.095 34.968 1.411 c
-35.193 1.735 35.527 1.897 35.968 1.897 c
-36.369 1.897 36.674 1.72 36.88 1.367 c
-36.924 1.823 l
-37.512 1.823 l
-37.512 -2.205 l
-37.512 -2.693 37.383 -3.072 37.129 -3.337 c
-36.872 -3.601 36.52 -3.734 36.071 -3.734 c
-35.872 -3.734 35.652 -3.682 35.409 -3.586 c
-35.164 -3.487 34.983 -3.366 34.866 -3.219 c
-35.13 -2.778 l
-35.395 -3.042 35.693 -3.175 36.027 -3.175 c
-36.564 -3.175 36.839 -2.881 36.85 -2.293 c
-36.85 -1.764 l
-36.645 -2.08 36.343 -2.234 35.953 -2.234 c
-35.542 -2.234 35.218 -2.084 34.983 -1.778 c
-34.756 -1.466 34.638 -1.014 34.63 -0.426 c
-h
-35.292 -0.367 m
-35.292 -0.808 35.355 -1.139 35.483 -1.352 c
-35.608 -1.558 35.825 -1.66 36.13 -1.66 c
-36.454 -1.66 36.692 -1.496 36.85 -1.161 c
-36.85 0.823 l
-36.681 1.147 36.442 1.309 36.13 1.309 c
-35.836 1.309 35.619 1.205 35.483 1 c
-35.355 0.794 35.292 0.47 35.292 0.029 c
-h
-40.481 -2.161 m
-40.481 1.294 l
-39.951 1.294 l
-39.951 1.823 l
-40.481 1.823 l
-40.481 2.278 l
-40.481 2.679 40.576 2.992 40.774 3.219 c
-40.98 3.443 41.26 3.557 41.613 3.557 c
-41.749 3.557 41.881 3.535 42.01 3.499 c
-41.98 2.955 l
-41.881 2.973 41.782 2.984 41.686 2.984 c
-41.312 2.984 41.127 2.72 41.127 2.19 c
-41.127 1.823 l
-41.804 1.823 l
-41.804 1.294 l
-41.127 1.294 l
-41.127 -2.161 l
-h
-44.215 1.205 m
-44.126 1.224 44.027 1.235 43.92 1.235 c
-43.586 1.235 43.351 1.051 43.215 0.691 c
-43.215 -2.161 l
-42.568 -2.161 l
-42.568 1.823 l
-43.2 1.823 l
-43.215 1.411 l
-43.392 1.735 43.633 1.897 43.949 1.897 c
-44.057 1.897 44.144 1.874 44.215 1.837 c
-h
-44.655 0.015 m
-44.655 0.592 44.791 1.047 45.067 1.382 c
-45.35 1.723 45.721 1.897 46.184 1.897 c
-46.644 1.897 47.011 1.727 47.286 1.397 c
-47.569 1.073 47.716 0.625 47.727 0.059 c
-47.727 -0.367 l
-47.727 -0.937 47.584 -1.392 47.301 -1.735 c
-47.026 -2.069 46.658 -2.234 46.199 -2.234 c
-45.736 -2.234 45.364 -2.072 45.081 -1.749 c
-44.806 -1.419 44.663 -0.977 44.655 -0.426 c
-h
-45.302 -0.367 m
-45.302 -0.771 45.379 -1.087 45.537 -1.323 c
-45.703 -1.558 45.923 -1.675 46.199 -1.675 c
-46.765 -1.675 47.059 -1.264 47.08 -0.441 c
-47.08 0.015 l
-47.08 0.416 46.996 0.735 46.831 0.97 c
-46.673 1.213 46.456 1.338 46.184 1.338 c
-45.919 1.338 45.703 1.213 45.537 0.97 c
-45.379 0.735 45.302 0.416 45.302 0.015 c
-h
-49.183 1.823 m
-49.197 1.455 l
-49.44 1.75 49.759 1.897 50.153 1.897 c
-50.594 1.897 50.902 1.698 51.078 1.309 c
-51.332 1.698 51.681 1.897 52.123 1.897 c
-52.857 1.897 53.233 1.434 53.254 0.515 c
-53.254 -2.161 l
-52.607 -2.161 l
-52.607 0.456 l
-52.607 0.75 52.553 0.963 52.446 1.103 c
-52.346 1.239 52.174 1.309 51.932 1.309 c
-51.733 1.309 51.571 1.228 51.446 1.073 c
-51.329 0.927 51.259 0.735 51.24 0.5 c
-51.24 -2.161 l
-50.579 -2.161 l
-50.579 0.485 l
-50.579 1.033 50.359 1.309 49.918 1.309 c
-49.584 1.309 49.348 1.147 49.212 0.823 c
-49.212 -2.161 l
-48.566 -2.161 l
-48.566 1.823 l
-h
-57.987 -2.161 m
-57.947 -2.072 57.921 -1.926 57.914 -1.72 c
-57.679 -2.065 57.385 -2.234 57.032 -2.234 c
-56.668 -2.234 56.385 -2.138 56.179 -1.94 c
-55.981 -1.735 55.886 -1.448 55.886 -1.072 c
-55.886 -0.673 56.021 -0.353 56.297 -0.118 c
-56.569 0.125 56.944 0.25 57.414 0.25 c
-57.899 0.25 l
-57.899 0.676 l
-57.899 0.912 57.844 1.077 57.738 1.176 c
-57.627 1.282 57.466 1.338 57.252 1.338 c
-57.054 1.338 56.892 1.279 56.767 1.162 c
-56.649 1.044 56.591 0.896 56.591 0.721 c
-55.944 0.721 l
-55.944 0.915 56.003 1.106 56.121 1.294 c
-56.246 1.477 56.408 1.625 56.605 1.735 c
-56.811 1.841 57.039 1.897 57.297 1.897 c
-57.697 1.897 58.002 1.793 58.208 1.588 c
-58.421 1.382 58.535 1.087 58.546 0.706 c
-58.546 -1.308 l
-58.546 -1.613 58.583 -1.878 58.664 -2.102 c
-58.664 -2.161 l
-h
-57.12 -1.646 m
-57.285 -1.646 57.436 -1.602 57.576 -1.514 c
-57.723 -1.425 57.829 -1.315 57.899 -1.176 c
-57.899 -0.235 l
-57.532 -0.235 l
-57.216 -0.235 56.973 -0.305 56.797 -0.441 c
-56.62 -0.569 56.532 -0.757 56.532 -0.999 c
-56.532 -1.228 56.576 -1.392 56.664 -1.5 c
-56.753 -1.598 56.903 -1.646 57.12 -1.646 c
-61.971 -2.161 -0.647 5.644 re
-62.853 0.015 m
-62.853 0.592 62.989 1.047 63.265 1.382 c
-63.547 1.723 63.919 1.897 64.381 1.897 c
-64.84 1.897 65.208 1.727 65.484 1.397 c
-65.767 1.073 65.914 0.625 65.925 0.059 c
-65.925 -0.367 l
-65.925 -0.937 65.781 -1.392 65.499 -1.735 c
-65.223 -2.069 64.855 -2.234 64.396 -2.234 c
-63.934 -2.234 63.562 -2.072 63.279 -1.749 c
-63.003 -1.419 62.86 -0.977 62.853 -0.426 c
-h
-63.5 -0.367 m
-63.5 -0.771 63.577 -1.087 63.735 -1.323 c
-63.9 -1.558 64.121 -1.675 64.396 -1.675 c
-64.962 -1.675 65.256 -1.264 65.278 -0.441 c
-65.278 0.015 l
-65.278 0.416 65.193 0.735 65.029 0.97 c
-64.871 1.213 64.653 1.338 64.381 1.338 c
-64.117 1.338 63.9 1.213 63.735 0.97 c
-63.577 0.735 63.5 0.416 63.5 0.015 c
-h
-68.144 -1.675 m
-68.358 -1.675 68.53 -1.613 68.659 -1.484 c
-68.795 -1.348 68.869 -1.157 68.879 -0.912 c
-69.497 -0.912 l
-69.475 -1.294 69.339 -1.613 69.085 -1.866 c
-68.828 -2.113 68.516 -2.234 68.144 -2.234 c
-67.652 -2.234 67.277 -2.084 67.013 -1.778 c
-66.756 -1.466 66.631 -0.999 66.631 -0.382 c
-66.631 0.059 l
-66.631 0.654 66.756 1.11 67.013 1.426 c
-67.277 1.738 67.652 1.897 68.144 1.897 c
-68.545 1.897 68.865 1.764 69.1 1.5 c
-69.343 1.242 69.475 0.896 69.497 0.456 c
-68.879 0.456 l
-68.857 0.75 68.784 0.97 68.659 1.118 c
-68.541 1.264 68.368 1.338 68.144 1.338 c
-67.851 1.338 67.634 1.239 67.498 1.044 c
-67.358 0.856 67.284 0.547 67.277 0.118 c
-67.277 -0.397 l
-67.277 -0.867 67.344 -1.201 67.483 -1.396 c
-67.63 -1.583 67.851 -1.675 68.144 -1.675 c
-72.289 -2.161 m
-72.249 -2.072 72.223 -1.926 72.216 -1.72 c
-71.981 -2.065 71.687 -2.234 71.334 -2.234 c
-70.97 -2.234 70.687 -2.138 70.481 -1.94 c
-70.284 -1.735 70.188 -1.448 70.188 -1.072 c
-70.188 -0.673 70.323 -0.353 70.599 -0.118 c
-70.872 0.125 71.246 0.25 71.716 0.25 c
-72.202 0.25 l
-72.202 0.676 l
-72.202 0.912 72.146 1.077 72.04 1.176 c
-71.93 1.282 71.768 1.338 71.555 1.338 c
-71.356 1.338 71.194 1.279 71.069 1.162 c
-70.952 1.044 70.893 0.896 70.893 0.721 c
-70.246 0.721 l
-70.246 0.915 70.305 1.106 70.423 1.294 c
-70.548 1.477 70.71 1.625 70.908 1.735 c
-71.113 1.841 71.342 1.897 71.599 1.897 c
-71.999 1.897 72.304 1.793 72.51 1.588 c
-72.723 1.382 72.837 1.087 72.848 0.706 c
-72.848 -1.308 l
-72.848 -1.613 72.885 -1.878 72.966 -2.102 c
-72.966 -2.161 l
-h
-71.422 -1.646 m
-71.587 -1.646 71.738 -1.602 71.878 -1.514 c
-72.025 -1.425 72.131 -1.315 72.202 -1.176 c
-72.202 -0.235 l
-71.834 -0.235 l
-71.518 -0.235 71.275 -0.305 71.099 -0.441 c
-70.922 -0.569 70.834 -0.757 70.834 -0.999 c
-70.834 -1.228 70.878 -1.392 70.967 -1.5 c
-71.055 -1.598 71.206 -1.646 71.422 -1.646 c
-74.554 -2.161 -0.647 5.644 re
-78.934 1.205 m
-78.845 1.224 78.746 1.235 78.639 1.235 c
-78.305 1.235 78.07 1.051 77.934 0.691 c
-77.934 -2.161 l
-77.287 -2.161 l
-77.287 1.823 l
-77.92 1.823 l
-77.934 1.411 l
-78.111 1.735 78.353 1.897 78.669 1.897 c
-78.776 1.897 78.864 1.874 78.934 1.837 c
-h
-80.933 -2.234 m
-80.433 -2.234 80.05 -2.088 79.786 -1.793 c
-79.522 -1.5 79.389 -1.066 79.389 -0.484 c
-79.389 -0.014 l
-79.389 0.58 79.514 1.047 79.771 1.382 c
-80.036 1.723 80.397 1.897 80.859 1.897 c
-81.318 1.897 81.66 1.742 81.888 1.44 c
-82.123 1.147 82.244 0.684 82.255 0.059 c
-82.255 -0.367 l
-80.036 -0.367 l
-80.036 -0.455 l
-80.036 -0.889 80.113 -1.201 80.271 -1.396 c
-80.436 -1.583 80.668 -1.675 80.962 -1.675 c
-81.157 -1.675 81.33 -1.643 81.477 -1.573 c
-81.623 -1.496 81.76 -1.378 81.888 -1.22 c
-82.226 -1.631 l
-81.939 -2.036 81.509 -2.234 80.933 -2.234 c
-80.859 1.338 m
-80.584 1.338 80.382 1.242 80.256 1.058 c
-80.127 0.871 80.054 0.58 80.036 0.191 c
-81.609 0.191 l
-81.609 0.279 l
-81.587 0.661 81.521 0.929 81.403 1.087 c
-81.286 1.253 81.102 1.338 80.859 1.338 c
-85.916 -0.367 m
-85.916 -0.995 85.798 -1.466 85.563 -1.778 c
-85.335 -2.084 85.019 -2.234 84.607 -2.234 c
-84.203 -2.234 83.894 -2.084 83.682 -1.778 c
-83.682 -3.69 l
-83.034 -3.69 l
-83.034 1.823 l
-83.622 1.823 l
-83.667 1.382 l
-83.88 1.723 84.189 1.897 84.592 1.897 c
-85.033 1.897 85.361 1.742 85.577 1.44 c
-85.791 1.135 85.905 0.68 85.916 0.073 c
-h
-85.269 0.015 m
-85.269 0.456 85.199 0.779 85.063 0.985 c
-84.923 1.198 84.703 1.309 84.401 1.309 c
-84.085 1.309 83.847 1.154 83.682 0.852 c
-83.682 -1.22 l
-83.847 -1.525 84.085 -1.675 84.401 -1.675 c
-84.696 -1.675 84.908 -1.573 85.048 -1.367 c
-85.184 -1.153 85.258 -0.823 85.269 -0.382 c
-h
-86.621 0.015 m
-86.621 0.592 86.757 1.047 87.032 1.382 c
-87.316 1.723 87.687 1.897 88.15 1.897 c
-88.609 1.897 88.977 1.727 89.253 1.397 c
-89.535 1.073 89.683 0.625 89.693 0.059 c
-89.693 -0.367 l
-89.693 -0.937 89.55 -1.392 89.267 -1.735 c
-88.991 -2.069 88.624 -2.234 88.164 -2.234 c
-87.701 -2.234 87.331 -2.072 87.048 -1.749 c
-86.772 -1.419 86.629 -0.977 86.621 -0.426 c
-h
-87.268 -0.367 m
-87.268 -0.771 87.345 -1.087 87.503 -1.323 c
-87.668 -1.558 87.889 -1.675 88.164 -1.675 c
-88.731 -1.675 89.024 -1.264 89.047 -0.441 c
-89.047 0.015 l
-89.047 0.416 88.962 0.735 88.796 0.97 c
-88.638 1.213 88.422 1.338 88.15 1.338 c
-87.885 1.338 87.668 1.213 87.503 0.97 c
-87.345 0.735 87.268 0.416 87.268 0.015 c
-h
-92.471 -1.147 m
-92.471 -0.999 92.416 -0.878 92.31 -0.779 c
-92.199 -0.683 91.994 -0.565 91.692 -0.426 c
-91.347 -0.279 91.104 -0.158 90.957 -0.058 c
-90.811 0.048 90.7 0.166 90.634 0.294 c
-90.564 0.419 90.531 0.577 90.531 0.765 c
-90.531 1.087 90.649 1.357 90.884 1.573 c
-91.119 1.786 91.42 1.897 91.795 1.897 c
-92.177 1.897 92.486 1.783 92.721 1.558 c
-92.956 1.33 93.074 1.044 93.074 0.691 c
-92.428 0.691 l
-92.428 0.867 92.368 1.018 92.251 1.147 c
-92.133 1.272 91.979 1.338 91.795 1.338 c
-91.597 1.338 91.446 1.282 91.339 1.176 c
-91.229 1.077 91.177 0.944 91.177 0.779 c
-91.177 0.651 91.215 0.544 91.295 0.456 c
-91.373 0.375 91.564 0.272 91.869 0.147 c
-92.347 -0.04 92.677 -0.228 92.854 -0.411 c
-93.03 -0.588 93.118 -0.816 93.118 -1.087 c
-93.118 -1.44 92.993 -1.72 92.75 -1.926 c
-92.515 -2.131 92.199 -2.234 91.81 -2.234 c
-91.387 -2.234 91.049 -2.117 90.795 -1.881 c
-90.539 -1.639 90.414 -1.334 90.414 -0.97 c
-91.06 -0.97 l
-91.067 -1.198 91.138 -1.374 91.266 -1.5 c
-91.391 -1.617 91.574 -1.675 91.81 -1.675 c
-92.023 -1.675 92.185 -1.628 92.295 -1.529 c
-92.413 -1.433 92.471 -1.305 92.471 -1.147 c
-94.662 -2.161 -0.647 3.984 re
-94.705 2.866 m
-94.705 2.756 94.676 2.664 94.618 2.587 c
-94.558 2.517 94.463 2.484 94.338 2.484 c
-94.221 2.484 94.125 2.517 94.059 2.587 c
-94 2.664 93.97 2.756 93.97 2.866 c
-93.97 2.984 94 3.076 94.059 3.146 c
-94.125 3.223 94.221 3.263 94.338 3.263 c
-94.463 3.263 94.558 3.223 94.618 3.146 c
-94.676 3.065 94.705 2.973 94.705 2.866 c
-96.528 2.778 m
-96.528 1.823 l
-97.131 1.823 l
-97.131 1.294 l
-96.528 1.294 l
-96.528 -1.176 l
-96.528 -1.334 96.55 -1.452 96.602 -1.529 c
-96.661 -1.61 96.748 -1.646 96.866 -1.646 c
-96.954 -1.646 97.043 -1.631 97.131 -1.602 c
-97.131 -2.161 l
-96.984 -2.208 96.829 -2.234 96.675 -2.234 c
-96.418 -2.234 96.224 -2.142 96.087 -1.955 c
-95.948 -1.771 95.881 -1.51 95.881 -1.176 c
-95.881 1.294 l
-95.279 1.294 l
-95.279 1.823 l
-95.881 1.823 l
-95.881 2.778 l
-h
-97.689 0.015 m
-97.689 0.592 97.826 1.047 98.101 1.382 c
-98.384 1.723 98.755 1.897 99.218 1.897 c
-99.678 1.897 100.045 1.727 100.32 1.397 c
-100.604 1.073 100.75 0.625 100.762 0.059 c
-100.762 -0.367 l
-100.762 -0.937 100.619 -1.392 100.336 -1.735 c
-100.06 -2.069 99.692 -2.234 99.233 -2.234 c
-98.77 -2.234 98.399 -2.072 98.115 -1.749 c
-97.84 -1.419 97.697 -0.977 97.689 -0.426 c
-h
-98.336 -0.367 m
-98.336 -0.771 98.414 -1.087 98.572 -1.323 c
-98.737 -1.558 98.957 -1.675 99.233 -1.675 c
-99.799 -1.675 100.093 -1.264 100.114 -0.441 c
-100.114 0.015 l
-100.114 0.416 100.031 0.735 99.865 0.97 c
-99.707 1.213 99.49 1.338 99.218 1.338 c
-98.954 1.338 98.737 1.213 98.572 0.97 c
-98.414 0.735 98.336 0.416 98.336 0.015 c
-h
-103.246 1.205 m
-103.158 1.224 103.058 1.235 102.952 1.235 c
-102.618 1.235 102.383 1.051 102.246 0.691 c
-102.246 -2.161 l
-101.6 -2.161 l
-101.6 1.823 l
-102.231 1.823 l
-102.246 1.411 l
-102.423 1.735 102.665 1.897 102.981 1.897 c
-103.088 1.897 103.176 1.874 103.246 1.837 c
-h
-105.053 -1.072 m
-105.774 1.823 l
-106.464 1.823 l
-105.171 -2.719 l
-105.072 -3.061 104.929 -3.322 104.745 -3.499 c
-104.569 -3.675 104.367 -3.763 104.143 -3.763 c
-104.054 -3.763 103.94 -3.74 103.804 -3.704 c
-103.804 -3.16 l
-103.952 -3.175 l
-104.135 -3.175 104.282 -3.131 104.392 -3.042 c
-104.499 -2.954 104.587 -2.796 104.657 -2.572 c
-104.775 -2.131 l
-103.613 1.823 l
-104.319 1.823 l
-h
-106.744 -1.808 m
-106.744 -1.691 106.777 -1.595 106.847 -1.514 c
-106.913 -1.437 107.016 -1.396 107.156 -1.396 c
-107.303 -1.396 107.409 -1.437 107.479 -1.514 c
-107.557 -1.595 107.597 -1.691 107.597 -1.808 c
-107.597 -1.918 107.557 -2.01 107.479 -2.088 c
-107.409 -2.165 107.303 -2.205 107.156 -2.205 c
-107.016 -2.205 106.913 -2.165 106.847 -2.088 c
-106.777 -2.01 106.744 -1.918 106.744 -1.808 c
-f
-Q
-0.793 0.801 0.129 0.016 k
-287.665 337.903 234.667 -21.457 re
-f
-0 0 0 0 k
-q 1 0 0 1 389.6758 330.7339 cm
-0 0 m
--2.954 -8.32 l
--4.88 -8.32 l
--1.911 -0.47 l
--5.659 -0.47 l
--5.659 1.043 l
-0 1.043 l
-h
-1.562 -7.394 m
-1.562 -7.1 1.658 -6.861 1.856 -6.674 c
-2.051 -6.49 2.304 -6.394 2.62 -6.394 c
-2.922 -6.394 3.171 -6.49 3.37 -6.674 c
-3.576 -6.861 3.678 -7.1 3.678 -7.394 c
-3.678 -7.699 3.576 -7.945 3.37 -8.129 c
-3.171 -8.306 2.922 -8.393 2.62 -8.393 c
-2.315 -8.393 2.062 -8.302 1.856 -8.114 c
-1.658 -7.93 1.562 -7.688 1.562 -7.394 c
-11.403 -4.896 m
-10.462 -4.896 l
-10.462 -8.32 l
-8.58 -8.32 l
-8.58 1.043 l
-11.594 1.043 l
-12.542 1.043 13.274 0.797 13.785 0.309 c
-14.302 -0.184 14.564 -0.879 14.564 -1.779 c
-14.564 -3.024 14.111 -3.896 13.211 -4.395 c
-14.843 -8.231 l
-14.843 -8.32 l
-12.814 -8.32 l
-h
-10.462 -3.323 m
-11.535 -3.323 l
-11.917 -3.323 12.2 -3.201 12.388 -2.955 c
-12.572 -2.702 12.667 -2.363 12.667 -1.941 c
-12.667 -1 12.303 -0.53 11.58 -0.53 c
-10.462 -0.53 l
-h
-20.917 -4.263 m
-17.978 -4.263 l
-17.978 -6.747 l
-21.461 -6.747 l
-21.461 -8.32 l
-16.081 -8.32 l
-16.081 1.043 l
-21.446 1.043 l
-21.446 -0.53 l
-17.978 -0.53 l
-17.978 -2.749 l
-20.917 -2.749 l
-h
-25.779 -5.748 m
-27.351 1.043 l
-29.454 1.043 l
-26.763 -8.32 l
-24.794 -8.32 l
-22.104 1.043 l
-24.206 1.043 l
-h
-35.388 -4.263 m
-32.448 -4.263 l
-32.448 -6.747 l
-35.932 -6.747 l
-35.932 -8.32 l
-30.552 -8.32 l
-30.552 1.043 l
-35.917 1.043 l
-35.917 -0.53 l
-32.448 -0.53 l
-32.448 -2.749 l
-35.388 -2.749 l
-h
-40.033 -4.896 m
-39.092 -4.896 l
-39.092 -8.32 l
-37.211 -8.32 l
-37.211 1.043 l
-40.224 1.043 l
-41.172 1.043 41.903 0.797 42.414 0.309 c
-42.932 -0.184 43.193 -0.879 43.193 -1.779 c
-43.193 -3.024 42.742 -3.896 41.841 -4.395 c
-43.473 -8.231 l
-43.473 -8.32 l
-41.444 -8.32 l
-h
-39.092 -3.323 m
-40.166 -3.323 l
-40.548 -3.323 40.831 -3.201 41.018 -2.955 c
-41.202 -2.702 41.297 -2.363 41.297 -1.941 c
-41.297 -1 40.933 -0.53 40.209 -0.53 c
-39.092 -0.53 l
-h
-50.462 -0.53 m
-48.139 -0.53 l
-48.139 -8.32 l
-46.243 -8.32 l
-46.243 -0.53 l
-43.965 -0.53 l
-43.965 1.043 l
-50.462 1.043 l
-h
-53.732 -8.32 -1.896 9.363 re
-61.979 -8.32 m
-60.082 -8.32 l
-57.319 -2.176 l
-57.319 -8.32 l
-55.423 -8.32 l
-55.423 1.043 l
-57.319 1.043 l
-60.082 -5.101 l
-60.082 1.043 l
-61.979 1.043 l
-h
-70.096 -7.262 m
-69.732 -7.655 69.288 -7.953 68.759 -8.158 c
-68.23 -8.353 67.649 -8.453 67.024 -8.453 c
-65.944 -8.453 65.106 -8.121 64.51 -7.453 c
-63.912 -6.787 63.607 -5.818 63.6 -4.543 c
-63.6 -2.852 l
-63.6 -1.559 63.879 -0.566 64.437 0.132 c
-65.003 0.826 65.826 1.176 66.906 1.176 c
-67.924 1.176 68.689 0.918 69.2 0.411 c
-69.718 -0.088 70.015 -0.875 70.096 -1.941 c
-68.259 -1.941 l
-68.207 -1.345 68.086 -0.938 67.891 -0.721 c
-67.693 -0.508 67.384 -0.397 66.966 -0.397 c
-66.455 -0.397 66.083 -0.585 65.848 -0.956 c
-65.62 -1.331 65.503 -1.922 65.495 -2.735 c
-65.495 -4.439 l
-65.495 -5.292 65.62 -5.917 65.878 -6.307 c
-66.131 -6.689 66.547 -6.88 67.127 -6.88 c
-67.498 -6.88 67.803 -6.806 68.038 -6.659 c
-68.2 -6.542 l
-68.2 -4.821 l
-66.877 -4.821 l
-66.877 -3.396 l
-70.096 -3.396 l
-h
-81.143 -5.204 m
-81.091 -6.273 80.79 -7.082 80.231 -7.629 c
-79.68 -8.181 78.908 -8.453 77.909 -8.453 c
-76.84 -8.453 76.02 -8.107 75.454 -7.408 c
-74.896 -6.714 74.617 -5.719 74.617 -4.425 c
-74.617 -2.852 l
-74.617 -1.559 74.903 -0.566 75.484 0.132 c
-76.072 0.826 76.884 1.176 77.923 1.176 c
-78.941 1.176 79.717 0.885 80.246 0.309 c
-80.776 -0.262 81.077 -1.081 81.158 -2.147 c
-79.261 -2.147 l
-79.239 -1.482 79.136 -1.025 78.952 -0.78 c
-78.765 -0.526 78.424 -0.397 77.923 -0.397 c
-77.424 -0.397 77.063 -0.574 76.851 -0.927 c
-76.645 -1.279 76.531 -1.864 76.512 -2.675 c
-76.512 -4.439 l
-76.512 -5.373 76.616 -6.012 76.821 -6.365 c
-77.034 -6.71 77.398 -6.88 77.909 -6.88 c
-78.397 -6.88 78.736 -6.762 78.923 -6.527 c
-79.118 -6.284 79.224 -5.843 79.247 -5.204 c
-h
-89.087 -8.32 m
-87.206 -8.32 l
-87.206 -4.308 l
-84.413 -4.308 l
-84.413 -8.32 l
-82.517 -8.32 l
-82.517 1.043 l
-84.413 1.043 l
-84.413 -2.749 l
-87.206 -2.749 l
-87.206 1.043 l
-89.087 1.043 l
-h
-95.427 -6.409 m
-92.854 -6.409 l
-92.354 -8.32 l
-90.355 -8.32 l
-93.28 1.043 l
-95.001 1.043 l
-97.954 -8.32 l
-95.926 -8.32 l
-h
-93.266 -4.821 m
-95.015 -4.821 l
-94.133 -1.485 l
-h
-105.609 -8.32 m
-103.713 -8.32 l
-100.95 -2.176 l
-100.95 -8.32 l
-99.053 -8.32 l
-99.053 1.043 l
-100.95 1.043 l
-103.713 -5.101 l
-103.713 1.043 l
-105.609 1.043 l
-h
-113.727 -7.262 m
-113.363 -7.655 112.919 -7.953 112.389 -8.158 c
-111.86 -8.353 111.279 -8.453 110.654 -8.453 c
-109.574 -8.453 108.736 -8.121 108.141 -7.453 c
-107.543 -6.787 107.237 -5.818 107.23 -4.543 c
-107.23 -2.852 l
-107.23 -1.559 107.51 -0.566 108.067 0.132 c
-108.634 0.826 109.457 1.176 110.537 1.176 c
-111.555 1.176 112.32 0.918 112.83 0.411 c
-113.349 -0.088 113.646 -0.875 113.727 -1.941 c
-111.89 -1.941 l
-111.838 -1.345 111.717 -0.938 111.522 -0.721 c
-111.323 -0.508 111.015 -0.397 110.596 -0.397 c
-110.085 -0.397 109.714 -0.585 109.479 -0.956 c
-109.251 -1.331 109.133 -1.922 109.126 -2.735 c
-109.126 -4.439 l
-109.126 -5.292 109.251 -5.917 109.508 -6.307 c
-109.762 -6.689 110.177 -6.88 110.758 -6.88 c
-111.129 -6.88 111.433 -6.806 111.669 -6.659 c
-111.83 -6.542 l
-111.83 -4.821 l
-110.508 -4.821 l
-110.508 -3.396 l
-113.727 -3.396 l
-h
-120.135 -4.263 m
-117.195 -4.263 l
-117.195 -6.747 l
-120.68 -6.747 l
-120.68 -8.32 l
-115.3 -8.32 l
-115.3 1.043 l
-120.665 1.043 l
-120.665 -0.53 l
-117.195 -0.53 l
-117.195 -2.749 l
-120.135 -2.749 l
-h
-125.893 -5.865 m
-125.893 -5.484 125.795 -5.197 125.6 -4.998 c
-125.401 -4.803 125.049 -4.601 124.542 -4.395 c
-123.601 -4.036 122.924 -3.616 122.513 -3.146 c
-122.101 -2.668 121.895 -2.099 121.895 -1.441 c
-121.895 -0.659 122.175 -0.026 122.734 0.455 c
-123.292 0.933 124.002 1.176 124.865 1.176 c
-125.442 1.176 125.957 1.051 126.408 0.808 c
-126.857 0.562 127.202 0.22 127.437 -0.221 c
-127.68 -0.662 127.805 -1.162 127.805 -1.721 c
-125.924 -1.721 l
-125.924 -1.279 125.828 -0.948 125.644 -0.721 c
-125.457 -0.497 125.188 -0.383 124.835 -0.383 c
-124.501 -0.383 124.241 -0.482 124.056 -0.676 c
-123.88 -0.864 123.792 -1.125 123.792 -1.455 c
-123.792 -1.713 123.894 -1.948 124.1 -2.161 c
-124.307 -2.367 124.667 -2.584 125.188 -2.808 c
-126.099 -3.132 126.761 -3.535 127.173 -4.013 c
-127.591 -4.495 127.805 -5.108 127.805 -5.85 c
-127.805 -6.666 127.544 -7.302 127.026 -7.761 c
-126.504 -8.225 125.799 -8.453 124.909 -8.453 c
-124.299 -8.453 123.748 -8.327 123.248 -8.085 c
-122.756 -7.832 122.37 -7.475 122.087 -7.012 c
-121.8 -6.542 121.66 -5.994 121.66 -5.366 c
-123.557 -5.366 l
-123.557 -5.906 123.659 -6.299 123.865 -6.542 c
-124.079 -6.787 124.428 -6.909 124.909 -6.909 c
-125.563 -6.909 125.893 -6.564 125.893 -5.865 c
-f
-Q
-0.113 0.082 0.09 0 k
-287.665 307.601 234.667 -12.895 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 292.8568 300.7657 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.646 -0.243 -0.775 -0.367 -0.882 c
--0.496 -0.992 -0.658 -1.08 -0.852 -1.147 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.161 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.926 c
--3.127 -0.819 -3.23 -0.691 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.214 -3.484 -0.015 c
--2.66 0.133 l
--2.642 0.033 -2.616 -0.058 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.368 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.684 -1.992 0.69 -1.999 0.69 c
--2.167 0.727 -2.329 0.771 -2.484 0.823 c
--2.642 0.882 -2.786 0.96 -2.91 1.058 c
--3.039 1.154 -3.142 1.278 -3.219 1.426 c
--3.289 1.573 -3.322 1.756 -3.322 1.984 c
--3.322 2.179 -3.289 2.344 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.837 c
--2.8 2.932 -2.645 3.002 -2.469 3.042 c
--2.293 3.09 -2.102 3.119 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.119 -1.128 3.09 -0.97 3.042 c
--0.804 2.992 -0.669 2.918 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.202 2.344 -0.143 2.182 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.253 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.353 c
--1.294 1.312 -1.117 1.264 -0.941 1.205 c
--0.756 1.147 -0.595 1.066 -0.455 0.97 c
--0.32 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.454 c
--2.26 2.425 -2.319 2.385 -2.366 2.337 c
--2.406 2.296 -2.436 2.249 -2.454 2.19 c
--2.477 2.132 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.779 c
--2.41 1.72 -2.373 1.668 -2.322 1.631 c
--2.263 1.591 -2.201 1.558 -2.131 1.529 c
--2.065 1.5 -1.984 1.47 -1.896 1.44 c
-h
--0.837 -0.015 m
--0.837 0.092 -0.86 0.177 -0.897 0.235 c
--0.926 0.301 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.53 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.529 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.015 c
-6.402 -2.66 m
-6.184 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.519 -2.485 5.402 -2.396 c
-5.284 -2.315 5.185 -2.219 5.108 -2.102 c
-5.039 -1.984 4.991 -1.856 4.961 -1.72 c
-5.858 -1.617 l
-5.895 -1.753 5.964 -1.86 6.064 -1.94 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.057 6.681 -2.028 c
-6.758 -1.999 6.828 -1.944 6.887 -1.866 c
-6.945 -1.797 6.99 -1.705 7.019 -1.587 c
-7.056 -1.469 7.078 -1.323 7.078 -1.147 c
-7.078 -0.956 l
-7.078 -0.889 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.073 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.215 -0.897 5.108 -0.75 c
-5.009 -0.596 4.935 -0.411 4.888 -0.206 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.771 4.836 1.018 4.888 1.235 c
-4.946 1.448 5.027 1.631 5.137 1.779 c
-5.244 1.933 5.376 2.051 5.534 2.132 c
-5.689 2.219 5.876 2.263 6.093 2.263 c
-6.188 2.263 6.288 2.253 6.387 2.234 c
-6.483 2.213 6.571 2.179 6.652 2.132 c
-6.739 2.08 6.817 2.018 6.887 1.941 c
-6.964 1.86 7.026 1.768 7.078 1.661 c
-7.092 1.661 l
-7.092 1.808 l
-7.1 1.866 7.107 1.918 7.107 1.97 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.151 2.219 c
-8.004 2.219 l
-7.993 2.138 7.982 2.028 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.161 l
-7.975 -1.415 7.938 -1.635 7.871 -1.822 c
-7.802 -2.007 7.699 -2.161 7.563 -2.278 c
-7.423 -2.404 7.258 -2.499 7.063 -2.558 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.53 m
-7.092 0.742 7.067 0.919 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.5 6.729 1.558 6.652 1.588 c
-6.571 1.625 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.621 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.367 c
-5.88 1.278 5.835 1.161 5.799 1.014 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.338 c
-6.049 -0.515 6.211 -0.603 6.417 -0.603 c
-6.483 -0.603 6.556 -0.588 6.637 -0.559 c
-6.725 -0.522 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.176 7.019 -0.029 c
-7.067 0.118 7.092 0.301 7.092 0.53 c
-11.036 -0.646 m
-12.168 -0.646 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.646 l
-10.124 -0.646 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.219 l
-11.036 2.219 l
-h
-10.124 3.513 0.912 -0.675 re
-10.124 2.837 m
-13.597 1.602 m
-13.053 1.602 l
-13.053 2.219 l
-13.641 2.219 l
-13.92 3.117 l
-14.494 3.117 l
-14.494 2.219 l
-15.728 2.219 l
-15.728 1.602 l
-14.494 1.602 l
-14.494 -0.103 l
-14.494 -0.324 l
-14.501 -0.393 14.523 -0.455 14.552 -0.515 c
-14.589 -0.566 14.645 -0.61 14.714 -0.646 c
-14.791 -0.676 14.905 -0.691 15.052 -0.691 c
-15.188 -0.691 15.324 -0.687 15.464 -0.676 c
-15.599 -0.658 15.732 -0.632 15.861 -0.603 c
-15.861 -1.205 l
-15.78 -1.216 15.703 -1.231 15.626 -1.249 c
-15.545 -1.261 15.468 -1.268 15.391 -1.278 c
-15.31 -1.286 15.221 -1.294 15.125 -1.294 c
-15.038 -1.301 14.938 -1.309 14.832 -1.309 c
-14.645 -1.309 14.483 -1.294 14.346 -1.264 c
-14.218 -1.228 14.104 -1.183 14.009 -1.132 c
-13.92 -1.084 13.847 -1.025 13.788 -0.956 c
-13.729 -0.879 13.685 -0.802 13.656 -0.721 c
-13.627 -0.632 13.604 -0.544 13.597 -0.455 c
-13.586 -0.36 13.582 -0.264 13.582 -0.176 c
-h
-24.133 1.47 m
-24.033 1.477 23.931 1.488 23.823 1.5 c
-23.713 1.517 23.592 1.529 23.456 1.529 c
-23.28 1.529 23.121 1.488 22.986 1.411 c
-22.846 1.341 22.728 1.242 22.633 1.118 c
-22.545 0.989 22.475 0.842 22.427 0.676 c
-22.387 0.507 22.369 0.331 22.369 0.147 c
-22.369 -1.264 l
-21.471 -1.264 l
-21.471 0.985 l
-21.471 1.11 21.461 1.235 21.442 1.353 c
-21.432 1.477 21.417 1.595 21.398 1.706 c
-21.388 1.823 21.373 1.918 21.355 1.999 c
-21.332 2.087 21.314 2.161 21.296 2.219 c
-22.177 2.219 l
-22.185 2.168 22.196 2.117 22.207 2.058 c
-22.225 1.999 22.24 1.933 22.251 1.866 c
-22.269 1.808 22.284 1.742 22.296 1.675 c
-22.302 1.606 22.313 1.544 22.325 1.484 c
-22.339 1.484 l
-22.375 1.602 22.427 1.708 22.486 1.808 c
-22.552 1.903 22.633 1.988 22.722 2.058 c
-22.809 2.124 22.913 2.179 23.03 2.219 c
-23.155 2.256 23.302 2.278 23.471 2.278 c
-23.596 2.278 23.713 2.271 23.823 2.263 c
-23.942 2.253 24.044 2.238 24.133 2.219 c
-h
-26.738 -1.323 m
-26.481 -1.323 26.253 -1.286 26.047 -1.22 c
-25.841 -1.143 25.665 -1.029 25.518 -0.882 c
-25.371 -0.727 25.253 -0.536 25.165 -0.309 c
-25.084 -0.085 25.047 0.18 25.047 0.485 c
-25.047 0.816 25.091 1.095 25.18 1.323 c
-25.275 1.558 25.404 1.742 25.562 1.881 c
-25.727 2.018 25.915 2.117 26.121 2.176 c
-26.327 2.242 26.535 2.278 26.753 2.278 c
-27.025 2.278 27.26 2.227 27.458 2.132 c
-27.664 2.043 27.829 1.911 27.958 1.735 c
-28.094 1.565 28.193 1.359 28.252 1.118 c
-28.318 0.882 28.355 0.617 28.355 0.324 c
-28.355 0.309 l
-25.988 0.309 l
-25.988 0.162 26.003 0.022 26.032 -0.103 c
-26.069 -0.231 26.124 -0.345 26.194 -0.441 c
-26.26 -0.529 26.344 -0.599 26.444 -0.646 c
-26.539 -0.698 26.653 -0.721 26.782 -0.721 c
-26.936 -0.721 27.076 -0.687 27.194 -0.617 c
-27.318 -0.551 27.407 -0.449 27.458 -0.309 c
-28.296 -0.382 l
-28.266 -0.482 28.212 -0.588 28.135 -0.706 c
-28.054 -0.816 27.95 -0.919 27.825 -1.014 c
-27.708 -1.103 27.553 -1.176 27.37 -1.234 c
-27.194 -1.294 26.98 -1.323 26.738 -1.323 c
-26.738 1.706 m
-26.649 1.706 26.562 1.69 26.473 1.661 c
-26.385 1.631 26.304 1.58 26.238 1.514 c
-26.169 1.444 26.109 1.356 26.061 1.249 c
-26.021 1.139 26.003 1.014 26.003 0.867 c
-27.472 0.867 l
-27.472 1.003 27.447 1.124 27.399 1.235 c
-27.359 1.341 27.304 1.43 27.237 1.5 c
-27.179 1.565 27.106 1.617 27.017 1.646 c
-26.929 1.683 26.834 1.706 26.738 1.706 c
-32.342 -0.25 m
-32.342 -0.419 32.301 -0.569 32.224 -0.706 c
-32.154 -0.834 32.052 -0.948 31.916 -1.043 c
-31.787 -1.132 31.625 -1.201 31.43 -1.249 c
-31.243 -1.297 31.027 -1.323 30.784 -1.323 c
-30.556 -1.323 30.358 -1.309 30.181 -1.278 c
-30.005 -1.249 29.847 -1.201 29.71 -1.132 c
-29.571 -1.055 29.461 -0.956 29.373 -0.838 c
-29.284 -0.721 29.215 -0.573 29.167 -0.397 c
-29.976 -0.279 l
-29.994 -0.378 30.023 -0.455 30.063 -0.515 c
-30.111 -0.573 30.17 -0.617 30.24 -0.646 c
-30.306 -0.676 30.387 -0.702 30.475 -0.721 c
-30.564 -0.731 30.666 -0.735 30.784 -0.735 c
-30.879 -0.735 30.975 -0.731 31.063 -0.721 c
-31.152 -0.702 31.229 -0.676 31.298 -0.646 c
-31.364 -0.617 31.416 -0.58 31.445 -0.529 c
-31.482 -0.482 31.504 -0.419 31.504 -0.338 c
-31.504 -0.243 31.474 -0.169 31.416 -0.118 c
-31.364 -0.07 31.298 -0.029 31.21 0 c
-31.122 0.037 31.011 0.066 30.886 0.088 c
-30.769 0.118 30.637 0.147 30.489 0.177 c
-30.35 0.214 30.211 0.254 30.063 0.294 c
-29.924 0.341 29.799 0.405 29.681 0.485 c
-29.571 0.563 29.483 0.661 29.417 0.779 c
-29.347 0.897 29.313 1.047 29.313 1.235 c
-29.313 1.389 29.344 1.532 29.402 1.661 c
-29.468 1.797 29.564 1.911 29.681 1.999 c
-29.806 2.087 29.964 2.153 30.152 2.205 c
-30.335 2.253 30.549 2.278 30.784 2.278 c
-30.967 2.278 31.144 2.256 31.313 2.219 c
-31.478 2.19 31.625 2.135 31.754 2.058 c
-31.879 1.988 31.989 1.889 32.077 1.764 c
-32.166 1.646 32.224 1.503 32.253 1.338 c
-31.46 1.264 l
-31.438 1.341 31.408 1.404 31.372 1.455 c
-31.331 1.514 31.283 1.558 31.225 1.588 c
-31.173 1.625 31.111 1.65 31.034 1.661 c
-30.953 1.668 30.872 1.675 30.784 1.675 c
-30.567 1.675 30.406 1.646 30.298 1.588 c
-30.188 1.536 30.137 1.448 30.137 1.323 c
-30.137 1.242 30.155 1.18 30.196 1.132 c
-30.244 1.08 30.306 1.043 30.387 1.014 c
-30.475 0.985 30.57 0.956 30.681 0.926 c
-30.788 0.904 30.909 0.882 31.048 0.852 c
-31.202 0.823 31.361 0.783 31.519 0.735 c
-31.673 0.684 31.813 0.621 31.931 0.544 c
-32.048 0.463 32.143 0.36 32.224 0.235 c
-32.301 0.106 32.342 -0.056 32.342 -0.25 c
-34.859 -1.323 m
-34.602 -1.323 34.374 -1.286 34.169 -1.22 c
-33.963 -1.143 33.786 -1.029 33.639 -0.882 c
-33.492 -0.727 33.375 -0.536 33.286 -0.309 c
-33.205 -0.085 33.169 0.18 33.169 0.485 c
-33.169 0.816 33.213 1.095 33.301 1.323 c
-33.396 1.558 33.525 1.742 33.683 1.881 c
-33.849 2.018 34.036 2.117 34.242 2.176 c
-34.447 2.242 34.657 2.278 34.874 2.278 c
-35.146 2.278 35.381 2.227 35.58 2.132 c
-35.785 2.043 35.95 1.911 36.079 1.735 c
-36.215 1.565 36.314 1.359 36.373 1.118 c
-36.44 0.882 36.476 0.617 36.476 0.324 c
-36.476 0.309 l
-34.109 0.309 l
-34.109 0.162 34.124 0.022 34.154 -0.103 c
-34.19 -0.231 34.246 -0.345 34.315 -0.441 c
-34.381 -0.529 34.466 -0.599 34.565 -0.646 c
-34.661 -0.698 34.774 -0.721 34.903 -0.721 c
-35.058 -0.721 35.197 -0.687 35.314 -0.617 c
-35.44 -0.551 35.528 -0.449 35.58 -0.309 c
-36.417 -0.382 l
-36.388 -0.482 36.332 -0.588 36.255 -0.706 c
-36.174 -0.816 36.072 -0.919 35.947 -1.014 c
-35.829 -1.103 35.675 -1.176 35.491 -1.234 c
-35.314 -1.294 35.102 -1.323 34.859 -1.323 c
-34.859 1.706 m
-34.771 1.706 34.682 1.69 34.595 1.661 c
-34.506 1.631 34.425 1.58 34.36 1.514 c
-34.29 1.444 34.231 1.356 34.183 1.249 c
-34.142 1.139 34.124 1.014 34.124 0.867 c
-35.594 0.867 l
-35.594 1.003 35.568 1.124 35.52 1.235 c
-35.48 1.341 35.425 1.43 35.359 1.5 c
-35.3 1.565 35.227 1.617 35.138 1.646 c
-35.05 1.683 34.955 1.706 34.859 1.706 c
-37.968 1.602 m
-37.424 1.602 l
-37.424 2.219 l
-38.012 2.219 l
-38.291 3.117 l
-38.865 3.117 l
-38.865 2.219 l
-40.099 2.219 l
-40.099 1.602 l
-38.865 1.602 l
-38.865 -0.103 l
-38.865 -0.324 l
-38.872 -0.393 38.894 -0.455 38.923 -0.515 c
-38.96 -0.566 39.015 -0.61 39.085 -0.646 c
-39.162 -0.676 39.276 -0.691 39.424 -0.691 c
-39.559 -0.691 39.695 -0.687 39.835 -0.676 c
-39.971 -0.658 40.103 -0.632 40.232 -0.603 c
-40.232 -1.205 l
-40.151 -1.216 40.074 -1.231 39.996 -1.249 c
-39.916 -1.261 39.838 -1.268 39.761 -1.278 c
-39.68 -1.286 39.592 -1.294 39.497 -1.294 c
-39.409 -1.301 39.309 -1.309 39.202 -1.309 c
-39.015 -1.309 38.853 -1.294 38.718 -1.264 c
-38.589 -1.228 38.475 -1.183 38.379 -1.132 c
-38.291 -1.084 38.218 -1.025 38.159 -0.956 c
-38.1 -0.879 38.056 -0.802 38.027 -0.721 c
-37.997 -0.632 37.975 -0.544 37.968 -0.455 c
-37.957 -0.36 37.953 -0.264 37.953 -0.176 c
-h
-46.236 -2.631 m
-46.236 3.513 l
-48.162 3.513 l
-48.162 2.896 l
-47.089 2.896 l
-47.089 -2.014 l
-48.162 -2.014 l
-48.162 -2.631 l
-h
-50.135 0.838 1.867 -0.794 re
-50.135 0.044 m
-54.196 0.838 1.866 -0.794 re
-54.196 0.044 m
-58.569 1.514 m
-58.686 1.785 58.837 1.984 59.024 2.102 c
-59.208 2.219 59.428 2.278 59.686 2.278 c
-59.891 2.278 60.061 2.242 60.2 2.176 c
-60.347 2.105 60.458 2.014 60.538 1.897 c
-60.627 1.779 60.685 1.635 60.714 1.47 c
-60.751 1.301 60.774 1.124 60.774 0.941 c
-60.774 -1.264 l
-59.862 -1.264 l
-59.862 0.735 l
-59.862 0.871 59.851 0.992 59.833 1.103 c
-59.822 1.209 59.796 1.297 59.76 1.367 c
-59.719 1.444 59.66 1.503 59.583 1.544 c
-59.513 1.58 59.421 1.602 59.303 1.602 c
-59.193 1.602 59.098 1.577 59.01 1.529 c
-58.921 1.477 58.84 1.411 58.775 1.323 c
-58.715 1.235 58.664 1.124 58.628 1 c
-58.598 0.882 58.584 0.75 58.584 0.603 c
-58.584 -1.264 l
-57.672 -1.264 l
-57.672 3.513 l
-58.584 3.513 l
-58.584 2.205 l
-58.584 2.135 58.576 2.065 58.569 1.999 c
-58.569 1.793 l
-58.569 1.735 58.561 1.679 58.554 1.631 c
-58.554 1.514 l
-h
-62.688 -1.323 m
-62.519 -1.323 62.368 -1.301 62.233 -1.264 c
-62.104 -1.216 61.99 -1.147 61.894 -1.058 c
-61.807 -0.97 61.736 -0.864 61.688 -0.735 c
-61.637 -0.599 61.615 -0.449 61.615 -0.279 c
-61.615 -0.073 61.649 0.096 61.718 0.235 c
-61.784 0.382 61.88 0.492 61.998 0.573 c
-62.122 0.661 62.266 0.724 62.424 0.765 c
-62.589 0.801 62.765 0.827 62.952 0.838 c
-63.673 0.852 l
-63.673 1.029 l
-63.673 1.147 63.662 1.249 63.644 1.338 c
-63.621 1.426 63.588 1.492 63.54 1.544 c
-63.5 1.602 63.453 1.639 63.394 1.661 c
-63.334 1.679 63.268 1.69 63.203 1.69 c
-63.133 1.69 63.07 1.679 63.012 1.661 c
-62.96 1.65 62.912 1.625 62.864 1.588 c
-62.824 1.558 62.791 1.507 62.761 1.44 c
-62.74 1.382 62.725 1.301 62.717 1.205 c
-61.776 1.249 l
-61.807 1.396 61.85 1.532 61.909 1.661 c
-61.975 1.785 62.071 1.897 62.189 1.984 c
-62.306 2.08 62.445 2.153 62.615 2.205 c
-62.791 2.253 62.997 2.278 63.232 2.278 c
-63.673 2.278 64.003 2.168 64.232 1.955 c
-64.467 1.749 64.585 1.44 64.585 1.029 c
-64.585 -0.235 l
-64.585 -0.455 l
-64.591 -0.515 64.606 -0.569 64.629 -0.617 c
-64.647 -0.658 64.676 -0.691 64.716 -0.721 c
-64.753 -0.742 64.805 -0.75 64.864 -0.75 c
-64.93 -0.75 64.999 -0.746 65.069 -0.735 c
-65.069 -1.22 l
-65.011 -1.231 64.955 -1.242 64.907 -1.249 c
-64.867 -1.261 64.826 -1.268 64.79 -1.278 c
-64.749 -1.286 64.706 -1.294 64.658 -1.294 c
-64.606 -1.301 64.548 -1.309 64.481 -1.309 c
-64.253 -1.309 64.088 -1.257 63.982 -1.147 c
-63.871 -1.029 63.808 -0.864 63.791 -0.646 c
-63.776 -0.646 l
-63.706 -0.757 63.636 -0.852 63.57 -0.941 c
-63.5 -1.022 63.423 -1.087 63.334 -1.147 c
-63.247 -1.205 63.147 -1.249 63.041 -1.278 c
-62.942 -1.309 62.824 -1.323 62.688 -1.323 c
-63.673 0.353 m
-63.247 0.338 l
-63.147 0.338 63.056 0.331 62.967 0.324 c
-62.887 0.312 62.821 0.287 62.761 0.25 c
-62.703 0.21 62.651 0.15 62.615 0.073 c
-62.574 0.004 62.555 -0.088 62.555 -0.206 c
-62.555 -0.374 62.589 -0.496 62.659 -0.573 c
-62.725 -0.654 62.824 -0.691 62.952 -0.691 c
-63.06 -0.691 63.158 -0.669 63.247 -0.617 c
-63.342 -0.569 63.423 -0.507 63.482 -0.426 c
-63.548 -0.349 63.6 -0.261 63.629 -0.162 c
-63.658 -0.056 63.673 0.059 63.673 0.177 c
-h
-68.807 1.47 m
-68.707 1.477 68.604 1.488 68.498 1.5 c
-68.388 1.517 68.267 1.529 68.13 1.529 c
-67.954 1.529 67.796 1.488 67.66 1.411 c
-67.521 1.341 67.403 1.242 67.307 1.118 c
-67.219 0.989 67.149 0.842 67.101 0.676 c
-67.061 0.507 67.043 0.331 67.043 0.147 c
-67.043 -1.264 l
-66.146 -1.264 l
-66.146 0.985 l
-66.146 1.11 66.135 1.235 66.117 1.353 c
-66.106 1.477 66.091 1.595 66.073 1.706 c
-66.062 1.823 66.047 1.918 66.029 1.999 c
-66.006 2.087 65.988 2.161 65.969 2.219 c
-66.852 2.219 l
-66.859 2.168 66.87 2.117 66.881 2.058 c
-66.9 1.999 66.914 1.933 66.925 1.866 c
-66.943 1.808 66.958 1.742 66.969 1.675 c
-66.977 1.606 66.987 1.544 66.999 1.484 c
-67.014 1.484 l
-67.05 1.602 67.101 1.708 67.16 1.808 c
-67.226 1.903 67.307 1.988 67.396 2.058 c
-67.484 2.124 67.586 2.179 67.704 2.219 c
-67.829 2.256 67.976 2.278 68.145 2.278 c
-68.27 2.278 68.388 2.271 68.498 2.263 c
-68.616 2.253 68.718 2.238 68.807 2.219 c
-h
-72.03 -1.264 m
-72.018 -1.246 72.007 -1.216 72 -1.176 c
-72 -1.128 71.993 -1.08 71.985 -1.029 c
-71.985 -0.97 71.978 -0.912 71.97 -0.852 c
-71.97 -0.691 l
-71.853 -0.926 71.71 -1.095 71.544 -1.191 c
-71.375 -1.278 71.176 -1.323 70.941 -1.323 c
-70.744 -1.323 70.567 -1.278 70.412 -1.191 c
-70.254 -1.103 70.122 -0.981 70.015 -0.823 c
-69.917 -0.658 69.84 -0.467 69.78 -0.25 c
-69.729 -0.037 69.707 0.206 69.707 0.47 c
-69.707 0.735 69.729 0.974 69.78 1.191 c
-69.84 1.415 69.917 1.606 70.015 1.764 c
-70.122 1.918 70.254 2.043 70.412 2.132 c
-70.578 2.227 70.769 2.278 70.985 2.278 c
-71.081 2.278 71.176 2.263 71.265 2.234 c
-71.361 2.213 71.456 2.179 71.544 2.132 c
-71.633 2.08 71.71 2.018 71.779 1.941 c
-71.857 1.86 71.92 1.768 71.97 1.661 c
-71.97 1.749 l
-71.97 1.897 l
-71.97 2.058 l
-71.97 2.234 l
-71.97 3.513 l
-72.867 3.513 l
-72.867 -0.5 l
-72.867 -0.676 72.871 -0.834 72.882 -0.97 c
-72.889 -1.099 72.897 -1.198 72.897 -1.264 c
-h
-71.985 0.485 m
-71.985 0.721 71.959 0.912 71.912 1.058 c
-71.872 1.213 71.816 1.338 71.75 1.426 c
-71.691 1.514 71.621 1.573 71.544 1.602 c
-71.463 1.639 71.386 1.661 71.309 1.661 c
-71.21 1.661 71.118 1.635 71.03 1.588 c
-70.949 1.548 70.883 1.477 70.824 1.382 c
-70.773 1.282 70.729 1.161 70.692 1.014 c
-70.663 0.867 70.648 0.684 70.648 0.47 c
-70.648 0.077 70.699 -0.216 70.809 -0.411 c
-70.927 -0.61 71.089 -0.706 71.294 -0.706 c
-71.371 -0.706 71.449 -0.687 71.529 -0.646 c
-71.606 -0.61 71.681 -0.544 71.75 -0.455 c
-71.816 -0.368 71.872 -0.246 71.912 -0.088 c
-71.959 0.066 71.985 0.257 71.985 0.485 c
-74.282 -2.631 m
-74.282 -2.014 l
-75.355 -2.014 l
-75.355 2.896 l
-74.282 2.896 l
-74.282 3.513 l
-76.207 3.513 l
-76.207 -2.631 l
-h
-82.789 -2.631 m
-82.789 3.513 l
-84.715 3.513 l
-84.715 2.896 l
-83.641 2.896 l
-83.641 -2.014 l
-84.715 -2.014 l
-84.715 -2.631 l
-h
-86.702 1.602 m
-86.159 1.602 l
-86.159 2.219 l
-86.747 2.219 l
-87.026 3.117 l
-87.599 3.117 l
-87.599 2.219 l
-88.834 2.219 l
-88.834 1.602 l
-87.599 1.602 l
-87.599 -0.103 l
-87.599 -0.324 l
-87.606 -0.393 87.629 -0.455 87.658 -0.515 c
-87.695 -0.566 87.75 -0.61 87.82 -0.646 c
-87.897 -0.676 88.011 -0.691 88.158 -0.691 c
-88.294 -0.691 88.43 -0.687 88.57 -0.676 c
-88.705 -0.658 88.838 -0.632 88.967 -0.603 c
-88.967 -1.205 l
-88.886 -1.216 88.809 -1.231 88.731 -1.249 c
-88.651 -1.261 88.573 -1.268 88.496 -1.278 c
-88.415 -1.286 88.327 -1.294 88.231 -1.294 c
-88.144 -1.301 88.044 -1.309 87.938 -1.309 c
-87.75 -1.309 87.588 -1.294 87.452 -1.264 c
-87.323 -1.228 87.209 -1.183 87.114 -1.132 c
-87.026 -1.084 86.953 -1.025 86.893 -0.956 c
-86.835 -0.879 86.791 -0.802 86.762 -0.721 c
-86.732 -0.632 86.71 -0.544 86.702 -0.455 c
-86.692 -0.36 86.688 -0.264 86.688 -0.176 c
-h
-91.116 -1.323 m
-90.947 -1.323 90.796 -1.301 90.66 -1.264 c
-90.532 -1.216 90.418 -1.147 90.322 -1.058 c
-90.234 -0.97 90.164 -0.864 90.116 -0.735 c
-90.065 -0.599 90.043 -0.449 90.043 -0.279 c
-90.043 -0.073 90.076 0.096 90.145 0.235 c
-90.212 0.382 90.307 0.492 90.425 0.573 c
-90.55 0.661 90.694 0.724 90.851 0.765 c
-91.017 0.801 91.193 0.827 91.381 0.838 c
-92.101 0.852 l
-92.101 1.029 l
-92.101 1.147 92.09 1.249 92.071 1.338 c
-92.049 1.426 92.017 1.492 91.969 1.544 c
-91.928 1.602 91.88 1.639 91.822 1.661 c
-91.763 1.679 91.697 1.69 91.631 1.69 c
-91.56 1.69 91.498 1.679 91.44 1.661 c
-91.388 1.65 91.34 1.625 91.292 1.588 c
-91.252 1.558 91.219 1.507 91.19 1.44 c
-91.167 1.382 91.153 1.301 91.145 1.205 c
-90.205 1.249 l
-90.234 1.396 90.278 1.532 90.337 1.661 c
-90.403 1.785 90.499 1.897 90.616 1.984 c
-90.734 2.08 90.874 2.153 91.043 2.205 c
-91.219 2.253 91.425 2.278 91.66 2.278 c
-92.101 2.278 92.431 2.168 92.659 1.955 c
-92.894 1.749 93.012 1.44 93.012 1.029 c
-93.012 -0.235 l
-93.012 -0.455 l
-93.019 -0.515 93.034 -0.569 93.056 -0.617 c
-93.075 -0.658 93.104 -0.691 93.145 -0.721 c
-93.181 -0.742 93.233 -0.75 93.291 -0.75 c
-93.358 -0.75 93.428 -0.746 93.497 -0.735 c
-93.497 -1.22 l
-93.438 -1.231 93.383 -1.242 93.335 -1.249 c
-93.295 -1.261 93.255 -1.268 93.218 -1.278 c
-93.177 -1.286 93.133 -1.294 93.086 -1.294 c
-93.034 -1.301 92.975 -1.309 92.909 -1.309 c
-92.682 -1.309 92.516 -1.257 92.41 -1.147 c
-92.3 -1.029 92.237 -0.864 92.219 -0.646 c
-92.204 -0.646 l
-92.134 -0.757 92.065 -0.852 91.998 -0.941 c
-91.928 -1.022 91.851 -1.087 91.763 -1.147 c
-91.675 -1.205 91.575 -1.249 91.469 -1.278 c
-91.369 -1.309 91.252 -1.323 91.116 -1.323 c
-92.101 0.353 m
-91.675 0.338 l
-91.575 0.338 91.483 0.331 91.396 0.324 c
-91.315 0.312 91.248 0.287 91.19 0.25 c
-91.13 0.21 91.08 0.15 91.043 0.073 c
-91.002 0.004 90.984 -0.088 90.984 -0.206 c
-90.984 -0.374 91.017 -0.496 91.086 -0.573 c
-91.153 -0.654 91.252 -0.691 91.381 -0.691 c
-91.487 -0.691 91.587 -0.669 91.675 -0.617 c
-91.77 -0.569 91.851 -0.507 91.91 -0.426 c
-91.976 -0.349 92.027 -0.261 92.057 -0.162 c
-92.086 -0.056 92.101 0.059 92.101 0.177 c
-h
-97.235 1.47 m
-97.135 1.477 97.033 1.488 96.926 1.5 c
-96.815 1.517 96.694 1.529 96.558 1.529 c
-96.382 1.529 96.224 1.488 96.088 1.411 c
-95.948 1.341 95.83 1.242 95.735 1.118 c
-95.647 0.989 95.577 0.842 95.529 0.676 c
-95.489 0.507 95.471 0.331 95.471 0.147 c
-95.471 -1.264 l
-94.574 -1.264 l
-94.574 0.985 l
-94.574 1.11 94.563 1.235 94.544 1.353 c
-94.534 1.477 94.519 1.595 94.5 1.706 c
-94.49 1.823 94.475 1.918 94.457 1.999 c
-94.434 2.087 94.416 2.161 94.398 2.219 c
-95.28 2.219 l
-95.287 2.168 95.298 2.117 95.309 2.058 c
-95.327 1.999 95.342 1.933 95.353 1.866 c
-95.371 1.808 95.386 1.742 95.398 1.675 c
-95.404 1.606 95.415 1.544 95.427 1.484 c
-95.441 1.484 l
-95.478 1.602 95.529 1.708 95.589 1.808 c
-95.654 1.903 95.735 1.988 95.824 2.058 c
-95.911 2.124 96.015 2.179 96.132 2.219 c
-96.257 2.256 96.404 2.278 96.573 2.278 c
-96.698 2.278 96.815 2.271 96.926 2.263 c
-97.044 2.253 97.146 2.238 97.235 2.219 c
-h
-99.814 -2.66 m
-99.597 -2.66 99.406 -2.635 99.24 -2.587 c
-99.072 -2.547 98.932 -2.485 98.814 -2.396 c
-98.697 -2.315 98.598 -2.219 98.521 -2.102 c
-98.451 -1.984 98.403 -1.856 98.374 -1.72 c
-99.271 -1.617 l
-99.307 -1.753 99.377 -1.86 99.476 -1.94 c
-99.572 -2.028 99.697 -2.072 99.844 -2.072 c
-99.932 -2.072 100.013 -2.057 100.094 -2.028 c
-100.171 -1.999 100.24 -1.944 100.299 -1.866 c
-100.358 -1.797 100.402 -1.705 100.431 -1.587 c
-100.468 -1.469 100.491 -1.323 100.491 -1.147 c
-100.491 -0.956 l
-100.491 -0.889 100.494 -0.831 100.505 -0.779 c
-100.505 -0.588 l
-100.491 -0.588 l
-100.391 -0.816 100.248 -0.977 100.064 -1.073 c
-99.876 -1.172 99.671 -1.22 99.447 -1.22 c
-99.24 -1.22 99.057 -1.183 98.903 -1.103 c
-98.756 -1.014 98.627 -0.897 98.521 -0.75 c
-98.421 -0.596 98.348 -0.411 98.3 -0.206 c
-98.249 0.008 98.226 0.243 98.226 0.5 c
-98.226 0.771 98.249 1.018 98.3 1.235 c
-98.359 1.448 98.44 1.631 98.55 1.779 c
-98.656 1.933 98.789 2.051 98.947 2.132 c
-99.101 2.219 99.288 2.263 99.506 2.263 c
-99.601 2.263 99.701 2.253 99.799 2.234 c
-99.895 2.213 99.984 2.179 100.064 2.132 c
-100.152 2.08 100.229 2.018 100.299 1.941 c
-100.377 1.86 100.439 1.768 100.491 1.661 c
-100.505 1.661 l
-100.505 1.808 l
-100.512 1.866 100.52 1.918 100.52 1.97 c
-100.527 2.028 100.534 2.076 100.534 2.117 c
-100.542 2.165 100.553 2.198 100.564 2.219 c
-101.416 2.219 l
-101.405 2.138 101.395 2.028 101.387 1.881 c
-101.387 1.411 l
-101.387 -1.161 l
-101.387 -1.415 101.351 -1.635 101.284 -1.822 c
-101.214 -2.007 101.112 -2.161 100.975 -2.278 c
-100.836 -2.404 100.67 -2.499 100.476 -2.558 c
-100.277 -2.624 100.057 -2.66 99.814 -2.66 c
-100.505 0.53 m
-100.505 0.742 100.479 0.919 100.431 1.058 c
-100.391 1.205 100.336 1.323 100.27 1.411 c
-100.211 1.5 100.142 1.558 100.064 1.588 c
-99.984 1.625 99.907 1.646 99.828 1.646 c
-99.73 1.646 99.637 1.621 99.55 1.573 c
-99.469 1.532 99.402 1.463 99.344 1.367 c
-99.292 1.278 99.248 1.161 99.211 1.014 c
-99.182 0.875 99.167 0.706 99.167 0.5 c
-99.167 0.125 99.226 -0.154 99.344 -0.338 c
-99.462 -0.515 99.623 -0.603 99.828 -0.603 c
-99.895 -0.603 99.969 -0.588 100.049 -0.559 c
-100.138 -0.522 100.211 -0.463 100.27 -0.382 c
-100.336 -0.294 100.391 -0.176 100.431 -0.029 c
-100.479 0.118 100.505 0.301 100.505 0.53 c
-103.905 -1.323 m
-103.647 -1.323 103.419 -1.286 103.213 -1.22 c
-103.007 -1.143 102.831 -1.029 102.685 -0.882 c
-102.537 -0.727 102.419 -0.536 102.332 -0.309 c
-102.251 -0.085 102.214 0.18 102.214 0.485 c
-102.214 0.816 102.258 1.095 102.346 1.323 c
-102.442 1.558 102.571 1.742 102.729 1.881 c
-102.893 2.018 103.081 2.117 103.287 2.176 c
-103.493 2.242 103.702 2.278 103.919 2.278 c
-104.191 2.278 104.426 2.227 104.624 2.132 c
-104.83 2.043 104.996 1.911 105.124 1.735 c
-105.26 1.565 105.359 1.359 105.418 1.118 c
-105.484 0.882 105.521 0.617 105.521 0.324 c
-105.521 0.309 l
-103.155 0.309 l
-103.155 0.162 103.169 0.022 103.199 -0.103 c
-103.236 -0.231 103.29 -0.345 103.36 -0.441 c
-103.427 -0.529 103.511 -0.599 103.61 -0.646 c
-103.706 -0.698 103.82 -0.721 103.948 -0.721 c
-104.102 -0.721 104.242 -0.687 104.36 -0.617 c
-104.485 -0.551 104.573 -0.449 104.624 -0.309 c
-105.463 -0.382 l
-105.432 -0.482 105.378 -0.588 105.301 -0.706 c
-105.22 -0.816 105.117 -0.919 104.992 -1.014 c
-104.875 -1.103 104.72 -1.176 104.536 -1.234 c
-104.36 -1.294 104.146 -1.323 103.905 -1.323 c
-103.905 1.706 m
-103.816 1.706 103.728 1.69 103.639 1.661 c
-103.551 1.631 103.471 1.58 103.404 1.514 c
-103.335 1.444 103.276 1.356 103.228 1.249 c
-103.188 1.139 103.169 1.014 103.169 0.867 c
-104.639 0.867 l
-104.639 1.003 104.613 1.124 104.566 1.235 c
-104.526 1.341 104.47 1.43 104.404 1.5 c
-104.345 1.565 104.272 1.617 104.183 1.646 c
-104.096 1.683 104 1.706 103.905 1.706 c
-107.009 1.602 m
-106.465 1.602 l
-106.465 2.219 l
-107.053 2.219 l
-107.333 3.117 l
-107.906 3.117 l
-107.906 2.219 l
-109.141 2.219 l
-109.141 1.602 l
-107.906 1.602 l
-107.906 -0.103 l
-107.906 -0.324 l
-107.913 -0.393 107.936 -0.455 107.965 -0.515 c
-108.002 -0.566 108.057 -0.61 108.127 -0.646 c
-108.204 -0.676 108.318 -0.691 108.464 -0.691 c
-108.601 -0.691 108.736 -0.687 108.876 -0.676 c
-109.012 -0.658 109.145 -0.632 109.273 -0.603 c
-109.273 -1.205 l
-109.193 -1.216 109.115 -1.231 109.038 -1.249 c
-108.957 -1.261 108.88 -1.268 108.803 -1.278 c
-108.722 -1.286 108.634 -1.294 108.538 -1.294 c
-108.45 -1.301 108.351 -1.309 108.244 -1.309 c
-108.057 -1.309 107.895 -1.294 107.759 -1.264 c
-107.63 -1.228 107.516 -1.183 107.421 -1.132 c
-107.333 -1.084 107.259 -1.025 107.2 -0.956 c
-107.142 -0.879 107.098 -0.802 107.068 -0.721 c
-107.039 -0.632 107.017 -0.544 107.009 -0.455 c
-106.999 -0.36 106.995 -0.264 106.995 -0.176 c
-h
-117.542 1.47 m
-117.442 1.477 117.339 1.488 117.232 1.5 c
-117.122 1.517 117.001 1.529 116.865 1.529 c
-116.688 1.529 116.53 1.488 116.395 1.411 c
-116.255 1.341 116.137 1.242 116.042 1.118 c
-115.954 0.989 115.884 0.842 115.836 0.676 c
-115.796 0.507 115.778 0.331 115.778 0.147 c
-115.778 -1.264 l
-114.88 -1.264 l
-114.88 0.985 l
-114.88 1.11 114.87 1.235 114.851 1.353 c
-114.84 1.477 114.826 1.595 114.807 1.706 c
-114.797 1.823 114.781 1.918 114.763 1.999 c
-114.741 2.087 114.723 2.161 114.704 2.219 c
-115.586 2.219 l
-115.593 2.168 115.605 2.117 115.616 2.058 c
-115.634 1.999 115.649 1.933 115.66 1.866 c
-115.678 1.808 115.693 1.742 115.703 1.675 c
-115.711 1.606 115.722 1.544 115.734 1.484 c
-115.748 1.484 l
-115.784 1.602 115.836 1.708 115.895 1.808 c
-115.961 1.903 116.042 1.988 116.13 2.058 c
-116.218 2.124 116.321 2.179 116.439 2.219 c
-116.564 2.256 116.711 2.278 116.879 2.278 c
-117.004 2.278 117.122 2.271 117.232 2.263 c
-117.35 2.253 117.453 2.238 117.542 2.219 c
-h
-120.15 -1.323 m
-119.893 -1.323 119.665 -1.286 119.46 -1.22 c
-119.254 -1.143 119.077 -1.029 118.93 -0.882 c
-118.783 -0.727 118.666 -0.536 118.577 -0.309 c
-118.496 -0.085 118.46 0.18 118.46 0.485 c
-118.46 0.816 118.504 1.095 118.592 1.323 c
-118.687 1.558 118.816 1.742 118.974 1.881 c
-119.14 2.018 119.327 2.117 119.533 2.176 c
-119.739 2.242 119.948 2.278 120.165 2.278 c
-120.437 2.278 120.672 2.227 120.871 2.132 c
-121.076 2.043 121.242 1.911 121.37 1.735 c
-121.506 1.565 121.606 1.359 121.664 1.118 c
-121.731 0.882 121.767 0.617 121.767 0.324 c
-121.767 0.309 l
-119.401 0.309 l
-119.401 0.162 119.416 0.022 119.445 -0.103 c
-119.481 -0.231 119.537 -0.345 119.607 -0.441 c
-119.672 -0.529 119.757 -0.599 119.857 -0.646 c
-119.952 -0.698 120.066 -0.721 120.195 -0.721 c
-120.349 -0.721 120.488 -0.687 120.606 -0.617 c
-120.731 -0.551 120.819 -0.449 120.871 -0.309 c
-121.708 -0.382 l
-121.679 -0.482 121.624 -0.588 121.546 -0.706 c
-121.465 -0.816 121.363 -0.919 121.238 -1.014 c
-121.12 -1.103 120.966 -1.176 120.782 -1.234 c
-120.606 -1.294 120.393 -1.323 120.15 -1.323 c
-120.15 1.706 m
-120.062 1.706 119.974 1.69 119.886 1.661 c
-119.798 1.631 119.717 1.58 119.651 1.514 c
-119.581 1.444 119.522 1.356 119.474 1.249 c
-119.433 1.139 119.416 1.014 119.416 0.867 c
-120.885 0.867 l
-120.885 1.003 120.86 1.124 120.812 1.235 c
-120.771 1.341 120.717 1.43 120.65 1.5 c
-120.591 1.565 120.518 1.617 120.43 1.646 c
-120.341 1.683 120.246 1.706 120.15 1.706 c
-124.299 1.602 m
-124.299 -1.264 l
-123.402 -1.264 l
-123.402 1.602 l
-122.579 1.602 l
-122.579 2.219 l
-123.402 2.219 l
-123.402 2.484 l
-123.402 2.609 123.417 2.741 123.447 2.881 c
-123.483 3.017 123.553 3.135 123.653 3.234 c
-123.759 3.341 123.902 3.429 124.079 3.499 c
-124.255 3.564 124.48 3.601 124.755 3.601 c
-124.968 3.601 125.166 3.59 125.343 3.572 c
-125.519 3.549 125.67 3.532 125.798 3.513 c
-125.798 2.925 l
-125.67 2.944 125.527 2.959 125.372 2.969 c
-125.214 2.977 125.064 2.984 124.916 2.984 c
-124.788 2.984 124.685 2.969 124.608 2.94 c
-124.527 2.911 124.465 2.87 124.417 2.822 c
-124.366 2.77 124.332 2.708 124.314 2.631 c
-124.303 2.562 124.299 2.484 124.299 2.396 c
-124.299 2.219 l
-125.725 2.219 l
-125.725 1.602 l
-h
-128.272 -1.323 m
-128.014 -1.323 127.786 -1.286 127.58 -1.22 c
-127.375 -1.143 127.198 -1.029 127.052 -0.882 c
-126.905 -0.727 126.787 -0.536 126.699 -0.309 c
-126.618 -0.085 126.581 0.18 126.581 0.485 c
-126.581 0.816 126.625 1.095 126.714 1.323 c
-126.809 1.558 126.938 1.742 127.096 1.881 c
-127.261 2.018 127.449 2.117 127.655 2.176 c
-127.86 2.242 128.069 2.278 128.286 2.278 c
-128.559 2.278 128.794 2.227 128.991 2.132 c
-129.197 2.043 129.363 1.911 129.492 1.735 c
-129.627 1.565 129.727 1.359 129.785 1.118 c
-129.852 0.882 129.889 0.617 129.889 0.324 c
-129.889 0.309 l
-127.522 0.309 l
-127.522 0.162 127.537 0.022 127.566 -0.103 c
-127.603 -0.231 127.658 -0.345 127.728 -0.441 c
-127.794 -0.529 127.878 -0.599 127.977 -0.646 c
-128.073 -0.698 128.187 -0.721 128.316 -0.721 c
-128.47 -0.721 128.609 -0.687 128.727 -0.617 c
-128.852 -0.551 128.941 -0.449 128.991 -0.309 c
-129.83 -0.382 l
-129.8 -0.482 129.745 -0.588 129.668 -0.706 c
-129.587 -0.816 129.484 -0.919 129.359 -1.014 c
-129.242 -1.103 129.087 -1.176 128.904 -1.234 c
-128.727 -1.294 128.514 -1.323 128.272 -1.323 c
-128.272 1.706 m
-128.183 1.706 128.095 1.69 128.007 1.661 c
-127.919 1.631 127.838 1.58 127.772 1.514 c
-127.702 1.444 127.643 1.356 127.595 1.249 c
-127.555 1.139 127.537 1.014 127.537 0.867 c
-129.006 0.867 l
-129.006 1.003 128.981 1.124 128.933 1.235 c
-128.893 1.341 128.837 1.43 128.771 1.5 c
-128.713 1.565 128.639 1.617 128.551 1.646 c
-128.463 1.683 128.367 1.706 128.272 1.706 c
-133.787 1.47 m
-133.688 1.477 133.585 1.488 133.479 1.5 c
-133.369 1.517 133.247 1.529 133.111 1.529 c
-132.935 1.529 132.777 1.488 132.641 1.411 c
-132.501 1.341 132.384 1.242 132.288 1.118 c
-132.2 0.989 132.13 0.842 132.083 0.676 c
-132.042 0.507 132.023 0.331 132.023 0.147 c
-132.023 -1.264 l
-131.127 -1.264 l
-131.127 0.985 l
-131.127 1.11 131.116 1.235 131.098 1.353 c
-131.086 1.477 131.071 1.595 131.053 1.706 c
-131.042 1.823 131.028 1.918 131.009 1.999 c
-130.988 2.087 130.969 2.161 130.951 2.219 c
-131.832 2.219 l
-131.84 2.168 131.851 2.117 131.862 2.058 c
-131.88 1.999 131.895 1.933 131.906 1.866 c
-131.925 1.808 131.939 1.742 131.95 1.675 c
-131.958 1.606 131.969 1.544 131.979 1.484 c
-131.994 1.484 l
-132.031 1.602 132.083 1.708 132.141 1.808 c
-132.207 1.903 132.288 1.988 132.376 2.058 c
-132.465 2.124 132.567 2.179 132.685 2.219 c
-132.81 2.256 132.957 2.278 133.126 2.278 c
-133.251 2.278 133.369 2.271 133.479 2.263 c
-133.596 2.253 133.699 2.238 133.787 2.219 c
-h
-136.393 -1.323 m
-136.135 -1.323 135.908 -1.286 135.702 -1.22 c
-135.497 -1.143 135.32 -1.029 135.173 -0.882 c
-135.026 -0.727 134.909 -0.536 134.82 -0.309 c
-134.739 -0.085 134.703 0.18 134.703 0.485 c
-134.703 0.816 134.747 1.095 134.834 1.323 c
-134.93 1.558 135.059 1.742 135.217 1.881 c
-135.382 2.018 135.57 2.117 135.775 2.176 c
-135.981 2.242 136.191 2.278 136.407 2.278 c
-136.679 2.278 136.914 2.227 137.113 2.132 c
-137.319 2.043 137.484 1.911 137.613 1.735 c
-137.749 1.565 137.848 1.359 137.907 1.118 c
-137.973 0.882 138.009 0.617 138.009 0.324 c
-138.009 0.309 l
-135.643 0.309 l
-135.643 0.162 135.657 0.022 135.688 -0.103 c
-135.724 -0.231 135.779 -0.345 135.849 -0.441 c
-135.915 -0.529 136 -0.599 136.099 -0.646 c
-136.195 -0.698 136.308 -0.721 136.437 -0.721 c
-136.592 -0.721 136.731 -0.687 136.848 -0.617 c
-136.974 -0.551 137.062 -0.449 137.113 -0.309 c
-137.951 -0.382 l
-137.922 -0.482 137.866 -0.588 137.789 -0.706 c
-137.708 -0.816 137.606 -0.919 137.481 -1.014 c
-137.363 -1.103 137.209 -1.176 137.025 -1.234 c
-136.848 -1.294 136.635 -1.323 136.393 -1.323 c
-136.393 1.706 m
-136.305 1.706 136.216 1.69 136.128 1.661 c
-136.04 1.631 135.959 1.58 135.893 1.514 c
-135.823 1.444 135.765 1.356 135.717 1.249 c
-135.676 1.139 135.657 1.014 135.657 0.867 c
-137.128 0.867 l
-137.128 1.003 137.102 1.124 137.054 1.235 c
-137.014 1.341 136.958 1.43 136.893 1.5 c
-136.833 1.565 136.76 1.617 136.672 1.646 c
-136.584 1.683 136.488 1.706 136.393 1.706 c
-141.089 -1.264 m
-141.089 0.721 l
-141.089 1.022 141.045 1.242 140.957 1.382 c
-140.876 1.529 140.74 1.602 140.546 1.602 c
-140.435 1.602 140.332 1.577 140.237 1.529 c
-140.149 1.477 140.068 1.411 140.002 1.323 c
-139.943 1.235 139.891 1.124 139.854 1 c
-139.825 0.882 139.81 0.75 139.81 0.603 c
-139.81 -1.264 l
-138.899 -1.264 l
-138.899 1.44 l
-138.899 1.661 l
-138.899 1.749 138.892 1.826 138.884 1.897 c
-138.884 2.087 l
-138.884 2.219 l
-139.737 2.219 l
-139.744 2.19 139.752 2.146 139.752 2.087 c
-139.752 1.897 l
-139.759 1.826 139.767 1.756 139.767 1.69 c
-139.773 1.621 139.781 1.565 139.781 1.529 c
-139.796 1.529 l
-139.913 1.793 140.064 1.984 140.251 2.102 c
-140.435 2.219 140.656 2.278 140.912 2.278 c
-141.097 2.278 141.259 2.249 141.398 2.19 c
-141.534 2.132 141.648 2.043 141.736 1.926 c
-141.824 1.808 141.886 1.665 141.927 1.5 c
-141.975 1.341 142.001 1.154 142.001 0.941 c
-142.001 -1.264 l
-h
-144.517 -1.323 m
-144.231 -1.323 143.989 -1.282 143.783 -1.205 c
-143.577 -1.117 143.404 -0.996 143.268 -0.838 c
-143.129 -0.684 143.025 -0.496 142.959 -0.279 c
-142.89 -0.056 142.857 0.191 142.857 0.455 c
-142.857 0.75 142.89 1.007 142.959 1.235 c
-143.037 1.459 143.143 1.646 143.283 1.793 c
-143.43 1.947 143.607 2.065 143.812 2.146 c
-144.018 2.234 144.253 2.278 144.517 2.278 c
-144.742 2.278 144.943 2.249 145.12 2.19 c
-145.297 2.132 145.448 2.047 145.576 1.941 c
-145.701 1.841 145.804 1.72 145.884 1.573 c
-145.962 1.433 146.017 1.282 146.046 1.118 c
-145.135 1.073 l
-145.105 1.249 145.036 1.389 144.929 1.5 c
-144.83 1.606 144.687 1.661 144.503 1.661 c
-144.257 1.661 144.081 1.558 143.974 1.353 c
-143.864 1.154 143.812 0.867 143.812 0.485 c
-143.812 -0.309 144.047 -0.706 144.517 -0.706 c
-144.683 -0.706 144.827 -0.654 144.943 -0.544 c
-145.062 -0.437 145.135 -0.276 145.165 -0.058 c
-146.076 -0.103 l
-146.046 -0.272 145.991 -0.426 145.914 -0.573 c
-145.845 -0.721 145.741 -0.852 145.606 -0.97 c
-145.477 -1.08 145.319 -1.168 145.135 -1.234 c
-144.959 -1.294 144.753 -1.323 144.517 -1.323 c
-148.578 -1.323 m
-148.321 -1.323 148.093 -1.286 147.887 -1.22 c
-147.682 -1.143 147.505 -1.029 147.358 -0.882 c
-147.212 -0.727 147.094 -0.536 147.006 -0.309 c
-146.925 -0.085 146.888 0.18 146.888 0.485 c
-146.888 0.816 146.932 1.095 147.021 1.323 c
-147.116 1.558 147.245 1.742 147.403 1.881 c
-147.568 2.018 147.755 2.117 147.961 2.176 c
-148.166 2.242 148.376 2.278 148.593 2.278 c
-148.865 2.278 149.1 2.227 149.298 2.132 c
-149.504 2.043 149.67 1.911 149.799 1.735 c
-149.934 1.565 150.034 1.359 150.092 1.118 c
-150.158 0.882 150.196 0.617 150.196 0.324 c
-150.196 0.309 l
-147.829 0.309 l
-147.829 0.162 147.844 0.022 147.873 -0.103 c
-147.91 -0.231 147.964 -0.345 148.035 -0.441 c
-148.101 -0.529 148.185 -0.599 148.284 -0.646 c
-148.38 -0.698 148.494 -0.721 148.623 -0.721 c
-148.777 -0.721 148.916 -0.687 149.034 -0.617 c
-149.159 -0.551 149.247 -0.449 149.298 -0.309 c
-150.136 -0.382 l
-150.107 -0.482 150.052 -0.588 149.975 -0.706 c
-149.894 -0.816 149.791 -0.919 149.666 -1.014 c
-149.548 -1.103 149.394 -1.176 149.211 -1.234 c
-149.034 -1.294 148.821 -1.323 148.578 -1.323 c
-148.578 1.706 m
-148.49 1.706 148.402 1.69 148.314 1.661 c
-148.226 1.631 148.145 1.58 148.079 1.514 c
-148.008 1.444 147.95 1.356 147.902 1.249 c
-147.862 1.139 147.844 1.014 147.844 0.867 c
-149.313 0.867 l
-149.313 1.003 149.288 1.124 149.24 1.235 c
-149.199 1.341 149.144 1.43 149.078 1.5 c
-149.02 1.565 148.945 1.617 148.858 1.646 c
-148.769 1.683 148.674 1.706 148.578 1.706 c
-151.449 -2.631 m
-151.449 -2.014 l
-152.521 -2.014 l
-152.521 2.896 l
-151.449 2.896 l
-151.449 3.513 l
-153.373 3.513 l
-153.373 -2.631 l
-h
-f
-Q
-q 1 0 0 1 296.7449 285.9641 cm
-0 0 m
-0 0.264 -0.073 0.463 -0.22 0.602 c
--0.36 0.75 -0.617 0.889 -0.999 1.028 c
--1.374 1.165 -1.661 1.308 -1.866 1.455 c
--2.065 1.602 -2.212 1.768 -2.308 1.955 c
--2.407 2.15 -2.454 2.37 -2.454 2.616 c
--2.454 3.035 -2.315 3.384 -2.028 3.659 c
--1.745 3.931 -1.378 4.072 -0.926 4.072 c
--0.613 4.072 -0.334 3.998 -0.088 3.85 c
-0.154 3.711 0.341 3.516 0.47 3.262 c
-0.607 3.017 0.676 2.749 0.676 2.454 c
-0 2.454 l
-0 2.786 -0.081 3.042 -0.235 3.219 c
--0.393 3.403 -0.625 3.498 -0.926 3.498 c
--1.191 3.498 -1.404 3.417 -1.558 3.262 c
--1.705 3.116 -1.779 2.903 -1.779 2.631 c
--1.779 2.403 -1.702 2.212 -1.544 2.057 c
--1.378 1.911 -1.124 1.77 -0.779 1.646 c
--0.261 1.477 0.11 1.267 0.338 1.014 c
-0.573 0.756 0.69 0.426 0.69 0.014 c
-0.69 -0.426 0.548 -0.779 0.264 -1.044 c
--0.022 -1.301 -0.405 -1.426 -0.882 -1.426 c
--1.198 -1.426 -1.484 -1.357 -1.749 -1.22 c
--2.014 -1.085 -2.227 -0.894 -2.381 -0.647 c
--2.528 -0.405 -2.602 -0.118 -2.602 0.205 c
--1.926 0.205 l
--1.926 -0.129 -1.834 -0.389 -1.646 -0.574 c
--1.463 -0.761 -1.205 -0.853 -0.882 -0.853 c
--0.588 -0.853 -0.368 -0.779 -0.22 -0.632 c
--0.073 -0.478 0 -0.265 0 0 c
-4.439 -0.206 m
-5.041 2.631 l
-5.689 2.631 l
-4.704 -1.353 l
-4.189 -1.353 l
-3.41 1.499 l
-2.66 -1.353 l
-2.132 -1.353 l
-1.176 2.631 l
-1.808 2.631 l
-2.425 -0.133 l
-3.16 2.631 l
-3.675 2.631 l
-h
-7.071 -1.353 -0.647 3.984 re
-7.115 3.675 m
-7.115 3.564 7.085 3.472 7.026 3.395 c
-6.967 3.326 6.872 3.293 6.747 3.293 c
-6.629 3.293 6.533 3.326 6.468 3.395 c
-6.409 3.472 6.379 3.564 6.379 3.675 c
-6.379 3.792 6.409 3.884 6.468 3.954 c
-6.533 4.031 6.629 4.072 6.747 4.072 c
-6.872 4.072 6.967 4.031 7.026 3.954 c
-7.085 3.873 7.115 3.781 7.115 3.675 c
-8.937 3.586 m
-8.937 2.631 l
-9.54 2.631 l
-9.54 2.102 l
-8.937 2.102 l
-8.937 -0.368 l
-8.937 -0.526 8.96 -0.643 9.01 -0.721 c
-9.07 -0.802 9.157 -0.838 9.275 -0.838 c
-9.363 -0.838 9.452 -0.823 9.54 -0.794 c
-9.54 -1.353 l
-9.392 -1.401 9.238 -1.426 9.084 -1.426 c
-8.827 -1.426 8.632 -1.334 8.496 -1.147 c
-8.357 -0.963 8.291 -0.702 8.291 -0.368 c
-8.291 2.102 l
-7.688 2.102 l
-7.688 2.631 l
-8.291 2.631 l
-8.291 3.586 l
-h
-11.686 -0.867 m
-11.899 -0.867 12.072 -0.805 12.2 -0.676 c
-12.336 -0.541 12.409 -0.349 12.421 -0.103 c
-13.038 -0.103 l
-13.016 -0.485 12.88 -0.805 12.627 -1.058 c
-12.37 -1.305 12.057 -1.426 11.686 -1.426 c
-11.194 -1.426 10.818 -1.276 10.554 -0.971 c
-10.296 -0.659 10.172 -0.191 10.172 0.426 c
-10.172 0.867 l
-10.172 1.462 10.296 1.918 10.554 2.234 c
-10.818 2.547 11.194 2.705 11.686 2.705 c
-12.087 2.705 12.406 2.572 12.642 2.308 c
-12.883 2.05 13.016 1.705 13.038 1.263 c
-12.421 1.263 l
-12.399 1.558 12.326 1.778 12.2 1.926 c
-12.083 2.072 11.91 2.146 11.686 2.146 c
-11.391 2.146 11.175 2.046 11.039 1.851 c
-10.899 1.664 10.826 1.356 10.818 0.926 c
-10.818 0.411 l
-10.818 -0.059 10.884 -0.393 11.025 -0.588 c
-11.171 -0.776 11.391 -0.867 11.686 -0.867 c
-14.435 2.219 m
-14.688 2.543 15.008 2.705 15.39 2.705 c
-16.095 2.705 16.452 2.234 16.463 1.294 c
-16.463 -1.353 l
-15.817 -1.353 l
-15.817 1.263 l
-15.817 1.576 15.761 1.797 15.655 1.926 c
-15.545 2.05 15.39 2.117 15.184 2.117 c
-15.026 2.117 14.88 2.061 14.743 1.955 c
-14.614 1.845 14.512 1.708 14.435 1.543 c
-14.435 -1.353 l
-13.787 -1.353 l
-13.787 4.292 l
-14.435 4.292 l
-h
-20.52 -0.867 m
-20.733 -0.867 20.906 -0.805 21.034 -0.676 c
-21.17 -0.541 21.244 -0.349 21.255 -0.103 c
-21.872 -0.103 l
-21.851 -0.485 21.714 -0.805 21.461 -1.058 c
-21.203 -1.305 20.891 -1.426 20.52 -1.426 c
-20.027 -1.426 19.653 -1.276 19.388 -0.971 c
-19.131 -0.659 19.006 -0.191 19.006 0.426 c
-19.006 0.867 l
-19.006 1.462 19.131 1.918 19.388 2.234 c
-19.653 2.547 20.027 2.705 20.52 2.705 c
-20.92 2.705 21.24 2.572 21.475 2.308 c
-21.718 2.05 21.851 1.705 21.872 1.263 c
-21.255 1.263 l
-21.232 1.558 21.159 1.778 21.034 1.926 c
-20.916 2.072 20.744 2.146 20.52 2.146 c
-20.226 2.146 20.009 2.046 19.873 1.851 c
-19.734 1.664 19.66 1.356 19.653 0.926 c
-19.653 0.411 l
-19.653 -0.059 19.719 -0.393 19.858 -0.588 c
-20.006 -0.776 20.226 -0.867 20.52 -0.867 c
-24.65 -1 m
-24.434 -1.287 24.121 -1.426 23.709 -1.426 c
-23.346 -1.426 23.071 -1.305 22.886 -1.058 c
-22.71 -0.805 22.614 -0.441 22.607 0.029 c
-22.607 2.631 l
-23.254 2.631 l
-23.254 0.087 l
-23.254 -0.541 23.438 -0.853 23.813 -0.853 c
-24.213 -0.853 24.488 -0.676 24.636 -0.324 c
-24.636 2.631 l
-25.282 2.631 l
-25.282 -1.353 l
-24.665 -1.353 l
-h
-27.914 2.013 m
-27.825 2.032 27.726 2.043 27.619 2.043 c
-27.285 2.043 27.05 1.859 26.914 1.499 c
-26.914 -1.353 l
-26.267 -1.353 l
-26.267 2.631 l
-26.899 2.631 l
-26.914 2.219 l
-27.09 2.543 27.333 2.705 27.649 2.705 c
-27.756 2.705 27.844 2.682 27.914 2.645 c
-h
-30.206 2.013 m
-30.119 2.032 30.019 2.043 29.913 2.043 c
-29.578 2.043 29.343 1.859 29.207 1.499 c
-29.207 -1.353 l
-28.56 -1.353 l
-28.56 2.631 l
-29.192 2.631 l
-29.207 2.219 l
-29.383 2.543 29.626 2.705 29.942 2.705 c
-30.048 2.705 30.137 2.682 30.206 2.645 c
-h
-32.205 -1.426 m
-31.706 -1.426 31.324 -1.279 31.059 -0.985 c
-30.794 -0.691 30.662 -0.258 30.662 0.323 c
-30.662 0.793 l
-30.662 1.389 30.788 1.855 31.044 2.19 c
-31.309 2.532 31.669 2.705 32.132 2.705 c
-32.592 2.705 32.933 2.55 33.161 2.248 c
-33.396 1.955 33.518 1.492 33.529 0.867 c
-33.529 0.44 l
-31.309 0.44 l
-31.309 0.353 l
-31.309 -0.081 31.386 -0.393 31.544 -0.588 c
-31.71 -0.776 31.941 -0.867 32.235 -0.867 c
-32.43 -0.867 32.602 -0.834 32.75 -0.765 c
-32.897 -0.688 33.032 -0.57 33.161 -0.412 c
-33.499 -0.823 l
-33.213 -1.228 32.783 -1.426 32.205 -1.426 c
-32.132 2.146 m
-31.856 2.146 31.655 2.05 31.53 1.866 c
-31.401 1.679 31.328 1.389 31.309 0.999 c
-32.882 0.999 l
-32.882 1.087 l
-32.86 1.469 32.793 1.738 32.676 1.896 c
-32.558 2.061 32.375 2.146 32.132 2.146 c
-34.925 2.631 m
-34.94 2.19 l
-35.193 2.532 35.517 2.705 35.91 2.705 c
-36.615 2.705 36.972 2.234 36.983 1.294 c
-36.983 -1.353 l
-36.336 -1.353 l
-36.336 1.263 l
-36.336 1.576 36.281 1.797 36.174 1.926 c
-36.064 2.05 35.91 2.117 35.704 2.117 c
-35.546 2.117 35.399 2.061 35.263 1.955 c
-35.135 1.845 35.031 1.708 34.954 1.543 c
-34.954 -1.353 l
-34.308 -1.353 l
-34.308 2.631 l
-h
-38.805 3.586 m
-38.805 2.631 l
-39.409 2.631 l
-39.409 2.102 l
-38.805 2.102 l
-38.805 -0.368 l
-38.805 -0.526 38.828 -0.643 38.879 -0.721 c
-38.938 -0.802 39.026 -0.838 39.143 -0.838 c
-39.232 -0.838 39.32 -0.823 39.409 -0.794 c
-39.409 -1.353 l
-39.261 -1.401 39.107 -1.426 38.952 -1.426 c
-38.695 -1.426 38.501 -1.334 38.364 -1.147 c
-38.225 -0.963 38.159 -0.702 38.159 -0.368 c
-38.159 2.102 l
-37.556 2.102 l
-37.556 2.631 l
-38.159 2.631 l
-38.159 3.586 l
-h
-44.774 0.44 m
-44.774 -0.177 44.66 -0.643 44.435 -0.956 c
-44.219 -1.272 43.895 -1.426 43.465 -1.426 c
-43.043 -1.426 42.73 -1.246 42.524 -0.882 c
-42.495 -1.353 l
-41.892 -1.353 l
-41.892 4.292 l
-42.539 4.292 l
-42.539 2.19 l
-42.752 2.532 43.061 2.705 43.465 2.705 c
-43.895 2.705 44.219 2.547 44.435 2.234 c
-44.66 1.928 44.774 1.462 44.774 0.837 c
-h
-44.126 0.823 m
-44.126 1.294 44.057 1.624 43.921 1.822 c
-43.792 2.017 43.583 2.117 43.289 2.117 c
-42.954 2.117 42.705 1.932 42.539 1.573 c
-42.539 -0.309 l
-42.705 -0.673 42.958 -0.853 43.303 -0.853 c
-43.598 -0.853 43.807 -0.75 43.935 -0.544 c
-44.06 -0.339 44.126 -0.023 44.126 0.411 c
-h
-47.257 2.013 m
-47.17 2.032 47.07 2.043 46.964 2.043 c
-46.63 2.043 46.394 1.859 46.258 1.499 c
-46.258 -1.353 l
-45.611 -1.353 l
-45.611 2.631 l
-46.243 2.631 l
-46.258 2.219 l
-46.434 2.543 46.677 2.705 46.993 2.705 c
-47.1 2.705 47.187 2.682 47.257 2.645 c
-h
-49.801 -1.353 m
-49.76 -1.264 49.734 -1.118 49.727 -0.912 c
-49.491 -1.257 49.198 -1.426 48.845 -1.426 c
-48.481 -1.426 48.198 -1.33 47.993 -1.132 c
-47.794 -0.927 47.698 -0.64 47.698 -0.265 c
-47.698 0.135 47.835 0.455 48.11 0.691 c
-48.382 0.933 48.757 1.058 49.227 1.058 c
-49.712 1.058 l
-49.712 1.484 l
-49.712 1.72 49.657 1.885 49.551 1.984 c
-49.441 2.09 49.279 2.146 49.065 2.146 c
-48.867 2.146 48.706 2.087 48.581 1.969 c
-48.463 1.851 48.404 1.705 48.404 1.529 c
-47.758 1.529 l
-47.758 1.723 47.816 1.914 47.933 2.102 c
-48.059 2.285 48.22 2.433 48.419 2.543 c
-48.625 2.649 48.853 2.705 49.109 2.705 c
-49.51 2.705 49.815 2.601 50.021 2.396 c
-50.235 2.19 50.348 1.896 50.359 1.514 c
-50.359 -0.5 l
-50.359 -0.805 50.395 -1.07 50.476 -1.294 c
-50.476 -1.353 l
-h
-48.933 -0.838 m
-49.098 -0.838 49.25 -0.794 49.389 -0.706 c
-49.536 -0.618 49.643 -0.507 49.712 -0.368 c
-49.712 0.573 l
-49.345 0.573 l
-49.029 0.573 48.786 0.503 48.61 0.367 c
-48.433 0.239 48.346 0.051 48.346 -0.191 c
-48.346 -0.42 48.39 -0.584 48.477 -0.691 c
-48.566 -0.79 48.716 -0.838 48.933 -0.838 c
-51.976 2.631 m
-51.991 2.19 l
-52.244 2.532 52.568 2.705 52.961 2.705 c
-53.666 2.705 54.023 2.234 54.034 1.294 c
-54.034 -1.353 l
-53.387 -1.353 l
-53.387 1.263 l
-53.387 1.576 53.331 1.797 53.225 1.926 c
-53.115 2.05 52.961 2.117 52.755 2.117 c
-52.597 2.117 52.45 2.061 52.314 1.955 c
-52.186 1.845 52.082 1.708 52.005 1.543 c
-52.005 -1.353 l
-51.359 -1.353 l
-51.359 2.631 l
-h
-56.386 -0.867 m
-56.599 -0.867 56.772 -0.805 56.9 -0.676 c
-57.036 -0.541 57.109 -0.349 57.121 -0.103 c
-57.738 -0.103 l
-57.716 -0.485 57.58 -0.805 57.327 -1.058 c
-57.069 -1.305 56.757 -1.426 56.386 -1.426 c
-55.893 -1.426 55.519 -1.276 55.253 -0.971 c
-54.997 -0.659 54.871 -0.191 54.871 0.426 c
-54.871 0.867 l
-54.871 1.462 54.997 1.918 55.253 2.234 c
-55.519 2.547 55.893 2.705 56.386 2.705 c
-56.786 2.705 57.106 2.572 57.341 2.308 c
-57.584 2.05 57.716 1.705 57.738 1.263 c
-57.121 1.263 l
-57.098 1.558 57.025 1.778 56.9 1.926 c
-56.782 2.072 56.61 2.146 56.386 2.146 c
-56.092 2.146 55.875 2.046 55.739 1.851 c
-55.6 1.664 55.526 1.356 55.519 0.926 c
-55.519 0.411 l
-55.519 -0.059 55.585 -0.393 55.724 -0.588 c
-55.871 -0.776 56.092 -0.867 56.386 -0.867 c
-59.134 2.219 m
-59.388 2.543 59.708 2.705 60.09 2.705 c
-60.795 2.705 61.152 2.234 61.163 1.294 c
-61.163 -1.353 l
-60.516 -1.353 l
-60.516 1.263 l
-60.516 1.576 60.461 1.797 60.354 1.926 c
-60.244 2.05 60.09 2.117 59.884 2.117 c
-59.726 2.117 59.579 2.061 59.443 1.955 c
-59.315 1.845 59.211 1.708 59.134 1.543 c
-59.134 -1.353 l
-58.488 -1.353 l
-58.488 4.292 l
-59.134 4.292 l
-h
-64.691 3.586 m
-64.691 2.631 l
-65.293 2.631 l
-65.293 2.102 l
-64.691 2.102 l
-64.691 -0.368 l
-64.691 -0.526 64.713 -0.643 64.764 -0.721 c
-64.823 -0.802 64.911 -0.838 65.029 -0.838 c
-65.117 -0.838 65.205 -0.823 65.293 -0.794 c
-65.293 -1.353 l
-65.146 -1.401 64.992 -1.426 64.838 -1.426 c
-64.581 -1.426 64.385 -1.334 64.25 -1.147 c
-64.11 -0.963 64.044 -0.702 64.044 -0.368 c
-64.044 2.102 l
-63.442 2.102 l
-63.442 2.631 l
-64.044 2.631 l
-64.044 3.586 l
-h
-65.852 0.823 m
-65.852 1.4 65.988 1.855 66.264 2.19 c
-66.546 2.532 66.918 2.705 67.38 2.705 c
-67.84 2.705 68.207 2.535 68.483 2.204 c
-68.766 1.881 68.913 1.433 68.924 0.867 c
-68.924 0.44 l
-68.924 -0.129 68.78 -0.584 68.498 -0.927 c
-68.222 -1.261 67.855 -1.426 67.395 -1.426 c
-66.933 -1.426 66.561 -1.264 66.278 -0.941 c
-66.002 -0.611 65.859 -0.169 65.852 0.382 c
-h
-66.499 0.44 m
-66.499 0.037 66.576 -0.279 66.734 -0.515 c
-66.899 -0.75 67.12 -0.867 67.395 -0.867 c
-67.961 -0.867 68.255 -0.456 68.277 0.367 c
-68.277 0.823 l
-68.277 1.223 68.192 1.543 68.028 1.778 c
-67.87 2.021 67.652 2.146 67.38 2.146 c
-67.116 2.146 66.899 2.021 66.734 1.778 c
-66.576 1.543 66.499 1.223 66.499 0.823 c
-h
-72.334 3.586 m
-72.334 2.631 l
-72.936 2.631 l
-72.936 2.102 l
-72.334 2.102 l
-72.334 -0.368 l
-72.334 -0.526 72.356 -0.643 72.408 -0.721 c
-72.466 -0.802 72.555 -0.838 72.672 -0.838 c
-72.761 -0.838 72.849 -0.823 72.936 -0.794 c
-72.936 -1.353 l
-72.79 -1.401 72.635 -1.426 72.481 -1.426 c
-72.224 -1.426 72.03 -1.334 71.893 -1.147 c
-71.754 -0.963 71.687 -0.702 71.687 -0.368 c
-71.687 2.102 l
-71.085 2.102 l
-71.085 2.631 l
-71.687 2.631 l
-71.687 3.586 l
-h
-74.348 2.219 m
-74.602 2.543 74.921 2.705 75.303 2.705 c
-76.009 2.705 76.365 2.234 76.377 1.294 c
-76.377 -1.353 l
-75.73 -1.353 l
-75.73 1.263 l
-75.73 1.576 75.674 1.797 75.568 1.926 c
-75.458 2.05 75.303 2.117 75.097 2.117 c
-74.939 2.117 74.793 2.061 74.656 1.955 c
-74.528 1.845 74.425 1.708 74.348 1.543 c
-74.348 -1.353 l
-73.701 -1.353 l
-73.701 4.292 l
-74.348 4.292 l
-h
-78.758 -1.426 m
-78.258 -1.426 77.875 -1.279 77.611 -0.985 c
-77.347 -0.691 77.214 -0.258 77.214 0.323 c
-77.214 0.793 l
-77.214 1.389 77.339 1.855 77.596 2.19 c
-77.861 2.532 78.222 2.705 78.684 2.705 c
-79.143 2.705 79.485 2.55 79.713 2.248 c
-79.948 1.955 80.069 1.492 80.08 0.867 c
-80.08 0.44 l
-77.861 0.44 l
-77.861 0.353 l
-77.861 -0.081 77.938 -0.393 78.096 -0.588 c
-78.261 -0.776 78.493 -0.867 78.787 -0.867 c
-78.982 -0.867 79.155 -0.834 79.301 -0.765 c
-79.448 -0.688 79.585 -0.57 79.713 -0.412 c
-80.051 -0.823 l
-79.764 -1.228 79.334 -1.426 78.758 -1.426 c
-78.684 2.146 m
-78.409 2.146 78.206 2.05 78.081 1.866 c
-77.952 1.679 77.879 1.389 77.861 0.999 c
-79.434 0.999 l
-79.434 1.087 l
-79.412 1.469 79.346 1.738 79.228 1.896 c
-79.111 2.061 78.927 2.146 78.684 2.146 c
-f
-Q
-q 1 0 0 1 380.4265 289.5652 cm
-0 0 m
-0 -0.97 l
-0.53 -0.97 l
-0.53 -1.764 l
-0 -1.764 l
-0 -3.734 l
-0 -3.892 0.019 -3.998 0.059 -4.057 c
-0.107 -4.116 0.191 -4.145 0.309 -4.145 c
-0.416 -4.145 0.5 -4.138 0.559 -4.116 c
-0.559 -4.925 l
-0.382 -4.991 0.191 -5.027 -0.014 -5.027 c
--0.691 -5.027 -1.036 -4.642 -1.043 -3.866 c
--1.043 -1.764 l
--1.5 -1.764 l
--1.5 -0.97 l
--1.043 -0.97 l
--1.043 0 l
-h
-2.984 -4.954 m
-2.955 -4.895 2.926 -4.792 2.896 -4.645 c
-2.708 -4.902 2.459 -5.027 2.146 -5.027 c
-1.812 -5.027 1.532 -4.921 1.309 -4.704 c
-1.091 -4.48 0.985 -4.189 0.985 -3.836 c
-0.985 -3.425 1.118 -3.109 1.382 -2.882 c
-1.646 -2.646 2.028 -2.529 2.529 -2.529 c
-2.851 -2.529 l
-2.851 -2.205 l
-2.851 -2.028 2.815 -1.908 2.749 -1.837 c
-2.69 -1.76 2.602 -1.72 2.484 -1.72 c
-2.227 -1.72 2.103 -1.874 2.103 -2.176 c
-1.058 -2.176 l
-1.058 -1.804 1.195 -1.5 1.47 -1.264 c
-1.742 -1.022 2.091 -0.897 2.514 -0.897 c
-2.955 -0.897 3.293 -1.014 3.528 -1.249 c
-3.77 -1.478 3.896 -1.801 3.896 -2.22 c
-3.896 -4.087 l
-3.896 -4.432 3.944 -4.7 4.042 -4.895 c
-4.042 -4.954 l
-h
-2.381 -4.204 m
-2.488 -4.204 2.58 -4.185 2.66 -4.145 c
-2.749 -4.098 2.811 -4.039 2.851 -3.969 c
-2.851 -3.146 l
-2.602 -3.146 l
-2.425 -3.146 2.282 -3.204 2.176 -3.322 c
-2.076 -3.433 2.028 -3.58 2.028 -3.763 c
-2.028 -4.057 2.146 -4.204 2.381 -4.204 c
-6.6 -1.985 m
-6.262 -1.955 l
-5.976 -1.955 5.785 -2.08 5.689 -2.323 c
-5.689 -4.954 l
-4.645 -4.954 l
-4.645 -0.97 l
-5.615 -0.97 l
-5.644 -1.411 l
-5.81 -1.07 6.041 -0.897 6.336 -0.897 c
-6.453 -0.897 6.545 -0.919 6.614 -0.956 c
-h
-6.938 -2.837 m
-6.938 -2.19 7.056 -1.706 7.291 -1.382 c
-7.526 -1.058 7.857 -0.897 8.291 -0.897 c
-8.643 -0.897 8.915 -1.04 9.114 -1.323 c
-9.158 -0.97 l
-10.099 -0.97 l
-10.099 -4.954 l
-10.099 -5.461 9.955 -5.85 9.672 -6.115 c
-9.386 -6.387 8.981 -6.527 8.453 -6.527 c
-8.224 -6.527 7.989 -6.483 7.747 -6.394 c
-7.512 -6.306 7.335 -6.192 7.217 -6.057 c
-7.57 -5.336 l
-7.666 -5.442 7.794 -5.527 7.952 -5.586 c
-8.106 -5.652 8.254 -5.689 8.393 -5.689 c
-8.628 -5.689 8.794 -5.63 8.893 -5.513 c
-9 -5.402 9.055 -5.226 9.055 -4.983 c
-9.055 -4.63 l
-8.856 -4.895 8.599 -5.027 8.276 -5.027 c
-7.853 -5.027 7.526 -4.866 7.291 -4.542 c
-7.063 -4.212 6.945 -3.741 6.938 -3.131 c
-h
-7.982 -3.102 m
-7.982 -3.477 8.029 -3.745 8.129 -3.91 c
-8.224 -4.079 8.378 -4.16 8.584 -4.16 c
-8.798 -4.16 8.956 -4.083 9.055 -3.925 c
-9.055 -2.028 l
-8.945 -1.864 8.79 -1.779 8.584 -1.779 c
-8.378 -1.779 8.224 -1.864 8.129 -2.028 c
-8.029 -2.198 7.982 -2.466 7.982 -2.837 c
-h
-12.465 -5.027 m
-11.936 -5.027 11.517 -4.873 11.215 -4.557 c
-10.922 -4.233 10.774 -3.774 10.774 -3.175 c
-10.774 -2.866 l
-10.774 -2.242 10.911 -1.756 11.186 -1.411 c
-11.458 -1.07 11.851 -0.897 12.362 -0.897 c
-12.862 -0.897 13.233 -1.058 13.479 -1.382 c
-13.733 -1.706 13.865 -2.183 13.876 -2.808 c
-13.876 -3.308 l
-11.803 -3.308 l
-11.822 -3.601 11.884 -3.818 11.994 -3.954 c
-12.112 -4.094 12.293 -4.16 12.538 -4.16 c
-12.881 -4.16 13.17 -4.042 13.406 -3.807 c
-13.818 -4.439 l
-13.689 -4.615 13.501 -4.759 13.259 -4.866 c
-13.012 -4.972 12.748 -5.027 12.465 -5.027 c
-11.819 -2.587 m
-12.847 -2.587 l
-12.847 -2.484 l
-12.847 -2.249 12.807 -2.072 12.729 -1.955 c
-12.66 -1.831 12.532 -1.764 12.347 -1.764 c
-12.171 -1.764 12.039 -1.834 11.95 -1.97 c
-11.869 -2.099 11.826 -2.304 11.819 -2.587 c
-15.669 0 m
-15.669 -0.97 l
-16.199 -0.97 l
-16.199 -1.764 l
-15.669 -1.764 l
-15.669 -3.734 l
-15.669 -3.892 15.688 -3.998 15.728 -4.057 c
-15.776 -4.116 15.861 -4.145 15.978 -4.145 c
-16.085 -4.145 16.169 -4.138 16.228 -4.116 c
-16.228 -4.925 l
-16.052 -4.991 15.861 -5.027 15.655 -5.027 c
-14.978 -5.027 14.633 -4.642 14.626 -3.866 c
-14.626 -1.764 l
-14.17 -1.764 l
-14.17 -0.97 l
-14.626 -0.97 l
-14.626 0 l
-h
-20.461 -1.985 m
-20.123 -1.955 l
-19.836 -1.955 19.645 -2.08 19.549 -2.323 c
-19.549 -4.954 l
-18.506 -4.954 l
-18.506 -0.97 l
-19.476 -0.97 l
-19.506 -1.411 l
-19.671 -1.07 19.902 -0.897 20.197 -0.897 c
-20.314 -0.897 20.406 -0.919 20.476 -0.956 c
-h
-22.534 -5.027 m
-22.005 -5.027 21.586 -4.873 21.284 -4.557 c
-20.991 -4.233 20.843 -3.774 20.843 -3.175 c
-20.843 -2.866 l
-20.843 -2.242 20.979 -1.756 21.255 -1.411 c
-21.527 -1.07 21.92 -0.897 22.431 -0.897 c
-22.931 -0.897 23.302 -1.058 23.548 -1.382 c
-23.802 -1.706 23.934 -2.183 23.945 -2.808 c
-23.945 -3.308 l
-21.872 -3.308 l
-21.891 -3.601 21.953 -3.818 22.063 -3.954 c
-22.181 -4.094 22.361 -4.16 22.607 -4.16 c
-22.949 -4.16 23.239 -4.042 23.474 -3.807 c
-23.886 -4.439 l
-23.757 -4.615 23.57 -4.759 23.328 -4.866 c
-23.081 -4.972 22.817 -5.027 22.534 -5.027 c
-21.887 -2.587 m
-22.916 -2.587 l
-22.916 -2.484 l
-22.916 -2.249 22.876 -2.072 22.799 -1.955 c
-22.728 -1.831 22.6 -1.764 22.416 -1.764 c
-22.24 -1.764 22.107 -1.834 22.019 -1.97 c
-21.939 -2.099 21.895 -2.304 21.887 -2.587 c
-24.768 -4.954 m
-24.768 -1.764 l
-24.283 -1.764 l
-24.283 -0.97 l
-24.768 -0.97 l
-24.768 -0.617 l
-24.768 -0.177 24.879 0.162 25.106 0.397 c
-25.342 0.639 25.658 0.764 26.061 0.764 c
-26.186 0.764 26.344 0.738 26.532 0.69 c
-26.532 -0.133 l
-26.462 -0.114 26.377 -0.104 26.282 -0.104 c
-25.966 -0.104 25.812 -0.287 25.812 -0.647 c
-25.812 -0.97 l
-26.429 -0.97 l
-26.429 -1.764 l
-25.812 -1.764 l
-25.812 -4.954 l
-h
-28.517 -5.027 m
-27.987 -5.027 27.568 -4.873 27.267 -4.557 c
-26.973 -4.233 26.826 -3.774 26.826 -3.175 c
-26.826 -2.866 l
-26.826 -2.242 26.962 -1.756 27.237 -1.411 c
-27.509 -1.07 27.902 -0.897 28.413 -0.897 c
-28.914 -0.897 29.284 -1.058 29.531 -1.382 c
-29.784 -1.706 29.916 -2.183 29.928 -2.808 c
-29.928 -3.308 l
-27.855 -3.308 l
-27.873 -3.601 27.936 -3.818 28.046 -3.954 c
-28.164 -4.094 28.344 -4.16 28.59 -4.16 c
-28.931 -4.16 29.222 -4.042 29.457 -3.807 c
-29.868 -4.439 l
-29.741 -4.615 29.552 -4.759 29.31 -4.866 c
-29.064 -4.972 28.8 -5.027 28.517 -5.027 c
-27.869 -2.587 m
-28.899 -2.587 l
-28.899 -2.484 l
-28.899 -2.249 28.858 -2.072 28.781 -1.955 c
-28.711 -1.831 28.582 -1.764 28.399 -1.764 c
-28.222 -1.764 28.09 -1.834 28.002 -1.97 c
-27.921 -2.099 27.877 -2.304 27.869 -2.587 c
-32.471 -1.985 m
-32.132 -1.955 l
-31.846 -1.955 31.655 -2.08 31.559 -2.323 c
-31.559 -4.954 l
-30.516 -4.954 l
-30.516 -0.97 l
-31.486 -0.97 l
-31.515 -1.411 l
-31.68 -1.07 31.912 -0.897 32.206 -0.897 c
-32.324 -0.897 32.415 -0.919 32.485 -0.956 c
-h
-34.543 -5.027 m
-34.013 -5.027 33.595 -4.873 33.294 -4.557 c
-32.999 -4.233 32.853 -3.774 32.853 -3.175 c
-32.853 -2.866 l
-32.853 -2.242 32.989 -1.756 33.265 -1.411 c
-33.536 -1.07 33.93 -0.897 34.44 -0.897 c
-34.94 -0.897 35.311 -1.058 35.557 -1.382 c
-35.811 -1.706 35.943 -2.183 35.954 -2.808 c
-35.954 -3.308 l
-33.882 -3.308 l
-33.9 -3.601 33.963 -3.818 34.073 -3.954 c
-34.19 -4.094 34.37 -4.16 34.616 -4.16 c
-34.958 -4.16 35.249 -4.042 35.484 -3.807 c
-35.895 -4.439 l
-35.767 -4.615 35.58 -4.759 35.337 -4.866 c
-35.091 -4.972 34.826 -5.027 34.543 -5.027 c
-33.896 -2.587 m
-34.925 -2.587 l
-34.925 -2.484 l
-34.925 -2.249 34.884 -2.072 34.807 -1.955 c
-34.738 -1.831 34.609 -1.764 34.425 -1.764 c
-34.249 -1.764 34.117 -1.834 34.028 -1.97 c
-33.948 -2.099 33.903 -2.304 33.896 -2.587 c
-37.498 -0.97 m
-37.527 -1.367 l
-37.762 -1.055 38.063 -0.897 38.439 -0.897 c
-39.122 -0.897 39.474 -1.378 39.497 -2.338 c
-39.497 -4.954 l
-38.453 -4.954 l
-38.453 -2.411 l
-38.453 -2.186 38.416 -2.025 38.35 -1.926 c
-38.281 -1.831 38.163 -1.779 37.997 -1.779 c
-37.81 -1.779 37.663 -1.874 37.556 -2.058 c
-37.556 -4.954 l
-36.513 -4.954 l
-36.513 -0.97 l
-h
-41.687 -4.16 m
-41.98 -4.16 42.131 -3.965 42.142 -3.572 c
-43.112 -3.572 l
-43.112 -4.006 42.98 -4.358 42.715 -4.63 c
-42.451 -4.895 42.113 -5.027 41.701 -5.027 c
-41.19 -5.027 40.797 -4.873 40.525 -4.557 c
-40.261 -4.233 40.122 -3.763 40.114 -3.146 c
-40.114 -2.822 l
-40.114 -2.198 40.246 -1.72 40.511 -1.397 c
-40.783 -1.066 41.18 -0.897 41.701 -0.897 c
-42.131 -0.897 42.473 -1.037 42.73 -1.309 c
-42.984 -1.584 43.112 -1.966 43.112 -2.455 c
-42.142 -2.455 l
-42.142 -2.242 42.102 -2.072 42.025 -1.955 c
-41.955 -1.831 41.837 -1.764 41.672 -1.764 c
-41.496 -1.764 41.367 -1.831 41.29 -1.955 c
-41.209 -2.084 41.165 -2.334 41.157 -2.705 c
-41.157 -3.117 l
-41.157 -3.439 41.172 -3.668 41.202 -3.792 c
-41.238 -3.921 41.294 -4.013 41.363 -4.072 c
-41.441 -4.131 41.547 -4.16 41.687 -4.16 c
-45.317 -5.027 m
-44.789 -5.027 44.369 -4.873 44.068 -4.557 c
-43.774 -4.233 43.627 -3.774 43.627 -3.175 c
-43.627 -2.866 l
-43.627 -2.242 43.763 -1.756 44.039 -1.411 c
-44.311 -1.07 44.704 -0.897 45.215 -0.897 c
-45.714 -0.897 46.085 -1.058 46.331 -1.382 c
-46.585 -1.706 46.717 -2.183 46.728 -2.808 c
-46.728 -3.308 l
-44.656 -3.308 l
-44.674 -3.601 44.737 -3.818 44.847 -3.954 c
-44.965 -4.094 45.144 -4.16 45.391 -4.16 c
-45.733 -4.16 46.023 -4.042 46.258 -3.807 c
-46.67 -4.439 l
-46.541 -4.615 46.354 -4.759 46.111 -4.866 c
-45.865 -4.972 45.6 -5.027 45.317 -5.027 c
-44.671 -2.587 m
-45.699 -2.587 l
-45.699 -2.484 l
-45.699 -2.249 45.659 -2.072 45.582 -1.955 c
-45.512 -1.831 45.383 -1.764 45.2 -1.764 c
-45.024 -1.764 44.891 -1.834 44.803 -1.97 c
-44.722 -2.099 44.678 -2.304 44.671 -2.587 c
-f
-Q
-q 1 0 0 1 427.8604 283.5388 cm
-0 0 m
--0.397 0.264 l
--0.162 0.588 -0.04 0.922 -0.029 1.263 c
--0.029 1.881 l
-0.632 1.881 l
-0.632 1.352 l
-0.632 1.095 0.566 0.849 0.441 0.602 c
-0.324 0.359 0.177 0.158 0 0 c
-5.233 1.072 m
-5.193 1.161 5.167 1.308 5.159 1.514 c
-4.924 1.168 4.63 0.999 4.278 0.999 c
-3.913 0.999 3.63 1.095 3.425 1.294 c
-3.227 1.499 3.131 1.786 3.131 2.16 c
-3.131 2.561 3.267 2.881 3.543 3.116 c
-3.815 3.358 4.189 3.484 4.659 3.484 c
-5.145 3.484 l
-5.145 3.91 l
-5.145 4.145 5.089 4.31 4.983 4.409 c
-4.873 4.516 4.711 4.571 4.498 4.571 c
-4.299 4.571 4.138 4.512 4.013 4.394 c
-3.896 4.277 3.836 4.13 3.836 3.954 c
-3.19 3.954 l
-3.19 4.149 3.248 4.34 3.366 4.527 c
-3.491 4.71 3.653 4.858 3.851 4.968 c
-4.057 5.074 4.285 5.13 4.542 5.13 c
-4.943 5.13 5.247 5.026 5.453 4.821 c
-5.667 4.615 5.781 4.321 5.791 3.939 c
-5.791 1.925 l
-5.791 1.62 5.828 1.356 5.909 1.132 c
-5.909 1.072 l
-h
-4.366 1.587 m
-4.531 1.587 4.682 1.631 4.821 1.72 c
-4.968 1.807 5.075 1.918 5.145 2.057 c
-5.145 2.998 l
-4.777 2.998 l
-4.461 2.998 4.218 2.929 4.042 2.792 c
-3.866 2.664 3.778 2.476 3.778 2.234 c
-3.778 2.006 3.822 1.841 3.91 1.734 c
-3.998 1.635 4.149 1.587 4.366 1.587 c
-7.408 5.056 m
-7.423 4.615 l
-7.676 4.957 8 5.13 8.393 5.13 c
-9.099 5.13 9.455 4.659 9.467 3.719 c
-9.467 1.072 l
-8.819 1.072 l
-8.819 3.689 l
-8.819 4.001 8.764 4.222 8.658 4.351 c
-8.548 4.475 8.393 4.542 8.187 4.542 c
-8.029 4.542 7.882 4.486 7.746 4.38 c
-7.618 4.27 7.515 4.134 7.437 3.968 c
-7.437 1.072 l
-6.791 1.072 l
-6.791 5.056 l
-h
-10.304 3.248 m
-10.304 3.854 10.414 4.321 10.643 4.644 c
-10.878 4.968 11.204 5.13 11.627 5.13 c
-12.009 5.13 12.307 4.972 12.524 4.659 c
-12.524 6.717 l
-13.17 6.717 l
-13.17 1.072 l
-12.582 1.072 l
-12.538 1.499 l
-12.332 1.165 12.027 0.999 11.627 0.999 c
-11.215 0.999 10.892 1.153 10.657 1.469 c
-10.422 1.793 10.304 2.248 10.304 2.836 c
-h
-10.951 2.865 m
-10.951 2.425 11.013 2.094 11.142 1.881 c
-11.278 1.675 11.499 1.572 11.803 1.572 c
-12.127 1.572 12.366 1.734 12.524 2.057 c
-12.524 4.072 l
-12.355 4.384 12.116 4.542 11.803 4.542 c
-11.499 4.542 11.278 4.438 11.142 4.233 c
-11.013 4.027 10.951 3.704 10.951 3.262 c
-h
-16.596 1.072 -0.647 5.644 re
-19.035 0.999 m
-18.535 0.999 18.153 1.146 17.889 1.44 c
-17.624 1.734 17.492 2.167 17.492 2.748 c
-17.492 3.218 l
-17.492 3.814 17.617 4.28 17.874 4.615 c
-18.138 4.957 18.499 5.13 18.962 5.13 c
-19.422 5.13 19.763 4.976 19.991 4.674 c
-20.226 4.38 20.347 3.917 20.359 3.293 c
-20.359 2.865 l
-18.138 2.865 l
-18.138 2.778 l
-18.138 2.344 18.216 2.032 18.374 1.837 c
-18.539 1.649 18.771 1.558 19.065 1.558 c
-19.26 1.558 19.432 1.591 19.58 1.66 c
-19.726 1.738 19.862 1.855 19.991 2.013 c
-20.328 1.602 l
-20.042 1.198 19.613 0.999 19.035 0.999 c
-18.962 4.571 m
-18.686 4.571 18.485 4.475 18.359 4.292 c
-18.231 4.104 18.157 3.814 18.138 3.424 c
-19.711 3.424 l
-19.711 3.513 l
-19.69 3.895 19.623 4.163 19.505 4.321 c
-19.388 4.486 19.204 4.571 18.962 4.571 c
-23.181 1.072 m
-23.14 1.161 23.114 1.308 23.107 1.514 c
-22.872 1.168 22.578 0.999 22.225 0.999 c
-21.861 0.999 21.579 1.095 21.373 1.294 c
-21.174 1.499 21.078 1.786 21.078 2.16 c
-21.078 2.561 21.215 2.881 21.49 3.116 c
-21.762 3.358 22.137 3.484 22.607 3.484 c
-23.092 3.484 l
-23.092 3.91 l
-23.092 4.145 23.037 4.31 22.931 4.409 c
-22.82 4.516 22.659 4.571 22.445 4.571 c
-22.248 4.571 22.086 4.512 21.961 4.394 c
-21.843 4.277 21.784 4.13 21.784 3.954 c
-21.137 3.954 l
-21.137 4.149 21.196 4.34 21.313 4.527 c
-21.439 4.71 21.6 4.858 21.799 4.968 c
-22.005 5.074 22.232 5.13 22.489 5.13 c
-22.89 5.13 23.195 5.026 23.401 4.821 c
-23.614 4.615 23.728 4.321 23.739 3.939 c
-23.739 1.925 l
-23.739 1.62 23.776 1.356 23.856 1.132 c
-23.856 1.072 l
-h
-22.313 1.587 m
-22.479 1.587 22.629 1.631 22.769 1.72 c
-22.915 1.807 23.023 1.918 23.092 2.057 c
-23.092 2.998 l
-22.725 2.998 l
-22.408 2.998 22.167 2.929 21.99 2.792 c
-21.814 2.664 21.725 2.476 21.725 2.234 c
-21.725 2.006 21.77 1.841 21.857 1.734 c
-21.946 1.635 22.096 1.587 22.313 1.587 c
-25.812 2.057 m
-26.561 5.056 l
-27.223 5.056 l
-26.047 1.072 l
-25.562 1.072 l
-24.371 5.056 l
-25.032 5.056 l
-h
-29.281 0.999 m
-28.781 0.999 28.399 1.146 28.134 1.44 c
-27.869 1.734 27.737 2.167 27.737 2.748 c
-27.737 3.218 l
-27.737 3.814 27.862 4.28 28.12 4.615 c
-28.384 4.957 28.744 5.13 29.207 5.13 c
-29.666 5.13 30.009 4.976 30.236 4.674 c
-30.471 4.38 30.593 3.917 30.603 3.293 c
-30.603 2.865 l
-28.384 2.865 l
-28.384 2.778 l
-28.384 2.344 28.461 2.032 28.619 1.837 c
-28.785 1.649 29.016 1.558 29.31 1.558 c
-29.504 1.558 29.677 1.591 29.824 1.66 c
-29.971 1.738 30.107 1.855 30.236 2.013 c
-30.574 1.602 l
-30.287 1.198 29.857 0.999 29.281 0.999 c
-29.207 4.571 m
-28.931 4.571 28.729 4.475 28.604 4.292 c
-28.476 4.104 28.403 3.814 28.384 3.424 c
-29.957 3.424 l
-29.957 3.513 l
-29.934 3.895 29.868 4.163 29.751 4.321 c
-29.633 4.486 29.45 4.571 29.207 4.571 c
-33.323 2.087 m
-33.323 2.234 33.267 2.355 33.161 2.454 c
-33.051 2.549 32.845 2.667 32.544 2.807 c
-32.199 2.954 31.956 3.075 31.809 3.175 c
-31.662 3.281 31.551 3.399 31.486 3.528 c
-31.416 3.652 31.382 3.81 31.382 3.998 c
-31.382 4.321 31.5 4.589 31.735 4.806 c
-31.97 5.019 32.272 5.13 32.646 5.13 c
-33.028 5.13 33.338 5.016 33.573 4.791 c
-33.808 4.564 33.926 4.277 33.926 3.924 c
-33.279 3.924 l
-33.279 4.101 33.22 4.251 33.103 4.38 c
-32.985 4.505 32.831 4.571 32.646 4.571 c
-32.448 4.571 32.297 4.516 32.191 4.409 c
-32.081 4.31 32.029 4.178 32.029 4.012 c
-32.029 3.883 32.066 3.777 32.147 3.689 c
-32.224 3.608 32.415 3.505 32.72 3.38 c
-33.198 3.193 33.529 3.006 33.705 2.822 c
-33.882 2.645 33.969 2.418 33.969 2.146 c
-33.969 1.793 33.845 1.514 33.602 1.308 c
-33.367 1.102 33.051 0.999 32.662 0.999 c
-32.239 0.999 31.9 1.117 31.647 1.352 c
-31.39 1.595 31.265 1.899 31.265 2.263 c
-31.912 2.263 l
-31.919 2.036 31.989 1.859 32.118 1.734 c
-32.243 1.616 32.426 1.558 32.662 1.558 c
-32.874 1.558 33.036 1.606 33.146 1.705 c
-33.264 1.801 33.323 1.928 33.323 2.087 c
-38.57 1.072 m
-38.53 1.161 38.504 1.308 38.497 1.514 c
-38.262 1.168 37.967 0.999 37.615 0.999 c
-37.251 0.999 36.968 1.095 36.762 1.294 c
-36.564 1.499 36.469 1.786 36.469 2.16 c
-36.469 2.561 36.604 2.881 36.88 3.116 c
-37.152 3.358 37.527 3.484 37.997 3.484 c
-38.482 3.484 l
-38.482 3.91 l
-38.482 4.145 38.427 4.31 38.32 4.409 c
-38.21 4.516 38.048 4.571 37.836 4.571 c
-37.637 4.571 37.475 4.512 37.35 4.394 c
-37.233 4.277 37.174 4.13 37.174 3.954 c
-36.527 3.954 l
-36.527 4.149 36.586 4.34 36.704 4.527 c
-36.829 4.71 36.99 4.858 37.188 4.968 c
-37.394 5.074 37.622 5.13 37.88 5.13 c
-38.281 5.13 38.585 5.026 38.79 4.821 c
-39.004 4.615 39.118 4.321 39.129 3.939 c
-39.129 1.925 l
-39.129 1.62 39.166 1.356 39.247 1.132 c
-39.247 1.072 l
-h
-37.703 1.587 m
-37.869 1.587 38.019 1.631 38.159 1.72 c
-38.306 1.807 38.412 1.918 38.482 2.057 c
-38.482 2.998 l
-38.115 2.998 l
-37.799 2.998 37.556 2.929 37.379 2.792 c
-37.203 2.664 37.115 2.476 37.115 2.234 c
-37.115 2.006 37.159 1.841 37.248 1.734 c
-37.336 1.635 37.487 1.587 37.703 1.587 c
-41.716 3.248 m
-41.716 3.854 41.826 4.321 42.054 4.644 c
-42.289 4.968 42.616 5.13 43.039 5.13 c
-43.421 5.13 43.719 4.972 43.935 4.659 c
-43.935 6.717 l
-44.583 6.717 l
-44.583 1.072 l
-43.995 1.072 l
-43.95 1.499 l
-43.744 1.165 43.44 0.999 43.039 0.999 c
-42.628 0.999 42.304 1.153 42.069 1.469 c
-41.834 1.793 41.716 2.248 41.716 2.836 c
-h
-42.362 2.865 m
-42.362 2.425 42.425 2.094 42.553 1.881 c
-42.69 1.675 42.91 1.572 43.216 1.572 c
-43.538 1.572 43.777 1.734 43.935 2.057 c
-43.935 4.072 l
-43.767 4.384 43.528 4.542 43.216 4.542 c
-42.91 4.542 42.69 4.438 42.553 4.233 c
-42.425 4.027 42.362 3.704 42.362 3.262 c
-h
-46.287 1.072 -0.646 3.984 re
-46.331 6.1 m
-46.331 5.99 46.302 5.898 46.243 5.82 c
-46.185 5.751 46.089 5.718 45.964 5.718 c
-45.846 5.718 45.751 5.751 45.685 5.82 c
-45.626 5.898 45.597 5.99 45.597 6.1 c
-45.597 6.217 45.626 6.31 45.685 6.379 c
-45.751 6.456 45.846 6.497 45.964 6.497 c
-46.089 6.497 46.185 6.456 46.243 6.379 c
-46.302 6.298 46.331 6.206 46.331 6.1 c
-47.596 1.072 m
-47.596 4.527 l
-47.066 4.527 l
-47.066 5.056 l
-47.596 5.056 l
-47.596 5.512 l
-47.596 5.913 47.691 6.225 47.889 6.453 c
-48.095 6.676 48.375 6.79 48.727 6.79 c
-48.864 6.79 48.996 6.769 49.124 6.732 c
-49.095 6.188 l
-48.996 6.206 48.897 6.217 48.801 6.217 c
-48.426 6.217 48.242 5.953 48.242 5.423 c
-48.242 5.056 l
-48.918 5.056 l
-48.918 4.527 l
-48.242 4.527 l
-48.242 1.072 l
-h
-49.977 1.072 m
-49.977 4.527 l
-49.448 4.527 l
-49.448 5.056 l
-49.977 5.056 l
-49.977 5.512 l
-49.977 5.913 50.073 6.225 50.271 6.453 c
-50.476 6.676 50.756 6.79 51.108 6.79 c
-51.245 6.79 51.377 6.769 51.505 6.732 c
-51.476 6.188 l
-51.377 6.206 51.278 6.217 51.182 6.217 c
-50.807 6.217 50.624 5.953 50.624 5.423 c
-50.624 5.056 l
-51.299 5.056 l
-51.299 4.527 l
-50.624 4.527 l
-50.624 1.072 l
-h
-53.402 0.999 m
-52.902 0.999 52.52 1.146 52.255 1.44 c
-51.991 1.734 51.858 2.167 51.858 2.748 c
-51.858 3.218 l
-51.858 3.814 51.983 4.28 52.24 4.615 c
-52.505 4.957 52.865 5.13 53.329 5.13 c
-53.788 5.13 54.129 4.976 54.357 4.674 c
-54.592 4.38 54.713 3.917 54.725 3.293 c
-54.725 2.865 l
-52.505 2.865 l
-52.505 2.778 l
-52.505 2.344 52.583 2.032 52.741 1.837 c
-52.905 1.649 53.137 1.558 53.431 1.558 c
-53.626 1.558 53.799 1.591 53.946 1.66 c
-54.092 1.738 54.229 1.855 54.357 2.013 c
-54.696 1.602 l
-54.409 1.198 53.979 0.999 53.402 0.999 c
-53.329 4.571 m
-53.053 4.571 52.851 4.475 52.726 4.292 c
-52.597 4.104 52.523 3.814 52.505 3.424 c
-54.077 3.424 l
-54.077 3.513 l
-54.056 3.895 53.99 4.163 53.872 4.321 c
-53.755 4.486 53.57 4.571 53.329 4.571 c
-57.15 4.438 m
-57.061 4.457 56.963 4.469 56.856 4.469 c
-56.522 4.469 56.286 4.284 56.151 3.924 c
-56.151 1.072 l
-55.504 1.072 l
-55.504 5.056 l
-56.136 5.056 l
-56.151 4.644 l
-56.327 4.968 56.569 5.13 56.886 5.13 c
-56.992 5.13 57.08 5.107 57.15 5.071 c
-h
-59.149 0.999 m
-58.649 0.999 58.268 1.146 58.002 1.44 c
-57.738 1.734 57.605 2.167 57.605 2.748 c
-57.605 3.218 l
-57.605 3.814 57.73 4.28 57.988 4.615 c
-58.252 4.957 58.613 5.13 59.076 5.13 c
-59.535 5.13 59.877 4.976 60.105 4.674 c
-60.34 4.38 60.461 3.917 60.472 3.293 c
-60.472 2.865 l
-58.252 2.865 l
-58.252 2.778 l
-58.252 2.344 58.33 2.032 58.488 1.837 c
-58.653 1.649 58.885 1.558 59.178 1.558 c
-59.373 1.558 59.546 1.591 59.693 1.66 c
-59.84 1.738 59.976 1.855 60.105 2.013 c
-60.443 1.602 l
-60.156 1.198 59.726 0.999 59.149 0.999 c
-59.076 4.571 m
-58.8 4.571 58.598 4.475 58.473 4.292 c
-58.345 4.104 58.271 3.814 58.252 3.424 c
-59.825 3.424 l
-59.825 3.513 l
-59.803 3.895 59.737 4.163 59.619 4.321 c
-59.502 4.486 59.318 4.571 59.076 4.571 c
-61.869 5.056 m
-61.883 4.615 l
-62.137 4.957 62.46 5.13 62.854 5.13 c
-63.559 5.13 63.916 4.659 63.926 3.719 c
-63.926 1.072 l
-63.28 1.072 l
-63.28 3.689 l
-63.28 4.001 63.224 4.222 63.118 4.351 c
-63.008 4.475 62.854 4.542 62.648 4.542 c
-62.49 4.542 62.343 4.486 62.206 4.38 c
-62.078 4.27 61.975 4.134 61.898 3.968 c
-61.898 1.072 l
-61.251 1.072 l
-61.251 5.056 l
-h
-66.278 1.558 m
-66.491 1.558 66.664 1.62 66.792 1.749 c
-66.929 1.884 67.002 2.076 67.013 2.322 c
-67.631 2.322 l
-67.608 1.94 67.473 1.62 67.219 1.367 c
-66.962 1.12 66.65 0.999 66.278 0.999 c
-65.786 0.999 65.411 1.15 65.146 1.454 c
-64.889 1.767 64.764 2.234 64.764 2.851 c
-64.764 3.293 l
-64.764 3.887 64.889 4.343 65.146 4.659 c
-65.411 4.972 65.786 5.13 66.278 5.13 c
-66.679 5.13 66.999 4.997 67.234 4.733 c
-67.476 4.475 67.608 4.13 67.631 3.689 c
-67.013 3.689 l
-66.991 3.983 66.918 4.203 66.792 4.351 c
-66.675 4.498 66.503 4.571 66.278 4.571 c
-65.984 4.571 65.767 4.471 65.632 4.277 c
-65.491 4.089 65.418 3.781 65.411 3.351 c
-65.411 2.836 l
-65.411 2.366 65.477 2.032 65.617 1.837 c
-65.763 1.649 65.984 1.558 66.278 1.558 c
-69.806 0.999 m
-69.306 0.999 68.924 1.146 68.659 1.44 c
-68.395 1.734 68.263 2.167 68.263 2.748 c
-68.263 3.218 l
-68.263 3.814 68.387 4.28 68.645 4.615 c
-68.909 4.957 69.27 5.13 69.732 5.13 c
-70.191 5.13 70.534 4.976 70.762 4.674 c
-70.997 4.38 71.118 3.917 71.128 3.293 c
-71.128 2.865 l
-68.909 2.865 l
-68.909 2.778 l
-68.909 2.344 68.986 2.032 69.144 1.837 c
-69.31 1.649 69.541 1.558 69.835 1.558 c
-70.031 1.558 70.203 1.591 70.349 1.66 c
-70.497 1.738 70.633 1.855 70.762 2.013 c
-71.099 1.602 l
-70.813 1.198 70.382 0.999 69.806 0.999 c
-69.732 4.571 m
-69.457 4.571 69.254 4.475 69.129 4.292 c
-69.001 4.104 68.928 3.814 68.909 3.424 c
-70.482 3.424 l
-70.482 3.513 l
-70.46 3.895 70.394 4.163 70.276 4.321 c
-70.158 4.486 69.975 4.571 69.732 4.571 c
-75.671 1.072 m
-75.631 1.161 75.604 1.308 75.597 1.514 c
-75.362 1.168 75.068 0.999 74.715 0.999 c
-74.351 0.999 74.068 1.095 73.863 1.294 c
-73.665 1.499 73.569 1.786 73.569 2.16 c
-73.569 2.561 73.705 2.881 73.981 3.116 c
-74.253 3.358 74.627 3.484 75.097 3.484 c
-75.583 3.484 l
-75.583 3.91 l
-75.583 4.145 75.527 4.31 75.421 4.409 c
-75.311 4.516 75.149 4.571 74.936 4.571 c
-74.737 4.571 74.576 4.512 74.451 4.394 c
-74.333 4.277 74.274 4.13 74.274 3.954 c
-73.628 3.954 l
-73.628 4.149 73.686 4.34 73.804 4.527 c
-73.929 4.71 74.091 4.858 74.289 4.968 c
-74.495 5.074 74.723 5.13 74.98 5.13 c
-75.38 5.13 75.685 5.026 75.891 4.821 c
-76.105 4.615 76.219 4.321 76.229 3.939 c
-76.229 1.925 l
-76.229 1.62 76.266 1.356 76.347 1.132 c
-76.347 1.072 l
-h
-74.804 1.587 m
-74.969 1.587 75.12 1.631 75.259 1.72 c
-75.406 1.807 75.513 1.918 75.583 2.057 c
-75.583 2.998 l
-75.215 2.998 l
-74.899 2.998 74.656 2.929 74.48 2.792 c
-74.303 2.664 74.216 2.476 74.216 2.234 c
-74.216 2.006 74.26 1.841 74.348 1.734 c
-74.436 1.635 74.587 1.587 74.804 1.587 c
-79.169 2.087 m
-79.169 2.234 79.114 2.355 79.007 2.454 c
-78.897 2.549 78.692 2.667 78.39 2.807 c
-78.045 2.954 77.802 3.075 77.655 3.175 c
-77.508 3.281 77.398 3.399 77.332 3.528 c
-77.262 3.652 77.229 3.81 77.229 3.998 c
-77.229 4.321 77.347 4.589 77.582 4.806 c
-77.817 5.019 78.118 5.13 78.493 5.13 c
-78.875 5.13 79.184 5.016 79.419 4.791 c
-79.654 4.564 79.772 4.277 79.772 3.924 c
-79.125 3.924 l
-79.125 4.101 79.066 4.251 78.949 4.38 c
-78.831 4.505 78.677 4.571 78.493 4.571 c
-78.295 4.571 78.143 4.516 78.037 4.409 c
-77.927 4.31 77.875 4.178 77.875 4.012 c
-77.875 3.883 77.912 3.777 77.993 3.689 c
-78.07 3.608 78.262 3.505 78.567 3.38 c
-79.045 3.193 79.375 3.006 79.552 2.822 c
-79.728 2.645 79.816 2.418 79.816 2.146 c
-79.816 1.793 79.691 1.514 79.448 1.308 c
-79.213 1.102 78.897 0.999 78.508 0.999 c
-78.085 0.999 77.747 1.117 77.493 1.352 c
-77.237 1.595 77.111 1.899 77.111 2.263 c
-77.758 2.263 l
-77.765 2.036 77.835 1.859 77.964 1.734 c
-78.089 1.616 78.272 1.558 78.508 1.558 c
-78.721 1.558 78.883 1.606 78.993 1.705 c
-79.111 1.801 79.169 1.928 79.169 2.087 c
-84.416 1.072 m
-84.377 1.161 84.35 1.308 84.343 1.514 c
-84.108 1.168 83.814 0.999 83.461 0.999 c
-83.097 0.999 82.814 1.095 82.609 1.294 c
-82.411 1.499 82.315 1.786 82.315 2.16 c
-82.315 2.561 82.451 2.881 82.727 3.116 c
-82.999 3.358 83.373 3.484 83.843 3.484 c
-84.329 3.484 l
-84.329 3.91 l
-84.329 4.145 84.273 4.31 84.167 4.409 c
-84.057 4.516 83.895 4.571 83.682 4.571 c
-83.483 4.571 83.321 4.512 83.197 4.394 c
-83.08 4.277 83.02 4.13 83.02 3.954 c
-82.374 3.954 l
-82.374 4.149 82.432 4.34 82.55 4.527 c
-82.675 4.71 82.837 4.858 83.035 4.968 c
-83.24 5.074 83.469 5.13 83.726 5.13 c
-84.127 5.13 84.431 5.026 84.637 4.821 c
-84.85 4.615 84.964 4.321 84.975 3.939 c
-84.975 1.925 l
-84.975 1.62 85.012 1.356 85.093 1.132 c
-85.093 1.072 l
-h
-83.55 1.587 m
-83.715 1.587 83.866 1.631 84.005 1.72 c
-84.152 1.807 84.258 1.918 84.329 2.057 c
-84.329 2.998 l
-83.961 2.998 l
-83.645 2.998 83.402 2.929 83.226 2.792 c
-83.049 2.664 82.962 2.476 82.962 2.234 c
-82.962 2.006 83.005 1.841 83.094 1.734 c
-83.182 1.635 83.333 1.587 83.55 1.587 c
-86.592 5.056 m
-86.607 4.615 l
-86.86 4.957 87.184 5.13 87.577 5.13 c
-88.283 5.13 88.639 4.659 88.65 3.719 c
-88.65 1.072 l
-88.003 1.072 l
-88.003 3.689 l
-88.003 4.001 87.948 4.222 87.842 4.351 c
-87.731 4.475 87.577 4.542 87.371 4.542 c
-87.213 4.542 87.066 4.486 86.93 4.38 c
-86.802 4.27 86.699 4.134 86.621 3.968 c
-86.621 1.072 l
-85.975 1.072 l
-85.975 5.056 l
-h
-f
-Q
-q 1 0 0 1 311.0178 275.5567 cm
-0 0 m
--0.217 -0.287 -0.53 -0.426 -0.941 -0.426 c
--1.305 -0.426 -1.58 -0.305 -1.764 -0.058 c
--1.941 0.195 -2.036 0.559 -2.043 1.029 c
--2.043 3.631 l
--1.396 3.631 l
--1.396 1.087 l
--1.396 0.459 -1.213 0.147 -0.838 0.147 c
--0.437 0.147 -0.162 0.324 -0.015 0.676 c
--0.015 3.631 l
-0.632 3.631 l
-0.632 -0.353 l
-0.015 -0.353 l
-h
-2.234 3.631 m
-2.249 3.19 l
-2.502 3.532 2.826 3.705 3.219 3.705 c
-3.925 3.705 4.281 3.234 4.292 2.294 c
-4.292 -0.353 l
-3.645 -0.353 l
-3.645 2.263 l
-3.645 2.576 3.59 2.797 3.484 2.926 c
-3.373 3.05 3.219 3.117 3.013 3.117 c
-2.855 3.117 2.708 3.061 2.572 2.955 c
-2.444 2.845 2.341 2.708 2.263 2.543 c
-2.263 -0.353 l
-1.617 -0.353 l
-1.617 3.631 l
-h
-6.644 0.133 m
-6.857 0.133 7.03 0.195 7.158 0.324 c
-7.294 0.459 7.368 0.651 7.379 0.897 c
-7.996 0.897 l
-7.975 0.515 7.838 0.195 7.584 -0.058 c
-7.327 -0.305 7.015 -0.426 6.644 -0.426 c
-6.151 -0.426 5.777 -0.276 5.512 0.029 c
-5.255 0.341 5.13 0.809 5.13 1.426 c
-5.13 1.867 l
-5.13 2.462 5.255 2.918 5.512 3.234 c
-5.777 3.547 6.151 3.705 6.644 3.705 c
-7.044 3.705 7.364 3.572 7.599 3.308 c
-7.842 3.05 7.975 2.705 7.996 2.263 c
-7.379 2.263 l
-7.357 2.558 7.283 2.778 7.158 2.926 c
-7.04 3.072 6.868 3.146 6.644 3.146 c
-6.35 3.146 6.133 3.046 5.997 2.851 c
-5.858 2.664 5.784 2.356 5.777 1.926 c
-5.777 1.411 l
-5.777 0.941 5.843 0.607 5.982 0.412 c
-6.13 0.224 6.35 0.133 6.644 0.133 c
-8.613 1.823 m
-8.613 2.4 8.75 2.855 9.025 3.19 c
-9.309 3.532 9.679 3.705 10.142 3.705 c
-10.601 3.705 10.969 3.535 11.245 3.204 c
-11.528 2.882 11.675 2.433 11.686 1.867 c
-11.686 1.44 l
-11.686 0.871 11.542 0.416 11.26 0.073 c
-10.984 -0.261 10.616 -0.426 10.157 -0.426 c
-9.694 -0.426 9.323 -0.264 9.04 0.059 c
-8.764 0.389 8.621 0.831 8.613 1.382 c
-h
-9.261 1.44 m
-9.261 1.037 9.338 0.721 9.496 0.485 c
-9.66 0.25 9.882 0.133 10.157 0.133 c
-10.723 0.133 11.017 0.544 11.039 1.367 c
-11.039 1.823 l
-11.039 2.223 10.955 2.543 10.789 2.778 c
-10.631 3.021 10.414 3.146 10.142 3.146 c
-9.878 3.146 9.66 3.021 9.496 2.778 c
-9.338 2.543 9.261 2.223 9.261 1.823 c
-h
-13.141 3.631 m
-13.155 3.263 l
-13.398 3.557 13.718 3.705 14.111 3.705 c
-14.552 3.705 14.861 3.506 15.037 3.117 c
-15.291 3.506 15.64 3.705 16.081 3.705 c
-16.816 3.705 17.19 3.241 17.213 2.323 c
-17.213 -0.353 l
-16.565 -0.353 l
-16.565 2.263 l
-16.565 2.558 16.511 2.77 16.404 2.911 c
-16.305 3.046 16.132 3.117 15.89 3.117 c
-15.692 3.117 15.53 3.036 15.405 2.882 c
-15.287 2.734 15.217 2.543 15.199 2.308 c
-15.199 -0.353 l
-14.537 -0.353 l
-14.537 2.294 l
-14.537 2.841 14.317 3.117 13.876 3.117 c
-13.542 3.117 13.307 2.955 13.17 2.631 c
-13.17 -0.353 l
-12.523 -0.353 l
-12.523 3.631 l
-h
-18.8 3.631 m
-18.815 3.263 l
-19.057 3.557 19.377 3.705 19.771 3.705 c
-20.211 3.705 20.519 3.506 20.696 3.117 c
-20.949 3.506 21.299 3.705 21.74 3.705 c
-22.475 3.705 22.85 3.241 22.871 2.323 c
-22.871 -0.353 l
-22.225 -0.353 l
-22.225 2.263 l
-22.225 2.558 22.169 2.77 22.063 2.911 c
-21.964 3.046 21.791 3.117 21.549 3.117 c
-21.35 3.117 21.188 3.036 21.064 2.882 c
-20.947 2.734 20.876 2.543 20.858 2.308 c
-20.858 -0.353 l
-20.197 -0.353 l
-20.197 2.294 l
-20.197 2.841 19.976 3.117 19.535 3.117 c
-19.201 3.117 18.965 2.955 18.83 2.631 c
-18.83 -0.353 l
-18.183 -0.353 l
-18.183 3.631 l
-h
-24.548 -0.353 -0.647 3.984 re
-24.592 4.675 m
-24.592 4.564 24.562 4.472 24.503 4.395 c
-24.444 4.326 24.349 4.293 24.224 4.293 c
-24.106 4.293 24.01 4.326 23.945 4.395 c
-23.886 4.472 23.856 4.564 23.856 4.675 c
-23.856 4.792 23.886 4.884 23.945 4.954 c
-24.01 5.031 24.106 5.072 24.224 5.072 c
-24.349 5.072 24.444 5.031 24.503 4.954 c
-24.562 4.873 24.592 4.781 24.592 4.675 c
-26.414 4.586 m
-26.414 3.631 l
-27.017 3.631 l
-27.017 3.102 l
-26.414 3.102 l
-26.414 0.632 l
-26.414 0.474 26.437 0.357 26.487 0.279 c
-26.547 0.199 26.634 0.162 26.752 0.162 c
-26.84 0.162 26.929 0.177 27.017 0.206 c
-27.017 -0.353 l
-26.869 -0.401 26.715 -0.426 26.561 -0.426 c
-26.304 -0.426 26.109 -0.334 25.973 -0.147 c
-25.834 0.037 25.768 0.298 25.768 0.632 c
-25.768 3.102 l
-25.165 3.102 l
-25.165 3.631 l
-25.768 3.631 l
-25.768 4.586 l
-h
-29.207 -0.426 m
-28.708 -0.426 28.325 -0.279 28.06 0.015 c
-27.796 0.309 27.663 0.742 27.663 1.323 c
-27.663 1.793 l
-27.663 2.389 27.789 2.855 28.045 3.19 c
-28.311 3.532 28.671 3.705 29.134 3.705 c
-29.593 3.705 29.934 3.55 30.162 3.248 c
-30.397 2.955 30.519 2.492 30.53 1.867 c
-30.53 1.44 l
-28.311 1.44 l
-28.311 1.353 l
-28.311 0.919 28.388 0.607 28.546 0.412 c
-28.71 0.224 28.943 0.133 29.236 0.133 c
-29.431 0.133 29.604 0.166 29.751 0.235 c
-29.898 0.312 30.034 0.43 30.162 0.588 c
-30.501 0.177 l
-30.214 -0.228 29.784 -0.426 29.207 -0.426 c
-29.134 3.146 m
-28.858 3.146 28.656 3.05 28.531 2.866 c
-28.402 2.679 28.328 2.389 28.311 1.999 c
-29.884 1.999 l
-29.884 2.088 l
-29.861 2.469 29.795 2.738 29.677 2.896 c
-29.56 3.061 29.376 3.146 29.134 3.146 c
-31.177 1.823 m
-31.177 2.429 31.287 2.896 31.515 3.219 c
-31.75 3.543 32.077 3.705 32.5 3.705 c
-32.882 3.705 33.179 3.547 33.396 3.234 c
-33.396 5.292 l
-34.043 5.292 l
-34.043 -0.353 l
-33.455 -0.353 l
-33.411 0.073 l
-33.205 -0.261 32.9 -0.426 32.5 -0.426 c
-32.088 -0.426 31.765 -0.272 31.53 0.044 c
-31.295 0.368 31.177 0.823 31.177 1.411 c
-h
-31.823 1.44 m
-31.823 1 31.886 0.669 32.014 0.456 c
-32.151 0.25 32.371 0.147 32.676 0.147 c
-32.999 0.147 33.238 0.309 33.396 0.632 c
-33.396 2.646 l
-33.227 2.959 32.988 3.117 32.676 3.117 c
-32.371 3.117 32.151 3.013 32.014 2.808 c
-31.886 2.602 31.823 2.279 31.823 1.837 c
-h
-38.144 0.133 m
-38.357 0.133 38.53 0.195 38.659 0.324 c
-38.794 0.459 38.868 0.651 38.879 0.897 c
-39.496 0.897 l
-39.474 0.515 39.338 0.195 39.085 -0.058 c
-38.827 -0.305 38.515 -0.426 38.144 -0.426 c
-37.651 -0.426 37.277 -0.276 37.012 0.029 c
-36.755 0.341 36.63 0.809 36.63 1.426 c
-36.63 1.867 l
-36.63 2.462 36.755 2.918 37.012 3.234 c
-37.277 3.547 37.651 3.705 38.144 3.705 c
-38.545 3.705 38.864 3.572 39.099 3.308 c
-39.342 3.05 39.474 2.705 39.496 2.263 c
-38.879 2.263 l
-38.857 2.558 38.784 2.778 38.659 2.926 c
-38.541 3.072 38.368 3.146 38.144 3.146 c
-37.85 3.146 37.633 3.046 37.497 2.851 c
-37.358 2.664 37.284 2.356 37.277 1.926 c
-37.277 1.411 l
-37.277 0.941 37.343 0.607 37.483 0.412 c
-37.63 0.224 37.85 0.133 38.144 0.133 c
-40.893 3.219 m
-41.146 3.543 41.466 3.705 41.848 3.705 c
-42.553 3.705 42.91 3.234 42.921 2.294 c
-42.921 -0.353 l
-42.274 -0.353 l
-42.274 2.263 l
-42.274 2.576 42.219 2.797 42.113 2.926 c
-42.002 3.05 41.848 3.117 41.643 3.117 c
-41.485 3.117 41.337 3.061 41.202 2.955 c
-41.073 2.845 40.97 2.708 40.893 2.543 c
-40.893 -0.353 l
-40.246 -0.353 l
-40.246 5.292 l
-40.893 5.292 l
-h
-45.919 -0.353 m
-45.879 -0.264 45.854 -0.118 45.846 0.088 c
-45.611 -0.257 45.317 -0.426 44.965 -0.426 c
-44.6 -0.426 44.317 -0.33 44.112 -0.132 c
-43.914 0.073 43.818 0.36 43.818 0.735 c
-43.818 1.135 43.954 1.455 44.23 1.691 c
-44.502 1.933 44.876 2.058 45.346 2.058 c
-45.832 2.058 l
-45.832 2.484 l
-45.832 2.72 45.776 2.885 45.67 2.984 c
-45.56 3.09 45.398 3.146 45.185 3.146 c
-44.986 3.146 44.824 3.087 44.7 2.969 c
-44.583 2.851 44.523 2.705 44.523 2.529 c
-43.877 2.529 l
-43.877 2.723 43.935 2.914 44.053 3.102 c
-44.178 3.285 44.34 3.433 44.538 3.543 c
-44.743 3.649 44.972 3.705 45.229 3.705 c
-45.63 3.705 45.934 3.601 46.14 3.396 c
-46.353 3.19 46.468 2.896 46.478 2.514 c
-46.478 0.5 l
-46.478 0.195 46.515 -0.07 46.596 -0.293 c
-46.596 -0.353 l
-h
-45.053 0.162 m
-45.218 0.162 45.369 0.206 45.508 0.294 c
-45.655 0.382 45.762 0.493 45.832 0.632 c
-45.832 1.573 l
-45.464 1.573 l
-45.148 1.573 44.905 1.503 44.729 1.367 c
-44.552 1.239 44.465 1.051 44.465 0.809 c
-44.465 0.58 44.508 0.416 44.597 0.309 c
-44.685 0.21 44.836 0.162 45.053 0.162 c
-48.095 3.631 m
-48.11 3.19 l
-48.363 3.532 48.687 3.705 49.08 3.705 c
-49.786 3.705 50.142 3.234 50.153 2.294 c
-50.153 -0.353 l
-49.506 -0.353 l
-49.506 2.263 l
-49.506 2.576 49.451 2.797 49.345 2.926 c
-49.235 3.05 49.08 3.117 48.874 3.117 c
-48.716 3.117 48.569 3.061 48.433 2.955 c
-48.305 2.845 48.202 2.708 48.124 2.543 c
-48.124 -0.353 l
-47.478 -0.353 l
-47.478 3.631 l
-h
-50.991 1.823 m
-50.991 2.44 51.101 2.903 51.329 3.219 c
-51.553 3.543 51.887 3.705 52.329 3.705 c
-52.729 3.705 53.034 3.528 53.24 3.175 c
-53.284 3.631 l
-53.872 3.631 l
-53.872 -0.397 l
-53.872 -0.885 53.743 -1.264 53.49 -1.529 c
-53.233 -1.793 52.88 -1.926 52.431 -1.926 c
-52.233 -1.926 52.013 -1.874 51.77 -1.778 c
-51.523 -1.679 51.344 -1.558 51.226 -1.411 c
-51.49 -0.97 l
-51.756 -1.234 52.053 -1.367 52.387 -1.367 c
-52.924 -1.367 53.2 -1.072 53.21 -0.484 c
-53.21 0.044 l
-53.005 -0.272 52.703 -0.426 52.314 -0.426 c
-51.902 -0.426 51.579 -0.276 51.344 0.029 c
-51.116 0.341 50.998 0.794 50.991 1.382 c
-h
-51.652 1.44 m
-51.652 1 51.715 0.669 51.843 0.456 c
-51.968 0.25 52.186 0.147 52.49 0.147 c
-52.814 0.147 53.053 0.312 53.21 0.647 c
-53.21 2.631 l
-53.042 2.955 52.803 3.117 52.49 3.117 c
-52.196 3.117 51.98 3.013 51.843 2.808 c
-51.715 2.602 51.652 2.279 51.652 1.837 c
-h
-56.253 -0.426 m
-55.754 -0.426 55.371 -0.279 55.107 0.015 c
-54.842 0.309 54.71 0.742 54.71 1.323 c
-54.71 1.793 l
-54.71 2.389 54.835 2.855 55.092 3.19 c
-55.357 3.532 55.717 3.705 56.18 3.705 c
-56.639 3.705 56.981 3.55 57.208 3.248 c
-57.443 2.955 57.565 2.492 57.576 1.867 c
-57.576 1.44 l
-55.357 1.44 l
-55.357 1.353 l
-55.357 0.919 55.434 0.607 55.592 0.412 c
-55.757 0.224 55.989 0.133 56.283 0.133 c
-56.477 0.133 56.65 0.166 56.797 0.235 c
-56.944 0.312 57.08 0.43 57.208 0.588 c
-57.547 0.177 l
-57.26 -0.228 56.83 -0.426 56.253 -0.426 c
-56.18 3.146 m
-55.904 3.146 55.702 3.05 55.577 2.866 c
-55.448 2.679 55.375 2.389 55.357 1.999 c
-56.93 1.999 l
-56.93 2.088 l
-56.907 2.469 56.841 2.738 56.724 2.896 c
-56.606 3.061 56.423 3.146 56.18 3.146 c
-60.296 0.661 m
-60.296 0.809 60.24 0.929 60.134 1.029 c
-60.024 1.124 59.818 1.242 59.517 1.382 c
-59.171 1.529 58.929 1.65 58.781 1.75 c
-58.634 1.856 58.524 1.974 58.458 2.103 c
-58.388 2.227 58.355 2.385 58.355 2.573 c
-58.355 2.896 58.473 3.164 58.708 3.381 c
-58.943 3.594 59.245 3.705 59.619 3.705 c
-60.001 3.705 60.31 3.591 60.545 3.366 c
-60.78 3.138 60.898 2.851 60.898 2.499 c
-60.252 2.499 l
-60.252 2.675 60.192 2.826 60.075 2.955 c
-59.957 3.08 59.803 3.146 59.619 3.146 c
-59.421 3.146 59.27 3.09 59.164 2.984 c
-59.053 2.885 59.002 2.753 59.002 2.587 c
-59.002 2.458 59.039 2.352 59.12 2.263 c
-59.197 2.183 59.388 2.08 59.693 1.955 c
-60.171 1.768 60.501 1.58 60.678 1.397 c
-60.854 1.22 60.942 0.992 60.942 0.721 c
-60.942 0.368 60.817 0.088 60.575 -0.118 c
-60.34 -0.324 60.024 -0.426 59.634 -0.426 c
-59.211 -0.426 58.873 -0.309 58.619 -0.073 c
-58.363 0.169 58.237 0.474 58.237 0.838 c
-58.885 0.838 l
-58.892 0.611 58.962 0.434 59.09 0.309 c
-59.215 0.191 59.399 0.133 59.634 0.133 c
-59.847 0.133 60.009 0.181 60.119 0.279 c
-60.236 0.375 60.296 0.503 60.296 0.661 c
-61.824 0 m
-61.824 0.118 61.857 0.214 61.927 0.294 c
-61.993 0.372 62.096 0.412 62.236 0.412 c
-62.382 0.412 62.49 0.372 62.559 0.294 c
-62.636 0.214 62.677 0.118 62.677 0 c
-62.677 -0.11 62.636 -0.202 62.559 -0.279 c
-62.49 -0.357 62.382 -0.397 62.236 -0.397 c
-62.096 -0.397 61.993 -0.357 61.927 -0.279 c
-61.857 -0.202 61.824 -0.11 61.824 0 c
-66.602 1.338 m
-66.675 0.735 l
-66.777 1.264 l
-67.631 4.998 l
-68.189 4.998 l
-69.027 1.264 l
-69.129 0.721 l
-69.203 1.338 l
-69.865 4.998 l
-70.54 4.998 l
-69.468 -0.353 l
-68.865 -0.353 l
-67.968 3.543 l
-67.909 3.866 l
-67.866 3.543 l
-66.939 -0.353 l
-66.322 -0.353 l
-65.264 4.998 l
-65.94 4.998 l
-h
-71.864 3.219 m
-72.117 3.543 72.437 3.705 72.819 3.705 c
-73.524 3.705 73.881 3.234 73.892 2.294 c
-73.892 -0.353 l
-73.245 -0.353 l
-73.245 2.263 l
-73.245 2.576 73.19 2.797 73.083 2.926 c
-72.973 3.05 72.819 3.117 72.613 3.117 c
-72.455 3.117 72.308 3.061 72.173 2.955 c
-72.044 2.845 71.941 2.708 71.864 2.543 c
-71.864 -0.353 l
-71.217 -0.353 l
-71.217 5.292 l
-71.864 5.292 l
-h
-76.273 -0.426 m
-75.774 -0.426 75.392 -0.279 75.126 0.015 c
-74.862 0.309 74.73 0.742 74.73 1.323 c
-74.73 1.793 l
-74.73 2.389 74.855 2.855 75.112 3.19 c
-75.377 3.532 75.737 3.705 76.2 3.705 c
-76.659 3.705 77.001 3.55 77.229 3.248 c
-77.464 2.955 77.586 2.492 77.596 1.867 c
-77.596 1.44 l
-75.377 1.44 l
-75.377 1.353 l
-75.377 0.919 75.454 0.607 75.612 0.412 c
-75.777 0.224 76.009 0.133 76.302 0.133 c
-76.497 0.133 76.67 0.166 76.817 0.235 c
-76.964 0.312 77.1 0.43 77.229 0.588 c
-77.567 0.177 l
-77.28 -0.228 76.85 -0.426 76.273 -0.426 c
-76.2 3.146 m
-75.924 3.146 75.722 3.05 75.597 2.866 c
-75.469 2.679 75.396 2.389 75.377 1.999 c
-76.95 1.999 l
-76.95 2.088 l
-76.927 2.469 76.861 2.738 76.744 2.896 c
-76.626 3.061 76.443 3.146 76.2 3.146 c
-78.993 3.631 m
-79.007 3.19 l
-79.261 3.532 79.585 3.705 79.978 3.705 c
-80.683 3.705 81.04 3.234 81.05 2.294 c
-81.05 -0.353 l
-80.404 -0.353 l
-80.404 2.263 l
-80.404 2.576 80.349 2.797 80.242 2.926 c
-80.132 3.05 79.978 3.117 79.772 3.117 c
-79.614 3.117 79.467 3.061 79.331 2.955 c
-79.202 2.845 79.099 2.708 79.022 2.543 c
-79.022 -0.353 l
-78.375 -0.353 l
-78.375 3.631 l
-h
-f
-Q
-396.523 277.071 -1.794 0.866 re
-399.256 277.071 -1.793 0.866 re
-401.138 278.835 m
-401.362 279.117 401.637 279.261 401.961 279.261 c
-402.321 279.261 402.597 279.132 402.784 278.878 c
-402.979 278.622 403.078 278.24 403.078 277.733 c
-403.078 275.204 l
-402.034 275.204 l
-402.034 277.718 l
-402.034 277.953 401.994 278.118 401.917 278.217 c
-401.847 278.324 401.733 278.379 401.579 278.379 c
-401.391 278.379 401.244 278.294 401.138 278.13 c
-401.138 275.204 l
-400.094 275.204 l
-400.094 280.848 l
-401.138 280.848 l
-h
-405.709 275.204 m
-405.68 275.263 405.651 275.366 405.62 275.512 c
-405.433 275.256 405.184 275.131 404.872 275.131 c
-404.537 275.131 404.257 275.237 404.033 275.454 c
-403.817 275.678 403.71 275.969 403.71 276.322 c
-403.71 276.733 403.842 277.049 404.107 277.276 c
-404.371 277.512 404.754 277.629 405.254 277.629 c
-405.577 277.629 l
-405.577 277.953 l
-405.577 278.13 405.54 278.25 405.474 278.321 c
-405.415 278.398 405.327 278.438 405.209 278.438 c
-404.952 278.438 404.827 278.284 404.827 277.982 c
-403.783 277.982 l
-403.783 278.354 403.92 278.658 404.195 278.893 c
-404.467 279.136 404.816 279.261 405.238 279.261 c
-405.68 279.261 406.017 279.144 406.253 278.909 c
-406.495 278.68 406.62 278.357 406.62 277.938 c
-406.62 276.071 l
-406.62 275.726 406.668 275.458 406.767 275.263 c
-406.767 275.204 l
-h
-405.107 275.954 m
-405.213 275.954 405.305 275.972 405.385 276.013 c
-405.474 276.06 405.537 276.119 405.577 276.189 c
-405.577 277.012 l
-405.327 277.012 l
-405.15 277.012 405.007 276.954 404.901 276.836 c
-404.801 276.725 404.754 276.578 404.754 276.395 c
-404.754 276.1 404.872 275.954 405.107 275.954 c
-409.325 278.173 m
-408.987 278.203 l
-408.7 278.203 408.509 278.078 408.413 277.835 c
-408.413 275.204 l
-407.37 275.204 l
-407.37 279.188 l
-408.34 279.188 l
-408.369 278.747 l
-408.535 279.088 408.766 279.261 409.061 279.261 c
-409.178 279.261 409.27 279.239 409.34 279.202 c
-h
-409.649 277.321 m
-409.649 277.968 409.755 278.452 409.971 278.776 c
-410.196 279.1 410.519 279.261 410.942 279.261 c
-411.255 279.261 411.508 279.129 411.706 278.864 c
-411.706 280.848 l
-412.764 280.848 l
-412.764 275.204 l
-411.81 275.204 l
-411.765 275.616 l
-411.548 275.292 411.272 275.131 410.942 275.131 c
-410.53 275.131 410.21 275.285 409.986 275.601 c
-409.77 275.924 409.656 276.395 409.649 277.012 c
-h
-410.692 277.056 m
-410.692 276.663 410.729 276.387 410.81 276.233 c
-410.898 276.075 411.045 275.998 411.251 275.998 c
-411.457 275.998 411.607 276.09 411.706 276.277 c
-411.706 278.085 l
-411.607 278.28 411.457 278.379 411.251 278.379 c
-411.052 278.379 410.912 278.298 410.825 278.144 c
-410.736 277.997 410.692 277.725 410.692 277.336 c
-h
-f
-416.057 275.204 -0.646 3.984 re
-416.101 280.231 m
-416.101 280.121 416.072 280.029 416.013 279.952 c
-415.954 279.882 415.858 279.849 415.733 279.849 c
-415.616 279.849 415.521 279.882 415.455 279.952 c
-415.396 280.029 415.366 280.121 415.366 280.231 c
-415.366 280.349 415.396 280.441 415.455 280.511 c
-415.521 280.588 415.616 280.628 415.733 280.628 c
-415.858 280.628 415.954 280.588 416.013 280.511 c
-416.072 280.43 416.101 280.337 416.101 280.231 c
-419.012 276.218 m
-419.012 276.366 418.956 276.486 418.85 276.586 c
-418.74 276.681 418.534 276.798 418.233 276.939 c
-417.888 277.085 417.645 277.207 417.497 277.306 c
-417.35 277.413 417.24 277.53 417.175 277.659 c
-417.104 277.783 417.071 277.941 417.071 278.13 c
-417.071 278.452 417.189 278.72 417.424 278.938 c
-417.659 279.15 417.961 279.261 418.335 279.261 c
-418.717 279.261 419.026 279.147 419.261 278.923 c
-419.496 278.695 419.614 278.408 419.614 278.055 c
-418.968 278.055 l
-418.968 278.232 418.908 278.383 418.791 278.512 c
-418.673 278.637 418.519 278.703 418.335 278.703 c
-418.137 278.703 417.986 278.647 417.88 278.541 c
-417.77 278.442 417.718 278.309 417.718 278.144 c
-417.718 278.015 417.755 277.909 417.836 277.82 c
-417.913 277.739 418.104 277.637 418.409 277.512 c
-418.887 277.324 419.218 277.137 419.394 276.954 c
-419.571 276.777 419.658 276.549 419.658 276.277 c
-419.658 275.924 419.534 275.645 419.291 275.439 c
-419.056 275.233 418.74 275.131 418.35 275.131 c
-417.928 275.131 417.589 275.248 417.336 275.483 c
-417.079 275.726 416.954 276.031 416.954 276.395 c
-417.601 276.395 l
-417.608 276.167 417.678 275.99 417.807 275.865 c
-417.931 275.748 418.115 275.689 418.35 275.689 c
-418.563 275.689 418.725 275.737 418.835 275.836 c
-418.953 275.932 419.012 276.06 419.012 276.218 c
-424.244 275.557 m
-424.028 275.27 423.716 275.131 423.303 275.131 c
-422.94 275.131 422.665 275.252 422.48 275.498 c
-422.304 275.751 422.208 276.115 422.201 276.586 c
-422.201 279.188 l
-422.848 279.188 l
-422.848 276.644 l
-422.848 276.016 423.032 275.703 423.407 275.703 c
-423.808 275.703 424.082 275.88 424.23 276.233 c
-424.23 279.188 l
-424.876 279.188 l
-424.876 275.204 l
-424.259 275.204 l
-h
-427.802 276.218 m
-427.802 276.366 427.747 276.486 427.64 276.586 c
-427.53 276.681 427.324 276.798 427.022 276.939 c
-426.677 277.085 426.434 277.207 426.288 277.306 c
-426.141 277.413 426.031 277.53 425.964 277.659 c
-425.894 277.783 425.861 277.941 425.861 278.13 c
-425.861 278.452 425.979 278.72 426.214 278.938 c
-426.449 279.15 426.75 279.261 427.126 279.261 c
-427.508 279.261 427.816 279.147 428.051 278.923 c
-428.287 278.695 428.404 278.408 428.404 278.055 c
-427.758 278.055 l
-427.758 278.232 427.699 278.383 427.581 278.512 c
-427.463 278.637 427.309 278.703 427.126 278.703 c
-426.927 278.703 426.777 278.647 426.669 278.541 c
-426.559 278.442 426.509 278.309 426.509 278.144 c
-426.509 278.015 426.545 277.909 426.626 277.82 c
-426.703 277.739 426.894 277.637 427.199 277.512 c
-427.677 277.324 428.007 277.137 428.184 276.954 c
-428.36 276.777 428.448 276.549 428.448 276.277 c
-428.448 275.924 428.323 275.645 428.081 275.439 c
-427.845 275.233 427.53 275.131 427.14 275.131 c
-426.717 275.131 426.38 275.248 426.126 275.483 c
-425.869 275.726 425.744 276.031 425.744 276.395 c
-426.391 276.395 l
-426.398 276.167 426.468 275.99 426.596 275.865 c
-426.721 275.748 426.905 275.689 427.14 275.689 c
-427.353 275.689 427.515 275.737 427.625 275.836 c
-427.743 275.932 427.802 276.06 427.802 276.218 c
-430.712 275.131 m
-430.212 275.131 429.83 275.277 429.566 275.572 c
-429.301 275.865 429.169 276.299 429.169 276.879 c
-429.169 277.35 l
-429.169 277.945 429.294 278.412 429.551 278.747 c
-429.815 279.088 430.176 279.261 430.638 279.261 c
-431.098 279.261 431.44 279.107 431.668 278.805 c
-431.903 278.512 432.024 278.049 432.035 277.424 c
-432.035 276.997 l
-429.815 276.997 l
-429.815 276.909 l
-429.815 276.476 429.892 276.163 430.05 275.969 c
-430.216 275.781 430.447 275.689 430.742 275.689 c
-430.937 275.689 431.109 275.722 431.256 275.792 c
-431.403 275.869 431.539 275.987 431.668 276.145 c
-432.005 275.734 l
-431.719 275.329 431.289 275.131 430.712 275.131 c
-430.638 278.703 m
-430.363 278.703 430.161 278.607 430.036 278.423 c
-429.908 278.236 429.834 277.945 429.815 277.556 c
-431.388 277.556 l
-431.388 277.644 l
-431.367 278.026 431.3 278.294 431.182 278.452 c
-431.065 278.618 430.881 278.703 430.638 278.703 c
-432.682 277.38 m
-432.682 277.986 432.792 278.452 433.019 278.776 c
-433.255 279.1 433.582 279.261 434.004 279.261 c
-434.387 279.261 434.685 279.103 434.901 278.791 c
-434.901 280.848 l
-435.548 280.848 l
-435.548 275.204 l
-434.96 275.204 l
-434.916 275.63 l
-434.71 275.296 434.405 275.131 434.004 275.131 c
-433.593 275.131 433.27 275.285 433.035 275.601 c
-432.799 275.924 432.682 276.38 432.682 276.968 c
-h
-433.329 276.997 m
-433.329 276.557 433.391 276.226 433.52 276.013 c
-433.655 275.807 433.876 275.703 434.181 275.703 c
-434.505 275.703 434.743 275.865 434.901 276.189 c
-434.901 278.203 l
-434.733 278.515 434.494 278.673 434.181 278.673 c
-433.876 278.673 433.655 278.57 433.52 278.365 c
-433.391 278.159 433.329 277.835 433.329 277.394 c
-h
-436.562 274.131 m
-436.165 274.396 l
-436.4 274.719 436.522 275.053 436.533 275.395 c
-436.533 276.013 l
-437.194 276.013 l
-437.194 275.483 l
-437.194 275.226 437.129 274.98 437.003 274.734 c
-436.886 274.491 436.739 274.289 436.562 274.131 c
-441.796 275.204 m
-441.755 275.292 441.729 275.439 441.721 275.645 c
-441.486 275.3 441.193 275.131 440.84 275.131 c
-440.476 275.131 440.193 275.226 439.988 275.425 c
-439.789 275.63 439.693 275.917 439.693 276.291 c
-439.693 276.692 439.829 277.012 440.105 277.247 c
-440.377 277.49 440.751 277.615 441.222 277.615 c
-441.707 277.615 l
-441.707 278.041 l
-441.707 278.276 441.652 278.442 441.545 278.541 c
-441.435 278.647 441.273 278.703 441.06 278.703 c
-440.861 278.703 440.701 278.643 440.575 278.526 c
-440.458 278.408 440.399 278.261 440.399 278.085 c
-439.752 278.085 l
-439.752 278.28 439.811 278.471 439.928 278.658 c
-440.053 278.842 440.215 278.989 440.414 279.1 c
-440.62 279.206 440.847 279.261 441.104 279.261 c
-441.505 279.261 441.81 279.158 442.016 278.953 c
-442.229 278.747 442.343 278.452 442.353 278.07 c
-442.353 276.056 l
-442.353 275.751 442.39 275.487 442.471 275.263 c
-442.471 275.204 l
-h
-440.928 275.718 m
-441.093 275.718 441.244 275.763 441.384 275.851 c
-441.53 275.939 441.638 276.05 441.707 276.189 c
-441.707 277.13 l
-441.339 277.13 l
-441.023 277.13 440.781 277.06 440.605 276.924 c
-440.428 276.796 440.34 276.607 440.34 276.366 c
-440.34 276.137 440.384 275.972 440.472 275.865 c
-440.56 275.766 440.711 275.718 440.928 275.718 c
-444.059 275.204 -0.647 5.644 re
-445.779 275.204 -0.647 5.644 re
-449.894 275.689 m
-450.108 275.689 450.28 275.751 450.409 275.88 c
-450.544 276.016 450.619 276.208 450.629 276.453 c
-451.246 276.453 l
-451.225 276.071 451.089 275.751 450.835 275.498 c
-450.578 275.252 450.265 275.131 449.894 275.131 c
-449.402 275.131 449.027 275.281 448.763 275.586 c
-448.505 275.898 448.381 276.366 448.381 276.983 c
-448.381 277.424 l
-448.381 278.019 448.505 278.475 448.763 278.791 c
-449.027 279.103 449.402 279.261 449.894 279.261 c
-450.295 279.261 450.615 279.129 450.85 278.864 c
-451.092 278.607 451.225 278.261 451.246 277.82 c
-450.629 277.82 l
-450.608 278.115 450.534 278.335 450.409 278.482 c
-450.291 278.629 450.118 278.703 449.894 278.703 c
-449.6 278.703 449.384 278.603 449.247 278.408 c
-449.108 278.221 449.035 277.912 449.027 277.482 c
-449.027 276.968 l
-449.027 276.497 449.093 276.163 449.233 275.969 c
-449.38 275.781 449.6 275.689 449.894 275.689 c
-452.643 278.776 m
-452.896 279.1 453.216 279.261 453.598 279.261 c
-454.304 279.261 454.66 278.791 454.672 277.85 c
-454.672 275.204 l
-454.025 275.204 l
-454.025 277.82 l
-454.025 278.132 453.97 278.354 453.863 278.482 c
-453.753 278.607 453.598 278.673 453.393 278.673 c
-453.235 278.673 453.087 278.618 452.952 278.512 c
-452.823 278.401 452.72 278.265 452.643 278.099 c
-452.643 275.204 l
-451.996 275.204 l
-451.996 280.848 l
-452.643 280.848 l
-h
-457.671 275.204 m
-457.63 275.292 457.604 275.439 457.596 275.645 c
-457.361 275.3 457.068 275.131 456.715 275.131 c
-456.351 275.131 456.068 275.226 455.862 275.425 c
-455.664 275.63 455.568 275.917 455.568 276.291 c
-455.568 276.692 455.704 277.012 455.98 277.247 c
-456.252 277.49 456.626 277.615 457.097 277.615 c
-457.582 277.615 l
-457.582 278.041 l
-457.582 278.276 457.527 278.442 457.42 278.541 c
-457.31 278.647 457.148 278.703 456.935 278.703 c
-456.736 278.703 456.576 278.643 456.45 278.526 c
-456.333 278.408 456.274 278.261 456.274 278.085 c
-455.627 278.085 l
-455.627 278.28 455.686 278.471 455.803 278.658 c
-455.928 278.842 456.09 278.989 456.289 279.1 c
-456.495 279.206 456.722 279.261 456.979 279.261 c
-457.38 279.261 457.685 279.158 457.891 278.953 c
-458.104 278.747 458.218 278.452 458.228 278.07 c
-458.228 276.056 l
-458.228 275.751 458.265 275.487 458.346 275.263 c
-458.346 275.204 l
-h
-456.803 275.718 m
-456.969 275.718 457.119 275.763 457.259 275.851 c
-457.405 275.939 457.513 276.05 457.582 276.189 c
-457.582 277.13 l
-457.214 277.13 l
-456.898 277.13 456.656 277.06 456.48 276.924 c
-456.303 276.796 456.215 276.607 456.215 276.366 c
-456.215 276.137 456.259 275.972 456.347 275.865 c
-456.435 275.766 456.586 275.718 456.803 275.718 c
-459.846 279.188 m
-459.861 278.747 l
-460.114 279.088 460.437 279.261 460.831 279.261 c
-461.536 279.261 461.893 278.791 461.904 277.85 c
-461.904 275.204 l
-461.257 275.204 l
-461.257 277.82 l
-461.257 278.132 461.202 278.354 461.095 278.482 c
-460.985 278.607 460.831 278.673 460.625 278.673 c
-460.466 278.673 460.32 278.618 460.183 278.512 c
-460.055 278.401 459.952 278.265 459.875 278.099 c
-459.875 275.204 l
-459.228 275.204 l
-459.228 279.188 l
-h
-462.741 277.38 m
-462.741 277.997 462.851 278.46 463.08 278.776 c
-463.304 279.1 463.638 279.261 464.079 279.261 c
-464.48 279.261 464.784 279.084 464.99 278.732 c
-465.035 279.188 l
-465.623 279.188 l
-465.623 275.16 l
-465.623 274.671 465.494 274.292 465.24 274.028 c
-464.983 273.764 464.63 273.631 464.181 273.631 c
-463.984 273.631 463.763 273.683 463.52 273.779 c
-463.275 273.877 463.094 273.999 462.976 274.146 c
-463.241 274.587 l
-463.506 274.322 463.803 274.19 464.138 274.19 c
-464.674 274.19 464.95 274.484 464.961 275.072 c
-464.961 275.601 l
-464.755 275.285 464.454 275.131 464.064 275.131 c
-463.653 275.131 463.329 275.281 463.094 275.586 c
-462.866 275.898 462.749 276.351 462.741 276.939 c
-h
-463.403 276.997 m
-463.403 276.557 463.466 276.226 463.594 276.013 c
-463.719 275.807 463.936 275.703 464.241 275.703 c
-464.564 275.703 464.803 275.869 464.961 276.204 c
-464.961 278.188 l
-464.792 278.512 464.553 278.673 464.241 278.673 c
-463.946 278.673 463.73 278.57 463.594 278.365 c
-463.466 278.159 463.403 277.835 463.403 277.394 c
-h
-468.004 275.131 m
-467.504 275.131 467.121 275.277 466.857 275.572 c
-466.593 275.865 466.46 276.299 466.46 276.879 c
-466.46 277.35 l
-466.46 277.945 466.585 278.412 466.843 278.747 c
-467.107 279.088 467.467 279.261 467.93 279.261 c
-468.389 279.261 468.731 279.107 468.959 278.805 c
-469.195 278.512 469.315 278.049 469.326 277.424 c
-469.326 276.997 l
-467.107 276.997 l
-467.107 276.909 l
-467.107 276.476 467.184 276.163 467.342 275.969 c
-467.508 275.781 467.739 275.689 468.033 275.689 c
-468.228 275.689 468.401 275.722 468.547 275.792 c
-468.694 275.869 468.831 275.987 468.959 276.145 c
-469.297 275.734 l
-469.01 275.329 468.58 275.131 468.004 275.131 c
-467.93 278.703 m
-467.655 278.703 467.452 278.607 467.327 278.423 c
-467.198 278.236 467.125 277.945 467.107 277.556 c
-468.68 277.556 l
-468.68 277.644 l
-468.658 278.026 468.592 278.294 468.474 278.452 c
-468.356 278.618 468.173 278.703 467.93 278.703 c
-472.046 276.218 m
-472.046 276.366 471.991 276.486 471.884 276.586 c
-471.774 276.681 471.568 276.798 471.267 276.939 c
-470.922 277.085 470.679 277.207 470.531 277.306 c
-470.385 277.413 470.275 277.53 470.209 277.659 c
-470.139 277.783 470.105 277.941 470.105 278.13 c
-470.105 278.452 470.223 278.72 470.458 278.938 c
-470.693 279.15 470.995 279.261 471.37 279.261 c
-471.752 279.261 472.06 279.147 472.295 278.923 c
-472.531 278.695 472.648 278.408 472.648 278.055 c
-472.002 278.055 l
-472.002 278.232 471.943 278.383 471.825 278.512 c
-471.707 278.637 471.553 278.703 471.37 278.703 c
-471.171 278.703 471.021 278.647 470.914 278.541 c
-470.804 278.442 470.753 278.309 470.753 278.144 c
-470.753 278.015 470.789 277.909 470.87 277.82 c
-470.947 277.739 471.138 277.637 471.443 277.512 c
-471.921 277.324 472.252 277.137 472.428 276.954 c
-472.605 276.777 472.692 276.549 472.692 276.277 c
-472.692 275.924 472.568 275.645 472.325 275.439 c
-472.09 275.233 471.774 275.131 471.385 275.131 c
-470.961 275.131 470.624 275.248 470.371 275.483 c
-470.113 275.726 469.988 276.031 469.988 276.395 c
-470.635 276.395 l
-470.642 276.167 470.712 275.99 470.841 275.865 c
-470.965 275.748 471.15 275.689 471.385 275.689 c
-471.597 275.689 471.759 275.737 471.869 275.836 c
-471.987 275.932 472.046 276.06 472.046 276.218 c
-477.293 275.204 m
-477.253 275.292 477.228 275.439 477.22 275.645 c
-476.985 275.3 476.69 275.131 476.338 275.131 c
-475.975 275.131 475.691 275.226 475.485 275.425 c
-475.287 275.63 475.192 275.917 475.192 276.291 c
-475.192 276.692 475.327 277.012 475.603 277.247 c
-475.875 277.49 476.25 277.615 476.721 277.615 c
-477.205 277.615 l
-477.205 278.041 l
-477.205 278.276 477.15 278.442 477.043 278.541 c
-476.933 278.647 476.771 278.703 476.559 278.703 c
-476.36 278.703 476.198 278.643 476.073 278.526 c
-475.956 278.408 475.897 278.261 475.897 278.085 c
-475.25 278.085 l
-475.25 278.28 475.309 278.471 475.427 278.658 c
-475.551 278.842 475.713 278.989 475.912 279.1 c
-476.118 279.206 476.345 279.261 476.603 279.261 c
-477.003 279.261 477.309 279.158 477.514 278.953 c
-477.727 278.747 477.841 278.452 477.852 278.07 c
-477.852 276.056 l
-477.852 275.751 477.889 275.487 477.97 275.263 c
-477.97 275.204 l
-h
-476.426 275.718 m
-476.592 275.718 476.742 275.763 476.881 275.851 c
-477.029 275.939 477.135 276.05 477.205 276.189 c
-477.205 277.13 l
-476.838 277.13 l
-476.522 277.13 476.279 277.06 476.103 276.924 c
-475.927 276.796 475.838 276.607 475.838 276.366 c
-475.838 276.137 475.882 275.972 475.971 275.865 c
-476.058 275.766 476.21 275.718 476.426 275.718 c
-480.498 278.57 m
-480.409 278.589 480.31 278.6 480.204 278.6 c
-479.869 278.6 479.634 278.416 479.499 278.055 c
-479.499 275.204 l
-478.851 275.204 l
-478.851 279.188 l
-479.484 279.188 l
-479.499 278.776 l
-479.674 279.1 479.917 279.261 480.233 279.261 c
-480.34 279.261 480.428 279.239 480.498 279.202 c
-h
-482.497 275.131 m
-481.997 275.131 481.615 275.277 481.35 275.572 c
-481.086 275.865 480.954 276.299 480.954 276.879 c
-480.954 277.35 l
-480.954 277.945 481.078 278.412 481.336 278.747 c
-481.6 279.088 481.96 279.261 482.423 279.261 c
-482.882 279.261 483.225 279.107 483.452 278.805 c
-483.688 278.512 483.809 278.049 483.819 277.424 c
-483.819 276.997 l
-481.6 276.997 l
-481.6 276.909 l
-481.6 276.476 481.677 276.163 481.835 275.969 c
-482.001 275.781 482.232 275.689 482.526 275.689 c
-482.721 275.689 482.894 275.722 483.04 275.792 c
-483.188 275.869 483.324 275.987 483.452 276.145 c
-483.79 275.734 l
-483.504 275.329 483.074 275.131 482.497 275.131 c
-482.423 278.703 m
-482.148 278.703 481.945 278.607 481.82 278.423 c
-481.692 278.236 481.619 277.945 481.6 277.556 c
-483.173 277.556 l
-483.173 277.644 l
-483.151 278.026 483.085 278.294 482.967 278.452 c
-482.849 278.618 482.666 278.703 482.423 278.703 c
-486.186 277.38 m
-486.186 277.986 486.296 278.452 486.524 278.776 c
-486.759 279.1 487.087 279.261 487.509 279.261 c
-487.892 279.261 488.189 279.103 488.405 278.791 c
-488.405 280.848 l
-489.053 280.848 l
-489.053 275.204 l
-488.465 275.204 l
-488.421 275.63 l
-488.215 275.296 487.91 275.131 487.509 275.131 c
-487.098 275.131 486.774 275.285 486.539 275.601 c
-486.304 275.924 486.186 276.38 486.186 276.968 c
-h
-486.833 276.997 m
-486.833 276.557 486.896 276.226 487.024 276.013 c
-487.16 275.807 487.381 275.703 487.686 275.703 c
-488.009 275.703 488.248 275.865 488.405 276.189 c
-488.405 278.203 l
-488.237 278.515 487.998 278.673 487.686 278.673 c
-487.381 278.673 487.16 278.57 487.024 278.365 c
-486.896 278.159 486.833 277.835 486.833 277.394 c
-h
-490.757 275.204 -0.646 3.984 re
-490.802 280.231 m
-490.802 280.121 490.772 280.029 490.714 279.952 c
-490.655 279.882 490.56 279.849 490.435 279.849 c
-490.317 279.849 490.221 279.882 490.155 279.952 c
-490.096 280.029 490.067 280.121 490.067 280.231 c
-490.067 280.349 490.096 280.441 490.155 280.511 c
-490.221 280.588 490.317 280.628 490.435 280.628 c
-490.56 280.628 490.655 280.588 490.714 280.511 c
-490.772 280.43 490.802 280.337 490.802 280.231 c
-493.712 276.218 m
-493.712 276.366 493.658 276.486 493.55 276.586 c
-493.44 276.681 493.234 276.798 492.933 276.939 c
-492.588 277.085 492.345 277.207 492.199 277.306 c
-492.051 277.413 491.941 277.53 491.875 277.659 c
-491.805 277.783 491.772 277.941 491.772 278.13 c
-491.772 278.452 491.89 278.72 492.125 278.938 c
-492.36 279.15 492.661 279.261 493.036 279.261 c
-493.419 279.261 493.727 279.147 493.962 278.923 c
-494.198 278.695 494.315 278.408 494.315 278.055 c
-493.668 278.055 l
-493.668 278.232 493.61 278.383 493.492 278.512 c
-493.374 278.637 493.22 278.703 493.036 278.703 c
-492.837 278.703 492.687 278.647 492.581 278.541 c
-492.47 278.442 492.419 278.309 492.419 278.144 c
-492.419 278.015 492.455 277.909 492.536 277.82 c
-492.613 277.739 492.804 277.637 493.109 277.512 c
-493.587 277.324 493.918 277.137 494.094 276.954 c
-494.271 276.777 494.359 276.549 494.359 276.277 c
-494.359 275.924 494.234 275.645 493.992 275.439 c
-493.756 275.233 493.44 275.131 493.051 275.131 c
-492.628 275.131 492.29 275.248 492.037 275.483 c
-491.779 275.726 491.655 276.031 491.655 276.395 c
-492.301 276.395 l
-492.309 276.167 492.378 275.99 492.507 275.865 c
-492.632 275.748 492.816 275.689 493.051 275.689 c
-493.264 275.689 493.425 275.737 493.536 275.836 c
-493.654 275.932 493.712 276.06 493.712 276.218 c
-496.579 275.689 m
-496.792 275.689 496.964 275.751 497.093 275.88 c
-497.229 276.016 497.302 276.208 497.313 276.453 c
-497.93 276.453 l
-497.909 276.071 497.772 275.751 497.519 275.498 c
-497.263 275.252 496.95 275.131 496.579 275.131 c
-496.087 275.131 495.711 275.281 495.447 275.586 c
-495.189 275.898 495.065 276.366 495.065 276.983 c
-495.065 277.424 l
-495.065 278.019 495.189 278.475 495.447 278.791 c
-495.711 279.103 496.087 279.261 496.579 279.261 c
-496.979 279.261 497.299 279.129 497.534 278.864 c
-497.776 278.607 497.909 278.261 497.93 277.82 c
-497.313 277.82 l
-497.292 278.115 497.218 278.335 497.093 278.482 c
-496.976 278.629 496.803 278.703 496.579 278.703 c
-496.284 278.703 496.068 278.603 495.931 278.408 c
-495.792 278.221 495.719 277.912 495.711 277.482 c
-495.711 276.968 l
-495.711 276.497 495.777 276.163 495.917 275.969 c
-496.064 275.781 496.284 275.689 496.579 275.689 c
-500.724 275.204 m
-500.683 275.292 500.658 275.439 500.65 275.645 c
-500.415 275.3 500.121 275.131 499.769 275.131 c
-499.405 275.131 499.121 275.226 498.915 275.425 c
-498.717 275.63 498.622 275.917 498.622 276.291 c
-498.622 276.692 498.757 277.012 499.033 277.247 c
-499.305 277.49 499.68 277.615 500.151 277.615 c
-500.635 277.615 l
-500.635 278.041 l
-500.635 278.276 500.581 278.442 500.474 278.541 c
-500.363 278.647 500.202 278.703 499.989 278.703 c
-499.79 278.703 499.628 278.643 499.503 278.526 c
-499.386 278.408 499.327 278.261 499.327 278.085 c
-498.68 278.085 l
-498.68 278.28 498.74 278.471 498.857 278.658 c
-498.982 278.842 499.144 278.989 499.342 279.1 c
-499.548 279.206 499.775 279.261 500.033 279.261 c
-500.434 279.261 500.739 279.158 500.945 278.953 c
-501.157 278.747 501.271 278.452 501.282 278.07 c
-501.282 276.056 l
-501.282 275.751 501.319 275.487 501.4 275.263 c
-501.4 275.204 l
-h
-499.856 275.718 m
-500.022 275.718 500.172 275.763 500.312 275.851 c
-500.459 275.939 500.565 276.05 500.635 276.189 c
-500.635 277.13 l
-500.268 277.13 l
-499.952 277.13 499.709 277.06 499.534 276.924 c
-499.357 276.796 499.268 276.607 499.268 276.366 c
-499.268 276.137 499.312 275.972 499.401 275.865 c
-499.489 275.766 499.64 275.718 499.856 275.718 c
-503.928 278.57 m
-503.84 278.589 503.74 278.6 503.634 278.6 c
-503.3 278.6 503.065 278.416 502.929 278.055 c
-502.929 275.204 l
-502.281 275.204 l
-502.281 279.188 l
-502.914 279.188 l
-502.929 278.776 l
-503.105 279.1 503.347 279.261 503.663 279.261 c
-503.771 279.261 503.858 279.239 503.928 279.202 c
-h
-504.369 277.38 m
-504.369 277.986 504.479 278.452 504.708 278.776 c
-504.943 279.1 505.269 279.261 505.692 279.261 c
-506.074 279.261 506.372 279.103 506.589 278.791 c
-506.589 280.848 l
-507.235 280.848 l
-507.235 275.204 l
-506.647 275.204 l
-506.603 275.63 l
-506.397 275.296 506.092 275.131 505.692 275.131 c
-505.28 275.131 504.957 275.285 504.722 275.601 c
-504.486 275.924 504.369 276.38 504.369 276.968 c
-h
-505.016 276.997 m
-505.016 276.557 505.078 276.226 505.207 276.013 c
-505.343 275.807 505.564 275.703 505.868 275.703 c
-506.192 275.703 506.431 275.865 506.589 276.189 c
-506.589 278.203 l
-506.42 278.515 506.181 278.673 505.868 278.673 c
-505.564 278.673 505.343 278.57 505.207 278.365 c
-505.078 278.159 505.016 277.835 505.016 277.394 c
-h
-509.661 275.131 m
-509.161 275.131 508.779 275.277 508.514 275.572 c
-508.249 275.865 508.118 276.299 508.118 276.879 c
-508.118 277.35 l
-508.118 277.945 508.242 278.412 508.5 278.747 c
-508.764 279.088 509.124 279.261 509.587 279.261 c
-510.046 279.261 510.389 279.107 510.616 278.805 c
-510.852 278.512 510.973 278.049 510.983 277.424 c
-510.983 276.997 l
-508.764 276.997 l
-508.764 276.909 l
-508.764 276.476 508.841 276.163 508.999 275.969 c
-509.165 275.781 509.396 275.689 509.69 275.689 c
-509.885 275.689 510.058 275.722 510.204 275.792 c
-510.352 275.869 510.487 275.987 510.616 276.145 c
-510.954 275.734 l
-510.668 275.329 510.237 275.131 509.661 275.131 c
-509.587 278.703 m
-509.312 278.703 509.109 278.607 508.984 278.423 c
-508.856 278.236 508.783 277.945 508.764 277.556 c
-510.337 277.556 l
-510.337 277.644 l
-510.315 278.026 510.249 278.294 510.131 278.452 c
-510.013 278.618 509.83 278.703 509.587 278.703 c
-511.63 277.38 m
-511.63 277.986 511.741 278.452 511.968 278.776 c
-512.203 279.1 512.531 279.261 512.953 279.261 c
-513.335 279.261 513.633 279.103 513.85 278.791 c
-513.85 280.848 l
-514.497 280.848 l
-514.497 275.204 l
-513.909 275.204 l
-513.865 275.63 l
-513.659 275.296 513.354 275.131 512.953 275.131 c
-512.542 275.131 512.218 275.285 511.983 275.601 c
-511.748 275.924 511.63 276.38 511.63 276.968 c
-h
-512.277 276.997 m
-512.277 276.557 512.34 276.226 512.469 276.013 c
-512.604 275.807 512.824 275.703 513.13 275.703 c
-513.453 275.703 513.692 275.865 513.85 276.189 c
-513.85 278.203 l
-513.681 278.515 513.442 278.673 513.13 278.673 c
-512.824 278.673 512.604 278.57 512.469 278.365 c
-512.34 278.159 512.277 277.835 512.277 277.394 c
-h
-515.54 275.557 m
-515.54 275.674 515.573 275.77 515.644 275.851 c
-515.71 275.928 515.812 275.969 515.952 275.969 c
-516.099 275.969 516.205 275.928 516.275 275.851 c
-516.352 275.77 516.392 275.674 516.392 275.557 c
-516.392 275.447 516.352 275.354 516.275 275.277 c
-516.205 275.2 516.099 275.16 515.952 275.16 c
-515.812 275.16 515.71 275.2 515.644 275.277 c
-515.573 275.354 515.54 275.447 515.54 275.557 c
-f
-0.113 0.082 0.09 0 k
-287.665 268.468 234.667 -12.898 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 292.8568 261.629 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.646 -0.243 -0.775 -0.367 -0.881 c
--0.496 -0.992 -0.658 -1.08 -0.852 -1.146 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.807 l
--1.896 -1.807 l
--1.896 -1.263 l
--2.142 -1.256 -2.359 -1.219 -2.543 -1.161 c
--2.719 -1.102 -2.873 -1.024 -2.998 -0.926 c
--3.127 -0.819 -3.23 -0.69 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.213 -3.484 -0.014 c
--2.66 0.133 l
--2.642 0.034 -2.616 -0.058 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.367 c
--2.396 -0.426 -2.322 -0.477 -2.234 -0.514 c
--2.138 -0.554 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.662 l
--1.907 0.662 -1.926 0.666 -1.955 0.676 c
--1.977 0.684 -1.992 0.691 -1.999 0.691 c
--2.167 0.728 -2.329 0.772 -2.484 0.823 c
--2.642 0.882 -2.786 0.96 -2.91 1.058 c
--3.039 1.154 -3.142 1.279 -3.219 1.426 c
--3.289 1.573 -3.322 1.757 -3.322 1.985 c
--3.322 2.18 -3.289 2.345 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.837 c
--2.8 2.933 -2.645 3.003 -2.469 3.043 c
--2.293 3.091 -2.102 3.12 -1.896 3.132 c
--1.896 3.558 l
--1.543 3.558 l
--1.543 3.132 l
--1.319 3.12 -1.128 3.091 -0.97 3.043 c
--0.804 2.992 -0.669 2.918 -0.558 2.822 c
--0.44 2.735 -0.349 2.621 -0.279 2.484 c
--0.202 2.345 -0.143 2.183 -0.103 1.999 c
--0.941 1.882 l
--1.01 2.253 -1.213 2.459 -1.543 2.5 c
--1.543 1.368 l
--1.514 1.368 l
--1.506 1.368 -1.492 1.36 -1.469 1.353 c
--1.294 1.312 -1.117 1.264 -0.941 1.206 c
--0.756 1.147 -0.595 1.066 -0.455 0.971 c
--0.32 0.871 -0.213 0.743 -0.132 0.588 c
--0.044 0.431 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.503 -2.113 2.484 -2.19 2.455 c
--2.26 2.426 -2.319 2.386 -2.366 2.338 c
--2.406 2.297 -2.436 2.249 -2.454 2.191 c
--2.477 2.132 -2.484 2.066 -2.484 1.999 c
--2.484 1.912 -2.469 1.838 -2.439 1.779 c
--2.41 1.721 -2.373 1.669 -2.322 1.632 c
--2.263 1.592 -2.201 1.559 -2.131 1.529 c
--2.065 1.5 -1.984 1.47 -1.896 1.441 c
-h
--0.837 -0.014 m
--0.837 0.092 -0.86 0.177 -0.897 0.235 c
--0.926 0.302 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.53 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.529 -1.028 -0.44 c
--0.904 -0.345 -0.837 -0.201 -0.837 -0.014 c
-6.402 -2.66 m
-6.184 -2.66 5.993 -2.634 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.395 c
-5.284 -2.314 5.185 -2.219 5.108 -2.102 c
-5.039 -1.984 4.991 -1.855 4.961 -1.72 c
-5.858 -1.616 l
-5.895 -1.753 5.964 -1.859 6.064 -1.94 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.057 6.681 -2.028 c
-6.758 -1.999 6.828 -1.944 6.887 -1.866 c
-6.945 -1.797 6.99 -1.705 7.019 -1.587 c
-7.056 -1.469 7.078 -1.323 7.078 -1.146 c
-7.078 -0.955 l
-7.078 -0.889 7.082 -0.83 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.072 c
-6.464 -1.172 6.259 -1.219 6.034 -1.219 c
-5.829 -1.219 5.644 -1.182 5.49 -1.102 c
-5.343 -1.014 5.215 -0.897 5.108 -0.749 c
-5.009 -0.595 4.935 -0.411 4.888 -0.205 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.772 4.836 1.019 4.888 1.235 c
-4.946 1.449 5.027 1.632 5.137 1.779 c
-5.244 1.933 5.376 2.051 5.534 2.132 c
-5.689 2.22 5.876 2.264 6.093 2.264 c
-6.188 2.264 6.288 2.253 6.387 2.234 c
-6.483 2.213 6.571 2.18 6.652 2.132 c
-6.739 2.08 6.817 2.018 6.887 1.941 c
-6.964 1.86 7.026 1.768 7.078 1.661 c
-7.092 1.661 l
-7.092 1.808 l
-7.1 1.867 7.107 1.919 7.107 1.97 c
-7.115 2.029 7.122 2.077 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.151 2.22 c
-8.004 2.22 l
-7.993 2.139 7.982 2.029 7.975 1.882 c
-7.975 1.411 l
-7.975 -1.161 l
-7.975 -1.414 7.938 -1.635 7.871 -1.822 c
-7.802 -2.006 7.699 -2.16 7.563 -2.278 c
-7.423 -2.403 7.258 -2.499 7.063 -2.557 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.53 m
-7.092 0.743 7.067 0.919 7.019 1.058 c
-6.978 1.206 6.924 1.324 6.857 1.411 c
-6.799 1.5 6.729 1.559 6.652 1.588 c
-6.571 1.625 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.621 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.368 c
-5.88 1.279 5.835 1.162 5.799 1.015 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.338 c
-6.049 -0.514 6.211 -0.602 6.417 -0.602 c
-6.483 -0.602 6.556 -0.588 6.637 -0.558 c
-6.725 -0.521 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.176 7.019 -0.029 c
-7.067 0.118 7.092 0.302 7.092 0.53 c
-11.036 -0.646 m
-12.168 -0.646 l
-12.168 -1.263 l
-8.86 -1.263 l
-8.86 -0.646 l
-10.124 -0.646 l
-10.124 1.603 l
-9.199 1.603 l
-9.199 2.22 l
-11.036 2.22 l
-h
-10.124 3.514 0.912 -0.676 re
-10.124 2.837 m
-13.597 1.603 m
-13.053 1.603 l
-13.053 2.22 l
-13.641 2.22 l
-13.92 3.117 l
-14.494 3.117 l
-14.494 2.22 l
-15.728 2.22 l
-15.728 1.603 l
-14.494 1.603 l
-14.494 -0.103 l
-14.494 -0.323 l
-14.501 -0.392 14.523 -0.455 14.552 -0.514 c
-14.589 -0.565 14.645 -0.61 14.714 -0.646 c
-14.791 -0.675 14.905 -0.69 15.052 -0.69 c
-15.188 -0.69 15.324 -0.687 15.464 -0.675 c
-15.599 -0.658 15.732 -0.631 15.861 -0.602 c
-15.861 -1.205 l
-15.78 -1.215 15.703 -1.23 15.626 -1.249 c
-15.545 -1.26 15.468 -1.267 15.391 -1.278 c
-15.31 -1.286 15.221 -1.294 15.125 -1.294 c
-15.038 -1.3 14.938 -1.308 14.832 -1.308 c
-14.645 -1.308 14.483 -1.294 14.346 -1.263 c
-14.218 -1.227 14.104 -1.182 14.009 -1.132 c
-13.92 -1.084 13.847 -1.024 13.788 -0.955 c
-13.729 -0.878 13.685 -0.801 13.656 -0.72 c
-13.627 -0.631 13.604 -0.544 13.597 -0.455 c
-13.586 -0.359 13.582 -0.264 13.582 -0.176 c
-h
-24.133 1.47 m
-24.033 1.478 23.931 1.489 23.823 1.5 c
-23.713 1.518 23.592 1.529 23.456 1.529 c
-23.28 1.529 23.121 1.489 22.986 1.411 c
-22.846 1.341 22.728 1.243 22.633 1.118 c
-22.545 0.989 22.475 0.842 22.427 0.676 c
-22.387 0.508 22.369 0.331 22.369 0.148 c
-22.369 -1.263 l
-21.471 -1.263 l
-21.471 0.985 l
-21.471 1.11 21.461 1.235 21.442 1.353 c
-21.432 1.478 21.417 1.595 21.398 1.706 c
-21.388 1.823 21.373 1.919 21.355 1.999 c
-21.332 2.087 21.314 2.161 21.296 2.22 c
-22.177 2.22 l
-22.185 2.168 22.196 2.117 22.207 2.058 c
-22.225 1.999 22.24 1.933 22.251 1.867 c
-22.269 1.808 22.284 1.742 22.296 1.676 c
-22.302 1.607 22.313 1.544 22.325 1.485 c
-22.339 1.485 l
-22.375 1.603 22.427 1.709 22.486 1.808 c
-22.552 1.904 22.633 1.989 22.722 2.058 c
-22.809 2.124 22.913 2.18 23.03 2.22 c
-23.155 2.257 23.302 2.278 23.471 2.278 c
-23.596 2.278 23.713 2.272 23.823 2.264 c
-23.942 2.253 24.044 2.238 24.133 2.22 c
-h
-26.738 -1.323 m
-26.481 -1.323 26.253 -1.286 26.047 -1.219 c
-25.841 -1.142 25.665 -1.028 25.518 -0.881 c
-25.371 -0.727 25.253 -0.536 25.165 -0.309 c
-25.084 -0.084 25.047 0.181 25.047 0.485 c
-25.047 0.817 25.091 1.096 25.18 1.324 c
-25.275 1.559 25.404 1.742 25.562 1.882 c
-25.727 2.018 25.915 2.117 26.121 2.176 c
-26.327 2.242 26.535 2.278 26.753 2.278 c
-27.025 2.278 27.26 2.228 27.458 2.132 c
-27.664 2.043 27.829 1.912 27.958 1.735 c
-28.094 1.566 28.193 1.36 28.252 1.118 c
-28.318 0.882 28.355 0.618 28.355 0.324 c
-28.355 0.31 l
-25.988 0.31 l
-25.988 0.162 26.003 0.023 26.032 -0.103 c
-26.069 -0.231 26.124 -0.345 26.194 -0.44 c
-26.26 -0.529 26.344 -0.598 26.444 -0.646 c
-26.539 -0.698 26.653 -0.72 26.782 -0.72 c
-26.936 -0.72 27.076 -0.687 27.194 -0.617 c
-27.318 -0.55 27.407 -0.448 27.458 -0.309 c
-28.296 -0.382 l
-28.266 -0.481 28.212 -0.588 28.135 -0.706 c
-28.054 -0.816 27.95 -0.918 27.825 -1.014 c
-27.708 -1.102 27.553 -1.176 27.37 -1.234 c
-27.194 -1.294 26.98 -1.323 26.738 -1.323 c
-26.738 1.706 m
-26.649 1.706 26.562 1.691 26.473 1.661 c
-26.385 1.632 26.304 1.58 26.238 1.515 c
-26.169 1.445 26.109 1.357 26.061 1.25 c
-26.021 1.139 26.003 1.015 26.003 0.867 c
-27.472 0.867 l
-27.472 1.004 27.447 1.125 27.399 1.235 c
-27.359 1.341 27.304 1.43 27.237 1.5 c
-27.179 1.566 27.106 1.617 27.017 1.646 c
-26.929 1.684 26.834 1.706 26.738 1.706 c
-31.269 -1.263 m
-30.196 -1.263 l
-28.887 2.22 l
-29.843 2.22 l
-30.504 0.221 l
-30.523 0.151 30.541 0.078 30.564 0 c
-30.593 -0.07 30.615 -0.139 30.637 -0.205 c
-30.655 -0.275 30.67 -0.345 30.681 -0.411 c
-30.699 -0.481 30.718 -0.54 30.74 -0.588 c
-30.747 -0.54 30.762 -0.481 30.784 -0.411 c
-30.802 -0.345 30.82 -0.275 30.842 -0.205 c
-30.861 -0.139 30.879 -0.07 30.901 0 c
-30.931 0.067 30.953 0.136 30.975 0.206 c
-31.68 2.22 l
-32.621 2.22 l
-h
-34.859 -1.323 m
-34.602 -1.323 34.374 -1.286 34.169 -1.219 c
-33.963 -1.142 33.786 -1.028 33.639 -0.881 c
-33.492 -0.727 33.375 -0.536 33.286 -0.309 c
-33.205 -0.084 33.169 0.181 33.169 0.485 c
-33.169 0.817 33.213 1.096 33.301 1.324 c
-33.396 1.559 33.525 1.742 33.683 1.882 c
-33.849 2.018 34.036 2.117 34.242 2.176 c
-34.447 2.242 34.657 2.278 34.874 2.278 c
-35.146 2.278 35.381 2.228 35.58 2.132 c
-35.785 2.043 35.95 1.912 36.079 1.735 c
-36.215 1.566 36.314 1.36 36.373 1.118 c
-36.44 0.882 36.476 0.618 36.476 0.324 c
-36.476 0.31 l
-34.109 0.31 l
-34.109 0.162 34.124 0.023 34.154 -0.103 c
-34.19 -0.231 34.246 -0.345 34.315 -0.44 c
-34.381 -0.529 34.466 -0.598 34.565 -0.646 c
-34.661 -0.698 34.774 -0.72 34.903 -0.72 c
-35.058 -0.72 35.197 -0.687 35.314 -0.617 c
-35.44 -0.55 35.528 -0.448 35.58 -0.309 c
-36.417 -0.382 l
-36.388 -0.481 36.332 -0.588 36.255 -0.706 c
-36.174 -0.816 36.072 -0.918 35.947 -1.014 c
-35.829 -1.102 35.675 -1.176 35.491 -1.234 c
-35.314 -1.294 35.102 -1.323 34.859 -1.323 c
-34.859 1.706 m
-34.771 1.706 34.682 1.691 34.595 1.661 c
-34.506 1.632 34.425 1.58 34.36 1.515 c
-34.29 1.445 34.231 1.357 34.183 1.25 c
-34.142 1.139 34.124 1.015 34.124 0.867 c
-35.594 0.867 l
-35.594 1.004 35.568 1.125 35.52 1.235 c
-35.48 1.341 35.425 1.43 35.359 1.5 c
-35.3 1.566 35.227 1.617 35.138 1.646 c
-35.05 1.684 34.955 1.706 34.859 1.706 c
-40.378 1.47 m
-40.28 1.478 40.176 1.489 40.07 1.5 c
-39.96 1.518 39.838 1.529 39.702 1.529 c
-39.526 1.529 39.368 1.489 39.232 1.411 c
-39.092 1.341 38.975 1.243 38.879 1.118 c
-38.791 0.989 38.721 0.842 38.674 0.676 c
-38.633 0.508 38.615 0.331 38.615 0.148 c
-38.615 -1.263 l
-37.718 -1.263 l
-37.718 0.985 l
-37.718 1.11 37.707 1.235 37.689 1.353 c
-37.678 1.478 37.663 1.595 37.645 1.706 c
-37.633 1.823 37.619 1.919 37.6 1.999 c
-37.579 2.087 37.56 2.161 37.542 2.22 c
-38.424 2.22 l
-38.431 2.168 38.442 2.117 38.453 2.058 c
-38.472 1.999 38.486 1.933 38.497 1.867 c
-38.516 1.808 38.53 1.742 38.541 1.676 c
-38.549 1.607 38.56 1.544 38.57 1.485 c
-38.585 1.485 l
-38.622 1.603 38.674 1.709 38.732 1.808 c
-38.798 1.904 38.879 1.989 38.967 2.058 c
-39.056 2.124 39.158 2.18 39.276 2.22 c
-39.401 2.257 39.548 2.278 39.717 2.278 c
-39.842 2.278 39.96 2.272 40.07 2.264 c
-40.187 2.253 40.29 2.238 40.378 2.22 c
-h
-42.028 1.603 m
-41.485 1.603 l
-41.485 2.22 l
-42.073 2.22 l
-42.352 3.117 l
-42.925 3.117 l
-42.925 2.22 l
-44.16 2.22 l
-44.16 1.603 l
-42.925 1.603 l
-42.925 -0.103 l
-42.925 -0.323 l
-42.933 -0.392 42.954 -0.455 42.984 -0.514 c
-43.021 -0.565 43.076 -0.61 43.146 -0.646 c
-43.223 -0.675 43.337 -0.69 43.484 -0.69 c
-43.619 -0.69 43.756 -0.687 43.895 -0.675 c
-44.031 -0.658 44.164 -0.631 44.292 -0.602 c
-44.292 -1.205 l
-44.211 -1.215 44.134 -1.23 44.057 -1.249 c
-43.976 -1.26 43.899 -1.267 43.822 -1.278 c
-43.741 -1.286 43.653 -1.294 43.557 -1.294 c
-43.469 -1.3 43.37 -1.308 43.264 -1.308 c
-43.076 -1.308 42.914 -1.294 42.778 -1.263 c
-42.649 -1.227 42.536 -1.182 42.441 -1.132 c
-42.352 -1.084 42.279 -1.024 42.219 -0.955 c
-42.161 -0.878 42.117 -0.801 42.088 -0.72 c
-42.058 -0.631 42.036 -0.544 42.028 -0.455 c
-42.017 -0.359 42.013 -0.264 42.013 -0.176 c
-h
-50.297 -2.63 m
-50.297 3.514 l
-52.222 3.514 l
-52.222 2.897 l
-51.149 2.897 l
-51.149 -2.013 l
-52.222 -2.013 l
-52.222 -2.63 l
-h
-55.166 -1.323 m
-54.879 -1.323 54.636 -1.282 54.431 -1.205 c
-54.225 -1.117 54.052 -0.995 53.917 -0.837 c
-53.776 -0.683 53.674 -0.496 53.608 -0.278 c
-53.538 -0.055 53.505 0.192 53.505 0.456 c
-53.505 0.75 53.538 1.008 53.608 1.235 c
-53.685 1.459 53.791 1.646 53.931 1.794 c
-54.078 1.948 54.254 2.066 54.46 2.147 c
-54.666 2.234 54.902 2.278 55.166 2.278 c
-55.39 2.278 55.592 2.249 55.769 2.191 c
-55.945 2.132 56.095 2.047 56.224 1.941 c
-56.349 1.842 56.452 1.721 56.533 1.573 c
-56.61 1.434 56.665 1.283 56.695 1.118 c
-55.783 1.073 l
-55.754 1.25 55.684 1.389 55.577 1.5 c
-55.478 1.607 55.335 1.661 55.151 1.661 c
-54.905 1.661 54.728 1.559 54.622 1.353 c
-54.512 1.154 54.46 0.867 54.46 0.485 c
-54.46 -0.309 54.696 -0.706 55.166 -0.706 c
-55.331 -0.706 55.474 -0.654 55.592 -0.544 c
-55.71 -0.436 55.783 -0.275 55.812 -0.058 c
-56.724 -0.103 l
-56.695 -0.272 56.639 -0.426 56.562 -0.573 c
-56.492 -0.72 56.39 -0.852 56.253 -0.97 c
-56.125 -1.08 55.966 -1.168 55.783 -1.234 c
-55.607 -1.294 55.401 -1.323 55.166 -1.323 c
-60.876 0.485 m
-60.876 0.21 60.84 -0.04 60.774 -0.264 c
-60.704 -0.481 60.601 -0.668 60.465 -0.823 c
-60.325 -0.98 60.149 -1.102 59.935 -1.19 c
-59.719 -1.278 59.465 -1.323 59.172 -1.323 c
-58.896 -1.323 58.649 -1.278 58.436 -1.19 c
-58.231 -1.102 58.058 -0.98 57.922 -0.823 c
-57.782 -0.668 57.68 -0.481 57.613 -0.264 c
-57.543 -0.04 57.51 0.21 57.51 0.485 c
-57.51 0.739 57.539 0.975 57.599 1.191 c
-57.665 1.415 57.768 1.607 57.907 1.764 c
-58.044 1.929 58.22 2.058 58.436 2.147 c
-58.649 2.234 58.906 2.278 59.201 2.278 c
-59.513 2.278 59.774 2.234 59.98 2.147 c
-60.193 2.058 60.365 1.929 60.494 1.764 c
-60.631 1.607 60.729 1.415 60.788 1.191 c
-60.847 0.975 60.876 0.739 60.876 0.485 c
-59.921 0.485 m
-59.921 0.691 59.906 0.867 59.877 1.015 c
-59.855 1.162 59.818 1.283 59.76 1.382 c
-59.7 1.478 59.627 1.548 59.538 1.588 c
-59.451 1.636 59.34 1.661 59.216 1.661 c
-58.951 1.661 58.76 1.563 58.642 1.368 c
-58.524 1.18 58.466 0.886 58.466 0.485 c
-58.466 0.063 58.524 -0.242 58.642 -0.426 c
-58.76 -0.613 58.936 -0.706 59.172 -0.706 c
-59.297 -0.706 59.411 -0.687 59.509 -0.646 c
-59.605 -0.598 59.686 -0.525 59.744 -0.426 c
-59.81 -0.33 59.855 -0.205 59.877 -0.058 c
-59.906 0.088 59.921 0.269 59.921 0.485 c
-62.894 -1.263 m
-62.894 0.853 l
-62.894 1.019 62.887 1.154 62.879 1.264 c
-62.868 1.372 62.85 1.455 62.821 1.515 c
-62.798 1.58 62.769 1.632 62.732 1.661 c
-62.703 1.691 62.663 1.706 62.615 1.706 c
-62.555 1.706 62.501 1.676 62.453 1.617 c
-62.412 1.566 62.379 1.492 62.35 1.397 c
-62.32 1.309 62.295 1.195 62.277 1.058 c
-62.266 0.919 62.262 0.769 62.262 0.603 c
-62.262 -1.263 l
-61.512 -1.263 l
-61.512 1.47 l
-61.512 1.706 l
-61.512 1.926 l
-61.512 2.003 61.505 2.066 61.497 2.117 c
-61.497 2.22 l
-62.173 2.22 l
-62.173 2.132 l
-62.173 1.985 l
-62.181 1.926 62.189 1.867 62.189 1.808 c
-62.189 1.646 l
-62.203 1.646 l
-62.221 1.735 62.251 1.812 62.291 1.882 c
-62.328 1.96 62.372 2.029 62.424 2.087 c
-62.482 2.147 62.549 2.191 62.629 2.22 c
-62.707 2.257 62.794 2.278 62.894 2.278 c
-63.078 2.278 63.218 2.224 63.305 2.117 c
-63.401 2.018 63.471 1.86 63.511 1.646 c
-63.526 1.646 l
-63.563 1.742 63.603 1.831 63.644 1.912 c
-63.691 1.989 63.746 2.051 63.805 2.103 c
-63.864 2.161 63.93 2.205 64.011 2.234 c
-64.088 2.264 64.176 2.278 64.275 2.278 c
-64.411 2.278 64.525 2.253 64.614 2.205 c
-64.702 2.154 64.768 2.08 64.82 1.985 c
-64.878 1.885 64.915 1.757 64.937 1.603 c
-64.967 1.455 64.981 1.272 64.981 1.058 c
-64.981 -1.263 l
-64.261 -1.263 l
-64.261 0.853 l
-64.261 1.019 64.253 1.154 64.246 1.264 c
-64.236 1.372 64.217 1.455 64.188 1.515 c
-64.165 1.58 64.136 1.632 64.099 1.661 c
-64.07 1.691 64.03 1.706 63.982 1.706 c
-63.864 1.706 63.768 1.617 63.702 1.441 c
-63.644 1.272 63.614 1.015 63.614 0.662 c
-63.614 -1.263 l
-h
-66.954 -1.263 m
-66.954 0.853 l
-66.954 1.019 66.947 1.154 66.94 1.264 c
-66.929 1.372 66.91 1.455 66.881 1.515 c
-66.859 1.58 66.829 1.632 66.793 1.661 c
-66.763 1.691 66.723 1.706 66.675 1.706 c
-66.617 1.706 66.561 1.676 66.513 1.617 c
-66.473 1.566 66.44 1.492 66.411 1.397 c
-66.381 1.309 66.355 1.195 66.337 1.058 c
-66.326 0.919 66.322 0.769 66.322 0.603 c
-66.322 -1.263 l
-65.572 -1.263 l
-65.572 1.47 l
-65.572 1.706 l
-65.572 1.926 l
-65.572 2.003 65.566 2.066 65.558 2.117 c
-65.558 2.22 l
-66.235 2.22 l
-66.235 2.132 l
-66.235 1.985 l
-66.241 1.926 66.249 1.867 66.249 1.808 c
-66.249 1.646 l
-66.264 1.646 l
-66.282 1.735 66.312 1.812 66.352 1.882 c
-66.389 1.96 66.432 2.029 66.484 2.087 c
-66.543 2.147 66.609 2.191 66.69 2.22 c
-66.767 2.257 66.856 2.278 66.954 2.278 c
-67.138 2.278 67.278 2.224 67.366 2.117 c
-67.461 2.018 67.531 1.86 67.571 1.646 c
-67.586 1.646 l
-67.623 1.742 67.664 1.831 67.704 1.912 c
-67.752 1.989 67.807 2.051 67.866 2.103 c
-67.924 2.161 67.991 2.205 68.072 2.234 c
-68.149 2.264 68.237 2.278 68.336 2.278 c
-68.472 2.278 68.586 2.253 68.674 2.205 c
-68.762 2.154 68.828 2.08 68.88 1.985 c
-68.939 1.885 68.976 1.757 68.998 1.603 c
-69.027 1.455 69.042 1.272 69.042 1.058 c
-69.042 -1.263 l
-68.321 -1.263 l
-68.321 0.853 l
-68.321 1.019 68.314 1.154 68.307 1.264 c
-68.296 1.372 68.277 1.455 68.248 1.515 c
-68.226 1.58 68.196 1.632 68.159 1.661 c
-68.13 1.691 68.09 1.706 68.042 1.706 c
-67.924 1.706 67.829 1.617 67.763 1.441 c
-67.704 1.272 67.675 1.015 67.675 0.662 c
-67.675 -1.263 l
-h
-71.956 -0.646 m
-73.088 -0.646 l
-73.088 -1.263 l
-69.78 -1.263 l
-69.78 -0.646 l
-71.045 -0.646 l
-71.045 1.603 l
-70.118 1.603 l
-70.118 2.22 l
-71.956 2.22 l
-h
-71.045 3.514 0.912 -0.676 re
-71.045 2.837 m
-74.517 1.603 m
-73.973 1.603 l
-73.973 2.22 l
-74.561 2.22 l
-74.841 3.117 l
-75.413 3.117 l
-75.413 2.22 l
-76.649 2.22 l
-76.649 1.603 l
-75.413 1.603 l
-75.413 -0.103 l
-75.413 -0.323 l
-75.421 -0.392 75.444 -0.455 75.473 -0.514 c
-75.509 -0.565 75.564 -0.61 75.634 -0.646 c
-75.712 -0.675 75.825 -0.69 75.972 -0.69 c
-76.109 -0.69 76.244 -0.687 76.384 -0.675 c
-76.52 -0.658 76.652 -0.631 76.78 -0.602 c
-76.78 -1.205 l
-76.7 -1.215 76.623 -1.23 76.545 -1.249 c
-76.465 -1.26 76.388 -1.267 76.31 -1.278 c
-76.23 -1.286 76.142 -1.294 76.046 -1.294 c
-75.957 -1.3 75.858 -1.308 75.752 -1.308 c
-75.564 -1.308 75.403 -1.294 75.267 -1.263 c
-75.138 -1.227 75.024 -1.182 74.929 -1.132 c
-74.841 -1.084 74.767 -1.024 74.708 -0.955 c
-74.65 -0.878 74.605 -0.801 74.576 -0.72 c
-74.546 -0.631 74.524 -0.544 74.517 -0.455 c
-74.507 -0.359 74.503 -0.264 74.503 -0.176 c
-h
-85.141 -0.249 m
-85.141 -0.419 85.1 -0.569 85.023 -0.706 c
-84.953 -0.833 84.851 -0.947 84.715 -1.043 c
-84.586 -1.132 84.424 -1.201 84.229 -1.249 c
-84.042 -1.296 83.826 -1.323 83.583 -1.323 c
-83.355 -1.323 83.157 -1.308 82.98 -1.278 c
-82.804 -1.249 82.646 -1.201 82.509 -1.132 c
-82.37 -1.055 82.26 -0.955 82.172 -0.837 c
-82.083 -0.72 82.014 -0.573 81.966 -0.396 c
-82.775 -0.278 l
-82.793 -0.378 82.822 -0.455 82.862 -0.514 c
-82.91 -0.573 82.969 -0.617 83.039 -0.646 c
-83.105 -0.675 83.186 -0.702 83.274 -0.72 c
-83.363 -0.731 83.465 -0.735 83.583 -0.735 c
-83.679 -0.735 83.774 -0.731 83.862 -0.72 c
-83.951 -0.702 84.028 -0.675 84.097 -0.646 c
-84.163 -0.617 84.215 -0.58 84.244 -0.529 c
-84.281 -0.481 84.303 -0.419 84.303 -0.338 c
-84.303 -0.242 84.273 -0.168 84.215 -0.118 c
-84.163 -0.07 84.097 -0.029 84.009 0 c
-83.921 0.038 83.81 0.067 83.685 0.088 c
-83.568 0.118 83.436 0.148 83.288 0.177 c
-83.149 0.214 83.01 0.254 82.862 0.294 c
-82.723 0.342 82.598 0.405 82.48 0.485 c
-82.37 0.563 82.282 0.662 82.216 0.78 c
-82.146 0.897 82.112 1.048 82.112 1.235 c
-82.112 1.389 82.143 1.532 82.201 1.661 c
-82.268 1.798 82.363 1.912 82.48 1.999 c
-82.605 2.087 82.763 2.154 82.951 2.205 c
-83.134 2.253 83.348 2.278 83.583 2.278 c
-83.766 2.278 83.943 2.257 84.112 2.22 c
-84.277 2.191 84.424 2.135 84.553 2.058 c
-84.678 1.989 84.788 1.889 84.876 1.764 c
-84.965 1.646 85.023 1.503 85.052 1.338 c
-84.259 1.264 l
-84.237 1.341 84.207 1.405 84.171 1.455 c
-84.13 1.515 84.082 1.559 84.024 1.588 c
-83.972 1.625 83.91 1.65 83.833 1.661 c
-83.752 1.669 83.671 1.676 83.583 1.676 c
-83.366 1.676 83.205 1.646 83.097 1.588 c
-82.987 1.536 82.936 1.449 82.936 1.324 c
-82.936 1.243 82.954 1.18 82.995 1.133 c
-83.043 1.081 83.105 1.044 83.186 1.015 c
-83.274 0.985 83.369 0.956 83.48 0.927 c
-83.587 0.904 83.708 0.882 83.847 0.853 c
-84.001 0.823 84.159 0.784 84.318 0.736 c
-84.472 0.684 84.612 0.622 84.73 0.545 c
-84.847 0.464 84.942 0.36 85.023 0.235 c
-85.1 0.107 85.141 -0.055 85.141 -0.249 c
-86.997 1.515 m
-87.114 1.786 87.265 1.985 87.452 2.103 c
-87.636 2.22 87.857 2.278 88.113 2.278 c
-88.319 2.278 88.489 2.242 88.628 2.176 c
-88.775 2.106 88.886 2.014 88.967 1.897 c
-89.054 1.779 89.113 1.636 89.143 1.47 c
-89.179 1.301 89.202 1.125 89.202 0.941 c
-89.202 -1.263 l
-88.29 -1.263 l
-88.29 0.736 l
-88.29 0.871 88.279 0.992 88.261 1.103 c
-88.25 1.21 88.224 1.297 88.187 1.368 c
-88.147 1.445 88.088 1.503 88.011 1.544 c
-87.941 1.58 87.849 1.603 87.731 1.603 c
-87.621 1.603 87.525 1.577 87.438 1.529 c
-87.35 1.478 87.269 1.411 87.203 1.324 c
-87.144 1.235 87.092 1.125 87.055 1 c
-87.026 0.882 87.011 0.75 87.011 0.603 c
-87.011 -1.263 l
-86.1 -1.263 l
-86.1 3.514 l
-87.011 3.514 l
-87.011 2.205 l
-87.011 2.135 87.004 2.066 86.997 1.999 c
-86.997 1.794 l
-86.997 1.735 86.989 1.68 86.982 1.632 c
-86.982 1.515 l
-h
-91.116 -1.323 m
-90.947 -1.323 90.796 -1.3 90.66 -1.263 c
-90.532 -1.215 90.418 -1.146 90.322 -1.058 c
-90.234 -0.97 90.164 -0.863 90.116 -0.735 c
-90.065 -0.598 90.043 -0.448 90.043 -0.278 c
-90.043 -0.073 90.076 0.096 90.145 0.235 c
-90.212 0.383 90.307 0.493 90.425 0.574 c
-90.55 0.662 90.694 0.724 90.851 0.765 c
-91.017 0.802 91.193 0.827 91.381 0.838 c
-92.101 0.853 l
-92.101 1.029 l
-92.101 1.147 92.09 1.25 92.071 1.338 c
-92.049 1.426 92.017 1.492 91.969 1.544 c
-91.928 1.603 91.88 1.64 91.822 1.661 c
-91.763 1.68 91.697 1.691 91.631 1.691 c
-91.56 1.691 91.498 1.68 91.44 1.661 c
-91.388 1.65 91.34 1.625 91.292 1.588 c
-91.252 1.559 91.219 1.507 91.19 1.441 c
-91.167 1.382 91.153 1.301 91.145 1.206 c
-90.205 1.25 l
-90.234 1.397 90.278 1.532 90.337 1.661 c
-90.403 1.786 90.499 1.897 90.616 1.985 c
-90.734 2.08 90.874 2.154 91.043 2.205 c
-91.219 2.253 91.425 2.278 91.66 2.278 c
-92.101 2.278 92.431 2.168 92.659 1.956 c
-92.894 1.75 93.012 1.441 93.012 1.029 c
-93.012 -0.235 l
-93.012 -0.455 l
-93.019 -0.514 93.034 -0.569 93.056 -0.617 c
-93.075 -0.658 93.104 -0.69 93.145 -0.72 c
-93.181 -0.742 93.233 -0.749 93.291 -0.749 c
-93.358 -0.749 93.428 -0.745 93.497 -0.735 c
-93.497 -1.219 l
-93.438 -1.23 93.383 -1.242 93.335 -1.249 c
-93.295 -1.26 93.255 -1.267 93.218 -1.278 c
-93.177 -1.286 93.133 -1.294 93.086 -1.294 c
-93.034 -1.3 92.975 -1.308 92.909 -1.308 c
-92.682 -1.308 92.516 -1.256 92.41 -1.146 c
-92.3 -1.028 92.237 -0.863 92.219 -0.646 c
-92.204 -0.646 l
-92.134 -0.756 92.065 -0.852 91.998 -0.941 c
-91.928 -1.021 91.851 -1.087 91.763 -1.146 c
-91.675 -1.205 91.575 -1.249 91.469 -1.278 c
-91.369 -1.308 91.252 -1.323 91.116 -1.323 c
-92.101 0.353 m
-91.675 0.339 l
-91.575 0.339 91.483 0.331 91.396 0.324 c
-91.315 0.313 91.248 0.287 91.19 0.25 c
-91.13 0.21 91.08 0.151 91.043 0.074 c
-91.002 0.004 90.984 -0.087 90.984 -0.205 c
-90.984 -0.374 91.017 -0.496 91.086 -0.573 c
-91.153 -0.654 91.252 -0.69 91.381 -0.69 c
-91.487 -0.69 91.587 -0.668 91.675 -0.617 c
-91.77 -0.569 91.851 -0.507 91.91 -0.426 c
-91.976 -0.349 92.027 -0.261 92.057 -0.161 c
-92.086 -0.055 92.101 0.059 92.101 0.177 c
-h
-94.589 -2.63 m
-94.589 -2.013 l
-95.662 -2.013 l
-95.662 2.897 l
-94.589 2.897 l
-94.589 3.514 l
-96.514 3.514 l
-96.514 -2.63 l
-h
-f
-Q
-q 1 0 0 1 314.6631 247.1802 cm
-0 0 m
--0.029 -0.58 -0.191 -1.022 -0.485 -1.323 c
--0.779 -1.627 -1.198 -1.779 -1.735 -1.779 c
--2.263 -1.779 -2.69 -1.58 -3.013 -1.176 c
--3.329 -0.764 -3.484 -0.206 -3.484 0.5 c
--3.484 1.47 l
--3.484 2.165 -3.322 2.712 -2.999 3.117 c
--2.675 3.516 -2.23 3.719 -1.661 3.719 c
--1.154 3.719 -0.757 3.561 -0.47 3.248 c
--0.187 2.944 -0.029 2.502 0 1.926 c
--0.69 1.926 l
--0.721 2.367 -0.816 2.679 -0.97 2.866 c
--1.118 3.05 -1.349 3.146 -1.661 3.146 c
--2.036 3.146 -2.319 2.999 -2.514 2.705 c
--2.712 2.418 -2.807 2.003 -2.807 1.455 c
--2.807 0.47 l
--2.807 -0.07 -2.716 -0.485 -2.529 -0.779 c
--2.344 -1.066 -2.08 -1.205 -1.735 -1.205 c
--1.382 -1.205 -1.128 -1.117 -0.97 -0.941 c
--0.816 -0.764 -0.721 -0.452 -0.69 0 c
-h
-2.454 1.661 m
-2.367 1.679 2.267 1.691 2.161 1.691 c
-1.826 1.691 1.591 1.507 1.455 1.147 c
-1.455 -1.705 l
-0.808 -1.705 l
-0.808 2.278 l
-1.44 2.278 l
-1.455 1.866 l
-1.631 2.19 1.874 2.352 2.19 2.352 c
-2.296 2.352 2.385 2.33 2.454 2.294 c
-h
-4.453 -1.779 m
-3.954 -1.779 3.572 -1.631 3.308 -1.338 c
-3.042 -1.043 2.911 -0.61 2.911 -0.029 c
-2.911 0.441 l
-2.911 1.037 3.036 1.503 3.293 1.837 c
-3.557 2.18 3.917 2.352 4.38 2.352 c
-4.839 2.352 5.182 2.198 5.409 1.897 c
-5.644 1.602 5.766 1.139 5.777 0.515 c
-5.777 0.088 l
-3.557 0.088 l
-3.557 0 l
-3.557 -0.434 3.634 -0.746 3.792 -0.941 c
-3.958 -1.128 4.189 -1.22 4.484 -1.22 c
-4.678 -1.22 4.85 -1.187 4.997 -1.117 c
-5.145 -1.04 5.28 -0.922 5.409 -0.764 c
-5.747 -1.176 l
-5.461 -1.58 5.031 -1.779 4.453 -1.779 c
-4.38 1.793 m
-4.104 1.793 3.902 1.698 3.778 1.514 c
-3.649 1.326 3.576 1.037 3.557 0.647 c
-5.13 0.647 l
-5.13 0.735 l
-5.108 1.118 5.041 1.386 4.924 1.544 c
-4.806 1.709 4.623 1.793 4.38 1.793 c
-8.599 -1.705 m
-8.559 -1.617 8.533 -1.469 8.525 -1.264 c
-8.29 -1.61 7.996 -1.779 7.644 -1.779 c
-7.279 -1.779 6.996 -1.683 6.791 -1.484 c
-6.593 -1.278 6.497 -0.992 6.497 -0.617 c
-6.497 -0.216 6.633 0.103 6.909 0.338 c
-7.181 0.58 7.555 0.706 8.025 0.706 c
-8.511 0.706 l
-8.511 1.132 l
-8.511 1.367 8.455 1.532 8.349 1.631 c
-8.239 1.738 8.077 1.793 7.864 1.793 c
-7.665 1.793 7.504 1.735 7.379 1.617 c
-7.262 1.5 7.202 1.353 7.202 1.176 c
-6.556 1.176 l
-6.556 1.371 6.614 1.562 6.732 1.749 c
-6.857 1.933 7.019 2.08 7.217 2.19 c
-7.423 2.297 7.651 2.352 7.908 2.352 c
-8.309 2.352 8.613 2.249 8.819 2.043 c
-9.033 1.837 9.147 1.544 9.157 1.161 c
-9.157 -0.852 l
-9.157 -1.157 9.194 -1.422 9.275 -1.646 c
-9.275 -1.705 l
-h
-7.732 -1.191 m
-7.897 -1.191 8.048 -1.147 8.187 -1.058 c
-8.334 -0.97 8.441 -0.86 8.511 -0.721 c
-8.511 0.22 l
-8.143 0.22 l
-7.827 0.22 7.584 0.151 7.408 0.015 c
-7.231 -0.114 7.144 -0.301 7.144 -0.544 c
-7.144 -0.771 7.188 -0.937 7.276 -1.043 c
-7.364 -1.143 7.515 -1.191 7.732 -1.191 c
-11.009 3.234 m
-11.009 2.278 l
-11.612 2.278 l
-11.612 1.749 l
-11.009 1.749 l
-11.009 -0.721 l
-11.009 -0.878 11.032 -0.995 11.083 -1.073 c
-11.142 -1.153 11.23 -1.191 11.347 -1.191 c
-11.436 -1.191 11.524 -1.176 11.612 -1.147 c
-11.612 -1.705 l
-11.465 -1.753 11.311 -1.779 11.156 -1.779 c
-10.899 -1.779 10.705 -1.687 10.568 -1.5 c
-10.429 -1.315 10.363 -1.055 10.363 -0.721 c
-10.363 1.749 l
-9.76 1.749 l
-9.76 2.278 l
-10.363 2.278 l
-10.363 3.234 l
-h
-13.803 -1.779 m
-13.303 -1.779 12.92 -1.631 12.656 -1.338 c
-12.391 -1.043 12.259 -0.61 12.259 -0.029 c
-12.259 0.441 l
-12.259 1.037 12.384 1.503 12.641 1.837 c
-12.906 2.18 13.266 2.352 13.729 2.352 c
-14.188 2.352 14.53 2.198 14.757 1.897 c
-14.993 1.602 15.114 1.139 15.125 0.515 c
-15.125 0.088 l
-12.906 0.088 l
-12.906 0 l
-12.906 -0.434 12.983 -0.746 13.141 -0.941 c
-13.306 -1.128 13.538 -1.22 13.832 -1.22 c
-14.026 -1.22 14.2 -1.187 14.346 -1.117 c
-14.493 -1.04 14.629 -0.922 14.757 -0.764 c
-15.096 -1.176 l
-14.809 -1.58 14.379 -1.779 13.803 -1.779 c
-13.729 1.793 m
-13.454 1.793 13.251 1.698 13.126 1.514 c
-12.997 1.326 12.924 1.037 12.906 0.647 c
-14.479 0.647 l
-14.479 0.735 l
-14.456 1.118 14.391 1.386 14.273 1.544 c
-14.155 1.709 13.972 1.793 13.729 1.793 c
-19.667 -1.705 m
-19.627 -1.617 19.601 -1.469 19.594 -1.264 c
-19.359 -1.61 19.065 -1.779 18.712 -1.779 c
-18.348 -1.779 18.065 -1.683 17.859 -1.484 c
-17.661 -1.278 17.565 -0.992 17.565 -0.617 c
-17.565 -0.216 17.701 0.103 17.977 0.338 c
-18.248 0.58 18.624 0.706 19.094 0.706 c
-19.579 0.706 l
-19.579 1.132 l
-19.579 1.367 19.524 1.532 19.418 1.631 c
-19.307 1.738 19.146 1.793 18.932 1.793 c
-18.734 1.793 18.572 1.735 18.447 1.617 c
-18.329 1.5 18.271 1.353 18.271 1.176 c
-17.624 1.176 l
-17.624 1.371 17.683 1.562 17.801 1.749 c
-17.926 1.933 18.088 2.08 18.285 2.19 c
-18.491 2.297 18.719 2.352 18.977 2.352 c
-19.377 2.352 19.682 2.249 19.888 2.043 c
-20.101 1.837 20.215 1.544 20.226 1.161 c
-20.226 -0.852 l
-20.226 -1.157 20.263 -1.422 20.344 -1.646 c
-20.344 -1.705 l
-h
-18.8 -1.191 m
-18.965 -1.191 19.116 -1.147 19.256 -1.058 c
-19.403 -0.97 19.509 -0.86 19.579 -0.721 c
-19.579 0.22 l
-19.212 0.22 l
-18.896 0.22 18.653 0.151 18.477 0.015 c
-18.3 -0.114 18.212 -0.301 18.212 -0.544 c
-18.212 -0.771 18.256 -0.937 18.344 -1.043 c
-18.433 -1.143 18.583 -1.191 18.8 -1.191 c
-23.563 2.278 m
-23.577 1.837 l
-23.831 2.18 24.154 2.352 24.548 2.352 c
-25.253 2.352 25.61 1.881 25.62 0.941 c
-25.62 -1.705 l
-24.974 -1.705 l
-24.974 0.912 l
-24.974 1.224 24.918 1.444 24.812 1.573 c
-24.702 1.698 24.548 1.764 24.342 1.764 c
-24.184 1.764 24.037 1.709 23.9 1.602 c
-23.772 1.492 23.669 1.357 23.592 1.191 c
-23.592 -1.705 l
-22.946 -1.705 l
-22.946 2.278 l
-h
-28.016 -1.779 m
-27.517 -1.779 27.135 -1.631 26.869 -1.338 c
-26.605 -1.043 26.473 -0.61 26.473 -0.029 c
-26.473 0.441 l
-26.473 1.037 26.598 1.503 26.855 1.837 c
-27.12 2.18 27.48 2.352 27.943 2.352 c
-28.402 2.352 28.744 2.198 28.972 1.897 c
-29.207 1.602 29.328 1.139 29.339 0.515 c
-29.339 0.088 l
-27.12 0.088 l
-27.12 0 l
-27.12 -0.434 27.197 -0.746 27.355 -0.941 c
-27.52 -1.128 27.752 -1.22 28.045 -1.22 c
-28.241 -1.22 28.413 -1.187 28.56 -1.117 c
-28.708 -1.04 28.843 -0.922 28.972 -0.764 c
-29.31 -1.176 l
-29.024 -1.58 28.593 -1.779 28.016 -1.779 c
-27.943 1.793 m
-27.667 1.793 27.465 1.698 27.34 1.514 c
-27.212 1.326 27.138 1.037 27.12 0.647 c
-28.693 0.647 l
-28.693 0.735 l
-28.671 1.118 28.604 1.386 28.487 1.544 c
-28.369 1.709 28.185 1.793 27.943 1.793 c
-33.088 -0.559 m
-33.69 2.278 l
-34.337 2.278 l
-33.352 -1.705 l
-32.837 -1.705 l
-32.059 1.147 l
-31.309 -1.705 l
-30.78 -1.705 l
-29.824 2.278 l
-30.456 2.278 l
-31.074 -0.485 l
-31.808 2.278 l
-32.323 2.278 l
-h
-38.115 -1.22 m
-38.328 -1.22 38.501 -1.157 38.629 -1.029 c
-38.765 -0.893 38.838 -0.702 38.85 -0.455 c
-39.467 -0.455 l
-39.445 -0.838 39.309 -1.157 39.056 -1.411 c
-38.798 -1.658 38.486 -1.779 38.115 -1.779 c
-37.622 -1.779 37.248 -1.627 36.982 -1.323 c
-36.726 -1.01 36.6 -0.544 36.6 0.073 c
-36.6 0.515 l
-36.6 1.11 36.726 1.565 36.982 1.881 c
-37.248 2.194 37.622 2.352 38.115 2.352 c
-38.515 2.352 38.835 2.219 39.07 1.955 c
-39.313 1.698 39.445 1.353 39.467 0.912 c
-38.85 0.912 l
-38.827 1.205 38.754 1.426 38.629 1.573 c
-38.511 1.72 38.339 1.793 38.115 1.793 c
-37.821 1.793 37.604 1.694 37.468 1.5 c
-37.329 1.312 37.255 1.004 37.248 0.573 c
-37.248 0.059 l
-37.248 -0.411 37.314 -0.746 37.453 -0.941 c
-37.6 -1.128 37.821 -1.22 38.115 -1.22 c
-40.084 0.47 m
-40.084 1.047 40.22 1.503 40.496 1.837 c
-40.779 2.18 41.15 2.352 41.613 2.352 c
-42.073 2.352 42.44 2.183 42.715 1.852 c
-42.998 1.529 43.145 1.081 43.156 0.515 c
-43.156 0.088 l
-43.156 -0.482 43.013 -0.937 42.73 -1.278 c
-42.455 -1.613 42.087 -1.779 41.628 -1.779 c
-41.165 -1.779 40.793 -1.617 40.51 -1.294 c
-40.235 -0.962 40.091 -0.522 40.084 0.029 c
-h
-40.731 0.088 m
-40.731 -0.316 40.808 -0.632 40.966 -0.867 c
-41.132 -1.103 41.352 -1.22 41.628 -1.22 c
-42.194 -1.22 42.488 -0.808 42.509 0.015 c
-42.509 0.47 l
-42.509 0.871 42.425 1.191 42.26 1.426 c
-42.102 1.669 41.885 1.793 41.613 1.793 c
-41.348 1.793 41.132 1.669 40.966 1.426 c
-40.808 1.191 40.731 0.871 40.731 0.47 c
-h
-44.612 2.278 m
-44.626 1.911 l
-44.869 2.205 45.188 2.352 45.582 2.352 c
-46.023 2.352 46.331 2.153 46.507 1.764 c
-46.761 2.153 47.11 2.352 47.552 2.352 c
-48.286 2.352 48.662 1.889 48.683 0.97 c
-48.683 -1.705 l
-48.036 -1.705 l
-48.036 0.912 l
-48.036 1.205 47.981 1.419 47.875 1.558 c
-47.775 1.694 47.603 1.764 47.361 1.764 c
-47.162 1.764 47 1.683 46.875 1.529 c
-46.758 1.382 46.688 1.191 46.669 0.956 c
-46.669 -1.705 l
-46.008 -1.705 l
-46.008 0.941 l
-46.008 1.488 45.788 1.764 45.346 1.764 c
-45.012 1.764 44.777 1.602 44.641 1.278 c
-44.641 -1.705 l
-43.995 -1.705 l
-43.995 2.278 l
-h
-50.27 2.278 m
-50.285 1.911 l
-50.528 2.205 50.848 2.352 51.241 2.352 c
-51.681 2.352 51.991 2.153 52.167 1.764 c
-52.421 2.153 52.77 2.352 53.21 2.352 c
-53.946 2.352 54.32 1.889 54.343 0.97 c
-54.343 -1.705 l
-53.696 -1.705 l
-53.696 0.912 l
-53.696 1.205 53.641 1.419 53.534 1.558 c
-53.435 1.694 53.262 1.764 53.019 1.764 c
-52.821 1.764 52.66 1.683 52.535 1.529 c
-52.417 1.382 52.347 1.191 52.329 0.956 c
-52.329 -1.705 l
-51.667 -1.705 l
-51.667 0.941 l
-51.667 1.488 51.446 1.764 51.006 1.764 c
-50.671 1.764 50.436 1.602 50.3 1.278 c
-50.3 -1.705 l
-49.653 -1.705 l
-49.653 2.278 l
-h
-56.018 -1.705 -0.647 3.983 re
-56.062 3.322 m
-56.062 3.212 56.032 3.12 55.974 3.042 c
-55.915 2.973 55.82 2.94 55.695 2.94 c
-55.577 2.94 55.482 2.973 55.415 3.042 c
-55.357 3.12 55.327 3.212 55.327 3.322 c
-55.327 3.439 55.357 3.532 55.415 3.601 c
-55.482 3.678 55.577 3.719 55.695 3.719 c
-55.82 3.719 55.915 3.678 55.974 3.601 c
-56.032 3.52 56.062 3.429 56.062 3.322 c
-57.885 3.234 m
-57.885 2.278 l
-58.488 2.278 l
-58.488 1.749 l
-57.885 1.749 l
-57.885 -0.721 l
-57.885 -0.878 57.907 -0.995 57.958 -1.073 c
-58.017 -1.153 58.106 -1.191 58.223 -1.191 c
-58.311 -1.191 58.399 -1.176 58.488 -1.147 c
-58.488 -1.705 l
-58.341 -1.753 58.187 -1.779 58.031 -1.779 c
-57.775 -1.779 57.58 -1.687 57.443 -1.5 c
-57.304 -1.315 57.238 -1.055 57.238 -0.721 c
-57.238 1.749 l
-56.635 1.749 l
-56.635 2.278 l
-57.238 2.278 l
-57.238 3.234 l
-h
-59.267 -2.778 m
-58.87 -2.514 l
-59.105 -2.19 59.226 -1.856 59.237 -1.514 c
-59.237 -0.897 l
-59.899 -0.897 l
-59.899 -1.426 l
-59.899 -1.683 59.833 -1.929 59.708 -2.175 c
-59.59 -2.418 59.443 -2.62 59.267 -2.778 c
-64.103 1.661 m
-64.014 1.679 63.915 1.691 63.808 1.691 c
-63.475 1.691 63.239 1.507 63.103 1.147 c
-63.103 -1.705 l
-62.457 -1.705 l
-62.457 2.278 l
-63.088 2.278 l
-63.103 1.866 l
-63.28 2.19 63.522 2.352 63.838 2.352 c
-63.945 2.352 64.032 2.33 64.103 2.294 c
-h
-66.102 -1.779 m
-65.602 -1.779 65.22 -1.631 64.955 -1.338 c
-64.691 -1.043 64.558 -0.61 64.558 -0.029 c
-64.558 0.441 l
-64.558 1.037 64.683 1.503 64.94 1.837 c
-65.205 2.18 65.565 2.352 66.028 2.352 c
-66.488 2.352 66.829 2.198 67.057 1.897 c
-67.292 1.602 67.413 1.139 67.425 0.515 c
-67.425 0.088 l
-65.205 0.088 l
-65.205 0 l
-65.205 -0.434 65.282 -0.746 65.44 -0.941 c
-65.605 -1.128 65.837 -1.22 66.131 -1.22 c
-66.326 -1.22 66.498 -1.187 66.646 -1.117 c
-66.793 -1.04 66.928 -0.922 67.057 -0.764 c
-67.396 -1.176 l
-67.109 -1.58 66.679 -1.779 66.102 -1.779 c
-66.028 1.793 m
-65.752 1.793 65.551 1.698 65.426 1.514 c
-65.297 1.326 65.223 1.037 65.205 0.647 c
-66.777 0.647 l
-66.777 0.735 l
-66.756 1.118 66.69 1.386 66.572 1.544 c
-66.455 1.709 66.27 1.793 66.028 1.793 c
-69.291 -0.721 m
-70.041 2.278 l
-70.702 2.278 l
-69.526 -1.705 l
-69.042 -1.705 l
-67.851 2.278 l
-68.512 2.278 l
-h
-72.761 -1.779 m
-72.26 -1.779 71.878 -1.631 71.614 -1.338 c
-71.349 -1.043 71.217 -0.61 71.217 -0.029 c
-71.217 0.441 l
-71.217 1.037 71.342 1.503 71.599 1.837 c
-71.864 2.18 72.223 2.352 72.687 2.352 c
-73.146 2.352 73.488 2.198 73.715 1.897 c
-73.951 1.602 74.072 1.139 74.083 0.515 c
-74.083 0.088 l
-71.864 0.088 l
-71.864 0 l
-71.864 -0.434 71.941 -0.746 72.099 -0.941 c
-72.264 -1.128 72.495 -1.22 72.79 -1.22 c
-72.984 -1.22 73.158 -1.187 73.304 -1.117 c
-73.451 -1.04 73.587 -0.922 73.715 -0.764 c
-74.054 -1.176 l
-73.767 -1.58 73.337 -1.779 72.761 -1.779 c
-72.687 1.793 m
-72.412 1.793 72.209 1.698 72.084 1.514 c
-71.955 1.326 71.882 1.037 71.864 0.647 c
-73.436 0.647 l
-73.436 0.735 l
-73.414 1.118 73.349 1.386 73.231 1.544 c
-73.113 1.709 72.929 1.793 72.687 1.793 c
-76.508 1.661 m
-76.42 1.679 76.321 1.691 76.215 1.691 c
-75.88 1.691 75.645 1.507 75.509 1.147 c
-75.509 -1.705 l
-74.862 -1.705 l
-74.862 2.278 l
-75.494 2.278 l
-75.509 1.866 l
-75.685 2.19 75.928 2.352 76.244 2.352 c
-76.35 2.352 76.439 2.33 76.508 2.294 c
-h
-78.199 3.234 m
-78.199 2.278 l
-78.802 2.278 l
-78.802 1.749 l
-78.199 1.749 l
-78.199 -0.721 l
-78.199 -0.878 78.221 -0.995 78.272 -1.073 c
-78.332 -1.153 78.419 -1.191 78.537 -1.191 c
-78.625 -1.191 78.714 -1.176 78.802 -1.147 c
-78.802 -1.705 l
-78.654 -1.753 78.5 -1.779 78.346 -1.779 c
-78.089 -1.779 77.894 -1.687 77.758 -1.5 c
-77.619 -1.315 77.552 -1.055 77.552 -0.721 c
-77.552 1.749 l
-76.95 1.749 l
-76.95 2.278 l
-77.552 2.278 l
-77.552 3.234 l
-h
-80.271 -1.705 -0.646 3.983 re
-80.316 3.322 m
-80.316 3.212 80.286 3.12 80.227 3.042 c
-80.169 2.973 80.073 2.94 79.948 2.94 c
-79.83 2.94 79.735 2.973 79.668 3.042 c
-79.61 3.12 79.581 3.212 79.581 3.322 c
-79.581 3.439 79.61 3.532 79.668 3.601 c
-79.735 3.678 79.83 3.719 79.948 3.719 c
-80.073 3.719 80.169 3.678 80.227 3.601 c
-80.286 3.52 80.316 3.429 80.316 3.322 c
-81.903 2.278 m
-81.918 1.837 l
-82.172 2.18 82.494 2.352 82.888 2.352 c
-83.593 2.352 83.95 1.881 83.961 0.941 c
-83.961 -1.705 l
-83.314 -1.705 l
-83.314 0.912 l
-83.314 1.224 83.259 1.444 83.153 1.573 c
-83.042 1.698 82.888 1.764 82.683 1.764 c
-82.524 1.764 82.377 1.709 82.241 1.602 c
-82.112 1.492 82.01 1.357 81.933 1.191 c
-81.933 -1.705 l
-81.286 -1.705 l
-81.286 2.278 l
-h
-84.799 0.47 m
-84.799 1.087 84.909 1.551 85.137 1.866 c
-85.361 2.19 85.696 2.352 86.136 2.352 c
-86.537 2.352 86.842 2.176 87.048 1.823 c
-87.092 2.278 l
-87.68 2.278 l
-87.68 -1.749 l
-87.68 -2.238 87.551 -2.616 87.298 -2.881 c
-87.04 -3.146 86.687 -3.278 86.239 -3.278 c
-86.041 -3.278 85.821 -3.227 85.578 -3.131 c
-85.332 -3.032 85.152 -2.911 85.034 -2.763 c
-85.299 -2.323 l
-85.563 -2.587 85.861 -2.72 86.195 -2.72 c
-86.731 -2.72 87.007 -2.425 87.018 -1.837 c
-87.018 -1.309 l
-86.812 -1.624 86.511 -1.779 86.122 -1.779 c
-85.71 -1.779 85.387 -1.627 85.152 -1.323 c
-84.923 -1.01 84.806 -0.559 84.799 0.029 c
-h
-85.461 0.088 m
-85.461 -0.353 85.523 -0.683 85.651 -0.897 c
-85.777 -1.103 85.993 -1.205 86.298 -1.205 c
-86.621 -1.205 86.86 -1.04 87.018 -0.706 c
-87.018 1.278 l
-86.849 1.602 86.61 1.764 86.298 1.764 c
-86.004 1.764 85.787 1.661 85.651 1.455 c
-85.523 1.249 85.461 0.926 85.461 0.485 c
-h
-91.737 -1.22 m
-91.95 -1.22 92.123 -1.157 92.251 -1.029 c
-92.387 -0.893 92.461 -0.702 92.472 -0.455 c
-93.089 -0.455 l
-93.067 -0.838 92.931 -1.157 92.678 -1.411 c
-92.42 -1.658 92.108 -1.779 91.737 -1.779 c
-91.244 -1.779 90.87 -1.627 90.605 -1.323 c
-90.348 -1.01 90.223 -0.544 90.223 0.073 c
-90.223 0.515 l
-90.223 1.11 90.348 1.565 90.605 1.881 c
-90.87 2.194 91.244 2.352 91.737 2.352 c
-92.137 2.352 92.457 2.219 92.692 1.955 c
-92.935 1.698 93.067 1.353 93.089 0.912 c
-92.472 0.912 l
-92.449 1.205 92.376 1.426 92.251 1.573 c
-92.133 1.72 91.961 1.793 91.737 1.793 c
-91.443 1.793 91.226 1.694 91.09 1.5 c
-90.951 1.312 90.877 1.004 90.87 0.573 c
-90.87 0.059 l
-90.87 -0.411 90.936 -0.746 91.075 -0.941 c
-91.223 -1.128 91.443 -1.22 91.737 -1.22 c
-94.485 1.866 m
-94.739 2.19 95.059 2.352 95.441 2.352 c
-96.146 2.352 96.503 1.881 96.514 0.941 c
-96.514 -1.705 l
-95.867 -1.705 l
-95.867 0.912 l
-95.867 1.224 95.812 1.444 95.705 1.573 c
-95.595 1.698 95.441 1.764 95.235 1.764 c
-95.077 1.764 94.93 1.709 94.795 1.602 c
-94.666 1.492 94.563 1.357 94.485 1.191 c
-94.485 -1.705 l
-93.839 -1.705 l
-93.839 3.94 l
-94.485 3.94 l
-h
-99.512 -1.705 m
-99.472 -1.617 99.447 -1.469 99.439 -1.264 c
-99.204 -1.61 98.91 -1.779 98.557 -1.779 c
-98.193 -1.779 97.91 -1.683 97.704 -1.484 c
-97.506 -1.278 97.411 -0.992 97.411 -0.617 c
-97.411 -0.216 97.546 0.103 97.822 0.338 c
-98.094 0.58 98.469 0.706 98.939 0.706 c
-99.424 0.706 l
-99.424 1.132 l
-99.424 1.367 99.369 1.532 99.263 1.631 c
-99.152 1.738 98.991 1.793 98.778 1.793 c
-98.579 1.793 98.417 1.735 98.292 1.617 c
-98.175 1.5 98.116 1.353 98.116 1.176 c
-97.469 1.176 l
-97.469 1.371 97.528 1.562 97.646 1.749 c
-97.771 1.933 97.933 2.08 98.13 2.19 c
-98.336 2.297 98.564 2.352 98.822 2.352 c
-99.223 2.352 99.527 2.249 99.733 2.043 c
-99.946 1.837 100.06 1.544 100.071 1.161 c
-100.071 -0.852 l
-100.071 -1.157 100.108 -1.422 100.189 -1.646 c
-100.189 -1.705 l
-h
-98.645 -1.191 m
-98.811 -1.191 98.961 -1.147 99.101 -1.058 c
-99.248 -0.97 99.354 -0.86 99.424 -0.721 c
-99.424 0.22 l
-99.057 0.22 l
-98.741 0.22 98.498 0.151 98.322 0.015 c
-98.145 -0.114 98.057 -0.301 98.057 -0.544 c
-98.057 -0.771 98.101 -0.937 98.19 -1.043 c
-98.278 -1.143 98.429 -1.191 98.645 -1.191 c
-101.688 2.278 m
-101.702 1.837 l
-101.956 2.18 102.28 2.352 102.673 2.352 c
-103.379 2.352 103.735 1.881 103.746 0.941 c
-103.746 -1.705 l
-103.099 -1.705 l
-103.099 0.912 l
-103.099 1.224 103.044 1.444 102.938 1.573 c
-102.828 1.698 102.673 1.764 102.467 1.764 c
-102.309 1.764 102.162 1.709 102.026 1.602 c
-101.897 1.492 101.795 1.357 101.717 1.191 c
-101.717 -1.705 l
-101.07 -1.705 l
-101.07 2.278 l
-h
-104.584 0.47 m
-104.584 1.087 104.694 1.551 104.922 1.866 c
-105.146 2.19 105.48 2.352 105.922 2.352 c
-106.322 2.352 106.627 2.176 106.832 1.823 c
-106.876 2.278 l
-107.464 2.278 l
-107.464 -1.749 l
-107.464 -2.238 107.336 -2.616 107.082 -2.881 c
-106.826 -3.146 106.473 -3.278 106.024 -3.278 c
-105.826 -3.278 105.606 -3.227 105.363 -3.131 c
-105.116 -3.032 104.937 -2.911 104.819 -2.763 c
-105.083 -2.323 l
-105.348 -2.587 105.646 -2.72 105.98 -2.72 c
-106.517 -2.72 106.793 -2.425 106.803 -1.837 c
-106.803 -1.309 l
-106.597 -1.624 106.296 -1.779 105.907 -1.779 c
-105.495 -1.779 105.172 -1.627 104.937 -1.323 c
-104.709 -1.01 104.591 -0.559 104.584 0.029 c
-h
-105.245 0.088 m
-105.245 -0.353 105.307 -0.683 105.436 -0.897 c
-105.561 -1.103 105.778 -1.205 106.083 -1.205 c
-106.406 -1.205 106.645 -1.04 106.803 -0.706 c
-106.803 1.278 l
-106.635 1.602 106.396 1.764 106.083 1.764 c
-105.789 1.764 105.573 1.661 105.436 1.455 c
-105.307 1.249 105.245 0.926 105.245 0.485 c
-h
-109.846 -1.779 m
-109.346 -1.779 108.964 -1.631 108.7 -1.338 c
-108.435 -1.043 108.303 -0.61 108.303 -0.029 c
-108.303 0.441 l
-108.303 1.037 108.428 1.503 108.685 1.837 c
-108.949 2.18 109.309 2.352 109.772 2.352 c
-110.232 2.352 110.574 2.198 110.801 1.897 c
-111.036 1.602 111.158 1.139 111.169 0.515 c
-111.169 0.088 l
-108.949 0.088 l
-108.949 0 l
-108.949 -0.434 109.026 -0.746 109.184 -0.941 c
-109.35 -1.128 109.581 -1.22 109.876 -1.22 c
-110.07 -1.22 110.242 -1.187 110.39 -1.117 c
-110.537 -1.04 110.672 -0.922 110.801 -0.764 c
-111.14 -1.176 l
-110.853 -1.58 110.423 -1.779 109.846 -1.779 c
-109.772 1.793 m
-109.496 1.793 109.295 1.698 109.17 1.514 c
-109.041 1.326 108.968 1.037 108.949 0.647 c
-110.522 0.647 l
-110.522 0.735 l
-110.5 1.118 110.434 1.386 110.317 1.544 c
-110.199 1.709 110.015 1.793 109.772 1.793 c
-113.888 -0.691 m
-113.888 -0.544 113.833 -0.422 113.727 -0.324 c
-113.616 -0.228 113.411 -0.11 113.109 0.029 c
-112.764 0.177 112.521 0.298 112.374 0.397 c
-112.227 0.503 112.117 0.621 112.051 0.75 c
-111.981 0.875 111.948 1.033 111.948 1.22 c
-111.948 1.544 112.066 1.812 112.301 2.028 c
-112.536 2.242 112.837 2.352 113.212 2.352 c
-113.594 2.352 113.903 2.238 114.138 2.014 c
-114.373 1.786 114.491 1.5 114.491 1.147 c
-113.845 1.147 l
-113.845 1.323 113.785 1.474 113.668 1.602 c
-113.55 1.727 113.396 1.793 113.212 1.793 c
-113.014 1.793 112.863 1.738 112.756 1.631 c
-112.646 1.532 112.594 1.4 112.594 1.235 c
-112.594 1.106 112.632 1 112.712 0.912 c
-112.789 0.831 112.981 0.728 113.286 0.603 c
-113.764 0.416 114.094 0.228 114.271 0.044 c
-114.447 -0.133 114.535 -0.36 114.535 -0.632 c
-114.535 -0.985 114.41 -1.264 114.167 -1.469 c
-113.932 -1.675 113.616 -1.779 113.226 -1.779 c
-112.804 -1.779 112.466 -1.661 112.212 -1.426 c
-111.956 -1.183 111.83 -0.878 111.83 -0.515 c
-112.477 -0.515 l
-112.484 -0.742 112.554 -0.918 112.683 -1.043 c
-112.808 -1.161 112.991 -1.22 113.226 -1.22 c
-113.44 -1.22 113.602 -1.172 113.712 -1.073 c
-113.829 -0.977 113.888 -0.849 113.888 -0.691 c
-117.386 -1.705 m
-117.386 1.749 l
-116.858 1.749 l
-116.858 2.278 l
-117.386 2.278 l
-117.386 2.734 l
-117.386 3.135 117.482 3.447 117.681 3.675 c
-117.886 3.899 118.165 4.013 118.518 4.013 c
-118.655 4.013 118.787 3.991 118.915 3.954 c
-118.886 3.41 l
-118.787 3.429 118.687 3.439 118.591 3.439 c
-118.217 3.439 118.034 3.175 118.034 2.646 c
-118.034 2.278 l
-118.709 2.278 l
-118.709 1.749 l
-118.034 1.749 l
-118.034 -1.705 l
-h
-121.12 1.661 m
-121.032 1.679 120.933 1.691 120.826 1.691 c
-120.492 1.691 120.257 1.507 120.12 1.147 c
-120.12 -1.705 l
-119.474 -1.705 l
-119.474 2.278 l
-120.106 2.278 l
-120.12 1.866 l
-120.297 2.19 120.54 2.352 120.856 2.352 c
-120.962 2.352 121.051 2.33 121.12 2.294 c
-h
-121.561 0.47 m
-121.561 1.047 121.697 1.503 121.973 1.837 c
-122.256 2.18 122.627 2.352 123.09 2.352 c
-123.549 2.352 123.917 2.183 124.193 1.852 c
-124.475 1.529 124.623 1.081 124.633 0.515 c
-124.633 0.088 l
-124.633 -0.482 124.49 -0.937 124.207 -1.278 c
-123.931 -1.613 123.564 -1.779 123.104 -1.779 c
-122.641 -1.779 122.271 -1.617 121.988 -1.294 c
-121.712 -0.962 121.569 -0.522 121.561 0.029 c
-h
-122.208 0.088 m
-122.208 -0.316 122.285 -0.632 122.443 -0.867 c
-122.608 -1.103 122.829 -1.22 123.104 -1.22 c
-123.671 -1.22 123.964 -0.808 123.987 0.015 c
-123.987 0.47 l
-123.987 0.871 123.902 1.191 123.736 1.426 c
-123.578 1.669 123.362 1.793 123.09 1.793 c
-122.825 1.793 122.608 1.669 122.443 1.426 c
-122.285 1.191 122.208 0.871 122.208 0.47 c
-h
-126.088 2.278 m
-126.103 1.911 l
-126.346 2.205 126.665 2.352 127.058 2.352 c
-127.499 2.352 127.808 2.153 127.985 1.764 c
-128.238 2.153 128.587 2.352 129.028 2.352 c
-129.763 2.352 130.138 1.889 130.16 0.97 c
-130.16 -1.705 l
-129.513 -1.705 l
-129.513 0.912 l
-129.513 1.205 129.458 1.419 129.352 1.558 c
-129.252 1.694 129.08 1.764 128.837 1.764 c
-128.639 1.764 128.477 1.683 128.352 1.529 c
-128.234 1.382 128.164 1.191 128.147 0.956 c
-128.147 -1.705 l
-127.485 -1.705 l
-127.485 0.941 l
-127.485 1.488 127.264 1.764 126.823 1.764 c
-126.489 1.764 126.254 1.602 126.117 1.278 c
-126.117 -1.705 l
-125.471 -1.705 l
-125.471 2.278 l
-h
-133.703 3.234 m
-133.703 2.278 l
-134.306 2.278 l
-134.306 1.749 l
-133.703 1.749 l
-133.703 -0.721 l
-133.703 -0.878 133.724 -0.995 133.776 -1.073 c
-133.835 -1.153 133.923 -1.191 134.04 -1.191 c
-134.129 -1.191 134.217 -1.176 134.306 -1.147 c
-134.306 -1.705 l
-134.158 -1.753 134.004 -1.779 133.849 -1.779 c
-133.593 -1.779 133.398 -1.687 133.261 -1.5 c
-133.122 -1.315 133.055 -1.055 133.055 -0.721 c
-133.055 1.749 l
-132.453 1.749 l
-132.453 2.278 l
-133.055 2.278 l
-133.055 3.234 l
-h
-135.717 1.866 m
-135.97 2.19 136.29 2.352 136.672 2.352 c
-137.377 2.352 137.734 1.881 137.745 0.941 c
-137.745 -1.705 l
-137.098 -1.705 l
-137.098 0.912 l
-137.098 1.224 137.043 1.444 136.936 1.573 c
-136.826 1.698 136.672 1.764 136.466 1.764 c
-136.307 1.764 136.161 1.709 136.025 1.602 c
-135.896 1.492 135.794 1.357 135.717 1.191 c
-135.717 -1.705 l
-135.069 -1.705 l
-135.069 3.94 l
-135.717 3.94 l
-h
-140.126 -1.779 m
-139.626 -1.779 139.244 -1.631 138.979 -1.338 c
-138.715 -1.043 138.582 -0.61 138.582 -0.029 c
-138.582 0.441 l
-138.582 1.037 138.707 1.503 138.965 1.837 c
-139.229 2.18 139.59 2.352 140.053 2.352 c
-140.512 2.352 140.854 2.198 141.082 1.897 c
-141.317 1.602 141.438 1.139 141.449 0.515 c
-141.449 0.088 l
-139.229 0.088 l
-139.229 0 l
-139.229 -0.434 139.307 -0.746 139.465 -0.941 c
-139.63 -1.128 139.862 -1.22 140.155 -1.22 c
-140.35 -1.22 140.523 -1.187 140.67 -1.117 c
-140.816 -1.04 140.953 -0.922 141.082 -0.764 c
-141.419 -1.176 l
-141.133 -1.58 140.703 -1.779 140.126 -1.779 c
-140.053 1.793 m
-139.777 1.793 139.575 1.698 139.45 1.514 c
-139.322 1.326 139.248 1.037 139.229 0.647 c
-140.802 0.647 l
-140.802 0.735 l
-140.78 1.118 140.714 1.386 140.596 1.544 c
-140.479 1.709 140.295 1.793 140.053 1.793 c
-145.888 -0.691 m
-145.888 -0.544 145.833 -0.422 145.726 -0.324 c
-145.616 -0.228 145.41 -0.11 145.109 0.029 c
-144.764 0.177 144.521 0.298 144.374 0.397 c
-144.227 0.503 144.117 0.621 144.051 0.75 c
-143.981 0.875 143.948 1.033 143.948 1.22 c
-143.948 1.544 144.066 1.812 144.301 2.028 c
-144.536 2.242 144.837 2.352 145.212 2.352 c
-145.594 2.352 145.903 2.238 146.138 2.014 c
-146.373 1.786 146.491 1.5 146.491 1.147 c
-145.844 1.147 l
-145.844 1.323 145.785 1.474 145.668 1.602 c
-145.55 1.727 145.396 1.793 145.212 1.793 c
-145.013 1.793 144.863 1.738 144.756 1.631 c
-144.646 1.532 144.594 1.4 144.594 1.235 c
-144.594 1.106 144.631 1 144.712 0.912 c
-144.789 0.831 144.98 0.728 145.285 0.603 c
-145.763 0.416 146.094 0.228 146.27 0.044 c
-146.447 -0.133 146.535 -0.36 146.535 -0.632 c
-146.535 -0.985 146.41 -1.264 146.167 -1.469 c
-145.932 -1.675 145.616 -1.779 145.227 -1.779 c
-144.804 -1.779 144.466 -1.661 144.213 -1.426 c
-143.955 -1.183 143.831 -0.878 143.831 -0.515 c
-144.477 -0.515 l
-144.484 -0.742 144.554 -0.918 144.683 -1.043 c
-144.808 -1.161 144.991 -1.22 145.227 -1.22 c
-145.44 -1.22 145.601 -1.172 145.712 -1.073 c
-145.83 -0.977 145.888 -0.849 145.888 -0.691 c
-150.254 0.088 m
-150.254 -0.54 150.136 -1.01 149.901 -1.323 c
-149.674 -1.627 149.357 -1.779 148.945 -1.779 c
-148.541 -1.779 148.232 -1.627 148.02 -1.323 c
-148.02 -3.233 l
-147.372 -3.233 l
-147.372 2.278 l
-147.96 2.278 l
-148.005 1.837 l
-148.218 2.18 148.527 2.352 148.93 2.352 c
-149.372 2.352 149.699 2.198 149.915 1.897 c
-150.129 1.592 150.243 1.135 150.254 0.53 c
-h
-149.607 0.47 m
-149.607 0.912 149.537 1.235 149.401 1.44 c
-149.261 1.654 149.041 1.764 148.739 1.764 c
-148.423 1.764 148.185 1.61 148.02 1.309 c
-148.02 -0.764 l
-148.185 -1.07 148.423 -1.22 148.739 -1.22 c
-149.034 -1.22 149.246 -1.117 149.387 -0.912 c
-149.522 -0.698 149.596 -0.368 149.607 0.073 c
-h
-152.517 -1.779 m
-152.018 -1.779 151.635 -1.631 151.371 -1.338 c
-151.106 -1.043 150.974 -0.61 150.974 -0.029 c
-150.974 0.441 l
-150.974 1.037 151.099 1.503 151.357 1.837 c
-151.621 2.18 151.981 2.352 152.444 2.352 c
-152.903 2.352 153.245 2.198 153.473 1.897 c
-153.708 1.602 153.83 1.139 153.84 0.515 c
-153.84 0.088 l
-151.621 0.088 l
-151.621 0 l
-151.621 -0.434 151.698 -0.746 151.856 -0.941 c
-152.022 -1.128 152.253 -1.22 152.547 -1.22 c
-152.741 -1.22 152.914 -1.187 153.061 -1.117 c
-153.208 -1.04 153.344 -0.922 153.473 -0.764 c
-153.811 -1.176 l
-153.524 -1.58 153.094 -1.779 152.517 -1.779 c
-152.444 1.793 m
-152.168 1.793 151.966 1.698 151.841 1.514 c
-151.713 1.326 151.639 1.037 151.621 0.647 c
-153.194 0.647 l
-153.194 0.735 l
-153.171 1.118 153.105 1.386 152.988 1.544 c
-152.87 1.709 152.687 1.793 152.444 1.793 c
-156.001 -1.22 m
-156.214 -1.22 156.387 -1.157 156.516 -1.029 c
-156.652 -0.893 156.725 -0.702 156.736 -0.455 c
-157.354 -0.455 l
-157.331 -0.838 157.196 -1.157 156.942 -1.411 c
-156.685 -1.658 156.373 -1.779 156.001 -1.779 c
-155.509 -1.779 155.134 -1.627 154.869 -1.323 c
-154.612 -1.01 154.487 -0.544 154.487 0.073 c
-154.487 0.515 l
-154.487 1.11 154.612 1.565 154.869 1.881 c
-155.134 2.194 155.509 2.352 156.001 2.352 c
-156.402 2.352 156.722 2.219 156.957 1.955 c
-157.199 1.698 157.331 1.353 157.354 0.912 c
-156.736 0.912 l
-156.714 1.205 156.641 1.426 156.516 1.573 c
-156.398 1.72 156.225 1.793 156.001 1.793 c
-155.707 1.793 155.49 1.694 155.355 1.5 c
-155.214 1.312 155.141 1.004 155.134 0.573 c
-155.134 0.059 l
-155.134 -0.411 155.2 -0.746 155.34 -0.941 c
-155.486 -1.128 155.707 -1.22 156.001 -1.22 c
-158.808 -1.705 -0.646 3.983 re
-158.852 3.322 m
-158.852 3.212 158.823 3.12 158.765 3.042 c
-158.706 2.973 158.611 2.94 158.485 2.94 c
-158.368 2.94 158.272 2.973 158.206 3.042 c
-158.147 3.12 158.118 3.212 158.118 3.322 c
-158.118 3.439 158.147 3.532 158.206 3.601 c
-158.272 3.678 158.368 3.719 158.485 3.719 c
-158.611 3.719 158.706 3.678 158.765 3.601 c
-158.823 3.52 158.852 3.429 158.852 3.322 c
-159.999 -1.705 m
-159.999 1.749 l
-159.484 1.749 l
-159.484 2.278 l
-159.999 2.278 l
-159.999 2.646 l
-160.007 3.076 160.12 3.41 160.337 3.645 c
-160.562 3.888 160.874 4.013 161.278 4.013 c
-161.425 4.013 161.564 3.991 161.705 3.954 c
-161.851 3.913 162.002 3.859 162.16 3.792 c
-162.042 3.219 l
-161.807 3.344 161.564 3.41 161.322 3.41 c
-161.076 3.41 160.903 3.341 160.807 3.204 c
-160.708 3.076 160.66 2.881 160.66 2.616 c
-160.66 2.278 l
-161.308 2.278 l
-161.308 1.749 l
-160.66 1.749 l
-160.66 -1.705 l
-h
-162.469 -1.705 -0.646 3.983 re
-164.938 -1.779 m
-164.438 -1.779 164.056 -1.631 163.791 -1.338 c
-163.527 -1.043 163.394 -0.61 163.394 -0.029 c
-163.394 0.441 l
-163.394 1.037 163.519 1.503 163.777 1.837 c
-164.041 2.18 164.402 2.352 164.865 2.352 c
-165.324 2.352 165.666 2.198 165.894 1.897 c
-166.129 1.602 166.25 1.139 166.261 0.515 c
-166.261 0.088 l
-164.041 0.088 l
-164.041 0 l
-164.041 -0.434 164.119 -0.746 164.277 -0.941 c
-164.442 -1.128 164.674 -1.22 164.967 -1.22 c
-165.162 -1.22 165.335 -1.187 165.482 -1.117 c
-165.628 -1.04 165.765 -0.922 165.894 -0.764 c
-166.231 -1.176 l
-165.945 -1.58 165.515 -1.779 164.938 -1.779 c
-164.865 1.793 m
-164.589 1.793 164.387 1.698 164.262 1.514 c
-164.134 1.326 164.059 1.037 164.041 0.647 c
-165.614 0.647 l
-165.614 0.735 l
-165.592 1.118 165.526 1.386 165.408 1.544 c
-165.291 1.709 165.107 1.793 164.865 1.793 c
-166.908 0.47 m
-166.908 1.077 167.018 1.544 167.246 1.866 c
-167.481 2.19 167.808 2.352 168.231 2.352 c
-168.612 2.352 168.911 2.194 169.127 1.881 c
-169.127 3.94 l
-169.774 3.94 l
-169.774 -1.705 l
-169.186 -1.705 l
-169.142 -1.278 l
-168.936 -1.613 168.631 -1.779 168.231 -1.779 c
-167.819 -1.779 167.496 -1.624 167.261 -1.309 c
-167.025 -0.985 166.908 -0.529 166.908 0.059 c
-h
-167.554 0.088 m
-167.554 -0.353 167.617 -0.683 167.745 -0.897 c
-167.882 -1.103 168.102 -1.205 168.407 -1.205 c
-168.73 -1.205 168.969 -1.043 169.127 -0.721 c
-169.127 1.294 l
-168.959 1.606 168.72 1.764 168.407 1.764 c
-168.102 1.764 167.882 1.661 167.745 1.455 c
-167.617 1.249 167.554 0.926 167.554 0.485 c
-h
-173.875 -1.22 m
-174.089 -1.22 174.261 -1.157 174.39 -1.029 c
-174.526 -0.893 174.599 -0.702 174.61 -0.455 c
-175.228 -0.455 l
-175.205 -0.838 175.07 -1.157 174.816 -1.411 c
-174.559 -1.658 174.247 -1.779 173.875 -1.779 c
-173.383 -1.779 173.008 -1.627 172.743 -1.323 c
-172.486 -1.01 172.361 -0.544 172.361 0.073 c
-172.361 0.515 l
-172.361 1.11 172.486 1.565 172.743 1.881 c
-173.008 2.194 173.383 2.352 173.875 2.352 c
-174.276 2.352 174.596 2.219 174.831 1.955 c
-175.073 1.698 175.205 1.353 175.228 0.912 c
-174.61 0.912 l
-174.588 1.205 174.515 1.426 174.39 1.573 c
-174.272 1.72 174.099 1.793 173.875 1.793 c
-173.581 1.793 173.364 1.694 173.229 1.5 c
-173.089 1.312 173.015 1.004 173.008 0.573 c
-173.008 0.059 l
-173.008 -0.411 173.074 -0.746 173.214 -0.941 c
-173.36 -1.128 173.581 -1.22 173.875 -1.22 c
-175.845 0.47 m
-175.845 1.047 175.98 1.503 176.256 1.837 c
-176.539 2.18 176.911 2.352 177.374 2.352 c
-177.833 2.352 178.201 2.183 178.476 1.852 c
-178.759 1.529 178.906 1.081 178.916 0.515 c
-178.916 0.088 l
-178.916 -0.482 178.773 -0.937 178.49 -1.278 c
-178.215 -1.613 177.848 -1.779 177.388 -1.779 c
-176.925 -1.779 176.554 -1.617 176.271 -1.294 c
-175.995 -0.962 175.852 -0.522 175.845 0.029 c
-h
-176.491 0.088 m
-176.491 -0.316 176.568 -0.632 176.726 -0.867 c
-176.892 -1.103 177.113 -1.22 177.388 -1.22 c
-177.954 -1.22 178.249 -0.808 178.27 0.015 c
-178.27 0.47 l
-178.27 0.871 178.185 1.191 178.02 1.426 c
-177.862 1.669 177.646 1.793 177.374 1.793 c
-177.109 1.793 176.892 1.669 176.726 1.426 c
-176.568 1.191 176.491 0.871 176.491 0.47 c
-h
-180.372 2.278 m
-180.387 1.911 l
-180.63 2.205 180.949 2.352 181.343 2.352 c
-181.783 2.352 182.091 2.153 182.268 1.764 c
-182.522 2.153 182.871 2.352 183.312 2.352 c
-184.047 2.352 184.422 1.889 184.443 0.97 c
-184.443 -1.705 l
-183.797 -1.705 l
-183.797 0.912 l
-183.797 1.205 183.741 1.419 183.635 1.558 c
-183.536 1.694 183.363 1.764 183.121 1.764 c
-182.922 1.764 182.76 1.683 182.636 1.529 c
-182.519 1.382 182.448 1.191 182.43 0.956 c
-182.43 -1.705 l
-181.769 -1.705 l
-181.769 0.941 l
-181.769 1.488 181.548 1.764 181.107 1.764 c
-180.772 1.764 180.537 1.602 180.402 1.278 c
-180.402 -1.705 l
-179.755 -1.705 l
-179.755 2.278 l
-h
-186.031 2.278 m
-186.046 1.911 l
-186.288 2.205 186.608 2.352 187.001 2.352 c
-187.442 2.352 187.751 2.153 187.928 1.764 c
-188.181 2.153 188.53 2.352 188.971 2.352 c
-189.706 2.352 190.081 1.889 190.103 0.97 c
-190.103 -1.705 l
-189.456 -1.705 l
-189.456 0.912 l
-189.456 1.205 189.401 1.419 189.295 1.558 c
-189.195 1.694 189.023 1.764 188.78 1.764 c
-188.582 1.764 188.42 1.683 188.295 1.529 c
-188.177 1.382 188.107 1.191 188.089 0.956 c
-188.089 -1.705 l
-187.427 -1.705 l
-187.427 0.941 l
-187.427 1.488 187.207 1.764 186.766 1.764 c
-186.432 1.764 186.197 1.602 186.06 1.278 c
-186.06 -1.705 l
-185.414 -1.705 l
-185.414 2.278 l
-h
-191.778 -1.705 -0.646 3.983 re
-191.822 3.322 m
-191.822 3.212 191.793 3.12 191.734 3.042 c
-191.676 2.973 191.58 2.94 191.456 2.94 c
-191.338 2.94 191.242 2.973 191.176 3.042 c
-191.117 3.12 191.088 3.212 191.088 3.322 c
-191.088 3.439 191.117 3.532 191.176 3.601 c
-191.242 3.678 191.338 3.719 191.456 3.719 c
-191.58 3.719 191.676 3.678 191.734 3.601 c
-191.793 3.52 191.822 3.429 191.822 3.322 c
-193.646 3.234 m
-193.646 2.278 l
-194.248 2.278 l
-194.248 1.749 l
-193.646 1.749 l
-193.646 -0.721 l
-193.646 -0.878 193.667 -0.995 193.719 -1.073 c
-193.777 -1.153 193.866 -1.191 193.983 -1.191 c
-194.072 -1.191 194.16 -1.176 194.248 -1.147 c
-194.248 -1.705 l
-194.101 -1.753 193.947 -1.779 193.792 -1.779 c
-193.536 -1.779 193.341 -1.687 193.204 -1.5 c
-193.065 -1.315 192.998 -1.055 192.998 -0.721 c
-192.998 1.749 l
-192.396 1.749 l
-192.396 2.278 l
-192.998 2.278 l
-192.998 3.234 l
-h
-195.057 -1.352 m
-195.057 -1.234 195.09 -1.139 195.159 -1.058 c
-195.225 -0.981 195.329 -0.941 195.468 -0.941 c
-195.615 -0.941 195.722 -0.981 195.791 -1.058 c
-195.869 -1.139 195.909 -1.234 195.909 -1.352 c
-195.909 -1.463 195.869 -1.554 195.791 -1.631 c
-195.722 -1.708 195.615 -1.749 195.468 -1.749 c
-195.329 -1.749 195.225 -1.708 195.159 -1.631 c
-195.09 -1.554 195.057 -1.463 195.057 -1.352 c
-199.51 -1.705 -0.676 5.35 re
-201.451 3.234 m
-201.451 2.278 l
-202.053 2.278 l
-202.053 1.749 l
-201.451 1.749 l
-201.451 -0.721 l
-201.451 -0.878 201.472 -0.995 201.524 -1.073 c
-201.583 -1.153 201.671 -1.191 201.789 -1.191 c
-201.877 -1.191 201.964 -1.176 202.053 -1.147 c
-202.053 -1.705 l
-201.906 -1.753 201.752 -1.779 201.598 -1.779 c
-201.34 -1.779 201.145 -1.687 201.01 -1.5 c
-200.87 -1.315 200.804 -1.055 200.804 -0.721 c
-200.804 1.749 l
-200.201 1.749 l
-200.201 2.278 l
-200.804 2.278 l
-200.804 3.234 l
-h
-f
-Q
-q 1 0 0 1 412.9262 238.2432 cm
-0 0 m
-0 0.617 0.11 1.081 0.338 1.396 c
-0.563 1.72 0.897 1.881 1.338 1.881 c
-1.738 1.881 2.043 1.706 2.249 1.353 c
-2.294 1.808 l
-2.881 1.808 l
-2.881 -2.219 l
-2.881 -2.708 2.753 -3.087 2.499 -3.351 c
-2.242 -3.616 1.889 -3.748 1.44 -3.748 c
-1.242 -3.748 1.022 -3.697 0.779 -3.601 c
-0.533 -3.502 0.353 -3.381 0.235 -3.233 c
-0.5 -2.793 l
-0.765 -3.057 1.062 -3.19 1.396 -3.19 c
-1.933 -3.19 2.209 -2.896 2.219 -2.308 c
-2.219 -1.779 l
-2.014 -2.094 1.712 -2.249 1.323 -2.249 c
-0.912 -2.249 0.588 -2.098 0.353 -1.793 c
-0.125 -1.481 0.008 -1.029 0 -0.441 c
-h
-0.661 -0.382 m
-0.661 -0.823 0.724 -1.153 0.852 -1.367 c
-0.977 -1.573 1.195 -1.675 1.5 -1.675 c
-1.823 -1.675 2.061 -1.51 2.219 -1.176 c
-2.219 0.808 l
-2.051 1.132 1.812 1.294 1.5 1.294 c
-1.205 1.294 0.989 1.191 0.852 0.985 c
-0.724 0.779 0.661 0.455 0.661 0.015 c
-h
-5.262 -2.249 m
-4.763 -2.249 4.38 -2.102 4.116 -1.808 c
-3.851 -1.514 3.719 -1.08 3.719 -0.5 c
-3.719 -0.029 l
-3.719 0.566 3.844 1.033 4.101 1.367 c
-4.366 1.709 4.726 1.881 5.189 1.881 c
-5.648 1.881 5.99 1.727 6.217 1.426 c
-6.453 1.132 6.574 0.669 6.585 0.044 c
-6.585 -0.382 l
-4.366 -0.382 l
-4.366 -0.47 l
-4.366 -0.904 4.443 -1.216 4.601 -1.411 c
-4.767 -1.598 4.998 -1.691 5.292 -1.691 c
-5.486 -1.691 5.659 -1.658 5.806 -1.587 c
-5.953 -1.51 6.089 -1.392 6.217 -1.234 c
-6.556 -1.646 l
-6.269 -2.051 5.839 -2.249 5.262 -2.249 c
-5.189 1.323 m
-4.913 1.323 4.711 1.228 4.586 1.043 c
-4.457 0.856 4.384 0.566 4.366 0.177 c
-5.939 0.177 l
-5.939 0.264 l
-5.916 0.647 5.85 0.915 5.733 1.073 c
-5.615 1.239 5.432 1.323 5.189 1.323 c
-7.981 1.808 m
-7.996 1.367 l
-8.25 1.709 8.573 1.881 8.966 1.881 c
-9.672 1.881 10.028 1.411 10.04 0.47 c
-10.04 -2.175 l
-9.392 -2.175 l
-9.392 0.441 l
-9.392 0.754 9.338 0.974 9.231 1.103 c
-9.12 1.228 8.966 1.294 8.761 1.294 c
-8.603 1.294 8.455 1.239 8.32 1.132 c
-8.191 1.022 8.088 0.886 8.011 0.721 c
-8.011 -2.175 l
-7.364 -2.175 l
-7.364 1.808 l
-h
-12.436 -2.249 m
-11.936 -2.249 11.553 -2.102 11.289 -1.808 c
-11.025 -1.514 10.892 -1.08 10.892 -0.5 c
-10.892 -0.029 l
-10.892 0.566 11.017 1.033 11.274 1.367 c
-11.539 1.709 11.899 1.881 12.362 1.881 c
-12.821 1.881 13.163 1.727 13.391 1.426 c
-13.626 1.132 13.747 0.669 13.758 0.044 c
-13.758 -0.382 l
-11.539 -0.382 l
-11.539 -0.47 l
-11.539 -0.904 11.616 -1.216 11.774 -1.411 c
-11.939 -1.598 12.171 -1.691 12.465 -1.691 c
-12.66 -1.691 12.833 -1.658 12.979 -1.587 c
-13.126 -1.51 13.263 -1.392 13.391 -1.234 c
-13.729 -1.646 l
-13.442 -2.051 13.012 -2.249 12.436 -2.249 c
-12.362 1.323 m
-12.087 1.323 11.884 1.228 11.759 1.043 c
-11.63 0.856 11.557 0.566 11.539 0.177 c
-13.112 0.177 l
-13.112 0.264 l
-13.089 0.647 13.024 0.915 12.906 1.073 c
-12.788 1.239 12.605 1.323 12.362 1.323 c
-16.184 1.191 m
-16.095 1.209 15.996 1.22 15.89 1.22 c
-15.555 1.22 15.32 1.037 15.184 0.676 c
-15.184 -2.175 l
-14.537 -2.175 l
-14.537 1.808 l
-15.169 1.808 l
-15.184 1.396 l
-15.36 1.72 15.603 1.881 15.919 1.881 c
-16.025 1.881 16.114 1.86 16.184 1.823 c
-h
-18.726 -2.175 m
-18.686 -2.087 18.66 -1.94 18.653 -1.735 c
-18.418 -2.08 18.124 -2.249 17.771 -2.249 c
-17.407 -2.249 17.124 -2.153 16.918 -1.955 c
-16.721 -1.749 16.625 -1.463 16.625 -1.087 c
-16.625 -0.687 16.761 -0.368 17.036 -0.133 c
-17.309 0.11 17.683 0.235 18.153 0.235 c
-18.639 0.235 l
-18.639 0.661 l
-18.639 0.897 18.583 1.062 18.477 1.161 c
-18.367 1.268 18.205 1.323 17.992 1.323 c
-17.793 1.323 17.631 1.264 17.506 1.147 c
-17.389 1.029 17.33 0.882 17.33 0.706 c
-16.683 0.706 l
-16.683 0.9 16.742 1.091 16.86 1.278 c
-16.985 1.463 17.147 1.61 17.345 1.72 c
-17.55 1.827 17.779 1.881 18.036 1.881 c
-18.437 1.881 18.741 1.779 18.947 1.573 c
-19.16 1.367 19.274 1.073 19.285 0.691 c
-19.285 -1.323 l
-19.285 -1.627 19.322 -1.893 19.403 -2.117 c
-19.403 -2.175 l
-h
-17.859 -1.661 m
-18.025 -1.661 18.175 -1.617 18.315 -1.529 c
-18.462 -1.44 18.568 -1.33 18.639 -1.191 c
-18.639 -0.25 l
-18.271 -0.25 l
-17.955 -0.25 17.712 -0.32 17.536 -0.455 c
-17.359 -0.584 17.271 -0.771 17.271 -1.014 c
-17.271 -1.242 17.315 -1.407 17.404 -1.514 c
-17.492 -1.613 17.643 -1.661 17.859 -1.661 c
-21.137 2.764 m
-21.137 1.808 l
-21.74 1.808 l
-21.74 1.278 l
-21.137 1.278 l
-21.137 -1.191 l
-21.137 -1.348 21.159 -1.466 21.211 -1.544 c
-21.269 -1.624 21.358 -1.661 21.475 -1.661 c
-21.564 -1.661 21.652 -1.646 21.74 -1.617 c
-21.74 -2.175 l
-21.593 -2.223 21.439 -2.249 21.284 -2.249 c
-21.027 -2.249 20.833 -2.157 20.696 -1.97 c
-20.557 -1.786 20.49 -1.525 20.49 -1.191 c
-20.49 1.278 l
-19.888 1.278 l
-19.888 1.808 l
-20.49 1.808 l
-20.49 2.764 l
-h
-23.931 -2.249 m
-23.43 -2.249 23.048 -2.102 22.784 -1.808 c
-22.519 -1.514 22.387 -1.08 22.387 -0.5 c
-22.387 -0.029 l
-22.387 0.566 22.512 1.033 22.769 1.367 c
-23.033 1.709 23.393 1.881 23.856 1.881 c
-24.316 1.881 24.658 1.727 24.885 1.426 c
-25.121 1.132 25.242 0.669 25.253 0.044 c
-25.253 -0.382 l
-23.033 -0.382 l
-23.033 -0.47 l
-23.033 -0.904 23.111 -1.216 23.268 -1.411 c
-23.434 -1.598 23.665 -1.691 23.96 -1.691 c
-24.154 -1.691 24.327 -1.658 24.474 -1.587 c
-24.621 -1.51 24.757 -1.392 24.885 -1.234 c
-25.224 -1.646 l
-24.937 -2.051 24.507 -2.249 23.931 -2.249 c
-23.856 1.323 m
-23.582 1.323 23.379 1.228 23.254 1.043 c
-23.125 0.856 23.052 0.566 23.033 0.177 c
-24.606 0.177 l
-24.606 0.264 l
-24.584 0.647 24.518 0.915 24.401 1.073 c
-24.283 1.239 24.099 1.323 23.856 1.323 c
-27.972 -1.161 m
-27.972 -1.014 27.917 -0.893 27.811 -0.794 c
-27.7 -0.698 27.495 -0.58 27.193 -0.441 c
-26.848 -0.294 26.605 -0.172 26.458 -0.073 c
-26.312 0.033 26.201 0.151 26.135 0.279 c
-26.065 0.405 26.032 0.563 26.032 0.75 c
-26.032 1.073 26.15 1.341 26.385 1.558 c
-26.62 1.771 26.921 1.881 27.296 1.881 c
-27.678 1.881 27.987 1.768 28.222 1.544 c
-28.457 1.316 28.575 1.029 28.575 0.676 c
-27.929 0.676 l
-27.929 0.852 27.869 1.004 27.752 1.132 c
-27.634 1.257 27.48 1.323 27.296 1.323 c
-27.098 1.323 26.947 1.268 26.84 1.161 c
-26.73 1.062 26.678 0.929 26.678 0.765 c
-26.678 0.636 26.716 0.53 26.796 0.441 c
-26.874 0.36 27.065 0.258 27.37 0.133 c
-27.848 -0.055 28.178 -0.243 28.355 -0.426 c
-28.531 -0.603 28.619 -0.831 28.619 -1.103 c
-28.619 -1.455 28.494 -1.735 28.251 -1.94 c
-28.016 -2.146 27.7 -2.249 27.311 -2.249 c
-26.888 -2.249 26.55 -2.132 26.296 -1.897 c
-26.04 -1.654 25.915 -1.348 25.915 -0.985 c
-26.561 -0.985 l
-26.568 -1.213 26.639 -1.389 26.767 -1.514 c
-26.892 -1.631 27.075 -1.691 27.311 -1.691 c
-27.524 -1.691 27.686 -1.643 27.796 -1.544 c
-27.914 -1.448 27.972 -1.319 27.972 -1.161 c
-33.22 -2.175 m
-33.18 -2.087 33.154 -1.94 33.146 -1.735 c
-32.911 -2.08 32.617 -2.249 32.265 -2.249 c
-31.9 -2.249 31.617 -2.153 31.412 -1.955 c
-31.214 -1.749 31.118 -1.463 31.118 -1.087 c
-31.118 -0.687 31.254 -0.368 31.53 -0.133 c
-31.802 0.11 32.176 0.235 32.646 0.235 c
-33.132 0.235 l
-33.132 0.661 l
-33.132 0.897 33.076 1.062 32.97 1.161 c
-32.86 1.268 32.698 1.323 32.485 1.323 c
-32.286 1.323 32.125 1.264 32 1.147 c
-31.883 1.029 31.823 0.882 31.823 0.706 c
-31.177 0.706 l
-31.177 0.9 31.235 1.091 31.353 1.278 c
-31.478 1.463 31.64 1.61 31.838 1.72 c
-32.044 1.827 32.272 1.881 32.529 1.881 c
-32.93 1.881 33.234 1.779 33.44 1.573 c
-33.654 1.367 33.768 1.073 33.778 0.691 c
-33.778 -1.323 l
-33.778 -1.627 33.815 -1.893 33.896 -2.117 c
-33.896 -2.175 l
-h
-32.353 -1.661 m
-32.519 -1.661 32.669 -1.617 32.808 -1.529 c
-32.955 -1.44 33.062 -1.33 33.132 -1.191 c
-33.132 -0.25 l
-32.764 -0.25 l
-32.448 -0.25 32.205 -0.32 32.029 -0.455 c
-31.853 -0.584 31.765 -0.771 31.765 -1.014 c
-31.765 -1.242 31.809 -1.407 31.897 -1.514 c
-31.985 -1.613 32.136 -1.661 32.353 -1.661 c
-35.395 1.808 m
-35.41 1.367 l
-35.663 1.709 35.987 1.881 36.38 1.881 c
-37.086 1.881 37.442 1.411 37.454 0.47 c
-37.454 -2.175 l
-36.806 -2.175 l
-36.806 0.441 l
-36.806 0.754 36.752 0.974 36.645 1.103 c
-36.535 1.228 36.38 1.294 36.174 1.294 c
-36.016 1.294 35.869 1.239 35.733 1.132 c
-35.605 1.022 35.502 0.886 35.424 0.721 c
-35.424 -2.175 l
-34.778 -2.175 l
-34.778 1.808 l
-h
-f
-Q
-454.054 236.068 -1.044 3.983 re
-452.967 241.08 m
-452.967 241.235 453.014 241.364 453.114 241.462 c
-453.22 241.569 453.356 241.624 453.525 241.624 c
-453.702 241.624 453.837 241.569 453.937 241.462 c
-454.043 241.364 454.099 241.235 454.099 241.08 c
-454.099 240.911 454.043 240.776 453.937 240.668 c
-453.837 240.57 453.702 240.522 453.525 240.522 c
-453.356 240.522 453.22 240.57 453.114 240.668 c
-453.014 240.776 452.967 240.911 452.967 241.08 c
-455.818 240.051 m
-455.847 239.654 l
-456.083 239.967 456.384 240.125 456.759 240.125 c
-457.442 240.125 457.795 239.643 457.817 238.684 c
-457.817 236.068 l
-456.773 236.068 l
-456.773 238.611 l
-456.773 238.835 456.736 238.997 456.671 239.096 c
-456.601 239.191 456.483 239.243 456.318 239.243 c
-456.131 239.243 455.984 239.147 455.877 238.964 c
-455.877 236.068 l
-454.833 236.068 l
-454.833 240.051 l
-h
-459.875 237.538 m
-460.375 240.051 l
-461.463 240.051 l
-460.36 236.068 l
-459.375 236.068 l
-458.273 240.051 l
-459.36 240.051 l
-h
-463.506 235.994 m
-462.976 235.994 462.558 236.149 462.257 236.464 c
-461.962 236.788 461.815 237.248 461.815 237.846 c
-461.815 238.155 l
-461.815 238.779 461.951 239.265 462.227 239.61 c
-462.498 239.953 462.892 240.125 463.403 240.125 c
-463.903 240.125 464.274 239.963 464.52 239.639 c
-464.773 239.317 464.906 238.839 464.917 238.214 c
-464.917 237.714 l
-462.845 237.714 l
-462.863 237.42 462.926 237.204 463.036 237.067 c
-463.153 236.928 463.333 236.861 463.579 236.861 c
-463.921 236.861 464.212 236.979 464.447 237.214 c
-464.858 236.582 l
-464.73 236.406 464.542 236.263 464.299 236.156 c
-464.053 236.049 463.789 235.994 463.506 235.994 c
-462.859 238.434 m
-463.888 238.434 l
-463.888 238.538 l
-463.888 238.773 463.847 238.949 463.77 239.066 c
-463.701 239.191 463.572 239.257 463.388 239.257 c
-463.212 239.257 463.08 239.188 462.991 239.051 c
-462.91 238.923 462.866 238.717 462.859 238.434 c
-467.46 239.037 m
-467.121 239.066 l
-466.835 239.066 466.644 238.941 466.548 238.699 c
-466.548 236.068 l
-465.505 236.068 l
-465.505 240.051 l
-466.475 240.051 l
-466.504 239.61 l
-466.67 239.953 466.901 240.125 467.196 240.125 c
-467.313 240.125 467.404 240.103 467.474 240.066 c
-h
-469.768 237.141 m
-469.768 237.229 469.723 237.306 469.635 237.376 c
-469.547 237.453 469.359 237.556 469.077 237.684 c
-468.643 237.861 468.345 238.041 468.18 238.228 c
-468.022 238.413 467.944 238.644 467.944 238.92 c
-467.944 239.261 468.066 239.544 468.312 239.772 c
-468.566 240.007 468.904 240.125 469.326 240.125 c
-469.756 240.125 470.105 240.011 470.371 239.787 c
-470.635 239.559 470.767 239.257 470.767 238.875 c
-469.723 238.875 l
-469.723 239.199 469.584 239.361 469.312 239.361 c
-469.201 239.361 469.114 239.324 469.047 239.257 c
-468.977 239.188 468.944 239.089 468.944 238.964 c
-468.944 238.875 468.981 238.794 469.062 238.729 c
-469.139 238.669 469.319 238.574 469.606 238.449 c
-470.036 238.291 470.334 238.114 470.502 237.92 c
-470.679 237.732 470.767 237.483 470.767 237.17 c
-470.767 236.817 470.635 236.531 470.371 236.318 c
-470.105 236.101 469.756 235.994 469.326 235.994 c
-469.033 235.994 468.771 236.049 468.547 236.156 c
-468.32 236.273 468.143 236.435 468.019 236.641 c
-467.901 236.847 467.842 237.067 467.842 237.302 c
-468.827 237.302 l
-468.827 237.115 468.863 236.979 468.944 236.891 c
-469.033 236.803 469.165 236.759 469.341 236.759 c
-469.625 236.759 469.768 236.884 469.768 237.141 c
-472.516 236.068 -1.044 3.983 re
-471.429 241.08 m
-471.429 241.235 471.476 241.364 471.576 241.462 c
-471.682 241.569 471.818 241.624 471.987 241.624 c
-472.164 241.624 472.299 241.569 472.399 241.462 c
-472.505 241.364 472.561 241.235 472.561 241.08 c
-472.561 240.911 472.505 240.776 472.399 240.668 c
-472.299 240.57 472.164 240.522 471.987 240.522 c
-471.818 240.522 471.682 240.57 471.576 240.668 c
-471.476 240.776 471.429 240.911 471.429 241.08 c
-473.207 238.185 m
-473.207 238.791 473.347 239.265 473.633 239.61 c
-473.916 239.953 474.309 240.125 474.809 240.125 c
-475.316 240.125 475.713 239.953 476 239.61 c
-476.283 239.265 476.426 238.791 476.426 238.185 c
-476.426 237.92 l
-476.426 237.321 476.283 236.851 476 236.508 c
-475.713 236.163 475.316 235.994 474.809 235.994 c
-474.298 235.994 473.902 236.163 473.619 236.508 c
-473.343 236.851 473.207 237.325 473.207 237.935 c
-h
-474.251 237.92 m
-474.251 237.214 474.435 236.861 474.809 236.861 c
-475.162 236.861 475.353 237.156 475.383 237.744 c
-475.383 238.185 l
-475.383 238.544 475.331 238.816 475.235 238.993 c
-475.136 239.169 474.993 239.257 474.809 239.257 c
-474.633 239.257 474.493 239.169 474.398 238.993 c
-474.298 238.816 474.251 238.544 474.251 238.185 c
-h
-478.028 240.051 m
-478.057 239.654 l
-478.293 239.967 478.595 240.125 478.969 240.125 c
-479.653 240.125 480.006 239.643 480.027 238.684 c
-480.027 236.068 l
-478.984 236.068 l
-478.984 238.611 l
-478.984 238.835 478.947 238.997 478.881 239.096 c
-478.811 239.191 478.693 239.243 478.528 239.243 c
-478.341 239.243 478.194 239.147 478.087 238.964 c
-478.087 236.068 l
-477.043 236.068 l
-477.043 240.051 l
-h
-f
-q 1 0 0 1 482.4675 238.2432 cm
-0 0 m
-0 0.577 0.136 1.033 0.411 1.367 c
-0.694 1.709 1.066 1.881 1.529 1.881 c
-1.988 1.881 2.356 1.712 2.631 1.382 c
-2.914 1.058 3.061 0.611 3.072 0.044 c
-3.072 -0.382 l
-3.072 -0.952 2.929 -1.407 2.645 -1.749 c
-2.37 -2.084 2.003 -2.249 1.544 -2.249 c
-1.08 -2.249 0.709 -2.087 0.426 -1.764 c
-0.151 -1.433 0.008 -0.992 0 -0.441 c
-h
-0.646 -0.382 m
-0.646 -0.786 0.723 -1.103 0.882 -1.338 c
-1.047 -1.573 1.268 -1.691 1.544 -1.691 c
-2.109 -1.691 2.404 -1.278 2.425 -0.455 c
-2.425 0 l
-2.425 0.401 2.341 0.721 2.175 0.956 c
-2.018 1.199 1.801 1.323 1.529 1.323 c
-1.264 1.323 1.047 1.199 0.882 0.956 c
-0.723 0.721 0.646 0.401 0.646 0 c
-h
-4.204 -2.175 m
-4.204 1.278 l
-3.675 1.278 l
-3.675 1.808 l
-4.204 1.808 l
-4.204 2.263 l
-4.204 2.664 4.299 2.977 4.498 3.204 c
-4.704 3.429 4.983 3.543 5.336 3.543 c
-5.471 3.543 5.604 3.52 5.733 3.484 c
-5.703 2.94 l
-5.604 2.959 5.505 2.969 5.409 2.969 c
-5.035 2.969 4.85 2.705 4.85 2.176 c
-4.85 1.808 l
-5.527 1.808 l
-5.527 1.278 l
-4.85 1.278 l
-4.85 -2.175 l
-h
-9.392 -1.691 m
-9.606 -1.691 9.779 -1.627 9.907 -1.5 c
-10.043 -1.363 10.117 -1.172 10.128 -0.926 c
-10.745 -0.926 l
-10.723 -1.309 10.587 -1.627 10.333 -1.881 c
-10.076 -2.128 9.764 -2.249 9.392 -2.249 c
-8.9 -2.249 8.525 -2.098 8.261 -1.793 c
-8.004 -1.481 7.879 -1.014 7.879 -0.397 c
-7.879 0.044 l
-7.879 0.64 8.004 1.095 8.261 1.411 c
-8.525 1.723 8.9 1.881 9.392 1.881 c
-9.793 1.881 10.113 1.749 10.348 1.484 c
-10.591 1.228 10.723 0.882 10.745 0.441 c
-10.128 0.441 l
-10.105 0.735 10.032 0.956 9.907 1.103 c
-9.789 1.249 9.617 1.323 9.392 1.323 c
-9.099 1.323 8.882 1.224 8.746 1.029 c
-8.606 0.842 8.533 0.533 8.525 0.103 c
-8.525 -0.411 l
-8.525 -0.881 8.592 -1.216 8.731 -1.411 c
-8.878 -1.598 9.099 -1.691 9.392 -1.691 c
-12.141 1.396 m
-12.395 1.72 12.715 1.881 13.097 1.881 c
-13.803 1.881 14.159 1.411 14.169 0.47 c
-14.169 -2.175 l
-13.523 -2.175 l
-13.523 0.441 l
-13.523 0.754 13.468 0.974 13.361 1.103 c
-13.251 1.228 13.097 1.294 12.891 1.294 c
-12.733 1.294 12.586 1.239 12.45 1.132 c
-12.322 1.022 12.218 0.886 12.141 0.721 c
-12.141 -2.175 l
-11.495 -2.175 l
-11.495 3.469 l
-12.141 3.469 l
-h
-17.169 -2.175 m
-17.128 -2.087 17.103 -1.94 17.095 -1.735 c
-16.86 -2.08 16.565 -2.249 16.213 -2.249 c
-15.85 -2.249 15.566 -2.153 15.36 -1.955 c
-15.162 -1.749 15.067 -1.463 15.067 -1.087 c
-15.067 -0.687 15.202 -0.368 15.478 -0.133 c
-15.75 0.11 16.125 0.235 16.596 0.235 c
-17.08 0.235 l
-17.08 0.661 l
-17.08 0.897 17.026 1.062 16.918 1.161 c
-16.808 1.268 16.646 1.323 16.434 1.323 c
-16.235 1.323 16.074 1.264 15.948 1.147 c
-15.831 1.029 15.772 0.882 15.772 0.706 c
-15.125 0.706 l
-15.125 0.9 15.185 1.091 15.302 1.278 c
-15.426 1.463 15.588 1.61 15.787 1.72 c
-15.993 1.827 16.22 1.881 16.478 1.881 c
-16.878 1.881 17.184 1.779 17.389 1.573 c
-17.602 1.367 17.716 1.073 17.727 0.691 c
-17.727 -1.323 l
-17.727 -1.627 17.764 -1.893 17.845 -2.117 c
-17.845 -2.175 l
-h
-16.301 -1.661 m
-16.467 -1.661 16.617 -1.617 16.756 -1.529 c
-16.904 -1.44 17.01 -1.33 17.08 -1.191 c
-17.08 -0.25 l
-16.713 -0.25 l
-16.397 -0.25 16.154 -0.32 15.978 -0.455 c
-15.802 -0.584 15.713 -0.771 15.713 -1.014 c
-15.713 -1.242 15.757 -1.407 15.846 -1.514 c
-15.933 -1.613 16.085 -1.661 16.301 -1.661 c
-19.343 1.808 m
-19.359 1.367 l
-19.613 1.709 19.935 1.881 20.328 1.881 c
-21.034 1.881 21.391 1.411 21.402 0.47 c
-21.402 -2.175 l
-20.755 -2.175 l
-20.755 0.441 l
-20.755 0.754 20.7 0.974 20.594 1.103 c
-20.483 1.228 20.328 1.294 20.123 1.294 c
-19.965 1.294 19.818 1.239 19.682 1.132 c
-19.553 1.022 19.451 0.886 19.374 0.721 c
-19.374 -2.175 l
-18.726 -2.175 l
-18.726 1.808 l
-h
-22.24 0 m
-22.24 0.617 22.35 1.081 22.578 1.396 c
-22.802 1.72 23.137 1.881 23.577 1.881 c
-23.978 1.881 24.282 1.706 24.488 1.353 c
-24.533 1.808 l
-25.121 1.808 l
-25.121 -2.219 l
-25.121 -2.708 24.992 -3.087 24.739 -3.351 c
-24.481 -3.616 24.128 -3.748 23.68 -3.748 c
-23.482 -3.748 23.262 -3.697 23.019 -3.601 c
-22.772 -3.502 22.593 -3.381 22.475 -3.233 c
-22.74 -2.793 l
-23.004 -3.057 23.301 -3.19 23.636 -3.19 c
-24.172 -3.19 24.448 -2.896 24.459 -2.308 c
-24.459 -1.779 l
-24.253 -2.094 23.952 -2.249 23.563 -2.249 c
-23.151 -2.249 22.828 -2.098 22.593 -1.793 c
-22.364 -1.481 22.247 -1.029 22.24 -0.441 c
-h
-22.901 -0.382 m
-22.901 -0.823 22.963 -1.153 23.092 -1.367 c
-23.217 -1.573 23.434 -1.675 23.739 -1.675 c
-24.062 -1.675 24.301 -1.51 24.459 -1.176 c
-24.459 0.808 l
-24.29 1.132 24.051 1.294 23.739 1.294 c
-23.445 1.294 23.228 1.191 23.092 0.985 c
-22.963 0.779 22.901 0.455 22.901 0.015 c
-h
-27.502 -2.249 m
-27.002 -2.249 26.62 -2.102 26.356 -1.808 c
-26.09 -1.514 25.959 -1.08 25.959 -0.5 c
-25.959 -0.029 l
-25.959 0.566 26.084 1.033 26.341 1.367 c
-26.605 1.709 26.965 1.881 27.428 1.881 c
-27.888 1.881 28.23 1.727 28.457 1.426 c
-28.693 1.132 28.814 0.669 28.825 0.044 c
-28.825 -0.382 l
-26.605 -0.382 l
-26.605 -0.47 l
-26.605 -0.904 26.682 -1.216 26.84 -1.411 c
-27.006 -1.598 27.237 -1.691 27.532 -1.691 c
-27.726 -1.691 27.899 -1.658 28.045 -1.587 c
-28.193 -1.51 28.328 -1.392 28.457 -1.234 c
-28.795 -1.646 l
-28.509 -2.051 28.079 -2.249 27.502 -2.249 c
-27.428 1.323 m
-27.153 1.323 26.95 1.228 26.826 1.043 c
-26.697 0.856 26.624 0.566 26.605 0.177 c
-28.178 0.177 l
-28.178 0.264 l
-28.156 0.647 28.09 0.915 27.972 1.073 c
-27.854 1.239 27.671 1.323 27.428 1.323 c
-31.544 -1.161 m
-31.544 -1.014 31.489 -0.893 31.382 -0.794 c
-31.272 -0.698 31.066 -0.58 30.765 -0.441 c
-30.42 -0.294 30.177 -0.172 30.03 -0.073 c
-29.884 0.033 29.773 0.151 29.707 0.279 c
-29.637 0.405 29.604 0.563 29.604 0.75 c
-29.604 1.073 29.722 1.341 29.957 1.558 c
-30.192 1.771 30.493 1.881 30.868 1.881 c
-31.25 1.881 31.559 1.768 31.794 1.544 c
-32.029 1.316 32.147 1.029 32.147 0.676 c
-31.5 0.676 l
-31.5 0.852 31.441 1.004 31.324 1.132 c
-31.206 1.257 31.052 1.323 30.868 1.323 c
-30.67 1.323 30.519 1.268 30.412 1.161 c
-30.302 1.062 30.25 0.929 30.25 0.765 c
-30.25 0.636 30.287 0.53 30.368 0.441 c
-30.445 0.36 30.636 0.258 30.942 0.133 c
-31.419 -0.055 31.75 -0.243 31.926 -0.426 c
-32.103 -0.603 32.191 -0.831 32.191 -1.103 c
-32.191 -1.455 32.066 -1.735 31.823 -1.94 c
-31.588 -2.146 31.272 -2.249 30.883 -2.249 c
-30.46 -2.249 30.122 -2.132 29.869 -1.897 c
-29.612 -1.654 29.487 -1.348 29.487 -0.985 c
-30.133 -0.985 l
-30.14 -1.213 30.21 -1.389 30.339 -1.514 c
-30.464 -1.631 30.647 -1.691 30.883 -1.691 c
-31.096 -1.691 31.258 -1.643 31.368 -1.544 c
-31.486 -1.448 31.544 -1.319 31.544 -1.161 c
-33.073 -1.822 m
-33.073 -1.705 33.106 -1.61 33.176 -1.529 c
-33.242 -1.452 33.344 -1.411 33.485 -1.411 c
-33.631 -1.411 33.738 -1.452 33.807 -1.529 c
-33.885 -1.61 33.925 -1.705 33.925 -1.822 c
-33.925 -1.933 33.885 -2.024 33.807 -2.102 c
-33.738 -2.179 33.631 -2.219 33.485 -2.219 c
-33.344 -2.219 33.242 -2.179 33.176 -2.102 c
-33.106 -2.024 33.073 -1.933 33.073 -1.822 c
-f
-Q
-0.793 0.801 0.129 0.016 k
-35.668 310.736 238.665 -21.457 re
-f
-0 0 0 0 k
-q 1 0 0 1 84.2441 302.125 cm
-0 0 m
-0 -0.463 -0.099 -0.867 -0.294 -1.22 c
--0.492 -1.565 -0.756 -1.845 -1.087 -2.057 c
--0.706 -2.275 -0.404 -2.572 -0.176 -2.954 c
-0.048 -3.337 0.162 -3.788 0.162 -4.307 c
-0.162 -5.14 -0.081 -5.802 -0.558 -6.291 c
--1.04 -6.772 -1.697 -7.011 -2.528 -7.011 c
--3.351 -7.011 -4.008 -6.772 -4.498 -6.291 c
--4.99 -5.802 -5.232 -5.14 -5.232 -4.307 c
--5.232 -3.788 -5.126 -3.337 -4.909 -2.954 c
--4.685 -2.572 -4.376 -2.275 -3.983 -2.057 c
--4.328 -1.845 -4.596 -1.565 -4.791 -1.22 c
--4.979 -0.867 -5.071 -0.463 -5.071 0 c
--5.071 0.813 -4.847 1.448 -4.395 1.912 c
--3.935 2.382 -3.318 2.617 -2.543 2.617 c
--1.76 2.617 -1.142 2.382 -0.691 1.912 c
--0.231 1.441 0 0.802 0 0 c
--2.528 -5.497 m
--2.256 -5.497 -2.043 -5.379 -1.896 -5.144 c
--1.749 -4.909 -1.675 -4.586 -1.675 -4.174 c
--1.675 -3.755 -1.756 -3.424 -1.911 -3.189 c
--2.057 -2.954 -2.271 -2.836 -2.543 -2.836 c
--2.807 -2.836 -3.021 -2.954 -3.175 -3.189 c
--3.333 -3.424 -3.41 -3.755 -3.41 -4.174 c
--3.41 -4.586 -3.333 -4.909 -3.175 -5.144 c
--3.021 -5.379 -2.803 -5.497 -2.528 -5.497 c
--1.822 -0.103 m
--1.822 0.258 -1.881 0.548 -1.999 0.765 c
--2.117 0.989 -2.3 1.103 -2.543 1.103 c
--2.77 1.103 -2.946 0.992 -3.072 0.779 c
--3.189 0.574 -3.248 0.279 -3.248 -0.103 c
--3.248 -0.467 -3.189 -0.76 -3.072 -0.985 c
--2.946 -1.213 -2.763 -1.323 -2.528 -1.323 c
--2.285 -1.323 -2.109 -1.213 -1.999 -0.985 c
--1.881 -0.76 -1.822 -0.467 -1.822 -0.103 c
-1.798 -5.953 m
-1.798 -5.659 1.893 -5.42 2.091 -5.232 c
-2.286 -5.049 2.54 -4.953 2.856 -4.953 c
-3.157 -4.953 3.406 -5.049 3.605 -5.232 c
-3.811 -5.42 3.914 -5.659 3.914 -5.953 c
-3.914 -6.258 3.811 -6.504 3.605 -6.688 c
-3.406 -6.865 3.157 -6.952 2.856 -6.952 c
-2.55 -6.952 2.297 -6.861 2.091 -6.673 c
-1.893 -6.489 1.798 -6.246 1.798 -5.953 c
-12.755 -4.424 m
-12.755 -4.042 12.657 -3.755 12.461 -3.557 c
-12.263 -3.362 11.911 -3.16 11.403 -2.954 c
-10.462 -2.594 9.786 -2.175 9.374 -1.705 c
-8.963 -1.227 8.757 -0.658 8.757 0 c
-8.757 0.783 9.037 1.415 9.596 1.897 c
-10.153 2.374 10.863 2.617 11.726 2.617 c
-12.303 2.617 12.818 2.492 13.27 2.249 c
-13.718 2.003 14.064 1.661 14.299 1.22 c
-14.541 0.779 14.666 0.279 14.666 -0.279 c
-12.785 -0.279 l
-12.785 0.162 12.69 0.493 12.505 0.721 c
-12.318 0.944 12.05 1.058 11.697 1.058 c
-11.362 1.058 11.102 0.96 10.918 0.765 c
-10.741 0.578 10.654 0.316 10.654 -0.014 c
-10.654 -0.272 10.756 -0.507 10.962 -0.72 c
-11.168 -0.926 11.528 -1.142 12.05 -1.367 c
-12.962 -1.691 13.623 -2.094 14.034 -2.572 c
-14.454 -3.054 14.666 -3.667 14.666 -4.409 c
-14.666 -5.225 14.406 -5.861 13.887 -6.32 c
-13.365 -6.784 12.66 -7.011 11.771 -7.011 c
-11.161 -7.011 10.61 -6.886 10.109 -6.643 c
-9.617 -6.39 9.231 -6.034 8.948 -5.571 c
-8.661 -5.101 8.522 -4.552 8.522 -3.925 c
-10.419 -3.925 l
-10.419 -4.465 10.521 -4.858 10.727 -5.101 c
-10.94 -5.346 11.289 -5.468 11.771 -5.468 c
-12.424 -5.468 12.755 -5.122 12.755 -4.424 c
-18.955 -1.72 m
-20.366 2.484 l
-22.423 2.484 l
-19.91 -3.484 l
-19.91 -6.879 l
-17.999 -6.879 l
-17.999 -3.484 l
-15.486 2.484 l
-17.544 2.484 l
-h
-30.042 -6.879 m
-28.145 -6.879 l
-25.382 -0.735 l
-25.382 -6.879 l
-23.486 -6.879 l
-23.486 2.484 l
-25.382 2.484 l
-28.145 -3.659 l
-28.145 2.484 l
-30.042 2.484 l
-h
-38.144 -3.763 m
-38.093 -4.832 37.791 -5.641 37.233 -6.188 c
-36.682 -6.739 35.91 -7.011 34.911 -7.011 c
-33.841 -7.011 33.022 -6.666 32.456 -5.967 c
-31.898 -5.273 31.618 -4.278 31.618 -2.984 c
-31.618 -1.411 l
-31.618 -0.118 31.904 0.875 32.486 1.573 c
-33.074 2.268 33.885 2.617 34.925 2.617 c
-35.943 2.617 36.719 2.326 37.248 1.75 c
-37.777 1.18 38.078 0.36 38.159 -0.706 c
-36.263 -0.706 l
-36.241 -0.04 36.138 0.416 35.954 0.661 c
-35.767 0.915 35.425 1.044 34.925 1.044 c
-34.425 1.044 34.065 0.867 33.852 0.515 c
-33.646 0.162 33.533 -0.422 33.514 -1.234 c
-33.514 -2.998 l
-33.514 -3.931 33.617 -4.571 33.823 -4.924 c
-34.036 -5.269 34.4 -5.438 34.911 -5.438 c
-35.399 -5.438 35.738 -5.321 35.925 -5.086 c
-36.12 -4.843 36.226 -4.402 36.249 -3.763 c
-h
-46.09 -6.879 m
-44.208 -6.879 l
-44.208 -2.866 l
-41.415 -2.866 l
-41.415 -6.879 l
-39.519 -6.879 l
-39.519 2.484 l
-41.415 2.484 l
-41.415 -1.308 l
-44.208 -1.308 l
-44.208 2.484 l
-46.09 2.484 l
-h
-50.664 -3.454 m
-49.724 -3.454 l
-49.724 -6.879 l
-47.842 -6.879 l
-47.842 2.484 l
-50.855 2.484 l
-51.804 2.484 52.535 2.238 53.045 1.75 c
-53.564 1.257 53.824 0.563 53.824 -0.338 c
-53.824 -1.583 53.373 -2.454 52.473 -2.954 c
-54.104 -6.79 l
-54.104 -6.879 l
-52.076 -6.879 l
-h
-49.724 -1.881 m
-50.796 -1.881 l
-51.179 -1.881 51.462 -1.76 51.649 -1.514 c
-51.833 -1.26 51.929 -0.922 51.929 -0.5 c
-51.929 0.441 51.565 0.912 50.84 0.912 c
-49.724 0.912 l
-h
-61.942 -3.042 m
-61.942 -4.299 61.641 -5.273 61.046 -5.967 c
-60.446 -6.666 59.623 -7.011 58.576 -7.011 c
-57.525 -7.011 56.698 -6.669 56.092 -5.982 c
-55.493 -5.288 55.188 -4.321 55.181 -3.087 c
-55.181 -1.484 l
-55.181 -0.201 55.478 0.802 56.077 1.529 c
-56.673 2.253 57.503 2.617 58.561 2.617 c
-59.598 2.617 60.417 2.257 61.016 1.544 c
-61.622 0.838 61.931 -0.158 61.942 -1.44 c
-h
-60.046 -1.469 m
-60.046 -0.628 59.921 0 59.679 0.412 c
-59.443 0.823 59.068 1.029 58.561 1.029 c
-58.061 1.029 57.687 0.827 57.444 0.426 c
-57.209 0.034 57.084 -0.565 57.077 -1.367 c
-57.077 -3.042 l
-57.077 -3.858 57.198 -4.461 57.444 -4.85 c
-57.687 -5.244 58.065 -5.438 58.576 -5.438 c
-59.065 -5.438 59.428 -5.247 59.664 -4.866 c
-59.906 -4.483 60.035 -3.895 60.046 -3.102 c
-h
-70.075 -6.879 m
-68.178 -6.879 l
-65.415 -0.735 l
-65.415 -6.879 l
-63.519 -6.879 l
-63.519 2.484 l
-65.415 2.484 l
-68.178 -3.659 l
-68.178 2.484 l
-70.075 2.484 l
-h
-73.811 -6.879 -1.896 9.363 re
-77.472 -5.306 m
-81.323 -5.306 l
-81.323 -6.879 l
-75.253 -6.879 l
-75.253 -5.747 l
-79.074 0.912 l
-75.222 0.912 l
-75.222 2.484 l
-81.25 2.484 l
-81.25 1.367 l
-h
-84.685 -6.879 -1.897 9.363 re
-92.935 -6.879 m
-91.039 -6.879 l
-88.275 -0.735 l
-88.275 -6.879 l
-86.38 -6.879 l
-86.38 2.484 l
-88.275 2.484 l
-91.039 -3.659 l
-91.039 2.484 l
-92.935 2.484 l
-h
-101.049 -5.82 m
-100.685 -6.214 100.24 -6.512 99.712 -6.717 c
-99.182 -6.912 98.602 -7.011 97.977 -7.011 c
-96.896 -7.011 96.059 -6.68 95.463 -6.011 c
-94.864 -5.346 94.559 -4.376 94.552 -3.102 c
-94.552 -1.411 l
-94.552 -0.118 94.831 0.875 95.39 1.573 c
-95.955 2.268 96.779 2.617 97.859 2.617 c
-98.877 2.617 99.641 2.359 100.152 1.852 c
-100.67 1.353 100.968 0.566 101.049 -0.5 c
-99.211 -0.5 l
-99.161 0.096 99.039 0.504 98.844 0.721 c
-98.646 0.934 98.337 1.044 97.918 1.044 c
-97.407 1.044 97.036 0.857 96.801 0.485 c
-96.573 0.111 96.456 -0.481 96.448 -1.294 c
-96.448 -2.998 l
-96.448 -3.85 96.573 -4.475 96.83 -4.866 c
-97.084 -5.247 97.499 -5.438 98.08 -5.438 c
-98.451 -5.438 98.756 -5.365 98.991 -5.218 c
-99.153 -5.101 l
-99.153 -3.38 l
-97.83 -3.38 l
-97.83 -1.955 l
-101.049 -1.955 l
-h
-108.582 -3.454 m
-107.641 -3.454 l
-107.641 -6.879 l
-105.76 -6.879 l
-105.76 2.484 l
-108.773 2.484 l
-109.721 2.484 110.453 2.238 110.964 1.75 c
-111.481 1.257 111.743 0.563 111.743 -0.338 c
-111.743 -1.583 111.29 -2.454 110.39 -2.954 c
-112.021 -6.79 l
-112.021 -6.879 l
-109.993 -6.879 l
-h
-107.641 -1.881 m
-108.715 -1.881 l
-109.097 -1.881 109.38 -1.76 109.567 -1.514 c
-109.75 -1.26 109.846 -0.922 109.846 -0.5 c
-109.846 0.441 109.482 0.912 108.759 0.912 c
-107.641 0.912 l
-h
-118.097 -2.822 m
-115.157 -2.822 l
-115.157 -5.306 l
-118.64 -5.306 l
-118.64 -6.879 l
-113.26 -6.879 l
-113.26 2.484 l
-118.625 2.484 l
-118.625 0.912 l
-115.157 0.912 l
-115.157 -1.308 l
-118.097 -1.308 l
-h
-121.797 -3.586 m
-121.797 -6.879 l
-119.901 -6.879 l
-119.901 2.484 l
-123.09 2.484 l
-124.02 2.484 124.759 2.194 125.31 1.617 c
-125.858 1.048 126.132 0.302 126.132 -0.617 c
-126.132 -1.529 125.858 -2.256 125.31 -2.792 c
-124.769 -3.322 124.02 -3.586 123.061 -3.586 c
-h
-121.797 -2.013 m
-123.09 -2.013 l
-123.45 -2.013 123.73 -1.896 123.928 -1.66 c
-124.123 -1.425 124.222 -1.084 124.222 -0.632 c
-124.222 -0.162 124.119 0.21 123.913 0.485 c
-123.715 0.757 123.45 0.9 123.119 0.912 c
-121.797 0.912 l
-h
-134.199 -3.042 m
-134.199 -4.299 133.897 -5.273 133.303 -5.967 c
-132.704 -6.666 131.88 -7.011 130.833 -7.011 c
-129.782 -7.011 128.955 -6.669 128.349 -5.982 c
-127.75 -5.288 127.445 -4.321 127.437 -3.087 c
-127.437 -1.484 l
-127.437 -0.201 127.735 0.802 128.334 1.529 c
-128.929 2.253 129.76 2.617 130.818 2.617 c
-131.855 2.617 132.674 2.257 133.273 1.544 c
-133.879 0.838 134.188 -0.158 134.199 -1.44 c
-h
-132.303 -1.469 m
-132.303 -0.628 132.178 0 131.935 0.412 c
-131.7 0.823 131.325 1.029 130.818 1.029 c
-130.319 1.029 129.943 0.827 129.701 0.426 c
-129.465 0.034 129.341 -0.565 129.334 -1.367 c
-129.334 -3.042 l
-129.334 -3.858 129.455 -4.461 129.701 -4.85 c
-129.943 -5.244 130.322 -5.438 130.833 -5.438 c
-131.322 -5.438 131.686 -5.247 131.921 -4.866 c
-132.164 -4.483 132.291 -3.895 132.303 -3.102 c
-h
-139.73 -4.424 m
-139.73 -4.042 139.63 -3.755 139.435 -3.557 c
-139.237 -3.362 138.884 -3.16 138.377 -2.954 c
-137.436 -2.594 136.76 -2.175 136.349 -1.705 c
-135.937 -1.227 135.732 -0.658 135.732 0 c
-135.732 0.783 136.01 1.415 136.569 1.897 c
-137.128 2.374 137.837 2.617 138.701 2.617 c
-139.277 2.617 139.792 2.492 140.244 2.249 c
-140.692 2.003 141.038 1.661 141.273 1.22 c
-141.515 0.779 141.641 0.279 141.641 -0.279 c
-139.759 -0.279 l
-139.759 0.162 139.663 0.493 139.48 0.721 c
-139.292 0.944 139.024 1.058 138.672 1.058 c
-138.337 1.058 138.076 0.96 137.892 0.765 c
-137.716 0.578 137.627 0.316 137.627 -0.014 c
-137.627 -0.272 137.731 -0.507 137.936 -0.72 c
-138.142 -0.926 138.502 -1.142 139.024 -1.367 c
-139.935 -1.691 140.597 -2.094 141.008 -2.572 c
-141.427 -3.054 141.641 -3.667 141.641 -4.409 c
-141.641 -5.225 141.38 -5.861 140.862 -6.32 c
-140.339 -6.784 139.634 -7.011 138.745 -7.011 c
-138.134 -7.011 137.583 -6.886 137.084 -6.643 c
-136.592 -6.39 136.206 -6.034 135.923 -5.571 c
-135.636 -5.101 135.497 -4.552 135.497 -3.925 c
-137.392 -3.925 l
-137.392 -4.465 137.496 -4.858 137.701 -5.101 c
-137.914 -5.346 138.263 -5.468 138.745 -5.468 c
-139.399 -5.468 139.73 -5.122 139.73 -4.424 c
-145.087 -6.879 -1.897 9.363 re
-152.669 0.912 m
-150.346 0.912 l
-150.346 -6.879 l
-148.45 -6.879 l
-148.45 0.912 l
-146.171 0.912 l
-146.171 2.484 l
-152.669 2.484 l
-h
-160.367 -3.042 m
-160.367 -4.299 160.066 -5.273 159.47 -5.967 c
-158.871 -6.666 158.048 -7.011 157.001 -7.011 c
-155.95 -7.011 155.123 -6.669 154.516 -5.982 c
-153.918 -5.288 153.612 -4.321 153.606 -3.087 c
-153.606 -1.484 l
-153.606 -0.201 153.903 0.802 154.502 1.529 c
-155.098 2.253 155.928 2.617 156.986 2.617 c
-158.023 2.617 158.842 2.257 159.441 1.544 c
-160.047 0.838 160.356 -0.158 160.367 -1.44 c
-h
-158.471 -1.469 m
-158.471 -0.628 158.346 0 158.103 0.412 c
-157.868 0.823 157.493 1.029 156.986 1.029 c
-156.486 1.029 156.112 0.827 155.869 0.426 c
-155.634 0.034 155.509 -0.565 155.501 -1.367 c
-155.501 -3.042 l
-155.501 -3.858 155.623 -4.461 155.869 -4.85 c
-156.112 -5.244 156.49 -5.438 157.001 -5.438 c
-157.49 -5.438 157.853 -5.247 158.088 -4.866 c
-158.331 -4.483 158.46 -3.895 158.471 -3.102 c
-h
-164.781 -3.454 m
-163.84 -3.454 l
-163.84 -6.879 l
-161.959 -6.879 l
-161.959 2.484 l
-164.972 2.484 l
-165.919 2.484 166.651 2.238 167.162 1.75 c
-167.68 1.257 167.941 0.563 167.941 -0.338 c
-167.941 -1.583 167.488 -2.454 166.588 -2.954 c
-168.22 -6.79 l
-168.22 -6.879 l
-166.192 -6.879 l
-h
-163.84 -1.881 m
-164.913 -1.881 l
-165.294 -1.881 165.578 -1.76 165.765 -1.514 c
-165.949 -1.26 166.044 -0.922 166.044 -0.5 c
-166.044 0.441 165.681 0.912 164.957 0.912 c
-163.84 0.912 l
-h
-171.443 -6.879 -1.897 9.363 re
-177.969 -2.822 m
-175.029 -2.822 l
-175.029 -5.306 l
-178.513 -5.306 l
-178.513 -6.879 l
-173.133 -6.879 l
-173.133 2.484 l
-178.499 2.484 l
-178.499 0.912 l
-175.029 0.912 l
-175.029 -1.308 l
-177.969 -1.308 l
-h
-183.731 -4.424 m
-183.731 -4.042 183.632 -3.755 183.438 -3.557 c
-183.239 -3.362 182.886 -3.16 182.379 -2.954 c
-181.439 -2.594 180.762 -2.175 180.35 -1.705 c
-179.939 -1.227 179.733 -0.658 179.733 0 c
-179.733 0.783 180.012 1.415 180.571 1.897 c
-181.129 2.374 181.838 2.617 182.702 2.617 c
-183.28 2.617 183.793 2.492 184.246 2.249 c
-184.693 2.003 185.04 1.661 185.275 1.22 c
-185.518 0.779 185.642 0.279 185.642 -0.279 c
-183.76 -0.279 l
-183.76 0.162 183.665 0.493 183.481 0.721 c
-183.294 0.944 183.026 1.058 182.673 1.058 c
-182.339 1.058 182.077 0.96 181.894 0.765 c
-181.717 0.578 181.629 0.316 181.629 -0.014 c
-181.629 -0.272 181.732 -0.507 181.938 -0.72 c
-182.144 -0.926 182.503 -1.142 183.026 -1.367 c
-183.937 -1.691 184.598 -2.094 185.01 -2.572 c
-185.429 -3.054 185.642 -3.667 185.642 -4.409 c
-185.642 -5.225 185.381 -5.861 184.863 -6.32 c
-184.342 -6.784 183.636 -7.011 182.746 -7.011 c
-182.137 -7.011 181.585 -6.886 181.086 -6.643 c
-180.593 -6.39 180.207 -6.034 179.924 -5.571 c
-179.638 -5.101 179.498 -4.552 179.498 -3.925 c
-181.394 -3.925 l
-181.394 -4.465 181.497 -4.858 181.703 -5.101 c
-181.915 -5.346 182.264 -5.468 182.746 -5.468 c
-183.401 -5.468 183.731 -5.122 183.731 -4.424 c
-f
-Q
-0.113 0.082 0.09 0 k
-35.668 280.433 238.665 -12.895 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 40.8563 273.5943 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.646 -0.243 -0.775 -0.367 -0.881 c
--0.496 -0.992 -0.658 -1.08 -0.852 -1.147 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.161 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.926 c
--3.127 -0.819 -3.23 -0.69 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.213 -3.484 -0.014 c
--2.66 0.133 l
--2.642 0.033 -2.616 -0.058 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.367 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.684 -1.992 0.691 -1.999 0.691 c
--2.167 0.728 -2.329 0.772 -2.484 0.823 c
--2.642 0.882 -2.786 0.96 -2.91 1.058 c
--3.039 1.154 -3.142 1.279 -3.219 1.426 c
--3.289 1.573 -3.322 1.756 -3.322 1.985 c
--3.322 2.18 -3.289 2.344 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.837 c
--2.8 2.932 -2.645 3.003 -2.469 3.043 c
--2.293 3.09 -2.102 3.12 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.12 -1.128 3.09 -0.97 3.043 c
--0.804 2.992 -0.669 2.918 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.202 2.344 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.253 -1.213 2.459 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.36 -1.469 1.353 c
--1.294 1.312 -1.117 1.264 -0.941 1.205 c
--0.756 1.147 -0.595 1.066 -0.455 0.97 c
--0.32 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.455 c
--2.26 2.425 -2.319 2.385 -2.366 2.338 c
--2.406 2.297 -2.437 2.249 -2.454 2.19 c
--2.477 2.132 -2.484 2.066 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.779 c
--2.41 1.72 -2.373 1.669 -2.322 1.632 c
--2.263 1.592 -2.201 1.558 -2.131 1.529 c
--2.065 1.5 -1.984 1.47 -1.896 1.44 c
-h
--0.837 -0.014 m
--0.837 0.092 -0.86 0.177 -0.897 0.235 c
--0.926 0.302 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.53 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.529 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.014 c
-6.402 -2.66 m
-6.185 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.396 c
-5.284 -2.315 5.185 -2.219 5.108 -2.102 c
-5.039 -1.984 4.991 -1.855 4.961 -1.72 c
-5.858 -1.617 l
-5.895 -1.753 5.964 -1.859 6.064 -1.94 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.057 6.681 -2.028 c
-6.758 -1.999 6.828 -1.944 6.887 -1.866 c
-6.945 -1.797 6.99 -1.705 7.019 -1.587 c
-7.056 -1.469 7.078 -1.323 7.078 -1.147 c
-7.078 -0.955 l
-7.078 -0.889 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.072 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.215 -0.897 5.108 -0.75 c
-5.009 -0.595 4.935 -0.411 4.888 -0.206 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.772 4.836 1.018 4.888 1.235 c
-4.946 1.448 5.027 1.632 5.137 1.779 c
-5.245 1.933 5.376 2.051 5.534 2.132 c
-5.689 2.22 5.876 2.263 6.093 2.263 c
-6.188 2.263 6.288 2.253 6.387 2.234 c
-6.483 2.213 6.571 2.18 6.652 2.132 c
-6.739 2.08 6.817 2.018 6.887 1.941 c
-6.964 1.86 7.026 1.768 7.078 1.661 c
-7.092 1.661 l
-7.092 1.808 l
-7.1 1.867 7.107 1.918 7.107 1.97 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.152 2.22 c
-8.004 2.22 l
-7.993 2.139 7.982 2.028 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.161 l
-7.975 -1.415 7.938 -1.635 7.871 -1.822 c
-7.802 -2.007 7.699 -2.161 7.563 -2.278 c
-7.423 -2.403 7.258 -2.499 7.063 -2.558 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.53 m
-7.092 0.742 7.067 0.919 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.5 6.729 1.558 6.652 1.588 c
-6.571 1.625 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.621 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.367 c
-5.88 1.279 5.835 1.162 5.799 1.014 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.338 c
-6.049 -0.515 6.211 -0.602 6.417 -0.602 c
-6.483 -0.602 6.556 -0.588 6.637 -0.559 c
-6.725 -0.521 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.176 7.019 -0.029 c
-7.067 0.118 7.092 0.302 7.092 0.53 c
-11.036 -0.646 m
-12.168 -0.646 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.646 l
-10.124 -0.646 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.22 l
-11.036 2.22 l
-h
-10.124 3.514 0.912 -0.676 re
-10.124 2.837 m
-13.6 1.602 m
-13.057 1.602 l
-13.057 2.22 l
-13.644 2.22 l
-13.924 3.117 l
-14.497 3.117 l
-14.497 2.22 l
-15.732 2.22 l
-15.732 1.602 l
-14.497 1.602 l
-14.497 -0.103 l
-14.497 -0.324 l
-14.504 -0.393 14.527 -0.455 14.556 -0.515 c
-14.593 -0.565 14.648 -0.61 14.718 -0.646 c
-14.795 -0.676 14.909 -0.69 15.056 -0.69 c
-15.192 -0.69 15.327 -0.687 15.468 -0.676 c
-15.603 -0.658 15.736 -0.632 15.865 -0.602 c
-15.865 -1.205 l
-15.784 -1.216 15.707 -1.23 15.629 -1.249 c
-15.549 -1.261 15.471 -1.267 15.394 -1.278 c
-15.313 -1.286 15.225 -1.294 15.129 -1.294 c
-15.041 -1.301 14.942 -1.308 14.835 -1.308 c
-14.648 -1.308 14.486 -1.294 14.35 -1.264 c
-14.221 -1.227 14.107 -1.183 14.012 -1.132 c
-13.924 -1.084 13.85 -1.025 13.791 -0.955 c
-13.733 -0.878 13.689 -0.801 13.66 -0.72 c
-13.63 -0.632 13.608 -0.544 13.6 -0.455 c
-13.59 -0.36 13.586 -0.264 13.586 -0.176 c
-h
-22.765 1.602 m
-22.765 -1.264 l
-21.868 -1.264 l
-21.868 1.602 l
-21.045 1.602 l
-21.045 2.22 l
-21.868 2.22 l
-21.868 2.484 l
-21.868 2.61 21.883 2.741 21.913 2.882 c
-21.949 3.017 22.02 3.135 22.119 3.234 c
-22.225 3.341 22.369 3.429 22.545 3.499 c
-22.722 3.564 22.946 3.601 23.221 3.601 c
-23.434 3.601 23.632 3.591 23.809 3.572 c
-23.985 3.55 24.137 3.532 24.264 3.514 c
-24.264 2.926 l
-24.137 2.944 23.993 2.959 23.838 2.969 c
-23.68 2.976 23.53 2.984 23.383 2.984 c
-23.254 2.984 23.152 2.969 23.074 2.94 c
-22.994 2.911 22.931 2.87 22.883 2.822 c
-22.832 2.771 22.799 2.708 22.78 2.631 c
-22.769 2.562 22.765 2.484 22.765 2.396 c
-22.765 2.22 l
-24.191 2.22 l
-24.191 1.602 l
-h
-26.738 -1.323 m
-26.481 -1.323 26.253 -1.286 26.047 -1.22 c
-25.841 -1.143 25.665 -1.029 25.518 -0.881 c
-25.371 -0.727 25.253 -0.536 25.165 -0.309 c
-25.084 -0.085 25.047 0.181 25.047 0.485 c
-25.047 0.816 25.091 1.095 25.18 1.323 c
-25.275 1.558 25.404 1.742 25.562 1.881 c
-25.727 2.018 25.915 2.117 26.121 2.176 c
-26.327 2.242 26.535 2.278 26.753 2.278 c
-27.025 2.278 27.26 2.227 27.458 2.132 c
-27.664 2.043 27.829 1.911 27.958 1.735 c
-28.094 1.565 28.193 1.36 28.252 1.118 c
-28.318 0.882 28.355 0.617 28.355 0.324 c
-28.355 0.309 l
-25.988 0.309 l
-25.988 0.162 26.003 0.023 26.032 -0.103 c
-26.069 -0.231 26.124 -0.345 26.194 -0.441 c
-26.26 -0.529 26.344 -0.598 26.444 -0.646 c
-26.539 -0.698 26.653 -0.72 26.782 -0.72 c
-26.936 -0.72 27.076 -0.687 27.194 -0.617 c
-27.318 -0.551 27.407 -0.448 27.458 -0.309 c
-28.296 -0.382 l
-28.266 -0.481 28.212 -0.588 28.135 -0.706 c
-28.054 -0.816 27.95 -0.918 27.825 -1.014 c
-27.708 -1.103 27.553 -1.176 27.37 -1.234 c
-27.194 -1.294 26.98 -1.323 26.738 -1.323 c
-26.738 1.706 m
-26.649 1.706 26.562 1.69 26.473 1.661 c
-26.385 1.632 26.304 1.58 26.238 1.515 c
-26.169 1.444 26.109 1.357 26.061 1.249 c
-26.021 1.139 26.003 1.014 26.003 0.867 c
-27.472 0.867 l
-27.472 1.004 27.447 1.125 27.399 1.235 c
-27.359 1.341 27.304 1.43 27.237 1.5 c
-27.179 1.565 27.106 1.617 27.017 1.646 c
-26.929 1.683 26.834 1.706 26.738 1.706 c
-29.843 1.602 m
-29.299 1.602 l
-29.299 2.22 l
-29.887 2.22 l
-30.167 3.117 l
-30.74 3.117 l
-30.74 2.22 l
-31.975 2.22 l
-31.975 1.602 l
-30.74 1.602 l
-30.74 -0.103 l
-30.74 -0.324 l
-30.747 -0.393 30.769 -0.455 30.799 -0.515 c
-30.836 -0.565 30.89 -0.61 30.96 -0.646 c
-31.037 -0.676 31.152 -0.69 31.298 -0.69 c
-31.434 -0.69 31.57 -0.687 31.71 -0.676 c
-31.846 -0.658 31.978 -0.632 32.106 -0.602 c
-32.106 -1.205 l
-32.026 -1.216 31.948 -1.23 31.871 -1.249 c
-31.79 -1.261 31.713 -1.267 31.636 -1.278 c
-31.555 -1.286 31.467 -1.294 31.372 -1.294 c
-31.283 -1.301 31.185 -1.308 31.077 -1.308 c
-30.89 -1.308 30.728 -1.294 30.593 -1.264 c
-30.464 -1.227 30.35 -1.183 30.254 -1.132 c
-30.167 -1.084 30.093 -1.025 30.034 -0.955 c
-29.976 -0.878 29.932 -0.801 29.901 -0.72 c
-29.872 -0.632 29.851 -0.544 29.843 -0.455 c
-29.832 -0.36 29.828 -0.264 29.828 -0.176 c
-h
-34.863 -1.323 m
-34.576 -1.323 34.333 -1.282 34.128 -1.205 c
-33.922 -1.117 33.749 -0.995 33.614 -0.837 c
-33.473 -0.683 33.371 -0.496 33.305 -0.279 c
-33.234 -0.055 33.202 0.191 33.202 0.456 c
-33.202 0.75 33.234 1.008 33.305 1.235 c
-33.382 1.459 33.488 1.646 33.628 1.793 c
-33.775 1.948 33.951 2.066 34.157 2.146 c
-34.363 2.234 34.599 2.278 34.863 2.278 c
-35.087 2.278 35.289 2.249 35.465 2.19 c
-35.642 2.132 35.792 2.047 35.921 1.941 c
-36.046 1.841 36.149 1.72 36.23 1.573 c
-36.307 1.434 36.362 1.283 36.392 1.118 c
-35.48 1.073 l
-35.451 1.249 35.381 1.389 35.274 1.5 c
-35.175 1.606 35.032 1.661 34.848 1.661 c
-34.602 1.661 34.425 1.558 34.319 1.353 c
-34.209 1.154 34.157 0.867 34.157 0.485 c
-34.157 -0.309 34.392 -0.706 34.863 -0.706 c
-35.028 -0.706 35.171 -0.654 35.289 -0.544 c
-35.407 -0.437 35.48 -0.276 35.509 -0.058 c
-36.421 -0.103 l
-36.392 -0.272 36.336 -0.426 36.259 -0.573 c
-36.189 -0.72 36.087 -0.852 35.95 -0.97 c
-35.821 -1.08 35.663 -1.168 35.48 -1.234 c
-35.304 -1.294 35.098 -1.323 34.863 -1.323 c
-38.262 1.515 m
-38.379 1.786 38.53 1.985 38.718 2.103 c
-38.901 2.22 39.122 2.278 39.379 2.278 c
-39.584 2.278 39.754 2.242 39.894 2.176 c
-40.041 2.106 40.151 2.014 40.232 1.897 c
-40.32 1.779 40.378 1.636 40.408 1.47 c
-40.444 1.301 40.467 1.125 40.467 0.941 c
-40.467 -1.264 l
-39.555 -1.264 l
-39.555 0.735 l
-39.555 0.871 39.544 0.992 39.526 1.103 c
-39.515 1.209 39.489 1.297 39.453 1.367 c
-39.412 1.444 39.353 1.503 39.276 1.544 c
-39.206 1.58 39.114 1.602 38.996 1.602 c
-38.886 1.602 38.791 1.577 38.703 1.529 c
-38.615 1.478 38.534 1.411 38.468 1.323 c
-38.409 1.235 38.358 1.125 38.321 1 c
-38.291 0.882 38.277 0.75 38.277 0.603 c
-38.277 -1.264 l
-37.365 -1.264 l
-37.365 3.514 l
-38.277 3.514 l
-38.277 2.205 l
-38.277 2.135 38.269 2.066 38.262 1.999 c
-38.262 1.793 l
-38.262 1.735 38.254 1.679 38.248 1.632 c
-38.248 1.515 l
-h
-46.236 -2.631 m
-46.236 3.514 l
-48.162 3.514 l
-48.162 2.896 l
-47.089 2.896 l
-47.089 -2.013 l
-48.162 -2.013 l
-48.162 -2.631 l
-h
-52.56 1.47 m
-52.461 1.478 52.359 1.488 52.251 1.5 c
-52.141 1.518 52.02 1.529 51.885 1.529 c
-51.708 1.529 51.55 1.488 51.414 1.411 c
-51.274 1.341 51.156 1.243 51.061 1.118 c
-50.973 0.989 50.903 0.842 50.855 0.676 c
-50.815 0.507 50.796 0.331 50.796 0.147 c
-50.796 -1.264 l
-49.9 -1.264 l
-49.9 0.985 l
-49.9 1.11 49.889 1.235 49.87 1.353 c
-49.859 1.478 49.845 1.595 49.826 1.706 c
-49.815 1.823 49.801 1.918 49.782 1.999 c
-49.76 2.087 49.742 2.161 49.724 2.22 c
-50.605 2.22 l
-50.613 2.168 50.624 2.117 50.635 2.058 c
-50.653 1.999 50.668 1.933 50.679 1.867 c
-50.697 1.808 50.712 1.742 50.723 1.675 c
-50.73 1.606 50.742 1.544 50.752 1.484 c
-50.767 1.484 l
-50.804 1.602 50.855 1.709 50.914 1.808 c
-50.981 1.904 51.061 1.989 51.149 2.058 c
-51.237 2.124 51.341 2.18 51.458 2.22 c
-51.583 2.257 51.73 2.278 51.899 2.278 c
-52.024 2.278 52.141 2.271 52.251 2.263 c
-52.369 2.253 52.473 2.238 52.56 2.22 c
-h
-55.17 -1.323 m
-54.912 -1.323 54.684 -1.286 54.478 -1.22 c
-54.273 -1.143 54.096 -1.029 53.95 -0.881 c
-53.803 -0.727 53.685 -0.536 53.597 -0.309 c
-53.516 -0.085 53.479 0.181 53.479 0.485 c
-53.479 0.816 53.523 1.095 53.612 1.323 c
-53.707 1.558 53.836 1.742 53.994 1.881 c
-54.159 2.018 54.347 2.117 54.553 2.176 c
-54.758 2.242 54.967 2.278 55.184 2.278 c
-55.456 2.278 55.691 2.227 55.889 2.132 c
-56.095 2.043 56.261 1.911 56.39 1.735 c
-56.525 1.565 56.625 1.36 56.683 1.118 c
-56.75 0.882 56.787 0.617 56.787 0.324 c
-56.787 0.309 l
-54.42 0.309 l
-54.42 0.162 54.435 0.023 54.464 -0.103 c
-54.501 -0.231 54.555 -0.345 54.626 -0.441 c
-54.692 -0.529 54.776 -0.598 54.875 -0.646 c
-54.971 -0.698 55.085 -0.72 55.214 -0.72 c
-55.368 -0.72 55.507 -0.687 55.625 -0.617 c
-55.75 -0.551 55.839 -0.448 55.889 -0.309 c
-56.728 -0.382 l
-56.698 -0.481 56.643 -0.588 56.566 -0.706 c
-56.485 -0.816 56.382 -0.918 56.257 -1.014 c
-56.14 -1.103 55.985 -1.176 55.802 -1.234 c
-55.625 -1.294 55.412 -1.323 55.17 -1.323 c
-55.17 1.706 m
-55.081 1.706 54.993 1.69 54.905 1.661 c
-54.817 1.632 54.736 1.58 54.67 1.515 c
-54.6 1.444 54.541 1.357 54.493 1.249 c
-54.453 1.139 54.435 1.014 54.435 0.867 c
-55.904 0.867 l
-55.904 1.004 55.879 1.125 55.831 1.235 c
-55.791 1.341 55.735 1.43 55.669 1.5 c
-55.611 1.565 55.537 1.617 55.449 1.646 c
-55.361 1.683 55.265 1.706 55.17 1.706 c
-58.833 -1.264 m
-58.833 0.852 l
-58.833 1.018 58.826 1.154 58.819 1.264 c
-58.807 1.371 58.789 1.455 58.76 1.515 c
-58.738 1.58 58.709 1.632 58.671 1.661 c
-58.642 1.69 58.601 1.706 58.553 1.706 c
-58.495 1.706 58.44 1.675 58.393 1.617 c
-58.352 1.565 58.318 1.492 58.289 1.397 c
-58.26 1.309 58.235 1.195 58.216 1.058 c
-58.204 0.919 58.201 0.769 58.201 0.603 c
-58.201 -1.264 l
-57.452 -1.264 l
-57.452 1.47 l
-57.452 1.706 l
-57.452 1.926 l
-57.452 2.003 57.444 2.066 57.437 2.117 c
-57.437 2.22 l
-58.113 2.22 l
-58.113 2.132 l
-58.113 1.985 l
-58.121 1.926 58.127 1.867 58.127 1.808 c
-58.127 1.646 l
-58.142 1.646 l
-58.161 1.735 58.19 1.812 58.231 1.881 c
-58.268 1.959 58.312 2.028 58.363 2.087 c
-58.422 2.146 58.488 2.19 58.569 2.22 c
-58.646 2.257 58.734 2.278 58.833 2.278 c
-59.017 2.278 59.157 2.224 59.245 2.117 c
-59.34 2.018 59.411 1.86 59.451 1.646 c
-59.465 1.646 l
-59.502 1.742 59.542 1.831 59.583 1.911 c
-59.631 1.989 59.686 2.051 59.744 2.103 c
-59.804 2.161 59.87 2.205 59.951 2.234 c
-60.028 2.263 60.116 2.278 60.215 2.278 c
-60.351 2.278 60.465 2.253 60.553 2.205 c
-60.641 2.153 60.708 2.08 60.759 1.985 c
-60.818 1.885 60.855 1.756 60.876 1.602 c
-60.905 1.455 60.92 1.272 60.92 1.058 c
-60.92 -1.264 l
-60.2 -1.264 l
-60.2 0.852 l
-60.2 1.018 60.193 1.154 60.186 1.264 c
-60.174 1.371 60.157 1.455 60.126 1.515 c
-60.105 1.58 60.076 1.632 60.039 1.661 c
-60.009 1.69 59.968 1.706 59.921 1.706 c
-59.804 1.706 59.708 1.617 59.642 1.44 c
-59.583 1.272 59.553 1.014 59.553 0.661 c
-59.553 -1.264 l
-h
-64.937 0.485 m
-64.937 0.21 64.901 -0.04 64.834 -0.264 c
-64.764 -0.481 64.662 -0.669 64.525 -0.823 c
-64.386 -0.981 64.209 -1.103 63.997 -1.19 c
-63.779 -1.278 63.526 -1.323 63.232 -1.323 c
-62.956 -1.323 62.71 -1.278 62.497 -1.19 c
-62.291 -1.103 62.119 -0.981 61.982 -0.823 c
-61.843 -0.669 61.74 -0.481 61.674 -0.264 c
-61.604 -0.04 61.57 0.21 61.57 0.485 c
-61.57 0.738 61.601 0.974 61.659 1.191 c
-61.726 1.415 61.828 1.606 61.967 1.764 c
-62.104 1.929 62.28 2.058 62.497 2.146 c
-62.71 2.234 62.967 2.278 63.261 2.278 c
-63.573 2.278 63.835 2.234 64.041 2.146 c
-64.253 2.058 64.427 1.929 64.554 1.764 c
-64.691 1.606 64.79 1.415 64.849 1.191 c
-64.907 0.974 64.937 0.738 64.937 0.485 c
-63.982 0.485 m
-63.982 0.691 63.967 0.867 63.937 1.014 c
-63.916 1.162 63.879 1.283 63.82 1.382 c
-63.761 1.478 63.687 1.548 63.6 1.588 c
-63.511 1.636 63.401 1.661 63.276 1.661 c
-63.012 1.661 62.821 1.562 62.703 1.367 c
-62.586 1.18 62.526 0.886 62.526 0.485 c
-62.526 0.063 62.586 -0.243 62.703 -0.426 c
-62.821 -0.613 62.997 -0.706 63.232 -0.706 c
-63.357 -0.706 63.471 -0.687 63.57 -0.646 c
-63.665 -0.598 63.746 -0.525 63.806 -0.426 c
-63.872 -0.33 63.916 -0.206 63.937 -0.058 c
-63.967 0.088 63.982 0.268 63.982 0.485 c
-66.396 1.602 m
-65.852 1.602 l
-65.852 2.22 l
-66.44 2.22 l
-66.719 3.117 l
-67.293 3.117 l
-67.293 2.22 l
-68.527 2.22 l
-68.527 1.602 l
-67.293 1.602 l
-67.293 -0.103 l
-67.293 -0.324 l
-67.3 -0.393 67.322 -0.455 67.351 -0.515 c
-67.388 -0.565 67.443 -0.61 67.513 -0.646 c
-67.59 -0.676 67.704 -0.69 67.851 -0.69 c
-67.987 -0.69 68.123 -0.687 68.263 -0.676 c
-68.398 -0.658 68.531 -0.632 68.66 -0.602 c
-68.66 -1.205 l
-68.579 -1.216 68.502 -1.23 68.425 -1.249 c
-68.344 -1.261 68.267 -1.267 68.189 -1.278 c
-68.109 -1.286 68.02 -1.294 67.924 -1.294 c
-67.837 -1.301 67.737 -1.308 67.631 -1.308 c
-67.443 -1.308 67.282 -1.294 67.145 -1.264 c
-67.017 -1.227 66.903 -1.183 66.808 -1.132 c
-66.719 -1.084 66.646 -1.025 66.587 -0.955 c
-66.528 -0.878 66.484 -0.801 66.455 -0.72 c
-66.426 -0.632 66.403 -0.544 66.396 -0.455 c
-66.385 -0.36 66.381 -0.264 66.381 -0.176 c
-h
-71.412 -1.323 m
-71.155 -1.323 70.927 -1.286 70.721 -1.22 c
-70.515 -1.143 70.339 -1.029 70.192 -0.881 c
-70.045 -0.727 69.927 -0.536 69.84 -0.309 c
-69.759 -0.085 69.722 0.181 69.722 0.485 c
-69.722 0.816 69.765 1.095 69.854 1.323 c
-69.95 1.558 70.078 1.742 70.236 1.881 c
-70.401 2.018 70.588 2.117 70.794 2.176 c
-71 2.242 71.21 2.278 71.427 2.278 c
-71.698 2.278 71.934 2.227 72.132 2.132 c
-72.338 2.043 72.504 1.911 72.632 1.735 c
-72.768 1.565 72.867 1.36 72.926 1.118 c
-72.992 0.882 73.029 0.617 73.029 0.324 c
-73.029 0.309 l
-70.663 0.309 l
-70.663 0.162 70.677 0.023 70.706 -0.103 c
-70.743 -0.231 70.798 -0.345 70.868 -0.441 c
-70.935 -0.529 71.018 -0.598 71.118 -0.646 c
-71.213 -0.698 71.328 -0.72 71.456 -0.72 c
-71.61 -0.72 71.75 -0.687 71.868 -0.617 c
-71.993 -0.551 72.08 -0.448 72.132 -0.309 c
-72.97 -0.382 l
-72.94 -0.481 72.886 -0.588 72.809 -0.706 c
-72.728 -0.816 72.624 -0.918 72.5 -1.014 c
-72.382 -1.103 72.228 -1.176 72.044 -1.234 c
-71.868 -1.294 71.654 -1.323 71.412 -1.323 c
-71.412 1.706 m
-71.324 1.706 71.236 1.69 71.147 1.661 c
-71.059 1.632 70.978 1.58 70.912 1.515 c
-70.842 1.444 70.783 1.357 70.736 1.249 c
-70.696 1.139 70.677 1.014 70.677 0.867 c
-72.147 0.867 l
-72.147 1.004 72.121 1.125 72.074 1.235 c
-72.033 1.341 71.978 1.43 71.912 1.5 c
-71.853 1.565 71.779 1.617 71.691 1.646 c
-71.603 1.683 71.507 1.706 71.412 1.706 c
-74.285 -2.631 m
-74.285 -2.013 l
-75.359 -2.013 l
-75.359 2.896 l
-74.285 2.896 l
-74.285 3.514 l
-76.211 3.514 l
-76.211 -2.631 l
-h
-f
-Q
-q 1 0 0 1 76.2337 259.8106 cm
-0 0 m
--1.808 0 l
--1.808 -2.367 l
--2.484 -2.367 l
--2.484 2.984 l
-0.309 2.984 l
-0.309 2.41 l
--1.808 2.41 l
--1.808 0.573 l
-0 0.573 l
-h
-2.396 -2.44 m
-1.896 -2.44 1.514 -2.294 1.249 -1.999 c
-0.985 -1.706 0.852 -1.272 0.852 -0.69 c
-0.852 -0.22 l
-0.852 0.374 0.977 0.841 1.234 1.176 c
-1.499 1.517 1.859 1.691 2.323 1.691 c
-2.782 1.691 3.123 1.536 3.351 1.234 c
-3.586 0.941 3.707 0.478 3.719 -0.147 c
-3.719 -0.573 l
-1.499 -0.573 l
-1.499 -0.661 l
-1.499 -1.095 1.577 -1.407 1.734 -1.602 c
-1.899 -1.789 2.131 -1.881 2.425 -1.881 c
-2.62 -1.881 2.793 -1.849 2.94 -1.779 c
-3.087 -1.702 3.223 -1.584 3.351 -1.426 c
-3.69 -1.837 l
-3.403 -2.242 2.973 -2.44 2.396 -2.44 c
-2.323 1.132 m
-2.047 1.132 1.845 1.036 1.72 0.852 c
-1.591 0.665 1.517 0.374 1.499 -0.015 c
-3.072 -0.015 l
-3.072 0.073 l
-3.05 0.455 2.984 0.723 2.866 0.881 c
-2.749 1.047 2.564 1.132 2.323 1.132 c
-5.35 2.572 m
-5.35 1.617 l
-5.953 1.617 l
-5.953 1.087 l
-5.35 1.087 l
-5.35 -1.382 l
-5.35 -1.54 5.373 -1.658 5.423 -1.735 c
-5.483 -1.816 5.571 -1.852 5.689 -1.852 c
-5.776 -1.852 5.865 -1.837 5.953 -1.808 c
-5.953 -2.367 l
-5.806 -2.415 5.652 -2.44 5.497 -2.44 c
-5.24 -2.44 5.045 -2.348 4.91 -2.161 c
-4.77 -1.977 4.704 -1.716 4.704 -1.382 c
-4.704 1.087 l
-4.101 1.087 l
-4.101 1.617 l
-4.704 1.617 l
-4.704 2.572 l
-h
-8.099 -1.881 m
-8.312 -1.881 8.485 -1.819 8.613 -1.691 c
-8.75 -1.554 8.823 -1.363 8.834 -1.118 c
-9.452 -1.118 l
-9.429 -1.5 9.294 -1.819 9.04 -2.072 c
-8.783 -2.319 8.47 -2.44 8.099 -2.44 c
-7.607 -2.44 7.231 -2.29 6.967 -1.984 c
-6.71 -1.672 6.585 -1.205 6.585 -0.588 c
-6.585 -0.147 l
-6.585 0.448 6.71 0.904 6.967 1.22 c
-7.231 1.532 7.607 1.691 8.099 1.691 c
-8.5 1.691 8.819 1.558 9.055 1.294 c
-9.297 1.036 9.429 0.691 9.452 0.25 c
-8.834 0.25 l
-8.812 0.544 8.739 0.764 8.613 0.912 c
-8.496 1.058 8.323 1.132 8.099 1.132 c
-7.805 1.132 7.588 1.033 7.453 0.838 c
-7.312 0.65 7.239 0.341 7.231 -0.088 c
-7.231 -0.603 l
-7.231 -1.073 7.298 -1.407 7.437 -1.602 c
-7.584 -1.789 7.805 -1.881 8.099 -1.881 c
-10.848 1.205 m
-11.102 1.529 11.421 1.691 11.803 1.691 c
-12.509 1.691 12.866 1.22 12.876 0.279 c
-12.876 -2.367 l
-12.23 -2.367 l
-12.23 0.25 l
-12.23 0.563 12.174 0.783 12.068 0.912 c
-11.958 1.036 11.803 1.103 11.597 1.103 c
-11.439 1.103 11.293 1.047 11.156 0.941 c
-11.027 0.831 10.925 0.694 10.848 0.529 c
-10.848 -2.367 l
-10.2 -2.367 l
-10.2 3.278 l
-10.848 3.278 l
-h
-16.933 -1.881 m
-17.146 -1.881 17.319 -1.819 17.448 -1.691 c
-17.583 -1.554 17.657 -1.363 17.668 -1.118 c
-18.285 -1.118 l
-18.264 -1.5 18.127 -1.819 17.874 -2.072 c
-17.616 -2.319 17.304 -2.44 16.933 -2.44 c
-16.44 -2.44 16.066 -2.29 15.802 -1.984 c
-15.544 -1.672 15.419 -1.205 15.419 -0.588 c
-15.419 -0.147 l
-15.419 0.448 15.544 0.904 15.802 1.22 c
-16.066 1.532 16.44 1.691 16.933 1.691 c
-17.334 1.691 17.653 1.558 17.888 1.294 c
-18.131 1.036 18.264 0.691 18.285 0.25 c
-17.668 0.25 l
-17.646 0.544 17.572 0.764 17.448 0.912 c
-17.33 1.058 17.157 1.132 16.933 1.132 c
-16.639 1.132 16.422 1.033 16.286 0.838 c
-16.147 0.65 16.073 0.341 16.066 -0.088 c
-16.066 -0.603 l
-16.066 -1.073 16.132 -1.407 16.272 -1.602 c
-16.419 -1.789 16.639 -1.881 16.933 -1.881 c
-19.682 1.205 m
-19.935 1.529 20.255 1.691 20.637 1.691 c
-21.343 1.691 21.699 1.22 21.71 0.279 c
-21.71 -2.367 l
-21.063 -2.367 l
-21.063 0.25 l
-21.063 0.563 21.009 0.783 20.902 0.912 c
-20.791 1.036 20.637 1.103 20.432 1.103 c
-20.274 1.103 20.126 1.047 19.991 0.941 c
-19.862 0.831 19.759 0.694 19.682 0.529 c
-19.682 -2.367 l
-19.035 -2.367 l
-19.035 3.278 l
-19.682 3.278 l
-h
-24.709 -2.367 m
-24.668 -2.278 24.643 -2.132 24.635 -1.926 c
-24.4 -2.271 24.106 -2.44 23.754 -2.44 c
-23.39 -2.44 23.106 -2.344 22.9 -2.146 c
-22.703 -1.941 22.607 -1.654 22.607 -1.278 c
-22.607 -0.879 22.743 -0.559 23.019 -0.324 c
-23.291 -0.081 23.665 0.044 24.136 0.044 c
-24.621 0.044 l
-24.621 0.47 l
-24.621 0.706 24.566 0.871 24.459 0.97 c
-24.349 1.076 24.187 1.132 23.974 1.132 c
-23.775 1.132 23.613 1.073 23.489 0.956 c
-23.371 0.838 23.312 0.691 23.312 0.515 c
-22.665 0.515 l
-22.665 0.709 22.725 0.9 22.842 1.087 c
-22.967 1.271 23.129 1.419 23.328 1.529 c
-23.533 1.635 23.761 1.691 24.018 1.691 c
-24.419 1.691 24.724 1.587 24.93 1.382 c
-25.142 1.176 25.256 0.881 25.267 0.5 c
-25.267 -1.514 l
-25.267 -1.819 25.304 -2.084 25.385 -2.308 c
-25.385 -2.367 l
-h
-23.841 -1.852 m
-24.007 -1.852 24.157 -1.808 24.297 -1.72 c
-24.444 -1.631 24.55 -1.521 24.621 -1.382 c
-24.621 -0.441 l
-24.253 -0.441 l
-23.937 -0.441 23.694 -0.511 23.518 -0.647 c
-23.342 -0.775 23.254 -0.963 23.254 -1.205 c
-23.254 -1.434 23.297 -1.598 23.386 -1.706 c
-23.474 -1.804 23.625 -1.852 23.841 -1.852 c
-26.884 1.617 m
-26.899 1.176 l
-27.153 1.517 27.476 1.691 27.869 1.691 c
-28.575 1.691 28.932 1.22 28.942 0.279 c
-28.942 -2.367 l
-28.296 -2.367 l
-28.296 0.25 l
-28.296 0.563 28.24 0.783 28.134 0.912 c
-28.024 1.036 27.869 1.103 27.663 1.103 c
-27.505 1.103 27.359 1.047 27.222 0.941 c
-27.094 0.831 26.991 0.694 26.914 0.529 c
-26.914 -2.367 l
-26.267 -2.367 l
-26.267 1.617 l
-h
-29.78 -0.191 m
-29.78 0.426 29.89 0.889 30.118 1.205 c
-30.343 1.529 30.677 1.691 31.118 1.691 c
-31.519 1.691 31.823 1.514 32.029 1.161 c
-32.073 1.617 l
-32.662 1.617 l
-32.662 -2.411 l
-32.662 -2.899 32.533 -3.278 32.279 -3.543 c
-32.022 -3.807 31.669 -3.94 31.22 -3.94 c
-31.022 -3.94 30.802 -3.888 30.559 -3.792 c
-30.313 -3.693 30.133 -3.572 30.015 -3.425 c
-30.28 -2.984 l
-30.545 -3.248 30.842 -3.381 31.176 -3.381 c
-31.713 -3.381 31.989 -3.087 31.999 -2.499 c
-31.999 -1.97 l
-31.794 -2.286 31.492 -2.44 31.103 -2.44 c
-30.692 -2.44 30.368 -2.29 30.133 -1.984 c
-29.905 -1.672 29.788 -1.22 29.78 -0.632 c
-h
-30.441 -0.573 m
-30.441 -1.014 30.504 -1.345 30.632 -1.558 c
-30.757 -1.764 30.975 -1.866 31.28 -1.866 c
-31.602 -1.866 31.841 -1.702 31.999 -1.367 c
-31.999 0.617 l
-31.831 0.941 31.592 1.103 31.28 1.103 c
-30.985 1.103 30.769 0.999 30.632 0.794 c
-30.504 0.588 30.441 0.264 30.441 -0.177 c
-h
-35.043 -2.44 m
-34.543 -2.44 34.16 -2.294 33.896 -1.999 c
-33.631 -1.706 33.499 -1.272 33.499 -0.69 c
-33.499 -0.22 l
-33.499 0.374 33.624 0.841 33.881 1.176 c
-34.146 1.517 34.505 1.691 34.969 1.691 c
-35.428 1.691 35.77 1.536 35.997 1.234 c
-36.233 0.941 36.354 0.478 36.365 -0.147 c
-36.365 -0.573 l
-34.146 -0.573 l
-34.146 -0.661 l
-34.146 -1.095 34.223 -1.407 34.381 -1.602 c
-34.546 -1.789 34.778 -1.881 35.072 -1.881 c
-35.266 -1.881 35.44 -1.849 35.586 -1.779 c
-35.733 -1.702 35.869 -1.584 35.997 -1.426 c
-36.336 -1.837 l
-36.049 -2.242 35.619 -2.44 35.043 -2.44 c
-34.969 1.132 m
-34.694 1.132 34.491 1.036 34.366 0.852 c
-34.237 0.665 34.164 0.374 34.146 -0.015 c
-35.719 -0.015 l
-35.719 0.073 l
-35.696 0.455 35.631 0.723 35.513 0.881 c
-35.395 1.047 35.211 1.132 34.969 1.132 c
-39.085 -1.353 m
-39.085 -1.205 39.029 -1.084 38.923 -0.985 c
-38.813 -0.889 38.607 -0.771 38.306 -0.632 c
-37.96 -0.485 37.717 -0.364 37.57 -0.264 c
-37.424 -0.158 37.313 -0.04 37.247 0.088 c
-37.177 0.213 37.144 0.371 37.144 0.559 c
-37.144 0.881 37.262 1.151 37.497 1.367 c
-37.732 1.58 38.033 1.691 38.409 1.691 c
-38.79 1.691 39.099 1.577 39.334 1.352 c
-39.569 1.124 39.687 0.838 39.687 0.485 c
-39.041 0.485 l
-39.041 0.661 38.981 0.812 38.864 0.941 c
-38.746 1.066 38.592 1.132 38.409 1.132 c
-38.21 1.132 38.059 1.076 37.952 0.97 c
-37.842 0.871 37.791 0.738 37.791 0.573 c
-37.791 0.445 37.828 0.338 37.909 0.25 c
-37.986 0.169 38.177 0.066 38.482 -0.059 c
-38.96 -0.246 39.29 -0.434 39.467 -0.617 c
-39.643 -0.794 39.731 -1.022 39.731 -1.294 c
-39.731 -1.646 39.606 -1.926 39.363 -2.132 c
-39.128 -2.337 38.813 -2.44 38.423 -2.44 c
-38 -2.44 37.663 -2.323 37.409 -2.087 c
-37.152 -1.845 37.027 -1.54 37.027 -1.176 c
-37.674 -1.176 l
-37.68 -1.404 37.751 -1.58 37.879 -1.706 c
-38.004 -1.823 38.187 -1.881 38.423 -1.881 c
-38.636 -1.881 38.798 -1.833 38.908 -1.735 c
-39.026 -1.639 39.085 -1.511 39.085 -1.353 c
-42.583 -2.367 m
-42.583 1.087 l
-42.054 1.087 l
-42.054 1.617 l
-42.583 1.617 l
-42.583 2.072 l
-42.583 2.473 42.679 2.786 42.877 3.013 c
-43.083 3.237 43.361 3.351 43.715 3.351 c
-43.851 3.351 43.983 3.329 44.111 3.293 c
-44.082 2.749 l
-43.983 2.767 43.884 2.778 43.789 2.778 c
-43.413 2.778 43.23 2.514 43.23 1.984 c
-43.23 1.617 l
-43.906 1.617 l
-43.906 1.087 l
-43.23 1.087 l
-43.23 -2.367 l
-h
-46.316 0.999 m
-46.228 1.018 46.129 1.029 46.023 1.029 c
-45.688 1.029 45.453 0.845 45.317 0.485 c
-45.317 -2.367 l
-44.67 -2.367 l
-44.67 1.617 l
-45.302 1.617 l
-45.317 1.205 l
-45.493 1.529 45.736 1.691 46.052 1.691 c
-46.158 1.691 46.247 1.668 46.316 1.631 c
-h
-46.758 -0.191 m
-46.758 0.386 46.893 0.841 47.169 1.176 c
-47.452 1.517 47.823 1.691 48.286 1.691 c
-48.745 1.691 49.113 1.521 49.389 1.191 c
-49.672 0.867 49.819 0.419 49.83 -0.147 c
-49.83 -0.573 l
-49.83 -1.143 49.686 -1.598 49.403 -1.941 c
-49.127 -2.275 48.76 -2.44 48.3 -2.44 c
-47.838 -2.44 47.467 -2.278 47.184 -1.955 c
-46.908 -1.625 46.765 -1.183 46.758 -0.632 c
-h
-47.404 -0.573 m
-47.404 -0.977 47.481 -1.294 47.639 -1.529 c
-47.805 -1.764 48.026 -1.881 48.3 -1.881 c
-48.867 -1.881 49.161 -1.47 49.183 -0.647 c
-49.183 -0.191 l
-49.183 0.21 49.098 0.529 48.933 0.764 c
-48.775 1.007 48.558 1.132 48.286 1.132 c
-48.022 1.132 47.805 1.007 47.639 0.764 c
-47.481 0.529 47.404 0.21 47.404 -0.191 c
-h
-51.284 1.617 m
-51.299 1.249 l
-51.542 1.544 51.862 1.691 52.255 1.691 c
-52.696 1.691 53.004 1.492 53.181 1.103 c
-53.435 1.492 53.784 1.691 54.224 1.691 c
-54.96 1.691 55.334 1.228 55.356 0.309 c
-55.356 -2.367 l
-54.71 -2.367 l
-54.71 0.25 l
-54.71 0.544 54.654 0.757 54.548 0.897 c
-54.449 1.033 54.276 1.103 54.033 1.103 c
-53.835 1.103 53.673 1.022 53.549 0.867 c
-53.431 0.721 53.361 0.529 53.343 0.294 c
-53.343 -2.367 l
-52.681 -2.367 l
-52.681 0.279 l
-52.681 0.827 52.46 1.103 52.02 1.103 c
-51.685 1.103 51.45 0.941 51.315 0.617 c
-51.315 -2.367 l
-50.667 -2.367 l
-50.667 1.617 l
-h
-58.899 2.572 m
-58.899 1.617 l
-59.502 1.617 l
-59.502 1.087 l
-58.899 1.087 l
-58.899 -1.382 l
-58.899 -1.54 58.921 -1.658 58.972 -1.735 c
-59.031 -1.816 59.119 -1.852 59.237 -1.852 c
-59.325 -1.852 59.413 -1.837 59.502 -1.808 c
-59.502 -2.367 l
-59.354 -2.415 59.2 -2.44 59.046 -2.44 c
-58.789 -2.44 58.594 -2.348 58.458 -2.161 c
-58.318 -1.977 58.252 -1.716 58.252 -1.382 c
-58.252 1.087 l
-57.649 1.087 l
-57.649 1.617 l
-58.252 1.617 l
-58.252 2.572 l
-h
-60.913 1.205 m
-61.166 1.529 61.486 1.691 61.868 1.691 c
-62.573 1.691 62.93 1.22 62.941 0.279 c
-62.941 -2.367 l
-62.295 -2.367 l
-62.295 0.25 l
-62.295 0.563 62.239 0.783 62.133 0.912 c
-62.022 1.036 61.868 1.103 61.663 1.103 c
-61.505 1.103 61.357 1.047 61.221 0.941 c
-61.093 0.831 60.99 0.694 60.913 0.529 c
-60.913 -2.367 l
-60.266 -2.367 l
-60.266 3.278 l
-60.913 3.278 l
-h
-65.322 -2.44 m
-64.823 -2.44 64.441 -2.294 64.176 -1.999 c
-63.911 -1.706 63.779 -1.272 63.779 -0.69 c
-63.779 -0.22 l
-63.779 0.374 63.903 0.841 64.161 1.176 c
-64.426 1.517 64.786 1.691 65.249 1.691 c
-65.708 1.691 66.05 1.536 66.278 1.234 c
-66.513 0.941 66.634 0.478 66.645 -0.147 c
-66.645 -0.573 l
-64.426 -0.573 l
-64.426 -0.661 l
-64.426 -1.095 64.503 -1.407 64.661 -1.602 c
-64.826 -1.789 65.058 -1.881 65.352 -1.881 c
-65.547 -1.881 65.719 -1.849 65.866 -1.779 c
-66.014 -1.702 66.149 -1.584 66.278 -1.426 c
-66.616 -1.837 l
-66.33 -2.242 65.9 -2.44 65.322 -2.44 c
-65.249 1.132 m
-64.973 1.132 64.771 1.036 64.647 0.852 c
-64.518 0.665 64.444 0.374 64.426 -0.015 c
-65.999 -0.015 l
-65.999 0.073 l
-65.977 0.455 65.91 0.723 65.792 0.881 c
-65.675 1.047 65.491 1.132 65.249 1.132 c
-f
-Q
-q 1 0 0 1 147.2304 260.4136 cm
-0 0 m
--0.339 0.029 l
--0.626 0.029 -0.817 -0.096 -0.912 -0.339 c
--0.912 -2.97 l
--1.956 -2.97 l
--1.956 1.014 l
--0.985 1.014 l
--0.956 0.573 l
--0.79 0.914 -0.559 1.087 -0.265 1.087 c
--0.148 1.087 -0.056 1.065 0.014 1.028 c
-h
-2.072 -3.043 m
-1.543 -3.043 1.124 -2.889 0.822 -2.573 c
-0.529 -2.249 0.382 -1.79 0.382 -1.191 c
-0.382 -0.882 l
-0.382 -0.258 0.517 0.228 0.793 0.573 c
-1.065 0.914 1.458 1.087 1.969 1.087 c
-2.468 1.087 2.84 0.926 3.087 0.602 c
-3.34 0.278 3.472 -0.199 3.484 -0.823 c
-3.484 -1.324 l
-1.411 -1.324 l
-1.429 -1.617 1.491 -1.834 1.602 -1.97 c
-1.72 -2.11 1.899 -2.176 2.146 -2.176 c
-2.487 -2.176 2.778 -2.058 3.013 -1.823 c
-3.424 -2.455 l
-3.295 -2.631 3.108 -2.775 2.865 -2.882 c
-2.62 -2.988 2.355 -3.043 2.072 -3.043 c
-1.425 -0.603 m
-2.454 -0.603 l
-2.454 -0.5 l
-2.454 -0.265 2.414 -0.088 2.337 0.029 c
-2.267 0.154 2.138 0.22 1.955 0.22 c
-1.778 0.22 1.646 0.151 1.558 0.014 c
-1.477 -0.115 1.433 -0.32 1.425 -0.603 c
-5.041 1.014 m
-5.071 0.646 l
-5.306 0.941 5.614 1.087 5.996 1.087 c
-6.397 1.087 6.676 0.903 6.834 0.544 c
-7.07 0.903 7.397 1.087 7.819 1.087 c
-8.514 1.087 8.866 0.602 8.878 -0.368 c
-8.878 -2.97 l
-7.849 -2.97 l
-7.849 -0.427 l
-7.849 -0.202 7.812 -0.04 7.746 0.058 c
-7.687 0.154 7.577 0.205 7.422 0.205 c
-7.224 0.205 7.085 0.087 6.996 -0.148 c
-6.996 -2.97 l
-5.953 -2.97 l
-5.953 -0.441 l
-5.953 -0.206 5.923 -0.04 5.865 0.058 c
-5.805 0.154 5.695 0.205 5.541 0.205 c
-5.365 0.205 5.221 0.11 5.115 -0.074 c
-5.115 -2.97 l
-4.072 -2.97 l
-4.072 1.014 l
-h
-9.539 -0.853 m
-9.539 -0.246 9.679 0.228 9.965 0.573 c
-10.248 0.914 10.642 1.087 11.141 1.087 c
-11.648 1.087 12.045 0.914 12.332 0.573 c
-12.615 0.228 12.758 -0.246 12.758 -0.853 c
-12.758 -1.118 l
-12.758 -1.717 12.615 -2.187 12.332 -2.529 c
-12.045 -2.874 11.648 -3.043 11.141 -3.043 c
-10.63 -3.043 10.233 -2.874 9.951 -2.529 c
-9.676 -2.187 9.539 -1.713 9.539 -1.103 c
-h
-10.583 -1.118 m
-10.583 -1.823 10.767 -2.176 11.141 -2.176 c
-11.494 -2.176 11.685 -1.882 11.715 -1.294 c
-11.715 -0.853 l
-11.715 -0.493 11.663 -0.221 11.567 -0.044 c
-11.469 0.132 11.326 0.22 11.141 0.22 c
-10.965 0.22 10.825 0.132 10.73 -0.044 c
-10.63 -0.221 10.583 -0.493 10.583 -0.853 c
-h
-14.611 1.984 m
-14.611 1.014 l
-15.139 1.014 l
-15.139 0.22 l
-14.611 0.22 l
-14.611 -1.75 l
-14.611 -1.908 14.629 -2.014 14.669 -2.073 c
-14.717 -2.132 14.802 -2.161 14.919 -2.161 c
-15.025 -2.161 15.11 -2.154 15.168 -2.132 c
-15.168 -2.94 l
-14.993 -3.007 14.802 -3.043 14.596 -3.043 c
-13.919 -3.043 13.574 -2.658 13.566 -1.882 c
-13.566 0.22 l
-13.111 0.22 l
-13.111 1.014 l
-13.566 1.014 l
-13.566 1.984 l
-h
-17.315 -3.043 m
-16.786 -3.043 16.367 -2.889 16.066 -2.573 c
-15.771 -2.249 15.625 -1.79 15.625 -1.191 c
-15.625 -0.882 l
-15.625 -0.258 15.76 0.228 16.036 0.573 c
-16.308 0.914 16.701 1.087 17.212 1.087 c
-17.712 1.087 18.083 0.926 18.329 0.602 c
-18.582 0.278 18.715 -0.199 18.726 -0.823 c
-18.726 -1.324 l
-16.654 -1.324 l
-16.672 -1.617 16.735 -1.834 16.845 -1.97 c
-16.962 -2.11 17.142 -2.176 17.389 -2.176 c
-17.73 -2.176 18.021 -2.058 18.256 -1.823 c
-18.667 -2.455 l
-18.539 -2.631 18.351 -2.775 18.109 -2.882 c
-17.863 -2.988 17.598 -3.043 17.315 -3.043 c
-16.668 -0.603 m
-17.697 -0.603 l
-17.697 -0.5 l
-17.697 -0.265 17.657 -0.088 17.58 0.029 c
-17.51 0.154 17.381 0.22 17.198 0.22 c
-17.021 0.22 16.889 0.151 16.801 0.014 c
-16.72 -0.115 16.676 -0.32 16.668 -0.603 c
-f
-Q
-q 1 0 0 1 166.6623 256.3712 cm
-0 0 m
--0.397 0.264 l
--0.162 0.588 -0.04 0.922 -0.03 1.263 c
--0.03 1.881 l
-0.632 1.881 l
-0.632 1.352 l
-0.632 1.095 0.565 0.849 0.44 0.602 c
-0.324 0.359 0.176 0.158 0 0 c
-6.071 2.866 m
-6.071 2.248 5.957 1.782 5.733 1.469 c
-5.516 1.153 5.192 0.999 4.762 0.999 c
-4.34 0.999 4.027 1.18 3.821 1.543 c
-3.792 1.072 l
-3.189 1.072 l
-3.189 6.717 l
-3.836 6.717 l
-3.836 4.615 l
-4.049 4.957 4.358 5.13 4.762 5.13 c
-5.192 5.13 5.516 4.972 5.733 4.659 c
-5.957 4.355 6.071 3.887 6.071 3.262 c
-h
-5.423 3.248 m
-5.423 3.719 5.354 4.049 5.218 4.247 c
-5.089 4.442 4.88 4.542 4.586 4.542 c
-4.251 4.542 4.002 4.358 3.836 3.998 c
-3.836 2.117 l
-4.002 1.753 4.255 1.573 4.6 1.573 c
-4.895 1.573 5.104 1.675 5.232 1.881 c
-5.358 2.087 5.423 2.403 5.423 2.836 c
-h
-8.937 1.425 m
-8.72 1.139 8.407 0.999 7.996 0.999 c
-7.632 0.999 7.357 1.12 7.173 1.367 c
-6.996 1.62 6.901 1.984 6.894 2.454 c
-6.894 5.056 l
-7.54 5.056 l
-7.54 2.514 l
-7.54 1.885 7.724 1.573 8.099 1.573 c
-8.5 1.573 8.775 1.749 8.922 2.102 c
-8.922 5.056 l
-9.569 5.056 l
-9.569 1.072 l
-8.951 1.072 l
-h
-11.406 6.011 m
-11.406 5.056 l
-12.009 5.056 l
-12.009 4.527 l
-11.406 4.527 l
-11.406 2.057 l
-11.406 1.899 11.428 1.782 11.48 1.705 c
-11.538 1.624 11.627 1.587 11.744 1.587 c
-11.833 1.587 11.921 1.602 12.009 1.631 c
-12.009 1.072 l
-11.862 1.024 11.708 0.999 11.553 0.999 c
-11.296 0.999 11.102 1.091 10.965 1.278 c
-10.826 1.462 10.759 1.723 10.759 2.057 c
-10.759 4.527 l
-10.157 4.527 l
-10.157 5.056 l
-10.759 5.056 l
-10.759 6.011 l
-h
-15.11 5.056 m
-15.125 4.615 l
-15.378 4.957 15.702 5.13 16.095 5.13 c
-16.801 5.13 17.157 4.659 17.169 3.719 c
-17.169 1.072 l
-16.521 1.072 l
-16.521 3.69 l
-16.521 4.002 16.467 4.222 16.359 4.351 c
-16.249 4.475 16.095 4.542 15.889 4.542 c
-15.731 4.542 15.584 4.486 15.449 4.38 c
-15.32 4.27 15.217 4.134 15.14 3.968 c
-15.14 1.072 l
-14.493 1.072 l
-14.493 5.056 l
-h
-18.006 3.248 m
-18.006 3.825 18.142 4.28 18.418 4.615 c
-18.701 4.957 19.072 5.13 19.534 5.13 c
-19.994 5.13 20.361 4.961 20.637 4.63 c
-20.92 4.307 21.067 3.858 21.078 3.293 c
-21.078 2.866 l
-21.078 2.296 20.935 1.841 20.652 1.499 c
-20.376 1.165 20.009 0.999 19.55 0.999 c
-19.087 0.999 18.715 1.161 18.433 1.484 c
-18.157 1.815 18.013 2.256 18.006 2.807 c
-h
-18.653 2.866 m
-18.653 2.462 18.73 2.146 18.888 1.911 c
-19.054 1.675 19.274 1.558 19.55 1.558 c
-20.116 1.558 20.409 1.969 20.431 2.792 c
-20.431 3.248 l
-20.431 3.649 20.347 3.968 20.182 4.203 c
-20.024 4.446 19.806 4.571 19.534 4.571 c
-19.27 4.571 19.054 4.446 18.888 4.203 c
-18.73 3.968 18.653 3.649 18.653 3.248 c
-h
-22.769 6.011 m
-22.769 5.056 l
-23.372 5.056 l
-23.372 4.527 l
-22.769 4.527 l
-22.769 2.057 l
-22.769 1.899 22.79 1.782 22.842 1.705 c
-22.901 1.624 22.989 1.587 23.106 1.587 c
-23.195 1.587 23.283 1.602 23.372 1.631 c
-23.372 1.072 l
-23.224 1.024 23.07 0.999 22.915 0.999 c
-22.659 0.999 22.464 1.091 22.328 1.278 c
-22.188 1.462 22.121 1.723 22.121 2.057 c
-22.121 4.527 l
-21.519 4.527 l
-21.519 5.056 l
-22.121 5.056 l
-22.121 6.011 l
-h
-27.884 1.425 m
-27.667 1.139 27.355 0.999 26.943 0.999 c
-26.58 0.999 26.304 1.12 26.12 1.367 c
-25.944 1.62 25.848 1.984 25.84 2.454 c
-25.84 5.056 l
-26.487 5.056 l
-26.487 2.514 l
-26.487 1.885 26.671 1.573 27.046 1.573 c
-27.447 1.573 27.722 1.749 27.869 2.102 c
-27.869 5.056 l
-28.516 5.056 l
-28.516 1.072 l
-27.899 1.072 l
-h
-32.382 2.866 m
-32.382 2.238 32.265 1.768 32.029 1.455 c
-31.801 1.15 31.485 0.999 31.074 0.999 c
-30.669 0.999 30.361 1.15 30.148 1.455 c
-30.148 -0.456 l
-29.501 -0.456 l
-29.501 5.056 l
-30.089 5.056 l
-30.133 4.615 l
-30.346 4.957 30.655 5.13 31.059 5.13 c
-31.5 5.13 31.827 4.976 32.043 4.674 c
-32.257 4.369 32.371 3.913 32.382 3.307 c
-h
-31.735 3.248 m
-31.735 3.69 31.665 4.012 31.529 4.218 c
-31.39 4.432 31.17 4.542 30.868 4.542 c
-30.551 4.542 30.313 4.388 30.148 4.086 c
-30.148 2.013 l
-30.313 1.708 30.551 1.558 30.868 1.558 c
-31.162 1.558 31.375 1.66 31.515 1.866 c
-31.65 2.08 31.724 2.41 31.735 2.851 c
-h
-33.088 3.248 m
-33.088 3.854 33.198 4.321 33.425 4.644 c
-33.661 4.968 33.988 5.13 34.41 5.13 c
-34.792 5.13 35.091 4.972 35.307 4.659 c
-35.307 6.717 l
-35.953 6.717 l
-35.953 1.072 l
-35.366 1.072 l
-35.322 1.499 l
-35.116 1.165 34.811 0.999 34.41 0.999 c
-33.998 0.999 33.676 1.153 33.44 1.469 c
-33.205 1.793 33.088 2.248 33.088 2.836 c
-h
-33.734 2.866 m
-33.734 2.425 33.797 2.094 33.925 1.881 c
-34.061 1.675 34.281 1.573 34.586 1.573 c
-34.91 1.573 35.149 1.734 35.307 2.057 c
-35.307 4.072 l
-35.138 4.384 34.899 4.542 34.586 4.542 c
-34.281 4.542 34.061 4.438 33.925 4.233 c
-33.797 4.027 33.734 3.704 33.734 3.262 c
-h
-38.996 1.072 m
-38.956 1.161 38.931 1.308 38.923 1.514 c
-38.688 1.168 38.393 0.999 38.041 0.999 c
-37.678 0.999 37.394 1.095 37.188 1.294 c
-36.99 1.499 36.894 1.786 36.894 2.161 c
-36.894 2.561 37.03 2.881 37.306 3.116 c
-37.578 3.358 37.953 3.484 38.424 3.484 c
-38.908 3.484 l
-38.908 3.91 l
-38.908 4.145 38.853 4.31 38.746 4.409 c
-38.636 4.516 38.474 4.571 38.262 4.571 c
-38.063 4.571 37.901 4.513 37.776 4.395 c
-37.659 4.278 37.599 4.13 37.599 3.954 c
-36.953 3.954 l
-36.953 4.149 37.012 4.34 37.129 4.527 c
-37.254 4.71 37.416 4.858 37.615 4.968 c
-37.821 5.074 38.048 5.13 38.305 5.13 c
-38.706 5.13 39.011 5.026 39.217 4.821 c
-39.43 4.615 39.544 4.321 39.555 3.939 c
-39.555 1.926 l
-39.555 1.62 39.592 1.356 39.673 1.132 c
-39.673 1.072 l
-h
-38.129 1.587 m
-38.295 1.587 38.445 1.631 38.584 1.72 c
-38.732 1.808 38.838 1.918 38.908 2.057 c
-38.908 2.998 l
-38.54 2.998 l
-38.225 2.998 37.982 2.928 37.806 2.792 c
-37.63 2.664 37.541 2.476 37.541 2.234 c
-37.541 2.006 37.585 1.841 37.674 1.734 c
-37.761 1.635 37.913 1.587 38.129 1.587 c
-41.407 6.011 m
-41.407 5.056 l
-42.01 5.056 l
-42.01 4.527 l
-41.407 4.527 l
-41.407 2.057 l
-41.407 1.899 41.429 1.782 41.481 1.705 c
-41.539 1.624 41.628 1.587 41.745 1.587 c
-41.833 1.587 41.921 1.602 42.01 1.631 c
-42.01 1.072 l
-41.863 1.024 41.709 0.999 41.554 0.999 c
-41.297 0.999 41.102 1.091 40.966 1.278 c
-40.826 1.462 40.76 1.723 40.76 2.057 c
-40.76 4.527 l
-40.157 4.527 l
-40.157 5.056 l
-40.76 5.056 l
-40.76 6.011 l
-h
-44.2 0.999 m
-43.7 0.999 43.318 1.146 43.053 1.44 c
-42.789 1.734 42.657 2.167 42.657 2.749 c
-42.657 3.219 l
-42.657 3.814 42.781 4.28 43.039 4.615 c
-43.303 4.957 43.663 5.13 44.126 5.13 c
-44.585 5.13 44.928 4.976 45.156 4.674 c
-45.391 4.38 45.512 3.917 45.522 3.293 c
-45.522 2.866 l
-43.303 2.866 l
-43.303 2.778 l
-43.303 2.344 43.38 2.032 43.538 1.837 c
-43.704 1.65 43.935 1.558 44.229 1.558 c
-44.424 1.558 44.597 1.591 44.743 1.66 c
-44.89 1.738 45.027 1.855 45.156 2.013 c
-45.493 1.602 l
-45.206 1.198 44.776 0.999 44.2 0.999 c
-44.126 4.571 m
-43.851 4.571 43.648 4.475 43.523 4.292 c
-43.395 4.104 43.322 3.814 43.303 3.424 c
-44.876 3.424 l
-44.876 3.513 l
-44.854 3.895 44.788 4.163 44.67 4.321 c
-44.552 4.486 44.369 4.571 44.126 4.571 c
-48.874 6.011 m
-48.874 5.056 l
-49.477 5.056 l
-49.477 4.527 l
-48.874 4.527 l
-48.874 2.057 l
-48.874 1.899 48.896 1.782 48.948 1.705 c
-49.007 1.624 49.094 1.587 49.212 1.587 c
-49.3 1.587 49.389 1.602 49.477 1.631 c
-49.477 1.072 l
-49.33 1.024 49.175 0.999 49.021 0.999 c
-48.764 0.999 48.569 1.091 48.433 1.278 c
-48.294 1.462 48.227 1.723 48.227 2.057 c
-48.227 4.527 l
-47.625 4.527 l
-47.625 5.056 l
-48.227 5.056 l
-48.227 6.011 l
-h
-51.887 4.438 m
-51.799 4.457 51.7 4.469 51.594 4.469 c
-51.259 4.469 51.024 4.284 50.888 3.925 c
-50.888 1.072 l
-50.241 1.072 l
-50.241 5.056 l
-50.873 5.056 l
-50.888 4.644 l
-51.064 4.968 51.307 5.13 51.623 5.13 c
-51.729 5.13 51.818 5.107 51.887 5.071 c
-h
-54.43 1.072 m
-54.39 1.161 54.364 1.308 54.357 1.514 c
-54.122 1.168 53.827 0.999 53.475 0.999 c
-53.111 0.999 52.828 1.095 52.622 1.294 c
-52.424 1.499 52.329 1.786 52.329 2.161 c
-52.329 2.561 52.464 2.881 52.74 3.116 c
-53.012 3.358 53.387 3.484 53.857 3.484 c
-54.342 3.484 l
-54.342 3.91 l
-54.342 4.145 54.287 4.31 54.181 4.409 c
-54.07 4.516 53.908 4.571 53.696 4.571 c
-53.497 4.571 53.335 4.513 53.21 4.395 c
-53.093 4.278 53.034 4.13 53.034 3.954 c
-52.387 3.954 l
-52.387 4.149 52.446 4.34 52.564 4.527 c
-52.689 4.71 52.85 4.858 53.048 4.968 c
-53.254 5.074 53.482 5.13 53.74 5.13 c
-54.141 5.13 54.445 5.026 54.651 4.821 c
-54.864 4.615 54.978 4.321 54.989 3.939 c
-54.989 1.926 l
-54.989 1.62 55.026 1.356 55.107 1.132 c
-55.107 1.072 l
-h
-53.563 1.587 m
-53.728 1.587 53.879 1.631 54.019 1.72 c
-54.166 1.808 54.272 1.918 54.342 2.057 c
-54.342 2.998 l
-53.975 2.998 l
-53.659 2.998 53.416 2.928 53.24 2.792 c
-53.063 2.664 52.975 2.476 52.975 2.234 c
-52.975 2.006 53.019 1.841 53.108 1.734 c
-53.196 1.635 53.347 1.587 53.563 1.587 c
-57.37 1.558 m
-57.584 1.558 57.756 1.62 57.885 1.749 c
-58.021 1.885 58.094 2.076 58.105 2.322 c
-58.723 2.322 l
-58.7 1.94 58.565 1.62 58.311 1.367 c
-58.054 1.12 57.742 0.999 57.37 0.999 c
-56.878 0.999 56.503 1.15 56.238 1.455 c
-55.982 1.768 55.856 2.234 55.856 2.851 c
-55.856 3.293 l
-55.856 3.887 55.982 4.343 56.238 4.659 c
-56.503 4.972 56.878 5.13 57.37 5.13 c
-57.771 5.13 58.091 4.997 58.326 4.733 c
-58.569 4.475 58.7 4.13 58.723 3.69 c
-58.105 3.69 l
-58.083 3.983 58.01 4.203 57.885 4.351 c
-57.767 4.498 57.594 4.571 57.37 4.571 c
-57.077 4.571 56.859 4.472 56.724 4.278 c
-56.584 4.089 56.51 3.781 56.503 3.351 c
-56.503 2.836 l
-56.503 2.366 56.57 2.032 56.709 1.837 c
-56.855 1.65 57.077 1.558 57.37 1.558 c
-60.472 2.896 m
-60.134 2.499 l
-60.134 1.072 l
-59.472 1.072 l
-59.472 6.717 l
-60.134 6.717 l
-60.134 3.337 l
-61.368 5.056 l
-62.147 5.056 l
-60.883 3.395 l
-62.309 1.072 l
-61.559 1.072 l
-h
-63.573 1.072 -0.647 3.984 re
-63.618 6.1 m
-63.618 5.99 63.588 5.897 63.529 5.82 c
-63.47 5.751 63.375 5.718 63.25 5.718 c
-63.132 5.718 63.037 5.751 62.97 5.82 c
-62.912 5.897 62.883 5.99 62.883 6.1 c
-62.883 6.217 62.912 6.31 62.97 6.379 c
-63.037 6.456 63.132 6.497 63.25 6.497 c
-63.375 6.497 63.47 6.456 63.529 6.379 c
-63.588 6.298 63.618 6.206 63.618 6.1 c
-65.205 5.056 m
-65.22 4.615 l
-65.473 4.957 65.796 5.13 66.189 5.13 c
-66.895 5.13 67.252 4.659 67.263 3.719 c
-67.263 1.072 l
-66.616 1.072 l
-66.616 3.69 l
-66.616 4.002 66.561 4.222 66.454 4.351 c
-66.344 4.475 66.189 4.542 65.983 4.542 c
-65.825 4.542 65.679 4.486 65.543 4.38 c
-65.414 4.27 65.312 4.134 65.235 3.968 c
-65.235 1.072 l
-64.587 1.072 l
-64.587 5.056 l
-h
-68.1 3.248 m
-68.1 3.865 68.211 4.328 68.439 4.644 c
-68.663 4.968 68.998 5.13 69.438 5.13 c
-69.839 5.13 70.143 4.953 70.349 4.6 c
-70.394 5.056 l
-70.982 5.056 l
-70.982 1.028 l
-70.982 0.54 70.853 0.162 70.6 -0.103 c
-70.342 -0.368 69.989 -0.5 69.541 -0.5 c
-69.343 -0.5 69.122 -0.449 68.879 -0.353 c
-68.634 -0.254 68.453 -0.133 68.335 0.014 c
-68.601 0.455 l
-68.865 0.191 69.162 0.058 69.497 0.058 c
-70.033 0.058 70.309 0.353 70.32 0.941 c
-70.32 1.469 l
-70.114 1.153 69.813 0.999 69.424 0.999 c
-69.012 0.999 68.688 1.15 68.453 1.455 c
-68.225 1.768 68.108 2.219 68.1 2.807 c
-h
-68.762 2.866 m
-68.762 2.425 68.825 2.094 68.953 1.881 c
-69.078 1.675 69.295 1.573 69.6 1.573 c
-69.923 1.573 70.162 1.738 70.32 2.072 c
-70.32 4.056 l
-70.151 4.38 69.912 4.542 69.6 4.542 c
-69.306 4.542 69.089 4.438 68.953 4.233 c
-68.825 4.027 68.762 3.704 68.762 3.262 c
-h
-76.538 2.866 m
-76.538 2.248 76.424 1.782 76.2 1.469 c
-75.983 1.153 75.66 0.999 75.229 0.999 c
-74.807 0.999 74.494 1.18 74.288 1.543 c
-74.259 1.072 l
-73.657 1.072 l
-73.657 6.717 l
-74.303 6.717 l
-74.303 4.615 l
-74.517 4.957 74.825 5.13 75.229 5.13 c
-75.66 5.13 75.983 4.972 76.2 4.659 c
-76.424 4.355 76.538 3.887 76.538 3.262 c
-h
-75.891 3.248 m
-75.891 3.719 75.821 4.049 75.685 4.247 c
-75.556 4.442 75.348 4.542 75.053 4.542 c
-74.719 4.542 74.469 4.358 74.303 3.998 c
-74.303 2.117 l
-74.469 1.753 74.722 1.573 75.068 1.573 c
-75.362 1.573 75.571 1.675 75.699 1.881 c
-75.825 2.087 75.891 2.403 75.891 2.836 c
-h
-79.022 4.438 m
-78.934 4.457 78.835 4.469 78.728 4.469 c
-78.394 4.469 78.159 4.284 78.022 3.925 c
-78.022 1.072 l
-77.376 1.072 l
-77.376 5.056 l
-78.008 5.056 l
-78.022 4.644 l
-78.199 4.968 78.442 5.13 78.757 5.13 c
-78.864 5.13 78.953 5.107 79.022 5.071 c
-h
-81.565 1.072 m
-81.524 1.161 81.499 1.308 81.492 1.514 c
-81.256 1.168 80.962 0.999 80.609 0.999 c
-80.246 0.999 79.963 1.095 79.757 1.294 c
-79.558 1.499 79.462 1.786 79.462 2.161 c
-79.462 2.561 79.599 2.881 79.874 3.116 c
-80.146 3.358 80.522 3.484 80.992 3.484 c
-81.477 3.484 l
-81.477 3.91 l
-81.477 4.145 81.422 4.31 81.315 4.409 c
-81.205 4.516 81.043 4.571 80.83 4.571 c
-80.632 4.571 80.47 4.513 80.345 4.395 c
-80.227 4.278 80.168 4.13 80.168 3.954 c
-79.522 3.954 l
-79.522 4.149 79.581 4.34 79.698 4.527 c
-79.823 4.71 79.984 4.858 80.183 4.968 c
-80.389 5.074 80.617 5.13 80.873 5.13 c
-81.274 5.13 81.579 5.026 81.785 4.821 c
-81.999 4.615 82.112 4.321 82.124 3.939 c
-82.124 1.926 l
-82.124 1.62 82.16 1.356 82.241 1.132 c
-82.241 1.072 l
-h
-80.698 1.587 m
-80.863 1.587 81.014 1.631 81.153 1.72 c
-81.301 1.808 81.407 1.918 81.477 2.057 c
-81.477 2.998 l
-81.109 2.998 l
-80.794 2.998 80.551 2.928 80.374 2.792 c
-80.198 2.664 80.11 2.476 80.11 2.234 c
-80.11 2.006 80.154 1.841 80.242 1.734 c
-80.33 1.635 80.481 1.587 80.698 1.587 c
-83.74 5.056 m
-83.755 4.615 l
-84.009 4.957 84.332 5.13 84.725 5.13 c
-85.43 5.13 85.787 4.659 85.798 3.719 c
-85.798 1.072 l
-85.151 1.072 l
-85.151 3.69 l
-85.151 4.002 85.096 4.222 84.99 4.351 c
-84.879 4.475 84.725 4.542 84.52 4.542 c
-84.362 4.542 84.214 4.486 84.079 4.38 c
-83.95 4.27 83.847 4.134 83.77 3.968 c
-83.77 1.072 l
-83.123 1.072 l
-83.123 5.056 l
-h
-88.15 1.558 m
-88.363 1.558 88.536 1.62 88.665 1.749 c
-88.8 1.885 88.874 2.076 88.885 2.322 c
-89.502 2.322 l
-89.48 1.94 89.344 1.62 89.091 1.367 c
-88.833 1.12 88.521 0.999 88.15 0.999 c
-87.657 0.999 87.283 1.15 87.018 1.455 c
-86.761 1.768 86.636 2.234 86.636 2.851 c
-86.636 3.293 l
-86.636 3.887 86.761 4.343 87.018 4.659 c
-87.283 4.972 87.657 5.13 88.15 5.13 c
-88.551 5.13 88.87 4.997 89.105 4.733 c
-89.348 4.475 89.48 4.13 89.502 3.69 c
-88.885 3.69 l
-88.863 3.983 88.79 4.203 88.665 4.351 c
-88.547 4.498 88.374 4.571 88.15 4.571 c
-87.856 4.571 87.639 4.472 87.503 4.278 c
-87.364 4.089 87.29 3.781 87.283 3.351 c
-87.283 2.836 l
-87.283 2.366 87.349 2.032 87.489 1.837 c
-87.636 1.65 87.856 1.558 88.15 1.558 c
-90.899 4.644 m
-91.152 4.968 91.472 5.13 91.854 5.13 c
-92.559 5.13 92.916 4.659 92.927 3.719 c
-92.927 1.072 l
-92.281 1.072 l
-92.281 3.69 l
-92.281 4.002 92.225 4.222 92.119 4.351 c
-92.008 4.475 91.854 4.542 91.649 4.542 c
-91.491 4.542 91.343 4.486 91.208 4.38 c
-91.079 4.27 90.976 4.134 90.899 3.968 c
-90.899 1.072 l
-90.252 1.072 l
-90.252 6.717 l
-90.899 6.717 l
-h
-95.308 0.999 m
-94.809 0.999 94.427 1.146 94.162 1.44 c
-93.897 1.734 93.765 2.167 93.765 2.749 c
-93.765 3.219 l
-93.765 3.814 93.89 4.28 94.147 4.615 c
-94.412 4.957 94.772 5.13 95.235 5.13 c
-95.694 5.13 96.036 4.976 96.264 4.674 c
-96.499 4.38 96.621 3.917 96.631 3.293 c
-96.631 2.866 l
-94.412 2.866 l
-94.412 2.778 l
-94.412 2.344 94.489 2.032 94.647 1.837 c
-94.812 1.65 95.044 1.558 95.338 1.558 c
-95.533 1.558 95.705 1.591 95.852 1.66 c
-96 1.738 96.135 1.855 96.264 2.013 c
-96.602 1.602 l
-96.316 1.198 95.886 0.999 95.308 0.999 c
-95.235 4.571 m
-94.959 4.571 94.757 4.475 94.633 4.292 c
-94.504 4.104 94.43 3.814 94.412 3.424 c
-95.985 3.424 l
-95.985 3.513 l
-95.963 3.895 95.896 4.163 95.779 4.321 c
-95.661 4.486 95.478 4.571 95.235 4.571 c
-99.351 2.087 m
-99.351 2.234 99.296 2.356 99.189 2.454 c
-99.079 2.55 98.873 2.668 98.572 2.807 c
-98.226 2.954 97.984 3.075 97.837 3.175 c
-97.69 3.281 97.579 3.399 97.513 3.528 c
-97.444 3.652 97.411 3.81 97.411 3.998 c
-97.411 4.321 97.528 4.59 97.764 4.806 c
-97.999 5.02 98.3 5.13 98.674 5.13 c
-99.057 5.13 99.366 5.016 99.601 4.791 c
-99.836 4.564 99.954 4.278 99.954 3.925 c
-99.306 3.925 l
-99.306 4.101 99.248 4.251 99.13 4.38 c
-99.013 4.505 98.859 4.571 98.674 4.571 c
-98.476 4.571 98.325 4.516 98.219 4.409 c
-98.109 4.31 98.057 4.178 98.057 4.012 c
-98.057 3.884 98.094 3.777 98.175 3.69 c
-98.252 3.609 98.443 3.505 98.748 3.38 c
-99.225 3.193 99.557 3.006 99.733 2.822 c
-99.909 2.645 99.998 2.418 99.998 2.146 c
-99.998 1.793 99.873 1.514 99.63 1.308 c
-99.395 1.103 99.079 0.999 98.689 0.999 c
-98.267 0.999 97.928 1.117 97.675 1.352 c
-97.417 1.595 97.293 1.899 97.293 2.263 c
-97.939 2.263 l
-97.947 2.036 98.017 1.859 98.145 1.734 c
-98.271 1.616 98.454 1.558 98.689 1.558 c
-98.903 1.558 99.064 1.606 99.175 1.705 c
-99.292 1.801 99.351 1.929 99.351 2.087 c
-100.879 1.425 m
-100.879 1.543 100.912 1.639 100.983 1.72 c
-101.049 1.797 101.151 1.837 101.291 1.837 c
-101.438 1.837 101.544 1.797 101.614 1.72 c
-101.691 1.639 101.732 1.543 101.732 1.425 c
-101.732 1.315 101.691 1.223 101.614 1.146 c
-101.544 1.069 101.438 1.028 101.291 1.028 c
-101.151 1.028 101.049 1.069 100.983 1.146 c
-100.912 1.223 100.879 1.315 100.879 1.425 c
-f
-Q
-0.113 0.082 0.09 0 k
-35.668 250.33 238.665 -12.895 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 40.8563 243.4906 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.646 -0.243 -0.775 -0.367 -0.881 c
--0.496 -0.992 -0.658 -1.08 -0.852 -1.147 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.161 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.926 c
--3.127 -0.819 -3.23 -0.69 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.213 -3.484 -0.014 c
--2.66 0.133 l
--2.642 0.033 -2.616 -0.058 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.367 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.684 -1.992 0.691 -1.999 0.691 c
--2.167 0.728 -2.329 0.772 -2.484 0.823 c
--2.642 0.882 -2.786 0.96 -2.91 1.058 c
--3.039 1.154 -3.142 1.279 -3.219 1.426 c
--3.289 1.573 -3.322 1.756 -3.322 1.985 c
--3.322 2.18 -3.289 2.344 -3.219 2.485 c
--3.152 2.631 -3.054 2.749 -2.925 2.837 c
--2.8 2.932 -2.645 3.003 -2.469 3.043 c
--2.293 3.09 -2.102 3.12 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.12 -1.128 3.09 -0.97 3.043 c
--0.804 2.992 -0.669 2.918 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.485 c
--0.202 2.344 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.253 -1.213 2.459 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.36 -1.469 1.353 c
--1.294 1.312 -1.117 1.264 -0.941 1.205 c
--0.756 1.147 -0.595 1.066 -0.455 0.97 c
--0.32 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.485 -2.19 2.455 c
--2.26 2.425 -2.319 2.385 -2.366 2.338 c
--2.406 2.297 -2.437 2.249 -2.454 2.19 c
--2.477 2.132 -2.484 2.066 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.779 c
--2.41 1.72 -2.373 1.669 -2.322 1.632 c
--2.263 1.592 -2.201 1.558 -2.131 1.529 c
--2.065 1.5 -1.984 1.47 -1.896 1.44 c
-h
--0.837 -0.014 m
--0.837 0.092 -0.86 0.177 -0.897 0.235 c
--0.926 0.302 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.53 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.529 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.014 c
-6.402 -2.66 m
-6.185 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.396 c
-5.284 -2.315 5.185 -2.219 5.108 -2.102 c
-5.039 -1.984 4.991 -1.855 4.961 -1.72 c
-5.858 -1.617 l
-5.895 -1.753 5.964 -1.859 6.064 -1.94 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.057 6.681 -2.028 c
-6.758 -1.999 6.828 -1.944 6.887 -1.866 c
-6.945 -1.797 6.99 -1.705 7.019 -1.587 c
-7.056 -1.469 7.078 -1.323 7.078 -1.147 c
-7.078 -0.955 l
-7.078 -0.889 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.072 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.215 -0.897 5.108 -0.75 c
-5.009 -0.595 4.935 -0.411 4.888 -0.206 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.772 4.836 1.018 4.888 1.235 c
-4.946 1.448 5.027 1.632 5.137 1.779 c
-5.245 1.933 5.376 2.051 5.534 2.132 c
-5.689 2.22 5.876 2.263 6.093 2.263 c
-6.188 2.263 6.288 2.253 6.387 2.234 c
-6.483 2.213 6.571 2.18 6.652 2.132 c
-6.739 2.08 6.817 2.018 6.887 1.941 c
-6.964 1.86 7.026 1.768 7.078 1.661 c
-7.092 1.661 l
-7.092 1.808 l
-7.1 1.867 7.107 1.918 7.107 1.97 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.152 2.22 c
-8.004 2.22 l
-7.993 2.139 7.982 2.028 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.161 l
-7.975 -1.415 7.938 -1.635 7.871 -1.822 c
-7.802 -2.007 7.699 -2.161 7.563 -2.278 c
-7.423 -2.403 7.258 -2.499 7.063 -2.558 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.53 m
-7.092 0.742 7.067 0.919 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.5 6.729 1.558 6.652 1.588 c
-6.571 1.625 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.621 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.367 c
-5.88 1.279 5.835 1.162 5.799 1.014 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.338 c
-6.049 -0.515 6.211 -0.602 6.417 -0.602 c
-6.483 -0.602 6.556 -0.588 6.637 -0.559 c
-6.725 -0.521 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.176 7.019 -0.029 c
-7.067 0.118 7.092 0.302 7.092 0.53 c
-11.036 -0.646 m
-12.168 -0.646 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.646 l
-10.124 -0.646 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.22 l
-11.036 2.22 l
-h
-10.124 3.514 0.912 -0.676 re
-10.124 2.837 m
-13.6 1.602 m
-13.057 1.602 l
-13.057 2.22 l
-13.644 2.22 l
-13.924 3.117 l
-14.497 3.117 l
-14.497 2.22 l
-15.732 2.22 l
-15.732 1.602 l
-14.497 1.602 l
-14.497 -0.103 l
-14.497 -0.324 l
-14.504 -0.393 14.527 -0.455 14.556 -0.515 c
-14.593 -0.565 14.648 -0.61 14.718 -0.646 c
-14.795 -0.676 14.909 -0.69 15.056 -0.69 c
-15.192 -0.69 15.327 -0.687 15.468 -0.676 c
-15.603 -0.658 15.736 -0.632 15.865 -0.602 c
-15.865 -1.205 l
-15.784 -1.216 15.707 -1.23 15.629 -1.249 c
-15.549 -1.261 15.471 -1.267 15.394 -1.278 c
-15.313 -1.286 15.225 -1.294 15.129 -1.294 c
-15.041 -1.301 14.942 -1.308 14.835 -1.308 c
-14.648 -1.308 14.486 -1.294 14.35 -1.264 c
-14.221 -1.227 14.107 -1.183 14.012 -1.132 c
-13.924 -1.084 13.85 -1.025 13.791 -0.955 c
-13.733 -0.878 13.689 -0.801 13.66 -0.72 c
-13.63 -0.632 13.608 -0.544 13.6 -0.455 c
-13.59 -0.36 13.586 -0.264 13.586 -0.176 c
-h
-22.765 1.602 m
-22.765 -1.264 l
-21.868 -1.264 l
-21.868 1.602 l
-21.045 1.602 l
-21.045 2.22 l
-21.868 2.22 l
-21.868 2.485 l
-21.868 2.61 21.883 2.741 21.913 2.882 c
-21.949 3.017 22.02 3.135 22.119 3.234 c
-22.225 3.341 22.369 3.429 22.545 3.499 c
-22.722 3.564 22.946 3.601 23.221 3.601 c
-23.434 3.601 23.632 3.591 23.809 3.572 c
-23.985 3.55 24.137 3.532 24.264 3.514 c
-24.264 2.926 l
-24.137 2.944 23.993 2.959 23.838 2.969 c
-23.68 2.977 23.53 2.984 23.383 2.984 c
-23.254 2.984 23.152 2.969 23.074 2.94 c
-22.994 2.911 22.931 2.87 22.883 2.822 c
-22.832 2.771 22.799 2.708 22.78 2.631 c
-22.769 2.562 22.765 2.485 22.765 2.396 c
-22.765 2.22 l
-24.191 2.22 l
-24.191 1.602 l
-h
-26.738 -1.323 m
-26.481 -1.323 26.253 -1.286 26.047 -1.22 c
-25.841 -1.143 25.665 -1.029 25.518 -0.881 c
-25.371 -0.727 25.253 -0.536 25.165 -0.309 c
-25.084 -0.085 25.047 0.181 25.047 0.485 c
-25.047 0.816 25.091 1.095 25.18 1.323 c
-25.275 1.558 25.404 1.742 25.562 1.881 c
-25.727 2.018 25.915 2.117 26.121 2.176 c
-26.327 2.242 26.535 2.278 26.753 2.278 c
-27.025 2.278 27.26 2.227 27.458 2.132 c
-27.664 2.043 27.829 1.911 27.958 1.735 c
-28.094 1.565 28.193 1.36 28.252 1.118 c
-28.318 0.882 28.355 0.617 28.355 0.324 c
-28.355 0.309 l
-25.988 0.309 l
-25.988 0.162 26.003 0.023 26.032 -0.103 c
-26.069 -0.231 26.124 -0.345 26.194 -0.441 c
-26.26 -0.529 26.344 -0.598 26.444 -0.646 c
-26.539 -0.698 26.653 -0.72 26.782 -0.72 c
-26.936 -0.72 27.076 -0.687 27.194 -0.617 c
-27.318 -0.551 27.407 -0.448 27.458 -0.309 c
-28.296 -0.382 l
-28.266 -0.481 28.212 -0.588 28.135 -0.706 c
-28.054 -0.816 27.95 -0.918 27.825 -1.014 c
-27.708 -1.103 27.553 -1.176 27.37 -1.234 c
-27.194 -1.294 26.98 -1.323 26.738 -1.323 c
-26.738 1.706 m
-26.649 1.706 26.562 1.691 26.473 1.661 c
-26.385 1.632 26.304 1.58 26.238 1.515 c
-26.169 1.444 26.109 1.357 26.061 1.249 c
-26.021 1.139 26.003 1.014 26.003 0.867 c
-27.472 0.867 l
-27.472 1.004 27.447 1.125 27.399 1.235 c
-27.359 1.341 27.304 1.43 27.237 1.5 c
-27.179 1.565 27.106 1.617 27.017 1.646 c
-26.929 1.683 26.834 1.706 26.738 1.706 c
-29.843 1.602 m
-29.299 1.602 l
-29.299 2.22 l
-29.887 2.22 l
-30.167 3.117 l
-30.74 3.117 l
-30.74 2.22 l
-31.975 2.22 l
-31.975 1.602 l
-30.74 1.602 l
-30.74 -0.103 l
-30.74 -0.324 l
-30.747 -0.393 30.769 -0.455 30.799 -0.515 c
-30.836 -0.565 30.89 -0.61 30.96 -0.646 c
-31.037 -0.676 31.152 -0.69 31.298 -0.69 c
-31.434 -0.69 31.57 -0.687 31.71 -0.676 c
-31.846 -0.658 31.978 -0.632 32.106 -0.602 c
-32.106 -1.205 l
-32.026 -1.216 31.948 -1.23 31.871 -1.249 c
-31.79 -1.261 31.713 -1.267 31.636 -1.278 c
-31.555 -1.286 31.467 -1.294 31.372 -1.294 c
-31.283 -1.301 31.185 -1.308 31.077 -1.308 c
-30.89 -1.308 30.728 -1.294 30.593 -1.264 c
-30.464 -1.227 30.35 -1.183 30.254 -1.132 c
-30.167 -1.084 30.093 -1.025 30.034 -0.955 c
-29.976 -0.878 29.932 -0.801 29.901 -0.72 c
-29.872 -0.632 29.851 -0.544 29.843 -0.455 c
-29.832 -0.36 29.828 -0.264 29.828 -0.176 c
-h
-34.863 -1.323 m
-34.576 -1.323 34.333 -1.282 34.128 -1.205 c
-33.922 -1.117 33.749 -0.995 33.614 -0.837 c
-33.473 -0.683 33.371 -0.496 33.305 -0.279 c
-33.234 -0.055 33.202 0.191 33.202 0.456 c
-33.202 0.75 33.234 1.008 33.305 1.235 c
-33.382 1.459 33.488 1.646 33.628 1.793 c
-33.775 1.948 33.951 2.066 34.157 2.146 c
-34.363 2.234 34.599 2.278 34.863 2.278 c
-35.087 2.278 35.289 2.249 35.465 2.19 c
-35.642 2.132 35.792 2.047 35.921 1.941 c
-36.046 1.841 36.149 1.72 36.23 1.573 c
-36.307 1.434 36.362 1.283 36.392 1.118 c
-35.48 1.073 l
-35.451 1.249 35.381 1.389 35.274 1.5 c
-35.175 1.606 35.032 1.661 34.848 1.661 c
-34.602 1.661 34.425 1.558 34.319 1.353 c
-34.209 1.154 34.157 0.867 34.157 0.485 c
-34.157 -0.309 34.392 -0.706 34.863 -0.706 c
-35.028 -0.706 35.171 -0.654 35.289 -0.544 c
-35.407 -0.437 35.48 -0.276 35.509 -0.058 c
-36.421 -0.103 l
-36.392 -0.272 36.336 -0.426 36.259 -0.573 c
-36.189 -0.72 36.087 -0.852 35.95 -0.97 c
-35.821 -1.08 35.663 -1.168 35.48 -1.234 c
-35.304 -1.294 35.098 -1.323 34.863 -1.323 c
-38.262 1.515 m
-38.379 1.786 38.53 1.985 38.718 2.103 c
-38.901 2.22 39.122 2.278 39.379 2.278 c
-39.584 2.278 39.754 2.242 39.894 2.176 c
-40.041 2.106 40.151 2.014 40.232 1.897 c
-40.32 1.779 40.378 1.636 40.408 1.47 c
-40.444 1.301 40.467 1.125 40.467 0.941 c
-40.467 -1.264 l
-39.555 -1.264 l
-39.555 0.735 l
-39.555 0.871 39.544 0.992 39.526 1.103 c
-39.515 1.209 39.489 1.297 39.453 1.367 c
-39.412 1.444 39.353 1.503 39.276 1.544 c
-39.206 1.58 39.114 1.602 38.996 1.602 c
-38.886 1.602 38.791 1.577 38.703 1.529 c
-38.615 1.478 38.534 1.411 38.468 1.323 c
-38.409 1.235 38.358 1.125 38.321 1 c
-38.291 0.882 38.277 0.75 38.277 0.603 c
-38.277 -1.264 l
-37.365 -1.264 l
-37.365 3.514 l
-38.277 3.514 l
-38.277 2.205 l
-38.277 2.135 38.269 2.066 38.262 1.999 c
-38.262 1.793 l
-38.262 1.735 38.254 1.679 38.248 1.632 c
-38.248 1.515 l
-h
-46.075 0.838 1.866 -0.794 re
-46.075 0.044 m
-50.135 0.838 1.867 -0.794 re
-50.135 0.044 m
-54.478 2.22 m
-54.486 2.198 54.493 2.165 54.493 2.117 c
-54.501 2.076 54.508 2.028 54.508 1.97 c
-54.515 1.918 54.522 1.867 54.522 1.808 c
-54.522 1.646 l
-54.537 1.646 l
-54.596 1.764 54.663 1.86 54.743 1.941 c
-54.821 2.018 54.905 2.08 54.993 2.132 c
-55.081 2.19 55.17 2.227 55.258 2.249 c
-55.353 2.267 55.453 2.278 55.552 2.278 c
-55.758 2.278 55.937 2.234 56.095 2.146 c
-56.25 2.058 56.379 1.929 56.477 1.764 c
-56.585 1.606 56.662 1.415 56.712 1.191 c
-56.772 0.974 56.801 0.738 56.801 0.485 c
-56.801 0.221 56.772 -0.025 56.712 -0.249 c
-56.662 -0.467 56.585 -0.658 56.477 -0.823 c
-56.379 -0.981 56.246 -1.103 56.081 -1.19 c
-55.923 -1.278 55.735 -1.323 55.522 -1.323 c
-55.423 -1.323 55.324 -1.311 55.228 -1.294 c
-55.129 -1.271 55.037 -1.242 54.949 -1.19 c
-54.869 -1.143 54.791 -1.08 54.713 -0.999 c
-54.644 -0.922 54.585 -0.831 54.537 -0.72 c
-54.522 -0.72 l
-54.522 -0.808 l
-54.53 -0.849 54.537 -0.897 54.537 -0.955 c
-54.537 -1.117 l
-54.537 -1.294 l
-54.537 -2.631 l
-53.626 -2.631 l
-53.626 1.455 l
-53.626 1.621 53.618 1.768 53.612 1.897 c
-53.612 2.22 l
-h
-54.522 0.456 m
-54.522 0.228 54.541 0.037 54.582 -0.118 c
-54.63 -0.264 54.684 -0.382 54.743 -0.47 c
-54.809 -0.559 54.883 -0.625 54.964 -0.661 c
-55.041 -0.702 55.118 -0.72 55.199 -0.72 c
-55.295 -0.72 55.382 -0.698 55.463 -0.646 c
-55.552 -0.598 55.617 -0.529 55.669 -0.441 c
-55.728 -0.345 55.772 -0.22 55.802 -0.073 c
-55.839 0.081 55.86 0.268 55.86 0.485 c
-55.86 0.875 55.802 1.168 55.684 1.367 c
-55.574 1.562 55.419 1.661 55.214 1.661 c
-55.133 1.661 55.056 1.639 54.979 1.602 c
-54.898 1.562 54.824 1.5 54.758 1.411 c
-54.688 1.323 54.63 1.199 54.582 1.044 c
-54.541 0.886 54.522 0.691 54.522 0.456 c
-60.685 1.47 m
-60.586 1.478 60.483 1.488 60.377 1.5 c
-60.267 1.518 60.145 1.529 60.009 1.529 c
-59.833 1.529 59.675 1.488 59.538 1.411 c
-59.399 1.341 59.282 1.243 59.186 1.118 c
-59.098 0.989 59.028 0.842 58.981 0.676 c
-58.94 0.507 58.921 0.331 58.921 0.147 c
-58.921 -1.264 l
-58.025 -1.264 l
-58.025 0.985 l
-58.025 1.11 58.014 1.235 57.996 1.353 c
-57.984 1.478 57.969 1.596 57.951 1.706 c
-57.94 1.823 57.926 1.918 57.907 1.999 c
-57.886 2.088 57.867 2.161 57.848 2.22 c
-58.73 2.22 l
-58.738 2.168 58.748 2.117 58.76 2.058 c
-58.778 1.999 58.792 1.933 58.804 1.867 c
-58.823 1.808 58.837 1.742 58.848 1.675 c
-58.855 1.606 58.867 1.544 58.877 1.484 c
-58.892 1.484 l
-58.929 1.602 58.981 1.709 59.039 1.808 c
-59.105 1.904 59.186 1.989 59.274 2.058 c
-59.363 2.124 59.465 2.18 59.583 2.22 c
-59.708 2.257 59.855 2.278 60.024 2.278 c
-60.149 2.278 60.267 2.271 60.377 2.263 c
-60.494 2.253 60.597 2.238 60.685 2.22 c
-h
-62.615 2.22 m
-62.615 0.264 l
-62.615 0.125 62.622 0 62.644 -0.118 c
-62.663 -0.228 62.696 -0.32 62.746 -0.397 c
-62.794 -0.478 62.854 -0.54 62.923 -0.588 c
-62.989 -0.628 63.074 -0.646 63.173 -0.646 c
-63.261 -0.646 63.342 -0.628 63.423 -0.588 c
-63.511 -0.54 63.585 -0.47 63.644 -0.382 c
-63.702 -0.286 63.746 -0.176 63.776 -0.058 c
-63.812 0.067 63.835 0.206 63.835 0.353 c
-63.835 2.22 l
-64.731 2.22 l
-64.731 -0.484 l
-64.731 -0.72 l
-64.739 -0.801 64.746 -0.878 64.746 -0.955 c
-64.746 -1.147 l
-64.753 -1.198 64.76 -1.234 64.76 -1.264 c
-63.908 -1.264 l
-63.897 -1.234 63.886 -1.198 63.879 -1.147 c
-63.879 -0.955 l
-63.879 -0.889 63.872 -0.819 63.864 -0.75 c
-63.864 -0.573 l
-63.849 -0.573 l
-63.731 -0.837 63.577 -1.029 63.394 -1.147 c
-63.217 -1.264 63.015 -1.323 62.791 -1.323 c
-62.586 -1.323 62.412 -1.286 62.276 -1.22 c
-62.137 -1.153 62.027 -1.058 61.938 -0.941 c
-61.857 -0.823 61.799 -0.687 61.762 -0.529 c
-61.732 -0.363 61.718 -0.187 61.718 0 c
-61.718 2.22 l
-h
-67.983 -1.264 m
-67.983 0.721 l
-67.983 1.022 67.939 1.243 67.851 1.382 c
-67.77 1.529 67.634 1.602 67.44 1.602 c
-67.33 1.602 67.226 1.577 67.131 1.529 c
-67.043 1.478 66.962 1.411 66.896 1.323 c
-66.837 1.235 66.785 1.125 66.748 1 c
-66.719 0.882 66.705 0.75 66.705 0.603 c
-66.705 -1.264 l
-65.793 -1.264 l
-65.793 1.44 l
-65.793 1.661 l
-65.793 1.75 65.786 1.827 65.778 1.897 c
-65.778 2.088 l
-65.778 2.22 l
-66.631 2.22 l
-66.638 2.19 66.646 2.146 66.646 2.088 c
-66.646 1.897 l
-66.653 1.827 66.661 1.756 66.661 1.691 c
-66.667 1.621 66.675 1.565 66.675 1.529 c
-66.69 1.529 l
-66.808 1.793 66.958 1.985 67.145 2.103 c
-67.33 2.22 67.55 2.278 67.807 2.278 c
-67.991 2.278 68.153 2.249 68.292 2.19 c
-68.428 2.132 68.542 2.043 68.63 1.926 c
-68.718 1.808 68.781 1.665 68.822 1.5 c
-68.869 1.341 68.895 1.154 68.895 0.941 c
-68.895 -1.264 l
-h
-71.412 -1.323 m
-71.155 -1.323 70.927 -1.286 70.721 -1.22 c
-70.515 -1.143 70.339 -1.029 70.192 -0.881 c
-70.045 -0.727 69.927 -0.536 69.84 -0.309 c
-69.759 -0.085 69.722 0.181 69.722 0.485 c
-69.722 0.816 69.765 1.095 69.854 1.323 c
-69.95 1.558 70.078 1.742 70.236 1.881 c
-70.401 2.018 70.588 2.117 70.794 2.176 c
-71 2.242 71.21 2.278 71.427 2.278 c
-71.698 2.278 71.934 2.227 72.132 2.132 c
-72.338 2.043 72.504 1.911 72.632 1.735 c
-72.768 1.565 72.867 1.36 72.926 1.118 c
-72.992 0.882 73.029 0.617 73.029 0.324 c
-73.029 0.309 l
-70.663 0.309 l
-70.663 0.162 70.677 0.023 70.706 -0.103 c
-70.743 -0.231 70.798 -0.345 70.868 -0.441 c
-70.935 -0.529 71.018 -0.598 71.118 -0.646 c
-71.213 -0.698 71.328 -0.72 71.456 -0.72 c
-71.61 -0.72 71.75 -0.687 71.868 -0.617 c
-71.993 -0.551 72.08 -0.448 72.132 -0.309 c
-72.97 -0.382 l
-72.94 -0.481 72.886 -0.588 72.809 -0.706 c
-72.728 -0.816 72.624 -0.918 72.5 -1.014 c
-72.382 -1.103 72.228 -1.176 72.044 -1.234 c
-71.868 -1.294 71.654 -1.323 71.412 -1.323 c
-71.412 1.706 m
-71.324 1.706 71.236 1.691 71.147 1.661 c
-71.059 1.632 70.978 1.58 70.912 1.515 c
-70.842 1.444 70.783 1.357 70.736 1.249 c
-70.696 1.139 70.677 1.014 70.677 0.867 c
-72.147 0.867 l
-72.147 1.004 72.121 1.125 72.074 1.235 c
-72.033 1.341 71.978 1.43 71.912 1.5 c
-71.853 1.565 71.779 1.617 71.691 1.646 c
-71.603 1.683 71.507 1.706 71.412 1.706 c
-78.729 -2.631 m
-78.729 3.514 l
-80.654 3.514 l
-80.654 2.896 l
-79.581 2.896 l
-79.581 -2.013 l
-80.654 -2.013 l
-80.654 -2.631 l
-h
-85.052 1.47 m
-84.953 1.478 84.851 1.488 84.744 1.5 c
-84.634 1.518 84.512 1.529 84.377 1.529 c
-84.2 1.529 84.042 1.488 83.906 1.411 c
-83.766 1.341 83.649 1.243 83.554 1.118 c
-83.465 0.989 83.396 0.842 83.348 0.676 c
-83.307 0.507 83.288 0.331 83.288 0.147 c
-83.288 -1.264 l
-82.392 -1.264 l
-82.392 0.985 l
-82.392 1.11 82.381 1.235 82.363 1.353 c
-82.351 1.478 82.337 1.596 82.318 1.706 c
-82.307 1.823 82.293 1.918 82.274 1.999 c
-82.253 2.088 82.234 2.161 82.216 2.22 c
-83.097 2.22 l
-83.105 2.168 83.116 2.117 83.127 2.058 c
-83.145 1.999 83.16 1.933 83.171 1.867 c
-83.19 1.808 83.205 1.742 83.215 1.675 c
-83.223 1.606 83.234 1.544 83.245 1.484 c
-83.259 1.484 l
-83.296 1.602 83.348 1.709 83.406 1.808 c
-83.473 1.904 83.554 1.989 83.641 2.058 c
-83.73 2.124 83.833 2.18 83.951 2.22 c
-84.075 2.257 84.223 2.278 84.391 2.278 c
-84.516 2.278 84.634 2.271 84.744 2.263 c
-84.861 2.253 84.965 2.238 85.052 2.22 c
-h
-87.658 -1.323 m
-87.401 -1.323 87.173 -1.286 86.968 -1.22 c
-86.762 -1.143 86.585 -1.029 86.438 -0.881 c
-86.291 -0.727 86.174 -0.536 86.085 -0.309 c
-86.004 -0.085 85.968 0.181 85.968 0.485 c
-85.968 0.816 86.012 1.095 86.1 1.323 c
-86.195 1.558 86.324 1.742 86.482 1.881 c
-86.648 2.018 86.835 2.117 87.041 2.176 c
-87.246 2.242 87.456 2.278 87.673 2.278 c
-87.945 2.278 88.18 2.227 88.379 2.132 c
-88.584 2.043 88.749 1.911 88.878 1.735 c
-89.014 1.565 89.113 1.36 89.172 1.118 c
-89.239 0.882 89.275 0.617 89.275 0.324 c
-89.275 0.309 l
-86.908 0.309 l
-86.908 0.162 86.923 0.023 86.953 -0.103 c
-86.989 -0.231 87.045 -0.345 87.114 -0.441 c
-87.18 -0.529 87.265 -0.598 87.364 -0.646 c
-87.46 -0.698 87.573 -0.72 87.702 -0.72 c
-87.857 -0.72 87.996 -0.687 88.113 -0.617 c
-88.239 -0.551 88.327 -0.448 88.379 -0.309 c
-89.216 -0.382 l
-89.187 -0.481 89.131 -0.588 89.054 -0.706 c
-88.973 -0.816 88.871 -0.918 88.746 -1.014 c
-88.628 -1.103 88.474 -1.176 88.29 -1.234 c
-88.113 -1.294 87.901 -1.323 87.658 -1.323 c
-87.658 1.706 m
-87.57 1.706 87.481 1.691 87.394 1.661 c
-87.305 1.632 87.224 1.58 87.159 1.515 c
-87.089 1.444 87.03 1.357 86.982 1.249 c
-86.941 1.139 86.923 1.014 86.923 0.867 c
-88.393 0.867 l
-88.393 1.004 88.367 1.125 88.319 1.235 c
-88.279 1.341 88.224 1.43 88.158 1.5 c
-88.099 1.565 88.026 1.617 87.937 1.646 c
-87.849 1.683 87.754 1.706 87.658 1.706 c
-91.322 -1.264 m
-91.322 0.852 l
-91.322 1.018 91.315 1.154 91.307 1.264 c
-91.296 1.371 91.278 1.455 91.248 1.515 c
-91.226 1.58 91.197 1.632 91.16 1.661 c
-91.13 1.691 91.09 1.706 91.043 1.706 c
-90.984 1.706 90.929 1.675 90.881 1.617 c
-90.841 1.565 90.808 1.492 90.778 1.397 c
-90.748 1.309 90.723 1.195 90.704 1.058 c
-90.694 0.919 90.69 0.769 90.69 0.603 c
-90.69 -1.264 l
-89.94 -1.264 l
-89.94 1.47 l
-89.94 1.706 l
-89.94 1.926 l
-89.94 2.003 89.933 2.066 89.925 2.117 c
-89.925 2.22 l
-90.602 2.22 l
-90.602 2.132 l
-90.602 1.985 l
-90.609 1.926 90.617 1.867 90.617 1.808 c
-90.617 1.646 l
-90.631 1.646 l
-90.65 1.735 90.679 1.812 90.719 1.881 c
-90.756 1.959 90.8 2.028 90.852 2.088 c
-90.91 2.146 90.976 2.19 91.057 2.22 c
-91.134 2.257 91.223 2.278 91.322 2.278 c
-91.506 2.278 91.645 2.224 91.733 2.117 c
-91.829 2.018 91.899 1.86 91.939 1.646 c
-91.954 1.646 l
-91.99 1.742 92.031 1.831 92.071 1.911 c
-92.119 1.989 92.175 2.051 92.233 2.103 c
-92.292 2.161 92.358 2.205 92.439 2.234 c
-92.516 2.263 92.604 2.278 92.703 2.278 c
-92.84 2.278 92.954 2.253 93.042 2.205 c
-93.129 2.153 93.196 2.08 93.247 1.985 c
-93.306 1.885 93.343 1.756 93.365 1.602 c
-93.395 1.455 93.409 1.272 93.409 1.058 c
-93.409 -1.264 l
-92.689 -1.264 l
-92.689 0.852 l
-92.689 1.018 92.682 1.154 92.674 1.264 c
-92.663 1.371 92.645 1.455 92.615 1.515 c
-92.593 1.58 92.564 1.632 92.527 1.661 c
-92.498 1.691 92.458 1.706 92.41 1.706 c
-92.292 1.706 92.196 1.617 92.13 1.44 c
-92.071 1.272 92.042 1.014 92.042 0.661 c
-92.042 -1.264 l
-h
-97.43 0.485 m
-97.43 0.21 97.393 -0.04 97.326 -0.264 c
-97.256 -0.481 97.154 -0.669 97.018 -0.823 c
-96.878 -0.981 96.701 -1.103 96.489 -1.19 c
-96.271 -1.278 96.018 -1.323 95.724 -1.323 c
-95.448 -1.323 95.202 -1.278 94.989 -1.19 c
-94.783 -1.103 94.611 -0.981 94.475 -0.823 c
-94.335 -0.669 94.232 -0.481 94.166 -0.264 c
-94.096 -0.04 94.064 0.21 94.064 0.485 c
-94.064 0.738 94.093 0.974 94.151 1.191 c
-94.218 1.415 94.32 1.606 94.46 1.764 c
-94.596 1.929 94.772 2.058 94.989 2.146 c
-95.202 2.234 95.46 2.278 95.753 2.278 c
-96.065 2.278 96.327 2.234 96.533 2.146 c
-96.746 2.058 96.919 1.929 97.047 1.764 c
-97.183 1.606 97.282 1.415 97.341 1.191 c
-97.399 0.974 97.43 0.738 97.43 0.485 c
-96.474 0.485 m
-96.474 0.691 96.459 0.867 96.43 1.014 c
-96.408 1.162 96.371 1.283 96.312 1.382 c
-96.254 1.478 96.18 1.548 96.092 1.588 c
-96.003 1.636 95.893 1.661 95.768 1.661 c
-95.504 1.661 95.313 1.562 95.195 1.367 c
-95.078 1.18 95.018 0.886 95.018 0.485 c
-95.018 0.063 95.078 -0.243 95.195 -0.426 c
-95.313 -0.613 95.489 -0.706 95.724 -0.706 c
-95.849 -0.706 95.963 -0.687 96.063 -0.646 c
-96.158 -0.598 96.239 -0.525 96.298 -0.426 c
-96.364 -0.33 96.408 -0.206 96.43 -0.058 c
-96.459 0.088 96.474 0.268 96.474 0.485 c
-98.888 1.602 m
-98.344 1.602 l
-98.344 2.22 l
-98.932 2.22 l
-99.211 3.117 l
-99.785 3.117 l
-99.785 2.22 l
-101.019 2.22 l
-101.019 1.602 l
-99.785 1.602 l
-99.785 -0.103 l
-99.785 -0.324 l
-99.792 -0.393 99.814 -0.455 99.843 -0.515 c
-99.88 -0.565 99.936 -0.61 100.005 -0.646 c
-100.082 -0.676 100.196 -0.69 100.343 -0.69 c
-100.479 -0.69 100.615 -0.687 100.755 -0.676 c
-100.891 -0.658 101.023 -0.632 101.152 -0.602 c
-101.152 -1.205 l
-101.071 -1.216 100.994 -1.23 100.917 -1.249 c
-100.836 -1.261 100.759 -1.267 100.682 -1.278 c
-100.601 -1.286 100.512 -1.294 100.416 -1.294 c
-100.329 -1.301 100.229 -1.308 100.123 -1.308 c
-99.936 -1.308 99.774 -1.294 99.637 -1.264 c
-99.51 -1.227 99.396 -1.183 99.3 -1.132 c
-99.211 -1.084 99.138 -1.025 99.08 -0.955 c
-99.02 -0.878 98.976 -0.801 98.947 -0.72 c
-98.918 -0.632 98.895 -0.544 98.888 -0.455 c
-98.877 -0.36 98.874 -0.264 98.874 -0.176 c
-h
-103.904 -1.323 m
-103.647 -1.323 103.419 -1.286 103.213 -1.22 c
-103.007 -1.143 102.831 -1.029 102.685 -0.881 c
-102.537 -0.727 102.419 -0.536 102.332 -0.309 c
-102.251 -0.085 102.214 0.181 102.214 0.485 c
-102.214 0.816 102.257 1.095 102.346 1.323 c
-102.442 1.558 102.571 1.742 102.728 1.881 c
-102.893 2.018 103.082 2.117 103.287 2.176 c
-103.493 2.242 103.702 2.278 103.919 2.278 c
-104.191 2.278 104.426 2.227 104.624 2.132 c
-104.83 2.043 104.996 1.911 105.124 1.735 c
-105.26 1.565 105.359 1.36 105.418 1.118 c
-105.484 0.882 105.521 0.617 105.521 0.324 c
-105.521 0.309 l
-103.155 0.309 l
-103.155 0.162 103.169 0.023 103.198 -0.103 c
-103.236 -0.231 103.29 -0.345 103.36 -0.441 c
-103.427 -0.529 103.511 -0.598 103.61 -0.646 c
-103.706 -0.698 103.82 -0.72 103.948 -0.72 c
-104.102 -0.72 104.242 -0.687 104.36 -0.617 c
-104.485 -0.551 104.573 -0.448 104.624 -0.309 c
-105.463 -0.382 l
-105.433 -0.481 105.378 -0.588 105.301 -0.706 c
-105.22 -0.816 105.117 -0.918 104.992 -1.014 c
-104.875 -1.103 104.72 -1.176 104.536 -1.234 c
-104.36 -1.294 104.146 -1.323 103.904 -1.323 c
-103.904 1.706 m
-103.816 1.706 103.728 1.691 103.639 1.661 c
-103.552 1.632 103.471 1.58 103.404 1.515 c
-103.335 1.444 103.276 1.357 103.228 1.249 c
-103.188 1.139 103.169 1.014 103.169 0.867 c
-104.639 0.867 l
-104.639 1.004 104.613 1.125 104.566 1.235 c
-104.526 1.341 104.47 1.43 104.404 1.5 c
-104.345 1.565 104.272 1.617 104.183 1.646 c
-104.096 1.683 104 1.706 103.904 1.706 c
-106.774 -2.631 m
-106.774 -2.013 l
-107.847 -2.013 l
-107.847 2.896 l
-106.774 2.896 l
-106.774 3.514 l
-108.7 3.514 l
-108.7 -2.631 l
-h
-f
-Q
-q 1 0 0 1 70.6476 229.5009 cm
-0 0 m
--0.941 0 l
--0.941 -2.161 l
--1.617 -2.161 l
--1.617 3.19 l
--0.118 3.19 l
-0.412 3.19 0.809 3.05 1.073 2.778 c
-1.345 2.502 1.484 2.105 1.484 1.588 c
-1.484 1.253 1.411 0.963 1.264 0.721 c
-1.118 0.474 0.912 0.287 0.647 0.162 c
-1.675 -2.117 l
-1.675 -2.161 l
-0.956 -2.161 l
-h
--0.941 0.588 m
--0.118 0.588 l
-0.166 0.588 0.389 0.676 0.559 0.852 c
-0.724 1.037 0.809 1.282 0.809 1.588 c
-0.809 2.271 0.493 2.616 -0.132 2.616 c
--0.941 2.616 l
-h
-3.719 -2.234 m
-3.219 -2.234 2.837 -2.087 2.573 -1.793 c
-2.308 -1.5 2.176 -1.066 2.176 -0.484 c
-2.176 -0.014 l
-2.176 0.58 2.301 1.047 2.558 1.382 c
-2.822 1.723 3.183 1.897 3.645 1.897 c
-4.105 1.897 4.447 1.742 4.675 1.44 c
-4.91 1.147 5.031 0.684 5.042 0.059 c
-5.042 -0.367 l
-2.822 -0.367 l
-2.822 -0.455 l
-2.822 -0.889 2.899 -1.201 3.057 -1.396 c
-3.223 -1.583 3.454 -1.675 3.749 -1.675 c
-3.944 -1.675 4.116 -1.643 4.262 -1.573 c
-4.41 -1.496 4.546 -1.378 4.675 -1.22 c
-5.012 -1.631 l
-4.726 -2.036 4.296 -2.234 3.719 -2.234 c
-3.645 1.338 m
-3.37 1.338 3.167 1.242 3.043 1.058 c
-2.914 0.871 2.841 0.58 2.822 0.191 c
-4.395 0.191 l
-4.395 0.279 l
-4.373 0.661 4.307 0.929 4.189 1.087 c
-4.072 1.253 3.888 1.338 3.645 1.338 c
-6.438 1.823 m
-6.453 1.455 l
-6.695 1.75 7.015 1.897 7.408 1.897 c
-7.85 1.897 8.158 1.698 8.335 1.309 c
-8.588 1.698 8.937 1.897 9.378 1.897 c
-10.113 1.897 10.488 1.434 10.51 0.515 c
-10.51 -2.161 l
-9.864 -2.161 l
-9.864 0.456 l
-9.864 0.75 9.808 0.963 9.702 1.103 c
-9.602 1.239 9.43 1.309 9.187 1.309 c
-8.989 1.309 8.827 1.228 8.702 1.073 c
-8.584 0.927 8.515 0.735 8.496 0.5 c
-8.496 -2.161 l
-7.834 -2.161 l
-7.834 0.485 l
-7.834 1.033 7.614 1.309 7.173 1.309 c
-6.839 1.309 6.604 1.147 6.468 0.823 c
-6.468 -2.161 l
-5.821 -2.161 l
-5.821 1.823 l
-h
-11.348 0.015 m
-11.348 0.592 11.484 1.047 11.759 1.382 c
-12.042 1.723 12.414 1.897 12.877 1.897 c
-13.336 1.897 13.704 1.727 13.979 1.397 c
-14.262 1.073 14.409 0.625 14.42 0.059 c
-14.42 -0.367 l
-14.42 -0.937 14.277 -1.392 13.993 -1.735 c
-13.718 -2.069 13.351 -2.234 12.891 -2.234 c
-12.428 -2.234 12.057 -2.072 11.774 -1.749 c
-11.499 -1.419 11.356 -0.977 11.348 -0.426 c
-h
-11.994 -0.367 m
-11.994 -0.771 12.072 -1.087 12.23 -1.323 c
-12.395 -1.558 12.615 -1.675 12.891 -1.675 c
-13.457 -1.675 13.751 -1.264 13.773 -0.441 c
-13.773 0.015 l
-13.773 0.416 13.689 0.735 13.523 0.97 c
-13.365 1.213 13.149 1.338 12.877 1.338 c
-12.612 1.338 12.395 1.213 12.23 0.97 c
-12.072 0.735 11.994 0.416 11.994 0.015 c
-h
-16.331 -1.176 m
-17.081 1.823 l
-17.742 1.823 l
-16.566 -2.161 l
-16.081 -2.161 l
-14.89 1.823 l
-15.551 1.823 l
-h
-19.8 -2.234 m
-19.3 -2.234 18.918 -2.087 18.653 -1.793 c
-18.389 -1.5 18.257 -1.066 18.257 -0.484 c
-18.257 -0.014 l
-18.257 0.58 18.381 1.047 18.639 1.382 c
-18.903 1.723 19.264 1.897 19.726 1.897 c
-20.185 1.897 20.528 1.742 20.756 1.44 c
-20.991 1.147 21.112 0.684 21.122 0.059 c
-21.122 -0.367 l
-18.903 -0.367 l
-18.903 -0.455 l
-18.903 -0.889 18.98 -1.201 19.138 -1.396 c
-19.304 -1.583 19.535 -1.675 19.829 -1.675 c
-20.024 -1.675 20.197 -1.643 20.343 -1.573 c
-20.49 -1.496 20.627 -1.378 20.756 -1.22 c
-21.093 -1.631 l
-20.806 -2.036 20.376 -2.234 19.8 -2.234 c
-19.726 1.338 m
-19.451 1.338 19.248 1.242 19.123 1.058 c
-18.995 0.871 18.922 0.58 18.903 0.191 c
-20.476 0.191 l
-20.476 0.279 l
-20.454 0.661 20.388 0.929 20.27 1.087 c
-20.153 1.253 19.969 1.338 19.726 1.338 c
-25.268 1.205 m
-25.18 1.224 25.08 1.235 24.974 1.235 c
-24.64 1.235 24.405 1.051 24.268 0.691 c
-24.268 -2.161 l
-23.622 -2.161 l
-23.622 1.823 l
-24.253 1.823 l
-24.268 1.411 l
-24.445 1.735 24.687 1.897 25.003 1.897 c
-25.11 1.897 25.198 1.874 25.268 1.837 c
-h
-27.267 -2.234 m
-26.767 -2.234 26.385 -2.087 26.121 -1.793 c
-25.856 -1.5 25.724 -1.066 25.724 -0.484 c
-25.724 -0.014 l
-25.724 0.58 25.849 1.047 26.106 1.382 c
-26.37 1.723 26.73 1.897 27.194 1.897 c
-27.653 1.897 27.995 1.742 28.222 1.44 c
-28.457 1.147 28.579 0.684 28.59 0.059 c
-28.59 -0.367 l
-26.37 -0.367 l
-26.37 -0.455 l
-26.37 -0.889 26.448 -1.201 26.605 -1.396 c
-26.771 -1.583 27.002 -1.675 27.296 -1.675 c
-27.491 -1.675 27.664 -1.643 27.811 -1.573 c
-27.958 -1.496 28.094 -1.378 28.222 -1.22 c
-28.561 -1.631 l
-28.274 -2.036 27.844 -2.234 27.267 -2.234 c
-27.194 1.338 m
-26.918 1.338 26.716 1.242 26.591 1.058 c
-26.462 0.871 26.389 0.58 26.37 0.191 c
-27.943 0.191 l
-27.943 0.279 l
-27.921 0.661 27.855 0.929 27.738 1.087 c
-27.62 1.253 27.436 1.338 27.194 1.338 c
-29.986 1.823 m
-30.001 1.455 l
-30.244 1.75 30.564 1.897 30.957 1.897 c
-31.397 1.897 31.706 1.698 31.883 1.309 c
-32.136 1.698 32.485 1.897 32.926 1.897 c
-33.661 1.897 34.036 1.434 34.058 0.515 c
-34.058 -2.161 l
-33.411 -2.161 l
-33.411 0.456 l
-33.411 0.75 33.356 0.963 33.249 1.103 c
-33.151 1.239 32.978 1.309 32.735 1.309 c
-32.536 1.309 32.375 1.228 32.249 1.073 c
-32.133 0.927 32.062 0.735 32.044 0.5 c
-32.044 -2.161 l
-31.383 -2.161 l
-31.383 0.485 l
-31.383 1.033 31.162 1.309 30.722 1.309 c
-30.387 1.309 30.152 1.147 30.016 0.823 c
-30.016 -2.161 l
-29.369 -2.161 l
-29.369 1.823 l
-h
-34.896 0.015 m
-34.896 0.592 35.032 1.047 35.307 1.382 c
-35.59 1.723 35.962 1.897 36.424 1.897 c
-36.884 1.897 37.251 1.727 37.527 1.397 c
-37.81 1.073 37.957 0.625 37.968 0.059 c
-37.968 -0.367 l
-37.968 -0.937 37.824 -1.392 37.542 -1.735 c
-37.266 -2.069 36.899 -2.234 36.44 -2.234 c
-35.976 -2.234 35.605 -2.072 35.322 -1.749 c
-35.046 -1.419 34.903 -0.977 34.896 -0.426 c
-h
-35.542 -0.367 m
-35.542 -0.771 35.62 -1.087 35.777 -1.323 c
-35.943 -1.558 36.164 -1.675 36.44 -1.675 c
-37.005 -1.675 37.299 -1.264 37.321 -0.441 c
-37.321 0.015 l
-37.321 0.416 37.236 0.735 37.072 0.97 c
-36.914 1.213 36.696 1.338 36.424 1.338 c
-36.16 1.338 35.943 1.213 35.777 0.97 c
-35.62 0.735 35.542 0.416 35.542 0.015 c
-h
-39.659 2.778 m
-39.659 1.823 l
-40.261 1.823 l
-40.261 1.294 l
-39.659 1.294 l
-39.659 -1.176 l
-39.659 -1.334 39.68 -1.452 39.732 -1.529 c
-39.79 -1.61 39.879 -1.646 39.996 -1.646 c
-40.085 -1.646 40.172 -1.631 40.261 -1.602 c
-40.261 -2.161 l
-40.114 -2.209 39.96 -2.234 39.805 -2.234 c
-39.548 -2.234 39.353 -2.142 39.218 -1.955 c
-39.077 -1.771 39.012 -1.51 39.012 -1.176 c
-39.012 1.294 l
-38.409 1.294 l
-38.409 1.823 l
-39.012 1.823 l
-39.012 2.778 l
-h
-42.451 -2.234 m
-41.951 -2.234 41.569 -2.087 41.305 -1.793 c
-41.04 -1.5 40.908 -1.066 40.908 -0.484 c
-40.908 -0.014 l
-40.908 0.58 41.032 1.047 41.29 1.382 c
-41.554 1.723 41.915 1.897 42.377 1.897 c
-42.837 1.897 43.179 1.742 43.407 1.44 c
-43.642 1.147 43.763 0.684 43.774 0.059 c
-43.774 -0.367 l
-41.554 -0.367 l
-41.554 -0.455 l
-41.554 -0.889 41.631 -1.201 41.79 -1.396 c
-41.955 -1.583 42.187 -1.675 42.481 -1.675 c
-42.676 -1.675 42.848 -1.643 42.995 -1.573 c
-43.142 -1.496 43.278 -1.378 43.407 -1.22 c
-43.744 -1.631 l
-43.458 -2.036 43.028 -2.234 42.451 -2.234 c
-42.377 1.338 m
-42.102 1.338 41.9 1.242 41.775 1.058 c
-41.647 0.871 41.573 0.58 41.554 0.191 c
-43.127 0.191 l
-43.127 0.279 l
-43.106 0.661 43.039 0.929 42.921 1.087 c
-42.804 1.253 42.62 1.338 42.377 1.338 c
-47.919 1.205 m
-47.831 1.224 47.732 1.235 47.625 1.235 c
-47.291 1.235 47.056 1.051 46.919 0.691 c
-46.919 -2.161 l
-46.273 -2.161 l
-46.273 1.823 l
-46.905 1.823 l
-46.919 1.411 l
-47.096 1.735 47.339 1.897 47.655 1.897 c
-47.761 1.897 47.85 1.874 47.919 1.837 c
-h
-49.918 -2.234 m
-49.418 -2.234 49.036 -2.087 48.772 -1.793 c
-48.507 -1.5 48.375 -1.066 48.375 -0.484 c
-48.375 -0.014 l
-48.375 0.58 48.5 1.047 48.757 1.382 c
-49.022 1.723 49.381 1.897 49.845 1.897 c
-50.304 1.897 50.646 1.742 50.873 1.44 c
-51.108 1.147 51.23 0.684 51.241 0.059 c
-51.241 -0.367 l
-49.022 -0.367 l
-49.022 -0.455 l
-49.022 -0.889 49.099 -1.201 49.257 -1.396 c
-49.422 -1.583 49.653 -1.675 49.948 -1.675 c
-50.142 -1.675 50.315 -1.643 50.462 -1.573 c
-50.609 -1.496 50.745 -1.378 50.873 -1.22 c
-51.212 -1.631 l
-50.925 -2.036 50.495 -2.234 49.918 -2.234 c
-49.845 1.338 m
-49.569 1.338 49.367 1.242 49.242 1.058 c
-49.113 0.871 49.04 0.58 49.022 0.191 c
-50.594 0.191 l
-50.594 0.279 l
-50.572 0.661 50.506 0.929 50.389 1.087 c
-50.271 1.253 50.087 1.338 49.845 1.338 c
-52.315 -2.161 m
-52.315 1.294 l
-51.785 1.294 l
-51.785 1.823 l
-52.315 1.823 l
-52.315 2.278 l
-52.315 2.679 52.41 2.992 52.608 3.219 c
-52.814 3.443 53.093 3.557 53.446 3.557 c
-53.582 3.557 53.714 3.535 53.843 3.499 c
-53.813 2.955 l
-53.714 2.973 53.615 2.984 53.52 2.984 c
-53.144 2.984 52.961 2.72 52.961 2.19 c
-52.961 1.823 l
-53.637 1.823 l
-53.637 1.294 l
-52.961 1.294 l
-52.961 -2.161 l
-h
-56.342 -1.147 m
-56.342 -0.999 56.286 -0.878 56.18 -0.779 c
-56.07 -0.683 55.864 -0.565 55.563 -0.426 c
-55.218 -0.279 54.975 -0.158 54.827 -0.058 c
-54.68 0.048 54.57 0.166 54.505 0.294 c
-54.435 0.419 54.401 0.577 54.401 0.765 c
-54.401 1.087 54.519 1.357 54.754 1.573 c
-54.989 1.786 55.291 1.897 55.665 1.897 c
-56.047 1.897 56.357 1.783 56.592 1.558 c
-56.827 1.33 56.944 1.044 56.944 0.691 c
-56.298 0.691 l
-56.298 0.867 56.238 1.018 56.122 1.147 c
-56.003 1.272 55.849 1.338 55.665 1.338 c
-55.467 1.338 55.316 1.282 55.21 1.176 c
-55.1 1.077 55.048 0.945 55.048 0.779 c
-55.048 0.651 55.085 0.544 55.166 0.456 c
-55.243 0.375 55.434 0.272 55.739 0.147 c
-56.217 -0.04 56.548 -0.228 56.724 -0.411 c
-56.901 -0.588 56.988 -0.816 56.988 -1.087 c
-56.988 -1.44 56.864 -1.72 56.621 -1.926 c
-56.386 -2.131 56.07 -2.234 55.68 -2.234 c
-55.258 -2.234 54.919 -2.117 54.666 -1.881 c
-54.409 -1.639 54.283 -1.334 54.283 -0.97 c
-54.931 -0.97 l
-54.938 -1.198 55.008 -1.374 55.137 -1.5 c
-55.261 -1.617 55.445 -1.675 55.68 -1.675 c
-55.893 -1.675 56.055 -1.627 56.165 -1.529 c
-56.283 -1.433 56.342 -1.305 56.342 -1.147 c
-57.841 -3.233 m
-57.444 -2.969 l
-57.68 -2.645 57.801 -2.311 57.811 -1.97 c
-57.811 -1.352 l
-58.474 -1.352 l
-58.474 -1.881 l
-58.474 -2.138 58.407 -2.385 58.282 -2.631 c
-58.164 -2.874 58.017 -3.075 57.841 -3.233 c
-61.883 2.778 m
-61.883 1.823 l
-62.486 1.823 l
-62.486 1.294 l
-61.883 1.294 l
-61.883 -1.176 l
-61.883 -1.334 61.905 -1.452 61.957 -1.529 c
-62.015 -1.61 62.104 -1.646 62.221 -1.646 c
-62.31 -1.646 62.397 -1.631 62.486 -1.602 c
-62.486 -2.161 l
-62.339 -2.209 62.185 -2.234 62.03 -2.234 c
-61.773 -2.234 61.578 -2.142 61.443 -1.955 c
-61.302 -1.771 61.236 -1.51 61.236 -1.176 c
-61.236 1.294 l
-60.633 1.294 l
-60.633 1.823 l
-61.236 1.823 l
-61.236 2.778 l
-h
-63.897 1.411 m
-64.151 1.735 64.47 1.897 64.853 1.897 c
-65.558 1.897 65.915 1.426 65.925 0.485 c
-65.925 -2.161 l
-65.279 -2.161 l
-65.279 0.456 l
-65.279 0.769 65.223 0.989 65.117 1.118 c
-65.007 1.242 64.853 1.309 64.647 1.309 c
-64.489 1.309 64.342 1.253 64.205 1.147 c
-64.078 1.037 63.974 0.9 63.897 0.735 c
-63.897 -2.161 l
-63.251 -2.161 l
-63.251 3.484 l
-63.897 3.484 l
-h
-68.924 -2.161 m
-68.884 -2.072 68.858 -1.926 68.851 -1.72 c
-68.616 -2.065 68.321 -2.234 67.968 -2.234 c
-67.605 -2.234 67.322 -2.138 67.116 -1.94 c
-66.918 -1.735 66.822 -1.448 66.822 -1.072 c
-66.822 -0.673 66.958 -0.353 67.234 -0.118 c
-67.506 0.125 67.881 0.25 68.351 0.25 c
-68.836 0.25 l
-68.836 0.676 l
-68.836 0.912 68.781 1.077 68.674 1.176 c
-68.564 1.282 68.402 1.338 68.189 1.338 c
-67.991 1.338 67.829 1.279 67.704 1.162 c
-67.586 1.044 67.527 0.897 67.527 0.721 c
-66.881 0.721 l
-66.881 0.915 66.94 1.106 67.057 1.294 c
-67.182 1.477 67.344 1.625 67.542 1.735 c
-67.748 1.841 67.976 1.897 68.233 1.897 c
-68.634 1.897 68.938 1.793 69.144 1.588 c
-69.358 1.382 69.472 1.087 69.483 0.706 c
-69.483 -1.308 l
-69.483 -1.613 69.52 -1.878 69.601 -2.102 c
-69.601 -2.161 l
-h
-68.057 -1.646 m
-68.222 -1.646 68.373 -1.602 68.512 -1.514 c
-68.66 -1.425 68.766 -1.315 68.836 -1.176 c
-68.836 -0.235 l
-68.468 -0.235 l
-68.153 -0.235 67.91 -0.305 67.733 -0.441 c
-67.557 -0.569 67.469 -0.757 67.469 -0.999 c
-67.469 -1.228 67.513 -1.392 67.602 -1.5 c
-67.689 -1.598 67.84 -1.646 68.057 -1.646 c
-71.334 2.778 m
-71.334 1.823 l
-71.937 1.823 l
-71.937 1.294 l
-71.334 1.294 l
-71.334 -1.176 l
-71.334 -1.334 71.357 -1.452 71.409 -1.529 c
-71.467 -1.61 71.555 -1.646 71.673 -1.646 c
-71.761 -1.646 71.849 -1.631 71.937 -1.602 c
-71.937 -2.161 l
-71.791 -2.209 71.636 -2.234 71.482 -2.234 c
-71.224 -2.234 71.03 -2.142 70.894 -1.955 c
-70.754 -1.771 70.688 -1.51 70.688 -1.176 c
-70.688 1.294 l
-70.085 1.294 l
-70.085 1.823 l
-70.688 1.823 l
-70.688 2.778 l
-h
-77.391 -1.014 m
-77.994 1.823 l
-78.64 1.823 l
-77.655 -2.161 l
-77.141 -2.161 l
-76.362 0.691 l
-75.612 -2.161 l
-75.083 -2.161 l
-74.127 1.823 l
-74.76 1.823 l
-75.377 -0.941 l
-76.112 1.823 l
-76.626 1.823 l
-h
-80.742 -2.234 m
-80.242 -2.234 79.86 -2.087 79.596 -1.793 c
-79.331 -1.5 79.199 -1.066 79.199 -0.484 c
-79.199 -0.014 l
-79.199 0.58 79.324 1.047 79.581 1.382 c
-79.845 1.723 80.206 1.897 80.668 1.897 c
-81.128 1.897 81.47 1.742 81.698 1.44 c
-81.933 1.147 82.054 0.684 82.065 0.059 c
-82.065 -0.367 l
-79.845 -0.367 l
-79.845 -0.455 l
-79.845 -0.889 79.922 -1.201 80.08 -1.396 c
-80.246 -1.583 80.477 -1.675 80.772 -1.675 c
-80.967 -1.675 81.139 -1.643 81.286 -1.573 c
-81.433 -1.496 81.569 -1.378 81.698 -1.22 c
-82.035 -1.631 l
-81.749 -2.036 81.319 -2.234 80.742 -2.234 c
-80.668 1.338 m
-80.393 1.338 80.19 1.242 80.066 1.058 c
-79.937 0.871 79.864 0.58 79.845 0.191 c
-81.418 0.191 l
-81.418 0.279 l
-81.397 0.661 81.33 0.929 81.212 1.087 c
-81.095 1.253 80.911 1.338 80.668 1.338 c
-84.491 1.205 m
-84.402 1.224 84.303 1.235 84.196 1.235 c
-83.862 1.235 83.627 1.051 83.491 0.691 c
-83.491 -2.161 l
-82.844 -2.161 l
-82.844 1.823 l
-83.477 1.823 l
-83.491 1.411 l
-83.667 1.735 83.91 1.897 84.225 1.897 c
-84.333 1.897 84.421 1.874 84.491 1.837 c
-h
-86.49 -2.234 m
-85.99 -2.234 85.607 -2.087 85.343 -1.793 c
-85.079 -1.5 84.946 -1.066 84.946 -0.484 c
-84.946 -0.014 l
-84.946 0.58 85.071 1.047 85.328 1.382 c
-85.593 1.723 85.953 1.897 86.416 1.897 c
-86.875 1.897 87.217 1.742 87.445 1.44 c
-87.68 1.147 87.801 0.684 87.812 0.059 c
-87.812 -0.367 l
-85.593 -0.367 l
-85.593 -0.455 l
-85.593 -0.889 85.67 -1.201 85.828 -1.396 c
-85.993 -1.583 86.225 -1.675 86.519 -1.675 c
-86.714 -1.675 86.887 -1.643 87.033 -1.573 c
-87.18 -1.496 87.317 -1.378 87.445 -1.22 c
-87.783 -1.631 l
-87.496 -2.036 87.066 -2.234 86.49 -2.234 c
-86.416 1.338 m
-86.141 1.338 85.938 1.242 85.813 1.058 c
-85.684 0.871 85.611 0.58 85.593 0.191 c
-87.166 0.191 l
-87.166 0.279 l
-87.144 0.661 87.078 0.929 86.96 1.087 c
-86.842 1.253 86.658 1.338 86.416 1.338 c
-91.957 1.205 m
-91.87 1.224 91.77 1.235 91.664 1.235 c
-91.329 1.235 91.094 1.051 90.958 0.691 c
-90.958 -2.161 l
-90.311 -2.161 l
-90.311 1.823 l
-90.943 1.823 l
-90.958 1.411 l
-91.134 1.735 91.377 1.897 91.693 1.897 c
-91.799 1.897 91.888 1.874 91.957 1.837 c
-h
-93.956 -2.234 m
-93.457 -2.234 93.075 -2.087 92.811 -1.793 c
-92.545 -1.5 92.414 -1.066 92.414 -0.484 c
-92.414 -0.014 l
-92.414 0.58 92.538 1.047 92.795 1.382 c
-93.06 1.723 93.42 1.897 93.883 1.897 c
-94.342 1.897 94.684 1.742 94.912 1.44 c
-95.147 1.147 95.269 0.684 95.279 0.059 c
-95.279 -0.367 l
-93.06 -0.367 l
-93.06 -0.455 l
-93.06 -0.889 93.137 -1.201 93.295 -1.396 c
-93.461 -1.583 93.692 -1.675 93.986 -1.675 c
-94.181 -1.675 94.353 -1.643 94.5 -1.573 c
-94.648 -1.496 94.783 -1.378 94.912 -1.22 c
-95.25 -1.631 l
-94.964 -2.036 94.534 -2.234 93.956 -2.234 c
-93.883 1.338 m
-93.607 1.338 93.405 1.242 93.281 1.058 c
-93.152 0.871 93.079 0.58 93.06 0.191 c
-94.633 0.191 l
-94.633 0.279 l
-94.611 0.661 94.544 0.929 94.427 1.087 c
-94.309 1.253 94.126 1.338 93.883 1.338 c
-96.676 1.823 m
-96.69 1.455 l
-96.933 1.75 97.253 1.897 97.646 1.897 c
-98.087 1.897 98.396 1.698 98.572 1.309 c
-98.826 1.698 99.175 1.897 99.616 1.897 c
-100.351 1.897 100.726 1.434 100.748 0.515 c
-100.748 -2.161 l
-100.101 -2.161 l
-100.101 0.456 l
-100.101 0.75 100.046 0.963 99.939 1.103 c
-99.84 1.239 99.668 1.309 99.425 1.309 c
-99.226 1.309 99.065 1.228 98.939 1.073 c
-98.822 0.927 98.752 0.735 98.733 0.5 c
-98.733 -2.161 l
-98.072 -2.161 l
-98.072 0.485 l
-98.072 1.033 97.852 1.309 97.411 1.309 c
-97.077 1.309 96.842 1.147 96.705 0.823 c
-96.705 -2.161 l
-96.059 -2.161 l
-96.059 1.823 l
-h
-101.586 0.015 m
-101.586 0.592 101.721 1.047 101.997 1.382 c
-102.28 1.723 102.651 1.897 103.114 1.897 c
-103.574 1.897 103.941 1.727 104.216 1.397 c
-104.499 1.073 104.647 0.625 104.657 0.059 c
-104.657 -0.367 l
-104.657 -0.937 104.514 -1.392 104.231 -1.735 c
-103.955 -2.069 103.589 -2.234 103.129 -2.234 c
-102.666 -2.234 102.295 -2.072 102.012 -1.749 c
-101.736 -1.419 101.592 -0.977 101.586 -0.426 c
-h
-102.232 -0.367 m
-102.232 -0.771 102.309 -1.087 102.467 -1.323 c
-102.633 -1.558 102.853 -1.675 103.129 -1.675 c
-103.695 -1.675 103.988 -1.264 104.011 -0.441 c
-104.011 0.015 l
-104.011 0.416 103.926 0.735 103.761 0.97 c
-103.603 1.213 103.386 1.338 103.114 1.338 c
-102.849 1.338 102.633 1.213 102.467 0.97 c
-102.309 0.735 102.232 0.416 102.232 0.015 c
-h
-106.568 -1.176 m
-107.318 1.823 l
-107.979 1.823 l
-106.803 -2.161 l
-106.319 -2.161 l
-105.128 1.823 l
-105.789 1.823 l
-h
-110.037 -2.234 m
-109.538 -2.234 109.155 -2.087 108.891 -1.793 c
-108.626 -1.5 108.494 -1.066 108.494 -0.484 c
-108.494 -0.014 l
-108.494 0.58 108.619 1.047 108.876 1.382 c
-109.141 1.723 109.501 1.897 109.964 1.897 c
-110.423 1.897 110.765 1.742 110.993 1.44 c
-111.228 1.147 111.35 0.684 111.36 0.059 c
-111.36 -0.367 l
-109.141 -0.367 l
-109.141 -0.455 l
-109.141 -0.889 109.218 -1.201 109.376 -1.396 c
-109.542 -1.583 109.773 -1.675 110.066 -1.675 c
-110.261 -1.675 110.434 -1.643 110.581 -1.573 c
-110.728 -1.496 110.864 -1.378 110.993 -1.22 c
-111.331 -1.631 l
-111.044 -2.036 110.614 -2.234 110.037 -2.234 c
-109.964 1.338 m
-109.688 1.338 109.486 1.242 109.361 1.058 c
-109.233 0.871 109.159 0.58 109.141 0.191 c
-110.714 0.191 l
-110.714 0.279 l
-110.691 0.661 110.625 0.929 110.508 1.087 c
-110.39 1.253 110.207 1.338 109.964 1.338 c
-112.007 0.015 m
-112.007 0.621 112.117 1.087 112.345 1.411 c
-112.58 1.735 112.908 1.897 113.33 1.897 c
-113.712 1.897 114.01 1.738 114.226 1.426 c
-114.226 3.484 l
-114.874 3.484 l
-114.874 -2.161 l
-114.286 -2.161 l
-114.242 -1.735 l
-114.035 -2.069 113.731 -2.234 113.33 -2.234 c
-112.918 -2.234 112.595 -2.08 112.36 -1.764 c
-112.125 -1.44 112.007 -0.985 112.007 -0.397 c
-h
-112.654 -0.367 m
-112.654 -0.808 112.717 -1.139 112.844 -1.352 c
-112.981 -1.558 113.201 -1.66 113.507 -1.66 c
-113.829 -1.66 114.068 -1.5 114.226 -1.176 c
-114.226 0.838 l
-114.057 1.151 113.819 1.309 113.507 1.309 c
-113.201 1.309 112.981 1.205 112.844 1 c
-112.717 0.794 112.654 0.47 112.654 0.029 c
-h
-117.887 -2.161 m
-117.887 1.294 l
-117.357 1.294 l
-117.357 1.823 l
-117.887 1.823 l
-117.887 2.278 l
-117.887 2.679 117.982 2.992 118.18 3.219 c
-118.386 3.443 118.666 3.557 119.019 3.557 c
-119.154 3.557 119.287 3.535 119.416 3.499 c
-119.386 2.955 l
-119.287 2.973 119.188 2.984 119.092 2.984 c
-118.718 2.984 118.533 2.72 118.533 2.19 c
-118.533 1.823 l
-119.21 1.823 l
-119.21 1.294 l
-118.533 1.294 l
-118.533 -2.161 l
-h
-121.62 1.205 m
-121.532 1.224 121.433 1.235 121.326 1.235 c
-120.992 1.235 120.757 1.051 120.621 0.691 c
-120.621 -2.161 l
-119.973 -2.161 l
-119.973 1.823 l
-120.606 1.823 l
-120.621 1.411 l
-120.798 1.735 121.039 1.897 121.355 1.897 c
-121.463 1.897 121.55 1.874 121.62 1.837 c
-h
-122.061 0.015 m
-122.061 0.592 122.197 1.047 122.473 1.382 c
-122.756 1.723 123.127 1.897 123.59 1.897 c
-124.05 1.897 124.417 1.727 124.692 1.397 c
-124.975 1.073 125.122 0.625 125.133 0.059 c
-125.133 -0.367 l
-125.133 -0.937 124.99 -1.392 124.707 -1.735 c
-124.432 -2.069 124.064 -2.234 123.605 -2.234 c
-123.142 -2.234 122.77 -2.072 122.487 -1.749 c
-122.211 -1.419 122.068 -0.977 122.061 -0.426 c
-h
-122.708 -0.367 m
-122.708 -0.771 122.785 -1.087 122.943 -1.323 c
-123.109 -1.558 123.329 -1.675 123.605 -1.675 c
-124.17 -1.675 124.465 -1.264 124.486 -0.441 c
-124.486 0.015 l
-124.486 0.416 124.402 0.735 124.237 0.97 c
-124.079 1.213 123.862 1.338 123.59 1.338 c
-123.325 1.338 123.109 1.213 122.943 0.97 c
-122.785 0.735 122.708 0.416 122.708 0.015 c
-h
-126.589 1.823 m
-126.603 1.455 l
-126.846 1.75 127.165 1.897 127.559 1.897 c
-128 1.897 128.308 1.698 128.484 1.309 c
-128.738 1.698 129.087 1.897 129.529 1.897 c
-130.263 1.897 130.638 1.434 130.66 0.515 c
-130.66 -2.161 l
-130.013 -2.161 l
-130.013 0.456 l
-130.013 0.75 129.958 0.963 129.851 1.103 c
-129.752 1.239 129.579 1.309 129.338 1.309 c
-129.139 1.309 128.977 1.228 128.852 1.073 c
-128.735 0.927 128.665 0.735 128.646 0.5 c
-128.646 -2.161 l
-127.985 -2.161 l
-127.985 0.485 l
-127.985 1.033 127.765 1.309 127.323 1.309 c
-126.989 1.309 126.754 1.147 126.618 0.823 c
-126.618 -2.161 l
-125.972 -2.161 l
-125.972 1.823 l
-h
-134.203 2.778 m
-134.203 1.823 l
-134.805 1.823 l
-134.805 1.294 l
-134.203 1.294 l
-134.203 -1.176 l
-134.203 -1.334 134.225 -1.452 134.276 -1.529 c
-134.335 -1.61 134.423 -1.646 134.541 -1.646 c
-134.629 -1.646 134.717 -1.631 134.805 -1.602 c
-134.805 -2.161 l
-134.658 -2.209 134.504 -2.234 134.35 -2.234 c
-134.092 -2.234 133.897 -2.142 133.762 -1.955 c
-133.622 -1.771 133.556 -1.51 133.556 -1.176 c
-133.556 1.294 l
-132.953 1.294 l
-132.953 1.823 l
-133.556 1.823 l
-133.556 2.778 l
-h
-136.216 1.411 m
-136.47 1.735 136.79 1.897 137.172 1.897 c
-137.878 1.897 138.234 1.426 138.244 0.485 c
-138.244 -2.161 l
-137.598 -2.161 l
-137.598 0.456 l
-137.598 0.769 137.543 0.989 137.436 1.118 c
-137.326 1.242 137.172 1.309 136.966 1.309 c
-136.808 1.309 136.661 1.253 136.525 1.147 c
-136.397 1.037 136.293 0.9 136.216 0.735 c
-136.216 -2.161 l
-135.57 -2.161 l
-135.57 3.484 l
-136.216 3.484 l
-h
-140.626 -2.234 m
-140.126 -2.234 139.744 -2.087 139.48 -1.793 c
-139.215 -1.5 139.083 -1.066 139.083 -0.484 c
-139.083 -0.014 l
-139.083 0.58 139.208 1.047 139.465 1.382 c
-139.729 1.723 140.089 1.897 140.553 1.897 c
-141.012 1.897 141.354 1.742 141.581 1.44 c
-141.816 1.147 141.938 0.684 141.949 0.059 c
-141.949 -0.367 l
-139.729 -0.367 l
-139.729 -0.455 l
-139.729 -0.889 139.807 -1.201 139.964 -1.396 c
-140.13 -1.583 140.361 -1.675 140.656 -1.675 c
-140.85 -1.675 141.023 -1.643 141.17 -1.573 c
-141.317 -1.496 141.453 -1.378 141.581 -1.22 c
-141.92 -1.631 l
-141.633 -2.036 141.203 -2.234 140.626 -2.234 c
-140.553 1.338 m
-140.277 1.338 140.075 1.242 139.95 1.058 c
-139.821 0.871 139.748 0.58 139.729 0.191 c
-141.302 0.191 l
-141.302 0.279 l
-141.28 0.661 141.214 0.929 141.097 1.087 c
-140.979 1.253 140.795 1.338 140.553 1.338 c
-f
-Q
-q 1 0 0 1 216.9476 230.3099 cm
-0 0 m
--0.338 0.029 l
--0.625 0.029 -0.816 -0.096 -0.912 -0.339 c
--0.912 -2.97 l
--1.955 -2.97 l
--1.955 1.014 l
--0.985 1.014 l
--0.956 0.573 l
--0.79 0.914 -0.559 1.087 -0.264 1.087 c
--0.147 1.087 -0.055 1.065 0.014 1.028 c
-h
-2.072 -3.043 m
-1.544 -3.043 1.124 -2.889 0.823 -2.573 c
-0.529 -2.249 0.382 -1.79 0.382 -1.191 c
-0.382 -0.882 l
-0.382 -0.258 0.518 0.228 0.794 0.573 c
-1.066 0.914 1.459 1.087 1.97 1.087 c
-2.469 1.087 2.84 0.926 3.087 0.602 c
-3.341 0.278 3.472 -0.199 3.484 -0.823 c
-3.484 -1.324 l
-1.411 -1.324 l
-1.429 -1.617 1.492 -1.834 1.602 -1.97 c
-1.72 -2.11 1.899 -2.176 2.146 -2.176 c
-2.487 -2.176 2.778 -2.058 3.013 -1.823 c
-3.425 -2.455 l
-3.296 -2.631 3.109 -2.775 2.866 -2.881 c
-2.62 -2.988 2.356 -3.043 2.072 -3.043 c
-1.425 -0.603 m
-2.454 -0.603 l
-2.454 -0.5 l
-2.454 -0.265 2.414 -0.088 2.337 0.029 c
-2.267 0.154 2.138 0.22 1.955 0.22 c
-1.779 0.22 1.646 0.151 1.558 0.014 c
-1.477 -0.115 1.433 -0.32 1.425 -0.603 c
-5.041 1.014 m
-5.072 0.646 l
-5.307 0.941 5.615 1.087 5.997 1.087 c
-6.398 1.087 6.677 0.903 6.834 0.544 c
-7.07 0.903 7.397 1.087 7.819 1.087 c
-8.515 1.087 8.867 0.602 8.878 -0.368 c
-8.878 -2.97 l
-7.85 -2.97 l
-7.85 -0.427 l
-7.85 -0.202 7.813 -0.04 7.746 0.058 c
-7.688 0.154 7.578 0.205 7.423 0.205 c
-7.225 0.205 7.085 0.087 6.996 -0.148 c
-6.996 -2.97 l
-5.953 -2.97 l
-5.953 -0.441 l
-5.953 -0.206 5.924 -0.04 5.865 0.058 c
-5.806 0.154 5.696 0.205 5.542 0.205 c
-5.365 0.205 5.222 0.11 5.115 -0.074 c
-5.115 -2.97 l
-4.072 -2.97 l
-4.072 1.014 l
-h
-9.54 -0.853 m
-9.54 -0.246 9.679 0.228 9.966 0.573 c
-10.248 0.914 10.642 1.087 11.142 1.087 c
-11.649 1.087 12.046 0.914 12.332 0.573 c
-12.615 0.228 12.758 -0.246 12.758 -0.853 c
-12.758 -1.118 l
-12.758 -1.717 12.615 -2.187 12.332 -2.529 c
-12.046 -2.874 11.649 -3.043 11.142 -3.043 c
-10.631 -3.043 10.234 -2.874 9.951 -2.529 c
-9.676 -2.187 9.54 -1.713 9.54 -1.103 c
-h
-10.583 -1.118 m
-10.583 -1.823 10.767 -2.176 11.142 -2.176 c
-11.495 -2.176 11.686 -1.881 11.715 -1.294 c
-11.715 -0.853 l
-11.715 -0.493 11.663 -0.221 11.568 -0.044 c
-11.469 0.132 11.326 0.22 11.142 0.22 c
-10.965 0.22 10.826 0.132 10.73 -0.044 c
-10.631 -0.221 10.583 -0.493 10.583 -0.853 c
-h
-14.611 1.984 m
-14.611 1.014 l
-15.14 1.014 l
-15.14 0.22 l
-14.611 0.22 l
-14.611 -1.75 l
-14.611 -1.908 14.629 -2.014 14.67 -2.073 c
-14.717 -2.132 14.802 -2.161 14.919 -2.161 c
-15.026 -2.161 15.11 -2.154 15.169 -2.132 c
-15.169 -2.94 l
-14.993 -3.007 14.802 -3.043 14.596 -3.043 c
-13.92 -3.043 13.575 -2.658 13.567 -1.881 c
-13.567 0.22 l
-13.111 0.22 l
-13.111 1.014 l
-13.567 1.014 l
-13.567 1.984 l
-h
-17.315 -3.043 m
-16.787 -3.043 16.367 -2.889 16.066 -2.573 c
-15.771 -2.249 15.625 -1.79 15.625 -1.191 c
-15.625 -0.882 l
-15.625 -0.258 15.761 0.228 16.037 0.573 c
-16.309 0.914 16.702 1.087 17.213 1.087 c
-17.712 1.087 18.084 0.926 18.329 0.602 c
-18.583 0.278 18.715 -0.199 18.726 -0.823 c
-18.726 -1.324 l
-16.654 -1.324 l
-16.673 -1.617 16.735 -1.834 16.845 -1.97 c
-16.962 -2.11 17.143 -2.176 17.389 -2.176 c
-17.731 -2.176 18.021 -2.058 18.256 -1.823 c
-18.668 -2.455 l
-18.539 -2.631 18.352 -2.775 18.109 -2.881 c
-17.863 -2.988 17.598 -3.043 17.315 -3.043 c
-16.669 -0.603 m
-17.697 -0.603 l
-17.697 -0.5 l
-17.697 -0.265 17.657 -0.088 17.58 0.029 c
-17.51 0.154 17.381 0.22 17.198 0.22 c
-17.022 0.22 16.889 0.151 16.801 0.014 c
-16.72 -0.115 16.676 -0.32 16.669 -0.603 c
-f
-Q
-q 1 0 0 1 239.7314 230.706 cm
-0 0 m
--0.088 0.019 -0.188 0.03 -0.294 0.03 c
--0.628 0.03 -0.864 -0.154 -1 -0.514 c
--1 -3.366 l
--1.646 -3.366 l
--1.646 0.618 l
--1.014 0.618 l
--1 0.206 l
--0.823 0.53 -0.581 0.691 -0.265 0.691 c
--0.158 0.691 -0.071 0.669 0 0.632 c
-h
-1.999 -3.439 m
-1.499 -3.439 1.117 -3.293 0.852 -2.998 c
-0.588 -2.705 0.455 -2.271 0.455 -1.69 c
-0.455 -1.219 l
-0.455 -0.625 0.58 -0.158 0.837 0.177 c
-1.103 0.518 1.462 0.691 1.925 0.691 c
-2.385 0.691 2.726 0.537 2.954 0.235 c
-3.189 -0.058 3.31 -0.521 3.322 -1.146 c
-3.322 -1.572 l
-1.103 -1.572 l
-1.103 -1.66 l
-1.103 -2.094 1.18 -2.406 1.338 -2.601 c
-1.502 -2.788 1.734 -2.881 2.028 -2.881 c
-2.223 -2.881 2.395 -2.848 2.543 -2.778 c
-2.69 -2.701 2.826 -2.583 2.954 -2.425 c
-3.293 -2.836 l
-3.006 -3.241 2.576 -3.439 1.999 -3.439 c
-1.925 0.133 m
-1.65 0.133 1.448 0.037 1.323 -0.147 c
-1.194 -0.334 1.12 -0.625 1.103 -1.014 c
-2.675 -1.014 l
-2.675 -0.926 l
-2.653 -0.544 2.587 -0.276 2.469 -0.118 c
-2.352 0.048 2.167 0.133 1.925 0.133 c
-6.982 -1.572 m
-6.982 -2.2 6.864 -2.671 6.628 -2.983 c
-6.401 -3.289 6.085 -3.439 5.674 -3.439 c
-5.269 -3.439 4.961 -3.289 4.747 -2.983 c
-4.747 -4.895 l
-4.101 -4.895 l
-4.101 0.618 l
-4.689 0.618 l
-4.733 0.177 l
-4.945 0.518 5.255 0.691 5.659 0.691 c
-6.1 0.691 6.427 0.537 6.644 0.235 c
-6.857 -0.07 6.971 -0.525 6.982 -1.132 c
-h
-6.335 -1.19 m
-6.335 -0.749 6.265 -0.426 6.129 -0.22 c
-5.99 -0.007 5.769 0.103 5.468 0.103 c
-5.151 0.103 4.913 -0.051 4.747 -0.353 c
-4.747 -2.425 l
-4.913 -2.73 5.151 -2.881 5.468 -2.881 c
-5.762 -2.881 5.975 -2.778 6.115 -2.572 c
-6.25 -2.358 6.324 -2.028 6.335 -1.587 c
-h
-7.688 -1.19 m
-7.688 -0.613 7.823 -0.158 8.099 0.177 c
-8.382 0.518 8.753 0.691 9.215 0.691 c
-9.675 0.691 10.042 0.522 10.318 0.192 c
-10.601 -0.132 10.748 -0.58 10.759 -1.146 c
-10.759 -1.572 l
-10.759 -2.142 10.616 -2.597 10.333 -2.94 c
-10.057 -3.274 9.69 -3.439 9.231 -3.439 c
-8.768 -3.439 8.396 -3.278 8.114 -2.954 c
-7.838 -2.624 7.694 -2.183 7.688 -1.631 c
-h
-8.334 -1.572 m
-8.334 -1.976 8.411 -2.293 8.569 -2.528 c
-8.735 -2.763 8.955 -2.881 9.231 -2.881 c
-9.797 -2.881 10.09 -2.469 10.113 -1.646 c
-10.113 -1.19 l
-10.113 -0.789 10.028 -0.47 9.863 -0.235 c
-9.705 0.008 9.488 0.133 9.215 0.133 c
-8.951 0.133 8.735 0.008 8.569 -0.235 c
-8.411 -0.47 8.334 -0.789 8.334 -1.19 c
-h
-13.537 -2.352 m
-13.537 -2.204 13.483 -2.083 13.375 -1.984 c
-13.265 -1.888 13.059 -1.77 12.758 -1.631 c
-12.413 -1.484 12.17 -1.363 12.024 -1.263 c
-11.877 -1.157 11.766 -1.04 11.7 -0.911 c
-11.63 -0.786 11.597 -0.628 11.597 -0.44 c
-11.597 -0.118 11.715 0.151 11.95 0.368 c
-12.185 0.581 12.486 0.691 12.862 0.691 c
-13.244 0.691 13.552 0.578 13.787 0.353 c
-14.023 0.125 14.14 -0.161 14.14 -0.514 c
-13.493 -0.514 l
-13.493 -0.338 13.435 -0.187 13.317 -0.058 c
-13.2 0.067 13.045 0.133 12.862 0.133 c
-12.663 0.133 12.512 0.077 12.406 -0.029 c
-12.295 -0.128 12.244 -0.261 12.244 -0.426 c
-12.244 -0.554 12.28 -0.661 12.361 -0.749 c
-12.438 -0.83 12.629 -0.933 12.935 -1.058 c
-13.412 -1.246 13.743 -1.433 13.919 -1.616 c
-14.096 -1.793 14.184 -2.021 14.184 -2.293 c
-14.184 -2.645 14.059 -2.925 13.817 -3.131 c
-13.581 -3.336 13.265 -3.439 12.876 -3.439 c
-12.454 -3.439 12.116 -3.322 11.862 -3.087 c
-11.605 -2.844 11.48 -2.539 11.48 -2.175 c
-12.126 -2.175 l
-12.134 -2.403 12.203 -2.58 12.332 -2.705 c
-12.457 -2.822 12.641 -2.881 12.876 -2.881 c
-13.089 -2.881 13.251 -2.833 13.361 -2.734 c
-13.479 -2.638 13.537 -2.51 13.537 -2.352 c
-15.727 -3.366 -0.646 3.984 re
-15.771 1.661 m
-15.771 1.551 15.742 1.459 15.684 1.382 c
-15.625 1.312 15.529 1.279 15.405 1.279 c
-15.287 1.279 15.191 1.312 15.125 1.382 c
-15.066 1.459 15.037 1.551 15.037 1.661 c
-15.037 1.779 15.066 1.871 15.125 1.941 c
-15.191 2.018 15.287 2.058 15.405 2.058 c
-15.529 2.058 15.625 2.018 15.684 1.941 c
-15.742 1.86 15.771 1.768 15.771 1.661 c
-17.595 1.573 m
-17.595 0.618 l
-18.197 0.618 l
-18.197 0.088 l
-17.595 0.088 l
-17.595 -2.381 l
-17.595 -2.539 17.616 -2.657 17.668 -2.734 c
-17.726 -2.815 17.815 -2.851 17.932 -2.851 c
-18.021 -2.851 18.109 -2.836 18.197 -2.807 c
-18.197 -3.366 l
-18.05 -3.414 17.896 -3.439 17.741 -3.439 c
-17.485 -3.439 17.29 -3.347 17.153 -3.16 c
-17.014 -2.977 16.947 -2.715 16.947 -2.381 c
-16.947 0.088 l
-16.345 0.088 l
-16.345 0.618 l
-16.947 0.618 l
-16.947 1.573 l
-h
-18.756 -1.19 m
-18.756 -0.613 18.892 -0.158 19.168 0.177 c
-19.45 0.518 19.821 0.691 20.284 0.691 c
-20.743 0.691 21.111 0.522 21.387 0.192 c
-21.67 -0.132 21.817 -0.58 21.828 -1.146 c
-21.828 -1.572 l
-21.828 -2.142 21.684 -2.597 21.402 -2.94 c
-21.126 -3.274 20.758 -3.439 20.299 -3.439 c
-19.836 -3.439 19.465 -3.278 19.182 -2.954 c
-18.906 -2.624 18.763 -2.183 18.756 -1.631 c
-h
-19.403 -1.572 m
-19.403 -1.976 19.48 -2.293 19.638 -2.528 c
-19.803 -2.763 20.024 -2.881 20.299 -2.881 c
-20.865 -2.881 21.159 -2.469 21.181 -1.646 c
-21.181 -1.19 l
-21.181 -0.789 21.096 -0.47 20.931 -0.235 c
-20.773 0.008 20.556 0.133 20.284 0.133 c
-20.02 0.133 19.803 0.008 19.638 -0.235 c
-19.48 -0.47 19.403 -0.789 19.403 -1.19 c
-h
-24.312 0 m
-24.224 0.019 24.124 0.03 24.018 0.03 c
-23.683 0.03 23.448 -0.154 23.312 -0.514 c
-23.312 -3.366 l
-22.665 -3.366 l
-22.665 0.618 l
-23.297 0.618 l
-23.312 0.206 l
-23.488 0.53 23.731 0.691 24.047 0.691 c
-24.154 0.691 24.242 0.669 24.312 0.632 c
-h
-26.12 -2.278 m
-26.84 0.618 l
-27.531 0.618 l
-26.237 -3.924 l
-26.138 -4.266 25.995 -4.527 25.811 -4.704 c
-25.635 -4.88 25.433 -4.968 25.208 -4.968 c
-25.121 -4.968 25.007 -4.945 24.87 -4.909 c
-24.87 -4.365 l
-25.017 -4.38 l
-25.201 -4.38 25.348 -4.336 25.458 -4.247 c
-25.565 -4.159 25.653 -4.002 25.723 -3.777 c
-25.84 -3.336 l
-24.679 0.618 l
-25.385 0.618 l
-h
-27.81 -3.013 m
-27.81 -2.896 27.843 -2.8 27.914 -2.719 c
-27.979 -2.642 28.082 -2.601 28.222 -2.601 c
-28.369 -2.601 28.475 -2.642 28.545 -2.719 c
-28.622 -2.8 28.662 -2.896 28.662 -3.013 c
-28.662 -3.123 28.622 -3.215 28.545 -3.293 c
-28.475 -3.37 28.369 -3.41 28.222 -3.41 c
-28.082 -3.41 27.979 -3.37 27.914 -3.293 c
-27.843 -3.215 27.81 -3.123 27.81 -3.013 c
-f
-Q
-0.113 0.082 0.09 0 k
-35.668 221.732 238.665 -12.898 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 40.8563 214.894 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.647 -0.243 -0.775 -0.367 -0.882 c
--0.496 -0.992 -0.658 -1.081 -0.852 -1.147 c
--1.051 -1.205 -1.278 -1.243 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.162 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.927 c
--3.127 -0.819 -3.23 -0.691 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.214 -3.484 -0.015 c
--2.66 0.132 l
--2.642 0.033 -2.616 -0.059 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.302 -2.454 -0.368 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.683 -1.992 0.691 -1.999 0.691 c
--2.167 0.727 -2.329 0.771 -2.484 0.823 c
--2.642 0.881 -2.786 0.959 -2.91 1.058 c
--3.039 1.153 -3.142 1.278 -3.219 1.425 c
--3.289 1.573 -3.322 1.756 -3.322 1.984 c
--3.322 2.179 -3.289 2.344 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.836 c
--2.8 2.932 -2.645 3.002 -2.469 3.042 c
--2.293 3.09 -2.102 3.119 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.119 -1.128 3.09 -0.97 3.042 c
--0.804 2.991 -0.669 2.917 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.202 2.344 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.252 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.352 c
--1.294 1.311 -1.117 1.264 -0.941 1.205 c
--0.756 1.147 -0.595 1.066 -0.455 0.97 c
--0.32 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.454 c
--2.26 2.425 -2.319 2.385 -2.366 2.337 c
--2.406 2.296 -2.437 2.248 -2.454 2.19 c
--2.477 2.131 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.778 c
--2.41 1.72 -2.373 1.668 -2.322 1.631 c
--2.263 1.591 -2.201 1.558 -2.131 1.529 c
--2.065 1.5 -1.984 1.469 -1.896 1.44 c
-h
--0.837 -0.015 m
--0.837 0.091 -0.86 0.176 -0.897 0.235 c
--0.926 0.301 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.529 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.53 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.015 c
-6.402 -2.66 m
-6.185 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.396 c
-5.284 -2.315 5.185 -2.22 5.108 -2.103 c
-5.039 -1.985 4.991 -1.856 4.961 -1.72 c
-5.858 -1.617 l
-5.895 -1.753 5.964 -1.86 6.064 -1.941 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.058 6.681 -2.028 c
-6.758 -1.999 6.828 -1.945 6.887 -1.867 c
-6.945 -1.797 6.99 -1.706 7.019 -1.588 c
-7.056 -1.47 7.078 -1.323 7.078 -1.147 c
-7.078 -0.956 l
-7.078 -0.89 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.073 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.215 -0.897 5.108 -0.75 c
-5.009 -0.595 4.935 -0.412 4.888 -0.206 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.771 4.836 1.018 4.888 1.234 c
-4.946 1.448 5.027 1.631 5.137 1.778 c
-5.245 1.932 5.376 2.05 5.534 2.131 c
-5.689 2.219 5.876 2.263 6.093 2.263 c
-6.188 2.263 6.288 2.252 6.387 2.234 c
-6.483 2.212 6.571 2.179 6.652 2.131 c
-6.739 2.08 6.817 2.017 6.887 1.94 c
-6.964 1.859 7.026 1.768 7.078 1.66 c
-7.092 1.66 l
-7.092 1.808 l
-7.1 1.866 7.107 1.918 7.107 1.97 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.152 2.219 c
-8.004 2.219 l
-7.993 2.138 7.982 2.028 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.162 l
-7.975 -1.415 7.938 -1.635 7.871 -1.823 c
-7.802 -2.007 7.699 -2.161 7.563 -2.278 c
-7.423 -2.404 7.258 -2.499 7.063 -2.558 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.529 m
-7.092 0.742 7.067 0.918 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.5 6.729 1.558 6.652 1.587 c
-6.571 1.624 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.62 6.137 1.573 c
-6.056 1.532 5.99 1.462 5.931 1.367 c
-5.88 1.278 5.835 1.161 5.799 1.014 c
-5.77 0.874 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.339 c
-6.049 -0.515 6.211 -0.603 6.417 -0.603 c
-6.483 -0.603 6.556 -0.588 6.637 -0.559 c
-6.725 -0.522 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.177 7.019 -0.029 c
-7.067 0.118 7.092 0.301 7.092 0.529 c
-11.036 -0.647 m
-12.168 -0.647 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.647 l
-10.124 -0.647 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.219 l
-11.036 2.219 l
-h
-10.124 3.513 0.912 -0.676 re
-10.124 2.836 m
-13.6 1.602 m
-13.057 1.602 l
-13.057 2.219 l
-13.644 2.219 l
-13.924 3.116 l
-14.497 3.116 l
-14.497 2.219 l
-15.732 2.219 l
-15.732 1.602 l
-14.497 1.602 l
-14.497 -0.103 l
-14.497 -0.324 l
-14.504 -0.393 14.527 -0.456 14.556 -0.515 c
-14.593 -0.566 14.648 -0.611 14.718 -0.647 c
-14.795 -0.676 14.909 -0.691 15.056 -0.691 c
-15.192 -0.691 15.327 -0.688 15.468 -0.676 c
-15.603 -0.658 15.736 -0.632 15.865 -0.603 c
-15.865 -1.205 l
-15.784 -1.216 15.707 -1.231 15.629 -1.249 c
-15.549 -1.261 15.471 -1.268 15.394 -1.279 c
-15.313 -1.286 15.225 -1.294 15.129 -1.294 c
-15.041 -1.301 14.942 -1.309 14.835 -1.309 c
-14.648 -1.309 14.486 -1.294 14.35 -1.264 c
-14.221 -1.228 14.107 -1.183 14.012 -1.132 c
-13.924 -1.085 13.85 -1.025 13.791 -0.956 c
-13.733 -0.879 13.689 -0.802 13.66 -0.721 c
-13.63 -0.632 13.608 -0.544 13.6 -0.456 c
-13.59 -0.36 13.586 -0.264 13.586 -0.177 c
-h
-21.986 2.219 m
-21.994 2.198 22.001 2.165 22.001 2.117 c
-22.009 2.076 22.016 2.028 22.016 1.97 c
-22.023 1.918 22.03 1.866 22.03 1.808 c
-22.03 1.646 l
-22.045 1.646 l
-22.104 1.764 22.17 1.859 22.251 1.94 c
-22.328 2.017 22.413 2.08 22.501 2.131 c
-22.589 2.19 22.677 2.227 22.765 2.248 c
-22.861 2.267 22.961 2.278 23.059 2.278 c
-23.265 2.278 23.445 2.234 23.603 2.146 c
-23.757 2.057 23.886 1.929 23.985 1.764 c
-24.092 1.606 24.169 1.415 24.22 1.19 c
-24.28 0.974 24.309 0.738 24.309 0.484 c
-24.309 0.22 24.28 -0.026 24.22 -0.25 c
-24.169 -0.467 24.092 -0.658 23.985 -0.823 c
-23.886 -0.981 23.754 -1.103 23.589 -1.191 c
-23.431 -1.279 23.243 -1.323 23.03 -1.323 c
-22.931 -1.323 22.832 -1.312 22.736 -1.294 c
-22.637 -1.272 22.545 -1.243 22.456 -1.191 c
-22.375 -1.143 22.298 -1.081 22.221 -1 c
-22.152 -0.923 22.093 -0.831 22.045 -0.721 c
-22.03 -0.721 l
-22.03 -0.809 l
-22.038 -0.849 22.045 -0.897 22.045 -0.956 c
-22.045 -1.118 l
-22.045 -1.294 l
-22.045 -2.631 l
-21.134 -2.631 l
-21.134 1.455 l
-21.134 1.62 21.126 1.768 21.119 1.896 c
-21.119 2.219 l
-h
-22.03 0.455 m
-22.03 0.228 22.049 0.037 22.089 -0.118 c
-22.137 -0.264 22.192 -0.382 22.251 -0.47 c
-22.317 -0.559 22.391 -0.625 22.471 -0.661 c
-22.549 -0.702 22.626 -0.721 22.707 -0.721 c
-22.803 -0.721 22.89 -0.698 22.971 -0.647 c
-23.059 -0.599 23.125 -0.53 23.177 -0.441 c
-23.235 -0.345 23.28 -0.221 23.31 -0.073 c
-23.346 0.081 23.368 0.268 23.368 0.484 c
-23.368 0.874 23.31 1.168 23.192 1.367 c
-23.081 1.562 22.927 1.66 22.722 1.66 c
-22.641 1.66 22.564 1.639 22.486 1.602 c
-22.406 1.562 22.332 1.5 22.265 1.411 c
-22.196 1.323 22.137 1.198 22.089 1.043 c
-22.049 0.885 22.03 0.691 22.03 0.455 c
-26.061 2.219 m
-26.061 0.264 l
-26.061 0.125 26.069 0 26.091 -0.118 c
-26.109 -0.228 26.142 -0.32 26.194 -0.397 c
-26.242 -0.478 26.3 -0.54 26.371 -0.588 c
-26.437 -0.628 26.521 -0.647 26.62 -0.647 c
-26.709 -0.647 26.789 -0.628 26.87 -0.588 c
-26.959 -0.54 27.032 -0.47 27.09 -0.382 c
-27.15 -0.287 27.194 -0.177 27.223 -0.059 c
-27.26 0.066 27.281 0.206 27.281 0.353 c
-27.281 2.219 l
-28.178 2.219 l
-28.178 -0.485 l
-28.178 -0.721 l
-28.185 -0.802 28.193 -0.879 28.193 -0.956 c
-28.193 -1.147 l
-28.201 -1.199 28.208 -1.235 28.208 -1.264 c
-27.355 -1.264 l
-27.344 -1.235 27.333 -1.199 27.326 -1.147 c
-27.326 -0.956 l
-27.326 -0.89 27.318 -0.819 27.312 -0.75 c
-27.312 -0.574 l
-27.296 -0.574 l
-27.179 -0.838 27.025 -1.029 26.841 -1.147 c
-26.664 -1.264 26.462 -1.323 26.238 -1.323 c
-26.032 -1.323 25.86 -1.286 25.724 -1.22 c
-25.584 -1.154 25.473 -1.058 25.386 -0.941 c
-25.305 -0.823 25.246 -0.688 25.209 -0.53 c
-25.18 -0.364 25.165 -0.187 25.165 0 c
-25.165 2.219 l
-h
-31.343 -0.647 m
-32.474 -0.647 l
-32.474 -1.264 l
-29.167 -1.264 l
-29.167 -0.647 l
-30.431 -0.647 l
-30.431 2.896 l
-29.505 2.896 l
-29.505 3.513 l
-31.343 3.513 l
-h
-35.407 -0.647 m
-36.538 -0.647 l
-36.538 -1.264 l
-33.232 -1.264 l
-33.232 -0.647 l
-34.495 -0.647 l
-34.495 2.896 l
-33.569 2.896 l
-33.569 3.513 l
-35.407 3.513 l
-h
-42.175 -2.631 m
-42.175 3.513 l
-44.101 3.513 l
-44.101 2.896 l
-43.028 2.896 l
-43.028 -2.014 l
-44.101 -2.014 l
-44.101 -2.631 l
-h
-48.5 1.469 m
-48.4 1.477 48.298 1.488 48.191 1.5 c
-48.081 1.517 47.96 1.529 47.823 1.529 c
-47.648 1.529 47.489 1.488 47.353 1.411 c
-47.214 1.341 47.096 1.242 47 1.117 c
-46.912 0.989 46.842 0.841 46.794 0.676 c
-46.754 0.507 46.736 0.33 46.736 0.147 c
-46.736 -1.264 l
-45.839 -1.264 l
-45.839 0.985 l
-45.839 1.109 45.828 1.234 45.81 1.352 c
-45.799 1.477 45.784 1.595 45.766 1.705 c
-45.755 1.822 45.74 1.918 45.722 1.999 c
-45.699 2.087 45.681 2.161 45.663 2.219 c
-46.545 2.219 l
-46.552 2.167 46.563 2.117 46.574 2.057 c
-46.593 1.999 46.607 1.932 46.618 1.866 c
-46.637 1.808 46.651 1.741 46.663 1.675 c
-46.67 1.606 46.68 1.543 46.692 1.484 c
-46.707 1.484 l
-46.743 1.602 46.794 1.708 46.854 1.808 c
-46.919 1.903 47 1.988 47.089 2.057 c
-47.177 2.124 47.28 2.179 47.397 2.219 c
-47.522 2.256 47.669 2.278 47.838 2.278 c
-47.964 2.278 48.081 2.271 48.191 2.263 c
-48.309 2.252 48.411 2.238 48.5 2.219 c
-h
-51.106 -1.323 m
-50.848 -1.323 50.62 -1.286 50.414 -1.22 c
-50.208 -1.143 50.032 -1.029 49.886 -0.882 c
-49.738 -0.728 49.62 -0.537 49.533 -0.309 c
-49.452 -0.085 49.415 0.18 49.415 0.484 c
-49.415 0.816 49.459 1.095 49.547 1.323 c
-49.643 1.558 49.772 1.741 49.93 1.881 c
-50.094 2.017 50.282 2.117 50.488 2.175 c
-50.694 2.242 50.903 2.278 51.12 2.278 c
-51.392 2.278 51.627 2.227 51.825 2.131 c
-52.031 2.043 52.197 1.911 52.325 1.735 c
-52.461 1.565 52.56 1.359 52.619 1.117 c
-52.685 0.881 52.722 0.617 52.722 0.324 c
-52.722 0.309 l
-50.356 0.309 l
-50.356 0.162 50.37 0.022 50.4 -0.103 c
-50.437 -0.231 50.491 -0.345 50.561 -0.441 c
-50.628 -0.53 50.712 -0.599 50.811 -0.647 c
-50.907 -0.698 51.021 -0.721 51.149 -0.721 c
-51.303 -0.721 51.443 -0.688 51.561 -0.617 c
-51.686 -0.551 51.774 -0.449 51.825 -0.309 c
-52.664 -0.382 l
-52.633 -0.482 52.579 -0.588 52.502 -0.706 c
-52.421 -0.816 52.318 -0.919 52.193 -1.014 c
-52.076 -1.103 51.921 -1.176 51.737 -1.235 c
-51.561 -1.294 51.347 -1.323 51.106 -1.323 c
-51.106 1.705 m
-51.017 1.705 50.929 1.691 50.84 1.66 c
-50.752 1.631 50.672 1.58 50.605 1.514 c
-50.536 1.444 50.477 1.356 50.429 1.249 c
-50.389 1.139 50.37 1.014 50.37 0.867 c
-51.84 0.867 l
-51.84 1.003 51.814 1.124 51.767 1.234 c
-51.727 1.341 51.671 1.429 51.605 1.5 c
-51.546 1.565 51.473 1.617 51.384 1.646 c
-51.297 1.683 51.201 1.705 51.106 1.705 c
-54.773 -1.264 m
-54.773 0.852 l
-54.773 1.018 54.765 1.153 54.758 1.264 c
-54.747 1.371 54.728 1.455 54.699 1.514 c
-54.677 1.58 54.648 1.631 54.611 1.66 c
-54.582 1.691 54.541 1.705 54.493 1.705 c
-54.435 1.705 54.379 1.675 54.331 1.617 c
-54.291 1.565 54.258 1.492 54.229 1.396 c
-54.2 1.308 54.173 1.194 54.156 1.058 c
-54.144 0.918 54.14 0.768 54.14 0.602 c
-54.14 -1.264 l
-53.391 -1.264 l
-53.391 1.469 l
-53.391 1.705 l
-53.391 1.926 l
-53.391 2.003 53.383 2.065 53.377 2.117 c
-53.377 2.219 l
-54.052 2.219 l
-54.052 2.131 l
-54.052 1.984 l
-54.06 1.926 54.067 1.866 54.067 1.808 c
-54.067 1.646 l
-54.082 1.646 l
-54.1 1.735 54.129 1.812 54.17 1.881 c
-54.206 1.959 54.251 2.028 54.302 2.087 c
-54.361 2.146 54.427 2.19 54.508 2.219 c
-54.585 2.256 54.673 2.278 54.773 2.278 c
-54.956 2.278 55.096 2.223 55.184 2.117 c
-55.28 2.017 55.349 1.859 55.39 1.646 c
-55.405 1.646 l
-55.442 1.741 55.482 1.83 55.522 1.911 c
-55.57 1.988 55.625 2.05 55.684 2.102 c
-55.743 2.161 55.809 2.205 55.889 2.234 c
-55.966 2.263 56.055 2.278 56.155 2.278 c
-56.29 2.278 56.404 2.252 56.492 2.205 c
-56.581 2.153 56.647 2.08 56.698 1.984 c
-56.757 1.885 56.793 1.756 56.816 1.602 c
-56.845 1.455 56.86 1.271 56.86 1.058 c
-56.86 -1.264 l
-56.14 -1.264 l
-56.14 0.852 l
-56.14 1.018 56.132 1.153 56.125 1.264 c
-56.114 1.371 56.095 1.455 56.066 1.514 c
-56.045 1.58 56.014 1.631 55.978 1.66 c
-55.949 1.691 55.908 1.705 55.86 1.705 c
-55.743 1.705 55.648 1.617 55.581 1.44 c
-55.522 1.271 55.493 1.014 55.493 0.661 c
-55.493 -1.264 l
-h
-60.876 0.484 m
-60.876 0.209 60.839 -0.04 60.774 -0.264 c
-60.704 -0.482 60.601 -0.669 60.465 -0.823 c
-60.325 -0.981 60.149 -1.103 59.935 -1.191 c
-59.719 -1.279 59.465 -1.323 59.172 -1.323 c
-58.896 -1.323 58.649 -1.279 58.436 -1.191 c
-58.231 -1.103 58.058 -0.981 57.922 -0.823 c
-57.782 -0.669 57.68 -0.482 57.613 -0.264 c
-57.543 -0.04 57.51 0.209 57.51 0.484 c
-57.51 0.738 57.539 0.974 57.599 1.19 c
-57.665 1.415 57.768 1.606 57.907 1.764 c
-58.043 1.929 58.22 2.057 58.436 2.146 c
-58.649 2.234 58.906 2.278 59.201 2.278 c
-59.513 2.278 59.774 2.234 59.98 2.146 c
-60.193 2.057 60.365 1.929 60.494 1.764 c
-60.63 1.606 60.729 1.415 60.788 1.19 c
-60.847 0.974 60.876 0.738 60.876 0.484 c
-59.921 0.484 m
-59.921 0.691 59.906 0.867 59.877 1.014 c
-59.855 1.161 59.818 1.282 59.76 1.382 c
-59.7 1.477 59.627 1.547 59.538 1.587 c
-59.451 1.635 59.34 1.66 59.216 1.66 c
-58.95 1.66 58.76 1.562 58.642 1.367 c
-58.524 1.18 58.466 0.885 58.466 0.484 c
-58.466 0.062 58.524 -0.243 58.642 -0.426 c
-58.76 -0.614 58.936 -0.706 59.172 -0.706 c
-59.297 -0.706 59.411 -0.688 59.509 -0.647 c
-59.605 -0.599 59.686 -0.526 59.744 -0.426 c
-59.81 -0.331 59.855 -0.206 59.877 -0.059 c
-59.906 0.088 59.921 0.268 59.921 0.484 c
-62.335 1.602 m
-61.792 1.602 l
-61.792 2.219 l
-62.379 2.219 l
-62.659 3.116 l
-63.232 3.116 l
-63.232 2.219 l
-64.467 2.219 l
-64.467 1.602 l
-63.232 1.602 l
-63.232 -0.103 l
-63.232 -0.324 l
-63.239 -0.393 63.261 -0.456 63.291 -0.515 c
-63.328 -0.566 63.382 -0.611 63.452 -0.647 c
-63.53 -0.676 63.644 -0.691 63.791 -0.691 c
-63.926 -0.691 64.062 -0.688 64.202 -0.676 c
-64.338 -0.658 64.471 -0.632 64.599 -0.603 c
-64.599 -1.205 l
-64.518 -1.216 64.441 -1.231 64.364 -1.249 c
-64.283 -1.261 64.205 -1.268 64.128 -1.279 c
-64.047 -1.286 63.96 -1.294 63.864 -1.294 c
-63.776 -1.301 63.677 -1.309 63.57 -1.309 c
-63.382 -1.309 63.221 -1.294 63.085 -1.264 c
-62.956 -1.228 62.842 -1.183 62.746 -1.132 c
-62.659 -1.085 62.586 -1.025 62.526 -0.956 c
-62.468 -0.879 62.424 -0.802 62.395 -0.721 c
-62.364 -0.632 62.343 -0.544 62.335 -0.456 c
-62.324 -0.36 62.32 -0.264 62.32 -0.177 c
-h
-67.351 -1.323 m
-67.094 -1.323 66.866 -1.286 66.661 -1.22 c
-66.455 -1.143 66.278 -1.029 66.131 -0.882 c
-65.984 -0.728 65.867 -0.537 65.778 -0.309 c
-65.697 -0.085 65.661 0.18 65.661 0.484 c
-65.661 0.816 65.705 1.095 65.793 1.323 c
-65.888 1.558 66.017 1.741 66.175 1.881 c
-66.341 2.017 66.528 2.117 66.734 2.175 c
-66.94 2.242 67.149 2.278 67.366 2.278 c
-67.638 2.278 67.873 2.227 68.072 2.131 c
-68.277 2.043 68.443 1.911 68.571 1.735 c
-68.707 1.565 68.807 1.359 68.865 1.117 c
-68.932 0.881 68.968 0.617 68.968 0.324 c
-68.968 0.309 l
-66.602 0.309 l
-66.602 0.162 66.617 0.022 66.646 -0.103 c
-66.682 -0.231 66.738 -0.345 66.808 -0.441 c
-66.873 -0.53 66.958 -0.599 67.058 -0.647 c
-67.153 -0.698 67.267 -0.721 67.396 -0.721 c
-67.55 -0.721 67.689 -0.688 67.807 -0.617 c
-67.932 -0.551 68.02 -0.449 68.072 -0.309 c
-68.909 -0.382 l
-68.88 -0.482 68.824 -0.588 68.747 -0.706 c
-68.666 -0.816 68.564 -0.919 68.439 -1.014 c
-68.321 -1.103 68.167 -1.176 67.983 -1.235 c
-67.807 -1.294 67.594 -1.323 67.351 -1.323 c
-67.351 1.705 m
-67.263 1.705 67.175 1.691 67.087 1.66 c
-66.999 1.631 66.918 1.58 66.852 1.514 c
-66.782 1.444 66.723 1.356 66.675 1.249 c
-66.634 1.139 66.617 1.014 66.617 0.867 c
-68.086 0.867 l
-68.086 1.003 68.061 1.124 68.013 1.234 c
-67.972 1.341 67.918 1.429 67.851 1.5 c
-67.792 1.565 67.719 1.617 67.631 1.646 c
-67.542 1.683 67.447 1.705 67.351 1.705 c
-70.221 -2.631 m
-70.221 -2.014 l
-71.294 -2.014 l
-71.294 2.896 l
-70.221 2.896 l
-70.221 3.513 l
-72.147 3.513 l
-72.147 -2.631 l
-h
-f
-Q
-q 1 0 0 1 46.321 201.1066 cm
-0 0 m
--1.808 0 l
--1.808 -2.367 l
--2.484 -2.367 l
--2.484 2.983 l
-0.309 2.983 l
-0.309 2.41 l
--1.808 2.41 l
--1.808 0.573 l
-0 0.573 l
-h
-2.396 -2.44 m
-1.897 -2.44 1.514 -2.294 1.249 -1.999 c
-0.985 -1.706 0.852 -1.272 0.852 -0.691 c
-0.852 -0.221 l
-0.852 0.374 0.977 0.841 1.234 1.176 c
-1.5 1.517 1.859 1.69 2.323 1.69 c
-2.782 1.69 3.123 1.535 3.351 1.234 c
-3.586 0.941 3.707 0.477 3.719 -0.148 c
-3.719 -0.574 l
-1.5 -0.574 l
-1.5 -0.662 l
-1.5 -1.096 1.577 -1.408 1.735 -1.603 c
-1.899 -1.79 2.132 -1.881 2.425 -1.881 c
-2.62 -1.881 2.793 -1.849 2.94 -1.779 c
-3.087 -1.702 3.223 -1.584 3.351 -1.426 c
-3.69 -1.838 l
-3.403 -2.242 2.973 -2.44 2.396 -2.44 c
-2.323 1.132 m
-2.047 1.132 1.845 1.036 1.72 0.852 c
-1.591 0.665 1.517 0.374 1.5 -0.015 c
-3.072 -0.015 l
-3.072 0.073 l
-3.05 0.455 2.984 0.723 2.866 0.881 c
-2.749 1.047 2.564 1.132 2.323 1.132 c
-5.35 2.572 m
-5.35 1.616 l
-5.953 1.616 l
-5.953 1.087 l
-5.35 1.087 l
-5.35 -1.382 l
-5.35 -1.54 5.373 -1.658 5.424 -1.735 c
-5.483 -1.816 5.571 -1.852 5.689 -1.852 c
-5.776 -1.852 5.865 -1.838 5.953 -1.808 c
-5.953 -2.367 l
-5.806 -2.415 5.652 -2.44 5.498 -2.44 c
-5.24 -2.44 5.045 -2.349 4.91 -2.161 c
-4.77 -1.977 4.704 -1.717 4.704 -1.382 c
-4.704 1.087 l
-4.101 1.087 l
-4.101 1.616 l
-4.704 1.616 l
-4.704 2.572 l
-h
-8.099 -1.881 m
-8.312 -1.881 8.485 -1.819 8.613 -1.691 c
-8.75 -1.555 8.823 -1.364 8.834 -1.118 c
-9.452 -1.118 l
-9.429 -1.5 9.294 -1.819 9.04 -2.073 c
-8.783 -2.319 8.47 -2.44 8.099 -2.44 c
-7.607 -2.44 7.231 -2.29 6.967 -1.985 c
-6.71 -1.673 6.585 -1.206 6.585 -0.588 c
-6.585 -0.148 l
-6.585 0.448 6.71 0.903 6.967 1.219 c
-7.231 1.532 7.607 1.69 8.099 1.69 c
-8.5 1.69 8.819 1.558 9.055 1.294 c
-9.297 1.036 9.429 0.69 9.452 0.249 c
-8.834 0.249 l
-8.812 0.544 8.739 0.764 8.613 0.911 c
-8.496 1.058 8.324 1.132 8.099 1.132 c
-7.805 1.132 7.588 1.032 7.453 0.837 c
-7.312 0.65 7.239 0.341 7.231 -0.088 c
-7.231 -0.603 l
-7.231 -1.073 7.298 -1.408 7.437 -1.603 c
-7.584 -1.79 7.805 -1.881 8.099 -1.881 c
-10.848 1.205 m
-11.102 1.529 11.421 1.69 11.803 1.69 c
-12.509 1.69 12.866 1.219 12.876 0.278 c
-12.876 -2.367 l
-12.23 -2.367 l
-12.23 0.249 l
-12.23 0.562 12.174 0.783 12.068 0.911 c
-11.958 1.036 11.803 1.102 11.597 1.102 c
-11.439 1.102 11.293 1.047 11.156 0.941 c
-11.028 0.83 10.925 0.694 10.848 0.529 c
-10.848 -2.367 l
-10.201 -2.367 l
-10.201 3.278 l
-10.848 3.278 l
-h
-16.933 -1.881 m
-17.146 -1.881 17.319 -1.819 17.448 -1.691 c
-17.583 -1.555 17.657 -1.364 17.668 -1.118 c
-18.285 -1.118 l
-18.264 -1.5 18.127 -1.819 17.874 -2.073 c
-17.616 -2.319 17.304 -2.44 16.933 -2.44 c
-16.44 -2.44 16.066 -2.29 15.802 -1.985 c
-15.544 -1.673 15.419 -1.206 15.419 -0.588 c
-15.419 -0.148 l
-15.419 0.448 15.544 0.903 15.802 1.219 c
-16.066 1.532 16.44 1.69 16.933 1.69 c
-17.334 1.69 17.654 1.558 17.889 1.294 c
-18.131 1.036 18.264 0.69 18.285 0.249 c
-17.668 0.249 l
-17.646 0.544 17.573 0.764 17.448 0.911 c
-17.33 1.058 17.157 1.132 16.933 1.132 c
-16.639 1.132 16.422 1.032 16.286 0.837 c
-16.147 0.65 16.073 0.341 16.066 -0.088 c
-16.066 -0.603 l
-16.066 -1.073 16.132 -1.408 16.272 -1.603 c
-16.419 -1.79 16.639 -1.881 16.933 -1.881 c
-19.682 1.205 m
-19.935 1.529 20.255 1.69 20.637 1.69 c
-21.343 1.69 21.699 1.219 21.71 0.278 c
-21.71 -2.367 l
-21.063 -2.367 l
-21.063 0.249 l
-21.063 0.562 21.009 0.783 20.902 0.911 c
-20.791 1.036 20.637 1.102 20.432 1.102 c
-20.274 1.102 20.126 1.047 19.991 0.941 c
-19.862 0.83 19.759 0.694 19.682 0.529 c
-19.682 -2.367 l
-19.035 -2.367 l
-19.035 3.278 l
-19.682 3.278 l
-h
-24.709 -2.367 m
-24.669 -2.278 24.643 -2.132 24.635 -1.926 c
-24.4 -2.272 24.106 -2.44 23.754 -2.44 c
-23.39 -2.44 23.106 -2.345 22.901 -2.147 c
-22.703 -1.941 22.607 -1.654 22.607 -1.279 c
-22.607 -0.879 22.743 -0.559 23.019 -0.324 c
-23.291 -0.081 23.665 0.043 24.136 0.043 c
-24.621 0.043 l
-24.621 0.47 l
-24.621 0.706 24.566 0.87 24.459 0.97 c
-24.349 1.076 24.187 1.132 23.974 1.132 c
-23.775 1.132 23.614 1.072 23.489 0.955 c
-23.372 0.837 23.312 0.69 23.312 0.514 c
-22.666 0.514 l
-22.666 0.708 22.725 0.9 22.842 1.087 c
-22.967 1.271 23.129 1.418 23.328 1.529 c
-23.534 1.635 23.761 1.69 24.018 1.69 c
-24.419 1.69 24.724 1.587 24.93 1.381 c
-25.142 1.176 25.257 0.881 25.267 0.5 c
-25.267 -1.515 l
-25.267 -1.819 25.304 -2.084 25.385 -2.309 c
-25.385 -2.367 l
-h
-23.842 -1.852 m
-24.007 -1.852 24.158 -1.808 24.297 -1.721 c
-24.444 -1.632 24.551 -1.522 24.621 -1.382 c
-24.621 -0.441 l
-24.253 -0.441 l
-23.937 -0.441 23.694 -0.511 23.518 -0.647 c
-23.342 -0.776 23.254 -0.963 23.254 -1.206 c
-23.254 -1.434 23.298 -1.599 23.386 -1.706 c
-23.474 -1.804 23.625 -1.852 23.842 -1.852 c
-26.884 1.616 m
-26.9 1.176 l
-27.153 1.517 27.476 1.69 27.869 1.69 c
-28.575 1.69 28.932 1.219 28.943 0.278 c
-28.943 -2.367 l
-28.296 -2.367 l
-28.296 0.249 l
-28.296 0.562 28.24 0.783 28.134 0.911 c
-28.024 1.036 27.869 1.102 27.663 1.102 c
-27.505 1.102 27.359 1.047 27.222 0.941 c
-27.094 0.83 26.991 0.694 26.914 0.529 c
-26.914 -2.367 l
-26.267 -2.367 l
-26.267 1.616 l
-h
-29.78 -0.192 m
-29.78 0.426 29.89 0.889 30.119 1.205 c
-30.343 1.529 30.677 1.69 31.118 1.69 c
-31.519 1.69 31.823 1.514 32.029 1.161 c
-32.074 1.616 l
-32.662 1.616 l
-32.662 -2.411 l
-32.662 -2.899 32.533 -3.278 32.279 -3.543 c
-32.022 -3.807 31.669 -3.94 31.22 -3.94 c
-31.022 -3.94 30.802 -3.888 30.559 -3.793 c
-30.313 -3.693 30.133 -3.572 30.015 -3.425 c
-30.28 -2.984 l
-30.545 -3.249 30.842 -3.381 31.176 -3.381 c
-31.713 -3.381 31.989 -3.088 32 -2.5 c
-32 -1.97 l
-31.794 -2.286 31.492 -2.44 31.103 -2.44 c
-30.692 -2.44 30.368 -2.29 30.133 -1.985 c
-29.905 -1.673 29.788 -1.22 29.78 -0.632 c
-h
-30.441 -0.574 m
-30.441 -1.015 30.504 -1.345 30.632 -1.559 c
-30.757 -1.764 30.975 -1.867 31.28 -1.867 c
-31.603 -1.867 31.842 -1.702 32 -1.368 c
-32 0.617 l
-31.831 0.941 31.592 1.102 31.28 1.102 c
-30.985 1.102 30.769 0.999 30.632 0.793 c
-30.504 0.588 30.441 0.264 30.441 -0.177 c
-h
-35.043 -2.44 m
-34.543 -2.44 34.16 -2.294 33.896 -1.999 c
-33.631 -1.706 33.499 -1.272 33.499 -0.691 c
-33.499 -0.221 l
-33.499 0.374 33.624 0.841 33.882 1.176 c
-34.146 1.517 34.506 1.69 34.969 1.69 c
-35.428 1.69 35.77 1.535 35.998 1.234 c
-36.234 0.941 36.354 0.477 36.365 -0.148 c
-36.365 -0.574 l
-34.146 -0.574 l
-34.146 -0.662 l
-34.146 -1.096 34.223 -1.408 34.381 -1.603 c
-34.547 -1.79 34.778 -1.881 35.072 -1.881 c
-35.266 -1.881 35.44 -1.849 35.586 -1.779 c
-35.733 -1.702 35.869 -1.584 35.998 -1.426 c
-36.336 -1.838 l
-36.049 -2.242 35.619 -2.44 35.043 -2.44 c
-34.969 1.132 m
-34.694 1.132 34.491 1.036 34.366 0.852 c
-34.237 0.665 34.164 0.374 34.146 -0.015 c
-35.719 -0.015 l
-35.719 0.073 l
-35.696 0.455 35.631 0.723 35.513 0.881 c
-35.395 1.047 35.212 1.132 34.969 1.132 c
-39.085 -1.353 m
-39.085 -1.206 39.029 -1.085 38.923 -0.985 c
-38.813 -0.89 38.607 -0.772 38.306 -0.632 c
-37.96 -0.485 37.718 -0.364 37.57 -0.265 c
-37.424 -0.158 37.313 -0.04 37.248 0.087 c
-37.177 0.213 37.144 0.371 37.144 0.558 c
-37.144 0.881 37.262 1.15 37.497 1.367 c
-37.732 1.579 38.034 1.69 38.409 1.69 c
-38.79 1.69 39.099 1.576 39.334 1.352 c
-39.569 1.124 39.687 0.837 39.687 0.484 c
-39.041 0.484 l
-39.041 0.661 38.981 0.812 38.864 0.941 c
-38.746 1.065 38.592 1.132 38.409 1.132 c
-38.21 1.132 38.059 1.076 37.953 0.97 c
-37.842 0.87 37.791 0.738 37.791 0.573 c
-37.791 0.444 37.828 0.338 37.909 0.249 c
-37.986 0.168 38.177 0.066 38.482 -0.059 c
-38.96 -0.246 39.291 -0.434 39.467 -0.618 c
-39.643 -0.794 39.731 -1.022 39.731 -1.294 c
-39.731 -1.646 39.606 -1.926 39.364 -2.132 c
-39.129 -2.338 38.813 -2.44 38.424 -2.44 c
-38 -2.44 37.663 -2.323 37.409 -2.087 c
-37.152 -1.845 37.027 -1.54 37.027 -1.176 c
-37.674 -1.176 l
-37.681 -1.405 37.751 -1.58 37.88 -1.706 c
-38.004 -1.823 38.188 -1.881 38.424 -1.881 c
-38.636 -1.881 38.798 -1.834 38.908 -1.735 c
-39.026 -1.64 39.085 -1.511 39.085 -1.353 c
-42.584 -2.367 m
-42.584 1.087 l
-42.054 1.087 l
-42.054 1.616 l
-42.584 1.616 l
-42.584 2.072 l
-42.584 2.472 42.679 2.785 42.877 3.013 c
-43.083 3.237 43.362 3.351 43.715 3.351 c
-43.851 3.351 43.983 3.329 44.111 3.293 c
-44.082 2.748 l
-43.983 2.767 43.884 2.778 43.789 2.778 c
-43.413 2.778 43.23 2.513 43.23 1.984 c
-43.23 1.616 l
-43.906 1.616 l
-43.906 1.087 l
-43.23 1.087 l
-43.23 -2.367 l
-h
-46.316 0.999 m
-46.228 1.018 46.129 1.028 46.023 1.028 c
-45.688 1.028 45.453 0.845 45.317 0.484 c
-45.317 -2.367 l
-44.67 -2.367 l
-44.67 1.616 l
-45.302 1.616 l
-45.317 1.205 l
-45.493 1.529 45.736 1.69 46.052 1.69 c
-46.158 1.69 46.247 1.668 46.316 1.631 c
-h
-46.758 -0.192 m
-46.758 0.386 46.894 0.841 47.169 1.176 c
-47.452 1.517 47.823 1.69 48.286 1.69 c
-48.745 1.69 49.113 1.521 49.389 1.19 c
-49.672 0.866 49.819 0.419 49.83 -0.148 c
-49.83 -0.574 l
-49.83 -1.143 49.686 -1.599 49.404 -1.941 c
-49.128 -2.275 48.76 -2.44 48.301 -2.44 c
-47.838 -2.44 47.467 -2.278 47.184 -1.956 c
-46.908 -1.625 46.765 -1.183 46.758 -0.632 c
-h
-47.404 -0.574 m
-47.404 -0.978 47.482 -1.294 47.639 -1.529 c
-47.805 -1.764 48.026 -1.881 48.301 -1.881 c
-48.867 -1.881 49.161 -1.47 49.183 -0.647 c
-49.183 -0.192 l
-49.183 0.209 49.098 0.529 48.934 0.764 c
-48.775 1.007 48.558 1.132 48.286 1.132 c
-48.022 1.132 47.805 1.007 47.639 0.764 c
-47.482 0.529 47.404 0.209 47.404 -0.192 c
-h
-51.285 1.616 m
-51.299 1.249 l
-51.542 1.543 51.862 1.69 52.255 1.69 c
-52.696 1.69 53.005 1.491 53.181 1.102 c
-53.435 1.491 53.784 1.69 54.224 1.69 c
-54.96 1.69 55.334 1.227 55.357 0.309 c
-55.357 -2.367 l
-54.71 -2.367 l
-54.71 0.249 l
-54.71 0.544 54.655 0.756 54.548 0.897 c
-54.449 1.032 54.276 1.102 54.033 1.102 c
-53.835 1.102 53.674 1.021 53.549 0.866 c
-53.431 0.72 53.362 0.529 53.343 0.294 c
-53.343 -2.367 l
-52.681 -2.367 l
-52.681 0.278 l
-52.681 0.826 52.461 1.102 52.02 1.102 c
-51.685 1.102 51.45 0.941 51.315 0.617 c
-51.315 -2.367 l
-50.667 -2.367 l
-50.667 1.616 l
-h
-58.899 2.572 m
-58.899 1.616 l
-59.502 1.616 l
-59.502 1.087 l
-58.899 1.087 l
-58.899 -1.382 l
-58.899 -1.54 58.921 -1.658 58.972 -1.735 c
-59.031 -1.816 59.12 -1.852 59.237 -1.852 c
-59.325 -1.852 59.413 -1.838 59.502 -1.808 c
-59.502 -2.367 l
-59.355 -2.415 59.201 -2.44 59.046 -2.44 c
-58.789 -2.44 58.594 -2.349 58.458 -2.161 c
-58.318 -1.977 58.252 -1.717 58.252 -1.382 c
-58.252 1.087 l
-57.649 1.087 l
-57.649 1.616 l
-58.252 1.616 l
-58.252 2.572 l
-h
-60.913 1.205 m
-61.166 1.529 61.486 1.69 61.869 1.69 c
-62.574 1.69 62.93 1.219 62.941 0.278 c
-62.941 -2.367 l
-62.295 -2.367 l
-62.295 0.249 l
-62.295 0.562 62.239 0.783 62.133 0.911 c
-62.023 1.036 61.869 1.102 61.663 1.102 c
-61.505 1.102 61.358 1.047 61.221 0.941 c
-61.093 0.83 60.99 0.694 60.913 0.529 c
-60.913 -2.367 l
-60.266 -2.367 l
-60.266 3.278 l
-60.913 3.278 l
-h
-65.322 -2.44 m
-64.823 -2.44 64.441 -2.294 64.176 -1.999 c
-63.911 -1.706 63.779 -1.272 63.779 -0.691 c
-63.779 -0.221 l
-63.779 0.374 63.904 0.841 64.161 1.176 c
-64.426 1.517 64.786 1.69 65.249 1.69 c
-65.709 1.69 66.05 1.535 66.278 1.234 c
-66.513 0.941 66.634 0.477 66.646 -0.148 c
-66.646 -0.574 l
-64.426 -0.574 l
-64.426 -0.662 l
-64.426 -1.096 64.503 -1.408 64.661 -1.603 c
-64.826 -1.79 65.058 -1.881 65.352 -1.881 c
-65.547 -1.881 65.719 -1.849 65.867 -1.779 c
-66.014 -1.702 66.149 -1.584 66.278 -1.426 c
-66.616 -1.838 l
-66.33 -2.242 65.9 -2.44 65.322 -2.44 c
-65.249 1.132 m
-64.973 1.132 64.771 1.036 64.647 0.852 c
-64.518 0.665 64.444 0.374 64.426 -0.015 c
-65.999 -0.015 l
-65.999 0.073 l
-65.977 0.455 65.91 0.723 65.792 0.881 c
-65.675 1.047 65.491 1.132 65.249 1.132 c
-f
-Q
-q 1 0 0 1 117.3177 201.7086 cm
-0 0 m
--0.339 0.029 l
--0.625 0.029 -0.817 -0.095 -0.912 -0.338 c
--0.912 -2.969 l
--1.956 -2.969 l
--1.956 1.014 l
--0.985 1.014 l
--0.956 0.574 l
--0.79 0.915 -0.559 1.088 -0.265 1.088 c
--0.148 1.088 -0.055 1.066 0.014 1.029 c
-h
-2.072 -3.042 m
-1.543 -3.042 1.124 -2.888 0.823 -2.572 c
-0.529 -2.248 0.382 -1.789 0.382 -1.19 c
-0.382 -0.881 l
-0.382 -0.257 0.517 0.228 0.793 0.574 c
-1.065 0.915 1.458 1.088 1.969 1.088 c
-2.469 1.088 2.84 0.927 3.087 0.603 c
-3.34 0.279 3.472 -0.198 3.484 -0.823 c
-3.484 -1.323 l
-1.411 -1.323 l
-1.429 -1.617 1.492 -1.833 1.602 -1.97 c
-1.72 -2.109 1.899 -2.175 2.146 -2.175 c
-2.487 -2.175 2.778 -2.057 3.013 -1.822 c
-3.424 -2.454 l
-3.296 -2.631 3.108 -2.774 2.866 -2.881 c
-2.62 -2.988 2.356 -3.042 2.072 -3.042 c
-1.425 -0.602 m
-2.454 -0.602 l
-2.454 -0.5 l
-2.454 -0.264 2.414 -0.088 2.337 0.029 c
-2.267 0.154 2.138 0.221 1.955 0.221 c
-1.778 0.221 1.646 0.151 1.558 0.015 c
-1.477 -0.114 1.433 -0.32 1.425 -0.602 c
-5.041 1.014 m
-5.071 0.647 l
-5.306 0.941 5.614 1.088 5.997 1.088 c
-6.397 1.088 6.676 0.904 6.834 0.544 c
-7.07 0.904 7.397 1.088 7.819 1.088 c
-8.514 1.088 8.866 0.603 8.878 -0.367 c
-8.878 -2.969 l
-7.849 -2.969 l
-7.849 -0.426 l
-7.849 -0.202 7.812 -0.04 7.746 0.059 c
-7.687 0.154 7.577 0.206 7.422 0.206 c
-7.224 0.206 7.085 0.088 6.996 -0.147 c
-6.996 -2.969 l
-5.953 -2.969 l
-5.953 -0.441 l
-5.953 -0.206 5.924 -0.04 5.865 0.059 c
-5.805 0.154 5.695 0.206 5.541 0.206 c
-5.365 0.206 5.221 0.11 5.115 -0.073 c
-5.115 -2.969 l
-4.072 -2.969 l
-4.072 1.014 l
-h
-9.539 -0.852 m
-9.539 -0.246 9.679 0.228 9.965 0.574 c
-10.248 0.915 10.642 1.088 11.141 1.088 c
-11.648 1.088 12.045 0.915 12.332 0.574 c
-12.615 0.228 12.758 -0.246 12.758 -0.852 c
-12.758 -1.117 l
-12.758 -1.716 12.615 -2.186 12.332 -2.528 c
-12.045 -2.874 11.648 -3.042 11.141 -3.042 c
-10.63 -3.042 10.234 -2.874 9.951 -2.528 c
-9.676 -2.186 9.539 -1.712 9.539 -1.103 c
-h
-10.583 -1.117 m
-10.583 -1.822 10.767 -2.175 11.141 -2.175 c
-11.494 -2.175 11.685 -1.881 11.715 -1.294 c
-11.715 -0.852 l
-11.715 -0.492 11.663 -0.22 11.568 -0.044 c
-11.469 0.133 11.326 0.221 11.141 0.221 c
-10.965 0.221 10.825 0.133 10.73 -0.044 c
-10.63 -0.22 10.583 -0.492 10.583 -0.852 c
-h
-14.611 1.985 m
-14.611 1.014 l
-15.139 1.014 l
-15.139 0.221 l
-14.611 0.221 l
-14.611 -1.749 l
-14.611 -1.907 14.628 -2.013 14.669 -2.072 c
-14.717 -2.131 14.802 -2.161 14.919 -2.161 c
-15.025 -2.161 15.11 -2.153 15.169 -2.131 c
-15.169 -2.94 l
-14.993 -3.006 14.802 -3.042 14.596 -3.042 c
-13.92 -3.042 13.574 -2.657 13.566 -1.881 c
-13.566 0.221 l
-13.111 0.221 l
-13.111 1.014 l
-13.566 1.014 l
-13.566 1.985 l
-h
-17.315 -3.042 m
-16.786 -3.042 16.367 -2.888 16.066 -2.572 c
-15.771 -2.248 15.625 -1.789 15.625 -1.19 c
-15.625 -0.881 l
-15.625 -0.257 15.761 0.228 16.037 0.574 c
-16.309 0.915 16.702 1.088 17.213 1.088 c
-17.712 1.088 18.083 0.927 18.329 0.603 c
-18.583 0.279 18.715 -0.198 18.726 -0.823 c
-18.726 -1.323 l
-16.654 -1.323 l
-16.672 -1.617 16.735 -1.833 16.845 -1.97 c
-16.962 -2.109 17.142 -2.175 17.389 -2.175 c
-17.73 -2.175 18.021 -2.057 18.256 -1.822 c
-18.667 -2.454 l
-18.539 -2.631 18.351 -2.774 18.109 -2.881 c
-17.863 -2.988 17.598 -3.042 17.315 -3.042 c
-16.668 -0.602 m
-17.697 -0.602 l
-17.697 -0.5 l
-17.697 -0.264 17.657 -0.088 17.58 0.029 c
-17.51 0.154 17.381 0.221 17.198 0.221 c
-17.021 0.221 16.889 0.151 16.801 0.015 c
-16.72 -0.114 16.676 -0.32 16.668 -0.602 c
-f
-Q
-q 1 0 0 1 140.4975 198.7397 cm
-0 0 m
--0.04 0.088 -0.066 0.235 -0.073 0.441 c
--0.309 0.095 -0.602 -0.073 -0.955 -0.073 c
--1.319 -0.073 -1.602 0.022 -1.808 0.22 c
--2.007 0.426 -2.102 0.713 -2.102 1.088 c
--2.102 1.488 -1.966 1.808 -1.691 2.043 c
--1.419 2.286 -1.043 2.41 -0.573 2.41 c
--0.087 2.41 l
--0.087 2.837 l
--0.087 3.072 -0.143 3.237 -0.249 3.337 c
--0.36 3.443 -0.521 3.499 -0.735 3.499 c
--0.933 3.499 -1.095 3.439 -1.22 3.322 c
--1.338 3.204 -1.396 3.057 -1.396 2.881 c
--2.043 2.881 l
--2.043 3.075 -1.984 3.267 -1.866 3.454 c
--1.741 3.638 -1.579 3.785 -1.382 3.896 c
--1.176 4.002 -0.948 4.056 -0.691 4.056 c
--0.29 4.056 0.015 3.954 0.221 3.748 c
-0.434 3.543 0.548 3.248 0.559 2.866 c
-0.559 0.852 l
-0.559 0.548 0.595 0.283 0.676 0.058 c
-0.676 0 l
-h
--0.867 0.515 m
--0.702 0.515 -0.551 0.559 -0.411 0.646 c
--0.264 0.735 -0.158 0.845 -0.087 0.985 c
--0.087 1.926 l
--0.455 1.926 l
--0.771 1.926 -1.014 1.856 -1.19 1.72 c
--1.367 1.591 -1.455 1.404 -1.455 1.161 c
--1.455 0.933 -1.411 0.768 -1.323 0.661 c
--1.234 0.563 -1.084 0.515 -0.867 0.515 c
-2.176 3.983 m
-2.19 3.543 l
-2.444 3.884 2.768 4.056 3.161 4.056 c
-3.866 4.056 4.223 3.586 4.233 2.645 c
-4.233 0 l
-3.587 0 l
-3.587 2.616 l
-3.587 2.929 3.532 3.15 3.425 3.278 c
-3.315 3.403 3.161 3.469 2.955 3.469 c
-2.797 3.469 2.65 3.414 2.514 3.308 c
-2.385 3.197 2.282 3.061 2.205 2.896 c
-2.205 0 l
-1.559 0 l
-1.559 3.983 l
-h
-5.072 2.175 m
-5.072 2.782 5.182 3.248 5.409 3.572 c
-5.644 3.896 5.972 4.056 6.394 4.056 c
-6.776 4.056 7.074 3.898 7.291 3.586 c
-7.291 5.644 l
-7.938 5.644 l
-7.938 0 l
-7.35 0 l
-7.306 0.426 l
-7.1 0.092 6.795 -0.073 6.394 -0.073 c
-5.983 -0.073 5.659 0.081 5.424 0.397 c
-5.189 0.721 5.072 1.176 5.072 1.764 c
-h
-5.718 1.793 m
-5.718 1.352 5.781 1.022 5.909 0.808 c
-6.045 0.603 6.265 0.5 6.571 0.5 c
-6.894 0.5 7.133 0.661 7.291 0.985 c
-7.291 2.998 l
-7.122 3.31 6.883 3.469 6.571 3.469 c
-6.265 3.469 6.045 3.366 5.909 3.16 c
-5.781 2.955 5.718 2.631 5.718 2.19 c
-h
-11.275 3.983 m
-11.289 3.616 l
-11.532 3.91 11.851 4.056 12.245 4.056 c
-12.686 4.056 12.994 3.858 13.17 3.469 c
-13.424 3.858 13.773 4.056 14.215 4.056 c
-14.949 4.056 15.324 3.594 15.346 2.675 c
-15.346 0 l
-14.699 0 l
-14.699 2.616 l
-14.699 2.911 14.644 3.123 14.537 3.263 c
-14.438 3.399 14.265 3.469 14.024 3.469 c
-13.825 3.469 13.663 3.388 13.538 3.233 c
-13.421 3.087 13.351 2.896 13.332 2.66 c
-13.332 0 l
-12.671 0 l
-12.671 2.645 l
-12.671 3.193 12.451 3.469 12.009 3.469 c
-11.675 3.469 11.439 3.308 11.304 2.984 c
-11.304 0 l
-10.657 0 l
-10.657 3.983 l
-h
-17.742 -0.073 m
-17.242 -0.073 16.86 0.073 16.596 0.368 c
-16.331 0.661 16.199 1.095 16.199 1.675 c
-16.199 2.146 l
-16.199 2.741 16.324 3.208 16.581 3.543 c
-16.846 3.884 17.205 4.056 17.668 4.056 c
-18.128 4.056 18.47 3.902 18.697 3.601 c
-18.932 3.308 19.054 2.844 19.065 2.219 c
-19.065 1.793 l
-16.846 1.793 l
-16.846 1.705 l
-16.846 1.271 16.923 0.959 17.081 0.764 c
-17.246 0.577 17.477 0.485 17.771 0.485 c
-17.966 0.485 18.138 0.518 18.286 0.588 c
-18.433 0.665 18.569 0.783 18.697 0.941 c
-19.036 0.529 l
-18.749 0.125 18.319 -0.073 17.742 -0.073 c
-17.668 3.499 m
-17.393 3.499 17.191 3.403 17.066 3.219 c
-16.937 3.032 16.864 2.741 16.846 2.352 c
-18.418 2.352 l
-18.418 2.44 l
-18.396 2.822 18.33 3.09 18.213 3.248 c
-18.095 3.414 17.911 3.499 17.668 3.499 c
-21.49 3.366 m
-21.402 3.385 21.303 3.395 21.196 3.395 c
-20.862 3.395 20.627 3.212 20.49 2.851 c
-20.49 0 l
-19.844 0 l
-19.844 3.983 l
-20.476 3.983 l
-20.49 3.572 l
-20.667 3.896 20.91 4.056 21.226 4.056 c
-21.332 4.056 21.421 4.035 21.49 3.998 c
-h
-21.931 2.175 m
-21.931 2.793 22.042 3.256 22.269 3.572 c
-22.493 3.896 22.828 4.056 23.269 4.056 c
-23.669 4.056 23.975 3.881 24.18 3.528 c
-24.224 3.983 l
-24.812 3.983 l
-24.812 -0.044 l
-24.812 -0.532 24.684 -0.912 24.43 -1.176 c
-24.173 -1.44 23.82 -1.573 23.372 -1.573 c
-23.173 -1.573 22.953 -1.521 22.71 -1.426 c
-22.464 -1.326 22.284 -1.205 22.167 -1.058 c
-22.431 -0.617 l
-22.695 -0.882 22.994 -1.014 23.328 -1.014 c
-23.864 -1.014 24.139 -0.721 24.151 -0.133 c
-24.151 0.397 l
-23.945 0.081 23.644 -0.073 23.254 -0.073 c
-22.842 -0.073 22.519 0.077 22.284 0.382 c
-22.057 0.694 21.939 1.147 21.931 1.735 c
-h
-22.593 1.793 m
-22.593 1.352 22.655 1.022 22.784 0.808 c
-22.909 0.603 23.125 0.5 23.431 0.5 c
-23.754 0.5 23.993 0.665 24.151 0.999 c
-24.151 2.984 l
-23.981 3.308 23.743 3.469 23.431 3.469 c
-23.137 3.469 22.92 3.366 22.784 3.16 c
-22.655 2.955 22.593 2.631 22.593 2.19 c
-h
-27.194 -0.073 m
-26.693 -0.073 26.312 0.073 26.047 0.368 c
-25.783 0.661 25.65 1.095 25.65 1.675 c
-25.65 2.146 l
-25.65 2.741 25.775 3.208 26.032 3.543 c
-26.296 3.884 26.657 4.056 27.12 4.056 c
-27.58 4.056 27.921 3.902 28.149 3.601 c
-28.384 3.308 28.505 2.844 28.517 2.219 c
-28.517 1.793 l
-26.296 1.793 l
-26.296 1.705 l
-26.296 1.271 26.374 0.959 26.532 0.764 c
-26.697 0.577 26.929 0.485 27.223 0.485 c
-27.418 0.485 27.59 0.518 27.738 0.588 c
-27.884 0.665 28.02 0.783 28.149 0.941 c
-28.487 0.529 l
-28.201 0.125 27.771 -0.073 27.194 -0.073 c
-27.12 3.499 m
-26.844 3.499 26.643 3.403 26.518 3.219 c
-26.389 3.032 26.315 2.741 26.296 2.352 c
-27.869 2.352 l
-27.869 2.44 l
-27.848 2.822 27.781 3.09 27.664 3.248 c
-27.546 3.414 27.362 3.499 27.12 3.499 c
-32.397 0.485 m
-32.61 0.485 32.783 0.548 32.912 0.676 c
-33.047 0.812 33.121 1.003 33.132 1.249 c
-33.749 1.249 l
-33.727 0.867 33.591 0.548 33.338 0.294 c
-33.08 0.048 32.768 -0.073 32.397 -0.073 c
-31.904 -0.073 31.53 0.077 31.265 0.382 c
-31.008 0.694 30.883 1.161 30.883 1.779 c
-30.883 2.219 l
-30.883 2.815 31.008 3.27 31.265 3.586 c
-31.53 3.898 31.904 4.056 32.397 4.056 c
-32.798 4.056 33.117 3.925 33.352 3.66 c
-33.595 3.403 33.727 3.057 33.749 2.616 c
-33.132 2.616 l
-33.11 2.911 33.036 3.131 32.912 3.278 c
-32.794 3.425 32.621 3.499 32.397 3.499 c
-32.103 3.499 31.886 3.399 31.75 3.204 c
-31.611 3.017 31.537 2.708 31.53 2.278 c
-31.53 1.764 l
-31.53 1.294 31.596 0.959 31.736 0.764 c
-31.883 0.577 32.103 0.485 32.397 0.485 c
-36.527 0.353 m
-36.311 0.066 35.998 -0.073 35.586 -0.073 c
-35.223 -0.073 34.948 0.048 34.763 0.294 c
-34.587 0.548 34.491 0.912 34.485 1.382 c
-34.485 3.983 l
-35.131 3.983 l
-35.131 1.44 l
-35.131 0.812 35.314 0.5 35.69 0.5 c
-36.091 0.5 36.366 0.676 36.513 1.029 c
-36.513 3.983 l
-37.159 3.983 l
-37.159 0 l
-36.542 0 l
-h
-39.79 3.366 m
-39.702 3.385 39.603 3.395 39.497 3.395 c
-39.162 3.395 38.927 3.212 38.791 2.851 c
-38.791 0 l
-38.144 0 l
-38.144 3.983 l
-38.776 3.983 l
-38.791 3.572 l
-38.967 3.896 39.21 4.056 39.526 4.056 c
-39.632 4.056 39.721 4.035 39.79 3.998 c
-h
-42.084 3.366 m
-41.996 3.385 41.896 3.395 41.79 3.395 c
-41.456 3.395 41.22 3.212 41.084 2.851 c
-41.084 0 l
-40.438 0 l
-40.438 3.983 l
-41.07 3.983 l
-41.084 3.572 l
-41.261 3.896 41.503 4.056 41.819 4.056 c
-41.926 4.056 42.013 4.035 42.084 3.998 c
-h
-44.083 -0.073 m
-43.583 -0.073 43.201 0.073 42.936 0.368 c
-42.672 0.661 42.539 1.095 42.539 1.675 c
-42.539 2.146 l
-42.539 2.741 42.664 3.208 42.921 3.543 c
-43.187 3.884 43.546 4.056 44.009 4.056 c
-44.469 4.056 44.81 3.902 45.038 3.601 c
-45.273 3.308 45.394 2.844 45.406 2.219 c
-45.406 1.793 l
-43.187 1.793 l
-43.187 1.705 l
-43.187 1.271 43.264 0.959 43.422 0.764 c
-43.586 0.577 43.818 0.485 44.112 0.485 c
-44.307 0.485 44.479 0.518 44.627 0.588 c
-44.774 0.665 44.91 0.783 45.038 0.941 c
-45.377 0.529 l
-45.09 0.125 44.66 -0.073 44.083 -0.073 c
-44.009 3.499 m
-43.734 3.499 43.532 3.403 43.407 3.219 c
-43.278 3.032 43.204 2.741 43.187 2.352 c
-44.758 2.352 l
-44.758 2.44 l
-44.737 2.822 44.671 3.09 44.553 3.248 c
-44.436 3.414 44.251 3.499 44.009 3.499 c
-46.802 3.983 m
-46.817 3.543 l
-47.07 3.884 47.394 4.056 47.787 4.056 c
-48.492 4.056 48.849 3.586 48.86 2.645 c
-48.86 0 l
-48.213 0 l
-48.213 2.616 l
-48.213 2.929 48.158 3.15 48.051 3.278 c
-47.941 3.403 47.787 3.469 47.581 3.469 c
-47.423 3.469 47.276 3.414 47.14 3.308 c
-47.012 3.197 46.909 3.061 46.831 2.896 c
-46.831 0 l
-46.185 0 l
-46.185 3.983 l
-h
-50.682 4.939 m
-50.682 3.983 l
-51.285 3.983 l
-51.285 3.454 l
-50.682 3.454 l
-50.682 0.985 l
-50.682 0.827 50.705 0.709 50.756 0.632 c
-50.815 0.551 50.903 0.515 51.021 0.515 c
-51.108 0.515 51.197 0.529 51.285 0.559 c
-51.285 0 l
-51.139 -0.048 50.984 -0.073 50.829 -0.073 c
-50.572 -0.073 50.378 0.018 50.242 0.206 c
-50.102 0.389 50.036 0.65 50.036 0.985 c
-50.036 3.454 l
-49.433 3.454 l
-49.433 3.983 l
-50.036 3.983 l
-50.036 4.939 l
-h
-56.65 1.793 m
-56.65 1.176 56.537 0.709 56.313 0.397 c
-56.095 0.081 55.772 -0.073 55.342 -0.073 c
-54.919 -0.073 54.607 0.106 54.401 0.47 c
-54.372 0 l
-53.77 0 l
-53.77 5.644 l
-54.416 5.644 l
-54.416 3.543 l
-54.63 3.884 54.938 4.056 55.342 4.056 c
-55.772 4.056 56.095 3.898 56.313 3.586 c
-56.537 3.281 56.65 2.815 56.65 2.19 c
-h
-56.003 2.175 m
-56.003 2.645 55.934 2.977 55.798 3.175 c
-55.669 3.37 55.459 3.469 55.166 3.469 c
-54.831 3.469 54.582 3.285 54.416 2.925 c
-54.416 1.043 l
-54.582 0.68 54.835 0.5 55.181 0.5 c
-55.474 0.5 55.684 0.603 55.812 0.808 c
-55.937 1.014 56.003 1.33 56.003 1.764 c
-h
-59.135 3.366 m
-59.046 3.385 58.947 3.395 58.84 3.395 c
-58.506 3.395 58.271 3.212 58.135 2.851 c
-58.135 0 l
-57.489 0 l
-57.489 3.983 l
-58.12 3.983 l
-58.135 3.572 l
-58.312 3.896 58.553 4.056 58.87 4.056 c
-58.977 4.056 59.064 4.035 59.135 3.998 c
-h
-61.678 0 m
-61.637 0.088 61.611 0.235 61.604 0.441 c
-61.369 0.095 61.075 -0.073 60.722 -0.073 c
-60.358 -0.073 60.076 0.022 59.87 0.22 c
-59.671 0.426 59.575 0.713 59.575 1.088 c
-59.575 1.488 59.712 1.808 59.987 2.043 c
-60.259 2.286 60.633 2.41 61.104 2.41 c
-61.589 2.41 l
-61.589 2.837 l
-61.589 3.072 61.534 3.237 61.427 3.337 c
-61.317 3.443 61.156 3.499 60.942 3.499 c
-60.744 3.499 60.583 3.439 60.458 3.322 c
-60.34 3.204 60.281 3.057 60.281 2.881 c
-59.634 2.881 l
-59.634 3.075 59.693 3.267 59.81 3.454 c
-59.935 3.638 60.097 3.785 60.296 3.896 c
-60.502 4.002 60.729 4.056 60.986 4.056 c
-61.387 4.056 61.692 3.954 61.898 3.748 c
-62.111 3.543 62.225 3.248 62.236 2.866 c
-62.236 0.852 l
-62.236 0.548 62.273 0.283 62.353 0.058 c
-62.353 0 l
-h
-60.81 0.515 m
-60.976 0.515 61.126 0.559 61.266 0.646 c
-61.412 0.735 61.52 0.845 61.589 0.985 c
-61.589 1.926 l
-61.221 1.926 l
-60.905 1.926 60.664 1.856 60.487 1.72 c
-60.311 1.591 60.222 1.404 60.222 1.161 c
-60.222 0.933 60.267 0.768 60.355 0.661 c
-60.443 0.563 60.593 0.515 60.81 0.515 c
-63.853 3.983 m
-63.868 3.543 l
-64.121 3.884 64.444 4.056 64.838 4.056 c
-65.543 4.056 65.9 3.586 65.911 2.645 c
-65.911 0 l
-65.264 0 l
-65.264 2.616 l
-65.264 2.929 65.209 3.15 65.102 3.278 c
-64.992 3.403 64.838 3.469 64.632 3.469 c
-64.474 3.469 64.327 3.414 64.191 3.308 c
-64.062 3.197 63.96 3.061 63.883 2.896 c
-63.883 0 l
-63.236 0 l
-63.236 3.983 l
-h
-68.263 0.485 m
-68.475 0.485 68.649 0.548 68.777 0.676 c
-68.913 0.812 68.986 1.003 68.998 1.249 c
-69.615 1.249 l
-69.593 0.867 69.457 0.548 69.204 0.294 c
-68.946 0.048 68.634 -0.073 68.263 -0.073 c
-67.77 -0.073 67.395 0.077 67.131 0.382 c
-66.873 0.694 66.748 1.161 66.748 1.779 c
-66.748 2.219 l
-66.748 2.815 66.873 3.27 67.131 3.586 c
-67.395 3.898 67.77 4.056 68.263 4.056 c
-68.664 4.056 68.983 3.925 69.218 3.66 c
-69.46 3.403 69.593 3.057 69.615 2.616 c
-68.998 2.616 l
-68.976 2.911 68.902 3.131 68.777 3.278 c
-68.66 3.425 68.487 3.499 68.263 3.499 c
-67.968 3.499 67.752 3.399 67.616 3.204 c
-67.476 3.017 67.403 2.708 67.395 2.278 c
-67.395 1.764 l
-67.395 1.294 67.461 0.959 67.602 0.764 c
-67.748 0.577 67.968 0.485 68.263 0.485 c
-71.012 3.572 m
-71.265 3.896 71.585 4.056 71.967 4.056 c
-72.672 4.056 73.029 3.586 73.04 2.645 c
-73.04 0 l
-72.393 0 l
-72.393 2.616 l
-72.393 2.929 72.338 3.15 72.231 3.278 c
-72.121 3.403 71.967 3.469 71.761 3.469 c
-71.603 3.469 71.456 3.414 71.32 3.308 c
-71.191 3.197 71.089 3.061 71.012 2.896 c
-71.012 0 l
-70.364 0 l
-70.364 5.644 l
-71.012 5.644 l
-h
-78.684 1.147 m
-79.286 3.983 l
-79.934 3.983 l
-78.949 0 l
-78.434 0 l
-77.655 2.851 l
-76.905 0 l
-76.377 0 l
-75.421 3.983 l
-76.053 3.983 l
-76.67 1.22 l
-77.405 3.983 l
-77.92 3.983 l
-h
-81.316 0 -0.647 3.983 re
-81.36 5.027 m
-81.36 4.916 81.33 4.825 81.271 4.748 c
-81.212 4.678 81.117 4.644 80.992 4.644 c
-80.874 4.644 80.778 4.678 80.713 4.748 c
-80.654 4.825 80.624 4.916 80.624 5.027 c
-80.624 5.145 80.654 5.236 80.713 5.307 c
-80.778 5.384 80.874 5.424 80.992 5.424 c
-81.117 5.424 81.212 5.384 81.271 5.307 c
-81.33 5.226 81.36 5.134 81.36 5.027 c
-83.182 4.939 m
-83.182 3.983 l
-83.785 3.983 l
-83.785 3.454 l
-83.182 3.454 l
-83.182 0.985 l
-83.182 0.827 83.205 0.709 83.255 0.632 c
-83.315 0.551 83.403 0.515 83.52 0.515 c
-83.608 0.515 83.697 0.529 83.785 0.559 c
-83.785 0 l
-83.638 -0.048 83.483 -0.073 83.329 -0.073 c
-83.072 -0.073 82.877 0.018 82.741 0.206 c
-82.602 0.389 82.536 0.65 82.536 0.985 c
-82.536 3.454 l
-81.933 3.454 l
-81.933 3.983 l
-82.536 3.983 l
-82.536 4.939 l
-h
-85.196 3.572 m
-85.449 3.896 85.769 4.056 86.151 4.056 c
-86.857 4.056 87.213 3.586 87.224 2.645 c
-87.224 0 l
-86.577 0 l
-86.577 2.616 l
-86.577 2.929 86.523 3.15 86.416 3.278 c
-86.305 3.403 86.151 3.469 85.946 3.469 c
-85.788 3.469 85.64 3.414 85.505 3.308 c
-85.376 3.197 85.273 3.061 85.196 2.896 c
-85.196 0 l
-84.549 0 l
-84.549 5.644 l
-85.196 5.644 l
-h
-90.605 0 -0.647 3.983 re
-90.65 5.027 m
-90.65 4.916 90.62 4.825 90.561 4.748 c
-90.502 4.678 90.407 4.644 90.282 4.644 c
-90.164 4.644 90.068 4.678 90.002 4.748 c
-89.944 4.825 89.914 4.916 89.914 5.027 c
-89.914 5.145 89.944 5.236 90.002 5.307 c
-90.068 5.384 90.164 5.424 90.282 5.424 c
-90.407 5.424 90.502 5.384 90.561 5.307 c
-90.62 5.226 90.65 5.134 90.65 5.027 c
-92.472 4.939 m
-92.472 3.983 l
-93.075 3.983 l
-93.075 3.454 l
-92.472 3.454 l
-92.472 0.985 l
-92.472 0.827 92.494 0.709 92.545 0.632 c
-92.604 0.551 92.692 0.515 92.811 0.515 c
-92.898 0.515 92.986 0.529 93.075 0.559 c
-93.075 0 l
-92.927 -0.048 92.773 -0.073 92.619 -0.073 c
-92.362 -0.073 92.167 0.018 92.031 0.206 c
-91.891 0.389 91.826 0.65 91.826 0.985 c
-91.826 3.454 l
-91.223 3.454 l
-91.223 3.983 l
-91.826 3.983 l
-91.826 4.939 l
-h
-95.779 1.014 m
-95.779 1.161 95.724 1.282 95.618 1.382 c
-95.508 1.477 95.302 1.595 95.001 1.735 c
-94.654 1.881 94.413 2.003 94.265 2.102 c
-94.118 2.209 94.008 2.326 93.942 2.454 c
-93.872 2.58 93.839 2.738 93.839 2.925 c
-93.839 3.248 93.956 3.516 94.192 3.734 c
-94.427 3.946 94.729 4.056 95.103 4.056 c
-95.485 4.056 95.794 3.943 96.029 3.719 c
-96.264 3.491 96.382 3.204 96.382 2.851 c
-95.735 2.851 l
-95.735 3.028 95.676 3.179 95.558 3.308 c
-95.441 3.432 95.287 3.499 95.103 3.499 c
-94.905 3.499 94.754 3.443 94.648 3.337 c
-94.537 3.237 94.486 3.105 94.486 2.94 c
-94.486 2.811 94.523 2.705 94.604 2.616 c
-94.681 2.535 94.872 2.433 95.176 2.308 c
-95.654 2.12 95.985 1.933 96.161 1.749 c
-96.338 1.573 96.426 1.345 96.426 1.073 c
-96.426 0.721 96.301 0.441 96.059 0.235 c
-95.824 0.029 95.508 -0.073 95.118 -0.073 c
-94.695 -0.073 94.357 0.044 94.103 0.279 c
-93.846 0.522 93.721 0.827 93.721 1.191 c
-94.368 1.191 l
-94.376 0.962 94.446 0.786 94.573 0.661 c
-94.699 0.544 94.883 0.485 95.118 0.485 c
-95.331 0.485 95.493 0.532 95.603 0.632 c
-95.72 0.727 95.779 0.856 95.779 1.014 c
-101.012 0.353 m
-100.796 0.066 100.483 -0.073 100.071 -0.073 c
-99.708 -0.073 99.432 0.048 99.248 0.294 c
-99.072 0.548 98.976 0.912 98.969 1.382 c
-98.969 3.983 l
-99.616 3.983 l
-99.616 1.44 l
-99.616 0.812 99.799 0.5 100.175 0.5 c
-100.574 0.5 100.85 0.676 100.998 1.029 c
-100.998 3.983 l
-101.644 3.983 l
-101.644 0 l
-101.027 0 l
-h
-105.51 1.793 m
-105.51 1.165 105.392 0.694 105.157 0.382 c
-104.929 0.077 104.613 -0.073 104.202 -0.073 c
-103.797 -0.073 103.489 0.077 103.275 0.382 c
-103.275 -1.529 l
-102.629 -1.529 l
-102.629 3.983 l
-103.217 3.983 l
-103.261 3.543 l
-103.474 3.884 103.783 4.056 104.187 4.056 c
-104.628 4.056 104.955 3.902 105.172 3.601 c
-105.385 3.296 105.499 2.84 105.51 2.234 c
-h
-104.863 2.175 m
-104.863 2.616 104.794 2.94 104.657 3.146 c
-104.518 3.358 104.297 3.469 103.996 3.469 c
-103.68 3.469 103.441 3.314 103.275 3.013 c
-103.275 0.941 l
-103.441 0.636 103.68 0.485 103.996 0.485 c
-104.29 0.485 104.503 0.588 104.643 0.794 c
-104.779 1.007 104.852 1.338 104.863 1.779 c
-h
-108.289 1.014 m
-108.289 1.161 108.233 1.282 108.127 1.382 c
-108.017 1.477 107.811 1.595 107.509 1.735 c
-107.163 1.881 106.922 2.003 106.774 2.102 c
-106.627 2.209 106.517 2.326 106.451 2.454 c
-106.381 2.58 106.348 2.738 106.348 2.925 c
-106.348 3.248 106.465 3.516 106.701 3.734 c
-106.936 3.946 107.237 4.056 107.612 4.056 c
-107.994 4.056 108.303 3.943 108.538 3.719 c
-108.773 3.491 108.891 3.204 108.891 2.851 c
-108.244 2.851 l
-108.244 3.028 108.185 3.179 108.067 3.308 c
-107.95 3.432 107.796 3.499 107.612 3.499 c
-107.414 3.499 107.263 3.443 107.157 3.337 c
-107.046 3.237 106.995 3.105 106.995 2.94 c
-106.995 2.811 107.032 2.705 107.113 2.616 c
-107.19 2.535 107.381 2.433 107.685 2.308 c
-108.163 2.12 108.494 1.933 108.67 1.749 c
-108.846 1.573 108.935 1.345 108.935 1.073 c
-108.935 0.721 108.81 0.441 108.568 0.235 c
-108.333 0.029 108.017 -0.073 107.627 -0.073 c
-107.204 -0.073 106.866 0.044 106.612 0.279 c
-106.355 0.522 106.23 0.827 106.23 1.191 c
-106.877 1.191 l
-106.884 0.962 106.955 0.786 107.082 0.661 c
-107.208 0.544 107.392 0.485 107.627 0.485 c
-107.84 0.485 108.002 0.532 108.112 0.632 c
-108.229 0.727 108.289 0.856 108.289 1.014 c
-110.625 4.939 m
-110.625 3.983 l
-111.228 3.983 l
-111.228 3.454 l
-110.625 3.454 l
-110.625 0.985 l
-110.625 0.827 110.647 0.709 110.699 0.632 c
-110.758 0.551 110.845 0.515 110.963 0.515 c
-111.051 0.515 111.14 0.529 111.228 0.559 c
-111.228 0 l
-111.081 -0.048 110.926 -0.073 110.772 -0.073 c
-110.515 -0.073 110.32 0.018 110.184 0.206 c
-110.045 0.389 109.979 0.65 109.979 0.985 c
-109.979 3.454 l
-109.376 3.454 l
-109.376 3.983 l
-109.979 3.983 l
-109.979 4.939 l
-h
-113.638 3.366 m
-113.55 3.385 113.451 3.395 113.345 3.395 c
-113.01 3.395 112.775 3.212 112.639 2.851 c
-112.639 0 l
-111.992 0 l
-111.992 3.983 l
-112.624 3.983 l
-112.639 3.572 l
-112.815 3.896 113.058 4.056 113.374 4.056 c
-113.48 4.056 113.569 4.035 113.638 3.998 c
-h
-115.638 -0.073 m
-115.138 -0.073 114.756 0.073 114.491 0.368 c
-114.226 0.661 114.094 1.095 114.094 1.675 c
-114.094 2.146 l
-114.094 2.741 114.219 3.208 114.477 3.543 c
-114.741 3.884 115.101 4.056 115.564 4.056 c
-116.023 4.056 116.366 3.902 116.593 3.601 c
-116.829 3.308 116.95 2.844 116.96 2.219 c
-116.96 1.793 l
-114.741 1.793 l
-114.741 1.705 l
-114.741 1.271 114.818 0.959 114.976 0.764 c
-115.142 0.577 115.373 0.485 115.667 0.485 c
-115.861 0.485 116.035 0.518 116.181 0.588 c
-116.329 0.665 116.464 0.783 116.593 0.941 c
-116.931 0.529 l
-116.644 0.125 116.214 -0.073 115.638 -0.073 c
-115.564 3.499 m
-115.289 3.499 115.086 3.403 114.961 3.219 c
-114.833 3.032 114.76 2.741 114.741 2.352 c
-116.314 2.352 l
-116.314 2.44 l
-116.291 2.822 116.226 3.09 116.108 3.248 c
-115.99 3.414 115.807 3.499 115.564 3.499 c
-119.782 0 m
-119.742 0.088 119.717 0.235 119.709 0.441 c
-119.474 0.095 119.18 -0.073 118.828 -0.073 c
-118.464 -0.073 118.18 0.022 117.975 0.22 c
-117.777 0.426 117.681 0.713 117.681 1.088 c
-117.681 1.488 117.817 1.808 118.092 2.043 c
-118.365 2.286 118.739 2.41 119.21 2.41 c
-119.695 2.41 l
-119.695 2.837 l
-119.695 3.072 119.639 3.237 119.533 3.337 c
-119.423 3.443 119.261 3.499 119.048 3.499 c
-118.849 3.499 118.687 3.439 118.562 3.322 c
-118.446 3.204 118.386 3.057 118.386 2.881 c
-117.74 2.881 l
-117.74 3.075 117.798 3.267 117.916 3.454 c
-118.041 3.638 118.203 3.785 118.401 3.896 c
-118.607 4.002 118.835 4.056 119.092 4.056 c
-119.493 4.056 119.798 3.954 120.004 3.748 c
-120.216 3.543 120.33 3.248 120.341 2.866 c
-120.341 0.852 l
-120.341 0.548 120.378 0.283 120.459 0.058 c
-120.459 0 l
-h
-118.916 0.515 m
-119.081 0.515 119.231 0.559 119.371 0.646 c
-119.518 0.735 119.624 0.845 119.695 0.985 c
-119.695 1.926 l
-119.327 1.926 l
-119.011 1.926 118.768 1.856 118.592 1.72 c
-118.416 1.591 118.327 1.404 118.327 1.161 c
-118.327 0.933 118.371 0.768 118.46 0.661 c
-118.548 0.563 118.699 0.515 118.916 0.515 c
-121.958 3.983 m
-121.973 3.616 l
-122.215 3.91 122.535 4.056 122.928 4.056 c
-123.369 4.056 123.678 3.858 123.855 3.469 c
-124.108 3.858 124.457 4.056 124.898 4.056 c
-125.633 4.056 126.008 3.594 126.03 2.675 c
-126.03 0 l
-125.383 0 l
-125.383 2.616 l
-125.383 2.911 125.328 3.123 125.222 3.263 c
-125.122 3.399 124.95 3.469 124.707 3.469 c
-124.509 3.469 124.347 3.388 124.222 3.233 c
-124.104 3.087 124.035 2.896 124.016 2.66 c
-124.016 0 l
-123.354 0 l
-123.354 2.645 l
-123.354 3.193 123.134 3.469 122.693 3.469 c
-122.359 3.469 122.124 3.308 121.988 2.984 c
-121.988 0 l
-121.341 0 l
-121.341 3.983 l
-h
-127.044 0.353 m
-127.044 0.47 127.077 0.565 127.147 0.646 c
-127.213 0.723 127.316 0.764 127.456 0.764 c
-127.603 0.764 127.709 0.723 127.779 0.646 c
-127.856 0.565 127.896 0.47 127.896 0.353 c
-127.896 0.243 127.856 0.151 127.779 0.073 c
-127.709 -0.004 127.603 -0.044 127.456 -0.044 c
-127.316 -0.044 127.213 -0.004 127.147 0.073 c
-127.077 0.151 127.044 0.243 127.044 0.353 c
-f
-Q
-0.113 0.082 0.09 0 k
-35.668 193.132 238.665 -12.895 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 40.8563 186.2965 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.646 -0.243 -0.775 -0.367 -0.881 c
--0.496 -0.992 -0.658 -1.08 -0.852 -1.146 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.263 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.161 c
--2.719 -1.103 -2.873 -1.024 -2.998 -0.926 c
--3.127 -0.819 -3.23 -0.691 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.213 -3.484 -0.014 c
--2.66 0.133 l
--2.642 0.034 -2.616 -0.058 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.367 c
--2.396 -0.426 -2.322 -0.477 -2.234 -0.515 c
--2.138 -0.554 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.684 -1.992 0.691 -1.999 0.691 c
--2.167 0.728 -2.329 0.772 -2.484 0.823 c
--2.642 0.882 -2.786 0.96 -2.91 1.058 c
--3.039 1.154 -3.142 1.279 -3.219 1.426 c
--3.289 1.573 -3.322 1.757 -3.322 1.985 c
--3.322 2.18 -3.289 2.345 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.837 c
--2.8 2.933 -2.645 3.003 -2.469 3.043 c
--2.293 3.091 -2.102 3.12 -1.896 3.131 c
--1.896 3.558 l
--1.543 3.558 l
--1.543 3.131 l
--1.319 3.12 -1.128 3.091 -0.97 3.043 c
--0.804 2.992 -0.669 2.918 -0.558 2.822 c
--0.44 2.735 -0.349 2.621 -0.279 2.484 c
--0.202 2.345 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.253 -1.213 2.459 -1.543 2.5 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.36 -1.469 1.353 c
--1.294 1.312 -1.117 1.264 -0.941 1.206 c
--0.756 1.147 -0.595 1.066 -0.455 0.971 c
--0.32 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.503 -2.113 2.484 -2.19 2.455 c
--2.26 2.425 -2.319 2.386 -2.366 2.338 c
--2.406 2.297 -2.437 2.249 -2.454 2.19 c
--2.477 2.132 -2.484 2.066 -2.484 1.999 c
--2.484 1.912 -2.469 1.837 -2.439 1.779 c
--2.41 1.72 -2.373 1.669 -2.322 1.632 c
--2.263 1.592 -2.201 1.559 -2.131 1.529 c
--2.065 1.5 -1.984 1.47 -1.896 1.441 c
-h
--0.837 -0.014 m
--0.837 0.092 -0.86 0.177 -0.897 0.235 c
--0.926 0.302 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.53 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.529 -1.028 -0.44 c
--0.904 -0.345 -0.837 -0.201 -0.837 -0.014 c
-6.402 -2.66 m
-6.185 -2.66 5.993 -2.634 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.396 c
-5.284 -2.315 5.185 -2.219 5.108 -2.102 c
-5.039 -1.984 4.991 -1.855 4.961 -1.72 c
-5.858 -1.616 l
-5.895 -1.753 5.964 -1.859 6.064 -1.94 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.057 6.681 -2.028 c
-6.758 -1.999 6.828 -1.944 6.887 -1.866 c
-6.945 -1.797 6.99 -1.705 7.019 -1.587 c
-7.056 -1.469 7.078 -1.323 7.078 -1.146 c
-7.078 -0.955 l
-7.078 -0.889 7.082 -0.83 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.072 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.215 -0.897 5.108 -0.75 c
-5.009 -0.595 4.935 -0.411 4.888 -0.205 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.772 4.836 1.018 4.888 1.235 c
-4.946 1.448 5.027 1.632 5.137 1.779 c
-5.245 1.933 5.376 2.051 5.534 2.132 c
-5.689 2.22 5.876 2.264 6.093 2.264 c
-6.188 2.264 6.288 2.253 6.387 2.234 c
-6.483 2.213 6.571 2.18 6.652 2.132 c
-6.739 2.08 6.817 2.018 6.887 1.941 c
-6.964 1.86 7.026 1.768 7.078 1.661 c
-7.092 1.661 l
-7.092 1.808 l
-7.1 1.867 7.107 1.918 7.107 1.97 c
-7.115 2.029 7.122 2.076 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.152 2.22 c
-8.004 2.22 l
-7.993 2.139 7.982 2.029 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.161 l
-7.975 -1.415 7.938 -1.635 7.871 -1.822 c
-7.802 -2.006 7.699 -2.161 7.563 -2.278 c
-7.423 -2.403 7.258 -2.499 7.063 -2.557 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.53 m
-7.092 0.742 7.067 0.919 7.019 1.058 c
-6.978 1.206 6.924 1.324 6.857 1.411 c
-6.799 1.5 6.729 1.559 6.652 1.588 c
-6.571 1.625 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.621 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.367 c
-5.88 1.279 5.835 1.162 5.799 1.014 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.338 c
-6.049 -0.515 6.211 -0.602 6.417 -0.602 c
-6.483 -0.602 6.556 -0.588 6.637 -0.558 c
-6.725 -0.521 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.176 7.019 -0.029 c
-7.067 0.118 7.092 0.302 7.092 0.53 c
-11.036 -0.646 m
-12.168 -0.646 l
-12.168 -1.263 l
-8.86 -1.263 l
-8.86 -0.646 l
-10.124 -0.646 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.22 l
-11.036 2.22 l
-h
-10.124 3.514 0.912 -0.676 re
-10.124 2.837 m
-13.6 1.602 m
-13.057 1.602 l
-13.057 2.22 l
-13.644 2.22 l
-13.924 3.117 l
-14.497 3.117 l
-14.497 2.22 l
-15.732 2.22 l
-15.732 1.602 l
-14.497 1.602 l
-14.497 -0.103 l
-14.497 -0.323 l
-14.504 -0.393 14.527 -0.455 14.556 -0.515 c
-14.593 -0.565 14.648 -0.61 14.718 -0.646 c
-14.795 -0.675 14.909 -0.691 15.056 -0.691 c
-15.192 -0.691 15.327 -0.687 15.468 -0.675 c
-15.603 -0.658 15.736 -0.632 15.865 -0.602 c
-15.865 -1.205 l
-15.784 -1.216 15.707 -1.23 15.629 -1.249 c
-15.549 -1.26 15.471 -1.267 15.394 -1.278 c
-15.313 -1.286 15.225 -1.294 15.129 -1.294 c
-15.041 -1.3 14.942 -1.308 14.835 -1.308 c
-14.648 -1.308 14.486 -1.294 14.35 -1.263 c
-14.221 -1.227 14.107 -1.183 14.012 -1.132 c
-13.924 -1.084 13.85 -1.024 13.791 -0.955 c
-13.733 -0.878 13.689 -0.801 13.66 -0.72 c
-13.63 -0.632 13.608 -0.544 13.6 -0.455 c
-13.59 -0.359 13.586 -0.264 13.586 -0.176 c
-h
-21.986 2.22 m
-21.994 2.198 22.001 2.165 22.001 2.117 c
-22.009 2.076 22.016 2.029 22.016 1.97 c
-22.023 1.918 22.03 1.867 22.03 1.808 c
-22.03 1.646 l
-22.045 1.646 l
-22.104 1.764 22.17 1.86 22.251 1.941 c
-22.328 2.018 22.413 2.08 22.501 2.132 c
-22.589 2.19 22.677 2.228 22.765 2.249 c
-22.861 2.268 22.961 2.278 23.059 2.278 c
-23.265 2.278 23.445 2.234 23.603 2.147 c
-23.757 2.058 23.886 1.929 23.985 1.764 c
-24.092 1.606 24.169 1.415 24.22 1.191 c
-24.28 0.975 24.309 0.739 24.309 0.485 c
-24.309 0.221 24.28 -0.025 24.22 -0.249 c
-24.169 -0.467 24.092 -0.658 23.985 -0.823 c
-23.886 -0.981 23.754 -1.103 23.589 -1.19 c
-23.431 -1.278 23.243 -1.323 23.03 -1.323 c
-22.931 -1.323 22.832 -1.311 22.736 -1.294 c
-22.637 -1.271 22.545 -1.242 22.456 -1.19 c
-22.375 -1.142 22.298 -1.08 22.221 -0.999 c
-22.152 -0.922 22.093 -0.83 22.045 -0.72 c
-22.03 -0.72 l
-22.03 -0.808 l
-22.038 -0.849 22.045 -0.897 22.045 -0.955 c
-22.045 -1.117 l
-22.045 -1.294 l
-22.045 -2.631 l
-21.134 -2.631 l
-21.134 1.455 l
-21.134 1.621 21.126 1.768 21.119 1.897 c
-21.119 2.22 l
-h
-22.03 0.456 m
-22.03 0.229 22.049 0.037 22.089 -0.118 c
-22.137 -0.264 22.192 -0.382 22.251 -0.47 c
-22.317 -0.558 22.391 -0.625 22.471 -0.661 c
-22.549 -0.702 22.626 -0.72 22.707 -0.72 c
-22.803 -0.72 22.89 -0.698 22.971 -0.646 c
-23.059 -0.598 23.125 -0.529 23.177 -0.44 c
-23.235 -0.345 23.28 -0.22 23.31 -0.073 c
-23.346 0.081 23.368 0.269 23.368 0.485 c
-23.368 0.875 23.31 1.169 23.192 1.367 c
-23.081 1.563 22.927 1.661 22.722 1.661 c
-22.641 1.661 22.564 1.64 22.486 1.602 c
-22.406 1.563 22.332 1.5 22.265 1.411 c
-22.196 1.324 22.137 1.199 22.089 1.044 c
-22.049 0.886 22.03 0.691 22.03 0.456 c
-26.061 2.22 m
-26.061 0.265 l
-26.061 0.125 26.069 0 26.091 -0.118 c
-26.109 -0.228 26.142 -0.319 26.194 -0.397 c
-26.242 -0.477 26.3 -0.54 26.371 -0.588 c
-26.437 -0.628 26.521 -0.646 26.62 -0.646 c
-26.709 -0.646 26.789 -0.628 26.87 -0.588 c
-26.959 -0.54 27.032 -0.47 27.09 -0.382 c
-27.15 -0.286 27.194 -0.176 27.223 -0.058 c
-27.26 0.067 27.281 0.206 27.281 0.353 c
-27.281 2.22 l
-28.178 2.22 l
-28.178 -0.484 l
-28.178 -0.72 l
-28.185 -0.801 28.193 -0.878 28.193 -0.955 c
-28.193 -1.146 l
-28.201 -1.198 28.208 -1.234 28.208 -1.263 c
-27.355 -1.263 l
-27.344 -1.234 27.333 -1.198 27.326 -1.146 c
-27.326 -0.955 l
-27.326 -0.889 27.318 -0.819 27.312 -0.75 c
-27.312 -0.573 l
-27.296 -0.573 l
-27.179 -0.837 27.025 -1.028 26.841 -1.146 c
-26.664 -1.263 26.462 -1.323 26.238 -1.323 c
-26.032 -1.323 25.86 -1.286 25.724 -1.22 c
-25.584 -1.153 25.473 -1.058 25.386 -0.941 c
-25.305 -0.823 25.246 -0.687 25.209 -0.529 c
-25.18 -0.363 25.165 -0.187 25.165 0 c
-25.165 2.22 l
-h
-32.342 -0.249 m
-32.342 -0.419 32.301 -0.569 32.224 -0.706 c
-32.154 -0.833 32.052 -0.947 31.916 -1.043 c
-31.787 -1.132 31.625 -1.201 31.43 -1.249 c
-31.243 -1.297 31.027 -1.323 30.784 -1.323 c
-30.556 -1.323 30.358 -1.308 30.181 -1.278 c
-30.005 -1.249 29.847 -1.201 29.71 -1.132 c
-29.571 -1.055 29.461 -0.955 29.373 -0.837 c
-29.284 -0.72 29.215 -0.573 29.167 -0.397 c
-29.976 -0.279 l
-29.994 -0.378 30.023 -0.455 30.063 -0.515 c
-30.111 -0.573 30.17 -0.617 30.24 -0.646 c
-30.306 -0.675 30.387 -0.702 30.475 -0.72 c
-30.564 -0.731 30.666 -0.735 30.784 -0.735 c
-30.88 -0.735 30.975 -0.731 31.063 -0.72 c
-31.152 -0.702 31.229 -0.675 31.298 -0.646 c
-31.364 -0.617 31.416 -0.58 31.445 -0.529 c
-31.482 -0.481 31.504 -0.419 31.504 -0.338 c
-31.504 -0.242 31.474 -0.168 31.416 -0.118 c
-31.364 -0.07 31.298 -0.029 31.21 0 c
-31.122 0.037 31.011 0.067 30.886 0.088 c
-30.769 0.118 30.637 0.148 30.489 0.177 c
-30.35 0.214 30.211 0.254 30.063 0.294 c
-29.924 0.342 29.799 0.405 29.681 0.485 c
-29.571 0.563 29.483 0.661 29.417 0.779 c
-29.347 0.897 29.313 1.048 29.313 1.235 c
-29.313 1.389 29.344 1.532 29.402 1.661 c
-29.469 1.798 29.564 1.912 29.681 1.999 c
-29.806 2.087 29.964 2.153 30.152 2.205 c
-30.335 2.253 30.549 2.278 30.784 2.278 c
-30.967 2.278 31.144 2.257 31.313 2.22 c
-31.478 2.19 31.625 2.135 31.754 2.058 c
-31.879 1.989 31.989 1.889 32.077 1.764 c
-32.166 1.646 32.224 1.503 32.253 1.338 c
-31.46 1.264 l
-31.438 1.341 31.408 1.405 31.372 1.455 c
-31.331 1.515 31.283 1.559 31.225 1.588 c
-31.173 1.625 31.111 1.65 31.034 1.661 c
-30.953 1.669 30.872 1.676 30.784 1.676 c
-30.567 1.676 30.406 1.646 30.298 1.588 c
-30.188 1.536 30.137 1.448 30.137 1.324 c
-30.137 1.243 30.155 1.18 30.196 1.132 c
-30.244 1.081 30.306 1.044 30.387 1.014 c
-30.475 0.985 30.57 0.956 30.681 0.927 c
-30.788 0.904 30.909 0.882 31.048 0.853 c
-31.202 0.823 31.36 0.783 31.519 0.736 c
-31.673 0.684 31.813 0.622 31.931 0.544 c
-32.048 0.464 32.143 0.36 32.224 0.235 c
-32.301 0.107 32.342 -0.055 32.342 -0.249 c
-34.202 1.515 m
-34.319 1.786 34.47 1.985 34.657 2.103 c
-34.84 2.22 35.061 2.278 35.318 2.278 c
-35.524 2.278 35.694 2.242 35.833 2.176 c
-35.98 2.106 36.091 2.014 36.17 1.897 c
-36.259 1.779 36.318 1.636 36.347 1.47 c
-36.384 1.301 36.406 1.125 36.406 0.941 c
-36.406 -1.263 l
-35.495 -1.263 l
-35.495 0.736 l
-35.495 0.871 35.484 0.992 35.465 1.103 c
-35.455 1.21 35.428 1.297 35.392 1.367 c
-35.351 1.445 35.293 1.503 35.216 1.544 c
-35.146 1.58 35.054 1.602 34.936 1.602 c
-34.826 1.602 34.73 1.577 34.643 1.529 c
-34.554 1.478 34.473 1.411 34.408 1.324 c
-34.348 1.235 34.297 1.125 34.26 1 c
-34.231 0.882 34.216 0.75 34.216 0.603 c
-34.216 -1.263 l
-33.305 -1.263 l
-33.305 3.514 l
-34.216 3.514 l
-34.216 2.205 l
-34.216 2.135 34.209 2.066 34.202 1.999 c
-34.202 1.794 l
-34.202 1.735 34.194 1.68 34.186 1.632 c
-34.186 1.515 l
-h
-42.175 -2.631 m
-42.175 3.514 l
-44.101 3.514 l
-44.101 2.896 l
-43.028 2.896 l
-43.028 -2.013 l
-44.101 -2.013 l
-44.101 -2.631 l
-h
-46.075 0.838 1.866 -0.794 re
-46.075 0.044 m
-50.135 0.838 1.867 -0.794 re
-50.135 0.044 m
-54.214 1.602 m
-53.67 1.602 l
-53.67 2.22 l
-54.258 2.22 l
-54.537 3.117 l
-55.11 3.117 l
-55.11 2.22 l
-56.346 2.22 l
-56.346 1.602 l
-55.11 1.602 l
-55.11 -0.103 l
-55.11 -0.323 l
-55.118 -0.393 55.14 -0.455 55.17 -0.515 c
-55.206 -0.565 55.261 -0.61 55.331 -0.646 c
-55.409 -0.675 55.522 -0.691 55.669 -0.691 c
-55.806 -0.691 55.941 -0.687 56.081 -0.675 c
-56.217 -0.658 56.349 -0.632 56.477 -0.602 c
-56.477 -1.205 l
-56.396 -1.216 56.319 -1.23 56.242 -1.249 c
-56.161 -1.26 56.084 -1.267 56.007 -1.278 c
-55.926 -1.286 55.839 -1.294 55.743 -1.294 c
-55.654 -1.3 55.555 -1.308 55.449 -1.308 c
-55.261 -1.308 55.1 -1.294 54.964 -1.263 c
-54.835 -1.227 54.721 -1.183 54.626 -1.132 c
-54.537 -1.084 54.464 -1.024 54.405 -0.955 c
-54.347 -0.878 54.302 -0.801 54.273 -0.72 c
-54.243 -0.632 54.221 -0.544 54.214 -0.455 c
-54.203 -0.359 54.2 -0.264 54.2 -0.176 c
-h
-58.628 -1.323 m
-58.458 -1.323 58.308 -1.3 58.172 -1.263 c
-58.043 -1.216 57.929 -1.146 57.834 -1.058 c
-57.745 -0.97 57.676 -0.864 57.628 -0.735 c
-57.576 -0.598 57.554 -0.448 57.554 -0.279 c
-57.554 -0.073 57.587 0.096 57.657 0.235 c
-57.724 0.383 57.819 0.493 57.936 0.574 c
-58.061 0.661 58.204 0.724 58.363 0.765 c
-58.528 0.801 58.705 0.827 58.892 0.838 c
-59.612 0.853 l
-59.612 1.029 l
-59.612 1.147 59.601 1.249 59.583 1.338 c
-59.561 1.426 59.528 1.492 59.48 1.544 c
-59.44 1.602 59.392 1.64 59.333 1.661 c
-59.274 1.68 59.208 1.691 59.141 1.691 c
-59.072 1.691 59.01 1.68 58.95 1.661 c
-58.9 1.65 58.852 1.625 58.804 1.588 c
-58.763 1.559 58.73 1.507 58.701 1.441 c
-58.679 1.382 58.665 1.301 58.657 1.206 c
-57.716 1.249 l
-57.745 1.397 57.79 1.532 57.848 1.661 c
-57.915 1.786 58.01 1.897 58.127 1.985 c
-58.245 2.08 58.385 2.153 58.553 2.205 c
-58.73 2.253 58.936 2.278 59.172 2.278 c
-59.612 2.278 59.943 2.168 60.171 1.955 c
-60.406 1.75 60.523 1.441 60.523 1.029 c
-60.523 -0.235 l
-60.523 -0.455 l
-60.531 -0.515 60.546 -0.569 60.568 -0.617 c
-60.586 -0.658 60.616 -0.691 60.656 -0.72 c
-60.693 -0.742 60.744 -0.75 60.803 -0.75 c
-60.869 -0.75 60.939 -0.746 61.009 -0.735 c
-61.009 -1.22 l
-60.95 -1.23 60.895 -1.242 60.847 -1.249 c
-60.807 -1.26 60.766 -1.267 60.729 -1.278 c
-60.689 -1.286 60.645 -1.294 60.597 -1.294 c
-60.546 -1.3 60.487 -1.308 60.421 -1.308 c
-60.193 -1.308 60.028 -1.257 59.921 -1.146 c
-59.81 -1.028 59.748 -0.864 59.729 -0.646 c
-59.715 -0.646 l
-59.646 -0.756 59.575 -0.852 59.509 -0.941 c
-59.44 -1.022 59.363 -1.087 59.274 -1.146 c
-59.186 -1.205 59.087 -1.249 58.981 -1.278 c
-58.881 -1.308 58.763 -1.323 58.628 -1.323 c
-59.612 0.353 m
-59.186 0.339 l
-59.087 0.339 58.995 0.331 58.906 0.324 c
-58.826 0.312 58.76 0.287 58.701 0.25 c
-58.642 0.21 58.591 0.151 58.553 0.073 c
-58.513 0.004 58.495 -0.087 58.495 -0.205 c
-58.495 -0.374 58.528 -0.496 58.598 -0.573 c
-58.665 -0.654 58.763 -0.691 58.892 -0.691 c
-58.998 -0.691 59.098 -0.669 59.186 -0.617 c
-59.282 -0.569 59.363 -0.507 59.421 -0.426 c
-59.488 -0.349 59.538 -0.261 59.569 -0.162 c
-59.598 -0.055 59.612 0.059 59.612 0.177 c
-h
-63.261 -2.66 m
-63.045 -2.66 62.854 -2.634 62.688 -2.587 c
-62.519 -2.547 62.379 -2.484 62.262 -2.396 c
-62.144 -2.315 62.045 -2.219 61.967 -2.102 c
-61.898 -1.984 61.85 -1.855 61.821 -1.72 c
-62.717 -1.616 l
-62.754 -1.753 62.824 -1.859 62.923 -1.94 c
-63.019 -2.028 63.143 -2.072 63.291 -2.072 c
-63.379 -2.072 63.459 -2.057 63.54 -2.028 c
-63.617 -1.999 63.687 -1.944 63.746 -1.866 c
-63.806 -1.797 63.849 -1.705 63.879 -1.587 c
-63.916 -1.469 63.937 -1.323 63.937 -1.146 c
-63.937 -0.955 l
-63.937 -0.889 63.941 -0.83 63.952 -0.779 c
-63.952 -0.588 l
-63.937 -0.588 l
-63.839 -0.816 63.695 -0.977 63.511 -1.072 c
-63.324 -1.172 63.118 -1.22 62.894 -1.22 c
-62.688 -1.22 62.505 -1.183 62.35 -1.103 c
-62.203 -1.014 62.075 -0.897 61.967 -0.75 c
-61.869 -0.595 61.795 -0.411 61.747 -0.205 c
-61.696 0.008 61.674 0.243 61.674 0.5 c
-61.674 0.772 61.696 1.018 61.747 1.235 c
-61.806 1.448 61.887 1.632 61.998 1.779 c
-62.104 1.933 62.236 2.051 62.395 2.132 c
-62.549 2.22 62.736 2.264 62.952 2.264 c
-63.048 2.264 63.147 2.253 63.247 2.234 c
-63.342 2.213 63.43 2.18 63.511 2.132 c
-63.6 2.08 63.677 2.018 63.746 1.941 c
-63.824 1.86 63.886 1.768 63.937 1.661 c
-63.952 1.661 l
-63.952 1.808 l
-63.96 1.867 63.967 1.918 63.967 1.97 c
-63.974 2.029 63.982 2.076 63.982 2.117 c
-63.989 2.165 64 2.198 64.011 2.22 c
-64.863 2.22 l
-64.853 2.139 64.841 2.029 64.834 1.881 c
-64.834 1.411 l
-64.834 -1.161 l
-64.834 -1.415 64.797 -1.635 64.731 -1.822 c
-64.662 -2.006 64.558 -2.161 64.423 -2.278 c
-64.283 -2.403 64.118 -2.499 63.922 -2.557 c
-63.725 -2.624 63.504 -2.66 63.261 -2.66 c
-63.952 0.53 m
-63.952 0.742 63.926 0.919 63.879 1.058 c
-63.839 1.206 63.783 1.324 63.717 1.411 c
-63.658 1.5 63.588 1.559 63.511 1.588 c
-63.43 1.625 63.353 1.646 63.276 1.646 c
-63.177 1.646 63.085 1.621 62.997 1.573 c
-62.916 1.532 62.85 1.463 62.791 1.367 c
-62.74 1.279 62.696 1.162 62.659 1.014 c
-62.63 0.875 62.615 0.706 62.615 0.5 c
-62.615 0.125 62.673 -0.154 62.791 -0.338 c
-62.908 -0.515 63.07 -0.602 63.276 -0.602 c
-63.342 -0.602 63.415 -0.588 63.496 -0.558 c
-63.585 -0.521 63.658 -0.463 63.717 -0.382 c
-63.783 -0.294 63.839 -0.176 63.879 -0.029 c
-63.926 0.118 63.952 0.302 63.952 0.53 c
-68.895 -0.249 m
-68.895 -0.419 68.855 -0.569 68.777 -0.706 c
-68.707 -0.833 68.604 -0.947 68.469 -1.043 c
-68.34 -1.132 68.178 -1.201 67.983 -1.249 c
-67.796 -1.297 67.579 -1.323 67.336 -1.323 c
-67.109 -1.323 66.91 -1.308 66.734 -1.278 c
-66.557 -1.249 66.399 -1.201 66.264 -1.132 c
-66.124 -1.055 66.014 -0.955 65.925 -0.837 c
-65.838 -0.72 65.767 -0.573 65.72 -0.397 c
-66.528 -0.279 l
-66.547 -0.378 66.576 -0.455 66.617 -0.515 c
-66.665 -0.573 66.723 -0.617 66.792 -0.646 c
-66.859 -0.675 66.94 -0.702 67.028 -0.72 c
-67.116 -0.731 67.219 -0.735 67.336 -0.735 c
-67.432 -0.735 67.528 -0.731 67.616 -0.72 c
-67.704 -0.702 67.781 -0.675 67.851 -0.646 c
-67.918 -0.617 67.968 -0.58 67.999 -0.529 c
-68.035 -0.481 68.057 -0.419 68.057 -0.338 c
-68.057 -0.242 68.028 -0.168 67.968 -0.118 c
-67.918 -0.07 67.851 -0.029 67.763 0 c
-67.675 0.037 67.565 0.067 67.44 0.088 c
-67.322 0.118 67.189 0.148 67.043 0.177 c
-66.903 0.214 66.763 0.254 66.617 0.294 c
-66.476 0.342 66.352 0.405 66.235 0.485 c
-66.124 0.563 66.036 0.661 65.969 0.779 c
-65.9 0.897 65.867 1.048 65.867 1.235 c
-65.867 1.389 65.896 1.532 65.955 1.661 c
-66.021 1.798 66.117 1.912 66.235 1.999 c
-66.359 2.087 66.517 2.153 66.705 2.205 c
-66.888 2.253 67.101 2.278 67.336 2.278 c
-67.521 2.278 67.697 2.257 67.866 2.22 c
-68.031 2.19 68.178 2.135 68.307 2.058 c
-68.431 1.989 68.542 1.889 68.63 1.764 c
-68.718 1.646 68.777 1.503 68.807 1.338 c
-68.013 1.264 l
-67.991 1.341 67.961 1.405 67.924 1.455 c
-67.884 1.515 67.837 1.559 67.777 1.588 c
-67.726 1.625 67.664 1.65 67.586 1.661 c
-67.506 1.669 67.425 1.676 67.336 1.676 c
-67.12 1.676 66.958 1.646 66.852 1.588 c
-66.742 1.536 66.69 1.448 66.69 1.324 c
-66.69 1.243 66.708 1.18 66.748 1.132 c
-66.796 1.081 66.859 1.044 66.94 1.014 c
-67.028 0.985 67.124 0.956 67.234 0.927 c
-67.34 0.904 67.461 0.882 67.602 0.853 c
-67.756 0.823 67.914 0.783 68.072 0.736 c
-68.226 0.684 68.365 0.622 68.483 0.544 c
-68.601 0.464 68.697 0.36 68.777 0.235 c
-68.855 0.107 68.895 -0.055 68.895 -0.249 c
-70.221 -2.631 m
-70.221 -2.013 l
-71.294 -2.013 l
-71.294 2.896 l
-70.221 2.896 l
-70.221 3.514 l
-72.147 3.514 l
-72.147 -2.631 l
-h
-78.729 -2.631 m
-78.729 3.514 l
-80.654 3.514 l
-80.654 2.896 l
-79.581 2.896 l
-79.581 -2.013 l
-80.654 -2.013 l
-80.654 -2.631 l
-h
-85.052 1.47 m
-84.953 1.478 84.851 1.488 84.744 1.5 c
-84.634 1.518 84.512 1.529 84.377 1.529 c
-84.2 1.529 84.042 1.488 83.906 1.411 c
-83.766 1.341 83.649 1.243 83.554 1.118 c
-83.465 0.989 83.396 0.842 83.348 0.676 c
-83.307 0.507 83.288 0.331 83.288 0.148 c
-83.288 -1.263 l
-82.392 -1.263 l
-82.392 0.985 l
-82.392 1.11 82.381 1.235 82.363 1.353 c
-82.351 1.478 82.337 1.595 82.318 1.706 c
-82.307 1.823 82.293 1.918 82.274 1.999 c
-82.253 2.087 82.234 2.161 82.216 2.22 c
-83.097 2.22 l
-83.105 2.168 83.116 2.117 83.127 2.058 c
-83.145 1.999 83.16 1.933 83.171 1.867 c
-83.19 1.808 83.205 1.742 83.215 1.676 c
-83.223 1.606 83.234 1.544 83.245 1.484 c
-83.259 1.484 l
-83.296 1.602 83.348 1.709 83.406 1.808 c
-83.473 1.904 83.554 1.989 83.641 2.058 c
-83.73 2.124 83.833 2.18 83.951 2.22 c
-84.075 2.257 84.223 2.278 84.391 2.278 c
-84.516 2.278 84.634 2.271 84.744 2.264 c
-84.861 2.253 84.965 2.238 85.052 2.22 c
-h
-87.658 -1.323 m
-87.401 -1.323 87.173 -1.286 86.968 -1.22 c
-86.762 -1.142 86.585 -1.028 86.438 -0.881 c
-86.291 -0.727 86.174 -0.536 86.085 -0.309 c
-86.004 -0.084 85.968 0.181 85.968 0.485 c
-85.968 0.817 86.012 1.095 86.1 1.324 c
-86.195 1.559 86.324 1.742 86.482 1.881 c
-86.648 2.018 86.835 2.117 87.041 2.176 c
-87.246 2.242 87.456 2.278 87.673 2.278 c
-87.945 2.278 88.18 2.228 88.379 2.132 c
-88.584 2.043 88.749 1.912 88.878 1.735 c
-89.014 1.565 89.113 1.36 89.172 1.118 c
-89.239 0.882 89.275 0.618 89.275 0.324 c
-89.275 0.309 l
-86.908 0.309 l
-86.908 0.162 86.923 0.023 86.953 -0.103 c
-86.989 -0.231 87.045 -0.345 87.114 -0.44 c
-87.18 -0.529 87.265 -0.598 87.364 -0.646 c
-87.46 -0.698 87.573 -0.72 87.702 -0.72 c
-87.857 -0.72 87.996 -0.687 88.113 -0.617 c
-88.239 -0.551 88.327 -0.448 88.379 -0.309 c
-89.216 -0.382 l
-89.187 -0.481 89.131 -0.588 89.054 -0.706 c
-88.973 -0.816 88.871 -0.918 88.746 -1.014 c
-88.628 -1.103 88.474 -1.176 88.29 -1.234 c
-88.113 -1.294 87.901 -1.323 87.658 -1.323 c
-87.658 1.706 m
-87.57 1.706 87.481 1.691 87.394 1.661 c
-87.305 1.632 87.224 1.58 87.159 1.515 c
-87.089 1.445 87.03 1.357 86.982 1.249 c
-86.941 1.139 86.923 1.014 86.923 0.867 c
-88.393 0.867 l
-88.393 1.004 88.367 1.125 88.319 1.235 c
-88.279 1.341 88.224 1.43 88.158 1.5 c
-88.099 1.565 88.026 1.617 87.937 1.646 c
-87.849 1.683 87.754 1.706 87.658 1.706 c
-91.322 -1.263 m
-91.322 0.853 l
-91.322 1.018 91.315 1.154 91.307 1.264 c
-91.296 1.371 91.278 1.455 91.248 1.515 c
-91.226 1.58 91.197 1.632 91.16 1.661 c
-91.13 1.691 91.09 1.706 91.043 1.706 c
-90.984 1.706 90.929 1.676 90.881 1.617 c
-90.841 1.565 90.808 1.492 90.778 1.397 c
-90.748 1.309 90.723 1.195 90.704 1.058 c
-90.694 0.919 90.69 0.769 90.69 0.603 c
-90.69 -1.263 l
-89.94 -1.263 l
-89.94 1.47 l
-89.94 1.706 l
-89.94 1.926 l
-89.94 2.003 89.933 2.066 89.925 2.117 c
-89.925 2.22 l
-90.602 2.22 l
-90.602 2.132 l
-90.602 1.985 l
-90.609 1.926 90.617 1.867 90.617 1.808 c
-90.617 1.646 l
-90.631 1.646 l
-90.65 1.735 90.679 1.812 90.719 1.881 c
-90.756 1.959 90.8 2.029 90.852 2.087 c
-90.91 2.147 90.976 2.19 91.057 2.22 c
-91.134 2.257 91.223 2.278 91.322 2.278 c
-91.506 2.278 91.645 2.224 91.733 2.117 c
-91.829 2.018 91.899 1.86 91.939 1.646 c
-91.954 1.646 l
-91.99 1.742 92.031 1.831 92.071 1.912 c
-92.119 1.989 92.175 2.051 92.233 2.103 c
-92.292 2.161 92.358 2.205 92.439 2.234 c
-92.516 2.264 92.604 2.278 92.703 2.278 c
-92.84 2.278 92.954 2.253 93.042 2.205 c
-93.129 2.153 93.196 2.08 93.247 1.985 c
-93.306 1.885 93.343 1.757 93.365 1.602 c
-93.395 1.455 93.409 1.272 93.409 1.058 c
-93.409 -1.263 l
-92.689 -1.263 l
-92.689 0.853 l
-92.689 1.018 92.682 1.154 92.674 1.264 c
-92.663 1.371 92.645 1.455 92.615 1.515 c
-92.593 1.58 92.564 1.632 92.527 1.661 c
-92.498 1.691 92.458 1.706 92.41 1.706 c
-92.292 1.706 92.196 1.617 92.13 1.441 c
-92.071 1.272 92.042 1.014 92.042 0.661 c
-92.042 -1.263 l
-h
-97.43 0.485 m
-97.43 0.21 97.393 -0.04 97.326 -0.264 c
-97.256 -0.481 97.154 -0.669 97.018 -0.823 c
-96.878 -0.981 96.701 -1.103 96.489 -1.19 c
-96.271 -1.278 96.018 -1.323 95.724 -1.323 c
-95.448 -1.323 95.202 -1.278 94.989 -1.19 c
-94.783 -1.103 94.611 -0.981 94.475 -0.823 c
-94.335 -0.669 94.232 -0.481 94.166 -0.264 c
-94.096 -0.04 94.064 0.21 94.064 0.485 c
-94.064 0.739 94.093 0.975 94.151 1.191 c
-94.218 1.415 94.32 1.606 94.46 1.764 c
-94.596 1.929 94.772 2.058 94.989 2.147 c
-95.202 2.234 95.46 2.278 95.753 2.278 c
-96.065 2.278 96.327 2.234 96.533 2.147 c
-96.746 2.058 96.919 1.929 97.047 1.764 c
-97.183 1.606 97.282 1.415 97.341 1.191 c
-97.399 0.975 97.43 0.739 97.43 0.485 c
-96.474 0.485 m
-96.474 0.691 96.459 0.867 96.43 1.014 c
-96.408 1.162 96.371 1.283 96.312 1.382 c
-96.254 1.478 96.18 1.548 96.092 1.588 c
-96.003 1.636 95.893 1.661 95.768 1.661 c
-95.504 1.661 95.313 1.563 95.195 1.367 c
-95.078 1.18 95.018 0.886 95.018 0.485 c
-95.018 0.063 95.078 -0.242 95.195 -0.426 c
-95.313 -0.613 95.489 -0.706 95.724 -0.706 c
-95.849 -0.706 95.963 -0.687 96.063 -0.646 c
-96.158 -0.598 96.239 -0.525 96.298 -0.426 c
-96.364 -0.33 96.408 -0.205 96.43 -0.058 c
-96.459 0.088 96.474 0.269 96.474 0.485 c
-98.888 1.602 m
-98.344 1.602 l
-98.344 2.22 l
-98.932 2.22 l
-99.211 3.117 l
-99.785 3.117 l
-99.785 2.22 l
-101.019 2.22 l
-101.019 1.602 l
-99.785 1.602 l
-99.785 -0.103 l
-99.785 -0.323 l
-99.792 -0.393 99.814 -0.455 99.843 -0.515 c
-99.88 -0.565 99.936 -0.61 100.005 -0.646 c
-100.082 -0.675 100.196 -0.691 100.343 -0.691 c
-100.479 -0.691 100.615 -0.687 100.755 -0.675 c
-100.891 -0.658 101.023 -0.632 101.152 -0.602 c
-101.152 -1.205 l
-101.071 -1.216 100.994 -1.23 100.917 -1.249 c
-100.836 -1.26 100.759 -1.267 100.682 -1.278 c
-100.601 -1.286 100.512 -1.294 100.416 -1.294 c
-100.329 -1.3 100.229 -1.308 100.123 -1.308 c
-99.936 -1.308 99.774 -1.294 99.637 -1.263 c
-99.51 -1.227 99.396 -1.183 99.3 -1.132 c
-99.211 -1.084 99.138 -1.024 99.08 -0.955 c
-99.02 -0.878 98.976 -0.801 98.947 -0.72 c
-98.918 -0.632 98.895 -0.544 98.888 -0.455 c
-98.877 -0.359 98.874 -0.264 98.874 -0.176 c
-h
-103.904 -1.323 m
-103.647 -1.323 103.419 -1.286 103.213 -1.22 c
-103.007 -1.142 102.831 -1.028 102.685 -0.881 c
-102.537 -0.727 102.419 -0.536 102.332 -0.309 c
-102.251 -0.084 102.214 0.181 102.214 0.485 c
-102.214 0.817 102.257 1.095 102.346 1.324 c
-102.442 1.559 102.571 1.742 102.728 1.881 c
-102.893 2.018 103.082 2.117 103.287 2.176 c
-103.493 2.242 103.702 2.278 103.919 2.278 c
-104.191 2.278 104.426 2.228 104.624 2.132 c
-104.83 2.043 104.996 1.912 105.124 1.735 c
-105.26 1.565 105.359 1.36 105.418 1.118 c
-105.484 0.882 105.521 0.618 105.521 0.324 c
-105.521 0.309 l
-103.155 0.309 l
-103.155 0.162 103.169 0.023 103.198 -0.103 c
-103.236 -0.231 103.29 -0.345 103.36 -0.44 c
-103.427 -0.529 103.511 -0.598 103.61 -0.646 c
-103.706 -0.698 103.82 -0.72 103.948 -0.72 c
-104.102 -0.72 104.242 -0.687 104.36 -0.617 c
-104.485 -0.551 104.573 -0.448 104.624 -0.309 c
-105.463 -0.382 l
-105.433 -0.481 105.378 -0.588 105.301 -0.706 c
-105.22 -0.816 105.117 -0.918 104.992 -1.014 c
-104.875 -1.103 104.72 -1.176 104.536 -1.234 c
-104.36 -1.294 104.146 -1.323 103.904 -1.323 c
-103.904 1.706 m
-103.816 1.706 103.728 1.691 103.639 1.661 c
-103.552 1.632 103.471 1.58 103.404 1.515 c
-103.335 1.445 103.276 1.357 103.228 1.249 c
-103.188 1.139 103.169 1.014 103.169 0.867 c
-104.639 0.867 l
-104.639 1.004 104.613 1.125 104.566 1.235 c
-104.526 1.341 104.47 1.43 104.404 1.5 c
-104.345 1.565 104.272 1.617 104.183 1.646 c
-104.096 1.683 104 1.706 103.904 1.706 c
-106.774 -2.631 m
-106.774 -2.013 l
-107.847 -2.013 l
-107.847 2.896 l
-106.774 2.896 l
-106.774 3.514 l
-108.7 3.514 l
-108.7 -2.631 l
-h
-f
-Q
-q 1 0 0 1 95.2978 172.2447 cm
-0 0 m
-0 -2.103 l
--0.675 -2.103 l
--0.675 3.248 l
-1.029 3.248 l
-1.529 3.248 1.918 3.094 2.205 2.793 c
-2.488 2.499 2.631 2.105 2.631 1.617 c
-2.631 1.095 2.492 0.698 2.22 0.426 c
-1.955 0.151 1.577 0.008 1.088 0 c
-h
-0 0.573 m
-1.029 0.573 l
-1.33 0.573 1.563 0.661 1.72 0.837 c
-1.875 1.014 1.955 1.268 1.955 1.602 c
-1.955 1.926 1.871 2.183 1.706 2.381 c
-1.548 2.576 1.327 2.675 1.044 2.675 c
-0 2.675 l
-h
-5.439 -1.75 m
-5.222 -2.036 4.91 -2.176 4.499 -2.176 c
-4.135 -2.176 3.859 -2.055 3.675 -1.808 c
-3.499 -1.554 3.404 -1.191 3.396 -0.721 c
-3.396 1.881 l
-4.042 1.881 l
-4.042 -0.661 l
-4.042 -1.29 4.227 -1.602 4.601 -1.602 c
-5.002 -1.602 5.278 -1.426 5.424 -1.073 c
-5.424 1.881 l
-6.072 1.881 l
-6.072 -2.103 l
-5.453 -2.103 l
-h
-8.996 -1.088 m
-8.996 -0.941 8.941 -0.819 8.834 -0.721 c
-8.724 -0.625 8.518 -0.507 8.217 -0.368 c
-7.872 -0.221 7.629 -0.1 7.483 0 c
-7.335 0.106 7.225 0.224 7.159 0.353 c
-7.089 0.478 7.056 0.636 7.056 0.823 c
-7.056 1.147 7.173 1.415 7.408 1.631 c
-7.644 1.845 7.945 1.955 8.32 1.955 c
-8.702 1.955 9.01 1.841 9.246 1.617 c
-9.481 1.389 9.599 1.103 9.599 0.75 c
-8.952 0.75 l
-8.952 0.926 8.894 1.076 8.775 1.205 c
-8.659 1.33 8.503 1.396 8.32 1.396 c
-8.121 1.396 7.971 1.341 7.865 1.234 c
-7.755 1.135 7.703 1.003 7.703 0.837 c
-7.703 0.709 7.739 0.602 7.82 0.515 c
-7.898 0.434 8.088 0.33 8.393 0.206 c
-8.871 0.018 9.202 -0.169 9.378 -0.353 c
-9.555 -0.53 9.643 -0.757 9.643 -1.029 c
-9.643 -1.382 9.518 -1.661 9.276 -1.867 c
-9.041 -2.072 8.724 -2.176 8.335 -2.176 c
-7.913 -2.176 7.574 -2.058 7.321 -1.823 c
-7.063 -1.58 6.938 -1.276 6.938 -0.912 c
-7.585 -0.912 l
-7.593 -1.139 7.662 -1.316 7.791 -1.44 c
-7.915 -1.558 8.1 -1.617 8.335 -1.617 c
-8.548 -1.617 8.709 -1.569 8.819 -1.47 c
-8.937 -1.374 8.996 -1.246 8.996 -1.088 c
-11.127 1.469 m
-11.381 1.793 11.701 1.955 12.083 1.955 c
-12.788 1.955 13.145 1.484 13.156 0.544 c
-13.156 -2.103 l
-12.509 -2.103 l
-12.509 0.515 l
-12.509 0.827 12.454 1.047 12.347 1.176 c
-12.237 1.301 12.083 1.367 11.877 1.367 c
-11.719 1.367 11.572 1.311 11.437 1.205 c
-11.308 1.095 11.205 0.959 11.127 0.794 c
-11.127 -2.103 l
-10.481 -2.103 l
-10.481 3.542 l
-11.127 3.542 l
-h
-16.536 -2.103 -0.646 5.644 re
-17.419 0.073 m
-17.419 0.65 17.555 1.106 17.831 1.44 c
-18.113 1.782 18.485 1.955 18.947 1.955 c
-19.407 1.955 19.774 1.786 20.05 1.455 c
-20.333 1.132 20.48 0.683 20.491 0.118 c
-20.491 -0.309 l
-20.491 -0.879 20.347 -1.334 20.064 -1.675 c
-19.789 -2.01 19.422 -2.176 18.962 -2.176 c
-18.499 -2.176 18.128 -2.014 17.845 -1.691 c
-17.569 -1.359 17.426 -0.919 17.419 -0.368 c
-h
-18.066 -0.309 m
-18.066 -0.713 18.143 -1.029 18.301 -1.264 c
-18.466 -1.5 18.687 -1.617 18.962 -1.617 c
-19.528 -1.617 19.822 -1.205 19.844 -0.382 c
-19.844 0.073 l
-19.844 0.474 19.759 0.794 19.594 1.029 c
-19.437 1.271 19.219 1.396 18.947 1.396 c
-18.683 1.396 18.466 1.271 18.301 1.029 c
-18.143 0.794 18.066 0.474 18.066 0.073 c
-h
-22.71 -1.617 m
-22.924 -1.617 23.096 -1.554 23.225 -1.426 c
-23.36 -1.29 23.435 -1.099 23.445 -0.852 c
-24.062 -0.852 l
-24.041 -1.235 23.905 -1.554 23.651 -1.808 c
-23.394 -2.055 23.082 -2.176 22.71 -2.176 c
-22.218 -2.176 21.843 -2.024 21.579 -1.72 c
-21.321 -1.407 21.197 -0.941 21.197 -0.324 c
-21.197 0.118 l
-21.197 0.713 21.321 1.168 21.579 1.484 c
-21.843 1.797 22.218 1.955 22.71 1.955 c
-23.111 1.955 23.431 1.822 23.666 1.558 c
-23.908 1.301 24.041 0.955 24.062 0.515 c
-23.445 0.515 l
-23.423 0.808 23.35 1.029 23.225 1.176 c
-23.107 1.323 22.934 1.396 22.71 1.396 c
-22.416 1.396 22.2 1.297 22.064 1.103 c
-21.924 0.915 21.851 0.606 21.843 0.176 c
-21.843 -0.339 l
-21.843 -0.809 21.909 -1.143 22.049 -1.338 c
-22.196 -1.525 22.416 -1.617 22.71 -1.617 c
-26.855 -2.103 m
-26.815 -2.014 26.789 -1.867 26.782 -1.661 c
-26.547 -2.007 26.253 -2.176 25.9 -2.176 c
-25.536 -2.176 25.253 -2.08 25.047 -1.881 c
-24.849 -1.675 24.754 -1.389 24.754 -1.014 c
-24.754 -0.613 24.889 -0.294 25.165 -0.059 c
-25.437 0.183 25.812 0.309 26.282 0.309 c
-26.768 0.309 l
-26.768 0.735 l
-26.768 0.97 26.712 1.135 26.606 1.234 c
-26.495 1.341 26.334 1.396 26.121 1.396 c
-25.922 1.396 25.76 1.338 25.635 1.22 c
-25.518 1.103 25.459 0.955 25.459 0.779 c
-24.812 0.779 l
-24.812 0.974 24.871 1.165 24.989 1.352 c
-25.114 1.536 25.276 1.683 25.473 1.793 c
-25.679 1.899 25.907 1.955 26.165 1.955 c
-26.566 1.955 26.87 1.852 27.076 1.646 c
-27.289 1.44 27.403 1.147 27.414 0.764 c
-27.414 -1.249 l
-27.414 -1.554 27.451 -1.819 27.532 -2.043 c
-27.532 -2.103 l
-h
-25.988 -1.588 m
-26.154 -1.588 26.304 -1.544 26.444 -1.455 c
-26.591 -1.367 26.697 -1.257 26.768 -1.118 c
-26.768 -0.177 l
-26.4 -0.177 l
-26.084 -0.177 25.841 -0.246 25.665 -0.382 c
-25.488 -0.511 25.4 -0.698 25.4 -0.941 c
-25.4 -1.168 25.444 -1.334 25.533 -1.44 c
-25.621 -1.54 25.772 -1.588 25.988 -1.588 c
-29.12 -2.103 -0.647 5.644 re
-33.234 -1.617 m
-33.448 -1.617 33.621 -1.554 33.749 -1.426 c
-33.885 -1.29 33.959 -1.099 33.97 -0.852 c
-34.587 -0.852 l
-34.566 -1.235 34.429 -1.554 34.175 -1.808 c
-33.918 -2.055 33.606 -2.176 33.234 -2.176 c
-32.742 -2.176 32.368 -2.024 32.103 -1.72 c
-31.846 -1.407 31.721 -0.941 31.721 -0.324 c
-31.721 0.118 l
-31.721 0.713 31.846 1.168 32.103 1.484 c
-32.368 1.797 32.742 1.955 33.234 1.955 c
-33.635 1.955 33.955 1.822 34.19 1.558 c
-34.433 1.301 34.566 0.955 34.587 0.515 c
-33.97 0.515 l
-33.948 0.808 33.874 1.029 33.749 1.176 c
-33.631 1.323 33.459 1.396 33.234 1.396 c
-32.941 1.396 32.725 1.297 32.588 1.103 c
-32.449 0.915 32.375 0.606 32.368 0.176 c
-32.368 -0.339 l
-32.368 -0.809 32.434 -1.143 32.573 -1.338 c
-32.721 -1.525 32.941 -1.617 33.234 -1.617 c
-35.983 1.469 m
-36.237 1.793 36.557 1.955 36.939 1.955 c
-37.645 1.955 38.001 1.484 38.012 0.544 c
-38.012 -2.103 l
-37.365 -2.103 l
-37.365 0.515 l
-37.365 0.827 37.311 1.047 37.203 1.176 c
-37.093 1.301 36.939 1.367 36.733 1.367 c
-36.575 1.367 36.428 1.311 36.292 1.205 c
-36.164 1.095 36.06 0.959 35.983 0.794 c
-35.983 -2.103 l
-35.337 -2.103 l
-35.337 3.542 l
-35.983 3.542 l
-h
-41.011 -2.103 m
-40.97 -2.014 40.945 -1.867 40.937 -1.661 c
-40.702 -2.007 40.409 -2.176 40.055 -2.176 c
-39.692 -2.176 39.409 -2.08 39.202 -1.881 c
-39.004 -1.675 38.909 -1.389 38.909 -1.014 c
-38.909 -0.613 39.044 -0.294 39.32 -0.059 c
-39.592 0.183 39.967 0.309 40.438 0.309 c
-40.922 0.309 l
-40.922 0.735 l
-40.922 0.97 40.868 1.135 40.76 1.234 c
-40.65 1.341 40.488 1.396 40.276 1.396 c
-40.077 1.396 39.916 1.338 39.79 1.22 c
-39.673 1.103 39.615 0.955 39.615 0.779 c
-38.967 0.779 l
-38.967 0.974 39.027 1.165 39.144 1.352 c
-39.269 1.536 39.43 1.683 39.629 1.793 c
-39.835 1.899 40.062 1.955 40.32 1.955 c
-40.721 1.955 41.026 1.852 41.231 1.646 c
-41.444 1.44 41.558 1.147 41.569 0.764 c
-41.569 -1.249 l
-41.569 -1.554 41.606 -1.819 41.687 -2.043 c
-41.687 -2.103 l
-h
-40.143 -1.588 m
-40.309 -1.588 40.459 -1.544 40.599 -1.455 c
-40.746 -1.367 40.853 -1.257 40.922 -1.118 c
-40.922 -0.177 l
-40.555 -0.177 l
-40.239 -0.177 39.996 -0.246 39.82 -0.382 c
-39.644 -0.511 39.555 -0.698 39.555 -0.941 c
-39.555 -1.168 39.599 -1.334 39.688 -1.44 c
-39.776 -1.54 39.927 -1.588 40.143 -1.588 c
-43.187 1.881 m
-43.201 1.44 l
-43.455 1.782 43.778 1.955 44.171 1.955 c
-44.877 1.955 45.233 1.484 45.244 0.544 c
-45.244 -2.103 l
-44.598 -2.103 l
-44.598 0.515 l
-44.598 0.827 44.542 1.047 44.436 1.176 c
-44.326 1.301 44.171 1.367 43.965 1.367 c
-43.807 1.367 43.661 1.311 43.524 1.205 c
-43.395 1.095 43.293 0.959 43.216 0.794 c
-43.216 -2.103 l
-42.568 -2.103 l
-42.568 1.881 l
-h
-46.082 0.073 m
-46.082 0.69 46.192 1.153 46.42 1.469 c
-46.644 1.793 46.979 1.955 47.42 1.955 c
-47.82 1.955 48.125 1.778 48.33 1.425 c
-48.375 1.881 l
-48.963 1.881 l
-48.963 -2.146 l
-48.963 -2.635 48.835 -3.013 48.581 -3.278 c
-48.324 -3.543 47.971 -3.675 47.522 -3.675 c
-47.324 -3.675 47.104 -3.624 46.861 -3.528 c
-46.615 -3.429 46.435 -3.308 46.317 -3.161 c
-46.582 -2.72 l
-46.846 -2.984 47.144 -3.117 47.478 -3.117 c
-48.014 -3.117 48.29 -2.822 48.301 -2.234 c
-48.301 -1.706 l
-48.095 -2.022 47.794 -2.176 47.405 -2.176 c
-46.994 -2.176 46.67 -2.024 46.435 -1.72 c
-46.207 -1.407 46.09 -0.956 46.082 -0.368 c
-h
-46.743 -0.309 m
-46.743 -0.75 46.806 -1.081 46.934 -1.294 c
-47.06 -1.5 47.276 -1.602 47.581 -1.602 c
-47.904 -1.602 48.143 -1.437 48.301 -1.103 c
-48.301 0.881 l
-48.132 1.205 47.894 1.367 47.581 1.367 c
-47.287 1.367 47.071 1.264 46.934 1.058 c
-46.806 0.852 46.743 0.529 46.743 0.088 c
-h
-51.344 -2.176 m
-50.844 -2.176 50.462 -2.028 50.198 -1.735 c
-49.933 -1.44 49.801 -1.007 49.801 -0.426 c
-49.801 0.044 l
-49.801 0.64 49.926 1.106 50.183 1.44 c
-50.447 1.782 50.807 1.955 51.27 1.955 c
-51.73 1.955 52.072 1.801 52.299 1.5 c
-52.535 1.205 52.656 0.742 52.667 0.118 c
-52.667 -0.309 l
-50.447 -0.309 l
-50.447 -0.397 l
-50.447 -0.831 50.524 -1.143 50.682 -1.338 c
-50.848 -1.525 51.079 -1.617 51.374 -1.617 c
-51.568 -1.617 51.741 -1.584 51.888 -1.515 c
-52.035 -1.437 52.171 -1.319 52.299 -1.162 c
-52.638 -1.573 l
-52.351 -1.977 51.921 -2.176 51.344 -2.176 c
-51.27 1.396 m
-50.995 1.396 50.793 1.301 50.668 1.117 c
-50.539 0.929 50.466 0.64 50.447 0.249 c
-52.02 0.249 l
-52.02 0.338 l
-51.998 0.72 51.933 0.989 51.814 1.147 c
-51.697 1.311 51.513 1.396 51.27 1.396 c
-55.386 -1.088 m
-55.386 -0.941 55.331 -0.819 55.225 -0.721 c
-55.114 -0.625 54.909 -0.507 54.607 -0.368 c
-54.262 -0.221 54.019 -0.1 53.872 0 c
-53.726 0.106 53.616 0.224 53.549 0.353 c
-53.479 0.478 53.446 0.636 53.446 0.823 c
-53.446 1.147 53.564 1.415 53.799 1.631 c
-54.034 1.845 54.335 1.955 54.711 1.955 c
-55.093 1.955 55.401 1.841 55.636 1.617 c
-55.871 1.389 55.989 1.103 55.989 0.75 c
-55.342 0.75 l
-55.342 0.926 55.283 1.076 55.166 1.205 c
-55.048 1.33 54.894 1.396 54.711 1.396 c
-54.512 1.396 54.362 1.341 54.254 1.234 c
-54.144 1.135 54.092 1.003 54.092 0.837 c
-54.092 0.709 54.129 0.602 54.21 0.515 c
-54.287 0.434 54.479 0.33 54.784 0.206 c
-55.262 0.018 55.592 -0.169 55.769 -0.353 c
-55.945 -0.53 56.033 -0.757 56.033 -1.029 c
-56.033 -1.382 55.908 -1.661 55.665 -1.867 c
-55.43 -2.072 55.114 -2.176 54.725 -2.176 c
-54.302 -2.176 53.965 -2.058 53.711 -1.823 c
-53.454 -1.58 53.329 -1.276 53.329 -0.912 c
-53.975 -0.912 l
-53.982 -1.139 54.052 -1.316 54.181 -1.44 c
-54.306 -1.558 54.49 -1.617 54.725 -1.617 c
-54.938 -1.617 55.1 -1.569 55.21 -1.47 c
-55.328 -1.374 55.386 -1.246 55.386 -1.088 c
-59.443 2.836 m
-59.443 1.881 l
-60.046 1.881 l
-60.046 1.352 l
-59.443 1.352 l
-59.443 -1.118 l
-59.443 -1.276 59.465 -1.393 59.517 -1.47 c
-59.575 -1.551 59.664 -1.588 59.781 -1.588 c
-59.87 -1.588 59.958 -1.573 60.046 -1.544 c
-60.046 -2.103 l
-59.899 -2.15 59.744 -2.176 59.59 -2.176 c
-59.333 -2.176 59.139 -2.084 59.002 -1.897 c
-58.863 -1.712 58.796 -1.452 58.796 -1.118 c
-58.796 1.352 l
-58.194 1.352 l
-58.194 1.881 l
-58.796 1.881 l
-58.796 2.836 l
-h
-60.604 0.073 m
-60.604 0.65 60.741 1.106 61.016 1.44 c
-61.3 1.782 61.67 1.955 62.133 1.955 c
-62.593 1.955 62.96 1.786 63.236 1.455 c
-63.519 1.132 63.665 0.683 63.677 0.118 c
-63.677 -0.309 l
-63.677 -0.879 63.534 -1.334 63.251 -1.675 c
-62.975 -2.01 62.607 -2.176 62.148 -2.176 c
-61.685 -2.176 61.314 -2.014 61.03 -1.691 c
-60.755 -1.359 60.612 -0.919 60.604 -0.368 c
-h
-61.252 -0.309 m
-61.252 -0.713 61.329 -1.029 61.487 -1.264 c
-61.652 -1.5 61.872 -1.617 62.148 -1.617 c
-62.713 -1.617 63.008 -1.205 63.03 -0.382 c
-63.03 0.073 l
-63.03 0.474 62.946 0.794 62.78 1.029 c
-62.622 1.271 62.405 1.396 62.133 1.396 c
-61.869 1.396 61.652 1.271 61.487 1.029 c
-61.329 0.794 61.252 0.474 61.252 0.073 c
-h
-67.087 2.836 m
-67.087 1.881 l
-67.69 1.881 l
-67.69 1.352 l
-67.087 1.352 l
-67.087 -1.118 l
-67.087 -1.276 67.109 -1.393 67.16 -1.47 c
-67.22 -1.551 67.307 -1.588 67.425 -1.588 c
-67.513 -1.588 67.602 -1.573 67.69 -1.544 c
-67.69 -2.103 l
-67.542 -2.15 67.388 -2.176 67.234 -2.176 c
-66.977 -2.176 66.782 -2.084 66.646 -1.897 c
-66.507 -1.712 66.44 -1.452 66.44 -1.118 c
-66.44 1.352 l
-65.838 1.352 l
-65.838 1.881 l
-66.44 1.881 l
-66.44 2.836 l
-h
-69.101 1.469 m
-69.354 1.793 69.674 1.955 70.056 1.955 c
-70.761 1.955 71.118 1.484 71.129 0.544 c
-71.129 -2.103 l
-70.482 -2.103 l
-70.482 0.515 l
-70.482 0.827 70.428 1.047 70.32 1.176 c
-70.21 1.301 70.056 1.367 69.85 1.367 c
-69.692 1.367 69.545 1.311 69.41 1.205 c
-69.281 1.095 69.178 0.959 69.101 0.794 c
-69.101 -2.103 l
-68.454 -2.103 l
-68.454 3.542 l
-69.101 3.542 l
-h
-73.51 -2.176 m
-73.011 -2.176 72.629 -2.028 72.364 -1.735 c
-72.099 -1.44 71.967 -1.007 71.967 -0.426 c
-71.967 0.044 l
-71.967 0.64 72.092 1.106 72.349 1.44 c
-72.614 1.782 72.974 1.955 73.437 1.955 c
-73.896 1.955 74.238 1.801 74.466 1.5 c
-74.701 1.205 74.823 0.742 74.833 0.118 c
-74.833 -0.309 l
-72.614 -0.309 l
-72.614 -0.397 l
-72.614 -0.831 72.691 -1.143 72.849 -1.338 c
-73.015 -1.525 73.246 -1.617 73.539 -1.617 c
-73.734 -1.617 73.907 -1.584 74.054 -1.515 c
-74.201 -1.437 74.337 -1.319 74.466 -1.162 c
-74.804 -1.573 l
-74.517 -1.977 74.087 -2.176 73.51 -2.176 c
-73.437 1.396 m
-73.161 1.396 72.959 1.301 72.834 1.117 c
-72.706 0.929 72.632 0.64 72.614 0.249 c
-74.187 0.249 l
-74.187 0.338 l
-74.164 0.72 74.098 0.989 73.981 1.147 c
-73.863 1.311 73.68 1.396 73.437 1.396 c
-f
-Q
-q 1 0 0 1 174.4817 173.112 cm
-0 0 m
--0.338 0.029 l
--0.625 0.029 -0.816 -0.096 -0.911 -0.339 c
--0.911 -2.97 l
--1.955 -2.97 l
--1.955 1.014 l
--0.985 1.014 l
--0.955 0.573 l
--0.79 0.914 -0.559 1.087 -0.264 1.087 c
--0.147 1.087 -0.055 1.066 0.015 1.028 c
-h
-2.072 -3.043 m
-1.544 -3.043 1.125 -2.889 0.823 -2.573 c
-0.53 -2.249 0.382 -1.79 0.382 -1.191 c
-0.382 -0.882 l
-0.382 -0.258 0.518 0.228 0.794 0.573 c
-1.066 0.914 1.459 1.087 1.97 1.087 c
-2.469 1.087 2.841 0.926 3.088 0.602 c
-3.341 0.279 3.473 -0.198 3.484 -0.823 c
-3.484 -1.324 l
-1.411 -1.324 l
-1.43 -1.617 1.492 -1.834 1.602 -1.97 c
-1.72 -2.109 1.9 -2.176 2.147 -2.176 c
-2.488 -2.176 2.778 -2.058 3.013 -1.823 c
-3.425 -2.455 l
-3.296 -2.631 3.109 -2.774 2.866 -2.881 c
-2.62 -2.988 2.356 -3.043 2.072 -3.043 c
-1.426 -0.603 m
-2.455 -0.603 l
-2.455 -0.5 l
-2.455 -0.265 2.415 -0.088 2.338 0.029 c
-2.267 0.154 2.139 0.22 1.955 0.22 c
-1.779 0.22 1.646 0.151 1.558 0.014 c
-1.478 -0.114 1.434 -0.32 1.426 -0.603 c
-5.042 1.014 m
-5.072 0.646 l
-5.307 0.941 5.615 1.087 5.997 1.087 c
-6.398 1.087 6.677 0.904 6.835 0.544 c
-7.071 0.904 7.398 1.087 7.82 1.087 c
-8.515 1.087 8.867 0.602 8.879 -0.368 c
-8.879 -2.97 l
-7.85 -2.97 l
-7.85 -0.426 l
-7.85 -0.202 7.813 -0.04 7.747 0.058 c
-7.688 0.154 7.578 0.205 7.423 0.205 c
-7.225 0.205 7.086 0.087 6.997 -0.148 c
-6.997 -2.97 l
-5.953 -2.97 l
-5.953 -0.441 l
-5.953 -0.206 5.924 -0.04 5.866 0.058 c
-5.806 0.154 5.696 0.205 5.542 0.205 c
-5.365 0.205 5.222 0.11 5.116 -0.073 c
-5.116 -2.97 l
-4.072 -2.97 l
-4.072 1.014 l
-h
-9.54 -0.853 m
-9.54 -0.246 9.679 0.228 9.966 0.573 c
-10.249 0.914 10.643 1.087 11.142 1.087 c
-11.649 1.087 12.046 0.914 12.333 0.573 c
-12.615 0.228 12.759 -0.246 12.759 -0.853 c
-12.759 -1.118 l
-12.759 -1.716 12.615 -2.186 12.333 -2.529 c
-12.046 -2.874 11.649 -3.043 11.142 -3.043 c
-10.631 -3.043 10.234 -2.874 9.951 -2.529 c
-9.675 -2.186 9.54 -1.713 9.54 -1.103 c
-h
-10.583 -1.118 m
-10.583 -1.823 10.768 -2.176 11.142 -2.176 c
-11.495 -2.176 11.686 -1.881 11.715 -1.294 c
-11.715 -0.853 l
-11.715 -0.493 11.664 -0.221 11.568 -0.044 c
-11.469 0.132 11.326 0.22 11.142 0.22 c
-10.965 0.22 10.826 0.132 10.73 -0.044 c
-10.631 -0.221 10.583 -0.493 10.583 -0.853 c
-h
-14.612 1.984 m
-14.612 1.014 l
-15.14 1.014 l
-15.14 0.22 l
-14.612 0.22 l
-14.612 -1.75 l
-14.612 -1.908 14.629 -2.014 14.67 -2.072 c
-14.718 -2.132 14.803 -2.161 14.92 -2.161 c
-15.026 -2.161 15.111 -2.153 15.169 -2.132 c
-15.169 -2.94 l
-14.993 -3.007 14.803 -3.043 14.596 -3.043 c
-13.92 -3.043 13.575 -2.657 13.567 -1.881 c
-13.567 0.22 l
-13.112 0.22 l
-13.112 1.014 l
-13.567 1.014 l
-13.567 1.984 l
-h
-17.315 -3.043 m
-16.787 -3.043 16.368 -2.889 16.066 -2.573 c
-15.772 -2.249 15.626 -1.79 15.626 -1.191 c
-15.626 -0.882 l
-15.626 -0.258 15.761 0.228 16.037 0.573 c
-16.309 0.914 16.702 1.087 17.213 1.087 c
-17.712 1.087 18.084 0.926 18.33 0.602 c
-18.583 0.279 18.716 -0.198 18.726 -0.823 c
-18.726 -1.324 l
-16.654 -1.324 l
-16.673 -1.617 16.735 -1.834 16.845 -1.97 c
-16.963 -2.109 17.143 -2.176 17.39 -2.176 c
-17.731 -2.176 18.021 -2.058 18.256 -1.823 c
-18.668 -2.455 l
-18.539 -2.631 18.352 -2.774 18.109 -2.881 c
-17.864 -2.988 17.598 -3.043 17.315 -3.043 c
-16.669 -0.603 m
-17.698 -0.603 l
-17.698 -0.5 l
-17.698 -0.265 17.658 -0.088 17.581 0.029 c
-17.511 0.154 17.382 0.22 17.199 0.22 c
-17.022 0.22 16.889 0.151 16.802 0.014 c
-16.721 -0.114 16.676 -0.32 16.669 -0.603 c
-f
-Q
-q 1 0 0 1 193.9437 170.4949 cm
-0 0 m
-0 0.118 0.033 0.214 0.103 0.294 c
-0.168 0.372 0.272 0.412 0.411 0.412 c
-0.559 0.412 0.665 0.372 0.735 0.294 c
-0.812 0.214 0.852 0.118 0.852 0 c
-0.852 -0.11 0.812 -0.201 0.735 -0.278 c
-0.665 -0.356 0.559 -0.396 0.411 -0.396 c
-0.272 -0.396 0.168 -0.356 0.103 -0.278 c
-0.033 -0.201 0 -0.11 0 0 c
-6.938 4.998 m
-6.938 1.191 l
-6.938 0.691 6.79 0.294 6.497 0 c
-6.21 -0.286 5.81 -0.426 5.292 -0.426 c
-4.762 -0.426 4.355 -0.29 4.072 -0.014 c
-3.796 0.269 3.659 0.669 3.659 1.191 c
-3.659 4.998 l
-4.322 4.998 l
-4.322 1.22 l
-4.322 0.857 4.395 0.588 4.542 0.412 c
-4.696 0.235 4.946 0.148 5.292 0.148 c
-5.633 0.148 5.88 0.235 6.026 0.412 c
-6.181 0.588 6.262 0.857 6.262 1.22 c
-6.262 4.998 l
-h
-9.834 0.662 m
-9.834 0.809 9.778 0.93 9.672 1.029 c
-9.562 1.125 9.356 1.243 9.055 1.382 c
-8.709 1.529 8.467 1.65 8.32 1.75 c
-8.172 1.856 8.062 1.974 7.996 2.103 c
-7.927 2.228 7.893 2.386 7.893 2.573 c
-7.893 2.897 8.01 3.165 8.246 3.381 c
-8.481 3.595 8.783 3.705 9.157 3.705 c
-9.539 3.705 9.848 3.591 10.083 3.367 c
-10.318 3.138 10.437 2.852 10.437 2.5 c
-9.789 2.5 l
-9.789 2.675 9.731 2.826 9.612 2.955 c
-9.496 3.08 9.341 3.146 9.157 3.146 c
-8.959 3.146 8.808 3.091 8.702 2.984 c
-8.592 2.885 8.54 2.753 8.54 2.587 c
-8.54 2.459 8.577 2.352 8.658 2.264 c
-8.735 2.183 8.926 2.08 9.231 1.956 c
-9.708 1.768 10.04 1.58 10.215 1.397 c
-10.392 1.22 10.48 0.992 10.48 0.721 c
-10.48 0.368 10.356 0.088 10.113 -0.118 c
-9.878 -0.323 9.562 -0.426 9.172 -0.426 c
-8.75 -0.426 8.411 -0.309 8.158 -0.073 c
-7.9 0.169 7.775 0.474 7.775 0.838 c
-8.422 0.838 l
-8.43 0.611 8.5 0.434 8.628 0.309 c
-8.753 0.192 8.937 0.133 9.172 0.133 c
-9.385 0.133 9.547 0.181 9.657 0.279 c
-9.774 0.375 9.834 0.504 9.834 0.662 c
-12.744 -0.426 m
-12.244 -0.426 11.862 -0.278 11.597 0.015 c
-11.333 0.309 11.2 0.743 11.2 1.324 c
-11.2 1.794 l
-11.2 2.389 11.326 2.856 11.582 3.19 c
-11.848 3.532 12.207 3.705 12.67 3.705 c
-13.13 3.705 13.471 3.55 13.699 3.249 c
-13.934 2.955 14.056 2.492 14.067 1.867 c
-14.067 1.441 l
-11.848 1.441 l
-11.848 1.353 l
-11.848 0.919 11.925 0.607 12.083 0.412 c
-12.247 0.225 12.479 0.133 12.773 0.133 c
-12.968 0.133 13.14 0.166 13.288 0.235 c
-13.435 0.313 13.571 0.431 13.699 0.588 c
-14.038 0.177 l
-13.751 -0.228 13.321 -0.426 12.744 -0.426 c
-12.67 3.146 m
-12.395 3.146 12.193 3.051 12.068 2.866 c
-11.939 2.679 11.866 2.389 11.848 1.999 c
-13.42 1.999 l
-13.42 2.087 l
-13.398 2.469 13.332 2.738 13.215 2.897 c
-13.097 3.061 12.913 3.146 12.67 3.146 c
-f
-Q
-212.273 172.01 -1.793 0.867 re
-215.007 172.01 -1.793 0.867 re
-217.08 175.096 m
-217.08 174.126 l
-217.609 174.126 l
-217.609 173.332 l
-217.08 173.332 l
-217.08 171.362 l
-217.08 171.204 217.098 171.098 217.139 171.04 c
-217.187 170.98 217.271 170.951 217.389 170.951 c
-217.495 170.951 217.58 170.959 217.638 170.98 c
-217.638 170.172 l
-217.462 170.105 217.271 170.069 217.065 170.069 c
-216.389 170.069 216.044 170.455 216.036 171.231 c
-216.036 173.332 l
-215.581 173.332 l
-215.581 174.126 l
-216.036 174.126 l
-216.036 175.096 l
-h
-220.063 170.142 m
-220.034 170.201 220.005 170.304 219.976 170.452 c
-219.788 170.194 219.538 170.069 219.226 170.069 c
-218.891 170.069 218.612 170.176 218.388 170.392 c
-218.172 170.616 218.064 170.907 218.064 171.26 c
-218.064 171.671 218.197 171.987 218.461 172.216 c
-218.727 172.451 219.108 172.568 219.608 172.568 c
-219.932 172.568 l
-219.932 172.891 l
-219.932 173.068 219.895 173.189 219.828 173.259 c
-219.77 173.336 219.681 173.376 219.564 173.376 c
-219.307 173.376 219.182 173.222 219.182 172.921 c
-218.138 172.921 l
-218.138 173.292 218.274 173.597 218.55 173.832 c
-218.822 174.074 219.171 174.2 219.593 174.2 c
-220.034 174.2 220.373 174.082 220.608 173.847 c
-220.85 173.619 220.975 173.295 220.975 172.877 c
-220.975 171.009 l
-220.975 170.664 221.023 170.396 221.122 170.201 c
-221.122 170.142 l
-h
-219.461 170.892 m
-219.568 170.892 219.66 170.911 219.741 170.951 c
-219.828 170.999 219.891 171.057 219.932 171.127 c
-219.932 171.95 l
-219.681 171.95 l
-219.505 171.95 219.362 171.892 219.255 171.774 c
-219.156 171.664 219.108 171.517 219.108 171.333 c
-219.108 171.04 219.226 170.892 219.461 170.892 c
-221.592 172.259 m
-221.592 172.906 221.71 173.391 221.945 173.714 c
-222.18 174.038 222.511 174.2 222.945 174.2 c
-223.298 174.2 223.569 174.057 223.768 173.773 c
-223.812 174.126 l
-224.753 174.126 l
-224.753 170.142 l
-224.753 169.635 224.609 169.246 224.327 168.981 c
-224.04 168.709 223.635 168.57 223.107 168.57 c
-222.879 168.57 222.644 168.613 222.401 168.702 c
-222.166 168.79 221.989 168.904 221.871 169.041 c
-222.224 169.76 l
-222.32 169.654 222.449 169.569 222.606 169.511 c
-222.761 169.444 222.908 169.407 223.047 169.407 c
-223.283 169.407 223.448 169.467 223.547 169.584 c
-223.654 169.694 223.709 169.87 223.709 170.113 c
-223.709 170.466 l
-223.51 170.201 223.253 170.069 222.93 170.069 c
-222.507 170.069 222.18 170.231 221.945 170.554 c
-221.717 170.885 221.6 171.356 221.592 171.965 c
-h
-222.636 171.994 m
-222.636 171.62 222.684 171.352 222.783 171.186 c
-222.879 171.017 223.033 170.936 223.238 170.936 c
-223.452 170.936 223.61 171.013 223.709 171.171 c
-223.709 173.068 l
-223.599 173.233 223.444 173.317 223.238 173.317 c
-223.033 173.317 222.879 173.233 222.783 173.068 c
-222.684 172.898 222.636 172.63 222.636 172.259 c
-h
-227.281 171.216 m
-227.281 171.304 227.236 171.381 227.149 171.451 c
-227.061 171.528 226.873 171.631 226.59 171.759 c
-226.157 171.936 225.859 172.116 225.694 172.303 c
-225.536 172.487 225.458 172.719 225.458 172.994 c
-225.458 173.336 225.58 173.619 225.825 173.847 c
-226.079 174.082 226.417 174.2 226.839 174.2 c
-227.27 174.2 227.619 174.086 227.884 173.862 c
-228.148 173.633 228.281 173.332 228.281 172.95 c
-227.236 172.95 l
-227.236 173.274 227.097 173.435 226.825 173.435 c
-226.715 173.435 226.627 173.398 226.561 173.332 c
-226.49 173.263 226.458 173.163 226.458 173.039 c
-226.458 172.95 226.494 172.869 226.575 172.803 c
-226.652 172.744 226.833 172.649 227.119 172.524 c
-227.549 172.366 227.847 172.189 228.015 171.994 c
-228.192 171.807 228.281 171.557 228.281 171.245 c
-228.281 170.892 228.148 170.606 227.884 170.392 c
-227.619 170.176 227.27 170.069 226.839 170.069 c
-226.546 170.069 226.285 170.124 226.061 170.231 c
-225.833 170.348 225.657 170.51 225.532 170.716 c
-225.414 170.922 225.355 171.142 225.355 171.377 c
-226.34 171.377 l
-226.34 171.19 226.377 171.054 226.458 170.965 c
-226.546 170.878 226.679 170.834 226.855 170.834 c
-227.138 170.834 227.281 170.959 227.281 171.216 c
-f
-q 1 0 0 1 231.6175 175.081 cm
-0 0 m
-0 -0.955 l
-0.602 -0.955 l
-0.602 -1.484 l
-0 -1.484 l
-0 -3.954 l
-0 -4.112 0.022 -4.23 0.073 -4.307 c
-0.132 -4.388 0.22 -4.424 0.338 -4.424 c
-0.426 -4.424 0.515 -4.409 0.602 -4.38 c
-0.602 -4.939 l
-0.455 -4.986 0.301 -5.012 0.147 -5.012 c
--0.111 -5.012 -0.306 -4.92 -0.441 -4.733 c
--0.581 -4.548 -0.647 -4.288 -0.647 -3.954 c
--0.647 -1.484 l
--1.25 -1.484 l
--1.25 -0.955 l
--0.647 -0.955 l
--0.647 0 l
-h
-1.161 -2.763 m
-1.161 -2.186 1.297 -1.73 1.572 -1.396 c
-1.855 -1.055 2.227 -0.881 2.69 -0.881 c
-3.149 -0.881 3.516 -1.051 3.792 -1.381 c
-4.075 -1.705 4.222 -2.153 4.233 -2.719 c
-4.233 -3.145 l
-4.233 -3.715 4.089 -4.17 3.807 -4.512 c
-3.532 -4.847 3.164 -5.012 2.705 -5.012 c
-2.241 -5.012 1.87 -4.85 1.587 -4.527 c
-1.311 -4.196 1.168 -3.755 1.161 -3.204 c
-h
-1.807 -3.145 m
-1.807 -3.549 1.885 -3.866 2.042 -4.101 c
-2.208 -4.336 2.429 -4.453 2.705 -4.453 c
-3.27 -4.453 3.564 -4.041 3.586 -3.218 c
-3.586 -2.763 l
-3.586 -2.362 3.501 -2.042 3.337 -1.807 c
-3.179 -1.565 2.961 -1.44 2.69 -1.44 c
-2.425 -1.44 2.208 -1.565 2.042 -1.807 c
-1.885 -2.042 1.807 -2.362 1.807 -2.763 c
-h
-9.672 -3.145 m
-9.672 -3.773 9.554 -4.244 9.319 -4.556 c
-9.091 -4.861 8.775 -5.012 8.363 -5.012 c
-7.96 -5.012 7.65 -4.861 7.437 -4.556 c
-7.437 -6.468 l
-6.79 -6.468 l
-6.79 -0.955 l
-7.378 -0.955 l
-7.422 -1.396 l
-7.636 -1.055 7.945 -0.881 8.349 -0.881 c
-8.789 -0.881 9.117 -1.036 9.333 -1.337 c
-9.547 -1.643 9.66 -2.098 9.672 -2.705 c
-h
-9.025 -2.763 m
-9.025 -2.322 8.955 -1.999 8.819 -1.793 c
-8.679 -1.58 8.459 -1.469 8.157 -1.469 c
-7.842 -1.469 7.603 -1.624 7.437 -1.925 c
-7.437 -3.998 l
-7.603 -4.303 7.842 -4.453 8.157 -4.453 c
-8.452 -4.453 8.665 -4.351 8.804 -4.145 c
-8.941 -3.931 9.014 -3.601 9.025 -3.16 c
-h
-12.538 -4.586 m
-12.321 -4.872 12.009 -5.012 11.597 -5.012 c
-11.233 -5.012 10.958 -4.891 10.774 -4.644 c
-10.597 -4.39 10.502 -4.027 10.495 -3.557 c
-10.495 -0.955 l
-11.141 -0.955 l
-11.141 -3.498 l
-11.141 -4.126 11.326 -4.438 11.7 -4.438 c
-12.101 -4.438 12.376 -4.262 12.523 -3.91 c
-12.523 -0.955 l
-13.17 -0.955 l
-13.17 -4.939 l
-12.552 -4.939 l
-h
-16.095 -3.924 m
-16.095 -3.777 16.04 -3.656 15.933 -3.557 c
-15.823 -3.461 15.617 -3.343 15.316 -3.204 c
-14.971 -3.057 14.728 -2.936 14.581 -2.836 c
-14.434 -2.73 14.324 -2.612 14.258 -2.484 c
-14.188 -2.358 14.155 -2.2 14.155 -2.013 c
-14.155 -1.69 14.272 -1.421 14.507 -1.205 c
-14.742 -0.992 15.044 -0.881 15.419 -0.881 c
-15.802 -0.881 16.11 -0.995 16.345 -1.219 c
-16.581 -1.448 16.698 -1.734 16.698 -2.087 c
-16.051 -2.087 l
-16.051 -1.911 15.993 -1.76 15.875 -1.631 c
-15.757 -1.506 15.603 -1.44 15.419 -1.44 c
-15.22 -1.44 15.07 -1.495 14.963 -1.602 c
-14.853 -1.701 14.802 -1.834 14.802 -1.999 c
-14.802 -2.127 14.838 -2.234 14.919 -2.322 c
-14.996 -2.403 15.187 -2.506 15.492 -2.63 c
-15.97 -2.818 16.301 -3.006 16.477 -3.189 c
-16.654 -3.366 16.742 -3.594 16.742 -3.866 c
-16.742 -4.218 16.617 -4.498 16.374 -4.704 c
-16.139 -4.909 15.823 -5.012 15.434 -5.012 c
-15.011 -5.012 14.673 -4.895 14.42 -4.659 c
-14.162 -4.417 14.037 -4.112 14.037 -3.748 c
-14.684 -3.748 l
-14.692 -3.976 14.761 -4.152 14.89 -4.277 c
-15.015 -4.394 15.199 -4.453 15.434 -4.453 c
-15.646 -4.453 15.808 -4.406 15.918 -4.307 c
-16.037 -4.211 16.095 -4.082 16.095 -3.924 c
-18.227 -1.367 m
-18.48 -1.043 18.8 -0.881 19.182 -0.881 c
-19.887 -0.881 20.244 -1.352 20.255 -2.293 c
-20.255 -4.939 l
-19.608 -4.939 l
-19.608 -2.322 l
-19.608 -2.009 19.553 -1.789 19.446 -1.66 c
-19.336 -1.535 19.182 -1.469 18.976 -1.469 c
-18.819 -1.469 18.671 -1.525 18.535 -1.631 c
-18.407 -1.741 18.304 -1.878 18.227 -2.042 c
-18.227 -4.939 l
-17.58 -4.939 l
-17.58 0.706 l
-18.227 0.706 l
-h
-23.783 0 m
-23.783 -0.955 l
-24.385 -0.955 l
-24.385 -1.484 l
-23.783 -1.484 l
-23.783 -3.954 l
-23.783 -4.112 23.804 -4.23 23.856 -4.307 c
-23.915 -4.388 24.003 -4.424 24.121 -4.424 c
-24.209 -4.424 24.297 -4.409 24.385 -4.38 c
-24.385 -4.939 l
-24.238 -4.986 24.084 -5.012 23.93 -5.012 c
-23.673 -5.012 23.478 -4.92 23.342 -4.733 c
-23.202 -4.548 23.136 -4.288 23.136 -3.954 c
-23.136 -1.484 l
-22.534 -1.484 l
-22.534 -0.955 l
-23.136 -0.955 l
-23.136 0 l
-h
-27.193 -4.939 m
-27.153 -4.85 27.127 -4.704 27.12 -4.498 c
-26.884 -4.843 26.59 -5.012 26.237 -5.012 c
-25.874 -5.012 25.591 -4.916 25.385 -4.718 c
-25.186 -4.512 25.09 -4.226 25.09 -3.85 c
-25.09 -3.45 25.227 -3.131 25.502 -2.896 c
-25.774 -2.653 26.15 -2.528 26.62 -2.528 c
-27.105 -2.528 l
-27.105 -2.102 l
-27.105 -1.866 27.05 -1.701 26.943 -1.602 c
-26.833 -1.495 26.671 -1.44 26.458 -1.44 c
-26.26 -1.44 26.098 -1.499 25.973 -1.616 c
-25.855 -1.734 25.796 -1.881 25.796 -2.057 c
-25.15 -2.057 l
-25.15 -1.863 25.209 -1.672 25.326 -1.484 c
-25.451 -1.3 25.613 -1.153 25.811 -1.043 c
-26.017 -0.937 26.245 -0.881 26.502 -0.881 c
-26.902 -0.881 27.207 -0.984 27.413 -1.19 c
-27.627 -1.396 27.741 -1.69 27.752 -2.072 c
-27.752 -4.086 l
-27.752 -4.39 27.788 -4.656 27.869 -4.88 c
-27.869 -4.939 l
-h
-26.326 -4.424 m
-26.491 -4.424 26.642 -4.38 26.781 -4.292 c
-26.929 -4.203 27.035 -4.093 27.105 -3.954 c
-27.105 -3.013 l
-26.737 -3.013 l
-26.422 -3.013 26.179 -3.083 26.002 -3.218 c
-25.826 -3.347 25.738 -3.534 25.738 -3.777 c
-25.738 -4.005 25.782 -4.17 25.87 -4.277 c
-25.958 -4.376 26.109 -4.424 26.326 -4.424 c
-28.618 -2.763 m
-28.618 -2.146 28.729 -1.683 28.957 -1.367 c
-29.181 -1.043 29.516 -0.881 29.956 -0.881 c
-30.357 -0.881 30.662 -1.058 30.868 -1.411 c
-30.912 -0.955 l
-31.5 -0.955 l
-31.5 -4.982 l
-31.5 -5.471 31.371 -5.85 31.118 -6.115 c
-30.86 -6.379 30.507 -6.511 30.059 -6.511 c
-29.861 -6.511 29.64 -6.46 29.398 -6.364 c
-29.152 -6.265 28.972 -6.144 28.853 -5.997 c
-29.119 -5.556 l
-29.383 -5.82 29.68 -5.953 30.015 -5.953 c
-30.551 -5.953 30.827 -5.659 30.838 -5.071 c
-30.838 -4.542 l
-30.632 -4.858 30.331 -5.012 29.942 -5.012 c
-29.53 -5.012 29.207 -4.861 28.972 -4.556 c
-28.743 -4.244 28.626 -3.792 28.618 -3.204 c
-h
-29.281 -3.145 m
-29.281 -3.586 29.343 -3.917 29.471 -4.13 c
-29.597 -4.336 29.813 -4.438 30.118 -4.438 c
-30.441 -4.438 30.68 -4.273 30.838 -3.939 c
-30.838 -1.955 l
-30.669 -1.631 30.43 -1.469 30.118 -1.469 c
-29.824 -1.469 29.607 -1.572 29.471 -1.778 c
-29.343 -1.984 29.281 -2.308 29.281 -2.748 c
-h
-34.395 -3.924 m
-34.395 -3.777 34.341 -3.656 34.234 -3.557 c
-34.123 -3.461 33.917 -3.343 33.616 -3.204 c
-33.271 -3.057 33.028 -2.936 32.882 -2.836 c
-32.735 -2.73 32.624 -2.612 32.558 -2.484 c
-32.488 -2.358 32.455 -2.2 32.455 -2.013 c
-32.455 -1.69 32.573 -1.421 32.808 -1.205 c
-33.043 -0.992 33.344 -0.881 33.719 -0.881 c
-34.102 -0.881 34.41 -0.995 34.646 -1.219 c
-34.881 -1.448 34.998 -1.734 34.998 -2.087 c
-34.351 -2.087 l
-34.351 -1.911 34.293 -1.76 34.175 -1.631 c
-34.058 -1.506 33.903 -1.44 33.719 -1.44 c
-33.52 -1.44 33.37 -1.495 33.264 -1.602 c
-33.154 -1.701 33.102 -1.834 33.102 -1.999 c
-33.102 -2.127 33.138 -2.234 33.219 -2.322 c
-33.297 -2.403 33.488 -2.506 33.792 -2.63 c
-34.27 -2.818 34.601 -3.006 34.777 -3.189 c
-34.954 -3.366 35.043 -3.594 35.043 -3.866 c
-35.043 -4.218 34.917 -4.498 34.675 -4.704 c
-34.44 -4.909 34.123 -5.012 33.734 -5.012 c
-33.312 -5.012 32.973 -4.895 32.72 -4.659 c
-32.462 -4.417 32.338 -4.112 32.338 -3.748 c
-32.984 -3.748 l
-32.992 -3.976 33.061 -4.152 33.19 -4.277 c
-33.315 -4.394 33.499 -4.453 33.734 -4.453 c
-33.947 -4.453 34.108 -4.406 34.219 -4.307 c
-34.337 -4.211 34.395 -4.082 34.395 -3.924 c
-35.924 -4.586 m
-35.924 -4.469 35.957 -4.373 36.027 -4.292 c
-36.093 -4.215 36.196 -4.174 36.336 -4.174 c
-36.483 -4.174 36.589 -4.215 36.659 -4.292 c
-36.736 -4.373 36.776 -4.469 36.776 -4.586 c
-36.776 -4.696 36.736 -4.787 36.659 -4.865 c
-36.589 -4.942 36.483 -4.982 36.336 -4.982 c
-36.196 -4.982 36.093 -4.942 36.027 -4.865 c
-35.957 -4.787 35.924 -4.696 35.924 -4.586 c
-f
-Q
-0.113 0.082 0.09 0 k
-35.668 164.535 238.665 -12.898 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 40.8563 157.6961 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.646 -0.243 -0.775 -0.367 -0.881 c
--0.496 -0.992 -0.658 -1.08 -0.852 -1.147 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.161 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.926 c
--3.127 -0.819 -3.23 -0.69 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.214 -3.484 -0.015 c
--2.66 0.133 l
--2.642 0.033 -2.616 -0.058 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.368 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.684 -1.992 0.691 -1.999 0.691 c
--2.167 0.727 -2.329 0.771 -2.484 0.823 c
--2.642 0.882 -2.786 0.96 -2.91 1.058 c
--3.039 1.154 -3.142 1.278 -3.219 1.426 c
--3.289 1.573 -3.322 1.756 -3.322 1.984 c
--3.322 2.179 -3.289 2.344 -3.219 2.485 c
--3.152 2.631 -3.054 2.749 -2.925 2.837 c
--2.8 2.932 -2.645 3.002 -2.469 3.042 c
--2.293 3.09 -2.102 3.12 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.12 -1.128 3.09 -0.97 3.042 c
--0.804 2.992 -0.669 2.918 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.485 c
--0.202 2.344 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.253 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.353 c
--1.294 1.312 -1.117 1.264 -0.941 1.205 c
--0.756 1.147 -0.595 1.066 -0.455 0.97 c
--0.32 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.485 -2.19 2.454 c
--2.26 2.425 -2.319 2.385 -2.366 2.337 c
--2.406 2.296 -2.437 2.249 -2.454 2.19 c
--2.477 2.132 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.779 c
--2.41 1.72 -2.373 1.668 -2.322 1.631 c
--2.263 1.591 -2.201 1.558 -2.131 1.529 c
--2.065 1.5 -1.984 1.47 -1.896 1.44 c
-h
--0.837 -0.015 m
--0.837 0.092 -0.86 0.177 -0.897 0.235 c
--0.926 0.301 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.53 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.529 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.015 c
-6.402 -2.66 m
-6.185 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.396 c
-5.284 -2.315 5.185 -2.219 5.108 -2.102 c
-5.039 -1.984 4.991 -1.856 4.961 -1.72 c
-5.858 -1.617 l
-5.895 -1.753 5.964 -1.86 6.064 -1.94 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.057 6.681 -2.028 c
-6.758 -1.999 6.828 -1.944 6.887 -1.866 c
-6.945 -1.797 6.99 -1.705 7.019 -1.587 c
-7.056 -1.469 7.078 -1.323 7.078 -1.147 c
-7.078 -0.956 l
-7.078 -0.889 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.073 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.215 -0.897 5.108 -0.75 c
-5.009 -0.595 4.935 -0.411 4.888 -0.206 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.771 4.836 1.018 4.888 1.235 c
-4.946 1.448 5.027 1.631 5.137 1.779 c
-5.245 1.933 5.376 2.051 5.534 2.132 c
-5.689 2.219 5.876 2.263 6.093 2.263 c
-6.188 2.263 6.288 2.253 6.387 2.234 c
-6.483 2.213 6.571 2.179 6.652 2.132 c
-6.739 2.08 6.817 2.018 6.887 1.941 c
-6.964 1.86 7.026 1.768 7.078 1.661 c
-7.092 1.661 l
-7.092 1.808 l
-7.1 1.866 7.107 1.918 7.107 1.97 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.152 2.219 c
-8.004 2.219 l
-7.993 2.138 7.982 2.028 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.161 l
-7.975 -1.415 7.938 -1.635 7.871 -1.822 c
-7.802 -2.007 7.699 -2.161 7.563 -2.278 c
-7.423 -2.404 7.258 -2.499 7.063 -2.558 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.53 m
-7.092 0.742 7.067 0.919 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.5 6.729 1.558 6.652 1.588 c
-6.571 1.625 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.621 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.367 c
-5.88 1.278 5.835 1.161 5.799 1.014 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.338 c
-6.049 -0.515 6.211 -0.603 6.417 -0.603 c
-6.483 -0.603 6.556 -0.588 6.637 -0.559 c
-6.725 -0.522 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.176 7.019 -0.029 c
-7.067 0.118 7.092 0.301 7.092 0.53 c
-11.036 -0.646 m
-12.168 -0.646 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.646 l
-10.124 -0.646 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.219 l
-11.036 2.219 l
-h
-10.124 3.513 0.912 -0.675 re
-10.124 2.837 m
-13.6 1.602 m
-13.057 1.602 l
-13.057 2.219 l
-13.644 2.219 l
-13.924 3.117 l
-14.497 3.117 l
-14.497 2.219 l
-15.732 2.219 l
-15.732 1.602 l
-14.497 1.602 l
-14.497 -0.103 l
-14.497 -0.324 l
-14.504 -0.393 14.527 -0.455 14.556 -0.515 c
-14.593 -0.566 14.648 -0.61 14.718 -0.646 c
-14.795 -0.676 14.909 -0.69 15.056 -0.69 c
-15.192 -0.69 15.327 -0.687 15.468 -0.676 c
-15.603 -0.658 15.736 -0.632 15.865 -0.603 c
-15.865 -1.205 l
-15.784 -1.216 15.707 -1.231 15.629 -1.249 c
-15.549 -1.261 15.471 -1.268 15.394 -1.278 c
-15.313 -1.286 15.225 -1.294 15.129 -1.294 c
-15.041 -1.301 14.942 -1.309 14.835 -1.309 c
-14.648 -1.309 14.486 -1.294 14.35 -1.264 c
-14.221 -1.228 14.107 -1.183 14.012 -1.132 c
-13.924 -1.084 13.85 -1.025 13.791 -0.956 c
-13.733 -0.879 13.689 -0.801 13.66 -0.721 c
-13.63 -0.632 13.608 -0.544 13.6 -0.455 c
-13.59 -0.36 13.586 -0.264 13.586 -0.176 c
-h
-21.986 2.219 m
-21.994 2.198 22.001 2.165 22.001 2.117 c
-22.009 2.076 22.016 2.028 22.016 1.97 c
-22.023 1.918 22.03 1.866 22.03 1.808 c
-22.03 1.646 l
-22.045 1.646 l
-22.104 1.764 22.17 1.86 22.251 1.941 c
-22.328 2.018 22.413 2.08 22.501 2.132 c
-22.589 2.19 22.677 2.227 22.765 2.249 c
-22.861 2.267 22.961 2.278 23.059 2.278 c
-23.265 2.278 23.445 2.234 23.603 2.146 c
-23.757 2.058 23.886 1.929 23.985 1.764 c
-24.092 1.606 24.169 1.415 24.22 1.191 c
-24.28 0.974 24.309 0.738 24.309 0.485 c
-24.309 0.22 24.28 -0.025 24.22 -0.25 c
-24.169 -0.467 24.092 -0.658 23.985 -0.823 c
-23.886 -0.981 23.754 -1.103 23.589 -1.191 c
-23.431 -1.278 23.243 -1.323 23.03 -1.323 c
-22.931 -1.323 22.832 -1.312 22.736 -1.294 c
-22.637 -1.272 22.545 -1.242 22.456 -1.191 c
-22.375 -1.143 22.298 -1.08 22.221 -0.999 c
-22.152 -0.922 22.093 -0.831 22.045 -0.721 c
-22.03 -0.721 l
-22.03 -0.808 l
-22.038 -0.849 22.045 -0.897 22.045 -0.956 c
-22.045 -1.117 l
-22.045 -1.294 l
-22.045 -2.631 l
-21.134 -2.631 l
-21.134 1.455 l
-21.134 1.621 21.126 1.768 21.119 1.897 c
-21.119 2.219 l
-h
-22.03 0.455 m
-22.03 0.228 22.049 0.037 22.089 -0.118 c
-22.137 -0.264 22.192 -0.382 22.251 -0.47 c
-22.317 -0.559 22.391 -0.625 22.471 -0.661 c
-22.549 -0.702 22.626 -0.721 22.707 -0.721 c
-22.803 -0.721 22.89 -0.698 22.971 -0.646 c
-23.059 -0.599 23.125 -0.529 23.177 -0.441 c
-23.235 -0.345 23.28 -0.22 23.31 -0.073 c
-23.346 0.081 23.368 0.268 23.368 0.485 c
-23.368 0.875 23.31 1.168 23.192 1.367 c
-23.081 1.562 22.927 1.661 22.722 1.661 c
-22.641 1.661 22.564 1.639 22.486 1.602 c
-22.406 1.562 22.332 1.5 22.265 1.411 c
-22.196 1.323 22.137 1.198 22.089 1.043 c
-22.049 0.885 22.03 0.691 22.03 0.455 c
-26.061 2.219 m
-26.061 0.264 l
-26.061 0.125 26.069 0 26.091 -0.118 c
-26.109 -0.228 26.142 -0.32 26.194 -0.397 c
-26.242 -0.478 26.3 -0.54 26.371 -0.588 c
-26.437 -0.628 26.521 -0.646 26.62 -0.646 c
-26.709 -0.646 26.789 -0.628 26.87 -0.588 c
-26.959 -0.54 27.032 -0.47 27.09 -0.382 c
-27.15 -0.287 27.194 -0.176 27.223 -0.058 c
-27.26 0.066 27.281 0.206 27.281 0.353 c
-27.281 2.219 l
-28.178 2.219 l
-28.178 -0.485 l
-28.178 -0.721 l
-28.185 -0.801 28.193 -0.879 28.193 -0.956 c
-28.193 -1.147 l
-28.201 -1.198 28.208 -1.234 28.208 -1.264 c
-27.355 -1.264 l
-27.344 -1.234 27.333 -1.198 27.326 -1.147 c
-27.326 -0.956 l
-27.326 -0.889 27.318 -0.819 27.312 -0.75 c
-27.312 -0.573 l
-27.296 -0.573 l
-27.179 -0.838 27.025 -1.029 26.841 -1.147 c
-26.664 -1.264 26.462 -1.323 26.238 -1.323 c
-26.032 -1.323 25.86 -1.286 25.724 -1.22 c
-25.584 -1.154 25.473 -1.058 25.386 -0.941 c
-25.305 -0.823 25.246 -0.687 25.209 -0.529 c
-25.18 -0.364 25.165 -0.187 25.165 0 c
-25.165 2.219 l
-h
-32.342 -0.25 m
-32.342 -0.419 32.301 -0.569 32.224 -0.706 c
-32.154 -0.834 32.052 -0.948 31.916 -1.043 c
-31.787 -1.132 31.625 -1.201 31.43 -1.249 c
-31.243 -1.297 31.027 -1.323 30.784 -1.323 c
-30.556 -1.323 30.358 -1.309 30.181 -1.278 c
-30.005 -1.249 29.847 -1.201 29.71 -1.132 c
-29.571 -1.055 29.461 -0.956 29.373 -0.838 c
-29.284 -0.721 29.215 -0.573 29.167 -0.397 c
-29.976 -0.279 l
-29.994 -0.378 30.023 -0.455 30.063 -0.515 c
-30.111 -0.573 30.17 -0.617 30.24 -0.646 c
-30.306 -0.676 30.387 -0.702 30.475 -0.721 c
-30.564 -0.731 30.666 -0.735 30.784 -0.735 c
-30.88 -0.735 30.975 -0.731 31.063 -0.721 c
-31.152 -0.702 31.229 -0.676 31.298 -0.646 c
-31.364 -0.617 31.416 -0.58 31.445 -0.529 c
-31.482 -0.482 31.504 -0.419 31.504 -0.338 c
-31.504 -0.243 31.474 -0.169 31.416 -0.118 c
-31.364 -0.07 31.298 -0.029 31.21 0 c
-31.122 0.037 31.011 0.066 30.886 0.088 c
-30.769 0.118 30.637 0.147 30.489 0.177 c
-30.35 0.214 30.211 0.254 30.063 0.294 c
-29.924 0.342 29.799 0.405 29.681 0.485 c
-29.571 0.563 29.483 0.661 29.417 0.779 c
-29.347 0.897 29.313 1.047 29.313 1.235 c
-29.313 1.389 29.344 1.532 29.402 1.661 c
-29.469 1.797 29.564 1.911 29.681 1.999 c
-29.806 2.088 29.964 2.153 30.152 2.205 c
-30.335 2.253 30.549 2.278 30.784 2.278 c
-30.967 2.278 31.144 2.256 31.313 2.219 c
-31.478 2.19 31.625 2.135 31.754 2.058 c
-31.879 1.988 31.989 1.889 32.077 1.764 c
-32.166 1.646 32.224 1.503 32.253 1.338 c
-31.46 1.264 l
-31.438 1.342 31.408 1.404 31.372 1.455 c
-31.331 1.514 31.283 1.558 31.225 1.588 c
-31.173 1.625 31.111 1.65 31.034 1.661 c
-30.953 1.668 30.872 1.675 30.784 1.675 c
-30.567 1.675 30.406 1.646 30.298 1.588 c
-30.188 1.536 30.137 1.448 30.137 1.323 c
-30.137 1.242 30.155 1.18 30.196 1.132 c
-30.244 1.08 30.306 1.043 30.387 1.014 c
-30.475 0.985 30.57 0.956 30.681 0.926 c
-30.788 0.904 30.909 0.882 31.048 0.852 c
-31.202 0.823 31.36 0.783 31.519 0.735 c
-31.673 0.684 31.813 0.621 31.931 0.544 c
-32.048 0.463 32.143 0.36 32.224 0.235 c
-32.301 0.106 32.342 -0.055 32.342 -0.25 c
-34.202 1.514 m
-34.319 1.786 34.47 1.984 34.657 2.102 c
-34.84 2.219 35.061 2.278 35.318 2.278 c
-35.524 2.278 35.694 2.242 35.833 2.176 c
-35.98 2.105 36.091 2.014 36.17 1.897 c
-36.259 1.779 36.318 1.635 36.347 1.47 c
-36.384 1.301 36.406 1.124 36.406 0.941 c
-36.406 -1.264 l
-35.495 -1.264 l
-35.495 0.735 l
-35.495 0.871 35.484 0.992 35.465 1.103 c
-35.455 1.209 35.428 1.297 35.392 1.367 c
-35.351 1.444 35.293 1.503 35.216 1.544 c
-35.146 1.58 35.054 1.602 34.936 1.602 c
-34.826 1.602 34.73 1.577 34.643 1.529 c
-34.554 1.477 34.473 1.411 34.408 1.323 c
-34.348 1.235 34.297 1.124 34.26 1 c
-34.231 0.882 34.216 0.75 34.216 0.603 c
-34.216 -1.264 l
-33.305 -1.264 l
-33.305 3.513 l
-34.216 3.513 l
-34.216 2.205 l
-34.216 2.135 34.209 2.065 34.202 1.999 c
-34.202 1.793 l
-34.202 1.735 34.194 1.679 34.186 1.631 c
-34.186 1.514 l
-h
-42.013 0.838 1.867 -0.794 re
-42.013 0.044 m
-46.368 2.219 m
-46.368 0.264 l
-46.368 0.125 46.376 0 46.398 -0.118 c
-46.416 -0.228 46.449 -0.32 46.501 -0.397 c
-46.549 -0.478 46.607 -0.54 46.677 -0.588 c
-46.743 -0.628 46.828 -0.646 46.927 -0.646 c
-47.015 -0.646 47.096 -0.628 47.177 -0.588 c
-47.265 -0.54 47.339 -0.47 47.397 -0.382 c
-47.457 -0.287 47.5 -0.176 47.53 -0.058 c
-47.567 0.066 47.588 0.206 47.588 0.353 c
-47.588 2.219 l
-48.485 2.219 l
-48.485 -0.485 l
-48.485 -0.721 l
-48.492 -0.801 48.5 -0.879 48.5 -0.956 c
-48.5 -1.147 l
-48.507 -1.198 48.515 -1.234 48.515 -1.264 c
-47.662 -1.264 l
-47.651 -1.234 47.64 -1.198 47.632 -1.147 c
-47.632 -0.956 l
-47.632 -0.889 47.625 -0.819 47.617 -0.75 c
-47.617 -0.573 l
-47.603 -0.573 l
-47.486 -0.838 47.331 -1.029 47.147 -1.147 c
-46.971 -1.264 46.769 -1.323 46.545 -1.323 c
-46.339 -1.323 46.167 -1.286 46.03 -1.22 c
-45.891 -1.154 45.78 -1.058 45.693 -0.941 c
-45.612 -0.823 45.552 -0.687 45.516 -0.529 c
-45.487 -0.364 45.472 -0.187 45.472 0 c
-45.472 2.219 l
-h
-54.361 -2.631 m
-54.361 3.513 l
-56.286 3.513 l
-56.286 2.896 l
-55.214 2.896 l
-55.214 -2.014 l
-56.286 -2.014 l
-56.286 -2.631 l
-h
-60.685 1.47 m
-60.586 1.477 60.483 1.488 60.377 1.5 c
-60.267 1.517 60.145 1.529 60.009 1.529 c
-59.833 1.529 59.675 1.488 59.538 1.411 c
-59.399 1.342 59.282 1.242 59.186 1.118 c
-59.098 0.989 59.028 0.842 58.981 0.676 c
-58.94 0.507 58.921 0.331 58.921 0.147 c
-58.921 -1.264 l
-58.025 -1.264 l
-58.025 0.985 l
-58.025 1.11 58.014 1.235 57.996 1.353 c
-57.984 1.477 57.969 1.595 57.951 1.706 c
-57.94 1.823 57.926 1.918 57.907 1.999 c
-57.886 2.088 57.867 2.161 57.848 2.219 c
-58.73 2.219 l
-58.738 2.168 58.748 2.117 58.76 2.058 c
-58.778 1.999 58.792 1.933 58.804 1.866 c
-58.823 1.808 58.837 1.742 58.848 1.675 c
-58.855 1.606 58.867 1.544 58.877 1.484 c
-58.892 1.484 l
-58.929 1.602 58.981 1.708 59.039 1.808 c
-59.105 1.903 59.186 1.988 59.274 2.058 c
-59.363 2.124 59.465 2.179 59.583 2.219 c
-59.708 2.256 59.855 2.278 60.024 2.278 c
-60.149 2.278 60.267 2.271 60.377 2.263 c
-60.494 2.253 60.597 2.238 60.685 2.219 c
-h
-63.291 -1.323 m
-63.033 -1.323 62.806 -1.286 62.6 -1.22 c
-62.395 -1.143 62.218 -1.029 62.071 -0.881 c
-61.924 -0.727 61.806 -0.536 61.718 -0.309 c
-61.637 -0.085 61.601 0.18 61.601 0.485 c
-61.601 0.816 61.645 1.095 61.732 1.323 c
-61.828 1.558 61.957 1.742 62.115 1.881 c
-62.28 2.018 62.468 2.117 62.673 2.176 c
-62.879 2.242 63.089 2.278 63.305 2.278 c
-63.577 2.278 63.812 2.227 64.011 2.132 c
-64.217 2.043 64.382 1.911 64.511 1.735 c
-64.647 1.565 64.746 1.359 64.805 1.118 c
-64.871 0.882 64.907 0.617 64.907 0.324 c
-64.907 0.309 l
-62.541 0.309 l
-62.541 0.162 62.555 0.022 62.586 -0.103 c
-62.622 -0.231 62.677 -0.345 62.746 -0.441 c
-62.813 -0.529 62.898 -0.599 62.997 -0.646 c
-63.093 -0.698 63.206 -0.721 63.335 -0.721 c
-63.49 -0.721 63.629 -0.687 63.746 -0.617 c
-63.872 -0.551 63.96 -0.449 64.011 -0.309 c
-64.849 -0.382 l
-64.82 -0.482 64.764 -0.588 64.687 -0.706 c
-64.606 -0.816 64.504 -0.919 64.379 -1.014 c
-64.261 -1.103 64.107 -1.176 63.922 -1.234 c
-63.746 -1.294 63.533 -1.323 63.291 -1.323 c
-63.291 1.706 m
-63.203 1.706 63.114 1.691 63.026 1.661 c
-62.938 1.631 62.857 1.58 62.791 1.514 c
-62.721 1.444 62.663 1.356 62.615 1.249 c
-62.574 1.139 62.555 1.014 62.555 0.867 c
-64.026 0.867 l
-64.026 1.003 64 1.124 63.952 1.235 c
-63.912 1.342 63.856 1.43 63.791 1.5 c
-63.731 1.565 63.658 1.617 63.57 1.646 c
-63.482 1.683 63.386 1.706 63.291 1.706 c
-66.954 -1.264 m
-66.954 0.852 l
-66.954 1.018 66.947 1.154 66.94 1.264 c
-66.929 1.371 66.91 1.455 66.881 1.514 c
-66.859 1.58 66.829 1.631 66.792 1.661 c
-66.763 1.691 66.723 1.706 66.675 1.706 c
-66.617 1.706 66.561 1.675 66.513 1.617 c
-66.473 1.565 66.44 1.492 66.411 1.396 c
-66.381 1.309 66.355 1.195 66.337 1.058 c
-66.326 0.919 66.322 0.768 66.322 0.603 c
-66.322 -1.264 l
-65.572 -1.264 l
-65.572 1.47 l
-65.572 1.706 l
-65.572 1.926 l
-65.572 2.003 65.566 2.065 65.558 2.117 c
-65.558 2.219 l
-66.235 2.219 l
-66.235 2.132 l
-66.235 1.984 l
-66.241 1.926 66.249 1.866 66.249 1.808 c
-66.249 1.646 l
-66.264 1.646 l
-66.282 1.735 66.312 1.812 66.352 1.881 c
-66.389 1.959 66.432 2.028 66.484 2.088 c
-66.543 2.146 66.609 2.19 66.69 2.219 c
-66.767 2.256 66.856 2.278 66.954 2.278 c
-67.138 2.278 67.278 2.223 67.366 2.117 c
-67.461 2.018 67.531 1.86 67.571 1.646 c
-67.586 1.646 l
-67.623 1.742 67.664 1.83 67.704 1.911 c
-67.752 1.988 67.807 2.051 67.866 2.102 c
-67.924 2.161 67.991 2.205 68.072 2.234 c
-68.149 2.263 68.237 2.278 68.336 2.278 c
-68.472 2.278 68.586 2.253 68.674 2.205 c
-68.762 2.153 68.828 2.08 68.88 1.984 c
-68.939 1.885 68.976 1.756 68.998 1.602 c
-69.027 1.455 69.042 1.272 69.042 1.058 c
-69.042 -1.264 l
-68.321 -1.264 l
-68.321 0.852 l
-68.321 1.018 68.314 1.154 68.307 1.264 c
-68.296 1.371 68.277 1.455 68.248 1.514 c
-68.226 1.58 68.196 1.631 68.159 1.661 c
-68.13 1.691 68.09 1.706 68.042 1.706 c
-67.924 1.706 67.829 1.617 67.763 1.44 c
-67.704 1.272 67.675 1.014 67.675 0.661 c
-67.675 -1.264 l
-h
-73.058 0.485 m
-73.058 0.21 73.021 -0.04 72.955 -0.264 c
-72.886 -0.482 72.782 -0.669 72.647 -0.823 c
-72.507 -0.981 72.331 -1.103 72.117 -1.191 c
-71.901 -1.278 71.647 -1.323 71.353 -1.323 c
-71.078 -1.323 70.831 -1.278 70.618 -1.191 c
-70.412 -1.103 70.239 -0.981 70.104 -0.823 c
-69.964 -0.669 69.861 -0.482 69.795 -0.264 c
-69.725 -0.04 69.692 0.21 69.692 0.485 c
-69.692 0.738 69.722 0.974 69.78 1.191 c
-69.846 1.415 69.95 1.606 70.089 1.764 c
-70.225 1.929 70.401 2.058 70.618 2.146 c
-70.831 2.234 71.089 2.278 71.382 2.278 c
-71.695 2.278 71.956 2.234 72.161 2.146 c
-72.375 2.058 72.547 1.929 72.676 1.764 c
-72.812 1.606 72.911 1.415 72.97 1.191 c
-73.029 0.974 73.058 0.738 73.058 0.485 c
-72.103 0.485 m
-72.103 0.691 72.088 0.867 72.059 1.014 c
-72.037 1.161 71.999 1.282 71.941 1.382 c
-71.882 1.477 71.809 1.548 71.721 1.588 c
-71.633 1.635 71.523 1.661 71.397 1.661 c
-71.133 1.661 70.941 1.562 70.824 1.367 c
-70.706 1.18 70.648 0.885 70.648 0.485 c
-70.648 0.062 70.706 -0.243 70.824 -0.426 c
-70.941 -0.613 71.118 -0.706 71.353 -0.706 c
-71.478 -0.706 71.592 -0.687 71.691 -0.646 c
-71.787 -0.599 71.868 -0.526 71.926 -0.426 c
-71.993 -0.331 72.037 -0.206 72.059 -0.058 c
-72.088 0.088 72.103 0.268 72.103 0.485 c
-74.521 1.602 m
-73.977 1.602 l
-73.977 2.219 l
-74.565 2.219 l
-74.844 3.117 l
-75.417 3.117 l
-75.417 2.219 l
-76.652 2.219 l
-76.652 1.602 l
-75.417 1.602 l
-75.417 -0.103 l
-75.417 -0.324 l
-75.425 -0.393 75.446 -0.455 75.476 -0.515 c
-75.513 -0.566 75.568 -0.61 75.638 -0.646 c
-75.715 -0.676 75.829 -0.69 75.976 -0.69 c
-76.112 -0.69 76.248 -0.687 76.387 -0.676 c
-76.523 -0.658 76.656 -0.632 76.784 -0.603 c
-76.784 -1.205 l
-76.703 -1.216 76.626 -1.231 76.549 -1.249 c
-76.468 -1.261 76.391 -1.268 76.314 -1.278 c
-76.233 -1.286 76.145 -1.294 76.049 -1.294 c
-75.961 -1.301 75.862 -1.309 75.756 -1.309 c
-75.568 -1.309 75.407 -1.294 75.27 -1.264 c
-75.142 -1.228 75.028 -1.183 74.933 -1.132 c
-74.844 -1.084 74.771 -1.025 74.712 -0.956 c
-74.653 -0.879 74.609 -0.801 74.58 -0.721 c
-74.55 -0.632 74.528 -0.544 74.521 -0.455 c
-74.509 -0.36 74.506 -0.264 74.506 -0.176 c
-h
-79.537 -1.323 m
-79.28 -1.323 79.052 -1.286 78.846 -1.22 c
-78.64 -1.143 78.464 -1.029 78.317 -0.881 c
-78.17 -0.727 78.052 -0.536 77.964 -0.309 c
-77.883 -0.085 77.846 0.18 77.846 0.485 c
-77.846 0.816 77.89 1.095 77.979 1.323 c
-78.074 1.558 78.203 1.742 78.361 1.881 c
-78.526 2.018 78.714 2.117 78.92 2.176 c
-79.126 2.242 79.334 2.278 79.552 2.278 c
-79.824 2.278 80.059 2.227 80.257 2.132 c
-80.463 2.043 80.628 1.911 80.757 1.735 c
-80.893 1.565 80.992 1.359 81.051 1.118 c
-81.117 0.882 81.154 0.617 81.154 0.324 c
-81.154 0.309 l
-78.787 0.309 l
-78.787 0.162 78.802 0.022 78.831 -0.103 c
-78.868 -0.231 78.923 -0.345 78.993 -0.441 c
-79.059 -0.529 79.143 -0.599 79.243 -0.646 c
-79.338 -0.698 79.452 -0.721 79.581 -0.721 c
-79.735 -0.721 79.875 -0.687 79.993 -0.617 c
-80.117 -0.551 80.206 -0.449 80.257 -0.309 c
-81.095 -0.382 l
-81.065 -0.482 81.011 -0.588 80.934 -0.706 c
-80.853 -0.816 80.749 -0.919 80.624 -1.014 c
-80.507 -1.103 80.352 -1.176 80.169 -1.234 c
-79.993 -1.294 79.779 -1.323 79.537 -1.323 c
-79.537 1.706 m
-79.448 1.706 79.361 1.691 79.272 1.661 c
-79.184 1.631 79.103 1.58 79.037 1.514 c
-78.968 1.444 78.908 1.356 78.86 1.249 c
-78.82 1.139 78.802 1.014 78.802 0.867 c
-80.271 0.867 l
-80.271 1.003 80.246 1.124 80.198 1.235 c
-80.158 1.342 80.103 1.43 80.036 1.5 c
-79.978 1.565 79.905 1.617 79.816 1.646 c
-79.728 1.683 79.633 1.706 79.537 1.706 c
-82.407 -2.631 m
-82.407 -2.014 l
-83.48 -2.014 l
-83.48 2.896 l
-82.407 2.896 l
-82.407 3.513 l
-84.333 3.513 l
-84.333 -2.631 l
-h
-90.91 -2.631 m
-90.91 3.513 l
-92.836 3.513 l
-92.836 2.896 l
-91.763 2.896 l
-91.763 -2.014 l
-92.836 -2.014 l
-92.836 -2.631 l
-h
-94.224 -1.264 m
-94.224 -0.97 l
-94.232 -0.834 94.24 -0.676 94.24 -0.5 c
-94.24 3.513 l
-95.151 3.513 l
-95.151 2.234 l
-95.151 2.072 l
-95.151 1.897 l
-95.151 1.845 95.144 1.801 95.136 1.764 c
-95.136 1.675 l
-95.151 1.675 l
-95.199 1.783 95.261 1.874 95.342 1.955 c
-95.419 2.032 95.504 2.095 95.592 2.146 c
-95.68 2.194 95.772 2.227 95.871 2.249 c
-95.967 2.267 96.065 2.278 96.165 2.278 c
-96.378 2.278 96.566 2.234 96.724 2.146 c
-96.878 2.058 97.006 1.929 97.106 1.764 c
-97.212 1.606 97.289 1.415 97.341 1.191 c
-97.389 0.974 97.415 0.735 97.415 0.47 c
-97.415 0.214 97.385 -0.025 97.326 -0.25 c
-97.268 -0.467 97.183 -0.658 97.077 -0.823 c
-96.967 -0.981 96.834 -1.103 96.68 -1.191 c
-96.522 -1.278 96.341 -1.323 96.136 -1.323 c
-96.036 -1.323 95.938 -1.312 95.842 -1.294 c
-95.753 -1.272 95.666 -1.242 95.577 -1.191 c
-95.489 -1.132 95.408 -1.066 95.342 -0.985 c
-95.272 -0.908 95.209 -0.808 95.151 -0.69 c
-95.136 -0.69 l
-95.136 -0.852 l
-95.136 -0.912 95.128 -0.97 95.122 -1.029 c
-95.122 -1.08 95.114 -1.128 95.107 -1.176 c
-95.107 -1.216 95.099 -1.246 95.092 -1.264 c
-h
-95.136 0.5 m
-95.136 0.264 95.155 0.066 95.195 -0.088 c
-95.242 -0.246 95.302 -0.368 95.371 -0.455 c
-95.437 -0.544 95.511 -0.61 95.592 -0.646 c
-95.669 -0.687 95.747 -0.706 95.827 -0.706 c
-96.033 -0.706 96.187 -0.61 96.298 -0.411 c
-96.415 -0.216 96.474 0.077 96.474 0.47 c
-96.474 0.684 96.452 0.867 96.415 1.014 c
-96.385 1.168 96.341 1.294 96.283 1.382 c
-96.231 1.477 96.165 1.55 96.077 1.602 c
-95.996 1.65 95.907 1.675 95.812 1.675 c
-95.732 1.675 95.654 1.654 95.577 1.617 c
-95.496 1.577 95.423 1.514 95.357 1.426 c
-95.298 1.338 95.242 1.213 95.195 1.058 c
-95.155 0.912 95.136 0.724 95.136 0.5 c
-101.299 1.47 m
-101.2 1.477 101.097 1.488 100.99 1.5 c
-100.88 1.517 100.759 1.529 100.622 1.529 c
-100.446 1.529 100.288 1.488 100.152 1.411 c
-100.013 1.342 99.895 1.242 99.799 1.118 c
-99.711 0.989 99.641 0.842 99.593 0.676 c
-99.554 0.507 99.535 0.331 99.535 0.147 c
-99.535 -1.264 l
-98.638 -1.264 l
-98.638 0.985 l
-98.638 1.11 98.627 1.235 98.609 1.353 c
-98.598 1.477 98.583 1.595 98.565 1.706 c
-98.554 1.823 98.539 1.918 98.521 1.999 c
-98.498 2.088 98.48 2.161 98.462 2.219 c
-99.344 2.219 l
-99.351 2.168 99.362 2.117 99.373 2.058 c
-99.392 1.999 99.406 1.933 99.417 1.866 c
-99.435 1.808 99.45 1.742 99.462 1.675 c
-99.469 1.606 99.479 1.544 99.491 1.484 c
-99.506 1.484 l
-99.542 1.602 99.593 1.708 99.653 1.808 c
-99.718 1.903 99.799 1.988 99.888 2.058 c
-99.976 2.124 100.079 2.179 100.196 2.219 c
-100.321 2.256 100.468 2.278 100.637 2.278 c
-100.763 2.278 100.88 2.271 100.99 2.263 c
-101.108 2.253 101.21 2.238 101.299 2.219 c
-h
-103.302 -1.323 m
-103.132 -1.323 102.982 -1.301 102.846 -1.264 c
-102.717 -1.216 102.604 -1.147 102.508 -1.058 c
-102.419 -0.97 102.35 -0.864 102.302 -0.735 c
-102.251 -0.599 102.228 -0.449 102.228 -0.279 c
-102.228 -0.073 102.261 0.096 102.332 0.235 c
-102.398 0.382 102.493 0.492 102.611 0.573 c
-102.735 0.661 102.879 0.724 103.037 0.765 c
-103.202 0.802 103.379 0.827 103.566 0.838 c
-104.287 0.852 l
-104.287 1.029 l
-104.287 1.147 104.275 1.249 104.257 1.338 c
-104.235 1.426 104.202 1.492 104.154 1.544 c
-104.114 1.602 104.066 1.639 104.007 1.661 c
-103.948 1.679 103.882 1.691 103.816 1.691 c
-103.747 1.691 103.684 1.679 103.625 1.661 c
-103.574 1.65 103.526 1.625 103.478 1.588 c
-103.437 1.558 103.404 1.507 103.375 1.44 c
-103.353 1.382 103.338 1.301 103.331 1.205 c
-102.39 1.249 l
-102.419 1.396 102.463 1.532 102.523 1.661 c
-102.589 1.786 102.685 1.897 102.802 1.984 c
-102.92 2.08 103.059 2.153 103.228 2.205 c
-103.404 2.253 103.61 2.278 103.845 2.278 c
-104.287 2.278 104.617 2.168 104.844 1.955 c
-105.08 1.749 105.198 1.44 105.198 1.029 c
-105.198 -0.235 l
-105.198 -0.455 l
-105.205 -0.515 105.22 -0.569 105.241 -0.617 c
-105.26 -0.658 105.289 -0.69 105.33 -0.721 c
-105.367 -0.742 105.418 -0.75 105.477 -0.75 c
-105.543 -0.75 105.613 -0.746 105.683 -0.735 c
-105.683 -1.22 l
-105.624 -1.231 105.569 -1.242 105.521 -1.249 c
-105.48 -1.261 105.44 -1.268 105.403 -1.278 c
-105.363 -1.286 105.319 -1.294 105.272 -1.294 c
-105.22 -1.301 105.161 -1.309 105.095 -1.309 c
-104.867 -1.309 104.701 -1.257 104.595 -1.147 c
-104.485 -1.029 104.422 -0.864 104.404 -0.646 c
-104.389 -0.646 l
-104.32 -0.757 104.25 -0.852 104.183 -0.941 c
-104.114 -1.022 104.036 -1.087 103.948 -1.147 c
-103.86 -1.205 103.761 -1.249 103.654 -1.278 c
-103.555 -1.309 103.437 -1.323 103.302 -1.323 c
-104.287 0.353 m
-103.86 0.338 l
-103.761 0.338 103.669 0.331 103.581 0.324 c
-103.5 0.312 103.433 0.287 103.375 0.25 c
-103.317 0.21 103.265 0.151 103.228 0.073 c
-103.188 0.004 103.169 -0.088 103.169 -0.206 c
-103.169 -0.374 103.202 -0.496 103.272 -0.573 c
-103.338 -0.654 103.437 -0.69 103.566 -0.69 c
-103.672 -0.69 103.772 -0.669 103.86 -0.617 c
-103.955 -0.569 104.036 -0.507 104.096 -0.426 c
-104.161 -0.349 104.213 -0.261 104.242 -0.162 c
-104.272 -0.055 104.287 0.059 104.287 0.177 c
-h
-108.597 -1.264 m
-108.597 0.721 l
-108.597 1.022 108.553 1.242 108.464 1.382 c
-108.384 1.529 108.248 1.602 108.053 1.602 c
-107.942 1.602 107.84 1.577 107.745 1.529 c
-107.656 1.477 107.575 1.411 107.51 1.323 c
-107.45 1.235 107.399 1.124 107.362 1 c
-107.333 0.882 107.318 0.75 107.318 0.603 c
-107.318 -1.264 l
-106.407 -1.264 l
-106.407 1.44 l
-106.407 1.661 l
-106.407 1.749 106.399 1.826 106.392 1.897 c
-106.392 2.088 l
-106.392 2.219 l
-107.244 2.219 l
-107.252 2.19 107.259 2.146 107.259 2.088 c
-107.259 1.897 l
-107.267 1.826 107.274 1.756 107.274 1.691 c
-107.281 1.621 107.288 1.565 107.288 1.529 c
-107.304 1.529 l
-107.421 1.793 107.572 1.984 107.759 2.102 c
-107.942 2.219 108.163 2.278 108.42 2.278 c
-108.605 2.278 108.765 2.249 108.906 2.19 c
-109.041 2.132 109.156 2.043 109.243 1.926 c
-109.332 1.808 109.394 1.665 109.434 1.5 c
-109.482 1.342 109.509 1.154 109.509 0.941 c
-109.509 -1.264 l
-h
-112.025 -1.323 m
-111.739 -1.323 111.496 -1.282 111.29 -1.205 c
-111.084 -1.117 110.912 -0.996 110.776 -0.838 c
-110.637 -0.684 110.533 -0.496 110.467 -0.279 c
-110.398 -0.055 110.365 0.191 110.365 0.455 c
-110.365 0.75 110.398 1.007 110.467 1.235 c
-110.544 1.459 110.651 1.646 110.791 1.793 c
-110.938 1.947 111.114 2.065 111.32 2.146 c
-111.526 2.234 111.761 2.278 112.025 2.278 c
-112.25 2.278 112.451 2.249 112.628 2.19 c
-112.804 2.132 112.956 2.047 113.083 1.941 c
-113.209 1.841 113.311 1.72 113.392 1.573 c
-113.469 1.433 113.525 1.282 113.554 1.118 c
-112.643 1.073 l
-112.613 1.249 112.543 1.389 112.437 1.5 c
-112.337 1.606 112.194 1.661 112.011 1.661 c
-111.765 1.661 111.588 1.558 111.481 1.353 c
-111.371 1.154 111.32 0.867 111.32 0.485 c
-111.32 -0.309 111.555 -0.706 112.025 -0.706 c
-112.191 -0.706 112.334 -0.654 112.451 -0.544 c
-112.569 -0.437 112.643 -0.276 112.672 -0.058 c
-113.584 -0.103 l
-113.554 -0.272 113.499 -0.426 113.422 -0.573 c
-113.352 -0.721 113.249 -0.852 113.114 -0.97 c
-112.985 -1.08 112.827 -1.168 112.643 -1.234 c
-112.466 -1.294 112.26 -1.323 112.025 -1.323 c
-115.428 1.514 m
-115.546 1.786 115.697 1.984 115.884 2.102 c
-116.067 2.219 116.289 2.278 116.545 2.278 c
-116.751 2.278 116.92 2.242 117.06 2.176 c
-117.207 2.105 117.317 2.014 117.398 1.897 c
-117.486 1.779 117.544 1.635 117.575 1.47 c
-117.611 1.301 117.633 1.124 117.633 0.941 c
-117.633 -1.264 l
-116.722 -1.264 l
-116.722 0.735 l
-116.722 0.871 116.711 0.992 116.692 1.103 c
-116.682 1.209 116.655 1.297 116.619 1.367 c
-116.578 1.444 116.52 1.503 116.443 1.544 c
-116.372 1.58 116.281 1.602 116.163 1.602 c
-116.053 1.602 115.957 1.577 115.869 1.529 c
-115.781 1.477 115.701 1.411 115.634 1.323 c
-115.575 1.235 115.524 1.124 115.487 1 c
-115.458 0.882 115.443 0.75 115.443 0.603 c
-115.443 -1.264 l
-114.531 -1.264 l
-114.531 3.513 l
-115.443 3.513 l
-115.443 2.205 l
-115.443 2.135 115.435 2.065 115.428 1.999 c
-115.428 1.793 l
-115.428 1.735 115.421 1.679 115.414 1.631 c
-115.414 1.514 l
-h
-118.959 -2.631 m
-118.959 -2.014 l
-120.033 -2.014 l
-120.033 2.896 l
-118.959 2.896 l
-118.959 3.513 l
-120.885 3.513 l
-120.885 -2.631 l
-h
-f
-Q
-q 1 0 0 1 67.9872 143.6443 cm
-0 0 m
-0 -2.103 l
--0.676 -2.103 l
--0.676 3.248 l
-1.029 3.248 l
-1.529 3.248 1.918 3.094 2.205 2.792 c
-2.488 2.499 2.631 2.105 2.631 1.616 c
-2.631 1.095 2.492 0.698 2.219 0.426 c
-1.955 0.151 1.577 0.007 1.087 0 c
-h
-0 0.573 m
-1.029 0.573 l
-1.33 0.573 1.562 0.661 1.72 0.837 c
-1.874 1.014 1.955 1.267 1.955 1.602 c
-1.955 1.925 1.87 2.183 1.706 2.381 c
-1.548 2.576 1.326 2.675 1.043 2.675 c
-0 2.675 l
-h
-5.438 -1.75 m
-5.222 -2.037 4.91 -2.176 4.498 -2.176 c
-4.135 -2.176 3.859 -2.055 3.675 -1.808 c
-3.499 -1.555 3.403 -1.191 3.395 -0.721 c
-3.395 1.881 l
-4.042 1.881 l
-4.042 -0.662 l
-4.042 -1.291 4.226 -1.603 4.601 -1.603 c
-5.002 -1.603 5.277 -1.426 5.424 -1.073 c
-5.424 1.881 l
-6.071 1.881 l
-6.071 -2.103 l
-5.453 -2.103 l
-h
-8.996 -1.088 m
-8.996 -0.941 8.941 -0.82 8.834 -0.721 c
-8.724 -0.626 8.518 -0.508 8.217 -0.368 c
-7.871 -0.221 7.628 -0.1 7.482 0 c
-7.335 0.106 7.225 0.224 7.158 0.353 c
-7.088 0.477 7.056 0.635 7.056 0.823 c
-7.056 1.146 7.173 1.414 7.408 1.631 c
-7.644 1.844 7.945 1.955 8.32 1.955 c
-8.702 1.955 9.01 1.841 9.246 1.616 c
-9.481 1.389 9.598 1.102 9.598 0.749 c
-8.952 0.749 l
-8.952 0.926 8.893 1.076 8.775 1.205 c
-8.658 1.33 8.503 1.396 8.32 1.396 c
-8.121 1.396 7.971 1.341 7.864 1.234 c
-7.754 1.135 7.703 1.003 7.703 0.837 c
-7.703 0.708 7.739 0.602 7.82 0.514 c
-7.898 0.433 8.088 0.33 8.393 0.205 c
-8.871 0.018 9.201 -0.169 9.378 -0.353 c
-9.554 -0.53 9.643 -0.757 9.643 -1.029 c
-9.643 -1.382 9.517 -1.661 9.275 -1.867 c
-9.04 -2.073 8.724 -2.176 8.334 -2.176 c
-7.912 -2.176 7.574 -2.058 7.32 -1.823 c
-7.063 -1.58 6.938 -1.276 6.938 -0.912 c
-7.585 -0.912 l
-7.592 -1.139 7.662 -1.316 7.79 -1.441 c
-7.915 -1.559 8.099 -1.617 8.334 -1.617 c
-8.548 -1.617 8.709 -1.569 8.819 -1.47 c
-8.937 -1.374 8.996 -1.246 8.996 -1.088 c
-11.127 1.469 m
-11.381 1.793 11.701 1.955 12.083 1.955 c
-12.788 1.955 13.145 1.484 13.156 0.544 c
-13.156 -2.103 l
-12.509 -2.103 l
-12.509 0.514 l
-12.509 0.826 12.454 1.047 12.347 1.176 c
-12.237 1.3 12.083 1.367 11.877 1.367 c
-11.719 1.367 11.572 1.311 11.436 1.205 c
-11.308 1.095 11.204 0.959 11.127 0.793 c
-11.127 -2.103 l
-10.481 -2.103 l
-10.481 3.542 l
-11.127 3.542 l
-h
-16.536 -2.103 -0.646 5.644 re
-17.419 0.073 m
-17.419 0.65 17.554 1.105 17.83 1.44 c
-18.113 1.782 18.485 1.955 18.947 1.955 c
-19.407 1.955 19.774 1.786 20.05 1.454 c
-20.332 1.132 20.48 0.683 20.49 0.118 c
-20.49 -0.309 l
-20.49 -0.879 20.347 -1.334 20.064 -1.676 c
-19.788 -2.01 19.422 -2.176 18.962 -2.176 c
-18.499 -2.176 18.128 -2.014 17.845 -1.691 c
-17.569 -1.36 17.426 -0.919 17.419 -0.368 c
-h
-18.065 -0.309 m
-18.065 -0.713 18.142 -1.029 18.3 -1.264 c
-18.466 -1.5 18.686 -1.617 18.962 -1.617 c
-19.528 -1.617 19.821 -1.206 19.844 -0.383 c
-19.844 0.073 l
-19.844 0.473 19.759 0.793 19.594 1.028 c
-19.436 1.271 19.219 1.396 18.947 1.396 c
-18.682 1.396 18.466 1.271 18.3 1.028 c
-18.142 0.793 18.065 0.473 18.065 0.073 c
-h
-22.71 -1.617 m
-22.923 -1.617 23.096 -1.555 23.225 -1.426 c
-23.36 -1.291 23.434 -1.099 23.445 -0.853 c
-24.062 -0.853 l
-24.041 -1.235 23.904 -1.555 23.651 -1.808 c
-23.393 -2.055 23.081 -2.176 22.71 -2.176 c
-22.217 -2.176 21.843 -2.025 21.579 -1.721 c
-21.321 -1.408 21.196 -0.941 21.196 -0.324 c
-21.196 0.118 l
-21.196 0.712 21.321 1.168 21.579 1.484 c
-21.843 1.797 22.217 1.955 22.71 1.955 c
-23.111 1.955 23.43 1.822 23.665 1.558 c
-23.908 1.3 24.041 0.955 24.062 0.514 c
-23.445 0.514 l
-23.423 0.808 23.349 1.028 23.225 1.176 c
-23.107 1.323 22.934 1.396 22.71 1.396 c
-22.416 1.396 22.2 1.296 22.063 1.102 c
-21.924 0.914 21.851 0.606 21.843 0.176 c
-21.843 -0.339 l
-21.843 -0.809 21.909 -1.143 22.049 -1.338 c
-22.196 -1.526 22.416 -1.617 22.71 -1.617 c
-26.855 -2.103 m
-26.815 -2.014 26.789 -1.867 26.782 -1.661 c
-26.547 -2.007 26.252 -2.176 25.9 -2.176 c
-25.536 -2.176 25.253 -2.08 25.047 -1.881 c
-24.849 -1.676 24.754 -1.389 24.754 -1.015 c
-24.754 -0.614 24.889 -0.294 25.165 -0.059 c
-25.437 0.183 25.812 0.309 26.282 0.309 c
-26.767 0.309 l
-26.767 0.735 l
-26.767 0.97 26.712 1.135 26.605 1.234 c
-26.495 1.341 26.333 1.396 26.121 1.396 c
-25.922 1.396 25.76 1.337 25.635 1.219 c
-25.518 1.102 25.459 0.955 25.459 0.779 c
-24.812 0.779 l
-24.812 0.974 24.871 1.165 24.989 1.352 c
-25.113 1.535 25.275 1.683 25.473 1.793 c
-25.679 1.899 25.907 1.955 26.165 1.955 c
-26.565 1.955 26.87 1.851 27.075 1.646 c
-27.289 1.44 27.403 1.146 27.414 0.764 c
-27.414 -1.25 l
-27.414 -1.555 27.451 -1.819 27.532 -2.043 c
-27.532 -2.103 l
-h
-25.988 -1.588 m
-26.153 -1.588 26.304 -1.544 26.443 -1.455 c
-26.591 -1.368 26.697 -1.257 26.767 -1.118 c
-26.767 -0.177 l
-26.4 -0.177 l
-26.084 -0.177 25.841 -0.246 25.664 -0.383 c
-25.488 -0.511 25.4 -0.699 25.4 -0.941 c
-25.4 -1.169 25.444 -1.334 25.533 -1.441 c
-25.621 -1.54 25.772 -1.588 25.988 -1.588 c
-29.119 -2.103 -0.646 5.644 re
-34.734 -0.309 m
-34.734 -0.927 34.62 -1.393 34.396 -1.706 c
-34.179 -2.022 33.855 -2.176 33.425 -2.176 c
-33.003 -2.176 32.691 -1.996 32.485 -1.632 c
-32.456 -2.103 l
-31.852 -2.103 l
-31.852 3.542 l
-32.5 3.542 l
-32.5 1.44 l
-32.713 1.782 33.022 1.955 33.425 1.955 c
-33.855 1.955 34.179 1.797 34.396 1.484 c
-34.62 1.179 34.734 0.712 34.734 0.087 c
-h
-34.088 0.073 m
-34.088 0.544 34.017 0.874 33.882 1.072 c
-33.753 1.267 33.543 1.367 33.249 1.367 c
-32.915 1.367 32.665 1.183 32.5 0.823 c
-32.5 -1.058 l
-32.665 -1.422 32.918 -1.603 33.264 -1.603 c
-33.558 -1.603 33.768 -1.5 33.896 -1.294 c
-34.021 -1.088 34.088 -0.772 34.088 -0.339 c
-h
-37.218 1.263 m
-37.13 1.282 37.03 1.294 36.924 1.294 c
-36.59 1.294 36.355 1.109 36.218 0.749 c
-36.218 -2.103 l
-35.572 -2.103 l
-35.572 1.881 l
-36.204 1.881 l
-36.218 1.469 l
-36.395 1.793 36.637 1.955 36.953 1.955 c
-37.06 1.955 37.148 1.932 37.218 1.896 c
-h
-39.761 -2.103 m
-39.721 -2.014 39.695 -1.867 39.688 -1.661 c
-39.453 -2.007 39.158 -2.176 38.805 -2.176 c
-38.441 -2.176 38.159 -2.08 37.953 -1.881 c
-37.755 -1.676 37.659 -1.389 37.659 -1.015 c
-37.659 -0.614 37.795 -0.294 38.071 -0.059 c
-38.343 0.183 38.717 0.309 39.187 0.309 c
-39.673 0.309 l
-39.673 0.735 l
-39.673 0.97 39.617 1.135 39.511 1.234 c
-39.401 1.341 39.239 1.396 39.027 1.396 c
-38.828 1.396 38.666 1.337 38.541 1.219 c
-38.424 1.102 38.364 0.955 38.364 0.779 c
-37.718 0.779 l
-37.718 0.974 37.776 1.165 37.894 1.352 c
-38.019 1.535 38.181 1.683 38.379 1.793 c
-38.585 1.899 38.813 1.955 39.07 1.955 c
-39.471 1.955 39.775 1.851 39.981 1.646 c
-40.195 1.44 40.309 1.146 40.319 0.764 c
-40.319 -1.25 l
-40.319 -1.555 40.357 -1.819 40.438 -2.043 c
-40.438 -2.103 l
-h
-38.894 -1.588 m
-39.059 -1.588 39.21 -1.544 39.349 -1.455 c
-39.497 -1.368 39.603 -1.257 39.673 -1.118 c
-39.673 -0.177 l
-39.305 -0.177 l
-38.989 -0.177 38.747 -0.246 38.57 -0.383 c
-38.394 -0.511 38.306 -0.699 38.306 -0.941 c
-38.306 -1.169 38.35 -1.334 38.438 -1.441 c
-38.526 -1.54 38.677 -1.588 38.894 -1.588 c
-41.936 1.881 m
-41.951 1.44 l
-42.204 1.782 42.528 1.955 42.921 1.955 c
-43.627 1.955 43.983 1.484 43.995 0.544 c
-43.995 -2.103 l
-43.347 -2.103 l
-43.347 0.514 l
-43.347 0.826 43.293 1.047 43.186 1.176 c
-43.076 1.3 42.921 1.367 42.715 1.367 c
-42.557 1.367 42.41 1.311 42.275 1.205 c
-42.146 1.095 42.044 0.959 41.965 0.793 c
-41.965 -2.103 l
-41.319 -2.103 l
-41.319 1.881 l
-h
-46.346 -1.617 m
-46.559 -1.617 46.732 -1.555 46.861 -1.426 c
-46.997 -1.291 47.07 -1.099 47.081 -0.853 c
-47.698 -0.853 l
-47.677 -1.235 47.54 -1.555 47.287 -1.808 c
-47.029 -2.055 46.717 -2.176 46.346 -2.176 c
-45.854 -2.176 45.479 -2.025 45.215 -1.721 c
-44.957 -1.408 44.832 -0.941 44.832 -0.324 c
-44.832 0.118 l
-44.832 0.712 44.957 1.168 45.215 1.484 c
-45.479 1.797 45.854 1.955 46.346 1.955 c
-46.747 1.955 47.066 1.822 47.301 1.558 c
-47.544 1.3 47.677 0.955 47.698 0.514 c
-47.081 0.514 l
-47.06 0.808 46.985 1.028 46.861 1.176 c
-46.743 1.323 46.57 1.396 46.346 1.396 c
-46.052 1.396 45.836 1.296 45.699 1.102 c
-45.56 0.914 45.487 0.606 45.479 0.176 c
-45.479 -0.339 l
-45.479 -0.809 45.545 -1.143 45.685 -1.338 c
-45.832 -1.526 46.052 -1.617 46.346 -1.617 c
-49.095 1.469 m
-49.348 1.793 49.668 1.955 50.05 1.955 c
-50.756 1.955 51.112 1.484 51.124 0.544 c
-51.124 -2.103 l
-50.476 -2.103 l
-50.476 0.514 l
-50.476 0.826 50.422 1.047 50.315 1.176 c
-50.204 1.3 50.05 1.367 49.845 1.367 c
-49.687 1.367 49.539 1.311 49.404 1.205 c
-49.275 1.095 49.172 0.959 49.095 0.793 c
-49.095 -2.103 l
-48.448 -2.103 l
-48.448 3.542 l
-49.095 3.542 l
-h
-54.651 2.836 m
-54.651 1.881 l
-55.254 1.881 l
-55.254 1.352 l
-54.651 1.352 l
-54.651 -1.118 l
-54.651 -1.276 54.673 -1.393 54.725 -1.47 c
-54.784 -1.551 54.871 -1.588 54.989 -1.588 c
-55.077 -1.588 55.166 -1.573 55.254 -1.544 c
-55.254 -2.103 l
-55.107 -2.151 54.952 -2.176 54.798 -2.176 c
-54.541 -2.176 54.347 -2.084 54.21 -1.897 c
-54.071 -1.713 54.004 -1.452 54.004 -1.118 c
-54.004 1.352 l
-53.402 1.352 l
-53.402 1.881 l
-54.004 1.881 l
-54.004 2.836 l
-h
-55.812 0.073 m
-55.812 0.65 55.949 1.105 56.224 1.44 c
-56.507 1.782 56.878 1.955 57.341 1.955 c
-57.801 1.955 58.168 1.786 58.443 1.454 c
-58.727 1.132 58.873 0.683 58.885 0.118 c
-58.885 -0.309 l
-58.885 -0.879 58.742 -1.334 58.458 -1.676 c
-58.183 -2.01 57.815 -2.176 57.356 -2.176 c
-56.893 -2.176 56.522 -2.014 56.238 -1.691 c
-55.963 -1.36 55.82 -0.919 55.812 -0.368 c
-h
-56.459 -0.309 m
-56.459 -0.713 56.537 -1.029 56.695 -1.264 c
-56.86 -1.5 57.08 -1.617 57.356 -1.617 c
-57.921 -1.617 58.216 -1.206 58.237 -0.383 c
-58.237 0.073 l
-58.237 0.473 58.154 0.793 57.988 1.028 c
-57.83 1.271 57.613 1.396 57.341 1.396 c
-57.077 1.396 56.86 1.271 56.695 1.028 c
-56.537 0.793 56.459 0.473 56.459 0.073 c
-h
-f
-Q
-q 1 0 0 1 131.2811 144.5107 cm
-0 0 m
--0.338 0.03 l
--0.625 0.03 -0.816 -0.095 -0.911 -0.338 c
--0.911 -2.969 l
--1.955 -2.969 l
--1.955 1.015 l
--0.984 1.015 l
--0.955 0.574 l
--0.789 0.915 -0.558 1.088 -0.264 1.088 c
--0.147 1.088 -0.055 1.066 0.015 1.029 c
-h
-2.073 -3.042 m
-1.544 -3.042 1.125 -2.888 0.823 -2.572 c
-0.53 -2.248 0.383 -1.789 0.383 -1.19 c
-0.383 -0.881 l
-0.383 -0.257 0.518 0.229 0.794 0.574 c
-1.066 0.915 1.459 1.088 1.97 1.088 c
-2.469 1.088 2.841 0.927 3.088 0.603 c
-3.341 0.279 3.473 -0.199 3.484 -0.823 c
-3.484 -1.323 l
-1.411 -1.323 l
-1.43 -1.616 1.492 -1.833 1.603 -1.969 c
-1.72 -2.109 1.9 -2.175 2.147 -2.175 c
-2.488 -2.175 2.779 -2.057 3.014 -1.822 c
-3.425 -2.454 l
-3.296 -2.63 3.109 -2.774 2.866 -2.881 c
-2.621 -2.987 2.356 -3.042 2.073 -3.042 c
-1.426 -0.602 m
-2.455 -0.602 l
-2.455 -0.5 l
-2.455 -0.264 2.415 -0.087 2.338 0.03 c
-2.268 0.154 2.139 0.221 1.955 0.221 c
-1.779 0.221 1.646 0.151 1.559 0.015 c
-1.478 -0.114 1.434 -0.319 1.426 -0.602 c
-5.042 1.015 m
-5.072 0.647 l
-5.307 0.941 5.615 1.088 5.997 1.088 c
-6.398 1.088 6.677 0.904 6.835 0.545 c
-7.071 0.904 7.398 1.088 7.82 1.088 c
-8.515 1.088 8.867 0.603 8.879 -0.367 c
-8.879 -2.969 l
-7.85 -2.969 l
-7.85 -0.426 l
-7.85 -0.201 7.813 -0.04 7.747 0.059 c
-7.688 0.154 7.578 0.206 7.423 0.206 c
-7.225 0.206 7.086 0.088 6.997 -0.147 c
-6.997 -2.969 l
-5.953 -2.969 l
-5.953 -0.44 l
-5.953 -0.205 5.924 -0.04 5.866 0.059 c
-5.806 0.154 5.696 0.206 5.542 0.206 c
-5.366 0.206 5.222 0.111 5.116 -0.073 c
-5.116 -2.969 l
-4.072 -2.969 l
-4.072 1.015 l
-h
-9.54 -0.852 m
-9.54 -0.246 9.679 0.229 9.966 0.574 c
-10.249 0.915 10.643 1.088 11.142 1.088 c
-11.649 1.088 12.046 0.915 12.333 0.574 c
-12.616 0.229 12.759 -0.246 12.759 -0.852 c
-12.759 -1.117 l
-12.759 -1.716 12.616 -2.186 12.333 -2.528 c
-12.046 -2.873 11.649 -3.042 11.142 -3.042 c
-10.631 -3.042 10.234 -2.873 9.951 -2.528 c
-9.676 -2.186 9.54 -1.712 9.54 -1.102 c
-h
-10.583 -1.117 m
-10.583 -1.822 10.768 -2.175 11.142 -2.175 c
-11.495 -2.175 11.686 -1.881 11.716 -1.294 c
-11.716 -0.852 l
-11.716 -0.492 11.664 -0.22 11.568 -0.043 c
-11.469 0.133 11.326 0.221 11.142 0.221 c
-10.966 0.221 10.826 0.133 10.731 -0.043 c
-10.631 -0.22 10.583 -0.492 10.583 -0.852 c
-h
-14.612 1.985 m
-14.612 1.015 l
-15.14 1.015 l
-15.14 0.221 l
-14.612 0.221 l
-14.612 -1.749 l
-14.612 -1.907 14.629 -2.013 14.67 -2.072 c
-14.718 -2.131 14.803 -2.16 14.92 -2.16 c
-15.026 -2.16 15.111 -2.153 15.169 -2.131 c
-15.169 -2.94 l
-14.993 -3.006 14.803 -3.042 14.597 -3.042 c
-13.92 -3.042 13.575 -2.657 13.567 -1.881 c
-13.567 0.221 l
-13.112 0.221 l
-13.112 1.015 l
-13.567 1.015 l
-13.567 1.985 l
-h
-17.316 -3.042 m
-16.787 -3.042 16.368 -2.888 16.066 -2.572 c
-15.772 -2.248 15.626 -1.789 15.626 -1.19 c
-15.626 -0.881 l
-15.626 -0.257 15.761 0.229 16.037 0.574 c
-16.309 0.915 16.702 1.088 17.213 1.088 c
-17.712 1.088 18.084 0.927 18.33 0.603 c
-18.583 0.279 18.716 -0.199 18.727 -0.823 c
-18.727 -1.323 l
-16.655 -1.323 l
-16.673 -1.616 16.735 -1.833 16.846 -1.969 c
-16.963 -2.109 17.143 -2.175 17.39 -2.175 c
-17.731 -2.175 18.022 -2.057 18.257 -1.822 c
-18.668 -2.454 l
-18.539 -2.63 18.352 -2.774 18.109 -2.881 c
-17.864 -2.987 17.598 -3.042 17.316 -3.042 c
-16.669 -0.602 m
-17.698 -0.602 l
-17.698 -0.5 l
-17.698 -0.264 17.658 -0.087 17.581 0.03 c
-17.511 0.154 17.382 0.221 17.199 0.221 c
-17.022 0.221 16.89 0.151 16.802 0.015 c
-16.721 -0.114 16.676 -0.319 16.669 -0.602 c
-f
-Q
-q 1 0 0 1 154.0648 144.9077 cm
-0 0 m
--0.088 0.019 -0.187 0.03 -0.294 0.03 c
--0.628 0.03 -0.864 -0.154 -0.999 -0.515 c
--0.999 -3.366 l
--1.646 -3.366 l
--1.646 0.618 l
--1.014 0.618 l
--0.999 0.206 l
--0.823 0.53 -0.58 0.691 -0.264 0.691 c
--0.158 0.691 -0.07 0.669 0 0.632 c
-h
-1.999 -3.439 m
-1.5 -3.439 1.118 -3.293 0.852 -2.998 c
-0.588 -2.705 0.456 -2.271 0.456 -1.691 c
-0.456 -1.22 l
-0.456 -0.625 0.58 -0.158 0.838 0.177 c
-1.103 0.518 1.463 0.691 1.926 0.691 c
-2.385 0.691 2.727 0.537 2.955 0.235 c
-3.19 -0.058 3.311 -0.521 3.322 -1.146 c
-3.322 -1.573 l
-1.103 -1.573 l
-1.103 -1.66 l
-1.103 -2.094 1.18 -2.406 1.338 -2.601 c
-1.503 -2.789 1.735 -2.881 2.028 -2.881 c
-2.223 -2.881 2.396 -2.848 2.543 -2.778 c
-2.69 -2.701 2.826 -2.583 2.955 -2.425 c
-3.293 -2.836 l
-3.006 -3.241 2.576 -3.439 1.999 -3.439 c
-1.926 0.133 m
-1.65 0.133 1.448 0.037 1.323 -0.147 c
-1.195 -0.334 1.121 -0.625 1.103 -1.014 c
-2.675 -1.014 l
-2.675 -0.926 l
-2.653 -0.544 2.587 -0.276 2.469 -0.118 c
-2.352 0.048 2.168 0.133 1.926 0.133 c
-6.982 -1.573 m
-6.982 -2.201 6.865 -2.672 6.629 -2.984 c
-6.402 -3.289 6.086 -3.439 5.674 -3.439 c
-5.27 -3.439 4.961 -3.289 4.748 -2.984 c
-4.748 -4.895 l
-4.101 -4.895 l
-4.101 0.618 l
-4.69 0.618 l
-4.733 0.177 l
-4.946 0.518 5.255 0.691 5.659 0.691 c
-6.101 0.691 6.427 0.537 6.644 0.235 c
-6.857 -0.07 6.971 -0.525 6.982 -1.132 c
-h
-6.336 -1.19 m
-6.336 -0.75 6.265 -0.426 6.13 -0.22 c
-5.99 -0.008 5.77 0.103 5.469 0.103 c
-5.152 0.103 4.913 -0.051 4.748 -0.353 c
-4.748 -2.425 l
-4.913 -2.73 5.152 -2.881 5.469 -2.881 c
-5.762 -2.881 5.976 -2.778 6.115 -2.572 c
-6.251 -2.359 6.325 -2.028 6.336 -1.587 c
-h
-7.688 -1.19 m
-7.688 -0.613 7.824 -0.158 8.099 0.177 c
-8.382 0.518 8.754 0.691 9.216 0.691 c
-9.676 0.691 10.043 0.522 10.319 0.191 c
-10.602 -0.132 10.749 -0.58 10.76 -1.146 c
-10.76 -1.573 l
-10.76 -2.142 10.616 -2.597 10.334 -2.94 c
-10.058 -3.274 9.691 -3.439 9.231 -3.439 c
-8.768 -3.439 8.397 -3.278 8.114 -2.954 c
-7.838 -2.624 7.695 -2.183 7.688 -1.631 c
-h
-8.334 -1.573 m
-8.334 -1.976 8.412 -2.293 8.569 -2.528 c
-8.735 -2.763 8.956 -2.881 9.231 -2.881 c
-9.797 -2.881 10.091 -2.469 10.113 -1.646 c
-10.113 -1.19 l
-10.113 -0.79 10.028 -0.47 9.864 -0.235 c
-9.706 0.008 9.488 0.133 9.216 0.133 c
-8.952 0.133 8.735 0.008 8.569 -0.235 c
-8.412 -0.47 8.334 -0.79 8.334 -1.19 c
-h
-13.538 -2.352 m
-13.538 -2.204 13.483 -2.084 13.376 -1.984 c
-13.266 -1.889 13.06 -1.771 12.759 -1.631 c
-12.413 -1.484 12.171 -1.363 12.024 -1.263 c
-11.877 -1.157 11.767 -1.04 11.701 -0.911 c
-11.63 -0.786 11.597 -0.628 11.597 -0.44 c
-11.597 -0.118 11.715 0.151 11.95 0.368 c
-12.185 0.58 12.487 0.691 12.862 0.691 c
-13.244 0.691 13.552 0.578 13.787 0.353 c
-14.023 0.125 14.14 -0.162 14.14 -0.515 c
-13.494 -0.515 l
-13.494 -0.338 13.435 -0.187 13.317 -0.058 c
-13.2 0.067 13.045 0.133 12.862 0.133 c
-12.663 0.133 12.513 0.077 12.406 -0.029 c
-12.295 -0.128 12.245 -0.261 12.245 -0.426 c
-12.245 -0.555 12.281 -0.661 12.362 -0.75 c
-12.439 -0.831 12.63 -0.933 12.935 -1.058 c
-13.413 -1.246 13.743 -1.433 13.92 -1.616 c
-14.097 -1.793 14.184 -2.021 14.184 -2.293 c
-14.184 -2.645 14.059 -2.925 13.818 -3.131 c
-13.582 -3.337 13.266 -3.439 12.877 -3.439 c
-12.454 -3.439 12.116 -3.322 11.862 -3.087 c
-11.605 -2.844 11.48 -2.539 11.48 -2.175 c
-12.127 -2.175 l
-12.135 -2.403 12.204 -2.579 12.332 -2.705 c
-12.457 -2.822 12.642 -2.881 12.877 -2.881 c
-13.089 -2.881 13.251 -2.833 13.361 -2.734 c
-13.479 -2.638 13.538 -2.51 13.538 -2.352 c
-15.728 -3.366 -0.647 3.984 re
-15.772 1.661 m
-15.772 1.551 15.743 1.459 15.684 1.382 c
-15.625 1.312 15.53 1.279 15.405 1.279 c
-15.287 1.279 15.192 1.312 15.125 1.382 c
-15.067 1.459 15.038 1.551 15.038 1.661 c
-15.038 1.779 15.067 1.871 15.125 1.941 c
-15.192 2.018 15.287 2.058 15.405 2.058 c
-15.53 2.058 15.625 2.018 15.684 1.941 c
-15.743 1.86 15.772 1.768 15.772 1.661 c
-17.595 1.573 m
-17.595 0.618 l
-18.198 0.618 l
-18.198 0.088 l
-17.595 0.088 l
-17.595 -2.381 l
-17.595 -2.539 17.617 -2.657 17.668 -2.734 c
-17.727 -2.815 17.816 -2.851 17.933 -2.851 c
-18.021 -2.851 18.109 -2.836 18.198 -2.807 c
-18.198 -3.366 l
-18.051 -3.414 17.897 -3.439 17.741 -3.439 c
-17.485 -3.439 17.29 -3.347 17.154 -3.16 c
-17.014 -2.976 16.948 -2.715 16.948 -2.381 c
-16.948 0.088 l
-16.345 0.088 l
-16.345 0.618 l
-16.948 0.618 l
-16.948 1.573 l
-h
-18.756 -1.19 m
-18.756 -0.613 18.892 -0.158 19.168 0.177 c
-19.451 0.518 19.821 0.691 20.285 0.691 c
-20.744 0.691 21.112 0.522 21.388 0.191 c
-21.67 -0.132 21.818 -0.58 21.828 -1.146 c
-21.828 -1.573 l
-21.828 -2.142 21.685 -2.597 21.402 -2.94 c
-21.126 -3.274 20.759 -3.439 20.299 -3.439 c
-19.836 -3.439 19.466 -3.278 19.183 -2.954 c
-18.907 -2.624 18.763 -2.183 18.756 -1.631 c
-h
-19.403 -1.573 m
-19.403 -1.976 19.48 -2.293 19.638 -2.528 c
-19.803 -2.763 20.024 -2.881 20.299 -2.881 c
-20.866 -2.881 21.159 -2.469 21.182 -1.646 c
-21.182 -1.19 l
-21.182 -0.79 21.097 -0.47 20.931 -0.235 c
-20.773 0.008 20.557 0.133 20.285 0.133 c
-20.02 0.133 19.803 0.008 19.638 -0.235 c
-19.48 -0.47 19.403 -0.79 19.403 -1.19 c
-h
-24.312 0 m
-24.224 0.019 24.125 0.03 24.018 0.03 c
-23.684 0.03 23.449 -0.154 23.312 -0.515 c
-23.312 -3.366 l
-22.666 -3.366 l
-22.666 0.618 l
-23.298 0.618 l
-23.312 0.206 l
-23.489 0.53 23.732 0.691 24.048 0.691 c
-24.154 0.691 24.243 0.669 24.312 0.632 c
-h
-26.121 -2.278 m
-26.84 0.618 l
-27.532 0.618 l
-26.238 -3.925 l
-26.138 -4.266 25.995 -4.527 25.812 -4.704 c
-25.635 -4.88 25.433 -4.968 25.209 -4.968 c
-25.121 -4.968 25.007 -4.946 24.871 -4.909 c
-24.871 -4.365 l
-25.018 -4.38 l
-25.201 -4.38 25.348 -4.336 25.459 -4.247 c
-25.566 -4.16 25.654 -4.002 25.724 -3.777 c
-25.841 -3.337 l
-24.68 0.618 l
-25.386 0.618 l
-h
-27.811 -3.013 m
-27.811 -2.896 27.844 -2.8 27.914 -2.719 c
-27.979 -2.642 28.083 -2.601 28.222 -2.601 c
-28.369 -2.601 28.476 -2.642 28.546 -2.719 c
-28.623 -2.8 28.663 -2.896 28.663 -3.013 c
-28.663 -3.123 28.623 -3.215 28.546 -3.293 c
-28.476 -3.37 28.369 -3.41 28.222 -3.41 c
-28.083 -3.41 27.979 -3.37 27.914 -3.293 c
-27.844 -3.215 27.811 -3.123 27.811 -3.013 c
-33.896 -2.013 m
-33.896 -1.749 33.822 -1.55 33.676 -1.411 c
-33.536 -1.263 33.279 -1.124 32.897 -0.985 c
-32.521 -0.849 32.235 -0.706 32.029 -0.558 c
-31.831 -0.411 31.684 -0.246 31.588 -0.058 c
-31.489 0.136 31.441 0.357 31.441 0.603 c
-31.441 1.022 31.581 1.371 31.868 1.646 c
-32.151 1.918 32.519 2.058 32.97 2.058 c
-33.282 2.058 33.562 1.985 33.808 1.837 c
-34.05 1.698 34.238 1.503 34.366 1.249 c
-34.503 1.004 34.572 0.736 34.572 0.441 c
-33.896 0.441 l
-33.896 0.772 33.815 1.029 33.661 1.206 c
-33.503 1.389 33.271 1.484 32.97 1.484 c
-32.706 1.484 32.492 1.404 32.338 1.249 c
-32.191 1.103 32.118 0.89 32.118 0.618 c
-32.118 0.389 32.195 0.199 32.353 0.044 c
-32.519 -0.103 32.772 -0.243 33.117 -0.367 c
-33.635 -0.536 34.007 -0.746 34.234 -0.999 c
-34.47 -1.257 34.587 -1.587 34.587 -1.999 c
-34.587 -2.439 34.443 -2.792 34.161 -3.057 c
-33.874 -3.314 33.492 -3.439 33.014 -3.439 c
-32.698 -3.439 32.411 -3.37 32.147 -3.233 c
-31.883 -3.098 31.669 -2.907 31.515 -2.66 c
-31.368 -2.418 31.295 -2.131 31.295 -1.808 c
-31.971 -1.808 l
-31.971 -2.142 32.062 -2.403 32.249 -2.587 c
-32.434 -2.774 32.691 -2.866 33.014 -2.866 c
-33.308 -2.866 33.529 -2.792 33.676 -2.645 c
-33.822 -2.491 33.896 -2.278 33.896 -2.013 c
-36.791 -3.439 m
-36.292 -3.439 35.91 -3.293 35.646 -2.998 c
-35.38 -2.705 35.249 -2.271 35.249 -1.691 c
-35.249 -1.22 l
-35.249 -0.625 35.374 -0.158 35.631 0.177 c
-35.895 0.518 36.255 0.691 36.718 0.691 c
-37.178 0.691 37.52 0.537 37.747 0.235 c
-37.982 -0.058 38.104 -0.521 38.115 -1.146 c
-38.115 -1.573 l
-35.895 -1.573 l
-35.895 -1.66 l
-35.895 -2.094 35.972 -2.406 36.13 -2.601 c
-36.296 -2.789 36.527 -2.881 36.821 -2.881 c
-37.016 -2.881 37.188 -2.848 37.336 -2.778 c
-37.483 -2.701 37.618 -2.583 37.747 -2.425 c
-38.086 -2.836 l
-37.799 -3.241 37.369 -3.439 36.791 -3.439 c
-36.718 0.133 m
-36.442 0.133 36.241 0.037 36.116 -0.147 c
-35.987 -0.334 35.914 -0.625 35.895 -1.014 c
-37.468 -1.014 l
-37.468 -0.926 l
-37.446 -0.544 37.38 -0.276 37.262 -0.118 c
-37.145 0.048 36.961 0.133 36.718 0.133 c
-39.746 1.573 m
-39.746 0.618 l
-40.349 0.618 l
-40.349 0.088 l
-39.746 0.088 l
-39.746 -2.381 l
-39.746 -2.539 39.769 -2.657 39.82 -2.734 c
-39.879 -2.815 39.967 -2.851 40.084 -2.851 c
-40.172 -2.851 40.261 -2.836 40.349 -2.807 c
-40.349 -3.366 l
-40.202 -3.414 40.047 -3.439 39.893 -3.439 c
-39.636 -3.439 39.441 -3.347 39.305 -3.16 c
-39.166 -2.976 39.1 -2.715 39.1 -2.381 c
-39.1 0.088 l
-38.497 0.088 l
-38.497 0.618 l
-39.1 0.618 l
-39.1 1.573 l
-h
-43.538 -3.366 -0.646 3.984 re
-43.583 1.661 m
-43.583 1.551 43.553 1.459 43.495 1.382 c
-43.436 1.312 43.34 1.279 43.216 1.279 c
-43.098 1.279 43.002 1.312 42.936 1.382 c
-42.877 1.459 42.848 1.551 42.848 1.661 c
-42.848 1.779 42.877 1.871 42.936 1.941 c
-43.002 2.018 43.098 2.058 43.216 2.058 c
-43.34 2.058 43.436 2.018 43.495 1.941 c
-43.553 1.86 43.583 1.768 43.583 1.661 c
-45.406 1.573 m
-45.406 0.618 l
-46.008 0.618 l
-46.008 0.088 l
-45.406 0.088 l
-45.406 -2.381 l
-45.406 -2.539 45.427 -2.657 45.479 -2.734 c
-45.537 -2.815 45.626 -2.851 45.743 -2.851 c
-45.832 -2.851 45.92 -2.836 46.008 -2.807 c
-46.008 -3.366 l
-45.861 -3.414 45.707 -3.439 45.552 -3.439 c
-45.296 -3.439 45.101 -3.347 44.965 -3.16 c
-44.825 -2.976 44.758 -2.715 44.758 -2.381 c
-44.758 0.088 l
-44.156 0.088 l
-44.156 0.618 l
-44.758 0.618 l
-44.758 1.573 l
-h
-48.712 -2.352 m
-48.712 -2.204 48.658 -2.084 48.551 -1.984 c
-48.441 -1.889 48.235 -1.771 47.934 -1.631 c
-47.588 -1.484 47.346 -1.363 47.199 -1.263 c
-47.052 -1.157 46.942 -1.04 46.875 -0.911 c
-46.806 -0.786 46.773 -0.628 46.773 -0.44 c
-46.773 -0.118 46.89 0.151 47.125 0.368 c
-47.361 0.58 47.662 0.691 48.037 0.691 c
-48.419 0.691 48.727 0.578 48.963 0.353 c
-49.198 0.125 49.315 -0.162 49.315 -0.515 c
-48.669 -0.515 l
-48.669 -0.338 48.61 -0.187 48.492 -0.058 c
-48.375 0.067 48.22 0.133 48.037 0.133 c
-47.838 0.133 47.688 0.077 47.581 -0.029 c
-47.471 -0.128 47.419 -0.261 47.419 -0.426 c
-47.419 -0.555 47.456 -0.661 47.536 -0.75 c
-47.614 -0.831 47.806 -0.933 48.11 -1.058 c
-48.588 -1.246 48.918 -1.433 49.095 -1.616 c
-49.271 -1.793 49.36 -2.021 49.36 -2.293 c
-49.36 -2.645 49.235 -2.925 48.992 -3.131 c
-48.757 -3.337 48.441 -3.439 48.051 -3.439 c
-47.629 -3.439 47.291 -3.322 47.037 -3.087 c
-46.78 -2.844 46.655 -2.539 46.655 -2.175 c
-47.301 -2.175 l
-47.309 -2.403 47.378 -2.579 47.507 -2.705 c
-47.632 -2.822 47.816 -2.881 48.051 -2.881 c
-48.265 -2.881 48.426 -2.833 48.536 -2.734 c
-48.654 -2.638 48.712 -2.51 48.712 -2.352 c
-53.299 -2.881 m
-53.512 -2.881 53.685 -2.818 53.813 -2.69 c
-53.95 -2.554 54.023 -2.362 54.034 -2.117 c
-54.651 -2.117 l
-54.629 -2.499 54.493 -2.818 54.239 -3.072 c
-53.982 -3.318 53.67 -3.439 53.299 -3.439 c
-52.807 -3.439 52.432 -3.289 52.167 -2.984 c
-51.91 -2.672 51.785 -2.204 51.785 -1.587 c
-51.785 -1.146 l
-51.785 -0.551 51.91 -0.095 52.167 0.221 c
-52.432 0.533 52.807 0.691 53.299 0.691 c
-53.699 0.691 54.019 0.559 54.254 0.294 c
-54.497 0.037 54.629 -0.309 54.651 -0.75 c
-54.034 -0.75 l
-54.012 -0.455 53.938 -0.235 53.813 -0.087 c
-53.696 0.059 53.523 0.133 53.299 0.133 c
-53.005 0.133 52.788 0.033 52.652 -0.162 c
-52.512 -0.349 52.439 -0.658 52.432 -1.087 c
-52.432 -1.602 l
-52.432 -2.072 52.498 -2.406 52.637 -2.601 c
-52.784 -2.789 53.005 -2.881 53.299 -2.881 c
-55.268 -1.19 m
-55.268 -0.613 55.405 -0.158 55.68 0.177 c
-55.963 0.518 56.334 0.691 56.797 0.691 c
-57.256 0.691 57.624 0.522 57.9 0.191 c
-58.183 -0.132 58.33 -0.58 58.341 -1.146 c
-58.341 -1.573 l
-58.341 -2.142 58.197 -2.597 57.915 -2.94 c
-57.639 -3.274 57.271 -3.439 56.812 -3.439 c
-56.349 -3.439 55.978 -3.278 55.695 -2.954 c
-55.419 -2.624 55.276 -2.183 55.268 -1.631 c
-h
-55.916 -1.573 m
-55.916 -1.976 55.993 -2.293 56.151 -2.528 c
-56.315 -2.763 56.537 -2.881 56.812 -2.881 c
-57.378 -2.881 57.672 -2.469 57.694 -1.646 c
-57.694 -1.19 l
-57.694 -0.79 57.609 -0.47 57.444 -0.235 c
-57.286 0.008 57.069 0.133 56.797 0.133 c
-56.533 0.133 56.315 0.008 56.151 -0.235 c
-55.993 -0.47 55.916 -0.79 55.916 -1.19 c
-h
-62.06 -1.573 m
-62.06 -2.201 61.942 -2.672 61.707 -2.984 c
-61.479 -3.289 61.163 -3.439 60.751 -3.439 c
-60.347 -3.439 60.038 -3.289 59.825 -2.984 c
-59.825 -4.895 l
-59.178 -4.895 l
-59.178 0.618 l
-59.766 0.618 l
-59.81 0.177 l
-60.024 0.518 60.332 0.691 60.737 0.691 c
-61.177 0.691 61.505 0.537 61.721 0.235 c
-61.935 -0.07 62.048 -0.525 62.06 -1.132 c
-h
-61.412 -1.19 m
-61.412 -0.75 61.343 -0.426 61.207 -0.22 c
-61.067 -0.008 60.847 0.103 60.545 0.103 c
-60.23 0.103 59.991 -0.051 59.825 -0.353 c
-59.825 -2.425 l
-59.991 -2.73 60.23 -2.881 60.545 -2.881 c
-60.839 -2.881 61.053 -2.778 61.192 -2.572 c
-61.329 -2.359 61.402 -2.028 61.412 -1.587 c
-h
-63.941 -2.278 m
-64.662 0.618 l
-65.352 0.618 l
-64.059 -3.925 l
-63.959 -4.266 63.816 -4.527 63.633 -4.704 c
-63.456 -4.88 63.253 -4.968 63.03 -4.968 c
-62.941 -4.968 62.827 -4.946 62.692 -4.909 c
-62.692 -4.365 l
-62.839 -4.38 l
-63.022 -4.38 63.17 -4.336 63.28 -4.247 c
-63.386 -4.16 63.475 -4.002 63.544 -3.777 c
-63.662 -3.337 l
-62.501 0.618 l
-63.206 0.618 l
-h
-69.747 -3.366 m
-69.707 -3.278 69.681 -3.131 69.674 -2.925 c
-69.439 -3.27 69.144 -3.439 68.792 -3.439 c
-68.427 -3.439 68.145 -3.343 67.939 -3.145 c
-67.741 -2.94 67.645 -2.653 67.645 -2.278 c
-67.645 -1.878 67.781 -1.558 68.057 -1.323 c
-68.329 -1.08 68.703 -0.955 69.173 -0.955 c
-69.659 -0.955 l
-69.659 -0.529 l
-69.659 -0.294 69.603 -0.128 69.497 -0.029 c
-69.387 0.077 69.225 0.133 69.012 0.133 c
-68.814 0.133 68.652 0.073 68.527 -0.044 c
-68.41 -0.162 68.35 -0.309 68.35 -0.484 c
-67.704 -0.484 l
-67.704 -0.29 67.762 -0.099 67.88 0.088 c
-68.005 0.272 68.167 0.42 68.365 0.53 c
-68.571 0.636 68.799 0.691 69.056 0.691 c
-69.457 0.691 69.761 0.588 69.967 0.383 c
-70.181 0.177 70.295 -0.118 70.306 -0.5 c
-70.306 -2.514 l
-70.306 -2.818 70.343 -3.083 70.423 -3.307 c
-70.423 -3.366 l
-h
-68.88 -2.851 m
-69.046 -2.851 69.196 -2.807 69.335 -2.719 c
-69.482 -2.631 69.589 -2.52 69.659 -2.381 c
-69.659 -1.44 l
-69.291 -1.44 l
-68.975 -1.44 68.733 -1.51 68.556 -1.646 c
-68.38 -1.774 68.292 -1.962 68.292 -2.204 c
-68.292 -2.433 68.336 -2.597 68.425 -2.705 c
-68.512 -2.803 68.663 -2.851 68.88 -2.851 c
-73.245 -2.352 m
-73.245 -2.204 73.19 -2.084 73.084 -1.984 c
-72.973 -1.889 72.768 -1.771 72.466 -1.631 c
-72.121 -1.484 71.878 -1.363 71.731 -1.263 c
-71.585 -1.157 71.475 -1.04 71.408 -0.911 c
-71.338 -0.786 71.305 -0.628 71.305 -0.44 c
-71.305 -0.118 71.423 0.151 71.658 0.368 c
-71.893 0.58 72.194 0.691 72.57 0.691 c
-72.952 0.691 73.26 0.578 73.495 0.353 c
-73.73 0.125 73.848 -0.162 73.848 -0.515 c
-73.202 -0.515 l
-73.202 -0.338 73.142 -0.187 73.025 -0.058 c
-72.907 0.067 72.753 0.133 72.57 0.133 c
-72.371 0.133 72.221 0.077 72.113 -0.029 c
-72.003 -0.128 71.952 -0.261 71.952 -0.426 c
-71.952 -0.555 71.989 -0.661 72.069 -0.75 c
-72.147 -0.831 72.338 -0.933 72.643 -1.058 c
-73.121 -1.246 73.451 -1.433 73.628 -1.616 c
-73.804 -1.793 73.892 -2.021 73.892 -2.293 c
-73.892 -2.645 73.767 -2.925 73.524 -3.131 c
-73.289 -3.337 72.973 -3.439 72.584 -3.439 c
-72.161 -3.439 71.824 -3.322 71.57 -3.087 c
-71.313 -2.844 71.188 -2.539 71.188 -2.175 c
-71.834 -2.175 l
-71.841 -2.403 71.912 -2.579 72.04 -2.705 c
-72.165 -2.822 72.348 -2.881 72.584 -2.881 c
-72.797 -2.881 72.959 -2.833 73.069 -2.734 c
-73.187 -2.638 73.245 -2.51 73.245 -2.352 c
-78.493 -3.366 m
-78.453 -3.278 78.427 -3.131 78.419 -2.925 c
-78.184 -3.27 77.89 -3.439 77.538 -3.439 c
-77.174 -3.439 76.891 -3.343 76.685 -3.145 c
-76.487 -2.94 76.391 -2.653 76.391 -2.278 c
-76.391 -1.878 76.527 -1.558 76.803 -1.323 c
-77.075 -1.08 77.449 -0.955 77.92 -0.955 c
-78.405 -0.955 l
-78.405 -0.529 l
-78.405 -0.294 78.349 -0.128 78.243 -0.029 c
-78.133 0.077 77.971 0.133 77.758 0.133 c
-77.559 0.133 77.398 0.073 77.273 -0.044 c
-77.156 -0.162 77.096 -0.309 77.096 -0.484 c
-76.45 -0.484 l
-76.45 -0.29 76.508 -0.099 76.626 0.088 c
-76.751 0.272 76.913 0.42 77.111 0.53 c
-77.317 0.636 77.545 0.691 77.802 0.691 c
-78.203 0.691 78.508 0.588 78.714 0.383 c
-78.927 0.177 79.041 -0.118 79.051 -0.5 c
-79.051 -2.514 l
-79.051 -2.818 79.088 -3.083 79.169 -3.307 c
-79.169 -3.366 l
-h
-77.626 -2.851 m
-77.792 -2.851 77.942 -2.807 78.081 -2.719 c
-78.228 -2.631 78.335 -2.52 78.405 -2.381 c
-78.405 -1.44 l
-78.037 -1.44 l
-77.721 -1.44 77.478 -1.51 77.302 -1.646 c
-77.127 -1.774 77.038 -1.962 77.038 -2.204 c
-77.038 -2.433 77.082 -2.597 77.17 -2.705 c
-77.258 -2.803 77.409 -2.851 77.626 -2.851 c
-80.668 0.618 m
-80.683 0.177 l
-80.937 0.518 81.26 0.691 81.653 0.691 c
-82.359 0.691 82.715 0.221 82.727 -0.72 c
-82.727 -3.366 l
-82.08 -3.366 l
-82.08 -0.75 l
-82.08 -0.437 82.025 -0.216 81.918 -0.087 c
-81.808 0.037 81.653 0.103 81.447 0.103 c
-81.289 0.103 81.143 0.048 81.006 -0.058 c
-80.878 -0.168 80.775 -0.305 80.698 -0.47 c
-80.698 -3.366 l
-80.051 -3.366 l
-80.051 0.618 l
-h
-87.445 -3.013 m
-87.228 -3.3 86.916 -3.439 86.504 -3.439 c
-86.141 -3.439 85.865 -3.318 85.681 -3.072 c
-85.505 -2.818 85.409 -2.454 85.401 -1.984 c
-85.401 0.618 l
-86.048 0.618 l
-86.048 -1.926 l
-86.048 -2.554 86.232 -2.866 86.607 -2.866 c
-87.007 -2.866 87.283 -2.69 87.43 -2.337 c
-87.43 0.618 l
-88.077 0.618 l
-88.077 -3.366 l
-87.46 -3.366 l
-h
-91.943 -1.573 m
-91.943 -2.201 91.825 -2.672 91.589 -2.984 c
-91.362 -3.289 91.046 -3.439 90.635 -3.439 c
-90.23 -3.439 89.922 -3.289 89.708 -2.984 c
-89.708 -4.895 l
-89.062 -4.895 l
-89.062 0.618 l
-89.65 0.618 l
-89.694 0.177 l
-89.906 0.518 90.216 0.691 90.62 0.691 c
-91.061 0.691 91.388 0.537 91.604 0.235 c
-91.818 -0.07 91.932 -0.525 91.943 -1.132 c
-h
-91.296 -1.19 m
-91.296 -0.75 91.226 -0.426 91.09 -0.22 c
-90.951 -0.008 90.73 0.103 90.429 0.103 c
-90.112 0.103 89.874 -0.051 89.708 -0.353 c
-89.708 -2.425 l
-89.874 -2.73 90.112 -2.881 90.429 -2.881 c
-90.723 -2.881 90.936 -2.778 91.076 -2.572 c
-91.211 -2.359 91.285 -2.028 91.296 -1.587 c
-h
-94.721 -2.352 m
-94.721 -2.204 94.666 -2.084 94.559 -1.984 c
-94.449 -1.889 94.243 -1.771 93.941 -1.631 c
-93.596 -1.484 93.354 -1.363 93.207 -1.263 c
-93.06 -1.157 92.95 -1.04 92.884 -0.911 c
-92.813 -0.786 92.78 -0.628 92.78 -0.44 c
-92.78 -0.118 92.898 0.151 93.133 0.368 c
-93.368 0.58 93.669 0.691 94.045 0.691 c
-94.427 0.691 94.735 0.578 94.97 0.353 c
-95.206 0.125 95.323 -0.162 95.323 -0.515 c
-94.677 -0.515 l
-94.677 -0.338 94.618 -0.187 94.5 -0.058 c
-94.383 0.067 94.228 0.133 94.045 0.133 c
-93.846 0.133 93.696 0.077 93.589 -0.029 c
-93.478 -0.128 93.428 -0.261 93.428 -0.426 c
-93.428 -0.555 93.464 -0.661 93.545 -0.75 c
-93.622 -0.831 93.813 -0.933 94.118 -1.058 c
-94.596 -1.246 94.926 -1.433 95.103 -1.616 c
-95.279 -1.793 95.367 -2.021 95.367 -2.293 c
-95.367 -2.645 95.242 -2.925 95.001 -3.131 c
-94.765 -3.337 94.449 -3.439 94.06 -3.439 c
-93.637 -3.439 93.299 -3.322 93.045 -3.087 c
-92.788 -2.844 92.663 -2.539 92.663 -2.175 c
-93.31 -2.175 l
-93.317 -2.403 93.387 -2.579 93.515 -2.705 c
-93.64 -2.822 93.825 -2.881 94.06 -2.881 c
-94.272 -2.881 94.434 -2.833 94.544 -2.734 c
-94.662 -2.638 94.721 -2.51 94.721 -2.352 c
-97.058 1.573 m
-97.058 0.618 l
-97.661 0.618 l
-97.661 0.088 l
-97.058 0.088 l
-97.058 -2.381 l
-97.058 -2.539 97.08 -2.657 97.131 -2.734 c
-97.191 -2.815 97.278 -2.851 97.396 -2.851 c
-97.484 -2.851 97.573 -2.836 97.661 -2.807 c
-97.661 -3.366 l
-97.513 -3.414 97.359 -3.439 97.205 -3.439 c
-96.948 -3.439 96.753 -3.347 96.617 -3.16 c
-96.478 -2.976 96.412 -2.715 96.412 -2.381 c
-96.412 0.088 l
-95.809 0.088 l
-95.809 0.618 l
-96.412 0.618 l
-96.412 1.573 l
-h
-100.071 0 m
-99.983 0.019 99.884 0.03 99.778 0.03 c
-99.443 0.03 99.208 -0.154 99.072 -0.515 c
-99.072 -3.366 l
-98.425 -3.366 l
-98.425 0.618 l
-99.057 0.618 l
-99.072 0.206 l
-99.248 0.53 99.491 0.691 99.807 0.691 c
-99.913 0.691 100.002 0.669 100.071 0.632 c
-h
-102.07 -3.439 m
-101.571 -3.439 101.189 -3.293 100.923 -2.998 c
-100.659 -2.705 100.526 -2.271 100.526 -1.691 c
-100.526 -1.22 l
-100.526 -0.625 100.652 -0.158 100.909 0.177 c
-101.174 0.518 101.534 0.691 101.997 0.691 c
-102.456 0.691 102.798 0.537 103.026 0.235 c
-103.261 -0.058 103.383 -0.521 103.393 -1.146 c
-103.393 -1.573 l
-101.174 -1.573 l
-101.174 -1.66 l
-101.174 -2.094 101.251 -2.406 101.409 -2.601 c
-101.574 -2.789 101.806 -2.881 102.099 -2.881 c
-102.294 -2.881 102.467 -2.848 102.614 -2.778 c
-102.762 -2.701 102.897 -2.583 103.026 -2.425 c
-103.364 -2.836 l
-103.077 -3.241 102.647 -3.439 102.07 -3.439 c
-101.997 0.133 m
-101.721 0.133 101.519 0.037 101.394 -0.147 c
-101.266 -0.334 101.193 -0.625 101.174 -1.014 c
-102.747 -1.014 l
-102.747 -0.926 l
-102.724 -0.544 102.658 -0.276 102.541 -0.118 c
-102.423 0.048 102.24 0.133 101.997 0.133 c
-106.215 -3.366 m
-106.175 -3.278 106.149 -3.131 106.142 -2.925 c
-105.907 -3.27 105.613 -3.439 105.26 -3.439 c
-104.896 -3.439 104.613 -3.343 104.408 -3.145 c
-104.209 -2.94 104.114 -2.653 104.114 -2.278 c
-104.114 -1.878 104.25 -1.558 104.525 -1.323 c
-104.797 -1.08 105.172 -0.955 105.642 -0.955 c
-106.128 -0.955 l
-106.128 -0.529 l
-106.128 -0.294 106.072 -0.128 105.966 -0.029 c
-105.856 0.077 105.694 0.133 105.48 0.133 c
-105.282 0.133 105.12 0.073 104.995 -0.044 c
-104.878 -0.162 104.819 -0.309 104.819 -0.484 c
-104.173 -0.484 l
-104.173 -0.29 104.231 -0.099 104.349 0.088 c
-104.474 0.272 104.636 0.42 104.834 0.53 c
-105.039 0.636 105.268 0.691 105.525 0.691 c
-105.925 0.691 106.23 0.588 106.436 0.383 c
-106.649 0.177 106.763 -0.118 106.774 -0.5 c
-106.774 -2.514 l
-106.774 -2.818 106.811 -3.083 106.892 -3.307 c
-106.892 -3.366 l
-h
-105.349 -2.851 m
-105.513 -2.851 105.664 -2.807 105.804 -2.719 c
-105.951 -2.631 106.057 -2.52 106.128 -2.381 c
-106.128 -1.44 l
-105.76 -1.44 l
-105.444 -1.44 105.201 -1.51 105.025 -1.646 c
-104.848 -1.774 104.76 -1.962 104.76 -2.204 c
-104.76 -2.433 104.804 -2.597 104.892 -2.705 c
-104.981 -2.803 105.131 -2.851 105.349 -2.851 c
-108.391 0.618 m
-108.406 0.25 l
-108.648 0.544 108.968 0.691 109.361 0.691 c
-109.802 0.691 110.111 0.493 110.288 0.103 c
-110.541 0.493 110.89 0.691 111.331 0.691 c
-112.066 0.691 112.441 0.228 112.463 -0.69 c
-112.463 -3.366 l
-111.815 -3.366 l
-111.815 -0.75 l
-111.815 -0.455 111.761 -0.243 111.654 -0.103 c
-111.555 0.033 111.383 0.103 111.14 0.103 c
-110.941 0.103 110.78 0.023 110.654 -0.132 c
-110.537 -0.279 110.467 -0.47 110.448 -0.706 c
-110.448 -3.366 l
-109.787 -3.366 l
-109.787 -0.72 l
-109.787 -0.172 109.567 0.103 109.126 0.103 c
-108.792 0.103 108.557 -0.058 108.42 -0.382 c
-108.42 -3.366 l
-107.774 -3.366 l
-107.774 0.618 l
-h
-113.477 -3.013 m
-113.477 -2.896 113.51 -2.8 113.58 -2.719 c
-113.646 -2.642 113.749 -2.601 113.889 -2.601 c
-114.035 -2.601 114.142 -2.642 114.211 -2.719 c
-114.289 -2.8 114.329 -2.896 114.329 -3.013 c
-114.329 -3.123 114.289 -3.215 114.211 -3.293 c
-114.142 -3.37 114.035 -3.41 113.889 -3.41 c
-113.749 -3.41 113.646 -3.37 113.58 -3.293 c
-113.51 -3.215 113.477 -3.123 113.477 -3.013 c
-f
-Q
-0.793 0.801 0.129 0.016 k
-535.667 501.669 238.665 -21.46 re
-f
-0 0 0 0 k
-q 1 0 0 1 597.5209 489.2955 cm
-0 0 m
--0.052 -1.069 -0.353 -1.878 -0.912 -2.425 c
--1.463 -2.977 -2.234 -3.248 -3.234 -3.248 c
--4.303 -3.248 -5.123 -2.903 -5.689 -2.204 c
--6.247 -1.51 -6.527 -0.515 -6.527 0.779 c
--6.527 2.352 l
--6.527 3.645 -6.24 4.638 -5.659 5.336 c
--5.071 6.03 -4.26 6.38 -3.219 6.38 c
--2.201 6.38 -1.426 6.089 -0.896 5.513 c
--0.368 4.943 -0.067 4.123 0.014 3.057 c
--1.881 3.057 l
--1.904 3.723 -2.007 4.179 -2.19 4.424 c
--2.378 4.678 -2.72 4.807 -3.219 4.807 c
--3.719 4.807 -4.079 4.63 -4.293 4.278 c
--4.499 3.925 -4.612 3.341 -4.63 2.529 c
--4.63 0.765 l
--4.63 -0.168 -4.528 -0.808 -4.322 -1.161 c
--4.108 -1.506 -3.745 -1.675 -3.234 -1.675 c
--2.745 -1.675 -2.407 -1.558 -2.22 -1.323 c
--2.025 -1.08 -1.918 -0.639 -1.896 0 c
-h
-1.433 -2.19 m
-1.433 -1.896 1.529 -1.657 1.727 -1.469 c
-1.922 -1.286 2.175 -1.19 2.491 -1.19 c
-2.792 -1.19 3.042 -1.286 3.241 -1.469 c
-3.447 -1.657 3.549 -1.896 3.549 -2.19 c
-3.549 -2.495 3.447 -2.741 3.241 -2.925 c
-3.042 -3.102 2.792 -3.189 2.491 -3.189 c
-2.186 -3.189 1.932 -3.098 1.727 -2.91 c
-1.529 -2.726 1.433 -2.484 1.433 -2.19 c
-14.115 4.675 m
-11.792 4.675 l
-11.792 -3.116 l
-9.896 -3.116 l
-9.896 4.675 l
-7.617 4.675 l
-7.617 6.247 l
-14.115 6.247 l
-h
-21.967 -3.116 m
-20.086 -3.116 l
-20.086 0.897 l
-17.294 0.897 l
-17.294 -3.116 l
-15.397 -3.116 l
-15.397 6.247 l
-17.294 6.247 l
-17.294 2.455 l
-20.086 2.455 l
-20.086 6.247 l
-21.967 6.247 l
-h
-28.542 0.941 m
-25.602 0.941 l
-25.602 -1.543 l
-29.086 -1.543 l
-29.086 -3.116 l
-23.706 -3.116 l
-23.706 6.247 l
-29.071 6.247 l
-29.071 4.675 l
-25.602 4.675 l
-25.602 2.455 l
-28.542 2.455 l
-h
-35.44 -1.543 m
-39.29 -1.543 l
-39.29 -3.116 l
-33.219 -3.116 l
-33.219 -1.984 l
-37.042 4.675 l
-33.19 4.675 l
-33.19 6.247 l
-39.217 6.247 l
-39.217 5.13 l
-h
-47.107 0.721 m
-47.107 -0.536 46.806 -1.51 46.21 -2.204 c
-45.611 -2.903 44.788 -3.248 43.741 -3.248 c
-42.69 -3.248 41.863 -2.907 41.256 -2.219 c
-40.657 -1.525 40.352 -0.558 40.345 0.676 c
-40.345 2.279 l
-40.345 3.561 40.643 4.564 41.242 5.292 c
-41.837 6.016 42.667 6.38 43.726 6.38 c
-44.762 6.38 45.582 6.02 46.181 5.307 c
-46.787 4.601 47.095 3.605 47.107 2.323 c
-h
-45.21 2.294 m
-45.21 3.135 45.086 3.763 44.843 4.175 c
-44.608 4.586 44.233 4.792 43.726 4.792 c
-43.226 4.792 42.852 4.59 42.609 4.189 c
-42.374 3.796 42.249 3.198 42.241 2.396 c
-42.241 0.721 l
-42.241 -0.095 42.362 -0.698 42.609 -1.087 c
-42.852 -1.481 43.23 -1.675 43.741 -1.675 c
-44.229 -1.675 44.593 -1.484 44.828 -1.103 c
-45.071 -0.72 45.2 -0.132 45.21 0.661 c
-h
-55.283 0.721 m
-55.283 -0.536 54.982 -1.51 54.386 -2.204 c
-53.788 -2.903 52.965 -3.248 51.917 -3.248 c
-50.866 -3.248 50.039 -2.907 49.433 -2.219 c
-48.834 -1.525 48.529 -0.558 48.521 0.676 c
-48.521 2.279 l
-48.521 3.561 48.819 4.564 49.418 5.292 c
-50.013 6.016 50.844 6.38 51.902 6.38 c
-52.938 6.38 53.758 6.02 54.357 5.307 c
-54.964 4.601 55.272 3.605 55.283 2.323 c
-h
-53.387 2.294 m
-53.387 3.135 53.262 3.763 53.019 4.175 c
-52.784 4.586 52.41 4.792 51.902 4.792 c
-51.402 4.792 51.028 4.59 50.785 4.189 c
-50.55 3.796 50.425 3.198 50.418 2.396 c
-50.418 0.721 l
-50.418 -0.095 50.538 -0.698 50.785 -1.087 c
-51.028 -1.481 51.406 -1.675 51.917 -1.675 c
-52.406 -1.675 52.77 -1.484 53.005 -1.103 c
-53.247 -0.72 53.376 -0.132 53.387 0.661 c
-h
-66.579 0.721 m
-66.579 -0.536 66.278 -1.51 65.682 -2.204 c
-65.083 -2.903 64.26 -3.248 63.213 -3.248 c
-62.162 -3.248 61.335 -2.907 60.729 -2.219 c
-60.13 -1.525 59.825 -0.558 59.818 0.676 c
-59.818 2.279 l
-59.818 3.561 60.115 4.564 60.714 5.292 c
-61.31 6.016 62.14 6.38 63.198 6.38 c
-64.235 6.38 65.054 6.02 65.653 5.307 c
-66.259 4.601 66.568 3.605 66.579 2.323 c
-h
-64.683 2.294 m
-64.683 3.135 64.558 3.763 64.316 4.175 c
-64.08 4.586 63.705 4.792 63.198 4.792 c
-62.698 4.792 62.324 4.59 62.081 4.189 c
-61.846 3.796 61.721 3.198 61.714 2.396 c
-61.714 0.721 l
-61.714 -0.095 61.835 -0.698 62.081 -1.087 c
-62.324 -1.481 62.702 -1.675 63.213 -1.675 c
-63.702 -1.675 64.065 -1.484 64.301 -1.103 c
-64.543 -0.72 64.672 -0.132 64.683 0.661 c
-h
-72.992 0.706 m
-70.052 0.706 l
-70.052 -3.116 l
-68.156 -3.116 l
-68.156 6.247 l
-73.345 6.247 l
-73.345 4.675 l
-70.052 4.675 l
-70.052 2.279 l
-72.992 2.279 l
-h
-83.817 0.368 m
-84.7 6.247 l
-86.581 6.247 l
-84.906 -3.116 l
-83.009 -3.116 l
-81.922 2.396 l
-80.848 -3.116 l
-78.938 -3.116 l
-77.262 6.247 l
-79.143 6.247 l
-80.025 0.368 l
-81.128 6.247 l
-82.716 6.247 l
-h
-94.493 0.721 m
-94.493 -0.536 94.192 -1.51 93.596 -2.204 c
-92.997 -2.903 92.174 -3.248 91.127 -3.248 c
-90.076 -3.248 89.249 -2.907 88.642 -2.219 c
-88.044 -1.525 87.738 -0.558 87.732 0.676 c
-87.732 2.279 l
-87.732 3.561 88.029 4.564 88.628 5.292 c
-89.224 6.016 90.053 6.38 91.112 6.38 c
-92.148 6.38 92.968 6.02 93.567 5.307 c
-94.173 4.601 94.481 3.605 94.493 2.323 c
-h
-92.596 2.294 m
-92.596 3.135 92.472 3.763 92.229 4.175 c
-91.994 4.586 91.619 4.792 91.112 4.792 c
-90.612 4.792 90.238 4.59 89.995 4.189 c
-89.76 3.796 89.635 3.198 89.627 2.396 c
-89.627 0.721 l
-89.627 -0.095 89.748 -0.698 89.995 -1.087 c
-90.238 -1.481 90.616 -1.675 91.127 -1.675 c
-91.615 -1.675 91.979 -1.484 92.214 -1.103 c
-92.457 -0.72 92.586 -0.132 92.596 0.661 c
-h
-98.906 0.309 m
-97.965 0.309 l
-97.965 -3.116 l
-96.083 -3.116 l
-96.083 6.247 l
-99.098 6.247 l
-100.045 6.247 100.777 6.001 101.288 5.513 c
-101.805 5.02 102.067 4.326 102.067 3.425 c
-102.067 2.18 101.614 1.309 100.714 0.809 c
-102.346 -3.027 l
-102.346 -3.116 l
-100.317 -3.116 l
-h
-97.965 1.881 m
-99.038 1.881 l
-99.42 1.881 99.703 2.003 99.891 2.249 c
-100.075 2.502 100.17 2.841 100.17 3.263 c
-100.17 4.204 99.807 4.675 99.083 4.675 c
-97.965 4.675 l
-h
-106.23 0.5 m
-105.48 -0.44 l
-105.48 -3.116 l
-103.584 -3.116 l
-103.584 6.247 l
-105.48 6.247 l
-105.48 2.161 l
-106.083 3.175 l
-107.817 6.247 l
-110.14 6.247 l
-107.449 2.132 l
-110.184 -3.116 l
-107.935 -3.116 l
-h
-113.054 -3.116 -1.896 9.363 re
-121.304 -3.116 m
-119.407 -3.116 l
-116.644 3.028 l
-116.644 -3.116 l
-114.748 -3.116 l
-114.748 6.247 l
-116.644 6.247 l
-119.407 0.103 l
-119.407 6.247 l
-121.304 6.247 l
-h
-129.421 -2.057 m
-129.057 -2.451 128.613 -2.749 128.084 -2.954 c
-127.555 -3.149 126.974 -3.248 126.349 -3.248 c
-125.269 -3.248 124.431 -2.917 123.835 -2.248 c
-123.237 -1.583 122.932 -0.613 122.925 0.661 c
-122.925 2.352 l
-122.925 3.645 123.204 4.638 123.762 5.336 c
-124.328 6.03 125.151 6.38 126.231 6.38 c
-127.249 6.38 128.014 6.122 128.525 5.615 c
-129.043 5.116 129.34 4.329 129.421 3.263 c
-127.584 3.263 l
-127.532 3.859 127.411 4.266 127.216 4.484 c
-127.018 4.696 126.709 4.807 126.291 4.807 c
-125.78 4.807 125.408 4.619 125.173 4.248 c
-124.945 3.873 124.828 3.282 124.82 2.469 c
-124.82 0.765 l
-124.82 -0.087 124.945 -0.713 125.203 -1.103 c
-125.456 -1.484 125.872 -1.675 126.452 -1.675 c
-126.823 -1.675 127.128 -1.602 127.363 -1.455 c
-127.525 -1.338 l
-127.525 0.383 l
-126.202 0.383 l
-126.202 1.808 l
-129.421 1.808 l
-h
-138.586 -1.205 m
-136.014 -1.205 l
-135.515 -3.116 l
-133.515 -3.116 l
-136.44 6.247 l
-138.16 6.247 l
-141.115 -3.116 l
-139.086 -3.116 l
-h
-136.425 0.383 m
-138.175 0.383 l
-137.292 3.719 l
-h
-145.05 0.309 m
-144.109 0.309 l
-144.109 -3.116 l
-142.228 -3.116 l
-142.228 6.247 l
-145.241 6.247 l
-146.189 6.247 146.921 6.001 147.431 5.513 c
-147.949 5.02 148.211 4.326 148.211 3.425 c
-148.211 2.18 147.758 1.309 146.858 0.809 c
-148.49 -3.027 l
-148.49 -3.116 l
-146.461 -3.116 l
-h
-144.109 1.881 m
-145.182 1.881 l
-145.564 1.881 145.848 2.003 146.035 2.249 c
-146.218 2.502 146.314 2.841 146.314 3.263 c
-146.314 4.204 145.95 4.675 145.227 4.675 c
-144.109 4.675 l
-h
-154.564 0.941 m
-151.625 0.941 l
-151.625 -1.543 l
-155.108 -1.543 l
-155.108 -3.116 l
-149.728 -3.116 l
-149.728 6.247 l
-155.093 6.247 l
-155.093 4.675 l
-151.625 4.675 l
-151.625 2.455 l
-154.564 2.455 l
-h
-160.836 -1.205 m
-158.264 -1.205 l
-157.765 -3.116 l
-155.766 -3.116 l
-158.691 6.247 l
-160.41 6.247 l
-163.365 -3.116 l
-161.337 -3.116 l
-h
-158.676 0.383 m
-160.425 0.383 l
-159.544 3.719 l
-h
-168.418 -0.661 m
-168.418 -0.279 168.319 0.008 168.124 0.206 c
-167.926 0.401 167.573 0.603 167.066 0.809 c
-166.125 1.168 165.449 1.588 165.037 2.058 c
-164.626 2.536 164.42 3.105 164.42 3.763 c
-164.42 4.546 164.699 5.178 165.258 5.66 c
-165.816 6.137 166.525 6.38 167.389 6.38 c
-167.966 6.38 168.481 6.255 168.932 6.012 c
-169.381 5.766 169.726 5.424 169.962 4.983 c
-170.204 4.542 170.328 4.042 170.328 3.484 c
-168.447 3.484 l
-168.447 3.925 168.352 4.256 168.168 4.484 c
-167.98 4.707 167.712 4.821 167.359 4.821 c
-167.025 4.821 166.764 4.723 166.581 4.528 c
-166.404 4.341 166.316 4.079 166.316 3.749 c
-166.316 3.491 166.419 3.256 166.625 3.043 c
-166.831 2.837 167.19 2.62 167.712 2.396 c
-168.624 2.072 169.285 1.669 169.696 1.191 c
-170.116 0.709 170.328 0.096 170.328 -0.646 c
-170.328 -1.462 170.068 -2.098 169.549 -2.557 c
-169.028 -3.021 168.323 -3.248 167.433 -3.248 c
-166.823 -3.248 166.272 -3.123 165.772 -2.881 c
-165.279 -2.627 164.894 -2.271 164.611 -1.808 c
-164.325 -1.338 164.184 -0.79 164.184 -0.162 c
-166.081 -0.162 l
-166.081 -0.702 166.183 -1.095 166.39 -1.338 c
-166.602 -1.583 166.951 -1.705 167.433 -1.705 c
-168.088 -1.705 168.418 -1.359 168.418 -0.661 c
-f
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-/GS2 gs
-0 TL/Fm1 Do
-Q
-q 1 0 0 1 597.8069 284.3244 cm
-0 0 m
-0 0.107 -0.055 0.206 -0.161 0.294 c
--0.272 0.39 -0.507 0.518 -0.866 0.676 c
--1.407 0.89 -1.774 1.118 -1.969 1.353 c
--2.167 1.588 -2.263 1.875 -2.263 2.22 c
--2.263 2.661 -2.109 3.018 -1.793 3.293 c
--1.481 3.576 -1.069 3.72 -0.558 3.72 c
--0.01 3.72 0.427 3.576 0.75 3.293 c
-1.081 3.018 1.25 2.639 1.25 2.161 c
--0.058 2.161 l
--0.058 2.573 -0.228 2.779 -0.558 2.779 c
--0.698 2.779 -0.808 2.735 -0.896 2.646 c
--0.984 2.558 -1.028 2.44 -1.028 2.294 c
--1.028 2.176 -0.981 2.073 -0.881 1.985 c
--0.786 1.904 -0.554 1.786 -0.191 1.632 c
-0.339 1.434 0.709 1.214 0.927 0.971 c
-1.151 0.736 1.264 0.427 1.264 0.044 c
-1.264 -0.396 1.095 -0.756 0.765 -1.028 c
-0.43 -1.294 -0.01 -1.425 -0.558 -1.425 c
--0.922 -1.425 -1.246 -1.356 -1.529 -1.219 c
--1.804 -1.072 -2.021 -0.874 -2.175 -0.617 c
--2.333 -0.363 -2.41 -0.087 -2.41 0.206 c
--1.176 0.206 l
--1.168 -0.022 -1.113 -0.191 -1.014 -0.309 c
--0.918 -0.426 -0.756 -0.484 -0.529 -0.484 c
--0.176 -0.484 0 -0.323 0 0 c
-3.421 4.851 m
-3.421 3.631 l
-4.083 3.631 l
-4.083 2.661 l
-3.421 2.661 l
-3.421 0.192 l
-3.421 -0.007 3.444 -0.143 3.495 -0.22 c
-3.554 -0.29 3.66 -0.323 3.818 -0.323 c
-3.936 -0.323 4.039 -0.315 4.127 -0.293 c
-4.113 -1.308 l
-3.884 -1.385 3.645 -1.425 3.392 -1.425 c
-2.558 -1.425 2.135 -0.947 2.128 0.015 c
-2.128 2.661 l
-1.555 2.661 l
-1.555 3.631 l
-2.128 3.631 l
-2.128 4.851 l
-h
-7.041 -1.337 m
-7.001 -1.26 6.961 -1.132 6.924 -0.955 c
-6.696 -1.271 6.384 -1.425 5.983 -1.425 c
-5.561 -1.425 5.212 -1.29 4.939 -1.014 c
-4.675 -0.742 4.543 -0.382 4.543 0.059 c
-4.543 0.578 4.704 0.978 5.027 1.264 c
-5.358 1.548 5.839 1.694 6.468 1.706 c
-6.865 1.706 l
-6.865 2.103 l
-6.865 2.326 6.824 2.484 6.747 2.573 c
-6.666 2.661 6.556 2.705 6.409 2.705 c
-6.086 2.705 5.924 2.517 5.924 2.147 c
-4.63 2.147 l
-4.63 2.595 4.8 2.97 5.145 3.263 c
-5.486 3.565 5.924 3.72 6.453 3.72 c
-6.99 3.72 7.408 3.576 7.703 3.293 c
-8.004 3.018 8.158 2.617 8.158 2.087 c
-8.158 -0.249 l
-8.166 -0.683 8.232 -1.021 8.349 -1.263 c
-8.349 -1.337 l
-h
-6.277 -0.411 m
-6.413 -0.411 6.531 -0.382 6.629 -0.323 c
-6.737 -0.264 6.814 -0.198 6.865 -0.118 c
-6.865 0.912 l
-6.556 0.912 l
-6.328 0.912 6.152 0.842 6.027 0.706 c
-5.898 0.566 5.836 0.383 5.836 0.148 c
-5.836 -0.228 5.983 -0.411 6.277 -0.411 c
-11.131 0 m
-11.131 0.107 11.076 0.206 10.97 0.294 c
-10.859 0.39 10.624 0.518 10.264 0.676 c
-9.724 0.89 9.357 1.118 9.162 1.353 c
-8.963 1.588 8.867 1.875 8.867 2.22 c
-8.867 2.661 9.022 3.018 9.338 3.293 c
-9.65 3.576 10.062 3.72 10.573 3.72 c
-11.12 3.72 11.558 3.576 11.881 3.293 c
-12.212 3.018 12.381 2.639 12.381 2.161 c
-11.073 2.161 l
-11.073 2.573 10.903 2.779 10.573 2.779 c
-10.433 2.779 10.323 2.735 10.234 2.646 c
-10.147 2.558 10.103 2.44 10.103 2.294 c
-10.103 2.176 10.151 2.073 10.249 1.985 c
-10.345 1.904 10.577 1.786 10.94 1.632 c
-11.47 1.434 11.84 1.214 12.057 0.971 c
-12.281 0.736 12.395 0.427 12.395 0.044 c
-12.395 -0.396 12.227 -0.756 11.896 -1.028 c
-11.562 -1.294 11.12 -1.425 10.573 -1.425 c
-10.209 -1.425 9.885 -1.356 9.602 -1.219 c
-9.326 -1.072 9.11 -0.874 8.956 -0.617 c
-8.798 -0.363 8.721 -0.087 8.721 0.206 c
-9.955 0.206 l
-9.962 -0.022 10.018 -0.191 10.117 -0.309 c
-10.213 -0.426 10.375 -0.484 10.602 -0.484 c
-10.955 -0.484 11.131 -0.323 11.131 0 c
-14.299 3.19 m
-14.581 3.543 14.931 3.72 15.342 3.72 c
-15.791 3.72 16.137 3.558 16.372 3.234 c
-16.607 2.918 16.728 2.448 16.739 1.823 c
-16.739 -1.337 l
-15.431 -1.337 l
-15.431 1.808 l
-15.431 2.103 15.387 2.312 15.298 2.44 c
-15.21 2.565 15.063 2.631 14.857 2.631 c
-14.622 2.631 14.435 2.521 14.299 2.309 c
-14.299 -1.337 l
-13.006 -1.337 l
-13.006 5.719 l
-14.299 5.719 l
-h
-f
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 708.0578 323.0349 cm
-0 0 m
-47.933 0 l
-50.538 0 52.637 -2.099 52.637 -4.704 c
-52.637 -19.264 l
-52.637 -21.868 50.538 -23.963 47.933 -23.963 c
-0 -23.963 l
--2.606 -23.963 -4.7 -21.868 -4.7 -19.264 c
--4.7 -4.704 l
--4.7 -2.099 -2.606 0 0 0 c
-f
-Q
-0 0 0 0 k
-723.657 314.105 -1.309 4.968 re
-722.29 320.367 m
-722.29 320.562 722.352 320.723 722.481 320.852 c
-722.606 320.988 722.779 321.057 722.996 321.057 c
-723.208 321.057 723.381 320.988 723.51 320.852 c
-723.635 320.723 723.701 320.562 723.701 320.367 c
-723.701 320.161 723.635 319.989 723.51 319.852 c
-723.393 319.723 723.22 319.661 722.996 319.661 c
-722.779 319.661 722.606 319.723 722.481 319.852 c
-722.352 319.989 722.29 320.161 722.29 320.367 c
-725.759 319.073 m
-725.803 318.588 l
-726.097 318.971 726.479 319.162 726.95 319.162 c
-727.802 319.162 728.243 318.563 728.272 317.368 c
-728.272 314.105 l
-726.964 314.105 l
-726.964 317.28 l
-726.964 317.552 726.921 317.754 726.832 317.882 c
-726.751 318.008 726.604 318.073 726.391 318.073 c
-726.156 318.073 725.972 317.956 725.847 317.721 c
-725.847 314.105 l
-724.539 314.105 l
-724.539 319.073 l
-h
-728.835 316.737 m
-728.835 317.56 728.97 318.166 729.246 318.559 c
-729.529 318.96 729.93 319.162 730.451 319.162 c
-730.834 319.162 731.15 319 731.407 318.676 c
-731.407 321.161 l
-732.716 321.161 l
-732.716 314.105 l
-731.54 314.105 l
-731.48 314.605 l
-731.216 314.212 730.871 314.017 730.451 314.017 c
-729.93 314.017 729.533 314.212 729.261 314.605 c
-728.985 315.006 728.842 315.594 728.835 316.369 c
-h
-730.143 316.413 m
-730.143 315.92 730.191 315.579 730.29 315.384 c
-730.397 315.197 730.576 315.104 730.834 315.104 c
-731.087 315.104 731.278 315.214 731.407 315.443 c
-731.407 317.707 l
-731.278 317.949 731.087 318.073 730.834 318.073 c
-730.599 318.073 730.422 317.975 730.304 317.78 c
-730.194 317.593 730.143 317.254 730.143 316.766 c
-h
-735.505 314.017 m
-734.836 314.017 734.314 314.212 733.932 314.605 c
-733.557 315.006 733.373 315.579 733.373 316.325 c
-733.373 316.722 l
-733.373 317.504 733.542 318.107 733.888 318.53 c
-734.229 318.948 734.725 319.162 735.372 319.162 c
-735.989 319.162 736.452 318.96 736.768 318.559 c
-737.092 318.166 737.254 317.578 737.254 316.795 c
-737.254 316.149 l
-734.682 316.149 l
-734.688 315.785 734.769 315.516 734.917 315.34 c
-735.064 315.171 735.284 315.09 735.578 315.09 c
-736.018 315.09 736.379 315.241 736.666 315.546 c
-737.18 314.752 l
-737.022 314.535 736.791 314.358 736.489 314.223 c
-736.184 314.087 735.858 314.017 735.505 314.017 c
-734.682 317.059 m
-735.989 317.059 l
-735.989 317.177 l
-735.978 317.479 735.923 317.707 735.827 317.853 c
-735.74 318.008 735.582 318.088 735.357 318.088 c
-735.129 318.088 734.964 318.004 734.858 317.838 c
-734.759 317.681 734.7 317.42 734.682 317.059 c
-739.473 317.603 m
-740.061 319.073 l
-741.428 319.073 l
-740.296 316.648 l
-741.472 314.105 l
-740.091 314.105 l
-739.488 315.663 l
-738.871 314.105 l
-737.489 314.105 l
-738.665 316.648 l
-737.533 319.073 l
-738.929 319.073 l
-h
-f
-q 1 0 0 1 706.8743 306.8918 cm
-0 0 m
-0 0.683 0.077 1.341 0.235 1.97 c
-0.389 2.605 0.632 3.167 0.956 3.659 c
-1.279 4.16 1.621 4.505 1.984 4.704 c
-2.219 3.983 l
-1.874 3.659 1.602 3.16 1.396 2.484 c
-1.198 1.815 1.095 1.043 1.088 0.162 c
-1.088 -0.118 l
-1.088 -1.04 1.183 -1.849 1.382 -2.543 c
-1.587 -3.238 1.866 -3.755 2.219 -4.102 c
-1.984 -4.807 l
-1.621 -4.619 1.279 -4.281 0.956 -3.792 c
-0.64 -3.3 0.401 -2.749 0.235 -2.132 c
-0.077 -1.515 0 -0.867 0 -0.191 c
-h
-5.045 -1.382 m
-5.045 -1.276 4.991 -1.176 4.883 -1.088 c
-4.773 -0.992 4.538 -0.864 4.178 -0.706 c
-3.638 -0.493 3.27 -0.264 3.075 -0.029 c
-2.878 0.206 2.782 0.492 2.782 0.837 c
-2.782 1.278 2.936 1.635 3.252 1.911 c
-3.564 2.194 3.976 2.337 4.486 2.337 c
-5.035 2.337 5.471 2.194 5.795 1.911 c
-6.126 1.635 6.294 1.257 6.294 0.779 c
-4.987 0.779 l
-4.987 1.19 4.818 1.396 4.486 1.396 c
-4.347 1.396 4.237 1.352 4.149 1.264 c
-4.06 1.176 4.016 1.058 4.016 0.912 c
-4.016 0.794 4.064 0.69 4.164 0.602 c
-4.259 0.521 4.49 0.404 4.854 0.249 c
-5.384 0.051 5.755 -0.169 5.972 -0.412 c
-6.196 -0.647 6.31 -0.956 6.31 -1.338 c
-6.31 -1.779 6.14 -2.139 5.81 -2.411 c
-5.475 -2.675 5.035 -2.808 4.486 -2.808 c
-4.123 -2.808 3.8 -2.738 3.516 -2.602 c
-3.241 -2.455 3.024 -2.257 2.87 -1.999 c
-2.712 -1.746 2.635 -1.47 2.635 -1.176 c
-3.869 -1.176 l
-3.877 -1.404 3.932 -1.573 4.031 -1.691 c
-4.127 -1.808 4.289 -1.867 4.517 -1.867 c
-4.869 -1.867 5.045 -1.706 5.045 -1.382 c
-8.463 3.468 m
-8.463 2.248 l
-9.124 2.248 l
-9.124 1.278 l
-8.463 1.278 l
-8.463 -1.191 l
-8.463 -1.389 8.484 -1.525 8.536 -1.602 c
-8.596 -1.673 8.702 -1.706 8.86 -1.706 c
-8.977 -1.706 9.08 -1.698 9.168 -1.675 c
-9.153 -2.691 l
-8.926 -2.768 8.687 -2.808 8.434 -2.808 c
-7.599 -2.808 7.177 -2.33 7.169 -1.367 c
-7.169 1.278 l
-6.596 1.278 l
-6.596 2.248 l
-7.169 2.248 l
-7.169 3.468 l
-h
-12.087 -2.72 m
-12.046 -2.643 12.006 -2.514 11.969 -2.338 c
-11.74 -2.654 11.428 -2.808 11.028 -2.808 c
-10.605 -2.808 10.256 -2.672 9.984 -2.396 c
-9.72 -2.124 9.587 -1.764 9.587 -1.323 c
-9.587 -0.805 9.749 -0.405 10.073 -0.118 c
-10.404 0.166 10.884 0.312 11.513 0.324 c
-11.91 0.324 l
-11.91 0.72 l
-11.91 0.944 11.869 1.103 11.792 1.19 c
-11.711 1.278 11.601 1.323 11.454 1.323 c
-11.131 1.323 10.969 1.135 10.969 0.764 c
-9.675 0.764 l
-9.675 1.213 9.845 1.587 10.19 1.881 c
-10.532 2.182 10.969 2.337 11.499 2.337 c
-12.035 2.337 12.453 2.194 12.748 1.911 c
-13.049 1.635 13.203 1.234 13.203 0.706 c
-13.203 -1.632 l
-13.211 -2.066 13.277 -2.404 13.394 -2.646 c
-13.394 -2.72 l
-h
-11.322 -1.793 m
-11.458 -1.793 11.576 -1.764 11.675 -1.706 c
-11.781 -1.646 11.858 -1.58 11.91 -1.5 c
-11.91 -0.47 l
-11.601 -0.47 l
-11.374 -0.47 11.197 -0.54 11.072 -0.676 c
-10.944 -0.816 10.881 -1 10.881 -1.235 c
-10.881 -1.61 11.028 -1.793 11.322 -1.793 c
-13.824 -0.088 m
-13.824 0.735 13.972 1.341 14.265 1.735 c
-14.559 2.135 14.971 2.337 15.5 2.337 c
-15.948 2.337 16.297 2.161 16.544 1.808 c
-16.588 2.248 l
-17.764 2.248 l
-17.764 -2.72 l
-17.764 -3.356 17.58 -3.84 17.22 -4.175 c
-16.867 -4.505 16.357 -4.675 15.692 -4.675 c
-15.426 -4.675 15.14 -4.619 14.838 -4.513 c
-14.533 -4.403 14.31 -4.266 14.163 -4.102 c
-14.603 -3.204 l
-14.728 -3.329 14.89 -3.433 15.089 -3.514 c
-15.283 -3.591 15.463 -3.631 15.632 -3.631 c
-15.927 -3.631 16.136 -3.561 16.264 -3.425 c
-16.39 -3.285 16.455 -3.061 16.455 -2.749 c
-16.455 -2.323 l
-16.209 -2.646 15.886 -2.808 15.486 -2.808 c
-14.956 -2.808 14.545 -2.602 14.25 -2.19 c
-13.964 -1.779 13.824 -1.202 13.824 -0.456 c
-h
-15.118 -0.412 m
-15.118 -0.875 15.177 -1.205 15.295 -1.411 c
-15.412 -1.617 15.603 -1.72 15.867 -1.72 c
-16.132 -1.72 16.327 -1.628 16.455 -1.44 c
-16.455 0.941 l
-16.327 1.147 16.136 1.249 15.883 1.249 c
-15.618 1.249 15.42 1.139 15.295 0.926 c
-15.177 0.72 15.118 0.382 15.118 -0.088 c
-h
-19.888 -2.72 -1.309 4.968 re
-18.52 3.542 m
-18.52 3.737 18.583 3.898 18.712 4.027 c
-18.836 4.164 19.01 4.233 19.226 4.233 c
-19.439 4.233 19.613 4.164 19.74 4.027 c
-19.866 3.898 19.931 3.737 19.931 3.542 c
-19.931 3.337 19.866 3.164 19.74 3.028 c
-19.623 2.899 19.451 2.836 19.226 2.836 c
-19.01 2.836 18.836 2.899 18.712 3.028 c
-18.583 3.164 18.52 3.337 18.52 3.542 c
-21.986 2.248 m
-22.03 1.764 l
-22.324 2.146 22.707 2.337 23.177 2.337 c
-24.029 2.337 24.471 1.738 24.5 0.544 c
-24.5 -2.72 l
-23.191 -2.72 l
-23.191 0.455 l
-23.191 0.727 23.147 0.929 23.059 1.058 c
-22.979 1.183 22.831 1.249 22.618 1.249 c
-22.383 1.249 22.2 1.132 22.074 0.897 c
-22.074 -2.72 l
-20.766 -2.72 l
-20.766 2.248 l
-h
-25.095 -0.088 m
-25.095 0.735 25.242 1.341 25.535 1.735 c
-25.83 2.135 26.241 2.337 26.771 2.337 c
-27.219 2.337 27.568 2.161 27.814 1.808 c
-27.858 2.248 l
-29.034 2.248 l
-29.034 -2.72 l
-29.034 -3.356 28.851 -3.84 28.49 -4.175 c
-28.138 -4.505 27.627 -4.675 26.962 -4.675 c
-26.697 -4.675 26.41 -4.619 26.109 -4.513 c
-25.805 -4.403 25.58 -4.266 25.433 -4.102 c
-25.874 -3.204 l
-25.999 -3.329 26.161 -3.433 26.359 -3.514 c
-26.553 -3.591 26.734 -3.631 26.903 -3.631 c
-27.197 -3.631 27.407 -3.561 27.534 -3.425 c
-27.66 -3.285 27.726 -3.061 27.726 -2.749 c
-27.726 -2.323 l
-27.48 -2.646 27.156 -2.808 26.756 -2.808 c
-26.227 -2.808 25.815 -2.602 25.521 -2.19 c
-25.234 -1.779 25.095 -1.202 25.095 -0.456 c
-h
-26.389 -0.412 m
-26.389 -0.875 26.447 -1.205 26.565 -1.411 c
-26.682 -1.617 26.873 -1.72 27.138 -1.72 c
-27.403 -1.72 27.598 -1.628 27.726 -1.44 c
-27.726 0.941 l
-27.598 1.147 27.407 1.249 27.153 1.249 c
-26.888 1.249 26.69 1.139 26.565 0.926 c
-26.447 0.72 26.389 0.382 26.389 -0.088 c
-h
-34.241 -2.72 m
-34.201 -2.643 34.16 -2.514 34.123 -2.338 c
-33.896 -2.654 33.583 -2.808 33.183 -2.808 c
-32.76 -2.808 32.411 -2.672 32.139 -2.396 c
-31.875 -2.124 31.742 -1.764 31.742 -1.323 c
-31.742 -0.805 31.904 -0.405 32.228 -0.118 c
-32.558 0.166 33.04 0.312 33.668 0.324 c
-34.065 0.324 l
-34.065 0.72 l
-34.065 0.944 34.025 1.103 33.948 1.19 c
-33.867 1.278 33.757 1.323 33.609 1.323 c
-33.286 1.323 33.124 1.135 33.124 0.764 c
-31.831 0.764 l
-31.831 1.213 32 1.587 32.345 1.881 c
-32.687 2.182 33.124 2.337 33.653 2.337 c
-34.19 2.337 34.609 2.194 34.903 1.911 c
-35.204 1.635 35.359 1.234 35.359 0.706 c
-35.359 -1.632 l
-35.366 -2.066 35.432 -2.404 35.55 -2.646 c
-35.55 -2.72 l
-h
-33.477 -1.793 m
-33.613 -1.793 33.73 -1.764 33.83 -1.706 c
-33.936 -1.646 34.013 -1.58 34.065 -1.5 c
-34.065 -0.47 l
-33.757 -0.47 l
-33.529 -0.47 33.352 -0.54 33.227 -0.676 c
-33.099 -0.816 33.036 -1 33.036 -1.235 c
-33.036 -1.61 33.183 -1.793 33.477 -1.793 c
-38.582 0.999 m
-38.155 1.029 l
-37.791 1.029 37.552 0.871 37.435 0.559 c
-37.435 -2.72 l
-36.126 -2.72 l
-36.126 2.248 l
-37.346 2.248 l
-37.391 1.72 l
-37.597 2.131 37.88 2.337 38.243 2.337 c
-38.391 2.337 38.508 2.315 38.596 2.278 c
-h
-41.051 -2.808 m
-40.382 -2.808 39.86 -2.613 39.478 -2.22 c
-39.103 -1.819 38.919 -1.246 38.919 -0.5 c
-38.919 -0.104 l
-38.919 0.679 39.089 1.282 39.434 1.705 c
-39.775 2.124 40.272 2.337 40.918 2.337 c
-41.536 2.337 41.998 2.135 42.314 1.735 c
-42.638 1.341 42.8 0.754 42.8 -0.029 c
-42.8 -0.676 l
-40.228 -0.676 l
-40.234 -1.04 40.315 -1.309 40.463 -1.484 c
-40.61 -1.654 40.83 -1.735 41.124 -1.735 c
-41.566 -1.735 41.925 -1.584 42.212 -1.279 c
-42.727 -2.072 l
-42.568 -2.29 42.337 -2.466 42.036 -2.602 c
-41.73 -2.738 41.404 -2.808 41.051 -2.808 c
-40.228 0.235 m
-41.536 0.235 l
-41.536 0.353 l
-41.525 0.654 41.47 0.881 41.374 1.029 c
-41.286 1.183 41.128 1.264 40.903 1.264 c
-40.676 1.264 40.51 1.18 40.404 1.014 c
-40.305 0.856 40.246 0.595 40.228 0.235 c
-45.725 -2.72 m
-45.684 -2.643 45.644 -2.514 45.607 -2.338 c
-45.379 -2.654 45.067 -2.808 44.666 -2.808 c
-44.244 -2.808 43.895 -2.672 43.623 -2.396 c
-43.359 -2.124 43.226 -1.764 43.226 -1.323 c
-43.226 -0.805 43.388 -0.405 43.711 -0.118 c
-44.042 0.166 44.523 0.312 45.152 0.324 c
-45.549 0.324 l
-45.549 0.72 l
-45.549 0.944 45.508 1.103 45.431 1.19 c
-45.35 1.278 45.24 1.323 45.093 1.323 c
-44.77 1.323 44.608 1.135 44.608 0.764 c
-43.315 0.764 l
-43.315 1.213 43.484 1.587 43.829 1.881 c
-44.171 2.182 44.608 2.337 45.137 2.337 c
-45.674 2.337 46.092 2.194 46.387 1.911 c
-46.688 1.635 46.842 1.234 46.842 0.706 c
-46.842 -1.632 l
-46.85 -2.066 46.916 -2.404 47.033 -2.646 c
-47.033 -2.72 l
-h
-44.961 -1.793 m
-45.096 -1.793 45.214 -1.764 45.314 -1.706 c
-45.42 -1.646 45.497 -1.58 45.549 -1.5 c
-45.549 -0.47 l
-45.24 -0.47 l
-45.013 -0.47 44.836 -0.54 44.711 -0.676 c
-44.583 -0.816 44.52 -1 44.52 -1.235 c
-44.52 -1.61 44.666 -1.793 44.961 -1.793 c
-49.694 -0.104 m
-49.694 -0.819 49.599 -1.496 49.414 -2.132 c
-49.238 -2.768 48.988 -3.326 48.664 -3.807 c
-48.342 -4.285 47.996 -4.619 47.636 -4.807 c
-47.401 -4.102 l
-47.743 -3.767 48.011 -3.256 48.209 -2.573 c
-48.415 -1.889 48.521 -1.11 48.533 -0.235 c
-48.533 0.014 l
-48.533 0.904 48.429 1.697 48.224 2.396 c
-48.026 3.102 47.754 3.634 47.401 3.998 c
-47.636 4.704 l
-47.871 4.586 48.11 4.384 48.356 4.101 c
-48.599 3.825 48.819 3.484 49.017 3.071 c
-49.223 2.66 49.385 2.194 49.503 1.675 c
-49.628 1.165 49.694 0.573 49.694 -0.104 c
-f
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 646.1816 351.8337 cm
-0 0 m
-38.148 0 l
-40.754 0 42.852 -2.098 42.852 -4.704 c
-42.852 -10.231 l
-42.852 -12.835 40.754 -14.934 38.148 -14.934 c
-0 -14.934 l
--2.605 -14.934 -4.704 -12.835 -4.704 -10.231 c
--4.704 -4.704 l
--4.704 -2.098 -2.605 0 0 0 c
-f
-Q
-0 0 0 0 k
-q 1 0 0 1 649.541 345.8732 cm
-0 0 m
--0.426 0.03 l
--0.79 0.03 -1.029 -0.128 -1.147 -0.44 c
--1.147 -3.719 l
--2.455 -3.719 l
--2.455 1.249 l
--1.235 1.249 l
--1.191 0.721 l
--0.985 1.132 -0.702 1.338 -0.339 1.338 c
--0.191 1.338 -0.074 1.316 0.014 1.279 c
-h
-2.469 -3.807 m
-1.801 -3.807 1.279 -3.612 0.897 -3.219 c
-0.521 -2.818 0.338 -2.245 0.338 -1.499 c
-0.338 -1.103 l
-0.338 -0.32 0.507 0.283 0.852 0.706 c
-1.194 1.125 1.69 1.338 2.337 1.338 c
-2.954 1.338 3.417 1.135 3.733 0.736 c
-4.056 0.342 4.218 -0.246 4.218 -1.028 c
-4.218 -1.675 l
-1.646 -1.675 l
-1.653 -2.04 1.734 -2.308 1.881 -2.484 c
-2.028 -2.653 2.248 -2.734 2.543 -2.734 c
-2.983 -2.734 3.343 -2.583 3.63 -2.278 c
-4.145 -3.072 l
-3.987 -3.289 3.755 -3.465 3.453 -3.601 c
-3.149 -3.737 2.822 -3.807 2.469 -3.807 c
-1.646 -0.764 m
-2.954 -0.764 l
-2.954 -0.646 l
-2.944 -0.345 2.888 -0.118 2.792 0.03 c
-2.705 0.184 2.547 0.265 2.322 0.265 c
-2.094 0.265 1.929 0.181 1.822 0.015 c
-1.723 -0.143 1.664 -0.404 1.646 -0.764 c
-8.658 -1.396 m
-8.658 -2.171 8.517 -2.77 8.246 -3.189 c
-7.981 -3.601 7.584 -3.807 7.056 -3.807 c
-6.651 -3.807 6.327 -3.645 6.085 -3.322 c
-6.085 -5.629 l
-4.777 -5.629 l
-4.777 1.249 l
-5.982 1.249 l
-6.026 0.794 l
-6.279 1.154 6.618 1.338 7.041 1.338 c
-7.57 1.338 7.966 1.147 8.232 0.765 c
-8.503 0.383 8.646 -0.213 8.658 -1.014 c
-h
-7.364 -1.058 m
-7.364 -0.58 7.309 -0.243 7.202 -0.044 c
-7.092 0.151 6.912 0.25 6.659 0.25 c
-6.394 0.25 6.202 0.14 6.085 -0.073 c
-6.085 -2.41 l
-6.202 -2.627 6.397 -2.734 6.673 -2.734 c
-6.927 -2.734 7.103 -2.627 7.202 -2.41 c
-7.309 -2.186 7.364 -1.849 7.364 -1.396 c
-h
-9.109 -1.072 m
-9.109 -0.32 9.286 0.268 9.639 0.691 c
-9.992 1.121 10.48 1.338 11.108 1.338 c
-11.744 1.338 12.24 1.121 12.593 0.691 c
-12.953 0.268 13.136 -0.323 13.136 -1.087 c
-13.136 -1.396 l
-13.136 -2.153 12.961 -2.745 12.608 -3.175 c
-12.255 -3.597 11.759 -3.807 11.123 -3.807 c
-10.484 -3.807 9.992 -3.597 9.639 -3.175 c
-9.286 -2.745 9.109 -2.153 9.109 -1.396 c
-h
-10.418 -1.396 m
-10.418 -2.289 10.653 -2.734 11.123 -2.734 c
-11.565 -2.734 11.8 -2.362 11.829 -1.616 c
-11.843 -1.072 l
-11.843 -0.625 11.777 -0.29 11.652 -0.073 c
-11.524 0.151 11.343 0.265 11.108 0.265 c
-10.892 0.265 10.719 0.151 10.594 -0.073 c
-10.476 -0.29 10.418 -0.625 10.418 -1.072 c
-h
-15.959 -2.381 m
-15.959 -2.275 15.904 -2.175 15.798 -2.087 c
-15.687 -1.992 15.452 -1.863 15.092 -1.705 c
-14.551 -1.492 14.184 -1.263 13.99 -1.028 c
-13.791 -0.793 13.695 -0.507 13.695 -0.162 c
-13.695 0.279 13.85 0.636 14.166 0.912 c
-14.478 1.195 14.89 1.338 15.401 1.338 c
-15.948 1.338 16.386 1.195 16.708 0.912 c
-17.04 0.636 17.209 0.258 17.209 -0.22 c
-15.9 -0.22 l
-15.9 0.191 15.731 0.397 15.401 0.397 c
-15.261 0.397 15.151 0.353 15.062 0.265 c
-14.975 0.177 14.931 0.059 14.931 -0.087 c
-14.931 -0.205 14.978 -0.309 15.077 -0.397 c
-15.173 -0.478 15.405 -0.595 15.768 -0.75 c
-16.297 -0.948 16.668 -1.168 16.885 -1.411 c
-17.109 -1.646 17.223 -1.955 17.223 -2.337 c
-17.223 -2.778 17.055 -3.138 16.724 -3.41 c
-16.389 -3.674 15.948 -3.807 15.401 -3.807 c
-15.037 -3.807 14.713 -3.737 14.43 -3.601 c
-14.155 -3.454 13.938 -3.256 13.784 -2.998 c
-13.626 -2.745 13.549 -2.469 13.549 -2.175 c
-14.783 -2.175 l
-14.79 -2.403 14.846 -2.572 14.945 -2.69 c
-15.041 -2.807 15.202 -2.866 15.43 -2.866 c
-15.783 -2.866 15.959 -2.705 15.959 -2.381 c
-19.23 -3.719 -1.309 4.968 re
-17.863 2.543 m
-17.863 2.738 17.925 2.899 18.054 3.028 c
-18.179 3.165 18.351 3.234 18.568 3.234 c
-18.781 3.234 18.954 3.165 19.083 3.028 c
-19.208 2.899 19.274 2.738 19.274 2.543 c
-19.274 2.338 19.208 2.165 19.083 2.029 c
-18.965 1.9 18.792 1.837 18.568 1.837 c
-18.351 1.837 18.179 1.9 18.054 2.029 c
-17.925 2.165 17.863 2.338 17.863 2.543 c
-21.655 2.469 m
-21.655 1.249 l
-22.316 1.249 l
-22.316 0.279 l
-21.655 0.279 l
-21.655 -2.19 l
-21.655 -2.389 21.677 -2.524 21.728 -2.601 c
-21.788 -2.672 21.894 -2.705 22.052 -2.705 c
-22.169 -2.705 22.272 -2.697 22.36 -2.674 c
-22.346 -3.69 l
-22.118 -3.767 21.879 -3.807 21.626 -3.807 c
-20.791 -3.807 20.369 -3.329 20.361 -2.366 c
-20.361 0.279 l
-19.789 0.279 l
-19.789 1.249 l
-20.361 1.249 l
-20.361 2.469 l
-h
-22.64 -1.072 m
-22.64 -0.32 22.817 0.268 23.169 0.691 c
-23.522 1.121 24.01 1.338 24.639 1.338 c
-25.275 1.338 25.771 1.121 26.123 0.691 c
-26.484 0.268 26.667 -0.323 26.667 -1.087 c
-26.667 -1.396 l
-26.667 -2.153 26.491 -2.745 26.138 -3.175 c
-25.786 -3.597 25.289 -3.807 24.654 -3.807 c
-24.014 -3.807 23.522 -3.597 23.169 -3.175 c
-22.817 -2.745 22.64 -2.153 22.64 -1.396 c
-h
-23.948 -1.396 m
-23.948 -2.289 24.184 -2.734 24.654 -2.734 c
-25.094 -2.734 25.329 -2.362 25.36 -1.616 c
-25.374 -1.072 l
-25.374 -0.625 25.308 -0.29 25.183 -0.073 c
-25.054 0.151 24.874 0.265 24.639 0.265 c
-24.423 0.265 24.25 0.151 24.124 -0.073 c
-24.007 -0.29 23.948 -0.625 23.948 -1.072 c
-h
-29.74 0 m
-29.313 0.03 l
-28.949 0.03 28.71 -0.128 28.593 -0.44 c
-28.593 -3.719 l
-27.285 -3.719 l
-27.285 1.249 l
-28.504 1.249 l
-28.549 0.721 l
-28.755 1.132 29.038 1.338 29.402 1.338 c
-29.549 1.338 29.666 1.316 29.755 1.279 c
-h
-31.974 -1.558 m
-32.635 1.249 l
-34.017 1.249 l
-32.385 -4.469 l
-32.139 -5.31 31.679 -5.732 31.004 -5.732 c
-30.846 -5.732 30.665 -5.703 30.46 -5.644 c
-30.46 -4.63 l
-30.621 -4.63 l
-30.816 -4.63 30.964 -4.59 31.062 -4.513 c
-31.169 -4.432 31.253 -4.295 31.313 -4.101 c
-31.415 -3.763 l
-29.975 1.249 l
-31.371 1.249 l
-h
-f
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 653.8919 273.5134 cm
-0 0 m
-32.606 0 l
-35.211 0 37.306 -2.098 37.306 -4.704 c
-37.306 -19.829 l
-37.306 -22.434 35.211 -24.529 32.606 -24.529 c
-0 -24.529 l
--2.606 -24.529 -4.704 -22.434 -4.704 -19.829 c
--4.704 -4.704 l
--4.704 -2.098 -2.606 0 0 0 c
-f
-Q
-0 0 0 0 k
-q 1 0 0 1 659.4808 265.2527 cm
-0 0 m
-0.455 2.793 l
-1.691 2.793 l
-0.661 -2.175 l
--0.411 -2.175 l
--1.117 0.706 l
--1.822 -2.175 l
--2.896 -2.175 l
--3.925 2.793 l
--2.675 2.793 l
--2.234 0 l
--1.573 2.793 l
--0.661 2.793 l
-h
-1.951 0.47 m
-1.951 1.224 2.128 1.812 2.481 2.234 c
-2.834 2.664 3.322 2.882 3.95 2.882 c
-4.586 2.882 5.082 2.664 5.435 2.234 c
-5.795 1.812 5.978 1.22 5.978 0.455 c
-5.978 0.147 l
-5.978 -0.61 5.803 -1.201 5.45 -1.631 c
-5.097 -2.055 4.601 -2.263 3.965 -2.263 c
-3.326 -2.263 2.834 -2.055 2.481 -1.631 c
-2.128 -1.201 1.951 -0.61 1.951 0.147 c
-h
-3.26 0.147 m
-3.26 -0.746 3.495 -1.191 3.965 -1.191 c
-4.406 -1.191 4.642 -0.819 4.671 -0.073 c
-4.686 0.47 l
-4.686 0.919 4.619 1.253 4.494 1.47 c
-4.366 1.694 4.185 1.808 3.95 1.808 c
-3.734 1.808 3.561 1.694 3.436 1.47 c
-3.318 1.253 3.26 0.919 3.26 0.47 c
-h
-9.051 1.544 m
-8.625 1.573 l
-8.261 1.573 8.022 1.415 7.904 1.103 c
-7.904 -2.175 l
-6.596 -2.175 l
-6.596 2.793 l
-7.817 2.793 l
-7.86 2.263 l
-8.066 2.675 8.349 2.882 8.713 2.882 c
-8.86 2.882 8.978 2.859 9.066 2.822 c
-h
-11.241 -0.264 m
-10.903 -0.646 l
-10.903 -2.175 l
-9.595 -2.175 l
-9.595 4.881 l
-10.903 4.881 l
-10.903 1.073 l
-11.065 1.309 l
-11.962 2.793 l
-13.504 2.793 l
-12.064 0.75 l
-13.652 -2.175 l
-12.153 -2.175 l
-h
-15.283 -2.175 -1.309 4.968 re
-13.916 4.087 m
-13.916 4.281 13.978 4.443 14.107 4.571 c
-14.232 4.707 14.406 4.777 14.622 4.777 c
-14.836 4.777 15.008 4.707 15.137 4.571 c
-15.262 4.443 15.328 4.281 15.328 4.087 c
-15.328 3.881 15.262 3.707 15.137 3.572 c
-15.019 3.443 14.846 3.381 14.622 3.381 c
-14.406 3.381 14.232 3.443 14.107 3.572 c
-13.978 3.707 13.916 3.881 13.916 4.087 c
-17.382 2.793 m
-17.425 2.308 l
-17.72 2.69 18.102 2.882 18.572 2.882 c
-19.424 2.882 19.866 2.282 19.895 1.088 c
-19.895 -2.175 l
-18.587 -2.175 l
-18.587 1 l
-18.587 1.272 18.543 1.473 18.455 1.602 c
-18.374 1.727 18.227 1.793 18.013 1.793 c
-17.778 1.793 17.595 1.675 17.47 1.44 c
-17.47 -2.175 l
-16.162 -2.175 l
-16.162 2.793 l
-h
-20.49 0.455 m
-20.49 1.278 20.638 1.885 20.931 2.278 c
-21.226 2.679 21.637 2.882 22.167 2.882 c
-22.614 2.882 22.964 2.705 23.21 2.352 c
-23.254 2.793 l
-24.43 2.793 l
-24.43 -2.175 l
-24.43 -2.811 24.246 -3.296 23.886 -3.63 c
-23.534 -3.961 23.023 -4.131 22.358 -4.131 c
-22.092 -4.131 21.806 -4.075 21.504 -3.969 c
-21.2 -3.859 20.976 -3.723 20.829 -3.557 c
-21.269 -2.66 l
-21.394 -2.786 21.556 -2.888 21.755 -2.969 c
-21.949 -3.046 22.129 -3.087 22.298 -3.087 c
-22.593 -3.087 22.802 -3.017 22.931 -2.881 c
-23.056 -2.741 23.122 -2.517 23.122 -2.205 c
-23.122 -1.779 l
-22.875 -2.102 22.552 -2.263 22.152 -2.263 c
-21.622 -2.263 21.211 -2.057 20.916 -1.646 c
-20.63 -1.234 20.49 -0.658 20.49 0.088 c
-h
-21.784 0.133 m
-21.784 -0.331 21.843 -0.661 21.961 -0.867 c
-22.078 -1.073 22.269 -1.176 22.534 -1.176 c
-22.798 -1.176 22.993 -1.084 23.122 -0.897 c
-23.122 1.484 l
-22.993 1.691 22.802 1.793 22.549 1.793 c
-22.284 1.793 22.086 1.683 21.961 1.47 c
-21.843 1.264 21.784 0.926 21.784 0.455 c
-h
-f
-Q
-q 1 0 0 1 653.8806 255.7758 cm
-0 0 m
-0 0.823 0.135 1.429 0.411 1.822 c
-0.694 2.223 1.095 2.425 1.617 2.425 c
-1.999 2.425 2.315 2.263 2.572 1.94 c
-2.572 4.424 l
-3.881 4.424 l
-3.881 -2.631 l
-2.705 -2.631 l
-2.645 -2.132 l
-2.381 -2.525 2.036 -2.72 1.617 -2.72 c
-1.095 -2.72 0.698 -2.525 0.426 -2.132 c
-0.151 -1.731 0.008 -1.143 0 -0.368 c
-h
-1.309 -0.324 m
-1.309 -0.816 1.356 -1.158 1.455 -1.353 c
-1.562 -1.54 1.741 -1.632 1.999 -1.632 c
-2.252 -1.632 2.444 -1.521 2.572 -1.294 c
-2.572 0.97 l
-2.444 1.213 2.252 1.338 1.999 1.338 c
-1.764 1.338 1.587 1.238 1.469 1.043 c
-1.359 0.856 1.309 0.518 1.309 0.029 c
-h
-6.023 -2.631 -1.308 4.968 re
-4.656 3.63 m
-4.656 3.825 4.719 3.987 4.847 4.116 c
-4.972 4.251 5.145 4.322 5.361 4.322 c
-5.575 4.322 5.747 4.251 5.876 4.116 c
-6.001 3.987 6.067 3.825 6.067 3.63 c
-6.067 3.424 6.001 3.252 5.876 3.116 c
-5.758 2.988 5.585 2.925 5.361 2.925 c
-5.145 2.925 4.972 2.988 4.847 3.116 c
-4.719 3.252 4.656 3.424 4.656 3.63 c
-9.385 1.087 m
-8.959 1.117 l
-8.596 1.117 8.357 0.959 8.239 0.646 c
-8.239 -2.631 l
-6.93 -2.631 l
-6.93 2.337 l
-8.151 2.337 l
-8.195 1.808 l
-8.401 2.219 8.683 2.425 9.047 2.425 c
-9.194 2.425 9.311 2.404 9.4 2.366 c
-h
-11.854 -2.72 m
-11.186 -2.72 10.664 -2.525 10.282 -2.132 c
-9.907 -1.731 9.724 -1.158 9.724 -0.412 c
-9.724 -0.015 l
-9.724 0.768 9.893 1.371 10.238 1.793 c
-10.58 2.212 11.075 2.425 11.723 2.425 c
-12.34 2.425 12.802 2.223 13.119 1.822 c
-13.442 1.429 13.604 0.841 13.604 0.058 c
-13.604 -0.588 l
-11.031 -0.588 l
-11.039 -0.952 11.12 -1.22 11.266 -1.397 c
-11.414 -1.565 11.634 -1.646 11.929 -1.646 c
-12.369 -1.646 12.729 -1.496 13.016 -1.191 c
-13.531 -1.985 l
-13.373 -2.201 13.141 -2.378 12.839 -2.514 c
-12.534 -2.65 12.207 -2.72 11.854 -2.72 c
-11.031 0.324 m
-12.34 0.324 l
-12.34 0.441 l
-12.328 0.742 12.274 0.97 12.178 1.117 c
-12.089 1.271 11.932 1.352 11.707 1.352 c
-11.48 1.352 11.314 1.267 11.208 1.103 c
-11.108 0.944 11.05 0.683 11.031 0.324 c
-15.956 -1.646 m
-16.338 -1.646 16.529 -1.404 16.529 -0.912 c
-17.764 -0.912 l
-17.753 -1.452 17.58 -1.889 17.249 -2.22 c
-16.926 -2.554 16.503 -2.72 15.985 -2.72 c
-15.345 -2.72 14.857 -2.525 14.516 -2.132 c
-14.181 -1.731 14.015 -1.143 14.015 -0.368 c
-14.015 0.029 l
-14.015 0.812 14.177 1.404 14.501 1.808 c
-14.832 2.219 15.327 2.425 15.985 2.425 c
-16.533 2.425 16.962 2.252 17.279 1.911 c
-17.591 1.577 17.753 1.103 17.764 0.484 c
-16.529 0.484 l
-16.529 0.757 16.485 0.97 16.397 1.117 c
-16.309 1.271 16.162 1.352 15.956 1.352 c
-15.728 1.352 15.566 1.267 15.47 1.103 c
-15.372 0.944 15.316 0.636 15.309 0.176 c
-15.309 -0.324 l
-15.309 -0.735 15.327 -1.022 15.368 -1.176 c
-15.405 -1.334 15.47 -1.452 15.559 -1.529 c
-15.655 -1.61 15.786 -1.646 15.956 -1.646 c
-19.84 3.557 m
-19.84 2.337 l
-20.502 2.337 l
-20.502 1.367 l
-19.84 1.367 l
-19.84 -1.103 l
-19.84 -1.301 19.862 -1.437 19.914 -1.515 c
-19.972 -1.584 20.079 -1.617 20.237 -1.617 c
-20.355 -1.617 20.457 -1.61 20.546 -1.588 c
-20.531 -2.602 l
-20.303 -2.679 20.064 -2.72 19.81 -2.72 c
-18.977 -2.72 18.554 -2.242 18.547 -1.279 c
-18.547 1.367 l
-17.973 1.367 l
-17.973 2.337 l
-18.547 2.337 l
-18.547 3.557 l
-h
-20.825 0.014 m
-20.825 0.768 21.001 1.356 21.354 1.778 c
-21.707 2.208 22.196 2.425 22.824 2.425 c
-23.459 2.425 23.956 2.208 24.309 1.778 c
-24.669 1.356 24.852 0.764 24.852 0 c
-24.852 -0.309 l
-24.852 -1.066 24.676 -1.658 24.323 -2.088 c
-23.97 -2.51 23.474 -2.72 22.838 -2.72 c
-22.2 -2.72 21.707 -2.51 21.354 -2.088 c
-21.001 -1.658 20.825 -1.066 20.825 -0.309 c
-h
-22.133 -0.309 m
-22.133 -1.202 22.368 -1.646 22.838 -1.646 c
-23.28 -1.646 23.515 -1.276 23.544 -0.53 c
-23.559 0.014 l
-23.559 0.463 23.493 0.797 23.368 1.014 c
-23.239 1.238 23.059 1.352 22.824 1.352 c
-22.607 1.352 22.435 1.238 22.31 1.014 c
-22.192 0.797 22.133 0.463 22.133 0.014 c
-h
-27.925 1.087 m
-27.498 1.117 l
-27.135 1.117 26.896 0.959 26.778 0.646 c
-26.778 -2.631 l
-25.47 -2.631 l
-25.47 2.337 l
-26.69 2.337 l
-26.734 1.808 l
-26.94 2.219 27.222 2.425 27.586 2.425 c
-27.733 2.425 27.851 2.404 27.939 2.366 c
-h
-30.158 -0.47 m
-30.82 2.337 l
-32.201 2.337 l
-30.57 -3.381 l
-30.324 -4.222 29.865 -4.645 29.188 -4.645 c
-29.03 -4.645 28.851 -4.615 28.645 -4.557 c
-28.645 -3.543 l
-28.806 -3.543 l
-29.001 -3.543 29.148 -3.502 29.248 -3.425 c
-29.354 -3.344 29.439 -3.208 29.497 -3.013 c
-29.6 -2.675 l
-28.16 2.337 l
-29.556 2.337 l
-h
-f
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-/GS3 gs
-0 TL/Fm2 Do
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-/GS3 gs
-0 TL/Fm3 Do
-Q
-0.793 0.801 0.129 0.016 K
-0.567 w 4 M 1 j 1 J []0 d
-q 1 0 0 1 649.192 239.6172 cm
-0 0 m
-3.193 5.056 l
-S
-Q
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 651.2461 242.8702 cm
-0 0 m
-0.33 -1.473 l
-1.421 2.253 l
--1.474 -0.335 l
-h
-f*
-Q
-0.906 0.785 0.617 0.969 K
-0.283 w 0 j 0 J
-q 1 0 0 1 651.2462 242.8702 cm
-0 0 m
-0.33 -1.473 l
-1.421 2.253 l
--1.474 -0.335 l
-0 0 l
-h
-S
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS3 gs
-0 TL/Fm4 Do
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS3 gs
-0 TL/Fm5 Do
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS3 gs
-0 TL/Fm6 Do
-Q
-0.793 0.801 0.129 0.016 K
-0.567 w 1 j 1 J
-q 1 0 0 1 584.4681 270.0962 cm
-0 0 m
-5.453 5.056 l
-S
-Q
-q 1 0 0 1 588.3553 273.7013 cm
-0 0 m
--0.058 -1.507 l
-1.955 1.815 l
--1.507 0.059 l
-h
-f*
-Q
-0.906 0.785 0.617 0.969 K
-0.283 w 0 j 0 J
-q 1 0 0 1 588.3554 273.7014 cm
-0 0 m
--0.059 -1.507 l
-1.955 1.815 l
--1.507 0.059 l
-0 0 l
-h
-S
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 637.7262 286.0224 cm
-0 0 m
-0 0.459 0.081 0.809 0.25 1.044 c
-0.426 1.286 0.676 1.411 1 1.411 c
-1.301 1.411 1.532 1.279 1.691 1.014 c
-1.72 1.353 l
-2.161 1.353 l
-2.161 -1.66 l
-2.161 -2.032 2.061 -2.315 1.866 -2.514 c
-1.679 -2.708 1.419 -2.807 1.088 -2.807 c
-0.941 -2.807 0.771 -2.767 0.588 -2.69 c
-0.401 -2.62 0.264 -2.532 0.177 -2.425 c
-0.368 -2.088 l
-0.573 -2.293 0.798 -2.396 1.043 -2.396 c
-1.444 -2.396 1.65 -2.168 1.661 -1.72 c
-1.661 -1.338 l
-1.503 -1.573 1.282 -1.691 1 -1.691 c
-0.684 -1.691 0.441 -1.573 0.264 -1.338 c
-0.096 -1.103 0.008 -0.771 0 -0.338 c
-h
-0.485 -0.279 m
-0.485 -0.613 0.532 -0.86 0.632 -1.014 c
-0.727 -1.172 0.889 -1.249 1.118 -1.249 c
-1.359 -1.249 1.544 -1.128 1.661 -0.882 c
-1.661 0.603 l
-1.544 0.846 1.367 0.97 1.132 0.97 c
-0.904 0.97 0.742 0.889 0.647 0.735 c
-0.548 0.577 0.492 0.339 0.485 0.015 c
-h
-3.227 -1.631 -0.501 2.984 re
-3.256 2.146 m
-3.256 2.058 3.231 1.985 3.183 1.926 c
-3.142 1.874 3.073 1.852 2.977 1.852 c
-2.888 1.852 2.818 1.874 2.771 1.926 c
-2.73 1.985 2.712 2.051 2.712 2.132 c
-2.712 2.22 2.73 2.293 2.771 2.352 c
-2.818 2.411 2.888 2.44 2.977 2.44 c
-3.073 2.44 3.142 2.411 3.183 2.352 c
-3.231 2.293 3.256 2.223 3.256 2.146 c
-4.534 2.072 m
-4.534 1.353 l
-4.991 1.353 l
-4.991 0.956 l
-4.534 0.956 l
-4.534 -0.897 l
-4.534 -1.014 4.553 -1.103 4.594 -1.161 c
-4.63 -1.22 4.7 -1.249 4.8 -1.249 c
-4.858 -1.249 4.92 -1.242 4.991 -1.22 c
-4.991 -1.631 l
-4.873 -1.668 4.759 -1.691 4.652 -1.691 c
-4.453 -1.691 4.303 -1.624 4.197 -1.484 c
-4.098 -1.348 4.05 -1.153 4.05 -0.897 c
-4.05 0.956 l
-3.594 0.956 l
-3.594 1.353 l
-4.05 1.353 l
-4.05 2.072 l
-h
-8.099 -0.867 m
-8.099 -0.76 8.058 -0.673 7.981 -0.602 c
-7.9 -0.525 7.75 -0.437 7.526 -0.338 c
-7.262 -0.231 7.074 -0.139 6.967 -0.058 c
-6.857 0.019 6.78 0.106 6.732 0.206 c
-6.681 0.301 6.659 0.419 6.659 0.559 c
-6.659 0.801 6.747 1.004 6.923 1.162 c
-7.1 1.326 7.324 1.411 7.599 1.411 c
-7.894 1.411 8.129 1.323 8.305 1.147 c
-8.482 0.977 8.569 0.765 8.569 0.5 c
-8.085 0.5 l
-8.085 0.636 8.033 0.75 7.938 0.838 c
-7.85 0.933 7.736 0.985 7.599 0.985 c
-7.453 0.985 7.339 0.944 7.262 0.867 c
-7.181 0.798 7.144 0.698 7.144 0.574 c
-7.144 0.474 7.173 0.397 7.232 0.339 c
-7.291 0.279 7.43 0.198 7.659 0.103 c
-8.018 -0.044 8.264 -0.187 8.393 -0.324 c
-8.529 -0.452 8.599 -0.625 8.599 -0.837 c
-8.599 -1.095 8.503 -1.301 8.32 -1.455 c
-8.143 -1.613 7.908 -1.691 7.614 -1.691 c
-7.298 -1.691 7.044 -1.602 6.85 -1.425 c
-6.662 -1.242 6.57 -1.01 6.57 -0.735 c
-7.056 -0.735 l
-7.063 -0.904 7.115 -1.036 7.202 -1.132 c
-7.298 -1.22 7.437 -1.264 7.614 -1.264 c
-7.769 -1.264 7.886 -1.23 7.967 -1.161 c
-8.056 -1.095 8.099 -0.995 8.099 -0.867 c
-9.687 2.072 m
-9.687 1.353 l
-10.142 1.353 l
-10.142 0.956 l
-9.687 0.956 l
-9.687 -0.897 l
-9.687 -1.014 9.705 -1.103 9.745 -1.161 c
-9.782 -1.22 9.852 -1.249 9.951 -1.249 c
-10.01 -1.249 10.073 -1.242 10.142 -1.22 c
-10.142 -1.631 l
-10.025 -1.668 9.911 -1.691 9.804 -1.691 c
-9.606 -1.691 9.455 -1.624 9.349 -1.484 c
-9.249 -1.348 9.201 -1.153 9.201 -0.897 c
-9.201 0.956 l
-8.746 0.956 l
-8.746 1.353 l
-9.201 1.353 l
-9.201 2.072 l
-h
-12.137 -1.631 m
-12.108 -1.565 12.087 -1.455 12.079 -1.308 c
-11.902 -1.565 11.682 -1.691 11.418 -1.691 c
-11.142 -1.691 10.925 -1.617 10.771 -1.469 c
-10.624 -1.315 10.55 -1.099 10.55 -0.823 c
-10.55 -0.522 10.653 -0.279 10.859 -0.103 c
-11.065 0.081 11.348 0.177 11.711 0.177 c
-12.064 0.177 l
-12.064 0.5 l
-12.064 0.676 12.024 0.798 11.946 0.867 c
-11.866 0.944 11.748 0.985 11.594 0.985 c
-11.447 0.985 11.322 0.941 11.227 0.852 c
-11.138 0.765 11.094 0.654 11.094 0.53 c
-10.609 0.53 l
-10.609 0.676 10.653 0.816 10.741 0.956 c
-10.83 1.103 10.947 1.213 11.094 1.294 c
-11.248 1.371 11.422 1.411 11.609 1.411 c
-11.921 1.411 12.156 1.33 12.314 1.176 c
-12.469 1.029 12.549 0.809 12.549 0.515 c
-12.549 -0.985 l
-12.557 -1.22 12.594 -1.422 12.652 -1.587 c
-12.652 -1.631 l
-h
-11.491 -1.249 m
-11.609 -1.249 11.719 -1.216 11.829 -1.147 c
-11.936 -1.08 12.013 -0.995 12.064 -0.897 c
-12.064 -0.191 l
-11.8 -0.191 l
-11.565 -0.191 11.377 -0.243 11.241 -0.338 c
-11.113 -0.437 11.05 -0.58 11.05 -0.764 c
-11.05 -0.933 11.079 -1.055 11.138 -1.132 c
-11.204 -1.213 11.322 -1.249 11.491 -1.249 c
-14.57 -0.867 m
-14.57 -0.76 14.53 -0.673 14.453 -0.602 c
-14.372 -0.525 14.221 -0.437 13.997 -0.338 c
-13.733 -0.231 13.545 -0.139 13.438 -0.058 c
-13.328 0.019 13.251 0.106 13.203 0.206 c
-13.152 0.301 13.13 0.419 13.13 0.559 c
-13.13 0.801 13.218 1.004 13.394 1.162 c
-13.571 1.326 13.795 1.411 14.071 1.411 c
-14.365 1.411 14.6 1.323 14.776 1.147 c
-14.953 0.977 15.041 0.765 15.041 0.5 c
-14.556 0.5 l
-14.556 0.636 14.504 0.75 14.408 0.838 c
-14.321 0.933 14.207 0.985 14.071 0.985 c
-13.924 0.985 13.81 0.944 13.733 0.867 c
-13.652 0.798 13.615 0.698 13.615 0.574 c
-13.615 0.474 13.645 0.397 13.703 0.339 c
-13.762 0.279 13.901 0.198 14.13 0.103 c
-14.489 -0.044 14.736 -0.187 14.865 -0.324 c
-15 -0.452 15.071 -0.625 15.071 -0.837 c
-15.071 -1.095 14.975 -1.301 14.791 -1.455 c
-14.614 -1.613 14.379 -1.691 14.086 -1.691 c
-13.77 -1.691 13.516 -1.602 13.321 -1.425 c
-13.134 -1.242 13.042 -1.01 13.042 -0.735 c
-13.527 -0.735 l
-13.534 -0.904 13.585 -1.036 13.674 -1.132 c
-13.77 -1.22 13.909 -1.264 14.086 -1.264 c
-14.24 -1.264 14.358 -1.23 14.438 -1.161 c
-14.526 -1.095 14.57 -0.995 14.57 -0.867 c
-16.014 1.044 m
-16.199 1.286 16.434 1.411 16.72 1.411 c
-17.249 1.411 17.518 1.058 17.529 0.353 c
-17.529 -1.631 l
-17.043 -1.631 l
-17.043 0.324 l
-17.043 0.559 17.003 0.724 16.926 0.823 c
-16.845 0.919 16.727 0.97 16.573 0.97 c
-16.455 0.97 16.345 0.929 16.249 0.852 c
-16.151 0.771 16.074 0.665 16.014 0.53 c
-16.014 -1.631 l
-15.53 -1.631 l
-15.53 2.602 l
-16.014 2.602 l
-h
-f
-Q
-0.793 0.801 0.129 0.016 K
-0.567 w 1 j 1 J
-q 1 0 0 1 653.715 276.3362 cm
-0 0 m
--10.796 5.008 -20.332 5.81 -29.005 3.726 c
-S
-Q
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 626.7867 280.5622 cm
-0 0 m
-0.787 1.286 l
--2.594 -0.624 l
-1.286 -0.791 l
-h
-f*
-Q
-0.906 0.785 0.617 0.969 K
-0.283 w 0 j 0 J
-q 1 0 0 1 626.7867 280.5622 cm
-0 0 m
-0.787 1.286 l
--2.594 -0.625 l
-1.286 -0.791 l
-0 0 l
-h
-S
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 606.5934 264.4701 cm
-0 0 m
-0 0.459 0.081 0.808 0.25 1.043 c
-0.426 1.286 0.676 1.411 1 1.411 c
-1.301 1.411 1.532 1.278 1.69 1.014 c
-1.72 1.353 l
-2.161 1.353 l
-2.161 -1.661 l
-2.161 -2.032 2.062 -2.315 1.867 -2.514 c
-1.679 -2.708 1.419 -2.807 1.088 -2.807 c
-0.941 -2.807 0.772 -2.767 0.588 -2.69 c
-0.401 -2.62 0.265 -2.532 0.177 -2.425 c
-0.368 -2.087 l
-0.574 -2.293 0.798 -2.396 1.044 -2.396 c
-1.444 -2.396 1.65 -2.168 1.661 -1.72 c
-1.661 -1.338 l
-1.503 -1.573 1.283 -1.691 1 -1.691 c
-0.684 -1.691 0.441 -1.573 0.265 -1.338 c
-0.096 -1.103 0.008 -0.771 0 -0.338 c
-h
-0.485 -0.279 m
-0.485 -0.613 0.533 -0.86 0.632 -1.014 c
-0.728 -1.172 0.89 -1.249 1.118 -1.249 c
-1.36 -1.249 1.544 -1.128 1.661 -0.881 c
-1.661 0.603 l
-1.544 0.845 1.367 0.97 1.132 0.97 c
-0.904 0.97 0.742 0.889 0.647 0.735 c
-0.548 0.577 0.493 0.338 0.485 0.015 c
-h
-3.223 -1.631 -0.5 2.984 re
-3.252 2.146 m
-3.252 2.058 3.227 1.984 3.179 1.926 c
-3.138 1.874 3.069 1.852 2.973 1.852 c
-2.885 1.852 2.815 1.874 2.768 1.926 c
-2.727 1.984 2.708 2.051 2.708 2.132 c
-2.708 2.219 2.727 2.294 2.768 2.352 c
-2.815 2.411 2.885 2.44 2.973 2.44 c
-3.069 2.44 3.138 2.411 3.179 2.352 c
-3.227 2.294 3.252 2.223 3.252 2.146 c
-4.532 2.072 m
-4.532 1.353 l
-4.987 1.353 l
-4.987 0.956 l
-4.532 0.956 l
-4.532 -0.897 l
-4.532 -1.014 4.549 -1.103 4.59 -1.161 c
-4.627 -1.22 4.696 -1.249 4.796 -1.249 c
-4.854 -1.249 4.917 -1.242 4.987 -1.22 c
-4.987 -1.631 l
-4.869 -1.668 4.755 -1.691 4.649 -1.691 c
-4.451 -1.691 4.3 -1.625 4.193 -1.484 c
-4.094 -1.349 4.046 -1.154 4.046 -0.897 c
-4.046 0.956 l
-3.591 0.956 l
-3.591 1.353 l
-4.046 1.353 l
-4.046 2.072 l
-h
-8.096 -0.867 m
-8.096 -0.761 8.056 -0.673 7.978 -0.603 c
-7.898 -0.526 7.747 -0.437 7.522 -0.338 c
-7.258 -0.231 7.071 -0.139 6.964 -0.058 c
-6.853 0.019 6.776 0.106 6.729 0.206 c
-6.677 0.301 6.655 0.419 6.655 0.559 c
-6.655 0.802 6.743 1.003 6.92 1.161 c
-7.096 1.326 7.321 1.411 7.596 1.411 c
-7.89 1.411 8.125 1.323 8.301 1.147 c
-8.478 0.977 8.566 0.765 8.566 0.5 c
-8.081 0.5 l
-8.081 0.636 8.029 0.75 7.934 0.838 c
-7.846 0.933 7.732 0.985 7.596 0.985 c
-7.449 0.985 7.335 0.944 7.258 0.867 c
-7.177 0.798 7.14 0.698 7.14 0.573 c
-7.14 0.474 7.169 0.397 7.229 0.338 c
-7.287 0.279 7.427 0.198 7.655 0.103 c
-8.015 -0.044 8.262 -0.187 8.39 -0.324 c
-8.526 -0.452 8.596 -0.625 8.596 -0.838 c
-8.596 -1.095 8.5 -1.301 8.316 -1.455 c
-8.14 -1.613 7.905 -1.691 7.611 -1.691 c
-7.294 -1.691 7.041 -1.602 6.847 -1.426 c
-6.659 -1.242 6.567 -1.01 6.567 -0.735 c
-7.052 -0.735 l
-7.059 -0.904 7.111 -1.037 7.199 -1.132 c
-7.294 -1.22 7.435 -1.264 7.611 -1.264 c
-7.765 -1.264 7.882 -1.231 7.963 -1.161 c
-8.052 -1.095 8.096 -0.996 8.096 -0.867 c
-9.687 2.072 m
-9.687 1.353 l
-10.143 1.353 l
-10.143 0.956 l
-9.687 0.956 l
-9.687 -0.897 l
-9.687 -1.014 9.706 -1.103 9.746 -1.161 c
-9.783 -1.22 9.852 -1.249 9.951 -1.249 c
-10.01 -1.249 10.073 -1.242 10.143 -1.22 c
-10.143 -1.631 l
-10.026 -1.668 9.911 -1.691 9.804 -1.691 c
-9.606 -1.691 9.455 -1.625 9.349 -1.484 c
-9.249 -1.349 9.202 -1.154 9.202 -0.897 c
-9.202 0.956 l
-8.746 0.956 l
-8.746 1.353 l
-9.202 1.353 l
-9.202 2.072 l
-h
-12.135 -1.631 m
-12.104 -1.565 12.083 -1.455 12.075 -1.309 c
-11.899 -1.565 11.678 -1.691 11.414 -1.691 c
-11.138 -1.691 10.922 -1.617 10.768 -1.469 c
-10.62 -1.315 10.547 -1.099 10.547 -0.823 c
-10.547 -0.522 10.65 -0.279 10.855 -0.103 c
-11.061 0.081 11.344 0.177 11.708 0.177 c
-12.061 0.177 l
-12.061 0.5 l
-12.061 0.676 12.021 0.798 11.944 0.867 c
-11.863 0.944 11.745 0.985 11.591 0.985 c
-11.443 0.985 11.319 0.941 11.223 0.852 c
-11.135 0.765 11.09 0.654 11.09 0.53 c
-10.606 0.53 l
-10.606 0.676 10.65 0.816 10.738 0.956 c
-10.826 1.103 10.944 1.213 11.09 1.294 c
-11.245 1.371 11.418 1.411 11.605 1.411 c
-11.917 1.411 12.152 1.33 12.31 1.176 c
-12.465 1.029 12.546 0.808 12.546 0.515 c
-12.546 -0.985 l
-12.553 -1.22 12.59 -1.422 12.649 -1.587 c
-12.649 -1.631 l
-h
-11.487 -1.249 m
-11.605 -1.249 11.715 -1.216 11.826 -1.147 c
-11.932 -1.08 12.01 -0.996 12.061 -0.897 c
-12.061 -0.191 l
-11.796 -0.191 l
-11.561 -0.191 11.374 -0.243 11.238 -0.338 c
-11.109 -0.437 11.046 -0.58 11.046 -0.764 c
-11.046 -0.933 11.076 -1.055 11.135 -1.132 c
-11.201 -1.213 11.319 -1.249 11.487 -1.249 c
-14.567 -0.867 m
-14.567 -0.761 14.527 -0.673 14.45 -0.603 c
-14.369 -0.526 14.218 -0.437 13.993 -0.338 c
-13.729 -0.231 13.542 -0.139 13.436 -0.058 c
-13.325 0.019 13.247 0.106 13.201 0.206 c
-13.149 0.301 13.126 0.419 13.126 0.559 c
-13.126 0.802 13.215 1.003 13.391 1.161 c
-13.567 1.326 13.791 1.411 14.067 1.411 c
-14.361 1.411 14.597 1.323 14.772 1.147 c
-14.949 0.977 15.038 0.765 15.038 0.5 c
-14.552 0.5 l
-14.552 0.636 14.501 0.75 14.406 0.838 c
-14.317 0.933 14.203 0.985 14.067 0.985 c
-13.92 0.985 13.806 0.944 13.729 0.867 c
-13.648 0.798 13.612 0.698 13.612 0.573 c
-13.612 0.474 13.641 0.397 13.7 0.338 c
-13.758 0.279 13.898 0.198 14.126 0.103 c
-14.486 -0.044 14.732 -0.187 14.861 -0.324 c
-14.997 -0.452 15.067 -0.625 15.067 -0.838 c
-15.067 -1.095 14.971 -1.301 14.787 -1.455 c
-14.612 -1.613 14.376 -1.691 14.082 -1.691 c
-13.766 -1.691 13.513 -1.602 13.318 -1.426 c
-13.13 -1.242 13.039 -1.01 13.039 -0.735 c
-13.523 -0.735 l
-13.531 -0.904 13.582 -1.037 13.671 -1.132 c
-13.766 -1.22 13.906 -1.264 14.082 -1.264 c
-14.236 -1.264 14.354 -1.231 14.435 -1.161 c
-14.523 -1.095 14.567 -0.996 14.567 -0.867 c
-16.011 1.043 m
-16.195 1.286 16.43 1.411 16.717 1.411 c
-17.246 1.411 17.514 1.058 17.525 0.353 c
-17.525 -1.631 l
-17.041 -1.631 l
-17.041 0.324 l
-17.041 0.559 17 0.724 16.923 0.823 c
-16.842 0.919 16.724 0.97 16.57 0.97 c
-16.453 0.97 16.342 0.929 16.247 0.852 c
-16.147 0.771 16.07 0.665 16.011 0.53 c
-16.011 -1.631 l
-15.526 -1.631 l
-15.526 2.602 l
-16.011 2.602 l
-h
-21.417 -0.279 m
-21.417 -0.75 21.332 -1.103 21.167 -1.338 c
-20.998 -1.573 20.759 -1.691 20.447 -1.691 c
-20.141 -1.691 19.91 -1.58 19.755 -1.352 c
-19.755 -2.778 l
-19.271 -2.778 l
-19.271 1.353 l
-19.711 1.353 l
-19.741 1.014 l
-19.896 1.278 20.127 1.411 20.432 1.411 c
-20.763 1.411 21.009 1.294 21.167 1.058 c
-21.332 0.831 21.417 0.492 21.417 0.044 c
-h
-20.931 0 m
-20.931 0.331 20.877 0.577 20.77 0.735 c
-20.671 0.889 20.509 0.97 20.285 0.97 c
-20.05 0.97 19.873 0.852 19.755 0.617 c
-19.755 -0.926 l
-19.873 -1.154 20.054 -1.264 20.299 -1.264 c
-20.513 -1.264 20.671 -1.187 20.77 -1.029 c
-20.877 -0.875 20.931 -0.632 20.931 -0.309 c
-h
-21.77 0 m
-21.77 0.43 21.872 0.771 22.078 1.029 c
-22.292 1.282 22.57 1.411 22.916 1.411 c
-23.258 1.411 23.534 1.282 23.74 1.029 c
-23.952 0.783 24.066 0.449 24.077 0.029 c
-24.077 -0.279 l
-24.077 -0.713 23.967 -1.055 23.754 -1.309 c
-23.549 -1.565 23.269 -1.691 22.916 -1.691 c
-22.57 -1.691 22.298 -1.569 22.093 -1.323 c
-21.887 -1.08 21.777 -0.746 21.77 -0.324 c
-h
-22.255 -0.279 m
-22.255 -0.595 22.313 -0.838 22.431 -1.014 c
-22.556 -1.183 22.718 -1.264 22.916 -1.264 c
-23.346 -1.264 23.57 -0.956 23.592 -0.338 c
-23.592 0 l
-23.592 0.301 23.526 0.544 23.401 0.721 c
-23.283 0.897 23.121 0.985 22.916 0.985 c
-22.718 0.985 22.556 0.897 22.431 0.721 c
-22.313 0.544 22.255 0.301 22.255 0 c
-h
-26.664 -0.279 m
-26.664 -0.75 26.58 -1.103 26.414 -1.338 c
-26.246 -1.573 26.007 -1.691 25.694 -1.691 c
-25.39 -1.691 25.157 -1.58 25.003 -1.352 c
-25.003 -2.778 l
-24.519 -2.778 l
-24.519 1.353 l
-24.96 1.353 l
-24.989 1.014 l
-25.143 1.278 25.375 1.411 25.679 1.411 c
-26.011 1.411 26.256 1.294 26.414 1.058 c
-26.58 0.831 26.664 0.492 26.664 0.044 c
-h
-26.179 0 m
-26.179 0.331 26.124 0.577 26.018 0.735 c
-25.918 0.889 25.757 0.97 25.533 0.97 c
-25.297 0.97 25.121 0.852 25.003 0.617 c
-25.003 -0.926 l
-25.121 -1.154 25.301 -1.264 25.548 -1.264 c
-25.76 -1.264 25.918 -1.187 26.018 -1.029 c
-26.124 -0.875 26.179 -0.632 26.179 -0.309 c
-h
-f
-Q
-0.793 0.801 0.129 0.016 K
-0.567 w 1 j 1 J
-q 1 0 0 1 619.5765 272.9739 cm
-0 0 m
-6.644 -3.018 14.244 -5.796 25.808 -5.322 c
-S
-Q
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 643.2534 267.5639 cm
-0 0 m
--1.022 -1.11 l
-2.664 0.111 l
--1.11 1.026 l
-h
-f*
-Q
-0.906 0.785 0.617 0.969 K
-0.283 w 0 j 0 J
-q 1 0 0 1 643.2535 267.5639 cm
-0 0 m
--1.022 -1.11 l
-2.664 0.111 l
--1.11 1.026 l
-0 0 l
-h
-S
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 664.6398 301.7215 cm
-0 0 m
-0 0.459 0.081 0.808 0.25 1.043 c
-0.427 1.286 0.676 1.411 1 1.411 c
-1.301 1.411 1.532 1.278 1.69 1.014 c
-1.721 1.352 l
-2.161 1.352 l
-2.161 -1.661 l
-2.161 -2.032 2.062 -2.315 1.867 -2.514 c
-1.68 -2.708 1.419 -2.808 1.088 -2.808 c
-0.941 -2.808 0.772 -2.768 0.588 -2.691 c
-0.401 -2.62 0.265 -2.533 0.177 -2.425 c
-0.368 -2.087 l
-0.574 -2.294 0.798 -2.396 1.044 -2.396 c
-1.445 -2.396 1.65 -2.168 1.661 -1.72 c
-1.661 -1.338 l
-1.503 -1.573 1.283 -1.691 1 -1.691 c
-0.684 -1.691 0.441 -1.573 0.265 -1.338 c
-0.096 -1.103 0.008 -0.772 0 -0.339 c
-h
-0.485 -0.279 m
-0.485 -0.614 0.533 -0.86 0.632 -1.014 c
-0.728 -1.172 0.89 -1.249 1.118 -1.249 c
-1.36 -1.249 1.544 -1.129 1.661 -0.882 c
-1.661 0.602 l
-1.544 0.845 1.368 0.97 1.133 0.97 c
-0.904 0.97 0.742 0.889 0.647 0.735 c
-0.548 0.577 0.493 0.338 0.485 0.014 c
-h
-3.227 -1.632 -0.499 2.984 re
-3.256 2.146 m
-3.256 2.057 3.231 1.984 3.182 1.926 c
-3.142 1.874 3.072 1.851 2.977 1.851 c
-2.889 1.851 2.819 1.874 2.771 1.926 c
-2.731 1.984 2.712 2.05 2.712 2.131 c
-2.712 2.219 2.731 2.293 2.771 2.352 c
-2.819 2.41 2.889 2.439 2.977 2.439 c
-3.072 2.439 3.142 2.41 3.182 2.352 c
-3.231 2.293 3.256 2.223 3.256 2.146 c
-4.532 2.072 m
-4.532 1.352 l
-4.987 1.352 l
-4.987 0.955 l
-4.532 0.955 l
-4.532 -0.897 l
-4.532 -1.014 4.549 -1.103 4.59 -1.162 c
-4.627 -1.22 4.697 -1.249 4.796 -1.249 c
-4.855 -1.249 4.917 -1.243 4.987 -1.22 c
-4.987 -1.632 l
-4.869 -1.669 4.755 -1.691 4.649 -1.691 c
-4.451 -1.691 4.3 -1.625 4.193 -1.484 c
-4.094 -1.349 4.046 -1.154 4.046 -0.897 c
-4.046 0.955 l
-3.591 0.955 l
-3.591 1.352 l
-4.046 1.352 l
-4.046 2.072 l
-h
-7.894 0.897 m
-7.824 0.904 7.751 0.911 7.674 0.911 c
-7.416 0.911 7.24 0.771 7.144 0.5 c
-7.144 -1.632 l
-6.66 -1.632 l
-6.66 1.352 l
-7.13 1.352 l
-7.144 1.043 l
-7.269 1.286 7.453 1.411 7.688 1.411 c
-7.765 1.411 7.828 1.396 7.879 1.367 c
-h
-9.272 -1.691 m
-8.897 -1.691 8.614 -1.584 8.42 -1.367 c
-8.221 -1.143 8.125 -0.817 8.125 -0.383 c
-8.125 -0.015 l
-8.125 0.426 8.217 0.771 8.405 1.028 c
-8.599 1.282 8.875 1.411 9.228 1.411 c
-9.569 1.411 9.823 1.297 9.992 1.072 c
-10.168 0.845 10.261 0.5 10.271 0.029 c
-10.271 -0.279 l
-8.611 -0.279 l
-8.611 -0.353 l
-8.611 -0.676 8.669 -0.912 8.786 -1.058 c
-8.904 -1.199 9.073 -1.264 9.301 -1.264 c
-9.448 -1.264 9.573 -1.243 9.683 -1.191 c
-9.79 -1.132 9.893 -1.044 9.992 -0.927 c
-10.242 -1.235 l
-10.036 -1.54 9.713 -1.691 9.272 -1.691 c
-9.228 0.985 m
-9.022 0.985 8.867 0.914 8.772 0.779 c
-8.673 0.639 8.618 0.426 8.611 0.132 c
-9.786 0.132 l
-9.786 0.205 l
-9.764 0.477 9.713 0.675 9.625 0.793 c
-9.536 0.918 9.405 0.985 9.228 0.985 c
-12.123 -0.867 m
-12.123 -0.761 12.083 -0.673 12.006 -0.603 c
-11.925 -0.526 11.774 -0.437 11.55 -0.339 c
-11.286 -0.231 11.098 -0.14 10.992 -0.059 c
-10.882 0.018 10.804 0.106 10.756 0.205 c
-10.705 0.301 10.683 0.419 10.683 0.558 c
-10.683 0.801 10.771 1.003 10.947 1.161 c
-11.124 1.326 11.348 1.411 11.624 1.411 c
-11.917 1.411 12.152 1.323 12.329 1.146 c
-12.505 0.977 12.594 0.764 12.594 0.5 c
-12.108 0.5 l
-12.108 0.635 12.057 0.75 11.961 0.837 c
-11.873 0.933 11.759 0.985 11.624 0.985 c
-11.477 0.985 11.363 0.944 11.286 0.867 c
-11.205 0.797 11.168 0.698 11.168 0.573 c
-11.168 0.474 11.198 0.397 11.256 0.338 c
-11.315 0.279 11.454 0.198 11.682 0.103 c
-12.042 -0.044 12.289 -0.188 12.418 -0.324 c
-12.553 -0.453 12.623 -0.625 12.623 -0.838 c
-12.623 -1.095 12.528 -1.301 12.343 -1.455 c
-12.168 -1.613 11.932 -1.691 11.638 -1.691 c
-11.323 -1.691 11.069 -1.602 10.874 -1.426 c
-10.687 -1.243 10.595 -1.011 10.595 -0.736 c
-11.08 -0.736 l
-11.088 -0.904 11.138 -1.037 11.227 -1.132 c
-11.323 -1.22 11.462 -1.264 11.638 -1.264 c
-11.793 -1.264 11.911 -1.231 11.992 -1.162 c
-12.079 -1.095 12.123 -0.996 12.123 -0.867 c
-14.137 -1.691 m
-13.762 -1.691 13.48 -1.584 13.284 -1.367 c
-13.087 -1.143 12.991 -0.817 12.991 -0.383 c
-12.991 -0.015 l
-12.991 0.426 13.083 0.771 13.27 1.028 c
-13.465 1.282 13.74 1.411 14.093 1.411 c
-14.435 1.411 14.689 1.297 14.857 1.072 c
-15.034 0.845 15.126 0.5 15.137 0.029 c
-15.137 -0.279 l
-13.476 -0.279 l
-13.476 -0.353 l
-13.476 -0.676 13.534 -0.912 13.652 -1.058 c
-13.77 -1.199 13.939 -1.264 14.167 -1.264 c
-14.313 -1.264 14.438 -1.243 14.549 -1.191 c
-14.656 -1.132 14.758 -1.044 14.857 -0.927 c
-15.107 -1.235 l
-14.901 -1.54 14.579 -1.691 14.137 -1.691 c
-14.093 0.985 m
-13.887 0.985 13.733 0.914 13.638 0.779 c
-13.538 0.639 13.483 0.426 13.476 0.132 c
-14.652 0.132 l
-14.652 0.205 l
-14.629 0.477 14.579 0.675 14.49 0.793 c
-14.402 0.918 14.269 0.985 14.093 0.985 c
-16.181 2.072 m
-16.181 1.352 l
-16.636 1.352 l
-16.636 0.955 l
-16.181 0.955 l
-16.181 -0.897 l
-16.181 -1.014 16.199 -1.103 16.239 -1.162 c
-16.276 -1.22 16.345 -1.249 16.445 -1.249 c
-16.503 -1.249 16.566 -1.243 16.636 -1.22 c
-16.636 -1.632 l
-16.518 -1.669 16.405 -1.691 16.298 -1.691 c
-16.1 -1.691 15.949 -1.625 15.842 -1.484 c
-15.743 -1.349 15.695 -1.154 15.695 -0.897 c
-15.695 0.955 l
-15.24 0.955 l
-15.24 1.352 l
-15.695 1.352 l
-15.695 2.072 l
-h
-20.995 -1.632 m
-20.495 -1.632 l
-20.495 0.22 l
-18.878 0.22 l
-18.878 -1.632 l
-18.363 -1.632 l
-18.363 2.381 l
-18.878 2.381 l
-18.878 0.661 l
-20.495 0.661 l
-20.495 2.381 l
-20.995 2.381 l
-h
-23.563 0.22 m
-22.152 0.22 l
-22.152 -1.206 l
-23.798 -1.206 l
-23.798 -1.632 l
-21.637 -1.632 l
-21.637 2.381 l
-23.769 2.381 l
-23.769 1.94 l
-22.152 1.94 l
-22.152 0.661 l
-23.563 0.661 l
-h
-26.132 -0.588 m
-24.779 -0.588 l
-24.456 -1.632 l
-23.942 -1.632 l
-25.235 2.381 l
-25.661 2.381 l
-26.969 -1.632 l
-26.44 -1.632 l
-h
-24.912 -0.148 m
-25.999 -0.148 l
-25.455 1.675 l
-h
-27.285 -1.632 m
-27.285 2.381 l
-28.256 2.381 l
-28.715 2.381 29.072 2.234 29.328 1.94 c
-29.593 1.646 29.725 1.234 29.725 0.706 c
-29.725 0.029 l
-29.725 -0.5 29.593 -0.912 29.328 -1.206 c
-29.072 -1.492 28.696 -1.632 28.197 -1.632 c
-h
-27.8 1.94 m
-27.8 -1.206 l
-28.197 -1.206 l
-28.557 -1.206 28.818 -1.103 28.976 -0.897 c
-29.141 -0.691 29.226 -0.389 29.226 0.014 c
-29.226 0.72 l
-29.226 1.139 29.141 1.448 28.976 1.646 c
-28.818 1.841 28.579 1.94 28.256 1.94 c
-h
-f
-Q
-0.793 0.801 0.129 0.016 K
-0.567 w 1 j 1 J
-q 1 0 0 1 700.2778 300.817 cm
-0 0 m
--10.796 -4.575 -16.874 -12.02 -16.76 -23.684 c
-S
-Q
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 683.4952 279.2684 cm
-0 0 m
--1.077 1.055 l
-0.026 -2.668 l
-1.059 1.077 l
-h
-f*
-Q
-0.906 0.785 0.617 0.969 K
-0.283 w 0 j 0 J
-q 1 0 0 1 683.4952 279.2684 cm
-0 0 m
--1.077 1.055 l
-0.026 -2.668 l
-1.059 1.077 l
-0 0 l
-h
-S
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 702.545 271.8379 cm
-0 0 m
-0 0.459 0.081 0.808 0.25 1.043 c
-0.427 1.286 0.676 1.411 1 1.411 c
-1.301 1.411 1.532 1.278 1.69 1.014 c
-1.72 1.353 l
-2.161 1.353 l
-2.161 -1.661 l
-2.161 -2.032 2.062 -2.315 1.867 -2.514 c
-1.68 -2.708 1.419 -2.807 1.088 -2.807 c
-0.941 -2.807 0.772 -2.767 0.588 -2.69 c
-0.401 -2.62 0.265 -2.532 0.177 -2.425 c
-0.368 -2.087 l
-0.574 -2.293 0.798 -2.396 1.044 -2.396 c
-1.445 -2.396 1.65 -2.168 1.661 -1.72 c
-1.661 -1.338 l
-1.503 -1.573 1.283 -1.69 1 -1.69 c
-0.684 -1.69 0.441 -1.573 0.265 -1.338 c
-0.096 -1.103 0.008 -0.771 0 -0.338 c
-h
-0.485 -0.279 m
-0.485 -0.613 0.533 -0.86 0.632 -1.014 c
-0.728 -1.172 0.89 -1.249 1.118 -1.249 c
-1.36 -1.249 1.544 -1.128 1.661 -0.881 c
-1.661 0.603 l
-1.544 0.845 1.368 0.97 1.133 0.97 c
-0.904 0.97 0.742 0.889 0.647 0.735 c
-0.547 0.577 0.493 0.338 0.485 0.015 c
-h
-3.223 -1.631 -0.5 2.984 re
-3.252 2.146 m
-3.252 2.058 3.227 1.984 3.179 1.926 c
-3.138 1.874 3.069 1.852 2.974 1.852 c
-2.885 1.852 2.816 1.874 2.768 1.926 c
-2.727 1.984 2.708 2.051 2.708 2.132 c
-2.708 2.219 2.727 2.294 2.768 2.352 c
-2.816 2.411 2.885 2.44 2.974 2.44 c
-3.069 2.44 3.138 2.411 3.179 2.352 c
-3.227 2.294 3.252 2.223 3.252 2.146 c
-4.532 2.072 m
-4.532 1.353 l
-4.987 1.353 l
-4.987 0.956 l
-4.532 0.956 l
-4.532 -0.897 l
-4.532 -1.014 4.549 -1.103 4.59 -1.161 c
-4.627 -1.22 4.697 -1.249 4.796 -1.249 c
-4.855 -1.249 4.917 -1.242 4.987 -1.22 c
-4.987 -1.631 l
-4.869 -1.668 4.755 -1.69 4.649 -1.69 c
-4.451 -1.69 4.3 -1.625 4.193 -1.484 c
-4.094 -1.349 4.046 -1.154 4.046 -0.897 c
-4.046 0.956 l
-3.591 0.956 l
-3.591 1.353 l
-4.046 1.353 l
-4.046 2.072 l
-h
-8.184 -1.631 m
-8.154 -1.565 8.133 -1.455 8.125 -1.309 c
-7.949 -1.565 7.728 -1.69 7.464 -1.69 c
-7.188 -1.69 6.972 -1.617 6.817 -1.469 c
-6.67 -1.315 6.596 -1.099 6.596 -0.823 c
-6.596 -0.522 6.699 -0.279 6.905 -0.103 c
-7.111 0.081 7.394 0.177 7.757 0.177 c
-8.11 0.177 l
-8.11 0.5 l
-8.11 0.676 8.07 0.798 7.992 0.867 c
-7.913 0.945 7.795 0.985 7.64 0.985 c
-7.493 0.985 7.368 0.941 7.273 0.852 c
-7.184 0.765 7.14 0.654 7.14 0.53 c
-6.656 0.53 l
-6.656 0.676 6.699 0.816 6.787 0.956 c
-6.876 1.103 6.993 1.213 7.14 1.294 c
-7.294 1.371 7.468 1.411 7.655 1.411 c
-7.967 1.411 8.202 1.33 8.36 1.176 c
-8.515 1.029 8.596 0.808 8.596 0.515 c
-8.596 -0.985 l
-8.603 -1.22 8.64 -1.422 8.698 -1.587 c
-8.698 -1.631 l
-h
-7.537 -1.249 m
-7.655 -1.249 7.765 -1.216 7.875 -1.147 c
-7.982 -1.08 8.059 -0.996 8.11 -0.897 c
-8.11 -0.191 l
-7.846 -0.191 l
-7.611 -0.191 7.423 -0.243 7.287 -0.338 c
-7.159 -0.437 7.096 -0.58 7.096 -0.764 c
-7.096 -0.933 7.126 -1.055 7.184 -1.132 c
-7.25 -1.213 7.368 -1.249 7.537 -1.249 c
-9.073 0 m
-9.073 0.459 9.154 0.808 9.324 1.043 c
-9.5 1.286 9.75 1.411 10.073 1.411 c
-10.356 1.411 10.577 1.294 10.735 1.058 c
-10.735 2.602 l
-11.219 2.602 l
-11.219 -1.631 l
-10.778 -1.631 l
-10.749 -1.309 l
-10.591 -1.565 10.367 -1.69 10.073 -1.69 c
-9.756 -1.69 9.515 -1.573 9.338 -1.338 c
-9.162 -1.095 9.073 -0.75 9.073 -0.309 c
-h
-9.559 -0.279 m
-9.559 -0.613 9.606 -0.86 9.706 -1.014 c
-9.801 -1.172 9.962 -1.249 10.19 -1.249 c
-10.433 -1.249 10.617 -1.132 10.735 -0.897 c
-10.735 0.617 l
-10.606 0.852 10.425 0.97 10.19 0.97 c
-9.962 0.97 9.801 0.889 9.706 0.735 c
-9.606 0.577 9.559 0.338 9.559 0.015 c
-h
-11.69 0 m
-11.69 0.459 11.771 0.808 11.94 1.043 c
-12.116 1.286 12.366 1.411 12.69 1.411 c
-12.972 1.411 13.193 1.294 13.351 1.058 c
-13.351 2.602 l
-13.835 2.602 l
-13.835 -1.631 l
-13.395 -1.631 l
-13.365 -1.309 l
-13.207 -1.565 12.983 -1.69 12.69 -1.69 c
-12.374 -1.69 12.131 -1.573 11.954 -1.338 c
-11.778 -1.095 11.69 -0.75 11.69 -0.309 c
-h
-12.175 -0.279 m
-12.175 -0.613 12.223 -0.86 12.322 -1.014 c
-12.418 -1.172 12.579 -1.249 12.807 -1.249 c
-13.049 -1.249 13.233 -1.132 13.351 -0.897 c
-13.351 0.617 l
-13.222 0.852 13.042 0.97 12.807 0.97 c
-12.579 0.97 12.418 0.889 12.322 0.735 c
-12.223 0.577 12.175 0.338 12.175 0.015 c
-h
-f
-Q
-0.793 0.801 0.129 0.016 K
-0.567 w 1 j 1 J
-q 1 0 0 1 693.4612 270.8827 cm
-0 0 m
-10.797 4.571 16.875 12.016 16.764 23.68 c
-S
-Q
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 710.2439 292.4276 cm
-0 0 m
-1.077 -1.055 l
--0.025 2.668 l
--1.055 -1.077 l
-h
-f*
-Q
-0.906 0.785 0.617 0.969 K
-0.283 w 0 j 0 J
-q 1 0 0 1 710.244 292.4276 cm
-0 0 m
-1.077 -1.055 l
--0.025 2.668 l
--1.055 -1.077 l
-0 0 l
-h
-S
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS3 gs
-0 TL/Fm7 Do
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS3 gs
-0 TL/Fm8 Do
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS3 gs
-0 TL/Fm9 Do
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS3 gs
-0 TL/Fm10 Do
-Q
-0.793 0.801 0.129 0.016 K
-0.567 w 1 j 1 J
-q 1 0 0 1 745.1474 289.2892 cm
-0 0 m
--3.205 6.184 l
-S
-Q
-q 1 0 0 1 742.9236 293.5782 cm
-0 0 m
-1.437 -0.456 l
--1.228 2.37 l
--0.456 -1.438 l
-h
-f*
-Q
-0.906 0.785 0.617 0.969 K
-0.283 w 0 j 0 J
-q 1 0 0 1 742.9237 293.5782 cm
-0 0 m
-1.437 -0.456 l
--1.228 2.37 l
--0.456 -1.438 l
-0 0 l
-h
-S
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 711.5555 341.2288 cm
-0 0 m
-0 0.459 0.081 0.808 0.25 1.043 c
-0.427 1.286 0.676 1.411 1 1.411 c
-1.301 1.411 1.532 1.278 1.69 1.014 c
-1.721 1.352 l
-2.161 1.352 l
-2.161 -1.661 l
-2.161 -2.032 2.062 -2.315 1.867 -2.514 c
-1.68 -2.708 1.419 -2.808 1.088 -2.808 c
-0.941 -2.808 0.772 -2.768 0.589 -2.691 c
-0.401 -2.62 0.265 -2.533 0.177 -2.425 c
-0.368 -2.087 l
-0.574 -2.294 0.798 -2.396 1.044 -2.396 c
-1.445 -2.396 1.65 -2.168 1.661 -1.72 c
-1.661 -1.338 l
-1.503 -1.573 1.283 -1.691 1 -1.691 c
-0.684 -1.691 0.441 -1.573 0.265 -1.338 c
-0.096 -1.103 0.008 -0.772 0 -0.339 c
-h
-0.485 -0.279 m
-0.485 -0.614 0.533 -0.86 0.632 -1.014 c
-0.728 -1.172 0.89 -1.249 1.118 -1.249 c
-1.36 -1.249 1.544 -1.128 1.661 -0.882 c
-1.661 0.602 l
-1.544 0.845 1.368 0.97 1.133 0.97 c
-0.904 0.97 0.743 0.889 0.647 0.735 c
-0.548 0.577 0.493 0.338 0.485 0.014 c
-h
-3.223 -1.632 -0.5 2.984 re
-3.253 2.146 m
-3.253 2.057 3.227 1.984 3.179 1.926 c
-3.138 1.874 3.069 1.852 2.974 1.852 c
-2.885 1.852 2.816 1.874 2.768 1.926 c
-2.727 1.984 2.708 2.05 2.708 2.131 c
-2.708 2.219 2.727 2.293 2.768 2.352 c
-2.816 2.41 2.885 2.44 2.974 2.44 c
-3.069 2.44 3.138 2.41 3.179 2.352 c
-3.227 2.293 3.253 2.223 3.253 2.146 c
-4.532 2.072 m
-4.532 1.352 l
-4.987 1.352 l
-4.987 0.955 l
-4.532 0.955 l
-4.532 -0.897 l
-4.532 -1.014 4.549 -1.103 4.59 -1.162 c
-4.627 -1.22 4.697 -1.249 4.796 -1.249 c
-4.855 -1.249 4.917 -1.243 4.987 -1.22 c
-4.987 -1.632 l
-4.869 -1.669 4.755 -1.691 4.649 -1.691 c
-4.451 -1.691 4.3 -1.625 4.194 -1.484 c
-4.094 -1.349 4.046 -1.154 4.046 -0.897 c
-4.046 0.955 l
-3.591 0.955 l
-3.591 1.352 l
-4.046 1.352 l
-4.046 2.072 l
-h
-7.684 -1.264 m
-7.849 -1.264 7.982 -1.216 8.081 -1.118 c
-8.177 -1.022 8.231 -0.879 8.243 -0.691 c
-8.699 -0.691 l
-8.688 -0.977 8.585 -1.216 8.389 -1.411 c
-8.202 -1.598 7.967 -1.691 7.684 -1.691 c
-7.321 -1.691 7.041 -1.573 6.847 -1.338 c
-6.648 -1.103 6.552 -0.757 6.552 -0.294 c
-6.552 0.029 l
-6.552 0.478 6.644 0.823 6.832 1.058 c
-7.026 1.294 7.31 1.411 7.684 1.411 c
-7.986 1.411 8.229 1.311 8.404 1.117 c
-8.588 0.918 8.688 0.654 8.699 0.324 c
-8.243 0.324 l
-8.221 0.548 8.162 0.713 8.067 0.823 c
-7.978 0.929 7.849 0.985 7.684 0.985 c
-7.468 0.985 7.306 0.912 7.199 0.764 c
-7.1 0.625 7.045 0.397 7.038 0.073 c
-7.038 -0.309 l
-7.038 -0.661 7.086 -0.912 7.184 -1.058 c
-7.291 -1.199 7.456 -1.264 7.684 -1.264 c
-8.992 0 m
-8.992 0.43 9.095 0.771 9.301 1.029 c
-9.515 1.282 9.794 1.411 10.139 1.411 c
-10.481 1.411 10.756 1.282 10.962 1.029 c
-11.175 0.783 11.289 0.448 11.3 0.029 c
-11.3 -0.279 l
-11.3 -0.713 11.19 -1.055 10.977 -1.309 c
-10.771 -1.565 10.492 -1.691 10.139 -1.691 c
-9.794 -1.691 9.522 -1.569 9.316 -1.323 c
-9.11 -1.081 9 -0.746 8.992 -0.324 c
-h
-9.478 -0.279 m
-9.478 -0.595 9.536 -0.838 9.654 -1.014 c
-9.779 -1.183 9.941 -1.264 10.139 -1.264 c
-10.569 -1.264 10.793 -0.956 10.816 -0.339 c
-10.816 0 l
-10.816 0.301 10.749 0.544 10.624 0.72 c
-10.506 0.897 10.345 0.985 10.139 0.985 c
-9.941 0.985 9.779 0.897 9.654 0.72 c
-9.536 0.544 9.478 0.301 9.478 0 c
-h
-12.197 1.352 m
-12.212 1.072 l
-12.388 1.297 12.627 1.411 12.932 1.411 c
-13.263 1.411 13.494 1.264 13.623 0.97 c
-13.806 1.264 14.068 1.411 14.402 1.411 c
-14.961 1.411 15.244 1.066 15.254 0.382 c
-15.254 -1.632 l
-14.77 -1.632 l
-14.77 0.338 l
-14.77 0.551 14.729 0.709 14.652 0.808 c
-14.571 0.914 14.438 0.97 14.255 0.97 c
-14.108 0.97 13.991 0.912 13.902 0.794 c
-13.814 0.683 13.759 0.544 13.74 0.367 c
-13.74 -1.632 l
-13.255 -1.632 l
-13.255 0.353 l
-13.245 0.764 13.072 0.97 12.74 0.97 c
-12.495 0.97 12.322 0.845 12.227 0.602 c
-12.227 -1.632 l
-11.741 -1.632 l
-11.741 1.352 l
-h
-16.158 1.352 m
-16.173 1.072 l
-16.349 1.297 16.588 1.411 16.894 1.411 c
-17.224 1.411 17.455 1.264 17.584 0.97 c
-17.768 1.264 18.029 1.411 18.363 1.411 c
-18.922 1.411 19.205 1.066 19.216 0.382 c
-19.216 -1.632 l
-18.731 -1.632 l
-18.731 0.338 l
-18.731 0.551 18.691 0.709 18.613 0.808 c
-18.533 0.914 18.4 0.97 18.216 0.97 c
-18.07 0.97 17.952 0.912 17.864 0.794 c
-17.775 0.683 17.72 0.544 17.702 0.367 c
-17.702 -1.632 l
-17.216 -1.632 l
-17.216 0.353 l
-17.206 0.764 17.033 0.97 16.702 0.97 c
-16.456 0.97 16.283 0.845 16.188 0.602 c
-16.188 -1.632 l
-15.703 -1.632 l
-15.703 1.352 l
-h
-20.193 -1.632 -0.5 2.984 re
-20.223 2.146 m
-20.223 2.057 20.197 1.984 20.149 1.926 c
-20.109 1.874 20.039 1.852 19.944 1.852 c
-19.855 1.852 19.786 1.874 19.738 1.926 c
-19.697 1.984 19.678 2.05 19.678 2.131 c
-19.678 2.219 19.697 2.293 19.738 2.352 c
-19.786 2.41 19.855 2.44 19.944 2.44 c
-20.039 2.44 20.109 2.41 20.149 2.352 c
-20.197 2.293 20.223 2.223 20.223 2.146 c
-21.498 2.072 m
-21.498 1.352 l
-21.953 1.352 l
-21.953 0.955 l
-21.498 0.955 l
-21.498 -0.897 l
-21.498 -1.014 21.517 -1.103 21.557 -1.162 c
-21.594 -1.22 21.663 -1.249 21.762 -1.249 c
-21.821 -1.249 21.883 -1.243 21.953 -1.22 c
-21.953 -1.632 l
-21.836 -1.669 21.722 -1.691 21.615 -1.691 c
-21.417 -1.691 21.266 -1.625 21.16 -1.484 c
-21.06 -1.349 21.012 -1.154 21.012 -0.897 c
-21.012 0.955 l
-20.557 0.955 l
-20.557 1.352 l
-21.012 1.352 l
-21.012 2.072 l
-h
-f
-Q
-0.793 0.801 0.129 0.016 K
-0.567 w 1 j 1 J
-q 1 0 0 1 715.6204 326.614 cm
-0 0 m
--4.572 10.797 -12.017 16.875 -23.68 16.764 c
-S
-Q
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 694.071 343.3966 cm
-0 0 m
-1.059 1.077 l
--2.664 -0.025 l
-1.077 -1.055 l
-h
-f*
-Q
-0.906 0.785 0.617 0.969 K
-0.283 w 0 j 0 J
-q 1 0 0 1 694.071 343.3966 cm
-0 0 m
-1.059 1.077 l
--2.664 -0.025 l
-1.077 -1.055 l
-0 0 l
-h
-S
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS3 gs
-0 TL/Fm11 Do
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS3 gs
-0 TL/Fm12 Do
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS3 gs
-0 TL/Fm13 Do
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS3 gs
-0 TL/Fm14 Do
-Q
-0.793 0.801 0.129 0.016 K
-0.567 w 1 j 1 J
-q 1 0 0 1 634.5146 329.9282 cm
-0 0 m
-5.074 5.056 l
-S
-Q
-q 1 0 0 1 638.0789 333.4787 cm
-0 0 m
--0.004 -1.507 l
-1.889 1.882 l
--1.506 0.003 l
-h
-f*
-Q
-0.906 0.785 0.617 0.969 K
-0.283 w 0 j 0 J
-q 1 0 0 1 638.0789 333.4787 cm
-0 0 m
--0.004 -1.507 l
-1.889 1.882 l
--1.506 0.003 l
-0 0 l
-h
-S
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS4 gs
-0 TL/Fm15 Do
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS5 gs
-0 TL/Fm16 Do
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS5 gs
-0 TL/Fm17 Do
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 563.3862 425.8473 cm
-0 0 m
-54.018 0 l
-56.624 0 58.722 -2.098 58.722 -4.704 c
-58.722 -21.406 l
-58.722 -24.01 56.624 -26.109 54.018 -26.109 c
-0 -26.109 l
--2.606 -26.109 -4.701 -24.01 -4.701 -21.406 c
--4.701 -4.704 l
--4.701 -2.098 -2.606 0 0 0 c
-f
-Q
-0 0 0 0 k
-q 1 0 0 1 570.5405 419.8831 cm
-0 0 m
--0.426 0.029 l
--0.79 0.029 -1.029 -0.129 -1.147 -0.441 c
--1.147 -3.719 l
--2.454 -3.719 l
--2.454 1.249 l
--1.234 1.249 l
--1.191 0.721 l
--0.985 1.132 -0.702 1.338 -0.338 1.338 c
--0.191 1.338 -0.073 1.316 0.015 1.279 c
-h
-2.469 -3.807 m
-1.801 -3.807 1.278 -3.612 0.896 -3.219 c
-0.522 -2.818 0.338 -2.246 0.338 -1.5 c
-0.338 -1.103 l
-0.338 -0.32 0.507 0.283 0.852 0.706 c
-1.195 1.124 1.69 1.338 2.337 1.338 c
-2.955 1.338 3.418 1.135 3.734 0.735 c
-4.057 0.341 4.218 -0.247 4.218 -1.029 c
-4.218 -1.675 l
-1.646 -1.675 l
-1.654 -2.04 1.735 -2.308 1.881 -2.484 c
-2.028 -2.653 2.249 -2.734 2.543 -2.734 c
-2.984 -2.734 3.344 -2.583 3.63 -2.279 c
-4.145 -3.072 l
-3.987 -3.289 3.755 -3.465 3.454 -3.601 c
-3.15 -3.738 2.822 -3.807 2.469 -3.807 c
-1.646 -0.764 m
-2.955 -0.764 l
-2.955 -0.646 l
-2.944 -0.345 2.888 -0.118 2.793 0.029 c
-2.705 0.183 2.547 0.264 2.323 0.264 c
-2.095 0.264 1.929 0.181 1.823 0.015 c
-1.723 -0.143 1.665 -0.405 1.646 -0.764 c
-5.997 1.249 m
-6.041 0.794 l
-6.335 1.154 6.718 1.338 7.188 1.338 c
-7.688 1.338 8.04 1.118 8.246 0.676 c
-8.529 1.118 8.937 1.338 9.467 1.338 c
-10.326 1.338 10.774 0.738 10.803 -0.455 c
-10.803 -3.719 l
-9.496 -3.719 l
-9.496 -0.544 l
-9.496 -0.261 9.455 -0.058 9.378 0.059 c
-9.297 0.183 9.165 0.25 8.981 0.25 c
-8.735 0.25 8.555 0.103 8.437 -0.191 c
-8.437 -3.719 l
-7.144 -3.719 l
-7.144 -0.559 l
-7.144 -0.276 7.104 -0.07 7.026 0.059 c
-6.945 0.183 6.809 0.25 6.614 0.25 c
-6.387 0.25 6.211 0.133 6.086 -0.103 c
-6.086 -3.719 l
-4.792 -3.719 l
-4.792 1.249 l
-h
-11.333 -1.072 m
-11.333 -0.32 11.509 0.268 11.862 0.691 c
-12.215 1.121 12.704 1.338 13.332 1.338 c
-13.968 1.338 14.464 1.121 14.817 0.691 c
-15.177 0.268 15.36 -0.324 15.36 -1.088 c
-15.36 -1.396 l
-15.36 -2.153 15.184 -2.745 14.832 -3.175 c
-14.479 -3.597 13.982 -3.807 13.347 -3.807 c
-12.707 -3.807 12.215 -3.597 11.862 -3.175 c
-11.509 -2.745 11.333 -2.153 11.333 -1.396 c
-h
-12.642 -1.396 m
-12.642 -2.289 12.877 -2.734 13.347 -2.734 c
-13.787 -2.734 14.023 -2.363 14.053 -1.617 c
-14.067 -1.072 l
-14.067 -0.625 14.001 -0.29 13.876 -0.073 c
-13.747 0.15 13.567 0.264 13.332 0.264 c
-13.115 0.264 12.943 0.15 12.818 -0.073 c
-12.7 -0.29 12.642 -0.625 12.642 -1.072 c
-h
-17.492 2.469 m
-17.492 1.249 l
-18.153 1.249 l
-18.153 0.279 l
-17.492 0.279 l
-17.492 -2.19 l
-17.492 -2.389 17.514 -2.524 17.565 -2.601 c
-17.624 -2.672 17.731 -2.705 17.889 -2.705 c
-18.007 -2.705 18.109 -2.697 18.198 -2.676 c
-18.183 -3.69 l
-17.955 -3.767 17.716 -3.807 17.463 -3.807 c
-16.628 -3.807 16.206 -3.329 16.199 -2.366 c
-16.199 0.279 l
-15.625 0.279 l
-15.625 1.249 l
-16.199 1.249 l
-16.199 2.469 l
-h
-20.762 -3.807 m
-20.093 -3.807 19.572 -3.612 19.189 -3.219 c
-18.815 -2.818 18.631 -2.246 18.631 -1.5 c
-18.631 -1.103 l
-18.631 -0.32 18.8 0.283 19.146 0.706 c
-19.487 1.124 19.983 1.338 20.63 1.338 c
-21.247 1.338 21.71 1.135 22.026 0.735 c
-22.35 0.341 22.512 -0.247 22.512 -1.029 c
-22.512 -1.675 l
-19.939 -1.675 l
-19.946 -2.04 20.027 -2.308 20.174 -2.484 c
-20.322 -2.653 20.542 -2.734 20.835 -2.734 c
-21.277 -2.734 21.637 -2.583 21.924 -2.279 c
-22.438 -3.072 l
-22.28 -3.289 22.049 -3.465 21.747 -3.601 c
-21.442 -3.738 21.115 -3.807 20.762 -3.807 c
-19.939 -0.764 m
-21.247 -0.764 l
-21.247 -0.646 l
-21.236 -0.345 21.182 -0.118 21.086 0.029 c
-20.997 0.183 20.839 0.264 20.615 0.264 c
-20.388 0.264 20.222 0.181 20.116 0.015 c
-20.016 -0.143 19.958 -0.405 19.939 -0.764 c
-27.605 0 m
-27.179 0.029 l
-26.815 0.029 26.576 -0.129 26.458 -0.441 c
-26.458 -3.719 l
-25.15 -3.719 l
-25.15 1.249 l
-26.37 1.249 l
-26.414 0.721 l
-26.62 1.132 26.903 1.338 27.266 1.338 c
-27.414 1.338 27.532 1.316 27.619 1.279 c
-h
-30.074 -3.807 m
-29.406 -3.807 28.883 -3.612 28.502 -3.219 c
-28.126 -2.818 27.943 -2.246 27.943 -1.5 c
-27.943 -1.103 l
-27.943 -0.32 28.112 0.283 28.457 0.706 c
-28.799 1.124 29.296 1.338 29.942 1.338 c
-30.559 1.338 31.023 1.135 31.339 0.735 c
-31.661 0.341 31.823 -0.247 31.823 -1.029 c
-31.823 -1.675 l
-29.251 -1.675 l
-29.259 -2.04 29.34 -2.308 29.487 -2.484 c
-29.633 -2.653 29.853 -2.734 30.148 -2.734 c
-30.589 -2.734 30.948 -2.583 31.235 -2.279 c
-31.75 -3.072 l
-31.592 -3.289 31.36 -3.465 31.059 -3.601 c
-30.754 -3.738 30.427 -3.807 30.074 -3.807 c
-29.251 -0.764 m
-30.559 -0.764 l
-30.559 -0.646 l
-30.549 -0.345 30.493 -0.118 30.398 0.029 c
-30.31 0.183 30.152 0.264 29.928 0.264 c
-29.699 0.264 29.534 0.181 29.427 0.015 c
-29.328 -0.143 29.269 -0.405 29.251 -0.764 c
-36.263 -1.396 m
-36.263 -2.171 36.122 -2.771 35.851 -3.189 c
-35.586 -3.601 35.189 -3.807 34.661 -3.807 c
-34.256 -3.807 33.932 -3.645 33.691 -3.322 c
-33.691 -5.629 l
-32.382 -5.629 l
-32.382 1.249 l
-33.587 1.249 l
-33.631 0.794 l
-33.885 1.154 34.223 1.338 34.646 1.338 c
-35.175 1.338 35.572 1.147 35.836 0.765 c
-36.108 0.382 36.251 -0.213 36.263 -1.014 c
-h
-34.969 -1.058 m
-34.969 -0.58 34.914 -0.243 34.807 -0.044 c
-34.697 0.15 34.517 0.25 34.264 0.25 c
-33.999 0.25 33.808 0.14 33.691 -0.073 c
-33.691 -2.41 l
-33.808 -2.628 34.003 -2.734 34.279 -2.734 c
-34.532 -2.734 34.709 -2.628 34.807 -2.41 c
-34.914 -2.186 34.969 -1.849 34.969 -1.396 c
-h
-36.714 -1.072 m
-36.714 -0.32 36.891 0.268 37.244 0.691 c
-37.597 1.121 38.085 1.338 38.713 1.338 c
-39.349 1.338 39.846 1.121 40.199 0.691 c
-40.558 0.268 40.742 -0.324 40.742 -1.088 c
-40.742 -1.396 l
-40.742 -2.153 40.566 -2.745 40.213 -3.175 c
-39.86 -3.597 39.364 -3.807 38.728 -3.807 c
-38.089 -3.807 37.597 -3.597 37.244 -3.175 c
-36.891 -2.745 36.714 -2.153 36.714 -1.396 c
-h
-38.023 -1.396 m
-38.023 -2.289 38.258 -2.734 38.728 -2.734 c
-39.17 -2.734 39.405 -2.363 39.434 -1.617 c
-39.449 -1.072 l
-39.449 -0.625 39.382 -0.29 39.258 -0.073 c
-39.129 0.15 38.948 0.264 38.713 0.264 c
-38.497 0.264 38.324 0.15 38.2 -0.073 c
-38.082 -0.29 38.023 -0.625 38.023 -1.072 c
-h
-f
-Q
-q 1 0 0 1 564.4878 408.9507 cm
-0 0 m
-0 0.684 0.077 1.341 0.235 1.97 c
-0.39 2.606 0.632 3.167 0.956 3.66 c
-1.279 4.16 1.621 4.505 1.985 4.704 c
-2.22 3.983 l
-1.875 3.66 1.603 3.16 1.397 2.484 c
-1.199 1.816 1.096 1.043 1.088 0.162 c
-1.088 -0.118 l
-1.088 -1.04 1.183 -1.849 1.382 -2.543 c
-1.588 -3.237 1.867 -3.755 2.22 -4.101 c
-1.985 -4.806 l
-1.621 -4.619 1.279 -4.281 0.956 -3.792 c
-0.64 -3.3 0.401 -2.749 0.235 -2.132 c
-0.077 -1.514 0 -0.867 0 -0.191 c
-h
-4.032 2.249 m
-4.075 1.764 l
-4.37 2.146 4.752 2.337 5.222 2.337 c
-6.075 2.337 6.516 1.738 6.546 0.544 c
-6.546 -2.72 l
-5.237 -2.72 l
-5.237 0.455 l
-5.237 0.727 5.193 0.929 5.104 1.058 c
-5.024 1.183 4.877 1.249 4.664 1.249 c
-4.429 1.249 4.245 1.132 4.12 0.897 c
-4.12 -2.72 l
-2.812 -2.72 l
-2.812 2.249 l
-h
-9.65 -2.72 m
-9.61 -2.643 9.569 -2.514 9.532 -2.337 c
-9.305 -2.653 8.992 -2.807 8.592 -2.807 c
-8.169 -2.807 7.82 -2.672 7.549 -2.396 c
-7.284 -2.124 7.151 -1.764 7.151 -1.323 c
-7.151 -0.804 7.313 -0.405 7.637 -0.118 c
-7.967 0.166 8.449 0.312 9.077 0.324 c
-9.474 0.324 l
-9.474 0.721 l
-9.474 0.944 9.434 1.103 9.357 1.191 c
-9.276 1.278 9.166 1.323 9.018 1.323 c
-8.695 1.323 8.533 1.135 8.533 0.765 c
-7.24 0.765 l
-7.24 1.213 7.408 1.588 7.755 1.881 c
-8.096 2.182 8.533 2.337 9.062 2.337 c
-9.599 2.337 10.018 2.194 10.311 1.911 c
-10.613 1.635 10.768 1.235 10.768 0.706 c
-10.768 -1.631 l
-10.775 -2.065 10.841 -2.404 10.959 -2.645 c
-10.959 -2.72 l
-h
-8.886 -1.793 m
-9.022 -1.793 9.139 -1.764 9.239 -1.705 c
-9.345 -1.646 9.422 -1.58 9.474 -1.5 c
-9.474 -0.47 l
-9.166 -0.47 l
-8.937 -0.47 8.761 -0.54 8.636 -0.676 c
-8.507 -0.816 8.445 -0.999 8.445 -1.234 c
-8.445 -1.61 8.592 -1.793 8.886 -1.793 c
-12.755 2.249 m
-12.8 1.793 l
-13.093 2.153 13.476 2.337 13.946 2.337 c
-14.446 2.337 14.799 2.117 15.005 1.675 c
-15.287 2.117 15.695 2.337 16.225 2.337 c
-17.085 2.337 17.533 1.738 17.562 0.544 c
-17.562 -2.72 l
-16.254 -2.72 l
-16.254 0.455 l
-16.254 0.738 16.214 0.941 16.136 1.058 c
-16.056 1.183 15.923 1.249 15.74 1.249 c
-15.493 1.249 15.313 1.103 15.196 0.808 c
-15.196 -2.72 l
-13.902 -2.72 l
-13.902 0.441 l
-13.902 0.724 13.862 0.929 13.785 1.058 c
-13.704 1.183 13.567 1.249 13.373 1.249 c
-13.145 1.249 12.969 1.132 12.844 0.897 c
-12.844 -2.72 l
-11.55 -2.72 l
-11.55 2.249 l
-h
-20.252 -2.807 m
-19.583 -2.807 19.061 -2.612 18.679 -2.219 c
-18.305 -1.819 18.121 -1.246 18.121 -0.5 c
-18.121 -0.103 l
-18.121 0.68 18.29 1.282 18.635 1.706 c
-18.977 2.124 19.473 2.337 20.12 2.337 c
-20.737 2.337 21.201 2.135 21.517 1.735 c
-21.839 1.341 22.001 0.754 22.001 -0.029 c
-22.001 -0.676 l
-19.429 -0.676 l
-19.437 -1.04 19.518 -1.309 19.664 -1.484 c
-19.811 -1.654 20.031 -1.735 20.326 -1.735 c
-20.767 -1.735 21.127 -1.584 21.413 -1.278 c
-21.928 -2.072 l
-21.77 -2.29 21.538 -2.466 21.237 -2.602 c
-20.931 -2.738 20.605 -2.807 20.252 -2.807 c
-19.429 0.235 m
-20.737 0.235 l
-20.737 0.353 l
-20.726 0.654 20.671 0.882 20.576 1.029 c
-20.487 1.183 20.329 1.264 20.105 1.264 c
-19.877 1.264 19.712 1.18 19.605 1.014 c
-19.506 0.856 19.447 0.595 19.429 0.235 c
-22.662 -2.057 m
-22.662 -1.852 22.729 -1.683 22.868 -1.544 c
-23.015 -1.407 23.2 -1.338 23.427 -1.338 c
-23.64 -1.338 23.817 -1.407 23.956 -1.544 c
-24.104 -1.672 24.177 -1.845 24.177 -2.057 c
-24.177 -2.275 24.104 -2.448 23.956 -2.572 c
-23.817 -2.701 23.64 -2.763 23.427 -2.763 c
-23.2 -2.763 23.015 -2.701 22.868 -2.572 c
-22.729 -2.448 22.662 -2.275 22.662 -2.057 c
-22.662 1.706 m
-22.662 1.911 22.729 2.08 22.868 2.219 c
-23.015 2.356 23.2 2.425 23.427 2.425 c
-23.64 2.425 23.817 2.356 23.956 2.219 c
-24.104 2.091 24.177 1.918 24.177 1.706 c
-24.177 1.488 24.104 1.315 23.956 1.191 c
-23.817 1.062 23.64 1 23.427 1 c
-23.2 1 23.015 1.062 22.868 1.191 c
-22.729 1.315 22.662 1.488 22.662 1.706 c
-26.98 -0.073 m
-26.98 0.68 27.157 1.268 27.51 1.69 c
-27.863 2.12 28.351 2.337 28.979 2.337 c
-29.615 2.337 30.111 2.12 30.464 1.69 c
-30.824 1.268 31.008 0.676 31.008 -0.088 c
-31.008 -0.397 l
-31.008 -1.154 30.832 -1.745 30.479 -2.175 c
-30.126 -2.598 29.63 -2.807 28.995 -2.807 c
-28.355 -2.807 27.863 -2.598 27.51 -2.175 c
-27.157 -1.745 26.98 -1.154 26.98 -0.397 c
-h
-28.289 -0.397 m
-28.289 -1.29 28.524 -1.735 28.995 -1.735 c
-29.436 -1.735 29.671 -1.363 29.7 -0.617 c
-29.714 -0.073 l
-29.714 0.374 29.648 0.709 29.523 0.926 c
-29.395 1.151 29.215 1.264 28.979 1.264 c
-28.763 1.264 28.59 1.151 28.465 0.926 c
-28.347 0.709 28.289 0.374 28.289 -0.073 c
-h
-34.08 1 m
-33.654 1.029 l
-33.29 1.029 33.051 0.871 32.933 0.559 c
-32.933 -2.72 l
-31.626 -2.72 l
-31.626 2.249 l
-32.846 2.249 l
-32.889 1.72 l
-33.095 2.132 33.378 2.337 33.742 2.337 c
-33.889 2.337 34.007 2.315 34.095 2.278 c
-h
-35.991 -2.72 -1.308 4.969 re
-34.624 3.543 m
-34.624 3.738 34.687 3.899 34.815 4.027 c
-34.94 4.164 35.113 4.233 35.329 4.233 c
-35.543 4.233 35.715 4.164 35.844 4.027 c
-35.969 3.899 36.035 3.738 36.035 3.543 c
-36.035 3.337 35.969 3.164 35.844 3.028 c
-35.726 2.899 35.553 2.837 35.329 2.837 c
-35.113 2.837 34.94 2.899 34.815 3.028 c
-34.687 3.164 34.624 3.337 34.624 3.543 c
-36.752 -0.088 m
-36.752 0.735 36.899 1.341 37.193 1.735 c
-37.487 2.135 37.899 2.337 38.427 2.337 c
-38.876 2.337 39.225 2.161 39.471 1.808 c
-39.515 2.249 l
-40.691 2.249 l
-40.691 -2.72 l
-40.691 -3.355 40.507 -3.84 40.147 -4.174 c
-39.794 -4.505 39.283 -4.675 38.618 -4.675 c
-38.354 -4.675 38.067 -4.619 37.766 -4.513 c
-37.461 -4.403 37.236 -4.266 37.09 -4.101 c
-37.531 -3.204 l
-37.656 -3.329 37.818 -3.432 38.016 -3.513 c
-38.211 -3.59 38.391 -3.63 38.56 -3.63 c
-38.853 -3.63 39.063 -3.561 39.192 -3.425 c
-39.316 -3.285 39.383 -3.061 39.383 -2.749 c
-39.383 -2.323 l
-39.137 -2.645 38.813 -2.807 38.412 -2.807 c
-37.884 -2.807 37.472 -2.602 37.178 -2.19 c
-36.891 -1.779 36.752 -1.201 36.752 -0.455 c
-h
-38.045 -0.411 m
-38.045 -0.875 38.104 -1.205 38.221 -1.411 c
-38.339 -1.617 38.531 -1.72 38.795 -1.72 c
-39.06 -1.72 39.254 -1.628 39.383 -1.44 c
-39.383 0.941 l
-39.254 1.147 39.063 1.249 38.809 1.249 c
-38.545 1.249 38.346 1.139 38.221 0.926 c
-38.104 0.721 38.045 0.382 38.045 -0.088 c
-h
-42.819 -2.72 -1.309 4.969 re
-41.452 3.543 m
-41.452 3.738 41.514 3.899 41.643 4.027 c
-41.768 4.164 41.94 4.233 42.157 4.233 c
-42.371 4.233 42.543 4.164 42.672 4.027 c
-42.797 3.899 42.863 3.738 42.863 3.543 c
-42.863 3.337 42.797 3.164 42.672 3.028 c
-42.554 2.899 42.381 2.837 42.157 2.837 c
-41.94 2.837 41.768 2.899 41.643 3.028 c
-41.514 3.164 41.452 3.337 41.452 3.543 c
-44.917 2.249 m
-44.961 1.764 l
-45.255 2.146 45.637 2.337 46.107 2.337 c
-46.96 2.337 47.401 1.738 47.43 0.544 c
-47.43 -2.72 l
-46.123 -2.72 l
-46.123 0.455 l
-46.123 0.727 46.078 0.929 45.99 1.058 c
-45.909 1.183 45.762 1.249 45.549 1.249 c
-45.314 1.249 45.13 1.132 45.005 0.897 c
-45.005 -2.72 l
-43.697 -2.72 l
-43.697 2.249 l
-h
-50.26 -0.103 m
-50.26 -0.819 50.165 -1.496 49.981 -2.132 c
-49.805 -2.767 49.554 -3.326 49.231 -3.807 c
-48.908 -4.285 48.563 -4.619 48.203 -4.806 c
-47.967 -4.101 l
-48.309 -3.767 48.577 -3.256 48.775 -2.572 c
-48.981 -1.889 49.088 -1.11 49.099 -0.235 c
-49.099 0.015 l
-49.099 0.904 48.996 1.698 48.79 2.396 c
-48.592 3.102 48.32 3.634 47.967 3.998 c
-48.203 4.704 l
-48.438 4.586 48.677 4.384 48.922 4.101 c
-49.165 3.825 49.386 3.484 49.584 3.072 c
-49.79 2.66 49.951 2.194 50.069 1.675 c
-50.194 1.165 50.26 0.573 50.26 -0.103 c
-f
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 661.8731 424.5284 cm
-0 0 m
-54.019 0 l
-56.624 0 58.723 -2.099 58.723 -4.704 c
-58.723 -21.409 l
-58.723 -24.015 56.624 -26.109 54.019 -26.109 c
-0 -26.109 l
--2.606 -26.109 -4.7 -24.015 -4.7 -21.409 c
--4.7 -4.704 l
--4.7 -2.099 -2.606 0 0 0 c
-f
-Q
-0 0 0 0 k
-q 1 0 0 1 669.0274 418.5641 cm
-0 0 m
--0.426 0.029 l
--0.789 0.029 -1.028 -0.129 -1.146 -0.441 c
--1.146 -3.719 l
--2.454 -3.719 l
--2.454 1.249 l
--1.234 1.249 l
--1.19 0.72 l
--0.984 1.132 -0.702 1.338 -0.338 1.338 c
--0.191 1.338 -0.073 1.315 0.015 1.278 c
-h
-2.469 -3.807 m
-1.802 -3.807 1.279 -3.612 0.898 -3.219 c
-0.522 -2.818 0.339 -2.246 0.339 -1.5 c
-0.339 -1.103 l
-0.339 -0.32 0.508 0.283 0.853 0.706 c
-1.195 1.124 1.691 1.338 2.338 1.338 c
-2.955 1.338 3.418 1.135 3.734 0.735 c
-4.057 0.341 4.219 -0.246 4.219 -1.029 c
-4.219 -1.675 l
-1.646 -1.675 l
-1.654 -2.04 1.735 -2.308 1.882 -2.484 c
-2.029 -2.654 2.249 -2.734 2.544 -2.734 c
-2.984 -2.734 3.344 -2.583 3.631 -2.278 c
-4.146 -3.072 l
-3.988 -3.289 3.756 -3.466 3.454 -3.601 c
-3.15 -3.738 2.822 -3.807 2.469 -3.807 c
-1.646 -0.765 m
-2.955 -0.765 l
-2.955 -0.647 l
-2.944 -0.345 2.889 -0.118 2.793 0.029 c
-2.705 0.183 2.547 0.264 2.323 0.264 c
-2.095 0.264 1.93 0.18 1.823 0.014 c
-1.724 -0.144 1.665 -0.405 1.646 -0.765 c
-5.997 1.249 m
-6.041 0.794 l
-6.336 1.153 6.718 1.338 7.188 1.338 c
-7.688 1.338 8.041 1.117 8.247 0.676 c
-8.53 1.117 8.937 1.338 9.467 1.338 c
-10.327 1.338 10.775 0.738 10.804 -0.456 c
-10.804 -3.719 l
-9.496 -3.719 l
-9.496 -0.544 l
-9.496 -0.262 9.455 -0.059 9.378 0.058 c
-9.297 0.183 9.166 0.249 8.981 0.249 c
-8.736 0.249 8.555 0.103 8.438 -0.191 c
-8.438 -3.719 l
-7.144 -3.719 l
-7.144 -0.559 l
-7.144 -0.276 7.104 -0.07 7.026 0.058 c
-6.945 0.183 6.81 0.249 6.615 0.249 c
-6.388 0.249 6.211 0.132 6.086 -0.103 c
-6.086 -3.719 l
-4.792 -3.719 l
-4.792 1.249 l
-h
-11.333 -1.073 m
-11.333 -0.32 11.51 0.268 11.863 0.691 c
-12.216 1.12 12.704 1.338 13.332 1.338 c
-13.968 1.338 14.464 1.12 14.817 0.691 c
-15.177 0.268 15.361 -0.324 15.361 -1.087 c
-15.361 -1.397 l
-15.361 -2.153 15.185 -2.745 14.832 -3.175 c
-14.479 -3.597 13.983 -3.807 13.347 -3.807 c
-12.708 -3.807 12.216 -3.597 11.863 -3.175 c
-11.51 -2.745 11.333 -2.153 11.333 -1.397 c
-h
-12.642 -1.397 m
-12.642 -2.29 12.877 -2.734 13.347 -2.734 c
-13.788 -2.734 14.024 -2.363 14.053 -1.617 c
-14.068 -1.073 l
-14.068 -0.625 14.001 -0.291 13.876 -0.073 c
-13.748 0.151 13.567 0.264 13.332 0.264 c
-13.116 0.264 12.943 0.151 12.818 -0.073 c
-12.7 -0.291 12.642 -0.625 12.642 -1.073 c
-h
-17.492 2.469 m
-17.492 1.249 l
-18.153 1.249 l
-18.153 0.279 l
-17.492 0.279 l
-17.492 -2.19 l
-17.492 -2.389 17.515 -2.525 17.565 -2.602 c
-17.625 -2.672 17.731 -2.705 17.889 -2.705 c
-18.007 -2.705 18.109 -2.697 18.198 -2.675 c
-18.184 -3.69 l
-17.955 -3.767 17.717 -3.807 17.463 -3.807 c
-16.629 -3.807 16.206 -3.329 16.199 -2.367 c
-16.199 0.279 l
-15.626 0.279 l
-15.626 1.249 l
-16.199 1.249 l
-16.199 2.469 l
-h
-20.759 -3.807 m
-20.09 -3.807 19.568 -3.612 19.186 -3.219 c
-18.812 -2.818 18.628 -2.246 18.628 -1.5 c
-18.628 -1.103 l
-18.628 -0.32 18.797 0.283 19.142 0.706 c
-19.484 1.124 19.98 1.338 20.627 1.338 c
-21.245 1.338 21.708 1.135 22.024 0.735 c
-22.346 0.341 22.508 -0.246 22.508 -1.029 c
-22.508 -1.675 l
-19.936 -1.675 l
-19.944 -2.04 20.025 -2.308 20.171 -2.484 c
-20.318 -2.654 20.539 -2.734 20.833 -2.734 c
-21.274 -2.734 21.634 -2.583 21.92 -2.278 c
-22.435 -3.072 l
-22.277 -3.289 22.045 -3.466 21.744 -3.601 c
-21.44 -3.738 21.112 -3.807 20.759 -3.807 c
-19.936 -0.765 m
-21.245 -0.765 l
-21.245 -0.647 l
-21.234 -0.345 21.178 -0.118 21.083 0.029 c
-20.995 0.183 20.836 0.264 20.613 0.264 c
-20.384 0.264 20.219 0.18 20.112 0.014 c
-20.013 -0.144 19.954 -0.405 19.936 -0.765 c
-27.605 0 m
-27.179 0.029 l
-26.815 0.029 26.576 -0.129 26.458 -0.441 c
-26.458 -3.719 l
-25.151 -3.719 l
-25.151 1.249 l
-26.371 1.249 l
-26.415 0.72 l
-26.62 1.132 26.903 1.338 27.267 1.338 c
-27.414 1.338 27.532 1.315 27.62 1.278 c
-h
-30.075 -3.807 m
-29.406 -3.807 28.885 -3.612 28.502 -3.219 c
-28.127 -2.818 27.944 -2.246 27.944 -1.5 c
-27.944 -1.103 l
-27.944 -0.32 28.112 0.283 28.457 0.706 c
-28.8 1.124 29.296 1.338 29.943 1.338 c
-30.56 1.338 31.023 1.135 31.339 0.735 c
-31.663 0.341 31.824 -0.246 31.824 -1.029 c
-31.824 -1.675 l
-29.251 -1.675 l
-29.259 -2.04 29.34 -2.308 29.487 -2.484 c
-29.633 -2.654 29.854 -2.734 30.148 -2.734 c
-30.589 -2.734 30.949 -2.583 31.236 -2.278 c
-31.75 -3.072 l
-31.593 -3.289 31.361 -3.466 31.059 -3.601 c
-30.755 -3.738 30.427 -3.807 30.075 -3.807 c
-29.251 -0.765 m
-30.56 -0.765 l
-30.56 -0.647 l
-30.549 -0.345 30.494 -0.118 30.398 0.029 c
-30.31 0.183 30.152 0.264 29.928 0.264 c
-29.7 0.264 29.535 0.18 29.428 0.014 c
-29.329 -0.144 29.27 -0.405 29.251 -0.765 c
-36.263 -1.397 m
-36.263 -2.172 36.124 -2.771 35.852 -3.19 c
-35.587 -3.601 35.19 -3.807 34.661 -3.807 c
-34.257 -3.807 33.933 -3.645 33.691 -3.322 c
-33.691 -5.63 l
-32.382 -5.63 l
-32.382 1.249 l
-33.588 1.249 l
-33.631 0.794 l
-33.885 1.153 34.223 1.338 34.647 1.338 c
-35.175 1.338 35.572 1.147 35.837 0.764 c
-36.108 0.382 36.252 -0.214 36.263 -1.014 c
-h
-34.969 -1.058 m
-34.969 -0.58 34.915 -0.243 34.807 -0.044 c
-34.697 0.151 34.518 0.249 34.264 0.249 c
-33.999 0.249 33.808 0.139 33.691 -0.073 c
-33.691 -2.411 l
-33.808 -2.627 34.003 -2.734 34.279 -2.734 c
-34.532 -2.734 34.709 -2.627 34.807 -2.411 c
-34.915 -2.186 34.969 -1.849 34.969 -1.397 c
-h
-36.715 -1.073 m
-36.715 -0.32 36.891 0.268 37.244 0.691 c
-37.597 1.12 38.086 1.338 38.714 1.338 c
-39.35 1.338 39.846 1.12 40.199 0.691 c
-40.559 0.268 40.742 -0.324 40.742 -1.087 c
-40.742 -1.397 l
-40.742 -2.153 40.567 -2.745 40.214 -3.175 c
-39.861 -3.597 39.364 -3.807 38.728 -3.807 c
-38.09 -3.807 37.597 -3.597 37.244 -3.175 c
-36.891 -2.745 36.715 -2.153 36.715 -1.397 c
-h
-38.023 -1.397 m
-38.023 -2.29 38.258 -2.734 38.728 -2.734 c
-39.17 -2.734 39.405 -2.363 39.434 -1.617 c
-39.449 -1.073 l
-39.449 -0.625 39.383 -0.291 39.258 -0.073 c
-39.129 0.151 38.949 0.264 38.714 0.264 c
-38.497 0.264 38.325 0.151 38.2 -0.073 c
-38.082 -0.291 38.023 -0.625 38.023 -1.073 c
-h
-f
-Q
-q 1 0 0 1 662.4357 407.6318 cm
-0 0 m
-0 0.683 0.077 1.341 0.235 1.969 c
-0.389 2.605 0.632 3.167 0.955 3.659 c
-1.278 4.16 1.62 4.505 1.984 4.704 c
-2.219 3.983 l
-1.874 3.659 1.602 3.16 1.396 2.484 c
-1.198 1.815 1.095 1.043 1.087 0.162 c
-1.087 -0.118 l
-1.087 -1.04 1.182 -1.849 1.381 -2.543 c
-1.587 -3.238 1.866 -3.755 2.219 -4.102 c
-1.984 -4.807 l
-1.62 -4.619 1.278 -4.281 0.955 -3.793 c
-0.639 -3.3 0.4 -2.749 0.235 -2.132 c
-0.077 -1.515 0 -0.867 0 -0.191 c
-h
-4.031 2.248 m
-4.075 1.764 l
-4.369 2.146 4.751 2.337 5.221 2.337 c
-6.074 2.337 6.515 1.738 6.545 0.544 c
-6.545 -2.72 l
-5.236 -2.72 l
-5.236 0.455 l
-5.236 0.727 5.192 0.929 5.103 1.058 c
-5.023 1.183 4.876 1.249 4.663 1.249 c
-4.428 1.249 4.244 1.132 4.119 0.897 c
-4.119 -2.72 l
-2.811 -2.72 l
-2.811 2.248 l
-h
-9.653 -2.72 m
-9.612 -2.643 9.572 -2.514 9.535 -2.338 c
-9.308 -2.654 8.995 -2.808 8.595 -2.808 c
-8.172 -2.808 7.823 -2.672 7.551 -2.396 c
-7.287 -2.124 7.154 -1.764 7.154 -1.324 c
-7.154 -0.805 7.316 -0.405 7.64 -0.118 c
-7.97 0.165 8.452 0.312 9.08 0.323 c
-9.477 0.323 l
-9.477 0.72 l
-9.477 0.945 9.437 1.103 9.359 1.19 c
-9.278 1.278 9.168 1.323 9.022 1.323 c
-8.698 1.323 8.536 1.135 8.536 0.764 c
-7.243 0.764 l
-7.243 1.213 7.412 1.587 7.757 1.882 c
-8.099 2.183 8.536 2.337 9.065 2.337 c
-9.602 2.337 10.021 2.194 10.314 1.911 c
-10.616 1.635 10.77 1.234 10.77 0.706 c
-10.77 -1.632 l
-10.778 -2.066 10.844 -2.404 10.961 -2.646 c
-10.961 -2.72 l
-h
-8.889 -1.794 m
-9.024 -1.794 9.142 -1.764 9.242 -1.706 c
-9.348 -1.646 9.425 -1.58 9.477 -1.5 c
-9.477 -0.47 l
-9.168 -0.47 l
-8.941 -0.47 8.764 -0.541 8.639 -0.676 c
-8.511 -0.816 8.448 -1 8.448 -1.235 c
-8.448 -1.61 8.595 -1.794 8.889 -1.794 c
-12.755 2.248 m
-12.799 1.793 l
-13.093 2.153 13.475 2.337 13.945 2.337 c
-14.445 2.337 14.798 2.117 15.004 1.675 c
-15.287 2.117 15.694 2.337 16.224 2.337 c
-17.084 2.337 17.532 1.738 17.562 0.544 c
-17.562 -2.72 l
-16.253 -2.72 l
-16.253 0.455 l
-16.253 0.738 16.213 0.941 16.135 1.058 c
-16.055 1.183 15.922 1.249 15.739 1.249 c
-15.492 1.249 15.312 1.103 15.195 0.808 c
-15.195 -2.72 l
-13.901 -2.72 l
-13.901 0.44 l
-13.901 0.723 13.861 0.929 13.784 1.058 c
-13.703 1.183 13.567 1.249 13.372 1.249 c
-13.144 1.249 12.968 1.132 12.843 0.897 c
-12.843 -2.72 l
-11.549 -2.72 l
-11.549 2.248 l
-h
-20.251 -2.808 m
-19.582 -2.808 19.06 -2.613 18.678 -2.22 c
-18.304 -1.819 18.12 -1.246 18.12 -0.5 c
-18.12 -0.103 l
-18.12 0.679 18.289 1.282 18.634 1.705 c
-18.977 2.124 19.472 2.337 20.119 2.337 c
-20.737 2.337 21.2 2.135 21.516 1.734 c
-21.838 1.341 22 0.753 22 -0.03 c
-22 -0.676 l
-19.428 -0.676 l
-19.436 -1.04 19.517 -1.309 19.663 -1.484 c
-19.81 -1.654 20.031 -1.735 20.325 -1.735 c
-20.766 -1.735 21.126 -1.584 21.412 -1.279 c
-21.927 -2.072 l
-21.769 -2.29 21.537 -2.466 21.236 -2.602 c
-20.931 -2.738 20.604 -2.808 20.251 -2.808 c
-19.428 0.235 m
-20.737 0.235 l
-20.737 0.353 l
-20.725 0.654 20.67 0.881 20.575 1.028 c
-20.486 1.183 20.328 1.263 20.104 1.263 c
-19.877 1.263 19.711 1.18 19.605 1.014 c
-19.505 0.856 19.447 0.595 19.428 0.235 c
-22.662 -2.058 m
-22.662 -1.852 22.728 -1.683 22.867 -1.544 c
-23.014 -1.407 23.199 -1.338 23.426 -1.338 c
-23.64 -1.338 23.816 -1.407 23.955 -1.544 c
-24.103 -1.673 24.176 -1.845 24.176 -2.058 c
-24.176 -2.275 24.103 -2.448 23.955 -2.573 c
-23.816 -2.701 23.64 -2.764 23.426 -2.764 c
-23.199 -2.764 23.014 -2.701 22.867 -2.573 c
-22.728 -2.448 22.662 -2.275 22.662 -2.058 c
-22.662 1.705 m
-22.662 1.911 22.728 2.08 22.867 2.219 c
-23.014 2.356 23.199 2.425 23.426 2.425 c
-23.64 2.425 23.816 2.356 23.955 2.219 c
-24.103 2.09 24.176 1.918 24.176 1.705 c
-24.176 1.488 24.103 1.315 23.955 1.19 c
-23.816 1.062 23.64 0.999 23.426 0.999 c
-23.199 0.999 23.014 1.062 22.867 1.19 c
-22.728 1.315 22.662 1.488 22.662 1.705 c
-31.01 -0.397 m
-31.01 -1.172 30.871 -1.771 30.599 -2.19 c
-30.335 -2.602 29.938 -2.808 29.408 -2.808 c
-29.005 -2.808 28.681 -2.646 28.439 -2.323 c
-28.439 -4.63 l
-27.131 -4.63 l
-27.131 2.248 l
-28.336 2.248 l
-28.38 1.793 l
-28.633 2.153 28.972 2.337 29.394 2.337 c
-29.923 2.337 30.32 2.146 30.584 1.764 c
-30.856 1.381 31 0.786 31.01 -0.015 c
-h
-29.718 -0.059 m
-29.718 0.419 29.662 0.756 29.556 0.955 c
-29.445 1.15 29.265 1.249 29.012 1.249 c
-28.747 1.249 28.556 1.139 28.439 0.926 c
-28.439 -1.411 l
-28.556 -1.628 28.751 -1.735 29.026 -1.735 c
-29.281 -1.735 29.456 -1.628 29.556 -1.411 c
-29.662 -1.187 29.718 -0.849 29.718 -0.397 c
-h
-34.05 -2.264 m
-33.786 -2.627 33.425 -2.808 32.977 -2.808 c
-32.514 -2.808 32.169 -2.654 31.933 -2.338 c
-31.698 -2.025 31.581 -1.569 31.581 -0.971 c
-31.581 2.248 l
-32.874 2.248 l
-32.874 -1 l
-32.882 -1.482 33.043 -1.72 33.36 -1.72 c
-33.661 -1.72 33.877 -1.595 34.006 -1.338 c
-34.006 2.248 l
-35.314 2.248 l
-35.314 -2.72 l
-34.094 -2.72 l
-h
-39.933 -0.397 m
-39.933 -1.202 39.801 -1.804 39.536 -2.205 c
-39.28 -2.61 38.879 -2.808 38.331 -2.808 c
-37.898 -2.808 37.556 -2.617 37.302 -2.234 c
-37.258 -2.72 l
-36.053 -2.72 l
-36.053 4.336 l
-37.36 4.336 l
-37.36 1.851 l
-37.603 2.175 37.927 2.337 38.331 2.337 c
-38.879 2.337 39.28 2.135 39.536 1.734 c
-39.79 1.341 39.922 0.756 39.933 -0.015 c
-h
-38.64 -0.073 m
-38.64 0.455 38.584 0.808 38.478 0.985 c
-38.379 1.161 38.202 1.249 37.949 1.249 c
-37.674 1.249 37.479 1.124 37.36 0.881 c
-37.36 -1.382 l
-37.479 -1.617 37.677 -1.735 37.964 -1.735 c
-38.206 -1.735 38.379 -1.658 38.478 -1.5 c
-38.574 -1.334 38.629 -1.014 38.64 -0.544 c
-h
-41.903 -2.72 -1.309 7.056 re
-44.178 -2.72 -1.309 4.968 re
-42.81 3.542 m
-42.81 3.737 42.873 3.898 43.002 4.027 c
-43.126 4.163 43.299 4.233 43.516 4.233 c
-43.729 4.233 43.902 4.163 44.03 4.027 c
-44.155 3.898 44.221 3.737 44.221 3.542 c
-44.221 3.337 44.155 3.164 44.03 3.027 c
-43.913 2.899 43.741 2.836 43.516 2.836 c
-43.299 2.836 43.126 2.899 43.002 3.027 c
-42.873 3.164 42.81 3.337 42.81 3.542 c
-46.879 -1.735 m
-47.261 -1.735 47.452 -1.492 47.452 -1 c
-48.687 -1 l
-48.676 -1.54 48.503 -1.977 48.172 -2.308 c
-47.849 -2.643 47.426 -2.808 46.908 -2.808 c
-46.268 -2.808 45.78 -2.613 45.438 -2.22 c
-45.104 -1.819 44.938 -1.231 44.938 -0.456 c
-44.938 -0.059 l
-44.938 0.723 45.1 1.315 45.424 1.72 c
-45.754 2.131 46.25 2.337 46.908 2.337 c
-47.456 2.337 47.885 2.164 48.202 1.822 c
-48.514 1.488 48.676 1.014 48.687 0.397 c
-47.452 0.397 l
-47.452 0.669 47.408 0.881 47.319 1.028 c
-47.232 1.183 47.084 1.263 46.879 1.263 c
-46.651 1.263 46.489 1.18 46.393 1.014 c
-46.295 0.856 46.239 0.548 46.232 0.087 c
-46.232 -0.412 l
-46.232 -0.823 46.25 -1.11 46.291 -1.264 c
-46.328 -1.422 46.393 -1.54 46.482 -1.617 c
-46.577 -1.698 46.71 -1.735 46.879 -1.735 c
-51.336 -0.103 m
-51.336 -0.819 51.24 -1.496 51.057 -2.132 c
-50.881 -2.768 50.631 -3.326 50.307 -3.807 c
-49.983 -4.285 49.638 -4.619 49.278 -4.807 c
-49.043 -4.102 l
-49.385 -3.767 49.653 -3.256 49.852 -2.573 c
-50.058 -1.889 50.164 -1.11 50.175 -0.235 c
-50.175 0.014 l
-50.175 0.904 50.072 1.697 49.866 2.396 c
-49.668 3.102 49.395 3.634 49.043 3.998 c
-49.278 4.704 l
-49.513 4.586 49.752 4.384 49.998 4.101 c
-50.241 3.825 50.461 3.484 50.66 3.072 c
-50.866 2.66 51.028 2.194 51.145 1.675 c
-51.27 1.165 51.336 0.573 51.336 -0.103 c
-f
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS3 gs
-0 TL/Fm18 Do
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS3 gs
-0 TL/Fm19 Do
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS3 gs
-0 TL/Fm20 Do
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS3 gs
-0 TL/Fm21 Do
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS3 gs
-0 TL/Fm22 Do
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS3 gs
-0 TL/Fm23 Do
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS3 gs
-0 TL/Fm24 Do
-Q
-0.793 0.801 0.129 0.016 K
-0.567 w 1 j 1 J
-q 1 0 0 1 585.9855 434.2035 cm
-0 0 m
-5.053 -5.074 l
-S
-Q
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 589.5352 430.6393 cm
-0 0 m
--1.51 0.003 l
-1.882 -1.889 l
-0 1.511 l
-h
-f*
-Q
-0.906 0.785 0.617 0.969 K
-0.283 w 0 j 0 J
-q 1 0 0 1 589.5352 430.6393 cm
-0 0 m
--1.51 0.003 l
-1.882 -1.889 l
-0 1.511 l
-0 0 l
-h
-S
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS3 gs
-0 TL/Fm25 Do
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS3 gs
-0 TL/Fm26 Do
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS3 gs
-0 TL/Fm27 Do
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS3 gs
-0 TL/Fm28 Do
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS3 gs
-0 TL/Fm29 Do
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS3 gs
-0 TL/Fm30 Do
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS3 gs
-0 TL/Fm31 Do
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS3 gs
-0 TL/Fm32 Do
-Q
-0.793 0.801 0.129 0.016 K
-0.567 w 1 j 1 J
-q 1 0 0 1 710.4792 434.3578 cm
-0 0 m
--5.075 -5.056 l
-S
-Q
-q 1 0 0 1 706.9185 430.8089 cm
-0 0 m
-0 1.509 l
--1.893 -1.882 l
-1.506 -0.005 l
-h
-f*
-Q
-0.906 0.785 0.617 0.969 K
-0.283 w 0 j 0 J
-q 1 0 0 1 706.9186 430.8089 cm
-0 0 m
-0 1.509 l
--1.893 -1.882 l
-1.506 -0.005 l
-0 0 l
-h
-S
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 695.2289 383.6354 cm
-0 0 m
-0 0.459 0.081 0.808 0.25 1.043 c
-0.426 1.286 0.676 1.411 1 1.411 c
-1.301 1.411 1.532 1.278 1.691 1.014 c
-1.72 1.352 l
-2.161 1.352 l
-2.161 -1.661 l
-2.161 -2.032 2.061 -2.315 1.866 -2.514 c
-1.679 -2.708 1.419 -2.807 1.088 -2.807 c
-0.941 -2.807 0.771 -2.768 0.588 -2.69 c
-0.401 -2.62 0.264 -2.532 0.177 -2.425 c
-0.368 -2.087 l
-0.573 -2.294 0.798 -2.396 1.043 -2.396 c
-1.444 -2.396 1.65 -2.168 1.661 -1.72 c
-1.661 -1.338 l
-1.503 -1.573 1.282 -1.69 1 -1.69 c
-0.684 -1.69 0.441 -1.573 0.264 -1.338 c
-0.096 -1.103 0.008 -0.771 0 -0.338 c
-h
-0.485 -0.279 m
-0.485 -0.613 0.533 -0.86 0.632 -1.014 c
-0.727 -1.172 0.889 -1.249 1.118 -1.249 c
-1.359 -1.249 1.544 -1.128 1.661 -0.882 c
-1.661 0.603 l
-1.544 0.845 1.367 0.97 1.132 0.97 c
-0.904 0.97 0.742 0.889 0.647 0.735 c
-0.548 0.577 0.492 0.338 0.485 0.015 c
-h
-3.227 -1.631 -0.501 2.983 re
-3.256 2.146 m
-3.256 2.057 3.231 1.984 3.183 1.926 c
-3.142 1.874 3.073 1.852 2.977 1.852 c
-2.888 1.852 2.818 1.874 2.771 1.926 c
-2.73 1.984 2.712 2.051 2.712 2.132 c
-2.712 2.219 2.73 2.293 2.771 2.352 c
-2.818 2.41 2.888 2.44 2.977 2.44 c
-3.073 2.44 3.142 2.41 3.183 2.352 c
-3.231 2.293 3.256 2.223 3.256 2.146 c
-4.531 2.072 m
-4.531 1.352 l
-4.987 1.352 l
-4.987 0.956 l
-4.531 0.956 l
-4.531 -0.897 l
-4.531 -1.014 4.549 -1.103 4.59 -1.161 c
-4.627 -1.22 4.696 -1.249 4.796 -1.249 c
-4.854 -1.249 4.917 -1.242 4.987 -1.22 c
-4.987 -1.631 l
-4.869 -1.669 4.755 -1.69 4.648 -1.69 c
-4.451 -1.69 4.299 -1.625 4.193 -1.484 c
-4.094 -1.349 4.046 -1.154 4.046 -0.897 c
-4.046 0.956 l
-3.59 0.956 l
-3.59 1.352 l
-4.046 1.352 l
-4.046 2.072 l
-h
-8.804 -0.279 m
-8.804 -0.75 8.721 -1.103 8.555 -1.338 c
-8.386 -1.573 8.147 -1.69 7.834 -1.69 c
-7.53 -1.69 7.298 -1.58 7.144 -1.353 c
-7.144 -2.778 l
-6.659 -2.778 l
-6.659 1.352 l
-7.1 1.352 l
-7.129 1.014 l
-7.283 1.278 7.515 1.411 7.82 1.411 c
-8.151 1.411 8.397 1.294 8.555 1.058 c
-8.721 0.831 8.804 0.492 8.804 0.044 c
-h
-8.32 0 m
-8.32 0.33 8.264 0.577 8.158 0.735 c
-8.058 0.889 7.898 0.97 7.673 0.97 c
-7.437 0.97 7.262 0.852 7.144 0.617 c
-7.144 -0.926 l
-7.262 -1.154 7.441 -1.264 7.688 -1.264 c
-7.9 -1.264 8.058 -1.187 8.158 -1.029 c
-8.264 -0.875 8.32 -0.632 8.32 -0.309 c
-h
-10.774 -1.367 m
-10.616 -1.584 10.381 -1.69 10.069 -1.69 c
-9.804 -1.69 9.598 -1.598 9.452 -1.411 c
-9.311 -1.228 9.246 -0.952 9.246 -0.588 c
-9.246 1.352 l
-9.731 1.352 l
-9.731 -0.559 l
-9.731 -1.022 9.87 -1.249 10.157 -1.249 c
-10.451 -1.249 10.649 -1.118 10.76 -0.852 c
-10.76 1.352 l
-11.26 1.352 l
-11.26 -1.631 l
-10.789 -1.631 l
-h
-13.251 -0.867 m
-13.251 -0.761 13.211 -0.673 13.134 -0.603 c
-13.053 -0.526 12.902 -0.437 12.678 -0.338 c
-12.413 -0.231 12.226 -0.14 12.12 -0.059 c
-12.01 0.018 11.932 0.106 11.884 0.206 c
-11.833 0.301 11.811 0.419 11.811 0.559 c
-11.811 0.801 11.898 1.003 12.075 1.161 c
-12.251 1.326 12.476 1.411 12.752 1.411 c
-13.045 1.411 13.28 1.323 13.457 1.147 c
-13.633 0.977 13.722 0.764 13.722 0.5 c
-13.236 0.5 l
-13.236 0.636 13.185 0.75 13.089 0.838 c
-13.001 0.933 12.887 0.985 12.752 0.985 c
-12.604 0.985 12.49 0.945 12.413 0.867 c
-12.332 0.798 12.295 0.698 12.295 0.573 c
-12.295 0.474 12.326 0.397 12.384 0.338 c
-12.443 0.279 12.582 0.198 12.81 0.103 c
-13.17 -0.044 13.417 -0.187 13.545 -0.324 c
-13.681 -0.453 13.751 -0.625 13.751 -0.838 c
-13.751 -1.095 13.656 -1.301 13.471 -1.455 c
-13.296 -1.613 13.06 -1.69 12.766 -1.69 c
-12.45 -1.69 12.197 -1.602 12.002 -1.426 c
-11.815 -1.242 11.723 -1.01 11.723 -0.735 c
-12.208 -0.735 l
-12.215 -0.904 12.266 -1.037 12.355 -1.132 c
-12.45 -1.22 12.59 -1.264 12.766 -1.264 c
-12.92 -1.264 13.038 -1.231 13.119 -1.161 c
-13.207 -1.095 13.251 -0.996 13.251 -0.867 c
-14.695 1.043 m
-14.879 1.286 15.114 1.411 15.401 1.411 c
-15.93 1.411 16.199 1.058 16.21 0.353 c
-16.21 -1.631 l
-15.724 -1.631 l
-15.724 0.324 l
-15.724 0.559 15.684 0.723 15.607 0.823 c
-15.526 0.918 15.408 0.97 15.254 0.97 c
-15.137 0.97 15.026 0.929 14.931 0.852 c
-14.832 0.771 14.755 0.665 14.695 0.529 c
-14.695 -1.631 l
-14.21 -1.631 l
-14.21 2.602 l
-14.695 2.602 l
-h
-20.101 -0.279 m
-20.101 -0.75 20.016 -1.103 19.852 -1.338 c
-19.682 -1.573 19.443 -1.69 19.131 -1.69 c
-18.826 -1.69 18.595 -1.58 18.44 -1.353 c
-18.44 -2.778 l
-17.955 -2.778 l
-17.955 1.352 l
-18.396 1.352 l
-18.425 1.014 l
-18.58 1.278 18.811 1.411 19.116 1.411 c
-19.447 1.411 19.693 1.294 19.852 1.058 c
-20.016 0.831 20.101 0.492 20.101 0.044 c
-h
-19.616 0 m
-19.616 0.33 19.561 0.577 19.455 0.735 c
-19.355 0.889 19.193 0.97 18.969 0.97 c
-18.734 0.97 18.558 0.852 18.44 0.617 c
-18.44 -0.926 l
-18.558 -1.154 18.738 -1.264 18.984 -1.264 c
-19.197 -1.264 19.355 -1.187 19.455 -1.029 c
-19.561 -0.875 19.616 -0.632 19.616 -0.309 c
-h
-22.071 -1.367 m
-21.913 -1.584 21.677 -1.69 21.365 -1.69 c
-21.101 -1.69 20.895 -1.598 20.748 -1.411 c
-20.608 -1.228 20.542 -0.952 20.542 -0.588 c
-20.542 1.352 l
-21.027 1.352 l
-21.027 -0.559 l
-21.027 -1.022 21.167 -1.249 21.454 -1.249 c
-21.747 -1.249 21.946 -1.118 22.056 -0.852 c
-22.056 1.352 l
-22.556 1.352 l
-22.556 -1.631 l
-22.086 -1.631 l
-h
-25.271 -0.279 m
-25.271 -0.75 25.186 -1.103 25.022 -1.338 c
-24.852 -1.573 24.61 -1.69 24.286 -1.69 c
-23.971 -1.69 23.736 -1.554 23.581 -1.278 c
-23.551 -1.631 l
-23.11 -1.631 l
-23.11 2.602 l
-23.596 2.602 l
-23.596 1.029 l
-23.75 1.282 23.981 1.411 24.286 1.411 c
-24.61 1.411 24.852 1.294 25.022 1.058 c
-25.186 0.823 25.271 0.474 25.271 0.015 c
-h
-24.787 0 m
-24.787 0.353 24.735 0.603 24.639 0.75 c
-24.54 0.897 24.378 0.97 24.154 0.97 c
-23.908 0.97 23.721 0.831 23.596 0.559 c
-23.596 -0.852 l
-23.713 -1.118 23.904 -1.249 24.169 -1.249 c
-24.382 -1.249 24.54 -1.176 24.639 -1.029 c
-24.735 -0.875 24.787 -0.632 24.787 -0.309 c
-h
-26.242 -1.631 -0.5 4.233 re
-27.447 -1.631 -0.5 2.983 re
-27.476 2.146 m
-27.476 2.057 27.451 1.984 27.403 1.926 c
-27.362 1.874 27.293 1.852 27.197 1.852 c
-27.108 1.852 27.039 1.874 26.991 1.926 c
-26.95 1.984 26.932 2.051 26.932 2.132 c
-26.932 2.219 26.95 2.293 26.991 2.352 c
-27.039 2.41 27.108 2.44 27.197 2.44 c
-27.293 2.44 27.362 2.41 27.403 2.352 c
-27.451 2.293 27.476 2.223 27.476 2.146 c
-29.148 -1.264 m
-29.313 -1.264 29.446 -1.216 29.545 -1.118 c
-29.641 -1.022 29.695 -0.879 29.707 -0.691 c
-30.163 -0.691 l
-30.152 -0.977 30.048 -1.216 29.853 -1.411 c
-29.666 -1.598 29.431 -1.69 29.148 -1.69 c
-28.785 -1.69 28.505 -1.573 28.311 -1.338 c
-28.112 -1.103 28.016 -0.757 28.016 -0.294 c
-28.016 0.029 l
-28.016 0.478 28.108 0.823 28.296 1.058 c
-28.49 1.294 28.773 1.411 29.148 1.411 c
-29.45 1.411 29.693 1.311 29.868 1.117 c
-30.052 0.918 30.152 0.654 30.163 0.324 c
-29.707 0.324 l
-29.685 0.548 29.626 0.713 29.531 0.823 c
-29.442 0.929 29.313 0.985 29.148 0.985 c
-28.932 0.985 28.77 0.912 28.663 0.764 c
-28.564 0.625 28.509 0.397 28.502 0.073 c
-28.502 -0.309 l
-28.502 -0.661 28.55 -0.912 28.648 -1.058 c
-28.755 -1.199 28.92 -1.264 29.148 -1.264 c
-32.22 1.352 m
-32.235 1.073 l
-32.411 1.297 32.65 1.411 32.955 1.411 c
-33.286 1.411 33.518 1.264 33.647 0.97 c
-33.83 1.264 34.091 1.411 34.425 1.411 c
-34.984 1.411 35.266 1.066 35.278 0.382 c
-35.278 -1.631 l
-34.792 -1.631 l
-34.792 0.338 l
-34.792 0.551 34.752 0.709 34.675 0.808 c
-34.594 0.915 34.462 0.97 34.279 0.97 c
-34.131 0.97 34.013 0.912 33.926 0.794 c
-33.838 0.683 33.782 0.544 33.764 0.368 c
-33.764 -1.631 l
-33.279 -1.631 l
-33.279 0.353 l
-33.267 0.764 33.095 0.97 32.764 0.97 c
-32.518 0.97 32.346 0.845 32.25 0.603 c
-32.25 -1.631 l
-31.765 -1.631 l
-31.765 1.352 l
-h
-37.255 -1.631 m
-37.225 -1.565 37.203 -1.455 37.196 -1.309 c
-37.02 -1.565 36.799 -1.69 36.535 -1.69 c
-36.259 -1.69 36.043 -1.617 35.887 -1.47 c
-35.741 -1.316 35.667 -1.099 35.667 -0.823 c
-35.667 -0.522 35.77 -0.279 35.976 -0.103 c
-36.182 0.081 36.465 0.176 36.828 0.176 c
-37.181 0.176 l
-37.181 0.5 l
-37.181 0.676 37.141 0.798 37.063 0.867 c
-36.983 0.945 36.866 0.985 36.711 0.985 c
-36.564 0.985 36.439 0.941 36.344 0.852 c
-36.255 0.764 36.211 0.654 36.211 0.529 c
-35.727 0.529 l
-35.727 0.676 35.77 0.816 35.858 0.956 c
-35.947 1.103 36.064 1.213 36.211 1.294 c
-36.365 1.371 36.538 1.411 36.726 1.411 c
-37.038 1.411 37.273 1.33 37.431 1.176 c
-37.585 1.029 37.666 0.808 37.666 0.515 c
-37.666 -0.985 l
-37.674 -1.22 37.711 -1.422 37.769 -1.588 c
-37.769 -1.631 l
-h
-36.608 -1.249 m
-36.726 -1.249 36.836 -1.216 36.946 -1.147 c
-37.053 -1.081 37.13 -0.996 37.181 -0.897 c
-37.181 -0.191 l
-36.917 -0.191 l
-36.681 -0.191 36.494 -0.243 36.358 -0.338 c
-36.23 -0.437 36.167 -0.58 36.167 -0.765 c
-36.167 -0.933 36.197 -1.055 36.255 -1.132 c
-36.321 -1.213 36.439 -1.249 36.608 -1.249 c
-39.688 -0.867 m
-39.688 -0.761 39.647 -0.673 39.57 -0.603 c
-39.49 -0.526 39.338 -0.437 39.114 -0.338 c
-38.85 -0.231 38.663 -0.14 38.555 -0.059 c
-38.445 0.018 38.368 0.106 38.32 0.206 c
-38.269 0.301 38.247 0.419 38.247 0.559 c
-38.247 0.801 38.335 1.003 38.512 1.161 c
-38.688 1.326 38.912 1.411 39.187 1.411 c
-39.482 1.411 39.717 1.323 39.893 1.147 c
-40.07 0.977 40.158 0.764 40.158 0.5 c
-39.673 0.5 l
-39.673 0.636 39.621 0.75 39.526 0.838 c
-39.438 0.933 39.324 0.985 39.187 0.985 c
-39.041 0.985 38.927 0.945 38.85 0.867 c
-38.769 0.798 38.732 0.698 38.732 0.573 c
-38.732 0.474 38.761 0.397 38.821 0.338 c
-38.879 0.279 39.019 0.198 39.247 0.103 c
-39.607 -0.044 39.853 -0.187 39.981 -0.324 c
-40.118 -0.453 40.188 -0.625 40.188 -0.838 c
-40.188 -1.095 40.091 -1.301 39.908 -1.455 c
-39.731 -1.613 39.496 -1.69 39.203 -1.69 c
-38.886 -1.69 38.632 -1.602 38.438 -1.426 c
-38.25 -1.242 38.159 -1.01 38.159 -0.735 c
-38.644 -0.735 l
-38.651 -0.904 38.703 -1.037 38.79 -1.132 c
-38.886 -1.22 39.026 -1.264 39.203 -1.264 c
-39.357 -1.264 39.474 -1.231 39.555 -1.161 c
-39.644 -1.095 39.688 -0.996 39.688 -0.867 c
-41.275 2.072 m
-41.275 1.352 l
-41.73 1.352 l
-41.73 0.956 l
-41.275 0.956 l
-41.275 -0.897 l
-41.275 -1.014 41.294 -1.103 41.334 -1.161 c
-41.371 -1.22 41.441 -1.249 41.539 -1.249 c
-41.599 -1.249 41.661 -1.242 41.73 -1.22 c
-41.73 -1.631 l
-41.613 -1.669 41.499 -1.69 41.393 -1.69 c
-41.194 -1.69 41.044 -1.625 40.937 -1.484 c
-40.838 -1.349 40.79 -1.154 40.79 -0.897 c
-40.79 0.956 l
-40.334 0.956 l
-40.334 1.352 l
-40.79 1.352 l
-40.79 2.072 l
-h
-43.256 -1.69 m
-42.881 -1.69 42.598 -1.584 42.403 -1.367 c
-42.204 -1.143 42.109 -0.816 42.109 -0.382 c
-42.109 -0.015 l
-42.109 0.426 42.201 0.771 42.389 1.029 c
-42.584 1.282 42.859 1.411 43.212 1.411 c
-43.553 1.411 43.807 1.297 43.976 1.073 c
-44.153 0.845 44.244 0.5 44.255 0.029 c
-44.255 -0.279 l
-42.594 -0.279 l
-42.594 -0.353 l
-42.594 -0.676 42.653 -0.912 42.771 -1.058 c
-42.888 -1.199 43.058 -1.264 43.285 -1.264 c
-43.432 -1.264 43.557 -1.242 43.667 -1.191 c
-43.774 -1.132 43.877 -1.043 43.976 -0.926 c
-44.226 -1.235 l
-44.02 -1.54 43.696 -1.69 43.256 -1.69 c
-43.212 0.985 m
-43.006 0.985 42.852 0.915 42.756 0.779 c
-42.657 0.64 42.601 0.426 42.594 0.133 c
-43.77 0.133 l
-43.77 0.206 l
-43.748 0.478 43.696 0.676 43.608 0.794 c
-43.521 0.918 43.388 0.985 43.212 0.985 c
-45.902 0.897 m
-45.832 0.904 45.759 0.912 45.681 0.912 c
-45.424 0.912 45.248 0.771 45.152 0.5 c
-45.152 -1.631 l
-44.667 -1.631 l
-44.667 1.352 l
-45.138 1.352 l
-45.152 1.043 l
-45.277 1.286 45.46 1.411 45.695 1.411 c
-45.773 1.411 45.836 1.396 45.886 1.367 c
-h
-f
-Q
-0.793 0.801 0.129 0.016 K
-0.567 w 1 j 1 J
-q 1 0 0 1 672.622 356.2839 cm
-0 0 m
--0.114 20.002 26.63 15.225 20.909 37.795 c
-S
-Q
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 694.0562 392.01 cm
-0 0 m
-1.298 -0.771 l
--0.654 2.583 l
--0.772 -1.297 l
-h
-f*
-Q
-0.906 0.785 0.617 0.969 K
-0.283 w 0 j 0 J
-q 1 0 0 1 694.0562 392.01 cm
-0 0 m
-1.298 -0.771 l
--0.654 2.584 l
--0.772 -1.297 l
-0 0 l
-h
-S
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 635.2201 383.5761 cm
-0 0 m
-0 0.46 0.081 0.809 0.25 1.044 c
-0.426 1.287 0.676 1.411 0.999 1.411 c
-1.301 1.411 1.532 1.279 1.691 1.015 c
-1.72 1.353 l
-2.161 1.353 l
-2.161 -1.66 l
-2.161 -2.032 2.061 -2.315 1.866 -2.513 c
-1.679 -2.708 1.419 -2.807 1.087 -2.807 c
-0.941 -2.807 0.771 -2.767 0.588 -2.69 c
-0.401 -2.62 0.264 -2.532 0.176 -2.425 c
-0.368 -2.087 l
-0.573 -2.293 0.798 -2.395 1.043 -2.395 c
-1.444 -2.395 1.65 -2.167 1.661 -1.72 c
-1.661 -1.337 l
-1.503 -1.572 1.282 -1.69 0.999 -1.69 c
-0.684 -1.69 0.441 -1.572 0.264 -1.337 c
-0.096 -1.102 0.008 -0.771 0 -0.338 c
-h
-0.485 -0.278 m
-0.485 -0.613 0.532 -0.86 0.632 -1.014 c
-0.727 -1.172 0.889 -1.249 1.117 -1.249 c
-1.359 -1.249 1.544 -1.128 1.661 -0.881 c
-1.661 0.603 l
-1.544 0.846 1.367 0.971 1.132 0.971 c
-0.904 0.971 0.742 0.89 0.646 0.736 c
-0.547 0.578 0.492 0.339 0.485 0.015 c
-h
-3.223 -1.631 -0.5 2.984 re
-3.252 2.147 m
-3.252 2.058 3.227 1.985 3.179 1.926 c
-3.138 1.875 3.069 1.852 2.973 1.852 c
-2.884 1.852 2.815 1.875 2.767 1.926 c
-2.726 1.985 2.708 2.051 2.708 2.132 c
-2.708 2.22 2.726 2.294 2.767 2.352 c
-2.815 2.411 2.884 2.44 2.973 2.44 c
-3.069 2.44 3.138 2.411 3.179 2.352 c
-3.227 2.294 3.252 2.224 3.252 2.147 c
-4.531 2.073 m
-4.531 1.353 l
-4.987 1.353 l
-4.987 0.956 l
-4.531 0.956 l
-4.531 -0.897 l
-4.531 -1.014 4.549 -1.102 4.59 -1.161 c
-4.627 -1.219 4.696 -1.249 4.796 -1.249 c
-4.854 -1.249 4.917 -1.242 4.987 -1.219 c
-4.987 -1.631 l
-4.869 -1.668 4.755 -1.69 4.648 -1.69 c
-4.45 -1.69 4.299 -1.624 4.193 -1.484 c
-4.094 -1.348 4.046 -1.153 4.046 -0.897 c
-4.046 0.956 l
-3.59 0.956 l
-3.59 1.353 l
-4.046 1.353 l
-4.046 2.073 l
-h
-8.801 -0.278 m
-8.801 -0.749 8.717 -1.102 8.551 -1.337 c
-8.382 -1.572 8.143 -1.69 7.831 -1.69 c
-7.526 -1.69 7.294 -1.579 7.14 -1.352 c
-7.14 -2.778 l
-6.655 -2.778 l
-6.655 1.353 l
-7.096 1.353 l
-7.125 1.015 l
-7.279 1.279 7.511 1.411 7.817 1.411 c
-8.147 1.411 8.393 1.293 8.551 1.058 c
-8.717 0.831 8.801 0.493 8.801 0.044 c
-h
-8.316 0 m
-8.316 0.331 8.261 0.578 8.154 0.736 c
-8.055 0.89 7.894 0.971 7.669 0.971 c
-7.434 0.971 7.258 0.853 7.14 0.618 c
-7.14 -0.926 l
-7.258 -1.153 7.437 -1.263 7.684 -1.263 c
-7.897 -1.263 8.055 -1.186 8.154 -1.028 c
-8.261 -0.874 8.316 -0.631 8.316 -0.309 c
-h
-10.774 -1.367 m
-10.616 -1.583 10.381 -1.69 10.069 -1.69 c
-9.804 -1.69 9.598 -1.598 9.452 -1.411 c
-9.311 -1.227 9.246 -0.951 9.246 -0.588 c
-9.246 1.353 l
-9.731 1.353 l
-9.731 -0.558 l
-9.731 -1.022 9.87 -1.249 10.157 -1.249 c
-10.451 -1.249 10.649 -1.117 10.759 -0.852 c
-10.759 1.353 l
-11.26 1.353 l
-11.26 -1.631 l
-10.789 -1.631 l
-h
-13.251 -0.866 m
-13.251 -0.76 13.211 -0.672 13.134 -0.602 c
-13.053 -0.525 12.902 -0.436 12.678 -0.338 c
-12.413 -0.231 12.226 -0.139 12.12 -0.058 c
-12.01 0.019 11.932 0.107 11.884 0.206 c
-11.833 0.302 11.811 0.42 11.811 0.559 c
-11.811 0.802 11.898 1.004 12.075 1.162 c
-12.251 1.327 12.476 1.411 12.752 1.411 c
-13.045 1.411 13.28 1.324 13.457 1.147 c
-13.633 0.977 13.722 0.765 13.722 0.5 c
-13.236 0.5 l
-13.236 0.636 13.185 0.75 13.089 0.838 c
-13.001 0.934 12.887 0.985 12.752 0.985 c
-12.604 0.985 12.49 0.944 12.413 0.867 c
-12.332 0.798 12.295 0.699 12.295 0.574 c
-12.295 0.474 12.326 0.397 12.384 0.339 c
-12.443 0.279 12.582 0.198 12.81 0.103 c
-13.17 -0.043 13.417 -0.187 13.545 -0.323 c
-13.681 -0.452 13.751 -0.625 13.751 -0.837 c
-13.751 -1.095 13.656 -1.3 13.471 -1.454 c
-13.295 -1.612 13.06 -1.69 12.766 -1.69 c
-12.45 -1.69 12.197 -1.602 12.002 -1.425 c
-11.815 -1.242 11.723 -1.01 11.723 -0.735 c
-12.208 -0.735 l
-12.215 -0.904 12.266 -1.036 12.355 -1.132 c
-12.45 -1.219 12.59 -1.263 12.766 -1.263 c
-12.92 -1.263 13.038 -1.23 13.119 -1.161 c
-13.207 -1.095 13.251 -0.995 13.251 -0.866 c
-14.692 1.044 m
-14.875 1.287 15.11 1.411 15.397 1.411 c
-15.927 1.411 16.195 1.058 16.206 0.353 c
-16.206 -1.631 l
-15.721 -1.631 l
-15.721 0.324 l
-15.721 0.559 15.68 0.724 15.603 0.823 c
-15.522 0.919 15.405 0.971 15.25 0.971 c
-15.133 0.971 15.023 0.93 14.927 0.853 c
-14.828 0.772 14.751 0.665 14.692 0.53 c
-14.692 -1.631 l
-14.207 -1.631 l
-14.207 2.602 l
-14.692 2.602 l
-h
-f
-Q
-0.793 0.801 0.129 0.016 K
-0.567 w 1 j 1 J
-q 1 0 0 1 656.8204 356.6593 cm
-0 0 m
--0.118 20.001 -28.66 16.157 -38.177 39.485 c
-S
-Q
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 619.4479 394.1704 cm
-0 0 m
-1.393 -0.584 l
--1.007 2.47 l
--0.584 -1.393 l
-h
-f*
-Q
-0.906 0.785 0.617 0.969 K
-0.283 w 0 j 0 J
-q 1 0 0 1 619.4479 394.1704 cm
-0 0 m
-1.393 -0.584 l
--1.007 2.47 l
--0.584 -1.393 l
-0 0 l
-h
-S
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 588.0693 386.1895 cm
-0 0 m
-0 0.459 0.081 0.808 0.249 1.043 c
-0.426 1.286 0.676 1.411 0.999 1.411 c
-1.301 1.411 1.533 1.278 1.691 1.014 c
-1.72 1.352 l
-2.161 1.352 l
-2.161 -1.661 l
-2.161 -2.032 2.061 -2.315 1.866 -2.514 c
-1.679 -2.708 1.419 -2.808 1.088 -2.808 c
-0.941 -2.808 0.771 -2.768 0.588 -2.691 c
-0.401 -2.62 0.264 -2.532 0.176 -2.425 c
-0.368 -2.087 l
-0.573 -2.294 0.798 -2.396 1.043 -2.396 c
-1.444 -2.396 1.65 -2.168 1.66 -1.72 c
-1.66 -1.338 l
-1.503 -1.573 1.282 -1.69 0.999 -1.69 c
-0.683 -1.69 0.441 -1.573 0.264 -1.338 c
-0.095 -1.103 0.008 -0.772 0 -0.339 c
-h
-0.484 -0.279 m
-0.484 -0.614 0.532 -0.86 0.632 -1.014 c
-0.727 -1.172 0.889 -1.249 1.117 -1.249 c
-1.359 -1.249 1.544 -1.128 1.66 -0.882 c
-1.66 0.602 l
-1.544 0.845 1.367 0.97 1.132 0.97 c
-0.904 0.97 0.742 0.889 0.646 0.735 c
-0.548 0.577 0.492 0.338 0.484 0.014 c
-h
-3.227 -1.632 -0.5 2.984 re
-3.256 2.146 m
-3.256 2.057 3.23 1.984 3.183 1.926 c
-3.142 1.874 3.072 1.851 2.977 1.851 c
-2.888 1.851 2.818 1.874 2.771 1.926 c
-2.73 1.984 2.712 2.05 2.712 2.131 c
-2.712 2.219 2.73 2.293 2.771 2.352 c
-2.818 2.41 2.888 2.439 2.977 2.439 c
-3.072 2.439 3.142 2.41 3.183 2.352 c
-3.23 2.293 3.256 2.223 3.256 2.146 c
-4.534 2.072 m
-4.534 1.352 l
-4.991 1.352 l
-4.991 0.955 l
-4.534 0.955 l
-4.534 -0.897 l
-4.534 -1.014 4.553 -1.103 4.594 -1.162 c
-4.63 -1.22 4.7 -1.249 4.799 -1.249 c
-4.858 -1.249 4.92 -1.243 4.991 -1.22 c
-4.991 -1.632 l
-4.873 -1.669 4.758 -1.69 4.652 -1.69 c
-4.453 -1.69 4.303 -1.625 4.197 -1.484 c
-4.097 -1.349 4.05 -1.154 4.05 -0.897 c
-4.05 0.955 l
-3.594 0.955 l
-3.594 1.352 l
-4.05 1.352 l
-4.05 2.072 l
-h
-6.865 -1.632 m
-6.865 0.955 l
-6.483 0.955 l
-6.483 1.352 l
-6.865 1.352 l
-6.865 1.691 l
-6.872 1.992 6.953 2.227 7.1 2.396 c
-7.247 2.572 7.456 2.66 7.732 2.66 c
-7.827 2.66 7.927 2.645 8.025 2.616 c
-7.996 2.204 l
-7.927 2.212 7.853 2.219 7.775 2.219 c
-7.501 2.219 7.364 2.021 7.364 1.631 c
-7.364 1.352 l
-7.864 1.352 l
-7.864 0.955 l
-7.364 0.955 l
-7.364 -1.632 l
-h
-9.323 -1.69 m
-8.948 -1.69 8.665 -1.584 8.47 -1.367 c
-8.272 -1.143 8.176 -0.816 8.176 -0.383 c
-8.176 -0.015 l
-8.176 0.426 8.268 0.771 8.455 1.028 c
-8.65 1.282 8.926 1.411 9.279 1.411 c
-9.62 1.411 9.874 1.297 10.043 1.072 c
-10.219 0.845 10.311 0.5 10.323 0.029 c
-10.323 -0.279 l
-8.661 -0.279 l
-8.661 -0.353 l
-8.661 -0.676 8.72 -0.912 8.837 -1.058 c
-8.955 -1.199 9.124 -1.264 9.352 -1.264 c
-9.5 -1.264 9.624 -1.243 9.735 -1.191 c
-9.841 -1.132 9.944 -1.044 10.043 -0.927 c
-10.293 -1.235 l
-10.088 -1.54 9.764 -1.69 9.323 -1.69 c
-9.279 0.985 m
-9.073 0.985 8.918 0.914 8.823 0.779 c
-8.724 0.639 8.669 0.426 8.661 0.132 c
-9.837 0.132 l
-9.837 0.205 l
-9.815 0.478 9.764 0.675 9.675 0.793 c
-9.587 0.918 9.455 0.985 9.279 0.985 c
-11.366 2.072 m
-11.366 1.352 l
-11.821 1.352 l
-11.821 0.955 l
-11.366 0.955 l
-11.366 -0.897 l
-11.366 -1.014 11.384 -1.103 11.424 -1.162 c
-11.461 -1.22 11.532 -1.249 11.63 -1.249 c
-11.69 -1.249 11.752 -1.243 11.821 -1.22 c
-11.821 -1.632 l
-11.704 -1.669 11.59 -1.69 11.484 -1.69 c
-11.285 -1.69 11.135 -1.625 11.028 -1.484 c
-10.929 -1.349 10.881 -1.154 10.881 -0.897 c
-10.881 0.955 l
-10.425 0.955 l
-10.425 1.352 l
-10.881 1.352 l
-10.881 2.072 l
-h
-13.317 -1.264 m
-13.483 -1.264 13.615 -1.216 13.714 -1.118 c
-13.81 -1.022 13.865 -0.879 13.876 -0.691 c
-14.331 -0.691 l
-14.321 -0.977 14.217 -1.216 14.023 -1.411 c
-13.836 -1.598 13.6 -1.69 13.317 -1.69 c
-12.953 -1.69 12.675 -1.573 12.479 -1.338 c
-12.281 -1.103 12.185 -0.757 12.185 -0.294 c
-12.185 0.029 l
-12.185 0.478 12.278 0.823 12.465 1.058 c
-12.66 1.294 12.943 1.411 13.317 1.411 c
-13.618 1.411 13.861 1.311 14.038 1.117 c
-14.221 0.918 14.321 0.654 14.331 0.323 c
-13.876 0.323 l
-13.853 0.548 13.795 0.713 13.699 0.823 c
-13.612 0.929 13.483 0.985 13.317 0.985 c
-13.101 0.985 12.939 0.911 12.833 0.764 c
-12.733 0.625 12.677 0.397 12.671 0.073 c
-12.671 -0.309 l
-12.671 -0.661 12.718 -0.912 12.818 -1.058 c
-12.924 -1.199 13.089 -1.264 13.317 -1.264 c
-15.21 1.043 m
-15.393 1.286 15.628 1.411 15.915 1.411 c
-16.444 1.411 16.712 1.058 16.724 0.353 c
-16.724 -1.632 l
-16.239 -1.632 l
-16.239 0.323 l
-16.239 0.558 16.199 0.723 16.122 0.823 c
-16.041 0.918 15.923 0.97 15.769 0.97 c
-15.651 0.97 15.54 0.929 15.445 0.852 c
-15.345 0.771 15.268 0.665 15.21 0.529 c
-15.21 -1.632 l
-14.724 -1.632 l
-14.724 2.601 l
-15.21 2.601 l
-h
-f
-Q
-q 1 0 0 1 594.5256 379.6043 cm
-0 0 m
-0 0.43 0.104 0.771 0.309 1.028 c
-0.522 1.282 0.802 1.411 1.147 1.411 c
-1.488 1.411 1.764 1.282 1.97 1.028 c
-2.182 0.783 2.297 0.448 2.308 0.029 c
-2.308 -0.279 l
-2.308 -0.713 2.198 -1.055 1.985 -1.309 c
-1.779 -1.565 1.5 -1.691 1.147 -1.691 c
-0.802 -1.691 0.53 -1.569 0.324 -1.324 c
-0.118 -1.081 0.008 -0.746 0 -0.324 c
-h
-0.485 -0.279 m
-0.485 -0.595 0.544 -0.838 0.661 -1.014 c
-0.786 -1.183 0.948 -1.264 1.147 -1.264 c
-1.577 -1.264 1.801 -0.956 1.823 -0.339 c
-1.823 0 l
-1.823 0.301 1.756 0.544 1.632 0.72 c
-1.515 0.897 1.353 0.985 1.147 0.985 c
-0.948 0.985 0.786 0.897 0.661 0.72 c
-0.544 0.544 0.485 0.301 0.485 0 c
-h
-3.984 0.897 m
-3.914 0.904 3.84 0.911 3.763 0.911 c
-3.506 0.911 3.329 0.771 3.234 0.5 c
-3.234 -1.632 l
-2.749 -1.632 l
-2.749 1.352 l
-3.219 1.352 l
-3.234 1.043 l
-3.358 1.286 3.543 1.411 3.778 1.411 c
-3.855 1.411 3.917 1.396 3.969 1.367 c
-h
-f
-Q
-q 1 0 0 1 589.5942 373.0192 cm
-0 0 m
-0 0.459 0.081 0.808 0.25 1.043 c
-0.426 1.286 0.676 1.411 0.999 1.411 c
-1.301 1.411 1.532 1.278 1.691 1.014 c
-1.72 1.352 l
-2.161 1.352 l
-2.161 -1.661 l
-2.161 -2.032 2.061 -2.315 1.866 -2.514 c
-1.679 -2.708 1.419 -2.808 1.087 -2.808 c
-0.941 -2.808 0.771 -2.768 0.588 -2.691 c
-0.401 -2.62 0.264 -2.533 0.176 -2.425 c
-0.368 -2.087 l
-0.573 -2.294 0.798 -2.396 1.043 -2.396 c
-1.444 -2.396 1.65 -2.168 1.661 -1.72 c
-1.661 -1.338 l
-1.503 -1.573 1.282 -1.691 0.999 -1.691 c
-0.684 -1.691 0.441 -1.573 0.264 -1.338 c
-0.096 -1.103 0.008 -0.772 0 -0.339 c
-h
-0.485 -0.279 m
-0.485 -0.614 0.532 -0.86 0.632 -1.014 c
-0.727 -1.172 0.889 -1.249 1.117 -1.249 c
-1.359 -1.249 1.544 -1.128 1.661 -0.882 c
-1.661 0.602 l
-1.544 0.845 1.367 0.97 1.132 0.97 c
-0.904 0.97 0.742 0.889 0.646 0.735 c
-0.547 0.577 0.492 0.338 0.485 0.014 c
-h
-3.223 -1.632 -0.5 2.984 re
-3.252 2.146 m
-3.252 2.057 3.227 1.984 3.179 1.926 c
-3.138 1.874 3.069 1.851 2.973 1.851 c
-2.884 1.851 2.815 1.874 2.767 1.926 c
-2.726 1.984 2.708 2.05 2.708 2.131 c
-2.708 2.219 2.726 2.293 2.767 2.352 c
-2.815 2.41 2.884 2.439 2.973 2.439 c
-3.069 2.439 3.138 2.41 3.179 2.352 c
-3.227 2.293 3.252 2.223 3.252 2.146 c
-4.531 2.072 m
-4.531 1.352 l
-4.987 1.352 l
-4.987 0.955 l
-4.531 0.955 l
-4.531 -0.897 l
-4.531 -1.014 4.549 -1.103 4.59 -1.162 c
-4.627 -1.22 4.696 -1.249 4.796 -1.249 c
-4.854 -1.249 4.917 -1.243 4.987 -1.22 c
-4.987 -1.632 l
-4.869 -1.669 4.755 -1.691 4.648 -1.691 c
-4.45 -1.691 4.299 -1.625 4.193 -1.484 c
-4.094 -1.349 4.046 -1.154 4.046 -0.897 c
-4.046 0.955 l
-3.59 0.955 l
-3.59 1.352 l
-4.046 1.352 l
-4.046 2.072 l
-h
-8.801 -0.279 m
-8.801 -0.75 8.717 -1.103 8.551 -1.338 c
-8.382 -1.573 8.143 -1.691 7.831 -1.691 c
-7.526 -1.691 7.294 -1.58 7.14 -1.353 c
-7.14 -2.778 l
-6.655 -2.778 l
-6.655 1.352 l
-7.096 1.352 l
-7.125 1.014 l
-7.279 1.278 7.511 1.411 7.817 1.411 c
-8.147 1.411 8.393 1.294 8.551 1.058 c
-8.717 0.831 8.801 0.492 8.801 0.044 c
-h
-8.316 0 m
-8.316 0.33 8.261 0.577 8.154 0.735 c
-8.055 0.889 7.894 0.97 7.669 0.97 c
-7.434 0.97 7.258 0.852 7.14 0.617 c
-7.14 -0.927 l
-7.258 -1.154 7.437 -1.264 7.684 -1.264 c
-7.897 -1.264 8.055 -1.187 8.154 -1.029 c
-8.261 -0.875 8.316 -0.632 8.316 -0.309 c
-h
-10.774 -1.367 m
-10.616 -1.584 10.381 -1.691 10.069 -1.691 c
-9.804 -1.691 9.598 -1.598 9.452 -1.411 c
-9.311 -1.228 9.246 -0.952 9.246 -0.588 c
-9.246 1.352 l
-9.731 1.352 l
-9.731 -0.559 l
-9.731 -1.022 9.87 -1.249 10.157 -1.249 c
-10.451 -1.249 10.649 -1.118 10.759 -0.853 c
-10.759 1.352 l
-11.26 1.352 l
-11.26 -1.632 l
-10.789 -1.632 l
-h
-12.34 -1.632 -0.5 4.233 re
-13.545 -1.632 -0.5 4.233 re
-f
-Q
-0.793 0.801 0.129 0.016 K
-0.567 w 1 j 1 J
-q 1 0 0 1 600.5115 395.7545 cm
-0 0 m
-19.682 -14.736 18.124 -46.64 36.296 -49.646 c
-S
-Q
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 634.7023 346.454 cm
-0 0 m
--1.228 -0.878 l
-2.631 -0.433 l
--0.878 1.227 l
-h
-f*
-Q
-0.906 0.785 0.617 0.969 K
-0.283 w 0 j 0 J
-q 1 0 0 1 634.7023 346.4541 cm
-0 0 m
--1.228 -0.878 l
-2.631 -0.433 l
--0.878 1.227 l
-0 0 l
-h
-S
-Q
-0.793 0.801 0.129 0.016 k
-535.667 213.99 238.665 -21.457 re
-f
-0 0 0 0 k
-q 1 0 0 1 571.6026 198.5045 cm
-0 0 m
-0 9.363 l
-2.484 9.363 l
-3.572 9.363 4.439 9.014 5.086 8.32 c
-5.74 7.621 6.074 6.674 6.086 5.468 c
-6.086 3.954 l
-6.086 2.72 5.762 1.749 5.115 1.043 c
-4.469 0.345 3.572 0 2.425 0 c
-h
-1.897 7.79 m
-1.897 1.573 l
-2.454 1.573 l
-3.09 1.573 3.535 1.738 3.792 2.072 c
-4.046 2.404 4.178 2.977 4.189 3.792 c
-4.189 5.409 l
-4.189 6.291 4.064 6.901 3.821 7.247 c
-3.586 7.588 3.175 7.769 2.587 7.79 c
-h
-6.913 0.926 m
-6.913 1.22 7.008 1.459 7.206 1.646 c
-7.401 1.83 7.655 1.926 7.971 1.926 c
-8.272 1.926 8.522 1.83 8.72 1.646 c
-8.926 1.459 9.029 1.22 9.029 0.926 c
-9.029 0.621 8.926 0.374 8.72 0.191 c
-8.522 0.015 8.272 -0.073 7.971 -0.073 c
-7.665 -0.073 7.412 0.018 7.206 0.206 c
-7.008 0.389 6.913 0.632 6.913 0.926 c
-20.266 3.116 m
-20.215 2.047 19.914 1.238 19.355 0.691 c
-18.804 0.139 18.032 -0.133 17.032 -0.133 c
-15.963 -0.133 15.144 0.213 14.578 0.912 c
-14.019 1.606 13.74 2.602 13.74 3.896 c
-13.74 5.468 l
-13.74 6.761 14.026 7.754 14.607 8.452 c
-15.195 9.147 16.008 9.496 17.047 9.496 c
-18.065 9.496 18.84 9.205 19.37 8.628 c
-19.898 8.058 20.201 7.239 20.281 6.173 c
-18.385 6.173 l
-18.362 6.838 18.26 7.295 18.076 7.541 c
-17.889 7.794 17.547 7.923 17.047 7.923 c
-16.548 7.923 16.187 7.746 15.974 7.393 c
-15.769 7.041 15.655 6.456 15.636 5.644 c
-15.636 3.881 l
-15.636 2.947 15.739 2.308 15.945 1.955 c
-16.158 1.61 16.521 1.44 17.032 1.44 c
-17.521 1.44 17.859 1.558 18.047 1.793 c
-18.242 2.036 18.348 2.477 18.37 3.116 c
-h
-28.244 3.836 m
-28.244 2.58 27.943 1.606 27.347 0.912 c
-26.749 0.213 25.926 -0.133 24.878 -0.133 c
-23.827 -0.133 23 0.21 22.394 0.897 c
-21.795 1.591 21.49 2.558 21.483 3.792 c
-21.483 5.394 l
-21.483 6.677 21.78 7.68 22.379 8.407 c
-22.975 9.132 23.805 9.496 24.864 9.496 c
-25.899 9.496 26.719 9.136 27.318 8.422 c
-27.925 7.717 28.233 6.721 28.244 5.438 c
-h
-26.348 5.409 m
-26.348 6.25 26.223 6.879 25.98 7.291 c
-25.745 7.702 25.371 7.908 24.864 7.908 c
-24.363 7.908 23.989 7.706 23.746 7.306 c
-23.511 6.913 23.386 6.313 23.379 5.512 c
-23.379 3.836 l
-23.379 3.021 23.5 2.418 23.746 2.028 c
-23.989 1.635 24.367 1.44 24.878 1.44 c
-25.367 1.44 25.731 1.631 25.966 2.014 c
-26.208 2.396 26.337 2.984 26.348 3.778 c
-h
-32.286 9.363 m
-34.065 2.587 l
-35.814 9.363 l
-38.283 9.363 l
-38.283 0 l
-36.388 0 l
-36.388 2.528 l
-36.564 6.438 l
-34.697 0 l
-33.404 0 l
-31.536 6.438 l
-31.713 2.528 l
-31.713 0 l
-29.817 0 l
-29.817 9.363 l
-h
-42.553 9.363 m
-44.332 2.587 l
-46.081 9.363 l
-48.551 9.363 l
-48.551 0 l
-46.655 0 l
-46.655 2.528 l
-46.831 6.438 l
-44.965 0 l
-43.671 0 l
-41.804 6.438 l
-41.981 2.528 l
-41.981 0 l
-40.084 0 l
-40.084 9.363 l
-h
-52.336 0 -1.897 9.363 re
-59.913 7.79 m
-57.591 7.79 l
-57.591 0 l
-55.695 0 l
-55.695 7.79 l
-53.416 7.79 l
-53.416 9.363 l
-59.913 9.363 l
-h
-65.047 2.454 m
-65.047 2.837 64.948 3.123 64.753 3.322 c
-64.554 3.516 64.202 3.719 63.695 3.925 c
-62.754 4.285 62.078 4.704 61.666 5.174 c
-61.254 5.652 61.049 6.221 61.049 6.879 c
-61.049 7.661 61.328 8.294 61.887 8.775 c
-62.445 9.253 63.155 9.496 64.018 9.496 c
-64.595 9.496 65.11 9.371 65.561 9.128 c
-66.01 8.882 66.355 8.54 66.59 8.099 c
-66.833 7.659 66.958 7.158 66.958 6.6 c
-65.077 6.6 l
-65.077 7.041 64.981 7.372 64.797 7.599 c
-64.61 7.823 64.342 7.937 63.988 7.937 c
-63.654 7.937 63.394 7.838 63.209 7.644 c
-63.033 7.456 62.945 7.195 62.945 6.865 c
-62.945 6.607 63.047 6.372 63.253 6.159 c
-63.459 5.953 63.82 5.737 64.342 5.512 c
-65.253 5.189 65.914 4.785 66.326 4.307 c
-66.745 3.825 66.958 3.212 66.958 2.469 c
-66.958 1.654 66.697 1.018 66.179 0.559 c
-65.657 0.095 64.951 -0.133 64.062 -0.133 c
-63.452 -0.133 62.901 -0.008 62.401 0.235 c
-61.909 0.488 61.522 0.845 61.24 1.309 c
-60.953 1.779 60.814 2.326 60.814 2.955 c
-62.71 2.955 l
-62.71 2.414 62.812 2.021 63.018 1.779 c
-63.232 1.532 63.581 1.411 64.062 1.411 c
-64.716 1.411 65.047 1.756 65.047 2.454 c
-68.876 -2.367 m
-67.906 -1.852 l
-68.141 -1.396 l
-68.413 -0.885 68.556 -0.375 68.568 0.133 c
-68.568 1.587 l
-70.155 1.587 l
-70.141 0.294 l
-70.141 -0.166 70.026 -0.636 69.802 -1.118 c
-69.574 -1.606 69.266 -2.022 68.876 -2.367 c
-74.877 0 m
-74.877 9.363 l
-77.773 9.363 l
-78.75 9.363 79.496 9.143 80.007 8.702 c
-80.514 8.268 80.771 7.632 80.771 6.791 c
-80.771 6.321 80.661 5.913 80.448 5.571 c
-80.242 5.226 79.952 4.976 79.581 4.821 c
-80 4.692 80.323 4.446 80.551 4.087 c
-80.786 3.734 80.904 3.285 80.904 2.749 c
-80.904 1.845 80.653 1.161 80.154 0.691 c
-79.654 0.228 78.926 0 77.979 0 c
-h
-76.773 4.072 m
-76.773 1.573 l
-77.979 1.573 l
-78.32 1.573 78.581 1.675 78.758 1.881 c
-78.934 2.094 79.022 2.396 79.022 2.778 c
-79.022 3.62 78.714 4.05 78.096 4.072 c
-h
-76.773 5.453 m
-77.758 5.453 l
-78.492 5.453 78.86 5.835 78.86 6.6 c
-78.86 7.019 78.772 7.324 78.596 7.511 c
-78.427 7.695 78.155 7.79 77.773 7.79 c
-76.773 7.79 l
-h
-85.306 3.425 m
-84.366 3.425 l
-84.366 0 l
-82.484 0 l
-82.484 9.363 l
-85.497 9.363 l
-86.445 9.363 87.176 9.117 87.687 8.628 c
-88.206 8.136 88.466 7.441 88.466 6.541 c
-88.466 5.295 88.015 4.424 87.114 3.925 c
-88.746 0.088 l
-88.746 0 l
-86.717 0 l
-h
-84.366 4.997 m
-85.438 4.997 l
-85.821 4.997 86.103 5.119 86.291 5.365 c
-86.475 5.619 86.57 5.957 86.57 6.379 c
-86.57 7.32 86.207 7.79 85.482 7.79 c
-84.366 7.79 l
-h
-94.452 1.911 m
-91.88 1.911 l
-91.381 0 l
-89.382 0 l
-92.306 9.363 l
-94.026 9.363 l
-96.981 0 l
-94.953 0 l
-h
-92.291 3.499 m
-94.041 3.499 l
-93.159 6.835 l
-h
-104.636 0 m
-102.739 0 l
-99.975 6.144 l
-99.975 0 l
-98.08 0 l
-98.08 9.363 l
-99.975 9.363 l
-102.739 3.219 l
-102.739 9.363 l
-104.636 9.363 l
-h
-112.738 3.116 m
-112.686 2.047 112.385 1.238 111.827 0.691 c
-111.275 0.139 110.504 -0.133 109.504 -0.133 c
-108.435 -0.133 107.616 0.213 107.05 0.912 c
-106.491 1.606 106.211 2.602 106.211 3.896 c
-106.211 5.468 l
-106.211 6.761 106.498 7.754 107.079 8.452 c
-107.667 9.147 108.479 9.496 109.519 9.496 c
-110.537 9.496 111.312 9.205 111.842 8.628 c
-112.37 8.058 112.671 7.239 112.752 6.173 c
-110.857 6.173 l
-110.834 6.838 110.732 7.295 110.548 7.541 c
-110.36 7.794 110.019 7.923 109.519 7.923 c
-109.019 7.923 108.659 7.746 108.446 7.393 c
-108.241 7.041 108.126 6.456 108.108 5.644 c
-108.108 3.881 l
-108.108 2.947 108.21 2.308 108.416 1.955 c
-108.63 1.61 108.993 1.44 109.504 1.44 c
-109.993 1.44 110.331 1.558 110.518 1.793 c
-110.713 2.036 110.82 2.477 110.842 3.116 c
-h
-120.686 0 m
-118.805 0 l
-118.805 4.013 l
-116.012 4.013 l
-116.012 0 l
-114.116 0 l
-114.116 9.363 l
-116.012 9.363 l
-116.012 5.571 l
-118.805 5.571 l
-118.805 9.363 l
-120.686 9.363 l
-h
-127.257 4.056 m
-124.317 4.056 l
-124.317 1.573 l
-127.801 1.573 l
-127.801 0 l
-122.421 0 l
-122.421 9.363 l
-127.786 9.363 l
-127.786 7.79 l
-124.317 7.79 l
-124.317 5.571 l
-127.257 5.571 l
-h
-133.019 2.454 m
-133.019 2.837 132.92 3.123 132.725 3.322 c
-132.527 3.516 132.174 3.719 131.667 3.925 c
-130.726 4.285 130.05 4.704 129.639 5.174 c
-129.227 5.652 129.021 6.221 129.021 6.879 c
-129.021 7.661 129.3 8.294 129.859 8.775 c
-130.418 9.253 131.127 9.496 131.99 9.496 c
-132.567 9.496 133.082 9.371 133.533 9.128 c
-133.982 8.882 134.327 8.54 134.562 8.099 c
-134.805 7.659 134.93 7.158 134.93 6.6 c
-133.049 6.6 l
-133.049 7.041 132.953 7.372 132.769 7.599 c
-132.582 7.823 132.313 7.937 131.96 7.937 c
-131.626 7.937 131.366 7.838 131.181 7.644 c
-131.005 7.456 130.917 7.195 130.917 6.865 c
-130.917 6.607 131.02 6.372 131.226 6.159 c
-131.432 5.953 131.792 5.737 132.313 5.512 c
-133.225 5.189 133.886 4.785 134.298 4.307 c
-134.717 3.825 134.93 3.212 134.93 2.469 c
-134.93 1.654 134.669 1.018 134.151 0.559 c
-133.629 0.095 132.924 -0.133 132.035 -0.133 c
-131.424 -0.133 130.873 -0.008 130.373 0.235 c
-129.88 0.488 129.495 0.845 129.212 1.309 c
-128.926 1.779 128.785 2.326 128.785 2.955 c
-130.682 2.955 l
-130.682 2.414 130.784 2.021 130.99 1.779 c
-131.204 1.532 131.553 1.411 132.035 1.411 c
-132.688 1.411 133.019 1.756 133.019 2.454 c
-143.985 1.911 m
-141.412 1.911 l
-140.912 0 l
-138.913 0 l
-141.838 9.363 l
-143.559 9.363 l
-146.513 0 l
-144.484 0 l
-h
-141.824 3.499 m
-143.573 3.499 l
-142.691 6.835 l
-h
-154.167 0 m
-152.271 0 l
-149.508 6.144 l
-149.508 0 l
-147.611 0 l
-147.611 9.363 l
-149.508 9.363 l
-152.271 3.219 l
-152.271 9.363 l
-154.167 9.363 l
-h
-155.92 0 m
-155.92 9.363 l
-158.405 9.363 l
-159.492 9.363 160.359 9.014 161.006 8.32 c
-161.66 7.621 161.994 6.674 162.006 5.468 c
-162.006 3.954 l
-162.006 2.72 161.682 1.749 161.036 1.043 c
-160.388 0.345 159.492 0 158.345 0 c
-h
-157.817 7.79 m
-157.817 1.573 l
-158.375 1.573 l
-159.01 1.573 159.455 1.738 159.712 2.072 c
-159.966 2.404 160.099 2.977 160.109 3.792 c
-160.109 5.409 l
-160.109 6.291 159.984 6.901 159.742 7.247 c
-159.507 7.588 159.095 7.769 158.507 7.79 c
-h
-172.361 7.79 m
-170.039 7.79 l
-170.039 0 l
-168.142 0 l
-168.142 7.79 l
-165.864 7.79 l
-165.864 9.363 l
-172.361 9.363 l
-h
-177.322 1.911 m
-174.75 1.911 l
-174.25 0 l
-172.251 0 l
-175.176 9.363 l
-176.896 9.363 l
-179.851 0 l
-177.821 0 l
-h
-175.161 3.499 m
-176.911 3.499 l
-176.028 6.835 l
-h
-187.182 1.058 m
-186.818 0.665 186.373 0.368 185.844 0.162 c
-185.314 -0.033 184.734 -0.133 184.109 -0.133 c
-183.029 -0.133 182.191 0.199 181.596 0.867 c
-180.996 1.532 180.692 2.502 180.684 3.778 c
-180.684 5.468 l
-180.684 6.761 180.963 7.754 181.522 8.452 c
-182.089 9.147 182.912 9.496 183.992 9.496 c
-185.01 9.496 185.774 9.238 186.284 8.731 c
-186.803 8.231 187.101 7.445 187.182 6.379 c
-185.344 6.379 l
-185.293 6.975 185.171 7.383 184.977 7.599 c
-184.778 7.813 184.47 7.923 184.051 7.923 c
-183.54 7.923 183.169 7.736 182.933 7.364 c
-182.706 6.99 182.588 6.398 182.581 5.585 c
-182.581 3.881 l
-182.581 3.028 182.706 2.404 182.963 2.014 c
-183.217 1.631 183.631 1.44 184.212 1.44 c
-184.583 1.44 184.888 1.514 185.123 1.661 c
-185.285 1.779 l
-185.285 3.499 l
-183.963 3.499 l
-183.963 4.924 l
-187.182 4.924 l
-h
-192.709 2.454 m
-192.709 2.837 192.609 3.123 192.414 3.322 c
-192.216 3.516 191.863 3.719 191.356 3.925 c
-190.415 4.285 189.739 4.704 189.328 5.174 c
-188.916 5.652 188.71 6.221 188.71 6.879 c
-188.71 7.661 188.99 8.294 189.548 8.775 c
-190.107 9.253 190.816 9.496 191.679 9.496 c
-192.256 9.496 192.771 9.371 193.223 9.128 c
-193.671 8.882 194.016 8.54 194.251 8.099 c
-194.494 7.659 194.619 7.158 194.619 6.6 c
-192.738 6.6 l
-192.738 7.041 192.642 7.372 192.458 7.599 c
-192.271 7.823 192.003 7.937 191.65 7.937 c
-191.315 7.937 191.055 7.838 190.871 7.644 c
-190.694 7.456 190.606 7.195 190.606 6.865 c
-190.606 6.607 190.709 6.372 190.915 6.159 c
-191.121 5.953 191.481 5.737 192.003 5.512 c
-192.914 5.189 193.575 4.785 193.987 4.307 c
-194.406 3.825 194.619 3.212 194.619 2.469 c
-194.619 1.654 194.359 1.018 193.84 0.559 c
-193.318 0.095 192.613 -0.133 191.724 -0.133 c
-191.113 -0.133 190.562 -0.008 190.062 0.235 c
-189.57 0.488 189.185 0.845 188.901 1.309 c
-188.615 1.779 188.475 2.326 188.475 2.955 c
-190.371 2.955 l
-190.371 2.414 190.474 2.021 190.679 1.779 c
-190.893 1.532 191.242 1.411 191.724 1.411 c
-192.377 1.411 192.709 1.756 192.709 2.454 c
-f
-Q
-0.797 0.801 0.141 0.02 K
-0.709 w 1 j 1 J
-q 1 0 0 1 535.6673 213.6594 cm
-0 0 m
--254.669 0 l
--254.669 -82.694 l
--499.999 -82.694 l
-S
-Q
-0.793 0.801 0.129 0.016 k
-288.19 207.39 37.732 -54.746 re
-f
-0 0 0 0 k
-q 1 0 0 1 297.4504 198.7321 cm
-0 0 m
-0.294 0 0.445 0.195 0.455 0.588 c
-1.426 0.588 l
-1.426 0.154 1.294 -0.198 1.029 -0.47 c
-0.765 -0.735 0.426 -0.867 0.015 -0.867 c
--0.496 -0.867 -0.889 -0.713 -1.161 -0.397 c
--1.426 -0.073 -1.565 0.397 -1.573 1.014 c
--1.573 1.338 l
--1.573 1.962 -1.44 2.44 -1.176 2.764 c
--0.904 3.094 -0.507 3.263 0.015 3.263 c
-0.445 3.263 0.786 3.123 1.043 2.851 c
-1.297 2.576 1.426 2.194 1.426 1.706 c
-0.455 1.706 l
-0.455 1.918 0.415 2.088 0.338 2.205 c
-0.268 2.33 0.151 2.396 -0.015 2.396 c
--0.191 2.396 -0.32 2.33 -0.397 2.205 c
--0.478 2.076 -0.522 1.827 -0.529 1.455 c
--0.529 1.043 l
--0.529 0.721 -0.515 0.493 -0.485 0.368 c
--0.448 0.239 -0.393 0.147 -0.324 0.088 c
--0.246 0.029 -0.139 0 0 0 c
-1.911 1.323 m
-1.911 1.929 2.051 2.404 2.337 2.749 c
-2.62 3.09 3.013 3.263 3.513 3.263 c
-4.021 3.263 4.417 3.09 4.704 2.749 c
-4.987 2.404 5.13 1.929 5.13 1.323 c
-5.13 1.058 l
-5.13 0.459 4.987 -0.011 4.704 -0.353 c
-4.417 -0.698 4.021 -0.867 3.513 -0.867 c
-3.002 -0.867 2.606 -0.698 2.323 -0.353 c
-2.047 -0.011 1.911 0.463 1.911 1.073 c
-h
-2.955 1.058 m
-2.955 0.353 3.138 0 3.513 0 c
-3.866 0 4.057 0.294 4.087 0.882 c
-4.087 1.323 l
-4.087 1.683 4.035 1.955 3.94 2.132 c
-3.84 2.308 3.697 2.396 3.513 2.396 c
-3.337 2.396 3.198 2.308 3.102 2.132 c
-3.002 1.955 2.955 1.683 2.955 1.323 c
-h
-6.747 3.19 m
-6.776 2.822 l
-7.011 3.117 7.32 3.263 7.703 3.263 c
-8.103 3.263 8.382 3.08 8.54 2.72 c
-8.775 3.08 9.103 3.263 9.525 3.263 c
-10.219 3.263 10.572 2.778 10.583 1.808 c
-10.583 -0.794 l
-9.554 -0.794 l
-9.554 1.749 l
-9.554 1.974 9.517 2.135 9.452 2.234 c
-9.392 2.33 9.282 2.381 9.128 2.381 c
-8.93 2.381 8.79 2.263 8.702 2.028 c
-8.702 -0.794 l
-7.659 -0.794 l
-7.659 1.735 l
-7.659 1.97 7.628 2.135 7.57 2.234 c
-7.511 2.33 7.401 2.381 7.247 2.381 c
-7.071 2.381 6.927 2.286 6.82 2.102 c
-6.82 -0.794 l
-5.777 -0.794 l
-5.777 3.19 l
-h
-12.332 3.19 m
-12.362 2.822 l
-12.597 3.117 12.906 3.263 13.288 3.263 c
-13.689 3.263 13.968 3.08 14.126 2.72 c
-14.361 3.08 14.688 3.263 15.111 3.263 c
-15.805 3.263 16.158 2.778 16.169 1.808 c
-16.169 -0.794 l
-15.14 -0.794 l
-15.14 1.749 l
-15.14 1.974 15.104 2.135 15.037 2.234 c
-14.978 2.33 14.868 2.381 14.714 2.381 c
-14.516 2.381 14.375 2.263 14.288 2.028 c
-14.288 -0.794 l
-13.244 -0.794 l
-13.244 1.735 l
-13.244 1.97 13.215 2.135 13.155 2.234 c
-13.097 2.33 12.987 2.381 12.833 2.381 c
-12.656 2.381 12.513 2.286 12.406 2.102 c
-12.406 -0.794 l
-11.362 -0.794 l
-11.362 3.19 l
-h
-18.036 -0.794 -1.043 3.984 re
-16.948 4.218 m
-16.948 4.374 16.996 4.501 17.095 4.601 c
-17.201 4.707 17.338 4.763 17.506 4.763 c
-17.683 4.763 17.819 4.707 17.918 4.601 c
-18.025 4.501 18.08 4.374 18.08 4.218 c
-18.08 4.05 18.025 3.913 17.918 3.807 c
-17.819 3.708 17.683 3.66 17.506 3.66 c
-17.338 3.66 17.201 3.708 17.095 3.807 c
-16.996 3.913 16.948 4.05 16.948 4.218 c
-20.05 4.16 m
-20.05 3.19 l
-20.579 3.19 l
-20.579 2.396 l
-20.05 2.396 l
-20.05 0.426 l
-20.05 0.268 20.068 0.162 20.108 0.103 c
-20.156 0.044 20.241 0.015 20.359 0.015 c
-20.465 0.015 20.549 0.023 20.608 0.044 c
-20.608 -0.764 l
-20.432 -0.831 20.241 -0.867 20.035 -0.867 c
-19.359 -0.867 19.013 -0.482 19.006 0.294 c
-19.006 2.396 l
-18.55 2.396 l
-18.55 3.19 l
-19.006 3.19 l
-19.006 4.16 l
-h
-f
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 331.7103 197.9382 cm
-0 0 m
--0.04 0.088 -0.066 0.235 -0.073 0.441 c
--0.309 0.096 -0.603 -0.073 -0.956 -0.073 c
--1.319 -0.073 -1.602 0.023 -1.808 0.221 c
--2.007 0.426 -2.102 0.713 -2.102 1.088 c
--2.102 1.488 -1.966 1.808 -1.691 2.043 c
--1.419 2.286 -1.043 2.411 -0.573 2.411 c
--0.088 2.411 l
--0.088 2.837 l
--0.088 3.072 -0.143 3.238 -0.25 3.337 c
--0.36 3.444 -0.522 3.499 -0.735 3.499 c
--0.933 3.499 -1.095 3.44 -1.22 3.323 c
--1.338 3.205 -1.396 3.057 -1.396 2.881 c
--2.043 2.881 l
--2.043 3.076 -1.984 3.267 -1.866 3.454 c
--1.741 3.639 -1.58 3.786 -1.382 3.896 c
--1.176 4.002 -0.948 4.057 -0.691 4.057 c
--0.291 4.057 0.015 3.954 0.22 3.749 c
-0.434 3.543 0.548 3.248 0.559 2.866 c
-0.559 0.853 l
-0.559 0.548 0.595 0.283 0.676 0.059 c
-0.676 0 l
-h
--0.867 0.515 m
--0.702 0.515 -0.551 0.559 -0.411 0.647 c
--0.264 0.736 -0.158 0.846 -0.088 0.985 c
--0.088 1.926 l
--0.455 1.926 l
--0.771 1.926 -1.014 1.856 -1.191 1.72 c
--1.367 1.592 -1.455 1.405 -1.455 1.162 c
--1.455 0.934 -1.411 0.769 -1.323 0.661 c
--1.234 0.563 -1.084 0.515 -0.867 0.515 c
-2.176 3.984 m
-2.19 3.543 l
-2.444 3.884 2.767 4.057 3.16 4.057 c
-3.866 4.057 4.222 3.587 4.233 2.646 c
-4.233 0 l
-3.587 0 l
-3.587 2.617 l
-3.587 2.929 3.532 3.15 3.425 3.278 c
-3.314 3.404 3.16 3.469 2.955 3.469 c
-2.797 3.469 2.649 3.414 2.514 3.308 c
-2.385 3.198 2.282 3.061 2.205 2.896 c
-2.205 0 l
-1.558 0 l
-1.558 3.984 l
-h
-6.791 2.176 m
-6.791 2.753 6.927 3.209 7.202 3.543 c
-7.485 3.884 7.857 4.057 8.32 4.057 c
-8.779 4.057 9.147 3.888 9.422 3.558 c
-9.705 3.234 9.852 2.786 9.863 2.22 c
-9.863 1.794 l
-9.863 1.224 9.72 0.769 9.437 0.426 c
-9.161 0.092 8.794 -0.073 8.334 -0.073 c
-7.871 -0.073 7.501 0.088 7.217 0.412 c
-6.942 0.742 6.799 1.183 6.791 1.735 c
-h
-7.437 1.794 m
-7.437 1.389 7.515 1.073 7.673 0.838 c
-7.838 0.603 8.058 0.485 8.334 0.485 c
-8.9 0.485 9.194 0.897 9.216 1.72 c
-9.216 2.176 l
-9.216 2.577 9.132 2.896 8.966 3.131 c
-8.808 3.373 8.592 3.499 8.32 3.499 c
-8.056 3.499 7.838 3.373 7.673 3.131 c
-7.515 2.896 7.437 2.577 7.437 2.176 c
-h
-13.582 1.794 m
-13.582 1.176 13.468 0.709 13.244 0.397 c
-13.027 0.081 12.704 -0.073 12.274 -0.073 c
-11.851 -0.073 11.539 0.107 11.333 0.47 c
-11.304 0 l
-10.701 0 l
-10.701 5.644 l
-11.348 5.644 l
-11.348 3.543 l
-11.561 3.884 11.869 4.057 12.274 4.057 c
-12.704 4.057 13.027 3.899 13.244 3.587 c
-13.468 3.282 13.582 2.816 13.582 2.19 c
-h
-12.935 2.176 m
-12.935 2.646 12.866 2.977 12.729 3.175 c
-12.601 3.37 12.391 3.469 12.097 3.469 c
-11.763 3.469 11.513 3.286 11.348 2.926 c
-11.348 1.044 l
-11.513 0.68 11.767 0.5 12.112 0.5 c
-12.406 0.5 12.615 0.603 12.744 0.809 c
-12.869 1.014 12.935 1.33 12.935 1.764 c
-h
-15.081 3.984 m
-15.081 -0.5 l
-15.081 -1.234 14.791 -1.602 14.214 -1.602 c
-14.074 -1.602 13.953 -1.579 13.847 -1.543 c
-13.847 -0.999 l
-13.916 -1.018 14.001 -1.028 14.111 -1.028 c
-14.217 -1.028 14.295 -0.985 14.346 -0.897 c
-14.406 -0.816 14.435 -0.675 14.435 -0.47 c
-14.435 3.984 l
-h
-15.111 5.027 m
-15.111 4.917 15.081 4.825 15.023 4.748 c
-14.963 4.678 14.868 4.645 14.743 4.645 c
-14.626 4.645 14.53 4.678 14.464 4.748 c
-14.406 4.825 14.375 4.917 14.375 5.027 c
-14.375 5.145 14.406 5.237 14.464 5.307 c
-14.53 5.384 14.626 5.424 14.743 5.424 c
-14.868 5.424 14.963 5.384 15.023 5.307 c
-15.081 5.226 15.111 5.134 15.111 5.027 c
-17.536 -0.073 m
-17.036 -0.073 16.654 0.073 16.39 0.368 c
-16.125 0.661 15.993 1.095 15.993 1.676 c
-15.993 2.147 l
-15.993 2.741 16.118 3.209 16.375 3.543 c
-16.64 3.884 16.999 4.057 17.463 4.057 c
-17.922 4.057 18.264 3.903 18.491 3.601 c
-18.726 3.308 18.848 2.845 18.859 2.22 c
-18.859 1.794 l
-16.64 1.794 l
-16.64 1.706 l
-16.64 1.272 16.717 0.96 16.875 0.765 c
-17.04 0.578 17.271 0.485 17.565 0.485 c
-17.76 0.485 17.933 0.518 18.08 0.588 c
-18.227 0.665 18.363 0.783 18.491 0.941 c
-18.83 0.53 l
-18.543 0.125 18.113 -0.073 17.536 -0.073 c
-17.463 3.499 m
-17.187 3.499 16.985 3.404 16.86 3.219 c
-16.731 3.032 16.658 2.741 16.64 2.352 c
-18.212 2.352 l
-18.212 2.44 l
-18.19 2.822 18.124 3.091 18.007 3.248 c
-17.889 3.414 17.705 3.499 17.463 3.499 c
-21.02 0.485 m
-21.232 0.485 21.406 0.548 21.534 0.676 c
-21.67 0.813 21.743 1.004 21.755 1.249 c
-22.372 1.249 l
-22.35 0.867 22.214 0.548 21.961 0.294 c
-21.703 0.048 21.391 -0.073 21.02 -0.073 c
-20.527 -0.073 20.153 0.077 19.888 0.383 c
-19.63 0.695 19.505 1.162 19.505 1.779 c
-19.505 2.22 l
-19.505 2.816 19.63 3.271 19.888 3.587 c
-20.153 3.899 20.527 4.057 21.02 4.057 c
-21.421 4.057 21.74 3.925 21.975 3.66 c
-22.217 3.404 22.35 3.057 22.372 2.617 c
-21.755 2.617 l
-21.733 2.911 21.659 3.131 21.534 3.278 c
-21.417 3.425 21.244 3.499 21.02 3.499 c
-20.725 3.499 20.509 3.4 20.373 3.205 c
-20.233 3.017 20.16 2.708 20.153 2.278 c
-20.153 1.764 l
-20.153 1.294 20.218 0.96 20.359 0.765 c
-20.505 0.578 20.725 0.485 21.02 0.485 c
-23.974 4.939 m
-23.974 3.984 l
-24.577 3.984 l
-24.577 3.454 l
-23.974 3.454 l
-23.974 0.985 l
-23.974 0.827 23.996 0.709 24.048 0.632 c
-24.106 0.551 24.195 0.515 24.312 0.515 c
-24.401 0.515 24.488 0.53 24.577 0.559 c
-24.577 0 l
-24.43 -0.047 24.276 -0.073 24.121 -0.073 c
-23.864 -0.073 23.669 0.019 23.534 0.206 c
-23.393 0.389 23.328 0.651 23.328 0.985 c
-23.328 3.454 l
-22.725 3.454 l
-22.725 3.984 l
-23.328 3.984 l
-23.328 4.939 l
-h
-f
-Q
-0 0 0 0 k
-q 1 0 0 1 301.3602 186.6493 cm
-0 0 m
-0 -0.646 -0.103 -1.132 -0.309 -1.455 c
--0.515 -1.778 -0.837 -1.94 -1.278 -1.94 c
--1.624 -1.94 -1.903 -1.786 -2.117 -1.469 c
--2.146 -1.866 l
--3.102 -1.866 l
--3.102 3.778 l
--2.057 3.778 l
--2.057 1.794 l
--1.863 2.058 -1.61 2.19 -1.294 2.19 c
--0.852 2.19 -0.529 2.029 -0.323 1.706 c
--0.118 1.382 -0.01 0.912 0 0.294 c
-h
--1.043 0.25 m
--1.043 0.669 -1.084 0.948 -1.161 1.088 c
--1.242 1.235 -1.381 1.309 -1.587 1.309 c
--1.804 1.309 -1.962 1.21 -2.057 1.014 c
--2.057 -0.793 l
--1.969 -0.981 -1.808 -1.072 -1.573 -1.072 c
--1.378 -1.072 -1.242 -1.01 -1.161 -0.881 c
--1.084 -0.756 -1.043 -0.5 -1.043 -0.118 c
-h
-2.587 1.103 m
-2.249 1.132 l
-1.962 1.132 1.771 1.008 1.676 0.765 c
-1.676 -1.866 l
-0.632 -1.866 l
-0.632 2.117 l
-1.602 2.117 l
-1.632 1.676 l
-1.798 2.018 2.029 2.19 2.323 2.19 c
-2.44 2.19 2.532 2.168 2.602 2.132 c
-h
-4.91 -1.866 m
-4.881 -1.808 4.851 -1.705 4.821 -1.558 c
-4.634 -1.815 4.385 -1.94 4.072 -1.94 c
-3.738 -1.94 3.458 -1.834 3.234 -1.616 c
-3.017 -1.392 2.911 -1.103 2.911 -0.75 c
-2.911 -0.338 3.043 -0.022 3.308 0.206 c
-3.572 0.441 3.954 0.559 4.454 0.559 c
-4.777 0.559 l
-4.777 0.882 l
-4.777 1.058 4.74 1.18 4.675 1.249 c
-4.616 1.327 4.528 1.367 4.41 1.367 c
-4.152 1.367 4.028 1.213 4.028 0.912 c
-2.984 0.912 l
-2.984 1.283 3.12 1.588 3.396 1.823 c
-3.668 2.066 4.017 2.19 4.439 2.19 c
-4.881 2.19 5.218 2.072 5.453 1.837 c
-5.696 1.61 5.821 1.287 5.821 0.867 c
-5.821 -0.999 l
-5.821 -1.344 5.869 -1.612 5.968 -1.808 c
-5.968 -1.866 l
-h
-4.307 -1.117 m
-4.414 -1.117 4.505 -1.099 4.586 -1.058 c
-4.675 -1.01 4.737 -0.951 4.777 -0.881 c
-4.777 -0.058 l
-4.528 -0.058 l
-4.351 -0.058 4.208 -0.118 4.102 -0.235 c
-4.002 -0.345 3.954 -0.492 3.954 -0.675 c
-3.954 -0.97 4.072 -1.117 4.307 -1.117 c
-7.526 2.117 m
-7.556 1.72 l
-7.791 2.033 8.092 2.19 8.467 2.19 c
-9.151 2.19 9.503 1.709 9.525 0.75 c
-9.525 -1.866 l
-8.482 -1.866 l
-8.482 0.676 l
-8.482 0.9 8.445 1.062 8.379 1.162 c
-8.309 1.257 8.191 1.309 8.026 1.309 c
-7.838 1.309 7.691 1.213 7.585 1.029 c
-7.585 -1.866 l
-6.541 -1.866 l
-6.541 2.117 l
-h
-11.715 -1.072 m
-12.009 -1.072 12.16 -0.878 12.171 -0.484 c
-13.141 -0.484 l
-13.141 -0.918 13.009 -1.271 12.744 -1.543 c
-12.48 -1.808 12.142 -1.94 11.73 -1.94 c
-11.219 -1.94 10.826 -1.786 10.554 -1.469 c
-10.29 -1.146 10.15 -0.675 10.143 -0.058 c
-10.143 0.265 l
-10.143 0.89 10.275 1.367 10.539 1.691 c
-10.812 2.022 11.208 2.19 11.73 2.19 c
-12.16 2.19 12.501 2.051 12.759 1.779 c
-13.012 1.503 13.141 1.121 13.141 0.632 c
-12.171 0.632 l
-12.171 0.846 12.131 1.014 12.054 1.132 c
-11.984 1.257 11.866 1.324 11.701 1.324 c
-11.524 1.324 11.396 1.257 11.319 1.132 c
-11.238 1.004 11.194 0.754 11.186 0.383 c
-11.186 -0.029 l
-11.186 -0.353 11.201 -0.58 11.231 -0.706 c
-11.267 -0.833 11.322 -0.926 11.392 -0.985 c
-11.469 -1.043 11.576 -1.072 11.715 -1.072 c
-14.758 1.764 m
-14.982 2.047 15.258 2.19 15.581 2.19 c
-15.942 2.19 16.217 2.062 16.405 1.808 c
-16.599 1.551 16.698 1.169 16.698 0.661 c
-16.698 -1.866 l
-15.655 -1.866 l
-15.655 0.647 l
-15.655 0.882 15.614 1.048 15.537 1.147 c
-15.468 1.253 15.354 1.309 15.199 1.309 c
-15.011 1.309 14.865 1.224 14.758 1.058 c
-14.758 -1.866 l
-13.714 -1.866 l
-13.714 3.778 l
-14.758 3.778 l
-h
-f
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 331.7103 184.7829 cm
-0 0 m
--0.04 0.088 -0.066 0.235 -0.073 0.441 c
--0.309 0.096 -0.603 -0.073 -0.956 -0.073 c
--1.319 -0.073 -1.602 0.022 -1.808 0.22 c
--2.007 0.426 -2.102 0.713 -2.102 1.087 c
--2.102 1.488 -1.966 1.808 -1.691 2.043 c
--1.419 2.286 -1.043 2.41 -0.573 2.41 c
--0.088 2.41 l
--0.088 2.837 l
--0.088 3.072 -0.143 3.237 -0.25 3.337 c
--0.36 3.443 -0.522 3.499 -0.735 3.499 c
--0.933 3.499 -1.095 3.439 -1.22 3.322 c
--1.338 3.204 -1.396 3.057 -1.396 2.881 c
--2.043 2.881 l
--2.043 3.076 -1.984 3.267 -1.866 3.454 c
--1.741 3.638 -1.58 3.785 -1.382 3.896 c
--1.176 4.002 -0.948 4.056 -0.691 4.056 c
--0.291 4.056 0.015 3.954 0.22 3.748 c
-0.434 3.543 0.548 3.248 0.559 2.866 c
-0.559 0.852 l
-0.559 0.548 0.595 0.283 0.676 0.058 c
-0.676 0 l
-h
--0.867 0.515 m
--0.702 0.515 -0.551 0.559 -0.411 0.646 c
--0.264 0.735 -0.158 0.845 -0.088 0.985 c
--0.088 1.926 l
--0.455 1.926 l
--0.771 1.926 -1.014 1.856 -1.191 1.72 c
--1.367 1.591 -1.455 1.404 -1.455 1.161 c
--1.455 0.933 -1.411 0.768 -1.323 0.661 c
--1.234 0.563 -1.084 0.515 -0.867 0.515 c
-4.924 3.366 m
-4.836 3.385 4.737 3.395 4.63 3.395 c
-4.295 3.395 4.06 3.212 3.925 2.851 c
-3.925 0 l
-3.278 0 l
-3.278 3.983 l
-3.91 3.983 l
-3.925 3.572 l
-4.101 3.896 4.343 4.056 4.659 4.056 c
-4.766 4.056 4.854 4.035 4.924 3.998 c
-h
-6.923 -0.073 m
-6.423 -0.073 6.041 0.073 5.777 0.368 c
-5.512 0.661 5.38 1.095 5.38 1.675 c
-5.38 2.146 l
-5.38 2.741 5.505 3.208 5.762 3.543 c
-6.026 3.884 6.387 4.056 6.85 4.056 c
-7.31 4.056 7.651 3.902 7.879 3.601 c
-8.114 3.308 8.235 2.844 8.247 2.219 c
-8.247 1.793 l
-6.026 1.793 l
-6.026 1.705 l
-6.026 1.272 6.104 0.96 6.262 0.764 c
-6.427 0.577 6.659 0.485 6.953 0.485 c
-7.148 0.485 7.32 0.518 7.468 0.588 c
-7.614 0.665 7.75 0.783 7.879 0.941 c
-8.216 0.529 l
-7.93 0.125 7.501 -0.073 6.923 -0.073 c
-6.85 3.499 m
-6.574 3.499 6.372 3.403 6.247 3.219 c
-6.119 3.032 6.045 2.741 6.026 2.352 c
-7.599 2.352 l
-7.599 2.44 l
-7.578 2.822 7.511 3.09 7.393 3.248 c
-7.276 3.414 7.092 3.499 6.85 3.499 c
-9.319 0 m
-9.319 3.454 l
-8.79 3.454 l
-8.79 3.983 l
-9.319 3.983 l
-9.319 4.439 l
-9.319 4.84 9.415 5.152 9.613 5.38 c
-9.819 5.604 10.098 5.718 10.451 5.718 c
-10.587 5.718 10.72 5.696 10.848 5.66 c
-10.819 5.115 l
-10.72 5.134 10.62 5.145 10.525 5.145 c
-10.15 5.145 9.966 4.88 9.966 4.351 c
-9.966 3.983 l
-10.643 3.983 l
-10.643 3.454 l
-9.966 3.454 l
-9.966 0 l
-h
-12.744 -0.073 m
-12.245 -0.073 11.862 0.073 11.597 0.368 c
-11.333 0.661 11.2 1.095 11.2 1.675 c
-11.2 2.146 l
-11.2 2.741 11.326 3.208 11.583 3.543 c
-11.848 3.884 12.208 4.056 12.671 4.056 c
-13.13 4.056 13.471 3.902 13.7 3.601 c
-13.935 3.308 14.056 2.844 14.067 2.219 c
-14.067 1.793 l
-11.848 1.793 l
-11.848 1.705 l
-11.848 1.272 11.925 0.96 12.083 0.764 c
-12.248 0.577 12.48 0.485 12.773 0.485 c
-12.968 0.485 13.141 0.518 13.288 0.588 c
-13.435 0.665 13.571 0.783 13.7 0.941 c
-14.038 0.529 l
-13.751 0.125 13.321 -0.073 12.744 -0.073 c
-12.671 3.499 m
-12.395 3.499 12.193 3.403 12.068 3.219 c
-11.939 3.032 11.866 2.741 11.848 2.352 c
-13.421 2.352 l
-13.421 2.44 l
-13.398 2.822 13.332 3.09 13.215 3.248 c
-13.097 3.414 12.914 3.499 12.671 3.499 c
-16.492 3.366 m
-16.405 3.385 16.305 3.395 16.199 3.395 c
-15.864 3.395 15.629 3.212 15.493 2.851 c
-15.493 0 l
-14.846 0 l
-14.846 3.983 l
-15.478 3.983 l
-15.493 3.572 l
-15.669 3.896 15.912 4.056 16.228 4.056 c
-16.334 4.056 16.422 4.035 16.492 3.998 c
-h
-18.491 -0.073 m
-17.992 -0.073 17.61 0.073 17.345 0.368 c
-17.08 0.661 16.948 1.095 16.948 1.675 c
-16.948 2.146 l
-16.948 2.741 17.073 3.208 17.33 3.543 c
-17.595 3.884 17.955 4.056 18.418 4.056 c
-18.877 4.056 19.219 3.902 19.447 3.601 c
-19.682 3.308 19.803 2.844 19.815 2.219 c
-19.815 1.793 l
-17.595 1.793 l
-17.595 1.705 l
-17.595 1.272 17.672 0.96 17.83 0.764 c
-17.995 0.577 18.227 0.485 18.521 0.485 c
-18.716 0.485 18.888 0.518 19.035 0.588 c
-19.183 0.665 19.318 0.783 19.447 0.941 c
-19.785 0.529 l
-19.499 0.125 19.069 -0.073 18.491 -0.073 c
-18.418 3.499 m
-18.142 3.499 17.94 3.403 17.816 3.219 c
-17.687 3.032 17.613 2.741 17.595 2.352 c
-19.168 2.352 l
-19.168 2.44 l
-19.146 2.822 19.079 3.09 18.962 3.248 c
-18.844 3.414 18.66 3.499 18.418 3.499 c
-21.211 3.983 m
-21.226 3.543 l
-21.479 3.884 21.803 4.056 22.196 4.056 c
-22.901 4.056 23.258 3.586 23.268 2.645 c
-23.268 0 l
-22.622 0 l
-22.622 2.616 l
-22.622 2.929 22.566 3.15 22.46 3.278 c
-22.35 3.403 22.196 3.469 21.99 3.469 c
-21.832 3.469 21.685 3.414 21.549 3.308 c
-21.421 3.197 21.317 3.061 21.24 2.896 c
-21.24 0 l
-20.594 0 l
-20.594 3.983 l
-h
-25.62 0.485 m
-25.834 0.485 26.007 0.548 26.135 0.676 c
-26.271 0.812 26.344 1.003 26.356 1.249 c
-26.973 1.249 l
-26.951 0.867 26.815 0.548 26.561 0.294 c
-26.304 0.048 25.992 -0.073 25.62 -0.073 c
-25.128 -0.073 24.754 0.077 24.488 0.382 c
-24.232 0.694 24.106 1.161 24.106 1.779 c
-24.106 2.219 l
-24.106 2.815 24.232 3.271 24.488 3.586 c
-24.754 3.899 25.128 4.056 25.62 4.056 c
-26.021 4.056 26.341 3.925 26.576 3.66 c
-26.819 3.403 26.951 3.057 26.973 2.616 c
-26.356 2.616 l
-26.333 2.911 26.26 3.131 26.135 3.278 c
-26.017 3.425 25.845 3.499 25.62 3.499 c
-25.327 3.499 25.109 3.399 24.974 3.204 c
-24.835 3.017 24.76 2.708 24.754 2.278 c
-24.754 1.764 l
-24.754 1.294 24.82 0.96 24.959 0.764 c
-25.106 0.577 25.327 0.485 25.62 0.485 c
-29.148 -0.073 m
-28.648 -0.073 28.266 0.073 28.002 0.368 c
-27.737 0.661 27.605 1.095 27.605 1.675 c
-27.605 2.146 l
-27.605 2.741 27.73 3.208 27.987 3.543 c
-28.251 3.884 28.612 4.056 29.074 4.056 c
-29.534 4.056 29.876 3.902 30.104 3.601 c
-30.339 3.308 30.46 2.844 30.471 2.219 c
-30.471 1.793 l
-28.251 1.793 l
-28.251 1.705 l
-28.251 1.272 28.328 0.96 28.487 0.764 c
-28.652 0.577 28.884 0.485 29.178 0.485 c
-29.373 0.485 29.545 0.518 29.693 0.588 c
-29.839 0.665 29.975 0.783 30.104 0.941 c
-30.441 0.529 l
-30.155 0.125 29.725 -0.073 29.148 -0.073 c
-29.074 3.499 m
-28.799 3.499 28.598 3.403 28.472 3.219 c
-28.344 3.032 28.27 2.741 28.251 2.352 c
-29.824 2.352 l
-29.824 2.44 l
-29.803 2.822 29.736 3.09 29.618 3.248 c
-29.501 3.414 29.317 3.499 29.074 3.499 c
-33.822 4.939 m
-33.822 3.983 l
-34.425 3.983 l
-34.425 3.454 l
-33.822 3.454 l
-33.822 0.985 l
-33.822 0.827 33.845 0.709 33.896 0.632 c
-33.955 0.551 34.043 0.515 34.161 0.515 c
-34.249 0.515 34.337 0.529 34.425 0.559 c
-34.425 0 l
-34.279 -0.048 34.123 -0.073 33.969 -0.073 c
-33.712 -0.073 33.518 0.019 33.381 0.206 c
-33.242 0.389 33.176 0.65 33.176 0.985 c
-33.176 3.454 l
-32.573 3.454 l
-32.573 3.983 l
-33.176 3.983 l
-33.176 4.939 l
-h
-34.984 2.175 m
-34.984 2.753 35.12 3.208 35.395 3.543 c
-35.678 3.884 36.049 4.056 36.513 4.056 c
-36.972 4.056 37.339 3.888 37.615 3.557 c
-37.898 3.233 38.044 2.786 38.056 2.219 c
-38.056 1.793 l
-38.056 1.224 37.913 0.768 37.63 0.426 c
-37.354 0.092 36.986 -0.073 36.527 -0.073 c
-36.064 -0.073 35.693 0.088 35.41 0.411 c
-35.135 0.742 34.991 1.183 34.984 1.735 c
-h
-35.63 1.793 m
-35.63 1.389 35.708 1.073 35.866 0.838 c
-36.031 0.603 36.251 0.485 36.527 0.485 c
-37.093 0.485 37.387 0.897 37.409 1.72 c
-37.409 2.175 l
-37.409 2.576 37.325 2.896 37.159 3.131 c
-37.001 3.373 36.785 3.499 36.513 3.499 c
-36.248 3.499 36.031 3.373 35.866 3.131 c
-35.708 2.896 35.63 2.576 35.63 2.175 c
-h
-42.657 0 m
-42.616 0.088 42.59 0.235 42.583 0.441 c
-42.348 0.096 42.054 -0.073 41.701 -0.073 c
-41.337 -0.073 41.055 0.022 40.849 0.22 c
-40.65 0.426 40.554 0.713 40.554 1.087 c
-40.554 1.488 40.691 1.808 40.966 2.043 c
-41.238 2.286 41.613 2.41 42.083 2.41 c
-42.568 2.41 l
-42.568 2.837 l
-42.568 3.072 42.513 3.237 42.407 3.337 c
-42.297 3.443 42.135 3.499 41.922 3.499 c
-41.724 3.499 41.562 3.439 41.437 3.322 c
-41.319 3.204 41.26 3.057 41.26 2.881 c
-40.614 2.881 l
-40.614 3.076 40.672 3.267 40.79 3.454 c
-40.915 3.638 41.076 3.785 41.275 3.896 c
-41.481 4.002 41.709 4.056 41.965 4.056 c
-42.366 4.056 42.671 3.954 42.877 3.748 c
-43.091 3.543 43.204 3.248 43.216 2.866 c
-43.216 0.852 l
-43.216 0.548 43.252 0.283 43.333 0.058 c
-43.333 0 l
-h
-41.79 0.515 m
-41.955 0.515 42.106 0.559 42.245 0.646 c
-42.393 0.735 42.499 0.845 42.568 0.985 c
-42.568 1.926 l
-42.201 1.926 l
-41.885 1.926 41.643 1.856 41.466 1.72 c
-41.29 1.591 41.202 1.404 41.202 1.161 c
-41.202 0.933 41.246 0.768 41.334 0.661 c
-41.422 0.563 41.572 0.515 41.79 0.515 c
-47.316 0.485 m
-47.529 0.485 47.702 0.548 47.831 0.676 c
-47.966 0.812 48.04 1.003 48.051 1.249 c
-48.668 1.249 l
-48.647 0.867 48.51 0.548 48.257 0.294 c
-47.999 0.048 47.687 -0.073 47.316 -0.073 c
-46.823 -0.073 46.449 0.077 46.185 0.382 c
-45.927 0.694 45.803 1.161 45.803 1.779 c
-45.803 2.219 l
-45.803 2.815 45.927 3.271 46.185 3.586 c
-46.449 3.899 46.823 4.056 47.316 4.056 c
-47.717 4.056 48.037 3.925 48.272 3.66 c
-48.514 3.403 48.647 3.057 48.668 2.616 c
-48.051 2.616 l
-48.029 2.911 47.956 3.131 47.831 3.278 c
-47.713 3.425 47.54 3.499 47.316 3.499 c
-47.022 3.499 46.806 3.399 46.669 3.204 c
-46.53 3.017 46.457 2.708 46.449 2.278 c
-46.449 1.764 l
-46.449 1.294 46.515 0.96 46.655 0.764 c
-46.802 0.577 47.022 0.485 47.316 0.485 c
-49.286 2.175 m
-49.286 2.753 49.422 3.208 49.697 3.543 c
-49.981 3.884 50.351 4.056 50.815 4.056 c
-51.274 4.056 51.642 3.888 51.918 3.557 c
-52.2 3.233 52.347 2.786 52.358 2.219 c
-52.358 1.793 l
-52.358 1.224 52.215 0.768 51.932 0.426 c
-51.656 0.092 51.289 -0.073 50.829 -0.073 c
-50.366 -0.073 49.996 0.088 49.712 0.411 c
-49.437 0.742 49.294 1.183 49.286 1.735 c
-h
-49.933 1.793 m
-49.933 1.389 50.01 1.073 50.168 0.838 c
-50.333 0.603 50.553 0.485 50.829 0.485 c
-51.395 0.485 51.689 0.897 51.711 1.72 c
-51.711 2.175 l
-51.711 2.576 51.627 2.896 51.461 3.131 c
-51.303 3.373 51.087 3.499 50.815 3.499 c
-50.55 3.499 50.333 3.373 50.168 3.131 c
-50.01 2.896 49.933 2.576 49.933 2.175 c
-h
-53.813 3.983 m
-53.828 3.616 l
-54.071 3.91 54.39 4.056 54.783 4.056 c
-55.224 4.056 55.533 3.859 55.71 3.469 c
-55.963 3.859 56.312 4.056 56.753 4.056 c
-57.488 4.056 57.863 3.594 57.885 2.675 c
-57.885 0 l
-57.238 0 l
-57.238 2.616 l
-57.238 2.911 57.183 3.123 57.077 3.263 c
-56.977 3.399 56.805 3.469 56.562 3.469 c
-56.363 3.469 56.202 3.389 56.077 3.233 c
-55.959 3.087 55.889 2.896 55.871 2.66 c
-55.871 0 l
-55.21 0 l
-55.21 2.645 l
-55.21 3.194 54.989 3.469 54.548 3.469 c
-54.214 3.469 53.979 3.308 53.842 2.984 c
-53.842 0 l
-53.196 0 l
-53.196 3.983 l
-h
-59.473 3.983 m
-59.487 3.616 l
-59.729 3.91 60.049 4.056 60.443 4.056 c
-60.884 4.056 61.192 3.859 61.368 3.469 c
-61.622 3.859 61.971 4.056 62.412 4.056 c
-63.147 4.056 63.522 3.594 63.544 2.675 c
-63.544 0 l
-62.897 0 l
-62.897 2.616 l
-62.897 2.911 62.842 3.123 62.736 3.263 c
-62.636 3.399 62.464 3.469 62.221 3.469 c
-62.023 3.469 61.861 3.389 61.736 3.233 c
-61.618 3.087 61.549 2.896 61.53 2.66 c
-61.53 0 l
-60.869 0 l
-60.869 2.645 l
-60.869 3.194 60.649 3.469 60.207 3.469 c
-59.873 3.469 59.638 3.308 59.502 2.984 c
-59.502 0 l
-58.855 0 l
-58.855 3.983 l
-h
-65.22 0 -0.646 3.983 re
-65.264 5.027 m
-65.264 4.917 65.235 4.825 65.175 4.748 c
-65.117 4.678 65.021 4.644 64.896 4.644 c
-64.778 4.644 64.683 4.678 64.617 4.748 c
-64.558 4.825 64.529 4.917 64.529 5.027 c
-64.529 5.145 64.558 5.236 64.617 5.307 c
-64.683 5.384 64.778 5.424 64.896 5.424 c
-65.021 5.424 65.117 5.384 65.175 5.307 c
-65.235 5.226 65.264 5.134 65.264 5.027 c
-67.087 4.939 m
-67.087 3.983 l
-67.689 3.983 l
-67.689 3.454 l
-67.087 3.454 l
-67.087 0.985 l
-67.087 0.827 67.109 0.709 67.16 0.632 c
-67.219 0.551 67.307 0.515 67.425 0.515 c
-67.513 0.515 67.601 0.529 67.689 0.559 c
-67.689 0 l
-67.542 -0.048 67.388 -0.073 67.234 -0.073 c
-66.976 -0.073 66.781 0.019 66.646 0.206 c
-66.506 0.389 66.44 0.65 66.44 0.985 c
-66.44 3.454 l
-65.837 3.454 l
-65.837 3.983 l
-66.44 3.983 l
-66.44 4.939 l
-h
-68.498 3.175 m
-68.498 3.293 68.531 3.389 68.601 3.469 c
-68.666 3.547 68.77 3.586 68.909 3.586 c
-69.056 3.586 69.163 3.547 69.233 3.469 c
-69.31 3.389 69.35 3.293 69.35 3.175 c
-69.35 3.065 69.31 2.973 69.233 2.896 c
-69.163 2.815 69.056 2.778 68.909 2.778 c
-68.77 2.778 68.666 2.815 68.601 2.896 c
-68.531 2.973 68.498 3.065 68.498 3.175 c
-68.468 -1.073 m
-68.071 -0.808 l
-68.306 -0.485 68.427 -0.151 68.439 0.191 c
-68.439 0.808 l
-69.1 0.808 l
-69.1 0.279 l
-69.1 0.022 69.034 -0.224 68.909 -0.47 c
-68.792 -0.713 68.645 -0.915 68.468 -1.073 c
-73.084 0.485 m
-73.297 0.485 73.47 0.548 73.598 0.676 c
-73.734 0.812 73.808 1.003 73.819 1.249 c
-74.436 1.249 l
-74.414 0.867 74.278 0.548 74.025 0.294 c
-73.767 0.048 73.455 -0.073 73.084 -0.073 c
-72.591 -0.073 72.217 0.077 71.952 0.382 c
-71.695 0.694 71.57 1.161 71.57 1.779 c
-71.57 2.219 l
-71.57 2.815 71.695 3.271 71.952 3.586 c
-72.217 3.899 72.591 4.056 73.084 4.056 c
-73.484 4.056 73.804 3.925 74.039 3.66 c
-74.282 3.403 74.414 3.057 74.436 2.616 c
-73.819 2.616 l
-73.796 2.911 73.723 3.131 73.598 3.278 c
-73.48 3.425 73.308 3.499 73.084 3.499 c
-72.79 3.499 72.573 3.399 72.437 3.204 c
-72.298 3.017 72.223 2.708 72.217 2.278 c
-72.217 1.764 l
-72.217 1.294 72.283 0.96 72.422 0.764 c
-72.57 0.577 72.79 0.485 73.084 0.485 c
-77.229 0 m
-77.189 0.088 77.162 0.235 77.156 0.441 c
-76.92 0.096 76.626 -0.073 76.273 -0.073 c
-75.909 -0.073 75.627 0.022 75.421 0.22 c
-75.222 0.426 75.127 0.713 75.127 1.087 c
-75.127 1.488 75.263 1.808 75.539 2.043 c
-75.81 2.286 76.185 2.41 76.655 2.41 c
-77.141 2.41 l
-77.141 2.837 l
-77.141 3.072 77.085 3.237 76.979 3.337 c
-76.869 3.443 76.707 3.499 76.494 3.499 c
-76.296 3.499 76.134 3.439 76.009 3.322 c
-75.891 3.204 75.832 3.057 75.832 2.881 c
-75.186 2.881 l
-75.186 3.076 75.244 3.267 75.362 3.454 c
-75.487 3.638 75.649 3.785 75.847 3.896 c
-76.053 4.002 76.281 4.056 76.538 4.056 c
-76.938 4.056 77.243 3.954 77.449 3.748 c
-77.663 3.543 77.777 3.248 77.788 2.866 c
-77.788 0.852 l
-77.788 0.548 77.825 0.283 77.905 0.058 c
-77.905 0 l
-h
-76.362 0.515 m
-76.527 0.515 76.678 0.559 76.817 0.646 c
-76.965 0.735 77.071 0.845 77.141 0.985 c
-77.141 1.926 l
-76.773 1.926 l
-76.457 1.926 76.215 1.856 76.038 1.72 c
-75.862 1.591 75.774 1.404 75.774 1.161 c
-75.774 0.933 75.818 0.768 75.906 0.661 c
-75.994 0.563 76.144 0.515 76.362 0.515 c
-79.404 3.983 m
-79.419 3.543 l
-79.672 3.884 79.996 4.056 80.389 4.056 c
-81.095 4.056 81.451 3.586 81.462 2.645 c
-81.462 0 l
-80.815 0 l
-80.815 2.616 l
-80.815 2.929 80.761 3.15 80.653 3.278 c
-80.543 3.403 80.389 3.469 80.183 3.469 c
-80.025 3.469 79.878 3.414 79.743 3.308 c
-79.614 3.197 79.511 3.061 79.434 2.896 c
-79.434 0 l
-78.787 0 l
-78.787 3.983 l
-h
-84.799 3.572 m
-85.052 3.896 85.372 4.056 85.754 4.056 c
-86.46 4.056 86.816 3.586 86.827 2.645 c
-86.827 0 l
-86.18 0 l
-86.18 2.616 l
-86.18 2.929 86.126 3.15 86.019 3.278 c
-85.908 3.403 85.754 3.469 85.549 3.469 c
-85.391 3.469 85.243 3.414 85.108 3.308 c
-84.979 3.197 84.876 3.061 84.799 2.896 c
-84.799 0 l
-84.152 0 l
-84.152 5.644 l
-84.799 5.644 l
-h
-89.826 0 m
-89.785 0.088 89.76 0.235 89.752 0.441 c
-89.517 0.096 89.223 -0.073 88.871 -0.073 c
-88.507 -0.073 88.223 0.022 88.018 0.22 c
-87.82 0.426 87.724 0.713 87.724 1.087 c
-87.724 1.488 87.86 1.808 88.136 2.043 c
-88.408 2.286 88.782 2.41 89.253 2.41 c
-89.738 2.41 l
-89.738 2.837 l
-89.738 3.072 89.683 3.237 89.576 3.337 c
-89.466 3.443 89.304 3.499 89.091 3.499 c
-88.892 3.499 88.731 3.439 88.606 3.322 c
-88.489 3.204 88.43 3.057 88.43 2.881 c
-87.783 2.881 l
-87.783 3.076 87.842 3.267 87.959 3.454 c
-88.084 3.638 88.246 3.785 88.445 3.896 c
-88.65 4.002 88.878 4.056 89.135 4.056 c
-89.536 4.056 89.841 3.954 90.047 3.748 c
-90.259 3.543 90.373 3.248 90.384 2.866 c
-90.384 0.852 l
-90.384 0.548 90.421 0.283 90.502 0.058 c
-90.502 0 l
-h
-88.959 0.515 m
-89.124 0.515 89.275 0.559 89.414 0.646 c
-89.561 0.735 89.668 0.845 89.738 0.985 c
-89.738 1.926 l
-89.37 1.926 l
-89.054 1.926 88.811 1.856 88.636 1.72 c
-88.459 1.591 88.371 1.404 88.371 1.161 c
-88.371 0.933 88.414 0.768 88.503 0.661 c
-88.591 0.563 88.742 0.515 88.959 0.515 c
-92.457 0.985 m
-93.207 3.983 l
-93.868 3.983 l
-92.692 0 l
-92.207 0 l
-91.017 3.983 l
-91.678 3.983 l
-h
-95.926 -0.073 m
-95.427 -0.073 95.044 0.073 94.779 0.368 c
-94.515 0.661 94.383 1.095 94.383 1.675 c
-94.383 2.146 l
-94.383 2.741 94.508 3.208 94.764 3.543 c
-95.03 3.884 95.39 4.056 95.853 4.056 c
-96.312 4.056 96.653 3.902 96.881 3.601 c
-97.116 3.308 97.238 2.844 97.249 2.219 c
-97.249 1.793 l
-95.03 1.793 l
-95.03 1.705 l
-95.03 1.272 95.107 0.96 95.265 0.764 c
-95.43 0.577 95.662 0.485 95.955 0.485 c
-96.15 0.485 96.323 0.518 96.47 0.588 c
-96.617 0.665 96.753 0.783 96.881 0.941 c
-97.22 0.529 l
-96.933 0.125 96.503 -0.073 95.926 -0.073 c
-95.853 3.499 m
-95.577 3.499 95.375 3.403 95.25 3.219 c
-95.121 3.032 95.048 2.741 95.03 2.352 c
-96.603 2.352 l
-96.603 2.44 l
-96.58 2.822 96.514 3.09 96.397 3.248 c
-96.279 3.414 96.096 3.499 95.853 3.499 c
-101.791 0 m
-101.75 0.088 101.725 0.235 101.717 0.441 c
-101.482 0.096 101.189 -0.073 100.836 -0.073 c
-100.472 -0.073 100.189 0.022 99.983 0.22 c
-99.784 0.426 99.689 0.713 99.689 1.087 c
-99.689 1.488 99.825 1.808 100.1 2.043 c
-100.372 2.286 100.748 2.41 101.218 2.41 c
-101.702 2.41 l
-101.702 2.837 l
-101.702 3.072 101.648 3.237 101.542 3.337 c
-101.431 3.443 101.27 3.499 101.056 3.499 c
-100.858 3.499 100.696 3.439 100.571 3.322 c
-100.453 3.204 100.395 3.057 100.395 2.881 c
-99.748 2.881 l
-99.748 3.076 99.807 3.267 99.924 3.454 c
-100.049 3.638 100.21 3.785 100.409 3.896 c
-100.615 4.002 100.843 4.056 101.1 4.056 c
-101.501 4.056 101.806 3.954 102.012 3.748 c
-102.224 3.543 102.338 3.248 102.35 2.866 c
-102.35 0.852 l
-102.35 0.548 102.386 0.283 102.467 0.058 c
-102.467 0 l
-h
-100.923 0.515 m
-101.089 0.515 101.24 0.559 101.38 0.646 c
-101.526 0.735 101.633 0.845 101.702 0.985 c
-101.702 1.926 l
-101.336 1.926 l
-101.019 1.926 100.777 1.856 100.601 1.72 c
-100.424 1.591 100.336 1.404 100.336 1.161 c
-100.336 0.933 100.38 0.768 100.468 0.661 c
-100.557 0.563 100.707 0.515 100.923 0.515 c
-f
-Q
-q 1 0 0 1 437.8812 189.7368 cm
-0 0 m
-0 -0.971 l
-0.53 -0.971 l
-0.53 -1.764 l
-0 -1.764 l
-0 -3.734 l
-0 -3.892 0.019 -3.998 0.059 -4.057 c
-0.107 -4.116 0.192 -4.146 0.31 -4.146 c
-0.416 -4.146 0.5 -4.138 0.559 -4.116 c
-0.559 -4.925 l
-0.383 -4.991 0.192 -5.027 -0.014 -5.027 c
--0.69 -5.027 -1.036 -4.642 -1.043 -3.866 c
--1.043 -1.764 l
--1.499 -1.764 l
--1.499 -0.971 l
--1.043 -0.971 l
--1.043 0 l
-h
-3.057 -1.985 m
-2.72 -1.956 l
-2.433 -1.956 2.242 -2.08 2.147 -2.323 c
-2.147 -4.954 l
-1.103 -4.954 l
-1.103 -0.971 l
-2.073 -0.971 l
-2.103 -1.411 l
-2.268 -1.07 2.5 -0.897 2.793 -0.897 c
-2.911 -0.897 3.003 -0.919 3.072 -0.956 c
-h
-5.38 -4.954 m
-5.351 -4.896 5.322 -4.792 5.292 -4.645 c
-5.104 -4.902 4.855 -5.027 4.543 -5.027 c
-4.208 -5.027 3.929 -4.921 3.705 -4.704 c
-3.487 -4.48 3.381 -4.19 3.381 -3.837 c
-3.381 -3.425 3.514 -3.109 3.778 -2.881 c
-4.042 -2.646 4.425 -2.529 4.925 -2.529 c
-5.248 -2.529 l
-5.248 -2.205 l
-5.248 -2.029 5.212 -1.908 5.145 -1.838 c
-5.087 -1.76 4.998 -1.721 4.881 -1.721 c
-4.623 -1.721 4.499 -1.875 4.499 -2.176 c
-3.454 -2.176 l
-3.454 -1.804 3.591 -1.5 3.866 -1.264 c
-4.138 -1.022 4.487 -0.897 4.91 -0.897 c
-5.351 -0.897 5.689 -1.015 5.924 -1.25 c
-6.167 -1.478 6.292 -1.801 6.292 -2.22 c
-6.292 -4.087 l
-6.292 -4.432 6.34 -4.7 6.438 -4.896 c
-6.438 -4.954 l
-h
-4.778 -4.204 m
-4.884 -4.204 4.977 -4.186 5.056 -4.146 c
-5.145 -4.098 5.208 -4.039 5.248 -3.969 c
-5.248 -3.146 l
-4.998 -3.146 l
-4.821 -3.146 4.678 -3.205 4.572 -3.323 c
-4.472 -3.433 4.425 -3.58 4.425 -3.763 c
-4.425 -4.057 4.543 -4.204 4.778 -4.204 c
-8.482 -4.16 m
-8.776 -4.16 8.927 -3.965 8.937 -3.572 c
-9.908 -3.572 l
-9.908 -4.006 9.775 -4.358 9.511 -4.63 c
-9.247 -4.896 8.908 -5.027 8.497 -5.027 c
-7.986 -5.027 7.593 -4.873 7.321 -4.557 c
-7.056 -4.233 6.916 -3.763 6.909 -3.146 c
-6.909 -2.822 l
-6.909 -2.198 7.041 -1.721 7.306 -1.397 c
-7.578 -1.066 7.975 -0.897 8.497 -0.897 c
-8.927 -0.897 9.268 -1.037 9.525 -1.309 c
-9.779 -1.584 9.908 -1.966 9.908 -2.455 c
-8.937 -2.455 l
-8.937 -2.242 8.897 -2.073 8.819 -1.956 c
-8.75 -1.831 8.632 -1.764 8.467 -1.764 c
-8.291 -1.764 8.162 -1.831 8.085 -1.956 c
-8.004 -2.084 7.96 -2.334 7.953 -2.705 c
-7.953 -3.117 l
-7.953 -3.44 7.967 -3.668 7.996 -3.793 c
-8.034 -3.921 8.088 -4.013 8.158 -4.072 c
-8.235 -4.131 8.342 -4.16 8.482 -4.16 c
-11.834 -3.425 m
-11.554 -3.734 l
-11.554 -4.954 l
-10.51 -4.954 l
-10.51 0.691 l
-11.554 0.691 l
-11.554 -2.352 l
-11.672 -2.161 l
-12.391 -0.971 l
-13.641 -0.971 l
-12.48 -2.617 l
-13.744 -4.954 l
-12.553 -4.954 l
-h
-15.64 -5.027 m
-15.111 -5.027 14.692 -4.873 14.391 -4.557 c
-14.097 -4.233 13.95 -3.774 13.95 -3.175 c
-13.95 -2.866 l
-13.95 -2.242 14.086 -1.757 14.361 -1.411 c
-14.633 -1.07 15.026 -0.897 15.537 -0.897 c
-16.037 -0.897 16.408 -1.058 16.655 -1.382 c
-16.908 -1.706 17.041 -2.183 17.051 -2.808 c
-17.051 -3.308 l
-14.978 -3.308 l
-14.997 -3.602 15.059 -3.818 15.169 -3.955 c
-15.287 -4.094 15.468 -4.16 15.714 -4.16 c
-16.056 -4.16 16.345 -4.042 16.581 -3.807 c
-16.993 -4.439 l
-16.864 -4.616 16.676 -4.759 16.434 -4.865 c
-16.187 -4.973 15.923 -5.027 15.64 -5.027 c
-14.993 -2.587 m
-16.023 -2.587 l
-16.023 -2.484 l
-16.023 -2.249 15.982 -2.073 15.905 -1.956 c
-15.835 -1.831 15.707 -1.764 15.522 -1.764 c
-15.346 -1.764 15.214 -1.834 15.126 -1.97 c
-15.045 -2.099 15.001 -2.305 14.993 -2.587 c
-17.492 -2.837 m
-17.492 -2.191 17.598 -1.706 17.816 -1.382 c
-18.04 -1.058 18.363 -0.897 18.786 -0.897 c
-19.098 -0.897 19.352 -1.029 19.55 -1.294 c
-19.55 0.691 l
-20.609 0.691 l
-20.609 -4.954 l
-19.653 -4.954 l
-19.609 -4.543 l
-19.392 -4.865 19.117 -5.027 18.786 -5.027 c
-18.375 -5.027 18.055 -4.873 17.831 -4.557 c
-17.613 -4.233 17.5 -3.763 17.492 -3.146 c
-h
-18.536 -3.102 m
-18.536 -3.495 18.573 -3.77 18.654 -3.925 c
-18.741 -4.083 18.889 -4.16 19.094 -4.16 c
-19.3 -4.16 19.451 -4.069 19.55 -3.881 c
-19.55 -2.073 l
-19.451 -1.878 19.3 -1.779 19.094 -1.779 c
-18.896 -1.779 18.756 -1.86 18.668 -2.014 c
-18.58 -2.161 18.536 -2.433 18.536 -2.822 c
-h
-25.062 -4.586 m
-24.846 -4.881 24.555 -5.027 24.195 -5.027 c
-23.831 -5.027 23.552 -4.906 23.358 -4.66 c
-23.169 -4.406 23.078 -4.039 23.078 -3.558 c
-23.078 -0.971 l
-24.121 -0.971 l
-24.121 -3.572 l
-24.121 -3.965 24.247 -4.16 24.503 -4.16 c
-24.739 -4.16 24.908 -4.057 25.018 -3.851 c
-25.018 -0.971 l
-26.062 -0.971 l
-26.062 -4.954 l
-25.091 -4.954 l
-h
-29.913 -3.087 m
-29.913 -3.716 29.803 -4.197 29.59 -4.528 c
-29.373 -4.862 29.053 -5.027 28.634 -5.027 c
-28.311 -5.027 28.05 -4.896 27.855 -4.63 c
-27.855 -6.483 l
-26.811 -6.483 l
-26.811 -0.971 l
-27.767 -0.971 l
-27.811 -1.338 l
-28.006 -1.044 28.274 -0.897 28.619 -0.897 c
-29.039 -0.897 29.358 -1.055 29.575 -1.368 c
-29.788 -1.673 29.902 -2.143 29.913 -2.779 c
-h
-28.869 -2.822 m
-28.869 -2.44 28.825 -2.172 28.737 -2.014 c
-28.656 -1.86 28.517 -1.779 28.311 -1.779 c
-28.105 -1.779 27.95 -1.867 27.855 -2.043 c
-27.855 -3.911 l
-27.944 -4.079 28.098 -4.16 28.326 -4.16 c
-28.532 -4.16 28.671 -4.079 28.752 -3.911 c
-28.829 -3.734 28.869 -3.462 28.869 -3.087 c
-h
-32.309 -3.881 m
-32.309 -3.793 32.265 -3.716 32.177 -3.645 c
-32.089 -3.568 31.901 -3.466 31.618 -3.337 c
-31.185 -3.161 30.886 -2.98 30.722 -2.793 c
-30.564 -2.61 30.487 -2.378 30.487 -2.103 c
-30.487 -1.76 30.608 -1.478 30.853 -1.25 c
-31.107 -1.015 31.445 -0.897 31.868 -0.897 c
-32.297 -0.897 32.647 -1.011 32.912 -1.235 c
-33.176 -1.463 33.309 -1.764 33.309 -2.147 c
-32.265 -2.147 l
-32.265 -1.823 32.125 -1.661 31.853 -1.661 c
-31.743 -1.661 31.655 -1.698 31.589 -1.764 c
-31.519 -1.834 31.486 -1.933 31.486 -2.058 c
-31.486 -2.147 31.522 -2.228 31.603 -2.294 c
-31.68 -2.352 31.861 -2.448 32.147 -2.573 c
-32.577 -2.731 32.875 -2.907 33.043 -3.102 c
-33.22 -3.289 33.309 -3.539 33.309 -3.851 c
-33.309 -4.204 33.176 -4.491 32.912 -4.704 c
-32.647 -4.921 32.297 -5.027 31.868 -5.027 c
-31.574 -5.027 31.313 -4.973 31.089 -4.865 c
-30.861 -4.748 30.685 -4.586 30.56 -4.381 c
-30.442 -4.175 30.383 -3.955 30.383 -3.72 c
-31.368 -3.72 l
-31.368 -3.907 31.405 -4.042 31.486 -4.131 c
-31.574 -4.219 31.707 -4.263 31.883 -4.263 c
-32.166 -4.263 32.309 -4.138 32.309 -3.881 c
-35.175 0 m
-35.175 -0.971 l
-35.705 -0.971 l
-35.705 -1.764 l
-35.175 -1.764 l
-35.175 -3.734 l
-35.175 -3.892 35.194 -3.998 35.234 -4.057 c
-35.281 -4.116 35.366 -4.146 35.484 -4.146 c
-35.59 -4.146 35.675 -4.138 35.734 -4.116 c
-35.734 -4.925 l
-35.557 -4.991 35.366 -5.027 35.16 -5.027 c
-34.485 -5.027 34.139 -4.642 34.132 -3.866 c
-34.132 -1.764 l
-33.676 -1.764 l
-33.676 -0.971 l
-34.132 -0.971 l
-34.132 0 l
-h
-38.233 -1.985 m
-37.895 -1.956 l
-37.608 -1.956 37.417 -2.08 37.321 -2.323 c
-37.321 -4.954 l
-36.278 -4.954 l
-36.278 -0.971 l
-37.248 -0.971 l
-37.277 -1.411 l
-37.442 -1.07 37.674 -0.897 37.968 -0.897 c
-38.086 -0.897 38.177 -0.919 38.248 -0.956 c
-h
-40.305 -5.027 m
-39.776 -5.027 39.357 -4.873 39.056 -4.557 c
-38.762 -4.233 38.615 -3.774 38.615 -3.175 c
-38.615 -2.866 l
-38.615 -2.242 38.751 -1.757 39.027 -1.411 c
-39.298 -1.07 39.692 -0.897 40.202 -0.897 c
-40.702 -0.897 41.074 -1.058 41.319 -1.382 c
-41.573 -1.706 41.705 -2.183 41.716 -2.808 c
-41.716 -3.308 l
-39.644 -3.308 l
-39.663 -3.602 39.725 -3.818 39.835 -3.955 c
-39.952 -4.094 40.133 -4.16 40.378 -4.16 c
-40.721 -4.16 41.011 -4.042 41.246 -3.807 c
-41.658 -4.439 l
-41.529 -4.616 41.342 -4.759 41.099 -4.865 c
-40.853 -4.973 40.588 -5.027 40.305 -5.027 c
-39.659 -2.587 m
-40.687 -2.587 l
-40.687 -2.484 l
-40.687 -2.249 40.647 -2.073 40.569 -1.956 c
-40.5 -1.831 40.371 -1.764 40.187 -1.764 c
-40.012 -1.764 39.879 -1.834 39.79 -1.97 c
-39.71 -2.099 39.665 -2.305 39.659 -2.587 c
-44.186 -4.954 m
-44.156 -4.896 44.127 -4.792 44.097 -4.645 c
-43.91 -4.902 43.661 -5.027 43.348 -5.027 c
-43.013 -5.027 42.734 -4.921 42.51 -4.704 c
-42.293 -4.48 42.187 -4.19 42.187 -3.837 c
-42.187 -3.425 42.319 -3.109 42.584 -2.881 c
-42.848 -2.646 43.231 -2.529 43.73 -2.529 c
-44.054 -2.529 l
-44.054 -2.205 l
-44.054 -2.029 44.017 -1.908 43.95 -1.838 c
-43.892 -1.76 43.804 -1.721 43.686 -1.721 c
-43.428 -1.721 43.304 -1.875 43.304 -2.176 c
-42.26 -2.176 l
-42.26 -1.804 42.396 -1.5 42.672 -1.264 c
-42.944 -1.022 43.293 -0.897 43.715 -0.897 c
-44.156 -0.897 44.494 -1.015 44.729 -1.25 c
-44.972 -1.478 45.097 -1.801 45.097 -2.22 c
-45.097 -4.087 l
-45.097 -4.432 45.145 -4.7 45.244 -4.896 c
-45.244 -4.954 l
-h
-43.583 -4.204 m
-43.69 -4.204 43.782 -4.186 43.862 -4.146 c
-43.95 -4.098 44.013 -4.039 44.054 -3.969 c
-44.054 -3.146 l
-43.804 -3.146 l
-43.627 -3.146 43.484 -3.205 43.378 -3.323 c
-43.278 -3.433 43.231 -3.58 43.231 -3.763 c
-43.231 -4.057 43.348 -4.204 43.583 -4.204 c
-46.817 -0.971 m
-46.846 -1.338 l
-47.081 -1.044 47.39 -0.897 47.773 -0.897 c
-48.172 -0.897 48.452 -1.081 48.61 -1.441 c
-48.845 -1.081 49.172 -0.897 49.595 -0.897 c
-50.289 -0.897 50.642 -1.382 50.653 -2.352 c
-50.653 -4.954 l
-49.624 -4.954 l
-49.624 -2.411 l
-49.624 -2.187 49.587 -2.025 49.521 -1.926 c
-49.463 -1.831 49.352 -1.779 49.198 -1.779 c
-48.999 -1.779 48.86 -1.897 48.772 -2.132 c
-48.772 -4.954 l
-47.728 -4.954 l
-47.728 -2.426 l
-47.728 -2.191 47.699 -2.025 47.64 -1.926 c
-47.582 -1.831 47.471 -1.779 47.316 -1.779 c
-47.14 -1.779 46.997 -1.875 46.89 -2.058 c
-46.89 -4.954 l
-45.847 -4.954 l
-45.847 -0.971 l
-h
-f
-Q
-0 0 0 0 k
-q 1 0 0 1 310.3894 176.5843 cm
-0 0 m
-0 -0.97 l
-0.53 -0.97 l
-0.53 -1.764 l
-0 -1.764 l
-0 -3.734 l
-0 -3.892 0.019 -3.998 0.059 -4.056 c
-0.106 -4.116 0.191 -4.145 0.309 -4.145 c
-0.415 -4.145 0.5 -4.137 0.559 -4.116 c
-0.559 -4.924 l
-0.382 -4.991 0.191 -5.027 -0.015 -5.027 c
--0.691 -5.027 -1.037 -4.641 -1.043 -3.865 c
--1.043 -1.764 l
--1.5 -1.764 l
--1.5 -0.97 l
--1.043 -0.97 l
--1.043 0 l
-h
-2.984 -4.953 m
-2.955 -4.895 2.925 -4.792 2.896 -4.644 c
-2.708 -4.902 2.458 -5.027 2.146 -5.027 c
-1.812 -5.027 1.532 -4.92 1.309 -4.704 c
-1.091 -4.48 0.985 -4.189 0.985 -3.836 c
-0.985 -3.424 1.117 -3.109 1.382 -2.881 c
-1.646 -2.645 2.028 -2.528 2.528 -2.528 c
-2.851 -2.528 l
-2.851 -2.205 l
-2.851 -2.028 2.815 -1.907 2.749 -1.837 c
-2.69 -1.76 2.602 -1.72 2.484 -1.72 c
-2.227 -1.72 2.102 -1.874 2.102 -2.175 c
-1.058 -2.175 l
-1.058 -1.804 1.195 -1.5 1.47 -1.264 c
-1.742 -1.022 2.091 -0.897 2.514 -0.897 c
-2.955 -0.897 3.293 -1.014 3.528 -1.249 c
-3.77 -1.477 3.896 -1.801 3.896 -2.219 c
-3.896 -4.087 l
-3.896 -4.432 3.943 -4.7 4.042 -4.895 c
-4.042 -4.953 l
-h
-2.381 -4.204 m
-2.488 -4.204 2.579 -4.185 2.66 -4.145 c
-2.749 -4.097 2.811 -4.039 2.851 -3.969 c
-2.851 -3.146 l
-2.602 -3.146 l
-2.425 -3.146 2.282 -3.204 2.176 -3.322 c
-2.076 -3.432 2.028 -3.579 2.028 -3.763 c
-2.028 -4.056 2.146 -4.204 2.381 -4.204 c
-4.513 -2.836 m
-4.513 -2.19 4.63 -1.705 4.866 -1.382 c
-5.101 -1.058 5.431 -0.897 5.865 -0.897 c
-6.217 -0.897 6.489 -1.04 6.688 -1.323 c
-6.732 -0.97 l
-7.673 -0.97 l
-7.673 -4.953 l
-7.673 -5.461 7.53 -5.85 7.247 -6.115 c
-6.96 -6.387 6.556 -6.526 6.026 -6.526 c
-5.799 -6.526 5.564 -6.482 5.321 -6.394 c
-5.086 -6.306 4.91 -6.192 4.792 -6.056 c
-5.145 -5.336 l
-5.24 -5.442 5.369 -5.527 5.527 -5.585 c
-5.681 -5.652 5.828 -5.689 5.968 -5.689 c
-6.203 -5.689 6.369 -5.629 6.468 -5.512 c
-6.574 -5.402 6.629 -5.226 6.629 -4.983 c
-6.629 -4.63 l
-6.431 -4.895 6.174 -5.027 5.85 -5.027 c
-5.428 -5.027 5.101 -4.865 4.866 -4.542 c
-4.638 -4.211 4.52 -3.74 4.513 -3.131 c
-h
-5.556 -3.102 m
-5.556 -3.476 5.604 -3.744 5.704 -3.91 c
-5.799 -4.079 5.953 -4.16 6.159 -4.16 c
-6.372 -4.16 6.53 -4.083 6.629 -3.925 c
-6.629 -2.028 l
-6.519 -1.863 6.365 -1.778 6.159 -1.778 c
-5.953 -1.778 5.799 -1.863 5.704 -2.028 c
-5.604 -2.198 5.556 -2.466 5.556 -2.836 c
-h
-f
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 331.7103 171.6313 cm
-0 0 m
--0.04 0.087 -0.066 0.235 -0.073 0.44 c
--0.309 0.095 -0.603 -0.074 -0.956 -0.074 c
--1.319 -0.074 -1.602 0.022 -1.808 0.22 c
--2.007 0.426 -2.102 0.712 -2.102 1.088 c
--2.102 1.488 -1.966 1.807 -1.691 2.042 c
--1.419 2.285 -1.043 2.41 -0.573 2.41 c
--0.088 2.41 l
--0.088 2.836 l
--0.088 3.072 -0.143 3.237 -0.25 3.336 c
--0.36 3.443 -0.522 3.498 -0.735 3.498 c
--0.933 3.498 -1.095 3.439 -1.22 3.322 c
--1.338 3.204 -1.396 3.057 -1.396 2.881 c
--2.043 2.881 l
--2.043 3.075 -1.984 3.266 -1.866 3.453 c
--1.741 3.638 -1.58 3.785 -1.382 3.895 c
--1.176 4.001 -0.948 4.056 -0.691 4.056 c
--0.291 4.056 0.015 3.954 0.22 3.748 c
-0.434 3.542 0.548 3.248 0.559 2.865 c
-0.559 0.852 l
-0.559 0.548 0.595 0.282 0.676 0.058 c
-0.676 0 l
-h
--0.867 0.514 m
--0.702 0.514 -0.551 0.558 -0.411 0.646 c
--0.264 0.735 -0.158 0.845 -0.088 0.984 c
--0.088 1.925 l
--0.455 1.925 l
--0.771 1.925 -1.014 1.855 -1.191 1.72 c
--1.367 1.591 -1.455 1.404 -1.455 1.161 c
--1.455 0.933 -1.411 0.768 -1.323 0.661 c
--1.234 0.562 -1.084 0.514 -0.867 0.514 c
-4.924 3.366 m
-4.836 3.384 4.737 3.395 4.63 3.395 c
-4.295 3.395 4.06 3.212 3.925 2.851 c
-3.925 0 l
-3.278 0 l
-3.278 3.983 l
-3.91 3.983 l
-3.925 3.571 l
-4.101 3.895 4.343 4.056 4.659 4.056 c
-4.766 4.056 4.854 4.035 4.924 3.998 c
-h
-6.923 -0.074 m
-6.423 -0.074 6.041 0.073 5.777 0.367 c
-5.512 0.661 5.38 1.095 5.38 1.675 c
-5.38 2.146 l
-5.38 2.741 5.505 3.208 5.762 3.542 c
-6.026 3.883 6.387 4.056 6.85 4.056 c
-7.31 4.056 7.651 3.902 7.879 3.601 c
-8.114 3.307 8.235 2.844 8.247 2.219 c
-8.247 1.793 l
-6.026 1.793 l
-6.026 1.705 l
-6.026 1.271 6.104 0.959 6.262 0.764 c
-6.427 0.577 6.659 0.484 6.953 0.484 c
-7.148 0.484 7.32 0.517 7.468 0.588 c
-7.614 0.665 7.75 0.783 7.879 0.941 c
-8.216 0.529 l
-7.93 0.124 7.501 -0.074 6.923 -0.074 c
-6.85 3.498 m
-6.574 3.498 6.372 3.403 6.247 3.218 c
-6.119 3.031 6.045 2.741 6.026 2.352 c
-7.599 2.352 l
-7.599 2.439 l
-7.578 2.822 7.511 3.09 7.393 3.248 c
-7.276 3.413 7.092 3.498 6.85 3.498 c
-9.319 0 m
-9.319 3.453 l
-8.79 3.453 l
-8.79 3.983 l
-9.319 3.983 l
-9.319 4.438 l
-9.319 4.839 9.415 5.151 9.613 5.379 c
-9.819 5.604 10.098 5.718 10.451 5.718 c
-10.587 5.718 10.72 5.695 10.848 5.659 c
-10.819 5.115 l
-10.72 5.134 10.62 5.144 10.525 5.144 c
-10.15 5.144 9.966 4.88 9.966 4.351 c
-9.966 3.983 l
-10.643 3.983 l
-10.643 3.453 l
-9.966 3.453 l
-9.966 0 l
-h
-12.744 -0.074 m
-12.245 -0.074 11.862 0.073 11.597 0.367 c
-11.333 0.661 11.2 1.095 11.2 1.675 c
-11.2 2.146 l
-11.2 2.741 11.326 3.208 11.583 3.542 c
-11.848 3.883 12.208 4.056 12.671 4.056 c
-13.13 4.056 13.471 3.902 13.7 3.601 c
-13.935 3.307 14.056 2.844 14.067 2.219 c
-14.067 1.793 l
-11.848 1.793 l
-11.848 1.705 l
-11.848 1.271 11.925 0.959 12.083 0.764 c
-12.248 0.577 12.48 0.484 12.773 0.484 c
-12.968 0.484 13.141 0.517 13.288 0.588 c
-13.435 0.665 13.571 0.783 13.7 0.941 c
-14.038 0.529 l
-13.751 0.124 13.321 -0.074 12.744 -0.074 c
-12.671 3.498 m
-12.395 3.498 12.193 3.403 12.068 3.218 c
-11.939 3.031 11.866 2.741 11.848 2.352 c
-13.421 2.352 l
-13.421 2.439 l
-13.398 2.822 13.332 3.09 13.215 3.248 c
-13.097 3.413 12.914 3.498 12.671 3.498 c
-16.492 3.366 m
-16.405 3.384 16.305 3.395 16.199 3.395 c
-15.864 3.395 15.629 3.212 15.493 2.851 c
-15.493 0 l
-14.846 0 l
-14.846 3.983 l
-15.478 3.983 l
-15.493 3.571 l
-15.669 3.895 15.912 4.056 16.228 4.056 c
-16.334 4.056 16.422 4.035 16.492 3.998 c
-h
-18.491 -0.074 m
-17.992 -0.074 17.61 0.073 17.345 0.367 c
-17.08 0.661 16.948 1.095 16.948 1.675 c
-16.948 2.146 l
-16.948 2.741 17.073 3.208 17.33 3.542 c
-17.595 3.883 17.955 4.056 18.418 4.056 c
-18.877 4.056 19.219 3.902 19.447 3.601 c
-19.682 3.307 19.803 2.844 19.815 2.219 c
-19.815 1.793 l
-17.595 1.793 l
-17.595 1.705 l
-17.595 1.271 17.672 0.959 17.83 0.764 c
-17.995 0.577 18.227 0.484 18.521 0.484 c
-18.716 0.484 18.888 0.517 19.035 0.588 c
-19.183 0.665 19.318 0.783 19.447 0.941 c
-19.785 0.529 l
-19.499 0.124 19.069 -0.074 18.491 -0.074 c
-18.418 3.498 m
-18.142 3.498 17.94 3.403 17.816 3.218 c
-17.687 3.031 17.613 2.741 17.595 2.352 c
-19.168 2.352 l
-19.168 2.439 l
-19.146 2.822 19.079 3.09 18.962 3.248 c
-18.844 3.413 18.66 3.498 18.418 3.498 c
-21.211 3.983 m
-21.226 3.542 l
-21.479 3.883 21.803 4.056 22.196 4.056 c
-22.901 4.056 23.258 3.586 23.268 2.645 c
-23.268 0 l
-22.622 0 l
-22.622 2.616 l
-22.622 2.929 22.566 3.149 22.46 3.278 c
-22.35 3.403 22.196 3.469 21.99 3.469 c
-21.832 3.469 21.685 3.413 21.549 3.307 c
-21.421 3.197 21.317 3.06 21.24 2.896 c
-21.24 0 l
-20.594 0 l
-20.594 3.983 l
-h
-25.62 0.484 m
-25.834 0.484 26.007 0.548 26.135 0.675 c
-26.271 0.812 26.344 1.003 26.356 1.249 c
-26.973 1.249 l
-26.951 0.866 26.815 0.548 26.561 0.294 c
-26.304 0.047 25.992 -0.074 25.62 -0.074 c
-25.128 -0.074 24.754 0.077 24.488 0.382 c
-24.232 0.694 24.106 1.161 24.106 1.778 c
-24.106 2.219 l
-24.106 2.815 24.232 3.27 24.488 3.586 c
-24.754 3.898 25.128 4.056 25.62 4.056 c
-26.021 4.056 26.341 3.924 26.576 3.659 c
-26.819 3.403 26.951 3.057 26.973 2.616 c
-26.356 2.616 l
-26.333 2.91 26.26 3.131 26.135 3.278 c
-26.017 3.424 25.845 3.498 25.62 3.498 c
-25.327 3.498 25.109 3.399 24.974 3.204 c
-24.835 3.017 24.76 2.707 24.754 2.278 c
-24.754 1.764 l
-24.754 1.294 24.82 0.959 24.959 0.764 c
-25.106 0.577 25.327 0.484 25.62 0.484 c
-29.148 -0.074 m
-28.648 -0.074 28.266 0.073 28.002 0.367 c
-27.737 0.661 27.605 1.095 27.605 1.675 c
-27.605 2.146 l
-27.605 2.741 27.73 3.208 27.987 3.542 c
-28.251 3.883 28.612 4.056 29.074 4.056 c
-29.534 4.056 29.876 3.902 30.104 3.601 c
-30.339 3.307 30.46 2.844 30.471 2.219 c
-30.471 1.793 l
-28.251 1.793 l
-28.251 1.705 l
-28.251 1.271 28.328 0.959 28.487 0.764 c
-28.652 0.577 28.884 0.484 29.178 0.484 c
-29.373 0.484 29.545 0.517 29.693 0.588 c
-29.839 0.665 29.975 0.783 30.104 0.941 c
-30.441 0.529 l
-30.155 0.124 29.725 -0.074 29.148 -0.074 c
-29.074 3.498 m
-28.799 3.498 28.598 3.403 28.472 3.218 c
-28.344 3.031 28.27 2.741 28.251 2.352 c
-29.824 2.352 l
-29.824 2.439 l
-29.803 2.822 29.736 3.09 29.618 3.248 c
-29.501 3.413 29.317 3.498 29.074 3.498 c
-32.955 2.175 m
-32.955 2.811 33.043 3.413 33.22 3.983 c
-33.396 4.548 33.639 5.045 33.955 5.468 c
-34.15 5.732 34.337 5.923 34.514 6.04 c
-34.646 5.585 l
-34.352 5.31 34.109 4.887 33.926 4.321 c
-33.738 3.752 33.635 3.119 33.616 2.425 c
-33.616 2.131 l
-33.616 1.267 33.734 0.503 33.969 -0.162 c
-34.154 -0.662 34.381 -1.044 34.646 -1.309 c
-34.514 -1.735 l
-34.285 -1.577 34.061 -1.327 33.837 -0.985 c
-33.249 -0.103 32.955 0.947 32.955 2.175 c
-37.277 1.014 m
-37.277 1.161 37.221 1.282 37.115 1.381 c
-37.005 1.477 36.799 1.595 36.498 1.734 c
-36.153 1.881 35.91 2.002 35.763 2.102 c
-35.615 2.208 35.505 2.326 35.44 2.454 c
-35.37 2.58 35.337 2.738 35.337 2.925 c
-35.337 3.248 35.455 3.516 35.69 3.733 c
-35.925 3.946 36.226 4.056 36.6 4.056 c
-36.983 4.056 37.292 3.943 37.527 3.719 c
-37.762 3.49 37.88 3.204 37.88 2.851 c
-37.233 2.851 l
-37.233 3.027 37.174 3.178 37.057 3.307 c
-36.939 3.432 36.785 3.498 36.6 3.498 c
-36.402 3.498 36.251 3.443 36.145 3.336 c
-36.035 3.237 35.983 3.104 35.983 2.94 c
-35.983 2.811 36.02 2.705 36.101 2.616 c
-36.178 2.535 36.369 2.432 36.674 2.308 c
-37.152 2.119 37.483 1.932 37.659 1.749 c
-37.836 1.572 37.924 1.344 37.924 1.072 c
-37.924 0.72 37.799 0.44 37.556 0.235 c
-37.321 0.029 37.005 -0.074 36.615 -0.074 c
-36.193 -0.074 35.854 0.043 35.601 0.278 c
-35.344 0.521 35.219 0.826 35.219 1.19 c
-35.866 1.19 l
-35.873 0.962 35.943 0.786 36.072 0.661 c
-36.197 0.544 36.38 0.484 36.615 0.484 c
-36.829 0.484 36.99 0.532 37.101 0.631 c
-37.218 0.727 37.277 0.856 37.277 1.014 c
-39.614 4.939 m
-39.614 3.983 l
-40.217 3.983 l
-40.217 3.453 l
-39.614 3.453 l
-39.614 0.984 l
-39.614 0.826 39.636 0.708 39.688 0.631 c
-39.746 0.55 39.835 0.514 39.952 0.514 c
-40.041 0.514 40.128 0.529 40.217 0.558 c
-40.217 0 l
-40.07 -0.048 39.916 -0.074 39.761 -0.074 c
-39.504 -0.074 39.309 0.018 39.173 0.205 c
-39.033 0.389 38.967 0.65 38.967 0.984 c
-38.967 3.453 l
-38.364 3.453 l
-38.364 3.983 l
-38.967 3.983 l
-38.967 4.939 l
-h
-43.024 0 m
-42.983 0.087 42.958 0.235 42.95 0.44 c
-42.715 0.095 42.422 -0.074 42.069 -0.074 c
-41.705 -0.074 41.422 0.022 41.217 0.22 c
-41.018 0.426 40.922 0.712 40.922 1.088 c
-40.922 1.488 41.059 1.807 41.334 2.042 c
-41.606 2.285 41.98 2.41 42.451 2.41 c
-42.936 2.41 l
-42.936 2.836 l
-42.936 3.072 42.881 3.237 42.774 3.336 c
-42.664 3.443 42.503 3.498 42.289 3.498 c
-42.091 3.498 41.929 3.439 41.805 3.322 c
-41.687 3.204 41.628 3.057 41.628 2.881 c
-40.981 2.881 l
-40.981 3.075 41.04 3.266 41.157 3.453 c
-41.282 3.638 41.444 3.785 41.643 3.895 c
-41.848 4.001 42.076 4.056 42.333 4.056 c
-42.734 4.056 43.039 3.954 43.245 3.748 c
-43.457 3.542 43.571 3.248 43.583 2.865 c
-43.583 0.852 l
-43.583 0.548 43.619 0.282 43.7 0.058 c
-43.7 0 l
-h
-42.157 0.514 m
-42.322 0.514 42.473 0.558 42.613 0.646 c
-42.759 0.735 42.866 0.845 42.936 0.984 c
-42.936 1.925 l
-42.568 1.925 l
-42.252 1.925 42.01 1.855 41.834 1.72 c
-41.657 1.591 41.569 1.404 41.569 1.161 c
-41.569 0.933 41.613 0.768 41.701 0.661 c
-41.79 0.562 41.94 0.514 42.157 0.514 c
-45.2 3.983 m
-45.215 3.542 l
-45.468 3.883 45.791 4.056 46.185 4.056 c
-46.89 4.056 47.247 3.586 47.257 2.645 c
-47.257 0 l
-46.611 0 l
-46.611 2.616 l
-46.611 2.929 46.555 3.149 46.449 3.278 c
-46.339 3.403 46.185 3.469 45.979 3.469 c
-45.821 3.469 45.674 3.413 45.537 3.307 c
-45.409 3.197 45.306 3.06 45.229 2.896 c
-45.229 0 l
-44.583 0 l
-44.583 3.983 l
-h
-48.095 2.175 m
-48.095 2.782 48.205 3.248 48.433 3.571 c
-48.668 3.895 48.996 4.056 49.418 4.056 c
-49.801 4.056 50.098 3.898 50.315 3.586 c
-50.315 5.644 l
-50.962 5.644 l
-50.962 0 l
-50.374 0 l
-50.33 0.426 l
-50.124 0.091 49.819 -0.074 49.418 -0.074 c
-49.007 -0.074 48.683 0.08 48.448 0.396 c
-48.213 0.72 48.095 1.176 48.095 1.764 c
-h
-48.743 1.793 m
-48.743 1.352 48.805 1.021 48.934 0.808 c
-49.069 0.602 49.29 0.5 49.595 0.5 c
-49.918 0.5 50.156 0.661 50.315 0.984 c
-50.315 2.998 l
-50.146 3.31 49.907 3.469 49.595 3.469 c
-49.29 3.469 49.069 3.366 48.934 3.16 c
-48.805 2.954 48.743 2.63 48.743 2.19 c
-h
-54.004 0 m
-53.964 0.087 53.938 0.235 53.931 0.44 c
-53.696 0.095 53.402 -0.074 53.049 -0.074 c
-52.685 -0.074 52.402 0.022 52.196 0.22 c
-51.997 0.426 51.902 0.712 51.902 1.088 c
-51.902 1.488 52.038 1.807 52.314 2.042 c
-52.586 2.285 52.961 2.41 53.431 2.41 c
-53.917 2.41 l
-53.917 2.836 l
-53.917 3.072 53.861 3.237 53.755 3.336 c
-53.644 3.443 53.483 3.498 53.269 3.498 c
-53.071 3.498 52.909 3.439 52.784 3.322 c
-52.666 3.204 52.608 3.057 52.608 2.881 c
-51.961 2.881 l
-51.961 3.075 52.02 3.266 52.138 3.453 c
-52.263 3.638 52.425 3.785 52.623 3.895 c
-52.828 4.001 53.057 4.056 53.314 4.056 c
-53.714 4.056 54.019 3.954 54.225 3.748 c
-54.438 3.542 54.552 3.248 54.563 2.865 c
-54.563 0.852 l
-54.563 0.548 54.6 0.282 54.68 0.058 c
-54.68 0 l
-h
-53.137 0.514 m
-53.302 0.514 53.453 0.558 53.593 0.646 c
-53.74 0.735 53.846 0.845 53.917 0.984 c
-53.917 1.925 l
-53.549 1.925 l
-53.233 1.925 52.99 1.855 52.814 1.72 c
-52.637 1.591 52.549 1.404 52.549 1.161 c
-52.549 0.933 52.593 0.768 52.681 0.661 c
-52.77 0.562 52.92 0.514 53.137 0.514 c
-57.209 3.366 m
-57.121 3.384 57.021 3.395 56.915 3.395 c
-56.581 3.395 56.346 3.212 56.209 2.851 c
-56.209 0 l
-55.563 0 l
-55.563 3.983 l
-56.194 3.983 l
-56.209 3.571 l
-56.386 3.895 56.628 4.056 56.944 4.056 c
-57.051 4.056 57.139 4.035 57.209 3.998 c
-h
-57.649 2.175 m
-57.649 2.782 57.76 3.248 57.988 3.571 c
-58.223 3.895 58.55 4.056 58.973 4.056 c
-59.355 4.056 59.652 3.898 59.87 3.586 c
-59.87 5.644 l
-60.516 5.644 l
-60.516 0 l
-59.928 0 l
-59.884 0.426 l
-59.679 0.091 59.373 -0.074 58.973 -0.074 c
-58.561 -0.074 58.237 0.08 58.002 0.396 c
-57.767 0.72 57.649 1.176 57.649 1.764 c
-h
-58.297 1.793 m
-58.297 1.352 58.359 1.021 58.488 0.808 c
-58.623 0.602 58.844 0.5 59.149 0.5 c
-59.473 0.5 59.712 0.661 59.87 0.984 c
-59.87 2.998 l
-59.7 3.31 59.461 3.469 59.149 3.469 c
-58.844 3.469 58.623 3.366 58.488 3.16 c
-58.359 2.954 58.297 2.63 58.297 2.19 c
-h
-62.912 2.131 m
-62.912 1.043 62.665 0.077 62.177 -0.765 c
-61.913 -1.214 61.637 -1.536 61.354 -1.735 c
-61.236 -1.309 l
-61.538 -1.015 61.784 -0.563 61.971 0.043 c
-62.166 0.65 62.266 1.315 62.266 2.042 c
-62.266 2.175 l
-62.266 3.104 62.11 3.939 61.809 4.674 c
-61.64 5.074 61.449 5.394 61.236 5.629 c
-61.354 6.04 l
-61.626 5.853 61.89 5.556 62.148 5.144 c
-62.655 4.292 62.912 3.285 62.912 2.131 c
-65.499 2.175 m
-65.499 2.752 65.635 3.208 65.911 3.542 c
-66.193 3.883 66.565 4.056 67.028 4.056 c
-67.487 4.056 67.855 3.887 68.13 3.557 c
-68.413 3.233 68.56 2.785 68.571 2.219 c
-68.571 1.793 l
-68.571 1.223 68.427 0.768 68.145 0.426 c
-67.87 0.091 67.502 -0.074 67.043 -0.074 c
-66.579 -0.074 66.208 0.087 65.925 0.411 c
-65.65 0.742 65.507 1.183 65.499 1.734 c
-h
-66.146 1.793 m
-66.146 1.389 66.223 1.072 66.381 0.837 c
-66.546 0.602 66.767 0.484 67.043 0.484 c
-67.608 0.484 67.903 0.897 67.924 1.72 c
-67.924 2.175 l
-67.924 2.576 67.84 2.896 67.675 3.131 c
-67.517 3.373 67.3 3.498 67.028 3.498 c
-66.763 3.498 66.546 3.373 66.381 3.131 c
-66.223 2.896 66.146 2.576 66.146 2.175 c
-h
-71.055 3.366 m
-70.967 3.384 70.868 3.395 70.761 3.395 c
-70.427 3.395 70.191 3.212 70.056 2.851 c
-70.056 0 l
-69.409 0 l
-69.409 3.983 l
-70.041 3.983 l
-70.056 3.571 l
-70.232 3.895 70.475 4.056 70.791 4.056 c
-70.897 4.056 70.985 4.035 71.055 3.998 c
-h
-75.465 0 m
-75.425 0.087 75.399 0.235 75.392 0.44 c
-75.157 0.095 74.862 -0.074 74.509 -0.074 c
-74.145 -0.074 73.863 0.022 73.657 0.22 c
-73.459 0.426 73.363 0.712 73.363 1.088 c
-73.363 1.488 73.499 1.807 73.775 2.042 c
-74.047 2.285 74.421 2.41 74.891 2.41 c
-75.377 2.41 l
-75.377 2.836 l
-75.377 3.072 75.321 3.237 75.215 3.336 c
-75.105 3.443 74.943 3.498 74.73 3.498 c
-74.532 3.498 74.37 3.439 74.245 3.322 c
-74.127 3.204 74.068 3.057 74.068 2.881 c
-73.422 2.881 l
-73.422 3.075 73.48 3.266 73.598 3.453 c
-73.723 3.638 73.885 3.785 74.083 3.895 c
-74.289 4.001 74.517 4.056 74.774 4.056 c
-75.174 4.056 75.479 3.954 75.685 3.748 c
-75.899 3.542 76.013 3.248 76.024 2.865 c
-76.024 0.852 l
-76.024 0.548 76.061 0.282 76.142 0.058 c
-76.142 0 l
-h
-74.598 0.514 m
-74.763 0.514 74.914 0.558 75.053 0.646 c
-75.201 0.735 75.307 0.845 75.377 0.984 c
-75.377 1.925 l
-75.009 1.925 l
-74.694 1.925 74.451 1.855 74.274 1.72 c
-74.098 1.591 74.01 1.404 74.01 1.161 c
-74.01 0.933 74.054 0.768 74.142 0.661 c
-74.23 0.562 74.38 0.514 74.598 0.514 c
-77.64 3.983 m
-77.655 3.542 l
-77.908 3.883 78.232 4.056 78.625 4.056 c
-79.331 4.056 79.687 3.586 79.698 2.645 c
-79.698 0 l
-79.051 0 l
-79.051 2.616 l
-79.051 2.929 78.997 3.149 78.889 3.278 c
-78.779 3.403 78.625 3.469 78.419 3.469 c
-78.261 3.469 78.114 3.413 77.979 3.307 c
-77.85 3.197 77.747 3.06 77.67 2.896 c
-77.67 0 l
-77.023 0 l
-77.023 3.983 l
-h
-82.256 2.175 m
-82.256 2.752 82.392 3.208 82.667 3.542 c
-82.951 3.883 83.321 4.056 83.785 4.056 c
-84.244 4.056 84.611 3.887 84.887 3.557 c
-85.17 3.233 85.317 2.785 85.328 2.219 c
-85.328 1.793 l
-85.328 1.223 85.185 0.768 84.902 0.426 c
-84.626 0.091 84.258 -0.074 83.799 -0.074 c
-83.336 -0.074 82.965 0.087 82.683 0.411 c
-82.407 0.742 82.263 1.183 82.256 1.734 c
-h
-82.903 1.793 m
-82.903 1.389 82.98 1.072 83.138 0.837 c
-83.303 0.602 83.524 0.484 83.799 0.484 c
-84.366 0.484 84.659 0.897 84.682 1.72 c
-84.682 2.175 l
-84.682 2.576 84.597 2.896 84.431 3.131 c
-84.273 3.373 84.057 3.498 83.785 3.498 c
-83.52 3.498 83.303 3.373 83.138 3.131 c
-82.98 2.896 82.903 2.576 82.903 2.175 c
-h
-89.047 1.793 m
-89.047 1.176 88.933 0.708 88.709 0.396 c
-88.492 0.08 88.169 -0.074 87.739 -0.074 c
-87.316 -0.074 87.003 0.106 86.798 0.47 c
-86.768 0 l
-86.166 0 l
-86.166 5.644 l
-86.812 5.644 l
-86.812 3.542 l
-87.026 3.883 87.334 4.056 87.739 4.056 c
-88.169 4.056 88.492 3.898 88.709 3.586 c
-88.933 3.281 89.047 2.815 89.047 2.19 c
-h
-88.4 2.175 m
-88.4 2.645 88.331 2.977 88.194 3.175 c
-88.065 3.37 87.857 3.469 87.562 3.469 c
-87.228 3.469 86.978 3.285 86.812 2.925 c
-86.812 1.043 l
-86.978 0.679 87.232 0.5 87.577 0.5 c
-87.871 0.5 88.08 0.602 88.209 0.808 c
-88.334 1.014 88.4 1.33 88.4 1.764 c
-h
-90.546 3.983 m
-90.546 -0.5 l
-90.546 -1.235 90.255 -1.603 89.679 -1.603 c
-89.54 -1.603 89.418 -1.58 89.312 -1.544 c
-89.312 -1 l
-89.382 -1.019 89.466 -1.029 89.576 -1.029 c
-89.683 -1.029 89.76 -0.985 89.811 -0.897 c
-89.87 -0.817 89.9 -0.676 89.9 -0.47 c
-89.9 3.983 l
-h
-90.575 5.026 m
-90.575 4.916 90.546 4.824 90.488 4.747 c
-90.429 4.677 90.333 4.644 90.208 4.644 c
-90.091 4.644 89.995 4.677 89.929 4.747 c
-89.87 4.824 89.841 4.916 89.841 5.026 c
-89.841 5.144 89.87 5.236 89.929 5.306 c
-89.995 5.383 90.091 5.423 90.208 5.423 c
-90.333 5.423 90.429 5.383 90.488 5.306 c
-90.546 5.225 90.575 5.134 90.575 5.026 c
-93.001 -0.074 m
-92.501 -0.074 92.119 0.073 91.855 0.367 c
-91.589 0.661 91.458 1.095 91.458 1.675 c
-91.458 2.146 l
-91.458 2.741 91.583 3.208 91.84 3.542 c
-92.104 3.883 92.464 4.056 92.927 4.056 c
-93.387 4.056 93.729 3.902 93.956 3.601 c
-94.192 3.307 94.313 2.844 94.324 2.219 c
-94.324 1.793 l
-92.104 1.793 l
-92.104 1.705 l
-92.104 1.271 92.181 0.959 92.339 0.764 c
-92.505 0.577 92.736 0.484 93.031 0.484 c
-93.225 0.484 93.398 0.517 93.545 0.588 c
-93.692 0.665 93.827 0.783 93.956 0.941 c
-94.294 0.529 l
-94.008 0.124 93.578 -0.074 93.001 -0.074 c
-92.927 3.498 m
-92.652 3.498 92.449 3.403 92.325 3.218 c
-92.196 3.031 92.123 2.741 92.104 2.352 c
-93.677 2.352 l
-93.677 2.439 l
-93.655 2.822 93.589 3.09 93.471 3.248 c
-93.353 3.413 93.17 3.498 92.927 3.498 c
-96.485 0.484 m
-96.698 0.484 96.871 0.548 96.999 0.675 c
-97.135 0.812 97.208 1.003 97.22 1.249 c
-97.837 1.249 l
-97.815 0.866 97.679 0.548 97.426 0.294 c
-97.168 0.047 96.856 -0.074 96.485 -0.074 c
-95.992 -0.074 95.618 0.077 95.352 0.382 c
-95.096 0.694 94.97 1.161 94.97 1.778 c
-94.97 2.219 l
-94.97 2.815 95.096 3.27 95.352 3.586 c
-95.618 3.898 95.992 4.056 96.485 4.056 c
-96.885 4.056 97.205 3.924 97.44 3.659 c
-97.683 3.403 97.815 3.057 97.837 2.616 c
-97.22 2.616 l
-97.197 2.91 97.124 3.131 96.999 3.278 c
-96.881 3.424 96.709 3.498 96.485 3.498 c
-96.191 3.498 95.974 3.399 95.838 3.204 c
-95.699 3.017 95.625 2.707 95.618 2.278 c
-95.618 1.764 l
-95.618 1.294 95.684 0.959 95.823 0.764 c
-95.97 0.577 96.191 0.484 96.485 0.484 c
-99.439 4.939 m
-99.439 3.983 l
-100.042 3.983 l
-100.042 3.453 l
-99.439 3.453 l
-99.439 0.984 l
-99.439 0.826 99.462 0.708 99.512 0.631 c
-99.572 0.55 99.66 0.514 99.778 0.514 c
-99.865 0.514 99.954 0.529 100.042 0.558 c
-100.042 0 l
-99.895 -0.048 99.74 -0.074 99.586 -0.074 c
-99.329 -0.074 99.134 0.018 98.998 0.205 c
-98.859 0.389 98.793 0.65 98.793 0.984 c
-98.793 3.453 l
-98.19 3.453 l
-98.19 3.983 l
-98.793 3.983 l
-98.793 4.939 l
-h
-102.511 2.175 m
-102.511 2.811 102.6 3.413 102.776 3.983 c
-102.953 4.548 103.194 5.045 103.51 5.468 c
-103.705 5.732 103.893 5.923 104.069 6.04 c
-104.202 5.585 l
-103.907 5.31 103.665 4.887 103.481 4.321 c
-103.294 3.752 103.191 3.119 103.173 2.425 c
-103.173 2.131 l
-103.173 1.267 103.29 0.503 103.526 -0.162 c
-103.709 -0.662 103.937 -1.044 104.202 -1.309 c
-104.069 -1.735 l
-103.842 -1.577 103.618 -1.327 103.393 -0.985 c
-102.805 -0.103 102.511 0.947 102.511 2.175 c
-106.936 0 m
-106.895 0.087 106.87 0.235 106.862 0.44 c
-106.627 0.095 106.333 -0.074 105.98 -0.074 c
-105.617 -0.074 105.334 0.022 105.128 0.22 c
-104.929 0.426 104.834 0.712 104.834 1.088 c
-104.834 1.488 104.97 1.807 105.245 2.042 c
-105.517 2.285 105.892 2.41 106.363 2.41 c
-106.847 2.41 l
-106.847 2.836 l
-106.847 3.072 106.793 3.237 106.685 3.336 c
-106.575 3.443 106.414 3.498 106.201 3.498 c
-106.003 3.498 105.841 3.439 105.716 3.322 c
-105.598 3.204 105.54 3.057 105.54 2.881 c
-104.892 2.881 l
-104.892 3.075 104.952 3.266 105.069 3.453 c
-105.193 3.638 105.355 3.785 105.554 3.895 c
-105.76 4.001 105.987 4.056 106.245 4.056 c
-106.645 4.056 106.951 3.954 107.156 3.748 c
-107.369 3.542 107.483 3.248 107.495 2.865 c
-107.495 0.852 l
-107.495 0.548 107.531 0.282 107.612 0.058 c
-107.612 0 l
-h
-106.068 0.514 m
-106.234 0.514 106.384 0.558 106.524 0.646 c
-106.671 0.735 106.778 0.845 106.847 0.984 c
-106.847 1.925 l
-106.48 1.925 l
-106.164 1.925 105.922 1.855 105.745 1.72 c
-105.569 1.591 105.48 1.404 105.48 1.161 c
-105.48 0.933 105.525 0.768 105.613 0.661 c
-105.701 0.562 105.852 0.514 106.068 0.514 c
-109.111 3.983 m
-109.126 3.542 l
-109.38 3.883 109.702 4.056 110.096 4.056 c
-110.801 4.056 111.158 3.586 111.169 2.645 c
-111.169 0 l
-110.522 0 l
-110.522 2.616 l
-110.522 2.929 110.467 3.149 110.361 3.278 c
-110.25 3.403 110.096 3.469 109.891 3.469 c
-109.733 3.469 109.585 3.413 109.449 3.307 c
-109.32 3.197 109.218 3.06 109.141 2.896 c
-109.141 0 l
-108.494 0 l
-108.494 3.983 l
-h
-112.756 3.983 m
-112.771 3.542 l
-113.025 3.883 113.348 4.056 113.741 4.056 c
-114.447 4.056 114.803 3.586 114.814 2.645 c
-114.814 0 l
-114.167 0 l
-114.167 2.616 l
-114.167 2.929 114.113 3.149 114.006 3.278 c
-113.895 3.403 113.741 3.469 113.536 3.469 c
-113.378 3.469 113.23 3.413 113.095 3.307 c
-112.966 3.197 112.863 3.06 112.786 2.896 c
-112.786 0 l
-112.139 0 l
-112.139 3.983 l
-h
-115.653 2.175 m
-115.653 2.752 115.788 3.208 116.064 3.542 c
-116.347 3.883 116.718 4.056 117.181 4.056 c
-117.64 4.056 118.007 3.887 118.283 3.557 c
-118.566 3.233 118.713 2.785 118.724 2.219 c
-118.724 1.793 l
-118.724 1.223 118.581 0.768 118.298 0.426 c
-118.022 0.091 117.655 -0.074 117.195 -0.074 c
-116.733 -0.074 116.361 0.087 116.079 0.411 c
-115.803 0.742 115.659 1.183 115.653 1.734 c
-h
-116.299 1.793 m
-116.299 1.389 116.376 1.072 116.534 0.837 c
-116.7 0.602 116.92 0.484 117.195 0.484 c
-117.762 0.484 118.055 0.897 118.078 1.72 c
-118.078 2.175 l
-118.078 2.576 117.993 2.896 117.828 3.131 c
-117.67 3.373 117.453 3.498 117.181 3.498 c
-116.916 3.498 116.7 3.373 116.534 3.131 c
-116.376 2.896 116.299 2.576 116.299 2.175 c
-h
-120.415 4.939 m
-120.415 3.983 l
-121.018 3.983 l
-121.018 3.453 l
-120.415 3.453 l
-120.415 0.984 l
-120.415 0.826 120.436 0.708 120.488 0.631 c
-120.547 0.55 120.635 0.514 120.752 0.514 c
-120.841 0.514 120.929 0.529 121.018 0.558 c
-121.018 0 l
-120.87 -0.048 120.716 -0.074 120.561 -0.074 c
-120.305 -0.074 120.11 0.018 119.973 0.205 c
-119.834 0.389 119.768 0.65 119.768 0.984 c
-119.768 3.453 l
-119.165 3.453 l
-119.165 3.983 l
-119.768 3.983 l
-119.768 4.939 l
-h
-123.825 0 m
-123.784 0.087 123.759 0.235 123.751 0.44 c
-123.516 0.095 123.222 -0.074 122.869 -0.074 c
-122.506 -0.074 122.223 0.022 122.017 0.22 c
-121.818 0.426 121.723 0.712 121.723 1.088 c
-121.723 1.488 121.859 1.807 122.134 2.042 c
-122.406 2.285 122.782 2.41 123.252 2.41 c
-123.736 2.41 l
-123.736 2.836 l
-123.736 3.072 123.682 3.237 123.575 3.336 c
-123.465 3.443 123.303 3.498 123.09 3.498 c
-122.892 3.498 122.73 3.439 122.605 3.322 c
-122.487 3.204 122.429 3.057 122.429 2.881 c
-121.782 2.881 l
-121.782 3.075 121.841 3.266 121.958 3.453 c
-122.083 3.638 122.244 3.785 122.443 3.895 c
-122.649 4.001 122.877 4.056 123.134 4.056 c
-123.534 4.056 123.84 3.954 124.045 3.748 c
-124.258 3.542 124.372 3.248 124.384 2.865 c
-124.384 0.852 l
-124.384 0.548 124.42 0.282 124.501 0.058 c
-124.501 0 l
-h
-122.957 0.514 m
-123.123 0.514 123.274 0.558 123.414 0.646 c
-123.56 0.735 123.667 0.845 123.736 0.984 c
-123.736 1.925 l
-123.369 1.925 l
-123.053 1.925 122.811 1.855 122.634 1.72 c
-122.458 1.591 122.37 1.404 122.37 1.161 c
-122.37 0.933 122.414 0.768 122.502 0.661 c
-122.591 0.562 122.741 0.514 122.957 0.514 c
-126.236 4.939 m
-126.236 3.983 l
-126.838 3.983 l
-126.838 3.453 l
-126.236 3.453 l
-126.236 0.984 l
-126.236 0.826 126.258 0.708 126.309 0.631 c
-126.368 0.55 126.456 0.514 126.574 0.514 c
-126.662 0.514 126.75 0.529 126.838 0.558 c
-126.838 0 l
-126.691 -0.048 126.537 -0.074 126.383 -0.074 c
-126.125 -0.074 125.93 0.018 125.795 0.205 c
-125.655 0.389 125.589 0.65 125.589 0.984 c
-125.589 3.453 l
-124.986 3.453 l
-124.986 3.983 l
-125.589 3.983 l
-125.589 4.939 l
-h
-129.028 -0.074 m
-128.529 -0.074 128.147 0.073 127.882 0.367 c
-127.617 0.661 127.485 1.095 127.485 1.675 c
-127.485 2.146 l
-127.485 2.741 127.61 3.208 127.867 3.542 c
-128.132 3.883 128.492 4.056 128.955 4.056 c
-129.414 4.056 129.756 3.902 129.984 3.601 c
-130.219 3.307 130.34 2.844 130.352 2.219 c
-130.352 1.793 l
-128.132 1.793 l
-128.132 1.705 l
-128.132 1.271 128.209 0.959 128.367 0.764 c
-128.532 0.577 128.764 0.484 129.058 0.484 c
-129.253 0.484 129.425 0.517 129.572 0.588 c
-129.719 0.665 129.855 0.783 129.984 0.941 c
-130.322 0.529 l
-130.036 0.124 129.606 -0.074 129.028 -0.074 c
-128.955 3.498 m
-128.679 3.498 128.477 3.403 128.353 3.218 c
-128.224 3.031 128.15 2.741 128.132 2.352 c
-129.704 2.352 l
-129.704 2.439 l
-129.683 2.822 129.616 3.09 129.498 3.248 c
-129.381 3.413 129.197 3.498 128.955 3.498 c
-130.998 2.175 m
-130.998 2.782 131.108 3.248 131.336 3.571 c
-131.571 3.895 131.898 4.056 132.321 4.056 c
-132.703 4.056 133.001 3.898 133.217 3.586 c
-133.217 5.644 l
-133.864 5.644 l
-133.864 0 l
-133.276 0 l
-133.232 0.426 l
-133.026 0.091 132.721 -0.074 132.321 -0.074 c
-131.91 -0.074 131.586 0.08 131.351 0.396 c
-131.116 0.72 130.998 1.176 130.998 1.764 c
-h
-131.645 1.793 m
-131.645 1.352 131.707 1.021 131.836 0.808 c
-131.972 0.602 132.193 0.5 132.497 0.5 c
-132.821 0.5 133.059 0.661 133.217 0.984 c
-133.217 2.998 l
-133.049 3.31 132.81 3.469 132.497 3.469 c
-132.193 3.469 131.972 3.366 131.836 3.16 c
-131.707 2.954 131.645 2.63 131.645 2.19 c
-h
-136.26 2.131 m
-136.26 1.043 136.014 0.077 135.526 -0.765 c
-135.26 -1.214 134.985 -1.536 134.703 -1.735 c
-134.585 -1.309 l
-134.886 -1.015 135.133 -0.563 135.32 0.043 c
-135.514 0.65 135.613 1.315 135.613 2.042 c
-135.613 2.175 l
-135.613 3.104 135.459 3.939 135.158 4.674 c
-134.989 5.074 134.798 5.394 134.585 5.629 c
-134.703 6.04 l
-134.974 5.853 135.239 5.556 135.496 5.144 c
-136.003 4.292 136.26 3.285 136.26 2.131 c
-f
-Q
-0 0 0 0 k
-q 1 0 0 1 305.5389 158.4271 cm
-0 0 m
--1.088 0 l
--1.088 2.294 l
--2.675 2.294 l
--2.675 0 l
--3.763 0 l
--3.763 5.351 l
--2.675 5.351 l
--2.675 3.19 l
--1.088 3.19 l
--1.088 5.351 l
-0 5.351 l
-h
-3.615 2.323 m
-1.94 2.323 l
-1.94 0.897 l
-3.925 0.897 l
-3.925 0 l
-0.852 0 l
-0.852 5.351 l
-3.925 5.351 l
-3.925 4.454 l
-1.94 4.454 l
-1.94 3.19 l
-3.615 3.19 l
-h
-7.1 1.103 m
-5.629 1.103 l
-5.336 0 l
-4.204 0 l
-5.865 5.351 l
-6.865 5.351 l
-8.54 0 l
-7.393 0 l
-h
-5.865 1.999 m
-6.865 1.999 l
-6.364 3.911 l
-h
-9.04 0 m
-9.04 5.351 l
-10.466 5.351 l
-11.083 5.351 11.575 5.149 11.95 4.748 c
-12.321 4.355 12.513 3.815 12.523 3.131 c
-12.523 2.264 l
-12.523 1.559 12.336 1.004 11.965 0.603 c
-11.59 0.198 11.083 0 10.436 0 c
-h
-10.127 4.454 m
-10.127 0.897 l
-10.451 0.897 l
-10.811 0.897 11.068 0.989 11.215 1.176 c
-11.362 1.371 11.436 1.698 11.436 2.161 c
-11.436 3.102 l
-11.436 3.601 11.366 3.947 11.23 4.146 c
-11.09 4.341 10.855 4.443 10.524 4.454 c
-h
-f
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 331.7103 158.4271 cm
-0 0 m
--0.04 0.088 -0.066 0.235 -0.073 0.441 c
--0.309 0.096 -0.603 -0.073 -0.956 -0.073 c
--1.319 -0.073 -1.602 0.023 -1.808 0.221 c
--2.007 0.426 -2.102 0.713 -2.102 1.088 c
--2.102 1.488 -1.966 1.808 -1.691 2.043 c
--1.419 2.286 -1.043 2.411 -0.573 2.411 c
--0.088 2.411 l
--0.088 2.837 l
--0.088 3.072 -0.143 3.238 -0.25 3.337 c
--0.36 3.444 -0.522 3.499 -0.735 3.499 c
--0.933 3.499 -1.095 3.44 -1.22 3.323 c
--1.338 3.205 -1.396 3.057 -1.396 2.881 c
--2.043 2.881 l
--2.043 3.076 -1.984 3.267 -1.866 3.454 c
--1.741 3.639 -1.58 3.786 -1.382 3.896 c
--1.176 4.002 -0.948 4.057 -0.691 4.057 c
--0.291 4.057 0.015 3.954 0.22 3.749 c
-0.434 3.543 0.548 3.248 0.559 2.866 c
-0.559 0.853 l
-0.559 0.548 0.595 0.283 0.676 0.059 c
-0.676 0 l
-h
--0.867 0.515 m
--0.702 0.515 -0.551 0.559 -0.411 0.647 c
--0.264 0.736 -0.158 0.846 -0.088 0.985 c
--0.088 1.926 l
--0.455 1.926 l
--0.771 1.926 -1.014 1.856 -1.191 1.72 c
--1.367 1.592 -1.455 1.405 -1.455 1.162 c
--1.455 0.934 -1.411 0.769 -1.323 0.661 c
--1.234 0.563 -1.084 0.515 -0.867 0.515 c
-6.159 1.794 m
-6.159 1.166 6.041 0.695 5.806 0.383 c
-5.579 0.077 5.262 -0.073 4.85 -0.073 c
-4.447 -0.073 4.138 0.077 3.925 0.383 c
-3.925 -1.529 l
-3.278 -1.529 l
-3.278 3.984 l
-3.866 3.984 l
-3.91 3.543 l
-4.123 3.884 4.432 4.057 4.836 4.057 c
-5.277 4.057 5.604 3.903 5.821 3.601 c
-6.034 3.296 6.148 2.841 6.159 2.234 c
-h
-5.512 2.176 m
-5.512 2.617 5.442 2.94 5.307 3.146 c
-5.167 3.359 4.946 3.469 4.645 3.469 c
-4.329 3.469 4.09 3.315 3.925 3.013 c
-3.925 0.941 l
-4.09 0.636 4.329 0.485 4.645 0.485 c
-4.939 0.485 5.152 0.588 5.292 0.794 c
-5.428 1.008 5.501 1.338 5.512 1.779 c
-h
-7.703 0 -0.647 5.644 re
-10.76 0 m
-10.72 0.088 10.693 0.235 10.686 0.441 c
-10.451 0.096 10.157 -0.073 9.804 -0.073 c
-9.44 -0.073 9.157 0.023 8.952 0.221 c
-8.754 0.426 8.658 0.713 8.658 1.088 c
-8.658 1.488 8.794 1.808 9.07 2.043 c
-9.342 2.286 9.716 2.411 10.186 2.411 c
-10.672 2.411 l
-10.672 2.837 l
-10.672 3.072 10.616 3.238 10.51 3.337 c
-10.4 3.444 10.238 3.499 10.025 3.499 c
-9.826 3.499 9.664 3.44 9.54 3.323 c
-9.422 3.205 9.363 3.057 9.363 2.881 c
-8.717 2.881 l
-8.717 3.076 8.775 3.267 8.893 3.454 c
-9.018 3.639 9.18 3.786 9.378 3.896 c
-9.584 4.002 9.812 4.057 10.069 4.057 c
-10.469 4.057 10.774 3.954 10.98 3.749 c
-11.194 3.543 11.308 3.248 11.318 2.866 c
-11.318 0.853 l
-11.318 0.548 11.355 0.283 11.436 0.059 c
-11.436 0 l
-h
-9.893 0.515 m
-10.057 0.515 10.209 0.559 10.348 0.647 c
-10.495 0.736 10.602 0.846 10.672 0.985 c
-10.672 1.926 l
-10.304 1.926 l
-9.988 1.926 9.745 1.856 9.569 1.72 c
-9.392 1.592 9.305 1.405 9.305 1.162 c
-9.305 0.934 9.349 0.769 9.437 0.661 c
-9.525 0.563 9.676 0.515 9.893 0.515 c
-13.7 0.485 m
-13.913 0.485 14.086 0.548 14.214 0.676 c
-14.35 0.813 14.423 1.004 14.435 1.249 c
-15.052 1.249 l
-15.03 0.867 14.894 0.548 14.641 0.294 c
-14.383 0.048 14.071 -0.073 13.7 -0.073 c
-13.207 -0.073 12.833 0.077 12.567 0.383 c
-12.311 0.695 12.185 1.162 12.185 1.779 c
-12.185 2.22 l
-12.185 2.816 12.311 3.271 12.567 3.587 c
-12.833 3.899 13.207 4.057 13.7 4.057 c
-14.1 4.057 14.42 3.925 14.655 3.66 c
-14.898 3.404 15.03 3.057 15.052 2.617 c
-14.435 2.617 l
-14.412 2.911 14.339 3.131 14.214 3.278 c
-14.096 3.425 13.924 3.499 13.7 3.499 c
-13.406 3.499 13.189 3.4 13.053 3.205 c
-12.914 3.017 12.84 2.708 12.833 2.278 c
-12.833 1.764 l
-12.833 1.294 12.898 0.96 13.038 0.765 c
-13.185 0.578 13.406 0.485 13.7 0.485 c
-17.228 -0.073 m
-16.727 -0.073 16.345 0.073 16.081 0.368 c
-15.817 0.661 15.684 1.095 15.684 1.676 c
-15.684 2.147 l
-15.684 2.741 15.809 3.209 16.066 3.543 c
-16.33 3.884 16.691 4.057 17.153 4.057 c
-17.613 4.057 17.955 3.903 18.183 3.601 c
-18.418 3.308 18.539 2.845 18.55 2.22 c
-18.55 1.794 l
-16.33 1.794 l
-16.33 1.706 l
-16.33 1.272 16.407 0.96 16.565 0.765 c
-16.731 0.578 16.962 0.485 17.257 0.485 c
-17.452 0.485 17.624 0.518 17.771 0.588 c
-17.918 0.665 18.054 0.783 18.183 0.941 c
-18.521 0.53 l
-18.234 0.125 17.804 -0.073 17.228 -0.073 c
-17.153 3.499 m
-16.878 3.499 16.676 3.404 16.551 3.219 c
-16.422 3.032 16.349 2.741 16.33 2.352 c
-17.903 2.352 l
-17.903 2.44 l
-17.882 2.822 17.816 3.091 17.698 3.248 c
-17.581 3.414 17.396 3.499 17.153 3.499 c
-24.018 1.147 m
-24.621 3.984 l
-25.267 3.984 l
-24.283 0 l
-23.769 0 l
-22.99 2.852 l
-22.24 0 l
-21.71 0 l
-20.756 3.984 l
-21.387 3.984 l
-22.005 1.22 l
-22.74 3.984 l
-23.254 3.984 l
-h
-26.591 3.572 m
-26.844 3.896 27.164 4.057 27.546 4.057 c
-28.251 4.057 28.608 3.587 28.619 2.646 c
-28.619 0 l
-27.972 0 l
-27.972 2.617 l
-27.972 2.929 27.917 3.15 27.811 3.278 c
-27.7 3.404 27.546 3.469 27.341 3.469 c
-27.183 3.469 27.035 3.414 26.9 3.308 c
-26.771 3.198 26.668 3.061 26.591 2.896 c
-26.591 0 l
-25.944 0 l
-25.944 5.644 l
-26.591 5.644 l
-h
-31 -0.073 m
-30.501 -0.073 30.119 0.073 29.853 0.368 c
-29.589 0.661 29.457 1.095 29.457 1.676 c
-29.457 2.147 l
-29.457 2.741 29.582 3.209 29.839 3.543 c
-30.104 3.884 30.464 4.057 30.927 4.057 c
-31.386 4.057 31.728 3.903 31.956 3.601 c
-32.191 3.308 32.313 2.845 32.323 2.22 c
-32.323 1.794 l
-30.104 1.794 l
-30.104 1.706 l
-30.104 1.272 30.181 0.96 30.339 0.765 c
-30.504 0.578 30.736 0.485 31.029 0.485 c
-31.224 0.485 31.397 0.518 31.544 0.588 c
-31.692 0.665 31.827 0.783 31.956 0.941 c
-32.294 0.53 l
-32.007 0.125 31.577 -0.073 31 -0.073 c
-30.927 3.499 m
-30.651 3.499 30.449 3.404 30.324 3.219 c
-30.196 3.032 30.122 2.741 30.104 2.352 c
-31.677 2.352 l
-31.677 2.44 l
-31.655 2.822 31.588 3.091 31.471 3.248 c
-31.353 3.414 31.17 3.499 30.927 3.499 c
-34.749 3.366 m
-34.661 3.385 34.561 3.396 34.455 3.396 c
-34.121 3.396 33.885 3.212 33.749 2.852 c
-33.749 0 l
-33.103 0 l
-33.103 3.984 l
-33.734 3.984 l
-33.749 3.572 l
-33.926 3.896 34.168 4.057 34.484 4.057 c
-34.591 4.057 34.678 4.035 34.749 3.998 c
-h
-36.748 -0.073 m
-36.248 -0.073 35.866 0.073 35.601 0.368 c
-35.337 0.661 35.204 1.095 35.204 1.676 c
-35.204 2.147 l
-35.204 2.741 35.329 3.209 35.586 3.543 c
-35.851 3.884 36.211 4.057 36.674 4.057 c
-37.134 4.057 37.475 3.903 37.703 3.601 c
-37.938 3.308 38.059 2.845 38.071 2.22 c
-38.071 1.794 l
-35.851 1.794 l
-35.851 1.706 l
-35.851 1.272 35.928 0.96 36.086 0.765 c
-36.251 0.578 36.483 0.485 36.777 0.485 c
-36.972 0.485 37.144 0.518 37.292 0.588 c
-37.439 0.665 37.574 0.783 37.703 0.941 c
-38.042 0.53 l
-37.755 0.125 37.325 -0.073 36.748 -0.073 c
-36.674 3.499 m
-36.398 3.499 36.197 3.404 36.072 3.219 c
-35.943 3.032 35.869 2.741 35.851 2.352 c
-37.424 2.352 l
-37.424 2.44 l
-37.402 2.822 37.336 3.091 37.218 3.248 c
-37.101 3.414 36.917 3.499 36.674 3.499 c
-41.657 1.088 m
-42.377 3.984 l
-43.068 3.984 l
-41.774 -0.558 l
-41.676 -0.9 41.533 -1.161 41.348 -1.338 c
-41.172 -1.514 40.97 -1.602 40.746 -1.602 c
-40.658 -1.602 40.544 -1.579 40.408 -1.543 c
-40.408 -0.999 l
-40.554 -1.014 l
-40.739 -1.014 40.885 -0.97 40.996 -0.881 c
-41.102 -0.793 41.19 -0.635 41.26 -0.411 c
-41.377 0.03 l
-40.217 3.984 l
-40.922 3.984 l
-h
-43.509 2.176 m
-43.509 2.753 43.646 3.209 43.921 3.543 c
-44.203 3.884 44.575 4.057 45.038 4.057 c
-45.497 4.057 45.865 3.888 46.14 3.558 c
-46.424 3.234 46.57 2.786 46.582 2.22 c
-46.582 1.794 l
-46.582 1.224 46.438 0.769 46.155 0.426 c
-45.88 0.092 45.512 -0.073 45.053 -0.073 c
-44.59 -0.073 44.219 0.088 43.935 0.412 c
-43.66 0.742 43.517 1.183 43.509 1.735 c
-h
-44.156 1.794 m
-44.156 1.389 44.234 1.073 44.392 0.838 c
-44.556 0.603 44.777 0.485 45.053 0.485 c
-45.618 0.485 45.913 0.897 45.934 1.72 c
-45.934 2.176 l
-45.934 2.577 45.85 2.896 45.685 3.131 c
-45.527 3.373 45.31 3.499 45.038 3.499 c
-44.774 3.499 44.556 3.373 44.392 3.131 c
-44.234 2.896 44.156 2.577 44.156 2.176 c
-h
-49.448 0.353 m
-49.231 0.067 48.918 -0.073 48.507 -0.073 c
-48.143 -0.073 47.868 0.048 47.684 0.294 c
-47.507 0.548 47.412 0.912 47.405 1.382 c
-47.405 3.984 l
-48.051 3.984 l
-48.051 1.441 l
-48.051 0.813 48.235 0.5 48.61 0.5 c
-49.011 0.5 49.286 0.676 49.433 1.029 c
-49.433 3.984 l
-50.079 3.984 l
-50.079 0 l
-49.462 0 l
-h
-52.711 3.366 m
-52.623 3.385 52.523 3.396 52.417 3.396 c
-52.082 3.396 51.847 3.212 51.711 2.852 c
-51.711 0 l
-51.064 0 l
-51.064 3.984 l
-51.696 3.984 l
-51.711 3.572 l
-51.887 3.896 52.13 4.057 52.446 4.057 c
-52.553 4.057 52.641 4.035 52.711 3.998 c
-h
-f
-Q
-q 1 0 0 1 389.5808 160.1769 cm
-0 0 m
-0.353 2.234 l
-1.352 2.234 l
-0.529 -1.75 l
--0.339 -1.75 l
--0.897 0.558 l
--1.455 -1.75 l
--2.323 -1.75 l
--3.146 2.234 l
--2.147 2.234 l
--1.794 0 l
--1.264 2.234 l
--0.53 2.234 l
-h
-1.749 0.367 m
-1.749 0.974 1.888 1.448 2.175 1.793 c
-2.458 2.135 2.851 2.308 3.351 2.308 c
-3.858 2.308 4.255 2.135 4.542 1.793 c
-4.825 1.448 4.968 0.974 4.968 0.367 c
-4.968 0.103 l
-4.968 -0.497 4.825 -0.967 4.542 -1.309 c
-4.255 -1.654 3.858 -1.823 3.351 -1.823 c
-2.84 -1.823 2.443 -1.654 2.161 -1.309 c
-1.885 -0.967 1.749 -0.493 1.749 0.118 c
-h
-2.792 0.103 m
-2.792 -0.603 2.977 -0.956 3.351 -0.956 c
-3.704 -0.956 3.895 -0.661 3.925 -0.073 c
-3.925 0.367 l
-3.925 0.727 3.873 0.999 3.777 1.176 c
-3.678 1.352 3.534 1.44 3.351 1.44 c
-3.175 1.44 3.035 1.352 2.94 1.176 c
-2.84 0.999 2.792 0.727 2.792 0.367 c
-h
-7.57 1.22 m
-7.231 1.249 l
-6.945 1.249 6.754 1.124 6.659 0.881 c
-6.659 -1.75 l
-5.614 -1.75 l
-5.614 2.234 l
-6.585 2.234 l
-6.614 1.793 l
-6.78 2.135 7.011 2.308 7.305 2.308 c
-7.422 2.308 7.515 2.285 7.584 2.248 c
-h
-9.437 -0.221 m
-9.157 -0.53 l
-9.157 -1.75 l
-8.114 -1.75 l
-8.114 3.895 l
-9.157 3.895 l
-9.157 0.852 l
-9.275 1.043 l
-9.995 2.234 l
-11.245 2.234 l
-10.083 0.588 l
-11.347 -1.75 l
-10.157 -1.75 l
-h
-12.803 -1.75 -1.043 3.984 re
-11.715 3.262 m
-11.715 3.418 11.763 3.546 11.862 3.645 c
-11.968 3.752 12.104 3.807 12.274 3.807 c
-12.45 3.807 12.586 3.752 12.685 3.645 c
-12.791 3.546 12.847 3.418 12.847 3.262 c
-12.847 3.094 12.791 2.958 12.685 2.851 c
-12.586 2.753 12.45 2.705 12.274 2.705 c
-12.104 2.705 11.968 2.753 11.862 2.851 c
-11.763 2.958 11.715 3.094 11.715 3.262 c
-14.566 2.234 m
-14.596 1.837 l
-14.831 2.15 15.133 2.308 15.507 2.308 c
-16.191 2.308 16.544 1.826 16.565 0.867 c
-16.565 -1.75 l
-15.522 -1.75 l
-15.522 0.793 l
-15.522 1.018 15.486 1.18 15.419 1.278 c
-15.349 1.374 15.232 1.425 15.066 1.425 c
-14.879 1.425 14.732 1.33 14.626 1.146 c
-14.626 -1.75 l
-13.581 -1.75 l
-13.581 2.234 l
-h
-17.183 0.367 m
-17.183 1.014 17.3 1.499 17.535 1.822 c
-17.771 2.146 18.102 2.308 18.535 2.308 c
-18.888 2.308 19.16 2.165 19.359 1.881 c
-19.403 2.234 l
-20.343 2.234 l
-20.343 -1.75 l
-20.343 -2.257 20.2 -2.646 19.917 -2.911 c
-19.63 -3.183 19.226 -3.323 18.697 -3.323 c
-18.47 -3.323 18.234 -3.278 17.992 -3.19 c
-17.756 -3.102 17.58 -2.988 17.462 -2.852 c
-17.815 -2.132 l
-17.911 -2.238 18.039 -2.323 18.197 -2.382 c
-18.351 -2.448 18.499 -2.484 18.638 -2.484 c
-18.873 -2.484 19.039 -2.425 19.137 -2.308 c
-19.245 -2.198 19.299 -2.022 19.299 -1.779 c
-19.299 -1.426 l
-19.101 -1.691 18.844 -1.823 18.52 -1.823 c
-18.098 -1.823 17.771 -1.661 17.535 -1.338 c
-17.308 -1.008 17.19 -0.537 17.183 0.073 c
-h
-18.227 0.103 m
-18.227 -0.272 18.274 -0.54 18.374 -0.706 c
-18.47 -0.875 18.624 -0.956 18.829 -0.956 c
-19.042 -0.956 19.201 -0.879 19.299 -0.721 c
-19.299 1.176 l
-19.189 1.341 19.035 1.425 18.829 1.425 c
-18.624 1.425 18.47 1.341 18.374 1.176 c
-18.274 1.007 18.227 0.738 18.227 0.367 c
-h
-22.695 0.367 m
-22.695 1.014 22.802 1.499 23.018 1.822 c
-23.243 2.146 23.566 2.308 23.989 2.308 c
-24.301 2.308 24.554 2.175 24.753 1.911 c
-24.753 3.895 l
-25.811 3.895 l
-25.811 -1.75 l
-24.856 -1.75 l
-24.812 -1.338 l
-24.595 -1.661 24.319 -1.823 23.989 -1.823 c
-23.577 -1.823 23.257 -1.669 23.033 -1.353 c
-22.817 -1.029 22.703 -0.559 22.695 0.058 c
-h
-23.739 0.103 m
-23.739 -0.291 23.775 -0.566 23.856 -0.721 c
-23.945 -0.879 24.091 -0.956 24.297 -0.956 c
-24.503 -0.956 24.654 -0.864 24.753 -0.676 c
-24.753 1.132 l
-24.654 1.326 24.503 1.425 24.297 1.425 c
-24.099 1.425 23.959 1.344 23.871 1.19 c
-23.783 1.043 23.739 0.771 23.739 0.382 c
-h
-27.663 -1.75 -1.043 3.984 re
-26.576 3.262 m
-26.576 3.418 26.623 3.546 26.723 3.645 c
-26.829 3.752 26.965 3.807 27.134 3.807 c
-27.311 3.807 27.446 3.752 27.546 3.645 c
-27.652 3.546 27.708 3.418 27.708 3.262 c
-27.708 3.094 27.652 2.958 27.546 2.851 c
-27.446 2.753 27.311 2.705 27.134 2.705 c
-26.965 2.705 26.829 2.753 26.723 2.851 c
-26.623 2.958 26.576 3.094 26.576 3.262 c
-30.426 1.22 m
-30.089 1.249 l
-29.802 1.249 29.611 1.124 29.516 0.881 c
-29.516 -1.75 l
-28.471 -1.75 l
-28.471 2.234 l
-29.442 2.234 l
-29.471 1.793 l
-29.637 2.135 29.868 2.308 30.162 2.308 c
-30.28 2.308 30.372 2.285 30.441 2.248 c
-h
-32.5 -1.823 m
-31.97 -1.823 31.551 -1.669 31.249 -1.353 c
-30.956 -1.029 30.809 -0.57 30.809 0.029 c
-30.809 0.338 l
-30.809 0.962 30.945 1.448 31.22 1.793 c
-31.492 2.135 31.885 2.308 32.396 2.308 c
-32.896 2.308 33.267 2.146 33.514 1.822 c
-33.767 1.499 33.9 1.022 33.911 0.397 c
-33.911 -0.103 l
-31.837 -0.103 l
-31.856 -0.397 31.918 -0.614 32.029 -0.75 c
-32.147 -0.89 32.327 -0.956 32.573 -0.956 c
-32.915 -0.956 33.205 -0.838 33.44 -0.603 c
-33.852 -1.235 l
-33.723 -1.411 33.535 -1.555 33.293 -1.661 c
-33.047 -1.768 32.782 -1.823 32.5 -1.823 c
-31.853 0.617 m
-32.882 0.617 l
-32.882 0.72 l
-32.882 0.955 32.841 1.132 32.764 1.249 c
-32.694 1.374 32.566 1.44 32.382 1.44 c
-32.205 1.44 32.073 1.371 31.985 1.234 c
-31.904 1.106 31.86 0.9 31.853 0.617 c
-35.939 -0.956 m
-36.233 -0.956 36.383 -0.761 36.394 -0.368 c
-37.364 -0.368 l
-37.364 -0.802 37.233 -1.154 36.968 -1.426 c
-36.703 -1.691 36.365 -1.823 35.953 -1.823 c
-35.442 -1.823 35.049 -1.669 34.777 -1.353 c
-34.513 -1.029 34.374 -0.559 34.366 0.058 c
-34.366 0.382 l
-34.366 1.007 34.499 1.484 34.763 1.808 c
-35.035 2.138 35.432 2.308 35.953 2.308 c
-36.383 2.308 36.726 2.167 36.982 1.896 c
-37.236 1.62 37.364 1.238 37.364 0.75 c
-36.394 0.75 l
-36.394 0.962 36.354 1.132 36.277 1.249 c
-36.207 1.374 36.09 1.44 35.924 1.44 c
-35.748 1.44 35.619 1.374 35.542 1.249 c
-35.461 1.12 35.417 0.871 35.409 0.5 c
-35.409 0.087 l
-35.409 -0.235 35.424 -0.463 35.454 -0.588 c
-35.49 -0.717 35.546 -0.809 35.615 -0.867 c
-35.693 -0.927 35.799 -0.956 35.939 -0.956 c
-39.172 3.204 m
-39.172 2.234 l
-39.702 2.234 l
-39.702 1.44 l
-39.172 1.44 l
-39.172 -0.53 l
-39.172 -0.688 39.191 -0.794 39.232 -0.853 c
-39.28 -0.912 39.363 -0.941 39.481 -0.941 c
-39.588 -0.941 39.673 -0.933 39.731 -0.912 c
-39.731 -1.72 l
-39.555 -1.786 39.363 -1.823 39.158 -1.823 c
-38.482 -1.823 38.137 -1.437 38.129 -0.661 c
-38.129 1.44 l
-37.674 1.44 l
-37.674 2.234 l
-38.129 2.234 l
-38.129 3.204 l
-h
-40.055 0.367 m
-40.055 0.974 40.194 1.448 40.481 1.793 c
-40.764 2.135 41.157 2.308 41.657 2.308 c
-42.164 2.308 42.561 2.135 42.848 1.793 c
-43.13 1.448 43.274 0.974 43.274 0.367 c
-43.274 0.103 l
-43.274 -0.497 43.13 -0.967 42.848 -1.309 c
-42.561 -1.654 42.164 -1.823 41.657 -1.823 c
-41.146 -1.823 40.749 -1.654 40.466 -1.309 c
-40.19 -0.967 40.055 -0.493 40.055 0.118 c
-h
-41.098 0.103 m
-41.098 -0.603 41.282 -0.956 41.657 -0.956 c
-42.01 -0.956 42.201 -0.661 42.23 -0.073 c
-42.23 0.367 l
-42.23 0.727 42.179 0.999 42.083 1.176 c
-41.984 1.352 41.84 1.44 41.657 1.44 c
-41.48 1.44 41.341 1.352 41.245 1.176 c
-41.146 0.999 41.098 0.727 41.098 0.367 c
-h
-45.875 1.22 m
-45.537 1.249 l
-45.251 1.249 45.06 1.124 44.965 0.881 c
-44.965 -1.75 l
-43.92 -1.75 l
-43.92 2.234 l
-44.89 2.234 l
-44.92 1.793 l
-45.085 2.135 45.317 2.308 45.611 2.308 c
-45.728 2.308 45.821 2.285 45.89 2.248 c
-h
-47.772 -0.015 m
-48.3 2.234 l
-49.403 2.234 l
-48.095 -2.352 l
-47.897 -3.017 47.529 -3.352 46.993 -3.352 c
-46.864 -3.352 46.721 -3.329 46.567 -3.293 c
-46.567 -2.469 l
-46.684 -2.484 l
-46.849 -2.484 46.97 -2.448 47.051 -2.382 c
-47.128 -2.323 47.191 -2.213 47.242 -2.058 c
-47.316 -1.794 l
-46.17 2.234 l
-47.286 2.234 l
-h
-f
-Q
-441.968 158.427 -0.646 3.984 re
-442.012 163.454 m
-442.012 163.344 441.983 163.252 441.924 163.175 c
-441.865 163.105 441.769 163.072 441.644 163.072 c
-441.527 163.072 441.432 163.105 441.366 163.175 c
-441.306 163.252 441.277 163.344 441.277 163.454 c
-441.277 163.572 441.306 163.664 441.366 163.734 c
-441.432 163.811 441.527 163.851 441.644 163.851 c
-441.769 163.851 441.865 163.811 441.924 163.734 c
-441.983 163.653 442.012 163.561 442.012 163.454 c
-444.923 159.441 m
-444.923 159.589 444.867 159.71 444.761 159.809 c
-444.651 159.905 444.445 160.023 444.144 160.162 c
-443.798 160.309 443.556 160.43 443.408 160.53 c
-443.261 160.636 443.151 160.754 443.085 160.882 c
-443.015 161.008 442.982 161.166 442.982 161.353 c
-442.982 161.675 443.099 161.945 443.335 162.161 c
-443.57 162.374 443.872 162.485 444.246 162.485 c
-444.628 162.485 444.937 162.371 445.172 162.146 c
-445.407 161.918 445.525 161.632 445.525 161.279 c
-444.878 161.279 l
-444.878 161.455 444.819 161.606 444.702 161.735 c
-444.584 161.86 444.43 161.926 444.246 161.926 c
-444.048 161.926 443.897 161.871 443.791 161.764 c
-443.68 161.665 443.629 161.532 443.629 161.367 c
-443.629 161.239 443.666 161.132 443.747 161.044 c
-443.824 160.963 444.015 160.86 444.32 160.735 c
-444.798 160.548 445.129 160.36 445.305 160.177 c
-445.481 160 445.569 159.772 445.569 159.5 c
-445.569 159.148 445.445 158.868 445.202 158.662 c
-444.967 158.457 444.651 158.354 444.261 158.354 c
-443.838 158.354 443.5 158.471 443.247 158.706 c
-442.989 158.949 442.864 159.254 442.864 159.618 c
-443.512 159.618 l
-443.519 159.39 443.589 159.214 443.718 159.088 c
-443.842 158.971 444.026 158.913 444.261 158.913 c
-444.474 158.913 444.636 158.961 444.746 159.059 c
-444.863 159.155 444.923 159.284 444.923 159.441 c
-448.744 162.411 m
-448.759 161.97 l
-449.012 162.311 449.336 162.485 449.729 162.485 c
-450.434 162.485 450.791 162.014 450.802 161.073 c
-450.802 158.427 l
-450.155 158.427 l
-450.155 161.044 l
-450.155 161.357 450.1 161.577 449.993 161.706 c
-449.883 161.831 449.729 161.897 449.523 161.897 c
-449.365 161.897 449.218 161.841 449.083 161.735 c
-448.954 161.625 448.851 161.488 448.774 161.323 c
-448.774 158.427 l
-448.127 158.427 l
-448.127 162.411 l
-h
-451.64 160.603 m
-451.64 161.18 451.776 161.636 452.052 161.97 c
-452.335 162.311 452.705 162.485 453.168 162.485 c
-453.628 162.485 453.995 162.315 454.271 161.985 c
-454.554 161.661 454.701 161.213 454.712 160.647 c
-454.712 160.221 l
-454.712 159.651 454.569 159.196 454.286 158.853 c
-454.01 158.519 453.642 158.354 453.183 158.354 c
-452.72 158.354 452.349 158.516 452.067 158.839 c
-451.791 159.169 451.647 159.611 451.64 160.162 c
-h
-452.287 160.221 m
-452.287 159.817 452.364 159.5 452.522 159.265 c
-452.687 159.03 452.908 158.913 453.183 158.913 c
-453.75 158.913 454.043 159.324 454.066 160.147 c
-454.066 160.603 l
-454.066 161.004 453.981 161.323 453.815 161.558 c
-453.657 161.801 453.441 161.926 453.168 161.926 c
-452.904 161.926 452.687 161.801 452.522 161.558 c
-452.364 161.323 452.287 161.004 452.287 160.603 c
-h
-458.519 159.574 m
-459.122 162.411 l
-459.768 162.411 l
-458.783 158.427 l
-458.269 158.427 l
-457.49 161.279 l
-456.74 158.427 l
-456.211 158.427 l
-455.256 162.411 l
-455.888 162.411 l
-456.505 159.647 l
-457.241 162.411 l
-457.754 162.411 l
-h
-f
-0.69 w
-288.095 207.441 207.848 -54.945 re
-S
-0.793 0.801 0.129 0.016 K
-0.799 w
-q 1 0 0 1 563.3749 119.0558 cm
-0 0 m
-26.08 -0.095 26.08 27.113 48.253 27.098 c
-133.768 27.098 l
-155.865 27.113 155.865 -0.095 181.335 0 c
-S
-Q
-q 1 0 0 1 312.2897 119.0558 cm
-0 0 m
-458.551 0 l
-S
-Q
-0 0 0 0 k
-q 1 0 0 1 541.4877 119.0558 cm
-0 0 m
-0 -2.076 -1.679 -3.755 -3.755 -3.755 c
--5.828 -3.755 -7.511 -2.076 -7.511 0 c
--7.511 2.076 -5.828 3.755 -3.755 3.755 c
--1.679 3.755 0 2.076 0 0 c
-f
-Q
-0.797 0.801 0.129 0.016 K
-0.709 w
-q 1 0 0 1 541.4877 119.0558 cm
-0 0 m
-0 -2.076 -1.679 -3.755 -3.755 -3.755 c
--5.828 -3.755 -7.511 -2.076 -7.511 0 c
--7.511 2.076 -5.828 3.755 -3.755 3.755 c
--1.679 3.755 0 2.076 0 0 c
-h
-S
-Q
-q 1 0 0 1 567.4135 119.0558 cm
-0 0 m
-0 -2.076 -1.683 -3.755 -3.755 -3.755 c
--5.832 -3.755 -7.515 -2.076 -7.515 0 c
--7.515 2.076 -5.832 3.755 -3.755 3.755 c
--1.683 3.755 0 2.076 0 0 c
-f
-Q
-q 1 0 0 1 567.4135 119.0558 cm
-0 0 m
-0 -2.076 -1.683 -3.755 -3.755 -3.755 c
--5.832 -3.755 -7.515 -2.076 -7.515 0 c
--7.515 2.076 -5.832 3.755 -3.755 3.755 c
--1.683 3.755 0 2.076 0 0 c
-h
-S
-Q
-q 1 0 0 1 593.3356 119.0558 cm
-0 0 m
-0 -2.076 -1.684 -3.755 -3.756 -3.755 c
--5.833 -3.755 -7.512 -2.076 -7.512 0 c
--7.512 2.076 -5.833 3.755 -3.756 3.755 c
--1.684 3.755 0 2.076 0 0 c
-f
-Q
-q 1 0 0 1 593.3356 119.0558 cm
-0 0 m
-0 -2.076 -1.684 -3.755 -3.756 -3.755 c
--5.833 -3.755 -7.512 -2.076 -7.512 0 c
--7.512 2.076 -5.833 3.755 -3.756 3.755 c
--1.684 3.755 0 2.076 0 0 c
-h
-S
-Q
-q 1 0 0 1 619.2567 119.0558 cm
-0 0 m
-0 -2.076 -1.679 -3.755 -3.755 -3.755 c
--5.832 -3.755 -7.511 -2.076 -7.511 0 c
--7.511 2.076 -5.832 3.755 -3.755 3.755 c
--1.679 3.755 0 2.076 0 0 c
-f
-Q
-q 1 0 0 1 619.2567 119.0558 cm
-0 0 m
-0 -2.076 -1.679 -3.755 -3.755 -3.755 c
--5.832 -3.755 -7.511 -2.076 -7.511 0 c
--7.511 2.076 -5.832 3.755 -3.755 3.755 c
--1.679 3.755 0 2.076 0 0 c
-h
-S
-Q
-q 1 0 0 1 645.1788 119.0558 cm
-0 0 m
-0 -2.076 -1.679 -3.755 -3.755 -3.755 c
--5.828 -3.755 -7.511 -2.076 -7.511 0 c
--7.511 2.076 -5.828 3.755 -3.755 3.755 c
--1.679 3.755 0 2.076 0 0 c
-f
-Q
-q 1 0 0 1 645.1788 119.0558 cm
-0 0 m
-0 -2.076 -1.679 -3.755 -3.755 -3.755 c
--5.828 -3.755 -7.511 -2.076 -7.511 0 c
--7.511 2.076 -5.828 3.755 -3.755 3.755 c
--1.679 3.755 0 2.076 0 0 c
-h
-S
-Q
-q 1 0 0 1 671.1036 119.0558 cm
-0 0 m
-0 -2.076 -1.683 -3.755 -3.759 -3.755 c
--5.832 -3.755 -7.515 -2.076 -7.515 0 c
--7.515 2.076 -5.832 3.755 -3.759 3.755 c
--1.683 3.755 0 2.076 0 0 c
-f
-Q
-q 1 0 0 1 671.1036 119.0558 cm
-0 0 m
-0 -2.076 -1.683 -3.755 -3.759 -3.755 c
--5.832 -3.755 -7.515 -2.076 -7.515 0 c
--7.515 2.076 -5.832 3.755 -3.759 3.755 c
--1.683 3.755 0 2.076 0 0 c
-h
-S
-Q
-q 1 0 0 1 697.0258 119.0558 cm
-0 0 m
-0 -2.076 -1.683 -3.755 -3.755 -3.755 c
--5.832 -3.755 -7.515 -2.076 -7.515 0 c
--7.515 2.076 -5.832 3.755 -3.755 3.755 c
--1.683 3.755 0 2.076 0 0 c
-f
-Q
-q 1 0 0 1 697.0258 119.0558 cm
-0 0 m
-0 -2.076 -1.683 -3.755 -3.755 -3.755 c
--5.832 -3.755 -7.515 -2.076 -7.515 0 c
--7.515 2.076 -5.832 3.755 -3.755 3.755 c
--1.683 3.755 0 2.076 0 0 c
-h
-S
-Q
-q 1 0 0 1 722.9478 119.0558 cm
-0 0 m
-0 -2.076 -1.683 -3.755 -3.755 -3.755 c
--5.832 -3.755 -7.511 -2.076 -7.511 0 c
--7.511 2.076 -5.832 3.755 -3.755 3.755 c
--1.683 3.755 0 2.076 0 0 c
-f
-Q
-q 1 0 0 1 722.9478 119.0558 cm
-0 0 m
-0 -2.076 -1.683 -3.755 -3.755 -3.755 c
--5.832 -3.755 -7.511 -2.076 -7.511 0 c
--7.511 2.076 -5.832 3.755 -3.755 3.755 c
--1.683 3.755 0 2.076 0 0 c
-h
-S
-Q
-q 1 0 0 1 774.7947 119.0558 cm
-0 0 m
-0 -2.076 -1.683 -3.755 -3.759 -3.755 c
--5.832 -3.755 -7.515 -2.076 -7.515 0 c
--7.515 2.076 -5.832 3.755 -3.759 3.755 c
--1.683 3.755 0 2.076 0 0 c
-f
-Q
-q 1 0 0 1 774.7947 119.0558 cm
-0 0 m
-0 -2.076 -1.683 -3.755 -3.759 -3.755 c
--5.832 -3.755 -7.515 -2.076 -7.515 0 c
--7.515 2.076 -5.832 3.755 -3.759 3.755 c
--1.683 3.755 0 2.076 0 0 c
-h
-S
-Q
-q 1 0 0 1 748.8699 119.0558 cm
-0 0 m
-0 -2.076 -1.68 -3.755 -3.756 -3.755 c
--5.829 -3.755 -7.512 -2.076 -7.512 0 c
--7.512 2.076 -5.829 3.755 -3.756 3.755 c
--1.68 3.755 0 2.076 0 0 c
-f
-Q
-q 1 0 0 1 748.8699 119.0558 cm
-0 0 m
-0 -2.076 -1.68 -3.755 -3.756 -3.755 c
--5.829 -3.755 -7.512 -2.076 -7.512 0 c
--7.512 2.076 -5.829 3.755 -3.756 3.755 c
--1.68 3.755 0 2.076 0 0 c
-h
-S
-Q
-q 1 0 0 1 619.2567 146.1501 cm
-0 0 m
-0 -2.076 -1.679 -3.755 -3.755 -3.755 c
--5.832 -3.755 -7.511 -2.076 -7.511 0 c
--7.511 2.072 -5.832 3.755 -3.755 3.755 c
--1.679 3.755 0 2.072 0 0 c
-f
-Q
-q 1 0 0 1 619.2567 146.1501 cm
-0 0 m
-0 -2.076 -1.679 -3.755 -3.755 -3.755 c
--5.832 -3.755 -7.511 -2.076 -7.511 0 c
--7.511 2.072 -5.832 3.755 -3.755 3.755 c
--1.679 3.755 0 2.072 0 0 c
-h
-S
-Q
-q 1 0 0 1 645.1788 146.1501 cm
-0 0 m
-0 -2.076 -1.679 -3.755 -3.755 -3.755 c
--5.828 -3.755 -7.511 -2.076 -7.511 0 c
--7.511 2.072 -5.828 3.755 -3.755 3.755 c
--1.679 3.755 0 2.072 0 0 c
-f
-Q
-q 1 0 0 1 645.1788 146.1501 cm
-0 0 m
-0 -2.076 -1.679 -3.755 -3.755 -3.755 c
--5.828 -3.755 -7.511 -2.076 -7.511 0 c
--7.511 2.072 -5.828 3.755 -3.755 3.755 c
--1.679 3.755 0 2.072 0 0 c
-h
-S
-Q
-q 1 0 0 1 671.1036 146.1501 cm
-0 0 m
-0 -2.076 -1.683 -3.755 -3.759 -3.755 c
--5.832 -3.755 -7.515 -2.076 -7.515 0 c
--7.515 2.072 -5.832 3.755 -3.759 3.755 c
--1.683 3.755 0 2.072 0 0 c
-f
-Q
-q 1 0 0 1 671.1036 146.1501 cm
-0 0 m
-0 -2.076 -1.683 -3.755 -3.759 -3.755 c
--5.832 -3.755 -7.515 -2.076 -7.515 0 c
--7.515 2.072 -5.832 3.755 -3.759 3.755 c
--1.683 3.755 0 2.072 0 0 c
-h
-S
-Q
-q 1 0 0 1 697.0258 146.1501 cm
-0 0 m
-0 -2.076 -1.683 -3.755 -3.755 -3.755 c
--5.832 -3.755 -7.515 -2.076 -7.515 0 c
--7.515 2.072 -5.832 3.755 -3.755 3.755 c
--1.683 3.755 0 2.072 0 0 c
-f
-Q
-q 1 0 0 1 697.0258 146.1501 cm
-0 0 m
-0 -2.076 -1.683 -3.755 -3.755 -3.755 c
--5.832 -3.755 -7.515 -2.076 -7.515 0 c
--7.515 2.072 -5.832 3.755 -3.755 3.755 c
--1.683 3.755 0 2.072 0 0 c
-h
-S
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 689.9702 155.2305 cm
-0 0 m
--0.008 12.072 l
-6.46 12.072 l
-6.468 0 l
-3.227 -3.561 l
-h
-f
-Q
-0 0 0 0 k
-q 1 0 0 1 691.3192 165.4168 cm
-0 0 m
-2.396 0 l
-2.396 0.368 l
-2.984 0.368 l
-2.984 0 l
-3.116 0 l
-3.487 0 3.777 -0.096 3.983 -0.294 c
-4.189 -0.5 4.292 -0.794 4.292 -1.176 c
-4.292 -1.382 4.237 -1.639 4.13 -1.955 c
-3.468 -1.852 l
-3.546 -1.625 3.586 -1.415 3.586 -1.22 c
-3.586 -0.933 3.428 -0.786 3.116 -0.779 c
-2.984 -0.779 l
-2.984 -1.249 l
-2.396 -1.249 l
-2.396 -0.779 l
-0 -0.779 l
-h
-0 -1.529 2.984 -0.794 re
-0 -2.323 m
-2.102 -3.719 m
-2.984 -4.072 l
-2.984 -4.895 l
-1.529 -4.218 l
-0 -4.924 l
-0 -4.087 l
-0.941 -3.719 l
-0 -3.366 l
-0 -2.528 l
-1.529 -3.233 l
-2.984 -2.558 l
-2.984 -3.395 l
-h
--0.339 -5.398 m
--0.339 -4.825 l
-4.012 -6.03 l
-4.012 -6.603 l
-h
-0 -8.279 m
-0.048 -8.249 0.125 -8.224 0.235 -8.206 c
-0.037 -8.066 -0.059 -7.882 -0.059 -7.647 c
--0.059 -7.39 0.022 -7.181 0.191 -7.015 c
-0.357 -6.857 0.573 -6.78 0.837 -6.78 c
-1.15 -6.78 1.388 -6.876 1.558 -7.073 c
-1.735 -7.269 1.822 -7.551 1.822 -7.927 c
-1.822 -8.176 l
-2.057 -8.176 l
-2.194 -8.176 2.285 -8.151 2.337 -8.103 c
-2.396 -8.052 2.425 -7.985 2.425 -7.897 c
-2.425 -7.699 2.311 -7.603 2.088 -7.603 c
-2.088 -6.824 l
-2.359 -6.824 2.587 -6.927 2.763 -7.133 c
-2.947 -7.339 3.042 -7.603 3.042 -7.927 c
-3.042 -8.249 2.954 -8.5 2.778 -8.676 c
-2.609 -8.86 2.37 -8.955 2.057 -8.955 c
-0.646 -8.955 l
-0.389 -8.955 0.191 -8.989 0.044 -9.058 c
-0 -9.058 l
-h
-0.559 -7.809 m
-0.559 -7.897 0.573 -7.971 0.602 -8.029 c
-0.639 -8.095 0.683 -8.147 0.735 -8.176 c
-1.352 -8.176 l
-1.352 -7.985 l
-1.352 -7.846 1.308 -7.739 1.22 -7.661 c
-1.139 -7.592 1.029 -7.559 0.881 -7.559 c
-0.665 -7.559 0.559 -7.64 0.559 -7.809 c
-f
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 612.076 155.9689 cm
-0 0 m
--0.007 25.419 l
-6.465 25.419 l
-6.468 0 l
-3.227 -3.561 l
-h
-f
-Q
-0 0 0 0 k
-q 1 0 0 1 615.2952 179.954 cm
-0 0 m
-0.449 0 0.802 -0.106 1.058 -0.324 c
-1.324 -0.536 1.455 -0.831 1.455 -1.205 c
-1.455 -1.587 1.324 -1.881 1.058 -2.087 c
-0.802 -2.3 0.449 -2.41 0 -2.41 c
--0.191 -2.41 l
--0.654 -2.41 -1.01 -2.3 -1.263 -2.087 c
--1.521 -1.881 -1.646 -1.587 -1.646 -1.205 c
--1.646 -0.823 -1.521 -0.522 -1.263 -0.309 c
--0.999 -0.103 -0.643 0 -0.191 0 c
-h
--0.191 -0.779 m
--0.731 -0.779 -0.999 -0.918 -0.999 -1.205 c
--0.999 -1.469 -0.775 -1.61 -0.323 -1.631 c
-0 -1.646 l
-0.272 -1.646 0.474 -1.606 0.603 -1.529 c
-0.739 -1.448 0.809 -1.341 0.809 -1.205 c
-0.809 -1.076 0.739 -0.974 0.603 -0.897 c
-0.474 -0.816 0.272 -0.779 0 -0.779 c
-h
-0.647 -4.182 m
-0.661 -3.932 l
-0.661 -3.715 0.566 -3.568 0.383 -3.491 c
--1.587 -3.491 l
--1.587 -2.712 l
-1.397 -2.712 l
-1.397 -3.447 l
-1.073 -3.476 l
-1.326 -3.594 1.455 -3.759 1.455 -3.976 c
-1.455 -4.064 1.441 -4.137 1.411 -4.197 c
-h
--1.587 -4.505 2.984 -0.779 re
--1.587 -5.284 m
-2.161 -4.461 m
-2.286 -4.461 2.389 -4.498 2.469 -4.579 c
-2.547 -4.656 2.587 -4.758 2.587 -4.887 c
-2.587 -5.012 2.547 -5.115 2.469 -5.196 c
-2.389 -5.273 2.286 -5.313 2.161 -5.313 c
-2.043 -5.313 1.945 -5.273 1.867 -5.196 c
-1.786 -5.126 1.75 -5.024 1.75 -4.887 c
-1.75 -4.758 1.786 -4.656 1.867 -4.579 c
-1.945 -4.498 2.043 -4.461 2.161 -4.461 c
-0 -5.699 m
-0.489 -5.699 0.853 -5.787 1.088 -5.964 c
-1.33 -6.14 1.455 -6.383 1.455 -6.699 c
-1.455 -6.971 1.345 -7.184 1.132 -7.331 c
-1.397 -7.36 l
-1.397 -8.066 l
--1.587 -8.066 l
--1.969 -8.066 -2.256 -7.956 -2.454 -7.742 c
--2.66 -7.526 -2.763 -7.221 -2.763 -6.832 c
--2.763 -6.662 -2.726 -6.485 -2.66 -6.302 c
--2.601 -6.126 -2.517 -5.993 -2.41 -5.905 c
--1.881 -6.169 l
--1.947 -6.247 -2.007 -6.346 -2.057 -6.464 c
--2.105 -6.581 -2.131 -6.688 -2.131 -6.787 c
--2.131 -6.963 -2.087 -7.088 -1.999 -7.169 c
--1.918 -7.247 -1.785 -7.287 -1.602 -7.287 c
--1.352 -7.287 l
--1.55 -7.14 -1.646 -6.942 -1.646 -6.699 c
--1.646 -6.383 -1.525 -6.14 -1.278 -5.964 c
--1.025 -5.787 -0.673 -5.699 -0.22 -5.699 c
-h
--0.205 -6.479 m
--0.481 -6.479 -0.683 -6.512 -0.808 -6.581 c
--0.926 -6.659 -0.985 -6.776 -0.985 -6.934 c
--0.985 -7.088 -0.933 -7.206 -0.823 -7.287 c
-0.603 -7.287 l
-0.728 -7.206 0.794 -7.088 0.794 -6.934 c
-0.794 -6.776 0.728 -6.659 0.603 -6.581 c
-0.474 -6.512 0.272 -6.479 0 -6.479 c
-h
--1.587 -8.488 2.984 -0.779 re
--1.587 -9.267 m
-2.161 -8.444 m
-2.286 -8.444 2.389 -8.481 2.469 -8.562 c
-2.547 -8.639 2.587 -8.742 2.587 -8.871 c
-2.587 -8.995 2.547 -9.099 2.469 -9.18 c
-2.389 -9.257 2.286 -9.297 2.161 -9.297 c
-2.043 -9.297 1.945 -9.257 1.867 -9.18 c
-1.786 -9.109 1.75 -9.007 1.75 -8.871 c
-1.75 -8.742 1.786 -8.639 1.867 -8.562 c
-1.945 -8.481 2.043 -8.444 2.161 -8.444 c
-1.397 -10.491 m
-1.103 -10.506 l
-1.338 -10.682 1.455 -10.91 1.455 -11.197 c
-1.455 -11.715 1.091 -11.979 0.368 -11.991 c
--1.587 -11.991 l
--1.587 -11.212 l
-0.309 -11.212 l
-0.485 -11.212 0.607 -11.185 0.676 -11.138 c
-0.754 -11.087 0.794 -10.998 0.794 -10.873 c
-0.794 -10.726 0.721 -10.612 0.574 -10.535 c
--1.587 -10.535 l
--1.587 -9.756 l
-1.397 -9.756 l
-h
--1.926 -12.66 m
--1.926 -12.086 l
-2.425 -13.292 l
-2.425 -13.865 l
-h
--1.587 -14.277 m
-0.809 -14.277 l
-0.809 -13.909 l
-1.397 -13.909 l
-1.397 -14.277 l
-1.529 -14.277 l
-1.9 -14.277 2.19 -14.372 2.396 -14.57 c
-2.602 -14.776 2.705 -15.07 2.705 -15.453 c
-2.705 -15.658 2.65 -15.915 2.543 -16.232 c
-1.881 -16.128 l
-1.959 -15.9 1.999 -15.692 1.999 -15.496 c
-1.999 -15.21 1.841 -15.063 1.529 -15.056 c
-1.397 -15.056 l
-1.397 -15.526 l
-0.809 -15.526 l
-0.809 -15.056 l
--1.587 -15.056 l
-h
--1.587 -15.805 2.984 -0.793 re
--1.587 -16.598 m
-0.515 -17.995 m
-1.397 -18.348 l
-1.397 -19.171 l
--0.058 -18.495 l
--1.587 -19.201 l
--1.587 -18.362 l
--0.646 -17.995 l
--1.587 -17.643 l
--1.587 -16.804 l
--0.058 -17.51 l
-1.397 -16.834 l
-1.397 -17.672 l
-h
--1.926 -19.675 m
--1.926 -19.102 l
-2.425 -20.307 l
-2.425 -20.88 l
-h
--1.587 -22.555 m
--1.539 -22.526 -1.462 -22.501 -1.352 -22.482 c
--1.55 -22.343 -1.646 -22.159 -1.646 -21.924 c
--1.646 -21.666 -1.565 -21.456 -1.396 -21.292 c
--1.23 -21.134 -1.014 -21.057 -0.75 -21.057 c
--0.437 -21.057 -0.198 -21.152 -0.029 -21.35 c
-0.148 -21.545 0.235 -21.828 0.235 -22.202 c
-0.235 -22.453 l
-0.47 -22.453 l
-0.607 -22.453 0.698 -22.427 0.75 -22.379 c
-0.809 -22.327 0.838 -22.262 0.838 -22.173 c
-0.838 -21.975 0.724 -21.88 0.5 -21.88 c
-0.5 -21.101 l
-0.772 -21.101 1 -21.203 1.176 -21.409 c
-1.36 -21.614 1.455 -21.88 1.455 -22.202 c
-1.455 -22.526 1.367 -22.776 1.191 -22.952 c
-1.022 -23.137 0.783 -23.232 0.47 -23.232 c
--0.941 -23.232 l
--1.198 -23.232 -1.396 -23.264 -1.543 -23.335 c
--1.587 -23.335 l
-h
--1.028 -22.085 m
--1.028 -22.173 -1.014 -22.247 -0.985 -22.306 c
--0.948 -22.372 -0.904 -22.423 -0.852 -22.453 c
--0.235 -22.453 l
--0.235 -22.262 l
--0.235 -22.121 -0.279 -22.015 -0.367 -21.938 c
--0.448 -21.868 -0.558 -21.835 -0.706 -21.835 c
--0.922 -21.835 -1.028 -21.916 -1.028 -22.085 c
-f
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 548.514 156.6265 cm
-0 0 m
--1.058 0 l
--1.058 -3.572 l
--1.558 -3.572 l
--1.558 0 l
--2.616 0 l
--2.616 0.441 l
-0 0.441 l
-h
-0.823 -0.897 m
-1.007 -0.654 1.242 -0.529 1.529 -0.529 c
-2.058 -0.529 2.326 -0.881 2.337 -1.587 c
-2.337 -3.572 l
-1.852 -3.572 l
-1.852 -1.616 l
-1.852 -1.381 1.812 -1.216 1.735 -1.117 c
-1.654 -1.022 1.536 -0.97 1.382 -0.97 c
-1.264 -0.97 1.154 -1.01 1.058 -1.087 c
-0.96 -1.168 0.882 -1.275 0.823 -1.411 c
-0.823 -3.572 l
-0.338 -3.572 l
-0.338 0.661 l
-0.823 0.661 l
-h
-3.406 -3.572 -0.499 2.984 re
-3.436 0.206 m
-3.436 0.118 3.41 0.044 3.362 -0.014 c
-3.322 -0.066 3.252 -0.087 3.156 -0.087 c
-3.069 -0.087 2.999 -0.066 2.951 -0.014 c
-2.911 0.044 2.892 0.11 2.892 0.191 c
-2.892 0.279 2.911 0.353 2.951 0.412 c
-2.999 0.47 3.069 0.5 3.156 0.5 c
-3.252 0.5 3.322 0.47 3.362 0.412 c
-3.41 0.353 3.436 0.283 3.436 0.206 c
-5.523 -2.807 m
-5.523 -2.701 5.483 -2.612 5.405 -2.543 c
-5.325 -2.466 5.174 -2.377 4.95 -2.278 c
-4.685 -2.171 4.498 -2.08 4.391 -1.999 c
-4.281 -1.922 4.204 -1.833 4.156 -1.734 c
-4.104 -1.639 4.083 -1.521 4.083 -1.381 c
-4.083 -1.139 4.171 -0.937 4.347 -0.779 c
-4.524 -0.613 4.748 -0.529 5.024 -0.529 c
-5.317 -0.529 5.552 -0.617 5.729 -0.793 c
-5.905 -0.962 5.993 -1.176 5.993 -1.44 c
-5.508 -1.44 l
-5.508 -1.304 5.457 -1.19 5.361 -1.103 c
-5.273 -1.007 5.159 -0.955 5.024 -0.955 c
-4.877 -0.955 4.762 -0.995 4.685 -1.072 c
-4.605 -1.143 4.567 -1.242 4.567 -1.367 c
-4.567 -1.466 4.597 -1.543 4.656 -1.602 c
-4.715 -1.66 4.854 -1.741 5.082 -1.837 c
-5.442 -1.984 5.689 -2.127 5.818 -2.263 c
-5.953 -2.392 6.023 -2.564 6.023 -2.778 c
-6.023 -3.035 5.928 -3.241 5.743 -3.395 c
-5.567 -3.553 5.332 -3.63 5.038 -3.63 c
-4.723 -3.63 4.469 -3.542 4.274 -3.366 c
-4.087 -3.183 3.994 -2.95 3.994 -2.675 c
-4.48 -2.675 l
-4.487 -2.844 4.538 -2.977 4.627 -3.072 c
-4.723 -3.16 4.862 -3.204 5.038 -3.204 c
-5.193 -3.204 5.31 -3.171 5.39 -3.102 c
-5.479 -3.035 5.523 -2.936 5.523 -2.807 c
-8.213 -3.572 -0.5 2.984 re
-8.243 0.206 m
-8.243 0.118 8.216 0.044 8.169 -0.014 c
-8.129 -0.066 8.058 -0.087 7.963 -0.087 c
-7.875 -0.087 7.805 -0.066 7.757 -0.014 c
-7.717 0.044 7.699 0.11 7.699 0.191 c
-7.699 0.279 7.717 0.353 7.757 0.412 c
-7.805 0.47 7.875 0.5 7.963 0.5 c
-8.058 0.5 8.129 0.47 8.169 0.412 c
-8.216 0.353 8.243 0.283 8.243 0.206 c
-10.329 -2.807 m
-10.329 -2.701 10.29 -2.612 10.212 -2.543 c
-10.132 -2.466 9.98 -2.377 9.756 -2.278 c
-9.492 -2.171 9.305 -2.08 9.198 -1.999 c
-9.088 -1.922 9.01 -1.833 8.962 -1.734 c
-8.912 -1.639 8.889 -1.521 8.889 -1.381 c
-8.889 -1.139 8.977 -0.937 9.153 -0.779 c
-9.33 -0.613 9.554 -0.529 9.83 -0.529 c
-10.124 -0.529 10.359 -0.617 10.535 -0.793 c
-10.712 -0.962 10.8 -1.176 10.8 -1.44 c
-10.315 -1.44 l
-10.315 -1.304 10.263 -1.19 10.168 -1.103 c
-10.08 -1.007 9.966 -0.955 9.83 -0.955 c
-9.683 -0.955 9.569 -0.995 9.492 -1.072 c
-9.411 -1.143 9.375 -1.242 9.375 -1.367 c
-9.375 -1.466 9.404 -1.543 9.463 -1.602 c
-9.521 -1.66 9.661 -1.741 9.889 -1.837 c
-10.249 -1.984 10.495 -2.127 10.624 -2.263 c
-10.76 -2.392 10.83 -2.564 10.83 -2.778 c
-10.83 -3.035 10.734 -3.241 10.55 -3.395 c
-10.373 -3.553 10.138 -3.63 9.845 -3.63 c
-9.529 -3.63 9.275 -3.542 9.08 -3.366 c
-8.893 -3.183 8.801 -2.95 8.801 -2.675 c
-9.286 -2.675 l
-9.294 -2.844 9.345 -2.977 9.433 -3.072 c
-9.529 -3.16 9.668 -3.204 9.845 -3.204 c
-9.999 -3.204 10.117 -3.171 10.198 -3.102 c
-10.286 -3.035 10.329 -2.936 10.329 -2.807 c
-14.019 -3.572 m
-13.99 -3.505 13.968 -3.395 13.961 -3.248 c
-13.784 -3.505 13.564 -3.63 13.299 -3.63 c
-13.024 -3.63 12.806 -3.557 12.652 -3.41 c
-12.505 -3.256 12.432 -3.039 12.432 -2.763 c
-12.432 -2.462 12.534 -2.219 12.74 -2.043 c
-12.946 -1.859 13.229 -1.764 13.593 -1.764 c
-13.945 -1.764 l
-13.945 -1.44 l
-13.945 -1.263 13.905 -1.143 13.828 -1.072 c
-13.747 -0.995 13.629 -0.955 13.475 -0.955 c
-13.328 -0.955 13.203 -0.999 13.108 -1.087 c
-13.02 -1.176 12.976 -1.286 12.976 -1.411 c
-12.49 -1.411 l
-12.49 -1.263 12.534 -1.124 12.623 -0.985 c
-12.711 -0.837 12.829 -0.727 12.976 -0.646 c
-13.13 -0.569 13.303 -0.529 13.49 -0.529 c
-13.802 -0.529 14.038 -0.61 14.196 -0.764 c
-14.35 -0.911 14.431 -1.132 14.431 -1.425 c
-14.431 -2.925 l
-14.438 -3.16 14.475 -3.362 14.533 -3.528 c
-14.533 -3.572 l
-h
-13.373 -3.189 m
-13.49 -3.189 13.6 -3.156 13.71 -3.087 c
-13.818 -3.021 13.895 -2.936 13.945 -2.836 c
-13.945 -2.131 l
-13.681 -2.131 l
-13.446 -2.131 13.259 -2.183 13.122 -2.278 c
-12.993 -2.377 12.931 -2.52 12.931 -2.705 c
-12.931 -2.873 12.961 -2.994 13.02 -3.072 c
-13.086 -3.152 13.203 -3.189 13.373 -3.189 c
-15.467 -0.588 m
-15.482 -0.911 l
-15.665 -0.658 15.908 -0.529 16.202 -0.529 c
-16.731 -0.529 16.999 -0.881 17.01 -1.587 c
-17.01 -3.572 l
-16.525 -3.572 l
-16.525 -1.616 l
-16.525 -1.381 16.485 -1.216 16.407 -1.117 c
-16.326 -1.022 16.209 -0.97 16.055 -0.97 c
-15.937 -0.97 15.827 -1.01 15.732 -1.087 c
-15.632 -1.168 15.555 -1.275 15.497 -1.411 c
-15.497 -3.572 l
-15.011 -3.572 l
-15.011 -0.588 l
-h
-20.281 -3.307 m
-20.123 -3.524 19.888 -3.63 19.576 -3.63 c
-19.311 -3.63 19.105 -3.538 18.958 -3.351 c
-18.819 -3.167 18.753 -2.892 18.753 -2.528 c
-18.753 -0.588 l
-19.237 -0.588 l
-19.237 -2.499 l
-19.237 -2.961 19.377 -3.189 19.663 -3.189 c
-19.958 -3.189 20.156 -3.057 20.266 -2.792 c
-20.266 -0.588 l
-20.766 -0.588 l
-20.766 -3.572 l
-20.295 -3.572 l
-h
-23.463 -2.219 m
-23.463 -2.69 23.379 -3.042 23.214 -3.278 c
-23.044 -3.513 22.805 -3.63 22.493 -3.63 c
-22.188 -3.63 21.957 -3.52 21.803 -3.293 c
-21.803 -4.718 l
-21.317 -4.718 l
-21.317 -0.588 l
-21.758 -0.588 l
-21.787 -0.926 l
-21.942 -0.661 22.173 -0.529 22.479 -0.529 c
-22.809 -0.529 23.056 -0.646 23.214 -0.881 c
-23.379 -1.109 23.463 -1.448 23.463 -1.896 c
-h
-22.979 -1.94 m
-22.979 -1.61 22.923 -1.363 22.817 -1.205 c
-22.717 -1.051 22.556 -0.97 22.331 -0.97 c
-22.096 -0.97 21.92 -1.087 21.803 -1.323 c
-21.803 -2.866 l
-21.92 -3.094 22.1 -3.204 22.346 -3.204 c
-22.559 -3.204 22.717 -3.127 22.817 -2.969 c
-22.923 -2.815 22.979 -2.572 22.979 -2.248 c
-h
-25.359 -2.807 m
-25.359 -2.701 25.319 -2.612 25.242 -2.543 c
-25.161 -2.466 25.01 -2.377 24.787 -2.278 c
-24.521 -2.171 24.334 -2.08 24.228 -1.999 c
-24.118 -1.922 24.041 -1.833 23.993 -1.734 c
-23.941 -1.639 23.919 -1.521 23.919 -1.381 c
-23.919 -1.139 24.008 -0.937 24.184 -0.779 c
-24.36 -0.613 24.584 -0.529 24.86 -0.529 c
-25.153 -0.529 25.389 -0.617 25.566 -0.793 c
-25.741 -0.962 25.83 -1.176 25.83 -1.44 c
-25.344 -1.44 l
-25.344 -1.304 25.294 -1.19 25.198 -1.103 c
-25.109 -1.007 24.995 -0.955 24.86 -0.955 c
-24.713 -0.955 24.598 -0.995 24.521 -1.072 c
-24.44 -1.143 24.404 -1.242 24.404 -1.367 c
-24.404 -1.466 24.434 -1.543 24.492 -1.602 c
-24.551 -1.66 24.691 -1.741 24.918 -1.837 c
-25.279 -1.984 25.525 -2.127 25.654 -2.263 c
-25.789 -2.392 25.859 -2.564 25.859 -2.778 c
-25.859 -3.035 25.764 -3.241 25.58 -3.395 c
-25.404 -3.553 25.169 -3.63 24.874 -3.63 c
-24.558 -3.63 24.305 -3.542 24.11 -3.366 c
-23.923 -3.183 23.831 -2.95 23.831 -2.675 c
-24.316 -2.675 l
-24.323 -2.844 24.375 -2.977 24.463 -3.072 c
-24.558 -3.16 24.698 -3.204 24.874 -3.204 c
-25.028 -3.204 25.146 -3.171 25.227 -3.102 c
-25.315 -3.035 25.359 -2.936 25.359 -2.807 c
-26.95 0.133 m
-26.95 -0.588 l
-27.407 -0.588 l
-27.407 -0.985 l
-26.95 -0.985 l
-26.95 -2.836 l
-26.95 -2.954 26.969 -3.042 27.01 -3.102 c
-27.046 -3.16 27.116 -3.189 27.216 -3.189 c
-27.274 -3.189 27.337 -3.183 27.407 -3.16 c
-27.407 -3.572 l
-27.289 -3.609 27.175 -3.63 27.068 -3.63 c
-26.869 -3.63 26.719 -3.564 26.613 -3.424 c
-26.514 -3.289 26.466 -3.094 26.466 -2.836 c
-26.466 -0.985 l
-26.01 -0.985 l
-26.01 -0.588 l
-26.466 -0.588 l
-26.466 0.133 l
-h
-29.107 -1.043 m
-29.038 -1.036 28.964 -1.028 28.887 -1.028 c
-28.63 -1.028 28.454 -1.168 28.359 -1.44 c
-28.359 -3.572 l
-27.873 -3.572 l
-27.873 -0.588 l
-28.344 -0.588 l
-28.359 -0.897 l
-28.483 -0.654 28.667 -0.529 28.902 -0.529 c
-28.979 -0.529 29.042 -0.544 29.093 -0.573 c
-h
-30.482 -3.63 m
-30.107 -3.63 29.824 -3.524 29.63 -3.307 c
-29.431 -3.083 29.336 -2.755 29.336 -2.322 c
-29.336 -1.955 l
-29.336 -1.514 29.427 -1.168 29.614 -0.911 c
-29.81 -0.658 30.085 -0.529 30.438 -0.529 c
-30.78 -0.529 31.033 -0.643 31.202 -0.867 c
-31.378 -1.095 31.471 -1.44 31.482 -1.911 c
-31.482 -2.219 l
-29.82 -2.219 l
-29.82 -2.293 l
-29.82 -2.616 29.88 -2.851 29.997 -2.998 c
-30.115 -3.138 30.283 -3.204 30.512 -3.204 c
-30.659 -3.204 30.784 -3.183 30.894 -3.131 c
-31 -3.072 31.103 -2.984 31.202 -2.866 c
-31.453 -3.175 l
-31.247 -3.48 30.923 -3.63 30.482 -3.63 c
-30.438 -0.955 m
-30.233 -0.955 30.078 -1.025 29.982 -1.161 c
-29.883 -1.301 29.828 -1.514 29.82 -1.808 c
-30.996 -1.808 l
-30.996 -1.734 l
-30.975 -1.462 30.923 -1.263 30.835 -1.146 c
-30.747 -1.022 30.615 -0.955 30.438 -0.955 c
-33.422 -3.572 m
-33.392 -3.505 33.371 -3.395 33.363 -3.248 c
-33.186 -3.505 32.966 -3.63 32.702 -3.63 c
-32.426 -3.63 32.209 -3.557 32.055 -3.41 c
-31.908 -3.256 31.835 -3.039 31.835 -2.763 c
-31.835 -2.462 31.937 -2.219 32.143 -2.043 c
-32.349 -1.859 32.632 -1.764 32.995 -1.764 c
-33.348 -1.764 l
-33.348 -1.44 l
-33.348 -1.263 33.308 -1.143 33.231 -1.072 c
-33.15 -0.995 33.032 -0.955 32.878 -0.955 c
-32.731 -0.955 32.606 -0.999 32.511 -1.087 c
-32.423 -1.176 32.378 -1.286 32.378 -1.411 c
-31.893 -1.411 l
-31.893 -1.263 31.937 -1.124 32.026 -0.985 c
-32.114 -0.837 32.232 -0.727 32.378 -0.646 c
-32.533 -0.569 32.706 -0.529 32.893 -0.529 c
-33.205 -0.529 33.44 -0.61 33.599 -0.764 c
-33.753 -0.911 33.834 -1.132 33.834 -1.425 c
-33.834 -2.925 l
-33.841 -3.16 33.878 -3.362 33.936 -3.528 c
-33.936 -3.572 l
-h
-32.775 -3.189 m
-32.893 -3.189 33.003 -3.156 33.113 -3.087 c
-33.219 -3.021 33.297 -2.936 33.348 -2.836 c
-33.348 -2.131 l
-33.084 -2.131 l
-32.849 -2.131 32.661 -2.183 32.525 -2.278 c
-32.397 -2.377 32.334 -2.52 32.334 -2.705 c
-32.334 -2.873 32.363 -2.994 32.423 -3.072 c
-32.488 -3.152 32.606 -3.189 32.775 -3.189 c
-34.869 -0.588 m
-34.884 -0.867 l
-35.061 -0.643 35.299 -0.529 35.605 -0.529 c
-35.935 -0.529 36.167 -0.675 36.296 -0.97 c
-36.479 -0.675 36.741 -0.529 37.075 -0.529 c
-37.633 -0.529 37.917 -0.874 37.927 -1.558 c
-37.927 -3.572 l
-37.442 -3.572 l
-37.442 -1.602 l
-37.442 -1.389 37.402 -1.23 37.325 -1.132 c
-37.244 -1.025 37.111 -0.97 36.928 -0.97 c
-36.781 -0.97 36.663 -1.028 36.575 -1.146 c
-36.487 -1.257 36.432 -1.396 36.413 -1.573 c
-36.413 -3.572 l
-35.928 -3.572 l
-35.928 -1.587 l
-35.917 -1.176 35.744 -0.97 35.414 -0.97 c
-35.168 -0.97 34.995 -1.095 34.9 -1.338 c
-34.9 -3.572 l
-34.414 -3.572 l
-34.414 -0.588 l
-h
-41.742 -2.219 m
-41.742 -2.69 41.657 -3.042 41.491 -3.278 c
-41.323 -3.513 41.08 -3.63 40.757 -3.63 c
-40.44 -3.63 40.205 -3.495 40.051 -3.219 c
-40.022 -3.572 l
-39.581 -3.572 l
-39.581 0.661 l
-40.066 0.661 l
-40.066 -0.911 l
-40.22 -0.658 40.452 -0.529 40.757 -0.529 c
-41.08 -0.529 41.323 -0.646 41.491 -0.881 c
-41.657 -1.117 41.742 -1.466 41.742 -1.926 c
-h
-41.256 -1.94 m
-41.256 -1.587 41.205 -1.338 41.109 -1.19 c
-41.011 -1.043 40.849 -0.97 40.625 -0.97 c
-40.378 -0.97 40.191 -1.109 40.066 -1.381 c
-40.066 -2.792 l
-40.184 -3.057 40.375 -3.189 40.639 -3.189 c
-40.853 -3.189 41.011 -3.116 41.109 -2.969 c
-41.205 -2.815 41.256 -2.572 41.256 -2.248 c
-h
-43.417 -1.043 m
-43.347 -1.036 43.274 -1.028 43.197 -1.028 c
-42.94 -1.028 42.763 -1.168 42.667 -1.44 c
-42.667 -3.572 l
-42.183 -3.572 l
-42.183 -0.588 l
-42.653 -0.588 l
-42.667 -0.897 l
-42.792 -0.654 42.977 -0.529 43.212 -0.529 c
-43.289 -0.529 43.351 -0.544 43.403 -0.573 c
-h
-45.214 -3.572 m
-45.185 -3.505 45.163 -3.395 45.155 -3.248 c
-44.979 -3.505 44.758 -3.63 44.494 -3.63 c
-44.219 -3.63 44.001 -3.557 43.847 -3.41 c
-43.7 -3.256 43.627 -3.039 43.627 -2.763 c
-43.627 -2.462 43.729 -2.219 43.935 -2.043 c
-44.141 -1.859 44.425 -1.764 44.788 -1.764 c
-45.14 -1.764 l
-45.14 -1.44 l
-45.14 -1.263 45.1 -1.143 45.023 -1.072 c
-44.942 -0.995 44.824 -0.955 44.67 -0.955 c
-44.523 -0.955 44.398 -0.999 44.303 -1.087 c
-44.215 -1.176 44.171 -1.286 44.171 -1.411 c
-43.686 -1.411 l
-43.686 -1.263 43.729 -1.124 43.818 -0.985 c
-43.906 -0.837 44.024 -0.727 44.171 -0.646 c
-44.325 -0.569 44.498 -0.529 44.685 -0.529 c
-44.997 -0.529 45.233 -0.61 45.391 -0.764 c
-45.545 -0.911 45.626 -1.132 45.626 -1.425 c
-45.626 -2.925 l
-45.633 -3.16 45.67 -3.362 45.728 -3.528 c
-45.728 -3.572 l
-h
-44.568 -3.189 m
-44.685 -3.189 44.795 -3.156 44.905 -3.087 c
-45.013 -3.021 45.09 -2.936 45.14 -2.836 c
-45.14 -2.131 l
-44.876 -2.131 l
-44.641 -2.131 44.454 -2.183 44.317 -2.278 c
-44.189 -2.377 44.126 -2.52 44.126 -2.705 c
-44.126 -2.873 44.156 -2.994 44.215 -3.072 c
-44.281 -3.152 44.398 -3.189 44.568 -3.189 c
-46.663 -0.588 m
-46.677 -0.911 l
-46.86 -0.658 47.103 -0.529 47.397 -0.529 c
-47.926 -0.529 48.194 -0.881 48.205 -1.587 c
-48.205 -3.572 l
-47.721 -3.572 l
-47.721 -1.616 l
-47.721 -1.381 47.68 -1.216 47.603 -1.117 c
-47.522 -1.022 47.405 -0.97 47.25 -0.97 c
-47.133 -0.97 47.022 -1.01 46.927 -1.087 c
-46.827 -1.168 46.75 -1.275 46.692 -1.411 c
-46.692 -3.572 l
-46.206 -3.572 l
-46.206 -0.588 l
-h
-49.79 -3.204 m
-49.955 -3.204 50.087 -3.156 50.187 -3.057 c
-50.282 -2.961 50.337 -2.818 50.348 -2.631 c
-50.804 -2.631 l
-50.792 -2.917 50.69 -3.156 50.495 -3.351 c
-50.308 -3.538 50.073 -3.63 49.79 -3.63 c
-49.425 -3.63 49.146 -3.513 48.951 -3.278 c
-48.753 -3.042 48.658 -2.697 48.658 -2.234 c
-48.658 -1.911 l
-48.658 -1.462 48.749 -1.117 48.937 -0.881 c
-49.132 -0.646 49.414 -0.529 49.79 -0.529 c
-50.091 -0.529 50.333 -0.628 50.509 -0.823 c
-50.694 -1.022 50.792 -1.286 50.804 -1.616 c
-50.348 -1.616 l
-50.326 -1.392 50.267 -1.227 50.171 -1.117 c
-50.083 -1.01 49.955 -0.955 49.79 -0.955 c
-49.572 -0.955 49.41 -1.028 49.304 -1.176 c
-49.205 -1.315 49.15 -1.543 49.142 -1.866 c
-49.142 -2.248 l
-49.142 -2.601 49.19 -2.851 49.29 -2.998 c
-49.396 -3.138 49.562 -3.204 49.79 -3.204 c
-51.682 -0.897 m
-51.866 -0.654 52.101 -0.529 52.388 -0.529 c
-52.917 -0.529 53.185 -0.881 53.196 -1.587 c
-53.196 -3.572 l
-52.711 -3.572 l
-52.711 -1.616 l
-52.711 -1.381 52.67 -1.216 52.593 -1.117 c
-52.512 -1.022 52.394 -0.97 52.24 -0.97 c
-52.123 -0.97 52.013 -1.01 51.917 -1.087 c
-51.818 -1.168 51.741 -1.275 51.682 -1.411 c
-51.682 -3.572 l
-51.197 -3.572 l
-51.197 0.661 l
-51.682 0.661 l
-h
-f
-Q
-0.793 0.801 0.129 0.016 K
-0.567 w
-q 1 0 0 1 602.8229 154.5574 cm
-0 0 m
-5.862 3.679 l
-S
-Q
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 606.8806 157.1041 cm
-0 0 m
--0.338 -1.47 l
-2.257 1.419 l
--1.474 0.335 l
-h
-f*
-Q
-0.906 0.785 0.617 0.969 K
-0.283 w 0 j 0 J
-q 1 0 0 1 606.8807 157.1041 cm
-0 0 m
--0.338 -1.47 l
-2.257 1.419 l
--1.474 0.335 l
-0 0 l
-h
-S
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 634.8231 174.5965 cm
-0 0 m
--1.058 0 l
--1.058 -3.572 l
--1.558 -3.572 l
--1.558 0 l
--2.616 0 l
--2.616 0.441 l
-0 0.441 l
-h
-0.823 -0.897 m
-1.007 -0.654 1.242 -0.53 1.529 -0.53 c
-2.058 -0.53 2.326 -0.882 2.337 -1.588 c
-2.337 -3.572 l
-1.852 -3.572 l
-1.852 -1.617 l
-1.852 -1.382 1.812 -1.216 1.735 -1.118 c
-1.654 -1.022 1.536 -0.97 1.382 -0.97 c
-1.264 -0.97 1.154 -1.01 1.058 -1.088 c
-0.96 -1.168 0.882 -1.276 0.823 -1.411 c
-0.823 -3.572 l
-0.338 -3.572 l
-0.338 0.661 l
-0.823 0.661 l
-h
-3.406 -3.572 -0.5 2.984 re
-3.436 0.206 m
-3.436 0.118 3.41 0.044 3.362 -0.015 c
-3.322 -0.066 3.252 -0.088 3.157 -0.088 c
-3.069 -0.088 2.999 -0.066 2.951 -0.015 c
-2.911 0.044 2.892 0.11 2.892 0.191 c
-2.892 0.279 2.911 0.353 2.951 0.411 c
-2.999 0.47 3.069 0.5 3.157 0.5 c
-3.252 0.5 3.322 0.47 3.362 0.411 c
-3.41 0.353 3.436 0.283 3.436 0.206 c
-5.523 -2.808 m
-5.523 -2.701 5.483 -2.612 5.406 -2.543 c
-5.325 -2.466 5.174 -2.377 4.95 -2.278 c
-4.686 -2.172 4.498 -2.08 4.391 -1.999 c
-4.281 -1.922 4.204 -1.834 4.156 -1.735 c
-4.104 -1.639 4.083 -1.521 4.083 -1.382 c
-4.083 -1.139 4.171 -0.937 4.347 -0.779 c
-4.524 -0.613 4.748 -0.53 5.024 -0.53 c
-5.317 -0.53 5.552 -0.617 5.729 -0.794 c
-5.905 -0.963 5.993 -1.176 5.993 -1.44 c
-5.509 -1.44 l
-5.509 -1.305 5.457 -1.191 5.361 -1.103 c
-5.274 -1.007 5.159 -0.956 5.024 -0.956 c
-4.877 -0.956 4.763 -0.996 4.686 -1.073 c
-4.605 -1.143 4.568 -1.242 4.568 -1.367 c
-4.568 -1.467 4.597 -1.544 4.656 -1.602 c
-4.715 -1.661 4.854 -1.742 5.082 -1.837 c
-5.442 -1.985 5.689 -2.128 5.818 -2.263 c
-5.953 -2.392 6.023 -2.565 6.023 -2.778 c
-6.023 -3.036 5.928 -3.241 5.744 -3.396 c
-5.567 -3.553 5.332 -3.631 5.039 -3.631 c
-4.723 -3.631 4.469 -3.543 4.274 -3.366 c
-4.087 -3.183 3.994 -2.951 3.994 -2.675 c
-4.48 -2.675 l
-4.487 -2.845 4.538 -2.977 4.627 -3.072 c
-4.723 -3.161 4.862 -3.204 5.039 -3.204 c
-5.193 -3.204 5.31 -3.171 5.391 -3.102 c
-5.479 -3.036 5.523 -2.936 5.523 -2.808 c
-8.214 -3.572 -0.5 2.984 re
-8.243 0.206 m
-8.243 0.118 8.216 0.044 8.169 -0.015 c
-8.129 -0.066 8.058 -0.088 7.963 -0.088 c
-7.875 -0.088 7.805 -0.066 7.757 -0.015 c
-7.717 0.044 7.699 0.11 7.699 0.191 c
-7.699 0.279 7.717 0.353 7.757 0.411 c
-7.805 0.47 7.875 0.5 7.963 0.5 c
-8.058 0.5 8.129 0.47 8.169 0.411 c
-8.216 0.353 8.243 0.283 8.243 0.206 c
-10.327 -2.808 m
-10.327 -2.701 10.286 -2.612 10.209 -2.543 c
-10.128 -2.466 9.978 -2.377 9.753 -2.278 c
-9.488 -2.172 9.301 -2.08 9.195 -1.999 c
-9.084 -1.922 9.007 -1.834 8.96 -1.735 c
-8.908 -1.639 8.885 -1.521 8.885 -1.382 c
-8.885 -1.139 8.974 -0.937 9.151 -0.779 c
-9.327 -0.613 9.55 -0.53 9.826 -0.53 c
-10.121 -0.53 10.356 -0.617 10.532 -0.794 c
-10.708 -0.963 10.797 -1.176 10.797 -1.44 c
-10.311 -1.44 l
-10.311 -1.305 10.26 -1.191 10.165 -1.103 c
-10.076 -1.007 9.962 -0.956 9.826 -0.956 c
-9.679 -0.956 9.565 -0.996 9.488 -1.073 c
-9.407 -1.143 9.371 -1.242 9.371 -1.367 c
-9.371 -1.467 9.4 -1.544 9.459 -1.602 c
-9.517 -1.661 9.658 -1.742 9.885 -1.837 c
-10.246 -1.985 10.491 -2.128 10.62 -2.263 c
-10.756 -2.392 10.826 -2.565 10.826 -2.778 c
-10.826 -3.036 10.73 -3.241 10.547 -3.396 c
-10.371 -3.553 10.136 -3.631 9.841 -3.631 c
-9.525 -3.631 9.272 -3.543 9.077 -3.366 c
-8.889 -3.183 8.798 -2.951 8.798 -2.675 c
-9.282 -2.675 l
-9.29 -2.845 9.342 -2.977 9.43 -3.072 c
-9.525 -3.161 9.665 -3.204 9.841 -3.204 c
-9.995 -3.204 10.113 -3.171 10.194 -3.102 c
-10.282 -3.036 10.327 -2.936 10.327 -2.808 c
-14.016 -3.572 m
-13.986 -3.506 13.964 -3.396 13.957 -3.248 c
-13.781 -3.506 13.56 -3.631 13.296 -3.631 c
-13.02 -3.631 12.803 -3.557 12.648 -3.41 c
-12.502 -3.256 12.428 -3.04 12.428 -2.764 c
-12.428 -2.462 12.531 -2.22 12.737 -2.043 c
-12.943 -1.86 13.226 -1.764 13.589 -1.764 c
-13.942 -1.764 l
-13.942 -1.44 l
-13.942 -1.264 13.901 -1.143 13.824 -1.073 c
-13.743 -0.996 13.626 -0.956 13.471 -0.956 c
-13.325 -0.956 13.2 -1 13.105 -1.088 c
-13.016 -1.176 12.972 -1.286 12.972 -1.411 c
-12.487 -1.411 l
-12.487 -1.264 12.531 -1.124 12.619 -0.985 c
-12.708 -0.838 12.825 -0.728 12.972 -0.647 c
-13.126 -0.57 13.299 -0.53 13.486 -0.53 c
-13.799 -0.53 14.034 -0.611 14.192 -0.765 c
-14.346 -0.912 14.427 -1.132 14.427 -1.426 c
-14.427 -2.926 l
-14.435 -3.161 14.471 -3.362 14.53 -3.528 c
-14.53 -3.572 l
-h
-13.369 -3.19 m
-13.486 -3.19 13.596 -3.157 13.707 -3.087 c
-13.814 -3.021 13.891 -2.936 13.942 -2.837 c
-13.942 -2.132 l
-13.677 -2.132 l
-13.442 -2.132 13.255 -2.183 13.119 -2.278 c
-12.991 -2.377 12.928 -2.521 12.928 -2.705 c
-12.928 -2.874 12.958 -2.995 13.016 -3.072 c
-13.082 -3.153 13.2 -3.19 13.369 -3.19 c
-16.742 -3.572 -0.5 4.233 re
-17.315 -1.941 m
-17.315 -1.511 17.419 -1.168 17.624 -0.912 c
-17.837 -0.658 18.117 -0.53 18.462 -0.53 c
-18.804 -0.53 19.079 -0.658 19.285 -0.912 c
-19.499 -1.158 19.613 -1.492 19.623 -1.911 c
-19.623 -2.22 l
-19.623 -2.653 19.513 -2.995 19.3 -3.248 c
-19.094 -3.506 18.815 -3.631 18.462 -3.631 c
-18.117 -3.631 17.845 -3.51 17.639 -3.263 c
-17.433 -3.021 17.323 -2.687 17.315 -2.263 c
-h
-17.801 -2.22 m
-17.801 -2.535 17.859 -2.778 17.977 -2.955 c
-18.102 -3.123 18.264 -3.204 18.462 -3.204 c
-18.892 -3.204 19.116 -2.896 19.138 -2.278 c
-19.138 -1.941 l
-19.138 -1.639 19.073 -1.397 18.948 -1.22 c
-18.83 -1.044 18.668 -0.956 18.462 -0.956 c
-18.264 -0.956 18.102 -1.044 17.977 -1.22 c
-17.859 -1.397 17.801 -1.639 17.801 -1.941 c
-h
-21.09 -3.204 m
-21.255 -3.204 21.387 -3.157 21.487 -3.057 c
-21.582 -2.962 21.637 -2.818 21.648 -2.631 c
-22.104 -2.631 l
-22.092 -2.918 21.99 -3.157 21.795 -3.352 c
-21.608 -3.539 21.373 -3.631 21.09 -3.631 c
-20.725 -3.631 20.446 -3.514 20.251 -3.278 c
-20.053 -3.043 19.958 -2.697 19.958 -2.234 c
-19.958 -1.911 l
-19.958 -1.463 20.05 -1.118 20.237 -0.882 c
-20.432 -0.647 20.715 -0.53 21.09 -0.53 c
-21.391 -0.53 21.633 -0.628 21.81 -0.823 c
-21.994 -1.022 22.092 -1.286 22.104 -1.617 c
-21.648 -1.617 l
-21.626 -1.393 21.567 -1.228 21.471 -1.118 c
-21.384 -1.01 21.255 -0.956 21.09 -0.956 c
-20.873 -0.956 20.711 -1.029 20.604 -1.176 c
-20.505 -1.316 20.45 -1.544 20.443 -1.867 c
-20.443 -2.249 l
-20.443 -2.602 20.49 -2.851 20.59 -2.999 c
-20.696 -3.138 20.862 -3.204 21.09 -3.204 c
-24.029 -3.572 m
-24 -3.506 23.978 -3.396 23.971 -3.248 c
-23.794 -3.506 23.574 -3.631 23.309 -3.631 c
-23.033 -3.631 22.817 -3.557 22.662 -3.41 c
-22.516 -3.256 22.442 -3.04 22.442 -2.764 c
-22.442 -2.462 22.545 -2.22 22.751 -2.043 c
-22.956 -1.86 23.239 -1.764 23.603 -1.764 c
-23.956 -1.764 l
-23.956 -1.44 l
-23.956 -1.264 23.916 -1.143 23.838 -1.073 c
-23.757 -0.996 23.64 -0.956 23.486 -0.956 c
-23.339 -0.956 23.214 -1 23.118 -1.088 c
-23.03 -1.176 22.986 -1.286 22.986 -1.411 c
-22.501 -1.411 l
-22.501 -1.264 22.545 -1.124 22.633 -0.985 c
-22.721 -0.838 22.838 -0.728 22.986 -0.647 c
-23.14 -0.57 23.312 -0.53 23.501 -0.53 c
-23.813 -0.53 24.048 -0.611 24.206 -0.765 c
-24.36 -0.912 24.441 -1.132 24.441 -1.426 c
-24.441 -2.926 l
-24.448 -3.161 24.485 -3.362 24.544 -3.528 c
-24.544 -3.572 l
-h
-23.383 -3.19 m
-23.501 -3.19 23.611 -3.157 23.721 -3.087 c
-23.827 -3.021 23.904 -2.936 23.956 -2.837 c
-23.956 -2.132 l
-23.692 -2.132 l
-23.456 -2.132 23.268 -2.183 23.133 -2.278 c
-23.004 -2.377 22.942 -2.521 22.942 -2.705 c
-22.942 -2.874 22.971 -2.995 23.03 -3.072 c
-23.096 -3.153 23.214 -3.19 23.383 -3.19 c
-25.551 -3.572 -0.5 4.233 re
-29.589 -2.22 m
-29.589 -2.691 29.504 -3.043 29.34 -3.278 c
-29.171 -3.514 28.928 -3.631 28.604 -3.631 c
-28.288 -3.631 28.053 -3.495 27.899 -3.219 c
-27.869 -3.572 l
-27.428 -3.572 l
-27.428 0.661 l
-27.914 0.661 l
-27.914 -0.912 l
-28.068 -0.658 28.299 -0.53 28.604 -0.53 c
-28.928 -0.53 29.171 -0.647 29.34 -0.882 c
-29.504 -1.118 29.589 -1.467 29.589 -1.926 c
-h
-29.105 -1.941 m
-29.105 -1.588 29.053 -1.338 28.957 -1.191 c
-28.858 -1.044 28.696 -0.97 28.472 -0.97 c
-28.226 -0.97 28.039 -1.11 27.914 -1.382 c
-27.914 -2.793 l
-28.031 -3.057 28.222 -3.19 28.487 -3.19 c
-28.7 -3.19 28.858 -3.117 28.957 -2.969 c
-29.053 -2.815 29.105 -2.573 29.105 -2.249 c
-h
-31.265 -1.044 m
-31.195 -1.037 31.122 -1.029 31.044 -1.029 c
-30.788 -1.029 30.611 -1.168 30.516 -1.44 c
-30.516 -3.572 l
-30.03 -3.572 l
-30.03 -0.588 l
-30.501 -0.588 l
-30.516 -0.897 l
-30.64 -0.654 30.824 -0.53 31.06 -0.53 c
-31.137 -0.53 31.199 -0.544 31.25 -0.574 c
-h
-33.062 -3.572 m
-33.032 -3.506 33.011 -3.396 33.003 -3.248 c
-32.827 -3.506 32.606 -3.631 32.342 -3.631 c
-32.066 -3.631 31.85 -3.557 31.695 -3.41 c
-31.548 -3.256 31.474 -3.04 31.474 -2.764 c
-31.474 -2.462 31.577 -2.22 31.783 -2.043 c
-31.989 -1.86 32.272 -1.764 32.636 -1.764 c
-32.988 -1.764 l
-32.988 -1.44 l
-32.988 -1.264 32.949 -1.143 32.871 -1.073 c
-32.79 -0.996 32.673 -0.956 32.518 -0.956 c
-32.371 -0.956 32.246 -1 32.151 -1.088 c
-32.062 -1.176 32.018 -1.286 32.018 -1.411 c
-31.534 -1.411 l
-31.534 -1.264 31.577 -1.124 31.665 -0.985 c
-31.754 -0.838 31.871 -0.728 32.018 -0.647 c
-32.172 -0.57 32.346 -0.53 32.533 -0.53 c
-32.845 -0.53 33.08 -0.611 33.238 -0.765 c
-33.393 -0.912 33.473 -1.132 33.473 -1.426 c
-33.473 -2.926 l
-33.481 -3.161 33.518 -3.362 33.577 -3.528 c
-33.577 -3.572 l
-h
-32.415 -3.19 m
-32.533 -3.19 32.643 -3.157 32.753 -3.087 c
-32.86 -3.021 32.937 -2.936 32.988 -2.837 c
-32.988 -2.132 l
-32.724 -2.132 l
-32.488 -2.132 32.301 -2.183 32.166 -2.278 c
-32.037 -2.377 31.974 -2.521 31.974 -2.705 c
-31.974 -2.874 32.004 -2.995 32.062 -3.072 c
-32.128 -3.153 32.246 -3.19 32.415 -3.19 c
-34.51 -0.588 m
-34.524 -0.912 l
-34.709 -0.658 34.95 -0.53 35.245 -0.53 c
-35.774 -0.53 36.043 -0.882 36.053 -1.588 c
-36.053 -3.572 l
-35.568 -3.572 l
-35.568 -1.617 l
-35.568 -1.382 35.528 -1.216 35.451 -1.118 c
-35.37 -1.022 35.252 -0.97 35.098 -0.97 c
-34.98 -0.97 34.87 -1.01 34.774 -1.088 c
-34.675 -1.168 34.598 -1.276 34.539 -1.411 c
-34.539 -3.572 l
-34.054 -3.572 l
-34.054 -0.588 l
-h
-37.637 -3.204 m
-37.803 -3.204 37.934 -3.157 38.034 -3.057 c
-38.129 -2.962 38.185 -2.818 38.196 -2.631 c
-38.651 -2.631 l
-38.64 -2.918 38.537 -3.157 38.343 -3.352 c
-38.155 -3.539 37.92 -3.631 37.637 -3.631 c
-37.273 -3.631 36.994 -3.514 36.799 -3.278 c
-36.6 -3.043 36.505 -2.697 36.505 -2.234 c
-36.505 -1.911 l
-36.505 -1.463 36.597 -1.118 36.785 -0.882 c
-36.98 -0.647 37.262 -0.53 37.637 -0.53 c
-37.938 -0.53 38.181 -0.628 38.358 -0.823 c
-38.541 -1.022 38.64 -1.286 38.651 -1.617 c
-38.196 -1.617 l
-38.173 -1.393 38.115 -1.228 38.019 -1.118 c
-37.931 -1.01 37.803 -0.956 37.637 -0.956 c
-37.42 -0.956 37.259 -1.029 37.152 -1.176 c
-37.053 -1.316 36.997 -1.544 36.99 -1.867 c
-36.99 -2.249 l
-36.99 -2.602 37.038 -2.851 37.138 -2.999 c
-37.244 -3.138 37.409 -3.204 37.637 -3.204 c
-39.53 -0.897 m
-39.713 -0.654 39.949 -0.53 40.235 -0.53 c
-40.764 -0.53 41.032 -0.882 41.044 -1.588 c
-41.044 -3.572 l
-40.558 -3.572 l
-40.558 -1.617 l
-40.558 -1.382 40.518 -1.216 40.441 -1.118 c
-40.36 -1.022 40.242 -0.97 40.088 -0.97 c
-39.97 -0.97 39.86 -1.01 39.765 -1.088 c
-39.665 -1.168 39.588 -1.276 39.53 -1.411 c
-39.53 -3.572 l
-39.044 -3.572 l
-39.044 0.661 l
-39.53 0.661 l
-h
-41.616 -3.308 m
-41.616 -3.219 41.639 -3.146 41.69 -3.087 c
-41.749 -3.028 41.826 -2.999 41.925 -2.999 c
-42.032 -2.999 42.109 -3.028 42.16 -3.087 c
-42.219 -3.146 42.249 -3.219 42.249 -3.308 c
-42.249 -3.389 42.219 -3.454 42.16 -3.514 c
-42.109 -3.572 42.032 -3.601 41.925 -3.601 c
-41.826 -3.601 41.749 -3.572 41.69 -3.514 c
-41.639 -3.454 41.616 -3.389 41.616 -3.308 c
-f
-Q
-633.001 164.439 -0.501 4.013 re
-634.36 168.143 m
-634.36 167.423 l
-634.816 167.423 l
-634.816 167.026 l
-634.36 167.026 l
-634.36 165.174 l
-634.36 165.056 634.378 164.968 634.419 164.91 c
-634.455 164.85 634.526 164.821 634.625 164.821 c
-634.684 164.821 634.746 164.829 634.816 164.85 c
-634.816 164.439 l
-634.698 164.403 634.584 164.38 634.478 164.38 c
-634.279 164.38 634.129 164.447 634.023 164.586 c
-633.923 164.723 633.875 164.917 633.875 165.174 c
-633.875 167.026 l
-633.42 167.026 l
-633.42 167.423 l
-633.875 167.423 l
-633.875 168.143 l
-h
-637.017 164.439 -0.5 2.984 re
-637.046 168.217 m
-637.046 168.129 637.021 168.056 636.973 167.996 c
-636.932 167.945 636.863 167.923 636.767 167.923 c
-636.679 167.923 636.61 167.945 636.562 167.996 c
-636.521 168.056 636.502 168.121 636.502 168.202 c
-636.502 168.291 636.521 168.364 636.562 168.422 c
-636.61 168.482 636.679 168.511 636.767 168.511 c
-636.863 168.511 636.932 168.482 636.973 168.422 c
-637.021 168.364 637.046 168.295 637.046 168.217 c
-639.13 165.203 m
-639.13 165.311 639.089 165.399 639.012 165.469 c
-638.931 165.546 638.781 165.634 638.557 165.733 c
-638.293 165.839 638.104 165.931 637.998 166.012 c
-637.888 166.089 637.811 166.178 637.763 166.277 c
-637.711 166.373 637.69 166.49 637.69 166.629 c
-637.69 166.872 637.778 167.074 637.954 167.232 c
-638.131 167.398 638.355 167.482 638.63 167.482 c
-638.924 167.482 639.159 167.394 639.336 167.217 c
-639.512 167.048 639.6 166.835 639.6 166.571 c
-639.116 166.571 l
-639.116 166.707 639.064 166.82 638.968 166.909 c
-638.881 167.005 638.767 167.056 638.63 167.056 c
-638.484 167.056 638.37 167.015 638.293 166.938 c
-638.212 166.868 638.175 166.77 638.175 166.644 c
-638.175 166.545 638.204 166.468 638.262 166.409 c
-638.322 166.35 638.461 166.269 638.689 166.174 c
-639.049 166.026 639.295 165.883 639.424 165.748 c
-639.56 165.619 639.629 165.446 639.629 165.233 c
-639.629 164.976 639.534 164.771 639.351 164.615 c
-639.174 164.458 638.939 164.38 638.645 164.38 c
-638.329 164.38 638.075 164.469 637.88 164.645 c
-637.693 164.829 637.601 165.06 637.601 165.336 c
-638.087 165.336 l
-638.094 165.167 638.145 165.035 638.233 164.939 c
-638.329 164.85 638.468 164.807 638.645 164.807 c
-638.8 164.807 638.917 164.84 638.998 164.91 c
-639.086 164.976 639.13 165.075 639.13 165.203 c
-641.864 166.689 m
-642.187 166.689 l
-642.382 166.689 642.532 166.751 642.643 166.88 c
-642.75 167.005 642.804 167.173 642.804 167.379 c
-642.804 167.85 642.621 168.085 642.261 168.085 c
-642.085 168.085 641.944 168.019 641.849 167.894 c
-641.75 167.765 641.703 167.599 641.703 167.394 c
-641.217 167.394 l
-641.217 167.717 641.313 167.982 641.511 168.187 c
-641.706 168.401 641.956 168.511 642.261 168.511 c
-642.573 168.511 642.823 168.408 643.01 168.202 c
-643.195 168.004 643.29 167.732 643.29 167.379 c
-643.29 167.192 643.238 167.015 643.143 166.85 c
-643.043 166.692 642.922 166.575 642.775 166.497 c
-643.147 166.358 643.334 166.045 643.334 165.556 c
-643.334 165.203 643.235 164.917 643.039 164.704 c
-642.842 164.487 642.584 164.38 642.261 164.38 c
-641.938 164.38 641.676 164.476 641.482 164.675 c
-641.283 164.881 641.188 165.152 641.188 165.498 c
-641.688 165.498 l
-641.688 165.281 641.736 165.108 641.834 164.983 c
-641.941 164.866 642.085 164.807 642.261 164.807 c
-642.437 164.807 642.577 164.866 642.687 164.983 c
-642.794 165.108 642.849 165.295 642.849 165.542 c
-642.849 166.03 642.617 166.277 642.158 166.277 c
-641.864 166.277 l
-h
-646.127 164.807 m
-646.293 164.807 646.424 164.854 646.524 164.954 c
-646.619 165.049 646.675 165.193 646.685 165.38 c
-647.141 165.38 l
-647.13 165.093 647.027 164.854 646.833 164.66 c
-646.644 164.472 646.409 164.38 646.127 164.38 c
-645.763 164.38 645.484 164.498 645.289 164.733 c
-645.09 164.968 644.995 165.314 644.995 165.777 c
-644.995 166.101 l
-644.995 166.549 645.087 166.894 645.274 167.129 c
-645.469 167.364 645.752 167.482 646.127 167.482 c
-646.428 167.482 646.671 167.383 646.847 167.188 c
-647.031 166.99 647.13 166.725 647.141 166.394 c
-646.685 166.394 l
-646.663 166.618 646.605 166.784 646.509 166.894 c
-646.421 167.001 646.293 167.056 646.127 167.056 c
-645.91 167.056 645.748 166.982 645.642 166.835 c
-645.543 166.695 645.487 166.468 645.48 166.144 c
-645.48 165.762 l
-645.48 165.409 645.528 165.16 645.627 165.012 c
-645.734 164.873 645.899 164.807 646.127 164.807 c
-647.435 166.071 m
-647.435 166.501 647.538 166.843 647.743 167.1 c
-647.957 167.354 648.236 167.482 648.581 167.482 c
-648.923 167.482 649.199 167.354 649.405 167.1 c
-649.618 166.853 649.732 166.519 649.742 166.101 c
-649.742 165.791 l
-649.742 165.358 649.632 165.016 649.42 164.763 c
-649.214 164.505 648.934 164.38 648.581 164.38 c
-648.236 164.38 647.964 164.501 647.758 164.748 c
-647.552 164.991 647.442 165.325 647.435 165.748 c
-h
-647.92 165.791 m
-647.92 165.476 647.978 165.233 648.096 165.056 c
-648.221 164.888 648.383 164.807 648.581 164.807 c
-649.011 164.807 649.235 165.116 649.258 165.733 c
-649.258 166.071 l
-649.258 166.373 649.192 166.614 649.067 166.791 c
-648.949 166.967 648.787 167.056 648.581 167.056 c
-648.383 167.056 648.221 166.967 648.096 166.791 c
-647.978 166.614 647.92 166.373 647.92 166.071 c
-h
-650.64 167.423 m
-650.654 167.144 l
-650.831 167.368 651.07 167.482 651.375 167.482 c
-651.705 167.482 651.937 167.335 652.065 167.041 c
-652.249 167.335 652.51 167.482 652.844 167.482 c
-653.403 167.482 653.686 167.136 653.697 166.453 c
-653.697 164.439 l
-653.212 164.439 l
-653.212 166.409 l
-653.212 166.622 653.171 166.78 653.094 166.88 c
-653.013 166.986 652.881 167.041 652.697 167.041 c
-652.55 167.041 652.433 166.982 652.344 166.865 c
-652.256 166.755 652.201 166.614 652.183 166.438 c
-652.183 164.439 l
-651.698 164.439 l
-651.698 166.423 l
-651.687 166.835 651.514 167.041 651.184 167.041 c
-650.937 167.041 650.764 166.916 650.669 166.674 c
-650.669 164.439 l
-650.183 164.439 l
-650.183 167.423 l
-h
-654.601 167.423 m
-654.615 167.144 l
-654.792 167.368 655.031 167.482 655.336 167.482 c
-655.666 167.482 655.898 167.335 656.026 167.041 c
-656.21 167.335 656.471 167.482 656.805 167.482 c
-657.364 167.482 657.647 167.136 657.659 166.453 c
-657.659 164.439 l
-657.173 164.439 l
-657.173 166.409 l
-657.173 166.622 657.133 166.78 657.056 166.88 c
-656.975 166.986 656.842 167.041 656.659 167.041 c
-656.512 167.041 656.394 166.982 656.306 166.865 c
-656.217 166.755 656.163 166.614 656.144 166.438 c
-656.144 164.439 l
-655.66 164.439 l
-655.66 166.423 l
-655.648 166.835 655.475 167.041 655.145 167.041 c
-654.898 167.041 654.725 166.916 654.63 166.674 c
-654.63 164.439 l
-654.145 164.439 l
-654.145 167.423 l
-h
-658.636 164.439 -0.5 2.984 re
-658.665 168.217 m
-658.665 168.129 658.639 168.056 658.592 167.996 c
-658.551 167.945 658.482 167.923 658.386 167.923 c
-658.297 167.923 658.228 167.945 658.18 167.996 c
-658.139 168.056 658.121 168.121 658.121 168.202 c
-658.121 168.291 658.139 168.364 658.18 168.422 c
-658.228 168.482 658.297 168.511 658.386 168.511 c
-658.482 168.511 658.551 168.482 658.592 168.422 c
-658.639 168.364 658.665 168.295 658.665 168.217 c
-659.94 168.143 m
-659.94 167.423 l
-660.396 167.423 l
-660.396 167.026 l
-659.94 167.026 l
-659.94 165.174 l
-659.94 165.056 659.959 164.968 659.999 164.91 c
-660.036 164.85 660.105 164.821 660.205 164.821 c
-660.263 164.821 660.326 164.829 660.396 164.85 c
-660.396 164.439 l
-660.279 164.403 660.165 164.38 660.057 164.38 c
-659.859 164.38 659.708 164.447 659.602 164.586 c
-659.502 164.723 659.455 164.917 659.455 165.174 c
-659.455 167.026 l
-658.999 167.026 l
-658.999 167.423 l
-659.455 167.423 l
-659.455 168.143 l
-h
-662.303 165.203 m
-662.303 165.311 662.263 165.399 662.185 165.469 c
-662.104 165.546 661.954 165.634 661.73 165.733 c
-661.465 165.839 661.278 165.931 661.171 166.012 c
-661.061 166.089 660.984 166.178 660.936 166.277 c
-660.884 166.373 660.863 166.49 660.863 166.629 c
-660.863 166.872 660.951 167.074 661.127 167.232 c
-661.304 167.398 661.528 167.482 661.804 167.482 c
-662.097 167.482 662.332 167.394 662.509 167.217 c
-662.685 167.048 662.773 166.835 662.773 166.571 c
-662.288 166.571 l
-662.288 166.707 662.237 166.82 662.141 166.909 c
-662.053 167.005 661.939 167.056 661.804 167.056 c
-661.657 167.056 661.542 167.015 661.465 166.938 c
-661.384 166.868 661.347 166.77 661.347 166.644 c
-661.347 166.545 661.377 166.468 661.436 166.409 c
-661.495 166.35 661.634 166.269 661.862 166.174 c
-662.222 166.026 662.469 165.883 662.598 165.748 c
-662.733 165.619 662.803 165.446 662.803 165.233 c
-662.803 164.976 662.708 164.771 662.523 164.615 c
-662.347 164.458 662.112 164.38 661.818 164.38 c
-661.502 164.38 661.248 164.469 661.054 164.645 c
-660.867 164.829 660.774 165.06 660.774 165.336 c
-661.26 165.336 l
-661.266 165.167 661.318 165.035 661.407 164.939 c
-661.502 164.85 661.642 164.807 661.818 164.807 c
-661.972 164.807 662.089 164.84 662.17 164.91 c
-662.259 164.976 662.303 165.075 662.303 165.203 c
-665.993 164.439 m
-665.964 164.505 665.941 164.615 665.933 164.763 c
-665.757 164.505 665.537 164.38 665.272 164.38 c
-664.996 164.38 664.78 164.454 664.626 164.601 c
-664.479 164.755 664.405 164.972 664.405 165.247 c
-664.405 165.549 664.508 165.791 664.714 165.968 c
-664.919 166.152 665.202 166.247 665.566 166.247 c
-665.919 166.247 l
-665.919 166.571 l
-665.919 166.747 665.879 166.868 665.802 166.938 c
-665.721 167.015 665.603 167.056 665.449 167.056 c
-665.302 167.056 665.177 167.011 665.081 166.924 c
-664.993 166.835 664.949 166.725 664.949 166.6 c
-664.464 166.6 l
-664.464 166.747 664.508 166.887 664.597 167.026 c
-664.684 167.173 664.802 167.283 664.949 167.364 c
-665.104 167.441 665.276 167.482 665.463 167.482 c
-665.775 167.482 666.01 167.401 666.169 167.247 c
-666.323 167.1 666.404 166.88 666.404 166.585 c
-666.404 165.086 l
-666.411 164.85 666.448 164.649 666.507 164.484 c
-666.507 164.439 l
-h
-665.345 164.821 m
-665.463 164.821 665.574 164.854 665.684 164.925 c
-665.79 164.991 665.867 165.075 665.919 165.174 c
-665.919 165.88 l
-665.655 165.88 l
-665.42 165.88 665.232 165.829 665.096 165.733 c
-664.967 165.634 664.905 165.49 664.905 165.307 c
-664.905 165.137 664.934 165.016 664.993 164.939 c
-665.059 164.858 665.177 164.821 665.345 164.821 c
-667.47 167.115 m
-667.654 167.358 667.889 167.482 668.175 167.482 c
-668.705 167.482 668.973 167.129 668.984 166.423 c
-668.984 164.439 l
-668.499 164.439 l
-668.499 166.394 l
-668.499 166.629 668.458 166.795 668.381 166.894 c
-668.3 166.99 668.183 167.041 668.028 167.041 c
-667.911 167.041 667.801 167.001 667.705 166.924 c
-667.606 166.843 667.529 166.736 667.47 166.6 c
-667.47 164.439 l
-666.985 164.439 l
-666.985 168.673 l
-667.47 168.673 l
-h
-670.586 164.38 m
-670.211 164.38 669.928 164.487 669.733 164.704 c
-669.535 164.929 669.44 165.255 669.44 165.689 c
-669.44 166.057 l
-669.44 166.497 669.532 166.843 669.719 167.1 c
-669.914 167.354 670.189 167.482 670.542 167.482 c
-670.884 167.482 671.138 167.368 671.306 167.144 c
-671.483 166.916 671.574 166.571 671.585 166.101 c
-671.585 165.791 l
-669.925 165.791 l
-669.925 165.718 l
-669.925 165.395 669.983 165.16 670.101 165.012 c
-670.218 164.873 670.388 164.807 670.615 164.807 c
-670.762 164.807 670.887 164.829 670.997 164.881 c
-671.104 164.939 671.207 165.027 671.306 165.145 c
-671.556 164.836 l
-671.35 164.532 671.026 164.38 670.586 164.38 c
-670.542 167.056 m
-670.336 167.056 670.182 166.986 670.086 166.85 c
-669.987 166.71 669.931 166.497 669.925 166.203 c
-671.101 166.203 l
-671.101 166.277 l
-671.078 166.549 671.026 166.747 670.939 166.865 c
-670.851 166.99 670.718 167.056 670.542 167.056 c
-673.526 164.439 m
-673.496 164.505 673.474 164.615 673.467 164.763 c
-673.291 164.505 673.07 164.38 672.805 164.38 c
-672.53 164.38 672.313 164.454 672.159 164.601 c
-672.011 164.755 671.938 164.972 671.938 165.247 c
-671.938 165.549 672.042 165.791 672.247 165.968 c
-672.453 166.152 672.736 166.247 673.1 166.247 c
-673.453 166.247 l
-673.453 166.571 l
-673.453 166.747 673.412 166.868 673.335 166.938 c
-673.254 167.015 673.137 167.056 672.982 167.056 c
-672.835 167.056 672.71 167.011 672.615 166.924 c
-672.526 166.835 672.482 166.725 672.482 166.6 c
-671.997 166.6 l
-671.997 166.747 672.042 166.887 672.129 167.026 c
-672.217 167.173 672.335 167.283 672.482 167.364 c
-672.636 167.441 672.809 167.482 672.996 167.482 c
-673.309 167.482 673.544 167.401 673.702 167.247 c
-673.856 167.1 673.937 166.88 673.937 166.585 c
-673.937 165.086 l
-673.945 164.85 673.981 164.649 674.041 164.484 c
-674.041 164.439 l
-h
-672.879 164.821 m
-672.996 164.821 673.106 164.854 673.218 164.925 c
-673.324 164.991 673.401 165.075 673.453 165.174 c
-673.453 165.88 l
-673.187 165.88 l
-672.952 165.88 672.765 165.829 672.63 165.733 c
-672.501 165.634 672.438 165.49 672.438 165.307 c
-672.438 165.137 672.468 165.016 672.526 164.939 c
-672.593 164.858 672.71 164.821 672.879 164.821 c
-674.415 166.071 m
-674.415 166.531 674.496 166.88 674.665 167.115 c
-674.841 167.358 675.091 167.482 675.415 167.482 c
-675.697 167.482 675.918 167.364 676.076 167.129 c
-676.076 168.673 l
-676.561 168.673 l
-676.561 164.439 l
-676.121 164.439 l
-676.091 164.763 l
-675.932 164.505 675.709 164.38 675.415 164.38 c
-675.099 164.38 674.856 164.498 674.679 164.733 c
-674.504 164.976 674.415 165.321 674.415 165.762 c
-h
-674.901 165.791 m
-674.901 165.457 674.948 165.211 675.047 165.056 c
-675.142 164.898 675.304 164.821 675.533 164.821 c
-675.774 164.821 675.959 164.939 676.076 165.174 c
-676.076 166.689 l
-675.948 166.924 675.768 167.041 675.533 167.041 c
-675.304 167.041 675.142 166.961 675.047 166.806 c
-674.948 166.648 674.901 166.409 674.901 166.086 c
-h
-677.131 163.645 m
-676.837 163.836 l
-677.013 164.083 677.105 164.333 677.116 164.586 c
-677.116 165.042 l
-677.615 165.042 l
-677.615 164.645 l
-677.615 164.458 677.565 164.274 677.469 164.087 c
-677.38 163.903 677.266 163.755 677.131 163.645 c
-f
-q 1 0 0 1 633.2211 158.6623 cm
-0 0 m
-0.544 2.176 l
-1.058 2.176 l
-0.088 -1.234 l
-0.018 -1.488 -0.085 -1.679 -0.22 -1.808 c
--0.36 -1.944 -0.511 -2.013 -0.676 -2.013 c
--0.746 -2.013 -0.831 -1.999 -0.926 -1.969 c
--0.926 -1.558 l
--0.823 -1.573 l
--0.688 -1.573 -0.58 -1.535 -0.5 -1.469 c
--0.412 -1.4 -0.345 -1.282 -0.294 -1.117 c
--0.206 -0.779 l
--1.073 2.176 l
--0.544 2.176 l
-h
-1.238 0.823 m
-1.238 1.253 1.341 1.595 1.547 1.852 c
-1.76 2.106 2.039 2.234 2.385 2.234 c
-2.726 2.234 3.002 2.106 3.208 1.852 c
-3.421 1.606 3.535 1.272 3.546 0.853 c
-3.546 0.544 l
-3.546 0.111 3.436 -0.231 3.223 -0.484 c
-3.017 -0.742 2.737 -0.867 2.385 -0.867 c
-2.039 -0.867 1.768 -0.746 1.562 -0.5 c
-1.356 -0.257 1.245 0.077 1.238 0.5 c
-h
-1.723 0.544 m
-1.723 0.229 1.783 -0.014 1.899 -0.191 c
-2.024 -0.359 2.186 -0.44 2.385 -0.44 c
-2.815 -0.44 3.039 -0.132 3.061 0.485 c
-3.061 0.823 l
-3.061 1.125 2.995 1.367 2.87 1.544 c
-2.753 1.72 2.591 1.808 2.385 1.808 c
-2.186 1.808 2.024 1.72 1.899 1.544 c
-1.783 1.367 1.723 1.125 1.723 0.823 c
-h
-5.501 -0.544 m
-5.343 -0.76 5.108 -0.867 4.796 -0.867 c
-4.531 -0.867 4.325 -0.775 4.178 -0.588 c
-4.039 -0.404 3.973 -0.128 3.973 0.235 c
-3.973 2.176 l
-4.457 2.176 l
-4.457 0.265 l
-4.457 -0.199 4.597 -0.426 4.883 -0.426 c
-5.178 -0.426 5.376 -0.294 5.486 -0.029 c
-5.486 2.176 l
-5.986 2.176 l
-5.986 -0.808 l
-5.516 -0.808 l
-h
-9.183 -0.044 m
-9.183 0.063 9.143 0.151 9.066 0.221 c
-8.985 0.298 8.834 0.387 8.61 0.485 c
-8.345 0.592 8.158 0.684 8.052 0.765 c
-7.941 0.842 7.864 0.93 7.817 1.029 c
-7.765 1.125 7.742 1.243 7.742 1.382 c
-7.742 1.625 7.831 1.827 8.008 1.985 c
-8.183 2.151 8.407 2.234 8.683 2.234 c
-8.977 2.234 9.213 2.147 9.389 1.97 c
-9.565 1.801 9.654 1.588 9.654 1.324 c
-9.168 1.324 l
-9.168 1.459 9.117 1.573 9.022 1.661 c
-8.933 1.757 8.819 1.808 8.683 1.808 c
-8.536 1.808 8.422 1.768 8.345 1.691 c
-8.264 1.621 8.228 1.522 8.228 1.397 c
-8.228 1.297 8.257 1.22 8.316 1.162 c
-8.374 1.103 8.515 1.022 8.742 0.927 c
-9.103 0.779 9.348 0.636 9.477 0.5 c
-9.613 0.372 9.683 0.198 9.683 -0.014 c
-9.683 -0.272 9.587 -0.477 9.404 -0.632 c
-9.228 -0.789 8.992 -0.867 8.698 -0.867 c
-8.382 -0.867 8.129 -0.779 7.934 -0.602 c
-7.746 -0.419 7.655 -0.187 7.655 0.088 c
-8.139 0.088 l
-8.147 -0.081 8.198 -0.213 8.287 -0.309 c
-8.382 -0.397 8.522 -0.44 8.698 -0.44 c
-8.852 -0.44 8.97 -0.407 9.051 -0.338 c
-9.139 -0.272 9.183 -0.172 9.183 -0.044 c
-11.197 -0.867 m
-10.822 -0.867 10.539 -0.76 10.344 -0.544 c
-10.146 -0.319 10.051 0.008 10.051 0.441 c
-10.051 0.809 l
-10.051 1.249 10.142 1.595 10.329 1.852 c
-10.524 2.106 10.8 2.234 11.152 2.234 c
-11.495 2.234 11.748 2.12 11.917 1.897 c
-12.093 1.669 12.185 1.324 12.197 0.853 c
-12.197 0.544 l
-10.535 0.544 l
-10.535 0.47 l
-10.535 0.148 10.595 -0.087 10.712 -0.235 c
-10.83 -0.374 10.998 -0.44 11.227 -0.44 c
-11.373 -0.44 11.499 -0.419 11.609 -0.367 c
-11.715 -0.309 11.818 -0.22 11.917 -0.103 c
-12.167 -0.411 l
-11.961 -0.716 11.638 -0.867 11.197 -0.867 c
-11.152 1.808 m
-10.947 1.808 10.793 1.738 10.697 1.602 c
-10.598 1.463 10.543 1.249 10.535 0.956 c
-11.711 0.956 l
-11.711 1.029 l
-11.69 1.301 11.638 1.5 11.549 1.617 c
-11.462 1.742 11.329 1.808 11.152 1.808 c
-13.666 -0.867 m
-13.292 -0.867 13.008 -0.76 12.814 -0.544 c
-12.615 -0.319 12.52 0.008 12.52 0.441 c
-12.52 0.809 l
-12.52 1.249 12.612 1.595 12.799 1.852 c
-12.993 2.106 13.269 2.234 13.622 2.234 c
-13.964 2.234 14.217 2.12 14.387 1.897 c
-14.563 1.669 14.655 1.324 14.666 0.853 c
-14.666 0.544 l
-13.005 0.544 l
-13.005 0.47 l
-13.005 0.148 13.064 -0.087 13.182 -0.235 c
-13.299 -0.374 13.468 -0.44 13.696 -0.44 c
-13.843 -0.44 13.968 -0.419 14.078 -0.367 c
-14.184 -0.309 14.287 -0.22 14.387 -0.103 c
-14.637 -0.411 l
-14.431 -0.716 14.107 -0.867 13.666 -0.867 c
-13.622 1.808 m
-13.417 1.808 13.263 1.738 13.167 1.602 c
-13.068 1.463 13.012 1.249 13.005 0.956 c
-14.181 0.956 l
-14.181 1.029 l
-14.159 1.301 14.107 1.5 14.019 1.617 c
-13.931 1.742 13.799 1.808 13.622 1.808 c
-16.812 -0.808 -0.5 2.984 re
-16.841 2.97 m
-16.841 2.881 16.816 2.808 16.768 2.749 c
-16.727 2.698 16.658 2.675 16.562 2.675 c
-16.474 2.675 16.404 2.698 16.357 2.749 c
-16.316 2.808 16.297 2.874 16.297 2.955 c
-16.297 3.043 16.316 3.117 16.357 3.175 c
-16.404 3.234 16.474 3.263 16.562 3.263 c
-16.658 3.263 16.727 3.234 16.768 3.175 c
-16.816 3.117 16.841 3.047 16.841 2.97 c
-18.117 2.896 m
-18.117 2.176 l
-18.572 2.176 l
-18.572 1.779 l
-18.117 1.779 l
-18.117 -0.073 l
-18.117 -0.191 18.135 -0.279 18.175 -0.338 c
-18.212 -0.397 18.282 -0.426 18.381 -0.426 c
-18.44 -0.426 18.502 -0.419 18.572 -0.397 c
-18.572 -0.808 l
-18.454 -0.845 18.341 -0.867 18.234 -0.867 c
-18.036 -0.867 17.885 -0.801 17.778 -0.661 c
-17.679 -0.525 17.631 -0.33 17.631 -0.073 c
-17.631 1.779 l
-17.176 1.779 l
-17.176 2.176 l
-17.631 2.176 l
-17.631 2.896 l
-h
-19.039 -1.602 m
-18.745 -1.411 l
-18.921 -1.165 19.013 -0.914 19.025 -0.661 c
-19.025 -0.205 l
-19.524 -0.205 l
-19.524 -0.602 l
-19.524 -0.789 19.472 -0.974 19.377 -1.161 c
-19.289 -1.344 19.175 -1.492 19.039 -1.602 c
-22.518 1.72 m
-22.449 1.727 22.375 1.735 22.298 1.735 c
-22.042 1.735 21.865 1.595 21.77 1.324 c
-21.77 -0.808 l
-21.284 -0.808 l
-21.284 2.176 l
-21.755 2.176 l
-21.77 1.867 l
-21.894 2.11 22.078 2.234 22.313 2.234 c
-22.391 2.234 22.453 2.22 22.504 2.19 c
-h
-23.416 -0.808 -0.5 2.984 re
-23.445 2.97 m
-23.445 2.881 23.42 2.808 23.372 2.749 c
-23.331 2.698 23.262 2.675 23.166 2.675 c
-23.077 2.675 23.008 2.698 22.96 2.749 c
-22.919 2.808 22.901 2.874 22.901 2.955 c
-22.901 3.043 22.919 3.117 22.96 3.175 c
-23.008 3.234 23.077 3.263 23.166 3.263 c
-23.262 3.263 23.331 3.234 23.372 3.175 c
-23.42 3.117 23.445 3.047 23.445 2.97 c
-23.989 0.823 m
-23.989 1.283 24.07 1.632 24.239 1.867 c
-24.415 2.11 24.665 2.234 24.988 2.234 c
-25.29 2.234 25.521 2.103 25.679 1.837 c
-25.708 2.176 l
-26.15 2.176 l
-26.15 -0.837 l
-26.15 -1.209 26.05 -1.492 25.855 -1.691 c
-25.668 -1.885 25.407 -1.984 25.076 -1.984 c
-24.93 -1.984 24.76 -1.944 24.577 -1.866 c
-24.39 -1.797 24.253 -1.708 24.165 -1.602 c
-24.357 -1.263 l
-24.562 -1.469 24.787 -1.573 25.032 -1.573 c
-25.433 -1.573 25.639 -1.344 25.65 -0.897 c
-25.65 -0.515 l
-25.492 -0.75 25.271 -0.867 24.988 -0.867 c
-24.673 -0.867 24.43 -0.75 24.253 -0.515 c
-24.085 -0.279 23.996 0.052 23.989 0.485 c
-h
-24.474 0.544 m
-24.474 0.21 24.521 -0.037 24.621 -0.191 c
-24.716 -0.349 24.878 -0.426 25.105 -0.426 c
-25.348 -0.426 25.533 -0.305 25.65 -0.058 c
-25.65 1.426 l
-25.533 1.669 25.356 1.794 25.12 1.794 c
-24.893 1.794 24.731 1.713 24.635 1.559 c
-24.536 1.401 24.481 1.162 24.474 0.838 c
-h
-27.171 1.867 m
-27.355 2.11 27.59 2.234 27.877 2.234 c
-28.406 2.234 28.674 1.881 28.685 1.176 c
-28.685 -0.808 l
-28.201 -0.808 l
-28.201 1.147 l
-28.201 1.382 28.16 1.548 28.083 1.646 c
-28.002 1.742 27.884 1.794 27.73 1.794 c
-27.613 1.794 27.502 1.754 27.407 1.676 c
-27.307 1.595 27.23 1.488 27.171 1.353 c
-27.171 -0.808 l
-26.686 -0.808 l
-26.686 3.425 l
-27.171 3.425 l
-h
-29.857 2.896 m
-29.857 2.176 l
-30.313 2.176 l
-30.313 1.779 l
-29.857 1.779 l
-29.857 -0.073 l
-29.857 -0.191 29.876 -0.279 29.916 -0.338 c
-29.953 -0.397 30.023 -0.426 30.122 -0.426 c
-30.181 -0.426 30.243 -0.419 30.313 -0.397 c
-30.313 -0.808 l
-30.196 -0.845 30.082 -0.867 29.975 -0.867 c
-29.776 -0.867 29.626 -0.801 29.519 -0.661 c
-29.42 -0.525 29.373 -0.33 29.373 -0.073 c
-29.373 1.779 l
-28.916 1.779 l
-28.916 2.176 l
-29.373 2.176 l
-29.373 2.896 l
-h
-31.28 0.324 m
-31.28 0.537 31.297 0.713 31.338 0.853 c
-31.386 1 31.5 1.176 31.677 1.382 c
-31.883 1.632 l
-32.007 1.816 32.074 2.003 32.074 2.19 c
-32.074 2.386 32.029 2.536 31.941 2.646 c
-31.86 2.753 31.75 2.808 31.603 2.808 c
-31.463 2.808 31.345 2.756 31.25 2.66 c
-31.162 2.562 31.118 2.429 31.118 2.264 c
-30.632 2.264 l
-30.632 2.565 30.721 2.808 30.898 2.984 c
-31.081 3.168 31.316 3.263 31.603 3.263 c
-31.897 3.263 32.124 3.168 32.294 2.984 c
-32.471 2.797 32.558 2.543 32.558 2.22 c
-32.558 1.904 32.43 1.592 32.176 1.279 c
-31.926 0.971 l
-31.816 0.823 31.765 0.607 31.765 0.324 c
-h
-31.544 -0.264 m
-31.632 -0.264 31.698 -0.294 31.75 -0.353 c
-31.798 -0.404 31.823 -0.47 31.823 -0.558 c
-31.823 -0.639 31.798 -0.706 31.75 -0.764 c
-31.698 -0.812 31.632 -0.837 31.544 -0.837 c
-31.445 -0.837 31.372 -0.812 31.324 -0.764 c
-31.283 -0.706 31.264 -0.639 31.264 -0.558 c
-31.264 -0.47 31.283 -0.404 31.324 -0.353 c
-31.372 -0.294 31.445 -0.264 31.544 -0.264 c
-f
-Q
-0.793 0.801 0.129 0.016 K
-0.567 w 1 j 1 J
-q 1 0 0 1 678.972 167.5189 cm
-0 0 m
-7.555 -2.874 l
-S
-Q
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 684.5352 165.4025 cm
-0 0 m
--1.377 -0.618 l
-2.492 -0.949 l
--0.618 1.377 l
-h
-f*
-Q
-0.906 0.785 0.617 0.969 K
-0.283 w 0 j 0 J
-q 1 0 0 1 684.5352 165.4025 cm
-0 0 m
--1.377 -0.618 l
-2.492 -0.949 l
--0.618 1.377 l
-0 0 l
-h
-S
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 501.1054 110.5303 cm
-0 0 m
--1.058 0 l
--1.058 -3.572 l
--1.558 -3.572 l
--1.558 0 l
--2.616 0 l
--2.616 0.441 l
-0 0.441 l
-h
-0.823 -0.897 m
-1.008 -0.654 1.243 -0.529 1.529 -0.529 c
-2.058 -0.529 2.326 -0.881 2.338 -1.587 c
-2.338 -3.572 l
-1.852 -3.572 l
-1.852 -1.616 l
-1.852 -1.381 1.812 -1.216 1.735 -1.117 c
-1.654 -1.022 1.536 -0.97 1.382 -0.97 c
-1.264 -0.97 1.154 -1.01 1.058 -1.087 c
-0.96 -1.168 0.882 -1.275 0.823 -1.411 c
-0.823 -3.572 l
-0.339 -3.572 l
-0.339 0.661 l
-0.823 0.661 l
-h
-3.407 -3.572 -0.5 2.984 re
-3.437 0.206 m
-3.437 0.118 3.41 0.044 3.363 -0.014 c
-3.323 -0.066 3.252 -0.087 3.157 -0.087 c
-3.069 -0.087 2.999 -0.066 2.951 -0.014 c
-2.911 0.044 2.893 0.11 2.893 0.191 c
-2.893 0.279 2.911 0.353 2.951 0.412 c
-2.999 0.47 3.069 0.5 3.157 0.5 c
-3.252 0.5 3.323 0.47 3.363 0.412 c
-3.41 0.353 3.437 0.283 3.437 0.206 c
-5.524 -2.807 m
-5.524 -2.701 5.484 -2.612 5.406 -2.543 c
-5.326 -2.466 5.174 -2.377 4.95 -2.278 c
-4.686 -2.171 4.499 -2.08 4.391 -1.999 c
-4.281 -1.922 4.204 -1.834 4.156 -1.734 c
-4.105 -1.639 4.083 -1.521 4.083 -1.381 c
-4.083 -1.139 4.171 -0.937 4.348 -0.779 c
-4.524 -0.613 4.748 -0.529 5.024 -0.529 c
-5.318 -0.529 5.553 -0.617 5.729 -0.793 c
-5.906 -0.962 5.994 -1.176 5.994 -1.44 c
-5.509 -1.44 l
-5.509 -1.304 5.457 -1.19 5.362 -1.103 c
-5.274 -1.007 5.16 -0.955 5.024 -0.955 c
-4.877 -0.955 4.763 -0.995 4.686 -1.072 c
-4.605 -1.143 4.568 -1.242 4.568 -1.367 c
-4.568 -1.466 4.597 -1.543 4.657 -1.602 c
-4.715 -1.66 4.855 -1.741 5.083 -1.837 c
-5.443 -1.984 5.689 -2.127 5.818 -2.263 c
-5.954 -2.392 6.024 -2.564 6.024 -2.778 c
-6.024 -3.035 5.928 -3.241 5.744 -3.395 c
-5.567 -3.553 5.332 -3.63 5.039 -3.63 c
-4.723 -3.63 4.469 -3.542 4.274 -3.366 c
-4.087 -3.183 3.995 -2.95 3.995 -2.675 c
-4.48 -2.675 l
-4.487 -2.844 4.539 -2.977 4.627 -3.072 c
-4.723 -3.16 4.862 -3.204 5.039 -3.204 c
-5.193 -3.204 5.311 -3.171 5.391 -3.102 c
-5.48 -3.035 5.524 -2.936 5.524 -2.807 c
-8.214 -3.572 -0.5 2.984 re
-8.243 0.206 m
-8.243 0.118 8.217 0.044 8.169 -0.014 c
-8.129 -0.066 8.059 -0.087 7.963 -0.087 c
-7.876 -0.087 7.805 -0.066 7.758 -0.014 c
-7.718 0.044 7.699 0.11 7.699 0.191 c
-7.699 0.279 7.718 0.353 7.758 0.412 c
-7.805 0.47 7.876 0.5 7.963 0.5 c
-8.059 0.5 8.129 0.47 8.169 0.412 c
-8.217 0.353 8.243 0.283 8.243 0.206 c
-10.33 -2.807 m
-10.33 -2.701 10.29 -2.612 10.213 -2.543 c
-10.132 -2.466 9.981 -2.377 9.757 -2.278 c
-9.492 -2.171 9.305 -2.08 9.199 -1.999 c
-9.089 -1.922 9.011 -1.834 8.963 -1.734 c
-8.912 -1.639 8.89 -1.521 8.89 -1.381 c
-8.89 -1.139 8.978 -0.937 9.154 -0.779 c
-9.33 -0.613 9.555 -0.529 9.831 -0.529 c
-10.124 -0.529 10.359 -0.617 10.536 -0.793 c
-10.712 -0.962 10.801 -1.176 10.801 -1.44 c
-10.315 -1.44 l
-10.315 -1.304 10.264 -1.19 10.168 -1.103 c
-10.08 -1.007 9.966 -0.955 9.831 -0.955 c
-9.683 -0.955 9.569 -0.995 9.492 -1.072 c
-9.411 -1.143 9.375 -1.242 9.375 -1.367 c
-9.375 -1.466 9.405 -1.543 9.463 -1.602 c
-9.522 -1.66 9.661 -1.741 9.889 -1.837 c
-10.249 -1.984 10.496 -2.127 10.624 -2.263 c
-10.76 -2.392 10.83 -2.564 10.83 -2.778 c
-10.83 -3.035 10.735 -3.241 10.55 -3.395 c
-10.375 -3.553 10.139 -3.63 9.845 -3.63 c
-9.529 -3.63 9.276 -3.542 9.081 -3.366 c
-8.894 -3.183 8.802 -2.95 8.802 -2.675 c
-9.287 -2.675 l
-9.294 -2.844 9.345 -2.977 9.434 -3.072 c
-9.529 -3.16 9.669 -3.204 9.845 -3.204 c
-9.999 -3.204 10.117 -3.171 10.198 -3.102 c
-10.286 -3.035 10.33 -2.936 10.33 -2.807 c
-14.02 -3.572 m
-13.991 -3.505 13.968 -3.395 13.961 -3.248 c
-13.785 -3.505 13.564 -3.63 13.299 -3.63 c
-13.024 -3.63 12.807 -3.557 12.653 -3.41 c
-12.505 -3.256 12.432 -3.039 12.432 -2.763 c
-12.432 -2.462 12.535 -2.219 12.74 -2.043 c
-12.947 -1.859 13.23 -1.764 13.594 -1.764 c
-13.947 -1.764 l
-13.947 -1.44 l
-13.947 -1.263 13.906 -1.143 13.829 -1.072 c
-13.748 -0.995 13.63 -0.955 13.476 -0.955 c
-13.328 -0.955 13.204 -0.999 13.108 -1.087 c
-13.02 -1.176 12.976 -1.286 12.976 -1.411 c
-12.491 -1.411 l
-12.491 -1.263 12.535 -1.124 12.623 -0.985 c
-12.711 -0.837 12.829 -0.727 12.976 -0.646 c
-13.13 -0.569 13.303 -0.529 13.49 -0.529 c
-13.803 -0.529 14.038 -0.61 14.196 -0.764 c
-14.35 -0.911 14.431 -1.132 14.431 -1.425 c
-14.431 -2.925 l
-14.439 -3.16 14.475 -3.362 14.534 -3.528 c
-14.534 -3.572 l
-h
-13.373 -3.189 m
-13.49 -3.189 13.6 -3.156 13.711 -3.087 c
-13.818 -3.021 13.895 -2.936 13.947 -2.836 c
-13.947 -2.131 l
-13.681 -2.131 l
-13.446 -2.131 13.259 -2.183 13.123 -2.278 c
-12.994 -2.377 12.932 -2.52 12.932 -2.705 c
-12.932 -2.873 12.962 -2.994 13.02 -3.072 c
-13.087 -3.152 13.204 -3.189 13.373 -3.189 c
-16.669 -0.588 m
-16.684 -0.911 l
-16.867 -0.658 17.11 -0.529 17.404 -0.529 c
-17.933 -0.529 18.201 -0.881 18.213 -1.587 c
-18.213 -3.572 l
-17.727 -3.572 l
-17.727 -1.616 l
-17.727 -1.381 17.687 -1.216 17.61 -1.117 c
-17.529 -1.022 17.411 -0.97 17.257 -0.97 c
-17.139 -0.97 17.029 -1.01 16.933 -1.087 c
-16.835 -1.168 16.757 -1.275 16.698 -1.411 c
-16.698 -3.572 l
-16.214 -3.572 l
-16.214 -0.588 l
-h
-18.664 -1.94 m
-18.664 -1.51 18.768 -1.168 18.973 -0.911 c
-19.186 -0.658 19.466 -0.529 19.811 -0.529 c
-20.153 -0.529 20.428 -0.658 20.634 -0.911 c
-20.848 -1.157 20.962 -1.492 20.972 -1.911 c
-20.972 -2.219 l
-20.972 -2.653 20.862 -2.994 20.649 -3.248 c
-20.443 -3.505 20.164 -3.63 19.811 -3.63 c
-19.466 -3.63 19.194 -3.509 18.988 -3.262 c
-18.782 -3.021 18.672 -2.686 18.664 -2.263 c
-h
-19.15 -2.219 m
-19.15 -2.535 19.208 -2.778 19.326 -2.954 c
-19.451 -3.123 19.613 -3.204 19.811 -3.204 c
-20.241 -3.204 20.465 -2.896 20.487 -2.278 c
-20.487 -1.94 l
-20.487 -1.639 20.421 -1.396 20.296 -1.22 c
-20.179 -1.043 20.017 -0.955 19.811 -0.955 c
-19.613 -0.955 19.451 -1.043 19.326 -1.22 c
-19.208 -1.396 19.15 -1.639 19.15 -1.94 c
-h
-22.645 -1.043 m
-22.575 -1.036 22.501 -1.028 22.423 -1.028 c
-22.167 -1.028 21.99 -1.168 21.895 -1.44 c
-21.895 -3.572 l
-21.409 -3.572 l
-21.409 -0.588 l
-21.88 -0.588 l
-21.895 -0.897 l
-22.02 -0.654 22.203 -0.529 22.439 -0.529 c
-22.516 -0.529 22.578 -0.544 22.629 -0.573 c
-h
-23.471 -0.588 m
-23.486 -0.867 l
-23.662 -0.643 23.901 -0.529 24.206 -0.529 c
-24.537 -0.529 24.769 -0.675 24.897 -0.97 c
-25.081 -0.675 25.342 -0.529 25.676 -0.529 c
-26.234 -0.529 26.518 -0.874 26.529 -1.558 c
-26.529 -3.572 l
-26.043 -3.572 l
-26.043 -1.602 l
-26.043 -1.389 26.003 -1.23 25.926 -1.132 c
-25.845 -1.025 25.713 -0.97 25.529 -0.97 c
-25.382 -0.97 25.264 -1.028 25.176 -1.146 c
-25.088 -1.257 25.033 -1.396 25.014 -1.573 c
-25.014 -3.572 l
-24.53 -3.572 l
-24.53 -1.587 l
-24.519 -1.176 24.345 -0.97 24.015 -0.97 c
-23.769 -0.97 23.597 -1.095 23.501 -1.338 c
-23.501 -3.572 l
-23.015 -3.572 l
-23.015 -0.588 l
-h
-28.505 -3.572 m
-28.476 -3.505 28.455 -3.395 28.447 -3.248 c
-28.27 -3.505 28.05 -3.63 27.786 -3.63 c
-27.51 -3.63 27.293 -3.557 27.138 -3.41 c
-26.992 -3.256 26.918 -3.039 26.918 -2.763 c
-26.918 -2.462 27.021 -2.219 27.227 -2.043 c
-27.433 -1.859 27.715 -1.764 28.079 -1.764 c
-28.432 -1.764 l
-28.432 -1.44 l
-28.432 -1.263 28.392 -1.143 28.314 -1.072 c
-28.233 -0.995 28.116 -0.955 27.962 -0.955 c
-27.815 -0.955 27.69 -0.999 27.595 -1.087 c
-27.506 -1.176 27.462 -1.286 27.462 -1.411 c
-26.977 -1.411 l
-26.977 -1.263 27.021 -1.124 27.109 -0.985 c
-27.198 -0.837 27.315 -0.727 27.462 -0.646 c
-27.616 -0.569 27.789 -0.529 27.977 -0.529 c
-28.289 -0.529 28.524 -0.61 28.682 -0.764 c
-28.837 -0.911 28.917 -1.132 28.917 -1.425 c
-28.917 -2.925 l
-28.925 -3.16 28.962 -3.362 29.02 -3.528 c
-29.02 -3.572 l
-h
-27.859 -3.189 m
-27.977 -3.189 28.087 -3.156 28.197 -3.087 c
-28.303 -3.021 28.38 -2.936 28.432 -2.836 c
-28.432 -2.131 l
-28.168 -2.131 l
-27.932 -2.131 27.745 -2.183 27.609 -2.278 c
-27.48 -2.377 27.418 -2.52 27.418 -2.705 c
-27.418 -2.873 27.447 -2.994 27.506 -3.072 c
-27.572 -3.152 27.69 -3.189 27.859 -3.189 c
-30.027 -3.572 -0.5 4.233 re
-32.933 -3.204 m
-33.099 -3.204 33.232 -3.156 33.33 -3.057 c
-33.426 -2.961 33.481 -2.818 33.492 -2.631 c
-33.948 -2.631 l
-33.937 -2.917 33.834 -3.156 33.639 -3.351 c
-33.452 -3.538 33.217 -3.63 32.933 -3.63 c
-32.57 -3.63 32.291 -3.513 32.096 -3.278 c
-31.898 -3.042 31.802 -2.697 31.802 -2.234 c
-31.802 -1.911 l
-31.802 -1.462 31.894 -1.117 32.081 -0.881 c
-32.276 -0.646 32.559 -0.529 32.933 -0.529 c
-33.235 -0.529 33.477 -0.628 33.654 -0.823 c
-33.837 -1.022 33.937 -1.286 33.948 -1.616 c
-33.492 -1.616 l
-33.471 -1.392 33.411 -1.227 33.316 -1.117 c
-33.228 -1.01 33.099 -0.955 32.933 -0.955 c
-32.717 -0.955 32.555 -1.028 32.449 -1.176 c
-32.349 -1.315 32.295 -1.543 32.287 -1.866 c
-32.287 -2.248 l
-32.287 -2.601 32.335 -2.851 32.434 -2.998 c
-32.54 -3.138 32.706 -3.204 32.933 -3.204 c
-34.242 -1.94 m
-34.242 -1.51 34.345 -1.168 34.551 -0.911 c
-34.764 -0.658 35.043 -0.529 35.389 -0.529 c
-35.73 -0.529 36.006 -0.658 36.212 -0.911 c
-36.424 -1.157 36.538 -1.492 36.55 -1.911 c
-36.55 -2.219 l
-36.55 -2.653 36.44 -2.994 36.226 -3.248 c
-36.021 -3.505 35.742 -3.63 35.389 -3.63 c
-35.043 -3.63 34.771 -3.509 34.566 -3.262 c
-34.36 -3.021 34.25 -2.686 34.242 -2.263 c
-h
-34.727 -2.219 m
-34.727 -2.535 34.786 -2.778 34.903 -2.954 c
-35.028 -3.123 35.19 -3.204 35.389 -3.204 c
-35.819 -3.204 36.043 -2.896 36.064 -2.278 c
-36.064 -1.94 l
-36.064 -1.639 35.998 -1.396 35.873 -1.22 c
-35.756 -1.043 35.594 -0.955 35.389 -0.955 c
-35.19 -0.955 35.028 -1.043 34.903 -1.22 c
-34.786 -1.396 34.727 -1.639 34.727 -1.94 c
-h
-37.442 -0.588 m
-37.457 -0.867 l
-37.633 -0.643 37.872 -0.529 38.178 -0.529 c
-38.508 -0.529 38.74 -0.675 38.869 -0.97 c
-39.052 -0.675 39.314 -0.529 39.647 -0.529 c
-40.206 -0.529 40.489 -0.874 40.5 -1.558 c
-40.5 -3.572 l
-40.015 -3.572 l
-40.015 -1.602 l
-40.015 -1.389 39.975 -1.23 39.898 -1.132 c
-39.817 -1.025 39.684 -0.97 39.501 -0.97 c
-39.354 -0.97 39.235 -1.028 39.148 -1.146 c
-39.06 -1.257 39.004 -1.396 38.986 -1.573 c
-38.986 -3.572 l
-38.501 -3.572 l
-38.501 -1.587 l
-38.49 -1.176 38.317 -0.97 37.986 -0.97 c
-37.741 -0.97 37.568 -1.095 37.473 -1.338 c
-37.473 -3.572 l
-36.987 -3.572 l
-36.987 -0.588 l
-h
-41.404 -0.588 m
-41.419 -0.867 l
-41.595 -0.643 41.834 -0.529 42.139 -0.529 c
-42.47 -0.529 42.701 -0.675 42.83 -0.97 c
-43.013 -0.675 43.274 -0.529 43.609 -0.529 c
-44.168 -0.529 44.45 -0.874 44.461 -1.558 c
-44.461 -3.572 l
-43.977 -3.572 l
-43.977 -1.602 l
-43.977 -1.389 43.936 -1.23 43.859 -1.132 c
-43.778 -1.025 43.646 -0.97 43.462 -0.97 c
-43.314 -0.97 43.197 -1.028 43.109 -1.146 c
-43.021 -1.257 42.965 -1.396 42.948 -1.573 c
-42.948 -3.572 l
-42.462 -3.572 l
-42.462 -1.587 l
-42.451 -1.176 42.279 -0.97 41.948 -0.97 c
-41.702 -0.97 41.529 -1.095 41.433 -1.338 c
-41.433 -3.572 l
-40.949 -3.572 l
-40.949 -0.588 l
-h
-45.439 -3.572 -0.5 2.984 re
-45.469 0.206 m
-45.469 0.118 45.442 0.044 45.395 -0.014 c
-45.354 -0.066 45.284 -0.087 45.189 -0.087 c
-45.101 -0.087 45.031 -0.066 44.983 -0.014 c
-44.943 0.044 44.924 0.11 44.924 0.191 c
-44.924 0.279 44.943 0.353 44.983 0.412 c
-45.031 0.47 45.101 0.5 45.189 0.5 c
-45.284 0.5 45.354 0.47 45.395 0.412 c
-45.442 0.353 45.469 0.283 45.469 0.206 c
-46.747 0.133 m
-46.747 -0.588 l
-47.203 -0.588 l
-47.203 -0.985 l
-46.747 -0.985 l
-46.747 -2.836 l
-46.747 -2.954 46.765 -3.042 46.806 -3.102 c
-46.842 -3.16 46.913 -3.189 47.012 -3.189 c
-47.071 -3.189 47.133 -3.183 47.203 -3.16 c
-47.203 -3.572 l
-47.085 -3.609 46.971 -3.63 46.865 -3.63 c
-46.666 -3.63 46.516 -3.564 46.41 -3.424 c
-46.31 -3.289 46.262 -3.094 46.262 -2.836 c
-46.262 -0.985 l
-45.806 -0.985 l
-45.806 -0.588 l
-46.262 -0.588 l
-46.262 0.133 l
-h
-47.669 -4.365 m
-47.376 -4.174 l
-47.552 -3.928 47.644 -3.678 47.655 -3.424 c
-47.655 -2.969 l
-48.155 -2.969 l
-48.155 -3.366 l
-48.155 -3.553 48.103 -3.737 48.008 -3.925 c
-47.919 -4.108 47.806 -4.255 47.669 -4.365 c
-f
-Q
-515.596 100.373 -0.5 2.984 re
-515.625 104.151 m
-515.625 104.063 515.599 103.989 515.551 103.931 c
-515.511 103.879 515.441 103.858 515.345 103.858 c
-515.257 103.858 515.187 103.879 515.139 103.931 c
-515.099 103.989 515.081 104.055 515.081 104.136 c
-515.081 104.225 515.099 104.298 515.139 104.357 c
-515.187 104.415 515.257 104.446 515.345 104.446 c
-515.441 104.446 515.511 104.415 515.551 104.357 c
-515.599 104.298 515.625 104.228 515.625 104.151 c
-516.903 104.078 m
-516.903 103.357 l
-517.36 103.357 l
-517.36 102.96 l
-516.903 102.96 l
-516.903 101.109 l
-516.903 100.991 516.922 100.903 516.963 100.844 c
-516.999 100.785 517.069 100.756 517.169 100.756 c
-517.227 100.756 517.29 100.763 517.36 100.785 c
-517.36 100.373 l
-517.242 100.336 517.128 100.315 517.021 100.315 c
-516.822 100.315 516.672 100.381 516.566 100.521 c
-516.467 100.656 516.419 100.851 516.419 101.109 c
-516.419 102.96 l
-515.963 102.96 l
-515.963 103.357 l
-516.419 103.357 l
-516.419 104.078 l
-h
-519.513 103.049 m
-519.696 103.291 519.932 103.416 520.218 103.416 c
-520.747 103.416 521.016 103.064 521.027 102.358 c
-521.027 100.373 l
-520.542 100.373 l
-520.542 102.329 l
-520.542 102.564 520.502 102.729 520.424 102.828 c
-520.344 102.923 520.226 102.975 520.072 102.975 c
-519.954 102.975 519.843 102.935 519.748 102.858 c
-519.648 102.777 519.571 102.67 519.513 102.534 c
-519.513 100.373 l
-519.028 100.373 l
-519.028 104.606 l
-519.513 104.606 l
-h
-523.099 100.373 m
-523.07 100.44 523.048 100.55 523.041 100.697 c
-522.864 100.44 522.644 100.315 522.379 100.315 c
-522.104 100.315 521.886 100.388 521.732 100.535 c
-521.585 100.689 521.512 100.907 521.512 101.182 c
-521.512 101.483 521.615 101.726 521.821 101.902 c
-522.027 102.086 522.31 102.181 522.673 102.181 c
-523.026 102.181 l
-523.026 102.505 l
-523.026 102.682 522.985 102.802 522.908 102.873 c
-522.827 102.95 522.71 102.99 522.555 102.99 c
-522.409 102.99 522.283 102.946 522.188 102.858 c
-522.1 102.769 522.056 102.659 522.056 102.534 c
-521.57 102.534 l
-521.57 102.682 521.615 102.821 521.703 102.96 c
-521.791 103.108 521.909 103.218 522.056 103.299 c
-522.21 103.376 522.383 103.416 522.57 103.416 c
-522.883 103.416 523.118 103.336 523.276 103.181 c
-523.43 103.034 523.511 102.813 523.511 102.52 c
-523.511 101.02 l
-523.519 100.785 523.555 100.583 523.614 100.417 c
-523.614 100.373 l
-h
-522.453 100.756 m
-522.57 100.756 522.68 100.789 522.79 100.859 c
-522.898 100.924 522.975 101.009 523.026 101.109 c
-523.026 101.814 l
-522.761 101.814 l
-522.526 101.814 522.339 101.763 522.203 101.667 c
-522.075 101.568 522.012 101.425 522.012 101.241 c
-522.012 101.072 522.041 100.951 522.1 100.874 c
-522.166 100.793 522.283 100.756 522.453 100.756 c
-525.532 101.138 m
-525.532 101.244 525.491 101.333 525.414 101.402 c
-525.333 101.479 525.183 101.568 524.959 101.667 c
-524.695 101.774 524.506 101.865 524.4 101.946 c
-524.29 102.023 524.213 102.112 524.165 102.211 c
-524.113 102.306 524.091 102.424 524.091 102.564 c
-524.091 102.806 524.18 103.008 524.356 103.166 c
-524.533 103.332 524.757 103.416 525.032 103.416 c
-525.327 103.416 525.562 103.328 525.738 103.152 c
-525.915 102.983 526.002 102.769 526.002 102.505 c
-525.518 102.505 l
-525.518 102.641 525.466 102.755 525.37 102.843 c
-525.282 102.939 525.169 102.99 525.032 102.99 c
-524.885 102.99 524.772 102.95 524.695 102.873 c
-524.614 102.802 524.577 102.703 524.577 102.578 c
-524.577 102.479 524.606 102.402 524.664 102.343 c
-524.724 102.285 524.863 102.204 525.091 102.108 c
-525.451 101.961 525.697 101.818 525.826 101.682 c
-525.962 101.553 526.032 101.381 526.032 101.167 c
-526.032 100.91 525.936 100.704 525.753 100.55 c
-525.576 100.392 525.341 100.315 525.047 100.315 c
-524.731 100.315 524.477 100.403 524.282 100.579 c
-524.095 100.763 524.003 100.995 524.003 101.271 c
-524.488 101.271 l
-524.496 101.101 524.547 100.969 524.635 100.874 c
-524.731 100.785 524.87 100.741 525.047 100.741 c
-525.202 100.741 525.319 100.774 525.4 100.844 c
-525.488 100.91 525.532 101.009 525.532 101.138 c
-527.59 102.005 m
-527.59 102.435 527.693 102.777 527.899 103.034 c
-528.111 103.288 528.391 103.416 528.737 103.416 c
-529.078 103.416 529.354 103.288 529.56 103.034 c
-529.773 102.788 529.886 102.453 529.898 102.034 c
-529.898 101.726 l
-529.898 101.292 529.788 100.951 529.574 100.697 c
-529.368 100.44 529.09 100.315 528.737 100.315 c
-528.391 100.315 528.119 100.436 527.914 100.683 c
-527.708 100.924 527.598 101.259 527.59 101.682 c
-h
-528.075 101.726 m
-528.075 101.41 528.134 101.167 528.251 100.991 c
-528.377 100.822 528.538 100.741 528.737 100.741 c
-529.167 100.741 529.391 101.05 529.412 101.667 c
-529.412 102.005 l
-529.412 102.306 529.346 102.549 529.221 102.725 c
-529.104 102.902 528.942 102.99 528.737 102.99 c
-528.538 102.99 528.377 102.902 528.251 102.725 c
-528.134 102.549 528.075 102.306 528.075 102.005 c
-h
-530.79 103.357 m
-530.806 103.034 l
-530.989 103.288 531.232 103.416 531.525 103.416 c
-532.055 103.416 532.323 103.064 532.334 102.358 c
-532.334 100.373 l
-531.849 100.373 l
-531.849 102.329 l
-531.849 102.564 531.808 102.729 531.731 102.828 c
-531.65 102.923 531.533 102.975 531.378 102.975 c
-531.261 102.975 531.151 102.935 531.055 102.858 c
-530.956 102.777 530.879 102.67 530.82 102.534 c
-530.82 100.373 l
-530.335 100.373 l
-530.335 103.357 l
-h
-533.948 100.315 m
-533.572 100.315 533.289 100.421 533.094 100.638 c
-532.896 100.862 532.801 101.19 532.801 101.623 c
-532.801 101.99 l
-532.801 102.431 532.893 102.777 533.08 103.034 c
-533.275 103.288 533.551 103.416 533.903 103.416 c
-534.245 103.416 534.499 103.303 534.667 103.078 c
-534.844 102.85 534.935 102.505 534.947 102.034 c
-534.947 101.726 l
-533.285 101.726 l
-533.285 101.653 l
-533.285 101.329 533.345 101.094 533.462 100.947 c
-533.58 100.807 533.749 100.741 533.977 100.741 c
-534.124 100.741 534.249 100.763 534.359 100.814 c
-534.465 100.874 534.569 100.961 534.667 101.079 c
-534.918 100.77 l
-534.711 100.465 534.388 100.315 533.948 100.315 c
-533.903 102.99 m
-533.697 102.99 533.543 102.92 533.447 102.784 c
-533.348 102.644 533.293 102.431 533.285 102.137 c
-534.461 102.137 l
-534.461 102.211 l
-534.44 102.483 534.388 102.682 534.3 102.799 c
-534.212 102.923 534.079 102.99 533.903 102.99 c
-538.706 101.726 m
-538.706 101.256 538.621 100.903 538.457 100.668 c
-538.287 100.432 538.048 100.315 537.736 100.315 c
-537.431 100.315 537.2 100.425 537.045 100.653 c
-537.045 99.227 l
-536.56 99.227 l
-536.56 103.357 l
-537.001 103.357 l
-537.03 103.019 l
-537.185 103.284 537.416 103.416 537.721 103.416 c
-538.052 103.416 538.299 103.299 538.457 103.064 c
-538.621 102.836 538.706 102.497 538.706 102.05 c
-h
-538.221 102.005 m
-538.221 102.336 538.166 102.582 538.06 102.74 c
-537.96 102.894 537.798 102.975 537.574 102.975 c
-537.339 102.975 537.163 102.858 537.045 102.622 c
-537.045 101.079 l
-537.163 100.851 537.343 100.741 537.589 100.741 c
-537.802 100.741 537.96 100.818 538.06 100.976 c
-538.166 101.13 538.221 101.373 538.221 101.697 c
-h
-540.695 100.373 m
-540.664 100.44 540.643 100.55 540.635 100.697 c
-540.459 100.44 540.238 100.315 539.974 100.315 c
-539.698 100.315 539.481 100.388 539.327 100.535 c
-539.18 100.689 539.107 100.907 539.107 101.182 c
-539.107 101.483 539.209 101.726 539.415 101.902 c
-539.621 102.086 539.904 102.181 540.268 102.181 c
-540.62 102.181 l
-540.62 102.505 l
-540.62 102.682 540.58 102.802 540.503 102.873 c
-540.422 102.95 540.304 102.99 540.15 102.99 c
-540.003 102.99 539.878 102.946 539.783 102.858 c
-539.695 102.769 539.65 102.659 539.65 102.534 c
-539.165 102.534 l
-539.165 102.682 539.209 102.821 539.298 102.96 c
-539.386 103.108 539.504 103.218 539.65 103.299 c
-539.805 103.376 539.978 103.416 540.165 103.416 c
-540.477 103.416 540.712 103.336 540.871 103.181 c
-541.025 103.034 541.106 102.813 541.106 102.52 c
-541.106 101.02 l
-541.113 100.785 541.15 100.583 541.208 100.417 c
-541.208 100.373 l
-h
-540.047 100.756 m
-540.165 100.756 540.275 100.789 540.385 100.859 c
-540.492 100.924 540.569 101.009 540.62 101.109 c
-540.62 101.814 l
-540.356 101.814 l
-540.121 101.814 539.934 101.763 539.797 101.667 c
-539.669 101.568 539.606 101.425 539.606 101.241 c
-539.606 101.072 539.635 100.951 539.695 100.874 c
-539.76 100.793 539.878 100.756 540.047 100.756 c
-542.921 102.902 m
-542.851 102.909 542.777 102.917 542.7 102.917 c
-542.443 102.917 542.267 102.777 542.172 102.505 c
-542.172 100.373 l
-541.686 100.373 l
-541.686 103.357 l
-542.156 103.357 l
-542.172 103.049 l
-542.297 103.291 542.48 103.416 542.715 103.416 c
-542.792 103.416 542.855 103.401 542.906 103.372 c
-h
-544.296 100.315 m
-543.92 100.315 543.637 100.421 543.443 100.638 c
-543.244 100.862 543.149 101.19 543.149 101.623 c
-543.149 101.99 l
-543.149 102.431 543.241 102.777 543.428 103.034 c
-543.623 103.288 543.899 103.416 544.252 103.416 c
-544.593 103.416 544.847 103.303 545.015 103.078 c
-545.192 102.85 545.284 102.505 545.295 102.034 c
-545.295 101.726 l
-543.633 101.726 l
-543.633 101.653 l
-543.633 101.329 543.693 101.094 543.81 100.947 c
-543.928 100.807 544.097 100.741 544.325 100.741 c
-544.472 100.741 544.597 100.763 544.707 100.814 c
-544.813 100.874 544.917 100.961 545.015 101.079 c
-545.266 100.77 l
-545.06 100.465 544.736 100.315 544.296 100.315 c
-544.252 102.99 m
-544.046 102.99 543.891 102.92 543.795 102.784 c
-543.697 102.644 543.641 102.431 543.633 102.137 c
-544.809 102.137 l
-544.809 102.211 l
-544.788 102.483 544.736 102.682 544.648 102.799 c
-544.56 102.923 544.427 102.99 544.252 102.99 c
-546.162 103.357 m
-546.177 103.034 l
-546.361 103.288 546.603 103.416 546.897 103.416 c
-547.427 103.416 547.695 103.064 547.706 102.358 c
-547.706 100.373 l
-547.221 100.373 l
-547.221 102.329 l
-547.221 102.564 547.18 102.729 547.103 102.828 c
-547.022 102.923 546.904 102.975 546.75 102.975 c
-546.633 102.975 546.522 102.935 546.427 102.858 c
-546.328 102.777 546.251 102.67 546.191 102.534 c
-546.191 100.373 l
-545.707 100.373 l
-545.707 103.357 l
-h
-548.892 104.078 m
-548.892 103.357 l
-549.349 103.357 l
-549.349 102.96 l
-548.892 102.96 l
-548.892 101.109 l
-548.892 100.991 548.911 100.903 548.951 100.844 c
-548.988 100.785 549.058 100.756 549.158 100.756 c
-549.216 100.756 549.278 100.763 549.349 100.785 c
-549.349 100.373 l
-549.231 100.336 549.117 100.315 549.01 100.315 c
-548.811 100.315 548.661 100.381 548.555 100.521 c
-548.456 100.656 548.408 100.851 548.408 101.109 c
-548.408 102.96 l
-547.951 102.96 l
-547.951 103.357 l
-548.408 103.357 l
-548.408 104.078 l
-h
-f
-0.793 0.801 0.129 0.016 K
-0.567 w 1 j 1 J
-q 1 0 0 1 550.895 108.4612 cm
-0 0 m
-5.56 4.844 l
-S
-Q
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 554.8461 111.9046 cm
-0 0 m
--0.104 -1.507 l
-2.009 1.75 l
--1.504 0.103 l
-h
-f*
-Q
-0.906 0.785 0.617 0.969 K
-0.283 w 0 j 0 J
-q 1 0 0 1 554.8461 111.9047 cm
-0 0 m
--0.104 -1.507 l
-2.009 1.75 l
--1.504 0.103 l
-0 0 l
-h
-S
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 684.3624 112.9743 cm
-0 0 m
--1.058 0 l
--1.058 -3.572 l
--1.558 -3.572 l
--1.558 0 l
--2.616 0 l
--2.616 0.441 l
-0 0.441 l
-h
-0.823 -0.897 m
-1.008 -0.654 1.243 -0.53 1.529 -0.53 c
-2.058 -0.53 2.326 -0.882 2.338 -1.588 c
-2.338 -3.572 l
-1.852 -3.572 l
-1.852 -1.617 l
-1.852 -1.382 1.812 -1.216 1.735 -1.118 c
-1.654 -1.022 1.536 -0.97 1.382 -0.97 c
-1.264 -0.97 1.154 -1.01 1.058 -1.088 c
-0.96 -1.168 0.882 -1.276 0.823 -1.411 c
-0.823 -3.572 l
-0.339 -3.572 l
-0.339 0.661 l
-0.823 0.661 l
-h
-3.406 -3.572 -0.5 2.984 re
-3.437 0.206 m
-3.437 0.118 3.41 0.044 3.362 -0.015 c
-3.323 -0.066 3.252 -0.088 3.157 -0.088 c
-3.069 -0.088 2.999 -0.066 2.951 -0.015 c
-2.911 0.044 2.892 0.11 2.892 0.191 c
-2.892 0.279 2.911 0.353 2.951 0.411 c
-2.999 0.47 3.069 0.5 3.157 0.5 c
-3.252 0.5 3.323 0.47 3.362 0.411 c
-3.41 0.353 3.437 0.283 3.437 0.206 c
-5.523 -2.807 m
-5.523 -2.701 5.483 -2.612 5.405 -2.543 c
-5.325 -2.466 5.174 -2.377 4.95 -2.278 c
-4.686 -2.172 4.499 -2.08 4.391 -1.999 c
-4.281 -1.922 4.204 -1.834 4.156 -1.735 c
-4.105 -1.639 4.083 -1.521 4.083 -1.382 c
-4.083 -1.139 4.171 -0.937 4.347 -0.779 c
-4.524 -0.613 4.748 -0.53 5.024 -0.53 c
-5.318 -0.53 5.553 -0.617 5.729 -0.794 c
-5.906 -0.962 5.993 -1.176 5.993 -1.44 c
-5.509 -1.44 l
-5.509 -1.305 5.457 -1.191 5.361 -1.103 c
-5.274 -1.007 5.16 -0.956 5.024 -0.956 c
-4.877 -0.956 4.763 -0.996 4.686 -1.073 c
-4.605 -1.143 4.568 -1.242 4.568 -1.367 c
-4.568 -1.467 4.597 -1.544 4.656 -1.602 c
-4.715 -1.661 4.854 -1.742 5.083 -1.837 c
-5.442 -1.984 5.689 -2.128 5.818 -2.263 c
-5.953 -2.392 6.024 -2.565 6.024 -2.778 c
-6.024 -3.036 5.928 -3.241 5.744 -3.395 c
-5.567 -3.553 5.332 -3.63 5.039 -3.63 c
-4.723 -3.63 4.469 -3.543 4.274 -3.366 c
-4.087 -3.183 3.994 -2.951 3.994 -2.675 c
-4.48 -2.675 l
-4.487 -2.844 4.538 -2.977 4.627 -3.072 c
-4.723 -3.16 4.862 -3.204 5.039 -3.204 c
-5.193 -3.204 5.31 -3.171 5.391 -3.102 c
-5.479 -3.036 5.523 -2.936 5.523 -2.807 c
-8.214 -3.572 -0.5 2.984 re
-8.243 0.206 m
-8.243 0.118 8.217 0.044 8.169 -0.015 c
-8.129 -0.066 8.059 -0.088 7.963 -0.088 c
-7.875 -0.088 7.805 -0.066 7.757 -0.015 c
-7.717 0.044 7.699 0.11 7.699 0.191 c
-7.699 0.279 7.717 0.353 7.757 0.411 c
-7.805 0.47 7.875 0.5 7.963 0.5 c
-8.059 0.5 8.129 0.47 8.169 0.411 c
-8.217 0.353 8.243 0.283 8.243 0.206 c
-10.326 -2.807 m
-10.326 -2.701 10.286 -2.612 10.209 -2.543 c
-10.128 -2.466 9.978 -2.377 9.753 -2.278 c
-9.488 -2.172 9.301 -2.08 9.195 -1.999 c
-9.084 -1.922 9.007 -1.834 8.96 -1.735 c
-8.908 -1.639 8.886 -1.521 8.886 -1.382 c
-8.886 -1.139 8.974 -0.937 9.151 -0.779 c
-9.327 -0.613 9.551 -0.53 9.827 -0.53 c
-10.12 -0.53 10.356 -0.617 10.533 -0.794 c
-10.708 -0.962 10.797 -1.176 10.797 -1.44 c
-10.311 -1.44 l
-10.311 -1.305 10.26 -1.191 10.165 -1.103 c
-10.076 -1.007 9.962 -0.956 9.827 -0.956 c
-9.679 -0.956 9.565 -0.996 9.488 -1.073 c
-9.407 -1.143 9.371 -1.242 9.371 -1.367 c
-9.371 -1.467 9.4 -1.544 9.459 -1.602 c
-9.517 -1.661 9.658 -1.742 9.885 -1.837 c
-10.246 -1.984 10.492 -2.128 10.62 -2.263 c
-10.756 -2.392 10.826 -2.565 10.826 -2.778 c
-10.826 -3.036 10.73 -3.241 10.547 -3.395 c
-10.371 -3.553 10.136 -3.63 9.841 -3.63 c
-9.525 -3.63 9.272 -3.543 9.077 -3.366 c
-8.889 -3.183 8.798 -2.951 8.798 -2.675 c
-9.282 -2.675 l
-9.29 -2.844 9.342 -2.977 9.43 -3.072 c
-9.525 -3.16 9.665 -3.204 9.841 -3.204 c
-9.995 -3.204 10.113 -3.171 10.194 -3.102 c
-10.282 -3.036 10.326 -2.936 10.326 -2.807 c
-14.016 -3.572 m
-13.986 -3.506 13.964 -3.395 13.957 -3.248 c
-13.781 -3.506 13.56 -3.63 13.295 -3.63 c
-13.02 -3.63 12.803 -3.557 12.649 -3.41 c
-12.502 -3.256 12.428 -3.04 12.428 -2.764 c
-12.428 -2.462 12.532 -2.219 12.737 -2.043 c
-12.943 -1.86 13.226 -1.764 13.59 -1.764 c
-13.943 -1.764 l
-13.943 -1.44 l
-13.943 -1.264 13.902 -1.143 13.825 -1.073 c
-13.744 -0.996 13.627 -0.956 13.472 -0.956 c
-13.325 -0.956 13.2 -1 13.104 -1.088 c
-13.016 -1.176 12.972 -1.286 12.972 -1.411 c
-12.487 -1.411 l
-12.487 -1.264 12.532 -1.124 12.619 -0.985 c
-12.708 -0.838 12.825 -0.727 12.972 -0.647 c
-13.126 -0.57 13.299 -0.53 13.486 -0.53 c
-13.799 -0.53 14.034 -0.61 14.192 -0.765 c
-14.346 -0.912 14.427 -1.132 14.427 -1.426 c
-14.427 -2.925 l
-14.435 -3.16 14.471 -3.362 14.531 -3.528 c
-14.531 -3.572 l
-h
-13.369 -3.19 m
-13.486 -3.19 13.596 -3.157 13.708 -3.087 c
-13.814 -3.021 13.891 -2.936 13.943 -2.837 c
-13.943 -2.132 l
-13.677 -2.132 l
-13.442 -2.132 13.255 -2.183 13.12 -2.278 c
-12.991 -2.377 12.928 -2.521 12.928 -2.705 c
-12.928 -2.874 12.958 -2.995 13.016 -3.072 c
-13.082 -3.153 13.2 -3.19 13.369 -3.19 c
-16.669 -0.588 m
-16.684 -0.867 l
-16.86 -0.643 17.099 -0.53 17.404 -0.53 c
-17.735 -0.53 17.966 -0.676 18.095 -0.97 c
-18.279 -0.676 18.539 -0.53 18.874 -0.53 c
-19.432 -0.53 19.715 -0.875 19.726 -1.558 c
-19.726 -3.572 l
-19.241 -3.572 l
-19.241 -1.602 l
-19.241 -1.389 19.201 -1.231 19.123 -1.132 c
-19.042 -1.025 18.911 -0.97 18.726 -0.97 c
-18.58 -0.97 18.462 -1.029 18.375 -1.147 c
-18.286 -1.257 18.231 -1.396 18.213 -1.573 c
-18.213 -3.572 l
-17.727 -3.572 l
-17.727 -1.588 l
-17.716 -1.176 17.544 -0.97 17.213 -0.97 c
-16.966 -0.97 16.794 -1.095 16.698 -1.338 c
-16.698 -3.572 l
-16.214 -3.572 l
-16.214 -0.588 l
-h
-21.233 -3.63 m
-20.858 -3.63 20.575 -3.524 20.38 -3.308 c
-20.182 -3.083 20.087 -2.756 20.087 -2.323 c
-20.087 -1.955 l
-20.087 -1.514 20.178 -1.168 20.366 -0.912 c
-20.561 -0.658 20.836 -0.53 21.189 -0.53 c
-21.531 -0.53 21.784 -0.643 21.953 -0.867 c
-22.13 -1.095 22.221 -1.44 22.232 -1.911 c
-22.232 -2.219 l
-20.571 -2.219 l
-20.571 -2.294 l
-20.571 -2.616 20.63 -2.851 20.748 -2.999 c
-20.866 -3.138 21.035 -3.204 21.263 -3.204 c
-21.409 -3.204 21.534 -3.183 21.645 -3.131 c
-21.751 -3.072 21.854 -2.984 21.953 -2.866 c
-22.203 -3.175 l
-21.997 -3.48 21.674 -3.63 21.233 -3.63 c
-21.189 -0.956 m
-20.983 -0.956 20.829 -1.025 20.733 -1.161 c
-20.634 -1.301 20.579 -1.514 20.571 -1.808 c
-21.747 -1.808 l
-21.747 -1.735 l
-21.725 -1.463 21.674 -1.264 21.586 -1.147 c
-21.498 -1.022 21.365 -0.956 21.189 -0.956 c
-23.879 -1.043 m
-23.809 -1.037 23.736 -1.029 23.659 -1.029 c
-23.401 -1.029 23.225 -1.168 23.129 -1.44 c
-23.129 -3.572 l
-22.645 -3.572 l
-22.645 -0.588 l
-23.115 -0.588 l
-23.129 -0.897 l
-23.254 -0.654 23.438 -0.53 23.673 -0.53 c
-23.75 -0.53 23.813 -0.544 23.864 -0.573 c
-h
-24.096 -1.941 m
-24.096 -1.481 24.176 -1.132 24.345 -0.897 c
-24.522 -0.654 24.772 -0.53 25.095 -0.53 c
-25.396 -0.53 25.628 -0.661 25.786 -0.926 c
-25.816 -0.588 l
-26.256 -0.588 l
-26.256 -3.601 l
-26.256 -3.973 26.157 -4.255 25.963 -4.453 c
-25.775 -4.648 25.514 -4.748 25.184 -4.748 c
-25.037 -4.748 24.868 -4.707 24.684 -4.63 c
-24.496 -4.561 24.36 -4.472 24.272 -4.366 c
-24.463 -4.027 l
-24.669 -4.233 24.893 -4.336 25.139 -4.336 c
-25.54 -4.336 25.745 -4.108 25.756 -3.66 c
-25.756 -3.278 l
-25.598 -3.513 25.378 -3.63 25.095 -3.63 c
-24.779 -3.63 24.536 -3.513 24.36 -3.278 c
-24.191 -3.042 24.103 -2.712 24.096 -2.278 c
-h
-24.581 -2.219 m
-24.581 -2.554 24.629 -2.801 24.727 -2.955 c
-24.823 -3.113 24.985 -3.19 25.213 -3.19 c
-25.456 -3.19 25.639 -3.069 25.756 -2.822 c
-25.756 -1.338 l
-25.639 -1.095 25.463 -0.97 25.228 -0.97 c
-24.999 -0.97 24.838 -1.051 24.742 -1.205 c
-24.644 -1.363 24.588 -1.602 24.581 -1.926 c
-h
-27.848 -3.63 m
-27.472 -3.63 27.19 -3.524 26.995 -3.308 c
-26.797 -3.083 26.701 -2.756 26.701 -2.323 c
-26.701 -1.955 l
-26.701 -1.514 26.793 -1.168 26.98 -0.912 c
-27.175 -0.658 27.451 -0.53 27.804 -0.53 c
-28.145 -0.53 28.399 -0.643 28.567 -0.867 c
-28.744 -1.095 28.836 -1.44 28.847 -1.911 c
-28.847 -2.219 l
-27.186 -2.219 l
-27.186 -2.294 l
-27.186 -2.616 27.245 -2.851 27.362 -2.999 c
-27.48 -3.138 27.649 -3.204 27.877 -3.204 c
-28.024 -3.204 28.149 -3.183 28.259 -3.131 c
-28.366 -3.072 28.469 -2.984 28.567 -2.866 c
-28.818 -3.175 l
-28.612 -3.48 28.289 -3.63 27.848 -3.63 c
-27.804 -0.956 m
-27.598 -0.956 27.443 -1.025 27.348 -1.161 c
-27.248 -1.301 27.193 -1.514 27.186 -1.808 c
-28.362 -1.808 l
-28.362 -1.735 l
-28.34 -1.463 28.289 -1.264 28.201 -1.147 c
-28.112 -1.022 27.979 -0.956 27.804 -0.956 c
-31.493 -3.204 m
-31.659 -3.204 31.79 -3.157 31.89 -3.057 c
-31.985 -2.961 32.041 -2.818 32.052 -2.631 c
-32.507 -2.631 l
-32.496 -2.918 32.393 -3.157 32.199 -3.352 c
-32.012 -3.539 31.776 -3.63 31.493 -3.63 c
-31.129 -3.63 30.85 -3.513 30.655 -3.278 c
-30.456 -3.042 30.361 -2.697 30.361 -2.234 c
-30.361 -1.911 l
-30.361 -1.463 30.453 -1.118 30.641 -0.882 c
-30.836 -0.647 31.118 -0.53 31.493 -0.53 c
-31.794 -0.53 32.037 -0.628 32.213 -0.823 c
-32.397 -1.022 32.496 -1.286 32.507 -1.617 c
-32.052 -1.617 l
-32.029 -1.393 31.971 -1.228 31.875 -1.118 c
-31.787 -1.01 31.659 -0.956 31.493 -0.956 c
-31.276 -0.956 31.114 -1.029 31.008 -1.176 c
-30.909 -1.315 30.853 -1.544 30.846 -1.866 c
-30.846 -2.249 l
-30.846 -2.602 30.894 -2.851 30.994 -2.999 c
-31.1 -3.138 31.266 -3.204 31.493 -3.204 c
-32.801 -1.941 m
-32.801 -1.511 32.904 -1.168 33.11 -0.912 c
-33.323 -0.658 33.602 -0.53 33.948 -0.53 c
-34.289 -0.53 34.565 -0.658 34.771 -0.912 c
-34.984 -1.158 35.098 -1.492 35.109 -1.911 c
-35.109 -2.219 l
-35.109 -2.653 34.998 -2.995 34.786 -3.248 c
-34.58 -3.506 34.3 -3.63 33.948 -3.63 c
-33.602 -3.63 33.33 -3.51 33.124 -3.263 c
-32.918 -3.021 32.808 -2.687 32.801 -2.263 c
-h
-33.286 -2.219 m
-33.286 -2.535 33.345 -2.778 33.463 -2.955 c
-33.587 -3.123 33.749 -3.204 33.948 -3.204 c
-34.377 -3.204 34.602 -2.896 34.624 -2.278 c
-34.624 -1.941 l
-34.624 -1.639 34.558 -1.396 34.433 -1.22 c
-34.315 -1.043 34.154 -0.956 33.948 -0.956 c
-33.749 -0.956 33.587 -1.043 33.463 -1.22 c
-33.345 -1.396 33.286 -1.639 33.286 -1.941 c
-h
-36.002 -0.588 m
-36.016 -0.867 l
-36.193 -0.643 36.432 -0.53 36.737 -0.53 c
-37.068 -0.53 37.299 -0.676 37.427 -0.97 c
-37.612 -0.676 37.872 -0.53 38.207 -0.53 c
-38.765 -0.53 39.048 -0.875 39.06 -1.558 c
-39.06 -3.572 l
-38.574 -3.572 l
-38.574 -1.602 l
-38.574 -1.389 38.534 -1.231 38.456 -1.132 c
-38.376 -1.025 38.244 -0.97 38.06 -0.97 c
-37.913 -0.97 37.795 -1.029 37.707 -1.147 c
-37.619 -1.257 37.564 -1.396 37.545 -1.573 c
-37.545 -3.572 l
-37.06 -3.572 l
-37.06 -1.588 l
-37.049 -1.176 36.876 -0.97 36.546 -0.97 c
-36.299 -0.97 36.127 -1.095 36.031 -1.338 c
-36.031 -3.572 l
-35.546 -3.572 l
-35.546 -0.588 l
-h
-39.964 -0.588 m
-39.978 -0.867 l
-40.155 -0.643 40.393 -0.53 40.698 -0.53 c
-41.029 -0.53 41.261 -0.676 41.389 -0.97 c
-41.573 -0.676 41.834 -0.53 42.168 -0.53 c
-42.727 -0.53 43.01 -0.875 43.021 -1.558 c
-43.021 -3.572 l
-42.536 -3.572 l
-42.536 -1.602 l
-42.536 -1.389 42.495 -1.231 42.418 -1.132 c
-42.337 -1.025 42.205 -0.97 42.021 -0.97 c
-41.874 -0.97 41.757 -1.029 41.668 -1.147 c
-41.58 -1.257 41.525 -1.396 41.506 -1.573 c
-41.506 -3.572 l
-41.022 -3.572 l
-41.022 -1.588 l
-41.011 -1.176 40.837 -0.97 40.507 -0.97 c
-40.261 -0.97 40.089 -1.095 39.993 -1.338 c
-39.993 -3.572 l
-39.507 -3.572 l
-39.507 -0.588 l
-h
-43.998 -3.572 -0.5 2.984 re
-44.028 0.206 m
-44.028 0.118 44.002 0.044 43.954 -0.015 c
-43.914 -0.066 43.844 -0.088 43.748 -0.088 c
-43.66 -0.088 43.59 -0.066 43.542 -0.015 c
-43.502 0.044 43.484 0.11 43.484 0.191 c
-43.484 0.279 43.502 0.353 43.542 0.411 c
-43.59 0.47 43.66 0.5 43.748 0.5 c
-43.844 0.5 43.914 0.47 43.954 0.411 c
-44.002 0.353 44.028 0.283 44.028 0.206 c
-45.306 0.133 m
-45.306 -0.588 l
-45.762 -0.588 l
-45.762 -0.985 l
-45.306 -0.985 l
-45.306 -2.837 l
-45.306 -2.955 45.325 -3.042 45.365 -3.102 c
-45.402 -3.16 45.472 -3.19 45.571 -3.19 c
-45.63 -3.19 45.693 -3.183 45.762 -3.16 c
-45.762 -3.572 l
-45.645 -3.609 45.531 -3.63 45.424 -3.63 c
-45.225 -3.63 45.075 -3.564 44.968 -3.425 c
-44.87 -3.289 44.822 -3.094 44.822 -2.837 c
-44.822 -0.985 l
-44.365 -0.985 l
-44.365 -0.588 l
-44.822 -0.588 l
-44.822 0.133 l
-h
-46.229 -4.366 m
-45.934 -4.175 l
-46.111 -3.929 46.203 -3.678 46.214 -3.425 c
-46.214 -2.969 l
-46.713 -2.969 l
-46.713 -3.366 l
-46.713 -3.553 46.663 -3.738 46.567 -3.925 c
-46.478 -4.108 46.364 -4.255 46.229 -4.366 c
-f
-Q
-693.76 102.817 -0.501 2.984 re
-693.789 106.595 m
-693.789 106.507 693.762 106.433 693.715 106.374 c
-693.675 106.323 693.604 106.301 693.509 106.301 c
-693.421 106.301 693.351 106.323 693.303 106.374 c
-693.263 106.433 693.245 106.499 693.245 106.58 c
-693.245 106.669 693.263 106.742 693.303 106.8 c
-693.351 106.86 693.421 106.889 693.509 106.889 c
-693.604 106.889 693.675 106.86 693.715 106.8 c
-693.762 106.742 693.789 106.672 693.789 106.595 c
-695.063 106.522 m
-695.063 105.801 l
-695.52 105.801 l
-695.52 105.404 l
-695.063 105.404 l
-695.063 103.552 l
-695.063 103.434 695.082 103.347 695.123 103.288 c
-695.159 103.229 695.229 103.199 695.328 103.199 c
-695.387 103.199 695.449 103.207 695.52 103.229 c
-695.52 102.817 l
-695.402 102.78 695.288 102.759 695.181 102.759 c
-694.982 102.759 694.832 102.825 694.726 102.964 c
-694.626 103.1 694.579 103.295 694.579 103.552 c
-694.579 105.404 l
-694.123 105.404 l
-694.123 105.801 l
-694.579 105.801 l
-694.579 106.522 l
-h
-697.677 105.493 m
-697.86 105.735 698.095 105.86 698.382 105.86 c
-698.911 105.86 699.179 105.507 699.19 104.801 c
-699.19 102.817 l
-698.705 102.817 l
-698.705 104.772 l
-698.705 105.007 698.664 105.173 698.587 105.272 c
-698.506 105.368 698.389 105.419 698.235 105.419 c
-698.117 105.419 698.007 105.379 697.912 105.302 c
-697.812 105.221 697.735 105.114 697.677 104.978 c
-697.677 102.817 l
-697.191 102.817 l
-697.191 107.051 l
-697.677 107.051 l
-h
-701.259 102.817 m
-701.23 102.883 701.207 102.994 701.201 103.141 c
-701.024 102.883 700.804 102.759 700.539 102.759 c
-700.264 102.759 700.046 102.832 699.892 102.979 c
-699.745 103.133 699.672 103.35 699.672 103.625 c
-699.672 103.927 699.775 104.17 699.981 104.346 c
-700.187 104.529 700.469 104.625 700.833 104.625 c
-701.186 104.625 l
-701.186 104.949 l
-701.186 105.125 701.145 105.246 701.068 105.316 c
-700.987 105.393 700.87 105.433 700.715 105.433 c
-700.569 105.433 700.443 105.389 700.347 105.302 c
-700.26 105.213 700.216 105.103 700.216 104.978 c
-699.73 104.978 l
-699.73 105.125 699.775 105.265 699.863 105.404 c
-699.951 105.551 700.069 105.662 700.216 105.742 c
-700.37 105.819 700.542 105.86 700.73 105.86 c
-701.043 105.86 701.278 105.78 701.436 105.624 c
-701.59 105.478 701.671 105.257 701.671 104.963 c
-701.671 103.464 l
-701.678 103.229 701.715 103.027 701.774 102.861 c
-701.774 102.817 l
-h
-700.613 103.199 m
-700.73 103.199 700.84 103.232 700.951 103.303 c
-701.057 103.368 701.134 103.453 701.186 103.552 c
-701.186 104.257 l
-700.921 104.257 l
-700.686 104.257 700.499 104.207 700.363 104.111 c
-700.234 104.012 700.172 103.868 700.172 103.685 c
-700.172 103.515 700.201 103.394 700.26 103.317 c
-700.326 103.236 700.443 103.199 700.613 103.199 c
-703.692 103.582 m
-703.692 103.688 703.651 103.777 703.574 103.846 c
-703.493 103.923 703.343 104.012 703.119 104.111 c
-702.854 104.217 702.666 104.309 702.56 104.39 c
-702.45 104.467 702.373 104.556 702.325 104.654 c
-702.273 104.75 702.252 104.868 702.252 105.007 c
-702.252 105.25 702.34 105.452 702.516 105.61 c
-702.693 105.776 702.917 105.86 703.192 105.86 c
-703.486 105.86 703.721 105.772 703.898 105.595 c
-704.074 105.427 704.162 105.213 704.162 104.949 c
-703.678 104.949 l
-703.678 105.084 703.626 105.198 703.53 105.287 c
-703.443 105.383 703.328 105.433 703.192 105.433 c
-703.046 105.433 702.932 105.393 702.854 105.316 c
-702.774 105.246 702.737 105.147 702.737 105.022 c
-702.737 104.923 702.766 104.845 702.824 104.787 c
-702.884 104.728 703.023 104.647 703.251 104.552 c
-703.611 104.405 703.857 104.261 703.986 104.126 c
-704.122 103.997 704.191 103.824 704.191 103.611 c
-704.191 103.353 704.096 103.148 703.913 102.994 c
-703.736 102.836 703.501 102.759 703.207 102.759 c
-702.891 102.759 702.637 102.846 702.443 103.023 c
-702.255 103.207 702.163 103.438 702.163 103.714 c
-702.648 103.714 l
-702.656 103.545 702.707 103.413 702.795 103.317 c
-702.891 103.229 703.03 103.185 703.207 103.185 c
-703.362 103.185 703.479 103.218 703.559 103.288 c
-703.648 103.353 703.692 103.453 703.692 103.582 c
-706.485 106.522 m
-706.485 105.801 l
-706.94 105.801 l
-706.94 105.404 l
-706.485 105.404 l
-706.485 103.552 l
-706.485 103.434 706.503 103.347 706.543 103.288 c
-706.58 103.229 706.65 103.199 706.749 103.199 c
-706.808 103.199 706.871 103.207 706.94 103.229 c
-706.94 102.817 l
-706.823 102.78 706.709 102.759 706.602 102.759 c
-706.404 102.759 706.253 102.825 706.146 102.964 c
-706.047 103.1 705.999 103.295 705.999 103.552 c
-705.999 105.404 l
-705.544 105.404 l
-705.544 105.801 l
-705.999 105.801 l
-705.999 106.522 l
-h
-709.627 103.669 m
-710.082 105.801 l
-710.568 105.801 l
-709.832 102.817 l
-709.45 102.817 l
-708.862 104.949 l
-708.289 102.817 l
-707.907 102.817 l
-707.172 105.801 l
-707.657 105.801 l
-708.127 103.729 l
-708.671 105.801 l
-709.053 105.801 l
-h
-710.733 104.448 m
-710.733 104.878 710.836 105.221 711.042 105.478 c
-711.254 105.732 711.534 105.86 711.879 105.86 c
-712.221 105.86 712.496 105.732 712.702 105.478 c
-712.916 105.231 713.03 104.897 713.041 104.479 c
-713.041 104.17 l
-713.041 103.736 712.93 103.394 712.717 103.141 c
-712.511 102.883 712.232 102.759 711.879 102.759 c
-711.534 102.759 711.262 102.879 711.056 103.126 c
-710.85 103.368 710.74 103.702 710.733 104.126 c
-h
-711.218 104.17 m
-711.218 103.854 711.277 103.611 711.395 103.434 c
-711.519 103.266 711.681 103.185 711.879 103.185 c
-712.309 103.185 712.534 103.494 712.555 104.111 c
-712.555 104.448 l
-712.555 104.75 712.49 104.993 712.365 105.169 c
-712.247 105.346 712.085 105.433 711.879 105.433 c
-711.681 105.433 711.519 105.346 711.395 105.169 c
-711.277 104.993 711.218 104.75 711.218 104.448 c
-h
-716.829 104.17 m
-716.829 103.7 716.745 103.347 716.579 103.112 c
-716.411 102.876 716.172 102.759 715.859 102.759 c
-715.554 102.759 715.322 102.869 715.168 103.097 c
-715.168 101.67 l
-714.683 101.67 l
-714.683 105.801 l
-715.124 105.801 l
-715.154 105.463 l
-715.308 105.728 715.539 105.86 715.844 105.86 c
-716.175 105.86 716.421 105.742 716.579 105.507 c
-716.745 105.279 716.829 104.941 716.829 104.493 c
-h
-716.344 104.448 m
-716.344 104.78 716.289 105.026 716.182 105.184 c
-716.083 105.338 715.921 105.419 715.698 105.419 c
-715.462 105.419 715.285 105.302 715.168 105.066 c
-715.168 103.523 l
-715.285 103.295 715.466 103.185 715.712 103.185 c
-715.925 103.185 716.083 103.262 716.182 103.42 c
-716.289 103.574 716.344 103.817 716.344 104.14 c
-h
-718.813 102.817 m
-718.784 102.883 718.762 102.994 718.755 103.141 c
-718.578 102.883 718.358 102.759 718.094 102.759 c
-717.818 102.759 717.601 102.832 717.446 102.979 c
-717.3 103.133 717.226 103.35 717.226 103.625 c
-717.226 103.927 717.329 104.17 717.535 104.346 c
-717.741 104.529 718.024 104.625 718.387 104.625 c
-718.74 104.625 l
-718.74 104.949 l
-718.74 105.125 718.699 105.246 718.622 105.316 c
-718.541 105.393 718.424 105.433 718.269 105.433 c
-718.123 105.433 717.998 105.389 717.903 105.302 c
-717.814 105.213 717.77 105.103 717.77 104.978 c
-717.285 104.978 l
-717.285 105.125 717.329 105.265 717.417 105.404 c
-717.506 105.551 717.623 105.662 717.77 105.742 c
-717.924 105.819 718.097 105.86 718.285 105.86 c
-718.597 105.86 718.832 105.78 718.99 105.624 c
-719.144 105.478 719.225 105.257 719.225 104.963 c
-719.225 103.464 l
-719.233 103.229 719.27 103.027 719.328 102.861 c
-719.328 102.817 l
-h
-718.167 103.199 m
-718.285 103.199 718.395 103.232 718.505 103.303 c
-718.611 103.368 718.689 103.453 718.74 103.552 c
-718.74 104.257 l
-718.476 104.257 l
-718.24 104.257 718.053 104.207 717.917 104.111 c
-717.789 104.012 717.726 103.868 717.726 103.685 c
-717.726 103.515 717.755 103.394 717.814 103.317 c
-717.88 103.236 717.998 103.199 718.167 103.199 c
-721.041 105.346 m
-720.97 105.352 720.897 105.36 720.82 105.36 c
-720.563 105.36 720.386 105.221 720.291 104.949 c
-720.291 102.817 l
-719.806 102.817 l
-719.806 105.801 l
-720.276 105.801 l
-720.291 105.493 l
-720.415 105.735 720.6 105.86 720.835 105.86 c
-720.912 105.86 720.974 105.845 721.026 105.816 c
-h
-722.418 102.759 m
-722.044 102.759 721.761 102.865 721.566 103.082 c
-721.367 103.306 721.272 103.633 721.272 104.066 c
-721.272 104.434 l
-721.272 104.876 721.364 105.221 721.552 105.478 c
-721.747 105.732 722.022 105.86 722.374 105.86 c
-722.716 105.86 722.969 105.746 723.139 105.522 c
-723.315 105.294 723.407 104.949 723.418 104.479 c
-723.418 104.17 l
-721.757 104.17 l
-721.757 104.096 l
-721.757 103.773 721.816 103.538 721.934 103.39 c
-722.051 103.251 722.22 103.185 722.448 103.185 c
-722.595 103.185 722.72 103.207 722.83 103.258 c
-722.936 103.317 723.04 103.405 723.139 103.523 c
-723.389 103.214 l
-723.183 102.909 722.859 102.759 722.418 102.759 c
-722.374 105.433 m
-722.169 105.433 722.015 105.364 721.919 105.228 c
-721.82 105.088 721.764 104.876 721.757 104.581 c
-722.933 104.581 l
-722.933 104.654 l
-722.911 104.926 722.859 105.125 722.771 105.242 c
-722.683 105.368 722.551 105.433 722.374 105.433 c
-724.286 105.801 m
-724.3 105.478 l
-724.484 105.732 724.726 105.86 725.02 105.86 c
-725.55 105.86 725.818 105.507 725.828 104.801 c
-725.828 102.817 l
-725.344 102.817 l
-725.344 104.772 l
-725.344 105.007 725.303 105.173 725.226 105.272 c
-725.145 105.368 725.028 105.419 724.873 105.419 c
-724.756 105.419 724.646 105.379 724.55 105.302 c
-724.451 105.221 724.374 105.114 724.315 104.978 c
-724.315 102.817 l
-723.829 102.817 l
-723.829 105.801 l
-h
-727.012 106.522 m
-727.012 105.801 l
-727.468 105.801 l
-727.468 105.404 l
-727.012 105.404 l
-727.012 103.552 l
-727.012 103.434 727.031 103.347 727.071 103.288 c
-727.108 103.229 727.177 103.199 727.276 103.199 c
-727.335 103.199 727.397 103.207 727.468 103.229 c
-727.468 102.817 l
-727.35 102.78 727.236 102.759 727.129 102.759 c
-726.931 102.759 726.78 102.825 726.674 102.964 c
-726.574 103.1 726.527 103.295 726.527 103.552 c
-726.527 105.404 l
-726.071 105.404 l
-726.071 105.801 l
-726.527 105.801 l
-726.527 106.522 l
-h
-729.375 103.582 m
-729.375 103.688 729.334 103.777 729.257 103.846 c
-729.176 103.923 729.026 104.012 728.802 104.111 c
-728.537 104.217 728.35 104.309 728.243 104.39 c
-728.133 104.467 728.056 104.556 728.008 104.654 c
-727.956 104.75 727.935 104.868 727.935 105.007 c
-727.935 105.25 728.022 105.452 728.199 105.61 c
-728.375 105.776 728.6 105.86 728.875 105.86 c
-729.169 105.86 729.404 105.772 729.581 105.595 c
-729.757 105.427 729.845 105.213 729.845 104.949 c
-729.36 104.949 l
-729.36 105.084 729.309 105.198 729.213 105.287 c
-729.125 105.383 729.011 105.433 728.875 105.433 c
-728.728 105.433 728.614 105.393 728.537 105.316 c
-728.456 105.246 728.419 105.147 728.419 105.022 c
-728.419 104.923 728.449 104.845 728.508 104.787 c
-728.567 104.728 728.706 104.647 728.934 104.552 c
-729.294 104.405 729.541 104.261 729.668 104.126 c
-729.805 103.997 729.874 103.824 729.874 103.611 c
-729.874 103.353 729.779 103.148 729.595 102.994 c
-729.419 102.836 729.184 102.759 728.889 102.759 c
-728.573 102.759 728.32 102.846 728.126 103.023 c
-727.938 103.207 727.846 103.438 727.846 103.714 c
-728.332 103.714 l
-728.338 103.545 728.39 103.413 728.478 103.317 c
-728.573 103.229 728.714 103.185 728.889 103.185 c
-729.044 103.185 729.161 103.218 729.242 103.288 c
-729.331 103.353 729.375 103.453 729.375 103.582 c
-730.878 103.949 m
-730.437 103.949 l
-730.408 106.83 l
-730.922 106.83 l
-h
-730.672 103.361 m
-730.767 103.361 730.838 103.332 730.878 103.272 c
-730.925 103.222 730.952 103.155 730.952 103.067 c
-730.952 102.987 730.925 102.92 730.878 102.861 c
-730.838 102.813 730.767 102.788 730.672 102.788 c
-730.584 102.788 730.514 102.813 730.466 102.861 c
-730.414 102.92 730.393 102.987 730.393 103.067 c
-730.393 103.155 730.414 103.222 730.466 103.272 c
-730.514 103.332 730.584 103.361 730.672 103.361 c
-f
-0.793 0.801 0.129 0.016 K
-0.567 w 1 j 1 J
-q 1 0 0 1 734.152 110.909 cm
-0 0 m
-5.56 4.843 l
-S
-Q
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 738.1018 114.3481 cm
-0 0 m
--0.103 -1.502 l
-2.01 1.753 l
--1.507 0.107 l
-h
-f*
-Q
-0.906 0.785 0.617 0.969 K
-0.283 w 0 j 0 J
-q 1 0 0 1 738.1018 114.3482 cm
-0 0 m
--0.103 -1.502 l
-2.01 1.753 l
--1.506 0.107 l
-0 0 l
-h
-S
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 767.8644 128.2905 cm
-0 0 m
--0.008 16.393 l
-6.46 16.393 l
-6.468 0 l
-3.227 -3.564 l
-h
-f
-Q
-0 0 0 0 k
-q 1 0 0 1 772.5238 142.4204 cm
-0 0 m
--0.279 -0.03 l
--0.055 -0.206 0.059 -0.434 0.059 -0.721 c
-0.059 -1.014 -0.081 -1.224 -0.353 -1.353 c
--0.081 -1.518 0.059 -1.756 0.059 -2.072 c
-0.059 -2.602 -0.305 -2.87 -1.029 -2.881 c
--2.984 -2.881 l
--2.984 -2.103 l
--1.073 -2.103 l
--0.908 -2.103 -0.79 -2.076 -0.721 -2.029 c
--0.643 -1.977 -0.603 -1.9 -0.603 -1.794 c
--0.603 -1.646 -0.69 -1.532 -0.867 -1.455 c
--0.956 -1.47 l
--2.984 -1.47 l
--2.984 -0.691 l
--1.087 -0.691 l
--0.912 -0.691 -0.79 -0.665 -0.721 -0.618 c
--0.643 -0.566 -0.603 -0.485 -0.603 -0.368 c
--0.603 -0.239 -0.676 -0.136 -0.823 -0.059 c
--2.984 -0.059 l
--2.984 0.72 l
-0 0.72 l
-h
--2.984 -4.601 m
--2.936 -4.572 -2.859 -4.546 -2.749 -4.528 c
--2.947 -4.388 -3.042 -4.204 -3.042 -3.969 c
--3.042 -3.712 -2.961 -3.502 -2.793 -3.337 c
--2.627 -3.179 -2.41 -3.102 -2.146 -3.102 c
--1.833 -3.102 -1.594 -3.198 -1.426 -3.396 c
--1.249 -3.591 -1.161 -3.873 -1.161 -4.248 c
--1.161 -4.499 l
--0.926 -4.499 l
--0.79 -4.499 -0.698 -4.472 -0.646 -4.424 c
--0.588 -4.374 -0.559 -4.307 -0.559 -4.219 c
--0.559 -4.021 -0.673 -3.925 -0.896 -3.925 c
--0.896 -3.146 l
--0.625 -3.146 -0.397 -3.248 -0.22 -3.454 c
--0.037 -3.66 0.059 -3.925 0.059 -4.248 c
-0.059 -4.572 -0.029 -4.821 -0.206 -4.998 c
--0.374 -5.182 -0.613 -5.278 -0.926 -5.278 c
--2.337 -5.278 l
--2.595 -5.278 -2.793 -5.31 -2.94 -5.38 c
--2.984 -5.38 l
-h
--2.425 -4.131 m
--2.425 -4.219 -2.41 -4.293 -2.381 -4.351 c
--2.344 -4.418 -2.3 -4.469 -2.249 -4.499 c
--1.631 -4.499 l
--1.631 -4.307 l
--1.631 -4.167 -1.675 -4.061 -1.764 -3.984 c
--1.845 -3.913 -1.955 -3.881 -2.102 -3.881 c
--2.319 -3.881 -2.425 -3.961 -2.425 -4.131 c
--2.19 -6.978 m
--2.124 -6.978 -2.057 -6.942 -1.999 -6.876 c
--1.94 -6.817 -1.866 -6.677 -1.779 -6.464 c
--1.643 -6.141 -1.506 -5.92 -1.367 -5.802 c
--1.231 -5.685 -1.058 -5.627 -0.852 -5.627 c
--0.588 -5.627 -0.374 -5.718 -0.206 -5.906 c
--0.029 -6.089 0.059 -6.34 0.059 -6.655 c
-0.059 -6.978 -0.029 -7.236 -0.206 -7.435 c
--0.374 -7.629 -0.599 -7.728 -0.881 -7.728 c
--0.881 -6.949 l
--0.64 -6.949 -0.515 -6.847 -0.515 -6.641 c
--0.515 -6.56 -0.544 -6.494 -0.603 -6.435 c
--0.654 -6.383 -0.721 -6.361 -0.808 -6.361 c
--0.878 -6.361 -0.937 -6.39 -0.985 -6.45 c
--1.036 -6.508 -1.11 -6.644 -1.205 -6.861 c
--1.323 -7.184 -1.455 -7.408 -1.602 -7.537 c
--1.741 -7.674 -1.926 -7.743 -2.161 -7.743 c
--2.425 -7.743 -2.643 -7.64 -2.807 -7.435 c
--2.965 -7.236 -3.042 -6.978 -3.042 -6.655 c
--3.042 -6.427 -2.998 -6.232 -2.911 -6.067 c
--2.822 -5.898 -2.705 -5.766 -2.558 -5.671 c
--2.404 -5.582 -2.234 -5.538 -2.057 -5.538 c
--2.057 -6.273 l
--2.198 -6.28 -2.3 -6.317 -2.367 -6.376 c
--2.436 -6.435 -2.469 -6.531 -2.469 -6.67 c
--2.469 -6.876 -2.377 -6.978 -2.19 -6.978 c
-0.735 -8.967 m
-0 -8.967 l
-0 -9.363 l
--0.588 -9.363 l
--0.588 -8.967 l
--2.072 -8.967 l
--2.19 -8.967 -2.275 -8.981 -2.323 -9.01 c
--2.363 -9.047 -2.381 -9.114 -2.381 -9.202 c
--2.381 -9.279 -2.373 -9.342 -2.352 -9.393 c
--2.969 -9.378 l
--3.017 -9.249 -3.042 -9.106 -3.042 -8.952 c
--3.042 -8.453 -2.756 -8.195 -2.175 -8.187 c
--0.588 -8.187 l
--0.588 -7.85 l
-0 -7.85 l
-0 -8.187 l
-0.735 -8.187 l
-h
--3.042 -10.874 m
--3.042 -10.469 -2.925 -10.157 -2.69 -9.933 c
--2.447 -9.716 -2.102 -9.61 -1.661 -9.61 c
--1.411 -9.61 l
--0.941 -9.61 -0.58 -9.712 -0.324 -9.918 c
--0.07 -10.124 0.059 -10.418 0.059 -10.801 c
-0.059 -11.171 -0.066 -11.451 -0.309 -11.638 c
--0.544 -11.833 -0.896 -11.932 -1.367 -11.932 c
--1.749 -11.932 l
--1.749 -10.389 l
--1.976 -10.396 -2.142 -10.44 -2.249 -10.521 c
--2.348 -10.61 -2.396 -10.745 -2.396 -10.932 c
--2.396 -11.186 -2.304 -11.403 -2.117 -11.58 c
--2.602 -11.888 l
--2.73 -11.789 -2.837 -11.645 -2.925 -11.462 c
--3.002 -11.285 -3.042 -11.087 -3.042 -10.874 c
--1.205 -10.389 m
--1.205 -11.168 l
--1.132 -11.168 l
--0.956 -11.168 -0.823 -11.138 -0.735 -11.08 c
--0.64 -11.021 -0.588 -10.922 -0.588 -10.786 c
--0.588 -10.657 -0.64 -10.558 -0.735 -10.492 c
--0.834 -10.433 -0.992 -10.396 -1.205 -10.389 c
--0.75 -13.66 m
--0.735 -13.409 l
--0.735 -13.193 -0.831 -13.045 -1.014 -12.968 c
--2.984 -12.968 l
--2.984 -12.189 l
-0 -12.189 l
-0 -12.925 l
--0.324 -12.954 l
--0.07 -13.072 0.059 -13.237 0.059 -13.454 c
-0.059 -13.542 0.044 -13.615 0.015 -13.674 c
-h
-f
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 774.5925 108.726 cm
-0 0 m
-0.008 -14.188 l
--6.464 -14.188 l
--6.471 0 l
--3.23 3.564 l
-h
-f
-Q
-0 0 0 0 k
-q 1 0 0 1 769.4918 104.7137 cm
-0 0 m
-0 0.808 l
-1.721 0.808 l
-1.721 1.999 l
-0 1.999 l
-0 2.807 l
-4.013 2.807 l
-4.013 1.999 l
-2.396 1.999 l
-2.396 0.808 l
-4.013 0.808 l
-4.013 0 l
-h
-1.735 -2.496 m
-1.735 -1.231 l
-0.676 -1.231 l
-0.676 -2.731 l
-0 -2.731 l
-0 -0.423 l
-4.013 -0.423 l
-4.013 -2.716 l
-3.337 -2.716 l
-3.337 -1.231 l
-2.396 -1.231 l
-2.396 -2.496 l
-h
-0.823 -4.917 m
-0.823 -3.815 l
-0 -3.595 l
-0 -2.741 l
-4.013 -3.991 l
-4.013 -4.74 l
-0 -6.005 l
-0 -5.137 l
-h
-1.5 -3.991 m
-1.5 -4.74 l
-2.926 -4.373 l
-h
-0 -6.155 m
-4.013 -6.155 l
-4.013 -7.214 l
-4.013 -7.684 3.859 -8.056 3.558 -8.331 c
-3.263 -8.614 2.856 -8.757 2.338 -8.757 c
-1.69 -8.757 l
-1.162 -8.757 0.743 -8.617 0.441 -8.345 c
-0.148 -8.07 0 -7.688 0 -7.199 c
-h
-3.337 -6.964 m
-0.676 -6.964 l
-0.676 -7.214 l
-0.676 -7.479 0.743 -7.662 0.882 -7.772 c
-1.029 -7.89 1.272 -7.949 1.617 -7.949 c
-2.323 -7.949 l
-2.694 -7.949 2.955 -7.894 3.102 -7.787 c
-3.249 -7.688 3.326 -7.512 3.337 -7.258 c
-h
-f
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 733.9356 155.8438 cm
-0 0 m
--1.058 0 l
--1.058 -3.572 l
--1.559 -3.572 l
--1.559 0 l
--2.617 0 l
--2.617 0.441 l
-0 0.441 l
-h
-0.823 -0.897 m
-1.007 -0.654 1.242 -0.529 1.529 -0.529 c
-2.057 -0.529 2.326 -0.881 2.337 -1.587 c
-2.337 -3.572 l
-1.851 -3.572 l
-1.851 -1.616 l
-1.851 -1.381 1.811 -1.216 1.734 -1.117 c
-1.653 -1.022 1.535 -0.97 1.381 -0.97 c
-1.263 -0.97 1.153 -1.01 1.058 -1.087 c
-0.959 -1.168 0.882 -1.275 0.823 -1.411 c
-0.823 -3.572 l
-0.338 -3.572 l
-0.338 0.661 l
-0.823 0.661 l
-h
-3.41 -3.572 -0.5 2.984 re
-3.439 0.206 m
-3.439 0.118 3.413 0.044 3.366 -0.014 c
-3.326 -0.066 3.255 -0.087 3.16 -0.087 c
-3.072 -0.087 3.002 -0.066 2.954 -0.014 c
-2.913 0.044 2.896 0.11 2.896 0.191 c
-2.896 0.279 2.913 0.353 2.954 0.412 c
-3.002 0.47 3.072 0.5 3.16 0.5 c
-3.255 0.5 3.326 0.47 3.366 0.412 c
-3.413 0.353 3.439 0.283 3.439 0.206 c
-5.523 -2.807 m
-5.523 -2.701 5.483 -2.612 5.406 -2.543 c
-5.325 -2.466 5.174 -2.377 4.949 -2.278 c
-4.685 -2.171 4.498 -2.08 4.391 -1.999 c
-4.28 -1.922 4.203 -1.833 4.156 -1.734 c
-4.104 -1.639 4.082 -1.521 4.082 -1.381 c
-4.082 -1.139 4.17 -0.937 4.347 -0.779 c
-4.523 -0.613 4.747 -0.529 5.023 -0.529 c
-5.317 -0.529 5.552 -0.617 5.728 -0.793 c
-5.905 -0.962 5.994 -1.176 5.994 -1.44 c
-5.508 -1.44 l
-5.508 -1.304 5.456 -1.19 5.361 -1.103 c
-5.273 -1.007 5.159 -0.955 5.023 -0.955 c
-4.876 -0.955 4.762 -0.995 4.685 -1.072 c
-4.604 -1.143 4.567 -1.242 4.567 -1.367 c
-4.567 -1.466 4.596 -1.543 4.656 -1.602 c
-4.714 -1.66 4.854 -1.741 5.082 -1.837 c
-5.442 -1.984 5.688 -2.127 5.817 -2.263 c
-5.953 -2.392 6.023 -2.564 6.023 -2.778 c
-6.023 -3.035 5.927 -3.241 5.743 -3.395 c
-5.567 -3.553 5.332 -3.63 5.038 -3.63 c
-4.722 -3.63 4.469 -3.542 4.274 -3.366 c
-4.086 -3.183 3.994 -2.95 3.994 -2.675 c
-4.479 -2.675 l
-4.486 -2.844 4.538 -2.977 4.627 -3.072 c
-4.722 -3.16 4.862 -3.204 5.038 -3.204 c
-5.192 -3.204 5.31 -3.171 5.39 -3.102 c
-5.479 -3.035 5.523 -2.936 5.523 -2.807 c
-8.213 -3.572 -0.499 2.984 re
-8.242 0.206 m
-8.242 0.118 8.216 0.044 8.168 -0.014 c
-8.128 -0.066 8.058 -0.087 7.962 -0.087 c
-7.875 -0.087 7.804 -0.066 7.757 -0.014 c
-7.717 0.044 7.698 0.11 7.698 0.191 c
-7.698 0.279 7.717 0.353 7.757 0.412 c
-7.804 0.47 7.875 0.5 7.962 0.5 c
-8.058 0.5 8.128 0.47 8.168 0.412 c
-8.216 0.353 8.242 0.283 8.242 0.206 c
-10.329 -2.807 m
-10.329 -2.701 10.289 -2.612 10.212 -2.543 c
-10.131 -2.466 9.98 -2.377 9.756 -2.278 c
-9.491 -2.171 9.304 -2.08 9.198 -1.999 c
-9.088 -1.922 9.01 -1.833 8.962 -1.734 c
-8.911 -1.639 8.889 -1.521 8.889 -1.381 c
-8.889 -1.139 8.978 -0.937 9.153 -0.779 c
-9.33 -0.613 9.554 -0.529 9.83 -0.529 c
-10.123 -0.529 10.359 -0.617 10.535 -0.793 c
-10.711 -0.962 10.8 -1.176 10.8 -1.44 c
-10.314 -1.44 l
-10.314 -1.304 10.264 -1.19 10.168 -1.103 c
-10.079 -1.007 9.965 -0.955 9.83 -0.955 c
-9.683 -0.955 9.568 -0.995 9.491 -1.072 c
-9.41 -1.143 9.374 -1.242 9.374 -1.367 c
-9.374 -1.466 9.404 -1.543 9.462 -1.602 c
-9.521 -1.66 9.66 -1.741 9.888 -1.837 c
-10.248 -1.984 10.495 -2.127 10.624 -2.263 c
-10.759 -2.392 10.829 -2.564 10.829 -2.778 c
-10.829 -3.035 10.734 -3.241 10.549 -3.395 c
-10.374 -3.553 10.138 -3.63 9.844 -3.63 c
-9.528 -3.63 9.275 -3.542 9.08 -3.366 c
-8.893 -3.183 8.801 -2.95 8.801 -2.675 c
-9.286 -2.675 l
-9.293 -2.844 9.344 -2.977 9.433 -3.072 c
-9.528 -3.16 9.668 -3.204 9.844 -3.204 c
-9.998 -3.204 10.116 -3.171 10.197 -3.102 c
-10.285 -3.035 10.329 -2.936 10.329 -2.807 c
-14.019 -3.572 m
-13.99 -3.505 13.967 -3.395 13.96 -3.248 c
-13.784 -3.505 13.564 -3.63 13.298 -3.63 c
-13.023 -3.63 12.806 -3.557 12.652 -3.41 c
-12.505 -3.256 12.431 -3.039 12.431 -2.763 c
-12.431 -2.462 12.534 -2.219 12.74 -2.043 c
-12.945 -1.859 13.229 -1.764 13.593 -1.764 c
-13.946 -1.764 l
-13.946 -1.44 l
-13.946 -1.263 13.905 -1.143 13.828 -1.072 c
-13.747 -0.995 13.63 -0.955 13.475 -0.955 c
-13.328 -0.955 13.203 -0.999 13.107 -1.087 c
-13.019 -1.176 12.976 -1.286 12.976 -1.411 c
-12.49 -1.411 l
-12.49 -1.263 12.534 -1.124 12.623 -0.985 c
-12.71 -0.837 12.828 -0.727 12.976 -0.646 c
-13.13 -0.569 13.302 -0.529 13.489 -0.529 c
-13.802 -0.529 14.037 -0.61 14.195 -0.764 c
-14.349 -0.911 14.43 -1.132 14.43 -1.425 c
-14.43 -2.925 l
-14.438 -3.16 14.474 -3.362 14.534 -3.528 c
-14.534 -3.572 l
-h
-13.372 -3.189 m
-13.489 -3.189 13.6 -3.156 13.71 -3.087 c
-13.817 -3.021 13.894 -2.936 13.946 -2.836 c
-13.946 -2.131 l
-13.681 -2.131 l
-13.446 -2.131 13.258 -2.183 13.122 -2.278 c
-12.994 -2.377 12.931 -2.52 12.931 -2.705 c
-12.931 -2.873 12.961 -2.994 13.019 -3.072 c
-13.086 -3.152 13.203 -3.189 13.372 -3.189 c
-15.54 -3.572 -0.5 4.233 re
-17.653 -2.807 m
-17.653 -2.701 17.613 -2.612 17.535 -2.543 c
-17.455 -2.466 17.304 -2.377 17.08 -2.278 c
-16.816 -2.171 16.628 -2.08 16.521 -1.999 c
-16.411 -1.922 16.334 -1.833 16.286 -1.734 c
-16.234 -1.639 16.213 -1.521 16.213 -1.381 c
-16.213 -1.139 16.301 -0.937 16.477 -0.779 c
-16.654 -0.613 16.878 -0.529 17.153 -0.529 c
-17.447 -0.529 17.682 -0.617 17.859 -0.793 c
-18.035 -0.962 18.123 -1.176 18.123 -1.44 c
-17.639 -1.44 l
-17.639 -1.304 17.587 -1.19 17.491 -1.103 c
-17.404 -1.007 17.289 -0.955 17.153 -0.955 c
-17.007 -0.955 16.893 -0.995 16.816 -1.072 c
-16.735 -1.143 16.698 -1.242 16.698 -1.367 c
-16.698 -1.466 16.727 -1.543 16.786 -1.602 c
-16.845 -1.66 16.984 -1.741 17.212 -1.837 c
-17.572 -1.984 17.819 -2.127 17.947 -2.263 c
-18.083 -2.392 18.153 -2.564 18.153 -2.778 c
-18.153 -3.035 18.057 -3.241 17.874 -3.395 c
-17.697 -3.553 17.462 -3.63 17.169 -3.63 c
-16.852 -3.63 16.598 -3.542 16.404 -3.366 c
-16.216 -3.183 16.124 -2.95 16.124 -2.675 c
-16.61 -2.675 l
-16.617 -2.844 16.668 -2.977 16.756 -3.072 c
-16.852 -3.16 16.992 -3.204 17.169 -3.204 c
-17.323 -3.204 17.44 -3.171 17.521 -3.102 c
-17.609 -3.035 17.653 -2.936 17.653 -2.807 c
-18.509 -1.94 m
-18.509 -1.51 18.613 -1.168 18.818 -0.911 c
-19.031 -0.658 19.311 -0.529 19.656 -0.529 c
-19.997 -0.529 20.273 -0.658 20.479 -0.911 c
-20.693 -1.157 20.806 -1.492 20.817 -1.911 c
-20.817 -2.219 l
-20.817 -2.653 20.707 -2.994 20.494 -3.248 c
-20.288 -3.505 20.009 -3.63 19.656 -3.63 c
-19.311 -3.63 19.039 -3.509 18.833 -3.262 c
-18.627 -3.021 18.517 -2.686 18.509 -2.263 c
-h
-18.995 -2.219 m
-18.995 -2.535 19.053 -2.778 19.17 -2.954 c
-19.296 -3.123 19.457 -3.204 19.656 -3.204 c
-20.086 -3.204 20.31 -2.896 20.332 -2.278 c
-20.332 -1.94 l
-20.332 -1.639 20.266 -1.396 20.141 -1.22 c
-20.024 -1.043 19.862 -0.955 19.656 -0.955 c
-19.457 -0.955 19.296 -1.043 19.17 -1.22 c
-19.053 -1.396 18.995 -1.639 18.995 -1.94 c
-h
-f
-Q
-q 1 0 0 1 727.6223 145.6867 cm
-0 0 m
--0.03 0.067 -0.052 0.177 -0.059 0.324 c
--0.235 0.067 -0.456 -0.058 -0.721 -0.058 c
--0.996 -0.058 -1.213 0.015 -1.367 0.162 c
--1.515 0.316 -1.588 0.533 -1.588 0.809 c
--1.588 1.11 -1.485 1.353 -1.279 1.529 c
--1.073 1.713 -0.79 1.808 -0.426 1.808 c
--0.074 1.808 l
--0.074 2.132 l
--0.074 2.309 -0.114 2.429 -0.191 2.5 c
--0.272 2.577 -0.389 2.617 -0.545 2.617 c
--0.691 2.617 -0.817 2.573 -0.912 2.484 c
--1 2.396 -1.044 2.286 -1.044 2.161 c
--1.529 2.161 l
--1.529 2.309 -1.485 2.448 -1.397 2.587 c
--1.309 2.735 -1.191 2.845 -1.044 2.926 c
--0.89 3.003 -0.717 3.043 -0.53 3.043 c
--0.217 3.043 0.018 2.962 0.176 2.808 c
-0.33 2.661 0.411 2.44 0.411 2.147 c
-0.411 0.647 l
-0.419 0.412 0.455 0.21 0.515 0.044 c
-0.515 0 l
-h
--0.647 0.383 m
--0.53 0.383 -0.42 0.416 -0.309 0.485 c
--0.202 0.551 -0.125 0.636 -0.074 0.736 c
--0.074 1.441 l
--0.339 1.441 l
--0.574 1.441 -0.761 1.389 -0.896 1.294 c
--1.025 1.195 -1.088 1.052 -1.088 0.867 c
--1.088 0.699 -1.058 0.578 -1 0.5 c
--0.934 0.42 -0.817 0.383 -0.647 0.383 c
-2.726 0 -0.5 4.233 re
-3.296 1.632 m
-3.296 2.062 3.399 2.404 3.605 2.661 c
-3.818 2.914 4.097 3.043 4.442 3.043 c
-4.785 3.043 5.06 2.914 5.265 2.661 c
-5.479 2.415 5.593 2.08 5.604 1.661 c
-5.604 1.353 l
-5.604 0.919 5.493 0.578 5.28 0.324 c
-5.074 0.067 4.795 -0.058 4.442 -0.058 c
-4.097 -0.058 3.825 0.063 3.619 0.31 c
-3.414 0.551 3.303 0.886 3.296 1.309 c
-h
-3.781 1.353 m
-3.781 1.037 3.84 0.794 3.958 0.618 c
-4.082 0.449 4.244 0.368 4.442 0.368 c
-4.872 0.368 5.097 0.676 5.119 1.294 c
-5.119 1.632 l
-5.119 1.933 5.053 2.176 4.928 2.352 c
-4.81 2.529 4.648 2.617 4.442 2.617 c
-4.244 2.617 4.082 2.529 3.958 2.352 c
-3.84 2.176 3.781 1.933 3.781 1.632 c
-h
-7.073 0.368 m
-7.239 0.368 7.372 0.416 7.47 0.515 c
-7.566 0.611 7.621 0.754 7.632 0.941 c
-8.088 0.941 l
-8.077 0.655 7.974 0.416 7.779 0.221 c
-7.592 0.034 7.357 -0.058 7.073 -0.058 c
-6.709 -0.058 6.431 0.059 6.236 0.294 c
-6.038 0.53 5.942 0.875 5.942 1.338 c
-5.942 1.661 l
-5.942 2.11 6.034 2.455 6.221 2.691 c
-6.416 2.926 6.699 3.043 7.073 3.043 c
-7.374 3.043 7.617 2.944 7.794 2.749 c
-7.977 2.55 8.077 2.286 8.088 1.956 c
-7.632 1.956 l
-7.61 2.18 7.551 2.345 7.455 2.455 c
-7.368 2.562 7.239 2.617 7.073 2.617 c
-6.857 2.617 6.695 2.544 6.589 2.396 c
-6.489 2.257 6.434 2.029 6.427 1.706 c
-6.427 1.324 l
-6.427 0.971 6.474 0.721 6.574 0.574 c
-6.68 0.434 6.846 0.368 7.073 0.368 c
-10.01 0 m
-9.98 0.067 9.959 0.177 9.951 0.324 c
-9.774 0.067 9.554 -0.058 9.29 -0.058 c
-9.014 -0.058 8.797 0.015 8.643 0.162 c
-8.496 0.316 8.422 0.533 8.422 0.809 c
-8.422 1.11 8.525 1.353 8.731 1.529 c
-8.937 1.713 9.219 1.808 9.583 1.808 c
-9.936 1.808 l
-9.936 2.132 l
-9.936 2.309 9.896 2.429 9.819 2.5 c
-9.738 2.577 9.62 2.617 9.466 2.617 c
-9.319 2.617 9.194 2.573 9.098 2.484 c
-9.01 2.396 8.966 2.286 8.966 2.161 c
-8.481 2.161 l
-8.481 2.309 8.525 2.448 8.613 2.587 c
-8.702 2.735 8.819 2.845 8.966 2.926 c
-9.12 3.003 9.294 3.043 9.481 3.043 c
-9.793 3.043 10.028 2.962 10.186 2.808 c
-10.341 2.661 10.422 2.44 10.422 2.147 c
-10.422 0.647 l
-10.429 0.412 10.466 0.21 10.524 0.044 c
-10.524 0 l
-h
-9.363 0.383 m
-9.481 0.383 9.591 0.416 9.701 0.485 c
-9.807 0.551 9.884 0.636 9.936 0.736 c
-9.936 1.441 l
-9.672 1.441 l
-9.437 1.441 9.249 1.389 9.113 1.294 c
-8.984 1.195 8.922 1.052 8.922 0.867 c
-8.922 0.699 8.951 0.578 9.01 0.5 c
-9.076 0.42 9.194 0.383 9.363 0.383 c
-11.531 0 -0.5 4.233 re
-15.573 1.353 m
-15.573 0.882 15.488 0.53 15.324 0.294 c
-15.154 0.059 14.912 -0.058 14.588 -0.058 c
-14.272 -0.058 14.037 0.077 13.883 0.353 c
-13.853 0 l
-13.412 0 l
-13.412 4.233 l
-13.898 4.233 l
-13.898 2.661 l
-14.052 2.914 14.283 3.043 14.588 3.043 c
-14.912 3.043 15.154 2.926 15.324 2.691 c
-15.488 2.455 15.573 2.106 15.573 1.646 c
-h
-15.089 1.632 m
-15.089 1.985 15.037 2.234 14.941 2.382 c
-14.842 2.529 14.68 2.602 14.456 2.602 c
-14.21 2.602 14.023 2.463 13.898 2.191 c
-13.898 0.78 l
-14.015 0.515 14.206 0.383 14.47 0.383 c
-14.684 0.383 14.842 0.456 14.941 0.603 c
-15.037 0.757 15.089 1 15.089 1.324 c
-h
-17.249 2.529 m
-17.179 2.536 17.105 2.544 17.028 2.544 c
-16.772 2.544 16.595 2.404 16.5 2.132 c
-16.5 0 l
-16.014 0 l
-16.014 2.984 l
-16.485 2.984 l
-16.5 2.675 l
-16.624 2.918 16.808 3.043 17.043 3.043 c
-17.121 3.043 17.183 3.028 17.234 2.999 c
-h
-19.046 0 m
-19.016 0.067 18.994 0.177 18.987 0.324 c
-18.811 0.067 18.59 -0.058 18.326 -0.058 c
-18.05 -0.058 17.834 0.015 17.679 0.162 c
-17.532 0.316 17.458 0.533 17.458 0.809 c
-17.458 1.11 17.562 1.353 17.767 1.529 c
-17.973 1.713 18.256 1.808 18.62 1.808 c
-18.973 1.808 l
-18.973 2.132 l
-18.973 2.309 18.932 2.429 18.855 2.5 c
-18.774 2.577 18.657 2.617 18.503 2.617 c
-18.355 2.617 18.231 2.573 18.135 2.484 c
-18.046 2.396 18.002 2.286 18.002 2.161 c
-17.518 2.161 l
-17.518 2.309 17.562 2.448 17.649 2.587 c
-17.738 2.735 17.855 2.845 18.002 2.926 c
-18.156 3.003 18.329 3.043 18.517 3.043 c
-18.829 3.043 19.064 2.962 19.222 2.808 c
-19.376 2.661 19.457 2.44 19.457 2.147 c
-19.457 0.647 l
-19.465 0.412 19.502 0.21 19.561 0.044 c
-19.561 0 l
-h
-18.399 0.383 m
-18.517 0.383 18.627 0.416 18.738 0.485 c
-18.844 0.551 18.921 0.636 18.973 0.736 c
-18.973 1.441 l
-18.708 1.441 l
-18.472 1.441 18.285 1.389 18.15 1.294 c
-18.021 1.195 17.958 1.052 17.958 0.867 c
-17.958 0.699 17.988 0.578 18.046 0.5 c
-18.113 0.42 18.231 0.383 18.399 0.383 c
-20.494 2.984 m
-20.508 2.661 l
-20.693 2.914 20.935 3.043 21.229 3.043 c
-21.758 3.043 22.026 2.691 22.037 1.985 c
-22.037 0 l
-21.552 0 l
-21.552 1.956 l
-21.552 2.191 21.512 2.356 21.435 2.455 c
-21.354 2.55 21.236 2.602 21.082 2.602 c
-20.964 2.602 20.854 2.562 20.758 2.484 c
-20.66 2.404 20.582 2.297 20.523 2.161 c
-20.523 0 l
-20.038 0 l
-20.038 2.984 l
-h
-23.617 0.368 m
-23.783 0.368 23.915 0.416 24.014 0.515 c
-24.11 0.611 24.165 0.754 24.176 0.941 c
-24.631 0.941 l
-24.62 0.655 24.518 0.416 24.323 0.221 c
-24.136 0.034 23.9 -0.058 23.617 -0.058 c
-23.253 -0.058 22.974 0.059 22.779 0.294 c
-22.582 0.53 22.486 0.875 22.486 1.338 c
-22.486 1.661 l
-22.486 2.11 22.578 2.455 22.765 2.691 c
-22.96 2.926 23.243 3.043 23.617 3.043 c
-23.918 3.043 24.161 2.944 24.338 2.749 c
-24.521 2.55 24.62 2.286 24.631 1.956 c
-24.176 1.956 l
-24.154 2.18 24.095 2.345 23.999 2.455 c
-23.912 2.562 23.783 2.617 23.617 2.617 c
-23.401 2.617 23.239 2.544 23.132 2.396 c
-23.033 2.257 22.978 2.029 22.971 1.706 c
-22.971 1.324 l
-22.971 0.971 23.018 0.721 23.118 0.574 c
-23.224 0.434 23.39 0.368 23.617 0.368 c
-25.514 2.675 m
-25.697 2.918 25.932 3.043 26.219 3.043 c
-26.748 3.043 27.016 2.691 27.027 1.985 c
-27.027 0 l
-26.542 0 l
-26.542 1.956 l
-26.542 2.191 26.502 2.356 26.424 2.455 c
-26.344 2.55 26.227 2.602 26.072 2.602 c
-25.954 2.602 25.844 2.562 25.749 2.484 c
-25.649 2.404 25.572 2.297 25.514 2.161 c
-25.514 0 l
-25.028 0 l
-25.028 4.233 l
-25.514 4.233 l
-h
-f
-Q
-0.793 0.801 0.129 0.016 K
-0.567 w 1 j 1 J
-q 1 0 0 1 757.5933 146.8594 cm
-0 0 m
-7.559 -2.874 l
-S
-Q
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 763.1567 144.7467 cm
-0 0 m
--1.378 -0.622 l
-2.492 -0.949 l
--0.617 1.374 l
-h
-f*
-Q
-0.906 0.785 0.617 0.969 K
-0.283 w 0 j 0 J
-q 1 0 0 1 763.1568 144.7467 cm
-0 0 m
--1.378 -0.622 l
-2.492 -0.949 l
--0.617 1.374 l
-0 0 l
-h
-S
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 710.7031 92.4728 cm
-0 0 m
-0.809 2.014 l
-1.382 2.014 l
-0.25 -0.5 l
-0.25 -1.999 l
--0.264 -1.999 l
--0.264 -0.5 l
--1.396 2.014 l
--0.823 2.014 l
-h
-1.382 -0.368 m
-1.382 0.062 1.484 0.405 1.691 0.661 c
-1.904 0.915 2.183 1.043 2.529 1.043 c
-2.87 1.043 3.146 0.915 3.352 0.661 c
-3.564 0.415 3.678 0.081 3.69 -0.338 c
-3.69 -0.647 l
-3.69 -1.08 3.58 -1.422 3.366 -1.675 c
-3.161 -1.933 2.881 -2.058 2.529 -2.058 c
-2.183 -2.058 1.912 -1.937 1.706 -1.691 c
-1.5 -1.448 1.389 -1.114 1.382 -0.691 c
-h
-1.867 -0.647 m
-1.867 -0.962 1.926 -1.205 2.043 -1.382 c
-2.168 -1.55 2.33 -1.631 2.529 -1.631 c
-2.959 -1.631 3.183 -1.323 3.204 -0.706 c
-3.204 -0.368 l
-3.204 -0.066 3.138 0.176 3.013 0.353 c
-2.896 0.529 2.734 0.617 2.529 0.617 c
-2.33 0.617 2.168 0.529 2.043 0.353 c
-1.926 0.176 1.867 -0.066 1.867 -0.368 c
-h
-5.644 -1.735 m
-5.486 -1.951 5.251 -2.058 4.939 -2.058 c
-4.675 -2.058 4.469 -1.966 4.322 -1.779 c
-4.183 -1.595 4.116 -1.319 4.116 -0.956 c
-4.116 0.985 l
-4.601 0.985 l
-4.601 -0.926 l
-4.601 -1.389 4.74 -1.617 5.027 -1.617 c
-5.321 -1.617 5.519 -1.484 5.63 -1.22 c
-5.63 0.985 l
-6.13 0.985 l
-6.13 -1.999 l
-5.659 -1.999 l
-h
-7.915 0.529 m
-7.846 0.536 7.772 0.544 7.695 0.544 c
-7.437 0.544 7.262 0.405 7.166 0.133 c
-7.166 -1.999 l
-6.681 -1.999 l
-6.681 0.985 l
-7.151 0.985 l
-7.166 0.676 l
-7.291 0.919 7.475 1.043 7.71 1.043 c
-7.787 1.043 7.85 1.029 7.901 0.999 c
-h
-f
-Q
-q 1 0 0 1 722.2789 91.7823 cm
-0 0 m
-0.264 1.675 l
-1.014 1.675 l
-0.397 -1.309 l
--0.25 -1.309 l
--0.676 0.411 l
--1.088 -1.309 l
--1.749 -1.309 l
--2.367 1.675 l
--1.617 1.675 l
--1.353 0 l
--0.956 1.675 l
--0.397 1.675 l
-h
-1.073 0.278 m
-1.073 0.727 1.18 1.08 1.396 1.337 c
-1.61 1.602 1.903 1.734 2.279 1.734 c
-2.66 1.734 2.955 1.602 3.16 1.337 c
-3.373 1.08 3.484 0.727 3.484 0.278 c
-3.484 0.087 l
-3.484 -0.375 3.373 -0.732 3.16 -0.985 c
-2.955 -1.243 2.66 -1.368 2.279 -1.368 c
-1.897 -1.368 1.595 -1.243 1.382 -0.985 c
-1.176 -0.721 1.073 -0.364 1.073 0.087 c
-h
-1.852 0.087 m
-1.852 -0.452 1.992 -0.721 2.279 -0.721 c
-2.543 -0.721 2.682 -0.497 2.705 -0.044 c
-2.72 0.278 l
-2.72 0.551 2.679 0.753 2.602 0.881 c
-2.521 1.018 2.414 1.087 2.279 1.087 c
-2.15 1.087 2.047 1.018 1.97 0.881 c
-1.889 0.753 1.852 0.551 1.852 0.278 c
-h
-5.255 0.926 m
-5.005 0.941 l
-4.788 0.941 4.642 0.845 4.564 0.661 c
-4.564 -1.309 l
-3.785 -1.309 l
-3.785 1.675 l
-4.52 1.675 l
-4.549 1.352 l
-4.667 1.606 4.833 1.734 5.049 1.734 c
-5.137 1.734 5.211 1.72 5.269 1.69 c
-h
-6.533 -0.162 m
-6.313 -0.397 l
-6.313 -1.309 l
-5.534 -1.309 l
-5.534 2.925 l
-6.313 2.925 l
-6.313 0.631 l
-6.416 0.779 l
-6.96 1.675 l
-7.886 1.675 l
-7.019 0.44 l
-7.975 -1.309 l
-7.077 -1.309 l
-h
-8.878 -1.309 -0.779 2.984 re
-8.055 2.439 m
-8.055 2.564 8.091 2.668 8.172 2.748 c
-8.249 2.826 8.353 2.865 8.482 2.865 c
-8.606 2.865 8.709 2.826 8.79 2.748 c
-8.867 2.668 8.908 2.564 8.908 2.439 c
-8.908 2.322 8.867 2.223 8.79 2.146 c
-8.72 2.065 8.617 2.028 8.482 2.028 c
-8.353 2.028 8.249 2.065 8.172 2.146 c
-8.091 2.223 8.055 2.322 8.055 2.439 c
-10.102 1.675 m
-10.117 1.381 l
-10.293 1.616 10.521 1.734 10.807 1.734 c
-11.326 1.734 11.59 1.371 11.601 0.646 c
-11.601 -1.309 l
-10.822 -1.309 l
-10.822 0.588 l
-10.822 0.764 10.797 0.885 10.749 0.955 c
-10.697 1.032 10.609 1.072 10.484 1.072 c
-10.337 1.072 10.223 0.999 10.146 0.852 c
-10.146 -1.309 l
-9.367 -1.309 l
-9.367 1.675 l
-h
-11.884 0.278 m
-11.884 0.768 11.973 1.132 12.149 1.367 c
-12.325 1.61 12.567 1.734 12.883 1.734 c
-13.155 1.734 13.369 1.624 13.516 1.411 c
-13.545 1.675 l
-14.25 1.675 l
-14.25 -1.309 l
-14.25 -1.691 14.14 -1.977 13.928 -2.176 c
-13.71 -2.382 13.406 -2.484 13.016 -2.484 c
-12.847 -2.484 12.671 -2.448 12.486 -2.382 c
-12.311 -2.323 12.178 -2.238 12.089 -2.132 c
-12.355 -1.603 l
-12.432 -1.669 12.531 -1.727 12.648 -1.779 c
-12.766 -1.827 12.873 -1.852 12.972 -1.852 c
-13.149 -1.852 13.273 -1.808 13.354 -1.721 c
-13.431 -1.64 13.471 -1.507 13.471 -1.324 c
-13.471 -1.073 l
-13.325 -1.272 13.126 -1.368 12.883 -1.368 c
-12.567 -1.368 12.325 -1.246 12.149 -1 c
-11.973 -0.746 11.884 -0.393 11.884 0.058 c
-h
-12.663 0.073 m
-12.663 -0.202 12.696 -0.405 12.766 -0.53 c
-12.843 -0.647 12.961 -0.706 13.119 -0.706 c
-13.273 -0.706 13.391 -0.655 13.471 -0.545 c
-13.471 0.881 l
-13.391 1.007 13.273 1.072 13.119 1.072 c
-12.961 1.072 12.843 1.007 12.766 0.881 c
-12.696 0.753 12.663 0.551 12.663 0.278 c
-h
-15.739 0.278 m
-15.739 0.768 15.819 1.132 15.989 1.367 c
-16.154 1.61 16.393 1.734 16.709 1.734 c
-16.945 1.734 17.136 1.631 17.282 1.425 c
-17.282 2.925 l
-18.076 2.925 l
-18.076 -1.309 l
-17.356 -1.309 l
-17.327 -1 l
-17.169 -1.246 16.962 -1.368 16.709 -1.368 c
-16.393 -1.368 16.154 -1.25 15.989 -1.015 c
-15.831 -0.772 15.746 -0.42 15.739 0.043 c
-h
-16.518 0.073 m
-16.518 -0.221 16.548 -0.427 16.606 -0.545 c
-16.673 -0.655 16.783 -0.706 16.93 -0.706 c
-17.084 -0.706 17.201 -0.64 17.282 -0.5 c
-17.282 0.852 l
-17.201 0.999 17.091 1.072 16.945 1.072 c
-16.797 1.072 16.687 1.014 16.621 0.897 c
-16.551 0.786 16.518 0.58 16.518 0.278 c
-h
-19.278 -1.309 -0.779 2.984 re
-18.454 2.439 m
-18.454 2.564 18.491 2.668 18.572 2.748 c
-18.649 2.826 18.753 2.865 18.881 2.865 c
-19.006 2.865 19.108 2.826 19.189 2.748 c
-19.266 2.668 19.307 2.564 19.307 2.439 c
-19.307 2.322 19.266 2.223 19.189 2.146 c
-19.12 2.065 19.017 2.028 18.881 2.028 c
-18.753 2.028 18.649 2.065 18.572 2.146 c
-18.491 2.223 18.454 2.322 18.454 2.439 c
-21.255 0.926 m
-21.005 0.941 l
-20.789 0.941 20.641 0.845 20.564 0.661 c
-20.564 -1.309 l
-19.785 -1.309 l
-19.785 1.675 l
-20.519 1.675 l
-20.549 1.352 l
-20.667 1.606 20.832 1.734 21.049 1.734 c
-21.137 1.734 21.211 1.72 21.269 1.69 c
-h
-22.688 -1.368 m
-22.283 -1.368 21.971 -1.25 21.747 -1.015 c
-21.531 -0.772 21.423 -0.427 21.423 0.014 c
-21.423 0.264 l
-21.423 0.735 21.527 1.095 21.732 1.352 c
-21.938 1.606 22.232 1.734 22.614 1.734 c
-22.986 1.734 23.264 1.61 23.453 1.367 c
-23.647 1.132 23.746 0.779 23.746 0.309 c
-23.746 -0.074 l
-22.202 -0.074 l
-22.21 -0.302 22.254 -0.467 22.335 -0.574 c
-22.423 -0.673 22.559 -0.721 22.747 -0.721 c
-23 -0.721 23.217 -0.628 23.393 -0.441 c
-23.702 -0.927 l
-23.603 -1.055 23.459 -1.162 23.276 -1.25 c
-23.1 -1.327 22.901 -1.368 22.688 -1.368 c
-22.202 0.47 m
-22.982 0.47 l
-22.982 0.544 l
-22.982 0.72 22.952 0.852 22.894 0.941 c
-22.835 1.036 22.736 1.087 22.599 1.087 c
-22.471 1.087 22.372 1.036 22.306 0.941 c
-22.247 0.841 22.21 0.683 22.202 0.47 c
-25.091 -0.721 m
-25.315 -0.721 25.429 -0.574 25.429 -0.279 c
-26.164 -0.279 l
-26.164 -0.603 26.061 -0.867 25.855 -1.073 c
-25.657 -1.272 25.407 -1.368 25.106 -1.368 c
-24.724 -1.368 24.43 -1.25 24.224 -1.015 c
-24.018 -0.772 23.915 -0.42 23.915 0.043 c
-23.915 0.294 l
-23.915 0.753 24.01 1.105 24.209 1.352 c
-24.415 1.606 24.709 1.734 25.091 1.734 c
-25.422 1.734 25.683 1.631 25.87 1.425 c
-26.065 1.219 26.164 0.929 26.164 0.558 c
-25.429 0.558 l
-25.429 0.723 25.4 0.852 25.341 0.941 c
-25.29 1.036 25.201 1.087 25.076 1.087 c
-24.947 1.087 24.856 1.036 24.797 0.941 c
-24.739 0.841 24.702 0.654 24.694 0.382 c
-24.694 0.073 l
-24.694 -0.173 24.702 -0.346 24.724 -0.441 c
-24.753 -0.53 24.789 -0.599 24.841 -0.647 c
-24.9 -0.699 24.981 -0.721 25.091 -0.721 c
-27.34 2.41 m
-27.34 1.675 l
-27.737 1.675 l
-27.737 1.087 l
-27.34 1.087 l
-27.34 -0.397 l
-27.34 -0.515 27.355 -0.599 27.384 -0.647 c
-27.421 -0.688 27.487 -0.706 27.575 -0.706 c
-27.652 -0.706 27.715 -0.699 27.767 -0.676 c
-27.752 -1.294 l
-27.623 -1.341 27.48 -1.368 27.326 -1.368 c
-26.826 -1.368 26.568 -1.081 26.561 -0.5 c
-26.561 1.087 l
-26.223 1.087 l
-26.223 1.675 l
-26.561 1.675 l
-26.561 2.41 l
-h
-27.884 0.278 m
-27.884 0.727 27.991 1.08 28.207 1.337 c
-28.421 1.602 28.714 1.734 29.09 1.734 c
-29.471 1.734 29.766 1.602 29.971 1.337 c
-30.185 1.08 30.295 0.727 30.295 0.278 c
-30.295 0.087 l
-30.295 -0.375 30.185 -0.732 29.971 -0.985 c
-29.766 -1.243 29.471 -1.368 29.09 -1.368 c
-28.708 -1.368 28.406 -1.243 28.193 -0.985 c
-27.987 -0.721 27.884 -0.364 27.884 0.087 c
-h
-28.663 0.087 m
-28.663 -0.452 28.803 -0.721 29.09 -0.721 c
-29.354 -0.721 29.493 -0.497 29.516 -0.044 c
-29.531 0.278 l
-29.531 0.551 29.49 0.753 29.413 0.881 c
-29.332 1.018 29.225 1.087 29.09 1.087 c
-28.961 1.087 28.858 1.018 28.781 0.881 c
-28.7 0.753 28.663 0.551 28.663 0.278 c
-h
-32.066 0.926 m
-31.816 0.941 l
-31.599 0.941 31.453 0.845 31.375 0.661 c
-31.375 -1.309 l
-30.596 -1.309 l
-30.596 1.675 l
-31.331 1.675 l
-31.36 1.352 l
-31.478 1.606 31.644 1.734 31.86 1.734 c
-31.948 1.734 32.022 1.72 32.08 1.69 c
-h
-33.352 -0.015 m
-33.749 1.675 l
-34.587 1.675 l
-33.602 -1.75 l
-33.455 -2.257 33.179 -2.514 32.779 -2.514 c
-32.679 -2.514 32.573 -2.492 32.456 -2.455 c
-32.456 -1.852 l
-32.544 -1.852 l
-32.669 -1.852 32.764 -1.827 32.823 -1.779 c
-32.882 -1.738 32.926 -1.661 32.955 -1.544 c
-33.028 -1.338 l
-32.161 1.675 l
-32.999 1.675 l
-h
-f
-Q
-743.813 83.889 -0.5 2.984 re
-743.843 87.667 m
-743.843 87.578 743.816 87.505 743.769 87.445 c
-743.729 87.395 743.659 87.372 743.563 87.372 c
-743.475 87.372 743.405 87.395 743.357 87.445 c
-743.317 87.505 743.299 87.571 743.299 87.652 c
-743.299 87.74 743.317 87.813 743.357 87.872 c
-743.405 87.931 743.475 87.96 743.563 87.96 c
-743.659 87.96 743.729 87.931 743.769 87.872 c
-743.816 87.813 743.843 87.744 743.843 87.667 c
-745.926 84.652 m
-745.926 84.76 745.886 84.848 745.809 84.918 c
-745.728 84.995 745.577 85.083 745.352 85.182 c
-745.088 85.288 744.901 85.381 744.795 85.461 c
-744.684 85.539 744.606 85.627 744.559 85.726 c
-744.508 85.822 744.485 85.939 744.485 86.079 c
-744.485 86.321 744.573 86.524 744.75 86.682 c
-744.926 86.847 745.15 86.931 745.426 86.931 c
-745.72 86.931 745.956 86.843 746.131 86.667 c
-746.308 86.497 746.397 86.285 746.397 86.02 c
-745.911 86.02 l
-745.911 86.156 745.859 86.27 745.765 86.358 c
-745.676 86.454 745.562 86.505 745.426 86.505 c
-745.279 86.505 745.165 86.464 745.088 86.387 c
-745.007 86.318 744.97 86.219 744.97 86.094 c
-744.97 85.994 745 85.917 745.059 85.858 c
-745.117 85.799 745.257 85.718 745.485 85.623 c
-745.845 85.476 746.091 85.333 746.22 85.197 c
-746.356 85.068 746.426 84.895 746.426 84.683 c
-746.426 84.425 746.33 84.22 746.146 84.064 c
-745.971 83.907 745.735 83.829 745.441 83.829 c
-745.125 83.829 744.872 83.918 744.677 84.095 c
-744.489 84.278 744.398 84.509 744.398 84.785 c
-744.882 84.785 l
-744.89 84.616 744.941 84.484 745.03 84.388 c
-745.125 84.3 745.265 84.256 745.441 84.256 c
-745.595 84.256 745.713 84.289 745.794 84.359 c
-745.882 84.425 745.926 84.525 745.926 84.652 c
-748.572 86.564 m
-748.755 86.807 748.99 86.931 749.277 86.931 c
-749.807 86.931 750.075 86.578 750.086 85.873 c
-750.086 83.889 l
-749.601 83.889 l
-749.601 85.843 l
-749.601 86.079 749.56 86.244 749.483 86.343 c
-749.402 86.439 749.285 86.491 749.13 86.491 c
-749.013 86.491 748.903 86.45 748.807 86.373 c
-748.708 86.292 748.631 86.185 748.572 86.049 c
-748.572 83.889 l
-748.087 83.889 l
-748.087 88.122 l
-748.572 88.122 l
-h
-751.688 83.829 m
-751.313 83.829 751.03 83.937 750.835 84.153 c
-750.637 84.378 750.542 84.704 750.542 85.138 c
-750.542 85.506 l
-750.542 85.946 750.634 86.292 750.821 86.549 c
-751.016 86.803 751.291 86.931 751.644 86.931 c
-751.986 86.931 752.24 86.817 752.408 86.593 c
-752.585 86.366 752.676 86.02 752.687 85.55 c
-752.687 85.24 l
-751.027 85.24 l
-751.027 85.167 l
-751.027 84.844 751.085 84.609 751.203 84.461 c
-751.32 84.322 751.49 84.256 751.718 84.256 c
-751.864 84.256 751.989 84.278 752.099 84.33 c
-752.206 84.388 752.309 84.477 752.408 84.594 c
-752.658 84.286 l
-752.452 83.981 752.129 83.829 751.688 83.829 c
-751.644 86.505 m
-751.438 86.505 751.284 86.435 751.188 86.299 c
-751.089 86.16 751.034 85.946 751.027 85.652 c
-752.203 85.652 l
-752.203 85.726 l
-752.18 85.998 752.129 86.196 752.041 86.314 c
-751.953 86.439 751.82 86.505 751.644 86.505 c
-754.334 86.416 m
-754.264 86.424 754.191 86.431 754.114 86.431 c
-753.856 86.431 753.68 86.292 753.584 86.02 c
-753.584 83.889 l
-753.099 83.889 l
-753.099 86.873 l
-753.57 86.873 l
-753.584 86.564 l
-753.709 86.807 753.892 86.931 754.128 86.931 c
-754.205 86.931 754.268 86.917 754.32 86.887 c
-h
-755.712 83.829 m
-755.337 83.829 755.054 83.937 754.86 84.153 c
-754.661 84.378 754.565 84.704 754.565 85.138 c
-754.565 85.506 l
-754.565 85.946 754.657 86.292 754.845 86.549 c
-755.039 86.803 755.315 86.931 755.668 86.931 c
-756.009 86.931 756.263 86.817 756.432 86.593 c
-756.608 86.366 756.701 86.02 756.711 85.55 c
-756.711 85.24 l
-755.051 85.24 l
-755.051 85.167 l
-755.051 84.844 755.109 84.609 755.226 84.461 c
-755.344 84.322 755.513 84.256 755.741 84.256 c
-755.889 84.256 756.013 84.278 756.124 84.33 c
-756.23 84.388 756.333 84.477 756.432 84.594 c
-756.682 84.286 l
-756.476 83.981 756.153 83.829 755.712 83.829 c
-755.668 86.505 m
-755.462 86.505 755.307 86.435 755.212 86.299 c
-755.113 86.16 755.058 85.946 755.051 85.652 c
-756.226 85.652 l
-756.226 85.726 l
-756.204 85.998 756.153 86.196 756.065 86.314 c
-755.976 86.439 755.844 86.505 755.668 86.505 c
-f
-0.793 0.801 0.129 0.016 K
-0.567 w 1 j 1 J
-q 1 0 0 1 757.869 91.9766 cm
-0 0 m
-6.53 2.899 l
-S
-Q
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 762.4514 94.0083 cm
-0 0 m
--0.543 -1.407 l
-2.436 1.081 l
--1.408 0.544 l
-h
-f*
-Q
-0.906 0.785 0.617 0.969 K
-0.283 w 0 j 0 J
-q 1 0 0 1 762.4514 94.0083 cm
-0 0 m
--0.543 -1.407 l
-2.436 1.081 l
--1.408 0.544 l
-0 0 l
-h
-S
-Q
-0 0 0 0 k
-q 1 0 0 1 317.2173 119.0558 cm
-0 0 m
-0 -2.076 -1.683 -3.755 -3.755 -3.755 c
--5.832 -3.755 -7.512 -2.076 -7.512 0 c
--7.512 2.076 -5.832 3.755 -3.755 3.755 c
--1.683 3.755 0 2.076 0 0 c
-f
-Q
-0.797 0.801 0.129 0.016 K
-0.709 w 1 j 1 J
-q 1 0 0 1 317.2173 119.0558 cm
-0 0 m
-0 -2.076 -1.683 -3.755 -3.755 -3.755 c
--5.832 -3.755 -7.512 -2.076 -7.512 0 c
--7.512 2.076 -5.832 3.755 -3.755 3.755 c
--1.683 3.755 0 2.076 0 0 c
-h
-S
-Q
-q
-320.12 122.007 211.589 -5.589 re
-W n
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS6 gs
-0 TL/Fm33 Do
-Q
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 325.9445 111.6592 cm
-0 0 m
--1.058 0 l
--1.058 -3.572 l
--1.558 -3.572 l
--1.558 0 l
--2.616 0 l
--2.616 0.44 l
-0 0.44 l
-h
-0.819 -0.897 m
-1.004 -0.655 1.239 -0.53 1.525 -0.53 c
-2.055 -0.53 2.323 -0.882 2.334 -1.588 c
-2.334 -3.572 l
-1.849 -3.572 l
-1.849 -1.617 l
-1.849 -1.382 1.808 -1.216 1.731 -1.118 c
-1.65 -1.022 1.532 -0.971 1.378 -0.971 c
-1.261 -0.971 1.151 -1.011 1.055 -1.088 c
-0.956 -1.169 0.879 -1.276 0.819 -1.411 c
-0.819 -3.572 l
-0.335 -3.572 l
-0.335 0.661 l
-0.819 0.661 l
-h
-3.406 -3.572 -0.5 2.984 re
-3.436 0.205 m
-3.436 0.118 3.41 0.043 3.362 -0.015 c
-3.322 -0.067 3.252 -0.088 3.157 -0.088 c
-3.069 -0.088 2.999 -0.067 2.951 -0.015 c
-2.911 0.043 2.892 0.11 2.892 0.191 c
-2.892 0.278 2.911 0.353 2.951 0.411 c
-2.999 0.47 3.069 0.5 3.157 0.5 c
-3.252 0.5 3.322 0.47 3.362 0.411 c
-3.41 0.353 3.436 0.282 3.436 0.205 c
-5.523 -2.808 m
-5.523 -2.702 5.483 -2.613 5.405 -2.544 c
-5.325 -2.467 5.174 -2.378 4.95 -2.278 c
-4.686 -2.172 4.498 -2.08 4.391 -1.999 c
-4.281 -1.922 4.204 -1.834 4.156 -1.735 c
-4.104 -1.64 4.083 -1.522 4.083 -1.382 c
-4.083 -1.139 4.171 -0.938 4.347 -0.78 c
-4.524 -0.614 4.748 -0.53 5.024 -0.53 c
-5.317 -0.53 5.552 -0.618 5.729 -0.794 c
-5.906 -0.963 5.993 -1.176 5.993 -1.441 c
-5.509 -1.441 l
-5.509 -1.305 5.457 -1.191 5.361 -1.103 c
-5.274 -1.008 5.16 -0.956 5.024 -0.956 c
-4.877 -0.956 4.763 -0.996 4.686 -1.073 c
-4.605 -1.143 4.568 -1.243 4.568 -1.368 c
-4.568 -1.467 4.597 -1.544 4.656 -1.603 c
-4.715 -1.661 4.854 -1.742 5.082 -1.838 c
-5.442 -1.985 5.689 -2.128 5.818 -2.264 c
-5.953 -2.392 6.023 -2.565 6.023 -2.779 c
-6.023 -3.036 5.928 -3.242 5.744 -3.396 c
-5.567 -3.554 5.332 -3.631 5.039 -3.631 c
-4.722 -3.631 4.469 -3.543 4.274 -3.367 c
-4.087 -3.183 3.994 -2.951 3.994 -2.675 c
-4.48 -2.675 l
-4.487 -2.845 4.538 -2.977 4.627 -3.072 c
-4.722 -3.161 4.862 -3.205 5.039 -3.205 c
-5.193 -3.205 5.31 -3.172 5.391 -3.102 c
-5.479 -3.036 5.523 -2.937 5.523 -2.808 c
-8.214 -3.572 -0.5 2.984 re
-8.243 0.205 m
-8.243 0.118 8.217 0.043 8.169 -0.015 c
-8.129 -0.067 8.059 -0.088 7.963 -0.088 c
-7.875 -0.088 7.805 -0.067 7.757 -0.015 c
-7.717 0.043 7.699 0.11 7.699 0.191 c
-7.699 0.278 7.717 0.353 7.757 0.411 c
-7.805 0.47 7.875 0.5 7.963 0.5 c
-8.059 0.5 8.129 0.47 8.169 0.411 c
-8.217 0.353 8.243 0.282 8.243 0.205 c
-10.326 -2.808 m
-10.326 -2.702 10.286 -2.613 10.209 -2.544 c
-10.128 -2.467 9.977 -2.378 9.753 -2.278 c
-9.488 -2.172 9.301 -2.08 9.195 -1.999 c
-9.084 -1.922 9.007 -1.834 8.96 -1.735 c
-8.908 -1.64 8.885 -1.522 8.885 -1.382 c
-8.885 -1.139 8.974 -0.938 9.151 -0.78 c
-9.326 -0.614 9.55 -0.53 9.826 -0.53 c
-10.12 -0.53 10.356 -0.618 10.532 -0.794 c
-10.708 -0.963 10.797 -1.176 10.797 -1.441 c
-10.311 -1.441 l
-10.311 -1.305 10.26 -1.191 10.165 -1.103 c
-10.076 -1.008 9.962 -0.956 9.826 -0.956 c
-9.679 -0.956 9.565 -0.996 9.488 -1.073 c
-9.407 -1.143 9.371 -1.243 9.371 -1.368 c
-9.371 -1.467 9.4 -1.544 9.459 -1.603 c
-9.517 -1.661 9.658 -1.742 9.885 -1.838 c
-10.246 -1.985 10.491 -2.128 10.62 -2.264 c
-10.756 -2.392 10.826 -2.565 10.826 -2.779 c
-10.826 -3.036 10.73 -3.242 10.547 -3.396 c
-10.371 -3.554 10.135 -3.631 9.841 -3.631 c
-9.525 -3.631 9.272 -3.543 9.077 -3.367 c
-8.889 -3.183 8.798 -2.951 8.798 -2.675 c
-9.282 -2.675 l
-9.29 -2.845 9.342 -2.977 9.43 -3.072 c
-9.525 -3.161 9.665 -3.205 9.841 -3.205 c
-9.995 -3.205 10.113 -3.172 10.194 -3.102 c
-10.282 -3.036 10.326 -2.937 10.326 -2.808 c
-14.016 -3.572 m
-13.986 -3.506 13.964 -3.396 13.957 -3.249 c
-13.781 -3.506 13.56 -3.631 13.295 -3.631 c
-13.02 -3.631 12.803 -3.558 12.648 -3.41 c
-12.501 -3.256 12.428 -3.04 12.428 -2.764 c
-12.428 -2.463 12.531 -2.22 12.737 -2.043 c
-12.943 -1.86 13.226 -1.764 13.589 -1.764 c
-13.942 -1.764 l
-13.942 -1.441 l
-13.942 -1.264 13.902 -1.143 13.824 -1.073 c
-13.744 -0.996 13.627 -0.956 13.471 -0.956 c
-13.325 -0.956 13.199 -1 13.104 -1.088 c
-13.016 -1.176 12.972 -1.287 12.972 -1.411 c
-12.487 -1.411 l
-12.487 -1.264 12.531 -1.125 12.619 -0.985 c
-12.707 -0.838 12.825 -0.728 12.972 -0.647 c
-13.126 -0.57 13.299 -0.53 13.486 -0.53 c
-13.799 -0.53 14.034 -0.611 14.192 -0.765 c
-14.346 -0.912 14.427 -1.133 14.427 -1.426 c
-14.427 -2.926 l
-14.435 -3.161 14.471 -3.363 14.53 -3.528 c
-14.53 -3.572 l
-h
-13.369 -3.19 m
-13.486 -3.19 13.596 -3.157 13.707 -3.088 c
-13.814 -3.021 13.891 -2.937 13.942 -2.837 c
-13.942 -2.132 l
-13.677 -2.132 l
-13.442 -2.132 13.255 -2.183 13.119 -2.278 c
-12.991 -2.378 12.928 -2.521 12.928 -2.705 c
-12.928 -2.874 12.958 -2.995 13.016 -3.072 c
-13.082 -3.153 13.199 -3.19 13.369 -3.19 c
-15.464 -0.588 m
-15.478 -0.912 l
-15.662 -0.659 15.904 -0.53 16.199 -0.53 c
-16.727 -0.53 16.996 -0.882 17.007 -1.588 c
-17.007 -3.572 l
-16.522 -3.572 l
-16.522 -1.617 l
-16.522 -1.382 16.482 -1.216 16.405 -1.118 c
-16.324 -1.022 16.206 -0.971 16.052 -0.971 c
-15.934 -0.971 15.823 -1.011 15.728 -1.088 c
-15.629 -1.169 15.551 -1.276 15.493 -1.411 c
-15.493 -3.572 l
-15.008 -3.572 l
-15.008 -0.588 l
-h
-19.293 -3.572 -0.5 2.984 re
-19.322 0.205 m
-19.322 0.118 19.296 0.043 19.248 -0.015 c
-19.208 -0.067 19.138 -0.088 19.042 -0.088 c
-18.955 -0.088 18.884 -0.067 18.837 -0.015 c
-18.797 0.043 18.778 0.11 18.778 0.191 c
-18.778 0.278 18.797 0.353 18.837 0.411 c
-18.884 0.47 18.955 0.5 19.042 0.5 c
-19.138 0.5 19.208 0.47 19.248 0.411 c
-19.296 0.353 19.322 0.282 19.322 0.205 c
-20.424 -0.588 m
-20.439 -0.912 l
-20.623 -0.659 20.866 -0.53 21.159 -0.53 c
-21.689 -0.53 21.957 -0.882 21.968 -1.588 c
-21.968 -3.572 l
-21.483 -3.572 l
-21.483 -1.617 l
-21.483 -1.382 21.442 -1.216 21.365 -1.118 c
-21.284 -1.022 21.167 -0.971 21.012 -0.971 c
-20.895 -0.971 20.785 -1.011 20.689 -1.088 c
-20.59 -1.169 20.513 -1.276 20.454 -1.411 c
-20.454 -3.572 l
-19.969 -3.572 l
-19.969 -0.588 l
-h
-23.048 -3.572 -0.5 2.984 re
-23.077 0.205 m
-23.077 0.118 23.052 0.043 23.004 -0.015 c
-22.963 -0.067 22.894 -0.088 22.799 -0.088 c
-22.71 -0.088 22.641 -0.067 22.593 -0.015 c
-22.552 0.043 22.534 0.11 22.534 0.191 c
-22.534 0.278 22.552 0.353 22.593 0.411 c
-22.641 0.47 22.71 0.5 22.799 0.5 c
-22.894 0.5 22.963 0.47 23.004 0.411 c
-23.052 0.353 23.077 0.282 23.077 0.205 c
-24.357 0.132 m
-24.357 -0.588 l
-24.812 -0.588 l
-24.812 -0.985 l
-24.357 -0.985 l
-24.357 -2.837 l
-24.357 -2.955 24.375 -3.043 24.415 -3.102 c
-24.452 -3.161 24.522 -3.19 24.621 -3.19 c
-24.68 -3.19 24.742 -3.183 24.812 -3.161 c
-24.812 -3.572 l
-24.694 -3.609 24.581 -3.631 24.474 -3.631 c
-24.276 -3.631 24.125 -3.565 24.018 -3.425 c
-23.919 -3.29 23.871 -3.095 23.871 -2.837 c
-23.871 -0.985 l
-23.416 -0.985 l
-23.416 -0.588 l
-23.871 -0.588 l
-23.871 0.132 l
-h
-25.808 -3.572 -0.5 2.984 re
-25.837 0.205 m
-25.837 0.118 25.812 0.043 25.764 -0.015 c
-25.724 -0.067 25.654 -0.088 25.558 -0.088 c
-25.47 -0.088 25.4 -0.067 25.352 -0.015 c
-25.312 0.043 25.294 0.11 25.294 0.191 c
-25.294 0.278 25.312 0.353 25.352 0.411 c
-25.4 0.47 25.47 0.5 25.558 0.5 c
-25.654 0.5 25.724 0.47 25.764 0.411 c
-25.812 0.353 25.837 0.282 25.837 0.205 c
-28.01 -3.572 m
-27.979 -3.506 27.958 -3.396 27.95 -3.249 c
-27.774 -3.506 27.553 -3.631 27.289 -3.631 c
-27.013 -3.631 26.797 -3.558 26.642 -3.41 c
-26.495 -3.256 26.422 -3.04 26.422 -2.764 c
-26.422 -2.463 26.524 -2.22 26.73 -2.043 c
-26.936 -1.86 27.219 -1.764 27.582 -1.764 c
-27.935 -1.764 l
-27.935 -1.441 l
-27.935 -1.264 27.895 -1.143 27.818 -1.073 c
-27.738 -0.996 27.62 -0.956 27.465 -0.956 c
-27.318 -0.956 27.193 -1 27.098 -1.088 c
-27.01 -1.176 26.965 -1.287 26.965 -1.411 c
-26.481 -1.411 l
-26.481 -1.264 26.524 -1.125 26.613 -0.985 c
-26.701 -0.838 26.819 -0.728 26.965 -0.647 c
-27.12 -0.57 27.293 -0.53 27.48 -0.53 c
-27.792 -0.53 28.027 -0.611 28.185 -0.765 c
-28.34 -0.912 28.421 -1.133 28.421 -1.426 c
-28.421 -2.926 l
-28.428 -3.161 28.465 -3.363 28.523 -3.528 c
-28.523 -3.572 l
-h
-27.362 -3.19 m
-27.48 -3.19 27.59 -3.157 27.7 -3.088 c
-27.807 -3.021 27.884 -2.937 27.935 -2.837 c
-27.935 -2.132 l
-27.671 -2.132 l
-27.436 -2.132 27.249 -2.183 27.112 -2.278 c
-26.984 -2.378 26.921 -2.521 26.921 -2.705 c
-26.921 -2.874 26.951 -2.995 27.01 -3.072 c
-27.075 -3.153 27.193 -3.19 27.362 -3.19 c
-29.531 -3.572 -0.5 4.233 re
-32.438 -3.205 m
-32.602 -3.205 32.735 -3.157 32.834 -3.057 c
-32.93 -2.962 32.985 -2.819 32.995 -2.631 c
-33.452 -2.631 l
-33.44 -2.918 33.338 -3.157 33.143 -3.352 c
-32.955 -3.539 32.72 -3.631 32.438 -3.631 c
-32.074 -3.631 31.794 -3.514 31.599 -3.278 c
-31.401 -3.043 31.306 -2.698 31.306 -2.234 c
-31.306 -1.912 l
-31.306 -1.463 31.397 -1.118 31.584 -0.882 c
-31.779 -0.647 32.062 -0.53 32.438 -0.53 c
-32.739 -0.53 32.981 -0.628 33.157 -0.823 c
-33.342 -1.022 33.44 -1.287 33.452 -1.617 c
-32.995 -1.617 l
-32.974 -1.393 32.915 -1.228 32.82 -1.118 c
-32.731 -1.011 32.602 -0.956 32.438 -0.956 c
-32.22 -0.956 32.059 -1.029 31.952 -1.176 c
-31.853 -1.316 31.798 -1.544 31.79 -1.867 c
-31.79 -2.249 l
-31.79 -2.602 31.838 -2.852 31.937 -2.999 c
-32.044 -3.138 32.209 -3.205 32.438 -3.205 c
-33.745 -1.941 m
-33.745 -1.511 33.849 -1.169 34.054 -0.912 c
-34.267 -0.659 34.547 -0.53 34.892 -0.53 c
-35.233 -0.53 35.509 -0.659 35.715 -0.912 c
-35.929 -1.158 36.043 -1.492 36.053 -1.912 c
-36.053 -2.22 l
-36.053 -2.654 35.943 -2.995 35.73 -3.249 c
-35.524 -3.506 35.245 -3.631 34.892 -3.631 c
-34.547 -3.631 34.275 -3.51 34.069 -3.263 c
-33.863 -3.021 33.753 -2.687 33.745 -2.264 c
-h
-34.231 -2.22 m
-34.231 -2.536 34.289 -2.779 34.407 -2.955 c
-34.532 -3.124 34.694 -3.205 34.892 -3.205 c
-35.322 -3.205 35.546 -2.897 35.568 -2.278 c
-35.568 -1.941 l
-35.568 -1.64 35.502 -1.397 35.377 -1.22 c
-35.26 -1.044 35.098 -0.956 34.892 -0.956 c
-34.694 -0.956 34.532 -1.044 34.407 -1.22 c
-34.289 -1.397 34.231 -1.64 34.231 -1.941 c
-h
-36.95 -0.588 m
-36.964 -0.867 l
-37.141 -0.643 37.38 -0.53 37.685 -0.53 c
-38.015 -0.53 38.247 -0.676 38.376 -0.971 c
-38.559 -0.676 38.821 -0.53 39.155 -0.53 c
-39.713 -0.53 39.996 -0.875 40.008 -1.559 c
-40.008 -3.572 l
-39.522 -3.572 l
-39.522 -1.603 l
-39.522 -1.389 39.482 -1.231 39.405 -1.133 c
-39.324 -1.025 39.191 -0.971 39.008 -0.971 c
-38.861 -0.971 38.743 -1.029 38.655 -1.147 c
-38.567 -1.257 38.512 -1.397 38.493 -1.573 c
-38.493 -3.572 l
-38.008 -3.572 l
-38.008 -1.588 l
-37.997 -1.176 37.824 -0.971 37.494 -0.971 c
-37.248 -0.971 37.075 -1.096 36.979 -1.338 c
-36.979 -3.572 l
-36.494 -3.572 l
-36.494 -0.588 l
-h
-40.911 -0.588 m
-40.926 -0.867 l
-41.103 -0.643 41.341 -0.53 41.647 -0.53 c
-41.977 -0.53 42.208 -0.676 42.337 -0.971 c
-42.52 -0.676 42.782 -0.53 43.116 -0.53 c
-43.675 -0.53 43.958 -0.875 43.968 -1.559 c
-43.968 -3.572 l
-43.484 -3.572 l
-43.484 -1.603 l
-43.484 -1.389 43.443 -1.231 43.366 -1.133 c
-43.285 -1.025 43.153 -0.971 42.969 -0.971 c
-42.822 -0.971 42.705 -1.029 42.616 -1.147 c
-42.528 -1.257 42.473 -1.397 42.455 -1.573 c
-42.455 -3.572 l
-41.969 -3.572 l
-41.969 -1.588 l
-41.959 -1.176 41.786 -0.971 41.456 -0.971 c
-41.209 -0.971 41.036 -1.096 40.941 -1.338 c
-40.941 -3.572 l
-40.456 -3.572 l
-40.456 -0.588 l
-h
-44.947 -3.572 -0.5 2.984 re
-44.976 0.205 m
-44.976 0.118 44.949 0.043 44.902 -0.015 c
-44.862 -0.067 44.791 -0.088 44.696 -0.088 c
-44.608 -0.088 44.538 -0.067 44.49 -0.015 c
-44.45 0.043 44.432 0.11 44.432 0.191 c
-44.432 0.278 44.45 0.353 44.49 0.411 c
-44.538 0.47 44.608 0.5 44.696 0.5 c
-44.791 0.5 44.862 0.47 44.902 0.411 c
-44.949 0.353 44.976 0.282 44.976 0.205 c
-46.25 0.132 m
-46.25 -0.588 l
-46.707 -0.588 l
-46.707 -0.985 l
-46.25 -0.985 l
-46.25 -2.837 l
-46.25 -2.955 46.269 -3.043 46.31 -3.102 c
-46.346 -3.161 46.416 -3.19 46.515 -3.19 c
-46.574 -3.19 46.636 -3.183 46.707 -3.161 c
-46.707 -3.572 l
-46.589 -3.609 46.474 -3.631 46.368 -3.631 c
-46.17 -3.631 46.019 -3.565 45.913 -3.425 c
-45.813 -3.29 45.766 -3.095 45.766 -2.837 c
-45.766 -0.985 l
-45.31 -0.985 l
-45.31 -0.588 l
-45.766 -0.588 l
-45.766 0.132 l
-h
-47.173 -4.366 m
-46.879 -4.175 l
-47.056 -3.929 47.147 -3.679 47.158 -3.425 c
-47.158 -2.97 l
-47.658 -2.97 l
-47.658 -3.367 l
-47.658 -3.554 47.607 -3.738 47.511 -3.925 c
-47.423 -4.109 47.309 -4.256 47.173 -4.366 c
-f
-Q
-324.063 101.502 -0.5 2.984 re
-324.092 105.279 m
-324.092 105.192 324.067 105.117 324.019 105.059 c
-323.978 105.007 323.909 104.986 323.814 104.986 c
-323.725 104.986 323.656 105.007 323.608 105.059 c
-323.567 105.117 323.548 105.184 323.548 105.265 c
-323.548 105.352 323.567 105.427 323.608 105.485 c
-323.656 105.544 323.725 105.574 323.814 105.574 c
-323.909 105.574 323.978 105.544 324.019 105.485 c
-324.067 105.427 324.092 105.356 324.092 105.279 c
-325.368 105.206 m
-325.368 104.486 l
-325.823 104.486 l
-325.823 104.089 l
-325.368 104.089 l
-325.368 102.237 l
-325.368 102.119 325.386 102.031 325.426 101.972 c
-325.463 101.913 325.533 101.884 325.632 101.884 c
-325.691 101.884 325.754 101.891 325.823 101.913 c
-325.823 101.502 l
-325.706 101.465 325.592 101.443 325.485 101.443 c
-325.287 101.443 325.136 101.509 325.03 101.649 c
-324.93 101.784 324.882 101.979 324.882 102.237 c
-324.882 104.089 l
-324.427 104.089 l
-324.427 104.486 l
-324.882 104.486 l
-324.882 105.206 l
-h
-327.98 104.177 m
-328.165 104.419 328.4 104.544 328.686 104.544 c
-329.215 104.544 329.484 104.192 329.495 103.486 c
-329.495 101.502 l
-329.009 101.502 l
-329.009 103.457 l
-329.009 103.692 328.969 103.858 328.892 103.956 c
-328.811 104.052 328.693 104.103 328.539 104.103 c
-328.421 104.103 328.311 104.063 328.215 103.986 c
-328.117 103.905 328.04 103.798 327.98 103.663 c
-327.98 101.502 l
-327.496 101.502 l
-327.496 105.735 l
-327.98 105.735 l
-h
-331.564 101.502 m
-331.534 101.568 331.512 101.678 331.504 101.825 c
-331.328 101.568 331.107 101.443 330.843 101.443 c
-330.567 101.443 330.351 101.516 330.197 101.664 c
-330.049 101.818 329.976 102.034 329.976 102.31 c
-329.976 102.611 330.079 102.854 330.284 103.031 c
-330.49 103.214 330.773 103.31 331.137 103.31 c
-331.49 103.31 l
-331.49 103.633 l
-331.49 103.81 331.45 103.931 331.373 104.001 c
-331.292 104.078 331.174 104.118 331.02 104.118 c
-330.872 104.118 330.748 104.074 330.652 103.986 c
-330.564 103.898 330.519 103.787 330.519 103.663 c
-330.035 103.663 l
-330.035 103.81 330.079 103.949 330.167 104.089 c
-330.255 104.236 330.373 104.346 330.519 104.427 c
-330.675 104.504 330.847 104.544 331.034 104.544 c
-331.346 104.544 331.581 104.463 331.739 104.309 c
-331.894 104.162 331.975 103.941 331.975 103.648 c
-331.975 102.148 l
-331.982 101.913 332.019 101.711 332.078 101.546 c
-332.078 101.502 l
-h
-330.916 101.884 m
-331.034 101.884 331.145 101.917 331.255 101.987 c
-331.361 102.053 331.438 102.137 331.49 102.237 c
-331.49 102.942 l
-331.225 102.942 l
-330.99 102.942 330.802 102.891 330.667 102.796 c
-330.538 102.696 330.476 102.553 330.476 102.369 c
-330.476 102.2 330.505 102.079 330.564 102.002 c
-330.63 101.921 330.748 101.884 330.916 101.884 c
-333.996 102.266 m
-333.996 102.372 333.956 102.461 333.879 102.53 c
-333.798 102.607 333.647 102.696 333.422 102.796 c
-333.158 102.902 332.971 102.994 332.865 103.075 c
-332.754 103.152 332.676 103.24 332.629 103.339 c
-332.578 103.434 332.556 103.552 332.556 103.692 c
-332.556 103.935 332.644 104.136 332.82 104.294 c
-332.996 104.46 333.221 104.544 333.497 104.544 c
-333.79 104.544 334.025 104.456 334.202 104.28 c
-334.378 104.111 334.467 103.898 334.467 103.633 c
-333.981 103.633 l
-333.981 103.769 333.93 103.883 333.834 103.971 c
-333.746 104.066 333.632 104.118 333.497 104.118 c
-333.349 104.118 333.235 104.078 333.158 104.001 c
-333.077 103.931 333.04 103.831 333.04 103.706 c
-333.04 103.607 333.07 103.53 333.129 103.471 c
-333.187 103.413 333.327 103.332 333.555 103.236 c
-333.915 103.089 334.162 102.946 334.29 102.81 c
-334.426 102.682 334.496 102.509 334.496 102.295 c
-334.496 102.038 334.4 101.832 334.216 101.678 c
-334.04 101.52 333.805 101.443 333.511 101.443 c
-333.195 101.443 332.942 101.531 332.747 101.707 c
-332.559 101.891 332.468 102.123 332.468 102.399 c
-332.952 102.399 l
-332.96 102.229 333.011 102.097 333.1 102.002 c
-333.195 101.913 333.335 101.869 333.511 101.869 c
-333.665 101.869 333.783 101.902 333.864 101.972 c
-333.952 102.038 333.996 102.137 333.996 102.266 c
-336.612 104.486 m
-336.628 104.162 l
-336.811 104.415 337.054 104.544 337.347 104.544 c
-337.877 104.544 338.145 104.192 338.156 103.486 c
-338.156 101.502 l
-337.671 101.502 l
-337.671 103.457 l
-337.671 103.692 337.63 103.858 337.553 103.956 c
-337.472 104.052 337.355 104.103 337.2 104.103 c
-337.083 104.103 336.973 104.063 336.877 103.986 c
-336.778 103.905 336.701 103.798 336.642 103.663 c
-336.642 101.502 l
-336.157 101.502 l
-336.157 104.486 l
-h
-338.608 103.133 m
-338.608 103.563 338.71 103.905 338.916 104.162 c
-339.13 104.415 339.409 104.544 339.755 104.544 c
-340.096 104.544 340.372 104.415 340.578 104.162 c
-340.79 103.916 340.904 103.582 340.915 103.162 c
-340.915 102.854 l
-340.915 102.42 340.805 102.079 340.592 101.825 c
-340.387 101.568 340.107 101.443 339.755 101.443 c
-339.409 101.443 339.137 101.564 338.931 101.811 c
-338.725 102.053 338.615 102.387 338.608 102.81 c
-h
-339.093 102.854 m
-339.093 102.538 339.152 102.295 339.269 102.119 c
-339.394 101.95 339.556 101.869 339.755 101.869 c
-340.184 101.869 340.408 102.177 340.431 102.796 c
-340.431 103.133 l
-340.431 103.434 340.364 103.677 340.239 103.854 c
-340.121 104.03 339.961 104.118 339.755 104.118 c
-339.556 104.118 339.394 104.03 339.269 103.854 c
-339.152 103.677 339.093 103.434 339.093 103.133 c
-h
-344.705 102.854 m
-344.705 102.383 344.62 102.031 344.454 101.796 c
-344.285 101.56 344.046 101.443 343.734 101.443 c
-343.429 101.443 343.198 101.553 343.043 101.781 c
-343.043 100.355 l
-342.558 100.355 l
-342.558 104.486 l
-342.999 104.486 l
-343.028 104.147 l
-343.183 104.412 343.414 104.544 343.72 104.544 c
-344.05 104.544 344.296 104.427 344.454 104.192 c
-344.62 103.964 344.705 103.625 344.705 103.177 c
-h
-344.219 103.133 m
-344.219 103.464 344.164 103.71 344.057 103.868 c
-343.959 104.022 343.797 104.103 343.572 104.103 c
-343.337 104.103 343.161 103.986 343.043 103.75 c
-343.043 102.208 l
-343.161 101.979 343.341 101.869 343.587 101.869 c
-343.801 101.869 343.959 101.946 344.057 102.104 c
-344.164 102.258 344.219 102.501 344.219 102.825 c
-h
-346.689 101.502 m
-346.66 101.568 346.637 101.678 346.629 101.825 c
-346.454 101.568 346.233 101.443 345.968 101.443 c
-345.693 101.443 345.476 101.516 345.322 101.664 c
-345.175 101.818 345.101 102.034 345.101 102.31 c
-345.101 102.611 345.204 102.854 345.41 103.031 c
-345.615 103.214 345.899 103.31 346.263 103.31 c
-346.615 103.31 l
-346.615 103.633 l
-346.615 103.81 346.575 103.931 346.498 104.001 c
-346.417 104.078 346.299 104.118 346.145 104.118 c
-345.998 104.118 345.873 104.074 345.777 103.986 c
-345.689 103.898 345.645 103.787 345.645 103.663 c
-345.16 103.663 l
-345.16 103.81 345.204 103.949 345.293 104.089 c
-345.38 104.236 345.498 104.346 345.645 104.427 c
-345.8 104.504 345.972 104.544 346.159 104.544 c
-346.471 104.544 346.707 104.463 346.865 104.309 c
-347.019 104.162 347.1 103.941 347.1 103.648 c
-347.1 102.148 l
-347.107 101.913 347.144 101.711 347.203 101.546 c
-347.203 101.502 l
-h
-346.042 101.884 m
-346.159 101.884 346.27 101.917 346.38 101.987 c
-346.486 102.053 346.564 102.137 346.615 102.237 c
-346.615 102.942 l
-346.351 102.942 l
-346.116 102.942 345.928 102.891 345.792 102.796 c
-345.663 102.696 345.601 102.553 345.601 102.369 c
-345.601 102.2 345.63 102.079 345.689 102.002 c
-345.756 101.921 345.873 101.884 346.042 101.884 c
-348.915 104.03 m
-348.846 104.037 348.772 104.045 348.695 104.045 c
-348.438 104.045 348.262 103.905 348.166 103.633 c
-348.166 101.502 l
-347.681 101.502 l
-347.681 104.486 l
-348.152 104.486 l
-348.166 104.177 l
-348.291 104.419 348.474 104.544 348.709 104.544 c
-348.787 104.544 348.85 104.529 348.9 104.5 c
-h
-350.294 101.443 m
-349.919 101.443 349.636 101.549 349.441 101.766 c
-349.243 101.99 349.147 102.318 349.147 102.751 c
-349.147 103.118 l
-349.147 103.559 349.239 103.905 349.426 104.162 c
-349.621 104.415 349.897 104.544 350.249 104.544 c
-350.591 104.544 350.845 104.431 351.014 104.207 c
-351.19 103.978 351.282 103.633 351.293 103.162 c
-351.293 102.854 l
-349.632 102.854 l
-349.632 102.78 l
-349.632 102.457 349.691 102.222 349.808 102.075 c
-349.926 101.936 350.095 101.869 350.323 101.869 c
-350.47 101.869 350.595 101.891 350.705 101.942 c
-350.812 102.002 350.915 102.09 351.014 102.208 c
-351.264 101.899 l
-351.058 101.593 350.735 101.443 350.294 101.443 c
-350.249 104.118 m
-350.043 104.118 349.889 104.049 349.794 103.912 c
-349.694 103.773 349.64 103.559 349.632 103.266 c
-350.808 103.266 l
-350.808 103.339 l
-350.786 103.611 350.735 103.81 350.646 103.927 c
-350.558 104.052 350.426 104.118 350.249 104.118 c
-352.16 104.486 m
-352.175 104.162 l
-352.359 104.415 352.601 104.544 352.896 104.544 c
-353.424 104.544 353.693 104.192 353.704 103.486 c
-353.704 101.502 l
-353.218 101.502 l
-353.218 103.457 l
-353.218 103.692 353.178 103.858 353.101 103.956 c
-353.02 104.052 352.902 104.103 352.748 104.103 c
-352.63 104.103 352.52 104.063 352.425 103.986 c
-352.326 103.905 352.249 103.798 352.19 103.663 c
-352.19 101.502 l
-351.705 101.502 l
-351.705 104.486 l
-h
-354.891 105.206 m
-354.891 104.486 l
-355.346 104.486 l
-355.346 104.089 l
-354.891 104.089 l
-354.891 102.237 l
-354.891 102.119 354.909 102.031 354.949 101.972 c
-354.986 101.913 355.056 101.884 355.155 101.884 c
-355.214 101.884 355.277 101.891 355.346 101.913 c
-355.346 101.502 l
-355.229 101.465 355.115 101.443 355.009 101.443 c
-354.81 101.443 354.66 101.509 354.552 101.649 c
-354.454 101.784 354.406 101.979 354.406 102.237 c
-354.406 104.089 l
-353.95 104.089 l
-353.95 104.486 l
-354.406 104.486 l
-354.406 105.206 l
-h
-357.25 102.266 m
-357.25 102.372 357.21 102.461 357.132 102.53 c
-357.052 102.607 356.9 102.696 356.677 102.796 c
-356.412 102.902 356.225 102.994 356.118 103.075 c
-356.008 103.152 355.931 103.24 355.883 103.339 c
-355.832 103.434 355.809 103.552 355.809 103.692 c
-355.809 103.935 355.898 104.136 356.074 104.294 c
-356.25 104.46 356.474 104.544 356.75 104.544 c
-357.044 104.544 357.28 104.456 357.456 104.28 c
-357.632 104.111 357.721 103.898 357.721 103.633 c
-357.235 103.633 l
-357.235 103.769 357.184 103.883 357.089 103.971 c
-357 104.066 356.886 104.118 356.75 104.118 c
-356.603 104.118 356.489 104.078 356.412 104.001 c
-356.331 103.931 356.295 103.831 356.295 103.706 c
-356.295 103.607 356.324 103.53 356.383 103.471 c
-356.441 103.413 356.582 103.332 356.809 103.236 c
-357.17 103.089 357.415 102.946 357.544 102.81 c
-357.68 102.682 357.75 102.509 357.75 102.295 c
-357.75 102.038 357.654 101.832 357.471 101.678 c
-357.294 101.52 357.059 101.443 356.765 101.443 c
-356.449 101.443 356.195 101.531 356 101.707 c
-355.813 101.891 355.721 102.123 355.721 102.399 c
-356.206 102.399 l
-356.214 102.229 356.265 102.097 356.353 102.002 c
-356.449 101.913 356.588 101.869 356.765 101.869 c
-356.919 101.869 357.037 101.902 357.118 101.972 c
-357.206 102.038 357.25 102.137 357.25 102.266 c
-f
-0.793 0.801 0.129 0.016 K
-0.567 w
-q 1 0 0 1 321.7337 107.7302 cm
-0 0 m
--4.686 4.844 l
-S
-Q
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 318.5327 111.0419 cm
-0 0 m
-1.507 -0.026 l
--1.856 1.914 l
--0.026 -1.511 l
-h
-f*
-Q
-0.906 0.785 0.617 0.969 K
-0.283 w 0 j 0 J
-q 1 0 0 1 318.5327 111.042 cm
-0 0 m
-1.507 -0.026 l
--1.856 1.914 l
--0.026 -1.511 l
-0 0 l
-h
-S
-Q
-0.793 0.801 0.129 0.016 K
-0.8 w
-q 1 0 0 1 644.4808 108.7265 cm
-0 0 m
-0.008 -15.25 l
--6.464 -15.25 l
--6.468 0 l
--3.227 3.564 l
-0 0 l
-h
-S
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 640.4863 106.5801 cm
-0 0 m
-1.881 -0.382 l
-1.881 -1.191 l
--1.103 -0.368 l
--1.103 0.368 l
-1.881 1.191 l
-1.881 0.382 l
-h
--1.103 -3.087 m
--1.103 -2.293 l
-1.969 -2.293 l
-1.66 -1.529 l
-2.322 -1.529 l
-2.91 -2.998 l
-2.91 -3.087 l
-h
--0.706 -4.12 m
--0.581 -4.12 -0.478 -4.156 -0.397 -4.237 c
--0.32 -4.326 -0.279 -4.432 -0.279 -4.561 c
--0.279 -4.696 -0.32 -4.802 -0.397 -4.883 c
--0.478 -4.972 -0.581 -5.016 -0.706 -5.016 c
--0.834 -5.016 -0.937 -4.972 -1.014 -4.883 c
--1.095 -4.802 -1.133 -4.696 -1.133 -4.561 c
--1.133 -4.432 -1.095 -4.326 -1.014 -4.237 c
--0.937 -4.156 -0.834 -4.12 -0.706 -4.12 c
-0.558 -7.886 m
-0 -7.886 -0.427 -7.783 -0.721 -7.578 c
--1.014 -7.379 -1.162 -7.096 -1.162 -6.724 c
--1.162 -6.361 -1.022 -6.078 -0.736 -5.872 c
--0.441 -5.674 -0.03 -5.571 0.5 -5.564 c
-1.263 -5.564 l
-1.811 -5.564 2.234 -5.659 2.528 -5.857 c
-2.822 -6.063 2.969 -6.35 2.969 -6.724 c
-2.969 -7.096 2.822 -7.379 2.528 -7.578 c
-2.241 -7.783 1.83 -7.886 1.294 -7.886 c
-h
-1.367 -7.107 m
-1.679 -7.107 1.914 -7.071 2.072 -7.004 c
-2.238 -6.945 2.322 -6.85 2.322 -6.724 c
-2.322 -6.479 2.032 -6.35 1.454 -6.342 c
-0.455 -6.342 l
-0.132 -6.342 -0.114 -6.372 -0.279 -6.431 c
--0.437 -6.497 -0.515 -6.596 -0.515 -6.724 c
--0.515 -6.85 -0.441 -6.945 -0.294 -7.004 c
--0.14 -7.071 0.091 -7.107 0.397 -7.107 c
-h
--0.706 -8.32 m
--0.581 -8.32 -0.478 -8.357 -0.397 -8.437 c
--0.32 -8.525 -0.279 -8.632 -0.279 -8.76 c
--0.279 -8.897 -0.32 -9.003 -0.397 -9.084 c
--0.478 -9.172 -0.581 -9.216 -0.706 -9.216 c
--0.834 -9.216 -0.937 -9.172 -1.014 -9.084 c
--1.095 -9.003 -1.133 -8.897 -1.133 -8.76 c
--1.133 -8.632 -1.095 -8.525 -1.014 -8.437 c
--0.937 -8.357 -0.834 -8.32 -0.706 -8.32 c
--1.103 -11.484 m
--1.103 -10.69 l
-1.969 -10.69 l
-1.66 -9.926 l
-2.322 -9.926 l
-2.91 -11.395 l
-2.91 -11.484 l
-h
-f
-Q
-q 1 0 0 1 573.4436 98.4888 cm
-0 0 m
--1.058 0 l
--1.058 -3.572 l
--1.558 -3.572 l
--1.558 0 l
--2.616 0 l
--2.616 0.44 l
-0 0.44 l
-h
-0.823 -0.897 m
-1.007 -0.655 1.242 -0.53 1.529 -0.53 c
-2.058 -0.53 2.326 -0.882 2.337 -1.588 c
-2.337 -3.572 l
-1.852 -3.572 l
-1.852 -1.617 l
-1.852 -1.382 1.812 -1.216 1.735 -1.118 c
-1.654 -1.022 1.536 -0.971 1.382 -0.971 c
-1.264 -0.971 1.154 -1.011 1.058 -1.088 c
-0.96 -1.169 0.882 -1.276 0.823 -1.411 c
-0.823 -3.572 l
-0.338 -3.572 l
-0.338 0.661 l
-0.823 0.661 l
-h
-3.406 -3.572 -0.5 2.984 re
-3.436 0.205 m
-3.436 0.118 3.41 0.043 3.362 -0.015 c
-3.322 -0.067 3.252 -0.088 3.156 -0.088 c
-3.069 -0.088 2.999 -0.067 2.951 -0.015 c
-2.911 0.043 2.892 0.11 2.892 0.191 c
-2.892 0.278 2.911 0.353 2.951 0.411 c
-2.999 0.47 3.069 0.5 3.156 0.5 c
-3.252 0.5 3.322 0.47 3.362 0.411 c
-3.41 0.353 3.436 0.282 3.436 0.205 c
-5.523 -2.808 m
-5.523 -2.702 5.483 -2.613 5.405 -2.544 c
-5.325 -2.467 5.174 -2.378 4.95 -2.278 c
-4.685 -2.172 4.498 -2.08 4.391 -1.999 c
-4.281 -1.922 4.204 -1.834 4.156 -1.735 c
-4.104 -1.64 4.083 -1.522 4.083 -1.382 c
-4.083 -1.139 4.171 -0.938 4.347 -0.78 c
-4.524 -0.614 4.748 -0.53 5.024 -0.53 c
-5.317 -0.53 5.552 -0.618 5.729 -0.794 c
-5.905 -0.963 5.993 -1.176 5.993 -1.441 c
-5.508 -1.441 l
-5.508 -1.305 5.457 -1.191 5.361 -1.103 c
-5.273 -1.008 5.159 -0.956 5.024 -0.956 c
-4.877 -0.956 4.762 -0.996 4.685 -1.073 c
-4.605 -1.143 4.567 -1.243 4.567 -1.368 c
-4.567 -1.467 4.597 -1.544 4.656 -1.603 c
-4.715 -1.661 4.854 -1.742 5.082 -1.838 c
-5.442 -1.985 5.689 -2.128 5.818 -2.264 c
-5.953 -2.392 6.023 -2.565 6.023 -2.779 c
-6.023 -3.036 5.928 -3.242 5.743 -3.396 c
-5.567 -3.554 5.332 -3.631 5.038 -3.631 c
-4.723 -3.631 4.469 -3.543 4.274 -3.367 c
-4.087 -3.183 3.994 -2.951 3.994 -2.675 c
-4.48 -2.675 l
-4.487 -2.845 4.538 -2.977 4.627 -3.072 c
-4.723 -3.161 4.862 -3.205 5.038 -3.205 c
-5.193 -3.205 5.31 -3.172 5.39 -3.102 c
-5.479 -3.036 5.523 -2.937 5.523 -2.808 c
-8.213 -3.572 -0.5 2.984 re
-8.243 0.205 m
-8.243 0.118 8.216 0.043 8.169 -0.015 c
-8.129 -0.067 8.058 -0.088 7.963 -0.088 c
-7.875 -0.088 7.805 -0.067 7.757 -0.015 c
-7.717 0.043 7.699 0.11 7.699 0.191 c
-7.699 0.278 7.717 0.353 7.757 0.411 c
-7.805 0.47 7.875 0.5 7.963 0.5 c
-8.058 0.5 8.129 0.47 8.169 0.411 c
-8.216 0.353 8.243 0.282 8.243 0.205 c
-10.326 -2.808 m
-10.326 -2.702 10.286 -2.613 10.209 -2.544 c
-10.128 -2.467 9.977 -2.378 9.753 -2.278 c
-9.488 -2.172 9.301 -2.08 9.194 -1.999 c
-9.084 -1.922 9.007 -1.834 8.959 -1.735 c
-8.908 -1.64 8.885 -1.522 8.885 -1.382 c
-8.885 -1.139 8.974 -0.938 9.151 -0.78 c
-9.327 -0.614 9.55 -0.53 9.826 -0.53 c
-10.12 -0.53 10.356 -0.618 10.532 -0.794 c
-10.708 -0.963 10.797 -1.176 10.797 -1.441 c
-10.311 -1.441 l
-10.311 -1.305 10.26 -1.191 10.165 -1.103 c
-10.076 -1.008 9.962 -0.956 9.826 -0.956 c
-9.679 -0.956 9.565 -0.996 9.488 -1.073 c
-9.407 -1.143 9.371 -1.243 9.371 -1.368 c
-9.371 -1.467 9.4 -1.544 9.459 -1.603 c
-9.517 -1.661 9.658 -1.742 9.885 -1.838 c
-10.246 -1.985 10.491 -2.128 10.62 -2.264 c
-10.756 -2.392 10.826 -2.565 10.826 -2.779 c
-10.826 -3.036 10.73 -3.242 10.547 -3.396 c
-10.37 -3.554 10.135 -3.631 9.841 -3.631 c
-9.525 -3.631 9.271 -3.543 9.076 -3.367 c
-8.889 -3.183 8.798 -2.951 8.798 -2.675 c
-9.282 -2.675 l
-9.29 -2.845 9.342 -2.977 9.429 -3.072 c
-9.525 -3.161 9.664 -3.205 9.841 -3.205 c
-9.995 -3.205 10.113 -3.172 10.194 -3.102 c
-10.282 -3.036 10.326 -2.937 10.326 -2.808 c
-14.015 -3.572 m
-13.986 -3.506 13.964 -3.396 13.957 -3.249 c
-13.78 -3.506 13.56 -3.631 13.295 -3.631 c
-13.02 -3.631 12.803 -3.558 12.648 -3.41 c
-12.502 -3.256 12.428 -3.04 12.428 -2.764 c
-12.428 -2.463 12.531 -2.22 12.737 -2.043 c
-12.943 -1.86 13.226 -1.764 13.589 -1.764 c
-13.942 -1.764 l
-13.942 -1.441 l
-13.942 -1.264 13.901 -1.143 13.824 -1.073 c
-13.743 -0.996 13.626 -0.956 13.471 -0.956 c
-13.325 -0.956 13.2 -1 13.104 -1.088 c
-13.016 -1.176 12.972 -1.287 12.972 -1.411 c
-12.486 -1.411 l
-12.486 -1.264 12.531 -1.125 12.619 -0.985 c
-12.708 -0.838 12.825 -0.728 12.972 -0.647 c
-13.126 -0.57 13.299 -0.53 13.486 -0.53 c
-13.799 -0.53 14.034 -0.611 14.192 -0.765 c
-14.346 -0.912 14.427 -1.133 14.427 -1.426 c
-14.427 -2.926 l
-14.435 -3.161 14.471 -3.363 14.53 -3.528 c
-14.53 -3.572 l
-h
-13.369 -3.19 m
-13.486 -3.19 13.596 -3.157 13.707 -3.087 c
-13.814 -3.021 13.891 -2.937 13.942 -2.837 c
-13.942 -2.132 l
-13.677 -2.132 l
-13.442 -2.132 13.255 -2.183 13.119 -2.278 c
-12.991 -2.378 12.928 -2.521 12.928 -2.705 c
-12.928 -2.874 12.957 -2.995 13.016 -3.072 c
-13.082 -3.153 13.2 -3.19 13.369 -3.19 c
-16.845 0.132 m
-16.845 -0.588 l
-17.301 -0.588 l
-17.301 -0.985 l
-16.845 -0.985 l
-16.845 -2.837 l
-16.845 -2.955 16.864 -3.043 16.904 -3.102 c
-16.941 -3.161 17.01 -3.19 17.11 -3.19 c
-17.169 -3.19 17.231 -3.183 17.301 -3.161 c
-17.301 -3.572 l
-17.184 -3.609 17.07 -3.631 16.963 -3.631 c
-16.764 -3.631 16.613 -3.565 16.507 -3.425 c
-16.407 -3.29 16.36 -3.095 16.36 -2.837 c
-16.36 -0.985 l
-15.904 -0.985 l
-15.904 -0.588 l
-16.36 -0.588 l
-16.36 0.132 l
-h
-19.297 -3.572 m
-19.266 -3.506 19.245 -3.396 19.237 -3.249 c
-19.061 -3.506 18.84 -3.631 18.576 -3.631 c
-18.3 -3.631 18.084 -3.558 17.93 -3.41 c
-17.782 -3.256 17.708 -3.04 17.708 -2.764 c
-17.708 -2.463 17.812 -2.22 18.017 -2.043 c
-18.223 -1.86 18.506 -1.764 18.87 -1.764 c
-19.223 -1.764 l
-19.223 -1.441 l
-19.223 -1.264 19.183 -1.143 19.106 -1.073 c
-19.025 -0.996 18.907 -0.956 18.753 -0.956 c
-18.605 -0.956 18.481 -1 18.385 -1.088 c
-18.296 -1.176 18.252 -1.287 18.252 -1.411 c
-17.768 -1.411 l
-17.768 -1.264 17.812 -1.125 17.899 -0.985 c
-17.988 -0.838 18.105 -0.728 18.252 -0.647 c
-18.406 -0.57 18.58 -0.53 18.767 -0.53 c
-19.079 -0.53 19.314 -0.611 19.472 -0.765 c
-19.627 -0.912 19.708 -1.133 19.708 -1.426 c
-19.708 -2.926 l
-19.715 -3.161 19.752 -3.363 19.811 -3.528 c
-19.811 -3.572 l
-h
-18.649 -3.19 m
-18.767 -3.19 18.877 -3.157 18.988 -3.087 c
-19.094 -3.021 19.171 -2.937 19.223 -2.837 c
-19.223 -2.132 l
-18.958 -2.132 l
-18.723 -2.132 18.535 -2.183 18.4 -2.278 c
-18.271 -2.378 18.208 -2.521 18.208 -2.705 c
-18.208 -2.874 18.238 -2.995 18.296 -3.072 c
-18.363 -3.153 18.481 -3.19 18.649 -3.19 c
-20.185 -1.941 m
-20.185 -1.482 20.266 -1.133 20.436 -0.897 c
-20.612 -0.655 20.862 -0.53 21.185 -0.53 c
-21.487 -0.53 21.718 -0.662 21.876 -0.927 c
-21.905 -0.588 l
-22.346 -0.588 l
-22.346 -3.602 l
-22.346 -3.973 22.247 -4.256 22.052 -4.454 c
-21.865 -4.649 21.604 -4.748 21.273 -4.748 c
-21.126 -4.748 20.957 -4.707 20.773 -4.63 c
-20.586 -4.561 20.45 -4.472 20.362 -4.366 c
-20.553 -4.028 l
-20.758 -4.233 20.983 -4.337 21.229 -4.337 c
-21.63 -4.337 21.836 -4.109 21.847 -3.66 c
-21.847 -3.278 l
-21.689 -3.514 21.468 -3.631 21.185 -3.631 c
-20.869 -3.631 20.627 -3.514 20.45 -3.278 c
-20.281 -3.043 20.193 -2.712 20.185 -2.278 c
-h
-20.671 -2.22 m
-20.671 -2.554 20.718 -2.801 20.818 -2.955 c
-20.913 -3.113 21.074 -3.19 21.303 -3.19 c
-21.545 -3.19 21.729 -3.069 21.847 -2.822 c
-21.847 -1.338 l
-21.729 -1.096 21.552 -0.971 21.317 -0.971 c
-21.09 -0.971 20.928 -1.052 20.833 -1.206 c
-20.733 -1.364 20.677 -1.603 20.671 -1.926 c
-h
-22.909 -3.308 m
-22.909 -3.219 22.931 -3.146 22.982 -3.087 c
-23.041 -3.028 23.118 -2.999 23.217 -2.999 c
-23.324 -2.999 23.401 -3.028 23.453 -3.087 c
-23.511 -3.146 23.54 -3.219 23.54 -3.308 c
-23.54 -3.389 23.511 -3.454 23.453 -3.514 c
-23.401 -3.572 23.324 -3.602 23.217 -3.602 c
-23.118 -3.602 23.041 -3.572 22.982 -3.514 c
-22.931 -3.454 22.909 -3.389 22.909 -3.308 c
-26.061 -3.572 -0.5 4.012 re
-27.421 0.132 m
-27.421 -0.588 l
-27.877 -0.588 l
-27.877 -0.985 l
-27.421 -0.985 l
-27.421 -2.837 l
-27.421 -2.955 27.44 -3.043 27.48 -3.102 c
-27.517 -3.161 27.586 -3.19 27.686 -3.19 c
-27.744 -3.19 27.807 -3.183 27.877 -3.161 c
-27.877 -3.572 l
-27.759 -3.609 27.646 -3.631 27.538 -3.631 c
-27.34 -3.631 27.189 -3.565 27.083 -3.425 c
-26.984 -3.29 26.936 -3.095 26.936 -2.837 c
-26.936 -0.985 l
-26.48 -0.985 l
-26.48 -0.588 l
-26.936 -0.588 l
-26.936 0.132 l
-h
-30.078 -3.572 -0.501 4.233 re
-30.647 -1.941 m
-30.647 -1.511 30.751 -1.169 30.956 -0.912 c
-31.17 -0.659 31.449 -0.53 31.794 -0.53 c
-32.136 -0.53 32.411 -0.659 32.617 -0.912 c
-32.83 -1.158 32.945 -1.492 32.955 -1.912 c
-32.955 -2.22 l
-32.955 -2.654 32.845 -2.995 32.632 -3.249 c
-32.426 -3.506 32.147 -3.631 31.794 -3.631 c
-31.449 -3.631 31.177 -3.51 30.971 -3.263 c
-30.765 -3.021 30.655 -2.687 30.647 -2.264 c
-h
-31.133 -2.22 m
-31.133 -2.536 31.191 -2.779 31.309 -2.955 c
-31.434 -3.124 31.596 -3.205 31.794 -3.205 c
-32.224 -3.205 32.448 -2.897 32.471 -2.278 c
-32.471 -1.941 l
-32.471 -1.64 32.404 -1.397 32.279 -1.22 c
-32.162 -1.044 32 -0.956 31.794 -0.956 c
-31.596 -0.956 31.434 -1.044 31.309 -1.22 c
-31.191 -1.397 31.133 -1.64 31.133 -1.941 c
-h
-33.294 -1.941 m
-33.294 -1.511 33.396 -1.169 33.602 -0.912 c
-33.815 -0.659 34.094 -0.53 34.44 -0.53 c
-34.782 -0.53 35.058 -0.659 35.263 -0.912 c
-35.476 -1.158 35.59 -1.492 35.601 -1.912 c
-35.601 -2.22 l
-35.601 -2.654 35.491 -2.995 35.278 -3.249 c
-35.072 -3.506 34.792 -3.631 34.44 -3.631 c
-34.094 -3.631 33.822 -3.51 33.616 -3.263 c
-33.411 -3.021 33.3 -2.687 33.294 -2.264 c
-h
-33.778 -2.22 m
-33.778 -2.536 33.837 -2.779 33.955 -2.955 c
-34.08 -3.124 34.241 -3.205 34.44 -3.205 c
-34.869 -3.205 35.094 -2.897 35.116 -2.278 c
-35.116 -1.941 l
-35.116 -1.64 35.05 -1.397 34.925 -1.22 c
-34.807 -1.044 34.646 -0.956 34.44 -0.956 c
-34.241 -0.956 34.08 -1.044 33.955 -1.22 c
-33.837 -1.397 33.778 -1.64 33.778 -1.941 c
-h
-36.791 -2.205 m
-36.527 -2.5 l
-36.527 -3.572 l
-36.042 -3.572 l
-36.042 0.661 l
-36.527 0.661 l
-36.527 -1.867 l
-37.453 -0.588 l
-38.042 -0.588 l
-37.101 -1.838 l
-38.173 -3.572 l
-37.6 -3.572 l
-h
-39.856 -2.808 m
-39.856 -2.702 39.816 -2.613 39.739 -2.544 c
-39.658 -2.467 39.507 -2.378 39.283 -2.278 c
-39.019 -2.172 38.831 -2.08 38.725 -1.999 c
-38.615 -1.922 38.537 -1.834 38.489 -1.735 c
-38.438 -1.64 38.416 -1.522 38.416 -1.382 c
-38.416 -1.139 38.504 -0.938 38.68 -0.78 c
-38.857 -0.614 39.081 -0.53 39.357 -0.53 c
-39.65 -0.53 39.885 -0.618 40.062 -0.794 c
-40.238 -0.963 40.327 -1.176 40.327 -1.441 c
-39.842 -1.441 l
-39.842 -1.305 39.79 -1.191 39.695 -1.103 c
-39.607 -1.008 39.492 -0.956 39.357 -0.956 c
-39.21 -0.956 39.096 -0.996 39.019 -1.073 c
-38.938 -1.143 38.901 -1.243 38.901 -1.368 c
-38.901 -1.467 38.931 -1.544 38.989 -1.603 c
-39.048 -1.661 39.187 -1.742 39.415 -1.838 c
-39.775 -1.985 40.022 -2.128 40.151 -2.264 c
-40.286 -2.392 40.356 -2.565 40.356 -2.779 c
-40.356 -3.036 40.261 -3.242 40.077 -3.396 c
-39.901 -3.554 39.665 -3.631 39.372 -3.631 c
-39.056 -3.631 38.802 -3.543 38.607 -3.367 c
-38.42 -3.183 38.328 -2.951 38.328 -2.675 c
-38.813 -2.675 l
-38.821 -2.845 38.871 -2.977 38.96 -3.072 c
-39.056 -3.161 39.195 -3.205 39.372 -3.205 c
-39.526 -3.205 39.644 -3.172 39.725 -3.102 c
-39.812 -3.036 39.856 -2.937 39.856 -2.808 c
-42.547 -3.572 -0.5 4.233 re
-43.752 -3.572 -0.5 2.984 re
-43.781 0.205 m
-43.781 0.118 43.756 0.043 43.708 -0.015 c
-43.667 -0.067 43.598 -0.088 43.502 -0.088 c
-43.413 -0.088 43.344 -0.067 43.296 -0.015 c
-43.255 0.043 43.237 0.11 43.237 0.191 c
-43.237 0.278 43.255 0.353 43.296 0.411 c
-43.344 0.47 43.413 0.5 43.502 0.5 c
-43.598 0.5 43.667 0.47 43.708 0.411 c
-43.756 0.353 43.781 0.282 43.781 0.205 c
-45.177 -2.205 m
-44.913 -2.5 l
-44.913 -3.572 l
-44.428 -3.572 l
-44.428 0.661 l
-44.913 0.661 l
-44.913 -1.867 l
-45.839 -0.588 l
-46.427 -0.588 l
-45.487 -1.838 l
-46.559 -3.572 l
-45.986 -3.572 l
-h
-47.808 -3.631 m
-47.434 -3.631 47.151 -3.525 46.956 -3.308 c
-46.758 -3.084 46.663 -2.756 46.663 -2.323 c
-46.663 -1.956 l
-46.663 -1.515 46.754 -1.169 46.941 -0.912 c
-47.136 -0.659 47.411 -0.53 47.764 -0.53 c
-48.107 -0.53 48.36 -0.643 48.529 -0.867 c
-48.705 -1.096 48.797 -1.441 48.808 -1.912 c
-48.808 -2.22 l
-47.147 -2.22 l
-47.147 -2.294 l
-47.147 -2.617 47.206 -2.852 47.324 -2.999 c
-47.441 -3.138 47.61 -3.205 47.839 -3.205 c
-47.985 -3.205 48.11 -3.183 48.22 -3.132 c
-48.327 -3.072 48.429 -2.984 48.529 -2.866 c
-48.779 -3.175 l
-48.573 -3.481 48.25 -3.631 47.808 -3.631 c
-47.764 -0.956 m
-47.559 -0.956 47.405 -1.025 47.309 -1.162 c
-47.21 -1.301 47.155 -1.515 47.147 -1.808 c
-48.323 -1.808 l
-48.323 -1.735 l
-48.301 -1.463 48.25 -1.264 48.161 -1.147 c
-48.074 -1.022 47.941 -0.956 47.764 -0.956 c
-51.954 -3.572 m
-51.924 -3.506 51.902 -3.396 51.895 -3.249 c
-51.719 -3.506 51.498 -3.631 51.234 -3.631 c
-50.958 -3.631 50.742 -3.558 50.586 -3.41 c
-50.44 -3.256 50.366 -3.04 50.366 -2.764 c
-50.366 -2.463 50.469 -2.22 50.675 -2.043 c
-50.881 -1.86 51.164 -1.764 51.527 -1.764 c
-51.88 -1.764 l
-51.88 -1.441 l
-51.88 -1.264 51.839 -1.143 51.762 -1.073 c
-51.682 -0.996 51.564 -0.956 51.41 -0.956 c
-51.263 -0.956 51.138 -1 51.043 -1.088 c
-50.954 -1.176 50.91 -1.287 50.91 -1.411 c
-50.426 -1.411 l
-50.426 -1.264 50.469 -1.125 50.557 -0.985 c
-50.646 -0.838 50.763 -0.728 50.91 -0.647 c
-51.064 -0.57 51.237 -0.53 51.425 -0.53 c
-51.737 -0.53 51.972 -0.611 52.13 -0.765 c
-52.284 -0.912 52.365 -1.133 52.365 -1.426 c
-52.365 -2.926 l
-52.373 -3.161 52.41 -3.363 52.468 -3.528 c
-52.468 -3.572 l
-h
-51.307 -3.19 m
-51.425 -3.19 51.535 -3.157 51.645 -3.087 c
-51.752 -3.021 51.829 -2.937 51.88 -2.837 c
-51.88 -2.132 l
-51.616 -2.132 l
-51.38 -2.132 51.193 -2.183 51.057 -2.278 c
-50.929 -2.378 50.866 -2.521 50.866 -2.705 c
-50.866 -2.874 50.896 -2.995 50.954 -3.072 c
-51.02 -3.153 51.138 -3.19 51.307 -3.19 c
-f
-Q
-q 1 0 0 1 559.3175 89.0664 cm
-0 0 m
-0.574 2.249 l
-1.073 2.249 l
-0.177 -0.735 l
--0.176 -0.735 l
--1.072 2.249 l
--0.588 2.249 l
-h
-2.444 -0.794 m
-2.07 -0.794 1.786 -0.688 1.592 -0.47 c
-1.393 -0.246 1.297 0.081 1.297 0.515 c
-1.297 0.881 l
-1.297 1.323 1.389 1.668 1.577 1.926 c
-1.771 2.179 2.047 2.308 2.4 2.308 c
-2.741 2.308 2.995 2.194 3.165 1.97 c
-3.341 1.741 3.433 1.396 3.444 0.926 c
-3.444 0.617 l
-1.783 0.617 l
-1.783 0.544 l
-1.783 0.22 1.841 -0.015 1.959 -0.162 c
-2.076 -0.301 2.245 -0.368 2.473 -0.368 c
-2.621 -0.368 2.745 -0.345 2.856 -0.294 c
-2.962 -0.235 3.065 -0.147 3.165 -0.029 c
-3.414 -0.338 l
-3.209 -0.643 2.885 -0.794 2.444 -0.794 c
-2.4 1.881 m
-2.194 1.881 2.039 1.812 1.945 1.675 c
-1.845 1.536 1.79 1.323 1.783 1.029 c
-2.959 1.029 l
-2.959 1.103 l
-2.936 1.374 2.885 1.573 2.797 1.691 c
-2.708 1.816 2.577 1.881 2.4 1.881 c
-5.09 1.793 m
-5.02 1.801 4.946 1.808 4.869 1.808 c
-4.612 1.808 4.436 1.668 4.341 1.396 c
-4.341 -0.735 l
-3.855 -0.735 l
-3.855 2.249 l
-4.325 2.249 l
-4.341 1.94 l
-4.465 2.183 4.649 2.308 4.884 2.308 c
-4.961 2.308 5.023 2.293 5.075 2.263 c
-h
-6.901 0.029 m
-6.901 0.135 6.861 0.224 6.784 0.294 c
-6.703 0.371 6.552 0.459 6.328 0.559 c
-6.064 0.665 5.876 0.757 5.77 0.838 c
-5.659 0.915 5.582 1.003 5.534 1.103 c
-5.483 1.198 5.461 1.315 5.461 1.455 c
-5.461 1.698 5.549 1.899 5.725 2.057 c
-5.902 2.223 6.126 2.308 6.402 2.308 c
-6.696 2.308 6.931 2.219 7.107 2.043 c
-7.284 1.874 7.372 1.661 7.372 1.396 c
-6.887 1.396 l
-6.887 1.532 6.835 1.646 6.739 1.735 c
-6.652 1.83 6.538 1.881 6.402 1.881 c
-6.255 1.881 6.141 1.841 6.064 1.764 c
-5.983 1.694 5.946 1.595 5.946 1.469 c
-5.946 1.371 5.976 1.294 6.034 1.234 c
-6.093 1.176 6.232 1.095 6.461 0.999 c
-6.82 0.852 7.067 0.709 7.196 0.573 c
-7.331 0.445 7.402 0.272 7.402 0.058 c
-7.402 -0.199 7.306 -0.405 7.122 -0.559 c
-6.945 -0.717 6.71 -0.794 6.417 -0.794 c
-6.101 -0.794 5.847 -0.706 5.652 -0.53 c
-5.465 -0.345 5.373 -0.114 5.373 0.162 c
-5.858 0.162 l
-5.865 -0.008 5.916 -0.14 6.005 -0.235 c
-6.101 -0.324 6.24 -0.368 6.417 -0.368 c
-6.571 -0.368 6.689 -0.335 6.77 -0.264 c
-6.857 -0.199 6.901 -0.1 6.901 0.029 c
-8.386 -0.735 -0.5 2.984 re
-8.416 3.042 m
-8.416 2.955 8.389 2.881 8.342 2.822 c
-8.302 2.77 8.231 2.749 8.136 2.749 c
-8.048 2.749 7.978 2.77 7.93 2.822 c
-7.89 2.881 7.872 2.947 7.872 3.028 c
-7.872 3.116 7.89 3.19 7.93 3.248 c
-7.978 3.308 8.048 3.337 8.136 3.337 c
-8.231 3.337 8.302 3.308 8.342 3.248 c
-8.389 3.19 8.416 3.119 8.416 3.042 c
-8.96 0.897 m
-8.96 1.326 9.062 1.668 9.268 1.926 c
-9.481 2.179 9.76 2.308 10.106 2.308 c
-10.448 2.308 10.723 2.179 10.93 1.926 c
-11.142 1.679 11.256 1.345 11.267 0.926 c
-11.267 0.617 l
-11.267 0.183 11.157 -0.158 10.944 -0.412 c
-10.738 -0.669 10.459 -0.794 10.106 -0.794 c
-9.76 -0.794 9.488 -0.673 9.283 -0.426 c
-9.077 -0.183 8.967 0.151 8.96 0.573 c
-h
-9.444 0.617 m
-9.444 0.301 9.503 0.058 9.621 -0.118 c
-9.746 -0.287 9.908 -0.368 10.106 -0.368 c
-10.536 -0.368 10.76 -0.059 10.782 0.559 c
-10.782 0.897 l
-10.782 1.198 10.716 1.44 10.591 1.617 c
-10.473 1.793 10.311 1.881 10.106 1.881 c
-9.908 1.881 9.746 1.793 9.621 1.617 c
-9.503 1.44 9.444 1.198 9.444 0.897 c
-h
-12.16 2.249 m
-12.175 1.926 l
-12.358 2.179 12.601 2.308 12.895 2.308 c
-13.424 2.308 13.692 1.955 13.704 1.249 c
-13.704 -0.735 l
-13.218 -0.735 l
-13.218 1.22 l
-13.218 1.455 13.178 1.621 13.101 1.72 c
-13.02 1.816 12.902 1.866 12.748 1.866 c
-12.63 1.866 12.52 1.826 12.424 1.749 c
-12.326 1.668 12.248 1.562 12.189 1.426 c
-12.189 -0.735 l
-11.705 -0.735 l
-11.705 2.249 l
-h
-16.9 0.029 m
-16.9 0.135 16.86 0.224 16.783 0.294 c
-16.702 0.371 16.551 0.459 16.327 0.559 c
-16.063 0.665 15.875 0.757 15.769 0.838 c
-15.659 0.915 15.581 1.003 15.533 1.103 c
-15.482 1.198 15.46 1.315 15.46 1.455 c
-15.46 1.698 15.549 1.899 15.724 2.057 c
-15.901 2.223 16.125 2.308 16.401 2.308 c
-16.694 2.308 16.93 2.219 17.106 2.043 c
-17.282 1.874 17.371 1.661 17.371 1.396 c
-16.886 1.396 l
-16.886 1.532 16.835 1.646 16.739 1.735 c
-16.651 1.83 16.536 1.881 16.401 1.881 c
-16.254 1.881 16.14 1.841 16.063 1.764 c
-15.982 1.694 15.946 1.595 15.946 1.469 c
-15.946 1.371 15.975 1.294 16.033 1.234 c
-16.092 1.176 16.231 1.095 16.459 0.999 c
-16.819 0.852 17.066 0.709 17.195 0.573 c
-17.33 0.445 17.4 0.272 17.4 0.058 c
-17.4 -0.199 17.305 -0.405 17.121 -0.559 c
-16.945 -0.717 16.709 -0.794 16.416 -0.794 c
-16.1 -0.794 15.846 -0.706 15.651 -0.53 c
-15.464 -0.345 15.372 -0.114 15.372 0.162 c
-15.857 0.162 l
-15.865 -0.008 15.915 -0.14 16.004 -0.235 c
-16.1 -0.324 16.239 -0.368 16.416 -0.368 c
-16.57 -0.368 16.688 -0.335 16.769 -0.264 c
-16.856 -0.199 16.9 -0.1 16.9 0.029 c
-17.756 0.897 m
-17.756 1.326 17.86 1.668 18.066 1.926 c
-18.279 2.179 18.558 2.308 18.903 2.308 c
-19.245 2.308 19.52 2.179 19.726 1.926 c
-19.94 1.679 20.054 1.345 20.064 0.926 c
-20.064 0.617 l
-20.064 0.183 19.954 -0.158 19.741 -0.412 c
-19.535 -0.669 19.256 -0.794 18.903 -0.794 c
-18.558 -0.794 18.286 -0.673 18.08 -0.426 c
-17.874 -0.183 17.764 0.151 17.756 0.573 c
-h
-18.242 0.617 m
-18.242 0.301 18.301 0.058 18.418 -0.118 c
-18.543 -0.287 18.705 -0.368 18.903 -0.368 c
-19.333 -0.368 19.557 -0.059 19.58 0.559 c
-19.58 0.897 l
-19.58 1.198 19.514 1.44 19.389 1.617 c
-19.271 1.793 19.109 1.881 18.903 1.881 c
-18.705 1.881 18.543 1.793 18.418 1.617 c
-18.301 1.44 18.242 1.198 18.242 0.897 c
-h
-22.236 -0.735 -0.5 2.984 re
-22.265 3.042 m
-22.265 2.955 22.24 2.881 22.192 2.822 c
-22.152 2.77 22.082 2.749 21.986 2.749 c
-21.898 2.749 21.829 2.77 21.781 2.822 c
-21.74 2.881 21.722 2.947 21.722 3.028 c
-21.722 3.116 21.74 3.19 21.781 3.248 c
-21.829 3.308 21.898 3.337 21.986 3.337 c
-22.082 3.337 22.152 3.308 22.192 3.248 c
-22.24 3.19 22.265 3.119 22.265 3.042 c
-23.541 2.969 m
-23.541 2.249 l
-23.996 2.249 l
-23.996 1.852 l
-23.541 1.852 l
-23.541 0 l
-23.541 -0.118 23.559 -0.206 23.599 -0.264 c
-23.636 -0.324 23.707 -0.353 23.805 -0.353 c
-23.865 -0.353 23.927 -0.345 23.996 -0.324 c
-23.996 -0.735 l
-23.879 -0.771 23.765 -0.794 23.659 -0.794 c
-23.46 -0.794 23.31 -0.728 23.202 -0.588 c
-23.104 -0.452 23.056 -0.258 23.056 0 c
-23.056 1.852 l
-22.6 1.852 l
-22.6 2.249 l
-23.056 2.249 l
-23.056 2.969 l
-h
-24.787 3.19 m
-24.742 2.175 l
-24.375 2.175 l
-24.39 3.499 l
-24.787 3.499 l
-h
-26.613 0.029 m
-26.613 0.135 26.572 0.224 26.495 0.294 c
-26.414 0.371 26.263 0.459 26.04 0.559 c
-25.775 0.665 25.588 0.757 25.481 0.838 c
-25.371 0.915 25.294 1.003 25.246 1.103 c
-25.195 1.198 25.172 1.315 25.172 1.455 c
-25.172 1.698 25.261 1.899 25.437 2.057 c
-25.613 2.223 25.837 2.308 26.113 2.308 c
-26.407 2.308 26.643 2.219 26.819 2.043 c
-26.995 1.874 27.083 1.661 27.083 1.396 c
-26.598 1.396 l
-26.598 1.532 26.547 1.646 26.452 1.735 c
-26.363 1.83 26.249 1.881 26.113 1.881 c
-25.966 1.881 25.852 1.841 25.775 1.764 c
-25.694 1.694 25.658 1.595 25.658 1.469 c
-25.658 1.371 25.687 1.294 25.746 1.234 c
-25.804 1.176 25.944 1.095 26.172 0.999 c
-26.533 0.852 26.778 0.709 26.907 0.573 c
-27.042 0.445 27.113 0.272 27.113 0.058 c
-27.113 -0.199 27.017 -0.405 26.834 -0.559 c
-26.657 -0.717 26.422 -0.794 26.128 -0.794 c
-25.812 -0.794 25.558 -0.706 25.363 -0.53 c
-25.176 -0.345 25.084 -0.114 25.084 0.162 c
-25.569 0.162 l
-25.577 -0.008 25.629 -0.14 25.716 -0.235 c
-25.812 -0.324 25.951 -0.368 26.128 -0.368 c
-26.282 -0.368 26.4 -0.335 26.481 -0.264 c
-26.569 -0.199 26.613 -0.1 26.613 0.029 c
-30.92 0.617 m
-30.92 0.147 30.836 -0.206 30.67 -0.441 c
-30.501 -0.676 30.262 -0.794 29.949 -0.794 c
-29.645 -0.794 29.413 -0.684 29.259 -0.455 c
-29.259 -1.881 l
-28.773 -1.881 l
-28.773 2.249 l
-29.215 2.249 l
-29.244 1.911 l
-29.398 2.175 29.629 2.308 29.935 2.308 c
-30.265 2.308 30.512 2.19 30.67 1.955 c
-30.836 1.727 30.92 1.389 30.92 0.941 c
-h
-30.435 0.897 m
-30.435 1.228 30.379 1.473 30.273 1.631 c
-30.174 1.786 30.012 1.866 29.788 1.866 c
-29.552 1.866 29.376 1.749 29.259 1.514 c
-29.259 -0.029 l
-29.376 -0.258 29.556 -0.368 29.803 -0.368 c
-30.016 -0.368 30.174 -0.291 30.273 -0.133 c
-30.379 0.022 30.435 0.264 30.435 0.588 c
-h
-32.614 1.793 m
-32.544 1.801 32.471 1.808 32.393 1.808 c
-32.137 1.808 31.96 1.668 31.864 1.396 c
-31.864 -0.735 l
-31.379 -0.735 l
-31.379 2.249 l
-31.85 2.249 l
-31.864 1.94 l
-31.989 2.183 32.173 2.308 32.408 2.308 c
-32.486 2.308 32.548 2.293 32.599 2.263 c
-h
-32.831 0.897 m
-32.831 1.326 32.933 1.668 33.139 1.926 c
-33.353 2.179 33.631 2.308 33.978 2.308 c
-34.319 2.308 34.595 2.179 34.801 1.926 c
-35.013 1.679 35.127 1.345 35.138 0.926 c
-35.138 0.617 l
-35.138 0.183 35.028 -0.158 34.815 -0.412 c
-34.609 -0.669 34.33 -0.794 33.978 -0.794 c
-33.631 -0.794 33.36 -0.673 33.154 -0.426 c
-32.948 -0.183 32.838 0.151 32.831 0.573 c
-h
-33.315 0.617 m
-33.315 0.301 33.375 0.058 33.492 -0.118 c
-33.617 -0.287 33.779 -0.368 33.978 -0.368 c
-34.408 -0.368 34.631 -0.059 34.653 0.559 c
-34.653 0.897 l
-34.653 1.198 34.587 1.44 34.462 1.617 c
-34.344 1.793 34.183 1.881 33.978 1.881 c
-33.779 1.881 33.617 1.793 33.492 1.617 c
-33.375 1.44 33.315 1.198 33.315 0.897 c
-h
-37.737 0.617 m
-37.737 0.147 37.652 -0.206 37.487 -0.441 c
-37.317 -0.676 37.076 -0.794 36.752 -0.794 c
-36.436 -0.794 36.201 -0.658 36.046 -0.382 c
-36.017 -0.735 l
-35.576 -0.735 l
-35.576 3.499 l
-36.06 3.499 l
-36.06 1.926 l
-36.215 2.179 36.447 2.308 36.752 2.308 c
-37.076 2.308 37.317 2.19 37.487 1.955 c
-37.652 1.72 37.737 1.371 37.737 0.912 c
-h
-37.251 0.897 m
-37.251 1.249 37.2 1.5 37.105 1.646 c
-37.005 1.793 36.843 1.866 36.619 1.866 c
-36.373 1.866 36.185 1.727 36.06 1.455 c
-36.06 0.044 l
-36.178 -0.22 36.37 -0.353 36.634 -0.353 c
-36.847 -0.353 37.005 -0.279 37.105 -0.133 c
-37.2 0.022 37.251 0.264 37.251 0.588 c
-h
-39.71 -0.735 m
-39.68 -0.669 39.659 -0.559 39.651 -0.412 c
-39.474 -0.669 39.254 -0.794 38.99 -0.794 c
-38.714 -0.794 38.497 -0.721 38.343 -0.573 c
-38.196 -0.419 38.122 -0.202 38.122 0.073 c
-38.122 0.374 38.225 0.617 38.431 0.794 c
-38.637 0.977 38.919 1.073 39.283 1.073 c
-39.636 1.073 l
-39.636 1.396 l
-39.636 1.573 39.596 1.694 39.519 1.764 c
-39.438 1.841 39.32 1.881 39.166 1.881 c
-39.019 1.881 38.894 1.837 38.799 1.749 c
-38.71 1.661 38.666 1.55 38.666 1.426 c
-38.181 1.426 l
-38.181 1.573 38.225 1.712 38.313 1.852 c
-38.402 1.999 38.519 2.109 38.666 2.19 c
-38.82 2.267 38.994 2.308 39.181 2.308 c
-39.493 2.308 39.728 2.227 39.886 2.072 c
-40.041 1.926 40.122 1.705 40.122 1.411 c
-40.122 -0.088 l
-40.129 -0.324 40.166 -0.526 40.224 -0.691 c
-40.224 -0.735 l
-h
-39.063 -0.353 m
-39.181 -0.353 39.291 -0.32 39.401 -0.25 c
-39.507 -0.183 39.584 -0.1 39.636 0 c
-39.636 0.706 l
-39.372 0.706 l
-39.137 0.706 38.949 0.654 38.813 0.559 c
-38.684 0.459 38.622 0.316 38.622 0.133 c
-38.622 -0.037 38.651 -0.158 38.71 -0.235 c
-38.776 -0.316 38.894 -0.353 39.063 -0.353 c
-42.863 0.617 m
-42.863 0.147 42.778 -0.206 42.613 -0.441 c
-42.444 -0.676 42.202 -0.794 41.878 -0.794 c
-41.562 -0.794 41.327 -0.658 41.172 -0.382 c
-41.143 -0.735 l
-40.702 -0.735 l
-40.702 3.499 l
-41.187 3.499 l
-41.187 1.926 l
-41.342 2.179 41.573 2.308 41.878 2.308 c
-42.202 2.308 42.444 2.19 42.613 1.955 c
-42.778 1.72 42.863 1.371 42.863 0.912 c
-h
-42.377 0.897 m
-42.377 1.249 42.327 1.5 42.231 1.646 c
-42.132 1.793 41.97 1.866 41.745 1.866 c
-41.5 1.866 41.312 1.727 41.187 1.455 c
-41.187 0.044 l
-41.305 -0.22 41.496 -0.353 41.76 -0.353 c
-41.974 -0.353 42.132 -0.279 42.231 -0.133 c
-42.327 0.022 42.377 0.264 42.377 0.588 c
-h
-43.833 -0.735 -0.5 4.233 re
-45.317 0.073 m
-45.861 2.249 l
-46.376 2.249 l
-45.406 -1.161 l
-45.336 -1.415 45.233 -1.606 45.097 -1.735 c
-44.957 -1.87 44.806 -1.941 44.642 -1.941 c
-44.571 -1.941 44.487 -1.926 44.392 -1.897 c
-44.392 -1.484 l
-44.494 -1.5 l
-44.631 -1.5 44.737 -1.463 44.818 -1.396 c
-44.906 -1.326 44.972 -1.209 45.024 -1.043 c
-45.112 -0.706 l
-44.245 2.249 l
-44.773 2.249 l
-h
-49.433 -0.735 m
-49.404 -0.669 49.382 -0.559 49.375 -0.412 c
-49.198 -0.669 48.978 -0.794 48.713 -0.794 c
-48.438 -0.794 48.22 -0.721 48.066 -0.573 c
-47.919 -0.419 47.846 -0.202 47.846 0.073 c
-47.846 0.374 47.949 0.617 48.155 0.794 c
-48.361 0.977 48.643 1.073 49.007 1.073 c
-49.36 1.073 l
-49.36 1.396 l
-49.36 1.573 49.319 1.694 49.242 1.764 c
-49.161 1.841 49.044 1.881 48.889 1.881 c
-48.742 1.881 48.617 1.837 48.521 1.749 c
-48.434 1.661 48.39 1.55 48.39 1.426 c
-47.904 1.426 l
-47.904 1.573 47.949 1.712 48.037 1.852 c
-48.125 1.999 48.243 2.109 48.39 2.19 c
-48.544 2.267 48.717 2.308 48.904 2.308 c
-49.217 2.308 49.452 2.227 49.61 2.072 c
-49.764 1.926 49.845 1.705 49.845 1.411 c
-49.845 -0.088 l
-49.853 -0.324 49.889 -0.526 49.948 -0.691 c
-49.948 -0.735 l
-h
-48.787 -0.353 m
-48.904 -0.353 49.014 -0.32 49.124 -0.25 c
-49.231 -0.183 49.308 -0.1 49.36 0 c
-49.36 0.706 l
-49.095 0.706 l
-48.86 0.706 48.673 0.654 48.536 0.559 c
-48.408 0.459 48.346 0.316 48.346 0.133 c
-48.346 -0.037 48.375 -0.158 48.434 -0.235 c
-48.5 -0.316 48.617 -0.353 48.787 -0.353 c
-50.881 2.249 m
-50.896 1.926 l
-51.079 2.179 51.322 2.308 51.616 2.308 c
-52.145 2.308 52.413 1.955 52.425 1.249 c
-52.425 -0.735 l
-51.939 -0.735 l
-51.939 1.22 l
-51.939 1.455 51.899 1.621 51.822 1.72 c
-51.741 1.816 51.623 1.866 51.469 1.866 c
-51.351 1.866 51.241 1.826 51.146 1.749 c
-51.046 1.668 50.969 1.562 50.911 1.426 c
-50.911 -0.735 l
-50.425 -0.735 l
-50.425 2.249 l
-h
-54.078 0.897 m
-54.078 1.326 54.181 1.668 54.387 1.926 c
-54.6 2.179 54.879 2.308 55.225 2.308 c
-55.567 2.308 55.842 2.179 56.047 1.926 c
-56.261 1.679 56.375 1.345 56.386 0.926 c
-56.386 0.617 l
-56.386 0.183 56.276 -0.158 56.062 -0.412 c
-55.856 -0.669 55.577 -0.794 55.225 -0.794 c
-54.879 -0.794 54.607 -0.673 54.401 -0.426 c
-54.196 -0.183 54.086 0.151 54.078 0.573 c
-h
-54.563 0.617 m
-54.563 0.301 54.622 0.058 54.74 -0.118 c
-54.865 -0.287 55.027 -0.368 55.225 -0.368 c
-55.655 -0.368 55.879 -0.059 55.901 0.559 c
-55.901 0.897 l
-55.901 1.198 55.835 1.44 55.71 1.617 c
-55.592 1.793 55.43 1.881 55.225 1.881 c
-55.027 1.881 54.865 1.793 54.74 1.617 c
-54.622 1.44 54.563 1.198 54.563 0.897 c
-h
-58.984 0.617 m
-58.984 0.147 58.9 -0.206 58.734 -0.441 c
-58.565 -0.676 58.322 -0.794 57.999 -0.794 c
-57.683 -0.794 57.448 -0.658 57.294 -0.382 c
-57.264 -0.735 l
-56.823 -0.735 l
-56.823 3.499 l
-57.308 3.499 l
-57.308 1.926 l
-57.462 2.179 57.694 2.308 57.999 2.308 c
-58.322 2.308 58.565 2.19 58.734 1.955 c
-58.9 1.72 58.984 1.371 58.984 0.912 c
-h
-58.499 0.897 m
-58.499 1.249 58.447 1.5 58.352 1.646 c
-58.252 1.793 58.091 1.866 57.867 1.866 c
-57.62 1.866 57.433 1.727 57.308 1.455 c
-57.308 0.044 l
-57.425 -0.22 57.616 -0.353 57.882 -0.353 c
-58.094 -0.353 58.252 -0.279 58.352 -0.133 c
-58.447 0.022 58.499 0.264 58.499 0.588 c
-h
-59.929 2.249 m
-59.929 -1.118 l
-59.918 -1.665 59.696 -1.941 59.267 -1.941 c
-59.168 -1.941 59.079 -1.926 59.002 -1.897 c
-59.002 -1.484 l
-59.054 -1.492 59.112 -1.5 59.193 -1.5 c
-59.27 -1.5 59.33 -1.47 59.37 -1.411 c
-59.418 -1.353 59.443 -1.242 59.443 -1.087 c
-59.443 2.249 l
-h
-59.943 3.042 m
-59.943 2.955 59.918 2.881 59.87 2.822 c
-59.829 2.77 59.76 2.749 59.664 2.749 c
-59.575 2.749 59.505 2.77 59.458 2.822 c
-59.418 2.881 59.399 2.947 59.399 3.028 c
-59.399 3.116 59.418 3.19 59.458 3.248 c
-59.505 3.308 59.575 3.337 59.664 3.337 c
-59.76 3.337 59.829 3.308 59.87 3.248 c
-59.918 3.19 59.943 3.119 59.943 3.042 c
-61.67 -0.794 m
-61.296 -0.794 61.013 -0.688 60.818 -0.47 c
-60.619 -0.246 60.523 0.081 60.523 0.515 c
-60.523 0.881 l
-60.523 1.323 60.616 1.668 60.803 1.926 c
-60.997 2.179 61.273 2.308 61.626 2.308 c
-61.967 2.308 62.221 2.194 62.391 1.97 c
-62.567 1.741 62.659 1.396 62.67 0.926 c
-62.67 0.617 l
-61.009 0.617 l
-61.009 0.544 l
-61.009 0.22 61.067 -0.015 61.185 -0.162 c
-61.302 -0.301 61.472 -0.368 61.699 -0.368 c
-61.847 -0.368 61.971 -0.345 62.082 -0.294 c
-62.189 -0.235 62.291 -0.147 62.391 -0.029 c
-62.64 -0.338 l
-62.435 -0.643 62.111 -0.794 61.67 -0.794 c
-61.626 1.881 m
-61.42 1.881 61.266 1.812 61.171 1.675 c
-61.071 1.536 61.016 1.323 61.009 1.029 c
-62.185 1.029 l
-62.185 1.103 l
-62.162 1.374 62.111 1.573 62.023 1.691 c
-61.935 1.816 61.803 1.881 61.626 1.881 c
-64.11 -0.368 m
-64.276 -0.368 64.408 -0.32 64.507 -0.22 c
-64.602 -0.125 64.658 0.018 64.669 0.206 c
-65.125 0.206 l
-65.113 -0.081 65.011 -0.32 64.816 -0.515 c
-64.629 -0.702 64.394 -0.794 64.11 -0.794 c
-63.746 -0.794 63.467 -0.676 63.272 -0.441 c
-63.074 -0.206 62.979 0.139 62.979 0.603 c
-62.979 0.926 l
-62.979 1.374 63.07 1.72 63.258 1.955 c
-63.453 2.19 63.735 2.308 64.11 2.308 c
-64.411 2.308 64.654 2.209 64.83 2.014 c
-65.014 1.816 65.113 1.55 65.125 1.22 c
-64.669 1.22 l
-64.647 1.444 64.588 1.61 64.492 1.72 c
-64.404 1.826 64.276 1.881 64.11 1.881 c
-63.893 1.881 63.731 1.808 63.625 1.661 c
-63.526 1.521 63.471 1.294 63.463 0.97 c
-63.463 0.588 l
-63.463 0.235 63.511 -0.015 63.611 -0.162 c
-63.717 -0.301 63.883 -0.368 64.11 -0.368 c
-66.15 2.969 m
-66.15 2.249 l
-66.605 2.249 l
-66.605 1.852 l
-66.15 1.852 l
-66.15 0 l
-66.15 -0.118 66.168 -0.206 66.208 -0.264 c
-66.245 -0.324 66.315 -0.353 66.414 -0.353 c
-66.474 -0.353 66.536 -0.345 66.605 -0.324 c
-66.605 -0.735 l
-66.488 -0.771 66.374 -0.794 66.268 -0.794 c
-66.069 -0.794 65.919 -0.728 65.811 -0.588 c
-65.713 -0.452 65.664 -0.258 65.664 0 c
-65.664 1.852 l
-65.209 1.852 l
-65.209 2.249 l
-65.664 2.249 l
-65.664 2.969 l
-h
-f
-Q
-q 1 0 0 1 594.1917 83.3777 cm
-0 0 m
-0 0.478 0.062 0.929 0.191 1.353 c
-0.326 1.783 0.515 2.153 0.75 2.469 c
-0.896 2.664 1.036 2.807 1.176 2.896 c
-1.263 2.558 l
-1.047 2.352 0.867 2.032 0.72 1.602 c
-0.58 1.18 0.507 0.709 0.5 0.191 c
-0.484 -0.029 l
-0.484 -0.676 0.577 -1.249 0.764 -1.749 c
-0.9 -2.12 1.066 -2.41 1.263 -2.616 c
-1.176 -2.925 l
-0.999 -2.815 0.827 -2.631 0.661 -2.367 c
-0.22 -1.708 0 -0.922 0 0 c
-3.197 -1.631 m
-3.167 -1.565 3.145 -1.455 3.138 -1.309 c
-2.961 -1.565 2.741 -1.691 2.477 -1.691 c
-2.201 -1.691 1.984 -1.617 1.83 -1.469 c
-1.683 -1.315 1.61 -1.099 1.61 -0.823 c
-1.61 -0.522 1.712 -0.279 1.918 -0.103 c
-2.123 0.081 2.406 0.177 2.77 0.177 c
-3.123 0.177 l
-3.123 0.5 l
-3.123 0.676 3.083 0.798 3.006 0.867 c
-2.925 0.945 2.807 0.985 2.653 0.985 c
-2.506 0.985 2.381 0.941 2.285 0.852 c
-2.198 0.765 2.153 0.654 2.153 0.53 c
-1.668 0.53 l
-1.668 0.676 1.712 0.816 1.801 0.956 c
-1.888 1.103 2.007 1.213 2.153 1.294 c
-2.308 1.371 2.48 1.411 2.668 1.411 c
-2.98 1.411 3.215 1.33 3.373 1.176 c
-3.528 1.029 3.609 0.808 3.609 0.515 c
-3.609 -0.985 l
-3.615 -1.22 3.653 -1.422 3.711 -1.587 c
-3.711 -1.631 l
-h
-2.55 -1.249 m
-2.668 -1.249 2.778 -1.216 2.888 -1.147 c
-2.994 -1.08 3.071 -0.996 3.123 -0.897 c
-3.123 -0.191 l
-2.859 -0.191 l
-2.624 -0.191 2.437 -0.243 2.3 -0.338 c
-2.171 -0.437 2.109 -0.58 2.109 -0.764 c
-2.109 -0.933 2.138 -1.055 2.198 -1.132 c
-2.263 -1.213 2.381 -1.249 2.55 -1.249 c
-4.644 1.353 m
-4.659 1.029 l
-4.843 1.282 5.086 1.411 5.379 1.411 c
-5.909 1.411 6.177 1.058 6.188 0.353 c
-6.188 -1.631 l
-5.703 -1.631 l
-5.703 0.324 l
-5.703 0.559 5.662 0.724 5.585 0.823 c
-5.504 0.919 5.387 0.97 5.232 0.97 c
-5.115 0.97 5.005 0.929 4.909 0.852 c
-4.81 0.771 4.733 0.665 4.674 0.53 c
-4.674 -1.631 l
-4.189 -1.631 l
-4.189 1.353 l
-h
-7.198 1.353 m
-7.214 1.029 l
-7.397 1.282 7.64 1.411 7.933 1.411 c
-8.463 1.411 8.731 1.058 8.742 0.353 c
-8.742 -1.631 l
-8.257 -1.631 l
-8.257 0.324 l
-8.257 0.559 8.216 0.724 8.139 0.823 c
-8.058 0.919 7.941 0.97 7.786 0.97 c
-7.669 0.97 7.559 0.929 7.463 0.852 c
-7.364 0.771 7.287 0.665 7.228 0.53 c
-7.228 -1.631 l
-6.743 -1.631 l
-6.743 1.353 l
-h
-9.19 0 m
-9.19 0.43 9.294 0.771 9.499 1.029 c
-9.712 1.282 9.992 1.411 10.337 1.411 c
-10.678 1.411 10.954 1.282 11.16 1.029 c
-11.374 0.783 11.487 0.449 11.498 0.029 c
-11.498 -0.279 l
-11.498 -0.713 11.388 -1.055 11.175 -1.309 c
-10.969 -1.565 10.69 -1.691 10.337 -1.691 c
-9.992 -1.691 9.72 -1.569 9.514 -1.323 c
-9.308 -1.08 9.198 -0.746 9.19 -0.324 c
-h
-9.676 -0.279 m
-9.676 -0.595 9.734 -0.838 9.851 -1.014 c
-9.977 -1.183 10.138 -1.264 10.337 -1.264 c
-10.767 -1.264 10.991 -0.956 11.013 -0.338 c
-11.013 0 l
-11.013 0.301 10.946 0.544 10.822 0.721 c
-10.705 0.897 10.543 0.985 10.337 0.985 c
-10.138 0.985 9.977 0.897 9.851 0.721 c
-9.734 0.544 9.676 0.301 9.676 0 c
-h
-12.571 2.072 m
-12.571 1.353 l
-13.026 1.353 l
-13.026 0.956 l
-12.571 0.956 l
-12.571 -0.897 l
-12.571 -1.014 12.59 -1.103 12.629 -1.161 c
-12.667 -1.22 12.737 -1.249 12.835 -1.249 c
-12.895 -1.249 12.957 -1.242 13.026 -1.22 c
-13.026 -1.631 l
-12.909 -1.668 12.795 -1.691 12.689 -1.691 c
-12.49 -1.691 12.34 -1.625 12.233 -1.484 c
-12.134 -1.349 12.086 -1.154 12.086 -0.897 c
-12.086 0.956 l
-11.63 0.956 l
-11.63 1.353 l
-12.086 1.353 l
-12.086 2.072 l
-h
-15.022 -1.631 m
-14.993 -1.565 14.971 -1.455 14.963 -1.309 c
-14.786 -1.565 14.566 -1.691 14.302 -1.691 c
-14.026 -1.691 13.809 -1.617 13.655 -1.469 c
-13.508 -1.315 13.435 -1.099 13.435 -0.823 c
-13.435 -0.522 13.537 -0.279 13.743 -0.103 c
-13.949 0.081 14.232 0.177 14.596 0.177 c
-14.948 0.177 l
-14.948 0.5 l
-14.948 0.676 14.908 0.798 14.831 0.867 c
-14.75 0.945 14.632 0.985 14.478 0.985 c
-14.331 0.985 14.206 0.941 14.111 0.852 c
-14.023 0.765 13.978 0.654 13.978 0.53 c
-13.493 0.53 l
-13.493 0.676 13.537 0.816 13.626 0.956 c
-13.714 1.103 13.832 1.213 13.978 1.294 c
-14.133 1.371 14.306 1.411 14.493 1.411 c
-14.805 1.411 15.041 1.33 15.199 1.176 c
-15.353 1.029 15.434 0.808 15.434 0.515 c
-15.434 -0.985 l
-15.441 -1.22 15.478 -1.422 15.536 -1.587 c
-15.536 -1.631 l
-h
-14.375 -1.249 m
-14.493 -1.249 14.603 -1.216 14.713 -1.147 c
-14.82 -1.08 14.898 -0.996 14.948 -0.897 c
-14.948 -0.191 l
-14.684 -0.191 l
-14.449 -0.191 14.262 -0.243 14.125 -0.338 c
-13.997 -0.437 13.934 -0.58 13.934 -0.764 c
-13.934 -0.933 13.963 -1.055 14.023 -1.132 c
-14.089 -1.213 14.206 -1.249 14.375 -1.249 c
-16.646 2.072 m
-16.646 1.353 l
-17.102 1.353 l
-17.102 0.956 l
-16.646 0.956 l
-16.646 -0.897 l
-16.646 -1.014 16.665 -1.103 16.705 -1.161 c
-16.742 -1.22 16.812 -1.249 16.911 -1.249 c
-16.97 -1.249 17.032 -1.242 17.102 -1.22 c
-17.102 -1.631 l
-16.984 -1.668 16.87 -1.691 16.764 -1.691 c
-16.565 -1.691 16.415 -1.625 16.309 -1.484 c
-16.209 -1.349 16.161 -1.154 16.161 -0.897 c
-16.161 0.956 l
-15.706 0.956 l
-15.706 1.353 l
-16.161 1.353 l
-16.161 2.072 l
-h
-18.624 -1.691 m
-18.248 -1.691 17.965 -1.584 17.771 -1.367 c
-17.572 -1.143 17.477 -0.816 17.477 -0.382 c
-17.477 -0.015 l
-17.477 0.426 17.568 0.771 17.756 1.029 c
-17.951 1.282 18.227 1.411 18.58 1.411 c
-18.921 1.411 19.175 1.297 19.343 1.073 c
-19.52 0.845 19.612 0.5 19.623 0.029 c
-19.623 -0.279 l
-17.962 -0.279 l
-17.962 -0.353 l
-17.962 -0.676 18.021 -0.912 18.138 -1.058 c
-18.256 -1.198 18.425 -1.264 18.653 -1.264 c
-18.8 -1.264 18.925 -1.242 19.035 -1.191 c
-19.141 -1.132 19.245 -1.043 19.343 -0.926 c
-19.594 -1.234 l
-19.388 -1.54 19.064 -1.691 18.624 -1.691 c
-18.58 0.985 m
-18.374 0.985 18.219 0.915 18.123 0.779 c
-18.025 0.64 17.969 0.426 17.962 0.133 c
-19.137 0.133 l
-19.137 0.206 l
-19.116 0.478 19.064 0.676 18.977 0.794 c
-18.888 0.919 18.755 0.985 18.58 0.985 c
-19.931 0 m
-19.931 0.459 20.012 0.808 20.182 1.043 c
-20.358 1.286 20.608 1.411 20.931 1.411 c
-21.214 1.411 21.435 1.294 21.593 1.058 c
-21.593 2.602 l
-22.077 2.602 l
-22.077 -1.631 l
-21.637 -1.631 l
-21.607 -1.309 l
-21.449 -1.565 21.225 -1.691 20.931 -1.691 c
-20.615 -1.691 20.373 -1.573 20.196 -1.338 c
-20.02 -1.095 19.931 -0.75 19.931 -0.309 c
-h
-20.417 -0.279 m
-20.417 -0.613 20.465 -0.86 20.564 -1.014 c
-20.66 -1.172 20.821 -1.249 21.049 -1.249 c
-21.292 -1.249 21.475 -1.132 21.593 -0.897 c
-21.593 0.617 l
-21.464 0.852 21.284 0.97 21.049 0.97 c
-20.821 0.97 20.66 0.889 20.564 0.735 c
-20.465 0.577 20.417 0.338 20.417 0.015 c
-h
-24.485 2.072 m
-24.485 1.353 l
-24.94 1.353 l
-24.94 0.956 l
-24.485 0.956 l
-24.485 -0.897 l
-24.485 -1.014 24.503 -1.103 24.544 -1.161 c
-24.581 -1.22 24.65 -1.249 24.749 -1.249 c
-24.808 -1.249 24.87 -1.242 24.94 -1.22 c
-24.94 -1.631 l
-24.822 -1.668 24.708 -1.691 24.602 -1.691 c
-24.404 -1.691 24.253 -1.625 24.147 -1.484 c
-24.047 -1.349 23.999 -1.154 23.999 -0.897 c
-23.999 0.956 l
-23.544 0.956 l
-23.544 1.353 l
-23.999 1.353 l
-23.999 2.072 l
-h
-26.936 -1.631 m
-26.906 -1.565 26.884 -1.455 26.877 -1.309 c
-26.701 -1.565 26.48 -1.691 26.216 -1.691 c
-25.94 -1.691 25.723 -1.617 25.568 -1.469 c
-25.422 -1.315 25.348 -1.099 25.348 -0.823 c
-25.348 -0.522 25.451 -0.279 25.657 -0.103 c
-25.863 0.081 26.146 0.177 26.509 0.177 c
-26.862 0.177 l
-26.862 0.5 l
-26.862 0.676 26.821 0.798 26.744 0.867 c
-26.663 0.945 26.546 0.985 26.391 0.985 c
-26.245 0.985 26.12 0.941 26.025 0.852 c
-25.936 0.765 25.892 0.654 25.892 0.53 c
-25.407 0.53 l
-25.407 0.676 25.451 0.816 25.539 0.956 c
-25.628 1.103 25.745 1.213 25.892 1.294 c
-26.046 1.371 26.219 1.411 26.407 1.411 c
-26.719 1.411 26.954 1.33 27.112 1.176 c
-27.266 1.029 27.347 0.808 27.347 0.515 c
-27.347 -0.985 l
-27.355 -1.22 27.391 -1.422 27.45 -1.587 c
-27.45 -1.631 l
-h
-26.289 -1.249 m
-26.407 -1.249 26.517 -1.216 26.627 -1.147 c
-26.734 -1.08 26.811 -0.996 26.862 -0.897 c
-26.862 -0.191 l
-26.598 -0.191 l
-26.362 -0.191 26.175 -0.243 26.039 -0.338 c
-25.911 -0.437 25.848 -0.58 25.848 -0.764 c
-25.848 -0.933 25.877 -1.055 25.936 -1.132 c
-26.002 -1.213 26.12 -1.249 26.289 -1.249 c
-27.825 0 m
-27.825 0.459 27.906 0.808 28.074 1.043 c
-28.251 1.286 28.502 1.411 28.824 1.411 c
-29.126 1.411 29.358 1.278 29.516 1.014 c
-29.545 1.353 l
-29.986 1.353 l
-29.986 -1.661 l
-29.986 -2.032 29.886 -2.315 29.692 -2.514 c
-29.504 -2.708 29.244 -2.807 28.913 -2.807 c
-28.766 -2.807 28.597 -2.767 28.413 -2.69 c
-28.226 -2.62 28.09 -2.532 28.001 -2.425 c
-28.192 -2.088 l
-28.398 -2.293 28.622 -2.396 28.868 -2.396 c
-29.269 -2.396 29.475 -2.168 29.486 -1.72 c
-29.486 -1.338 l
-29.328 -1.573 29.107 -1.691 28.824 -1.691 c
-28.508 -1.691 28.266 -1.573 28.09 -1.338 c
-27.92 -1.103 27.833 -0.771 27.825 -0.338 c
-h
-28.31 -0.279 m
-28.31 -0.613 28.358 -0.86 28.457 -1.014 c
-28.552 -1.172 28.714 -1.249 28.942 -1.249 c
-29.185 -1.249 29.368 -1.128 29.486 -0.881 c
-29.486 0.603 l
-29.368 0.845 29.192 0.97 28.957 0.97 c
-28.729 0.97 28.567 0.889 28.471 0.735 c
-28.373 0.577 28.317 0.338 28.31 0.015 c
-h
-31.566 -0.029 m
-31.566 -0.852 31.382 -1.58 31.022 -2.205 c
-30.816 -2.547 30.611 -2.786 30.405 -2.925 c
-30.302 -2.616 l
-30.537 -2.389 30.721 -2.051 30.86 -1.602 c
-31.008 -1.143 31.081 -0.643 31.081 -0.103 c
-31.081 0 l
-31.081 0.694 30.967 1.323 30.742 1.881 c
-30.615 2.176 30.467 2.411 30.302 2.587 c
-30.405 2.896 l
-30.599 2.756 30.794 2.535 30.993 2.234 c
-31.375 1.588 31.566 0.831 31.566 -0.029 c
-f
-Q
-0.567 w 1 j 1 J
-q 1 0 0 1 627.4703 96.4198 cm
-0 0 m
-5.747 3.34 l
-S
-Q
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 631.3726 98.6865 cm
-0 0 m
--0.386 -1.458 l
-2.308 1.341 l
--1.455 0.387 l
-h
-f*
-Q
-0.906 0.785 0.617 0.969 K
-0.283 w 0 j 0 J
-q 1 0 0 1 631.3727 98.6865 cm
-0 0 m
--0.386 -1.458 l
-2.308 1.341 l
--1.455 0.387 l
-0 0 l
-h
-S
-Q
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-0 G
-/GS2 gs
-0 TL/Fm34 Do
-Q
-0 0 0 0 k
-q 1 0 0 1 121.1352 111.1992 cm
-0 0 m
--1.323 0 l
--1.808 -1.043 l
--2.323 -1.043 l
--0.382 2.969 l
-0.044 2.969 l
-0.603 -1.043 l
-0.118 -1.043 l
-h
--1.117 0.441 m
--0.058 0.441 l
--0.264 2.263 l
-h
-2.903 1.941 m
-2.845 1.617 l
-3.057 1.871 3.304 1.999 3.58 1.999 c
-3.763 1.989 3.91 1.918 4.021 1.793 c
-4.138 1.675 4.2 1.503 4.212 1.279 c
-4.219 1.151 4.219 1.029 4.212 0.912 c
-3.888 -1.043 l
-3.403 -1.043 l
-3.741 0.927 l
-3.755 1.132 l
-3.755 1.415 3.638 1.562 3.403 1.573 c
-3.215 1.573 3.04 1.463 2.874 1.249 c
-2.786 1.132 l
-2.419 -1.043 l
-1.933 -1.043 l
-2.462 1.941 l
-h
-6.81 1.985 m
-7.082 1.985 7.287 1.871 7.427 1.646 c
-7.721 3.19 l
-8.191 3.19 l
-7.456 -1.043 l
-7.03 -1.043 l
-7.074 -0.72 l
-6.876 -0.985 6.641 -1.109 6.369 -1.103 c
-6.122 -1.091 5.931 -0.995 5.795 -0.808 c
-5.656 -0.625 5.59 -0.353 5.59 0 c
-5.59 0.166 5.608 0.382 5.648 0.647 c
-5.696 0.919 5.766 1.151 5.854 1.338 c
-6.06 1.786 6.376 2.003 6.81 1.985 c
-6.06 -0.118 m
-6.067 -0.481 6.221 -0.669 6.516 -0.676 c
-6.622 -0.676 6.725 -0.654 6.824 -0.602 c
-6.92 -0.544 7.015 -0.448 7.104 -0.309 c
-7.368 1.205 l
-7.28 1.43 7.125 1.548 6.913 1.558 c
-6.471 1.588 6.207 1.268 6.119 0.603 c
-6.078 0.279 6.06 0.037 6.06 -0.118 c
-12.48 2.66 m
-12.347 1.941 l
-12.788 1.941 l
-12.715 1.544 l
-12.274 1.544 l
-11.965 -0.309 l
-11.965 -0.426 l
-11.954 -0.584 12.009 -0.661 12.127 -0.661 c
-12.175 -0.661 12.245 -0.654 12.333 -0.632 c
-12.289 -1.043 l
-12.179 -1.08 12.075 -1.095 11.98 -1.087 c
-11.811 -1.087 11.686 -1.022 11.597 -0.881 c
-11.51 -0.746 11.48 -0.555 11.51 -0.309 c
-11.803 1.544 l
-11.362 1.544 l
-11.436 1.941 l
-11.877 1.941 l
-11.994 2.66 l
-h
-14.637 1.632 m
-14.85 1.874 15.092 1.992 15.357 1.985 c
-15.551 1.985 15.703 1.918 15.813 1.793 c
-15.919 1.675 15.978 1.503 15.989 1.279 c
-15.996 1.151 15.996 1.029 15.989 0.912 c
-15.666 -1.043 l
-15.181 -1.043 l
-15.518 0.927 l
-15.533 1.132 l
-15.533 1.415 15.416 1.562 15.181 1.573 c
-14.993 1.573 14.817 1.463 14.651 1.249 c
-14.564 1.132 l
-14.196 -1.043 l
-13.71 -1.043 l
-14.446 3.19 l
-14.93 3.19 l
-h
-17.742 -1.043 m
-17.272 -1.043 l
-17.786 1.941 l
-18.271 1.941 l
-h
-17.903 2.734 m
-17.903 2.812 17.926 2.881 17.978 2.94 c
-18.025 2.999 18.088 3.028 18.168 3.028 c
-18.246 3.028 18.308 2.999 18.359 2.94 c
-18.418 2.889 18.44 2.822 18.433 2.734 c
-18.433 2.654 18.407 2.587 18.359 2.529 c
-18.308 2.469 18.246 2.44 18.168 2.44 c
-18.08 2.429 18.01 2.455 17.962 2.514 c
-17.911 2.573 17.893 2.646 17.903 2.734 c
-20.939 -0.264 m
-20.968 -0.088 20.869 0.059 20.645 0.177 c
-20.278 0.368 l
-20.09 0.474 19.958 0.588 19.881 0.706 c
-19.8 0.823 19.767 0.963 19.778 1.132 c
-19.785 1.374 19.884 1.58 20.072 1.75 c
-20.266 1.914 20.505 1.999 20.792 1.999 c
-21.057 1.989 21.263 1.9 21.409 1.735 c
-21.564 1.565 21.633 1.353 21.615 1.087 c
-21.145 1.087 l
-21.153 1.235 21.119 1.353 21.042 1.44 c
-20.972 1.529 20.881 1.573 20.763 1.573 c
-20.615 1.573 20.498 1.532 20.41 1.455 c
-20.322 1.374 20.266 1.272 20.248 1.147 c
-20.218 1 20.285 0.875 20.454 0.779 c
-20.924 0.544 l
-21.266 0.345 21.428 0.092 21.409 -0.22 c
-21.388 -0.496 21.28 -0.716 21.086 -0.881 c
-20.887 -1.04 20.648 -1.109 20.366 -1.103 c
-20.09 -1.091 19.866 -1.007 19.69 -0.837 c
-19.52 -0.661 19.443 -0.434 19.454 -0.147 c
-19.94 -0.147 l
-19.929 -0.324 19.962 -0.455 20.042 -0.544 c
-20.131 -0.632 20.241 -0.676 20.38 -0.676 c
-20.534 -0.676 20.663 -0.639 20.763 -0.559 c
-20.858 -0.481 20.917 -0.382 20.939 -0.264 c
-25.423 -1.043 m
-24.952 -1.043 l
-25.467 1.941 l
-25.951 1.941 l
-h
-25.584 2.734 m
-25.584 2.812 25.606 2.881 25.658 2.94 c
-25.705 2.999 25.768 3.028 25.849 3.028 c
-25.926 3.028 25.988 2.999 26.04 2.94 c
-26.098 2.889 26.121 2.822 26.113 2.734 c
-26.113 2.654 26.088 2.587 26.04 2.529 c
-25.988 2.469 25.926 2.44 25.849 2.44 c
-25.76 2.429 25.691 2.455 25.643 2.514 c
-25.591 2.573 25.573 2.646 25.584 2.734 c
-28.619 -0.264 m
-28.648 -0.088 28.55 0.059 28.326 0.177 c
-27.958 0.368 l
-27.771 0.474 27.638 0.588 27.561 0.706 c
-27.48 0.823 27.447 0.963 27.458 1.132 c
-27.466 1.374 27.565 1.58 27.752 1.75 c
-27.947 1.914 28.186 1.999 28.472 1.999 c
-28.737 1.989 28.943 1.9 29.09 1.735 c
-29.244 1.565 29.313 1.353 29.296 1.087 c
-28.825 1.087 l
-28.833 1.235 28.799 1.353 28.722 1.44 c
-28.652 1.529 28.561 1.573 28.443 1.573 c
-28.296 1.573 28.178 1.532 28.09 1.455 c
-28.002 1.374 27.947 1.272 27.929 1.147 c
-27.899 1 27.965 0.875 28.134 0.779 c
-28.604 0.544 l
-28.947 0.345 29.108 0.092 29.09 -0.22 c
-29.068 -0.496 28.961 -0.716 28.766 -0.881 c
-28.567 -1.04 28.328 -1.109 28.046 -1.103 c
-27.771 -1.091 27.546 -1.007 27.37 -0.837 c
-27.201 -0.661 27.123 -0.434 27.135 -0.147 c
-27.62 -0.147 l
-27.609 -0.324 27.642 -0.455 27.723 -0.544 c
-27.811 -0.632 27.921 -0.676 28.06 -0.676 c
-28.215 -0.676 28.344 -0.639 28.443 -0.559 c
-28.538 -0.481 28.598 -0.382 28.619 -0.264 c
-33.87 2.66 m
-33.738 1.941 l
-34.179 1.941 l
-34.106 1.544 l
-33.664 1.544 l
-33.356 -0.309 l
-33.356 -0.426 l
-33.345 -0.584 33.4 -0.661 33.518 -0.661 c
-33.566 -0.661 33.635 -0.654 33.724 -0.632 c
-33.679 -1.043 l
-33.569 -1.08 33.466 -1.095 33.371 -1.087 c
-33.202 -1.087 33.076 -1.022 32.989 -0.881 c
-32.9 -0.746 32.871 -0.555 32.9 -0.309 c
-33.194 1.544 l
-32.754 1.544 l
-32.827 1.941 l
-33.267 1.941 l
-33.386 2.66 l
-h
-36.027 1.632 m
-36.241 1.874 36.483 1.992 36.748 1.985 c
-36.943 1.985 37.093 1.918 37.203 1.793 c
-37.31 1.675 37.369 1.503 37.38 1.279 c
-37.387 1.151 37.387 1.029 37.38 0.912 c
-37.057 -1.043 l
-36.571 -1.043 l
-36.91 0.927 l
-36.924 1.132 l
-36.924 1.415 36.806 1.562 36.571 1.573 c
-36.384 1.573 36.208 1.463 36.043 1.249 c
-35.954 1.132 l
-35.586 -1.043 l
-35.102 -1.043 l
-35.837 3.19 l
-36.322 3.19 l
-h
-39.732 -1.103 m
-39.397 -1.091 39.147 -0.97 38.982 -0.735 c
-38.813 -0.5 38.755 -0.176 38.805 0.235 c
-38.835 0.53 l
-38.894 0.989 39.033 1.353 39.262 1.617 c
-39.486 1.881 39.769 2.007 40.114 1.999 c
-40.397 1.989 40.606 1.889 40.746 1.706 c
-40.893 1.518 40.966 1.253 40.966 0.912 c
-40.937 0.588 l
-40.893 0.309 l
-39.291 0.309 l
-39.268 0.14 39.262 0.008 39.262 -0.088 c
-39.262 -0.276 39.305 -0.422 39.393 -0.529 c
-39.482 -0.628 39.607 -0.676 39.775 -0.676 c
-39.893 -0.687 40.011 -0.669 40.128 -0.617 c
-40.246 -0.559 40.363 -0.47 40.481 -0.353 c
-40.716 -0.661 l
-40.599 -0.808 40.452 -0.922 40.276 -0.999 c
-40.099 -1.066 39.916 -1.103 39.732 -1.103 c
-40.085 1.573 m
-39.761 1.592 39.534 1.397 39.409 0.985 c
-39.335 0.721 l
-40.481 0.721 l
-40.481 0.794 l
-40.5 0.871 40.511 0.96 40.511 1.058 c
-40.5 1.389 40.357 1.562 40.085 1.573 c
-45.398 -1.103 m
-45.111 -1.091 44.899 -0.977 44.752 -0.75 c
-44.487 -2.19 l
-44.016 -2.19 l
-44.737 1.941 l
-45.163 1.941 l
-45.105 1.602 l
-45.31 1.867 45.549 1.999 45.824 1.999 c
-46.089 1.989 46.283 1.885 46.412 1.691 c
-46.549 1.503 46.611 1.239 46.603 0.897 c
-46.593 0.738 46.567 0.53 46.53 0.264 c
-46.501 0.008 46.449 -0.206 46.383 -0.382 c
-46.177 -0.874 45.847 -1.109 45.398 -1.103 c
-46.133 1.014 m
-46.104 1.374 45.946 1.558 45.663 1.558 c
-45.446 1.565 45.251 1.455 45.075 1.22 c
-44.81 -0.338 l
-44.899 -0.555 45.049 -0.673 45.266 -0.691 c
-45.479 -0.702 45.655 -0.628 45.795 -0.47 c
-45.931 -0.305 46.019 -0.051 46.06 0.294 c
-46.108 0.636 46.133 0.875 46.133 1.014 c
-49.315 -1.043 m
-49.304 -0.985 49.3 -0.933 49.3 -0.881 c
-49.315 -0.72 l
-49.109 -0.977 48.882 -1.103 48.639 -1.103 c
-48.394 -1.103 48.203 -1.025 48.066 -0.867 c
-47.937 -0.713 47.883 -0.507 47.904 -0.249 c
-47.923 0.052 48.051 0.298 48.286 0.485 c
-48.521 0.669 48.823 0.765 49.198 0.765 c
-49.536 0.765 l
-49.58 1.087 l
-49.61 1.411 49.485 1.573 49.213 1.573 c
-49.065 1.573 48.941 1.529 48.845 1.44 c
-48.746 1.36 48.687 1.253 48.669 1.118 c
-48.199 1.118 l
-48.217 1.36 48.33 1.565 48.536 1.735 c
-48.743 1.911 48.981 1.999 49.257 1.999 c
-49.521 1.989 49.727 1.904 49.874 1.75 c
-50.021 1.592 50.08 1.367 50.05 1.073 c
-49.815 -0.397 l
-49.793 -0.496 49.786 -0.595 49.786 -0.691 c
-49.801 -0.999 l
-49.801 -1.043 l
-h
-48.727 -0.661 m
-48.97 -0.661 49.176 -0.544 49.345 -0.309 c
-49.477 0.397 l
-49.257 0.412 l
-49.069 0.412 48.904 0.375 48.757 0.309 c
-48.61 0.239 48.507 0.14 48.448 0.015 c
-48.39 -0.103 48.367 -0.235 48.39 -0.382 c
-48.408 -0.569 48.521 -0.661 48.727 -0.661 c
-52.847 -0.264 m
-52.876 -0.088 52.777 0.059 52.553 0.177 c
-52.186 0.368 l
-51.998 0.474 51.866 0.588 51.789 0.706 c
-51.708 0.823 51.675 0.963 51.686 1.132 c
-51.693 1.374 51.792 1.58 51.98 1.75 c
-52.174 1.914 52.413 1.999 52.7 1.999 c
-52.965 1.989 53.171 1.9 53.317 1.735 c
-53.472 1.565 53.541 1.353 53.523 1.087 c
-53.053 1.087 l
-53.061 1.235 53.027 1.353 52.95 1.44 c
-52.88 1.529 52.788 1.573 52.671 1.573 c
-52.523 1.573 52.406 1.532 52.317 1.455 c
-52.23 1.374 52.174 1.272 52.156 1.147 c
-52.126 1 52.193 0.875 52.362 0.779 c
-52.832 0.544 l
-53.174 0.345 53.336 0.092 53.317 -0.22 c
-53.296 -0.496 53.188 -0.716 52.994 -0.881 c
-52.795 -1.04 52.556 -1.109 52.274 -1.103 c
-51.998 -1.091 51.774 -1.007 51.598 -0.837 c
-51.428 -0.661 51.351 -0.434 51.362 -0.147 c
-51.847 -0.147 l
-51.837 -0.324 51.87 -0.455 51.95 -0.544 c
-52.039 -0.632 52.149 -0.676 52.288 -0.676 c
-52.442 -0.676 52.571 -0.639 52.671 -0.559 c
-52.766 -0.481 52.825 -0.382 52.847 -0.264 c
-55.941 2.66 m
-55.808 1.941 l
-56.25 1.941 l
-56.176 1.544 l
-55.735 1.544 l
-55.426 -0.309 l
-55.426 -0.426 l
-55.415 -0.584 55.471 -0.661 55.588 -0.661 c
-55.636 -0.661 55.706 -0.654 55.794 -0.632 c
-55.75 -1.043 l
-55.64 -1.08 55.537 -1.095 55.442 -1.087 c
-55.272 -1.087 55.147 -1.022 55.06 -0.881 c
-54.971 -0.746 54.942 -0.555 54.971 -0.309 c
-55.265 1.544 l
-54.824 1.544 l
-54.898 1.941 l
-55.338 1.941 l
-55.456 2.66 l
-h
-57.569 -0.47 m
-57.657 -0.463 57.73 -0.484 57.79 -0.544 c
-57.848 -0.602 57.878 -0.676 57.878 -0.764 c
-57.878 -0.852 57.848 -0.926 57.79 -0.985 c
-57.73 -1.043 57.657 -1.072 57.569 -1.072 c
-57.481 -1.08 57.408 -1.062 57.348 -1.014 c
-57.29 -0.955 57.26 -0.881 57.26 -0.794 c
-57.26 -0.698 57.29 -0.617 57.348 -0.559 c
-57.408 -0.5 57.481 -0.47 57.569 -0.47 c
-64.283 -1.043 m
-63.798 -1.043 l
-64.121 0.809 l
-62.563 0.809 l
-62.239 -1.043 l
-61.74 -1.043 l
-62.43 2.969 l
-62.931 2.969 l
-62.622 1.249 l
-64.195 1.249 l
-64.489 2.969 l
-64.988 2.969 l
-h
-67.043 -1.103 m
-66.708 -1.091 66.459 -0.97 66.293 -0.735 c
-66.124 -0.5 66.065 -0.176 66.116 0.235 c
-66.146 0.53 l
-66.205 0.989 66.345 1.353 66.572 1.617 c
-66.796 1.881 67.079 2.007 67.425 1.999 c
-67.708 1.989 67.918 1.889 68.057 1.706 c
-68.204 1.518 68.277 1.253 68.277 0.912 c
-68.248 0.588 l
-68.204 0.309 l
-66.602 0.309 l
-66.58 0.14 66.572 0.008 66.572 -0.088 c
-66.572 -0.276 66.617 -0.422 66.704 -0.529 c
-66.792 -0.628 66.918 -0.676 67.087 -0.676 c
-67.205 -0.687 67.322 -0.669 67.44 -0.617 c
-67.557 -0.559 67.675 -0.47 67.792 -0.353 c
-68.028 -0.661 l
-67.91 -0.808 67.762 -0.922 67.586 -0.999 c
-67.41 -1.066 67.226 -1.103 67.043 -1.103 c
-67.396 1.573 m
-67.072 1.592 66.844 1.397 66.719 0.985 c
-66.646 0.721 l
-67.792 0.721 l
-67.792 0.794 l
-67.81 0.871 67.822 0.96 67.822 1.058 c
-67.81 1.389 67.667 1.562 67.396 1.573 c
-71.022 1.484 m
-70.941 1.503 70.868 1.515 70.802 1.515 c
-70.567 1.515 70.368 1.371 70.214 1.087 c
-69.846 -1.043 l
-69.362 -1.043 l
-69.89 1.941 l
-70.347 1.941 l
-70.272 1.632 l
-70.449 1.885 70.648 2.007 70.875 1.999 c
-70.912 1.999 70.978 1.985 71.066 1.955 c
-h
-72.988 -1.103 m
-72.654 -1.091 72.404 -0.97 72.238 -0.735 c
-72.07 -0.5 72.011 -0.176 72.063 0.235 c
-72.092 0.53 l
-72.151 0.989 72.29 1.353 72.518 1.617 c
-72.742 1.881 73.025 2.007 73.37 1.999 c
-73.653 1.989 73.863 1.889 74.002 1.706 c
-74.15 1.518 74.223 1.253 74.223 0.912 c
-74.193 0.588 l
-74.15 0.309 l
-72.547 0.309 l
-72.525 0.14 72.518 0.008 72.518 -0.088 c
-72.518 -0.276 72.562 -0.422 72.65 -0.529 c
-72.739 -0.628 72.863 -0.676 73.032 -0.676 c
-73.15 -0.687 73.268 -0.669 73.385 -0.617 c
-73.503 -0.559 73.62 -0.47 73.738 -0.353 c
-73.973 -0.661 l
-73.856 -0.808 73.709 -0.922 73.532 -0.999 c
-73.356 -1.066 73.172 -1.103 72.988 -1.103 c
-73.341 1.573 m
-73.017 1.592 72.79 1.397 72.665 0.985 c
-72.591 0.721 l
-73.738 0.721 l
-73.738 0.794 l
-73.757 0.871 73.767 0.96 73.767 1.058 c
-73.757 1.389 73.613 1.562 73.341 1.573 c
-79.772 -0.176 m
-80.58 1.941 l
-81.065 1.941 l
-79.831 -1.043 l
-79.463 -1.043 l
-79.272 1.087 l
-78.346 -1.043 l
-77.964 -1.043 l
-77.773 1.941 l
-78.228 1.941 l
-78.317 -0.118 l
-79.213 1.941 l
-79.596 1.941 l
-h
-83.402 -1.043 m
-83.392 -0.985 83.388 -0.933 83.388 -0.881 c
-83.402 -0.72 l
-83.197 -0.977 82.969 -1.103 82.727 -1.103 c
-82.48 -1.103 82.289 -1.025 82.153 -0.867 c
-82.025 -0.713 81.969 -0.507 81.991 -0.249 c
-82.01 0.052 82.139 0.298 82.374 0.485 c
-82.609 0.669 82.91 0.765 83.285 0.765 c
-83.623 0.765 l
-83.667 1.087 l
-83.697 1.411 83.572 1.573 83.3 1.573 c
-83.153 1.573 83.028 1.529 82.932 1.44 c
-82.833 1.36 82.775 1.253 82.756 1.118 c
-82.286 1.118 l
-82.304 1.36 82.418 1.565 82.623 1.735 c
-82.829 1.911 83.068 1.999 83.344 1.999 c
-83.608 1.989 83.814 1.904 83.961 1.75 c
-84.108 1.592 84.167 1.367 84.138 1.073 c
-83.903 -0.397 l
-83.88 -0.496 83.873 -0.595 83.873 -0.691 c
-83.888 -0.999 l
-83.888 -1.043 l
-h
-82.814 -0.661 m
-83.057 -0.661 83.263 -0.544 83.432 -0.309 c
-83.564 0.397 l
-83.344 0.412 l
-83.157 0.412 82.991 0.375 82.844 0.309 c
-82.697 0.239 82.594 0.14 82.536 0.015 c
-82.477 -0.103 82.455 -0.235 82.477 -0.382 c
-82.495 -0.569 82.609 -0.661 82.814 -0.661 c
-86.938 -0.264 m
-86.968 -0.088 86.868 0.059 86.644 0.177 c
-86.276 0.368 l
-86.089 0.474 85.956 0.588 85.879 0.706 c
-85.798 0.823 85.765 0.963 85.777 1.132 c
-85.784 1.374 85.883 1.58 86.07 1.75 c
-86.265 1.914 86.504 1.999 86.791 1.999 c
-87.055 1.989 87.261 1.9 87.408 1.735 c
-87.562 1.565 87.633 1.353 87.614 1.087 c
-87.144 1.087 l
-87.151 1.235 87.118 1.353 87.041 1.44 c
-86.97 1.529 86.879 1.573 86.762 1.573 c
-86.615 1.573 86.497 1.532 86.409 1.455 c
-86.32 1.374 86.265 1.272 86.247 1.147 c
-86.218 1 86.284 0.875 86.453 0.779 c
-86.923 0.544 l
-87.265 0.345 87.427 0.092 87.408 -0.22 c
-87.386 -0.496 87.28 -0.716 87.085 -0.881 c
-86.887 -1.04 86.648 -1.109 86.365 -1.103 c
-86.089 -1.091 85.865 -1.007 85.688 -0.837 c
-85.519 -0.661 85.442 -0.434 85.453 -0.147 c
-85.938 -0.147 l
-85.927 -0.324 85.96 -0.455 86.041 -0.544 c
-86.129 -0.632 86.239 -0.676 86.38 -0.676 c
-86.534 -0.676 86.662 -0.639 86.762 -0.559 c
-86.857 -0.481 86.916 -0.382 86.938 -0.264 c
-91.994 -0.691 m
-92.148 -0.691 92.277 -0.643 92.377 -0.544 c
-92.483 -0.437 92.56 -0.29 92.612 -0.103 c
-93.052 -0.103 l
-93.012 -0.397 92.89 -0.643 92.685 -0.837 c
-92.479 -1.025 92.237 -1.109 91.965 -1.103 c
-91.7 -1.091 91.487 -1.014 91.333 -0.867 c
-91.175 -0.713 91.083 -0.496 91.053 -0.22 c
-91.032 -0.055 91.032 0.11 91.053 0.279 c
-91.097 0.574 l
-91.157 1.044 91.292 1.401 91.509 1.646 c
-91.733 1.889 92.027 2.007 92.391 1.999 c
-92.663 1.989 92.876 1.885 93.023 1.691 c
-93.177 1.492 93.251 1.235 93.243 0.912 c
-92.788 0.912 l
-92.795 1.341 92.655 1.562 92.362 1.573 c
-91.928 1.592 91.671 1.286 91.583 0.661 c
-91.524 0.268 91.498 0 91.509 -0.147 c
-91.527 -0.5 91.689 -0.683 91.994 -0.691 c
-95.24 1.632 m
-95.452 1.874 95.695 1.992 95.959 1.985 c
-96.154 1.985 96.304 1.918 96.415 1.793 c
-96.522 1.675 96.58 1.503 96.591 1.279 c
-96.599 1.151 96.599 1.029 96.591 0.912 c
-96.268 -1.043 l
-95.783 -1.043 l
-96.121 0.927 l
-96.136 1.132 l
-96.136 1.415 96.018 1.562 95.783 1.573 c
-95.595 1.573 95.419 1.463 95.254 1.249 c
-95.165 1.132 l
-94.798 -1.043 l
-94.313 -1.043 l
-95.048 3.19 l
-95.533 3.19 l
-h
-99.354 -1.043 m
-99.344 -0.985 99.34 -0.933 99.34 -0.881 c
-99.354 -0.72 l
-99.149 -0.977 98.922 -1.103 98.679 -1.103 c
-98.432 -1.103 98.241 -1.025 98.105 -0.867 c
-97.977 -0.713 97.922 -0.507 97.943 -0.249 c
-97.962 0.052 98.091 0.298 98.326 0.485 c
-98.561 0.669 98.862 0.765 99.238 0.765 c
-99.575 0.765 l
-99.62 1.087 l
-99.649 1.411 99.524 1.573 99.252 1.573 c
-99.105 1.573 98.98 1.529 98.884 1.44 c
-98.785 1.36 98.727 1.253 98.708 1.118 c
-98.238 1.118 l
-98.256 1.36 98.37 1.565 98.575 1.735 c
-98.781 1.911 99.02 1.999 99.296 1.999 c
-99.56 1.989 99.766 1.904 99.913 1.75 c
-100.06 1.592 100.119 1.367 100.09 1.073 c
-99.855 -0.397 l
-99.832 -0.496 99.825 -0.595 99.825 -0.691 c
-99.84 -0.999 l
-99.84 -1.043 l
-h
-98.767 -0.661 m
-99.009 -0.661 99.215 -0.544 99.384 -0.309 c
-99.516 0.397 l
-99.296 0.412 l
-99.109 0.412 98.943 0.375 98.796 0.309 c
-98.649 0.239 98.546 0.14 98.488 0.015 c
-98.429 -0.103 98.407 -0.235 98.429 -0.382 c
-98.447 -0.569 98.561 -0.661 98.767 -0.661 c
-101.534 0.574 m
-101.592 1.004 101.732 1.353 101.96 1.617 c
-102.195 1.881 102.49 2.007 102.843 1.999 c
-103.066 1.989 103.254 1.918 103.4 1.793 c
-103.548 1.675 103.651 1.507 103.709 1.294 c
-103.776 1.077 103.797 0.842 103.768 0.588 c
-103.739 0.309 l
-103.669 -0.125 103.518 -0.47 103.283 -0.735 c
-103.055 -0.992 102.768 -1.109 102.415 -1.103 c
-102.188 -1.091 102.004 -1.029 101.858 -0.912 c
-101.71 -0.786 101.6 -0.617 101.534 -0.411 c
-101.475 -0.199 101.461 0.044 101.49 0.309 c
-h
-101.96 0.103 m
-101.949 -0.143 101.982 -0.334 102.063 -0.47 c
-102.151 -0.61 102.276 -0.683 102.446 -0.691 c
-102.651 -0.702 102.82 -0.628 102.96 -0.47 c
-103.107 -0.305 103.202 -0.058 103.254 0.264 c
-103.298 0.588 l
-103.313 0.794 l
-103.313 1.037 103.269 1.228 103.18 1.367 c
-103.099 1.503 102.978 1.573 102.812 1.573 c
-102.596 1.58 102.415 1.492 102.269 1.309 c
-102.129 1.121 102.041 0.86 102.004 0.53 c
-101.96 0.25 l
-h
-106.51 -0.264 m
-106.539 -0.088 106.44 0.059 106.215 0.177 c
-105.848 0.368 l
-105.661 0.474 105.528 0.588 105.451 0.706 c
-105.37 0.823 105.337 0.963 105.349 1.132 c
-105.355 1.374 105.455 1.58 105.642 1.75 c
-105.837 1.914 106.076 1.999 106.363 1.999 c
-106.627 1.989 106.833 1.9 106.98 1.735 c
-107.134 1.565 107.204 1.353 107.186 1.087 c
-106.716 1.087 l
-106.723 1.235 106.689 1.353 106.612 1.44 c
-106.542 1.529 106.45 1.573 106.333 1.573 c
-106.186 1.573 106.068 1.532 105.98 1.455 c
-105.892 1.374 105.837 1.272 105.819 1.147 c
-105.789 1 105.856 0.875 106.024 0.779 c
-106.495 0.544 l
-106.837 0.345 106.999 0.092 106.98 -0.22 c
-106.958 -0.496 106.851 -0.716 106.656 -0.881 c
-106.458 -1.04 106.219 -1.109 105.937 -1.103 c
-105.661 -1.091 105.436 -1.007 105.26 -0.837 c
-105.091 -0.661 105.014 -0.434 105.025 -0.147 c
-105.51 -0.147 l
-105.499 -0.324 105.532 -0.455 105.613 -0.544 c
-105.701 -0.632 105.812 -0.676 105.951 -0.676 c
-106.105 -0.676 106.234 -0.639 106.333 -0.559 c
-106.429 -0.481 106.488 -0.382 106.51 -0.264 c
-108.237 -1.852 m
-107.957 -1.646 l
-108.175 -1.382 108.303 -1.117 108.354 -0.852 c
-108.428 -0.441 l
-108.913 -0.441 l
-108.854 -0.808 l
-108.784 -1.227 108.578 -1.577 108.237 -1.852 c
-f
-Q
-q 1 0 0 1 170.9031 102.5161 cm
-0 0 m
-0.808 2.117 l
-1.294 2.117 l
-0.058 -0.867 l
--0.31 -0.867 l
--0.5 1.264 l
--1.426 -0.867 l
--1.808 -0.867 l
--1.999 2.117 l
--1.544 2.117 l
--1.455 0.058 l
--0.559 2.117 l
--0.177 2.117 l
-h
-3.027 1.808 m
-3.241 2.05 3.484 2.167 3.748 2.161 c
-3.943 2.161 4.093 2.094 4.203 1.97 c
-4.31 1.852 4.369 1.679 4.38 1.455 c
-4.388 1.326 4.388 1.205 4.38 1.087 c
-4.056 -0.867 l
-3.571 -0.867 l
-3.91 1.103 l
-3.924 1.308 l
-3.924 1.591 3.806 1.738 3.571 1.749 c
-3.384 1.749 3.208 1.639 3.042 1.425 c
-2.954 1.308 l
-2.587 -0.867 l
-2.102 -0.867 l
-2.836 3.366 l
-3.322 3.366 l
-h
-6.732 -0.927 m
-6.397 -0.915 6.148 -0.794 5.982 -0.559 c
-5.813 -0.324 5.754 0 5.805 0.411 c
-5.835 0.706 l
-5.894 1.165 6.034 1.529 6.262 1.793 c
-6.485 2.057 6.769 2.183 7.114 2.175 c
-7.397 2.165 7.607 2.065 7.746 1.881 c
-7.893 1.694 7.966 1.429 7.966 1.087 c
-7.937 0.764 l
-7.893 0.484 l
-6.291 0.484 l
-6.269 0.316 6.262 0.183 6.262 0.088 c
-6.262 -0.1 6.306 -0.246 6.393 -0.353 c
-6.482 -0.452 6.607 -0.5 6.776 -0.5 c
-6.894 -0.511 7.011 -0.493 7.129 -0.441 c
-7.247 -0.382 7.364 -0.294 7.482 -0.177 c
-7.717 -0.485 l
-7.599 -0.632 7.452 -0.746 7.276 -0.823 c
-7.099 -0.89 6.915 -0.927 6.732 -0.927 c
-7.085 1.749 m
-6.761 1.768 6.533 1.573 6.408 1.161 c
-6.335 0.897 l
-7.482 0.897 l
-7.482 0.97 l
-7.5 1.047 7.511 1.135 7.511 1.234 c
-7.5 1.565 7.357 1.738 7.085 1.749 c
-10.715 1.66 m
-10.634 1.679 10.561 1.691 10.495 1.691 c
-10.26 1.691 10.061 1.547 9.907 1.264 c
-9.539 -0.867 l
-9.055 -0.867 l
-9.583 2.117 l
-10.039 2.117 l
-9.965 1.808 l
-10.142 2.061 10.341 2.183 10.568 2.175 c
-10.605 2.175 10.671 2.161 10.759 2.131 c
-h
-12.681 -0.927 m
-12.347 -0.915 12.097 -0.794 11.931 -0.559 c
-11.762 -0.324 11.704 0 11.755 0.411 c
-11.785 0.706 l
-11.843 1.165 11.983 1.529 12.211 1.793 c
-12.435 2.057 12.718 2.183 13.063 2.175 c
-13.346 2.165 13.556 2.065 13.695 1.881 c
-13.842 1.694 13.916 1.429 13.916 1.087 c
-13.886 0.764 l
-13.842 0.484 l
-12.24 0.484 l
-12.218 0.316 12.211 0.183 12.211 0.088 c
-12.211 -0.1 12.255 -0.246 12.343 -0.353 c
-12.431 -0.452 12.556 -0.5 12.725 -0.5 c
-12.843 -0.511 12.961 -0.493 13.078 -0.441 c
-13.196 -0.382 13.313 -0.294 13.431 -0.177 c
-13.666 -0.485 l
-13.549 -0.632 13.402 -0.746 13.225 -0.823 c
-13.049 -0.89 12.865 -0.927 12.681 -0.927 c
-13.034 1.749 m
-12.71 1.768 12.483 1.573 12.358 1.161 c
-12.284 0.897 l
-13.431 0.897 l
-13.431 0.97 l
-13.449 1.047 13.46 1.135 13.46 1.234 c
-13.449 1.565 13.306 1.738 13.034 1.749 c
-18.127 2.117 m
-18.069 1.793 l
-18.281 2.047 18.528 2.175 18.803 2.175 c
-18.987 2.165 19.134 2.094 19.245 1.97 c
-19.362 1.852 19.424 1.679 19.436 1.455 c
-19.443 1.326 19.443 1.205 19.436 1.087 c
-19.112 -0.867 l
-18.627 -0.867 l
-18.965 1.103 l
-18.979 1.308 l
-18.979 1.591 18.862 1.738 18.627 1.749 c
-18.439 1.749 18.264 1.639 18.098 1.425 c
-18.01 1.308 l
-17.642 -0.867 l
-17.157 -0.867 l
-17.686 2.117 l
-h
-20.887 0.75 m
-20.946 1.18 21.086 1.529 21.313 1.793 c
-21.549 2.057 21.842 2.183 22.195 2.175 c
-22.42 2.165 22.607 2.094 22.754 1.97 c
-22.9 1.852 23.004 1.683 23.062 1.469 c
-23.129 1.253 23.151 1.018 23.121 0.764 c
-23.091 0.484 l
-23.022 0.051 22.871 -0.294 22.636 -0.559 c
-22.408 -0.816 22.121 -0.933 21.769 -0.927 c
-21.541 -0.915 21.358 -0.852 21.21 -0.735 c
-21.063 -0.611 20.953 -0.441 20.887 -0.235 c
-20.828 -0.023 20.814 0.22 20.843 0.484 c
-h
-21.313 0.279 m
-21.302 0.033 21.335 -0.158 21.416 -0.294 c
-21.504 -0.434 21.629 -0.507 21.798 -0.515 c
-22.004 -0.526 22.173 -0.452 22.312 -0.294 c
-22.46 -0.129 22.555 0.118 22.607 0.441 c
-22.651 0.764 l
-22.665 0.97 l
-22.665 1.213 22.621 1.404 22.534 1.543 c
-22.453 1.679 22.331 1.749 22.166 1.749 c
-21.949 1.756 21.769 1.668 21.622 1.484 c
-21.483 1.297 21.394 1.036 21.358 0.706 c
-21.313 0.426 l
-h
-f
-Q
-q 1 0 0 1 198.4339 102.7654 cm
-0 0 m
-0.661 1.867 l
-1.47 1.867 l
-0.206 -1.117 l
--0.515 -1.117 l
--0.852 1.867 l
--0.073 1.867 l
-h
-3.396 -1.176 m
-3.15 -1.176 2.944 -1.117 2.778 -0.999 c
-2.61 -0.881 2.488 -0.72 2.411 -0.514 c
-2.341 -0.301 2.323 -0.058 2.352 0.206 c
-2.367 0.412 l
-2.433 0.9 2.587 1.279 2.822 1.544 c
-3.057 1.808 3.359 1.933 3.734 1.926 c
-4.006 1.915 4.222 1.827 4.38 1.661 c
-4.535 1.503 4.623 1.279 4.645 0.985 c
-4.663 0.809 4.663 0.636 4.645 0.47 c
-4.586 0.118 l
-3.102 0.118 l
-3.09 0.037 3.087 -0.04 3.087 -0.118 c
-3.105 -0.382 3.238 -0.514 3.484 -0.514 c
-3.708 -0.525 3.929 -0.44 4.145 -0.264 c
-4.41 -0.735 l
-4.3 -0.874 4.152 -0.981 3.969 -1.058 c
-3.792 -1.135 3.601 -1.176 3.396 -1.176 c
-3.66 1.279 m
-3.443 1.287 3.293 1.147 3.204 0.853 c
-3.146 0.662 l
-3.91 0.662 l
-3.929 0.757 3.94 0.842 3.94 0.912 c
-3.946 1.147 3.855 1.268 3.66 1.279 c
-7.493 1.118 m
-7.258 1.147 l
-7.052 1.147 6.883 1.048 6.758 0.853 c
-6.42 -1.117 l
-5.656 -1.117 l
-6.17 1.867 l
-6.89 1.867 l
-6.832 1.544 l
-6.92 1.68 7.001 1.779 7.082 1.838 c
-7.169 1.897 7.265 1.926 7.375 1.926 c
-7.435 1.926 7.508 1.912 7.596 1.881 c
-h
-9.801 -0.294 m
-9.819 -0.168 9.716 -0.055 9.492 0.044 c
-9.276 0.14 9.114 0.235 9.007 0.324 c
-8.897 0.42 8.816 0.522 8.757 0.632 c
-8.706 0.739 8.688 0.86 8.698 1 c
-8.706 1.264 8.816 1.485 9.022 1.661 c
-9.235 1.838 9.496 1.926 9.801 1.926 c
-10.095 1.915 10.323 1.823 10.492 1.646 c
-10.668 1.478 10.756 1.257 10.756 0.985 c
-9.992 0.985 l
-9.992 1.11 9.97 1.199 9.933 1.25 c
-9.893 1.309 9.834 1.338 9.756 1.338 c
-9.669 1.338 9.588 1.309 9.521 1.25 c
-9.463 1.191 9.426 1.118 9.419 1.029 c
-9.39 0.912 9.477 0.802 9.683 0.706 c
-9.897 0.618 10.051 0.545 10.139 0.485 c
-10.411 0.298 10.539 0.048 10.521 -0.264 c
-10.51 -0.452 10.452 -0.613 10.344 -0.749 c
-10.246 -0.889 10.109 -0.995 9.933 -1.072 c
-9.764 -1.139 9.58 -1.176 9.374 -1.176 c
-9.081 -1.165 8.838 -1.072 8.654 -0.897 c
-8.478 -0.712 8.39 -0.477 8.39 -0.191 c
-9.124 -0.191 l
-9.114 -0.338 9.132 -0.448 9.183 -0.514 c
-9.242 -0.573 9.323 -0.602 9.434 -0.602 c
-9.521 -0.602 9.598 -0.58 9.669 -0.529 c
-9.735 -0.47 9.779 -0.393 9.801 -0.294 c
-12.517 -1.117 m
-11.767 -1.117 l
-12.281 1.867 l
-13.045 1.867 l
-h
-12.384 2.617 m
-12.384 2.741 12.421 2.845 12.501 2.926 c
-12.579 3.014 12.678 3.057 12.796 3.057 c
-12.902 3.057 12.994 3.017 13.075 2.94 c
-13.163 2.859 13.207 2.764 13.207 2.646 c
-13.207 2.517 13.163 2.415 13.075 2.338 c
-12.994 2.257 12.898 2.22 12.781 2.22 c
-12.663 2.22 12.565 2.253 12.487 2.323 c
-12.417 2.4 12.384 2.5 12.384 2.617 c
-15.578 1.926 m
-15.879 1.915 16.114 1.812 16.283 1.617 c
-16.449 1.419 16.54 1.154 16.563 0.823 c
-16.563 0.632 l
-16.533 0.052 16.39 -0.396 16.137 -0.72 c
-15.89 -1.036 15.563 -1.183 15.152 -1.176 c
-14.916 -1.165 14.718 -1.102 14.564 -0.984 c
-14.416 -0.86 14.306 -0.687 14.24 -0.47 c
-14.17 -0.257 14.152 -0.007 14.181 0.279 c
-14.196 0.427 l
-14.255 0.897 14.406 1.264 14.651 1.529 c
-14.894 1.801 15.202 1.933 15.578 1.926 c
-14.93 -0.029 m
-14.93 -0.353 15.026 -0.521 15.225 -0.529 c
-15.489 -0.551 15.659 -0.349 15.74 0.074 c
-15.769 0.279 l
-15.798 0.545 15.813 0.709 15.813 0.78 c
-15.813 1.103 15.709 1.268 15.504 1.279 c
-15.357 1.287 15.232 1.22 15.136 1.073 c
-15.048 0.934 14.99 0.728 14.961 0.456 c
-14.938 0.192 14.93 0.03 14.93 -0.029 c
-18.811 1.867 m
-18.767 1.573 l
-18.973 1.816 19.2 1.933 19.458 1.926 c
-19.664 1.915 19.819 1.831 19.929 1.676 c
-20.046 1.529 20.105 1.312 20.105 1.029 c
-20.075 0.78 l
-19.767 -1.117 l
-19.002 -1.117 l
-19.311 0.78 l
-19.326 0.941 l
-19.333 1.154 19.256 1.264 19.09 1.264 c
-19.01 1.264 18.944 1.243 18.884 1.206 c
-18.826 1.166 18.774 1.118 18.738 1.058 c
-18.356 -1.117 l
-17.591 -1.117 l
-18.105 1.867 l
-h
-24.515 -0.529 m
-24.721 -0.54 24.845 -0.393 24.897 -0.087 c
-25.617 -0.087 l
-25.577 -0.411 25.448 -0.675 25.234 -0.881 c
-25.029 -1.087 24.772 -1.183 24.471 -1.176 c
-24.184 -1.165 23.96 -1.084 23.794 -0.926 c
-23.636 -0.771 23.545 -0.551 23.515 -0.264 c
-23.486 -0.029 23.493 0.25 23.545 0.574 c
-23.603 0.904 23.706 1.18 23.853 1.397 c
-24.089 1.757 24.43 1.933 24.882 1.926 c
-25.176 1.915 25.4 1.801 25.558 1.588 c
-25.724 1.382 25.797 1.103 25.779 0.75 c
-25.058 0.75 l
-25.058 0.927 l
-25.058 1.151 24.97 1.268 24.794 1.279 c
-24.529 1.287 24.368 1.077 24.309 0.647 c
-24.264 0.148 l
-24.235 0 24.224 -0.124 24.235 -0.22 c
-24.253 -0.419 24.345 -0.521 24.515 -0.529 c
-28.307 1.926 m
-28.608 1.915 28.843 1.812 29.012 1.617 c
-29.178 1.419 29.269 1.154 29.292 0.823 c
-29.292 0.632 l
-29.263 0.052 29.119 -0.396 28.866 -0.72 c
-28.619 -1.036 28.292 -1.183 27.881 -1.176 c
-27.646 -1.165 27.447 -1.102 27.293 -0.984 c
-27.146 -0.86 27.035 -0.687 26.969 -0.47 c
-26.899 -0.257 26.881 -0.007 26.911 0.279 c
-26.925 0.427 l
-26.984 0.897 27.135 1.264 27.381 1.529 c
-27.623 1.801 27.932 1.933 28.307 1.926 c
-27.661 -0.029 m
-27.661 -0.353 27.756 -0.521 27.954 -0.529 c
-28.218 -0.551 28.388 -0.349 28.469 0.074 c
-28.498 0.279 l
-28.527 0.545 28.542 0.709 28.542 0.78 c
-28.542 1.103 28.439 1.268 28.233 1.279 c
-28.087 1.287 27.962 1.22 27.866 1.073 c
-27.778 0.934 27.719 0.728 27.69 0.456 c
-27.667 0.192 27.661 0.03 27.661 -0.029 c
-31.541 1.867 m
-31.497 1.573 l
-31.702 1.816 31.931 1.933 32.187 1.926 c
-32.393 1.915 32.548 1.831 32.658 1.676 c
-32.775 1.529 32.835 1.312 32.835 1.029 c
-32.805 0.78 l
-32.496 -1.117 l
-31.732 -1.117 l
-32.041 0.78 l
-32.055 0.941 l
-32.062 1.154 31.985 1.264 31.82 1.264 c
-31.739 1.264 31.673 1.243 31.614 1.206 c
-31.555 1.166 31.503 1.118 31.467 1.058 c
-31.085 -1.117 l
-30.321 -1.117 l
-30.836 1.867 l
-h
-35.432 2.602 m
-35.314 1.867 l
-35.696 1.867 l
-35.594 1.279 l
-35.212 1.279 l
-34.948 -0.22 l
-34.948 -0.309 l
-34.936 -0.437 34.984 -0.5 35.094 -0.5 c
-35.123 -0.5 35.186 -0.496 35.285 -0.484 c
-35.212 -1.102 l
-35.102 -1.15 34.969 -1.176 34.815 -1.176 c
-34.599 -1.165 34.433 -1.084 34.315 -0.926 c
-34.205 -0.771 34.161 -0.558 34.183 -0.294 c
-34.447 1.279 l
-34.109 1.279 l
-34.212 1.867 l
-34.551 1.867 l
-34.668 2.602 l
-h
-38.317 1.118 m
-38.082 1.147 l
-37.876 1.147 37.707 1.048 37.582 0.853 c
-37.244 -1.117 l
-36.48 -1.117 l
-36.994 1.867 l
-37.714 1.867 l
-37.656 1.544 l
-37.743 1.68 37.824 1.779 37.905 1.838 c
-37.994 1.897 38.089 1.926 38.2 1.926 c
-38.258 1.926 38.331 1.912 38.42 1.881 c
-h
-40.658 1.926 m
-40.959 1.915 41.194 1.812 41.363 1.617 c
-41.529 1.419 41.62 1.154 41.643 0.823 c
-41.643 0.632 l
-41.614 0.052 41.47 -0.396 41.217 -0.72 c
-40.97 -1.036 40.643 -1.183 40.232 -1.176 c
-39.996 -1.165 39.798 -1.102 39.644 -0.984 c
-39.497 -0.86 39.386 -0.687 39.32 -0.47 c
-39.25 -0.257 39.232 -0.007 39.262 0.279 c
-39.276 0.427 l
-39.335 0.897 39.486 1.264 39.732 1.529 c
-39.974 1.801 40.283 1.933 40.658 1.926 c
-40.011 -0.029 m
-40.011 -0.353 40.107 -0.521 40.305 -0.529 c
-40.569 -0.551 40.739 -0.349 40.82 0.074 c
-40.849 0.279 l
-40.878 0.545 40.893 0.709 40.893 0.78 c
-40.893 1.103 40.79 1.268 40.584 1.279 c
-40.438 1.287 40.313 1.22 40.217 1.073 c
-40.128 0.934 40.07 0.728 40.041 0.456 c
-40.018 0.192 40.011 0.03 40.011 -0.029 c
-43.48 -1.117 m
-42.73 -1.117 l
-43.451 3.117 l
-44.23 3.117 l
-h
-f
-Q
-q 1 0 0 1 247.9403 102.5161 cm
-0 0 m
-0.809 2.117 l
-1.294 2.117 l
-0.059 -0.867 l
--0.309 -0.867 l
--0.5 1.264 l
--1.425 -0.867 l
--1.808 -0.867 l
--1.999 2.117 l
--1.543 2.117 l
--1.455 0.058 l
--0.559 2.117 l
--0.176 2.117 l
-h
-3.631 -0.867 m
-3.62 -0.809 3.616 -0.757 3.616 -0.706 c
-3.631 -0.544 l
-3.425 -0.802 3.198 -0.927 2.955 -0.927 c
-2.708 -0.927 2.517 -0.849 2.381 -0.691 c
-2.253 -0.537 2.198 -0.331 2.22 -0.073 c
-2.238 0.228 2.367 0.474 2.602 0.661 c
-2.837 0.845 3.138 0.941 3.514 0.941 c
-3.851 0.941 l
-3.896 1.264 l
-3.925 1.587 3.8 1.749 3.528 1.749 c
-3.381 1.749 3.256 1.705 3.161 1.617 c
-3.061 1.536 3.003 1.429 2.984 1.294 c
-2.514 1.294 l
-2.532 1.536 2.646 1.741 2.851 1.911 c
-3.057 2.087 3.296 2.175 3.572 2.175 c
-3.836 2.165 4.042 2.08 4.189 1.926 c
-4.337 1.768 4.395 1.543 4.366 1.249 c
-4.131 -0.221 l
-4.108 -0.32 4.102 -0.42 4.102 -0.515 c
-4.116 -0.823 l
-4.116 -0.867 l
-h
-3.043 -0.485 m
-3.285 -0.485 3.491 -0.368 3.66 -0.133 c
-3.792 0.573 l
-3.572 0.588 l
-3.385 0.588 3.219 0.551 3.072 0.484 c
-2.926 0.415 2.822 0.316 2.764 0.191 c
-2.705 0.073 2.683 -0.059 2.705 -0.206 c
-2.723 -0.393 2.837 -0.485 3.043 -0.485 c
-7.162 -0.088 m
-7.192 0.088 7.092 0.235 6.868 0.353 c
-6.501 0.544 l
-6.313 0.65 6.181 0.764 6.104 0.881 c
-6.024 0.999 5.99 1.139 6.001 1.308 c
-6.008 1.55 6.107 1.756 6.295 1.926 c
-6.49 2.09 6.729 2.175 7.015 2.175 c
-7.279 2.165 7.485 2.076 7.632 1.911 c
-7.787 1.741 7.857 1.529 7.838 1.264 c
-7.368 1.264 l
-7.375 1.411 7.342 1.529 7.265 1.617 c
-7.196 1.705 7.104 1.749 6.986 1.749 c
-6.839 1.749 6.722 1.708 6.633 1.631 c
-6.545 1.55 6.49 1.448 6.471 1.323 c
-6.442 1.176 6.508 1.051 6.677 0.955 c
-7.148 0.72 l
-7.489 0.521 7.651 0.268 7.632 -0.044 c
-7.611 -0.32 7.504 -0.54 7.31 -0.706 c
-7.111 -0.864 6.872 -0.933 6.589 -0.927 c
-6.313 -0.915 6.089 -0.831 5.913 -0.661 c
-5.744 -0.485 5.667 -0.258 5.677 0.029 c
-6.163 0.029 l
-6.152 -0.147 6.184 -0.279 6.265 -0.368 c
-6.354 -0.456 6.464 -0.5 6.604 -0.5 c
-6.758 -0.5 6.886 -0.463 6.986 -0.382 c
-7.082 -0.305 7.14 -0.206 7.162 -0.088 c
-12.689 -0.603 m
-12.491 -0.831 12.252 -0.933 11.969 -0.927 c
-11.752 -0.927 11.587 -0.852 11.469 -0.706 c
-11.358 -0.551 11.308 -0.335 11.308 -0.059 c
-11.322 0.191 l
-11.645 2.117 l
-12.116 2.117 l
-11.807 0.176 l
-11.792 -0.015 l
-11.782 -0.154 11.8 -0.264 11.851 -0.353 c
-11.899 -0.441 11.977 -0.485 12.087 -0.485 c
-12.351 -0.507 12.565 -0.375 12.733 -0.088 c
-13.116 2.117 l
-13.6 2.117 l
-13.086 -0.867 l
-12.63 -0.867 l
-h
-16.214 -0.088 m
-16.243 0.088 16.143 0.235 15.919 0.353 c
-15.551 0.544 l
-15.364 0.65 15.232 0.764 15.155 0.881 c
-15.074 0.999 15.041 1.139 15.052 1.308 c
-15.059 1.55 15.158 1.756 15.346 1.926 c
-15.541 2.09 15.78 2.175 16.066 2.175 c
-16.331 2.165 16.536 2.076 16.684 1.911 c
-16.838 1.741 16.908 1.529 16.889 1.264 c
-16.419 1.264 l
-16.426 1.411 16.393 1.529 16.316 1.617 c
-16.247 1.705 16.154 1.749 16.037 1.749 c
-15.89 1.749 15.772 1.708 15.684 1.631 c
-15.596 1.55 15.541 1.448 15.522 1.323 c
-15.493 1.176 15.559 1.051 15.728 0.955 c
-16.199 0.72 l
-16.54 0.521 16.702 0.268 16.684 -0.044 c
-16.661 -0.32 16.555 -0.54 16.36 -0.706 c
-16.162 -0.864 15.923 -0.933 15.64 -0.927 c
-15.364 -0.915 15.14 -0.831 14.963 -0.661 c
-14.795 -0.485 14.718 -0.258 14.728 0.029 c
-15.214 0.029 l
-15.202 -0.147 15.236 -0.279 15.316 -0.368 c
-15.405 -0.456 15.515 -0.5 15.655 -0.5 c
-15.809 -0.5 15.938 -0.463 16.037 -0.382 c
-16.133 -0.305 16.191 -0.206 16.214 -0.088 c
-19.146 -0.927 m
-18.811 -0.915 18.562 -0.794 18.396 -0.559 c
-18.227 -0.324 18.168 0 18.219 0.411 c
-18.249 0.706 l
-18.308 1.165 18.448 1.529 18.676 1.793 c
-18.899 2.057 19.183 2.183 19.528 2.175 c
-19.811 2.165 20.02 2.065 20.16 1.881 c
-20.307 1.694 20.38 1.429 20.38 1.087 c
-20.351 0.764 l
-20.307 0.484 l
-18.705 0.484 l
-18.683 0.316 18.676 0.183 18.676 0.088 c
-18.676 -0.1 18.72 -0.246 18.807 -0.353 c
-18.896 -0.452 19.021 -0.5 19.19 -0.5 c
-19.308 -0.511 19.425 -0.493 19.543 -0.441 c
-19.66 -0.382 19.778 -0.294 19.896 -0.177 c
-20.131 -0.485 l
-20.013 -0.632 19.866 -0.746 19.69 -0.823 c
-19.513 -0.89 19.329 -0.927 19.146 -0.927 c
-19.499 1.749 m
-19.175 1.768 18.947 1.573 18.822 1.161 c
-18.749 0.897 l
-19.896 0.897 l
-19.896 0.97 l
-19.914 1.047 19.925 1.135 19.925 1.234 c
-19.914 1.565 19.771 1.738 19.499 1.749 c
-22.82 2.161 m
-23.092 2.161 23.298 2.047 23.438 1.822 c
-23.732 3.366 l
-24.202 3.366 l
-23.468 -0.867 l
-23.041 -0.867 l
-23.085 -0.544 l
-22.886 -0.809 22.651 -0.933 22.379 -0.927 c
-22.134 -0.915 21.942 -0.819 21.806 -0.632 c
-21.666 -0.449 21.6 -0.177 21.6 0.176 c
-21.6 0.341 21.619 0.559 21.66 0.823 c
-21.707 1.095 21.777 1.326 21.865 1.514 c
-22.071 1.962 22.387 2.179 22.82 2.161 c
-22.071 0.058 m
-22.078 -0.305 22.232 -0.493 22.527 -0.5 c
-22.633 -0.5 22.736 -0.478 22.836 -0.426 c
-22.931 -0.368 23.026 -0.272 23.114 -0.133 c
-23.379 1.382 l
-23.291 1.606 23.137 1.723 22.923 1.735 c
-22.483 1.764 22.217 1.444 22.13 0.779 c
-22.089 0.455 22.071 0.213 22.071 0.058 c
-25.455 -0.294 m
-25.544 -0.287 25.617 -0.309 25.676 -0.368 c
-25.735 -0.426 25.764 -0.5 25.764 -0.588 c
-25.764 -0.676 25.735 -0.75 25.676 -0.809 c
-25.617 -0.867 25.544 -0.897 25.455 -0.897 c
-25.367 -0.904 25.294 -0.886 25.234 -0.838 c
-25.176 -0.779 25.147 -0.706 25.147 -0.617 c
-25.147 -0.522 25.176 -0.441 25.234 -0.382 c
-25.294 -0.324 25.367 -0.294 25.455 -0.294 c
-f
-Q
-q 1 0 0 1 138.5097 93.1379 cm
-0 0 m
-0.691 4.013 l
-1.587 4.013 l
-2.017 4.002 2.337 3.844 2.543 3.543 c
-2.749 3.237 2.822 2.837 2.763 2.337 c
-2.675 1.706 l
-2.587 1.147 2.389 0.721 2.087 0.426 c
-1.782 0.139 1.396 0 0.926 0 c
-h
-1.117 3.572 m
-0.573 0.426 l
-0.926 0.426 l
-1.268 0.426 1.547 0.53 1.764 0.735 c
-1.977 0.941 2.117 1.253 2.175 1.675 c
-2.278 2.352 l
-2.296 2.499 2.308 2.646 2.308 2.793 c
-2.296 3.036 2.227 3.223 2.102 3.352 c
-1.984 3.487 1.808 3.561 1.573 3.572 c
-h
-4.119 1.617 m
-4.178 2.047 4.318 2.396 4.546 2.66 c
-4.781 2.925 5.074 3.05 5.428 3.042 c
-5.652 3.032 5.839 2.961 5.986 2.837 c
-6.134 2.72 6.236 2.55 6.294 2.337 c
-6.361 2.12 6.383 1.885 6.354 1.631 c
-6.325 1.353 l
-6.254 0.919 6.104 0.573 5.868 0.309 c
-5.641 0.052 5.354 -0.066 5.001 -0.058 c
-4.773 -0.048 4.59 0.015 4.443 0.133 c
-4.295 0.257 4.185 0.426 4.119 0.632 c
-4.06 0.845 4.046 1.087 4.075 1.353 c
-h
-4.546 1.147 m
-4.534 0.9 4.567 0.709 4.648 0.573 c
-4.737 0.434 4.862 0.36 5.031 0.353 c
-5.236 0.341 5.405 0.415 5.545 0.573 c
-5.692 0.738 5.787 0.985 5.839 1.309 c
-5.883 1.631 l
-5.898 1.837 l
-5.898 2.08 5.854 2.271 5.766 2.411 c
-5.685 2.547 5.564 2.616 5.398 2.616 c
-5.182 2.624 5.001 2.535 4.854 2.352 c
-4.715 2.165 4.627 1.903 4.59 1.573 c
-4.546 1.294 l
-h
-8.507 2.984 m
-8.448 2.66 l
-8.661 2.914 8.908 3.042 9.183 3.042 c
-9.367 3.032 9.514 2.961 9.624 2.837 c
-9.741 2.72 9.804 2.547 9.816 2.323 c
-9.822 2.194 9.822 2.072 9.816 1.955 c
-9.492 0 l
-9.007 0 l
-9.345 1.97 l
-9.359 2.176 l
-9.359 2.458 9.242 2.606 9.007 2.616 c
-8.819 2.616 8.643 2.506 8.478 2.294 c
-8.39 2.176 l
-8.022 0 l
-7.537 0 l
-8.066 2.984 l
-h
-11.752 3.91 m
-11.546 2.911 l
-11.193 2.911 l
-11.399 4.233 l
-11.811 4.233 l
-h
-13.924 3.705 m
-13.791 2.984 l
-14.232 2.984 l
-14.159 2.587 l
-13.718 2.587 l
-13.409 0.735 l
-13.409 0.617 l
-13.398 0.459 13.454 0.382 13.571 0.382 c
-13.619 0.382 13.689 0.389 13.776 0.412 c
-13.733 0 l
-13.622 -0.037 13.519 -0.052 13.424 -0.044 c
-13.255 -0.044 13.13 0.022 13.041 0.162 c
-12.954 0.297 12.924 0.489 12.954 0.735 c
-13.247 2.587 l
-12.806 2.587 l
-12.88 2.984 l
-13.321 2.984 l
-13.438 3.705 l
-h
-17.822 0 m
-17.352 0 l
-18.088 4.233 l
-18.558 4.233 l
-h
-19.976 0 m
-19.505 0 l
-20.02 2.984 l
-20.505 2.984 l
-h
-20.137 3.778 m
-20.137 3.855 20.16 3.925 20.211 3.983 c
-20.259 4.042 20.322 4.072 20.402 4.072 c
-20.48 4.072 20.542 4.042 20.594 3.983 c
-20.652 3.932 20.675 3.865 20.667 3.778 c
-20.667 3.697 20.641 3.63 20.594 3.572 c
-20.542 3.513 20.48 3.484 20.402 3.484 c
-20.314 3.472 20.245 3.499 20.197 3.557 c
-20.145 3.616 20.126 3.69 20.137 3.778 c
-22.585 0.75 m
-23.482 2.984 l
-23.981 2.984 l
-22.659 0 l
-22.291 0 l
-21.894 2.984 l
-22.364 2.984 l
-h
-25.926 -0.058 m
-25.591 -0.048 25.341 0.073 25.176 0.309 c
-25.007 0.544 24.948 0.867 24.999 1.278 c
-25.028 1.573 l
-25.088 2.032 25.227 2.396 25.455 2.66 c
-25.679 2.925 25.963 3.05 26.308 3.042 c
-26.591 3.032 26.8 2.932 26.94 2.749 c
-27.087 2.562 27.16 2.296 27.16 1.955 c
-27.131 1.631 l
-27.087 1.353 l
-25.485 1.353 l
-25.462 1.183 25.455 1.051 25.455 0.956 c
-25.455 0.768 25.499 0.621 25.587 0.515 c
-25.676 0.415 25.801 0.368 25.969 0.368 c
-26.087 0.357 26.204 0.374 26.322 0.426 c
-26.439 0.485 26.557 0.573 26.675 0.691 c
-26.91 0.382 l
-26.792 0.235 26.646 0.121 26.47 0.044 c
-26.293 -0.022 26.109 -0.058 25.926 -0.058 c
-26.279 2.616 m
-25.955 2.635 25.727 2.44 25.602 2.028 c
-25.529 1.764 l
-26.675 1.764 l
-26.675 1.837 l
-26.693 1.914 26.705 2.003 26.705 2.102 c
-26.693 2.433 26.55 2.606 26.279 2.616 c
-30.916 0 m
-30.445 0 l
-30.96 2.984 l
-31.445 2.984 l
-h
-31.077 3.778 m
-31.077 3.855 31.1 3.925 31.151 3.983 c
-31.199 4.042 31.261 4.072 31.342 4.072 c
-31.419 4.072 31.482 4.042 31.534 3.983 c
-31.592 3.932 31.614 3.865 31.607 3.778 c
-31.607 3.697 31.581 3.63 31.534 3.572 c
-31.482 3.513 31.419 3.484 31.342 3.484 c
-31.254 3.472 31.184 3.499 31.137 3.557 c
-31.085 3.616 31.066 3.69 31.077 3.778 c
-33.525 2.984 m
-33.466 2.66 l
-33.679 2.914 33.925 3.042 34.201 3.042 c
-34.385 3.032 34.532 2.961 34.642 2.837 c
-34.759 2.72 34.822 2.547 34.833 2.323 c
-34.84 2.194 34.84 2.072 34.833 1.955 c
-34.51 0 l
-34.025 0 l
-34.362 1.97 l
-34.377 2.176 l
-34.377 2.458 34.26 2.606 34.025 2.616 c
-33.837 2.616 33.661 2.506 33.495 2.294 c
-33.408 2.176 l
-33.04 0 l
-32.554 0 l
-33.084 2.984 l
-h
-39.32 0.353 m
-39.474 0.353 39.603 0.401 39.702 0.5 c
-39.808 0.607 39.885 0.754 39.937 0.941 c
-40.378 0.941 l
-40.338 0.647 40.217 0.401 40.011 0.206 c
-39.805 0.019 39.563 -0.066 39.291 -0.058 c
-39.026 -0.048 38.813 0.029 38.659 0.177 c
-38.501 0.331 38.409 0.548 38.379 0.823 c
-38.357 0.989 38.357 1.154 38.379 1.323 c
-38.424 1.617 l
-38.482 2.087 38.618 2.444 38.835 2.69 c
-39.06 2.932 39.353 3.05 39.717 3.042 c
-39.989 3.032 40.202 2.929 40.349 2.734 c
-40.504 2.535 40.577 2.278 40.569 1.955 c
-40.114 1.955 l
-40.121 2.385 39.981 2.606 39.687 2.616 c
-39.254 2.635 38.996 2.33 38.908 1.706 c
-38.85 1.312 38.824 1.043 38.835 0.897 c
-38.853 0.544 39.015 0.36 39.32 0.353 c
-42.565 2.675 m
-42.778 2.918 43.02 3.036 43.285 3.028 c
-43.48 3.028 43.631 2.961 43.741 2.837 c
-43.847 2.72 43.906 2.547 43.917 2.323 c
-43.924 2.194 43.924 2.072 43.917 1.955 c
-43.594 0 l
-43.108 0 l
-43.447 1.97 l
-43.461 2.176 l
-43.461 2.458 43.344 2.606 43.108 2.616 c
-42.921 2.616 42.744 2.506 42.58 2.294 c
-42.491 2.176 l
-42.123 0 l
-41.639 0 l
-42.374 4.233 l
-42.859 4.233 l
-h
-46.68 0 m
-46.669 0.059 46.665 0.11 46.665 0.162 c
-46.68 0.324 l
-46.474 0.066 46.247 -0.058 46.004 -0.058 c
-45.759 -0.058 45.567 0.019 45.431 0.177 c
-45.302 0.331 45.248 0.536 45.269 0.794 c
-45.288 1.095 45.416 1.341 45.651 1.529 c
-45.886 1.712 46.188 1.808 46.563 1.808 c
-46.901 1.808 l
-46.945 2.132 l
-46.975 2.454 46.85 2.616 46.578 2.616 c
-46.43 2.616 46.306 2.572 46.21 2.484 c
-46.111 2.404 46.052 2.296 46.034 2.161 c
-45.564 2.161 l
-45.582 2.404 45.695 2.609 45.902 2.778 c
-46.108 2.955 46.346 3.042 46.622 3.042 c
-46.886 3.032 47.092 2.947 47.239 2.793 c
-47.386 2.635 47.445 2.411 47.415 2.117 c
-47.18 0.647 l
-47.158 0.548 47.151 0.449 47.151 0.353 c
-47.166 0.044 l
-47.166 0 l
-h
-46.092 0.382 m
-46.335 0.382 46.541 0.5 46.71 0.735 c
-46.842 1.44 l
-46.622 1.455 l
-46.434 1.455 46.269 1.419 46.122 1.353 c
-45.975 1.282 45.872 1.183 45.813 1.058 c
-45.755 0.941 45.732 0.808 45.755 0.661 c
-45.773 0.474 45.886 0.382 46.092 0.382 c
-48.863 1.617 m
-48.922 2.047 49.061 2.396 49.289 2.66 c
-49.524 2.925 49.819 3.05 50.172 3.042 c
-50.395 3.032 50.584 2.961 50.73 2.837 c
-50.877 2.72 50.98 2.55 51.039 2.337 c
-51.105 2.12 51.127 1.885 51.097 1.631 c
-51.068 1.353 l
-50.998 0.919 50.848 0.573 50.613 0.309 c
-50.385 0.052 50.098 -0.066 49.745 -0.058 c
-49.518 -0.048 49.333 0.015 49.187 0.133 c
-49.04 0.257 48.93 0.426 48.863 0.632 c
-48.805 0.845 48.79 1.087 48.819 1.353 c
-h
-49.289 1.147 m
-49.279 0.9 49.312 0.709 49.393 0.573 c
-49.481 0.434 49.605 0.36 49.775 0.353 c
-49.981 0.341 50.15 0.415 50.289 0.573 c
-50.436 0.738 50.532 0.985 50.584 1.309 c
-50.627 1.631 l
-50.642 1.837 l
-50.642 2.08 50.598 2.271 50.509 2.411 c
-50.428 2.547 50.308 2.616 50.142 2.616 c
-49.925 2.624 49.745 2.535 49.599 2.352 c
-49.458 2.165 49.37 1.903 49.333 1.573 c
-49.289 1.294 l
-h
-53.836 0.779 m
-53.865 0.956 53.765 1.103 53.541 1.22 c
-53.173 1.411 l
-52.986 1.517 52.855 1.631 52.777 1.749 c
-52.696 1.866 52.663 2.007 52.674 2.176 c
-52.681 2.418 52.78 2.624 52.968 2.793 c
-53.163 2.959 53.402 3.042 53.688 3.042 c
-53.953 3.032 54.158 2.944 54.306 2.778 c
-54.46 2.609 54.53 2.396 54.511 2.132 c
-54.041 2.132 l
-54.048 2.278 54.015 2.396 53.938 2.484 c
-53.869 2.572 53.776 2.616 53.659 2.616 c
-53.512 2.616 53.394 2.576 53.306 2.499 c
-53.218 2.418 53.163 2.315 53.144 2.19 c
-53.115 2.043 53.181 1.918 53.35 1.823 c
-53.821 1.588 l
-54.162 1.389 54.324 1.135 54.306 0.823 c
-54.283 0.548 54.177 0.327 53.982 0.162 c
-53.784 0.004 53.545 -0.066 53.262 -0.058 c
-52.986 -0.048 52.762 0.037 52.585 0.206 c
-52.417 0.382 52.34 0.61 52.35 0.897 c
-52.836 0.897 l
-52.824 0.721 52.857 0.588 52.938 0.5 c
-53.027 0.412 53.137 0.368 53.277 0.368 c
-53.431 0.368 53.56 0.405 53.659 0.485 c
-53.755 0.563 53.813 0.661 53.836 0.779 c
-56.4 1.132 m
-55.974 1.132 l
-56.429 4.013 l
-56.93 4.013 l
-h
-55.768 0.25 m
-55.768 0.327 55.791 0.397 55.841 0.455 c
-55.889 0.515 55.959 0.548 56.047 0.559 c
-56.125 0.559 56.188 0.53 56.238 0.47 c
-56.286 0.412 56.312 0.341 56.312 0.264 c
-56.312 0.183 56.286 0.118 56.238 0.059 c
-56.188 0 56.121 -0.029 56.032 -0.029 c
-55.952 -0.037 55.889 -0.019 55.841 0.029 c
-55.791 0.088 55.768 0.162 55.768 0.25 c
-f
-Q
-q 1 0 0 1 206.7387 88.644 cm
-0 0 m
--0.47 -2.749 l
--0.529 -3.171 -0.687 -3.499 -0.941 -3.734 c
--1.186 -3.969 -1.514 -4.079 -1.926 -4.072 c
--2.319 -4.061 -2.612 -3.94 -2.807 -3.705 c
--3.006 -3.469 -3.083 -3.153 -3.042 -2.749 c
--2.572 0 l
--1.778 0 l
--2.234 -2.764 l
--2.248 -2.999 l
--2.248 -3.256 -2.123 -3.389 -1.866 -3.396 c
--1.691 -3.406 -1.554 -3.363 -1.455 -3.263 c
--1.359 -3.157 -1.29 -2.992 -1.249 -2.764 c
--0.793 0 l
-h
-2.124 -3.19 m
-2.143 -3.065 2.04 -2.951 1.816 -2.852 c
-1.599 -2.756 1.437 -2.66 1.33 -2.573 c
-1.22 -2.477 1.139 -2.374 1.081 -2.264 c
-1.029 -2.157 1.011 -2.036 1.022 -1.897 c
-1.029 -1.632 1.139 -1.411 1.345 -1.235 c
-1.559 -1.058 1.819 -0.971 2.124 -0.971 c
-2.419 -0.981 2.646 -1.073 2.816 -1.249 c
-2.992 -1.419 3.08 -1.64 3.08 -1.912 c
-2.315 -1.912 l
-2.315 -1.786 2.294 -1.698 2.257 -1.646 c
-2.216 -1.588 2.157 -1.559 2.08 -1.559 c
-1.992 -1.559 1.912 -1.588 1.845 -1.646 c
-1.786 -1.706 1.75 -1.779 1.742 -1.867 c
-1.713 -1.985 1.801 -2.095 2.007 -2.19 c
-2.22 -2.278 2.374 -2.352 2.462 -2.411 c
-2.735 -2.598 2.863 -2.849 2.845 -3.161 c
-2.833 -3.348 2.775 -3.51 2.668 -3.645 c
-2.569 -3.786 2.433 -3.892 2.257 -3.969 c
-2.087 -4.035 1.904 -4.072 1.698 -4.072 c
-1.405 -4.061 1.162 -3.969 0.977 -3.793 c
-0.801 -3.609 0.713 -3.373 0.713 -3.088 c
-1.448 -3.088 l
-1.437 -3.234 1.455 -3.344 1.507 -3.41 c
-1.565 -3.469 1.646 -3.499 1.756 -3.499 c
-1.845 -3.499 1.922 -3.477 1.992 -3.425 c
-2.058 -3.366 2.103 -3.289 2.124 -3.19 c
-5.281 -4.072 m
-5.035 -4.072 4.829 -4.013 4.663 -3.896 c
-4.495 -3.778 4.373 -3.616 4.296 -3.41 c
-4.227 -3.198 4.208 -2.955 4.237 -2.691 c
-4.252 -2.484 l
-4.318 -1.995 4.472 -1.617 4.707 -1.353 c
-4.943 -1.088 5.245 -0.963 5.619 -0.971 c
-5.891 -0.981 6.108 -1.07 6.265 -1.235 c
-6.421 -1.393 6.508 -1.617 6.531 -1.912 c
-6.548 -2.087 6.548 -2.261 6.531 -2.425 c
-6.471 -2.778 l
-4.987 -2.778 l
-4.976 -2.859 4.972 -2.936 4.972 -3.013 c
-4.991 -3.278 5.123 -3.41 5.369 -3.41 c
-5.594 -3.421 5.814 -3.337 6.03 -3.161 c
-6.295 -3.631 l
-6.185 -3.77 6.038 -3.877 5.854 -3.954 c
-5.677 -4.031 5.486 -4.072 5.281 -4.072 c
-5.546 -1.617 m
-5.328 -1.61 5.178 -1.75 5.089 -2.043 c
-5.031 -2.234 l
-5.795 -2.234 l
-5.814 -2.139 5.825 -2.055 5.825 -1.985 c
-5.833 -1.75 5.74 -1.628 5.546 -1.617 c
-12.495 -3.558 m
-12.347 -3.726 12.149 -3.851 11.907 -3.94 c
-11.672 -4.028 11.422 -4.072 11.157 -4.072 c
-10.911 -4.072 10.701 -4.017 10.525 -3.911 c
-10.348 -3.803 10.209 -3.653 10.113 -3.454 c
-10.014 -3.26 9.966 -3.036 9.966 -2.778 c
-9.955 -2.643 9.959 -2.5 9.981 -2.352 c
-10.084 -1.691 l
-10.161 -1.132 10.338 -0.702 10.613 -0.397 c
-10.896 -0.085 11.263 0.066 11.715 0.058 c
-12.098 0.047 12.384 -0.071 12.582 -0.294 c
-12.777 -0.522 12.877 -0.849 12.877 -1.279 c
-12.112 -1.279 l
-12.098 -1.058 l
-12.075 -0.776 11.936 -0.628 11.672 -0.618 c
-11.296 -0.599 11.047 -0.849 10.922 -1.367 c
-10.892 -1.573 l
-10.774 -2.352 l
-10.753 -2.529 10.745 -2.675 10.745 -2.793 c
-10.753 -2.999 10.797 -3.153 10.878 -3.248 c
-10.966 -3.337 11.087 -3.389 11.245 -3.396 c
-11.381 -3.396 11.539 -3.348 11.715 -3.248 c
-11.863 -2.514 l
-11.304 -2.514 l
-11.422 -1.897 l
-12.759 -1.897 l
-h
-14.56 -4.013 m
-13.81 -4.013 l
-14.325 -1.029 l
-15.089 -1.029 l
-h
-14.427 -0.279 m
-14.427 -0.154 14.464 -0.052 14.545 0.029 c
-14.622 0.118 14.722 0.162 14.839 0.162 c
-14.946 0.162 15.038 0.121 15.119 0.044 c
-15.206 -0.037 15.25 -0.133 15.25 -0.25 c
-15.25 -0.379 15.206 -0.482 15.119 -0.559 c
-15.038 -0.64 14.942 -0.676 14.824 -0.676 c
-14.707 -0.676 14.608 -0.643 14.531 -0.574 c
-14.46 -0.497 14.427 -0.397 14.427 -0.279 c
-17.581 -0.294 m
-17.463 -1.029 l
-17.845 -1.029 l
-17.742 -1.617 l
-17.359 -1.617 l
-17.095 -3.117 l
-17.095 -3.205 l
-17.084 -3.333 17.132 -3.396 17.242 -3.396 c
-17.272 -3.396 17.334 -3.392 17.434 -3.381 c
-17.359 -3.998 l
-17.249 -4.046 17.118 -4.072 16.963 -4.072 c
-16.746 -4.061 16.581 -3.98 16.463 -3.822 c
-16.353 -3.668 16.309 -3.454 16.331 -3.19 c
-16.596 -1.617 l
-16.258 -1.617 l
-16.36 -1.029 l
-16.698 -1.029 l
-16.816 -0.294 l
-h
-19.624 -2.778 m
-18.992 -2.778 l
-19.374 0 l
-20.182 0 l
-h
-18.741 -3.645 m
-18.741 -3.521 18.778 -3.418 18.859 -3.337 c
-18.936 -3.248 19.036 -3.205 19.153 -3.205 c
-19.271 -3.205 19.366 -3.246 19.447 -3.323 c
-19.524 -3.404 19.565 -3.499 19.565 -3.616 c
-19.565 -3.745 19.524 -3.851 19.447 -3.94 c
-19.366 -4.017 19.271 -4.057 19.153 -4.057 c
-19.025 -4.057 18.922 -4.017 18.845 -3.94 c
-18.774 -3.863 18.741 -3.763 18.741 -3.645 c
-f
-Q
-0.793 0.801 0.129 0.016 K
-0.8 w
-q 1 0 0 1 534.418 129.4519 cm
-0 0 m
--0.008 35.572 l
-6.464 35.572 l
-6.471 0 l
-3.23 -3.564 l
-0 0 l
-h
-S
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 537.5488 161.6247 cm
-0 0 m
-1.675 -0.264 l
-1.675 -1.014 l
--1.309 -0.397 l
--1.309 0.249 l
-0.411 0.676 l
--1.309 1.087 l
--1.309 1.749 l
-1.675 2.366 l
-1.675 1.617 l
-0 1.352 l
-1.675 0.955 l
-1.675 0.397 l
-h
-0.279 -1.07 m
-0.727 -1.07 1.08 -1.176 1.338 -1.393 c
-1.602 -1.606 1.735 -1.9 1.735 -2.275 c
-1.735 -2.657 1.602 -2.951 1.338 -3.157 c
-1.08 -3.37 0.727 -3.48 0.279 -3.48 c
-0.088 -3.48 l
--0.375 -3.48 -0.732 -3.37 -0.985 -3.157 c
--1.243 -2.951 -1.367 -2.657 -1.367 -2.275 c
--1.367 -1.893 -1.243 -1.592 -0.985 -1.378 c
--0.721 -1.172 -0.364 -1.07 0.088 -1.07 c
-h
-0.088 -1.849 m
--0.453 -1.849 -0.721 -1.988 -0.721 -2.275 c
--0.721 -2.539 -0.497 -2.679 -0.044 -2.701 c
-0.279 -2.716 l
-0.551 -2.716 0.754 -2.675 0.881 -2.598 c
-1.018 -2.517 1.088 -2.411 1.088 -2.275 c
-1.088 -2.146 1.018 -2.043 0.881 -1.966 c
-0.754 -1.885 0.551 -1.849 0.279 -1.849 c
-h
-0.926 -5.251 m
-0.941 -5.002 l
-0.941 -4.785 0.845 -4.638 0.661 -4.561 c
--1.309 -4.561 l
--1.309 -3.782 l
-1.675 -3.782 l
-1.675 -4.516 l
-1.352 -4.546 l
-1.606 -4.663 1.735 -4.829 1.735 -5.045 c
-1.735 -5.134 1.72 -5.207 1.69 -5.266 c
-h
--0.162 -6.531 m
--0.397 -6.31 l
--1.309 -6.31 l
--1.309 -5.531 l
-2.925 -5.531 l
-2.925 -6.31 l
-0.632 -6.31 l
-0.779 -6.413 l
-1.675 -6.957 l
-1.675 -7.882 l
-0.44 -7.015 l
--1.309 -7.971 l
--1.309 -7.074 l
-h
--1.309 -8.096 2.984 -0.779 re
--1.309 -8.875 m
-2.44 -8.052 m
-2.564 -8.052 2.668 -8.088 2.749 -8.169 c
-2.826 -8.247 2.866 -8.349 2.866 -8.478 c
-2.866 -8.603 2.826 -8.706 2.749 -8.787 c
-2.668 -8.864 2.564 -8.904 2.44 -8.904 c
-2.322 -8.904 2.223 -8.864 2.146 -8.787 c
-2.065 -8.717 2.028 -8.613 2.028 -8.478 c
-2.028 -8.349 2.065 -8.247 2.146 -8.169 c
-2.223 -8.088 2.322 -8.052 2.44 -8.052 c
-1.675 -10.099 m
-1.381 -10.113 l
-1.616 -10.29 1.735 -10.517 1.735 -10.804 c
-1.735 -11.322 1.371 -11.587 0.646 -11.597 c
--1.309 -11.597 l
--1.309 -10.819 l
-0.588 -10.819 l
-0.764 -10.819 0.885 -10.793 0.955 -10.745 c
-1.032 -10.693 1.072 -10.606 1.072 -10.481 c
-1.072 -10.334 0.999 -10.219 0.852 -10.142 c
--1.309 -10.142 l
--1.309 -9.363 l
-1.675 -9.363 l
-h
-0.279 -11.884 m
-0.768 -11.884 1.132 -11.973 1.367 -12.149 c
-1.61 -12.326 1.735 -12.568 1.735 -12.884 c
-1.735 -13.156 1.624 -13.369 1.411 -13.516 c
-1.675 -13.546 l
-1.675 -14.251 l
--1.309 -14.251 l
--1.69 -14.251 -1.977 -14.14 -2.176 -13.928 c
--2.382 -13.71 -2.484 -13.406 -2.484 -13.016 c
--2.484 -12.847 -2.448 -12.671 -2.382 -12.487 c
--2.323 -12.311 -2.238 -12.179 -2.132 -12.09 c
--1.602 -12.355 l
--1.669 -12.432 -1.727 -12.532 -1.779 -12.649 c
--1.827 -12.767 -1.852 -12.873 -1.852 -12.972 c
--1.852 -13.149 -1.808 -13.274 -1.72 -13.355 c
--1.639 -13.432 -1.507 -13.472 -1.323 -13.472 c
--1.073 -13.472 l
--1.272 -13.325 -1.367 -13.126 -1.367 -12.884 c
--1.367 -12.568 -1.246 -12.326 -1 -12.149 c
--0.746 -11.973 -0.393 -11.884 0.058 -11.884 c
-h
-0.073 -12.663 m
--0.202 -12.663 -0.405 -12.696 -0.53 -12.767 c
--0.647 -12.844 -0.706 -12.962 -0.706 -13.12 c
--0.706 -13.274 -0.655 -13.391 -0.544 -13.472 c
-0.881 -13.472 l
-1.007 -13.391 1.072 -13.274 1.072 -13.12 c
-1.072 -12.962 1.007 -12.844 0.881 -12.767 c
-0.754 -12.696 0.551 -12.663 0.279 -12.663 c
-h
-0.088 -14.685 0.646 -1.352 re
-0.088 -16.037 m
--0.206 -17.525 m
-1.675 -17.907 l
-1.675 -18.716 l
--1.309 -17.893 l
--1.309 -17.157 l
-1.675 -16.334 l
-1.675 -17.143 l
-h
--1.367 -20.083 m
--1.367 -19.678 -1.249 -19.366 -1.014 -19.142 c
--0.772 -18.925 -0.426 -18.819 0.014 -18.819 c
-0.264 -18.819 l
-0.735 -18.819 1.095 -18.921 1.352 -19.127 c
-1.606 -19.333 1.735 -19.627 1.735 -20.01 c
-1.735 -20.38 1.61 -20.66 1.367 -20.847 c
-1.132 -21.042 0.779 -21.141 0.309 -21.141 c
--0.073 -21.141 l
--0.073 -19.597 l
--0.302 -19.605 -0.467 -19.649 -0.574 -19.73 c
--0.673 -19.819 -0.721 -19.954 -0.721 -20.141 c
--0.721 -20.395 -0.628 -20.612 -0.441 -20.788 c
--0.927 -21.097 l
--1.055 -20.998 -1.162 -20.854 -1.249 -20.671 c
--1.326 -20.494 -1.367 -20.296 -1.367 -20.083 c
-0.47 -19.597 m
-0.47 -20.376 l
-0.544 -20.376 l
-0.72 -20.376 0.852 -20.347 0.941 -20.289 c
-1.036 -20.23 1.088 -20.131 1.088 -19.994 c
-1.088 -19.866 1.036 -19.767 0.941 -19.701 c
-0.841 -19.642 0.683 -19.605 0.47 -19.597 c
-0.926 -22.868 m
-0.941 -22.618 l
-0.941 -22.402 0.845 -22.254 0.661 -22.177 c
--1.309 -22.177 l
--1.309 -21.398 l
-1.675 -21.398 l
-1.675 -22.134 l
-1.352 -22.163 l
-1.606 -22.28 1.735 -22.446 1.735 -22.662 c
-1.735 -22.751 1.72 -22.824 1.69 -22.883 c
-h
--0.515 -24.471 m
--0.449 -24.471 -0.382 -24.434 -0.324 -24.368 c
--0.265 -24.309 -0.191 -24.169 -0.103 -23.956 c
-0.033 -23.632 0.168 -23.412 0.309 -23.295 c
-0.444 -23.177 0.617 -23.118 0.823 -23.118 c
-1.088 -23.118 1.301 -23.21 1.469 -23.397 c
-1.646 -23.582 1.735 -23.831 1.735 -24.147 c
-1.735 -24.471 1.646 -24.727 1.469 -24.926 c
-1.301 -25.121 1.076 -25.22 0.794 -25.22 c
-0.794 -24.441 l
-1.036 -24.441 1.161 -24.338 1.161 -24.133 c
-1.161 -24.052 1.132 -23.985 1.072 -23.927 c
-1.022 -23.875 0.955 -23.853 0.867 -23.853 c
-0.797 -23.853 0.739 -23.883 0.69 -23.941 c
-0.639 -24 0.565 -24.136 0.47 -24.353 c
-0.353 -24.677 0.22 -24.9 0.073 -25.029 c
--0.067 -25.165 -0.25 -25.234 -0.485 -25.234 c
--0.75 -25.234 -0.967 -25.132 -1.132 -24.926 c
--1.29 -24.727 -1.367 -24.471 -1.367 -24.147 c
--1.367 -23.919 -1.323 -23.725 -1.235 -23.559 c
--1.147 -23.39 -1.029 -23.258 -0.882 -23.162 c
--0.728 -23.074 -0.559 -23.03 -0.382 -23.03 c
--0.382 -23.765 l
--0.522 -23.772 -0.625 -23.809 -0.691 -23.868 c
--0.761 -23.927 -0.794 -24.022 -0.794 -24.162 c
--0.794 -24.368 -0.702 -24.471 -0.515 -24.471 c
--1.309 -25.587 2.984 -0.78 re
--1.309 -26.367 m
-2.44 -25.544 m
-2.564 -25.544 2.668 -25.581 2.749 -25.661 c
-2.826 -25.739 2.866 -25.841 2.866 -25.97 c
-2.866 -26.094 2.826 -26.198 2.749 -26.279 c
-2.668 -26.356 2.564 -26.396 2.44 -26.396 c
-2.322 -26.396 2.223 -26.356 2.146 -26.279 c
-2.065 -26.209 2.028 -26.106 2.028 -25.97 c
-2.028 -25.841 2.065 -25.739 2.146 -25.661 c
-2.223 -25.581 2.322 -25.544 2.44 -25.544 c
-0.279 -26.782 m
-0.727 -26.782 1.08 -26.888 1.338 -27.106 c
-1.602 -27.318 1.735 -27.613 1.735 -27.987 c
-1.735 -28.369 1.602 -28.663 1.338 -28.869 c
-1.08 -29.082 0.727 -29.192 0.279 -29.192 c
-0.088 -29.192 l
--0.375 -29.192 -0.732 -29.082 -0.985 -28.869 c
--1.243 -28.663 -1.367 -28.369 -1.367 -27.987 c
--1.367 -27.605 -1.243 -27.304 -0.985 -27.09 c
--0.721 -26.884 -0.364 -26.782 0.088 -26.782 c
-h
-0.088 -27.561 m
--0.453 -27.561 -0.721 -27.701 -0.721 -27.987 c
--0.721 -28.251 -0.497 -28.392 -0.044 -28.413 c
-0.279 -28.428 l
-0.551 -28.428 0.754 -28.388 0.881 -28.311 c
-1.018 -28.23 1.088 -28.123 1.088 -27.987 c
-1.088 -27.858 1.018 -27.756 0.881 -27.678 c
-0.754 -27.598 0.551 -27.561 0.279 -27.561 c
-h
-1.675 -30.214 m
-1.381 -30.229 l
-1.616 -30.406 1.735 -30.633 1.735 -30.919 c
-1.735 -31.438 1.371 -31.702 0.646 -31.713 c
--1.309 -31.713 l
--1.309 -30.934 l
-0.588 -30.934 l
-0.764 -30.934 0.885 -30.909 0.955 -30.861 c
-1.032 -30.809 1.072 -30.721 1.072 -30.597 c
-1.072 -30.449 0.999 -30.335 0.852 -30.258 c
--1.309 -30.258 l
--1.309 -29.479 l
-1.675 -29.479 l
-h
-f
-Q
-q 1 0 0 1 442.9198 145.1834 cm
-0 0 m
--1.058 0 l
--1.058 -3.572 l
--1.558 -3.572 l
--1.558 0 l
--2.616 0 l
--2.616 0.441 l
-0 0.441 l
-h
-0.819 -0.897 m
-1.003 -0.654 1.238 -0.529 1.525 -0.529 c
-2.055 -0.529 2.323 -0.881 2.333 -1.587 c
-2.333 -3.572 l
-1.849 -3.572 l
-1.849 -1.617 l
-1.849 -1.382 1.808 -1.216 1.731 -1.117 c
-1.65 -1.022 1.532 -0.97 1.378 -0.97 c
-1.261 -0.97 1.151 -1.01 1.055 -1.087 c
-0.956 -1.168 0.879 -1.275 0.819 -1.411 c
-0.819 -3.572 l
-0.334 -3.572 l
-0.334 0.661 l
-0.819 0.661 l
-h
-3.406 -3.572 -0.5 2.984 re
-3.436 0.206 m
-3.436 0.118 3.41 0.044 3.362 -0.014 c
-3.322 -0.066 3.252 -0.088 3.156 -0.088 c
-3.069 -0.088 2.998 -0.066 2.951 -0.014 c
-2.911 0.044 2.892 0.11 2.892 0.191 c
-2.892 0.279 2.911 0.353 2.951 0.412 c
-2.998 0.47 3.069 0.5 3.156 0.5 c
-3.252 0.5 3.322 0.47 3.362 0.412 c
-3.41 0.353 3.436 0.283 3.436 0.206 c
-5.523 -2.807 m
-5.523 -2.701 5.483 -2.612 5.405 -2.543 c
-5.325 -2.466 5.174 -2.377 4.95 -2.278 c
-4.685 -2.171 4.498 -2.08 4.391 -1.999 c
-4.281 -1.922 4.204 -1.834 4.156 -1.735 c
-4.104 -1.639 4.083 -1.521 4.083 -1.382 c
-4.083 -1.139 4.171 -0.937 4.347 -0.779 c
-4.523 -0.613 4.748 -0.529 5.024 -0.529 c
-5.317 -0.529 5.552 -0.617 5.729 -0.794 c
-5.905 -0.962 5.993 -1.176 5.993 -1.44 c
-5.508 -1.44 l
-5.508 -1.304 5.457 -1.19 5.361 -1.103 c
-5.273 -1.007 5.159 -0.955 5.024 -0.955 c
-4.877 -0.955 4.762 -0.995 4.685 -1.072 c
-4.604 -1.143 4.567 -1.242 4.567 -1.367 c
-4.567 -1.466 4.597 -1.543 4.656 -1.602 c
-4.715 -1.66 4.854 -1.741 5.082 -1.837 c
-5.442 -1.984 5.689 -2.127 5.818 -2.263 c
-5.953 -2.392 6.023 -2.564 6.023 -2.778 c
-6.023 -3.035 5.928 -3.241 5.743 -3.395 c
-5.567 -3.553 5.332 -3.63 5.038 -3.63 c
-4.722 -3.63 4.469 -3.542 4.274 -3.366 c
-4.087 -3.183 3.994 -2.95 3.994 -2.675 c
-4.48 -2.675 l
-4.486 -2.844 4.538 -2.977 4.627 -3.072 c
-4.722 -3.16 4.862 -3.204 5.038 -3.204 c
-5.192 -3.204 5.31 -3.171 5.39 -3.102 c
-5.479 -3.035 5.523 -2.936 5.523 -2.807 c
-8.213 -3.572 -0.5 2.984 re
-8.243 0.206 m
-8.243 0.118 8.216 0.044 8.169 -0.014 c
-8.129 -0.066 8.058 -0.088 7.963 -0.088 c
-7.875 -0.088 7.805 -0.066 7.757 -0.014 c
-7.717 0.044 7.699 0.11 7.699 0.191 c
-7.699 0.279 7.717 0.353 7.757 0.412 c
-7.805 0.47 7.875 0.5 7.963 0.5 c
-8.058 0.5 8.129 0.47 8.169 0.412 c
-8.216 0.353 8.243 0.283 8.243 0.206 c
-10.326 -2.807 m
-10.326 -2.701 10.286 -2.612 10.208 -2.543 c
-10.128 -2.466 9.977 -2.377 9.753 -2.278 c
-9.488 -2.171 9.301 -2.08 9.194 -1.999 c
-9.084 -1.922 9.007 -1.834 8.959 -1.735 c
-8.908 -1.639 8.885 -1.521 8.885 -1.382 c
-8.885 -1.139 8.974 -0.937 9.15 -0.779 c
-9.326 -0.613 9.55 -0.529 9.826 -0.529 c
-10.12 -0.529 10.356 -0.617 10.532 -0.794 c
-10.708 -0.962 10.796 -1.176 10.796 -1.44 c
-10.311 -1.44 l
-10.311 -1.304 10.26 -1.19 10.165 -1.103 c
-10.076 -1.007 9.962 -0.955 9.826 -0.955 c
-9.679 -0.955 9.565 -0.995 9.488 -1.072 c
-9.407 -1.143 9.371 -1.242 9.371 -1.367 c
-9.371 -1.466 9.4 -1.543 9.459 -1.602 c
-9.517 -1.66 9.658 -1.741 9.885 -1.837 c
-10.246 -1.984 10.491 -2.127 10.62 -2.263 c
-10.756 -2.392 10.826 -2.564 10.826 -2.778 c
-10.826 -3.035 10.73 -3.241 10.547 -3.395 c
-10.37 -3.553 10.135 -3.63 9.841 -3.63 c
-9.525 -3.63 9.271 -3.542 9.076 -3.366 c
-8.889 -3.183 8.797 -2.95 8.797 -2.675 c
-9.282 -2.675 l
-9.29 -2.844 9.342 -2.977 9.429 -3.072 c
-9.525 -3.16 9.664 -3.204 9.841 -3.204 c
-9.995 -3.204 10.113 -3.171 10.194 -3.102 c
-10.282 -3.035 10.326 -2.936 10.326 -2.807 c
-14.015 -3.572 m
-13.986 -3.505 13.964 -3.395 13.957 -3.248 c
-13.78 -3.505 13.56 -3.63 13.295 -3.63 c
-13.02 -3.63 12.803 -3.557 12.648 -3.41 c
-12.501 -3.256 12.428 -3.039 12.428 -2.763 c
-12.428 -2.462 12.531 -2.219 12.737 -2.043 c
-12.943 -1.859 13.225 -1.764 13.589 -1.764 c
-13.942 -1.764 l
-13.942 -1.44 l
-13.942 -1.264 13.901 -1.143 13.824 -1.072 c
-13.743 -0.995 13.626 -0.955 13.471 -0.955 c
-13.325 -0.955 13.2 -0.999 13.104 -1.087 c
-13.016 -1.176 12.972 -1.286 12.972 -1.411 c
-12.486 -1.411 l
-12.486 -1.264 12.531 -1.124 12.619 -0.985 c
-12.707 -0.837 12.825 -0.727 12.972 -0.646 c
-13.126 -0.569 13.299 -0.529 13.486 -0.529 c
-13.799 -0.529 14.034 -0.61 14.192 -0.764 c
-14.346 -0.912 14.427 -1.132 14.427 -1.425 c
-14.427 -2.925 l
-14.435 -3.16 14.471 -3.362 14.53 -3.528 c
-14.53 -3.572 l
-h
-13.369 -3.189 m
-13.486 -3.189 13.596 -3.156 13.707 -3.087 c
-13.814 -3.021 13.891 -2.936 13.942 -2.836 c
-13.942 -2.131 l
-13.677 -2.131 l
-13.442 -2.131 13.255 -2.183 13.119 -2.278 c
-12.99 -2.377 12.928 -2.52 12.928 -2.705 c
-12.928 -2.873 12.957 -2.994 13.016 -3.072 c
-13.082 -3.152 13.2 -3.189 13.369 -3.189 c
-16.845 0.133 m
-16.845 -0.588 l
-17.301 -0.588 l
-17.301 -0.985 l
-16.845 -0.985 l
-16.845 -2.836 l
-16.845 -2.954 16.864 -3.042 16.904 -3.102 c
-16.941 -3.16 17.01 -3.189 17.109 -3.189 c
-17.168 -3.189 17.231 -3.183 17.301 -3.16 c
-17.301 -3.572 l
-17.184 -3.609 17.069 -3.63 16.962 -3.63 c
-16.764 -3.63 16.613 -3.564 16.507 -3.424 c
-16.407 -3.289 16.36 -3.094 16.36 -2.836 c
-16.36 -0.985 l
-15.904 -0.985 l
-15.904 -0.588 l
-16.36 -0.588 l
-16.36 0.133 l
-h
-19.296 -3.572 m
-19.266 -3.505 19.245 -3.395 19.237 -3.248 c
-19.061 -3.505 18.84 -3.63 18.576 -3.63 c
-18.3 -3.63 18.084 -3.557 17.929 -3.41 c
-17.782 -3.256 17.708 -3.039 17.708 -2.763 c
-17.708 -2.462 17.812 -2.219 18.017 -2.043 c
-18.223 -1.859 18.506 -1.764 18.869 -1.764 c
-19.223 -1.764 l
-19.223 -1.44 l
-19.223 -1.264 19.183 -1.143 19.105 -1.072 c
-19.025 -0.995 18.907 -0.955 18.753 -0.955 c
-18.605 -0.955 18.48 -0.999 18.385 -1.087 c
-18.296 -1.176 18.252 -1.286 18.252 -1.411 c
-17.768 -1.411 l
-17.768 -1.264 17.812 -1.124 17.899 -0.985 c
-17.988 -0.837 18.105 -0.727 18.252 -0.646 c
-18.407 -0.569 18.58 -0.529 18.767 -0.529 c
-19.079 -0.529 19.314 -0.61 19.472 -0.764 c
-19.627 -0.912 19.708 -1.132 19.708 -1.425 c
-19.708 -2.925 l
-19.715 -3.16 19.752 -3.362 19.81 -3.528 c
-19.81 -3.572 l
-h
-18.649 -3.189 m
-18.767 -3.189 18.877 -3.156 18.988 -3.087 c
-19.094 -3.021 19.171 -2.936 19.223 -2.836 c
-19.223 -2.131 l
-18.958 -2.131 l
-18.723 -2.131 18.535 -2.183 18.399 -2.278 c
-18.271 -2.377 18.208 -2.52 18.208 -2.705 c
-18.208 -2.873 18.238 -2.994 18.296 -3.072 c
-18.362 -3.152 18.48 -3.189 18.649 -3.189 c
-20.185 -1.94 m
-20.185 -1.481 20.266 -1.132 20.436 -0.897 c
-20.612 -0.654 20.862 -0.529 21.185 -0.529 c
-21.486 -0.529 21.718 -0.661 21.876 -0.926 c
-21.905 -0.588 l
-22.346 -0.588 l
-22.346 -3.601 l
-22.346 -3.972 22.247 -4.255 22.052 -4.453 c
-21.865 -4.648 21.604 -4.748 21.273 -4.748 c
-21.126 -4.748 20.957 -4.707 20.773 -4.63 c
-20.586 -4.56 20.45 -4.472 20.361 -4.365 c
-20.553 -4.027 l
-20.758 -4.233 20.983 -4.336 21.229 -4.336 c
-21.629 -4.336 21.836 -4.108 21.847 -3.659 c
-21.847 -3.278 l
-21.689 -3.513 21.468 -3.63 21.185 -3.63 c
-20.869 -3.63 20.627 -3.513 20.45 -3.278 c
-20.28 -3.042 20.193 -2.712 20.185 -2.278 c
-h
-20.671 -2.219 m
-20.671 -2.554 20.718 -2.8 20.818 -2.954 c
-20.913 -3.112 21.074 -3.189 21.302 -3.189 c
-21.545 -3.189 21.729 -3.068 21.847 -2.822 c
-21.847 -1.338 l
-21.729 -1.095 21.552 -0.97 21.317 -0.97 c
-21.089 -0.97 20.928 -1.051 20.832 -1.205 c
-20.733 -1.363 20.677 -1.602 20.671 -1.926 c
-h
-22.908 -3.307 m
-22.908 -3.219 22.931 -3.146 22.982 -3.087 c
-23.041 -3.028 23.118 -2.998 23.217 -2.998 c
-23.324 -2.998 23.401 -3.028 23.453 -3.087 c
-23.511 -3.146 23.54 -3.219 23.54 -3.307 c
-23.54 -3.388 23.511 -3.454 23.453 -3.513 c
-23.401 -3.572 23.324 -3.601 23.217 -3.601 c
-23.118 -3.601 23.041 -3.572 22.982 -3.513 c
-22.931 -3.454 22.908 -3.388 22.908 -3.307 c
-26.061 -3.572 -0.5 4.013 re
-27.421 0.133 m
-27.421 -0.588 l
-27.877 -0.588 l
-27.877 -0.985 l
-27.421 -0.985 l
-27.421 -2.836 l
-27.421 -2.954 27.439 -3.042 27.48 -3.102 c
-27.517 -3.16 27.586 -3.189 27.686 -3.189 c
-27.744 -3.189 27.806 -3.183 27.877 -3.16 c
-27.877 -3.572 l
-27.759 -3.609 27.646 -3.63 27.538 -3.63 c
-27.34 -3.63 27.189 -3.564 27.083 -3.424 c
-26.984 -3.289 26.936 -3.094 26.936 -2.836 c
-26.936 -0.985 l
-26.48 -0.985 l
-26.48 -0.588 l
-26.936 -0.588 l
-26.936 0.133 l
-h
-30.078 -3.572 -0.5 4.233 re
-30.647 -1.94 m
-30.647 -1.51 30.75 -1.168 30.956 -0.912 c
-31.169 -0.658 31.449 -0.529 31.794 -0.529 c
-32.136 -0.529 32.411 -0.658 32.617 -0.912 c
-32.83 -1.157 32.944 -1.492 32.955 -1.911 c
-32.955 -2.219 l
-32.955 -2.653 32.845 -2.994 32.631 -3.248 c
-32.426 -3.505 32.147 -3.63 31.794 -3.63 c
-31.449 -3.63 31.177 -3.509 30.971 -3.263 c
-30.765 -3.021 30.655 -2.686 30.647 -2.263 c
-h
-31.133 -2.219 m
-31.133 -2.535 31.191 -2.778 31.309 -2.954 c
-31.434 -3.123 31.596 -3.204 31.794 -3.204 c
-32.224 -3.204 32.448 -2.896 32.471 -2.278 c
-32.471 -1.94 l
-32.471 -1.639 32.404 -1.396 32.279 -1.22 c
-32.161 -1.043 32 -0.955 31.794 -0.955 c
-31.596 -0.955 31.434 -1.043 31.309 -1.22 c
-31.191 -1.396 31.133 -1.639 31.133 -1.94 c
-h
-33.294 -1.94 m
-33.294 -1.51 33.396 -1.168 33.602 -0.912 c
-33.815 -0.658 34.094 -0.529 34.44 -0.529 c
-34.782 -0.529 35.058 -0.658 35.263 -0.912 c
-35.476 -1.157 35.59 -1.492 35.601 -1.911 c
-35.601 -2.219 l
-35.601 -2.653 35.49 -2.994 35.278 -3.248 c
-35.072 -3.505 34.792 -3.63 34.44 -3.63 c
-34.094 -3.63 33.822 -3.509 33.616 -3.263 c
-33.411 -3.021 33.3 -2.686 33.294 -2.263 c
-h
-33.778 -2.219 m
-33.778 -2.535 33.837 -2.778 33.955 -2.954 c
-34.079 -3.123 34.241 -3.204 34.44 -3.204 c
-34.869 -3.204 35.094 -2.896 35.116 -2.278 c
-35.116 -1.94 l
-35.116 -1.639 35.05 -1.396 34.925 -1.22 c
-34.807 -1.043 34.646 -0.955 34.44 -0.955 c
-34.241 -0.955 34.079 -1.043 33.955 -1.22 c
-33.837 -1.396 33.778 -1.639 33.778 -1.94 c
-h
-36.788 -2.205 m
-36.523 -2.499 l
-36.523 -3.572 l
-36.038 -3.572 l
-36.038 0.661 l
-36.523 0.661 l
-36.523 -1.866 l
-37.449 -0.588 l
-38.038 -0.588 l
-37.097 -1.837 l
-38.17 -3.572 l
-37.597 -3.572 l
-h
-39.856 -2.807 m
-39.856 -2.701 39.816 -2.612 39.739 -2.543 c
-39.658 -2.466 39.507 -2.377 39.283 -2.278 c
-39.018 -2.171 38.831 -2.08 38.725 -1.999 c
-38.615 -1.922 38.537 -1.834 38.489 -1.735 c
-38.438 -1.639 38.416 -1.521 38.416 -1.382 c
-38.416 -1.139 38.504 -0.937 38.68 -0.779 c
-38.857 -0.613 39.081 -0.529 39.357 -0.529 c
-39.65 -0.529 39.885 -0.617 40.062 -0.794 c
-40.238 -0.962 40.327 -1.176 40.327 -1.44 c
-39.841 -1.44 l
-39.841 -1.304 39.79 -1.19 39.694 -1.103 c
-39.606 -1.007 39.492 -0.955 39.357 -0.955 c
-39.21 -0.955 39.095 -0.995 39.018 -1.072 c
-38.938 -1.143 38.901 -1.242 38.901 -1.367 c
-38.901 -1.466 38.931 -1.543 38.989 -1.602 c
-39.048 -1.66 39.187 -1.741 39.415 -1.837 c
-39.775 -1.984 40.022 -2.127 40.151 -2.263 c
-40.286 -2.392 40.356 -2.564 40.356 -2.778 c
-40.356 -3.035 40.261 -3.241 40.076 -3.395 c
-39.901 -3.553 39.665 -3.63 39.371 -3.63 c
-39.056 -3.63 38.802 -3.542 38.607 -3.366 c
-38.42 -3.183 38.328 -2.95 38.328 -2.675 c
-38.813 -2.675 l
-38.821 -2.844 38.871 -2.977 38.96 -3.072 c
-39.056 -3.16 39.195 -3.204 39.371 -3.204 c
-39.526 -3.204 39.644 -3.171 39.724 -3.102 c
-39.812 -3.035 39.856 -2.936 39.856 -2.807 c
-42.546 -3.572 -0.5 4.233 re
-43.752 -3.572 -0.5 2.984 re
-43.781 0.206 m
-43.781 0.118 43.756 0.044 43.708 -0.014 c
-43.667 -0.066 43.598 -0.088 43.502 -0.088 c
-43.413 -0.088 43.344 -0.066 43.296 -0.014 c
-43.255 0.044 43.237 0.11 43.237 0.191 c
-43.237 0.279 43.255 0.353 43.296 0.412 c
-43.344 0.47 43.413 0.5 43.502 0.5 c
-43.598 0.5 43.667 0.47 43.708 0.412 c
-43.756 0.353 43.781 0.283 43.781 0.206 c
-45.173 -2.205 m
-44.909 -2.499 l
-44.909 -3.572 l
-44.425 -3.572 l
-44.425 0.661 l
-44.909 0.661 l
-44.909 -1.866 l
-45.836 -0.588 l
-46.424 -0.588 l
-45.483 -1.837 l
-46.555 -3.572 l
-45.982 -3.572 l
-h
-47.808 -3.63 m
-47.434 -3.63 47.151 -3.524 46.956 -3.307 c
-46.758 -3.083 46.662 -2.755 46.662 -2.323 c
-46.662 -1.955 l
-46.662 -1.514 46.754 -1.168 46.941 -0.912 c
-47.136 -0.658 47.411 -0.529 47.764 -0.529 c
-48.107 -0.529 48.36 -0.643 48.529 -0.867 c
-48.705 -1.095 48.797 -1.44 48.808 -1.911 c
-48.808 -2.219 l
-47.147 -2.219 l
-47.147 -2.293 l
-47.147 -2.616 47.206 -2.851 47.324 -2.998 c
-47.441 -3.138 47.61 -3.204 47.838 -3.204 c
-47.985 -3.204 48.11 -3.183 48.22 -3.131 c
-48.327 -3.072 48.429 -2.984 48.529 -2.866 c
-48.778 -3.175 l
-48.573 -3.48 48.25 -3.63 47.808 -3.63 c
-47.764 -0.955 m
-47.559 -0.955 47.405 -1.025 47.309 -1.161 c
-47.21 -1.301 47.155 -1.514 47.147 -1.808 c
-48.323 -1.808 l
-48.323 -1.735 l
-48.301 -1.462 48.25 -1.264 48.161 -1.147 c
-48.073 -1.022 47.941 -0.955 47.764 -0.955 c
-51.953 -3.572 m
-51.924 -3.505 51.902 -3.395 51.895 -3.248 c
-51.718 -3.505 51.498 -3.63 51.234 -3.63 c
-50.958 -3.63 50.741 -3.557 50.586 -3.41 c
-50.44 -3.256 50.366 -3.039 50.366 -2.763 c
-50.366 -2.462 50.469 -2.219 50.675 -2.043 c
-50.881 -1.859 51.164 -1.764 51.527 -1.764 c
-51.88 -1.764 l
-51.88 -1.44 l
-51.88 -1.264 51.839 -1.143 51.762 -1.072 c
-51.681 -0.995 51.564 -0.955 51.41 -0.955 c
-51.263 -0.955 51.138 -0.999 51.043 -1.087 c
-50.954 -1.176 50.91 -1.286 50.91 -1.411 c
-50.425 -1.411 l
-50.425 -1.264 50.469 -1.124 50.557 -0.985 c
-50.646 -0.837 50.763 -0.727 50.91 -0.646 c
-51.064 -0.569 51.237 -0.529 51.425 -0.529 c
-51.737 -0.529 51.972 -0.61 52.13 -0.764 c
-52.284 -0.912 52.365 -1.132 52.365 -1.425 c
-52.365 -2.925 l
-52.373 -3.16 52.41 -3.362 52.468 -3.528 c
-52.468 -3.572 l
-h
-51.307 -3.189 m
-51.425 -3.189 51.535 -3.156 51.645 -3.087 c
-51.752 -3.021 51.829 -2.936 51.88 -2.836 c
-51.88 -2.131 l
-51.616 -2.131 l
-51.38 -2.131 51.193 -2.183 51.057 -2.278 c
-50.929 -2.377 50.866 -2.52 50.866 -2.705 c
-50.866 -2.873 50.895 -2.994 50.954 -3.072 c
-51.02 -3.152 51.138 -3.189 51.307 -3.189 c
-54.045 -1.94 m
-54.045 -1.481 54.125 -1.132 54.295 -0.897 c
-54.471 -0.654 54.721 -0.529 55.045 -0.529 c
-55.327 -0.529 55.548 -0.646 55.706 -0.881 c
-55.706 0.661 l
-56.19 0.661 l
-56.19 -3.572 l
-55.75 -3.572 l
-55.72 -3.248 l
-55.562 -3.505 55.338 -3.63 55.045 -3.63 c
-54.728 -3.63 54.486 -3.513 54.309 -3.278 c
-54.133 -3.035 54.045 -2.69 54.045 -2.248 c
-h
-54.53 -2.219 m
-54.53 -2.554 54.578 -2.8 54.677 -2.954 c
-54.773 -3.112 54.934 -3.189 55.162 -3.189 c
-55.404 -3.189 55.588 -3.072 55.706 -2.836 c
-55.706 -1.323 l
-55.577 -1.087 55.397 -0.97 55.162 -0.97 c
-54.934 -0.97 54.773 -1.051 54.677 -1.205 c
-54.578 -1.363 54.53 -1.602 54.53 -1.926 c
-h
-57.823 -3.63 m
-57.447 -3.63 57.165 -3.524 56.969 -3.307 c
-56.772 -3.083 56.676 -2.755 56.676 -2.323 c
-56.676 -1.955 l
-56.676 -1.514 56.768 -1.168 56.955 -0.912 c
-57.15 -0.658 57.426 -0.529 57.778 -0.529 c
-58.12 -0.529 58.374 -0.643 58.542 -0.867 c
-58.719 -1.095 58.811 -1.44 58.822 -1.911 c
-58.822 -2.219 l
-57.161 -2.219 l
-57.161 -2.293 l
-57.161 -2.616 57.22 -2.851 57.337 -2.998 c
-57.455 -3.138 57.624 -3.204 57.852 -3.204 c
-57.998 -3.204 58.124 -3.183 58.234 -3.131 c
-58.341 -3.072 58.443 -2.984 58.542 -2.866 c
-58.792 -3.175 l
-58.586 -3.48 58.264 -3.63 57.823 -3.63 c
-57.778 -0.955 m
-57.572 -0.955 57.418 -1.025 57.323 -1.161 c
-57.223 -1.301 57.168 -1.514 57.161 -1.808 c
-58.337 -1.808 l
-58.337 -1.735 l
-58.315 -1.462 58.264 -1.264 58.175 -1.147 c
-58.087 -1.022 57.954 -0.955 57.778 -0.955 c
-60.038 -2.836 m
-60.612 -0.588 l
-61.111 -0.588 l
-60.215 -3.572 l
-59.862 -3.572 l
-58.966 -0.588 l
-59.45 -0.588 l
-h
-62.482 -3.63 m
-62.107 -3.63 61.824 -3.524 61.63 -3.307 c
-61.431 -3.083 61.335 -2.755 61.335 -2.323 c
-61.335 -1.955 l
-61.335 -1.514 61.427 -1.168 61.615 -0.912 c
-61.809 -0.658 62.085 -0.529 62.438 -0.529 c
-62.779 -0.529 63.033 -0.643 63.203 -0.867 c
-63.379 -1.095 63.471 -1.44 63.481 -1.911 c
-63.481 -2.219 l
-61.821 -2.219 l
-61.821 -2.293 l
-61.821 -2.616 61.879 -2.851 61.997 -2.998 c
-62.114 -3.138 62.284 -3.204 62.511 -3.204 c
-62.658 -3.204 62.783 -3.183 62.893 -3.131 c
-63 -3.072 63.103 -2.984 63.203 -2.866 c
-63.452 -3.175 l
-63.246 -3.48 62.923 -3.63 62.482 -3.63 c
-62.438 -0.955 m
-62.232 -0.955 62.078 -1.025 61.982 -1.161 c
-61.883 -1.301 61.828 -1.514 61.821 -1.808 c
-62.997 -1.808 l
-62.997 -1.735 l
-62.974 -1.462 62.923 -1.264 62.835 -1.147 c
-62.746 -1.022 62.614 -0.955 62.438 -0.955 c
-64.422 -3.572 -0.5 4.233 re
-64.996 -1.94 m
-64.996 -1.51 65.098 -1.168 65.304 -0.912 c
-65.517 -0.658 65.796 -0.529 66.142 -0.529 c
-66.484 -0.529 66.76 -0.658 66.966 -0.912 c
-67.178 -1.157 67.292 -1.492 67.303 -1.911 c
-67.303 -2.219 l
-67.303 -2.653 67.193 -2.994 66.98 -3.248 c
-66.774 -3.505 66.495 -3.63 66.142 -3.63 c
-65.796 -3.63 65.524 -3.509 65.319 -3.263 c
-65.113 -3.021 65.003 -2.686 64.996 -2.263 c
-h
-65.48 -2.219 m
-65.48 -2.535 65.539 -2.778 65.657 -2.954 c
-65.782 -3.123 65.944 -3.204 66.142 -3.204 c
-66.572 -3.204 66.796 -2.896 66.818 -2.278 c
-66.818 -1.94 l
-66.818 -1.639 66.752 -1.396 66.627 -1.22 c
-66.509 -1.043 66.348 -0.955 66.142 -0.955 c
-65.944 -0.955 65.782 -1.043 65.657 -1.22 c
-65.539 -1.396 65.48 -1.639 65.48 -1.94 c
-h
-69.887 -2.219 m
-69.887 -2.69 69.802 -3.042 69.636 -3.278 c
-69.468 -3.513 69.229 -3.63 68.917 -3.63 c
-68.612 -3.63 68.379 -3.52 68.225 -3.293 c
-68.225 -4.718 l
-67.741 -4.718 l
-67.741 -0.588 l
-68.181 -0.588 l
-68.211 -0.926 l
-68.365 -0.661 68.597 -0.529 68.902 -0.529 c
-69.233 -0.529 69.478 -0.646 69.636 -0.881 c
-69.802 -1.109 69.887 -1.448 69.887 -1.896 c
-h
-69.401 -1.94 m
-69.401 -1.61 69.347 -1.363 69.239 -1.205 c
-69.141 -1.051 68.979 -0.97 68.755 -0.97 c
-68.52 -0.97 68.343 -1.087 68.225 -1.323 c
-68.225 -2.866 l
-68.343 -3.094 68.523 -3.204 68.769 -3.204 c
-68.983 -3.204 69.141 -3.127 69.239 -2.969 c
-69.347 -2.815 69.401 -2.572 69.401 -2.248 c
-h
-71.404 -3.63 m
-71.03 -3.63 70.746 -3.524 70.552 -3.307 c
-70.353 -3.083 70.258 -2.755 70.258 -2.323 c
-70.258 -1.955 l
-70.258 -1.514 70.349 -1.168 70.537 -0.912 c
-70.731 -0.658 71.007 -0.529 71.36 -0.529 c
-71.702 -0.529 71.955 -0.643 72.125 -0.867 c
-72.301 -1.095 72.393 -1.44 72.404 -1.911 c
-72.404 -2.219 l
-70.743 -2.219 l
-70.743 -2.293 l
-70.743 -2.616 70.802 -2.851 70.919 -2.998 c
-71.037 -3.138 71.206 -3.204 71.434 -3.204 c
-71.581 -3.204 71.706 -3.183 71.816 -3.131 c
-71.922 -3.072 72.025 -2.984 72.125 -2.866 c
-72.375 -3.175 l
-72.169 -3.48 71.845 -3.63 71.404 -3.63 c
-71.36 -0.955 m
-71.155 -0.955 71 -1.025 70.904 -1.161 c
-70.806 -1.301 70.75 -1.514 70.743 -1.808 c
-71.919 -1.808 l
-71.919 -1.735 l
-71.897 -1.462 71.845 -1.264 71.757 -1.147 c
-71.669 -1.022 71.537 -0.955 71.36 -0.955 c
-74.05 -1.043 m
-73.981 -1.036 73.906 -1.029 73.829 -1.029 c
-73.572 -1.029 73.396 -1.168 73.301 -1.44 c
-73.301 -3.572 l
-72.815 -3.572 l
-72.815 -0.588 l
-73.285 -0.588 l
-73.301 -0.897 l
-73.426 -0.654 73.609 -0.529 73.844 -0.529 c
-73.921 -0.529 73.984 -0.544 74.035 -0.573 c
-h
-74.785 0.353 m
-74.741 -0.661 l
-74.373 -0.661 l
-74.388 0.661 l
-74.785 0.661 l
-h
-76.611 -2.807 m
-76.611 -2.701 76.571 -2.612 76.493 -2.543 c
-76.412 -2.466 76.262 -2.377 76.038 -2.278 c
-75.774 -2.171 75.586 -2.08 75.479 -1.999 c
-75.369 -1.922 75.292 -1.834 75.244 -1.735 c
-75.193 -1.639 75.171 -1.521 75.171 -1.382 c
-75.171 -1.139 75.259 -0.937 75.435 -0.779 c
-75.612 -0.613 75.836 -0.529 76.111 -0.529 c
-76.406 -0.529 76.641 -0.617 76.817 -0.794 c
-76.994 -0.962 77.081 -1.176 77.081 -1.44 c
-76.597 -1.44 l
-76.597 -1.304 76.545 -1.19 76.45 -1.103 c
-76.362 -1.007 76.248 -0.955 76.111 -0.955 c
-75.965 -0.955 75.851 -0.995 75.774 -1.072 c
-75.693 -1.143 75.656 -1.242 75.656 -1.367 c
-75.656 -1.466 75.685 -1.543 75.745 -1.602 c
-75.803 -1.66 75.942 -1.741 76.171 -1.837 c
-76.53 -1.984 76.777 -2.127 76.905 -2.263 c
-77.041 -2.392 77.112 -2.564 77.112 -2.778 c
-77.112 -3.035 77.016 -3.241 76.832 -3.395 c
-76.655 -3.553 76.42 -3.63 76.127 -3.63 c
-75.81 -3.63 75.556 -3.542 75.362 -3.366 c
-75.174 -3.183 75.082 -2.95 75.082 -2.675 c
-75.568 -2.675 l
-75.575 -2.844 75.627 -2.977 75.714 -3.072 c
-75.81 -3.16 75.95 -3.204 76.127 -3.204 c
-76.281 -3.204 76.398 -3.171 76.479 -3.102 c
-76.568 -3.035 76.611 -2.936 76.611 -2.807 c
-f
-Q
-q 1 0 0 1 453.7345 138.0102 cm
-0 0 m
-0.015 -0.324 l
-0.199 -0.07 0.441 0.059 0.735 0.059 c
-1.264 0.059 1.532 -0.294 1.544 -0.999 c
-1.544 -2.984 l
-1.058 -2.984 l
-1.058 -1.029 l
-1.058 -0.794 1.018 -0.628 0.941 -0.529 c
-0.86 -0.434 0.742 -0.382 0.588 -0.382 c
-0.47 -0.382 0.36 -0.422 0.264 -0.5 c
-0.166 -0.58 0.088 -0.687 0.029 -0.823 c
-0.029 -2.984 l
--0.455 -2.984 l
--0.455 0 l
-h
-1.992 -1.352 m
-1.992 -0.922 2.095 -0.58 2.3 -0.324 c
-2.514 -0.07 2.793 0.059 3.138 0.059 c
-3.48 0.059 3.755 -0.07 3.961 -0.324 c
-4.175 -0.569 4.289 -0.904 4.299 -1.323 c
-4.299 -1.631 l
-4.299 -2.065 4.189 -2.406 3.977 -2.66 c
-3.77 -2.917 3.491 -3.042 3.138 -3.042 c
-2.793 -3.042 2.521 -2.921 2.315 -2.675 c
-2.109 -2.433 1.999 -2.098 1.992 -1.675 c
-h
-2.477 -1.631 m
-2.477 -1.947 2.535 -2.19 2.653 -2.366 c
-2.778 -2.535 2.94 -2.616 3.138 -2.616 c
-3.568 -2.616 3.792 -2.308 3.815 -1.691 c
-3.815 -1.352 l
-3.815 -1.051 3.748 -0.808 3.624 -0.632 c
-3.506 -0.455 3.344 -0.367 3.138 -0.367 c
-2.94 -0.367 2.778 -0.455 2.653 -0.632 c
-2.535 -0.808 2.477 -1.051 2.477 -1.352 c
-h
-5.373 0.721 m
-5.373 0 l
-5.828 0 l
-5.828 -0.397 l
-5.373 -0.397 l
-5.373 -2.248 l
-5.373 -2.366 5.39 -2.454 5.431 -2.514 c
-5.468 -2.572 5.538 -2.601 5.637 -2.601 c
-5.696 -2.601 5.758 -2.595 5.828 -2.572 c
-5.828 -2.984 l
-5.71 -3.021 5.596 -3.042 5.49 -3.042 c
-5.292 -3.042 5.141 -2.977 5.035 -2.836 c
-4.935 -2.701 4.887 -2.506 4.887 -2.248 c
-4.887 -0.397 l
-4.432 -0.397 l
-4.432 0 l
-4.887 0 l
-4.887 0.721 l
-h
-7.349 -3.042 m
-6.975 -3.042 6.691 -2.936 6.497 -2.719 c
-6.298 -2.495 6.203 -2.167 6.203 -1.735 c
-6.203 -1.367 l
-6.203 -0.926 6.294 -0.58 6.483 -0.324 c
-6.677 -0.07 6.953 0.059 7.306 0.059 c
-7.647 0.059 7.9 -0.055 8.07 -0.279 c
-8.247 -0.507 8.338 -0.852 8.349 -1.323 c
-8.349 -1.631 l
-6.688 -1.631 l
-6.688 -1.705 l
-6.688 -2.028 6.747 -2.263 6.865 -2.41 c
-6.982 -2.55 7.151 -2.616 7.379 -2.616 c
-7.526 -2.616 7.651 -2.595 7.761 -2.543 c
-7.867 -2.484 7.971 -2.396 8.07 -2.278 c
-8.32 -2.587 l
-8.114 -2.892 7.79 -3.042 7.349 -3.042 c
-7.306 -0.367 m
-7.1 -0.367 6.945 -0.437 6.85 -0.573 c
-6.751 -0.713 6.695 -0.926 6.688 -1.22 c
-7.864 -1.22 l
-7.864 -1.147 l
-7.842 -0.874 7.79 -0.676 7.703 -0.559 c
-7.614 -0.434 7.482 -0.367 7.306 -0.367 c
-11.406 -2.219 m
-11.406 -2.113 11.366 -2.024 11.289 -1.955 c
-11.208 -1.878 11.057 -1.789 10.834 -1.691 c
-10.568 -1.583 10.381 -1.492 10.275 -1.411 c
-10.165 -1.334 10.088 -1.246 10.04 -1.147 c
-9.988 -1.051 9.966 -0.933 9.966 -0.794 c
-9.966 -0.551 10.055 -0.349 10.231 -0.191 c
-10.406 -0.025 10.631 0.059 10.907 0.059 c
-11.2 0.059 11.436 -0.029 11.612 -0.206 c
-11.788 -0.374 11.877 -0.588 11.877 -0.852 c
-11.391 -0.852 l
-11.391 -0.716 11.341 -0.602 11.245 -0.515 c
-11.156 -0.419 11.042 -0.367 10.907 -0.367 c
-10.76 -0.367 10.645 -0.407 10.568 -0.484 c
-10.487 -0.555 10.451 -0.654 10.451 -0.779 c
-10.451 -0.878 10.481 -0.955 10.539 -1.014 c
-10.598 -1.072 10.738 -1.153 10.965 -1.249 c
-11.326 -1.396 11.572 -1.539 11.701 -1.675 c
-11.836 -1.804 11.906 -1.977 11.906 -2.19 c
-11.906 -2.447 11.811 -2.653 11.627 -2.807 c
-11.451 -2.965 11.216 -3.042 10.921 -3.042 c
-10.605 -3.042 10.352 -2.954 10.157 -2.778 c
-9.97 -2.595 9.878 -2.362 9.878 -2.088 c
-10.363 -2.088 l
-10.37 -2.256 10.422 -2.389 10.51 -2.484 c
-10.605 -2.572 10.745 -2.616 10.921 -2.616 c
-11.075 -2.616 11.193 -2.583 11.274 -2.514 c
-11.362 -2.447 11.406 -2.348 11.406 -2.219 c
-12.259 -1.352 m
-12.259 -0.922 12.362 -0.58 12.567 -0.324 c
-12.781 -0.07 13.06 0.059 13.406 0.059 c
-13.747 0.059 14.023 -0.07 14.229 -0.324 c
-14.442 -0.569 14.556 -0.904 14.566 -1.323 c
-14.566 -1.631 l
-14.566 -2.065 14.456 -2.406 14.244 -2.66 c
-14.038 -2.917 13.758 -3.042 13.406 -3.042 c
-13.06 -3.042 12.788 -2.921 12.582 -2.675 c
-12.376 -2.433 12.266 -2.098 12.259 -1.675 c
-h
-12.744 -1.631 m
-12.744 -1.947 12.803 -2.19 12.92 -2.366 c
-13.045 -2.535 13.207 -2.616 13.406 -2.616 c
-13.835 -2.616 14.059 -2.308 14.082 -1.691 c
-14.082 -1.352 l
-14.082 -1.051 14.015 -0.808 13.891 -0.632 c
-13.773 -0.455 13.612 -0.367 13.406 -0.367 c
-13.207 -0.367 13.045 -0.455 12.92 -0.632 c
-12.803 -0.808 12.744 -1.051 12.744 -1.352 c
-h
-16.742 -2.984 -0.5 2.984 re
-16.772 0.794 m
-16.772 0.706 16.746 0.632 16.698 0.574 c
-16.658 0.522 16.588 0.5 16.492 0.5 c
-16.405 0.5 16.334 0.522 16.286 0.574 c
-16.247 0.632 16.228 0.698 16.228 0.779 c
-16.228 0.867 16.247 0.941 16.286 1 c
-16.334 1.058 16.405 1.087 16.492 1.087 c
-16.588 1.087 16.658 1.058 16.698 1 c
-16.746 0.941 16.772 0.871 16.772 0.794 c
-18.047 0.721 m
-18.047 0 l
-18.502 0 l
-18.502 -0.397 l
-18.047 -0.397 l
-18.047 -2.248 l
-18.047 -2.366 18.065 -2.454 18.105 -2.514 c
-18.142 -2.572 18.212 -2.601 18.311 -2.601 c
-18.37 -2.601 18.433 -2.595 18.502 -2.572 c
-18.502 -2.984 l
-18.385 -3.021 18.271 -3.042 18.165 -3.042 c
-17.966 -3.042 17.816 -2.977 17.708 -2.836 c
-17.61 -2.701 17.562 -2.506 17.562 -2.248 c
-17.562 -0.397 l
-17.106 -0.397 l
-17.106 0 l
-17.562 0 l
-17.562 0.721 l
-h
-19.293 0.941 m
-19.248 -0.073 l
-18.881 -0.073 l
-18.896 1.249 l
-19.293 1.249 l
-h
-21.119 -2.219 m
-21.119 -2.113 21.078 -2.024 21.001 -1.955 c
-20.92 -1.878 20.77 -1.789 20.546 -1.691 c
-20.281 -1.583 20.093 -1.492 19.987 -1.411 c
-19.877 -1.334 19.8 -1.246 19.752 -1.147 c
-19.7 -1.051 19.678 -0.933 19.678 -0.794 c
-19.678 -0.551 19.767 -0.349 19.943 -0.191 c
-20.12 -0.025 20.344 0.059 20.619 0.059 c
-20.913 0.059 21.148 -0.029 21.325 -0.206 c
-21.501 -0.374 21.589 -0.588 21.589 -0.852 c
-21.105 -0.852 l
-21.105 -0.716 21.053 -0.602 20.957 -0.515 c
-20.869 -0.419 20.755 -0.367 20.619 -0.367 c
-20.472 -0.367 20.359 -0.407 20.281 -0.484 c
-20.201 -0.555 20.164 -0.654 20.164 -0.779 c
-20.164 -0.878 20.193 -0.955 20.251 -1.014 c
-20.311 -1.072 20.45 -1.153 20.677 -1.249 c
-21.038 -1.396 21.284 -1.539 21.413 -1.675 c
-21.549 -1.804 21.618 -1.977 21.618 -2.19 c
-21.618 -2.447 21.523 -2.653 21.34 -2.807 c
-21.163 -2.965 20.928 -3.042 20.634 -3.042 c
-20.318 -3.042 20.064 -2.954 19.869 -2.778 c
-19.682 -2.595 19.59 -2.362 19.59 -2.088 c
-20.075 -2.088 l
-20.083 -2.256 20.134 -2.389 20.222 -2.484 c
-20.318 -2.572 20.457 -2.616 20.634 -2.616 c
-20.788 -2.616 20.906 -2.583 20.987 -2.514 c
-21.074 -2.447 21.119 -2.348 21.119 -2.219 c
-25.425 -1.631 m
-25.425 -2.102 25.342 -2.454 25.176 -2.69 c
-25.007 -2.925 24.768 -3.042 24.455 -3.042 c
-24.151 -3.042 23.919 -2.932 23.765 -2.705 c
-23.765 -4.13 l
-23.28 -4.13 l
-23.28 0 l
-23.721 0 l
-23.75 -0.338 l
-23.904 -0.073 24.136 0.059 24.44 0.059 c
-24.772 0.059 25.018 -0.058 25.176 -0.294 c
-25.342 -0.521 25.425 -0.86 25.425 -1.308 c
-h
-24.941 -1.352 m
-24.941 -1.022 24.885 -0.775 24.779 -0.617 c
-24.679 -0.463 24.518 -0.382 24.294 -0.382 c
-24.058 -0.382 23.883 -0.5 23.765 -0.735 c
-23.765 -2.278 l
-23.883 -2.506 24.062 -2.616 24.309 -2.616 c
-24.521 -2.616 24.679 -2.539 24.779 -2.381 c
-24.885 -2.227 24.941 -1.984 24.941 -1.66 c
-h
-27.12 -0.455 m
-27.05 -0.448 26.977 -0.441 26.9 -0.441 c
-26.642 -0.441 26.466 -0.58 26.37 -0.852 c
-26.37 -2.984 l
-25.885 -2.984 l
-25.885 0 l
-26.356 0 l
-26.37 -0.309 l
-26.495 -0.066 26.678 0.059 26.914 0.059 c
-26.991 0.059 27.054 0.044 27.105 0.015 c
-h
-27.333 -1.352 m
-27.333 -0.922 27.436 -0.58 27.642 -0.324 c
-27.854 -0.07 28.134 0.059 28.479 0.059 c
-28.821 0.059 29.097 -0.07 29.302 -0.324 c
-29.516 -0.569 29.63 -0.904 29.641 -1.323 c
-29.641 -1.631 l
-29.641 -2.065 29.531 -2.406 29.317 -2.66 c
-29.111 -2.917 28.832 -3.042 28.479 -3.042 c
-28.134 -3.042 27.862 -2.921 27.656 -2.675 c
-27.451 -2.433 27.34 -2.098 27.333 -1.675 c
-h
-27.818 -1.631 m
-27.818 -1.947 27.877 -2.19 27.995 -2.366 c
-28.12 -2.535 28.281 -2.616 28.479 -2.616 c
-28.909 -2.616 29.134 -2.308 29.155 -1.691 c
-29.155 -1.352 l
-29.155 -1.051 29.09 -0.808 28.964 -0.632 c
-28.847 -0.455 28.685 -0.367 28.479 -0.367 c
-28.281 -0.367 28.12 -0.455 27.995 -0.632 c
-27.877 -0.808 27.818 -1.051 27.818 -1.352 c
-h
-32.242 -1.631 m
-32.242 -2.102 32.158 -2.454 31.993 -2.69 c
-31.823 -2.925 31.581 -3.042 31.258 -3.042 c
-30.942 -3.042 30.707 -2.907 30.552 -2.631 c
-30.522 -2.984 l
-30.082 -2.984 l
-30.082 1.249 l
-30.567 1.249 l
-30.567 -0.324 l
-30.721 -0.07 30.952 0.059 31.258 0.059 c
-31.581 0.059 31.823 -0.058 31.993 -0.294 c
-32.158 -0.529 32.242 -0.878 32.242 -1.338 c
-h
-31.757 -1.352 m
-31.757 -0.999 31.706 -0.75 31.611 -0.602 c
-31.511 -0.455 31.349 -0.382 31.125 -0.382 c
-30.879 -0.382 30.692 -0.521 30.567 -0.794 c
-30.567 -2.205 l
-30.684 -2.469 30.875 -2.601 31.14 -2.601 c
-31.353 -2.601 31.511 -2.528 31.611 -2.381 c
-31.706 -2.227 31.757 -1.984 31.757 -1.66 c
-h
-34.212 -2.984 m
-34.183 -2.917 34.16 -2.807 34.154 -2.66 c
-33.977 -2.917 33.757 -3.042 33.492 -3.042 c
-33.217 -3.042 32.999 -2.969 32.845 -2.822 c
-32.698 -2.668 32.625 -2.451 32.625 -2.175 c
-32.625 -1.874 32.727 -1.631 32.933 -1.455 c
-33.139 -1.271 33.422 -1.176 33.786 -1.176 c
-34.138 -1.176 l
-34.138 -0.852 l
-34.138 -0.676 34.098 -0.555 34.021 -0.484 c
-33.94 -0.407 33.822 -0.367 33.668 -0.367 c
-33.521 -0.367 33.396 -0.411 33.3 -0.5 c
-33.213 -0.588 33.169 -0.698 33.169 -0.823 c
-32.683 -0.823 l
-32.683 -0.676 32.727 -0.536 32.816 -0.397 c
-32.904 -0.249 33.022 -0.139 33.169 -0.058 c
-33.323 0.019 33.495 0.059 33.683 0.059 c
-33.996 0.059 34.231 -0.022 34.389 -0.176 c
-34.543 -0.324 34.624 -0.544 34.624 -0.837 c
-34.624 -2.337 l
-34.631 -2.572 34.668 -2.774 34.726 -2.94 c
-34.726 -2.984 l
-h
-33.566 -2.601 m
-33.683 -2.601 33.793 -2.568 33.903 -2.499 c
-34.01 -2.433 34.087 -2.348 34.138 -2.248 c
-34.138 -1.543 l
-33.874 -1.543 l
-33.639 -1.543 33.452 -1.595 33.315 -1.691 c
-33.186 -1.789 33.124 -1.932 33.124 -2.117 c
-33.124 -2.285 33.154 -2.406 33.213 -2.484 c
-33.279 -2.564 33.396 -2.601 33.566 -2.601 c
-37.365 -1.631 m
-37.365 -2.102 37.281 -2.454 37.115 -2.69 c
-36.946 -2.925 36.704 -3.042 36.38 -3.042 c
-36.064 -3.042 35.829 -2.907 35.675 -2.631 c
-35.646 -2.984 l
-35.204 -2.984 l
-35.204 1.249 l
-35.69 1.249 l
-35.69 -0.324 l
-35.844 -0.07 36.075 0.059 36.38 0.059 c
-36.704 0.059 36.946 -0.058 37.115 -0.294 c
-37.281 -0.529 37.365 -0.878 37.365 -1.338 c
-h
-36.88 -1.352 m
-36.88 -0.999 36.828 -0.75 36.733 -0.602 c
-36.633 -0.455 36.472 -0.382 36.248 -0.382 c
-36.002 -0.382 35.814 -0.521 35.69 -0.794 c
-35.69 -2.205 l
-35.806 -2.469 35.998 -2.601 36.263 -2.601 c
-36.475 -2.601 36.633 -2.528 36.733 -2.381 c
-36.828 -2.227 36.88 -1.984 36.88 -1.66 c
-h
-38.339 -2.984 -0.5 4.233 re
-39.82 -2.175 m
-40.363 0 l
-40.878 0 l
-39.908 -3.41 l
-39.838 -3.663 39.735 -3.854 39.599 -3.983 c
-39.459 -4.119 39.309 -4.189 39.143 -4.189 c
-39.074 -4.189 38.989 -4.174 38.894 -4.145 c
-38.894 -3.734 l
-38.996 -3.748 l
-39.133 -3.748 39.239 -3.711 39.32 -3.645 c
-39.409 -3.576 39.474 -3.458 39.526 -3.293 c
-39.614 -2.954 l
-38.747 0 l
-39.276 0 l
-h
-43.935 -2.984 m
-43.906 -2.917 43.884 -2.807 43.877 -2.66 c
-43.7 -2.917 43.48 -3.042 43.216 -3.042 c
-42.94 -3.042 42.723 -2.969 42.568 -2.822 c
-42.422 -2.668 42.348 -2.451 42.348 -2.175 c
-42.348 -1.874 42.451 -1.631 42.657 -1.455 c
-42.862 -1.271 43.145 -1.176 43.509 -1.176 c
-43.862 -1.176 l
-43.862 -0.852 l
-43.862 -0.676 43.822 -0.555 43.744 -0.484 c
-43.663 -0.407 43.546 -0.367 43.392 -0.367 c
-43.245 -0.367 43.12 -0.411 43.024 -0.5 c
-42.936 -0.588 42.892 -0.698 42.892 -0.823 c
-42.407 -0.823 l
-42.407 -0.676 42.451 -0.536 42.539 -0.397 c
-42.627 -0.249 42.745 -0.139 42.892 -0.058 c
-43.046 0.019 43.219 0.059 43.407 0.059 c
-43.719 0.059 43.954 -0.022 44.112 -0.176 c
-44.266 -0.324 44.347 -0.544 44.347 -0.837 c
-44.347 -2.337 l
-44.354 -2.572 44.392 -2.774 44.45 -2.94 c
-44.45 -2.984 l
-h
-43.289 -2.601 m
-43.407 -2.601 43.517 -2.568 43.627 -2.499 c
-43.733 -2.433 43.81 -2.348 43.862 -2.248 c
-43.862 -1.543 l
-43.598 -1.543 l
-43.362 -1.543 43.175 -1.595 43.039 -1.691 c
-42.91 -1.789 42.848 -1.932 42.848 -2.117 c
-42.848 -2.285 42.877 -2.406 42.936 -2.484 c
-43.002 -2.564 43.12 -2.601 43.289 -2.601 c
-47.368 -0.455 m
-47.298 -0.448 47.224 -0.441 47.147 -0.441 c
-46.89 -0.441 46.713 -0.58 46.618 -0.852 c
-46.618 -2.984 l
-46.133 -2.984 l
-46.133 0 l
-46.603 0 l
-46.618 -0.309 l
-46.743 -0.066 46.927 0.059 47.162 0.059 c
-47.239 0.059 47.301 0.044 47.353 0.015 c
-h
-48.745 -3.042 m
-48.371 -3.042 48.088 -2.936 47.893 -2.719 c
-47.695 -2.495 47.6 -2.167 47.6 -1.735 c
-47.6 -1.367 l
-47.6 -0.926 47.691 -0.58 47.879 -0.324 c
-48.074 -0.07 48.349 0.059 48.702 0.059 c
-49.044 0.059 49.297 -0.055 49.466 -0.279 c
-49.643 -0.507 49.734 -0.852 49.745 -1.323 c
-49.745 -1.631 l
-48.084 -1.631 l
-48.084 -1.705 l
-48.084 -2.028 48.143 -2.263 48.261 -2.41 c
-48.379 -2.55 48.547 -2.616 48.775 -2.616 c
-48.922 -2.616 49.047 -2.595 49.157 -2.543 c
-49.264 -2.484 49.367 -2.396 49.466 -2.278 c
-49.716 -2.587 l
-49.51 -2.892 49.187 -3.042 48.745 -3.042 c
-48.702 -0.367 m
-48.496 -0.367 48.342 -0.437 48.246 -0.573 c
-48.147 -0.713 48.092 -0.926 48.084 -1.22 c
-49.26 -1.22 l
-49.26 -1.147 l
-49.238 -0.874 49.187 -0.676 49.098 -0.559 c
-49.011 -0.434 48.878 -0.367 48.702 -0.367 c
-50.362 -2.984 m
-50.362 -0.397 l
-49.981 -0.397 l
-49.981 0 l
-50.362 0 l
-50.362 0.339 l
-50.37 0.64 50.451 0.875 50.598 1.044 c
-50.744 1.22 50.954 1.309 51.23 1.309 c
-51.326 1.309 51.425 1.294 51.524 1.264 c
-51.494 0.852 l
-51.425 0.86 51.351 0.867 51.274 0.867 c
-50.998 0.867 50.862 0.669 50.862 0.279 c
-50.862 0 l
-51.363 0 l
-51.363 -0.397 l
-50.862 -0.397 l
-50.862 -2.984 l
-h
-52.821 -3.042 m
-52.446 -3.042 52.163 -2.936 51.968 -2.719 c
-51.77 -2.495 51.675 -2.167 51.675 -1.735 c
-51.675 -1.367 l
-51.675 -0.926 51.766 -0.58 51.954 -0.324 c
-52.149 -0.07 52.425 0.059 52.777 0.059 c
-53.119 0.059 53.372 -0.055 53.541 -0.279 c
-53.718 -0.507 53.809 -0.852 53.821 -1.323 c
-53.821 -1.631 l
-52.159 -1.631 l
-52.159 -1.705 l
-52.159 -2.028 52.219 -2.263 52.336 -2.41 c
-52.454 -2.55 52.623 -2.616 52.851 -2.616 c
-52.997 -2.616 53.123 -2.595 53.233 -2.543 c
-53.339 -2.484 53.443 -2.396 53.541 -2.278 c
-53.791 -2.587 l
-53.585 -2.892 53.262 -3.042 52.821 -3.042 c
-52.777 -0.367 m
-52.571 -0.367 52.417 -0.437 52.321 -0.573 c
-52.222 -0.713 52.167 -0.926 52.159 -1.22 c
-53.335 -1.22 l
-53.335 -1.147 l
-53.314 -0.874 53.262 -0.676 53.173 -0.559 c
-53.086 -0.434 52.953 -0.367 52.777 -0.367 c
-55.467 -0.455 m
-55.397 -0.448 55.324 -0.441 55.247 -0.441 c
-54.989 -0.441 54.813 -0.58 54.717 -0.852 c
-54.717 -2.984 l
-54.232 -2.984 l
-54.232 0 l
-54.702 0 l
-54.717 -0.309 l
-54.842 -0.066 55.026 0.059 55.261 0.059 c
-55.338 0.059 55.401 0.044 55.452 0.015 c
-h
-56.841 -3.042 m
-56.466 -3.042 56.184 -2.936 55.989 -2.719 c
-55.791 -2.495 55.695 -2.167 55.695 -1.735 c
-55.695 -1.367 l
-55.695 -0.926 55.787 -0.58 55.974 -0.324 c
-56.169 -0.07 56.444 0.059 56.797 0.059 c
-57.139 0.059 57.393 -0.055 57.562 -0.279 c
-57.738 -0.507 57.83 -0.852 57.84 -1.323 c
-57.84 -1.631 l
-56.18 -1.631 l
-56.18 -1.705 l
-56.18 -2.028 56.238 -2.263 56.356 -2.41 c
-56.474 -2.55 56.643 -2.616 56.871 -2.616 c
-57.017 -2.616 57.142 -2.595 57.252 -2.543 c
-57.36 -2.484 57.462 -2.396 57.562 -2.278 c
-57.811 -2.587 l
-57.605 -2.892 57.283 -3.042 56.841 -3.042 c
-56.797 -0.367 m
-56.591 -0.367 56.437 -0.437 56.342 -0.573 c
-56.242 -0.713 56.188 -0.926 56.18 -1.22 c
-57.356 -1.22 l
-57.356 -1.147 l
-57.333 -0.874 57.283 -0.676 57.194 -0.559 c
-57.106 -0.434 56.973 -0.367 56.797 -0.367 c
-58.708 0 m
-58.723 -0.324 l
-58.906 -0.07 59.149 0.059 59.443 0.059 c
-59.972 0.059 60.24 -0.294 60.252 -0.999 c
-60.252 -2.984 l
-59.766 -2.984 l
-59.766 -1.029 l
-59.766 -0.794 59.726 -0.628 59.649 -0.529 c
-59.568 -0.434 59.45 -0.382 59.296 -0.382 c
-59.178 -0.382 59.068 -0.422 58.973 -0.5 c
-58.873 -0.58 58.796 -0.687 58.738 -0.823 c
-58.738 -2.984 l
-58.252 -2.984 l
-58.252 0 l
-h
-61.835 -2.616 m
-62 -2.616 62.133 -2.568 62.232 -2.469 c
-62.328 -2.373 62.382 -2.23 62.394 -2.043 c
-62.85 -2.043 l
-62.839 -2.329 62.736 -2.568 62.54 -2.763 c
-62.353 -2.95 62.118 -3.042 61.835 -3.042 c
-61.472 -3.042 61.192 -2.925 60.998 -2.69 c
-60.799 -2.454 60.703 -2.109 60.703 -1.646 c
-60.703 -1.323 l
-60.703 -0.874 60.795 -0.529 60.982 -0.294 c
-61.177 -0.058 61.46 0.059 61.835 0.059 c
-62.137 0.059 62.379 -0.04 62.555 -0.235 c
-62.739 -0.434 62.839 -0.698 62.85 -1.029 c
-62.394 -1.029 l
-62.372 -0.804 62.313 -0.639 62.218 -0.529 c
-62.129 -0.422 62 -0.367 61.835 -0.367 c
-61.618 -0.367 61.457 -0.441 61.35 -0.588 c
-61.251 -0.727 61.196 -0.955 61.189 -1.278 c
-61.189 -1.66 l
-61.189 -2.013 61.236 -2.263 61.335 -2.41 c
-61.442 -2.55 61.607 -2.616 61.835 -2.616 c
-64.301 -3.042 m
-63.926 -3.042 63.643 -2.936 63.448 -2.719 c
-63.25 -2.495 63.155 -2.167 63.155 -1.735 c
-63.155 -1.367 l
-63.155 -0.926 63.246 -0.58 63.434 -0.324 c
-63.629 -0.07 63.904 0.059 64.257 0.059 c
-64.599 0.059 64.853 -0.055 65.021 -0.279 c
-65.198 -0.507 65.289 -0.852 65.301 -1.323 c
-65.301 -1.631 l
-63.639 -1.631 l
-63.639 -1.705 l
-63.639 -2.028 63.698 -2.263 63.816 -2.41 c
-63.934 -2.55 64.103 -2.616 64.331 -2.616 c
-64.477 -2.616 64.602 -2.595 64.713 -2.543 c
-64.819 -2.484 64.922 -2.396 65.021 -2.278 c
-65.271 -2.587 l
-65.065 -2.892 64.742 -3.042 64.301 -3.042 c
-64.257 -0.367 m
-64.051 -0.367 63.897 -0.437 63.801 -0.573 c
-63.702 -0.713 63.647 -0.926 63.639 -1.22 c
-64.815 -1.22 l
-64.815 -1.147 l
-64.793 -0.874 64.742 -0.676 64.654 -0.559 c
-64.566 -0.434 64.433 -0.367 64.257 -0.367 c
-65.713 -3.777 m
-65.418 -3.586 l
-65.595 -3.341 65.686 -3.09 65.697 -2.836 c
-65.697 -2.381 l
-66.197 -2.381 l
-66.197 -2.778 l
-66.197 -2.965 66.145 -3.149 66.05 -3.337 c
-65.962 -3.52 65.848 -3.667 65.713 -3.777 c
-f
-Q
-q 1 0 0 1 492.43 131.4251 cm
-0 0 m
-0.014 -0.324 l
-0.198 -0.07 0.441 0.059 0.735 0.059 c
-1.264 0.059 1.533 -0.294 1.543 -0.999 c
-1.543 -2.984 l
-1.058 -2.984 l
-1.058 -1.029 l
-1.058 -0.794 1.018 -0.628 0.941 -0.529 c
-0.86 -0.434 0.742 -0.382 0.588 -0.382 c
-0.47 -0.382 0.36 -0.422 0.264 -0.5 c
-0.166 -0.58 0.088 -0.687 0.029 -0.823 c
-0.029 -2.984 l
--0.456 -2.984 l
--0.456 0 l
-h
-1.995 -1.352 m
-1.995 -0.922 2.098 -0.58 2.304 -0.324 c
-2.517 -0.07 2.796 0.059 3.142 0.059 c
-3.484 0.059 3.759 -0.07 3.965 -0.324 c
-4.178 -0.569 4.292 -0.904 4.303 -1.323 c
-4.303 -1.631 l
-4.303 -2.065 4.193 -2.406 3.979 -2.66 c
-3.774 -2.917 3.495 -3.042 3.142 -3.042 c
-2.796 -3.042 2.524 -2.921 2.319 -2.675 c
-2.113 -2.433 2.003 -2.098 1.995 -1.675 c
-h
-2.481 -1.631 m
-2.481 -1.947 2.539 -2.19 2.657 -2.366 c
-2.782 -2.535 2.944 -2.616 3.142 -2.616 c
-3.572 -2.616 3.796 -2.308 3.818 -1.691 c
-3.818 -1.352 l
-3.818 -1.051 3.752 -0.808 3.627 -0.632 c
-3.509 -0.455 3.347 -0.367 3.142 -0.367 c
-2.944 -0.367 2.782 -0.455 2.657 -0.632 c
-2.539 -0.808 2.481 -1.051 2.481 -1.352 c
-h
-5.373 0.721 m
-5.373 0 l
-5.828 0 l
-5.828 -0.397 l
-5.373 -0.397 l
-5.373 -2.248 l
-5.373 -2.366 5.39 -2.454 5.431 -2.514 c
-5.468 -2.572 5.538 -2.601 5.637 -2.601 c
-5.696 -2.601 5.758 -2.595 5.828 -2.572 c
-5.828 -2.984 l
-5.71 -3.021 5.596 -3.042 5.49 -3.042 c
-5.292 -3.042 5.141 -2.977 5.034 -2.836 c
-4.935 -2.701 4.887 -2.506 4.887 -2.248 c
-4.887 -0.397 l
-4.432 -0.397 l
-4.432 0 l
-4.887 0 l
-4.887 0.721 l
-h
-9.028 -2.984 m
-8.999 -2.917 8.978 -2.807 8.97 -2.66 c
-8.793 -2.917 8.573 -3.042 8.309 -3.042 c
-8.033 -3.042 7.816 -2.969 7.661 -2.822 c
-7.515 -2.668 7.441 -2.451 7.441 -2.175 c
-7.441 -1.874 7.544 -1.631 7.75 -1.455 c
-7.956 -1.271 8.239 -1.176 8.602 -1.176 c
-8.955 -1.176 l
-8.955 -0.852 l
-8.955 -0.676 8.914 -0.555 8.837 -0.484 c
-8.756 -0.407 8.639 -0.367 8.485 -0.367 c
-8.338 -0.367 8.213 -0.411 8.118 -0.5 c
-8.029 -0.588 7.985 -0.698 7.985 -0.823 c
-7.5 -0.823 l
-7.5 -0.676 7.544 -0.536 7.632 -0.397 c
-7.721 -0.249 7.838 -0.139 7.985 -0.058 c
-8.139 0.019 8.312 0.059 8.5 0.059 c
-8.812 0.059 9.047 -0.022 9.205 -0.176 c
-9.359 -0.324 9.44 -0.544 9.44 -0.837 c
-9.44 -2.337 l
-9.448 -2.572 9.485 -2.774 9.543 -2.94 c
-9.543 -2.984 l
-h
-8.382 -2.601 m
-8.5 -2.601 8.61 -2.568 8.72 -2.499 c
-8.827 -2.433 8.904 -2.348 8.955 -2.248 c
-8.955 -1.543 l
-8.691 -1.543 l
-8.455 -1.543 8.268 -1.595 8.132 -1.691 c
-8.004 -1.789 7.941 -1.932 7.941 -2.117 c
-7.941 -2.285 7.97 -2.406 8.029 -2.484 c
-8.095 -2.564 8.213 -2.601 8.382 -2.601 c
-10.477 0 m
-10.491 -0.324 l
-10.675 -0.07 10.917 0.059 11.212 0.059 c
-11.74 0.059 12.009 -0.294 12.02 -0.999 c
-12.02 -2.984 l
-11.535 -2.984 l
-11.535 -1.029 l
-11.535 -0.794 11.495 -0.628 11.418 -0.529 c
-11.337 -0.434 11.219 -0.382 11.065 -0.382 c
-10.947 -0.382 10.836 -0.422 10.741 -0.5 c
-10.642 -0.58 10.564 -0.687 10.506 -0.823 c
-10.506 -2.984 l
-10.021 -2.984 l
-10.021 0 l
-h
-13.674 -1.352 m
-13.674 -0.922 13.776 -0.58 13.982 -0.324 c
-14.196 -0.07 14.475 0.059 14.82 0.059 c
-15.162 0.059 15.438 -0.07 15.644 -0.324 c
-15.856 -0.569 15.97 -0.904 15.981 -1.323 c
-15.981 -1.631 l
-15.981 -2.065 15.871 -2.406 15.658 -2.66 c
-15.453 -2.917 15.173 -3.042 14.82 -3.042 c
-14.475 -3.042 14.202 -2.921 13.997 -2.675 c
-13.791 -2.433 13.681 -2.098 13.674 -1.675 c
-h
-14.159 -1.631 m
-14.159 -1.947 14.217 -2.19 14.335 -2.366 c
-14.46 -2.535 14.622 -2.616 14.82 -2.616 c
-15.25 -2.616 15.474 -2.308 15.496 -1.691 c
-15.496 -1.352 l
-15.496 -1.051 15.43 -0.808 15.305 -0.632 c
-15.187 -0.455 15.025 -0.367 14.82 -0.367 c
-14.622 -0.367 14.46 -0.455 14.335 -0.632 c
-14.217 -0.808 14.159 -1.051 14.159 -1.352 c
-h
-18.58 -1.631 m
-18.58 -2.102 18.495 -2.454 18.329 -2.69 c
-18.161 -2.925 17.918 -3.042 17.595 -3.042 c
-17.279 -3.042 17.043 -2.907 16.889 -2.631 c
-16.86 -2.984 l
-16.419 -2.984 l
-16.419 1.249 l
-16.904 1.249 l
-16.904 -0.324 l
-17.058 -0.07 17.29 0.059 17.595 0.059 c
-17.918 0.059 18.161 -0.058 18.329 -0.294 c
-18.495 -0.529 18.58 -0.878 18.58 -1.338 c
-h
-18.094 -1.352 m
-18.094 -0.999 18.042 -0.75 17.947 -0.602 c
-17.848 -0.455 17.687 -0.382 17.462 -0.382 c
-17.216 -0.382 17.028 -0.521 16.904 -0.794 c
-16.904 -2.205 l
-17.022 -2.469 17.213 -2.601 17.477 -2.601 c
-17.691 -2.601 17.848 -2.528 17.947 -2.381 c
-18.042 -2.227 18.094 -1.984 18.094 -1.66 c
-h
-19.524 0 m
-19.524 -3.366 l
-19.513 -3.913 19.293 -4.189 18.863 -4.189 c
-18.763 -4.189 18.675 -4.174 18.597 -4.145 c
-18.597 -3.734 l
-18.649 -3.74 18.708 -3.748 18.788 -3.748 c
-18.867 -3.748 18.925 -3.719 18.965 -3.659 c
-19.013 -3.601 19.039 -3.491 19.039 -3.337 c
-19.039 0 l
-h
-19.538 0.794 m
-19.538 0.706 19.513 0.632 19.465 0.574 c
-19.424 0.522 19.355 0.5 19.259 0.5 c
-19.171 0.5 19.102 0.522 19.054 0.574 c
-19.013 0.632 18.994 0.698 18.994 0.779 c
-18.994 0.867 19.013 0.941 19.054 1 c
-19.102 1.058 19.171 1.087 19.259 1.087 c
-19.355 1.087 19.424 1.058 19.465 1 c
-19.513 0.941 19.538 0.871 19.538 0.794 c
-21.265 -3.042 m
-20.891 -3.042 20.608 -2.936 20.413 -2.719 c
-20.215 -2.495 20.12 -2.167 20.12 -1.735 c
-20.12 -1.367 l
-20.12 -0.926 20.211 -0.58 20.398 -0.324 c
-20.593 -0.07 20.868 0.059 21.221 0.059 c
-21.564 0.059 21.817 -0.055 21.986 -0.279 c
-22.162 -0.507 22.254 -0.852 22.265 -1.323 c
-22.265 -1.631 l
-20.604 -1.631 l
-20.604 -1.705 l
-20.604 -2.028 20.663 -2.263 20.781 -2.41 c
-20.899 -2.55 21.067 -2.616 21.296 -2.616 c
-21.442 -2.616 21.567 -2.595 21.677 -2.543 c
-21.784 -2.484 21.886 -2.396 21.986 -2.278 c
-22.236 -2.587 l
-22.03 -2.892 21.707 -3.042 21.265 -3.042 c
-21.221 -0.367 m
-21.016 -0.367 20.862 -0.437 20.766 -0.573 c
-20.667 -0.713 20.612 -0.926 20.604 -1.22 c
-21.78 -1.22 l
-21.78 -1.147 l
-21.758 -0.874 21.707 -0.676 21.618 -0.559 c
-21.531 -0.434 21.398 -0.367 21.221 -0.367 c
-23.706 -2.616 m
-23.871 -2.616 24.003 -2.568 24.103 -2.469 c
-24.198 -2.373 24.253 -2.23 24.264 -2.043 c
-24.72 -2.043 l
-24.709 -2.329 24.606 -2.568 24.411 -2.763 c
-24.224 -2.95 23.989 -3.042 23.706 -3.042 c
-23.342 -3.042 23.062 -2.925 22.867 -2.69 c
-22.669 -2.454 22.574 -2.109 22.574 -1.646 c
-22.574 -1.323 l
-22.574 -0.874 22.666 -0.529 22.853 -0.294 c
-23.048 -0.058 23.331 0.059 23.706 0.059 c
-24.007 0.059 24.249 -0.04 24.426 -0.235 c
-24.61 -0.434 24.709 -0.698 24.72 -1.029 c
-24.264 -1.029 l
-24.242 -0.804 24.184 -0.639 24.088 -0.529 c
-24 -0.422 23.871 -0.367 23.706 -0.367 c
-23.489 -0.367 23.327 -0.441 23.22 -0.588 c
-23.121 -0.727 23.066 -0.955 23.059 -1.278 c
-23.059 -1.66 l
-23.059 -2.013 23.106 -2.263 23.206 -2.41 c
-23.312 -2.55 23.478 -2.616 23.706 -2.616 c
-25.745 0.721 m
-25.745 0 l
-26.201 0 l
-26.201 -0.397 l
-25.745 -0.397 l
-25.745 -2.248 l
-25.745 -2.366 25.764 -2.454 25.804 -2.514 c
-25.841 -2.572 25.911 -2.601 26.01 -2.601 c
-26.069 -2.601 26.131 -2.595 26.201 -2.572 c
-26.201 -2.984 l
-26.083 -3.021 25.969 -3.042 25.863 -3.042 c
-25.664 -3.042 25.514 -2.977 25.408 -2.836 c
-25.308 -2.701 25.26 -2.506 25.26 -2.248 c
-25.26 -0.397 l
-24.804 -0.397 l
-24.804 0 l
-25.26 0 l
-25.26 0.721 l
-h
-26.697 -2.719 m
-26.697 -2.631 26.719 -2.558 26.771 -2.499 c
-26.829 -2.44 26.906 -2.41 27.006 -2.41 c
-27.112 -2.41 27.189 -2.44 27.241 -2.499 c
-27.299 -2.558 27.329 -2.631 27.329 -2.719 c
-27.329 -2.8 27.299 -2.866 27.241 -2.925 c
-27.189 -2.984 27.112 -3.013 27.006 -3.013 c
-26.906 -3.013 26.829 -2.984 26.771 -2.925 c
-26.719 -2.866 26.697 -2.8 26.697 -2.719 c
-f
-Q
-0.567 w 1 j 1 J
-q 1 0 0 1 522.4669 140.1895 cm
-0 0 m
-6.928 0.754 l
-S
-Q
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 527.2745 140.7116 cm
-0 0 m
--0.949 -1.176 l
-2.649 0.291 l
--1.177 0.948 l
-h
-f*
-Q
-0.906 0.785 0.617 0.969 K
-0.283 w 0 j 0 J
-q 1 0 0 1 527.2745 140.7116 cm
-0 0 m
--0.949 -1.176 l
-2.649 0.291 l
--1.177 0.948 l
-0 0 l
-h
-S
-Q
- endstream endobj 21 0 obj <</I true/K false/S/Transparency/Type/Group>> endobj 28 0 obj <</BBox[198.027 568.502 444.988 526.485]/Group 63 0 R/Length 127/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>/Shading<</Sh0 64 0 R>>>>/Subtype/Form>>stream
-q
-198.027 568.502 246.962 -42.017 re
-W n
-q
-0 g
-/GS0 gs
-246.9619598 0 0 246.9619598 198.026535 547.4932861 cm
-BX /Sh0 sh EX Q
-Q
- endstream endobj 29 0 obj <</BBox[589.44 293.423 621.568 278.07]/Group 65 0 R/Length 293/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 592.6808 293.4232 cm
-0 0 m
-25.646 0 l
-27.443 0 28.887 -1.448 28.887 -3.241 c
-28.887 -12.112 l
-28.887 -13.909 27.443 -15.353 25.646 -15.353 c
-0 -15.353 l
--1.793 -15.353 -3.241 -13.909 -3.241 -12.112 c
--3.241 -3.241 l
--3.241 -1.448 -1.793 0 0 0 c
-f
-Q
- endstream endobj 30 0 obj <</BBox[738.029 266.921 763.227 262.629]/Group 66 0 R/Length 5754/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 740.4832 263.5406 cm
-0 0 m
-0.456 2.131 l
-0.941 2.131 l
-0.206 -0.853 l
--0.176 -0.853 l
--0.764 1.278 l
--1.337 -0.853 l
--1.72 -0.853 l
--2.454 2.131 l
--1.969 2.131 l
--1.499 0.058 l
--0.955 2.131 l
--0.573 2.131 l
-h
-1.69 1.822 m
-1.875 2.065 2.11 2.19 2.396 2.19 c
-2.926 2.19 3.194 1.837 3.205 1.132 c
-3.205 -0.853 l
-2.72 -0.853 l
-2.72 1.103 l
-2.72 1.338 2.679 1.502 2.602 1.602 c
-2.521 1.697 2.404 1.749 2.249 1.749 c
-2.132 1.749 2.022 1.708 1.926 1.631 c
-1.827 1.55 1.75 1.444 1.69 1.308 c
-1.69 -0.853 l
-1.206 -0.853 l
-1.206 3.38 l
-1.69 3.38 l
-h
-5.278 -0.853 m
-5.248 -0.786 5.226 -0.676 5.218 -0.53 c
-5.042 -0.786 4.822 -0.912 4.557 -0.912 c
-4.281 -0.912 4.065 -0.838 3.911 -0.691 c
-3.763 -0.537 3.69 -0.32 3.69 -0.044 c
-3.69 0.257 3.793 0.5 3.998 0.675 c
-4.204 0.86 4.487 0.955 4.851 0.955 c
-5.204 0.955 l
-5.204 1.278 l
-5.204 1.455 5.164 1.577 5.087 1.646 c
-5.006 1.723 4.888 1.764 4.734 1.764 c
-4.587 1.764 4.462 1.72 4.366 1.631 c
-4.278 1.543 4.233 1.433 4.233 1.308 c
-3.749 1.308 l
-3.749 1.455 3.793 1.595 3.881 1.734 c
-3.969 1.881 4.087 1.992 4.233 2.072 c
-4.388 2.15 4.561 2.19 4.748 2.19 c
-5.06 2.19 5.295 2.109 5.453 1.955 c
-5.608 1.808 5.689 1.587 5.689 1.294 c
-5.689 -0.206 l
-5.696 -0.441 5.733 -0.643 5.792 -0.809 c
-5.792 -0.853 l
-h
-4.63 -0.47 m
-4.748 -0.47 4.859 -0.437 4.969 -0.368 c
-5.075 -0.302 5.152 -0.217 5.204 -0.118 c
-5.204 0.588 l
-4.939 0.588 l
-4.704 0.588 4.516 0.536 4.381 0.44 c
-4.252 0.341 4.19 0.198 4.19 0.014 c
-4.19 -0.154 4.219 -0.276 4.278 -0.353 c
-4.344 -0.434 4.462 -0.47 4.63 -0.47 c
-6.901 2.851 m
-6.901 2.131 l
-7.357 2.131 l
-7.357 1.734 l
-6.901 1.734 l
-6.901 -0.118 l
-6.901 -0.235 6.92 -0.324 6.961 -0.383 c
-6.997 -0.441 7.067 -0.47 7.167 -0.47 c
-7.225 -0.47 7.288 -0.463 7.357 -0.441 c
-7.357 -0.853 l
-7.24 -0.89 7.126 -0.912 7.019 -0.912 c
-6.82 -0.912 6.67 -0.846 6.564 -0.706 c
-6.465 -0.57 6.417 -0.375 6.417 -0.118 c
-6.417 1.734 l
-5.961 1.734 l
-5.961 2.131 l
-6.417 2.131 l
-6.417 2.851 l
-h
-9.658 2.851 m
-9.658 2.131 l
-10.113 2.131 l
-10.113 1.734 l
-9.658 1.734 l
-9.658 -0.118 l
-9.658 -0.235 9.676 -0.324 9.717 -0.383 c
-9.754 -0.441 9.823 -0.47 9.922 -0.47 c
-9.981 -0.47 10.043 -0.463 10.113 -0.441 c
-10.113 -0.853 l
-9.996 -0.89 9.881 -0.912 9.775 -0.912 c
-9.577 -0.912 9.426 -0.846 9.32 -0.706 c
-9.22 -0.57 9.172 -0.375 9.172 -0.118 c
-9.172 1.734 l
-8.717 1.734 l
-8.717 2.131 l
-9.172 2.131 l
-9.172 2.851 l
-h
-10.426 0.779 m
-10.426 1.209 10.529 1.55 10.735 1.808 c
-10.947 2.061 11.227 2.19 11.572 2.19 c
-11.914 2.19 12.19 2.061 12.395 1.808 c
-12.609 1.562 12.723 1.227 12.734 0.808 c
-12.734 0.5 l
-12.734 0.066 12.623 -0.276 12.41 -0.53 c
-12.204 -0.786 11.925 -0.912 11.572 -0.912 c
-11.227 -0.912 10.955 -0.79 10.749 -0.544 c
-10.544 -0.302 10.433 0.033 10.426 0.455 c
-h
-10.911 0.5 m
-10.911 0.183 10.97 -0.059 11.088 -0.235 c
-11.212 -0.405 11.373 -0.485 11.572 -0.485 c
-12.002 -0.485 12.227 -0.177 12.248 0.44 c
-12.248 0.779 l
-12.248 1.08 12.183 1.323 12.057 1.499 c
-11.94 1.675 11.778 1.764 11.572 1.764 c
-11.373 1.764 11.212 1.675 11.088 1.499 c
-10.97 1.323 10.911 1.08 10.911 0.779 c
-h
-15.905 -0.853 m
-15.876 -0.786 15.853 -0.676 15.846 -0.53 c
-15.67 -0.786 15.449 -0.912 15.184 -0.912 c
-14.909 -0.912 14.692 -0.838 14.538 -0.691 c
-14.39 -0.537 14.317 -0.32 14.317 -0.044 c
-14.317 0.257 14.421 0.5 14.626 0.675 c
-14.832 0.86 15.115 0.955 15.479 0.955 c
-15.832 0.955 l
-15.832 1.278 l
-15.832 1.455 15.791 1.577 15.714 1.646 c
-15.633 1.723 15.516 1.764 15.361 1.764 c
-15.214 1.764 15.089 1.72 14.993 1.631 c
-14.905 1.543 14.861 1.433 14.861 1.308 c
-14.376 1.308 l
-14.376 1.455 14.421 1.595 14.508 1.734 c
-14.596 1.881 14.714 1.992 14.861 2.072 c
-15.015 2.15 15.188 2.19 15.375 2.19 c
-15.688 2.19 15.923 2.109 16.081 1.955 c
-16.235 1.808 16.316 1.587 16.316 1.294 c
-16.316 -0.206 l
-16.324 -0.441 16.36 -0.643 16.42 -0.809 c
-16.42 -0.853 l
-h
-15.258 -0.47 m
-15.375 -0.47 15.485 -0.437 15.596 -0.368 c
-15.703 -0.302 15.78 -0.217 15.832 -0.118 c
-15.832 0.588 l
-15.566 0.588 l
-15.331 0.588 15.144 0.536 15.009 0.44 c
-14.88 0.341 14.817 0.198 14.817 0.014 c
-14.817 -0.154 14.847 -0.276 14.905 -0.353 c
-14.972 -0.434 15.089 -0.47 15.258 -0.47 c
-16.794 0.779 m
-16.794 1.238 16.875 1.587 17.044 1.822 c
-17.22 2.065 17.47 2.19 17.794 2.19 c
-18.076 2.19 18.297 2.072 18.455 1.837 c
-18.455 3.38 l
-18.94 3.38 l
-18.94 -0.853 l
-18.5 -0.853 l
-18.47 -0.53 l
-18.311 -0.786 18.088 -0.912 17.794 -0.912 c
-17.478 -0.912 17.235 -0.794 17.058 -0.559 c
-16.882 -0.316 16.794 0.029 16.794 0.47 c
-h
-17.279 0.5 m
-17.279 0.166 17.326 -0.081 17.426 -0.235 c
-17.522 -0.393 17.683 -0.47 17.912 -0.47 c
-18.153 -0.47 18.338 -0.353 18.455 -0.118 c
-18.455 1.396 l
-18.327 1.631 18.147 1.749 17.912 1.749 c
-17.683 1.749 17.522 1.668 17.426 1.514 c
-17.326 1.356 17.279 1.117 17.279 0.793 c
-h
-19.41 0.779 m
-19.41 1.238 19.491 1.587 19.66 1.822 c
-19.836 2.065 20.087 2.19 20.41 2.19 c
-20.693 2.19 20.914 2.072 21.072 1.837 c
-21.072 3.38 l
-21.557 3.38 l
-21.557 -0.853 l
-21.116 -0.853 l
-21.087 -0.53 l
-20.929 -0.786 20.704 -0.912 20.41 -0.912 c
-20.094 -0.912 19.851 -0.794 19.676 -0.559 c
-19.499 -0.316 19.41 0.029 19.41 0.47 c
-h
-19.896 0.5 m
-19.896 0.166 19.944 -0.081 20.042 -0.235 c
-20.138 -0.393 20.3 -0.47 20.528 -0.47 c
-20.771 -0.47 20.954 -0.353 21.072 -0.118 c
-21.072 1.396 l
-20.943 1.631 20.763 1.749 20.528 1.749 c
-20.3 1.749 20.138 1.668 20.042 1.514 c
-19.944 1.356 19.896 1.117 19.896 0.793 c
-h
-22.67 0.279 m
-22.229 0.279 l
-22.2 3.16 l
-22.714 3.16 l
-h
-22.464 -0.309 m
-22.56 -0.309 22.629 -0.339 22.67 -0.397 c
-22.718 -0.449 22.743 -0.515 22.743 -0.603 c
-22.743 -0.684 22.718 -0.75 22.67 -0.809 c
-22.629 -0.856 22.56 -0.882 22.464 -0.882 c
-22.376 -0.882 22.306 -0.856 22.259 -0.809 c
-22.207 -0.75 22.185 -0.684 22.185 -0.603 c
-22.185 -0.515 22.207 -0.449 22.259 -0.397 c
-22.306 -0.339 22.376 -0.309 22.464 -0.309 c
-f
-Q
- endstream endobj 31 0 obj <</BBox[580.256 333.713 630.219 328.304]/Group 67 0 R/Length 12062/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 582.8727 330.7593 cm
-0 0 m
--0.029 -0.434 -0.154 -0.765 -0.367 -1 c
--0.584 -1.228 -0.893 -1.338 -1.294 -1.338 c
--1.697 -1.338 -2.021 -1.187 -2.263 -0.882 c
--2.499 -0.57 -2.616 -0.154 -2.616 0.367 c
--2.616 1.103 l
--2.616 1.621 -2.495 2.032 -2.248 2.337 c
--2.006 2.639 -1.672 2.793 -1.249 2.793 c
--0.866 2.793 -0.569 2.675 -0.353 2.44 c
--0.139 2.205 -0.022 1.87 0 1.44 c
--0.514 1.44 l
--0.536 1.771 -0.602 2.007 -0.72 2.146 c
--0.837 2.282 -1.014 2.352 -1.249 2.352 c
--1.525 2.352 -1.734 2.242 -1.881 2.028 c
--2.028 1.812 -2.102 1.5 -2.102 1.087 c
--2.102 0.353 l
--2.102 -0.052 -2.036 -0.36 -1.896 -0.574 c
--1.76 -0.79 -1.558 -0.897 -1.294 -0.897 c
--1.028 -0.897 -0.845 -0.834 -0.735 -0.706 c
--0.617 -0.58 -0.544 -0.345 -0.514 0 c
-h
-0.882 1.396 m
-1.066 1.639 1.301 1.764 1.588 1.764 c
-2.117 1.764 2.386 1.411 2.396 0.706 c
-2.396 -1.279 l
-1.912 -1.279 l
-1.912 0.676 l
-1.912 0.912 1.871 1.076 1.794 1.176 c
-1.713 1.271 1.595 1.323 1.441 1.323 c
-1.324 1.323 1.213 1.282 1.118 1.205 c
-1.018 1.124 0.941 1.018 0.882 0.881 c
-0.882 -1.279 l
-0.397 -1.279 l
-0.397 2.954 l
-0.882 2.954 l
-h
-4.466 -1.279 m
-4.436 -1.213 4.414 -1.103 4.406 -0.956 c
-4.23 -1.213 4.009 -1.338 3.745 -1.338 c
-3.469 -1.338 3.252 -1.264 3.098 -1.118 c
-2.951 -0.963 2.878 -0.746 2.878 -0.47 c
-2.878 -0.169 2.98 0.073 3.186 0.249 c
-3.392 0.434 3.675 0.529 4.039 0.529 c
-4.391 0.529 l
-4.391 0.852 l
-4.391 1.029 4.351 1.151 4.274 1.22 c
-4.193 1.297 4.075 1.338 3.921 1.338 c
-3.774 1.338 3.649 1.294 3.554 1.205 c
-3.466 1.117 3.421 1.007 3.421 0.881 c
-2.937 0.881 l
-2.937 1.029 2.98 1.168 3.069 1.308 c
-3.157 1.455 3.275 1.565 3.421 1.646 c
-3.576 1.723 3.749 1.764 3.936 1.764 c
-4.248 1.764 4.484 1.683 4.642 1.529 c
-4.796 1.382 4.877 1.161 4.877 0.867 c
-4.877 -0.632 l
-4.884 -0.867 4.921 -1.07 4.979 -1.235 c
-4.979 -1.279 l
-h
-3.818 -0.897 m
-3.936 -0.897 4.046 -0.864 4.156 -0.794 c
-4.263 -0.728 4.341 -0.643 4.391 -0.544 c
-4.391 0.162 l
-4.127 0.162 l
-3.892 0.162 3.705 0.11 3.568 0.014 c
-3.44 -0.085 3.377 -0.228 3.377 -0.412 c
-3.377 -0.58 3.407 -0.702 3.466 -0.779 c
-3.531 -0.86 3.649 -0.897 3.818 -0.897 c
-5.913 1.705 m
-5.928 1.382 l
-6.112 1.635 6.354 1.764 6.648 1.764 c
-7.177 1.764 7.446 1.411 7.456 0.706 c
-7.456 -1.279 l
-6.972 -1.279 l
-6.972 0.676 l
-6.972 0.912 6.931 1.076 6.854 1.176 c
-6.773 1.271 6.656 1.323 6.501 1.323 c
-6.384 1.323 6.273 1.282 6.178 1.205 c
-6.078 1.124 6.001 1.018 5.943 0.881 c
-5.943 -1.279 l
-5.457 -1.279 l
-5.457 1.705 l
-h
-7.909 0.353 m
-7.909 0.812 7.99 1.161 8.158 1.396 c
-8.335 1.639 8.584 1.764 8.908 1.764 c
-9.209 1.764 9.441 1.631 9.599 1.367 c
-9.628 1.705 l
-10.07 1.705 l
-10.07 -1.309 l
-10.07 -1.679 9.97 -1.962 9.775 -2.161 c
-9.588 -2.356 9.327 -2.455 8.996 -2.455 c
-8.849 -2.455 8.68 -2.415 8.497 -2.338 c
-8.309 -2.267 8.173 -2.18 8.085 -2.072 c
-8.276 -1.735 l
-8.482 -1.941 8.706 -2.043 8.952 -2.043 c
-9.353 -2.043 9.559 -1.816 9.569 -1.367 c
-9.569 -0.985 l
-9.411 -1.22 9.191 -1.338 8.908 -1.338 c
-8.592 -1.338 8.349 -1.22 8.173 -0.985 c
-8.004 -0.75 7.916 -0.419 7.909 0.014 c
-h
-8.393 0.073 m
-8.393 -0.261 8.441 -0.507 8.541 -0.661 c
-8.636 -0.819 8.798 -0.897 9.025 -0.897 c
-9.268 -0.897 9.452 -0.775 9.569 -0.53 c
-9.569 0.955 l
-9.452 1.198 9.276 1.323 9.04 1.323 c
-8.813 1.323 8.651 1.242 8.555 1.087 c
-8.456 0.929 8.401 0.69 8.393 0.367 c
-h
-11.66 -1.338 m
-11.286 -1.338 11.003 -1.231 10.808 -1.014 c
-10.61 -0.79 10.514 -0.463 10.514 -0.029 c
-10.514 0.338 l
-10.514 0.779 10.606 1.124 10.793 1.382 c
-10.988 1.635 11.263 1.764 11.616 1.764 c
-11.958 1.764 12.212 1.65 12.381 1.425 c
-12.557 1.198 12.649 0.852 12.659 0.382 c
-12.659 0.073 l
-10.999 0.073 l
-10.999 0 l
-10.999 -0.324 11.057 -0.559 11.175 -0.706 c
-11.293 -0.846 11.462 -0.912 11.69 -0.912 c
-11.836 -0.912 11.961 -0.889 12.072 -0.838 c
-12.179 -0.779 12.281 -0.691 12.381 -0.574 c
-12.63 -0.882 l
-12.424 -1.187 12.102 -1.338 11.66 -1.338 c
-11.616 1.338 m
-11.41 1.338 11.256 1.268 11.161 1.132 c
-11.061 0.992 11.007 0.779 10.999 0.484 c
-12.175 0.484 l
-12.175 0.559 l
-12.152 0.831 12.102 1.029 12.013 1.147 c
-11.925 1.271 11.793 1.338 11.616 1.338 c
-14.512 -0.515 m
-14.512 -0.408 14.471 -0.32 14.394 -0.25 c
-14.313 -0.173 14.163 -0.085 13.939 0.014 c
-13.675 0.121 13.486 0.213 13.38 0.293 c
-13.27 0.371 13.193 0.459 13.145 0.559 c
-13.093 0.654 13.072 0.771 13.072 0.912 c
-13.072 1.153 13.16 1.356 13.336 1.514 c
-13.513 1.679 13.737 1.764 14.012 1.764 c
-14.306 1.764 14.541 1.675 14.718 1.5 c
-14.894 1.33 14.982 1.117 14.982 0.852 c
-14.498 0.852 l
-14.498 0.989 14.446 1.103 14.35 1.19 c
-14.263 1.286 14.148 1.338 14.012 1.338 c
-13.866 1.338 13.752 1.297 13.675 1.22 c
-13.594 1.151 13.557 1.051 13.557 0.926 c
-13.557 0.827 13.586 0.75 13.644 0.69 c
-13.704 0.632 13.843 0.551 14.071 0.455 c
-14.431 0.309 14.677 0.166 14.806 0.029 c
-14.942 -0.1 15.011 -0.272 15.011 -0.485 c
-15.011 -0.742 14.916 -0.948 14.733 -1.103 c
-14.556 -1.261 14.321 -1.338 14.027 -1.338 c
-13.711 -1.338 13.457 -1.249 13.263 -1.073 c
-13.075 -0.889 12.983 -0.658 12.983 -0.382 c
-13.469 -0.382 l
-13.476 -0.551 13.527 -0.684 13.615 -0.779 c
-13.711 -0.867 13.85 -0.912 14.027 -0.912 c
-14.182 -0.912 14.299 -0.879 14.38 -0.809 c
-14.468 -0.742 14.512 -0.643 14.512 -0.515 c
-17.702 -0.912 m
-17.867 -0.912 17.999 -0.864 18.099 -0.765 c
-18.194 -0.669 18.249 -0.526 18.261 -0.339 c
-18.716 -0.339 l
-18.705 -0.625 18.602 -0.864 18.407 -1.058 c
-18.22 -1.246 17.985 -1.338 17.702 -1.338 c
-17.338 -1.338 17.058 -1.22 16.864 -0.985 c
-16.665 -0.75 16.57 -0.405 16.57 0.058 c
-16.57 0.382 l
-16.57 0.831 16.661 1.176 16.85 1.411 c
-17.044 1.646 17.326 1.764 17.702 1.764 c
-18.003 1.764 18.246 1.664 18.422 1.469 c
-18.606 1.271 18.705 1.007 18.716 0.676 c
-18.261 0.676 l
-18.238 0.9 18.18 1.066 18.084 1.176 c
-17.995 1.282 17.867 1.338 17.702 1.338 c
-17.485 1.338 17.324 1.264 17.216 1.117 c
-17.118 0.977 17.062 0.75 17.055 0.426 c
-17.055 0.044 l
-17.055 -0.309 17.103 -0.559 17.202 -0.706 c
-17.309 -0.846 17.474 -0.912 17.702 -0.912 c
-19.009 0.353 m
-19.009 0.783 19.113 1.124 19.319 1.382 c
-19.532 1.635 19.811 1.764 20.156 1.764 c
-20.498 1.764 20.773 1.635 20.979 1.382 c
-21.193 1.135 21.307 0.801 21.318 0.382 c
-21.318 0.073 l
-21.318 -0.36 21.207 -0.702 20.995 -0.956 c
-20.788 -1.213 20.509 -1.338 20.156 -1.338 c
-19.811 -1.338 19.539 -1.216 19.333 -0.97 c
-19.127 -0.728 19.017 -0.393 19.009 0.029 c
-h
-19.495 0.073 m
-19.495 -0.243 19.554 -0.485 19.672 -0.661 c
-19.796 -0.831 19.958 -0.912 20.156 -0.912 c
-20.586 -0.912 20.811 -0.603 20.833 0.014 c
-20.833 0.353 l
-20.833 0.654 20.767 0.897 20.642 1.072 c
-20.524 1.249 20.362 1.338 20.156 1.338 c
-19.958 1.338 19.796 1.249 19.672 1.072 c
-19.554 0.897 19.495 0.654 19.495 0.353 c
-h
-22.215 1.705 m
-22.229 1.425 l
-22.406 1.65 22.645 1.764 22.949 1.764 c
-23.28 1.764 23.512 1.617 23.64 1.323 c
-23.824 1.617 24.085 1.764 24.419 1.764 c
-24.978 1.764 25.261 1.419 25.272 0.735 c
-25.272 -1.279 l
-24.787 -1.279 l
-24.787 0.69 l
-24.787 0.904 24.746 1.062 24.669 1.161 c
-24.588 1.268 24.456 1.323 24.272 1.323 c
-24.125 1.323 24.008 1.264 23.919 1.147 c
-23.831 1.036 23.776 0.897 23.757 0.72 c
-23.757 -1.279 l
-23.273 -1.279 l
-23.273 0.706 l
-23.262 1.117 23.089 1.323 22.758 1.323 c
-22.512 1.323 22.34 1.198 22.244 0.955 c
-22.244 -1.279 l
-21.758 -1.279 l
-21.758 1.705 l
-h
-26.176 1.705 m
-26.19 1.425 l
-26.367 1.65 26.606 1.764 26.911 1.764 c
-27.241 1.764 27.473 1.617 27.601 1.323 c
-27.786 1.617 28.046 1.764 28.38 1.764 c
-28.939 1.764 29.222 1.419 29.233 0.735 c
-29.233 -1.279 l
-28.748 -1.279 l
-28.748 0.69 l
-28.748 0.904 28.708 1.062 28.63 1.161 c
-28.549 1.268 28.417 1.323 28.233 1.323 c
-28.087 1.323 27.969 1.264 27.881 1.147 c
-27.792 1.036 27.738 0.897 27.719 0.72 c
-27.719 -1.279 l
-27.234 -1.279 l
-27.234 0.706 l
-27.223 1.117 27.05 1.323 26.72 1.323 c
-26.473 1.323 26.3 1.198 26.205 0.955 c
-26.205 -1.279 l
-25.72 -1.279 l
-25.72 1.705 l
-h
-30.211 -1.279 -0.5 2.984 re
-30.24 2.499 m
-30.24 2.41 30.215 2.337 30.167 2.278 c
-30.126 2.227 30.057 2.205 29.961 2.205 c
-29.872 2.205 29.803 2.227 29.755 2.278 c
-29.714 2.337 29.696 2.404 29.696 2.484 c
-29.696 2.572 29.714 2.645 29.755 2.705 c
-29.803 2.763 29.872 2.793 29.961 2.793 c
-30.057 2.793 30.126 2.763 30.167 2.705 c
-30.215 2.645 30.24 2.576 30.24 2.499 c
-31.515 2.425 m
-31.515 1.705 l
-31.971 1.705 l
-31.971 1.308 l
-31.515 1.308 l
-31.515 -0.544 l
-31.515 -0.661 31.534 -0.75 31.574 -0.809 c
-31.611 -0.867 31.68 -0.897 31.78 -0.897 c
-31.838 -0.897 31.901 -0.889 31.971 -0.867 c
-31.971 -1.279 l
-31.853 -1.316 31.74 -1.338 31.632 -1.338 c
-31.435 -1.338 31.283 -1.272 31.177 -1.132 c
-31.078 -0.996 31.03 -0.802 31.03 -0.544 c
-31.03 1.308 l
-30.574 1.308 l
-30.574 1.705 l
-31.03 1.705 l
-31.03 2.425 l
-h
-33.496 -1.338 m
-33.121 -1.338 32.838 -1.231 32.644 -1.014 c
-32.445 -0.79 32.349 -0.463 32.349 -0.029 c
-32.349 0.338 l
-32.349 0.779 32.441 1.124 32.629 1.382 c
-32.823 1.635 33.099 1.764 33.452 1.764 c
-33.793 1.764 34.047 1.65 34.217 1.425 c
-34.392 1.198 34.485 0.852 34.495 0.382 c
-34.495 0.073 l
-32.835 0.073 l
-32.835 0 l
-32.835 -0.324 32.893 -0.559 33.01 -0.706 c
-33.128 -0.846 33.297 -0.912 33.525 -0.912 c
-33.672 -0.912 33.797 -0.889 33.907 -0.838 c
-34.014 -0.779 34.117 -0.691 34.217 -0.574 c
-34.466 -0.882 l
-34.26 -1.187 33.937 -1.338 33.496 -1.338 c
-33.452 1.338 m
-33.246 1.338 33.091 1.268 32.996 1.132 c
-32.897 0.992 32.842 0.779 32.835 0.484 c
-34.011 0.484 l
-34.011 0.559 l
-33.988 0.831 33.937 1.029 33.849 1.147 c
-33.76 1.271 33.629 1.338 33.452 1.338 c
-34.805 0.353 m
-34.805 0.812 34.884 1.161 35.054 1.396 c
-35.231 1.639 35.48 1.764 35.804 1.764 c
-36.087 1.764 36.307 1.646 36.465 1.411 c
-36.465 2.954 l
-36.95 2.954 l
-36.95 -1.279 l
-36.509 -1.279 l
-36.48 -0.956 l
-36.322 -1.213 36.098 -1.338 35.804 -1.338 c
-35.487 -1.338 35.245 -1.22 35.069 -0.985 c
-34.892 -0.742 34.805 -0.397 34.805 0.044 c
-h
-35.289 0.073 m
-35.289 -0.261 35.337 -0.507 35.436 -0.661 c
-35.532 -0.819 35.694 -0.897 35.921 -0.897 c
-36.164 -0.897 36.347 -0.779 36.465 -0.544 c
-36.465 0.97 l
-36.336 1.205 36.156 1.323 35.921 1.323 c
-35.694 1.323 35.532 1.242 35.436 1.087 c
-35.337 0.929 35.289 0.69 35.289 0.367 c
-h
-39.21 1.396 m
-39.393 1.639 39.629 1.764 39.916 1.764 c
-40.445 1.764 40.713 1.411 40.724 0.706 c
-40.724 -1.279 l
-40.239 -1.279 l
-40.239 0.676 l
-40.239 0.912 40.199 1.076 40.122 1.176 c
-40.041 1.271 39.923 1.323 39.769 1.323 c
-39.651 1.323 39.541 1.282 39.445 1.205 c
-39.346 1.124 39.269 1.018 39.21 0.881 c
-39.21 -1.279 l
-38.726 -1.279 l
-38.726 2.954 l
-39.21 2.954 l
-h
-42.323 -1.338 m
-41.948 -1.338 41.664 -1.231 41.47 -1.014 c
-41.272 -0.79 41.176 -0.463 41.176 -0.029 c
-41.176 0.338 l
-41.176 0.779 41.268 1.124 41.456 1.382 c
-41.65 1.635 41.926 1.764 42.279 1.764 c
-42.62 1.764 42.874 1.65 43.043 1.425 c
-43.219 1.198 43.311 0.852 43.322 0.382 c
-43.322 0.073 l
-41.662 0.073 l
-41.662 0 l
-41.662 -0.324 41.72 -0.559 41.837 -0.706 c
-41.955 -0.846 42.124 -0.912 42.352 -0.912 c
-42.499 -0.912 42.624 -0.889 42.734 -0.838 c
-42.84 -0.779 42.944 -0.691 43.043 -0.574 c
-43.293 -0.882 l
-43.087 -1.187 42.763 -1.338 42.323 -1.338 c
-42.279 1.338 m
-42.073 1.338 41.918 1.268 41.822 1.132 c
-41.724 0.992 41.668 0.779 41.662 0.484 c
-42.838 0.484 l
-42.838 0.559 l
-42.815 0.831 42.763 1.029 42.676 1.147 c
-42.587 1.271 42.455 1.338 42.279 1.338 c
-44.968 1.249 m
-44.899 1.257 44.825 1.264 44.748 1.264 c
-44.49 1.264 44.314 1.124 44.218 0.852 c
-44.218 -1.279 l
-43.734 -1.279 l
-43.734 1.705 l
-44.204 1.705 l
-44.218 1.396 l
-44.344 1.639 44.527 1.764 44.762 1.764 c
-44.84 1.764 44.902 1.749 44.954 1.72 c
-h
-46.346 -1.338 m
-45.972 -1.338 45.689 -1.231 45.494 -1.014 c
-45.296 -0.79 45.2 -0.463 45.2 -0.029 c
-45.2 0.338 l
-45.2 0.779 45.292 1.124 45.479 1.382 c
-45.674 1.635 45.949 1.764 46.302 1.764 c
-46.644 1.764 46.898 1.65 47.067 1.425 c
-47.243 1.198 47.335 0.852 47.346 0.382 c
-47.346 0.073 l
-45.685 0.073 l
-45.685 0 l
-45.685 -0.324 45.743 -0.559 45.861 -0.706 c
-45.979 -0.846 46.148 -0.912 46.376 -0.912 c
-46.523 -0.912 46.647 -0.889 46.758 -0.838 c
-46.865 -0.779 46.967 -0.691 47.067 -0.574 c
-47.316 -0.882 l
-47.111 -1.187 46.788 -1.338 46.346 -1.338 c
-46.302 1.338 m
-46.096 1.338 45.942 1.268 45.847 1.132 c
-45.747 0.992 45.693 0.779 45.685 0.484 c
-46.861 0.484 l
-46.861 0.559 l
-46.838 0.831 46.788 1.029 46.699 1.147 c
-46.611 1.271 46.479 1.338 46.302 1.338 c
-f
-Q
- endstream endobj 32 0 obj <</BBox[592.773 327.187 617.18 322.836]/Group 68 0 R/Length 5562/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 595.2274 323.7479 cm
-0 0 m
-0.456 2.131 l
-0.941 2.131 l
-0.206 -0.853 l
--0.176 -0.853 l
--0.764 1.278 l
--1.338 -0.853 l
--1.72 -0.853 l
--2.454 2.131 l
--1.97 2.131 l
--1.5 0.058 l
--0.955 2.131 l
--0.573 2.131 l
-h
-1.735 -0.853 -0.5 2.984 re
-1.764 2.925 m
-1.764 2.836 1.738 2.763 1.69 2.705 c
-1.65 2.653 1.58 2.631 1.484 2.631 c
-1.397 2.631 1.326 2.653 1.279 2.705 c
-1.239 2.763 1.22 2.83 1.22 2.91 c
-1.22 2.998 1.239 3.072 1.279 3.131 c
-1.326 3.189 1.397 3.219 1.484 3.219 c
-1.58 3.219 1.65 3.189 1.69 3.131 c
-1.738 3.072 1.764 3.002 1.764 2.925 c
-2.94 -0.853 -0.5 4.233 re
-4.145 -0.853 -0.5 4.233 re
-8.183 0.5 m
-8.183 0.029 8.1 -0.324 7.934 -0.559 c
-7.765 -0.794 7.522 -0.912 7.199 -0.912 c
-6.883 -0.912 6.648 -0.775 6.494 -0.5 c
-6.464 -0.853 l
-6.024 -0.853 l
-6.024 3.38 l
-6.508 3.38 l
-6.508 1.808 l
-6.662 2.061 6.894 2.19 7.199 2.19 c
-7.522 2.19 7.765 2.072 7.934 1.837 c
-8.1 1.602 8.183 1.253 8.183 0.793 c
-h
-7.699 0.779 m
-7.699 1.132 7.647 1.381 7.552 1.529 c
-7.453 1.675 7.291 1.749 7.067 1.749 c
-6.82 1.749 6.633 1.61 6.508 1.338 c
-6.508 -0.073 l
-6.626 -0.339 6.817 -0.47 7.082 -0.47 c
-7.294 -0.47 7.453 -0.397 7.552 -0.25 c
-7.647 -0.096 7.699 0.147 7.699 0.47 c
-h
-9.683 -0.912 m
-9.309 -0.912 9.025 -0.805 8.831 -0.588 c
-8.632 -0.364 8.536 -0.037 8.536 0.397 c
-8.536 0.764 l
-8.536 1.205 8.628 1.55 8.816 1.808 c
-9.01 2.061 9.286 2.19 9.639 2.19 c
-9.981 2.19 10.234 2.076 10.404 1.851 c
-10.58 1.624 10.672 1.278 10.683 0.808 c
-10.683 0.5 l
-9.022 0.5 l
-9.022 0.426 l
-9.022 0.103 9.081 -0.133 9.199 -0.279 c
-9.316 -0.42 9.484 -0.485 9.712 -0.485 c
-9.86 -0.485 9.985 -0.463 10.095 -0.412 c
-10.201 -0.353 10.304 -0.265 10.404 -0.148 c
-10.653 -0.456 l
-10.448 -0.761 10.124 -0.912 9.683 -0.912 c
-9.639 1.764 m
-9.434 1.764 9.279 1.694 9.183 1.558 c
-9.084 1.419 9.029 1.205 9.022 0.911 c
-10.198 0.911 l
-10.198 0.985 l
-10.176 1.257 10.124 1.455 10.036 1.573 c
-9.947 1.697 9.816 1.764 9.639 1.764 c
-13.74 -0.088 m
-13.74 0.018 13.7 0.106 13.623 0.176 c
-13.542 0.253 13.391 0.342 13.167 0.44 c
-12.902 0.548 12.715 0.639 12.609 0.72 c
-12.498 0.797 12.421 0.885 12.374 0.985 c
-12.322 1.08 12.299 1.198 12.299 1.338 c
-12.299 1.579 12.388 1.782 12.565 1.94 c
-12.74 2.105 12.965 2.19 13.24 2.19 c
-13.534 2.19 13.77 2.102 13.945 1.926 c
-14.122 1.756 14.211 1.543 14.211 1.278 c
-13.725 1.278 l
-13.725 1.415 13.674 1.529 13.579 1.616 c
-13.49 1.712 13.376 1.764 13.24 1.764 c
-13.093 1.764 12.979 1.723 12.902 1.646 c
-12.821 1.577 12.785 1.477 12.785 1.352 c
-12.785 1.253 12.814 1.176 12.873 1.117 c
-12.931 1.058 13.072 0.977 13.299 0.881 c
-13.66 0.735 13.906 0.592 14.034 0.455 c
-14.17 0.326 14.24 0.154 14.24 -0.059 c
-14.24 -0.316 14.144 -0.522 13.961 -0.676 c
-13.785 -0.834 13.549 -0.912 13.255 -0.912 c
-12.939 -0.912 12.686 -0.823 12.491 -0.647 c
-12.303 -0.463 12.212 -0.231 12.212 0.044 c
-12.696 0.044 l
-12.704 -0.125 12.755 -0.258 12.844 -0.353 c
-12.939 -0.441 13.079 -0.485 13.255 -0.485 c
-13.409 -0.485 13.527 -0.452 13.608 -0.383 c
-13.696 -0.316 13.74 -0.217 13.74 -0.088 c
-16.224 -0.853 m
-16.195 -0.786 16.173 -0.676 16.166 -0.53 c
-15.989 -0.786 15.769 -0.912 15.504 -0.912 c
-15.229 -0.912 15.011 -0.838 14.857 -0.691 c
-14.71 -0.537 14.637 -0.32 14.637 -0.044 c
-14.637 0.257 14.739 0.5 14.945 0.675 c
-15.152 0.86 15.434 0.955 15.798 0.955 c
-16.151 0.955 l
-16.151 1.278 l
-16.151 1.455 16.11 1.577 16.033 1.646 c
-15.952 1.723 15.834 1.764 15.68 1.764 c
-15.534 1.764 15.408 1.72 15.313 1.631 c
-15.225 1.543 15.181 1.433 15.181 1.308 c
-14.695 1.308 l
-14.695 1.455 14.739 1.595 14.828 1.734 c
-14.916 1.882 15.034 1.992 15.181 2.072 c
-15.335 2.15 15.508 2.19 15.695 2.19 c
-16.008 2.19 16.243 2.109 16.401 1.955 c
-16.555 1.808 16.636 1.587 16.636 1.294 c
-16.636 -0.206 l
-16.644 -0.441 16.68 -0.643 16.739 -0.809 c
-16.739 -0.853 l
-h
-15.578 -0.47 m
-15.695 -0.47 15.805 -0.437 15.915 -0.368 c
-16.023 -0.302 16.1 -0.217 16.151 -0.118 c
-16.151 0.588 l
-15.886 0.588 l
-15.651 0.588 15.464 0.536 15.327 0.44 c
-15.199 0.342 15.136 0.199 15.136 0.014 c
-15.136 -0.154 15.166 -0.276 15.225 -0.353 c
-15.291 -0.434 15.408 -0.47 15.578 -0.47 c
-17.422 -0.853 m
-17.422 1.734 l
-17.041 1.734 l
-17.041 2.131 l
-17.422 2.131 l
-17.422 2.469 l
-17.43 2.771 17.511 3.006 17.658 3.175 c
-17.804 3.351 18.014 3.439 18.29 3.439 c
-18.385 3.439 18.485 3.424 18.583 3.395 c
-18.554 2.984 l
-18.485 2.991 18.411 2.998 18.334 2.998 c
-18.058 2.998 17.922 2.8 17.922 2.41 c
-17.922 2.131 l
-18.422 2.131 l
-18.422 1.734 l
-17.922 1.734 l
-17.922 -0.853 l
-h
-19.881 -0.912 m
-19.506 -0.912 19.223 -0.805 19.028 -0.588 c
-18.83 -0.364 18.734 -0.037 18.734 0.397 c
-18.734 0.764 l
-18.734 1.205 18.826 1.55 19.013 1.808 c
-19.208 2.061 19.484 2.19 19.836 2.19 c
-20.178 2.19 20.432 2.076 20.601 1.851 c
-20.777 1.624 20.869 1.278 20.881 0.808 c
-20.881 0.5 l
-19.219 0.5 l
-19.219 0.426 l
-19.219 0.103 19.278 -0.133 19.395 -0.279 c
-19.513 -0.42 19.682 -0.485 19.91 -0.485 c
-20.057 -0.485 20.182 -0.463 20.293 -0.412 c
-20.399 -0.353 20.501 -0.265 20.601 -0.148 c
-20.851 -0.456 l
-20.645 -0.761 20.322 -0.912 19.881 -0.912 c
-19.836 1.764 m
-19.63 1.764 19.476 1.694 19.381 1.558 c
-19.281 1.419 19.227 1.205 19.219 0.911 c
-20.395 0.911 l
-20.395 0.985 l
-20.373 1.257 20.322 1.455 20.233 1.573 c
-20.145 1.697 20.013 1.764 19.836 1.764 c
-21.321 -0.588 m
-21.321 -0.5 21.343 -0.426 21.394 -0.368 c
-21.454 -0.309 21.531 -0.279 21.629 -0.279 c
-21.737 -0.279 21.814 -0.309 21.865 -0.368 c
-21.924 -0.426 21.953 -0.5 21.953 -0.588 c
-21.953 -0.669 21.924 -0.736 21.865 -0.794 c
-21.814 -0.853 21.737 -0.882 21.629 -0.882 c
-21.531 -0.882 21.454 -0.853 21.394 -0.794 c
-21.343 -0.736 21.321 -0.669 21.321 -0.588 c
-f
-Q
- endstream endobj 33 0 obj <</BBox[579.503 320.602 630.821 315.104]/Group 69 0 R/Length 14034/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-580.003 316.31 -0.5 4.013 re
-580.94 316.31 m
-580.94 318.897 l
-580.557 318.897 l
-580.557 319.294 l
-580.94 319.294 l
-580.94 319.632 l
-580.948 319.933 581.028 320.168 581.176 320.338 c
-581.322 320.514 581.532 320.602 581.808 320.602 c
-581.903 320.602 582.003 320.587 582.101 320.558 c
-582.072 320.147 l
-582.003 320.153 581.929 320.161 581.852 320.161 c
-581.576 320.161 581.44 319.962 581.44 319.573 c
-581.44 319.294 l
-581.939 319.294 l
-581.939 318.897 l
-581.44 318.897 l
-581.44 316.31 l
-h
-584.413 317.119 m
-584.956 319.294 l
-585.471 319.294 l
-584.501 315.883 l
-584.431 315.63 584.328 315.439 584.193 315.31 c
-584.052 315.174 583.902 315.104 583.736 315.104 c
-583.667 315.104 583.582 315.119 583.487 315.149 c
-583.487 315.561 l
-583.589 315.546 l
-583.726 315.546 583.832 315.582 583.913 315.648 c
-584.002 315.719 584.067 315.836 584.119 316.001 c
-584.207 316.34 l
-583.34 319.294 l
-583.869 319.294 l
-h
-585.652 317.942 m
-585.652 318.372 585.754 318.713 585.96 318.971 c
-586.173 319.224 586.452 319.353 586.797 319.353 c
-587.14 319.353 587.415 319.224 587.621 318.971 c
-587.834 318.724 587.948 318.389 587.959 317.971 c
-587.959 317.662 l
-587.959 317.229 587.848 316.887 587.636 316.633 c
-587.43 316.376 587.15 316.251 586.797 316.251 c
-586.452 316.251 586.18 316.373 585.974 316.619 c
-585.769 316.861 585.658 317.196 585.652 317.618 c
-h
-586.136 317.662 m
-586.136 317.346 586.195 317.103 586.313 316.928 c
-586.437 316.758 586.599 316.677 586.797 316.677 c
-587.227 316.677 587.452 316.986 587.474 317.603 c
-587.474 317.942 l
-587.474 318.243 587.408 318.485 587.283 318.661 c
-587.165 318.838 587.003 318.927 586.797 318.927 c
-586.599 318.927 586.437 318.838 586.313 318.661 c
-586.195 318.485 586.136 318.243 586.136 317.942 c
-h
-589.914 316.575 m
-589.756 316.357 589.521 316.251 589.209 316.251 c
-588.944 316.251 588.738 316.343 588.591 316.531 c
-588.451 316.714 588.385 316.99 588.385 317.354 c
-588.385 319.294 l
-588.87 319.294 l
-588.87 317.383 l
-588.87 316.92 589.01 316.692 589.297 316.692 c
-589.59 316.692 589.789 316.824 589.899 317.089 c
-589.899 319.294 l
-590.399 319.294 l
-590.399 316.31 l
-589.928 316.31 l
-h
-593.685 316.31 m
-593.654 316.376 593.633 316.486 593.625 316.633 c
-593.449 316.376 593.228 316.251 592.964 316.251 c
-592.688 316.251 592.472 316.325 592.317 316.471 c
-592.17 316.626 592.097 316.843 592.097 317.119 c
-592.097 317.42 592.2 317.662 592.405 317.838 c
-592.611 318.023 592.894 318.118 593.258 318.118 c
-593.611 318.118 l
-593.611 318.441 l
-593.611 318.618 593.571 318.739 593.493 318.809 c
-593.413 318.886 593.295 318.927 593.141 318.927 c
-592.993 318.927 592.868 318.882 592.773 318.794 c
-592.685 318.706 592.64 318.596 592.64 318.47 c
-592.156 318.47 l
-592.156 318.618 592.2 318.757 592.288 318.897 c
-592.376 319.044 592.494 319.154 592.64 319.235 c
-592.795 319.312 592.968 319.353 593.155 319.353 c
-593.467 319.353 593.702 319.272 593.86 319.118 c
-594.015 318.971 594.096 318.75 594.096 318.456 c
-594.096 316.957 l
-594.103 316.722 594.14 316.519 594.198 316.354 c
-594.198 316.31 l
-h
-593.037 316.692 m
-593.155 316.692 593.265 316.725 593.376 316.795 c
-593.482 316.861 593.559 316.945 593.611 317.045 c
-593.611 317.751 l
-593.346 317.751 l
-593.111 317.751 592.923 317.699 592.787 317.603 c
-592.659 317.504 592.596 317.361 592.596 317.177 c
-592.596 317.008 592.626 316.887 592.685 316.81 c
-592.75 316.729 592.868 316.692 593.037 316.692 c
-595.911 318.838 m
-595.842 318.846 595.767 318.853 595.69 318.853 c
-595.433 318.853 595.257 318.713 595.161 318.441 c
-595.161 316.31 l
-594.676 316.31 l
-594.676 319.294 l
-595.146 319.294 l
-595.161 318.985 l
-595.287 319.228 595.47 319.353 595.705 319.353 c
-595.782 319.353 595.845 319.338 595.896 319.309 c
-h
-597.286 316.251 m
-596.91 316.251 596.628 316.357 596.433 316.575 c
-596.235 316.799 596.139 317.126 596.139 317.56 c
-596.139 317.927 l
-596.139 318.368 596.231 318.713 596.418 318.971 c
-596.613 319.224 596.889 319.353 597.242 319.353 c
-597.583 319.353 597.837 319.239 598.005 319.014 c
-598.182 318.786 598.274 318.441 598.285 317.971 c
-598.285 317.662 l
-596.624 317.662 l
-596.624 317.589 l
-596.624 317.265 596.683 317.03 596.8 316.883 c
-596.918 316.743 597.087 316.677 597.315 316.677 c
-597.462 316.677 597.587 316.7 597.697 316.751 c
-597.804 316.81 597.907 316.897 598.005 317.015 c
-598.256 316.706 l
-598.05 316.402 597.726 316.251 597.286 316.251 c
-597.242 318.927 m
-597.035 318.927 596.881 318.857 596.785 318.721 c
-596.686 318.581 596.631 318.368 596.624 318.073 c
-597.8 318.073 l
-597.8 318.148 l
-597.778 318.42 597.726 318.618 597.638 318.736 c
-597.55 318.86 597.417 318.927 597.242 318.927 c
-599.799 317.942 m
-599.799 318.401 599.88 318.75 600.049 318.985 c
-600.226 319.228 600.475 319.353 600.798 319.353 c
-601.082 319.353 601.302 319.235 601.46 319 c
-601.46 320.543 l
-601.945 320.543 l
-601.945 316.31 l
-601.504 316.31 l
-601.475 316.633 l
-601.317 316.376 601.093 316.251 600.798 316.251 c
-600.482 316.251 600.24 316.369 600.064 316.604 c
-599.887 316.847 599.799 317.192 599.799 317.633 c
-h
-600.284 317.662 m
-600.284 317.328 600.332 317.082 600.432 316.928 c
-600.527 316.77 600.688 316.692 600.916 316.692 c
-601.159 316.692 601.342 316.81 601.46 317.045 c
-601.46 318.559 l
-601.332 318.794 601.151 318.912 600.916 318.912 c
-600.688 318.912 600.527 318.831 600.432 318.676 c
-600.332 318.518 600.284 318.279 600.284 317.956 c
-h
-602.412 317.942 m
-602.412 318.372 602.514 318.713 602.72 318.971 c
-602.934 319.224 603.213 319.353 603.559 319.353 c
-603.9 319.353 604.176 319.224 604.382 318.971 c
-604.594 318.724 604.708 318.389 604.719 317.971 c
-604.719 317.662 l
-604.719 317.229 604.609 316.887 604.396 316.633 c
-604.191 316.376 603.911 316.251 603.559 316.251 c
-603.213 316.251 602.94 316.373 602.735 316.619 c
-602.529 316.861 602.419 317.196 602.412 317.618 c
-h
-602.897 317.662 m
-602.897 317.346 602.956 317.103 603.073 316.928 c
-603.198 316.758 603.36 316.677 603.559 316.677 c
-603.988 316.677 604.212 316.986 604.234 317.603 c
-604.234 317.942 l
-604.234 318.243 604.168 318.485 604.043 318.661 c
-603.925 318.838 603.764 318.927 603.559 318.927 c
-603.36 318.927 603.198 318.838 603.073 318.661 c
-602.956 318.485 602.897 318.243 602.897 317.942 c
-h
-605.689 316.31 -0.5 2.984 re
-605.719 320.088 m
-605.719 319.999 605.693 319.926 605.645 319.867 c
-605.606 319.816 605.535 319.794 605.44 319.794 c
-605.352 319.794 605.282 319.816 605.234 319.867 c
-605.194 319.926 605.175 319.992 605.175 320.072 c
-605.175 320.161 605.194 320.234 605.234 320.294 c
-605.282 320.352 605.352 320.382 605.44 320.382 c
-605.535 320.382 605.606 320.352 605.645 320.294 c
-605.693 320.234 605.719 320.165 605.719 320.088 c
-606.818 319.294 m
-606.832 318.971 l
-607.017 319.224 607.258 319.353 607.553 319.353 c
-608.082 319.353 608.35 319 608.361 318.294 c
-608.361 316.31 l
-607.877 316.31 l
-607.877 318.265 l
-607.877 318.5 607.836 318.665 607.759 318.765 c
-607.678 318.86 607.56 318.912 607.406 318.912 c
-607.289 318.912 607.178 318.871 607.083 318.794 c
-606.983 318.713 606.906 318.607 606.847 318.47 c
-606.847 316.31 l
-606.362 316.31 l
-606.362 319.294 l
-h
-608.814 317.942 m
-608.814 318.401 608.894 318.75 609.063 318.985 c
-609.24 319.228 609.489 319.353 609.813 319.353 c
-610.114 319.353 610.346 319.22 610.504 318.956 c
-610.533 319.294 l
-610.974 319.294 l
-610.974 316.28 l
-610.974 315.91 610.875 315.627 610.68 315.428 c
-610.493 315.233 610.231 315.134 609.901 315.134 c
-609.754 315.134 609.585 315.174 609.402 315.251 c
-609.213 315.322 609.078 315.409 608.989 315.516 c
-609.18 315.854 l
-609.386 315.648 609.61 315.546 609.857 315.546 c
-610.258 315.546 610.464 315.773 610.474 316.222 c
-610.474 316.604 l
-610.316 316.369 610.096 316.251 609.813 316.251 c
-609.497 316.251 609.254 316.369 609.078 316.604 c
-608.909 316.839 608.82 317.17 608.814 317.603 c
-h
-609.298 317.662 m
-609.298 317.328 609.346 317.082 609.446 316.928 c
-609.541 316.77 609.703 316.692 609.93 316.692 c
-610.173 316.692 610.356 316.814 610.474 317.059 c
-610.474 318.544 l
-610.356 318.786 610.18 318.912 609.945 318.912 c
-609.718 318.912 609.556 318.831 609.46 318.676 c
-609.361 318.518 609.306 318.279 609.298 317.956 c
-h
-614.873 317.662 m
-614.873 317.192 614.788 316.839 614.623 316.604 c
-614.454 316.369 614.211 316.251 613.888 316.251 c
-613.572 316.251 613.337 316.388 613.182 316.662 c
-613.153 316.31 l
-612.712 316.31 l
-612.712 320.543 l
-613.197 320.543 l
-613.197 318.971 l
-613.352 319.224 613.583 319.353 613.888 319.353 c
-614.211 319.353 614.454 319.235 614.623 319 c
-614.788 318.765 614.873 318.416 614.873 317.956 c
-h
-614.387 317.942 m
-614.387 318.294 614.337 318.544 614.241 318.691 c
-614.142 318.838 613.98 318.912 613.756 318.912 c
-613.51 318.912 613.323 318.772 613.197 318.5 c
-613.197 317.089 l
-613.315 316.824 613.506 316.692 613.77 316.692 c
-613.984 316.692 614.142 316.766 614.241 316.913 c
-614.337 317.067 614.387 317.31 614.387 317.633 c
-h
-616.843 316.31 m
-616.814 316.376 616.791 316.486 616.784 316.633 c
-616.608 316.376 616.386 316.251 616.122 316.251 c
-615.846 316.251 615.63 316.325 615.476 316.471 c
-615.328 316.626 615.255 316.843 615.255 317.119 c
-615.255 317.42 615.358 317.662 615.563 317.838 c
-615.769 318.023 616.053 318.118 616.417 318.118 c
-616.769 318.118 l
-616.769 318.441 l
-616.769 318.618 616.729 318.739 616.652 318.809 c
-616.571 318.886 616.453 318.927 616.299 318.927 c
-616.151 318.927 616.027 318.882 615.931 318.794 c
-615.843 318.706 615.799 318.596 615.799 318.47 c
-615.314 318.47 l
-615.314 318.618 615.358 318.757 615.446 318.897 c
-615.534 319.044 615.652 319.154 615.799 319.235 c
-615.954 319.312 616.126 319.353 616.313 319.353 c
-616.625 319.353 616.861 319.272 617.019 319.118 c
-617.173 318.971 617.254 318.75 617.254 318.456 c
-617.254 316.957 l
-617.261 316.722 617.298 316.519 617.357 316.354 c
-617.357 316.31 l
-h
-616.196 316.692 m
-616.313 316.692 616.424 316.725 616.534 316.795 c
-616.641 316.861 616.718 316.945 616.769 317.045 c
-616.769 317.751 l
-616.504 317.751 l
-616.269 317.751 616.082 317.699 615.946 317.603 c
-615.817 317.504 615.755 317.361 615.755 317.177 c
-615.755 317.008 615.784 316.887 615.843 316.81 c
-615.91 316.729 616.027 316.692 616.196 316.692 c
-618.863 316.677 m
-619.029 316.677 619.162 316.725 619.26 316.824 c
-619.356 316.92 619.411 317.063 619.422 317.25 c
-619.878 317.25 l
-619.867 316.964 619.764 316.725 619.569 316.531 c
-619.382 316.343 619.147 316.251 618.863 316.251 c
-618.5 316.251 618.221 316.369 618.026 316.604 c
-617.828 316.839 617.732 317.184 617.732 317.647 c
-617.732 317.971 l
-617.732 318.42 617.824 318.765 618.011 319 c
-618.206 319.235 618.489 319.353 618.863 319.353 c
-619.165 319.353 619.407 319.253 619.584 319.058 c
-619.768 318.86 619.867 318.596 619.878 318.265 c
-619.422 318.265 l
-619.401 318.489 619.341 318.655 619.246 318.765 c
-619.158 318.871 619.029 318.927 618.863 318.927 c
-618.647 318.927 618.485 318.853 618.379 318.706 c
-618.279 318.566 618.225 318.339 618.217 318.015 c
-618.217 317.633 l
-618.217 317.28 618.265 317.03 618.364 316.883 c
-618.47 316.743 618.636 316.677 618.863 316.677 c
-621.024 317.677 m
-620.76 317.383 l
-620.76 316.31 l
-620.275 316.31 l
-620.275 320.543 l
-620.76 320.543 l
-620.76 318.015 l
-621.686 319.294 l
-622.274 319.294 l
-621.333 318.044 l
-622.406 316.31 l
-621.833 316.31 l
-h
-624.166 316.575 m
-624.008 316.357 623.773 316.251 623.461 316.251 c
-623.197 316.251 622.991 316.343 622.844 316.531 c
-622.704 316.714 622.638 316.99 622.638 317.354 c
-622.638 319.294 l
-623.123 319.294 l
-623.123 317.383 l
-623.123 316.92 623.262 316.692 623.549 316.692 c
-623.843 316.692 624.041 316.824 624.151 317.089 c
-624.151 319.294 l
-624.652 319.294 l
-624.652 316.31 l
-624.181 316.31 l
-h
-627.349 317.662 m
-627.349 317.192 627.264 316.839 627.099 316.604 c
-626.929 316.369 626.691 316.251 626.379 316.251 c
-626.073 316.251 625.842 316.361 625.688 316.589 c
-625.688 315.164 l
-625.203 315.164 l
-625.203 319.294 l
-625.643 319.294 l
-625.673 318.956 l
-625.828 319.22 626.059 319.353 626.364 319.353 c
-626.694 319.353 626.941 319.235 627.099 319 c
-627.264 318.772 627.349 318.434 627.349 317.986 c
-h
-626.863 317.942 m
-626.863 318.272 626.809 318.518 626.702 318.676 c
-626.603 318.831 626.441 318.912 626.217 318.912 c
-625.982 318.912 625.805 318.794 625.688 318.559 c
-625.688 317.015 l
-625.805 316.787 625.986 316.677 626.231 316.677 c
-626.445 316.677 626.603 316.754 626.702 316.913 c
-626.809 317.067 626.863 317.31 626.863 317.633 c
-h
-629.248 317.074 m
-629.248 317.181 629.208 317.269 629.131 317.339 c
-629.05 317.416 628.899 317.504 628.675 317.603 c
-628.411 317.71 628.223 317.802 628.117 317.882 c
-628.007 317.96 627.929 318.048 627.881 318.148 c
-627.83 318.243 627.808 318.36 627.808 318.5 c
-627.808 318.742 627.896 318.945 628.072 319.103 c
-628.249 319.268 628.473 319.353 628.749 319.353 c
-629.043 319.353 629.278 319.264 629.454 319.088 c
-629.631 318.919 629.719 318.706 629.719 318.441 c
-629.234 318.441 l
-629.234 318.578 629.182 318.691 629.086 318.779 c
-628.999 318.875 628.885 318.927 628.749 318.927 c
-628.602 318.927 628.488 318.886 628.411 318.809 c
-628.33 318.739 628.293 318.64 628.293 318.515 c
-628.293 318.416 628.323 318.339 628.381 318.279 c
-628.44 318.221 628.579 318.14 628.808 318.044 c
-629.167 317.897 629.414 317.754 629.543 317.618 c
-629.678 317.489 629.749 317.317 629.749 317.103 c
-629.749 316.847 629.653 316.641 629.469 316.486 c
-629.292 316.328 629.057 316.251 628.764 316.251 c
-628.448 316.251 628.194 316.34 627.999 316.516 c
-627.812 316.7 627.72 316.931 627.72 317.207 c
-628.205 317.207 l
-628.213 317.038 628.263 316.905 628.352 316.81 c
-628.448 316.722 628.587 316.677 628.764 316.677 c
-628.918 316.677 629.036 316.71 629.117 316.78 c
-629.204 316.847 629.248 316.945 629.248 317.074 c
-630.748 317.442 m
-630.307 317.442 l
-630.277 320.323 l
-630.792 320.323 l
-h
-630.542 316.854 m
-630.638 316.854 630.707 316.824 630.748 316.766 c
-630.796 316.714 630.821 316.648 630.821 316.56 c
-630.821 316.479 630.796 316.413 630.748 316.354 c
-630.707 316.307 630.638 316.28 630.542 316.28 c
-630.454 316.28 630.384 316.307 630.337 316.354 c
-630.285 316.413 630.262 316.479 630.262 316.56 c
-630.262 316.648 630.285 316.714 630.337 316.766 c
-630.384 316.824 630.454 316.854 630.542 316.854 c
-f
- endstream endobj 34 0 obj <</BBox[581.388 313.958 628.804 308.548]/Group 70 0 R/Length 10862/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 582.7852 311.7234 cm
-0 0 m
-0.808 2.014 l
-1.381 2.014 l
-0.249 -0.5 l
-0.249 -1.999 l
--0.265 -1.999 l
--0.265 -0.5 l
--1.397 2.014 l
--0.823 2.014 l
-h
-1.385 -0.367 m
-1.385 0.063 1.488 0.405 1.693 0.662 c
-1.907 0.915 2.186 1.044 2.531 1.044 c
-2.873 1.044 3.149 0.915 3.355 0.662 c
-3.568 0.416 3.682 0.081 3.692 -0.338 c
-3.692 -0.646 l
-3.692 -1.08 3.582 -1.421 3.37 -1.675 c
-3.164 -1.932 2.884 -2.057 2.531 -2.057 c
-2.186 -2.057 1.914 -1.936 1.708 -1.69 c
-1.502 -1.448 1.392 -1.113 1.385 -0.69 c
-h
-1.87 -0.646 m
-1.87 -0.962 1.929 -1.205 2.046 -1.381 c
-2.171 -1.55 2.333 -1.631 2.531 -1.631 c
-2.961 -1.631 3.185 -1.323 3.208 -0.706 c
-3.208 -0.367 l
-3.208 -0.066 3.142 0.177 3.017 0.353 c
-2.899 0.53 2.738 0.618 2.531 0.618 c
-2.333 0.618 2.171 0.53 2.046 0.353 c
-1.929 0.177 1.87 -0.066 1.87 -0.367 c
-h
-5.644 -1.734 m
-5.486 -1.951 5.251 -2.057 4.939 -2.057 c
-4.674 -2.057 4.469 -1.965 4.321 -1.778 c
-4.182 -1.595 4.116 -1.319 4.116 -0.955 c
-4.116 0.985 l
-4.6 0.985 l
-4.6 -0.926 l
-4.6 -1.389 4.74 -1.616 5.026 -1.616 c
-5.321 -1.616 5.519 -1.484 5.629 -1.219 c
-5.629 0.985 l
-6.129 0.985 l
-6.129 -1.999 l
-5.659 -1.999 l
-h
-9.415 -1.999 m
-9.385 -1.932 9.363 -1.822 9.356 -1.675 c
-9.18 -1.932 8.959 -2.057 8.694 -2.057 c
-8.419 -2.057 8.201 -1.984 8.047 -1.837 c
-7.9 -1.683 7.827 -1.466 7.827 -1.19 c
-7.827 -0.889 7.93 -0.646 8.135 -0.47 c
-8.342 -0.286 8.625 -0.191 8.988 -0.191 c
-9.341 -0.191 l
-9.341 0.133 l
-9.341 0.31 9.3 0.431 9.223 0.5 c
-9.142 0.578 9.025 0.618 8.87 0.618 c
-8.724 0.618 8.598 0.574 8.503 0.485 c
-8.415 0.397 8.371 0.287 8.371 0.162 c
-7.885 0.162 l
-7.885 0.31 7.93 0.449 8.018 0.588 c
-8.106 0.736 8.224 0.846 8.371 0.927 c
-8.525 1.004 8.698 1.044 8.885 1.044 c
-9.198 1.044 9.433 0.963 9.591 0.809 c
-9.745 0.662 9.826 0.441 9.826 0.148 c
-9.826 -1.352 l
-9.834 -1.587 9.87 -1.789 9.929 -1.955 c
-9.929 -1.999 l
-h
-8.768 -1.616 m
-8.885 -1.616 8.995 -1.583 9.105 -1.514 c
-9.213 -1.448 9.29 -1.363 9.341 -1.263 c
-9.341 -0.558 l
-9.076 -0.558 l
-8.841 -0.558 8.654 -0.61 8.517 -0.706 c
-8.39 -0.804 8.326 -0.947 8.326 -1.132 c
-8.326 -1.3 8.356 -1.421 8.415 -1.499 c
-8.481 -1.579 8.598 -1.616 8.768 -1.616 c
-11.642 0.53 m
-11.571 0.537 11.498 0.545 11.421 0.545 c
-11.164 0.545 10.987 0.405 10.892 0.133 c
-10.892 -1.999 l
-10.406 -1.999 l
-10.406 0.985 l
-10.877 0.985 l
-10.892 0.676 l
-11.017 0.919 11.2 1.044 11.436 1.044 c
-11.513 1.044 11.575 1.029 11.627 1 c
-h
-13.02 -2.057 m
-12.644 -2.057 12.361 -1.951 12.167 -1.734 c
-11.968 -1.51 11.873 -1.182 11.873 -0.749 c
-11.873 -0.382 l
-11.873 0.059 11.964 0.405 12.153 0.662 c
-12.347 0.915 12.623 1.044 12.976 1.044 c
-13.317 1.044 13.57 0.93 13.74 0.706 c
-13.916 0.478 14.008 0.133 14.019 -0.338 c
-14.019 -0.646 l
-12.358 -0.646 l
-12.358 -0.72 l
-12.358 -1.043 12.417 -1.278 12.534 -1.425 c
-12.652 -1.565 12.821 -1.631 13.049 -1.631 c
-13.196 -1.631 13.321 -1.609 13.431 -1.558 c
-13.537 -1.499 13.641 -1.411 13.74 -1.294 c
-13.99 -1.602 l
-13.784 -1.907 13.46 -2.057 13.02 -2.057 c
-12.976 0.618 m
-12.77 0.618 12.615 0.548 12.519 0.412 c
-12.421 0.273 12.365 0.059 12.358 -0.235 c
-13.533 -0.235 l
-13.533 -0.161 l
-13.512 0.111 13.46 0.31 13.373 0.427 c
-13.284 0.551 13.151 0.618 12.976 0.618 c
-15.533 -0.367 m
-15.533 0.092 15.613 0.441 15.783 0.676 c
-15.96 0.919 16.209 1.044 16.533 1.044 c
-16.816 1.044 17.036 0.927 17.194 0.691 c
-17.194 2.234 l
-17.679 2.234 l
-17.679 -1.999 l
-17.238 -1.999 l
-17.209 -1.675 l
-17.051 -1.932 16.826 -2.057 16.533 -2.057 c
-16.216 -2.057 15.974 -1.94 15.798 -1.705 c
-15.621 -1.462 15.533 -1.117 15.533 -0.675 c
-h
-16.018 -0.646 m
-16.018 -0.98 16.066 -1.227 16.165 -1.381 c
-16.261 -1.539 16.423 -1.616 16.65 -1.616 c
-16.893 -1.616 17.076 -1.499 17.194 -1.263 c
-17.194 0.25 l
-17.065 0.485 16.885 0.603 16.65 0.603 c
-16.423 0.603 16.261 0.522 16.165 0.368 c
-16.066 0.21 16.018 -0.029 16.018 -0.353 c
-h
-18.146 -0.367 m
-18.146 0.063 18.248 0.405 18.454 0.662 c
-18.667 0.915 18.947 1.044 19.293 1.044 c
-19.634 1.044 19.91 0.915 20.115 0.662 c
-20.328 0.416 20.442 0.081 20.454 -0.338 c
-20.454 -0.646 l
-20.454 -1.08 20.344 -1.421 20.13 -1.675 c
-19.924 -1.932 19.645 -2.057 19.293 -2.057 c
-18.947 -2.057 18.675 -1.936 18.469 -1.69 c
-18.263 -1.448 18.153 -1.113 18.146 -0.69 c
-h
-18.63 -0.646 m
-18.63 -0.962 18.69 -1.205 18.807 -1.381 c
-18.932 -1.55 19.094 -1.631 19.293 -1.631 c
-19.723 -1.631 19.946 -1.323 19.968 -0.706 c
-19.968 -0.367 l
-19.968 -0.066 19.902 0.177 19.777 0.353 c
-19.66 0.53 19.498 0.618 19.293 0.618 c
-19.094 0.618 18.932 0.53 18.807 0.353 c
-18.69 0.177 18.63 -0.066 18.63 -0.367 c
-h
-21.423 -1.999 -0.5 2.984 re
-21.453 1.779 m
-21.453 1.691 21.427 1.617 21.379 1.559 c
-21.339 1.507 21.269 1.485 21.174 1.485 c
-21.086 1.485 21.016 1.507 20.968 1.559 c
-20.928 1.617 20.909 1.684 20.909 1.764 c
-20.909 1.852 20.928 1.926 20.968 1.985 c
-21.016 2.043 21.086 2.073 21.174 2.073 c
-21.269 2.073 21.339 2.043 21.379 1.985 c
-21.427 1.926 21.453 1.856 21.453 1.779 c
-22.551 0.985 m
-22.566 0.662 l
-22.75 0.915 22.993 1.044 23.287 1.044 c
-23.816 1.044 24.084 0.691 24.095 -0.014 c
-24.095 -1.999 l
-23.61 -1.999 l
-23.61 -0.043 l
-23.61 0.192 23.569 0.357 23.492 0.456 c
-23.411 0.551 23.294 0.603 23.139 0.603 c
-23.022 0.603 22.912 0.563 22.817 0.485 c
-22.717 0.405 22.64 0.298 22.582 0.162 c
-22.582 -1.999 l
-22.096 -1.999 l
-22.096 0.985 l
-h
-24.547 -0.367 m
-24.547 0.092 24.628 0.441 24.797 0.676 c
-24.974 0.919 25.223 1.044 25.547 1.044 c
-25.848 1.044 26.079 0.912 26.237 0.647 c
-26.267 0.985 l
-26.708 0.985 l
-26.708 -2.028 l
-26.708 -2.399 26.609 -2.682 26.414 -2.881 c
-26.227 -3.075 25.965 -3.175 25.635 -3.175 c
-25.487 -3.175 25.319 -3.135 25.135 -3.057 c
-24.947 -2.987 24.812 -2.899 24.724 -2.792 c
-24.915 -2.454 l
-25.121 -2.66 25.344 -2.763 25.591 -2.763 c
-25.992 -2.763 26.197 -2.535 26.208 -2.087 c
-26.208 -1.705 l
-26.05 -1.94 25.83 -2.057 25.547 -2.057 c
-25.231 -2.057 24.988 -1.94 24.812 -1.705 c
-24.643 -1.469 24.554 -1.138 24.547 -0.706 c
-h
-25.032 -0.646 m
-25.032 -0.98 25.08 -1.227 25.179 -1.381 c
-25.275 -1.539 25.437 -1.616 25.664 -1.616 c
-25.907 -1.616 26.09 -1.495 26.208 -1.249 c
-26.208 0.235 l
-26.09 0.478 25.915 0.603 25.679 0.603 c
-25.451 0.603 25.289 0.522 25.194 0.368 c
-25.094 0.21 25.04 -0.029 25.032 -0.353 c
-h
-28.975 -1.999 -0.5 2.984 re
-29.005 1.779 m
-29.005 1.691 28.979 1.617 28.932 1.559 c
-28.891 1.507 28.82 1.485 28.726 1.485 c
-28.637 1.485 28.567 1.507 28.519 1.559 c
-28.479 1.617 28.461 1.684 28.461 1.764 c
-28.461 1.852 28.479 1.926 28.519 1.985 c
-28.567 2.043 28.637 2.073 28.726 2.073 c
-28.82 2.073 28.891 2.043 28.932 1.985 c
-28.979 1.926 29.005 1.856 29.005 1.779 c
-30.28 1.706 m
-30.28 0.985 l
-30.736 0.985 l
-30.736 0.588 l
-30.28 0.588 l
-30.28 -1.263 l
-30.28 -1.381 30.298 -1.469 30.339 -1.529 c
-30.376 -1.587 30.445 -1.616 30.544 -1.616 c
-30.603 -1.616 30.665 -1.609 30.736 -1.587 c
-30.736 -1.999 l
-30.618 -2.036 30.503 -2.057 30.397 -2.057 c
-30.199 -2.057 30.048 -1.992 29.942 -1.851 c
-29.842 -1.716 29.795 -1.521 29.795 -1.263 c
-29.795 0.588 l
-29.339 0.588 l
-29.339 0.985 l
-29.795 0.985 l
-29.795 1.706 l
-h
-31.202 -2.792 m
-30.908 -2.601 l
-31.085 -2.355 31.176 -2.105 31.187 -1.851 c
-31.187 -1.396 l
-31.687 -1.396 l
-31.687 -1.793 l
-31.687 -1.98 31.636 -2.164 31.54 -2.352 c
-31.452 -2.535 31.338 -2.682 31.202 -2.792 c
-34.682 0.53 m
-34.613 0.537 34.539 0.545 34.461 0.545 c
-34.204 0.545 34.028 0.405 33.932 0.133 c
-33.932 -1.999 l
-33.447 -1.999 l
-33.447 0.985 l
-33.917 0.985 l
-33.932 0.676 l
-34.058 0.919 34.241 1.044 34.476 1.044 c
-34.553 1.044 34.616 1.029 34.667 1 c
-h
-35.579 -1.999 -0.5 2.984 re
-35.608 1.779 m
-35.608 1.691 35.583 1.617 35.535 1.559 c
-35.494 1.507 35.424 1.485 35.329 1.485 c
-35.241 1.485 35.17 1.507 35.123 1.559 c
-35.083 1.617 35.064 1.684 35.064 1.764 c
-35.064 1.852 35.083 1.926 35.123 1.985 c
-35.17 2.043 35.241 2.073 35.329 2.073 c
-35.424 2.073 35.494 2.043 35.535 1.985 c
-35.583 1.926 35.608 1.856 35.608 1.779 c
-36.152 -0.367 m
-36.152 0.092 36.233 0.441 36.402 0.676 c
-36.578 0.919 36.828 1.044 37.152 1.044 c
-37.453 1.044 37.684 0.912 37.842 0.647 c
-37.872 0.985 l
-38.313 0.985 l
-38.313 -2.028 l
-38.313 -2.399 38.214 -2.682 38.019 -2.881 c
-37.832 -3.075 37.57 -3.175 37.24 -3.175 c
-37.092 -3.175 36.924 -3.135 36.74 -3.057 c
-36.552 -2.987 36.417 -2.899 36.329 -2.792 c
-36.52 -2.454 l
-36.726 -2.66 36.949 -2.763 37.196 -2.763 c
-37.597 -2.763 37.802 -2.535 37.813 -2.087 c
-37.813 -1.705 l
-37.655 -1.94 37.435 -2.057 37.152 -2.057 c
-36.836 -2.057 36.593 -1.94 36.417 -1.705 c
-36.248 -1.469 36.159 -1.138 36.152 -0.706 c
-h
-36.637 -0.646 m
-36.637 -0.98 36.685 -1.227 36.784 -1.381 c
-36.88 -1.539 37.042 -1.616 37.269 -1.616 c
-37.512 -1.616 37.695 -1.495 37.813 -1.249 c
-37.813 0.235 l
-37.695 0.478 37.519 0.603 37.283 0.603 c
-37.056 0.603 36.894 0.522 36.799 0.368 c
-36.699 0.21 36.645 -0.029 36.637 -0.353 c
-h
-39.334 0.676 m
-39.519 0.919 39.754 1.044 40.04 1.044 c
-40.569 1.044 40.838 0.691 40.849 -0.014 c
-40.849 -1.999 l
-40.363 -1.999 l
-40.363 -0.043 l
-40.363 0.192 40.323 0.357 40.246 0.456 c
-40.165 0.551 40.047 0.603 39.893 0.603 c
-39.775 0.603 39.665 0.563 39.569 0.485 c
-39.471 0.405 39.393 0.298 39.334 0.162 c
-39.334 -1.999 l
-38.85 -1.999 l
-38.85 2.234 l
-39.334 2.234 l
-h
-42.021 1.706 m
-42.021 0.985 l
-42.476 0.985 l
-42.476 0.588 l
-42.021 0.588 l
-42.021 -1.263 l
-42.021 -1.381 42.039 -1.469 42.079 -1.529 c
-42.116 -1.587 42.186 -1.616 42.285 -1.616 c
-42.344 -1.616 42.407 -1.609 42.476 -1.587 c
-42.476 -1.999 l
-42.359 -2.036 42.245 -2.057 42.139 -2.057 c
-41.94 -2.057 41.79 -1.992 41.682 -1.851 c
-41.583 -1.716 41.536 -1.521 41.536 -1.263 c
-41.536 0.588 l
-41.08 0.588 l
-41.08 0.985 l
-41.536 0.985 l
-41.536 1.706 l
-h
-43.487 -0.866 m
-43.046 -0.866 l
-43.016 2.014 l
-43.531 2.014 l
-h
-43.282 -1.454 m
-43.377 -1.454 43.446 -1.484 43.487 -1.543 c
-43.535 -1.595 43.56 -1.66 43.56 -1.749 c
-43.56 -1.83 43.535 -1.896 43.487 -1.955 c
-43.446 -2.002 43.377 -2.028 43.282 -2.028 c
-43.193 -2.028 43.124 -2.002 43.076 -1.955 c
-43.024 -1.896 43.002 -1.83 43.002 -1.749 c
-43.002 -1.66 43.024 -1.595 43.076 -1.543 c
-43.124 -1.484 43.193 -1.454 43.282 -1.454 c
-44.74 -0.866 m
-44.74 -0.654 44.758 -0.477 44.799 -0.338 c
-44.847 -0.191 44.961 -0.014 45.137 0.192 c
-45.343 0.441 l
-45.468 0.626 45.534 0.813 45.534 1 c
-45.534 1.195 45.489 1.345 45.401 1.455 c
-45.32 1.563 45.21 1.617 45.063 1.617 c
-44.924 1.617 44.807 1.566 44.711 1.47 c
-44.622 1.372 44.578 1.239 44.578 1.073 c
-44.093 1.073 l
-44.093 1.374 44.182 1.617 44.358 1.794 c
-44.541 1.977 44.776 2.073 45.063 2.073 c
-45.358 2.073 45.585 1.977 45.754 1.794 c
-45.931 1.607 46.019 1.353 46.019 1.029 c
-46.019 0.713 45.89 0.401 45.636 0.088 c
-45.387 -0.22 l
-45.277 -0.367 45.225 -0.584 45.225 -0.866 c
-h
-45.005 -1.454 m
-45.092 -1.454 45.159 -1.484 45.21 -1.543 c
-45.258 -1.595 45.283 -1.66 45.283 -1.749 c
-45.283 -1.83 45.258 -1.896 45.21 -1.955 c
-45.159 -2.002 45.092 -2.028 45.005 -2.028 c
-44.905 -2.028 44.832 -2.002 44.784 -1.955 c
-44.743 -1.896 44.726 -1.83 44.726 -1.749 c
-44.726 -1.66 44.743 -1.595 44.784 -1.543 c
-44.832 -1.484 44.905 -1.454 45.005 -1.454 c
-f
-Q
- endstream endobj 35 0 obj <</BBox[535.367 366.838 774.632 366.237]/Group 71 0 R/Length 124/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 K
-0.601 w 4 M 1 j 1 J [4.808 4.808]0 d
-/GS0 gs
-q 1 0 0 1 535.6673 366.537 cm
-0 0 m
-238.665 0 l
-S
-Q
- endstream endobj 36 0 obj <</BBox[741.792 364.828 774.49 359.389]/Group 72 0 R/Length 8999/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-742.571 360.595 -0.779 4.233 re
-742.99 362.182 m
-742.99 362.631 743.097 362.983 743.313 363.24 c
-743.526 363.505 743.82 363.637 744.195 363.637 c
-744.577 363.637 744.872 363.505 745.077 363.24 c
-745.29 362.983 745.4 362.631 745.4 362.182 c
-745.4 361.991 l
-745.4 361.528 745.29 361.172 745.077 360.917 c
-744.872 360.661 744.577 360.536 744.195 360.536 c
-743.813 360.536 743.511 360.661 743.299 360.917 c
-743.093 361.183 742.99 361.539 742.99 361.991 c
-h
-743.769 361.991 m
-743.769 361.451 743.908 361.183 744.195 361.183 c
-744.46 361.183 744.6 361.407 744.622 361.858 c
-744.637 362.182 l
-744.637 362.454 744.596 362.656 744.519 362.785 c
-744.438 362.92 744.331 362.991 744.195 362.991 c
-744.066 362.991 743.964 362.92 743.887 362.785 c
-743.806 362.656 743.769 362.454 743.769 362.182 c
-h
-746.79 361.183 m
-747.014 361.183 747.128 361.33 747.128 361.623 c
-747.862 361.623 l
-747.862 361.3 747.76 361.035 747.554 360.83 c
-747.355 360.632 747.106 360.536 746.804 360.536 c
-746.422 360.536 746.128 360.653 745.923 360.888 c
-745.716 361.131 745.614 361.484 745.614 361.947 c
-745.614 362.197 l
-745.614 362.656 745.709 363.009 745.907 363.255 c
-746.114 363.508 746.407 363.637 746.79 363.637 c
-747.12 363.637 747.382 363.535 747.569 363.329 c
-747.764 363.123 747.862 362.833 747.862 362.461 c
-747.128 362.461 l
-747.128 362.627 747.098 362.756 747.039 362.843 c
-746.988 362.939 746.9 362.991 746.775 362.991 c
-746.646 362.991 746.555 362.939 746.495 362.843 c
-746.437 362.744 746.4 362.557 746.393 362.285 c
-746.393 361.976 l
-746.393 361.73 746.4 361.557 746.422 361.462 c
-746.451 361.374 746.488 361.304 746.54 361.256 c
-746.598 361.204 746.679 361.183 746.79 361.183 c
-749.553 360.595 m
-749.524 360.642 749.498 360.72 749.479 360.83 c
-749.34 360.632 749.156 360.536 748.921 360.536 c
-748.664 360.536 748.454 360.616 748.289 360.786 c
-748.13 360.951 748.053 361.168 748.053 361.432 c
-748.053 361.744 748.149 361.983 748.348 362.153 c
-748.543 362.329 748.826 362.417 749.2 362.417 c
-749.45 362.417 l
-749.45 362.652 l
-749.45 362.789 749.424 362.88 749.377 362.932 c
-749.325 362.991 749.259 363.02 749.171 363.02 c
-748.972 363.02 748.876 362.906 748.876 362.681 c
-748.098 362.681 l
-748.098 362.954 748.201 363.182 748.406 363.358 c
-748.612 363.542 748.876 363.637 749.2 363.637 c
-749.524 363.637 749.774 363.549 749.95 363.373 c
-750.133 363.203 750.229 362.965 750.229 362.652 c
-750.229 361.241 l
-750.229 360.984 750.262 360.786 750.332 360.639 c
-750.332 360.595 l
-h
-749.082 361.153 m
-749.171 361.153 749.244 361.168 749.304 361.197 c
-749.369 361.234 749.42 361.278 749.45 361.33 c
-749.45 361.947 l
-749.259 361.947 l
-749.119 361.947 749.013 361.902 748.936 361.815 c
-748.866 361.734 748.833 361.623 748.833 361.476 c
-748.833 361.26 748.913 361.153 749.082 361.153 c
-751.431 360.595 -0.779 4.233 re
-754.621 362.829 m
-754.37 362.843 l
-754.154 362.843 754.007 362.748 753.929 362.564 c
-753.929 360.595 l
-753.15 360.595 l
-753.15 363.579 l
-753.886 363.579 l
-753.915 363.255 l
-754.033 363.508 754.198 363.637 754.415 363.637 c
-754.503 363.637 754.576 363.622 754.635 363.593 c
-h
-756.053 360.536 m
-755.65 360.536 755.337 360.653 755.113 360.888 c
-754.896 361.131 754.79 361.476 754.79 361.918 c
-754.79 362.168 l
-754.79 362.638 754.893 362.997 755.099 363.255 c
-755.304 363.508 755.598 363.637 755.98 363.637 c
-756.352 363.637 756.631 363.512 756.818 363.269 c
-757.013 363.034 757.112 362.681 757.112 362.211 c
-757.112 361.829 l
-755.569 361.829 l
-755.575 361.601 755.62 361.436 755.701 361.33 c
-755.789 361.23 755.925 361.183 756.113 361.183 c
-756.366 361.183 756.583 361.274 756.759 361.462 c
-757.067 360.977 l
-756.969 360.848 756.826 360.742 756.641 360.653 c
-756.465 360.576 756.267 360.536 756.053 360.536 c
-755.569 362.373 m
-756.348 362.373 l
-756.348 362.446 l
-756.348 362.623 756.319 362.756 756.259 362.843 c
-756.201 362.939 756.101 362.991 755.966 362.991 c
-755.837 362.991 755.737 362.939 755.671 362.843 c
-755.613 362.744 755.575 362.586 755.569 362.373 c
-759.691 361.991 m
-759.691 361.521 759.611 361.156 759.456 360.903 c
-759.298 360.657 759.06 360.536 758.736 360.536 c
-758.49 360.536 758.295 360.632 758.148 360.83 c
-758.148 359.448 l
-757.37 359.448 l
-757.37 363.579 l
-758.089 363.579 l
-758.119 363.299 l
-758.273 363.523 758.479 363.637 758.736 363.637 c
-759.049 363.637 759.284 363.52 759.442 363.284 c
-759.607 363.049 759.691 362.696 759.691 362.226 c
-h
-758.927 362.182 m
-758.927 362.476 758.891 362.681 758.825 362.799 c
-758.766 362.917 758.655 362.976 758.501 362.976 c
-758.343 362.976 758.226 362.91 758.148 362.785 c
-758.148 361.374 l
-758.226 361.245 758.347 361.183 758.515 361.183 c
-758.663 361.183 758.766 361.245 758.825 361.374 c
-758.891 361.509 758.927 361.715 758.927 361.991 c
-h
-759.893 362.182 m
-759.893 362.631 760.001 362.983 760.217 363.24 c
-760.431 363.505 760.724 363.637 761.099 363.637 c
-761.481 363.637 761.775 363.505 761.981 363.24 c
-762.195 362.983 762.305 362.631 762.305 362.182 c
-762.305 361.991 l
-762.305 361.528 762.195 361.172 761.981 360.917 c
-761.775 360.661 761.481 360.536 761.099 360.536 c
-760.717 360.536 760.416 360.661 760.202 360.917 c
-759.997 361.183 759.893 361.539 759.893 361.991 c
-h
-760.672 361.991 m
-760.672 361.451 760.813 361.183 761.099 361.183 c
-761.364 361.183 761.503 361.407 761.526 361.858 c
-761.54 362.182 l
-761.54 362.454 761.499 362.656 761.422 362.785 c
-761.341 362.92 761.235 362.991 761.099 362.991 c
-760.971 362.991 760.867 362.92 760.79 362.785 c
-760.709 362.656 760.672 362.454 760.672 362.182 c
-h
-763.928 361.388 m
-763.928 361.455 763.892 361.521 763.826 361.58 c
-763.766 361.638 763.627 361.711 763.415 361.8 c
-763.091 361.935 762.87 362.072 762.752 362.211 c
-762.635 362.347 762.576 362.521 762.576 362.726 c
-762.576 362.991 762.669 363.203 762.856 363.373 c
-763.039 363.549 763.29 363.637 763.606 363.637 c
-763.928 363.637 764.186 363.549 764.385 363.373 c
-764.579 363.203 764.678 362.98 764.678 362.696 c
-763.899 362.696 l
-763.899 362.939 763.797 363.064 763.591 363.064 c
-763.51 363.064 763.444 363.034 763.385 362.976 c
-763.334 362.924 763.311 362.858 763.311 362.77 c
-763.311 362.7 763.34 362.641 763.4 362.594 c
-763.458 362.542 763.594 362.469 763.811 362.373 c
-764.134 362.255 764.358 362.124 764.487 361.976 c
-764.624 361.837 764.693 361.653 764.693 361.418 c
-764.693 361.153 764.591 360.936 764.385 360.771 c
-764.186 360.613 763.928 360.536 763.606 360.536 c
-763.377 360.536 763.182 360.58 763.018 360.668 c
-762.848 360.757 762.716 360.874 762.621 361.021 c
-762.532 361.175 762.488 361.345 762.488 361.521 c
-763.223 361.521 l
-763.23 361.381 763.267 361.278 763.326 361.212 c
-763.385 361.142 763.48 361.109 763.62 361.109 c
-763.826 361.109 763.928 361.201 763.928 361.388 c
-765.825 360.595 -0.779 2.984 re
-765.002 364.343 m
-765.002 364.468 765.038 364.57 765.119 364.651 c
-765.196 364.728 765.299 364.769 765.428 364.769 c
-765.553 364.769 765.656 364.728 765.736 364.651 c
-765.814 364.57 765.854 364.468 765.854 364.343 c
-765.854 364.225 765.814 364.126 765.736 364.049 c
-765.667 363.968 765.564 363.932 765.428 363.932 c
-765.299 363.932 765.196 363.968 765.119 364.049 c
-765.038 364.126 765.002 364.225 765.002 364.343 c
-767.243 364.314 m
-767.243 363.579 l
-767.64 363.579 l
-767.64 362.991 l
-767.243 362.991 l
-767.243 361.505 l
-767.243 361.388 767.258 361.304 767.288 361.256 c
-767.324 361.216 767.39 361.197 767.479 361.197 c
-767.556 361.197 767.618 361.204 767.67 361.227 c
-767.655 360.609 l
-767.527 360.562 767.383 360.536 767.228 360.536 c
-766.729 360.536 766.472 360.822 766.465 361.403 c
-766.465 362.991 l
-766.126 362.991 l
-766.126 363.579 l
-766.465 363.579 l
-766.465 364.314 l
-h
-767.787 362.182 m
-767.787 362.631 767.893 362.983 768.111 363.24 c
-768.323 363.505 768.618 363.637 768.992 363.637 c
-769.374 363.637 769.669 363.505 769.875 363.24 c
-770.087 362.983 770.197 362.631 770.197 362.182 c
-770.197 361.991 l
-770.197 361.528 770.087 361.172 769.875 360.917 c
-769.669 360.661 769.374 360.536 768.992 360.536 c
-768.61 360.536 768.309 360.661 768.096 360.917 c
-767.89 361.183 767.787 361.539 767.787 361.991 c
-h
-768.566 361.991 m
-768.566 361.451 768.705 361.183 768.992 361.183 c
-769.257 361.183 769.397 361.407 769.418 361.858 c
-769.433 362.182 l
-769.433 362.454 769.393 362.656 769.316 362.785 c
-769.235 362.92 769.129 362.991 768.992 362.991 c
-768.863 362.991 768.761 362.92 768.684 362.785 c
-768.603 362.656 768.566 362.454 768.566 362.182 c
-h
-771.969 362.829 m
-771.719 362.843 l
-771.502 362.843 771.355 362.748 771.278 362.564 c
-771.278 360.595 l
-770.499 360.595 l
-770.499 363.579 l
-771.234 363.579 l
-771.263 363.255 l
-771.381 363.508 771.546 363.637 771.763 363.637 c
-771.851 363.637 771.925 363.622 771.984 363.593 c
-h
-773.255 361.888 m
-773.652 363.579 l
-774.49 363.579 l
-773.505 360.154 l
-773.358 359.647 773.083 359.389 772.682 359.389 c
-772.583 359.389 772.476 359.411 772.358 359.448 c
-772.358 360.051 l
-772.447 360.051 l
-772.572 360.051 772.667 360.076 772.726 360.124 c
-772.784 360.165 772.829 360.242 772.859 360.36 c
-772.932 360.565 l
-772.065 363.579 l
-772.902 363.579 l
-h
-f
- endstream endobj 37 0 obj <</BBox[733.362 374.614 774.497 369.293]/Group 73 0 R/Length 10421/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 734.8322 372.6739 cm
-0 0 m
--0.25 0.014 l
--0.467 0.014 -0.614 -0.081 -0.691 -0.265 c
--0.691 -2.234 l
--1.47 -2.234 l
--1.47 0.749 l
--0.736 0.749 l
--0.706 0.426 l
--0.588 0.679 -0.423 0.808 -0.206 0.808 c
--0.118 0.808 -0.044 0.793 0.014 0.764 c
-h
-1.433 -2.294 m
-1.028 -2.294 0.716 -2.176 0.492 -1.941 c
-0.276 -1.698 0.168 -1.353 0.168 -0.912 c
-0.168 -0.662 l
-0.168 -0.192 0.272 0.168 0.477 0.426 c
-0.683 0.679 0.977 0.808 1.359 0.808 c
-1.731 0.808 2.009 0.683 2.198 0.44 c
-2.392 0.205 2.491 -0.148 2.491 -0.618 c
-2.491 -1 l
-0.947 -1 l
-0.955 -1.228 0.999 -1.393 1.08 -1.5 c
-1.168 -1.599 1.304 -1.646 1.492 -1.646 c
-1.745 -1.646 1.962 -1.555 2.138 -1.368 c
-2.447 -1.852 l
-2.348 -1.981 2.204 -2.087 2.021 -2.176 c
-1.845 -2.253 1.646 -2.294 1.433 -2.294 c
-0.947 -0.456 m
-1.727 -0.456 l
-1.727 -0.383 l
-1.727 -0.206 1.697 -0.074 1.639 0.014 c
-1.58 0.11 1.481 0.161 1.344 0.161 c
-1.216 0.161 1.117 0.11 1.051 0.014 c
-0.992 -0.085 0.955 -0.243 0.947 -0.456 c
-3.484 0.749 m
-3.513 0.47 l
-3.69 0.694 3.917 0.808 4.203 0.808 c
-4.498 0.808 4.708 0.668 4.835 0.396 c
-5.001 0.668 5.24 0.808 5.556 0.808 c
-6.085 0.808 6.354 0.444 6.364 -0.279 c
-6.364 -2.234 l
-5.585 -2.234 l
-5.585 -0.324 l
-5.585 -0.158 5.56 -0.04 5.512 0.029 c
-5.46 0.106 5.383 0.147 5.277 0.147 c
-5.13 0.147 5.016 0.058 4.939 -0.118 c
-4.953 -0.206 l
-4.953 -2.234 l
-4.174 -2.234 l
-4.174 -0.339 l
-4.174 -0.162 4.149 -0.04 4.101 0.029 c
-4.049 0.106 3.968 0.147 3.85 0.147 c
-3.723 0.147 3.619 0.073 3.542 -0.074 c
-3.542 -2.234 l
-2.763 -2.234 l
-2.763 0.749 l
-h
-6.57 -0.647 m
-6.57 -0.199 6.676 0.154 6.894 0.411 c
-7.106 0.675 7.401 0.808 7.775 0.808 c
-8.158 0.808 8.452 0.675 8.658 0.411 c
-8.87 0.154 8.981 -0.199 8.981 -0.647 c
-8.981 -0.838 l
-8.981 -1.301 8.87 -1.658 8.658 -1.912 c
-8.452 -2.168 8.158 -2.294 7.775 -2.294 c
-7.393 -2.294 7.092 -2.168 6.879 -1.912 c
-6.673 -1.646 6.57 -1.291 6.57 -0.838 c
-h
-7.349 -0.838 m
-7.349 -1.378 7.489 -1.646 7.775 -1.646 c
-8.041 -1.646 8.18 -1.422 8.201 -0.971 c
-8.216 -0.647 l
-8.216 -0.375 8.176 -0.173 8.099 -0.044 c
-8.018 0.091 7.912 0.161 7.775 0.161 c
-7.647 0.161 7.544 0.091 7.467 -0.044 c
-7.386 -0.173 7.349 -0.375 7.349 -0.647 c
-h
-10.194 1.484 m
-10.194 0.749 l
-10.59 0.749 l
-10.59 0.161 l
-10.194 0.161 l
-10.194 -1.324 l
-10.194 -1.441 10.208 -1.526 10.238 -1.573 c
-10.275 -1.613 10.341 -1.632 10.429 -1.632 c
-10.506 -1.632 10.568 -1.625 10.62 -1.603 c
-10.605 -2.22 l
-10.476 -2.268 10.333 -2.294 10.179 -2.294 c
-9.679 -2.294 9.422 -2.007 9.414 -1.426 c
-9.414 0.161 l
-9.076 0.161 l
-9.076 0.749 l
-9.414 0.749 l
-9.414 1.484 l
-h
-12.104 -2.294 m
-11.7 -2.294 11.388 -2.176 11.164 -1.941 c
-10.946 -1.698 10.84 -1.353 10.84 -0.912 c
-10.84 -0.662 l
-10.84 -0.192 10.944 0.168 11.149 0.426 c
-11.355 0.679 11.649 0.808 12.031 0.808 c
-12.402 0.808 12.681 0.683 12.868 0.44 c
-13.063 0.205 13.163 -0.148 13.163 -0.618 c
-13.163 -1 l
-11.619 -1 l
-11.627 -1.228 11.671 -1.393 11.752 -1.5 c
-11.84 -1.599 11.976 -1.646 12.163 -1.646 c
-12.417 -1.646 12.633 -1.555 12.81 -1.368 c
-13.119 -1.852 l
-13.02 -1.981 12.876 -2.087 12.692 -2.176 c
-12.516 -2.253 12.317 -2.294 12.104 -2.294 c
-11.619 -0.456 m
-12.398 -0.456 l
-12.398 -0.383 l
-12.398 -0.206 12.369 -0.074 12.311 0.014 c
-12.251 0.11 12.153 0.161 12.016 0.161 c
-11.887 0.161 11.788 0.11 11.723 0.014 c
-11.663 -0.085 11.627 -0.243 11.619 -0.456 c
-16.103 0 m
-15.852 0.014 l
-15.636 0.014 15.489 -0.081 15.412 -0.265 c
-15.412 -2.234 l
-14.632 -2.234 l
-14.632 0.749 l
-15.368 0.749 l
-15.397 0.426 l
-15.515 0.679 15.68 0.808 15.897 0.808 c
-15.985 0.808 16.058 0.793 16.118 0.764 c
-h
-17.535 -2.294 m
-17.132 -2.294 16.82 -2.176 16.595 -1.941 c
-16.378 -1.698 16.272 -1.353 16.272 -0.912 c
-16.272 -0.662 l
-16.272 -0.192 16.375 0.168 16.581 0.426 c
-16.786 0.679 17.08 0.808 17.462 0.808 c
-17.834 0.808 18.113 0.683 18.3 0.44 c
-18.495 0.205 18.594 -0.148 18.594 -0.618 c
-18.594 -1 l
-17.051 -1 l
-17.058 -1.228 17.102 -1.393 17.183 -1.5 c
-17.271 -1.599 17.407 -1.646 17.595 -1.646 c
-17.848 -1.646 18.065 -1.555 18.241 -1.368 c
-18.549 -1.852 l
-18.451 -1.981 18.308 -2.087 18.123 -2.176 c
-17.947 -2.253 17.749 -2.294 17.535 -2.294 c
-17.051 -0.456 m
-17.83 -0.456 l
-17.83 -0.383 l
-17.83 -0.206 17.801 -0.074 17.741 0.014 c
-17.683 0.11 17.583 0.161 17.448 0.161 c
-17.319 0.161 17.219 0.11 17.153 0.014 c
-17.095 -0.085 17.058 -0.243 17.051 -0.456 c
-21.173 -0.838 m
-21.173 -1.309 21.093 -1.673 20.938 -1.926 c
-20.781 -2.172 20.542 -2.294 20.218 -2.294 c
-19.972 -2.294 19.777 -2.198 19.63 -1.999 c
-19.63 -3.381 l
-18.852 -3.381 l
-18.852 0.749 l
-19.571 0.749 l
-19.601 0.47 l
-19.756 0.694 19.961 0.808 20.218 0.808 c
-20.531 0.808 20.766 0.69 20.924 0.455 c
-21.09 0.22 21.173 -0.133 21.173 -0.603 c
-h
-20.409 -0.647 m
-20.409 -0.353 20.373 -0.148 20.307 -0.03 c
-20.248 0.087 20.137 0.147 19.983 0.147 c
-19.825 0.147 19.708 0.08 19.63 -0.044 c
-19.63 -1.455 l
-19.708 -1.584 19.829 -1.646 19.997 -1.646 c
-20.145 -1.646 20.248 -1.584 20.307 -1.455 c
-20.373 -1.32 20.409 -1.114 20.409 -0.838 c
-h
-21.375 -0.647 m
-21.375 -0.199 21.483 0.154 21.699 0.411 c
-21.913 0.675 22.206 0.808 22.582 0.808 c
-22.964 0.808 23.257 0.675 23.463 0.411 c
-23.677 0.154 23.787 -0.199 23.787 -0.647 c
-23.787 -0.838 l
-23.787 -1.301 23.677 -1.658 23.463 -1.912 c
-23.257 -2.168 22.964 -2.294 22.582 -2.294 c
-22.199 -2.294 21.898 -2.168 21.684 -1.912 c
-21.479 -1.646 21.375 -1.291 21.375 -0.838 c
-h
-22.154 -0.838 m
-22.154 -1.378 22.295 -1.646 22.582 -1.646 c
-22.846 -1.646 22.985 -1.422 23.008 -0.971 c
-23.022 -0.647 l
-23.022 -0.375 22.981 -0.173 22.904 -0.044 c
-22.823 0.091 22.717 0.161 22.582 0.161 c
-22.453 0.161 22.349 0.091 22.272 -0.044 c
-22.192 -0.173 22.154 -0.375 22.154 -0.647 c
-h
-25.41 -1.441 m
-25.41 -1.374 25.374 -1.309 25.308 -1.25 c
-25.249 -1.191 25.109 -1.118 24.897 -1.029 c
-24.573 -0.894 24.352 -0.757 24.234 -0.618 c
-24.117 -0.482 24.059 -0.31 24.059 -0.103 c
-24.059 0.161 24.151 0.374 24.338 0.544 c
-24.521 0.72 24.772 0.808 25.088 0.808 c
-25.41 0.808 25.668 0.72 25.867 0.544 c
-26.061 0.374 26.16 0.151 26.16 -0.133 c
-25.381 -0.133 l
-25.381 0.11 25.279 0.235 25.073 0.235 c
-24.992 0.235 24.926 0.205 24.867 0.147 c
-24.816 0.095 24.793 0.029 24.793 -0.059 c
-24.793 -0.129 24.822 -0.188 24.882 -0.235 c
-24.94 -0.287 25.076 -0.36 25.293 -0.456 c
-25.616 -0.574 25.84 -0.706 25.969 -0.853 c
-26.106 -0.992 26.175 -1.176 26.175 -1.411 c
-26.175 -1.676 26.073 -1.893 25.867 -2.058 c
-25.668 -2.216 25.41 -2.294 25.088 -2.294 c
-24.859 -2.294 24.664 -2.249 24.5 -2.161 c
-24.33 -2.073 24.198 -1.956 24.103 -1.808 c
-24.014 -1.654 23.97 -1.485 23.97 -1.309 c
-24.705 -1.309 l
-24.712 -1.449 24.749 -1.551 24.808 -1.617 c
-24.867 -1.687 24.963 -1.721 25.102 -1.721 c
-25.308 -1.721 25.41 -1.628 25.41 -1.441 c
-27.311 -2.234 -0.779 2.983 re
-26.487 1.514 m
-26.487 1.639 26.524 1.741 26.605 1.822 c
-26.682 1.899 26.785 1.94 26.914 1.94 c
-27.039 1.94 27.141 1.899 27.222 1.822 c
-27.299 1.741 27.34 1.639 27.34 1.514 c
-27.34 1.396 27.299 1.296 27.222 1.219 c
-27.153 1.138 27.05 1.102 26.914 1.102 c
-26.785 1.102 26.682 1.138 26.605 1.219 c
-26.524 1.296 26.487 1.396 26.487 1.514 c
-28.726 1.484 m
-28.726 0.749 l
-29.122 0.749 l
-29.122 0.161 l
-28.726 0.161 l
-28.726 -1.324 l
-28.726 -1.441 28.74 -1.526 28.77 -1.573 c
-28.806 -1.613 28.872 -1.632 28.961 -1.632 c
-29.038 -1.632 29.1 -1.625 29.152 -1.603 c
-29.137 -2.22 l
-29.009 -2.268 28.865 -2.294 28.71 -2.294 c
-28.211 -2.294 27.954 -2.007 27.947 -1.426 c
-27.947 0.161 l
-27.608 0.161 l
-27.608 0.749 l
-27.947 0.749 l
-27.947 1.484 l
-h
-29.269 -0.647 m
-29.269 -0.199 29.376 0.154 29.593 0.411 c
-29.805 0.675 30.1 0.808 30.474 0.808 c
-30.856 0.808 31.151 0.675 31.357 0.411 c
-31.569 0.154 31.679 -0.199 31.679 -0.647 c
-31.679 -0.838 l
-31.679 -1.301 31.569 -1.658 31.357 -1.912 c
-31.151 -2.168 30.856 -2.294 30.474 -2.294 c
-30.092 -2.294 29.791 -2.168 29.578 -1.912 c
-29.372 -1.646 29.269 -1.291 29.269 -0.838 c
-h
-30.048 -0.838 m
-30.048 -1.378 30.188 -1.646 30.474 -1.646 c
-30.739 -1.646 30.879 -1.422 30.9 -0.971 c
-30.916 -0.647 l
-30.916 -0.375 30.875 -0.173 30.798 -0.044 c
-30.717 0.091 30.611 0.161 30.474 0.161 c
-30.345 0.161 30.243 0.091 30.166 -0.044 c
-30.085 -0.173 30.048 -0.375 30.048 -0.647 c
-h
-33.451 0 m
-33.202 0.014 l
-32.984 0.014 32.837 -0.081 32.76 -0.265 c
-32.76 -2.234 l
-31.981 -2.234 l
-31.981 0.749 l
-32.716 0.749 l
-32.745 0.426 l
-32.863 0.679 33.028 0.808 33.246 0.808 c
-33.333 0.808 33.407 0.793 33.466 0.764 c
-h
-34.553 -2.234 -0.779 2.983 re
-33.73 1.514 m
-33.73 1.639 33.767 1.741 33.848 1.822 c
-33.925 1.899 34.028 1.94 34.156 1.94 c
-34.281 1.94 34.384 1.899 34.465 1.822 c
-34.542 1.741 34.583 1.639 34.583 1.514 c
-34.583 1.396 34.542 1.296 34.465 1.219 c
-34.395 1.138 34.293 1.102 34.156 1.102 c
-34.028 1.102 33.925 1.138 33.848 1.219 c
-33.767 1.296 33.73 1.396 33.73 1.514 c
-36.263 -2.294 m
-35.858 -2.294 35.546 -2.176 35.322 -1.941 c
-35.105 -1.698 34.998 -1.353 34.998 -0.912 c
-34.998 -0.662 l
-34.998 -0.192 35.101 0.168 35.307 0.426 c
-35.513 0.679 35.806 0.808 36.188 0.808 c
-36.56 0.808 36.839 0.683 37.027 0.44 c
-37.221 0.205 37.321 -0.148 37.321 -0.618 c
-37.321 -1 l
-35.777 -1 l
-35.785 -1.228 35.829 -1.393 35.91 -1.5 c
-35.997 -1.599 36.134 -1.646 36.321 -1.646 c
-36.575 -1.646 36.791 -1.555 36.968 -1.368 c
-37.277 -1.852 l
-37.177 -1.981 37.034 -2.087 36.851 -2.176 c
-36.674 -2.253 36.475 -2.294 36.263 -2.294 c
-35.777 -0.456 m
-36.556 -0.456 l
-36.556 -0.383 l
-36.556 -0.206 36.527 -0.074 36.468 0.014 c
-36.409 0.11 36.31 0.161 36.174 0.161 c
-36.045 0.161 35.947 0.11 35.88 0.014 c
-35.821 -0.085 35.785 -0.243 35.777 -0.456 c
-38.901 -1.441 m
-38.901 -1.374 38.864 -1.309 38.798 -1.25 c
-38.739 -1.191 38.599 -1.118 38.386 -1.029 c
-38.063 -0.894 37.842 -0.757 37.725 -0.618 c
-37.607 -0.482 37.549 -0.31 37.549 -0.103 c
-37.549 0.161 37.64 0.374 37.828 0.544 c
-38.012 0.72 38.262 0.808 38.577 0.808 c
-38.901 0.808 39.158 0.72 39.357 0.544 c
-39.552 0.374 39.65 0.151 39.65 -0.133 c
-38.871 -0.133 l
-38.871 0.11 38.769 0.235 38.563 0.235 c
-38.482 0.235 38.416 0.205 38.357 0.147 c
-38.305 0.095 38.283 0.029 38.283 -0.059 c
-38.283 -0.129 38.313 -0.188 38.372 -0.235 c
-38.43 -0.287 38.567 -0.36 38.783 -0.456 c
-39.107 -0.574 39.33 -0.706 39.459 -0.853 c
-39.596 -0.992 39.665 -1.176 39.665 -1.411 c
-39.665 -1.676 39.562 -1.893 39.357 -2.058 c
-39.158 -2.216 38.901 -2.294 38.577 -2.294 c
-38.349 -2.294 38.154 -2.249 37.99 -2.161 c
-37.821 -2.073 37.688 -1.956 37.593 -1.808 c
-37.504 -1.654 37.46 -1.485 37.46 -1.309 c
-38.195 -1.309 l
-38.203 -1.449 38.239 -1.551 38.298 -1.617 c
-38.357 -1.687 38.453 -1.721 38.592 -1.721 c
-38.798 -1.721 38.901 -1.628 38.901 -1.441 c
-f
-Q
- endstream endobj 38 0 obj <</BBox[543.633 459.986 581.22 454.709]/Group 74 0 R/Length 9136/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 544.8536 457.5314 cm
-0 0 m
--0.706 0 l
--0.706 -1.617 l
--1.22 -1.617 l
--1.22 2.396 l
--0.088 2.396 l
-0.302 2.396 0.595 2.293 0.794 2.087 c
-1 1.881 1.103 1.579 1.103 1.19 c
-1.103 0.944 1.048 0.727 0.941 0.544 c
-0.831 0.357 0.68 0.213 0.485 0.118 c
-1.25 -1.588 l
-1.25 -1.617 l
-0.721 -1.617 l
-h
--0.706 0.44 m
--0.088 0.44 l
-0.118 0.44 0.283 0.507 0.412 0.646 c
-0.537 0.783 0.603 0.962 0.603 1.19 c
-0.603 1.697 0.368 1.955 -0.103 1.955 c
--0.706 1.955 l
-h
-2.58 -1.676 m
-2.205 -1.676 1.922 -1.569 1.727 -1.353 c
-1.529 -1.129 1.434 -0.802 1.434 -0.368 c
-1.434 0 l
-1.434 0.44 1.525 0.786 1.713 1.043 c
-1.908 1.297 2.183 1.425 2.536 1.425 c
-2.878 1.425 3.132 1.311 3.3 1.087 c
-3.477 0.86 3.568 0.515 3.579 0.044 c
-3.579 -0.265 l
-1.918 -0.265 l
-1.918 -0.339 l
-1.918 -0.661 1.977 -0.897 2.095 -1.044 c
-2.213 -1.183 2.382 -1.249 2.61 -1.249 c
-2.756 -1.249 2.881 -1.228 2.992 -1.176 c
-3.098 -1.118 3.201 -1.029 3.3 -0.912 c
-3.55 -1.22 l
-3.344 -1.525 3.021 -1.676 2.58 -1.676 c
-2.536 0.999 m
-2.33 0.999 2.176 0.929 2.08 0.793 c
-1.981 0.654 1.926 0.44 1.918 0.147 c
-3.094 0.147 l
-3.094 0.22 l
-3.072 0.492 3.021 0.69 2.933 0.808 c
-2.845 0.933 2.712 0.999 2.536 0.999 c
-4.447 1.367 m
-4.462 1.087 l
-4.638 1.311 4.877 1.425 5.182 1.425 c
-5.513 1.425 5.744 1.278 5.873 0.985 c
-6.056 1.278 6.317 1.425 6.652 1.425 c
-7.21 1.425 7.493 1.08 7.504 0.397 c
-7.504 -1.617 l
-7.019 -1.617 l
-7.019 0.353 l
-7.019 0.565 6.978 0.723 6.901 0.823 c
-6.82 0.929 6.689 0.985 6.504 0.985 c
-6.357 0.985 6.24 0.926 6.151 0.808 c
-6.064 0.698 6.008 0.558 5.991 0.382 c
-5.991 -1.617 l
-5.505 -1.617 l
-5.505 0.367 l
-5.494 0.779 5.322 0.985 4.991 0.985 c
-4.744 0.985 4.572 0.86 4.476 0.617 c
-4.476 -1.617 l
-3.992 -1.617 l
-3.992 1.367 l
-h
-7.849 0.014 m
-7.849 0.444 7.952 0.786 8.158 1.043 c
-8.372 1.297 8.651 1.425 8.996 1.425 c
-9.338 1.425 9.613 1.297 9.819 1.043 c
-10.032 0.797 10.147 0.463 10.157 0.044 c
-10.157 -0.265 l
-10.157 -0.699 10.047 -1.04 9.834 -1.294 c
-9.628 -1.551 9.349 -1.676 8.996 -1.676 c
-8.651 -1.676 8.379 -1.555 8.173 -1.309 c
-7.967 -1.066 7.857 -0.732 7.849 -0.309 c
-h
-8.335 -0.265 m
-8.335 -0.581 8.393 -0.823 8.511 -1 c
-8.636 -1.169 8.798 -1.249 8.996 -1.249 c
-9.426 -1.249 9.65 -0.941 9.673 -0.324 c
-9.673 0.014 l
-9.673 0.316 9.606 0.558 9.482 0.735 c
-9.363 0.911 9.202 0.999 8.996 0.999 c
-8.798 0.999 8.636 0.911 8.511 0.735 c
-8.393 0.558 8.335 0.316 8.335 0.014 c
-h
-11.231 2.087 m
-11.231 1.367 l
-11.686 1.367 l
-11.686 0.97 l
-11.231 0.97 l
-11.231 -0.882 l
-11.231 -1 11.248 -1.088 11.289 -1.147 c
-11.326 -1.206 11.396 -1.235 11.495 -1.235 c
-11.554 -1.235 11.616 -1.228 11.686 -1.206 c
-11.686 -1.617 l
-11.568 -1.654 11.454 -1.676 11.348 -1.676 c
-11.15 -1.676 10.999 -1.61 10.893 -1.47 c
-10.793 -1.334 10.745 -1.139 10.745 -0.882 c
-10.745 0.97 l
-10.29 0.97 l
-10.29 1.367 l
-10.745 1.367 l
-10.745 2.087 l
-h
-13.207 -1.676 m
-12.833 -1.676 12.549 -1.569 12.355 -1.353 c
-12.156 -1.129 12.061 -0.802 12.061 -0.368 c
-12.061 0 l
-12.061 0.44 12.152 0.786 12.341 1.043 c
-12.535 1.297 12.811 1.425 13.164 1.425 c
-13.505 1.425 13.758 1.311 13.928 1.087 c
-14.104 0.86 14.196 0.515 14.207 0.044 c
-14.207 -0.265 l
-12.546 -0.265 l
-12.546 -0.339 l
-12.546 -0.661 12.605 -0.897 12.723 -1.044 c
-12.84 -1.183 13.009 -1.249 13.237 -1.249 c
-13.384 -1.249 13.509 -1.228 13.619 -1.176 c
-13.725 -1.118 13.829 -1.029 13.928 -0.912 c
-14.178 -1.22 l
-13.972 -1.525 13.648 -1.676 13.207 -1.676 c
-13.164 0.999 m
-12.958 0.999 12.803 0.929 12.707 0.793 c
-12.609 0.654 12.553 0.44 12.546 0.147 c
-13.722 0.147 l
-13.722 0.22 l
-13.7 0.492 13.648 0.69 13.56 0.808 c
-13.472 0.933 13.34 0.999 13.164 0.999 c
-17.058 0.911 m
-16.989 0.918 16.915 0.926 16.838 0.926 c
-16.581 0.926 16.405 0.786 16.309 0.515 c
-16.309 -1.617 l
-15.824 -1.617 l
-15.824 1.367 l
-16.294 1.367 l
-16.309 1.058 l
-16.434 1.3 16.617 1.425 16.852 1.425 c
-16.93 1.425 16.993 1.411 17.044 1.381 c
-h
-18.437 -1.676 m
-18.062 -1.676 17.779 -1.569 17.584 -1.353 c
-17.386 -1.129 17.29 -0.802 17.29 -0.368 c
-17.29 0 l
-17.29 0.44 17.382 0.786 17.569 1.043 c
-17.764 1.297 18.04 1.425 18.392 1.425 c
-18.734 1.425 18.988 1.311 19.157 1.087 c
-19.333 0.86 19.425 0.515 19.437 0.044 c
-19.437 -0.265 l
-17.775 -0.265 l
-17.775 -0.339 l
-17.775 -0.661 17.834 -0.897 17.951 -1.044 c
-18.069 -1.183 18.238 -1.249 18.466 -1.249 c
-18.613 -1.249 18.738 -1.228 18.849 -1.176 c
-18.955 -1.118 19.057 -1.029 19.157 -0.912 c
-19.406 -1.22 l
-19.201 -1.525 18.878 -1.676 18.437 -1.676 c
-18.392 0.999 m
-18.186 0.999 18.032 0.929 17.937 0.793 c
-17.837 0.654 17.783 0.44 17.775 0.147 c
-18.951 0.147 l
-18.951 0.22 l
-18.929 0.492 18.878 0.69 18.789 0.808 c
-18.701 0.933 18.569 0.999 18.392 0.999 c
-21.993 -0.265 m
-21.993 -0.736 21.909 -1.088 21.744 -1.324 c
-21.575 -1.559 21.336 -1.676 21.024 -1.676 c
-20.719 -1.676 20.487 -1.565 20.333 -1.338 c
-20.333 -2.764 l
-19.848 -2.764 l
-19.848 1.367 l
-20.289 1.367 l
-20.318 1.028 l
-20.472 1.294 20.704 1.425 21.009 1.425 c
-21.34 1.425 21.586 1.308 21.744 1.072 c
-21.909 0.845 21.993 0.507 21.993 0.058 c
-h
-21.509 0.014 m
-21.509 0.345 21.454 0.592 21.347 0.75 c
-21.247 0.904 21.086 0.985 20.862 0.985 c
-20.627 0.985 20.451 0.867 20.333 0.632 c
-20.333 -0.912 l
-20.451 -1.139 20.63 -1.249 20.877 -1.249 c
-21.089 -1.249 21.247 -1.172 21.347 -1.014 c
-21.454 -0.86 21.509 -0.618 21.509 -0.294 c
-h
-22.346 0.014 m
-22.346 0.444 22.45 0.786 22.655 1.043 c
-22.868 1.297 23.148 1.425 23.493 1.425 c
-23.835 1.425 24.11 1.297 24.316 1.043 c
-24.53 0.797 24.644 0.463 24.654 0.044 c
-24.654 -0.265 l
-24.654 -0.699 24.544 -1.04 24.331 -1.294 c
-24.125 -1.551 23.846 -1.676 23.493 -1.676 c
-23.148 -1.676 22.876 -1.555 22.67 -1.309 c
-22.464 -1.066 22.354 -0.732 22.346 -0.309 c
-h
-22.832 -0.265 m
-22.832 -0.581 22.89 -0.823 23.008 -1 c
-23.133 -1.169 23.295 -1.249 23.493 -1.249 c
-23.923 -1.249 24.147 -0.941 24.169 -0.324 c
-24.169 0.014 l
-24.169 0.316 24.103 0.558 23.979 0.735 c
-23.861 0.911 23.699 0.999 23.493 0.999 c
-23.295 0.999 23.133 0.911 23.008 0.735 c
-22.89 0.558 22.832 0.316 22.832 0.014 c
-h
-26.535 -0.853 m
-26.535 -0.746 26.495 -0.659 26.418 -0.588 c
-26.337 -0.511 26.186 -0.423 25.962 -0.324 c
-25.698 -0.217 25.511 -0.125 25.404 -0.044 c
-25.294 0.033 25.216 0.121 25.169 0.22 c
-25.118 0.316 25.095 0.434 25.095 0.573 c
-25.095 0.816 25.184 1.018 25.359 1.176 c
-25.536 1.341 25.76 1.425 26.036 1.425 c
-26.33 1.425 26.566 1.338 26.741 1.161 c
-26.918 0.992 27.006 0.779 27.006 0.515 c
-26.521 0.515 l
-26.521 0.65 26.47 0.764 26.375 0.852 c
-26.286 0.947 26.172 0.999 26.036 0.999 c
-25.889 0.999 25.775 0.959 25.698 0.881 c
-25.617 0.812 25.581 0.712 25.581 0.588 c
-25.581 0.488 25.61 0.411 25.669 0.353 c
-25.727 0.294 25.867 0.213 26.095 0.118 c
-26.454 -0.03 26.701 -0.173 26.83 -0.309 c
-26.965 -0.437 27.036 -0.611 27.036 -0.823 c
-27.036 -1.081 26.94 -1.287 26.757 -1.441 c
-26.58 -1.599 26.344 -1.676 26.051 -1.676 c
-25.735 -1.676 25.481 -1.588 25.286 -1.411 c
-25.099 -1.228 25.007 -0.996 25.007 -0.721 c
-25.492 -0.721 l
-25.5 -0.89 25.551 -1.022 25.639 -1.118 c
-25.735 -1.206 25.874 -1.249 26.051 -1.249 c
-26.205 -1.249 26.323 -1.216 26.404 -1.147 c
-26.492 -1.081 26.535 -0.981 26.535 -0.853 c
-28.021 -1.617 -0.501 2.984 re
-28.05 2.161 m
-28.05 2.072 28.024 1.999 27.977 1.94 c
-27.936 1.888 27.866 1.866 27.771 1.866 c
-27.682 1.866 27.613 1.888 27.565 1.94 c
-27.524 1.999 27.506 2.065 27.506 2.146 c
-27.506 2.234 27.524 2.308 27.565 2.366 c
-27.613 2.425 27.682 2.454 27.771 2.454 c
-27.866 2.454 27.936 2.425 27.977 2.366 c
-28.024 2.308 28.05 2.238 28.05 2.161 c
-29.328 2.087 m
-29.328 1.367 l
-29.785 1.367 l
-29.785 0.97 l
-29.328 0.97 l
-29.328 -0.882 l
-29.328 -1 29.347 -1.088 29.388 -1.147 c
-29.424 -1.206 29.494 -1.235 29.593 -1.235 c
-29.652 -1.235 29.714 -1.228 29.785 -1.206 c
-29.785 -1.617 l
-29.667 -1.654 29.552 -1.676 29.446 -1.676 c
-29.248 -1.676 29.097 -1.61 28.991 -1.47 c
-28.891 -1.334 28.844 -1.139 28.844 -0.882 c
-28.844 0.97 l
-28.388 0.97 l
-28.388 1.367 l
-28.844 1.367 l
-28.844 2.087 l
-h
-30.097 0.014 m
-30.097 0.444 30.2 0.786 30.406 1.043 c
-30.618 1.297 30.898 1.425 31.243 1.425 c
-31.585 1.425 31.861 1.297 32.066 1.043 c
-32.28 0.797 32.393 0.463 32.405 0.044 c
-32.405 -0.265 l
-32.405 -0.699 32.295 -1.04 32.081 -1.294 c
-31.875 -1.551 31.596 -1.676 31.243 -1.676 c
-30.898 -1.676 30.626 -1.555 30.42 -1.309 c
-30.215 -1.066 30.104 -0.732 30.097 -0.309 c
-h
-30.582 -0.265 m
-30.582 -0.581 30.641 -0.823 30.758 -1 c
-30.883 -1.169 31.044 -1.249 31.243 -1.249 c
-31.673 -1.249 31.898 -0.941 31.919 -0.324 c
-31.919 0.014 l
-31.919 0.316 31.853 0.558 31.728 0.735 c
-31.611 0.911 31.449 0.999 31.243 0.999 c
-31.044 0.999 30.883 0.911 30.758 0.735 c
-30.641 0.558 30.582 0.316 30.582 0.014 c
-h
-34.076 0.911 m
-34.007 0.918 33.933 0.926 33.856 0.926 c
-33.598 0.926 33.423 0.786 33.327 0.515 c
-33.327 -1.617 l
-32.842 -1.617 l
-32.842 1.367 l
-33.313 1.367 l
-33.327 1.058 l
-33.452 1.3 33.635 1.425 33.87 1.425 c
-33.948 1.425 34.011 1.411 34.061 1.381 c
-h
-35.308 -0.809 m
-35.852 1.367 l
-36.366 1.367 l
-35.395 -2.043 l
-35.326 -2.297 35.223 -2.488 35.087 -2.617 c
-34.948 -2.753 34.797 -2.822 34.631 -2.822 c
-34.562 -2.822 34.477 -2.808 34.381 -2.778 c
-34.381 -2.367 l
-34.485 -2.382 l
-34.62 -2.382 34.726 -2.345 34.807 -2.278 c
-34.896 -2.209 34.962 -2.091 35.013 -1.926 c
-35.102 -1.588 l
-34.234 1.367 l
-34.763 1.367 l
-h
-f
-Q
- endstream endobj 39 0 obj <</BBox[547.65 453.562 561.199 449.27]/Group 75 0 R/Length 3370/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 548.1057 452.3131 cm
-0 0 m
-0.015 -0.324 l
-0.198 -0.07 0.441 0.058 0.736 0.058 c
-1.264 0.058 1.533 -0.294 1.544 -1 c
-1.544 -2.984 l
-1.058 -2.984 l
-1.058 -1.029 l
-1.058 -0.794 1.018 -0.628 0.941 -0.53 c
-0.86 -0.434 0.742 -0.382 0.588 -0.382 c
-0.47 -0.382 0.36 -0.422 0.265 -0.5 c
-0.166 -0.58 0.088 -0.688 0.03 -0.823 c
-0.03 -2.984 l
--0.455 -2.984 l
--0.455 0 l
-h
-3.628 -2.984 m
-3.598 -2.918 3.576 -2.808 3.568 -2.66 c
-3.392 -2.918 3.172 -3.043 2.907 -3.043 c
-2.631 -3.043 2.415 -2.969 2.261 -2.822 c
-2.113 -2.668 2.04 -2.452 2.04 -2.176 c
-2.04 -1.874 2.143 -1.632 2.348 -1.455 c
-2.554 -1.272 2.837 -1.176 3.201 -1.176 c
-3.554 -1.176 l
-3.554 -0.852 l
-3.554 -0.676 3.514 -0.555 3.437 -0.485 c
-3.356 -0.408 3.238 -0.368 3.084 -0.368 c
-2.937 -0.368 2.812 -0.412 2.716 -0.5 c
-2.628 -0.588 2.583 -0.698 2.583 -0.823 c
-2.099 -0.823 l
-2.099 -0.676 2.143 -0.537 2.231 -0.397 c
-2.319 -0.25 2.437 -0.14 2.583 -0.059 c
-2.739 0.018 2.911 0.058 3.098 0.058 c
-3.41 0.058 3.645 -0.023 3.803 -0.177 c
-3.958 -0.324 4.039 -0.544 4.039 -0.838 c
-4.039 -2.338 l
-4.046 -2.573 4.083 -2.774 4.142 -2.94 c
-4.142 -2.984 l
-h
-2.98 -2.602 m
-3.098 -2.602 3.209 -2.569 3.319 -2.499 c
-3.425 -2.433 3.502 -2.348 3.554 -2.249 c
-3.554 -1.544 l
-3.289 -1.544 l
-3.054 -1.544 2.866 -1.595 2.731 -1.69 c
-2.602 -1.79 2.54 -1.933 2.54 -2.117 c
-2.54 -2.286 2.569 -2.407 2.628 -2.484 c
-2.694 -2.565 2.812 -2.602 2.98 -2.602 c
-5.075 0 m
-5.09 -0.279 l
-5.266 -0.056 5.505 0.058 5.81 0.058 c
-6.141 0.058 6.373 -0.088 6.501 -0.382 c
-6.685 -0.088 6.945 0.058 7.28 0.058 c
-7.838 0.058 8.121 -0.287 8.133 -0.97 c
-8.133 -2.984 l
-7.647 -2.984 l
-7.647 -1.014 l
-7.647 -0.802 7.607 -0.643 7.53 -0.544 c
-7.449 -0.437 7.317 -0.382 7.133 -0.382 c
-6.986 -0.382 6.868 -0.441 6.78 -0.559 c
-6.692 -0.669 6.637 -0.809 6.619 -0.985 c
-6.619 -2.984 l
-6.134 -2.984 l
-6.134 -1 l
-6.122 -0.588 5.95 -0.382 5.619 -0.382 c
-5.373 -0.382 5.2 -0.507 5.104 -0.75 c
-5.104 -2.984 l
-4.62 -2.984 l
-4.62 0 l
-h
-9.639 -3.043 m
-9.264 -3.043 8.981 -2.936 8.787 -2.72 c
-8.588 -2.496 8.493 -2.168 8.493 -1.735 c
-8.493 -1.367 l
-8.493 -0.927 8.584 -0.58 8.772 -0.324 c
-8.967 -0.07 9.243 0.058 9.596 0.058 c
-9.937 0.058 10.19 -0.056 10.359 -0.279 c
-10.536 -0.507 10.628 -0.852 10.639 -1.323 c
-10.639 -1.632 l
-8.978 -1.632 l
-8.978 -1.706 l
-8.978 -2.028 9.037 -2.263 9.154 -2.411 c
-9.272 -2.55 9.441 -2.616 9.669 -2.616 c
-9.816 -2.616 9.941 -2.595 10.051 -2.543 c
-10.157 -2.484 10.261 -2.396 10.359 -2.278 c
-10.61 -2.587 l
-10.404 -2.892 10.08 -3.043 9.639 -3.043 c
-9.596 -0.368 m
-9.39 -0.368 9.235 -0.437 9.139 -0.574 c
-9.041 -0.713 8.985 -0.927 8.978 -1.22 c
-10.153 -1.22 l
-10.153 -1.147 l
-10.132 -0.875 10.08 -0.676 9.993 -0.559 c
-9.904 -0.434 9.771 -0.368 9.596 -0.368 c
-10.947 -1.353 m
-10.947 -0.893 11.028 -0.544 11.198 -0.309 c
-11.374 -0.067 11.624 0.058 11.947 0.058 c
-12.23 0.058 12.451 -0.059 12.609 -0.294 c
-12.609 1.249 l
-13.093 1.249 l
-13.093 -2.984 l
-12.653 -2.984 l
-12.623 -2.66 l
-12.465 -2.918 12.241 -3.043 11.947 -3.043 c
-11.631 -3.043 11.389 -2.926 11.212 -2.691 c
-11.036 -2.448 10.947 -2.103 10.947 -1.661 c
-h
-11.433 -1.632 m
-11.433 -1.966 11.481 -2.213 11.58 -2.367 c
-11.676 -2.525 11.836 -2.602 12.065 -2.602 c
-12.307 -2.602 12.491 -2.484 12.609 -2.249 c
-12.609 -0.735 l
-12.48 -0.5 12.3 -0.382 12.065 -0.382 c
-11.836 -0.382 11.676 -0.463 11.58 -0.617 c
-11.481 -0.775 11.433 -1.014 11.433 -1.338 c
-h
-f
-Q
- endstream endobj 40 0 obj <</BBox[628.727 237.005 656.757 232.713]/Group 76 0 R/Length 5146/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 630.1232 234.7709 cm
-0 0 m
-0.808 2.013 l
-1.382 2.013 l
-0.25 -0.5 l
-0.25 -1.999 l
--0.264 -1.999 l
--0.264 -0.5 l
--1.396 2.013 l
--0.823 2.013 l
-h
-1.386 -0.368 m
-1.386 0.062 1.488 0.404 1.694 0.661 c
-1.907 0.914 2.186 1.043 2.531 1.043 c
-2.874 1.043 3.15 0.914 3.355 0.661 c
-3.568 0.415 3.682 0.081 3.693 -0.339 c
-3.693 -0.647 l
-3.693 -1.081 3.583 -1.422 3.37 -1.676 c
-3.164 -1.933 2.884 -2.058 2.531 -2.058 c
-2.186 -2.058 1.914 -1.937 1.708 -1.691 c
-1.503 -1.448 1.392 -1.114 1.386 -0.691 c
-h
-1.87 -0.647 m
-1.87 -0.963 1.93 -1.206 2.047 -1.382 c
-2.172 -1.551 2.333 -1.632 2.531 -1.632 c
-2.961 -1.632 3.186 -1.324 3.208 -0.706 c
-3.208 -0.368 l
-3.208 -0.067 3.142 0.176 3.017 0.353 c
-2.899 0.529 2.738 0.617 2.531 0.617 c
-2.333 0.617 2.172 0.529 2.047 0.353 c
-1.93 0.176 1.87 -0.067 1.87 -0.368 c
-h
-5.644 -1.735 m
-5.486 -1.952 5.251 -2.058 4.939 -2.058 c
-4.674 -2.058 4.469 -1.966 4.322 -1.779 c
-4.182 -1.595 4.116 -1.32 4.116 -0.956 c
-4.116 0.985 l
-4.601 0.985 l
-4.601 -0.927 l
-4.601 -1.389 4.74 -1.617 5.027 -1.617 c
-5.321 -1.617 5.519 -1.484 5.629 -1.22 c
-5.629 0.985 l
-6.13 0.985 l
-6.13 -1.999 l
-5.659 -1.999 l
-h
-7.783 -0.368 m
-7.783 0.091 7.864 0.44 8.033 0.675 c
-8.21 0.918 8.459 1.043 8.783 1.043 c
-9.066 1.043 9.286 0.926 9.444 0.691 c
-9.444 2.234 l
-9.93 2.234 l
-9.93 -1.999 l
-9.488 -1.999 l
-9.459 -1.676 l
-9.301 -1.933 9.076 -2.058 8.783 -2.058 c
-8.467 -2.058 8.224 -1.941 8.048 -1.706 c
-7.871 -1.463 7.783 -1.118 7.783 -0.676 c
-h
-8.268 -0.647 m
-8.268 -0.981 8.316 -1.228 8.415 -1.382 c
-8.511 -1.54 8.673 -1.617 8.9 -1.617 c
-9.143 -1.617 9.326 -1.5 9.444 -1.264 c
-9.444 0.249 l
-9.315 0.484 9.135 0.602 8.9 0.602 c
-8.673 0.602 8.511 0.521 8.415 0.367 c
-8.316 0.209 8.268 -0.03 8.268 -0.353 c
-h
-10.396 -0.368 m
-10.396 0.062 10.499 0.404 10.705 0.661 c
-10.917 0.914 11.197 1.043 11.543 1.043 c
-11.884 1.043 12.16 0.914 12.366 0.661 c
-12.579 0.415 12.692 0.081 12.704 -0.339 c
-12.704 -0.647 l
-12.704 -1.081 12.594 -1.422 12.38 -1.676 c
-12.174 -1.933 11.896 -2.058 11.543 -2.058 c
-11.197 -2.058 10.925 -1.937 10.72 -1.691 c
-10.514 -1.448 10.404 -1.114 10.396 -0.691 c
-h
-10.881 -0.647 m
-10.881 -0.963 10.94 -1.206 11.057 -1.382 c
-11.183 -1.551 11.344 -1.632 11.543 -1.632 c
-11.973 -1.632 12.197 -1.324 12.218 -0.706 c
-12.218 -0.368 l
-12.218 -0.067 12.153 0.176 12.027 0.353 c
-11.91 0.529 11.748 0.617 11.543 0.617 c
-11.344 0.617 11.183 0.529 11.057 0.353 c
-10.94 0.176 10.881 -0.067 10.881 -0.368 c
-h
-15.879 -1.999 m
-15.85 -1.933 15.827 -1.823 15.819 -1.676 c
-15.644 -1.933 15.423 -2.058 15.158 -2.058 c
-14.883 -2.058 14.666 -1.985 14.512 -1.837 c
-14.365 -1.683 14.291 -1.467 14.291 -1.191 c
-14.291 -0.89 14.394 -0.647 14.6 -0.47 c
-14.805 -0.287 15.089 -0.191 15.453 -0.191 c
-15.805 -0.191 l
-15.805 0.132 l
-15.805 0.309 15.765 0.43 15.688 0.5 c
-15.607 0.577 15.489 0.617 15.335 0.617 c
-15.188 0.617 15.063 0.573 14.967 0.484 c
-14.879 0.397 14.835 0.286 14.835 0.162 c
-14.35 0.162 l
-14.35 0.309 14.394 0.448 14.483 0.588 c
-14.57 0.735 14.688 0.845 14.835 0.926 c
-14.99 1.003 15.162 1.043 15.349 1.043 c
-15.661 1.043 15.897 0.962 16.055 0.808 c
-16.209 0.661 16.29 0.44 16.29 0.147 c
-16.29 -1.353 l
-16.297 -1.588 16.334 -1.79 16.393 -1.955 c
-16.393 -1.999 l
-h
-15.232 -1.617 m
-15.349 -1.617 15.46 -1.584 15.57 -1.515 c
-15.676 -1.448 15.754 -1.364 15.805 -1.264 c
-15.805 -0.559 l
-15.541 -0.559 l
-15.306 -0.559 15.118 -0.611 14.982 -0.706 c
-14.853 -0.805 14.791 -0.948 14.791 -1.132 c
-14.791 -1.301 14.82 -1.422 14.879 -1.5 c
-14.946 -1.58 15.063 -1.617 15.232 -1.617 c
-17.4 -1.999 -0.5 4.233 re
-18.601 -1.999 -0.5 4.233 re
-21.111 1.705 m
-21.111 0.985 l
-21.567 0.985 l
-21.567 0.588 l
-21.111 0.588 l
-21.111 -1.264 l
-21.111 -1.382 21.13 -1.47 21.17 -1.529 c
-21.207 -1.588 21.277 -1.617 21.376 -1.617 c
-21.435 -1.617 21.498 -1.61 21.567 -1.588 c
-21.567 -1.999 l
-21.45 -2.036 21.336 -2.058 21.229 -2.058 c
-21.03 -2.058 20.88 -1.992 20.773 -1.852 c
-20.675 -1.717 20.627 -1.521 20.627 -1.264 c
-20.627 0.588 l
-20.17 0.588 l
-20.17 0.985 l
-20.627 0.985 l
-20.627 1.705 l
-h
-22.519 0.675 m
-22.703 0.918 22.938 1.043 23.225 1.043 c
-23.754 1.043 24.022 0.691 24.033 -0.015 c
-24.033 -1.999 l
-23.548 -1.999 l
-23.548 -0.044 l
-23.548 0.191 23.507 0.357 23.43 0.455 c
-23.349 0.551 23.232 0.602 23.077 0.602 c
-22.96 0.602 22.85 0.562 22.755 0.484 c
-22.655 0.404 22.578 0.297 22.519 0.162 c
-22.519 -1.999 l
-22.034 -1.999 l
-22.034 2.234 l
-22.519 2.234 l
-h
-25.635 -2.058 m
-25.261 -2.058 24.978 -1.952 24.783 -1.735 c
-24.584 -1.511 24.488 -1.183 24.488 -0.75 c
-24.488 -0.383 l
-24.488 0.058 24.581 0.404 24.768 0.661 c
-24.962 0.914 25.238 1.043 25.591 1.043 c
-25.932 1.043 26.186 0.929 26.356 0.706 c
-26.532 0.478 26.624 0.132 26.634 -0.339 c
-26.634 -0.647 l
-24.974 -0.647 l
-24.974 -0.721 l
-24.974 -1.044 25.032 -1.279 25.15 -1.426 c
-25.267 -1.565 25.437 -1.632 25.664 -1.632 c
-25.812 -1.632 25.936 -1.61 26.047 -1.559 c
-26.154 -1.5 26.256 -1.411 26.356 -1.294 c
-26.605 -1.602 l
-26.399 -1.908 26.076 -2.058 25.635 -2.058 c
-25.591 0.617 m
-25.385 0.617 25.231 0.548 25.136 0.411 c
-25.036 0.272 24.981 0.058 24.974 -0.235 c
-26.15 -0.235 l
-26.15 -0.162 l
-26.127 0.11 26.076 0.309 25.988 0.426 c
-25.899 0.551 25.768 0.617 25.591 0.617 c
-f
-Q
- endstream endobj 41 0 obj <</BBox[562.794 453.503 574.785 448.153]/Group 77 0 R/Length 2760/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 562.7944 450.9161 cm
-0 0 m
-0 0.449 0.106 0.802 0.323 1.058 c
-0.536 1.324 0.83 1.455 1.205 1.455 c
-1.587 1.455 1.881 1.324 2.087 1.058 c
-2.3 0.802 2.41 0.449 2.41 0 c
-2.41 -0.191 l
-2.41 -0.654 2.3 -1.01 2.087 -1.263 c
-1.881 -1.521 1.587 -1.646 1.205 -1.646 c
-0.823 -1.646 0.521 -1.521 0.309 -1.263 c
-0.103 -0.999 0 -0.643 0 -0.191 c
-h
-0.779 -0.191 m
-0.779 -0.731 0.918 -0.999 1.205 -0.999 c
-1.469 -0.999 1.61 -0.775 1.631 -0.323 c
-1.646 0 l
-1.646 0.272 1.606 0.474 1.529 0.603 c
-1.448 0.739 1.341 0.809 1.205 0.809 c
-1.076 0.809 0.974 0.739 0.897 0.603 c
-0.816 0.474 0.779 0.272 0.779 0 c
-h
-4.182 0.647 m
-3.931 0.662 l
-3.715 0.662 3.568 0.566 3.491 0.383 c
-3.491 -1.587 l
-2.711 -1.587 l
-2.711 1.397 l
-3.447 1.397 l
-3.476 1.073 l
-3.594 1.327 3.759 1.455 3.976 1.455 c
-4.064 1.455 4.137 1.441 4.197 1.411 c
-h
-5.284 -1.587 -0.779 2.984 re
-4.461 2.161 m
-4.461 2.286 4.498 2.389 4.579 2.469 c
-4.656 2.547 4.758 2.587 4.887 2.587 c
-5.012 2.587 5.115 2.547 5.196 2.469 c
-5.273 2.389 5.313 2.286 5.313 2.161 c
-5.313 2.043 5.273 1.945 5.196 1.867 c
-5.126 1.786 5.024 1.75 4.887 1.75 c
-4.758 1.75 4.656 1.786 4.579 1.867 c
-4.498 1.945 4.461 2.043 4.461 2.161 c
-5.703 0 m
-5.703 0.489 5.791 0.853 5.967 1.088 c
-6.144 1.33 6.387 1.455 6.703 1.455 c
-6.975 1.455 7.187 1.345 7.335 1.133 c
-7.364 1.397 l
-8.07 1.397 l
-8.07 -1.587 l
-8.07 -1.969 7.96 -2.256 7.746 -2.454 c
-7.53 -2.66 7.224 -2.763 6.834 -2.763 c
-6.666 -2.763 6.489 -2.726 6.306 -2.66 c
-6.129 -2.601 5.997 -2.516 5.909 -2.41 c
-6.173 -1.881 l
-6.25 -1.947 6.35 -2.006 6.468 -2.057 c
-6.585 -2.105 6.692 -2.131 6.79 -2.131 c
-6.967 -2.131 7.092 -2.087 7.173 -1.999 c
-7.25 -1.918 7.291 -1.786 7.291 -1.602 c
-7.291 -1.352 l
-7.143 -1.55 6.945 -1.646 6.703 -1.646 c
-6.387 -1.646 6.144 -1.525 5.967 -1.278 c
-5.791 -1.024 5.703 -0.672 5.703 -0.22 c
-h
-6.482 -0.205 m
-6.482 -0.481 6.515 -0.683 6.585 -0.808 c
-6.662 -0.926 6.78 -0.984 6.938 -0.984 c
-7.092 -0.984 7.21 -0.933 7.291 -0.823 c
-7.291 0.603 l
-7.21 0.728 7.092 0.794 6.938 0.794 c
-6.78 0.794 6.662 0.728 6.585 0.603 c
-6.515 0.474 6.482 0.272 6.482 0 c
-h
-9.267 -1.587 -0.779 2.984 re
-8.444 2.161 m
-8.444 2.286 8.481 2.389 8.562 2.469 c
-8.639 2.547 8.742 2.587 8.87 2.587 c
-8.995 2.587 9.099 2.547 9.18 2.469 c
-9.257 2.389 9.296 2.286 9.296 2.161 c
-9.296 2.043 9.257 1.945 9.18 1.867 c
-9.109 1.786 9.007 1.75 8.87 1.75 c
-8.742 1.75 8.639 1.786 8.562 1.867 c
-8.481 1.945 8.444 2.043 8.444 2.161 c
-10.491 1.397 m
-10.506 1.103 l
-10.682 1.338 10.91 1.455 11.197 1.455 c
-11.715 1.455 11.979 1.092 11.991 0.368 c
-11.991 -1.587 l
-11.212 -1.587 l
-11.212 0.31 l
-11.212 0.485 11.185 0.607 11.138 0.676 c
-11.087 0.754 10.998 0.794 10.873 0.794 c
-10.726 0.794 10.612 0.721 10.535 0.574 c
-10.535 -1.587 l
-9.756 -1.587 l
-9.756 1.397 l
-h
-f
-Q
- endstream endobj 42 0 obj <</BBox[575.101 453.401 577.027 449.3]/Group 78 0 R/Length 944/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 575.7475 450.4608 cm
-0 0 m
-0 0.214 0.019 0.389 0.059 0.53 c
-0.106 0.676 0.221 0.852 0.397 1.058 c
-0.603 1.309 l
-0.728 1.492 0.794 1.679 0.794 1.866 c
-0.794 2.061 0.75 2.213 0.661 2.323 c
-0.58 2.429 0.47 2.484 0.324 2.484 c
-0.184 2.484 0.067 2.433 -0.029 2.337 c
--0.118 2.238 -0.162 2.105 -0.162 1.941 c
--0.646 1.941 l
--0.646 2.242 -0.559 2.484 -0.382 2.66 c
--0.199 2.844 0.037 2.94 0.324 2.94 c
-0.617 2.94 0.846 2.844 1.014 2.66 c
-1.191 2.473 1.279 2.219 1.279 1.897 c
-1.279 1.58 1.151 1.268 0.896 0.956 c
-0.647 0.647 l
-0.537 0.5 0.485 0.283 0.485 0 c
-h
-0.264 -0.588 m
-0.353 -0.588 0.42 -0.617 0.47 -0.676 c
-0.518 -0.727 0.544 -0.794 0.544 -0.882 c
-0.544 -0.962 0.518 -1.029 0.47 -1.088 c
-0.42 -1.135 0.353 -1.161 0.264 -1.161 c
-0.166 -1.161 0.092 -1.135 0.044 -1.088 c
-0.004 -1.029 -0.014 -0.962 -0.014 -0.882 c
--0.014 -0.794 0.004 -0.727 0.044 -0.676 c
-0.092 -0.617 0.166 -0.588 0.264 -0.588 c
-f
-Q
- endstream endobj 43 0 obj <</BBox[539.629 446.977 584.802 441.539]/Group 79 0 R/Length 9416/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 541.0248 444.743 cm
-0 0 m
-0.808 2.014 l
-1.382 2.014 l
-0.25 -0.5 l
-0.25 -1.999 l
--0.264 -1.999 l
--0.264 -0.5 l
--1.396 2.014 l
--0.823 2.014 l
-h
-1.386 -0.368 m
-1.386 0.062 1.488 0.405 1.694 0.661 c
-1.907 0.915 2.186 1.043 2.532 1.043 c
-2.874 1.043 3.15 0.915 3.355 0.661 c
-3.568 0.415 3.682 0.081 3.693 -0.338 c
-3.693 -0.647 l
-3.693 -1.081 3.583 -1.422 3.37 -1.675 c
-3.164 -1.933 2.884 -2.058 2.532 -2.058 c
-2.186 -2.058 1.914 -1.937 1.708 -1.69 c
-1.503 -1.448 1.393 -1.114 1.386 -0.69 c
-h
-1.87 -0.647 m
-1.87 -0.963 1.93 -1.205 2.047 -1.382 c
-2.172 -1.551 2.334 -1.631 2.532 -1.631 c
-2.962 -1.631 3.186 -1.323 3.208 -0.706 c
-3.208 -0.368 l
-3.208 -0.066 3.142 0.176 3.017 0.353 c
-2.899 0.529 2.738 0.617 2.532 0.617 c
-2.334 0.617 2.172 0.529 2.047 0.353 c
-1.93 0.176 1.87 -0.066 1.87 -0.368 c
-h
-5.644 -1.735 m
-5.486 -1.951 5.251 -2.058 4.939 -2.058 c
-4.675 -2.058 4.469 -1.966 4.322 -1.779 c
-4.182 -1.595 4.116 -1.319 4.116 -0.956 c
-4.116 0.985 l
-4.601 0.985 l
-4.601 -0.926 l
-4.601 -1.389 4.74 -1.617 5.027 -1.617 c
-5.321 -1.617 5.519 -1.484 5.629 -1.22 c
-5.629 0.985 l
-6.13 0.985 l
-6.13 -1.999 l
-5.659 -1.999 l
-h
-7.008 1.926 m
-6.963 0.912 l
-6.596 0.912 l
-6.611 2.234 l
-7.008 2.234 l
-h
-8.438 -1.264 m
-9.01 0.985 l
-9.51 0.985 l
-8.613 -1.999 l
-8.261 -1.999 l
-7.364 0.985 l
-7.85 0.985 l
-h
-10.881 -2.058 m
-10.506 -2.058 10.223 -1.951 10.028 -1.735 c
-9.83 -1.511 9.735 -1.183 9.735 -0.75 c
-9.735 -0.382 l
-9.735 0.058 9.826 0.405 10.014 0.661 c
-10.209 0.915 10.485 1.043 10.837 1.043 c
-11.179 1.043 11.432 0.929 11.601 0.706 c
-11.778 0.478 11.869 0.133 11.881 -0.338 c
-11.881 -0.647 l
-10.219 -0.647 l
-10.219 -0.721 l
-10.219 -1.043 10.279 -1.278 10.396 -1.426 c
-10.514 -1.565 10.683 -1.631 10.911 -1.631 c
-11.057 -1.631 11.183 -1.61 11.293 -1.558 c
-11.399 -1.5 11.502 -1.411 11.601 -1.294 c
-11.852 -1.602 l
-11.645 -1.907 11.322 -2.058 10.881 -2.058 c
-10.837 0.617 m
-10.631 0.617 10.477 0.548 10.381 0.411 c
-10.282 0.272 10.227 0.058 10.219 -0.235 c
-11.395 -0.235 l
-11.395 -0.162 l
-11.374 0.11 11.322 0.309 11.233 0.426 c
-11.146 0.551 11.013 0.617 10.837 0.617 c
-15.64 -0.647 m
-15.64 -1.118 15.555 -1.47 15.39 -1.706 c
-15.221 -1.941 14.982 -2.058 14.67 -2.058 c
-14.365 -2.058 14.133 -1.947 13.978 -1.72 c
-13.978 -3.146 l
-13.494 -3.146 l
-13.494 0.985 l
-13.935 0.985 l
-13.964 0.646 l
-14.119 0.912 14.35 1.043 14.655 1.043 c
-14.986 1.043 15.232 0.926 15.39 0.69 c
-15.555 0.463 15.64 0.125 15.64 -0.324 c
-h
-15.154 -0.368 m
-15.154 -0.037 15.1 0.21 14.994 0.368 c
-14.894 0.522 14.732 0.603 14.508 0.603 c
-14.273 0.603 14.096 0.485 13.978 0.25 c
-13.978 -1.294 l
-14.096 -1.521 14.277 -1.631 14.523 -1.631 c
-14.736 -1.631 14.894 -1.554 14.994 -1.396 c
-15.1 -1.242 15.154 -1 15.154 -0.676 c
-h
-17.334 0.529 m
-17.264 0.536 17.19 0.544 17.113 0.544 c
-16.856 0.544 16.68 0.405 16.584 0.133 c
-16.584 -1.999 l
-16.099 -1.999 l
-16.099 0.985 l
-16.569 0.985 l
-16.584 0.676 l
-16.709 0.918 16.893 1.043 17.128 1.043 c
-17.205 1.043 17.268 1.029 17.319 0.999 c
-h
-17.547 -0.368 m
-17.547 0.062 17.65 0.405 17.856 0.661 c
-18.069 0.915 18.348 1.043 18.693 1.043 c
-19.035 1.043 19.311 0.915 19.517 0.661 c
-19.73 0.415 19.844 0.081 19.855 -0.338 c
-19.855 -0.647 l
-19.855 -1.081 19.744 -1.422 19.532 -1.675 c
-19.326 -1.933 19.046 -2.058 18.693 -2.058 c
-18.348 -2.058 18.076 -1.937 17.87 -1.69 c
-17.664 -1.448 17.554 -1.114 17.547 -0.69 c
-h
-18.032 -0.647 m
-18.032 -0.963 18.091 -1.205 18.209 -1.382 c
-18.333 -1.551 18.495 -1.631 18.693 -1.631 c
-19.123 -1.631 19.347 -1.323 19.37 -0.706 c
-19.37 -0.368 l
-19.37 -0.066 19.304 0.176 19.179 0.353 c
-19.061 0.529 18.899 0.617 18.693 0.617 c
-18.495 0.617 18.333 0.529 18.209 0.353 c
-18.091 0.176 18.032 -0.066 18.032 -0.368 c
-h
-22.456 -0.647 m
-22.456 -1.118 22.372 -1.47 22.207 -1.706 c
-22.038 -1.941 21.795 -2.058 21.471 -2.058 c
-21.155 -2.058 20.92 -1.922 20.766 -1.646 c
-20.737 -1.999 l
-20.296 -1.999 l
-20.296 2.234 l
-20.781 2.234 l
-20.781 0.661 l
-20.935 0.915 21.167 1.043 21.471 1.043 c
-21.795 1.043 22.038 0.926 22.207 0.69 c
-22.372 0.455 22.456 0.106 22.456 -0.353 c
-h
-21.972 -0.368 m
-21.972 -0.015 21.92 0.235 21.824 0.382 c
-21.725 0.529 21.564 0.603 21.34 0.603 c
-21.093 0.603 20.906 0.463 20.781 0.191 c
-20.781 -1.22 l
-20.899 -1.484 21.089 -1.617 21.354 -1.617 c
-21.567 -1.617 21.725 -1.544 21.824 -1.396 c
-21.92 -1.242 21.972 -1 21.972 -0.676 c
-h
-24.426 -1.999 m
-24.397 -1.933 24.375 -1.823 24.367 -1.675 c
-24.191 -1.933 23.971 -2.058 23.706 -2.058 c
-23.43 -2.058 23.214 -1.984 23.059 -1.837 c
-22.913 -1.683 22.838 -1.467 22.838 -1.191 c
-22.838 -0.889 22.942 -0.647 23.148 -0.47 c
-23.353 -0.287 23.636 -0.191 24 -0.191 c
-24.353 -0.191 l
-24.353 0.133 l
-24.353 0.309 24.312 0.43 24.235 0.5 c
-24.154 0.577 24.037 0.617 23.883 0.617 c
-23.736 0.617 23.611 0.573 23.515 0.485 c
-23.426 0.397 23.383 0.287 23.383 0.162 c
-22.898 0.162 l
-22.898 0.309 22.942 0.448 23.03 0.588 c
-23.118 0.735 23.235 0.845 23.383 0.926 c
-23.537 1.003 23.709 1.043 23.897 1.043 c
-24.209 1.043 24.444 0.962 24.602 0.808 c
-24.757 0.661 24.837 0.441 24.837 0.147 c
-24.837 -1.353 l
-24.845 -1.588 24.882 -1.789 24.941 -1.955 c
-24.941 -1.999 l
-h
-23.779 -1.617 m
-23.897 -1.617 24.008 -1.584 24.118 -1.514 c
-24.224 -1.448 24.301 -1.363 24.353 -1.264 c
-24.353 -0.559 l
-24.089 -0.559 l
-23.853 -0.559 23.665 -0.611 23.53 -0.706 c
-23.401 -0.805 23.339 -0.948 23.339 -1.132 c
-23.339 -1.301 23.368 -1.422 23.426 -1.5 c
-23.493 -1.58 23.611 -1.617 23.779 -1.617 c
-27.579 -0.647 m
-27.579 -1.118 27.495 -1.47 27.329 -1.706 c
-27.16 -1.941 26.917 -2.058 26.595 -2.058 c
-26.279 -2.058 26.043 -1.922 25.889 -1.646 c
-25.859 -1.999 l
-25.419 -1.999 l
-25.419 2.234 l
-25.903 2.234 l
-25.903 0.661 l
-26.058 0.915 26.289 1.043 26.595 1.043 c
-26.917 1.043 27.16 0.926 27.329 0.69 c
-27.495 0.455 27.579 0.106 27.579 -0.353 c
-h
-27.094 -0.368 m
-27.094 -0.015 27.042 0.235 26.948 0.382 c
-26.848 0.529 26.686 0.603 26.462 0.603 c
-26.216 0.603 26.028 0.463 25.903 0.191 c
-25.903 -1.22 l
-26.021 -1.484 26.212 -1.617 26.477 -1.617 c
-26.69 -1.617 26.848 -1.544 26.948 -1.396 c
-27.042 -1.242 27.094 -1 27.094 -0.676 c
-h
-28.553 -1.999 -0.5 4.233 re
-30.034 -1.191 m
-30.578 0.985 l
-31.092 0.985 l
-30.122 -2.425 l
-30.052 -2.679 29.949 -2.87 29.813 -2.999 c
-29.674 -3.135 29.523 -3.204 29.358 -3.204 c
-29.288 -3.204 29.203 -3.19 29.107 -3.16 c
-29.107 -2.749 l
-29.211 -2.764 l
-29.346 -2.764 29.454 -2.727 29.535 -2.66 c
-29.622 -2.591 29.689 -2.473 29.74 -2.308 c
-29.828 -1.97 l
-28.961 0.985 l
-29.49 0.985 l
-h
-33.076 0.985 m
-33.091 0.706 l
-33.267 0.929 33.506 1.043 33.811 1.043 c
-34.142 1.043 34.374 0.897 34.503 0.603 c
-34.686 0.897 34.948 1.043 35.282 1.043 c
-35.84 1.043 36.123 0.698 36.134 0.015 c
-36.134 -1.999 l
-35.649 -1.999 l
-35.649 -0.029 l
-35.649 0.183 35.609 0.341 35.532 0.441 c
-35.451 0.548 35.318 0.603 35.135 0.603 c
-34.987 0.603 34.869 0.544 34.782 0.426 c
-34.694 0.316 34.638 0.176 34.62 0 c
-34.62 -1.999 l
-34.135 -1.999 l
-34.135 -0.015 l
-34.123 0.397 33.951 0.603 33.62 0.603 c
-33.375 0.603 33.202 0.478 33.106 0.235 c
-33.106 -1.999 l
-32.621 -1.999 l
-32.621 0.985 l
-h
-38.111 -1.999 m
-38.082 -1.933 38.06 -1.823 38.052 -1.675 c
-37.876 -1.933 37.655 -2.058 37.391 -2.058 c
-37.115 -2.058 36.899 -1.984 36.744 -1.837 c
-36.597 -1.683 36.523 -1.467 36.523 -1.191 c
-36.523 -0.889 36.627 -0.647 36.832 -0.47 c
-37.038 -0.287 37.321 -0.191 37.685 -0.191 c
-38.038 -0.191 l
-38.038 0.133 l
-38.038 0.309 37.997 0.43 37.92 0.5 c
-37.839 0.577 37.722 0.617 37.568 0.617 c
-37.42 0.617 37.296 0.573 37.2 0.485 c
-37.111 0.397 37.067 0.287 37.067 0.162 c
-36.583 0.162 l
-36.583 0.309 36.627 0.448 36.714 0.588 c
-36.803 0.735 36.92 0.845 37.067 0.926 c
-37.221 1.003 37.394 1.043 37.582 1.043 c
-37.894 1.043 38.129 0.962 38.287 0.808 c
-38.441 0.661 38.522 0.441 38.522 0.147 c
-38.522 -1.353 l
-38.53 -1.588 38.567 -1.789 38.626 -1.955 c
-38.626 -1.999 l
-h
-37.464 -1.617 m
-37.582 -1.617 37.692 -1.584 37.803 -1.514 c
-37.909 -1.448 37.986 -1.363 38.038 -1.264 c
-38.038 -0.559 l
-37.773 -0.559 l
-37.537 -0.559 37.35 -0.611 37.215 -0.706 c
-37.086 -0.805 37.024 -0.948 37.024 -1.132 c
-37.024 -1.301 37.053 -1.422 37.111 -1.5 c
-37.178 -1.58 37.296 -1.617 37.464 -1.617 c
-39 -0.368 m
-39 0.092 39.081 0.441 39.25 0.676 c
-39.426 0.918 39.677 1.043 40 1.043 c
-40.282 1.043 40.504 0.926 40.662 0.69 c
-40.662 2.234 l
-41.146 2.234 l
-41.146 -1.999 l
-40.706 -1.999 l
-40.676 -1.675 l
-40.518 -1.933 40.294 -2.058 40 -2.058 c
-39.684 -2.058 39.441 -1.941 39.265 -1.706 c
-39.089 -1.463 39 -1.118 39 -0.676 c
-h
-39.486 -0.647 m
-39.486 -0.981 39.533 -1.228 39.632 -1.382 c
-39.728 -1.54 39.889 -1.617 40.118 -1.617 c
-40.36 -1.617 40.544 -1.5 40.662 -1.264 c
-40.662 0.25 l
-40.533 0.485 40.353 0.603 40.118 0.603 c
-39.889 0.603 39.728 0.522 39.632 0.368 c
-39.533 0.21 39.486 -0.029 39.486 -0.353 c
-h
-42.778 -2.058 m
-42.403 -2.058 42.12 -1.951 41.925 -1.735 c
-41.727 -1.511 41.632 -1.183 41.632 -0.75 c
-41.632 -0.382 l
-41.632 0.058 41.724 0.405 41.911 0.661 c
-42.106 0.915 42.381 1.043 42.734 1.043 c
-43.076 1.043 43.33 0.929 43.498 0.706 c
-43.675 0.478 43.766 0.133 43.777 -0.338 c
-43.777 -0.647 l
-42.117 -0.647 l
-42.117 -0.721 l
-42.117 -1.043 42.175 -1.278 42.293 -1.426 c
-42.41 -1.565 42.58 -1.631 42.807 -1.631 c
-42.954 -1.631 43.079 -1.61 43.189 -1.558 c
-43.296 -1.5 43.399 -1.411 43.498 -1.294 c
-43.748 -1.602 l
-43.542 -1.907 43.219 -2.058 42.778 -2.058 c
-42.734 0.617 m
-42.528 0.617 42.374 0.548 42.278 0.411 c
-42.179 0.272 42.123 0.058 42.117 -0.235 c
-43.293 -0.235 l
-43.293 -0.162 l
-43.27 0.11 43.219 0.309 43.131 0.426 c
-43.043 0.551 42.91 0.617 42.734 0.617 c
-f
-Q
- endstream endobj 44 0 obj <</BBox[541.904 440.392 560.038 434.983]/Group 80 0 R/Length 4112/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 541.9035 437.7458 cm
-0 0 m
-0 0.489 0.087 0.853 0.264 1.088 c
-0.44 1.33 0.683 1.455 0.999 1.455 c
-1.271 1.455 1.484 1.345 1.631 1.133 c
-1.66 1.397 l
-2.366 1.397 l
-2.366 -1.587 l
-2.366 -1.969 2.256 -2.256 2.043 -2.454 c
-1.826 -2.66 1.521 -2.763 1.132 -2.763 c
-0.962 -2.763 0.786 -2.726 0.602 -2.66 c
-0.426 -2.601 0.293 -2.516 0.205 -2.41 c
-0.47 -1.882 l
-0.547 -1.947 0.646 -2.006 0.764 -2.057 c
-0.881 -2.105 0.988 -2.131 1.087 -2.131 c
-1.263 -2.131 1.388 -2.087 1.469 -1.999 c
-1.547 -1.918 1.587 -1.786 1.587 -1.602 c
-1.587 -1.352 l
-1.44 -1.55 1.242 -1.646 0.999 -1.646 c
-0.683 -1.646 0.44 -1.525 0.264 -1.278 c
-0.087 -1.024 0 -0.672 0 -0.22 c
-h
-0.779 -0.205 m
-0.779 -0.481 0.812 -0.683 0.881 -0.808 c
-0.959 -0.926 1.076 -0.984 1.234 -0.984 c
-1.388 -0.984 1.506 -0.933 1.587 -0.823 c
-1.587 0.603 l
-1.506 0.728 1.388 0.794 1.234 0.794 c
-1.076 0.794 0.959 0.728 0.881 0.603 c
-0.812 0.474 0.779 0.272 0.779 0 c
-h
-3.564 -1.587 -0.779 2.984 re
-2.741 2.161 m
-2.741 2.286 2.778 2.389 2.859 2.469 c
-2.936 2.547 3.039 2.587 3.167 2.587 c
-3.293 2.587 3.395 2.547 3.476 2.469 c
-3.553 2.389 3.594 2.286 3.594 2.161 c
-3.594 2.043 3.553 1.945 3.476 1.867 c
-3.406 1.786 3.303 1.75 3.167 1.75 c
-3.039 1.75 2.936 1.786 2.859 1.867 c
-2.778 1.945 2.741 2.043 2.741 2.161 c
-4.983 2.132 m
-4.983 1.397 l
-5.379 1.397 l
-5.379 0.809 l
-4.983 0.809 l
-4.983 -0.675 l
-4.983 -0.793 4.997 -0.878 5.026 -0.926 c
-5.063 -0.966 5.13 -0.984 5.218 -0.984 c
-5.295 -0.984 5.357 -0.977 5.409 -0.955 c
-5.394 -1.572 l
-5.265 -1.62 5.122 -1.646 4.968 -1.646 c
-4.469 -1.646 4.211 -1.359 4.203 -0.779 c
-4.203 0.809 l
-3.865 0.809 l
-3.865 1.397 l
-4.203 1.397 l
-4.203 2.132 l
-h
-7.989 -0.999 m
-8.213 -0.999 8.326 -0.852 8.326 -0.558 c
-9.061 -0.558 l
-9.061 -0.881 8.959 -1.146 8.753 -1.352 c
-8.554 -1.55 8.305 -1.646 8.003 -1.646 c
-7.621 -1.646 7.327 -1.529 7.121 -1.294 c
-6.915 -1.051 6.813 -0.698 6.813 -0.235 c
-6.813 0.015 l
-6.813 0.474 6.908 0.827 7.106 1.073 c
-7.312 1.327 7.607 1.455 7.989 1.455 c
-8.319 1.455 8.58 1.353 8.768 1.147 c
-8.962 0.941 9.061 0.651 9.061 0.279 c
-8.326 0.279 l
-8.326 0.445 8.297 0.574 8.238 0.662 c
-8.187 0.757 8.099 0.809 7.974 0.809 c
-7.845 0.809 7.754 0.757 7.694 0.662 c
-7.636 0.563 7.599 0.375 7.592 0.103 c
-7.592 -0.205 l
-7.592 -0.452 7.599 -0.625 7.621 -0.72 c
-7.65 -0.808 7.688 -0.878 7.738 -0.926 c
-7.798 -0.977 7.879 -0.999 7.989 -0.999 c
-10.15 -1.587 -0.779 4.233 re
-10.568 0 m
-10.568 0.449 10.674 0.802 10.892 1.058 c
-11.104 1.324 11.399 1.455 11.773 1.455 c
-12.156 1.455 12.45 1.324 12.656 1.058 c
-12.868 0.802 12.979 0.449 12.979 0 c
-12.979 -0.191 l
-12.979 -0.654 12.868 -1.01 12.656 -1.263 c
-12.45 -1.521 12.156 -1.646 11.773 -1.646 c
-11.391 -1.646 11.09 -1.521 10.877 -1.263 c
-10.671 -0.999 10.568 -0.643 10.568 -0.191 c
-h
-11.347 -0.191 m
-11.347 -0.731 11.487 -0.999 11.773 -0.999 c
-12.039 -0.999 12.178 -0.775 12.199 -0.323 c
-12.214 0 l
-12.214 0.272 12.174 0.474 12.097 0.603 c
-12.016 0.739 11.91 0.809 11.773 0.809 c
-11.645 0.809 11.542 0.739 11.465 0.603 c
-11.384 0.474 11.347 0.272 11.347 0 c
-h
-14 1.397 m
-14.015 1.103 l
-14.192 1.338 14.42 1.455 14.706 1.455 c
-15.224 1.455 15.489 1.092 15.5 0.368 c
-15.5 -1.587 l
-14.721 -1.587 l
-14.721 0.31 l
-14.721 0.485 14.695 0.607 14.647 0.676 c
-14.596 0.754 14.508 0.794 14.383 0.794 c
-14.235 0.794 14.121 0.721 14.044 0.574 c
-14.044 -1.587 l
-13.265 -1.587 l
-13.265 1.397 l
-h
-17.076 -1.646 m
-16.672 -1.646 16.359 -1.529 16.135 -1.294 c
-15.919 -1.051 15.812 -0.706 15.812 -0.264 c
-15.812 -0.014 l
-15.812 0.456 15.915 0.817 16.12 1.073 c
-16.326 1.327 16.621 1.455 17.003 1.455 c
-17.373 1.455 17.653 1.33 17.841 1.088 c
-18.036 0.853 18.135 0.5 18.135 0.03 c
-18.135 -0.353 l
-16.591 -0.353 l
-16.598 -0.58 16.643 -0.746 16.723 -0.852 c
-16.812 -0.951 16.947 -0.999 17.135 -0.999 c
-17.389 -0.999 17.606 -0.907 17.782 -0.72 c
-18.09 -1.205 l
-17.992 -1.334 17.848 -1.44 17.664 -1.529 c
-17.487 -1.606 17.29 -1.646 17.076 -1.646 c
-16.591 0.192 m
-17.371 0.192 l
-17.371 0.265 l
-17.371 0.441 17.341 0.574 17.282 0.662 c
-17.223 0.757 17.124 0.809 16.988 0.809 c
-16.86 0.809 16.76 0.757 16.694 0.662 c
-16.635 0.563 16.598 0.405 16.591 0.192 c
-f
-Q
- endstream endobj 45 0 obj <</BBox[561.412 440.45 582.315 436.099]/Group 81 0 R/Length 4153/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 561.7944 436.1588 cm
-0 0 m
-0 2.587 l
--0.382 2.587 l
--0.382 2.984 l
-0 2.984 l
-0 3.322 l
-0.008 3.623 0.088 3.858 0.235 4.027 c
-0.382 4.204 0.592 4.292 0.867 4.292 c
-0.963 4.292 1.062 4.278 1.162 4.248 c
-1.132 3.836 l
-1.062 3.844 0.989 3.851 0.912 3.851 c
-0.636 3.851 0.5 3.653 0.5 3.263 c
-0.5 2.984 l
-1 2.984 l
-1 2.587 l
-0.5 2.587 l
-0.5 0 l
-h
-2.693 2.528 m
-2.624 2.535 2.55 2.543 2.473 2.543 c
-2.216 2.543 2.039 2.404 1.945 2.132 c
-1.945 0 l
-1.459 0 l
-1.459 2.984 l
-1.93 2.984 l
-1.945 2.675 l
-2.069 2.917 2.253 3.042 2.488 3.042 c
-2.565 3.042 2.628 3.028 2.679 2.998 c
-h
-2.911 1.631 m
-2.911 2.061 3.013 2.404 3.219 2.66 c
-3.433 2.914 3.711 3.042 4.057 3.042 c
-4.399 3.042 4.675 2.914 4.881 2.66 c
-5.093 2.414 5.207 2.08 5.218 1.661 c
-5.218 1.352 l
-5.218 0.918 5.108 0.577 4.895 0.324 c
-4.69 0.066 4.41 -0.059 4.057 -0.059 c
-3.711 -0.059 3.439 0.062 3.234 0.309 c
-3.028 0.551 2.918 0.885 2.911 1.309 c
-h
-3.396 1.352 m
-3.396 1.036 3.454 0.794 3.572 0.617 c
-3.697 0.448 3.859 0.368 4.057 0.368 c
-4.487 0.368 4.711 0.676 4.733 1.294 c
-4.733 1.631 l
-4.733 1.933 4.667 2.175 4.542 2.352 c
-4.424 2.528 4.263 2.616 4.057 2.616 c
-3.859 2.616 3.697 2.528 3.572 2.352 c
-3.454 2.175 3.396 1.933 3.396 1.631 c
-h
-6.115 2.984 m
-6.13 2.705 l
-6.306 2.928 6.545 3.042 6.85 3.042 c
-7.181 3.042 7.412 2.896 7.541 2.602 c
-7.724 2.896 7.985 3.042 8.32 3.042 c
-8.879 3.042 9.161 2.697 9.172 2.014 c
-9.172 0 l
-8.688 0 l
-8.688 1.97 l
-8.688 2.182 8.647 2.341 8.57 2.44 c
-8.489 2.547 8.357 2.602 8.173 2.602 c
-8.025 2.602 7.908 2.543 7.82 2.425 c
-7.732 2.315 7.676 2.175 7.659 1.999 c
-7.659 0 l
-7.173 0 l
-7.173 1.984 l
-7.162 2.396 6.99 2.602 6.659 2.602 c
-6.413 2.602 6.24 2.477 6.144 2.234 c
-6.144 0 l
-5.659 0 l
-5.659 2.984 l
-h
-11.308 2.675 m
-11.491 2.917 11.726 3.042 12.013 3.042 c
-12.542 3.042 12.81 2.69 12.821 1.984 c
-12.821 0 l
-12.336 0 l
-12.336 1.955 l
-12.336 2.19 12.296 2.356 12.218 2.454 c
-12.138 2.55 12.021 2.602 11.866 2.602 c
-11.748 2.602 11.638 2.562 11.543 2.484 c
-11.443 2.404 11.366 2.296 11.308 2.161 c
-11.308 0 l
-10.822 0 l
-10.822 4.233 l
-11.308 4.233 l
-h
-14.423 -0.059 m
-14.049 -0.059 13.766 0.048 13.571 0.264 c
-13.373 0.488 13.277 0.816 13.277 1.249 c
-13.277 1.617 l
-13.277 2.057 13.369 2.404 13.556 2.66 c
-13.751 2.914 14.026 3.042 14.379 3.042 c
-14.722 3.042 14.975 2.928 15.144 2.705 c
-15.32 2.477 15.412 2.132 15.423 1.661 c
-15.423 1.352 l
-13.762 1.352 l
-13.762 1.278 l
-13.762 0.956 13.821 0.721 13.939 0.573 c
-14.057 0.434 14.225 0.368 14.453 0.368 c
-14.6 0.368 14.725 0.389 14.836 0.441 c
-14.942 0.5 15.044 0.588 15.144 0.706 c
-15.393 0.397 l
-15.188 0.092 14.865 -0.059 14.423 -0.059 c
-14.379 2.616 m
-14.174 2.616 14.02 2.547 13.924 2.41 c
-13.824 2.271 13.77 2.057 13.762 1.764 c
-14.938 1.764 l
-14.938 1.837 l
-14.916 2.109 14.865 2.308 14.776 2.425 c
-14.688 2.55 14.556 2.616 14.379 2.616 c
-17.07 2.528 m
-17 2.535 16.926 2.543 16.849 2.543 c
-16.592 2.543 16.415 2.404 16.32 2.132 c
-16.32 0 l
-15.835 0 l
-15.835 2.984 l
-16.305 2.984 l
-16.32 2.675 l
-16.445 2.917 16.629 3.042 16.864 3.042 c
-16.941 3.042 17.003 3.028 17.055 2.998 c
-h
-18.448 -0.059 m
-18.073 -0.059 17.789 0.048 17.595 0.264 c
-17.396 0.488 17.301 0.816 17.301 1.249 c
-17.301 1.617 l
-17.301 2.057 17.392 2.404 17.581 2.66 c
-17.775 2.914 18.051 3.042 18.404 3.042 c
-18.745 3.042 18.998 2.928 19.168 2.705 c
-19.344 2.477 19.436 2.132 19.447 1.661 c
-19.447 1.352 l
-17.786 1.352 l
-17.786 1.278 l
-17.786 0.956 17.845 0.721 17.962 0.573 c
-18.08 0.434 18.249 0.368 18.477 0.368 c
-18.624 0.368 18.749 0.389 18.859 0.441 c
-18.965 0.5 19.069 0.588 19.168 0.706 c
-19.418 0.397 l
-19.212 0.092 18.888 -0.059 18.448 -0.059 c
-18.404 2.616 m
-18.198 2.616 18.043 2.547 17.947 2.41 c
-17.849 2.271 17.793 2.057 17.786 1.764 c
-18.962 1.764 l
-18.962 1.837 l
-18.94 2.109 18.888 2.308 18.801 2.425 c
-18.712 2.55 18.58 2.616 18.404 2.616 c
-19.888 0.264 m
-19.888 0.353 19.91 0.426 19.962 0.485 c
-20.02 0.544 20.097 0.573 20.197 0.573 c
-20.303 0.573 20.38 0.544 20.432 0.485 c
-20.49 0.426 20.52 0.353 20.52 0.264 c
-20.52 0.183 20.49 0.118 20.432 0.058 c
-20.38 0 20.303 -0.029 20.197 -0.029 c
-20.097 -0.029 20.02 0 19.962 0.058 c
-19.91 0.118 19.888 0.183 19.888 0.264 c
-f
-Q
- endstream endobj 46 0 obj <</BBox[705.559 469.842 760.518 464.403]/Group 82 0 R/Length 12288/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 707.7492 466.6519 cm
-0 0 m
--1.353 0 l
--1.676 -1.043 l
--2.19 -1.043 l
--0.897 2.969 l
--0.47 2.969 l
-0.837 -1.043 l
-0.309 -1.043 l
-h
--1.22 0.441 m
--0.133 0.441 l
--0.676 2.263 l
-h
-1.55 1.94 m
-1.565 1.617 l
-1.749 1.87 1.992 1.999 2.285 1.999 c
-2.815 1.999 3.083 1.646 3.094 0.941 c
-3.094 -1.043 l
-2.609 -1.043 l
-2.609 0.912 l
-2.609 1.147 2.568 1.312 2.491 1.411 c
-2.41 1.507 2.293 1.558 2.138 1.558 c
-2.021 1.558 1.911 1.517 1.815 1.44 c
-1.716 1.359 1.639 1.253 1.58 1.117 c
-1.58 -1.043 l
-1.095 -1.043 l
-1.095 1.94 l
-h
-3.542 0.588 m
-3.542 1.018 3.645 1.359 3.85 1.617 c
-4.064 1.87 4.343 1.999 4.689 1.999 c
-5.03 1.999 5.306 1.87 5.512 1.617 c
-5.725 1.371 5.839 1.037 5.85 0.617 c
-5.85 0.309 l
-5.85 -0.125 5.739 -0.467 5.527 -0.721 c
-5.321 -0.977 5.041 -1.103 4.689 -1.103 c
-4.343 -1.103 4.072 -0.981 3.866 -0.735 c
-3.659 -0.492 3.549 -0.158 3.542 0.264 c
-h
-4.027 0.309 m
-4.027 -0.008 4.086 -0.25 4.203 -0.426 c
-4.328 -0.595 4.49 -0.676 4.689 -0.676 c
-5.119 -0.676 5.342 -0.368 5.365 0.25 c
-5.365 0.588 l
-5.365 0.889 5.298 1.132 5.174 1.309 c
-5.056 1.484 4.895 1.573 4.689 1.573 c
-4.49 1.573 4.328 1.484 4.203 1.309 c
-4.086 1.132 4.027 0.889 4.027 0.588 c
-h
-6.923 2.66 m
-6.923 1.94 l
-7.378 1.94 l
-7.378 1.544 l
-6.923 1.544 l
-6.923 -0.309 l
-6.923 -0.426 6.942 -0.515 6.982 -0.573 c
-7.019 -0.632 7.089 -0.661 7.187 -0.661 c
-7.247 -0.661 7.309 -0.654 7.378 -0.632 c
-7.378 -1.043 l
-7.261 -1.08 7.147 -1.103 7.041 -1.103 c
-6.842 -1.103 6.692 -1.037 6.585 -0.897 c
-6.485 -0.761 6.437 -0.566 6.437 -0.309 c
-6.437 1.544 l
-5.982 1.544 l
-5.982 1.94 l
-6.437 1.94 l
-6.437 2.66 l
-h
-8.326 1.631 m
-8.51 1.874 8.745 1.999 9.032 1.999 c
-9.562 1.999 9.83 1.646 9.841 0.941 c
-9.841 -1.043 l
-9.356 -1.043 l
-9.356 0.912 l
-9.356 1.147 9.315 1.312 9.238 1.411 c
-9.157 1.507 9.04 1.558 8.885 1.558 c
-8.768 1.558 8.658 1.517 8.562 1.44 c
-8.463 1.359 8.386 1.253 8.326 1.117 c
-8.326 -1.043 l
-7.842 -1.043 l
-7.842 3.19 l
-8.326 3.19 l
-h
-11.443 -1.103 m
-11.068 -1.103 10.785 -0.996 10.59 -0.779 c
-10.391 -0.555 10.296 -0.228 10.296 0.206 c
-10.296 0.573 l
-10.296 1.014 10.389 1.359 10.576 1.617 c
-10.771 1.87 11.046 1.999 11.399 1.999 c
-11.74 1.999 11.994 1.885 12.163 1.661 c
-12.34 1.433 12.431 1.087 12.442 0.617 c
-12.442 0.309 l
-10.782 0.309 l
-10.782 0.235 l
-10.782 -0.088 10.84 -0.324 10.958 -0.47 c
-11.075 -0.61 11.245 -0.676 11.472 -0.676 c
-11.619 -0.676 11.744 -0.654 11.854 -0.603 c
-11.961 -0.544 12.064 -0.455 12.163 -0.338 c
-12.413 -0.647 l
-12.207 -0.952 11.883 -1.103 11.443 -1.103 c
-11.399 1.573 m
-11.193 1.573 11.039 1.503 10.943 1.367 c
-10.844 1.228 10.788 1.014 10.782 0.721 c
-11.958 0.721 l
-11.958 0.794 l
-11.935 1.066 11.883 1.264 11.796 1.382 c
-11.708 1.507 11.575 1.573 11.399 1.573 c
-14.089 1.484 m
-14.019 1.492 13.946 1.5 13.868 1.5 c
-13.611 1.5 13.435 1.359 13.339 1.087 c
-13.339 -1.043 l
-12.854 -1.043 l
-12.854 1.94 l
-13.325 1.94 l
-13.339 1.631 l
-13.464 1.874 13.647 1.999 13.883 1.999 c
-13.96 1.999 14.023 1.984 14.074 1.955 c
-h
-16.897 1.484 m
-16.826 1.492 16.753 1.5 16.676 1.5 c
-16.419 1.5 16.242 1.359 16.147 1.087 c
-16.147 -1.043 l
-15.661 -1.043 l
-15.661 1.94 l
-16.132 1.94 l
-16.147 1.631 l
-16.271 1.874 16.455 1.999 16.691 1.999 c
-16.768 1.999 16.83 1.984 16.882 1.955 c
-h
-18.274 -1.103 m
-17.899 -1.103 17.616 -0.996 17.422 -0.779 c
-17.223 -0.555 17.128 -0.228 17.128 0.206 c
-17.128 0.573 l
-17.128 1.014 17.219 1.359 17.407 1.617 c
-17.602 1.87 17.878 1.999 18.231 1.999 c
-18.572 1.999 18.825 1.885 18.994 1.661 c
-19.171 1.433 19.263 1.087 19.274 0.617 c
-19.274 0.309 l
-17.612 0.309 l
-17.612 0.235 l
-17.612 -0.088 17.672 -0.324 17.789 -0.47 c
-17.907 -0.61 18.075 -0.676 18.304 -0.676 c
-18.451 -0.676 18.576 -0.654 18.686 -0.603 c
-18.792 -0.544 18.896 -0.455 18.994 -0.338 c
-19.245 -0.647 l
-19.039 -0.952 18.715 -1.103 18.274 -1.103 c
-18.231 1.573 m
-18.025 1.573 17.87 1.503 17.774 1.367 c
-17.676 1.228 17.62 1.014 17.612 0.721 c
-18.788 0.721 l
-18.788 0.794 l
-18.767 1.066 18.715 1.264 18.627 1.382 c
-18.539 1.507 18.406 1.573 18.231 1.573 c
-20.141 1.94 m
-20.155 1.661 l
-20.332 1.885 20.571 1.999 20.876 1.999 c
-21.207 1.999 21.439 1.852 21.566 1.558 c
-21.751 1.852 22.011 1.999 22.346 1.999 c
-22.904 1.999 23.187 1.654 23.199 0.97 c
-23.199 -1.043 l
-22.713 -1.043 l
-22.713 0.926 l
-22.713 1.139 22.673 1.297 22.596 1.396 c
-22.515 1.503 22.383 1.558 22.199 1.558 c
-22.052 1.558 21.934 1.5 21.846 1.382 c
-21.758 1.272 21.703 1.132 21.684 0.956 c
-21.684 -1.043 l
-21.2 -1.043 l
-21.2 0.941 l
-21.188 1.352 21.015 1.558 20.685 1.558 c
-20.439 1.558 20.266 1.433 20.17 1.191 c
-20.17 -1.043 l
-19.685 -1.043 l
-19.685 1.94 l
-h
-23.544 0.588 m
-23.544 1.018 23.646 1.359 23.852 1.617 c
-24.066 1.87 24.345 1.999 24.691 1.999 c
-25.032 1.999 25.308 1.87 25.514 1.617 c
-25.726 1.371 25.84 1.037 25.852 0.617 c
-25.852 0.309 l
-25.852 -0.125 25.742 -0.467 25.528 -0.721 c
-25.323 -0.977 25.043 -1.103 24.691 -1.103 c
-24.345 -1.103 24.073 -0.981 23.868 -0.735 c
-23.661 -0.492 23.551 -0.158 23.544 0.264 c
-h
-24.029 0.309 m
-24.029 -0.008 24.088 -0.25 24.205 -0.426 c
-24.33 -0.595 24.492 -0.676 24.691 -0.676 c
-25.121 -0.676 25.344 -0.368 25.366 0.25 c
-25.366 0.588 l
-25.366 0.889 25.3 1.132 25.175 1.309 c
-25.057 1.484 24.896 1.573 24.691 1.573 c
-24.492 1.573 24.33 1.484 24.205 1.309 c
-24.088 1.132 24.029 0.889 24.029 0.588 c
-h
-26.925 2.66 m
-26.925 1.94 l
-27.38 1.94 l
-27.38 1.544 l
-26.925 1.544 l
-26.925 -0.309 l
-26.925 -0.426 26.943 -0.515 26.983 -0.573 c
-27.02 -0.632 27.09 -0.661 27.189 -0.661 c
-27.248 -0.661 27.311 -0.654 27.38 -0.632 c
-27.38 -1.043 l
-27.263 -1.08 27.149 -1.103 27.043 -1.103 c
-26.844 -1.103 26.693 -1.037 26.586 -0.897 c
-26.487 -0.761 26.439 -0.566 26.439 -0.309 c
-26.439 1.544 l
-25.984 1.544 l
-25.984 1.94 l
-26.439 1.94 l
-26.439 2.66 l
-h
-28.905 -1.103 m
-28.531 -1.103 28.248 -0.996 28.053 -0.779 c
-27.854 -0.555 27.758 -0.228 27.758 0.206 c
-27.758 0.573 l
-27.758 1.014 27.851 1.359 28.038 1.617 c
-28.233 1.87 28.508 1.999 28.861 1.999 c
-29.203 1.999 29.456 1.885 29.626 1.661 c
-29.802 1.433 29.894 1.087 29.905 0.617 c
-29.905 0.309 l
-28.244 0.309 l
-28.244 0.235 l
-28.244 -0.088 28.303 -0.324 28.421 -0.47 c
-28.538 -0.61 28.707 -0.676 28.934 -0.676 c
-29.082 -0.676 29.206 -0.654 29.317 -0.603 c
-29.424 -0.544 29.526 -0.455 29.626 -0.338 c
-29.875 -0.647 l
-29.67 -0.952 29.346 -1.103 28.905 -1.103 c
-28.861 1.573 m
-28.656 1.573 28.501 1.503 28.406 1.367 c
-28.306 1.228 28.251 1.014 28.244 0.721 c
-29.42 0.721 l
-29.42 0.794 l
-29.398 1.066 29.346 1.264 29.258 1.382 c
-29.17 1.507 29.038 1.573 28.861 1.573 c
-32.753 1.484 m
-32.683 1.492 32.61 1.5 32.533 1.5 c
-32.275 1.5 32.099 1.359 32.003 1.087 c
-32.003 -1.043 l
-31.519 -1.043 l
-31.519 1.94 l
-31.989 1.94 l
-32.003 1.631 l
-32.128 1.874 32.312 1.999 32.547 1.999 c
-32.624 1.999 32.687 1.984 32.738 1.955 c
-h
-34.131 -1.103 m
-33.756 -1.103 33.473 -0.996 33.279 -0.779 c
-33.08 -0.555 32.984 -0.228 32.984 0.206 c
-32.984 0.573 l
-32.984 1.014 33.076 1.359 33.264 1.617 c
-33.458 1.87 33.734 1.999 34.087 1.999 c
-34.428 1.999 34.682 1.885 34.851 1.661 c
-35.028 1.433 35.12 1.087 35.13 0.617 c
-35.13 0.309 l
-33.47 0.309 l
-33.47 0.235 l
-33.47 -0.088 33.528 -0.324 33.646 -0.47 c
-33.763 -0.61 33.932 -0.676 34.16 -0.676 c
-34.307 -0.676 34.432 -0.654 34.542 -0.603 c
-34.649 -0.544 34.752 -0.455 34.851 -0.338 c
-35.101 -0.647 l
-34.895 -0.952 34.572 -1.103 34.131 -1.103 c
-34.087 1.573 m
-33.881 1.573 33.726 1.503 33.631 1.367 c
-33.532 1.228 33.477 1.014 33.47 0.721 c
-34.646 0.721 l
-34.646 0.794 l
-34.623 1.066 34.572 1.264 34.484 1.382 c
-34.395 1.507 34.264 1.573 34.087 1.573 c
-37.688 0.309 m
-37.688 -0.162 37.603 -0.515 37.438 -0.75 c
-37.269 -0.985 37.03 -1.103 36.718 -1.103 c
-36.413 -1.103 36.182 -0.992 36.027 -0.765 c
-36.027 -2.19 l
-35.542 -2.19 l
-35.542 1.94 l
-35.983 1.94 l
-36.012 1.602 l
-36.167 1.866 36.398 1.999 36.703 1.999 c
-37.034 1.999 37.281 1.882 37.438 1.646 c
-37.603 1.419 37.688 1.08 37.688 0.632 c
-h
-37.203 0.588 m
-37.203 0.919 37.148 1.165 37.042 1.323 c
-36.942 1.477 36.78 1.558 36.556 1.558 c
-36.321 1.558 36.145 1.44 36.027 1.205 c
-36.027 -0.338 l
-36.145 -0.566 36.325 -0.676 36.571 -0.676 c
-36.784 -0.676 36.942 -0.599 37.042 -0.441 c
-37.148 -0.287 37.203 -0.044 37.203 0.279 c
-h
-38.041 0.588 m
-38.041 1.018 38.143 1.359 38.349 1.617 c
-38.563 1.87 38.842 1.999 39.187 1.999 c
-39.529 1.999 39.805 1.87 40.011 1.617 c
-40.223 1.371 40.338 1.037 40.348 0.617 c
-40.348 0.309 l
-40.348 -0.125 40.238 -0.467 40.025 -0.721 c
-39.82 -0.977 39.54 -1.103 39.187 -1.103 c
-38.842 -1.103 38.57 -0.981 38.364 -0.735 c
-38.158 -0.492 38.048 -0.158 38.041 0.264 c
-h
-38.526 0.309 m
-38.526 -0.008 38.584 -0.25 38.702 -0.426 c
-38.827 -0.595 38.989 -0.676 39.187 -0.676 c
-39.617 -0.676 39.841 -0.368 39.864 0.25 c
-39.864 0.588 l
-39.864 0.889 39.797 1.132 39.673 1.309 c
-39.554 1.484 39.393 1.573 39.187 1.573 c
-38.989 1.573 38.827 1.484 38.702 1.309 c
-38.584 1.132 38.526 0.889 38.526 0.588 c
-h
-42.23 -0.279 m
-42.23 -0.173 42.189 -0.085 42.112 -0.015 c
-42.031 0.062 41.881 0.151 41.657 0.25 c
-41.393 0.357 41.204 0.449 41.098 0.529 c
-40.988 0.607 40.911 0.694 40.863 0.794 c
-40.811 0.889 40.79 1.007 40.79 1.147 c
-40.79 1.389 40.878 1.591 41.054 1.749 c
-41.231 1.914 41.455 1.999 41.73 1.999 c
-42.025 1.999 42.26 1.911 42.436 1.735 c
-42.612 1.565 42.7 1.352 42.7 1.087 c
-42.216 1.087 l
-42.216 1.224 42.164 1.338 42.068 1.426 c
-41.98 1.521 41.867 1.573 41.73 1.573 c
-41.583 1.573 41.47 1.532 41.393 1.455 c
-41.312 1.386 41.275 1.286 41.275 1.161 c
-41.275 1.062 41.304 0.985 41.362 0.926 c
-41.422 0.867 41.561 0.786 41.79 0.69 c
-42.149 0.544 42.395 0.401 42.524 0.264 c
-42.66 0.136 42.73 -0.037 42.73 -0.25 c
-42.73 -0.507 42.634 -0.713 42.451 -0.867 c
-42.274 -1.025 42.039 -1.103 41.745 -1.103 c
-41.429 -1.103 41.175 -1.014 40.981 -0.838 c
-40.793 -0.654 40.701 -0.422 40.701 -0.147 c
-41.187 -0.147 l
-41.194 -0.316 41.245 -0.449 41.333 -0.544 c
-41.429 -0.632 41.568 -0.676 41.745 -0.676 c
-41.9 -0.676 42.017 -0.643 42.098 -0.573 c
-42.186 -0.507 42.23 -0.408 42.23 -0.279 c
-43.714 -1.043 -0.5 2.983 re
-43.744 2.734 m
-43.744 2.645 43.718 2.572 43.671 2.514 c
-43.631 2.462 43.56 2.44 43.465 2.44 c
-43.377 2.44 43.307 2.462 43.259 2.514 c
-43.219 2.572 43.201 2.639 43.201 2.72 c
-43.201 2.807 43.219 2.881 43.259 2.94 c
-43.307 2.998 43.377 3.028 43.465 3.028 c
-43.56 3.028 43.631 2.998 43.671 2.94 c
-43.718 2.881 43.744 2.811 43.744 2.734 c
-45.023 2.66 m
-45.023 1.94 l
-45.478 1.94 l
-45.478 1.544 l
-45.023 1.544 l
-45.023 -0.309 l
-45.023 -0.426 45.042 -0.515 45.082 -0.573 c
-45.119 -0.632 45.188 -0.661 45.287 -0.661 c
-45.346 -0.661 45.409 -0.654 45.478 -0.632 c
-45.478 -1.043 l
-45.361 -1.08 45.247 -1.103 45.14 -1.103 c
-44.942 -1.103 44.791 -1.037 44.685 -0.897 c
-44.585 -0.761 44.537 -0.566 44.537 -0.309 c
-44.537 1.544 l
-44.082 1.544 l
-44.082 1.94 l
-44.537 1.94 l
-44.537 2.66 l
-h
-45.79 0.588 m
-45.79 1.018 45.894 1.359 46.1 1.617 c
-46.313 1.87 46.592 1.999 46.937 1.999 c
-47.279 1.999 47.554 1.87 47.76 1.617 c
-47.974 1.371 48.088 1.037 48.099 0.617 c
-48.099 0.309 l
-48.099 -0.125 47.988 -0.467 47.776 -0.721 c
-47.569 -0.977 47.29 -1.103 46.937 -1.103 c
-46.592 -1.103 46.32 -0.981 46.114 -0.735 c
-45.908 -0.492 45.798 -0.158 45.79 0.264 c
-h
-46.276 0.309 m
-46.276 -0.008 46.335 -0.25 46.453 -0.426 c
-46.577 -0.595 46.739 -0.676 46.937 -0.676 c
-47.367 -0.676 47.591 -0.368 47.614 0.25 c
-47.614 0.588 l
-47.614 0.889 47.548 1.132 47.423 1.309 c
-47.305 1.484 47.143 1.573 46.937 1.573 c
-46.739 1.573 46.577 1.484 46.453 1.309 c
-46.335 1.132 46.276 0.889 46.276 0.588 c
-h
-49.771 1.484 m
-49.701 1.492 49.628 1.5 49.551 1.5 c
-49.293 1.5 49.117 1.359 49.021 1.087 c
-49.021 -1.043 l
-48.536 -1.043 l
-48.536 1.94 l
-49.006 1.94 l
-49.021 1.631 l
-49.146 1.874 49.33 1.999 49.565 1.999 c
-49.642 1.999 49.705 1.984 49.756 1.955 c
-h
-51.001 -0.235 m
-51.546 1.94 l
-52.06 1.94 l
-51.09 -1.47 l
-51.02 -1.723 50.918 -1.914 50.781 -2.043 c
-50.642 -2.179 50.491 -2.249 50.326 -2.249 c
-50.256 -2.249 50.172 -2.234 50.076 -2.205 c
-50.076 -1.793 l
-50.178 -1.808 l
-50.315 -1.808 50.421 -1.771 50.502 -1.706 c
-50.59 -1.635 50.656 -1.517 50.708 -1.353 c
-50.796 -1.014 l
-49.929 1.94 l
-50.457 1.94 l
-h
-52.138 -0.779 m
-52.138 -0.69 52.159 -0.617 52.211 -0.559 c
-52.269 -0.5 52.346 -0.47 52.446 -0.47 c
-52.553 -0.47 52.63 -0.5 52.681 -0.559 c
-52.74 -0.617 52.769 -0.69 52.769 -0.779 c
-52.769 -0.86 52.74 -0.926 52.681 -0.985 c
-52.63 -1.043 52.553 -1.073 52.446 -1.073 c
-52.346 -1.073 52.269 -1.043 52.211 -0.985 c
-52.159 -0.926 52.138 -0.86 52.138 -0.779 c
-f
-Q
- endstream endobj 47 0 obj <</BBox[698.93 463.095 712.887 458.964]/Group 83 0 R/Length 3851/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 701.5309 459.523 cm
-0 0 m
--0.088 -0.118 l
--0.345 -0.412 -0.713 -0.559 -1.19 -0.559 c
--1.631 -0.559 -1.977 -0.419 -2.219 -0.133 c
--2.466 0.162 -2.595 0.573 -2.601 1.103 c
--2.601 1.881 l
--2.601 2.447 -2.491 2.87 -2.263 3.146 c
--2.04 3.428 -1.701 3.572 -1.249 3.572 c
--0.867 3.572 -0.569 3.462 -0.353 3.248 c
--0.139 3.032 -0.022 2.726 0 2.337 c
--0.5 2.337 l
--0.521 2.579 -0.588 2.77 -0.706 2.911 c
--0.823 3.057 -1.007 3.131 -1.249 3.131 c
--1.536 3.131 -1.745 3.035 -1.881 2.851 c
--2.021 2.664 -2.087 2.366 -2.087 1.955 c
--2.087 1.132 l
--2.087 0.727 -2.013 0.419 -1.866 0.206 c
--1.712 -0.011 -1.484 -0.118 -1.19 -0.118 c
--0.926 -0.118 -0.72 -0.056 -0.573 0.073 c
--0.5 0.147 l
--0.5 1.072 l
--1.234 1.072 l
--1.234 1.5 l
-0 1.5 l
-h
-1.077 -0.5 -0.5 2.983 re
-1.106 3.277 m
-1.106 3.189 1.081 3.116 1.033 3.057 c
-0.992 3.006 0.923 2.984 0.827 2.984 c
-0.738 2.984 0.669 3.006 0.621 3.057 c
-0.58 3.116 0.563 3.183 0.563 3.263 c
-0.563 3.351 0.58 3.424 0.621 3.484 c
-0.669 3.542 0.738 3.572 0.827 3.572 c
-0.923 3.572 0.992 3.542 1.033 3.484 c
-1.081 3.424 1.106 3.355 1.106 3.277 c
-2.382 3.204 m
-2.382 2.484 l
-2.837 2.484 l
-2.837 2.087 l
-2.382 2.087 l
-2.382 0.235 l
-2.382 0.118 2.4 0.029 2.44 -0.029 c
-2.477 -0.088 2.547 -0.118 2.646 -0.118 c
-2.705 -0.118 2.768 -0.11 2.837 -0.088 c
-2.837 -0.5 l
-2.72 -0.536 2.606 -0.559 2.499 -0.559 c
-2.301 -0.559 2.15 -0.493 2.043 -0.353 c
-1.945 -0.217 1.896 -0.023 1.896 0.235 c
-1.896 2.087 l
-1.441 2.087 l
-1.441 2.484 l
-1.896 2.484 l
-1.896 3.204 l
-h
-5.039 -0.5 -0.501 2.983 re
-5.068 3.277 m
-5.068 3.189 5.042 3.116 4.994 3.057 c
-4.954 3.006 4.884 2.984 4.788 2.984 c
-4.7 2.984 4.63 3.006 4.582 3.057 c
-4.542 3.116 4.524 3.183 4.524 3.263 c
-4.524 3.351 4.542 3.424 4.582 3.484 c
-4.63 3.542 4.7 3.572 4.788 3.572 c
-4.884 3.572 4.954 3.542 4.994 3.484 c
-5.042 3.424 5.068 3.355 5.068 3.277 c
-7.151 0.264 m
-7.151 0.371 7.111 0.459 7.034 0.529 c
-6.953 0.606 6.802 0.694 6.578 0.794 c
-6.313 0.9 6.126 0.992 6.02 1.072 c
-5.91 1.151 5.832 1.238 5.785 1.338 c
-5.733 1.433 5.711 1.55 5.711 1.69 c
-5.711 1.933 5.799 2.135 5.976 2.293 c
-6.151 2.458 6.376 2.543 6.652 2.543 c
-6.945 2.543 7.181 2.454 7.357 2.278 c
-7.533 2.109 7.622 1.896 7.622 1.631 c
-7.136 1.631 l
-7.136 1.768 7.086 1.881 6.99 1.97 c
-6.901 2.065 6.787 2.117 6.652 2.117 c
-6.504 2.117 6.39 2.076 6.313 1.999 c
-6.232 1.929 6.196 1.83 6.196 1.705 c
-6.196 1.606 6.225 1.529 6.284 1.469 c
-6.342 1.411 6.483 1.33 6.71 1.234 c
-7.071 1.087 7.317 0.944 7.445 0.808 c
-7.581 0.68 7.651 0.507 7.651 0.293 c
-7.651 0.037 7.556 -0.169 7.372 -0.324 c
-7.196 -0.482 6.961 -0.559 6.666 -0.559 c
-6.35 -0.559 6.097 -0.47 5.902 -0.294 c
-5.714 -0.11 5.623 0.121 5.623 0.397 c
-6.107 0.397 l
-6.115 0.228 6.167 0.095 6.255 0 c
-6.35 -0.088 6.49 -0.133 6.666 -0.133 c
-6.82 -0.133 6.938 -0.1 7.019 -0.029 c
-7.107 0.037 7.151 0.135 7.151 0.264 c
-10.841 -0.5 m
-10.811 -0.434 10.789 -0.324 10.782 -0.177 c
-10.606 -0.434 10.385 -0.559 10.12 -0.559 c
-9.845 -0.559 9.628 -0.485 9.474 -0.339 c
-9.326 -0.183 9.253 0.033 9.253 0.309 c
-9.253 0.61 9.357 0.852 9.562 1.029 c
-9.768 1.213 10.051 1.308 10.415 1.308 c
-10.768 1.308 l
-10.768 1.631 l
-10.768 1.808 10.727 1.929 10.65 1.999 c
-10.569 2.076 10.452 2.117 10.297 2.117 c
-10.15 2.117 10.025 2.072 9.93 1.984 c
-9.841 1.896 9.797 1.785 9.797 1.66 c
-9.312 1.66 l
-9.312 1.808 9.357 1.947 9.444 2.087 c
-9.532 2.234 9.65 2.344 9.797 2.425 c
-9.951 2.502 10.124 2.543 10.311 2.543 c
-10.624 2.543 10.859 2.462 11.017 2.308 c
-11.171 2.161 11.252 1.94 11.252 1.646 c
-11.252 0.147 l
-11.26 -0.088 11.296 -0.291 11.356 -0.456 c
-11.356 -0.5 l
-h
-10.194 -0.118 m
-10.311 -0.118 10.422 -0.085 10.532 -0.015 c
-10.639 0.052 10.716 0.135 10.768 0.235 c
-10.768 0.941 l
-10.502 0.941 l
-10.267 0.941 10.08 0.889 9.945 0.794 c
-9.816 0.694 9.753 0.551 9.753 0.367 c
-9.753 0.198 9.783 0.077 9.841 0 c
-9.908 -0.081 10.025 -0.118 10.194 -0.118 c
-f
-Q
- endstream endobj 48 0 obj <</BBox[714.378 463.257 737.088 458.964]/Group 84 0 R/Length 5616/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 714.3777 460.6105 cm
-0 0 m
-0 0.489 0.081 0.852 0.25 1.087 c
-0.416 1.33 0.655 1.455 0.971 1.455 c
-1.206 1.455 1.397 1.353 1.544 1.147 c
-1.544 2.646 l
-2.338 2.646 l
-2.338 -1.587 l
-1.617 -1.587 l
-1.588 -1.278 l
-1.43 -1.525 1.224 -1.646 0.971 -1.646 c
-0.655 -1.646 0.416 -1.529 0.25 -1.294 c
-0.092 -1.051 0.008 -0.698 0 -0.235 c
-h
-0.78 -0.206 m
-0.78 -0.5 0.809 -0.706 0.867 -0.823 c
-0.934 -0.933 1.044 -0.985 1.191 -0.985 c
-1.345 -0.985 1.463 -0.918 1.544 -0.779 c
-1.544 0.573 l
-1.463 0.721 1.353 0.794 1.206 0.794 c
-1.059 0.794 0.948 0.735 0.882 0.617 c
-0.813 0.507 0.78 0.301 0.78 0 c
-h
-3.539 -1.587 -0.779 2.983 re
-2.716 2.161 m
-2.716 2.286 2.753 2.389 2.833 2.469 c
-2.911 2.547 3.014 2.587 3.142 2.587 c
-3.267 2.587 3.371 2.547 3.451 2.469 c
-3.528 2.389 3.568 2.286 3.568 2.161 c
-3.568 2.043 3.528 1.944 3.451 1.866 c
-3.381 1.786 3.278 1.749 3.142 1.749 c
-3.014 1.749 2.911 1.786 2.833 1.866 c
-2.753 1.944 2.716 2.043 2.716 2.161 c
-5.366 -0.794 m
-5.366 -0.727 5.329 -0.661 5.263 -0.603 c
-5.204 -0.544 5.064 -0.47 4.851 -0.382 c
-4.528 -0.246 4.308 -0.11 4.19 0.029 c
-4.072 0.166 4.013 0.338 4.013 0.544 c
-4.013 0.808 4.105 1.022 4.293 1.191 c
-4.476 1.367 4.726 1.455 5.042 1.455 c
-5.366 1.455 5.623 1.367 5.821 1.191 c
-6.016 1.022 6.115 0.798 6.115 0.515 c
-5.336 0.515 l
-5.336 0.757 5.233 0.882 5.027 0.882 c
-4.946 0.882 4.881 0.852 4.822 0.794 c
-4.77 0.742 4.748 0.676 4.748 0.588 c
-4.748 0.518 4.778 0.459 4.836 0.412 c
-4.896 0.36 5.031 0.287 5.248 0.191 c
-5.571 0.073 5.796 -0.058 5.924 -0.206 c
-6.06 -0.345 6.13 -0.529 6.13 -0.764 c
-6.13 -1.029 6.027 -1.246 5.821 -1.411 c
-5.623 -1.569 5.366 -1.646 5.042 -1.646 c
-4.815 -1.646 4.62 -1.602 4.454 -1.514 c
-4.285 -1.426 4.153 -1.309 4.057 -1.161 c
-3.969 -1.007 3.925 -0.838 3.925 -0.661 c
-4.66 -0.661 l
-4.667 -0.801 4.704 -0.904 4.763 -0.97 c
-4.822 -1.04 4.917 -1.073 5.057 -1.073 c
-5.263 -1.073 5.366 -0.981 5.366 -0.794 c
-7.354 2.132 m
-7.354 1.396 l
-7.751 1.396 l
-7.751 0.808 l
-7.354 0.808 l
-7.354 -0.676 l
-7.354 -0.794 7.369 -0.878 7.398 -0.926 c
-7.435 -0.966 7.5 -0.985 7.589 -0.985 c
-7.666 -0.985 7.728 -0.977 7.78 -0.956 c
-7.765 -1.573 l
-7.637 -1.621 7.493 -1.646 7.339 -1.646 c
-6.839 -1.646 6.582 -1.359 6.575 -0.779 c
-6.575 0.808 l
-6.236 0.808 l
-6.236 1.396 l
-6.575 1.396 l
-6.575 2.132 l
-h
-9.526 0.647 m
-9.276 0.661 l
-9.058 0.661 8.912 0.566 8.834 0.382 c
-8.834 -1.587 l
-8.056 -1.587 l
-8.056 1.396 l
-8.79 1.396 l
-8.82 1.073 l
-8.937 1.326 9.103 1.455 9.32 1.455 c
-9.407 1.455 9.482 1.44 9.54 1.411 c
-h
-10.628 -1.587 -0.779 2.983 re
-9.804 2.161 m
-9.804 2.286 9.841 2.389 9.922 2.469 c
-9.999 2.547 10.103 2.587 10.231 2.587 c
-10.356 2.587 10.459 2.547 10.54 2.469 c
-10.617 2.389 10.658 2.286 10.658 2.161 c
-10.658 2.043 10.617 1.944 10.54 1.866 c
-10.469 1.786 10.367 1.749 10.231 1.749 c
-10.103 1.749 9.999 1.786 9.922 1.866 c
-9.841 1.944 9.804 2.043 9.804 2.161 c
-13.469 -0.191 m
-13.469 -0.673 13.388 -1.036 13.233 -1.278 c
-13.075 -1.525 12.829 -1.646 12.499 -1.646 c
-12.241 -1.646 12.035 -1.529 11.881 -1.294 c
-11.851 -1.587 l
-11.132 -1.587 l
-11.132 2.646 l
-11.911 2.646 l
-11.911 1.147 l
-12.057 1.353 12.252 1.455 12.499 1.455 c
-12.829 1.455 13.072 1.33 13.218 1.087 c
-13.373 0.852 13.457 0.5 13.469 0.029 c
-h
-12.69 0 m
-12.69 0.312 12.653 0.522 12.586 0.632 c
-12.528 0.738 12.425 0.794 12.278 0.794 c
-12.109 0.794 11.988 0.721 11.911 0.573 c
-11.911 -0.779 l
-11.988 -0.926 12.109 -0.999 12.278 -0.999 c
-12.425 -0.999 12.528 -0.952 12.586 -0.852 c
-12.645 -0.757 12.678 -0.565 12.69 -0.279 c
-h
-15.217 -1.309 m
-15.059 -1.536 14.843 -1.646 14.571 -1.646 c
-14.295 -1.646 14.086 -1.554 13.939 -1.367 c
-13.799 -1.172 13.733 -0.897 13.733 -0.544 c
-13.733 1.396 l
-14.512 1.396 l
-14.512 -0.559 l
-14.512 -0.845 14.608 -0.985 14.806 -0.985 c
-14.982 -0.985 15.107 -0.912 15.188 -0.764 c
-15.188 1.396 l
-15.967 1.396 l
-15.967 -1.587 l
-15.247 -1.587 l
-h
-17.249 2.132 m
-17.249 1.396 l
-17.646 1.396 l
-17.646 0.808 l
-17.249 0.808 l
-17.249 -0.676 l
-17.249 -0.794 17.264 -0.878 17.294 -0.926 c
-17.33 -0.966 17.397 -0.985 17.485 -0.985 c
-17.562 -0.985 17.625 -0.977 17.676 -0.956 c
-17.661 -1.573 l
-17.533 -1.621 17.39 -1.646 17.235 -1.646 c
-16.736 -1.646 16.478 -1.359 16.47 -0.779 c
-16.47 0.808 l
-16.133 0.808 l
-16.133 1.396 l
-16.47 1.396 l
-16.47 2.132 l
-h
-19.161 -1.646 m
-18.756 -1.646 18.444 -1.529 18.22 -1.294 c
-18.003 -1.051 17.897 -0.706 17.897 -0.264 c
-17.897 -0.015 l
-17.897 0.455 17.999 0.816 18.205 1.073 c
-18.411 1.326 18.705 1.455 19.088 1.455 c
-19.458 1.455 19.738 1.33 19.925 1.087 c
-20.12 0.852 20.219 0.5 20.219 0.029 c
-20.219 -0.353 l
-18.676 -0.353 l
-18.683 -0.58 18.727 -0.746 18.808 -0.852 c
-18.896 -0.952 19.032 -0.999 19.219 -0.999 c
-19.473 -0.999 19.69 -0.908 19.867 -0.721 c
-20.175 -1.205 l
-20.075 -1.334 19.932 -1.44 19.749 -1.529 c
-19.572 -1.606 19.374 -1.646 19.161 -1.646 c
-18.676 0.191 m
-19.454 0.191 l
-19.454 0.264 l
-19.454 0.441 19.425 0.573 19.366 0.661 c
-19.308 0.757 19.208 0.808 19.073 0.808 c
-18.944 0.808 18.845 0.757 18.778 0.661 c
-18.72 0.563 18.683 0.405 18.676 0.191 c
-20.374 0 m
-20.374 0.489 20.454 0.852 20.623 1.087 c
-20.788 1.33 21.027 1.455 21.344 1.455 c
-21.579 1.455 21.77 1.353 21.916 1.147 c
-21.916 2.646 l
-22.71 2.646 l
-22.71 -1.587 l
-21.991 -1.587 l
-21.961 -1.278 l
-21.803 -1.525 21.597 -1.646 21.344 -1.646 c
-21.027 -1.646 20.788 -1.529 20.623 -1.294 c
-20.465 -1.051 20.381 -0.698 20.374 -0.235 c
-h
-21.153 -0.206 m
-21.153 -0.5 21.182 -0.706 21.241 -0.823 c
-21.307 -0.933 21.417 -0.985 21.564 -0.985 c
-21.718 -0.985 21.836 -0.918 21.916 -0.779 c
-21.916 0.573 l
-21.836 0.721 21.725 0.794 21.579 0.794 c
-21.432 0.794 21.322 0.735 21.255 0.617 c
-21.185 0.507 21.153 0.301 21.153 0 c
-h
-f
-Q
- endstream endobj 49 0 obj <</BBox[738.525 463.257 767.419 458.964]/Group 85 0 R/Length 6236/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 739.5979 459.7581 cm
-0 0 m
-0.573 2.248 l
-1.073 2.248 l
-0.177 -0.735 l
--0.176 -0.735 l
--1.073 2.248 l
--0.588 2.248 l
-h
-2.44 -0.794 m
-2.065 -0.794 1.783 -0.688 1.588 -0.47 c
-1.39 -0.246 1.294 0.081 1.294 0.515 c
-1.294 0.881 l
-1.294 1.323 1.386 1.668 1.573 1.926 c
-1.768 2.179 2.043 2.308 2.396 2.308 c
-2.738 2.308 2.992 2.194 3.16 1.97 c
-3.337 1.741 3.429 1.396 3.439 0.926 c
-3.439 0.617 l
-1.779 0.617 l
-1.779 0.544 l
-1.779 0.22 1.837 -0.015 1.955 -0.162 c
-2.072 -0.301 2.242 -0.368 2.469 -0.368 c
-2.616 -0.368 2.741 -0.345 2.851 -0.294 c
-2.959 -0.235 3.061 -0.147 3.16 -0.029 c
-3.41 -0.339 l
-3.204 -0.643 2.882 -0.794 2.44 -0.794 c
-2.396 1.882 m
-2.19 1.882 2.036 1.812 1.941 1.675 c
-1.841 1.536 1.787 1.323 1.779 1.029 c
-2.955 1.029 l
-2.955 1.103 l
-2.932 1.374 2.882 1.573 2.793 1.691 c
-2.705 1.816 2.572 1.882 2.396 1.882 c
-5.086 1.793 m
-5.016 1.801 4.943 1.808 4.866 1.808 c
-4.609 1.808 4.432 1.668 4.336 1.396 c
-4.336 -0.735 l
-3.851 -0.735 l
-3.851 2.248 l
-4.322 2.248 l
-4.336 1.94 l
-4.461 2.183 4.645 2.308 4.881 2.308 c
-4.958 2.308 5.02 2.293 5.072 2.263 c
-h
-6.898 0.029 m
-6.898 0.135 6.857 0.224 6.78 0.294 c
-6.699 0.371 6.549 0.459 6.325 0.559 c
-6.059 0.665 5.872 0.757 5.766 0.837 c
-5.656 0.915 5.579 1.003 5.531 1.103 c
-5.479 1.198 5.457 1.315 5.457 1.455 c
-5.457 1.698 5.546 1.899 5.722 2.057 c
-5.898 2.223 6.122 2.308 6.398 2.308 c
-6.692 2.308 6.927 2.219 7.104 2.043 c
-7.279 1.874 7.368 1.66 7.368 1.396 c
-6.883 1.396 l
-6.883 1.532 6.832 1.646 6.736 1.735 c
-6.648 1.83 6.533 1.882 6.398 1.882 c
-6.251 1.882 6.137 1.841 6.059 1.764 c
-5.979 1.694 5.943 1.595 5.943 1.469 c
-5.943 1.371 5.972 1.294 6.03 1.234 c
-6.089 1.176 6.229 1.095 6.456 0.999 c
-6.817 0.852 7.063 0.709 7.192 0.573 c
-7.327 0.445 7.397 0.272 7.397 0.058 c
-7.397 -0.198 7.302 -0.405 7.119 -0.559 c
-6.942 -0.717 6.707 -0.794 6.413 -0.794 c
-6.097 -0.794 5.843 -0.706 5.648 -0.53 c
-5.461 -0.345 5.369 -0.114 5.369 0.162 c
-5.854 0.162 l
-5.862 -0.008 5.913 -0.14 6.001 -0.235 c
-6.097 -0.324 6.236 -0.368 6.413 -0.368 c
-6.567 -0.368 6.685 -0.335 6.765 -0.264 c
-6.853 -0.198 6.898 -0.1 6.898 0.029 c
-8.386 -0.735 -0.5 2.983 re
-8.415 3.042 m
-8.415 2.954 8.39 2.881 8.342 2.822 c
-8.301 2.771 8.232 2.749 8.137 2.749 c
-8.048 2.749 7.978 2.771 7.93 2.822 c
-7.89 2.881 7.871 2.947 7.871 3.028 c
-7.871 3.116 7.89 3.189 7.93 3.248 c
-7.978 3.307 8.048 3.337 8.137 3.337 c
-8.232 3.337 8.301 3.307 8.342 3.248 c
-8.39 3.189 8.415 3.119 8.415 3.042 c
-8.956 0.897 m
-8.956 1.326 9.058 1.668 9.264 1.926 c
-9.477 2.179 9.756 2.308 10.102 2.308 c
-10.444 2.308 10.72 2.179 10.925 1.926 c
-11.138 1.679 11.252 1.345 11.263 0.926 c
-11.263 0.617 l
-11.263 0.183 11.153 -0.158 10.94 -0.412 c
-10.734 -0.669 10.454 -0.794 10.102 -0.794 c
-9.756 -0.794 9.485 -0.673 9.279 -0.426 c
-9.073 -0.183 8.962 0.151 8.956 0.573 c
-h
-9.44 0.617 m
-9.44 0.301 9.5 0.058 9.617 -0.118 c
-9.742 -0.287 9.903 -0.368 10.102 -0.368 c
-10.532 -0.368 10.756 -0.059 10.778 0.559 c
-10.778 0.897 l
-10.778 1.198 10.712 1.44 10.587 1.617 c
-10.47 1.793 10.308 1.882 10.102 1.882 c
-9.903 1.882 9.742 1.793 9.617 1.617 c
-9.5 1.44 9.44 1.198 9.44 0.897 c
-h
-12.16 2.248 m
-12.174 1.926 l
-12.359 2.179 12.601 2.308 12.895 2.308 c
-13.424 2.308 13.693 1.955 13.704 1.249 c
-13.704 -0.735 l
-13.218 -0.735 l
-13.218 1.22 l
-13.218 1.455 13.178 1.621 13.101 1.72 c
-13.02 1.816 12.902 1.866 12.748 1.866 c
-12.63 1.866 12.52 1.826 12.424 1.749 c
-12.326 1.668 12.248 1.562 12.189 1.425 c
-12.189 -0.735 l
-11.704 -0.735 l
-11.704 2.248 l
-h
-16.488 -0.368 m
-16.654 -0.368 16.787 -0.32 16.885 -0.221 c
-16.981 -0.125 17.036 0.018 17.047 0.206 c
-17.503 0.206 l
-17.492 -0.081 17.389 -0.32 17.194 -0.515 c
-17.007 -0.702 16.772 -0.794 16.488 -0.794 c
-16.125 -0.794 15.846 -0.676 15.651 -0.441 c
-15.453 -0.206 15.357 0.139 15.357 0.602 c
-15.357 0.926 l
-15.357 1.374 15.449 1.72 15.636 1.955 c
-15.831 2.19 16.114 2.308 16.488 2.308 c
-16.79 2.308 17.033 2.209 17.209 2.013 c
-17.392 1.816 17.492 1.55 17.503 1.22 c
-17.047 1.22 l
-17.026 1.444 16.966 1.61 16.871 1.72 c
-16.783 1.826 16.654 1.882 16.488 1.882 c
-16.272 1.882 16.11 1.808 16.004 1.66 c
-15.904 1.521 15.85 1.294 15.842 0.97 c
-15.842 0.588 l
-15.842 0.235 15.89 -0.015 15.989 -0.162 c
-16.095 -0.301 16.261 -0.368 16.488 -0.368 c
-17.793 0.897 m
-17.793 1.326 17.897 1.668 18.102 1.926 c
-18.315 2.179 18.595 2.308 18.94 2.308 c
-19.281 2.308 19.557 2.179 19.763 1.926 c
-19.976 1.679 20.09 1.345 20.101 0.926 c
-20.101 0.617 l
-20.101 0.183 19.991 -0.158 19.778 -0.412 c
-19.572 -0.669 19.293 -0.794 18.94 -0.794 c
-18.595 -0.794 18.323 -0.673 18.117 -0.426 c
-17.911 -0.183 17.801 0.151 17.793 0.573 c
-h
-18.279 0.617 m
-18.279 0.301 18.337 0.058 18.455 -0.118 c
-18.58 -0.287 18.742 -0.368 18.94 -0.368 c
-19.37 -0.368 19.594 -0.059 19.616 0.559 c
-19.616 0.897 l
-19.616 1.198 19.55 1.44 19.425 1.617 c
-19.308 1.793 19.146 1.882 18.94 1.882 c
-18.742 1.882 18.58 1.793 18.455 1.617 c
-18.337 1.44 18.279 1.198 18.279 0.897 c
-h
-20.997 2.248 m
-21.012 1.926 l
-21.196 2.179 21.439 2.308 21.733 2.308 c
-22.262 2.308 22.53 1.955 22.541 1.249 c
-22.541 -0.735 l
-22.056 -0.735 l
-22.056 1.22 l
-22.056 1.455 22.015 1.621 21.938 1.72 c
-21.857 1.816 21.74 1.866 21.585 1.866 c
-21.468 1.866 21.358 1.826 21.263 1.749 c
-21.163 1.668 21.086 1.562 21.027 1.425 c
-21.027 -0.735 l
-20.542 -0.735 l
-20.542 2.248 l
-h
-24.327 1.793 m
-24.257 1.801 24.184 1.808 24.106 1.808 c
-23.85 1.808 23.673 1.668 23.578 1.396 c
-23.578 -0.735 l
-23.092 -0.735 l
-23.092 2.248 l
-23.563 2.248 l
-23.578 1.94 l
-23.702 2.183 23.886 2.308 24.122 2.308 c
-24.199 2.308 24.261 2.293 24.313 2.263 c
-h
-24.544 0.897 m
-24.544 1.326 24.646 1.668 24.852 1.926 c
-25.066 2.179 25.345 2.308 25.691 2.308 c
-26.032 2.308 26.308 2.179 26.514 1.926 c
-26.726 1.679 26.84 1.345 26.852 0.926 c
-26.852 0.617 l
-26.852 0.183 26.742 -0.158 26.528 -0.412 c
-26.323 -0.669 26.043 -0.794 25.691 -0.794 c
-25.345 -0.794 25.073 -0.673 24.868 -0.426 c
-24.662 -0.183 24.551 0.151 24.544 0.573 c
-h
-25.029 0.617 m
-25.029 0.301 25.088 0.058 25.205 -0.118 c
-25.33 -0.287 25.492 -0.368 25.691 -0.368 c
-26.121 -0.368 26.345 -0.059 26.366 0.559 c
-26.366 0.897 l
-26.366 1.198 26.3 1.44 26.175 1.617 c
-26.058 1.793 25.896 1.882 25.691 1.882 c
-25.492 1.882 25.33 1.793 25.205 1.617 c
-25.088 1.44 25.029 1.198 25.029 0.897 c
-h
-27.821 -0.735 -0.5 4.233 re
-f
-Q
- endstream endobj 50 0 obj <</BBox[701.664 456.672 764.976 451.232]/Group 86 0 R/Length 14524/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 703.1923 453.2021 cm
-0 0 m
-0 0.106 -0.04 0.195 -0.118 0.264 c
--0.198 0.341 -0.349 0.43 -0.574 0.53 c
--0.838 0.636 -1.025 0.728 -1.132 0.808 c
--1.242 0.886 -1.319 0.974 -1.367 1.073 c
--1.419 1.168 -1.44 1.286 -1.44 1.426 c
--1.44 1.669 -1.353 1.87 -1.176 2.028 c
--1 2.194 -0.775 2.278 -0.5 2.278 c
--0.206 2.278 0.029 2.19 0.206 2.014 c
-0.382 1.845 0.47 1.631 0.47 1.367 c
--0.015 1.367 l
--0.015 1.503 -0.066 1.617 -0.162 1.706 c
--0.25 1.801 -0.364 1.852 -0.5 1.852 c
--0.647 1.852 -0.761 1.812 -0.838 1.735 c
--0.919 1.665 -0.956 1.565 -0.956 1.44 c
--0.956 1.341 -0.926 1.264 -0.867 1.205 c
--0.809 1.147 -0.669 1.066 -0.441 0.97 c
--0.081 0.823 0.166 0.68 0.294 0.544 c
-0.43 0.416 0.5 0.243 0.5 0.029 c
-0.5 -0.228 0.405 -0.434 0.22 -0.588 c
-0.044 -0.746 -0.191 -0.823 -0.485 -0.823 c
--0.802 -0.823 -1.055 -0.735 -1.249 -0.559 c
--1.436 -0.374 -1.529 -0.143 -1.529 0.133 c
--1.044 0.133 l
--1.037 -0.037 -0.985 -0.169 -0.896 -0.264 c
--0.802 -0.353 -0.661 -0.397 -0.485 -0.397 c
--0.331 -0.397 -0.214 -0.364 -0.133 -0.294 c
--0.044 -0.228 0 -0.129 0 0 c
-1.768 0.044 m
-2.311 2.219 l
-2.826 2.219 l
-1.856 -1.191 l
-1.786 -1.444 1.683 -1.635 1.547 -1.764 c
-1.407 -1.899 1.257 -1.97 1.091 -1.97 c
-1.022 -1.97 0.937 -1.955 0.841 -1.926 c
-0.841 -1.514 l
-0.945 -1.529 l
-1.08 -1.529 1.187 -1.492 1.268 -1.426 c
-1.356 -1.356 1.422 -1.238 1.473 -1.073 c
-1.562 -0.735 l
-0.694 2.219 l
-1.224 2.219 l
-h
-4.59 0 m
-4.59 0.106 4.549 0.195 4.472 0.264 c
-4.391 0.341 4.241 0.43 4.016 0.53 c
-3.752 0.636 3.564 0.728 3.458 0.808 c
-3.347 0.886 3.27 0.974 3.223 1.073 c
-3.171 1.168 3.15 1.286 3.15 1.426 c
-3.15 1.669 3.237 1.87 3.414 2.028 c
-3.59 2.194 3.815 2.278 4.09 2.278 c
-4.384 2.278 4.619 2.19 4.796 2.014 c
-4.972 1.845 5.06 1.631 5.06 1.367 c
-4.575 1.367 l
-4.575 1.503 4.523 1.617 4.428 1.706 c
-4.34 1.801 4.226 1.852 4.09 1.852 c
-3.943 1.852 3.829 1.812 3.752 1.735 c
-3.671 1.665 3.634 1.565 3.634 1.44 c
-3.634 1.341 3.663 1.264 3.723 1.205 c
-3.781 1.147 3.921 1.066 4.149 0.97 c
-4.509 0.823 4.755 0.68 4.883 0.544 c
-5.02 0.416 5.089 0.243 5.089 0.029 c
-5.089 -0.228 4.993 -0.434 4.81 -0.588 c
-4.634 -0.746 4.399 -0.823 4.104 -0.823 c
-3.788 -0.823 3.535 -0.735 3.341 -0.559 c
-3.152 -0.374 3.061 -0.143 3.061 0.133 c
-3.546 0.133 l
-3.553 -0.037 3.605 -0.169 3.693 -0.264 c
-3.788 -0.353 3.929 -0.397 4.104 -0.397 c
-4.259 -0.397 4.376 -0.364 4.457 -0.294 c
-4.546 -0.228 4.59 -0.129 4.59 0 c
-6.181 2.94 m
-6.181 2.219 l
-6.637 2.219 l
-6.637 1.823 l
-6.181 1.823 l
-6.181 -0.029 l
-6.181 -0.147 6.2 -0.235 6.24 -0.294 c
-6.277 -0.353 6.346 -0.382 6.445 -0.382 c
-6.504 -0.382 6.566 -0.374 6.637 -0.353 c
-6.637 -0.764 l
-6.519 -0.801 6.405 -0.823 6.298 -0.823 c
-6.1 -0.823 5.949 -0.757 5.843 -0.617 c
-5.743 -0.482 5.696 -0.287 5.696 -0.029 c
-5.696 1.823 l
-5.24 1.823 l
-5.24 2.219 l
-5.696 2.219 l
-5.696 2.94 l
-h
-8.158 -0.823 m
-7.783 -0.823 7.501 -0.717 7.306 -0.5 c
-7.107 -0.276 7.011 0.052 7.011 0.485 c
-7.011 0.852 l
-7.011 1.294 7.104 1.639 7.291 1.897 c
-7.486 2.15 7.761 2.278 8.114 2.278 c
-8.455 2.278 8.709 2.165 8.878 1.941 c
-9.055 1.712 9.147 1.367 9.157 0.897 c
-9.157 0.588 l
-7.497 0.588 l
-7.497 0.515 l
-7.497 0.191 7.555 -0.044 7.673 -0.191 c
-7.79 -0.33 7.96 -0.397 8.187 -0.397 c
-8.334 -0.397 8.459 -0.374 8.569 -0.324 c
-8.676 -0.264 8.779 -0.176 8.878 -0.058 c
-9.128 -0.368 l
-8.922 -0.673 8.598 -0.823 8.158 -0.823 c
-8.114 1.852 m
-7.908 1.852 7.754 1.783 7.658 1.646 c
-7.559 1.507 7.503 1.294 7.497 1 c
-8.673 1 l
-8.673 1.073 l
-8.65 1.345 8.598 1.544 8.511 1.661 c
-8.422 1.786 8.29 1.852 8.114 1.852 c
-10.025 2.219 m
-10.04 1.941 l
-10.216 2.165 10.454 2.278 10.759 2.278 c
-11.09 2.278 11.322 2.132 11.451 1.837 c
-11.634 2.132 11.895 2.278 12.23 2.278 c
-12.788 2.278 13.071 1.933 13.082 1.249 c
-13.082 -0.764 l
-12.597 -0.764 l
-12.597 1.205 l
-12.597 1.419 12.557 1.577 12.48 1.675 c
-12.399 1.783 12.266 1.837 12.083 1.837 c
-11.935 1.837 11.818 1.779 11.73 1.661 c
-11.642 1.551 11.586 1.411 11.568 1.235 c
-11.568 -0.764 l
-11.083 -0.764 l
-11.083 1.22 l
-11.072 1.631 10.899 1.837 10.568 1.837 c
-10.323 1.837 10.15 1.712 10.054 1.47 c
-10.054 -0.764 l
-9.569 -0.764 l
-9.569 2.219 l
-h
-13.56 -0.5 m
-13.56 -0.411 13.581 -0.338 13.633 -0.279 c
-13.692 -0.22 13.77 -0.191 13.868 -0.191 c
-13.975 -0.191 14.052 -0.22 14.104 -0.279 c
-14.163 -0.338 14.192 -0.411 14.192 -0.5 c
-14.192 -0.58 14.163 -0.646 14.104 -0.706 c
-14.052 -0.764 13.975 -0.794 13.868 -0.794 c
-13.77 -0.794 13.692 -0.764 13.633 -0.706 c
-13.581 -0.646 13.56 -0.58 13.56 -0.5 c
-17.242 1.235 m
-18.05 3.248 l
-18.624 3.248 l
-17.492 0.735 l
-17.492 -0.764 l
-16.978 -0.764 l
-16.978 0.735 l
-15.846 3.248 l
-16.419 3.248 l
-h
-18.624 0.867 m
-18.624 1.297 18.726 1.639 18.932 1.897 c
-19.145 2.15 19.424 2.278 19.771 2.278 c
-20.112 2.278 20.388 2.15 20.593 1.897 c
-20.806 1.65 20.92 1.316 20.931 0.897 c
-20.931 0.588 l
-20.931 0.154 20.821 -0.187 20.608 -0.441 c
-20.402 -0.698 20.122 -0.823 19.771 -0.823 c
-19.424 -0.823 19.153 -0.702 18.947 -0.455 c
-18.741 -0.213 18.631 0.121 18.624 0.544 c
-h
-19.108 0.588 m
-19.108 0.272 19.168 0.029 19.285 -0.147 c
-19.41 -0.316 19.572 -0.397 19.771 -0.397 c
-20.201 -0.397 20.424 -0.088 20.446 0.53 c
-20.446 0.867 l
-20.446 1.168 20.38 1.411 20.255 1.588 c
-20.138 1.764 19.976 1.852 19.771 1.852 c
-19.572 1.852 19.41 1.764 19.285 1.588 c
-19.168 1.411 19.108 1.168 19.108 0.867 c
-h
-22.886 -0.5 m
-22.728 -0.717 22.493 -0.823 22.181 -0.823 c
-21.916 -0.823 21.71 -0.731 21.564 -0.544 c
-21.423 -0.36 21.358 -0.085 21.358 0.279 c
-21.358 2.219 l
-21.843 2.219 l
-21.843 0.309 l
-21.843 -0.154 21.982 -0.382 22.269 -0.382 c
-22.563 -0.382 22.761 -0.25 22.871 0.015 c
-22.871 2.219 l
-23.372 2.219 l
-23.372 -0.764 l
-22.901 -0.764 l
-h
-26.157 -0.397 m
-26.322 -0.397 26.455 -0.349 26.553 -0.25 c
-26.649 -0.154 26.705 -0.011 26.715 0.177 c
-27.171 0.177 l
-27.16 -0.11 27.058 -0.349 26.863 -0.544 c
-26.675 -0.731 26.439 -0.823 26.157 -0.823 c
-25.793 -0.823 25.514 -0.706 25.319 -0.47 c
-25.121 -0.235 25.025 0.11 25.025 0.573 c
-25.025 0.897 l
-25.025 1.345 25.117 1.691 25.304 1.926 c
-25.499 2.161 25.782 2.278 26.157 2.278 c
-26.458 2.278 26.701 2.18 26.877 1.984 c
-27.061 1.786 27.16 1.521 27.171 1.191 c
-26.715 1.191 l
-26.693 1.415 26.634 1.58 26.539 1.691 c
-26.451 1.797 26.322 1.852 26.157 1.852 c
-25.94 1.852 25.778 1.779 25.672 1.631 c
-25.572 1.492 25.518 1.264 25.51 0.941 c
-25.51 0.559 l
-25.51 0.206 25.558 -0.044 25.657 -0.191 c
-25.764 -0.33 25.929 -0.397 26.157 -0.397 c
-29.097 -0.764 m
-29.067 -0.698 29.045 -0.588 29.038 -0.441 c
-28.862 -0.698 28.641 -0.823 28.376 -0.823 c
-28.101 -0.823 27.884 -0.75 27.729 -0.603 c
-27.583 -0.448 27.509 -0.231 27.509 0.044 c
-27.509 0.345 27.612 0.588 27.818 0.765 c
-28.024 0.948 28.307 1.043 28.67 1.043 c
-29.023 1.043 l
-29.023 1.367 l
-29.023 1.544 28.982 1.665 28.905 1.735 c
-28.824 1.812 28.708 1.852 28.552 1.852 c
-28.406 1.852 28.281 1.808 28.185 1.72 c
-28.097 1.631 28.053 1.521 28.053 1.396 c
-27.568 1.396 l
-27.568 1.544 27.612 1.683 27.7 1.823 c
-27.789 1.97 27.906 2.08 28.053 2.161 c
-28.207 2.238 28.38 2.278 28.567 2.278 c
-28.88 2.278 29.115 2.198 29.273 2.043 c
-29.427 1.897 29.508 1.675 29.508 1.382 c
-29.508 -0.118 l
-29.516 -0.353 29.552 -0.555 29.611 -0.721 c
-29.611 -0.764 l
-h
-28.45 -0.382 m
-28.567 -0.382 28.677 -0.349 28.788 -0.279 c
-28.895 -0.213 28.972 -0.129 29.023 -0.029 c
-29.023 0.676 l
-28.758 0.676 l
-28.523 0.676 28.336 0.625 28.2 0.53 c
-28.072 0.43 28.009 0.287 28.009 0.103 c
-28.009 -0.066 28.039 -0.187 28.097 -0.264 c
-28.163 -0.345 28.281 -0.382 28.45 -0.382 c
-30.545 2.219 m
-30.559 1.897 l
-30.743 2.15 30.985 2.278 31.28 2.278 c
-31.808 2.278 32.077 1.926 32.088 1.22 c
-32.088 -0.764 l
-31.603 -0.764 l
-31.603 1.191 l
-31.603 1.426 31.563 1.592 31.486 1.691 c
-31.405 1.786 31.287 1.837 31.133 1.837 c
-31.015 1.837 30.904 1.797 30.809 1.72 c
-30.709 1.639 30.632 1.532 30.574 1.396 c
-30.574 -0.764 l
-30.089 -0.764 l
-30.089 2.219 l
-h
-34.329 1.911 m
-34.513 2.153 34.748 2.278 35.035 2.278 c
-35.565 2.278 35.833 1.926 35.843 1.22 c
-35.843 -0.764 l
-35.359 -0.764 l
-35.359 1.191 l
-35.359 1.426 35.318 1.592 35.241 1.691 c
-35.16 1.786 35.043 1.837 34.888 1.837 c
-34.771 1.837 34.661 1.797 34.565 1.72 c
-34.466 1.639 34.389 1.532 34.329 1.396 c
-34.329 -0.764 l
-33.844 -0.764 l
-33.844 3.469 l
-34.329 3.469 l
-h
-37.913 -0.764 m
-37.883 -0.698 37.861 -0.588 37.853 -0.441 c
-37.678 -0.698 37.456 -0.823 37.192 -0.823 c
-36.917 -0.823 36.7 -0.75 36.546 -0.603 c
-36.398 -0.448 36.325 -0.231 36.325 0.044 c
-36.325 0.345 36.428 0.588 36.633 0.765 c
-36.839 0.948 37.123 1.043 37.487 1.043 c
-37.839 1.043 l
-37.839 1.367 l
-37.839 1.544 37.799 1.665 37.722 1.735 c
-37.641 1.812 37.523 1.852 37.369 1.852 c
-37.221 1.852 37.096 1.808 37.001 1.72 c
-36.913 1.631 36.869 1.521 36.869 1.396 c
-36.384 1.396 l
-36.384 1.544 36.428 1.683 36.516 1.823 c
-36.604 1.97 36.722 2.08 36.869 2.161 c
-37.023 2.238 37.196 2.278 37.383 2.278 c
-37.695 2.278 37.931 2.198 38.089 2.043 c
-38.243 1.897 38.324 1.675 38.324 1.382 c
-38.324 -0.118 l
-38.331 -0.353 38.368 -0.555 38.427 -0.721 c
-38.427 -0.764 l
-h
-37.266 -0.382 m
-37.383 -0.382 37.493 -0.349 37.604 -0.279 c
-37.711 -0.213 37.788 -0.129 37.839 -0.029 c
-37.839 0.676 l
-37.574 0.676 l
-37.339 0.676 37.152 0.625 37.016 0.53 c
-36.887 0.43 36.824 0.287 36.824 0.103 c
-36.824 -0.066 36.854 -0.187 36.913 -0.264 c
-36.979 -0.345 37.096 -0.382 37.266 -0.382 c
-39.702 -0.029 m
-40.275 2.219 l
-40.775 2.219 l
-39.878 -0.764 l
-39.526 -0.764 l
-38.629 2.219 l
-39.114 2.219 l
-h
-42.146 -0.823 m
-41.771 -0.823 41.488 -0.717 41.293 -0.5 c
-41.094 -0.276 40.999 0.052 40.999 0.485 c
-40.999 0.852 l
-40.999 1.294 41.091 1.639 41.279 1.897 c
-41.473 2.15 41.749 2.278 42.102 2.278 c
-42.443 2.278 42.697 2.165 42.866 1.941 c
-43.043 1.712 43.134 1.367 43.145 0.897 c
-43.145 0.588 l
-41.485 0.588 l
-41.485 0.515 l
-41.485 0.191 41.543 -0.044 41.661 -0.191 c
-41.778 -0.33 41.948 -0.397 42.175 -0.397 c
-42.322 -0.397 42.447 -0.374 42.557 -0.324 c
-42.664 -0.264 42.767 -0.176 42.866 -0.058 c
-43.116 -0.368 l
-42.91 -0.673 42.586 -0.823 42.146 -0.823 c
-42.102 1.852 m
-41.896 1.852 41.742 1.783 41.646 1.646 c
-41.547 1.507 41.491 1.294 41.485 1 c
-42.661 1 l
-42.661 1.073 l
-42.638 1.345 42.586 1.544 42.499 1.661 c
-42.41 1.786 42.278 1.852 42.102 1.852 c
-46.287 -0.764 m
-46.258 -0.698 46.235 -0.588 46.228 -0.441 c
-46.052 -0.698 45.832 -0.823 45.567 -0.823 c
-45.291 -0.823 45.075 -0.75 44.92 -0.603 c
-44.774 -0.448 44.7 -0.231 44.7 0.044 c
-44.7 0.345 44.803 0.588 45.009 0.765 c
-45.214 0.948 45.497 1.043 45.861 1.043 c
-46.214 1.043 l
-46.214 1.367 l
-46.214 1.544 46.173 1.665 46.096 1.735 c
-46.015 1.812 45.898 1.852 45.743 1.852 c
-45.597 1.852 45.472 1.808 45.376 1.72 c
-45.287 1.631 45.244 1.521 45.244 1.396 c
-44.758 1.396 l
-44.758 1.544 44.803 1.683 44.891 1.823 c
-44.979 1.97 45.096 2.08 45.244 2.161 c
-45.398 2.238 45.57 2.278 45.758 2.278 c
-46.071 2.278 46.306 2.198 46.463 2.043 c
-46.618 1.897 46.698 1.675 46.698 1.382 c
-46.698 -0.118 l
-46.706 -0.353 46.743 -0.555 46.802 -0.721 c
-46.802 -0.764 l
-h
-45.641 -0.382 m
-45.758 -0.382 45.869 -0.349 45.979 -0.279 c
-46.085 -0.213 46.162 -0.129 46.214 -0.029 c
-46.214 0.676 l
-45.949 0.676 l
-45.714 0.676 45.526 0.625 45.391 0.53 c
-45.262 0.43 45.2 0.287 45.2 0.103 c
-45.2 -0.066 45.229 -0.187 45.287 -0.264 c
-45.354 -0.345 45.472 -0.382 45.641 -0.382 c
-48.72 0 m
-48.72 0.106 48.68 0.195 48.602 0.264 c
-48.521 0.341 48.371 0.43 48.147 0.53 c
-47.882 0.636 47.695 0.728 47.588 0.808 c
-47.478 0.886 47.401 0.974 47.353 1.073 c
-47.301 1.168 47.28 1.286 47.28 1.426 c
-47.28 1.669 47.367 1.87 47.544 2.028 c
-47.72 2.194 47.945 2.278 48.22 2.278 c
-48.514 2.278 48.749 2.19 48.926 2.014 c
-49.102 1.845 49.19 1.631 49.19 1.367 c
-48.705 1.367 l
-48.705 1.503 48.654 1.617 48.558 1.706 c
-48.47 1.801 48.356 1.852 48.22 1.852 c
-48.073 1.852 47.959 1.812 47.882 1.735 c
-47.801 1.665 47.764 1.565 47.764 1.44 c
-47.764 1.341 47.794 1.264 47.853 1.205 c
-47.912 1.147 48.051 1.066 48.279 0.97 c
-48.639 0.823 48.886 0.68 49.013 0.544 c
-49.15 0.416 49.219 0.243 49.219 0.029 c
-49.219 -0.228 49.124 -0.434 48.94 -0.588 c
-48.764 -0.746 48.529 -0.823 48.235 -0.823 c
-47.918 -0.823 47.665 -0.735 47.471 -0.559 c
-47.284 -0.374 47.191 -0.143 47.191 0.133 c
-47.677 0.133 l
-47.683 -0.037 47.735 -0.169 47.823 -0.264 c
-47.918 -0.353 48.059 -0.397 48.235 -0.397 c
-48.389 -0.397 48.506 -0.364 48.587 -0.294 c
-48.676 -0.228 48.72 -0.129 48.72 0 c
-51.336 2.219 m
-51.351 1.941 l
-51.527 2.165 51.766 2.278 52.071 2.278 c
-52.402 2.278 52.633 2.132 52.762 1.837 c
-52.946 2.132 53.206 2.278 53.541 2.278 c
-54.1 2.278 54.382 1.933 54.394 1.249 c
-54.394 -0.764 l
-53.909 -0.764 l
-53.909 1.205 l
-53.909 1.419 53.869 1.577 53.792 1.675 c
-53.711 1.783 53.578 1.837 53.394 1.837 c
-53.247 1.837 53.129 1.779 53.042 1.661 c
-52.953 1.551 52.898 1.411 52.88 1.235 c
-52.88 -0.764 l
-52.394 -0.764 l
-52.394 1.22 l
-52.383 1.631 52.211 1.837 51.88 1.837 c
-51.634 1.837 51.461 1.712 51.365 1.47 c
-51.365 -0.764 l
-50.881 -0.764 l
-50.881 2.219 l
-h
-56.371 -0.764 m
-56.341 -0.698 56.319 -0.588 56.312 -0.441 c
-56.136 -0.698 55.915 -0.823 55.65 -0.823 c
-55.375 -0.823 55.158 -0.75 55.004 -0.603 c
-54.856 -0.448 54.783 -0.231 54.783 0.044 c
-54.783 0.345 54.887 0.588 55.092 0.765 c
-55.298 0.948 55.581 1.043 55.945 1.043 c
-56.298 1.043 l
-56.298 1.367 l
-56.298 1.544 56.257 1.665 56.18 1.735 c
-56.099 1.812 55.982 1.852 55.827 1.852 c
-55.68 1.852 55.555 1.808 55.459 1.72 c
-55.371 1.631 55.327 1.521 55.327 1.396 c
-54.842 1.396 l
-54.842 1.544 54.887 1.683 54.974 1.823 c
-55.062 1.97 55.18 2.08 55.327 2.161 c
-55.481 2.238 55.654 2.278 55.841 2.278 c
-56.154 2.278 56.389 2.198 56.547 2.043 c
-56.701 1.897 56.782 1.675 56.782 1.382 c
-56.782 -0.118 l
-56.79 -0.353 56.826 -0.555 56.886 -0.721 c
-56.886 -0.764 l
-h
-55.724 -0.382 m
-55.841 -0.382 55.951 -0.349 56.062 -0.279 c
-56.169 -0.213 56.246 -0.129 56.298 -0.029 c
-56.298 0.676 l
-56.032 0.676 l
-55.797 0.676 55.61 0.625 55.474 0.53 c
-55.346 0.43 55.284 0.287 55.284 0.103 c
-55.284 -0.066 55.313 -0.187 55.371 -0.264 c
-55.438 -0.345 55.555 -0.382 55.724 -0.382 c
-57.819 2.219 m
-57.833 1.897 l
-58.017 2.15 58.26 2.278 58.554 2.278 c
-59.083 2.278 59.351 1.926 59.362 1.22 c
-59.362 -0.764 l
-58.877 -0.764 l
-58.877 1.191 l
-58.877 1.426 58.837 1.592 58.76 1.691 c
-58.679 1.786 58.561 1.837 58.407 1.837 c
-58.289 1.837 58.179 1.797 58.083 1.72 c
-57.984 1.639 57.907 1.532 57.848 1.396 c
-57.848 -0.764 l
-57.363 -0.764 l
-57.363 2.219 l
-h
-60.726 0.044 m
-61.269 2.219 l
-61.784 2.219 l
-60.813 -1.191 l
-60.744 -1.444 60.641 -1.635 60.505 -1.764 c
-60.365 -1.899 60.215 -1.97 60.049 -1.97 c
-59.98 -1.97 59.895 -1.955 59.799 -1.926 c
-59.799 -1.514 l
-59.903 -1.529 l
-60.038 -1.529 60.144 -1.492 60.225 -1.426 c
-60.314 -1.356 60.379 -1.238 60.431 -1.073 c
-60.52 -0.735 l
-59.652 2.219 l
-60.182 2.219 l
-h
-f
-Q
- endstream endobj 51 0 obj <</BBox[623.858 230.42 661.638 225.011]/Group 87 0 R/Length 8912/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 624.3423 228.8612 cm
-0 0 m
-0.184 0.243 0.42 0.368 0.706 0.368 c
-1.235 0.368 1.503 0.015 1.515 -0.691 c
-1.515 -2.675 l
-1.029 -2.675 l
-1.029 -0.72 l
-1.029 -0.484 0.989 -0.319 0.912 -0.22 c
-0.831 -0.124 0.713 -0.073 0.559 -0.073 c
-0.441 -0.073 0.331 -0.114 0.235 -0.191 c
-0.136 -0.272 0.059 -0.378 0 -0.514 c
-0 -2.675 l
--0.484 -2.675 l
--0.484 1.559 l
-0 1.559 l
-h
-3.583 -2.675 m
-3.554 -2.609 3.532 -2.499 3.525 -2.352 c
-3.348 -2.609 3.128 -2.734 2.863 -2.734 c
-2.587 -2.734 2.371 -2.66 2.216 -2.513 c
-2.07 -2.358 1.996 -2.142 1.996 -1.866 c
-1.996 -1.565 2.099 -1.323 2.305 -1.146 c
-2.51 -0.962 2.793 -0.866 3.157 -0.866 c
-3.51 -0.866 l
-3.51 -0.544 l
-3.51 -0.367 3.47 -0.246 3.392 -0.176 c
-3.311 -0.099 3.194 -0.058 3.04 -0.058 c
-2.893 -0.058 2.768 -0.103 2.672 -0.191 c
-2.584 -0.278 2.54 -0.389 2.54 -0.514 c
-2.055 -0.514 l
-2.055 -0.367 2.099 -0.228 2.187 -0.087 c
-2.275 0.059 2.392 0.169 2.54 0.25 c
-2.694 0.327 2.866 0.368 3.055 0.368 c
-3.367 0.368 3.602 0.287 3.76 0.133 c
-3.914 -0.014 3.995 -0.235 3.995 -0.529 c
-3.995 -2.028 l
-4.002 -2.263 4.039 -2.466 4.098 -2.63 c
-4.098 -2.675 l
-h
-2.937 -2.293 m
-3.055 -2.293 3.165 -2.26 3.275 -2.19 c
-3.381 -2.123 3.458 -2.04 3.51 -1.94 c
-3.51 -1.234 l
-3.246 -1.234 l
-3.01 -1.234 2.822 -1.286 2.687 -1.381 c
-2.558 -1.481 2.496 -1.624 2.496 -1.807 c
-2.496 -1.977 2.525 -2.098 2.584 -2.175 c
-2.65 -2.256 2.768 -2.293 2.937 -2.293 c
-5.604 -2.308 m
-5.77 -2.308 5.902 -2.26 6.001 -2.16 c
-6.097 -2.065 6.152 -1.922 6.163 -1.734 c
-6.619 -1.734 l
-6.608 -2.021 6.505 -2.26 6.31 -2.454 c
-6.122 -2.642 5.887 -2.734 5.604 -2.734 c
-5.241 -2.734 4.962 -2.616 4.767 -2.381 c
-4.568 -2.146 4.472 -1.801 4.472 -1.337 c
-4.472 -1.014 l
-4.472 -0.565 4.564 -0.22 4.752 0.015 c
-4.946 0.25 5.23 0.368 5.604 0.368 c
-5.906 0.368 6.149 0.269 6.325 0.074 c
-6.508 -0.124 6.608 -0.389 6.619 -0.72 c
-6.163 -0.72 l
-6.141 -0.496 6.082 -0.33 5.987 -0.22 c
-5.898 -0.114 5.77 -0.058 5.604 -0.058 c
-5.388 -0.058 5.226 -0.132 5.12 -0.278 c
-5.02 -0.419 4.965 -0.646 4.958 -0.97 c
-4.958 -1.352 l
-4.958 -1.705 5.006 -1.955 5.104 -2.102 c
-5.212 -2.241 5.376 -2.308 5.604 -2.308 c
-7.765 -1.308 m
-7.501 -1.602 l
-7.501 -2.675 l
-7.015 -2.675 l
-7.015 1.559 l
-7.501 1.559 l
-7.501 -0.97 l
-8.426 0.309 l
-9.015 0.309 l
-8.074 -0.941 l
-9.147 -2.675 l
-8.574 -2.675 l
-h
-9.922 -2.675 -0.5 2.984 re
-9.952 1.103 m
-9.952 1.015 9.926 0.941 9.878 0.882 c
-9.837 0.831 9.768 0.809 9.673 0.809 c
-9.584 0.809 9.515 0.831 9.467 0.882 c
-9.426 0.941 9.407 1.008 9.407 1.088 c
-9.407 1.176 9.426 1.25 9.467 1.309 c
-9.515 1.368 9.584 1.397 9.673 1.397 c
-9.768 1.397 9.837 1.368 9.878 1.309 c
-9.926 1.25 9.952 1.18 9.952 1.103 c
-11.051 0.309 m
-11.065 -0.014 l
-11.248 0.239 11.491 0.368 11.786 0.368 c
-12.314 0.368 12.582 0.015 12.594 -0.691 c
-12.594 -2.675 l
-12.109 -2.675 l
-12.109 -0.72 l
-12.109 -0.484 12.069 -0.319 11.992 -0.22 c
-11.911 -0.124 11.793 -0.073 11.639 -0.073 c
-11.521 -0.073 11.41 -0.114 11.315 -0.191 c
-11.216 -0.272 11.138 -0.378 11.08 -0.514 c
-11.08 -2.675 l
-10.595 -2.675 l
-10.595 0.309 l
-h
-13.046 -1.043 m
-13.046 -0.584 13.127 -0.235 13.295 0 c
-13.472 0.243 13.722 0.368 14.045 0.368 c
-14.346 0.368 14.579 0.235 14.737 -0.029 c
-14.766 0.309 l
-15.207 0.309 l
-15.207 -2.705 l
-15.207 -3.075 15.107 -3.358 14.913 -3.557 c
-14.725 -3.752 14.464 -3.85 14.134 -3.85 c
-13.987 -3.85 13.818 -3.81 13.634 -3.733 c
-13.446 -3.663 13.311 -3.575 13.222 -3.469 c
-13.413 -3.131 l
-13.619 -3.336 13.843 -3.439 14.089 -3.439 c
-14.49 -3.439 14.696 -3.212 14.707 -2.763 c
-14.707 -2.381 l
-14.549 -2.616 14.328 -2.734 14.045 -2.734 c
-13.729 -2.734 13.486 -2.616 13.311 -2.381 c
-13.141 -2.146 13.053 -1.815 13.046 -1.381 c
-h
-13.531 -1.323 m
-13.531 -1.657 13.579 -1.903 13.678 -2.057 c
-13.773 -2.215 13.935 -2.293 14.163 -2.293 c
-14.406 -2.293 14.589 -2.171 14.707 -1.925 c
-14.707 -0.44 l
-14.589 -0.198 14.413 -0.073 14.178 -0.073 c
-13.95 -0.073 13.788 -0.154 13.693 -0.309 c
-13.594 -0.467 13.538 -0.706 13.531 -1.028 c
-h
-18.18 -0.147 m
-18.109 -0.139 18.036 -0.132 17.959 -0.132 c
-17.702 -0.132 17.525 -0.272 17.43 -0.544 c
-17.43 -2.675 l
-16.945 -2.675 l
-16.945 0.309 l
-17.415 0.309 l
-17.43 0 l
-17.555 0.243 17.739 0.368 17.974 0.368 c
-18.051 0.368 18.113 0.353 18.165 0.324 c
-h
-19.08 -2.675 -0.5 2.984 re
-19.109 1.103 m
-19.109 1.015 19.084 0.941 19.036 0.882 c
-18.995 0.831 18.926 0.809 18.83 0.809 c
-18.741 0.809 18.672 0.831 18.624 0.882 c
-18.583 0.941 18.566 1.008 18.566 1.088 c
-18.566 1.176 18.583 1.25 18.624 1.309 c
-18.672 1.368 18.741 1.397 18.83 1.397 c
-18.926 1.397 18.995 1.368 19.036 1.309 c
-19.084 1.25 19.109 1.18 19.109 1.103 c
-19.649 -1.043 m
-19.649 -0.584 19.73 -0.235 19.899 0 c
-20.075 0.243 20.326 0.368 20.649 0.368 c
-20.95 0.368 21.182 0.235 21.34 -0.029 c
-21.369 0.309 l
-21.81 0.309 l
-21.81 -2.705 l
-21.81 -3.075 21.711 -3.358 21.517 -3.557 c
-21.328 -3.752 21.068 -3.85 20.737 -3.85 c
-20.59 -3.85 20.421 -3.81 20.237 -3.733 c
-20.05 -3.663 19.914 -3.575 19.826 -3.469 c
-20.017 -3.131 l
-20.223 -3.336 20.447 -3.439 20.693 -3.439 c
-21.093 -3.439 21.299 -3.212 21.311 -2.763 c
-21.311 -2.381 l
-21.153 -2.616 20.931 -2.734 20.649 -2.734 c
-20.333 -2.734 20.09 -2.616 19.914 -2.381 c
-19.745 -2.146 19.657 -1.815 19.649 -1.381 c
-h
-20.135 -1.323 m
-20.135 -1.657 20.183 -1.903 20.281 -2.057 c
-20.377 -2.215 20.539 -2.293 20.767 -2.293 c
-21.01 -2.293 21.193 -2.171 21.311 -1.925 c
-21.311 -0.44 l
-21.193 -0.198 21.016 -0.073 20.781 -0.073 c
-20.553 -0.073 20.392 -0.154 20.297 -0.309 c
-20.197 -0.467 20.142 -0.706 20.135 -1.028 c
-h
-22.832 0 m
-23.015 0.243 23.25 0.368 23.537 0.368 c
-24.067 0.368 24.335 0.015 24.345 -0.691 c
-24.345 -2.675 l
-23.861 -2.675 l
-23.861 -0.72 l
-23.861 -0.484 23.82 -0.319 23.743 -0.22 c
-23.662 -0.124 23.545 -0.073 23.391 -0.073 c
-23.273 -0.073 23.163 -0.114 23.067 -0.191 c
-22.968 -0.272 22.891 -0.378 22.832 -0.514 c
-22.832 -2.675 l
-22.346 -2.675 l
-22.346 1.559 l
-22.832 1.559 l
-h
-25.521 1.029 m
-25.521 0.309 l
-25.978 0.309 l
-25.978 -0.087 l
-25.521 -0.087 l
-25.521 -1.94 l
-25.521 -2.057 25.54 -2.146 25.581 -2.204 c
-25.617 -2.263 25.687 -2.293 25.787 -2.293 c
-25.845 -2.293 25.908 -2.285 25.978 -2.263 c
-25.978 -2.675 l
-25.86 -2.711 25.746 -2.734 25.639 -2.734 c
-25.44 -2.734 25.29 -2.667 25.184 -2.528 c
-25.085 -2.392 25.037 -2.197 25.037 -1.94 c
-25.037 -0.087 l
-24.581 -0.087 l
-24.581 0.309 l
-25.037 0.309 l
-25.037 1.029 l
-h
-28.131 0 m
-28.314 0.243 28.55 0.368 28.837 0.368 c
-29.365 0.368 29.633 0.015 29.645 -0.691 c
-29.645 -2.675 l
-29.16 -2.675 l
-29.16 -0.72 l
-29.16 -0.484 29.12 -0.319 29.043 -0.22 c
-28.962 -0.124 28.844 -0.073 28.69 -0.073 c
-28.572 -0.073 28.461 -0.114 28.366 -0.191 c
-28.266 -0.272 28.189 -0.378 28.131 -0.514 c
-28.131 -2.675 l
-27.646 -2.675 l
-27.646 1.559 l
-28.131 1.559 l
-h
-31.247 -2.734 m
-30.872 -2.734 30.589 -2.627 30.394 -2.41 c
-30.196 -2.186 30.101 -1.859 30.101 -1.425 c
-30.101 -1.058 l
-30.101 -0.617 30.192 -0.272 30.379 -0.014 c
-30.574 0.239 30.85 0.368 31.203 0.368 c
-31.545 0.368 31.798 0.254 31.967 0.03 c
-32.143 -0.198 32.235 -0.544 32.247 -1.014 c
-32.247 -1.323 l
-30.585 -1.323 l
-30.585 -1.396 l
-30.585 -1.72 30.645 -1.955 30.762 -2.102 c
-30.88 -2.241 31.048 -2.308 31.277 -2.308 c
-31.424 -2.308 31.549 -2.285 31.659 -2.234 c
-31.765 -2.175 31.868 -2.087 31.967 -1.969 c
-32.218 -2.278 l
-32.012 -2.583 31.688 -2.734 31.247 -2.734 c
-31.203 -0.058 m
-30.997 -0.058 30.843 -0.128 30.747 -0.264 c
-30.648 -0.404 30.593 -0.617 30.585 -0.911 c
-31.761 -0.911 l
-31.761 -0.837 l
-31.74 -0.565 31.688 -0.367 31.599 -0.249 c
-31.512 -0.124 31.379 -0.058 31.203 -0.058 c
-33.893 -0.147 m
-33.823 -0.139 33.749 -0.132 33.672 -0.132 c
-33.415 -0.132 33.239 -0.272 33.143 -0.544 c
-33.143 -2.675 l
-32.658 -2.675 l
-32.658 0.309 l
-33.128 0.309 l
-33.143 0 l
-33.268 0.243 33.452 0.368 33.687 0.368 c
-33.764 0.368 33.826 0.353 33.878 0.324 c
-h
-35.267 -2.734 m
-34.892 -2.734 34.61 -2.627 34.415 -2.41 c
-34.217 -2.186 34.121 -1.859 34.121 -1.425 c
-34.121 -1.058 l
-34.121 -0.617 34.213 -0.272 34.4 -0.014 c
-34.595 0.239 34.87 0.368 35.223 0.368 c
-35.565 0.368 35.819 0.254 35.987 0.03 c
-36.164 -0.198 36.256 -0.544 36.266 -1.014 c
-36.266 -1.323 l
-34.606 -1.323 l
-34.606 -1.396 l
-34.606 -1.72 34.664 -1.955 34.782 -2.102 c
-34.9 -2.241 35.069 -2.308 35.297 -2.308 c
-35.443 -2.308 35.568 -2.285 35.679 -2.234 c
-35.786 -2.175 35.888 -2.087 35.987 -1.969 c
-36.237 -2.278 l
-36.031 -2.583 35.708 -2.734 35.267 -2.734 c
-35.223 -0.058 m
-35.017 -0.058 34.863 -0.128 34.767 -0.264 c
-34.668 -0.404 34.613 -0.617 34.606 -0.911 c
-35.782 -0.911 l
-35.782 -0.837 l
-35.759 -0.565 35.708 -0.367 35.62 -0.249 c
-35.532 -0.124 35.399 -0.058 35.223 -0.058 c
-37.222 -1.543 m
-36.781 -1.543 l
-36.752 1.338 l
-37.266 1.338 l
-h
-37.016 -2.131 m
-37.112 -2.131 37.182 -2.16 37.222 -2.219 c
-37.27 -2.271 37.296 -2.337 37.296 -2.425 c
-37.296 -2.506 37.27 -2.572 37.222 -2.63 c
-37.182 -2.678 37.112 -2.705 37.016 -2.705 c
-36.928 -2.705 36.858 -2.678 36.81 -2.63 c
-36.759 -2.572 36.737 -2.506 36.737 -2.425 c
-36.737 -2.337 36.759 -2.271 36.81 -2.219 c
-36.858 -2.16 36.928 -2.131 37.016 -2.131 c
-f
-Q
- endstream endobj 52 0 obj <</BBox[699.591 449.925 766.733 444.647]/Group 88 0 R/Length 17061/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 700.8254 448.3809 cm
-0 0 m
--0.07 0.008 -0.143 0.015 -0.22 0.015 c
--0.478 0.015 -0.654 -0.125 -0.75 -0.397 c
--0.75 -2.528 l
--1.234 -2.528 l
--1.234 0.455 l
--0.764 0.455 l
--0.75 0.147 l
--0.625 0.389 -0.44 0.515 -0.205 0.515 c
--0.128 0.515 -0.066 0.5 -0.014 0.47 c
-h
-1.378 -2.587 m
-1.004 -2.587 0.721 -2.481 0.526 -2.263 c
-0.327 -2.04 0.231 -1.712 0.231 -1.278 c
-0.231 -0.912 l
-0.231 -0.47 0.324 -0.125 0.511 0.133 c
-0.706 0.386 0.981 0.515 1.334 0.515 c
-1.676 0.515 1.929 0.401 2.099 0.177 c
-2.275 -0.052 2.367 -0.397 2.378 -0.867 c
-2.378 -1.176 l
-0.717 -1.176 l
-0.717 -1.249 l
-0.717 -1.573 0.775 -1.808 0.893 -1.955 c
-1.01 -2.094 1.18 -2.161 1.407 -2.161 c
-1.555 -2.161 1.679 -2.138 1.79 -2.088 c
-1.897 -2.028 1.999 -1.94 2.099 -1.822 c
-2.348 -2.132 l
-2.143 -2.437 1.819 -2.587 1.378 -2.587 c
-1.334 0.088 m
-1.128 0.088 0.974 0.019 0.879 -0.118 c
-0.779 -0.257 0.724 -0.47 0.717 -0.764 c
-1.893 -0.764 l
-1.893 -0.691 l
-1.871 -0.419 1.819 -0.22 1.731 -0.103 c
-1.643 0.023 1.511 0.088 1.334 0.088 c
-3.245 0.455 m
-3.26 0.177 l
-3.437 0.401 3.675 0.515 3.98 0.515 c
-4.31 0.515 4.542 0.368 4.671 0.073 c
-4.854 0.368 5.116 0.515 5.45 0.515 c
-6.009 0.515 6.292 0.169 6.302 -0.515 c
-6.302 -2.528 l
-5.818 -2.528 l
-5.818 -0.559 l
-5.818 -0.345 5.777 -0.187 5.7 -0.088 c
-5.619 0.019 5.486 0.073 5.303 0.073 c
-5.156 0.073 5.039 0.015 4.95 -0.103 c
-4.862 -0.213 4.807 -0.353 4.788 -0.529 c
-4.788 -2.528 l
-4.303 -2.528 l
-4.303 -0.544 l
-4.293 -0.133 4.119 0.073 3.789 0.073 c
-3.543 0.073 3.37 -0.052 3.275 -0.294 c
-3.275 -2.528 l
-2.789 -2.528 l
-2.789 0.455 l
-h
-6.648 -0.897 m
-6.648 -0.467 6.751 -0.125 6.957 0.133 c
-7.169 0.386 7.449 0.515 7.794 0.515 c
-8.136 0.515 8.412 0.386 8.617 0.133 c
-8.831 -0.114 8.945 -0.448 8.956 -0.867 c
-8.956 -1.176 l
-8.956 -1.61 8.846 -1.951 8.632 -2.205 c
-8.426 -2.462 8.147 -2.587 7.794 -2.587 c
-7.449 -2.587 7.177 -2.466 6.971 -2.219 c
-6.766 -1.977 6.655 -1.643 6.648 -1.22 c
-h
-7.133 -1.176 m
-7.133 -1.492 7.192 -1.735 7.31 -1.911 c
-7.435 -2.08 7.596 -2.161 7.794 -2.161 c
-8.224 -2.161 8.449 -1.852 8.47 -1.234 c
-8.47 -0.897 l
-8.47 -0.596 8.405 -0.353 8.279 -0.176 c
-8.162 0 8 0.088 7.794 0.088 c
-7.596 0.088 7.435 0 7.31 -0.176 c
-7.192 -0.353 7.133 -0.596 7.133 -0.897 c
-h
-10.028 1.176 m
-10.028 0.455 l
-10.485 0.455 l
-10.485 0.059 l
-10.028 0.059 l
-10.028 -1.793 l
-10.028 -1.911 10.047 -1.999 10.088 -2.057 c
-10.124 -2.117 10.194 -2.146 10.294 -2.146 c
-10.352 -2.146 10.415 -2.138 10.485 -2.117 c
-10.485 -2.528 l
-10.367 -2.564 10.253 -2.587 10.146 -2.587 c
-9.947 -2.587 9.797 -2.521 9.691 -2.381 c
-9.592 -2.246 9.544 -2.051 9.544 -1.793 c
-9.544 0.059 l
-9.088 0.059 l
-9.088 0.455 l
-9.544 0.455 l
-9.544 1.176 l
-h
-12.009 -2.587 m
-11.634 -2.587 11.352 -2.481 11.157 -2.263 c
-10.959 -2.04 10.863 -1.712 10.863 -1.278 c
-10.863 -0.912 l
-10.863 -0.47 10.955 -0.125 11.142 0.133 c
-11.337 0.386 11.612 0.515 11.965 0.515 c
-12.307 0.515 12.561 0.401 12.73 0.177 c
-12.906 -0.052 12.998 -0.397 13.009 -0.867 c
-13.009 -1.176 l
-11.348 -1.176 l
-11.348 -1.249 l
-11.348 -1.573 11.406 -1.808 11.524 -1.955 c
-11.642 -2.094 11.811 -2.161 12.039 -2.161 c
-12.185 -2.161 12.311 -2.138 12.421 -2.088 c
-12.528 -2.028 12.63 -1.94 12.73 -1.822 c
-12.979 -2.132 l
-12.773 -2.437 12.451 -2.587 12.009 -2.587 c
-11.965 0.088 m
-11.759 0.088 11.605 0.019 11.51 -0.118 c
-11.41 -0.257 11.356 -0.47 11.348 -0.764 c
-12.524 -0.764 l
-12.524 -0.691 l
-12.501 -0.419 12.451 -0.22 12.362 -0.103 c
-12.274 0.023 12.141 0.088 11.965 0.088 c
-15.857 0 m
-15.787 0.008 15.713 0.015 15.636 0.015 c
-15.379 0.015 15.202 -0.125 15.107 -0.397 c
-15.107 -2.528 l
-14.622 -2.528 l
-14.622 0.455 l
-15.092 0.455 l
-15.107 0.147 l
-15.232 0.389 15.416 0.515 15.651 0.515 c
-15.728 0.515 15.79 0.5 15.842 0.47 c
-h
-17.235 -2.587 m
-16.86 -2.587 16.577 -2.481 16.382 -2.263 c
-16.184 -2.04 16.089 -1.712 16.089 -1.278 c
-16.089 -0.912 l
-16.089 -0.47 16.18 -0.125 16.368 0.133 c
-16.563 0.386 16.838 0.515 17.191 0.515 c
-17.533 0.515 17.786 0.401 17.955 0.177 c
-18.132 -0.052 18.223 -0.397 18.234 -0.867 c
-18.234 -1.176 l
-16.573 -1.176 l
-16.573 -1.249 l
-16.573 -1.573 16.632 -1.808 16.75 -1.955 c
-16.867 -2.094 17.037 -2.161 17.264 -2.161 c
-17.411 -2.161 17.536 -2.138 17.646 -2.088 c
-17.753 -2.028 17.856 -1.94 17.955 -1.822 c
-18.205 -2.132 l
-17.999 -2.437 17.676 -2.587 17.235 -2.587 c
-17.191 0.088 m
-16.985 0.088 16.831 0.019 16.735 -0.118 c
-16.636 -0.257 16.581 -0.47 16.573 -0.764 c
-17.749 -0.764 l
-17.749 -0.691 l
-17.727 -0.419 17.676 -0.22 17.588 -0.103 c
-17.5 0.023 17.367 0.088 17.191 0.088 c
-20.792 -1.176 m
-20.792 -1.646 20.708 -1.999 20.542 -2.234 c
-20.373 -2.469 20.135 -2.587 19.822 -2.587 c
-19.517 -2.587 19.285 -2.477 19.131 -2.249 c
-19.131 -3.675 l
-18.646 -3.675 l
-18.646 0.455 l
-19.087 0.455 l
-19.117 0.118 l
-19.271 0.382 19.503 0.515 19.807 0.515 c
-20.137 0.515 20.384 0.397 20.542 0.162 c
-20.708 -0.066 20.792 -0.405 20.792 -0.852 c
-h
-20.307 -0.897 m
-20.307 -0.565 20.252 -0.32 20.145 -0.162 c
-20.046 -0.008 19.884 0.073 19.661 0.073 c
-19.425 0.073 19.248 -0.044 19.131 -0.279 c
-19.131 -1.822 l
-19.248 -2.051 19.429 -2.161 19.675 -2.161 c
-19.888 -2.161 20.046 -2.084 20.145 -1.926 c
-20.252 -1.771 20.307 -1.529 20.307 -1.205 c
-h
-21.145 -0.897 m
-21.145 -0.467 21.248 -0.125 21.454 0.133 c
-21.667 0.386 21.946 0.515 22.292 0.515 c
-22.633 0.515 22.909 0.386 23.115 0.133 c
-23.328 -0.114 23.441 -0.448 23.453 -0.867 c
-23.453 -1.176 l
-23.453 -1.61 23.343 -1.951 23.129 -2.205 c
-22.923 -2.462 22.645 -2.587 22.292 -2.587 c
-21.946 -2.587 21.674 -2.466 21.469 -2.219 c
-21.263 -1.977 21.153 -1.643 21.145 -1.22 c
-h
-21.63 -1.176 m
-21.63 -1.492 21.689 -1.735 21.806 -1.911 c
-21.931 -2.08 22.093 -2.161 22.292 -2.161 c
-22.722 -2.161 22.946 -1.852 22.967 -1.234 c
-22.967 -0.897 l
-22.967 -0.596 22.901 -0.353 22.776 -0.176 c
-22.659 0 22.497 0.088 22.292 0.088 c
-22.093 0.088 21.931 0 21.806 -0.176 c
-21.689 -0.353 21.63 -0.596 21.63 -0.897 c
-h
-25.334 -1.764 m
-25.334 -1.658 25.294 -1.569 25.216 -1.5 c
-25.136 -1.422 24.985 -1.334 24.761 -1.234 c
-24.496 -1.128 24.309 -1.036 24.202 -0.956 c
-24.092 -0.878 24.015 -0.79 23.967 -0.691 c
-23.915 -0.596 23.894 -0.478 23.894 -0.338 c
-23.894 -0.095 23.981 0.106 24.158 0.264 c
-24.334 0.43 24.559 0.515 24.835 0.515 c
-25.128 0.515 25.363 0.426 25.54 0.25 c
-25.716 0.081 25.805 -0.133 25.805 -0.397 c
-25.319 -0.397 l
-25.319 -0.261 25.268 -0.147 25.172 -0.058 c
-25.084 0.037 24.97 0.088 24.835 0.088 c
-24.687 0.088 24.573 0.048 24.496 -0.029 c
-24.415 -0.099 24.378 -0.198 24.378 -0.324 c
-24.378 -0.422 24.408 -0.5 24.467 -0.559 c
-24.526 -0.617 24.665 -0.698 24.893 -0.794 c
-25.253 -0.941 25.5 -1.084 25.628 -1.22 c
-25.764 -1.348 25.834 -1.521 25.834 -1.735 c
-25.834 -1.992 25.739 -2.198 25.554 -2.352 c
-25.378 -2.51 25.143 -2.587 24.849 -2.587 c
-24.533 -2.587 24.28 -2.499 24.085 -2.323 c
-23.898 -2.138 23.805 -1.907 23.805 -1.631 c
-24.291 -1.631 l
-24.297 -1.801 24.349 -1.933 24.438 -2.028 c
-24.533 -2.117 24.673 -2.161 24.849 -2.161 c
-25.003 -2.161 25.121 -2.128 25.201 -2.057 c
-25.29 -1.992 25.334 -1.893 25.334 -1.764 c
-26.819 -2.528 -0.5 2.983 re
-26.848 1.249 m
-26.848 1.161 26.822 1.087 26.774 1.029 c
-26.734 0.977 26.664 0.956 26.568 0.956 c
-26.481 0.956 26.41 0.977 26.363 1.029 c
-26.323 1.087 26.304 1.154 26.304 1.235 c
-26.304 1.323 26.323 1.396 26.363 1.455 c
-26.41 1.514 26.481 1.544 26.568 1.544 c
-26.664 1.544 26.734 1.514 26.774 1.455 c
-26.822 1.396 26.848 1.326 26.848 1.249 c
-28.127 1.176 m
-28.127 0.455 l
-28.582 0.455 l
-28.582 0.059 l
-28.127 0.059 l
-28.127 -1.793 l
-28.127 -1.911 28.145 -1.999 28.185 -2.057 c
-28.222 -2.117 28.292 -2.146 28.392 -2.146 c
-28.45 -2.146 28.513 -2.138 28.582 -2.117 c
-28.582 -2.528 l
-28.465 -2.564 28.351 -2.587 28.245 -2.587 c
-28.046 -2.587 27.896 -2.521 27.789 -2.381 c
-27.69 -2.246 27.642 -2.051 27.642 -1.793 c
-27.642 0.059 l
-27.186 0.059 l
-27.186 0.455 l
-27.642 0.455 l
-27.642 1.176 l
-h
-28.895 -0.897 m
-28.895 -0.467 28.997 -0.125 29.203 0.133 c
-29.417 0.386 29.696 0.515 30.042 0.515 c
-30.383 0.515 30.659 0.386 30.865 0.133 c
-31.077 -0.114 31.191 -0.448 31.202 -0.867 c
-31.202 -1.176 l
-31.202 -1.61 31.092 -1.951 30.879 -2.205 c
-30.674 -2.462 30.394 -2.587 30.042 -2.587 c
-29.696 -2.587 29.424 -2.466 29.218 -2.219 c
-29.012 -1.977 28.902 -1.643 28.895 -1.22 c
-h
-29.38 -1.176 m
-29.38 -1.492 29.439 -1.735 29.556 -1.911 c
-29.681 -2.08 29.843 -2.161 30.042 -2.161 c
-30.471 -2.161 30.695 -1.852 30.718 -1.234 c
-30.718 -0.897 l
-30.718 -0.596 30.651 -0.353 30.526 -0.176 c
-30.408 0 30.248 0.088 30.042 0.088 c
-29.843 0.088 29.681 0 29.556 -0.176 c
-29.439 -0.353 29.38 -0.596 29.38 -0.897 c
-h
-32.875 0 m
-32.805 0.008 32.731 0.015 32.654 0.015 c
-32.397 0.015 32.22 -0.125 32.125 -0.397 c
-32.125 -2.528 l
-31.64 -2.528 l
-31.64 0.455 l
-32.11 0.455 l
-32.125 0.147 l
-32.25 0.389 32.434 0.515 32.669 0.515 c
-32.746 0.515 32.808 0.5 32.86 0.47 c
-h
-33.775 -2.528 -0.501 2.983 re
-33.805 1.249 m
-33.805 1.161 33.778 1.087 33.731 1.029 c
-33.691 0.977 33.621 0.956 33.525 0.956 c
-33.437 0.956 33.367 0.977 33.319 1.029 c
-33.279 1.087 33.261 1.154 33.261 1.235 c
-33.261 1.323 33.279 1.396 33.319 1.455 c
-33.367 1.514 33.437 1.544 33.525 1.544 c
-33.621 1.544 33.691 1.514 33.731 1.455 c
-33.778 1.396 33.805 1.326 33.805 1.249 c
-35.509 -2.587 m
-35.135 -2.587 34.852 -2.481 34.657 -2.263 c
-34.458 -2.04 34.363 -1.712 34.363 -1.278 c
-34.363 -0.912 l
-34.363 -0.47 34.455 -0.125 34.642 0.133 c
-34.837 0.386 35.112 0.515 35.465 0.515 c
-35.807 0.515 36.06 0.401 36.23 0.177 c
-36.406 -0.052 36.498 -0.397 36.509 -0.867 c
-36.509 -1.176 l
-34.848 -1.176 l
-34.848 -1.249 l
-34.848 -1.573 34.907 -1.808 35.025 -1.955 c
-35.142 -2.094 35.311 -2.161 35.539 -2.161 c
-35.686 -2.161 35.811 -2.138 35.921 -2.088 c
-36.028 -2.028 36.13 -1.94 36.23 -1.822 c
-36.48 -2.132 l
-36.274 -2.437 35.95 -2.587 35.509 -2.587 c
-35.465 0.088 m
-35.26 0.088 35.106 0.019 35.01 -0.118 c
-34.911 -0.257 34.855 -0.47 34.848 -0.764 c
-36.024 -0.764 l
-36.024 -0.691 l
-36.002 -0.419 35.95 -0.22 35.862 -0.103 c
-35.774 0.023 35.642 0.088 35.465 0.088 c
-38.362 -1.764 m
-38.362 -1.658 38.321 -1.569 38.244 -1.5 c
-38.163 -1.422 38.012 -1.334 37.788 -1.234 c
-37.523 -1.128 37.336 -1.036 37.229 -0.956 c
-37.119 -0.878 37.042 -0.79 36.994 -0.691 c
-36.943 -0.596 36.92 -0.478 36.92 -0.338 c
-36.92 -0.095 37.009 0.106 37.186 0.264 c
-37.361 0.43 37.585 0.515 37.861 0.515 c
-38.155 0.515 38.391 0.426 38.567 0.25 c
-38.743 0.081 38.832 -0.133 38.832 -0.397 c
-38.346 -0.397 l
-38.346 -0.261 38.295 -0.147 38.2 -0.058 c
-38.111 0.037 37.997 0.088 37.861 0.088 c
-37.714 0.088 37.6 0.048 37.523 -0.029 c
-37.442 -0.099 37.406 -0.198 37.406 -0.324 c
-37.406 -0.422 37.435 -0.5 37.494 -0.559 c
-37.552 -0.617 37.693 -0.698 37.92 -0.794 c
-38.281 -0.941 38.526 -1.084 38.655 -1.22 c
-38.791 -1.348 38.861 -1.521 38.861 -1.735 c
-38.861 -1.992 38.765 -2.198 38.582 -2.352 c
-38.405 -2.51 38.17 -2.587 37.876 -2.587 c
-37.56 -2.587 37.306 -2.499 37.111 -2.323 c
-36.924 -2.138 36.833 -1.907 36.833 -1.631 c
-37.317 -1.631 l
-37.325 -1.801 37.377 -1.933 37.464 -2.028 c
-37.56 -2.117 37.699 -2.161 37.876 -2.161 c
-38.03 -2.161 38.148 -2.128 38.229 -2.057 c
-38.317 -1.992 38.362 -1.893 38.362 -1.764 c
-42.05 -2.528 m
-42.021 -2.462 41.999 -2.352 41.992 -2.205 c
-41.815 -2.462 41.595 -2.587 41.33 -2.587 c
-41.055 -2.587 40.837 -2.514 40.683 -2.367 c
-40.536 -2.212 40.463 -1.995 40.463 -1.72 c
-40.463 -1.419 40.566 -1.176 40.772 -0.999 c
-40.978 -0.816 41.261 -0.721 41.624 -0.721 c
-41.977 -0.721 l
-41.977 -0.397 l
-41.977 -0.22 41.936 -0.099 41.859 -0.029 c
-41.778 0.048 41.661 0.088 41.506 0.088 c
-41.36 0.088 41.234 0.044 41.139 -0.044 c
-41.051 -0.133 41.007 -0.243 41.007 -0.368 c
-40.521 -0.368 l
-40.521 -0.22 40.566 -0.081 40.654 0.059 c
-40.742 0.206 40.86 0.316 41.007 0.397 c
-41.161 0.474 41.334 0.515 41.521 0.515 c
-41.834 0.515 42.069 0.434 42.227 0.279 c
-42.381 0.133 42.462 -0.088 42.462 -0.382 c
-42.462 -1.881 l
-42.47 -2.117 42.506 -2.319 42.565 -2.484 c
-42.565 -2.528 l
-h
-41.404 -2.146 m
-41.521 -2.146 41.631 -2.113 41.742 -2.043 c
-41.849 -1.977 41.926 -1.893 41.977 -1.793 c
-41.977 -1.087 l
-41.712 -1.087 l
-41.477 -1.087 41.29 -1.139 41.154 -1.234 c
-41.026 -1.334 40.963 -1.477 40.963 -1.661 c
-40.963 -1.83 40.992 -1.951 41.051 -2.028 c
-41.117 -2.109 41.234 -2.146 41.404 -2.146 c
-44.483 -1.764 m
-44.483 -1.658 44.442 -1.569 44.365 -1.5 c
-44.284 -1.422 44.134 -1.334 43.91 -1.234 c
-43.646 -1.128 43.458 -1.036 43.351 -0.956 c
-43.241 -0.878 43.164 -0.79 43.116 -0.691 c
-43.065 -0.596 43.043 -0.478 43.043 -0.338 c
-43.043 -0.095 43.131 0.106 43.307 0.264 c
-43.484 0.43 43.708 0.515 43.983 0.515 c
-44.278 0.515 44.513 0.426 44.689 0.25 c
-44.866 0.081 44.953 -0.133 44.953 -0.397 c
-44.469 -0.397 l
-44.469 -0.261 44.417 -0.147 44.322 -0.058 c
-44.234 0.037 44.12 0.088 43.983 0.088 c
-43.837 0.088 43.723 0.048 43.646 -0.029 c
-43.565 -0.099 43.528 -0.198 43.528 -0.324 c
-43.528 -0.422 43.557 -0.5 43.616 -0.559 c
-43.675 -0.617 43.814 -0.698 44.043 -0.794 c
-44.402 -0.941 44.648 -1.084 44.777 -1.22 c
-44.913 -1.348 44.983 -1.521 44.983 -1.735 c
-44.983 -1.992 44.887 -2.198 44.704 -2.352 c
-44.527 -2.51 44.292 -2.587 43.998 -2.587 c
-43.682 -2.587 43.428 -2.499 43.234 -2.323 c
-43.046 -2.138 42.954 -1.907 42.954 -1.631 c
-43.44 -1.631 l
-43.447 -1.801 43.499 -1.933 43.586 -2.028 c
-43.682 -2.117 43.821 -2.161 43.998 -2.161 c
-44.153 -2.161 44.27 -2.128 44.351 -2.057 c
-44.44 -1.992 44.483 -1.893 44.483 -1.764 c
-47.453 -1.72 m
-47.997 0.455 l
-48.511 0.455 l
-47.54 -2.955 l
-47.471 -3.208 47.368 -3.399 47.232 -3.528 c
-47.092 -3.663 46.942 -3.734 46.776 -3.734 c
-46.707 -3.734 46.622 -3.719 46.526 -3.69 c
-46.526 -3.278 l
-46.63 -3.293 l
-46.765 -3.293 46.871 -3.256 46.952 -3.19 c
-47.041 -3.12 47.107 -3.002 47.158 -2.837 c
-47.247 -2.499 l
-46.379 0.455 l
-46.909 0.455 l
-h
-48.691 -0.897 m
-48.691 -0.467 48.793 -0.125 48.999 0.133 c
-49.213 0.386 49.492 0.515 49.838 0.515 c
-50.179 0.515 50.455 0.386 50.661 0.133 c
-50.873 -0.114 50.987 -0.448 50.998 -0.867 c
-50.998 -1.176 l
-50.998 -1.61 50.888 -1.951 50.675 -2.205 c
-50.47 -2.462 50.19 -2.587 49.838 -2.587 c
-49.492 -2.587 49.22 -2.466 49.014 -2.219 c
-48.808 -1.977 48.698 -1.643 48.691 -1.22 c
-h
-49.176 -1.176 m
-49.176 -1.492 49.235 -1.735 49.352 -1.911 c
-49.477 -2.08 49.639 -2.161 49.838 -2.161 c
-50.268 -2.161 50.491 -1.852 50.514 -1.234 c
-50.514 -0.897 l
-50.514 -0.596 50.447 -0.353 50.322 -0.176 c
-50.204 0 50.044 0.088 49.838 0.088 c
-49.639 0.088 49.477 0 49.352 -0.176 c
-49.235 -0.353 49.176 -0.596 49.176 -0.897 c
-h
-52.953 -2.263 m
-52.795 -2.481 52.56 -2.587 52.248 -2.587 c
-51.983 -2.587 51.777 -2.495 51.631 -2.308 c
-51.491 -2.124 51.425 -1.849 51.425 -1.484 c
-51.425 0.455 l
-51.91 0.455 l
-51.91 -1.455 l
-51.91 -1.918 52.049 -2.146 52.336 -2.146 c
-52.631 -2.146 52.828 -2.014 52.939 -1.749 c
-52.939 0.455 l
-53.439 0.455 l
-53.439 -2.528 l
-52.968 -2.528 l
-h
-57.415 -1.675 m
-57.871 0.455 l
-58.356 0.455 l
-57.62 -2.528 l
-57.238 -2.528 l
-56.65 -0.397 l
-56.077 -2.528 l
-55.695 -2.528 l
-54.96 0.455 l
-55.445 0.455 l
-55.916 -1.617 l
-56.459 0.455 l
-56.841 0.455 l
-h
-60.149 -2.528 m
-60.119 -2.462 60.097 -2.352 60.09 -2.205 c
-59.914 -2.462 59.693 -2.587 59.428 -2.587 c
-59.153 -2.587 58.936 -2.514 58.782 -2.367 c
-58.634 -2.212 58.561 -1.995 58.561 -1.72 c
-58.561 -1.419 58.664 -1.176 58.87 -0.999 c
-59.076 -0.816 59.359 -0.721 59.723 -0.721 c
-60.076 -0.721 l
-60.076 -0.397 l
-60.076 -0.22 60.035 -0.099 59.958 -0.029 c
-59.877 0.048 59.76 0.088 59.605 0.088 c
-59.458 0.088 59.333 0.044 59.237 -0.044 c
-59.149 -0.133 59.105 -0.243 59.105 -0.368 c
-58.62 -0.368 l
-58.62 -0.22 58.664 -0.081 58.752 0.059 c
-58.84 0.206 58.958 0.316 59.105 0.397 c
-59.259 0.474 59.432 0.515 59.619 0.515 c
-59.932 0.515 60.167 0.434 60.325 0.279 c
-60.479 0.133 60.56 -0.088 60.56 -0.382 c
-60.56 -1.881 l
-60.568 -2.117 60.604 -2.319 60.664 -2.484 c
-60.664 -2.528 l
-h
-59.502 -2.146 m
-59.619 -2.146 59.729 -2.113 59.84 -2.043 c
-59.947 -1.977 60.024 -1.893 60.076 -1.793 c
-60.076 -1.087 l
-59.81 -1.087 l
-59.575 -1.087 59.388 -1.139 59.252 -1.234 c
-59.124 -1.334 59.061 -1.477 59.061 -1.661 c
-59.061 -1.83 59.091 -1.951 59.149 -2.028 c
-59.216 -2.109 59.333 -2.146 59.502 -2.146 c
-61.597 0.455 m
-61.611 0.133 l
-61.795 0.386 62.038 0.515 62.331 0.515 c
-62.861 0.515 63.129 0.162 63.14 -0.544 c
-63.14 -2.528 l
-62.655 -2.528 l
-62.655 -0.573 l
-62.655 -0.338 62.615 -0.172 62.538 -0.073 c
-62.457 0.023 62.339 0.073 62.185 0.073 c
-62.067 0.073 61.957 0.033 61.861 -0.044 c
-61.762 -0.125 61.685 -0.231 61.626 -0.368 c
-61.626 -2.528 l
-61.141 -2.528 l
-61.141 0.455 l
-h
-64.323 1.176 m
-64.323 0.455 l
-64.779 0.455 l
-64.779 0.059 l
-64.323 0.059 l
-64.323 -1.793 l
-64.323 -1.911 64.342 -1.999 64.382 -2.057 c
-64.419 -2.117 64.489 -2.146 64.587 -2.146 c
-64.647 -2.146 64.709 -2.138 64.779 -2.117 c
-64.779 -2.528 l
-64.662 -2.564 64.548 -2.587 64.441 -2.587 c
-64.242 -2.587 64.092 -2.521 63.985 -2.381 c
-63.886 -2.246 63.839 -2.051 63.839 -1.793 c
-63.839 0.059 l
-63.382 0.059 l
-63.382 0.455 l
-63.839 0.455 l
-63.839 1.176 l
-h
-65.275 -2.263 m
-65.275 -2.175 65.297 -2.102 65.348 -2.043 c
-65.408 -1.984 65.485 -1.955 65.584 -1.955 c
-65.69 -1.955 65.767 -1.984 65.819 -2.043 c
-65.878 -2.102 65.907 -2.175 65.907 -2.263 c
-65.907 -2.344 65.878 -2.41 65.819 -2.469 c
-65.767 -2.528 65.69 -2.558 65.584 -2.558 c
-65.485 -2.558 65.408 -2.528 65.348 -2.469 c
-65.297 -2.41 65.275 -2.344 65.275 -2.263 c
-f
-Q
- endstream endobj 53 0 obj <</BBox[703.328 443.501 763.072 438.121]/Group 89 0 R/Length 13734/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 704.9891 443.2802 cm
-0 0 m
-0.5 0 l
-0.5 -2.836 l
-0.5 -3.219 0.401 -3.524 0.206 -3.748 c
-0.008 -3.965 -0.257 -4.072 -0.588 -4.072 c
--0.922 -4.072 -1.187 -3.969 -1.382 -3.763 c
--1.569 -3.557 -1.661 -3.274 -1.661 -2.911 c
--1.161 -2.911 l
--1.161 -3.138 -1.114 -3.314 -1.014 -3.439 c
--0.908 -3.568 -0.764 -3.63 -0.588 -3.63 c
--0.411 -3.63 -0.272 -3.564 -0.162 -3.424 c
--0.055 -3.289 0 -3.094 0 -2.836 c
-h
-2.609 -3.748 m
-2.452 -3.965 2.216 -4.072 1.903 -4.072 c
-1.639 -4.072 1.433 -3.979 1.286 -3.792 c
-1.147 -3.609 1.08 -3.333 1.08 -2.969 c
-1.08 -1.029 l
-1.565 -1.029 l
-1.565 -2.94 l
-1.565 -3.403 1.706 -3.63 1.992 -3.63 c
-2.286 -3.63 2.485 -3.499 2.595 -3.233 c
-2.595 -1.029 l
-3.094 -1.029 l
-3.094 -4.012 l
-2.624 -4.012 l
-h
-5.089 -3.248 m
-5.089 -3.142 5.049 -3.054 4.972 -2.984 c
-4.891 -2.907 4.74 -2.818 4.516 -2.719 c
-4.252 -2.612 4.064 -2.52 3.958 -2.44 c
-3.848 -2.362 3.771 -2.275 3.723 -2.175 c
-3.671 -2.08 3.649 -1.962 3.649 -1.822 c
-3.649 -1.579 3.738 -1.378 3.914 -1.22 c
-4.09 -1.055 4.314 -0.97 4.59 -0.97 c
-4.883 -0.97 5.119 -1.058 5.295 -1.234 c
-5.471 -1.404 5.56 -1.617 5.56 -1.881 c
-5.075 -1.881 l
-5.075 -1.745 5.024 -1.631 4.928 -1.543 c
-4.84 -1.448 4.725 -1.396 4.59 -1.396 c
-4.443 -1.396 4.329 -1.436 4.252 -1.514 c
-4.171 -1.583 4.135 -1.683 4.135 -1.808 c
-4.135 -1.907 4.164 -1.984 4.222 -2.043 c
-4.281 -2.102 4.421 -2.182 4.648 -2.278 c
-5.009 -2.425 5.255 -2.568 5.384 -2.705 c
-5.519 -2.833 5.589 -3.006 5.589 -3.219 c
-5.589 -3.476 5.494 -3.682 5.31 -3.836 c
-5.134 -3.994 4.898 -4.072 4.605 -4.072 c
-4.289 -4.072 4.035 -3.983 3.84 -3.807 c
-3.653 -3.623 3.561 -3.391 3.561 -3.116 c
-4.046 -3.116 l
-4.054 -3.285 4.104 -3.418 4.193 -3.513 c
-4.289 -3.601 4.428 -3.645 4.605 -3.645 c
-4.759 -3.645 4.877 -3.612 4.958 -3.542 c
-5.045 -3.476 5.089 -3.377 5.089 -3.248 c
-6.677 -0.309 m
-6.677 -1.029 l
-7.133 -1.029 l
-7.133 -1.425 l
-6.677 -1.425 l
-6.677 -3.278 l
-6.677 -3.395 6.695 -3.484 6.736 -3.542 c
-6.772 -3.601 6.842 -3.63 6.942 -3.63 c
-7 -3.63 7.063 -3.623 7.133 -3.601 c
-7.133 -4.012 l
-7.015 -4.049 6.901 -4.072 6.795 -4.072 c
-6.596 -4.072 6.446 -4.006 6.339 -3.865 c
-6.24 -3.73 6.192 -3.535 6.192 -3.278 c
-6.192 -1.425 l
-5.737 -1.425 l
-5.737 -1.029 l
-6.192 -1.029 l
-6.192 -0.309 l
-h
-10.036 -1.484 m
-9.966 -1.477 9.893 -1.469 9.816 -1.469 c
-9.558 -1.469 9.382 -1.61 9.286 -1.881 c
-9.286 -4.012 l
-8.802 -4.012 l
-8.802 -1.029 l
-9.272 -1.029 l
-9.286 -1.338 l
-9.411 -1.095 9.595 -0.97 9.83 -0.97 c
-9.907 -0.97 9.97 -0.985 10.021 -1.014 c
-h
-11.414 -4.072 m
-11.039 -4.072 10.756 -3.965 10.562 -3.748 c
-10.363 -3.524 10.267 -3.197 10.267 -2.763 c
-10.267 -2.396 l
-10.267 -1.955 10.359 -1.61 10.547 -1.352 c
-10.741 -1.099 11.017 -0.97 11.37 -0.97 c
-11.711 -0.97 11.965 -1.084 12.134 -1.308 c
-12.311 -1.536 12.403 -1.881 12.413 -2.352 c
-12.413 -2.66 l
-10.753 -2.66 l
-10.753 -2.734 l
-10.753 -3.057 10.811 -3.293 10.929 -3.439 c
-11.046 -3.579 11.216 -3.645 11.443 -3.645 c
-11.59 -3.645 11.715 -3.623 11.825 -3.572 c
-11.932 -3.513 12.035 -3.424 12.134 -3.307 c
-12.384 -3.616 l
-12.178 -3.921 11.855 -4.072 11.414 -4.072 c
-11.37 -1.396 m
-11.164 -1.396 11.009 -1.466 10.914 -1.602 c
-10.815 -1.741 10.76 -1.955 10.753 -2.248 c
-11.929 -2.248 l
-11.929 -2.175 l
-11.906 -1.903 11.855 -1.705 11.767 -1.587 c
-11.678 -1.462 11.546 -1.396 11.37 -1.396 c
-13.28 -1.029 m
-13.296 -1.308 l
-13.471 -1.084 13.71 -0.97 14.015 -0.97 c
-14.346 -0.97 14.578 -1.117 14.707 -1.411 c
-14.89 -1.117 15.152 -0.97 15.486 -0.97 c
-16.044 -0.97 16.327 -1.315 16.338 -1.999 c
-16.338 -4.012 l
-15.853 -4.012 l
-15.853 -2.043 l
-15.853 -1.83 15.813 -1.672 15.736 -1.573 c
-15.655 -1.466 15.522 -1.411 15.339 -1.411 c
-15.191 -1.411 15.073 -1.469 14.986 -1.587 c
-14.898 -1.697 14.842 -1.837 14.824 -2.013 c
-14.824 -4.012 l
-14.339 -4.012 l
-14.339 -2.028 l
-14.328 -1.617 14.155 -1.411 13.824 -1.411 c
-13.579 -1.411 13.406 -1.536 13.31 -1.778 c
-13.31 -4.012 l
-12.825 -4.012 l
-12.825 -1.029 l
-h
-17.845 -4.072 m
-17.47 -4.072 17.187 -3.965 16.993 -3.748 c
-16.794 -3.524 16.698 -3.197 16.698 -2.763 c
-16.698 -2.396 l
-16.698 -1.955 16.79 -1.61 16.978 -1.352 c
-17.172 -1.099 17.448 -0.97 17.801 -0.97 c
-18.142 -0.97 18.396 -1.084 18.565 -1.308 c
-18.741 -1.536 18.834 -1.881 18.844 -2.352 c
-18.844 -2.66 l
-17.184 -2.66 l
-17.184 -2.734 l
-17.184 -3.057 17.242 -3.293 17.359 -3.439 c
-17.477 -3.579 17.646 -3.645 17.874 -3.645 c
-18.021 -3.645 18.146 -3.623 18.256 -3.572 c
-18.363 -3.513 18.466 -3.424 18.565 -3.307 c
-18.815 -3.616 l
-18.609 -3.921 18.286 -4.072 17.845 -4.072 c
-17.801 -1.396 m
-17.595 -1.396 17.44 -1.466 17.345 -1.602 c
-17.246 -1.741 17.19 -1.955 17.184 -2.248 c
-18.359 -2.248 l
-18.359 -2.175 l
-18.337 -1.903 18.286 -1.705 18.198 -1.587 c
-18.109 -1.462 17.977 -1.396 17.801 -1.396 c
-21.417 -2.66 m
-21.417 -3.131 21.332 -3.484 21.167 -3.719 c
-20.997 -3.954 20.756 -4.072 20.432 -4.072 c
-20.116 -4.072 19.881 -3.935 19.726 -3.659 c
-19.697 -4.012 l
-19.256 -4.012 l
-19.256 0.221 l
-19.74 0.221 l
-19.74 -1.352 l
-19.895 -1.099 20.127 -0.97 20.432 -0.97 c
-20.756 -0.97 20.997 -1.087 21.167 -1.323 c
-21.332 -1.558 21.417 -1.907 21.417 -2.366 c
-h
-20.931 -2.381 m
-20.931 -2.028 20.88 -1.778 20.785 -1.631 c
-20.685 -1.484 20.523 -1.411 20.299 -1.411 c
-20.053 -1.411 19.866 -1.55 19.74 -1.822 c
-19.74 -3.233 l
-19.858 -3.499 20.05 -3.63 20.314 -3.63 c
-20.527 -3.63 20.685 -3.557 20.785 -3.41 c
-20.88 -3.256 20.931 -3.013 20.931 -2.69 c
-h
-22.919 -4.072 m
-22.545 -4.072 22.262 -3.965 22.067 -3.748 c
-21.868 -3.524 21.773 -3.197 21.773 -2.763 c
-21.773 -2.396 l
-21.773 -1.955 21.865 -1.61 22.052 -1.352 c
-22.247 -1.099 22.522 -0.97 22.875 -0.97 c
-23.217 -0.97 23.471 -1.084 23.64 -1.308 c
-23.816 -1.536 23.908 -1.881 23.919 -2.352 c
-23.919 -2.66 l
-22.258 -2.66 l
-22.258 -2.734 l
-22.258 -3.057 22.317 -3.293 22.435 -3.439 c
-22.552 -3.579 22.721 -3.645 22.949 -3.645 c
-23.096 -3.645 23.221 -3.623 23.331 -3.572 c
-23.438 -3.513 23.54 -3.424 23.64 -3.307 c
-23.89 -3.616 l
-23.684 -3.921 23.36 -4.072 22.919 -4.072 c
-22.875 -1.396 m
-22.67 -1.396 22.516 -1.466 22.42 -1.602 c
-22.321 -1.741 22.265 -1.955 22.258 -2.248 c
-23.434 -2.248 l
-23.434 -2.175 l
-23.412 -1.903 23.36 -1.705 23.272 -1.587 c
-23.185 -1.462 23.052 -1.396 22.875 -1.396 c
-25.566 -1.484 m
-25.496 -1.477 25.422 -1.469 25.344 -1.469 c
-25.088 -1.469 24.911 -1.61 24.816 -1.881 c
-24.816 -4.012 l
-24.33 -4.012 l
-24.33 -1.029 l
-24.801 -1.029 l
-24.816 -1.338 l
-24.941 -1.095 25.124 -0.97 25.359 -0.97 c
-25.437 -0.97 25.5 -0.985 25.55 -1.014 c
-h
-27.771 -0.309 m
-27.771 -1.029 l
-28.226 -1.029 l
-28.226 -1.425 l
-27.771 -1.425 l
-27.771 -3.278 l
-27.771 -3.395 27.789 -3.484 27.829 -3.542 c
-27.866 -3.601 27.935 -3.63 28.035 -3.63 c
-28.093 -3.63 28.156 -3.623 28.226 -3.601 c
-28.226 -4.012 l
-28.108 -4.049 27.995 -4.072 27.888 -4.072 c
-27.69 -4.072 27.538 -4.006 27.432 -3.865 c
-27.333 -3.73 27.285 -3.535 27.285 -3.278 c
-27.285 -1.425 l
-26.83 -1.425 l
-26.83 -1.029 l
-27.285 -1.029 l
-27.285 -0.309 l
-h
-28.538 -2.381 m
-28.538 -1.951 28.641 -1.61 28.847 -1.352 c
-29.06 -1.099 29.34 -0.97 29.685 -0.97 c
-30.027 -0.97 30.302 -1.099 30.508 -1.352 c
-30.721 -1.598 30.835 -1.932 30.846 -2.352 c
-30.846 -2.66 l
-30.846 -3.094 30.736 -3.436 30.522 -3.69 c
-30.317 -3.946 30.038 -4.072 29.685 -4.072 c
-29.34 -4.072 29.067 -3.95 28.862 -3.704 c
-28.656 -3.461 28.546 -3.127 28.538 -2.705 c
-h
-29.024 -2.66 m
-29.024 -2.976 29.082 -3.219 29.2 -3.395 c
-29.325 -3.564 29.487 -3.645 29.685 -3.645 c
-30.115 -3.645 30.339 -3.337 30.36 -2.719 c
-30.36 -2.381 l
-30.36 -2.08 30.295 -1.837 30.169 -1.66 c
-30.052 -1.484 29.89 -1.396 29.685 -1.396 c
-29.487 -1.396 29.325 -1.484 29.2 -1.66 c
-29.082 -1.837 29.024 -2.08 29.024 -2.381 c
-h
-34.003 -3.748 m
-33.845 -3.965 33.61 -4.072 33.297 -4.072 c
-33.032 -4.072 32.827 -3.979 32.679 -3.792 c
-32.54 -3.609 32.474 -3.333 32.474 -2.969 c
-32.474 -1.029 l
-32.959 -1.029 l
-32.959 -2.94 l
-32.959 -3.403 33.099 -3.63 33.385 -3.63 c
-33.679 -3.63 33.878 -3.499 33.988 -3.233 c
-33.988 -1.029 l
-34.488 -1.029 l
-34.488 -4.012 l
-34.017 -4.012 l
-h
-37.185 -2.66 m
-37.185 -3.131 37.101 -3.484 36.935 -3.719 c
-36.766 -3.954 36.527 -4.072 36.215 -4.072 c
-35.91 -4.072 35.678 -3.961 35.524 -3.734 c
-35.524 -5.159 l
-35.039 -5.159 l
-35.039 -1.029 l
-35.48 -1.029 l
-35.509 -1.367 l
-35.663 -1.103 35.895 -0.97 36.2 -0.97 c
-36.531 -0.97 36.777 -1.087 36.935 -1.323 c
-37.101 -1.55 37.185 -1.889 37.185 -2.337 c
-h
-36.7 -2.381 m
-36.7 -2.05 36.645 -1.804 36.538 -1.646 c
-36.439 -1.492 36.278 -1.411 36.053 -1.411 c
-35.818 -1.411 35.642 -1.529 35.524 -1.764 c
-35.524 -3.307 l
-35.642 -3.535 35.821 -3.645 36.068 -3.645 c
-36.281 -3.645 36.439 -3.568 36.538 -3.41 c
-36.645 -3.256 36.7 -3.013 36.7 -2.69 c
-h
-37.541 -2.381 m
-37.541 -1.922 37.622 -1.573 37.791 -1.338 c
-37.967 -1.095 38.218 -0.97 38.541 -0.97 c
-38.824 -0.97 39.044 -1.087 39.203 -1.323 c
-39.203 0.221 l
-39.688 0.221 l
-39.688 -4.012 l
-39.247 -4.012 l
-39.218 -3.69 l
-39.06 -3.946 38.835 -4.072 38.541 -4.072 c
-38.225 -4.072 37.982 -3.954 37.806 -3.719 c
-37.63 -3.476 37.541 -3.131 37.541 -2.69 c
-h
-38.027 -2.66 m
-38.027 -2.994 38.075 -3.241 38.173 -3.395 c
-38.269 -3.553 38.431 -3.63 38.659 -3.63 c
-38.901 -3.63 39.085 -3.513 39.203 -3.278 c
-39.203 -1.764 l
-39.074 -1.529 38.894 -1.411 38.659 -1.411 c
-38.431 -1.411 38.269 -1.492 38.173 -1.646 c
-38.075 -1.804 38.027 -2.043 38.027 -2.366 c
-h
-41.786 -4.012 m
-41.757 -3.946 41.734 -3.836 41.727 -3.69 c
-41.551 -3.946 41.33 -4.072 41.065 -4.072 c
-40.789 -4.072 40.573 -3.998 40.419 -3.851 c
-40.272 -3.696 40.198 -3.48 40.198 -3.204 c
-40.198 -2.903 40.301 -2.66 40.507 -2.484 c
-40.712 -2.3 40.996 -2.205 41.36 -2.205 c
-41.712 -2.205 l
-41.712 -1.881 l
-41.712 -1.705 41.672 -1.583 41.595 -1.514 c
-41.514 -1.436 41.396 -1.396 41.242 -1.396 c
-41.095 -1.396 40.97 -1.44 40.874 -1.529 c
-40.787 -1.617 40.742 -1.727 40.742 -1.852 c
-40.257 -1.852 l
-40.257 -1.705 40.301 -1.565 40.39 -1.425 c
-40.477 -1.278 40.595 -1.168 40.742 -1.087 c
-40.897 -1.01 41.069 -0.97 41.257 -0.97 c
-41.569 -0.97 41.805 -1.051 41.963 -1.205 c
-42.117 -1.352 42.198 -1.573 42.198 -1.866 c
-42.198 -3.366 l
-42.204 -3.601 42.241 -3.803 42.3 -3.969 c
-42.3 -4.012 l
-h
-41.139 -3.63 m
-41.257 -3.63 41.367 -3.597 41.477 -3.528 c
-41.583 -3.461 41.661 -3.377 41.712 -3.278 c
-41.712 -2.572 l
-41.448 -2.572 l
-41.213 -2.572 41.025 -2.624 40.889 -2.719 c
-40.76 -2.818 40.698 -2.961 40.698 -3.146 c
-40.698 -3.314 40.727 -3.436 40.787 -3.513 c
-40.853 -3.594 40.97 -3.63 41.139 -3.63 c
-43.41 -0.309 m
-43.41 -1.029 l
-43.866 -1.029 l
-43.866 -1.425 l
-43.41 -1.425 l
-43.41 -3.278 l
-43.41 -3.395 43.428 -3.484 43.469 -3.542 c
-43.505 -3.601 43.575 -3.63 43.675 -3.63 c
-43.733 -3.63 43.796 -3.623 43.866 -3.601 c
-43.866 -4.012 l
-43.748 -4.049 43.634 -4.072 43.528 -4.072 c
-43.33 -4.072 43.178 -4.006 43.072 -3.865 c
-42.973 -3.73 42.925 -3.535 42.925 -3.278 c
-42.925 -1.425 l
-42.47 -1.425 l
-42.47 -1.029 l
-42.925 -1.029 l
-42.925 -0.309 l
-h
-45.391 -4.072 m
-45.016 -4.072 44.733 -3.965 44.538 -3.748 c
-44.34 -3.524 44.244 -3.197 44.244 -2.763 c
-44.244 -2.396 l
-44.244 -1.955 44.336 -1.61 44.523 -1.352 c
-44.718 -1.099 44.994 -0.97 45.346 -0.97 c
-45.688 -0.97 45.942 -1.084 46.111 -1.308 c
-46.287 -1.536 46.379 -1.881 46.391 -2.352 c
-46.391 -2.66 l
-44.729 -2.66 l
-44.729 -2.734 l
-44.729 -3.057 44.788 -3.293 44.905 -3.439 c
-45.023 -3.579 45.192 -3.645 45.42 -3.645 c
-45.568 -3.645 45.692 -3.623 45.803 -3.572 c
-45.909 -3.513 46.012 -3.424 46.111 -3.307 c
-46.361 -3.616 l
-46.156 -3.921 45.832 -4.072 45.391 -4.072 c
-45.346 -1.396 m
-45.14 -1.396 44.986 -1.466 44.891 -1.602 c
-44.791 -1.741 44.737 -1.955 44.729 -2.248 c
-45.905 -2.248 l
-45.905 -2.175 l
-45.883 -1.903 45.832 -1.705 45.743 -1.587 c
-45.655 -1.462 45.523 -1.396 45.346 -1.396 c
-48.635 -0.309 m
-48.635 -1.029 l
-49.092 -1.029 l
-49.092 -1.425 l
-48.635 -1.425 l
-48.635 -3.278 l
-48.635 -3.395 48.654 -3.484 48.695 -3.542 c
-48.731 -3.601 48.801 -3.63 48.9 -3.63 c
-48.959 -3.63 49.021 -3.623 49.092 -3.601 c
-49.092 -4.012 l
-48.974 -4.049 48.86 -4.072 48.753 -4.072 c
-48.554 -4.072 48.404 -4.006 48.298 -3.865 c
-48.198 -3.73 48.151 -3.535 48.151 -3.278 c
-48.151 -1.425 l
-47.695 -1.425 l
-47.695 -1.029 l
-48.151 -1.029 l
-48.151 -0.309 l
-h
-50.043 -1.338 m
-50.227 -1.095 50.462 -0.97 50.748 -0.97 c
-51.278 -0.97 51.546 -1.323 51.557 -2.028 c
-51.557 -4.012 l
-51.072 -4.012 l
-51.072 -2.057 l
-51.072 -1.822 51.031 -1.657 50.954 -1.558 c
-50.873 -1.462 50.756 -1.411 50.601 -1.411 c
-50.484 -1.411 50.374 -1.452 50.278 -1.529 c
-50.179 -1.61 50.102 -1.716 50.043 -1.852 c
-50.043 -4.012 l
-49.558 -4.012 l
-49.558 0.221 l
-50.043 0.221 l
-h
-53.159 -4.072 m
-52.784 -4.072 52.502 -3.965 52.307 -3.748 c
-52.109 -3.524 52.013 -3.197 52.013 -2.763 c
-52.013 -2.396 l
-52.013 -1.955 52.105 -1.61 52.292 -1.352 c
-52.487 -1.099 52.762 -0.97 53.115 -0.97 c
-53.457 -0.97 53.711 -1.084 53.879 -1.308 c
-54.056 -1.536 54.148 -1.881 54.158 -2.352 c
-54.158 -2.66 l
-52.498 -2.66 l
-52.498 -2.734 l
-52.498 -3.057 52.556 -3.293 52.674 -3.439 c
-52.791 -3.579 52.961 -3.645 53.188 -3.645 c
-53.335 -3.645 53.46 -3.623 53.57 -3.572 c
-53.678 -3.513 53.78 -3.424 53.879 -3.307 c
-54.129 -3.616 l
-53.923 -3.921 53.601 -4.072 53.159 -4.072 c
-53.115 -1.396 m
-52.909 -1.396 52.755 -1.466 52.66 -1.602 c
-52.56 -1.741 52.505 -1.955 52.498 -2.248 c
-53.674 -2.248 l
-53.674 -2.175 l
-53.651 -1.903 53.601 -1.705 53.512 -1.587 c
-53.424 -1.462 53.291 -1.396 53.115 -1.396 c
-55.026 -1.029 m
-55.041 -1.308 l
-55.217 -1.084 55.456 -0.97 55.76 -0.97 c
-56.092 -0.97 56.323 -1.117 56.452 -1.411 c
-56.635 -1.117 56.896 -0.97 57.231 -0.97 c
-57.79 -0.97 58.072 -1.315 58.083 -1.999 c
-58.083 -4.012 l
-57.599 -4.012 l
-57.599 -2.043 l
-57.599 -1.83 57.558 -1.672 57.481 -1.573 c
-57.4 -1.466 57.268 -1.411 57.084 -1.411 c
-56.936 -1.411 56.819 -1.469 56.731 -1.587 c
-56.643 -1.697 56.587 -1.837 56.57 -2.013 c
-56.57 -4.012 l
-56.084 -4.012 l
-56.084 -2.028 l
-56.074 -1.617 55.901 -1.411 55.569 -1.411 c
-55.324 -1.411 55.151 -1.536 55.055 -1.778 c
-55.055 -4.012 l
-54.57 -4.012 l
-54.57 -1.029 l
-h
-f
-Q
- endstream endobj 54 0 obj <</BBox[720.868 437.21 745.375 431.389]/Group 90 0 R/Length 5115/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 721.2498 432.6827 cm
-0 0 m
-0 2.587 l
--0.382 2.587 l
--0.382 2.983 l
-0 2.983 l
-0 3.322 l
-0.008 3.623 0.088 3.858 0.235 4.027 c
-0.382 4.203 0.592 4.292 0.867 4.292 c
-0.963 4.292 1.062 4.277 1.162 4.247 c
-1.132 3.836 l
-1.062 3.844 0.989 3.85 0.912 3.85 c
-0.636 3.85 0.5 3.652 0.5 3.262 c
-0.5 2.983 l
-1 2.983 l
-1 2.587 l
-0.5 2.587 l
-0.5 0 l
-h
-2.697 2.528 m
-2.628 2.535 2.554 2.543 2.477 2.543 c
-2.22 2.543 2.043 2.403 1.948 2.131 c
-1.948 0 l
-1.463 0 l
-1.463 2.983 l
-1.933 2.983 l
-1.948 2.674 l
-2.072 2.917 2.257 3.042 2.492 3.042 c
-2.569 3.042 2.631 3.027 2.683 2.998 c
-h
-4.075 -0.059 m
-3.701 -0.059 3.418 0.047 3.223 0.264 c
-3.024 0.488 2.929 0.816 2.929 1.249 c
-2.929 1.616 l
-2.929 2.057 3.021 2.403 3.208 2.66 c
-3.403 2.913 3.678 3.042 4.031 3.042 c
-4.373 3.042 4.627 2.929 4.796 2.705 c
-4.972 2.476 5.064 2.131 5.075 1.66 c
-5.075 1.352 l
-3.414 1.352 l
-3.414 1.278 l
-3.414 0.955 3.473 0.72 3.591 0.573 c
-3.708 0.434 3.877 0.367 4.104 0.367 c
-4.252 0.367 4.377 0.389 4.487 0.44 c
-4.594 0.5 4.696 0.588 4.796 0.706 c
-5.045 0.396 l
-4.84 0.091 4.517 -0.059 4.075 -0.059 c
-4.031 2.616 m
-3.826 2.616 3.672 2.547 3.576 2.41 c
-3.476 2.271 3.422 2.057 3.414 1.764 c
-4.59 1.764 l
-4.59 1.837 l
-4.568 2.109 4.517 2.308 4.428 2.425 c
-4.34 2.55 4.208 2.616 4.031 2.616 c
-5.384 1.631 m
-5.384 2.09 5.465 2.439 5.633 2.674 c
-5.799 2.917 6.049 3.042 6.383 3.042 c
-6.677 3.042 6.901 2.925 7.059 2.69 c
-7.088 2.983 l
-7.53 2.983 l
-7.53 -1.147 l
-7.044 -1.147 l
-7.044 0.264 l
-6.887 0.047 6.666 -0.059 6.383 -0.059 c
-6.06 -0.059 5.81 0.058 5.633 0.294 c
-5.465 0.529 5.384 0.87 5.384 1.323 c
-h
-5.868 1.352 m
-5.868 1.018 5.916 0.768 6.016 0.602 c
-6.122 0.444 6.288 0.367 6.516 0.367 c
-6.74 0.367 6.916 0.474 7.044 0.69 c
-7.044 2.293 l
-6.905 2.506 6.729 2.616 6.516 2.616 c
-6.288 2.616 6.122 2.532 6.016 2.366 c
-5.916 2.208 5.868 1.969 5.868 1.646 c
-h
-9.635 0.264 m
-9.477 0.047 9.242 -0.059 8.93 -0.059 c
-8.665 -0.059 8.459 0.033 8.312 0.22 c
-8.173 0.404 8.106 0.679 8.106 1.043 c
-8.106 2.983 l
-8.592 2.983 l
-8.592 1.072 l
-8.592 0.61 8.731 0.382 9.018 0.382 c
-9.312 0.382 9.511 0.514 9.621 0.779 c
-9.621 2.983 l
-10.12 2.983 l
-10.12 0 l
-9.65 0 l
-h
-11.73 -0.059 m
-11.356 -0.059 11.073 0.047 10.878 0.264 c
-10.679 0.488 10.583 0.816 10.583 1.249 c
-10.583 1.616 l
-10.583 2.057 10.676 2.403 10.863 2.66 c
-11.057 2.913 11.333 3.042 11.686 3.042 c
-12.027 3.042 12.281 2.929 12.451 2.705 c
-12.627 2.476 12.719 2.131 12.729 1.66 c
-12.729 1.352 l
-11.069 1.352 l
-11.069 1.278 l
-11.069 0.955 11.127 0.72 11.245 0.573 c
-11.362 0.434 11.532 0.367 11.759 0.367 c
-11.906 0.367 12.031 0.389 12.141 0.44 c
-12.248 0.5 12.351 0.588 12.451 0.706 c
-12.7 0.396 l
-12.494 0.091 12.171 -0.059 11.73 -0.059 c
-11.686 2.616 m
-11.48 2.616 11.326 2.547 11.231 2.41 c
-11.131 2.271 11.076 2.057 11.069 1.764 c
-12.245 1.764 l
-12.245 1.837 l
-12.222 2.109 12.171 2.308 12.083 2.425 c
-11.994 2.55 11.863 2.616 11.686 2.616 c
-13.596 2.983 m
-13.612 2.66 l
-13.795 2.913 14.038 3.042 14.332 3.042 c
-14.861 3.042 15.129 2.69 15.14 1.984 c
-15.14 0 l
-14.655 0 l
-14.655 1.955 l
-14.655 2.19 14.614 2.356 14.537 2.454 c
-14.456 2.55 14.339 2.601 14.185 2.601 c
-14.067 2.601 13.957 2.561 13.862 2.484 c
-13.762 2.403 13.685 2.296 13.627 2.16 c
-13.627 0 l
-13.141 0 l
-13.141 2.983 l
-h
-16.324 3.704 m
-16.324 2.983 l
-16.779 2.983 l
-16.779 2.587 l
-16.324 2.587 l
-16.324 0.735 l
-16.324 0.617 16.342 0.529 16.382 0.47 c
-16.419 0.411 16.489 0.382 16.588 0.382 c
-16.646 0.382 16.709 0.389 16.779 0.411 c
-16.779 0 l
-16.661 -0.037 16.548 -0.059 16.441 -0.059 c
-16.243 -0.059 16.092 0.007 15.985 0.147 c
-15.886 0.282 15.838 0.477 15.838 0.735 c
-15.838 2.587 l
-15.383 2.587 l
-15.383 2.983 l
-15.838 2.983 l
-15.838 3.704 l
-h
-17.775 0 -0.501 4.233 re
-19.26 0.808 m
-19.804 2.983 l
-20.318 2.983 l
-19.348 -0.427 l
-19.278 -0.68 19.175 -0.871 19.039 -1 c
-18.899 -1.135 18.749 -1.206 18.583 -1.206 c
-18.514 -1.206 18.429 -1.191 18.333 -1.162 c
-18.333 -0.75 l
-18.437 -0.765 l
-18.572 -0.765 18.679 -0.728 18.76 -0.662 c
-18.848 -0.592 18.915 -0.474 18.965 -0.31 c
-19.054 0.029 l
-18.186 2.983 l
-18.716 2.983 l
-h
-21.876 0.264 m
-21.876 0.353 21.899 0.426 21.949 0.484 c
-22.009 0.544 22.086 0.573 22.185 0.573 c
-22.291 0.573 22.369 0.544 22.42 0.484 c
-22.479 0.426 22.508 0.353 22.508 0.264 c
-22.508 0.183 22.479 0.118 22.42 0.058 c
-22.369 0 22.291 -0.03 22.185 -0.03 c
-22.086 -0.03 22.009 0 21.949 0.058 c
-21.899 0.118 21.876 0.183 21.876 0.264 c
-21.876 3.087 m
-21.876 3.175 21.899 3.248 21.949 3.307 c
-22.009 3.366 22.086 3.395 22.185 3.395 c
-22.291 3.395 22.369 3.366 22.42 3.307 c
-22.479 3.248 22.508 3.175 22.508 3.087 c
-22.508 3.006 22.479 2.94 22.42 2.881 c
-22.369 2.822 22.291 2.792 22.185 2.792 c
-22.086 2.792 22.009 2.822 21.949 2.881 c
-21.899 2.94 21.876 3.006 21.876 3.087 c
-24.125 1.602 m
-24.125 0.779 23.941 0.051 23.582 -0.574 c
-23.376 -0.915 23.169 -1.154 22.963 -1.294 c
-22.861 -0.985 l
-23.096 -0.757 23.28 -0.42 23.42 0.029 c
-23.567 0.488 23.64 0.988 23.64 1.529 c
-23.64 1.631 l
-23.64 2.326 23.526 2.954 23.302 3.513 c
-23.173 3.806 23.026 4.041 22.861 4.218 c
-22.963 4.527 l
-23.158 4.388 23.353 4.167 23.551 3.866 c
-23.934 3.218 24.125 2.462 24.125 1.602 c
-f
-Q
- endstream endobj 55 0 obj <</BBox[320.12 122.007 531.709 116.418]/Group 91 0 R/Length 125/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 92 0 R>>/ExtGState<</GS0 12 0 R>>/Shading<</Sh0 93 0 R>>>>/Subtype/Form>>stream
-q
-320.12 122.007 211.589 -5.589 re
-W n
-q
-0 g
-/GS0 gs
-212.3990173 0 0 139.9599457 319.716156 119.2128296 cm
-BX /Sh0 sh EX Q
-Q
- endstream endobj 56 0 obj <</BBox[80.2243 128.522 302.099 76.7775]/Group 94 0 R/Length 1745/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 217.0464 128.5219 cm
-0 0 m
--12.446 0 -23.272 -2.697 -28.986 -6.673 c
--31.187 -6.214 -33.551 -5.953 -35.983 -5.953 c
--41.337 -5.953 -46.243 -7.162 -50.141 -9.161 c
--52.585 -7.919 -55.856 -7.136 -59.461 -7.136 c
--64.727 -7.136 -69.287 -8.764 -71.573 -11.135 c
--74.947 -10.329 -79.352 -9.834 -84.196 -9.834 c
--91.013 -9.834 -96.981 -10.815 -100.372 -12.274 c
--103.823 -11.439 -107.74 -10.95 -111.904 -10.95 c
--125.666 -10.95 -136.822 -16.11 -136.822 -22.478 c
--136.822 -27.097 -130.935 -31.077 -122.458 -32.915 c
--124.924 -33.932 -126.408 -35.215 -126.408 -36.612 c
--126.408 -39.901 -118.25 -42.565 -108.185 -42.565 c
--103.875 -42.565 -99.913 -42.079 -96.793 -41.26 c
--95.863 -41.863 -94.805 -42.189 -93.681 -42.189 c
--92.133 -42.189 -90.722 -41.547 -89.587 -40.47 c
--86.603 -41.984 -82.384 -42.935 -77.688 -42.935 c
--74.98 -42.935 -72.426 -42.605 -70.176 -42.05 c
--69.544 -44.417 -63.745 -46.283 -56.672 -46.283 c
--50.112 -46.283 -44.641 -44.681 -43.377 -42.565 c
--40.415 -43.832 -36.454 -44.608 -32.103 -44.608 c
--31.268 -44.608 -30.463 -44.571 -29.662 -44.516 c
--24.992 -48.768 -14.14 -51.744 -1.488 -51.744 c
-11.198 -51.744 22.082 -48.76 26.73 -44.494 c
-27.987 -44.575 29.307 -44.608 30.637 -44.608 c
-41.639 -44.608 50.558 -41.69 50.558 -38.077 c
-50.558 -37.512 50.315 -36.971 49.907 -36.45 c
-53.178 -36.138 55.463 -35.413 55.463 -34.568 c
-55.463 -34.322 55.258 -34.087 54.905 -33.87 c
-55.633 -33.892 56.349 -33.914 57.092 -33.914 c
-72.525 -33.914 85.052 -28.696 85.052 -22.295 c
-85.052 -15.889 72.525 -10.715 57.092 -10.715 c
-53.362 -10.715 49.812 -11.027 46.56 -11.575 c
-43.962 -10.697 39.783 -10.113 35.076 -10.113 c
-34.183 -10.113 33.323 -10.142 32.474 -10.183 c
-29.101 -4.358 15.842 0 0 0 c
-f
-Q
- endstream endobj 57 0 obj <</BBox[549.22 269.428 582.876 265.077]/Group 95 0 R/Length 6396/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 551.4096 266.1785 cm
-0 0 m
--1.352 0 l
--1.675 -1.043 l
--2.19 -1.043 l
--0.896 2.97 l
--0.47 2.97 l
-0.838 -1.043 l
-0.309 -1.043 l
-h
--1.22 0.441 m
--0.132 0.441 l
--0.676 2.264 l
-h
-3.05 0.324 m
-2.786 0.03 l
-2.786 -1.043 l
-2.3 -1.043 l
-2.3 3.19 l
-2.786 3.19 l
-2.786 0.662 l
-3.711 1.941 l
-4.299 1.941 l
-3.358 0.691 l
-4.432 -1.043 l
-3.859 -1.043 l
-h
-5.203 -1.043 -0.5 2.984 re
-5.233 2.735 m
-5.233 2.646 5.207 2.573 5.159 2.514 c
-5.12 2.463 5.049 2.44 4.954 2.44 c
-4.866 2.44 4.796 2.463 4.748 2.514 c
-4.707 2.573 4.689 2.639 4.689 2.72 c
-4.689 2.808 4.707 2.881 4.748 2.94 c
-4.796 2.999 4.866 3.028 4.954 3.028 c
-5.049 3.028 5.12 2.999 5.159 2.94 c
-5.207 2.881 5.233 2.812 5.233 2.735 c
-6.335 1.941 m
-6.35 1.617 l
-6.533 1.871 6.776 1.999 7.071 1.999 c
-7.599 1.999 7.867 1.646 7.879 0.941 c
-7.879 -1.043 l
-7.394 -1.043 l
-7.394 0.912 l
-7.394 1.147 7.354 1.312 7.276 1.411 c
-7.196 1.507 7.078 1.559 6.924 1.559 c
-6.805 1.559 6.695 1.518 6.6 1.441 c
-6.5 1.36 6.423 1.253 6.365 1.118 c
-6.365 -1.043 l
-5.88 -1.043 l
-5.88 1.941 l
-h
-8.327 0.588 m
-8.327 1.048 8.408 1.397 8.577 1.632 c
-8.754 1.875 9.003 1.999 9.327 1.999 c
-9.61 1.999 9.83 1.881 9.988 1.646 c
-9.988 3.19 l
-10.473 3.19 l
-10.473 -1.043 l
-10.032 -1.043 l
-10.003 -0.72 l
-9.845 -0.977 9.621 -1.102 9.327 -1.102 c
-9.01 -1.102 8.768 -0.984 8.592 -0.749 c
-8.415 -0.507 8.327 -0.161 8.327 0.279 c
-h
-8.812 0.309 m
-8.812 -0.025 8.86 -0.272 8.96 -0.426 c
-9.055 -0.584 9.216 -0.661 9.444 -0.661 c
-9.687 -0.661 9.87 -0.544 9.988 -0.309 c
-9.988 1.206 l
-9.86 1.441 9.679 1.559 9.444 1.559 c
-9.216 1.559 9.055 1.478 8.96 1.324 c
-8.86 1.166 8.812 0.927 8.812 0.603 c
-h
-12.145 0.588 m
-12.145 1.018 12.248 1.36 12.453 1.617 c
-12.667 1.871 12.946 1.999 13.292 1.999 c
-13.633 1.999 13.909 1.871 14.115 1.617 c
-14.328 1.371 14.442 1.037 14.453 0.618 c
-14.453 0.309 l
-14.453 -0.124 14.343 -0.467 14.13 -0.72 c
-13.924 -0.977 13.644 -1.102 13.292 -1.102 c
-12.946 -1.102 12.675 -0.981 12.469 -0.735 c
-12.263 -0.492 12.152 -0.158 12.145 0.265 c
-h
-12.63 0.309 m
-12.63 -0.007 12.689 -0.249 12.806 -0.426 c
-12.931 -0.595 13.093 -0.675 13.292 -0.675 c
-13.722 -0.675 13.945 -0.367 13.968 0.25 c
-13.968 0.588 l
-13.968 0.89 13.901 1.133 13.777 1.309 c
-13.66 1.485 13.498 1.573 13.292 1.573 c
-13.093 1.573 12.931 1.485 12.806 1.309 c
-12.689 1.133 12.63 0.89 12.63 0.588 c
-h
-15.1 -1.043 m
-15.1 1.544 l
-14.718 1.544 l
-14.718 1.941 l
-15.1 1.941 l
-15.1 2.278 l
-15.107 2.58 15.188 2.816 15.335 2.984 c
-15.482 3.161 15.692 3.249 15.967 3.249 c
-16.062 3.249 16.162 3.234 16.261 3.205 c
-16.232 2.793 l
-16.162 2.801 16.089 2.808 16.011 2.808 c
-15.736 2.808 15.599 2.61 15.599 2.22 c
-15.599 1.941 l
-16.099 1.941 l
-16.099 1.544 l
-15.599 1.544 l
-15.599 -1.043 l
-h
-19.293 -1.043 m
-19.264 -0.977 19.241 -0.866 19.233 -0.72 c
-19.057 -0.977 18.837 -1.102 18.572 -1.102 c
-18.296 -1.102 18.08 -1.028 17.926 -0.882 c
-17.779 -0.727 17.705 -0.511 17.705 -0.235 c
-17.705 0.067 17.808 0.309 18.014 0.485 c
-18.219 0.669 18.502 0.765 18.867 0.765 c
-19.219 0.765 l
-19.219 1.088 l
-19.219 1.264 19.179 1.386 19.102 1.455 c
-19.021 1.532 18.903 1.573 18.749 1.573 c
-18.602 1.573 18.477 1.529 18.381 1.441 c
-18.293 1.353 18.249 1.243 18.249 1.118 c
-17.764 1.118 l
-17.764 1.264 17.808 1.405 17.897 1.544 c
-17.984 1.69 18.102 1.801 18.249 1.881 c
-18.404 1.959 18.576 1.999 18.763 1.999 c
-19.075 1.999 19.311 1.918 19.469 1.764 c
-19.624 1.617 19.704 1.397 19.704 1.103 c
-19.704 -0.396 l
-19.711 -0.631 19.748 -0.833 19.807 -0.999 c
-19.807 -1.043 l
-h
-18.646 -0.661 m
-18.763 -0.661 18.874 -0.628 18.984 -0.558 c
-19.09 -0.492 19.168 -0.407 19.219 -0.309 c
-19.219 0.397 l
-18.955 0.397 l
-18.72 0.397 18.532 0.346 18.396 0.25 c
-18.267 0.151 18.205 0.008 18.205 -0.176 c
-18.205 -0.345 18.234 -0.467 18.293 -0.544 c
-18.359 -0.625 18.477 -0.661 18.646 -0.661 c
-22.931 -0.278 m
-22.931 -0.172 22.89 -0.084 22.813 -0.014 c
-22.732 0.063 22.581 0.151 22.358 0.25 c
-22.092 0.357 21.905 0.449 21.799 0.53 c
-21.689 0.607 21.612 0.695 21.564 0.794 c
-21.512 0.89 21.49 1.008 21.49 1.147 c
-21.49 1.389 21.579 1.592 21.755 1.75 c
-21.931 1.915 22.155 1.999 22.431 1.999 c
-22.725 1.999 22.96 1.912 23.137 1.735 c
-23.312 1.565 23.401 1.353 23.401 1.088 c
-22.916 1.088 l
-22.916 1.224 22.865 1.338 22.769 1.426 c
-22.681 1.522 22.566 1.573 22.431 1.573 c
-22.284 1.573 22.17 1.532 22.092 1.455 c
-22.012 1.386 21.976 1.287 21.976 1.162 c
-21.976 1.062 22.005 0.985 22.063 0.927 c
-22.122 0.867 22.262 0.786 22.489 0.691 c
-22.85 0.545 23.096 0.401 23.225 0.265 c
-23.36 0.136 23.43 -0.037 23.43 -0.249 c
-23.43 -0.507 23.335 -0.712 23.152 -0.866 c
-22.975 -1.024 22.74 -1.102 22.446 -1.102 c
-22.13 -1.102 21.876 -1.014 21.681 -0.837 c
-21.494 -0.654 21.402 -0.422 21.402 -0.147 c
-21.887 -0.147 l
-21.895 -0.316 21.946 -0.448 22.034 -0.544 c
-22.13 -0.631 22.269 -0.675 22.446 -0.675 c
-22.6 -0.675 22.718 -0.643 22.798 -0.573 c
-22.886 -0.507 22.931 -0.407 22.931 -0.278 c
-24.371 1.632 m
-24.555 1.875 24.79 1.999 25.076 1.999 c
-25.606 1.999 25.874 1.646 25.885 0.941 c
-25.885 -1.043 l
-25.4 -1.043 l
-25.4 0.912 l
-25.4 1.147 25.359 1.312 25.282 1.411 c
-25.201 1.507 25.084 1.559 24.93 1.559 c
-24.812 1.559 24.702 1.518 24.606 1.441 c
-24.507 1.36 24.43 1.253 24.371 1.118 c
-24.371 -1.043 l
-23.886 -1.043 l
-23.886 3.19 l
-24.371 3.19 l
-h
-27.487 -1.102 m
-27.112 -1.102 26.83 -0.995 26.635 -0.779 c
-26.437 -0.554 26.341 -0.228 26.341 0.206 c
-26.341 0.574 l
-26.341 1.015 26.433 1.36 26.62 1.617 c
-26.815 1.871 27.091 1.999 27.443 1.999 c
-27.785 1.999 28.039 1.885 28.207 1.661 c
-28.384 1.434 28.476 1.088 28.487 0.618 c
-28.487 0.309 l
-26.826 0.309 l
-26.826 0.235 l
-26.826 -0.087 26.884 -0.323 27.002 -0.47 c
-27.12 -0.61 27.289 -0.675 27.517 -0.675 c
-27.663 -0.675 27.789 -0.654 27.899 -0.602 c
-28.006 -0.544 28.108 -0.455 28.207 -0.338 c
-28.457 -0.646 l
-28.251 -0.951 27.929 -1.102 27.487 -1.102 c
-27.443 1.573 m
-27.237 1.573 27.083 1.503 26.988 1.368 c
-26.888 1.228 26.834 1.015 26.826 0.721 c
-28.002 0.721 l
-28.002 0.794 l
-27.979 1.066 27.929 1.264 27.84 1.382 c
-27.752 1.507 27.62 1.573 27.443 1.573 c
-29.427 -1.043 -0.5 4.233 re
-30.306 -1.043 m
-30.306 1.544 l
-29.924 1.544 l
-29.924 1.941 l
-30.306 1.941 l
-30.306 2.278 l
-30.313 2.58 30.394 2.816 30.541 2.984 c
-30.688 3.161 30.898 3.249 31.173 3.249 c
-31.268 3.249 31.368 3.234 31.467 3.205 c
-31.438 2.793 l
-31.368 2.801 31.295 2.808 31.218 2.808 c
-30.942 2.808 30.805 2.61 30.805 2.22 c
-30.805 1.941 l
-31.305 1.941 l
-31.305 1.544 l
-30.805 1.544 l
-30.805 -1.043 l
-h
-f
-Q
- endstream endobj 58 0 obj <</BBox[553.089 262.843 578.922 258.492]/Group 96 0 R/Length 6110/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 553.4717 258.55 cm
-0 0 m
-0 2.587 l
--0.383 2.587 l
--0.383 2.984 l
-0 2.984 l
-0 3.322 l
-0.007 3.624 0.087 3.859 0.235 4.027 c
-0.382 4.204 0.591 4.293 0.866 4.293 c
-0.962 4.293 1.061 4.278 1.161 4.248 c
-1.132 3.836 l
-1.061 3.844 0.988 3.851 0.911 3.851 c
-0.635 3.851 0.5 3.653 0.5 3.263 c
-0.5 2.984 l
-0.999 2.984 l
-0.999 2.587 l
-0.5 2.587 l
-0.5 0 l
-h
-1.359 1.631 m
-1.359 2.061 1.462 2.404 1.668 2.66 c
-1.881 2.914 2.16 3.042 2.506 3.042 c
-2.848 3.042 3.123 2.914 3.329 2.66 c
-3.542 2.414 3.656 2.08 3.667 1.661 c
-3.667 1.353 l
-3.667 0.919 3.557 0.577 3.343 0.324 c
-3.137 0.066 2.859 -0.058 2.506 -0.058 c
-2.16 -0.058 1.888 0.062 1.683 0.309 c
-1.477 0.551 1.367 0.885 1.359 1.309 c
-h
-1.844 1.353 m
-1.844 1.037 1.903 0.794 2.021 0.617 c
-2.146 0.449 2.308 0.368 2.506 0.368 c
-2.936 0.368 3.16 0.676 3.182 1.294 c
-3.182 1.631 l
-3.182 1.933 3.116 2.176 2.991 2.352 c
-2.873 2.529 2.711 2.616 2.506 2.616 c
-2.308 2.616 2.146 2.529 2.021 2.352 c
-1.903 2.176 1.844 1.933 1.844 1.631 c
-h
-5.339 2.529 m
-5.269 2.535 5.196 2.543 5.119 2.543 c
-4.862 2.543 4.685 2.404 4.589 2.132 c
-4.589 0 l
-4.104 0 l
-4.104 2.984 l
-4.575 2.984 l
-4.589 2.675 l
-4.714 2.918 4.898 3.042 5.134 3.042 c
-5.211 3.042 5.273 3.028 5.325 2.999 c
-h
-7.548 3.705 m
-7.548 2.984 l
-8.003 2.984 l
-8.003 2.587 l
-7.548 2.587 l
-7.548 0.735 l
-7.548 0.617 7.565 0.53 7.606 0.47 c
-7.643 0.412 7.713 0.382 7.812 0.382 c
-7.871 0.382 7.933 0.389 8.003 0.412 c
-8.003 0 l
-7.885 -0.037 7.771 -0.058 7.665 -0.058 c
-7.467 -0.058 7.316 0.008 7.21 0.147 c
-7.11 0.283 7.062 0.478 7.062 0.735 c
-7.062 2.587 l
-6.607 2.587 l
-6.607 2.984 l
-7.062 2.984 l
-7.062 3.705 l
-h
-8.955 2.675 m
-9.138 2.918 9.374 3.042 9.66 3.042 c
-10.19 3.042 10.458 2.69 10.469 1.984 c
-10.469 0 l
-9.984 0 l
-9.984 1.955 l
-9.984 2.19 9.944 2.356 9.866 2.454 c
-9.786 2.55 9.668 2.602 9.514 2.602 c
-9.396 2.602 9.286 2.562 9.19 2.484 c
-9.091 2.404 9.014 2.296 8.955 2.161 c
-8.955 0 l
-8.469 0 l
-8.469 4.233 l
-8.955 4.233 l
-h
-12.068 -0.058 m
-11.692 -0.058 11.409 0.048 11.215 0.264 c
-11.016 0.489 10.921 0.816 10.921 1.249 c
-10.921 1.617 l
-10.921 2.058 11.013 2.404 11.2 2.66 c
-11.395 2.914 11.671 3.042 12.024 3.042 c
-12.365 3.042 12.619 2.929 12.787 2.705 c
-12.964 2.477 13.056 2.132 13.067 1.661 c
-13.067 1.353 l
-11.406 1.353 l
-11.406 1.278 l
-11.406 0.956 11.465 0.721 11.582 0.573 c
-11.7 0.434 11.869 0.368 12.097 0.368 c
-12.244 0.368 12.369 0.389 12.479 0.441 c
-12.585 0.5 12.689 0.588 12.787 0.706 c
-13.038 0.397 l
-12.832 0.092 12.508 -0.058 12.068 -0.058 c
-12.024 2.616 m
-11.818 2.616 11.663 2.547 11.567 2.411 c
-11.469 2.271 11.413 2.058 11.406 1.764 c
-12.582 1.764 l
-12.582 1.837 l
-12.56 2.109 12.508 2.308 12.421 2.425 c
-12.332 2.55 12.199 2.616 12.024 2.616 c
-15.139 2.984 m
-15.154 2.705 l
-15.33 2.929 15.569 3.042 15.875 3.042 c
-16.205 3.042 16.437 2.896 16.565 2.602 c
-16.749 2.896 17.01 3.042 17.344 3.042 c
-17.903 3.042 18.186 2.697 18.197 2.014 c
-18.197 0 l
-17.712 0 l
-17.712 1.97 l
-17.712 2.183 17.672 2.341 17.595 2.44 c
-17.514 2.547 17.381 2.602 17.198 2.602 c
-17.051 2.602 16.933 2.543 16.845 2.425 c
-16.756 2.315 16.701 2.176 16.683 1.999 c
-16.683 0 l
-16.198 0 l
-16.198 1.984 l
-16.187 2.396 16.014 2.602 15.683 2.602 c
-15.438 2.602 15.264 2.477 15.169 2.234 c
-15.169 0 l
-14.684 0 l
-14.684 2.984 l
-h
-19.704 -0.058 m
-19.328 -0.058 19.046 0.048 18.852 0.264 c
-18.653 0.489 18.557 0.816 18.557 1.249 c
-18.557 1.617 l
-18.557 2.058 18.649 2.404 18.836 2.66 c
-19.031 2.914 19.307 3.042 19.66 3.042 c
-20.001 3.042 20.255 2.929 20.423 2.705 c
-20.6 2.477 20.693 2.132 20.703 1.661 c
-20.703 1.353 l
-19.042 1.353 l
-19.042 1.278 l
-19.042 0.956 19.101 0.721 19.218 0.573 c
-19.336 0.434 19.505 0.368 19.733 0.368 c
-19.88 0.368 20.005 0.389 20.115 0.441 c
-20.222 0.5 20.325 0.588 20.423 0.706 c
-20.674 0.397 l
-20.468 0.092 20.145 -0.058 19.704 -0.058 c
-19.66 2.616 m
-19.453 2.616 19.299 2.547 19.204 2.411 c
-19.104 2.271 19.05 2.058 19.042 1.764 c
-20.218 1.764 l
-20.218 1.837 l
-20.196 2.109 20.145 2.308 20.057 2.425 c
-19.968 2.55 19.835 2.616 19.66 2.616 c
-22.555 0.765 m
-22.555 0.871 22.515 0.96 22.438 1.029 c
-22.357 1.106 22.206 1.195 21.982 1.294 c
-21.717 1.4 21.53 1.492 21.423 1.573 c
-21.313 1.65 21.236 1.738 21.188 1.837 c
-21.136 1.933 21.115 2.051 21.115 2.19 c
-21.115 2.433 21.203 2.635 21.379 2.793 c
-21.556 2.959 21.78 3.042 22.056 3.042 c
-22.349 3.042 22.584 2.955 22.761 2.778 c
-22.937 2.609 23.026 2.396 23.026 2.132 c
-22.54 2.132 l
-22.54 2.267 22.489 2.381 22.393 2.469 c
-22.305 2.565 22.191 2.616 22.056 2.616 c
-21.909 2.616 21.795 2.576 21.717 2.499 c
-21.637 2.429 21.599 2.33 21.599 2.205 c
-21.599 2.105 21.629 2.028 21.688 1.97 c
-21.747 1.911 21.886 1.83 22.114 1.735 c
-22.474 1.588 22.721 1.444 22.85 1.309 c
-22.985 1.18 23.055 1.007 23.055 0.794 c
-23.055 0.536 22.96 0.331 22.775 0.177 c
-22.599 0.019 22.364 -0.058 22.07 -0.058 c
-21.755 -0.058 21.501 0.029 21.306 0.206 c
-21.119 0.389 21.026 0.621 21.026 0.897 c
-21.512 0.897 l
-21.519 0.727 21.57 0.595 21.659 0.5 c
-21.755 0.412 21.894 0.368 22.07 0.368 c
-22.225 0.368 22.343 0.401 22.422 0.47 c
-22.511 0.536 22.555 0.636 22.555 0.765 c
-24.951 0.765 m
-24.951 0.871 24.911 0.96 24.834 1.029 c
-24.753 1.106 24.602 1.195 24.378 1.294 c
-24.113 1.4 23.926 1.492 23.82 1.573 c
-23.709 1.65 23.632 1.738 23.584 1.837 c
-23.533 1.933 23.511 2.051 23.511 2.19 c
-23.511 2.433 23.598 2.635 23.775 2.793 c
-23.951 2.959 24.176 3.042 24.452 3.042 c
-24.745 3.042 24.98 2.955 25.157 2.778 c
-25.333 2.609 25.422 2.396 25.422 2.132 c
-24.936 2.132 l
-24.936 2.267 24.885 2.381 24.789 2.469 c
-24.701 2.565 24.587 2.616 24.452 2.616 c
-24.304 2.616 24.19 2.576 24.113 2.499 c
-24.032 2.429 23.995 2.33 23.995 2.205 c
-23.995 2.105 24.026 2.028 24.084 1.97 c
-24.143 1.911 24.282 1.83 24.51 1.735 c
-24.87 1.588 25.117 1.444 25.245 1.309 c
-25.381 1.18 25.451 1.007 25.451 0.794 c
-25.451 0.536 25.356 0.331 25.171 0.177 c
-24.995 0.019 24.76 -0.058 24.466 -0.058 c
-24.15 -0.058 23.897 0.029 23.702 0.206 c
-23.515 0.389 23.423 0.621 23.423 0.897 c
-23.908 0.897 l
-23.914 0.727 23.966 0.595 24.055 0.5 c
-24.15 0.412 24.29 0.368 24.466 0.368 c
-24.62 0.368 24.738 0.401 24.819 0.47 c
-24.907 0.536 24.951 0.636 24.951 0.765 c
-f
-Q
- endstream endobj 59 0 obj <</BBox[539.662 256.198 591.994 250.76]/Group 97 0 R/Length 10262/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 540.7341 252.7729 cm
-0 0 m
-0.545 2.176 l
-1.058 2.176 l
-0.088 -1.234 l
-0.019 -1.488 -0.084 -1.679 -0.22 -1.807 c
--0.359 -1.944 -0.51 -2.013 -0.675 -2.013 c
--0.745 -2.013 -0.83 -1.999 -0.926 -1.969 c
--0.926 -1.558 l
--0.823 -1.572 l
--0.687 -1.572 -0.58 -1.535 -0.5 -1.469 c
--0.411 -1.4 -0.345 -1.282 -0.293 -1.117 c
--0.205 -0.779 l
--1.072 2.176 l
--0.544 2.176 l
-h
-1.239 0.823 m
-1.239 1.253 1.342 1.595 1.548 1.852 c
-1.761 2.106 2.04 2.234 2.386 2.234 c
-2.727 2.234 3.003 2.106 3.209 1.852 c
-3.422 1.606 3.535 1.272 3.547 0.853 c
-3.547 0.545 l
-3.547 0.111 3.437 -0.231 3.223 -0.484 c
-3.018 -0.742 2.739 -0.866 2.386 -0.866 c
-2.04 -0.866 1.768 -0.746 1.563 -0.5 c
-1.357 -0.257 1.247 0.077 1.239 0.5 c
-h
-1.724 0.545 m
-1.724 0.229 1.783 -0.014 1.9 -0.191 c
-2.025 -0.359 2.187 -0.44 2.386 -0.44 c
-2.816 -0.44 3.04 -0.132 3.061 0.485 c
-3.061 0.823 l
-3.061 1.125 2.995 1.368 2.87 1.544 c
-2.753 1.721 2.591 1.808 2.386 1.808 c
-2.187 1.808 2.025 1.721 1.9 1.544 c
-1.783 1.368 1.724 1.125 1.724 0.823 c
-h
-5.501 -0.544 m
-5.343 -0.76 5.108 -0.866 4.796 -0.866 c
-4.532 -0.866 4.326 -0.775 4.179 -0.588 c
-4.039 -0.404 3.973 -0.128 3.973 0.235 c
-3.973 2.176 l
-4.458 2.176 l
-4.458 0.265 l
-4.458 -0.199 4.597 -0.426 4.884 -0.426 c
-5.178 -0.426 5.376 -0.294 5.486 -0.029 c
-5.486 2.176 l
-5.987 2.176 l
-5.987 -0.808 l
-5.517 -0.808 l
-h
-7.641 0.823 m
-7.641 1.283 7.722 1.632 7.89 1.867 c
-8.067 2.11 8.316 2.234 8.64 2.234 c
-8.923 2.234 9.143 2.117 9.301 1.881 c
-9.301 3.425 l
-9.787 3.425 l
-9.787 -0.808 l
-9.345 -0.808 l
-9.316 -0.484 l
-9.158 -0.742 8.934 -0.866 8.64 -0.866 c
-8.324 -0.866 8.081 -0.749 7.905 -0.514 c
-7.728 -0.272 7.641 0.074 7.641 0.515 c
-h
-8.125 0.545 m
-8.125 0.21 8.173 -0.037 8.272 -0.191 c
-8.368 -0.349 8.53 -0.426 8.757 -0.426 c
-9 -0.426 9.184 -0.309 9.301 -0.073 c
-9.301 1.441 l
-9.172 1.676 8.993 1.794 8.757 1.794 c
-8.53 1.794 8.368 1.713 8.272 1.559 c
-8.173 1.401 8.125 1.162 8.125 0.838 c
-h
-10.253 0.823 m
-10.253 1.253 10.356 1.595 10.562 1.852 c
-10.775 2.106 11.054 2.234 11.4 2.234 c
-11.741 2.234 12.017 2.106 12.223 1.852 c
-12.436 1.606 12.549 1.272 12.561 0.853 c
-12.561 0.545 l
-12.561 0.111 12.451 -0.231 12.237 -0.484 c
-12.032 -0.742 11.753 -0.866 11.4 -0.866 c
-11.054 -0.866 10.782 -0.746 10.577 -0.5 c
-10.371 -0.257 10.261 0.077 10.253 0.5 c
-h
-10.739 0.545 m
-10.739 0.229 10.797 -0.014 10.914 -0.191 c
-11.04 -0.359 11.201 -0.44 11.4 -0.44 c
-11.83 -0.44 12.054 -0.132 12.075 0.485 c
-12.075 0.823 l
-12.075 1.125 12.01 1.368 11.884 1.544 c
-11.767 1.721 11.605 1.808 11.4 1.808 c
-11.201 1.808 11.04 1.721 10.914 1.544 c
-10.797 1.368 10.739 1.125 10.739 0.823 c
-h
-13.457 2.176 m
-13.472 1.852 l
-13.656 2.106 13.899 2.234 14.192 2.234 c
-14.722 2.234 14.99 1.881 15.001 1.176 c
-15.001 -0.808 l
-14.516 -0.808 l
-14.516 1.147 l
-14.516 1.382 14.475 1.548 14.398 1.646 c
-14.317 1.742 14.2 1.794 14.045 1.794 c
-13.928 1.794 13.818 1.754 13.722 1.676 c
-13.623 1.595 13.546 1.488 13.486 1.353 c
-13.486 -0.808 l
-13.002 -0.808 l
-13.002 2.176 l
-h
-15.607 3.117 m
-15.563 2.103 l
-15.196 2.103 l
-15.21 3.425 l
-15.607 3.425 l
-h
-16.831 2.897 m
-16.831 2.176 l
-17.286 2.176 l
-17.286 1.779 l
-16.831 1.779 l
-16.831 -0.073 l
-16.831 -0.191 16.85 -0.278 16.89 -0.338 c
-16.927 -0.396 16.996 -0.426 17.095 -0.426 c
-17.154 -0.426 17.216 -0.419 17.286 -0.396 c
-17.286 -0.808 l
-17.169 -0.845 17.055 -0.866 16.948 -0.866 c
-16.75 -0.866 16.599 -0.801 16.493 -0.661 c
-16.393 -0.525 16.345 -0.33 16.345 -0.073 c
-16.345 1.779 l
-15.89 1.779 l
-15.89 2.176 l
-16.345 2.176 l
-16.345 2.897 l
-h
-21.178 0.044 m
-21.634 2.176 l
-22.119 2.176 l
-21.384 -0.808 l
-21.002 -0.808 l
-20.414 1.324 l
-19.84 -0.808 l
-19.458 -0.808 l
-18.724 2.176 l
-19.208 2.176 l
-19.678 0.103 l
-20.223 2.176 l
-20.605 2.176 l
-h
-23.912 -0.808 m
-23.883 -0.742 23.861 -0.631 23.853 -0.484 c
-23.677 -0.742 23.456 -0.866 23.192 -0.866 c
-22.917 -0.866 22.699 -0.793 22.545 -0.646 c
-22.398 -0.492 22.325 -0.276 22.325 0 c
-22.325 0.302 22.427 0.545 22.633 0.721 c
-22.839 0.904 23.122 1 23.486 1 c
-23.838 1 l
-23.838 1.324 l
-23.838 1.5 23.798 1.621 23.721 1.691 c
-23.64 1.768 23.522 1.808 23.368 1.808 c
-23.221 1.808 23.096 1.764 23.001 1.676 c
-22.913 1.588 22.868 1.478 22.868 1.353 c
-22.383 1.353 l
-22.383 1.5 22.427 1.64 22.516 1.779 c
-22.604 1.926 22.722 2.036 22.868 2.117 c
-23.023 2.194 23.196 2.234 23.383 2.234 c
-23.695 2.234 23.931 2.153 24.089 1.999 c
-24.243 1.852 24.324 1.632 24.324 1.338 c
-24.324 -0.161 l
-24.331 -0.396 24.368 -0.598 24.426 -0.764 c
-24.426 -0.808 l
-h
-23.265 -0.426 m
-23.383 -0.426 23.493 -0.393 23.603 -0.323 c
-23.71 -0.257 23.788 -0.172 23.838 -0.073 c
-23.838 0.632 l
-23.574 0.632 l
-23.339 0.632 23.152 0.581 23.015 0.485 c
-22.887 0.387 22.824 0.243 22.824 0.059 c
-22.824 -0.11 22.853 -0.231 22.913 -0.309 c
-22.979 -0.389 23.096 -0.426 23.265 -0.426 c
-25.36 2.176 m
-25.375 1.852 l
-25.558 2.106 25.801 2.234 26.095 2.234 c
-26.624 2.234 26.892 1.881 26.903 1.176 c
-26.903 -0.808 l
-26.418 -0.808 l
-26.418 1.147 l
-26.418 1.382 26.378 1.548 26.301 1.646 c
-26.22 1.742 26.103 1.794 25.948 1.794 c
-25.831 1.794 25.72 1.754 25.625 1.676 c
-25.525 1.595 25.448 1.488 25.39 1.353 c
-25.39 -0.808 l
-24.904 -0.808 l
-24.904 2.176 l
-h
-28.091 2.897 m
-28.091 2.176 l
-28.546 2.176 l
-28.546 1.779 l
-28.091 1.779 l
-28.091 -0.073 l
-28.091 -0.191 28.108 -0.278 28.149 -0.338 c
-28.185 -0.396 28.256 -0.426 28.355 -0.426 c
-28.414 -0.426 28.476 -0.419 28.546 -0.396 c
-28.546 -0.808 l
-28.428 -0.845 28.314 -0.866 28.208 -0.866 c
-28.01 -0.866 27.859 -0.801 27.752 -0.661 c
-27.653 -0.525 27.605 -0.33 27.605 -0.073 c
-27.605 1.779 l
-27.15 1.779 l
-27.15 2.176 l
-27.605 2.176 l
-27.605 2.897 l
-h
-30.847 2.897 m
-30.847 2.176 l
-31.302 2.176 l
-31.302 1.779 l
-30.847 1.779 l
-30.847 -0.073 l
-30.847 -0.191 30.865 -0.278 30.905 -0.338 c
-30.942 -0.396 31.012 -0.426 31.111 -0.426 c
-31.17 -0.426 31.233 -0.419 31.302 -0.396 c
-31.302 -0.808 l
-31.185 -0.845 31.071 -0.866 30.964 -0.866 c
-30.766 -0.866 30.615 -0.801 30.508 -0.661 c
-30.409 -0.525 30.362 -0.33 30.362 -0.073 c
-30.362 1.779 l
-29.906 1.779 l
-29.906 2.176 l
-30.362 2.176 l
-30.362 2.897 l
-h
-31.615 0.823 m
-31.615 1.253 31.717 1.595 31.923 1.852 c
-32.137 2.106 32.416 2.234 32.761 2.234 c
-33.103 2.234 33.378 2.106 33.584 1.852 c
-33.797 1.606 33.911 1.272 33.922 0.853 c
-33.922 0.545 l
-33.922 0.111 33.812 -0.231 33.599 -0.484 c
-33.393 -0.742 33.114 -0.866 32.761 -0.866 c
-32.416 -0.866 32.143 -0.746 31.938 -0.5 c
-31.732 -0.257 31.622 0.077 31.615 0.5 c
-h
-32.1 0.545 m
-32.1 0.229 32.158 -0.014 32.276 -0.191 c
-32.401 -0.359 32.563 -0.44 32.761 -0.44 c
-33.191 -0.44 33.415 -0.132 33.437 0.485 c
-33.437 0.823 l
-33.437 1.125 33.371 1.368 33.246 1.544 c
-33.128 1.721 32.966 1.808 32.761 1.808 c
-32.563 1.808 32.401 1.721 32.276 1.544 c
-32.158 1.368 32.1 1.125 32.1 0.823 c
-h
-36.094 -0.808 -0.501 2.984 re
-36.124 2.97 m
-36.124 2.881 36.098 2.808 36.05 2.749 c
-36.01 2.698 35.94 2.675 35.844 2.675 c
-35.756 2.675 35.686 2.698 35.638 2.749 c
-35.598 2.808 35.58 2.874 35.58 2.955 c
-35.58 3.043 35.598 3.117 35.638 3.175 c
-35.686 3.234 35.756 3.263 35.844 3.263 c
-35.94 3.263 36.01 3.234 36.05 3.175 c
-36.098 3.117 36.124 3.047 36.124 2.97 c
-37.226 2.176 m
-37.24 1.852 l
-37.425 2.106 37.667 2.234 37.961 2.234 c
-38.49 2.234 38.758 1.881 38.769 1.176 c
-38.769 -0.808 l
-38.284 -0.808 l
-38.284 1.147 l
-38.284 1.382 38.244 1.548 38.167 1.646 c
-38.086 1.742 37.968 1.794 37.814 1.794 c
-37.696 1.794 37.586 1.754 37.49 1.676 c
-37.392 1.595 37.315 1.488 37.255 1.353 c
-37.255 -0.808 l
-36.77 -0.808 l
-36.77 2.176 l
-h
-40.349 -0.44 m
-40.515 -0.44 40.648 -0.393 40.746 -0.294 c
-40.842 -0.199 40.897 -0.055 40.908 0.133 c
-41.363 0.133 l
-41.353 -0.154 41.25 -0.393 41.055 -0.588 c
-40.868 -0.775 40.632 -0.866 40.349 -0.866 c
-39.985 -0.866 39.707 -0.749 39.511 -0.514 c
-39.314 -0.278 39.218 0.067 39.218 0.53 c
-39.218 0.853 l
-39.218 1.301 39.31 1.646 39.497 1.881 c
-39.692 2.117 39.975 2.234 40.349 2.234 c
-40.65 2.234 40.893 2.135 41.07 1.941 c
-41.253 1.742 41.353 1.478 41.363 1.147 c
-40.908 1.147 l
-40.885 1.371 40.827 1.536 40.731 1.646 c
-40.644 1.754 40.515 1.808 40.349 1.808 c
-40.133 1.808 39.971 1.735 39.864 1.588 c
-39.765 1.448 39.71 1.22 39.703 0.897 c
-39.703 0.515 l
-39.703 0.162 39.75 -0.087 39.85 -0.235 c
-39.956 -0.374 40.122 -0.44 40.349 -0.44 c
-42.29 -0.808 -0.5 4.233 re
-44.476 -0.544 m
-44.318 -0.76 44.083 -0.866 43.771 -0.866 c
-43.506 -0.866 43.3 -0.775 43.154 -0.588 c
-43.013 -0.404 42.948 -0.128 42.948 0.235 c
-42.948 2.176 l
-43.432 2.176 l
-43.432 0.265 l
-43.432 -0.199 43.572 -0.426 43.859 -0.426 c
-44.153 -0.426 44.351 -0.294 44.461 -0.029 c
-44.461 2.176 l
-44.961 2.176 l
-44.961 -0.808 l
-44.49 -0.808 l
-h
-45.413 0.823 m
-45.413 1.283 45.494 1.632 45.664 1.867 c
-45.839 2.11 46.09 2.234 46.412 2.234 c
-46.696 2.234 46.917 2.117 47.075 1.881 c
-47.075 3.425 l
-47.559 3.425 l
-47.559 -0.808 l
-47.118 -0.808 l
-47.089 -0.484 l
-46.931 -0.742 46.707 -0.866 46.412 -0.866 c
-46.096 -0.866 45.855 -0.749 45.678 -0.514 c
-45.502 -0.272 45.413 0.074 45.413 0.515 c
-h
-45.899 0.545 m
-45.899 0.21 45.946 -0.037 46.045 -0.191 c
-46.14 -0.349 46.302 -0.426 46.53 -0.426 c
-46.773 -0.426 46.957 -0.309 47.075 -0.073 c
-47.075 1.441 l
-46.946 1.676 46.765 1.794 46.53 1.794 c
-46.302 1.794 46.14 1.713 46.045 1.559 c
-45.946 1.401 45.899 1.162 45.899 0.838 c
-h
-49.188 -0.866 m
-48.812 -0.866 48.529 -0.76 48.334 -0.544 c
-48.136 -0.319 48.041 0.008 48.041 0.441 c
-48.041 0.809 l
-48.041 1.25 48.133 1.595 48.32 1.852 c
-48.515 2.106 48.791 2.234 49.143 2.234 c
-49.485 2.234 49.739 2.12 49.907 1.897 c
-50.084 1.669 50.175 1.324 50.187 0.853 c
-50.187 0.545 l
-48.525 0.545 l
-48.525 0.47 l
-48.525 0.148 48.585 -0.087 48.702 -0.235 c
-48.82 -0.374 48.989 -0.44 49.217 -0.44 c
-49.363 -0.44 49.489 -0.419 49.599 -0.367 c
-49.705 -0.309 49.808 -0.22 49.907 -0.103 c
-50.157 -0.411 l
-49.951 -0.716 49.628 -0.866 49.188 -0.866 c
-49.143 1.808 m
-48.937 1.808 48.783 1.738 48.687 1.603 c
-48.588 1.463 48.533 1.25 48.525 0.956 c
-49.701 0.956 l
-49.701 1.029 l
-49.68 1.301 49.628 1.5 49.54 1.617 c
-49.452 1.742 49.319 1.808 49.143 1.808 c
-50.628 -0.544 m
-50.628 -0.455 50.649 -0.382 50.701 -0.323 c
-50.76 -0.264 50.838 -0.235 50.936 -0.235 c
-51.043 -0.235 51.12 -0.264 51.172 -0.323 c
-51.231 -0.382 51.26 -0.455 51.26 -0.544 c
-51.26 -0.625 51.231 -0.691 51.172 -0.749 c
-51.12 -0.808 51.043 -0.837 50.936 -0.837 c
-50.838 -0.837 50.76 -0.808 50.701 -0.749 c
-50.649 -0.691 50.628 -0.625 50.628 -0.544 c
-f
-Q
- endstream endobj 60 0 obj <</BBox[733.061 286.676 768.669 281.238]/Group 98 0 R/Length 5722/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 735.7654 284.1042 cm
-0 0 m
-0 -0.551 -0.118 -0.977 -0.353 -1.278 c
--0.588 -1.573 -0.919 -1.72 -1.338 -1.72 c
--1.76 -1.72 -2.095 -1.58 -2.338 -1.294 c
--2.573 -0.999 -2.697 -0.588 -2.705 -0.058 c
--2.705 0.69 l
--2.705 1.228 -2.587 1.65 -2.352 1.955 c
--2.109 2.257 -1.775 2.411 -1.353 2.411 c
--0.933 2.411 -0.603 2.263 -0.368 1.97 c
--0.133 1.675 -0.011 1.257 0 0.721 c
-h
--0.5 0.69 m
--0.5 1.121 -0.573 1.44 -0.721 1.646 c
--0.86 1.852 -1.07 1.955 -1.353 1.955 c
--1.628 1.955 -1.837 1.845 -1.984 1.631 c
--2.124 1.426 -2.19 1.118 -2.19 0.706 c
--2.19 0 l
--2.19 -0.411 -2.124 -0.727 -1.984 -0.941 c
--1.837 -1.157 -1.628 -1.264 -1.353 -1.264 c
--1.07 -1.264 -0.86 -1.168 -0.721 -0.97 c
--0.584 -0.775 -0.511 -0.47 -0.5 -0.058 c
-h
-0.948 1.323 m
-0.962 1 l
-1.147 1.253 1.389 1.382 1.683 1.382 c
-2.212 1.382 2.481 1.029 2.491 0.324 c
-2.491 -1.661 l
-2.007 -1.661 l
-2.007 0.294 l
-2.007 0.53 1.966 0.694 1.889 0.794 c
-1.808 0.889 1.69 0.941 1.536 0.941 c
-1.419 0.941 1.309 0.9 1.213 0.823 c
-1.113 0.742 1.036 0.636 0.977 0.5 c
-0.977 -1.661 l
-0.492 -1.661 l
-0.492 1.323 l
-h
-3.572 -1.661 -0.5 4.233 re
-5.056 -0.852 m
-5.6 1.323 l
-6.115 1.323 l
-5.145 -2.088 l
-5.074 -2.341 4.972 -2.532 4.836 -2.66 c
-4.696 -2.797 4.546 -2.866 4.38 -2.866 c
-4.31 -2.866 4.226 -2.851 4.131 -2.822 c
-4.131 -2.41 l
-4.233 -2.425 l
-4.369 -2.425 4.476 -2.389 4.557 -2.323 c
-4.644 -2.252 4.711 -2.135 4.762 -1.97 c
-4.85 -1.631 l
-3.983 1.323 l
-4.513 1.323 l
-h
-8.172 -1.661 -0.5 2.984 re
-8.202 2.117 m
-8.202 2.028 8.176 1.955 8.129 1.897 c
-8.089 1.845 8.018 1.823 7.923 1.823 c
-7.834 1.823 7.765 1.845 7.717 1.897 c
-7.676 1.955 7.659 2.022 7.659 2.102 c
-7.659 2.19 7.676 2.263 7.717 2.323 c
-7.765 2.381 7.834 2.411 7.923 2.411 c
-8.018 2.411 8.089 2.381 8.129 2.323 c
-8.176 2.263 8.202 2.194 8.202 2.117 c
-9.305 1.323 m
-9.319 1 l
-9.502 1.253 9.745 1.382 10.04 1.382 c
-10.568 1.382 10.836 1.029 10.848 0.324 c
-10.848 -1.661 l
-10.362 -1.661 l
-10.362 0.294 l
-10.362 0.53 10.323 0.694 10.246 0.794 c
-10.165 0.889 10.047 0.941 9.892 0.941 c
-9.775 0.941 9.664 0.9 9.569 0.823 c
-9.469 0.742 9.392 0.636 9.334 0.5 c
-9.334 -1.661 l
-8.849 -1.661 l
-8.849 1.323 l
-h
-11.296 -0.029 m
-11.296 0.43 11.377 0.779 11.546 1.014 c
-11.723 1.257 11.972 1.382 12.295 1.382 c
-12.579 1.382 12.799 1.264 12.957 1.029 c
-12.957 2.572 l
-13.442 2.572 l
-13.442 -1.661 l
-13.001 -1.661 l
-12.972 -1.338 l
-12.814 -1.595 12.59 -1.72 12.295 -1.72 c
-11.979 -1.72 11.737 -1.602 11.561 -1.367 c
-11.384 -1.124 11.296 -0.779 11.296 -0.338 c
-h
-11.781 -0.309 m
-11.781 -0.643 11.829 -0.889 11.929 -1.043 c
-12.024 -1.201 12.185 -1.278 12.413 -1.278 c
-12.656 -1.278 12.839 -1.161 12.957 -0.926 c
-12.957 0.588 l
-12.829 0.823 12.648 0.941 12.413 0.941 c
-12.185 0.941 12.024 0.86 11.929 0.706 c
-11.829 0.548 11.781 0.309 11.781 -0.015 c
-h
-15.07 -1.72 m
-14.695 -1.72 14.412 -1.613 14.217 -1.396 c
-14.019 -1.172 13.924 -0.845 13.924 -0.411 c
-13.924 -0.044 l
-13.924 0.397 14.015 0.742 14.203 1 c
-14.398 1.253 14.674 1.382 15.026 1.382 c
-15.368 1.382 15.621 1.268 15.79 1.043 c
-15.967 0.816 16.058 0.47 16.07 0 c
-16.07 -0.309 l
-14.408 -0.309 l
-14.408 -0.382 l
-14.408 -0.706 14.468 -0.941 14.585 -1.087 c
-14.703 -1.228 14.871 -1.294 15.1 -1.294 c
-15.247 -1.294 15.372 -1.271 15.482 -1.22 c
-15.588 -1.161 15.692 -1.073 15.79 -0.956 c
-16.041 -1.264 l
-15.835 -1.569 15.511 -1.72 15.07 -1.72 c
-15.026 0.956 m
-14.82 0.956 14.666 0.886 14.57 0.75 c
-14.471 0.611 14.416 0.397 14.408 0.103 c
-15.584 0.103 l
-15.584 0.177 l
-15.563 0.449 15.511 0.647 15.422 0.765 c
-15.335 0.889 15.202 0.956 15.026 0.956 c
-17.334 0.235 m
-17.849 1.323 l
-18.422 1.323 l
-17.598 -0.147 l
-18.437 -1.661 l
-17.878 -1.661 l
-17.348 -0.544 l
-16.82 -1.661 l
-16.261 -1.661 l
-17.084 -0.147 l
-16.276 1.323 l
-16.834 1.323 l
-h
-22.221 -0.808 m
-22.677 1.323 l
-23.162 1.323 l
-22.427 -1.661 l
-22.044 -1.661 l
-21.456 0.47 l
-20.883 -1.661 l
-20.502 -1.661 l
-19.767 1.323 l
-20.251 1.323 l
-20.722 -0.75 l
-21.265 1.323 l
-21.648 1.323 l
-h
-23.956 -1.661 -0.5 2.984 re
-23.985 2.117 m
-23.985 2.028 23.96 1.955 23.912 1.897 c
-23.871 1.845 23.802 1.823 23.706 1.823 c
-23.617 1.823 23.548 1.845 23.5 1.897 c
-23.459 1.955 23.441 2.022 23.441 2.102 c
-23.441 2.19 23.459 2.263 23.5 2.323 c
-23.548 2.381 23.617 2.411 23.706 2.411 c
-23.802 2.411 23.871 2.381 23.912 2.323 c
-23.96 2.263 23.985 2.194 23.985 2.117 c
-25.161 -1.661 -0.5 4.233 re
-26.362 -1.661 -0.5 4.233 re
-30.405 -0.309 m
-30.405 -0.779 30.32 -1.132 30.155 -1.367 c
-29.986 -1.602 29.743 -1.72 29.42 -1.72 c
-29.104 -1.72 28.868 -1.583 28.714 -1.309 c
-28.685 -1.661 l
-28.244 -1.661 l
-28.244 2.572 l
-28.729 2.572 l
-28.729 1 l
-28.884 1.253 29.115 1.382 29.42 1.382 c
-29.743 1.382 29.986 1.264 30.155 1.029 c
-30.32 0.794 30.405 0.445 30.405 -0.015 c
-h
-29.92 -0.029 m
-29.92 0.324 29.868 0.573 29.773 0.721 c
-29.674 0.867 29.512 0.941 29.288 0.941 c
-29.042 0.941 28.854 0.802 28.729 0.53 c
-28.729 -0.881 l
-28.847 -1.147 29.038 -1.278 29.302 -1.278 c
-29.516 -1.278 29.674 -1.205 29.773 -1.058 c
-29.868 -0.904 29.92 -0.661 29.92 -0.338 c
-h
-31.904 -1.72 m
-31.529 -1.72 31.247 -1.613 31.052 -1.396 c
-30.853 -1.172 30.757 -0.845 30.757 -0.411 c
-30.757 -0.044 l
-30.757 0.397 30.85 0.742 31.037 1 c
-31.232 1.253 31.507 1.382 31.86 1.382 c
-32.201 1.382 32.456 1.268 32.625 1.043 c
-32.801 0.816 32.893 0.47 32.903 0 c
-32.903 -0.309 l
-31.243 -0.309 l
-31.243 -0.382 l
-31.243 -0.706 31.301 -0.941 31.419 -1.087 c
-31.536 -1.228 31.706 -1.294 31.933 -1.294 c
-32.08 -1.294 32.205 -1.271 32.315 -1.22 c
-32.423 -1.161 32.525 -1.073 32.625 -0.956 c
-32.874 -1.264 l
-32.668 -1.569 32.345 -1.72 31.904 -1.72 c
-31.86 0.956 m
-31.654 0.956 31.5 0.886 31.405 0.75 c
-31.305 0.611 31.25 0.397 31.243 0.103 c
-32.419 0.103 l
-32.419 0.177 l
-32.396 0.449 32.345 0.647 32.257 0.765 c
-32.169 0.889 32.037 0.956 31.86 0.956 c
-f
-Q
- endstream endobj 61 0 obj <</BBox[739.087 280.091 762.253 275.799]/Group 99 0 R/Length 5385/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 740.2189 276.2256 cm
-0 0 m
-0.166 0 0.298 0.048 0.397 0.147 c
-0.493 0.243 0.547 0.386 0.559 0.573 c
-1.014 0.573 l
-1.004 0.287 0.9 0.048 0.706 -0.147 c
-0.518 -0.334 0.283 -0.426 0 -0.426 c
--0.363 -0.426 -0.643 -0.309 -0.837 -0.073 c
--1.036 0.162 -1.132 0.507 -1.132 0.97 c
--1.132 1.294 l
--1.132 1.742 -1.04 2.087 -0.852 2.323 c
--0.658 2.558 -0.374 2.675 0 2.675 c
-0.302 2.675 0.544 2.576 0.721 2.381 c
-0.904 2.182 1.004 1.918 1.014 1.588 c
-0.559 1.588 l
-0.537 1.812 0.478 1.977 0.383 2.087 c
-0.294 2.194 0.166 2.249 0 2.249 c
--0.216 2.249 -0.378 2.176 -0.484 2.028 c
--0.584 1.889 -0.639 1.661 -0.646 1.338 c
--0.646 0.956 l
--0.646 0.603 -0.598 0.353 -0.5 0.206 c
--0.393 0.066 -0.228 0 0 0 c
-1.309 1.264 m
-1.309 1.694 1.411 2.036 1.617 2.294 c
-1.831 2.547 2.109 2.675 2.455 2.675 c
-2.797 2.675 3.072 2.547 3.278 2.294 c
-3.491 2.047 3.605 1.712 3.616 1.294 c
-3.616 0.985 l
-3.616 0.551 3.506 0.21 3.293 -0.044 c
-3.087 -0.301 2.808 -0.426 2.455 -0.426 c
-2.109 -0.426 1.837 -0.305 1.632 -0.058 c
-1.426 0.183 1.316 0.518 1.309 0.941 c
-h
-1.794 0.985 m
-1.794 0.669 1.852 0.426 1.97 0.25 c
-2.095 0.081 2.257 0 2.455 0 c
-2.885 0 3.109 0.309 3.131 0.926 c
-3.131 1.264 l
-3.131 1.565 3.065 1.808 2.94 1.984 c
-2.822 2.161 2.66 2.249 2.455 2.249 c
-2.257 2.249 2.095 2.161 1.97 1.984 c
-1.852 1.808 1.794 1.565 1.794 1.264 c
-h
-4.509 2.616 m
-4.524 2.337 l
-4.7 2.562 4.939 2.675 5.244 2.675 c
-5.575 2.675 5.806 2.529 5.935 2.234 c
-6.119 2.529 6.379 2.675 6.714 2.675 c
-7.273 2.675 7.555 2.33 7.566 1.646 c
-7.566 -0.368 l
-7.082 -0.368 l
-7.082 1.602 l
-7.082 1.816 7.041 1.974 6.964 2.072 c
-6.883 2.18 6.751 2.234 6.567 2.234 c
-6.42 2.234 6.302 2.176 6.215 2.058 c
-6.126 1.947 6.071 1.808 6.053 1.631 c
-6.053 -0.368 l
-5.567 -0.368 l
-5.567 1.617 l
-5.557 2.028 5.384 2.234 5.053 2.234 c
-4.807 2.234 4.634 2.109 4.538 1.866 c
-4.538 -0.368 l
-4.054 -0.368 l
-4.054 2.616 l
-h
-8.47 2.616 m
-8.485 2.337 l
-8.661 2.562 8.9 2.675 9.205 2.675 c
-9.536 2.675 9.768 2.529 9.897 2.234 c
-10.08 2.529 10.341 2.675 10.675 2.675 c
-11.234 2.675 11.516 2.33 11.528 1.646 c
-11.528 -0.368 l
-11.043 -0.368 l
-11.043 1.602 l
-11.043 1.816 11.003 1.974 10.926 2.072 c
-10.845 2.18 10.712 2.234 10.529 2.234 c
-10.381 2.234 10.263 2.176 10.176 2.058 c
-10.088 1.947 10.032 1.808 10.014 1.631 c
-10.014 -0.368 l
-9.529 -0.368 l
-9.529 1.617 l
-9.517 2.028 9.345 2.234 9.014 2.234 c
-8.769 2.234 8.596 2.109 8.5 1.866 c
-8.5 -0.368 l
-8.015 -0.368 l
-8.015 2.616 l
-h
-12.505 -0.368 -0.499 2.984 re
-12.534 3.41 m
-12.534 3.322 12.509 3.248 12.461 3.19 c
-12.421 3.138 12.351 3.117 12.256 3.117 c
-12.168 3.117 12.098 3.138 12.05 3.19 c
-12.009 3.248 11.991 3.315 11.991 3.395 c
-11.991 3.484 12.009 3.557 12.05 3.616 c
-12.098 3.674 12.168 3.705 12.256 3.705 c
-12.351 3.705 12.421 3.674 12.461 3.616 c
-12.509 3.557 12.534 3.487 12.534 3.41 c
-13.814 3.337 m
-13.814 2.616 l
-14.269 2.616 l
-14.269 2.219 l
-13.814 2.219 l
-13.814 0.368 l
-13.814 0.25 13.832 0.162 13.872 0.103 c
-13.909 0.044 13.979 0.015 14.078 0.015 c
-14.137 0.015 14.199 0.023 14.269 0.044 c
-14.269 -0.368 l
-14.151 -0.405 14.038 -0.426 13.931 -0.426 c
-13.733 -0.426 13.582 -0.36 13.475 -0.22 c
-13.376 -0.085 13.328 0.11 13.328 0.368 c
-13.328 2.219 l
-12.873 2.219 l
-12.873 2.616 l
-13.328 2.616 l
-13.328 3.337 l
-h
-15.368 3.337 m
-15.368 2.616 l
-15.824 2.616 l
-15.824 2.219 l
-15.368 2.219 l
-15.368 0.368 l
-15.368 0.25 15.387 0.162 15.427 0.103 c
-15.464 0.044 15.534 0.015 15.632 0.015 c
-15.691 0.015 15.754 0.023 15.824 0.044 c
-15.824 -0.368 l
-15.707 -0.405 15.592 -0.426 15.485 -0.426 c
-15.287 -0.426 15.136 -0.36 15.03 -0.22 c
-14.93 -0.085 14.883 0.11 14.883 0.368 c
-14.883 2.219 l
-14.427 2.219 l
-14.427 2.616 l
-14.883 2.616 l
-14.883 3.337 l
-h
-17.345 -0.426 m
-16.97 -0.426 16.688 -0.32 16.492 -0.103 c
-16.294 0.121 16.199 0.449 16.199 0.882 c
-16.199 1.249 l
-16.199 1.691 16.291 2.036 16.478 2.294 c
-16.673 2.547 16.948 2.675 17.301 2.675 c
-17.643 2.675 17.897 2.562 18.065 2.337 c
-18.242 2.109 18.334 1.764 18.344 1.294 c
-18.344 0.985 l
-16.684 0.985 l
-16.684 0.912 l
-16.684 0.588 16.742 0.353 16.86 0.206 c
-16.977 0.066 17.147 0 17.374 0 c
-17.521 0 17.646 0.023 17.756 0.073 c
-17.864 0.133 17.966 0.22 18.065 0.338 c
-18.315 0.029 l
-18.109 -0.276 17.786 -0.426 17.345 -0.426 c
-17.301 2.249 m
-17.095 2.249 16.941 2.18 16.846 2.043 c
-16.746 1.904 16.691 1.691 16.684 1.396 c
-17.86 1.396 l
-17.86 1.47 l
-17.837 1.742 17.786 1.941 17.698 2.058 c
-17.61 2.182 17.477 2.249 17.301 2.249 c
-18.653 1.264 m
-18.653 1.723 18.734 2.072 18.903 2.308 c
-19.079 2.55 19.329 2.675 19.653 2.675 c
-19.936 2.675 20.156 2.558 20.314 2.323 c
-20.314 3.865 l
-20.8 3.865 l
-20.8 -0.368 l
-20.359 -0.368 l
-20.329 -0.044 l
-20.171 -0.301 19.946 -0.426 19.653 -0.426 c
-19.337 -0.426 19.094 -0.309 18.918 -0.073 c
-18.741 0.169 18.653 0.515 18.653 0.956 c
-h
-19.138 0.985 m
-19.138 0.651 19.186 0.405 19.285 0.25 c
-19.381 0.092 19.543 0.015 19.771 0.015 c
-20.013 0.015 20.197 0.133 20.314 0.368 c
-20.314 1.881 l
-20.185 2.117 20.006 2.234 19.771 2.234 c
-19.543 2.234 19.381 2.153 19.285 1.999 c
-19.186 1.841 19.138 1.602 19.138 1.278 c
-h
-21.402 -0.103 m
-21.402 -0.015 21.424 0.059 21.475 0.118 c
-21.534 0.177 21.612 0.206 21.71 0.206 c
-21.818 0.206 21.895 0.177 21.946 0.118 c
-22.005 0.059 22.034 -0.015 22.034 -0.103 c
-22.034 -0.183 22.005 -0.25 21.946 -0.309 c
-21.895 -0.368 21.818 -0.397 21.71 -0.397 c
-21.612 -0.397 21.534 -0.368 21.475 -0.309 c
-21.424 -0.25 21.402 -0.183 21.402 -0.103 c
-f
-Q
- endstream endobj 62 0 obj <</BBox[736.166 273.506 765.648 268.067]/Group 100 0 R/Length 6993/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-q 1 0 0 1 738.7823 270.5519 cm
-0 0 m
--0.029 -0.434 -0.154 -0.765 -0.368 -1 c
--0.584 -1.228 -0.893 -1.338 -1.294 -1.338 c
--1.698 -1.338 -2.022 -1.187 -2.263 -0.882 c
--2.499 -0.57 -2.616 -0.154 -2.616 0.367 c
--2.616 1.103 l
--2.616 1.621 -2.495 2.032 -2.249 2.337 c
--2.007 2.639 -1.672 2.793 -1.249 2.793 c
--0.867 2.793 -0.57 2.675 -0.353 2.44 c
--0.14 2.205 -0.023 1.87 0 1.44 c
--0.515 1.44 l
--0.536 1.771 -0.603 2.007 -0.721 2.146 c
--0.838 2.282 -1.014 2.352 -1.249 2.352 c
--1.525 2.352 -1.735 2.242 -1.881 2.028 c
--2.028 1.812 -2.102 1.5 -2.102 1.087 c
--2.102 0.353 l
--2.102 -0.052 -2.036 -0.36 -1.897 -0.574 c
--1.76 -0.79 -1.558 -0.897 -1.294 -0.897 c
--1.029 -0.897 -0.846 -0.834 -0.735 -0.706 c
--0.617 -0.58 -0.544 -0.345 -0.515 0 c
-h
-0.881 1.396 m
-1.066 1.639 1.301 1.764 1.587 1.764 c
-2.117 1.764 2.385 1.411 2.396 0.706 c
-2.396 -1.279 l
-1.911 -1.279 l
-1.911 0.676 l
-1.911 0.912 1.87 1.076 1.793 1.176 c
-1.712 1.271 1.594 1.323 1.44 1.323 c
-1.323 1.323 1.213 1.282 1.117 1.205 c
-1.018 1.124 0.941 1.018 0.881 0.881 c
-0.881 -1.279 l
-0.397 -1.279 l
-0.397 2.954 l
-0.881 2.954 l
-h
-2.837 0.353 m
-2.837 0.783 2.94 1.124 3.146 1.382 c
-3.358 1.635 3.638 1.764 3.983 1.764 c
-4.326 1.764 4.601 1.635 4.806 1.382 c
-5.02 1.135 5.134 0.801 5.145 0.382 c
-5.145 0.073 l
-5.145 -0.36 5.034 -0.702 4.821 -0.956 c
-4.615 -1.213 4.336 -1.338 3.983 -1.338 c
-3.638 -1.338 3.366 -1.216 3.16 -0.97 c
-2.955 -0.728 2.844 -0.393 2.837 0.029 c
-h
-3.322 0.073 m
-3.322 -0.243 3.381 -0.485 3.499 -0.661 c
-3.623 -0.831 3.785 -0.912 3.983 -0.912 c
-4.413 -0.912 4.638 -0.603 4.659 0.014 c
-4.659 0.353 l
-4.659 0.654 4.594 0.897 4.469 1.072 c
-4.351 1.249 4.189 1.338 3.983 1.338 c
-3.785 1.338 3.623 1.249 3.499 1.072 c
-3.381 0.897 3.322 0.654 3.322 0.353 c
-h
-5.479 0.353 m
-5.479 0.783 5.582 1.124 5.787 1.382 c
-6.001 1.635 6.28 1.764 6.626 1.764 c
-6.967 1.764 7.243 1.635 7.449 1.382 c
-7.661 1.135 7.776 0.801 7.786 0.382 c
-7.786 0.073 l
-7.786 -0.36 7.676 -0.702 7.464 -0.956 c
-7.258 -1.213 6.978 -1.338 6.626 -1.338 c
-6.28 -1.338 6.008 -1.216 5.802 -0.97 c
-5.596 -0.728 5.486 -0.393 5.479 0.029 c
-h
-5.964 0.073 m
-5.964 -0.243 6.023 -0.485 6.14 -0.661 c
-6.265 -0.831 6.427 -0.912 6.626 -0.912 c
-7.056 -0.912 7.279 -0.603 7.302 0.014 c
-7.302 0.353 l
-7.302 0.654 7.235 0.897 7.11 1.072 c
-6.993 1.249 6.832 1.338 6.626 1.338 c
-6.427 1.338 6.265 1.249 6.14 1.072 c
-6.023 0.897 5.964 0.654 5.964 0.353 c
-h
-9.668 -0.515 m
-9.668 -0.408 9.628 -0.32 9.55 -0.25 c
-9.469 -0.173 9.319 -0.085 9.095 0.014 c
-8.831 0.121 8.643 0.213 8.536 0.294 c
-8.426 0.371 8.349 0.459 8.301 0.559 c
-8.249 0.654 8.228 0.771 8.228 0.912 c
-8.228 1.153 8.316 1.356 8.492 1.514 c
-8.669 1.679 8.893 1.764 9.168 1.764 c
-9.462 1.764 9.697 1.675 9.874 1.5 c
-10.051 1.33 10.138 1.117 10.138 0.852 c
-9.654 0.852 l
-9.654 0.989 9.602 1.103 9.506 1.19 c
-9.419 1.286 9.305 1.338 9.168 1.338 c
-9.022 1.338 8.908 1.297 8.831 1.22 c
-8.75 1.151 8.713 1.051 8.713 0.926 c
-8.713 0.827 8.742 0.75 8.801 0.691 c
-8.86 0.632 8.999 0.551 9.227 0.455 c
-9.587 0.309 9.833 0.166 9.962 0.029 c
-10.098 -0.1 10.167 -0.272 10.167 -0.485 c
-10.167 -0.742 10.072 -0.948 9.889 -1.103 c
-9.712 -1.261 9.477 -1.338 9.183 -1.338 c
-8.867 -1.338 8.613 -1.249 8.419 -1.073 c
-8.232 -0.889 8.139 -0.658 8.139 -0.382 c
-8.625 -0.382 l
-8.632 -0.551 8.683 -0.684 8.771 -0.779 c
-8.867 -0.867 9.007 -0.912 9.183 -0.912 c
-9.338 -0.912 9.455 -0.879 9.536 -0.809 c
-9.624 -0.742 9.668 -0.643 9.668 -0.515 c
-11.682 -1.338 m
-11.307 -1.338 11.025 -1.231 10.83 -1.014 c
-10.631 -0.79 10.535 -0.463 10.535 -0.029 c
-10.535 0.338 l
-10.535 0.779 10.628 1.124 10.815 1.382 c
-11.009 1.635 11.285 1.764 11.638 1.764 c
-11.979 1.764 12.233 1.65 12.403 1.425 c
-12.579 1.198 12.671 0.852 12.681 0.382 c
-12.681 0.073 l
-11.021 0.073 l
-11.021 0 l
-11.021 -0.324 11.079 -0.559 11.197 -0.706 c
-11.314 -0.846 11.484 -0.912 11.711 -0.912 c
-11.858 -0.912 11.983 -0.889 12.093 -0.838 c
-12.2 -0.779 12.303 -0.691 12.403 -0.574 c
-12.652 -0.882 l
-12.446 -1.187 12.123 -1.338 11.682 -1.338 c
-11.638 1.338 m
-11.432 1.338 11.278 1.268 11.183 1.132 c
-11.083 0.992 11.028 0.779 11.021 0.484 c
-12.197 0.484 l
-12.197 0.559 l
-12.174 0.831 12.123 1.029 12.035 1.147 c
-11.946 1.271 11.814 1.338 11.638 1.338 c
-16.518 -0.426 m
-16.974 1.705 l
-17.458 1.705 l
-16.724 -1.279 l
-16.342 -1.279 l
-15.754 0.852 l
-15.181 -1.279 l
-14.798 -1.279 l
-14.063 1.705 l
-14.549 1.705 l
-15.019 -0.368 l
-15.563 1.705 l
-15.945 1.705 l
-h
-18.252 -1.279 -0.5 2.984 re
-18.282 2.499 m
-18.282 2.41 18.256 2.337 18.208 2.278 c
-18.168 2.227 18.098 2.205 18.003 2.205 c
-17.914 2.205 17.845 2.227 17.797 2.278 c
-17.756 2.337 17.738 2.404 17.738 2.484 c
-17.738 2.572 17.756 2.645 17.797 2.705 c
-17.845 2.763 17.914 2.793 18.003 2.793 c
-18.098 2.793 18.168 2.763 18.208 2.705 c
-18.256 2.645 18.282 2.576 18.282 2.499 c
-20.369 -0.515 m
-20.369 -0.408 20.328 -0.32 20.251 -0.25 c
-20.17 -0.173 20.02 -0.085 19.796 0.014 c
-19.532 0.121 19.343 0.213 19.237 0.294 c
-19.127 0.371 19.05 0.459 19.002 0.559 c
-18.95 0.654 18.929 0.771 18.929 0.912 c
-18.929 1.153 19.017 1.356 19.193 1.514 c
-19.37 1.679 19.594 1.764 19.869 1.764 c
-20.164 1.764 20.399 1.675 20.575 1.5 c
-20.751 1.33 20.839 1.117 20.839 0.852 c
-20.355 0.852 l
-20.355 0.989 20.303 1.103 20.207 1.19 c
-20.12 1.286 20.006 1.338 19.869 1.338 c
-19.723 1.338 19.609 1.297 19.532 1.22 c
-19.451 1.151 19.414 1.051 19.414 0.926 c
-19.414 0.827 19.443 0.75 19.502 0.691 c
-19.561 0.632 19.7 0.551 19.929 0.455 c
-20.288 0.309 20.534 0.166 20.663 0.029 c
-20.799 -0.1 20.869 -0.272 20.869 -0.485 c
-20.869 -0.742 20.773 -0.948 20.59 -1.103 c
-20.413 -1.261 20.178 -1.338 19.884 -1.338 c
-19.568 -1.338 19.314 -1.249 19.12 -1.073 c
-18.932 -0.889 18.84 -0.658 18.84 -0.382 c
-19.326 -0.382 l
-19.333 -0.551 19.384 -0.684 19.472 -0.779 c
-19.568 -0.867 19.708 -0.912 19.884 -0.912 c
-20.039 -0.912 20.156 -0.879 20.237 -0.809 c
-20.325 -0.742 20.369 -0.643 20.369 -0.515 c
-22.383 -1.338 m
-22.008 -1.338 21.725 -1.231 21.531 -1.014 c
-21.332 -0.79 21.236 -0.463 21.236 -0.029 c
-21.236 0.338 l
-21.236 0.779 21.328 1.124 21.516 1.382 c
-21.71 1.635 21.986 1.764 22.339 1.764 c
-22.68 1.764 22.934 1.65 23.103 1.425 c
-23.28 1.198 23.372 0.852 23.382 0.382 c
-23.382 0.073 l
-21.722 0.073 l
-21.722 0 l
-21.722 -0.324 21.78 -0.559 21.898 -0.706 c
-22.015 -0.846 22.185 -0.912 22.412 -0.912 c
-22.559 -0.912 22.684 -0.889 22.794 -0.838 c
-22.901 -0.779 23.004 -0.691 23.103 -0.574 c
-23.353 -0.882 l
-23.147 -1.187 22.824 -1.338 22.383 -1.338 c
-22.339 1.338 m
-22.133 1.338 21.978 1.268 21.883 1.132 c
-21.784 0.992 21.729 0.779 21.722 0.484 c
-22.898 0.484 l
-22.898 0.559 l
-22.875 0.831 22.824 1.029 22.736 1.147 c
-22.647 1.271 22.516 1.338 22.339 1.338 c
-24.323 -1.279 -0.5 4.233 re
-25.808 -0.47 m
-26.352 1.705 l
-26.866 1.705 l
-25.896 -1.706 l
-25.826 -1.959 25.724 -2.15 25.587 -2.278 c
-25.448 -2.415 25.297 -2.484 25.132 -2.484 c
-25.062 -2.484 24.978 -2.469 24.882 -2.44 c
-24.882 -2.028 l
-24.984 -2.043 l
-25.121 -2.043 25.227 -2.007 25.308 -1.941 c
-25.396 -1.87 25.462 -1.753 25.514 -1.588 c
-25.602 -1.249 l
-24.735 1.705 l
-25.264 1.705 l
-h
-f
-Q
- endstream endobj 100 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 12 0 obj <</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>> endobj 99 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 98 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 97 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 96 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 95 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 94 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 91 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 93 0 obj <</AntiAlias false/ColorSpace 92 0 R/Coords[0.0 0.0 1.0 0.0]/Domain[0.0 1.0]/Extend[true true]/Function 101 0 R/ShadingType 2>> endobj 92 0 obj [/Separation/Black/DeviceCMYK<</C0[0.0 0.0 0.0 0.0]/C1[0.0 0.0 0.0 1.0]/Domain[0 1]/FunctionType 2/N 1.0/Range[0.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0]>>] endobj 101 0 obj <</Bounds[0.25 0.75]/Domain[0.0 1.0]/Encode[0.0 1.0 0.0 1.0 0.0 1.0]/FunctionType 3/Functions[102 0 R 102 0 R 102 0 R]>> endobj 102 0 obj <</C0[0.0]/C1[0.0]/Domain[0.0 1.0]/FunctionType 2/N 1.0>> endobj 90 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 89 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 88 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 87 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 86 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 85 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 84 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 83 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 82 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 81 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 80 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 79 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 78 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 77 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 76 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 75 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 74 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 73 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 72 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 71 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 70 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 69 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 68 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 67 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 66 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 65 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 63 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 64 0 obj <</AntiAlias false/ColorSpace/DeviceCMYK/Coords[0.0 0.0 1.0 0.0]/Domain[0.0 1.0]/Extend[true true]/Function 103 0 R/ShadingType 2>> endobj 103 0 obj <</Bounds[0.5]/Domain[0.0 1.0]/Encode[0.0 1.0 0.0 1.0]/FunctionType 3/Functions[104 0 R 105 0 R]>> endobj 104 0 obj <</C0[0.792969 0.800781 0.128906 0.015625]/C1[0.652344 0.660156 0.0 0.0]/Domain[0.0 1.0]/FunctionType 2/N 1.0>> endobj 105 0 obj <</C0[0.652344 0.660156 0.0 0.0]/C1[0.0 0.0 0.0 0.0]/Domain[0.0 1.0]/FunctionType 2/N 1.0>> endobj 22 0 obj <</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 106 0 R/Type/ExtGState/ca 1.0/op false>> endobj 23 0 obj <</AIS false/BM/Normal/CA 0.75/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 0.75/op false>> endobj 24 0 obj <</AIS false/BM/Normal/CA 0.899994/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 0.899994/op false>> endobj 25 0 obj <</AIS false/BM/Normal/CA 0.666672/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 0.666672/op false>> endobj 26 0 obj <</AIS false/BM/Normal/CA 0.669998/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 0.669998/op false>> endobj 27 0 obj <</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 107 0 R/Type/ExtGState/ca 1.0/op false>> endobj 107 0 obj <</BC 108 0 R/G 109 0 R/S/Luminosity/Type/Mask>> endobj 108 0 obj [0.0] endobj 109 0 obj <</BBox[320.12 122.007 531.709 116.418]/Group 110 0 R/Length 117/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>/XObject<</Fm0 111 0 R>>>>/Subtype/Form>>stream
-0 g
-/GS0 gs
-320.12 122.007 211.589 -5.589 re
-f
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0.709 w 4 M 1 j 1 J []0 d
-0 TL/Fm0 Do
-Q
- endstream endobj 110 0 obj <</CS/DeviceGray/I false/K false/S/Transparency/Type/Group>> endobj 111 0 obj <</BBox[320.12 122.007 531.709 116.418]/Group 112 0 R/Length 126/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 113 0 R>>/ExtGState<</GS0 12 0 R>>/Shading<</Sh0 114 0 R>>>>/Subtype/Form>>stream
-q
-320.12 122.007 211.589 -5.589 re
-W n
-q
-0 g
-/GS0 gs
-212.3990173 0 0 139.9599457 319.7158203 119.2128906 cm
-BX /Sh0 sh EX Q
-Q
- endstream endobj 112 0 obj <</CS/DeviceCMYK/I true/K false/S/Transparency/Type/Group>> endobj 114 0 obj <</AntiAlias false/ColorSpace 113 0 R/Coords[0.0 0.0 1.0 0.0]/Domain[0.0 1.0]/Extend[true true]/Function 115 0 R/ShadingType 2>> endobj 113 0 obj [/DeviceN[/Black]/DeviceCMYK 116 0 R 117 0 R] endobj 115 0 obj <</Bounds[0.25 0.75]/Domain[0.0 1.0]/Encode[0.0 1.0 0.0 1.0 0.0 1.0]/FunctionType 3/Functions[118 0 R 119 0 R 120 0 R]>> endobj 118 0 obj <</C0[1.0]/C1[0.05]/Domain[0.0 1.0]/FunctionType 2/N 1.0>> endobj 119 0 obj <</C0[0.05]/C1[0.05]/Domain[0.0 1.0]/FunctionType 2/N 1.0>> endobj 120 0 obj <</C0[0.05]/C1[1.0]/Domain[0.0 1.0]/FunctionType 2/N 1.0>> endobj 116 0 obj <</Domain[0.0 1.0]/FunctionType 4/Length 267/Range[0.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0]>>stream
-{1.000000 2 1 roll 1.000000 2 1 roll 1.000000 2 1 roll 0 index 1.000000
-cvr exch sub 2 1 roll 5 -1 roll 1.000000 cvr exch sub 5 1
-roll 4 -1 roll 1.000000 cvr exch sub 4 1 roll 3 -1 roll 1.000000
-cvr exch sub 3 1 roll 2 -1 roll 1.000000 cvr exch sub 2 1
-roll pop } endstream endobj 117 0 obj <</Process 121 0 R/Subtype/NChannel>> endobj 121 0 obj <</ColorSpace/DeviceCMYK/Components[/Cyan/Magenta/Yellow/Black]>> endobj 106 0 obj <</BC 122 0 R/G 123 0 R/S/Luminosity/Type/Mask>> endobj 122 0 obj [0.0] endobj 123 0 obj <</BBox[198.027 568.502 444.988 526.485]/Group 124 0 R/Length 92/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>/XObject<</Fm0 125 0 R>>>>/Subtype/Form>>stream
-0 g
-/GS0 gs
-198.026 568.502 246.962 -42.017 re
-f
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 TL/Fm0 Do
-Q
- endstream endobj 124 0 obj <</CS/DeviceGray/I false/K false/S/Transparency/Type/Group>> endobj 125 0 obj <</BBox[198.026 568.502 444.988 526.485]/Group 126 0 R/Length 128/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 113 0 R>>/ExtGState<</GS0 12 0 R>>/Shading<</Sh0 127 0 R>>>>/Subtype/Form>>stream
-q
-198.026 568.502 246.962 -42.017 re
-W n
-q
-0 g
-/GS0 gs
-246.9619904 0 0 246.9619904 198.0263672 547.4936523 cm
-BX /Sh0 sh EX Q
-Q
- endstream endobj 126 0 obj <</CS/DeviceCMYK/I true/K false/S/Transparency/Type/Group>> endobj 127 0 obj <</AntiAlias false/ColorSpace 113 0 R/Coords[0.0 0.0 1.0 0.0]/Domain[0.0 1.0]/Extend[true true]/Function 128 0 R/ShadingType 2>> endobj 128 0 obj <</Bounds[0.5]/Domain[0.0 1.0]/Encode[0.0 1.0 0.0 1.0]/FunctionType 3/Functions[129 0 R 130 0 R]>> endobj 129 0 obj <</C0[0.0]/C1[0.643137]/Domain[0.0 1.0]/FunctionType 2/N 1.0>> endobj 130 0 obj <</C0[0.643137]/C1[0.682759]/Domain[0.0 1.0]/FunctionType 2/N 1.0>> endobj 5 0 obj <</Intent 131 0 R/Name(Layer 1)/Type/OCG/Usage 132 0 R>> endobj 131 0 obj [/View/Design] endobj 132 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 20.1)/Subtype/Artwork>>>> endobj 11 0 obj <</LastModified(D:20161031172420Z)/Private 133 0 R>> endobj 133 0 obj <</AIMetaData 134 0 R/AIPDFPrivateData1 135 0 R/AIPDFPrivateData10 136 0 R/AIPDFPrivateData100 137 0 R/AIPDFPrivateData101 138 0 R/AIPDFPrivateData102 139 0 R/AIPDFPrivateData103 140 0 R/AIPDFPrivateData104 141 0 R/AIPDFPrivateData105 142 0 R/AIPDFPrivateData106 143 0 R/AIPDFPrivateData107 144 0 R/AIPDFPrivateData108 145 0 R/AIPDFPrivateData109 146 0 R/AIPDFPrivateData11 147 0 R/AIPDFPrivateData110 148 0 R/AIPDFPrivateData111 149 0 R/AIPDFPrivateData112 150 0 R/AIPDFPrivateData113 151 0 R/AIPDFPrivateData114 152 0 R/AIPDFPrivateData115 153 0 R/AIPDFPrivateData116 154 0 R/AIPDFPrivateData117 155 0 R/AIPDFPrivateData118 156 0 R/AIPDFPrivateData119 157 0 R/AIPDFPrivateData12 158 0 R/AIPDFPrivateData120 159 0 R/AIPDFPrivateData121 160 0 R/AIPDFPrivateData122 161 0 R/AIPDFPrivateData123 162 0 R/AIPDFPrivateData124 163 0 R/AIPDFPrivateData125 164 0 R/AIPDFPrivateData126 165 0 R/AIPDFPrivateData127 166 0 R/AIPDFPrivateData128 167 0 R/AIPDFPrivateData129 168 0 R/AIPDFPrivateData13 169 0 R/AIPDFPrivateData130 170 0 R/AIPDFPrivateData131 171 0 R/AIPDFPrivateData132 172 0 R/AIPDFPrivateData133 173 0 R/AIPDFPrivateData134 174 0 R/AIPDFPrivateData135 175 0 R/AIPDFPrivateData136 176 0 R/AIPDFPrivateData137 177 0 R/AIPDFPrivateData138 178 0 R/AIPDFPrivateData139 179 0 R/AIPDFPrivateData14 180 0 R/AIPDFPrivateData140 181 0 R/AIPDFPrivateData141 182 0 R/AIPDFPrivateData142 183 0 R/AIPDFPrivateData143 184 0 R/AIPDFPrivateData144 185 0 R/AIPDFPrivateData145 186 0 R/AIPDFPrivateData146 187 0 R/AIPDFPrivateData147 188 0 R/AIPDFPrivateData148 189 0 R/AIPDFPrivateData149 190 0 R/AIPDFPrivateData15 191 0 R/AIPDFPrivateData150 192 0 R/AIPDFPrivateData151 193 0 R/AIPDFPrivateData152 194 0 R/AIPDFPrivateData153 195 0 R/AIPDFPrivateData154 196 0 R/AIPDFPrivateData155 197 0 R/AIPDFPrivateData156 198 0 R/AIPDFPrivateData157 199 0 R/AIPDFPrivateData158 200 0 R/AIPDFPrivateData159 201 0 R/AIPDFPrivateData16 202 0 R/AIPDFPrivateData160 203 0 R/AIPDFPrivateData17 204 0 R/AIPDFPrivateData18 205 0 R/AIPDFPrivateData19 206 0 R/AIPDFPrivateData2 207 0 R/AIPDFPrivateData20 208 0 R/AIPDFPrivateData21 209 0 R/AIPDFPrivateData22 210 0 R/AIPDFPrivateData23 211 0 R/AIPDFPrivateData24 212 0 R/AIPDFPrivateData25 213 0 R/AIPDFPrivateData26 214 0 R/AIPDFPrivateData27 215 0 R/AIPDFPrivateData28 216 0 R/AIPDFPrivateData29 217 0 R/AIPDFPrivateData3 218 0 R/AIPDFPrivateData30 219 0 R/AIPDFPrivateData31 220 0 R/AIPDFPrivateData32 221 0 R/AIPDFPrivateData33 222 0 R/AIPDFPrivateData34 223 0 R/AIPDFPrivateData35 224 0 R/AIPDFPrivateData36 225 0 R/AIPDFPrivateData37 226 0 R/AIPDFPrivateData38 227 0 R/AIPDFPrivateData39 228 0 R/AIPDFPrivateData4 229 0 R/AIPDFPrivateData40 230 0 R/AIPDFPrivateData41 231 0 R/AIPDFPrivateData42 232 0 R/AIPDFPrivateData43 233 0 R/AIPDFPrivateData44 234 0 R/AIPDFPrivateData45 235 0 R/AIPDFPrivateData46 236 0 R/AIPDFPrivateData47 237 0 R/AIPDFPrivateData48 238 0 R/AIPDFPrivateData49 239 0 R/AIPDFPrivateData5 240 0 R/AIPDFPrivateData50 241 0 R/AIPDFPrivateData51 242 0 R/AIPDFPrivateData52 243 0 R/AIPDFPrivateData53 244 0 R/AIPDFPrivateData54 245 0 R/AIPDFPrivateData55 246 0 R/AIPDFPrivateData56 247 0 R/AIPDFPrivateData57 248 0 R/AIPDFPrivateData58 249 0 R/AIPDFPrivateData59 250 0 R/AIPDFPrivateData6 251 0 R/AIPDFPrivateData60 252 0 R/AIPDFPrivateData61 253 0 R/AIPDFPrivateData62 254 0 R/AIPDFPrivateData63 255 0 R/AIPDFPrivateData64 256 0 R/AIPDFPrivateData65 257 0 R/AIPDFPrivateData66 258 0 R/AIPDFPrivateData67 259 0 R/AIPDFPrivateData68 260 0 R/AIPDFPrivateData69 261 0 R/AIPDFPrivateData7 262 0 R/AIPDFPrivateData70 263 0 R/AIPDFPrivateData71 264 0 R/AIPDFPrivateData72 265 0 R/AIPDFPrivateData73 266 0 R/AIPDFPrivateData74 267 0 R/AIPDFPrivateData75 268 0 R/AIPDFPrivateData76 269 0 R/AIPDFPrivateData77 270 0 R/AIPDFPrivateData78 271 0 R/AIPDFPrivateData79 272 0 R/AIPDFPrivateData8 273 0 R/AIPDFPrivateData80 274 0 R/AIPDFPrivateData81 275 0 R/AIPDFPrivateData82 276 0 R/AIPDFPrivateData83 277 0 R/AIPDFPrivateData84 278 0 R/AIPDFPrivateData85 279 0 R/AIPDFPrivateData86 280 0 R/AIPDFPrivateData87 281 0 R/AIPDFPrivateData88 282 0 R/AIPDFPrivateData89 283 0 R/AIPDFPrivateData9 284 0 R/AIPDFPrivateData90 285 0 R/AIPDFPrivateData91 286 0 R/AIPDFPrivateData92 287 0 R/AIPDFPrivateData93 288 0 R/AIPDFPrivateData94 289 0 R/AIPDFPrivateData95 290 0 R/AIPDFPrivateData96 291 0 R/AIPDFPrivateData97 292 0 R/AIPDFPrivateData98 293 0 R/AIPDFPrivateData99 294 0 R/ContainerVersion 11/CreatorVersion 20/NumBlock 160/RoundtripVersion 20>> endobj 134 0 obj <</Length 1246>>stream
-%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 17.0 %%AI8_CreatorVersion: 20.1.0 %%For: (David Fran\615a) () %%Title: (Untitled-2) %%CreationDate: 31/10/2016 17:24 %%Canvassize: 16383 %%BoundingBox: -9 -621 1763 9 %%HiResBoundingBox: -9 -621 1762.47226464325 9 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 13.0 %AI12_BuildNumber: 174 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%CMYKProcessColor: 1 1 1 1 ([Registration]) %AI3_Cropmarks: 0 -612 792 0 %AI3_TemplateBox: 396.5 -306.5 396.5 -306.5 %AI3_TileBox: 0 -612 792 0 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 0 %AI9_ColorModel: 2 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:17 1 %AI9_OpenToView: -280.375731213439 535.367481625915 0.6667 2125 1336 18 0 0 93 55 0 0 0 1 1 0 1 1 0 0 %AI17_Alternate_Content %AI9_OpenToView: -280.375731213439 535.367481625915 0.6667 2125 1336 18 0 0 93 55 0 0 0 1 1 0 1 1 0 0 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %%PageOrigin:0 0 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 135 0 obj <</Length 12281>>stream
-%%BoundingBox: -9 -621 1763 9 %%HiResBoundingBox: -9 -621 1762.47226464325 9 %AI7_Thumbnail: 128 48 8 %%BeginData: 12140 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45534D534D534D534D534D534D534D534D534D534D534D534D534D53 %4D534D534D534D534D534D534D534D534D534D534D534D534D534D534D53 %287EFD0AFF7D4D4D534D534D534D534D534D534D534D534D534D534D534D %534D534D534D534D534D534D534D534D534D534D534D534D534D534D534D %534D534D2853284D2853284D2853284D2853284D2853284D2853284D2853 %284D2853284D2853284D2853284D2853284D2853284D2853284D2853284D %284D77FD0AFF7E284D2853284D2853284D2853284D2853284D2853284D28 %53284D2853284D2853284D2853284D2853284D2853284D2853284D285328 %4D2853284D5328534D5328534D5328534D5328534D5328534D5328534D53 %28534D5328534D5328534D5328534D5328534D5328534D5328534D532853 %4D53287EFD0AFF77534D5328534D5328534D5328534D5328534D5328534D %5328534D5328534D5328534D5328534D5328534D5328534D5328534D5328 %534D5328534D284D284D284D2853284D2853284D2853284D2853284D2853 %284D2853284D2853284D2853284D2853284D2853284D2853284D2853284D %2853282953FD0AFF7E2853284D2853284D2853284D2853284D2853284D28 %53284D2853284D2853284D2853284D284D284D2853284D284D284D284D28 %4D284D284D2853534D534C5329774C534D534D534D534D534D534D534D53 %4D534D534D534D534D534C534D534D534D534D534D534D534D534D534D53 %4D534D53287EFD0AFF77534D5329534C5328534D534D534D534D534D534D %534D534D534D534D534D534D534D534D534D534D534D5328534D534D534D %534D5353534D534D284D28994C296F9A284D2853284D284D284D2853284D %2853284D2853284D2853284D2853284D2853284D2853284D2853284D2853 %284D2853284D77FD0AFF7E285393766F9A29534D534D4D2853284D285328 %53285328532853284D2853284D2853284D287E7D7E537E7D7E7D7E7D7D53 %A253A277A27E532853532977939A709A93537E7E777E537E53534D532853 %4D5328534D5328534D5328534D5328534D534C534D534D534D5328534D53 %28534D532853287EFD0AFF7D4D4CC299BB997EA87E7EA84D5328534D5328 %534D534D534D5328534D534D534D5328534D537EA87D5377A27EA27EA853 %53A27EA87E7E7E535328282976C193B599C14CA97E7E7D7EA8A84C4D284D %2853284D2853284D2853284D2853284D2853284D2853284D2853284D2853 %284D2853284D284D77FD0AFF7E28294CBB995228534C53284D284D284D28 %4D284D284D284D284D2853284D2853284D284D285328532853284D4D5328 %53285328534D53284D284D534D539AC1BBC1765353774D7E537753534D53 %28534D5328534D5328534D534C534D534D534D534D534D534C534D532853 %4D534D534D534D53287EFD0AFF7E77537E7D7E537E777E537E777E777E77 %7E777E777E777E777E777E777E777E777E777E777E537E777E777E777E53 %7E777E537E777E537E777E532853284D76C25229285328532853284D2853 %28532853284D28534D532853284D285328532853284D28534C5328534D53 %4C534D534C534D4D284D77FD0DFF7EA87EA87EA87EA87EA9A8A8A8A9A8A9 %A2FFA8A87EA87EA8A8A9A8A8A8A9A8A8A8A9A8FFA8A87EA8A2A9A8A8A2A9 %A8A9A8A9A8A8A2FFFFFF53285329534C534D537D7E7E77537E7E7E777E77 %777E7E7D7E777E535328534D5328534D5328534D534C534D534C534D5328 %534D534D534D53287EFD0DFF532853284D284D537E7EA97EA27EA2A87E7E %7E284D285377A8A2A97EA8A2A87EA97EA2A853284D297E7DA27E7E7DA2A8 %A97EA2A87E7EFFFF284D284D284D284D28A27D7E4D7D77A87E7E7D7753A8 %7D7E7D7E5353284D284D284D284D284D284D284D284D284D284D284D284D %284D284D282953FD0DFF7D7E7DA27D7E7EA8A2A87EA87EA87EA87ECB7E7E %7DA27EA87EA87EA87EA87EA8A2A87EFFA8A87EA87EA87EA8A2A87EA8A2A8 %7EA87EA9FFFF534D534D534D534D5353775353537753775377FD0753774D %534D534D534D534D534D534D534D534D534D534D534D534D534D534D5328 %7EFD0DFFFD057D52FFCFFFA8FFA8FFA8FFA8FFFFA87D7DCFFD0BFFA8FFFF %FFA9FD0AFFA87DA87EA9FFFFFFA8A9A8A9A8A9A8A9A8A8A2A9A8A87EA8A2 %A87EA9A8A8A8A9A8A8A8A9A8A8A2A9A8A8A2A9A2A8A8A9A8A9A8A9A8A9A8 %A9A8A8A2A9A8A8A2A9A8A9A8FD0DFFA852527D527D537D7D7D527D52527D %7D7DFD0FFF7D5253FFA87753A8FD08FF5377537777FD05FFA84C5353534D %5353777DA27EA87EA87EA27EA953534D5353534D777DA27EA27E7E7EA8A2 %A94D5353534D53537777A27EA87E7E7EA27DFD10FFA27DA27D7D7DA853A8 %7D7DA8FFFFFFCFFFFFA87DA8FD057DA8FD09FFCB7EA27EFD08FFA87D7E7D %CBFD05FF7E534D5353534D5353A27DA87EA27E7E7EA2A25353534D534D53 %537E7E7E7DA27D7E7EA87E534D5353534D53537E7DA27EA27DA27E7EA8FD %0FFFA87D527D527DFD05527D777D537D7DFFA852527D527D527D527D527D %5253527752FFFFCB7EA87DA8A2FFA87E7EA877A8A8FD07FFA87DA87DA87D %A8A2A87EA87D7EA8FFCBFFA9FF7DA87DFD07FFA9FFCBFFA8FFFFA8527D52 %7D5253537D525253524C7D537752FD10FFA8537D7DFD04A8CBA8A8A2A8A8 %A8A2CBFFFFFD06A852522752275252522752FFFFA87E7EA97EA2FFFF77A8 %7EA87EFD08FFFD04A87D52527D5252527D52FD047DA8FFA8525277A8FD06 %7D52FD047DFF7DFD042752275227522728272727522752A8FD0FFF7D7D52 %5353A87DA87DA87DA87DA87DA87DFF7D7D7DA8FD067DAEFFFFFFAEFD05FF %7EA27E7E7EFFA8A9A87E7EA9FD09FFFD04A8527D537D527D527D52527DA8 %A8FFA87D525252A87DA87DA87D7D7DA87DA8A8A8525252FD07FFA9FD18FF %A8A8A87DA852522752272827522752A8FFA8FFA8FFA852527D527D527D53 %7D527DFD05FFA8A8FFA2A9FFFFA2A27EA9FD07FFA8A853527753527D527D %FD05527D7DFFA8A27DA87D527DA87DA87DA87DA87DA87DA8A8FD087DFFFF %FFA8FFFFFFA8FD11FF7D7D7DA8A8FFCFFD0AA8FF7D7D7DA87D7D7DA87DA8 %7DA87DA87DA87DFFFFFFA8FF7EA9A8FFA8FFA8FFA9FFA8A27EA9FD06FF7D %527D5277527D52777DA87DA87D7DA8FFA8FFA8A8527D527D7DA87D7D7DA8 %7D7DA8A87D7D7DA87D7D527D7D7E7DA2FD047DA8FD11FFA8FD047DA87DA8 %7DA87DA87DA87DA8FFFFA8FFA8FFA8FFFFFF7DA87DA87DA87DA8FD09FFA9 %A8A9FD04FFA8A9A9FD04FFA8FD067DA87D7D7DFD06A8FFA8FD07527DA87D %A8A2A87DA87DFF7D27274C2752272727FD087DFD11FFA8A8527DA8A87DA8 %7DA87DA87DA87DA87DFFA8FFA9FFA8FFA8CBA87D7D7D777D7D7D77FD07FF %A87D7D7E77A2A8A8A8FD10FF7DA87D7D527D7D7DA8FF527D527D7D7D52A2 %FD087DA8FF7DFD07A8FD19FFA87D5352FD08A8CFFD04A8FF772853284D28 %53537E7EA27E7E7EA27E7EA8FFFFFFA8A87EA97EFFA9FFA9FFA8FFCBFD06 %FFA87E777E7D7E777E7EA87EA97EA87EA8A2A8A8A87D5252A85253FD09A8 %FF7D5227FD04527752522752275227522752A8FD11FF777D527D5253527D %527D527D525352FF7E77537E5377537E7EA87EA87EA27EA87EA9FFFFFFA8 %53777DFD05FF777EA2537EFD05FFA228534D532853537E7EA27E7E77A27E %7E53FFFFA8527D527D527D527D777D777D5253A8A8275252532752287D52 %7D5252527D525252FD10FF534D5377A27EA27EA27EA27EA87EA27EA2A8A8 %7DA87DA87DA87DA87D7D7DFD09FFA9CBA8CBFFFFA8A9A8A87EA877A9FD05 %FFA87E7DA87DA87EFD04A8A9A8A8A8A9A8A9A87D527D52A2AEFFA8FFA8FF %A8FFA8FFA8FFA87E7DA27EA27DA2A8FFA8FFCBFFA8FFA9FD11FF537E77A2 %7EA9A2A87EA9A2A87EA87EA87ECB7DFD0B527D7D527D7DFD05FFA2A9A8CB %A8FFA8CBA8FFA87DA8FD05FFCBFD047D777D52FFFFFFA8FFA8FFA8FD04FF %A87D7752525277527DFD06527DA94D534DFD04537E7E7E7D7E7E7E7DA277 %FD10FFA87D7DA2A87DFD0DFF7D5227FD055227524C5252522752FD04FFA8 %7EA8A2FD05A8A9FFFF7DA2FD05FFA87E2752274C2752FD052728272727A8 %FFA8A8A85227FD075277525252A8A87753775377537E7EA87EA87EA97EA8 %7E7EA8FD0FFFA8A87D5252527DA27D7D777D527D527D7DFFFD047D777D52 %7DA8FFA8FFA8FFA8FFA8FFFF7E53A8A8A97EA87DA27D7EA8FFA87E7EFD05 %FFA827522752525227525252275228522752A8FF7D7D7DA87DFFA8FD0BFF %A8A87DA8A8FD1CFFA8A8A8FD047D537D7DA8A8A87DA87EA8FFFFA852527D %5253527D527D7D7D527D77A8FFFF7EA2A2FD04FFA87EA8A8FD0AFFFD05A8 %A9A8A8A8FFA8A8A8A9A85227A8FD04FFA8FF7D52527D5252527D527D527D %A877525352FD077D77FD047DA8FD10FF7DA8527D7D7D52527DA87DA8A8A8 %A2A8A8FFFFFF7DA87DA87DA87D5227522752522752FD07FFA8A97DFD0DFF %A8FD047D527D7DFD05FFCFFD05FF7D7D52A8FFFFA8FFA8FFA8FFFFFFA8FF %FFFF527D5277527D7DA27DA87DA87DA87DA8A8FD11FFA87D537D7DA87DA8 %7D7D7DA87DA87DA8FD1AFF7EA8FD0DFFA8FF7D525277525352525253527D %525352FFFF7D4CFD09524C52272827A2A8A87DA87D7DFD04A87DA87DA87D %A87DA8FD10FF777D527D527DFD0BA8FFA8A8A2A9A8A9A8CBA8A9A8CBA8A9 %A8FFA8FF5377537E7DA27E7E7D7E7D7E7D7E7D7E77A8FD04FFA853785377 %53775353537E7EA27EA27D7E7EFF7DA87D7DA8FD07FFA8A87DA8A8FFA8FF %A8FFFFFF52FD067DA87D7DA2FD10FFA8527D527D5252527D527D527D527D %527DA97853787EA2A8FFCBFFA9FFA9FFA8FFA9FFFF7729777DA8A8A87DA8 %A8A8A2A87E7E7EA27EFD04FF7E4D28534D532853285353A27EA2FD047EA8 %A87D5227FD097D7E7D7DA8A87D5252527D527D7DA8A8FFA8A8A8FFA8FD11 %FF7D7D527DFD04527DFFA8A8A8FFA8A8A8FF537D53A27EA27EA87EA87EA8 %7EA2A2FFFFFFA8FFA9FFA8CBA8FFA8FFA9FFA8FFA8FFA8FD05FFA87DA852 %7DA8FFA8FFA8CBA8CBA8A9A8CBA8FFA8A8527D527D527D527D7D7D527D52 %537DFFFD057DA27D7D525228524C5252527DFD11FFA8FFFF7D527D52FD04 %7DA8537D777DA953537E7EA87EA27EA87E7E7EA2A8FFA9FD07FFA8FF7E7E %7DA8FD0BFF7D28527D52A8A8FFA8FFA8FFA8FFA8FFA8FFA87D7DA8FD06FF %A8A9FD05A8CBA8A8A2A87DA87DA8FFFF7D7D7DA87D7D7DA8FD10FF7D7D52 %A87D7D527D52A8A8FFA8FFA8FFA8A94D7E537E7EA87EA87DA87EA8A8FD05 %FF7DA87EA87E7EA8A8777E7D7EFFFF7EA2FD06FFA8277D7DA8FFFFA8FFCA %FFA8FFCAFFA8FFFFFFA8FFA8FFCBFFFFFFA8FD077DA8FF775328FD0452A8 %7DA87DA87DFD04A8FD11FFA87D537D527D7D7D52FD047DA87DA8A9FFA9FF %A9FFFFFFCBFFFFFFFD057EA87E7EFD04FFA8FFA9FFA8FFA8FFFFA9A2A8A8 %FD04FFA87DA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA87D7D7D527DFD0CA8 %FFA87D7D537D7D7D527D527D527D2827007DFD10FFA9FFFD06A8A2A87DA8 %7D7D7DA8A8FD0DFF7E7E7D7753A87EFFFFFFA9FD0BFFA8A8FD05FF527D7D %7D777D777D7DA87D7D52FD047DFFFFFF52525253FD07527D52537DFF7DA8 %7DCBA8A8FD08FFA8A8A8FD13FFA8A9A8A9A8A9A8A27D7E77787EA9A8CBA8 %A8A8CBA8FFFFFFA9FD05FFA8CBA8CBA2A9A8FFA9FFA8FFA8A97EA9A8A2A8 %FFA8FD04FF7DFD10277DA87D527D53A8A8FFA8FFA8FFA8FFA8FFA8FFA852 %275252522777527D527D777D7DA27DA8FD13FF7E4C53537D537E7EA27DA2 %7D7E535353A8A27E77A2A8FD09FF7D7753A8A8FFA8FFA87EA8FFCBA87D7E %7EFFA8A9FD04FFA827527DA87DA87DA87DA8A8A87DA87D7DA8FD06FFFD05 %7D527D7D7D527DA8FFFD08A8A1A8A8A8FD0452A8FD14FFA2777E7EA87EA8 %7EA27E7E77A8A8FD11FFA9FFFFA97EA27DA2A8FD05FFA8CB7EA8FFFFFFA2 %A9A8A87DCBA8CBA8FFA9FFA8FFA8FFA8FFA8A9A2A9A8A8A2A9A8A9A8A9A2 %A8A2A9A8A8A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A87DA27DA8A8A9A8FD0B %FFA2A8A8CBA8A97EA8A2A87EA27E7E537E77A27ECBA8A8A8A9A8A8A2A9A8 %A8A2A9A8A8A2A9A8A9A8A97EA87D7E7DA9A8A9A8A8A8A9A87E7EA9A8A84D %287EA87E7EA27D7E7DA877777EA27EA27EA2774D2853284D2853284D2853 %284D2853284D2853284D2853284D2853284D2853295328537753287EFD0A %FF774D28A2777E7E7E777E7EA853A27EA27DA87E7E4D4D284D2853284D28 %53284D2853284D2853284D28534D532853284D2853284D28534D4D285328 %284D2853284D2853284D285328532853284D2853284D2853284D2853284D %2853284D2853284D2853284D2853284D2853284D2853284D2853282953FD %0AFF7E2853284D2853284D2853284D285328532853284D2853284D285328 %4D2853284D2853284D2853284D2853284D2853284D2853284D2853284D28 %53534D534D534D534D534D534D5328534D534D534D534D534D534D534D53 %4D534D534D534D534D534D534D534D534D534D534D534D534D534D53287E %FD0AFF77534D534D534D534D534D534D534D5328534D534D534D534D534D %534D534D534D534D534D534D534D534D534D534D534D534D534D534D534D %534D284D2853284D2853284D2853284D2853284D2853284D2853284D2853 %284D2853284D2853284D2853284D2853284D2853284D2853284D2853284D %77FD0AFF7E2853284D2853284D2853284D2853284D2853284D2853284D28 %53284D2853284D2853284D2853284D2853284D2853284D2853284D285328 %4D285353284D2853284D2853284D2853284D2853284D2853284D2853284D %2853284D2853284D2853284D2853284D2853284D2853284D2853284D2853 %287EFD0AFF7729284D284D284D284D284D284D284D284D284D284D284D28 %4D284D284D284D284D284D284D284D284D284D284D284D284D284D284D28 %4D284D28537E777E537E777E537E777E537E777E537E777E537E777E537E %777E537E777E537E777E537E777E537E777E537E777E537E777E537E777E %537E7EFD0AFFA87D7E7DA27E7E7DA27E7E7DA27E7E7DA27E7E7DA27E7E7D %A27E7E7DA27E7E7DA27E7E7DA27E7E7DA27E7E7DA27E7E7DA27E7E7DA27E %7E7DA27E7E %%EndData endstream endobj 136 0 obj <</Filter[/FlateDecode]/Length 29427>>stream
-H‰¬—KfÅ …W=ÜI$’¢ì²ë‘Œx¬ Y@„Z
-b
-5…ÂÓ]¨èÇ„Z}.ìxã„ŠoÚ$ã"†ªå1# °»¹
-@›ô ç¨Ñz1U°ïtµr:öÇÄÄ¢ø¡ì'™g„ð™šuí©D½|œcTvÐ߸ÄßM·ÒŸ‹áJ§Ú›†ïp ••^^o¦8äY‡LPÔa’1xôyh«‰7õ5Ã+@̾.€ž€”Ž°HC™ÿ'¾úú×ßýøáã¿üüý¯ÿyþÂO_ü™)ËÝ¿|¾úûÇ_üù‡ç‹o¾ùúÇýô·_>~/ì—ÏŸ@þ•?ügÏwr–¦MòyÌçáƾhjúô0ÇžŸ*aÖé9†kQó9«ÑI/±© càÞ  ijŠŽEõÞ
-Õú0¶4qØŸo¡9„yê¨Ï=Ü$쥿¾ÆÔV
-Hɺ
-ôô¶móz«"Ë[ŠcÕ«³¾/Š-T.«Ù8Ö3õuÅ+š—ñÎEÐÀB0x×—€£…€Žß=Š¤…P죥e9¼Ï,+”¿ÇízÂnQvÙ%y¯¡åH{ ñ,Hô[ú°/ã t½Çm!25”à ¢GÉ…”\ K€µ™6Û¯sóÿ‘oÇ™ôÁ2>d%Lö‡b6îí"Ô“¾j …"±ÊE°…ÚË„šP£?B@®C(+®§Õd‡l
-@Þ–
-1 ) Kë"Ä—µ›ã-»‰µ{BCkQ¬
-2%wÊÆ”1Š{/’Ô”(ÿ<d‹’ ´iä"CAOL1¢g}* †‘BG»ùªCŠÃÔÑÌì|¸ÊBdæýÐd‰öS©ùHÀ‚(?î‚_Nsú¡2†œeïâ'ëKëT&ÚâAÂ=”d`LÍ ;ÜÓA%"Ö-3JP2ÔW6²¸^šavût‰Eh€b=mjßQ â"iKËW6v¾tLfÒ^ˆÎ¿ÊÙb¶t¼ÕpK>{ÑšHn}Ò0D SC UA. Bd TjL†Ô°_DP !è?Š)„1dÝ4w!BêÞŠ ](Ü/Š…-‘í²cÛ©Ž'U¸ˆÕ•=©Î
-‡úQT¨‰q´ßì1²çÚJˆ‰ö\sÝž¥Žê$¢‰iƒ&Õ»¥Ø¥Ç!³V!h-cB¼[@ÜŒ·eÑÔ°
-ÓDÖÒs½G˜ ‚!ÅÉ.¤hIÂñƒÂT¾1MdúÑ2¡f’ ) ïlŠJ§TLzX†¤³wØLO¡¤žjèeºœeÈSC±B”7?…ŽŠ¢§OrûýX£Êïø¨ƒ(ºœ.›…ÀÑBC]ˆ±Æg³·eT ¿v¥1oð|QtåWt•ìjSž#àκvS¹Å<ó2ù|‘U0â†ÏÒª'©¸‡Öª§(ûsG`&ýFöuÏïùò!WW “!i¼z8Ò%z8ÒTùª,øÇÐñ<Í‚Wržb‡„›S’ÔYTõ€€³õeþ» 6·>%[b2 ™ì¸ÅÝ¿Þt rcIB!y](6–—­(! A^HKbB/
-F’/ A+Jç ú)#ôù&† P¡=T¨òß•’ÛŠlée"_¸C¾ø=×3¦Î%k*"ԉΓ&yï?B7ê_PȮԉýªV…GR)+‰‡s—ö«ÈøðtÂØô
-CÊ3õ«wÄk^DrT0=5´ÿ+Xx[ï w&%'±d—]O9ÌšÒLƒÑM¡›)&CÿÇHà+zx-ÔíSœ§àõTõ9ƒ-Ë/çEH`²*¡àÁ>Ba\Äœ«èªÏˆÄ…
-{¡R¤¤WïɲƒäíB «ÎuôTÉõˆY±#ˆ>¯/lyµæó½î“r¤ ô4bñ}ÈQÀ¡‘Fq›Bâ1Éb£û& DêZ?¦¦•áì]F•8=;§I’vú³_±Ãú˜¨†! Š¹%z|p¬•²§Çy)’ØDB
-"DÒÏÿKw™åXrÃ@ð*}‚v©.æó;"UÕ ûk0]|ÚHfÅÕæŒyn}2àÜ ˜Øâ-ó,#…QZÁ2Ý@åµ(Å!Ïìx(&Äb#iŽ( âÎTÎ(RòòNµöÕu¬‰gÜÂ(÷ë+Wâ.Í–R»hÍ|B~§ßwÁ³ãî5†…!`ÔîHK¿­{ÝÜò„)©Îzu‚c1²‚¼¢Dâ‡ÛVyKi‚Õ,c•¥q¾ÒSÙ¨ Gp\ÛßuÔS¢@ü¹ X5\ÐíL²Ùx%ZÈ«ÙtÎAýè:‰VrÌEö–c.Çy-„!€66*çöm”ò:Ö&© RË``—ðoú‘),ÀÖš”ÃfF0 ¼(QãºÞF䶭ÑS¤Ö²QR=·ÎÄp*\ŒcZÆuÒcð°8Á¤·C4<ìÒ„8®©–ÆÖï×b’âC=N¶Ã.¬+!(°~¨~æ2seÒuD@¤,L‚À
-vj8F8õ‘Ïs>Ãœ+pMT—m% …Y.wâ5óáPµ;ÿ_3\…ða8ƒmO‹ïZ(7)vÊ}õ}'˜8ÝÂ}©W®–ðDL²è ÷LuKSý>ÔãÈßÎÉÏ-¶ïô`PÉÜÊðÁx`Г"¦@3·ŽB‘™ç½q²†ì2ÔÂÕNG´…¾y¦ôO};Ô˜gÊ7"´¹ÑÀ/[›á
-ZÇ\·ÊMÀÚgÙßp€;_5 aÚ«j½.²†p˜ìDvjŠØvg
-ÀV?•J<z7•Ñí¤5£4"ɪÔR\Ýë*ÐçíßuiÙ±Cadx>ñ8®”ûNZ«LF¢†fLBÁ´m”9$ê‘äY‰ˆ®}CYZ@¡Å´:òoŸq‹íN—JzU³òȨ&ªƒ²øË–¢•NgD“L÷ÐÎü*f8K|Œ?cBÁCù¸ÜÑâBTkW4E9à%3ÓqÒÌI ñW{¹8$„óQ?y ýùvÙ¶Óɪ ‚ZˆÝ8«C~Åú!+zµ@ѱïú¬±N.2”`îNR¹ÑKÕã2‡Ý\‡‹PÇ>7!t£E:°(Îí ¨±cû=‰¶sŠóŒüƒ¾`Xv7„—eÎËFKcŸ‚rˆ¸¡ºXcÉ‘«Ä’µqÊ¥]!*4 ¦Êû¸Òžë篬£»ëÆÀ¬|A—$›
-ÐÃ
-¿Â™šÄLñ<ƒ÷K4^6b™ PŒD‘¸Èöl:É©3PÒÃø¢oØ]aX×ÎzÃ44œ¢Ã©(¸Ìò؇ù¡º¿Àvl“äq3Ù³Òê)ã>ƒ®<‚qj" ‹“`pÁ:Æ•#¬‹Üà¦ÕÙÇ|®A(ÀS¿óʵGx×X™ëŒG.gLz¢¢¡^.?¹4,Â3ÌçRGE‘úb¸QGç1±:žÄˈí“qz‚}ÎîÄ ”øˆ™a …×ßîNÌØ(Q Ü^7ŠšLÚ†”AD¦Y"€•z#ògLÉ#RG¤6^#ØßÄÔQ[ôAãXŸ(˜ÿñ ('oYpÌé£R%–Òû8ª £ö 5ôïC°ð"Üî#N£:/a£ÖH”àKÔd^hY'(Ç5xº™ñ׈±Rþáý0Í$üoƒÒîî(uÍG*ó˜âAïÎS‡ÑÆ €o0ßõûþ–ux<Õ¦¸-™õG¾†ÿ «[`(eãÅR“|FqºsÀæ9?Ťž+A=8Éž­iÏ<Çè£Ì´_zÕPìÖ?âhû°˜zcÈÚ'R8gê}Qt”ûÒ+vNšM±ÛCÇ¡2tk®O/ì»Óœ»¨
-*7éâWayÈX܈ª¿´yxc ÷}¹‚a48œX«º=xˆ¹iö ¬täD¨ ¹ “²‘ôxKvª¶l‘S[lHXÛdÇ—WRx«TN n“îUº’ÂF™ùMU .6KŸJrejDjÐqFŠãëNXÎ&¢Úno–À¥q¿n÷qLû|ŒEB?/òž$Š‹×Ù¤iúvÈ)Òç:1õ×1üˆefƒ­ÔŽúæ˜áoÚ~ ¸Vªú ˜ì–E|)î2Æïú×X2®Da)35Òy:#¦UØ~J¿ÀˆZ"°b¯ˆÊ¼;ñ‡–5*u}w̦­K!-HZÇ¢¿ÃVäÄQmëŽÆšB Za)VD æž…á¼bW·Íí5Þ#„ÁÖ5ñ™²›2ç’÷iè} HÙwå]†b–ìL4ˆ+íÀΡ0kü¤Qeï•èðâ¨Rñ`.qTnÔZP;RLWîJ®Õ2ÒnÚ…ÃftŒÃ]ýÃè¿Žý8I8!‘\ÌŒÁ!ËŒ89JÈ9c¸™×-jw0Ë¡‚zÑ—ÿ¨øG'{xQï©Û UuBU>âP¨3bw5ddÀrº-ëExd­÷äÄi”9Œò—ô!Àü·;¯‰&*>‡¥ùuýbªN6t#ºŠ›êzÕTt-³O3`Z×›úL @)A>¸Q7ÃGŸY¦QåD½ÁÛYmkµu7ê1NÄYí5 ¢Ö7 ƒ…ºw—8 ’ÒÕ ÖÍ* !ÂÁ²ßˆ°äšˆ{Ö¥c&âBguV»;˜¢6ZÒC0ÏPîÂÐòI„óÛ¶b€Ý®ÄRðþôÕnÿ
-ÇA¡æ-0òÁÍR‰~=ÒØø]Ût9ÙMeEÆÑ~´Û”ã(tùá„Œ¹
- «…
-:v“êžNj_’†,·ÒsM½ûDH§Í‡Ò¨ áÁöå‘mûÈIðU¾#l¡ø;ïÆ),²òuþ’]à^îè„@ÑâÜÅié¾|…¢CL“äf‡BWŽ¶…qê|WúœxÏB@û‘4ç#~Ê3Ñå%3@÷ X›vgÞ®[¯½ ©#SGPÜTC Sb"“„t f_Ó(aÙ´i¥… pC‚hÓI¯%vŽmÓ@ -uí`œàÊPÃ=b„‰ñ¦÷ ßýì˜ “WÓ¤bòb®^gK1Ørãø±‡¯…ð
-uç’ÓæLšq·MÈbçb•6Yf¨”Z#tâ Ï &=X†!Úá|Pm]?”î.êLÓtéwä; ¬,o¥•åÃóæ2T9ù>%qê9O«M{­ê;b|ícúNNDŽ“»NÖƒ‚x€}§Ù‹î âeÝJâ²¼Ë\ÜÅÝ£s|¤§(㈉9Æ šN#võp-¤§ç¿göbUX§’AG|ÍçÉhNSC… q/xìøší>T{>[A´M¬Aùõ8îT´|³§5¢Â%¦¾aÌ‚˜Kô…;À
-îø.ú3÷¼ýƒŸ/ß¼ÿðÍ»·Þýø÷ï~ü>û=M ݵöùãË¿|xÿî‡>>ûê«7oßþôýŸüð­ØÏ¿ùG~øÿ‹¿þF •Ç›ïøë§ÿþó‹ýïoòçþï_ùw½ûÛÏaG‚ŸÓÉ) =ôn´džÍCßߘ͠§zô”…¡)y.€Sûêƒ#«wy0vX"|®gØÓ,ÙòP“?<(6™Hä Ñ0ô‰·ßŽ¦VѪqN_£m[ª•Èic¬'|Ì‚Õ¼™@q«ME«™qPíÒ Lw"F ¢NUÓ~ièð½ÆQ÷-€¢ð]rH»>n„a-‚ð+¤Ù¤««g1_X+˺t¹ö‘V-z€"o„ž]Dy
-ôàý:-»ÍL¤1 ò⇖›\}3Ò=¶©&[aúŒf™4ͳ°Î¶wו¨ä¥Ò²8/ëq·×1"[=¶‰×S, m;u2ÀpW¸ŒÙî8lÇHøƒ¯ø€Ês{'½BírâiœPíÖ¹ÕNmb™z÷g­ÛmÌ´†~:)ÊŒò‘©®8ØÙ² ¨ÿ([FKÇg}£îšÂ™©:avg2.D³² !U¯iR¬¯‚£lúqƒSònι7Ø'™Pñ¸ï·+8‡Y7éÏ
-S=ì»lm¥ÑÖºó¡ÔÃ2 ÷N2ÃÐkÅ ·¡m‰uÖ-KÈ@§¡æµúô–âû+Q·s‡/´»bÆ“Ö gðVÅxrJ"I©ô–¦þâH5› »wzš‘øË AèN$˜Þ?íçhNÌ
-/‰ÔTÓ«Áóãƒ}„BÑêÔpÁó[œ¿77\g|ßñbhÕq´DËúÅî[%ÌÖ{ÐòcîÃ9kÍCÀœ‰yÑ81u:|=û‚`J4w´¼® „9NýÞ‚ ,dñ$Q4·Vmèýƒš®(
-¬§"4Á>"lõh5ëÔk® Îû£ëÕöv‹"mº’AŠr¾Àæ³3”´Ž]¢Sgýú®d¤á{Ý_¢–3˜ÁhÕC†÷[5ªíUmÆÎÚA×K‚·Îó‰è7â¸7@×Õ¤é5J1tj&§o®¹§Š¾Âh秞ª3_¡ðnšCh¨c¹¦ÅÂg˜AWˆjiŒÓ™GÚ„<¦oŤäÁ×wÇ.Y‡¡jÞ¬²
-rÅ}—çäø°Ö|†ëõøVàÊ·ê9²áå€ ¸òVTÀå˜& ØýFt×a‡wgS‹Ùä¤Ç«°Ü1ÂÂXÌ=CjŽ³kÛ:~9¥ÜÇû 3ÓA ,à/aI(‰à@ ŸZ'¹°;TÊc¥½¹ëÜ7W<-SÉÁJ©{apâ^Æu °(Ô¡7Ñüœ5îk¼-ª§l{„"gLënö_sa¿j9ù*¯~ý¿N±Æ6H]ÿ¢öK*ª ÂòDÓ¾6?ü‹ßGlÍ Çº
-1”º’èh2²ÚdØqâBìøI¼n#CÑ/Í;zÔ²¨ê.¢¨9ð2ͯé†@`†(&¡f©“¬ âÜAÀ¹ÇÞ yAµ÷Nd…&¡íw¢‡‹¨ãPDÁÍ> º)IÝó™Ë¯£1=(¡‹è½ÝØVŒ·¹ƒf‚£¬,ÝvÌíÊð\î5›%Cåâ'ÔŽ*G/s¥äÍ àAànq̺a\ïÇ(
- Õ2Ÿݹ寰îõ9žNƇįZ&?í4È=±m y, ÁpŠ ËÚ½TÜõ0Nmz{BWšõ(8XGZyâBé&{žQ«þ×T|ýN"žî%É“õáÀõ *¼ôX3®‚Oö ",­!
-K<‚²(¨’vqŒÄ‰«n" D-%;áu6
-jã4Å2”ai_{¬¼
-¾áŒÓ°%ÂiH+ab¤Fcs/ê ' O¬êù»‰2P4} š!­ç:3^µ˜š
-P]–6Äl’wþ=Vt]ÿH=ó÷K{ÕG¦¶ö‡¾þ³PЃ­ðjhÖx˜·ô‰F5]ññ,ŒˆtÏÿ1ê­8:Õï¼â
-ŠÂ³pc‚éAëјž¶ø±Ñ ´ãÁU1’‰ËÀB[z|k~"Ÿ:]ô7âΕgЕ¯öúþi£-ËR5^¬~YoÕеèC1‚<®"8H.p ~mï4ýTÁéÀCO—ò‘Éæ×K¥ ¥+˜PõÌŸ;­ $¹°Ÿè¼?²Kqô¶~8r7rðÜlëñŠ9°/åq
-Y¢h¿À5óô'µÄRF ²eýÁÊ5ÒEq´ïw§ûŠwYO¦œf…3Ú„†Zjb4Ý=¦V7ðéæÕY߈Ü
-¦ú6µqeƒìø
-ëˤGÅéö<
-%n"L÷q,†C IJã ä~®2ZÇ b$óm0Ô^NÏ<q`þpÂØqÓ—F‘¢£A©üä Þ­,9óóI:om{B‹ÀžF“y×Bb$f½÷œ@(Â×áNƒ‰yh8ŒÉƒ¢¼¿­G´µùóg!Pæ€AR0K¨s»×8qYÇv¿ë ;œnæJs'Ÿ/À¿¶ÒAÂÑ­0DV/îd9¹”m‰o¡º½ÔÐe\¯À`; k˜Ù8­†ðAÝ^ˆ¸“c=:ûq?_Ö‘'œ(Zé;gy ã,#7¾ ¾Êæ …
-ŠêE€SEp¨S{âÑX‡Þ¡“Ù‰È
-?×ïNH._2¦w9Y¸G¯‡š)#ú0äº-±TZ §l9ž¬»7ÿ_Ö˥Ǯ«ˆÂåí®Ï~ï#›  JaF–e;È‚¸-Óøßó}µÏm'}/3’Øé>UûUµVA:ÑžêÚ“¶ê±ÁÀL¤ ÛÖ~&èJ~ðb«·<i±âf ™ôæ8©ïãðrÜ„»
-reÊBiX@AˆPÞ-Èl6;ìÚ(;fŸ%kó‰šg‚Èÿ¼ÑÍc=©4e6ƺîÉ
-iØmÀsœÝ€cá¾¢ª%ªVÕãP¼$rß
-ϏR
-‚=Ó1\ïö[Ô:¨q$8ÆPš›–+içÝ›ñeòñúë{l–Â=§Î0¸?¬`\*ÁÊ´_LtmŒíÖ½’0îÕ¸{ä×Ò „a æ.L`Hp„‘fÆ ²Ñtpq:ÀC-šd<ö–Õ—G_µ\ÞÐW}À ¤¤ÞØÇÌ &EÞ%-i„¦û-ôµÀ‹ ‚7¾ЯœŠ´†zÚ<©ƒ"*©O…eCþÃ>èAMgˆ·5I¼iîŠÈ D_“!(b´ÇÃs ¥c„„×ô
-¹ZÔà Êu¶eP󾤞ê/âÑ@éÒ +êÌ^F>NB
-Ä&–1`ò³ÁœŒ,|T@èøªTœÈD‹âJó;PÝB+4 ™æY猥‘pÝƨÖ!«©‘êjzQ¬„[å|3wÚhr^Ë|eO„ÇXd~EŠSc
-X© R×û9J‚÷çÉ®1²^¾ó%0€]&š‹‚„÷Á¤• ç1€¦¦åƒ2ԚϘÔ:¨x3{Ax†£¬<å÷<]Í“Y ÙËÌr¢X·´—Ǿ<ºi{Ì¡Km>ö“Z(åJY¥ŽFKç-¹çÅ+ý˜,X&Cæ<ú¡ØÕB}1Lfõ·¡–ììggZdgâ늣7ïc3´Èrf=‡#«¦°Ë¾Hõ# 8Ä–
-I®CbÀhDx†mx
-QË@ˆFe´ƒˆ¢ÃÛ‚MjŒŠe¬¢X
-®ó(Aáêpm·ÓºH8ŒüàØ‹±KÚø5 jv \­…f Ã1¶zœå—ŠTÁ•Á OfÞ\®5Ú!g3 8¬Ík­±¢ÓN±J©ÌCàЙUY(í'ÙY8­Ýp@æNâÃ<ÞM:ÇWÙxìÂGÀ +u!Ûäå<!Q7Å6[°ŠmÁ<å.­ œ5º‹Ó¶CBVg^{ÆEÁœÃH±m;RN×"…ÑžX ´p¦©q@=ïFDf¸Hy¯,£ÃHû»ÎˆÏ Ÿ±y/»\E @,™H¹Åe3emÆüæªÔÅ@†VrÒ€rSjZW;X­Æ|ÁÈÒ”<™ è`.e•ÈÆ&eQˆAèøuèQ¥ëh´ÕÀ7$R]û…ÉÆ—@ΛÔÉ4 ö•Â˜ ߈’UAݹ)tiNgºäú{Ü@¶®ÖOµx$=ƒ¡ç.8¬ø&4N2´T>j[[²{¦?lEãnä5@xÚj+òW6OQ)å± ÌŒ¡mí²°… ­¸iC°Hå*˜Ã
-Ö?åÚÄ
-ÚUä$ÖxfÑ ûD¡ØF‘°ÚœÁH D‡?˜GÑý äÆý}f¡ pÀü‚Çg`Ì
- °
-¹Ø;Èœov.nN‹! Ö¤)¹îüÐ#Èn¤ì¢üúù{”u Êì1ª
-uµ{ÝfEÃ/ø´hSÈÂæDø¹bUàu2@÷ž1öEÒ‰„¶'Æ|ù;â¼×‡?]ž©yP*qö‰¯Y,öòEŽxÖÍxdy
-taù<ô|¼gžM†Ô¸!+U•ÆŒ‡™ ƒò™È ™° Ciø¹Î£º“ÞiøõÛ1ÞÝÞd˜Ôújƒæ:üàigÌĹœ¼„mÖaÜ8†MÈ€Ò¶‘OUßaTxÁ4*” ‘¡H›Î m"… w‚ãg õ™5šËDû`ËêüÌòuK¾?¦•>‡\E Âm¶/<φ¼¹(ðÝ\ÿÈÁ»¡w%ÐhФ úï*»ÏÒ ¦'~Û'>a[©à7Ft~fDE€qk„C´¾¬Ã—€mIw«ašú·
-hÖÐ=Üæä-
-ÄKè¨J"ÄéΉ£{`.­Ã :)"`vï˜S-œ}ddW¡Äwûòù£Ó\MÔjM©<:(‚Tü¾%À*Ž:}¾k}­ÿ‘”̆‰Ã¡^ž+ &ãüxNžª¦Þ
-,je’Ì_óÙí3#ïl§ÁÊzù’ÅTCCP
-²ílÛ€  B‡û™qÐHÅ×)¤½^çg–¸@ÁÐ2¦
-«'¦bûvÊ'¿è!úVì¦;=ª¦@úÀk$k\Ɇ1[ûòù„°íãx„ùùsø›vì®P°¹üG°¼cè[TK
-T椢òj¡eCeÍ«²Žœ;5€>Š¶ )èF.ÿ‚-c¬å|¶ UVÀ矣M»cï>Md s"ƒ¿ö [ïôžöÏ{'4¹Ô
-lhoÛ„uGïü­"2ƒ8‘±ETwY##~p ®"2žù*¥R'j|Ð1zLo¾AeÄ>§‡ë±±CƒÏÇõ
-]€Aéx`€€ZŸ©#F\à—Ïg 6±6Jꃒdçª)šõ[ÆN¥@—ÏyÅgÖDH¡TŽ`ÀCÙ2®1Â'òÜ3*x1V°¢F2–ä^qý%ÞË•a¢r“Ž§À_1b±ÌÔ~
-iJ–5E_‹Ï8öyyÌ*„¿ßD¼%»ïQÍF1z_à"çÊh8T·éN@¸ìÀ)&'“ƒ£
-ï€5ÁÕµ{§BÉx¸¡‘èG),M F¡ñ9Liû5ð?gaM©'ùk,ÇdÃ5Â:B°š)Çž×ÿËVϸ+Îßæç7U
-¹£hN°Öqt>㨟ԜÔá½Z]ËÕ”îôÏæ„Äu
-‡@T‰¬ì%„]g,Âò." ÕAãGDÊg.™Œà~ùlïí×6½›ãRAç09¦“œÍrzsW –:NòûJø8u Áîe+•»==¬iCŒù ä’€-‘•!vL üÁ ÀQqå÷
-äÞXd`ãü²QF©ˆZ3µˆ:år”ÖÎN®áNµžˆF•ÄÙúŒ#T¹>rŽ©ˆ¥úÊ{(¥IÑè:4!¨ÐOí³µ„Aeú &jqQôwJ§Dü^h–­TBµi]rÈXn̺¼¾½†XApªV gŽ7ã}¿C±Zñ9f r+GÛiyì¯ïp“êF
-ì<äy¶†HäL¸Zd˜«!+¥n
-¼/uÃìRòf¼À`(«¶gÄy"sÁÂÆ¡oÖñQoñLY¤B×h8
-fÑ6ed6O…#½‰P"¸iŠ=¸¯ô=Š2A ‚ÒBÔÀZÙ«SÃ{uµD¶¸ (­„¥!óñã–CT@ ýå<£ð„£8;Gê Ó9Š¤vOªÈCgç B›’]:ïE$E.±6TÈ‚e‰Èà]ª"c‡ýñBŠ6D
-ž,}®¾7µRîïçPê\Hh†Íóô]L¦'jëä±<‚§÷N>Œb«Qnî ÔÆDDïžeQè3"ÐÑO1³SÈÖ ì#‚RIFðò_;ÏCDÁ}]˜ó}b˜Î³ ¿jå-à°4LÄñY§PÏÓË:Þöâ¾³×”ê
-‘¢4(îŒ6î<KJæ·Xûa­ž¼¨`o¯óŒZ€æòÄdœ½xï­vçzÔ:ƒ¾i´qh^´†o|(¨ߣº(ç”Ëclñ+°Îw&cŽ-öpän²ã°†·7\ö„0+a]8PÂÞáXeQÃYØ;ìÔ5‘½ÐWÎ!g]…àFn Ñ°ˆ(o(ûŽ~ô„utžnHÉÔØc L]Jês°£ Å@Û E.¥äüÓ
-”ZŠ ~xF<X%vzDqt˜Ì‡ëÑ.-$
-fP Ea~tMÆ\¹D¼oA “ïµHÿZ.¢Pu$¼ªHÈŠä#<Î;kxQùH…z„ÂœôÏTÆ:üÛ•0ó1Š¼È3ŠM@´P7!y¤A„$éjRb^lF$­DZUËÅ=‡»44ìõG¬³>]¬Ãi@"ÖÁîÑ,*£_œý9Y¦`r …º•—«òòë*”‰ŠòûwsúáæœÖ$]õ9™g·6°ÉýjˆÌéEÉEW×=#0¨·¢5éíÄg”¼Âdm¨7ìm[ã‚ähæ~y2µ'+@\¾èš€~p%8N–!x=Ù°eä‡($ÙÒMÀÛäŸu 'mkÓ˜ …Xœ|íÄa´|œ A¹Js2ÑW›š-·uú7ÿñ;ÿ¤ë—ùóãç_}¡ rºRüùçŸwëC)àÞ³‚mI»@/Û¨ÿ¹£xäa}:"j.û¼KÔ=ÚãYb9"†6ƒˆªM5â´@é…Ö8¦ˆ»[oŠª‰8fîÅÊŽ†b{šùFŸ Â$ihSiž¦í± I;9fë¼O¡¸%Çhšœw­&=ÌȱèFÉÇïø¨b [iÇDñPégù2gDŒj/„ÍâQÃfý´>*¤ÅóÞQ"ŒQ!œ‰ ö«s’¸ ÁFöÔK‰T›Tr/ õz”f.ÅÓ&¨,›|È G–¸¨.!H¤q@9ÎtóU P‡6Çé~èéÄ9”#ùèPUO@ýŒþ¥š»šLÓ²Q6zdsB/Ò¶´ÑÞ
-ÞØßG¬OI=ˆ„< h—²ÒÅÂ4ÞÇqÑ3”
-9F££çz|—‹Ñ
-)nWõµ™ñO4‘O²;eCFåÝPðÌ7ÇòJÊCËÚ¾Ô<]5è‘Ïi'6ª™
-²4‹òe³b„îd3(Vº‹Œêóa¦èa€”i®oœâ¢,A³Ö!+dY¸¹{Y‹ÓðÜÏŒsë "Ú’ì“"ÔŒq–OÛ‹f]RÓ5(b ½ËSŽyçF¥5N9vT¥•½×7¯}ÎjY'°²üÿ:r¶>ÃÍxI¢;Æ`ÃX^°ºÂ[pœ:JË
-6 ¥Tï:bš 6dð¿Ôd/•÷ÍwŸ¿üøñן~ûùóŸoùé«2WU ùúùæ§/Ÿ?þöËóÕ÷ß÷áÃï¿þûÓ—ŸÍýúù™ÿâ¿„?^¹Tæ«pi4/of3™ûˆR˜Ó2V@¨"tuJP^ôyö2æ¹³-‚Û4"@/
-Oua– Ö
-KѺ7¸8ÊFò•_³p‡>@–„,ì²859Õi"I:32
-oˆwEG?9#?üc9”ÀZXô]†TE¼Ny=±ˆ RÄà˜ Õ>_Á/ñPÅïÍâB5€ãŒÕèêYÃIÌV„`µ"F¬†çP5Hèë؆D "Qà6ÊQËe¾™TbàåòKÀúÑ¡‚[©ÖÊtÔÚèÕ h³ßQÂõ9Øa5â«É ç„xÆ*È'…
-ãÙÍŠ!dd:2&½fLgÅPŸ ÍnÒó#`vÅuìà[6
-e!ÅÚR¨&kì64¢‘tÚ~p ²}ŸjwŒôò¢@ÇŒÔt~fíg£´Ñ½øV…éOÕ@X†ÕÐû\$ÛyÕñl•ªô›N=,H•2ÀÞ¼Û¼š}ißéOã8C–ÚYq
-ò ÂÂDXƒaÝûx9q@«5ß•
-÷u”c¤Äl²8AÝQš¬˜t§ÏhÅÈ
-ê#Ò*‚¹'ÉŽ^cäu¤@2±˜orÒkÝ`À³ º É7ûä]¬ôT´ªïg«2àj†ÇBw!sU±@ ð -n´ X Ó¡Ð}©‚×rŸeL”ë#Çsr˜z&¶Ý+ôc ÍD¤9lJ´•|dµ|¨Ë*6Yúl­ðqk°ûÙAJ9+•{X>Zg9
-\=0äæåAPTAö¡¢PØ€õ‹x_ø0³8TòîuÁmĪíêrªdÑm¹K‚; 5íx+:þs8º[" €´835﯒u@+‚}•HÖëø·â…d|õÝþ}~¯×ño•ã7EO”Õó÷Øø6*©Mjè²ø¸[
-ñêW4~;e à ͞
-~1\L@M
-€Ÿ§ ®¯HT:ÜŒP¬
-BO3Ü@îÒžñê
-ß`bc‡eÂfí.¬Ëasô5*‡yHÝqšX˜zpo„$(íÆhvKü¸:ˆßýÑ‹×Ŭí»ØdMÄã‚OÜü•ÇéoN[”å®æ{P®"©#]h¡¬¿R1µg©¶d7:¥É{IÈãµJàxÝú=²H-¾T1ˆg¯ >˱£ϽwK²ÀË)Kìùÿ r•­xåæàî!rF,wy™
- žÖÀ“ð;‚ª‚ø¨}”ãå·–kú7fÈŠ©´‡Ôg«Ø×)§„b99ZÚLk©ƒò°Ó𬴓€Žd,uùL¡Aô5¶£%xw
-lÑÐ-zÅ8€Ð]Y²Ý8ÜJ® ½÷žzý0Sõ@:¿’x40×læš^…sZLÒaJ˜/Þ‹6"K´Æ ô­êØÇÎnÜx(½V‡ ñ{›js«91iâäU»ŠÏT”‰˜¤—ë4'©YîüóŽÌÆà‹ykHõ±/ÚN¥Ì 0r4iª+î&jêŠ+òàËzSµÃ¦‘­,Vì‹®«k"ù}Г´²|)9!ëU§©=¡ ‚¸vŠ Ç
-ï">ÊHFɯÀ¼âB-ù`O.DZ€äýn7Ä×X$˱]þÀ‘çp/^ÎüΙ€äѵ»µ“
-‰[-’]Úañ"§¡yà&jì ×ú4é|· ±Ñ«b'ò­ wu…¬*0mUøÏÈ—6ƒ|Ñ­¤ÿ´à˜¤î4C >#7©æ°|0„‚é©Þ—;ñž°8¸.Gß /;Ò.P²Dñº ö®NX3Às;™€ó¡Ê¡‘ÿð3@ù Ñ ‘9ŽÜƒ¦ïN= ðĮĿéz*Îp3àâ=8d½ò¨“=[XÁ§Ïµ\ÙþaÐŒÞhÂÔŠr@w‘^•äz(‘‹ºÐSáKÙOÑ­* 'ÀH͈sß34¼Ó¥HøÙ}¸/=qœ RYkUµPÏ{Ë JѤ¡Lh`P°…¦¹`‚î
-Y*iÞö2Òëô’^gÈ\U†ïÀNp…WãüpŠJÓ¯ÏãÙ²Æ R@ÒÇ]Q„¶DpÆ´±Oaª®“™@w˜=«Öö^ˆ<@µ¡à™hþeA.Æôåáߢe£**/# œˆ€k3bÔŒøD£q
-M›»DóÏIv
-Dº„ÃÃ1ŸhçÍ„ @B‘·E3`þôd4 ½êƒšHõxØ(æÍÅ-µï»ÆçVßÏÁ¨*J(Pþýô°¿MmDz(5·»ªË'¹¾Fl†Ö¡áãc­ ëSåb)ÛFÐh;#Š-×
-Ç›¨¢fR± «ïÆ,RÅ\â"4u|…÷°ë ÁȈøyÁ`þÌÌ¿y½ÎP „‘1Õx4Ä·©iþ3'\Œé‹ T=£‡“@ILäŒ-Æ …z€_ePwšYT²±ÈÌ9.,pÎôëÛJÊÖ+*|Rȱ9Ðù"¦•!BÅó= €1F±–AØœê"e4
-ʌ
-DóÄ÷ê}Qºj¥Õ<R¦|jÚÚáÆü[P "Ý%2éú&yr½Ë¼ŒüÏÍ—J«5O²W9–ÚÖ‘aU-ÖQ›?Ô@ÑÛx¢¶‰Eöä<î…¬>qêƒ
-c_é~èÈœ¤‰Ö»bCûzEÔ\»ý™ÞªeÈÎ[G¹B£¹ûCïÿ Ô—æc=›Bai-ÛÔR€Éôõ¥QèåèºA'K#âóFj¸¦†¥ÈDaÕz20Ä!òŠ¯ÁA¦¹
-³«À ùƒšQe3Œ#²¨½Â÷Ä’©ÕÁs4×6óœ„Nú€R˜Al#¶¦·•Û¤m$ƒ ÷Áé4¹âSª4û{ÁùÍ ¾qiÁpŸ–TûIêÇœ’ÒmûD(HJ„úŒñż䴅®zE=c’ê˨-}:®ˆb8¥ÜYÔˆF=™‘¯b›+œ ŸŠÔñšHÝ“øV#ŒïA9eFáhwDµ.v3wàû'"äv"Ô­A1c›7Oº-ö@JgDáµZ…‚öy'A#ìÈ“¦;EcS º ”àoˆ:Am€EE!Òž¿ðý1ÿ˘—*÷£Bñ2v4Ü®g¥Z¦wÈ~xåøn b:wÊlU4b˜“¬)6ħEÄè_1æ&C`"H‡l¿8íI¾È“‚‚Á}‘`M¨9÷o‡„Å Ev7GK™w<[£¤m
-s{Ð ¦Iƒ5ÈžËOéÚc‘)“b"âöBVçõ†•‰Q1æ!Ùñ4°†Îôã²@ôàV­€~ùñ÷;äÊM̃ßjî‡÷}l7 6Ôá£o(Ú»ãkÊÁ™Ï§èˆå¬H˜PDîÀF‡„g‡vð&n¸Ehi3Xaa¥ëÎómì Žêñ'ßCñÕøùF
-5Àažp?ñTëSŒP4uøÓ$BÏB5FÒ
-Qõ‡ÙՠÓjX*êÌ)b%òÔÁ[°Ù*#õ›]OßF–'ÕçÞ÷Œ*9\þeöQY¤En9d‡TªöÙI§ûr!ÂðøûÖÿóûT‡b€üÉ×Ùý"0CD×&ˆ˜Æ]ä»ú2?ó·5”û§fñ 9M×42)úŽõäVFî if¶CÜ‘u#"SVto\4:–ô…4ùÄ(Uª
-ísð:Áó=ô¢¡qúÊQS ¸{èñzˆ• šŒÍGdzcëƒóÕÞŽcÖ÷U×K$ b­î•^£fhõÑó_Z«‰ä!()u<¼´Rå&¹f°ÅTøË@ž
-ƒk‰RÔÛ>âA$øïîÒ§ž™—gàJR I¹4„ŸËðÆI¼S7mê„7u¦Tõzü'æ…ýU®‘(Liµ•§@,‹vÚ¡5LLV ÏŒðÓå¹…¬5~C‡ôØüM²u
- æj_UÈæöyÕÅåSZhQ‹lÑù4⪞42(¥li¶«á³-÷…ëçmtýÕ˜KA¤°UÒ
-¼“·W¥àƒ4ýp×®ñ9VcÇç³$"|9’ÓÎXM„F €&ií/ PˆSÔ
-ÎÅ‘ ëÅ线®Õ8Š+cKŠå€Ñ#žÖDÀ²"ö¸õ²’uÎE¬žóc­dRaó¦Êýÿ¼<\Ë].™AÒ¦ÒñÑ,T¨³ÆNš9%i½h ÒE»g Äôrlî“KNÑCF% ÑÀ¬3ñ®n×nÔ+#êè¦ë£or
-T)9O¦)žd[(Îc
-±çµ1)ôá‡=WZ6ÎD›ß" s/ ©Y,¸§²-‚1Kñ$»  ±ŸGGǹ½²çðö^ü‘îNµ”¸_™—®$®_4tnüüÔzâ=àç¡2(¤’ºÚÒnÄ †cHùÓÆ
-ë‡Þ@°[úéÚJÖ8÷JŸ¢°¾a<Lµ…#¦2XÒæR%Tzj¾¨WKÙ^×ë\ _•Ssp÷+”%Wußúà5ÜBXÆè90t$[!°²·2_¬Ók4€"rÎeF;Ÿ69wUˆXiÒ(9=¼"G…[46×Nc³W´ù½^w)Ê\ãI”!WÔTêa¡ ˆ¢D4˜:q™ã¸A×SQV@P9ûe%h6PL=Eó‰ZW»W:Ƙ鈕õRÉ
-H‰Œ—A’\7DO ;ô¦ƒ \ËKÝb"¼jÝë—$~M¨ê—§¥°$We“H$Ê1fÿ©Ý>ÇŒ°ˆµº×«V>=ÂËl¥6;YÇ\6£›ûDés¬ê7ˆŸ?þþQ>þúRÇ×ÚÇh=ª õx/Õ&_ÆÇï5›Ë½•5ȼ®¾úì}îG)£Å\ܺ¤”Á)­®°u ηcÔÂQçUQ
-÷ðUáÿ=WµÑFX><¯êÞ+¡´Qç9§Wç)³Å4ëÓ›rt¢Ÿ6úh³´Õ_
-dþ Ji:ºKæõZ‹Emeg°Åç*ÝéTî‰Íh _ÅC¾9x4Ÿáçób–rKÄ&xfW‹ót¯œë­Ý@²³­Ry4}wŽÏÝÞ²t0ªÂsš²ÂGƒ<c²+œæŽG·´.&•™/4㢃¿Î)\laÆj¦7ÚZ«ò«ûHCÖš([Œ]põ Ä‘Ùn»gÐ× ·16»ýyDÀXÞ¹"£šÝ œ‰?Ù¾Åõþ¸r¬¸­º÷ÿuÕj![ÈO‚FiŽ
-ÑÙd÷o$rƒoÎá…}*ÙT#{g@&‰0ÎìÓ'(lEKNé}y DOvæÈÆ3è5„ô1Jêî·@MbCÂÚ¹Ÿ$Þ€$út‚7í -%³À€MÍ”ÿr*m3“ˆHhÂ`.BNé”Ø9œÒx}ÊJ ÷ê)m¡/oj1ùW“cBò¤‘ßAÐ47¼
-#ƃÅwç… ýzB¾¦ÎNsسƒ&ýdp³¦´ œ4²)üs$H™•Wn:?Sçv”ç˜)—ˆém]ó„ ¦Sü@cX=¯ å>/™íðâ s[qG15cTäõ]Ðs~}§Kw3oÛ]p?Œµ¥È þ„Î@@ lœ†¾º(Qý$AV‚!ÈT«=åLb:P[Mõ©´[AVOóر¬NÇ3Ʋ$|FEÀã9eQŽnÊõŸ^å®Á¶¢”yFZ‡;”= ‰ò±n û*¥WžR·ûs꧖w“x§%ž4¬[%êàä0V¼r¥±æ¿Fƒ5MñSþgÙ)‹L×t\6‘%îjÝ_{^Ì v)W}ÓÏ‘ßv˜rZµÍõoÏ¡úˆsÀ£”gÁœ[R yWOuN#(K×UòB‘CA]V™}a—”N?H
-Â>b·¨}J‰L+æwA’Eæ Ÿhûrbš³›a.jÝKg“pË5–Ašv×Â…Ep"“AdUËp“BI¸’¨êj;J×p¨ä•^¦›ãœÓø p‘±½ КåXšûÔ‹¯Ñƒnórõ©®ÂPÈw¿9§ãu+ÞÅóôÉaÖ÷Rf‚4;6ò½ü*¤ÎŃ„Œ WXBWÛ# ؃Ê{¤±µVÏÔà|:¼Žå¦÷
-3+I\B˜8\Ìh~ !SLÌ£¢TUF—CŽvÒ3é=bD½Zäs0*=²¬a$ˆ^lè‚bM›Ì#T¶S‰Û–Úõc‰nAš(“gµ<GÓ„pùå_1Ù…-eÍžQ!JÚLþ«è¨‹‹N~ºB ”„P7‹“<H™©û8<Èãã¿ÄOÿ/‘^^óñ‰¸B!iw+irý_GƒõÙñÄ¹× ‚L–!„_´í
-›“Æ#“p%‚tøžO—&p÷d3æìEù
-ÓÄ´ÎImôH•÷Ô¦¶!4­õUŸ(ùÊddîÝiÜ® )~£“è愼V2J@¾aöJâ`SI öðzS49Êž¹$Š8éK×É\Ç,jOüخ܋h¨ îoɪÔõ¢ôKÁV³ë¢' ¬\ËÕDn?¸èµ³á²ïÀ¢$¦ßÙšuBÙæø1-AHÐba{4íŒKE°r]AHd‚zWS-ŒÍIÛ¤¯g\T8‹é
-K‘dj›ž3n ·²ô úõÔe3ð—rà—,½€(.W/7”<µÔ¥¦#¿Ça·±WKâM×j‰.œ 8“8‘5èöà/7W9É~íN4÷`Ïãš”ËÆõ—AÞÇ\šg3!…x¥Á—ý’WHŒõ çý9”¡è=ŒÏs ç2ÿ[KÙBa2v™ì…­cW¡·ÿ¡¼<Žì8‚ j| ­ÅWxëÂÿ+_vWâÏÔ
-.˜VÄél±˜U–Än£ãÜ¢àcãˤNpÄåìùtï(‹—_¼­á±¦Úe!ªÐDÏg+LÚTN'}•*¯Ã ö×ë ô]ÓQ‡“ál+ J"à ;7+\¾ ,Flé¤"^@[ä¨\Äz ÈôáÃpã’´ÉÉØiØ´+!Az»„ÞV´2Ø
-¢¼Ô ^1>u„ï0‘O$
-ºøY¹y¶ý «À; @غüÉ!ç=6ùÞÛ[‘t9t¨
-‰@m>]ÒæÀ^Å ~ÒÅ`ÃP%HNÎ:—¤>Î*É©ôø”tÃïW䈱õ“nPÞ
-|Ô“Ÿto%^ÒuŠ®I—’Deñ“.±ê‰ÁI‡èîI—«Œè_TwIº¼WoŒÿVx¿€åß².çlQ¹ççÑæ/+0P~øYWÐ+J@«ûaWÞƒ±áútú)ì*Æ >ÄÁ<ý°”I R t˜ñ]ƒ&¥©YÃçgZ¡wbzŸÇ\[èác?üüu)i¨¯Úó¹ð5êRT¤ÍË‹ ß³î›¸?Ö=cþuŠkÒ½•Ü‚®N‚&0º)íãÞ‚.%bµcã:Ÿ‚.@W38ZYÊå]VŽ˜â†}.ź´p`­›¢§WâÒ’t¢{ÐuŠ®A—‰çÀ ?ëB¬K×ë"./êÒ)xQF˜~ÔE2ÎIdqâÓ5¢Ò=Ê Ò¨‡¨+N„æ3Ú–¼¢Í°£†nöáGÝ i×fÀ%=D]`€™ Mf™ŸuAvFìÐü¤{+¸å\!m“U¬¡?ä\¯è’sUÒÙ‹f†Ð[Îsó#‹GϦØHuú‰¸Ìœ§sÅŒ‡rí8ñôsƒä-†úÛ|Š¹4÷æÅBœÇ]b.Ýæùs"´êÇSPC<k.ó)æPÌKd늿Ž”«B´ö æsei"s°|äSÌ…êÐ5Æ|¼fás¥ô€¤YóAß%æRÂ>(ñðÍ=æ^‹Ü˜ë]b.H*öDÔ¹¨‘˜8ùážrï5÷ ò7ÙÝ!wtN„¤pšM0iDâ˜z_ê<Ú8e@å`càÈc…Åþ탸·–ÆYG¨”žqÐ]‚«$yáJwJ~î­èËX¬ãÊïË°'ÇÅôY»‚Ä †ìl¾+ŒUÙ†Üg•iÎ`½Ý߇ŸUT‰ÓW‹¼$¡í2,9H…ù)“Ü … †¿ Ù› Ú‡ˆ w°ûÀïGT€@ª?Êêò‰Ò@'éa”ÕSô¿WÈŸdƒ1U8ÊÓÎBŸH™8ζR¦0½“¬w&hîþ†ÂÿRÔHËYñeƒ€Ífð+™^ZÓ6`"ÅÖEëôàŸU¢ýȹÉRÄ…å>fI&¸¡¢Ìùd=êMe8÷¹ÓÆNçðÃir*¸pæ¼íu
-‹}̽N Œ7ñi&{ÚÚgRnhSÎÀáíôÒ¹b;;ýq*ÿÓÆÞ?zNj †Ó#¹_»ˆ¼I@›=»%Xmš$(9&äшºä]E·™ÙlñØ°¤˜@·ªS#OÂÓã·Íª%Â$€",§Ò1Ì®khV­òF
-’Ðù.I ¶(m˜^SÇϽUðy±~|Ü
-ÚÚG%^
-‹$1aÞ6á° S` Cê_-RÞ£²få‚ÔçCÑF”_?/DDB¤­ãäOuŒåíaʇ ©‡ö< Šq8|A0€¯Qr
-„Ç- h|@³§½÷"wæÀO
-N#}·H×!F£Hj†-†SÄà`7E±ýy¦ô0¯ô sñózÂÓ¼àXaG{8ºŽ¢O–#P]G
-«g
-^”½Õ?}—È| $Ø
-Ü@N‰]•Ò˜2ÌõèÚû9A–ÚÆö˜Á‚pS¼'oMRn©×HXÄà€íqÁ¿Bp®æŒ :œèdâÉ
-o¾Ì0kSÔí $<àÿ,u}x
-¬«ÆêUë…,“3YÌâ•=e~¤^z‘’ TJdXªš—£ Ô÷mw€úV䜢˜rⱯoåÆBUfôúÓEà­èõ˜š@òÁst3 lÁlü)u‹3E<ª üó¨Ù)Z%%t®Ç;®n¿Y*j&Ž°‰\hQ‘u8Þ±}7¡²Øš=E¼–_*qkû®dy’ìî.jDÚZšn%bú*ëSwÄ˃r@¹kh†
-Š]ëpŠ^VTÅÁƒÏ/fËÈ6QÊHÚúX%Ø«ÖWæ_.Ì­ÏcÊ
-5x´ÒÍkê͘ðJor´%`a‘Ù¹ÏÉ’7´ %ÄÞ‹Ÿ·‚Û0¿¬kPrWês¹\çŒ
-é”Jzc8v =âR2ÕX†¶¢È3(³€äý9C‘a.­/û|XNz= iûÀ
-ÞJ {x²ä:
-t°éÉ”””Ù´=Æ{ (æ“zྼ8^™ ÂHY\œï¾«ˆõ÷kû–ðá¢X|CúpFàß}žð rà¿öâ¹çÐÍJ'Øñ“ÝÔ¶ófÀŸÀX ôëÓ¥Œþ²W`áI¾:Üq²˜ÁÊ ³~8x»KÞ¿äzº¨"L1ãd
-²ê8ÞÈl©Bv6o"l“ÿ©&!w:òd‘“i›vÄjD©WÈDÜÇðyx‹¸ÉHr†—mr‘x©‡Y~)±µa
-Œ,  [Ã+(‰áˆëÒ2£÷
-Wqßk:EVâ½üçÜ$öPóJ4ÿ*¸¡Üu4
-ÈZÚaÝãL¶Œ±`><– DÝ "i ðÂÀÛ{eYa~=ÑAòVí®”ôÐiéFøCL"k–Η·€ó ²YÄŠ®gÐÑúÅ|â
-v¤”+`Ý}t\О‡ï>š Ä‹áB‰¾‘ü’ï£YöÂðÀ‘ó“¾¹—M+ Þžõ»E^àý_”.‹üñ7¥Q¤¯‰¸Ìò€Ò®/<Sƒ,‘7bNÕ©Y›~€Åí–®
-à‹O(¡¹‰faÆJH9ü
-L†t¯‘P }ÿ,Ç[aé5C©}“ø¬"WwJ2é@‚‰^å]"¾d½QI£2­\;g5“ü^@NåÑny„Ïš#yÄp Ø—¢×.j¼§
-@á?ÖT»ð”ÚÿÔ'BË·/šÒsè…)@UV~Dë;‰}ɲCp˜9“?•¨ýвpAôVÐ(V/*9¤¾>îñåRcŒãU㟶*$ó†Á÷…ÐÌ$µ»š‡ÅȉÐ\úa¸ûÖRuEX¦
-ª×L‰k%3©æö! F–)5:ßâ
-•&°èÛà‘̦UtÓ€„;®Çˆ&Ÿ®8ºîÛ‰#:˜`;Æ
-¥Ï‚äç¾g%<4îðÀ1Nñ3´ ‘ôýߣÂ
-4Át¹Îc„GNóm É.´D¢–¨<±¼ÒSƒ£X¸rÔCQ’ê'¸‡ÿo«èmÿªèfoövö& ,.ðï@<›¿^ÜÍÊ–ò™Àïc8
-Á}˜Çï¼BbÊ’ÖÞž¡¥7éwèjàáãÑÉ`Äúƒz¶Ð̬b@äú±D«Åï—>CWÛG}¿U¿5'‘ à´ y0÷nLÿ>c)s)âíL
-öÌ(6µ…\š P5Gö#¡WëA1„0z%ßÐ>ÑÁ_áÖä‰NßÀ;ç.Ó'÷ìmaJµ´Õ¡“1‹ÔÕKdüQ'ôB)ÔÜ`läÈŸLçrÎŒtƒ<6½&—½çXœX¡ÅO%j¿lÏØÝjÂ'ω%ÊȦ¾>c(-«¯ é\˜’ɲðO[%Ež½ÉçørÆÑu{˜&^Í뉹°>ÜU³2bÖ&8S‚Á+æ`¿ ia[{ô)6fÌ;8ìPrd¦{Ñχ"Ø·ÖdLËb¦CQ¬¸q˜MëŽOBWUDÙ™’¼•¦µ­q3.ˆµ:PwåÂò[Ô7‚ ¢ˆŽa.à™QVé¼ï§Ü&éÖÆ„…J&Äñ¾qo9CA!zÏñPá'1no %=}±q°Ó6
-A«$‰µ;oê{Rz8ž Ïr-™’,H:(>òøW˜ò£*’K(ü*É ƒìþÕÊò±U–.ë€êâ¾ÀFÀJ0Šß‡—eOÎÜÃâòQpÝææÒ„í°ÁléÉí‰fnÝ 5çïp8Ö‘ÝòÍÜày–ßÝEnR™&kë—
-²íjúŲÂ4l>ØÜY"wÚ`4?j M »næ·†"ññÈ‹†
-1­aõ:H7ùÑâ’À{Éì5/í3®B‰ß‘£ °xÈ~åÒp̘VÚ*Qg ¾±d< Æ’¤º‹2ïEмA»% :m®þ19lÝp÷4’”‚Ÿ—Mã´Jg]rØQ¹Aþäxzø½Ä{Œ@±:ÞŽßѸ©<uòÏ@¨¦6´vš¦¼ÐÅûÉ@õ}Ò+*ôî^õ‹Èdôï¼b‹ÌNTÛŠ|*~`;)±Øp¾òÏ+JMÕ¤±vžïUÅŽ„4¯løV#÷;pmZFQ¯©k ?Xê¶bòá4÷­B—n¹­O•*wâ"/Ü77šÒjÏv0Q«ÙØÔŠ¹í}M«gQr®>ïþ((BTXŸ°Ÿ¾ÃU™ÚÐuü6Z71±‡<F\RÜ×´(ß äk¾ /+€µâî³yX¿[VƉ"*‚Á]ÖðEwöýz(Âè “Š¨6Yº‰P=¿Ã*IÊ›4´)ŽØ*™ëÃé6ƒ%™gÚ¤ µ^@—„ìWQŠÚ&Ö¹¯•RˆS Ñü¨Ž"*ú°w›¢X®¨Ôðãe’œG®áô|çaí­ná­|ÿmI‚¿ì*”¬Žýl5T$D[.% ‘’Žê~G›:@#kÓ¾Ó(êñpsÑ’²/§µ Óf~1¾65’X¹1˜·ZÉ¡éf–AŽ@>y7§´ÒX×¾^±‘m#&¦hI$œ,Ñã : †Å:ŽTM”‡R¿ˆv®Õ•30L §Ø£zГg¬°¸Ê +,é0¿T§tï#(¡–ì”Ø8ÑmšÙXìúô¾ ê÷•ÙtZB´}ØMFž'v L¸* Y& -‡rT@¦ Cßµ÷cH#¬gay÷Y¹O8T)¦ÚY¤
-¯Ì¹[C¸êÜŸ“ú­ÀæÍç¡¢(ó¿AäxÒË;A·IT€04qORÉ)ƒ°B£cÏÌäbÈÈ’ÙX6h`>ÈZ&Ãlê@¾ŠÙpu#lR(2WÛ9èKVß#5]Ùå#=¯èb†U‚cd}¸¦o©)$eÂS(Óƒ5Oý-$±¹ŸF>èG˜µ¹AŒ02$…¨ƒ¢"à çÄVž¾ƒ•€ñªÇÛ
-Œ Kæ] ‰,Ñ’ÙJˆblp•ëýy 9LÏͳ¹SDçÅ[6ÚÑ[Õ”fÛ%èÍJghS³ô¸Él; å Hqo‹^}ãá0î„ÛSôþT"f·[P¢+’…„}SNfLÑuö³‰ë~ì’°’&ûf߉¸‘†(¬_Z%p0Ž)öy\"ˆ¡QàH¶Æ-S¾Š‰[›q(ãïm·™yÖ8ä*óÓ°¾úÏOc^Øf JOjJ7Q2t$ We+i³‰-<^¢8È_%Ì+ó®†k3Äb:«^’8rÐCK‰å&O‹O*û;䵬´˜§!?–¶ØTþÞ-A¹è阸ܶÁáIqÜ,òÃ+r‘˜€¿`sú ¤G¶§Ãrh¾ü„…â62§_M€k
-'Ü;P
-æäå¾ð®Sv? ûNÍü™wæf·)uÅHzzŽú”d“ Xî… ”«Äóí(H«€q9±§ò3rƳ=æ?"`âJ.jï¢}OË~M¢Ÿjoò>¨1Eü™ Å¢çè|d‘"+3¤?¾S“T
-¸øjåß I¿äŠ1j<®
-\Éâ@dcÈZ¼ÕbJ° M `ú:|¯¸)ì­¿ß-ºÉ°Wt‘añ[Ñ/Çž\¦Û*
-äééA‡×ÒÆ®þuW‰£¨›HHꥺ
-ªíže°!jsJ œÄ¢Á(¾  6’K”ÎúBÌhð’Æ™…lÕuÛ2òqÛ!¸[pNð :|…Ÿ«Ãà‚áµ(þ9ºé0_êZz$tyWG‡yp«=÷äsß×üù‡7<9H©ƒ.f3«Š~Àc3íµF¤3åÙž±†ÞÞ˜§¢*-0ûšèyÀ€´·Ìß±zA7ZBÜAÙˆ ½¥¤=›c»8éLgÞ9´Ôª}‡z0™IH'Ñá[²ä«íg”‘x%ï©9%ë(å](Ë “?}'Ò…4᜗k×>ÜДŤØÅ JÁrÛ«ðù(Î!…¾yýZ$y˜\‘>³l{‡¯g ƒ-"Àrµ[dtc>Ý–0ðhK»ª•àmÿ#¦SbM [Ù@Ü —×ï0LJX>ý+-Gk§vÐæÙFü5ß fø-.9F?G•YiC£½d'v¤+¢üð8`|Ž¬>””¥ú¨ ŒvŽúÈïŸÞ¢CP4›÷éïo·(®Ïрǖt˜‰ o¢5›K£Åk…´o>dø ˜1âQ…¦j7o¨üèTí&ɧÌä\‚ÍRQÐ’ûöö½®˜U©îûn€Ç03h·Mÿt4ÀŠ¡¼üäZ*}N7’5Èsn—ÑH¬« ÿ{Â
-/’,Kæ¿]”2ʆf¤wo»¾Wtq<gQŠØ‘ú8|ÇC›‚£¬ãÁñ\Gá:žë@ï\a¡Û€Ì_”¯ðà¥Wxìm—\죮0],6‰]Ýîà
-v%‰D¿X&àá–h½ø}º€±8îà_›¥%„¼…:=š Kh£‰e ‚¿­h0¢¨5O£ˆ´£Ìñ-þÄwn8óuûÆSk
-˜‹¢®®¢&A¨ZÖ¥-¡î+ÃBÁ¨œ¥ ž§îI\+pHØC–+Éñíƒî5t+2dñs´¯hžüˆËœØ©Ð$i,ö$è*Ñ™’Ãñƃ(1Y¨j.Š"2ÒâÞã´ZÅ}!`kAR@@{Âß×0þùr‘šû—@Þ?—5ûmE
-E´S˜7ÇLƒ ù
-Œfá3ÜdX`s– |ƒ
-Mq¾–i› ÅC#ŠUdºCnì>›˜ 7Ó’!+@O =4Šäëò‘Sâ’Òµèý¡¨Èúó4Ç4À)ŠíÆË9# ¢'àÆ–èÿÇTP¦Ü=ÁÆZͽ¿^vUAA4H`˜Ó¿ÊÊÌZ
-(ùX®¤ÌtBk;µ'f[X•:ÝI¶R"²6úú`p¤|§…óo=—Žô»S'ˆ³y‡Ž´5šœ5Š¸O,»@œÆ A¤8¸ë«uª¢6#eëž ’>ÎJ^tPÍŠ#vVbÅWÛúhr wº¿Œ‚MÚ”¼xÓ‘ŽÉ³ ꬈„UF(d´¿€0Ž)nl5´U¼æ6©Â¸€Þ_€T×A·æd›Áõ¬’{š? 2Lp*ºh4pM …¼Chu¢:îÕþi+Ü„«»GNˆB1kl…sÜ­{Á€®Fš¯eH
-´P.U{ÊÆ]->ƒäÒ¢,á(´B¾€ð–Å4:5{b£æ¹ÂÄÆÙ³Ú<Yþrò{9Ô‘M@q¯ïâu}rÖ÷ïدšmÂ\”©šG8ŠµY:¥‹_ju1Ú¥>. áQ™d%æ÷Û×·9HÊÆ5B
-J¾4P3+jEö
-)‰d¡³‘°ÑBLi [:).iüòЉS¬“²!FAƒ"/Ÿø©8riS¿±;#Ülл([PÔî›A®À£7ÒHk…Ä[g»Þ¼aueÎ:“®`uo`ª2@Й3£Gä*éW~×FŠ›ðío ka=UØ·pñ¥˜_J¡
-4y‘Î]
-¿¯ÆãAîìq+«í齶¬gø„]”®Vñû,ÉEA<nò™Ò:U@á¼ÜŒŽ<ršÏÔ‹0w¾Å
-"MÏ*¶²t=“Yâ8ty†AQ¾ zÚî€x2vS÷¨¾¢†zê¬!îåvß
- )¢AˆÓøvhäD—CøÏdp0”•x\æi+0Ì“…wTb¶Ìj Ù¦$̓ªŒ‡Ëix„ L S±< ‚Vï¢8E³ØV„V¦]Æ ðœøPÓQL*åq íæV<I5"KÓc)t©A¸a¯ç)Å!È52NSç[u¼ß#—ùVJ†HŒ²ð²uøŠ®*ûrHRº%úsANN*ƒ\ g+„³“ øýZ§ .×yÔMcÖ j5gá9±ž§šj±ëÒ£Š„qîG<¦„Û–Ùš~ø¢>0„TmY”Ëx(‰ÒµIÌV* e‡åä© HãoÞ)OqŽ~Ù+«2"Iaóã0"ÕÚ45‡ âCýM\ò‹#Ú¨FLjaD©ÜiÅÅ;4J²Û#ìÕ"W×8ãÈʸÜMù)r™Êsílô3#õ Âw‚·”»kíû2
-…(Ì1‡r9ñ,ž
-HDüx&1äñ¢ÁQN_ŽqØŠéÉåkÃ)Ú©vî) oqšÈ:s°8)Z’aª/Â!  ÷Ä,c'z•y‰ 5Ñ6èõ­Þxt¢Qpänª–éD·áõó{“)Yˆš|ó£ñÖF6EäI6ê܃˵ÇMÞŸðÙÜÓ$Õ8zó’/j+"+ªSÌT¿ù¤ÿïß1.Ùa~ü!(AÆ#OÃeN¬ò®T„üeˆJø*{ž„û„94˜©ø‹#2©˜„\ƒ`Í‹¤c!4‘I–’êm#º­^‰¿ƒàë¾ôí¶ezÂs¯~–‰¢4â „=‡Ñd
-o«Šè;A b&*-):[‘¶‰bP„¹ÁO¼HèGÀŠ­ƒ€ÉYÈ´nÊ’äA8ºAH^sc|å¤×^ßØA%ËšÄVJ¥M`G®<ÅæD¤˜Ô²­3h“BYùƒm(>¯žË+<ÉŠ±¬ë‘™i‚}½¿
-E¶%i1]Z,oª5%¡z¾ÌP!®}ùaPLØG(á„.¶˜\ÁõËòE8mÑ\&n}ø:Ûˆ;D;a2©&ìØ[°Cžâ¨#ª¬õB>½÷Ú"Æl8Ú.ßi*§ð{øë2*|oÓ󤼚¹“hJ’q…Ì'£ €aÕ¢IÝ
-s 9ú^jŽ1ãñP]„W´ÙImˆºtÜ,£èE?©× ƒ¥€#ºë—B¶jѺýM´BJ¶Tó*‘VŸrúiÇdiŠ®€v å%¾¢Ça Œ3ç„5>hëˆ#ð™•Hî§R@0êÄÎs©ñÔ¶Ú|áÞýT†Ë›å}„ >0gdcY›é†×ç™Úôþ”U­Œ1¯& ßPÂL )¸Šò‘4&k:ŠO2Cÿ'° “ã¤M Ô5µ6²m !i¦ÛºŸ9B<°Î±ý4ˆ®œ‹¾s ¤qR š׊­È`Ø! ùû Ƭ‹¬é‘ªÉË7c€$£À‘î‰nešØ!ÜEÁGón´ ý΂ãö#J†ß57·=MeY5$]þJhonB¼–ä¹J;Æ\5°h’l¯ÖÁ6O‘ýe»‰QR¿õy<6*¡è¤Žš3]EpÿÈ/8o‘]4_‡]šD‚QD%äpÞEK>³ í!x2!n[a¯o)êMÜ2"B{tû›ñ2I’äÖèUúeœÀa--u‹¿-ÝûŸ(e&úۤM*HÐÕdYfÆ°º<XÚ\KIÂMÕ…þûa‚O²²†%¯tª`-ktO@7ÅÍy¿|(Ÿ&„pçFQPlþˆO9/!Ø`
-{¨AáNÉ©F®,(ªj‡P¹KX…®¼QL¡¬:7*T´“̲ŸÝ{Y+•@hòP}ÖY鶀&s—ˆqðÕhìgHóƒØÌ¢©nQˆ
-åò|¥OiUáÞÔxt¤öæn¨ùmkæÍhî{Ÿ„ ë kF8-âV53¥øxºûM9]€UòÅnu"2ô™Á}„k] Gˆùî|f^
-Âd/ù°AŸíûWúç²Tçªm µ!!ú÷XD¶R6àR€w‹Uÿ=ËX÷?-y;êûOîãצK†»E·z{¼öGÑáNÉàzøxí÷’ÓµwŸëÚ¿þ¦´/ˆŠè3–ÞÈ`Xà…[ÿ÷¡HœAbö.¦> a£‚^R‘-F\Tç%Ĥ+ý-wFZé¶
-(Áó,1¯õP L^güÞÞGÕ d¨ÜéÔ€}°pÒ÷wº²O“Sò£&¡Š#V³z ].c(çF‹£Ð›œ‘Ø9©H¤„j~†g%zÜÌ3€"/
-„A-½_eúw b©LŸîreá_´úŠ §A ÿYå,î£^‹„l#ØgXþ*ðµÉ†¹Ã§úxyl ëÑôzZ¹g>±©k#½AǬ2oB@ý3‹'g©ë~wû¸3r¶#þ^+~y0Yd%­ñð"ä!åç0
-Ep`>’Ÿž)7M(ì.ýŸ$Ú®”:QZ[qå7*n2‘Ø
-¬Ó<W¼1ú_
-ògL´=/W«;þxq”fÛº%2
-ˆba@{ã©ÂyÆØó.¹¼:Y·Ùã$ŽÍF.ÊÍû‘ç&Æõ“Ä“¬xZ;»tŒ¢`‰¯·Ë¤ª„nvS´ºJ®ÀÄgY”|%5<WÙí}eƒëá[Lú]|{‘V¸òâíáöcê6tÄçiK´&C÷¡ˆ!:á¼Mþºf3‡_¹°2ýò¥1Ï©9N¿´rèd—å3ä¡ï ”Ó ç¶x™2CI(lnÜÄfôøó3PÌ%_%û³e}'»’qÎ<d”)NÞÜôvÝ`Ãl#QãþŽq¥õïÀ¡
-Ÿ ÃoÌï‡ É}…´€0ÌæÏfüì
- ?®'³s {DQ2µxêKN<p|Ch½ÏŒ`—Ò¬ýÈ;¶÷.Ÿr󎤜A ç»ˆNIðÅ+Φch;ÃÝ#<Àô&)í¡¤™"Š
-jAƒ§Tz:¸H˜ƒÜ‘'"Ácˆ#[õnÁAÉò£èAŒrÇŠãKrtpI)àd€ƒÝ?%"ØPÓ¢„U
-å Ї€#Œà‰jó¡$³„y€7Ùé8 ÆË\hÇ9†ÝSbí}G‡C$úehpϱs#/!›àJ9ìî5M¼Ó
-d©Š¾½ˆŸ)¬÷áÏ
-°6ƒ]¡Ó‡BôhkßV «Ž¼F3?M{‰ {ôÓ !„+ö;ùnÁMÀ[Õ·Ó¡(c±¬²
-Ò@&ÀÌ%Õ¬ñ-lÝ’~™¨@¦½8ø²8Ñ·M=æÅÀsq¢œ'æÓÒ}Ù ¢‰‚žãa/%›*a{šÕ’ûñ;â ä
-aøåxJЕÄ%™îáV±èR°ÊÞ†û§¢ÂÃzõãˆ)7„QCOEªƒð³_6ŽON ×!ü2Â8”…Ø‘ Ãü
-­Ï=ÁÔ¶“£ þàþ¼I€÷UtpÅg *ž¦J¸!·A¥#í›0L¸œîÈGü)hdPd+/9þn8&²ÈÔ.%vyœtŠï yGæSÇow‰AŸ*eJ|1íß6)ïß™ì–pVõ|Jð0
-´Õ§[ÁJJòüm¿Ôm:”FÉ&)¾J®#ÿeF‡çBsÎ%ÒY­¶º½·È¸bí¸Ò(ùˆ‘:MAVZÛr
-H‰”—Kr$6DOà;Ô¦‚à$×í¥oѳ’ï¿—$¨±ª¨ Ýa««R $‰Ç¿rKÏ>[+%Ò²?þúÃ’ù³ÕÙK)¹Œñx}\Aõ ¦ö9l$›œôo`ÉŸ3>“÷Ö„ÊÏžºåî­–ÞoL-ÕjÞ/ ¿¾¥1w07¯Ä•ø_n£Úw þäóšÜGñ"=mòQ.Õr+4øÙjuëãÇ [¸ùLž¸ùœÍêÿzOÁ%Ü@õYÍzž=9õYÅ»‚föbÓjöñ¸Cš{2%ÀJÿâ%Sÿ2z*óñ;BñY™£ÔY ž2÷œ4<Îáf6¸¯-ù<aFm#uêÕö×#óû\¥¥6N˜™ÉDš¼s¨×Ö»[*©ísf÷Þu™iÁX}LO¿ 㙪Ãç>À]H½B§"—dìœÃfs
-¸_4ž\°pçÚbN'šå<çF(j¤/ç "µœ œ(ý»c(ê<k–ƒh³$’Á6¢O·6Æì­\n‘f1êÉÞtïžë }דÄP¸1k¯çÂÕŠJâ9õ0NiÖkç£è]Õª_Ü0í ás/hv⵫Õ
-ürÙÉZk*º…˜”ʃÉiÄ)•h¯Ò‰ß× Ñž…ÒædJñ*~æ¹Ñ&)aN<Ý, Ц͉ÎÅóW´&ÁãÓy¶²Zh¤æñt¾›©tx1C·ˆ›ihú-nciª9…û6̽1T"£ŠêòLÎGH$ É
-ªQïʳ‹è—·C¨ ÷4½Fq[mДF×'4+ e"»(®p©§ÓÐê¼!ÐnÔI«÷3Ã
-ŒÝñ0PjÎøa°•Ä¥bl«EwÓÖI˽ÎA$F¬Pc»Ÿ‚ Pz
-}‡ˆ\Ýd×x¹*¼Õ¤¦†çà'©¶òÓÓ?ý_}\Ȫô ÌÌ»S+ªgnËÚ±h¡÷ÁI6¢öîxoüŠª‹
-%¦žJ•Ï•_Ô¸>Zc%ÉwÄ‹¨ÿBÿú¿Jª¥ç—d)âCŠYEv¿Íæï½â³è…ÛaÂRÅv µbìµx0™TኚvÉ aYÍt5웦c9?“[ÙÔ´¡ðB¬òCB#_Ðv»:ǹdÈÂh×ú)ˆE HÒ„hJÜ\„òUe˜ ísx^ÑÔzîë½9VnlCš–ƒƒè›ÑoУˆ„[„ªƒr,W, ÞQ¹ÅÁc­Jqw¤B•)9ŠW6Â4À‹Ú$ÛB øÉBr, 2Å4Û¬üµ
-…ÛFëä§ÏBÊÆÀ)L}©ÅÇÖRN™c%>NrëC—ÑxZ”€ûÃÔ“cú9¡ËtiݲMíåصBÄ)°ŠÈ?·3!èxØKäXs)Ãn´jO•ùÅ;ù@æB)h aí¨F…k=eø ÝÄFxÜ¿9gîÎ×ô ®wzKÌ^^„È­¾~¿ðQRC e,jï9Î1µŸ³é"Ë!ªR8 šƒb³›¤¸‹Ñ±,+4ò DÞ¦˜qZÆ`½Ü‡N
-QaÂ2háx6’ƒC¿âWÙi»ïØldT>eg c†afÐkàKVBL¨¸\ú†À!ø¦’ë7̈òYÔf'Ô?寊öoÎy]G/÷uô2y`ˆD‚B”µÝI9)P@Šº9ãmúULÙF±µh²4és½ƒ(=ßË”Ø7²ýÅ”ß!ÿœŒ¿®oúŠù¸šhÅßáâݲKÎH% ÌQ'تlWgÛvG­*-ÚíÅ‘ÖQcÙHe©hˆIƒh($öË· ÃD·H/Šmãs]û'bGzoÇ0=:i Ìs™)wÚ4‹·Ðªü8|e+FãA/T»œÉÀ›åÍPÅxxfoHH²-³ÉdÀb™ÓGh™ ’gT ß&ŒhËi2PÚçdPc‚Àš%s‹LeUnɾ³Ê™l«…iƒ™HS* šýÚe[ ɨÌY7æ™v¦•…55Aí0É–É÷¼'™œ&EDÒ± ñ#vä÷r1µ7%ÃâàuhÑÇí2òáVÖ–âs\…áïžtÒI_îË=2>×<§úŒÓ÷•±Q°•Š3vÞ±ˆæ\ëÐØ»åf!‰u¨Éñ²¡¹¿CA>ž‰¼§»
-{ûf-
-ãE "X‚ó_@ wÔ
-“N (…£“,«X$<þQ_œÂNYuËÆ!&˜@ˆ½™Q˜sSæ!L#ò ÁxqôJ‘‚0IÈß´ã³ÁÃlγSúG¢Pð½@¾¿ýý–ßÿ„×)ÔmÈœŸÔæ^©«÷»¿ÿ~*6ÏRج8Y´]گί‡C²*Z®9‚ÍdMêŽ3’ÂÑHIÔn*é¯b¼¶j€Ò’“àb?„
-Ñs²z_›ƒ,vsGÝ ªä€/n{$ =—¸÷9åÙPe6x>DG€ L-_…~d-“qØtç€tü)M@j K`OyZÐEµ%&¶LIhé ôœ-ìÉ<U¤H-Œä²< Qªáöá ›„wfIf@à1º«ô.$Í9F–Q W “ALtk=šYH  %;hˆ’Y¦ÑÏù<XäCtc ^@> ¨fYŸÎ†àh(}uÞ¡Ô¸(äéÑ¿ T¥Þ¨‡ÜŽƒU ^ƒ«³œeåé½û´9!_ƒäŠI¼1ûŽé?Lˆ`ÑtÎå؇á2¡Wqjb.½¥Ö h‘)a;Yœ!Ó
-$±¶,/álÌv šGÅ$tÖ®»QzT}…EÆï¤ë–¥‘œb ñp´r\ ÿšµm³9D“T†’ÇC7 ƒì5jŽ« Ne^ ñ8ºö¿Î ¸(ȆQ‡È;øÂñ‚fùõ)Ú‹«>ƒ6 :íÅŒ¿^³5oXÝóžÆXÊ…ÌåèG“Óz‘ ( ÉÔ»WnQ@¨Ó$þ*Ó7ÐJÙŽ|<œæz$Ë~ÞNdƒ-¾$•3Ѩ2sŒ“e(a ¯¢øŠ÷ÞÇZ¡>Œ­2WÔE$ ²D£Nè+®bkè1"ãUŒ›š!Û²sª]; ,ü¸1Ež¸Ó÷Û^)¢É·â]ظêÿ,ßv4™ÞT–×ú‡â>Ö9Q•^·=½˜q¦ß6CS´+í¡;6¡Û*Hw,Ì:4&çÛ) ý´›X6Ô^–!Gm 8£@âÜv ~4]nWx¬‚A–6Žâ×l5Ä…wt-Çä \lwÐ!ŠÍ0­Ýɹóå8c¨69ª?SÔ
-È’g(šâìtÈ´3!Ìe>&Œ ðg—#nSÒ†µeôÄ
-ð6Þœ§‹ü%ç‹™<>­k+´É#í«äóuý×Û ÉÁ©!ZômL‘üë|| Äuø‰®•*Ð/奴Åô¯Ç—©Èh9«Êˆ42N…X¥
-ij>œVíÑ“0s¿8YgÊ@J›
-$aSqÕ²“ä«TíJ/™^xÞh—„
-YD’ý&”
-Q`”±:)1QÂ
-—SOsŒ €p°©¹Û9i/m
-¾a( !f¦ÚPT»*²UOÖ‰¤Ù±Ÿ,òÏmü•uî%ošÄð•Œ7¾jm¬Søgì;} aÐ!ãMµ\pЭF×ø¤|È‚hYN¿žfâÝùo~ØS”™5F@z © !xf­£6r$Âö¯yÖH (¦å¨ ƒÅˆæL¦Ѫü6_…p°ˆy‚Ša‘®qŒœŒªÊ«Áºp ÊÏñ¹¢¸|¡‘†¼j‹ŽÃãjö>¯ÝGÏøýºšõ›t¶â=´×W³ñü¦¥Ã _@ÁÞS^ª´ç@Ò#‹<ãÅuì0dxs#²
-\ñåH3ÉŽ‰ÐeÂIþ]"Y|7€Ú„P-Kïƒ?CG¾@¢È ¬—àÌæ ©¸ûÝΰ‰8
- ±÷HEtYîÕñÔo,BR£6$}çi
-†ÀñÏ¥}©Ý¿[ɇIBçŽáÒaF%¯¸‰¨¡Fd<Ø8ÌgUmc—ö¿„'’w@¾°9»¾€T z“ S¿Ï ,ŸLíH+^œç×à§a?8·4ðüUOÀ¯ÊòÒҔ峞åõ0$ì}¯~ôÄÁ¼°Œ°îL­„ah»·
-í¢èQã5ò¯ü¡6eÇU”ÂÒa~œÃ°óxŠýîƒSå?TŒx²Ž” ª‚W«,{È_±DRcNÑÑÆ6âMã=P?b+FÜž}–wi¯ã*!†ÌƪW>ŒJ—v{Å'ð3”
-/Q\øggñ%ÐÇÛî‰÷ùÍø%¼6:5~úpæMf)áØúË2·XN^Çu½E#˜”Šî1®n‡ÌVµ„;‚‘ÌLeo
-BjÐŒÈgç ˜AÞÿ²›d¸KŒA Pg½Ùb<ÍWŠ §é “T±C³Ì»EÆy’å( ËöbØ¡&…æOï×¥‘ÖÊòÿ©Ö³z8€)ŠÃÝxQ¡ ýd¡ï»}#;uÍXÞNü.ï`{eÜKô³ò¬Ï– 8aV® {„2Û§c ©*ß5Wt‹ˆBÉDº«»"^O›Ñ_¸[Š
-ídå…1[ùŠÏ¤Òãdà A0ŒÝc|ö~QL1V¬ëñ 5BÝWûÛ9ŒU}µÙhH‘´¹±72ÀXóœsUÇc/—¢’/&˜È9×s½Â´âQšg|Äb«‚NhDk&zJï·†2* ¬Ú§äqÖvÓRìzÔ#„MLìÖö«¦ŒtÕÆö£j3$öíÁHÖ¸ˆO e´z³-ÄœçñºEf?¶./åf²W}p u…¾Ðò¡}à ‡Pè…šñ‘s6oØÏMèWÕàè Ô®È÷ð?çsÈMl8Ü‘”?_@ªü;r® ÈŒþýöÇ¿ßÒû¿þzûãŸ7\KÕRÉn5Å1P”I[´þþ;0œ”›5ÒAÈ SÇŒ`£ja( 3zeVA½e7ñÇþOÅD̸Œ[¨×0Ó
-zÞÁ__ØÓ,v~ÿó yÜ(à†£6´ZLÌV!t22¿¯  —YJ®t)¿¤Û¿S@3ô@ꆡrAuª>Læ1N`wœ2f3¶³O3OqÎ’ÝÁ.QNk-6»géÞ¨8ƇæqDÜ­-{] Ö~\+Ô§ÎrÚýY9ò¦v£ ‡ü‡ñ2É’äÆè t‡<A<ÎÃ:{©[Ô6uÿm#@¯Êpº”=¼nE¡H:`°ÙùpÀ>­¯¬T'}¶v$-È
-±C6þCQˆÙòíÖ×±ˆ6šœü=²Sòæ5°¶¾Šé)‘I·}ã•p§>$õëÓ‘d‡!ïšøX!mŽjç¬XÊ RqNd 0rJ¾¡x—ñ¦IwmêŸ%~Uz!¤¸bçíœÃÌß_sÀÎý«|ïÎÉï=>nÄ·YýúÉÚhÂmxдR–¯<œ÷ϱ¨¿:?CYM©ác•°Ks ,Nž°~„a“ÄÄözÄÔÖÇ"ê»ôî§÷¾Äœž¤w ¤ÌÜ•?æ<Kæaöwé%RÑzÌ5èAÂA4z  ¬)î×0¾4䕳•,7!'–7‚pä8ÿFf„t)b1½ì¾Ìc4ÉÎÑÓÀž¼‚ Â.“d»_D/ñ²Jµ{Rh"6}`ß|•oEß&ÿu,š/d³P°û5Ä‹€š‹„œ —“f¤û”ïqt_V=ô©Ó¢z}8
-Œ›•åèVDDc·P²’ͪá-CˆÍJ ]Z§¨Xó‰0ßK67ËÁ˜3×Ó9 \“Ö»‚ß~ ¹ˆ6‡”|¿’RÓM»>gúc›¯2`—`Jeg·î0µœa6Бlè-%ì«ÞãAâÃG“/çÇyõøH -vûªßÏ%–¬âK˜DqÖߤ¬âðɲ-f[ã[ÑMx•HI±uiÄÈ?.‚åÉôL<ŒÝ®ûQ‘€íÊ2®+ôž‹m¢×°(¸*ãrò
-š>FÁiºÅJdÙIt1wWfv
-AUh?âž
-£ 2ù¨äH‘ßO¿ñŸeÄôÏaό֢rXò«€SÏ+*”fß/Êe7eG²G’!×:­ª ô~àz­îð²~‰`-o%2ØBaÅßGóK§"45²fJïE7(êÅ"¡©
-Y—ê%¨L m_5Å&R®Z
-PdV}â<`FqX}P¤ŠS"–ñµŸÄfãðÖåiÒƒ"± 8À\zÍœC«Pzµ’¥Xì,Úë_Åÿ§alÞ(û*Ç
-PÆŽ0,™†Ú8ÝÎa_X—~u¸Ò¹°²# HÐ#-¶f.ØL
-¢lA/‡¢¯‡¢’yûý‹Xndpíô20«HD+ÉߊrUx´åYR3€1ÂïíÆTf ìgQÛÍÏ K9R:›Êà ¿•øMjXlíêîí2k)ÓÎ[øDöÅ«Ù1ñAÃ4}øw#൓NÝZPz[:ÕöÓ/`”ÔQ;'ó vñ€›r´Í …ŸJ¸£CjQÀ¿®z/Âú÷ %4R ®eâ×Â~2ôÊó𥨹ý‘¬W=øŒB0zÞW‘!')qpq&ÝËØ
-?¦(
-Ê )iç8¦ûKX§Hç°\ÓJ0r;kwÝ„ÆÁV’ @Yb>’zð
-ÕŠž÷r¨Øxà±D&rÓÉO˜ÎÆZhÑš?†^ÄN9ÒJ@ Vyg¿
-~àÞäe.i7i8t·±C6ð«S~g• YÀNšîhòÎf¢Þ¡>”°‘8 ND>]ZX^| ]̇¢//Šòò…M»ìs åýu[˜±®yGAÆWð÷Ró&Kϳ”n–C ¼º,›+é_tLƒ¯ÎG¿ñ¤Ýœ7cü6Σ¿†g›D+˯ž8wà›S½ÌjP² %M—þþ2Ë;ðV„ Û»ÚÁÙ>½¦g¿àsõcnS>‹¥×±=”üéS—›ýøŸ®K/š7'8˜ã@üËÑÆÅe•)â°Îê_cÅj®M\2‡Ù¬¤’ªèZ¸DÑ)_¦Ê>>¾$ؘÙù­¬â@ñ‰íy„@ày…¢‹±¥I:%D¯P")8ÊÞœF㺅çL‹|÷„ 9îeŠþ~(
-(à-ÇOÞÓš3,Ô³ë¢^SêK6÷zà™u¶‹C&Ò¯N׋•ôEC¨Ñÿ/—ä:rˆ®À{è(þ9öT»ðÔÞÿ´O’`ٺŒäxáx-C,Häg™¿øk} ò‚øeWýœ
-SÑæA {f¬Ù"_t‰wF?›VÙ‰.ÐFØ]¤÷%Ì’&A%nÄæÜ£ÄISÂá­åë¡„ÎÜŠ« AÊÜÄ5ø[Ñ ‰Ü˜=fò5ï
-¬Yµà˜’Ãû”¿²í1v}(Ê1ûZ¼ ±#ƒPhôEª˜,ý}ðwGÄja!ùé|L"I!P¾Ëµü;ãÇ’ö´.“àeà›VüQ½Fþö+Û&â!½УŸ,ð,!üü ‘ѶÇ“ðOhÎ.áIx´ÓÃ"¤¨èÅwý^™Â,5C]«~ oáƒ2-×ñtp+ é
-θ2àèXrì C>,-Þ!ôÐæUö)¨Ë`zX7•4^
-A”%E•Q±4ññ°†5¨9oŠ#QñLR^%±uÖÚ`Œ¼·FF6ùùbÜ[‘Üp•Q"É@Ïsÿ;‰
-AA2?œŠ^¨ì÷ÓÇ Všž Í9úû•o~úA
-ÔÂ&‹žùûœ©(áj G‹`¢_åEÜ‘Û‡à2OŒóèƘf#Äy  ³ñ­9t:þ•ì[mÉR*~Pÿ;b”ÿ‹©¬¤§®¯pü~™b*Ѻ½-zy1
-ŽEP ’#ì˺Um¨#=‰Y\Huà€ª?M&"™7HžXkËcªmß›ßGópvFL}4}: -Ũ‘Í¢%ù(N” ÐxþÞ¼ú¡ÄÇ®ÏW]<‹œ@H|;üy¸Í+˜__uD|#A-xOvÎo¶ 3$Löw‹Ž<_¦·açÈ£öIæ øZé{áÿ5ê{ K Ü ^²òbÔÕFú ¨x´ák KˆsRíYÂA»ó1`ŠÀà§ÊѨ bÅ0LãƒQRq gz%\Ãî&V±Ä½…%oÄtìdZc”¿%Ø ßÂÛÞÐñ¤Þp©ý¥Ïwëá1“·’"m+݇;ׄ–-ÄLè*éP4Kp¾4‰¯ì‚£†ÈÈiÝ“a¹À_`ÂßOœ$š’žK’ Âk^–°êX´°zæªr0ËšNq‘
-SGãª?ßl~„ß+Ìðp¬Êë¡èý¡ZÅÇÚÄâ«"#8ӠƇ†™ƒa½!M —Ýàx¿2&8ԢϫB˜2Ñ”yÿ°Ý,FÆ&6gWò6„
-m°LpCìëø äÊtœ'õÕÄþåh›þ—}`&õ@UðŠ£)¬ÑÉ‘¯‘N'o_ŸP#Ü٠9¼ƒ§å9xñ<–dõk^~JÒF Ò¹B8Y¶,–¶Î)“¸ØÞ-uŠ2Ÿœ×ÝKHŸ] ,
-eËGŸŠl=ˆ§øùœü½èŠóÆlxìiì
-–¨Š•9Éo ‘@&E>¢¯Å ¤ï„HÛ9K&9<3ÙaôwBd€ž¾ròt!‰+Kyë™#È$Pð^öĈ„98‰õ†ÝÏÚu¢BÏHÐ:‡%b‚Œõz:ÚÓZ/ѶsÇ"MZ¡í¸Ãâë~(z¡Ä3q|«¨á…Y]h…Ý{vjÈñÖ>î–CR2l7²ÛQvMíÞ^r*>
-aÐíÑKɤÜN¬cEì霨ô š¥Íq„EX„pšW ¾Zoio1”ŒŸÅð8å¾ þD2J?Ïí“ÈL\óù»E'#ªÏ‘è=Eõ“¢W
-€ y¿°d€€|š<û¦CE¶@œ¦…’b§*¡NGR¥¤ócãÓÙò¡ÄÇÕF'K» AÖbBɱQÅ"­H$·â¼
-ˆ}`áÒÚOQø×BÖ‚ª õ;bÚöÊ3~P>DIV”ºúíP4K{ˆâ·´+ˆ
-’Á®–ÞU AƳeæ3Í ä"Aò9³ˆé ؉Ö9º0¤*?´^˜ÄÒ¯)Ju¶Í†ìÇþÔ­OŸDt£Ääç@û<Û˜áV7d„¼V–šèÂÈᨵ¼¥â_ÃçŸ"?tGf56pˆøf6Ò»ƒs rxÁúú>Gñ_[L)êÖ/Ù䀗x!ïÚN— Ø8‚"/XŸoƒ3è—D9ÅNjÃúz »ÌÁV&GËG-„i·ø¢ØÈàSñ"d‰Åi`f: J=Ü4&-ÙQèîwðaP}° ÖŠçëï§sæ§05a—ˆZº,®©•æ‘Üë“-3>çÜ—ã­‰&‡™³pEþr(N¨Íþ¥7 `ПᶚcH„ÿ¡dNA‚¶ÆÝŠ`Yö<‰%0Ùë1+åÞÖ é‹m½Iïs\Á7=“pD4¦Ùµ•ü–åI|0±öè½ÁŸ@2M‘×#gÏ€„VÉÒXmcâãPñDNŠÞEÈ2™cÈt²Í›žnEx2l›]X*¶i}d
-ùø^˜ }´ `»7b=x–Zæ4HXŠm÷W’N{GN%Ðèjßò±Z€Cã¡ÓCÍïs VɘÚb\€Î\÷ äôX<œuÛÛyäžv¦eqŒW'#¸íw›¬%ݼ""„ô5D þ*Ѐ‡ŒXE w>öý§[1œ•j¦A¾—ÆöDø("ƾ_ÜÖq8eâèh›Ê|'žG˜|²_ TB,¥93qQ«~LÁFaýЕ™Jø‰‰þÐ'KÞÌ3»"kgNõ-~É8U ="ùp×:ô&ããmÛnAŸxH“‡W@Q\
-õp„r|wçÑqs+’
-ú:çV[À91q‚‘œÖê1%xài§£ó> NÂÃ]yÉÿŒ—Ir[IDO ;𴜇5·¼…¶Ðý·ý<3’%àÇoAe’ GNáCmh̘loÄ#hµ¨ß9Ïô·º>Þ‘àï¥Â§†"`ÛVOSzˆ°`‹–¥. /ÄOcŠˆŒ›Þ½LÆ·»Ý[ ú¸1ObU‰ïê hG *¥IdQ\‘)Âÿ³7!/d¨ë°
-Có{o…îñ9tYŒUš%å{{™)û‰7›½ú+’ Ð?©Ÿç°~ï'Ä®qžÇñ]—I}fDû¬“}þ)Ž¯/YâË«–ÛhlÑø®pWÍðè¶Ð&«6»VešeuKó=¤bêsÏ6Ù7^Ï!G|·tª»'œÉñVðUrdqC(%^¶^ISæ
-Ç$}–†œ­bg–á|.o檓q«J8æ^'jA¥~¬wÔJ“­J¿\SÒä´{%DóŽPßy#xÙî-Ð -øÓõZ³AíÚ£Ð(5'§gÿlLÃc;bîhA8i Ç®]ú¡¢ÊùT¥a[(wh{X+Vo¬ÐIlæ‘tüÙU= Òg¢Šp¦™æh,¾ˆ>E69¨ËýÚ^AÏÉõ{ß{ ©)Ê-Ž+æ±1t,ÉIýŠY: T««å¿ƒ|4rˆl•ÛäÚ"ØRœD+í§AEûÀè©ì4Œúà)ÞŇ@p|¨’|ˆÞ›å,sWÁäÀÃà™Å[g« ¨RYÍ2Î3ïu&¯/v·:Ì"Ž¬M+8¶“A¤ˆ3†Ê
-d÷V\ÙÅ>póÈ\‘?x¿`¯ƒmï`ðÇ]ûýß.þ¢ßÃî÷ñ™‹¬šâ¢Çœ „½ƒtx|㪽Ð]Àš â¤+C‰Æœ c?ƒ‚W<„êt¨À¶âÛ$2J7¨†g¨MM›ÙVMsÓ¡Ïe…4[%Cš™ùJ.¹ªÇ8,Çhô’^õÀ;%DÉWU×V4â8&ZU@,sCøvÓK0þÅq¢'õ4PæS}eÒdÄQÜ^O¯&9c˜þÈZ@ hŒ·XE`f ZùlôŒŸºÂ^;íU4Š˜Ï8`¤y]Ÿ‹¡¸v¨Ñˆ à‘Y‘¶¥!Îì¥ÅKÆ–ÁÓæ:i'Y•rà~Œl¬ÅI­»ËabF<Aîˆé ôí‚ h†DkO&yS“Êõâ³d‘×?ºùpîPø?7D àJ2HLòiŠfù§³PÖ2dGR>‰“bÊ7¨×6—j˜º±™ý’[%3pA*‘‘Ķ*Q7­-n7ï­Cƒ@³A`ç4j .†Í ‹4(’°§‰…á¡ËÉtég^”©ÈH£™ÛåAI;D:<‰± M¢¼4¶/ì+UñÂĘÙo OáöËæ%0‡2éÑ=n@è$šJ­ú4vÇ+ÅmÙ̈¢!“‡hv›_Q%~®gÏ®X»7fòÖ'2`l|kÇÿÚµ0{9w(9Zž­¢t¨È°É£2P"™-wÀ˜>öÿø¿.«ˆÓú‚^Ã&FvüêOuQ7ºªu*çUOLr¨–œ€lA0Ñ_âׄÓq™]YýÏdeN¹!|Ʊ{›ŽN¦ˆ†ÍXÏV¼í>h1Mâ-"À$[g XS…8Y
-\“ÒÙˆ¡å=q=çù¨ç$ǤšRÛËè­”‡àì#;üpíòÜî}u²Z¼±ãäÖ<AÆÌ6:È€¿ j…>”çç²Ý"ÐåHϘÇ;SjÑ/z
-/‘fqBé´äŠTêAh¾7ˆhD¡‹gzô"tßîvo^òäãÔ”R+Qv.BfH4c?–—ºÂ®ÁL1.׌Ñ"C†– ôØß{+<:¡Nr{Ò¾+bkm{‡ÖBœÇMbŠL3Ù
-[w_ ¶SÏêjt!µ»uè2Dâ'¿å  )Ž¯Šx¥¯Y`´v[¿‚\Ùà<x”Œ©> †©TêImÚ՛ܾJ3§rx¿JžÄD¶æå »:Ú„ªÉÇÅ»uB€ˆðµÌà KøbR…_þ0|â‹E%<N¶°T¿"á²›YŸð%ÄÔfÛ
-€ÂÀÿhë^6ÑE™+K°,J¹<ué×/äõ{X>‰‰"ä½òfð²Ý[ ^ðÇë´9¦ˆvéDRIJ]=ªh©TÚ~¡ÀNð°Òi\¡Q_&òûØ E¾6(#Z¾kBç# LsZîL{–4ËÜ !$aC‰p)½  À2 yVþ.!¡7ƒ¾~9 1 •Æ§×Ëæj@ƒ`‡àbé]вpeõQ"ž›]@}FP  ÷±9C¯µË“K•ÒËç-ˆbÈTœv3=FYGj«±‹B Ozõ%y¼t$5Ô)ž
-¶•B•m1YÅ
-Y¤Ê²Œ÷AÎŒ\·{ 䨋zQ CL¡ý¢«.‚°@ãÁÃ!‘Wqáb!€µ ¤Ÿ¤ð·¸€ˆ!‘ ˜˜Ð]Q
-wêG.âB!Dípg¾¶€Àj¸iúcàžµˆ6!Ñ1'wÚ(º¶ËÕ•‰¤)EĪ+-ä"-W×ìd¾T@…pç·® o
-UwZ6mˆâ˜ØÚ5èxNGË·ìVs®Yk³LkWÞ,v” Xhwë`QÀã–—ÓŒ;jÆóѳíæV€pì‘gǬô)%KŽ´²6Ñ oµÏ3"…ˆ³q@ƒœ
-ê[þ^0nF ò„VJÌ^ÆuAì6J+üˆ!Æ=n@«+h8jîÇá~»–Ç¡rB®œ˜çmgä¤q8H¶
-¦§ÉB!÷£·2{³—‚V–­œÅÊP³Ûf^Å$0˜Á™r½o
-†þ¢0åfeEfL–Óa0E\¨÷´EØ—‚ÍÇæ9å´I«1‰\ë¿þ#sL,U3¢´£y­Û€…ÏÌÃåŽhËГýãå’\É­Ñô´‚üÆí¡wá©´ÿ©O’àu¨
-ÕÖ{“ŽëY™ þ05ƒ$l$Ù¡uŠLÔ´Þôµ™8 ¯çš<Lf²GÎuÙ@ºŽ!"†+†ííÎ×ýå¶sÏ0j¬“cvË „ÕŠ% ¾Œ§v!;­ÉÚHŠ}úç ¸“é rUìk”ª¸˜Ê¦´!ØÉZ·‰ö­“‰üÕw|¿aÜòt¨$ýÑ®OßÿW¸Mß‚5É2BjìË@‰—P¥Væ“Â'Ô¦NM÷lÙWøÌÞÁôPÇÒ”Y)B%bû ž ¬–É»
-Ð ´ „M3]e³™.aô'v¶ÏNŒ@'fõÏ!]„&ö»ÿ5ŠwNò™žx¯«Ø6 5*2BéŸÃå„Ur 5MŽÄ ÐW¬IíÌÍMão —c,€(‚ ¡êq௠Oä=ÐE䩇ÎÕ1{rE·jß#®Ä‘ÏZHQLæ’ÿ䉼:AG£kë ‚¬LÈ…ÚyÂb7Å:H²ÌIöȳ¨CXlåeÕuEÈz"D~Q0O¸,£ôD”!w¢—a¸"/H£ØÈÖñþ›Æ_1nÇ=)Ϥ í‘;W+ñè*ñò"râ™@\Y®àþdU0¿4xAÂÒšž`Nî¿å<|‰O+‰Dš¶›8Ÿå!ʱ±çÅ?ØääŠüÿ©÷ù¿€¦ñê ÖHZó*”|‹šJªòå‚pÐ^Èœ1·^´—¡ðï1Mæç+«‡“¹ë‹Ž@fC|Ù¥J³S›W+¬\´|õ$Í%’…„ÞÛ¡§X‚ü± üƒê‡¸'žÔÞG,’Þ2 A´Fh ~ªduŸ$?QHmj5¹ç
-åÞ*F­ ¼âØvû䤷<] ÷Ó1Úyª¶ÓQì{ŸRªùÛ}žaµeÄ„—£˜‚Ü¥¼öršK¨…£é(n1×Ö;ê®à Ñé í¸¶L ~…bEƸ˜ÀÂcˆµ3BY©RhýéœKÇï_scŽóª;oÕ¹óøVbo¾µêŸŸ æ+œùbs¬°hÀËy_.{æ,„†¬VíÓSl½“Eó8²X+¶Ö¬fAŠ"ß'þ0$r9žÏœO'š ÙÄÙ)}Bì•›’5„šuVSœØ ^ïïÁšÑã©RŒt .àæ<«¯aØ3ODßÖ7¶"öÛj_ƒZ ÐÈöÌå\5õC…CÑ3Ì%œ±,F…–L¦›”¿âž=¢µf!Nk™…cÜýû—úÖúO4_I:B½ˆ§ö9P|°À’Äb: pÔo¤ âtß~Vö©J×ï——ªÜ±´nƒ2„o¢ê¿Ï £D¼
-|ØÌtraMÅÔ;ñ€H@íùᢨš×ó<7ýy>÷>”Ú ³½ð·Ç,¾6Í‚  †Z2¥Y Ž"¶@À`üFÞø ›É6ø#÷çDþ×í«Û«C›*+8ç°úu…ƈCìs˜{ÜKËÎ)ZeÕ¿d
-t¨WKqåûÜ%ºó8-aŠ–Õ­Ëñ5´!Ò¸x4QŒ™ñ}CVLÖ~S»ùg×Põ«´õv.Ǥ—–‘eÖÉ|mbtžõs§”[#€@î¦ÉP>üíuK®OBÚ¨]ã´–Z¢&Ù̘`ÌAŒ›örùÚ
-f̾¥S>¤áÆ¡ƒp|)ƒHFjxˆ•c?i{1ßW|cæ†TaC°D#iÚªá,[¨çª ‡v¡ØU¤çH]»F\çh÷á–JS‹1‡#8irUéo$]U¾<º“pf®Ô0Œüs7‚·ë~ºÈ‚?]ÐŽðQ‰‰B"¨É8Íž
-Kç"‘ƒ˜-e»‰ É‡Œž
-zY{SjOçhZ&ƒù_2§¼]ÃW³ñ†ÁUgSz'ü¤Â/9çsUÐ
-Ø«Ø=pgb°ê`Ö¬ =°Ù=A¸££l‘°ÐÞW]A­j8ð?ŒÕΡà„äJ=É›M§SrüÖ^µD\KJtV$»Šy&KAõa ~2u™”ч³‡•ÌÖŸ±ºI¶ˆ éë'v«= c±¹ãQ=ža£¿ÛÔÁBF™ÞŒ]o„žLP1Áβ —ºAÐ(6+Ì¢Ø)…èS«Þ¹ŠÏ¥ÈóùdVÒ;<¨­ÛTiÃÄžz?ËD$Ùàëñuq@|nº:Ȧ@çÜç ù³3z'Ȥ¤ÁãœnÃpR+u興Y]¯µ¿¯"fAÚ¾d~«Œ¥ŠHÓùÃñÖ{<ÓTIXÔƒ2bžH‘H®}­7þ9r‹rf¶«JFóô²!k€c›Å@P‰àRúOø³Œ;ˆÿïLþ/ãeŽÙ‘Ñà)Àr_ı¦uN
-:Ýôv}Û"bµ#ÃIü<2È°ñþz4#¯‰èÇ#PH£²åšeYQC^ Ü1,­5]e,~²\EÈ°Ì8†e2õÐ iŸS‚&=|üìÅfÞ
-z…ØUƒ>B3žµµÈ°&ÄcY$Óy4êÔôð° òþ‰ Óaî³Bf}:‚F¥ªs›’\êY£ùˆ¿+Ö_[Ö6æ±Òl8‰¼ÅoÉjˆfŒ~û˜Ê1(Tª±ÌˆèW:fº¡¸ ÞÉ0‚RÊIn­0ŽœµÈÑ;êFÔ£©ÛÓ°‹ú@¢B´\ÚÇPû^ØÔ{C†¬*ƒ?Ânã3tm2„Øt ëªJ—`õØÔuï³û9úÿHž„'¯á ›?ôD©`gc%Z*njø@é8” ?¿ä¡Lç¢+EÁX–²¡ûÞ^ôfh»? ‰%n¶Ç±Nf šuo؃àä7ä™pT,ñò¤LGXCܪ};åÖ2קÜ;ïÓ¾’Èx$œþ½Ì@Æb°»6ûˆ‡ý5o( þƒ—ÏB& °aÝŒ$E@±­»ÞЧ’‡cØ'p>åþô®»‚¾_yÓç~z‚¨†¢£—ŒÜƘڥ…T®§6P¨?Õé€>=_ú Kõ¬ÔWB_©ºL^¨÷æòîGÌ÷+±)üû-¼ÿë?oü÷ß•‰0L
-¢sNS,‰»@h6Ùª[Îò“"G÷P± ¡uYĨÒZȺI´‹ÇbV¦ ZâE–$­ƒào
-‹—™6ÈH\ÚÎ,ÏtGI"9®&K=BGÚ|(jUÀ½–¼Æ^i"êÚò¾J¦‘éÄ}4ƒ@aR8Àj†áù£29 ¹ˆÁ³–ñìè¾¢áb²¯ÜàíJ÷m‘(£¼p†Å}ÅÜ› :Z æ%¶—AÞ@\o{sQ·Ó]ò{ÿSÐø"“3rÌ¡…IÉÀrÐùÄ.)˜¯¤îr@Ÿ.9,ÅŽ¸Í\°_æ€Ý邤Rñ=lçÔ1AD(M‚¶„@—HŽ=bø0yx¥¢´|í«`^“´Þ xFOaOÂ7 øÑ`c—ê±ÔÊÆÄÎì@¾vYÚ¾‰0žƒã ÷dËä*ÒúRd Øá%Ù)«’|Ç87IQ³„1uc˜¯Bm)øÈûfÇK5ÛMƒ{ˆ4iðß_(ºöz8ýñrp9x¶ð÷‰OhnyÏ
-‚2dúJæu3T0P"D·ŠüÜ1}³¬ºAð{VDØÖH „¼Cc¦8¤O1sŸƒázäT7ãHfˆÞ¬>¯Dæñ'l ¿Þ|P–ýƒóp$ÖÏ7ú9Âô2t1íˈy¢¬bÝBŒæàžIütù =µõÈ›A˜o:<—DQNè´”ÌÖ}ƒp¢\«°²5Yo=äoü"ùmXÒbM6°e8\_r 6: —6Ú„»ýs’âÄ„!xÎÆeÒPá,9ænC&j£‰‰öÎh¬<|Ä’Ñe_•?hR…˜­ÖЉyųbHúªVV«0ê:ܦ”üóþ2*¡#*ê¸ #¨,¿ª ’Ž]P´¦÷IJÛf1RÈLÐ_… TSË3£µõA'0fl6fŒ›Ž Ž ‘Ö‘P$T+E•H|F±^K³}"µù‹Zä8J£°eƒšø”sáXI‘
-¬—OÃfÕqQÎÆsUë±°Yãqj>á§IÖK{r
-*éÃ)Re º?á3­ä˜ èF.Ï¢–
-ÒuʨT\LK)¸ ÚDœa1« è¨?£™Ì{Å,ÖÂÞ–4©aOmçrÒù*ÿµoªº[B 7ÑoQêôI)äU"‰d9” ‰ƒˆiA@:»
-½°Î\Ðê$bƒz–7žç£]bÒQ$Qzvœ¨Ä}9¢’¶Â\=È d´M/ž=‚™)ðoD,'ãsˆï^·÷ÕÈ NÔJ^qy5ã™Íû{³¼
-j…&Àe0HòaŸî
-–âϱgY?ÅZQŸP 
-„¥1ò‘òôW€;òFÐ\”Á8ËqHÞ²´Hþ.Ý+º$œm{M„™BR³ÏAŽÖe\ì1E
-‚©€Ë‘šÝö[¢!¥1M¬îuSý€xn.ÝJIKgœ k}C‘ ¢ñ£…²<¦ŒWÜDpE …Ø9˜X„]Ê;&Ae ÛGµJ^1C1Z)®Õw{­Ú5Á8GdŒôu‡XÐÉ[[¯$Ö4.¶Ö÷{îËê>“ÎÒS?^šLO¼Û¨@oÚŒ‡±kVÃÒ½utëNøŽžòM;¨c‘Š,ý§;Ù Ý »ºËá>*}½ÇhÎþîÜeãýzó†×Y‹š–Ù+å„¡ýÃäÆ„HAMì¸ Õ¤zâKl/R7–E:Ç#$g/®,¯rRO뜀ËüoîÝÆNRû’LhóW 7¬Pžôb“‰ªã}<¨<='v©s*Qæ)D–7D¢‚çé!}ž:Ð#¥“Š’GüiR"ª‰qÍgéá¹(;mº›SFA‘T÷L„3y<Áà)ÊžÏpÞ@l Æ߬—Ÿé¼€¦Æ5ÐɨŸ|.ƒµ-ŒŠÏ•u-›”ÆBÉ‘ç‰ýq’å Æ9&‘
-žxj† û9t“]`7ã–§2Ý¥-YÑ…ßж81‘ì:è¶PW$â/}ìÙ
-Ð. E¯^@mïô)ãnü~c)X˜¯Æ³ãiµzزoÇà˜'± gè[bz€ ¤ð$„¾ )¡3jËIIªâ÷Œ\SÞk{à±6˜1 ´SCÓŠðòt@ 7¦Œ²Æv 9@àL]Ž+¥›¬¤~z*ë|LçKðsDûÁ°‹¥4(ShŒ çÉŽ‘…™!=ŒðþâЊØ'í‡#¶É¨Œ­ImÐ:&VëÞsPëô1LÑ=AfL©²ú›. V‰™¥ÄÔt¤uev´
-1ßP”ž ' Góg3~úb¸5î,KÐâs'0tT8»/æ܆}äbOÞ(eÚ‚²ê $¯L„ÃyOÏmñ€'È7½€þAdkÎÇ·@½#ÝòZg'Ü"ëÀ{ÓVAUø?‹2D±y¬;Yð‡¨¨F~Î1„…á×\r.½e
-)ÍßÞøêhZ®c"›b
-±ä“<ÏÉBÃN³©§ÙÝ9H†›ª»>ÝFCÁ3• ñˆ·)Ö؃ÂÀœž+ãÈÜw4{É "ËǸá¸Qñ1È…Œª
-ŽÙt- Ãc!@ºã
-#³ëÔÎãï;ö!0ÝEÖæàH 0G(DOäÅ}Ÿ+è…}| ÂÓ¡ŠÝé·1“£øó=˜å¼¼)ÛVµ#8Û`ŽáˆN:PpœˆY,>×v*¹–?oMÁ–HgË2§Gì¨aív>…ñrȘѶ¹‚«ã Å²ó=Ö)›³#íøy*¸ˆàtÊÁh_HÀè–>]sÀú\_ØŽ¾·øz½8lÀ¬WžÏš–ENì…‰KÝ[ú²í«†x›¦ßlç=¦hƒ5è|º¥»E–Šñ¾¤Ïßÿ
-H‰Œ—Mr\7 „O ;Ì2E
-½ýøøçCn'ÐøºGí.Ñ/d¿sZS·REëí×÷.Q›‡„k»]õ&¥.V'Äz”^½€ªReðß Ä'„ÛxÎë<þkUFéE<lß\»›h·rUHï½ó!þ·Ù|ÿÆS£ 6|ÕµNÒä:IïÕ5‹4Zõ™RTµ••y
-@ªfÁRïÜ5BèÙXo¢K4V ·ÏhÜM† áŸõöóãtظGW+á´Âã¶nZ[éQë„Œ¦46´ô]›V*Ìñ6ú ²^Þ½ÒÊOÏŸ±»ç a Ò[që=DmA*/€eœdBQ\«5i&»›êƒWókd·©¹ðʵÆ](C4+#Ž~oc4þÒÂØì“þŸÇIù2)ï÷4%ò5c}Æt).ü:‚Æõ=E›®äïÐdÏ©› sƒ] =› ¿BDÉ2F¹—Öà-Ξ®›»ð‹B…'H;—’B | — ÓbüæÂØÁ‘ÓÙxJÆœŒîÕÕx5)Qh·WßA"ÂLùa_·ñ–¤£8sŽ¡3`>T9qá›ó1ÔQªm}‡¶{‡TCèÇ’!•ìúüÔ ñÉŸ$ëÆ<LØ;¡T†¬6j¶§Ð…Yh.äLdT£ÏZg…’Ó‘4ÞÂñ¨áÍx„¬¾oêá;ÔÈÛ4«¥¬t?Q HÒ´2b<Ì÷QTEÈPF…âQÆíD÷¸7þ›RU“#„ uÕ¨ò<èO£u fJê‰\Uö»Órèî“æ@Ô'h7¦L#›š j3Á˜¿ ÂSÊVU%uéÇñ¸·@èzS4}P.%?‚š¶†8””ß&„G[à&*'í¸ Ñk*y±%]1Á±gùšG1‰ëUo[î¥raF/¥#Š[5ºØÂúH¥£Ä„˜M¾¸ê²Nâ¦é UûËïp7rFìw…üÕ+‡Ÿ:¤àƒ¥#@µ§t<ƒUa™ÂT“XúâRÒѪ±žNµ‡Yãð£j^õcÂ
-¿&gÕäÏRÞxªÁ,=§£vp%igë(î/Â\3Ì=[:!!E*õó}”üð妺 #%ø04æwÌÉKx/Å^¼ü>Û,^@¾±ôóã:ñœçÈœbÚ=Þfð鸷@ºp¯ÐÒ¿×jä4»Îûµ0¤JbXw¶„áa™°yy;YBBhªdxlv”r2æ½kÑB®p‚\íçx¹ô™>ZKR@iÂ×¾ò7½ŸÒ¹c¼d•CZÿü8€Ö›÷É
-iË°ÐtïP„èL¥:o£H)4¯¸¾74‰5«e$þš“Cåú¬ÎÞ¡þ«Ò„%§DaÞÇrüƒ•³°Hņ0{X!¯­%
-YÁÍ »Àïq=lQgáx ì€ÅK^¨Ob<HXX*ÖæÑgèÂíX +V<! [Aå$(ÜRLJ‡±,!I°¬’ì~‘ˆ`I"Ì™`ð!ôdöýÚ'á83¸V„è„+öhBèJÏ­¦ˆ ë¨ÜMº¥Þūˆ1m«¥¹ÓxM÷g·Ùjh¼ ãëºYÃZTµmbàa| 3‰µ¨]Ž:RœÕæWÈËxIßǤJgˆÉi?2ú2a©S4jlZðMä Ù‘ý¢ÿîWKà™ßJ‹Ñø%pÔ
-9A0c6“7utŠ7ÔrZzÞÐÒÏ™±ùiA­JßNI0}He_zK*Èñƒ;þ _XTcÇ™Ç
-Qä~xŒ„.è†PñBÞ8@² =[’çw;~DKÆäv%[Þøiäê"6ùž’»ÅvGŠI0ãÎk;}ÄœrOïxêLÁäš…·@§ˆÓXuø›Ýmˆ3èûµ‘¯‘ͯøsb2Í55~o10«e—+«
-Ù܆ùÍæ„ý£µZ¢î,A)ãéáÅ‘½jÿÞW᱈CCéHü¨Ä R[Îg7¸H9’j“`DÛŒmaI¤1¹Ç„¡:ƒ”ÖЧ
-9·GºkŸ\aÞIw”i¿]ù”ØßÖüöî^×o´ÑŸöOæš’ɧˆ ÀÍÈâläsí¥KbÐ#]bÍÐÿœÎ*”wõÃP.‚Ds¨k-º¬“2gbÊŸÑ"Z覮Má[Â,é´ÏÛH¥ Íߧp`l‰ÓO
- `öEcòv„H7
-I´QÞºS€ú– ?]ª‰‡m*»Ä—óÅqØ*‹AjsÞ-Á¦ï +B¬©çÝßË·—ho{9Mp”ö¶˜žb³uªwy7ÿ&+‹á0aÚ×Èñ&¸ŽnÚÉZYFÄ ¿[”Q±­û* :JË;DžfÕõ2Pþi»pÙ–¾¾fðT³¿¼­ët“^!ý¤½š·ý½€> DHb©ØµºAH vkeîw‚nÔdûžœŸB uŽÇI]ê,]a aw•!$vClOÏöÁ £&ûœ
-t1/Öè•Ë% åkn€P-xM
-ɬ«ªÔ°aêNÿœÆvÁ¨YYѺÚäsü‹!X[VÖîòu¾< ·u0Ħ›‡Çl
-pÅ@+C†…aŠöM±`‘Tž”µØ
-“Ú~öä1$_Q„C*öì!âû|”CC¶ö9M’™±ÇS_6]¦Iƒ˜>0Æêì^1>ñÜÛ}ÿ˜ÛØxºß½8·!¾—ØY†oúý“‘y {¹2Z…Ôõ€Uç¼/•Å°LÙêô‚L5Œ„ˆ<¤‰#‚ ¡Ö¾?JpâÍÓÔ¦ æåù©¾«$ ƒ±ÅÏ”ºü`]D¦†t©·‡âª¶×ú›ú"?$q2TåŸÃ@+óàOÇVI} ›žXøò†
-(»ÜýÑ%Hv’%˜›²öÑ“ügÆvYS‚¿ùHø'ísèt[ä Ò8BRž»Ý„ïй8,ϦÙ"ß@ßZÿé‚0 }>‡IözÞA‚D$#WßÌCbÁ‰Œ€’›‹Í2á}­ï—ãÑP
-vèøîÌÀ#_Ðv³”)Šî:ê+WzÎ\c3!ëÌüôÏQ¦mÜÊ3c?Cû©2Šlû• !VÜ Šà™l•³¤=öý0oζd´›éH{0v@è ) u‚§)CYöÊÛ<""ŸÇ<ÏM^ÏC{‹£as>°Š—NžPÞÊ{‹o ÈäÊ8k]ÈMTMRþs”(ÓGéö²A·ë~"C(Câìe ö¸: rš¾C¯ i¬(ñ£°´<”\]-AQcºðVíåÍ´¾ÕÊ ˆ_I:ü˜¦)FÉLÛ§ ~F\àïGØ˘4ãú†@Õì$K1¢±¾òšŽ¯`2»NþдW Ñy5Ÿ(?
-ÇËëh³‰Dp ›® &º0@Cú…>ísuáŸàKÛå (b¶6íé0Ú8`ÃîïåãžÖ!Ãî­ ÕXÞZš%>Cýhz2í*<hW)Vg$a¹XMRWÙíàÏqjº
-BÉ6Ôm·€èaâ‚lŽ ¾Sü ÙÚ,ëI±ÊŸSÞœÍZEÜœB¼ÀÞ3´`U¸¼¨Ákö‚‘îò eC*º71Ña:»‰T Éð„áqO,>Žâ˜qˆ=Ç}%› ÜDW°ã<Jñ5³a3Ù£9Šô#»UŽ]Å‘Lù¼´Ì8"Jh“]…è–ˆäôÚ ¢CšÐ”géýÏyM¤äÄòÿøSÐu?²¨¶ÏEu–ÒvD¨øØÆÉ>çëĸaÕd— ‚neÔ×´! çNÖ|#ˆškŠÖ7sŦ´©`µû(/5-‡ÂÓŠ½™šE
- Vx&ö,Œ pÍdÅ)JÝœdbðPÕ¬«F–N1 µ<S'€ôóIOõžžæ¨ORå“ÆeÍnm@Ô”„ü;o:7]A|zZÐÑ8_þÇ0èò¹¥ÅÞ£ø)/ÊŸç¦[m Ò V.p
-´³Jk©<´éß»çÖíË)ÎÈ\¿Ä½ÛƒœN¹Ë="ÊÁnº­AN“ƒñaqe³ÿ\§_ï­ËyÇ”é©Ä—5GJxU•ž¸à
-ò Àí:—0þë›a¼þ4r)‹‚çÚÔrÉ–_:¦%´õêk½âGÅaŒK÷l~J´*±Ân>>‡±›?]ä“Z$îÎÅÝš‚²˜]…+«eží0€Šš)IXÌ 7Ö‹ƒ~iAäFDúixu•âec}اs$“ å0Û?*†ŸÓÏt°sèg|0’w²ÃmÓ¼{F ™YbD%Ä!ö)M‰ìþ
-FÝ Ÿ0|-½½ÜÓä[ïçÜúÀÚÁˆ«â¬ÛN¬ˆ@ œÚÞí¼ŒbJþÀ»ãÄÚ|9³…3"¬áEð[´ïšúâ®Jçž?±Æ=ìqÇÓ•U :ºÆ»3……ýÒž÷¨óX†€å§=K,‡Œ-ÍaéŽÙàG&šÕíe‘âÁeó͆bOŽ)H+ΗǶémHv£Éöa÷9§H.bžŽE¸8çD®d»»2ǃqSKïƒ&õXžŽa"'–°‡ÜÏÇ”ð¿Suçýâ­ýy/Œ>‘cÉ›ÇòÌ ÚPÄþCŒËšyyâ,©ùzgVé“Ä Kª•Tˆ¢„d&nǽA™`SŽ!íQ.fÆMÕ͹×V\ÖtÈAv¶îV8Ç0€µîiÃ×3Ò…_³½€ÜqýUaÈÕt@UÍE0§MCÙ†9^|=®¿®T³iå6ís­DÅÐ`m\û…Vò_ ϹéÏ›õÍ©²ÏLÙŒ1…fÔ
-)Sôùkƒ  ¶œ‰ZÈÂ^i×1@ÐêÁxPc –8ã‘:»i
-P`çzfs›í»žÂ½Ø…µ„µ‹"+þ¥>ÔP6¢º-Û…ææ¸.ás悪ĄÈÔ–™Nô÷(¤Œk")&VìÓ@4œžÎpª0«5rûÔ¦‚`%Ю¦æA÷œˆ‚¤¤Q6$ãh"D›ë)οIì÷¾‰wŠÙùˆ#ß㔀yAËz}jÕŸ[þëMÑU!—ïcfg;l:xLgARìþ&®–™ôåÙ–>Ï€O¤’á4­C<— #Û
-ÍÊîjïKÛXóØPFÝÄys@05°SÉÜB„ gÔžÃ+‚z Í  ¾§ãŽQÞCOWBqæS&uœ‹µ´R‘Qÿa¼L’ã8b(zß'`ä<¬é¥ná­tÿ­ßÏD¶­*”ØŒ¨h¡³²€?ÐÎl—í¥ø1Ÿ49™¹ƒm¨ç¥/pF
- =PÂgÛ‡ëÌœžFsÅ›úM˜°:¦º%UÄ3@G´—Jòì7ò¾ Ca€º^Ë„ ½ÎA™)çÃQàÒU~ê1Yp(#(lÁæ:þ̓+Ri%ê&ßßO Ä‹â´Û˜J!IeÊ­NÑÅ“ø¤ñVQ_¹6èBãàâR„GŸQP¸1æBT8 µ]R¥&àX‚¶K %@ëÇ£Oä®uéÅ–¸9R)?ý¸b\NÕh¬Ûh“ÛØÊÌN
-IÁΠ1ev•îjrJ Aÿ±³ù瀞.fÂ3µSRª^3;Fô
-f8—ÁÍ°Ò"ÔΓà[h€’³ä–äO’±ÙÇÐ:­··ÞÈßa+´ì.ÅÒ YD:|€Aã°È¼˜ÉíÌB2XNqzëñ˜“hôF ƒM Ë¾Ç©„5'6ŸÝ÷œÆLúõŸ$Ú-*|”üïE· HIQkRÞ%RÂ~-´ »)ªËM’‚CÝ HÉн‰¸Ü
-d |Ó“Ý‚’+¦š‡"‚±`JÉ€N‡ìþ |Í•ñ
-Ö‚*?À·¼°ÌŽ@jòÖÖ"G !s—¨•èžTv— É
-#¾(w4irbypGPx·Äå[ä]ˆ2mÕГ“À²ï¾(r%1ôàå¤#¶Ú™)—žŽÿ Ö¨4q.Ó$휻Íã aÍæ$äðRÿl:úp%X 8ÛµþaŒ ’øn8ŽÇײIc”Sraî.=¢‡˜Ðyõgz—¬2Ì!“ç‹©ßÎD ŒÄ¬ŠËjÈoœÜêObÝ
-€[³¿9`„k˜k0‰¿Ò•Q+ž. ÉëMóÆsi0j8 {ñ ¦¡)¢ŒP¨Èg+8à{²ÊöIwzñ&£)!‘§J2:áÓTÀØA$ˆIÇÎ7}½Ìë6”xŽÚ…1pE}
-,
-2lrL¶‚ŠhBT4Ù(ÌhöW/}l ôÀ
-`®XàURñqÀñtŸ5ðâ‰a±’1?™›B¶jš…NöÏQ¶Êb–˜Ì³Ñu¾D«¡]A`«ƒÎcÀŒ
-'vèvsG«R?#&QÒéìŸS3Ÿ£ÇíÁiQ¤ }Fì–¬Gq2ûÀ zÙÌË9]ü>…‚ÜÏPQâXëÕ
-`|0KV0/ Ñ
-“ÎBéVñ¸9Ö•vÖ½èTººˆò¤*…
-4JÔ­„vã‰`jë0ÞB¶…HeÃâZäNœÍc´ÚsâÝ"=.bê«QãçCtˆ¹…! å“5ãE0—!ûmÎððåR”žÆ•y¦?0Ôö0vB ¢¡Õ<]s ä5ÜÍ,¦D.‘ÙÝÃkÛR ˆ˜¯Aï]yùç;ä½²WÌX3@KëåÀ/Ï
-z÷±¾9)—"äC@¸Êð#IBM
-{n…Ãp‡ötLo%Ùðuç.ÿ·Þ ( …ëãŠÑšÙ[ÑÖc.‹(ãhÛI]‘. ‚e›öæu…PÔ=ø–Dí›}íYZÉôZb¯ÎúɶÆ蟃 …þØ0þnvåç^¬õ¸Kh±ÌIl½ì.F ‚Qàáý(n¨ž÷†„-Bé| </£¥ÐÆg¡o
-’åÔI“G•þPòH¿þòŠ<¸+¾ÁÁU õí"oo{«èB þv]ŠÅ|ü­R¼R:C‚Û@óË-šê9ë±5eÍNºˆÏŽÙ1ðg$
-U(ª „÷c‹Í®AŒ}öµÆZ”XÜŒ‘ò
-$€6‡=dŠè†4³ægJƤCâvòAc«êàÑuîØ„ÝK:ÆÂ9›Ï!„«¯¿ü¢„¡p!É2ÿt‹PàR’{±û$ Ñùê®m K‘µ#ï‘ù©0ÊÞWعfNÈbH§Øc®`D÷cXÐW9f‰TÅèÈz0˜ßê”Ø8•$KÛüsn¿ßæ†ïn¼÷æ†ã{‡}ø—ñrG®#G¢è
-¸Ù1 ñ7'äÊ(ÆjÒœýϹ@âI¬‡R?K”˜Bù¹÷ä—Jý|eh4_aÍW~ÏZ8en /ç}ƒØ
-Aø¼N²>E§ÏÝ‹nœšÖ)þ[ç°(.r³1Ôwe_kÈiî
-1¢:%òWÑ„‹Ó;ãìrY§Ü[±å“ô2‚F&:Ž»B˜ˆYÍïõc>fîppÛïo‡ cÕÔ•Q'ãôÛþ¹]Gðã•9ý…½&Ñcô
-hÙNJþy bÍ‘ïY¢›&D!0#;µõ¬<EõZõ²Ê¼ãÌ1í™þÍ‹z‰IìWðÆëH½„’ÔÒÕe~ãë ±Òû”Í®ƒŸCæ§ÚÄ$¼‡/ÝœCµK¨(îé·‘„cžR[!Ú#qGõÛÍþôÄÁès'>žEÓÇ’z»l¶{Æ‘ò±>f l1×ãh<?ü0bÏ <s)ƒP´UIÖq*&Êh¼±yóÒŒyà kßN…ÒÑ´h v0gðÔ¡†Õ'ä'8‡þcÿâP¡Ñzð8c7úD»xÑhê""@Á"(Oßʯ8ŠÕÆ
-i²´\GŒÛXÎ3Fͽ…®35FJÙ!Rú!®P¼çš²VIÈÙÁˆÿc¸%ß’¨©†$¢Y£Ï¡ŠþôCØ$Š°°²ƒ[dž¿¸å¹áAòÈÉŠ5›Jf]ܵ\ÖJùBÌIõ±* ãαý!ˆnfÌ¥Gî¤[˜]*iq<>Eaì‘ÿžŠqâHMYEz¨gUgØ̸Œ eºM§_qb- Þa\QÛa®9€Áev‡!b‘´òÏ®†M…•CÞ©—~s(Êà?¥~Œ`ÂÆ 3ìZI~¾2[ #ÍcFh´ºñŠ‘¡ˆí 
-JXL‚¹¥z@E”•¢•3bÒ?ÏKæ_¢W•ÙÜ-”‚
-¡/Wñ»‹Å%H<´‡ È5n%x
-¢äÜP+Ww¿‚²xh`Æmú¼ï‘ÔïìÍö†ØI;]ÒcÞ÷yúÝb?^°aê_ÿy Z8™„qÝå?b´4ß·ðíï7ÜH³›IÚªN¿!O¼î:P®п‹â9~¡ü5æÇ!fp-
-‹{ ÷.1¯ÜçÇä‘ÿ÷í¯ÿM‚©ù²ä–õ#XÇÖ£Ÿ(þýFUi£Æ’ÓÔ ÿBß;9Ã
-~£Ö&?žÉ)Ú$
-[-çŸJcŽ ‰üÌ9©ïR!M¸†@ìOq_ZÉÓ› ¢RtH×–Ö9¹Qrìļm
-ÄÇœÁ~›ªå ¨ÉÛ¶c$‹²ïO)QY,Öü>ì]ˆíÐæ•ýª; Ä™ÎB58Y\zQoIfH±=>õ5(¿ÃM›®Ðüœ!`mZm‘åt$L9Žå˜À,‹àI ;’ñ¨cJÙ?‡jf%Hhå5*šçüš€í¡áa4æ±/!ÞIŠ‹ÊÐbwç Zó°ïý©0é±âÇR0A<½ú…ÿOy™$GrÃPô¾CŸ@ÁyXËË>‡Wòý·~ŸªTYÌh9¢Ã¶Ô0™>þÐI]+ý¹ÁAÖT„ï¯ÊÚÇsª¸,y‘`q.þzŽtâ
-ú'SÅ#ÅxÒ+ãPDT€ P§œ o1ª¡¸Åaµ鯂—3€­ô ¿W§Ð!ûÞ.rDà>™íPpáòGf]ó<QR¼_…c£U0AgËÛÂmg „¬z(²5ד¢l%Ò[JG¬„6 Ûa+×à#‰r‚ p”²ß…_!ÍÙŠ )~d|Õv˜)ÃÃÄ]2,FmWðäâXôf¨K’ú¢“~X
-˜”’j²íL~Ÿ£wCýllÚ% .᧰ì"%À Ù]r»DÜ(9*å}E"×.ÚËÕpŸ~•}΢I>¹xs’Bzw+)@ „0wIT
-åníPâöïU<Nç°#Dº®·¯¡¿±¢Ñ­¡CÛA»Ò£u™L„Aän±«’
-0ð%)L}î^&„?ì=uá°Ë:¸Ìáò —=!Í|ÊïJ&\ÃÏ«¦¨îÙ²T ã¬ï%`Ð\=2æ%̇`§
-x
-)ˆ¼íìç¾GSšPß·úË*pÓDÁÖ}ñåý ~è7Ú=|CDEø¶»®×SF®Y‰˜ê• þæ·"Ý ËÐÇ›sPpR$¨Éé|U¦Ý|l”E?W‰Þa­~`o¾nŠX‚a†MÓ°Ë"ZÙ‘ædIBùr­>‹»Kˆž2µ‹ *€$K–=µ§£1d–å¼Ü»Ozˆ’7o!r1W|¬éødˆñù1E<‰y¼lRA†Õ@°_„ŸDÇYlQL»Ãâ6lXÚÇ,o”5{F‰ƒµ Å·RÖ”¦˜¹Ÿ.±$Tó ½Î_³—$´uŽàØ72þÔh—ŽÇÃsîtD V®ÊèfÏ ™æL·¾”|þõÏ_ñ×ߺ™%,Br›îØþHAÚ¯oŠ;ª„iKyušY
-‚£ñÐûùœ¸z£D—v/)-0˹K´ª >© k¡Í‚_ý*L"bÁ¼Ç’ùªõÏÑÎX‰•HÁpP¤ÖäýÑ™~Sò‚?»êRTH+S1ÉËvÕåkp®r• „Ž¯Âsæ1'ÄOú_ué–2aD‹ô¸ÊRLY%‹Q„À
-,{‘Ñ,Ùé@ó1Ïâ)q.—åÙðÇTðÀ…Èwˆ£vUSìaEa7+Š¸<šLª‰¶2¸ä¾ºžwwdÏ©ê¶[”4\°`Íw Ôvòà“±,»¨‹<¶¡¶O¾ìø%䜸‚ˆ£0Ø«&ã7](T¤‚+Ç"òç׉¸ˆA¥@­|¡òÊP\6Wf>ª£é åêw\ùVT>Dð:?®FSÐè½$:øÓ ”$‹ëï’.C†4¬AŠ¹¨(‡X¶ƒ®!l»®*ïÎë›k|F—óÚ
-ÉØad>e0Ú¾K 8RTY‹´JÀ´Ü‚ÞæW±C ,ç-Ûâ³rœ›C¾ì‘ë¢L˜À àÙMèÂucýÍà ÇWhéAÉxÐG6³ä˜4˜MD–Gå áþb
-ª»Qfùpì#º¶6¡¸ô(u7¢ð1B&ö.[pu`à ¼¡ÍqLøŒÆ©¬“î€P< u+7
-ç]ÈÐVwå<\7;aa±Ù‘å6y¡rûƒÜý&À$U97#À ÏÝ"½c²D?L¡•ðY•8kÚ”’âJ‘Gõ€8p{¬ §9 ‚ì&qLÏKƒŸ§fWêDâyMðÀÊH*„N>Mó=¬žl’`ŸBvA0{!ÇÁW4!Ó'7'/ák¥Î·©‚x Öcè‡ÛÚŠ#BÕñí9‹Ñ¿õ¸yýš9ØHdlä»W1> Â2Îvîd5H…j¼7ðÚã¬5œ ›ÓãݬÀn 0óry–·">ÊyÜಗy%bÎuNø“"(/òE±žq|žë6üI–釡DuH3C/Nßý‚D,M¾ˆìÀÛ{뇢ß7E²vú9ˆºVQ[ö˜ÆiÊÿ(z¿ŽØ('quü¸_¿‡\i±_G§ØxlC®?.‚açŒÚ¹ ]ôÖÌKÑ×O:þ{¦Úì*Káp‹rd¥Éžï¹\kNÍ̲•ØãÌ ÿ¨èrÛ*bq&øJÈÃñ“îŠx¬;1åî²?–,nÊ\•^îFŠ=Ì:ÚYVâP éLF:Ø%Z*ñ ¦[ §"‹ÚL›>„Bîbfc/¿Š&;`§½L‘_04ün1íshÃX¯h†¢Ôñ¾UÌZó.áþ¯ÙŒËãf=%‡Tü&Y:\ÂöÝr˜¶)PÇ>%窬شQ†çf÷‰ÔírË^x”‘UJòdÚmG@¼Ôô+|€¡•`$A‹g(á™…»QÕa%¨ñ"ˆ]v‰„%×eÅ%vÕÀw”°vè|Ž ÊÊ6ˬïDff¨}W$>uªcÙ?†#á
-†>ìQ®¬ò5<ÊšÃÖ’ò &Ú¸Ïa@ ÊÁZ‰¬VKbCò!:Œ`¢ñãer%×­Q ä-àAbÆZ)SZþoÿ ó‰¬BöF"»ƒÀC1¼,òßÝ@;—2])iæξ]HæciNg;—ÕŠh}Ï>Ç´?k(BæOŸ¤¬E¡}üd, IN1^Î`Æh8†÷ÈÊ`}½U[Žø“ׄsùK™^E¸, în³^ ÞM¶'¡{Ëq;‡@CŸ˜°Óð—/Þô”ú
->£t
-–wëÕ¿©¦îÎ7oÏÎB¨åÎ\²FX™yÒµ¿àU tÌ‚Y>¢ï˜W¦E * ÅǸÙøä7Þÿú†\mQûñ?!¦·x-­ðÎX¤¼ '…me³Å¨HŽÔo  aœòðgq(‹¬'3„»ÂH22Pà 6ÔûhÈžN¬¸‡¤Š]äÔSõsÐfF…DУ T¢°ØA`ÀõTdÃk2„l‰­U¶Í‡Ö„Ì’œ¼S¤ E-dR³Ó–$É#s>€rÎ}º«ã; `ƒpÔV\„*ʪêYî2á ËS¼‚*ATyx"R¤ÑhóŽÀX£'Ã(û<㥔™øø:Ýé¿€¾>€D’}÷ ƒU”{ŽËà†yÁÇG;°˜pk+cùÃ\Œ~0—åì•’ÉÒ¤¤^>šË¹â;稕ìu^Ãã
-ŠC —Ñ”ÿb °g4¡6½ÅU-I`[YÑÌÉ:óI“”:Ï9Ê0œÑq,
-l͘íÒDsh„Àá„7 X$«=®Â½ˆ&É­Ï /¾„X3žsŒ•"aÕfùº.\;åôaC›,k“‡êõYPRšgŽwÌY ¡@–sºÏí|µì8:U}Æ [£TÖ!–4vÆ4³Tl ŒÚÊ1³kPqã:gbw4è¥ù#©Ý,ÛÖ›2Òî”Q9V˜–ÑÂsÑäûVÁ¹2+²šÈSS»qNÙOb7ÇBUÂ#oÀ`\V?Ì6<°àÓµâ&B†®<Y²Šš4Š¥h畆>àì@¨@fspE¼<¿é Ôü]£4ûc–H o‘ ð—0Š&±ø»†
-«×<‘²Á†è%Tø©¡³÷­¾²Ž|ŠÒî9YĪ•¡MÛηÁâÿ˜Mê&kჼÝ8šD ž‰H
-L:T¿‰3y‚¼Ü°1D)JY§€Ê°eÈ“{ÃëÑ¡mÆ$Ü#„×XÔÆ ‹fS0Öc _;β¨¾„;w»E´²§zݬӟ ˜¬šîü©U&dѬ°²ø ¬š
-iÈnÜ “·ËYÞ!òAƒ5·PW
-„Å ’µ<êðTˆš1Ûä.H#'ð³ÔH^r§C†s8ʆbi—&
-cP1[5®BXUVèa9hhœ«´ÍÎ9d'D…Za‘ß.„ü4YÀNw)k$Wl0Ô´Ó„¿jþ´,ö4ñ˜ƒpJ<ƒôp^5¡""ît8Â,…Õ€­ÚA(ã–óáÑ6”œ±ˆÄô~ œ¸B´Ð?eÉÑ‹dþ)4|ÈV?Yòׯõ›Dxd&­g&i^&<
-øÇT¹O¢à@%6)!Úlòó‘6“ì7º³µéï¿î &h™äéŒ( ÊR ȵƒ0NU£[úçM
-õ}‚6! S×B)Vß9ä;˜ËfŸß9‘üºÔE‹Ö¹WkRG‰Í8€þ¹½ ØaK†šgOSxzßîízßì ùžÒþ9}sµW×w|A|~ã¥W=>~ ˆ3”άžË˜¡4U»™ M²ʳº;<”´à<Ëe…YŒ?£ä’Q'ƒ(&‰Ño§*@øºTаî vîp2Ü”}+˜@C‹Eƒ(h78Bñ§sÓý0Ît¼ÓÞ w…$hÑí'/„õÇQm¨·É­À^.H›‰m©2øD…:È#ögXåô"ZèNc-Mó»Ð¼¤ˆF£À!s-3äÛJ“öxI™ÀªpÐmA0ˆYf ¾˜ˆíD.ÔN”¾´›uPä,¥’ê:„)­<_W椈#›ŒZØ­Œ®dùV
-.°9JT·Çbó^¸ÏµN&]P|ÍÌ;Lñ9²M´‹'Ì?áZi›Ôù>Œ}+$[±QI^O*…úò®tÙZGÚN3bK÷¾‘›B6äò B½3V½Žè[azY
-R‡o((Ÿqr³XùQÕ³L5F¿¬uÐ[ìÍ¢Éb®Jn”ðÝ@Ô[Xc AN{« ¨<’\:%œ˜m;rQ =mÐŒÖ1ëzc
-qz@´IŽ¡àøb׊jã–½cµï7²ä*׃×=uàâ½ CÝúÍ:J?*%ûoç= `eƒ`OŠz8-–³£ÊyÉûs‚qب5 gŒÊeʼAÇ› ^‡y‡Ç˜ï†#HG²à¹àXŽ®½Õ…sÊò|PR}“Î…¹^õýD€åQàU„æJ_øJ¤tYZBØ'¾°qÁ™1iUœ2ÛraõŸ@@
-wÂŒ ¨u¨8Î*
-—C„Ö‡È%ZíQ‰¬«MI|{§w„M“H6âÍ:×8z€¼ÇÑHV‘Uu¶AA*Å4úã$ñÚ8žpfSâèÄðq±3O5z1ß…eûÍ:/¶üò·6þ¼¹Õ èó褹RA9ùÚêØÄ£pUvHž¬ÂH`îúÑßV›*ØŸ¹ÚN††ÅûÀ£x«2‡Ø«´¹_ž–ĵõâa ³PÞFÝPX;Žg\ûa;]%äm¤#˜´äº~‘]eùVÖ4IUÐÕ@#ŒßÜê°Ü.V"v•Ô,u¦iÔ/ÏÌCñÙx6,6'K9©=Á)H­S±ÕA£ Ÿ°‹‰Ó…ÛÛ NýX È÷Ý8 Xö>¦Õ H‰ÊY7“–c¸fð2Ø®#¦9·‘˜ ÷aÊ)Ú Šа½EK
-SÅgÚ³ƒ¨:•¥Ò¤1W^8%ˆVAgDRŠ²X9ÊÍ AÈ(bý"üWU¸€>ï@±Œˆÿã¡ãQ]8Vúx“€`äKR²úKÁùbP„¾û#]dŠm[ëè! %¿þ‚$¡€?27” 6Ì%¯­ð>2ºîh“|
-Ù¶wÒÎ>rÕ£Ó»äX†p(–Hšó£šõéµ v¬{èøNŠ]˜®x^ŠòÓN\}CèýŽÈ&‘–AĸØ6·Å/³»ªÕ‘YRáŽ÷òéºÃôÜ}êX±aìä]×F@èGÌ*PÏ$0?“á}6(/n¶k@pBã¢%Þ¬C%PÒ;9·Ê¨§ezyÓò¼ø+¨ŠR™+8€/žW¿‚0~¸`¸Wz½ $…Œ¦òZÊÑ+ˆDÍ ‚gmò>´˜gc㉲¼ª_=2®t5vçȪi½¬ßKñÀïxôБaÈ}˜
-Ôê ²œ^îI‰VÛM$u¶ù+La°±‰Þo½Õ"úAÉ®ß@^zTí¬Ë—Œü€Ñø
-eIâP“òT«•E»ÌÀ¤]¢•ò@Õ
-‹9®é‰Ë< "½V‡¨-•:Ëêe1 è¹hc
-¤vê׆äÃëøK•LŽ4c·J_ˬJí<Ý2Õ”Á] Øá$Û8— Œp˜Àªí(©08+FÇ%Inn$1ä\ëÈ¡ÐJPã^‡£sŸ )ˆA0–ÝÆ*éå½zë¾sÄ3ô¨»¾[¸…€õP6ʳÝ툅‚ÅúšÐ„»äé˜{§7P¥Ù¸é”³u°ýËîÃP…Fbâ¿X ¿kö±-ã&ð~¼Ö±øûÁÀq©3zcu¨¶†éàÜž•¬$}`ÅlVUcöCNÙ=aȆÎýÆ)Êp°I²ÞJÊ®ÔܾŠÁ‚`P¶>BÑxÿôãåŽ[ç Dáh®]$‡Ï2P«Ö+0’*)³ÿ|‡3¼€tyb{ô“œ9sxÓS2%™t²Z¥¤º¦Å—¸IP²Üß1 ®¦,üøf¸ŽnÔwž—ªHP1(L÷ûýÍû`AÓÖb¢Ø9! é±Ë™Ÿ0a†7ö’ÞŠ´&(Çî½0  hWù§E jÒµHJ;^º¦lô!1ÎØ
-šå£'“b‰@-ç`L^g«‹¡ûþÖ“´ÆgŠKWã—ðq°!Úá’Ão«¬™—0=ùÑá£nþ
-Q³ '¥^y·á"J­Š¶!}ŠËö8)š]k^Åp–ƒS’˜7ù³†ˆA²ù0… OTï ºU'–]Œ“´ô”8¯\Ũè1¨ú$Ø/ò¨.8´w{ë ºB¿+äoW‰¤d,¾9–ÌðQ€D³Û|l°!Bꪔ0%À Yµå%q×ü™`Ì’ ÚdU0’A»xÕ¢}äð3ð>ø;,Nj.J¦ÖbjéG¿z½ÛÚ}òŒï×Ý4E"&
-¬>JðûYBbÙJqd‰|)‰.cš
-iV/êb…D\˜Éa:ã(b%
-ø¶Q¯†Çˆ‹JyôS>ô÷u(b|ì%*“opìK/"%Fû ¸:†±òAWäh6Ù™béCmô
-5
-MÆÌÙWÜ
-¬TÇF¬
-M‡â'‘¢æ ´[Ä')cÉ{£®^ñ0?¾£è1´jÈó—ÿhÀ4®ŒõIÙ@TÎw« øHÆAÏãN±TX1F³â>ÈP3E^ÀÃD{°g#Ž*ì….WW„Ùg7HŸ1Qrl/ E7lj4²Ì}\½Å·Š¾wϼO×+l=VP6²\O‘aJn_6‘‚ïœ ŠÃ(oXŒé™¾ãP…؎çÜà.1ÉŽd*-­Cciä(¿z%
-·œaíoß"à]잶žâüP /´ÉÊç(^½… ðâÆ1öT<ãÀŽ`&p·Þb²ë²³!Y\¬*ƒñä¯Ó8Re.Zgg 7mIJ£¸Ÿ4E f±rÒ&%kG×j‡ˆÒ⎞žè[ÁæCPñ¦Êå»–•5ƒ‡}Ìàµ!²„AøBØò¼·q +÷…š³Œ¼ íõa¹q“‹¸ D/Ýacf“ø  8*ô" Ò•T< >ÇÜ,ú!mòkö¢¤f~&‘¤ôþö÷ÛÏ_oéÇŸ½ýüï-þ ÷¨†J­$÷0¤Zqš ÿñï‹à¢<B®C^"k„ÇJ«E‰V ù·yIÃåHÎƆÇ"\€mp$ua©k˜h]/‚ãh.oA
-»dh®ÀO)ÏK|·€¶î%S†Þ‰ûžKöQÌ6+,c—Ïlã6þ`
-H‰Œ—Anœ¹„O;ô¦!R")­3ËÜ"À[Å÷ßÎGI¿1î_ýÆ@
-µ¼Ê ^šj´«VÕ)dãphÅ©òf£l„z»¸©-¾ƒˆ!‚;µÅwjµÎu|&'I1h¥ÎÿÆî¿yc*å¯ÜÔZbГހ³…V>þ|§¹~Í”þ„#è
-/³s‚ÇÉLqcö 2m¦D²…¡ÝºÐ%&SA­ð–„ßa„'Ø(ñǂ̲“Èq€ü^'M¡«àš½‹CújPÇ&R-[‘¸<DÌ7ÑÁZú>)™dö¶¨úšÕ@çeÕRb•ƒÐp¥SÇñ)ñÿ:Ö,k~€Þö~q‡äÌ©Á‘¤aµFJ¥3R
-Í'ÈQB6grf±k¦PE.9,I{R„îj ¤ŸbˆÄ²«ÑÉz­4U±wq¦~dô}K)©Kœ(sPr¶ŽÝ†ÿÉÃI×Çß mÏÂðh”:³”äã̬oåžGЀHDòV1¯ÞH$úÕ˜‡)z³C†>Ö¤QÝ:)ðÑ*Z™ú²§3 fÈÌî´ñr@¤¾tèÞú>Š‡¡tžl}È SPP÷ZjÄ௬ó${š8¤è£#‘½(B³îâQB 'Å4ÞJÔê£ÊJ_‡‚iµÐi]Ýq
-mñü•áä×Q·ìð} ¤Nµî£n)¦¬ˆbyQâV©/͉[Áïqn´y¹Í}·GH\sÝ&ò8·‰Ây8|‡øR©ŸWãUü ÂUTúA»?6w*>1Ý\‹è×tÖŒ—ãn ?ß¹ÓÒŒÒIng~`Á½nÙäñʈ³ô2o@Þ:w
-îΙ “
-â)­GÛ©ô+lÅq¹áíŒ
-¡nˆÑ,ÒÔ=R>ãÍÁzA€`7íÑ9eò äHåÆžK=Å¥bÆ Ï¾Œ‡@L"E'Ît!Þ\™vˆðcæËí”uá%¤µÿttT1¢Em®ÚzÀ…}L0‚À¡”#ã†ÁâiŒó Z¨Tt¡lº9å¥Þק\úæôI—þ»¦æÒÅצá©P¿~22ÚƒO—D
-ü.;‚ÿObÍh[Q"šMRãuÂni7’ÁÇ5^×»DQ<›^*RÂ˃OÆþòág@ ¡D[à«»sx`ÐÞÑ×Ø.Øö&žãï­
-ÅÃf¥ØYFÒåT?Ðß=èÀ†ö1/ÍBm4Œš_·Ø(kç!¾›±Mjô¯>®ú¶“ÿp¯È>%qdž— À/D Ú–ÜÅw*ú–b÷‘æ;
-t)Úk/aQBÉá»/×]‚>ò¦/ü43¢±¤ÌVºµ›AÏíæß!£æ ø̧ Rèwƒr¸Œ2äóÍBÙÄУ›¦a
-ºü*
-Á@În´Ùçà)Ð9¡;¯ÄTK nóOÌj7i¥‘q呼yH¨\Á*ÚÔæY†˜~iÁï[ù ìÇàü.÷ª1Í»¡{‘5~µ³û$LüSʲ#ÈúSç´vQ¡6~¸èL!•%gG±@±
- 63foz–@*µæ7i³ ØU%€Ñu¢ó–ArŪ(ćïhËñf[!„t‘wJÜa¤¦2<]¾B„–ôÅÿŒ—Ir·EWà=h ôÍX¨]xJíúÏ-$žø
-Yv„E'Q@6÷žÌW7_/P[Ép.iŸ
-:B›Õ´ûDdxÔŒ7¬V…ðH/c\¢õˆÆF¤m`<D\5àKÒŽõ¡3F{%\‚¿&›>]D‹lyMÓ¸¾­¸<¥Û`1À¬*£ö×HP€x@³µ’È+ÇíÑšèÉd<ã°FDÌŒqVˬéßâ„<©Ó[Ð/7Hëü™¡ko^P¡Þ
-„ª •p^Á.¿kÇ©·˜´ÚBÈwi‘Èþgc 3äµ´ÒÏûj2pþØýC¨‚
-‡p¦½š2O¼:h7µ6ÚØXô©½}•R"2¼_¤ÍŽ"üÔê-k½ÕÂú#;‰Dš¸ìGȪé;Ô­/ W7æ‚í£ïW¿}>aKlæÖ[hUK¥Hß.ÌÚ6a~餖˜a©‰ w¤–ùå22Û¦É(kJ®QˆžöwhjÏ·\lKŒÜÅaÏV'p³°v×Ú—°÷@_å¹yŽ’ðZ&¾dmHÁùÒÆÔwäŸ å$†ÎŸä¨Æ“öM²÷s°…D.ðõȺ15úØ[¯ŠöÊX·Â
-ˆìQ–­õ©Áv¤¢äþšö"%³·/Ñߨ5Ìw_ñS<pˆÕBZAÌÙÌ¢ñ§¦¢É›µÍ„S]Øh°^žÜ‚.cÄ p*Œh%`á†S‹h1ÍGN†"_!lXLe
-\9Ðwy™´ö
-¼’ÆÉ ºBX` Óÿù¬½Òïøo54ÅÞSQ¹C]Ue±`¤1wòkP y¡â˜"¿ÎA*kLkvL…ƒª,´Xʀ߮:`fÊš¥w&L,°·ìĘDø¡«¨/:›ŒMÕ¦3ÇòN„€gä?y>Nª´ïÍõª;¬ÅPÃÍœÜ82±÷ÒH£Ä¢—tËqf÷ÃLszÀ
-§œ'ždä™"YX“N‚¤Ábò =.2a
-òû2Ž%ØÈ —Ùyú¥ÜT˜Ì·TFÜOÿšÁKå€FÕ˜éÇYO+oåô5—¶ht
-óRǃæjdx4l›Ó†ƒ„$4M°&ÅY04aŒ=*h1!5-¦ ´‰ÌšõÑìœÏðY–>Dö‡72§Uß'vª¸×Ú+Ò*ç1· O ê(5‹A-vvÉ+z½<hªØð6
-±WŽ}W—¨øàWâÅŽã•dR' »ûåø!?TØÆ<\õeQ¬Ñ¦£œueÉ4‘½<’™¸l>‰ô/—®÷gŒ!‚îPÙ‡$êvˆÔ
-UÅ/Èï\›!,Q¸œZ!œ0dt• S(« PqOæ=dš¾IKÀÜO/f~\8@­gnö&•»bq˜øˆm™y¦õ˜‚Žç !‰@MÂk{‰Ÿ>/YAȃFi­6˜o%ðìîo¶ùSîúã|°óÕg¬-î/Ĥ€Õ°}½ öˆ™šVô_Ž >VÞÔµ\-ÚA&§~†—fRäœm¾™¦”–.«äD4œÊ-íí¤˜¶åGþC™æAî›ÿv„ž¦ ?]ƒx†\iÆRÀ–Yšøx6)bÎ%Ø“š¶>:§ËAVË"waCܽCõàáդ boEÈ);Új°#=á,—>]6´ÎÐ(pN1 J3hI®¼B:cǬ©55±§WÝ&yé[Ôz!òÇ_!tiÈáZ|Ý!']Ô
-Ô—þp·Ÿ£T3CÒ¡k™%¤ëªÕûñïjŠÛ4´Œnña QŽ¬¬»0í¯µ×¨µî)
-Üæpó¿§Ìùõ©RÊuŸúgU ×rCèZ^ç
-~^åhïIGž©9ÚøH°7ªÿufþ°z CW' UO¬~¬NC’Ð2¼y+Õ;«s+°k¨Ykq w' ‘DáJZ1‡áªÚ︠my‡Yž…w,— (ˆ.ÄSÃéÒ͸+žvM¶Çê„@™"’wéV'H­ Dm.«‚)r¼¼7—Õ‚ªWqBÝ[ÚÕ½ ƒÕÏ ƒÕueÌL4ZRuY]Og¦n¬—Õ•ÂÞqá!/òP]£f£`$6ºŒí©åÁêê @-dö¼1üsè.*tMòðX]=J=kÕ뾫«×ñi€×W—Õ51‚
-œrtYÝ›¼ƒÕÿ:ž_Œ„,¼†a*µŸJö{Å4¥¹¶8^#ø®v VÃ*^}Š"$ Ð4Å;$—BÓM‚„Z‚_ Ñ´ãHqLMn^çĬ=¡Ê&ˆCó@÷$ÔÅBxhFj`žõ|öÃ< ühTµ|+ 2iå!&з _Aè®É?yù›b:> ‰j–AZbþËz;!táïi[`é¤4ÐafXÅüºXvz¢Nä7pš•ž¬‚æ¬Da+ê  î‘qt”‡ZýgÅþQù֢ؽ]h|Œ†õ—FˆKǼýùQÅè Y÷11˜k\Ó wÊYÙ¦}
-=gÖq¹>l€YdRÌ›ZļQè:‡{àa”,™Dx9EÆ'­Z! ÐDõ§Ô²šÃ Öh¦*Yá ³Áõ9ãRÚ~ó7íôê°o ¹ûÛÑЧ¿iÙÁ‡Úµ3ùþvÞó7úP)–eßß¡˜Ü˜“^·¡æsƈ¼ÍÂë NF{­^ì›A:@¨ {ýÀܘ¦gƒÖÛ.s…¤Æö·¤ÍAûOØ!EnÖÒñào^Ð m|ÙøV³Ãûyƒ·:ãŠÐAä
- k'Æä\ Ñj²ÏôŠÁ²¨óÇ\Á¢£¬Øf¨m>åŠòJÚ9H‰ç\!ð@"Ìؽ¤HÄ»2®óœd„à[†á‹ ã*&n¶¥}TW3$ÿ^tèŸ á/í+Cöv
-+n3øU礤¿$y®pß°ˆš”ÎæÛ}ñèCHΞ:)¢é žv¾ÍHQàK¸Ø7ÂC~±n¹ŸIð7\úùVäŠæ㦸7zŠ®÷"‹î…¿ˆê4%%WIJ÷øËbAgB´¨§ã-0
-ÅûÈŸLÀC°èZå´xkÇÜ”cr¥‚Ã=™˜7±5>€üA8z|x%¬ô1RŠ‡’5ôÀõä÷мv*Z%ëÉÜ8ä|V€
-´mB¤>·ÖíÐQžŽˆçU°²T)‘²?&X·aÑ1]¦mÓiqÅÔ?+Òš*þ¡Éô(¼‹ïïD¯:êSwBòxü@–Ipo¡xríù!
-ŠçdªS—<²ïeÇ(¨±rr¿h‡ïÖ°lE—ËZ· ð8¦é´Ë¿ò¡y yV,€œ¦¥Â*ÎqH:³“*=ÖÄ ïÅ-wÄO­… êb?–ðYˆ‘Nãóúû¨ÿ_¯ï,Xxdè½u®¸tÀŽë°0HQz-÷LåP´J:vˆµƒ®6“¸*Èô6/ÀWüo9“C!SA“:»:D÷0zzéEXÿÚeãØ‘UËÚT^ìV
-u(êi»È>Jφcêôau$ ˜ô)Û…aMÌ8™ùþÇú‡ê‹lyï!É«j}¢4k |hL|‚àÿCù;å2ú,;!óÛã«þu|€ÄAsëh›†4€ï¶}¥"kíJz;<6Dòg_QE%ršä¯´Yº ,5 Šï÷¤:þ—¶Ô}e²$I{W•]/Ëœˆªxi£Ë"<óÀôà¸pýñüú’ɬînŽäJ Ã[XIaîX€:œZ|*ÖØÇ}îr¦3—Õ¯¢( ÓwÚáÜ<B©8燒5Îyì£nEÇ@ÉpvêööÙ%ânJk’ Ì“ù Þ È:¾£ìðD®™Nèï­p;ÿ€>[Ù‚|Šg›çXzæ„C ÍJøÞ'± nÆ–X¹HH«íTòÄO?Šþ>u¹˜¾-gdüt(Â^“<¹"Òᤊ×Ì-Š"ÌI%9ÔJ&
-Õ*‚ˆ0˾¸gÅÖÑ=ž
-Õdš¢¤— ÔÕ†ë†Å»ÜžEŠ*AMG}ͧ
-ÆpÌY‘éc•àáa×úñF+55x‚X\IðÈ<}…IËønŒ!þ"VìrY½Nl$ìÁåÒ܈·é²m[´¡·5±êãé;›ðH·_÷Ëä—@še^çãÞdÀ!0ÚÊù3åE
-&€…¿Š0’ôj7ˆgãÊŒ¬s.'±ÝìFNVRð…›rÜœ ‡QsÎc÷_PBE¢-H
-íBõÊRV‚‚2®!yp "¦Œ*ŠÞÃKѱ?e¾=`k•Ÿ:}-ºóן°·‘|A<áöMúi6·Èt’óȤc‘ü½hÊ›sŒ OúX%D=ý!ǹĭÈ”¾|%±ȆK¥•³¢\&&K›ºRê:
-ɧáÙŠÈF2b£>VI á´± [3èÖôãV‚¶Ê†£¸ÑJ².“Œܧ•–
-â²C³£ÇÍ2ê/+ª¤WØDÁÈŠª®Çô³:a„ÀXËôgÁÃÌ'É+zÉ$UœTäSUÿhþÍNwò¢o¨}ZŽ*„—l „ߪ˜N“Y%XþŒ(ØK;–\RÔç_ç¢,{‚˜A}þð[ÜÒ䳪è¤Øag†´ð»±F°b“ØŒ\½9XnEÆn¢Ã| †Ø!li{æ²"y¤Ò²ÕÈifv›üà#/Ü…Ô4ü3±ccÙS eû¸O3ÍòƒAZa õ{ä?p¡"L. t¹ä÷ÈaØ$cJQdé0ñ#wäÊ‘qˆ¿‡_x%(óp´ã‘Ôj¿*É
-,œ¼‡Þ´gƒt’›u6E`Ø?N»ýà:^W»v,¹ìð§­:JŠ$%´¡n'r,ñ¶é‡<0j ,®Ó(ÁÝ€•8Ü©ª5$ù½iÒm°|#$C–2\¬½<ÓS´¤ÀRV„±–¿C“c¶Ï°hCŒ÷wPò’°´Z v`µT%ë¨=¹¥6Ê©h•Iȧ‰7¥óm(AGJí'òôªBPÊ$´Ž¯JçæPBÀU\©3;|(ùuPû¤kMÆb¡¶/;sº žPÀ“£´Ã£ŒµeÓÁ_tçtmÎb¯NKÙ`œ†?êG‹UÒ´&•þ&ÃñeT·GÅ‘Ÿ¿ó8§ÛüÄßùQw_{sX…k‡³Q¾wò*-NX<[ôjå„7ükEØW¾3SOùP´J:¿¶hò9ER"–Ç/4gä©ä0 „†T»žž^øÊ{€_=æ_2½Áh/fWþáÎ8ÅÚü;äÒ"'P«—`Û£„±Z­£Íb²âBƒ.p›ì¨Ñä¥èË‹˜ ±5àgv¯À^&± Íå'2íÛZ^_ŽÀÃöˆ/!È›L'‘§)—˜Þ/GSHßS¯8B¡¢TorkƒÝªé ÓÂ=Ø`ùãe’$×­CÑh¹ûf,kšJûŸú\L)óñÉùýa•P|$€Ûy“/ó|)YŸÂ}†¬“ÙÌ›sd–Œ¯µy¶L<‚Uî2$þny¾"Ö ³ì/2 ÚÓçtbôx‹ø!úKUé`B ¬„»0¸‰PóX2þ‘¦
-·’·bá6ù-{‡­A_ø‚ŸzWl¸AËG9WgÑir«7¶€"TRÒ=9‡U b9Áú…A[€ÃÝJx#T5$•æK14“¯K?÷wÂ
-&Nø—ˆŒ%fIRµc7LF ušFwYƒ>òMÉËŠ~ÿv*:ì:äˆ|Ó°OkNà»|죢7B8#ë­èKäòøW¥üMdñàå²¹þO½øe5 Rl¹~Ò*`4ÄD–·W]§J Rΰ%*¨8©i`L&s[1X ñœ®MØv™<ëʪ*‰ìbûô¸(ùÆ•n(QØàYÛD%Â!¨Ê Éü{nlã5j¾Î5DE€Àÿ³“X“Kׄá~…|¬ÐñXü€kš·¦ô&Ë
-¦Á³w4øtêv?BÇ)‚ï¼Ú¼LI]¯)»ëŠ8Š˜Ì Z Åh\77 ¤éª$ÐÕ¨-¤iΨЃ2SŽ,„Í‚<DïEZ±ú†‰ìSŸŒ1ú9Ø.p]sp“üí+r×V÷H =3À†?φMÝä-ɶ÷9áÊZ¼ŠŸÈZ‰%d4$e«`rEê’ÂÚv*ð“"ê£nêæ+]–Øø—
-N„ˤ2\Õñ…Yö7§Úírl§Sx?ìAZ±°KxB„O»?› ªðÄ}‰×Àê²;CÌý­˜Õ^í 7eëÈÄtð¢ÚÆM ¶€FÐ0Ÿí»½X»qF>ŠébSp¥•_V‚ÑdÍSÕèu¾æ0zIûS=BþSÇxÚ" ³%Ã'D¼É„÷(${n'§?žqô"H¬d"«WòIµlÓ»ø‹ý,û6IR-JŽÉJ@PAañûUXñÉ Ø'ûRdsº(?]%
-¼§­MîÛ²‘ѯÂàr6^f& QW¶©BŸ
-×D'{C± ,'xÝ·a_¥¾yåW[b¾Íšcì¼5EFŒIâKÊMÉ2ßœ’Óø †÷"¢b›´üÑÎð5‹}ú»e£¢XuØ±Ì v7C@[øbüíù% {°æysª4‘ûŽ·îÖ?ø&«Áaz‰FÉ.Â~Ñ7¢´å¨húf6¶h‰x†Ù|R8tYŒÎÅZƒC¶MGæqé’Áèt BºË†]!
-a
-ûhÎ×#26˜®­w-0úQö•'ëxaRÛŠˆ
-Yž“ÅÞŸº‘Oå–P‡ìçÀç
-ªSãJ&jˆk‚¯@4ç¡ä‡5ZBë°u²çsVÊ­ñ®cX%A~„ên†NEpC’ÆÝn=æc¸î)Zn^P Ïôý] µÃ¶·3vÅH˜Oøêw|*o ªå»æ©h• k¼•ÛÔ Ð°‰Ç°p ó­û5‚®—°íÒ–bÚŸ‚aCÉËtºØ°(2UyÁJf’ëaƒ¹éÍÈ7%/KúýÛ©è°í²Öˆ¡ä9OkNð»|죢7J8cë­èË襂(‡$S«—ÜfPûå,Ýa9˜n³„eÃ( d3¢mšÅJ=È /ËaQ2Ä][­$Ëå‡l°ü!UŠ-oP„ I ïç `iþ)ü!û ‘ÆbìsQ V]+üCÜ‹€†Ä…|sJ–''s†–ï®"ÃÃ1Cy’&Õ³RçmkØo „Ó»_J^基`ËÚ×bæétÔN—×óÍ«’øCþô?ÆË%½’[‡Á+è=xçÓû1v†ÙE¦öþ§ù!Q•ö½™t7ŽJ"A
-Z_#'-FJƒ 8‰FS7
-¹ç8#a¸0=Ì~™ÙôˆÜè2—žÚ¥tŠÉ!u¥?´ «[3fÐb$e'ûn—áÏ\7Ùm–ZF¢ñrëɧ° #óåùò…þO
-¾…>–WY"1$ÐB/‹âÄ]Gè1Q… AÁ³+ô±²‡¨ŠJ ¾Ð¡Ëü‘R=j" R¾3ñÃâŸÓ^‰}†þw$ÖUh ¹ã©Y?íÄfÇCcÃWz |šTê«—Û0™dÎÒ3Qd<½ŠÅ²vL.ãÐþ1ƒÁˆŒ.
-7O¾ ½ 0/1< ýä³lë
-£‰T_èˆÆ,¾°0>½8˜“ůFs…H…隬†+ô‚ÀrVªÙ×ù Äï8³ÇHÂ3=zÁäʼºÈ<hBÆ„ý¡WU‡6+%<NqÁº“´©öùpNy‰z$ÒVueË„fX9âAæ¯ ¿>„ºÆ3•ÁåË?¹2ÿGý^2ÿö— áÕ‚ÒÔ¬–_Æ Å¢,,»J"Ÿ.hÂÙÞ1ÚF_³
-¤Xo¡ŸØƒ” Kbd6Du%Õ“—ìz„¤BUöÖã ýaìK³íq¾¤||°Q¬OEvYz µY]wˆ#H}ÉÕ‚®h A¦³YŸ"Ô“Æ‹Ö¼á“ØvÇÚTòŽš“W2Ùá"£dpSü7l,œ]
-B¬±j'K‘rñ÷ªev×x P¸Lw€}'15ÈWâÃ!—vßor£÷¢ý‘ø^_g¾õ韟LŒ†+¬á
-pÒÂðb›åå¼O„íQl(?ì{‘i°ôØ4J[ëdhrCòó†È(CBûÂÙCŽ©=±·¯›«ådÍV-L,­O„eøÝ´¥VnBÔµï^j`òªÀé)ûÇ@w8€½Tºi—á¹.Xîg š¤ý&R-CwðW›bZÍx‰»-Í„p˜bÄð ¢ÚBB%fDhÂ(û6 :U”éGSó÷_>è[ç?\Ðä$d¿+פ¾ß5äx÷(É„»Õuï áÑÄKê3LãHîahb—<Oçã•ò¥´AHëYFqh7¢vÎDŒ¦åµVp.ú€JÌ­ü9²L=• váoíÄFç2£ÏÀ¬f³njÐc:o"pÁ#t8CUM« &=' [ú’Fñ¯@ÑaªŒÑôÆ4„:Ê›?xÀ¾R  ¡áŸŸLç^†2ADE|ð‰äøÄbb:(ô2”ê{LN%@ßãIDEˆ‚ž,ýÂK±n%—i× va_{°|TVB€ñ«Wb11°2û˜®X…=æ`5¬p@{/{W5#ÃÑqì·SCÔ+Nô«/¾S ‰ŒR£–Ї¤æM
-nwn´kíuŽÝ ~¥
-=à2\ùñØ^‹’˜]qÅÚðUfT¢~U²aï9ËÝÏô¸5Ňõ%”‘¡g³­¶(Ò󞔊Ðá÷9œÈ3ûÚVv¶’§²0Ó…Ð`ÒíÐz9I·ï¿|Ð7‘ûpAˆeMt¡g¼´¿yW&Ó_ 3–§¯¥”i€Å-iß³"ÿ·‚Ë$È$FèŸÞîmp|äÚN×D $®Løw>u=GCSAð¬cGEê
-¯ÉàÆÑ¢åˆi3ãÓ®(Ꙏ¦`Ê%PªTÇY5™<öO’[|󦯻°ˆ h[*nƒÇ#«¬OQ¸íPyá èÃF†m´ã„±¨±Êô$7:§%8jAy¦“¯<]¢á$Cb›[¿kÇPbì–@°,E,f&Ø”ä1…"·tâཙ÷P Ì:“èðpJé%ˆÿµ¶Ó„®,”©$g1 o:M dF(‹JÆþÅO®ƒåõYŒçUöJŸê\ÉLD€QÎe8A\ã˜ê脆Nµ#¦VÆ»7¸U@¨›¤„x÷áa&™ …
-_­†¬›²3¶¾õù
-®¹Žd!Œ|`—Qm`´þ@KU2Ù‡Ñ^Žõ «¯àõv§f»é»)*0 ¬ZÒö2M
-ß%ÛMTÄM‚šçK— ÌQ
-eÕò?̹Š¶šj zÙØ®ØÑŽÊ1~ˆ@²Ð‹ø×ÖG®'ºÂ`Joט/‹á.âzjz˜žrO¹Ý4¨Úø™t°¿îß°¸<-3T gfŠ-’EäK™ùo† æÔ‡hO2œ)pŒ6vÔºc•tÏýN1ŸB¬mx$“™™ªvwN[ûM®XðNÑ9Ø­Öïì8çU4 gWا`GÌ„¦g”¿R†¤õÃÇÌ.xnZ[ë]È®.ª ’ÀZ‰<¬°Ê+
-£t9Û»ì¸RŽö.€©Èyx:¸ò§EŠšÉ“\K2k ‚»îÏa{¾çßQ4rK^§Ý@!ŒIž±Ã)&¨t»fÒÄt>è%<“æ³GIEÄ•Ìê0@wáÎù1ÊÂMjp?ä©IW’/AN·ƒHµk¥’š7c¼ñ»|ì­ Iðgë%è÷–—ähi‚–K/¿Àm¶ºTÖD*Ëz¬"
-mú„Ù¡%Ú‡éRåMÇå0ËÏX\vÿA[ôa0K†ód2Y{àn KWÓ‚ò!Fø\õvÐ܈%Úè¼ëë&ˆÙÄRÂZöµÉÌÃ-R‡5UÅÍ-QõS{€§™qBþìÆ`Ïb¯‰Œf¼;¹Òª‡öÙˆÁûò\
-—»šbóXx
-!-`;!¥HåÔÑwá ª‚#Þ,HÛéÅFÛç”&ÖcO9äûÌS
-a¡Ãä6yX!~jae]½wÿ˜„v€Ìj‘jCÔ¸Y f±¤'¡9}Ø6DE àéÕæÌ ÂF¸}ÒšbÈq BL9‚¿bEÛsÏ®“'wδšáMCo
-ËŸL;$w,4bÆÉB´ü° JËyº>Ìp‚2ÅLaJ¶é¡˜ÒÎ CÆ°ÚêÊ5hÌ¡KqBùØlÓè×+fÑ„å>è»›S^ÊíÝä¥m¼]Úïš™K_óë ÃSþ¼31®p†‹*ÉúAç¼o7¨#V­j3î{eˆ#Ïë©F®@#¦I ò!­J*`t–;Ô¡=n–^Ê‚;‰ÆÄ~¡½£ÙŒÂøÜ}8ŽM&iÊ3~/… ±c¢YÀ³›cèez”â#üÃ$ªµ»üÙçÊÓÞô‚Šîô¸¿”áØG,7Y;YIu¦å…™GQ¬YÐv Qni†å7 éHm…X¥hJv6Tt˜Ò;AO•ÿrƒØsK–éJ¦ûþXL,­™î̶0Ø7k-÷¶§#×8cÃ"Kêˆ/âI2:ƒ!bÍüé<Õ+yìsh‡H²Å¥–«V^ᇶèk×Á?»L©Ó5ŠÕsZ:ŠlѨžyû‰ˆµJ…àªN®›
-¥,S[}Ió
-zÑ4‚X—Ò ´›s2ì‰È°Gô`M&¿
-‘.B‡wH©"3Å#jð,ŠÅ†;7Dúx)““U½'‘oh5ä}ŽF\©áˆ—Á Þ’¦B7ÓF…h¸î‚:AOFöåaˆüAX /õïʵ«
-``ï<]?µÛŸ©Œxžþ”Âeór]Ö‚4fú¸…ׂºÌ¡ÆÀGþ˜BõÏÑØÀå‘koLä6 pÕΉ*X›j"U¼i!É •Ü´hmJ»ÓëšÏTLø æÓ°?¼¡éë6…qHqëÅeøЫ*ÂÑÆÓöîpã— / ¢ 0-1¯áoeÛK‚Žóô¶ñ–ÃROíi%ƒ-åieüM2Þ ^ çå%
-¤›`ƒŽ £UôN>ØöDý×r^wb¨””1¸;S*ÚaÂ<»ƒÃå
-‹&/BøX Ä¿I8sAûC棻CpS@Ÿv
-31šº, a1`-RË8všAu|¼Ù’åΡW4,·V?T\½No Þ2ò º'?þÞ%<–+Ž<“oÚÔƒSãùXyŠ’špqì$À ¯•ûmÚE]î7¶Æwf²wí–Í&•›Úoú±B0ð‰ÄgÑLÍUj‘Ð膌|YÿÐ7«;¼ DÞ@_ЙUùkÐ¥וù9¬ œD‚Êæµ/í§Sç““ kšG¢‰
-µ3/K*äÖ,É(¼†ºñìKå=ϦǴâ2 µeÿ:žÿW7÷q<›š£ÌȾMú”Íò^Ã…_´.dÓž>׬Ú<Õì­ª•eŠÕΩùãu„…râáSt{B
-j‘BRá¬lz0Zo^TÄ<gIÚ7.O˜\ÌŽÀræÎqä«¢(æ<{ ¼
-Tó×!\’óoÒ
-åբĆq¤•´D¶`<ÓXç©XÌÜ–_k2‘¤· !³ú(ä3¦Â‰buÑ[-+bj"
-¶Â-ämŒŽ0˜Cш²ó`§-"côtû‘X<GU0_ˆìŠ:$p™ày9DU‰LIbòå¯IÙ4ù.2)ž;··ÝT<êçd~ªè è7nßœSPŸ*ÿ/×ÛSÆE×Þ™Ú‚ð“Q)¹mKA‡K3GÕõ¥¬m•$§]ᮄQà*F÷š
-ðŸ¯~˜É®ïGñVþô®½Îæ׳‘mÝZÛ”G8¶§8 ÏyɹQ‹~R56ƒ€±¨!›Ÿ´ªÔÓE"'l¬—ëSðÀ’Îçb—xL‹ÏÛTæ€xT^ÑÔݼïÏ?¢ù Ð%
-pK?ÒŒ‰¿MÅ^OïESI#úö€J½ #·m%UŠ ’*SLÂJ¹ê&ã>æ§Çµ¯&¥l—¦E{í³ŸŸˆÍ5²2ðÃãS M‚ÛÒÉÓ×6&ñ±Š*²–rœú'LÖP’ý%æŒÑ€ÇúìÊ0…2Œ´%€Ÿ0ÓÊš{{¤ FUf­"¢÷Y<ÖP¨”V/ #@JB¶ú
-Al$NSh7f½_…Æ^]1Î-ÜHôp~ŸhÒ•¾YHT?Çî ꥟€ÿ¹Ü›ÛÝÛæ ˯¿ø`#6¢f•ºú³¥¿¡Î¨A¨1UÛÉ¿ž‰¸ „ë“f”ŠÜµÑ½¥Åd@4”d‹©¤3¡EC˹y&sAÉ0W î
-H‰Œ—Mr\9„Oà;Ô¦‚ €µ{©[tĬäûoç Ê¡z¯&Ôîp¸¤,’
-¶]Œ ÄžæÅzü7dlvÜ€F+pƒ'šdå/ +yòŒ4¨ŽMEÊ*N }’ž|²5΀*Á–]6º[•©sG~aô|N#èÖ´Ï™IÒZ™“(|C¤pȤðè¶ò/Ã1…dZÝŸãOåmDXË×k¨¹{­mì×P™1Z%òáùŸ³Bቶ®Rj¬>h¶®‡Î¤B¹G] Tfq÷n.š­sR³r µRß©Ãv¥úPêIÑi¸UÎ Dj<¹¶ ÒÇmŽ¢uˆžŸÙ”Í‹ ÈŸÍ¥£ÚJ“l‰é
-U@ße`ÒŠ0)y»‚>Rº]áþ¤™ÏŒy[Z½cÔϘ¿Þ€Gš51 ~ «v–„ÛP¼F¢k¢Ò êÁ/ßØŽ” Æêî5@®UªÔóœç9îå9H4ÇÛ´ ñ¶ÊH¿-KÑ¢?iò:Ú¶Ißë¢F‹
-ªÈOÚ|s
-Õ«®~ÿ ­ãÂú»Zt#
-I?x»O N› D˜õ>¿7ou:W½‚kA´±ûׄcë\ÒÜDÕftœÑmž«.Ùá÷t
-S¿õ¼ê’b*âaV­ŸÀ/•úIN\
-þzÎ m^_sC¿kTWãpùCÇï[atò¡–þñ­R¿¿Ãéaä®ÓÿdAiôÂ0v×é7 {ñy¹îúüÉ›R3*,~FÑÞ=½<MbØùrJ÷/ÿŽ¹é—Ë. ÏŸ¼h?\–kfaúwOÁ§—=˜Eî‡_Ax<¡¥Jc[ZÓˆàŽ×ÉÈ¿]|€ðÀõ(&óM¾ÿÝWV²³¤.aðô#Š0K Í)á¦Oß7LNôµ{B0 ðœ-¬%ápȘšnq›[@ìƒájóc§Ñ˜<ø#[ÝÇ„{B¶ÜZ"&Ô¶J\õÜD÷Ć‘ ÁâÃÍ|}ï*Øè˜Q¤‡¦È‚Ym‹-‘]às?Çb+ÁVéys£bXÄu-†[j‡ˆl²Ùõì(Å4°mDÇÖÎíòWö®‹ÄqÑ߸ùd2² 2V¦0Ø÷)¬
-8 IÜÅŒ5Š‡€|
-Þ³VEv1-ˆ Œ²UŽýýëD~eyKvâ~…'bŠȨX51 ‚\ÛJS2»NîYñm0ìplC4ÆITîü[q]=°4‘*ÒÝ&ˆõŒ‹ïwÊÎT‚DÁ#ᑺÔ쥚1* 9ýú7^`¢0Rµm'/:¡køÝÐè¡2Îö€,Ï :áÈ›××]ÎBYA4+Nk¯Õ¢!`Ã[KØáì*…3±ÐÊq‘,¥t, ê»dÅà ²X¿…¼hÅ–q·ÑƒüŒ,(Äf2‘¶¹%åÕ„\/b`‘åtÉ5a¢cá´ AôH“Oó K¬«½F­ài64ºÈÜmŒsV7g¨×uΠ-xKRv`œG«ñ ¶Àa°á í>G¨X=.
-…=7EA•,'ßCÑŒÆ<\üêè[ìWˆW¦Òp a—µ ‚P,ÎdŒó½l>+8T/ Úùša÷±Å}f)SšÀ61:/&§Àeo•î±„•„tv-:„$ž&fú;U®ç*^ϲ…pÖ¾Å`]K;¨ù‚Ðj zMñG¿é*B’ÍãȤÚ¢pr®º€(. ‚ZfT»b!"º!˜O."IJ!suxG®r„ÄŠRèÓv®2¦JH{݃vBw†®µ,9õàWÎ+†Åa±¹!0;Ì–´ß@ÿ(LŒô­ë×cb1a"YxÎ| ŒŒ•‰áÚ_8ëÅFCÃÉŒ ]CǼ‹ŸÜ„b²Ö×<†T [-«™a†YF½ª¾(‘ê£*sly 3¹l5ÏÐçÒŠ‡G}gÏȹI´EŸŠMB—=Œèq¦Ê^Ò(s1:šŒÒm'ÇT¿G§‡Ç~tfa¿d3¹©<Í92;“ô–*9^/ÕüŽÈ‹P,!nö+ǯ§4ÆN!µÌ_h\L‚çGévDð¬†@ñäCP؈װP‹ÌLsÄXb‚f/,bi™ôÒpýü5ÆÆ=" ;zázµw@”/ô;  B+’
-êÝ[N|±60È¿ô cùŠ½cë _pç êkm‰übÙ`+ûFªVÒ[ˆ_íB$œy–b  ùìøM=­@5ð0qÛH%µðŽ–äÕè@ «“R<aj‰ígœ¦›!ËsRó*ÛÒ §L¾ºŽ·ÖØ0-õÚ}Ä@FF7%h)³Ó—õÌÖ}3 ÇüB[¸9òsÕ„åŸ1}cãÚçÄ$CH†çºÂ
-ÊRVàº@>m"€€¦°Uõõ;¤Xþ•8XPu¿ _$žò+#?j:§Æš—×;Þ¹0"ņ¶¼}ßlˆ<a>  tlH,î`ÿ€ŸÂ€Ähœp’qÀº{VØyâI²¹x›^`;D½Däÿ‡˜Ëâ}ýd;?´Äoÿ×çÎ2*ªvw(ã1MŠ5I'|AJ:ÂVWƒ¶ˆx®Å0ËA©¤é ™Nþ•IcPEfQ
-­†?;„b—‚ÀùþLdNƒ“‡€2pQã÷ª>9z™u„1ÓlçX@3‰(ŽSœãø‘K»¯7¹ŒÍéE—ñ»Væ2Ä×ú–á©OŸ?Ù-W°åÂv2aø|X;|ïûb0ñ7±Êª-Ý.r¸¡Q—ðRÂ,KCê%ØÕåáª4¶ü©µ»Hiµ֖ŽZ „ˆå,Ðü£N^ú~P[ ز¸štÙ,©¿µá1qƒl«;¬Ê¼”Ýy) -ƒwX€O[4ª1gq”]"¡. 1ì;{®•=ªª-CˆR6¿ ·ÀÛçbþŠ£‘R& öò-~Å<õýë„Áãò¬šˆ¼ÛI°KÇeÖ¾mZ×’d,—öwÑÛÈ¡¸ ?A.(¶ùx·Ä
-^®0…s¨Ñh±”AmÙ^¸sò2”¸p9Ô˱Bwn®m'1èøWÜÈdpÜÃ&+ WÓvù²eÜÜKŒ@#Ò?ÊÛyíø
-«@X1œ%ÃR Ò ?PJ¡Žá³ú¦–幫ÃÛNž@WI3¨dÊ0ÄäßáM"¶«d&x¼äŽc2Q(©íý„ðƒˆ\-â[¿ùH†[Ø!´ÝÝ„ª‹Pz¹Od½ñ¬W¿« ÷ÈJµ”»ê^ O]ÚG½‚Š”²¥Zà‡·ómd+³2 íåM‰¹ƒè2“ÓöA—Êðçbï”Röƒ^«ËrM’ÀýêKž ~Ò¥Õ×ï\æz™Ëàuà¼\1$¢¨x^h­Q„láŸÛôë±täÚ$?¿¹âÉûÒ%FiH$û]Œzœðõ¸£§þçœ/ÒéQÎiÖŠa…È5xÌP´«_@§[ex†DMèÏAø§È5ÙÑJzú8žöÌä0¥JÔ¯w¨PÇ(d& Q^&+1J”ƒy*ÁÕmTÂRÇŠ™Ã
-È;X‰ä¡ZÞL°´ÙŸ ëJš½ÊŒò¥ïòX7†Æ¸vlŠ>,a°N l*7°I²}>H¼§(ßí£èh3äcøÐ} ONÑtaß±#¼a?*ÂÙå¹™U?mXC¤±ü=+_ï&ðï“,7ÖбŠ¬%B²áê
-\nHZý¨Ü9“vê‰ÉWS×Q(FüÍÒ…ëýa5H…•+ÔTª—:
-1ŠvqÏã¯qGâ!w.Í‘–£Äeë{‰äÕ¢^ß@V8K䱺€ ù9Ô9Wx
-“ 8'†þØŠ–˜ŸyÐKLe¢unžË©ŠôB48Ȧ\ •—
-hbrøJ"ûa%Ëo£Ê@àqÑW&òú¯á/*œŒÛ€ãÆce²¦ºéá^>Àûä7|¸ˆsšFÇ+SÃÄÙ S¼ýÂ~ÃL(*š¼:®•aršY­èëÄÍ™ÙùSRÖ«º—˜õ $¬@póa—ʼnêµW×â³NÚ¢ÌÑÌfH¦h¦èiŸÄžÁ©Œæ>´Þ•¨ÆØË‘°0É–c„ËË»M9™‡ÈÐ@ƒ¶UX¨Žö27»W˜ ä[ôYÂÓ–ÞÇp’ÔWÔ©–|€ì…=¸“?Žß¯Ã¸â™¶kr] ÷D ‚ˆåħàG .ˆùª^G9§¤¦T¯€Èp»à'ÑÂjýz£"·èÈë–·Òœ¶?Òeb …!jlªxA0¬Ç#ϳoxY b*ñM ªËÖµ¯,ºA’²Wƒ¦A"Š^Q@l@s±®ª(œÌrM»Ï tÉ&ÿRáåR!»w˜«hš0>¾¤ø”Nr ì&Ö€:ª¶Å¶×+®tÔhI[ÓÁ.agRáïx°*]+s¤Šôøÿ ŸvTTaùC.~þ{"¿Íˆ…âXV”R 1˜&-1Lí]¥Sx‚$U5:x
-´@d%"Ù,bà tŒ:n…ÉüXå#æùÞ<±Q1°ì?¨\“ÛSûóçÆ/;Á/Åní¼Í4ƒŸ(rüÍ6«©Ý\>ãö;2Ñ’A6›eAko§ýˆSYÒ>êïsøG¨* ªÌÞAâÖÄfé4‰ ô¸'öEÀ2ö£#É°kÚÍ#F!Æ' ‚!' âQ§kA.CZ0ºè÷ÓN¢eè¸Ëoƒ¨ã6!ÿdíÈÌ´|,˳/<Øø¤®Éçd0PÅlO+ˆ‡tõËýNoæmYž@7 %̘*ÔÑFLÖø@PÆöt±@h9m½½Ðzi2öd{š®¦uiD2’ƒ Œˆ^=°ë§Ä÷X–¶I@w8¶ªÛöh⨳ÖcŸþÑíß¹CH|7#…Éh÷íƒARSˆ Ü'ïí¦:ü+rJ˜mÒB^Þ±­ðÏÿñ2IŽ#‡¡è t@ÁœÖÚö-¼•ï¿í÷I°ÔUÉTËŽèA†I&ðñ‡ì¤À€ñ² ªut¢
-š¼
-@Ý;“‡`È¢ñèúñ1¯h¾|Ó ò0'ÛÅE&m6.u.tG„)ý²è˜¼tV—×èÂEÐ
-\nµîÿùÙ[Ýààßt6?Z–†ØuG¦×¢¦EëGQÚûa¨5ÄZè|È`ä)·?z5?Q¾ž†™…Ý«û¨]N§³åÛþà[Û¯T±Îé!ý¸„þ°?Ub?$ïÇ¥Û‰R>nuÿq±¾S`*¤^‚D«üq»ÙÁkÑøàªV¢²i›h,Ð&f‹m›pü~Vú‚t‘€óqF¥—µ§8WžTMÀG„Ò",ÂCÞpZVžWU¬U¤m€³+¡¤êØò»I¤(¶‹·dÙ¸ã9ÒÆ
-ÓÆÚ7ýÒ Œ{¥ßüD “TŠ¬SÀ·cÇ>ßÎEOœøu,BßeyX%éùºŒ0”yôÒwè
-6Ö1¶ +m&ÛÙÝ®ÕÈ5¨ ç­ë
-•8]!i_õójN…$ÒBXÏZ.„åO² õ[ üZs²< lXL[]FRs²kž/ûE vKaŽOdï]j®5 ã’µŽ`÷}Uà­r”§Ù³ÀJ&¹œÅ L&›óÙ1© +$³îQ€’DXž²ƒ»ÝÄ ü^§PNízŒ—À/Y¸ f«ÄÈ6á¥íºŸJü*DO=©éîEJ
-ŒrÞ¸`¥H£´¦ç›’'„~¾ŠH(å@øùòp· —šÓæ].ûUÑ ë¥fÑJdÝ Ë¬íÑ’A¡"¡ÕÉ+§"Æj³ûÜû,Aܹ
-˜gC(_ ®
-&XwŒSSÐ%Ð̹RDâjYEø
-®#(],Âd{cÚf•ð“"¨åº!^Š*ÒZvÑì,b'€'ñ†t¹ÎɵˆÏ!¿
-ýç>\¶w–¤Ø0éD?Īœ*ÇÄÜ÷Mò–¸tz³=· èËŠ@âªõΘ"÷r¨9šn-Åà%2•CCü11FÖMZíR¬"Ü2+w7Ëä1\XVÖ1x›¢<hÑÝ2"Wµüø‚~SR™vêdÓàŒz*b@ú¡6úU¼–ãÒ¶‚6¸¨²_ÓÑH’ƒ!ÇÒÞ»xßÝ›¥Ý?ÅR-Îè^T-ø )É'^9— ‘Â8yÁ‰›
-l×q^S¨`¡I؇aÇSðÍüdÎÎÅ1Y”)u-ŒxBé ÎÙi¬0{Ÿì›Q3@‰Åo‚ q^
-~ì ÛA ÍKWEåf7%h!ó›õÇ6\ŠPX
-Šî)ú9 ¥VvŠ;ɱbQÔ_|ïJW÷’vÜe·‰4àý{0$èbˈ™NnxÞ18%këñ ¾F©ÇI‰Iô¸Yz*¬ù)@œsx†Ú“Œ«ä 8Ò\.Âós¯P<¢gr¾Îxþ0‘t2’$ÓO!]Ya!ÛòX<´ƒ_!ï'¬…ü.È|«öHâ¦TáK "Ös…‘t2´Á1c_ôZÓMXLÊW~
-“Å)¡¸©Š©:Ç(f÷R˜ùµàFp©Ë å$Íbá±O¨^’r/¤x†·d(¾+Oªz0fZ'Îc/Ò1Ÿm<€+0Î)ç'ª†.ÉSPoa[‚lWuŒko©› ©0&þNÞŒ/qaìpqöS­²qŒ¥-'~NÔ²“ësp8•Ï’UX¸95òÞfp2aQÚsÍ×®A×àÆÜþÐMp)¡îòèIî§u?ióyxg ëËÝ!‰¡\žiw¸DÉ_«{Ü´Žub9±7¾qà6nzö”Ì:Ïò©Â1ƒTL©¥¦»cLî{„¿Ø)%÷ik1.N÷Pć*Õ›ì5½a’ Ợ/‚Ú¦ù´ø~v˜ÐN¬„ Ç]É“Sý\†¥EW1ËüE÷Æ<Ï„?çÿ½)ªX«º
-å¤àïZW ïgÜq[ÜG !EzÈž¯>†’ÆC]ëã1Øb‰¢­§†H4 ùý—ñrIÎä¸ð æ³Ö‚QïÇÒ1Zrë8¼2½ôýý%€fˆWk
-‡)*ÙU$™ñŽ·@[¦[—þ¶ Âù‰ 2†k¹b}EÄ9hJ&6Ùž¾‚£ÜRŸþtfþ+›öçѼV±R=T†zómæeŽ§úÞ _úGÝ@È)!m‡Û°U´{fÇ…<¼
-‘¥%°™¼ŽºU‡ÿÎB@P˜ÀŸçcmwfû°9æC§¾@â¨×~ß?s#Íý27òu#qŸdöõ,.'‡QÐv²xYŸ_:õ9x“ ±•Ôb•a °‰MÀ–¹£1üMG•×ô~
-uÐHƒÐ,ü¡Hªg¬ÒV6åÛ˜ã#„¸ÒhÒZ•Ú×Q7PfŽð°½Æwx Ñh—!óÉV“+’³ýÝò· ΀8$ÉâçÈvq+ÏŒÝàšjgéšb°’IV²£»tBå©h1¶«;£›Å†Ùnë
-é$ ƒ£”˜‹Ÿ„%¤K yUö0ÐVÒDçÕßÕ¤ƒæT/Ná_´}Qé*Ž=ÅÈÈ0§6Ì}¶).)n6ê>£Uä¢*þuûÂ=š ‘#× ­)Fï'„Æ¡gòÂðÿŠé¥ ð„åz}AÄì?K“-—®ç~°r庂}•ñ@8ÞG\Û–‘Æ 9DGµw˜´Ïn‚‡nÐ%ªƒ/Jƒ@Ô᳂˜€;`Ô€L 4) Ä™I4Í
-›wHÌø®
-äªÑÎß1Ÿ1±±\—ÁïmæY‘#X,Š³Øºs‚FAjKtèïuRÍ’)Ñs^‹ÝK¥öïʇUI9Ú‰‰#öÁ­4 JS:¶U-×Q/ Ãl & ®úw>V°^éuŠŒ™åì ÀÊAŒÓ„:Žh³bÁå:AïY -ÛAÈْ٘.&”cŠBq¥ìÒÆ¿v&ÑÞóØKfˆ€ÙBö‘»Êð´¢Ñ
-­%¡û …‹¹ãv«“­c”QÐÓ½—
-¥¨*0f"$=“ðÔƒ9'Ùpà²+ÚØE9ͺ߆J«,ANñžupB°45CA°´ëœ¯˜ú&"…Õýº{JÑ0l&k@ÀV©hÍ"„Fƒ×ìE!Ìz0S¶çU¼Í7V/LÔrÐ$|ò;–>Øg—ÎÓnz¹›¶
-‹bžð¡ŸãŽ¸ ÂÅôy›—¯`\Yl¥/vu„LŒ‘ݾ\6Õ}w‡Ð l½Æ¿·k¹d6grã¤
-ð°Ô«'ëÄ`OyÍéÕÓZãð„l‡ÐW¹ ºòrˆRÆI¦+_+“’³Z—JйËQ¤+3mTÚ\ÓûÝ´öé/­šGHfVó4±˜¹»³Lø øÈ+òôqqXlxŒUï±W¥©­±h›#&n »Ã”‡
-ªiÖ™­êç°0·¯5rD”&-3FÞ2(ÅŠç´a©'òÑrcN.ˆ#úgñ5Âüúq
-÷ÇåáytÒÙÛçŽgS•… Wßþr1dz¶Tקl9.10ǦAÍV†!ö
-# -&­Q€ðɱ0ûçü~UâH=kMt-†Èy­Xë©ë2mÂÖ¡ÍäL?âÓéªj´„t$_/"yÂRÈå@4¢vhR´}Øc¿ËÓÚÉ(õRqÊøy&i±‹áFÞ®“þ~*ÝÒ•úÖ{QP¦KŒI±hŠëûN6aˆÀrÏêçÚ±,ÕÔQv¾“”©Ué½ëNA%“Œ»»ø<psÅ-kE‘…f‚Ù­‘d£ÐqÒI3¶ç·ª|ÆòOû8w ÀäÕ{Àÿóôf‰í’MíºËׯäùE=R=êHžo,Qª Ò>˘šy•ö5»_E-k“±Úø¡Õk|e/&ê£z‚ÐK†édZøʯHAñCÚüÓæ÷‚\|GìrE~e«Öé Š&ÅV]8žëåÛò‰bcP« _ñV_V*àB Öbjmb‡VP2J"Ò¨ ²ªPr—óøÒKv>“‰”ž Æѵ©ì<¦À4¶1<ú
-6(cUJw{95ýÐ
-çáO¢ *ž6ASK²2Ÿ¶NóÏæ„)æ
-}F$ÀÅ^Of=2ëÜ>H§Üs¢šŸ‘ô ž…/—ǧKò3M=SµFye‹^W“Jíèw´ÖºãH]Ä*0Ú“3k(?˜¡™yîÈQtîF7i‰¸Hé›þùÄ4··FNGl$ÂLF+kîb!~QÞÃò™‚^œ ÿ~ ¦ŠÎ•hØÕHFC1Ôæ¹'U‹¦Ü”åÓ ä"!qð0†þp''è|ùU}àÁÔkôƒÜ“îɼ½?Éø.Là,ŠòÎmֲ䄎Dðó*L`¸B¸‘…çéV¡¼0û…4y ¤FdhG-å9çLŠ”®Lq¾S3NÜ––Ž»0x|À’èd=î ñꤓƹü$„®2?Q‰Í’g}I˜dóó‚çûëHf‘©Â]ñ´ç )ôÃ7TÜ3n¯ Ê6NÙfºÉ /´õG&úàǯ>Ðö
-­¾ô夌…ê,ºÝ ‹OÙm‚QL…€õÀc%™ã߬,l¬¢„ ÂI\–ü,;f? \@îÒñ2\›c² êH2À$lR¬C£dÙÁ6É ðº‚U¬Ûɘ–²Pv*o!ëS5·ŽÅ½)ºçŒIëJ0¹ßÒïuAðì~Þ!ò—´ ƒõ*|„å™ k™S—ÕÒÙl,;ä
-fß9)ܪ‚å¼CÈq Á¯B% “qÉâ´ÿï_NÐ}ñy»AÔ[bÅhÀ°½ 5×~Âd›Y”ÏPÌÚhΧËr0Ä©œÍ/ÿžÁ,ˆŠ‘ ,±|YX=ºvÂâ™äª'
-H#*­  Œ@ŽÜˆ­Xx›¢ø®YÉù%®3˜ò¶ø¤’“%”’ù˜{~žÀn)¢Uö·0°Œ…©š Ë>äos®ÁÓ»¥”rTÛçŠÚ–˜Ç~7ù£°Ym½DÔ!ÖÆ0í£ì Aʱ›ô¾:‚|.²êˆ¦žšÒÿ?mXg˜¡L«VÖ­9µ±£bEûQY•–˜¶`.C“£™ˆ[aéµäЩ¹he5…&…ƒ¸y ¥˜Ä!áJNj_Î0IÁ
-n;Ñ·ý¥Ÿ¦rY1lÄ;ÀÄÕböY™Š ¥êÊ0óV Z†Z*‹kxpóYù òNê˜D"¯¸‚ÉÜ'Aþœwò‚Ž×¬|¹'Ý“é0ÒÏß…é…©F°p kß*ºÚ«ðÇ*Lg!¢wH5æ]÷èk©ã5¤ugêòÒ©md­½1=æüä%áøÜgAŒrQV Q$`ä¾Éñ–^n2A`^a¸T_Ô…¿­ö°.à„/ ¤¬3‡‡uA'U>=›ŒÐ®ùÁøIš×A‰© kßp⥩2i—§l¢º½?©ïnƒ² õ–/Ÿ¡õ€e
-×òV
-jDY*Ï9_=[LfeoÛ ÏÖDPQhÈ\´žý ºØ±´‡""Ÿ2©ï‚nžý<ïÏþ£oÏ~û'Ð-É4™}§zNz¸™|–Ò3Å~1åÅõ9INH€ÆGB?RxWwöÍþø9Ý,ùÍà½U“e¯UœxK'IM¿J‚J5úÙQ¿€~9(·<†¬s¸8mZ§
-ÂÕâúŠ"&G&ë+20 }ÚÝb*¼ùp®_þ«ç Í"›âÊh½üÜ"/13 þÈv}|§NÐxŸ1‹¤â0½…qÅÑ;üñjfvÄ,%®á¢_1¿n˜ëŃR+t©®sß]¾–ÉzË/1ÖßÅÜšòôüÐÇ7jä•ÌŸn…ÿ$÷¢å±6mœ·+yÃtEM‡Hß‚©¢ÑØ¢Vëæ2 êb™t*E +ÇJ&· fƒ“µ)çV‹Ô‹±¯Jê\ûSä@yä´*Ës ×ÆÊN©@P]ìÌÖ8,ú‰O-\HÁ´[»ŸÃ ɱÒÃdõ~ÞI nZ©ò«G•÷m¬\å^4-)U0¯6î%¾@~ïT|éƒ,ÝoIˆÛÛí28keå0 ê^Þ¤Œ¿¬“ŸØwÊùÒCi
-l·*1“cÞnB%Ä%Ì×F=@¢QäKlžûåùêÏ„Ù¦·1¶ž1s¿ÒWåª8LjTß´žiLqð~`mo·Y¨
-ø€ò°Ý!_õóÓ¯ ˜ú)7"Ež|dõ…ªû{ú’yËJëâ/ˆD*<²™Ûvzß ÖTÆfÁÍÐ9–µáÂ(_]!|?_!‡Öî jÄ)­ÖýX@
-DÃK\µZÔ‚-‡è›ä‘VSÄ92ŒOkiüùãÊïìYx)bãÛ
-ö ²w¥TùŒÍÏb^-æžÓ!¹§åY ÿrä´øÐ îK³Ìrië¼²7lŽü!ÃkVÌ¿ÝŸ¢°™1a]‹¬¦‹ð#ù³U‡ÅpÅœ/¿½ŸzqËA_ÃÈßèWQçÇÄtAXq,±Ÿ–É/T;OÂ1±HÔ¢ùJª3¸TŽêõFhb+b#~JI,@ÊB=ªgUÂÚ™Ü^¯¼¾Î¡à.ý|ê ¤s¤ãĨ8ÇÒÌÉŒf°‚oЊŸV¼IË º˜‚Zʹ䑹Ú§x”…±fwñ…ÆL=ƒføøðâi—!ÇrðºÏËŸæîçgpãRl±(¹â`u«-èviÃêQãô°—ýr„ªL1ñg^@b¿•ƒV±Ìõ¬ý€*øåÞ¸¤Ö¹†}"ð‹pÖ!"ÊÞÎR¤W$=¢ž’à<ß¡ºŒÏ8W Ã,Æx ¦ªiz:ÞR<iž||
-¦Ðú”åÔ1ÿ+*Œl#PL`0
-diHµÙ®Æ‹à·kÜNRyáˆ4kRj¿1¦Ž2C€ÔNn†ÒK‡¹’¿¶¹”]b,p‚ `â[>¯j¼6O ž‰ÀOMK£\ôÎj¿4™»@Ùj>ÈC~dK¤t
-N[Ž;ê§fP …f),G쩹Ó;XÃûæ
-ÈB({X tÈŽe=#Ž©Á»<9wôë)ìªt%ËÄû <¿Gƒ Ñ¢Ç
-^˜Å¢Þ⤽
-={iT`¯V›ˆU¼:íqkóS"À¢É4r¤hdÛ.͈Ñ˳Õä¬VHò¼Uãgô
-½)'ŸÀÁ¡–¨)’’”Ÿ¡ÔÇCý MGñ9cE-ºÁœ¤Ü‹¼ºb*h“æ?×ôÄN´*áÒò»¤ÿýÝ×úô׿~h4‹!oíù§våü‘†PÚ·ôöŸ™ËÈdçÈýÖõºÞ;ÊCÓYœ a2J…â’wzýºº1²²ÂCñmôùs ïÜé×vÁüûÇ_ÿÝ51Ž}¿n̦h¡?Bú£?Aqþ_¯X Z=íß#׫
-e:¡+®Ë¾ƒÍ‘aØù^¹Ó:[¢@h ¦Œ¯%- ~‰ÎS ¶ÃÒK\bz7¤Tb¤b[©LØ$=UB:ŸRÌ0asˆFC`FΕI9¬@C«A@„e"1ÁÒ!RW‰K½AâS2ô¹_^îçÐ`ÞÄöæ@Z®Œð’t9d¢¡²9ÂnJ›j©
-P%ü´gSÕ!Àjº‘©8§K9ØTˆÃÑú"—7;C3>œGt3±M…™’Ï—¸+ÞHžAŠ¬A™´z€¬Ï[Û¢€`ƈIæ¸n©‹s$}[òÅ¿¦UJd%„áFܘQÄ¡Æš-ÎÙÁ—,1Âí¸,þ®D‡ˆ[>+j«ŸŸú
-— ‰Ò`>ç4ÛšCºq¿¥—~- \JJ_¶>ë7ª%<Ø› ˜¥tÔEÿB0ø‹‹óýÆ­i×^óÊ¿Hð‹À iÃ|uŽ†Šn1Œç[ø);¦ªMC‚´)t/(Æç
-n"ÊÙã¤d‚ÄÁ¯ÃïÄ£ˆ`vê—sâ##Í@za4 ú?Š#`Ò3cùeZCüÅ@1L!2ámK0?JŠÀB¹ÍÁ3@/(Ãq ¡HPÅ°‰«Äèù-y—CÆ%VsRÑ
-H_í(dUùmÉŠˆoΆ·¢ï‡"}ºMñI-G©×¹"cyˆ¼
-"n[’ù;43!¥+j’¦M×zè3 9xØî%ðrÂêÆð©$©ä8Hï„GÌi‘±‚D³Š‹Kéhy`bÁ¦8V£=•ðÌ"Ã?' ‘Kåë +²¶k" ñ&…†c›|TÐ{Ð/_â%UÒÂ+bà/«{MSºÅàÀzmãPôíE²ÿ7˜â>ŲDrÿw »€ïË%xâ½;*áü˼|ïX/vH¡±;Eð8ÐP/ß™SùÂ0K`C„—$FO‘Ä?Ç£øfñÑXþû¡h¢Ù<”ek~–‰Œe Ü=‚
-ª>°’y—ÐÈW±Õã›ìwÄ{—cKc}/Ÿ¼<踻wPV %
-¬iß¼BùžkÏK“=‚yˆ{»Gùëº
-˜"&y’Æä™»F#Mxøžâ ýE¶jlcF :7dW·T¸«H¥×8 @áùr®›$sEÝir$û;$—4 ¶búeà –¼â¬wvÈ€KÊeû<%ÜÖ°\'NBRÈlj´…¿CÝ4Xõ¯À0MfÓϹ~(‰ó\ñé#?kÈ«ì/Ìo5Îapóv¬R‹nr¶¹û›­¢Yä龌ˆ,™„8©aqv2螘d”‡&½ÚL nž 2]ƒÞYó£.§„$Ï:/%~Ô”ùã3 ëé;ˈ—¨QÀK€Þ ¶`G/D| œW‘+¸ÿá¢\±Y-Ž¢U¨´ý¬InGê h0[e»„-`¨O_ð®Hcgœ$‹Ô´¼ˆø’P‹šwâ¤d4Ɔ“˜îø@Ìípd¿1öe@“Gó~ŽâM±¥†ì!“¼9<A ‚¿¦¼†=”?0„N¸õ>êÿòÍßPSÚÔ”•pú”Õä#c\D“BofÊ:BŽ‘ô9>k®
-¦ƒØÉ&ûÀ5Áš*Žø„­á0j<T
-ö ›ì‹'Ÿ¦Ai#€Ú:=C±7Á§¯Aæ`µÓðÜÙ¥4iñZ[»BÚ¨6@Þ_5´F(JØWÜͤkÉOÂ¥¢?H!ܹ¿ƒ¨õ.Íj`1¡Ì8#š»âj&xN¯}O¢V9Nb…„VmÄÓ:`—î^%º¼™ärƒ¹( Ò…’í¡híNfÄQE­‚@`:“r
-‡ó²Z8D6æ.˜UÅûÓŒD‚½h-CˆqÃå:(]øv’úO~ªôÎ?#èB9žbÑaÑ0
-±á$ÀéEÔxÉ„·Ø`ýH ÜÛ­ý¢ÃpŽÄ›“Wù¼3*ëhå>|è˜A©ãµ°Ÿ%Ž/š7)RË|úV¡k ËómÀ!l2ªüôª,v•Î
-Q^„õÂöÁXÕ¡ ·6y¨–¢D y(y Ì€•´£ä¿™&œâ«Á` k|¿tò¬}N‘.ƒ.ƒèG£²°PP/%_…Ùá0k™ñ Αžâb=_ý0F
-êÔ§ºk•è ëÊéE«Rš"ÁÞNØ­±g(ï¨õ°0ßG á:0Ü¥l¬Cü)á Y[¸,¬\3ê%³Šß §õ4Í$²ïR¯îàêÊZpu²n E¾0ÐáÀda€†ë"v]®‘äêW™o¿)dÇõ¹_ñÃ…"`„’ãJò ›–;£æ9´þÍ‹Wµ˜CïÈŠi¾a‚¯2
-z‡ü$íà|êµ™ÆQ’\Ôuú£ø[m×à¹ÚWQR)ìHŽõ ƒÊû;r< ±*¨ŸK^xÿϯSQߊ†Ù`%6DO5,0%µóY8`lmc|,M}(AG6K–ÚŠ—+ùe%œì®®€ pCúôï µ=!4óN4¯¶ÞpÒ•=¥j‚œEm%2΢;VýÆL’í
-Xkëw ,ÛÑκj²nÜoy *3d¼?CD÷Ù鸌.€„6ùò¿dƒXéC…„/2˜öô™1.†Ýq”˜íN[î h#ч.üÅŽ:l>Š°¸’·¯À †FWD*@Ä'ÓÅzûaƒµG¤ûí}GF,ÔÒÞ}c4|L!B%øΕ¯<“ãå]¹]OV"àŸf߉a6è,ò‡‘)!)ÆçGë„ |£÷o jm5 þ3Ë&ôq¸ >•öV LÐñë?Ÿï›Ê_ä7î«Ãn”CElÂ;ÌßÃ%…"­ì(Y,2Öã$¥WF›ãPâG©1È)6Ÿ¿S¾4É<$Dq›|³¨º“R#ä@zŸ‡Lå$Úå¦Å‘wªÒH&ß^qTãoúÐ
-¤¿¦²ÇDèñ¨Ì'ù(`GìÜcû´aä†SQ¸ÞIƒàq49猹‚ogXZxÕÀŠë€ªÄÒà¹ü>ÔCv µóæTáAí•œ½èƒÀÂ1NOe§ %Ÿæð£KÚrz“ßlæ¹ÉP³\[é1Ïv´áØ¥âF“46ôx‡¥ÚaÒvŒÇoË€´fè$‹gû8¶Ž”Žèš¥êÛIuU—ú/ãe’d¹ Ñø*¤8¯½­[8«îûoýR"äÚWCÈ|È!¿þñ7[U,\›kâŒá?Qþ·D ªr*X%ÙPð}oD‡–-˜ nö=·ã U ‘½(5Y( íȤÊååí¦À`¾2SgùTãm5¾À)Š’î7BùHô¾¾³Ý">(LY’ñ8›ÇQàÔSQ ¨¢=‰l#êþÛN gQŒã"W‰ÇéÂatÁ”™ Êé>R49”¸9;t¤ƒ^µëk0
-¨Ô»ªˆ¡ÕË ë¼µ­ÖehòÄPÑ(Þ‰OIÇGŽØ˜qm˜V ¶@Ìi'Ì‘U“n¯ŒTï¯ep²NÖÄ“åmŸ£\¬–9ˆˆ·×¨
-!§S†V))—B$Á¥ñî~\ãì‹B$Á§™¸tÛP"\.TR²CŒ'…HÒˆnò%ß ²PHË€„=ÝIü‚ð¥é‡a^5Ñ!Õ§©$àáÃCøRb©ÉÞ¾ò(x}‰í:àN^z7g^!$ð2Üy$]t!ÏÞqÉò¯7¯BVê(éL¶ÕbdS#)nÌÇ^ òÖ¼MÐ%ˆc{ˆA8À ¸#t! æB\ßH ‹R/QS£l €èó~üiÇ(è
-*R½íóÏÄKãÑðÉ<vÑ&DŒ1ÞÕá‹££h´âIæVø9¿U’ãF‡'PŸµ.â½ÕTy.q¥P‰5ÝÚQË:j^|ƒêäý[!áèQ(¤£¬
-H‰”—Krd·DW =Ô\ ’ãöлp„GêýOßÁ%X¶¤[ƒçp·­RA‰D¢»ëèÚc<þÐÞžsˆ¹[ŸÍýñׇŸua:dêÿ²nÚ»›˜éÅÓ£Í9[7»}Þ‚ÆSuöÙ›™ŒÁIÿ|èãÏ„Ú³™:ß”±"¡ý¹šE(Ÿôßo@ÃE†4]KõqA|õ¥­GŸÁ•tùpÒ ÑÆjSemHS¾Ô"x°>þÞ‘\F[ÒÇ°¶AÃ̺†Æ>†?
-±V‘´­à:«Ë¹‹ÎPU’þ”PÃ× 1'’Ú˜"×Nä6º7™S*)Ð)3š´‚hkd•B©'DŸ‹ç\¯½
-KEr¿Ø¡
-oŠóTSzS’*ÃõD2¡]FL—:F—ÍÕ‚?§­­sŽb¨«´9”ãÈĆdÁI ½Rü#êêPBÇ<¡dÍ€²Í†×hðÑÆš}Ÿ#ÓûòÆ{5C—]Öhç7äÖàXç¯P_A‘ ¢½-=çh³I;p!ÛHR¯L±Çm㙹3Ñì’W¥x¸û‹”^9ù¤{ëQpbú„¸›ãIBYòÀÃoù÷ R¡ 4½á]ÚxwÎœ] ýxB]Í •æ*Š®€´ŒKÄ©äœNõÓÀ¤2ˆLTrÜÊÖ§‘w-»zóž9½•
-Ò‡Jº)¥X'Ð7Å
-Þ‘ªuÊ7Õ¢Nm¢ÊÃG›·âOÔªuTˆ¿ÄBte5Aܤ=î„8žd1
-n«óòMСý²µ_SÅ©$ÛM³ž|s U©`kk?ÌP’†Te“üm~!Ðȉ<çнü¨èÙa2r‚ -ZrCîëâêçù+'rÒȳF'DåîdòqAf›LÀ勃ó¹:¤4åS7äzTÎÑØNðÑ©M;,•gdŠœ µ:¡kt¬1Û>M„(ÓFÓ Jà —ڪ˴”ÄÖUÔ6„k. Z„ïžP# KÇQ_Go’Ú÷9™Zv&ý/ n>‘3”tC vq=¾:7„z3.x©¦¨;Ǩd0Ž¸á Ù$x©÷m Ð ~¢ž­m›|ÀURýU«œ<ÅP£‚aph*†e¯Š/Ïà'7-ée)®ÚÀm$¸sÍ“‘žj•¯Û§d¸4å«sz^ ­¢^ÁXÑî7#:É
-'9ëí9‹Geƒêë6¶è-¦ÁŒò'’ODÛºôíÂGt&²Åa•>žì}ö˜Õ£´%ÚŠVÉ<Ù!ÈůåŤK?¾Ò€^×
-¸ï‰ôÔ™¯“ùIWû›sˆÃ\$7 ˆw4Y±’×oC9ÉÄs¥+®cH
-s“<¯BˆåÌ·b:˜ÊÏ´ïÒW¡~€0Ûž2Ý‹ò7C~ù2½yÔÐç­‡æÒŒ~¥É0EÑtKh¢] Ìb&aŒuklÇÕS !°üR5Þ R·¦Ÿšã³^feºúLQØRw |€m”3=è æq–øR‘¾ÍŸç0>P9Ã/ɱ0ѳ1qB}”¨Ïti’ÃìÐÝS%g¼fÃÈöà¨vr“ @ð¡i ÇÂb_¼BéðNôß
-@gvaúÕ3P'’ÓÅÖ)%É_‚­µ£úÁ1èÿVUÁÍ0Æk0`
-µ®Ž¢_ßHÒMþ˜Ïý°$º0Ô_xÎÚ-~ŒULååw¥r‘HD—q;Ÿ³ÞBöׂ•Ž %ö*'yJVGêRM_ü¿f„nIFB÷ÕogYËým¥9L-~Éþ×Ùð ôù4’è3E¥ÙíŒB5¡&nôÍúÀ«3À­œô¯‰7'éáŸÓ4’õîôçkF{¤_Å
-ÒõtšÌ¶‰|ȃv&âDÊ0¡SÆ‹ŒwªgnâÔå*òé*+¸oÚßA8QA5Æ¿‘ØéôZý
-#47®zŸ'!
-šŽ\ÆìÍ9YþM”5n!¨1ÿ–åæÓ^/ÿ
-bD3«X^Qqúõó 0N4¶cYN.Æ­^¾ÕZ)C¸˜‚ˆXö¦¾Ö&ŽÀa´=ÎËÑ…`èþãÔ1 jÉïís„È}ÖÞ7Níï&Ecìbºn†Cmœ™9ƒ½rE¢ÓÏÈ;Ó°ÀÒZØ’é8‰ZbX
-ÙÑèYL§ÔLE^¹—Àõ”œt BÂIáGO±G' • L-:z%J{8,Ò`¹ÙeE¨#˜Ìp†bÜ@~}üó¡??ÒmãÎÑQhQÆ!í’¦†°<=~¿1#wå9éçk|µüBÏ^Âbà^¦“e$¾ i
-p­ÿ{=?A’#5“²:šdOŽ­KáZ6¿¦l7Ûü¢iùÑf…ÂÃà}<7Ä ¡¯ø=¹M×W¡Ì02é7Ï9Ⓣµ²"ºÏ¡\Lt¯E
-! ú€3݉ô˜óÝç7¦ªù3 5´Ë_ˆk0mT Íã‚ Ä6/>ˆæž:Rýdž°g1QQÖìjbFQ—«C‚nŒ¼t¦BCóÁmšr„ôÊ »õìNb ’$ôüÛN„Y l`á;;\9í’¦wyÕ“zsHP²À:Ò>¦{n{r±Mfë4¥¿|!éÅç||ó´^¼Í¯z‘ø¼\îƒ.ý½AžS:Ö4
-”^»åã®öb׮ű‹
-‡"¹zú&sJÏÊ žÖ¸‘´ZÌ#tÄOÝ!æ6Çïñ˜ž6H÷9W)RÂŽÄ eÖéÝvåÙ¸“‚Àz.Ì
-Êìž«H]P©³6UÚÅ•†,e6ƒ.4ëƒp)RÁ¼îûR‚ÐÁ8ÑÒÓ«ÿÚ¼_Yа §~ª²¸À»L+†Dw<„sÙ•I=Gßk¥Lãt®ˆX ”Rç û!âÛÔ>!C’ÌC¶&ˆohXïö»ýSÎ]²ô¾ÏÑÆæ]¨¶B¬RFy¤O³©f T*;è€h
-@mq²®1Û,öÝAls5l„ç$HwH¥ä2ë¼DBÈK\ÑüS´Ì\ÀÒZ•­Ò´ð ?ã©qG…‘¬ÁÀ'2½‡)àÃ*¡ )<Mz9Oöý– ©{7`Ì‹ IšÍO°Ç&€«HD–=oL4Õ°Œh½"¦–L»K#ªžM÷ÅzPW«ßåU£G”½`«¦¤q2ÀSò M2æ½Ô»Y¼/’ñ—ÛíD|Ft3i2îõl'¨)²SÊMБ¾g‹Ò´^ÆÎ&¸–¿È„šyvö)Áɱ¼§Œ“:þ­âìÂØ+LHŠø!¯ëœ,%…½"ˆ–ªNt²å7!§ÈÂÑŽ «Væ0Z”¡Œ=È™“¡N¢Y¯…ž@5"jnOýlEˆ8¦Dä|݇Š§[0÷‚©ª•scñUUK‰™1‡H]7mcrÈ"se‰'¼0GŠÏчû‘²Ð4ô}Ž°–ÍBŒ‚2
-b<¦Öv…‘‡Ú
-!ß e­ê KßÆ>/iš9„¥»áìÇÎò¥ÅÎH‹©}ñ1>p««ß+Á =ã]Ð4h".ÓWÒ‡#^¤Åÿ
-z¹îÞï¾?›IA©g‰ð‡Ô±9h@†É‰O%Ä¢HÒšy
-„ie=£èÈZ‘ê“9¦Ó-DXD@æÝ!Rx‘Ž²Äž‹ŠÝ"%¬_r’L³$¦ç+Ëšæ'ƒJhCAuÎ÷j_§P^îçiÖÙû$ÖŽÁÝzßÉè&åØÄÛvŽñÝÂ9.ÉÕ%KÏÿ`ù~Ù9eÐ;P›—ܧ~T£ân&ÝÇÆÂ<&\“ sç­ÚuQQ³
-ÒˆMx¼qàfnp‰ ÷#¹Ä-i22Êœ‰‡ôHsYK³— "µ Ÿã1„g¦A¦‡ô¾„xA—B¡e€Æã9día^OÃ(ϱÛó-,`.èÖ :Ä!
-BEu9„9Á&å\Ä<¦ ytŠ¯Jp¥kEJ’üEXŸófpQzB)(¸Ö‡Í4R›ú.ýÇ·Ÿ~û>~þýÛO}c¾&)¸bHº·‹ƒ–^ä#}üùÄÑ Žc)ê‚’‚º`ñ¼C‚ÄÌÏAq‡Ä 9Ñz\ÇYÈ‚!™·Q+裵 ÉpPHYU—BØç°Ù°¾iùBp$´Ó>‚Ú
-¬2`ÑnB|O•¶Ÿ2gç
-t Êܺ4/Nú‰ø¯ÈéÜ6ê%Ä7½4ü±¹yÌËôÝçô6ÅïµyÛ…÷ÿûNi ë:Åô¾'§#m"Ú{õn‚J+"Î LüØ!€¨l]ŠÞ‘>ÙNqî´>…ÅèIŠa'ßÁb
-š•ù=™SÜ¢4Ш”‘ºP¨D?ÄAtÑqLÆCHCû±X)§ðÏ>¼ aàs†£ä}à!^K½º~˜ 9!F.8o S"g5ŒcÐæå‚I
-³Ž/uÍFY6‘á>Ddå6׸D3ÑÓ¤–”†‚¶ ¤
-’¤Ò5ÐWD6ÇÔ€‹e ùBE´! ‹Ì0‘“„íTìO¥ÿ¼M«P±gɇLBÐcæÌfïdº÷UãSftáMµ¢J” ©õ‡`Žfv¡Ò¹é->$-¦‘Dö‹¡3H†ï‹5úMÀÚZÞ'Usþåjº§Ö¡Ð®v'T†–§3Á1UÂDB}ÜQk¨sÔ ¢š"ÞÊXµ÷ˆ3À j§PLúb:ú¥ÒÀ¢³ƒ>öãÈ,^T Ͻ°Ö 9‰žº :ŽIû±hv+ÔVx€©„ÛC œ3ªÀÓÆFžÛ*ìGZGì úî ÞWkìyxb 'œ& òzqZˆÑ΂¥`¾‘ƒÙû†aŒeÛ= ü(»Ôü³oŒ
-û>‘ЖéR;`eÐHï}üR–¤¥a\=8®Ö‡N~ ñÈ
-E|*ú'lqÊQER†÷•_<G¼è5r3L‡xµ/úVÔ?–§°§¥†‰Í‹Ìßa³E9Øög؈Œ0>¹Ø4!ìLuF‰Í½J½BÌ»C:é¯Û««œVÒ<´i=\aˆä…dÛòáÍ5vŒÈÛ„D–5¬t7Ì8ã;fÝ $T$}ì?w!zì û»-ò½`‚Z>¸–»¨ÃÇúêiÉ´›ö}}ziCÕð­)@‚¬APä%ìËxœ –;yid×±ËrÉ ÂÁþ†ð8kSúü‰£Zñoˆ*§ÈȼMK†!g~ƒ»|/lJ³7´žš#îÉMÑ „€ZS8ƒf~NM…ؼ¬L7«o¬ £wH±»ä¢/Ï]dÍÝêæÒ(ie5ˆâó6âVŠWö}Ïâ÷/¿äÖ5ÈÉvB”Ií’²Æ2<€ØW…ˆ×|àQÅ,ýä£Í8_•EîwÄ+S÷óFð…nûëL=—ýýª !(;÷f–ý´)-E6Qa]¶qÒ§"wÌs°³ÊÍfP$CÅì¨r dGYɵŸÊðÿ±7!äàäÁÕvRŠÖ‚è
-AæÅÙMÓ„?`²¬èctr.1ÜAÔ›$í›^0â?ÑÆ:†j6qËDí‚嘓[Fc©ù‚ð ÖÁÐʉ@*è’¦v²<¶…†zŸæ›™£/ƒY¸‹\7]ƒTR5gÇÐ;qz}œ@øNF—`Ä–m R´;AŒŠ«eJÖàÑFÐ0ÛÅ3IX¡“
-ÓŽDcÀ÷eÄÑ«ãrœú,ê"³†ØÌ!© ºf^-nE[fk:ר`
-´+‰ÀNžl t­à/,¶àâfN!-ûäÉ—`€ÂzÌ%ÈmõÄzKÎMZæòCÞª¬Å?ÃÊ9¤‰7è‚iEŒ|öÄPîMÇ›°T>¤Žw{8BŒ+5†M br&ø‘Zög£,€Ͷ‡Á+²)0Óæ)vÉ’öý^Ä*ÓŠ­»QM‚„¾p¿#'Æþà„²Ž[›Ü•â$7„ò¦ªû ˆ ÛX¥T™Ãü®
-¦cqÁFY݆Ѳ¸ ƒýÄ6eì5Ui m®d²ýœÐÓjýüÉþÞ”ÕË›2Þ™€ºæ¼‘žèÝËteùÒãëù¡Ôˆà´qM;K”¢ÝöcÐe.>Ž×ýt±ŸŸ7L~ƒœl³%b@:^‰ËÛ-µ´W„‘]ìCÝK?2ãQ¢ó{?b@­–Ý}~1CGœ2Ö&=3ÈéÆ_56¸
-çz€ü^5d/ÈÈ! ãîñœ ëãñšÑäb•Òò܉kx?µëÄ4]9—xÁtä;`PÉë²(‘¥ã쉨 ÖŒjá¹/qC!Â;<RQj„…{ÓF0¡ˆvÅЧ±
-p¸‹Ò·µ´+³|ʾïÉúƒµû¹Z—ìsù¾ºÎI|DÊ8ñ²J¥Êv¹æ£Ì‘éå딲°Ü,ýtš¾—ë~º(Âq²® W—ŒUÌëM(ü.k”Æ—c¾(ÕT¸N+“îÛIòzÝôù“7ùÓ±Áð†ÙÅœ^5ŸŽG9ÿÇÎg@ǧ_¯;>ýoošOŸñË0 ,]<Ø}‰? DÖc+“æN˜‰Àâ09é!$ÿW‰ éÐ^Ž¹LÇ9G}” à~çH«9 íx6¿ƒp-ìwì îmBH&e»î5äRÒJ¨@ð{Pâ­¤÷:R¯Ù,ë˜kwU[o–…Â[¹„^@Ÿ^„§Ç’ÅР Á‰IRÝÇ@¬®ìR“W‡œ…‡G¢¦ó"…£É«+ÉYû5å3g¾„¤Õ
-ˆ±Ì%D»#PRÛj’¯Çþ($Ü@¬jMuXPâ¾êD¬a É…ûªñ´]âîºJ¿XfÓëÁ±á,ZóF@Y²K\þŒO§o
-&oîP;ìíð†R?Î…*8²~ÇÀï‰üçÃâ<­W–àróç‘×mrÕÁMØŒC,ä%9ͤ®|^¾$ø ¤_ÝßDLÚx-×Ç
-îÅÔyv|ÙßOÒ Ê’¹}“ãtu}«‰í(Ñq§˜kæqÞ‹³h±†kÏË!ˆ3ïg5 ×»0ò·&œ<ìDžG©Ì_¢Èn<Ø<M™O»])ñ8•Ó:'2×™öpSð
-ÊæàPõ-&Ú–ö-D”©ï<µXGdÒŽ8zÕ0Ö”›¥îŸÃÌ1¼ä̺E~¨Ñ‚'Oñ¼eˆ++Ê„} ¥ôþv2Cgü&&‘Šjkr…„áÌmÀ w¢ôú8EàŽ’Ïl+žž@ج £—Zw!µ!MÇi6O=|ñ¡ ë‚È%é'¸ÁNR*ÎP=Ø›ù'DÒ“ŸB}ÝÌÇW‡œjD-h¾!©3ßd·Q½:X²jBÏúâW1F¤ÚÒl¥ÓÓ9Qïkø«¸„]ð= èc^ÚFÀ ¡åѾ:Ž€ 1–û†Ò‚¨‰a.~¨J—µñSæF⯨{9#à"ÁßJvÞ}P
-_ÌøŒéD¯ ÏPAdð¸teßÅD²I0\’©JƒÆv.ú[_J|5‡þÝ8s\1z–—íc©uL#ý+¶N!á@"–Ns‰4jIæ’}êsάó7TXv+㌗9’%·EWÐ{(›F¦‡ÁTf¹\C–ªMí_ç_ªL$õIF°«ãxÃÆP†fÔf’„c2‹÷Ii«^0 ¡
-W}s›ñførŒÀ8@¶£¥€ÄÛó9š
-¾SöÉÂV Q-‚ä<‰©ÀñðÁL®WF_Ï"rË:¦ðBL:µ³á>@XyÆÿÒ·-b5Åê4"nnúúz
-‘á!Œ¬?J<Œ–àœÄyÙ¡^^ɘcÕ›Twhv‰2KÃWœiõè¡—º™{šû¸Zu#„¤;'i*dÃsJ¯©ðÐ5›_Å ¡|¹Sžâ{¥*tíºråÒ²Á¾3
->ð„éîÅü­ªY˜®½å¬Þ#Ò?)Ü“ÕÀÕ}ƒžA=ßµŠ"CÒ´ö
-—Õw›C
-ÿ2IÞÒmÂ
-rœÙ¹•ß>1ˆuŠ]SSŸŽ1./gw@ɉO‰JcNøb‘Œ¼Åñºh &ƒOÏýål$g'ò[t6¿9ÌÖ‚œ(Ûßòä›Sý}ÚŒÖFšÀ+ ^ø^#†ޔ߶ihO ð‡†²çå¶út7<4o ±+€"£;B1ŸÅYágÃ
-_ßå]1P |ÁëçOáù¸$¤®òð$v #Àmû¦[iÒœa‡Þ}œ %3I;Úõ âWÝ~?ç66÷¯¹ßéU×)f£;"‘çoW¡hŸ3½Jùñ­Q¯ÅëHh,=cSÄÚ{›
-#R—O¨f‚–¶)­NÍ ²e_…{Oô¥É™LˆšT¸øÓÉp,8$Ÿ÷EM.@WÓµ ‚~Œ`·N©â†;ÑO¥ „8GsHlòC”// h\¾@ÒGz§0å &±+õêo2ŠNq-HÕ˜u}]¶K70Ó8ß•  aŒ,¥û1¼ÒÄ×Í·ŸÂ`Ke¨£?ªŠ ‰83w
-ƒNS:ïÛ Æ)“ºüQüÌGß:|?WbÅ9ê{i±qË IÄ1qö¾i¶“W¶=Æ5£JÈ>aÒ‹s£
-4 ¦ÀD¾uƒÀ‚aôÄj¶×MË8KþXãÃߎ*!ñBóÅ<†Xj÷ˇ91ÆZ˜  A„b²nû’ dcA«WHª|ˆCJ`‡EÉö4ÃŒ3í9l8Fv¹Ã{³ŠZì¢Ò™yWá]¬r“¤ÖMÑdŸË‚@cØF2“Xf^((U³_§(Ÿ‰EÖ1-ëŒØðÕ‚
-äÊS}ÝT5’Ê&‡d^
-Úâ…
-ó†+z²æ=·zÄŒ~Îúg&ª
-Ÿ¬¼™èã@&>m0íÓ¼Æ;ÄònXüñ£˜Y~9qfãé;\†fçÅwð÷\‡¢9‘.J‡Ýë#.ó¬œHá˜!CœÞO _Ù*hîÌ&ô˜•MÊCl*»UÌ1ÏKcüWÓ˜†E &z1Ë äîw7‹¡À”û¼s•®—妊ÿÇ(1LÝß·@ÉLò2·¤
-L8@êQ׈þ
-òàHÁ ›J
-Ù¦›_EŒDwáq¯¾Ð±–݉¸Í{Y¹Á‡ÏXOU‘•î5ÎM.#Lð¶VÇ(VœÒËø<¬ú
-á` d
-îƒóeð€0øì{”Ý(v®ÖÇVíoÄïÿþ1¦Ê¸;.^Vx!eï¢ýüï‘´’†¹¸ °Bãq¸rq1@Ö¯„ËÎ’e(Ã*¥Sf@ÒîŽi’¼ûÑÄgüÛY â5¬WÛ
-üÈVSmïhâ ÷‰AŸ+žž è$¢´ó*†(Ù!(™b>º÷qù/iå‹™ô£:¯XšíêOò=Z#îy¾ÓŠÖ¶û•¹ Ã?$jã@FžZlæ=\}Rè%KGáÄä±Ìç·¯B현QQ6"ÅE,a¹ü
- DCšüoñ±Á>4ô‰šŽq¾Ã?ÓÌÔ[÷ùñA(hVn$PÞˆ ·ã¾A·ÕD˜a>Œìý=EÅ’.˜#µè븿ÁíØ~¹Dć
-. èXQ°Q
-È›ÈAËÉ7r=Úñê¸D–Eß¾ý‘=Ï Ãìí ÁØ *ð qêé$‘ |‹²„§‹;Лè˜ ³&v4­B%Ÿ$ʈ[•{õú ‚/È¥<@þߤÜ_õúçžþk[:6OJèǤi\yñ1<ÐZµ!ªøi1ª1»lPw‹KHÃ.þÊò4Hþ£xVÓ6X€Yø¥ì]Ê>ô•áa| æéGU )@÷ïîðÛ(/m;YÅ.æëN~2lî"I¬8
-5µÜüÆbiò2¨>ÓDŽLñ„ÜB?´Â;ÛLÆ_†¿xˆŽ€àâ()Bvš4#r¾£ÉÂ!.w $K’€v죘'ö¿ˆç÷ï°ü(6\ëꦫÊ^(j{
-©Uô@BlŠýòò anåˆðv¯‰E2uëÂ>ªì
-€„o ÐuŽ˜à·—.£ ˜àá{×G¹ôj'8
-Ô·˜ãJ¦IßÎi¨Ì§€g1YMoxÂv \ÀÌ;[©jUfnâéüuãQMF&ÚYázý éþ.Æ‚!èŠÅMg–·è“Ž›CX:úk|&
-hâZUƒïúQü F]ãÊ&@Æãöé#JœàÍ8-Ÿ
-XÏD°|D™uZ´K§bö`eÙ¢‚0WⳄ§³S0 Bò«ðÁÞwÆ=>¬ÝÄ7ëæ®øòðÝp*¶Ry¸ qq©uA¡ßO¸p’†¯O|T²¡ÏDÓjá->ª B6ŒÕYù©Gx|F-eëzÝz±óMså¦XE,Áqü,ŸŽ¡J óæý^ã¨)qÅ•ŒäOJ8 6\þ1³ÅŒ5x—Ÿ @®r¡Ñœ÷:çÙ}nZÉqŒ†*á…O«Ñ=89L¯îÛ$òjV¥Ì‡âÂnÀ-4)zýÞ0‹Žì¯$Ø’
-wˆ<+1Kõ[qRe´§ …|&eIïs7ñD¨œž‚Ý@Ï18ÍÄ€Ó¨&£·!ør ‰að_AÃÅ6ÃÚ9†ŒÇË«L‘/ÄÔa(Úé÷óÌ^\(SJScîåÓè®iJb±µX&>ƒ¢ÎæF.ÍD·KµÉx„Õ!lV£zÉË÷Ezý¸ ™”ôâ[Uϸ<#Îh-?‰Ž!Ó
-DAwXX#$…žRø”m>¾¦ozezIU©Ü% m] ŸË.aCÂû`ŠLÍè®=ЦO Èc×Ð0òFüÇKÃ,©JB]<Æ gväÏwzt¥3Ï()S–eç o¹+äò”¥ \Ñ°ÛÌ.T#NA”;—C|>ÓW=<ñióU?É4%Ǭy´Cõ¤9¾³ÊDúælæ­pÈW·k«nÁƒ–³§ )žÍAPf6+,yËñWy;$wñdÈ“?|9(~þåe’$ÉCÑèu‚6ÎÃZÛº…Ìz•uÿm¿O®
-wz+¥M)#~p
-þ"¿W.¡ ©!\Ë— Ò fÇf‚Xm䆇CÐç„ŒŸ³ØÀÍg‰Š·PI9­±L³Í¤ÄsOѬ=F úNo…£éÛú](Å€L2oVƒm{)G ÞþТ7¢V¬åŒ`´Ðø‹pmtÈ|øÈHE[…]³†°˜@e q“ÛÈÝ‚Ch‹h¬ua‘eUž»§£|4„ƒdNP‘„Ûøq
-ôOfÌUÑQÎ)f©Šçr¼¶º 5+óYdb]à—v#êa;(:>…¸„¸ë¨ùªÒHƒ´‰Ñn«ËB14Pê ­¸2GìäJ|îÄ äBÇZº¬Ë^beøe÷!@$pÆ­Ú@öõÿPl/W‡ÃBÈMàÄvsìv˜ÑÙ6üŠp5w/XRâp¹á…*üFŒ¢¡‡@è@'F¨až‚í4Ô½ƒ”‹1ù ™÷u–™0·ÒkI3¯ô»›·„‰$ƒÆŽÑwb¤G¨(™çC&©
-³Û’‰Æ’0¥¨f˜¢1;IööÈÒmûšª¹¶j]>ßÜÈŠñ ¯réÝšy<<ªç€d™¡„òAÿhWŒ›Áöÿe³,·¨7`÷}/ÚM¡•°•èì_ˆ™û5ûñ‰ùù‚ùçŸ{3Å¢å¬k}…<$Ÿ
-”‘HBEWü`  Áµ¹µ=¢ß¶ÄOF ŽKãõLУ‡Ýþ£·FTú¸/y=¸œšek5¨'È`zº®ŸóbN"´…ÏY&Ü3%aÁrÁ\ì±6ÍFîRSfV
-»–áu=R>â,áìt0ïÕ ‚É­ËýÖÝÓ1½H„Ñn'Ï©À°8m'rœÎapƒ¨M*\Ô»Aäe°Ú6\| –—f%“Wðÿ,„Mt
-Q6 kôi`ÐÊ«h"ESËüùÇ„³N‘$w·'[uníû´­H\ôº/§„[Ës‡àëà™K¼nÍÍ )ÈÊnDôÄor³ˆ¢‹ç‰ ‚½›m5›†ÉúXý”t”b®u
-Ø”—Ò#`·V“Ú3ÁˆëÖ-åîo9dÂq9ûNðTQêB,ö2*†—ßn§)­k6„>¤çÉ) ¶•¬ gVî4l1³¸ÌÕÑ©æë XÀH¼+â‘‹dXè›r€ØV™º¯ÃÄÃœËñr+˜CÃÝDR¾
-§ã£Õ)N%]^!û“~°†Ê  ¡¡ ¼ç4€¸:)˜õh
-¬UÞð>¼
-°=EV ÁqPúì©Œ€Àu¡dƒh†£ßÒTŽ‘
-gÇ%7†Ð¤7 òÎÓÖ¡XÐ9B=’AP&¥Ž:Z> „ ,'’gêôn—¢®˜$;2›Óüè^±[éÝ:ïN³·0¿›œÂv"Ö‘!q=ïË ä-—‰ÿè~b¼
-;³½féådÃüÆ:“ÀÒ—ª¥íÊ2]ªO³Ö™°=#àÃœK©.…­¢ 4ü‚2¾õ( L#­ÏÅó["ªòN<˜;‹œuš)Ü›1ˆI¡ 6{†^`î®Î0±òÄ؉a
-ÓÖ‘ß&À®»ßJŒîdØ·zÑqþƒû‘Õº”0V¾À—ÄKÉ;9RD¨
-¤FyÒkD|CÃÒ¼‹2lœÝå( 4üœƒŸ§äÀ|ʈÓóˆZeÕ¹ÏË´3+¾d%¨H!h¢í0.²ü¦G¢Ÿ‡žD¼ô•LùxpN§Tx2:‡à˜JZ.Š½¯Ó…H^Ä›©;ù¸rW Ÿ`mè³ë(wU•N 3¯ò]4¼¥µDŽƒT\)žÕºB+Žr´j¿^ñj~˜7F%<9ægŒSÑo+ʽ)
-/gÈ·ÒXõÈÌI²#×À
-; „õsš• áԎý×NíK™‘„p$# §Ïå÷*¸ã®Éoe0Z c‰VQÁ¸Òx“‡ÆˆðÄó2œÞÔ¨Æ4Œ´×)È1$E ´f"óhŽlè°ÓT%†™°¼vÞ‰„rzªŸ;O±äxâTÏ)ƒ”v¬¥Ê9J¾™Î_?NE'“GË112ŽýÆÿ©èåEÏ(GIBA˜ÎWÞYN"@Ĩ´K–£†$=oÑmû#ËÕÅ’bã2.YŽ±‡@[æ-ËQD¤åx
-±ä3xl—¤ˆhIg{qöA+ÐÄð­¸÷‚Ǫ­³RD§r·[‘ Í&ƒ=™·!täcɾճ|²€³ý<¦}Éðàj•‡æñVý‹¥}4¡¹¿½N_#Ç2ú˸שÂ1ŸåíËûrÏ@˜l!¥WLÃÒ§ÛŠ~‚‰©ÞÖ½KGG²#ã x
-œR耰¡‡¦m)éŠhWrT€Réî…[Ù¥H5Qç1ö:)ŽFÄâ÷xý¨ÉÛ.ƒ±¢µŠà2ú~?'êSt3ëÃDsªš‘~žF¼ëî¡5¼Ô‘*ÚFO™ðâð{Qæep)$‹)ùy&7MÃ
-èPêíÖ Å@ž-9%ºœˆ~+468_žr+¹îññUÈÛ%˜é0yš,ëkOÍù; ÌÖxh+¶*+–¬eäT\‹TtUPøÞ%›¤Ì– „]Ù§f9×OW1O\µOQù,=hÎx¸€q„ôm<‘…{×Ø/Ó÷­Ä¦GíG™SøZ'éxúVÇù4ÐŽh±½âåRq~ÉQt\bËéø8”4„RZ¼U'¦¤¨-¤«Û¥UeÒPW*ñV=ZNI"2!\,C Âÿr9
- ÎÞ£Y«Fe°â4#î’È Š]è¨ES¥„ù ÝN“†2
-ò°ÞŠñµ]Ÿ­¹a%Ô:c+†G^XÖ!Ö"Y*Ž\œ”ñÔóÜòí7àÎ0ÿ
-¦À¤ë㧊*&JK y}³¨ó•èI–>ÜE}âþÉ°ÖÛ·‹æI7>
-o*ÒSöÍÁKp9ôØ”R»!Fxrq^_2E»±¼ñgNƒÙŒ@À_£•oÕÉ×½Ù©ZIþivÖq0]nlô§‘ùýèÉCÒÔ~±ŸÒÂÁ‹j¾Ú–f'ÉÀ…D=ÌOá‰Y½¡ir%ìÙÜgÕÝô7ÌfÑЦ…g /BeÔR½7´06äŽÜDAÞÊ1¦ôòJ¨r²jÆíCqàSŽ­x+~A:ë¾'¼A`cZi„W[qE Ü”L^±H|xÆšî­& •uæ²Ë€_=už~à#N‰ngM±SÂùku Ú½ä+*_ŠLÃÍŒ°×©ç4D.!Š Î(B¿ì_U=>tï>]F¿+o*¯ø2KtÔDD¯9bß1°Š8¡Ñ‰|š³-/Ay?ú°{?CM L†FÓ«-X ìdA!¤¤…joÞ^h 6{…8`ä&MNª·}£dO’‚m1ðçз›
-届Ø3ì†þ `q‰~b®N¤¬$9}Hù켊(ûRâ[qŽ‰ •jã¾ÆüŒ•;B맑ëák®Ë)°Ë®çmXáË#´²Ñ£;7Æ3˜Ì>¢ßÇY1¥‰'@ë¯ÀÝ¢2ôαÇüC cøãFW—"ÞíöáE(>kݵ2# ÜN†÷©!رj*¨ O‚ê®Xf¬)ÁôÙŠ"–È[v|FPîÜ… g+®Bû¹‡J–¹ <´•k AM.˜_ÔîÏ?Šºt O+iÔvѦŸ¸˜5.EŸE-ë?~¦™nfÜiõÊ##pÐ6dr…]ÒœŒ6g´¬/&eâÚ Cù@W˜y›Å?‹Kc« }8µ(Ê¿%=¢¢#èêU^##‘ojK·TgCƒR÷‘É{U¾cºÖB|€ølúȆ»ø9}+LC¡)Ë¿GãÃ’ERÈÅÛðfn~äQ@PÞ{–šNæ1 #ë¥$¬˜ô'ܲçuèë‘.W”tn»32ÉC¯Óò
-ªn¯´4ˆÁXa–13»‘Qéü**Â0ªOŸÎÌ}7IJ÷@nBTW½ Á#òF¦ù­˜ÕÛ¡c¬X¶ÒKŸ^Ä!-w×à àœ¦„ê&&æ©ø‘{SäBP‚E ³øWí†à®JŽK¦ˆÆ¨òó—àeD±Å§#€(
-葆{9\AäàÔÍB»è|äžœI,6W{I ƒ†¤±|§._àEg¶@¥@Úì¡‚hÐc^&ËL{öÃðE€n¾týíÑ'–ÀШÅû‚‡êP'N²žˆê÷d&ˆSZÁ„ü‹vð2²Q©ŒùR
-Šò ŒÐiºÉcå…ê/IšINí’+£I}P½J<u ¸ÀeL7f§áw ¾ƒÎ´äˆRx~4¤ Ì;‘ ÓHymu³üAwQ’ˆf/aÎ
-~ ,¾‘Y—¼eÙÁÅÌw ­BóNþPˆ
-DhFkð¾Y§¶|+ú|*êÌL.ùx(a´:$?æ
-H‰Œ—A’d9
-DOPwÈ Lš„€u÷²oÑf³Ê¾ÿv_(l*âÿ±ÉE•e¤‡Àqœ/é¡ßCL¦wW±¯‰Ïï9g!½ŸüýëäsEë}™Í¯{ˆŽ¾Ö‘iö‰üØZª¯P}.km­Ö7hiëªyZ×:gt þ´|mˆ5×àÒæí²Ì§…Ž¼ð õò¾øÏÅÁ=œã.Ë‚çk“HôXÚÇŠÞÆ×j’Šebvú)ÐRé"+¼òã“2øð¶æÉrÌîAnæë]³¹µ5†Ö}æ˜6[~t“”j§`¯,O*1ZHœû,±¡“wØy—Š® &ÜÕ¢C‡÷~²£ËÅóuhAb(¹qð EÙL†*÷*ÐhÂÁKäTk…¨õÞÚ¨sõäz}jnÖyom^U•1‡ú å“S9‰*ˆÊôIŽaÇ>'È&D‘õª6ÂÃvOÈúnÉ‘5xšÞ@®Pë»S¨È =Ÿ3V›YR2v®<Z“5‡ËØIÂVƒà£^5á1‡À¦f'”‚j«Cž¨B¨g}upÔ>g M˧Þë6&¤wr•¥…ÐéÆåHÅKA‘Æ—zÜ~6ˆÈKÚrëR,#oCóµ ™|Àu¥UÈgÏ·'5
-âÙ=æÉ0: <&_/÷1¡XsXU/§ý|Mçq²ÏqnL(Øu’Ó•‡ÿ B·Žà+¡G¼Œ †¦h[;”}·f¤ˆƒô°T4“[}mìçʾ¨z¦îø¢gA„Zñ½ýpJêäâ!~Bõ!ª|²ôÅR®éˆàä oƒTï]Æý¨§6Oï}²Ô`Š
- „ÏýéœlßÈ$K±} 9<Kh­º)ß'è×ÍÃ+”Oú @ÖJ Ó&q^¿ ŠÏ›xm•j††Áç!-Ã`×¹ïç„ðïÖyPöð‘®ÈB-ºFÛ¥HérAèFƒqØØ|0Šê6ÍA<ì@óÊI¿éÔŒðtÿ>uÉ| ®¼!&u‡óB=²_mBÌÝy L'Äc`f_ýµS<¯"AŒÂÿ„rÒ¿J¦‡ÍêáPJJŽCË‹‚$¸Cž¾KÁÈà7º¾¥’„9 OM6‘sÀ‹RÍüÒ¡Å0e)íÒá94è¸ ­SR&™Fðà>Ë@àÌB?Önrý¦å%tÜ+Rƒ‘e¼æpÀ~J¨ýtpÇ
-Š± iMEÀËéaŠfN¨¾ó-ˆ]Ð*ÎÁZ KÃüU
-n&|tBy^m%Â6ÝMJHºã 2Òoñ÷CW¡°”iRýî¡s}&ƒÖ)6¬yBŠ'y ¶º!ðEPZÎî’¾<&®ð5F¥%„ÑæUÜ$àé¾êM4(äÓ« )
-nCšõbxwüß|…zr{ešx“y@Vã°¬ååGúÁm–y÷Äß’ÐTI?†Û
-
-uâàª8pÙ d› »ÚÉ^äpô,Tb󙼜Ú# µg°Ù äïM>l1jEÃÈã9hUúÍ 2ÓÞ¤rïì}ðœWå\K:®£Ë=ë›ÃfÊ %w”…ݧÏ)kG2%•>O v ‰‚p=t…V¨_8svN¡+’Õ'IªMý†Ô«ðùùvú%6„Á̦±8[熆„……³Hl)Ý1.ûpBQNæîF*Sa imVv>¤‡t9ˆx½ê‚3£7°Eb¯HÿSqRœÚ'8–Da[`§)Ã…Œ´¨)ÿ›IíÏ%ätA(õb¦D%Û9¥×ØT¸³™š.¿‘Ì"4·%Pø8T4F"Í옱±ÏID·á¥+³Ø QZô«~‰i!hàžÉ1Ó¿Szüݪ1ƒítx-dR‘2ª¬Ù>†Æf9…dÑ7-PBáO$$«´NA’¸¬$,„&'RnœlÄ«$32À9µÝ÷9+0µˆ6¾ÈŠ„Cr|ýŒ[<T~A[è8¡>@Ð#ÅD+”t›¬v£Ø¦ð3s2ÏzxKÏzò"Y[º€åëõ*T_8¯Ò\²umì\ue:)(½— f—Š°QÖm$½.¯d
-‘<݆!ËЧÕ^ï¾y-že¡îuNteÂœÑå Ð ìÆj'T`±™&½%6„MP‚èv ¸rä;zyÅßåLQ¢Û–ÏÓ4Æ+ù'¦–$ÏÛLb­[¯x·
-)qdeƒ,·!pªRYNî0¿ÓâಘgÚÌ auà ¤¨Qf?˜L}i C‰"¤ƒ.~1¿—™©$ëåéHÈY2 ˆ+)îÇIÿîÈç•cE¡›½Êù;-
-œ‡ujÙ·Ыìûoõ>iæ©p§¥¬®2ê£Ù`Àê¤Í©Es
-Ù~<A|n~DYùO hÔk§¿Ó¯hQÛ•a//uCØFÜ!¬x²ú¶LìQ´Õ£‡<vå0Ø2§¾V‚=úQ>2•Qè$E±ºŸF‡=¤ “Y24?2ê/‰)­w¢©%¿6tüæx'ÄÎÌ1ÀS*)œ@î{±ƒŠ¯¨Šõ:Gi:qžæ¦ð$lÄX5?OSՙ̋Ö$;a’IÄqŽJ^,ãʼn‚QœC0å=ÍŠ*ZЯÃÒ´Bã÷Í‚ºÌs…™æb šméÃ,ÊÍ* }ÕÞ0iε-$\X ÊÛ$ «”³-&<öÌÃÕ™
->˜‡ÍvU?BAu _ÿú›­Æ€ü(U 5ò5¼´}V¢ÃëýsÕ•n•éв^üªµ0DœZvtC ‰ i¹A”ÛFZbcÒ7B‘A–ª<äöN4)Ò@BÙ][Ç !0pø^‡¬¦ÞK˜ãS@QdIÒ:ïa¥e’Š:åeZ˜æg ²Ù9Gamu#Hšq˜ípXÛ(I
-^!•x¢.”vZgÈh"ìA-÷}[ûàe \¬M:o&AB9ÎG>AW?€î%<@nïpB<žfÃÜÆs[t%$(ŽÕ¾db# X¢½A¤Xø1ÓÏVL$LôÛVô::I >è¹á$¤ ˜Ê&«CéËä™Ò½Â¤Œëèå
-›°çìâJ?§|•ˆöÚZ„Q‡·µÿ1ÝJÑP@j¨ ¶6z’AJ9¯3ëßÙ o`ëdå*TZR½!©Šï#ö°Z}m5ùlJ½iq;r)j/bÀŒ¶NE
-Ze¡ÔÅ@d$
- c¯ƒÉ„2«A /
-ÉãçhÆÖ ¦=Ï-¥<dA+p˜3%eƒ†(0Ë3îY/ëâ Ó†¨ªU&¨lŽíÑ ¼!¥yøN0 ©AêòOñ ù"ÛITY€ Rr\· oTƒT˜ Áœ~):¥Aäè#Åú2ªT?OšÏNÃØÅ £ª†¥™&©ßŠ U§eêË…¯ã¼q#áeƒ h‘æ&"¹]‰'ÝF(ºD÷˜²—X΄ KtæÁõò+CéÍlLÎ4æÔŽ.å
-"q½®4Yæ¶k¤
-NœîJW•I£ƒ'¤ÁìÐe¾˜¦–ÈÌéÎ'ùaŒŠAh¦‹6÷Ÿ
-rZG^S„«ÝŠ©+xJî`|£o“¡`¿”8­æ|ÝwÂÑñ™¤ÁŽgÒpY66†-•l{0Ÿƒ:§òuËE°^
-„Žàb:Ý,ÉÒ äø[#}t[D³™?A}ÇËÓu'ÃVNVv—8ð+Ó°–¶Õ2ȘĒÍ|Ïdåp%Û:‘ ¢'xÝ YçG&’U÷
-úYî c¿KžÛU¿Éî¼%#67ˆ­»æEÖÛL«Ò4»¥<8•A¶lÚ¡@ÅøQƒñ>5 . „hNQÃHĈ¢c¥Ìáð[Úo•‘nqžÌå.ªk„«3JÑö¨ø\ òÒ\³â‡$'cP1O’y¾Ñ²×Ч^ûœ
-
-ÞÒÃô7ÿ^vr¹Ì‚”„3v¬x„uìÀ^JWcö¦€Æ›âe­ñ Âi¹ºLÐÕ7#ao1å2!D““Ž0`î9ÆêÚiUkÑ>2mE2~š"eá
-þâ³»žÁaM¢J+µ@ßâMˆ  Ÿ'kB‚ÿR^&ÉrA=î ´å<¬ÅR·ÀL+éþ[žgFTW6™aˆOüÊ)Âý9:óu—0 X—(ã|;*A4Ùtœ6xÄ8’+ž3þEL¼æaêô¾ƒ aèבŽ%ˆ±|«36ðñuô{öŒ{$ í|ý½ˆ'Âv”§ÙbrƒŒóWãgÅMüu"Ñ}—`p—B«!m&ðéøÂc?:T€ ’{ü@uú 17¥o9Áq„54Á2  z†l)µNAÕs¶Ý§†)½k¾T”™A`³uϤ°
-7÷N17ˆ‘÷ƒ’l Ÿüá̓kÅ5aî*Q5'“€]ó)0‰j¯l5L*½]ˆ%Ñ¥ôhŠtq—€¡È®Ð£½/hki+Á[É·/?¾Ä¯h½„.!nÝ$¥,Ê_í"Í>zžÚö,ŠhŽ™ùM°h?}|q4zRÊýP´Jܪ«N2¢X ÿÞh!P-´ì'£ŸËüÖ1L‰¯µ—iß´ü~ÁÄî²øÒ³"mt‡/Õsª°¥xhƒŽv*až,
-ÍÓ·Ï à±åZíÈ< M7<5!ï,…%Øå5úŒ¹7-@üÂb­l !\*¸šg[‰-5„€|†×úôî“Â<Z±zg[÷í=ÚœSÍŒœáv˜Ò^*½$\è!É‹ØïËSÜ߉zÉÍ¥v#£˜ º¸Kè4
-.µ¹¶§—@ÔcÙKaM]”wꤤWd¼0-õøm-ÔÞÈ€#wYá'Y_uAôš°pŠoT™eõ&&VeÜŠ]ÎC(jD˜‚°Êõ(GsÁ«ôk¥Õ›ïHSØÒD“µ‚»ðLÁ^Œ-_@9ä¾¥)¾r
-5â ýP´J¢¢R,Û‹AWAÚKxœ»$Ȥ˜¦-Xrí\)‡iÞ[üÊïuïÄŽä1ÊF]ï .äOŠn“E=x$)ñªAê"´ôŽ°`à«6ÏFANÆ¥unßVBQð¥ _ÞŸÁ׸}µ˜gXš‡¥R»VZ×ÇUŒa%@q[é¤÷è+1ôÒ} `¢c‡ÇB¶éî`×vÍ@3%´! >Ëس/õ(¢Kó:E¬¶©V=Q¸–ŽÀbÀÅJ¦Ú›ýs™•-™6ö:SDÆK’‰?þt<”÷;pátÿì
-(8†`ùfà1D’•ƒÍÖšQ¤9º%Ÿ"µÒ¿e““ðžÁ%J´d½EŽ¤¤æçˆn˜C€=Ó¦%k{^!Xø>]í÷åªü0ÂóÓº¸FZP…ø£‹©Õ´.5
-ÇÞÇGz—$TX³{3!¢Ù¶À…)c Áo0jMó(êü-jvy ošþU«ç8»£¿¹Ù~¸ ,º]äKþ
-ÞZJWäCÂAHöd˜ÝõV<~ ¦¹ñ Ü«=¯%7óòUZ‡®Éýï·¬ê>øÀ÷Óh_ÎÎ…xOÐÁëŸéh¬ÂÇôK&äàÇ2*|ÞÛü= Qí(3µð2î3Ù +¾*1fϯ·[JWƒ.@ÃñüôÒ[Š”¹V¿a¶Ee®}ø‰ ŒC¤2 åöÑ4$ò
-UAI°LŒÍȇ¦wú{`Jû¡Z^0¸‡Ž?4
-ŒÊ;Ž)wQ‹
- i®t-u7
-z³–Ü7ð ‚Õ£Uœöß™vÐdãràq·†z¢Ižzí[ôP·‡=yÔ1ío€Î–<¹êÐòQ·è!»ãúlnÊÍz()"/A/¸O®ræÆ䯔-zÜM|ƒ
-‚u¹,UŠ[ô˜!±A{Ã2wôØ…ÜÐãÿ ÂÑ£*§43Þóp‚š~Ã[Œ=6A  ˆv6³ÕÆX*Ž¤¿ z;îóOîäW¿}ëâDóêô ím³„ð-蟇 ·›Aaâ­ñù£ ûq·÷ýQІdÊ‹Vç'HUü‹˜;îÝRy úü“|ϲ|üPhz±gå”âœÂÙ ì)9É&dP¿¶AsÉ"<Œ¹ÌFO¬uDIÓ‘ŠÔ 4©Ã‹=¢°iBJѬ°
-Zde,*æO;‰Œ0ÌÈg*”ÉâÂa&IŽÏIj0?*X1Rº…ðT °ŠT, tþ"2ÏqÅȳ&bÅ½ˆöt ëZÞ<$NéCÊÔµˆhaú ¯›3…Å °Pê±D‹  Ue; k#€a¹1’nù‹x:Á£hRáÁª˜ÓBŽRñct¹ÔMˆÅFKˆ±¶Þ}gZ$k[Gá×u UÙ/S&™u˜ÏóBf‚(? »NÊ“7ÇèMÕe*Á‘öÈeô²ç#HWÉ’c AÊ1^ý(r‚]«–Nt
-
-ò‰&¿ó Þ„«âÕ>C‹Ø¥~¾I“ v€á—™õž$•¼ÿš²“'ùIÀw ÀK¶ x#è¬S´ï@9ì EàÃpР$ÔZ·!m¶Vf Ð×xu â=ä*L
-ñ+àBÉ݃9`·`Ã8Ò6Ø^sÐJ<¢¥šôJcæ¸Ù9¬)ò vœ|,Ûüxwýw ñ£IZ k½¹Ø€‘Y¿QÄÆd0Ÿ´†‡P^|T–ä(€¾Qÿ¦ê&œ"¤KÁ)^@oP%+ÄmÆåô}ªÐ0º¹Iù£ñÈ€ÔuÒErš‘‚b»*]„ëbô;d› 5ªI³/|ÓQ5m’;/Íãc¯ØP …e^HÈCÈ›¨GÿƒéTGQ2Íhd8•|X®šþÓ‘]‰Î¤–› k±„ Î=¿Ã3ùr*_3ªÌ‚ýˆ[‚áIžkïgס;š&CI‚ø°:qþÇ  ¢L%«… ^$’âgKu°WÉLçe ¬õã~tÚy’*ÌZ3šµsu) ’¥gØg*ö„­’àh!Ü–õôZ^,¤Ð<ƒe-Äd!]£5ݸ¯“HÐXzX ¸'ÿG„³Ÿ”ã`ȱºá!`;ùcÝ9bµD{e-u¹[ÈÄc,
-æ/s'UŽ»hS<;,ˆ±‹´?
-@Ö?]Ny6õÄz³៵È
-‹A¾àëcÔ#ü%qkfŸimx˜½¸ ¹5—).XÕºð[ÈÏu<+ÉšâÓw˜’¡)KkoÍÚ>¸÷ñC¶O+£[2é:é±ýa) HÖ‹1×s)¥”¨|FÌÖQ@ÅNÛVv Ä éÈÙÚÕ³ÃÔ!˜(nîÚGKBý´¥?\ÈdUJž·MÅQƒ(Fùk+Â1~˜½ ‚OS´åÏ,Žü+¦í=t))Ëqkeô¨Î…(ú©úïÖp ú|‚ †üŽ#úÖbIdÅî£î]ˆG¡E”Ž^gÍêüYS8'‰·ÂJ «6©™eùF½ ùz<…ðïEÛN._À s ¡UÐC!Z7ü3 Zàð¸Ê
-†IàÐð‹1út=Ý“4ì„h/‘ç“WG-Hº‡`M rœÏæ—X±Õ2‡ô´Ù1tiè–gUy‹UQ•WÍíå…CÆQVˆZJ«êU«C`²ã\,DWF¼Á‡~&™-E 9ºç‡% ùØ÷Ö)"°ÌA‹!o=:ÛYo/Yô%tg \f ºmu²t·
-  S—ïph`ÓB¤ÝôbìêäØÓŒ‹`óÒA“ºÝð$&õ*´UsZÀ¡-Æ‘9ò§Øgf$` iñD˜fŽÓkð€íÊŸ$¦J(Qf3²£RÛêo»û,ÿÕ„]iö-_ð¶Õ
-žÁeÁC¸ÎVȇðâ¬ý Y]GuH
-GÒ¡ýŽq‚ìq9FÅ3\ÿc¼\rë*‚0¼ïÁãHDý~ ‘zÊ
-"%CöÏ÷wUŸäúöISîÓ]Uÿ+ò]úÍŠÏ»TX×ãŽíúÔÇ"¦ŸyÚ±Àº )kÂxÜÊdR–¶'­Ì¨’[sq•7A „"q°ì©O|€ÞˆóH~ŽâJ‡Ôm…µùmlÓÇÉ*!:`v˵˜¦¤A_b\4pô°ú9â Î`:.Æ ’.0ËQv ÄŠ"vŽöÅX´(`u÷§ˆ àz ?Ù‹ &D|P´s²¼†¿oJÁ¡´<6§×¨(!™!GpÏûS?EÞ;ø &7¤Af K ʼ•'n™ÒC‘,wÕâFÅ¿O‘¼XeÀ¢Ðæ<~D-LrvÂÈøBº>xÞ®
-_¨%´kçpl"~¤x ò£L•D{‹È:qYœT¬¢HfÙ†AåæAlXB쇓%“Œ‘Ëo)Á"² J?¦I-Kg«º3.f•»ò_æïq`€>ó°,¡ß²Æ‹1±±™‚R¤èÅ‚C¨®ÄZ¦¸òŠU"M‚âÎbC 椬Á‚g±Á¦¡¦€
-ò⇒Ýc1(‚'ñ",+ÖvZŽÕÀÀ *‰.žC;ll3ŽF§*H¢›YÁñZœh¨Ÿ”V”¯Ø~;‡?¢Ë=ÇâŸâr¸ ¢ÍqÀGˆ#$/!"®;6êâ!’F>à`;+VœLD³àŠeV’`
-ÉKCcPðñ{‡c™#][ïà$®Wñ²yø0Ù8] íîÞ„Ö”±]´…UÌp]»)aiûDßêÕ¿§"Q!î©ûœÇÛÈFÓ@ŠÚÇã«]¿)ê»`ÈÌ8¹ŽöbîèVöS[Ø:o%h1‹^Y„áÏ.¼‡ÖaãÎ2­x¬,Ý_ªlbÎ
-½ÕŠV¨T¶*[‚šÊA•è‘1gL‰lÿ€ÁÄdÛ‘jr`fØÀ*7+0iÜns¡RhñSXꊳkðl>R ?
-‘éQÿã2‘üÅ*SÕ}»À¯¸Gãç@Iy5/Yš´JÃ1Æ5ëŠ<7›¤iÛ.Cÿ0òÎ:RÁsGJzäZ"‚:䵺Ìè†ï9ïÍ¥.^jsh6P…qÁ”…ºg™a%È0";¾bð÷1—fWóºd¨y°"a‘d`cñóimx8´Û”f@ã§åAjK‹@é<ˆ‚ÈÍMÙ‡¢U è*ÿã¶"±0r(qx.w"¯çí9¹+ »„‡7™øèbƒqyɲ×$Âý%ºÃ7È5ÍýòFÂøâR<8$Ù@ZÃŽY ;‚$Ô&_õÇiRЃðƒ5šWBÁ½âDAYn[…f”25¹ƒƒ|Ùfn- ˆ3›ƒC1ì°#ŽËK 'FõÕY÷ë—D®5nùå#I «Ås¤Ö†_ÃT¸"²ãD*FJ÷’É–àîrÝî¡ÄË©SüSòƒ°$Õͨ†_åÑZösžRmVÿ#¦‡({SPfQdItæíåß—O¿„×?ÿyùôßK|ýë÷Ä;s‘Ñ€!ÿ
-peJ´
-ž]
-.KY¬Hü— -µÝÁ‹Q1v™tÑ”­îe\(d·dÀcîVÄo`ó$š³Y\r`ðÙJrˆ9rØf|ÇSÉf:0%ò«›Æ>žÃRÇ$ÂWúeŠü q Û4X0‘pÅþí7é/¦5SÝ VJªA¦Ä?ƒ°¶4OßÒ€ˆ  ýìåX¼Úìý¡ŸãJtÕ‰(žì5Šº¤^„£À¯Â8D”oVD6Â]3×2E”% Žë˜^Â/.hZI£ÃÈUòme.¢`ºwH÷”·ªÕ‹ðf<¦ø7Ú)E'+Ý¡Ìn+’ò{!{ íð[ó×gZAßY•Q ôg¨Iî¹èý¦aÇP0¾z=(šOpf´1ùðëåÈ+” ¢ÌŸÅ4¢l6ÌJ04iIÕ<0ØÃråÐîÇÈÍã™~Jv Ž‰<n&õ«‰¿}çgÌHÅz!\|³‘[°^²7 ÔȈgXª±ñ.·Þð“øÅj%Øa¹ü"½ÐÃñSüÖó“xŸ¦”…²“ b
-à8_dHcjóPâ[QÉ\FáéîÐ3År39€S„¿x"«¿ùÄÒà\ŠÉ˜€ª‰Ï½ZÏ,1þŽq(M¬†nÚÈ#ËÈB¡¬nô'œ@²âé}puxà[@"¶:][! Ò–}å sÅ"ÉMîðPUO{ÝÂp¶e™Ã5ÙQpÏðÆ™
-®%‘õ;µbˆh`â/ï„v²‰±ú¡ç Ò´}xnfþ~, ÞÈÌzwNÒ²ýµú9¹ ÜØ/"F2C‰h¼4e*j‘Phé×ò÷ðq€­bmy˜M2·e9†¹K ›Õ@/ |‡¨ºó6•
- Y1“ìfƒqzÎî¡,´G¡ãÇ >7Š4–yÍ6o˜åSPYx3ç±·˜üg;W™è—ˆ;¹¡7·K\ùÒ3Á±7]¯š”.±€ýh D‚‘š7¢LSsM­‚¯˜sm~ŒõD†\J~
-Ë~9Û"3G¶Kñ+³^ o¹7ã
-ùÉšMTSòÄ÷ÌYÏã÷ÝÅHzŠ;(ü)íi‡5ó‰GÉ'é$ÇàÂòØD>bx)3Ñ ô_%Lĥ挖Խ6cJíqèý9ï/Î!î4JË»(HŒh«E¸‰•°ÒÑÒ%^†ŸùŽõäúöø¯ËŸÞc ìDÆ Q¨¥Å‚!„$JN`Ã6ª²ìU¤®OþnMŽ-ø}ˆq„ Ö ±sš¬ê‹S¢ö£0-ò¦GHT&{Qäo÷§. ºK8Ix¯QírŸÚ_?v3äpÛÍ4$l|m  €
-ƺ€9Hd”Y|yˆ»Ç”só؈Kr‚ ÝÀµ¥›¨žC_‹g¼;'.sAÞÌ®%²¶Ú«®ŽB46yŸò?mup1iÇÚŻ쿃7ÒrHݜݡ{d
- ‘Öaòyö¡{Ä;B¨¸éÖw]ÿ
-g@Dñ"²r
-2> Ì+ÿžã1Ǭ¦¹9ñ½ >— É‚Îje–¯Þ…ÆE±òÙrLTêe¨ù±ïtöo€]ˆV¡?™Q2~Èì5[D{æ D.*c×;Slãq¸ψåBªuþ tšEn¬*0XÙíXQZÍùžÖPB# áÌæA.÷bü;Ò'¹¤¤ˆõ+³õ³Ì]’Kf šWé7¦ ÈL4/@œÝíßÀtÙ% åã$£ÌŠ;#Ȧ"`A~Ó>UXwê‰öäd^xzA`±¡òœ`¹›þ·)K$UmAöù£U‘ 8„C_>~A¸hù·­û8~
-âL““WÒd6íèÀË?÷ö"ù^®.Ø8Xth§í&[ì¼\¶
-1£C ˜“!ù5{‚i{a±DCópØo¿ÖJÂ]„éHDÁœŠîmÆF´^E®3°gؗér'&ÓzŒzFž“.ÛÇ9šŽÉé§|&R€ºkÀÄgFVÑ0Ûâ"²+žcs
-!Û»±$²¦K7:è’ O‹ZWÍ6áCîžžõÀùÀ~/‘[/Ž¡f2,LóÜ"ámë¶Ág§·aàqIÈFQN^‹Ÿdç´ò´IÈŽ‚  ¨„l0Dß7"Ö-Gmù ,á÷ñ XoìÉ W¡
-ì0óèH"Er ´æ±(!i×¹Æ%áGC…¼Ò‘¢ôào¿ö±,x‚µ¸nºžŽaShZ!B·+õSÅåñn7­b)sÍZ½!rg팡E›¸U2ÎÏhs]Ä]”ȱûž§$vJJ«û¥`_M}ðÖ&OÏ-&jÏbáÂ^e)9I­çS¨¦¥m­Í ,QCk„Ý…‡d,jpݲˆûAÜ8 ˜Éƒ¹>]Ev#zºsáëÆå …Ý
-®ISʳ¬\ÿ·Ÿ­Œä&ÀRÛ3av¼e·R2<hÈ4X8XQ:g‚ß4â3±ù CÁ1&>˜#èø\=ÈbB¡¹)=öלšŠ1°¯ð9Ý°ç!!‚(?X×í cÉ8:ž>%¥ y §h¬FkÔQo-¶dô÷yÇŸiÄû|„Š;ùÝWMÂèdt•œK¶è»{X%íÆûzË{š;|†2ƒ÷`7v!ú‚O‰6ï1à€4¿«1vC²ÞTÇ°6OìÝ=‡o…Žƒ{Âg }ˆg"ûip­gÒ ¨ë{™„¦ÅQ±ºö¢Wˆ;ç÷ˆCdZ[1üùÖú$Õ>ŸÃ太͇£×vö߸à†Ck碵ŸMaÓ~u€çøb§ –6N;Gy–‹ñËqŠËU’<jk€(¦Qç²<òg]LMçbnâ V·ƒc"~€<¤i¶ÚB(ÄJÃ)JìKä¿9–™›&?î{‰"¹Sñ(ë”àcl±jÈS@!‚¼ŒE—•ˆë¨ÖS$C pöš¸Í̓*Ä'õ[IQüú\Jä¼l€K•8Dõà7å®'RóˆEöÌך\4öÞˆ®NìDeI#IÔ1{ZM"ñ·œ0êh©×¨A×Èî€?0¾ÍöSŠAZ+|r¶¬û׬{ÄA>^WïžÃ0ùðƒÛ{+W:æ’¿¬ãèpƒ“ÏõÞ÷«Þ÷á“é.
-†è„ÇCd7"¬h¡H<Žs•2„]÷+;í|Âã( ¨Š¦jš”Q÷Ó¤F‹qN,°ös*GÈ|qåAÛ2_àQ’*Ä3‡z”¨Ãx)é«›E
- öªÕ¬Xô8$d9Ìœ°@›MÑ• MÓø@tò£)zÈ!©Mìçkm@»ä X!;g· R"RäK2R
-² or°ÈO
-¨ p³Í•U,'Ú¨
-E“CGëte9ÃøDÕ~.˜]K±ùq¸i“UñÉÂG)°®¯b„&>hñ£ÚÂá/ä#m~Ô“Úð‡LÂ{‹DZª0ƒäk&?þì¤ 0žY˜j÷Û(_é!^3ñȱ™Ñ¨<Ÿ|³¸>Yu¼îC9I¿{tɼÊCÄÝvõ|N†} I*ü&З"׊ŠJŠ"´a¼¸”)‰â’ŠEг‡Ø j$K„ÇuŠ|Ћ³Çc’æ„cãb=O…E"WžÀ¤)‘·7bº%C1^”ã•XãMõî1U›™b|+˜Ì@çS¡[¨Š)–¤òRl ©³YG¢½a÷P×çˆãùK­ZËyÎweŒZl‹•­sós!ÃKBðdå×ç°zr"ÊÎOÉ:8ƒŒpû¼»Õq=~•¬Ö&KÚvSÒ˜l#ÔµmŸü ȹÑLó”ô¹ÈŠãuˆŽAµúÝXxžNÖ°õ`
-êyµ$î6…û[Tª,xL…MáD5ÑÒ¼£›ÃˆûG¤³8~\sv‚¸h8áÚÙßë}Íÿq¤šÌ€/½qm€HÊÚ1íRÕÀ#®ï0{ñb±=dÙìâ ‰#Ê]E°>Cú_G‘"[øW4AÜP~h ¿hŒFÔ×f€Pß8úJá:4×îei»›O ¿ô³…á” ¹XäœÙÛø|TÝÂp¬ÐÉßxƒó
-Æœˆi¡aÏ*<QÀV·ÏéŽÅEè·Í÷œUd¬%Y=Æ»¡'³ã#÷«Þ7â_†l ¬I±—b4œó)’[TmE´áðrIzÏ]ïKÂ6Rµ’àÛK"MÌgˆyÍ= Dc§)"ª™³²x¤¸¦Ñ³å`4­³)ÌçtŽÊñJÊ«ÙB`±C¤É’$b ©ÒÙtI5$ãU‘=0¨HýísXéQl¥eÓÍpnÝ[ÖÁù Z‘_ø ¬W‘
-BÃrtî“F›½ÈË4Ràäa†ª>Yw
-@„ýþD1ƒK·jý¬[Æ:x6›F³C
-1uµ¶¥ª °)²›Ö2íYl½m}-¿É‘ûeŸ è°?õ0E–e'ôºÄÕȦ S\÷Û9-ÿß±÷. ÿɸ0€!LIe@šÖ„ä–ŠÚ„Ét\ŸZ= Áyù„6}³ÃǺDÅ{!W%×±†3  Ë’pÿÄññ?ãå’gáä9AŠ·Ð:Ûžÿ6_ƒ˜”mþ”g55–A«Š?{ 0Ó°&-_JâŽQ¨Fg™¿<­ƒ…D`¹ [)¸Ú7ËWàx
-’†­¢«¨¨êÃãM
-èŒÍ¤F­†dšm¥a`“™³ŸwÒv¥RŽCÚ(g§ÿ3û?çcp5z‹ G‚OrbëG ÿï»h´©T ìR´JÄI0;á€øÖYš{,e— Þ””æé{KLrê‚U”<;ÿDï/{ä –5“<=k)î.L¢Q—*ì¹H°ó°1ÃŽ`“ àš‚š¿%E²!h5ן$ZeiñRô¶‹ 0ºbVj¹­XqìqÊg3t]{sð¸B¨’¶i3…‡‚I–Äù¬ë1<-»ÀÊyXô.a•_&êÝ­È„WÌ"Þœ=x˜\òC‰Ì
-þ“îèVd.‡Aè^‡D‰ºaÐÚy¬‘¹P9<šBUÀ<$ŸòñŽÌÌ|Û¼«ÆÉ_°|RðÝØÁ+0dÀzP“5cæøÆå ÿGòïÎ'1Šø¤Ò.ì=Š€s}ÕyH(ã¿Ñš¶ú‚øŠ©Ê€«×–
-£„oR?Ì€‡‡Æ_ì…ù–yQf8‚©²qTÑ@Œ—Œ`‡éç•¥0ˆÃ"œ?°^V0Ym^בõ€}åVÛ ±i™U´aQJP¼ÉèŽfqÓ=AÞ.»d~àC  £ öA‰´é8 Ü^§È(ê‚Z”
-÷b[9  ‹EË‘à2ªz;Lð©¡…*¤UXÌÐ+#¢!åøjm*ÂnXЄ]ãiü‘a'!`¿Ü‹>HìÛwtxùT
-é:„QÆ2ÎÜÎ/%•±¾_‹$daîH&T¸ÜœmåBž¡µo}Œ?×í¾Qôņ¾=9wÀ´hÁå~†l•fJM‡P–,³ ܶ–E¢Â_ºÅÓ&Ý,ÓÀtnà«‚ÌS<aǤ;|gŒao{Æ¡¾VOúl´ŒN‚†©óR[A@¤ö.†Í~´*‘ÎçȨÜpÁ)ûùW€
-H‰Œ—AŽ\9DOà;Ô&!R)­=KߢY¹ï¿Ç/þêq}åØ §³¢D‰ ƒ¢¯a2çÔ¾†üK›¾$d¨ëìSõãû79‚¢·nÓÝ›ÛÇÏ â§üÛ瘽@=LF›s}\µ6ÍœmÈl=Zë3ß6}¸ŠpöòW†ò×ÔÅ \Õå|Ž¿¼ÛZ>'7¯Ûˆ £qí±!¶¦·Ö¤­:e¨ñ®a¡¾îP}¬îmõÙtƒ:o˜"sÉÔ}Ž.åÍÞD뜫›¡ìˆWØè>9z4ßIþ’µ^c‘[=âãG‚ÆËW³å®–•øCÐ$œ÷¦YÑ z„û#P¼b‰¹¯ˆÙbÞ_«¯ Â@?¾ýç›|ü;¡òZFa­É$ÁWªT”јÒäãïÁÀª«s};€.ˆŽ€EÍgH{!úŠÅS:¤­¢Ì.sÁõ]\
-nyOŸ.}×e-ó˜P+Zßçøhœd™ƒ RÞzöµ6$´5W¨ù»ê>@ ÊZf ÊüÇu~ëtøu
-¡^Hý»!”ƒáÆ]+—°¹ çªP´vï1׈»æt‘z·qGa\"öQÔñܸêIl0 6 9óïw<þåÛ¦|JÓJÚ¹Üò‹v僜ðRþ–ê9ºµ\°ý~ –킬mÕÍ*tð‚det =õ6E¥djŸ”oÍF²Y„2Uz¨æ"mÈ)Š³ºÒL„1áôÒw*M9HþJŠé•–+” qC‚’s1È·!(ô¢iŠËù
-K©Í&ÎÕÂ\tL9@n±…{¨ŸõåïÎ!Í}(aë6‘Ú4®yÔøW¥!*Èšù;ñkV÷T¡HT™;)è—S˜{€tf,cŽ›h5ƒq žîS¶ðƒÀû0׈]Ťxw¤Vºß¿=A—!¢r˜~P£vˆt¡9¨øÂw0ì1åœLãgPG¿…a#˜2 Ï1zI¶&Å`@ÃWÖu çjò»üCuV‹Œ1rH4ãï k N)OªqAÒQ¢¸Í¥aXenÑû¸¶! Šàc£Ý,h:.IBÿµCÑLÂ@‰9JXÇ“Öx%c.÷er@Ç[žà–áPŸ^:E2 ÝJà9°]S“©•©ôxÇ##¾Ã o@)t¬t܈ŒýÜ F
-€,Nœç5VŸ|ýkBì¡ ßÖËs~rªk¿F$A –ŸþJþ™Šä¤TxΡ§¥)v
-˜»
-¬Y-147 "F'‚ÿ_LSwõËÝ V¾ÊóÒ…€à/#öï#•¥È®nªÚ‹ûaðÊŸ^ë÷ /võÇ1Ü€®t­JïvÚu§ò
-‡fJaðK…ûØ4„é2xhµÆÕê}ä´(Qèdç˜ýsëX·d²P¡©û$µÑݲze¹ÅJM"”_HúýÛt¦»B\T#_²Þ6ÎtjÁG¸?}‘…Sw=@ÿcüÙd#-4Æ6Nœ½d†ÙÖ—!û¨³‰-¸T–™}+þ/¤½ÑO»N½=Û5ÖXxÖ®-ó‘Üq¼]y²µðCÛÛ'I0¹ž²û™E,=^ ½6i .Ë`x[܈L0eÒáX—šò’âÁ°ÅŒ˜@?w
-)³†Ñ˜ }k$%ù™uK!Ë{ˆÐ¹ÌâNo7Ê< ¦M¯m×s1a‘%E2ëé’G’¨ËÚÇh®¤i¦Z=×n‚ Cå „÷1Æ{Ã>Q¡ |9:‚5 ™ûœ4ˆHÍ~O^‰NÎŽºmH®½ù
-hñô鉒´ž{ƒW¯²Ï1Á¹qÕ³å–0P‚˜SÎôûÿg™I2
-ºHå$Åx´+©ÈBW·BŸç”Úöû!P˜u¸xËV%Sˆ‘p/<e€aùn±G£ð%xÄød<³ ûo*%yxžÔhÌã9[éòyÖV69!×J=ÙŽÊ41º§qÿe¼Ì‘ä°‘(z‚¾CÛ2Ø4'4&Ý9C^ÓÔýç}d¢%V¡H2B U1 [þüKyµÎÞÊ ‚™Q¸–67q'Ûpç,y('…fãǧS45êf&æã‚ppüÂ8áÖnJx),ã´R£$ñÁç›{IV,É‚•>ÎVOEL$$­^Ý×áÊ `ÈÂÏþ ¸\,8ÐÜÆ 2À&(ç0Úçø•Âǘ'<4€‘’s?3=hG¿¦—`fA"†:•€ ðfŽ)(·’WäôCÑ×KÑEø\ö& Ïz)¸Xå@óaTR(Ú‰o SÈyHȈ ¾ ¢]ÂxÂS}rT³¤qx’Eœ„ˆ‹oÂ|ù:r#zéâ‘‘å4(š^’RáBríR­@Æê㶭 ð6ttÖz$Iˆb0f]«Ø8%;†aHÈ"ŸüÔDÇGî¥3ãP<`&lJ¬jQ\œæ˜º|˜ð©„ç^’ ¦ÝM° {zC˜x®ù¸×@Œ#~ÈöV‚{x
-‚', D0î`¯ @é‚?ðãÜwçÔO\ µóÑKÙŒ%²Óÿùö\´ѤoèwÎOE¢TI£}3.M7°Ʀ\¢!Ãmy .u¶$bpµÂ²ïh€^žó<=g“_©ð?µO\Ž~öï^TÀò,RÒ;³P’£"7R‚çè ~åè;õñÅøºð´±‘Ú©YÈ‚ó‹!+-¥€!b#ÐM*eß2³¯‚¡6Ú=&‡IJÚl”íb)ÑH ú‘ƒà‘pt„¸ƒlm>XL%†¹ U.E__‰ç0‰œ’ýˆ¢žra6r
-™ø¦…böÕxà Ã&ºïÕRÂÐàg”$.…ý.²¤Ï€ýæ0¾$èäö’Ð$Rª[%)aœf–¡™/{õóžÿãçTjFÍÅÕÖ<p4<„_o)ºV ›UŽŸÃub÷$`Ö½¢añ<±fë(âÝÊÛÙÁºMð°ÇûüÛóî
-ŽÁkÀ:#æuÀ6ä—rpøT"Þ­è;2rñT”83tl¹{çŠîXT*£%ÖN /…žŸÄ ab« •ÅÅ€ôfz|?ˆ%2”¨Q’Û·+÷>÷ýÂá‚V„f‡;‡U@ÚvŠuDÕI|&òKh¥ 5,ØW²†ãI’'ß æW„+
-ð0 ·ÄæXÅP@ Y>Y^´‹Å–ã\QBrÀQ)MEŸÈ$ka!’3ëOEV¥ÏŠÃãè5~£ì0jÈ#Ä÷ñ¢¨X°¬–FÓA\Ó—g7[Y@º7ÜFÀ–µ‰
-S·
-Ò‰<3% Cˆþ@ÈgŠòHX ’^¢×4f<÷|)Ù½h`§Á×°ã}öE,Ëð¥ãà3>C ûê%Š@¼hkÇëÒ¥”ÅoÆCÑŲPT¿E Ð~¯fûK¼ “¶ÍkØ ¨0Ô”Ÿ=;w©¸¼
-¨:³¨¨cL<æ
-VT¨ÏJбãÿc-ÞfJ”ààyPæX&^€Õ‹}óødF¯AiX:5Ç¡™U +í,6Ãá¨Êʼ[‘»Q úƒf@Ms\J¾ù~ sÙ¦ë:È9æua›F·sÈ3§™‹—ìÃÊ[¤XeêÒ’Ãú­8ÌìBCýt¾}ð †^‚ƒÌßX5žxáÌ9 ž2J~Þt…‡äø¨Ä2× 3»ù›ï~ª©R¡íî^TBû 6TqÍp/Ðo+bßíÈÊ{ê14c)Wãó}<5^Ï +CžK±LJ¦|Êeá„]Âó€è©Ç°t‘dÝȲ×d¿g‘)¢ï0w-BÐÉC A³>^IˆY˜iøfÐHF`†ÈE< „zµ8Ž°?ä,@Fêìr72¬§óeß
-8\¢ò<”&ohÜ¢ ›º˜·%]ô€ó]A_Œ ž+ (Q¢Ô‰bó'©`[ã© ’9e¡sŸ·g°ÍA¬bšb 0oAp¹K0{õüòPrúÍÅAd…X^­#“2×XXNÄ£0»7£c“çÒkÕ‚–¢ ø<m ÙÍðæ ,eá&Î4årâT¥Ûœl´ƒ=Ê™ŒÊE?nسx’Û2})u®Áh3] ik³ COG´Ã<*Mé"!Dé]£Ý¯ÙQDŠdO)1†ùóà±DíUy
-SØÖ1ù§š,Y5l\‹ë¯òàw¡¨Ê·Ætœ~SÚ.`“Q4ÔŽÿ`Á‰ ÒŒtz%û¤_õsÌÅUeEåþ[?– â ‚œ~zÅ Q´ã@ö§9L—`Oç¦1‹V¶:¨¡™%†õlMàœu9Ç£­C>,ˆŽûL¶7߉&ZÌP·oƒ0Áéf?Û׿V»*¾§Ô¾·˜äC»¬‘Üv5¹bCZžÚÕ 9üém´î·«Q2 ¹!{½X”³xnVì¡]íE)XQ\Nyh;ì…vµ¬ŸcÉѼ#0÷mø{ŒDU÷»ù-·Kjéj×äw¢ŠN oYAá› 1~‡½¬VšÊˆŠú†Õíh2Ž²ð/hl^DŸ^ü€ê9}MÄjøñŠÛ9ÙÒ l²®ÁÎSüI@¸¿±!ѤÁ˜´´럋IJ—c"ðùq2ÜXçÀH)œ1ÕË ‚¸!Õô-äðø•,2)0r¨«)7ž:Šé-ÕZõ–qœÞ±õ@Ÿ»>%¶“NÞ@BaÑû†¨„C)g6!üŸœ$¼ë#Á%~a«>„Ä^pºwlc~ƒÙhûSó¤˜Ö↰Ì•Nn5{€`°pbÁÑ¿>u¡+]-³KtåR²¶ˆa{ŒßدäF­“|¡Fžò¾
-/¥ð§©˜*f‘ÏY~€àp@,Í:_º¤,™AEGÛ:_õȽÊØv
-÷Â+Ò1
-ƒAÍT:Œ=]</!Û²Ýrf±’&Щý¨òŽ" Þ=g\y>W|6!" ŒíòÊÏöíâ9
-r‘˜o¼”ô·<¶ô
-r£ÌWGö×qÿþß¿þú{¥š!?2_Ë_¾B{
-‘˜ÔI 瀘x|Qnü’¨ðcBºr(]maCðg8gE$•0FÒÉÍO5Ò˘§ÄæÚ™^Ù%þ¥"$M©9¥ ‰¸¶
-z±¡c9‹sZný)b
-zê°¼§7[—´š4n½ŠõÃÓ`]Ï1,é•ÕÅ;¿AöÃß
-èŸóÖAÐQQ%$ÆvÝÛ97 fÍr²¬÷úÔe,æË
-
-U×ôß@d ¶”iˆ’ÑfS,/ý~?Nzã‘•^øÂ>Üqa°c=3ÿšä§@ `œêºeCp*'œ–Aù "\ìÇQ|b¢Ñã?:ß@ýëêQD®)ýHUnQZÍ®~ŒbÇ<$3T†xÝz{1­µáŸS¹!&
-Åè‹.ØÙn¨¬øšqy¸¯=—úç¼µÁÓžK;}í¹Œ…§=Î^´ÇAܵçOƒüÚƒEA ’TÖŒyÚsyÚßoêˆð[õµûŽ³MÓ1Ø“öpSe]Ò%tæký0Ü; ’1ã ÃTçº=H–‰ŸÁàÕèŸÃ’´Œ*%úÚãŒó]{n OVÒ‹ƒpsü&È—>Ç­sC jû ˆs«‰t<i¯‹róµ‡2f d,Uò5ãÒ_{è*c@6@êÓ9øšÊŒàÍ×fŒÎ •L‘=h£šPñ˜
-nÒמÛVܵÇYœ›öüi¹~iµžB Ç]Pq'€_C¯ÚCcBcª±@DGËÞ@뤄sM¤$¯¡M< ³Ž=2ûÇÏýb>Ú);ì§0»O?¥ÑUˆlÞ¬²¶‘™eô±@…–R|ÁÓð^¦#Ú•öj¯FÁëvx`íJâµâŽv!úËzdeFJšL“A6€1{úš
-Ýå’¹Õ’Ï6è`Éf³uuHJÚï‚áŽÞ2Ò¹
- „¥fD˜‘ì7êÙñÖnï”ÛÈ\ïâŒÞýMÎ_kã,µÂZ¨ÿ¬½3éÔâ×¼)[H똭öÞÝ@Zdñ¥Khõ±@ ‰ÌJñÛ 8?†ƒ…|°Øî羺¹êÏÐP»PœólÚŠGÂ&ܑ֥_æ¾ Ñ¨eŤ³\ZÚ„£Øˈï$l¤}Ž5<jm´’×9¨„MøÚ..>¢u›iþ„ˆ~v ûSØçÐdÍûÓ1ŒqÏx¦-Ã4kñǽë¾YD›8šº3<×Á&dyôµ=<Ñ¢ó»È¸ÞÕ¾2ÒÅĨ|]F#ôm\3((m`—ª=œ°¢Í¬aÌÚYB3þ„´ÛkYþ¢Ñ'Þvö+fžUd¨Çú–¤š¬zø2gIz• Ød§à<b)'‡Ò6>ó©ì"œäwýÃx¹$Yrë0t½‡ZÁ ý?ãzCUûŸ¾‰j»2™öµáð5Z)‘ ¸lóEÌclë¥wAÞÞ>÷è¢
-ÞpÝ@{³s+| >“ÈF2âƒ;IyT=`Ì’"ÜÇ‚$\ ¡ƒ ²°
-k™X“‡_â;⟲ï\!ˆ F‡¥+ÞM (þ|âs|x[â–’«…„{e°©D*‡DMûÔ¥¾@Øš091ÏÕíÓb”¸ôû~Î5÷Û8컿Êa1ÂT!x°p…DÑÛäŸú<ƒÇmXb¡Ì>ñþ6â$Y‹<4²¾Ñ¿‚\͸~îúzçN¦EFÆð?%{g}¨Pý†ò³ QÆG&ˆFíæWg
-ÚÅ°OTÍ›ŒnYc“«Æ‹g‹á¹ðKfqð”ö8À™O Éë¡çæ0zÿ¡EÁjá’uë¶!•#¦tÞÈåÙ#´Góó×ä—'Á ö†ßÞù
-ÿ_Ò½>Ë}ˆUpQyÕUø” CŒS‚«ÂÇÆKy‡§ð‚àG:«‘[%OÄÁfÌø+zßú”¶·(œjŠÙ?ÊÐ!æ4±Ï=e„YnÜבž=#)§Æ€þú
-ˆ“½©>5<ì-ÒçÔÚǽE~á`ôÉGÕ?'Òy\R{ñ%óJZ$éõ‰¿a<–‘gÖ•GªT¼‘¿`<•’G¯øà>|‘'ääXS>?‰¼riê\;}‘§¸¸Ò ó0ÎlÐ9:Îý™D.iRú ?á…Á¨ü(ÁõUžb儽`ú£Ì‹e™{$Û“y1y"è%lžÌ/ˆ$“žõ*Oæнåkøâ
-VÇÓ9˜*Œüx» Ÿ8+íTã(ÒHDH3ا2Šë3¦(žé*SœÉúVö²‡uÊíÃÆrüÜÚ-—ÌΖœ·½&œÁe1ìÌmNçSÿ>‡ØwÜ°FTÿ„´«â{ƒ˜Õ1Qžçï“ȈbÔ;E9Òë³”?ö¶!è?Ƙ\ÙÌG…ÊE3^½u-~C¡CSˆK;
-6‚)Sñ¦yû’ì}lI$:‡Ý^ø•mm ‚Ô¨*‡´}Ü;±ï Íšc²­å€z¦€Jˆ*×—ÝuR*‹ö­®7—¨ÆO{V(¶Ì‚»ÑU>>ÅBàOV˜F ”è9~Ìw ê+h‘ì2’FŒK× ‘ÊP/l«ÍNM%¯î%Û$€Ð_xSðx܃xŒÄ>ísJ]4ËçÝ…IÿøTqŠ~þºƒ|²WÙþæ~½¾ òðö¹·@QðfëÚ~d9fBî<NçƒßʘFVŽÈ< ŒQi®ðµA˜˜¬0×Ò<™µÁò±O>„Í¢Æ'7×k ²RX›ˆ@ãAVû ¬ILéT¤òÏ©òH µ$ÇfmÈOärí¬§QBÆ)@¿Ýþæ2aíëŠC¥±uãmÐÝ’\1Ë“¹º¸Ý­<ò’âbφu¦ Ñ­´!ì" ®Lé“%„Ÿb®èŠkÅî€Ô´[‰•í×w?Q Ê
-{q ¿7/Z‘Yö» )äS,(¾úx”0tüÛ6Z@r óÿŒ—Ir%·EWà=hì›±<ô.<}µÿ©Ï%A…_&²¤øáoW "“ÀÅmJR¾:¯J nX;WQŽ„fât'¯M,˜€} ŸA7
-ð¶G±üyH<æ. ò:23Õ|æ ´3-<èÆÅ¥È99 ά¢õQXt[À×O¶t-óÇß*U¾ AI §ç
-h2p'†ˆGñÉÈí^\ ‘N#â†Yˆ“NZ B‹ßˆrΆYªC‘#vã²€,4…ôçìã‰õ;µapýi};uÙÉp
- `_ì{Ù1CŸçª9‹å>mÍiÓ2÷©ï©Ã°…£à‡l½)¢ÁÓûp0¸:<&Î A<=`°Á8C8ÿ¼üÿéêµk0 ‹˜Ça„ ‚Ìa›5do
-à`ŠvÖX ¬
-Œ¾§èõ“åÙ;ÖØ`•7ª³ø{aRy„uõe›¿X¶€ñ&²”@.p=KÔ½nkjñßP‡ &E"=Áœùk$€{ §™­ Xº¢h´lýˆÐ ÂÖÔ(±C0E«NÑËŠ
-vM
-3Úž5|)È"nÔ}Ù``c}u}zz¤;Æ#déõÍ u`Å“u0º ”.ÿxã¼ñE@µ¡²i”韃 "ز¦ ÌfÕ¦€iæ¡i—”Qs°8É
-™ëkÞƒ~o
-Ç}”€{ÌmÏW=1W0Qô¹"ìR¤³ž·"úÆÇ@(˜©—[!g;¬\°ïb ñE¤ZŒû!ÈŽÅ—/1_àH“q¿–5LÜ<ýEAë´ÉÆÙ5a¹†Zýqƒ§yßiçç–Ø‚b¬IáÙ›ãvï"öÖvÆu‰]TlyÊg÷Þã%€$ïü6bEIeóÃÉ÷s‚è0³Jnìjy?
-”§Ôu©q½ 5)­h
-zAË‘oàKÃ@ JJ¶g1õ,᜽}ŽüpáGiT[ Uô‹0Ò< ».‚o’„¡¤ìŸÛ(—`>˜½}®”•&œš
-1
-gÿ
-éKð¡¾i-Ì„äŒx™ýüw#Ë{ŠÄ¢ŒSÀX>G©ä×9°'¤ÃäßÒ<&$›Ò)Á¦íµÅ³^EŽ®´ÞŽë›hzÈSî¾ísd1
-¸«öô˜Öß™:ä”gµC‡9"¦{9ãyBQRL-|kR`&ÇDô»m…I¡‘Æ_:L{OŒZã†Ë•K0ãµÕô=*¬#g?a‹º×=?h°c,埠B_’á¥ÑfG‘oX>BÝ{Ë©LŠù«ÕÜÜw„qoÖCX ^Ÿd2m¢Šª“QÛ±þjXÔ[Ï[糕\<îT{ëRjT߇âZçîV¤(*ñÎO¨vסD˜Ì*£uŽÜfÇ<ñ’a—ƒ^˜u‰X´;ÁΓ{Sûy6BÞ ©ÃY%Õ&~žQW
-´©Q‰fwr@üIPžÔ÷±@ȳc›¦b0ü<;ź!Œí¬(<±!Ø:j°v-Ÿ[ᮧX¡n£,+É]sëu3îR…ºc[Æ|ÍzCÍÙ‡ƒx"o ßh9s(ŠfëSÒ¸˜|7,ö/$¹A¬ün!
-§"D à ³ÅQÌ΂GdÓY7„3´]7›/Z'ÖÊ6èñ&tK"›™Ñç0Z•Úµ½NfV’âÂÉ\©ɲåH€‰EЭÂèC¨†toU8ù€™#¿Y|ÉTšeXWƒ”wu !‹¼!Êe˜ñÔ»[ V˜ÁAi_aj½_!UðŽ Þ™ý4JïǨ f‰& ÕÞ6ç’àJ9œ… i"S\šs…¬VìC±‰NñµÓt±EU:Yi§~
-¬1–Lör ÙE¶¶@p¼¬^Û¾úävaÁ»  tû9Æ›‹Ûf?}U¯ã¯˜úÊÀÐGú”¿ K¢ºAÿúëDðá¹'ùh‰» ´ Y«öm°:õQÎÊ5cC"B…kÓ:\zË^i[B@òFümG1h_$¢+Rä½N‰2#tY·Ë+²X-¬"ÞÄó/9Û
-ëT’f!§uäþdjOO§A:ÅPjºCÓ†©%û¯3•òϹܧ÷ÄwÄ·JÙFW Û’Ý0ÄœêÍ;ŠŠË<9êá_‰ÊApª
-òÙÏë]žf¼¯eØgrè7ïWqÉ+Cv·¹…º@l«KÁ½u.mãæÒ~þ­.mì½Îm®oüOCµWÅb]‚€Z-ñGeŦV^³×ð»ˆÙˆÝýv@.i\·»>r&£ü^ø úM¥y~(#°ªA°ÐqˆtŸ”¹7Ìï0¾ GxšÑcs¥˜±*'?Ê<ɱîD:øN"¿{
-‹Ll’pW²Š‹ElInHþ:„·‚ìŒQŽ½ÁåbïÑOto#¸YŒÙÈi_Šd|°1¬oü…ÌDzZG‡iMAgø‡i¸ nO&œÇGÝ/Õ”×:ïŒã÷—³ˆbdÐÒgµ2T©¶( ƒ`e90¾ÉɬRÁ;ÆkDgÌO1ãÇ v½¢øen»/. z2¼V)ßÞ§7ºÀ4w(UìªC?/¨ú™®ÞÜÂY}óõ‚9¶†l{Þ‡³Â¡4&ÅÙÅš…”ª¨Ø BŸé§2™Õ“(Qꪪ±¾¨C™%æÓ;÷e˜AnUð,vmÕ“u1:›È*½Nu³Ûa˜/*¥ø?ãe’œGnDáè\÷‚yX:襶>Â;jéûû{@‚UV‹
-·Õ-=¢€ÞÀ}?~ÜA~#Øš¨|'¦Gn¹Â;õÄÈàà°u»[ÐîV#­vœÈÞb’)pþšiNn·Ê2Δ¦zêV¡édÈ@x:FëÚ-nÃváÁ1ë~™¡”P×ä6žº•U d0òWíÊ4´a§û„Õì6h"Þ¿"Ö†°wÞç—ÝkÞÙjyWk×äwû
-íÀ)ñy·^1>Çÿ‰¼7Çgt-ñjX[|àx¨)‰¹žŸ‘§Qõ“Åu9ðH*áÇ€à_9›Ÿ,Ot˜§8a@
-ìuñϙﴆÕ@q’OÎ@ø湇–žHüN§ù±ú@ò[טÕ>CôÙ9¼×‰ä°œÏñ$J*EWSÍ¥ܢÕ!2öî“<ªŽ†
-ù‰6ˆ‹ÜŽìƒ¯i>m„w¦‘×39õäE}Ü4ã®g¢ ÂA =rŒî9¢-Nƒö%—åhÚEâ±=±üävB{“#þUWß9,9,/HÀ%$¬¹,¢ÉÓTÉ{}hWV.`µ J\‹Û. "ÑÙiiôz±IE+R‰õ‰å©œ ­<žÐ"”pÂ+Ë‹'sÓóÈG
-fžæÕ/ú½Ÿ“º2+ ¤<]&ö‚Þ¥0ðdŒiwö‹ãŒàµÄä¥U¿¾3Êšú°§>q‰BW1¥^çû˜ȇÜ~@ ºUFF 'ówåT‘ý®i…Ý×B¥!ªi}—¢ z2;‘ßqý©ÎJ
-_GóùüÒN_.ûàŸC4䈦–Ùeð4¬g-¤
-„7ð“Ü2Ú‡0!ž&ÈóPÕn2DêeØŠ¦òïfjßaÎ|Þ4Cç·1#vu¢w”b–'Åûgáü@_ÿúþø_ÿýñ×ÿ,6X ×TÙoXÝhS?…»jü¾äöҤà f€…ß6„.á÷{8éh*1€6—\
-±Ú­ ÀO5rÌ>'Qµ'vS8 "kEÏç݇9QHH'ë@¬Ÿô4:ÂûÓ9/-wns÷U×tªãMû¥Æä¥W¿¾³5Ñ6Þù‡÷V‚ÃtÎû퀶å`±!u,'„MŠº*ëb%@KRÆ)-:A|ä‡rˆõ8ŽkhÓÍ‘5Ö‡?ÍnøS?`Sˆ—ß¼œéµÞ±š2† CA?|Ë¡Nâ,ÌÁq¯ö§³MˆœYâÑ曤Ä*Ko\;Ö— k lÙ
-\ø
-ÅÐdCࢠntò4*ò-•o{“ÐKã?]<yãaRÄsõÉË@.²fØ‹<£DtA˜14¶Ý¬3
-!†„Må Ñ sÍR8û‚ELCnW€pÎAƒÚÉüÄé_%`É~ñáM$F&<ˆ÷O~i€°Ö)çÆ×;—FO]A|!c˜ÞüÛpפ0šGrßÄÉä3ÃQäe_ºÔ²½ˆ£iÞ›Wa CÎ+‹&“Û© Ä:õÚpï˜ËÔx—¹ Ÿ÷(gˆ/µq6áZà?mÔ‡TþxõGѤôÅÁx‘,o€ãÆS¡ŸdÑ”*Ö¥9 M÷zùX:°!$Vy„,î1鼋T37dŠI¥-Õª}¥gAc ‹}Á­Ekš@ºÁJb†ç†ÈÑš
-S™Ð!º3ê¼eƒH%A€Ü =ÿØ/§]IV}¤î€~>€ ²ÂdfÞg~¶?S<ÝiÁæ3æ¡9Aåÿ„—ÑŽB! DÿhÓ[ŠÀóþÿ?í[Œ^IöѤ"v†öŒJL€x!J•À
-H‰”—Mrd7„O ;èó‚Xk–¾EGÌJ}ÿí| ù­*–-û§-—²H$­Hqñ÷¿ÞjëãÒ0mE4JÿÔr5•Ú[îíýóÆ»yÓÞ½”ú>!mH3qþ3!õªÃk—a±!]‹‰¯j ¢C¢¨õ^´¾ÿZ¡FôÒkç˲@ÖK­f¢]FžãWáÌÚ”Ûø‚t~[
-ì%D¥Äð.®'È å—U­–yÁçtw·î£Ž¨¡ƒ¯„E_Wã†Z¾ÞmÈEL„Ø;i ©µï8™$õÐÍò”¸jõÁëyÔ³ÒºU+P\ÒF·b­ù†Ô¥H¸xÿx›sSé·é¾oñâÞŠ«Ä*&E~Ào˼Ž\¥ŠE4~·ŠÉ£º[u2¬}ATÞD¢:'„ýòñö¿ ¦¤Ç5¢Ž,fñ«šöèRHW¼ÿÞ“Ö{ç}º@ÍcÀ¦AøyévÕÒ›7
-*û$‘ZÓxë„4jGNmÑo1†z_ª ¤P­gÄ,•]p8Š•.óéϧØ#ZmVFµ}_à|FGØ !-Ð`ðiBâjQ›4š¡úãí
-Á¼å["Ð檑:ëAtˆÑÑÙ-ˆ(Â@šß®c¸Ë¨5l; <ƒÌxCG["^
-ô©­)‘EÏçÔkÐß5û¢íI!0·¶€Hc#ÔP’ÒZi{ÎVG7˜³
-ÿ‚dj0%ªHÛÓø
-¼f2ÅÀG€HgÛC <ãsÉÔÃĽ“D$Æ)E9\ž’éÏ@z¸‡Â? ÜlmPÙÙfÇS 3æ€,T¤}_…òeO–ªº $ÄÉŠ­NÏA%îƒÚŽ„CasÈpg"à*¥òÃû„`îÈ>ÌvMWI©z«’-=餻NuXj#§­>~=”ýó&R@hJ÷u$3Sr8µm {‰œ·ð‘‚€öí—Q<œèÝî÷ã¤ÔuÏ
-& FgÀlöêôʱ*ílùž´òr«2…äd¸ôò\#æ‹Þï˦+·
-ûÝZÜ:çJíNN¤÷¦k`äûn”ÁbØ­¹ È^·nýýÐP©Ê%gÍ–;Ðßwæ‘8¿+™H¦Îb•¹³Ìôàö«Ÿ@Oãv‚,¾2ä_€:†=¹Z±-7è)Ü?ƒr³°´sâé&[O ²â 6€:s dx~‡f¹÷¦‡tŠß—8õéѧÝ«вnl1+Ý`œŠÅ¥ßŒ6|ÁÈm·ºŽ¡>P¹Å׺ÔÓÌ…¨Æ‚¶QI~> v¤y_ÖH-ýÕ1N/VYé÷9nT‡Bä}ºƒÛе™=ƒÜÚÎ1]šÃ×Û1};D|ºˆ|V
-c*_ÇöÊ䔜û%õE›þ`ýìzM[9liÁ÷mðÙ…—q£ 3‹ŽCŒ¿ô)´&Ý-ð€Æ€N¹çø6si ù×k]§ âð9^c—+‘l¼€|£èÇÛt$»ÍE’[3å_€žðî Q8öÖ#h Œ\p! {m®‡€¿7?·HÝ= ÿœíŸ „dÂtØx/hÃÝôÊè FÌœÆ2¤6ó}1ÜŪÏ=&r9<ÒXUQQRõö"†+fCüoˆ¦_‹|ÖÒß–C0I”›ëÇÛtZ‡¸²g’4ïòSPZ?)Š×Îþ|ÊÑŽ>a7—ËʽŠ6·Ø¶…¢2†zͽg4xnz?ÞYgÓLLدªSæÌšø>'{#UÚ÷¥À*áÌKRlAMxRÈURúÒÙùAÇ
-™g¬ŽMzšÝ ž} âØGAû ŸSÒk§0­HB×å¨æÎåNNÃæKàÀ—dbðV»SLLËeñß·azЃ¿ï*üiä?Þ cÑ+‰'ÅxaúSÐc~þ¤Kg3OËß"¥‡Ö`Þ†ôÛÊó{ÐdZÈy½jI=4Tö«É„¶Ã]ÙTË•îêô™0iÙì²&Ï Ä°EÂW6Ó÷TªÂÿ>!
-þ¸•m~I#žnÍÁ¶ 9°TÌé®T¶Rc²RõÞ=¿þzBS¦•çm%Äo[i|­î ±GÀ_™ò‘Ö›!†I—•A’hT·µ5a"¿Ãªn/Å’ ˜–N7,ƲYŠÏ†ØGæ“e
-Ÿ•qåM7`O K°š{3o5žç¡(ê¿Ô¹ŸyQHÇ-Aÿ&
-·èë½a/<]ããe‹>E ¥Uf°"Ù>*$Yc·ðÌÆ~]BfàveHÏ'd”fÔ-?Ð:¸À'<“M?‚VA‚ä“7_ÈÆ"€¯ØÏIᎀ¥‚ Œ Ý)>aµBYÚ\La‹>Vë;£IÍS{
-Ë2˜© ?|¦üLgc7?q¸(¿$B*‘ybE¡ñ”íQ<
-<N%-.õ¨û—’uTy€~Èäôôx…s0SÍ^Åȃ,æ©ààjÚAŠ
-5
-0]œ}·/pw(¥Àž~þãEQ`ä+8íra
-í9ï|uá…“WÙƒø³öƒ‰ÙIŠ°`H„N[´E8³Èöwº\}È„«Ó\„JmÜ ZIÁ €‚‹“Èl‰¿]fþùP3#ºÙäôÏuˆ§*³Ù¾FˆL˜ëhƒƒìÚ)é€PǶz^NR [Ò| ÇÈK#{Td-¥=˜w ߢ©Až¥¸<y)9ŒL/Dz"`ï;QN©F”º Š<åe³í0cc°W3ò‹%×죀¹2/¿±²ÖYÕS^óÞ^DINa_™K øw~½9ë$NšE+ç ¿ïåú˜ßᬋIb{ÐG§¦õ‰bÇZÏL²!\jÕT+"zX†´ hÂúà>3Æ $õ,p4}ÄAMˆ2¢©ú(?Ç1ƒôÒǼzÍjǹK0£rOÔ §dT™!`j¹"Kþw*Žš¡}·:¢0£
-—«zeoLmGŪÈÊOÒ•µ\·"E<¨¢°|<®íÒa}%º ½–}y÷Œq2Œ˜O<J‚€ÐO2§÷ôk‰5ùk Ýï|ƒd‹1q0 U’7O±úFð·}[ø.ôô¡®V6~¼9à’ja­à-öS K%þ¨¡X˜üȨV†
-d µ¦âlÇ,™FYǼ¯•sὨtµ î ‰jç® Hñð3m¦¬1®™KEcyŠ`:Ö
-<6àš1»¢ Ö»¼ÜÄŸ ïcªh¢§’ì:ì»,’ÕÚþκñÄ~7Ë ˆñõ°§à”0¢)ŸFÞ¬ç¨KMf“詶ï0Må‡4»ë1ua¾ Sc.ÎÀÿn;
-ùÍŠ!Ìœa løž'@̆°›ª¿ï`üë_ÝaòÂÙÊqxÊû‹IÓ·š²ü€*º=b«ëî°ƒ•0!
-ˆû¬ ˆSšlc¼Ï„ÅnõuFT. ØÞ§YI5>p]x¥†æ¶G®Ó8¦æ7â¬OßYGýŸòrIŽëV‚è
-´¯€Q…?ÆšjšÒûŸ¾“@¡ev£m>;!ÑE
-ÓØKœ˜ŠÇLtZ—áKK¾ÕQ5¨×ŒÛÃ2`Èxû®è‰Ž¡k&2™jw¤~©¸IÓsͯ{M6”vŸÂ—Ï{5)ÝžóÑR¦€Q€:!Ø èqWÐ ™Û‘µEs*nNš´Ó¨_¢QÒ¡&B&еÓÃØ'kð
-+nªsÔ-³]\ =6¤E¨ÿ¥$A½‰ä0b~_‡W@5áF÷¬3{á<žÅAČՄŒ—Ì9—?ã‚(ÓH,—33ÌI{BÛ9N#¿@9ˆX,G
-´_¼ê=‹AW^ö5½ÆÆ^/D}¸Bñg‚"wrw.Ì€øŒ‹0CÔ‹‰¬„™? Ôox|QFÆÙ¥Hagh*€ ¥~AÞÆ=ñ…9ÖÉDI6¯£Õk`¡¢’ñøÃœ1º©;<ÑÊÆþ¸ɣɊ
-%ŽîQȹn „^æäÕÞ@ FßeðQ2™†kÅ®í4íC’AÜ@ŸBÿAñ¡Ì3æ^‡ 7å•BÞ±zˆ«B|¢„ßÁñ ô u ,qËÛpê4ùÇ2¦•Ú¥è×›¢¥sàE—XF硹ßc4ž@ŠÀ°]sé ªš4„ u2Ψ@Ø -!`^ö÷Þˆ§Çx¿—Œ3bsBî¹ß(¦ˆ4,½}ªò?G)ÌÑ]Ø=Ûf¢;ÐjröÙoXOær;”* )v:®ç+kRB'À Íênlš¸M©7]Çéî¿Ð›žù'뮶Vó
-1 2ôh‹¢é5o±âÂAØ<â¾.¼¢2ò&ÁEÈÄ„âžMq¬Éwü/%•èRVh“ŽZø/Ìyõ3d&ìø¥ˆ[eºÐ&x“c¯N­hš$%kõo×|áÔ_o6ûï"Ý5Úv9Ó¾ÈK‘2OV ª¾ÞŒ.uGüäÕž
-Lw¤-Àu±"¯=ÏZLCñ®»¨™,Âçúˆe @Üþ ™ýµ>šíqlˆÐÓ ØV‹øÜ%Î2IØSÓ¥ä÷¾Â4šÜ‡iïÖÁÀòbÕK—½>„ÎÛŠÈi=Hô¥æ~Ú
-qÍE‹^¥%{C*ÓØÆW5Hmãޫܱ°ô½û¥$îõÁ•öÆõËG}cF–Rœ†Ã:&'J»å$³¹Øþò©O`(y»v¶âð +äÆâ­ÐÅÄÃ}¯B;æF°$7DÛp*ÏÆiÞ”|éП?.E×^ψ!&Kéüÿ(z¿Ëvß(zR„ëh=ýÚê’>Pl‚Z"ÚeI¼¶¸¼ÔÖ‰'‘¾0ç5‚d¾Xj—<øIY¹êÏ]’•?Cß%½Š Hlzéß{+<ï4Dµ* L¸÷L{,`G  ¼”çB±bº©GÍ
-KF䧺½×N(Φ ‘£†oÆRdhsìeI1wc˼1_ñݶ­’$Šq7¼G;¹Ø™…÷V2{æ40à­øì“W·ê*I‰ß‹DA§­E{*¸~fù¡cˆÈèæÖÚÙ¨iP–¢{2m­‚§îuêPÞª'WcNX±oïRÂœòÁ¸u?[=}&û›Ô³¦h4b(@nƒ
-̲KÈU°)”Ñ£¤`š©4’óPÞE*|½kã÷o!QÙ¯
-­_ÎýN¡! Çùòµ„wâ n(7 —¹„}5—×’Ï{‰$›Dt·–RÁÃÍšxÊs¸-™"˜n“"äs\¸=.˜{cDJ­ëà¿\Aï%f;›¡8jûU//ù¥$z¦zÐ"†Êß­ÃÍÑhhh>[a;™pIWÍ¿B"’“=9]t´ÎÅhÞK9[ñÐ,IÐO&ÍH‰2÷2BÁÒ´TÜ°‰h {²Ú|S-`{½ú„—¢Ìÿ¬< ¯r„É9"¤P e
-P¶
-6!ì-ðÙJM‘ir} ¦TĤ`=Ä´âb­ÚC7òÄ׎ãt â×Å1Q<\ƒDzhi˜Ô(/—ðk @zÅŒèãB—"NL±!Ö‘‹5áÀÉWŠµI‘aÄgÓ™ xìñ5µÂ
-–q}ü™%†Òfð”1ƒ|%CÖüd©¯TæÛ ¤uv·ÓŒ˜Ü¼¡D¤š.áCaÍ=Œ6/Eˆlû4x!‡5h>ÐxÈG
-j›¯—sc‰‚ùE
-zƒ¬Õú›§hðsï¸D[†Ÿ 8" |©ˆò°Â Öùn% ¹
-® ¹â’I¡r}Í…*¹ôYå–(âéÄñHX<;RK@åWó‚.J0€:p¦¸b´Ÿ¸Â„Ò»„&aÊ?¯P”io¡ÛÏ—¢ë£·l#ÿô=Çß)zÀÏïLéN¦V?dËX¦Ä",ì•tñÖæK-^:¾Ë¥+9©$‹%°¤ ¸%N´&Û•Å2”ð~ w·ž{” çx
-ü ¢$»ÃŽw+ö¢ +r•g(üÿÇx™$É•Aô¼C ó°.-u‹Þ’÷ßê9†”%~ Y’ÉZLzã1ø€MÒtnHW¡?ôùˆ&C™&d}J*›”DJºƒÁa‘ o·Aú(MîË~S`‹pR¥ïSžµA V0¥[…NíO}‚˜l 6Éõußã2 œÌ7[0SÑù¤ÂÞ` d1û;GaÊ«Ê&2ßÐJÿ²Ê Äc6ºs0Ût@Ö§Žv[çCcÝæ>ûUÇq'QM
-{"«@ÕMZÚÒòѨï÷æ¡­Xi7cÕ×æA{‘<…ƒ½’Æ z®ºñ9“4þv§EúÕCØö°Ö ïKRE‹44Lu+R«ø_¯6KÙ 8Ž$
-ÛþïåsÉàdiÁ#g Ða{Éøiâirˬ* 2°sÉ"OјŸ‹k¦Œ%’K\â ÒwT?Áâ–ÜG5¦=ÄÃh+‘ªOD‚J´!ôÏ€¬/a¬KåÛag¥ç9rˆ*Na;ZÜP#G´ä³ºo%.ô^Gjü¶ºuÎЪ1mDŸ÷XËtVjئ—àYQ¾“?o!•¯b šî/
-Ó T:Ú»}^^Ž N‰oÏFÒp<Œ… ]*a¹Ý^Óζˤ¨O-*Æ
-â£ËË_§Vä¢øP®ÈÇ„~ÿ2@欓ñ:åد[c€žûg|î ƒÌÕ:A‹_Ü+2sdOn¦Ä
-/ÕeœJŠ»xò¹_ñ~A°G\§—a‰\ÇÞŒ
-ÓTÌú b˜4q\™”0ǹ¼ µq²v¿®© BŽ¦¬<ãŸù)xžÞð¹I>í%&êd-êç9ì¾Ãçé÷ΦH(E>º~ zŽç€p]pÉ>F4œ˜§¬†²¾9¾}Ÿ…û‚fÊš &šÿ_urüÿ’8Ùˆ87†â0±jDÆÿÎs¨9VŠä:7˜æ2Cë‚Ô, ]ò:„-äÃâáXæ`³ålž§šÑÅYô5~ ²sô9—¥åÒXËÉâ`‡’áí"Þ  GU{i·f%¾„´Þ[¼ô<½ôÞ.—= ;†»cqbšœÔˆ§®G šô쳂'ƬN”>ã&¢—÷ý!È ÷¿÷¤÷ÆS hl£ÒÒ…ßBþÉ`Pw¾ð{ãÅì Ÿ›ßdøÉï@¤àëÑŠI†M&¢å )Û¦ùA†Ò-´•m®=™dè”B—ð6-; C’;'PÅÛhø—šì±#ûòk®z&IÎV,‚JWôâ:b|ˆÈeÞ!ÁXÌS'ÆWkÞ8èL
-b@˜OªFÏØ’&D‹ív\~BBï𚦹Ì4 ˆ£¸1̨(#Œx¼æS™Ç`çp|,y_b.=‘Wy$9šÔ‘ Èø6ž€¸4ÔÝ8Ÿ1ÍÓ…®“ð| þå'O@¹eV†8êJS” s  BQÀÒl™Ê=áO¬oš+]¨%Ï6<÷É—”yù6}®tæ˜ß/‡ªÄƒ´(¨$)L–šçøÈ^–óVlÈÓs‘¤°ŠÌM$;<Ä€¬v‚Ç’K›Êžç|vܸÍ99æ«Î 4ªsαQcòÑ«~°3Ú.·· Ý‘ÍâýÁ8îÏÄs”/!÷’çµRÁWTý²ü* €ÍÁã÷´S4Ñ}Üþ(÷$™£p±¼‹¤µ ¤¿} û…Ÿ€°;³”£)Ù´-VãOÛ¢ÃòÏö}SfxAÓQw¶ ‰;@êˆ|œVG àñõ"x ÃÊ4m}‰ÔÅ3Òé%–‚µI©-Áˆ0‚6¤H"Nñn„n9$¼Ç!iîñ :Úþû‚‘r‘
-5¾ë:mÒ
-ÄÇth dÄû.'ÝG‚Q}XÂn[k‚Âðª±*ÈßðöÆ0Œ@ Hç/™’Úò¬ÞŽY¦¨¢´ïù¥:QJñÍ
-%¶ý.¤
-­ÒsþÝ Á%">4+®W‘”4 µ²^ÅìBì
- ¹óí SÌœ¾-•8ñKïkF‘<*¡GNˆ¢¡‹ƒÚ{F3¢Ù€·³Â6ô‡ç×/caäe¸ *Î ÜúÒçâɦ‡fhë)çÚÎÏ>Ak;ä ±Éq{"Ö“üÉåõ1ç†SW2¼•ÁKê7MâA¤¶ß5Fœ£ãjT%p
-%n‹Þ2y–`Ç[m+hôòi)µg8zç¼} C“±dpu¡Š*åW¤§Ø
-p¥ìŒIå¢:ÃPîù«wJú2Ó> ‹ïùäK0Côe9 °1õâ¶xˆŠ'rû¶6AëKÝàG'­f Z4Ó²pë:,cQƒ[Œã¹J!=Š0&„yæ\êÕ—µˆDB([Bíßü‡7*r[ëÎõšš(:~vÁ¼Îµ¾´†P vÌ’Î?q•{7ós@Ø©$ˆ(˜*Õ@¢¿è+ &“ÍÎäºýLJ¾
-Ñ(/)0¦dê« ´X*Èh^ôµB‰ˆl‹…K}DT“ž1¹¦¼‚`’üY» Ž–=é`ç؇¼êÎìGp¸ëiòªÃê™ëݶÏvòZñþECW¾œS^c&#ôÛÜ~Ê+5ßÉ…p‘ך¡þþ?ÆË%¹’[¢+x{Ð
-nðÿû {žJûŸú$ ¶}«Pj…ÖREHd&ˆ’ûáÚ+VJ`Ëñ䜋½z›½Þ@ž½z ‹½Þ®|·×ÛÓ={½•ðn¯·FÜŒñÖOÇ^E ­&nªî²'nQ¬HÿXO]{…£(f!Ç—šãƒ½.®Ó\Ú;Ž]üõ:0w{½Íg¯· öìu=‹u9H±»ö
-¤k†¸aÍ®»ÞTÉs×Ubù,ø,ÞíU‰Òãj° ¹Æè5óæ¯pbhà©÷ô¿mŠÌJÎá,ªÐFs hÉ:w \ƒ]$îÄ4nV×aï<wö®'ŽÃz ‹ÃêÊ•t¨ÏL®ÃÁY3´q¤‡]%D¢!™ÓµØ[#\ÓûÞ<Íc‹Ö¢‚ø“ßLÚõÇ…€¾*ÿµA¬Ì0ª2ºúåhk¬¼•¡„¯ó€Þ»‚>r§_ûê8CcLŽ[êÓÕ¯ Q3NTE*³o…;0ôM¬<·úèþ>縀Pvô“2¾%™9¡šÆç #3Ðtdgq‰…SO¥”-œå98qnÝè¾£B‚4ÔçÔΔŒnDxælÂø²B æ0 3‘¸³<%«°ÚÙÊ @¸䌧mH¥.Q[Gqë$ö~=5÷3?}f$^Uîq E+Áõ fëZ%Fìç.}¤œl«¥ˆ‚c0«øfÛÉZšC‰ËrïU¾B0¢îhêäÁ—f”@H+”ôwÕÊ‹üGZBáRÛmXþ¸Â8ŒFù)zÌq¯ ôjàE²é’¢ûò{;óÚ’.´i8+2ŽÆ„ÓØø@ ÚÙz ˜H4©"è÷l–².¬´4 ’Ò Vd¤:Ã2Àôz"©¬R{I©56Ø„£íê@Æâyžïï*ß@Þ\QŸ®g„Xúã„: û¬;ÇýtÕŸÏŸˆ”iVAÀ^\¬& Qy–„ ×ÛZ怟e¤ c3Â+7dlÔLpœ …¸¶9 BX ö¢Ÿå6r.Î’Z$œ‹ØƒJAYi?dh
-¹Ì(F‘"@¶ñߺ!Cgê(¿±£°~Ô¥péöôŠŒöÒ¸VŸnSd«(ÓøüªƒV˜ýP ¨„îíq~È[¯ì¨ ¨½P:~DçÆï—A
-¹ˆõ¡o#Îìbd'ýïtš\ˆ.–Óˆ.¹ š® ¤E*“hN³†ªxH$ÛÙÌç( ;¢ÁÇ®N”±ñ TÐŽ*\·!®¬}R“àb¸É * “@¨Í_Þ8h†)"ÉClkõ@\/a‰©BM»OËlQ!˜ÞF®B@PËÏÓƒ.8ÛX{…<_ägMsþ[Åm†0ݦ梎¼çÃi„k{ßÛç
-ÿ×å3'¾ÅC²ÓÖ¯ b
-
-ŸªÈûШï.n„ßÜP¼™ÚC6jÿ¹U ÑwmºA6RÅ1ǵKn‘DcÚ¦—b¯ÈfÚMyŠ╇QHÆÞPl4`
-®oÂ2T*·óô Ÿp)«'f›?v=„"‡C ‹Ý:¿™6k¸Ðšû•úb¨ÑÂ
-×ö¢„
-“µ³BM/d^ä"Í-ù6ûßaÞß lL+•“”-ÙxƆ&"Ǹ× S!Ñnýt¡Ççÿœ³DV\®¯i.vÖû©¸¾Ü®ˆ¬uÂ~B-¦”×âbe';¾Îî'ë|æz6]R0¢IF â9Š ¯D„3¥qåj1†}Í!ëæb XGŠ˜ÈDڇÿëÞû÷O˜üëߘ‘^Rk€´ãþE{¿0ÈnW±0± PÔ­6{Ì¥íïcC¢T±ÍùäŒJÁpì·Ÿ›“»THÍè‰+Ay›47¬RJØbx˜yš´›Ku ÆùÔ/„r<|’;X¢´áú·qèüö*Ÿó ä%ÚÛá*ñµ¢¤-oÿ ˆ)¤‘ØMçöJŽ£ËÐ@öûÔÐD¹ÓYqß²ÏÄA£IHôÍÏ>¢h [âNÓÏ>pþDá¦;¹ÆúÞè†Á¬ö‡¯pÿ!gâ6~öa rËÌØ)Î=û$‚bRn§§'û65RlÍتŸIµÆ“}Zø6Ó^§®#¡ ãXŠY©i:G};[šBZªæI$ó¿#‰BÚŠ±­ ¼c4ä•B"ÏKŸ‘ ÃÌy° ETDŸåÔY­ª]A:-x±š¼TU8$ÔcwÐ ,!«©mkFi«â'Óžý6DÆ€,í(Þ¨ •ÈQì(ÔÉ&D-â(®!ñS“•ê9‰s¹ïÀñ “V¤RB›êDmZ V>la` £ÚDVÌB@a7Ð’g—!ª±ýÃxyÉ•Ä@Ô‚õL”g^iÊøÞ— Éî®æ.ƒƒ_
-‰„Éœ­éµÅW\ˆnq0舆ÖlËà Q[NãÒµˆGˆ Öq¯Èh6Š½šG$²ÂËg8b#ð gÉ=qçÝ8.bж­C‹ À0Y‰dŽ”Ý^ïR÷paLBr’/zN­vb=?d…‹rUçX©a¡@«•t¥8ŒF^qÀwh/V0vÒÆ ‚'õ¢¼E/ é?LI/‘Ï èú•¨h€mÐn°tga¯O‚>°æë*ìÌ nÙ€ò8
-Ç`[’Ÿ—€4N »ELÁ‚˜·c—
-ËÖ5‡NGk£c’Õê,ѪÄOœÛ‡•À4›×9ç5B9vÚ/oR²ð€­ à–íqxÍ\~õrgH«!£+“"IÙK–ÒBGyåœ.›0i¡-"nY;FÆGµ@É@ž·35óÆÄ×þÌŽÕæÅP'󊟇¹±É#vR"E³Ð ,3ˆeñØ >+zÀ
-%2ÂDZW¾UàòÑvI
-ÈMÖ4›¾¯Oóã¡kuϺ²Ą́±Ó „3½n»ˆg‹«çù[XP#@º“ç¾Æmâèª-Ã;âéܳàôɦr)y\K°,`–æ¼ÙÉ‘‹
-ñŽkîKÑwÉ>3ø‘-8ß¡jœÜ§NBظçã<tsa'C?ò–z³Ä
-LLI8©ã÷ÐádÑšÆ yÒCó@}~-†®wùxÚ<®yñ½—ÜI6ib¥ùUÈáÒUŠD•eK¹kòÓ`x<`äNÙ¥
-M¬5ó)fÀÊžp1Ü‹Ô 5ü¸[ÐBNÃÆhä燒?]êOyÙ“(»2ÒóÊøú±<;¥Mfh/Ô*žË¼†ºº!Wdw#Še¨úð„ ’oÅÓ7¹Ç‡y)¤(¨•¨WÖˆëõù,¶ÊÄÁa‚yÚæ·Çç'ÝZCqJÀ–Z5”ÄìöÄ$®–à ?ÿ¹%smŽ» pØ1'@¯…½~*ú¶"þ ›#Ó¯E”ÀF´ƒN€•,1Gp.%‰BLI©÷àÇá™=Š4e¡…—ï2êE¶ÖÖÑ‘¹.óç[áUaÓ„7·F\Jžò‰oõR”ŠÃ@gí¶Ž:°5F?– ºO…È(áyf/ŸYtŽï€rsPØ!îÍ‘½¥0óYñ‘½´Oü;’ú '}³€æt–Ï Øè’¢
-7‚†w¶ÃÐl0Û9]ôi…L@Á’ƽñÿRÖ<E00°H6¿¯§upWËJø ‹‚äXüÞ´
-’OS)bè¼Ä`…MÁŠ¨ØÍ–éغµ”â|'Ô¬È À•ÛJ˜4bjNûRrvš` ®G÷ü°Îü"6
-ZCÍt†§LB6˜—&-1ÿéÙ[0ß܉_¦ Ú •ãÜÙ J 
-·µÙNYV@¯Wœð*eÊ¿à‹o÷~-ñ†¬‘•OëÀ8t[4îsÕÀRÄ`ßš)Ɔ š´l2¾Õ3(to@×ËÆÿ¸ ‹
-x–Tª7®ŸJ¶ü±
-«¿õ¦§„ãÊ›!ugŽ+—‹0|P‹_ÅÝk¢ iX‰ôTR¡a‰7„¿³ Q:ÆŠ"žo3qÒðb딂=Cfhµ•0jàŸ ÃrY·˜$ýèæRSÊVƒùk«ZGê’|³¸†4té[E{TsÒ:ï¯ÇB²ÐÌ?* û2me!ƒÖ@F°;)(ûã´²0DÓlVÂCul(Ôã«ð·eðÐÅy°?)7XPÅwzÒD—n¥E2¥§]~h.‰y„ýrv±!؉Â8´ïu¨SóØýâGÕ@6nõRâíÄ ‹–ùÝïëÐñ†Á€¦— Â&¸Àtïÿ±HìY•ö´õ•ÿÓxJ¼ÐÁÕ…
-+yÅböc·¬‚7@?]šÞVÌß@—„y{/¾›‰ŸviÇ7¹Ÿ8[‡5yU’æôk É\'ëÃ¥„&~€w kôVÄ3C‚EvcÔî먟( &ÕM,F®‰IFò­úê’‘=F@~%Ls!‘‰ L_$L°H¢{Gy?p»”¦jÿÀ¿ùçoßS¿‹TeK$pÌ/Ô]ê´Rö©gxÁÁ œ Çß Þ
-üU]áë DEbB°X-@ö®­Šô !×w´†#\DrK‡ì§ùø©nAJ䃥••¤N Å5XOf¹ŒKUa,v_^<(ª €Â…… #1 ÄI´’àŠð„ÖO£6=ƒ>n@¼‰„—í  œɶ VÙi¨_¶{GµÑX˜…=Äé1nu;BV¦2_$Φ3„iûáA;cr9þvˆÇEh¡g)´@üÃz/Oh<*œúâ@¯L"•xþ@(Vôí©±QäbÜÕ,&ÃS¦X­Wá/¸b’í¹&†#sJ¹ží±†bŒ’k߬6}š—ÕN
-á’ÁgHÄ}J1C«çarñä—Ë+æóð’™ÏbPP3´]ÌkCÍ!d¬§°n#yÊb¯×¦‹±˜Ï8®3ÓÒÈííDÁ íûUs±|cñÒ me§ïÚ¨)TÚ9ꟑÎjØbÓŽJ~Ÿ¹ÌY%8(o'ºsISÖ9%¶´8Ãýz—ûà1©TÌýœûØ ll…ÐTv^ë‰ÝN?ñð‚äwŠ¤ôHÅü „’Ójä"úJËËÇáíÒîÖ¯Ã@ê‘ü;™Mh¢x~”‹R–­ú‚PzCºÊÖOì©@ó4mžAÚÓ¤ˆ†'h¹¹C9€Ø®ÚŽâ~Y‡©ú(Œ¶Õ‚ ¥”éÕ†P½ðäa辶´pµû>/ ‡Ýúù•<ý)ŽÊu aYÊÔRÍ3þ<‚h» 4„o,­Ä
-^ÂäöãÍ·í†é®R•ùë@òFðÖkH,D¶7âFÃý3!iJPl‚õvçìqrO‚°SxÙSð£¦õÞîüù;ìðÀ“ri¸CCv‡¤Å!x?Ní:2ûPña‰Ú{¼Cä­(¤5—ñWÃC×›$)GÇ.†yº5W¦íÆ„‹Ú7IÒà/ÙÏ|ݘáR†åBq!02eh ¹¹JAtG]Çi{ˆº`>½Y-wʉ
-©›iº«O9op³L?•vyÉH/ Ù‘Ö[vÜÍ ô2€§ã¾
-5 ,v~îÝ™lê,®d}'À}e«´'‹_qÉ…Œézaʉ ©
->¨ mÀš *“J?
-Ö
-šLQQ,Qo!/ˆœ6…`Ö×Q‰âK ÉÉÐÉ#±Ž±ê‘E•éˆ3žÛIóÂÌUBçá‘TéTå#Af³#vNfLæ+÷AÏ L%E†Ýµï“X^È)j»IF ¬2 øR¶av‘¾æŠŒ3†<¼›©ÞåÆƘ« ¦XÚˆxÇI* Ã!Œ(³4X7Ãe›”Ø‹¦¿†ÁÏ°Ø[" \
-—di`VõÏ(µ A˜ÔèªÍ*9šF{ÎÚµmúI/øCÍkuÉâoï¼¾\ªý¨É€˜ó™|-´¤•ÂBà¸G*TU;J©†Ì$ˆEfaÚê×EÈ@dnŽ Ê6¢+æí ^@¸;뼂W 6††ðKk nɨma‘]º©_O µ$ƒãò]k`_Þ‚q¥Á¤»bq?¾ÍÅÍ4† zJ<‰::$Š~¨Ñ I@˜xŽQÑ`Uå
-†Êï¯âèiÇ^5Óâ>Â7‹ºè…:Òœ¨þ58ïa% Úµð>lJM„3­a‰Y¹ö'ѯ‰ÝÅßD‚Ás7qÌŸ=•œNô]¾ˆD刷°g?üõ;œõÂZóÍ]”
-„A$ò7fðºþJæ¥QøÊ°_Ýá-ïdî·¿+“(¶C!”]ïñzÔ“·
-Üî;ÑDŠ¢šíÊx¡|rÊÇEXÞå®™e°`‚@ZK‘ðÒ±lA^´©™’ö™ •Zü6¬K®÷V¿c˜ðötÜÆUbJËšŽŒ™§ò+¸(k×Q,U£•-ûm
-+G|vßRûäÅàç±ü&—puó‘‰"—Ƨ˜éî²5—’ÈBpHšbO›Cd*ð|è9û¡×ï°nñyIŽ__–E ÁâÀú£ZÑWXMZ­ó$,ÒÇC\Ñ!øÉž÷€Á vº5úxeúñ ú?ÞN ì
-ÑBʽà9SÞ/gÌc£Éí87Ǽ1Þ¿ïQÚáŠóâéë²Ñ(î’ *;þ*h%BBuÌ/ ÷ 'ãØob
-¶.bîpªîÈ2cK Ùâ1î£Þ5°7kp§ ;y5&,ß D¦±}†ƒHè¡ 8á¢ÉµVs=@æQíËòMâÛïÀE
-¸&¦‡bŒf_þg²¨=ÔfôÇÛ4¤àf}1§iËà²xœ—Gü•Ñd
-¥a3Ž»ï0eazß°{YE4– ØÕO2)v•C¤ò£X7l&è
-U ùTlPï¦ÐJ©á ªœóR™
-¦€çÍœÙv±«Ò6Ǻ¡´?•|
-ëÎç¤Ú4”Å–raö’öÊ”>$S]mú"*X†‡—ðt¿‰ß‚ÊܛÛÖ2édMvþIϬ¯Ü!\gñd¨¨´Bˆz'I» Î
-+aïù ÷¨$V5šŸo÷Ù höÕß¿ìK_Þ‘âïƒD¹Œ%©ò«QÙ!ˆŒÕÇ‚Xû&F]Ã:§Õ†ÑÐgå @Ý!´TÕÆi‡´ÕÏCDðz§  XϪ'[g|ðëa4Ž´‰í$GDÅ÷æ@HQÑ㌾bK,¡B£4}¢¦R [ÇZ=Ú‹‚Ù¸à˜ N¾b0ð5µ™#¤LNM&4[\…tD¿ ¯âœŒp4ßJÉÈ <cjÁjÁnáf²†Z•L;„隷ÈCˆËDÊ=;m¹©££Ud¹C0ȶ`i3C”ÖAÔŒt÷„;µ„·ø÷º*fGÊ>½:Ðj¢‚¬QÍŃ)”$y‰§TIŒë1ƒ¶ ¢µÚMÒ ™ÿ¤öMÑÌ^Ë~LéÂ^¶PÆuŸ
-ë Æð_‡*HMàÜK£·Çé$§d[ðÖéë%èÛ>GOÇŽPÌ´1‰"p—x ©ë‚$G æçÛ)è0žub¹Mð‹1ÿ>(ñ~˜rO†Ÿ{Ðo×ý*Õ^ÊOúbпOAè…Л/^
-£?ê-§Ê£Ï0" -Dº«<^D›ÄT9%vO¸hG£Mu+RÇéA$ ȶ*tÿà“ñð@;½.º]¥àòSRB~ÂÉù›.A_ têÀÔXyï¼·.g¡á™8Æøû#ÉüDâCc¡_Š fY!P<ÍÊÒ-¢‹çj™/?‚X±Ïæ嵂@mŠVk·›(^^+$ûÞ>‡Í4u@±spú(w*sñ$!¥GÄŠ‡ü'À
-H‰Œ—KÒ7 „Oà;øQ‘x‘\{ë[¸*«äþÛ|‚ãD¥ügãH-Ä£»Ùú×?Dâ5\zÓ¾Lç×_ºú|©ÉïÚbC¦5wŸKšø× ÑgïÒF÷>6dõÖ-F_:/Èx­:cZŸÝ¦víÃv¤ñkõá­¯~Æ«5ŽÔ±øbísøÕÎ¹Ý ¢ÝekÍlC”ÏÉOç¢"õÞ½…¸z<“wÐ¥ù±­‚ô0‹%16„ÔÚÕ©çÞs¡5bŒ*^ÄÒæÒìáæÄÓ–Ëhú\¿x Gv ×1ºP¡º 4„ëW7C­›ç§ºÏÉKL[£ ƒS|J"üµdò%Ù´ ·h3Æ$¡Èwp[œ^3a2™ u©cÆhKݸS#“Vª7ׂˆ,z`¢éÍætW.k_¿Uù(M8IÅʯ/Í2Èø´él§:$ÌÈŒÑÞ}q À쪕2…èÖ)·Ø`ìgŽ wØ)‹ØË™6=5¦2Ry¾U‚­lØF¨ø&4¼š9¨œRcÓ ªÑsÜ‚Ÿ@3¤¯pf£VúÆ´1çNи¸ÑðjµÒAqå½ ×\Ëàd}èÔ½ «q%µJÇ”ÒQO#Ç}LVb1n^#…ÖÓÚ½!*åâM3ùtÌÕï6©¹|JæêSN±ÎÏw `‹Z÷Oµa¤éI®‡=Wx¼&Ã+¸÷üÔ)¸í‘©ÚÆc¿0Qt“Òè™ZsB{Qh#UH"3(ˆ&3ãÞô01œ<ë}Ö:{j pcëOŽý94%À8\,žžrM¿ýÃÎA–LÈbÐN’]Eßë %Œq­K—.·®³n+’Ÿk—´A­UèRèc €°çDiäWõ5¯èRÆ°W_zG‚’§t¾ñºT*׊žÞ³Æ“!bÒt°î©H{‚Äb†ßx=e[9·B1
-ÏÄŽßõkŒƒa»ŽQì:×R­W)Œ¿ ®Y< õ[á­B?$ùÛZœP´6’\ô€Xx…H°HR-ÇHà˜°Á90ç)ZRÙ°”鶚aëXLÆ1‡è!À·Èò 2¾å(ÚyL&þE딾z3ðþ$RoˆÚ^u’!ÐøtÌ nù­­“ Õ¼üM[1mKV6wb¡ãù“ÐÑ?¬1ûVÏË@›tx<zk ¸ ©˜ Ûæƒnb~N¨ð4R¬+ÊB]ÒK¿× ¼Ì¯ûœ,&c‚—*Èd‚ ã• ¾…ùe(·d2ZFE‰ÁØ 5˜™¶ËQCù€ü ª}ÎH“Œk“=öB®—‡d~d’*ë’¬öe\®=}ÀÜîfr äÚ<Àæñ‡&²¸Õ¿JcíäÕÀuWvëé‹ëÍ°àZ䎨|’º4@[£ 8$Þ&¤à•²§ß`PÎ3;3'ülD‘ƒMQ
-°z +&ð~:ž ñ$r²ÃýY¦+F«[1OÉfI¿ ¥òäò¨”a¥õ3ƒs–QJ—ÂFÜÈÜÓþRoë=µÒ_õõ‰N€pðJÛsŸ‚sa÷ ÍV,E
-gCK©^åY"?‹óßGEŠY¾îZ>iÆã£ÈâÑÉ~0Û·Ãy{VÓ¨4NóbµRùZeÀÕ¾àdè'•@=ëUÁï)z®pA„Ö²úÓLl3ÓÎUuÈ6™•Vù?4®k£2f'Ø%ÌKuŠMH?†óog/g’ZË'X»#ÁŸ\ƒÒKÕo’)’ [ÇÉÓ(²ÃŠÌc*<3fŸ\ÊS:蔎ïÀˆÀÙè¦ß›í§OPÅ,û‡f#9-5p«£š::ʸAaDJÏxL8BKülxùÌëMËF 2÷£#n–©s°Ê“lzž¼”ÒtCê•MJ8‚Ç{$l<bî?º•¥>¡Y¢@Ü眀ŸÓ+{óž ˆR~<"GÓ¦‘R|€¤ç¡›ð>žìÛ—?¿¤ÅxÉ`
-€¢WµÂ-½Q>ñƒ¿DKÙ3|úͤÿ}½Iõ÷NqB MŸAy_.Ìb\ô$<kG¹@ ª¡ÎƒÙümÌC0o/Ë!c9ùê·AOxö;ßFYÓÎ-´O˜Åœ³B؈êD&gyw>|BÄÅ4G±·'1Ž„
-Ä+4'·j²g86Rª
-’«`á­­ Ê …1Ö±!×û•0i¹O(Á×ä%6‚µqœ<%tîcÒ4 Á £ù0 ¯Í‚¬\Zƒ)zARN‡„>ŸH<)-Œƒ†S& ¹î;! ÎZÓgƒ*èe.<CÆ,òfÔ7HEJk
-ÛHÙ‹_ÎalÐén©7²„ûÁm¿Ào²äåä¶ùï=}îÀ÷Ó™jÔõ<ä%›2ºÏI¢F·ò¬‚`ÐK2ŒJ«v½ìÚ:åƒ_Û嬠¹o_žAë*0éAòÛ  À÷¢S,“Å[SŒý†h\Þ!?NÁ|#7ã ðóÚ¨)·e²,ý¼V¸9º0GO‰)P bÐC駂ü ¶ÐšzOÙ“eÛª.à°GˆøDB f21>ït»Ù¹‘Îs O­ô!¸Œ=|wrÞ~x"ÞM@€ðÃ5 èbx§&
-ÄmøJòyz@”Á•”¿ )Y/ÝHÏ-ÌwgT(Âàó'sã
-õ¶SOç rãR]?ÝŠ  qW˜ ·ÔôY¡RmÈ¿g»ì4<m5Ý/E·Ô¾|èÑj_ò)jrisAp-x¬°ÖaS‚Å°ù õ¦iØ$C-Öfìs [:ŠÚª\ètcü;6„‚C«lTmxäÓ8>åJÒçñpyâ “"œy¦µÙrÆÏ >nV¹\6"|tV¸ ¼xb'ŠÙo£¿‘ÏžŠUé9ëäÛú¦Pã%ر1´²¡Ö /O¹ŒÌ¯ZþÆÖŠ
-p+l°T°¶ÆÄkÃC§…¨•GIvʾaÇ? .‡géá<î8ÿk,¾oÿ±m(Á5¶!ëîN·SÝþãDÂÔ“©€t¶´bRù‡ò2É­#W¢è
-´¯@`ߌõ‡µ‹j$ïZç&#žÿË$•Wc_‘ÉhnSõÿôvÝ÷O¾É>ýqÖM®O×+9¾˜ð ô×ô¶b(_ÔÌT‘ã
-Ž^Êüª1¼d@ê’ Dx{ðGyÀ³™9Z…/+¡5mÞoèÀ¿‰Kd'¦i ƒÃ©U®Þ‰ò+„׳ z/Ù§™G„°[n1
-ˆ8jïJûsLE÷ã
-,·V¯-wLz™l\pq0)›TÊ0u½‘¹^DÿÀÏŒ¨(¶;Eü\jdzÛý€@JHIýòľÓT
-7EžÖ¬|Š$½jX»BVPäÉà z`…ŸÛmÂKI‹„kDûôÒG5wècÖÿx¬ŒVŠ)2ظ™Â.¢I‡âíÇD:Éå<‰×ûSaæ—O4ãÒu1éf
-´ƒ«p^´”™ÁHVûâW¬¥u¯MSÓŸ?K÷›Ø(.WE}D™ª†*ÃAVcl_,‡eˆ«ßhw톚à$£äƒÓsEd;»IÔÂ>ñÅ’bGœ%R°Î™R!f4”Ãl%ìJÖ¨‹sN3šäÀ.#”z;Ãoˆœà{Wx˵~ §ªAw­|{¸]UµÜ ‚?]ö§LPHi©Q_h«y§˜Z|dà°± Ì8rO5üƒ² ¾ Ÿ™Yç6êP`†°†=}¡²òGpÞÂ>T­ÍtHÅ ÀàÉ#Ë[³«0à,q¶I (ÛÁn¥}þ«à¡7gùõ±í"+Mç{ õ9ÚO1»´öÄÜÓšA"ȶ}ZÒÄ”~Ó hfðÜCZÂ?Ú€Sò!­a5Yb?¦5–fè¥Áû°¢24­2€‡´DŠ£0+§´ÆšõcŸÖ€6¬Òü‹ï)+^‡iY«dOK»s®ZÈf©=£ØBh7;K\|Œy#"©¿4æFÇÏ9Ž+^rpoÃdžG·Â9½m!•ò5%Iº•^"sÝÆØ\л?Fý9Ä×<ŲØï-h³;Ðm')DÞ8¨ÇØî„ ¨4?FËa'bø£lméÛç–ÑÊ÷ÄoŽ KÖúa'¢øØ Fu¿‚p*–¤É0ï–V‚c’gÞÇJÂ`XYô´] Aâ¼JRn£ „ çK˜ŒQO¬/9*VrúËÆd´Rº¼œ­  /ïZÒskì&*ÉMYVÚª‡+ ……ïcti‹SeŠXRÎÍ9ZchêÔÛÍŠU£øMAõTõÑ*—n¿ìÜ¡†EóÏ­xîÁ°Qsû”óe-kÞ¨ŒßC«±ÐHŸ˜ 6™NÃÚð%íúÉ…PÄ)yÒ~‡wD½„3 £ƒëWj½c6J•ë§\.ê_D ?QàÌ‹e^×òn@6 ¸ìæÂDÙî˜Ç8AÓ÷
-‹ ¼Ld‰pÄáWq5)Ÿæ‘x9t|²sô·ŒjT!¶/¦Y{–áÍ׆áÇ“u£_EÈÁƒ_é‹}W&j%µÌÌ!hˆfßl €¤öquæw‹•Hn_Y\x:û&OÕ}Ø öÎÁý,‚ÆÒðmÓˆ‰i˜ú3–|úMò°„Ñ伤\„ŠAC+¬€`ŒPoÆÄ©”)¤1ÈÏšˆä6y~Óã ¨
-ÿR^&×rÝ:À9(-6
-‚2Fþb¬÷Ò ™K‘›ÈZ¡Ðø$õ0!èeÔ:'øŠDD
-AÝacEÿ#ŸT(OÒËFPä‚zr‹}×q2%Li·#:8£ü”šu(²™f'ëÄ ü‚ý ,AÌØ;2€ŽXª³Ná}
-À÷¦E.…|×µ{ ‰ýF¹ Ø»=É·s,! PFyܯRNô‘“‹==)ë3DæßK“ù…ÅBûiÔ{3ƒ:
-êbéKZ}P2Яàö¹RŒ,ó;c¦©Ûýœ SIþqŸW*”k¶íÛL¬„®Ãf¨ O
-¯žù<‡gbSÈ·‘säM}÷\Ü@‡‘Ù}žSäÖ éÌŸLXŠÎÚé\Éh¡ŽG½®°}ÛÀžgÞC.:ò3_šÉÃ3ê+•¡ƒšL¢ðC0P7`'ºmù[H´ŠýE01]Ç›½Ÿ£n:ªp ^埸m“
-»á@[ÀOÉñ·ã•ÉzjÔcžÀ°bPªìÍ·Û‹©8ßÀÖÖ¡–¬¨rÄ<ûíÜ5k´3Ãð>·çàq@_DLÿóÛb)Òh |ѸBÐ*{¶c@*“ÃQžk€·›ÒaT-^>`˜¤z
-Z#µæ„ÿ?‚˜;;·ÒÿØéPG()ñ®9¨S}T3?BÒÙ¾óV€Ÿ_©ÒUÌŒnsH‚px(ægÐç¥2ðBVͶ†ýJÌ¥JŸÉ¾ôѹŒäCucþêv[_‰¹”ò?k´Jùí/…âI‡d‘ b‚p8ˆ\þÆ¿ý½ƒ Ú¹LܸÄìž“?ŠP­b.Q±y‡˜Ä)|Ñ}"AèQ©XŸ‡X;[Ššf¿Ë>‡mo<2-ø8JÃøÆmG`3ÖP]ŽLÐSAóÐØ™O&D‘˜ëý0Öû˜ØŸ¹ÏÁÃNM@*ñ*%ÀN5ÁîYHM¢Ô.²d¥Ê˜Gˆ
-ƒ+˜;þµ‡ßØYÜ‘Q°ˆƒÉiÜ(üçCÀ¯y!­Åò—q¬…SP´ª*T#„GËÏÕ#í><Œ‚°>M’1ÇÓ51Îè|¤Zí¤~°Ðn¢1è;DR™Y+ÃýAµ)ˆ%QEk=MGŽ"šFÛj”¤ Šâ±~F n>¤›˜9É
-dCóýd¢gl
-O–ŠaO[“VM:gPÞü[¡uúÄÏj®)FúЗ(žÞ0·q´Ð„ÌÀÙ‰p¨MV¦÷y7:C\Õÿc¼L²äÈq zÝA'Ðã<¬³–uŽ^©î¿­o$à©p§×k­‘@ÀhØ[j*d?~hMbÒJD­t}#D›Íš¡Ìœ$]ûÀ Š¼o‘6„
-‹ÐØx”sȵG¿ø¤Zô<ïeg®sXíÍBºby³ ¡H“ãSŽaœÔE— tIv)T
-¥´,å÷¾åAA0°!sï¦ýž+Â÷œ3{óiè´;u០ÔÉ´ R¨'7§ŸµU§/©)‘¡¹ê=×Áа™œ‚›|O&°RÁ´!ü׈Óq™þ3¬ØNˆ
-  `®/Ïùõã:y¼)·J–±ÿ7è”ä {’£¤¥uùœä€ôe8ºÆú%ÉÂfå*jIr@H «Ò9È@*è:ã5É1Z0‚ÉUÜÝÞ’jŸ°Íï}Or@hw¬nÊÁCÚ#É1ê4½K¿{0º%9 $ ff\éêÀ@DT°)¯¼Ùè3–Yƒµ2™GÏ?BÚF¨¸ôônæÍâ¯_scäG# ¢Ò0õüØ›Fs³ŽÞŽJñ8,]ƒ¦]:sÝÚØtæ¦Á^ÿßøó/AWöBU)ÈžJé!0<Á4þügƒÈ‚•-§,co~X>âΨÇâ©Ó´ Ü£Oª{źEEEj¼C¦’V‹V0— +ƒ+’í0 7)ËЖj È†Ý ªÝôJ^£É ·f[¹3Ô¡›;‚3àGÌ©ÝŠI¢ï gãæ åY[ݲT• p¹ó¹vR6“ÖÍ׆p”,·”©„‰7¦~yCp.°*íÁ}+.$m2m „ÐК]W϶NÂÙäŽÀؽZ¹–›íBb‘ö†¥][}‚ÕŸ D;Ù2•)à?¥[¥À¤«„j »7"ÏóR@ƒ T"WFjä«~X- VÀYl$Í“àÛêö_š8µ&6XGó;÷ Ò‰$tNçîˆ5rT«w~]C®/èÁiÍUyZßÜZ¿XÖ9Vß ý¦-
-Ôl|<ÖÖÖA¤¡èôµ—áÀ_4ŠADÿEV:Ù"‘Ò…%ñßw¢X¦ñuh"úVõê!ðµ@èÁÚ\E
-=ËrX›C Ú&ØD6»R"LÞ|#NÁŠg:‹¬‡fÝa~0…¤¸.Ù¨ó‚qÀ…NÍ⼶úOÆ9…MN²m(¢•mð»È¸&YTª¿ÉI Ä
-hÂT¹iÚ{
-k€6üðF`p´ÊñMpY¼ŽK
-uD{·¤Ègù¯)§ƒ~0v˜Åv˜f2pz_¤Ò#݃“1èˆ×z^S4t“zÆáöuðLøCLd<R)x7­óðÜ_ǽÙà¿_@mÅ>¢“ä¦àª-ÌÓ¬3V# d#’UÌ;¡Â”"ìN+ª¼Ö\pWg‰çå xYhs4̓ñ_ &L~w–å¦æÊGc‘à¢Ó)ÇEv;Úlp«P%¾—²úVx§G6ùgCHZDLì‡AX„ÂÃmwåRÙáŸXÜÂ>¼2 ê {ÒRv¨óªŠÙ‰éµœŽy-ssÓT'Q¡…äõû€ØNôÛT(ÙÛ:YóÄѧšÇagï0q¹ŒûáNŒo Ù—©²ÓüƒQö:ÏŽQÄ‹ùµÜÍ€DŽ`ŒßàýƒL¤±Ä¾÷î[ݼ…œc]"E{)—ÄK>óÈ‚ÃÄåŽFñ-Ø„«ï-ø……ƒ@þ<y!•¼˜ª©ÿ 2äFˆÑ^ŠîÞ øåËÈ oÉîZë01¿Ây¢ÈÊ&Š|¦±ã(Ãkƒæer«A¸SæD!”·ç„%‹~¥ù]”1¤èô$Œ;÷:jœ"b,}C¸bÂr4ë ÁcCájõ´!ʹöêa^¾eš·±^ b-üÅÝ^GÒ5–‚ÙixYâ)N{8ÙÞܸ´?³
- -œ gCô\m‚Ojšè8rYþS¶i#p“çk» Å*‘ê Û ÁEÀ°>„
-Mm˜10‡‡Ïãe—?{ýŒøàý¯'†€K Ùy÷è„»M+ÃȳÆãf@
-JqX„’gº âgH§A`è Ãàv^þxˆÙ!¸«ž¨^URºÎƒIƒƒàI›þB~l±îZ)ÇÐé„;ÄÀ›+!¦Xøÿ
-ŽnJŠ²ìúIˆmE¿¢ÓD¢ÙžÖá…E]SçO̘"ŸŒ±&aöäú{ʇXe[ÅÌHZ»‚±¯*:‚ö:lgÊ­—sfª«TÊ£X5W<¥½P«ìôÆ«äxöz¹÷•VBK ¥µ;449ss©¼rBä~Jœ\‰žæH¹"S,;iIÁæÉŠrßÙró³!TlgÎl% )Vp£K0Øv˜›×<=2Š¦
-µéã¹®­/§m%—ÛaÊ>Óa®¶“D–È-´Xyš1j ÛÏ­óâï€ÀГ‹)þQÞÙíù|û­Íâ‡<W‘RÇîCœäÏiòÑßÿ:‚”ä†2D_vãëÄßW'¼¶Ú0âfÓ¤<80wp 5D•$ šýª±Éùä'× ½=ßÁn“#®Òü¤½ŽsVrŽõœUÂá â…z<@l+&M¥ÐíZÜ°¯Še×V´v[¼¼Ù)ÀÛô|Qk9ض—²UÑrfAh—„·GÛ^G^M†nz¬„^hÂÔN•*Ã"4Êaï‘ƨ2PvBr(0,å•N‘‚&;DT¢T ‚Ó„|k—bIXE¼ M/Èà
-¨{þ~]‹öBúºo5°ªô/]a¥b x¹Ð%݆ÈZ3¥XÉåÎh-JOŸ uUÇ™+ö~¾@·VþS `â •ÕZú1è»üzÂ|ËOGHÄÍàÅp`²ÿGÈ=i@wûº kÓpÃ’‰°Î‡è„€7Üþ #¾ÕK ÄûÃ:òÁØlЮè "»!Egš·bšqÒÏÖž¶ªJ!T ?ð)P¹´£ð^Þp}îTpq
-…TE¨ZvÁY‘vfH J/v
-àRmq†¿Ö ‚×Ð4¯BÜ‚€ݦoUeR¡Öœ60¶¶ëæv`è†u¨£WA¹NeµÙ ŠdPÄR^;}5t)ÃóCîÑÌ»h©ìPÒ`8S/¨¦Ø´­©/²9Ktº‹Î'ïz=Ö“ ,!f>+5.ï…jª7ÕCþ€c'>?Ûi¦*À3 ½ß ¿v÷…%â.{X‡o>ÂðPK!±§uðÕx?5:–€±¢2“í$ ^ágèÍnÞù
-@PÖÍša1ÿ TV¬S‹O4H’ƒ„0†½°j‰#
-úµV”ló ÚsñïF'åº W ÞRŒ¡Zk±.T‚Yó©„€z@{Ö}ü*8Ì RÔ¾hjä[Ý(s óU.=ëòÝ%&³{Ê5™F¡ãâ‘Itk‡zGöÖd£°MÈ ¤¸Fù" w/ eÃÑ b5Ò€{ç$âE»»DXCÒjw^¡ßp<u;µ«µÄ‚s\´"A ¤ªfuB“ ÂTÍ{4Ì
-I2€˜—šO³z]g2gHûLߊuKiYži#´=‰ ´KõªUH’ÖµÓü(â=¬’¼Ê.Æ¥" ÓâÅüh<ÃW^ýô÷o„ÿùö
-ÁpbB¤ ;šÞ!XZì/ IÕxØ
-Üšï‡w¥ F{*~#‚ uO-‚Š©ŽõÖRjãG–Hn%Þ¡¯}þž~掙™G¯þ.“»jH†-…N²Ð1Jl©Ä"d üÓw"¦˜"ůf¥o™aÛ ·2ä4­¶Cˆ2áä°xŒ-Y;Ãuša£,©hÓÃØ="­ô`7+Øl*ŒÒ^ØSv¦?Õ'¥z(2ÒÕká²ñÄchpæVO¤^FÍ¥d—Š*¢gd*1Óð“›³FÍÂPÑÔ´tÜ™>97­ÌÄjÆa0[÷äbýÇä@CRl/7°<_qZÐÊéƒ Î\‡Î²>[*êÝPT(à0UÛ)ù{Qç<MCW@ EÐynœ7š£ Ð딌#p<`
-ËéPòóÇo-–• 0–D;f6Ù)Ä~|‹nAie a‘Móùcš:Ý–ûú›=ýÒÖ?þ¡´óš9FMëX
- 2»„në‚üæ#ؤùØÅPWÛRÈOÙµ-AR¨Zöªø6èc£Rz‚#êK9N%4¶SuªCQ%r°%ýv*`uðFy— ß‘ä*æ8^ ÀyzÔ`]o…„3Ѐb<⫺& ÅÒÝ•à}Œ{î缕X²:Þr¬|ÿŽ¦J€Þy¸^tƒVjÃÇ
-FcBuœaÂ0bF–£_L謃WlÉOEëðYnÀ„à6äÚÃ;`Uí¨
-L4­þ7V7ÍiëÍe94¡}ç¦\¼ÔQ$!¡¶£VzˆŠ«%\ºô*¤ô
- !•0ß&:_´€öh
-}«$qˆF¸™ÕJ´Õ=PiÛ% Ng{xá´Ä‚7—ø™Ù`bCšG³&ûŠµâHtÍÇ*ÑÁ™þ1P¢Hz¯±]‚’PhW~ 6Dm(ÏŸ|%z²Ç¬V5Ú`#ð²°¿Çý‰%”… X ÿ×âwh¡•TqFg‡Éu5
-b@×…—ºdõ3IÆw“Ð"ÆžôÕStˆPÙŠ°qš—fîÃ…™û Äž¯í`X¼BÜqAªÒø¿´n‡^ÒíSQÅž“AÂpbEë4sÖ“%M`‰^£•qÝÅ°w‹åPâ6ËE‘A4ðOßIB×BG6;¸’¨däåá”…Í!t‡ýºòý†œïúLhz«¼Ñ[ª’„ÔKò¯pdêD[©ê«K-UY*
-ÌÌ\è@8¬Ò4äÓŠ¸ßª¼
-šð DDþcdžî‘èžtˆ£ðô­¸hlå»ð°:º!Z«GM@Æöí£â£Á3ä+4¿—¢À©è)Ž%ÌCÍ·§’&4ÛŒô¸R]rGfÃ/#äöqó¶Ê+6¦³œÒ
-Ö‚8þ"kM—iNBPÃH$Á`Ap·†9NH ÉۦϱaZ[lcK-PKvagè#Di;®‘hÉ©Uà ¸öõJÞùö­ˆËÊ:@$GÄùqÚŒ<@ítMy8ì­ç'=9}©&ÌZVm9ƒ˜A ØbÛŸÁ6‹–NÛ†=¼jŒ‘;wËhäš·Žf:‹áÐáŠr!C ´)0±wœE|Z6˜½ýÔ0l’†/»„$…– ’¨° vÈÓ¥à%\\Ô˜exà¡!'Õ¥]TÈ.ÌxÖPP‘‚6]lËxÀ@`­Î\Ò®ÜîÑÐ#·ÍìôX&D’P
-¶ßR1+ aÖ^ÊÄb|!Þ °ëÜúx‘­04†¨x8h É úRÓ‹ù¶ZŽ’tº=Æ,#á´fÍv5Š~”æ½ @$–•QZÅT®bœH¨G‹æµéD–ë—o.R¢uZ¶ÃáŠ|Î4=-´±uV‘a:¬#ÞþÄè­ÐÕø?s+úz*Ò2™[=z ûáºÕ÷:þS ÓT*=B÷_Ž‡m’_pO?8)ÛÉi€Æçn0öf%]!‡adæS V$£W®ü…<ãÙ±û;`ó šç–=ñ ¶hÇÙKrdZº¿<”TÔ‘žñk¥T16vmÀÅ”Œ´„6Úwt È<­j%‘¿ïL§›&0+0ªþà/£»^S
-®“¿Öp_‚ É€ìîëXŽò/œ7(¾,5&¡T#h1$œ1åÒ»„aOŠ6©Ô¢ˆ1Ÿ€³ýäp N€D:ÖÂè|…<‘ý…ô­ ËB^âFš]¢Æ,±Û qIâáKEYY,Jv–KiOžSñæ™5«×€´K’&Âc;>t.‘—Êa%¼@Á¥«“&QÝ•w ò]¥8Ù˜BB
-wàÉu&J0êÉ:Íz=,\¶CÉÏ¿Ä´^Â6xf€C”° `Áí$#râï]$IVäjÛ±(‚?š¾ˆ<î§/)lè/û¡h•ÀxZ&®N/A›ÅBaC{ü„*¢BÛÜO¶ 
- h:ãÅϵÞ1Eß4Èj\Óî²ø©g¥Ëé[Šxƶ³Õ2*1„. œvª"g£ÛDÄ”¦Ë(VC"Ëtt­ÓV¢W‚\lÛLÕ º€Lß%™ßИ˜ÍØ%t:åÇ!ŠøtìÔìŒƤ®£ÛŽååUÄi+)€¥ ›í\ñ“÷šh‰c&û}Œ‹Z!ˆ:uê‰}è\3„¤yà™!u^ö…*ÊÄ’KL12Þdºu{5/ 9JÊ[µ`‘Wf’P‘m7‹–¸®áqç¥Ä–"À¢€øø!Ð Á·’ÞÄ,„ý”o}N ŸÀãI.&¸éSÂ%Š¯¾;¶(XÛzÇ ¥VA×! Ï°K’˜;’û, bn\ÂýHéS”ÄsÕ߉ØÊ}IxöW2:ÏC0+ôè±´•{ßÃxCÊ9 KÉš
-Ñî
-y€Eó•øF¥­Yé+$\! ´ ¿É-RâU{(A‡1#h\3øïßÈÍ/”)le¢ÅhYz—€W¶2å^¹
-Ì,«Í¡«P®ûò²IÒã6‚è tŸ`ÿ?kzÉ[8Â+êþ[½ªšê¯ÑÖX”©q€ª2_Ñþ~{…û¤ä#Ôm5Q2¹bMeÝ…Ù1\JíäÕ²~}-àaŒä)CËùOeÏ@‚²2¶‚My^¿.¸“  ®h½¥q†*c`tƒ£$H©I…`éxïš5$³lLR ÀÀg-
-:Àªoùà>.IQùr~Âè2í»'#D¾ xœ†=ü‹Ý
-¼Ï÷Öx´R$=´´Î3ó-ŠÜd€š2Zô,jk¬€Œ¹ûMQen<èRÍ4h 6'ê–(ƒù šº»¯PŠ>ä"·ˆ§´äƒs\f9y…¡ ›°5ÎBÚŸÖ Ò‚3®F JZuCòFn¤Ù<ñˆŸaÖç'¼»‹¿iëa_E·r™çØQƒ„þf'Ú4·œ,®!ÅB¢Š½å0^YðePxú|IIP‚µz`Úê+_†"‡é™-÷(¬ªŠôû»I¬¼¸¼Ž'‚óãm‹/ÂòÃ8†òbAä—ë³ß„(kÌÁ‚º­7ô–bP0¨Ìu—°$ó_0 º€»&c Ù_êï3câ.‘²z–ŽíYÓP›%D3~j"0ÛÒ›.>R"¨!êÈõ"*|Ž:Éixii> \ à<zg!
-=t¼e ÎTËX½ÙCQ¼´TÃrH‹fn¤*¶ÏpQ óë œjáwp3R@Œ»àɳ_ ™ÏÛQŽÕh”»aNóí5±É
-kË6}ò/à!`¸–*Ü‘ ºƒ‘Q‰*¨vPÄ/>Ée|
-›§¸¸ôëŽÃ€÷É
-ª`‹š>Q7¡šÝ0
-†ÃMÄûPžÄ¼  i2V2< ý¬¸™þ?N"h€86_Zw>D°-×€á0`ÔxÜLCíØLazD(
-16Æ:GÞç2»T…d¿^_J“âjÛ«ix~+0]Î jeóMyŸš—{Ù0ÿp‡Ðªpª^Qfd ±ó
-xý™>ÀDq;}ß½²ÀËŽIlrþPx#Ü«ü9!Á¼AXZÑwbÓª9/ØM®šóè‰m¥›¾WçuÒ—^’Ìáeš_0ÅJlÒÁFQxZ"³¨¸q§ÌBõ[Qy T™ªÕÈ@iïuȨ…¦—ú笔öC‘[}Ø[®±”â"¦²ƒ1ÌçBî“È™wpCªw9¡â[9Ðàœ2'?í$;®Lœ¢¥aéŒ,Én‡÷Çš"å…C›èjÚÎèpMES¢ÕKäØ«Øa>ó|Éלڊ7çúlÍ–ÓØo&Ñ"ßžû¡«6@ò7" t™oÝ@´Æ®Ô¡­Ú¹tX‡H wŠmUô wكهäÇÿe³ÆO9Œ^ã< üŸñ:8PÀaó5ü]ôó(RÏ•WÆðDZ(EÔó?é]Äôˆ½Ñ…’Ptà
-ŸÏÀH˜›dRó\5cgý¶è´Ùü©Š¦¤~QÊ?‹NðØî[¢JIDʈaÚ«ƒŽ" ’2®Ž>IfS‰p½Ç£¤­
-Ð É;³%"#g VLy ±–IÑåSA¥@ $mb‰ÒB:
-F7ûªñ¥@Š)®ABjÙsN'V±­¸©¢nïëtÝ&`ª$• %,ÐC1#~ –3¡ÎûŸ]ƒbUÜ‚_œGºZeŠCe–¯C·ã²ØMK[’y:,°LŒû‰ºæmó'ÑÍì~m4$bÇÃID„-OkHÐyx'8Žç¨GXÑW)”„8nóÑýL°ˆK×:w‘O!ãs\rG$Ì‹®.h|˜¯«‰€†kŠèÅ™„˜#¨ãqdUN§È ÉúAb;•‰W2’ÄzË FT¤´=(<&J}PkeŽtÊ
-ï¼{[=—¡É©5ª‡;<xI×Iª ü†u:\‰{t;i¥©Ëìù¦ñœŠdÌ^†IrDµ¬Óò ¸øbR¡›«íz—«lF…c‚!]Æu ÅzÒF\D¶ó`SSË;Xo[œQAàcŒÑH/¶»|z’Ƥ`§!ð(Æ g’íDsDý–ç>Êd¥l!RVšÎ3²±O#é/Ý«´0}à‡IU^ÃPFtÉ-СDYáÀá°ÇdçÈlÂ.F¾´x¾àrŒK@Rx“P¹øA:µk§ÿÉ?†Tµ/ôŠi—Í° ADš X?{ اèçÚ®á(½ðŠo¬R18&QÚ†”xc DÔ[`ì¬a“ì·D'ƈÜTÏ!‘7Ûž¾%:]Ác»o‰ rÝAä$ù
-‚äïð‰!Qå6f £ø2DÁ|P'Úß $|ðT$ÁBt}älðÆ (pÙÆSWgÊ'ƒðN|3ÿO‰wᱫvY{ŽëðU”†¤¨'‰í¤m)­»ãÃPŸ­&VžÆ×ù€ª¼‰˜–ï¿@ȳ£ë¨yéAª³ó Ç¯B 喸ÔÞ_ II7<ÇÉôN!H˜EZÅ°Ò#… ÉÔƒÚ»„øB!ÏŒxp}SÊâ…qäIxêÑVpÆ:Wòƒå ê9bˆ$±¨°zäå‹ïêv^8D"L‹Gú±y%ÉY~Ia—#‡<ýÀ!¿Ê‚â\t祈¥/w9Iò€aR龬Óæ­ï8X ÎK6µ¼9ä âÈ‘Ê $ÿÜù*S$¿ÙŽ:þ?D·í~}çLvôÇZ´ŽZφ%1š¸ÞD?_D·&["înòQï o‰žÛ=¾ï[¢Ó”/Z¡‘ÏaÄï‹Nì÷¸ÌѯïÜøz˜ý[ÒDŸq‚Ä°¹­â
-PWFMØã<De¡ŸŒ!¯¦J
-ì•7c º–à/ÃÚ,‘.
-V猻¸ì*|3HD°ï”‡&ƒrâD”qú¹×á;µ`£gùRþ
-iÁKgKòEàÓpKc¯3€×É7)Õ·¤‘]I6Zó–ôRù,¦>$¶ Ùe}Z‡š+¹{? ŽÎÅýR‘)—üÃ1ûðbÍ¢5L«Îé;qëüC;FçýÞ„²aò»{à¦÷‘SζWÈq<Øa0ó‚ùÖ«/pô95¨T¾WÚCoJ¼-âÿƒÆ Xcý( W5ÑvÝ”š»Rõ&у/š²«¡ý{okÔj¾@×2wœº=ÕàÙZ’A{ª0t€s°á2(•“|Ê‹$é'#R׿Ÿê!ªƒš%%“Jgy… ù’åG*=ÇñÉ©¿è.—$9nˆ^E'˜ ~×smG÷ßêe(©»Ø‡C¶Ñ$ H䧢}¸4ÞÓîYñåfŒÙ"VüŸ=6*8Ó¡up½'
-<z1…J°ŠZÐm—È” =Øñ¾K®¯’˜úc.–æµ%‡ÖfÔ#£EÕa¦ÂÔäoÛÇ´\+‹[ üíû!ÊT4®¹E‚4s--Ö5—]Âx«a5Xä¸ Å`…Ô±kú•TIXà} Ö‘-ǃ./á"Zu Yu—ÐN¬@µ¹K`‚,ˆœò½'å*âBk?¥6yÔ¶ŸÍ<±Dg¤U`3ˆ# éïÚL!{âaâhÂ
-ÂÇÌÅFð‡QFqù@.Ð9c/£@q[­Í[è4@Ûü=¤ᔋö@‡j˜¯ø僃Í8*˜h"†K/ni€‰éí
-iÀ×àkåS·ÞóÑ §ÈúÖWaùñK•g‡ýH÷b&ýÅò›ÔÀùnIIzÂ5Dó%Okû(".*šÈ5¯_§ÇÈ“’
-
-;6¥:ÜùkWpyÁÍrnIRP3TgùÞA 5Ã×½5Ï]‡"ü­,·’î<žS¿`Lfy–ü¡ÑdŽ@‰„÷}¼ ý• Hò~ŽERþzfl´?MOÇŦ{Ô$å“N{ ¯×jæ: >²ÉHT|9ôÝM[Ǥs
-™Ô¢ƒ ŸÁtz›ò:6
-8ñ¤ÄÕÀŽ’%H϶—j~Iû›DÏî|r½ þÛA’þW€
-H‰l—QŽd· EW=ÔO
-lNvŒˆÇƒÁ‘Õý«N®y˜—Æ7dæN\¬î;'ö6„ Æ-ä@öÍj„Ñu»‘àyÅ÷ +¡V´Ý(c/[î´2; îw"J00›¿ “K2(ê–Cn
-f¨jG°TÙ€B>¢3Ä»EµEg
-Å$Áᕤ“òê€ùù.žªï
-µŒ_ìR“;m ¤°!’ªOmeóC^’aäÚ;ë€îìðóÜaÌáù.d_Ïb֙ð]8÷Öóà%è‹âÒï J»×ØKÈ2Â%r¥ÑEHµÛd~"&Ô¶“·TºiE#«¦Qɘ¢’E‡¤ð][«CûO]‚mYÖ æ­ëimQøÂØÈ1 vù1×oäÞ$Iq+au )¤4ØÔº™[×Ãèä?4Ù™±æVQ-¾ÃÏ4þ´Ùºj{7ƼÞ¹Ô]ÇØKFù—RÉcÀ½¨c˜‹¹HÒó©•:æU«îMðD†úôÉO A6K¢5!†z9Ðœ]lš­¢4é.뤆ÿHä÷g¼˜p 2œÊ ñ1 qÑ7ŒÁÕ¡ $£h†˜Çqÿ{ÁézÚQ+‚´t]ÿM‹6…´B¯() ‡…“B±ðê†wFö»Ý ÍGö%¯!ÒÝôœá®¤„P?R‰°Î‹ƒ•GA÷Ì"*¼d5è4 X>ƒm½Z&°À
-,8d…â"Âd ¨­çšÉ
-Uc[³¼!Xl\4Îû þ©õNéZ†Bä15žK¨“­±8X;m¨Û™òt:ïS½1HÏfðγwÿÊŽÆ´fØÛqF"“ÓfmZ¿É'ìÉ ä4“˜| ¸(Wj€ ZŠXa–’ÝJöTÒëSJ…£A±¤ñR˜GaÄÓOÞ
-\=4t²3?˯›Š¢¥—”âa¼di1$š´è¹]vx÷剘;¬[ÙáùZ ŒßØåÆ®S0V/!ð•wtë5¼H° ÝçÚpØdä!˜v0êST_/<æ¨z‹]­†¦Ñ±:`åÊ‹F¥‰C9È,æG‘»ûTœ­àíZ«Õ¨ÐM²P@UŒlðPŒT»óf´¢”Œ‹iIö >Üò„]ZóÖÃ7îa@Ÿy8´‚… – A€ü±Z¦†ÏAž{ŽÃ¾H6w@£é5ƒŸÍà… +[A“ŽØzê´8c
-Óêi2vÐHÍø‡‹sho¶4§Ð-4TÃ.Z¨#bó6ïR E[Ni™¶{i1¶ò\M‹†–tˆ€ÖUª
-’xÌÕÉ =P ®ã¶±ò¸3’äœ6ªÓð%"5³K#€¤4@ú,¸=†ú †ÛÓNmFZ°§„Ò}ê°Õ,ØÌçMѦ‰/“LQ0’9™íhŒbuÌé®F/ºN
-ì’}W%À:PbtÎ[i”’– b®m³‰Nɪ½‘CcWiè#¡üWцâ˜z»<Ý@ꣴ6O@iQc¡ãÿ¬—mT¹…Áü‡û%DaðËõõuò‰·$$³D-Qµ&L0Ýhh‚ø÷yNÙîº{–|ˆv‡»n¹\®:u!“g;I“ IÖ†¯îaÞâ£2mßÔ+ûn¢¨û{L¡Ðf'hÓô"-”®)µ%XAé
-}ÈuŸ–²ýIÈt-v*Ä7}ì…ᦖB#¸úªê¹RI"aŽ …n% V”^øXØ­›×É2)õÊŸZ¼}[IŠZÒCֶƯi[èF8ak0ÚÆÕ¼Þ‘,™ ;‘ÞðGˆl2Fƒž¡"x
-ñÖâ@+LùÔçzvÕÔÄÈP ½ e·‘˜YXÃ1·jE{\ŠÂ…¡B. f:·q¤ÏÂ!¨¢I¸BoÑ ”)£I
-£„–¦<̃Õ:°œÔö
-C/§ 3òž¼3Å r`‘„#èWÅÀeOX!B– ˜›h¬V1T«,÷²*@$ìž©œm 2œy}ºŒ ¦Ù£b}C0‘â¡BQ³GDO'irÇV·X%5•hÄÍÎgF
-}ŽÔðõä©a}‰@´YÐæƒ7Þ÷ñd†T ÁF¹Š¦ÎڌۢyU~ØæcƒŒpìŒáp/ÍõÃkÚÔTÌ -Eý3Ç(Â:¾ðâñ…΀YÔ^
-í$)(Y!p¨'l“¦N€©ŒŒ4Æpbƒ2­)€…>æJƒÍ`S±{½š‘/ÊbÆô áM *µ‰X<“1çj%L… †Š8¶¨5­4t(y<ᇣíàij,‚8/âHïÌš‘½ìÑ­D r°G´ÌS&MU<zj>t`’Ä3·qî X“ 4Hp”de´ªSpbï G€‹pÎ{J‚òÔ·¦! îÄov~ŒI±0?8‰;©$ù\c‚{ÐFIª€Œì n/. à"=c³ÈÕ
-n¹
-®Uò¨æöñ„ Ö)D½“8¥Ä‘>Ο2`‚A~Ȩ½É‘Q¦i;Ò0)Ñ‚¬£$^ž¸o†‚›„:.‘¦›Ý‡qgÅfy¢›x3AqÎí>Äš1’¨Ïj¥¹ŒSÐÜ09Ì€Ñ ¢¨ éž“f!Ñ+ "6 ND°Á‰Y©@˜¿.äzPJ*²D4cõ#é*?³é>,¦ImŸ¼SÛ•(Y€£Õµ%H¢ Æ~RÓc#è3‚œKu‘:P¿¨DcY8Z7[r‹Õ;°F+²€TL`X¨±th¥3«;ÍòÃÓVÀ1æXßš\z½5´Z±øf!q˜æc ëÐ2W(/â—GV`ÏyQ·MtÅì謢Î’¢,Dý¤J3U¥¼Ô—%ŒæÖ7¹£¬Š† ¬Âܬàï-q,±Z„,-YJ­R©¤ÉFQ„Q³i4Ázd0w¨e.ÖeÍ‘`BVzQW@`öU’&(hQbE[]° ~ ù@¯ß§v*
-nc_À¸ä†[‰$›4ž¬r€Ô¤ò¯sµI;š¶æüÈ
-Ô²¹j% 9дÆÜ`ŽN”k†E#¤ÀG¨†¼µRý\ÉÆøÄ’EŸ]-Lnp5Ó€³˜ˆ
-B'›Ž) <bIð6™
-mÌb÷LDU=Hë%Ñ…af#û很Óúµ6—8ŽwžGVŸ“3‰*úX-µw#Õ—IÝŒ³&u›wÖk¢f+'áνAœU™¡
-·k"¾gð×ÔrxZ¨ÔÙ5Öoй6ÆŠnÊYW+­Î¿Œe¸§µišõÔúïWÃõó sŽ¨1–‹J5“Z][ã
-ÓÕŽ
-™Ê Ä÷D™Še×[²Ï}ØrÑ[v­°\W€ï$ï— ÇÒË•Ö÷K<‚âfUŠ{ÅÁnðüt C*ý‚«†’ó.i—æïmQ[ípÀ²§{+Òü9ÄÒ˜%.’C5ØåJ’%œÄ,w+ëÊ`MU"™Š¦ÒYd*ê½@iC’<Ö8‚ZðEϲ=?±|$›–.+»é˜éÃâ Þ<~?,ÂÚœ|Êg8ãO„«òØúw” ÂH N)d~²x¯úÄæ Öm&Yø·žm‰.«?ÕEQC
-Õ§)¾ÃÞ›3_…”ÒË´•KÓ­ü%bm^é« óÕX?Õï:›JŽ³½Þ¼ÊÍÃþH%nPMœ¦èd÷öíÌ^.QW,ˆ›~Ù
-opôà†ÃTŒ£bv€Vgn={“Án<ƒÙ‹2ý"
-ÕNn^˜Á%2,Üýøó6¤–+ø+Ë𢵺֊„Å¢qZ5é V§@®mWU~ 0Ô2ÏÖÓ¼uó&ãp.½Í€Uhp•cšw}¿{ß_°@iÕhÊ*à§Ô°,Îò1NÌ[Ÿñ@—Ïîwã…Âz23`%õå3o®ãFñ«·x¤â²ŒgGsس+æË篼r:UGÜd%òJ|MÀ%:È¡`» ‰n‰×„G"¼P³8+]°Ü¸Üfp¥¦Eéº,µH­]tT«ÊSgÓÙÞòï5ƒdï:ªµëÂ5ßcÆÑR¶eÀ¯>noÀF5dfGÝâ¿cç nÇú8˜²¸¯ƒe Ìt#@› J¿íÄ–J©¨Ëßôƒù9§$¥ŸÃ© >æàivÛñ¼vS€Ú¥ýüìÌ‚S˜ƒÊd”.lÕÀR¾~ÿ=/ÒÑ
-#5 R¶â$ßûý[â7c‹d¬ã(rÓÔöo1@ö·`VʼníAx&mÀ2OË8X
-ÏÖàJ‰¢¶²"nñ÷<7°#¼z1)N•X§¦tho¤í…úÐs/i¬bj˜þ“k¢tŠ®+Í0GWËâÃTY+m=çOÚJH/hM‚}wLôxÈ =Y®œX*+z¾ï6±XT!Bpï± ^w€}(-/˜ÿôC0§¬ß/lÞ•
- ×çrD†0Üži ÍìéuöVÖÇ:ãN«W\|¹²k›)@í“kìÚ Ùß[¹¸
-­ ÎýÍ.”ñßÚ?g¨»\’&lí÷½˜A\ê|/X:_=ÿ
-ãH^—šë—vÆX=„1~žik×;N4€15- F‚¡é•õm‹”Ó˜ÝdZ9º^<8$4I“Koû n$¦ú~;.2XÅ;
-rÖ^‡î±tXˆEæð åŠÚÅô'MŸN‹;RŒ^Ǩô°Ðªd9€£äY‚Y
-€`„?íðYÿ’ïÈAÏ]pt…Y°l2n{e;Ò™›u>D[­}¹¾5†Ia=kihEëia
-óõ
-0Áö^ɸÚ?¦ªùñYGµO©äUàÜÛþS^¦†þCr`µZ×õ2€
-K¼Q¢µ“ì½ÔË€dÝŸuÞ~èAÖý•X
-&x›Œ[:õD=n‚ßÄ^ë ÐMâ³ k—t“³h=gúnÌARLØ‚JùêàûÙš@VTë—Èx¬µ%û p'Áö4µ!x΋OŸ¬xZIå¤ûX\aô:ãl'Hgw•ë
-0"*
-hs{ήºÇÚÞT·*€ìKûgþ®º‚ßÒKX{¥\V%ÁçXïÚݵ¶ÄѯR8jX'î·}8«
-”¨IN5õÃÈ©Há54LÑBJ$VðQúù‡ðd=¡'aC(銠À«
-t/A—Tut0ÐÊ9÷¼b݃R¹É¨st p*¥Œê¯r
-„×K¤é’ Ùec’שּׂç¯8Ÿð”2mÊ¢æÖ]Hš»¯Ø”i£G½ßªzN‡øÞqX—›Mõìy~¹ÙÎÉ¿}+†-XŸÅÁ‘bW³ñÀÝ6v ˈ—ïœ<tõNžåU
-Óð@\ä\~jr<¯$Ê dÓž°þòðriº¶z.Pfù4ÙG€»É ÍÞ…YùÌp„ÿð{éOtúÐa—è¾uÄÌ‰à„­ŸCrŸ}
-†’ Oa»¨š¹Ë‘g1_ø û[dpÍ*¶{­­IEípÎõ«Ì/€?º–6œ—bÕ8zºtAªŽ®B
-0D_Ã{}/7³á¶º•›Øv…5ùËÕPÖ­EÕ>ˆãR0軀6ÕÍ üÆÍz‰ù‘êÆZÔø’y}TùV'íIi!¬cÙk¼®1Jì_ÔÞ¾
-ìIð\1^cñûè;‰SLÀqFTÐE‚ëˆöªÜÐjm6ïÖZo¥Ú{´[•™C±ïÕ ú¸Û;Jóv{¿u<_IÃüpó€9Ú†~<: ÐÊé68;°EFUòÔiš•8jÕž/Wˬ¯Þ^Rúüo7õ¬¹_†ܽtÕ.×~ƒE·æ
-pÅNÓ
-:“w8»-¸sèÅÂ[*À
-§‘ÇÜ SßɲÅZvFãB?w~Mê:lå¶fɸVw5éì&pœ/ÀhzHCó23èsߌ;W»E* µÁ hi-äÅzŠ¸Êfg
-)<ê¶/I~–³>ÞðšàEí3Äi’FÇØÅ
-t¥LÈ âqÄ 9g\°0,y–Ë/ð ó—{µ3Lõ]ÐÁXGMv%«·)¦Â«à>¾¤ßA´¼Ëöx¾%ÜIYR¼Ö&ØvcÞ¯?ü¾ou”õ–Oü-GŠî½÷•ëzî7tI@dR¤†ÂbOgçàÔ_7-ŸõùpE½›ÕŒ—Î,¾Ž&t®,ÊóÔçŸÑÆ8×Êâª÷êN—Þ¹'Í(
-PiÍ ¸“»1‚í¹IQÑÁ—³Äߦ¾x¡©Ð_¨‰ †À*è*3  ©QåÕ±€ÚJ+"ïb
-hƒ4“Ygoá
-”§ðQÒ›¼ç.¥£eÝ!˜V.6ê«Øç·w€=³YKå/<¸•Þ¯pÙÄ
-VÕFžûf+³tå÷HFQH««ù¹ ¶Bâš–A“—™·¾ :YÅÚA%Ò" JÌ5ÊBõUÃp%¹Ú¶ÊUn‘ŒÊ4Gõ(!gÖ-jÿ­Œ]µžUQÛÏd%OÁ$R1øŽ!¯¦¸oh7•ÁCÁqmÒàyÍ•(‰Ê¨åš¨\4¾•Ê¤Žù–…4 }«Ø …%Æïç4Rýy}l‰ÿQŸáÄmšµ6ëPÀ!æ7&˜õ-:°‰Ä„GvM)A€XŠÇáM0~Å@áQ€¡LÄq¿ÄaL”ÇTËžÓX•û
-= ’²Lû%Ù3,gâ-°xqËG£Pþ}Vâ˜N†Ï‚U<ŸµV:V lYåDå9Ç™ïä‚ñBØk*[­„yl´õ¡FŒÈ(0/“¬_ =ú óÎH/¢Ä ÁÑs:l*›Àà=¿žKN@ßj~é¬î&亲Cd rÖÃg-ì3>-‹\–ˆ^„•ÆªXyZl: ƒÉ1hLÀ
-“‹d£X5F Œx0QÇ{J†;@ï1Ê›ÆTßp
-̆1ÈV6n„wŽvR^¢°˜qÅ
-‰©ÊvP;‘5­âÊ
- 7^ Ø:jERxíª¨E›!N¹+%Å|ÐâÕH5´Ëše%éh(3TÕ!$žgÐT͉âÕ1Qam™, ‚Äêóâ"·’FBƒe‡¬(³àT¶Ù,jŠØˆùèy®€’*<bbŠmë²Í”ÑKr²/0O"OŸÄº~™m€tŬ–
-òšòžÏz€F¾2Í–wqÞ-_mn4¬Aâú·yºàMÔ)g8ªò ÁËÎEtIGƒa¡:~—vDáÐö•Ïûº³ÜJ½xïŠ@Áu,®[R¶S[Ûã¤Óߊ°BìœX—Ý/’T,Í@aƒZ•ZÖÄÉ‘Eþs ›œ¸Ì«Ã˜”ÿ½Ô¼ðbsð'CŸ¶íØì\ž{íô™•£oά®ÎŸ^.àkóï/.Á/X^žéÏÏ5m
-!ÁS×€…ÁMZeþ
-Ö`ëØ…§†a\Ñ2Õ5±%80°Œ;÷÷@À-JCsPU-‘“oö`éÝ G
-iÌ"å3n+öT×½TÒ©¦S7¾£q…Ïz\õ ˆÆ-2V]£PU_ R¶—×UÍùeUWøNÏYüžür9:é§a³¸¸&o~õXÞx° k¡ÐËŒßG¥­ã4ªï#¢Ê6:®8J­2nK)jìÝYP4î,©/WQ‡|k^q®´bî¡c€Èg&!›´²®l.‡— »hsÎÖI¡
-…Š࿕ѳµˆä&!o¦ãã—‰¸¾»1ô–¢61ÝÕ¨SšªlÜz ú{þ‰äLyEÚ@‡u\Ô9V‹[®Ï.½ƒý : ¼(#“Ž±âêhÃöãÖ÷óó=ŸP U+ Û$ äÑPˆGGÁ^ îÄÀ^# »ÕdÂ<LÆ4mj±¨EÌã^Çá†×O£>`ÈT‰Z…¥Uk?°R€¿ÂÒxãÖLϱԿº?Z t¿W˜õjˆpÐXXÔ\Ú›|q¿ëýW¿ž ÖM人µÕu.Ülz76Õö7jÕ&åP¯¥°,ùzã—+ÞzØõ!U4ÑQåed ƒzMâT°]FA^#‡ÜG¹à-wêIÄ¥,ùlhšÏoÐðsÜ4P ›zÉ5SY„bæ1ã0úˆ°u˜MzÍtRÛKFT­<
-X€r.åÒ±¨[Ïb>;‹‡¦HØk.E’j̧¡`¿Éx]tÖi$S.= 8ë7‰³s×?Û|">Íç‚ß³›ß³9ŸŸßÞ®?Ÿ¼Ç¥½.±ˆYX×M&åM<®èà3ª¾
-,>WŒK.ðB*dN-aè§1]/ŸÖöó¸~°W¶ä—$_1»¼ŽNÿr˜ž~H§ìÊR\Ó±¿.?•_$“NÅÑÆäOÀ»n6k×Ôs“?²éé
-¿y¯Œ:55XÓUMj:*°UÂçBwÙ´]z¨àð`ˆÁ‚>ó˜êËø›?ì>cÓ0˜SÃBÆa*,¿@ÆíÒ ˆÇÂÞrÁ[$f–î- ?Û]:±·,8UŽ©[³3‚†©ñ“ï<µ];Æ¥~\?X’_ÌýÜý×÷…Ç*ËÚVw›¹œÇA§¬c æPí\‡¸ÏUO»M j“íÍk/î-ê[Jqûèdº¾4ÕöÞÎcM —ô[±P¨Û³}ï><^ŽØD U4 T §jwQz
-x‡
-Ï¥M¤îà’² ¬¾FÁfQÌ7À’ì0¦}ž£œÛI#†Aø†Á½ö÷¬dý¶ŽÐIÛè!â1ÿui_§týGiE;Ë®‡>'–Íš •"ªöÒŠ¤¡Ž; ¯s^Ï›—þ)>í2‘°CAÂ>+þ ìR‘WG‚•Nƒìßð…¸ç[ÜF`’ËxltÆ¡{µ¦ºr
-ðÈ4¿¸ êæáˉ»õÍà>3ùðž‘ ý•ˆ¤‚$$½Pˆ
-N¢âÀ¥ª4 Q‡’‚-b.m¸Î`Ê6SŒýçÎÓÁãÕ°QXÇnÿ›Ã'§kC^Ž™…Õ¸aˆDÌ£dÒ.å³>?“qhˇ›S¿ñ¹[ÉÔD¨Š:µtJÝÅ¥4=õ¬YÆfÌJU´íGÕmëÈ«U©ÐÔÿ6Ý®7X´$b"’6q3Ž0E+ ò³œpŽ]”\fê…û<`æ–bê.Ö DÛ_Nj;w—Fð{]oÿªlæñ»«û󦎭ٙ¢ò˜<¬ëç1“ˆÍBó9Yl"H#~+ ytµ¨U@ÿŸã2}jã¾ÃøËN§Ó™N_¶q2M&uÇIÓÒØñ0›Ó˜p #s :V÷¹BB|àØqÛL\ã Ì)$ÐJZ skuì¡]IéÒ/}±o¤™ßî|Ï÷y>×$Èý_úÞ]·¼nùaë…ãYŸÆ€³Vô=„i"Ü¢*Ƨ¼[Àí.l5¦ýºî}à˜Ó²
-ts2§mʺum¤GÙHûT홤™
-è…TØfÜz%)<íütwJv}k¹¾?…ÜH/ª›Oæd•GÓÒò“YyUÆ£n%1ÍÝØ” dï%ûérAŽÑaM7á]§Š&¨º~ÝÍ…Á3‚CJtAacvý4®îËúÅÕ„§¿4½"­ÊúF¼=½ªå'ÝþѼ¦ùxV {©¸u<+,;xÕõåñ›o(·®ýÃë¾’Ý—’«'ïTµ^++‰7ú†íÉö‹«oüný_e—µ|³êXÜfÜ]DêR³°¸æ|˜‡û8Z꿶=ÕøñîÛ;…åÇnäVڧ퀜eWõ>¤gÃ6K!2< ™m`ÂÚ~&d“~m0
-óAT–‡Yp¤)×Ñxoùñ|ã§õ hmgFðurNX^¾8Û°ZÏ@+YÐrƧë&‰Y)ÈЬ_Å£€w˜(ªå¶˜¸ÅȬ™™u»öâ6ˆ2ÐB Õ7­Žâ¦ÅÂÅQCö§¸1öŒ‹Ú9Ü(Nyäõ…IYŒ™´…˜QSˆUlDÛGx‘
-˜*íSßûØ
-î¸Â^>¦•$1%okzðÚöŒ¢Š‹Œ~·Z‹q³Ž‹X‡Xð\i¡|Wögºþ¾ÿNRÁ†MH!î|ÂDGÆsQçC:rÿg66úOf™ê¹t²(¹ÎbŠÖšEÇm:&Næ +ÀÜ+ÊÆ”w°ŠXê+eýŠÈr>å×v¹eÕû zþ‰gÌž\µ"¤WÓ–õˆo/.ïN‹Kt­)*Ù™¬ŽþØüGr˜€&fijYÃK¯@¬Ö¦W´_uçpAT‘x.,ɺMý§a§34Ó>yCÒ;XC¬(nïÏÈ*fä7b¯û.›ú.ýúµªöÙY›ˆt[%™e}jQT±þ¾ýªó/“Ÿ'çUMàkÞË3çÀcH_oYÊÍÿ*½ÜñUjYðMjiàZÖ¯ì-k;÷g$7N#‹QîíîÉ’¨œX(˸ÅÛoÿxçªù}àqû¹U».³ªæ¼”$&Ûþ”xÖz!ñ7’òÄ´¨tDVò›ÍGòê¢ßaÉgp¸¼ :AkÒ#­9\–Vžx•ày&Yáœ?€=R^mû¹·¢zqÞÍÅôƒ¹5½˜Æ!SaÖ9ÿ£ŸiÜé‚ÙI˜ ¾Ÿ^S´mšõ…¸v€[Wv¸Å7Þ©Ï"®‰³-tèlSÑIa]— wWIr vER™ÃÕü\È â"-±Q!×=zmì vÝg€ 2 Ó”_ÑDø•-äš®Ÿ™”ì:ª=ç*âpÑa‹šØÐâ†Í~¶es7PCa5q1ØÙ5èE e6ägÃãOØõ‰™|ld¢°9dá6Lf
-û×ÆàºÞnVÐA³¬ÈÃ@f}jøRô™[d@ÉKze5TÈfJùô½I¯¢!·†ª¸õѧù¸óqaËæ*&¬#܆¡bÊvËd`6Ps6 (2ö”‹>xq¶íxLfLaçœ=,6ò¨£@Ôù·®[Pètíà•]4¦á§=’›„g°:ƒÉ¿ËâªN¼€‰Œÿ;·~*ƒÛLÉUð±sô—ˆcô¿VG
-“·„þÓ|ÄÆž÷Uƒ|„<g0}‹+x)OOÙΛÖ?ïL·}¾ Þý~ÞÖš”^ÛzÞ9íV5Al#½†.bÑÔ|TÙýåÖ$ÿ³|Ä„ìÍkš¡£09?—ĤuYŸ¨*åí¾²ý¢åã÷/zÿ–Y6öQ!T½÷Vz-íQßIyÁs`¾³ýWÏ >¹óÉ#é•_-YZ/f,}É9åmbV\NÌ ”§e5Ä¢¬úxvà[Ò+kHyÄ5™U¤96#„©?œ–/ôÂ]ˆk’ˢ볂’£Ea©ç‡ú°uÎ"ÚbT+¤0èBËòÚ£ÅÁJbIVM,Jo¼Ÿîý:ôŒéô´†žK{`ϽÊbIZµ÷¶ó‹Ä$ï³ãIÅÎ+á•Ç²«¿~ß]z, ^)#Áˆ)œ¥l¥ú~ðìžs_e¡ËBÎ 9ȇ ŽÊ’Ëòú”{°Š¯N{2ÀìtPþ»6dæ&rŽ1a×xôɬé„d@v›
-hø0
- Ý wœ…¹SÀ”YLÅ£q~Óv¤0e EõlÌjec6·iµÀ`Gä#(·9ØÍ!øÏ>ÌFÇŸ1‘xŸý^>><ž‡ìƒgœ…~•¶ÌâêÎLX¸épa œò›D¹UKúÕí¤OÚ>ÏVý
-ìü#}·?hôËj´»ß÷ý|žGÛš]€ûòQ&<<^è$ œ§ØmÈ]ÿÜxyó£ÌO5îÎw_È®è[ß.™Z½S’¿“’ÅcG΋ÖSKêºÝYõwëÓÊóÉË?Ûé¿|”´˜·=ȵ]º|i`ÃÝqzÏ#9™]lùŒòJ«öç¤UE¯8Ct8+þ£ü –p¸¿biZ{ÖøQìQÃÈñ†B#MÌþ¢ÞAÃê?Þz&;sDê»ø€®†ûÜq˾Ü|ÑüÉÛç·ÿ
-=P->CÖƒ\¥ýÆžrÔx—ºóÐÛ¯:OoÎHND×þéíZμO ­<øã×Iòí”O]G-#5{s}²ÅÅ’mâH]{1
-ìs¸„Ô¼ƒR6dêç!û* £Š¡­ÞöªœWßY
-Ú-Ùy´úóVޫ뤽ºvEÓÈB&W‘¦Oç…õ鶓,!lÀª¥ ³’ñ›ûh˜)bêÿ-cµ½K[€1u–¨[¥8_ôãŸý‘&‡Kb¯¨›KA“Šm6³i« fs€KZq&1YmÅépCh;]ÈÏHeM)†4 ¹• ðEzè¡ÏØ“Jbü—JzÖúoUR:àõm8Cu9ábHÛ xŽ¾’ó¤ ?ö½èM&Œ¶C^ IJ“ºŽœ_U›g9™z·W¡GƒÀWñ¦ùÄÈd9iP²q­ŒOj;9ñ;nè£ã†;»à Ò†³ñ‰yœ€K8œÀ H‰ÔµüêÆbÀ gI‡9ëë­Þ÷ö\CùÈèƒÿûnĤÞlç!×بy œš€g¶ä g¸¸Ø ÷ž”Sc?WÀ…Ž€ÿÊi]/'öäšÕ.v\‰ÄUH£¥ÃÂ\“Á±rÒbbÂu‰ÄTá_eçfÆ®}P‰ O¥ï»ùÔðd!¦éØ™W]Þ˜15e]&.>1WÎbÂVC18ñŒ
-<%©È÷¿Æ:‚£lÂnç’W‘°Ü¥ƒN3v2!;ôì¸OyegYY½;\efÅÐ}òrÁch¥WïR‹Îì".ßöö`–6_Ȫöfûª¹€Uìq‰# k#v3 ¹ACÿmÍvœz;-?³¿€ÔòA;ƇGŠà¶E/ÖÉ®ÚPÚg’3«i~©÷âƳº?ï¹¥'©ye5íú7gºÏm½ý šU¥€YQð)¿Ýžnøøõ“Ú)w×9zYw›áª]³l’óàùå;)OˉÂBó§…%ézUô-“¢ n¸á–ÞšîþºLÚÌBÔ9$ÄlT°Q­¬è×J„8¼“®3 G¯`}\ddâp©ÿúösé§û¯äg‹ËH½ªi¦ ]»
-3í
-ðÒqÆyŸ‹¹Fi‘{€«™ ÝÀ’˜ι-Ï<hgcv+ÿÃÂuùUS 9Ì¥èèÔÛL¶5¯¾N“†ž£4n:†9|¿n-§Mšb8$â°Ã—)`ìC`26†ë„$¦=Y-á°3Q»™
-(ëödÿà‚¸¡ÊGœNjU×’[Ö+EŒŠÊÚУ
-ô£´`LðÑ"úág6êr11›)ÌJÙð™áÇÇo\SBÆbÍÃ{:\”Aæ^¢ƒ‰
-vöë5ðÒ‚¸ª3ŒÖ²8Ò eÈØ£¸~¼Vð³Þ¾‹5¶eŒrj4¡Cj³U]7Co-ôo3i²ºÔý¹ Ží9UÜÈkÑùœÓ (…1y)¦äÓ~YgÊ-l)ļR\!`ÂZ ²>Nò®´_-…ÜÕç#àJµî )úIŸ’ l)+†^žÐJ“Kª^ƯÇ
-!£• L•¨ÎT]GU•¸ÖÄ„•Ò'‚³X&HïðHÖ‹K aÃpiÍôK)n}]
-\BÁ¥‚¢öBÄ`Ù]Æx‰Yå-Ø+¸ÉÃbÌ0Rˆ,å8n„ÑVb,¹Ìk}§®?I-‡³+–G¡O© y¬3?.F­“5~;Z—ò
-AIçÚKÖ™ø«¦´ljÛiF6ƒ(é1hË«ÃOÊ1L›vJ:÷/ç}â;™eÁUÊ/é,÷µJpç ôzΫ<t*;÷—¤×¡ÃïU×qSi‘ÂY9)Æ! Ÿ>Ëød]›s=uÁ‡íÇ“óâŽÊªa,Ch‡2.ù-ï¼à=¤‡&P.<³+³ª†Ï‡=t"ìƒeQcÆ-mg¹›uÉÛsn„ubÞg½u¯D~ŸxÑs¥Á””¿æK¢[]Ü‹{s½?ÆŸÝ9•ž\+ùÕbʇòÓïd×*.“6¹(ïŠOõ~G;Á­Üòn†vfmÂFçƒÛÿÀÛOýÎfhùw%ª¿—òŠÛHŸŒUðkä•Ž ±/¤líߤ–Ùgö¦Û¾¬ƒMÅUqï«¿ž"4Š"ì3íQõC'ôüjQ’à7mÏp~¢ì¸º™ùÑο³Ø–sé¤C/Í, Ý䢒•µ«ØÎ]ßIo|õYjN‹2¡ñé¤S#ŠO žMÃWpàÜZb( ;–x3tžt¨é ͸5ÂŒ—“”[,†ß2ÀÕñÙÞKzNA-¡ÂjÄ4Aùý…„O}tPÖSŠ âbS¬½æÖ¿BêÿDŒµž¬ÄFßP¡{3YÿÈ£´—ËYª«ºá*ðã—ue’ʥ꥽j~!,î*GTÒ"8sÆD,O(øþ}ïâÖ<ï\rAÙV Œ”OÜΕƒÕ¨ùÅž‡ÛsKoï»%m;¶¡Æͼú”é_}7x>çÕ©˜¨åEau²]o$C¨(ë—³í¢ëñ)NÝÁœª£–™LÄ8’ ˜G™¨FÇDõÃ…ˆV[Ž¢2È ÁÆ,rsóƒìúÿ9.óç&Î;ŒÿéLgÚi:“ i!ÓN(!!c,߇°­û–VZiu[¶b0‡“š†k
-¨0°pB}•Ù‘žmʾƒáÏ¡3ýCÀç–¸¸ÏÉÄ0-
-Ïœ¥vßÒQÍe‘°)iÜ8ZßnKæé¦æâN}yÓÔ_?{»6üyáÞõO;†6KŽw¬SLê抸ùíòü‰&<ž£ CÏþªòkðÀ‘@5õ¸ÇZKÍ/ÒÄÂ]Ðë/4t 6ÈXÜ8ÖjåLÓ,.»T]ÿ˜‹é‡ÿ"Ó=›ÄBOw{M×. ªVÎ<ËÆf¿Û[•üåxS}f£gq›œ…ï
-ó÷9`µcèsLÖ娦¬²âKù—à˶<ÏvM5î4ò9hÕa‚Ž¤k¥­JúÚÑ6øLQÐäíW|É»DeP-M8-<î‡Ìš»Íg»Ü <³eRN3K,,—çÞ¶¡¯U˜»Û쮢ÿvŸÆ,tR3À§ôìüJ9îF#^”%n=òswÀïƒ<j2¨‘!E%&¿$d¡äôíÅU?´J•öÛ7Ä’ÿ.Ÿqt¹Pß$}ÈØŸ›yï\#ç]h<ÝTÈg)\Ù\¢ó6½XÄ\BÑ âè,›t!tÒe½éÛ»‰M™¦ö7eçËa]/wk1‡jÝÔ[ ¡à× IÈ›vZ7Ô ={kWOì>ºòûw‡?fºÜ5Q]‹»Mݞ¤P…HZ•íŒIÖ MÒ6p$èÁ_=í‡ôW¹˜Çr° lú«aå…w«C'ö_Œ~Á„ã¬ÇÇDt}LTw•Š
-&ŽLQý5>éÐtYŒ‡,apu ùÆZ 뇡G…Ìâ“j*°PO—ëÉ{<ü:•º…[ebÊ4IE ƒ<è&}>¸#BÖó¹ÿëé^»èt·³¹Hh8\ñC;¯ïäôã.ï=Ž){ê1§U̸ÁKm*‘pá¾ø¤aœë$aU@_: KÏ2i§›ÉÍÝ­‘vm…tZ)ȶà°S¤ü²@Æù´å†¿On‹y÷ƒ[¤lÊ8Æã: µ£îÝßœþç^Hy‘Íy‚\Ñfâá7Bné5›ù) œøØ*(ü·›……GMÐj«è[ò.›µÌ¶K.œƒf0×y
-I>9
-Ÿ†óï/G•½ÕˆM!¤Wš™à¿„ÛY‹"ãÇQtæ0d:ܺñ …»GIí
-ÝÏsë`ÍxfÉzNX?®­¼õebäxÑu¥ù£íŠ˜Mì½2~R=qºÍZº !ELk %gB³J>U¡¯É9ÏX vCY3o—l7ÿyö·/ˆ¿ÿ^Møp÷‘r5µrÞ‰}ðµÆªk@ÎÀl8æâ÷ñÏ 'tð“Ÿ«^—Ê/ÖÖŒ2®1k½,fÌŸ«9ÄPOÛ†¾!Nýê[ä“„UÜÝÝôEßmúçÞÃ6q˜v——&N&1sm­!ÃJ*ÖRñ§z><ÓHXûö–Æ>Ú]úðèõØ_¤åÜ{Ý8x…ö«Ð1ºåÐ\§„L*,ø0‹ŒJyϨ
->lä0ëÑšk°Øæü¤Úë–z˜²^¬eMdÐLg±´«¤¯ Zò‘»íè¼¾IRͬc@d=bµ·‹ˆó—*ŠB§¯,¸µˆÃÜ×ý#¡P#™®'î~ÝL߇œ‰g)Çö:v{û'÷%™Ÿ}.@7jý´ÈûÂ-6—¸ÐŒRœîù\ál×֦εr8¢oFžˆeµÁ[®6ò–¾zÚ|¡Ušº,IR+ßYÒ·§çÛ•à6足™×¶HFƒ³ šiäŸ÷¥pˆ±™ÿLe°'¸K+¸ :Úßm`è/U‚ê– ¼§ÙFÊÖ÷æ'ÃÇR¹­—˜0ð*s>\äÂÔJä‰Z‰~Û€sK<áXÜ"i´L4¡Êi†j÷Þ¾”Æõ nÿ!»)"°P 8L/§u>ÓKt°["qG§$ø_<^ÊÎ<Ô*áGíM?ä#…‹ð rÈ¡—^abB‡ÿÀÍz1<×.Æž¶ ¡=šV²~LÖÓž)ëÓöæšå‚’
-2BúÎWÇë RK1Þ£r¢•ÂÍm˜¹Â£ŽZÆ=Q}Ù³àèïæbÔf9|m9w°l»,ݳö<Q/{Íd1äûýýƒî­PãJžÆu`­`j®O|vøzütåéåþóäæGzša4ŽD`7äMµùé/uðD>Ró~¬çl¦ýÀ#N™u@.¸Gá·6³ñgZÉïW
-Øô£Û;ßLÎ^ýu&>ø;9K -¶çߨIÈù¼GIÂÔÌa¦ƒ”kð ëÝËznî.;/u`¶àQ5–pëeÜÕÓÿÞ+Û¹Ý×ö
- ìì¼Èß_iqáY±è÷‰%Ò[+¸GW¡çÐ)¥ yºîú÷+o#›“¹ø …=Õ·b úfhN¯*E¯åí3«@7
-¡Ù:;—6f>to7AN¤ £ÂyÆ;EûïÛ_6Ÿé½‡½zWÂÝ:‡Œ ç@ |çÍ“Ÿühü«VpèE…û2+À+"÷0)òXƒ¥<MÈ}#WËþ
-~Kn¯d<·Ä¤µ¯•˜º,¦ [¯9®Ië®zt›'1 ‡UΗ¤ìZ>2«"ÚÅÀL§Œ!õ”é|=a> ½g²§/!€Œ!ÝB3 t¬¹â¼ºûýä©7/ŸÊìÔU!m<Û映ÆÝy.åc_6sÄÔQÒÕ/BÇoÃœ$ßÆìpÇ#ÿcØl8"qÈ8d¶iÙy­gSX{3c>_ÏÙ¯ÉyÊ¥äh¼]ÏB¯É<áQËÌ´÷Ù©ð·Õžaö©áãT|ð7?{ªe ¸Åu[áÁ;@sÝ*E¿ßÁ°w[¨G+xL‡9;›L\Ûbîê[ûÚFàh$Ô©t·sÚ&ňEÂ}°êèƒ<ŽÈ\ä~ƒõ!õ\(¬”bóà3½Ô†N.æiLå! ¸«õ_ŽËô»iôŒâÿG9ý6SÚsÚ9´eé
-¼<ãÖt•Ãcx94>Zë%ÞùÆs˪nÒ7¦Ëz,òrxbüKrâÑYÒ ZÑ Ó~µ
-Œ LX7PáÝ<1n…® ™¬’¡[ÇÉMžÐñYaB kD a†ù°â»åÜRÙg2ç`½}¼¬¼õëöøCtÄ„F±BlöG.9ñ˜Kèäå-Uß,>ŒÜå7Õ%ðìBÒ„n[&ÊÛÓ/€ƒ^ÂzQOç“Ðk’#æB ñЗ²ÐÕ ÚO|ÓÓÌû)ÈxÍRÚÖŽZL\ “0aL”ñé…Ù(d-ñŒ £ó.6>ó=¿³Qƒ”‰j„¹Mis.h1Q¡ÿ¬“ÄÜ›Cà´Å'g^r¬ÓTëg¢f”€WEfŸåƒã¥ÄôS>6ý”öãLĬ{I
-›†L-½Ç¤å˜Y|ô¯òö#{qov©ôqò¿ån‚c¢ü¦¦›©;XBÓ“ßT÷€gu{p%CLÏÁS€áp6Þ3*ù¨¦7e“Uí¾_8x7üíÞ/ʪŸ¤W²MKÖÔ“p,µ.¯Ú+þÛÞkáŸvº¾âÊV.¨íaüzaúåA›iº•ñcÝ\Ð Ê:ô¤kTJÆtLÈj Ý¦ì&8YWÖP0çY§º%ãPÖ¦lŠ›Çë²ïŽíúö½eUÝÁ²ô*å–×’nE]æ:ëUµÙä·‚?´ž‹¾ìüêpþïµ(iŸiº­2ïÕõné­”cð*D;Ò.uÛÉš¶©è·¨Î ‹ÁŸô ?v?cSÞN¯Jÿ™±Io°uÇiÜýÔl,ÅGŒ9ŸQ”¶«›rmGؾÐv­ô_üøªç<µŽµ|cø6ÎGF˧Ïq‹5ïU H»ø*íê»x–0ªÊñ©'\ô·ÜA`.«–ä ðŽ‚/[zm)®“šû´GÙ˜²)k ÄNùÍ2º LË€3„IÆ„U)·è:åAš ~]oE;™ÐzhÃÚ²>¤™ +¡ó m§Q£ŒéûÙ
-z «ïçà^`‚",¦|ìÁ3È’Ç|¨,& Èç-³ `=i`éOncÿΪº<xHoNÎ9°ÎÝ_†/¢&„~®ô.Ò…´C'e6q„t›÷VômEàÄp 2gìÊÚ¼_ÞÀú‘VÞ¯2^ÓŸ˜zÊ&¦ž°ïg_”>Ì,aÏ !\‘à2Ò£¾{¸<xqçñÅo‡.¥lÒj6bÓ„E_ˆá§óå¨^ÂU‚¬C^ZSTEçEçw_Ê.¥Öк½7×2kò[›^pðNQµýSßß?üno¡ç|Ʀ¨¦€ÃR^ ºõJr…´)뿦“‚¹Î:uGËHõár3µ‚5íÿ¬¼–ÙÐu.#5; ÃM­¢59ª5 ó¿ÿ³øBâ¹ðë?Šÿ|ðfø2½ÜÉû‘–ýñ•ÝwâK'z'ëQ4Ð^´åd ­=\Tߎ>þádYÕPðš/ÚšsJndí—Ó«ƒ³ë’ë¬iλ5‚£Ueõö‚äå0
-÷ßÿ²ÿºëkÊ.«a½Ú.jC^C»õÔÚ|´„ÜÊmà9'>ÀzqIÖnêÉ:LÂOK*¸ŸôÛý·ýß.ü=ã”V“>E#@Û˜€¶ü\R©L@}¯Ññ›]Þ7"£=º¾bØ¢gFq1¢—Tòº’Q´ m¢œªfx§¦,<C>`–Ð+Fû'Ì':í3Šó>C?éPÖؤߑn´i÷äÊþ¢üú ôÒ¥iËØÕ¾ç3a”žÂb ×|Zºt´(»F;±îRÌ:Y‚É…ÌíÒõÒª–ÜzçxI~ýà-xŸMݘuhï’6³0½Ž÷ç½f1í6ö­ ÕŸ–¤×²NE1 Ó.­ ï3pÀŸy˜§1‚ýŸãò|J3Ûãø«»sg_ìì&îÞd“hŒ)š¨1±ÄÞMì]¤Jñ‘"
-&¹1UM EA±EEņÒ{ˆ%eî½û‡Üã¾zfž9Ï<gÎù–ÏϘÀ·Â%…Öxíž%èzj…OM.w^÷ÒÐêŽÖðÿì°ˆß78$°ö†ù¢e4y—È¥æBÖ¡†Iüïþ“þÛœö£uüt‡ mwàWé .p6¦É¶,½
-‰IöIJ‰GÙšT³‘ û|sÌ ý·Œ”æ”’Ìc-ñ[ÍQk/àQ¦ÑŽBãç‘þ#%É €’ŒŸ ¤ý„x‹ˆš©ÿHˆ·‹É.i{¡ ÌÐ/ÊŽj—œYæ¶å˜Æpww„°ª§Å¿©x•¿m}@Ç™Çðé^àIÐMbJ†iœœªÀ¯YEµW·þË<†ÊðÌv·X¦:ë»[<s¬Fó%ûŒ -"TÜ¡‚˜P’òôCuæ bšYB-pNÑJ=Šöb›ë’bî{¦±É%þÁöH˽ÙÇ¿ZD¸Œk<Ú™– cðhË2Î5MÈt)ˆnàk’Vì¡–Ú&ñóüÖÀâó.§ªg£çïÓ²ö>’în # Bì·ŒRx8˨µK¡¬c úòw‡RÿfH©Õ§`NZÃy®ädÝÐ0à~5˜Û–º¡X¿?ŠˆÙ„Eì¼k¾±û}s÷æ¦QHJt‚3sMQ‹sµ^9£Ô>¥Ú'Hv†š®‚¾½©{ƒˆ°Š)ÙÇk=LŸš‹u€~.óÍ·æYe˜„ƒ\âž
-œiF
-™hF
-ŸuO½”j;Äœl@¹Œ]#ЧmHÎ¥jBÒ§jCÊb1¬}D°N·ˆW¦yFШpSÕ¯yiË pJΤpKĘa-·ŠV¬{O­zQ¯V’cB¦vR!—g>ѧvXË£nI—_*‘[#µ€R»ŠU¾”[)°€NÓ¤s\È¥s¹”k<Æ¡qNÓ°ƒƒÈ¡rQµ‡V ¥nC¢mF a=k>
-¤sM ­|T¤oD žg= ¥~JfA¯|P.Í£tQº‘i2µ‡S²‚O¯€O©wK¥oE«|T–mL“^?ÇžqH¦yX mH
-¹†QÈ–^,¬yI i8·€E¾“j?³‚i;Â’qFЧx[Ì¡g9ǘ_+ÁŽZ!À]%µƒU³€S¾Žh6¨v_#¹ƒ`#Å™h7×f2ÌžqIÁ•h3¾‘c1¾“_3¨{<¹ŒP ÌŸyXÇ™rI¼e,ÈqEÈŸl?Èžf6Å›a.Ä™^+¾‘U#²…J±‚N¼p:»‘m8Å›l=Á”c.ºŠ\!»\$³†Xª~W’fDœoGÅ›gAÇŸnD¸ˆZ®€S¦wM­€O´†Pº‹PÉ¡a6¡~FžqBШycÉ tQ¸Š\!³„P¶ˆU»‹Y¥vDs>{S/¦yK!׫qUƘ^.Ä–Y(Çš].¿’W)È™R(ŘF±‚>Å¢dEÏ°q\ΨnLË£qK¸Œc(Óg2»‹`'À’c2»Ža.°„TÇže8ÈŸd:Á•]1ÆœmB¹Žb*²„Z¸Œ^%À™lBɤtRÁ–e2®€K
-H‰Œ—M’d· „OÐw¨µ"\A–ŠÑR[ŸÀa­FKßß_>‚ew÷+[­ M«”E@"‘ˆÑk-£[üã£Zس.ï±JëQ3›Ow‹>jxØ|
-¾¹·éÄæW¹œfŠ
-™¼·’\v˜s•àÿô 2Q§Ó…0fgÚj'þå±kÊ|*†ñð¨p´ñ¥YZ"ÂÛš vŸšÒ`êÃݦ@¦uú…„̵O¹ê@¢ۆ¸]<¥›Èö\ÄRîŒ ÉG- >ÓÚW"±ÝŒ&‰ ¢ a69¤×ö9Sýµ´]O Ê
-îj"Uê¢Ø⎣¤ØØE„Ã2p¨ÎKÈÌ°¼L-Â`.«ä¨!ÝTRyú3W`¿ÄFD×q¿Ç7ÉaK/`Â}„¾3Ž 9DH·ÓÈÀö!þ¨~¼æ5·.©9–ÈofuT·Û!«ŠXà{DZKÝЩiÒÑN²k(Ú]–€Ö®ÄàC8CYJyg‹((žÏuoón:ï“]üqÛžˆ"”5419ÛâkÔ0>Ú hCdí1_¶ü@ 5µ"–ód5™.~N¡0.³ Ì'tì>ðÏ™¨3Ù(
->SÈ(çn&ÝATq æ oAa@Úür’,š>9‹‰A-iµµRsŸIOjÎPØ%¥¤±ëºu;Lƒ)icíyMˆo HœàX6DÀâ`G¨-¯ê¨Ö¶QF–´>:•°„à£cúл—‡»ÜëƘé hU
-};nGbKka æ†`áTILĮ̈°¡ (M€t;—¿5‘;W &7ËW¤Sq)—]^:Å‹†€©,Ç{…¶.¥¢½ƒè@© 5ÙÅo 0FŸ|EÌΗ×@‚îþ»ÆÄmTŸ­ÞT™¯,}ëXò"ÃÆ*$ZîSX$)
-F¯^i24¸dL­ %Ù¹ë-a1C0ʯñ@Ü>å~6ˆ› $Ó€ÃÉ×Ì#iž•q¬ÅŒ?nû³K–BsSŸ$0^T/Z(èš¹+®!È]¤S
-›k‘:S “ÇnÙdŸ%ö‹Rص ãÌ.˜~/'&ƒ»Ô!8žã¾x‹¿†ùtÙýªûýÑòÅx¾ÐVp8›.Ο‹Íg}—@šntì:éa: .Žö´x<ÂT{ÕŠ*a 5›ê´4S¯ROz8iA(Ý5®^n’¸ j$½Ø ŠÁ6Á4¥˜VZJŽ$©Ü$of#™im¸,GÚ|ÞP‡ŒFáÊËÚí™è.·Îþ9Oß]bÒd®ÓŒËr ¹ÒÓ¿ÿ½îýØA9…ÁÐEÏÞ¼ô'Õ¯jâbY¸FÅ-–á€öjSÝ+yC£¨gà̹uÊ9Æ­»umF†Ä¡ØsËÕ #†!b•[gæixu’šÖì è‚P'ÚŽ•ù¢ßé~óvÉö¼
-C3ÞžÕ”¯V^©¹£õª'DJ
-5 Dî“b ¾ Ï‘¸¤ðÌ!æo"`Q§ƒüXß
- ½ážµ…æM6›|¢ö¤ "µdíZôÖã~¹mãšá.º¿Pש*ª ô_þþQ¿þóã—}ÔÇoìXstBOÆ*ñ­Vž8裟ž¡>M±S^dAŦØ5:{BXxÙ#0‘øpm*‡Œ
-v•Ÿ­ g0ÊT)¥B Ê@„€ R;‘f ¦µÏi¢^¿öÁ Aâ(ž¿)‚ÈÔM-¸×šõr]¥Ñ%'EuâÍ9t¸¼<±ÚµÑé5"kA+Õ6juuý¸V1Å=tˆv‹¸f×wOÖG$ßÄd´ãç)ó¤a%×EÐ-Zó*ÉØOf³¢ Qœ<Ç5{ÙwdËîBÿ
-É,Náí9Ÿ ÙgúÒ«1û]A09½Ö6¨ßyˆçÉkÒs=nØåëiòÁ ú–ñÁ¦HúèøÜ¢þ?“‡ÿåÞ /cõô<èl†îŸo@Ê+¯«Ïö»\Þ•FìàU“®å8 ‰†¯X½Y¾Íî¦QÎÓ±Ô~©O½@xb8?W²ži*wAú†L­-t8gfƒq(‹.ÃÛï Yú%KÔµ*®ûs "['c.¼^ãȲã”ç¼c½¢ÚyÈ׿/“ä¸n ˆž€wà ˜‡5·º·­ûoýUh‘Ýøf;,G˜J5ä0ÉRç©'%F=´×ÈÉŽå‰n`‚—^
-õˆ=äTú5庸2B×fZ9ç
-T$óÌäôFEp|>Ü»1cp…3ùAèœå`E¼Ôl‚‚ÛsÄD+)‡àÐNÍx„l¶ƒÚX4Ê]Îçp7ˆ„epÖÄÕ妄ÅNùˆ±NPRµ¸©75v™ís˜ŒW•ãJNˆ±¤§t&½¦íÁóqf‡„r¿€z ÉüLû¦ÿ_-m¡IϘ¸Óˆ£G£³ŠÛñ_‚©¶pÀ” ,T0úRáGЂ°$Œü®#©•¦¢ÂtÀ U¦%®{ 1ÁAVQ_V\ ’+ (~–Y™vNVÑèX[Ëë"NIvTÔãR0›ú¹´R†‹ïk5xúDÑ°>,ô<€þ\€
-nn9&Eƒ› YlEs–ÒTFüR°Çop|³³”¬0ˆ?Å! 8#YŽ]ŸïDöeWñû¨mI€E’èëdç`"µZ”û¢[¿uýóNÓ@™1f¼×þÇzø€¬ C¯óqƒÔJ¢K´½Aü3kƤwƒðxö¥¡~¾EÝð'¬š=¢¤øô"´rô H8ƒáH|‚-¾C1†õâ
-m|S¶Ps=Ž¢¾˜>'9B×^^ÄNCÈu­½^ÎÒ° ¹›$á¯îÅxiÞXá6 _ŒðݬgyznüAž
-rLñÁæÜŽ ±&ƒJ£8mÚgcN‰±RZoW§1ÄFò`rà<e4îä=I
-£ôÈjXròHÖýT#kWðµÅ{ÑV¤âôrhû‚ÀÀl’w9ÕÌú—’¯Ža‡±e²PþîÒKÃ?†sD7ãÀ9]Íi÷Œ:ŠJm»¹Ú&à k›åQæòöÙ’Ó¦Éqo„„˜%líV‰¢é%”iƒñˆ9öœíCU)ç˜á*š=t[T²•Ü4Œ'¯Ç¡RÁ¬üc|@l†fs™ó4À$¡kGÈ—±Sd=)* zÑu%<d¿6è»Ý˜2"0x¿j°žtŸ²ñt¬9£ vtlÿôHηWü_üêhašð6#¶ø,0–ŽZ\ß•.02T&ïôùÃ…Háj+¶¾SW"‚}Da‰È÷9B ¹2æ~kI@ùØyœy-.©tBÁ/0·ÉÎ)°@Äí`ƒ]u#2Œ¤°F~UÅ«MæéP]>kѸüùv
-)@7/æ Úé%@ Rˆeû€õ"²H0ïÜš:cä©ÝÓá=0ÒÌQ7S(åÀ~GÑ ÊÓåóü}²¼{Ú¶¯ðHØ—Zùìáfünb8Ãœ@¦1B·üZ
-/†V·šz÷ä "gÕ•»âîú÷¼äW±)p6oj{¾`pý 1j^À˜oõ‘O#øÛ  ”òÁÏOÌå°gT[£ÎÎ 2\òG'ÿù˜eùÎ*F5ˆB /ñƒáv€`ÇøË
-n ˆ¥Ì±‡ž i$|GSc÷í°ÇÍÉ΂S?z»®ÀFçø dO !2±møã9Ãn‚&Æ6šø*Y{èkñ/öSaÖeNïæî$ËÜ©÷±ÂÆh8¿îßSVªHlj´cx3>™1Ë{×kàÿB]Ÿ!a5¡É<·Y÷MO ¬¹%™V˜ÃÎáNi¬6Î× &û_-èèÝšâª1¶Ä™æM< yØ;ÑU©`¹L…h!(ø±x£¨¬È7Ç懱@¨°Éüq®ä­(yli WìôôçÄø€Îÿ˜<hß”8Òß¹RŠ(µ-ó–·ã¨kYÊl'ŠÝZ© m qñ}YõA”i[-Kœ¬Ù
-öóÇwµ»ºÍ œˆS…ÔZrvZIrÀ£ Þ‰†Ç-Šps^S‰#\ôϲ{Ä/Œ;7ß;“æçîIHü ›Öþ-Me퉖nUJô¢p±sH ª†>ýáø¹Ñ(OS^;CHFsâ0
-p@r¨Þà{/r zÎüW9è>¯Ž Ú”¾†M—ìˆ&ïö¾†‹…„yø}ʨøåÈE”¯=vº…¥™Kræ´sYƒ.ÓÖ’(¹I-½WŒø¬yhd—Å!Û`<‚Ž=/"¶ií{tŠœ¿n©/3ç'q(Ó±^f 4KË×›õ~Æ<(!EC“©øË •ûs¼îÐc¤¼A
-Á 5™V<Aæóóí
-„é`xq€ÑÇo‚GAÀÿc¼L’ä¸a(zÝ¡OPÁyX·—º…¶Òý·~Ÿ«£²RËv„[‚’$€?m`¨dÆŒAªÛ%hfuÊ–b3sÞ%,*Ú d ®Ülbü“dy•ØEr«BJ+NÑï]‰¤‚¸½_ÀE–ÛV¢b OÝr÷nÁ¯?ØO³‡˜ƒ2_4׫gÕ
-±*º4™i'ôßN*0ü€›´7u0)tcZú¡m®§ŽÆý ^ ‘“ºµ—œ‚‘úÌà¦UMêfhÓà[QVêÁÁèväÉ5J¯HæóÕO;ìõ¾+& &m
-!PÁï;E?oŠØÈÉñö͸›"
-Pu³0qhpëíõ¡´:¯í¤A˜‘ÿŠ•
-3Â_%{xJ•þÛÆÁŒCT)õ
-FÈ6[ƒ®Šn˜eûŒä6FoÕaf©_œ½à %æI†à»i••éŒáó "ï’ 2H·ž ß”»°Ò1úø/.ýÜ‘7a•µ`—Èæp™É36ᾕ`*&àLsnJ¡ Í@š¨çÆ'†ŒÑ÷°o“£k·Ác2BÁï¯Õkùà“"ý&ÚŽ­h¯¥í(±"¬‚…/»$-N¢­Ðé.á\;‰ã¥ÄŽ"¼œ¼šUÁ²!ü|xéý2tÔ¨³ß?*‰²Xç®7)±5,Á¸éð[ÉËœÎI×¢ñ3t^Ìç2¬#4‰µEÝ}œÉÒª6Íιt¦ÑLœfR{òá´—
-ÌPá6-¹Sº”ØI—i{ß¹ìŒw™Ëî¹oº¬0‘Wâ/ÂAõÃAg]*9 ·àeD_x»b«»tœÙ<÷RTh9[ÇO°õ°Ô÷V”¡kbìDð͒Nˆ¸Ê.A!^Ä‚Ñì9wžITNÉêÔ±zŽÑˆÓÿNDµ£4›¦$+)äOiYÛŽ!¢­°9¶alËE íE÷CVùüá1½–¤¬òc?>äx fX‘~mMt_§ÈǘWBP5+î°½»D~Ø/}/±½>kô¿“±¤Ê2¤pî¢ðÆÁA¶gWÈŒ¶:åÁVIWÀ!Dº<AMã½|™@ Œ„ ©£;‰¿Ýj£‰¨¾_ÁE›\-:e¾]7Ð]®kÑϯP‡áÉt‚f´øÃÆ6y¦f¦Ý)’É™Sö£-˜R‚'@Ï¡#KëÑ´zèî.!ˆF
-¬j²'éAÔ¯mùüáa-,ÍGÉ}‡ƒ·£dbèCWZÄ6}Ø…‹2G”UÛî^ɶíbôn¬5Yw–à•X‹YKV>ƒ¹î~GShYF%1ÛÕpmÌz†3oÞÇlÁ{4X6LµçsRç‘ʲ ^^pä‘u[ÿëjÉû’hpF8äšoJälÙ=ßLÏ£þºÇ?¿r*Y1Í"Tåà¹û?7Em`ô
-ü–QÌÒ¸ZoŽ›oç*÷2  Ž(£”Æ~1Õ1ϵ!Jz ¢ó3ë*Â*ÝF{>'v$D7ß-*RÄÇCY59%gߧœ¤{lòå;ZBèîc¶VÂs§F߀©müPžÃŸGçI`bÐü\ø—¡ý»f©
-ü¢ÈEðá¬:ÐÁOÖž‘ž±Ì)i¨d’&šüë;¸úRZWì„yÁBº W$_
-º¾mñ]sády^0‚é0kI!"y—ˆø¾;D•`h\5(Ûó p'úÁœ}£„ÿ+Ì|f¿×<[Ø`«$»-;%ë(œ§| öÃ-’ŠÒ@ÚصC›tµã&¤áÅJh/u—ÈÇ ¤$˜7¯EWNü}S$gÑ1ÂEßïbúbñjš,”r•ÌpÒ.œøxzÛ%JáCŒc”ótìÓÔ~TÓvúÝ…ù¾LÃpŠ4¨ag’DKźÜ:ü$—™¨UÉz34ÿ;×™;·¹îŽûªë:ݹn²Óc§äeV¿¾›/‘«e…‡TÞØ:§CÄ€à¼Ü— ”Gï>T™õH†šué©N{~¶EæKr¨õôHvB¿2»Pk}t¶^Ü´SÊ;%¾OÞ¡V-ÁEÈÁ§Ví3&µ¤'³J,*ÂTnx©U„±KØ£BÕ¦àëÚöü1 ¶£*àZsÒ`¦P¶âì*éÄ#Ep7jílCHeœü'zÉÝ&UôÿÊ”’_‹®ƒÿ}SÄ|—ÄNíÃDz”ÀÞæ% 3V–ÆåYôt¤a2®§Ý€RÐM´%Çóò€ƒA!æήØŽÆknm-†+!Kš5}Óâ±å»ia+â„Í›\‹ÿv« E)À~,KË Ø°mZªr`Öj…SR°µËoZôép›|î #X’4ÇÆB+uèGl”µZ$öÀ[#.€)ÓL-Ž`ž“þ
-Ì/‘, ]ìÃúŸ›"Æ[Dsc]œÙd©%µã«šyòš–>ÌBŠ½Ç¼1ó1 E<þ¾F"ШƒÒü„¢HPw¯bÄé¹G!²7? PÂ:†)zÏvcÌ¿n\0U»žŠ%ð¡bfAgÆ¶Ô «K2+,A²¤x£ß»ݘ×4zgcë д*´¿° óÆË$9’\¢'è;Ô Ê8kmu‹ÞJ÷ßösL)3-™ýúÖ’AApøpN’/Ï>Rº'ÈáéÀöÝg0ÙXobFÜ
-ŠÀ°bØŒO^g)ÍB¿píø½i||„4+àJ²º:柰¤YW_¤‡ý¦âb
-ñ—dQš¶äž|²+Ÿ7EÜ]ht$úÍa"–”_<x™@‰Ò3]¯€¹[1}Kvš
-,p°oÞá‘¡5ypÞ’A;2`½&
-•*>Šý¬5aÅJ°)ãN³ðw¾•LäSf0B>œÆEý¨9b0ôÈW¢€ÇDôÑ >Fv™ýF|e4ë;i߸ËU;ÈÎÒRBª²¸£ùM‘˜'9"qQWü8% &ðc•vmºJ‹YgX 
-A±Ù) +d±$d¦¹0”!*¸èg“ÞCSß²‘œ Œ¡ò!R‚=,2¬¶ˆÊTu˜ðÃéU^X9*Jö¢r£g]úÝwä…ñ ¹ßf¬ÜØd´–áIVNг.Ê\4çP Äë µ0Tµ¢ˆ¢6fÊP«ƒMǃ䱛Ó›b@߬¢
-unØ :I %q*ÅŠ˜RFHœkžº3äåWšÔ°ø£.Và/ýåܤÔfÏJb
-ëàOg“XLœ½(é_;©²¸4˜jÛ ÊÉ}JÐ]Ì„þÓZ2Ürk#ûQÈ‹ÌwKÁÛÈE‘â†wr)ÊÒf^ +šÙêÒ‹Ëkn[jŸŠ>¼= ¯)X,ì¼­.#ir’CWc½ˆ,‡QR§fT¹éôÁi:©„éX›GNä!!¹ªã¾e 2þÁ¿£+W>pX ö¹a ¹Ô(7%ÊšD¨¨º}Ô¥h²d7ıOÿŽFÚD­Û¾>§]¸I—Øüº§N$Kä½¢LàGUXA‡>7¾ÐWœrHs:5P"-£”ú‚?
-´‹Íêúçl £ã- %wüôTô~SÄø l÷ÜüôRD2Á)
-©e®X'R%ô-[R¶uOu-r![ @†ÃôoxKbæˆÅìíåD©Y1×sRœíʬrñÇã;I=üÏ£Tn+¡ñÿÉKLÓuôµÂ'1V‹žŠVÉ‚±ü _…uE7ÐÀèPÇcŸ˜×nŒÎe‹và±2[HûÒØ­©Då?§Ì¸PòW¼F[ù¨–›ÅT/
-Þ|e¸
-Vºì‡¢›¢.uŽ °ïÅâø.¯§Z¼/êŒi/F(¬0*+G”Ô’b×hRßO×g€QwQ’<Cx ¶•M&¶·z ƒ4*qw‡/3†2v‚úžçü¨ÆšALPÊôèÃñ»¬‰wQ)øoNÊǬ&Üh…¡8À|“ùÑ9ƒ0õsæ+úrV¿ì±k¶0<“³ N¶Ü[õò3m¬£†¹9
-Šˆ0Žƒ…ZØ+Ò è ‡$àçˆ}°ù
-j7_‘Õ»©îërovI¨¯éÏa
-¯âí4ª#È8 8–(ÜÉ.RlÃØa+ºÂIµÞ¸"Z“ø¤¨cÞº«‚´qÿE¼õî;Xu0'û·»*Ú9XÍö+óG8'bŸrw…OÐ8‰ŠÞ䌄@qþªÒå—ÉMݨ…’Œà±ÚµnPà¾ØRIë<–œ‚ÒkÑ뙜¦x0ˆ¿­9mßå°_=Âq¯^jµ¬8€e‚ëI®`2¤+^?­¦JURœc1M…L©ÌDù
-iûN'@eH¤¶t ®jéŠ QçJü(1y©œJŒ0]Q^¢z ›7Óâ¢è÷Êó±6Þ•Ã;g·¯‰Ä»®Þ»þïp0±IÊœi~Çâ½ÁÄŽu­å¦ä)Û¾ùÆ
-;c C*GG*Ÿ1Œ«j_Ô
-"Ó|¹eÞÛ±d¨Ü¯ýf„§©qñ~åzJQùÃèÙ…¾.ܺÌ@Ôô`’
-he8Cu%xź³þd˜D/Õr¼_ÁÉ„ñ(VŽ×a-çîU‚p ®¤ÓßLö¤¦Zášî‰¶¯Z/M_Ä\Ù¨výŒëI( Î~mûŽv(ÝÆí/êä9j…¸4eöÄøÞÏK±¨Ã-Ð$Ëq7ä¦æ Â1t¨*£ôsÆ®¸8»…ÁÑKûDjßuà!$B)TÜyÔ h5¤À7Híʧw¦¥oâ9y«³^؆J éõLý÷pZ›€|Â:üJ¤e­4¹À/0qF'ÕÜÞPðDþ¯¿0ù<SB«]”óW€*!“žOØJ,?_[c¨ RiÊ®Ue@&ÈûDßÁç8†L†¹eúâ<¤ŸÌ°ªÕµó(ÚɈíð#MRR„ëWqR”÷T'Çx#ÒGG”Ö¦ÝÏ<
-êJ(æñò \Îз8¤RTSWM ÉÓîJéë<*+û³šn|úN±…U n¤ý®Ž·'í>·µÃ+$í)teµvp©5â ° ?‡†È'
-Vcÿèraó` ÷`&¸L = 3-¾Ii¤=–¢çªÀž·ˆâ¶ø$ŠšS5UàûÓ”ˆðÿÐÊKXàÜ/ˆwâôôñ”$Æ_𧒆¿Š¦míH,HE`±ÐR#òõb{‹Y“Ð/v â‰"¨j‰çþà1y<)‘Ô óB§ òeµøvµFH`^6ÙZ*+4³&i|êTŠÊã‰GmYæ“—wçp] 9cŠQ6Y¢N¥%æ :aÀ¬õ-2‹×8çceš8+RÆ+#åj;½¦,…‹µ¢rI]Egß@ߨ°S)+>õ±©£6’g»€~¾)›ÁRÈ~KÜ׌njÛ1ªHUil+¤»fŸ 6×-Âǧ“3°€ATŽ—V"Þ’¬†Zàß@bô‚\„l2?n‡œÝÑv‚Ï¢^ÁÐÔçZg a¢»åS`xãÎýñý¡o$užÃkç@$‘ ;ª®KÓW¸’ëwÈa)F'~Ç弞³t #®Q”EN5;a7rãZ{‰ûCÒy5è#!øô݃‘òBëgeÂõëñ„ÞQœ]rb•Q„鯉S¸rØ4»zÄŒ¯ ¶3²zÉ„Ýûù„¨K»8éD'€Î“¹O«@<ßYu%Á7«4d­í)ÿ —`j{=·“¿ño1µÁ$A¶µæeá9H¤jÃÞßU¡A¦¬<rî[C„ªx•e‡p?˜/³~ŒcÎI?õÑ66a¡•
-U˜UƒÉpÃ~cåp8^BèãQXíö+ò•LvBÊf¹±·s•öƒ½m8"²eÐÇÔŽ‘²ŸR\+Ü0׆©u,½<·bÔóì3c¥H£ĸ;‡ ß(ûé‚iúßèq=‹'êb!B ˆ– R$ÞwÃúóÐËt†‡q+Êà×`ü@< %T>ã9ýhh"`Jó¤Ÿ1§Bn]H‘ ™¬ïÐ9lôãnò½Îª{dðÌ?õKîÝ…(‚–È6;fÄù4.Œi’ÿ!ŒÅê?ƒ˜ªâ‡Ufóó 虌¼2¿6RW×;FÇëßpëxe&Œ™3”£z_-Vã‰Ô¨'2@Aâà«3O52"Ç]ƒ_fÓrƒä˜ÆDéê-g1Ähfšw¸ÞîC÷bÝûò75/þ{XYAh¶¯TÛ™Ò; N£„Vdü£ÀË:íGu
-Ç&S
-¹g½ð áq©„¼8yoíi‹Ý >ÐgÂj'¸XaÈ·[þ.(S$êBýj@q1+ºÛC9WŠhV"=«©j£{¤gDs¨(âô¥ž*HrÐÁ´¨Ã Ö„©t,Å4iO-ÙÓsCnÒÀzy™Ø
-¹
-#Ê zHÛo±©a˜Ú`èÅ0ãxûÑé|z€4’“Y‹'!{l?
-uŽI,W®8•oÔ+ãÁ7Iƃ\]¦Ø)Št]MÒk1ÎŽ¦C]h:ò0Éœ$šgaYFü¦LþMN¥¼[¸áTÁÖÎO‰ÅC©"T·üàA]žÂ¿D‹iôYý
-›û$Ó;B‡ªêœËߨüàºàõ&Ùòé"Äv%f2ë»sPÏK¶rTŽlOÒEÖ±?Ê é±Ò„ !ùòÍÝgÐktÄx&EUð,ÅßAÒ°VJž‹Å"ó8X›“²?€¾¾8:F˜'©W±Ó£°ËEƒ,K÷[4m%¿ÚÞ¨jQ*èZU.î:3Ut¿*ó:ÃN¨NSÙ! Ú0q>—°Û'Ž©è‡ÐIúôù"~8_“¬ØAì\=ü exƒµ¶ ^nŠ‹ì·N{dÐQU26~¬ÊBÉcÍ! ÏäÐf±ª”Œö¡6®Q™ŒÌ "º¥Ÿ=D/™%­V% •»CG´à×UÍO6‰M…ZõÙ§¡ý”föq?‡k]Y#A®í¦ øe !Z7ùÙO//L@AK/B¶! }4 cÅ€S“¸¼#Ö3B.iÜ%e&Oþó¿ †=žt)®›æ…ç×ý–?ùÿx] sÒ¤®Y3_ñÕ}ïKÊë-Zv“UÑÎi§ƒŽ¯g ×d >§jZâBG™‡¤q¬em^ˆ…÷w›xFi $3J½¯øUŒ´ßBÅÁ\8™]wzf&»%ØSQçVaR¹£1¾Tÿ2^æÈuÝZçÀX
-}ºäP©GàRF…š¿×h½{Ï+½à—?©Í à4»¡/Sw&Hë„Lã‘?Zú~ßü9}bírïÎʉ”¸b¥‹w/¹1DÅ…ˆ0Ã}¨éÒìT²ëˆK€$9Ÿýr¼l ,‘A$5¸H/„Ð<„Ýú¦X”/×Ð>kÜJ!—j¬ƒ^Ítñ±ý™„Ô¢º MED™awî2½n^¶—U™ì1=û ç aSAÉ.S±U¤M¼ûØš²œ—fm?›oÂEqLKdÚïFEYL›•5ÀÈÈGÕ=êÑÊSR·»@oÕ½ªœà#:§rajE²Å|Ä̵˜LdiIôŠ’Ræ+Ž`‹)Ì{ô¾ Áõ!åX‰Qm£Ð°™ 0(ŠQMn²Uø×TO…n²hW2 —2.Y¥Èu§Æžçf Š(”¹í™G²›H=§Ø± ÿ;L²‹0m¶¹úÉû|z>ú6æÇ^—EåcÁCA[Çîöué®bøï+Š)aýòÏ[xÿëÇÛ—_oñýï·ˆžKìPú6ó–õ¹ä8Õ,“W¥³°#e×}ƒüµúþÄÙC; )-Oã‚tÉ‚â”U¢…‚Sú1¡sÈ(N]1mHV1ªaoÑØF#1†pŒê±@ü"G´>œ À:ZºV¨1$dÆf&´1rJÌ E5Ñyhºòï.âXòŠ'>žæú¬ Ì‘ôøb¼Ù‘^
-ßUƒ4™L”»K<ð_…¿Èše;
-+“É|ËnË+Fâ¥ÐÅ|·–â"Ø-ܲ$G,E—Âý¹ë
- a5B{LÜtüÈO»•z„&ÕàæA¢Œé
-E<*f$
-UG‘«)Ê1oÅ6ª4…£Î­çÁÿÃ%lê „ƒ†V÷]hì 㣿4ÂÂÖòWLCôµ&(mpüº;ˆér)%H"®ç‚`4Žæ@ñû0 %jŽÈ÷ÃÈ%Ìd
-ëÝE¯ªtÃfŒu.È <Wêi<*¢ ˆ™¹™2-ø\ûØ%&µ²_Lóž‹_ã¬H…}š¨kXKÊèTR`yò¬˜Ø3KœlB‰èLTðaÕ‹“qÖQ‰M†ù¨¬eœ¡%`R•2Äù‚ˆ‡9Ù´×›—™íͬ‰c—†Vq¦d$Ëä{s@2ÔÂæCùß qEyí¡ú8”Y”ʘ#ZzÎÙÉ%‰«øºit•}ãlœ½m{]Ò0‚Íàh0=Ï”¯?=Çži“1Å$fõvÀ‡û3ô¡ã˜8ÛÖS+âI¨F¨I£ÔÅ%Õœž³GäÚ^Ž²Þ¿3p-™KÆv´L½Eìç iw{ƒùù30¨ Ôeõ­0‰ž^Ï£ò2ÀIc°KœäÀµn(¡ésåò°GcÏx5%šuÖ†`/IpXÛFûcî“å@€$6E¹zŽWdâZkÇ
-ˆ=!ÝÈšLPg9æΣÀXR„J‹¼{Õ–Ôj^ttí ]ûi ¶Ú‹Œmq
-æ-È1X…BýªÜ£iÇHòa,>ù,Êø
-RèøŠ€{ok ë–YYÄ­?¡ƒÐ°µ Jž‡Ç "cŠ‰ÍÁNbî)vªÖ¶¼
-ƒY"½~Nbþ±,Ø…ýïô}íç Š×Ët¹Xõ8\\Gq<Õ‚Y‹þwäÈ\¢×™.¶!¥*mÒ>ãé9…ÍÒº­$W&Œ)%-1r°ž˜‡K³(è·Yx $‹…OÒJ (cO†bæª$Šô7O…Nˆ'£f-…ÒÃh¦šªO¹²íE–E¥f°À ä ˜mÏÅÍ`)ÜŽIÆ÷„‡£\8k(ÛÀ©[s vÔrÄâå4ýï4Í¿¬ ×.(LG {5ÄXœ,;Q¬0%@nÈ°(îÛ›rûÀÚ¨TEyu¾
-R³rQù”çYã(àsƒ’Q°… p‰Ø„æ¶
-
-rÛ©×lQkù‡—@W^þx…¼°vª
-•&Ä`Û€Dr.n®Txró¼ 0¿“KJÝ-üÔ¸/=Ò=Yä²`é7Õ¾ã³ì+²*xLT¯ïÔÐe2×”Xö£î¡)üÀ +SÁ·FŒ7ʦî¥#ÿP™4mC–_™;‚±â$h>Ëé>pâÓ®·ì#Ó–ð~Ç'<€>¬>Q›1{Z!å
-Z…Ç¡©©Í2/V))‰„a´3v´q¶cé…Qq‡ÿ³ëƒéÐ D0GÝ Ü%ÃΗ겡‚0­±#˜"ˆ å&Muö!8ª$å­õó¨+3ÄBËÉï|•e8ˆ-=xÓó€ýàhHbÎPÞB›œøi 2Õ}ªwhOÞE•*+3
-ñ®Xï0Ž›
-A~™Lƒ ÊCRÓˆ1>ªìÔþ΢ž.0ŽáB2‰ÄÀ=h|‘ULùôdÃåÕèbµ^3]ᇓ¯ßa„!O ÆùÜ£ƒŒTÙ†êc¬¢Évš‘»1©Fk+êD t;ßÁ;G¢I+
-(Œ† ó_}D
-í&kzЄ’²&)Ü^ÎAS™Å`l\‡Ñ¥Ô½RÔn®Ûz7È@²Ù>v-9—3® ïO@Úu¶˜µM;›ÝA’ËŽ”Â3 Ñ‘—K3-¤¹x¥·íœ¯t)*2Êpl=œÊ,a\+Uç;ÚF<'t¸ç‘æICŸœlŽÉe«¤1ª±£*»å2ž}ý"Ô £#ú’zƒ`5°Œ«vÍìÓD¯$k˜ ôá‚8,¼°¼°ñBöƒú°ÁVA\jÑ«HuC
-t¾“¾âãY­?/£”–)sÍ69Œ{P`8‘!ÖÁvÀySþ
-¹@%ŒW3ûCÞc?H68y)Î
-„ÍÕ]–¬!Øèæ!¤Èªò­NW÷gø ù±V†k¶@(Z` á‚æ@ì Š[2«M­üïÈdB E¤9Ý»ð V·DP5>{¿£lþP sK£ßlíçÆ—ú:ˆß»tºbPáŠø~i¾Ý…mÃC&i@}ò&4ÍÇx!~ç¨[i83dîn¾ûFwp«¬ž¦ÈoÔÄuí÷ý3·™¹_æ6{÷G93|-Ž³×ÿaŸ”ßp²h‚{r¬uëEÛŽCú˜wt»cn»¼@²gl|Á½ º˜¶ïîq¯€0 xõæwKèï ™½ŠŒJ[ª’ Ø•J2¬óìV厄ܙo VÊÖO‚›aXl·
-üÛ¶!,D,·,ÂÃÐdH{}”ë##%J c¸[Ö]kЭŠŒ3ÞzSžXŒ#“
-¥%íˆÈ`¨e¯'¤ÐlüË1V÷t˜ùwd"³YÍM¯êi*ê|8'cÙ ™¥•j-ÐɈ½eø 2õؤM³N¤üÜn;˜I¸©g±R{ç09c»ÿ1åE¢¤,£²®ª/~I#F$júçT¢ãp{>}h(ìàÿb>mä
-rëC¶5@Œý;›üäÒüßø{Ó|­¯N›Aâh^ ö–èžH¾¶ž»(Ä8\’’qòd>V鬦•9û6ÏW:¬Ò/„ZÑ?¦3®\EF P¸Ü „È¢ôɳÇÃp
-g¿)ÜAv°¼œ÷çå6TzV*·¿ 6I$Ç2Ç1¿$JÓ™6{]ËüAÅ!œé@^Ù=*{Š”¨eÁ?£†¹ÂhC ë‡Æ{ÆlÖÿn:n­÷Ì S&W*>j&ˆ±â_y¾¦Š›éÉ2j§#íu׫Mü‰ø]E+ÃÎêá}“ÌQdä:)ή1 è"öÄ >`ýõÖ«’¥Ä=_?е÷_ üݽ‰i_†d"·›ïÇê0…mÈ¡ÛÓ‰¸g.0ƒTpmiQ–¹BI¿—‚éX¢Ì©|¶™Œ¢Ò¤VSqž]¾ Ì7ˆ­r–‹cžÆÓ9ë'ˆ ß;ãù\9v«ããlJk¢Û™Õ4à‡ržyœUßàe~j•¡’r_ :ûØ-+{ òVßÎÃ3%n™¸î”ˆ_i|ÿ<Wý÷vî4T ‰*2 ûèHÅŸ *ü†>ǘ\=)š'ˆFVØžžåb µE$ Á#¸œé=OÇÉ32Ýì, açžxêǾ—À.À i2• P’Ѭ:¼d²FÎÁê6éH°êǘ$@(òu~¨1¤
-8 ¯ "3È·Í#ü”ž
-HLXüŽY¨,™T U÷Ù@âdy(ÕßQ
-à÷0TV4èÙúDë¹9¯)z€ÀïIÕ£sµòºRÛ×(•“ZŒi—½ïJ\â#å¢>¼g+‘v†>||Ÿ§ÀoÕï“Y3Ÿ„°cÞ[pW[+=ÒHTV9plõÕLƒ%‡‡7žÑ„J9 Œ ¿ç&#²œÇê0σí`Ô§I«æ¼(GÂt¦¿ü| ÍCÏ?ïË¢¬@tEGizµeyß9YDTͦÖÍëö^A_êÈ‘jO–]¦þQ¥AÍ؆&à¡:Bí™Å;!©ß£`9
-Äýßç™äÓ1p86FËk|Ã蓪ˆ[åd­wxï¦c'‹<]RhË9 ÿÞ@-8_wÚÐ öŽÂ„f·&ÓÊ1SCŽ«áŠê¹ªàoÌBX³”§xÀh0»ˆx0RæÛ*ƒ†4!Fá º
-3פœFqhHd
-Ñø]àªÛDaÁê;å;W¬Æ´W3‚‘­náÁý$î¼ùäÊKæ„W„-ÝcäE™x–Ô
-<PúÏâ,#„b¥½v
-Ú”ÔL4¿ž«”h®l´¹†ŽÔ`èémÝçDvonuZ)b]ÄòõéB.óùë‡r'€—OÌœYä@ÞöÝ®ûôNî^]0fÚE «_x´ñÇ@°V%`LOnµ¹Ø³“<¶%fqk²R* ã0‘/M"Ž’? _ÏŠ,ÈÀXMˆŸo}r+ †fŒ°<¼È?'ýŸñ29r#¢¨òa,èÀ–XÎ=ÇöBWÉÿë¼_ PÃ" ¦"¤ˆ³P
- "FœÙ¦¯“ƒ
-'uJnÎg÷/ 2 ‘eÈcÇÔW‰1LXúfsCì\8¦LÍ
-\8ŒLÕ¼DÔ°F÷HøR¤Lˆœ¡} Xp¯ôrÇï!¢:@Pq`lŠènq©“3“=0÷9æmºg"øСõ˜éRM¼u…Ë»>§K5Gc•Glº¥K5'Ò=®,?"ÄÿK&.ôØ•jÚ>¥^þÁ¸¬\°+ÏÀj`_^'æˆðNš Bó º*Jק:σÎÛ˜l€èǪѹÔùÂÑQ­4—Áæs3èEqN½CÐÍ)á(M`²#/ÊðnòÕ//ŠÅiäÅ;t’l#<(°qx$6íIð;2ý¼l6„­‹œå[ù`”"—¨þýžE?˜Gy˜¿‚è—ÂIòb9††•³]¶­ÊPg`á;2l›¦œ±ÎSÉÕ
-û°*›Ô¸ÅxZ''3°©M/Ž 8IPwYQ*"ÍÌb‡^ÖÓîÌþ‘oŽhçrAS%pÌünÑ.és­ ZB‘ý¥èyãL
-1­#ÊlÎg©Î?tˆƒÍ#($ø€n‰B¨yº©è¤ÅzÌ3êjÆ‚YÛÃ:`´v£ÍÝtM˜0ï&úcMN‡±>⧟ï
-H‰Œ—AŽ£¹ …OPwðz€¢HŠÒ2è,g›42›T/sÿ|”ô¦lyÆ@£»Êý,Qäãã£Þûh.^šÕÛ?ªÆ½7“Í›Ü~~ˆ©>`úÝFÓ"¦·Ûï$ªÜ›jÅZÂLî^†E¥ß~-Œ‰Çh­jó…á7ÑZZ©· ‘¢–‡Xi 2Ô›ʵ@긷QùLÕM Ö^9¼”¨¯Î)^[+ææûª.^ͬKŸÑÔN:F-C{èØj=¬Wbc]Õg<MLJRÉÜp{~mB|„*¹”õðr.GÖ1®«øB—ê^º,qP‰0WRñãã
-˜zø0úÒ¤«nˆòêB­7¢QâæÙ»­/Γû¤;W‰êô¹AJe úÆØ F…–œŒš62Ã¥5­¯Þm ½EÈW홋Êeä5βAŠCÉŸH¯ý,>‡j>‹X£¥Í_œãpdžwÞµû&ºÓ#Íz³¤¸Ñ¤q?ŠWrÅ÷›üŽGhã™ûMÒb 52{Øî£÷æÙÁëÿË=ŠðDôŒ"¼€”Žb‘½@óW-AŠ–gƃFJ}¾
-lE,a\‰~z6þ_HSƒ_ïþ–=úœÉÖS„¨_¿JR@¼ƒ[8²žJùÙ¥Ó"©çs²_Ð7‡¶[™†ð°rÓÓ»”¢ªm¿¨ÔÎy|cøÅÎ@îJCMÃö´öˆ#­âr;ô
-¢7*J|»W¾÷%¨Ù9ÙpáãjÌoÍûˆÙ}Y¹™wy_w ¯Yo´­í¦ã/ÈT»úÝ'žuÝNz”åîèjrBì«Y@â9Ñ÷Ëëì]]•ŠÚA¾¢ aÑÅÕŽÅ|€ì«*Y'żÅÎç8úõ­eø;T>2íÒ½&×íWµ¬/$…p~14=E‹^ÜÅ l °5¶eE3R›;ÛG\Íðçƒüi/‚ bCV9•„þ€4•dÔUÎgLê£CHZsßBavÔmc ~CÓIÔýn+#u¡l=Ê‹-œcz?{ôÈcxðÖµ
-%±ZS‰E8Žº¿™?Öd­wh‰¨]=óg‡ûkš”VnPtTŸûu5V%99ðkå:‡H!/áªÙy6ÒÈÏu/}a†z>‡™Cxõ«Í -‘Xˆù((7¶ŠJ¤ª®š?‚Nß“’bௌÎèh:¹ŽRô”mïú82G.:,cà.ËTs’$LÀh—p£þ:JêÄÊ44$ÓBˆv\Š1
-®¥âkü
-$øM"§È8@æUlv%%‡á~MºJsžµmj4JÚ¸Ûvž g"U51¥Õfw<bÒ¬tzS¢-³rÀà½ØuPú6bœæ>«½G CHÙ$P>‰íØH•Fà~wŽÒ4™²§…uú!»0æ†DúF¤È–:Í®•a&/µNF¿o³RDV"÷Wç|¯÷1šï¼9>ꑇä<²øâä[¥~¾Ó2Ù]åê.a"±j6Xt8ï× äðΙ¤ÑV\hvol°êõRiD÷×öë¢Y’"m«VL•@€_¡V)¥ÚÖM&{j-"4çn{A,&vÒ²SírËØnð#xÊUûçs ´[A8ñ¥~Eã\KŽb:U ÄÝèstwÄØ’;ZŽ GÌ'WvjÎÅ`c[KE¹gObàñ‡;Ç
-/–f¿#c¢{ÃÎÓE^EšØ Å/zÌ À(@‚uă^í Y1y7sRÖˆxl©TåÚó;”dïªÛœsJ²ë P@Ôðrp-¿N ”±’.ƒ¦lk#†ŸÆ½êÛ ƒµy¾îMq'ƒ{ ºÆ΄°ÁÅ¡=åmBÐO0›¶)17’´ (UjÔ‹Á§s*g_Ã
-™D]oˆ<.F¯G
-3?Þþû!SZžP`þÉãh³(Epû™Ð©a ?mtˆ¯yý~µ‚]‚¬§ôŒ'èùºGÐç;1-‹òÏÿ|üö?Þ‰ÚÌ—³È×L¢œ¨·ô»ù//Õìr FKÍŸk…C+)ç’Ë㯭”=GºCõßÔÒë¦b°ö·AŒ
-Ɉ‚„nÐÓuoxêHÑ);Õ(3ÄÛƒvÐw1ßßÿùFŽ¾6/ÈÄ´AN<;+ÅÎù€/!lظÍÜ…YÉðëÏ((ôõÙ:‰ÀwE
-h¤H†®´Å† D–¡Ó¬%Æ9*À´–a’ãNX„ØG&íl£a)ëB a§#رH'[ȳuCð4¨`Ú¨qÝ„W£6Ý#vÀéÁ›:¦-LHÁ”gñ%vbFz°€¥ù†à;z^T&Dù ¢M#kë* J£•rÕ…É%Ò²YŠÍÔ€Àlz¥‹bz§…hp¬A¾€0gZ,—ÖyŸ‰d!J·èóˆ´Xƒ7_Î'ŒÎpØ—aWJÚÄÑsC™ËÞ,¦sùÈ—&:rÓ¶^ž'ckÎk©Ê 6f5‰À`Û:g–³°Î^ìC˜+¤Aá‡/5á;xi÷ wx•õë*åXi–†«èLÊ€ YçØOtÌ·Í-Ôʳ2m“äÿŒ—I’¹DOÀ;Ô h˜‡5u–^Q÷ßê9‘ìÊÐ$©M좀<|àš2ä+`Oê.Þ ÃM ”D{Èz¯Ch{iB/ÓòבûåÅ퀬Dx‹qL„ŸNò”Ê+R“ Mw¢”ÜZm=$öÚðp®Å0¥!-ÚV5‘©¹T¾s™è@Tâ4«*¢ü%Í>ß¿—!Ù„¥ñ9oNµåõ“a‰¹Ð®Î ¡­±쾓rú
-?¡xòj¾SàZPbbÞ Î¦NŠën¾.0¬¦ „ç­d*q>B2•1‹! gÏDÀ%eå…²ŒŒá¡ ±µÁJª=p
-Lhù¥`é&ø‰‰ßßœ¨„û3°ç1’ò HTÌžp>ÃÔßC™òö7¸ >ˆ‡ÓöâP¯.áŽ+»}‚øÒÚV£¨¤ÝߌüuESˆðµ!\'‡‰ô’Á]@lié± 5Y¦ÇWGV¡ e¿ ò1YuÉúIˆÅ¡°ë½ŽŽA:¥MKãЄäŒj¦nl¼U8/ýK˜„ŒÓâfu+úÞ〠¡B¡çèïePÂ
-Ù,þÙê bòÕ(%—eè…i-»H~BÚ²C}Ç|ž3KójJóòç„&D*h9­iCøD´‚óD%5A‰ýÐDH ¨vêK<vЕ>bŠ±óÿ©øy²(*fü.Œ_ÕØ{òrXÚi¤—8#;2'Aëqß©¡$8c—|¦+ÖºA‚!7&ãëPE¢ú ÁÒM±Ý
-A(ÍÃ8<æZ加l®S#]ÙÂ
-*×ujÁQTGö#Æ-¥Ú¢%¿¦ß¬ó¦9ãgÏ“ ®mJ[볊íCÖZ“xé³0¥~„œøиðÈN𸠶N;ã³ç C[¤`îm¥ÚC»iÁŽÃ´s+uZ ç8
-\*|DYƒÐ?I\!øå‘eeCäߟ=i0mQ½ºTö#Ðòµ!Hm×ÃI¢i“ø¸ðŽ^HØë.IA™~àV¾S$VP[Gðð‰¢\±úbÙë°2Ëâþ
-Qa1ÃþQ ’wùEnßž[¶J1Ã÷ªoU{8rôóðF,AØé-íuCœ/Ìš¸-ë¨P>ÖðÁÐI Sk…íºg'tU.©ù¸ Ÿ!Oêf–„S nœß>|Õ˜ÀÊ\9ßM5PU¶ë
-g«ÝaRevs¥€Jj:c¥ \±Mh.ûoo
-eHº~)p@
-C+ú¤sA?AL”¢nŽÁB'f§º¿ ¦!ñÍYú.p@ ;¡9eלÇœs4úÌcBÖc`ÆÓ«¾7/
-ó/tŒT7Dê_”£“­Â”j•ÌcFߊ_#Ëí|2ÊéB4¹ ú–1¯èÔòG3
-ö\~[ó)¶èôÏÅJgda¢ä®éƒ’5²xxì
-šÛ]ÓX¤(GæÖu$Êð"ùH¥ :½d<œóv‡ ýÛÿó€aøÕÄ•â¦à¤ãÞ‰Óè_Õ§æ*Ï)äÓ‘!"P•f¦æ"Š-i,’ 2æhš“£õAV”šýPýzŸœoáhÄ®,‰ÃðÇ°ýJjÓÍ+Ï08Õ‹ý)ºÞÓ£‡š·ä³!d¬±`wŸÌê±ÓgÑ”÷h‡gÝŸ\äW餶Ážu0ÿ4‹5½¢qRÔys³Ò¢{* q%¯ßÄ®*H*Û˜òÓ9Yëć—Ÿ¯¥ ÀA«ÚãGá1˜ë^™9ȪYj¸ÎÊá±)oþÝ0RÆ¢$¾ AUà5ÌÃ
-{™‡Ú}uêf-
- S´m`ðð•Ô'òG_FnÔ"2‚œuX™ï£€ˆY i¨Ddï%Ðåyuðïú1öl¢È¾™ØˆPúÉÞS?ªJQ¬‚,97‘jrð'lˆ­C‘5ÂRõË"Ã08z »õí–Á‡+Ûu4ŠáÌ”ÚÎÁÚñ9bþbd 5ˆ$ÅBXP„ Šµ~tãIEføÍ«åêç}.‚”
-ÇWyViÊ6rLV¿ {6m´í ’@ô6œ g?ôyŽÔZJÓOÆJ²f4uKFcÊÐñ%ž*‹¹x0‡ÛBT¬L¦n  Ö+>SÞ%ÙÇàö
-D€èðŸ 7æÿúu•¥hM2¢¬÷ý
- 0t‡q3z£*ˆ ’[O w¿Tý”´G~!ñ:°®æmƒ>ñqø{xül(¨ñL¤PVØÕKXéÑ<©>=ð1¯ÁÝfRCšB³y[ Èï“ß<U"§8Lòé
-íHX°éfÎJ¤y°eŸé°YÛLæ;”§@aƒ’”›âyv>,,ã(vß,ˆ©Bu†OÈׯuY|Éuiuì¾Æ°gg ¿ÿAÊrjg×Ì=@i5G&r«u|QÏ™é¨~±=f;5‰ÛŽY(U{“óÉQ®
-Š2‚Û¦Ný:G3Sv¶†1À´ÅzŽ+À«B›¼o»
-õ,aã§s²ÞҖ몬°‡tÀà’lõ-‡ÛU´‡«ŠŽ3’áó8*—Ï}NTîò戔Èw2vUÓgÂÔå]@ºŽ†âˆ6¿£·üU½*¼% ¶bAb¦Prf¦|HXbdÝû†Œ‰DV}0k¼AM,÷fÂba‘5Æ"m ïrqyqÏ‚@Z‰R,",†1ÖQ®9C(Ø'±Óså/jNᬖ~ ºÙÁï'Ð[†:B Ý.vËä–5Ž˜7ÿº‰Žìh·Ñ) 3¦L:Âûe¸Ýÿ¿¥¿éâï \¸ç9ûÃ9´wJ~Pª'¬Íë˜òxS„Üh®2Ƈs˜½K“Üò$ eBt5¶âs‹ãdK;€¾ „ˆU‰Tñ|™ ³$è¯q~òòùé'Ð{ˆ{Ïv»aAB<O;ú0qd±â£•FÑ¢Ã)Qa‚°/ùº N‡ËG¶‹ž„I"6vç
-ˆ9‚ú±G+9x‚üM’¾ä.æØ\ódÍÄA",I³u¨‹‚6eׇ¨ìÖÙ3¿ ¾LXnÖ¨%#mô¢/Ir2Xg¾;?êÃÛp-ÃIWd'rKº‘™L3Ôä¿&°š¾Ò÷ç9ñ @fä³æ£^ñÑ`rÝ.%¾
-ÿ‰X!Íå0èv8<Us_€ºªEŽèÉÎa¬gÉ*½oy[ñˆ?yCpd·Þ]_±tÈPŒtò›PÎÑ¥§þbª„0THyÄ}ÌTê%ƒ2àN‘^C–`Cø•¬aѹxŠHyo1}¥XÜÕ²úMÙ¹˜–{}”*ÊcÐBŒ¨‰^åÅ|óö€ÈmĪàÊöÉ ›ÈœýÒ‡ý«YƶÑ~cõ«½¦Rk!¨ÐÑ?G î‡9 Εš-Qël¶ò®ÜóÏ ŒÊ²Yð ùkCÚKEMˆ#þcùŽ–Y'8Œãe?‚üýåß?¨Îªáïÿ€ã…ÃOúâZ̬ ÝG
-Š´@oFwCHMê¶ù+€¡‡—qn‹1‰’ùI1õü cšDÔp˜ÐÍQX02Ä•c’k\bÝÊqÑ­£d6­iUQFDëƒ?@> þ~$ÓµÔ]%;ÌH]±`„ƒ A¨ð‡!t·° ›†ºnˆÂæ
-B•Ì”ó^&€‚ôdç[ <šœþáœÒš7_¼ˆ·2ÒLèVVÛL@Úö¶0Œ•B±žiXùPX&ú6§§§tuŠùNlnÝ3QH‰—ÄÉUò¸:N@µ­²•!)2ÛgSÎ0­y™¨OˆMe€àªÇcÐzUWÎÄÞ‚“`O²Í-ú‘_À¡Åðø‘´tÝD炤o'ÂÏO1¢$ ù´¯¦Úº @;RÅküE›×ÒÞh¦¼ÄŠxNö¥½‘-¢C½ë”2Ž¤W/ŠI‘àèWÝÈ“a(òE̼ÜÛ‰‚ †(ˆóJ©¥#äFå_°~pÖ׎³WˆÒ<ˆ¬±>1ω})ž «ˆ¡Ê•ëO–›¾t›A’(ŒŸkv„ fƒÃØCs>lwÄ@y)çpéÀÉâ—X!»J‹¬4ÿ;âñëà«új`ÎW¡ï Æ>ðK¸ÌIBøÔjþ]‘c‚?FqHTÆ@¬0Pc™t‚y¸ÆçDÕsK<j稧* é|•6†žñÑ)Ík0­ _ZÓõäL T§ "9Ș^@ˆ “<|ñÞ… ÄœºBù§¶ÆD0ª>ÜSY¥!SÌq… g°›ðÏ ‡¦’)ÌPøêJF'ˆÓ~)š¶ÿ1^&¹•Ü@=ï œ‡µ¼ì[ðJ}ÿ­_™%ÿú, á6ЖS$+32†ÞçÓ1 J…Rú8?¦"k|Ïh-=}SÇËŠH(‹v££™^„¼ è
-è¶\œÀÇu³4r
-¾AKƒœËSÈ€¡šŽ+40/,Ž#—ü{ tŪd9Ňc*¸!=ö§Ü2ƒ…*ÛãMUFR ‡’<SZÁk®<K%Q›€Q)>^Eï±7yÊê=œC\ƒ¯@bü(ÅGºœõâÇ«"se¿­øÔ?öÄÂ¥<•¼ üëxU >ÊZ€Xª>~©hb*!C’Ð,^„YE•£H§ÿýPÃÖâÄšrØš%¸.D)_Ê‹Ap"·Ò
-Íd7’UÁ)M9Ó¼ƹ׸òÈSÅÿ æ?âBaX)#©Á\À‰ìhŸžn ÒOÐÕ6«oED·&‚œÁ]«Ñjˆ…5ñ‹n×}ÿÉ›ÖÓ—×îèÔ"0¶ÛÉŸ2äÂ)èÿýPDraþ¦à°K ‚Š¼T˦̙ÑAœmQ*¨æs0@<µ!Ë
-†}¿f?vÆÅŒÄSîŠ+
-»‹Ð¸)жjฅÂràk…áw€‹€§h§˜Õö”IcEV‘YSv!Ô-T`‚„¥•µ›|#ÀÎÍe K‹wBoCú8m¸ÒŠReï´#Sмõ^@4%xgŠ‚è•ßÚ'ÞbN8S¦È¥|ä?2h."Öf>øFAŽgHY4{ñ‹Ë§¤ Á×}œ+n”þûgÿÀø3íRLAÞ
-G|+¹ìÔ= ÉÞuÙÒƒ»“Ú‰3˜éà#'°-! æ-êÀ×ç0@Öbœ%É” ÿrœ={IvSÄDÈè$c¸"Fqˆ}7Päà/·#ñÔ½yü§¬ÊE< rÕ½7R/ɳv=W߃9ï&«Q¥"©<”b@«‚àø¹ê^´¢iD3Bjç0ET›æÀª%x\ïÊ&íñªÈÚ(ä)–aGºÇ’[wb†>옸ñ)ü1ÐS±Ò%GïE)‰Æ›óÀÜ°²4ôÅùPòmü:~ÓkÍ÷ÑFóQlg`c©³ï®$S *„fýƒ´pÛ+ðÍÛÖ½R’Oz ¾˜ŠžÑ>o"že¢Î&PµTfÎbçèb´f¨¦
-»7J:”¸ |•Ó9rš"”Xí«؆øIŽpôëx>B…½0t *úÍ~9µŠ’¿ŽG† å¸ ç26Zؾ7œþa©Ay‚úQ8µ.·‰8Õqò‰Ö›-@J‘
-¸ŒvógD+½™a&´†X …ægÕJè@JÚ=ì¥_µ,26±dw pj
-Á4Ùƒ…=<bfê̬‘\&*^.![. à´l–‡B›ùqu!ã¼~€bŠži7>j… xÜá
-ÎO´)lm¢ÅS{—M”ç€Q…ã$fkS„ýª€‘í³‚Vb/Ú“mñd[K0…oÖðØ|H¢²ï¸ÔCBv,K:ƒyH|ŸÙX¸Š÷yVD‡‰³¬ÓÖÎR5zL(±#$ùÊòm›)0,a@øšDØ€´-ÙA¸MÐÌðþ¿£ßiò­j> qn ã:j¥OÙ‚ C#pÉáG1Á“ý‘ý¦ùþ*É^^÷w(–œ•Ã¬ßÉ
-ýÆ<Z“B€ÖšðzÔ#«Ô.B¶p™TÔñP™÷˜:¨â¤mZÖ
-BÇͦHM"ìýRʹ&„n1àæ¿h¹&•$P :³3.Ë\4´EYHÑrIߘgöLÖ&É¢¥¹OMÁÁ}O´"»É?ÓË·,…Ý»+.Î:PLN9‰†ƒç}×øûJxŠO_-ñ2jIo »1’­©Zn[#ýW´}d#\NÎÈn”!Ö]$¯cèSmûòQ/Ò¶9η¡½ø¸;Êõîû£ˆA­›~µû£¤ÕL,ôe}Œ‰ÃqðŸù ⶶ$ ½öJý}§qLüd ‚H–Ôf؆ÀÈ4í'1ørÉþ Ë$ å‘ izN@Ã_ ™Ã†ÕyoIqŠhb\ÃùÉBY–"-Ã7ü¢“g›Ä#ʹàžNÄ­f ‹µ¬”ÃÄü:÷ár;dÑ ¤‘ˆIóät!ua*²©:i—¼¡Nó¥œA)Õ
-˜›Ä`"2‘FH&¤êŽ%ÈæËcjé†Ç,¤?ѼæǺù̵]Cº˜©Á2`Ö†F~ß/Ô¯»/UÑöÀZ?‚xRŠQ–<.tUóÖA6¥ý5VßRô<Ú*û]TÈÔØžLE"ê)ä C§ï°Er5a e8‘ƒ]°åê$ªÐiµaÊR-. ìÚ0 ÐZSh7¬Ç*Uå:´Hoû3°É^ ²:ýr“ý?ÿ8•egM¥-ï×KPK6tÀ¼á2…@Òø-´‡<“AœÝ_ ]¡ 11^ÀºØ°†½ÈdaˆÈ
-ˆ,¢ÑA?_‚ØïÐhØ‘¹ÝAKaökx bS@áC…h=$Š®‡LšžT³xÖo›_@Ä”ÙPão=p8îA…Y`gÇ êÆ×cÐr\F
-A"Ë%9`dc¢ÆuXcÀ£þ•ù±£Ø*‹ÞÈ ¤X ö¢ñ%?U˨ËØ'‡Âƒ´9§ªØQP{Áos{ÿN_µ¡Ú~ª‡Kyœ%Í%ŠÊ©ÌáÂÿÞ Èª‡The™GºZ=Š<eù™üϽó’#Ȳ1«ƒœÌ¹«b›^Ÿ17¡ûµƒ`=´¾"i‰]5Ûm(G5êUô&ÝwIüƒC”à›Ñ&mþOQr‚¿!‘òÉ!„°<,¶ºñ¡»ªUK´Ãrü;Ÿ¢ŠwÚ†7Í2Ž ¢Îé49B?„ØQdóë!ºGÞHDM:â ,_G}º€Z}ÐKeŽtò Ÿ¼Ï±z~†ÏjZð°žn¼BØrðˆÎ–ëî3Àô?1)ih¦vÝìÞc*a‰wíÏð+#ÊŸ–¥k8%&ZÈlPçÕ7‹SೡúI!KOô€º6Ø“ ¯©%r0(ÚaywŒ;2‰z 0ÚZsèa»ÎLeš$ÒqVq}Èž˜uÌâd
-²‡Z¡õ»‡ÙE=rö?íïHäo×½º*A\¡Iäáy(9rzm{
-Üb¸.ÄxžŠJ²ÄðÈ4M¯à-KÝÖ))ҽŶW2áz—´´S”µƒxN¯ç;üÃIâ…y:°Ð9Hb±á~è«ÄL¦ì4ÄÌGEÿÉ‹_<´’`3µâ~ex–M1žÍX^=©*ÉÎÅ8Øõ™’‚«Áäw„ýE…ã¯.åGW¨¼aœ+g¼ Vˆ_È=œ’.öC]Ó–pJ†ü„â*õRâGm±tÔ`ß¾c2äIëqÔœÒ>Öa[--r‡ºùc l}
-÷2h/ÑÄ·*Ž@‘:2DÈq†g”dæNQ«ˆªò|GT¹°ýùxŠŠP{*º™ò‡kdí
-•y++5ØÖçø¦R;Â…œ§èŸ~Àט×6A@«XyfÅËi<±âÏìq`Q‘ Œönzo
-›á‚÷À¹n5çm:A²jÑvc­í¢íù6÷îðѦHR\h4.]“SÂä*£`3¼d@
- SÉbjz¹pÏZ[ôÉÛÚ”/aîâßÁ ²ÔS¦Ú»ƒ·ƒ+„71Ü¢H ’?
- É®³FØŠ Ü.kXü$„BMÖ²“Š–wNÿ ŒÃÐ@_íWÖ±³vk÷¼<¬#YƯ°Ó§Ñ–Þ‹VœKþiü‘<œé/0kÖ·´%dÓMø›ÏQoExÝ—þá;¯¡ôRòžJ/EY›@ƒœ“±hÞŒ"VHϸ’)¡PÃÉ¢¤G‹Þ‹Já°Ô*ùm³ä÷’?…ñçõMßk~]=4 “C¿{›%%Óå©@Yì*®ªä«±µ³QÒNk÷.±–àvF>³X¶‹ÝVLÑÞ»ùm¡ŠpöŒ'u*éx_Hk<‰íÏ?êE?Þ¿ƒzôè;=ò£XÓŽòI‹hgF´’Ä,.ÌÕ€(’‚7m sp
-ƒ)JÈh²¬ö[h'ݱTÜä¥H'³sÖïðT›»9˜§!SQ‚á2™#sk‡T"ÇlÞ\ÜáöqK˜Âæ׎S‚³\Êä4©ñÝÜñÿ°‚ˆÅÓß—’›©½^¼A
-èíëvùp¯”Ò×¼>
-Ã?ðq{7êÓ?¥'¢Ö(Ù'KW÷+oI(5•£Sd1wƒOJ;ë
-vð=A8Ì·ŽZWœ”ÏX+”áÎI·þñaìtãtŽ÷9”¥‚l›«¯ö”5þn“XqôW}fÞ/B&HÅ£erI]&7Ò­<ê 3XÈ/ì£ÄÜ\-ËÆU|Ô¼jm¸1Â.ñ¡ýïÒð½æק–Ð`Uˆ«Âp|<Wƒ¶îÙ
-–{Ã;fþ-w|±b¢}0þ,ŽÿOÄ«²ÑÑ¿…¼ Büö©„ME+
-®>GélPŒ¡ˆräR\—žØð3ÀÀFIü=?” B>{ŸÔ°+I^&G øÑá 6œí‡yY:o íí™›Á[¡àS²‹1\õ²º{–•gÆX¿ýò"9â¤uð³8#]ˆ=û,*HNMä6˵5Tð÷)ÉyùÊIWØ%¹$Çð¥H¾ðd¾#ëXd°ŒJ°Àš!`Fž‡/B{1}06<º~?üµˆ?1Lˆ ó‚Zô‘*ÚÁš{ÈZqlm”À;}FÄÉ ü|hÅÓYy®ë.½Ê×îcÞA¤w£˜ñnì(J틇ó° ç¢1¬àâØh(…y"Årò·pöÓq ŠtÙ÷SBÿÆ$gvÓ&3i„H‹ˆØÀkug˜8*¯*]‡ªü;0¬ˆQŠ „(d%Ýå}™¬ÿ*Íyv\@7xé—’Ÿýç¯üõ¯¿!±X@Eö²»mØ^É4ûe_ÿ|(*Ï’Øý8•°]5 wJ²>T´[››TÂ#ŒFCðîPFï¨)Ծ߯¢$‘­v£ÃÀ²r̘þ/Ò–×=ÖýÃea¼ÊöB”à`ø$Éä°6%Y™ C… ÄIukr›ñÉÔ%a¦ø¸KD¿–571³*<èW›1šL–IqÖõƒ¥jœŽõ¨È ? d`kyøk—ðÝ"±Çqx‰%¸ü¯v*v¢KÀn¸/Óç 9Ë{Eß‹Þã…®Œ©å$$ÃÜ‘¢ÔÄÏ»1{maüZ”k¹>ÆÂÒ*"¹¯ÅÀLšÜïY2k¾)ô¢.Jî
-—š‡¿Jó4y>TöEPÆî ¾®²8dvˆãæÎ!M4ŸgÚ™¨làÚ˜«6š—0)D!)ônTúRKý¨i ¿‘¹~sp§¤Ñ÷„]},
-D ’¿Ó?”Tž,Ç>°ûÏQoE(F‡Oõ[ÿ$Ç d\!1;ÓK؀͠3 Ük:PB6¬º\ƒ,“¬  ƒâ.IäYƒa>NøŒÅ$b¬KVy`@‹ŒrˆqŠ/Œ§w‡@ã¸ä(A±Ø=aQ²fÁL“©ÜÁ)Ezx+’wå¿ýU⦶+·‘Ö>È™­¤½D G“1.^ò²W
-ir­À³Gýïåû›MGp쇆1[íI²´_m$ž=½!ê²Jèâ٠ü/Ã
-jéb£ ZÎ"SÀëÑ^¶¢8‰É8Áu
-[úg %Ø·©œs¸PÞDÿuì=ŒuS.›å6^ ˜Àæ:E&'P›0ç–XƼ³eZ ­qOëª7*!™~¬}Ð|ŠÅîõ!†ÿû
-Žÿ«ˆãPC&£ÏGº€ýd¡¸*!΋Ôc[²T±§]Nœ4Ü"± |ΩûÒ¦¬¸.>Ö)Aî½¢Ðä"/âÖ4º¡qõ|‡
-ÀªÄ ¢¼xŽEÎïZè®Ø9Ï^ï¶x¯–ñ븜ùS2Bxá{˜}_΂ѤÔP ƒÈÜ£­iæ Á4ÂD¤»ýÅ4”æÒÏ}
- >ÑX®ýr¤™8ÄÛ`@L=ó&õw…DÌëJ¢ÁØT9*½2K·d×X4Ú )Õ}9’àH
-ßÜÌ°Š ݘs/¿‘Ù«v¶Dbð@e„PŸ“sY²gŠ³¸}A*CL>]ÕZ\k#aÛ0Hl ?3f‡âfÖþÉ8òCGÞê0±3J vŒ˜–Å¢ Ãê-L®þn Û`´ ·;([HCdǾ)>d¶ýêòe™ùM\¬sª…uó¥ÑÃßN ÍHÖœ)R{ÖïŠrÉAþ'yq._!Blp,aóÀåUûïWEQxã$w;ôi®ÎÔìÇ$ª]dÅ UMišVÑ:…ˆˆ÷¨žEd^ùCiÒÜ7Áá,ÓR«`„™4úÔúás“¥x„ˆ#KUÀ£OŽXÃåúšäéL3‡°5ÃZˆ(ó2ÇÓƒÏÚL-Œ#
-sGk Dœ®”VßX[x¾¨u­õ²5¦ äæ¾ìZ:ÅÚñWo!ô.陹 ¾žË Ð38ãí9HD2}B&”úÅLírõ¦}òöϨ‚šÕ†¬¥]eÌ&¿ˆ;“Ÿ³¥‘¤6L™ëC)Kð!‡~¢1Ô€ag¾±X{iè&^-*Jˆ]eÝÙ¬é7u™;-€ËôÔ÷:=1iØ02ÁVz,ì"þÝ2άy ·¶’épx\\}Šò¾Â%QœY'CÖâ‰xáïrõuªÀ@bÝëó¦¤BÖe[%©ÉÄ0Hçp‹pQa‚ þþ #”wŠHÿýñÇ¿>Âã}üñŸ<}àA÷‡ÉX á,íØt¼iyü:Ú¤±2ªòXÔaAúZ¥ƒ éåÔÕ"LAªúHÛz™‰ÚH3´ÅQ! MQ@2oŒrØX§açðÌ<33 Áu‰&‘7ãiÎâ7Q:º¨à’ÎçÀù €ïžç‘t Kq­Ê»GEy©‚²ŽÚÓ¹8QÖj.BØŸ|-ñrmÕ¾ê
-¢m\ƒ³'*>_„¡c¨k@NÙ’G‹!Ä}Ókq4ø3T ÙôC‰5$BI±ž:uAx£^ú}:äufŽ_ò:{Ç]gø^˜Ã¶\«û»…Ò
-BëƒüÙ#†°vc ÔmqX^kÇÏx†ÞúRÈÖøÀ‰rt£æ?ì£!6_‘e¾qÛ¶Áxsˆ™i¹²ZŒe±õI¸“†ø®x †ÏC\ø¬DÒY´šÐ’àænX—c|êšc d%•b+³AF€ÒÄv8†Uh@]t":d öIÊ@Øñc‚”O‡,“ÑlŒ3
-E“§ÑÂ#‰+†]ëžN‘½¬–iN‡4TŽ5h&Bšº¼¼Œó‚0 8™6,X
-B‡ Ô!¾>NÜ'r‰ Îÿa œ4–…ÞR,Wk¶s½ŠýE/Ø­t
-º:Z¯që
-IÎv‡x0Ýꯂ5Tä¼^T«Â¤Ž²X÷¸¦3ËìF,HëÇsªŠÎÛ'ó}ÝáF,fPºŠ½ªuAØ”sÄ®«
-q•Æ²¿¬¾dÏ~Cy‚~Ÿ‚Ž@q½îôù799P´wh&I
-v´, yÆ Ïüƒ×C3Æ©åz³ÌßœªÖ´8$±©TKÑB($b Uê•ù²àŽ:šõŒ}&
-,1`:›OVà*ð
-55+0à=¼9úR$R B³Wi€´yq5•Áó<F#ûnwuvRÎ=4­À˜(7Ð>tòGˆ_Ģđ“µ=ñda–x6Ô¶kñjö¡!>ä*ÚoJ²1Ôœ™Ýó)°n'›<(“%Éb6_ÍU¦„9z£Àa¼žžBªè
-<£äÝëðlçtO†–QÎn« rMÌÕ_WafÇö^9—†oâ©ùí@ªG«((ãÏhÕ'¨¡1ІüÊçz¤ÉíìUu‹Ž¸ø±ðtŸ¿¢tdt‚Ë 0by<2|:˜&n­1%+à¤|ø6¿Š_²°zîHWƒK¨!¬%b(« !I™WÀ@t¦‚>=ج }~õ’u½
-z3¿³)¾{mO/¤J,¥R:5ôâWuÁ(G:±…Cý¹h£µdOÎ(NG~ð„Jä"×!ÑÓ·`€aX4”u[AvV‘9e~ªsÌMdJn±›#¶‡?µêãoÿè¾
-Á3B+>~ƒ
-H‰Œ—M’d9
-„OPwÈ L˜’€u÷²n1f³Ê¾ÿv>žPVwÄ‹ìªÿÊô8ŽóhSf“Ðeÿý!c¶ÇXÓ–šÿé+ÖEÕg³9úÇÑÞ-úìÍdCº7i>Ç#
-ÂÁÖLÃ-!Î)îºÖ¢q®zuçê97öŸ?þ÷C>þ:ü«!Òüú×-ÈND:d6éöqA<:OÑ6­oÈì¼µ“kCl®Ñ‡u½!*‰X­é”+t@‹¬ù\³Iâ1ZXø>G䉹·™õˆ 8ÂŽLíi1›w‰fër]e3˜2(Àý9<‚{cy³Šføh|„ù†(å[dKdlÐè_fü¸Ùé>ÔÍ—ÅÇç»Ëâá$GbWµ»ãæ2„ËÆÉÎÓÓŸ •eõ˜ÞZÛź;&£½¹ß†òñ€Ñ¥ŸzŽ®”ÛÚª`Ö
-(Þ(°ž‹œˆÛ²1šn̘«©¹’œbNÐ)mú’U7IŸÞgPŠU7½tAÀNC…Ï8W}Ïä$}Û¤'PØ$¼¦GõGFîÒÂeù&ý ˆf„‚1´¹|\|[©—WmÑ‹ѳï/HŸ+Èöˆ™ °öhä#šL
-»¥P#ó6FÛ©Óñ¨í•lQ |zC¦rðˆE¯hõEËÐNÃn Ezç¿YJ‰ûc !aôä¯é}0Ït~~Ô-çMh¯$½ñÏü™ •êE»ó¶>D£#Ö¢å3~Öu²$Åž@½Im¤{5<J«®£/N>]ˆlÎìò&Ä«»õ19¯ï继F“l9—qË\ uÕ>:L„€¿céèÑiÕ¸?fÃɳDêé´Ï@^MèÅ0Ô°-h~²ã4\p*ª‡a<ˆZ\)![äŠfœÝŠ©4ºFg®Rðʼn*¾Åú¸ïh¢™‚:7}ß[›=ã1É(zBQ*±è“¦P’óþÚ â› Í ìtAPCm©‹îÈAôá2uG®ˆ #ò÷Ú´B‡‰)°º¢·¨G_:V3¤‘JÛIR4^uhcuLå/NiRmH0Ÿ›}¿ŸÈïOôÝ“V•u²qúù„²vb¼Ø¸é:Ó!à!èÐV1/ŒÀÊÑc~lž€òë’3wMû¤LˆýØ*œÇ@¯Sø'¤ž”§g0$BóÿêuNC7¨âÐ}W‚äÄpã›ò®Xßý_2= àº8ØƸ«âéhNºäUѲhF.ÆbA4è…Le;U£¬Þ‚Á¥%¯ÔлäûRü )¨Ð°u^
-%³˜\Íâw8 HÛ]¸míPñ ‚ xòíDá7An@È[VZSwí_@7d¤†ä‚:Œî“´85p­ˆqr†3¥gO=þ.Šõò'R¿Š"MØÆDx¿³›Ò¿Š"Td¢¶Ë_Éý94ʾR7ã^'3 £Š}«‰ó 12$Æ.'š8¯éàŒõ:'îø
-„¤ü=Dª°EÈgA@§¸ÐM¥‰ ÒÊæW¿¿€žDñ^9~ diä°|ä‡O ,UpĘÓ»ìŒ×KÅÔʘá¸0qXA"‡CÐñÇÝ,ö ê˜Y’#
-è¼çˆØžž–À‘ÍÔ )kW]éáÅóùqo6iô™Í6ù;HÝÄzP¤·òûsf
-ä’Ü äxß¹Ä-O¾ bØÏN€w¶¶ˆÁ^‚{&;£œâ:k æȉ#i@Ë«ÓxeTx›ž8øäù1˜ÉJq´ÕUhL&©]ühüRº×b×N”ú¥žŽ“¹Ë‰Æ7æ08]ïUðßÔ4…XfJgx‰
-ƒ‚l¹fnÍí|2ÒiraMAÈN1øʺ.ë 6µÑÏ),”BDÓ©s“Îy¹J‘v0h
-£Û®²s t0s.{¾‚)•[­Tª‰8ý
-ãëòY™ì
-bL*^1 0«‹T ûÕ¨‹Ðsä›Ñ ]7k„>áäŒRþÝ<ç‰lZ¬•ÁZ
-ét#SrŽ}JF‹ÎáºêÙò0§©]‚NÄ°’èDŒsÑ ¥ÖÔfö ­s(eÉìk 3úÌž€.Vˆeð*ÿ«E­«H„ç`)<¬A=ôxþÊGN.tôñ¾'ð/”²Õ宋êÝdû[Ç¢V»Í™áïQ³Ülž)ˆÆjî¬i
-’»g΋U#ŽOcQYr{¸Î
-rîÆSç¸c%Ø!cŒ &†3ŽÛ%
-Ž!_¶è[Gª;ûŒ˜|uY¢GƒÆÙÌm…™PÉa!e+â´­ÜNó±”Àˆl‹RH¡Ùz&èòN–þúy ²tTy5.‰ýù„¼°/ðºk§HÄhÙØÃ(¿B¡ØÑ:cµø—›'vªùY;0§ðžþÔZ_’ÇÜ!’«Áž=Ń¯°ÛÕË¡véêü½Ù- tÚF¦Ä†¤£Í•ìß@ê"l7Ó!Ò„ÞŸƒ\äè& fz¢IJp,o(µ%W,€ÈF%FMÑ•Ÿ_ ƒ¯Fº ÷ÉÍÌí­¢QJÝZ_­Ç¨Ü¤!¿,!ao “)E63ÛygË$u<{?n@Ÿo@Øw…þ|e+®¦Cmé@õxËô¦4Û€fÑ„ìÈIÅ“àáÐß¿ô¿ÓÀÖæø²VL\²ìrç]xj²É® aæ€eŠxµ¯ÎBÀ¹+X7±ú¥*!<_þ á(]ý¨ÛuQËÍíÖç%u²…éõÎ.&E#M>Sm÷ÞÝ1Ád•bTÀ-×NÒÙ®=J«Í)LÓØCº ‰4Ѿˆsyå°ÕYnyÍH¡ßÇ0NINvС# O€Hí:’†‡ñQ¥dŠ³'Œ´ÍÅ›P:!¨¡ñìž›77 êÝP€‘‚R—™£Îô@Í8¬hf®¯…`ôKÓ{ HC,
-W¥Í°¤µ€Öäx)r&àzY<_ºw§Jµìþ"éPì!¦üôìÞ1—ܵ—rt„ë†2WNh½Vü3¯L­h‚Š¿Šµ¯•ô`O^fyu'ñ _Â0uá‡cH²ŠÆÖf÷\äC"'ƹ®¥ oÄIrfCÝzH
-+kÛqÊÖЧ¢µ÷øÐi'¬)ÚìëàÈŠ‚ÖÒ.&ùV‚¯sÒ£)üúq/Âá¼^`ß|šGRŽ%FÈ“Æñóveñzâ™yîÛÓEÙØ×ÑÓøºŸþµ…“’1;é𺟗A\hòu7ol ,Ø;9¨6Øp!L0÷M¦˜læ¤h+Ö­ú}%1€˜¥èŸ~“dá¼õžmÁL`>Ì×áeaN>¯c¸x§}ÍóXá—¢w/bSõˆVÜ\T4DÔÍßÚz÷J¬Vý>˜V®ñÄÔ¯´ÄÈG•RƒÃ˜þtY6§1úýtt‘£ËÝ÷Ý ÆN[ÏwÃtÎóô]A>!ÒÍœ-ä0
-p Fs艟VæVX@¦=_Ÿdp²|ˆ”Ê_Ï>B…8ÜI”ðÆÀËÊím”–D
-ë~)™Ÿš°Dŧs
-&
-ò¢¦I)€”ÀrêÒ,ÁS`3`ïí¼Q;FÀw©%s°I%^íO½ÉcjÅÒK×)éáÑPðÅÐÙ ˆeUðOp
-'ù‚Ò‹„JŽ‚ÙþÜ úb=ƒÎñ«Ì)Oæ‹NZ͆º®Ž-¨xÕb8IYjqsÁ—’'fúRôϵHêË#AÎß9]Š²E®ÀëRrª„©ØþlÛÑž$9mŽ?y´8ÖýpäµÈàåü‰cœ$ Íâv¹óÄ@ñ‘/øÛ¹¿Dkãîñ!S¶Ѧ©Y°BGéÛ5žçTD ÷m
-;å² [Râ¯H¤cÓçÊàS PTlwûÂ1à{D'Â1É_€_%ò°ô>·þPB~cC´9t- àA`ÝR¿Ô¼ßk0Æ
-`YfAY¾( #b˜õ*“™†?{ß±ò$SÔÅ{ÃÔ´ô‘!ï½’ã©qÍžð˜Â6 °_EÈÂ^Uü[sùeAVtåÓÒñ¬¥Ÿ¢°…p#èýS
-ý<TÔ‡¼iü›‡ú‘w  ²Œ¯° D
-u«Ç”$# ’\A¨ÎJx˜+¯ÈýÆÌKJ … NRû:gÑ¿õõý;"¼luLh ²"¿v†ìdÐNiP܇™d–K/bA¹³@mÖâä7²Ašˆ•™¢îx§17'¿tÉ*РÏ é
-]¦­XºŸS˜bÃʃó ­ÞÃÕÓ2RÒ5›,¢ñO™€\Aq—É
-’$ì[é~N•d"ÏÐĨ÷ÛTyð"EµkÉü”Ú2vjïúë98ßnIÖç
-aÝ –VI³¸¥—°Ed°…X*‚‹ìÓ¢•£è:rvG*Aoûοés˜ŸV»Âa[¸¸ÑRY0¿pQäÉø­¥{—3LŒ4+
-] ©*¡=œÍ?@dÜ#ŠXlÚ8XõƒÝ«8Ã]ˆ¨’äZûX=|­¹¶ ãaPy¿}·è•˜ß¿ÃÞ“äg( ˜vD—à=Ú"öUF2“èÏ"Âm'ȧ¢8t!èo†s¹]ƒnY8(¯
-þ9uYéꇰQ™k&Ù‡9’ k9 ž›W”¡jÇ:§i0g´-¨xÒ"î-æ%C<Ü+V!]Jæôé.6 GoE³DôŠùeØ î¯VÍ+h
-œ¬´FHXö âÆí
-»"STNÔ{¡ãZMR /¤J4,o+p &³¦ü-v€£²V䳶oú+¨å3r­"U‹‡^ü>`tûBAÓ[¬Ì8gBâê+ŸütjØõ¶÷0Ô<!©­£eÖÓ+FI,£iù3ÒE¨ˆ ’e}©%"[ RÚP`@õ‡AÛ‘NL)ü/»ˆa"a"Þi1£|ŠpÈ{FÁ»£/ÈêÆèF &uÔ儹[%FQ±d]EPDR×Z²çœÎak´„«–r€4V:~1œéøA«Xñu‰–˜IúaW­¯Âã ST'Rýf{ë~ „ÏÇÍv‰uduÚܨȃ
-ü@Îøqâ–¶žÖ+ -)y9ŠÒº—%»é_<~¥*A³Ü9·DÛñ÷Xu
-°«ÎÇs2oú{e½†(yŠÑ>¦ÌÈPÄ]¹
-<Š_”FÔÓHÏ¿\64(ª`ôGó¡ªsM!ìOç"jHû»JïË©”Q\ÚbjÇâ Mt¼-/WO笞óQò2,cƒDIVfÛº«¾‹¤0”â°JòÃP~ÅmÈÿG„öµ²zC
-ýœœ‰íݾp6~—OÊÌBÈ—ÄrØÖg2úpŠ:¦a­A†”RùMCþ¾Žõ—7ä†Þóú°ýQg F>qYz!:Œç îg.™UVeÇTƒH‰¹?ø<­­ÏÌ{/Æ6ƒ!i"lÒÜõ\‚¦ÖgÚËôOÌ—×%ÉÞcXÌ…}Ç€¨ŸÒ@Ú'ßí+1LVBÚ ¢ª”&‹ëaòØâ¬vŒ¯ÕóÎÛçdúk†& uDš‹ƒNõ¹fÖÉèAƒg-8@ä4qwˆçvFPÍš¶¦qÎ~ŽZ çøEï® i‚…Ó¯ª:7@›º»èQ mi±
-ú1Ó•EÙú‰½ ^JSˆ¨¤ªöD½¿3øÇÿ®GÞC‰Óû!8ÙµJ!§L2¥ {Õ8Á¤}Cm ’Ø/ì@=;Bò­l_WöŠˆ‚TôMö:ä¶ mô‹šF†%MXÚg’ ¥³<U¾‘ƒ@µ'™S70“8ë0ä²®«Ølu‡È³ƒfƒˆAüCä…Œ¹65Ÿô§“ì*²jš"?Œþž —Q«±ÊWجMGµð!çDe)d¶>@VLYÞW]@H53¾ö>ŸkçÌœà+'¸6Q…T‚®øwÃd}’ìÖB`‰¨24·9á±½\MΟ‹Q8v¿gÀ}f[›À Va„ÃE’Êðç m<@ÎÊô òó
-Nk7ã‚m@Û)}9€¾@yty×Ü<ˆAôX¢<R_¦\ß5iØœ½ïñ¥8äÙ$Y´ê0ÐÚ;äÞW•qX3ŠÝóýǤ`÷waR¸W’cÙBŽf… ßz•ÿ£LãNPæ9¿ .2gèÇnz!Û »›E{I³‰›Ò9ô5Ë›¥#½¡oQ9 ¢1ú1ô B^¥àT¥ì'£•Ô*aEÖøRQÅ*¯ç¥áõ Œ$&ºüu³p|¿{%æ…|þ1ù9EÛ¾j_lv±(ò¥µ
-Iw°Æî&«†þ³*frêÜ@rBPcrØ׈–J¯Ô”ý²)UùPS츶€FmCP
-ò-Í {qâôº0îe¿çús»~½³‚—5Å ¸ûŒs1}‚R øI…FÙ6õ D[ù Æ.1ÿi³£¥•£9ÆÛ Ëhü<^÷èâ>¿@ €¶†YÌÃfF(Ô¡L¶-,·)#RÂÝL!;ÙíÁG£pœÆÇÌrø4©öÜýç·X¥µ6;F¥àð–Ƕî‹•Ñ
-F¸bM;eé$²vårH7Љìé3A5|…ˆû6è4€·ëÞ]Dá<[ИNO.€VÍœým º˜ñ‹4øœ@€÷†üÿ éÀÚ™Ìiç«-D]Vmǧ­öÛd|amÛ²€'b\eÃÄ)0ì ~wK~…×aªC»:"÷Û9ߺ{}®?íçCÓ[¹c¾ Sq¸Ök¼c"ÿÇx¹$ÇqAôºƒNÀ@á5·¼…¶œûoý(ŒÌi´Èp8lK@£*+?Ĉ$ƒý&Ô+¢¿«<.2`$WIËŒ„Ë€iõ¦½ Qº˜Â8 ê°&vpò¡J)LgG9m …´±Æp(IÁ¦F”òóª×"rSÒ2<™Ÿ¤rí±ít[G–C¯%ŸxHxeÞT79+>ÈF~úÏjŸEüâŒ]m'ðÉÄX{ƒåÃØPîà÷o¿ƒø°Ïsh¼d·”Ôùð"LšèHÞhåRe/tG/p }¹­9[E-
-ŠBæ‰>¨$qî°l‡èºf‰ '<d®;”ÜqÓ—¢cÀ_³æ¨µ­Øt*J"4ÿë µ"ePps+NG!4…¶±Jf¤jRgw}eÕ”ÏÒ]¬l'8!XyOæ™✜ +=$:!\⫤&¦Œ€ãʡįàR—mwçÄÊ,Z[™H_#L0ÕÐ}gd6ˆôÖ
-:= b%³I÷ÕƒÛåUj0?ž 
-9ì0 @ªÌ‡’M¶huã—”Çùq DŽÉŒÑ¯ÂÔc¸ N|•h
-^¨ÌYÒHÑÀµ²¯â…,k*q_ A‘¨>üµÎAW#kqƒ‹Vá `¢æ«ÇU2»½T|À‰õ86]¼É0
-ëãâ– %T²;½`,ÂÍ°¾úÿ,¥”ÑNøáQkhCÁRAñœtçÌh®Y¼,#t2ì¡%9^Å“ê7A´-%ño®rñ8”|r½ØÛ4Êøÿ>¶¯©H§Ö:,^JäB”5_è8%Ѧ8Fêþy,: ‘ùÑ:>yä­q4¥t;9œ“ 1}ÏãDfþîDÃœ² "<¯o ”Ô,kgþ=ÌýÊã@Œÿ+oÃdl ˨û¢må „ª¨nÄU‚!ÌóÕ¿¦cs‰C¤Öík2Ëž*æG²åzʪóJ®~Nà}Þ¶wË[lF— ¥Z }MŠ{ #`A*ÜËþZSµC†ð1ÕµëÖøQ¨f«ƒ>§/\\Špy« ‘ôá Áþ#!À»z
- 9ÀqÎæ%¡¨°®ô2S`‡²zôäˆ@YÕ-&+A0+" buM]áI+3¶85ôÄP]“é Af
-Ýúþ˜/%Ž }ZÇ'×9¯çðºªeˆåK4}ôM„">Á+x´ÅƒñBJ±n\
-$»7`!PINv’ÏÊ•-(펅UC:5‰Úøî»""f‘fg8©½wŒyÝÑÙOPÓ±Ô‰åÃnnã  î¨ %Š>Ò¿ö¥ÙNñ«/;û8 ±2æDÆ>‹§)iµdçؼ„öšl¦0¶J ¦Œ¦§¶Kxl‹f‡²Ö±Uô©s7I¬ïu$–e€ii’'%x|Œ?oŒñ¸G”( ÜbHýf›¸’ˆ…R¤rÞkJ ,Ò}IX6˜”C†ñfAÔ€ˆÎàqv3à‚÷_ÇÂóçåܜ٥¦Atø¥åošÒ®–ñ)´Wºò³^%¤Wè,<c.ÛMУy²ŒþìPôu%s²; AÄÇ\|Ú×3Ðá–¤W,4ŒÛë)æú0nHÖNǼŒûú1Øœußµ7_;|X†/ƒúó“ùxz?JC¶
-@Æ0Ìc¾Šd‚Í°Ö6AMJL;Zò
-ÂHi£Ý˜ SÑ—Ñ‹ lZ B׳а¢$kѶ1‘f¦Oæ©]Ö† WÌ n¯Ý/Ï<GÈy–fŸÛ†ÜÌšz­Kí¨ª®|-ñMæKGV´¨é|àb³1ÐÅBÛS (ŠRæÉJþ¨BòPZEI6H±z¥âéðæ´(ÁË”ûÊtJšåÍÜ‘¼úd¬ñû¼zM€p»±¯ú÷~NDZßàDBéÍ}xJÞhäöë„ZöË4±… ZÒц‚“ß_
-ÿJŸXŠ9xŒ‰Œ"ÎçÅ1¡yšÚPO%ómöF³P¯†tÓ %YùÛw2 ÖavšøÁ“0ºM¬#G
-°ÃH×ð› ")íîœ
-;UàQʉ3(Ix
-LlýÄó* 2Àèú¤ç(^Α÷¬0&–|'4%Ë쮂7zPèšÓ´!M¦:·µê¯EGdžíýeˆzÇO‹¤;À4e¹¾ðó¦h#Ê~/DSÂœªN.Oq“bu•$À¾±°.q¸iåpân¡¬ .¦ö¹Ê’\š‡Rî_Ç6_
-ËZ†>çIÇLΩ·q &©iahãÝ9E/'6Ù¿á=L/ŒU‘S¸.Åq`÷@íf%ÎÙîMƒ¬0oe±¢nð© B8 œ¦‘× P˜Î…ÀÞŠŽ#g÷Œ<¬òŸé:kä›&¯ ‡¢(ñ•d:. “Åâ ’ãÞ¾×.6€?¥Ø¸9å:-1z7án¦NÔZ%Äd8t ÐF(†dW‰,jo—5¹@¶[=|­9µGN›ä>-?-:¥¡oéûoZ+á.üÑÉÕ>VûRçLG¶vRŽ.åO\3Á(ü¥¹«”4 <°Zu—°ì‰Á6rÎJC“H™Ý~úV…–sxhmSøfTöt„@|üƒS‚y…¡šj^*g6oá{Ʋ6ü&#Ž&TµCÑÇMF çnÓCÎvë·J¦SD*’Šä"
-zb`•2ßYËÞÖ„å-/'>½9Å<¡¤ÝSîEÞG[ò­—â=@kÏ;;àG2@†ëë<3äSù+ŸGõÝÈߟv^Í·ˆé6¾£LÐcL¦NK %Ò¦ m¬mÛ6pÔÈ°gåŒùcÖý*" !ÿ“¥qtPÅsu‘À°¢¼­*åM'‡@ K«„ö—*aY¢q-Á)u¡ff±<E0#ôøãeŽ$Y±DÑôJF(‹Ù#D¬¿Xê_‰Èþ97Ü_a/ÒHè6ŠÊ›1¹ûÈ”Ñ+ÝZ‘,‡ÑĘLù‚SÑÍ»,·I_^™{Kß‚ŒFš¬*ÿ u*ýÍqèkÊ¢%Ýó¸£ÿÈÓq¹8 ˆµ!J? Ï5Ô»uÀ°—)!`Ð4…›l¥ Ø€{¢:ýH¯ÛÅ’Vñ‹<{  M`$ËÚ©½(ôNIæz
-±gâx d ]êIòLt-™ü9Rç¹b(h7øpÔEÌ,Zƒ®ƒ2™=üÎœdÈ<4™ÊòM™nÖäKÌwì¢ ÎàeÏrÅâQ׃õ){ÛdW=}iÒ›T˜¶¬í
-y›™¢«ZlG4†‚ÆH•ª®˜U”/W%¨R‡…µÐª—¿óP *– ŠC5;âÂV_¯@·ÞáDhB§ÖS¸y¼Óôšßþÿ#Áò”ž7ùH*(êRô#ïŒNî¹­~øó¨ £8[eYuVLã@Pú@£Ô¬)ÔÙ꺷~}@5Ѩÿ@ë‹C Ûv7Ðã39üþÇßþæ¿þ/—i*dCÈ‘Ö<õÅ5ã0¸ŠÂRAý“!bžœœùi"ìfïÝIaÖï*Œa§§ÒÁb&QvU½(Lg’GGК9(!G&#™/Cg`g2m¯a^¼¢,ÐvȲoMyn.™["ÂpÈ€r‡©š>amì;àJé¾­®€Ôt¹“’|… ¸QÌâäÑÕÓ«*/á5³Hˆ½poâóA4Ùì/;!cÌiç!ÊΠ«|*iž…Vm¾¤Ž•å;«
-½B¼ÖWÌ8AŠY҈ƭØ
-ã;OvÕs¨«'c•C‘°¹Ûâ#%cîL–. üÄ BB¤o.R6Q ;@öNC¿c„ R^­SåÞaŽ:£ž²#èŠ(/ ˜ErLr›¢;Ic³òW±k'Vm lõîoCËèâUèlBn¥“ ²*©‹Ÿ ì/ ø‚&Ÿ^åøcòn ¥Wï4‡e?pâ€Ó\¶øÀ&ò ð¥I4âN$#þ_즠ʗz]ŠÁI=:cúƒU˜!fÄ×!Šñ¼X §Ú‚óO2H8†ÞŽÅD›ôàD:<Èô­ÈUx¥-ªPøP$€¡}€™–oVBf°1ҧˆ¯Õb8ËŽpjeçt LQ`mö=äFϦõ_‚“kqžóàaIL¼Z íªGd—ÇÖ:Ú­\;Ý@†ÓP(èØ×Áu\7ô¢bç­…ôÒ˜WŠIå1‰²…é×ó±ëp‚2Äc'µ~'A^
--DÞ«9DŒ¯1<Z°±LÝfõ€¸z‚ê³—yº=,ƒ+ÆvBýHpsH_´•ë:ñ†P%Æ¥8Ze€ uþ^b¶ÔÇ´¦"nNO$^ù\.UDÚÆxµîïgm›þ„ÜñTŒ¸T¾8¢h¶‘j—ª¼Íä©1~Õë„EFPhIÈíc#ø äLÏ´(eÙÎM)ÒÚBd£õ`–AÄ©ÎÅ]‚b&ƒë=Ž šKdMÛŒmþ÷óœ"^Þãs³Äb¨{^Áh+‰²˜‡[E9Ù™ÒñÉÖÖ¥¨]DÉ|‘»””‡t ‰ÉG“W)§¾yBéòHãâ©í¼ÌÁ‹Jh-$±¾BüâVbsAwS77z.&¼óÒ”]ì\·©ípE“ñæþÛ2<ƒ¾Ž mX2–Ö^b;I9¿DímC1å-±8AßÎ4\Ø
-Qà¥òhÄG/q‡h® ­
-º*vÅPFáF¦jYÛÝÝ«¶°=–+‰³S8‰È†Ñ~EÀ]– `ˆóbÎëbqžûvmUy.JãµájÇ= B ZÔ*ø(púVM┸Îa¬9€À5±ùÄ2‘-È5¢ä“aåE½§•z ªAvV¼c*j*B†þmôÝwPf¤H‹Rxl”ï5À‰æìÑ«0·Å1A_qqª+[F%’«&o òýÆ´øÌø˜½~dôÄdóö”ƒ³Ð8;GŠÉóØ.Íц¦@K!Âl;vkAžcñšµ_A‹Yš:(×!T‘ˆ!G«LOÆv§å^˜NÇ”ó,Ä”6¶ÊᙚŒä†Ø’c²R|l]" âÖ×ÇiìWüâ,'¼ûÏiâÄÏèá7'$ üì‘7FÎuªµÚöÝ@æ@MÑY[QpŒ8 Y}Æ7„é]VãJQÏyC“gä”J.Ã%0Ž´j;—ä‹c†â”±šl_[^OÃBcð ‡w€ì­¸)ä…·ÁÔ­ó:t-#Å£0l8ðhPs¾„P½U${Mß‹‹‹•d[hî‹{ WpÊ%°-É«}“_ãsJ׊gÕò™ç”N33#¶"€pñ¬„œLñ " õ /è „cN(½„x¸i¹ƒ`ßN—Šh°þq:2ò Ù‹ÈF›qäñ"†¯ûfÓѯ«/Œ 9 Áíá«»BJŒôj1÷ƒZ¡vA]’Î.ÁJa~hQhoÏÞ3$zU¡Rš¦q^§¢ÑY™G1(X²¡Mš\at2•)—ëâ¨ÐPipûÅ_¹î)^i+¿öu!`Š¯`ÐMÇ”ý†‰÷€¾ÞÅh’è±$2jºMûèñŽ»`7ô…™Lð]fþk#Án¬5Xœ’À/üO«;xy™ÑùÁx“ߘ—3è´’ø„0¤V¯í]ÐÉIݶ;‚n·#Ñ„bí<ƒŽ+=?æ3èñ΋ïÂ|ühEr]Uãëç׎Qmª‰" X“ö¢óêáÙ"÷nx•ŽÇ(\““ícý×^:UòSÑH¨H‚AôÁˆmÀþO‚Æðcñm¬PbØþa¼LŽs· sP,ìËY>¾,|ýó?ûkh—ˆa‰®ò&õ#€Yz‘³ÙAç½ðpK$3
-~£s/‰àûÓ4èöx<ü †ª?´G¥B”LÓ©&nñ
- =ÖEÎÞq)¬¢7ÐçMl3ƒŒƒ`´†_•3a.dàd³Þ­võí9(”×r‚HÕ{Lp›¯AÞqÖ©00¶²yEpA^Í·ã^¼,³—à È–{[¼]þµwÖâ„Z¡i3 Ôv‹_ãYä‹-²@”%ÛàñàÌÿ—Éu uBñÚr‡åJ˜²@
-¥aõª’²„Ë0ó(<]8Õ3É¡#1|\yÁ²ÂeCg4ÁD\†äÂ3)
-ŒA4&Á
-§dêæz:‚ðÖF^¬MýH™Œ©íª2ÄvÔ1®œÁ §zÖpU¹*Q ®×¢hv¾u‚‘ƒ¢V|³üô›(s¾TÅ¢†b‹q±×¥x|\WóôG
-¯¸¨ 5Y¯­ËâéÜ&Ñ
-XÁ]c°!…ˆÁôDWé& ( =y>hls'ÄŠÝýNÔ#NoÁë— #|¼°Æ­Úë'Y·‰ë¨¡ýŒP}˜‹™¤ÕMák­êdÈ„“Ùɯs©b£¿HxÎËÇ蘪 6sÖŽÿmˆC`¾íMÔ ƒÈgí ƶq‘h 4Ä¡Á¢¨ölzD"—Y«]ŽÙÜj—E[jßê%íÒ·BI­—T¢ÈI.%G^{eè‰w'è¦âB³+‹ÚKŽeØ 'ye/ØzÚýïÀ-ü
-lr˜»Cl!V+ Ê*†c™ƒb”õ
-evËÅ ÌfÒÖ‘†ª[e!ø2–_>ѲìdÚØ,ìŽuÂÁìôÇNbaŸä€>o†Ñè½£¸¹Ê¼¦`¾ŽUÞ™µæsf;?Ããîg¼RäЄ)‹9²¨¸û¹@CÕÞ2no1ÞX§CVyà|™É· oöuƒ—˜´ÐžuyZ²à2‹å ­¤uñ­)7ÐçMç¬ÁL“p‡M,¼L.ß‚LòÝÙàÆžÎÉxð§Ã“ vRbˆTwYB 66‡øÉOó“ƒi˜ñB°"ô-÷@åà†?ÏB<˜3}‰% –dôÁó‚Ÿ7%X•ÊjrITx\{¾­B#W0r‘s–‡UØAΘsœX¦s$¿{ r*UÉf ü3§Iæ1Ka0QäòØâ;È›ó½¯@Î2ìmq–á×Þýï¾êiÔB+x“1ÜW¥î#æ)=¸¯Zt(œ={™Õµ_@²Ú™ñZäæ¿€°Çí¨ÜôÁ€ê)P¬ƒG×€ÁÅš•Í€yÍ€í Í€)ÿ­ÞÏvr)”Ù].üv;áø¯_Ûõ¿ÿâL\ã€Ä°þkÿžã¿v·QÜ6 ~Çx²_wŒ·O*míP›èÖ¨µª®ÍsÍW­GIŸ‡OšÃ5_@p_—t­÷f¾j“×Âv2p×æÞÌâ'cÜgK®÷ÚŽõÚ0›ó‘ª^4:¿uO’†ÄÐÔùà¼øêF™¯¾óò0{; [G3iÈeÚÏ›14¹)´]±“ü¹Ø¿µ€ŽÑ¯lVwH&Рe…¨ç
-â?äðÜ^Ý k,
-Û Û-ï;‰à4º~z-’Ä…8»wyr#1«üËŽºò`"›ä¥Sñåí”ôJ\Û¨.àG›¾méHET&Õ¨¹â¦uú¢µË“ÃKü—ñ2GŽë‚è pÚ2½/¦®\@!K ©ûë寪‘0¿‡ œ^ª³2³PeËRP'_D[!#¼Ê°Õy_n>Z
-‡ƒ`‰wNŒ%¶‚Ë—H£m rr‘ÛÍN6ò¿×—4ýòû¹Œ|§ññ[b+Ä?bú[úö×[.\Oc¥§퇰 }̬ܗªI…xZ¢!§êýo ßN ‚ô益GÄ×è¾Ý3èã+g²¼ðëŸo¿üÍ=·l‚›ÍÅö©†Ðú´‡~rÓ* ⸔´uù¾°L´ÎÒd?^€J[k‘Ó¶E x¹:~;g“P}”Ñ¥º8W—<=o÷5¿Àíñ]¼x›÷A]"
-Ðj:É;.\hÉl š„ŸÝ 
-bp?EiÓŒ­hoÒ0 v‚qL¹‚ÛRˆ¸ÈŽè‘IÐ[}d·&AÐA ØÓû˜=Å;lñq%ê׸yñÜÆó2(Å?/I ˜ãíIÆ`D»ÎB±lþ*ÄŠn ˆÜ»,°\™ìv˜kŒ³±Mˆ{ºÔinRmÈ«ÌIÔ+&ØÙÉhÈ"1ËÖÁøê|T.„^ &sˆ ‡4Xrl4»œy‹9…0“®œ–†o¤„`Èžo›Ð}æ±Ükiq`†EO&˜o…p1_ØVp˜nÔ@›" JéJep¿ä° ¦¶Î-mÝ:ê˜ÚdÙ™Rð¶Õ=µÁ@"óìY]ÿc´?nº'’7¼~ ¦¼I¦cêc+ ´€៲݅@ŠÕ ¨t¤Þ¥ìJ %ç„ÐKH& wLŒŸZ éÐv¢ÉŠ:U"è ªt@Ž/æЈ/j}1bùKáf̲ÀZ =—tÇéÇ«#˜%v‚$È/òë`€0
-²]]«›QÕM¯Ø ;äíºF+qRŸÒÊ,ÇöeÝA˜VðDå_@nsí ôrìÄSf)GøƒÇÉ3OÙD,ç”_ü1‘6&„ùHA§Ò‰;÷yÒ
-"âB=LÜÓUpqt
-íJ¦2ŒÅ±ß½§õÎð×n‘¦$â‹
-ŽQl%Tžž( ù¶u¤ì½gÕÓË G›|Ž¤É Õaõ|wá¨]º‡åÑ„ÄtÈwâ©•îIPÝßó#Øm d±Þ¦k3…f£ø[—}˜
-eˆn/òê2˜y4΋Á½¿@Ï,þM FХ͙ézLÿÒC€ i0l¸#ˆ6¥ öu³)EÝI5xõ ÈÝ… )Š¦&‰eÍ->ùƒbquàU*ct
-tHð?Ï0»ÈTÙÿ4·H uó9#Ù2Lð…úÜJ~NáRñ9LMýäó딬ÍLøÉÈ^ã,è®=”`m(¸Æšóç®;DøbÁ+
-øìÿT\Q|£„”@ÌA0Ÿ½%^‘ ‡’!uÃÃÎ#“?úš—¢ï‡"Ç…ty¼4%Eadls}3iöU&† ”ëŸNï¯ÓIT­õy\ Si]7#¦¿&Ô„ D‰ ÊÎÕpžŸ;h_ô€/ɉqλ
-+·yÐ÷Ëps5¶ ü,ó¾žÁð…É|ʘ'ß 2IÌ[µMÌ) çÂü5u2¹±Çë|®Ìo7O *]wô=kùŽŠ™+Þ/Eg+JšÑ«É/ „b»ìpÖ`úsdÌV«îÃ/Üx“UM’ˆ8ìP¢¬:˜ãƒÔÍ)`zJ«‘yáîD›j;cRÒͱ øŠS’Qg\0xI+ZñÂ$²v+v€á“¶¡žsߦLËž)%,éÚæ‹ÃŸ2 ±™’&á5ˆ²AêÞJJѪòV?E€é]¦DqÎá±:dMè(§„FAz‡xÞKXÈV“¬Ï«Õ{t-‚jËÕ–’!½-ä™X?¹Š–syÝFü N^õ)Žñ:='ŠzÖñÈÍh’·:Ï9p§¡µåÍ´ü*¼€” 1FU&»Á¥mFÖKIýúã‰+œ‚`ûuç‚Y’Uî9 ŽcÉw&oh¢Î/ËÍQlQy±6“¥FÌÜ}ÃE2`„ì &òpCùîfبÒõœíÁ͉
-¦¶Ž”û1S-ER~n¬÷Ï=Éme¶
-f0ŒûíŽwb$“Ñ­x™7»c°I!oë|†À.¯ƒß]€ádqª†c\—Ñð¶
- "ÏTq@ÐßC–¯Ìèa7>ª‡ân>gÌóº……“‹6¾´†2t 93ZIIW³á2ÄP²V©m¥D l»«\Œ3™Ù|¯¼½%ƒGï.5¸F°‹‘gøt²ž
-ÌZnEß·"-7KͤQá~Ó_*
-)<B[ ±þë ÓÄïjr¾‚BFÅ6³?{0¦,ßÎz #ÃmØé‹-¶§•SSeHüGœG´2Ùo¶Û¶—5vD MBýÆ#‰{‘×8%ä]œ,Ǻø"6ï)Þjî„HD;¢UÛÚBé^‹L§²ç/7‘Cñðב«ƒa‰XJ_1)oмU„ô“àœ¸ŸÂÚòNk!Û+à>™}ž’òΣûH†¾@1íe'x)Ä@dêo7Ù~8µôFEkª|¶¼
-‚ŠLQn»mÿ»ò8„ ¥ª  %ǯ ´ó4ÿö"ù3æmÕ˜@²œèòÝ]M«@»˜¥I9åÊå DõDŠÕBOy¨!®¦Ý‹&0q €QÍ£Ì 2A¸g]ºÙþK6É\¼ƒžx~Å’CY\âà]ß¼ iñU!OŸÄfJ;¼ÕÞ˜„R¸xÛ—¾iIл» ÆF¦¸sx ºÍ¡ˆlóÛ ¸r6(µW«Ÿ3bÇá‘~.NÙòš7›õÿFL– iÚ„ˆeúG€
-H‰Œ—Mr\9„O ;è]A‚ ¬=˾EGÌJ}ÿí|x«Û¥Wr„-»œÅ ‘™œ«õþùÇèþX6bÊlüüüû£Ö×TµÖÛ*Ì\cy3“O þˆ®m­6›KAÀ›ñçàKÄØ­…dèr¾6›öÏ¿>.Ų`ÙÆîÔ-d5o¶×™œLÇÐàƒ iÓú4}CtD¨éš~ƒ¨Ä”{u]ï–émÆfú„¼\j=‚ó¬èRåsÒ8ë \{«õðÑ?»
-qYÖZSÛë¬.K§×Ý™&aÖ7Ä:ûЪ˜xt>à‹¶øÙŠ%$T$"6ˆÛXS§d!{¾ø¬Éš2B†ÍÕ—ŒÚJ{‡ÞÜuCæ\1z“‘ý­­g†&MÃ7hÉ’¹¤Ç î2ÞÈ_»Ù¤ÒnwiÆé\ƒÅ†}þú¸õ{Zh›2>ÿLq¯Ý}­°Ÿ‚®úD^~Ž ò_o@]TfŸ³‡\Ây† lˆÓ¯à?¨2õ/ˆXR[ç(ö¸wƈ֟vá[ki¿,p„Ý9AAÏå²Î>6d¸Ìá°¶ÕY²N¶Ìærvºº5¹ÒPzÌXS×N“7Œ vnÈèÖÕ»ñ½B Ì Ý«ÃHvf2>í¹SgDÂÑ‚¢rWsXÁ‡íu`-]æ»17¤Q¹¬EÖ¹ p݃>!h s
-Be(޶ΜwÔ†J¥%^Ô.¢!!ÎÞ5‚´ASŽ=oʳ!’Uî–ƒ¿kŒðò6|EAסÐÌcAR_Ø>þsnßU7Å„£4f{Ô2ðŠE¦®:1ÌC¡‰G'5n¹LeNw‡Á$ž1­©Ù©0×cÅ‘ãpVÉfR@?bÑDpéJÙ´Ög!@n6ž3Žprbiâß1_GEL1•3 YPa4ýV¹r¨¿ö…ÕT+u5ªŠ7¹©ÝÑQ4 í—ÖêÞct‘¦!]·zL·5'öI¯{3¥y>8,ïYƒ²¦UAb?ìkîs§S¿4 :êVL?"‰öØVÕòO„ejÜLBY^M—^;á^ø¯&Ñj§†”pÕä6in4¢¬•‚®½Ñ ¤6šNVPq º3útRÚŠúHn~ò¸ Æ®Ú|Þ ›„‹Þœ­OnAŸô’âKòÜ'ê; Â^øa"ÑÊùO
-ú^¾п£ÒŸÿýèŸÿIäxà®Ø2±áHÿoŠü÷ÍÎL0~Äô7ÐÉ&¨I±pê`Ìä
-D2Fê-ÔbÏÌLhœõÿ3ajÊ×Qvô¦1©±×Ìí’Åd8'cNÆ–d ó+I·ïÿ![!´³ ‰ˆ
-GÚ©=i ®â†¹ŽÐFfAÀ÷Ê™ÍѹËDøW*ðIœá“ݹFÊõ•à§#P}däÏÑ ;È
-´p†˜Ì0ËÞúƒ‡XdðlWrí[fLµ`ô éY×^o€™Vš‰gkÏ+$Š—q çV¯ $/5jFÙ.°°Ö.g
-‰Áa¡ÓzRðÿFªõûe'ap‰8ë<kZö€èœg«) ¥¢'·Óÿ€u=6y°Àᩧ H ’R¿½/“†ËÑ㓸eXl_
-Ï}æƒ\$Ç!,øˆŒ“OÏ$À¶#ž¦=jl“CC€Š}‘¢LNf>»ö7þºHê\“ýõñD‚Âêˆ7©g{(†ß ÷9óo˜¯LÎ8=¡ÙرÝ1ˆTÝHOXEsVpŸf]¤I)x)éÏøÚ—H}á!;¢Ä)YÊûéÚºfðß3ÝZøJš
-OÎÍa† ÇÑÏ*¤ÚDÈ ÏqI†òGI$¹êØÊWëN^¸)riæñ\)eÃLrM.€üµÖˆwó„ÁCÎV<V òØ,PÀQHÄÜQ.Ä3ƒ.ñ¡Ôi2à)e £Ô`"
-‚Ì…&û+r¨áú^Û|îôÒñŒ@ËSˆJÅŽ‡Î¡0›ÂwAêÿ²Ìnø4R†ûä”5-I7’$ÖI’ö+¶}Ãä©ŽL@qé–eà…ÖéÿÓ~
-zÙíÂà^0Ôò¥6åç˜ßÞ˜ï6ûh†˜kØYòë †
-ǯϞ's¨$a›XÏ™ê%³í«ˆ |­¸[yŠØû”X 빞svwHžlì)á"Ž
-a//IcQzÂãùëBtpî#`Ø ‡ ÀÁ.hm¹þCyx2Ò†÷\t9ɹìRâWHŒz‘3¿Ÿ‡±ÃTê®!äÎv,gKØq$Q±ó
-êÓIP ¶3¼Ë8Ëç
-9üu)Ê›óHQΉӆÖÒg¾¤ËS2Ñcl³ù¶ãÚæ˜%Œ7AÊõŸpE‰,‘oš—
-µÛ¥{A¤è!^— Ǥ˜Y‚\kãJÈÌÛ(û»5ýɯô^öyÀkΉæÿÌœÄT*%NçQ&Ê4±õ‘9òŒ@´\ˆ`"ƒMZtï ü&.)XHœP 0‡²Ê6y.×[ÞÜ%Œ•ß@®f¹”¸²ro3™ªÃŽ·sžtžåF¹)Ú|õ úÜ´±QÈyq•è 1ôøž)ªëŒÉÚ9gà-ñwdÇ8‡»x(+\½äŽvïFécÛ©¦·OAL»ñº¢²S-˵²‚¬B_¯5oj¾|Ò‡_6‹v©7»}·A~C¸$ŸÆæ7v+ë×vQ…«LÀ<xþVÑí:û[Ö•Iéþ è¥—Û~Yóc?ßA !aìZ‚§3=ß68n%2Exy!þȬŠÈ• Áz>*Ęrûª~8,³ˆbHeÄ/!êG˜˜G1h\;µ”µâªŠÃíŠY7ñ‰‹vΡç¹é¥©x‰B4g'Pb¼b`ÚÆf•à´r‡àô¸ªa¹ó$6ˆbpÆHŠ2Ï9PƒF²‰3²,‘€—¶'%H_ËXùRâWá§ê¯î瘜ø¶‡øš‚>J;ðS§†`mï·Ëÿ8;X•Îô[ÙgEŒT—¥Ø뜃Ga¾È_\5 ¬â±aÙ¿¦£´J‰r/tÄó–¶×t¡bLåA Ò³¥†Peå
-Ü•Ç5<|#¯~¹Žg çðuPâÂ|J¤–&§™¢ý)MØ_ŽÕ¥£qÁ«=GÿYü§4rlãålí8%¤Z¾WÂïA¶AîKÂùÇEXÂ&'=‚, @f0OGž\ÓVR‹ û5ëRBÓMy·_9«©¨³“Šøé4иZì(
-€Ðb3gJÉ¿.Ô[»¹ÀûòÂüÓ¼š­Z?Ôä¸
-ýlzÑÏ8 €€üöp &–zÀ4æç
-Xþ„lÍä^$Ãí¦QodldVžOnZôèÐ4iµDMyŸñãæ: Ìö®Å:··G(§äúFeÉ *Wü$gŠ`ìÇ 8zi8ª=ÈY 2B™héÆÂjMÁö¶¥{Ž(ôÃö¼ŒKˆ¹mýí{œ®§ ñ.¥è±Æª4¾@õˆ(ݯXöàÕ47“š²sAú•á€¢Õ)Š€$¥Z9•ì}íú{APL˜Ë(ãØ×éÞ
-iâ–©?i ã»ù 1Ïú Esà
-O–F4w!’™5Huø“§>i‰d|ã²<·ü!DîòáÌÆïÿ|*T™ˆ6°sºFêpqÏëôç¤ùf®©6>ÜoLµíR6
-V;ðXN‘Ji»@ûÆŽ ÁÉuùZ©% Žc—ë%f— t×Ô ^¢¦k:u¡$Ò`±œ‚-Š*
-8@µâùåÙ­¡H$ùù$uâ¨ÉJ!x¤lùUÖ6“:ùã_‚‡ÑŸ"ðÓ|¼‹aSMtâE~iæØØ ª y:›#Å ?ýE£Ë§“3 ¨jmì$­øŒ‹º‘ÑÕÂR«V›ë­hxGö†ùrŘaÝpãtQj­KNÈN¬h|(û¥(9t+«k,ùþZÚ¤ÑÀÄæ6E ‚˜h)ô›öÄ$ðùØ7!Üb[±œî‡šs8oMlLÚÕ%h‹f­–‚ZÞj.ú¡t”äåÄm»ñÚ Cý?ûý½\™‰²Òœ{s@½ø/b@†þù´=¸TQÌžtB0`@„ùꮦÊ:y¦$ù„ ­*= ]•ån&nnN8¦-iÇX,ØNñNµÏigÃL7‘¨v‹±Ð1
-\Üõø¹¼–m* ‡ žþb£¸û‘RiHèÄ~ÑGj/€Ö]¯7]Âì·ùÜ&ñ”ñÁ~†Þ˜âŘ"zÖX¸.H¿#²Xžíª¨ßD#˜i/ßÏiÀ©„Šó·°4sÒ׉` •ž ]±ßö¬m‡/~SC
-æÅ2‚ÐÇš´øÇ…¬÷HC g±@öÌ Xeƒ©ùºŒ¶œjq&¢Ê‚2oñÓÌüªW©Q†¥Æ#ÔѾÞõJ˜$ÙÇ,ø»Éž€LJyµØÄM¯ò©Ž±6‘H¼øM„Y(ÄI•A¬B^Ä\ºŸB÷É ¾ƒ¥í™)…= @D#…G÷é üŒ:íäCÎN%Å«ÕC0w5io­ÜKS§‡Yf¥+»=#‘´• zs ­tlüMòáÓcÀ.Ù‡dènËÛòVÖWñb¼ŸH—âµèr\Å ðHæ§~ŽØLâÑ×iÄʇÝDïÂÇh}aÊ<!Sf.
-¡
-TÂבڎnßµ¤†“?à”õ@ }˜‘ ¤p¤€¥…M™±•aË©n–Òú:²„èÚ©R"“Ôå˜/|m¢x°=_ê8´óâÙi%Ä\ÿúPÝk3Z¤µÿ´ßgéò]²¹ ìÊò,ø!ˆC/„
-Â{cæèž{{ 83†ô’¢?]cz¹„¡“à=âu²i“ŽiÙ!Ì'ìD·öô)ŠI¥ö°Lˆ”<†òÕ³â'w†p•Àâ Òò•‚¤ŠÅcàV¾©>6f¸h…˜,6¥Ãð˜1v‚9¸vŸ+&47’“…‡¯£ÄG3›\ÓC;„7€Ý)ø$Å„©´k…š´ èÛAL5dQßR=¬†ÏÄ 0`)ÜËÅ8Æ<ULn¸'Øw³ÇL(÷6„þò>b ªÀ÷{2 oÁETù{æ™’
-ßlÖ‹Ï;–hÊnüa Ò~cæ,‰@NãPÞ)Ù³µž­¨&®y¥ޡГ(oÏ1çøæ®Ì[²7ÎP"ÚpJ1QÍ]Ãìà±ÅÜ­F5¡IU9¶wÌwPÁ€éd‹­è5“éœWòÒ4P€&Ê›^Ë•E¾´öüd’Á°
-GÒ}™]ûDÛJ1nŒLµ›F…+ê!œ×±B<Ì{Ód™–²Ráå#VfdŸÁý;
-ì,Ãÿ*ܵa±†r©»E¿"Ÿ/Yì~s~œèëìÏ„É$œªHÅ‚di“Ÿ—_°õ>+<‡ã+Å7ªÈ¡T^=ŒÔ!ÞÉϘØÆJ]¾<Ö•X‘‚îë µ4&¯9„þ—[Ë®ÿ
-9#“OÔ釛Æ×Î&9lýÚ¬%0‚­L‡à–fÓ¬m!®ÙÇ3È_¦r1äûèýkYÌÏ
-ÓÎÐfœ±–³ ]P  8Á¤N ä <ÖdÀÖ¸@¤Á!ˆÂh¢D)›ï¤8Â×ÙA ìÆù¯³Y€öP‹I4RÀ‰¦_Jï‡ÂU oø!=éYìÄe:tÖzñ¢Å:nXVuœe4›Ä ÞÂË:&þ SÀ õ. ‘.Š:ƳÕOÉt[s6åÄÄ?‰D÷¡ ¯j+)Ô JŽ˜¦0òèóy>¦Øf¢¨Ã{Ld[a‰üm0jš.$;aÓKÉ¥2¥˜4‰2ê<¢¾¾Dnô£ïS)\ž˜qPWÎÅÁNÊIš—£'¡&5žîæt»é£:ÁÔP{j ç´ýÂÉí F ±ñN¦ôȘr³Ù!ÉÚ¦³UêLl6€|DrÛÜÞftç *SsâéÄá²úËâñôBj  ìJ;‡õLž…\î©u’kÏtµƒF¸º[S
-‹ûŽù%úŠáaGw•?ìÙõ«Î„¼ Þ»¤ÔóKe§’DwZ&j5%žÚ/éÀw¢=Yë˜[/€ÌŸü«¹ýÂÔãµISøLWõk6NèWÚ}õTŽ?Jõ#ß="#Nšé X¨‰+‡øÎÑ-…sgntOÊ8¡‹qA„|òsÜPWÐÐúœQò~šk° n¢÷ùéR€ ü69ÒŸOM…<Õ4}°FŒ ¬`ñÀ4-FÒ|§±]s¥ä±ÙâUøN¯ÞB ŠKÒpÍ·ê
-Zкtù´wÚ®ºúD èHS®Ç¾µ%n &Äy`œÊn|öÙ|õBjs¸™Í•VÝ(Âmx@ȹúl’µ”pð’Ùoç6ªŽ½g¢nãò}Ó§Ê Ue3§Zê– «ì×’gàw(ŽKŒ¢ ÄÁ=ǧrÂ’JaIãuS8,ÄåÏ:lMê±ÌjOMa5sQçZâÕ”cQrÖÔÅ‹bM<2ÝIS*júVø©6õ;OÈá!Iž':P\ƒÛ-ßì¸ Eí=çfOë¼öÅ[VSK
-e>|ü–5y[Ö±úù.ï†è}c®°bxˆåÕL” ÃTÜÒÝÙÚ.j(:úûñÀ°¬q†oE9¹›7&^Gv( jQ5D—Nü üß½AdH%e ÓRÄû¾B8Ÿ‡)üÜ
-¼‡\À¾»†Þ…ùïZç’rJ¯¾`Ùè&›`Äm(B‘1/þEß' ¾Ae1ä­Ÿ/–:@›vˆ—át05B4Ê:žCúý“ošAÈmiBN­ > ¯m~Í?@ÈÌ: з¢SÕfðgÙ$¿Šw*ÏU¾Cl+’X—¼æ0ÏëôS)ªÊôŽWžåDÍ&¾Ë˜;þ÷Ü1Êx³¥·¢rÁ@²m8&.–Œ7q4)æºÝd¤¾‰^ƒ›©3x ÷ÃÄPô^hõ
-ǧïh——*$.þr<×yó ¼·èkp‡x2 B*ÁÜÕĶ‚“Õ×ÁüïՃТU½äçVo"@£7*Š©Ëi >x¯Su]‡ùUŹ:u<ß*=ú_çU¦ÛÒ)‘ås"Ÿ³ ßã ðUn›´¦Ø…lb¬¤[òüK$ܦúrWƒR,ìR´ðVãÆiyq"O÷­^EB dýæXÎJ Èã=KÌHÂ$,dþÕJpËŽ¿ %ðQUÑÃwŠ Q™ŤyÅ·7£H± Γi°­¨6 *öè ”¼4ªØÝú¿§0Lu—A:Ž¯´š©Ï"ÎfLÛá¿NÕG-ù.çÇ0
-JJ+n󓊆(bb§½?œÙ\ªÞAX•uHI±>·úöâ×2!iH½a±Æ*Oâîµ*çÒcu¹ (b¦ ÐØ:£=ëVØð%Ó-„Z?á43¦X+Íøµ·›=,ú¯5}
-âàIÚ «qò~ÞîSÐK þ|R§]Î8-2ÜpÃÈ7Õ<`.gZ½SÍ™Ãî“O@§:½ïöæðr‹'™‰.ÑퟂN¥ü·­J~ýGHαÒ2¥=§ü „Ê$IÿÜ€0‘ˆ|‰k4ðm„1FiCØF…¸úha„:*P6
-EÌ¡º+~ ê
-ˆ7‘•ªŸ†sA
-|jµ”ña{ÞÔÍ2,^ëÌCˆMT«eéWº[çuxÁ5"£3…j†ªâ9HJÙôó"‚³ªÒØV¨)õäšÍArórŽ9¸PÏÈød¿wÕq0qÞ˜ìkù°+&±u±×ŒÜ€ó Oä$ɘ Áë6…žºna/=ò¶Ì
-Ýý—gÙ¦w¹3뉎åAÉ)Øtµ§k-¾Xoᘃ Üv¢ô£¡?*¯Æí1ÒGi„ï«ö& Ü@8Ö:.Í»“jÇ#1hgÒ½i44[R áœS ²½Ý
-‘ÑÅÖçr³‡]î=Ü•Oaë×Û"N¢b[w' 4ïÀ¨å£Ì¿wúÏãVô5Ý¥–Ì$ˆ¯_‰˜,ÈOAbþ̤aɨQúús‚t¨1óÙ7i 2•`BÓzåÛ^AÔ ÁysѸDçjƒ~ÿ0½íj-»*â‹`I˜Ôס#ÉmÌ‘™ì(ÓÊÚpðä»Ùüý‰#ý…yVH=µI·§Ïºäˆ¶‡0Í·–­Fü›íœ=óC±wQa,ÁX*0ÊámÄÄWl}òU°Ã£ ÷¡XÉt'ð‡åïVOÖÖö:’u‰.e€Á#eò8qCðAyñLˆm…0#D±q·LÄÖdõxŸçK¥ÇÄ r…±ã Ô3e‰iÃÆÛN‰0㋪›ƒ&,Ø1”œq¯+Ó>è{±Ó 󵥩7„%ÑñÊ:c‹9¼*–CéèRÛ
-éyI2SPj eÐÜÛ7$”™[Ï©îÞ„—@åS¶­+Œ…†À ̦*šät|+‹ÆÁÑ»ÿè ËŠå÷:™¼¥lÂï,b!L¤*=Ú "ÄqSÁ’(ãçèÒÊ€”¥B59 Å´ê#‹i0¥› ¬D³B «B@ð LíÔ+Û{͈ÀÓ¸i¤@kÝt¹F0! ÙŸK£]³Êë¤ód)ÜMZ4Ñ?Ö<Œ'œC·Ö˜ ÂA¨NÑ™j \¦„0ë[å ÍN%B›P ³­æö:0ŠŒÊëZüêÏ@ð9ºÀÍì0)‹çÿ/“$9wŸ@wÐ Ài-/}¯Ú÷ßúKø­êbÅ“­ˆ.¡8€‰Ä‚ýÙ DЮTàYW¢`ŽW÷e„5lh)!CôÑL}>%E>ÙÂ<`$3d ’Ñ5ÇE&´Ñt™ƒKÑWMè‹«&ï1áa©P®qGàG‚îÊVDîX/Œi¸äw…¤¨LÁ”皗 Êà;4ꇰS'«PB`%vô‡âRß߉³$3UýâV‡ áï|™94àÂOl[Ï 7˜ÜKè1?ø醈£ƒalÆzÆ<q,#5îæ¿&jÞx\;v¦pF!Ü !Ä™•ƒJ—(»Õgʹ`LõÿQòD€ÐñÅ05™Ý畺Þ%s³ÂÆÈ{ó‚H1  S7Â|áÉ4Ìê¸2ÏmšàW²_›Å¢â;û ›™[Á
-Í `ë,¢ÕË$¸âå¬@þŒÂšE_„§z«bÉ5Ë ¬¼|S÷æÇL$…^yMçu¾é<% M¤)åê¾Å&ßJQ•!ÈÙb+ȳu™9ÛL‚y±#Lé$JØ+á(h—¼y ÷îýƒQÚvêç¿~1XZ°Ÿ3˜¯G?ÄüuMåÖµ=URBÁësÊb®ÔÈiW‹@ïÜx§È cT~‚áKÑ.©t€qª»Æ&å.$°wðm^Â|$)B±¯§"¼ÙCýó"8›ŒE:[ã¬#Ú’VüEb…B¾n§‚„øáúì7ç¿æ5{U‚43#ô©¹à3#Ú–7ÚçÕ2gK/á ˜)‚£ÍKHI&©n2!–ñÐþ~¥¡N@oÃ_O¼Á ážiÈYgjŠPÜn¾|‚Äñ^LÔ‡(µ²ÓïfèVÔ†šÜB§ÉP+ôò"Š¤Ä=$|qï¡Îqq* PØgLŸþ5\ëâZÝoegí IÄ;¡]¼7Zê;*yí$‡ÄDØaQËíRâ[U½u6?®cÜ’içLÝK„¾ Osô½]Fÿ
-rÖ(@Û-JÚn9Óç ¬Kƒ‰”â—b+4)¦)
-5={ÙÀá^zGlp‡’è<rÌQºBƒK(“+¾[ñ³™(‡pææ¼$êˆã®—ßÊ:#A«r_ŸÖ©zªFt¨ŸSËC•Ï—¢{)!϶b§©\ƒÑšÞ¾"?’žñ
-IBHèIÎa)î)]D ÔÍÆøšù<Ô«½PS@ –æ[eQÉ$)/‘Ç3ÑÏÕ®V‘NÂ(ëAŸí0ÌAº¡™î9†óÅ çÄ!ÝÆ^Â#P ñöiAx=œ!éã·sÛŽTSìt™—¯›|è8U~óP‡{× +Q(Ški_ÚSRq…):1ýl!
-K­2¾Ñcp†3Ÿ(ÿòÀ µU"¡bÕYwŒœ#73Z›<Ä’Vtï¢`[)ÂN!¬Dþ£•¤Pu˜t &xïž#]ΤÀ·|3ä*¡Ée5ÎcãAÎ+,ÞÒš°ÎïâœyRÖ[vÔàÉ[¯)sü!ƒ¾Säû:Ð/7Þñ'~dÞ
-ÿØ‚¸
-nƒØ÷$4náC–&ÄAjpÄŽ¥­g¤T€VÝ°~+ùÆû® ¯Eò¥ê#µ”õ¾>qh• bn›É{0U8Y„®,AÐF±ÇssùXت­Haôjîðû:pŸHNïÆ~+M?jÏŸECнE@ß {|[GÎØbŒ5àV@½Æ•T¸œã§  ƒ—rTUhÕÿ§Ž‚eiœyœePÚ±–ûús+ÆGÄyJ@–Üg[ùRâ[•&JãRïëàF°1pøsbˆ|Hv¢„)²Þ¹l¬ò‡!ýýãV#ÍÈi‚•¿¼ˆª$×Úí÷&j'ìd¤O¹2é¢Wà,a¡!‡çUêŠê…™ç>Rf‰{ƒXžO”EXÄ
-mu_n4n€ÃwÞð¯<2jñYÑsL^×K˜lN1eµŸ·Xщ#¨‘bp\b!€â[q¹$I+GÉ` è'ë
-r~qb¬=oÏK´†@Â}ê‘©KZZ‡ó+én(Bt!P9±å­Ñ¨Y^—¢p½lN¡ä8˜w0¹ÜK\tù<qœ‰¶ðr3y”¡üxg@fBÔ1÷ónDum®ØäaËr¿?̦Ð2ÀüHxMòúób2¯–ôó ˆ_1ï@%Z ÙvW;&¬ÀÝ"±Ë@Íì²i‹ñ}äþ0«
->
-ì1¶3#q´*<ö'JŒ©BÚc#`ohrz¢+àÁG?%ò[R[^Ň—§W_m¶T’•DÈzÆ%çÞÕ¹© ž5©Š¢bD[„BÔGû*ŸÐDd¦z)*Zç)Á~ pòÐ!È*¾EübÀa;9ï¡Ø(·äëpCF1Á’>,ž¦üTNj½”0)Ø
-´‡ZÆ`·ÌÚE»Ôþ]Ý@&¾šŸx*¶Ã>ÅàC , öyǯ(€¢Ÿ¢h‹ÙíÍ’êµÈM`5¥M±ev;íøR$±xR~øNeçN¯m=@–ke†ÌúãIê•&Ž RÎg¨³ð¬V'÷ ÿ(Ú8’Éaùíh,)¡±$ëuÔ7ÐÜ ÿ¤”;ä‹AyzÕÐo™Lë‡$Ìà¾V‡ûRlÙ†Çæ´dv¾ƒ´hpÙ»Úc€°ˆ
-¢Ø,æñ§ ÷ã>r§¸z'àm»Œ#ÉOW]n…îCzüîÉêú)èzõ?Ý)®Žñdá°±ÜÏ–Y+uˆ£üêï ËÚâ v8‚œ9 þ¤·ÌA _2áTÈ]L·”ó§®MÁ%qM[ã~ØOA_
-ðù“*y1gÅ ÉíÁó"ªå,T•3¸¸ï˜ß˜/>û·ÆJ1žc¦t3ã2Üž#?¼–Ø2šá¢Zuò·0 T!òcÐí8†®°O<gÔÇ;]@ß*p9í&¼nÛLbéçHƒc]ë"±;„‘hz~“°_!Ø|Ó‚iÏ TR&R"1=ÈÂð3$fNwC
-k ¥×KiŠµ ¥R­ á‘Cò»Ýž ¶´bÿ;I“Y>³éƒ! "¨ ‚ ·ÂePªæcЦtB(YNç+˜"ÞˆíÊù¥ZЪîä H’µ£™hC,a‰Zk,AØ3î"m(Â’½:·ù‰£xT5ÛÓwðʈ³„R<™®“m:„?甫_îû·O âi#
-"\ñò•Ud ÿòÏ4†ÃDhŠ“È!;dÛ!]¢;OýéžÉµPî_ÿºa°NxÈĈbçÌg”³H,2£ü
-)+,•×Q¬v’deÒ+{ËÖ3sHõ¶U·ïdƵC@†‡W±¥Šôx^üôßÎÜÔ©$¸ 9›¨ãpylÈÜ3Š±’/¡<6 p›êË"„ƒHU„‡½ªx z[1¹ãõU$Ê“¬ER˜ÎJ•w’§uRÌ ;IµøTåjBæƒèg%ÃQ¦Y·s”Ê…a£° ‹×šÜŒ‡×Lþ”íŒê0ã»weŒA|Y5Hrm7.G÷:©ã~%{m¾ï/Þ mˆÛ‚já]$×ÙãÙ_ý¯ã¤"’Q‹G‘@(ÞòöñnÂ΃ÓVÍ‹ö ‚HòD ê¯£þŸÁØ6ä׿…ÄíA¦Ä#Ø<ô0… )ÖDý°ˆÚ&ËwC ä¢nXˆ5–
-ƒ` åmÄ óAÍí ‹V¡(“•à¬3ÅÔB±‘?
-6QRã³:+g 1ùÐp¯„N,-]3¬+ÖøÐàðÄ8Rê8Ök_4¢H_¯#î`v !‹3Z0‚­ÚOŠ%¢)°T—`³¥ »?îa4æ\<•ÏQ\̦º°âQp††É`ײ§(Jy‹ïžÜ7“¿5†'×NEç¾>Ç=}¥S(&…û1’¿á‡Íp\
-ýƒÉ¢O½Öà$ªüò{Š±PSTZr=,ߊ£øF¤²eã¸DL>à é7x× ˜âÑ ö£‚¯nfÊÄo ðæÖ ¢È„6ÇÑ»ÌDÀ½8Ò ìB†Údz
-6Ë'vp,Vù!?}"]‰±ùí‹* |R2Ÿ ô{6þüPN›P€“夣h
-£ŸmA På 'Ð&R‹Sl¡S¢?ô›Ý YÇQhc°ŽÅEˆ2-Q‚bc¢ÜË&•>Í–fòä\,
-¤…Çïò½éò@ØF ¯ýlUSM|Š¿9©?:2™7É܇”¤Ë>„«àílu©ôÙÓÕ ³-ñ·ß<¶Øg=þ„¾I_à­vvÖKÁÈÏúÐR@xÕ5©5l™R‘ü7eêþ$†‡ìQ–ò&X‰µÈÅ!¥1¨øüF´I†3ù×:ÎQ¸¹Q¥‚%Šy7)ˆPß1v–1‘Ìh­±F?1Í!2+(ȸ0/°B˜¡ŠaL®‡€°³I)újÖä°6‚WïÄ1ìnë–©$ÓÚ­çû åuZW­Þ¿ÒY|B(ïn9&p +ïNÜÏ!°š&¶Çvs&ù½ú:ˆi ³Aä¶.ÏÞ¬ÒÀyÝæ½xý#ñ‘Œ‚”V.-ØG5˜‰P0Ñ”¯b¡øóN÷~mˆ¢,c…¥:#Á} +<´[@À³Ö\8‡d“Bqëô:J­fDðô‡u¾6¹l ²3ç£pˆ _uûL
-ãá+,$f  ÅžëUÌûDð/²Y­Ì]V_÷˜öí§s'#¾—×>LŽ®Ëº×§6bQ¶ßÛ ï5®F…[‹£0Ä k“üþ—ñrÉ®$·è
-zµ‚>$ø9¶‡^‡GåýO}ƒ²-)ßqºK‚˜ü
-1—Äzy‡U \3”ÐñÍ}^JØ'O²DóýùÒ÷"Ü©è
-óS¢gæ×ÅÉÑ£rˆ†1yËw`kÜ*è>ǯvhÝOZÂ4` 4 ”Ë0‰`€³ŸtC¶Q½ó¾5Jx)z
-¥GNXOɨSÆpBåUu ­Á†ñ)N‡ö,}ÝR$Ï·ÜÝ‚\Ú¥X°¡c¥ ù¡þ0ëÜÃPýVƒŠÇƒÄqn(–¿@ ±ÏüÒ99{Ì»áÏ(
-ÜB;ÿ‡LÄ €ÍeE¨á¯‚½/߰Ƙė+,ÁIÏ:â]qŠÆýÜuDL8 +D@š¹>”0C>ŠZÂÿï?ê¯êƒög¡Eu?¨pˆ‰WšýúŠªœH1uïKÑ)YòSÉS 1àšá'Ž»¢¤˜’$íòI)+sCŠ-êG“k:œï» ÃÀÉ9#lD ÂgÔlÜ’¡Œ Á/_êŠ,穳z†Eá5e8ãX
-Í€«UQHìÆä—|§Áä­ÒáŒõ-©u`?»)ñÞO„LǸhÕ+b蘊é—ë²åžJJ[Ú-!¼ m[^vKº€¸‰‘<ó{SZ|ªWV¥aÚa`Šèz`G餶»ŽnÇ~-„Yx1d»~Uç{‰lA, Ú`~òS?Š0sÉòîq;Ü zM”›1~( ·[Û³^`K@ZMfÿÁLEÊ ;€¾Þ1™ë~èc5³ˆtÖñc,%žŠÓeÇÜ`²ˆ¾•žMŠ²‚T$¤”ôØ»þI¸Íeý€2=š‹0¡h «
-µEy±}Þ&V)ÿ'Oa¢jëʧL¾d>eÐ9'ªP£ÅÔ²Úß“'C…[×bWàÞ,rÀÞàK™Ø§uDÖ Õ,=˜]UE¿}‡Pâ81û ½8ÄI¦Ú^|  â…ýÜù-øcã§ÑÛŸsÊ×ÇTBÛ§‡Oh­‘M2ð ÅòåÉfÆÂohuZö]'²`lO(3ÒòèpäëÞ/%«®[ÚÔ“{-IѼàè&9Ã?à$%Kæ9i¾•pÆßÐ^‹¤ù¡„‹!ºpXÊ®é½!ÒtpWèúõ¯°`1(*•úYôû­H3Îlk
-ÐÉzáüxŸwOàWz$”„1Üôuÿ‹¶Xd³zÈJBôCãÉ–1 P>ƒçæ!~ÃE<é^ÁA¤‚¢ñÝ›[†nxÞù©Ó¢ú…PHº‘ Nòg¤œç[Z‹O-Xx£Ä-\*ZáHu”¬¢”·1ù©Å肉èKìgÓ¤,<aÂp¡ÍØ¡á€PìFdŽ×H3&ÔÀ:Mxý³"=˜×‡@pœO«t/a¿qÁ ZáÈüg®˜]Ý*ÜŸScÈÖiXœ.Fþ0³¸½…ÈÚçŽOqyX™2Yl†vÖØA£ßEà»e#÷ªZyÅÜ/ÝÀ¬ÁÌ·A=N
-1ï1ãŠ3·ÔLñ– Ž¥á(+>Fƒ›¢
-na·¤O™ 5ÒX<-Éæs9ÀMS¦»æµè"ˆÅn•öBsœ?T`œ5\|è:•¯¬¦nu:¸#þaô&gCªƒžŸbx™ð¸'Shf8†…‹Ã¬KûÅJW² BÚ9î%È!‰€ãxì¦OægÕM3øCŠ__]CD´A’À¥xPÞ‰=.±ÿ;Lý?(;ñ
-Y`ôÎÖÂ]i¶8”ͺMº${KèôA³Ðs) D µˆ’ÃÀem€W<·C+p†-ãÙH¦¨œøG[®,BéN:[gl&öµ e$ÂÙ«ú»¸£„èÊ´;¡âKÉù”2ÛšNñi¬*]œï§ÂâPŠ¢¹J8Yz]6Ûfy>…ô(‘¦´«¯!cŠ"ѦGVÐ2xoÁ“*ÁÙ'+ .½p4Šb 6Ãa&센¡î˜à#ç1HÇ×Z|ʇ„
-0éÒÖÈž’‰…¸RÃ
-eè+‚ÂEÑþQ"7ÃÔ—xU<õ?ÞŠ˜›Ž•Æ¶cžsr®‚ç
-H‰”—Mrd7„OÐwЬ ’
-5G›CDln(GϘæsÕ9+Z˜ùuem½·Á Ý¢ ÞòEsZ!–Eok„ù#P¸¬%ÝšnÌþroÓM÷)‹D\‘¬.<BšÙ˜Ýà ’w“1‚.Ȝˆj‘ºÈ‡/ñaCe’¿:gÈ0—Þë2<qš4oä¸SR¹œ7Ùà¶xšžb®eY„©ãSµ4ÒBÞ׊^¡T2Ç}ž»Ø\ùì!'3SÈÿèÆ «”zM9þ”ºz´;uÖ㜢ÚEÚЕ·» ±D…âäªõX”Œæ# ¡Ñf³Ùúã×–á3ðd—‚Ûi½ÖäôUÇ·®ëZ•l“o)[ë±:C;%Š“ºOsP‘?‘X½«ÉyAv!ÿ:åª4­8¥¾Ï(Ñ¥S„ðÖf_‹!°HÅ¡£ŒOŒߟïäRÉPׂpQkÑÀȆô)jü?úð½t¥‰g=)ÞÅè)J²Ú¹w™\Pǘû54);ç«5¡}µ µ'#¿¯²w¢1ƒÞ¢Çõí×ÿšùö™Ýæ¼íµ?ÿÜõÎ÷Üë1.¿a~}ùt¥Å
-º†¾ö»ª_ R”c?²;æ~ÿEmôŸèy–ƒøMâÛ ›p«Óš¦Z±þè%7Ñþ#)]¹Díeܘ&
-rì¨Ûø`z`¹ávqX{ÏÆà*ÚêQ° *ÇLÁ»ñÛ{‡Ia á½@h}y‰‰ïcrJ¡Tó‚ §\f Ùø-:*€jÝ@*\JÃ#¡_Ÿ9!†È”žÛÒh\uÞ Þ9ó~sá
-ˆ˜¤ÖÌ“œH]´Ôê‹éÒÅÉšw:ÙYë¢1]6„ŸÀa«EEr&vv‚S•Ÿ?n ý@!ã …ù”¶‘]@Þ®bZ‘00³e_o·ò?·Øð"ú%Uö²‰pMƒ@ŸŽu^Â9²Í„œ@™)r¾úɹl2¤¡ßé_*£Z†TOzV˜Ä‚@ë‘’¦:OœÅ‹‘s2Uq(FŠ ²í)G‰
-ÐÀz Æè%Ì°!Df ‚’ÜA*”®tG´¾­aÛ<Å;æiO\œó£þŹ8Çt(cChzCmR'n gæ>ÔË99»'ÍIBî_„Q„ÔìÔÀI/ߣv'µd ”3N½ù ª Í‹‘èüîaIAàµÌ/C\¯œndž,x&¦N¨Ï‘ ¨eÂcᇑòM¢XÃYÝLJ°'y“‚ô¤•lF2²™);‘ZžBßc Ôq5†ÉbÎö1i–ÐXƵ.Cƒ§éÆQ_¾6U˜8fîXãMƒ2U™Ù‘<Ç"1ÍÂnG7!´}z”yùðdYƒüðY¼r¼Ýˆù3WŸPiTˆ=zñ  sakÕ9èˆÁ&ºòâ´$d,›«ï 9…©$Öç#Ôÿ3eA&S£i;|¼µ\qN8Loõç-h½üÙ¯ÖŒ¹åuÑ-Ѹæ·AOá>¾s§ºúóYÏzt]ÝHMŒÖÅðЯ[ÐÓ] ñžáJãü˜ Ý…{~ß·@wŽf$]\[÷yµ}/ey}|'ßWYÞþ“PaIêÜ!Ý–-rK6ÇII•æt­œøxŠ}Q’PxL4Îëb$Vºˆ½Ãø7mí‹}Âq¹ûíQ
-¡qFl=Œj·}åÎ …¦ÉcëDm`]²®›Š;vqBadkÌH…"<–Ì’¯ÎA\X•0më¼
-o¦¹ïPù ÁÃŒiÙÙ@r5L+Co>Ba9øÔ÷rû†[H³"Mê>…~UT+”|8àâr³HbˆÎG×u\2ŠÚžP/y7%¯jÎÜ,;Ñö}NOeCܪGñ†˜)ìç$+~¹)Ù,{Gü³»í„ÂÐ-VV,ŒV'CüÊNÈÔ«šó™’‹ËT
-”> :šíì8/§ð€0‡é‰#Ð’‰[­««^$7´ryo
-À€œìålòlR¡‡¿íò6ÂèÇ¡Ož:FÛ3d]ýŽ)Ò3%ø±!ã„úÌ8™â4îü½ÆÛ o=ëü ÿIÚWŠXòˆõà¿ßi4[Yæ~nüÂÅF›êÒ7_@>qúOè¿mú§¦øÎŽG‘í²…uiäg o>6ýç&@ 1¿íXš]Mç ­Ù¥ðÈéå™{$eµ^à³¥Ñ]Åÿx>ÚcåÆ´­¤¼SA-ò]æ7·]Hšõ½Éåâ¸k™r½*µ´.³”:äR¸ješYèT`R4ê˜t›I \¼Ž¡o6U0—Â[h6/~CÍÛÚeC4gš€Câ„Rdƒö Umƒ¤»Ža)‘õ(ªd¹ox„Íßß„ëô a%ÁhЩZÖ‡ìGyÓ±·ÒL²§Ûd'“ZаÔb£õ·=€2x7åå×ÓI
-€ÎÃÊtŒKoø¹Ï^C0§äAÓcò+7iÁ¡QVÝù`HCO¬Ê£…bÀ‚³—f¸tÐJ f}ñ
-(« –Œ$]ç äOvE®qñå9P¯æˆöÇm5#?räž™ÍÕ"65=]÷ðª Í ßÕ¡’î‹&Y»ûÈÄd^iIšð¤†;èêéÊÃpZÜ£Õ“zÃwÐ töƒuàÛ•ÆP*UÍ Oêt(%啽Åk©bo£‡á>TðD:}+!.G¤Ã&¦éifõCf-g†@ÅoØ¢”zbmCÐ R†÷ðÛ Fb.]k÷
-âŒNFyœqÎóRzyÝJï@T
-©¡ç¹2iA8Éte§¡ù5›Ð-—&„¿q8ó÷£>c`±ô8’Òïyrä_@~ÆŸ·z}Ü™è¼3Åؼêy¹¥ÜK£V$4Ñ0±-ê³ÍR1î »t¹ÆŽÐ‘¬åZém¥ý¤¥fñF-%†>¬ÛðM®L\y–ùE×_Ë ¤B=éÇë9äúç3›PgaâÿV‚¼dòëUº;ÎGÍÚ@æ`)ãdvQ˜8Y»´¿1‰§µ˜õ‘îCâ^þb¼Ü‘¤Jb(º‚ÞCÙctäÿcN€‰;+  ÌÙÿœ›)½¦ªóE@@ªüIº÷HÎFoSV8þ‡1ÐCgsòû, À0Õ”‹­ƒ_ä‰rU¹_5¸“% /(ÎH¾Ü.é»N©!ª2”b#Øä$ߘwÁK°Ev» ù„µ‡F,IBK‡ÃÄ©G¦‹4!.%âç4YÒûÛVˆ!UŒ55ᆈŸe3VYBJôÑ‹]ê`­$4ìpDÈB
-ê>ö褠 û‚ñ2 Ð`q5!Ü^Â]Ò®ÖùÎ$¥1­éYvÓÛÙ¶rB3*¯Ì~Ñ·£˜Ð¸ÂµNPE‰(’ÝŠ=ñ’7ÀLJ(>#nߤÃD2˜ÏXU2 Ã!
-: :³f;j7ôaA±0€Íö€ðédü+¢¡,¥Ù›§ )ülxË‘ ¢<
-=I
-7øØê5ˆy‘BBª­B;Kcñ
-±uøa‡ |J¤1\‡llB=[£Ü—£`»é ÒJfè5[%c²«ìJ7¯)°V׿Ý+—çÙ‚R/WãÆ0PlË@ µdq
-BÛt]<àðÞ!­Ü;¥Ü1taöÚ
-pd: »§3n DüXØ“Ü*-ÖyHš;¯n!RåêôþÉ‹÷óñXŒ¸$Õ‚T¥CLît„ßô®¦l¶Ù14S]ŠÝy™n·RWšÇlR˜”«loCO€_”ALW:y ´½öìTTtGnE7N3Š´š óuIQaÑÁæ<ù£Þ/ðX@ /öá%¢Õ––í  Æ…„ådÊUTöÒÄÜK¦ÚAù±·é*™ÑI°Û–\€E5­Fât]eJE™Àš v7Ϥ÷©õ^ˆñËQá'}—:”AïO•Ùà)å´CD÷
-“FÄD[h&±u²8‹YÔ#°.AªºÐŒh IþáO,åÕ©‹ =t³ ‰vÂ5”JN¢a9`Á<+‰©íH;„0œ¡e̽¥\’óÔñ"ŒOM\b¼Ã+N‡1ØVi}%q>ÇÅ¢ù• ÉBhwz åÂÅÅCCs®e— äàv\”ÖÒX€Áؾ?µ3£ššßB‚
-R`¼C:Ð
-8S( °8i?3rG5>òŒS]¨¨Œ œÇ†j<ˆr6©%Õ*¾
-ó%Ÿ„ GR$$h‚‚QEÈgi@¢[ÀaàeÐý£ —펃îáØE¦ÃE¡éóÍs!o|‚ª‰wXÈ_(ZžÓ@kv¼ã´Õä¹âf‘Æäf)Ê»à.’Oú×*gT¨ó’ü
-ºeî;N¨9éÅŒ Ú—NµJiÓœŸM¼¬/;W:t ¡ÂÁáÊèK¿ˆŸ›@ÑsxÏ ©1¶Þ†q¸”° H½wŸô¾ì;AÌ&˜º©!ƒwö+žK>Gz„…|€Â€††Ö}o½]—5»7ûò- ÝÏeÓ… ,éõ†k¥lM˜Aó¡îvè„ä§m({ Z!䉶ã0nC “÷\!Öž‹MÈšq»̈ß1“z ES0ªhƺ”€º ]¢Í¡«Ñ‡WiÑiÚÍq牽àgÙ9‰yðá Ôœ—ús:±°­J°Ô«cH¦<Yt"˜Ý(ÖéºÕš“µbØ)ä€2¸0¸Ç3òj”ég¯bº‡Âo£F÷Uê`±’¬Œ©ð¤0?äQï(Û°[ŠI•Àv¹ÚšÎ‚×iÚð­XSŒ8%Q
-ô
-9éLà S¢?Þþúç-<þþ÷í¯ÿÞâã뛦Üw¹JQŠ²’ÓêUVÁšxó_;†5ǤeÆr”× R’j(ò
-~ýtA™UhN‚áäÅ/ÁŽÕÚ²A\Y¯¤²ûFƒŸ€Ñ•Ó†ðUºBÛ¦ A’ÒM‹§<¼ŠÚÉzÚåAàR×*¡Ùµ2“äaùËþFÄ#Ö†öÔ¬¿ö\ƒ^ÓÁÇñ’—#䦤:ô±žñ(
-Ìì¡e1î
-²¦½&°\€° A{²-aE†X!+ZSšEjHÅ.ûù2Š¥d­å˹~Re¨Ì`i?\F>6D¦Ì²!„êF»ädÃ… ü¸’Ŧ$äÇ>gH x¦Ýùè>‹\Y­§„í@"+!†ÉîÃ|±tvÙµõƒÝ= 6qb\fš˜$Y©fÉÁ.L£i&5he"*D¿óßgÆD\œlo´ÎgÆ'!!Ƶ-Ä ®•Œßd€Â/à¢<ýÜ·K§ÉX„Ù¶’4'x»ô}‡M hjªÒ΂È,i%+#cÆ›Q¤Ö B{‰Õ¡‘£„j6eײÛyÇÔ¹HJ½Ê溣ï`”t
-ú@El*n åƒa¦#ï>ĵi¶ë†”¤M“ÝÓ†àX*Z8í+ Z3;0$¾ä›N´“0˜6H£¶v™6Œz<Z+—1ÎL\™ý ÖN˜MŽÑÍØX^)(.îaöà Q™ÙîÒ0™·èºe0Ê Á`äTàLÂ1cç Ö$LaìEr…*£Å¦•#Ä¡û„óF6€B…ÎQ—ù£ÂìRR~­¾¦BŠ¿BQ´ûÔšæµ:òŽþ×HhjÝäM™¦K.Ã0Í%G“ö‹BÅ“þ]I%ºÀdEÝpšH`࣪½WáoÈ'vÌûpr*´ê2{%cÙgñ)¬ÍƒÌÍ
-OBdѫs#ZbOQTs
-l¤ªŽ3T‹ºQÎÊÚABèG›3’1[ßÆ!·Œ•÷ORƦ2ŒpH2HkÌ+­ŒÄŽ’S![Ú¼'}††Ê%=þ˜ÛŸNáô&r ð6ÑWÈeV¿6ãÃ$©Í‰Êèo›røѪ=Šì0$Ë;0Þí†êMEPºT„=»h!Á6ùéÓg’¦F÷ìÆ|e'™´²!èâÅo6û
-‰îeb@³ô¨p”…
-m顪²Ã´=y–»Pw›rmWÍÞð
-„1X~ätþu$ ކݥ°V颸 àÁëæ{· Ö.LELØzÕÜ­ôŠ4mM¼Et¯ñ·¨¯c¿ I/ñWMs*•ÑhDãsL_6ÉU7¤†a¢3ùlü”¡¬1Z*¤´1Æ’O~¬eíe¨Ýj+Ë&q²wmx§Äœ?Gf¤„ý†0M<+»UQ1›z²¥–Mdôgç¿\LýTæ ²Ð©a<†ädA ,™·cwQ©½ö•ãõr‘€éœ!™:5¬ /Ô¢p^Î+W™Yym•œ M
-Ïy¢iˆ$Ù5å›X:Þ®±À?"/x¹òõ3Ì–:÷©¯xÍ`Áj-$ÝftV~i0ræ
-Í¥©»ö`Éï-Çuò9gÉ@W7<Pa4¢hh»BŠ»hê'e%DŽopÑ´U\âzéŽü;–Ì,
-ë%ðƒ£¦˜ÏQU+ÊdOÊBa4@íÏè.ÄIŽ¶
-ÕùðFý{DÿáÒÁë¸r!qWŒ<:÷(|*t±‘BˆõÓ=îúz‡¢ÆäºB%9’øçFù{ƒ¤w7]ô˜5‰ÆGƒŒ"ÑÀQ)¨ Zš³J\ìGZL|HYf“Pª™†²ƒye•Ý‘”"åÚßÑÞµ&z˜SæAOÊÔŸdö9#,·<›µ©d-ì` hjè:WÌ—aè8ÏέHã¥}„”}ÃÊѵå2Ÿ^^ñ!åÌy2/kOb_a¼^>H1ªj8&W„Qɼ¿£èÉS ø‰öÞOÇri2
-ÔÎõá;é©0£•±UƒÛ°óJžÂX«)á
->kG±
-ÙIÔÑöΠt
-OkÚY0J–6ƒ¥¼@è
-âR^›oƒ<Æp@WSMQ¦·˜ß¹™júÇøËò¾ìç0T0ò‘æS¥Ó‰«Žˆ~dÔ1ºÓóËÿì¹Èmy:Ë‚Ã ©§SñËþÀ¨óÑT3‚ÇÕ”}SÍ$㇢Š|S €¯cRO®¦ú†ñ:Pov„MË£½ ú¾}__Ðe–?þ÷ƒñŸÈ,6€ÿƒq;AÑMÄí÷¡Jؽ†~u´ ø¸ŽÅrŒ. A‰p‰!H8“=ç=Éü2Š¥Õæï} DaùgX´™ŽîÁú„#[t— U:–¤…ÐîœÂZWÆi<”Š:c‡ ²PÕTä ÿAÍ1©ÖU¸©‰2 ûúÚ v…A~·h_@ ´²Pÿ,v¹ !~Q6Y¾ÄVÞ-Ç£'t¾ð'°hßõ锃åNpX°ï‘]Ç×0¡«±v¼m‹êAm´ºqq¨vÓ $­ÕåZï}ÛHó}µY
-2Ì8iŠòi:ýÅ~ádË<Wõ±Œ³~¤‹Ú0ÌØçȃÑ^Ì\yšÀ?O²¤+ì¡ŸŸØÈR ³f6ôÙ«ü4•³°4לlsVùèSM׈‰Ù…~F±,_ÈùGPa)jVaçùšz84iE³]…0õ"ºƒäl¿xž†c«é5⬃ã)4n¶ùQi÷ƒ„BŒþ9}ßDéòd"N±5ED!`¶˜»2γÌí¯¦2 :©Ïóp2R
-Û–ÕT\3É6ÐzÛü`4ps˜†Ü [ÒÂ×F7¨%M]퓃ˆ§EžŸlÿp'¡©7D¬J°Ô†dæV2*¯­@ :Ž2™ì!2ÝÑvK™–0N[ 4Eô^ŸmüE^ŒL‹ñÉéúõ
-c›™¤ŒþØDЃÀ†Hð\4Js@&vQ–Ôw­Žq˜w+ÓeϹ/ƒ’”váÞ\ü°†éÁÏQ¦ÂÀ"ƒÁgÛU8U67•·ý˜xçÁæ"ÛÓ®j¬*ÉŸ#¿‰V’éèU¯NöYˆ
-¯DMm:s…G¡¤IŽÖ l¼\Ô°N² I®žŽ{h®¼Pnz ­ÉFw ñ”’ó…4oß$~§6°ŸQ¾†9âU½„2!-xÚjª ÄÊ æˆ;±¯¹ƒþ««_ïˆï2§ufBd9‘D¤êãÖè¶f…g”vØ- ™kØgÊ[Aèf€LdelÚ1sYÄÈlÄ´8t²ZªªÁzp/þ9Èâ!¡Ï'g±„¬£†'Ô ¡<QH¬©SJ »N#ÿèž(½ì┃å!*8 kØ·iñ4rÖÂÃ|ÿ"šM‡fSßwceÕ#dƒ1¨÷eß%œP`GWÛ²Ð<Üž™—ŠÙÔ¡­7À(>CÔU8¤•o¾€ÌPU„€Äž›þ<„ÿ R01T1”‚ö•åKÀ[|Úž×(“ð}Xf,ð¢Õ ñ2Ôv °eI®ŠPbV6êÎâŸ1ÌA@ZŒwÁyÔ¼?]›€;<¸uC±_X\§@èSÍÁâ΄æpò,PmC
-^_;Iód]”ò(ÖdfΉcì VÏb„Üd•Ù•±!èHaS?Æie¨Šv%Kl7 f/Å xŠõõû«.sMi’Jÿa_\Å»¹G³¦œÀpJÖ­8d®,£7»±—óolUÔøçh^ä
-?µs°Mz[IÖM8…3¸Ê^UqZ¨G–êœn2Jä1ú$ZÜ9))ñÛ­ŠGã¢Ä
-49®
-“c6¤Ñòcn"Æb¼ÑÐ|r$#ƒkÔ´>Ob£?26¹b#}²‰uf?ÿ çd a¼§•>ß_ÈúpL\9/ê=Z¦cŒ¦¨k33Þ„O&àÎÇkâÙ}úAiãÉG–‰™«¤oƒ—Bu jÐeÁÞ]ÌÍÙB> áŠz1v­Aô¨R¶#Ö" ^G_XüÖ
-O n-½Ÿs ¤ )Â))Œ wÀxUPüAâÄ-vÕePÅcê!L—l”/ÓŽ¾®« *»2$Þ»3Éèi:7ýq³¶GCj„ùHßUÂH¶œ´]öŽŠývAw}ÓˆIËÂ1Iï`¾Å†_—½Â^\Ð,Š‹Û&z JªA%e;>6¢,GœôGmBf‡l´ÉðVY´~×,BÉ“B§Ñ8äªxÛ´š õu™´Ø ¨M;â¡V8@©;»ŠÕVz@âóÓ9B"Æl)’#Y%©F°W]:$)u±'3-æ¸c+®ÏÁv*ãµn¡±Ìž@S0Eµg!“Ãg:Õ+²<wª„9:ä–àû&ÛæŸÓ!;!±’ýð†õ«¸Á²!•êUåL»)ôýcoǹ ÊJ|·Å#ø¶;nâ’;§h¢Z»†$Q²¹üˆù6£?x oÚÛ'©Ø
-Ô‚ÿkÖÜÌæ•xåx?R×·Iâ׃©ã“ø¼Õ‘„o,ØNNÐ/„ÿÒ4 žP³Ñ ê×i.‹oÞNŽ,)†ì/ÂÔÃk¨œÙ?± 5é¬DH‘ÇäÓÙnêhåáUÔ†½ìæðØŒ^¬
-’Ùûˆ!T§8 ?4ëoMÿùJr@ÑL(™â—áÈóïÝ4ȪxÉȺF[y~yv䓧Äe– QàQðjÂŒ?…šåŒ¬Š÷ Ðè„T`*‘cúdg‹±ÃÅrå2ï0;ÛäB NE°ÝÝ<îøv‰¢S«õw7ŒL¼-'b&¼sQ’ï°—7Æ
-÷=Ò±´§_†ú.–,áh¢ÐƃÈ9­¿‹%£á4Ⱦt?91ÐŒvÕÄ·#Ý…t¹Ñ¶"¬aæ¢q¨žH§Í
-Æ«Ð`¼!Ù+,óØ‘]êÁÒ!tfH1t°ÆK°.6¦j °Û&—ØÄ8Rz1HÒ×¥º&ºø? qä’¤˜¯<3ªüˆW¢¸º=o˜rE/ÆNY¬­qÞ@õYÆú%Uu¬ú°7²ä‰LdObe¨+zÑPX!Ÿ¤“è@þ]ƒ!  ¡ÎA®í©·CR3WÕ=.È€ÁQÝJ]À(p©J «„È)Oaoù=ŒLÌ'FØ0ýð1ù3šŸCq@ß¿YµambÕ £X¬Šch218]
-]ÙÆ$³^ݸ~ŸV"S…:°º#{¥¾ZxIWCXÔéOG`剀dWl€ò³œú7¤c#)Çìö©H …‰±î¡ÜSXlYs@ßj2š8þlfS!'ãQš–åúØT#x›YïéÄ™
-Âv›ƒÒò„©Ð0H›j=ˆlºO¼ã•émÞ_bçùIéÐŒKÜEùÇüð–%_·Aiàú>¼¥ƒ€ ¨Qƒ•f[›¹­ïôm  óº¹@¥óÄÁÏûéYÆ [îû¤JBm‘-OÑ%%µ\Nd öß"ãu+ñ$ÞOÇ`Ô¨rk«Y³Án&óº»3”7ãl‡~¾Al5KFd1æñ¤)ÞÄ>ïFL5«c€lt虂ÔûU„ÆJ©øßtO)w PgÀÓX·d³ù#_{³@çݯ`Ý"¾æp.Q”UÀDIÙ›{;7PKlä^ñ^Ï«Â ©DÇôõ1fpÊSäib…ÂC8ž¾X‰§÷JÇ5Ýi„˜&ˆûE€bZÈöeÃبþx‘>±IÞ_¥ók)¬ì© >j¦còf`)1á=z&¿îŒNòšè3†ˆQÍãe÷œnŒÑPK 6%åµÝ?‡’‰`«<=’[!ÅÿKÑV´`"å=qe«íÈ13€ —¥M'dzƒFð@8ª¡å mUˆQ† ˆRÝbFŠyEñSZ'Á3V´s«e2Xµº\èõbò+²š³» õb"÷mÄ>…üWÈŠ®§sÂlä ¬AµÙ! 1™X[þò±Æ ÝJªL²Wá$‚Ô¾¾¶"_qÎ(sXq¸>®†5¬v º0aæÜ*ÌWV¡Qoسæ˜Ý­² _îBxç‚aùM[Ñ_Sˆ¯º&—Õúã~îúþÍ’š[ÚpFjÒüqrË‘‰iMQ<ñ©#‡ö‚±*®g"âc@z¼sÒf—Õš3_ómtv{ˤ—Ë}¸e!2Z‘`²áá«iÄÚÊøfY
-Mó…êše šURåöS-×2¼’éÚfYgØJή[V»öÕžžöÚé¹eŒ
-
-ŒˆR²¹;wú³>†K%/°tÙS8±LÈ¿v¦œ@éSµ¡73«¶GŠ$Þ{ˆ1]’:g«§ƒhgᇬ.6÷’Å™pñQoc5Ö8VFùˆixeÉ«ÖW.eÅU÷ˤlQ»ØNuTˆ ËÄ&93òý›Æ®þ—ù™¢"K{›_|7>µ/8©T{9R%¿ "ÔÔ»Fn,ª:Ž !·^²N0í⪲ p4ªš™ö_Á(;âˆÚ+àj"c÷ÆË7²c‰¢+àhË rŒÌ4…–Ù®V Èc›Ú¿Î}Yÿ³*D4œ¢rŠ¸Ž`5_†¿%|5¨D€äÆ
-™Õ‹ZiQ‘.S%Ÿ!†"&v²™úIq^iîÊ?¾Î
-ø:p(%kÕ¼dæ6±Ðt¯ÆVPuÏâ­¾ Uá®ë±f˜"˜É¶ƒcú§îª™‘bÝGÏë4¹T)–—p
-ßÁiß k­+ðCe’²OsÖcÂœ8ÌCIàÆ8žø±ô»e0p.‡t‚Åöñv2Ò«]g‰x-]zdHŒ56Ü–áÉ'4 ½wŸÀÓÙ Â’d¯ô‰Á„md±ƒE¦G 0 æö>xÇ ’¬•wóP$‚†`¸îg!ó UeÏ×¢Ï(…#±Öfê/ëàñÄOø¼Á®XÆs8õ&ùá39î`;¹öÜv˧Éï&ÙÞÐî¥Û›:ìì„âs ž5vrŒÍ•lŠ#ír³µCÉn9i”i‚€òÝ:(Û¶†8PxÎÍ;‘¹“!ǽ›fO”Gß`<™Éf\Q‡ž˜9ÚîÌdÔµÚ%´²§$ ™¿ †±/@¢nÇÆNä¯1 á˜ÄøaÀY¶lÒIryEf߶ì`8™ÅNÒ"@Œ]3ÄÆáp5Ið<)J¥¬‘c»"AÆ=žù—MùfiΣíO½u‡¯¤{y.Èr–(áQ
-gQœ‹Uz¢m ƒ¯G&˜dÐYv²…肳ØJCƒ
-Ð/ÑK–’’"ÓgÆÉüfHøõÉJ_Tœü™²qôäW ËȹëÐÛM£ŒØAx§G‰eÊ^ï܇OÍCîg¥¼™ÛÎ4EOÝ]0‡¦ÉC‰×ãá·Šê•YòJYŸ7EÌ ÏEa¡ã…¨¸¢A €qIB]Læ%E>wØ6ßÒM†Í
- ÊŒðRD1PH‡¢ŸÇ¢ú±.ÖYăæëT“%©•w–
-Xœ!‘ •“©‚æ#óhJ½‘Sl³¦ É93D ÓÛŒëÙÆè«8QÂQ²Ör’¯Ø)+aèíÝ2r‘Bcª÷a&¶]Féj’;¢ml›Ñ”np¨#v2` ³-Í]h;Á&e™s_‡©Hü0Â9Á³"â4Þ¿Ñq±oòáp9YOÂ[Oîû—Ÿ
-yä üNOî›ÚÝhº|ñÑ}›]
-Õ$m[~^Ü·aÖÖLi½QŽî›’Á,5™Ç
-ñL#]\v*iRjþ“l»»ïSÅöKJ¦sâkÑ‹aÓ‘™p/7µ§ƒyÂCj¾ýæXvÊg C,òÉD°vçî¬d+oÞ[E³G¶2+Œ?ÒêQy4ͨ7cöÖ‚ ¡•Ý™K¥´ã:SO*«ÃÅ‘y}žFµáÿ2^&ÉqÝ@=îàt`ÖÞêÞJ÷ßú%RýQ¹q„èj| †¬— «?ø½ãŠÆVÛªÎ/5æ˜A ˆÔÒ!HVÍsZòÌ,ÌÖÖXpå¿.ƒ©Ó)ÔwÛ$nÏDˆ¤§úZAUn¯ÐºéŸK
-©‚˜œœA¿¶^ßE«x¹D|ÈB‰Ý3X$£¥‚çë˜Â©`Œ ÷ ÏÂÏElÒyV ¬™v!\Ã/aÁ‚$ž¥ÇÓóeÖA ŒÙD-i-MÙ‘o„ì’sf“Y86ò'c qÌæÇJàfÚ?ͪȌ£¯1‘N
-¿¢!»,vÁ
-³™W¢Œ1°&ÚV$¨|»îwSVÚ¹š‹„1c1ÁDok×Èà o.f[ܾÉI³{T Þà%ÊÀ2,?µTÍ4ÞÍ06ÛHº’^b«Öj9¼ÂeP"gI±[Ôkc­3„]ÈÚr⬵(ôU`[Ðf¹Ž ‹GôŒEw_¡åzÉø%¦_
-«×˜ä™þîøÛ†ç?ÕreÉÀZ ÂÝÛj‰c“«%…£Ðm‡o‘ÌrSKù1úÝ‹lÞWá™u>ìü˘G‚4tkGP·Ä,ÇÚ¶³Œc_ncéïýóÓ9ùZŸ5ô³,¦óŒ"¥%»S|-¤{ÆXDwÆ<€Ž€,™
-({2γ5û˜³êò èòNÚ\±yÎã꼬EkþbØ^«~ÃY7 Ã~°ß¨bZkò<Ç åðQ£²ÍÅ;Ðá\EºµÛo@‡GáäV+
-Tm £–¤OÿòVðt_•û #E
-„ÂÔ_ è¸JŠÄ@CÝÖ<ÜL‘ûBï}°Î½dûØù.¶ ÏåŽú{¶rqê‹çÉ¢ÈyqüÁsgˆÁsVÐÁsgÐÁsº²ô)v ¬És<œ0¥ß¥p:Hw µÔ$ÛEè÷¥½–þŒrFžàòØ-õYí¬©(øÎ>WáyNxùÆÜ
-ûxƒìé´©
-«9‰d¤ /™ÍÀT÷m¸N¤£3h.h9Ï&ÒÑ`0! É´‘.0ù,u?TôÆtþÅâhjŽä6°=˜ŽM¹ÊD7Eð:9™.×—È;ŠF‚…>¿Í Ç:ù9ƒ˜ä›–¶V—sâÑù­ïÅ>ö­6JYJxiý*! Ì!lRÐœ
-OóVœ‘G$Ðy…´B­á¢"i†8ø“7ÁBnŽA‘ÀçÐ|#ˆ‰ä2슊٭ó '®ê§Z:t™ÒÃá3„߈…JëÑYûƵLÃ3ë=ØçtnÃgpLùãu”×OÂZI)"íÌ+p†ù«kï›G±ÆµR™ Òö¾‘.»¬ÓW
-¡>–SÐr^÷w«Th¥bla
-;Cø‰aaÇh„¬,ÓN<4SÒ`Ÿƒ9ó®ò
-`d¦AsžéÉÞ ¡wèIT#tr>Ý:š—dPé.¬ÆXCq|ì[A9µ[þð1°3{„D
-sc¾vÎcÕ!¥a‘›AØgØVÐ;cQ™]XÓ×-Æ&¢ta¦sˆŒ­ Àè–Z÷wŒMW“CC
-mÆÎò;Ü4 ƒ.ŒMZOcÇPúõÇLPJ>[ŒM JîKlîÆ&[U}mPs1[åÔRË-¥ØLÆþ²âŸŒ­Ev¸°-Ý[W‡2èí¶8èØA„È
-Dc36ÏeÆI™¶ûaösö3æäk®‹ìK(k4ùZ– ”³ÊþÂ×J$Ú2Hl¾Vc ©4)m—M.V+A°`ǦkÍfP.ùïö)…t²w~pŸóN×D$Ù-5M¾Ñ5AòR2\©o¥{§kBd˜¾TMºVéît 7º¶‚ºÖH°éOÇéºsÃ¥Ž°“®Uîdž£Â&]kXŠW¥R߈~еä¢v†˜ær6]˜Ä)¶lÓ5!Q
-ŽËÇ]«æ0Ø›’3¹ ;às´ášX©•Ø§ÜàZ5§‡iü]½À5A%«Sø[1áZý抮դ¡€XÒþ¡6¸æáøÚÚuåhõ6g š@‹ ×_
-ä‚kŠË.‘Í[êî%È@ùŸ:‘aÄJÛ/[mä‡ÂTÚ’v0‚FwÆRÐz/ .a¡°=f¡²_CË2€Sëôï¬×t0A^[JyoÚcß 2
-ëÅÀ% —“ë¦K²QÑñ¿ý'B¿;¸3Ä°pVÐááΠÃÄéÊR[è’Ec™8^ŽŠŠ-hv1qÁ¥E/º6±DuÅ0õE8láDÔß»ÌAºa‰jCpxJ±ÏÓÏ·Z {Á¿Ù¸$¤çç$+÷~±q•ˆ>gʳðÝÅÁ E­³Ùz¸8…*¦: g.N Ac¿j´‚~­ àÑžúv<§˜Â±œ²‹–‹ÓÈô¨Rñ÷xqqÒÌ+ä‡{»¿»8Bä+î&¹½Ýßí×P¹¢‰¥»âUÅÍ0aµ)Z^¸IF·Óũ䆽¸¸8ÂSôÖ‘§tqq©ýúTæIO—d¶\Ђo9˜.N=
-Œ(ñy‘áâx9³ˆ64ï[0]œÖ Â%&ÂÔÀoÈä¿ŸëÖ½š¬ q9®MÊÁÌ1YÒ*ø} âš•¦÷ðÞx{QS«ærÕU.e*ªGÖ+7¯Ú;«É€Në,¦™
--e¿ŠÀ
-4iuÙÄ6-Tºgäf“ñ-á=¿-qïd’§~æ´:¿UZWϳ•iàØÊ
-H‰Œ—Ïn¤¹ ÄŸ`ÞÁç¶!R¤DƒÉq®y‚Aròóþùñ?#v«³ »]­?dU±dÖe˜†½ýÙûxØÐ6E»/ó·ß?¤[{L×Ö-L—@ÄÔÆpQsCzk:Fhs™"±,šÎÕ/ˆ?Öä+sž®­úz¬!!Se.Ý aæÍ9£çV@ÂLÕæ³Ö‘9¤y[]{¤Ùz_=!öðán±ºÇÔ{«'NåxªÑùä×m˜åW“k»þ0YÓšû‹·¿6HF£Š‹ë÷ ê|‰Cªõèoï ŠGÌ,õZ¶ÖtAFp«6s± LGŸsC¸B_Á¯^~0ãzË%Þ~þ8hGÄX-ÚjÓ¹ ùpv’&ÔE¿ Ò‡5t[²1‘‡ltÌÛ| áê1¸§® ãŒ6D§®ÍÓeÄÛ o”"µÙëö+wòaÒê8½³„.f²›¯eéÇÒ8@ªùÝU[Ø`ƒWë˜u˜7,ƽ•_
-Ã6Ä¥·e7ï«Á3[­ÉÏþ7.ž½ý=¡ÑÄlÚ§û³÷ˆs®Ö7ל.Á!ç`=  b3”¸zI½Š@Ÿ±6Ä}AÖm7„PÔ€6²zßGOñMºÄ1·;
-ú_Ne¸—¡ÞaüƒbLGtjíâ*N4#Ü7GF:…zMí/ Pƒ?¶¬àüØé+È0þѯ;eùC±N;çÜú ÛMÃåc‰ØÁŠ†áÜÔÃk( mCVÞe
-»_!©ô 1UÛ˜§­¾BÙd-‚ “¯Uj>€Èh¾"]N.&&cf~çÍÒ¨6^>Q¥„ Ôœ·ˆÈ!dÔ$±&ª„yÅg¨¡dh_)9‡ó1kÆ!W^k>2`f—¤¶"/I÷‰WëdØ¢ù(JoHÆñŽËî€N' « èu8pyØPNt¼¹Å`·Ûîñç1*ŧvyàbê»ÊOWÎô*ƒ€+8{•A”úI³Ö ”‚DršÏ;¦L¯Ø43V¶¨AA²ãk݃“eG—+õº®þ:±P¨3<`Ÿßtñ´Ûw0ŸezfügL
-þfÿöÏüûGZÎãz
-©s)ÃýŽ/Ô„,ÁX÷ø ;B†ÝGA ’J%¿þ˜$kÆ Â‡ë?<CžÜó‚d¥r…ú·Al6Ñ;Aä± x
-òÊŠ½˜ôÅ7UÎ üLþ éÛ&=EãÈ@\™jžuV¤Ÿ$Ÿ…Kú¨ðAO•À¤<fgñŒ@È»ÀûmõÂ/8 ”™7§sbàœûTËrw‚éçƒõÈSIbèl¯ÃXš–v7¦”¾ ÇavÉGZúa.Žîc¦ë9
-] Io#àõu]Ü*íkÆíBHEÑ
-œDè£6Âb*ßɘÙgú3ëRJ‘é×$ShétÔ˜¤Œ‹½Î@ûè’ X¿ªÅÅó™÷ò)tÕV_@PQ|‡µ¨#s™¹è%AµÈP¼lÒoæh`ÄqÂZ¥CÀ–1ˆ1ò!@:NíØmnƒ’‡XcàßR'ôóÚT¸»ìªpð²0™LgOAÅrö§/ _/@ÄlìP(F ƒ†—¤Zš¦Ky3s<ç=÷­„ Þ°½•9¢ ˜+zšÔµ È 2F0eí&rd,mè•ŸVZîâ0(e¯“±âÊsQ/hVd\Á7„Ô¨¬‚ÉùRÀ…fl½1ž×é×ìà·|dܧañˆdŽõ2ÝLý™o®s+\wô+ê‡f÷ Õ.F ½›ªé…x7eW«Æ$
-C²-Ò;/ùÐnñ0dE}‡7}«JpEt‰?»k`ÎرsU
-µa^‚ÛÛöÃ^ˆ0&Ž^âì°ya‰J×}¸E ¸‘¨ óŒ›!0M²Bð:˜);ѽ¤2:Ä3ÅÉz ´Ù—çyý¬¯_¿#ÂÛ¤Ò,&@± }<Ê_ )¸ˆß“GÍ[Ñ/Žf—`…Ù Êh!$¢)lH­ÙK@5Ð0ÂA$H¥™ãáX¥ˆ‰éJ‰|9´I†
-a¸M”$±Eõ˜4Â+w¥±Š6±A&FÆ>µ0{â*€¨aó­ˆvÌî#…¿ªÎ¦`·M5%¤fã=rh–fQ£“·Ûkd²ÉöÜzä8,'ž’¤¶|Ò) ™Ñb BÕájÒ\|œzFZ‰R‡YcJwŒcõ™Í Íâ]0õg#iìdôÓˆ¼E¿y‡De‰3y`P©Ò¼¤7l]õXûP²7) ŸòÚé½æm¸tbÉÌX³d iÀZà;·)Ðëñ¯ì_ŠIçC¸ˆöãM£QY6"ÉßDêÊ<MV½Q? »ò%Ûõb–øKðKJЕïë0 YòŠ0â!÷ 
-àpQÉÍy…o™Œiª›Û3ŸáGÆëß”ñRÒè4¤Á£/÷:N
-ªlæ)‰ûÎ>ïEø4,?Ï,íödÆ ’‚)àéÄ”sÞØ©ŒíÓÔjˆ]‘ýx:,Ú¥±
-±¦âr÷Sî‚M6µ¬¶#©€Ÿ¡Ãcd‘ÔájÁa*³‚’ˆ¸ê/n§PH¥w8km—£‰-¤eÏU2 nŠLúðÈžãðþÚe A÷8®«&99rdÄ‹msÁýÚ:¦yªrmù¥tÌ¢â#‘)Û½¢°òH*91ðYƒ¥„‡i
-îÌWIV:tŸ²Ò[põ;óZ¤Ž'6æ³a=GÄ@±ã;1$QDÒ$¤`<$7I}dRµ‰^s|8öC´ÔW!üç¹ ÐT^ÃJžh+ÇÃC*!-4–Ð8riõx 5 qf~hË‚ß»ònx©ÞQ]ô²8Æ£Qà*F O&=‚ÒÒ‘–GE†ï˜ ôr¹•Ò‰ FŒQãKÑ×)âøL÷²Xi°.›Çîv]¾†³QÜЄȘIŽÒªrcô£Èý°µÞë‰ ·HF˜åXH”’‰’|ø2}CÔHò —õÞÊ·Š
-¥ÀŒå’ÿñ"ýÂ+¦ ¥·¢]‚¡è¨Ë:~Þ»
-hoBñ§q(Ö¨ø8~zÜŸ¿É1.¦ÆNr¢ä’¦æë(¸ð°ùõD¨H¶EK¼íô‡ëèV¬¢…ý—P5Çò£¨ºk#d2´†ã÷CKíØlxŠ{+úò"Ü”Õ|)¢[Ž2™Â«“ªi 3Ëþz ê ùãårp60N¢pÜqŒºHZ0ªì˜y:g“HP‡¯ÓÈL &'ŽÌÐÙµâ-ŸÄN"Y)†IŽºÅ:È]ZbáVcJ~¸¼"7IÆ©xŽ±îì“{—Þtp*xjf<ûÊìô•?ðß,Ì'Ç|Ç,°¸ê:´ûsÔ È/䓪ÒK‹"¤]2ÌÌ”á¦H*«zy/¡¥\D¹è"[y( Ioš _ͼrH€Ó•tÌâ¼)Î.I®:5ßD©ngü Lð}ª­ÄÕÌáyŽV»¢ê®
-oÛÃÍø”P
-å‘`¾vS)I‚åÄèžY‡ù„?—ñ¡fÂ`¯­~-- æÏj9É3qwŒiŒß¤QÒÐvƯðuÀûÄØȨ3ÂMÄöŠÙ˜µÌ¨ôH¦è7"^ì5èôŸÇ""†¡G !¯©ƒUA Îêv+¹³Ó[Ñ÷EL" géæ!§GMA4«(³å)mÈmö|÷â’*^.ažJþdéi_-PÚ’äÞƒWçÿœ‡ ˜÷xѶ™…C`¸[’‰­4åF
-ÂÒ§’F–È{‘â-§ÃA«¹7ýµæëC ;
-h³˜Ë+è| ˆ|IXK¤tjŠ´¤DÜFlAEبG ×^»O5¥w(˜í–Ë¥ä¸ ˆ"'ˆ©Œû:hC²þ[4üÄKŽþÀIÓKÒ$Çz°×71bÁ$ùNð*FpAũƉåZD»¦Ô¶K4« sµ3uÐ_cãaQG§SÓ„1p´ZFÎQó(’ìº(A—"t˘0:<Zl¦ãöa}ÙIàZG º—ÐZ:Ékõ#Œ
-ÃÃ<ñ¨ç<Ï¢ŸÕõë7øûªŠ êŽqtiuUòc²qéÀù (áñÑ4Y è‡ÐÞ•ûú¶*”ÐüŽµä†ÀŒ–Ĺì¾RçC}Œÿ8£ÞàŒ¦À;|„l£$.ÕZž,êŽRa‘q;*ÂÇ<þÎHÝß1a+8q
-íRôýZ? r,¹CW_^DCè3Æå7G®CºÕö‰TbÐÞöæ%°A*y°1¼„ÀF~Kàw\ðú?ߊF!@Êv‡t±¥¨,{óuJÛ­SòNÝÿÑóŸœ\‚ÈàŸFÚ¸ø™€G]$ànžÔrK_¦/Wœ
-ÂU2ÿ’&%“[A€–wZN™Ôð¨¬d x]ìî.!Úáê' ûtiq-›íž%uÓ‚ÃùÀê·?îE ) a—“gÑ‹9‹Ž2]¼qztªº_ÑÍq°”âÉ…Ëb0Þ0mˆ7Âè@·1p&f™¤z¥èkçŸ$ž A|=…)Û§e¦Ìª ÃfeÚ ÿ³ÛÆXþ+-ÈY]©Ç\Pca3²ø àê×1VÜž"_‡í°Nà°žá"6pg|d­x)<Q%)…gìSmAï¹ßþ¸ÖÐ9 )~¯îY¿±ÆïÔðaF  T<ŠˆNY¹f*^oUÁò
-Q˜à4k¢6 TÛ‰ÁBH|ii‘FnÀ¬¸öz¸Hˆ¢ÀK°8ëd<Wš¯T[³-{Ïn>ÿÌnz®Ïöá€íÙItNR´GK=}&Y9¥­ ÁCC”|–OxäŠ~Ñ- Ü­‡Ø=û¶Ö¹€à
-³Ìïà}Hš ÁÐ5QSK͆({õÊo62O×lÞHùÓÁí3Ày1~XWF>Ñ®³’!ºùtäÓyžTT××Ó%”b‘8£Ž X8tïè§!ŸLŽÃ›ÂpÑå3uü ÄHI––'"×ç/Ú‚Hy¹û&ùEi°;û(ü<[RVæ==÷±0qð
-·¶ó±xñ'l30]a™ås… µT¯-«Cg¨n•Ç[ÏbÏ.Ž{/?ï‚¢‘PÅ4‹—Ôqtëc¯"“c nÆi?Wé®@,‰% ènÖ3´œí|C¬õŒžû+h¶ÛW°vEÁw§Ý†®NÕ⽟#ŠGŒY;Ë6Ð –SNg¨h¥ÇF­VÁ7…_Èn[<€ÊðclâZ"”"[ÒLªH³zT!Èü2— fnÁËe}š m«ÃÒ4œr¼­ÓNž.†—'%¾±³7£
-¶.}9‡‡y¶Á’¼ÿTÎ¥¯ág HÂÕ/«ÍR²©úZò
-D—vØýÓN ÄNð©æm7”
-¡ç®Ú< )(Š‰¡½ñIdà0:ƒ¹ÓÁó;Š& gë4_NˆÞ@‚©~Nå}ÎÓ*ìÖœ‹DÕ YÄpçi™9”HŠ0¶oƒ,¾0@07œU™‚¹:…d+¥à&h.„‰ ~  ç]D‰7s
-œ ¿MP„Š›‚))•`†¹EÞz<o¨pɸÖ«ÈlöÍl_Äw¦,ÚEî9šd5vy’ŒseÛë”7@*WågËK²ß§HÉL4C,©2›õUÓEóî5.eÂãžÈ7cý{6MJM¦Ló=šÆ¸”óe›onÌzÊÖLˆ"PìòÒÛ|£SX[ŠötÀi™{RÌjQ
-˜ C†Ã{Bflý‚Àñ°Ÿ2ëÈZ'$‘Ù"
-òC±ÆtX 
-s¿ÝÑŸZ¹^þéC+Õ…”µäÈ·%„vã­ÔŒ•  ¯‹÷v?Åmž$¶r'Z€«¢¡LõÁ¹2Ða]¸RöÌÎRŽmÅà>CÅbh´…‹Ÿ3wÅêeÕF)P«â˜´Öý
-ý«…õ,ž$¨òäÀ¯¨tškH…r‘$r‰m1†œïîpe˜ŒKJì¸xÇÊ…¥KUD§ ¤'ÍTÓ‘òöP]×NE37!PZÑt–m'R?ÿÍöw”:Nlö²Uýì$—'$)I¶Û/uË”“?Ö
-ÃOÒ=@†ýQb‰p*F¡~ô4@ó4µ8)›õ;æýFp³/øjHœÑŸÛÎói`%¨æâ†:;Ç_Ï×S?¼Å%~¨]¾¥³Öo1Fmg0`ÈØÚõ;IæU‰ ­Ë@!*P“}X¤;^™0>ì£þ{ ÿð¨^ñ;ÈtÜ<$>Ž 0´5×lÛI£R „’.2Ž5ãVPH½yH~ŒvQ{¶ËöœÍº331ûf 7(®{ç ÉßÈc.‡pó'Èð€ÔRt„Öm™{÷‚\8LS¼O‰I¡óMLwyÉ1­ªvrÒ ]ô° ;ñ_5ýIl©z¹ ½±§‡T&…`bKÎ"ÇÕ4S’^/SÄ»˜d¦½]<$ÃŽHPÕžúK[ÞMd :Y|¶Mä±L¤:Mä²f1"}ÄlÆΨÉËIÊ­Í÷›‰<fú4‘|™g–XT›aŒÎŸL…Ä â‘žÙßa/ /ÖK¶‰Þ
-Á”{n7 ¨¢të}5M$ýƒØUèÇ6‘‚dœ L yBshÆw0§<@§dk™~vŸfÛ@R©f¬ør3Z¼æ|¢|áb #ểîi?V¨ˆ°åf a²ë{»|‡²3ê½Ë€™þQ+T[b°kéâ5Z¶åÙ8=Ó?ª3üMšþñœ>Ã?j(BCƒ–óâEReÈ1önH±;*Ófø.)g 5”&R3 ÒoÄ8Á¿Ò[FaŽjÀñ+0Ñ£uío‚eœö5Æ#“W5ž.ÍB ØžÝwMôý1 ¡¤8éÀ3à ˜Ã’!ŸBpèô YŒ"årÊ.mï…#® ‘pÓ³‘Hs8 ? àÇb/ËqBð†üPà ¦0!)áŠù†›ÉêGñ– Ã6i΢õ=@
-S¦‰
-’ŸŒ¡XµÎA°íôa³êÇ“¸ ƒïWi@ñRóùÃ: P&&'rIó,<Yætv'/HRð¨^¹o¾È§¬]©Í@¬WãMHœEÉÁüŠƒ0(Dʲà«ÛÒÿ¬ÈÛ› 80ø.CR×» Ð1~¼)uÁ¢ßÆØÀû`ö ÐcGía?’Žö=TôÁĺ·pY÷c-²2%ãLËÿèY&ã°/!Æ®˜Çª‡÷FùÖ^š7WˆlJLjPï˪â·“vÉ[«¤:L‡ùÏŽ…Ñî
-O%0V?ÏbiŠÅQ¸@²f¬:
-·Ní£ž ÇV—¡”¢/„(ôË£”›GbØõ;ŠÏâ£ipÖû,1…‡ê
-‘LŠÙªdõÖpë+ÇÐœw9†ÏzÓ1ľ„Ö]& ì™8VáÉo_­Ô¯×æ Giõ¦²t‹‡Aí9ôdn±2Èç8íóù ÊøøKЀ€àÇ*z1Eç=–þ61b³@,£šožnâöWÈ‹21=0ŒS&É­Jx®Ö^ú„ vE×´&„XJi}-T`¥<\"q‰±)S ¥¼0·.eY©
-úd€™¾Z';[@ã¼X'58 y·ËgHœÞiƒxÛ+*ÊpÉd¤>!¡ðbýP[JOì)a^g<A‘vôþe¼\’äºq(ºïA+Pð ’cõлð´zÿÓ>—
-ÅG÷XÙ*òóåEpÇË=™N |ÉÔxÕÜ;!H¶“3ƒÝþ¨ˆ‡?úw;æ1…ýƒÑ‘Ħ\§É±R’*xAÐð õ;ÊŒÚHG,»a‹MOljpÏóZÂ\°Ñ!¶r…ó©ßâXˆOñ(Êl @TØ•è%Q)¥1ò¢Ê^ÈèJãr~­Lñ‡ÄÂã%L¸òØ’ˆS^R'VüéÞiº1¸ô$Ž×ÅÙxMzíH(:ÐV~ù7sj±(Q‘=@üìóª#wþUº•ÄÜÙDi¥|? â 3ó¢#-‚‰‘´t»”yRʼ7á„ðNm¨ÇT Ìu¬º^ÆJüíŸÖÜ4³‘SQ“úÿ¦›GÛ!]&ë_¹4˜åe‡zÁírTO#",ùZPNb§y4×8"HÌDo³x”ÄÐMÅ̹ßÏre nmÅ»¸ßT~d‘ñ" ­)…£âU¬3Ī­ó)ƃ›ÖyjÜD‹ÑnÔÖû&„ UŸv-i ¶ÍÔ@æ<
-ÌŠkƒª#e)áØ*0˜!/~¬„* 6Ò(3¬8Jè)› oÃI %;v@ß72±„ÜÖr8!
-}Äp¡ò
-ÞTð‡± VÊɒ”3x‘~ÈX´Ö¼@*JÍõù`¤,,â5uñ0 –¿h$´[É]E(Âmèz®âÉׇĪ4IfÏAØ'>ô¹'Äû2‹“ó#=³Öˆ ¨íâíZ{¡¸adRâT"ÊJnWÁïãåS„êVú ,Œ
-Á{”–°¥”1ë¥$Æ€èÉðØÇýæ
-£Ø݈å&†´B›.%]ÛÎ>¤úÀ̓Íþ^òu/á;¬€TÛ¦ã<˪p‘¶Í;¡qÎS5áˆÙœ1UÀ (ƒ2WCÁó‹xŠ±ú¢–‡JÐG<Yíô
-KŠûòüýí…€š9—÷4¤GƸ«Œ~ôµ´çù°;×؃»Gn…q—gŽ|KÓ'Zdy.0/öéÚ—”52M$ÅäàξˢUŠŸø»x5TëZµJ
-é[œËb‘yìÙ"h6fÄ·WŽs¹®cZ¹n+ª€m¹›xP|`Ôô!;fÞŠºò^Så%ŽšK)±$B±FÆÇxôgEÉd¸æ%(gcš[ÜÊj•%¬jA‰û¼ýÛX¿þÄ}w2åh4ƒ8m†ŸW,qieb'r“¾ýe¼@þãð’¬rþ°f/‘2àÇàÒ¼$%-È<¹Ê§
-Ùð7)
-².“‰»YêæJÀ‡6\.ÙúIgò~T
-€¨(åňì1¹í|;€jH-L‘cŽ`Õ\ ˜2Rü” ž$PF¤dÞEœ\¢DA@˜sJeMÂäóAô̒š4$œ(3æGô"ï+g²+Ê‚0ÚÉœI[ÎÚ¬E M€ÁÜ0,Ê0.z¡ôŸâ¿1a쿆”jõIÛ™jñs;ò ³8jkК•WìïJvØî<³ô×—ž5Ozqã*-£Avœ`+ˆœØ H5Y×[Q‚O¬”‡À6Ϩ€2~'i ®#¾0B¹¹4?Ç$£]„ZwÝA‚"¾IÜ R˜á~žC»@H&¸Z݆¾´fÜ è°’29™QÂh¹­ÒóˆQ5õkM\›¤süU QSÛ¨
-ˈÀŸ$€‡Ï¢> ¥Óľ8gMI ±@¬q]tËâK­Î÷#¤ v.̨ülÞÖoR:§¨œ%€ëDc¬mÐìIÒOp“$ p ¸…¦§DðATå `5ÀK°&7šÖ¾åA‡O£«Z7Î) Jé~éŽN…„#ËKÓ:²_§¨‹·CºÂâf“ ¥p\›æ¡?neMËÏÜTu%Ƨ@ìgaÊåC ;%ÿkì›g ¼¡íh1úˆú9²2"li–/{«+ &R•#4ôªa¤Âuš'q™Ð
-ÐW¾óQ¸)‰-gÇêv?G0­ó{åÚ¾©Š¬ÎŠöŠ–¾%@båHG²à7;­ƒôå°M¦.k'C>c&·7D® ü¡ä—¸úC©öÛþ’±òÇD,žÓìfÿõ"ÎçíU¼š% i!Áì™gÅeè&nÑ•µifßG9Iˆqñ.pÑ/bp¶³ÀvÓº€¬ ? þIÎ U'PðSìËQ¢Œˆ(¢Œ!¥|º•Cs4',eqC­CýRô÷µ¡!Íñ%L°F" ˆ!’­Igqg®Ü4k~¶ñA ¬áʼ=‚-·‚Ì| /IJëtÙò-(þã“À‹–T¡ˆ]Œ&o¯;·R¢î5:ËÿÖï‡.|¤ƒ-ª(™¶_„,ð¡D„qÛ»jî©etl¡¯gC¡ëBhµ
-jÆ›;aâ6Ù †ºÏ©U»Æ‚ôXæ
-& QÖ ¤.ãésk7¿”k˜›ã‘7FG»StW»(“¡ú»Ør¾ýHgüŽM—0³T0¡|UØ&JݘEyËI·ÁÙ$?©Î^¯"¿Á¡pªaµL
--²ç¶ ¨z$²W˜oÑì:Ú‚dŸÌV˶oì=ΊÕ[¾•îaª%•‹>¿ÿ×?§"‚ ÅŸÞÐë¶2eOzÃìóPôníá!Í•©:­> 5 4”Í‹xN¼û·D­çS°œ!G§EðQHÊšÖŸÄdqÉ|Pž~UDzwɪŒó*EóZ¾Çem×Ö ‘éXÀƒoQç(£í›nE(
-n #ÉÚ90Õ
-I³orŤMÅ6s¬I=ªëvõ·BQ‚¡ûó†Ol|p™ÃÛÇ á!âé|àÿù“%CÿPÞ:¤¿ó°‹¶‘ÄÊîtÉÒ5iPÝa†áBl!1ϨP@ ÊTä·]Â!ðCkÞE¾ûƒÒc|.Ð˱e[;‚¼Á{[wpÌätyãƒAÄÍÀ¦½5ïP²ñƒ•ƒ;Kó|Nä*æN°ŠûU¹S¦¬Bf¹ÉmÙày7¤žÑK>À1WJtZpßdèjÔeØ9k>(¢è
-ùNü*€q£SPñkÓv ;[Â<èûh²³ÉѬ0
-Q
-ó‡’3=½ý~(BÐä‚ ƒC HEœY£S3ö¾*‘a¨Üa3½¾<wóÔ:‰Ô¦¿Š-€20lœµq ücUVðÜ4Å·S²Ÿ7Œù4¶ºXÏÑ
-2Åæ,<¥Súò10½„¿S£ŸÎÁð’¦ð =@tÌW¶ü8·€ÿîÙ#@¹\,›ž®éʜ̪ö>Ä„$€á,ZhOó!l'ø
-¨|ŠëˆlóÄ]é%Áã^óþPÃEŒ‡šŽâŠ¡cCR~?TŽ¬{ L)6Kvg2hÀu±0eïT‡°kÅ© ï† ÌÓY"C¬ é2O°7c“æwoo òc¯Ü©Lè´ÃºåÒ3Û”‚Ï:KæÁár@6i˜H‰–e<'²¤ÅÅ1¦SŦ؄Í$w>†~³×#ã«òþÜ,šŒJ!n=°Y|‰Õ×سŠ"dRܾIÄ?¥¢è²y¸ìuH½Ö­È„vžaÁ…á}ð}C¼“¼2ð™[NH€G×詯ÿ¡á#GUH W»,ÜéÚî­cà…ùò²Þ¼dhqNøìˆ×`Mük^K>kêûO„÷ò¥8>v³H.øª|Øð+RVÀs.tÂt°®¸#ˆzdG²€þédZ |¥íÃa«˜H_!QEU¼
-4e»jºt+ÂA„ »Á*d›—¡yÍÈ톂W1‰™í²‚‘#Âõ;B"•üª
-î:ƒ5-ÂÜ‹h¦(ÊjC±=9‰{×ñÔ(†ÖÖÁCQ_3.—äŸÍr!£ætˆ1”8Œ°„€N<efQšë
-{z÷ÞŽ 5ËZ è]B®O
-̱©™¹V¥ŠŒþØMümŠ‚æE´{ሮËj¨$*M­·•L]*JéXN$¶7–†ˆ¶ë¦×"v† ]â\ýìÇm»õ†6Yµó EšÁ¢î@ñÅzûUø–!«;¹Ò AÈœÃÎAg¡‹)a?ãï;ÿºü#CEö©Šs<ä<Á6êÓn¸¯A¼Ð¯Ã î©Ê£ÿ1^îHrÜ@=ï°¶Œ ü?¦‚.]€!oeêþz‰*Lh§ÑäC†vsÑ@UVfÖ^<a¸’FC(6±r=¯dÛTÞFYæ¹9Ï@T)¶Gp%–Ô‹´ŽÙë&ŒbÏ Få˜4T
-úÄ\q#ï…åËÚÍ” ©cS‹Œ‚bšž‚ùm»»™ )ÒCãhĹ€xCnzi"»@l{ WB zõI(ª"®Ë¾X#gÆšAq ÷j½ÂO%2Yaßç
-ú¿·~¾cÀ¾a†µõAÜsÝŽØG±ÔlE>Ýçc-Zƒ‡X6'ãš³›h£}0<"í ¼=l‡äΡRU›‹ ÏÅ¡Ø[ª_œà‰²SÒ¶A'~HLÛø ;ƈ •E‡š¾‹L¼nX°$ˆSÆÛ µDt%ïQáý² èÅ®ê8C‚>³øJ¡ß+Ç1yÍ ŒìTTêÛÑ‘¯ ™Ìì Fê@ošpvÌè…¬LPl²sªv&œ*ÕnŠAòå½Ì¿î©bÚ‘ÔþüûÛÿòÝ ²H06X¦-ñA"â°Y…ò™¸œ9™Š€zK W­ŠDŒT‹P¤U+NbÏëòâdÅ*¸
-Y;ãØHm±¦"Ù@a>·èÇ (#«²ì©ðÓAʇ‰Ï9 ‘i*A\ƒÚBÁ>d‚dzÈZ¸,-šÕ8Išdª‡@áj†}Æå±úx¢~– ' :pÛ«_÷\Ê6=X'³&'.=¤Ø𨄶é‘`ú(ÌÖÚ\^AÞ3è8´<ç6/Êw˜­AZÄ×Õ!ú§ø%'/Mk›(Ò%óOQ•ÎtÊý¼ªöµF®”‡Vé`!¼è·äj X|¸‚ÁÒˆ„ú¶:]¹Èù( ö³5XN3ùØEüé!LÑRvðLú §/ž©F$…]ÚUÎ^wíýÉ3ƒÌ 6D½ëì™P~FD˜.~Î ÈÀ_ÂkIÚrÐ8·Ü³7Lm7lÜŸR8$b0å ÔKòH¢­(ÿ ç<é8kY¡aÅ!ØéXgY*‹ @ÌlÉæý*\?ð
-¢}”ÝA«£Ë¿ŸVúj¢ËB_%+ÓÜ¡þñWc)O}ðÝqxú»Ê;JPÂa²Ö¾q’F¶0ç¸Û)g/2¤V('#´ @íØä]„¾‚ˆK÷¬Ñçý›ao€ú
-ºDhíh$-ìpŽÐÚOÉКܖ·s¿Fh@¥å$ÙR:¤K3.Ñw-žè2nû)eÿ4jLÚÕl é£¥{\è˜#àñJzê]„$‰U—£c„RÐ+v9vÑs„>ñý¡¯ SÓeõm@U~u¡¯  /&2d>èò¹Ðç;ƒúÃæ9àp¡j6Ü 4=‘y6Ï’ÍÂ0h„ÓŽ- ‡ñe»UXB4‰uøI¥Ã?%Š
-3 èvï‚Ø!^åÙ€¦oç‰÷Œ( ñÉt)Þ}ˆI ²À€kó+¯
-ÕÈ-@n„Ç¢ô\YÓy{k¶¨ÓÙ ã]ÿ“<J:µ[&Ň’M'ƒÅÞòê Œ)D¹_w ÖF3’|7Ç'ˆm…k'3çÓA<%1‰$÷î8º@²¿½wŽk’7 ?å\%b™cÙ@lÚóùgÚIöRgq.ˆÒDŽϸ¨}ñî|©°úaÒ±VDuÇœÄNÒfÐS²A0ö@KÐkW}x¦íëî–„bó%®A'/¤´=‘cIQÍÎA‰2„´C¢Zþ‚Ñ+,hõ&tbÊ9‡÷ywÎT‡é©´ómÚ.h£¡ñîU¨¾ö ¤çâ€ÐæÄuÂN¯%>@¾´jé·”2Ù­|/CXbŠ‘?»{Ó—eÏËw©M×^K¨³Ås…G¡ÆaH(úM§¾@üS—Ž_Ϲðæz› ÿN¯ºðøµ:‡ix-ñï¦Êrbʤ@›‚2 ëï ç¢1ÈÈ´á;€FeÛçÊ‚:Bâe;#‡Öa¡ˆ²;?¨ž\ ÕàŸPnÏú3ôïÊ„oÞOhiÃÎ!ùSç¢ph"ïU’!`*3åa¾[áU —UºZÂS£s¶lÇgX< ]-®n‘Vâ`Ó%JMyeã2+¶¡{<Ç*Õ ,H¬Q«Ä¸?¹xu‰,9¾YŠ•MòýSA…à:­8„¹ÔÂÊÓÆ‚ ùÛb9Ñ·6b•Õ¨Y˜Ä$T<6ú}XÅ4"P¼ ;‡†þbr±Dœ­ƒ•R?Aˆ´„>\‚ÖŸ_zÅ(‡bí<|íº1µ”O’@<Út¦•žÛ»#»'—\=<+þO*ˆ„<[qƒþ¨ÚÔèÛDéÒVl²sµO<7™—õRUI¢Ly7k
- f7S*Xp^wÄô¹›럢•.‘L3  $믢4 êÐÀ>k»r8®=ýé,-Zþ8¿;‡Ùƒ´Âäïhüãe’Ç Ñø:æa-/y nÉûoý™(‰](‰~–M5³1$"cˆX #Æö¡dÊpÑ`P—ïÕ‘KÄŠRR<}<AA4ù5Á$«$‹‘üÍ[Tla®kñáTó2º‚y°üê2+Œ8wŽ!Ôb7‹¦ßÖI$Ú3²˜c"ålÊ_åø /%Ž\ÒŒ û›ÓyÝp†)îÈÄœÞ 4û˜7èK„úVÌsºE-yoÅÄ!ÄkŸ‡©
-òÓãŒG³9Äâ©ŠNÉ£­âS ^ ÷«Øæ5¯E :¨ìÙÖ©ihH0
-ÓÇ\<:`³Úö­‚bFkùn7K2ù¼‰æ|Ò‚ÄH¾Š(‡!½:u­ÇÌÃr¢Þi$ñ!uN$."mH,:N=ßHÉ­1s8"攸Ti“U \$A–Fµa€a‘ÎÚ=o2ˆ¥ñUÄ‚aÜsÇW!bº:¶|$h JWm’I†¡O.pR*w*¾Äßé¥HÖ9á©“ÑgQ€%µåËÕR0Èš½!"¡þÁ;oJùånÞ
-é™Û
-F›¨•^sùUWñ/m_^ØÄßI2ÅQ¨9”8 €ƒB|3Ïë¬a–O‚§²Ÿz‹*ä8íkt%;aûž.Hìæ~(ãU”A(uËÊ ¥žd ‡1Ëœ¨ŽéÆd6üj_§þP‚ÈGvKŸ$GîÒ$4°j>¼†øä7«;œ‘‘^ôk¢r>»\NÏ}n;ϤÏ-/©únenë±{=¸­ÿj2(€§ .¿yM¹ÈoàЮHÁ¬Þ¼hSŠ,YßžóK‰#'CîH;•§uVµ†©òuäÛ—*; ³ªÉäHÐ_ªeÅS®ß÷N s<¿8û`qN¥mùj3Q:xxæ‰ù{(ùbW—«ýñÆ àhˆ%äáÓŠDü"lòÖQ(‰Rû€¸WØÌ~2;Œ©—p•À-¨Ù^¨ke%¦ÉCÿÎÌôRÒÖWDeŠT†úH Ü0èYéµnkÆluÞ$-yP ÆŽ†ûœµÑQyɾŒØ‚sÀ¸Nøïµ]é—¢·‡¢Œ^ÅåàAø‡Iw sÜv2DM-ˆ ” îËŒ W|zÁFâ¬Y­„W`eŒs?yÅwÛJ£¢#AñÞçe Z›õ•UëÏ.|„ÎlE¿XLæøHðÑ=æõHwëÑÒk›î~Ït«„
-G–…ã­Àt£ iT R\Åd`_ýê¡ * ñ°]د&¡,†-µ£‚iÒA(s#å%¹à÷É%ôó$—†x.ËCmEEÚq©Ú;{Ér¤²±—rË.s‰ ildˆÔè*ïU÷¤GI%–¹d[µ¥í™ÜÖ\¶ð±›T_@H±JPLçâ©È˜ûvPô²
-Ê{äßI¼Vo›w˜£©°“ë>  jÌÆ6-¯,ø76ýM˜¹íò¥°x«$~>ÁÁ
-zÜ€«y·E¨¶Í»XçŽÚ£‡Ó–QÊ/Í!`Ãá|•‘ˆ!„Ä<%k«†ÝW†`xÒÃ:m…HĆֱA ³­”áHåÞS fàÌFñ·"£„ N…5Ÿd6#ó`Q”ŽE í„â%ƒ¾N†2`ùî~õ—ï2$‹Ž*ħu >J ÖåVDèQNòøœÄSúÆT~zÜ;½À‚›ã3è<”1~œ°…Uæ$Ä#\d®%ÄS²Z¢ùÚéÏ@~ûe6@/Â
-A–ܶ5FŠ³è÷ùP¤õðýÌkXG‡ji×X…í¤M,Y¶¢~"Ú2Ý×ù.¶˜*²¢£+.$ F+Üy³§Û2ÇgÅ­¶•¬±õ ¸B|aÁÏË´¥™”[GÙò/*kܾwÇ|¦§ØŠzÙ<DdûFH¼0Ïüƒîê6baž±……†I\'²ôZkÿv7-È'qÞ‹oĬJ "ny•$‘cÇ鬄Å°Á‹ôÙnÆ_ª
-ðµV‚ß à•#¥¶{(K™ä­‰Z±o2áæ|Ù¼ÁÏ"`ÓAoÂÚX´^}|ØÀrÑ%Ž m•?-æžÖÁ,Ö™IMs—àIfx e~?†dä¼IW”@Œ ‚R4bc22ìX3ÄV†2Ž eŒN‚±IV©éÆ’Åf%=Ò<²Y±h¨ Jƒ«0FY Å% –hEÀœNb {NÎÌ$c±´ÓŠšÄ”á6œDÎx:ä%c™aìo®8ì U®–%þœ ”–­Ç÷uØ|phœ`l¾¿ãÁù´qÔ½¯^§aåIkñ)£×/«Ïy¦È€å“‹NÇ߉Œ‰,®ˆ"ìÀ„õÝ®ʈQ?e%uh¶Òú>¶”Þ×ÁÔðƈPïû4KÝȃ¥QWGaf8%8=£lf´w-ªä]
-ß €}EU<q÷7‡ðqµØÔ’›­CHlb=ñ*AV0PM>jx‰R#À\Z .¤Æ"»·¢Ó›ÒCŒ›žƒý½èeþ>¾3¤oW 9Hs©½S"N™÷ØÓO+Ñ– dÙî5«‚éÂÉeíÄHL &^ÆJdhð˜$/‰< ®+‹ð׋„ÉgXp˜ä‰¨L”šW»)yù´d†.Š’œòR8JH3Í Àx¨DŽ ^ЀþùÏ©(#zp~„cÎÕlºâ¸aì±9ñKч!h_DêÒ¡h•ä)ì¢á›¬ãÒ—9¤„ã瘎êAPMÇÇ2OÉ8š"Ø(ðÂÅ/_ÃãŒ*ÿÑ:#Ó˜;ï´¸Ä
-öùó¡„IÃõáLK0 u*-A#C_±J%zRů¸_ ¢e´´=ìVF*Ò¸¾_„0àr[ß·Âj°()$õ™ÙŸ”Ârzh,Òÿ„ãŸWŠáá!D-w‰ã}Ê>².ÊiaÏ+ÏÁó-ßë(#}ô
-/N¿Zer®¬xEÇy¢ÝÛ¶ õÕwþä‰E° –g«!¶«ÃÑ34{…L)ovƒ¨úÕ'g³Ñƒ¢±¾ól[xRmE’á@»9]¡†³”<)!bq‘‚´ï­Ÿ¡7´´nô4¸gLNôu9{^§iW†¢êõ`{Àðc]j=–à“iU$BÈÙínEú
-Q¿€]Ù@ÆçceÁqu§ʱ†¥«Î°ëbi[,œ¤)_SW+Öøï Äa\åNð4×·èȶ÷¬åmði„«Œx•dd%[?¼¤rqHå¼¾¦ÉHÑž·A
-‡;e7€ ¾0mî«Â¢¿åõó;¼²f‚ÊÕ°&îÛ]„kqÐ0`ù½ŠÔ@¿l– m¹(kD!‘ô‰ž¯+
-ˆs¤Æ˜ J„;'<ÅxªìŽ…)R%j).¢¥W1ò,
-’
-=üéEA8/1;¶læ–þEð
-ûæ=q*Þ„ó]òúó׬ºþ‡‘i¿š‹ZJœŒ¨r…& ‹ˆ·Ü];
-0Kdtaa)/cg}o«„ÆÃUHcÛŠ…¹Á+ÎC>Ö—8¤!sp¬¿ \§6YPÏW èî`®ò¬ xâYR%öƱMMª”ÌOa—Yd}È®—ç00ºÀÛlj"/
-¬³¤w’W†+€væ
- endstream endobj 154 0 obj <</Filter[/FlateDecode]/Length 22162>>stream
-H‰Œ—Ar¹DO ;ô¦ƒ\k–¾ÅDü•}ÿí(²äQkÜ!GXng$H$ú³y‰¡møã/mòTé½…kõ¢*£?k7/ânÈ?€ì½ÄüÏþ{öVܼÖΤi©­QK›+M{‘F°‰èjR[)%¼ž‘Ô9H£Õº"ñ«hiµXÌc´ªy4·D(/h\MZmj7^øRÄôw¤ï ö,E Ò¸¢ùãÇÇÿ>Êãgï^"šhÈ:O
-yÓÞ¸áã× ˆçkÙµË〸{µQz«+GÖÜÕya1¯^J ‘*f«"­ŒÎßv^]2i}tTŸƒ¯e¢«ÆÊ’uî=Fíâ=z¶BDo1Šm G¨N=ª×QÃÊØŸÓy8᫇Œ nFñùJïÑ•2w´^UˆÚ•ªZ{|~ì@åY-K+AQ„‚
-Nåš’d&®xê{¡kaèòÓs‡£¨šEæÒËPó
-Ÿ0oÔì(+ ’§¨n›KfŠ6™#ï>ÏádDèï•ÆJHÎP©+MA\ŲBëÝÀ»¨Üc¥¤÷¦ñÆÝeò}|‰ýþQê QJ/6î’Ãox_ºÔ}†7o•:C½‚ßϺ”’ôØßƲ¿jŽÍæÛW¡W(L¤Uê_Ùûž›”4É.g$–xlŒ!:ŒàTºm™¾#Vœ—joNy¡Ìî&/Ô»¾çÊ_cú~ Û©}0¡ð&t¢–óÍôùÕsšÒ¥•hÿZ…iô+^l@?¶ X¼F{Áü|ãFK+°”øÉ[žËØËI¿&&÷’ßj[® w7ÈLã01NÆ?Ò“þó$6’湩<^ñ^hœo×À[uˆ¡¨šî G]Ó¢áÃ;ªncNºy†T_RÎîHû
-½'„bQÕ|ÊÒ÷ØÁNËf¨F×@ª1–ÝqU,ýÇnÑ”gcba½Ñ»G‰nbûc:dô¼Žs{,‚’°å—&„¬Ð¾Íý(«)H Wä1ý.  ù éÄ[JÕ» Mb°­Zº¤6‰qA~o©Lq&¨óHé©p}B:þë‡
-ÂJZ Ê1!–å2LÄ3‡-6”Y.JŠ¬Wt%Êaã°mdWcy½—ªBæÓ« ÷Ä ! WMÛ³?§ñd$åg:0v³ ì1¹7Mˆ±‡AR:b…2²_ÂãÊoâ2R“be‡„ïÜ>ÏQ†òÒåíQrÓÓÚòŸÊ>9H©§•ÌxÅìjΞEƒêxì·ADËÏØ&½M{Qu¼*«OíS X»¨Ÿ ¿cŸd–Pz‘RK¹íâ\ÇJj“ø¸):µáú(KÛ‚0\ƒ‚ÎÑɦ‰&%7ÊIäì.œƒ§«ýüØvé©IoÖ†¬½¿ Ú‰üä{Š¼÷'B‡¨21ÝnT>A<BÀíFå1qùbË·*ïŽ*ù¨FÊNíH/ƒÀwnÑ™_X€–ÂzZë×s‚-¨°Òƒ^·ò ]avw|îOW(v‘ •­íÏéÈQê¥ígZ½<ŒÊNÂ*buŠ±¥l÷½ÎãA¢Ô\2¼Ú^çñ 6ãã«¿.:íX–;`j;븥â´Óù èªó@)4»¨Ô­Î“D¦©£fä£Ýè¼;))ìC¿ú»ÎÁ^F¯¸‰Ø‰øQVTbQô~G êÎâëX2³½))­k©¾Õy¸þ¡ã„\t>Yˆ_ëy§"[OHá¶9à,¶:¤Ó‘ÉóU¡¿‚6UÏd«dÈ……½ Ú(ýôªô(BædBÙS š.-A·#‡ÎìF“O7ÕêùúëÿŒ—9r$GEO€;@¦
-&Ð*¬Œ»6©Kptï#—Õ† J9ÐN ~R<‰[r½AP“qÿ1ð] ûÃÄpÐçÛ®èDp·m‘Ô—[·Ã„Å÷Ý•µÖ´=gPÛÚöéÊ¥“›EºeuùÔBŒêl2ÿä¡uÎiW¹ t'F
-öfð2Ë©Ð!iþ ­Çc„šCè'’›× 8ÀIÙ°‚q¯cÿÖ‹fœHv`6}})ë\ü6ÐöAõ%#*sÀ<±‹˜i·øó)ò‹N(ÏGïP&@_>·«Àþb±Ø¼Aˆ›¶š›"Öü\ýcYƒƒ7csašp~S’þò.{—VO>Xµ+B¦ãN€bˆ\9eÓþI,°Ÿó8†Þý¬›Ÿ‡¼6ˆ3LÿÜäÕo/bôñŽŒÿºÛ›MúŽsD^¶æ¶5nÐèlú—rN<@ wcéÐ|fn[“³°lÕxrN+°’ >6h%HR:–'•Ÿ™L@wCƹ†FL’K|ØÂ_V#µ
-Ì&؆jŠ›kÑ®?åbÄGÐ6^.ÚmXV,ák#"a›¢Û+«£ ûíÏ·ðþû_o¿ýýßÿxÇ@â¸;ÞFì4RWÎê(µ²¦öíZÃœåøq©ŠýT;ÎPZ”ƒ²„¡+*2›^‚BpÝôõ˾ÄÁ)‡Aœ‹+ Ê2þ×Î!¶ ;­Ý)‰«ÈTÈ›{  :„¯oJüS3aP
-­öý9EJuD Ò=±êºrC[ Ä—-dìðF àÔ]þù¶+‚ ã?àš‚Ü| ^Z¾‚¿ëteÖ‚’
-…`P
-êcÙsÎ4CõÀ2çý|Ù§8
-Cëâ|½
-‹ò#ø~}©aà ÝòÄ\ÒA0íø‡Å ëÍãÊÈà¥/säºr$Š®@{ ]†ó`v¨Mº½E{t{ÿ}îCâ“ÿ#ŸÄ¨ŠÄK< ‡;Èy¨SoZWðiûSH
-÷b”j_çd,¾¢e¶µ©økX½…’íU 6"ç¶ ]DŒzA4s
-BAŽÂ`,HD…)á×FrgþJQ"¢F–ÊF`ÄB±Ù–Èg<Þo@3ÄSqNcù¨E÷çEŽÝÆ4Š´“R­i·†:MÊÖë›Ç–iÙ ¸ Æò˜äÁt+!õ¶£ Ë2”R†Mé ÉáÓá.¢Ã½V@™@ê«Íu ö%F Ï;ÊÝ9Iç¥Ú‰©x8¸¥ºÊÇìI¥éèòšäZYëùhùæÃÃðn
-æ°cpl’!Xb3¸:zŠ¢Æùr?@À9±ªÓú¤h:é¹'y‚æз-ÛPÉ`­1•u?÷Ïurh~°PxÇfË®Ž‰8)ð<g0þŠSka·QêœL჻¬
-´¹Å=qüjB…O;}pc±h¤ð†Ð¾)ušàí¤®”R-(Øn»"ÛŠn›ãqs–öu“U‹lV3Rm‰ºOÄU^žPÇ/í!|‚ü¶!ÄŽ¨a÷ÏÉ¢k¸¹A‡Öv2W+BKoþ¼U¶_îNxzPp¸8Ý·ô
-yû·>ˆÀ`âx±ée™µ ÏJ¢ ÀZ@¤ó$†)Ëè ÂÐ" DfÇNî}A°£ ÓDð’ùBĤ¥rr½_ÞxK±¸Š0…>”:dfôó4¯ÅûnÑ´ 4ZÓ‚\‰¨r㔈}‡o(.¨®þ9„^¸“*=²Û@–\˜‡µ¾ Ôtb¢ÛXÓ®*p º‹Æ_öÓ¡²³“p'H±˜óúXå|=VS}ÔJá¥Ê2¯ÇBh£ =o;fÕØÑì¾üb/© wÎ×&p“°9¤ÊPÜ>â,¨féFÇ<`pöø‘Èp½yC•/‰Öw#©äÒ1Å©æÇ—þ<Á°‡=†Dg
-½˜v^
-d7ÜÃ~€x~&6ÂY-­{%ˆšqB­•ÉÀ?c›Ç\RB¹Ä¯˜ýJlœÀÒ—º¯~qVêgE…&Ôë¡”ð)Tƒ˜0µþnPh0ÛÔƒR¹AášAx’!½7
-„F¾^ÃlÍx^È0µLëÍÀŸ.N È’ýcX{ù6è4×çµÊæ ’;ÉïÛ@ȤDZŸÒc3T›Ç>(°ÿä8FÄV똌´)^§ô©HšÛ‹È&9*e¨¦Lÿ&ƒ
-²ð²”vêCðW)Û„ñDt<†l¬U¬ÄÂï ãö¬A9[‘@¼yã^ÖN|fÝ @‚Z< ëãKÞ­÷OÍI䟦N"trØ0Ʋ¶ñ$[bP”1ÐÁ%ãïEF¦2 Ô&’: Rj£¤IÓh‹ÚóÍÎÁÖÍ#ó:(+Yn¦Z-¬-?èë<CÆÛ¸ó˜˜GÇaØ¡qKµ ’¿Œ¤ Ú½V p3÷fLÐû iŽÉëÖ¸*]vF ±EœÚç¦
-ÄkA$õºðHŸÒ Ziò’;Ž>ñØïõ¥Â.5ؾ&+OF7Ñÿ‰]ÇdªÀ$p™ä÷ê/-ÿõÉÑ5ï±wg9l:H9jJU¤–a!ëD¯“c·€üл¶Ïä‡ÊpT¶Ú²~-b§§ß„Ÿ|%°ÏÔm{ŸÀ"F)F¨7ýL—üúáX¡ÊFö^ýqzE®1üÿ¶¶ò(‘‚»¼1Å1aCà-F¹‚•öb¼Œ4ò£æW]÷ÂI µšË¯ž²òÚzO¸`úà·ÇÐ+nÌÌç¾Õ +Ãåxÿ%ËT‚èÃ+(«Íaœ5ˆÒ³ ,v3rÌëvZÓ9ò:‡ÈÀòA¥Û"Aù dP¿ŠAêµ*Ëígh…‹^*ÓÌ÷½@Wâø» $7CΔ¦ÂAÅl)üˆéX­ÂA@Å\3™OÌ>ë‚`ƒPœÑ0z‘ô÷Þ½
-¼ ñšu¦Ìü(Cï(¼’—­'ÓÉ4¢ääÉÕNñŽüvÉÄÆk„T¡ÚmÜ# DêŽfX)LKN2’êå¡Gj` Œý%ˆÚ‘ž•½å‘ÒÁ²¼u#eU œ;š
-i°,;€”Â0‘dSÁÀäüpD½jŒ¹Àê&N˜|ɧǫïe,hû¾ P1‹LnöðoLú™k¿v
-C@ø¥ÉÐSûÔ,Ó˜²¸œþ òí¤`d­gÿ6ˆMU² ê1Ac˜†¡
-ÉX#÷¦Õ9òöžÒîBÇþBîQWGŒLó%eae-mõ–ò¡¾9„ >Ñx<b¨~â(vùºÐŸrdF aÅ}{ÓåXX@«Öc¬ 0½éì¾é$KŨJÙø¼'™Æ[âÛghWÔ”²÷¼¡ Ü `+¤0i®íÚ4#Iü˜aíHÈ{ÏÙ4Bì‚‚¬¥çlöÔ'µ…?‰ ö=„¼aÓ ßÇ $%d‰ÌÙÐM‡TËd?ì+ŽMÒÙÉ¿
-ô‚ÎÖ›{+õ,B’ÀªÎ× ÓmœK Ñ ‡)‡3šlƒŸÃÁ\ݶeübA^V"7
-Fr,‡¿ŠVá¾X½øv á.*Ýú~LO™¸'¨#ådžTÇ–µ¯¤kc(E[{uíT‡„@™ºËAph£iÌ™Œ|
-mæ!°”Êr? Aãø4 þé¬ü-£â-;¬¦:4œ
-„)‰ê†70†qƒgϲ)iƒ¥ø•ÞäE €/‹ŸÏÉA’h?–¬”²‚wp+„rñcƒo¼6AÀ œÔ˜lå ¤{«×2W,–(;?pÅ„ø÷ZU¾ Ò“·ôv
-H´ºÛ9„e²±@ÑF‹[Š…GÒ l#Á-~d”L*ªyZ} 4¤"ƒc?鳑ٵ—t3.%´ýº`À˜•oaõ ú~ýú7$¼¼TÁÕ2·IÒÊ’óžGŠ¨0õ“« ‚¬°.¨ÍÜA3D*‰ÑcùÇ){"*Ô궕
-f”Á„ß}T ‚›_)ìJ3pz–”[çtu•ªÙ3ÖHhð¾ìÇp-H ×E§,ZñâE —õбҞ1_+&Ó*BL% Ô2V$Ç\À@šÔ bµ¼äÍ$5® c‘#]ÀÙ3î÷aÖ‹sÑäÆry¶Â‚âc
-÷–Ó¾<¨ú±uÀT—¨
-A/ãÑ㤪ü*:èb=l­C–-òMÂP Y¡ÎF02²g‰e/G¨È³€¸Ú@m>ëÀ
-ç„&ác¶t5ôå1…&ì—¥‚ )FúPÊÑ(ýäsBp%HJ*äÈr¤7SîØ…€Yö…aé¶<¦ð›½®~Ì­'Æû{æü\ÛH {
-u—ø§ñ<DÈn¤¦£)ߧ/.„Æøчxúz °QfÈã{uÖíj8ˆ¦M™vùRj^áÑÚ³3
-Í^žhèÔÍSvu|zæõÄ ÀÀÂ_¼ ˆ@MeÏ*°_|‰Îx¤¥A‘ʵu 3…Ö‹±P
-Ýš#A†çd’ÃEvo‰“¼º¹{5ŠKˆ˜²#¨fBÃ5¤½ pZfaÈÂOaDäÕà¾Ì®„õÍað#aþ­®¾É¡*æŽ
-ˆÈÌ4:¼Ú¾ c†‹1nŠbêA\(˜®sl~Xp÷wˆBjxb~‰ ?]%FB_9Ý‚¨&Ähô:-Ðj“ÙÑw¼¡Ÿ0jÙCÈÀ˜r¤³¦{âøDhH^Échɘâk\‹ù“PŸ~ªŠ¡pvTyõéäËdŽ˜i”|Ëý|¥€°
-
-%Ü}ç O^‚Žªgáwèæ¿ ÆX1ÛË1L£¬[H»ß m49!ßáÎ’°ì9azÈìûžÐ…¯U%õÒH}­méxW—Ð0L½E/!?Tª‹Ù¬9a"iÃâçÀD¢I\ÿç%Ȉ€ZñKlå©oøC.m… ÁDѯõh0ÓÐÀ´Ý×*‚8Œ —lØ_ë* tWQ WI"…´NÁh„¬’æRµe•€ÅR <öPÔoÇyŒm ⥧òvõÌLu€Úϯ!‘Û`JÓ[N›
-Q^B~´è{ç’¤'Xoº†«À;­£MœËk örú} B]ǤÔ+c+èqÝ-èë߼鷞þñ_Bóò¦ =q
- 7LfPœõç%ˆKrLú=ñ]!ÈNðù0Ôݳ¾BÊ`”!LVÓqò¦ìó¿ÖM¨\ d²ƒwK*S§ !Īø§H6;0ÃŒLFoÎEl?Ò _ÒÛ8„Ì)ÑÜDT(Æp_õ<hhˆ:Jܤ5C äzŠµ¸2ôÅÉZºÅ² ¶ §¦#òÇXMã2Tí‰Û>¬
-,¾MO‘ !Ã8u;!ˆN©Ã¾[*$ÃU"˜ÿÇx™$Ç™ë@øï}çaÝ[ßÂ[ùþÛ÷%”­*–[‹îYÉHäÐx—W¡•yûÊCÞâ-\Ûò¦d: »e%
-îJ³wUL%œÖ¢Ÿ¹Á
-‡ZÇ=‡ _¯€ÐÁ¤q5¯ØpÛ˜ØÇiCèPa?Éf˜ë{-zq%··ÙåGEÆ¥HÜ TJÂuØ(rÛ‚6.nV 7ŠWZ:+ÁmC†˜¶U]1pùXyleYŒv‹z¸Ü:Ë
-m®K1u ‰“ Ö}mm@`M^wƒ~™Öz)q`è%€›÷s¤æýˆ~ yÇßl½Ô C¾õ@÷³—°{ñV\5X™å`žÌ] =å[ª3éÿA´~õÈ/XAªO ¤ÇÈXAy=€1$&UnÝ_ƒ²wA¹4œà7*ÞêÃÙò6¸`îñšsÍ– ÏïXðïlj!¶‚p„41ª¾#~üáøY¸jŽD*Àä ÷/k3}®-×Ø-ht³Zɘ£b´@x»”ü´«¤JL]Âýîœ,r-]
-ŽCJÁ.ƒ?“€­&ú  Úý* ;i5ßšs_Š.’¢*ÖÆR|£‚Ç£º4{EÑ–œ°bLí/EÏÿ’>­GÊ Ø«<ƒŸ£ƒ”z‹Gø|gÕc
-Ø$Z›ê;r.Š´4žåØoÏáòC˜Ûì3%D€%•ÄºüsÃ%,”Ñõ?¿Äß.²,èÿ)—´c‰¬3‚Ù‚GfQi(°¾Öœ
-²±gÜê[ÿ‚jL•Tfœ8§,¿lÊCS§1"E]ÄQMhŒS€BˆËÎ; ¡ÛF 8l~(Y÷– ¦’sîÀâÉßN%•ÿw+BËõ¼Š±­œüʪNÕç×})ú´‚xÔU×¥è”LLC$â—mV‘'8e%}B Lwq‚¹ÀàK[Ö‡b–1•é_àÔ›pt·sΓ;I®8qÒàÄðu¿)@Ä|Mj«ž‹ÐØyàOÀ«椃iõ˜VáC ú7+AILǼØ>¿ªSÓ•%W ôpþbúHÉEBèl2ÈWþ[c†*öE´F¹±Cª§##øU9v¢s
-”³î~?gÉæñ<EЯaå[-3;ãòSótÏ9 'XËce@<n¯Ñœ­4ľXl,àu8zFÌ9ªNÃr.÷6cdÚI0/+ˆÊ“`|–íÝSÑç›"àº`Si}@}eå»ÑÌ@ð^H?Üa8/a/ªâB1§A—²•?ã»S©MI‘/ñ Ø1¥ü%3ujÇÌèœ\ŠCKÙ•[YñÀ¾œ÷ï‘YЋ·
-òwøzø™“’àœääÏ71I6¿„+újœI;28oÖ*
-Oõãáû»cd*ÉQží¾RÎ
-Ë"v³àíÓÒ°Vh8hDs1¦­‰%ç#˜c(`Š"jV”’*˜@2û01Z•Ì…ÛK4n¾Ç)»lØ™ÇaeÌy¿á‡ØBÒÒ‘óZ„8¶ó½Û 
-µ7)+«3‡
-Öe%j|]ê 5%pWu«ùS[?¿¡¿Çœ¶Ò>d[NþÒvEšDÇ~½)úâdN‰,
-³Á¹éRWâ%.m[ K/ÒÖ§X —H½ä¬]<qZ\üº©¬0Pc̓µs’„`iZ¸3x€…ÙF¨
-Ï@^á+ù[
-²ëÒ Õo¥zk®ª*
-äå
-2t3¾\;I$°º×¦ß$”¾šÌò?§›¶D)cºn,Η-/
-,5áËý1µá•–\à¨qO§9<Ñ"m%1Œ‘2›3LÀ?!§«ŸÝKë$P™¯%ÅœöZhÙŒ›^jžöJ(Í&äl's.ìÈXÓK ÈZ¥›ÛK2¹¥P{L
-7ƒÃ²gÁpfÓ<›O
-•h‚‘ëÇ+ç`
-·ôeȦaˆè€ƒ}Òêѧ%M³Š1ì÷`Œfe9,§60q Kn LÀ×ëõ{Ø ˆ‹I-‡öò+ú
-«Pø8Æ ž·lA%ÚÁúô
-¥^)þ™?zÌ—®÷ï–k
-­†¸³‘û¥—- Àmvå§+b§R™Šœ;Æ~¥']pà²>?' CCasŹëÓ_J¼Ë¬te³b»=ã«<jÞ\ ®Í\]¦™Þ0cpîÃ`º BñÌð öë­¬`63è‘ç’øg¦eù÷—¾ÇñûÓcD1¿‡
-F¡[™Ûù°Ð-u_Æš8Õì*9C(jsÌcX«ñò°¥ÿ\4’’J*êrÆԃÖRÄfÂ6a¾Îç
-?ÉGè_ª‰‡fÀà3¯s
-Ä…´zƒúçcÅŽ"< /ä|WÃŒLÉbE>0»d'lT.OS¬Ç,JƒàÊ¡Ä?E˜èa®0twNXžŸ¥ÎÛˆ`qSœp‰ œÂļXS…þçôÜ ,Žc¶=ˆR$—5çíÎb€¥ÀqÛ`,A[Œé¦– Ê Cg~;Ž§¸ØæCÍǹ¦GÌ@Ô†:3›ù)Þ`Œ¥E=çðñ$Ô™lkEž™JiðÝ~7ê·Étù•!€Ä
-k¦NÜ„1ÏàÐb}°I<½Mï0L‡Fgt{àgé4ºö$MN’ó)ySø ¾3´þA‚C?zwáFŒ{m1J6ÕÖe#K:Ÿ#Ú
-dóˆ †‰4ÉEsÜ®òR„Z–o¤¹s-B˨¸ ¢?j}:Jb]yŒ[`! åP ©Í›½ 3Ì&ü5U×¢ÏÚúñ¶œ°
-,Ü«ƒ w‰ÕƒVÃX“IÏÒb«¤Éõs8à=£§¡är>úü¼CO“÷âOA{>§¿Iú§(6Öc‚T ã!Äiqnäµè¸OY¤7I­óÇE‡y-º$H•¸¦‰0ë1CR’Ųb¡ÝdHŠRÂ%1°ÃêK†¼ã’ý‚| <Ä6µÒo2døŸñ2I®cÇ¡èV¼‚ì›±k¨]ÔTµÿiK€i+“OV„ㇿ 1Iàâ6Ë°%IhïÎÁT(Ú\ø%CR¡ðÇðFÙ‡<2$EPÎJ¡°C¤°Œ„ÂŒ˜›y ‘¸?2ä£æ4òò*Êx¼\Ç‹D|‘æ°îJ:§¯Ýj>°¤¾Êô¤é¸c••h
-6DÙ.Ó5¥:ö‹WŠV‰"‰t4†¾2)s“Ë™q6Ùg‚¦kNFª@*«Z|‹"%'!ÙPH $‚šadÝ{Δӡ·»°IAÅT©¼äõèD£Cj°Q„â³æÓj÷ÃG"€þ)¼øtͬ
-N³JÙ8ÏÎr½8=üV÷¡WÞÈÒ’È\”ô¦Ê“øëîÈ(t«Jð²·àÌY¶sD8Ìò5MòÝPîøt?'Â:¬~–õðIuihGoR)V‚)‡±lÙ_Uжµ ž
-á;qÓþHÀ·AœTï{õü-‘~/¥¼&¤æ“ðÿOEýÕˆ*êiíìEOwpøÜÓüûNvõöªR·L—Ž†w] AÅ#òuŽ §¢ÓÕŸ;]ý_wZWÿõ•æW‘U P­.B?p–Ín/VƒXK|ÿ®Y4³JXÍ­òˆ1­D+ RbßHˆ Ÿ…ÌjèòóAšE¾ŽL–mòC07~­"‚ÐðFŽo5wù*ôÕK: UÂúú
-±Ó ÃâÞ¡ˆ â­'Žw9­ÛY¿ˆÙÊΟ·šOïàTW¡ý4E«$Õ4pý(µh&D96”ÁJH“µlÊQô7†–ÅÚ³|5«‹^øö§
-ÄÇÇñD´t¾)ùâ(üK"„‹íwza%ÊLÿ•Ó¶Š(¦ó[ –Q9.iH‡
-¤¬¥¾ßt?&Ù—äÊ樎ë›\´X\ÃûÙâZÌFêiâȘܪÐ&ÊC¤dÇðWa?É>rØŽ@BX®òTBˆá‰Š8Û¸¿ô("J§Y‚mçà(µš©õÍ“£k•Ò½¤òN¬ð~+%FRã¸ÖÄ›¹dÊ—‚Lœ¬pÞ;Ž"†ð[³’Ì/avpáÅaLËQZè,žJÞñÒ—¢cQ’Fâ嬧ñÒ¡¦K©y=Š¤ Ý¡5ÉݦËLtg[Ú‡×açC´ €Fµä ÆÈȅȽŒ“çðól D©pFxØ™à‹g[*ƒÃNZ³žÏÞoaÄB˜å~íÝ9 \Ì9m'*¢*XóØ£“-,9³8þ©Ò Uøàœ®…áÉE¬ÆÁ*
-ÀåLbWÛ¦£ò >Û­R8ˆjd0’E1È«OJ€Duø _’•#‡}˜3M||žK»œ+nEx¡Â‚>ç…œGÚHú¬7ÖÇažÉœ׈°™^vàܼbDÝÚ@ê]ú¿Õ³èoqýü·þš§KPª³v{-a’K´P2=¶¥Nа^­yòI–ý´¢ûãA²ð´Š vü`-«Ó”hæ` \zµþŠáœZsÝÏÅ¥c®z-hÞ
-Š‡J
-ÁM²±oJ˜F 1Œ-ÿùÒ·þ¸²¥¨
-v9În>3‰ ànÿÌ?b][—ÖÚó£Ú¨˜Ê¯æ³ ˆ/íû¬ àîë7£c¥ªS‰þtE^ƒÇ£Hór‰¦•þ|StÇ"Wlƈ}çR¾%²×¥úÓ;œ;/Ýòôwfò͸ayŠQøàuï Œ„ªÌz•ÇàOâ¤@I¾H ÷æÚ ê†¡nqÒÆ’
-H•ÐÒÌW°æÍ!&/;boŠ›…²Wõr%ÌŠ”.ǽ*ø‚áÊ5"‚AÃ*VBCšøɲTˆê³m˜¢‡-9uø§Eˆn–½ŸÙaq(ªXëX*9dN_†FnŽÀ±¢cC/‡ †JXÓ0pRÈglH4h'võoÛfºÌŸDƒü”É$‹ÒR÷s€&>6)“ø0¹§Ö2 Q0jÂìÊ»S`Åõœœ½$ýŸð2IŽ#†à—¸ƒø“þvV…f8aŸ,Ô$±T%~TÉï©Í Y¦·„©#£U.ïhEE榨8'¼’5c?Ñ @ÁEd ‘T
-´EÔT?Šê4?—áQÐ;h †¼kßÿ4ôYû.$l0ÍpV.0¶±^ÆRêGj/A« I%&Çf A]LÛÉ)9Í'¤åw ÀÓ2 þÜ1‚‹EžJº¿ &~Éèž N:††±=šm.¼ã!à掣À 2­ni'bà“”Æ¦µ—EÉI뼉©ƒ´«Ókx,Ç $¶ø­ÀÈ6(¥M
-yåÉÏ‚¾…ÄQ`ÇàQ¬%õÛw(ü9÷€X^êæPúÌÐCÚ9_EÛoÞ4¤ÈqTQƒ"±5ïÃTQÁÜ!(l|SŠ·âUË ¾D%Fý‡6i£C¯‰xOÁ2  õse†^dµXŒ¹dT°9SGe*CKhbd5¥e>˜õ’Iœ‘¿Â¡â;üÿ4í&ñGt0Kü&”Iåì€iw¹WÛ!’j
-µ—`!çAz¬±ß-É×$e”jGû!ú’Žî)’´ÐˆP§yB¸U`UéÉIƒ‘ÉÂ=wž´{CƒørbYkêGÏw4g:¼† œ½Eþû=@›…2L+½^ô7` "Ò»ö¨–$
-LãÓþ 0
-H‰Œ—Án¤¹ „Ÿ`Þ¡Ï ¤!‰EƒÝã\ó‹äÏ1ïŸ/Üþ³‹·«%‘,‹¿‰Î§ôf«©«Å£ËŠgøÒ9´ Ÿ 6,\Vkmñöl±æ¦Òí@ºIô¦_<þü±1£ÏÞ§ ƒáž05éÓô3–Êêm´±¢Ïà±hþ€,ï¢][Çï?þÅeËž«·ñPç2U^£Eü: ÙZ—æk = %-ãl1ûxlH÷åMɇUìn¡+†ƒË-¾´æZÝC†Ü@2x@Ê ÒLã
-þó9@ù¬‘z:uˆÕ\fBHÇ̈B'¡nÈlÝTIÇu Yf1mºW-†ú$Œ)Vǘ·¥áj'‡î)”A¢KÆðÞÜúAß®â+(Y¾õ'Ï¥¦m•?~žÀe4UÔD¾ Ò§ÌIÐkÀ1y¼}
-WB ˆwR8›x̼ˆ6­-á¬qD0$ ƒú äÏ˱"<f@âûs Nö‡¹®¢{:‚Ršû¬6ij æ(žR•ÑIbRò÷w »ä¬'Oµ,ÞÐùmä k”xÎ)뀸jM…r½ß€Þ¾Ó9?Oƒõ§:´[nDuÓ‡¿¾
-4ØKJY-Ýä(‹‚‰ÎTåJ‚)‰šDaÒ£p9JúÞ–ÇêgßÚö”²‰Ž4ÿÊÿÒ+ÙPBûhC˜µx”Ù.7Ž:¦ˆ2¯W©>”G
-Í?ûÑ@ˆªå©eßݵæ±/ ›ZÙb²-VSDµs
-«Ö çD,È$Q
-áF¯‹à/cD^Î䤮jž,)“÷ç,+‘Àxäýk€00qA&_Eµh|L.R&f÷¹ `/@ü×}†o *u]õ
-ÊÍÆÓ‰0÷¯™3Zv ʺŠ6cçô v]ô’ Ȧæ’ƨ|Üe˜¹zÚ×¼-ÔGDÕé¥Þ7§¼æî)¨÷9œúND–Ê•E÷M€v2íב„o4Ó_=7b°~âüf)ýU•ô4÷Þj=¹Yo?ƒ˜ë}dàŒ9Îþy{Ý èí;oúÉÓûÇÜór4²M¦Êœ@ý3°Õ¨}{üûÔÊ=‹Óæ/Ž›<L ŒC²ž!ROf›lrö+èçÈ&æ»á×F¤#OÐçë^AoßyS†ØÿçßþCœÝÈÈØ“PÝýϜ՞1æ:ÂßD*ÂZË%•,©9,JNÝ\c»íb~åz€½1]§T… ám¢ë» iOr¤i^¥ºAŸ®û†Š…TVºs[nìŠìsÌžob^ðö,eîûã„®S:,ok0ã‰×Á{¯^•ÐÅ×iröš«@’Ž™Vz_jQ3æÛú¿‚6.óûÔÖË a`7¶+¬ã0ø¥º$#é!G¤À˜bϱn8ó¥
-t²å뜒?£–X—뢤Ýࣤã@¯†bôY!)Â{¹J@lSÌ(ÚÎF¬gvp6Î9ØÃsèñh@Ø'fK«u;\J(!é«ÌÐ)¬sïJ×UÂ*ŠOa«sPœAÝø¤‚¢ýq‘ ‹«
-lM9A›µ½£ÝAXH„æ„Yï7½‚–¦ÙB\c»Á„0iÒS"Ý‚³¡3“`ZŽgXG°õ@(µ§Œ¾í=¨VÇA’å$"ÚEyáWîz•?ì"ŒÑÌQA°è9ò¡`ŽåKV‘µ~©«²‘é—çâiÛdDð†ƒ™'7LG”ù-¹P‘w+t~ÏÎgPìœÓùõLoS¼Á`°Fß›
--‡·EQ†a‚L– ‚CÙXê˜Ünqäÿz02¸$n«†IãÊDèó‚°€åêõ-R°¹°¥1[|]7e9Yè¦EYOè•&i¬î…Bðg]ÈÞCúöŒ°æȧ¾_ô?çÌ…?Š=šs(=Õ‹ÚáÌ©Dãh“±¸]Ò²n@²×† ¿ö´MŽ¤îºŸ>)sP2Ý®«˜]´9î²UŽr¥„†féÁÌmõ„<î…Äâ©(’°
-Bßep&v8Äܘäl- ˜üñ¹©.¢9Xlòê"|.Kæ¹›®:GÚÎ$˜4F•ÑÏ(铑㢠d‰æ$- ‚ë*‚™};ñâ BÎi#=J9·|aÃÙuþËx™$‡q+AôºƒN 
-óZ[Ã+ùþÛÿ¨j‰$:¾ÃÞˆLr2`L{ƒPg«/Vc+êóçªÏ ˆI i†~•Î”H4ß £ &oÓùŽÎø æÒä£ OÚžú±Ä,MÕËÛÜ[̘ª\Þp¢åãhÈ<Js›3;Í„,=÷øц22ØÎô´
-ÊÓî§ô€Ô)\"ÿÕ3~Iš‡Èa„ñì°szµé‡ˆ†:öj¤ÔÅp<¼ý‘”q‘Y¡*¶“)V¼Ë5¤ìZaÓ²_ÉTí ØvD ×|[R@TŠÙ/R±ci. šI‰8Kï÷ ˆo1™ajkNy.,MeðDJlJé((VÎ]Šg’öd‹G{È}%ÀqãžRÿBøiXvS ¡G4³]G0fÊæ7‘K`ñ^ŽÇ‚m€ÿ­“Ñâ&æ“Ïi%;fޠ䥻£!J‚üÂ!2ï(¾a\"  Òȩ̈cwÆd¿%çÔÀýLw;¶qÀnÈ%l6K÷ò ¹¿Á1æ
-¶ÜÕ‘œ}a1œ1h…]ý­¡0% [±Á^B©1ÿN,¿ó-Þ1/t—ÓDÅ0Òu¿IÛ*×Þ£åò-òcÔõé'ãI˜®î7™ÚèøÒêƔт&eƒÂæŽJ†(Õ®†œ]ÄöCëºÕgt>Ï~gÉlÏÒ-´LKÏ2[ÓoÒ ŒQ¸yÜ-Ñ×sÄ0è·¼—<²)vPñ~HŒDÅš7Š¹Ëx$!ŒÈ»#Z<œ%"7An°ë÷ Aܸzß|˜ô¯€O¤ÿóÛWÈÚbV•v”ò~ß!òVxI¨Ë5k@.iÉJÞ
-Foi^Úc>zy ³É:¶i¯™`¢PEÎ §ñƒ¿€9iÛôs*/7&qÍ{B2ä?øÈésóbÇ­&œª_Õ²(Ÿ…Åc#©æóÚ!r"üÒj
-y<ö xñ–ýÔæâÁB+îõXHÞ‘hø@°Pøïiù h a$óÉëbB}^¾€5
-«Zíé¤"$춞¯ib2v±MÿàŠøOV¬5Ï ¼ ^-^bE7[kÊ |…Ä*|˜óK†U
-~œt2»O…?
-
-{ªNù âW‘ÆØÃ¥£ïç 3„Ž¦Zœc2͵Hnœñ°ü´Ü¿F)'Nm<ÚSYÏIkÁdˆ£=E‰h.o¿ä¤qˆ^‹[béð')¿Ë#1ýG/TÖv…Ùí,"+’}B¿‚â!6ÃYšK(ùaÄç0ã8NFü6…R°
-²”þ(
-GÉ9f¶«Ý§û2ÑìžÛKEŠ¤Äã9Mf¼Â½å½ÂÒ_yÙ1'𚨧1.q²8Xæ™Úe¥ŽP2œÌ 7Þ–?‡\š”r›­‹›³¹_Ÿ¸ªÚTkuØòóÛ?ºÌ(2÷ä½èî|¶œò•šœhw…^¡ðw[c´ßak>˜– ÁáÃú¸¾0Y&þƒóEóçñöcuR B«{Ìé
-s2³/ˆ„›m7vÛߥ^ð¹'F}™ 턽#ã°ä¸4õÚÏi| ;”‘U~£z ð÷Syµ„–S2É\D·õ&ÈŽ¼W©ÁA@­K*]k„¿AZà tì_ùA¢[2€¸ ‡0yØF½÷¸ sP<ËðñÂíB1
-·G1‡/ÃÃËõöC“…YJ؆¥ $˜‚=ƒ(qAý~ŽýPƒ0$(h@kˆ}B.ª“’þEý{Šä‡Û"§Š_z\+íLrŽƒÄœ2Ttç?L$£å^a
-Ìž%%%‡P—:%”±2¸\Lp“ôÅUT¥)­Ž‰–Ã(ß"êú'Óô`@o÷µ‚Ô5ÆLÖc>1û?ÐÃjP¤RR÷sªˆNÿéǨáR¨“fçI°<‡Û B=`dùZ(óç· èºš™G­m»Ö£ŒÿÔÚ‰8s\% ¿n·ý'̧ØûûdÄîÇa®Ï'>¿ø±“¶¢”z¥¨Ðg}E³YúÅеõ´â3#!}eËcx¾@ZVê‚·Ç7Ö—µëã‰2LoXª½”~zÁ+X,ßó¾$TŒvyúA:ÝBíY±%äûŸ«¾€>qÁòR^ ”·W}
-Ù¥wööª…¡„)rÁuÌ{uÖŽJÍz×Ý×/V§f™?Êo­Ä÷AÄÜzo9 X±Ì•Ý/18t/eÅ°eaŸ9:ñ}@í¡@X©yÌÄDŠlÉY1Èbv>û9}™ò»:_uè
-I½*ž¯ë¹ê3¨K€«¼r>F?xÛØüá88ÌŽaK}yøv‹å8ð×òGm5•·F’˜}4£î½*·W)›lÈv¯ü“Q¨ÏXTøöcdÅ ¶Ñü‹s‘…ƒ+°ŽJ–Ò¯_’Dò“ãðÖÖc.ƒöÝ0±l¦ òvš¤m2`TÙ·
-e7zß+?OtÂd'¥Îf6ÞiÉ=6š¡ÆÇ÷ñÜ #K˜É쟃ðB(ÈJ0NQ^ÄŸ˜¿)ó"&˜-›öÂ2F-éÊÃÚožȦã¬Îv­²ÈRM—NP4súåe’\Ç Ñè:ó°öVçðŠºÿÖ/ª–ø?à "ì°L%F 9°ŒûÛ-ªh"xf:Œ³˜ Ä|0I€ºÏ‘»©j÷°´¢)2F£³Â/pYyCêDí0›^Ä ÓѳÞnùŠxÅãÉ겶iûê¤ß­–W–ßÁ>P¿r|
-`~ÕgåB æh-t—úÂ
-ÈÊCxÈ´Ÿ#~A¶;[dçˆø+/Ëx(>Ô™UçVF?öêCÔó\$•-ñ`'Z•w ¦Ua¦ŠGeí$»iJ5<&œ"lŠÎчpå³Nå÷F/æêáêI¯ÐR[ª&Áz°ÒÁÕŠ_lÙ8zÄWˆK£[C9ž#‰Á)ëµìƒÇàØKS3a cãbÆ1E½cÌ~“:±…΀4îi‡ëÃ8™ì÷P™äW¢¢VJ~UÆd )16yr Tì9<û€=˜ò°ÓBŠ¨A¡¨ƒ”‡Äˆ —mCä!Cg”=â2¿°\…ÓB
-³”U‘êSšp•]}ýv4ëtHáÉCƒÿ4±mÜk%Gƒ2euf»DDcÎ/âZ«ímB{7DæÃ@¸n¹§è'É*R”j
-Rsƒo†êaë yñRÂU´FÀ'ò x
-bB“…ÍqG â50ra[áñ›)¹ºI”)¦yIK†W¢¿óyR/s4íž$†ä× /ÍŸábÉ/AƒïOáBZa#Ø%ÏñôéS¼¿¨Ì4ùL£c¸¤R„Ù]\ɱèbÖË6di ÃN)¸+xŒU¨ÏUZ3¾‰ÊØÃé6³4éS6®å´W®ÇŠ·¬¦þ鶼xF¼Ó·¬—XJÜüòàMyÇxbyí«iôö°<«aÅ‘P¡®(¬o½FÆ Œl¦u&î¢rÏòÒ6l"'»
-ׄ¿Š¤‚b$€ßã'¼ Xý”m¡)V!Eb&ä°qFön…ÛŽ,VM€±±žÎ1ìCå⠡䇓J!. æƒh4±áLú‘°ç29œœpŸÕ¯¢tWV40_+GËGõÚí*Œ1æ•ækñZrÐla½ ø‚Z0eÿ|û÷›Fè,'”žox}*Ê°äï¿6•„¢Ä¥å
-ýNwi,oÔ÷Á£Ý_À¢âÓƒ¸Y Ä/Zˆ?d[*A¡,Ž¤É„$+°!rQÄS vlØýÞÏ!7Ð,c1ÃÅüÅF`Ø2nclŽzý^»‰Æ ˜YÞÜ@H!û slM+ áœjö›ØI,FÄï/}Løº)O^EH»Â]QIS1Í ¾‚8‡ùbØÕÜ`Zæ‘ÊÃJ,å$¤&Ø»%Þ$µÒ0y¸JtѾ—’ÐjÚŠ'Ž‚AaÕú¼›%J8㹟0Dþš‡ïG©|¢E«_$ÓËÏú܉/ò.ŠßTø|ø*ó ~“½®Ë.
-#6‘âmûªÏÙM¿lì­ÈA)ЦÿˆÁ˜µž v“œuƒ ÛôGéh•÷¥8öþ\Åû˜
-%e†(å8üc"4Y•låX{‰$ý&$ƒU1ܪŠž >¾/ísТ\ÝÜó~ÐmCAP±u~ˆ—bWߦBúÓ Dø‘ñê0|ßÇp‡~FÚ‹T"Ö,p¥A ö!ñ 'Ⱥ
-»·äxÞq>'*~DÜ#â“ ²~ ÕêËB Bˆka¯^Ex„J°èfúâc buŠG16ÄÍ°¤•ÒK{yúÐy~o$9cJk¦~’ªf-úMØ‚Òä0—ûap Ž
-$×›`-F‹ñšìc˜7¦’m!°^Ð0<0ƒ=ŠÁÇKtü´m¹à·(ùUï  {1w%^ŽÑz`ÿ!·Ùn?ÙÝcQUÃXèãjúÚhØ÷ O‚¯ãq^ 2‹7“xÒWâASCq×íLû
-ÅnYâ@blØE¿Šö†9·W}é¸:† šïv
-ò‚ÿXëVo¶†m¿ïyÁ¨vhj£Dår RO¦‘Ø­ &iDþe7½™|]W¨}vêO5SëÿP)”ÈH3¤‚R锉Š¾0HÓÈNL}øLw—O³ Âfó7•v‰9Фˆí¥zsG'mJEo‘Yk•–(?鉂að™€"›Bb·t"POkL(¡’Ú­¦;g*¢üFȾ2s!fÇT=ER°õ° À6Y÷YG òÄî?+›Êe¦DÒdB!¢0Lì_LÎ ÄnRºËZâoç4-Z0JqŸGU” Hö1
-•¼ ¥©7ÆI²#Xöˆù°OVlE‚+÷9Ú¡¥Ü1:r
-Un—–$i3F¬›”¾.w„˜o¿¬“Úl‡¶±­tl…qvSÅ¥  -†ÝªËu—ÊŒ²#³fc<çF4ùç¦×µ·ìü˜ª¸}£¦‘Ì÷ŠS+À´ æ)ÍLÉ•q1ÁͨÏ‘gn:“AÒE”v5¶U°L 7É>ÒÍ5ƒÒNÇ4eoA›sÀú¢ñY Œë³:ýtX¡}1#N-|©ˆxÙIÝñKu·ð44 ªìaYE<@:ï‰C:C>9x
-’³’=l !ó3 ˜šA“ˆ´Ðp\RÆ‘ ¸xYF=GÜf»AþÒœýN/Ÿ@ÿ½šN‹MŽù나2ýP¢Çy@d:o& å«%>@}ʲK»nëdìQGOyÑxƒ<­«@D
-Ü-ã'>¹!zøkúÆxÃ}fR\iõikÄàGÆÏFŒŠ7*¯ƒM¿,Óº,q ÛN‘Q »0é˜+ý5ñx{šÚªƒŽ2L¥ÒÅ5¥3eÉÝÉ Æ‘Ó$±.‚’@¢­›¼ÂhóT˜r/1­_ÂÏCû*ìiºWWmMJX’L”5á,PÃgH—B—Kö¬‚F€8nȯY$3™yŸê™'é½õêÃgQGÿxóæëÄ;ƒì•= ‘åC;¼&lÕdåëÄ‚óêHמ°š÷Hç¬ë…OYïÓæ"# MÏ#Þ×!¯®¸„GO•…™$ÓNƒŽ«YC÷Ðø©9Œ’€‹‚Ž_äËØ«¨Xøz,HqåëlBø¨B1ÕŒÑî'GÁ0›°1磀xÁe³÷Ìè²·œÒœÙÌ* £'9G‹¢Wç«é êrkF?nMòaÎb~Iäb»#-)eš¯kéU[U7(œŸá.ˆ€y*¥â¾>5É„èÕ†ïy8o÷ ’'ïc›ÀÉÃŒ)§ÐüèæÑ3ONîØ,Û[è€âÍMÙä}«Bºâ„ˆ†ë1”·ÔgϪù­Ô1ÔÃùB­‰Ù`T|ºŽ~Rt2·Fj´ë:Ü‘©ÄøÏͽæÄcXý¶Öac}p¾Ý{å¢@ßEÔ¥ÌP¼È" ˜á÷׆ЅšJlfŒÏ`³LÛÍþ¬ìÙòe8
->I!)õS<
-‘@6Û|ÍàGŠB+À¹Üœ£ÏªgLjvÁùLqt9OÌtƒëž›)HXjáˆGøAµ8]uóÏQú\f5•f…+Å[@ÛUwŠ×^á$ƒ ?Ãì!Ç  Ò0lyoç 4š´s\ ]Ñ åoñóz²ØFÌûüý¤úß¿â×­¨rP’£ŸŒ¨èVEê)ŒÃŸ H1,¢Ì)íñ„¡
-s›4m7D ‰XQz4HàM‘dáP‚¿öVcðB˨Ø9õ÷­s¯ÃÕ¦˜‡ÃµZóƒfœDwCøB*BhL˜#NR˜©ÕwZ9Šæªn.†”×Æ­§/ßÒ¯&[ìÓñ™õÊ÷ Ñל?tÅÊ83³ã…ÏÅ@0]–;B©!s%íe°Ä*£ŸåÐ8 R BµÔ b[%0¸òí¶ÎªMSD´up ˜„%ˆë¥ò·šñ¢[Lš‚OÐÒV¾Œˆ,ŸXJ¶W,Â…ù#d
-áo±ö‰<Ko7öÙN½û(ð[íÿu: ã]º%}há|'†;ŸÄÑÕÇÓË÷¨ Ã{@X&‚Õvù+°
-j ¨Ä„‚#Ã_
-}–ì°Ôb[µTa&iIåqŽU“¥Ý&VÀ¬+
-ôڳѵ›úæ‚ £Ì|<[ì¾<Çâ4R²[5 PÑ{Ó§ú \ɆŒIo¶®›Aúêˆo¤7ó”?›fê§2'‚‘=˜R<:\ƒ3V”Z?*…æŠD—Cc’}«‡â`0F¶Á5åòuÒ-&‚D!C¦Xˆ£”a+eãPp‘é9Ý”òÄŽx¢!íe-¶³üjFÄÂ$†ÜÈ`l!C Ö¼ª1™ÊrhÝwc,Qw@Ñˈ80HaCNi_Žš!üÈ~´1˜Í3ɧDJ8 ¿
-wv:¾S&yðÐD–âïô|c/±èà™4 ƒùÐË…{雼ŠÃ Øæ3ƒAd†)}8v‚ýìƒÈIû Œ0Çgo @ˆ£j•0<!Àú:3¼Úi–ö5"ÚðYÕå£5×cñ­ø …½áiE¯IMiW{oÜ¢L1—<õ¨Zp‰rØC¡I ª5w¶ç ’¤Žm¨/JdN34 “m%g`×´1k
-XÙÉæ¸b2wæ‘|ʃIAOqo¼vz'±Â'N
-Z5ÙhÒÑ>ð,ãré(<ÈÙ·z€XG â'¤€å¼NݺÆ^~íça*£}ô5¬J¼]ªrœDœÉ#ÍKqÐ,f[!{Žq©p•—Ë© Òݼ½ZåŒp{µž_!fF+FÈÔyƒžÓd¥ñPîì?ù¨7 :·ÈgFгþß”Ò@÷1Ô"ÖƒþýÙ $sB¡ÝO"™¦œDE·¸[5ägŒdàÕ” aºs¢e39Ö¼× F×0ˆ3Ò9tè4C#!“Y£ZL‚%€²¶A°ÔŒÆw‡, ’Ð5¼*iªž”íäa”oƒ<Œu•d¼éÀ=Ö¼— DƒJ3û$1ò\U/A3`©ØGN»ÙôÕp€M8º-Èñ5΃Öçá6¦êâø·º—ܘ…‹T|Ë$³ƒã‰¾ñakâf~BÉüÚé ÒÐÁ+¤¯ÓY`—:&pÕTÊñN°6~…à¯Z¥"HYƒ*dIûYÌœáAЊnÕ»£Ù»=mEk!(X;´¡ýlUÔè`N¦¶Xü¦ÑJcÚƒãG™w|×Û3kd]>C;•’‚9gEY4žµð*ãôžÊ•è.¾*©9ËÛ³©Ž2¾¡4q•ñ"·q…ÇÏ´ñÓ$ŠùåÚ‰šD²Rý%:R4ûáÃ3ó¤ð.¦™*ðÖ;îuxÌ‚
-âL'3˜(~a[6š‘€H<ÅÞŠ—Nz©QÊÿ/“,Ënˆ®@{ÈÔaߌåaíBÓ¬ýO}ƒ
-ƒrܯ[QÇ7wl6›¤­þ©ؾÃÈ̓ӟ+Ði@ i‡Ê­Dãu‹†íoŒ+lÀ
- 9ø[ aBÊ€s­oK´Óâ šÍä«h°ZÉRΑ 7Ž-m~ÿÄÇ8¯2œ8äTREõÀ®^B`DsaéÚã*¾3î@š¿GÏÁ¢¹Y;P#_2×ÁœD8|Y¡óÅKpô‚”ä! Dé<Ë¿_Õ¡&ØgìÚ0Mò3ªÈDD^œLîÁ_L«X#p^½]Jü&-x¯ ÆÏ÷sÈôó+)‰È6¥„8öY­f‡qÒù„¯ïýÇ@ÈßëêÒ–¢ËÓè(n¬Ù9râ$FRœc&™¹ÉS2
-º½DL1¹X°9ÿu)z ½ŸV¼piÍ°ŽîpT…§ýÓ‘Èþsd‘ÓU1_4)éÅ…‡› 1åÜÿýp”J­­ž*mà#S|Uý'`ô¸¨*_àué…•då!<zòî)òÖpq$qS"Æ%>¢ô¸I|BÏßf¨
-½+Â쑾‡Ñ5ÿp”´ÉÚ¤æWÕrR
-)žh{<îL ¡`jTÇ|¿:뛪¿Pv\ÅvʺâÔú!‚"Û5ã&NÌ gcÃ×5 ’X£{EÐô ±¯å¹èÿz ·"¦eÛËvJÚdžˆÈ/+:|£õ;€WnS«Š6Úi,¿œO¤¿EÀ
-‘mÅ­´(x‰«ªòkT–j€I¢U•f§äòÁ@yžÒqËv +á]Y†mq)975NîÑæEoÎi0/D¤×Sòû'µ¬·ŠñKѼ®§±U)=78pýríÓ-/œòOµsèõ‰¡Z -¸³wëVR’¾‡O^Rຠَ¶r\¥tË“è²'ÚÊ"Bài-3 “í•-üAfäL;_%ÇÅGçâï<±²›*¬4,
-4=¾Ó+fbÛ`¯§„=gØ€”§Ä=S€ƒúçB58¤T_b “š‚Ø 7ñ 4ÝûKŽm-¯/iS¸†ØsÍ€¾`Á/E>ÌݱððæŒæü¦júÒ:diwwzSJ._ëk÷* Ð'ÄìƒC ÌS}¡äyسSvÞÁÚd1èïºÞÁö‡Xš¤ƒ }lø”‡ í6£êËobs †‰ÍÎëC Xûeü&†ŸDJ´Ð‹ˆ;`"#~~Óš2O´8ù‹‘_’›…Á®˜¤vóË~)q%ljy‹z-ºŠ}Ò&³e%ïz· òê"_ée\Ô™.>KÚß4%¿HS·SF†’ºø%XÐ7ä‹úq7A_›÷'§t ÕÇTŠ =NAoÈJþeE|îä·Ïo[IÖS“|Š—Ð ŒË,6¯‰ -)¦e;4&‚V ².Ìéé-$·±ü¾êÜ 'C#G³sØr$ÒþšØåʉ:ÅJ†Æµ$Ç%Ü™h[MÆUj6& Í@üf2’«tÈ€Š®tÂ^ç’CÛ BÒk/93d¹z?DŸð;üqÇMx¨
-@0.®Â0ÒÔÖ6ëŸJ9ô4YZ‘àsybKý»Øî’“šNM‰oIb˾}¾)‚‹\±l’Ís¡)[´ý2q‰Ë°DÝKXcè#4äÅ[ücW-…Ù±þÆR&›'1¡É@¼¶ÃïÛKȀ魧›=Å¥A<àoÔq@9í”NK  ëÙ?@½ÔgŒ‚—@g™
-þ[A0ÌèțƴW!ba¹/Ž˜qýª-chÏ]ÑN·¤ñ(ÚWc
-TlÀnœ©—¢ìšsIàŲøÊ®r¹¤/|6àÅmlÅy1^¼Ë*£³Uf^¹c½L*i‹h2·yÍ`
-Dâýƒ
-¾*‘#y§ïô0Þ“‰àZ((=. ŒPcz9xTä”ç©[ë5ÃGÎ|?0†™™A´Gx+M!Ð{Ãq¡p=à|Ø‚×5…¬ì‘'춹|ÖI"”©Ž!Ÿ(=Š·¬uÁ¢Ð[¡Dp§f6‘K‡«@ýh·lž“H“—Ó»ï0N
-/Y >žEØâñ¦ïDº(ÛD3èUüòâ*bˆ•ÕŽ«õW¹»®±¾š©ßš2ù7æ¡ãŸ]dãDX
-uü9úý8+1‘ƒSú{ÑäMIO@È¡
-$IL 7Ý<DHQ+È5ñu9Xeu˜/BÖÚìD‰T
-£;ßO#ÂSš³p¸·[aõñ%™iŸoÝMdEÀ:׽ǔ |çã³··ê2ØêŽå`¹_ß¼#ÎCÈ‘¾#‡’*žá €Ô4ÆÍgöóÌ<“3£<&(¥ÍŠR
-̤dÂè<^W0¤·|ó”T‚žô¾W/É<`Áõ ÿ+v‚QžP¦Ï 1¾» ötO¬#bΞê*Ž,Í­N/
-´¥;­Óm¥pζøNƒèK¶<%ëÒÏuâ~¸†FØCýˆ(³Ê÷ç",EáèÙw¢ 0G}'ÍN)d§y)ñAç;jÀ·uÈ(
-)[ ÕK$…GÉ„ðy;b®„[„*mæØŠ&
-MrÊ¡å3+Yß–’Á€õÅ'w‘§¯”#Š
-»×˜Acš—êqP! ,ñ…u0ÚY˜
-yWíEѺZZEK×+Æ£ j°ÛZg䔵å£=i~‰¹½ø¥<D 6y dݸú5WlŘ¾[ÑM*2H*¾UGA @“SaêyaÏüR"¨DÃÅÖæœoEBr•.ÊBc«gïÜ‹IÒþù‹vº.ÀÀŸ/E ©…ëqqï’¡ÜŽ@|—xyJŸJ&7)´JQ€y;M¤¨+Ñ•4ïsE Ó
-ó|Jä6åœÓðÃðL‚Y¡­Ø©‹cãdA£¬+ÈíÙUBØ…´¡4ó’“ü8³W‹—€ÿ_ØtˆygÑÇú?2ÍÂé!ßv)úô"r -ÕA}3œ
-–
-ÅÀ\S,w`üMÙzKµÚåªéh*‰>ÒØ=Ó›9], Å% ð“ƒ=s½4õ Â:=hÄs“ d„§k†Ô,ªÚ¼~1vÑ/¿Ö} <Yðd¸"?;Y¨iXÒ÷¤‚Þ«÷RéçRTUO¯À£Ôy˜Ð¿wx“9>‚~>½ÜÊ‚`/&‡ý§Æ¯ j¼à:$:ÔpˆL–`Vj"O¾sHÖâR3Ac¶ßz/À!Ý‚nnöó!ˆ+q¹¤…Q§¡«™°Þcš:Ke³˜+ˆ™À%™˜Ã"5Søä´s€Onˆw1S'E†F,,¦_†4/ÉŠ$˜¹IªàǪ§‚¿ñ¯M†Æ\×A‰ÈöZª)ã·Æ½º dà^D|ƒ1¤fÌ(­mÀÉt{”là
-¡5=ˆìZËû­)ÅBš˜‹
-‚òt„øÉ˺¢t[;„X*ð”‡HŸÏúD€Žì·a¸¸ `Ñí6tn85…q¸°¥«&N5ÑHQäÚj!CTò@M¹“§Â>QQ¤½CQSBrZ3î©`q¾{Ñ#¡Ã* ‚dßÔF ®‹†#²TèkJdgèv›,ÅFqg· ·Ê\íÖ‹˜qmwÌ]›¸$ÖëÕ¤x ä•;Cp™V¯"<¤’.1­qDPÎlCñ°¬Gr'‹ÉPgˆ×3ñ€ße€,H`")X·ôâUi÷Óì«Ùå—"1ƳžB,U&³Õh¯u‘Ƶl@›B¼R¡Î‡t "i‡ Z Þ$®8„øÖ½¬Ôû9ZVþÎOðÐùU‚úDw4¹Ãb©è&‹Ð
-~t]
-¹õ¤"Zþ[RÇ
-ÁMøÝB,Uc¨ÊÐÒÓ9Ð šÕÖ<ŠßÀ^õ¶Cø¤ :[w Ò™èZѯThþ°Ñÿ@ÏÑ&4`¯¢
-kNr.n° RÈÎÙL%²—홧›”Š¯}VO„âãòb
-
-4'jŸý©qŸÂ”©—Ñm>Q\
-ñ)ðÃx×£«H$™ÀÉ1äèßÁþ°±?JÐÐ2mKì$7‚ÚïÚ­¸±Ÿáˆ˜¥$Õ3A{Ä7Uý¯sBåõQ‚Ч¹ÊFÒÕ¾+]fÃòË ­çcuŽ&»´e$1ð*!؉¸ÊˆÓA%1ãŒsÝ! %·+I\´C֣ģmGtŠ‘§ñÊÔT¢L…ŠÃø1 Ð¥ôó
-©±U­»0hgDhϽ6èifg’žFîL­ØuÕS ƒ˜aÑÊnh˜Ð¶Ï¸&.9-$±ØSõlÝBKÍ.eìicxåVƲ¤ªñÔ¤=ÉÌ™ª à´ni ³sWÅJ·"Ç„rú;øó@@§ ¨ý:Täð®†OFžŸ¬4™i£ÌÇZ¾ÆÙ¬8™A¿¼>–}ŠºÀYm;§Èo&Ÿ¯ v€˜
-â©A5uW»D!”Îþy*æ•èn¶T™{Ð|ʱG=,µI˜oúŽµ{ˆj~›[ÈIØ‚h™IÑl}œn#%ž$ÖQýݽ¾
-ˆy`WQK¿
-˜$Aènifàæ’8 zº˜U¤2Š"šA9ôe%šõRV‡TÁvHõ3÷§YÓSPìSÓ
-†Có¥L$XvHN!
-ÀGt½ î3¡(RsC
-w®Zep’­wcÀfJ1]jAþÉb¤c GñB~K—+åTô#NëÊ4U;®ÓϘt¬_’ fl5oV
-ÔhH Ò þ V†²ÅaïFH…%$c92ôj8T‡ãà‹ §Xìæ–ï¹2CL»Œ•4ÃqÓB(/êy°èùHgQШ!Ž ø_Ùáôù’qETÅ>² !I›šZ4Qv©-ÁÒŒãå ï|ghÓ\ÐÛܨ
-5­ý§'â]´á̇Ý]½Ìà>3‚¤aAŸ$Q´>éd£3è·57Dp÷"té\B8€‘•7xc¡û݇ ÚÝ• •ÎAØb $>æ!'Ë\΀Åõò— 4'¡@¥`ŸAy¿0¨ÙË“40EoÝh“¿m›˜%å’63^&g*ýLn73@E‹{¥q.Ôi]BJ·îs
-W^­³
-¸Æ
-ˆùBC©R¯À°3…Þ¿OÍÔ<QïÝkЀ ‹jÎÜéOÕéhpp=Æan-É”ùþó&ˆçä±ëq
-aºäj ƒùƒ«¢dºrHMæ±–á¬iK²Ã-
-RÊøúŒ:DOÞϳƂ^/Ù–8$ÂK"Y>a‡h%jgÛº=”³)Näòv®ÂÐDoŸCË$ÓÙ¯¢^I‰Å3Õª¤r¨»W„‡ãWò T•Ìíd º8¨ÈMÇâ÷‚'Ù½Zw‡D$Üa›;¤#ãcg7šA““}F¹èkF_ƒ.V }4d˳(ô8A(, ÆfÏË2®¡²;dhÿÒ„â½®C¼ƒó[v’–ÐWµÁ£žÔ›CXG×&dݪ{Õ]Ub5*¥Þ„üÖ¥«¡õø’E^¼-¯zµÚ€\$Ðv3Kx«°€'7ñ¬*Gbv¦%ÞtŸ2ZéÚ>•Ö‚Àjƒ ¥ÊÁ¥«›¸/º³ÿr‡é ÂjBYé¢RHÄ6 ‚ìrFeç9±Wàp@<„ˈ°7 N·*†ff’˜K-_‚ Aî4ç>Fë€q ûÏ$
-oc ¬Ç"i0m`Óû•‚ }–0|á
- )Alñœƒýsd¦5wRQ¥üÝ!R1úB>êÎÜ: ¤«µ’¶s (mÂÒy |t-xZ_•g”¥(_GN1r÷úÓXiQcÚÈl«þö~0¢a{NýP10e¹§Y8Ìò‚l•=¦A•÷s"¥K+¤8¥ ó( ž‘­¶]€¿/Êý°k.mžr{xdwEè
- 
-ÊŒõØ÷9|]‡¢‡P(¼+2þ»…Mð 2•ÊÁË “Ö!‰‡á€Æàà³´ ¬óGlz·Ð5DoÙÇP~>-…lk]ÿ·ø^†~àS¸|œ#W±-U ßQµ¢`1ö-œ0®õÆ7ifŠ¦˜V½ò…¤ä¼[¼ö‘³˜š™¡øqÕ_ â:„<ˆ´ZßÎE×SB ßz¾i틹µEbK.qú†õC© 6¦ÌiîõÑ5cB'?ŸAÖŠ ~çï˜'ºtú$jx,Ìl
-Ôr
-H‰Œ—MŽ9„Oà;ÔæA”H‰\»—¾…YUÝ;SÊjW¦r\hh§ãIü CuÔ®!oÿiC^¦Òd´Ò›ØÛ¯¢}¼¢Ei5ZmömPy™›ÕRjñ¨oï r¾õV¼H­ºýúñß„õWW3é5bQÙ˪j‘QBÔß>d¯è!_Ìôk */ªµT‚)c‚n×]@ï߉i…^_UŠÕa±`2ø•ªÚ˜o DGé¸ÞH­VŠ¹‡uÒWX‰VŠú µèCF.M}¼ýž7µ^8³õVOP)1l Ó¡óí-¼´&Ý&dtb£¡ÒÅ'¤þU‚Öõ d]54¢V§"OǸl9õ§`¢v¯ƒô)§ö*¥…×3˜ke@hv¯[ŸÇÜë»üÑ¥óž+„ÀzuˆßZ¼mB±WÍÉarÛ%d/5)UøRGœ•»Ô%‰åc³©-€î]àiÓºoѲ.º´zwÎ…0›X¾ÒnŸÑ…½»ÂÜfàZÝÿ?I?縕×ð¹µViAùØ‚vú%¯æ脵ø6¨¾
-ìÔj(ìûµ½î[ }%Gä….¿?`z@JYº··â„ãFÏz¬‘+ŽLÉ'´ÞÕãD €Øÿ’½¼B*L/qÎÔhRƒÎ{;Ú.P]Ðm¸n‹`ü}Xãs>!"Þ·S ¿@~ÏÖ2ÄH’>>SÃ…8…$©W„õ·]€t²!>i5©±]äú}EÓz®>†ô›Q9Ш±ÆJÜ«Z™¿± ᤠ\fuVyBÆHáó”?!«Â=eÌÌÅëÓ9:º@6¦ñ ™.µB­Ç„Àƒ º& é£Õª„p^ý›‚\Öà4X£•¡î6ÏaÊFѵ‡SiµYG#›>Aþ$èÏ;̆é/ƒn!•ú·A»é»]÷-зüM6æ27g·@ÄIÏ CÀJ2¨~¨ËÔKžž¢~´-!Õ»£c½­ëzD3IC! âœ0×*1!c Š[«¶£³ )t’ið r¶B”u ”*ø°2Ë
-ÈW|Zý\‘7}¿ƒvåÁÊ9¢¦½?ÖðÚ(ü_¥ûPø·Ú^GLLÇ8J‰ÛÎ:÷ )u‰ü“v;ܯáW…ï%—©ObÂ|B[„£Nðˆ7 6ßIpœâ­¯RyÆÐm ”‘¹ðQf땾:ÝÀ‹6k”¡¦êÊ¡@¬"_—Pd9®âm—Ñ· Âsê¼:¥…‘ª|Œðd± QÃÈû|™$q’¹F­¿cÈPŨë~öëŠA-=¢Çˆ¾¬`jÁ_õÑÃ÷Ãl˜Tƒ«¼—n4–„ ¨l?Kb Ã’ƒ^ɱÚÛ¬bÅx3”SéòyI„Xÿá7…âñ£Ø@ÖU5ušQU}:æÒï{0WÚìrº‘ï^›+ƒï¾ÏÁ—6ýþƬäT•9UœÕA3ªMq9îc ª?9Ò³7Ûn Ac, çe‰_‡ÿlÒ iÇ#²©žÌkn7Ô¿Êgàƒ÷[nA?½
-†SƒTÅW/ Ö‰þìœÈ®ë;ÁØfγ"SØž—›åÝŒÉéÀR1,ìÖE÷ž‰7’[Y‘BÇ©ÔLaÍ0#<¨ Èi ¾,ÊC-Ù%,d¶¶%fÉó¢ÍĶ)ÒñÙjUaû¶Î³^~þ؃¾´þ} âRØò\NÏW^háA‚é"¶œiV7`iJg>5ï§ÂÑÑÜ/ÎÔñófŦ­}‚,Iú9³Ù«Àù¥÷߯]Â?Âœ¹Õü9%¹#á‘)ôý9Ëqžv<¹ÎX0ò…¼‘ï Ñ| ôTÒ®H£8A˜²ERä‹Û{Lg”B„ çˆúqLL~ø嵈(Az¶Ž›oûÁÃan‚‚,ÁøÛt®¼ z LÒfG|LŠ4>­ã}‘Ú9é°ãk­!‹x4o1!¬ÒqÒÂÕ‰bû¯ÉÊ÷ÏðŸûhFÇ2æ1ÈéÈ4F[%ÄäbéyŸzœ6sÍý¹b©#ƒñåVlïnÐûÑÔ¢)Þ±Ö£ñ¤2®ŒÙ Ô„ç6|H<²–‹Í !%©7h)ö™9
-žf™9ö?ÆË$9Žd¢'è;Ô h1knu m©ûoÿóEf"õ)µÌšETLpøÐO¶É(ÙóÜî¿;NvÞñÞø1C`ùaðÆLûRµÀÁHÑžUOœ±ø´Dá*F»SÄçTz™õ‰6¢ˆû‰µ‡…CZ.¶¿÷:Ì]—˯§„¾Ô,+7ŸÜK€{Ú‹x€Ó¼ÿç}c¸·¦TÇvbÆ^Þ‘éo-K±/ͽºr(÷¢¿*Ÿ7þö€Q„Ç@
-I[õnM¸kÈ­™žñÇ( ¦•þ´ŽdΚ4Cvš@ˆãçÄ?ƒ(ƒG$JÓv­àO˜E ÆaÚ6³*gh“ßæÔ¯úòæ…ÄÕ‰±'Óõòæ.I.°ñ¤CÂÌÎë
-]6»ÈPPM{²íÁsg†èf(JÔ˜wux"¯× ´
-–h§¥iä_Ò•èˆIßÑŽoóM%ÿd¬~ý•@£?Œ 6Ú±vQOþ`½îz,w”¢\áhÓµ|y?—!´E
-ƒ,ûÓ‚ÒŠªÀ‰‹¹_Èí±¨ VßGs¾Øャ‡s
-{$xt½9cU9jø`ÁÆÝ6Z¼«4l@ADÂEòæÕ<ŸSt±#>eü¨22v5.nEdð©¶#Â}·‚O4%9çãT¿gJ
-ç(Ÿ÷ä|nEõܶóœÏÿ;“F†WZ†X Éá8ã?»(‹®¥’|ûLI]¦R’wÌ(A‚‡Wuî|&r7¤f ¯äªÆ©v( ¨³OZiÃü3ÚÇlÑ—û^‡œØÙ¹¥vÌ1GéA0µ ¤G6V„0‹û¢j<·”7vÇaËŒL§èÊ7¬}±C+ëо¹ïUÞÈ=
-€‡:„Ösõ›ª
-Ã^yÅ!°öÊØy}s¦ƒ¡ïVÝkè·’µ–õÂÌ¢¿‘‰;Lì]<ªT¸ ì4‰¨ï¬SÃí´VìVº+£1sdâ;Ö„ï–ˆ 59G­áDwlœw W¨Y ¦Cn 8!”h§ÑwC":)ÕáÌânè­ˆÀ¦žWÜD‰ãå™·¨Ä<ZQBmîգ숯•Ï+_žP{óÎøÍR¶=º5"‚7:LZ™0•ÛÐK‰a§BNèPŽ;Þ:ð!Ô›€û9Ü%Á4ñÏ`ÊPg\_9Ä¢Lš3‚Ùß[ îed±ù&»†Lµž_ÞÌ$}€%%Î1a/oö¤üCˆ1aŒÞÿó¦øRôaEe*‰ô.¢MXÉ&OÕöÍaë ™/Õγš‰T¥šËMôN‘qÕ„ù÷‘ùCLŠ–ÿ¢ŽzxÖ¸—Ál¢¾@·Gó{‰W59n;/%†œÃÄéõ–üe’ ›äYS:m
-wN—+òz=ð@ÀÄ»; ´…0ñK7·¢²ˆ’T×Õ ½£³t±ý‹’ƒÀß­%Jpê`«h+ÎÔñhã“Á-ë„rX{ÑmûãåŽÇÑxZÁþ Æ~¡wáTÚún‘àØšf[Ê, j’@¡>ؤXÞS8©Þ¿Õsúƒ·ÿ8.Žw,üwlÇ™~¬¢X+î»OITïõ¶hÇý‹&ý)A3¾\0(›®×G_€ÌZôê'!3{A“z[ŸÁüÎUþ•ÃYÅÉ.¾PúÕd «­‘F$¯Âg`´æŽ«Â„ÁÖ<lŠ~ÝqR€¸KÅW=èÓÁ|ÛÔÔ{:Ò§jáò0²Úô‘œÝ É
-ÞCš—Ä„K2H/xi]Ëgƒ|-üƒU…Rÿ‹N»€°Á'`Êžéöݬþ=sÁ#lx´š:@çºã È¶%U9ß|Tí9³M*]…%€¸ì\JhO\pâ®Úµ³Íô{¼áÁ" E†j‰vãÚŒ¨­XAćÔñ1ócT‹¤´§cIž†Œ!½LxœŠr—RhðÞsò×¢ÁJ¬Ófy ªQäGÙ¿BÞávÑVV–¢·_þ‚id²„ 
-¥ÃŽù(¤ð²½Cl9føqÅ ÚÞý ä¸s\O{åÛ~)ê ,RÐÛ~âoÁ©@#Ãlé Œ—"ô€j¦Ž†‹ ­ÚY/D˜(ÛM~ì7z1—0am[OGÁ}›)u9J/‚¡5矠›ïŸÃO2¸ bÃn„èB.ò÷¨Š«r€‹ç)\€5òä´°±McOå
-‹ìÿ4lµùQ”b•H‘¼³ºeùÊ¿þ˜Îëô‰j?ðïDZˆàW;œ¤Ê·Y’È…p$‚å¯C•aRIeë«}€*X†m¢ÿPOˆ4Æ}u”Ñê@z¯=AU.>ë«tÌí¼öí!ÖßÈ\\Kõ­‹°ép¼¡€ˆ–'¼¹ËÎ/o:cžNÔmô¥qEa‹u/ :}»(>*Kñ‘º«%Æ/UEÀÔï‹¢¿T¾ThïaUŠEÙâÙÿÐC¢ö
-',âº
-/°^hðuP|˜ˆà˜ssI RÅYµ†»Óñ<Pafp‚š®A
-öÁFðD©<`,×wÀþP€hÏd:¤9&W7VI¤}„к߆ï!@ £¹R€z÷ôH~\ß †!`çÊ9eLs}(¨ƒ¹Ë ´ÍðךOÁu½ˆîËBG®énnÑ4Qa¨xæä#2¦Èl;´Ã®úI8_l<ë¸×·²ˆ:Â_ý„•¿! ŽæxC=í÷†0⎵çqþNž9 úcYý;Õ0A¨Eˆ {¬"3Kú3ó ³Þ”§ÔZsH€$Â!T @ww2äje}‡Î”ÐZNÞbL ÂõÌcš¤Œ‰m3÷;ÌŸž‚$¹äCÑûM–žAq]öí†t«ö¥8°22+×îõðŠÜ`j×dç-&q84úg`s¬hç1¾Ý°€d/·cLº3’‹§ùRâGQ@&L.ä×Ï€›¡H[”½„]‚:ô×Þœ$蔌\ó“豎WŠô¢2ÎQúºM9¢ž¡’ÜÝ{Ä -–’ÿõGÆ|8½)ùäÛ÷Q¯ENÀâ
-IåÎ)«Ê·
-¶dÅx˜—#\DÀ«¤@ÔYÛ,Ûñ¤=gIiîIGÑ’à|ÍÝXCÀ–ÚÞ*^Çú4Á!ÐsÈ Ž›’¡?Adç']jx‹Ø¼)Ù¬ÏL+2l91$R”•iP
-ìÏ€ðbq—°§R2iŸÄ€°èœ½¦ð( B›«o^­fš"â@V½³¬`‚ÜÂ87Ö¾0¾gXôÛ@iiêCð’,#cpôw«P[„ÝÊSa0@½Æ}y5aƒpA+‹„‡”é/!zìi`A¢ÚZ†C H’Ê…CranÇF,ò¥ä}—è§FÕŽN4+£d£íl̵´Üw“lp!߶.’I°·¡ïTÙà#^ÝÀí³ÃEO ë~›Áv3=§9ûÅ„$!¿È93†yžð —gœÜùî3àµίoÃ6hœ‹òœ“¾¨„•¶ê%¸|4.¯Ôç~3Ì~ÀGøËÁ4 *eeß΄#'…M]ó+£úS~v¦ÊЕ[uÕpä~YÚÐ#¦Lj}²ÿg ”_‘IqöGŠ6«u/¡Ëc6d—s¢ØVœÏ§FÆÞ&:”-¯¨ý£Ì=§öÆcÁ`½oWÆ«*‡½„‡(L—Vt
-/Àï#mý¹Îu®”žLú©è×M'…ù8vb^E¬õÈŠ±[ivž<k×þQbzG°ÛlòOrÔì——( ä¿í þ6Š¿×QMÙþ¢ÎÛCC˜)Ž”à±ÙH¸Ún†õÅÌ…Ž°Ñ ¥€¦,-ya1‡œJâáe;R&Òcc9ó&^!1QX%¸9:Oäi~݃Ҡ$·Þ_tG”X$;Ã,Á½£ñâ)_³"{!Ç–×4.%™ñ°‹CŠBþüq."d*ÒàE@Þû±è
-F® õih|ßaO¤ÁíÑ èÝÑæ 1CwWŽÈÓ¾ZY„¸WãÔð¨V<Èmó%ä¯J–W«GW~ýÁÜ dxÆÎV’èî>ƒÁ)0à0¿
-öYçWY L†Ç|‹_’|Úm5„¶@y`›Á¿\ð¬À”4ƯØë–œ„
-:ÅhÊú `Œ›Ëœ¥K;>Ä,ql‡Ç„Ú†.Ý}·†M©<k[4xˆ¶Þœw¢0àì÷¥Wø$Í<í“x{1¯¯8t7]¯ï‹AÂüX˜ýL‰ ]hùˆ?:lj Z2j{â¢"¬6P¡¸E»j&°½x_Epã*s÷rý”Ä–ü±¿+ëe]Tt&À¯ˆt*2=x(8ÒC6Ú7 ár%Ùù¡â0È6(3ÈîYŸ€¿Oì®ìò¸Ù`+•àÄ‚;&mpìZ;G<B×4ºÅ–¡@$^–ÔKPFZÝÿLÞ•µÂ£:Ù¾”Є‘âÓmí[Är0¯o½Äµ÷›"v$ »_9Šëÿg¼l²ëÊq¼‚ìÁ+ÈÑ/%ÓÃÚE¦Îþ§ýA¢|â'ݪwº¾’H
-…áoˆ­c n™¢o­÷Xt47®Ú{°pBÅ‚˜²µ;9}ƒøQ´[±€ù«OßI\g¾>¤¸Å?©LÅ‘NMö“ù®?‚ð^œÔZ£&Zf>&™X(«]ÀU´ A#…€ÕÑö$PžÖÆq‚nMçŠûÖ¶ºì¿A6Dá¸"|¾÷
-ú|gFÿY£¦(À;ö†Ù€¡hG`/]£|€"‹.0f9ºëD¹åﲋ·A´Ÿÿ‡@J˜ÿÏõ¸·@¨
-Œ2Œšö!ø"O–”¹D7m¶=šÖÇùr„_¿§5Û›bhxr«¶XgzCú =_ ¿WÙ9ÔV<®=}­®XOîuØ߆qëãE£dJ­Ð c?ý>šT¤ÍqÒ¤œÜÑß•‘RéóxHÞµÓ´Väqx•)óB( ö"šDó¹c.ÊèÃœ,Nθ`æ_á/²VRIÝG1%Ô“6‘²ˆxXc²º¾C^!FÂϦ’‰ðj«}‚üÍÑ_?n˜“ì 5C‰ÁÀ˜Ææº àqÜ[ Q¸× h
- YögJJ4èsµË¤™¬­´s8 dìr,µè@
-”ý}
-ó%½.´_nD§¡Ü’@x&ìi\|ää÷ 2ßbÂ;¯+Š £`«&KŠ~#%J=rŒ‚À]™‘ënˆ‘ÏK
-²BD* 7ißÇ +îèò‚ Ö¤NíµÃÅÑ’ÃÈûè¨,¡CŒýô ³Mæõ.ò†©xWëê^NÊÃ×íºÊ]óu•›´h´/âØ=^¿£ä5©7³Pö]à‘Ö6dÜIš4ÉAë¥oi_Ñ^[ß:
-²—ó!eßµé(³¦¤§5ØÖ¦uc
-\¨
-G“áÚÇ}ò¸ºEcá‚’û¤ϵƒî¼,@½!k—ŒÀëöãÊÜ!*:ˆMƒ8#êëN™ Ó·´³(#;&„h°éƒ8}ÇŸ¿óÒM6¤HFõãÃWH
-.0gq«E’~"³c!æ‹ÿ«~Žd™nªŸ'×OÐ%‘t‚| ›)ßÛSl9Aç;+—L¬þ èûЃ*®êÙÊæü*8ƒI¡Ì×&ƒuÔ½ouÀZÕgä—WuR/hS…r±ç•SKƒ‹ÁÅöðˆ±ö¬p/qÞ2K¬ããF0žžÜ7(áÿ~‡…NÖŸRiIW-—†ü¹‚0f~_ø3W­IÑ4-’ZS³·A·®ǽ
-*\”®µñÄÈex‚¢‚}LôhR
-O á'7×Ó%° Ñ#— Yob©rÊ(½]ÅFk«™$|*ƒe0MÞ9Z¯Ê‡@`j«Ý9 ¢CÜŽŽµ˜l!ÈêU7ƒ#ˆŸÔ:%D·˜¿§ï ŸLlÜßáEø¿\pòÙ°R™iU
-«BqˆÌÈA¦p`CqÜ'#I'` —Ôžd¯/“昨½iµÉÐãaÓô=)uŽŸ1Iû$XF $` ÷zu+ ÎÕ§÷ÅY‰p?*½RTŸ*Ô¸‘X¸æ²IAÚÐëõ;Rl´° ‹ÐËoÓÅF108d0$`îýQ0_à·¾MfH‚VT/–“µµ™Ù['upÔ…¥«Äèw‘s[Óp0ÊòU.<RŽ8+
-H‘Èç† e9²[ô˜d µc2¡˜?›¾Tæ®DIÿg¼ÜÑäºu ¼‚»­@à+Ö gNGûOý¶­iYч$P¨ÇP»áQóuÑÚÑ&([>=Ñ!$%:(åÕa¥PüáЋ–Œ}&Aø›´vh 6ª!°-€BörÙÃ0)‰µã÷x iÑÓgx\¤—±d_ªq‰‚)ö%v®Œß}-8i["ÿh¢
-à)[èæ›Éá¸ãçn2ÿˬþ§ýöu±Ch°
-E+9¢¬°l ¹(¡²¢&tÛŸEÇ+R!%špQ<5€¶£ì=W ztG>ÎŒW‘1Q"B»ó:6—©°‰ËÛÊ•;<?})úx(Jê)3e·²Cž"E>¶fhº“±±x‡±×o°ݼ<ÄŽLXš*câ%&ÛLê,ãbÿò“$®¸f”öh,cAøB×ÆñPfFÊ'õû‰ éLØ*._8,°.j)×;Ñ1&™ÏCtÂ#R¢ BŸ¸œsX—ÞAÄ„<¢?ŸË%˜P•/¬°K´U@?ëc28¬`¹–Tö’EÔ‰PŽŽK ©Pƒ!•~^‹Þ‘È•E†E
-t‚Á /Œ:ºŽFš‰ëe_¨’vòìd!mî [ÕÿáJâAÂ>“
-C°—Né]ÆÜü3C&SJjå*\L*¡èdXd=èE…dÆ;Ñ´úôþ£ÇóÒQ¾H Æ,(‚¿»"†«kæåÕG¹ª±äøWV^ÎA•P‰,/ª~4RH tá=®ø£ÅSáløÀKRؽž†͆b–xkì¾&Ë™ 3‚O&["Êñ.òDÞK›O ø["ý—C˜þæè ÞjlK§ã–\jÑ
- yÆaõÃpÃÐÛP"w‰aj>±Ê2ÉÕVüÚ
-À6¼.9n,!Ö‹¸¼x¼ÒâŸÑÑa¶%2W†N‘‡ÚK²‡|8jBxé9ê­k,_Qœš›TXäU @4Ðíð©`»$&F¤^D3ñ™²Û9‡SI[K6ðÀ†ÄÞ“øŽ(¸ÊÔyßøÇ+¿0ÒŽÏ uÌuY²ŸQ„”Š?L¡ÍôðpóUJ`Œáæ.A#Ác‘¦c¢zÄDKâR4Kæê/¸C.Ê­óeð¿Sd—ÆŒÍÂÀ(´¨]í†ð…ts½5æƒkÙ〳d\ÒݵP¢“ɯ¿J« ‘ö£ä?v‚)ý c[YÛ˜úQl$¿˜zV;/Fêòœ[”º6’T†7;KŒö”†Ûéc{ÇK…F
-Þ¨KƲ§¬
-Æÿ Í}z q¢0]0^bܽ§ÔÃæ î4X¾«ºüÕï†YlüŇàŠ>¡3ó’ ]‚AŒX î"æ!lpμ•<1Ó/E×"Tˆ é¼ÚóùP„ù•9àñÎL”$åîÕB H䱸‚´ ÈŒƒÚÐZp„7ì¹c~Eÿž*$[^‚›`º%–õ‡Ï£¤`vÙbo ö^Χ|)‰A IÌ óÍž¾#Qgù«åãC$~¥{Y,7%%)ÎÚ´:ÇkcrÂU akˆIÙÓaÑÄíÕ=2¬41Ú½¢›8]*È7~ľ€ˆdZº}>éŸ(üµz€ÆarZ¼
-–âh~9ìÊ~ ´¿ZÃ匨|òÙ*­WXî&ùå¬VÏ«È”ZWŒP¸¥Yh¸}è˜}ƒ•G˜{<!ÏòCþxÌ–¶ºKAÆòyVŠü†,áúÝÿ7ß^KZáÿ/·)ï‚xÙý;P>¶Ûp`ø‡û±©H§—ÈõAß,x5dž­Ï!hCÈ7µ|¥v‰>»…Ä b+!Œ©H`ˇ”%è9ŸIÒMìMåÐÍÿÝŠä„Š¾àMÃ
-^Š$6‹±ËmÄaØx>/«RfÛ-Ãë3®Ìöc¨±rAèà¹Éòäå\çkÍ/Âúù'ê!S`á­ (§Æš„Sý©ÅETåië1J ªeÊp‹}¼Ï¼4zib÷uƒØ*d4€¼˜ïþŒ+zPF¹æG•˜Ì »½þf¼L’ìÈq zÝ០ó°ÎZêÚJ÷ßÖsL“"Ò¯.Y›²$pø0òã½È ù#à!D“R»ÈÉ^Ñ%?Ò¡)u‡SLÍoù‘H £U—÷yéC,n@ ÅO·aÜ£Ÿ.‡ƒybJõ)A*ì% ,¦Ñ-Z%Œ¦`›q–ÑL0Má.Åð”!¡œ&1"¼gH`ɵ*£ùò†w/CÞŠ¼¡‡m
-1ª€ö´H½’Fsu¹ËYÀì̹Šrr
-Ž>ÆmY(*Ê\7£ƒ¿/¿>¶¥$«¥™ì½Øë•Šè9Q°üüæ-Ó
-¥d´z/‚ü4s,9^Þ“eÖ.£€šûéM±._Z¨¤Ïê˜_Þ nòu¨#ƒøDñ¾œ®µIð· iJIŒÙ,% ¦øŠHp³< ‡6© ¾Û¼äK?ºø ·¹{ïÛî]ðó›·ÅŽLê³ðºL²©cjs{\û¬*ëÓ+ÎÚÎYÔ"Ž.792©&7ª0þãè’žzḠZRœnºÓ‰RAgŒeçð=áR?¯O*d¶lÈAˆy¿bDuRÒ)~—v`Ø­H‘¯´³]ż±Û|y³a(ùÉ9]¶È« ‚)ô-“^æ? ¥ðÓ=Ï[QYTI‘¡?—u,3®§ìì
-dÙJpô. V¢«xSÇ/ä·x%{1¸ãbVI/owåû—‚~Jh_ÿéÂåà¦"`Ý’ÐdÐ
-³q¿Ü¢òÁœÑ ¾q¬«+rȨGIÐn@PPÑ@JÚ%K0&ö¨(óC¬“}>Ûµ¨1X‡hCæ†Â•ÎÈ
-÷Øq½Ñl Ž\T™À´KŠLXÄïAú£d]ÄWs´A»ŸÎ™rXëqdŸ¼—ð¾Cd¤Ú
-2Ôb|)Öðõµt§ÄºŒà"¨âLýzNÑ +› 'ÚkȤ0v. _Èdóù²ü UJËÐv0õ¥L
-ìÔ<N¾Qÿt]6Šo è´Z†Ÿ’à9èTÇx [PJÑ°íñá˜¤Ô Ÿ²ÛñD¿Kغ¡Â [’&K·†¶àøŽobh‘ V˜ý
-ÂõéãÄ”Ð@Ö:S„Ü$™¯‰Oä>i…ùpþ1Ó\Q xqü%þí¢€¢R>á…ß´ êËeõV4”‹"–=rÕ÷ýÜxb¹™Þ.ò²’S„†Adq7ˆ•\45æ®@ÿõ]‚5§‰M{ú”•”
-ƒ–$…scâ}7sÄ@†½.©M§äÇF7´Oç0-Á©Ûk"„È°ã.‘Ìܾ<Æo¦Ðn‚ÜÙ®K§9JW@¡ÝKͺhœX×ÚÊÚn´ËÊt2â1—ŽÒ ¶;l
-»9C/ãƒÅÆ$éAïÖ\öïç;Kj»Ü?J¥kÈ„õ&ð4õ[ÕÚÞe§¨q1xÂ
-¿vIÂ7CWuï)%S $¾
--«xµõ¥íõ‡ Ò³ÁS„,Mrkr€iq½(J87Á ¸@„qœŠÎS”òXº]BØ :mí¿”¬›¶õ€€#3òÏAÇÑuœ¾L¨û*hsÒJäøôMMÉÃR õ‡Þ´åÆßÅï°SòǤÎU×"PPrãS¹ì忤ÂÌ<¼æòðU ·)ˆF¹)»êÖ4½ˆ»3o~ù-Æ!€#âi&õ{…Aâ6ðÛ)7Ð\Ÿâ€ïþIˆæ!ËÒ‘—¿
-¸t˜
-@G†Ad´Š‰,Êv’˜6ÜêÊ 8S¶ÈŽQBcsQßçTÈ&²F}ÓúôÙSþ´-ruÅRì‰Ä©°›B¸>Cd˜-+R²ÇLLø¬‘æ´—7J -ûÛ·ÈÝŠ.²Ë›B¤ æଳ«rRcoŸ…é׎ÖæÙðÝ?v>³ä1x&Ü>ç;EêùéY‰bæ´…ÁÌlòÝãÃ?%hh—d|Óæ3»u¹|ÐQ> èƒÍÎ#Ä2”Dںϑ©j˜^Úl¸€‰ù W•§’ß1úùÍ«ñÀ^dhC×4æãÚÜŠ¼¼]÷VÑ…üåºÁ(¥±o©(˜·«ƒ§ƒÛM0™Ý`›ÀË(Ö„X_©EZá!CÅP.™ùœCí+.µ]iåßnûõgÁ}O ŸT~ÚswIÀ9¤NÖä ó1Ñ âÄÆv kjfi lCñh õZãQ=™ׇ_aÌ·‹¼qÉ *éágüKÑOâdð_k€­Þ#%Á=$]d M'Óœ‰Ë¨»ÉœILˆÌ¦»éKs`D˜¨¸á‡8“ ‡SÀ5=žSe¿ØgøÎJƬm$Úf–¸øòÄ'N„蜫þŽÀÔ×”fM¢Ø캆=K/¸nüä×.bëؽ8ÇèNÑ*a‰Ú JÍêÇ+J8
-ÍõxVöw2xäYÙ«ÞøDW¥ÖÐr­Òð³úò™, /és Ÿ‚’ôiEï$ß°_ÙfšÊÔÁǘ4^­ýØîŸnLÜÅÿõ]¤XÏÎJ­YÜKòrKü
-Îñó›_ó³ŠÂ]ïkð÷"ŠŠd‹}y‚]~&þŒöä$V9ld6iâE<Ÿ~4DUBPJ j [A<[$˜…â±7x¨©"ÖÊÈÍ'*¯ÕV„Zm&­7"ö?ãerW’Ä` ÆY /÷å¬9Žs¥ü¿ö\ªY/#¥ê¾"^n
-ʹó³#L¾!•Ð ¢$Œ-Ë_ŠIôCBxÃø»¶)øXði®C“H›ÝJÇdF}¤Ôïû‚tNªs)u²ˆÁ…(XUG™ëˆ;4,½ì­P90ô¸¤0Ò)aÒ‹GJC|çaoE½õð*òlt„¶@›ý’Ë
-¹°Eïö2Ø6]ÎwL€&y⦇Ᾰêf†o¤¼ßïûè°¾#ÄÔU[s
- A‚™Új‰D‡#!¤…zÁ?jé¯cA°
-²B(+þŒÐCq+VUˆ8ÎuòDRåWTë6²Y)<¦”ö
-SûDŒ)¶ôµì†‹—Ö[œu8@F@
-£µ52¹ú1ÈJQl‡A)Ÿ®Ië8– `NŽ Y¾&(©‚I©Ío-ì*LO­æyÿ‚qTCÆlE¥2`êàÝ”Y£¥ªèØdƹ¼ &u]¤o…'09$}ñÃâWÆؑȸ·ú3 G€Œ˜é <i<Ì&,¼=û£Zú§ÁU@4^Åj%NØGÃÄX-Åw¥/Ÿ0Ñœ}ä> ‘{ãÐ¥åYûB–ÊÒò~!J˜Ev\ôÐN¡I5&ÏN º!WD ñ¢PEÙ’<[Eû”¹CVÖ@À]š÷2@te%/1P¥<OMªÖS3ú,é hó ôSb„·×C‡´!]2Ï%8ÛÔg@UÚ‚Ä(6Œ'”àÔFänÃu€dª°«6%¨ŒA Zâ×+ÿ¹¤S¥Â¤‡ÈÝÔ;M›È!Zˆ3“á 2º ‚ÌïXZ˜
-öˆYÐ,³hq˜!¼ymGýb&ÉN6„'¡É6!•O4&$´vÖ5*IñQ áû j©º”Ó˜CA±%Õ8Z^aÉÒUÞÄù‰Àsd:¸7 c#¼×ÚéºN‘·'F¸–.gÉüè„êâíJŒ(
-ošüìŠói€ pœpSí6 o…Ú[=A‘†%‡3ðL]1Nƒg‡Ì07ÓåV …?H}úÞêxl‹È‚›ræöÓUÌ1ŠîéR©ïˆµÑ³ÞE Ê<ObP1Aá€*£:Ì.þ°$Wq"ÒBêÈ[~½úŽ]˜G‰{†ù®Ü¿çÕ©£cXÍè&È’Œc»èë“3MÉð•Ô’«'Ávg­õ{‚C³$oåyV!ˆ’¾ò l€JÁ5®4RÈ­¨//šd º¢1á‹<lÆpßPC|Êú’.qlÚS);Îûΰ¥ØɬÙöpAŽJ7—‚2bÓ’ù,&Âq‡¹#Q®ìbηuºËšØ8x5O W
-Ð<x¹UÐB^ñre{ØÂ2 ¨î:DÓë‚T^Ç))­¼G,hȃXyºà²¨èÔθËßGÆDƒ»†/1þèå¿. Q£cíôV™/DC¡lÈd 2&(¸Ë“¥ !DÀ9¤¬z–÷´šWDä2zÒ§1|ih90„ìR0Pùv÷FÕÄ‹f :61! ̸¬D~͵hõŽçð\«5Û€”J]‚׬µîDXi±R³ÿ—ƒƒ_ü¼2 •'eæ(-ÍuR“S Ûª:½Îy$ЭÓ$„%)ªåu4³7 9½÷AŒdÔ\íG°dmZý&d'(È‘b*Ú´$Ã
-Éfõâé§Z‚?ã.ÞŬÛJ§#iú«w1¿¡EÔ} ö:ݬó5˜"‚Ù %‘DíæzŠü ²(Æ U)¹­†+!òè!ò‚àÛ»­¢"„8˜k…„ÅÔx^Y umLR#ˆÀìØŠÝëLœ=wIx¬áF jÞõ¤Ì÷u<3h/¸rŠ¶Æ§q¥Ô ñ¦ñb``aˆ°à©ñ@=&skÉÖx (,:ÈÜn€¬’ÓzÒܘ<Qôc¥ñè©ñÐ UjrÁ‹Äù×Ðls«/3h¡.Õ¢“ÈÕã´]ЇÂû‘CÈ9—›À?1ÖÓxhàð6Æ©©],}ÿ›p}ÿñ_ C¶x@!#}àÉ)H˜`oÂñ¢ª*ÃL"É òô
-_3³MCje꜄ÞO\°.ƒ–²2çœ%£oyEš‚Îe’˜ª˜ûrlë!Eî ÕõC€ðÒ0Ik ÈØŠ XÄ5`h@ r_F’ÖÈdìu˼ èmë—QŒ>©ªŽþu”ÞAd¨]|m¡Š ø€0ÖÈüÜ åaûænyM·b^pýqk•ˆ:x|6$”e]=ðz™Úò“a˜hAç:Ï’ V[¨4ôF(s+^™“t–n;|¿AVA“½e†¼x[çQóó4OêX—:x>ΓÅç Ÿ½ðV¨ÿÐ/ê,·;+h¬u‘0ßå~› 2Žø3®—×¹ªvã°ëþ¤[$Hê&ÆssßÂÒ„ŽèaoØhð¯"Q2׆Ԯߗù‡î2Hbaà ú—ÄìœûþÿÜ•™8™é%U0É=[Ñ5ÑâË¥ôÙõ]Á ½,Íì3\Öc b]nC¤$Íᵤ;ÛÊ5„¸aÙð)ì\»7¤C+a£“R˜ráŒS%adçÏFႨ¤ÐfñìÔáú€9§ÍßÏtëüo 2"¡e CSV>ìr P<ê„4çPîS7šYzðŠHi°hÚ¾¬ë”ÿn2Í–jÁf:eé<£”ñ°øëºSð'¤Áš{yY•7H±GE‰}¸
-H‰Œ—A’[7 DOà;èQI
-æu™l¹3’6oe¬ L„¸œI|O³m·Wò€½•;҈Ƞa— ÔÖðØB¥=1tI¨n5+ð PFz?6“ˆ4ŸA ¶äéü²ÐâÝIvÜ÷C.ê;Рà1pVF]ÏË“zš¯+þ¦LùM8
-ä‘ËU ?¡2¸Ó¡ó½˜wRÜ[:FêbïÐçŸôwf­Ûßy!~‘¥x~?L÷Ïa“ ¹6ž$ !(8N[ÜŠœ¤8!ÍxóÈù¹$
-
-Šî
-R;êNT«ÝV} )–ÎO[µK÷…|Š
-j}Ë)æí®•èö¸‚X1ÏZS&A^¥Ú˜êJ©ºÎÐhkëýµR#µI—¡ÈÚn2 !lUm;±Ó+Œ&sÕêÆ Dgò‡eä!k‹P™«£øŸGÐ+3äQGD¼Ý¼ÛR·dOd<¯·Ü_¦U«\£ñDjBS+ÙéL¯¾‡P2ªb"vJ^‡Î¿&¸I2¾Ò#ÌßãYÐêz¯8Y“¿ÄR’ÍTOÉ©¡5WÆ#žV8ÒÌ÷“Óž²^7 ‘ + FY31f HGkeÓ}85H7TÛ×бÊO‰±ý´?¾Aä/4׺¥õ ÂYá…Ι\¬xå4[š¼­V‘æC¼ÙN±aÊe””BjN kð ZÏöSj˜Ú¶J³Z;E‚5ãN¤‰\ëÕÈ&…f.%
-±9¾;;CðHu+IAâÀ}+ÕDÏ¡­íá„Wì3#»^¯«œà*5÷®]¾ižÊ,[,©9õq±ëKÓï¹$ =ñ/cX3Ù^ ÉWêŠNHÙ‘±ºÉA=D“w!h­©–Í÷80/èx.‰gýûŽÎd†¯S§À  žìýç™Pähl ý Ÿ #·)†tŒ³\Ƚfl2žuÉÎóœóKs“ Öµdö A#²`
-
-”ÎÙþôºÑAõwpI¤õÙe©e}Ø-Z®}|¤­"2”MÒ‘írö§.A¹œ0?è÷9?½ô"¯ît0WÓØô•Æ
-%"ȾI…3ˆ¶ã„™É$žö¤oR†0ýõ‡†×Mÿ×Ly®»v™#ϱtpª:obÉ@—PNl (>·zÆDY«9]heìÊ Ö \ƚͰrZ^ÈnÂn+ z Ø¿Óÿ¶£TÊ~B0êW¬)~Al(k¢=µªðì¢Ú4!Lxm¹k´|h ·¢:y„fÌP²%ÏñÚ|,Z PW—a$zß’Gø»!œS9 V(cÒHÚ Â8ÜÍÒŒ„íª`*3º/uMs@\¥,Ó}Å(ÃÙXVÀÎon†Ž½@Ÿ 4W‹T¯Ð,³¹ÓJFwìË#ˆ… º£-ËF^†íqon‹³€š2·œäuúÃBÀÓdJ9ÜQ
-ضß.h*ùNSß@4Ý,IB5®«^@©3lúœ
-(ûÔˆcQéªgþŽÈÿ- ô+÷ÅÊ¿2ì‡AÛœ·ñê¿M“B¾ÍÝ,ñ铵¯L¡¥3Þˆ:9O
-¹‡bhD'öÅMyvÈÈ äýº‰Ðí©xCÖt±v(Ó$—2|5pÏP—Áþ<@.ö8fÁ¾X2ôrμ)Íà)ŒgdújóQBÅTþ«šæÚæj±¯‚ äRèE·"[³ÊîÓš’†/¤"Ûüq‚²=·ú’M(2w9{\õ "^ó(e_±Î„ìX$ º'ÔèÑ®Mvχc'¹ó¸éžP¦¹@)cÄc&œ )Ùò¯!?ë_ GulªöÜ$2þÅ‚ Ä"XºŒÀ;  “{‚¼“§/ ïGP. „å\ñ²>Ÿo@ŒQ¦¿ä Ií¹ŠìŽ]R‡š‹i[½¹5{$
-Ë!ï›.i@8¦Ul_ ¶|§sPœ?v¶Á¶vÄQª’Ú0˜¸Îýªñ"ø0Staë‚)óƒVJ@SW*´AéÛ$´©v/iX·ÒkðQ6Ü0nœ'ˉ—"D˜cRÍjfoÄŽpß4£Ä¹ì CÈ5Ãíÿøð7¬sp•ç|}”;Oûk.Eßäõó ~²¨˜pGƵÆtXõ?VDî<{ž8c•°I­#ÏøÉc†¡$!Ä£ÑÛŽZžwþ¶›0´MÉ¢nvbÓ²d
-ÝÃhÌ$°ÞO_8²$v§œgË»* m Í3Ž ×"Nk×Â
-þCR[ç¶Ì2a`)"šé%ú
-›Ü7 l[J¡mû¡¨³l…iÎŒ*~{üf»42Î5¹¸LB–Õ£Û(¢&Œµ-¨ˆx—!òLgLØ3H³ŸBÃùíe–¢lK]ƒØc ‹ÃrC?Y.ÄóB¦íÓEð°8n)|©ýPâÀеðÖx>ìàZáPlá.QЃtv¢Ã®§é>vÙ%bQÓÜÓ¾ŠaArgà’ŠŸJìì0á\NÅís0>¬9C–âŸ0H‡:ƒ¢ÌÚÐ@º›ìEsRá—tJ܃¯vŽú@ô4
-D9Æ,ÃW¢ê
-—ó‡v Q†.+smX
-6ÊÖe|8¦ä(“–]NÀ‰Ù0 fTwE(0{ qþQ40çäÎOUè­cì›H'«ŠMñí‚àpGá•Zé={’&çÉiìNó¾&¯–nÏY7 ²ß£$°žDÜÜzƒã£œcögc¼fsü*\2ö'‚‡±OÀ¨©Ë¬Ú9$ƒdÊm‹{J•€è§› !è„‚}Õ¥ áQX‚`ªÂ×0¦%}rÑAv4ÍæhüÀS¡§ÔŒµG?%h{ýø¹Óê²CÊJ¢Sþ¢9TmÐ÷ø‚FÜ(½‚²óW”…
-F¯F=”lª•*#cñî”^ÄOx§¾mZG…µ¬È§•L!d²0Å/êhÂÚ]ÓÚ/I2Û8­ê£!¼¦úwýÑHX‚;‡»NRXDÇKàs’iˆ{Œ(}kÉrêµH^}äÈi5ÌŠ˜G¡ìÜh—ej°ÄU§}"v4‡†ø'cæ¢>2e7ïÀ<tƒ«ÒþžKÑ5“ü¤¿Oö”öÇZµ³#æÿ±"H˜Ð˜ié «D$`'Ù˜ÞozÑ…Ta•„_“±»GYh°DŽŸ
-F†ìÌò¬\Â2â©y æ {Qèt9
-‡ïÀ)"EÝoA› ^^vŸ]ÀŸÒ¬÷ª_Šz†‹˜$4SmÕ¤ñVÑÐÚc{ ó(^ŠHz€SCÏ@Ç÷sy¤|„g?bƒ|õ}¹
-Sj~
-|PÕðØâcTüþ¥nSòèƒ-,6r¥7ä2ÆßƧ{ Nx%~ÛÌ7ßïÎa˜£Kç.á‰Ô `#;fÞ#ãØ·Tf‘^ÓÐÓ†E’ëmD"ËHl9äÈR€¥è¸(°ÃL÷9xVxÍ–
-Ô³OÍ*ÈfPã
-+×
-¢_Uç.uþxÊ ˆ*+V¬tÜ—„Q :­Bùve{QŽG–È®EÏBQÝ´JÙoõ"OÁtÀ{ÑY×u¸ÍVÿRôý›
-Ÿ øjtPÀÀH„q&TJ²²ÉoˆY#å ±Ÿlàí9ßÿŒ—=rž9„Oà;8žÀÅ_ ·fB§{‚©Íäpï¿O <Ò˯Vr2#·I¾@£»AìU˜ˆ×àl|)Éd|¿LË€)q­¤Ëÿþ
- :YãLÝ&BYæE5'ÐV8²Æº)+£güô½câk˜¾¬n?ÂÀRªÕuE>Àé:jSµnìg³‰PÌ
-4-¾ˆá!òKÎ= ENÒÉá˜ôˆêy~ÎKVÚÂïÄ«Ù¿ßæw^
-¡]‰"$•]‘·!`Xÿ¸€Þ”õ ²ÕÚƒ[ÆD<yU|:3MÎ êÆe2›.“†ƒÉ¢€V[þU[)£¤(>:’Ž—L9:Î,ÓlmxÓ[E¡ ˜CŠs`½O)Šülæ?ÑÌ$Ug»R½Âì’.LêAL©ªv˜¼!O³Îe3j—i
-‰¤%'²1›OQVÜ<!)ýÀIy—œ3¤•w*Úò¿oHe¸° ËÛµ¦ŠafQìæ1`5tïû ù[WÑYEa\ïãÅ9¤ï¶+šãÉ ÷ƒoš´€åÈú8A´ìþÆq+Ý$°Gužš¸ê§ƒðBèm_)ÍvmhÉŠ"^@ WšyG¦x6
-V1·¶}‹Cùø½)(wG°Ä¦½$Žêäγd§Š
-MüQÒ·ÚÔ Ó©­†€ví…B! ÏöT Â6µr{"â"¸mS>›ë‹SøoÆŽ«¶Âè)Ofs”â ‚nàèì8纔q¦ô:ÏMÔªF­Çs ?ˆ ‡L…™ št÷0dŽË ±2 Ô‘=`µë1²ÅYñ
-¬ÓökŒ|@'RKanH²ÑÎÑýH‹Ò¡Ï1À¸®iÚåGtM•tu„a]‹‡ÙQU~‘I{› Z„£¥W›ŸÃ©¨;TZË!ìt”Š5”R9d•¹ÿÐWo…Uè‰OÌߥK^™vŒŸS‡ž»š‹$E“°]Þ3±:k§ä1í¦üꉸ‹ÒGÌÏþƒØ)ò×êšô
-æÒ²¿¬S&8ï"2ŸdÆœ±ÄÌ"{÷ž’ÖD*‹ Žpš®…Rë¤W×@Ye=f˜ˆeGsÛCÊÙy0WÖ®xp^SéÍöoöU¬sÍ•
- Qg2íž=ͼeæc•¨WyuR²?³sÕ§D…NP[Â;„[¯’3$M´ù¼çsÂ+N-k;z{²£¢¾[] P†„=‘‹ö> 1º:)á!~Hf“dÌ`E8Z¡¹¶X0­†>2ñ„Ù×a„rçBå9e½ëã(ÒÚrC§;,Gâ{HñV›L\q½„8ØÄ!Ã|Òj‚DÆF-ñäjýpBR¬ìq´é®Ûbà–S«Ó.G´¤á+i#È™m%4ŸMƒPÃÏïñæHRþ ÌïP ù#»æcíøƒÈÐç°)NS{™kõB%) ­ýªH«—T ¸òð'ÃKúOS¹¬­®$ô‰ž`”* ßÃÉxÔY7ñHµ¶'YE8=]b³ômñæ«Ï”N¥…00©6_m¶ÚÍ*¹Y÷sà,+
-áAlŠÓ²iærˆ¾¦WÞQ,>œ"`nÐdžéÕ°ÒJœbž¯j—¢`k#ΩÑ[Ë!äô)Ó<Fö
-üß@úû[ØF4¥|¹ÅØé3å£%>›OY(¸äüTøŒ—Kr7 „O;ø.¾kg©[d+Ý›¯ ð—5ñWR¶Ò’@£Ñ­ *Š
-~›²CVÙyyp[#Ö‰: ϸTt!z¦v
- ’,÷ÝŠ¨­l¨®¹¼¨vè’—Ï"Ú†
-õv<ì[ ª]d ØŒ\ß&ãº8Qj¯òRu7>q9nœ—C€ù¥®å%Pëš5–Î˼EE>ªGì4­ä¶©JÂirJ¶KTeuDjSãâG!E¬û¢õwþNG0±“ µ¯ü…b‡.p_¶x¦~ŠítÅP– Ž\ÁÍë«ÕÑàZkþ*ÌÑ2ÉA¾ŒÄÀµOùÅÊ7HERøúpÀÐ"2/‚QN I’v4¿îh7e§qÆ…û„,H‘ñÝûâu­O»UÊ9MÍÍðGÉݤŽC1,3Þ“thGÖ
- ™+; ~þúç:1½®pÇÅË~s½Ûaß]Õà8VWÐÛ§å—Ùéò8—yàë‡ Öâç‘Ô»Œ±aƒ§z`ìBt]@LŒc÷„I
-$ ìšõwÖ
-í59µ|€øQú¢³¥=}‡ö#–d¢°¿3Wý¨~õ–ÓìÆà":^8H]j¼xܵu•‡W}bH‘Ò-ƒ4 ʃ(5îŒu*U3p„$ BbDe¾¼éiQ_ZN÷„ƒªæEœ~—H—˜f û›ðºèÛlyúèRýŒCCÒÁ¢ø³)!Ç™ ¥É’¬áô£ÔíØq#Ûêà†±­8Ã0÷^@:c„Ž€Ì‡³ºöI0HÚª˜çF‡ÎͤYYMíîhFTÎò<3=âcÍÇn/÷ÆÐ d ,&Ÿ Ä„ÔówX ”¦Ë½804gTW´\‰Â`¥ZòÂ0<dÍQÕBë„5­» @0ßÌ<×¾Ó¨\!½´Ý'ì]Âüw¿
-?ikíN׉À¡„H¾}ÿ ÄÀk…€#üˆ<•µÃè'·×âeL«ÔŽ®;b¤o¢ŠÑ—%û‚†kz>}Ô tÏ![»ouѱ/±´Ç"›ÌA’¯ü0P™1ÁâšÕDMɉ,û²ÆœÚ¯‚ ÈÉù^ ]ÛlÁ ÷Ú ì¸|€¬¦Bi®Zvç¯ß lÁQ"]ÕÜ»Xð(„ˆu`^€kKÚ-ÞÔ™F(ƒ×ð¹•'.Ÿa­RXOß2ÇIÚª¶‡âúz'ŠÚÂnDßÚÊãibƒ/í‡i_uĆ.‚ÌÓ”Z·ôIÄsÌô4ÈQd6FÊÖÈé3ˆW–ÈuIl²›µ9/.üâá¨`ÍÆgŸôg~†§ÞÙAΕ_ý°”> „1値Æ7$·KÊheóUqÛ³K§A¨"FOYœ¯¼\‹`ˆlëê€Øó#÷’x€&Y„2áW¦ªÔÛOÙÄ*w«±‘̦ùáÉ!;$ÓPŠ™Í]!ûl í͆m®>¨6A­t^våwÐÛH¹¢x…e´HH&Ñia_ˆÕ
-]Š[M SÓ"wÞDØ=Í_´õ?;ˆ¹€5’èß‘«¬H~)Ûw04«{õ瞆  Üæ4j>¸n§GΪˆÂA=ZóÕ3>?,{ò¡%ÀðDƒ4I³–áp©r]ì0Ö·y(@’9„
-2GpéÛúŽOF½†š"Á,Ág¢D
-ƒ+Êæ³îø7-ýµd'KRß9܆_¬Í‡ƒH»pI–þ ïjüE–-égÕéèŠhêsŸvúC/)#'žòÇjOAz"¶¥å‡ïT¤[9¶l'ÊÖèLöÿŒ—K’7EW =hìAÿŸaGM=õ
-=“†½ÿ>—_èe"år‡ÑU(& \\Ô:g*„¿ä73î1ÉÖÇFË 5ïŠÝ‚<ˆd3˜""¤·/±?2Áh]0-‰N–±=àãw†x·fg5˜ÇhXh[ì`Ê`‚d«fß™ð.
-ñc¨r&KÝ|pþBP·R0¸i[fÝeW‰uVù{Ý=Â>$žM
-¬É=…‰Yµksú˜‘µ4àC"Óó¤ß½ûÇ §ûzogøe0€YLS¦} 5µÑµf/b†ÁEËõ¦…pìZbŒ®Bn@£Ýèó›äÕ›ÁÀG ÀíqG¹]ÚïçWzô7ÀÖ° Žúxì€ð"SMX› Âé,8}.®<›Dƒ§rBn€MШbg|{f° 鼂_SÿæbBšŒ¥–¼½ÌlÍ|ˆ®óW³>¶tlíW°Ñ€J.aǵ{eˆ"OŸ°#Ó<ŠBhßòDØX¤ê;´)=Hkã3CåŸé©X.úo„D\±Þ<x6}DM›4`†æNU„k.¦>â¾6!¬^4u„Áêa”
-}ÄmH¿KØ„DÀ$Ö1l„_ Û‹¸ö=Æ!l/è.Å$¬ í"6EÃö9‚7,íÝE߇%UHðî0¶C߇ܭðÞ°ÔÉxW¯”âÕuC䎕Q±Q/yÑ`dÆ?!6]Àþ
-'ñïÑü±éòEÚ—\Ä&„—ÊÇxBì[CÏ÷,1è†Ø^бeu,_]6
-%ÐGl/ ”£xº„õ´Ò
-în@Ð
-Ã3~ºAIW¾>0À¹J1X
-Yp(OhFƒÉÙ˜ù\¼ï—é·*Óx
-A¿zSŸ¤µÖrˆ÷‚Ù´BŠ;ˆÙPmß«µ)Êë²ß=±,F‘ì×8}*uöìE'ä4*ŸbXÕêÓ9°ldmìRód×)Â/³ft¨é®÷¥KæÄ@è/ Òpô8%M;²A&|?˜Ø»t@ªÒ–Ú?‰öB.áØ`šö$Û˜0ê6(€¬õ´ƒªP{¨Ûl
-êÊ
-Qš(¸È}]DÃœ"+‰Ö *2  › ‰Ë×¥¡À)¤Ö¾”´ØQúGÞIt‚X8k@ÌÈ£Ól² ‰4ÕÒ w)ÍA3G
-Ùð#º¹Ü“sSÖ=ÃNÈ[¥~|EƯ ƒCY 'úãU·ó~=%V½9ÈÛX"ö@•Üsd+YÏ'ÆôÚt©•jÍì­B¥ !Úͱۂ õx‚`¶ÂTÆœ’Õi³Ùð7Ù+÷Ê;ãIBÔ‘¯—ýsàðAÙIGJÅ¿Ì`‚%”J£·öô¨“˜DkÉbM…ðl?ÃNÄ[¡>¿yA—Âÿ|Ò²ÈÇxÊÈß½ã<…aÏL£+†ûò–§ÇÉÔ+çå— ÂfÀá
-LXz2‚ªnÔç;-jN &Põ×CÖ‚P±7ÿû""ËjX¶JHË€!ÝO…õÀTÝÃÂmB¸4 ÀN[Šƒ„TQl±í JÖ…¤ö9‰)IêK^üCHqf­r=ï¦và×e¬ÍóbŸjL¬7µUw÷œ®žlõé2âÖÛ9=?jÊRL~nÇ›h¯êgØ y«”Uý=oBÇYr­vã·ËA‡áù­i-ôÞD;dB!„pÞô–bॠcQ–iÉ{ϯBÈ.@ÌßI¼×éb_z¯·{λjÜÛ¼«Ï}ÔUÅNr®½àdøßzês·…<çí.œzZ¡Ö±ü³· §zŸsˆ÷_ïd®ÁŒaÕ6;z7xäiUt™ÛÜWw‚0Z-)´¯º2³¶0×h7³cAÚís:³
-‘ÑÌAƒŠZ·Lp5 8ÎoÙžþ‰ù^(U˜AnÂÆâkÉ“(\ÇôÒªWFƒYz-2¬CøùŽ«‘ø2žZ·*â ¹dô=R±Î¶äâa[€g2ñÉò˜ûœ7 
-Ã9yØÅ~Ž£&*h0qº}ƒlóC·‹ GÐɉqÆ!©5ãystîYóRoØ~l˽æq
-Âj}úÎ$¡
-d¿@…¥Šäæ1S¦˜­J¶™Æ÷cfñÕ„
-Ù£>ÑNÊ[yZTƒFÜ#¦•õñsÇ¥BisC6’Éàö§]ùÛA .2Ã^èÛB¢¸*Ï-± gOJXôíj©–#ÃèàRbr;¦0‚ÕX‹Úp¸Û*œ•@bûü;Èìéþú‰>bR9_{ø ÉبŀaQºËÙ $ÓiïDSÍPÁ}L­±ìµæʸð¢â×µsVL
-7¯, Äätøríí Sñtm6îÊIã,S´•B‡Ðó“9y"ÿšBìN2Å
-–fS“e½ê
-rRh°GɾyÖJ9ر-+R=¾J$ ›4È,8~‹£0ÇIN4Ì7F.Y
- ³ðý
-•N‰ýFkp[Ù!T‡éÅL­ö&‰V«,(ºkÈJ‘°Sµ£c£[ ;‰+H,ËX§ð$q\J­:„L¦U™Žˆ/ç.tšâÜ&Ïý3­3Äp®l9{A„²j—©k@¸½JPÆÄ!E7Ì© ˆ"Ôšì†òÜÏè0`?NN Žâ[púÖy¡?-ë²ê¿@,n<‰±Ñ»Ø*Æ67O@°°¸.º.7Ž.ÎçË!l=ªÈšÐ–øò£0}årý#¾ƒû`,@yê2Õ0yüÔÂ9D.ùÜQ²„‚ÌÌ+;½C®£”
-Øl
-jöð–¡ØAÏómì³ÉºtÕ§W±]à
-\8WÈ`â˹ÆÈK¯öQ/ úÎú™ò‹h{\ùõ6@Š[ñ%9½
-H•ËJL »fõZ@M¼É;¬(àkòuU\§^½C‚¯=?~ç•9‡Û¼3ðøªw&ªó>‡ÿ4WîÔ
-,Úg+¶î¿Y.+µ¬=‰Â tXÍ÷ãNÊñÓ¤ü‡\øÏÿþãÿñ6ñ`4ÏJ¦¡¼Ø9ª–]DN &ÅR¤°j¡ ¬–äÊ5 —(Êk:£I±È»2æ}uçËâhœèÕÂ̱•xîÒ©
-/ô•µÎ8]äÔ©Huëøý;7ÞÜosãßéU7ß‹s›†{‰ÿzª\B ©žœ•§^2ËÇ“ep0>|ÐÀ¥ñ®„ü]Ì
-\1›Þ) ­èj¬cj2•
-èøZó!}A.(JEûjGS'S`äóû6ª]N%­ìQ1÷ óW’P[H;4ÞG¡L,ô»:Ø EâÃõ3@â öÚ5HGUŽi½!ôŠ:á(Äê?c|©ç:ýÿ¯ûÿ¿å)\žËÀµº#N[ê"¤8 `HË”
-H[yi|‡^ÂÏžˆFM¤Sëh†,¥"°ð$ë›U–Å*%¾C¨×j[N-ãG¦–x¶Pൺ¶(v1.4ÿÏx™dוã@t+^ûf\5ô.j*ïZ7@NÿÇïÔÉAÚ2ôHhR ®_`ˆá§kÍ–`dPbøÔå ò_Þ™—/Ê(1ÀönäIlÂg×0Ž¾”ȳ »ÁƒqÔKv,kûÉaøßYL›\²Û,LgZ[›è š3_f<BáÙ dPó‹þñ;[B²ºA^8N
-ûqÓÓÎÙ|Fy£ Ÿ&íçúÀÝ|ËK‰£¢©ŸÚ»Ïí;ü ž5ªî£ˆ5‚kלíñ®IiúÃäŠæÒ±X_„Ãס÷n’ÑG©§§‰q0E3Jrâd¦
-öR€caH*×-F‹ÜwòÄb~Ö|zÍ’bW«¢ÅÑL¼Æ ÑßN5ãß
-¨^Üáÿl ¤QFmÕ¿Ó3\F”`«}’á7¥Yo<Á¿M\àHŽÆyJ%Éäú…Å~ÙиԂŠ ao(“{²’•öµ/9î””MdQäòôž%1>ÂèH¯ EÎÜ/´ ¿ô!¥²B¡8¼Vî’q¼©@èàTÈ­º|ÔÐx„‹ªÅ›ýRôb‚ù`Ln7ÃŽò¤ÿ¼ØgÝÕÇE0ڸǞt÷ žùn›„<ñuñã
-qŠ%ùnÃc¿Ùy ʘœYnE¶ƒÃ
-áŸ_ƒJ Ð’uJÓ#-.u1Ýf ýQÄq4Vj–»ÝªH7¬ÎqÈlLÙ{CÆ”YÂF/¦èê|þÁ÷¸8!/`À›†tåsWïô”K…„ï
-Ia¢o™a S¥t2©ÓDëïß
-‚‘?åÞÅ.NFý<þpÅm)P ߇Ùé!j­g…ÁvÃkµ^¿gÓ<T†>ø9Jeiêd[Í­#²Àƒg€T˜óÎýD ÆP±V
-lëd7m™eNÆ1/¼áRtJ`æÍžÌ]"oÀ͵©›­YÉfÒΨÀ|kÐK‚a#ÉòŠ)>X¢ 3›|œí+[ ÄwϪHpÊ)Œõ©`
-ÓàWFÓqò!ö»ï¢$ˆ”|¡·ƒv¬jšËo±€?} ˆaäìBÝä°D ½x…XRŒžJ¾”øIX•,/™k{÷þMþ ß—Ù§}hL÷‰ãÁ&˜nO˜¯Ìs(.Äž€¬ªé†)(SŠ¿eœ×NŽbsûSÀNÃR9[b|”0œ€]Ò<yRÈ‘ÙÏs^j>o5š‹¶.âùŽô"ßCª Ï…²@p¬Uݾµ>Üè·’#ЬB.Û_„ÆPš¼¨l~ìƒÓC9~
-möÎä6¥j°úvM` j¡Q8P÷óUt/eÖ8jã”jù;¢‡k€çr>#ä±/áž^=ky—àÞÚ~çùiÖÿ/—$9R ˆž`îÐ'h# a­¹ÉlK÷ßê9D–LI¤¦L¦…ZÞ ÄÇ?t–!Wãï YòMåßN •c¡a†¾rƒd q”?»e*?Ä…¬“XVô=•ÑÞÆ÷´3!t¥“>z.×Ò!õt‰¾œ~ùLêÀÑÎH‰”#ÀÓ•‹(n ÐÉJbÈ£oØ@ü•ss’&¢l7º$¬ ò…sÜ;v's´‚Ž3Iå·ºAþPÓ×'’»Re9ñqIþp\V`­Ô•)˜F‰…íÑtM¹ŸBŠ<sØñÒeÏ;”EhŠ†BýD¼0üf?Š”@Ü ÙQæwºÅE 8î,:nëÂA\ÜAëç>…9h4¸¤§¸¸ƒ‚¸nqQ„ü%åý¬éc`Ä
-¬ki—RÝ£†‹¥†(š]m‰*?i]zEF J*œI÷02n£$Æ 5¼Iaà‹ÔOAç`¹´ä‚¢.Ðí´;æõÿ ê[ Ïš%À4îzå*ìx X?ˆ1âJ–ó™Є3àJöÉ,$°"SÞTY\Ée%ñšÚÛŒ-Z £"Œ.ãOð£ EŒØmÎ2FIåΨ‡<¾8¤dä¦â™rw{8k¢q‰k²:VùZ,ÙÐËATpõÈ0 +Q±÷Sý€`÷»BÖ:~z%H‰IàÕ+ð0µ¹÷T4zëé\éiþô.«^+†l4¯2 jÒ¾eL·P°74ÈEÃ*£×£
-ˆ=Š¿£µÁÂ)º^fšIÓ{²Ú>¦8L¼Ôt×ËT’¤:¾=®)Åø#¢ß1b‘ØvfóÛûîݤÏô¶Å‘>²ÀŸù8ÍÉ9kluUV²ŸÈc¿¿p䔋‹ÉÆM‘>Rd^JÎã¼D‰Z&~“…ìë;l+ÁƒíaìÙÛÄ'@I‰ÛVÚÃw˜ü-ÛjH§_†ÀÁV«¯°Zå4~3ˆF>¤p;®hàÈü¨‹/|„— §ò"óD1.[”±#p¢³E^õ£70A_ýÜ@,1Cyøs(ïõ
-Šf¢–È v§Éüâ¦]&;IE>ü§ˆÏ$¬ŒŽQÀä܈߇В ËXH/«4-9ññŸ²JÖdOÿ[G)¼2ÙÈñeÖ V¸{\Ùt Ö08ð%U1‹-?–µò7Ó‹
-s9ÒJƒ"]Yê¤ìfÁ•@³R€ùnÉ(ž9ÿñO
-H‰ ”‹;ŠÀïv昱±3¦yÌû™1ï7c’¤))*•¨ôð(äQ“:È[ŠÂ’’¤yÌ#D¢´÷l;çÞ{¾ï~ßýGîþ„ßïû~?«œœ|0JŒ<®
-º\¤ç†±À&À<^õÇ
-5çLLJ\ãU„l ÑV9«xO€2O3S÷DTàåiÀOPãÖ{1ÁlÐiom[`ä«Û ^ÊÆ|—õÎbƒíg¯Š¼Rפ}Û¢Ã?ÂBÅôT§í!|´]Éo:–°
-ÖÞcB¡/ëK<uœ"eCæc«ŸaýP t,Õ~lóryViy¨®=ë‘ž—÷Ä4÷1‰€ãQl I\«`bµ=UÑ·ºnæÍÊŽº”“lb¬ER}4YeŸ«É5Jêšd¤aû}«u1;›@ù[Řpƒ
-дä¸_«À·«\Šc¹ óUÇ£8V{–z†YZ ü$Dù|ä=Ù@žžN!¯×JÕ|è‹ýQfñå‡á¶³Y.|¼ÞôÓðÐÚnbÐë]¨y’Žú®ðNfØ mÜgGT8Eú›F áVI}Úº°*D@Èt™"æ>¿Öp°ÛBÌ˽~”ßÑ06d£ òø@€ô±ˆ @‹œ’ô¾&Û•S’øx€ý{·§Ý¾HJ2OWGŸMS"RÔZg©×®°*HÆ? ÜS°‹ÂOäL°Œ v#$þ¢bæ:/0óŽW§:/5¥¹}^$¥vV§?ë@¿r½R3Ë,rrÂáÊww¨`®x¹Õ_î¿Úùm[âs>CÍê'½q¥„],°ßí`ƒwûQ
-Ÿê:ÒÝ–›“ÜÏeØäk-³h¾ä½ÉGEýk—Ûð×n;ýj‰ Ú"
-Ü6E|
-ôîçž„LÇtë}Àó Ÿç°Ù¶9BÖ»ÎÒkK]ЛîE>Ü«ä!¶§ÚSÖú_ǪúÊ®ÛÆk’¿Ì"3O–ð/ÂZV½CF+Þ£îEô<œWI†ìL½þMÁÈ»ºÆ};OÉýå%ï²cžY»6NÉ|‹/¹dD‚Î lâùmƒhȯ> îKjþøÿ¬?ì=XïZWU@Ó ™‡¹.»Æ:Ô˜°Ê,¾¬î­H\ë+›#~RöÞ°Í`Óg%±jnùm÷"¹Ü·L ì}aââ#zvÛ±ªäÕ^…7„¬°AÄv¯ô6J¨¥ŽY\Îñ,2õ›ŽRVSËœ øL·´ã¥GÑYXã¢OW™•ãUñÛSØt’YéQÒË".jöù }Xç*¹8°56Üœ’õ}8×ö©ýmc¢e´>aGŒJ h»€œl6ŽÔ$jù7‚Z&Ú·Ênt}Äe}š„ý¾'†?p*èeÇË= þ5Q×é2»aOŒ}æ–Rª
-uMRÉÁ¾©“Xè40ëöÕÍ);Š¦$ß2ÀŠ™ÇÝ›&–fÄþ
-£rÞúWÄ}Nkm|¹3\} ,Ú’=Üè-Šù¾Å]lòÅ y¸’‹u‘$°, ø¸¿–wOR?:”älë!}
-^Õn?.i÷öh”í™$ù \ĉ‰Ýj:/à§IŸµ¬ÆÓÔ;Ϩ 9ͧzzõ©ŽPìœÄ¦»TÄì#5«l 5ïú²þø`—|¬ 埪è•n5§Ö&£ä®uÔEïàr\óBŒuœ”·$®4ˆ`Ïw¤°w†…þf0OfZ²í²šxë $Ò: î×ñ[Šæ”Í®Òð)r^˜†^aäA_m÷¢ÎÔU³»a97¶{qUÿ3‹ºÎôÈŒ“)x¼cþâ@…Ì:žÃY¡5œñ¥æ¾Ò¨ƒúG·¶‡»#g-ó«Ã¿£Àfßš¡äÝÑ0K[úš2×°©ÜÚ¬[’šô›ßW…l¿ dy}Škº.qW{îÔ r½Ë¤w™Ý|¬eÁ<ólè9è9M€ 'zÕð¤ãIXÂvoÁoëà0ß,®ìÜØÁ´ŽÒr
-bU4%¸æÈÀ?‹¹'ºv¢}š_oSÒ?ìŒR¬ý¤¤})#ËÖÏÌ\^òÿ~wI.ÿe•Oˆs¶A\£¬›Ýä=õh‡‹óOK‡ÓüCOsÂæ
-´t)Ï-]c>¼ÖWóÜ<Pô…BŸÓ´ÕŒÛtŒÖÅy”ˆ4¯ Ì1 Çã|膄‘¼×/(öOöü“­N£Ð$¬ |°8hær–NùÑŸ¸¯eTÙµ4ˆgÝp¶Ô†¿Xâü:v£}“~(mxæŸ!ä]8(÷,·¾Q|M†* 5‹HYçêÁ®s€h—7¾¶ Ã^yfZ¡›ipSÒ¾Þ.8Õ3êOô”ªóU>ÿÌÄÂ_¬³°žù†tûDíë4vO^÷â@‰ÍëªËýu°©ô¾‰‡{æ”3kϵ‚Sµ°y¿Ÿæ%çœM‹±{#¬úQm¬k›ë™Âæúh°À£þl‘¿ |6ËJ¿i“!ß;Û0â
-ÒÖ
-óî@IÈ°I‰ï9ð˜Eüñf7>c£·%Þ<
-þ]ëý¶òIöu­³ïd¾1Ç<µ-+ýÃclÉ Z˜ø=&}gŒ]¤“_ËÈ ·±Õ×Õ…ÿÁä¤]nHyRú<” Š¸}tãêÐýë?^‡ß
-!|xõ³–]}ß¡Ä€ÿÝâпY9t—‘R¹8ŒIÐö_j$˜˜y*BÅÄ„K1 ¿ak-ÀäÜw!œ|pˆRò§|•’û×eBÉ_—³À±¿_êm*Ѓ* [ ãôB÷,³Î6JȲàSíãœ2ó·@+$ÅÉHèÈA â¶ÿ™ñ±èJsfÆ¥ÚÄW!lpæ^qÆUBNÒ•ò„—!™DƒR"¥GßA“Ÿ„H‘Û»Rf¡{Z€<ÖŠ‡ó|Ô†Œ˜º
-°lW,‰ÛÒÕôÖ‡²VX¨ÓpGMÄ>Q¶"Ê›kï~‚CnÂ3/=¹wz”ñûÃKô¢Ìÿªh5‘ËÝèT`oÖ¿AE»(°u)"~ARcŸ&×L"Þ®ŠQ6Ën Ó²K|ôSÿÿ—ù;ZÇßHB²‰„ DVû.A,E-‰]…È"©-Bh„Vo/ZzÑ^[[UE[t¡Õ}y\:îôÞç™™gæ‡ùOæÌýáüzÞ÷|¾ï÷{ÎÑÇ?ÐIº¤òµ•dà 9)ø\!ßMŸ™èÙ‘›D°(Ü_NòÏ·¬¦³›ñûÞÛ‡ÕÇ{ÅÇU]z7eY·×=¿Ñ•òÄÕÿ`¨'f­¿E0o.ç k²hòh|CF²[" |:ÒCÝz
-2è³íE¡«ƒU)Ƿ۪η{µßwŒ¿#?^µ–}ZíP}߶~ì vœnwW½¼Ù$~<TølÜótÔœàÔkâ£1Iñ˜ŽÜ¼>+o)Hóì.Ê" ¾qr S%"èóä¾ãê|ÂÇÅγmGÇéΈõãê@õÛ}ÚË›5ñï–uÙ{ÓmQ¯nweî͘âŒ4ó~ÖUgÍíB4+ä!u1¡§$Ï+GÌÇ2½=À-:‘
-pÈ$÷c@°¼îèërÔ)Q˜ÚRòîH%ç']Õg{Öƃ»¦”ý;ý…›ÓŽì»ÎNá5£šèh(#تJp9阌È`4«(G‚:>R¸  û‚R1á@$àAŽf993Vã½]/Û½ÚvßÞ°ã4„¿šéÏÙœ´'Ívurúj½tÅ0•iiP‰<“} Öß2‚9ͦ•èX
-WÆ,‘× M¾e¸Öì4L«< Ú2“!KÀ ‹"¦P^@öÀAè<ò6~R« ?»^ñå¾>óíJSÌ—õöœ×³­²Ã›í k#ºÐ¹®fšK[C4¨òq—2S¡2^y">ˆ™4àS)  Q „Bª—7pn圄¸Ë°†«ì:l>qþí©£óÇž£ý?ZN6:Kß,Z¯™e×õu ƒ2ËÝ”¥t+Š1ƒ4*¤p¹  CÜ)À%‘AàçtooÀ¹a!Õ+–‰¡·<‡º;iŽ{ww¸îóúôØéc×ÈÉæñ튭ôѵÖðE{#{´µŒl)Q &rLv¤
-¤%Íw¡$šrœ¹8ÃçÅ-mÆ·æ¬Ãûí¢Óz£§™æh«õꮮÛÊ4¸ºÜ"l’P‚ñ#Q€†ØÑÀgq![”€3—T¯é[ƒ7G.§ζŞm÷ÔœîŽ×®4¾XmÚš›¨º;q%iÝ–ò|·¶%¦%O‰)KM —2´2"# .,éæ˜0 W&Âd‹ØŽ¢tê¬ñ{Í^q´Ø¥Ú»eIÞr™%ÛÖ¸í©þ”[}ZΔ¥ÍÜda4ÏT©RBˆåC0ttNÊÌ?:°©Tðq÷6‘ ÉA|hÉ(ð¾®U‡ïMåÇ¿ôä/ôü2¬^·ÆÏõ¶±Í•ž£Úz⨾ŧ½ü"^!•@(3
- âP¾Žæù´¥qßÀh;2‚¢#ËèÜž”nY¸]Û6!-dÖÇèˆàïlqŽ)šÜšIŽm|œ¨ˆ9˜3B¡¤ˆ[‘ÉÌ_P¹¡‘mrQÌ&cv1çÄtŸ.ø³E.=æâ3jjÅêpoÁ††ùa['@ùÕ‚ö!q…mDñÞ:Ø_£ŠÌR)ÜÈ2Ôäî{Ž~iµA¾gO'„‚צ)Yë†UDŽØØ؈•Ñ¼£§TFPÏ"ZBÕ¿ý öt ®Ïâò<­aVLÉ™¿`F©¬ÓªêÀÞÎ[ƒ 0sR0T4Êàüâ çø§¤-A §aß‚¯ˆº)ŸŽ=|Áá’D]” ,*&NW$CÐx¶Ø×6˃z<Ü2Ðþ7Ë 9O-§áj+ÿHokû~T(/U²Yj1ïïJë‘œ%L5ö3^­k¸׸ýÔ NÄ<Bé©_®=[“NÇ<ðÄæGè¨;¥am–X<íŸe€U`W
-wuQ”U+¹.æb`N=Bñ¾ƒÙ~ì€r·¨2Ä—•úóep(îJÂN&v×Jª h0/·´]…úîZˆš.–ùÜ—ˆ³Ë ïқ㠽 g‹¤–]+þí¾ÖsÉúŒαÛ¶³q[&6.lÑ]zTO¬ŠL÷…& ù)RѶ¾Ÿ‚.8'Âlë$Ý[³Üæɾ²¨Ý~æäÑÌøú¬ð¥ËJóù’lüØIÇ»i­VrÏ
-s-¬Å>>_ë­Î7ÿÝ3ÑrÇ$ªºZèzšwi|›®~ó"bæÑ Ÿg,°gL™uòÈ!í`åŽôÝŸMŠšo’FBÇÅñØRj|qwº¯2fdà ª–Š~™òH
-cöѾˆ‘^ÑÓÞ%L¬.ËLçÝ]iÍý‹€jòN­d¬J^RϨj1c:Ü“Ø6­6eZzSÜó0ü‰Ò^ðhæsŽé…Œmj6e‘ç;þyº„ºÞ > ÕäZ‡†Ò‘ÜS
-qÞ¡Ö@6/kábÏ6‡ß†õøW°_&˻Ƥד0
-“FÎ
-¤ÆPÚ¦”•föàÏ“;qïø|Ê31Ÿtª53ð>nbµ§¬‚¡œ[Ì€÷ù”¯çcKWA™
-rsI/ uq@é…½Ìþ”™Þ˜w°Qp@Ì-\\ÎÊÁ~=–M~ Š%_ù¬¬•Õ\$üä›Æ?HèùxÈ£ú˜ÝWý¶ý™C™
-i¶/CÊÅÿ‹•‡BIÎËÆézîå|ttÁ§œ‚ýÊIȧP–‚êU["™gÉÅ#d,̶³O}÷ÎÖº¿ƒ\≖
-.’^$·™­‡GÉÅbøD¹T ŽÍÄ
-4Sr.æ93Nöp» vK¤ÅÅäeP$*úè}ec äe†–°÷ÓF>ù"0±ž² )aƒ :•²¤M)Ž[„#>'Ë~ ÿÚG“摺r@"‚ÜJÊÂhÉ:é'[öªg‹.¤o¥ñtýÈ;=p7¶E«-y´Ë}¡èaõÃn6&¹Ëê‰é™mE¿¸:”Ê£{ø713¥MY‘<µ—¶³‡ÂÛ}?Æv±¿@>&ºx8Ê(‰äQ#uº=Úï+¦A§€ŒÜ…ÛÅÔ¢K2
-!˜wPš .JkÞÅèÞà4ÜÐ º+@ÿ}\OoŽ‰uq+µ5a¥6¥ìÔú‚—…Š)w+1«”uJ9e¿(ûÙƒEµýh¡åöóþŸlò×ß]졬]Â<ßdÖƒ&êê üä–èþçÐñy`eäåéöð«óBUÂÄì)ø…Œœst çQ¨³Þi]á³j±p$Ÿ*‘5 "zpmäeÆ:Ú[òñH‘mú[Ø%ä2~Þ#dücó!õöå‰t"ë0€?x3þÉÕ°YDH˜þ/!ûkˆÍøârþ8–Íþq,™ˆ™x„qJÕebõí+›\}‰äçœ÷<¹ÑóÝÉlÛ­MÇ7§¿¢+¢[#¯×åw¤ÿ’Õ=%‹‚}éÓË.¢§ÃM)#úiLÛvçw­·i'‡tu$Vå}bÜHmˆiõi­ rÐ;sfjWx“òßȦ ^áu[£õ9=»%¥¥VGV©/Àd¯£ÖD×Þß?^èøGL‡®Ó5Fwf‡‡‰ì°ZŽµ”êã5zur[ÔŸÝb³6>)nº¯¹WòN¯_ ¹öˆ‘¿"«5j`4œíŒTÇvËcJÈ+"™ƒ:”c[¥.»ØïËNJ=dÅV&ôøçaéç°–X™0qP¾yê‹”YÎɻ՚œ“OÈ z±ÐûRÖÈ•šáª›¡Ur_ɯžƒ|ª‰Œ‹Õ ZIuˆÿÿŸâ2}JóÜÃðÌùr>tši“é’Óv¦=i›£mS£©ZÍ‚Æ ÷ˆŠ²ï›@PhÒ¨QãÀ”\pCÙ^VA›“äü)çÉð¼óÞ¿ë¾îa¡Ýÿi_3€ÂÀ®åÝi÷ elKñ<Ü)bá£Ú~X`P Ù…`çq^5¹ìLÃíÈl¾Î‚­—²Ë¥q³˜ÕÓ^%îhßXaÖ¨5ŸM÷U¼ßYxç“/O£D‹ƒ®k>Pá‹·_£ò’.5¶'?Ùbü+,Äû}ùÔ»ùÔ‡£¡‰÷ÇÒ‰ä&¥ýh ›¿3ß—ç[fÀO–©°¤ED¼Ø’+R–A~Ò*&C&ðÿ´„rÇ(âú2£òs¯ŠÙXCY•´Ü0ÉënDͬދ±èíþSYvW"ŠÚDä
-jUQ ¯%m’ÏT”û‘%fCZ/è>žìÉõÏ÷äy¦¹Cðk&éÃO]ŠÖ[Þe&Â1½ã™Àå®pºüÚLpMŒO{{ëŸjé­zEÃOGsýõYЇQÕÐÆG.
-³®x¦ÑÏ÷§P‰.)â噆EãDQò£.Î )§kÁ¾‘\«Lõ¯U¥­ÌÔ÷¦Ý4AîºäT°uŠœgö¿"`{W[{ýÀYm UFOÕg^l­ŒÿY-ο}  Ã>à2ÂÈiŽVøÍ;HÛ ¿£‚ÿÔ
- ®È™ÉŒ‘¢ÏiÛRnÿ1nOÖP¾û‰’隤—(Ù$‚ZèS⳾蘘àZѯ6ׄ¼ÏëÀý»ÂBŸhéU-é_¢ýÀœåžD=³t…ì €ÃNˆ¹n9m!¥Ø&‰iîYr¶s¦6wo‚œ¾;‚KÔ´”F˜ûQÉÎy6æÇ}îYåQzAñšƒ jDìƒ%.îp¹¾&¨·ø4ÍMÖ9AõþJG§{©‘½¯¨‡x稠­aøãÍH´GŽM9œÃ§Ú&+âWš3®zòÃÎ ,ÊgSsÿ‘šTâž«yëUóì38àI-õs£[‰ÉÚ•àÞ½Uè˜û1O ùG6ñDÃÆNB{HyN.ks p¬áq}ßzsû±±±ëx£±Ï§ºTÛ@t̲
-—ýÌØ2AK:o¬Ž3 þýD׎¸¿/áTøU>¸gÙðÍìS ô;ôô'1øé99=÷º}”š©ì®MíÂf^ÜìE§~[rå´b}{Å#mkécç$ì•¡»,\RW¶ÞG,h™5ëÝù×·FÀ= ˜w{2äK»õÆ¿Ø€=^æתڠs‚¢{þU¾à‹¹õS`SkÇ'íŽâ’ìÄÌ35›ì[hÀOÕn©xe ž)É؇KT0ßÿ)«]V²Ên¨…àPc'ä‘u—¿3Å,+N¼õ3=?áÆÞ(“t¢mjÙ-‰Ð5e^6´äþÛ>;[ç04|Þ§ðIöÅ_ÿÛúµ4”K‚ˆ7µ][®Ëúc±.í÷í.ðÓ:D?€É.{ö‹¸êå}À+Bßj=fûcU̪8û_=Ș JÞëë~ “àÓuILV™MN]ojû¼&ä~Õ3ÿ>˜E'ïO#žÙ¤•q€'€Œ4²m
-N…SÎ,:R5 ·‘ñZ1èÆ2'û²”øqì“_ )×m2TÁ÷=a¯„›uß8KêÙÔS קz¾ ¨Þ3[ýv‘—ri£u¬­Ç®òÈÎùzøî -׳ÌÆøµ\ú©Žúf VKœ,ß{ç %ž:hi?2
-;\+Œ
-«ÚøÚ1G*8\%CƒÚÁ
-ë\¨‡®45nK8ø€V,s™_Åù§ÙP‡”úÎ<€ˆR‹aw\R&Ü>IÌÐ4‚nZA¡–þÒ»JAfˆ0ÆÁ 65°&àٔܚ­ Æ;Ï<¯Æ¯æNõLÌ“øÅÌb×I0ëTU¬}Š˜q¤æ6e¸÷ºl†kZH8‹H~• ö@Nβp[Áʺ¨ eýf¡Jy໋²”]¹/¥f›º+#·ªbÜ2ÌM{q˜J”÷—¹¦mlqÌàÓ ½ÐãPeÜFUÜf2aðÖÉ2¥Ô6CɱI˜Å_ ­ߌͽ>u=ÊÐ_~×Ô_fîß¼åžeïI¨9ÚVD¸u˜œê›g£lüëíìóyü?ˆ´ Â²Ä #øwWc TH+Œ?¿Ô {\f!u…7»Ð±¿Ôeßþi†Á9
-y왡–3]‰/ÔtEµ<Ö™QÜâUFW×UVÙx’Z²;†xìW³‰_MMÝq¨¦C|Ë<ʱŠ;TÔY?¢_ZÊéÛ`w,ƒø—ÒX¬¸üÕ Ë0&Ù9Å‚:§Dxï45Ç+%åZ‡ ùKÐèΪÄ.Š ÉGJ¡àPÉB,‹2®¬µG^~6ÔZý@Å®Yì®x!åæDü0—GE‡íˈ™ŽqBà« ûà˜aä#]Seô4=ïôø×ÉÚ´Èï&N£o‘V²û©ê¡mñÌ=C,8Vã ¿[Ù\¿0”±9N(ú¯éÃt`…MwL@cwF@¡öÉò˜½ÉŠØ ŽËöª…LÇ ì]àa<ÿ§¸ÌŸÒ¼Ö8>¹™{o’iL·˜¶6iÍbkbRc¢Æ˜ª1"Ȧ‚ìȾ(.Õh\£u‹
-P@6AÜÙQTb§÷ÎýGîéï¼3gæóÎ9Ïóù~9«öæÍåÖâø £èÔKs´´k›ƒGA úÙÒÒ~jápX%wþ¡æ$œ™™Ÿ†P±5 ;ÔJÝóõ™†^ð[*â3ð'—²…¦îEÇlÌRò¼¦^I`½_÷y'ðÉPI;CEƒE–¢H¯Sè×Q`Û"d‚GG†6ºfζçÛü¶ó ~Ë‘‘…óhèµÀ«Ã%^Ĭˆ šZAŸÔ
-(ÞyÜ)ƧîŽUG9ÇOŽY(Ç !Õ6ŠKôHHyrBpŠ'ûbxÜž8ì­rKÆ€Ød¬ª ¿¯&—ùôØ<¯‘ò÷sdÀd4 'Ë,"ðÅæùžÒ‡ šäcíÀL¸ipÖ)®OÖu¯âå~«m…FéÇÈ™lè³+°o"$|¬é}MôGâË+bjÒUmGöu);ýªŒžf­K:3¶
-·¦0ñ6!Ï¥à4ìÉ~%µÌ¯D§:$ÕÏ =7w§šÒB¦Î¾Óe¡pO\lóÂ%Æçy¥¤¢})ðT9!×>}µ5Œ~ìž!g:EÄ·ë bwÅ”‚iz¡¢¥&BÁ.þFÉ*W ªŽ3¯Ï6çÜØä¬~@½P ‹nÌs #g)ù÷7ßC_œéÙ¸#‡`š@<×ô=
-­ZCk-¿;WlSÐǶixœ}x¸ ™tfáóýz6Þ%§”¨È QØé–aSׇk¢ìÌ/´í9_›ûk¬MÞt¢r¾G¾zð¯µT¨uÊž¢¹Ö!‚=Õtäþøþk˜ èá?Œ,à”rŸR@3¼C%nÁãü‹LTPÏ%þµ.h™¸Í>5µÂ³@Ìõ«iUŸjá³½rFÝ ˜%ƒ::bOŠŒ_í¯º=P÷Û%ò›»„QÍù¿œ™x‡ÿÖ§¤”Ô XPË'ù4¤RÏRCÁ®8×'TRÐÈã„VºF}‹ ôöäᾕÔ3q`/(ø½ÿ‰Vµ=^Ÿ¸'£W®¢g¥
-@¾“Š×Ç0σ 7€e‡*~Óñ±Ø)†ÇZ§à1{’ÆWv)]&¨Šø$¬ˆÜ‘0ë¬ò–Æ¥ÄýI|Ú•¾Ú„‹=µÉ™y.,ðsnÙ
-J±G‚JZ(ŒúÄ{ýà #9Ì¿„ÉÿÏVÛàŸ«Â.ÿ¾`g þØ:‰xz¨&•ŸZ¸ìãU7hf“÷”„à,õþ%6ð-̳íqtÜÖxýk·ŒX´¯ ”ìˆIo—ºaQsø¬kîÙúì#C3Zó>ÿ'UwúW†²¨qrúÍ1\ê 2ÁŒI6Œ6æbS\Ù®Iøk‹+86 .)"Ù.©ŠõÈèõ'&a›S΂&<q˨‡!Ë.Á¥­@ï­ô×Ü–±ŠÂÛ _ ¡“¿sL"3Ö& œê„ðÝ92ìPÃlØš¨{¾2 ½gªüÙ2Rvs_™üC½o“2ËT,̉YØ}¾.|Ð6#–{ wÔ¼’psoÕm×1Û-çÖ±q>U Ü ss¸êa4æò(ò×KóÔ”k¸Ù_z$ Yÿµ
-úí‹ ˆöšGWí“ÄÒÐr×Ph™K?3*O EvQùÓåþ¬Ó@Vxhµíý©OâZl:¤ôŠSSÇЉžÛ|fäÔt˜OŽN·N”Ƹ$µ/?¯·öîi;ºóü¦Àr[ç±…K÷«(åÞy\†c“4Ñ”Þ^üè²{©•µ3GÍ÷¨éužEÒú±)yÔ’m¬.Ö:R~Û:Té‘à
-\
-J¥¦¯öîÎ4â–ó°6 !sWBxkãRìÒÆ”=>çÀÀÆúõ=£cß\`¹gòdåÝäéJk[ÈÒÒ
-Þ­‡à?fà’jJ©s‘ Û×´q­"ÂßóIâÊ{d´¥·îžVXüÝú`M¼}¦1kek ¾´Nv ¶ÇÛ;Ó<èö,5Û
-|ps
-“¸6UÐÓ Û2f•[ΆùÛ¹·aWFÊÙ_ÀgÔûõÔj‡—iŸ#Ííï–ø$¯Š‡ói@/qp¡UýÄÔŒqHÓLCµw7ÆqIöOôŽŒ42Ò,½œ7¦6ü#%½òÆ-ÿëÅÈ}Uoeôrf˜œ}æÑ!–ầƮÂ[Î)xÂê`y´©§à'ûGHtЄ-8Ô“Ê·gp¿YŤ¬cC+çÈÀ%˜yÌc‡æÓÓêœ ÿ§¸:¿š¾úxO{ÎÓ>=O«­×#Ö:¨ÕJÅÅ-K[62²HÈ™¿ ‚¦¢ŒH˜I$@È"ƒ$È d/°zêŸòü|q_Ü÷ÜÏ=÷ûY˜RÓDà ß
-¼à@Eiò-²`QÕ˜4®“ƒoé²K:Òlâº+º!ÈY"ýgÇ"Û"éÎÓ•{ÒöºõN| G6
-<´È€zÞã
->优Tx>°Ê궋»Ë”üÊs9¶ÔCLÌĦ'­lfÔ¿°¶—³»@mð«yl¯ŒÙÝ ¶ú”èbûTkÚž‘åuÞ=˜C?qMÃó¥Wv$èrû{|ã<³:UɪNq‰y9¦8¾Jk /Ó‘që3˻ʻֱŠK Óq9;bh¦cºöêŽäùõ­‘ç×ö¥m™­8ȧáˆÅÕwLj7,³ cï«Ø:½Ó#Ef˜jRÖyÏ.8ÅMŸìÜaãâ©B
-'vá⡲§É.Be€=õ®]Œ-
-¯ÓP¡-€ÑS:¢ZjÇþ|wKŠËw/+¶Ç;ª/XF*/­OÞªLÙ™@üXâ¡LÈ|¥ ìÜŽ‘\%6‰G&4f¦ã#›<NTÇÄ ½}q}ŸðØ<8÷Á,>6qy1#­ëPƒ) èõ ©N3y2I*?ï•Rëö%äR%­êÌPSÚ×u·¿Q’sÚoùݳ@.×M“!£äê_&)ygwfP9Á>¬æÃbCL‡oô®‚½`“½/g!=Ê~ÞÖ4¥Ø:C,vɉ5A5È ºôo úÑÌá& ‚>cOdSÀ„ãqC_TÏ"Ô¸j¬-Ó-kê[¢Ôù
-hº7„5 Ö¬=²7ƒÉµ‹ -†±®Ÿ€ùd_ðt—d¸R·½=Ù•©4^åµ<:á¡ó3øëDgšg±»È!F?5M4Þr̶>ô*0E ‰›oáO” © çs?Ø^Š’ 7£R‹kžé^D庑Ï<Jr“i
-“ÎéÕ°
-ùìx›„ù´Ë8²¾œŒ™û^ûµ4xXÏ¢$-,Þ‘U07 %cß`Ô¯šòüß @ùÿ¦ðEgâj#ª¦Ã"*RMDIkÚŸÆdoÖ_2ŽT_´‹`Yn­uŽSwyåeCjP fÝ €t¸J¬ñ¯jükÄï*ñ¹jš®xÕ’6ñ'cVþ€OM®u+ˆ«TxÒÂæ€þŽ÷©˜û2B‰e‘Üd‚Ý’ÚêUâ*l"$Ä0ôâ¾m–ãœé,u/tæî.áJg9µ¿N÷”\K€~èUQ›öe”ZÏJOK@ <*6jONkòªXíkdÖ¶üýÀ”Üû”= ®Yl®sþÐ>½g— ‹öålØR?:R—yn{²åѼí±q¬ð¿º‘ –é–ŒµáúÌÍá†'‡rtÙG;л½€…¬Ž´Ýò(è¤I(Jš¨¸¸^éSÖü!¥ÿñ­”˜þ½SÒòôƒ•Óëâ!Æ)|¾WÍ¡›Fÿ˜úÇ?Ûh¤¿­ø–à:ªÐ2ÞvÇ·ÐSç_Úƒ«<BÂ28Ÿ´Ì% ¡gWlj¹×sÀ‚È°ŽÖ\¶¿«¿z°„É7Œ¶§ZF°÷’>¤ã56cƒS}^Î,:ûqïGn]ê¿Yϯ3
-Kÿnï=®božTâSàËBrS`ÒžÐóqSÿTd«o4´ÉÆ%
- t0z|8Ý‘9…suƒ]~3 ¤6ù”½„ývù¥*E-†åøU|Z@×…J˜¨°¸™Ô1â]+ú.dÀÀÁƬ¢‘Ä>_”x9iZ‹Y$c1‹hèøÿöYD†eúÀ<ÖöÈ1G cs¯)º+ïäœFÏ>ÇÐW–¢á^²ÖÞsÎ!³ç©¥)›|ÐÃ8Ðù¼Jâ;Ûômúàxÿ*¼Ë„=ƒ3‰&Ϥª°•Çðj¸h߶´7²7¡8?èéYHஈpߤ©›3s\£ÔÄ€}B?0Ò°à¾-Rùûed¶~°1í`›ëÝf´&m=â l[Ä•†Œ|AÜ!œxÄ ‘Gòj˜P/0; «` dû÷ÄÂU$¤ö&ŒÂss¿8¨åv8å̪¯Þ¹ÜUy²N­¶LÀcÔ<ü·ž•ÖRqÁBõ©¢ý¥söÌ2ZŸ~ª$׸|¼CÆnø’þ»µ_äW“kýj|¥[…,:Þ„¿u,€Ÿž© ¨¥¿×¾È­3Í’ ü»½ÝnÅv™3"ff“¶¾˜©_š4ö÷ÆtÝ„ˆ¶‡4¢ŠBZΧáàüÛtð.þuò›Ð½: ¤ÕúÖp¯ÍÃÕ·â†4û½hQòõ"©ô’FX÷ý»êÖ¡4eƒöö²mrϽF.ÛB=´OKCº>†GÅ™ ›t!dJ<ZfË àñÎÅŽÜã5b©ZôîvHIEM’QÿNo§WA©0K¡ßO þ)mzöů6•Ñù/ZùÏ_Zšsƒ[ïÛ„²À6±Â-GæL2ö„yWTÌG!Grj•ZTsà ¬KsN"^
-›VUúPGÞõs§d9nVÆ-Ÿi:k]³-Ü«èÜ€š\°~Kɘ$¥ÌÀs¶iõYãSPAn`y´l¸}ž˜,£4F
-V³k•Þ·j"Ö }Ì>¦XG ‹PÖs:@_|¯dC”"Ø}ý(p¶Ž/1Î`Ãj.Ö+'»1™®™ÖûÎѦÛÚžâKj~íÍ©nè¼û—ÿ!€äÜðÈ %G˘Ë ì®c¢íþ‡9è/'ËàŸëä2 àëÈõåµà6ÔË=ÚÉef@Ö÷u´
-$13Ÿg_$¾v.Ò€ü&ÖœmSÁžu|Ñá8úé§éÇ5è6ðV÷H5ù_ÑÊûÚ$†—øå„ÒƒIÐ-Çl}šN\š:ra…’“*£ÞtN·fgO%¨×—ìClP@&¥FÔ4pB­ ë:JŽe­O<ëÐ̘ŽÿhäRÎT”º„Žý¯•‰û ¬ÿ9z…Ÿ,üž¤ž‰vÌÔÝ?Ûø‹KN,  ®®°@?ºf(…ÎqÔcË
-Ò[Ÿ’ ñ*ðUÞ-tùÑ:ì9Ðoñ‘8¬é"DtT艢!Ë%«Í<Ý€ç…ö
-NÙ-‡ó]Õ¶|VÜ 0¹…†KšÉˆ6.œíÖu6($u?/sËœ;Es^u/Ý£ìÁÕ=¬À&â—¡ =‹È·g›„z·æö4¥ô§Ã¥ŽZ×jgµ}º3×1‹Ïs­ŠOôš÷sø\ß±Ò£¢4nJÛ~•÷6<?ÛIB¡$hðÉfŸ– óµóA£@`˜&éFqY>]·s½ ¼Æ‚Ü€~3 Íúχ)ð!%ª8ºóŠËü›ítã÷ÜÛ¹Óé™étÚNÛÑeæhËæ–ÑÕ¢Z¤´ö5"‰¬²¯ßDV j_J‰"¤‰l$d³A6!—.çôœ¹Èýúíy~û<Ïy¿_Ÿ÷›\ÙÏxq=3îÆ¿T­ÙG¶^xI*tÏЊ·AÎí¨kí¨™F9l‘6ÚÄüiAáÕå7ÄTŸI.9佇+-þ³œd
-ï4»ÒÒ…þ}KA+˜ÛÞ€^j<^¬ÇçªÍ1êSq«oÙ™³mÔä.rÕªúÚ;µ¸ÎÜ
-ýeœž~¾ÿð\?1í› vÑU°
-ݲu ûñi•ýrŽö4ú|XCó
-³Z//¼>
-<º`îɺfé}qu]O>œÔ…[Û ]ÄŒõQÚ«SP/ÿs ¥»…ÿg¸<ü’Þ×8~nÝ[v´S™Õµ²Sž45GCS{ÏPT\ÈdËDPÀm™š3DEÙK®PPA%ÎÓ¯ûŸÜßðÏóù¼ß‚ÿZéø«eRé‘Ÿ±Ø[ÊÇþVŸÿÞÃ6ÉÀ^ÌñêÏ4Ô‘œZlA§Êy…Áª–LÀÁ2¼e¸‡œ _h«t~#fºf˜Å
-ržKE¹TŒÚC ¡æg{o!’/LüÀ%à.%>w_O)þad¢þ²ˆ¿¹8·™ÇØšj@jňèC«Ú=Ï®³á“L"è3µ ÷þl’Ï0)íéæ(:p-0¹8î^Ê+ߣôâ¨+`.÷ÔØd§
-›ìP õTàm°€;·däì]%³äÔÔ*>Òñh¶ñÚôC-­Ü9‰K4 óŸ c£nÛaÁíÄ|ÿ‚è—·ú y¾ßÙžÃÈøèéž:væoc¸Ø_?¡}:j|µ‚¢ EKYDbÀý_Éž¶:n}‚¼5…üóhžŽ¶«Èà•oèkS˜„#`oÿ·ÝÔiýV—~ j¤œ-·ºW:$›ª«­–ËU&éȨñš»gì‚oŒÔ¥:&HéöadÌöHM¢m¨"ÖÚ_úîXßDÜ¡YX>Íù[¿’€ó—=W2òîŒ×¥yJë’nÍP’~]~ôµ!«Â[ÐÑ=˜¯] )Ç)«Mú›Û
-ÒÂP—~º@‚/óù+âÏnscýÙ¼€{¾ »Mͬ=~¨`íO³¡ ˆ …VL¨‚û‚J÷ú\“rGXç9ŒÏº7Û\ô|o¼6Þ¥ Bí¸|Û>{OÃEº Bö‰‰wÌ ´Âü‡r^ƽå^X€s‚˜ybäÑö>9ÐqÑ'Faãñ,Ÿæ’³öåð(»`éxd —xijªwùŒ³ôØÀgDÜíIV¡u3×Y¦U™»ÁC„˜­ n™A\ùBÉ?™n
-wfâàÜsbᶎ‡kÅdz*Eeï/–8ä«U6é|‰9_Äåž™ñy
-\í*}¦ädÝm„¼ö dü~MBˆòü¡ÂçIZ`oa W{*Våü'È 7æž´>ÜÛÔû`ýkeä¾’UçÐrpô²Hß馬wÿÙˆ¯,M—óMìc=²+EÇ/v…è›2ý\Z
-dŒ y7H-viX8§‚qHñÉöQTª®µø­”–ñPß\ðϹ‡¬Áâ-_y
-|È"ä;
-k£Øp}®¥—ž»;Þ\³3FLÙ—R
-Z‘ ˜‰m5ª\Æ܇MpPÇæ¼{‘‰;ºß=G+?™«¯\ê« ×µVlŽ“À—⧊ݫ·RÖIéAù«ÑºLŸy4è@É€µQ žÖ¤…yiÛ±E;rL#ÌôVòýÔ-i+ý£OgyÔÓ9‘pGËBQJÞ?cçDþ\ã7»çþÔrí’š7–ÏÐgzA–^óbkš^L
->¼¼É¯N952¨ÿú.è8_dàìã°!ÈïûjLÊ¥EØéÔpˆ“ —!øåå_pdb£~è°)9g[‚OZ¨|µ1Xj•ÒsàhOBöë›sŸ+’\@žnJPi–/eQÆvhÀ@]æmøÍu;õ‘C†HÛS²í2Dô‘¡ð­Ž¡‹Õ ðf£gnГ
- e¨þ­Œ]±1\—±«¡{”¤,§’\àP±áÞ9>ùÈ,øt- vUÀ=åÔ"¿AÔº·(âz•Ì²uImü$%ózôYÐ î}°ŠQ2È@ÝNˆ »PŸõ2ÔÖS²õ"Ÿ- òîX:‹¢—Ú
-ïŽï@b¯ŒÖ§…hxл@ÖÓ+ö>DÒ™ŽŠÜøþÄÐ’nà§ÝT=ù¥õò’‚”qUÉ/Ž?¹
-<ŠÚw_Gp Û
-à£o*ÀaË
-wI±ÉŽQ4È)¯KÞ›o,ñÏs kC@®”Vð_Û é½¾£!yŠƒ~µ$FÄ؇¡±¾iD€Gªs¶µ@¾OÇ©ù±Æo?6rírfñî<»vWK*;61s¯íÄ¡ûæÉ…{b7ðÖ¥¤B]
-*Ä=M+¶‘Sí¸„-sº(îk[(%§Ò%ïflM´×m 1ÁÖ~Âk9£ |œœyË6LHöÈ9åû6z7°“{i©M´£g5mÏ5¢Ý* àëpuüžŽVé_â’¿웉N8¶4SM|öŽžG:Ò2±ºVHÔ)÷†¦¹äö†¤òѾÈ?1r›V¥ÄLóPMÂÎ æT³öôä"ŸŸm“Ö¾u«)E‡ <‚OM-;³´
-N¬<ξ‰Žûéä÷ýpŠÆ¾nÇÉ*‡çš¥×:g9U[rz¡GE‡|wtLïy¬# Ÿ¾&–¯¶9·´rNÍ<ºß$àÚeŒ|·‚È v…µ§2zµµ2Ö‚0tâžè…è¨Y.4t¹­ôŽm°êùædc¦y˜°ÜQ½Ñ/„¬KºQëýÌtÇxcÆJOy¤Y\æ¬{}làÔû ´J»—¼)%džY…ßV„ƒeAóþ"—¸=×Tê_æQ"Á¡IÜï_°½3¬r¯’Un!gZ»+ŸêDp)íÓm ¹â»ìc°„ð)RÝ\Ñ‹M
-k
-Ðï/ç%Þ¿ˆK{rq­+ÐÇnDŒcñÈÔYxWÖ”|­ þ0h´þů>ymú×) _Jˉ4‰Ëhø#=“èSÐË4EΡòGjVòMk<Ö«`À†)иµÑÚ¢atŠµ³2Á!!$ùElcS5-9aÝè×—ìÃ̼¥.r¾±»ú£w—2ÃÉ W1@7¿DŸ,×€ýZØ&) 0(2Ù¯o!›$”Òí2"À@5'–Fô+f¦¢Ï­šGÙ`˜{)!ç`Ž…óM5äȨ)·ÔôÜ(»¤&Á5†KØ¡dxåíDçx Ü+ç×zUíM)e§:¥äŒ€ËþŸâ:ñf{Mã
-8È1‚N`äF ÓîN±³BfY…/]øôc-¥dGE
-úG[>Ñ ªüçf&Ö5DÍtöc Ò‚À-»tOÓ.|Vz0ƒI¶Ê m]…Á[òšèC£|ž‡\Ä&ìh¾2‰ù€ã+wÔÔÎ!|¢M†ŠÚR’@޹ƲƒzºÒÜäšf•íiÅŒ#½”»§æÀ]j~í’R Õö³@ºNbœCÎ)ZbçN7aŸÑÑ!t|¤^ŠM°w‘ÁŽvÒS *LËG?U‘*î¥Õ!rVé#~~üM>ëÎÿç¶:BNßœb—¹g$¸õ™v–¶—’ÒýpGË/>32jªÚë0ì™c¤.Ê¥B¾õÎ6VmLÊú¾ÏµÍÈ’À]5µÚ;[—¼1TöÄØZpo›âßSº© dܶuÁ£-Jv1:?ùvlð?}†¥Œã2,­!&qÆ}51æ&òį™ Ö….wóÒái1? Jãžúæè?Öx<·¼"Âö¹àÁœ ó—Öª°Ÿ -¥Ñ =ÈTND
-ÃnÎ÷³·—DŒ ŠcIü'Yy 'F.öH#ÂocÓôMû‘oopóÃüÆé)÷œ1ÐÈßfEù‰?Ö¤½ß×¥²K;§ñØ@€z4¸ì¥®ÊÐQú‡
-ôl‘ùa¢UíÎ’sö´´{†·ÐR÷5bŒW tÄiFÁæ 2ÆÒ^òXÍ- ÆgÝrtÖÆì¨y¨ÅŽšöxô™Ž ?7²Q&ñÒÊcy”iN©MÅ„li¤l—®³Í6Ö‚tÏu6ûšùG3ô"Ÿº!ï«^u¨#äú´ä|ŸNBv
-å®onü§Ä†S°ÍM¥:½ 4G˜Múr~¸þÓ5jãŽÅÑûȼŸ‘\»…ü7tìѲŸ%,œîŒK@ŒšE¸„8ñ‹9ïveªª åœÔ&¤gÎØDCE78T @Ô¨‘Õrhãõ¥í|t5
-À§·ÈòfzSÊÈîJÙ•@Î==•õÌ-XçeÞµ9RxsC3.H’N‡_Ö°ûCvw£hß ¬ðÑßNÖ}š&ÞL¬P~;x‰ÿ>ºØ}µºMj®xô¸Eˆßßäv<R°äOÜ
-ôœx…´cXHɘ9yŸPòÈ…Q£„²ˆˆi«`(a±9HªîðFÎ÷Ģ〔Ÿ°JˆE¿zº‰°à•q;o kc¶e·ÆŸTœôŽ
-,¼S¤ýÊ‘Ú‚MFK™ tl•]—ÔsÚ"›¬gþUÎï{:>*ïQ
-ôÜ.x†z;ašæ%ÌsÂŒEŒ¸ˆ‰n0ž˜ïä4 欂éK½Àpq›ƒ/º
-Æq©É"’ù2¸ø:æšCØô¹þø/zÝ…
-RO$;‰I+ô<i–Ñ-
-JaIÎ&Im 0‡: 1¼@»^œ¸›Üât‡6 vÿ2Ø3@Ä#?²ÖÉêNXíy 4ˆ0f¨ìS)Éø¡S ì[f¹žµ„€n•ÔÎâÉ``jüazÑ\¶qpE§`Ô¿ÁkÕ0z.JpõŸ_²Ú3F #¼ˆ½º­ªû2²Ü}%oç “+íž|JiÞ+¤dbn[D͹Eã;ˆ)8è-Y#ñAÆ>јÛ‡}›¬fÁxã%FsíŸÊfÁPÅ!£l‚¡²ÍÃ\bÒ %ì"bVÈB
-U9(d"láUvøãÇ0PõòÇN}BÆ‘G0–²°Z÷–(w’›&i’<jâw^¶f÷æ:âÚ×cZ\mÆ4ÖP‚yøÀòè“ÀéßU?Ä(:lxiðÆîbó?Ïü˜{ov‡êO‚
-VxÉ#Úý$ª }ž;¥Õ1îV “A-ß±²ã3{±‰v€¹x‰Á„€ró3{ëCE{Q™¶QaÕYÆ)?HXÅ„¸–;‘7#ËQ0^Ôpfûä `cÏÚ„Ûw|Š½/³FÖ|C)ÑcÊýôÉþXÑŒßçpõ§4éFy‡íL-Øö'óêwu¼Õ‰ˆ­°j…ìV"õB
-pF éñ ÎgñxÎgW]ÐJÞ(|“<½3Ç#²•O*NÒD ;\¨¹ÀÕ¦_p3"ËYû13i•íd¬¬ç5LD+º”pÉ'ƒŠnÞV\CúöÂÄY+9”ü´Ãvê×é)!™èÙ¥IAë:•`îE+˜,ØßM^bK_½OÑ7®bÀ»k<ßûIu°ânW,‡SU+{®䬢ÌÕ~˜±R÷ kªä†6k ;wÊx’”,ßêyØ«í DîD`Z' îÔýÀzΘLánÞ …×I¹á: sI©ÜÕ ƒ{°D\qŠè>9<îRIžÅÌ2BÕ$m‡¤Ò¦ÞÉhˆ"¢¥;MŒ6×BŒŠþÚ'x{+­ÞºwiYÑq7Ác5‚|rÝ ®Ö=ô™²sw¬…³5J"¢ šø_I|P¼sÓ 'eCVŠ¿Ì:¾wÎîÝ*´ìÖ©<bè{îâÜïs6ä ›“»xæŠ2lT›:I˜ƒÏì\Þ,vÏÎUŽI¤÷ß”R8ëÑU‚:k3¢¶ç]Ú#·Fµt&V=>C•cAµbÑË?økV ¾ê„•'ƒ¤Â4LKtâ¨Ç8Än¤ rRó0¯ŒŒ*Šp?°+îݧeyºƒY Z ë8ã!-k,cÜÒÁnÄ òeˆKÌ;ä~J¨¼*ùûy™«™èë1)b/«p¯‘©ú8×ýÿ»ÄhEöúqòËQšMe¥æ^F‰åmÏË.æú -32¨b˜†ØŒý&e¡—B‡«ƒ›qSåÊ[ €ÞŽ#а ÒR¨x˜¥o2Z3"—&ÎÔ¤°ÎJó¨Ü{g"ýS#“ÿ·´RG,õœ¸†7á±ïFÈÉr­`²£f‹Ð¯Í8ê—!twü&%·ÓR}3*8LX9/Þsÿ™žìP› zTùíÑ.õ–dýа)DðTÜ‹À¤²K°’9•/y¥ÚI‡@ýÄ*Ð>R€©¯f~eb­ßë…TúnHml…´ö”UJ èuD—J·è?Ѭ'mF‘Cy²fk¦|j9n›£&ω[ãáøÖE=dxJ_gÜfÌ“î(€{fªî‘[h^
-+ŽßTÌéC†þ[à ?äøè #ÑGOeK~ùéBPaXŽ¨Ä/JnðuÁNyt‰1^wÂÜĹNZ¥»˜øéIª7Jx˜?co–"J PêAzŸ‘þ]”¹qÆÞuƒ{³7y¾â—7ªEäâøøÊ!¤|ª§ÓþÒ­\xP'*‘5|ÜÍ„˜Š*éKgœWuÜu}Bâ§i c"££LMôÙ^…ëA„^öð »d7n.ܥˀ`ïÒÇY­¹ÉÏŠN`.j–­» fŠQ¢Ÿö+æÂúãMZ½âÑ[ALíà:ÿÇp}ö5u(
-ÒN {b|Xc>œ¾Äq”=q9µZ$¯:]ú -
-3ËQ³¥”)%jG»IïäCsæzˆ©FûåRôªľuIï×ô‘ý°Þ²Љ=í¨qÃHœ¯„6F„ ë#˜a/÷‰}ý©µ?$S½
-kmcv‰»CÏ^¬áQýOqXÒµ®ÚÉô1œàÊD7ÅÈX¨zÖY>¯* o|RFá5/š!›Æ5kCD½&JsÝUª=žµT‰ãÃbîb=mÆò¨;—ŠÇÎ]}Y9u.û6!/£2±¡ '…1¨+2óCÝAÈ4v죴|]%´}^#wÅ<l¼mA‡Ö°eÝR¤âè‹íZ{¯]¡BGhìQnx¬W¯0òž"³Ò\ñ(áסÊÉFÂxù.lá”’«
-äßÛÒÓÇ`Ðì}ÅïýMnHà7ÇVÐbã:”Ö$½0 Ô £O¶áFDÛ>xͬè7æŸ3úú.Á³Ôü°ÂÈÇh×]qîUÅ<ò@œm#ûÖÆhÝÐŽ?ß1 ‡ÂV´i§‚VÝ”K#©s*ø%n­®Å p·AÐz?‹„dÏ ²ï©Ê*™È…™‹»±”[غ©[µ•£?¶6Òz0#Ù""XìV¨ÑQ"Ü^Rߺí0DíÙuëcnñxØÓ]Yp†£dØš@š·„<³œ=8á¸ÖÑ%ý®©}ÝÄ<{;óuëYRvæ}”•©f¥‹4÷)™{KRæIPÀzë¡tîøQ/"r8\LÎÜ®\07(ÞN1ÏQÆ¡ÀO¹3òßfFèÏz±£wGÛi9付ڑkèö´™¡îë§È$”àlR5l³¨ÞÇ óï§.ùÎÿ½/2|Ûá ¾ìBÞO[ªÀɚʴÄkË&Èa´i×ðäÏljS¿Í`'Áb¨Ê,––û óõ>=»6î§ý±©\ü—!a‰hÑéR ¦WïsAÙž8}40lL›AÒÇ4?`jIç*JG’›êùßaÚ‘ w
-ÇŸiL,,ÀŸo­'\äMóo;ä õ1;DÜòA÷¢Ól{­”Á¯'Y²·Í ñ7ìÿc²vwzÔyƒ2æDÍN¸n‡ iý½Úmò«¸VÍ%L«ò|V¸õK#PQN;;2È€¤ý1 > CÊ-8¼á˜8¡É²Õ»]î^Ñ$m÷~Ϩ? Ý"IniÓ|ßÑiNinÑ$åŽ'\G5yOˆ žRŒl<ü].Pð¸ÿ|{«ðòˆî¦cAY½»’öÊß8CäÖ69jâ²—JfiÁû,ð]=‹{P%ãÝõ”M±>á̹Ç‘Œ ó*£(ñÁ ¶¨#¥­žˆ¢ôÑó¼rÏô¶Ëk9\^
-õÎ2âÔ
-,æ¨D®Û£0D»uƒ„Å›ÏËçÎåÞïI*+%^xÕa¼XÛ¬=ûä%=!ó^Pðœ’PTÉMHÏìPyd çOö\cÌsŒ2ä•C.­Y5±Ðk&ZͲI;¥T¯x {ís¢Xù(9€j锦vÙÒû†|?•—QÎÜË~•–ZÜÉD—3Ú€¤$€BU'àÌi/«Ù3³»Sjjg®Ã úî£U™üÛÖ¼îÃ
-ŸwŠþv¸T^Ç¢Öf}­ÖÁ›\~/`‚ÛuS3žL´-‹2~8E^ÎÁãU?—v_¬«›ý¾ª²ÿJ]…Ìs;bò~ˆ3é¶#T¹Î×Ã’í4‘{Ϩ±,t¯1¥¬~.±¢Žv¦ t¸qÿpáJ>p' —Ѭü …ª›JbÍsr.bQ ‡ôtÀl¢ ÆÅYPµÖE×N° ÓbY]SáŸ*›%g
-ž¥•ÔÄšðÌ“
-:p#¯¸|ÚJ½ÝääOw“îüŸ¡òúJ3A ø jªǸ‰%±·ØQL,£Ø
-*Ø°!¢€€ô¢"í£÷."ˆhÔhŒÉX’˜™³ÉìžÙ}سçì?³¾Þ‡ûô»¿;sdL–lP¢6+ù<¤•\„Ú£^ºáTá VË [{Ô‰[ü˜†!î'öMGî!ûAXqHzŠ²
-&€ºfäÙó% ½xÈ*§
-ñÚQGù¥‡$¸*{=â¼ÿ²Mw½9hR©@0Ü¢i »pâÚut ¼UdÂД<ÂÜ*:´¹Ï~«sj/3eËeö¾‹è2ÿËæBÛe‹Ùµ«&ô2G»bý»¬ü„¡òËgh§YãóÒ† ÛÚzÔ7
-*È@ ‚­¨_‚<Hiî'ÕC]+ñõÍÔ»Ø>Zæ;¿~‘3=VÞhÝ «,æ—5§Ãlù9Š"8.%{5÷®Ü®k[Šƒ·0n&罆$$V
-É4Wžd{ÚŠ–ܯo¡?ìì—> žIÞŽ¸Í9òm_cFóÏ= õÐ4WYÇf¿·ÎÂü+£¯jÍÝ\¦0‹AþM,?íÃÙ…cgÀ'í3w)$Åã†#‹4oBcxë¤Ë®>›ÖYô¸Ë0÷×>kò_‹#?¶©½_ü‹í_ŒÎ=#¶®b~—ÀíqÎ[Œ6ŒQçÒjBƒ’e‚Î6’©ÊÜyš¾€Î4V¯Ê@¤RÖ«õæ虈Ù}¬ËMçç®|éßG‚Åï;ó}ça>éCØ¤Û zÍ[A·Ìã³P4E£D¤+¡²CÅ“ÔH
-£I®G‰`¨ÅíjäB¢•vÙ/…6aÖâ›±ŠÄž{¹[®×-N)áçtµMÇ^E˜ã‰9wT,‡IÖ®ÕjÛö‹Bí%–.z‡ ðb%³¬ham—ðAJf7$-«¨ª£@^´.ÜÁà¤éd’5o…ã{¾šq§.vשXsZ¾ô ƾDäÔ÷þÕQÈ«6[|“ZCt\n¡µ–^iôâÖ”¶f™ÖÓÎSïu˜Žš²4›Ê1–ŠÁ0Nïp¡ÝnÓH$` ž„Õ´¿>ˆÿ½àóÿ÷M¼þŸs‰ìØÇí‹øÍÜ@зºy‹~ЩմÛt*”É ï0ZF»Ÿ`°xÆA0€Ñ;b,ÓFˆíöƽꅪO>æâÿ •×W‡ŸöqϼìÙ=ÉæL2“²³3“lb2›˜ª&Ç.VTTDQ¤Jo‚" UAzï]@Š  ‚k²gf˲¼ßsîýý¾Ï¹„Ⱥ–Ðyç¬O«ÉÛIcÅMí Äf&=<ªÏ¸<¡_#Ö¯-ŒÝYa£ eš.ʲ©~§x0AµuõÏ
- ¸µw8®£ǵ½Ÿ™>,Šµï„
-ý€Ýë²f¶V%GAÒÔ úéЇ™(ǹÊrRì͇VµÛ†H£“#e
-H 1tód[P† ÐFàø?B«\íâß®ï¦>l-<…‘Y¯E)ÊmãÂê¹ÏQAÏs©ö»¼ÛVá{bzÖLÄ$DuÜQ¯R8äÓˆ'ÜJÑ°z™óJÁS´Èù¦Þ5ž ¨^5NZ%Z°}m0¡Oîëx3§þR%ÌåŸø¨“)5®5«! —}LƱŸO˜©}~õb¯ULi4 u£‘§Ti'×W$Í!»Á©b÷zõ¢Ÿn–t¬³òþeÒž—ƒ/ú—å-ó2¶¸pæCölKûÄă÷÷͸¶¤ß´cd‚bÖeÔ¦–Ú•pp°q»€0,hùSß+ÙSßêøðGv9·Ó¥“L…Œ´®-¶a×*`{6ìe?‹z@v•\¯÷ÌÓov ³ïSVÚX.°nÉúÖ q ÔͼjZ§cƒÛ§^]H¹ª&μæ«|H¢Úžc ªpÞwTÆÊ›Åeu _´þI.]i‹Û”ËÇ…½èf3ófð2È]¾‰
-´7ÑyƱ Ú–üÝ-ÞwJfŸ;”r”RêD«Yå­û¦–eA‘¹þ<†úflú Eú–Ãe=SÉ6FJ !jX'gõ´ž’7TòàG®‚tdZªõ,|ü«Ÿßô—€ôSØÄæáAOˆ Æ?…Ítb6"”Äí‹Ÿ–Ül•âß™Äø—ö Zæ…=¾[¢bdèÙÎ"ÿjwIz“¦Ó.·Ð×±9ðe 7]
-ÌSFlG2 RvÒ)bœF8¼ãÍeNÑÏ&˜Èb€ιýY'±/åàÀw<RiÊÇ¥ \ÁO#d¬DÀ‡Úw¡
-jW¤êÃuæ2
-¡&µhDo2,Èu6ªJiÆ4J¸ÃÀØ´ã[
-Û,N9ÊdíjÆ^†9­·Ââ¾÷iÍèS p'¼ŒjÈéب=#˜VÁjC‚ÞáGyÃ<p×ÌUÔ>òøĶ¿ ä7[4ü¡ ü:§ù1§y\°ÀêŽì˜–´Õª#vÞOIÀÍ¿… Ðs/¬ùÔ…n/¹ÐçA<¤è'€2NúØŸÇ=ÛéË1:®ÚýÞ}Ûôû#¼©¼‰–ý„áJÞ5ϵœôÉ› ý5J†ßD(³Ç.LïŽ
-þn[™Pcê‚kÈW)1bÚ3ÔÇc7~èÄ5(˜arúéºLõö)ÅtÍÎüURCîL«ŸËnàÜO?óG/‚8PÉ®æn®¿²IE\´‰œ6˜PÎýº­Àô¦µˆºˆtâYD
-{Sbëã<¬L… I©µèZÛØwò9‡<$g®ÍÊÛ¿?µÍvžo.R¯ãܵ/1žâ:LEVüÐ_sÚÑW§n:ª\dVÂŒ…¢ 9’ubû“N>!æX¡ûtK#âEÆ4?~hgLmØ‘¼mºãÔ‹,û1?ZÝ·q[¨v<šÕ#êBÂÎGÆñ¦›(j¸$ÃŽ]¤ÉmÙø³¨d¸æb›²PŽRû–ªo´ˆ¦Œò®ìE ^GðÊ&t`‡¾Ù·Â>\Fɨ¯)2éÄm
-
-ÚïeT#5y=¸öÌèþ}‡ˆ>MPñq ±;ª!wߤ—äEËLCZ2üÃ6oð¾o¡û^Jú©ìDw_©³9 nÄÁÜÉg
-Ï3v­Äþ‚—<UÙæi+)¡«²Ã–D´7a4a@ÔÇ 8ÀAH Ï„ÂŒ‡ ˹æ'÷ì´ñJŒ¼Ž1WAüì…5pÄ
-ÝUϾM* /l”ŽÛe VrÐLëŽxêå©Õ~éE÷^øZÐ/vó-ðÉ<Ô®§ÿŽ0è_袮ço9yë­##ðç’c¶ñÌKWüLlÁJ
-P³ÊO6z_Yz^Ú¦HY»Óô VÔú–æ“Óa€œ ä§;ã„´]âãÖ‹ü†Ð"£äu>ñx™ß] ûTqË1V—bý\sk{¬&þ?;]ÏÍíí.%­Ð6A) iÛ¡%ZÍ¡‰?0’‘©Â¯eVEVy˜c³¨Û7Ç,3 ²L_j! w¸ÞÝ}dä´ìÍbó¼³è4³„œëÖv3öÍýØ^I¢–çýþuQ§¹«ж"ö×x„€ž‡tí4—šÌ}/ƒ–»ªöFëxsÊŽäÇÜwKš’jJÁwG÷Kÿ >Ó+§@Ö‡šï½">ŒQ¶ÃÝX`–_œçÕl ­#˜Û;ãØ» 9}w’[l ÜÛüDJ )z¨'º^Î1˜Å¾ùæ쥰 Ë=Ð3ÆeW¼“ôR@ÕEtÏ;&wãˆ;¡y"$ºH/Þ•às¶Fš27‡P Nøä¨^€‹Ú‰Ž)lšm¤ä’]\uÃ;ƒÉ
-ñÉh¹ëýe¿)9˜Izö/räÌZÅC_I¬u
-Ñ|Dga#ªN, h«ñÈH]1ü®émQœ¾'ÿâJáùwu×ý
-^]J)ßwö̶@€yzKBH÷LSÒ–™°äò93Æ6Ú\tºÚß å¡-ƒ5 «¯Ÿ\2æ\
--¢Ó Œ²¨–…ªXp·’UæÓˆè{*ãtµ‹}b‚Ë|œOíó/0 £†V¸UŒIú:„IpIÛ1€BÐ]¤ûg1iÎñ¦dÓûªk¶á¦DÐ/µ¡Uq¶§úò–Ÿ±¿,À¯ŠøÁùÖR`®%P¢s\Òºtœ–·· $xõ"¦EBƒlKZÒ³hÐ À´”]‚ÊÚ®3®ÿçæPãMÃ1ƒ{è”#¸g›²¢zü@ÇFœ®r±?¾¶·E äÖ("Þ£$—­÷öª6„wššçšÀ¥zdèä½™–œƒ¥bDÛ†ÙïhèÅ fU»ļàµÈ:T›ìžl‚ØG’}S˜Ì=µ+AeZ†7÷—º;†rd™^Рn:Ó&F?ð«éÅáev]ÈÀiØ‘`S6Xx{¼󳮀^@²Oo~ª÷)q9Áeá³ý ‘ðØ, ®±0‡–¾·¡Íªã¯ïfþgëî;^¡Ö8¦ÑÛ÷=
-2ä?lìdÛgÀÌPPŸ†4¬¦ˆ†ƒ k9ua0“l$dOM]ýPuiåâªu´%uoZPíšdä[‡ðI€¼î”± n¨«›èœ$gm ât} ¿[‡©Yû‹ÝT‡˜ü8¨b–„4­•ÞiZ鉖Zy¢ÇfèH0û4-çë0.ñ@+ÀF8p§ôé*ÞЛ;ÉLùËbWnLTÍ®ô¼í(6MÌ/ÿu_ÍEž®²NÖ˜µa1Ï)k¸k~Wþ›ùUåßìcÔ‡›£ÜüøÛ^)#×.&=Þ•¡N)Û)iI³|DÞØhLöHÛJ,ŸHéŸq~ãa1šÎê¿›ÞTßpŒ5Ü ÌS Ýs4¨²¿öæ(5?öÐð\°+¥=Y{SùûÚëüs:aþ¹•ž²ËÎ1tÊþ­Àöˆi.ôçåWUq‡Æ6üæ—† +ÿ… øìBwÑÙQrÖÏ;è{À³Ò 2Õ9IÉuHé9—äS0ª¦ù™ggø÷c—z2Îo},»Ô1J|*^ýÖF©ý úcSÈ?4µÓüÚ¨säíxE¢u¸öÚÆ@ÃU÷ô3¢m”ödk~Í>¿îž@%,=/<§äAbÁ®|Ç6ŠH1¼,ùÕ>NÈ -P;ã ¤øÔí1l’mqÛ#­¿²ÂÿDmf1.}ª£ô¼KÁ®Š®tº¶Û8îÁú›Â«n)2É7Ù˜R²Ö¹8ÝÛò[kƒõÙ§ëô}½¼5xXG)²WÝ´}.ý‡GV—t¸B­5 3z3®†µ,üŸ_…Â?Íí­9J¾{dà›Ò8 )é'·‚˜-De\(K¾ôWu_uêKçßk\Œ[ŠI×ó¡ôÌ3ú.è™ía$8“×¼öoAfœlò˜ß­ÂÞ ªµr_ÛZíYj|_tÙ:Vý¯C ›XáRíSt˜±›Ô÷½=XŠþkéàž®p))2{w´"Þôºàâí¾áðZß'¯šß]â6홨 
-éè5'&Öÿ).ó¶¤×5
-_gŸ†í6ˤÔÊ KMsÂÄT4DDp”sNƒœ EDÀYÁÉŇÔlï}ÎÕuö'9¿>Àûþñ<ëYë^Äk=»-Î
-\ëÍ|v¹PËúah`_ê1 s6ÅB™„ðÙ,+Ý>ÍN?Ö2‘6%ì`˜¨ïLi8ˆ?,vÚ×~Fˆ¡‹ÑwžÌµÜÝ>fq9tG‚í1áºfìƒ aÿÁHiŒMYcÊö6ð“\–;“]¶%DßSmiü™FÆ©š—¹-.
-:VqRŽÕeqGJJ°M™óòLK†ïJ‰SM¨û“ ™Oì<¢i  h{ˆl‘QCÕEQû_ÈÛÂüæ¡2¸´ýPĈsÜÒ v5gSU¢ÌZè\S:H[sÜåz®}. ‘¼Ëò %úýK[ãs5^C°«¨‘+üÔ‡³Íˆ{ã5q÷tmÙÏÆj ?[jmc•©ÇjvêéXÑ>ÌM¾žàeÊŠ"ÇëN#œˆ[ ío{°(é°ùvÔý##ðëÔCyž¿¾%Ém£7#`_žfåx®öä†^Ï º­JA³_±ÐN‡®÷Q¢®gËÞ^LÑ1ÈØ›í#*sî£Çºüg¥¹ñûR=Ë:No wf:ï &»Ÿj¨QV7ÃûÆd:øj±ŠlUÓa
-n‚;ÉÇ¡és[΀ÿn“LacM_(0rØaUHŽù °û•®$}_Žó[ëNt›nˆv’0ƒ×w$¹¨*ߪê3Íwæ^Ï·Õ_ÍT“NTä³0ÉMÁ v˜¨OvV×%ƒvåTøÉDIÊbÆëJÏÉ»Zøo˜¾øÿ¡œiWç"–(w%/Ñí|®"sKž½Ú“þä@ž¼/¥GXdEГ)FÒÞX1òsY²s3.ìpËiö‰¼i0Ë×4@ôÝö|¬*„ÙÇ‹
-ÏA¦>²×ÊGü3]kºÇ¯ï˜W@žéú¡šºÔûß—ëªÿ»ÑÐb×’c÷ehÈÁ—Üð= 1ìTSðm¦0þ[5Üénbb 1ì®a–ü÷ö§¹+ck—}¢»#ÅAfbïv罸3Û†ò»Z©.m$Þ1ôc®æk(ßçy¤s ùõ·96ÈwìÙTr{ Ö€9
-龿‰awÖ¥%;ÍI]KðÚ•U&nIË ëŸ)þ3­xÈtÆm¦ãòµ“ô|o„?Û™ë«kÍp·kY©ûRVÜ´,ú|œ hj¡„¹ûÂÐ…s;R=GÃI;TAW{“A‹m1Žsµ šÞ‚€7ÃPaÄ`y¬ÃRGA Y‚y``Ÿsã:òûˆ¯njkP÷W?Sƒ”ï±u=¼%¡C ‚Ï醔Fú©îÎc˜‹¼ÓOÝÒ·‡Œ6â|‡ß!@æRÈ‘’<V”'ÛǪ°‡ÊR”MM†ïH²½
-bÑÞ\LVå˜Å¤WÛÙ/e¤@›<?h¦yOÁ„Þùuo[ÄW¦<XZç:D ¿ghAºžª(пtœìËÙj’ésqôB ñéÉŸgê-G+‹âl£y¡+ü ˆ‘õÞS€ç¦ÿµÒÒd¯@ïÊ‹#vÄìx«„q¢Èö± ezoŠðž_{þVfÕ4éùž¦_œÉÁ¬vÏ×bœW>äz.ueù-}ÄB™¾ÇZnž]SÙ½7úsü7ûó¡¦^Ò‹ŒÇëiÌ ]êÌxl’C.f˜3­Yàɺ”€¿n<Ô"cÄìJŠ"m@·0Šˆþ½ ¸‹e¤ eU³Ód¨ûê7Q~ä-ue‚“ð‡59rg”ƒí #Ükp>ÿ¾^¨"ŸNVfûsCÆkM×'¹ÌÖ§ƒæêS@ßfÊpµ„PgaE¢ßÑté`¬
-=×öPÅÿì®®-Áiºê`UæÄþÜä•[µåÈóY^¾IH
-0õâ¶zs‚-ƒ$$àù‘+3¼ÖûÓÝÿÙ{W}®cV…9ž6 -þz¹“½ÔÑþÓÔøþr±4è
-ããHcýcVò_}uošt"¯Ã
-hüŒð;WUco´ML§´ldµI˜SEêRÝL»X®+ز?M
-H‰«}9æRŒ‰GˆßåâM¦§ˆ[`ølðý­D SFÉ83 «ßõB¤MLƒYy…Û}PÏÍnøÃPÁ3ëáÕ¹à}U~c¨ÄÿDÆȾ^oiºXmb‹))¶™üàíOo}·ûßù;ii)+Oþýl–öÞmKÎø±ÞôáZÃ!;„$°¶ ì¿Ú›ûzc ¢Ÿ!$Ÿi`›ùHëÃØç
-þÝPGÿeæp~™Øµßw*I.%¾Á…>ý2òÀ"À'Ê:rcÔý9¡N ³ôì ‹y¥¥~n×0¿n01‡| &Þg*ô`º,Æ2C‹w,Ve]¨98»¨2Ý%efÙ@ÇÍâ".d´Œ+«À!f#öf«’/ÍdË#uóS‰·~ígš,ö×t§º¯¶¦xO‘/ä¤íl°yq­h ¸¤tˆ}oãS“´½¹>{sØ#¯8Àʯ
-‚t}ùÞ§²ÊÜiõ{Ë%n¾<^;„ Uõ _î "oTÍ”}A]ÞÖt8Û†3Î5ÂÍÓ´Xó$.b­'÷‰y¼$ØìÓñ"#íR][r8}u8CL<•¶UëG«s¶úðþ+-¹ž‚šÄû²úÔ{—Ë­t‡¢­rk²*]Ú”ï~¼P™y pé…ººÀ¾T– lË÷’7!Ÿ*Z
-¼,"zæ‘Œ–nY Û\Ut»ÖÞúUÕP¾1„ Ÿ 'ÞÕC< ˜P§¼¦øVÛÞz«ýØdš"DX,Ä…²³Å%kÂëGÉ1+=„pI'6`„ž}GÑX¸
-i™/
-Ü›¿0OFïµN–†ŸŠË’w&P aC¶Ç$ð?®-½R2à»\˜ÏÚÇXOý'Èsó8*jw¼8Ì).»”Õ<VÚ=IKþëó6þZÍÌwI)à/}°§3Ìèÿˆ8'ŠŽ<_U7&\ÚD¥<¿;ÇÜ(Éï ƒpßÍ®ÿgÛKÛžóx{¤èÅÉ23²)×/;ÌýlhÈÇ" w¡f“¬s(a æ»Þ uß(ò6òˆ‘†ÙŠ¸F²{/ô—CHM?“Ôæ],QÓìl¢‰Weã—Äœ+Ê’ÎÕ4Øê0.8¡§CÈȺR–C.¤œÛ5&îv³®ÜÂgd¨:Q|Vö=ûbM願 ÙT$è'Ðaó5ÉϦXàçvI9ôf½šy£«kÕÏRg8àG–E"ü×ASÛO3§Úºˆ}«h{¬õ¿ 8 â.WÉY<l ügCqô‹oÆv.à4]ßµ$ø¹Ÿ´ÍCø­Î 2Ì)®ÉrnãWgºäläÉ
-cž¢D;ÄÔtÇ6úRJNq‰ [#0oýç\?ý(Êß%¯-´Šª`†1b˜eª"È௠ȹŒžy tÍÆ`A€¤|×8Œ‰¿]mo>–ÒÒl q>¬ë)² P§¼ºàDZ‹8° ºOȧ3ôt§„Sddžîôúh;2Êë“îrË¢ÿP4AŸ8ŬüƒÙªLý()ôz­‘~¦©A¹Lø±„”z¾LÎÜ2Õ¶ð?ŠËó+í4 ßwÎÙÍ$›ÉlœtÍšhìQ™$j4ØÐh`A¤‘ŽÄ¨5ŘXbED¥J¯Š¢AAE¤X2“Ùý°ÿÇþò¼ç9ïs?÷uQ‹‹bÔÊ(ó‘g†Vvbà¢:zí¹½ubæ¶î˽ӈÔý9tF`‘
-Þ“uBF©•·&i¥þ%VµoŸç›A¥ÅõÜÀÞÖðd)½ô‡c~ bÖyö•”òÍ ìcÇ[LæúLNXÇAµ<¤€» š‹ŠZĬ½y&Ø6Œ-‘ð_<´a*þt ÿÙðN­,RHE®sO·fí*x—„Or}¦–Yú1÷eœç?Ë9ËŽTZX'Â÷¼#ÅæÄ-JÂÑ#
-ª;ê7Æ÷”"ðE)3ïoû3Ðô¯«TØ·/<¦s— ôzFT#h;³½9_
-Ï,TX+õÎ4Ü÷ŒÁï&LBj`™Ó.ÕÜô/Ð*˘€†Ù1°¿$=3¾dh_—¤¬ W\OX)Mq3¶ñ v×3)¸äˆŽ é­GVÙ0†ÎüH,ú»RXc_ÎoÜž!ä[¡7—»«¯¹>6¥< =6p~½ZÙWwC;Í iùhÏ4ù‘çssŠu öú"ûÉ绚;gVZÓé:á˜h-’‹ 7LX@Kï΢Š<¿
-Ð¥ð­ilÑÆå‰é©pGÉ@ž¹ø,ïlsáÆäjÔÚ ¯tuE]¯úm|š[ɃßÝ¥½$ª%W½WíÁ?ðH°ê’¤˜ÏLk¶©|qåmÕOÞ)tVÌ$$„ÌB‚OÁª:Òð›·§ðYþy|ÁÞ2Ã:¾¤ë.ÿ‡N\ð¶ôÔÞ#Þ—ÓJCêκˆ’]ïŸ"†;êc^«_N¯p~D¥:Þ4\Û—uÔº§©`Ókè•Íá–4 _ÙïÑyŽßÑ™Þ1\^XÙ Û“‹=Ÿ[Óv>á@Exr¸Ô–ë“b²ƒ
-aùðÛu×'4(fx%<P ‰ACGÃéZ'6 Å?Ûkʉ¨pS»æ]¢¿¡”ýP³šÿp÷ Åì|rÔÐÙ°-i+\ýú/¹ða’oúàÿë*—T‹Oì"G‰Û…” ž ßU1+·Ú ]ãˆ{g± íùŽ
-û0!Ó+4í/uáÃË|tDK­Þ•â
-6>£ï»“3±[Žt¢vË{LºímãÈ2¥ð´ü ¬ ôm…Õ6“|J,hW†Ë ÙH-Ý+ØUãËÚ¤ˆ–ø
-¸ËcÛ@í?M½U—<3ˆ¾E\¾{›¸Î3¯¤³Z?ˆ¸cèƒ^ )…Ma¥°9,"|ÓÔâÑvÐ…DÆû饽 Ôý¨QˆwaÒ6†à×£ßßYåSOmthTGªpO£ÒÇÛ¿(€ÞÞ%ä¨Du—ƒjJeÂÂk‹y-q}ôp©ý‰w¶%mu¨î²©ûéGj p“`ºAlêÚt¨bBÂZFmÜÈm9”K¼óˆ\`rý
-FýùZoo@°ãáÑž„ï›mÏMhÙ §F15¤å",È[›³„ÇQëÐtÄ2<·ô ÎÖ€.0ÓžÇ4”ʘ†=ºaw™ƒ²Mâ@3äÊS[7Ï/kË÷IšÓw§“¿ŒÂïF´
-i1›˜©Ĥ˜ßàAU/àbÜ™…‡Žˆî)XÊŽ¤)-¬!AÎmÎ)ÀôëSÄB¿Šù¶)®pq#±òPŽ,t|¬N6½«LZùØxëÛqŸ_Ë@jûáÉ®q(nsÍ\fÌÌ&†T$°OŠÌ +ÚKBJZyÈÒ#\è©¿­~ Íëø¸¨I€;6v688¤3§³'§×'q9Qk齃c`( æ
-¿¼È%<mwRî× ±AC/{[Æk˜6ýl¢l-t£væØà€‡Š¶b×üO+©µ‰ÿs\æ_I¯yÿiî=gfÎíÞì–MMÝiê–šu­”n¹f*.˜;‚‚€²);Ê"*h¡×%ËÔÂQÙ Á‘}_ É–{ÎœùCæÛüü}~ø>Ÿó|Þï×k¿äØÜÛ§ ÏR5_æÚw¼ÝÝ}ºÏæ,6ÑwÖ[ÞÁÓ­ó­éa=6ô±$Ä|Ï* ÐÓà‰]Ó!¡<±Í‘ò½Ë”R`ç¡
-jSµEg"è-—}ß<½בêOŒ=]uw[TÝÛ~làßÁ2ôƒå)z~õyÝ@IÊþ8øJb þ í#î¾!€ÔCÏR€ÿ»]ï*÷‰QÙ&×%iýÍ%ÆÜ ¬’ËükœÍöáºà¯©â °?Ñu\ p‡¢€_uø¶þ†õmÕeÏ2"ûÓ.øÂ!Edù¨ï
-ªÐ¶Ð˜P´?=5ry_m¼q¯ŠøL÷ôª[B®Šhm€¯"›Ô&§ W\í‚$4´–Óm6Ý·Æ¢,öÔ_Ùà7çÇT¢m¾dš¨½t0Ó|Ë%m½V£ó>ï±i@/½NšB»Œ\–ÜwËéPó«Ö4 |NXå»eòã3–iDvbwp¦êgm¼€_ÝÆ€bZÀ‘ ,J\Ï¢Äô,RLÇêð
-FOm½<à$QŸÙ진4Œ&ùÀ¾Øp#¤@ƒ:zcÂÐð¯
-ÂJrå1ð=´ŠÏõÊÐ9»ojn™Æ+n8f0÷
-r½c¹»zssÝ'g<‹ëzÐ~®Ð+Çäl W¤š†Ë.{àÙ eY`Vè„M–7˜Òš^¼g•¥á•[¦åý}“_zV7þ‡{™PT±ëcˆLõ ,+i`¢ƒ«Hqœ:O-üq²='EF/LÙ›„Ý é¸ØíY£9fùO›£ðŒ¨šKJlqÉI#‡U“ê­ my.À-Ý4ø?ŠËü-É5ã?7sÍœ9g:ÓLÓ±šl3³c‹Y–[¹a– Ê""û¾#Š€¦m¦é)QLQP@ÙE\@EPáeQ05kÎ9óÌ{~z~y¯ë¹Þû¹ïïýùX_v;†ð³•ç@Ï* ëðUÉE.ìCLP‹.[*}JDVd†˜‹5÷>»lé©úi{ }ׯDç3¤gû "Ö¾³²Äü
-v.¬ãÀý“$È›'çã·b`vÆ ¼Æ]«
-L“ ¶wðó«Šæ{q;pr‰Ñ9z]ÂÁÀ
-,¹"êøìn—&<jÌÂDz”ØÜø<u<Ï!üwíÅ`r±«+bîä4Ìò€
-“½üKmšœvó„œréĬèΟ<ðÌÔ|#¤a?ÙTÒ
-¶TÔâæ60Ê
-ŽÃ®¯¾/þ—µçþ_S BrP/¡º†¹ÅkÃô÷`cfB¼÷û"ö«›KqO¡nzŸžw 4Þë$Äm•òkù¶{K/+ýÁÙ÷<#ª{!Œêú^§Ú›|£¸{ÞQbNHǃGLbò¦Š]fé†ýÇÒ^y2¨ÀÞŒké{V6<j¤@v¦ wtíÍKÃŒ|÷!ÛóžîŸÀÜŠ›¸ ‰¨»6)7 cVmM ®zbi|®•¸££CÖåÏ.®•]káÙ¡Ö³˜õå›ä|ßxDßFjZ¤Ôš¥•{Æ[îo©©%.9×5JÍÛ™áBc60E}´kÂjiH…Égï²ýUÑÅv=n¤U욥|ÀÜ-å?úÎÜ]—åUPk¢ô`Žò<e¥ÕÞT¾4€¸ä›dÕGfÙÐÅ>ðeÕ?ÎHà醮ºL¸‹S*aa5¸Çð9sï‘×\
-Øo‰ùVÒ¾S@Ù#UìLË–…¼¯=G+²•Qb¡¡–1)ã6> ÆçkÅNÏHò¿ L¡ï®ŠÀº0 ræãïUm s£¢ ëFô¸ÂuECÖº‘éÇÞJXYˆ”³C¼6BÈuö¡3£Z6úÛ²¤ó
-óþ"']ýsp¢¥4e—Š
-št=¨« ý¸ûI“
-hH… + ˜8Șž
-ùl£BÄ- ¾4HyœUùyµ³oSK©ZnÈtÔ^t€g%æðˆMDÚ6¶ãÝüªeEk­O#c¬OП{¡9 ýÈlç{è倪éᮑPù«§­3æ³O/Æmë…I‡¬+få!3ý™OÍñN4ÝŒÍ1ž¹ÛÄß|¼ÓÌjK/æŠoJ€:rI_üæ¿9^b6Ǧîx‹~´IKÏ®7?
-ZeëGr¡¡ zá‹«]ú¿€L~슿:™ä]ª"<Y}cSY{)îp÷]=Ã.%±J-+?õÅ+íÿæíV~qó%1¶ts™³ò11sksxVˆé85ž1j[Á,\SðÊÖGÛkšŽæ¨¹ƒ6 Pî1ìÏ+¿ /n~¢äµü:Ï'jÁÊ
-W3 Pkòæë~5¹
-÷^Á&&m*yÁùôÅÆ»6² é:ëÒä2ÔY¢ßL=ì ×lN>ºpàD%Çí‹¢•$L‚»À‹øÌŠ·¿À¸‘ÔSoµ[&Ú/­ÿ«÷Ò.àö˜YF]Œ×ó` ¿„q@äy§„ûñ=ùVlX9ø¸J@ó}Î;¦)zTò’猡ißíéz«Nƒ·è†3)5a–¶tâ®´sb<aÕ«’ž±Hzc‹Ì¦¸ÙXpKûAIsaoÒ0x«`G
-ï|J¨àƒ˜•
-V)1gæ·eV8-ÑbíæToUv…×zº6:v°¦ÆìC¸Ä² g{–Òž"]9^“ ‚°$b<p¿¡}³¥—ÑS&ëA0à‘œWê±JH9œð 2ÿÔnÿ‘S­Ÿ Öf\Ú'¥u6ïg,¢žÈ\_ýÁª”{üqx¤|¶˜´ CoI¶¦éÿ(yš°
-{²aWÖ!èLZ†:óÀ'›ÚÉRè©.b‚i §©ì“Òƒ° „ØyÀ[ù5¥$ë…Yড½rÆixX½gìp>'~™2ÊÉ9§:ÙBFÙ¼›KHY@/û=ŸÂj}I¾ uV}áxÕs÷ó®ú‡ÿ% 8kê
-ò"f0%a•Š~TZô‹yß?Š›Ä]¬cszèvD'¸»o”v…¦xu¡w¤ªè¥³ÉiÊÍØÔÔ
-ÒŸ¶¨Û(ø^ ´*ëÉ» à‚éq“œ°=Ǻ|M:ï{N<¿ö’r1:Ë?ã-<à¨î‚*ùQ(ïUòR6ÁýœcðNÚ4
-“’F).ë@XI ÃÍéοDçq/S®Æ ”«I«±èT
-*ÚWIÂ/
-[Š>„]"×Fõ=³VЫ!2 òGG¸Töˆû¶õPWhnàÈqBÑ)ÀaFJý‘o =o¸½=Û÷÷0Ð#æCÛ+JÆüñ\lAØ–wˆ˜‰Z—7QëÁY¿õ~ðÛ¨NØ’1£ƒeߘvwwksšZ•µH(i³”
-Í$™%Ž±ck\ˆ²/‚ˆ ®Ⱦ .±Só‡Ì—¾x/Ï÷ÕùÞ÷}žç·8‚¹œr°i¿îJ„9;ñVÖÆ@¸%ÄÊŠ´ÿÀ%ê>»÷«O«=ökµåUµpÏ£Éþ+{óÜI‹‚”µ‹sŽÑÁ´st0bP“?eŸÐ›öÏv§1ç3V&"iå"ÓVaÛ¡W)ü|òò$¨}R^…r1Ì@GÖ6,ˆ‡ÙI«º?m‘âÒ&NSÆ"øè92® +Nëدo©†R.ˆ´r3ö1U¬$ï¨}#«qóêÕˆŽY—²ÛÀw?lM’jÂïú®§-ÜæœêŠÌs¶§n†Þ¿Êy¨ªO«ÉºÅQ#¿%²Ày˜²Ã¤´ ä°gÛ:>Òÿ¶ïZhš~päzŧ·JXEè¬&¦¬6n â^sÒ*hݘaÜŒ›…­åU%¯ºÑBãÏFf±_ÆÉ7¶g(ײvNKðÔ–j÷N°¾){³Vq{ŠðUx_“1ñ[²6¦ì’1—Çž——a˜÷fà­˜‚gP’]’SN‚BÒI@@(­:OB0ï8¨É/k µ×¬Û ½syq¸ ’ÆÞÑùÎ/bïñ5;Ó]×’&jsxMÞ¥’æ]"ÊÁŠ’²RÆ6p?a¤ÖíLj=ÏQ ½Á×&ôÜÇi»’åyËAiH7þ0!h®ÍXĽE»5gdÔçç@¶Ý›gÜßœ¢Ü.x¤ÌˆQF Œ|{PÁÕõ!uiEÎ;ö úËN:"¾Ðùuø]ûÅàæéŽß©ÑöyÜ.ä}€Ž¼2æé:Ä<ñ È[˜ ¶‘æ?o½£#ó¾çÓ10o©e¸h¢ôÀ§‚Ë~ <Eõ¿°BSõ21Ñyüׇ go«‡‹k"bzIÐù©q›´;j‘+>˜]\â2ƒo0wý?uü£TÂA÷S|¼®¨‘ò]ÔÂlÉû$tÀ$U¯ÏqšÒ)ýtglª’É
-nQOÔÀjØÕqê÷Í|TqMLÿ“kNw%’¸¹UrA€É¨uÅ%zÃoæüÈ-¥UW•‚§Y±°[¢:fC~I„MÚh‘÷ø«…%vkqEJIYåÄ„Aü8²H­ó·ŸÝ™î¾tàá ü\ÜI€C8XebO7`þ¡fƤål2bÚ"@Çôœ¦¤îNš!,¸ŸXuËi¿ñ‰ ÂmŒw×ƨ E·˜PX•Róî'Ú„åßÿŒ‡ÌgQRbsbäî$ãÖÊ¿ÐB㸠³¸äàufÏw®¼¢]q½ÀŸg}Q´ò§Í|쮎õ(òMܪá
-Qò°Zã&Ê÷a=_ò?ùä®ÑÒº”~//Ë™)=£9ôº£fs]3ŽúÇg„³¿÷ýÔ|åctðEÁ/çƒâm©Çª¹øhC­©dpÂBÇx_a¾ôþ{n_ÏF…”°i u~g¾÷áOD9 À¼~a_ÑÂî ¼Æ#'E÷.J[Ïþ®ìRÐËnAWeUÐUp2…çp“fê½Â2È«0­èÈàÿqÅeqwÒF­ˆßø„½U¯¨dTè?ðl[l‘Ý’2òZ?¬CE×@cÊÒ]›0®ž
-%-if7ÅôÔ;;„›€è9Í¥%i/ÐÕ¾´YŒ^E¨Ý× <(­ð±‡ë"rÞ QAÎ#í[ä”s· 2bój÷-«Î6Œøkd[“53‘ñ2a“õìZT” ª'¬“ò6ˆ_dÜŒ÷\Úœ"_gõe–UÜ=“ eÏu$­OAßßÌ'íφsËCÂèBÝêÚÏ& ¼Ç%·Š[ ¨äQ›·c’t¦ÜeÎ3$K9 îè{Ú÷ÛoqgÔäl0Ì”ŒÓ‹Ûrv5'©µíÂŽŒ™‰Ø›¢ÔíNQ¯‡gè·sV˜PZR³csœÆÐkü¥íI•¼ÑTpг6jSÜH¬.²SKòœ{d(ª§?M´ý=mä ÓFqGBǬÿèƒy§[£?g<
-ÁžAÐ’óhUYÏسœwìEnuH3²š¼/Ñ—ØûE§Œ[T÷{dÔ†g%“&õ@ÒÄ@–\ttÊDk ¼"œ7È›ÿ4Ë¿{Æÿkï=¿É<Övä`DÞ)"Gf(ui‘s²Ú2.:é¶g—†¤¯VÑóQ‘ÖƒjP=TYÿ?ÅeþÔD–Àñ_­šÚ¶Ö-]«]Ygªt=ÆY¹d$\Ár;é„„KtvVQ0IÈ:$ä@’N:ݹ¸f¶öÿØÇïï‡î÷¾×GÛ…/ÂbÌ)êLÙùuI›¨–ð(™ÙÐÓÉ\ wh? Ø_îRïùÕÒ”MÅ \0; Þ5aeW~O½wˆ(™eX²1K½‘´3$œbæQñpD§Á¼Ï§‰å§¿a>…(‰ðëòˆþ„Y\i8?+¿}ÌÕSþWgÅá·¤{{!ô߈áß(Ȭ¸SAßûÒó
-óªx›³‚ª/cm?yGjÏ}žh)A¸$°C3ˆœnÔWœ
-} ÞÝ *ùEo¸dוŸ¢^?¦©»þ§'ô›gAVp0å¨"aN!Ø.œÂ)k%<òöµiÖÍVQÔÈ¿‡ÎKjò>Xø{H eÌ ""£áCÔ$«Í¸”ôœ»‹‹YdäŒKNKÙ$ —´=»¨`%íRrÊ%£ÆDàäõ¸CÍL‚ ·)©áIÖ-׋¦sñyaUQ²b “3ÎniÆ£ìÉ”r3î%Œâ#&
-ÖÆ:®¬‹ïG>*ɉ9y fQ¶¯MAåËÿ鼊ٻd@ìõ ÚÕÈGNQÜ*ª#–¤íù°Î,õ?Ç<zõØ“€»¤ÙÕÁɤKÍÌðË¢vEÞ Ñƒ°rø&ç7ô¦Ý:É~ ïŸ¿”SÉ
-ˆ@<tlÂÃy°ej½–:ÙžæG&™··ŒÂ&Ü¡þÔ=ùßW™"ƒt>ŠÕ¡÷‚¢à¨ðnÒýäõŽKѶÙCÔ*iÝ]VþXU “¤a{ZPe®Mµ_Åœâæ£ý˜´ólLR.}k»g×­šd Ñéó@ë)·2éàÝßØ÷éT~­*ç…¹3œ’Ïš VGÉç¢c­×ÓVfÕþ²‚}ÒªÂÚ®¬_ÁL€­‹ÎÒ®&æ:o&-¬"Â.®Ëºô4Ð3á’7§çä}j(ïë‚·”’°±ÊP»¬)nÕ2öÅŽ©W„ÙÔi7ÌBAf£ Òú”CÚ”v+Ú³H— üŽŒT1*®CzÊþ‚» ã¥4Ì®dÅ­ò–è¼¼!ú ¦lM
-ÊÃÕßn€oÝ™dÝN™$$pjnQ eý]R§dƒ|jJÚÅ 8©Ž[É×㦺‹‘ɦ‹8`,¢×f<OG¢¨Þÿ¦ö|øéûè ­0‡@Í€'A·–Æ™××gÄ$Àj= «²ué5åÁ×Îe¼G»ˆ¼·C-Ó¡wàÎ&xw£½]€[7¦9¥¦ÞÊŸÔ¥ßD§„¥À„ôÖ$`œYVq9i·’Ž.Ikc¤¾¾¯ùng†v-³(ïÌxGpO¯!aWÑS Ëâæ£ó@WnA3:G-I-0+Ij¿ÎŠ«q¯¾;<~Ϲm64 ?>OXé·r^~ý^@­H:»¸[s’jÔªãÆ,}²¸­W¾>;ë®9…üRsª9 ¼LÎûô½é%"Ô¨²¾þ! Ûg{_`Y.$¡G¦„e¨UÝI möHÏm?j“QQ›²-Ý ëúÂJéæ,ý¾o¸± çT,2 fí î†Eq«ÂÝ5áéÖí5º?ÖºŸ0 K“vYóÁŠFCøäì„ j[µ*± ¬ÍûeA¹`×µâ^í×±–ÌâÃÝ`Â5†?4]X%¬O´
-þÙà ó)ϤäÔ  ®
-:N>pêQ­
-]§4†Íìö°{¿¸CÅGßg¼*IÚ‘³>•8iW2¢&Ùô :NsÔÊjÏùäüÒÞüOùÀ?µ'&qÔ*êÇ)3‹Hi¨šÙì}ûαÔ}#¨a?ˆY‡Mó°÷»mç¹öâha9á„ÙI›ŒXB€— ô^Àv8Ì­Ëúžü+ï›{·òºÐ JMh\‰nÐ6ZCq{l¸¼qÏ-”šÓuJ`y¨Xx™l•w  n~Ü2ÖSÚXå}ÕDñàÑ‹ˆæõŠ!À3C˜E‚‹¯‘ë=‹-_¦ÿ°û¦ÿꙑ 8W6rô‘ßîXÄý)ð†T®ÓzÊÞI¨àáã&À ZÊíŒCF, Sâ‚gn*æ€F¶V˜•îŸi·¼/‡®~6üº/å—w¤ÌÒ¶œ‹9¥Ä’çñÓœ}z<cïEÕ„ëû¯ðWNWh• =¿ ³rZKn ±àSp³.#çQŽå
-}”ö;ž’/‡×YÍÀë8ň]Ú‚x +£=jâõ`ˆ„”t)Ù)÷â‹sã´À¿Ì®=xO« ©‰UÂÇübfa[ÌK»ÆÉApSµ´ºŒoB±K‰A ½
-]cÔ%üîœOHúõH_ì«fcN©èÄ*èN¹Uã`çÁÞ’÷ß’nyžãnVi+à&û¤òà«y9|u_Íê(þ`J:&%GïYw–ñ×"køëÀ™:³^ÿÓá£9ŸR~¤&W„68 ‡\”õJYa#¥.l¦ÜIþ
-™(Ugzzciwr¸Ñd‘‘1—”SÚUN¶ä‚¬Û—vp{.)#ìV0#N˜1‹ûϵìºýWƒW¼?<ø›yä>jdÄ6Ç¢V˜²½Ì¹cY$^Ž9•’R`f!¨¸9‡d8eൕ\ý¯‚Š.9-ï–QÃVawÄ2Å9×ÏrAž‚¹¢ÝÉúÈ …m^oy[L-úà±’{~!e’ ¦ÌÂnÌ,ΚTôäÆ؃ƒ×ÿº9WñûÀß$-ü®¼æ—ü³sYDF9Ö+ü¯ïÕ ÝÈnrÛKnˆTô*¹I»|4fVÑÃ`Oâ ž¸ž^‹jÁLêxMa½°#f…†²îiiÞ3%Í"0#nõÞPnDôüöœ æä\äákçæõÃ×pol ¼:Ö{ò±ïª%Ô„ôÐ<ŒmÎÁ˜c~êX õ
-ö( g×…çÙõ‘=šáb³p£ÿ#½tux¢¥xÇ"DC:Ö}ÜÄ¥n™9_ÕVíSrïGu|J`šZ´ü¶ê;l¦¹tÛˆ
-#ªÖÊpcškôþ9ûÛº ŽaZÆò\äžD©¶1ø¶E
-¥mÈé…ëcÔü¤‘KûËŠð&Ó òÄýY˜s¢‰À6HMSŠkŽÈ¸%KþÕvòp#*ÂæúŠÊ^è«K ª9õàz+²‡©öáÚóéƒ ®w éQ½¸3þ>šrÝ“Œâ½‰ª8ßDíeçЭ#æ—¹Ýt+™e!v¥ëE@+lÛ˜¤{¦e˜aÆ­hwÜ*~Žé¹4°›7Öä´ÜF@ éxdSý… ž}v%;ä%³îo‹@0³©{Þé'¦-Q³ÿl
-s:e”›ž)æ †Ó
-H‰Œ—Áne¹ D¿Àÿàõ
-9£#¼oýè¦óÕ|_ÞLò“) /è°ßxšß!óo¨T“ßG}•4ƒêÌJ‹‡¬ Cbxˆ ¼2hf¯‡F^‚Å|± ‰!!šèà>
-…küNÑIÔ™,6iY+ëU“AÏÉ M)±!ðƒYß@ÂÓU)TÌ‹¡–ù¹I‘=Ñwrïq”w•œf·%¦@höD&%?‘ Ø6`[Ï ¡ƒ$0„˦Ÿ8€tuÄýä¥ÛP(ÐWœ*€Ìá5?•-^¡û¸ÁFh,3ƒ!¶!ñEŽ¸€í“Äk×ôdÏ»RäŸË1—×›ä^DÏÒé‘ØÞ!)R;½2¹ÏÔL[í;ðN Þå¿^1O˜Élt™È´¨®Ÿ}î9ß2¬ü£é§Ã“£2tÞ†è$¦X/µmÞ˜¤´ëb’ïì ÆЄEÀ7)˜mÌ™ ‡E9:7ægä†@=ú‡w,x…ÞPk¼u¾Kõ‡w"Ì]øÜF2Å [næÅ ¬PoZÔó(>
-•jÍéùëU€k¥êK!%8IPˆE]æ}Ô„×&ŽÆÆ0É7‚nv„Ö4t™Ë¥ne#os‹£Iµ‚ÓcThÔ×¼9$ ækDãr7ʘÛMå˜Z£œL† I~Ä$ò‚qÙuùX×U3Se¹;4áWÛUi.ä{xЬˆ<ª&ÊSOñA_Ú‡KÄ =B˜šÒG† ïŽû¨P£Ã¥OÈf,M×äJÔGtZZ „A‹1PʾMÕ@A&`ú¾p§É0ôZù™0L  2!7(º þwü9ÅiË$‚ ªLè)­;JLŸðÏÚ²>#nBtÆ5A¹äcØÉzs#¸º<÷p™˜dYDù©…€p¼‡þÇÞÝÃFç"5õ¼ZCv¦ÜÀžc©T6ÑfìÜ¥¼*Åf78R€¯£S7#šQ¤Ëï÷Ȥ°2vˆå ;-H¡¥vì8Œ®Ï°¸_t…Ê Àí‚ÑLý#…Ôóã8^„¦ò{
-zÊÔ§ã^Aß¹Óºúû‚2Ý0ž ;ú¥­IDw®ëór¶ÏÊ6!Uü Z‡šÌ„ÀéæhA G‰bŒmM4l]fÛæÂPÀŽò_9[ Ɔ%€\- ñÀc ËåÞbð‹Uy`×Úq˜ê¡K’5üVõ8®Ñ¿€8›2ˆñ­÷I/˜å®[¶¡æƒ$¢~ÉÐh¹ó‡Á ¶¿ ?ž*ñ
-úøN¹TÙ²+‹åTËîæP„Õ‹ 0½ve?Å{ý|}f/èZ4– þè‘âd û=ZŸO Ã6˜ƒÉ¥,ñ°"Ý
-ækË ?ï^ ÉñmfÁçF8üÍ6Š¦:ëNø1aôt©òŽG‘@ŸeËäuhÅ¡o>€>¾CÆ_Š„¹E‹Õ¦®á
- 1—&a¦„YhÉšÓìt.&r`”'iqA°Ex$Ö× óÈ:
-Qðrm°¾Íç8¦RrEúÃÏr}Š^º˜&HŸhœÖ„ej÷
-†¨Nr“±ÒB
-ÎÃZ^꽕î¿õû¨e²¬ÚtØ”$ü)
-ÿ ×pP+û¤ÿ…ç·
-†kÓ*ø? ·-ð^K|qB…„;ÚŸ|ùÇ1²êÉôË`oæü.YEc˜ô¦×ýM 7˪±&›K`Þ˜!”áÀôpA¼ÛwÖÿ3Á«³Ž!>ÂìÎ'%ƒUÂ^±©ì£.EŒÞ*UÛSŠ}§&0Ƀ&E“E[ûU? Xn°{I›ŠöIXHžÁŽæjEƒqgy÷”œh±e•™c‹1 $ØxÙûë,¯ ÒWBD“e[[v•š`ñ¿5T‘¬¸nÖ%­d²ú`Ø™ØïÔUætγ¼gŽß°#e heÛfGͶ"º-0…¼ÔÅ|–GdJ3—6ò)Þ>êRT@8%ì±Úw˜+ Ee«èÊtÀ«»LGM” ´;Ž N ›¥Ê[^ð_ZEjÒ²Ô‘é ±Þ$3Ž]²c`šuÔSdƒõ }èã|ÖB
-îÉ+HÝ4eaק$Óoʶñš$ç\·®€ØõÔÛŠr𠘄¡i¢€\­s0.jHÍ(^‚Ó |{ï>Û
-¾1‘?G¶•ü”ŽoòA2¶¶¾½ÂÝQ¤ B¿sÈdñX:è Dª¸Sé&…·•¹”8´Q‡¸¶¾Öówî”ΰʌðž+~xÔw9Ù·9®‘˜ˆü
-âV N†ñÙÿëT#ò#g,YX Ö ^t8’HGo¯µJèˆï<Ç'^†4ŒB)‚ø=rµH2/—Bldé†}§Ð&_Ñí[Û‘a E—¬6X
-É äù½¤X)¬1BUvsàUVó7Ä;‚ Ÿ•»ænq›\†ëYÿnÀcR°Éàð„æ]~C§iX8îA6¬v*¬ºþëX”3D,ƒÍ}„µ,k7J¥GE’*¼›
-‡u)L&¾Y —­Z }sqFÒ ³Ê€8tlヸ!ùg´“:Þç~—X­!¼‹ë ´÷øĽG´\tø}€o·B)]Ç¡N4ø¢ìª£×IèËLYÓŸñ ˆBbk¦úI¤]ðNòÅÀuÙ4âÐðì ÒG³¶¡R,zâ ä^ÄØe7¥Zò៧"(ƒ%E¨¼‘
-7–:EIÓ[ÁþW8 ——ŸË A‚YÕX‰$"_§¸¿¬%}'Á8 $#:tš^EçàzãäCpÕJtÙZ¨ÑØôþœ¹.Ç*ÚÖè2à• 81ÝÓJ”'˜VL°Ge¸® ~¸=(ZIJӛÃÞk0Z¶=Ç.ç&ªËŒÌŸ¨9q¼
-ŒúÇie¯E¾²¤9Qi­Š(!¢r0'-Q¼F^‘0½*gUk¦8„='‡%'"ªt[w|$yJv¬$IÉXFNaÌ—˲<>»s.Aôf; Gsõ³ˆ¹íl
-JŸóíp‚+ÕâçñU”ˆ˜º2ìt³Es3ˆf‡Òk“Öç2ÚÛ¡Å×ÍX£ê¨6"=¥4÷’?¯lØ¢4tæ1”w€,ð[O¼Ôh46[Ĉ›â7šq‡¢cê‡'R¤c[QE%!ȈŒõrÑa§Ë”´3ùåÕ¢ãæs“ÎC7åå¢ [ðRÛFzªØ.<yËVtË¥èó•ÙýU­Rd¡é‰öCñüÚ^\Ö4Õ*U|Ê÷2ÿEŸVR°|DÄZE”^„?œcß%MA®ŠzS¶’Ä[¸$nm ÒJro¶Â†‡d‘v§²–˜ÙÔí;P7€©ôÚñÍñEœ<B~R’{¡¸Ö÷I—rs+Ø%qÚg0Ëf?wbý1[ë†ú`Âæ%¹Mâ¤$¿Žë¯’ph¯v¦ÖºáœÕÂurUIû×ñ{—¢cÑ QI6—<W½Ps“z5ð•¥^ p’-
-þeÇ(¤‘:ŠÔâÁr“*v= ©0Ú^]‘+]OƒA9™¯¢J¥Da3
-°U/3O¾^îˆó™ÊD1v ÔÎá!Yïæ.— 1ÁŒ ·'ÃÀXϱ尳UN^ˆŒ´8ÅX³æÌÇ9ʹ†Qn* Ióë (<î†ØVÏ‹+þ‹9]ôWêf¾¹‘¨Ü]Zøp§ûÃÒÎxÝAé¡m@øNóX›½Ñ{4„ïeûꬬGüº‚¿¸?­ë^Æ] €ú¹e¬ÊLªaÑd=ák>çÄÃîâvx§œÝi~hK"çîa|¥—¨Ë¢1¨Á >3}×™‘¢|eÜ×s†è´/æfWwÝ s8êñ”
-8m¾>%$ó賈Äú.®/ ç'
-lB]öƒ‡$Ì@ô%Ôejáy7=-²œ#Ã…ã1d™ÍUàüžTÊ‹}Aå?Eô~§t{]yôÚð\úVbPxÒk1#ÃûcŽ1Yæˆ CCË»ÆPb–+STv¿©Ô ^ýõsáÕº“]=³øK²“3‹3‰!é,»:ì
-)bë¤|èŸ½Û‚Í ÐB
-ï¦óbäǨZÄ_TBCÆZ®An»N"Æ´(Û…˜ âçï ¬RËÇ ¬
-É/Ù—Ó–ëímI¸
-B€,vŠrÚ’j*+)÷ø®˜7Pxõ×ÏEõãìê‰h²ù_ŧÌhÎÕ1Ê»!£¸üöê˜Ln‚}lèü–ºÂ“0Âè$F^_ýUê~§t{]ÀR7PxÒk1£ÆüXñÓ˜¯ÿýÒn¢4g‚¿/¦Fº1µcÔšäPR%ÄÁ4~ĨÀv©»í\X-¸½M¡©øúU%cn;ƒÅËÛ#k >‡^Êẉ#Ñy—¥cý>Ÿt’ž¬ 燸Æù@¤¿J4Í.ó9_©ð“ÎÙƪ÷cÚC–àœë2ü)Ü™ä ’ñÉxò]Í—ò¦¦e^TÆ2X\;âÃÏp^›¦Ÿ3WÊ9Ì$¿øX3L”x¨8Õ s«¿
-$n-Š’ÍäzÂ÷¯“e<ÌFsŽ§ @xJŦƒkMûÓ\øørGIøâ_ ž-CYº†<c!÷^>Ñ÷-p4–ÍËÇphsÊoæûÛž^Êœãp
-±¡´™Èxf³Fá9 A©÷²•_{{”$…DÖ*—|æ¼È]â!O0:n›5`9 ênÇL|mÉxòÓn•—,È=dW¿‚£I°
-·›¯ý÷bþ‘à5Äö bJ¹{Û!˜v¢eæâÚá…uÌ… •6†/ §°šœEUÆ@@«Ï`pPvfa]Æ&ý¯†¨C4ÃȨaI0c0Þu©n6_z”iO–é#Û9£uÑ'ÚટÐa¶k¥úR'D”±®/½`Y(š¹Eýò¶ch ®gÀù%põV>9+:YLª_ ßQ#^AÏOºõ‡œùh]L
->7‘ J«Žþnôo höoŸû$ò[¥cršFùM >…ûøÚ–p!êµxâp™Šˆ5ò´I º1áIóc~Q ³3.È#ÀL£ïžd±´@z’ÁÁO÷ÜØ^˜šò›; ¸<,6ƒo÷Ám
-OY4îûWW3öJ˜]¼ Ç”bÇÚG¨uå’¤ï«-—'â—¢LíÕ‰d;{.Ÿ()IŽeèžtUB]±“ãszÅÈ15’aúÀÝ7,ÛΡÑS;›Ì ú²æè©À (”NSŽû9øÿÚkJüYòÕêmñÇ8s–ÂG”ÙTb™©¼ëƒg –¼Ïìú³;a¯µî›@„€í™tóÀH#ªÓHº”³ M­‡WSfQ-Ÿmâ¿¿íI}'ŒhZÐÓA¬=¬clï¦l}ýˆÄð²'~{:„›b­LiµUoj²^À!øÁ!¡•Å»J ?•õÚ`ÙUf{Ú!hÕ\
-›Í3ÌGÑæpBÙT^ñû`Y;ñª°åR¬ùÓ+ÌñNÖ »¬[q­âÕ²-ËJ–*(fgë– (ɲU»¤¹zÆÛÒ£i_J7ÐÈgš\Áw€–¸£C8òÛ,E’[ºèÚÐQ&©çQ°
-£áùI O8f2Σ?¼"\?ü3ËŠòMµêÍ)Ò–Îþ`r½¿Q%N'ɼ(âïß‘Í£®½Óæ+)¦FÞHêÚõ-$lø7f¥—OµÇD£ v@ *—Ð…_J›ºñ~pRþnQäCžwŠŠ¯+à8dz^¬ÄEá—^›Ùž¿ìøLÃW°êr è¡­ÁÚfpx؃is_¸)éÓÆ›[5L
-j[‹(!’[ó
-äÛ“s‰æD‹ÅZ÷Mx0‘qÝæNtƒ<(²ßóÄå hnY7tK£³"gÃHKSéÎlô-©¡x”²È¾ç Yôb]Ht0G²Ó(;ÃIlÙð½Ó“•fç^pJVG÷2æðÍl ²t©£3:C®Ê^üøî‚Î:ùÁ‹pˆ¿Âeö-•ÜÑæ¾OÎp5¥›âGd†w÷{ÔK‘±â”
-CQ"|‰cú5™pšJs%š¯T­˜›‰HOp=|£”Äž/À|éGÓ¯
-O¿d’lÍ¡bL÷5Y†ƒó—¢ŸaQô‘!È8µÓc¹{”µ›ß†O,î_h‡/8vûÎ:õ¼É‡)3
-šV÷þÁÞ¬ÛØ„ŸÚ×r#b€•£ÇÖÃ'j^J|¿Ilî)Åß ¬(Á¹@Llð›’/nõ×mj+¼ŠÖ°Xø§|áñ­Ä¶×íi£üP‚UÇÐi”³ð ¸kÞžeç¨Ô¼³ƒ­¢Àü+äPö»Èé.WäŽýg‰Ù· ¨È™ã /JpXÌÕ}˜nÌ>c;æ©ÀS2R´©µg…4‡übáBÑG Û‰Ù™rl[ Ÿ7¡„u-kü"ŠPwfÇwë;C ¤À°™Í\a£’ÿ“ŸôRùU¹Y4aÿˆ.£uæé£Ây<
-ÂÑÔ:±ŽDvzi¼UuYÈKÍAƒ›.Œ3ååx‘pL/%>§"Eï¤テÁè´K\v/#Ç‹©Û[?±Ç£L^œÎzöî‰ašƒ@Ìõ­/ÏMhÒ$ãp¼ä°äë¤öÚ}ü]çñ ÐDö ?†•‡ÊÐÜ<OžŒŠ:WZºÔ\ûR”Ðè‰'Ì××M¨s=%#ù
-<ÉzcË(°Â]³‘ÿ›Ê+(ì¬ç3 9Ú^âTÈÇ)’àNò)!혴נdŸÄ*á®øö</ø,ÍUÔþV¯cE@øê‚þç)éôÄ$ u©Àñ¤‡ÖÊŸÍIYšÉ¨Æ:ß%×:,ŽQÉ—QùQ/E¸ØxÆ¿öÝ/Ç¢ŽIu[·ç«X$æ‚òp›ÿõµ;²’SNH"Pý;˜0:•Èt^’•@›zg5ùvA⨰šQ+éÝWä8Ôùæ.øEozÀøÙ›Ç2<;üWKå²÷x:;dvNLúîÍT‚¢óxøt(5÷¤ŠIò¾Ø¿LY±E~žŸÇcßæZ÷ñ m‡R‰.Y¢hø‡pöš·OxW>‡=pA2<ÎPŸÙÒ7%²F¤*‚‡Ç‡gQ‘nàê€ þï\y1žEšª{”È;`s*˜Ä‹-tË¿¢Ú‹gý¾
-cM£$Ï“t,»^•äœR0³ ê§DkG¯øYD(_ .@ܬþÈ7¦|ý;µðs˜ªúîU±¥b²û1üÑs°–$pßÚã®P‘zžüª×¸µ¯Ñ„ž5¯ƒ~½É-¯ï‰@÷h˼´6#
-je=%¦Ô„—g% #šNç¶þ)Ø)K¥ã´häÇ *²ØÛ®Rwœh•¸ÞÚy÷“OI˜äY—e1#:òˆvJp¦oå0&[¶ÐqÈþ\¹òKxÄú!õ¬üµ*†¾ð›SBt
-Ï;
-¤`´N š¢ñ—“^iëQòB~Ô£"@N@9ƒ€GÝ™æxc£Y#‹Ç¦7P)N~¹mfËýS.†æ0â^n9–Ç# ¶N‘-ÒagÀl ÍBYšÂŸ§(Zep
-|BÇÿRrý )’sLJH†kßøÚß-PÅêìÀz÷*þ ïY—LF5–S͈u¯ò +íMÉ—YIÕ~ùÇì0‰Q]üí%äÝ.ØŠóÓÇ?Ö$n;Sâ M|ÎÒ'÷i…%D£ª”µgÁ8Bçô æ· ¦mo@cñŽŒ€šà°×¢Ÿß¹Ño[¶ÿöÏ¿ü›WâŸ÷» úÜÎ?C§^È ôß?~hiø1ËïRVT"Ûrá¶þQd‹\É‚r7ƒZõP0ñÉWÿCy™äÆ‘ÄPô*>cØ÷Ò·è­|ÿm¿d¤­ªLC-À€¥úƒüC]p‰ïƒÈ°x@¼î`½m÷-P%Hœr+‰1sÐú n)xQ4û.赟ߩ“ªŸ·iê„'Ñ%OÖ7÷4C€`.ž5í¿ÄÓ¿"‘ë´!F`,ƒŸÖ‚˜¬.UªC($“Ô‘‰Öv3(gÏ V-²¢Ÿ
-­•îÒ’¡0hCl…7⇇ÄÈŸ­2±sè’×[n,sàLLš±UÖa;ö`û‹Öe¨tdŒ;„†x¬9„&­²ò,×Vh3l„îlj„:‹?›Üy¬“¬ì>RàªKï¡:·zƒ˜Ä±¢c<¬ÈTå!¦Îõôù
-H]Œ#ýt‚"öðNêvæI¡‘mÆiˆý±&«ÀüÝÁs3UH5RvvÒÄãdån‚#>õk%Lv¤äלhQõH_óœ¥í>‚1ë
-–j£èe‘´`?1½år1t¾ÌNQäµu–HÙÖ冰SM}/5!ë…3Åiõ[x‘¡èã‚ÎS.xà€ÐðFó@¹aðea Ì­ÚyômQ&¹4ϘOÃEaÆ#‹¨&¦“w¯5¦\ ©‡Yquìî>.Íz‘…a‡7K‡ÖìF?‰bƒtpß 6c8DÞ·ÿHB˜“¬tf€çG@ª!*<  ¥v‰ž{`,QBÅQ2$%Q ÈÌHºÒê³ÌºjÙ€p}l"£æßNñõÅÑ–BÄ ”è?yw£ Ä•'/õwO&û–“-þŠM–YÁýLF/;Á`¹~9(3ÐC)Ãn0?ï1'ó¬3˜a²Ë@Ÿ@,Øè'™¨U*ŒxãŒS&\ædà'œ¾ºÛ.3&!†Òþè­wÛ}ôB¼ŸO fî ©ÝÝ@:V!«
-D:@x<o?WR &Z õC&n
-ãm‚/á8d,"SÉàÒ²½ž :Ì(ØᨱE]93N<ø8ét5&5AFØ6„ËchúP|ã^`¾‘|ÂÈÑè8!å<!ÈŒB-míúe°œ6ýæí#ƒ ‚{嘫Dª{üëm »ÖžÖA˜zlθ¶úJòƒ ‰™|ðº9pl… õèq"³P\‰úÖ²hSÖ#_'®bgúRtŒ ËFø9‹àìáê΃Mçø/>8¤ˆëø ¹T’\OCóÇÜ
-§©p †ËŽŽ2 hfU£‡`ˆ(–)›Ä0H%zkœ{Óš˜læãZ‡^Ÿªç<·âÞYq¤¶í8 BéÙuÂaŒžÏVj%ô¤Ù*g+„‰iúè>€òàäDö¥O
-­FKˆa•q„QANº*†;Š—…¤±­ù:˜o.žÚyJ8_¹Lœ]¡P‹CÁNÝYÊØiàMÕ6\ëvz‘K™1:>þ4Yr¬ï;A¡ë³U¦/x¨HlC01,ÍŒeð14†ìè‹ÞÛÔù£?@äwòÀÞ¯Q®þê/~ʆüøGPRŠâ7SÓ·ŠàžöküzÀÈ¢ÒtXÓØ
-‚tò
-ugN8[º;Ã<úÉ•«h­“ál~¨¤eOÛÓàça?8­íÉ¢ÿ±;ÍZ#¨Ò\|e«åÙ g©<;zÀKtƒ¬˜7l¯ÃÛÄáœà6Ñ1&píçPµè&<tòö’ýBŽ˜P@øvÆ>¯˜P|-ÊÕ»žÅ×Á%ˆ}kñÞ
-«ÐcóògûÅN/úQ)ÃÅÛïí0 I&¦Ô|{'F´æÙ•ë,µS¾—ÚÈ ¡¸Xš«``˜b"ŸxùG:ÚÃ×A&'r›Ÿô”\‰–åEŸVhÿŽn¾¸5½<§n Ϋ'S{. z²ú1J‰¡|ëK ^+í‚;»ÁZØΆ0͘'¥¸²x¸ñT:ÍeJLoÆ&»1ýЛLãøq3Ü<RÎÌ…ÖõqzãˆñÁ#úÔ Å»vúÊ5â§Áì´=÷…°t­Z·?¹…|m<µä 9ýLxíáôÃo6”IÀl05ûò@Š ²tï\ C& 9„­ *ÁçÜÐÿ¿¾UOq“ê¤ÄcLÖÀÌÉZøÝ©LËæ£æ¼1‚ŠKè-žBÆ[¬|ŒÇT,˜ýw)1®
-ì»—äÕóæ-Rº’į£ØJl˜µ‘EWðþFã¯[‘Ù ÌÅù-¦Ž<`_?UDQÐfË·’’èPòÑ{«RøõœÏ¥ž GÂØý‹ùÿ¤ôqyí`)=À¶ñR2±yà}3ƒy*z æŸ*J\<̘̈&ÿ¡ˆkF-¥0ä7ŸßCÑ3ÖJОm+{ÈO%Mx(Bgén~†<¼¬sq¼"‡Æú\R'{á;­Y{ÝŠFVÿ(9_‡™^º )òÑ>5¶^rÙÞzÑ$1D£¥~oõQ$uCQ@»ú¶NâÃ:Š<–½” ¡( r#µòÖ P `nÜ8ð¥è×[ÑãBGè÷s‰Y§»ìò­dp=Yú9îQÿ(*X9^Šøò²NéÜÏÂÑH /%Âà*­’rß[)é
-5¥‚W¹ç—
-<
-ýÇ:Ó:¯Â”£íÈRM/ûŒ@\î1¯CäÌÒ©Šâ-粑Ûð4n  WZõ FÔ)Z²¶8”.·pÏ-ŽUº_}`¦¼ÇíÝú†jž[‰áIR§ªg“³ùSâ9 ˜ra¨ö’A.jôæDã$47vbvh,­×Ým·âÅ.Äî1/jMRj"\zÉR¿ð´7Žþsnƒå6±¦ëdÙ-ñG½ä^®ïH˸3±>缆c4î:no‹T¼ƒû²ÛÈF¸C¨¹ò.OpnÄc¾©{˜’ògòïp‘F…¹~$Ýw¹f,Úœ¯koLÉ 8äƒPݸ˜Ï¥»PjåÙß:Ô~(JÎ.ºŒ¤Ó PCWææGçqŸŒŠÇ÷p ò¥2‡—ˆÃ$Í-Ô¯2üЦÈö¾dÊ3n¹î—¨¼-’”„Z§@ê• Á:— s25ä_ö’!¤š4€oUÔŽ ˟ݧ@›ˆÈg…¦+û`Ef¾UVºãjÖì¡é‰FAkˆ]bŠ0pîhÑ£ÿŒ:¾Uauwš M x¯S/Ð…nǹ»ÊѲøÎê©Äwêc TûK£=xÇ‹¼ò5š–α]')›Ní”ÄWÓ¸½f0
-œ®¯4¦ÎmôûL>LhX›Ê(A=9„áíÃ*wÕE<tÿiK’¤t5ÿ.¡CÁî‘Bµ°'¢æ1öÀTÎP…}ÄÀL¾ÏК®U|+SôFÀûš.( Ó„½ž6‰1J0‚óÑ^*¾€æÏo§¢ÙñÞFwÌ+vüç¢S|;=œJchÃ88
-hÙ”“Lè-ÀQĨä)ýxIpek$£Y[?Þ1à ®NS¼&8Š
-qSó’û9ÁQÇ1='8æ&¨C1&Lü#ÁQĨTø ÕÈL‡\³Á•öï¢+
-Ç^Ïh}tñ¿±€ñüÑö“xñ=µ¿'‹Â1
-IÄ€m _[UP—­G†øš°Ô6Ê°|d Pù’ÔvûMѺJ`J[‹ó®UbúC è@˜¸Ñ[}&åFC›ñ6­¥SúÜóÉ °3tß_Ø_#$-+tNµó:h½VÑž–QþŽÍ eÍ­¤üHWgÐ?Y“ƒò”£„LV|¹wqFÜ_·+Ö2\&™Æ̓B¾Ä½«‡k£™ü5ÕT
-O€el5¯ Á¶ Á‡L.[&¬½U[!c@¨ëbÊĹA=W wP¦œôyñ<H͘!æly†muçÅ—Á’Ù{HMw¤ÈYY³Õc ]>/%€B:ýùí¥ˆÀ[”ÄdþéÌ;QGaÿ¬ùõRc•¥‘QÎu4aæƒ×FŽø)J–fl ®7¸"“jÑ}ùÄLC9Àé´ÓóQPor®ÛbŠ@n®[œ¯M¼søN« ¡²0bWðØK¡ƒ¾¼‘z9¦æ—CËòœÜߥª¼z…rGróHw4rÍîC;ãœ4Ép%FM—r{ÛZØ@pÜa²þ½¦öv×Ëú^¦:‡¢›ZXx]||akdØ”r%áÁ°¥0mx[‡kC:šXÒ?yé9q4àݹåÜr/‘±ðv½á£>0êcÉõ2¿äÕdwU×(¤ÑåÇ-yßL-Œí´qÕWx˜÷1xųÊî}Ù,9ˆ—²ºÑž"ÃÛ˜zBˆovñ *Äüû«³ñÄ^}3ôSÄÉ»—%ÔÞ+B¿Àœ¯Ï¥Yo© ÃÀÜ©Çå³.L9BrhF²‡Ý%EJf2•-&žfæWŒˆÚÔ|íV?Ìm6᱿”¦¢æ¾p@4¿ ‰Í‰‚—îÜ_E¤¼$Ë[íÕ½‹ñÚÚú|A‰ÏÇZ °I¸¾eà“ÎÖQßPê_‰LìFÊ*1ã ÜS+† 4‚\4Áï]„<’ø¦áRdD¦ ½®+DÅçPÚÍÍ–—`ôÍhº¼¯O&h|Ñà@Æ/8*jÁ»áZz¶íe8 3c1À” a)„ÎYw 
-p]C[b¢¼”
-.ÙÙ¡ª¨Ë¹s½kò}X«27B,–†šì¶]"@œe ®ƒ 0ñ#”nš8fUNò«}')<rç`C„¡¯RNÓ ’äb£v Ú÷hÈ/E¤!¾^º™Ùy&O¨1Gñ1ÊŽFËœw þ sÅá ÷Ï€"Y½ÎrAàzEçú°~³Q%L£@c…:m9¯&rx»/[ñö£XÑx÷÷g>ó“Ô«Ê|¹$<VˆKÕö™$åy,-²¹=Þ Ð:Ž‹aG ºÌê{=Jòåªý>Fð ³îï@
-ã†b¸Zô݃M¦Þ|rª6ñÅlûN¡ÞuÊ S‘3¢£h¡.âK~ÓuÔÈÿ…œì:ÊSœ¦e+¬v&Ù;Q<÷-ü³¿Iöí4¤Ab?
-lÞX ®++ÚÚ<€~0"D*Å;L_ÓŸx$¯* †ÉñmÍJAwÓìó[ù."¼Œµ®VAq3ë‚ ¤v$äºÈV”¼<áfuX¿ILýé÷Á)°HâtáÅ{óS<8êºÉ]¹[ä—ÝÞÍ”…e{r=lƒ4qO¨séQ‘LHk²¨g çê86¼zÞÓ¤׫;dŸR)%FÁ­ð×ÓgnB)wSÉúƒ_àöÔ›ú¢î~ü³Òo„D‡h)(l‹ƒ¨ãK þî†
-…÷äÜC÷ˆÊb*¥ÙüœžÙ¢k¯ñ˜|€4‚?ðÊé¼U@¸DF›K²(2¼g‹—©s¼»e,¸Öm]1Á¾¨g„ƒÝ›­ÍàR±<@°Ì†Ç¦<ðýã:ífø’ãÞÌeþtÐëûqà䀢B>Ŷ©àÂð j‰ÕgÛ'kÎsg¶ƒÏÐÖá7½Åº#¨ÃP<>"=|‡hAÃ`°°bÔ ‚I`šºçóQbÁ4c¢m˜ÅweÈ/»Jè3øy–ɽźDËJÓ‘@$›«ã:éôN'Èkº9Bþ4(Ozm³“KÝgÁ„Ì=e\Ò†íÙ±evR‡ø
-šNžËÌB´¦Å :À†uH3à¬jˆͳZm×£Pš¨Û—Dƒ^¢NÃTh¨*, ìû3Êb…GÔaw!Ä x!6Q7%ˆÜk/Â2ðf"o›W’¶Rï
-¤:¦ÌhŸ‘aAhë;ªMÀÌ°oÉ ˆ•âãèeCP©0µ’ݦ P…åš²àl¤LÀ?0!îï 3Ô’‚MûÌ)äÄ6½’
-sT B¡¸ açêÂÒÔ’ð£uÔübîGVe­UÛNÑ3“±?Cs!ÐÝê‡xsIî²Aª¨éî>Z‚ õìÑ’ã’y¾NYÐÎ`ìÏ°;ÿ·!ÆTæJ2)ÃNâ7x@®·9]ƺPŠ®YûÞåc°´ÒäJeœ?A3Ë).YT#Ô‰(ŸçC¯&מcyRAP¥Ä°Õj{Çêp£>ÖíŽc/5éÁ£“"-á®+ÞM¹lŠ²’mg ¹E`†}DZb;ª/<oýM›Q–=ñ·àËû±uÀÊiŽSçÏt6šÒqÉÿtã˜1PÈy4]€ %ŠX9$UùÚpÆ|mq»Ž[*ЋÖù°¼¢9‚b®SSzF(ˆ1yt²ù)¯.¡f•6é
-]â™&¨‚çÂ8îö+Â:Äç¦t_vïüDê†_c3íá)òš.–·åï‹íq
-èUÍ~’üN#gÂ2dô™nC÷6¼Ò§ˆá†är±¡cÚã‚W're%Åb3÷°)p+Õ„•Óñ–Ä r^°%¸­‡!Õ]²<máÈW2æ-F{[¤ýÇe‡bÛèdŒ |eÇ2a²2Ãן „oâûΔ˜¿µ^<×hD°Ü0«qª+žDV|¥¡3˜!Å Ñòž<g»ŽŠj–,wr»1äcp¢ló® ÑCLÈ?}‚^ùÏ;öþfÉvj¢fo§òÕèšÒn ƒÔÃE"L,œšè×ɬ}àç¾·íË’6†®æìô’—í#ÝR¢*>¿Òퟠ_ H’¬ÒÖAþÚÇAðC–þ?ƒä«ðÅ<dYWªÆ–¦ *_Ó:¡¦ü1èt"G«±€lUû { Ç}
-óbè˜Ú–ý¨¥t|s6ë²o8ÆQíʨL“m.Ö‘L)̇s1ŒT1|?0>˜8¦ºhįÊû¥Q[G’µÏrzû;Šq˜`XÓB:Yb¯Œ i²BЮè
-íhœzØû²€ø«lÏ_SCص9㑨'C–6$.w4± ~T­\ oRK¿^ÁC¨áÊ•Œ;eåWþ® +H}Òð£˜Zñ(Nͦ Ø´gµúQ+Í઻Wš…^P$8ο¸/Æ›{ÚèP 6“œÇß(–ËMÑÚbG¡€Ë`«7›¤e¢uF‹÷wjä$dûd”;)ÓÄaëY‚<:Y¨¤ÄŽº-Öý;¡6j$ÔçWe¶Zìñ-^@žˆd¼<idª#ÿÊôá=çjœý/ãe’ç áø>çaí,}åþÛ|E
-<¬D~q±ÙÛoü‡&§ÅMm ¹EøðèGòâ(î·cÀ JAd‹ŒƒÅÌ`ËÍJ ªÊ0F}Š¡~UU,ÊS/ó´ÅE| [ãzI4„{<òêÉ,ry¼é¹âK"ûmÓ\„)”b¥q+úxSÄgìZPÌt@–è9àéj˜Wm•"0gÞ*AшÂ$Ô…»Rû–ÛëôKŒG6ÁÏWïßÿòbbçh˜,{zm
-
-0 k5[·?;à] Ål
-zÜŒÒXw s5|¾ ÏÊ~ù+ÁWÊ]Ž, =gÒîT+ᯜÌÓcoHRÈ“>:å¸
-iĵBÍ£<-4ÊMl:f T¯ûò×½SfHoVô)^øŠ’«"jv)Z
-Zät®b+ŒÑüÌ4° á2ºŽiœ½ÍùØŒ*åj! ¢ÿ,ÝA³ò—Us!hRß}ï”°âÏmAñlHV¦ùˆbÅñ…:±`P ÞgU;æ<Šýœ†C‘3`ff‹
-~Ǹ-ãÇëϯ?+0ÒZÕ÷M|'ð®ü¼”É¢bh«”ØP¶$Éx?°‹3@WÕ€îîÈI&œ¢ï@/R =­:!Âv9³²CŠ¾ÝG2c6Ir·¸é ó¤¯ê¼ˆ øѧâ6
-‘{=_K(ó\Ÿ0Ì¢à;Kûf/sEJR9lå¡p.Ân9åíë’8( 3ã›MX
-*ÅK[Sà½_—ÿIy»‹¥®˜7ªMrdNtýÃj°!àGLÇÍ:¦Dü•—¯${Ìöc:bàè$Ï`êµZ ¦šAÑÃ'žø|-‰¥UºÄ!ðo d¨`“ðÎEiIb4]ÿ«Âu©W Õt+ÄРU#ðkФ G–²Ý‹h[ô}Åd[6u&':þ¥˜‘í¦ƒn%¨`ËMš]©›N‘ !î‡5|ž7bBÁ¯Ê¡ÑóÚ¢æô}5O5aòk ªdÍfC;ƒÉ¿$¯¯EËbžp­9t…”`²:ÿx×ñí¢— §Šá“ñ¾§Á{òH4.×·×}£¨á4jEÈbäV¤hv¼À:h¥Dÿ*A î;Ö¤Iäw9@Tô;È-ÕúØŽ3ɨªŒž¤·si'·‘îXu<ÅÌ~ÝeÑ׶­„çÈ¿&´¬¤5™~>yøÇàUáœÂf÷W!ÇT®Z›Åð¦ßtl2ëáþº’v+’
-´`cÈظ3ɉkÇÄ‘òöˆoÁ¸Š­ÚŠ‹PÔ %àÛ’iEý1¯e;G’¦<DŽÖñW92+!_$‚‰«pà4HLcÜ×¢ö ñJI̽Èt?n—Q®
-ŒAFh—f VxìÜž’¹aØ!žÄÒÿ¼ÑúñÝå¦0©kuƒç¥è•eÁ0 ZÙAwàß,úÂüß‘¬?GÙ’’,„CÏz#lÔð!´—1ß(Í­èåËu#¢½Ì5¿+¦34èay¾m'QÂ24Üm?Eôð6bçúvÑí:2.³–ýëùÝ\nE¯-¸\÷¢§@ññ®hmôE¨Z´[ ´'`€º5Þ” *ÜF¬h&:*‚ Ñ!rÏ
-H‰Œ—AŽ[9 DO;ôÆ(R”Ö™en`V=÷ßΣD9Óßß@ØeQ"‹Åbÿø«©?|ŽÙÊ,¦S>j)þfZ§Éhº!£×Rµ•&!Cm­Û†L)2Tª—Þ>~ÿX )U¼ÌÉßy-C§öa}Ÿ3½»hÎñ(Õdö©µŸhocø
-E‹Þ¬y̪8÷mÅûßv´#ž)ÏH_nc«ó>žASýúñO ]#ä"J±2¨ Bv‹ìÌoAí”-¤+®ô+@J ©£Å¿¹ûüÎòâ×£.óhÝÛÔ¦hpþÐì è×З[ y  JþÈò]¾½†{yÞ·@/Å[áÀçó&ßÇT\…9=Ýå‚ùüF¶WM>þdyPp·Ž”èâ]gôÒ}Ç.Ì ˆV£Nç.Š—G›L4
-Ó,¨¿MÓÎœ?uÁM·Sèûƒ‚ì= t‰Öòô-…(½0 i¹ÏAÒ"AŒ–º!È Â¢.'Rd„Ç;{iÒú¡^èPÆÁc1™¹Þfä [€²è>ñíaYfñ¬ePrCŽQŠTQˆ½•ÿD<)Åû
-”œ ”ž5eTÑh³áuƒe@!{ÌŸ,)bK²1*Ò‚¸¢ü­…•˜7ª«E(
-¯ýÍ9Ìâ’Þ°­y 1Š– ¢Ô Ä®•Cæ†)à3¬WËPá„PÐæÛÙ
-Ò·B×f7†÷ŽHRaoáññoΉ (*‰çÍW!š½+rowW1~ƒÁ2δ¤Øˆ¾Är#§‹58èÏ*…S£_Ñ…làK‹Ç|GprÞ
- Dý”AòŸRqÑ_®/$‰¢×;Õº ø;õ ‡Ç
-퀌>Õï«Š-H*ìb&ä•/RŒ7Ãû`™‰­ÞB.’þõ/¨ÿ*k¬´S §÷W3òJ.Ø ¢Ø õ_ô¨-hFô³8F/2¡¬ˆ2ÆÈ7iØ…¯Ll +ç›cÔˆÕ’ îËûÕðJCz‚СiÄå~d‰0”gE‚äØËc[x?á½z èRh¹éÚ—ÄNϬÄÃ6ÈQšÓÈÛ>'ÞÍ"7uCÈÀdáz‡-ˆâLi
-–¨Œ#ÖRÆÄy
-pw%_Îe!ÝÚXú:¦±CPóÞ·þÓÙ<WCp™=X­„É‚sÞˆ•J€„’®Ó 1+ù8Ÿ×Pc
-G†3XšÁ)g wÏIì%
-j@*`êI1®¹c_YOf|m
-Uiy
-únË„‡%ßr
-¦ƒOTKÞ¥¢-ÒùÔºƒ‹ÇJ•´UÆ,â©í8*F,‚Îg£|ñg·²3VÛA}8ÜŸª\cðXILªÐZ$:œñ–
-øFRu~s„õÉ1…±@¯¦a“QÄ[ȵ½ul‚1r`ê~Õõ6˜q²€o¥Á‹Þ¾
-×Ïy%Ì% ˜¡$¶‡Zã¹ç1£`4¶ªïs0R8[*NÌÜw¨„÷×dÍÚw(w-W"äÔc(2rf†"O(qçdÍý Ù 3
-~ŸP´ ™@JÍßl€f˜QjÃV³7¸†j°¯ö,ƒ„«åÜn¹ï\é%{B3 ¶ÏÜ„q— {˜ä)}jÈ †d)ƒ}( Õžãv@Sí®Xó°šó¹‚„O
-RÔ– ´<DÔ”3  Ž0âf":þ~ Gív’AOÅFUcáçíx¹€>ߘaN£aMî ×!ùpI-ï  †xSý3îp•ÁoÈL‹1
-ý¢&â@x ®­)Ž\«C86üR¤r¦Ð)ª|,,¹M·Jˆ
-¹,<_D#'˃ü¥…yç÷7 ì&g#¾JŒAدÎr ‡à$ˆ&ü=/qˆ\Þq†ªÌ[>ϤHâÃH}Ìo ¹TRÒ\‡ ¬ŒzZðXqÒ‘ƒj1DY¬ ¯­µÆ!(÷Š
-F\DŒ Ÿ¸Mˆ#ÜÐ$ÊདF.ÛÑäl)Ô!|§t¬a5ß&)Gøö9åÙSe†~WÞh€½´èÑOAÖ2)oJ&‘Ý„óz²–æ/†š9a!ƒ.†í0ùµmß·è%`Ø£™¯T‘¿ÞÂNâ30̯²ž}úÂ+eíI›A!0¥rÑÞ…ds [î肽jJ|éé&OÃML]v”M»Š¹?ïƒe ÏúòÀj–õéÔOE»ªOû’.Ó0¬*ùÝ@5Ó@²,ƒx2gS|32Ù¼"ÂÃ{„bÔ¬ i̤ñ@¨ÇVT®!ãçMOð"<Œr•há Lc}`L²äÇ(—ºà6r“Zïà‡ÒËŸ{D;«HÄnÄÅ™ÆiÛBä´ñ¼ô·Ø9ª~½9çð{ü\;!¯e0óÇW©]é d\…¦ƒf6Ûüjá ÒìÕåMŽ‘QÅæ¢Ó;D>
-BQôìçªWUÆ}Ñ+‹¸z ’Ù¥r^ƒ™ ÁfáшaZoÒ$;´¥™jQ@¨ âžR½€»Óa&
-»3ë âHd*§›ƒéH_Ÿ—¬r¦¾à 9Ñ#ÄUffÎç«(À2´û8+&dÏrò
-}¯Ca84&Š¼Vá9ôGQqt·Â—m´fÛÎa”pŽ).[‹I¯Qdzd ůÑÖVK`ÂÓ<Ì8‚C !?~ØšI·(Ê^µs†bÛ­´åwð… 'C¦ Á åãÁºG¾)îm›R6šTòv««BkL¿ WÇj±ÿR×€ >lûî _µd)pÈpñ ¨Â]p0jÐ#r‹©¦ó·ñø ÈR)Ä°׸L¶˜ú¥¬Åä¯ÇWQ˜¢
-ä{Òš@øÔTE'qN8n
-z¥‘Ì\×[4‚¥‚·&›áÇ ˆ§‘KX kò;¹úÑ ‚‡–Ê8*ÆåUÕÅUÇF.Õ¡JI4”$3ûUÚFšÞòX=U­ÎUŒjvSÛ FVkôfØ«->€{¿.ü3sÎUX=«³“à&÷ÏØ€-æǪKÚûf_E¥¦®kÅU”QF\DïýDMÉ/
-?ù‘by"B¼Ý³–/ÔdgVûÍBMðÓ"ä}·µ@𴸜Œ£oolíø’×£»<úøQrUQÒÌãˆÈß1B Kt=Ï{¿A(T™“º^¾žfNäöÂÍ_NÁÌ0ëb® õ‡ÃñÌ@|µñ@gHR>‘^´,Øϳť™±sç&VJ©dQ _ŒÓ‡C¡TÜQ™­ª ûyëåЖ ¹X¶fŸØ´»YD~éÕ$ê-ßÍ)M—Ef¡g•­\Š}ÑnÊV°pS|T#ðmxŸ8bŠ™»†måÐU&lž&mjàtE½ñ!’g{×pIN¢D ã-²”-Ah'50é‹£P¦^ÚS‰•€Òb^£-¶ËCX;¿` ˜oh g>ÿüøå÷ôù¯?>~ùïGþüõCÊõµ™‡œÙ3+ú@òxfòyBýüî üDšòŒ!È—KŽÞ³èp¨ÀÈçv –Já<ÅKd¹K’ ¤ÝmpJ›ÛA¢:¹¢Œñs,øÈLµx ËÀ–*ª1´1–l‘½‚Âè&¦pŠ:
-_ýE.vµT™‹O‡ð3ubœG7ˆ}‰Ä%i’–¡[–P}(¤<fà „ËÏS³8‡:T%”® hlKÃÞõêÿ·\ƒ’|:q‘ Ô&{“PäJq; 𙘼cãv5{yC(,åÙÞzÆe‰-аÒ'¼ÂG‡0´Ê¢¨ažþõEUD4Wv¿"¯NÞˆ òcš¼øFÙZuD“y3sí­xÀqŠbd:öºùp\@4”s¯ò¾¿€^'‘SEZ]\
-ÕTB)[AìÍ;¾wBî}O™Ò@ܘž~öâlj„-ÀR0_Á-Še@Á<)gÊ~[ãŸ!1aM
-+í~Këû¸)Î!~¡èr´#†Ù^“D˜G¼†êåÝXz¯]…æ °«Æ®—ÆlÃÕ=Êשv…÷³6S¹*‚v@Ø;Œ•4Ë;…òhL²¹½"VtYðØõ kü‹>ñY¢ß „PÅ3Ç4,náµapÎØ<Ö[Ξ_ŽfUÌ!PNÃM'xjž¹àÞ*gONqÒé#Û£ÅîÍQq (ÜŠõLÓ‘£ê!?’Ù¸Ñ/ Œêó¥ýŃ0ØÆsN쌗Ir$7EO ;ð4Ìúz©[pKÞÛïÃÙÆDuš©$UæO ÷?tœVPÿ/wDClÛŠó争óµ#¡¬ ³ç<Òq¢æè=ˆ9gÔø×27ªêÍ$NTfžz°‰>*~V¦¯åWgà'H­<–ó_ê%x/
-øm ŽzÿØ¿2®WŒYü8MZ[ÔÏøÿ¸T´qrŒ%•Kq49¼]^V#òc ÑµÕXÀ&°)òÁdÃda˜š“ì¹sŒ¶R22B1ûräT¿šÕœkëÄÏ&÷ÄîyøVSmÂÑÎèÒp”ÝæMé÷æ¤{ÑÝ(£QÖ ²RËæ¼b» ;B6 ?d¯z
-WkÁr±YÊë¬[S@ØoFŸðYàfyZ¡-ŠÑô¹©ÛÝ]C2À¦K9 [ƒ
-Ñ„{ð».²A¸qû?GÐTÌI¢E î£§@bm²øå]ž–‰DHŸtÝî=¢WTKC #Y ®hÛ‰ƒÄ‡AáQS6œ¨q¹0÷L‰Fv$6ehB*(u’ ±DÜ……‰/¢CDÒ§dë º´H[†Ó4ŒLl"g?ÍTâÄ1Žy@|Y i¬3Ð)æó2ƒ0sH)…6ªqz .Eé ¼í›/¹ƒ.=ûíçi!HæCôk)È/+øµ8ZI×y”Õ±kÒ¨å¯/2Ž»1œÈõ ´ œ†¸ƒŸ¦*±add… —<ÍÔt„¿&"Muªo°c#Pé[Q^oÀÐ]îo4<£lËÇx #aŒûÊ2'ȯ.]U¾NýÞ8£’ÊVê» ã ^·{tá…ãx]AÆ1æá@´•9jqLи`Ïx¹²9fZÃS%oµEóLå„Û’ûŠRyû‰˜ÅõþèTƒ÷Q®´÷î€ð{äVOõþ
-Th>}^ÿ-ÇLèÔ’§ÅÍòƒ …KFÏ’8ò†êa`F/çuå¦lNŠýìr€0ñ|Û{>ù©µã‚Ö©„ù©8Ø@’’!Ùf)ÊPж©;DÚ¢1‹ÎσØYõ¨5õ t’;|*uÐþ(œ7ÐÁ,@êŒ+däcAøϵ4×›Lƒ) ’äHqÔÓ!Q YÊ“v 1éxxtl«ÔDëu‘­½i%i
-k?Z ]oÉâ0ås_T¤Jzk{Z'÷!£=bõþŠØ¸&¯”s1#ÌnÌáΨPÒ$±ˆóÕ‚™Rw¼ŒPcQ\hä3['ðµÒRºÛ ûžþ¥> –#T9ò$»ïŠèôàñS}PC‘Oúº8öïMÌå±zµ ¼ÑX<Ÿ‹,wÜÐÜBd8½Ã—Q= ÓãáÑÕ)ýâ½v_ür­Æ‚ J¥l¦AD•ô e¬n7o C} ]ìtdÇß]™ùûú^,ÿñAÛ§ˆÿ¬bB‘Ð'y„_Ocú;(-eÍÊ(£‰a6EUÆóMü—˜zÆÎ6ǤfýÔ­*”„óQ£4âÀ1Thî ZqÚ2È#rE×Ý)H)ðäs5~Ç •°qÂ~€¬­ºj¢rÈ`?­Ãí"‹nü4 fÁ·ó´%:dÀÃ*í^¿¡nŽš"õÏ?gœ•uÍqÛ£Ý@ŒÑŸÌH˜¾T?ׯæi¤A´¬‰oê@¡kŽ/7Ù7/¬Ã{Ò!;;òIF€´u’î0 }uÃÚ‰rNíþœ2ܹ$½×âïIL¢¥‘ž–¹¼øý0·Æ9]êÖ€·Úܺø^àÃ4üz¨¯wFFÓlº*œœec±ÿã°ÞÏ 3½¨×M¢< ¼¨¸ƒ/7+âtfX}8  ÉV¡Œ›c¦¨Dj½vÞ¾Žæ¼ ¹â︿Øü94µ˜(þýÆíáO¾E=V£´:r€ó:t³¾Tj«û4œ¾(áe!¨ÐÇ£J!ÝÙÐýĸÔ!@ÛiÀˆ%¢_z<¨å‚ðV]ŒÈ Ò;ÓÿtQqË“/È&û¥ø©YFðÏ?gЯ—ÿ>‚P|<MÔÍ'Û +AÃäÍ„£+Óò
-Éo®œÆŒ<ñDÌ".¯L†g™ß3ìæN<%pe¹|+2fš>¤·øu"Ë[ŒS[-t®™<®Coõ„,f™—}¬Näw¼÷(A`"Ë„ ¿•ÃŒ·JL´­*‰¤,Ëà1wðAÇ<Θš­ÃSÓ
-"Ò1“@¶„éQYª<›A}ÛRñt¢‰X¯Û«h×Úý:<zÇju¬@t-WÐ)Àj;T‚ €þã_@¿Î$J õJÃi‘f#Hè•!i;桉h
-¸[ š3j¼ÏüÄcÈ<DaÆÏñ¦ÔuI!ç|¦Î¨èT„£VrнA•$Á
-¢ËÉ°ÿA¬…¿Jtod†­Öô.<ÃRô» ã«]·{D3Ì¥ƒhú÷40‘-ñ¸ÍÝ‚f˜ 7Tj8¢Ãæ0~Ò‡(8ê:›Aââq€ëYµ¡vž¥•–€u=#–äì+_Is•á <?‡†ë "®£p¸å
-o¬®É’`ùL]ˆ*iš¸bv+ÒhE•÷æi›Œ6‚)-sî¨ÒdMj É×ÑOË4“ç¦u;ÈÙ \ÀC†Q_[]Aˆ)ƒ`A—ù‘ñß±†ºuŠ çr[*Æ››%ajxŪ5Q¾¾‹Çä7Û$ÊC¼+ûïêu˜4Eù×zS:zÀËCàùA“ÁÍScb2 RmÔD™~È-cŸñå«Àd‚áæ5guÈÈ"”ÁŸæ—t ›ÐÑqGSê…”È~$[†á£…»ÁëKG)ïRÏù
-ǬläfoàPtŽœü4%6gó& 13ÿ"Gô•Eù_g$<eùÌêâÙTe®MH<eÓüfntvOh®#ÔÊvX‰¼;b±0s6v–"1© êiËЮS·®Æ4ð4rqaÿËx¹dÇyë@xÙƒVàÃ7ȱïP»ðTÞÿô~E€­XÍv4‰s$ˆü êцo‚2$D >[ð=ûTå®»=væÆ P_ƒÿdU§ ÌA˜.ä¾WW&ÿG·0”ùEI—غÔsÓSoÁ"mÜÄðà2o#m&ãµ$Ò7aó£­î%(­R"Ö¶?(‹'dúe¥G‘è3* ëXÝ/‚Z%Ã$ÒÇT™ä¾gŒKI ¶TB|ŽóçsÆ:&cÊZùøÑrÕC-J´» ¢Ùý}èÓƒˆ¥-†³ÝX^D¯¶!ÿ¡-øUA:íÌG‡Ù’¬¤‰ë^QADƒ‰‘ëæäÈs"Úh×¥è#Šp™Lt–ð5ÐÙZ[ôg<ŠÆ±bu„ÝàkÄ÷XíFšŒ½œMîœçÇ)²B--ûìð’Ê3ˆCÒòtÌD<Š[¸2ˆ¡ÖSÂñHAt¾æ%õ³’iÙ«s¸dÕ)åŸQ‚ÐÈN U
-€Ší’þ+Ø
-ùBù̬;·f­[–¬T±ÏÏîE •˜Æõêòû­Ëß-bELo(ókP™„H¹Ev”
-õËÌ„¢ÀXà póºaPÃ7i\À
-ßdKE™-> E˜ACì…wü/2ýf–…TWy9ð þ¾‰Ž*yÔðWI[H‰<%ËÃG€Øúaþ’]‚·Á<—òN!“ß{¢
-Ü(Ò]òõé_J¢Ë¸$—mëå9L—ˆÏªñÉô *Œ¤›ë@é(.¢Ê`ó•çª/ÀH’_)%ìÃú‚®_Ásˆ¯øøZñ* à–õQ禿Cùýá6:ag—5ûñµÎTqÀ˜…nŽú§"¦Èú࣠»±¿kŠHadožÇKÑðŒL/™|ÏÎ~GÁÖÄ'YÒ4ΧÓ3´}Ê†Ì ÙX6l¶h(Df0Žé¦¨»DW5Ý|- Ô—Òøq‚s^ˆ·¼0ŠÑU7Ž€;èã–Ot•냕€Î[±ÄiízCøìçõ"àa-DN“TBäúR¿[$BKlîŒÞu>5@Í“fƒ/]æ°Þš„±S½{‰Œ¸nWßO„W}y ™µèÒjêÌ@îEòtì3&³Æªâqa,aì«:5š¸º]H6‹A¬ºT0tÑD1s]/NaUðDRŒSX|¤I‚´s®V,g0Ï_;™¤ä’z@ôÓ(ʼhÎbr´<²”+ä³tîiÂ&eZÕK”½š*EÛ%T(‘@\ËqA‘(
- ÿA^á/—_–5B¤¯y5zº8}Ñ÷|©ˆ¡ã[»lUO÷@%\p§Ñ!Î:³ÈO©yò.êžgUðd„~Õ˜˜*)ÕOè3)'ðÕt?ZÇhí$´:bÚÛÛ¸'šÅ÷Vñ×wØ]B@Y‡¼%eȵ]ˆç·× ùK0^ÓI°ÿŽL^4‰–ì)f"_#SDÌÂßpLnwö2™xtd¹ÝJöÓ s½¡}Ð÷ýû1dÙ
-n Á Ìþ±‡Q"gÝ0Ø9Ø;@ÇäÜGléSQÝÆÞ@„˜Æ»ñgX„¡¡}»ˆëêB¤O$Í›x)Ân+³ñIŽ³ñõ«˜ÅÖ¦%:m"(7
-(.ô/Ã1/ñ'ãçe5ð1 )س€Õ
-kÃÐÉ™i(Æ]†q1H¹Á&’¾^­ûÉUšáâvž¤`FW<<7é8TL|Û
-é (©3¡²¦HG¯~ÌÆ{Œn¥)Ìeá¹[”Ð:Ú7W9S•‘¸€íŸÿÜjn3Gbh/®™å}‰ž¯E_Wðãkúþ™eÊvë4.?¡/VøZ¾Ñ„ŽLjãe£æKÑ.™°ŸÚc²dh’í`ïÖ.áÐ׉õÍ'î ¦]ÕÝÝ'"ngÝ395ŸdYè½Ä‘õs
-O‡°Œq•‰Á&rS]å*yoà.¸Ù…g2Ò±™{ŸÉSQþ¡ RØ—!þ÷§#÷Œ)öþRôáEežØs.¹í ¨îã‚Km< îRÜþ¹Ì^„­8eŠZr"ð X¿ü*úËp3–ɼÁÃ@1š¾Ñ’2/Š6Ãá1z~Q!€é>&¶ðRD0`·aYÿ
-ßÍØBÁÍÃàÛªD¤%‰šå„Á¶ö×ÌvžD†úÕy S•LîÆ‘ùÇMN4ý
-½¤uTuJÔ.|Çqè+èæ%@áy¸¸à{Ýóï««"¼~Z-tá
-Ù…Þ„¡ ¨e·‡ß2/šà!Ð÷sò¾Š¯ÂGXtG‰ƒaÍKĸ/²Uôã\„T `9
-¿avŒw’já·PÖ
-ÚÍðÛÌ·—Ô,)ì¯ʈ[ˆÕšQÄB`•‘Ø\âíp¹uÖPKöÓäs­[¬Éš6÷RH&Çð¬!·óꨠáÎEЄ54wÿ=ß•ÝO¿&X u}=6ç'×Ù×ñ¼Ž¼õ(Ò, tú‹ÐÃDs=Øé©dp+²Ô}âYÀQä;×¥èãE.^ ‹F FᶔrÞõ ®ØY8Ê ‹Åî*Ï1õÞÔÁÔ<0˜%LñŽ»,„\QåÓ
-©{‰¼=
-ñ,^®
-Ñdz $+ sÀm0àÿ/w;’#ˆ~ÿalƒz?L2éê y”©ÿ׉®¬ NW6æ.v±Ëٜ̈ì½T4¯4éP<öÃUóE®>¥Æ›&œà9ÝòKNÉ|_ì†X 4˜pŠUÒW¨üèÖ›HÈ à•ö«O
-=¢ßÌW1ÝrŠ¾¸ëŸw,xÅÍ2¡ð{iñ5 X †ŽÔÿw¡Î‘û¤!Å™°«„6ö¼? O™85NXäQ’ Tx™AYÃå+L»ˆx†%)!4¬‡zŠ’G‘øèÎ-'uÑò[EN”ôŠnQR%šÌdm™û%‹e$4/Q²¨gýBåXü(y\Æ)AèÇBR¯ä÷ 8.–|ˆ’”@Ò|H/?ºEI "ăؗö%)Â:±-æ¬7KR"3Ò¯¼¬ä–%w²äYã]zoØBl4íÈö}Qí ¢ÖFþ¬èØÁ[ÑŸwÕö¹"›ìöê†ôŽ\$d‰3®}®Ÿ¬ØExuD§ˆ’ö ÁÒk³åã&g”pÖQG ³l¶d.å‘jùº´&cD‹›„ݤ“Íe7HÅžÃOÙÂþZ `^O§"Ø*é€0,¿pî¯æòvj¸cñG¼œ¢?VD†e^¡q+ÒfUne[Ö»†ºš¤.íéäÐaëÜÍAChÍ@—öÉ3tP#«Qö|°…î/“5CHl|Ø÷pË
-Þ}™ƒ"ºK«øä¤îÏ)`hÉ{vþa¼´;’ÄUP‡&ÑÈv&ݪ1Qt;Sù‚sô%\8ãÈÏ3¬V×S˜YD ù Ñ ¾^ ©€H‹Ò¿4×e:Ep1D}Q÷Yš#é˜GÄ ìØ_>X˜VYQ°Æâûn&vì¿›'÷CJ™gÌäç÷»_¤ç~ˆÐ3îÁý4VU(
-)ŽÖ>H™ûM­JXÓ|Øq®ŽND­’=9¹ÏÝD9ô$ÂEÿ9„P]”Ÿ”U2p®"“Œ¤|y¨£­®òž]äiSt'e&—ÿßIuqDŸ”1ƒ—²$qæ'-ü¦•‘ÙhzÁû]8€«DÉ!5‡{?OPôb=ÚQ·èrjÃ+Å.(k¾(fk˜Å}¨;(SÄwÐxÖ ”³L#Пa(óî€òYãÜy&"Ö°µÆ³ß-ò@ù\A”¿ÝÓÊÿCG¦ £4gë¯uîŸ!âG`^N¾zPo”YÎZ\\¤Ê’Óo”)*µÊ߀Šî‚2%H†¼¶ñ#”U’¹GúÙ[ ezÍc?BÞò@Ê*Â:˜üþ¢ò)ó²9g¥ñ¬i~:z/Ud«¤¬£T{6Î?\RV—É"ülŽäa°¡)S”aCIIËÏ©¨geÔÍÿ7V¦0 ,2ª>°2E°(DÆÜ•áÒ2%Ü'¦>„Y.-Ÿ%-{E-ŸE-ŸŸ|ðòqt—žÄ|\Äé^Ç…z.È`¤PyJgçýÇhkhÔØzÀ¬)ÕD*´ø
-Zæ Ô7Z>¥Âáe¯èNÌgÍÁÌúâ
-9“Í+Eƒ âêú+£0ÍE"Æ¥¯ç0{!ñzœÓJ
-¶3Ÿ"{ÁÀ•5õ·{y (D´ùôœ
-3£ Â~UjÆ¢/úð®‚SÑ;´a¸æ[GÑ ­Ëlo
-C\j/klþC—j³sñel +Ÿ}W§;à/ÿ¦«õ‰2+_ǯè*!bDQW{E!VvÉJ³«¤ñ] ‚m§ÊÈ‘¦FÕ^…bnæØÑ+·ëœ«&bSrÜ‹JÓ95oZRxV|ÒŸ?œoÚÊ@‰9Ïw‹Ü ¼½í­š›&¸«u/º þã_*—õÀ
-¹³®ZTsøHÎ)ÉÔQü+å½¼é~[ß\ºì'ìñˆ¸R’Ãg¥m<XfÒ°È}ï¹° XN1ÚÞ#“ÀtmP’ aâ!¦´d*„hKkQè¸ì—"jò¨2šíìÐœc·í"ì¤ü:¸.Þì
-öÓö0)úåÝÐЊ èÒ[W y·”H¼†Küµ¤0Dd¥Á¼×¾["3˜APûðáo¡ %W}!VÑÑÌ[ÑŸw:.PúÇ¿1ÃþçÇ?þ·˜ ûÌR“ÈcÖÚ÷cg¶&é“Ùéÿ'·ˆÿŒßdš>Ò)b§QÓ!j†Ê?VIBWi³lIøD[W ’Ã_â æ*à`Í‚òÃïõªô…cîˆ1ì*¿»žF–á"+ƒdù`à•ñãêžÙ›&|:%¿WõrÖ˜¸öøœ:i2‡Åï¯!aD¥ ÉÛU†ÁË°!3ò€XÔ׫`³Œ>“Äl^¤Ø:<6Zû°+…òйŸƒM£ejaIoÜú‹š®Ev ý›®¯"…>)D›TBã¸L,5åÁŽ¢‚E'EPQ1)¬wF
-751 ôŒÓ$»Õʯ•Fó»ÉU¸Ø3Õ×c0:~Éf6YŸØ^€ýÿŒ—9rd7EWÀ=´-#ó`vÐ-·WPÑËìý÷¹ÀC–òÿ—%J¡Py‰¼á.dYcªJ”«i)­ *d9Èr2‡qÏó Ä<Sq(ƒ÷Çpk|G¶@ã;V‰„Ví>|¼P)–åsZTdÂ…qÏ9­6à
-`bŸçxÖ8s&_GU=ˆmN‰x§Ì›BôÏéƤ¦(—f¶¨!ö¼¹ÏQV’I@cùšy4~Ãå“‚} nÅs@ÐZ'',H‰]“$?h?
-¤)ñ¶iõøa)5;÷óÃ1h°EQ”œ›ÂX‹Ú4XGw@_‡1iq’D›-OA6SlÙK^²Ë/¦9÷”ªð7éðƒ<Qðí V`
-Y²'ÑîƒGG\¡Ã]…Õd! ¬”=ž#Êy¦f´ƒgâÏVz³sh,—,¢cŸÞþ‰&—-Š±< <Ø‹T›Óö bBcÆÄ|o6½æ™K.er[è<FZÂü.è*L?¼Ï}”V8­5$uwÍz%ÔŒÅ\SƒžfAºÏ… ‹àþhNñ¼ÓFš´Óµ^Šš»iå¡w‘j±‘,˜r<C·ïÀ+ð$•í;öÑü@€íÒà+
-ßsÄ>„ôHµ ïÎáË,%›}VÊMæ!¥Z Ñ¡2þ£Ü¯ûùáaÃÄqž¸Øx
-LM¤Ô!<½ð„§k]1×}ø}V qÃÂ>'þ²®ŸÑ^~œûIg';ßaë [4_”´¡))ÔF`ùº\Žqó ä :OHÁÀ»žÇrAîR\?÷=ÐeQÝy¿‚d¹Íg)Ý,ˆê.ŽÊ8>^±×þ
-¹çBÚ1
-`dŸ¥å? 34´²z‹ÛÃpc¼Qä៸t¹Íx¶ð¥q "eæ~2~ûM,)xÎFvo#"ë‰â_o@ë8¤R†]‡ßÓêc¶—GÉš¬”]‡ŽM¹Ü`VBrÊîèõùp®¯¿jÇ‹Á Ä]‡i7Ÿfág
-|ÈF¯Æ^&àórìÁx °÷‰àÛkxs™YÔòÐÊ»7q0&ò€R»_šûð]Ê{¼4éç?Oðgbsi·¢WNÞi¿\·Vø òÁK€dHUi1–êç0W‘•áÈoŒ3 ¦Bê]C=^õbœ9¹@†òH£øŽ÷Út×93¦;Úâs›N”~ uþmΙþ‘Y|Ð_hؘݯNÔʆ™3”\ýß!—^}~ø ¿·þËÅp?Ò¬l'oߺÜÖ!;a£Yü6Ý—iĬhdE~­àruè!qÓoE~íƒ#^·%öDð¶[·s4]ôPâQ²{ iÍŠ/Pçxó( {—v+Br‹s_‚Çœe È*DVjé•Ôϧþ¼ŸKµXÊ\4–¼×ÓÒ_ê2,¹´ÇœÈ/ÅV(f#Ô‚È`ðÃa ¬$0µ¸ªX™ e›Xöóï‹„ýDW1MÕƒ¬·5ÂO™šB?ºå·‰¹²7v›µøÔ<Ò†T¹f±™”`©hbÂŽ¿ƒéª†ÜXxsLß—)dÈÜýË>R
-”žg{õ)ÂPdÜ”MÇôÏ„EU e6CÛ™~îá@9´/„f¬B1¹k•kÕï ¼b)ŠƒòžòFº4“äGû6(nCÿF©Û@ÝAáóLÚ¦QôÏ “ŒÄZ"q¼I[I2É0›&¸áÀ¿ô«[»ˆp²ÍÚ°a=…Lc¨³/%Ø
-.i)ÖO$דr'È臭6!Ë¥Tôe è‹Rð´ffœû#é˜Ú`ë'x†·óë%q—$O‡‚ÌyÆÆ YË¢©óÉ,üIP68¹IV™¸ÐûìÝ:ÊHv™ãi·ÁpÛ‘ÈiOžc,»X 9ÓôA¤€{¹•NZ<GÀ‰=ØjÁ]0<Ã<ö(óGPšÊ1³AV+˜olAy¶BòÉŒCŠ{Ó±D‰2È™T@•zà ÍŽb6û S9ógŒAÇ*|x´ApûÌ2Jñ;0j.g9OÇÞ׉ ¤Ã_>ãÒ‹*`’ÏÅVþ3SŠSÙŸ _£øÑ|Hž9"a aô_“–“<.éïúöµA¬:Ù §Ò=Ô®>ÐÖ ÆJ&MÎ_%*Ù΀CYtÄô Ad?YBVLýr@wg‚9Åtp:.ƒº}tw&ûs4º ²üTºÈ›Çº½pæ×ñr® 'öîq¦ÊÈ°’h„…(PBÑ”ÕáS¦@L÷d5Øéüîÿ‘eJíY Š‡%©uCðˆ€vÃXµ2Îñ’‚œOýq‚dîþúòýïÿ~üõ¿E,U»Ü+ÿØ&‰oA7²žfΡt®I³ašaw$1ˆøÞmž8GŻ͸QJL­V¥S
-ím[˜‘™$d~¤£àó >äfA “Ö¢×Îa
-û‹ûœ(G§£cܶ 
-MP-O A/áwB…[Xqc¬RÍðþPRhLL„_F
-ߦž¬Ö\±ÊxÖ)âʳ=Â7áQ‡Ò›³n el¦ÖÞ/ŒEKH’Åoc‚'¿öâ´}/¹JdŠpôõý( 0¿àÿ®|¿(fÌã ¡œÚºŒ
-8#ÑK.þ·t$-B'©ÄœÖ ¥›Ð÷—­:`Q&©ù—
->ÿÂì¸rpSâKcA꡹<t_KŽ%‹ÁvmS>+E…¡¾Í$l Nš¯ÃÐ[9fúã¡}-ýçÙø«í’˜øÀ`£-Ó& SÇø:åý©ˆÇti?ÅñõEfŒß„m"Šµ‰e?Š4ÉÙX†èîFq"ø¢7gÉ Ql[ 4Ò8Û—÷"ª×h8;EŠ9
-1ÆääN/ûë}°ÐA&0ÔÊô¿†‡öé)Ó $Ó¾uJÎ
-jîÙ2=îô¿Ð·$fÑ>3V×;–$ÓNÃän©¨ C3^TH`l±A¥ômÈ°—ÞQ§Ý¤4¹w¼SsÞXض®a®ð49­o?€~?€tÂÑ`Äb]_©— …]Ú¦šdXø>皈N#.3¥Uàþ]#T¾´Õ. âŸÕŠN‘þäZ„ÖüŠ-ã:‡EH6õ¡[iºÆ#ìñ«`piÝŽzÿf±ïÕ´¡‘÷dmŽT§¦ÅDWër®× 7!üÆØ1
-ëlÝãjäô¾ç§[SªbwZ
--ú](^TÐ3]÷ÏZ t“Ûr~Xà á¡&ý×¾K÷»dg±úÆVæL94JO²¨Ç—ýŠAňgô[þ}ªðOAÔðJØ“:¼Ž \‘aúƒv¯8#HYL*Ùú\Ûœè(•¸´ä§°ú…lú{!pt2h’BW•.fWÊê9Y׸ÍIãÖšwÍ`Ð
-bÌâסY•Iµœ9ðo\:Uû÷%HC¯Í7ǘ¤•¡-ÊeQŒÆ.N‡¯dj’Ÿ-™$” ùÐy‹É1fÂÕä=±ÙN
-»µÏIÈI!’e‹Šg%^I&íÑ! W^äú<B‰“¦½½÷á{,þˆšþ^·‘3bÿñ®öcÐ%°½@˜qc׳\ܯ QÒÒ®‘Ù\´ƒš‡é¬+©â°9Šœ5oël›Í²]B4ZÿTÏæèÚ
-I
-îÀ?e
-F|‘Åx‹ûÒ„y¼
-ÑJì_G É„&i®›Lò‚XŽL=ìÇd¢—C¢„\ úS2™ A™ïKîM8©ÞÿWÏ嘃„N¹“ÏͲW••R¨h(ôY@ll&•ðž20"à–#…iµŸÄr²Ø<#ÎÜD‹`Ñ? „W–(ëm'È,OùÒ7¨ëýᢶ-(‰´³¯„½##b²öž_õt²FE$\;Þ²ÄG“uã
-4§<1FQÑUˆ¹œõ­wG „a×K ­pÖêû¤3‹ãš„œôò£³"ÓLæÀ—íW]5 `ü–c\Κi†Ux%i)´£³„¹E ¹A?;ë;æÔt(RäÖlΣ³¾‚®;øúÉ¢NÓüëŸÿDjüE؉x5BÊf¨Kz¤qß „6!·ìã¾ÙˆOªð/Œ›¶áå7U¾K樶Ð
-ã„'&#Žñu˜aö„úŠÜtÝÍ/­ƒ@Ö9´Ïw&v{kÆÙ° béÁ›…ÜSÓ”/n¥§r»ØŸ´šrE„¦Å‹5hvÕ[s“©(3˜Æôòú$Ó?ʦ@"gý+jâ¢A6(E´˜mA]É•Åìºb"—(9LõˆrÁh,¸9„ÚI~ì]õcæ©\™Ì¸ÞŽÉëº`«ññaTýC7P™(ÓjÿWqQaùaˆ+¼(¶ Ä…ŽNË&{;‡R·±²¿T¢MDm>:ü oÆ6v¯ÛÆ_úƒÛ
-ä•CðÄn¾³ì¡%ІƒäP™¶?råÕàçµ¹R0NIG arCÆ©Õsbšý0y%Üÿ2^.¹qÄ0=Aîà ôµÎÖGqî¿Í+‰šd¦Õ‰Z-‘ÅúœbÕ,aȹcXw‡˜Ýd/Jì¡>´éL¼$S.¤jyק°Æl”Ë®ú}h cÌ1û9èO'µø"›¶Aâ,«w¬Ð`xÞÆþÐ{ Ø
-}Ãf®SÀSd}ùpÿð#¿—/h  ì®\7ËKó£çN(‚«1¶;¤ð$-èj…%±´ng#¼XñëAÒ)at»=7ø¥äŽ›^Š>Ed@š ’êÎ×M¾“¹
-%çÛ~‰G=²—0YñhÚÃl6Ìè×ýùãT‚Ü@cæ
-8œ2°KY\Øœ~°Tp*î
-TcµÌµòRD¼ã£à©˜ÊÂâåc¸KÈ R f sW§e·?âÓ±
-| 8´ßöÕ#
-8W®|éw‰r8p·A(ØéQÚ9œ¾
-/k+ºžòT~ |¬!÷.7¹L?1B¿ Þ_ AÚ˜‡mÉuìäÔ!qÐl´Ú1ê4Þm±Ý±=€ÁG9ç[Ex«©ðh=³†ò_Ÿ§ýúVÑ»ÃÙK¨° ~[q¯$Àã*f½­×c¦ÈhF;óøû$Žzð>ÑÃ9︨3­QÞÐË|ý`
-H‰Œ—Arœ·„Oà;Ì2E
-éÎÅëXãç JÓÃ% C é•'öëêðAŒî Ô‰Ðø `_É®œA³ÁÕGIO‘Zbx_H•}QÕˆ]ùp~>`Y×sxè°Œ2Ǿ -ÐIc5›ôÐ…ã¾›>ÉÝæ…`zqž£iþÒ “œ§k¥»f9h#H…¼‘µ?ѧ½kä•Äëìž;Ha'/™ÔâëÖ<±u*<|!´g4ŠÑd!²y`8r# BeÉ©YAÉ/ÙP‡HWi¶@ÍÀ²û´6PZéc&Èø x× Ív9É)߶-Ký$ÈQZùÏF ¥VȃÚnRÚsvàØ—”‘æ£/_=JžRú§™1šÓ£ÈL±Mãá*Í¢ëŽÃÏ5[”ZÉ‚0؆–êùÁ„€è©Á\¬à(*¤eX© ÃôS%¸;üÚ’¡ttÒ](áÇ|4ê¥ï©Ët7ò¸!šÐbVw7™÷øÜ]ËÚ9—ö„ÿç8”;¿È`ÛG!)‘rßå8 (Eª™Ã@õÎ3@žÕ=áoã5tðR´'’"_Uø㲇©Á62¼!\ Š8íäPJfs¦KM.jƒá«~ˆƒ ¶Ö+eþºMð}i­v9ÒBf=!" /a†€>$§–ï)Úk­ä™9¿é…ø1U5ûuAx"cÙl¶osÓìÁ¸bÈfZã:ê¿…}¾yŠ`:ýdö ;¿6ˆÔSväòš¤Ð/¸¥ä<ùZ TzO½xi%ò¡°§.þÐpèKŽÑ³àÚ3]aC§zÿ¤Û…%{“›ç(—’U«¼?îtAø!¥`Ô_“¶æÕd¨-žÞ@2 ©†«NIæÊN¸Ë_ýˆã¿€3ÂÊJàÄhb˜@¢¾H†›…ü‹êíqoyXŠÓ2xë1$õèå­“r…—É&‡Aß!ÅÈQÝ®‡ 3σ³=¥8ø"4¸:pkbŸü•¦é hÃŒ:&-Cvhýº!U›8_1¤{€(Üè`÷QÐv3eÛ¾²dO–tG&+~¢s¡ë6´YH.›/‰ã.ÀÊŽ’¤æX@¨þ8aN5—'®%(O½ôà·˜÷æûú“ÝÌal"äPÊôh_‹ßÛñëN4*]Ì|?‚cZéo_l^Ýå !/ ²¹ H¯ ‹¹¾ý»Žêt¨°$Èäa‚rw¶%®´âà%¨b?öQ4!úÆQê‚ Œ¹e Ÿcà²j4»^Ç€~ŠS)aIMíýÓmaÈùü¨’cœ‘Òkû”œ’[¬¦ÍŸR|ƒ|+ÕuÔ;(%Ö¡Ÿc<ηa À*ç¾Ðõü(– Ѓ—÷Wún¹ÉS¼ZI×ø8g8[–Á‹Í­íC¥¾AöQ·ŠßãÜxs¿Í§WÝx,Sñ0„îö8wƒ2æ±\EýùVªŸ¯æËe$ë¡ÙwóFøH«ûYÞA§5àvÜQ7~w§¥ΘÆù”ʵ•²+²KZ0µ½,
-zZ{
-Ž/ÆUæJêDYzlä˜%Žk±kßaƒ¥éXUâbhê:¼ ûÆ´
-Ö cë
-|tg ¼Ž ãJ"ÝÍ8Ž_qÛa/"h„¦¥:»[zDêᙶӡ c0bQNË@µÒ••F]üP4¸jýœÒš^íþVŸBüì`ÓÓù´Ž—¡@mI€Þ‹—ƒöL}s÷¢CàM}_D¹‹„fÂí}ÑäûPe0§'¢ÂÐk¡x¦Œ1%~6UÈ<k×ÙI“Ä黑X\*… ·(/´²Oå6n~A ašvf¥íÇð¼RßBÀ:IudYøcwL’|c S­â~Î ô±V_?Ù½ßò¤"WÀð!¡o’Ò*²+CPZ+Z‰ wR#úåªÄoVI "²'¬°Ç¯ñAû¾µh•i¥"M8ܽ#~ÛE¦ÒQ¶ûÓ)„/Dš€;!uÁ<TúÞ Á³Ë(úEt‹
-¯ä®WϬm"F}ìV]Kæ«,Kêém¬fqÔ8®?¼ 03Ýd·%÷Šjø 2#ƒŒ¨TY$ÌÉ!dJ9åfÎ#®!ƒI0_Ü
-æ)(3Hð ïì>3i£¹gj8e|ԓ龬g&¯C‚Ñ—P!w Š>î°L“«ªÍ!:ƒy-æ¯Þí·]…üåKœ”¹àÜŠ¼XŒvf”
-ÍêcoÖßšþ ~„Í@¨)¦­ŸÆßù!7(­9¿ºÆð¡è9¸~"ìjaTu Bµxò—‹';½ g¨t4WOù×dáúÜ;a*¸°Çº(~јÂU²‘† 3Ü„¥kÖŒ„TÒa†Š„PŒ-­¨Î¼Ê:ݹȋe)аߎ) ðÐX íì
-LÕMµÝa­¯CÐÕ-?üq«dwˆ3Cf–r öùé"ïe–m”±]×G–Òu˜
-™rÚ§iͱaz›¡Î¯Ó¯¸'%ÏÑYÈxÅ‚±ûÖ{ãblz›'ª¢¼‚mL}Z~Sƒ×¡±Ûƒ'{Iç« 6Â}Ý„•hfñÙ‚^3”QTŠ£
-þMM™ñgé‘x%Å)=ÿèdXW„#eÁòSÌÑÀ\/ûèdü «ñBÛ+Ï™ùìûÃê"kŽ»ÞÍ÷ê™ð
-ŽrñëákM¨ß|?¹«ÔZ†ð|‘¯jÅvT¨œ}ÿµ'ßÅœ|Ðï)ˆ 5{_|?_y±t­î4s¥*Õü#%Þëøîûƒf
-±åßm\¨K'/)ZvCdy: dKt®I4Í•JøMQÜFÿÞîÊðL˜³Ÿƒ-%ÑuvåØ»YPºè±=@Ôh€ïs_uÁ-Þ7{íœ(¿Ë§¦0|ø ldÔØå>5¥„•mFòù¬¼˜ŽÂ¨òž ÙxFOBb DŽMð'iBªkð #oÃb¢Í•@Æ9„ÞüyÒ¦Ð÷¤<¤5×ð×Ãré DæÄü$>»ž²oqÓøp^l.(›¶¬A@ô._ÜÜô%$†VÆ=o&cì{#Éžo™‡„4ÓÒdÇ9É9•9oe…䜫­e´tªSqf“ƒ Äo¢hMŠ!@Öˆ,­ïl˼Ã\!tÞõ6
-AºÜRG[.‘_}·|bš(é/ËãÀSÕ0]8ä¾ùtRá©€’¥O&*õ°“­çmQ'I…-v]@¯P‘WBüÙÐ>ÂQyõÆ?ë-\>ÒJŽÄŽƒañ§G
-‚Ìû—•îûªÉAžô}Ž1ÍBb`h^íYÊ“"åp1õ
-
-|4³Â±¡/1B{Ï
-lŒHmo·FV‚2l‘k“i›po×¾”X‡/íóÖ¹<üŞϗÝÇd²˜*Ì™b¢=æ  —†Ä3Æï²ÂÇL>6†5º[?®ÔÅ›ó(ã¿`üßow
-võÞÛ¼«õÐÏ÷ÒíAü¥ågÞPº\ŠV ±* uá¼ë•[@C(D(Ñ( F#´sô>%PNKƒï÷H‰WGGKñI• ^H7yÉ–KΙæ\éïdg€Hÿ¥ÆPœ‚˜!»‘ÌëRm&Å$3º˜—Šº/D¶»ªKiQñV—i|©èNek7bŸT
-Ú˜âÎãõ/ëPÂ,öËíèßq3¬_w n£D¹ÃãŠÌŽÒÇžÃ{Q¢;´¡â+dU¾Þ¼Íàmô׈û»wdøŸtÊY`ø6Ü«_J¬Ë€ƒFëOËàú#Yãtƒï«WNh%Œ,£;òÜO•ÙçÆU9ÃÙ©K‰–ÆCÂÌ22APd²1WÅl þ|4®Ys}÷QÚIŸØñ†›g«¿CùñQèm ÉÌ-!ºÙ­[Ã8eúzÍ&Šì0q¨` g¢‰> Z~¦î’ØTNˆÛ"3’ ÒIXÍçèsù8a«†p
-C›u‰¨˜ ³KòyŠW…n‚òE.|Wdá™&…™sžË:âßRñææŽçË¥|ÐKDH¤*LZrPpì†>èÕ"§ŽèÇ&ûýŸm—”eøïD·3ÜlcuÂÊÄ$F4¤šøâè$ÒPl»ÀIj½‡œ&₨Ø/ž´w·¼j.‰LË´>ä4°“&Ñë,Ç
-(Àvls‹†1„ƒh›à¬-1d:ðç›aem•W5¢JU¹c©ìuȹY¿ ÅÜb¢a­)ÙN·ÁÁ}¡Y #Ÿþ>]K~ QZ#í{¢Ðdf{CJ×–\BÛ¯0x1"z£ÅÀM_iIóÝà·¾laON Tn \kž-<¬S?ŠHj¬ù$:Ú^`RAÚ%-œ=bxÌBjqÀS·’ÏV¡3|DÝ ZʇäÞñ0-ЛÙ+!¹5e‘d±‡)Í|ƒk±!k
-¯EîXTn
-k
-gõqÀ®EÚ.®®ÓÜb"æño oAÔÝ!ŒWÁ œ»Ï{<õ ûûwË¡­•Ð>­ƒÏ„Ç°§‡øÚ™0•“¿o⯸åÀp˜>‰Îãĸc²k‘ÛžÎXÌM׌½ZäYdmG¨BØ`[ÏG½2=6dñ2Q”€Ö©àR¢E'Dz[‘wt€F!…ôj‘ìÖ9É*ãàvÑu»×Šd±a”<ñ,X‰¯‡"̦š¦ qšJüÐéè` ´É(-+éË*ãßã1^ VusÜŒî*Bª{gdñ·Yi«¬yd°?3Š?ìqh¤× zŸ»o¤ð‰+q*l§¬;€µpHæ¾ F–ÝžÇ&Q.üÀÞ½—àR´L5Xmn`ߊ<¤qÜ7á'¤i×"…1T‰&Õf×â þ ‹ø`*è¢À…À<Q°² дuÏÁ¬ž¿¨Ã̺ÊÃÎ"0Ë•Q×âeÁJ2S `j[!\¸% ÇÉ¡­É«Â\+bR’jcÊØû@g¢\›­z~(ù†Òo^‘‡÷ UŸÊ·±½\äÎàu»×Š.¼àŽ×µèwŽÌC„âc`íG}/J«çH*bÙôv”Œ&ÂDƒ-î`‡JRÏó
-Ä`ç’êúŽÔDðÉó˺ØÓ¼0eäâÜË0cPE^îÇ A”
- ½f'"&AœAš†‘hv
-}F™ÙM6·—÷’@–]ìXì^цóDšaÜXÍ™°0,Í»aw `a‘Šf.FÁ+
-„¨ÏÍ®øÒ”5šõo…› Ù]Í¡ú@]H¢ÅÀÚ#¸©
-b„ Œàk¼Ç—7.hßnœÈ_t!èÈ(Uùœ†.Dd|L+© æ¹ÛiÈ:‰¤Ø*ÊPšfÅ °î zÖÉ«“W~·™xbšl=îˆ vïþìÁUVBôlõ÷Ýv<üŸÜ'"Ú¼4öÓŠ´:re)ó2_»H?' ¨‹$¤€p¬ø£CZ¥÷ü‚óJÖÝêÇÌ•9h¹„‡uÚê4ÙM³)åISç„òÇ»ìàR hµéšœ*å t[ánEN>â<2­zi/±]֜Թ¢é×CQC´”#µ¼;„MJÜ¡£¦à‰I%¡-¿II‘A a5ë†úbkB“<M$§N̯¬¼ÉÏ‹2i‚§÷z÷Ñ^ÐåìÒ#æiÓ)ùÜÐàƒ ;Á+Z%X¦A¯q€Çmb¯d±=+©C™£À¬Ö,J‘Õ™ÎV4‹ÀÐ9j˜LpÍ{™\#V¼Ê&Xÿ–þϵï7貦ꮸ?Þ¼ïÍÅ$Ž‚Õ\^-ºŽà×+sjã0v°’Fw òO·Èñã9Š]a&†y¾\äe„Ûv¯]rË×CQW2í("óÿ¾KÎÃü˜³êÛœ<T»¤EC*–é°âˆÒË£$›Ž ò’3k![:„’ƒÂ,³÷:82Dd+§D³$•¯ÝN3 Þ;•–ÛŠ+4‰ïó׉0N.i¿,}j §Yt¢wï)¸½ƒÌ¿Ù*/ºàѺ<ñŽjFív/47áeéRmv¯B eÁíHïŠIÿýJˆj->)/“GbѬXgÑKïs´sbXV›l¶ƒL¦ìníaX ²œ
- 0Gp7ä&ëdËFñCHbG£—2’ÍI‰
-ÁGJ·ö[c8ñpÕY}2âK®Ân¤×*¦…Ùc2©Ûè<¯ƒ|3=åà'.
-CI“7äA ²A¬ðU@:욘¨ä¯pmƒ÷Ìe¼)bMF¢îÍš
-mÇ8„o|Ý£æë|½U¤y‡µaP>ëc‘lX’éÆÓB|@¶¢\=""1 Š¹tƒ’‚$U’z;5ãZâmÿÒÓÃ2W`è0 R¡Ym>¬ÊƒÎÄN…Ûé ¨¢1>Ôdw;ÁàÁ¦‰e±r,‰"
-MZ€w‚Í–ŠÚàDLhò"Q.i•±.¶£†I¼«¾}sedÁK`Où€}+lëà’ |{+$ƒc~ÖÈu0§ë•|cË´À§ð–a—DÌ8|&\F+Dû¼ùâJð)$LíÕ;U<?šÍ‘–IP)ÓÖaæØ½Ê X Y%)Ó5õE ̘1úD«
-\[ï~(º¿(ÂlÖ Îå2­S£Üt/![`oñ-y αJy“µI ™uL%“US¥-ÐAÉþ‚
-;\ÝζŒpÔ¹¿ó> Ã¹è•‡W¨›Âiö³ ð#Mº7ͨ¨ÁêôB:ï-/ô’Ȉ¸­Cg¥bΞ~klãXÈ@Ä«¼K”LˆòØ[!sÈ<k{d
-V³Í(ã…î£R˜°S‘pnaâ
-‹• û¿¤‘ëŽgê FrÆì%iÒ+hO°ñœùÄü+"
-g´9 X ô JÇmž—U•ß¬‚C1ÜBÐ8Vð²!Ç+ûí®5Ì'œ„]ƒÌ’·*tAÊá^ðTS°á—Æ¿òžÄ¶á%xµÖ™+ ÒÞ©÷€Í̺§O„‚.týÀC¹ ê"4Y ž *Ëàmz#ÅëÄŸ2²Uà^‡l S7Èn˜wš¯"ˆ@ ª¼Ùꡆ&6_õ"Su‘Ó›lþ±7/Ȉ‰ÿóй'Rbí~!YÕl®p¹DNȤB¬WÈ Æ7zIâdwÙB>”ø„×Æ”&÷iž×‘Ë®°h »„®J™ñöÓ94UbAš®e`¢1#P¸?.©ŠS¡Šý0$0Nâ¶J²Ze4+©<Å^ÕKJ•Çe6ª¦÷‚ï/ðáØ;i#ræMmW‚dŒÑ5„—ôé:^¤ÏðXVºü€È.‰YÓˆtÒñ½vµé…‹:¦l
-Л¯2øBé}ø,&Öæ<V`Ah;dÅ̲ȷsRוX3&RviAaáNyÔCÍý\£¡!È6€¿Š/"@:¢ã˜…â%UIç4þEn¢¦‚cÃ'Ð
-íLÅg½6M›9º'ÃÙŠ3c–d&wRH#FfÉ~o cŠ]Éa‘AÖ²e\ñ"OŸéf¾Ìàµ[ˆ3Y/#Mã@Gæ^‹÷í™6C„ð*O'GÒ 5)
-<Þ‡&•nUWut‘ΰ«$„á—B›PÀ)þðÚsŽ!rƒÙ¼WE¡— ÅÍÏêÿœ˜L› 1Ê:#Ê9×?úɘÆa†-"âð
-¢y ”
-†˜Q½S|x'CYÉ‚¯‰iï‚oë°þÃaƒvð.?mdÑkXåx"ÂàÆc 9=æÏäžåÜ&﹞Ҋx×2`Á¶—AÅiëpθ,JÄV‚­¼Ë>í—ß
-ŽF5å—ë(ò|UAëHîåeG=e{ûáÀ? |ÝPÉJeï„!çµ!Øl™\#-©Õ-#|››œ–¹ð‚xœz^ùô)Î+ÆìO%=®lE¿ÁÏÝç`ÊۙǸÐ2 ‡û• ÌÆ|zº¦yÄ!kf%¸,Ù‹~é.Ѧd0ïK㵋¬E~,C”×¢¹½'!z´¶+:
-$[á3°ÎûÚ%C‘à¬âÊ2Oå¥^[\õ! È´U,Ä
-fSƒqU—ÇDFÌ3,‹e(ð´}Lg•h4íÞGn໸ºúcø©6Ùý%øBC á¹7U0†pè»Hì™YBžäçÆî¤îö…­JŠ ´¯ïŠ$öçÕš%×M—Ë€¬•ó9×n788ø9Ö€ŠÞøa—€~¶7R¼5YI´¡WñÕ%”œA«ºÈ{Ÿ£¸7”.÷²
-d]ŸYaŸcÉþüª[‘¢•ž •¬ï§×°:]Û‡p´+ÑÜ¿Š-­) ¾Ž›>š£ÀePijÆ>ìó|<#¡þŒö¨ˆØ¥déTâ ÈH&Ð!>žƒ¢Ñö®Ðp41‚–eé È
-ƒòiÍÒÅ‚ˆõsX3(dBÅÀ¢9Ô1^J3ò°–Š°wuÖ6’
-”‡þi72ý3 × Ý\1¬~?-8ƒ‚paÁ"•#QL=N2ƒÂw{Å;áLm¢á@dèü›nÜF"+rC3姒7ø)¦¥‹)-]¯âó?<0婨˜uò$ê{5@%"_¼‹Ø<Å '/
-M™q¬vPÿì‹:ò(úhÕ/ÂÁ!­X×ÕÛ>§­B!5s€ÁÖE–­Ï’+1ü—Ë_e?h#Ì=F\ÅaÀ*ˆrUo&²°šÓ¿)ùÃ*’s‘ñÍC¨9}im°ç„Å]“ã5Sø/U¾ ;xÆwacËá%â ÒëÃò½•øž³{ ²/ßôyŽ¼ þµÏ¡[ì°É¨ôþôQ—ÛŸð‰öæÜ-’i¹dÕ¦Þg±H“¢hp†%™—rœøÒ*g€ÈìõˆJ€3Îʈ•ù*âv¬ûèiœ`L).+Ëac«p*¹“ÿ­hð~ÍAl³ù‹yÝ${¸Î" œ1Òe›TÁœPiZ\\¬²¬sAÖⶎÿ çAˆiVdX³w+k´omá«HFO“yçÂwÁÏ­¹õÂFã@©K7qhŸ•"ú>¡HXÝøü,lS“¿jÉý
-SÓ$‰’¦îíCúp.‚É oÐ…àU¢¤»«W;/ƒ h Wab™Ù6°…•Hc]ã*Ö›ž#S¯8©ŒgõŠ®^Âk±š
-±ì&?T`“Ñ1%ÐøÜÏJ
-ÎEÉ·` ír.çŠÎŠ@IÚñuä ÔúaÊ»¤éÚpc Všœ‹\l<”üpIâüºéVÓ¡9¬JnÛŸJðxÌ«_Ñõ©d@( £q¼¦Èˆ%/ã¥ÅÅŒ Ÿ²ü˧|mkƒÈâ4¢Õ\u† E”1ã<‰Íö
-dmÊO?óN3A¼Å()bC0&Ø¿Ø”¹¡¢™ÓpY9'HºaCÜ3K£V¼„lC®“ÀxIÀ&iJ)įâó¦RI úæê¶Da.
-–r*Šì’‘uq|Sã‹°’@Í,.b’Ûˬ‘,ùÄ
-ØÐyKvl1xï1À{@ª3 úgÂñ«¤L ' †¶3T!ùEøÌííÐ’”Ó7ˆÇùQL››€M_çhÞU±§¿F6§cз?Ç2a´é0qøl¿
-è! ¦Fû”‘˜çÏ} ½ È‘·à F‚0¤íÅ(™Ð#O²€è]"L&K¸7„‘RÁCúUÀ‘ €ál#8½˜ˆUì%° 8ÃÌHv;GöWô«8³t!;lßg¦ \‘YEnB«z“èýš%oóç·SÑÉÑ]FÆýë¢Sr;}$7Uð |hZýœÜ(* ¡p߷ܦ€E“»X½s[ß$‰ž°°ç_‚˜1‹÷æ”ÛÓ²VUtÎmW^!¸±¾óÛø €eåqàQrËmü&¥á ?ˆô=·7Pè^hÃgÞ¢¤.Ô@ɤJžHé~εU|F ®x e›C»~êïð jAn|öëª6¾ã¸_D€ÆP¹3Ü^¢QJ®þa@_HÌG͈};Ið éÿý–¿ÿ¥ÒôÃ0
-‘Œ1E¿Šàí¬’íúô ÃÃöL'O/©äZg¦Q¢¤¡Z°žÐþtXÑÄšº²QCÐ…÷–óåpöÏVÝÇ\ó„ú ™À|ƒGº¼v…<ãÿ·×¤’!sUj8â&Z‰Ó榰×â§ATì~ý&¦ø°í™I &%„<¾98¿Šž@
-íËØóúªÛ%ûè ³HwÂØß7æŸ7ï'Kš–taŸ‰2ioó%…áñArøv(Ú«“2.9…JÒš®´‘ÿÇx™$GvëPtµ‡Z‚=‰qyè]ÔTÿSŸKÏQ)¦¿ì°CJ!Ù€¸]öC‘_0½`çxˆõ±uCÄžìçd˜.hÝ…”j­ƒIçihi~ú)éäBæ#~õS‚Ád€èYœ—<ƒW eò&ÚŠ¢!îÃÀ‚†SÄ{uFc*®žuð*ÄR¤bRHàÍ8¸ï„¢‘™SîóN¸iÂø8VŠðß7LT9EN*¼|[Î:j4‡
-úƒáæCr`ì$Âò¤¡È¦ƒ` 鼟˜®ð0¬…Ûû3ŽP²0á…ÛðŒsápá¸öô(‚Ÿì³دÒ<Ï-®:…´å$ÜzI%).É5Æià•@ÜôKá(º Š%s©!+ãÜ#?½Zw
-˺Âa[¼qf"ðqr¥0ÜzŽ [­­ip6Í„–)Ð"Ì9d+ò%ñí “¶dý-•ka9œ¼
-“U8ü+îôÊ“…ؘQXÔc´šI§¡í²NIǽR‘WÆ*L¢ 9L5(ƒ˜Á’×0 ’d†}ø2Êk‚¹MÞŒ¬+™]+æ‡Ø
-'iÄV°BF]d&œ­üØQkÞÇU/IpÕOÃÙSQ•ôÿ@‰=ö¼”„Œ¬õ~Z LfÄú‘ rZ ±K•Ï¤ãðS("JÒä'\‹­4Ç܈&ywà8˜ 5¬X–ãž–ãè%
-HF­Wx!d”Í æã·¤.¸
-ØÖÝ=Eh]†£­Æ£K¡³Q‚ᾶÌý?Рºè˜§BŽkëEò÷Üçà5•®PÐ…X›/Ã&ëË :Ud381ÑW_lãˆinuoa/:³_½Ç|ÓzÜ›u1¬]ÂRàTÀôÀ{¼0ÚÛa †¡T†ºU,¹?Æ%Ã'E8’'h§yrÖÕ·€ýð§b”ªr#1â“úoG&ó„hÓ6…éJö
-ÌŠy6—Ô“ gó ¾
-X]Ð ‰A¶adlæ›Ð…+’x¿~ÜŠ€Œœ(|‡s,[:e#JÂß3ß½o©;M¢Ì»ôÃ]·"„[9å
-ž
-%UÞ†ûš*w^‚¨ªÏ@ÄPôßg£CKDF»ƒŠ¾E„aýHŒ™ö;±^ÀSP±u‰h±“ 'Œµvw¼øÆÐ Ÿ—_Î]OÜ×
-ë–ÅBgê^‚x±]ŽºŽ¸©ˆPRb'ÅIÜSç¦Kxˆ§Do”Så‘1÷šmÉŸð`£y ó†ÀëÖöŸŠ&s—e´ÛךO¯Á™7˜
-FǶàëzSŸpùÐEû·/E`T©Éï¹ø‘Ÿp ”8è 
-pÌ€øÅ…VäèÀ!àò9Rr/«îLø*É*‡§ÓIŠ\¹ù‘¥ ,Eˆ-W7«·¹Ë$EÉ`]f’kO™”ÊAËÎË4WÞÅ«~+\”q¨$ÜØŸa@”«]éØ
-T±UE²™ë#EFßðÊ_8š@Šq5Ú:²}uH•Ü˜È¬½sZ⎇lÁ-ù¾ŽöÆÉ$!àñ†|´h¿%ô×Új\{N™ÙÞ£{J¢CÔÈ°¸§kÑ
- ÅYF
-E(9O;‰LYt¹À@“s­:Î)‘]VH.°›’u%³kv}uývYä×{‘œ/—ZÊNÛ7iøŒWdÓ˜—¢Ï7EÂîÎËúU†qþ‹—+¼piQ"ýâ<¸ðS"ã%âö˜‚ ë.º>* ù)½A°s€‡Ì÷å§ýC_¢¯îª°W
-.†ÇãσÂé]!óm'2+ž™œUêÛqÛ­Ÿ Gñç < ·‡ä7r)a|ëƒáÏkGWɪÁ‡Vß ê’«Êö÷N&¿ŽõÖ"> ±f1¼I£*  úeéo_é1æ;³2—ý‚ùÓy 1•)Â`Q*Ü,(”Éa’xð®Ø’§<¨RƒP¡T²‡ú#ëEœn¯Âðksmš …áˆí–áŽÚÑÀñÚbnŸ1OŠ‡AÌgy‰‹Y$û$nÌ™äž(«ëê(}»ê­Ï}§©š0‹«=£àFÀÿŠ}Ê÷ ˜™:”Ɣǖƒg g†çÉ‚*ðaq oâ™älµõÞ¨0Þ8BL>œÌH?î—õÒi ½u½”ÞÉ戲±Ärr)r¨ [Rb&‰{—T“Cjï óI 9¢ztš£-ÍÇiÐèK[î.é!@²e}Ïîr1{ýÙ]]1DF\‰¼¤<åá· H:.שԂp[ʤ”x ÒñÁeà®æH2íØŒtB;éÜv¨ +2F<|ö\ÉÍR¡uø¼É‹*„W莮÷üP¸Vâ?ó¨&Ù Ù}„çÖúNÿ ˆ§ºL!È«¶áë`úÑ?Mähg,_gMQhÜ0ët9x?ܾíÊ%…øV(:ÞùÎmž³Dõu`ŠBùª[®¯ì¹!´*å3õÄ·êL5ëë2,Àûq³0õÏÃ@Iòz”´¾_Š7!@^~¼GÁÎÄ“%žZˆ‘°âš‚ÃâCnapï4qeètf˜Òò¦€õeðq{©GÉoåý§Ø$ÇJ¯¬a2M‘£öØGè£ ?±„‚€p¥#åó§<‘„ãÛ}Qy%.qi` 0lÐdž/Œâ¬N_ÃçÇY<@¿çv‘”´CŠHKZõßb(²i>Ih Äáˆ/
-*áà~Ü!¡¯c+¾½@ ¯T& ñ꧄Z™©Â-óè)2-hBå𾯕 S­S¥ ¨£ZûŽ@"áŽ!ýìô RWŒ¦‘îùe…(ÒF¥·È`hìÊvý³Š²ÎîŸêH,@N[>7‚R p07 *&uƒ}CüJÛÞŒ¥ èÓ^@ _š|Ö}/<ϦTw?0u:C?#ë<ï}}×ïùz… äùšP5©¾5LÞgˆŸ¡ÃïMKAõk~H y‡©‚ÝJçu™;‰õgÊ¿A|Q)3¤Xíeʉ `9P½YÆ@¬VíŸ)GIñGJ_¿çž«müÑ+–?Ù—êD)ë…ý©+G•ùI§5ÒÉ°v¡¦~±üö è­EîmúêÙ_G­`ž¯õî± l4¡ë~ ±Ã$¼Hh9d
-·Ò
-õ¾–§SJËgOÌÞ•yòáRRGâÄ°rñœÅxJ‰©}lC
-7W…Ž_
-fý¬ƒÆHð ¹^?ØßZnzŒƒàÓ’CîË!è
-7ú”ãµ—lÁ8’`¢¤D¹•|Æyû)Ï¡ÍØh?-ÊHŽ
-!V>[e ìY|ò° kHJ”e-x î—"A1îDšzb졧;ßüÎ\Þ4(Š’­7C‡2˜Ë¬ÆVÄȃ™Y§Ó„§†6ûa¨A°œz>‡°OÓ[e_¥éæ|Qäù|²Ä‹9«Qãߪs %‰e³‡S s¨Ó¡Úìã+^ý\#^Š‘Gô,û° <4éTΑ3åÂE¹ªxÖý´P¼&—$VÑÖÅ¢Ó
-‡ÝÙ­¡hdHº±Ÿ$„:œÿ›BÆ–H)ÒÓ ô2ie°PÐE#݃š ª}–ÿ C®Nok5«+¶b[Ñ"7‹àÈt‚hg&… K
-ã.zÅ»† ·4ŽôŸ#àDF²çá ÚV·Ë˜´Ø ³Ëÿºªì]ü?ÆË%¹n¢[É
-RüÆžf™:ûŸæ4È÷JTâzU©g!)è>FäñÇ´uˆL'yÆJÄÁER–2íJ°*
-Žl©H!t>J’A*=]_xD§´Yž*^áÕ?Ÿ×A–ÛÙˆ€°¹°U2ä…%‚ÉV0hF  ÷%5K†H„Ù˜IE$ܤáw›½dˆû%^øv_r¥³mðÆ‹¢’} 6$Ø‘1y*áAøN|—ùðæÑ’75Ÿf¯‰+UJó˜Ö¥ÆMÆž’¬ƒé±SíþÝàî'–½»r{m,âRÏñäÝè£Ñ‡Ï0?ÓY•6ž É@JsôÂÿÄ C)Ñ” Å•¸ykÍ*³†žšCV©ú§=Ö¢¡¹+Þ;âxvy‚¼
-A;ä¹DÇI#þ‡¬4#eM>¢âKÞ]säRu.©t…ظ®’Ôð¯ÌLU/Á^àáÊ_棤è²ehÕ¶‚©• OõôVL“—âwžôÞ¸•hrd(úk§Ih‚™²•àêC‚<š¾¶•í$H«ŠdÃã×{BSÉDÏ‘Å]KÑ›0ä úÃOfkÊ„Ò˜.´X<ÊZ,s†$ñ1%´2Éó.€TpÀ'JŒ
-žCJŽ‹s[²±ð]Q"Ö±[¾Õûa A÷Ö‡m? v‘> Œ´õ8/ïífij·Âpß\®—„ J ƶ}%¦+'æv|§ËkkvX7É»5VEb
-†Ñ(o=™þÄK n¿’%|ƒäÝø†EA¶–ìŽå¦Â hÁíjP—lò±õËKÑçS=Îãñ!Õ÷º•óhdÞù©9eXàÓèÙCElØõpÃ2¶"Ü‚‰uëiß׊&ÝH
- _ìs©‘ç"  kÛ/¢É€Gð§öpÆ»¢5矶óÒËø°ÿƒ3†þÅ+—‚·1رÈ@KàÐ ÂÃ/•4˜™¼‹Ô…o×È0z1˜~{tíðaÔÐGµã:2%t.:‹[÷'´G ÖŽ9P ÝJ+PeÜ£Wò<3ï¦H‘™SÕxX.ÒÒZ-?”¼B÷ïo€ù/žªL# øq°¼Ú$…ä¦@^ø³-"T .h8NUì¦9%™+Ò,‚¼ï]¶ûüΙŽ£g91‚çÜ­ôgS²;QƒáQË?Ž}+Úû?ç±CÇŸÊ©LÞl´4:Q¾ÜýØQJCo¢ÃPâñ¸dYºL ªúN–s‚NtCDÁPT•$t-㟥àpŒ{Éœ‡P„8"4£žÑìµKVE©š¾-JR¢óvqMËHJÑv*j?÷«d˜5 
-ßéRú˜Í*ÆI=¡– ô€ºñP[J ˆ„ N£Yç¦zí¶Jéw,Ó˜@¹ÛË< q”€”
-¨³{¼2E­°3 ‡ÒÎNqH}j;Ö¡z¹+G6aé™’0þ
-0
-H‰Œ—An¬7„Oðîà ¤AI$%®ß,}‹ÌÊsÿm>þ¢:±ý÷À8ÝÕ¢D²ŠÅÞfk2ÆcoÒ–LÑ·¿Æô‡ŒkŒµ¤÷·?¿6hö]ºèÚ .kô FÔ9aÃÕTzAÆÒÎ÷S¼Û ˆùòÞ‰ÖFûýë´ˆ=f³>¸ò{‚úƒ°3†ËðŸƒ:wŽ¾´½}¼
-55/Çi~Šê–õâ»ýÁýlHÈl½ â\Zy¸iADéËvHˆ=ÂÍ¥‡·fÏP6tÒCö•urC&úóÊJ>ÙQ-„̾DM¬­]ƒqG»T¤|rï­õ¸]Ö"$»r­‚Œîkr6ÿÞM3áCÎ)‹«Ë¢ƒ€\¡Ú#”¯i_=IÎ_ys²µ»¢=èܦº(V+H¬ÎbÑ¿2Ã{À$™U𶜎èp"ü„¢q…äé<çô©ô÷}³I_Þ3 × º¢½îkdòÎî-N$þ¤žY–j.ï0-ø{Õ9 &Å“ºÌ´àÚì"Ä×áº:7‡¿îè)'.צ›ÆAãC„Êt>y¿ ÷#Á>%Õs Y}«Á(»"‚ü®J€Åœ±¨ÖŠ Q…±aÒ ÷HŸS o°!èÍÑSï â4*}Ä‹s²ÌÍ8 ο€Ìæ”–r§—¡RUÕŸu·E*–@­b:Yi#Ú@­ª™Ñ$B“­ÔÀ”+ÇÐg¤¯ ¯bpù·¨¼€Ã}FJÈ«G}½ÿú/°¾GÌP®»Ë˜[¢œŒŽ·ÿ%hÒê°vè¸Á\wäkJKìf ®è .®°!jîP‹¬ž™„>À.šGÆuk@LþW,
-¥9âL¾÷12§)½`«.c¢œ;¸Íu§Ì„>ëEƒï[¬æ¨ðŽãj‰¢Ng@Ò|z-ûæ^þJë®Å—„–K+¼âv´û•ãÉð¡ó£1ý¸n…2Dε5ß cÈæ¬A ë”(åÑ[猶r²0_Ä_@`bÖy1Éüê3è«<}¿L
-!¡èkÔÓnõYp+]åFñ%î&9jÚXC÷1+cˆ­åÕ â1?¹ÁXU(£.Ñý9©7ä ÎE=~$Á}·²±p—0ÜIN6ß­Pâè–§ü¤ñDr
-Çe¨] G.ï”!êHÇm} ¨#SƒGí #ÔÈŸÍ:m†qA„_¡èDqÔ•aö’—]ŠÓ“bC­Ó”R‘F‚)€f-+CÑÌX›vÓ# s*é ð¸Ìºº V-Á!­Ø2ÇM:Ç?k°˜8Í;w¤à`E`nÓš)ˆnïc4'¿YÙC=}tl"ÄÃRh]×:Þ½àÿèP‰‡‚Àõ%6÷˜øH,jCö1Ù!œãÇ3äœÇ‰Ñ;kCfÇÿaïFT£ætžcb÷˜&w$
--MÞa e²Kh]«NÂ"Ų8GQy!ÄœûÝ›–Ï&—aÇlâ–ÿÓO)Ód3þùé1oÀy£šf¤#ÁÝérjaÕè´ÓŸÓG_dHÆ ¤¨@äìáÞÖý1(å¦ þÏ ²´ŸLMÈX3Agê}œ¨™“8’ÎpÑâ|ÊzpŒä0ËU+SáwÔEŸwrFÂgÒ˜›WF­É{ƒÉM‚VKÏ\§ÌΑÁp¥÷×wéŽ{›·Üþ©2AbrÐ¥½:q
-ìEΤš>žŒcTKô[ú¯Kï› Ç 5©?n_™€ûU¡Nñ³ùd½ÝõpŽ(¢Ó[K/§ž²J×À=
-ãC?rtl.À—,.üg“Ú üH²×fªîǯ;RÍkײõ¤f²‡¾i­
-GÄðš›.h
-àmh~©Pßxõý±ôèbq,Ï×W 6ž6’i‹+ÇØò KŠäƒì¤} ”h’»d†ùîsœä²sd)jD¢m’Ë
-Oßœ{郙þa OM;5ô„ú2$˜Æ8$h½rùØçÜÜx[î&‚dh9é7dxϧgòkð3TQMþüçUS2xÖ8µ‚ôxÓ`媧×g6Dí+ P5f¾ CQÎ'ֻĸ1* ÿ“; }¨÷Îq£Ä%ó¬?x7Ñ¿v…béYvÕþ¬›ç¶â{ó—OO¯R®ò*9º…Cî/ Dè󚲞¡þ¯ÃxO#òöŸ„
-3 'î,y«¶ ì?{„aÐÂ4#-Xe')B0ýtAV$Ó EAÚÊ…fx!¤QEÉeöÅúýÄ\Žšû‹…Ž<#v¡ûœ‹ÃYÙü¬ªéf¢‹:@ÌÓK@ºŠ„z]{!¤Ô O¶ËYfQ0†hN?ÛÇ@hɾv ôµ¹R0‚Ú† (‹#ÅÍ›%´BÑJ”qæËjÕb¤â-íd3š±[!=µïB6í Û~éé âÓ2ö{s±Fqê¿}¼
-h€mw #Žö‚i#UZ·l2%›œ£„Š¸Çë2ŒÁ±š@I‰s/³.Å|ön:
-ÉU™n;1|(Ì71ù
-|Á£²”oW3±c¹²UÝ`t`Ìmh(ÑãQa÷¡ÿDjP<ƒÐq.‘+G+[ßêVÄòZY ŠÉŒM§1ûT™F€øÅy.žV›-|œt
-SMã&&ݸ=çÌ`±H̾fFy„Hk˜H,RL†)Æ^R3¼‚dž˜ãhôÅãcP Þ%6ê<0v€ÔRß–©¼Ûç<ÉÂ×ǘó4ž`‘FV²À[ÏLÙÛQC³A!¦{»¦§ŒSÐ2åá´c²K*Qs^×JðâYØ/É;ɹh5ÁÈ+bÐdn1ƒyœy2þÄä!É|µºèÑ“ª‘wˆ ûˆÃÆ÷gÍ$ú)«j;¡üØKäa»¦¶òBMÖqv (S˜ŠÓJ#ëJ; >*ú
-j£Ë"þq.’§ãRÐ ô—I0+íðû¯çï5°µã Ç¬'ííÄY„ŒœUSñ
-®šmË¢0!ŒÀ¼|
-·µ×A¹h<2ïžÿ›ß’I Ì~z3ëHo+pÂâ"÷\GÏ1ž&>'ÁýÖKÃz¾Že‡ ‚" ~çå\„Þ´4ÊÞþÂD`$»Â& å”Ô½ dbð‰QÇÙ¿)ÃWÂ)÷à —¢°0›¶e‹#
-x(J½îöI À4¡g†ègQö³#úñcUxQpY‘´+Àf ‚ä/+Á¹bÍá¾²KdLè?—È–()"ºÊ{Bø»HˆWdžƒm6™A¶Ì]‡HÃè»Ç„öpäf§òL*Ž|+p
-¢\/Ðí^Ð'ÎqVkUå+™µa°dW×dÈhNƒ¨xÃ2ù­ß*—e¬óªa×&ª‰ÍÞxÈYèi6¡R’ª”&‘mâ.é‘evûµÊK¬›U®;7R}[%'Ò±-}ßO¼+ˆüºB¡þ2(pD8¸‚ï¯K©k 6à2¬hDm‚þ†¨Ìj”íù–íܳY‰H ur M&jÒ˜Õá[Ÿ•
-œfznáeªp™Ö¥ù
-Fw0ÀݳÄ#¶¹þ\¥°ñ¸ø
-%`l"ºGòAŸÜ(Pโ”u+ÊAbÝḇ(Ñô>(KÜ%‘»k˜ +ÁT`‹vœ³KøVx,¤ó°qDQXPÆËÖ›\Ë nåqµœ/­ ¦ÐU€ĶɳʼåÉIxlÝJE
-ZO˜ÊËØVËs4rl¯Õ~69L%äÝ×:¨.‘–UÇö? eéSeüO}c«`·¯;=k²œÅÀå¼AÁKоbÓ€n4õA/úñù(%ç27ÔWèu—C îâÿ“9$x»‘a˜ëÁðžÐw+1 ó™â*lÔ_ÖQüQ™}s-­üº¶ïzŠð
-^åÀFo ß°ò)ÄÙ´©¸~ J-Ã|’/%A:`‚~Á:c|XGÖšÇRs•¨w@¯HO¸ó(gy9ð!Z³yöêäEC+fˆ$†/kò°À%*š¤L"³†¡`Á¿qà
-yL׊=7iæ­‡þ:SUŽ4[4­ú½ ±&Ž? ݨ½muaG… ™“&rcrÐÙ€*N•?öÝ?kÂKÑ÷§"b\ÅFsž»üt«Ž_ԉ’d4Ãoò¡[Ü]9°x7ËTZáÂÑ@Ú²%¬xöO%dQŒ
-è´ôûCÑ–´pLy÷ͤ&×v‹€JY´Ew€ãñbáš+Ö>ÇÈ×suð
-þ8ç<a€áí²éó´0AeˆûGîБü”ýÍQé¬TO®Ct± x…VÛA„ˆàÌ5Rxt”œeÒ™æ k„Z„ÞeÒVz°É»H_¢Bñ‚ â¼ÀýXR¦®z
-E™÷½âëÇäŸÿÖ‹˜s‚iŽÔi.‰æ€g†øïEbÁ9 %ÐéO+Q=¯Ål /ÑÔsŸ=F þ’~ÔkÈ L M*î¤(áG^|5<Za7– «ëoÑMk¡^¸¼+>ÃJxYl;ù ÖX…Iì4c+ÂÌÞÐ’.Ú\¢<µ­# ©XqdÜ"à(¼€•¤¡ã`÷>«¼x©Ìsñ±íŒÙBÝôî˜2ó‡ù×Z¦â0éÎQ²†Yù±­š˜¸Žzøbhˆaãb¦øëÇ­æ-UØ‘AW‚ñVoød¥¢K•î_  ŒæâˆUgÐûðgHÂ9L%ÁpG«W VëyMvLp{ÙkØs°.Þ¹ø2ïÈbÆUÂÜäü¡ä ¡³îÞà*ˆ|9ï´_¸‘ID
-yIf (Ö«j«ôKb:€ö˜í”ˆQãî@¦jƒï…Ü°ÇÄ
-°Œqé—Äp.ÎY¾KÆoöT0‹µà¼–Ša•ægh«N9ªöǼYEkPWÇc±7"eÁâ^Ây‹¢6ÄNïEÈ=¾kað¼3M âÑ9 \Ês´ÄõV³sæ½®©€öé’L'F0ÚG²àí8“E@*z‡y%ý9æM.vŠÊw¼$Ó} qóQ"º(#tzŒM’0Å(GVQhå_ûX*ðË°ˆ¶÷òX‹þKTN ÃÍ­ÑÊ5c«"¼R3YÃiIʲ|¼l×ôòë%¶AW÷Ó¼Ž”²Mg¸ÔÙê_æî7ã™Lk*¦bNŒ~zL2Ü9àJüA³½YW›ŽžÕíŠmã*ùô(!”±ð¥ë^Òh5†‚Ç? –Ûš,׶£WhŽþÓ¶¨ÆŠ”€(AÉÒ°u$¼Y·¸jX‘™Š]î
-
-L!£êÂw¥®ž¥ãÑa¾¡ï«ÞåF%²„Øê½Á¥å)úUîï÷ ÿWÛá H@cS. ¿´€ÿzÜŒ±\5,@𥒠«ŒÓ!”š(Ò]+±Cƒ7–ï묀œK‘ÒÍœŠdßqÞ¤‰nëÀõðÂ’SŒç¢CgcέßF$ËuÇyILè#Ú͉p‘ZFo d¸bïÍOÌ«l2Š éÁ)c :°–+J$YðÓäïtSó³]jáY“òf…‡ø¯ï”à~†4
-Q3LZÚUŽ­}ʬ"â>bB«R wÅòûsRD2cÌ› ®’þUèš],øD€¼?ØÇb ²z)ÁÁ­-á͇/˜ >K’Ñh2Æ¡îta‘=¦ÅÅ¢–ùêhN¶³5Tó.’”0òîšÊ£'U® [TÁ0ÄÃ5®RAÅB%ªxJè–íÇÆq¶Æôæ¬ Q¹¦´sÞ[D›È…9Áëô€¦WŸw›º'¿øuÍñKîG‚‰™Él%³=ðü½×XΞÖÒ¡ýX¥•.-:~à‰82D°`ˆO±ÕaN÷F*HtÐP„5jxÅ–à¿Q}'fŸ¶Ü)Á`Iåe+½„©ÆË š#_J¢Åø¥ncè@0Ûð?Å×Ïó $þ
-Ã`ҵ[®vgöxLK¶y™ŠŠx†˜ÚmÌúÖò>¯À_
-ȼy?|ºyx x'`çŸ"dh‘„à&N´‚qR”µå]Ë€‰™¹ùÂû@½«\J ŽZ²øûS·"FÌ
-M<B°îÜoÓY„çñQço_Š²Ñ ‹+6³;C9‰Û
-‘X¹0~ƒ½WL¡¸!Å2¨[qóUq™è:ëÐÊÑ'—Ï‚[DÇAKhÛšòHxï9ý>†‘55 ÂQHt¨“DüKHŸVùŠg6¡DZ‹ æ~éM27Ar}m»«¯x«èò¹sؽ]¿„btX³Ýæ×·“uå•ø%ÖÇ&¡2!±òQ@&q(fuû¶™
-¯\B:£ÃBJR
-¨TQȆ)O¿#ÕÄc™9 òÊæ1Ï3ÊêóýY¤d jOggK ÂC”•³³mŸD€ÂjM½ÖUë#$4ºmy)R ¤ZQ=°3çS‰2J–;ÉãPb ºÜ‰ÏMýéœÌlæb¯²K&` ê½eÇÅ×ÙŸB™º¼1ÒíøâƲ+¼=ïOA£¬”3³•µ 6o®WÐÞNÎȱ~h“áºÊ½÷Î@nÚ°éâHd³jϼÎVB&¾åÞ[Ôd¢éfC;KESWÆ,íDÖ´ô†d ±>ÓQ
-WX´
-‚hu‡² (ò¹˜CSâ{fgPf5dxR÷ËÌ$ìkÿD>ÌBŽêÌß-"É
-)¾÷ˆ‹d`ÿØ‹°&u*a¶4ÿƒ?¤ÿþøãŸáÛ?þõñÇ>â·??p^Y*BH¡=C\±@hSÕxY MHS`zp©Yô$Чa£“¢18›±ƒµUûASE¦ßJd‘(Ü4Ô Š ¡Oh‹ß††šˆ:y• '
-dU\©ox jÁ ÝP‰Œ-n€¸)nPSä?û"Řï5?jÒÂ5™
-¥™q7™oàquhùj2ûÞÆBn}˜Ôÿ·@62:¦—)îVeÖbq!VŸmtd(¸h‹Ç
-—{2v»tþ¬šéOà°ZÑ9+¢p¥
-Ë;Á”÷Ë_Ñ<¦Ä»);U®`C¥ 1q*FÆJZÎCˆ9§¹_KaGNªaÃÒùàÑ¢=uQ•._MœgYE×c.bòE'£ F\îÜ_‚™²0Ÿ«U4åá8¬’aè¡ð¤%ÝZ¬(ä2dô­¤©WMÆF…
-2v—"éb–%rÀO9c R˜V‚ༀ!sw¶TðåçœüÞI]ʾÚ>=Œ&6ßP”RrÈ|†SøÄ@NßOð¨pG&ÎË](†us¯‡ÿWág’Öò‡sÀNà£L€—ð$,ÜÀD'9^­Tš—UøpÀ2-7€åÖYJÆÕ÷¢ãv"ªÕ1(mB¤€ÞœŽ@a™°VgÒbˆƒUgá¾pVp.¢ýpùA¹Œ¸Ù'C_¸ðå´D_௉.Y6gw,›/:sào˜Tœ+²‡á8·cÝ·Ê‚Ÿ”@ áR„cV¬{ó5ØY—Çh”º *úy‰Ž•CHIµ=‘ŒÆe2é’ÇsÐL|ÓèøÙáüÅ@'¤Œ
-,Ï·ø›Ó­~yQR¼ÂùU§z ¨*J×,¸RÄ,貂¨;‰‚tg Øò©•¦ ˜ !)m?îÕP‚Wã. c>ÅŠI5ɯ‚ìùŒ{’uÅí¤d±A¯²_ÕJ:N
-þ®k [?ûšÝ@.…F—'\0tz üž ºoŒ È¿¤!=ö 0üQÁFMi€ûìñª‹;þ`1OAt¦kY{ÒÓím -…ÖNÎÇJ$—³²}õœ“¸…Ï/÷¢ÓÀY=–7iN©¾]ôâÑKdúšðùDg‹Á¬Gk„‘ *C,lÛã¬ø-(BÈqžÏº†&ž¢"áÁ§Âd,(Ôä%âÉŠ HÓjá½èЊ[e¸üÔç[Ñ•–¾ÃÝ‹â¿ý©Òú9Ìh’‰*Àâ«DüFvš¿%‰*ö"‹ ~¡„ÖqQÜÆV̪ƒ¾Ðäê:×XöµB~ÊHPQ®ô¡P”’¢M¸8WüØkdç0}–#|-èLc¬Ö.SÀ& 8s™ª{Éú–êKÐj|>Û7¤fðhó7Á¦…êÄ°\_pMÝ<Çÿ+ˆaU³-Щ¨,*lË[ÙÌE"îË#é> éÎ4gÃe¡)ÁÖÂ'§ûÎW΀ÙzÃ?^pE‰ö; ”HóãWk!)&sP‰›ÈF†â")õ˜»**bï>K6‚"„q<œr™öé&Ôœ^tCß½3 _û{(y™Ó_ï,Œv+ìÝŠCvzòþt8ï×±
-PîàZÑî•é×”;Þ™ªT¤
-Y7ÉEóÜI5R¿;§Q[öºå¥
- ¶lB{Y
-$fßË·b„zÃVí…NëQT+P +N) kÆô]ãË]` ¢Ÿ¸3ï»rÀ®AUy )&úHuCà¨ÁŠ•™¢±Ó$nãoëÍ9‘áE Râ6ƒ n¬¾‚`›.d>± 2,{·—; ë ò.-òÛ o-^o{ ó²§îÀ_ÉõD¸\)Låı¦Ú‹pWÐj%rÚPœ¬Ý•œÚQ7„IêñÑ#mÈA ðeìK…àñZ8·íscÕJ1ît#®™Ð"űì%öLJи `³H‚W„ÝÃŒe„#ÁçCd lHf´0¿X¨ÆåËiÉ8<ÎèBãá‹.G3Ö]AŽCž‰blåÑeH/\ÏxÄ Ê™6jÅ£¤ý(*E ñM'wEÉ÷M%:ïÝ/{øsõ¼c^Zð,^'!t8÷(>Ü–ì:Ä*æñ¢»€Îð"NA?ó ¤ ‹YÖ’n«¾⿱
-h¤©,u7±ê
-’缕èÃçíï¢Í±§!a%€xÅÇŒëÜBÊ"³RÏq>ÂEá±Åõô†—U“Áu½RH1+vöÆs
-—5Dï`<—¨ˆ%áÈq2†Êjcº°ÉN*:kÈÔÑME*b ¨cúšh.½pR‘Zš;¦àæ$§=hš¶,—|bÑT¥‹²¨Íþ£óžxXršƒ7×Ѿ¶0‘/˜a4’õ&^»êeÚÓZ ¨?¢ aÁÈ…CÑ%×v®ú~µþQH}Pü¹ØßX¨‰üxL7ÑAX8F¯˜®˜…h¡’aèrìh•¹@Pà‡ ):%ãšÏÒM…ÜÇØŽšUh‡³6£è•.;µuŸC<­Ë“5#èÅ1‰YHà MªKBÜ•–a˜ERhÛшw#‰X4¤l³ï3æ÷ }ìšÁŽ`
-v”mHÀ½`_Øw»&Œ4™qªfG0ë¼wB«¾ À‘1_bйv¹ÉAK,bu!ñW±ÏpK5Êt0> ȲӻíÐu ùâ,çÀŸh“Ad›áÇZís&9€Ð‚ý9>.ˆ7ºäÒ–âyœ%Ì
-Œ¤N'Û?U!ÒÖx#L¯}w…‰Þ”4Y€Ðo¬8u/åëcxcQÇy– …7 ]PyüQ`{±9$´j*²U t¹ˆÕ‡a‘e«_‘¿` ·`;A£ Æ=lÄËíÜm­*(Fš,~q÷Ó½xŸ3ÞMò—î`I㞌 Rcѧ(”Ïßíʹ‹ Qf³«xè™1¤ïF—SÔÇG;…¡P¸b[G9“¡Õˌ¨É,úH¹‰ÅºQ!6p”–ôzs×Qc :£æ–ôH©sv 6Y4ÇRÿ»s°È8u½OÂÙc±¦qO_KÄ“ 2ƒ†öâ(2†lMÖ+–³çMàžZm¡;FC—,q+:AlD-ݤÂC\»Í‹]MÞ}²I›»ÍÝLÎiŒdÇ¿L3L$öJ½˜F¹0îŠNÉ¥ÀˆT”«¯}àÑ:Qˆˆ ³ø
-ɲSpM7 V Œ|Xè7nc‰øÓŠ‹UĪÃÀ!Tï@ê”ݹ¿n<¦þ§Àò±8 w*ð׶¤
-[¬YC­½uýtAÒ"ieFÄƒÖ ˆøŽ¡ÛÄ¥NsÈ Áæ1¦UÞÚ¦-EÍ+ű,¨ãGX:ý±É–ÆËÁÇÅõ@ 6d†æåé®PjåH‚I/7«ˆ:®e˜.î`›¹
-Íïù<< ¨Èü³‰*9p*Xew«zàÓHMÅÕT*ÿERÖ0ÈaôéžÂö‘ â "Tó,(u­*ƒmó™õùˆi°OÑh¬TÚìAŒ9ü˧ËTxùTºM>É{:##u3—@u»h
-^I»ÙÎÒ‘&DmÌó¦Ÿ6si$3öPžé•M žÞ~n¶Tk•B¶< ŠÆL¶o“Ì;ªÙ$‰¶4’hD™–Bä¡ $‹êdž$VÃ{ed½->÷(Kô“-^ÏQÓMäÉ97¥fB1_<wCpô«×/ffͨ#,Û^Kíj†mòÏÁ,0 xÑú ¡ «Y/0Ûd]•i4]SéÇ?G–—‚S?‰©a¦q´"Sϻ˜'oòKøù±¼÷üòüó›h~n¢¨·AhNIkÐ4+.&¬ÉP»èjAX¤&ñϦU<TþŠßYˆPåÛ“² åÀÙXÑŽ &’¬S©0§Ýn"c¡ÍH@Ú–‡VÀŒ°Q';]_²Zg›éi½ ¢i F€$¼éYN€7"Õ°sRg;;Q¶;Hzùƒ(Í¡ö¯Œš˜£UG²³,Ã,{–õ £k÷šï€À¥Êe%Ù)Ü QôbYç
-òzyi¤êĦXÞ1Œ
-E¤~¹¦»nég¸€Bëþ9œ>£JIÎ`p >@ק±!èÌ7skYÊßAW}•ð
-rªˆ…äWs
-·éò²Ðþ7 Eäû” Vž~5«‹êåœ{D¨y~@…5(KËÍƈ)ÌX3íxÙ
--ᆤí¼£Üœ:öªÒ=cžm7µ¥•P™tŸiëÄó»6±Q~$aÿg¼L’¬Ê x‚¾'(Ó<¬Ùr ¶pÿm{høðŸRT™uƒY%=åé93‚„éʹÍOBðÚ1Øg`W?REàüRÔ†xj~\4JhЇsÂI„ç(¸UiéF»&™Ì·!¡Ê|iÄf²¶;‘áà–„y’•"·ëT"
-ð†fÕÏy¿Âþ™}ëPpÔV:úI Z#sóø,Ýß_/eÅ ³¹µ
-ƒÁ#V„\ ŽZé8›ÐF$%‹©6¤`[Šmâ†> =§ÈÄÈsû@T`*ZŽ‹‘`\)ðÓ2Ïî˜PRY’\
-z‡ë8‹>&‹Â"ÄhUiupòGÒ—Sú$d÷ñ{Ob8Ö&Øa—…ZŒtj˜]ïÅ"«Ë 1¤øÝ9„<¯­q¹å±°·!YeÇæ©.î·sfOY3Ë÷9<‰ÒnI)žè; C!µåN«'Ô¶Öy)û*nKy—Ý唣kîªÀ>Öºqn§2Dx§UDØËĹ'½ª‚xü—Ík}/4|+íÊ1yÔKÛº¨¾"§Ì}¹mɬ§*”MûûÄD¿Ï}+£-1¸²W© €-ŒT¬bXmª˜,­q£n`<9Ù P IÓžåÆ/ÐåÏ<H·LIÕ"ßm·Þ›ä缊Íwnì×sða¼Î‰}Osæ8èØéˆ)qbu ¯ÁH0xz¡#Ö>Dò°1›Àæ®ìôÐœÀ3/£Úù-4ÿ=?[-.d[CŸçg }úòA™%¤óãõü„é0è€ûn»)ùò¡R?L»›)“v9A}4ûªGk
- K¦"ht 6à”Mr7hD$'¤“ñÇdB#AšRH>Ìy-Éð€¦)tF>°‰]°ÌpaÆSr"ãh'¶àÀGµ‰Tª’ŽßË݃)K>Ô—ŒÃîÐ<‰Ñi} Ð kUÛíþNŒN8Q•f×T~žì?ÄèTšÌÄÒrÛ$÷$F4üN#¬†!ÎD°°nA€ÙDF$IöD Ý‘†!ÄUMdDâ
-÷ª«Œ§äDFKs ã)²Jp´:ý·äŒzyÒ¸Öp½!ãQÊ'2ª÷À‹–5<LW9Òn¹“ê‹E—±(ó·Ý ¶£ÔSsce1€Q¥Í
-
-
-âr.æðnŸï"~Ì&!™aU#8ΫN€L*ÖÃ#3­©¸×EÏS@.FŠ a1_Îɸr‰í3–t×z‘b—ùWŽ‹ðM¼Î©Õýº(°ik(
-‹ÜÃV&ö¹œÊ«Ž)ÃÜÒ«äc&þ0@]¢Q–Ô+[Î:g¥àñÎd4õÅ*…q6ƒ$W˜ÕVØBÅÐ ·È#á’Z“U†”û•q\…=†AñògòM‘†ªâZ7OÝëÂõêÞd~ô0ÎÖ3žÁÔf¶( zWA`_ ‰¼¦x˜ÃÖ®ÚS)Áéó|MÆTK,«ó2I`fWó”°pɱ!ºÕœ€9°IMB¯¯ÖÃ’"/àè)Rpø˜ZÊv8ç0g-µM ¶Ä—‰]{_™$0T[X üÜœéMôÃÑG<’¡BÙÎtˆð3x‰Â’V‚J0:‹¦ŸX>#ìB‡xZ«`Ÿ:.î뻌)tøžzÏK0»×R«H3'ð œL'VmMuÝ$O§b]¤úLr¡lh¦]°$¼ý$Ý«ùâ®õi@Ä–8.ÿ_-ƒõÒœ¼h}/W6í»LƒU:”=ÂÓ"afT´@”‹„¢ÒêÊCñ–ï«g( Ó«†è×E”‰yÖÄpe=ݱä1 ÿg¼L’#¹• z‚¾OP†yXSKÞ¢·ìûoõ(‰™(벯oR³ Ú¬nFÖ3©Üæ÷)õ×ðíÁ¼û˱è
-Ž%{3að˜£d$ºˆ°Î¸îÁÿÝ­ pØäÏâ`+)ùŒÛõÀ0­˜ã)is¦hÊù¹ë_Vâ<W|ž<D‡hªC(rƒÊ4Ú>8UªY¾d3-µbt(Ћï@ûu1•~æW¦¢¥@®#Tƒ$mÏÒ¿0c†–Úâf EVh)a)ÓIÑ«}§ÎÈPDŒ¹w³,j ãÍØ"é~ -awSÙͨÃfŸ¿N T˜ …VCyÉá „<B
-MìÙƒ?½‰ëÉ$s§‰¬ì…#†èiM>+½ <ØÄÌ\îëÜA·Pò7 ¶Ü;:Ë¡A>†ƒ êDè{)5 ¬)/ešC:LÙ‚ðQf¯ãØx ²%f­Æ‹ÂG·µ~:<? P ·c_ö•;9+5v2 ‡ôòÌÛS2ûPé›Ï_'È­>ë6¼¯©=µ·A&k´\Ö;†1ËŒXIâaµ^+?as§>@Ck—úI©™Ù©cŽGêZ…]Á˜dXqvÕA°%rÀh²§NhuÔqù!ì§Aºìva™R9@~Û\Po¼+÷NùÕwŠÔ‰w²5 vÀ®RüâÌj§)߯â¿Äs\sì£è&îð+à <’™DHí;AÁgŠ¼Æ»áT<´?ü6ídžªøÓm2n SÓ›KZãF³×ë
-¿òP,ÍÑÙ†ÀC–|F6æŽMo5·)O.ge' EU2Uß.®¬8eæ9о0ñ£òönF']·åÖ:.‹TŠœ1»/dBÙ(†Y°“:IŽÂ+š 0Ä•Ôä¬S³Ï0ÞúAÃ?#¾Ì%ñ†ÞBŒ!¦Þ + ©µöIUѦhmÛTQ®L`¬þ‰(§‚Îc.$óéë/]7aþ"lû<é
-ºÄ.Ý8£5õ™„pŽxáJz"yùQXß..‹½yD†º:ÅÞ(9^¦˜2;ˆkœ­‹>¢œžRì}óåÏD¤KøøNm¯¢­¦ ­Ñ)ç`¢9g¿ÙBìdß—!ñ1›˜Àn±šŒö(™ªÜ$›09û$Šé9bµ‹Ã¢LF–5Û`V¥ë8í%¦ý|Ãv§!´¬ÞŒ‹(uem½¸³µèû¨AT<ë‡ö.V.BºLï¶çŠÑ­_ñ5¢1å1^Ø|"G á!ÿ%UÑÎéÍB¨^w2ûtìR<µó‚ðÁ©.fcŸ èú‘"ïÈ%³!Ü„.´ª8SJèõì-N¢*U1ßç§ %øŒ£ñªHÚ‡2û1|4V ¹[d^¥UA‚öü^4YcåÇf‘;F14%ÞâtÅðÃ&ãå« ‘Ø K# 2 vŠ?63þ?ÇnblI=“††Aj,¦æ×*KzavCîÎ3ja*û¹9xPýzâ‹k¤¼Êr> ø¿ª|Ù§ßFW?ôp›(Ø&ojf»`éÄOR+!ƒ(4I#ˆ‚Îö8dQQbãLSÙŠƒ‡Ò•]5¤EÔT²iˤ5ý N—0#V Ký„GÒÊ¡<7öQ7DŸ;§Q0Õ’0 pße4[-{Ñ¿´à
-W™úOÿ©e•WGoâN›ƒXS·“ ^½¸:%y"•ƒåß#Ñ
-ôÒzñæÛ’Wwí&(PeÓŒìeV´+ÏøñÃf=ue,»ˆ­ÛH;L¡(–}§p]©Mý˜Oe IŽLºÑ"7¦xj^‹õŽùÞ8þ@ÿÜÑY,ì´—‰æ·bÞv„¿CÇ‹êîÈ„6U^êöij¢ñå·ø,1]Ò‡æîwŒ¬¦+Åä5–Õ„^붗4\5ù¥Pέüð™¡ØSŽ“tþÌÔOðFëê”
-}@1¶ßKcy.ÖÕ!AnÓš¥ ~T ”Ùú^„(³„FŸÎ›³T¤Ô˾€üp¨nd ·Ò¶ÖíÏé-®àp#{ÝZ/‚6±š—xsÊg·ÃÞA™Z
-§á DŸ)=·Oc& ÔR‡öš=œEU­‰MÍ ˜É1ZЭ ’ø}Ü_dm½eõ¡”–Œ;ˆÇOö’™«õí¡_Àssàz¼L0jOÖ¾„€žál;êYGµkÏ)Ëm¿ø I‰¹\9Â!Mœ²2S™’»4Ùe¿.W]b€mÓÁ â*_ªþ¦Z
-SÉ3Ìï_§£†Â,´2C¶£°Áx- ƆDÙ7y&ãöÄ
- ”(£´(ÑÈw¯âA±¹O°ÍÑϨMrVðiw³²œ^‘û4å1WØ ð¡›8¹æ²r‹«mÔ
-Û<lî©wyað¾O˜ûäqÛ85E¥='ÃÝ—ÌÛ£;·Ãaæ¸s+õ—»éÄ·½?Fé2¤Øt E²úÖÀfóR®N:›D‹Ìà¡ãWˆÏVÑŸ¸p/óüzÛ*WfOŸ·Áyu›wDi¬Q¬¼#)Ó3’ƶ£
-ÊŒH`XÝ0^Â킶˜{Z»I‚BWœ«C8‡àJ¸óèTäÄ0|ÖÍH’±ªòשÊï‚0³ìhÆìN·¹7dÇŠO8E×·fP˜Ôµ ƒtf[Þ;w†$©‰dë†0R6u”=•_ÂeÜ6Ò–&êêN~T+@Í„ø`OùºÝðÜNÖ#)|6è.œ¼°ÍN®ÃÌ…¶¡ær9Q¿4£ÓÛ`òdœÜ•sÅùB;1`0"ñŠnå½ãJä Z}i lWÛ);ÆxÏ/—ܺa ž wð rø_û(ÞÆ÷ߦZ¤l<qäà¡MŠÃaw¼ÕëA*¯ƒòw[ÀÏF•ÃÈçp¦oáCó2ó{È™9’­ìt.Ú¯Ê(á‡åë2+7ö÷»‡.äŽÇÌ—4еå¤, 2x%e:-C@ãÒX–b">ÆD£ïßI×â›ÓR /P†Ûªsò ï„eë1¢êH>çVPU7ÞѸ_GÅd ´3ĉïAXñ"¦ä8TP£¬­H·ÊÑI¹±Òwm€©±'êÁæ{x"rá‹íp!ÚŽ*Ýbœóá”/*Ô:¯Ì§$j1ár[žŠ§Î;æW`þþ9jä8*×ÑdhŒ{Ñ3ïu|i’xÙõnÌ’ 䧓<9hæåÆ0VȾö˜$¸I:œ˜ÑçóA#þàb…,É®ÌhYüš"~!úkñPEˆ#“8TۧŚe}?ÖøÝgXDÓªú37êáÂ"ŽÀµ£9#çÙ’4>•É¯µêÃbeâ`ˆýÔÑ}^ô42JdLlL‡V¢ËŒH€¡Åè3#’¼F
-Ìm‚@½õî#ªÆ ¨¼»¥ß®ú‡òý ©ž}^ÔSȧ•3^ S×Е±¬ñ`ãE$ ÊdÂœû<^D¤ñ€¬qfÛÆ‹Hd–”‘kˆ.0î’=͆Œ»ÈkÀˆ}óð¸ß³×_¡Q'‡f²^v¿ƒÆ­‘whÔ5$²­‘³Á‡Æë­{Τö¢`¬IHúΤF§³¹¥æ2#’bÿÅÊ3"jUÞZøŸ‘ð)þ5¥€›¥t‡Œžh£AÏ,‰6dÜE2Êßh¨Äu”pÍ+2"d
-H‰Œ—A²9„OÀÞæË’lyM/¹ÅDÌ
-î¿Oeš¿\𺃎~¸l)3•j2j/µýøŽúâ¡£—¢R<^ÝJ)á­Æ‚x4#Š¸Ç„Äè"Âo׉*=¬™†÷ÿ~4^¥Õ¦ê ÒWñ6Ú°hôqAøDçônuLˆtó&£t-6!îC‡µZÌüT+/©Ö;¯"Çs€ïV.)ûὩåßâó± V¢Kõf‰×°¢TB ȯ_Ž +&­U.ùñýŒánæbÕÚü’RÝR(é¸Þ]¸ŒioÜX¬OÿëÔfônâœ1¤wjûÝEÕ«ËpþÖªÑ,\\{Y%iUbh¯uB¤ :\º¬
-MÒ±qG¬^Ö>W þpÊ[·ïW¹±æð¤;ûn¥’?ü‹Ã·Ÿ ¿õi}êJžGWçòñíËÿ¾”&î7N/ÍýpÞ#¨¼’½yp-™÷‡Èͼ—˜ã7n÷U%«© X·JM!‚÷¼Õ®Ì)b# ãÕ»7
-Em½®†„xQ¤V¤(Y”zêü;ds¬¨UíÒÝŽç$“íÜr ß·A{j6LD³AÛ(*UŠPB}i 6îß‹îâät„eq†+0ÓV‰£*®>l#U5˜©cuJGÔÑZˆ´©âè·Î?‚*'µÒ£xÇ-糆Á-é`ˇðþàÞKéÉ1Ã7«Út¦ª¸SÓÚu?\ƒCªÑäe_Þz¥+Ë›ŠåÄÔ– vEúœ[&ã>ùoÄvä)jëü:ž¯ªA4n;uÎMàžS¹¤Òâ§ÁMÌ«mÞ‹ŒFM7=†4ƒ]f]RåX±hmkÊ”tc.b­¯ê¢TÜ ÒRÂMt£&=ð™±ßô7e¦ˆ1x…kÚ¶:œáõtY¦€Õ2zM2/—+XOW&W½hH›6è"u,ÑtŠ@øǯé«a‚ ~Õ³ô,‰ÜžÂ‚¢(z²àéxæƒßj×}0£¡§{~ÕÐQ/¼súµ„7RcŒÊ¾'µ¿8LТ§c´âÃô°/Ó¨ÂÈ“UŸÞÔ^ÈÇ,j˜ûùœþÊ”Á¹ònBs“•9¡ Ò/ÕçÜ[FËÌvF”ë¥ñ;ˆ®xþ9 AŒë>®‚%ëŸá V/’œáûS.V(Ä!ˆØ,aÑ.™'ÖÃøHÚ‰Tõ1!Ú†æÐ,{ž+½uï$‘»†Œ¬ôÙ£¸¶"é ©ýÕŠÑ­+îzhúÕÐàñDæÃxæE£5(¿ºùÓ9†6Ü2Óã¼Mg wô`3øõ(γÛÁÖR° Ñß!èÜzÁÙyü<G™©*tN@°¬£^ŸBaXã*LbÜ@§ž#>Éý„V|1.wÍ 4yqƒðø´Fä™U/H ¼½ m?Y_•f”Ú¶tïF]Zlj=׫5#™²iAxdþíz áþd^ÂW¬Ë¤Mz–Ë¡Û×/'Щ6Ø9ó~ÄtóO‚Þ]ùûg¬ûrøÓxӗêì„ùï˜úcbH#GS’5Ü9r¾¿3Ti½^mBºjm½¯®Zz¬mêG†[&S¬Ö·kJb>Ïá Ž<²‹¯9UgG€X¦fƒªLŽ7„ˆHd6D®ì1îš&oogH4G Ü\“-mT‰¹®ê±AÂA¹Nñ²ƒÖIr›Š¹Òá†A]ÈÉc¸­ò‘ñh=9ƒy7ÙŠtu2Y®.éø)WÑ©eNNã :ßÏ+Ç_ºýõW|Ï€E q.¿Ÿ³]AŠ“ \*§ptu‹}ÀωâÙ,ÒgrcB˜cV´moAýâ¦9ñæÞaA[²EzY©‘@l™>®O±*e0¿J¶¶UBAý’êÒÄ…^}x\Ä8aœ†Wã²Pðût'!7&o;­í–þ¾µäÃ/xaÄíyò¾µÜ¸|ßZ² ž‰…èýÞÛ~ Œ»3s˜"§Õæ¢;jÖ¬RX·ñ–Á«>!ð³(S»íŒJŸxîÚŨ)GÔdn‹³­Ê«QîÈ‘·-….f"¦ º>•‘d‰Í>í-'ÐÛÆzvŒO 5BUC¤Óyï ŠŽxæ’×_šÈM´š^2}SV¿Ì£d^Óe/I~­Ì<ÛÔˆ¸ Xô¥PtÃÄz̶Kã¿-}â­92”.ëÉeŒÐP›ø²˜Á
-Z°«f>žÎé Ül³o»<™lg,(˵к$Ã:…¨Âôç±w“ÜVYWÑHÌä“B‡×Ô“²HXÓežŽº–LR8c‚Ó­œIH‰åbvìH¿Ò¡¶ÚÚɸÉ4/Ûs”svÞð¯¾w;ø—û-ö¼<ON¢Ö(Ÿü»“~½¶-ü"'M¦.©Ë j&Ø ·øʼn!ª?-SêNŽ¸Je;€ùÓv„qÄ|á[?£.ÿõ+ë.£Ìâ5ö$ßáò7ÈE®Ž°vZ¶9½ŸÓ_¹p°åbç{ 3ÊÉŽ$›ˆëM5CÇúR’ˆ—Sû1'ñtH=Æ”ì‚ÿ^ŸòÓ tO=ósI%ˆÌ{þ
-‘óy”.ø'¹QY8œéP°ó±EžK}aæ^v‹ß²ƒÁ-ÛáàzÐ YðHRm >Ç AƆ+ô‡ (?çÜ¢ö§´¦ÄP³ÀYj}ü\ð{’–N™N‘îûgJð+³¨ç[Í«½þ8‚PUÏQÉñ¥¤Î‚ÙÜð³=2®i¬lópi“mU’°dDŸiëÿŒ—;R¬7…WÀnì`JïGè"%õ
-\Î ôþý©wæï1TAD£_ê>}i9Yt
-RxK«û.»Èioýe‡r»ų1c:Ið²‹1WËèž2zhø<ÊÉ¥DCh»¶xA%SNŽ „#ƒ(†õÉ{A¼"L³x
-½'*¼?)â^2½à¯ò@6‘Ë_ã·Õû¾KðBÌ…ׂñgY2ÎÃù<Ìœ¢Ä. ¡±¯µ§$µ!3Fpˆžûa
-,F,QÞWØ0{†*H·ã«Ë)ã¾^åïIø][ã ý±ÁNÉÝ þþÉƼ}ú¾\àé®ð)rÎûp‹0@@TH†m«Kå&o*Γa%ı ‰Ôšž8 ]ëÒ䆻ï€4</'CׇïËeòžÆS:Ä\=›´áŒÆÊó–¥ë6¬_.½ŒE*ý&õlÅÁ jä÷ˆû;
-¦d3qp3ˆä"Ewkú ÝC›ÿéò 8‚r*2‡}ë c¼¢»¹¿»EX ÞØ-/™ÓQÙ„Ø ¢‹¤îÝvNˆµÁÆdÓJ’Þ€žØž` V6"ÖhZXÉSªã¦Ò±18‰x\½žz4ù{Å!äÒ§¬„å©Ë) 
-/uÅnž¥EÄ[dð˜ä:XŠ‚™š+Ž6{ ‡ýØ­aqJjßÅÅd†–÷1E~VfÓ­»ì‰¦ÓÙƒËÊ‘$è,|6Ï›¾ÛË¥¸ÎDg¹Ñ ¿Kí‡ÕÐ\‹ún&Þé£â²ÚεɱÒA|K7¤³Ê+öee3ØÍÌÚýuíü\ñÙÚÁm²¿øƒäÑn26š¸K`VeÎïu—¹,8FIì%]ä)ý(5™ \ó5º8ýs’´{Ð ¸©ø·a‚X&Š {|³>%ü§´1°OÎÁPñ"œ$ÜvæÐjÞ¼v£‡®¡
-ö)庌ßJÎØW ‘,*ÌŸ!C± ·FÊaÕüsd“š–"•içàŒ1µìDÙÖ êUÀK¦¬:Ìþ Bú C”cw:Ì‚…Öã÷1²lƒ¸Usò%ò
-J&¯sN¬ ò[,å\‹¼™åX’Ù
-»>íz{oþ‚…ŒºƒEœ
-ÅêËœS÷Ô/EA –wyüCnÑËy7Ó„sNŒ|Ì-`¾Æ ! c®Nxá2uÏi
-&"Ài»ˆ¨Û“œ°!­ V…´„‚ž>7ŵú¤äŠ´Ç"Çe1•´”²èÆRJ iMpšÍÂèŠÍØþΧÒJx\`s+aˆL(—ÛJ:”¾´”sûaYPºÐZà׌‡Ò+TÇœ,š‚ƒºÀŠº3&ëP=‰®CKuŠšÞž]ÀÃ…üB€}8Eï?À¼¶ã¿X?ÿyùãßMÌ .²¢½b¤ˆÁµ)qt9¤ |ÅóÚ»¢·'EŠuÈ2Ñ–qwŠ”;©¡¥EØTÂÆ3ˆFÈÎ×¥I „š‚Úœ›âIéQ¢©9¯¢„Y¥·cd/*Aw ñŸTÊBà]‚½JàL;{œû]‰}ªH”JB¤Û³s”5ºœÉÉjœŠ (°ò·J$à}Â7N¢µOE¸¶ô†Æ™ˆ„Bæì ÏûÔ’«°ÆóàÄÈUò¹Ìÿý3¨?†"­òtóȺx€ÝÙûzâÆ$ÇQo}¹–3›ø³¢ATÂËê.!YVîk BðŒ|×ëëcô_knEßR½ßçàf*7Â>'q0Æï[Ÿn ÎsD"aG îõÅ/ª=qÔ2‘cÃùRœ1W‰ñ°å} 
-©ƒò4=¹^O‡`±A€ú¤Ã‡D²ZˆÅX]'ÜE’… :ƒIL© /K,8Ë!&ö#ÉZR¬Ð…"“¶1@óÀe¤¸ÊÀRl‰ŽÊÜÑÌ „*·+ö)2IÈœªõ=›ƒÜ²;µ²A¿VI?°²#Û’ÞZ±îà«[Éê)¿q8éñõÅ+J7yž¨LT6‰±}…:0å½[ÑL-ÈÛƒXV&…F±n£¨ìWLå3qðlèkQ+IÚcþí¸jQ:0IÔ³írðøÁж %1VTbÑغk0ôˆÛeÆ:¨1<Í „\1¯9%gèò§léÝ?ëMûäÆ{:1ŠQ²ÕŒ}C¹‹²Xt:¯Z“`GiÇ„pÀV@èŸÉ2äÃx=B1ë$54-Æ.â8Š”ißê4=J‡§Q~…éÜf5”Ji´j'#U¾@+ ‹³X)h‡ÔÖS:Ú*ÁÁô`ìá!ÊÒg¿§É•9p_øŠP!ó‘§Ù;˜+H¥3Û³ÙôR4— NƒµMl1C-е‹ŽŸ=ÊÒ›÷¹ŸAªìy‹íâ™STeà“ìyZm¢¤@ð|À,
-
-E„E Ù»LÉœqpÅÔeùX÷ÑŽàb_ \ÔçÁ<ÌÇÌ  jǤ¹\Ç*ŸÐ*|į¼K2¯íÐMŽÙ)±/Aðü}–±•Ë;ÂÕZ´ˆ©"3Y‰ÐƒÕé19~}ñŠ
-A`F–Š?ÔvM ¨”ßd ÆY=Y@pL}Ե뚊Êd6w¯„"T"to«ÖËêûàyµRé8ýcÜ:;Fó^«7HV Ic.7„çäÂQëmÞò\Q¹h}©½³_5à%=B.™ëÊ!ùw!väåörÍýéM¤ \*ÓBo<ÐjhB­&ëP² âÕd=XÏAyÇxya¢½iíø”W¥GÜ:ù±ï“xh”Ù<ê  ¸Ù ”èòž‹už,´ŸöÄ*”h—¬êQ?ö‘¤ú4Anf|L>É :´“×O¬†‘©™MYÄÜ#—Å
-¦‘E³W‘Õ ‘a8åpXš&â{,¹wÆ÷†ú·Äñ½úƒe¹aWU+»6ˆœ4ó Y5bŸŠä„R¤ìÔabøWLXús›‰w(!a›ÞV+O|,®
-!ž> Ñ¿4­X¨Š.ÌEÜg†ƒ“#ìIu¢q§0üpH9cQÙé4ôCƒ6Zˆ”Ëf”%dˆùÓ稒˜ÆpÖJ‘#<_†Ñ•Ü´ÊD6«“Æ×’²Kn Èï+SÁ8 …ºt–œAÄú ìã"R0A¤´HŽ°-ÎÄ:6†ÑšG>„­RБ䘆v?V£@`è;M#VŽà˜€~ÿæ`?ÒºªÊÃ=9›èîGÖ×È]8+:ÿÔÈ’…‹†äP¥ˆ+s :xRÓ…*hY‡zä&ÊÕ f…ЀÕö@•€X<m0áÉÏ®@¤çr”9Ÿs’|qƒ fÜ^©Ù€ ¤EâÙÈÒ¤ó©ßÎ<Ý_ÿAµÿõßoýï[Äzˆºh{çg‰Øp6Û´'ÎűÒ$ìFXÛåÎBß…
-N€ ëHUa®GT»gw ö)”ZËÇHǧsž*„‚ÆÓm`7\ãòó«ÔÙŠœ¦“ÃîÅ! ŒÐ‘8žJ|ƒ|jÕùÔ„YJmT²$Æ¿ Ðe´3ãáUZ9Ø#µž^¯ºT‡­n¼Va¬íÊ—CzhÿQ”Ý^] ö©KϽs.“ãÝæ:€Þ£ns|/Îmî%þýV-¶Oq XìoàÑFYâÃÃ8+Õµ|º‡øM"J÷)O ŽmaRšG¼Xdï¥x««K‰_BJÄ%ëN…@‚HuÃ0ð$.]½-±ÀÐÊÜ¡ß ÏTÜž)e‚Ó†@÷=d%«°¸Š/c£xê;·ŽÕ÷¨…˜´!‡$ˆÄ€Òá6B ¸”ª\´EN
-§3vS/ûRÆÕÐXh:>Ñ2.Ñœ³ \»c”«±!Ø„Ùqm{L Êe !NoÉ¡*’:N¦6”p7‚%`ÈlØC¨kÀø‡çîFð2Â6)Ó ´ Ëò‘…ÒLE¢FȜʳÑ*ØpVØ1Ì©õûSH³IîÕêƒMUj᯺AL<>TQ5Ú9ZÀεcˆ6;ò¥ô/Ð6d*‹iwŠ½Jhöš¤Ó­>cM3!4FЕé»Ä·ïú4Ì»‚j–Çyšf¿>YÁ›ø¯,ؽ‡ *Ú jÍR™ÝÄoV[ÃOñ ø£š²’Ôè¡f¤¤…À9MfŠ¡?§4þ®…—¥¶!‰¿ða”:ÕÊëÕÓ\ÊÓ9•¡ÂÏ ±„DóÉC1— !ÉFIÿ<‡ µ!Cñý›ƒ¹Û²YîFF¡‚ý°æŸAnÃøZàc”­·Ç®Þ¯ý)~l $ÄØ%/W
-²¢B½Hó“åZ½à»ü€ äçî:ìHºÒ¸zþnCµ ɳn÷ùr¬Û‡pêÛ¿…ŒÜ¼EãÏöåÒ±!®’¿ýå‚H:h¦bLgµÞ6òOÂ=aw "¶ê2ˆJ‹ÆÒŒ¢zW»9ñˆ¶Æ)R1µ£3:yˆƒÞ†b;Ê—ƒÄȲð`(BòLUËÇ+|‚¬Oq2wšðÏAj5cxø×Îwä *— ƒP(ÄR[¶ ¨DVa}¾óA+Dz¿R†=ŠˆCô  ´ý±Äºd9Šn;¯iíâå¸Ì¨˜E†eCh ÿ»ÃË8
-«²´TÈü$:†›FÉ ]Bö ò¥3+°(ø4ŒHÀm9H¼AŠE0zE£ ìC)ejÇdÆüpÊ¥á÷«ÜÇ{Òm
-L—J/?VɈs²iÚö0Øø.],^BÄí ‘[°±AüO׬ÛÁ˲(›oaÄ‹Ñ}¦6lh0ßÓ+È Ëy±HV¾yCÞ îRâsMI¸Æ÷´§cÐ|îÌíâ.ÉÁ–¹Œøqƒ®Kß
-­e!Ïät¢ÞU˜2kEýK˳M´6û—€P%ð'L;‡
-p/àO±k¨Ù|(¹,èߊ›>ˆ  ÉŒGÄ\kNл}ì{E:8âêZäÔBÄeW
-P)ÁËÀÜV ZE$‘.•`±F»Ö…½—îSB@d¡jò£•Hn«²•L~ÜøÏóÁR”$Y
-ÓÃRÀn0\üDëV‚ð$¥ËÙO%þ©2aÎ;âÝÏ…
-ÇÓmP i-æyx0ã©;’¢LHŸz|+y›ÕþÔµ./Ë’ö9×Û”+ÁF|xS¦OHži¾ÚwëMê¸jD2Í\î¦ÂðÁe'u)ñO]&~:ç¶7÷ÛÜöïôªÛ NPïôîÜÐPñü–¤=?”¼MêïøÐx:Ì>äíàK„Ó,#7ú¡èç©èÈ×Ï]‹>¿s'çÊv¦2ßÛ$µRG¥ˆ¤êW?á1Är®¹U$ƒq@•ÝòB"@0YT-)VRácÜíhÃÍ–¤=£
-I¢÷Ë>%VÇ@oÑŠ@1ÛÉÊòÖ”0%ô?Ó&«­ µ2ès©SÁÖÅYe!Ë“g£¨-§AV^Ô%EèY¨Û9¤ÞÉ°KênÐFoŽ2– ¡ËKÏnÓšP‰™ZÝ
-쾑kn±²Z#.¿.œ¹02ND-ÑK¤·YÄÑ{÷>ÊÒWZj%­‡'~â[ŸEG†H±½2iÐB5<¹Ÿ#7¤æh;2UD¨”eiN]71¥ôúÒµHú÷€žæôG‚ÖPMö´j¹› ˆwmÄÇ—Fü°M¦#ü‡Kßýãç¨-ƽxŽ¾Ñ‚fôsXvM  Ó![ƒÁ§Yùê!ejûT|½ŸÓª°Pá\œYömôw²¿j%Š!FÜ¿¿J­CÃ#›cŸj,k\ὺ»Rx@N²«$c•&P˜¯ã=º:Ñ ‡’ÁTpj`oFs>`“˜ƒÎáÛ¡èó¡<ƒ{–‡k:Æ™BÁ %£î3ðœº5Ûã;Œ—,V"kWpbSþew9ˆ*bÅψ€óœÞe´fô
- ÌÝœÈ`f=žÆy©ðÅ
-w³ãbûñ”Âìäæ²DÜoÂðÎÅv.iô¨ã[kØ/J4†ÀõÏý%
-•Î¶>Ñk-ŠCB/P_×XV à™RÐp0+²†¯G!²zR­&b©‹
-qz²LÉáÓÌöÁüái¥GF3ó¥™}$ÀX«;;&á‚ù¶æ”t‘Õ[¢P,90`¯òC.,Kþª‚W/ÇSàj¶GˆIü*ÌV΀Ew ,䲫X +É,¬û‹ˆ%/Cþ;ùm
--ýþ2/•?÷ﱈ~°~|9oÞ¡@ƒäÐøºm’®è¾w(”.Η±´—ä
-ýäøºø9'€ ·âR<Ø‘°—|˽ÃîõÁÐ_g~ ´¤Óô¦ÌQÎç°ÈP)UJÛ·xç`ú»{Ͻ9 ®$:;!,³Ì=_,+YÙ.–ÉSì‰ý±¿L?»ˆI©³ìŠ†k¨
-n—䔓ˆ=Ù¾½ÍýóX„<2·.ņ)ícìÒ_ú±…˜€»¹·c\n™Ð ½s£ƒ„š¿ž÷ÓbÄôYQm«“$QÃF…Uç+£§q´’¼™V¢K`3½oÇSX+Ò
-$Y^",ÛSé\ ÙX
-MœKÑÆôÆž1n>Ñq„alÖöç:´¤jQå“m™-W›¶NYÅêõúTÿðàýèöAú›êƒZö«R95(1¿GëUÍô^ØÊÔtVCÍx.žXì0 zcLU!ЈlGrh3·K¼Zñ«í÷ÄV„´çÙI¦Fö!ê”°wÈƺ|‰ií
-!µ-üŸƒV1f\0Ø=zM{ë|ŸWÐ+ 90Î'vó’·aê\ &»å•oj=ñ ›/jHû xBÍzƒ^Ÿýª†l™ÈŠLDïÖÙŠ×ÌÇižÔéð_“Æz«†N/“ÜÒ¤¦†½T4-´ö“K³ZmæPî¨ÞÐDߊTq©îˆOÕô¤†wÍøˆ È+†¿Ý½^@D)}£.:¾÷vÎUy´éA4)$mlu¹d!¯­4VLoäs‰7lA‰§Ð¼T=âã$O—ÂÍo™êHeå2isøÇäˆ3µwaµá2L™ÒÎõn•kh ȱW"P1øm×¢"ôW:‹týsžõ­4Mb‚<×£Ó1ÖÌFÝøÞ åÌs˜žçÅ™d‘Жî$ü%ë;/¤Zx 'Š O8âÕ–¿fÿ8ÉÅ¥y\¾àŸfCäÙ5õ`£¤c_5ð”Tš{¡¤§e¶®D7†ƒ]i/ÓÛ‚@Лx_aàeFAf,É—„tò.·2ø›‰†PwÎmymDMëÈyd•¹5¿DÙ©ÃÑ£$æ] ê8d:]ªQw=Œ51ÕäêCŒ³—x)O ”˜öÛÖ|˜fW7¢Ö4_]Ch&a Ðiþórî„?i2%ž¸÷sÿ… w>=AbÈws&Èå÷Ç"
-鈪D*~’T^9àU±þýNšyUê.Š­CùË:pƒ;¡Ây¶ÈÄè-‹yY>SLä„E«æ¸Øê·<TxüóßßdU|/3R©4|%~äæ•3¦?þþFó!$y{6!ÛÐh*vRÓ‰ÔR´­Κì óýÃHCnAˆ ‰óºÙ èó+'²õ_ÿýöçÿ¸%ÉíÜk"6Ý~x´^_ýû÷7º]è‰Îýż–=΢…gZåÜó
-ÂßT=ºìP˜ĘïH•ã«1bà3m7ÐËf_š #Étùv(¥m×ðR¿ z*ÀçWªô˜Lð5ºr«•X°Š! 0“R¤n¥ßÙŽa§e}$AôƵÓp©©‹®ÛÑ'êJ馷…ˆÐê
-a*·%A”n'4™ú0îµèþ!ŽãƸÒö˜yžMò’W’70ÙïDd”kU&¾;e©»4cú2â0Bè~àÔÅbÅV_grË^HX£C`ya˜
-|‚0¨ M3 õ?[õ ƒ‹º#3yˆM`7B7t`!d60Iï%éòÔšÑÆÔ@Pñ6Î(‰'QâÖ)átv<>߀Ž+iA;þq U;¶íׂ$ žx³ŽAÎì$E­~s½¦5†•XãWÖ2ÙëÇz£ò h±­r“úðèþ
-ìÂó#z}„‡æ+$âä Ž•‰+CùË·Êt]!Í-?oç^¬Ìót߉ø£Þ†}¾ d]òõ^â1{
-G+=¸×7îG¢Æ’ƒ6‹AõåÉ}§Æ×iw¨ˆ&ˆÓ¡©r¾í–ßwÝc>¼@'2’a‰U´ôÕ!¶f½Ú/ ã;üç:ša B²ÞŠ„°|;Å…<{:A÷@ -„Ëu™§œŒ§•l ¼š$ßÎæTÕUº›!Á ¹2݉ )¶Ri—zÖ<Ø{Ñ0°<vÂì8"oôÁ›HBëÙö¾!;Âd"Eac’1¡‚²9äp–;nCˆýYo¼v‰ |"M™` ÖEF¡¬GíËjƒÅŸd ¦¡Üê!IÈx!pÜã³­. ñšZNŠæ'V<–^ÕäýIÝ”ºWÛ-.U¸yÃm—‹×y•Â^6LS`ÍÔjôipž¸Ul²‹ÒÃi¨ÂÑWóŽ®sÑ9|<M.|ÞrlÅ6¸$þ2]ÚQy +)ª­#]<óWZf“ñ ©9C%›Áj%·[]š!“3§ýGȘDjTÙA 1P:Ñ[þ£6\+e'Õ9Ú§RYq˜_ ¾“DºQQ¢æ}ÅW,ÿbhs2Pám)!pd:Ê€4m
-Ós-å¢êÅÙ»ôjרŸt•i;û:PÒ[â0?åIãûað>£§—Ë…ð iº|péæÒP™´ïBY¬YÎQÚJF^b (²ê×c=æ^܈à[)nà=sv¦ÃÒ
-) À!$LT–í°aƒTì$‘†W\|BµEÌlyߪ-ÎV8Tñ[Á¢­úÑ’¾gËT˜
-ní¨ü+hJ·RëƒøNÜÿ4Ð:[§Zc +üº¦ó%; G!€!È>„)?àà%ÕäµD6 ®«ÅFY+áT?..•mL;u˜gº²<3]5
-%nQgΪÓwâô”›¹2ä°bÂ-†;3v¢Þh!ÍøXæiü”¦/¨ÖUœEg‹=_ ¾•ïÐ
-\ê«(y1ŒÒbò ø§9Ó_J䬓‹•È–¹—¸lȧ¢?ûlŘ=i8¼/rá„
->°<.vN¼Æ.ÑÙàN0f†¤€TÐœœÓ«wäbÁôî¢Ò‰yp,šº—ᨄ$9؉ÑѪˆÉ¡ò.áõÈ¡ü9w§ÄvBÛCÆb½­£æÀTÛ‰Y83¨ú‚3¿Kñ ÓLúÊY¢[ûðøHïYÊé1´Jp+óìe¸µD˜†‰„PI{hØ¥äúl«Gl…çmS gÏÇiÚ
-_r¤Ûè^ŠŪaÛ•Þ/õhŽ¢ÙÚ‰Ó0Ç€·)c~F¤ýP!Ègà6œ
-ÛÞ”
-£æ㲊Z®ƒk߀=æ/j2ë|30œW|„ÁŽ1ã¯PÛo×Ê$0R, øàX¦Ž[EÇ&±(ïrëƒ)Š‰‰ž›ÍÂÑLéÖÖù>Ýme3n±FÃ% ´«‰è™L¦üìôkÀƒ<83§xûå–zEw˜Ä:.%ß §°6GÅÀ
-Pû-<ŽtŠðxQ4cí¾VIlƒ\ªÖÚ[DÑ#ššê–jJ(Pûëiâ7øÏÞŠ¡hmB”F©öíÄA &zo_Žo²¿1¶
-ÁÛ”>)5y„¢„u»T\z]Ì8ÝÖÄ—¼9ü mg¿¿‘¸úÈÀôþLñ¥aŒ‡×»ÿÜk;Í8g>hb õ-dåø‹âøÀv>ˆ)Éò(à3œ’OâwŠ¸3 Ï»™E¦Dĉ±™»dy5Xž†»UâÄbÊfB…õŒZý?;ÑNèÙŽ˜rð(0±þá€d#­`¶ÓÁ2 HîÈwÝ$:¬MÃ@–y^Š1QÓ£¹I&¾kÝ,#b 
-(¥¼œ`™¼yM-Ó?L~Ñ8 ‘”èz§Ìq„ꀽ~o ,4“´(zó;¬ó%†G£Y.ÅîÀ9s–6»ÿÞì]‘ž3æ⣆½#΋öÎToèӕ阱2};êò…ÿ§R´ÈϼD\LÑš“)ÿòj0n¤¼ÊÍa‚þõ˯‘uRä‚]ET -´40gòªîMšÍ«=* Û
-{öRAêï­Ž0Œæ¼ú.™H;&~Hü…„ŠOíåV2 „¸žÞœòQƒr¡É›žn;Š‘Ûè·’ŠsIJ+½Ge5;ºSdïÉ"uYï#
-ò
-rÖ›ÿeá'Â)ÁСÝlNo‘
-²­}WÐ6ÚDVtÑ÷sïÄû#-€iÞJ 5Kàm63Ýåh`{“íx å«’ýì4(¬D$°¶•T²Uª(¦y¡¨é…Õsq¸l‚0rŠ x@{{K¾â%QýyrÁþêóêÍ|©ß¨¶›ó1n9É{+ŠVga´Be; îËŽSÂ?ÁòM’h&NÇ9¬„þjÂùÃÅßmÅÏÌ#e3˜%¡Øä½^oEû
-D’tÃÝÛ‰áf Rãm5ÇŒ?:%5T+Ž ¶]‚¦\µιµm$ˆÈW×l“‰Îc©iq/#Aq•x”P¯¸"Òª¿4 tjõ¦ *aGÇÑNIÖ2¯Ýö:|Cð|‡´@Hƒva_Û)ØF’;°˜‡âàűtv"s6~ ÇM}*à´"Œ',"k$SåÜ’‡×üùÃ+òÜï ÝT©m|þ«"/Ã9Eϧ’@hšðþôC%5cð‰Xo!Ž¢Â“Vqú%ÄQ+(0–ÚüÇ0Lq¶?•[Œ£¨gØ/ŽSôˆq”0ce?ÆQ‚_15}·ÇüÊ2fê°ä#ÆQ"“/Sš<ƒ¼Ù„N æ3¥vóЬô¹ÎØá´éçVi»„-Õ6¬Çbþ$Ëo®}òÍ*Qò,£fÈ™h=
-,;y)aÒ⹎Ê<ŠX6™ù.Áxÿïøõ‡*\‰cN“þÚEòŽèvRá:”“‰ÉW
-kµ“">ñ!uÆâ3d¡4gR äˆ5W­0(JL²ÀÕÎê¡ë†©äù1çe£üCCç^» ^©™g™?M¡tj—:†q¦3¦ ƒ+‚(s¶âˆ&w8Gf“eÅB³+N¤‘x²éÃÃ)aúeû0ðì‚GU“qxðéýº)ò1”kǯ]‚¬rŠäÙ‰‡ìžÛè„•ÎË¿Zÿ†J™¥í{S¢¨‚­ÉXžnƒ5^‘Þ¯©Ô•ðŠµ¦±Kg
-,)žeƒÖp3:hJe
-àûŹW“ÑÂíeÐeb
-â+Ò™ÑHkSãz%:E{*ðÁü©¥=ÆJ^h…ÒFÍØ:&7yJð;´P9a4£‹})O2Í…£ ¿”c/†ÕŒâáGkOvš(½ ÿc¼L’ë¸ zßA'`
-õq(/ÃaëQ<>[ŠÎÆ,_½2Ÿ±è
- ÌoZœJ‰8µF\X7ÙGë¤ ß(}"£ŽëÍúÊu ^E2u©vù`*$glÉò{È´hÖº’ßuÕ+÷Š¼ê Õ¿˜_€* ÁÄÉ
-k‹måë™ë;#ðfÄ€oíˆk„›»nÈ€%õ’¢$ošÑ³u—òE0’áJ·
-”•ùv`QH¥Ö#)J ÿYy|¦·Í’3ÍÚ®žHåÌ#ú9ü†œõzH|RKJbÁºE 4¶ÞƾJc•PÑš,"k«~ú×°ÔÈ'œëfð! ݽă%#¢øU•™ÕBñ„uN™ƒÃ¯¥©í Â5ù×ês.Fæ·ÐΔ ­[b+Y^ ÙÏ@F‰ ýµ&ßš%`$Þäó"ï(’¼Æ7 ææžiö ˜ÏyíÖÁ+bòdÉn?À%(¶»,
-Ç dÜCÜË
-¥BÇóØËK€Âï¥ÍYǃ+½™#ààŒŸ )ï)Gðš& ϳ÷›*Ч¸+ó óéŒSͦý5IÒå}Ž¤ÅÇèF¶·oêÓ*3'WØü³zƒR>ô6ïcä0³’LÌöÀÄìŽò’"ª3(-%ë„ú06ÒR 1—Œ=~H /h~+Ê›YÌ¥u
-¯ŒB©ë!Ê©”{ãHØ3–ù”÷~Ac`˜áÍ8æ·A§ë“Ï3hðÛ CW¸®Q`5•·A‡I¹óôùNŽ1Š8XÕꩳ1D71&5zy* tª¹}@Õ&™ù±17Ðéºô¡ÈÄÈš½ :ÕÜ «Ô1F¸§ô6èÔ˜[1Où[ÅWcâø@CØ fª·ý>‚h6É®d·yß ƒn(ÚqÜL‚ MË5u»CáÈ"À¼ JvÌe Ã "Ïô¢Bnf"j±£!X\ ,f•åîçV”\óÞ'„€È% Ò‚³\ñÑLÒ‚”0Ó
-æo\WὈ\Hg2ñ¦¢¦5þ[6€‡øW¹!³ atÈ ?t6ÿÞ*M@[³<¦ßÔªJ3ƒ£÷+et
-û‚yYç ‡O†H‡–N)²š¦ªžÆUW™Œ“Œ²\Ð8ž„ø‡Û!Øñc„ mH:o³‡G¢6ô)kÅ‚¬ÖÚðgWX$¶’Ðkþ1$Z*ˆl›?*3VJ°ϳ¯ÊòçÐB‰^œ4d¬Ç÷±ÎQÇY†Ç¿ñ`(^©W‡”(f \"‚mŠX–Ú¾Šþó)äJÿb|^µ¦¸¬c°
-š|ùX2ç2Ù±=@ÔôÆôÓâÞA/Û9é
-†‹ÜÁ÷2Wu’¡Vo»Š±4Q¹ª?Aþ”®=°‰Â×Øßó ôé îå%)•‡Ë‚úË/v??HÁuÞ_ÊÓӠמ /8@î ½ 8|Dh8nj"¡°µš_âal4<„Ô Qtø"/Å+IoÎù릌8úˆò…çSZB)J
-¬y:#È(Ù:¸šiÉ1X>€¼™…éƒ^x…s6<p[pšLŠš‘g^† C çì*ß„­­”‚@›Pg‹K9_FkIÕJK¥Ÿ“%µ ûë:„Ž²¨Ü7¿i2?×؈OÇD*á¥Ûì8`zø2ºÒLäŠ Ûß‹£c¦Åþ¨þ1"G÷Ù
-¹ª-H˜ñ¢ýYóòafP[ÒðñLIkþ(ª¢ °ºçX0•ÅdŨzß³7Â$ÿVë:¦ÐIœZîÉ©MÙ£”’ɸvŸ`,b+ó‘ò¾ªà¯˜k„Ú7Óòß×Ó:'c<¨ Åråd­y×àh‹o¦ìç?'ЋĜàM‡pœ?þ´0ªl’ú¸JYØjtƒAį8p¡úð‹Þã,%†b¢6üÌ¥˜†lXÓó¦ÑÛÕ¾;J@²}UßfYC¤¼5Ú:‡1+œÜyÔÁ„,…ç^ø5¬Œ_Uůè6_µrÿDåò:§±Ä^n?òŠ Œ”z˜7Å5±}þ'¼\’´ˆa|•9ÁTNœ¬¹÷_ó©ãô@ÿé¢`ƒè$¶,Éu³^õòŒHgCå’ãaèúxAØÜP¸ØOv­[‘¡"7î;}8: Ä\Gͼ3ÑçwΦ饈û6d>d—³€¼'Ã~gÁô
-ˆBzžõ£B2¿.\S¶èôªÆç‚´DÔãà´iÓ¸¼¨¿iÁÏ#ã÷­ÌƲ›èx®W$B&IŠ´Hd0‡5Œ4Ëôö !$ä”cÂxdQ›÷QÄIôÁßy‡]—…€—ñIöÛ×úD«ôŸWÌ+ Š 0Áï~€
- zq¿™W¶ï‰ ¡$Áí¼æA³9ë‚à1mX}ŸDu°- +«Z'g´ÎÊͧ/ñC« 356ÿpGf•®HP_+³#=Ÿ¿£®Ð@wÖ*¤3h¤{ôa„ý%ã>5ÅQ䢡=‰nÞìŠQÙo΢ê$j*G”¯Kݦd×ã¨Æ¶TÉö¾ü«›ñ3¤¶ï£ZÁ™ñ*jiƒ ©xÂÔ_ºkGlßÒ5¾È›²ï“B
-'
-)ýãŠñ9†À&Uaÿ“õ_8@º
-ùAxa/y„1¾BBÊ%rÑÓÌp"1dáäÇ2:¦Iµ~n‰Àh/ôÀT²ÔP}ùŒ]\¢÷ ü¤1hd‘cåчÜ¥¸èô;L–'ÐNˆÓ! ShQcSgºRYŒV!Òàæv¶Xª§™ÑO÷Øà<ü• °ÇaCʬ¸þiÄW:ncwš—Zn-à"bŸusVc)²¸{l&ûIcP‘
-‘; endstream endobj 164 0 obj <</Filter[/FlateDecode]/Length 22487>>stream
-H‰Œ—K’œ7„O0w¨ LA
-Ák½ v"畲ŠöOašû` úЃH–g›c’K×h⃗\¾vg*­B]vª×[bÄ%É@sFS` áÙ ÌLëÐ…¢8 q‚”È•„ ‹Mö}AÑpycRÊ’ÓQs’¹mJç
-®ûsèìDµ!ÉëÌNµ^žúÒÚ€®N*÷ÊŒ2'ñõrZôIêçµ–êÄDŽv*ÈÄ †bœTß›‘qgbÔ¨*&¥žLx9"¥ŸLÍP4ª\ÇÉDÔTû’«¹NÍ-05ýdú§~MˆyG~%ÙðÙ©´F–ï=öˆ_Añ–S°&´—´ô06F‡á‹óniì®Tf©_ gï¾/Õ{öƒu«vR½¾ª³¬'ð›Ê)1I”õ;©ØùÄA õ´\a{ï·â[ç<T×°§&àˆn ¢¨¹2Ê%vv•–g÷ôëU/"­),9m¿J6šIIÛ†(ï¡`êÂÔ õÐo|0Yëß,õÞÛñsa|ÜpÆ`WL"²!¥yÐL•?8èOãâRÿÜú˜<Àüà9ï;<M2TÀp†ÌV”"1M!쓉¯5ö“l›øq­Øoüm“ÙŠÜMÙq²å%Y¨Iý
-ŒøcÐ-ÝÛó~ºY
-Lm{šÝúSÌÍd½7åæ÷ª={òøO" v§0Ëp‰Í¹ó§CƒPo»1Pº(ˆÇà˹¸.ôINê’gÏ Üm¯ãø`“Êò
-ŽKAG —ÐíýÄIܾ‹Á%`‰4\cÅÔ²BÈ€,HO–Òµ¸±Û¹ 8ÙË„àsä›7ª\(d‹íCÖ@’Ò‘“§¤Êâ[à©Ý3ÎÏè'ù<SøŠ}A2¥/úÂwâCsÜ’ÄdxKtâëvÂàÏ'ÊŒÃßÍ’ {ß#„oh>
-‰û.!Ýpk(@:½ d¥jæ™*%½}ˆƒ8S *œ ~¿äbù-=Û¹äø™¢Y /'Už2°zM›±AóFM‡;!BiFZœ±ã4ãwˆ ¡M÷õÃÖcv7•rOQo;ÒÍ—1&^w?á)/ ÔÕ†”øÊmÊèìN ó¸&Ìߪp¶›ieO׺3~Éî¬NOY™
-ý$r.ËX 2À:GŒUT·T¾&yAŒf§Ø nìŽÈɪ£.±Þ™Þ@¤Žœ‰ÖueËP©/O
-YûN….1g°[ :‘ÿ¡‘+L>>ÎÒÈB(EdÕ{êÄ„àsxÎ`fv"¸Ê iø©„0>Ø»²ß %Ž¼Ð™Qøæ™!ìÛ¦Sé’·²åMðYܘ˜ç ,{…*Ø5: Ì&šKæܤ0ĸÊfXƒÉ¤æ4= Rkl‘Jþ œ‹t>‡¾cótáYŠV–•çMˆû i×Cqlƒ³¯4EwE“ñœè¶âdZ¡˜\’‡¤å¦Õáò0zÛ&;¼C6ïäýÉ-‰Ûh⤿ödØr=ÙMöÈ]”‹è\ÚËËÞ¡4ƒ¾ëâ/@Å“ÊÑtßë'¹{cg#
-
-K=q¸îh½Û¤Ì(Âmø:t%Ó–kÌvüýª7ÛÍ” såNÊ/®üù¦|xÕ7Ðï«ÎûF‘°
-º§´%B⺃íÐâÔ¥«»¥)!\x^ÇÙ½N@cT²*»ëä!8L4–#bÅÒ©(hû«È¹Î³e©I=ñP_Û?+Ó«‚¼…A?:~½Ã’µžÁ`‰êÕ¥ð$§O8(;ùÝ?ÒÐÙúth°È~wM«Û“gÚÒÓdh‚²EĸàH𦠌Vƒ
-CevôNs5#ã~ù.AË0~á+
-¾³$½«ìNraÐ>¦¸q$Ñ4Vf ¢óªêÙ¥¶3Ávdv,vœT2v³ä÷M~“VÝB…±ÀôpáðC>@Þ¬í ¤,¸óˆ²ëýc0ãÊwP½>
-Ó߉À«ÛyRµçùøuçyz®Üݲ¢`£jÚMÆ}ì`†‰C¾¾ óØ¡ÙØ÷}éÿ/w$;‹
-¯`ö01ÁT¿!eBRV@AdBöÏw$õ5s§oAâ²Çš¿»¥£óà£Cˆþ·8ŠÁÁÃ.ËêEyÚx1N>þ‡ ÐÀ"ë`Ú.I¹¯:òÄܲŸÝ¶©‚V¬Å#­³M@ŽaOéIõ¢\ áGÉ
-¼¢ïJz”Èv‘ÖÑUœÌÀd k\J~W‡dO ù®/¾3Ìq³.Í—…’.Šèrià0ÏEs¢]ç¨ÉáCšïÞsEŠo8Ⱥ§»Ž%nîjÖ(Ñ¢d– ²Õ¯tô¥®Ï¨ßD5èÿRÉ“
-´`ä£d"P+su“g¦­€ÀÈ÷L«.Ÿ$PäE¤
-©!;ꬹaw°üøBØ¿ÊðÔ¦°û@¥>ÿ³*<}UÄ?5/R÷* H2@õE B°TäR§hƒ²ì
-B\€¥°ÅBÁçm¥‹8 «Šja|1=ç$ì4ͳ‹ƒ%R
-öèVòííÏ·üþ Ü^>ÆDé5 Ÿ£C¯a¾¾ßÿzQ„ÏÁë iJHŠöK“Ôក‡$  ä¸Ì;õXŠ=A¾<¤N¿û9^G¿ÚªQÄ5
-ø+Ó¾‚Á*ï
-ªâl„â[…Rý*eu;Pk|e¢Ýç¨"a‘Õ„; M-?c@ö¶£Ó{*V\y¸!!©‚•$%†EÓÏWžUf`ƒ¾en9¢ÄR 3¾%ŸùÃì·æ-9Jð9“еÆ*(ôŒzƒ¸LjÛd¤·š/áÂî ¾’¦†•dt ]!­tùÂ*‰É™r”TEOŸ}IH/æal9ÖÁ™Ïvæ)ÂBkàØìE&ÞHZÆû¿ß¡Ué”»ôö¢äD…f=¾ÕB¿˜W=R¡° tQ’!Y´«Í†Bó
-j¦ !Ïá-›{@IŠd:J ^9vL±Ï"à ö!à€Öãwp¢1ö4úÆÞ…T°~“ßT³ÏØ$DÄ0¯@§!îSl­Â¥‘Æl§dà—È*yOÇ2EÐ[Øœ%¾ šƒ°ïÈ£°nYè<VpBYæy–— åJd=œª•ÕÁ*Ÿ±ã(²V× ±•GÚþm⬤5¬;ŽÃ`_q¦²oùEIV·hú&º£¾ɨ€K.Øý;x~k*L…Dr‹”ØGMÆJ¸—†Òz‘h`}Ðæ|Ò
-94¥"Y÷A@uL’ÃG8l<~‡o5k Æ‰Â{ôyI+0’5–CR‚­®¢üJ¼ÚÇ[ᮈ9p˜ýd
- ‚˜¹,ÿÏÏgÊŽ£–+qÇá,Æo#7h™†h%¼‹Ó=Ä Åž€#èä<?ÿOGOp¦ã9òECqËK2ª: Ñ¡@idØ9©ÊÇ…A¸˜bŽâ6%m æíE•WcGhlòïÀ^‰ý/ÚÌ(iЕ֥ŸÕ„’Ž$r~\_HV-ó~Ö–ŸFÃÇÿ,ªS•ýb &^Yý°Ä£m"®ƒ›DMM“E™|\_§Cbµdi.¨Î.]9{±²N
-x©ùÕr|*Ê…=§ûËOB
-B
-FÕè1ÖÂÃò,áC‘UЄ¢0¤<ÌYGo SWW¹*$%ŠxtlqÅ£%à
-„æ É¢èDz¨þg™ D°[ǾS±Â2ÂBãظ"悪%PιÙÿ wö3ð¡‘ÍX)ˆq§ÌðöW›÷uãžìâ·ëZöF´•a[¬eS2ÓÂå<.EV‚·§·´h?¾ƒ”ÀÃ:~å‰0ö*š/QBÿ¥•ŠPþì
-ébŽÆÉkªAãŒÉ—ý3ìàTAm§$w‘ß\ÜÆKØiä»6ò¥$:L?afBƒ½H]é2 }¸fËK
-Á>J8”XÈæõ»×éêCî¡›Ã5O«@QQ"O¦à
-ѸԠG˜ƒÍ5ÐÄ'N0ãï5ù‘c $=*¡O!\ˆBÌŠ¥"@Áɼöêl)½øÈéù…³mX.®yŒÐ= JB£ÇI…ÿ®Q~ygÓóÞ/*”OªÜI]_+|?Íœ`kWúËWn@]Ü´NB$…ùÀ£—ˆ ŠÜå„RÉ)!}9°Åu +Úê9 ©Tôâ Ó÷§úªÖ(äœ-P;ûû}–›‰p#îánTûhµ°y=J¤Ñ²áЧoƒ¶åÞEc£7KÕ«/ mÃa§RMü¥lá
-s¶3„W6ª*\àÖÅB ¬®°JEà`©33OÉÆÔN‚÷l4Ë6îsRY­
-4ªóš1áŸ&/iJô5Üvž&Ÿ&ù•u-ÁöêI[4ðùçÛO¿½¥÷Ÿÿxûéï·üþËûÔè Yç™L òÒ®Â.píï©Hû ½` PûK‘•0î ÁV‹—ðⱸ Í(^:¶v|™ŸÎ›³IF¼›µ—U³"…NqÊ2Ò¤ãNÓ‘fr®¯Ì¹}z”tùÚž«À%âHÖ§S²ea% ²è…=}²Þü¼:k>ýú¢h‰úñÚ 'ëEœÅùëEv±åeV<%`&g‘âÒP‹àDÌ(éjÙä!mõ‡› Kÿ0^&ÉqÜ@=îÀ00ky©[pKÞë÷‘‰–X’:ÂrXô'
-ÈáŒTëVŸò^4OÌ—uYuÆ»Á¦]æßÎažøŒ(fœ»õ¯®kVÂéÉÍu«””‚˜½Èµy›ù†mAjW½¯ ïŠ*·´ „€ìá"™}A <¯Þ–—[H°œr•V,V[ £nW±Ž“= ¬g¶sصºJŠA  Ü+>˜Ù;B0NFef¤d6 P$;‘Y¡ Ñ­÷WÐa‘pE ä^÷ÆJö[&&$¿ÜÃÏhÚØ[áËH¤µìݸLõ@Â[Pˆa†|ð«æ•UÌK9€à@È+”Gâwîý7ˆåÄn¢?1ßkUqVܤ€h5 4ù)Ľ–‹”0êÂ&–4NûœÉ½5õx+)[`WºšìR„ªŒÂ8sP=¥”®ôå´ §e‡Ð*q Œ¨‚6ëç3¦°mx4 S¶}¿ÖøUPe
-¡:I.(òY°Õ#uoé!ü0_écE”¨bOëè“• ´®lcÂÇT<ªÝ5›Ne‰Ð
-ˆ] 4,wÚñ|l𖬀[ÇÑpEÄüì€W©ªÌ¹Aøßt|ráv€ø§ ^JXpõîÙ­¨DÖ¶S»8È32śƒ?l
-h}
-í@™ tøÜ¿A"ò’ù'6ÂJp
-s”Â8*
-ˆîàλXéâUÆ¿á#f~pëó94JåÔýÊ%ùs’¯7”ÝUäe/œÆiT–9
-yðOÉ pa$Ä»ŽUOxU;'¨îXš´]|ãR(Ÿ
-óòmJþ8€ŽóÞÞ ªÊ¦Ì¯‚žwðð¹@ßXá¸\ß!Î.u—'ix§Ó¾´rhœ¶ab*©!ËOέ®òîŒ~Þnž\BÓ
-–êmADþ¸$¼ûÉ,È_ò.Ü?á”ÊÝø @e(
-~Ý íÄVÁ̺A¾ $-X<uwk¦Ûæ±-Ä×®‰UŒ‘ÚŲ»$Ìë¢`3hóï d¸P± ¥8w§2‹+”q+Û‰þi ÂG4ÈÛ$Uö¥&ºGº@Ž WBâYhf+wæù ôÝ©Þ@†Ÿ;AX1ÛzJ‘C~+K,[œ•œ“çý0^R¢`ú¦åx^–j)žÜê‚Dí.$IUíÂÀsP¼,Áåø
-:U§Læ" Æ»+áèJËŸ¯p÷¢ø·ÿt^Ã6cÇ¡«T
-šN¥Q Rôu °cYº» 𙑱õ2B.œe/B-á±”ŒÁåéˆ.P>v×ܘʬŽÎOª[-Ø uÂùãv B‚•P€rûƒFu $ïLî7Z;@Ö—A†JFãïΙ°gf¿ÂvZ8&‹ìÂ=Âü0±XÑh•‘ãTÚIئÕý(`6‹òÉvõì ¤Ý€
-™q¦hlà{Fx¦ã2ƒ€FzŸ‰8çÃHÝ¿h;­ó—×áàûrÛü3ÚàUø’ýr½:¡]uK6¡-cc$wVd„ƒù; ¼›rÛxò’6Ó]¹6üp™ëÜu¿Cq®S|¨ðaпuêã••ÑvÛ®J& |£7ÔËy_'(¶€~1WcU©¾«ceªœ›!y0Ù ¨$c_I6›òb'Ô´þ®Ž‹ÿÀ4»XŠÿ¢‚kè^tHÝ`sÏêÐú'Ï¢!Ë¢ w¯wÇÌ
-æuŠZ…±Ð™E÷ûùã úÖúÏ#ëÊ,2²C|gããÌ8®xn*œ©±tÕo¬!ÃÍ2+Ns¡8Pµ‚MØEfÜyVcÙ##b„€-gEÖš£=±ôx ^Ïtyp‹,Kƒc³`ú|N“\Ew<²"÷’n£ªÕç虺î¯âá BËfÖÀg¹2;1˜Ñú ðˆcŸo¾1#Ó@,øð
-wªô§? —ÍcFš†‚Ÿý©¿¯§E!`lbS2«Û(З¬ ÅÅõ½Å8¤Xü×vuµ¢lh[]/´kù ÌËæ:&B§­©„YƒÝˆ(µ ëÚ…”9)¦:ÆÝ9ÌQ@'F®Û@bö¹NÅCLƒDeAY©¶w‚’W$Ãi= .½-·…½¿5.WÐ)¼ò¹
-
-PÓCËgR›Žñçt$ˆ6熸¸ë@£
-l\ò‰áæY¸ér@»DYÃpC=ØR&YÄjgóª!]¤µfAÇ»ŸÁ=6üY
-S"«ËÃ!PÅ(–e#½ö&â‘™—qq•…/PXÚ™6Z d
-‡]<=ƒºóÒƳtno)QÆhÇ
-.ÅÅÒÅ_Óñ\ù[#´Q.Eï/Š& ùÓ Ù/ªt€ßâa¬(¿[EËøÃKpkC¨™+”m$b$ÝO#JðÙy?jœöü¿_ü×?ÅÞ’€H;ñ·=!–%û9IæµÆ.½Öï‡.|¤ƒÉŠÃ¥(ßðÄ^æd»ž†ÆnàùËöa”H  ødÆ\ñ I&Ó/Ä’ñÉw´çv£†]Bã!ò
-•áAï€|?ï%IŽ¥ád]øç?÷"ˆ%Q†§È§¢+k™ãâw\jA”é\OWlBçæ<^Mš˜*‚Έâé¿‚z*À²%4 á%\«I°»9¿ŒþÙäWvbBFÒ‹¬À^ ”<;˜TÃ4¼d(Ž]9\l—ªÃÚ†2ýJ’g1ò?¼KH‚äE˜3 Û•Åv˜¦î¦°)S6Œª2"?V%Sz
-”+ E&ºhA˜ª'-ÌÐöJÃõ/S_Jq˜ÂŠ/¡*(yÏ¿~
-—S*¡ÀîâÅ’w‘20·’
-Ë¡é]6¶Ä> @¼ÊþÀ
-'àôQèpõ@¼¶q{ö÷’hð”’ø±^ÏÑ °
-6öª„ò³ C’îÜf)“‘˜Á‡ßÚùÔ¯˜ È :‚Œþ¸ KÁǽã„ÎmžÀ±r2,ˆÊ?>õ[¿?lF!îÙjÉâ¼¹ –€[}ÞŠ¤œ7Æ6dûêSì‡Émsºt¡µð)øaï©L¤HˆÄ7®K“PpM½?φOV…ü‚l
-ÊU3nw¨ 4 `W•¤„O¥&S¼Ú+±CØêÆ ßÕ$r5
-B@gª^Á6(!pßxûÙú”8Ìy@?qÍXSH0>ÄRADcèW[Ü´þÌ ŸÖΧþ\$*“á04áŒ.EC¼ JÖnS4Œ\0³Ú¯¼M¡/k<è`÷
-zÀ¯°¦uxšYäáÑ~:(MJ2ÅQ"€ÝÎÞÒÚâ;S@ÂÌÁ4‡˜8"‰˜Ù¥$P±?0¤×s´¦ø8>œÈ5q~„CªòÄ£`“ðnÅKºô×:ö@L¿¨ÅÊò¢6A0CÆ3·
-[#cÖ_À‚W ¡1À¾[< wPáa¡¢0 º@G,û9 ðÀqppè5|Ó°Ïà6×wÖnl©ËÕçùÔï©]*@YÃ
-ÞMß»ÏgA¥¬õ%'}xÙFf¶ñ…kP*K ˜¤•ºó.Áava¥¦WÜ]ª€J—íîçŒ7Á•e‹ã6d½b¹Ô4£DK=4€ÐµžëR§«#õ©„¹—Ží”õ”½}÷¢DR0Ñœ¿-ÒÇp¤@¤¹ó¹Õ
-f‘²ßGË?“¾†ƒ’„Izù‹ådVPx)sÅ°¶ð‰,s7E8# /±¢)ìpqºújßÍQGk:¡Ö°[I|ª,FÌüÂdu2"³¹·°s,
-Œ‹©¼W›îA‚àcâ±K›œ ¶…¹6!€é)®®æ W©ä‚b¥>å2ÉåAô0SÓ³¹©8㽤›éd1ø™)S.ô7OÅÞÎËÝS²6-Ò´Qïìd#Ó6œ«Dm#ã —“¸ç žÐ+é†ËA[pk2¿ÕIë½N‡š•NA¢¼'†„ò‹iAr˜ð®‡QuS96)éx¼&Ú“£´Òò‚Põ•'bWÑéd䤪2q8AßA‚ØJÁPx›+l°kyCþì]“24ú`OžÄ’e˜³Ü„
-l1~R;›+X¼
-ül§&“L0¯›V¨BÒÆ'…^¯º$¸ùüŽDF–6Ìzì=÷
-Òµq
-í²¬Tâoƒœ=Ò‹¹í‘
-!ÓÂòôÚƒÞ÷H<kÕæÖûI£MÔµ©¹{¤W‰Ûþ'……´Ä^íq¼–90YÃë]­39¥ª@Ûn‹¤~42ÐÊPôø°HªÆ•ÙîXCØú¾HJ#´ÈÀ¢y[Àm‘<»ÝÙ$ ·è³4Q°1ŸVÉ#(6Ú•ÿ“M¯ ãN· ïߌ©MsýÔN*e¨ QÑ ¨åfi7Aˆ9ciÍ "¤Ñzð$•m‡¼i42fASgÓ2Æv–À×IäU³†»ª}Š~k²‰8ƒùJ똵?@‰Ñ.L0™Sÿ3[H‹´+AÁ¾D9™]¸ˆ]gÕ¬†Žìó+ºÚ ú¶ mG¸lƒÉCƒ…FX=Ô0\-i O/§oÕª\Üy6Ì•öʼnæ~yaBNH?Zw°ØÑš³vû¼
- cz
-·B$â¸`Ó…å#Ä¥Ğ˰̤9¹éä‰s‡eµ“0–äÃrÐ$…æ@Ob>µ12p½Äê«àYˆ;ã0‚|G6»ä…Ø—<Kg¤ñé„uòP4º¬LoÑZUIerXY ˆª´¢µrº¬LHÇàÜÏEå³ÕT>‚¼’¹n˹g~jž#ÈCåóN*ÿ8£ •CcJàPxð€Ê¡RŒ¦afX]å „EŠ±æ¯7b$¢
-_;nµÁé†ÊÄT–!hcóë • AÒ ›r •’„¢áŒ¨L¦“D™E³¦ô€Ê
-B½¨ðâò*ð-nq?ëx8QDŽTÖË{c•äq/Ro¨¬ «{ο2|0îYL‡•ƒ œö@Áb{<'¤K
-âìÅeå€S4å|ä5\+D]¸>Ý“›ËÊ„dȉ_E¬Áeå3äde/æ`å#èdåãÆ+÷XùHàÉÊGNÓ:Ê陟ÚbòL†¯ßü®‘IØ
-š[›ËÊêQþbÀqÉúÀÊjõZ(4˾òÍ%Ž9Yù<‡• vìQ1H™„ò¹¬¬¡¢t”;D—•UòìQ9S²ÄöÃßaYÉ"‚8´¾kuƒ\¯œ,„øTJ…¼ä§sòˆºb§§\XÚ
-Æ®c²ö]¹Ø.<YÀ4¦¯sÞU'ľÄÄ@TCPøtN«øHÁ¤ÒþY!XÖˆN®ûªq
-m¦_^±î@h)F‡YÙHg3³†WQÂ(L±g•
-?ã@!ù~Nú/¬Qó,ß^±Ä)%lÓ?'#{ ¸9U»qAijBŠr[! NÊö)”‰9€z0åÉ$9É6J›Â`¹ æ½®cxïTæÉ«ug ¨<·0BÞ:ôëäözb’!þο9gÏùÔ/‚ÞÔÀª÷ Û?þ£Àˆå°“Å,Ìw¬âÒÖ?*A395ßOÂ'Ë&˜* êÛ:ËÆ ‰·b{’è*ªçâÖ¿!/¥…‚™-ë+-•ºàcC#42Y[7ËFìCª1WSƒpá à]ö©‰ëâ«|®»Ó/Œ ›—-½ý} è(¬´’MÍÉÃir»Q‘»r ÿz»džáq)Ø9x¡_%üÂ,D ;‰c@“PÉ”å£Gã
-"M!~Õ¡Çà@VKjïÝ»q]Õ‚ ¤º9*‰}˜)ÛÓ‘44FÎ@ Ç´¤Zölܺ׺WÉ´bSˆÌ³éöØ8Þ©ý¹Ô^Ůٹ"¦’Š¦Ì`!YÊ&ÿJó²8* n–”õµäT¸°O1§mwt
-k\oˆÂFUœª±¦FÙ×9UŽ7Q@frVËõ²} eaïm2gqûúã¡…iPpŠ•×¼ßsüÛ Ê
-œ["QªŽj!Räp¸$Ê·™N!“$Šñ©¼ØnlN„µEJÜ)OÇ
-Eà0S.èÓ=ºÃ ¢*u–|9[
-PILžô0jž]")v\^ÐŽ¬—d€9k*â÷ è#c
-q‹P= Þ’¼ÉfØóËi˜9©óÌ‹]§VUQÙ ¡I1™v†´ƒ-I¾‰òšÎ,6—ë›ÔTŠ:ß>çÁðÐLT
-Êb`Os½:g¨¥¯öm86SŠ- ã]©($~iæàIŠijÍ^¥G £U&º8qaAªpl<OÇoàOϧ82͸dÌñ¸o>ˆ9
-…r‚v(U =yª¨èË@Ê•¶¯”(Sd¼kg+ˆ7flqÝä•P
-\ŸgÀ‚}‹¶ÀXHç06›v£ZvcèŸúÍq1ÔÌîVÞÕÞdÔµ¿KIdØŽÂ3€&ô>W®H×}nû?Ž+«y¼|×;@œÄa81üö0ìY“ æ´¼Ëd²YañUЃ&}z_{#>-’t滕¼;öŒÁ-cLඦ@„Í”­æ8)¡H¡pg9¤²dºóÍç6f‹ €Q·A-°A#h€ g!lKkD31Ñ §$» ÖMž›ýC2„™ŒÕˆ}iDîÇ
-±-îs"û>1é%^dÇ»Y Ùøq¹§:®Îi‘enl™ýÛ„%ÈpDá¯^½Ša¢+˜¬ãð«ó8[N½ëÕ¯Wùóú\êÍpi^ï¿=®ž»â6k¹: ¤‘„ÖȾ»Îˆj=øK!Ö+çÞ±Kl4¿•ãUœ3ÁØ9¤~T÷Áñ>õÞsÎŒ+ÃLÇ\6Ê9‡H“—Å-Oÿ6øÙè±üãÕ«’bvƒ…é犤0"HN%º5~‚<öêãÍÝõþËa ú#Ûdﺿ²è‡\„‡›¡÷è=] ×$EK¾yª|_B;Xë u«ò}#{"LO 7Ì=Y–Róÿ6ӢѠ~õª5î ©¤ÿFà÷ÕyÞ,Õ8WEº¨zùË—gžJ„Ìr>õߺ,tÏÀOäàªê·ÞwŽ±Ý±b^)1+M0ùk8z%¼¢gERb ®Oá7øcAˆY8q˜ËݯAdä2xÏUxíí=*LÂöqø«ÜÛR=˜–$h—áÌH6ì¼b#šÃC6äÝL•n·FŸ±•µû§ô}•>áê_…ø–÷+%zõ%NYãž®Ž¡æJoMW²&`¢i,{ÒŠAZWa2|“EJ¸qý²7ý $›Ù¨úŒMïË"éÎØÈ„ù›¥¿
-’îˆÃè.‹1÷X8 2å«¢Ë<Š¬{gÊòÑÁ8äa{]QHÍuYõ#•‰˜HmjÇ®ag™Ã#ý41‰ÚãY´ö)’F«øy¤ÎUÅÁx±BeCRdÕG&>TbŸ
-Q£ÐÌáŸÃì(<1)ò‹ûÊ¢2 ÎÌ <™i듹³Ú@i‰Â,Ûùñæ€ÜV°6…³q¥çWAêzæêÙâ' ~ E)8Š³Å²Æ<’óØ®ÊÜ•Šýèc^u«’ej‰Sêáw ¾Xj͈g¯ ’a®!æéýª[õ}¹¾Â$ÎquNˆ¬9 ùص¡E/hÁB(JŒà¼n.k-5‘ Œ»Y ·:?ƒV”WAÄüõ
-{ÿN)wLРi™¶ìë“+Éšä)4a=A°€­Öî€>/@ÈÞ ¸nÄ}[Tù¯HÕ©ü"´´(Ž¶x+hŸ"D#$ÂàYá0$vAlJÀ±î¦wª6VÑŒ?H„W”‡ëÉ~ˆF~Ñxó ¿v‰MS£ìEƒ@cÙßUŸ ‚ú— 7Œ¸!8«pxÂT"ÁùÏó¡Ä^Pt99[C)pnØ›RJ쎔È* A¤H
-,ÿã…žü6ô¸•FÈ"mDÇ}oTÁcS¾áê®X"ª׵哨)£Ð%ûÑ0C°TóIMǽ¦ïçchUîIÙÌhÖ<ùZŒ›YˆØ#L%÷]°IDq =A0z°Ô„³#Íùxó1Ræ$ÃX¶e Í2'‘Ñà¼b×ɬ,ÏD¢ =äÒÍÀ`³ Çhp´xëâ&5µ !¼4W?h–ù ¡LÛ+ÇÁúÕÉá27f,¡ÝrÅðt°+‹òº·\Båõ‰¯mŽ)ùµ© "­-Ï0ù,Ø¿#Õ?$iéq™éä@äe°m~=.~„hšu
-~„wPææãÍÅÀ¡2ZMÚôEýoÆJ”ä`¾YRqn<¥
-F‚ðÐÐ+¼±g
-TçÁç#»-87<ªqè4
-z¤åÏŸp·¬V~ûŸ 
-2Í¡yD‚f¼05
-A` ¿ÓyL”‰¶¾&Zr~¥†á!ä‚òçîTr+7ÔVïF¼®6qÉvÝ'jPô¥ÚmØÇ7[kqïý­‡åh’µ{ùGsoÀ“Áˆy·KÕÅ­59“ÁË¢iH÷#‘Ò@5­ëd åx±Ñ—Cp Ô‹Sø¹qj‹ó§õÕí°eqÝÖVƒ6Õcâàʲú'7}U:3ƒµŠ÷gÅ)Ö±r
-dÛfg q ‰éôþÔŠVfÚr[FM¯¾àãs¼KÓf2J±¯Ó@€ç¦›ê¥[’ ƒDB¸XT.»Çmc¼éöY®ñ^¼Š±×(Í¢J¶±¨×öLê^Ø Ró©‚ÙØŒ§j%€øK0FJ¹ËBP°ŒAÚÑNL’Ÿ†¶àÔ$ÂKN]öºÊ²!@ÞN©l|L†^;"5¯ £ó§.Æ«; òIßç›®þT«Âô]dCÈ|0e äjDŸ’äøˆI_èóH ó`¼Ö„hMp\3Ì3ˆ©îð²ÄN¨88骷Ã3Ü›§,O–Ó5Ÿ6Gb’,0­Ivù†¤FÄÓ@àóom¤^g÷íÁ~ÄËSù4¿@n)iøü8Eö¿6îZ.½“îoŽù§Ø K‘¢¤u¹–Vèî^ýÕ2s@APûê÷Ä\'‹%ó5P-ÓˉüÚ°i°œÔ«^E†¶é–Ö¡âT¾Âæ§'*úz(vºcÇ
-8w(yLƒ£‡ž¦Ë8„§†>GbþûŸ
-ì…踥â­a ]Ë~btk¨¾ùê}‰´eéõ×qžAÊëç$ø·7MÔ¶V¬^ÓÄ£þË@ô Bj¦òÆ6É äéÏÊÁ ÷v´/‘þ*V¿/‚Ç}u³7Z¢´ü]*äYIJ‚Ò(l[gbz°9+{&ërzMÇé ‘•_;œê;ÁµòNìæ…L,¼NÌÝ«˜÷É%ì…L˜=½0|¥)¬,?1ržKQÀ³›Ã!D”5í«I¨Ÿ²&–q:{‚ùéë.ò­Y?ìö`‰q›>]«iŽ(ô8©« 1lª±üõÅ;9 LÆD,øï ~›T ›žó`ôïþåä0Ü;Å@wÜñ½¥_C³•<¹Iﶡ·!†z-ÍŸf÷@©€¶Ãâ¸K=^‘TŸ!¤€uò2°L*"Oܱˆì 6b^ªKÂâÝgÅ»g8
-68s“R÷à<bJH[U³ä[qaäÞ¿ƒCñc3ÙÀ·â¼.YªV{*±
-]²ƒqgý „уGe>yªüSPgþqér¾ñ¢Q–©uŸ ªAÝx|Oný˵v›™ Bþ*F£ú9‘Ñß å5(b½áã=H”ßž”³éRÉdž ´qWÂQÍ9®!á‹;€øN .ø´~x7X‡îÆÓ+²æu!¼ÙËsJ§Â.fÙv¡¤Æ°ÇÖñÊí ^|*ëAwwÒû1`„?[†]¡XLl÷A§­GÓ
-Í5·câc^ 6 ¢–çD8œa¤*åŒX~{V¹¸ƒÒÜÖ©p}íœýí@&sͬpÌnÙ ¢mŒ€«<+oYTw!Ç*LÜ­þÏx¹äÊuÃ@t+o¾”4v†YŠ³ÿiN‰TÛ¯[׈¾’Èb}°|s’6ðâ‘ðp89,þ>ˆ,ÊGÉmô¾x ^E…{š®’Ñ06³–jqZ‚~°«|GG©ˆKåly€Ã@óœA?7VUÁÊ`T'‡»zã¢1äcÉNEeu¾ÕK0ƒ§åq"!ùˆ×¶ªù¯,ô‰2ÿN%ü°È´4¾Óyc`+ó|(¡ý<<”V^G½ÁÊRh€ù•™
-%ö¡¾öá½H£¤U\Ùm·AyW
-ƒÎ–ó„‡Qc `$Ž>\Ñšöj‡•Ã‘P Œ<¡\¯Á|0omtŠQmÊiب´„„"„™8G£o$—T¢L
-´~Id,9`´—Å*ñtw-H"ê¯.Óf¡ã•W2naícZ.÷ؘ1,÷—qè[IEãaÛ)-zúÎ,¨É„[”)ì0ŽD š²Sêã)…eå†HŒ×BHË'†%'ùn6%KàMå¡ä›iý!oûõ·&6@bMl‚Ø:œ3„+ìšò·ŸEoL¸+8½e0lå8¢ßiy—Àà
-H‰”—Kr\·DW =p¯(ÔcM½ ExDïúN]àÊf7:L;–ØÌ
-õÉÌr›ÿÓž‰þo)üè}úCF›:ÅZÆEëMSÅôãsT‡™ŽémŸ4Â[·œÒÂ?.HØhÍ­}Yé=­E—‚Ä£›»Z³q€üúqlFªÎ¯ÞC´Dͧ²ƒ±ìªš&3
-‘®Ý¦«ôÔq›=cÆð>×Mõ5bUï²1ÓÇŒ˜Ü/}£žÓ½ëè×Mó¡ÒdDwo¤tA² ѬgK{ðc#ØÁwâ¾é¤BøI
-Ãg#$ûí4P“IÞbW‹îSøoÚòk5†)÷(}!òîòNVùäN"£8•ô•CZЀ¶rØ¡‡Þ)ŸˆSáŸ? czôá}ЕA3ÇwAÕ>Þ†Ò˜J-×Ñ1ô‹Î¦ÐçwfgXBnP:IñÝõSõ,ãã׈@<T¹“qµü¸ K:‘Ä*>¬Á\4®O_Ë "Å8¯íøk]¥ÁÓkd2Ìæ̺Ú:G¢WS‰÷}•»ERÅAb
-!Fb°ÂØWÑn¿¦Ðs]ŒÖà‹³/y‡ƒdrÜXçT1¼^໥…ãé£ézxÐêfØ6•‘’ÞŠoí¾ª®nLë¸è·H‘ç@«¨Åõ('âJ…³±˜u®ÁAbú†P×9f“f ’¤NI»X_Ì
-ˆÙRèðzÂòlɘ 2²¯â«£B|AŒ&¤ýçùçåèS÷ûªgP+ÝC‰½Ø!S¤VE×¾µT«iZIj¬üÑS‚lÒ7Âä×>œƒîü!´*Þ62¿& ò¼Îñ™H)_s?Ê$S4M6½þFn«i-€ôÛ»sŠ¾¼"Ÿw4põ‚Œç‚Ì™¦Ý­É†X °™‰îGM:gº²·Ñ a—1‹õ/]$ÑÙ+9¤Øèú€ƒÆš†Õ˜PßDMÆEPqC€ã
-«ûqï*ÿôâ‘N×ý;è´]œ@OÛEA˜bÆü¸]
-‰8à¯CÓ)= @þøå×n|Õœ„’ÊEWY$WgËtË… ˆi¡â\º…ƒ¸U‹+ÆåzyI¢Òhù€îówÿÚ÷˜[¯øF2LW
-?›\ñ€ñ¡Wx KìBLe*°öVÝð,H‰Ò4–:9ý±å%G­n–†r¨âº… ç×lœ_Äv!ëKò›ž2‰ãi¼„ùRñwCŠÄÅë4ÚÓ¡
-:ƒ”»)έaIR5Æ1χ‚ †C"\I¯êLï!.ÅHGì(©ó±_êÉI»Ì\GŸ–¡¾˜™ÅèöKQ ¥N4ÊtÒÔ­_Šyè-„S /ý·Ò"U¢f·_^yî´Ë Ä}ìüRT͆>*Ô äuËë~œfùÍhÚüv¹«HèIý”^fD‘KLÛ‚
-c^XÝ^ýi3Êyt* =b üíV=ù‹£J·† /h®3Dy½¦‡A¼¡’X´^ó’óĆ&JÎíÎŽ¥'ˆ*öA&JÞÁ¯öawüõ—ãáIj•=Î秺>§ëxЂç%•úäxâEéÃV»3jqCb¶wJ«8 wÕr ežg… ìcNß®ÓÂý&\€Qa/£|8Sw1»9ãë"<‚ÍQc “•ÄhüáاŠ]ˆÃØaMOSÞAĉÅS$×¹`&>é΂ÝÎ ÊÞ*qs¯ª¼„q5+C»Ù~‡6õá-¿@Œ6\–f£¨©¹ë@×T^=›!š ÃÈR(W)ŽaÄs5dæÕÁÐë÷—JiÈ%ÞºS)OUÖè’ K4 Gr#&³¼Zñë€HÂO'€à8Ì
-‘¹šÞ,h|'¿Œ)í°é¤‘4ÖÀ¶Çþ“‰„²ñbF!ûr=.ÀŽå%¤ÙìƒOéÒuyëÌÎ"÷0jtInƒoÛ—¾>ƒëv¿wÍÝï*”ÇcǪîí_"³dŠøk¯Žñózp¹–­]]¹ŒŽR¢ž)&Ð ‘3¶° ¤Zª¬ÎQ\%
-8•±•úˆŒÚtúÆY³ ¹¤SûÔ D²çpªÙ™½B¡¡´||)ÑÆHòÅÎD$¢UýË“羑’χðÊFžá‰†r"V÷:D0$ž¾ÛÈ…|ß‘XÖ6ßËK³)Ï%:CöË@$ú™q§j+Ãb>c,CsuÖ¬õ†Äb J‹édn¢â{WÐ:"ñ¦<ZLo*;géS ªJìŒ6ZJð0Ìá¶1 Mj\%oýÐ’Öƒ0þ$úÓ:8d‘rÚ©R–/æ /þ$¬Áõ5Û/‰U=Šô¶“f6%1ÓÎ ,ú¬$ã'šÆæL:¹•8Ú¶û
-õ„!7f©÷½Å4Ã9¶sÆî@/€­sl·­kÁòl²H¤Ä6 £ýgüH\ÈWÂJ-¢:ØÔÙ—WŸ¬œðÛ‘'šHŸ¦‚xd¨tr ®:]A?@Ä8‰/EdúóD/Âè¯±Õ éW3»…]Vé3ðb&ºy®RÁe'óҤ˸³½Å›Š8±P4‰ )s´Tö:°ŸÊfš_d5Ø*÷Ìÿ{{
->DßšŒ_|Z“‡|ô$¾/ØöÀì覞CW,0€Ø´ éòÄ«×9œê±‰A²D)ÒžÏ{Gô Œ»ÒTK`÷«CÔ@Ø!”æ`>}Œ",¦)›MVã¶Uçj:§šl gö¤–½Nü„§PU ¯XÎ`‘Í{&þØk² (¢„>ÌIâ†xR7¤ôÚ5$Õs5MMI¶Š²3D— ýí\p” O%uÞ\º©}CzÕíòðó{Ö trÔ;¤JÕí%Î:hS @…ºA*ü™Œ'ƒ <•Fšm†W½€LT¹aº^_è†Ù¨Ãi@ Bó›PDØÅx
-šÜúF¶Æ£Q^)úbCcÓæ
-’s¹( LÖµçÕ…ÑηJ"t«91L˜)a» ”@ýÁÜm!¾·sý×`?ÿÄ…*^\ã©‘„¿,šÖͬ1 bJËÇõÊ سg‚£D>إˇñ*!²5êÀ†hêG’™T²•›íšDþtŠû:I§˜¤…SÉxr† ¨}Î Ñ©T°R:ÂÍ¡­DÆ™÷5^An“á¬YvüØ6¯ {XŸÓºdåPÚ]6Ž& –¦‘>Œi\
-ͼ×aðI®¨ô!HGl“"()zC"ÂÉ«ò©â@Ö§úK¶Rðšwë¼®Óqå¨B@+9A‚ÂÐU ZŽ"ÊÝNEÍP’&ú¤m•7:­Ršôìó/çcʘèˆÆø°-“X¸Ø(/“ä8’ˆž@wà ÊbÖì¥n¡-uÿm?@–º2‘Tõ7“}5FF
-l>É2Qœÿ•›’2™JÜ%Õ¿ÞAòÏg¬*ÀWSÞ©Ùqåh “‰‡üíÕˆs€BÊÒ;*ªæÇ|°^3BZšøé~›Ö@KÈk²µq4Ũª C"‹Ðø=<ö–„•ßÐ69œ¶HX½FÕ‘-—æ†!JrÔZÎzº UB$ã§Üχ½±}Ó­ ™ÝYÍ@ßïZKhød*¶.
-¢Q<¾wÆáIÂe¬Î9gp,B®ñ¨Ubã€LBÀ²BIã
-x‘âÚ-AIˆ’+/}þð‹NÊéò»E•3e9¸¡áÔ<fWl{ŶÂÎæ'sˆp7*Í°¦ô½ |²eˆ‚oÒŸDð9 Q+u¡×œë€c ìSÀ6Aµ—#¬ô²’-bÒ÷@A /q)N‰ƒEd8¢ßqwÏ<qî®<çÕÇXé µB"‹Ã–˜£ÂÆüƒAÆ¡ ¦UMŠž ‚‚Wœ,âXÑöÍ…gªÁ<2§ ÌòÄŠÃ bÍùo¼úÚE²çÚRZmüEJŠ¢LžgOëÐÙ(ÅsYðolú¹mv¥,kI¸ñÁX CNøŽEºå!m`›sJGQ§W%iØÇ*ÁˆK†áåÃ)Éå³ÝXš¶KzŠ)­6ŸK~íOAC|fªkwçÐõ(Õˇ{|Æ„Iv‰^…pÂ+æF ÔŸ¡k3ïaœ‹\”ùE¶HÉ1ÝíK‘Œô9æΰuûš×{Ãcd[º‚#ó
-Ø¿!q6M‰(ZQ‘ª¹)ŸoËMp1ã÷.‚ª™Z—ŒŠ°æp{æ—²®0+ ûª¨ÕšKù”H›sW+
-Ýšš(éCæ Lp}UŠV‚ø(âͺ´ŽŠ®˜ŠŽÍsÊ¿qÕ^÷—ºn3{Õ–™ã`,\@kû>¦4ú‡ÝÂÖšd-j/ »„%€] *u;¼3e‚ÉÜÖ¥ÈCªŽ@cqÅYïésä›–™^åa_nQ”Á$rN<&ÑŒÈ>!ÇlGWú€KzïV‚C•¥L§ä×Æ1…žU7üs&óo41·!ŒM²¨» É-3 Ží—š·A.Eî¶K;bLyß)ò()»Ji5&§èëÕ± «ÅcÔ§œ§ø{1?¶…¾¤°r¸ÂÙpKxb¹%»µ;½^#k,²ÙÓ’©5­ñ±T<3”Ìïæ]¢¿"Mõ˜{ˆô†ÔjÆN›„£„bqŠ¾v;(³C[3@[aÈ÷·` Œ3|øtì¯ï&àm¡ð8_÷W¡f(¶}¸´Aƒ‰EpdìÁ³¤Þ,=Õô<gÓ…oÎÁ
-ÄÔ@ìB“ózR~As úþ1¢*PfñëpKˆyŒClŽîQ:5/¡òË+’I("ïa¤ áóqê7jNÞÃ%ؽÀ•I±Öàÿto©5<Å ™ãüppUÙË =µ ¢¯Í¼Qk¡
-«4!«z¨µþ*f)Cg"uD(qXIlà€·c(:ù>Öú Š+°N*ÇZ¾®
-ýM0-{ÂuFùpVŽúÏ0¿y¬åËêžJl)ápî‚Á³
-XK€ AÂ…#ø÷9´'Œ!‡í¸O,$G8 E‹”ö$Ϣńá¶Ã®2œÐ‚iSêç¹¼Û^dÛ°ÑɨHßÑŸDB{RžvŸüˆfî¢6Jl,ñá´ß¸ï…òSzúñ¾ÿ`<G’ßîÎ0¥©´Œ]n­áÁb•|þe¼ÌÑãØa |ßA'ÐÇ}‰•úJ­û§ï/=õ í ØÆ°I P n®ÏøˆG?×N,›
-äVZó÷ó_S@ˆ^—êžP@ZË UMÑ«±¡Eq,cjGªË"—;l®2T< ö6C5fbÒ<.Ïé¢x7
-Iæa°@$*\iÏ$tX€*ôW[h[ Õ~ mE~04]øã—_Äê1ϱ­ëS‘F®Ì¯`‡Yj9L—ˆ\L›µ§‡ˆ—&òöîB+W”³P£„%U d¸—T—‰‹ëÇ·_tÖý³^Ón«pâ¸;gè"Bõ°…gsáxTš‹†è;?hÒ·dŸBáÑÕÙe4ö§àI GQȪve`„W`á˜û>§ðÂ%d{Ö+b ZZÁJF“¢ÏâÙª_nMiÀ“3¬¼Öý©Ç¯á5
-@ë9‡ =6*$…Dæ#óÐbâÞ }#pT½;‘"Ž%ŸbB‘³~ByÐl¶ËP_´~}3á€j0„
-{4è²<`QA>²•“³–“1ű§©“zÐ]˜‹%œÛB˜e{ež…ÑÂ:·ÜªVþťߺ1k&Âái‡¬ ¿nŠ¤`̈¯äEªF(ncíu‰EæìQh»„zÞBßš%ÇR“Z;˜­¦v=dÊSD¥3P_×è£Ò.h­/Ñ‹Ý1ª/‰£¤°œ_ªNÉúÞ*O:ݽ;‡Lk ¨ÉGì¸höµ9n UO<(HN6¿_j´±Ì.¸Å ¼>D§€jsrÖOvÒuñžE@eö4¤†€±{Ͼ–سFbSX›s”¸Ú1N´’ ʈݛ¥lF€¹gJ@%ŸYþÄ„ˆh
-”%}sµ”l‰‹Æ¹Ìø‚v„?]Îôóÿ~XÀ.ACBhvf„£nõåI
-8¯÷eÉì긦$"`MnáSÐÃÞw»:;0i,ô`~7Çæ¤=_äÀ¸Ù1~Ä[Ñ‚pº ö1§¸FOK×Tõ©"_\ÓÜRÔD¬‘íêóîT‹é[éˆ?Õc¾•à\VBáÒdDFbŽT`<0?ùÝ áܘ‚‰z'pn}ëïH:+§EN¯‰ËÈž5¥sGNQ‡ŠwI}q_oF ë:QI†jã”—!XTƸõØû'ó…z=–£{²"0}1Ð>mOñeIä;ìCä
-ÀYƒœÎ.AÇ
-q#g™z ´<1šbãäÒ\oö„üŸY¶=+Ö,ÉÕÓ›Ò4–íé0&œ.ÎV‚#Dš)6§ÄºLSe%NñÏaäa"ͤ–£É“
-)™ŒðÍèvÈ¿!J'Já{:(ÖXNÉ…¶qè5 îpþç+Ü.XeˆR‹ŒÐ3 ÀÜPPZJ?k¾X»5 †gdÏ1€Ÿ½Ò¢¶]B$$ã %1§dÝZ‹­ƒÃRýsXH¸‚Õ‚Î,þA¶:š5ÞÀ`!+²*$g+)d‚Êz½Ax-b¤\6â}Ü”ËJÆe OýÕ"—¼ù\©ä‡®ðú—¢Ÿ¿¨äŸ]ᓽQIÚØåa òC©ÆA‡†ß…R >àÞy-nåîx.ów˜ÅnƒñA9øóæcŒøEB¨oŸ¯
-ª¢Ûay¯râ€nµµ¦jÊÔ#JX‘1aÈ78?ÎfÇ*qG±°Ë'Œ˜îη´t°(Æ+ 9ã®d·×J(Ÿu
-k}´I,“åÁê†!E Ëƛʸ;‡`‡*A¾Û
-$'‚
-ýk¾![_êD'¶*ï«y9g,~—,çh—t¸Á»å]žìžH¤¦è tÉAÃKo®Ež?æ>M*JD)¯•ð©…Š)˜Í Š§
-~Ý ˆM»5 0 `¨¬y¬(”ò÷–¥D°›ü ¬93Ë8ç|š‡’ã¤IdõS
-žXŒ>šc1¾nŠOø·ÜiÎÛ*!nUp(„nÝJP‡qü.ËÒôÖD”KJDY–°ìnš tù|nV+et*‚ˆþ¶J$3ÚíÙÍSw9w ^2í’ªm'yŒ‡îÿ¿Ä>…biO‰}î9:þV6^Тïðƒ†DÄÐ7ó;I}Áä‹R÷ü¯E "?YEм£EOP0 ͸›Í& Y˜²ßEQѱÏOw€ÿÜB÷œŸƒE‰‚%»4ȨèG:8Q–òŒ—9nœG…OÀ;0V@ô¾„S¦>áHtèûû{]Õ#§y
-ðk˜>Q“C £»&  ¡c.»¼)­ÞÝ=eŠkMSI»©wâ@rŠÕ3
-ª¦Á×-),èðN€;Š>/ŠcÉ1L¯Í‰…Â’ˆÖÕ_‡ìi^Å¥±SQ®çBUL„]±ì›Ch?é¹Ç5ÎAàUJ®`ª
-K™A”Gµ­Hcˆi¿Ð„ÎðºJ¸bý­°#ŽÄ¨6«•¥å¾´l·rðo¥/â‡o¥`$/ÔÏ
-ÉlƒükηßåH«lVÒQ¦c¯`õ,T¹m ›¹¸q ðÅ°e »v‡Î™0nÊE‰`ÎJð¶T³»SÑ,ke.È
-:@)ÊØõPóy®Á œCsÄû-š¢¦’9²í|©P›e“àB
-g²?2Ð- 4Í#LMÆÌòÆÈ uÁ>1y³a NB‚+¾¬4l=àÀe~%¹tŽš8ZXöV]¢ŒŸÎ6¶8BVM)û:#cv!òÃn%™¹VzÙ¤.f,äw1±((á°ˆŒeS&(1•…á‚_°y2"ò¯ž!Ø
-k«æÆ%c©nv*æñe ýP²í/B[ÎvµŽÁƒ¯üâE†°ØáöËëŽà§!#Ñ»ÞòK$<q¢°‹8?’Š:ä¸Yδødx#P²ÁàjŠG!¸7 ÇqW3•{Û6)ø@Þ‚8>»R.±ÙS[ýÇx™$I‘ÄPôÜ`>ȧu÷’[°…ûoûýp)ŠÊôhÀ¬+K链þ0q³ð<‰¶øt&œ'›C~à¥óË@ÛòçU¹³”蔤±5ÑøÍÖ0R¯o%J„Â¥NK¸©â´+ºÒò sõ ®­Ìä%ð_—QΩ[ìÄÈ)ÒÊ>¹—ÐÌ£Õ‹_J臧0!Þ~4¡«»ßWª4}ÒÖôK-ñ!@Öí¶ˆ¯-r„mtónš"/>…«ŸMԟ̘|›,1êÏ:3Ë“9ÛÒø¬âµ.Ï–Qrx€¼SÆ<}?Q^ãÔÊÚEl30º±ç"~š"صA–/!æʾG
-kÙF9i¯£K`»ˆ©¿ç£Ý«&7HDI§GECÒM:|\G›v€”G³ÏFØ"v!4@+üÉ«3J'Él‘kr83¦¨·~O'K@'ᢢÁËŽÑ^à,(O¨éÊ<`8ðªXµˆLÁŸGÜ.«1ˆ Æ‘*ìJ¶¹
-ÈuÜTñ™r@E&^â-1/>oÄÅ_c§Œ*?T|ŸÂZº¨r¥ëPÜû·¨òTdâ8¢©Þéë.!>.¿¥Ÿ»aß™R$¼ïƬ'¦1M{W{Ÿ†<2ú®÷‚®€¤Jz*{þcÛ³­î¶è×à¢×]Â`]Ï•#>03¼0üª$ã[á¨õIŸ¡ê´Ø°j~¥ÄÙØF$çBÉ
-G‹+sðhjÀÒ
-Òm†d0Õ7!C©â £wǸÁ."ÀUŽ0h<4dÂPÔrœ¼—roBÝ]Óû:/ <acÏ)1¿K.¥µ‡MÄ ¨D#s~—ñM´Ê\Qq~]Jà|FŠŒñØ%Šød‰>tƒS·)Áû hÍF«GÌP‚YÇT-2e>CO5x#|_gØN
-wÇ3Á³Åb+FŽL{øÝFAŠ¤d{¨N´öä§Áð+Á·»dàúÚÀmÛušruWNIˆ‹­ Œ&ϲ3}`L–à–]Í2Ö|*¾nãÐ<pÀ má‡?—ÈËù‹/(–CGŸ±¶|»îutd ¯6óY_øW¬>STŒ:çHóP‡ ð‡WOë R vÜNKÀá­£ë£<ÜJl£Àˆ¼µeÇ×gÉ¢OåS;¾±¸Ü²˜±[½õJ4›³¨˜‘)Çž‹­™ &ªãÌÈQ ¬ÅdŽîî —,ÐOðá8"ù]\Þæá"%=“¬Ð
-NeßæS¸üu,¾Ñ+Ú
-? Â?Šˆ8z’êÖVf­BpŠ–ž¹†ÊÛNs*!E™)…£GJH\…†:À¨)fm’§J SJ”ª¤
-xù9JÄm¬BÇêzÜj$QÂlÅ:`”yH¡{L†ësŽ[5p+Çç"ÜfŸ|ƒ
-yyüÍð¯?nòû1èÿü‘ÿüŸ é ïÉ[¡»Õú÷Mü‰Ì}¹±‡Ža2û½­ 6(abíi<ä„àB‚¬Ï}ÌÌHá;–íaTÓ—l.Þ¶§‰D×™ÄÚªO+‹Ù iȽ¯sNmsŒêôGU*eƲ9$pecBA`¯Y¦¸Šg£gpHò™o
-¬-§Ís<‰,Nùæûx\ rì†A¬ó™L‘‘BLC^þúõ
-+Oæ?o&21ý+g|œÓUgA²½ò)’Q‡çEŒ¢•‰¨£@¥,P¯9®Â7³¾Õ‡ðtÌ <¨sÊ—fQáhDÎýö6»qÂ%XÛÇæ1NÍcZa¸ìÖYÖv'JÁ’òWV<¦ 7C³ð´'ÓðÌ+2ˆD8—¢*K¡`¯«PöĈi0|ÔµR’;²§ )J`Άcy!£cÍ:'±¿ÖŽìÝ@š%Å!øäX{ØMÖcÁÉe^@¿@Ì
-UÄ,umH¥ q•&™Q$¯NiÆça
-j7Ôø¦{DuàM„Zò•
-¾+‘²<
-9ŠrAÓB`¼”%Έ‚Aî ½´jô|òHÒgkGêYᶦ¸ay
-ºd#ócdË2ª, 8ÇäŬÑîÜ%µhÔÕƒ¹AðÈυ
- ÝÖO d7…ãðĈÊï’7ç
-íµƒTž©·«'}Þ@| Ö
-Ê’‹?D­€åÞ£åþ=–4k´Y&ï¸r& ¢i>CLèáºo–~mé;+m˜˜1‡à¼™#¹±KN‹«Ô,¹‰ææ Ÿ¡6\éç0iH=÷s¸E
-Œ‚Ì€ðm\Wº›I½bèìôëQÊ”øV’{<JKpÁR’s ŠÓc º¹ã4%$cï¬8•¡º°²»zbWÕ²"Ì+ÆÂäð² ·]@¿Ä(DELü2Z!÷¸¤`bÆ\ŠŒêÕú ‚l#N쾟‚è°u´†.ÇF°½z8}«Ï°°&ÿmQd¢ßO8!‚µDaµñ~Ê3ä¸ñº
-òCO;.Ä1KŒDÎà‚s ©$K˜™{t–ðh”ÍçOIÒ9쇽nj\T4ù>éxØÑc&·Ý¤o_Cøˆ ×È<ù°;d°÷”§.1 %¶ýl¢©&¡÷š‚i–ÅBˆ'ƽ‘—öAŽ^æwz¤¿¸X/_ÊçGÇ l\ýUÊ3¬jÁª5+WF.›lù$ï&œÐE_=å§ÁAÐz©’cD0¸gË»ûQ™,-úyŒ1SÄÑ”`ºVñÀŒHâuòeü*ÓÚki^ÙÍ‘-ÃØ9gw¼É÷ÅZ}•’WH¿L¸!χxºeÚôÊÙíO?Å6™*LÑÕ4²ÐØ¢„êa>ðT°".!¾§%£‚Ðt?ÇÈ/Y=JlÚJS&jތЭ|ÿå–þ>¦
-GÉÍ|5 l?Q5ûòýxªŒâNh"Ys¹ª_ú¹-»gÿ†Oœ‹âìˆó÷¹l%5ŒìÓbOØ›'¤ÇÛ~‚ùþú_?¨Ð©cGx›ö_*0îuüÄ|~Q7H£°[´¼öŸb.%ú¼ì‡ ÷®u »¼“ê1?Á|Öñ¿*äu, é?¤™ÊqYÌô˜½"-ìÃï+ˆÔ†ùÄ͉,µ#@°¨¸aä!»Ãg ]gu‡àh?È'™\b øÅŠ?E_Øy¸_òÕ‰[š@¯†%<uFS;¶YD†•õÐf„ÅU8©ñ#;Mú*pŽ'²*cÂÕ¼ìCÄ#÷-YâoˆÛ<ÞoæÅŒJöè§ê-ѳä̯ÊÅT…4Oâ n)²M„^Ì„D†T ì´ó#³€ÏeåZʷ̶oJ_’­„){ˆ~ ÈA¡œæÌ3Ã[§¾é‹.ÐYæ$…¥žòïÈÿ:¦±-ä­Ñolm]—woÈ(;\ œëZ= \ª²j¿ôÀ¯‚ÍèJ;!Šn"‰=k³¶‚§¸|r‰‰ /¡ülž#v^}$AQ¡fYzÝ”%Ç”¸F3m›öŽŸsärí<ê5å»2ØûÖbXtÖ‡Áð]Á»bј#Fí/¯¥‚b,'QÚpø)ÇŸ
-$/˜ÁEy’þÆÛ]ÎeÔ”ñ§çÉ“ ëN3ñkg:ApI:t(—OfMEp•ûâé S1T²ž¯ïÒX`NRešW[¬`@Ë«O±–ñÌŒ˜?½Æ´u´tZÌ(Û/f¬)>¹B“7)§oæJ)êÿt—Yr$! Doä
-ö'Ά”Ž{–(éòG“ Ï%žè]•5Ï’* $M‚¤³éð ©`h>55¤¹C'‘Ÿ­!åº|7$ó'#á«ÁSëœÄP† —Ÿ“Ø}AaäW k¸GMÞÝ+»5ä2³ÿÃHl¸ìÊ~þñô fÑ×p·ù&D LBœ¹¿C7Qh¬Ç±Im)Xðp·ÔPQefÊÌÛ|ˆvHë|Q3ÿQD¥¿ìD‹T3þÕe΂€V!–y¬­ª8ÂØQ1í0PózNj(ÃGÌæ.B5Ñ?ÆGÛöw*ÙwSæc¶˜FÚP$õ÷‘)Ë_žæýWÁ‰` 1^Gç ƒY¨]Þ—É«$°ž%Ó†œª·LOzt°­d¼qŽbïLõT;Ål99 :Ì!¸ƒ‚„]BÒAc‘Γ¾æDIv™¤´àÕåÅ
-ª
-ÈNÎ!„åðä%¯<GÑØŠüΗ ÉG2ép“kyŠ{áÂxùdr„>Š™Ï%•§uøÿqÍ8öƒK¡¤ð(ó,Á
-ït0k4gv˜ýËæÑ|¢ÇÑŽ&Ÿˆ·A§î6Öíûõ
-|[}>Wï®Ïæ‹y0—fþRŠ†‚–&ÖÝÕp`
-E
-ƒGàä”âØ–zÛ"åÆà âÆZ–ðäŽ=[§„g2V`Ðûã¡útPI$VàRÚ€FµÇ‹aªhLùÆa²Šì›ç –žL7Š…‡Í¡t9ï‡Ñe‰[“O竦(€&Ëòà5d€.åâæn`Å5:ïO ‡ýÅ£Ìç(ÖÐB ÑÓ¸ÀO‚àJk¡C«ÆOãøfEZ [‘~WžµqüW:$‘ÿo±_õO€
-H‰t—]®¹„W=x×DñGÏ™ 0OÉþ_ïÇÕÁÉi#Lb—E‰,‹Íú{ÕG·á3^ÿ›2ßC–÷Ö\W÷Wo6Þmhó©>»nˆL髯hÞ7¢7]n=|#¦…4ë1¼éëßÒ{´µºm.3ÆXi Q[£IâM‡Mýdéð0 1õ×Ïÿý诨þF ™Ú]Bû+Ö|ý~É{YÓFLóùÚÖÄ¢ StU+ŸÖ—Oß®Üu ™}%
-Ôd)G Û7Ò-ti'B JÊ1²!‘LàhmV®Ú—q”Þ¡¨Ppçð“¿æAz<Z¾ü‚XðrÒÙZ…â×…cS,!<KHÄp{€T(åCz²÷ý”ÙáFÓ6ýÜ…7"÷º!ä¶Ã”7ëMÂ9R“„hÌ9†wé£00Âà뮂ñIˆkÒæTa6›äÊÚ*Ò©Íu]!ì’e:—@6¡nkÍÃΉ¹5ßÇ´1iÆѸõFè$™.pØ®HJ±}ÒU™…M½XBZÈË,êÑ Õ\è“
-ÞÓi"šRë˜ljÖzUi-‡ªsÙ{„̤UC²åõ7H3WCÚÉMã;žÔ¢•%ð̆?¦Oá=Oš>Ìïì S*Ú6…õ=zò×›„G•{ çHClÕV“ìŽ6©÷¤BYŠVuíŸÎqHoš™¨PÙµ*ðËg½›P a¶ó#¾¸[—dFû’åèI¸ózjnEWL$ÖWy ²:ÉÖ¸ŸôMjÒe Uó¬úëI°¨“¯‰Ô+Rÿ,|(¶ 1‹ø¨ß õ—€B‰@ñò“P}=kõ„#Hé˜öòEÎSùÛV~”‚O"³{•Âßð~¡
-ô1¥ø½1âÒÏi±@›„‘bèp|$›""E°Fùh¶é{qËÅÀâNÆ鈀¶"
-é…Qæ«tê8æî,§r†zè†Pß6v»#”iÙRßÈýFÐòšÃîÞ#WNTÓ2HŽ!¥׳™(1/tÙ1Ì¡Òý$.J‡¤÷=¨á-òÓ¡Ž T'T†UIž® 2èG´‘“sŸs‰d*rëÂœ3º"GÆp9FPÛ™AÁ‡P…PÒbÈ”<"„¾ ›1{ý*-”šÔIÄ]9tÖQÅh\ÿÕÃÕ°:1%G—˜ ÔBȨ7M„–cgã4(—ãP4ç<œ„zš¤AÍ!Ús!ŒtBAè† û¼U‡±Èv÷ñ
-Öðv«Z9÷§Lö3B‚±NßrN<\øÈÎ4¦ Î*šuh"Õ¢4$:ÓGuqfÇ›eÑ×æ(¤Ž‘@Õíäx‘f-¿…G¦±¦G…¢¸Ž]âYÂãŽáa¼k…b*ÂZ*îc>
-]׵嗷Æå G¤éóɸc¤:Œº1%Šä£žä4ÒKé_ìç…¬ó‘ZÜ‘þùJ§‹0,™ÎaTá°]k=ßFßü[’%ôÊø
-¥ÅS‹íÇ/. › !B¿"2 ëW1E:²4­¸Ùé()0GŽøpdõK$™— _ãÏúúõh yWº>`X10d¤‡ªin½Ôg
-µµzu
-bg„á{ ‚÷œã8v,…„ÉEßÉäŒgV ¦‰OçÌlexOÎ
-Âʘk }°ÐYè.†Ë,”’´ Äÿ°
-ÐÎ}r ¢e±v×$]#=É&óœ„`Þ-{xT­ÒP,Š\Y~
-3¦œØ½µ©Ñkl]7Hh‰œÈÙîGNÙYÒB­:G(%OfÙ9òŸöu툟?þûÑ_ÿd<è‚RüжŒ
-ø6·ã=ÒÑñà¶7§„,”¥/|ªî$ œ®C±°ÀJ<÷Úç>‡1ŹХW¨¤ í—æ¤B¥æ¥M±sJº<ãOg Ü¡ú{9£éªW12?¸¦m’ÐK(BZç°È4Éñ7„´ü£¨,îÉrž~BE®J_>o±Ä"HÛæÈ¢§åÜãx^tEÇ'ÈwGù ”–"ሠ¯Ô9š£„ÞÐjöž[nŒÉ^ï&Ut¬*L&Ù]0z‡Î`hˆÁYr&5–’¤—õ§ X öJZ‘„{pZp+3¤àoÌ­”ÏH‘‚Ú-X’šõéœy-ˆ»q žUBÒo=Q=mfƒ¼
-…UaŒ¤ÊV¨¢¤KÌêÿ”—In\IDO ;èDÌú¶ºE½bÝÛÏÂÝS•ÌÈ*Ñß³çÀ\ ¯F¥PB¬§µŠ1Ɔršƒ§ ìciCˆB£TyÅšA?ãá,Ž7rÙbb˜þ]ÈçÏ»XŒF*%”&<—ˆ.$Aë1Éß7ý«æüBž’Éý£Äó1 …©s*ÚÁ°q¤Ää)( >®=Һ꒛QBx‚,°’m é¬LÁʱ‚Ð&Š=£™†a¡R›íAZ¡FÕÙ1˜]ùD¯"R•ëGOˆ<’¼ô8ƒ×
-¦,_BѶ¦¤3³_&æóê ¼'ñ~Qhre¨h\Ddg2•‚]úÔCøèÉS¢wE%›ÀY¼| ÍuNlIÛ¯:½Ã«q_fùÚÏÖçjÜø¡4g à¯è|„ÄEx+ÈÏ?eM@ p+;†"ŒšY5¯³á­q¥qzC„
-»4åQÎç¶ ¨ËoÉ݃J…Pÿ2ß^¢’ªðÚA“(}‹ÖÝBî8ôzŽ”LtÞ$þQTdWɼ™¢úçL¾È@Êë¥_î¿õcj¢0[ZÓ ÕµW‘l·s–À–îb.½~yþ¿~Ü‚Úq´©k×û¼·+CŽ¹çû{Ù0~”½ž—!„v]­Gñé$‚üu tKèm ÅÏAD“žìÿë Ù˜•ê;¿[°eŠÕWó‘!†úsͽ›C-Å‘"¹ï*„¬Ö¡vÑ׫†½t~ƒÞ÷Ö4JF·¶7â— ÆÑ®&ÐÉL’G°ä¢M„ldŘ³| ñ›´WYØÈxwh:ÕÈËTIÙ-n:»?¦V:Pl¹Ë…Gÿúq‚£FÑkgü´ 2eýåì8¤aNbàx(Û<ÍCÐÚY×YbýÓY­èš\Zà<@³¨9?>]³ÆHÒ±Tº,fW$™w4¤´Íx ¯à%“^ò(˜-dðÞÚK>›ìþ¨&Ï‘`ÌhQÑ4Ì1+Ž ©-RÃEIúç¨Dí¡¹„Ä0<wúë:D² ÅY±xe1XÆTBqÎþÚ7 ຄøMZi@ l¿;G,ÝUˆ5#¿<Ÿ²µ’ü³©|‘-i\–*¿ŠÅ %€Ï‡'gÊèmVÚmçt‚N.oV¦z
-…®£½1š80îÔ°x¹¸!5ФQÖ%(ÐÉÇ!bbèóÁÚ€8ÖòC,›ôZÁ¯ø"ÊñHaž¬¯ïž!%à eìþHùrZKfîÓvÜÜg·©Ù„ð#¬íç 6oIÆx ;ÚïŒ>f —œ(-7½–E#ùüÖëPIâRˆYf¤ßLöÊP1gºvÎ ÝR$G‰bšüÁS’fh[È_?þËem~t’º´8å€É"ýß
-¢hæ¦æ} úu "«
--Ô,Û‚¸..Îðó[b(4Þª˜¬_"«¬§|€Å,é'¶_›Æ·‚n·myx–ŒÕÿ#è–—ë¾Ôă|,°Äég‚®Aøª°‹™Î-DâÁæEç·{H?-€M©…¬Û„€3Y;<'mÙ5]SC‹g ZÊÊ°­¶çòqA ¿ˆ‡P¢²œöB—i§
-íËÎáž%¸-Ñ7=A1‹®Þï‚FÈ&4ö›…FÆH˜Ä½B¿¯¬n›dø9ÒZñ'7¿,„
-ªY@¥üÉ ábKÝÃÈx‘Î6E’¹Ìu\bí7\ˇ3øqÓ¿ÂÅ/cŠÁ`¸üG÷ØY¨<K§„Æ /Ap:»­»·*g š­Ã¾óå²Ïï¼È^¥Û'•×“þ¾„\”?°N´÷~‰¹<ú¯ñ'«=Ù
-pòvØr’Ž6Y2 =ùkHþÈ‹"³+Œe8ÄoÑ Mȯ~?$@´9YŽp‚†V F¯óÛAã!‹ôö¶ïÄ<üçŸócI,š Kþ<º÷5[ ,YòI#AøŸœu7Çᱞrb#ùy"&>Ôùÿ<œ<‘SŽ®HzYÂþSµ›ì⧠}»JÌð¥3fEÒ»€H&<ßö„@‚AA[ƒ»%,(4¯‚ŠŒÍÖ% } ñ«p6KtbÜÁ ,„•ºŸ‚QdIxµ’‘ær4{N é‚€É/Q}» ËN %ݧ{-·™2õÒ‡Óĺ,—ÜîÉá$=iuôH,¡¾s{j”¨±D/5nÂä©4LʨT¡Ú9·¡ž)¬<Ñ÷ÕŠdÎÞô‡„xÈÔB¢'
-0aH\5ÑsÁ gA ìP9}°íˆ?(‹‡`U7!\õMÈEa2²§Cq¯A_Lû——“ŽÐǃœþTTêžòšgnnA«0œÆ-Ý{þ+bÀÅŸ\å©Þ]ÓB
-7˪ïÎ`¤zèJ7GPq¦Ñ\™ÔËšþHqFX×î]ófWjy¯Ó_\Ôþü€'N;† [¤°úMÀ&¨Ó³ßÄK7 oøMèLs·Ãéÿc¼L’à¸(zÝ'``J kyé[8Â+éþ[¿d¥nTX
-mØü,
-ÿz”c:•Óü;L2œgA€î±
-=ÙˆWÁ,K?v|'’×™§ñÌíècëoˆ¿’Ç ä¯väþ¨[bÐ{‘åŽÂùsÝÙUBVöÏ+ˆ˜¡|Ö!oèçÇnÙI ÝC¾¡·©tPû´(W!Àx”Ü3\Æ:-òÛÔ4¡²ÙGb¤yÿ° 0 0?jY$¹ɸ@òË@¼ÄÄ(’'Wÿ±8IÌ ›ùGö¢Z(4*ø£¸ï#IóȶÎØvýHElc÷^4…=¬ü€ÐÝÐÒ‡ÑÙ‘)ŽÛ
-‘¶‰Ù9¤—ÀxÁžÕoÃþÐs~(ùÙGÁO“§¢„3½|¥GlÊÔHæ?6´®ScØÓ)_‡ËðWQáN¿|q’0IF¹¼|C2Ϙ·ÚÚ½~, ÷0œC‰pú·.ì£Økâ@¡£#l U‡þ”Ê~ìÀ ‘i1@=¦bV©ÛÄ=§å~aãþüiB*ÏQXU‚-b|Ìíó¤_êù"‚aÇîÄwp * ”|œªˆ“G*ß¼Ò²óð>L|_QGgÜ`ãIm²áõÿpuÈäýþ³.ëYEÿ§„Ð>+‹Hù>d” ÞƒåZ:Ö^½8…ùPXªýTTÂf êýY2^è 6Œ H-òYFËkLcÀKÒ¤Ó½å:[ÕmUñÚ·ÉJ˸!#ƒʶd¹YxW;F|°EĸriU샤)a ¦Ź n¤çÝZ8ÎVþÔ"ƒB´ãS¿Vïâ[^ÜeÚ·×ï`>”‚”¡î·i»WÚÍþÜæëU –LÆM­—{uà0Â[¾×¸ÁÙxÔªaêo½´>ÙÐœï=‡·Ç[à45Õ
-c~rÚ¹ÚŒáªÌ 8F®ÙR+1vP„ßšÂnák,8" ЯJt¤ˆPÑÃ|aX=¥²&ŸŸØµ­ÚÎt„ˆXÁÙ 4ªx}wÛæÖilpy©ß.9ÈÄ ëÚ „Ž~—¿Ûèú% s¾lIÇRzŽjòâb@þ Â‹XJ.(~ 1A@°ÀÛK`SáC¶ØŸÍ[pã4æqßí'á‡iËÝ)‡ëMl×ìð‰™/ÕN§ðíðï ócg&Ã÷WYPOËЂ® UŬAð¡‰q“]C®ªrsv3\!I©ZóÚð7ÆŸ³®ضõ ð Öã¡
-âæ_+r@èk Gr¦ Za79jÆ«ŠÙì-ÔUÉp¡§#,ÿæZþÓü¼Ã…(±ºgGBh7nªÐ°ÌYv¥Ôåz¦
-ãÀ“*Û¹žM}×+™·Ê²˜šålV¯û;RÊòöv~a¦HÈØóv¾°¶Û«¬è'ZØ$IðäÀ±xK@þ)N–”¿&ë1#
-ÖÅíF’Óx2
-ƒ†“ƒl}ÖÕ%qÛôhú•u“¤•xUõ£ G©"¶Ë×A‰«³ÝL©ͳÿEÖ|xÔ\§óôz<" éþäµãù’Ž³4~Å”¢ŠìˆßGÄ•Ô^ºCP~Â+u‡`‰ŠXᤓIGR/¡ò ˆ’’p¨qŸ²›¹Õ°&âê
-CD~Í„@èc™=cÊ0 àJJÔ¢1æ¢(ÇÊiÊRÑ™Ê"­t5ãO¤F³7Ba!x'|6ìùN…‰‡l¾»,d—KÁK´kLNŠ}øX½ÈãFMŒÇÅûý;ßÚ°×Ò™q®ºýU•2¾ÕUÄÝXf
-ºO`V«cFÐ¥ªuÉ qÅ[UN=¼ èÇTV{ÌÀƒÂñȘY ¬° 'w¯ ‰N@Ê\„ô ½%zõh¯æ’Î_
-M]H‡3̉*A{ÙDÎiý#ZHÌ8v •b\£xSá_¾ã#\è_± e¡4”Ã|BáÂÍ/ü¦/ùÜ_ᛸg–¡?;•ˆŒkz1HRUS† ÒHøʯ,§9p`]8“>äö°w3„žQƒÙåÁŸIWÔ j±¿¸* ‹aFµÐ”hµ®"ÉáÂJÙS Tivº\Zå8Vöác¨jÇ1Ðî_¤¢Úy÷ˆxw&=™úG‹ˆÎ0å@¸?%¤ãuºQBøñJ?󥧳x·\"^a£RxØ”ÂÿIn°ŒW¾v“é¸iñ¼ÅAD®Á¸³Áþ&¬ ,‰Zéa•ÙV–¡¹©R?Ô”o¿APLvc‰
-B(´¬d`—|±!˜#¢ Ô?ÖKÚHM0MÅ+$·g ßÕv×Av¨ O™žÏHg"ƒ$¿!Ä%œ±¡™M Ã>ã(ñ:TÓ}C•ùa)“åó‡ÍÄkÆ4)€2ÁRt‡~"¢+ÜƆW¶kÅIÄ!J#æó\ºÇÇɇüÆS–·næù¶*J@2¹n ‚KDšÂÞ/=a åaÜøLkëú Yá.åz!Öœ›õVyy "Çw2¯Å‚/#›!EOP%ȶZë@ )ÅG¥8o&w‡|çMEñõÄz`VLv¨žÏ¨áC[){ª™0Å?‡ h,”‹ÅrŠ¬
- ¬¸Ï)rÔoÔÓð,;!~[[žåF“䈳óP¼y0Jåâe†V
-«q ãO¨ ¶.á5Ò9SA7'DAóó©}uê˜tзwPŒ
-³rý6‘…†©íiYÖ ¨‰ÄˆÖ®”€ö„Ž’½‹N®cbhÚYfI Å‚™ýpi“6;$0‚W‹6d…‹kÚ“\0°”½ /9¥é­JqŒ’6†'{vÚK-_õä}Pcã]vãJ 4â£0úVnÇq'Ùî6šÔE²{’pW&­—HDÌOdgú9Ø?‚6u^V¾iZ2l¯*Ø8ä(ÑÜê& 7ˆKoÆká—çÓ9¬’M”ù•!á,ä±!Sr#a*Ff8[vFíòQØ‚Y÷R!‚eòmîRut ~`ÞÚ´+K¹¹ Ê "—#ò¡zËBa»ÅFKn]:¹=¥H}Ÿƒã˜š×TM³xq“a X¶ !Ý"â)3±Y7Š•‚žŠ‡’1h(zI¦9¹K2mŸC÷%: n¶sPfVºÈ”·|„œý
-#ƒVŽ¦¹«W©nÉ‘Ã…/æP<¯)–3eRY ƒr,ÕmC²P·’3Ñ8W¼ákü²Æ!SáÍæq3Vxód Ƚˆ•Z2·=$µc:ª·:¶¹g:“GɻL7;Ð*÷ YÒyOm‹$ù ­û´îÊëÌÀüÊd<ƒíbœÇ–*
-v
-ôIIKÃY Æ©mÙ¼‡N•)$Uãz5²9Öuôt4ÕjÉd#QÁZ1üö Ü"3A”Z¯MñE¡n+Ê÷Q1o ßO B\J  GͬÚ\yŠˆ }€iÞ„»d»¼‰bQ·iÉ!3ìYùá]XByyãRð7H¥ |a úcî ³€°ý¤‡cPÜ-Áʸ!}ƒŒDÓüù‰/Ú[™OçL,*ÿŠÅä¿£p¶%p2+Ù*´ÅOa`KØ"‹Åjúƒ* ²lÇ´Ýí‰Á|a;»"UïL!Ý]¥ªVLsO ÞˆÓƒ|LäaµÉ˜Š«óC§×J‹‘žòp ³Ï8“Á´÷äÅ„ÿúÄ©ÿÄÔÓ&mZDÕ]5_V§6&ÖºõèçôoGC*¤B£œ/a‚P‘•ë¸Œ?{ZÃTui®µÂÈæ
-:…›PsÐö…–”A§¼…ûT¶øÍ1ø¶™êM´ uµÛ ‚L@5ÎPκt‹ÄBi3•@8ástÝG…‘|v’üœ*O‹>dÓýÈr{„Ã4C‡Á‘éØåwR˜Öᡸ=_4î6ùh ‚F¦ZßÇ0—ØIq Ñ&–C?ÀM‘Y?xz‡tuó™éÁ,°!Œmâ
-°yt3-ävö¢µ³Ö=LAŒ¦ ‰À6„Sá4f¬Øe">¬Ã-ÚeQ1v‡X< ]&ö0
-uJfÙhüÆÐo“e™Áí<œ8d× º/¤²
-P"`ßÜ $²»J °‚„ˆÎ€Ë'ß|mêô’ôòÁ#p¶ÈZˆØëÂcâÒé,™<à$æ²C‘R…¢ø¥=œC« ždXFñ}‰„„3-²kÁûC‘Öá¡´ÆùªZÝésBü¶Qˆ‰¤fÊÞÌìK%ÖK†‚‚ÕŒôÁ+&ÆOÝ$‘ ÝŽØj©›Õ¦qY}§Oú¾èŽß|¸rI·IåΚ‚-DÇŒ$2S’E
-Ô“¼pïj9†q8d¢¯s\¹Ò©ŸÙ0LkCfÈßRÔZA®ÎÎê Dn3®q¶ä0…I[i±a@6(BW‚ðZÇü!OE~“²tO_¦ÔfÏüËʱz‚ô YɘëÁîžÚï±NÇ0iem£õ‡s´ÿ¨X^s-šÜªõ…Ìï¡¢øjà4¢ïH‹E:’õÆç7ÔŒ¿lj8AIr tÏ×iÂÑwùå!ÝÞñ)Hß vcÀÃèÆ7ÈûÄžP+•ýëÄZ7}?±_ùAsRH¤ŒÚ]ì÷Ê¢ô®š¾¡Rµ~ »à+à¥siNÿ†þô¿ŠªëG“­zá)™$­z¸  ý¯æ@5è±ÙöZqìKPLþ—ñ:I’9¢
-ÍÄ;µ~X§ =Î…°O¹IÈû¹ ¹w#$wùpàI;žæöåÞéK‘ªÉ4FwJ†‡lÛ|œ3¶>ûF‰•KYÎùÄ÷9\ë}¾x'Á3ÈØp ƒÓˆ9¨f
-]CöÛ¸·çæú4ó=òNms·‹äv¾.ÅZx½}Ü‹ü^;Hã8r
-Šz/Woh~÷í±D”b‚ë¨×Üê­(a‹ †ä½|Xç{}(yÏ£E˜–«¨ñsëXÇ°êh9Ĉ9B'8žÙT!Bt—ªõµÕ[‘ïè|öa/¦ü¹ä‹4þüp«/E¿m´{áIGS—qõx&¤s-û(ñO‹Ö%ž÷ÑÜm¬vÿ­§UúìáLœb–†Ê´x©yå& l–DDgq,ŒÈ-ç0pþÄu½^í¿+úNß%äm
-¶ô<h†xòõç¶,CAÐ$ã--Í
-WÞ‹Oê .êÀ2o1hë9ŠˆhØØ×®e(Cå5èQ¹ÄŒìñ¤0q4Q27S2›*´ÙLîˆÕ‹uê{Zã]×Ñ'¤ÆžŸ÷Ýíº’5,cU†•ÌWX ÷;­”n ìõÝA ¨^møM]Üö!U¼…^Xªùáç’7kû^Ä"Gº¼qXðÇÓiâÆmoº=^Šéçx™ÛlI0òÚ~½bž¡lžg¿PB㞘e»¼2'Ùùì}lQG«u®d*Š²¼ÞðÐ0¨-åîE'>=y*¨¯ã+br$í½M³§‰?¥·)^5{q…½R¹™¸}NÄé5òŽÅhEžuÏ¢
-¼?6)  o½èòZÞ/ó:¤—•„ì3µ{½;ÿ8õ¯\ŸZ—À<œ/Âÿª
-ߊ~*Z;yÅõQ]œÇ—ú·…T?”
-5~Þ8GfÂqÒô‹·JÚgĻݛ®lˆïå±[
-ExïÃí‰`áD¥•lP¯;J–*8wx7E 1›¨cx¡ªñƒ¡ïÆ®øCÍq#›|ó ªD\Rb݈yà4Wùî¨V «Þm½iè(""ìGA—Í€¬ŒnóM% LT4=[ žlĬA¥M1SÂí’Ÿ=½å‹vh
-A@¸Ôuz°êö
-Çk«íŒ²ñ·x«ݹDxh¹ú‰q×°0(ÓËÝAiÆ8žáYKÈìi]Õ< £–ÓÇ3þ:ÿÿ«Èv9¯ c®&]€%qÿõºY {J[“äð¥g•:_ˆ$%V˜Ä³³O;ô¾•f©Þl§Žð¤½t¯û9EÆK ì­¯Ct –Ñuþ"]ײ»FRØyF'¸Çy+
-àgCŽ×¸÷ÕøåÚ©/Ë)
-i$ؘü£oÕ˜v'8±—ðò‹fR¢Î~ >¬‹ÓM»Cwö=e•±Ç‘FdÆÍáê
-ÔуP ïjFMj€ÝcêÚ½+[sü‡ñ2G’ãX‚è æ#SË}ióE¨ÿ4RDÞŸÏ3"Ljª,¢ÐL{ç¾ô¼¹„LbÎïkt¤Ê©ñ{ïÖ7Yî£ÖaY ^ ÇnG›áY¥ÔʤÓlîL!obÞsúyx)ø»ó°îpÑf—7æ© ÂÔQNn=É^™ˆh ,yfÆLŽ¼)æE·Wcñæß{ÃîíÈ+
-)èÚ†°ã[!ÉrÒ`D/("ª.À¤Ç¯ ŠJ—"{@w1p-tÙ¯—r´=ŽÞ6­l„HCêõÉÛf©
- N ™.W=Â:ÂC·  ÕW©®ìÚD!%ËŸäq€Ø€.¢†s[Z‡„¹Øˉ=+Ÿ2<ˆCÄ00ÇÙ[Õ bP⽿81Þ‡)åÝ4‘õÉMÓÒ4µ
-ã.]®À’`=šìýTO ³/¬ÕXÒÈFÍ÷p…à ‰G‚µr—†o9÷Ö4¨eªR€ááRà‹ÜÍ…›F[s€1¼“i‰µèÑ6#̨ºÓ:Y­¯+.¹–3¬x‘Á[d¾q’“+uw(|‰ö§%¥¶ø¬ÖÐ@d+¾ œÒ,žÞ3nÉá_Uë ‚ÿcf©Aài>ßþzûíÿoáý÷?ß~ûû-¾ÿï4 KË* ¬´t
-¬5*ƒ½ü!L*ró† sPC…—a‡ò®YìcQ+/Œ—œ!_XfÕwaˆ¬t ’£a ¡!k6P[¦P¨0ƒú@¡'Åd+ÅÒØ "£HÑÊ RIcQú)ø´›c±°\¡ÏäÛRÈK\{ÓZß’áq.AgˆiP—by_•àtäRìN8†Jɦ£A:S%Ï5Ó~ÅrA¶8¶@èv” cþý‰"
-ï½ Ë:2kæ™…úUÁÕ&á«7†&tÓ©êêlJÄ÷·ÝjŒÂr¯7ŒƒöŸò6!‚‰_jï1 ‚>(÷†5G 0Ž°4SRkY·IG–8Lß1DeK=4Å L]W›JS סÔÁõ2“6¬3î !iÆÔ·Ê]û*ü tiÃuäHc5
-QUu1\¥æÂoŽæOÉ÷î ¼h’Qú=—vnÈ5/(Ÿ’kññC†JpÈàƒ´ÆäTø d÷—"|ráz^G& CõÓOƒ*“Á”$£AÔ”¸S„$Ù­¨ä
-G#k¶JŒ¥ã?ÁAµ†”é„´Š‚ÆìR–<}
->¢Weµl1Ƨ•’ÞÐAŒ,®‰÷GÈVAá´E˜ÃÇ&÷5ž]ÙÑ Œ”²Fìi Þte„+n<­ƒ+¦S±‚
-’ w ÿw*¤E¢LÇÊB:/6ˆÂx•±·Bsi¹Ï¶']Ñ;ædU‡’1¹2–ŽØ]9Íû¹ç–8&BN¯»-¸
-nY3º¯¤%ÕÈq%[ÞAøåïÇìÂÖU¬ÑýRUŽºlúA¤¢\è‚QÓ0¤Åz>5 æAãEÅ·±ã°)Ö)¬ø¡éÓ-£ÈÐ#GÉÆ‹F£Û Ç¥ª“'$>Ì.ˆ(¢:ëçãw_g(Z!ná´/¶’P³CP:¤…Hâ<©€!ÃpÞçÛTBYv$®áDc3ÿòVñU¶+4Ë„1ñBÆÝ7Pÿ€JKÀf|…›Ì +Zº“÷JÀžÝz–Í훺ï%FÌ4›‡žšÇJÓ·³-º× `[Ú
-*•>Dõ¶ ývœÀŸ1ß_™Òo6Ì…#ÀltT5¨ð8>ÈìæH‹#š v¨*­@÷h»Þ^QYÌÇúOù¥oÇí^!M]{as’™ÞFü+ i´\ônU@#V}¢ñ—$O&‘(fôŒ¿§rL ’2¼Í/ë5@c6¸µ~Q=©_€äå¸{@ñ³D%{ù ¢t+‹sBƒà²±Š/Èö†ü@óÁž–ɲFÜÂRìU1…Ð¥¸±³âø<UëÚ°ß „Dä¨gþ LÀÀ5Ю…#Í04ürR½ ŸW‹šîâŽ,±¸q\¥À)±=ïˆQb<š˜ß ”¨cб_ixÄ¢Œ:7q(×6|+·ÛèCÁ 夽oˆ°¼fŸ_ƶÂW‘­j=A.úùvÂœZ=ã atT»—×A§ñ»m÷èB ÇѺ‚½¬x0¨XS
-±ÇúãTpÿRôä‚À夳f2?e*IfJ´-‚º²ne› l<•S¢°.C2¥²ˆÏ{¢ªZ6­º@4)¨l?ZÈ “6d˜Òkܬh¤iÜaœÇu€ ¦–vï×ø¨$1Is
-ðØ×¹yBâ,cáÚåÑél’–—‚Že[:ZùSÕOnŸkZnLÒÙìÓʲÑõ¼“ÇìKÃçjd²f¨!R\¶5RnB(½iû( a,ûid@‘©6X¢;wcôÆŒâ@1& `1Ú$$[„*¡¥Q*–b³ù½.Eÿþ
-< ½¯ƒ‚5üJŽ!M[)#ê@(½øûò…ÈØsšþ~'¸x©òIîþk*Ís‡¾Üú[Œ–û†95bÒ-Ob~ìÃm¯W0w·}…ÜͶ¹ò0-ÞͶ ƒÂð§Ïþ`¶eºåïãìµA%ÁÞSìg“ÉG!’›Úâ;-r,‘B§§uèFX Ø'¾˜íkN^û€¹YmF‘—÷(G£­;Aî,žf9Øh{:Qµ+»·ÁìèD.²ìá賌‰Æα?Ûl<=y“"…ù`³AaŒa5]6ˆŠ^Ô‚Û§½¸ìäà²ï˜S‡3…l „Ô_fî¶ÝK ƒËþS8Ÿdâæ¿$rÔeÙ|¾÷Lj
-Š:Q™ºŠ$+ò}È«"*8çX•O
-̆©»MïL^aÐñtV×ô1ØŸ¤Ë’Ù@H¯R/n­T[‡ùŽ™á«Óå,!¯|^g‰ŒÌsÊOt› =HLvší@:9o´:(b_f$¹ƒÚ¹h=7ƒÈï‹A[ƒ`pÑt~›ú •ÉGÌ5bvfέXÝaë°s‹‹á|*Ú òØêèD&EþL? ¦ˆ ™‡N¹·J0bÐøÔí%êÞ
-'këàmÎöîì"lȸê8!°¬™Ÿ(zÈØí.˜†žÓ XÖ毇Ë%p…¶-6¶ªÄü "v&Ð6+Bÿ‡ñ2InÈ¡è rŸ Õó°v–¾…·òý·y¿ÐÙŒ’”«(
-êýñ Céùѽ…Bã·$æîÉäE¡•ÉböÜúb²ÿ°Tðê îz¤+ój!|\‡ï:0¸¯ÎgÆ?°ù|œ燿ÑcY Ž©BoÀ¸• ÂÈÇ"ØV
-N&p!®O…ÌZÉ^ðuÒÕyB=džT…Ù`È~ä0ÏXG<À?P›œ‹Å7œhzÉyN™{xßJ@[b³e¾BÔ&×Æåy›ã
-ƒN’Ÿ•õÕš1ULoc‰Ú.Ñ,0Ññ~µöq]Õäô0â£=¡®RZv€j|hW¿5pF7 Ìí¡0ü^2v“7&M YØ=}„·8%ϱá¹DÖ>gœ8ovÇ‘ù&hÕKчuüvûºS" &HëƒW7Ìž¼Å8uæj¯¢´kƒ‡'Ä¡â~uü³íµ&RNe
-eò7ôÁC3‡ˆ3GwæyT:fóå9?•øVpPJ{·ÊBÇô˜4#"
-Ô$Ľ8ï‹L=ë»ÜÅ„cEØiÅ0@ðÌ ‚1|~?ÛLµ/‰Q›°}-y¶«ßåj¿ýóW¦Çð"W§9”æýÿR<#_SûñPI'j`Q!Ãðö½•©Ñ‚G¬VdxV§YŸ)?wx[5 ³î,s³Cbá¶-RYÓ–Á3&¹ è;¬o *s“±=%2ÐûSÜbŒd%±pgÝ|â.‹H*—¢oŠpSÜSo?¼ˆKáuaëÆŠ#Õ0¨V1 S Yî¹<¬Uô…ì.FºxÅŸ¶“ò)eÄ;4Ø­ÈÁï¶m™¢˜Ä²W9ÿúÉ…Žè ÏtRàTp>fæè7Æ´êøâíFxèÒRH8´_Ñ´ì¿aŒ*QêÍ.?Oå¥Z½‘Â)aÚÈ­낃ÅHÓØ%×(ƒ VÚåØx)b²ú'`øñ¦èˆó$@±Ýë(Ó$%>…»:¨!„¥²ÃÇa92ÌC-1O€ÆOOõ{ÙD@ˆ#ñ6\Ϧüòî¯æþÀ™ mëo×á3J›Ù)Ì}‡BYxÈëÑ((‰aàÈ2«çN2cxr~! †Lš*D}¿ÚàSÐJŒ)–ÃÇŠ@‹«bt–ïƒé$?ÁÓÑP¦ÝÊ=y˜n½ш!Á‡†XÜý¥Ãÿ³(+bu<>Û`q)RP¢;èò
-C&8l9B$W-ÿ,×X
-x€“ó õ ² %ûSÁ³Áž¸×®2ö>3½ÛŠp!¸ç}È37&T'JXtµ&œž¤®Š8ó¼Â?á‡Ò«¬k`")bÑÒÇe \:ÌËH{ù+Ž»¦˜©Õ‰/¦ß ú©z©0*Oä÷…þ!Å’Nš4_ øëMçI‚Ìt…ä3Ñ2¼„>€ Tv®a%¼ч^?,˜ì>ÿ3þNMé>IÉ´Oï%‹½ÙqÖ:ý¤*¬.ÿ<è9z0]ë|“D áVr¶ê|@È©Çz»ŽÍ@S½cÈFÂkHuo 3/(Ë6f)Â`ÀvœŽPÌÎ^Iš_D.Üt< SŒf
-be’d!ÂTo.ñ‹+<²¸ Ä}ž¡)¥ZÎKô¥hU‘çí9ÛÑî½ô:ã9Ÿ`ò`ó‰Óañ.ˆ
-²Íø©`p/Q
-cþ—ÍÎKQþ2‡"±FX5;6þ³DÒ´ 4FfÙ~1Í«°üá²6€)(bÑŸ>É[Ç5¼¦À±d4P=–µp¶œçÔ÷ÓJŸÅ½'¦œl~r#^·’˜R¶âw@3ß×i§_ˆa:ïIØc(ë.¯U~käáçŪkØ&. ‘DOÛŠò‚‡Ò€d›óAa²ê†­VóÞðÐ%íÛJ’R‰q˜ºeÈ“145Õl¸`«“3AàE2qh³¸nØkr茫¹ÅSAËr§´ÌïÅ„\B`KrÇpëLG3Gœ¡íK‰÷˜ëÐ.ž¸¿Y‡ † åvV"Ï[ö”½Ê7 D£1GWF¹k€ÒYk‚%(¢…M«Þ/×m¦>踴9í^„¼*¯?z¾Š?\À6´•uËk…?ùr¸ó$Û*ðRKú¶nq(ýÁ õ+(ÒyLÄšÞ!Í?H·fWÈg—PÈ#³Ôü͹åÀë±¾(F+ËáDÅŸlŒ¿A†Ú}m#6ú/RûSÄ5û@Ÿ©¹1Î/¯™é¨‹ø÷5—ʈT¿þ.\‚z˜Æ“O Kâ ùŽ¶ ñ Ö†³Û•ÛÏÝ n†ÀG.ü >™5Wå葹±Ó(2ð]„OǾÿu)ⱎ›!½1ÔÅ–ÚK ýºHÛµÄt©Ág×"ÜAÁx0ùÐ÷Á%øa óÄÆÅ°¼ÏªÓJŠTçYÕ=™‡qÀˆV4QŽšôØä"ÍÐôV ¬Ï*×ÇxµE"¢ÂaÇùÖ^‚
-¼­€(Ì1jNéý§¾¯Qø:Ÿ]m)P@ò Ôð†fD¦†àZx'[基JGÊ2ʆߘxñãc‡ï¦‹uÔÇÜφ0™È ï¸õÑÿaj(ůuè&q‡ ÆÆ´!É¿Mo,yAÞ´ç½mÄ‹ â×£:sÑh Œ@ˆé ó3Æ$~’tê1à†á~C=™€¼i DZ„¹ÖÑ?Ü»ÂéòòñLéaÆ«õv‘ö*Ô=¿&˜üƪ«Ž.ÇÔÓ˜W*ï›@ÚÅMQ®ä"YÚ2±N9oH"Ž˜hqZ
-Ö­WYç"Y²÷Êò¢ADš¸ŸeØRÑ»ß&)ìBZì¹?|±‰èúhÇà«)IS.ð/õ$òÓXf÷)¤^™ô[g6yÌÂp[ìÞ58Ú_xþuÈ÷ åøäµ$<©¢N
-‡×x&lݶól³ÀP Ê°Ÿ-³•õFs¦@’!T“­<]x‹?a¢K£µcÊ••Fˆ¬‡ !ÌÊás¾h¦ä|ûó¯
- XÑ0?j¾zžFROœÔ¥Ýò…%Ì@øNÕo—Åù1÷[~¼Â¦ØhH­©P´ƒ!¨6‘Ñ&Sf¢éÏpß1_²¥¾ÌY”T'_Ìv¢ã¸L§.áù2s<þ5†$]‘ªp…ƒxg±Lp” •ùZ *2è¦ÛËH8¢/7³NfÑ° Z>Ûçàº!7å,ÏX²M\ÊTÎ!Ôi`<^B„•/,ØÜ3ŒÉ`ÀÛ¬e /á) ñÖÝé"çàѱz[ ŒYevRjë¼ëör.Oòà’'e4–ÍðÄŒ}y½\ö_—Öá^’~¶° ÓKŒÍägê\À4ó3ø8¿¡Mí•œ¾Bc
-2€®çæaŒ¥ÑÈêö æÔnÊdœÜ„›ì=ºm
-¹!œ ËA(þ iÅíc¤ú¨æ´%Ý’ðÃüŒÝî»—wÐåœG¦/pÈöÛ(á
-ºQå‚+‹T0P`ŒÞƒ—W/ñ{%~³œJW¸üt!­ïÍ Å/ã 4õ:ùéœË>*¿–ãô ¯„PÍêÚù[Ôoç…‡ÆB\fÿŸ½ FLÆÒèX!nÛr÷Û·­û¦{ŸEû‰# ÖZ…wZ†ìLémÏŽvª¢géz…“»É !"¸°ˆ•BqT‘eëpNG$T*¶•"ϼÏ1[‡Æëˆã·Üsëg”ŸX5+„ÏaÕ¸=.U[§3§’ù|©/Í‚bf’‘Iêªú½”
- ªJ¦÷ób‡Á }!Ûý @Ìådg¹äþ1veQ‘ §~|‚Áý–ùÓ¡ÕF[ÚñÊ|Š
-lÁ÷®àw÷¹LÁ¿…”€õ{æ?Ÿ\ReèQ^|_‡9ÂcS¹è‚Qc›»šrLXdH ÛåPàÍ9Ç0º~+Ëšpú¶| ‘1QB†ßüÌ(½9Ï+þá¶øÒœ~yHø‘­ÏuCø&Tl(šOÙÔ¸Š'¥;fB˜–‡†ܵƢRì+Y @_»<“%%íA9%
-×Að>V™¦bè±™*Oà+Úù ã(‰Ý2æ"°ßÅ{Q á•„ò>¥1MZmfÎ'u’;†ç-‚0ê@‡£^çK7ôŽ^³J¬ö>;Ê{È¢Å!©*»ÂàyÌ ‘ש”–÷
-“Zü†g|-nŸö½Ô+%r›âS2
-RºfÞÜŸÂ[ZäqÜÃ7›Mž1œº•IÐ{~맴‹»]«ùL1›N¿—Ã- kn¨&Ï·Aígò±P+4>"Ó•ø>\~LêÍ?iÖ—1·½Ø|:.- žîÜÿÇu…r¾MÚ·Y¦#ÔûÑä…Ök_0¹ra™Ý ,Ö†`­†)µÐ G¦Oœ¿?}Ž¯žðúÔÐ×në
-Z’QvªŽ"X9Ù†z¢ÎôY—NL2BâµÁX^ñ!­|ÖJ›hJ®Ã;nXhña'ä8U°!ÿ 0
-H‰Œ—M’c7„OÐw¨ Œ‚
-󅘣¥ îé÷[Þ@•ÉaS¸ª¯ÇáîÔ¡q
- « ºXu(æßuÑ ‚àÚ¬÷O1¨B4~l»sæ„Ÿnmø‚PæÙ“’MËð$DÒ°o‚®ôµlDª‡Cg(.uN TcF ŠÎ]„Í¥QA6ãR¡9Ç*æ;(ƒ%;¿‘qójFó¹"?=¾OF
-<`‹¢}ŒSè@ètÂ{îý{
-KÞ<Kÿèס‘|-çQléŠIÂÕùAl‹2ÒŒ~³û1ª¤8z„Ý¢
-S|Xn­Í ›[2 úÝ¢d¯Ñ€zË$ㆿ}on¾Ðe®·Èä9’_'Ú³ QHfÄ¿¹ùBàÐ榤z/‘Sß²mh eh«w
-Bä°GÅ‚P9T½gi÷I–ªâ“˜§Y‹9Ÿ9†ð.åœ;tí5œÈqÈ:)T5:jG®ž½ZÙ(ϱš/}“@¢ê w=žSG$:¸¼ë ?Г.W?*ž÷Ìó>)ÞüÙ£%ê0Dç¾
-‡Ï9™oo%@ÇšDŒ«BÇP½šz •¿e*bÕóT<ÓœuM¶èy
-ˆõâ;n'“¶Ü è¥î¿?€wT®FÛΓÌBYñÞ$pZIÏ3¤wnjJ‹Ù}¯Q¦Õ¥Ôfrç¸6]ÃEl5­Œ3#ëáër2¼Ÿ½5vú “o¦œŽÁ¡ÕÇS¼&]+rjދᨇ±ʵéVwòJ†c½ãÁ°e$ûd0‰b}D8·® Oçe7;ËMâƒÉí½=á†P;6ßsè…Mò5¦jÛó¦¤åÚ?‡±-1eÊDÞú¶¦^ìÕÇ€xµ*Êy•}ǘã!Y²‚~p[×»^0¿ÿä=ëÙ”¹”ÀWÝ[@xCÁÖ³¬8jFönòa~…ÑÕ¢8„IHºqÒ£)ìµßv, J3ü“°Rzàqðw~]:¢ÕBiý°¸,?ÓÏ3sû=Ø'†±ÅÐWб8
-F§ôú±b/˜“ÉÃ0o:­«å@ÑAÔSVìéñK£G5ŸÎA àxg˜ÍÝ-pø÷}YoÞ+þׇ¼NÞ´ 8±šùUŠä×ê ‹úe+›ñéú²1Iƽ• ãå“0ù×Q»³Æ0‰±Ïk3>'ÆÛ_@fSke¾®6NT'QD¿—Y¢ŸÕÅ£tæÜéßFþÏNõÔýšžDï
-:ðøýIï<þ¿Ý<Fœi-­)!ÛfT!øÞ¤Ôcñø
-· V¶w)˧
-¾¨Ö°ÿ1^æH’ÝV]Aï¡m˜SQ4ËÕ
-:äMí_çÙUùßWgP¤ì›øÀî@šû-CÝ€ f7>¢/+ß7!?«ë%f©S$H uN;31´AòbnX“rê^èýV<]%Êh3#ål ‹±oòÑ‚B8°(ÌÎCc Qƶ‹„}è|˜gv“EÄC‡_)'çÞ*q’îDöBg›¸oL›"¹2–`çŖaž£K›ì ,«¤ }og}©w—Ãlö,\5k5iÝ0ˆ*‡z!ä'‚BtLèrä¿k\K&ÓqüK‡ä2€¶wt2rŸP­ L–º€L‡zÓÍo››;®_¹´ßS04Bmˆ$cÄÞã`Œö)…ÚyÞ”Ô£Ð4Émí¿pPåÌ Ô5úlDþé8M•/ÈUȳòìXß·±ÍoòdjúÙ;˜jÆrõík® T‡³£%9©YÏòUy½+Iàp/Ìríî¬'ܧüt›âÍÆÄ·)~†C{ò÷.²ÐL[ä?& Äq*­²®‚чø˜žhÔ±$Y¬r\YÜ·ÈÙ$kU?%a”¾!3ÁŽ”ãL:›šp€ÊÓ ˜Á4Óqêï?<üƒçÄã…vR‰ì=?Ø…‡-û3h.”ä!ÜqïÞ3H“Á?ùÝ´¯vmäV½½òç,6Ôií$'PŒ8/}CüÚSA¿ñ=8‹‘üc2ߦ «nvV“…€•óîVf©i.K;O™Ñ%ì}Ö¢ì^0^u2ãva†ëmŸ0n°d!ÐÖ(^îÍ}¾°5+4þü¤œ ,§ˆÂ˜¿òÔ„}] & gÃHYÍÜôHß\
-ÍÂužÕÌB°ìå{Øש×#×jÀ‚å]è0çxc›Äéô¡D¨ä¸¯¢iHr°sÃ8Ë"qe;†¯&®‡~Ïz‰«:šÀPΗž@myiŠ ‡.Æ\—‘´!alHÅÔí¡T~?Šm40-iàˆØçˆ{1Û©âˆðqñ€È­ƒ\÷)l ¿
-òÜ 9B]dN„`K‚é’$òîvü ôùÊXh‚Âí¡AÈ=>¯°'èä6 †zü7Ú.¨È!SWŠ½¢Ó‡;°O XÂbS5h7W–+Í77Dd™±™¹þÏÎ:VY›²!S¦Ža¿7¡¢u {uY¢Ur>ÙyHeËÿ`CÔhá\Œ†‰%SrÔËšØ+ÄK£¨5X gísp²¸¼Õ°†!Š(fP£µE ðB1Ç“HuˆX«ón7ÆF›Ãé}…HÍ4N“Ž¬Ò¡v.‡I³‘­ç€Ó™ž_¯Œ˜¦ñ¯3ÿúÏ¿þ»© †”¹ž´7Øo¸-ÂÍ}ȱK,â'`_³|“ú¸!Evœ—-ÆuAßsÚ‚p㬠‹gÉS|%ê‚ y´V´KuXÎ)Ì5LÂ(Æä3½ûåܨT‚/ÿ! Qxrf
-k•q÷çS já­{`3É‚‚s”„1V²ÈÃ*Ì㤙Œ aúSÇßgéù©É2²¥Çç~5rÿì+uE9¤ MvÌž9±{°8Ï|goìRËöok„i¤ÌÁLT †qoe?§‚o–Å+záRÚµŽ€aVŽB Èiß­p ”gâ¡–Éù; ¡ÕÊMA«íIv ¢·¨m§iûSì/ÿ¯_%d™Q˜’ÝL«
-ø§Óu¸‚r±ûÝôJѤæ™F®ÅZJ Aœ §£ÀÄ42Þr·¡ÈÁ¶® •æ@lkÀÈ‚÷~s I–BMÙÓ¹ ã„ÏdF݈?)±è ëQ¨ááæ‡ö(T$³‘94ÕŠ£èÃņûô ;³¥ÃÀÈ\ágZlƒà! ÷ž£Ù©càWÄ;¶æý‡BÒbÔuqC ·­s
-É$¬W“VH§À!õz[S› f$Ä(Ë;µ~* ã²rü4ÛdPÙÖäîÝO£J4Û¤©“¾ֳê •ðî!¬#šŸfEͽŸt‡:DqÈÈWX¿Ú8°|ø·åa÷³/ oúDE¸/EŽúU·—ϽzÚRØŸ@òÙÛ\ç.•#dÔŒ}7·!Æ.Eĸ-”úÊœ †( áRÎ}gèŒ62?ØÂã.<„ò+GàQÊÝ)Mňò¥Íi܆`ÌÙRþ¶=Ž]$Êç¼ÿð@Š4Ü?…Þ`ò‚×{<×áì!ÒÍïF!ºhe´ !"qûœšÙà_¨T,J~¼<á*˜Ûrœ«‚Sƒ¡êyy‚±˜úÞbw]üS‰½,@£Xc¹Ý¾IÃ9E)m"”1ý»ð£A àlëÝ›˜\"ôˆS,~m.ƒu­°ùÚ¨_¯ ñÇ#1ä&íæu9ô8¯Çýsƒ‰Ä¹Œ{–cü¹ -‹ý¸íïZsÎ@ÐÜX1ˆ½ÆçÌÍ ¥Fñ—ëœõ8Ì"é ßà[Þç¾;¾YƒÊÍJ”iÉþ)*ž‚Qzóï‚å•TPMwoÂrb7zn¬nñk#þ`ƒ™<Æʯ°ùÚ¨÷æ©ïŸ7 n3H…©·—¿±xdšˆ +µ^^®
-.K‡3Ê"‡ ¾÷á¢^Wž|VÀËb]Ïè0žîŽÉ¿ÍU0˜úÒ¸{cž µí8ÝçÂ\–Eå8aÈGw!C¡²`™$HOýßÅ\’…ðñK5!¥Z†£‘kq=úãN#ª¹Æ¤·Á,YßûÜ *Øvò±…X‰1Ãj¢ûÑXMbõ7&½M,jD;½¥ZËoorå*ãïžC$“XC%õ±yÐ1ׯÅÚE$“Úf¤°›]faˆPi=äNÞb
-àÀ–ÃÍ9eݦˆÈ‡G ÒeáÊDPËÝ«È@d²I"•»çTLbTõÄpÖÄ]y¬sƒäœÖ±›ž”;—c]÷–?ƒd,•F vƒþ,_Ä¥ñÂL_ùUäfí¢¨ ;üy’"1q°}ÏV!MSwûѨ!Ám®
-R£XqÂpÍÇ_@,8O |ö‚âsFHk*ýFaFˆýA×F%Rä ’ß©ôF²áT.Ó>,Da  ”Á×o:•H\N°•~s
-Ma´HIí¸3Þ™¦"·¿ùè6'Evz kB¥ðäîÕ3ÈíC\Lª
-æû­z=sòç+Äý;’¤å# Wú´¾–Éè"ÐðÝæø4ßhNB/Ôôq‚öŠRkÂÑ®›y ,HmÒoÙ ¹ñ;¢I˶?lRžÓƒwÛ^Ò~g“×uÈ13H;ß””áøRÏîa†#œ^kó2窢M )J=7>…`’ªôóî戉&tÔÇPw¢²Uê"}K5þñ2G’ã¢è æ´iL`_LŸru†¼¡©ûë}d¢ÉîB‘4!µrP@.ÿ¿ˆ¿Šª•„¡±ñìOqàÚ"Ž u¹Gè VI{+%
-Ê!IŠw¤s=›"Z¬yCùJmšäf—mA5
-ÆT`+(îà5‡ Ï-˜èåÃû,¨Ší“–%¨ ÿ…Azˆ¡/Š†ú¬Wf™Ý"–Ô#±¦‡ª4!(R©¤® ÖÛ@Ê‚\ÍŽ‘Vð唦kÓàþL75^ÅŠ(ùD@Ë!d½ –…vjýTâl‚,¿Máv¹«¨.§³IXï!]´.–fô¼P‚†Z•j_Êðï  $Qæ_4Fe@†ÁŸGG²ƒdI¬ 2ó°XñT@!r9¿1ucËáñ[¹t‘­,îÉ¢zŒ/ÊŠºy·×Î
-f¬z5ôrÐm–­©üŸž@#»ï/ýºƒÄu_ÿÁ¹ÿú÷íëŽx•î¤;jÑ…œrè¯Ô0 l'®¾«( £Jù³¿â%h… Î¤C­î_/¨ÈÀ+F²™¨ä’R¸¢çѱJ×#ˆ!ÿsñp{ì
-µGØvš mËVŠ]N;Ť%¥Yå\¬ßýáÊ,ð 7€§Ò×¹6˜Çjò,ªøF¿×”]$_êC§–eUY$Ì`K?}@ßL¯àUáД_!B¾)‘-Q—¿¬R ¤Hœß:²&Ì]—ŸB"µÑfÇzêÝq z‡Ï› ×VÔ•Yb˜ÐÏ«ª‡áæš A–µÖð¯íò®-}‘,Õ¶J0سd] ,õfx²ÅÆ»sxW^>ý6,ž|=*ê±”Š í­m9J•ÄŒ†Ew‚2[™Qý,¨ò¦´g;£€²ªÎòÙÂà4Ægø—Ê ãYhãÞzP÷€Ò…±­z^ƒæ‚<Ÿ²™Ç5É„dIRÑRúyDÞÑyj&ª3©ƒ6È—ò$Šèø–º‚¬ˆRFrõƒpÓØÑZ.2ƒá1°&Ø—ÔRv
-tBwÑc{½‚45ž]£Z=#Æ…±rñ¾`ß ì9¨ú¸;reqÔJº=RÒeá#±y%¿/Ò#1]eìO ´$ïm:3âj‰„hÀì@#l4ð»~î@þ&j![õÑ•6žRªýn>’ÕÇtت¥ÎA<S5¢«9¨RËfµÿ2C¸‘À_ë¨A`mïl‡ô‘#ß1††0’MPßäö$ðå`’UWÅáˆ
-YãET òfm$’2 ÍÛ¸0‰ à }Å?%EÆ÷‘™4ìÓ‚3ÑC8…î:>z¼‰Ãˆ ‚^ÀN—7‚d)µ ÈɯŒö&ˆfíz
-Q!„Ð[ßpÐT°Ç1ÃȪc' ÙŸz z¢»²DIS6ÅkðLõXŸÅnêï!4i
-Á<¢6Ü´·7†‡dFqBñÖŠ 'Vô¸0ÌŒ´`ŒBÿ"ѵ—Ñ·ž:’uoN&ÐZº,%÷ät%NÛ
-ÿû&„‘Ä~ÑcpwOÃKåD ‘Ž,‡ðs¦<®4Úg¼Ê—Wnþ*°VQÆ&IÍ]BÅÇ«ð3À;ÚçHøghA±s€h ^ô5lX9Ù/¹Ó°d´„û^ŽÊ¤Ë“´jìi›ÓøéÆ_ª‡ÄÑ^ÛAøWìO69A²“Næ踯ÑÃø1P°•ŸEW
- »åý)~$‘¯é~F×N-]Fm!“?ra·3Üë„•R?Gà#¬Y[Xz|èç1Ð&ýh§ÈÌÊZ&œpÐáU2[ˆš(ñOóx‡ÁãOò¶M†Ïê‡  7å6×Çgc½òB5—ʘxØý m$Jmêñ”¢/ã>9×èo&ïR-Í™7'h:5h›L*¹cØ99–‡»Ðg !¿ÇÍuUŒT¡
-?'JIpð’hofcHCû)Dä‚”3JÜ7úâÅ•™m¬…‘· ObÆHçè?عh{×^I#f—{Ú€EÜÄöa!ý4/X´‹ù´N>’ŒS°rn' \ìgò™ƒÎà*Ö‹œ.>TóÊ×UÞ6¤ ŒÚÝ9èJCÊã2š>ít°‹k¾zš?›œ“Šš¹=¦àfQ-s—3¦©¦gh>ºÏ”©ô™Ã1ä•Vj3é‘Ö`Œ¦7$#´‰ž‡ÕßA&~™2Á@ü¤n.™ttƒÄŒo¢¼\ó.oÀpxêŠHôíß”dA§ía»è‰©f²Qfß‘oíYˆg HR^édÜ·ž‘?²é0õÜEfqáøŽ™‘×LÓ¥ã)|™öT¾jiû*ŠÁ¶2h³í¼<~DeΦ,
-°ï(5ûn üFzžšuŽæÁâœÊ³ËÝ“|½vòT¥·SÐK½ÿ¶ ¥¿h#ZùgA/ÎðyÔ
-¥SgŒBš‡Dàrº,‚+`VQJZ}UÂ3ð1¥bU¢÷”?í­+‚|QÖæ-Hæ™™šØÓMO<…x÷¡b1 {F?ŸC÷¡TÜIÎçÛ¤wÆ‚&’žõ»G¥÷:Q -÷vJ “
-Ñ@ŸÌÑ] jµ!£
-¬Û°^Ïéï,s*O0Ö<ܦ #±mL¢œDr}ª#o]²TËC0^²Cð7Y^FKç B.b{
-b …y[-þªËmE!šõ¹yQÕ…ªòþÔ%;`O›òB~ýrÎñ± bwµz
-ñZ]j~=çÒ9×Û\:ðúªK¿ææ0 ¯þÝLÉÌ¿þó¾üõïÛ×ÿøjŸïË椱Uõ‰¹¿ßÉ• ßÍèË
-ÑgBîÿ3^æHräH=ÁÜòeØÇØb©s‚Q«ï¯Îû€#ÉŒ@4K¡13aq¸ÿÅ6GœŽ‡;¢%ü>
-)£.PÎÚõ{# é5ò
-OµÓ;Ž
-²Ÿ©1­~bÝŠþà ÈW±ÇçÔÖ04MÕóê
-Ùc„8©C˜Úœ!¯aÞ8bȯ÷|ƒøV„\ù-¨é:X2¹ˆºh,à rµv2ƒñÇ_Ú°jÚÈkôCÎ6øû”õôt ‘bÖº½!%Žc΢·-Ï™úµdh£‡•[
-òSnŽÈm_üÏ I¤Ôvn¸Ó557P¤P ôVMKrx€ô–Û‚ ÿDB™à7ƒÍˆ£#L‚Ob|Æ5Ëÿx“5¥7^Ò_R‘ð×Ð=Þ5yœcÐ1Øà>G„¢ˆd?Ô^œ»d Y :@Žx\'ò#’€ƒvîRi€K¥±Z‡šâ «Aû¼êG¼ThãÕXü*^oƒ¬íQp_‡b’.‘Äæ[ÑDð$ÕêËc”\dÓñ`¥¯[5Ù,™²¾:ƒ­Ôˆ¿[žøåÀ2~ÕzÏÂK$ñpqã=ÙžùÄ:ó‘Hø¶®ëâ]ËG
-O©‰Î>/±é:ñ­0îxmõJõùËÃ1m9×”^·iü=BMQcjÅ­|Ù£@B%‚Ì3ꎈYÅ/s¬™³€$º…cÔñrV¸!ºbTö_'‡‹(Á¾SI’Gf)/Æ‚ qW<bÝÖ<)ð ùÖ)š£o-º³êR®š¼ ¦U©•TÄ+~.ÌDL¡Â;˾¾¼†0\çî8ñšÜÅ ,B3¶ ªàP+³!-‰³@+ÝòÔøQ®Æg4fÐE°ègæJºØêZ¦b¡7.çë(¡QFÎãÒ`d£§ó‹ Q"Š/ªä4rŒÆ¯Àqi‹?µ×Ï_î*Á(-9ÇÊI³½qžz{:ùxWŠANêcÏ"ÄÕf¼yób >Äú护òïFLu¦)&Ö£Ö1ãt<ËZ_ æ¥yãP ûÄÙÍH(l«„¡ºWQºŸ7…ÒÃÎGçæuGQêÑX} .Z|‡ÒY¹æQAÃtFwEQñ0²Æ*6ö›ŒZgYƒ+Dù²uÌ’öV7 ZÃ"ÁÉ~d^UFÃãýdäBzñÓÌæ¡)nS…ŠÕ²ëÙËÑÒì@©1Ì'qî÷ñ!N 0Ot£ÂSX‘¡ gƸ€>@‡­g \µÅ7Ð%9Ë¡Vé.IøAß“ñªwú;W*l‰å— B¯>.s¼­‡ õ9 ËUœH¡ '˜×åà³ÙâOÑåÀ41=Ÿ×a"jÒRuòsá”#!ãcn,ƒÅÕÖS¨¿Ä‹yêõ
-¼PõWÇÕRæ!/‘Ö:|KÞ1Öm»Æl^å`–°Ý LÏæz!78OÙn*Ø׃^Ab0ä¯)¢a}3R šMÛ0?VIkøyªeC‰´õ !~žèž ÿ$YÓgÅf„ƒT™Zä¬-†*[‘¼Ô©lwÐ)׆™GQ{Ò[ú6HßGâd8u› ûvßa²Ä•1hêëÔgK"¼©‚t9H¢BØKça'ñû1.j,ØÛ6Zovãk+}$¾ŠÍ:¹†ÂyÖÖ2´K+-æD09œžXêƒ mÚœºq×Q•kbV°öÚ
-Ž H`lAb¤÷ð:ååe;®Ù Cuq’2Þ.±Mg¡oKCÇá‰mzšóÅß]„Þ
-¢Ža.:%ä9²ÐÙ¼ÉW
-®‚P0ÁC KÍuÈ~uÇÙ@uÁŽŒ8öQn„rCnÞ±'8’H\ß¡“l=§8™++‘nû±ä-ïî£Þ‹h¨]Ë Ø¯L‚1ø£»³ÍXÄ‚bz^Ññ ¥ìo° ÑfMbÝ“šñ’%Jmìx„‘ÀêY|R ³<…,•{äËn9žÃšÀE Xhø5–ówä=pq=Éû2%ª†µ*ZfxÙ<ÍéþÌ òè"!?hÐËÑÕ@ïÌ´K°‡Ÿ3ˆ]©¶ôg{yŸi©ÛZ…K‰v› Î4Qy·¹š…½gõ,çCÑ籈n±ÿØÕÁd†ï¯°i…eðg.%]k*ÎI:_¾¸JX8>›²Üî0öˆÙÂÜþö›(fŸÔ€HÒ©7¢ã”?Ã|+qÜH‡H·µ•z÷R‡!¶Ê~†ÅÂ#²©¬†™•„²ûÚ:õ•+¦ò<)•¬¿§}VI„)ÒÞT"`)k?¨©mü¡Ÿõ¦„÷¡âñ°ñÜ…×"¦É ¿û›ÁÖ°X¶™ƒô3î70S á<c¬uarl]$¾2žÊt—ñq˜‰øŸ¸üÊ
-ŽMþ¯8¶æ0Áwê>©žHeÜü²øÍ’H‡ "EóÌ‚NY¦nùà®QÉþuº†T±­ûÞ±<·MûœÀŽè»ã0[Ä«-—í4ôh­hàá£,{"1#¶!öèEj7%­KÃÙ(oõZ4Í[“x€·°—1ƒJØ%5¾Ó‹³‰ñeP‚ê¹Ø§ÄêñKùK7‘ë4˜…|Ä5–¤õ=,ÎQ¡£Eß8ι.Ø
-ðÆþÜ|"ÈP*‘nóBçÅ[]Æ ,ÑÅåL蜜 ÕS[p Mtý$lo³ˆ™'ë;EÿŒNlï§Ñ³bÑv¨mȇÒ-ó\ìÈ…æBíùPôéE=BÖÌÊ3S5hŽd³—ÜÇVQ77 –BùXßK¬ üC?6ð&Ø2ÊòÕaŒ—é»(ksp7ðùÒud¶ R€W´9e¯åÛ _
-0Ê0ög zûŠ´° ŒP¬wXÖ[Úe[\à®Ľ$iB¸/ýÞ>ŠMç*·ß TÁta|s_¦ºä%’Ž%ïNuÚéÀÌS‡²ƒÏòf~•5ûuS$ƒŒG’GGæ‡ÌNKz— PI™h«ssð´àm ¬üËeƒ7 ?àkÒ;ñd
-ýãÑ¢hd!© qÓˆ—呃àáØz£c
-JdÅ+Á/w7#M\Ê]6/_jȆŒŠý àûc½œ2¢j*‡¢OoOT^âÐCÑ,!*P«t¿ªÐ°X mQ¯@ø×|°È)È(úÌlOÅRÒŸöéË"„à=“£„Ç&EjBÙ/E×™Ã:•°YŠ´±ö}Ô¥ˆQ<a4Ñ?Ó¢‰}ôÝ5¨Ò¯Uu_Ï(0|‹wñEöW‚NíìŸBºQ¾4¯æDÐÄ Ò3\ø=’~ÙžótieÛirzU<œá’è)*‰ßÁoÿÒäµ</% 'Ñ8Ìð*Q&ÄùÑáH¤ Ü›í®ÙE1'ã0»$H¤ãäÚ>Jþzˆþm½ŽÏb?0Ÿ›W_IJ9ËÆôKÁÎT7§ÁòÁK9©Ž
-#*!ÕvÚÈ&3SºµJ
-¸a F±Ù´‹Húÿf–ˆ ѽ)yD}¡ÿéK#ôÀ—±CÑçMìfòÒuæ˜ìRżþ.<f/efEßaq%‹v—É»MÅÂŒ¸Ÿ®@«ÓÒ.JÄ<”#Ûý(’&,Ëæw‡WQ†¹Øu
-–ßà¦Z
-' ÝJ< 7 ¯Ú–%¥yËw½í“š ¸ku-2jIò„ôP@4òMƒd…X1¢(b“DúØ|O¼VÉÀ®†šZZ)á.(!c†ñ’¬öˆÉ)YCÍh}d 2dôÏ)H`&þ4å{2ÏÀmqyÍV‚¹Ä•¶'„l+¾gâjÊžëµèN¾ë=¤
-*qäVe1ŠÀAÜj€Cæën¦& @¶e­)Á›PÌ{³Kpž"dPd²âhz–4;Wð8 OýJî$eD>)gñ ]1‚Q¢SòkãWsXœþ9iYÝ0Þí¼Ÿc»ËÜ%Œ-Vœn?§à±ùÀŒ‰xÞ„×S#8Ù:Ó–Å¢0fØŸœªÕµæq§€Üd×}°c®¸«Î~mX\‹Ü‰G®Ÿüý°Üß‹XAB
-÷ª™Å‰åUø„ùñš–H;–^çÓˆJ–¯â\¿KØa4
-²èHk‡†nI¸Öm—Ðb)°ZI¯d¹8e¹ui7e’ÇgÛuò¿".Äô®H(
-^»DÉ…ýcue3T’—ÊcC«]…ç¨Xh”-°«R—ÑçüvXŒ°°«û”•Ð¡Ï°×ðÓLâBãpK
-CŽRyz³¡>—…œ.½¦àÜø5¦µKð-1é»;E(›v‹ˆØ“u¢n1z’ÅÄ¿ò窉OBAvQ„*Õ-‘_­¬JÌê¦'Y_Â
-RswŠnn
-€†çdGm…ñšzè–݃¥­µ¦2v—'(AU “>1¯&‹óðË£Ø1¨ÁÏF¶aVÔ©"Tæ¤M"æÝy^Jì*¤":–ùîB$kÇg}dÇbئ
-–‘•¯ÏWü<߈3*ñ€T.mŠqãi?ÅÖBeýð èjËιQ㤱1Ö7%à o#+Jž}x-bž$ÔŽ'W# ú§WWl«-9‡kÈòÌöUoSñï{g.ä°¤R*
-{`TšåR”⎆𼙶f+A@Ø ÌG<»@Ù¸•v¸?Œ Š²ÏU/ˆ½)âÖ­!`‰Å„t[,8'2¨ÕJøëF"á;b:%€ ôÆHçª×"åP˜²EfÃYóQÂÊg;”(¢HV1F!eÁb 7 χÿÁ•sÜArÀxŸü8–èÀK½O¾êë5i­Q%½¢N¢3P`¥ÇJ[î)C‰Ï€%9ñ2Êlì%@ñ’°7ã›c—`†Ð <
-ØyJ Ú O¢äö<ªDoìvS!Ø
-40"yÜlV|b–15ÊÓJXFøºZxº¸õÿxE¸¥ŽJjtüs8ë2ÁDOkö÷¢¹(P²W&ýðŠ„ þ³ƒ#íÉ\‘°Õ‚/yÀhîü,/WÐœ’_øQÝÌ
-Dÿ€ƒÙÄu2ƳŪsÞã€QÁ–渚@ßÇéá­Æká„‘H]ù}¯EN¾\×Â~¨:EOg…ǯUšÉZty»X¢ ^^Š 'îsj^ŒÆ*!(Iqãpl%émK,æÍüžêálˆ¾š3JèÿÉN˜™›p,HSÒ>Gœ
-Œp$æ°WÑ z¿¨DªEK±9%모ýårˆ=dÿœ¸\,Ñ¥U«¨ô!ʈÌÑv…4$®7Ó]0=H2W7DnERq¾è‡Wyüs¿iq/ß1»Q¿œç:$ýlW,Ô¾•B˜ýÝ9]îŽ6´`% ȵ]B›¢@_Š±.$ÌBTÙž}U–’#®|ZJ¶>ð#Q¢Ê‡mÜÄÀöã¯
-d™1†Ú}ZàCKà
-ZŽ« €.GˆÕáaF—¦VDÒ Ò(o ŒÓôCZÕ©–ºÔñ\“ÄÇ'™l…é)½Û1ì¢\£«‘<{,V¸S"á^!—ýþ8aNžôˆšò²çoƒNÓ÷î-Ð…Ž“u‰]þú÷‡ØÆ‹ô©€åjÿ8åøñóŸ)¹Ð‹ ¼=…Œ“sMX=%ékQ”Ù˜¿˜6¿ØG.z–&
-Íþ.èš‚ŸwòdâÆ—Ú]­µ  Ⱦ5¦ˆÁ;@tÓ,Ÿ ÄÀë³!z
-¸~‹Àc¯‡ADãpQÀ[ƒ¤¨}·áH³Ak,‹ êfÔ
-DÆi2N^´ ÒcÉRDÏÍ2="Õ Â6ƒ‡¬‘Á;áV’"¥jàa 1(¼x¥^ž5$Íà‡ò įUŒ'ÊW“A&"ßpÔÑ
-z<墄‹IÉ>ÀfÚ ÖG jÛõjžë†> ±·âóË3¹ôèwéü’ÌawZ5©ƒ¾¥x€l¦ÒK­Ô»sÏÌøTQ>!,†ˆº>B5¦ÏK×s(-–(ïHü’loß©I4 odóê›þ˜²0öhòK¬#ù­C#…2rr €â긡{ö†ænÂZD¼Ü=‚ŸÛ°s8“C1†¹‡JÀ"±ywò<8 ÚɃö4ÿÑÞä˜o¦ŒKG¿±ª­0£ù„“üRF¡g»p‹!F_£ñýq&3tõ#¸€á¾›ñÐI_½±O,F™RmSЈÞa£áùÊšA´ˆÒo}ËUÊ*=ýž6+ɼA‡=Êñê¤0àöûÝ1ˆ"Rä½Ç „ôÑüø)Ö‹ÛH¢@خыûQø?©^ÛÝ,6Ì”•ñÙ½Q4BÈgðnF`š¨‰y*PWЕ NߌrøӞܽé äV{W³HbiÖcŒDM]~‚uò—Bëmm·¹@@
-Ó_ ]Ä®í^Åöv
-åéAªŽJÌ Á°ã¿ æà¥`SŽ7PQÇC#¹µsØÄh”ÊwýÊ™1§/ŠÞm­›E¶Õu:¡ÁØ7ñ1‰­Ëi”²ñ) |¸f+}.ˆ¯¤]Æ,‹ ö„÷ЪÃ!òbkï…c™(éØ¡èƒ(é æM1ÐUWgÄnçðý„ ÑÚÝ ¼Ê@f²•ý’–:!y [+;Ô èJP/·A†qUU&måøª çz(y¦„w-É©€oЪ ó=ÔÄ÷%Ž•¥³‘¨ô%ÍŽ/Ê^ªˆkÂLà¥î”’·+>J4*à×4NâQÉÎAÏÂ*Í3ëЀe„ ±`:wU"‰w¨AªŽÌömoå¾'
-šWÍ«öL=AI:›í—±:˜m@ÊñàœûÝ9d…?m†cNî|È„ÜâªÈØöãØ'ô
-€¨[¨öiJ(¬ææô»&Z£X; `\!š-è
-g1p¶Ï°«R,f¢”½Îm-u4[Ù‘dS1le¢{pYIª^ìDV‚Ew#Süµ2 é =>ºÎ½[A“‘æìZw$%†æç¯í@:ŸCA"² ÌGÔÞƒ¿ñ>f×K2}þû±†%Íí°‡þÀFaN[ùÅvGÙËè³€ë)(kKÒƒÄ-t_H‡2aJÚ]ˆ¡o๯{Ü¿†¦l(6>X,3ЩO»g°+SÃ0«'3Í!&þØ1Äå³Já¼g˜Ðt
-LêíÉ:Ä£á–v€x¨0µzÍ~>¤ð€¦'åßÎgͲ:®
- V(ìyÓ{“k‡è›§oÀ4½ó9©^r¤ãäjý
-jB¤sç–PîC¿•uÀñ#ã@ËQr¯'I×.ƒ5ñWáð•Šlû-ÝÅR•µ8õ“k{ÃØ}›ÿc á;΢é°cü:‚Ò29²ü­ì¼Œ³àëxøŒwk;ÐHº­ÀØ1ÃcÔf ÔcOç@Æ*J΀ ù¼Ô ê‚P'6Ó€sÝö—¡¡ªÈx«!õ €äà€ðH qf—ikÌë1Z€žÇ¶ƒqà#ÿè†Ð¸ pòÓuW¤€û,4¶b/Võà…4n]ç
-'î„}Úö¢_ÕDýSË»)®Žõ
-'ã®v?‚HPgƒH€i÷3äi×;B®B|ñ¿Ò|ö'LªAm‘0jÛ0ŠÌ‡™®Ë¹˜aV
-‡¨/Õ,½¦G¨+OV0€¨³8ìANaš9A57HRôEçw¡žÜø äOk{†Ð¶MÔ´æÚ[&2+1ÅèÇA#dØKž‚„a›¤kžn|B\~Ä<åï„x. q­åÂL© õïåÔkfÄ%˜Ž.*—Å£Ê’Ý ´Þ1/±‰ö”¹ Q²cÿ*ë(kcˆÿñ]&GvÜ@µ@>ÐöåLy¢ëÐÿ«^6­a´‚95@£*+d'‰oË&[¸=‚f+ùÎ’{Éy%
-
-1C‘'É *ñò~Õ÷Hi*E>ªìÌn1ê.·™³¶‚ aƒ˜ é ÆóUþ@ÖURÐi#TYÏ)OÆyHC:åIß4s–ùŠõÆðã˜$Ã>5ð°#Æ3,*»@xç1Ou]‘“xÕã¶uæ¡qQ/î[p[Íi¡Ê6%«4ÎŒ¤zaÃ/ÃùMHïØ_ud5=)Œ[¯ ¦Ø@õ4}^+´£J¦YX6\“oêòO„H¬üKnR`PYÃÚñ«áR‘,Âl]Çà]ø¸ÖÃlçr(!É ¯Ê¼Ýñ£è¡1g·ô!Dس‹(;‹žO9|_z…(ºŸ&þ½ŠèõT~Ä%ºHÒ˶ðVkVœº›ºcêE”àð'þGõ²Ï‘Ÿ‰è‘¬À*¡µÜÓK²¦“6,ƒnc±»,>–"3ïj1ç…Ì‚H®c°¢„ÝbåŸP
-Ì3Hð·+Hme¥TJ€®‚.égî‹ø)¢0ç>‡o…Y*Çùƒ+‡v9ÖäsDŠ˜ò×tIå»°Jaø””ñ(ø)RóUüÏÄSNŸ#ß+GáuC(ÅñBHñ…ÏBšü˜_*€)kB«B¿õQÄ×á«hÞÁ_̪yyG1˜T”‹. ?Š/Ã&(V½d¨«ˆÌ…š
-š‚wïÐEÖ2KǾ©)a0•Y|Ó¡upì\€ø  ÌèW/.=–ÄÄÏK…ëÃý¨ÿ§1SXÌv°² '»IŒùÛXnh¢t§¤SVUIŽÂϤU‰„¸_0‰gpÑÒô_ËAó¡ÿ)w¡Ùü“V®.UdTRÖ™¶SB©lJ‚c•,PlÄ>¹„Y;¶¾›
-*Š-ãA¸Œ®I?v&·àcXÙÈOx”¿˜rä˜qÐt—dqGâsÜ?¥E¼o⇹ʕì­A0ÃåmF\§ˆ»fÆÎ4OU*Ì‘¢ž·’
-^.@훞E™4ƒq…a²ßµ`x" ÎÆXèC¹'I{×›äRá4fa>faX{™…t·Ï'/XºÆXr¬¸ÂRÔ„¶L¥œ‹É!ïQj"3‰?V*„2ÓK¸ÁØ…*ÝoÖ3,Ì¢Æeôñ†>°°`Ô”¬7ò̤p$ïb5ƒ€li<þfÒ#Søè ‚›¶æ)ýMYܱJd²`ê‘JÓEàǧüzÙQCœ]’[1öP”¤¾SZŽ%ûz)‚S°ªL~¦Í uOÓ”«”æ~É6¤1ƒ¾§m®Ø)L1o‰›WÐ<´jÁ~pôNÿ`BÔÙçÐAö:ä`;xÍ\Œ9ÖrB¹@ ~#ûª5N…€t³²Ì!³+ÅvZ¢ $uvµ
->–¢9ÑZ”5l3Œâ
-pd)ÃO‚Å0t>ø¦$2AºµÎ¹ y¤ûœïùiišPC<iµJ¶zòD¨
-ûz*Z%ì$‹EÉç¯Áº±ó{}•üh“¾”ÝŒïƒ[4HõdþŒ{.\]þnØ4 ½›Ï•5ZSˆØ€Ã¢í›ÆBA¨NIj¹= jÄ¢ÓSÝ
-¶ ÑËñ€õSɃöýu*Ê— ™¬†P~½1:<;é•8^F ’J–½x©èUV/ÄxöËé_’_éÛå xá]˳SícX°…ñèê©€8ØÍ!›vÎÔŒD´Åöшº¬¾òíXÇ òD ¦¼SÞ#§PQ‡FÅD£m›¬v¡
-Ü7‘>ù æøW€
-H‰Œ—A²›7„Oà;èQ
-ü¹Ø¾2O>çoü™û0ˆ1Îð»:ÓïÐdô qCáòô¸|ÿö¿,•ŸNËeu`ò„}}Π¯|ñç1ŽTB
-E‘5bŠoÐ Ÿ1Q^³Øë,7æ(ù¶1‘wÎ8&jLÝñÂ?1©‹3KCÚÖãïÄdC¹™¨mükPöçÆuEléºIØd„ØÅu Ÿ<B7=Wµœ­ŽN$¿‰uálgd¥L•Ï4 ¿›v?S@¸U¯uè¢ ½z«R©@=bꆌ¦*oæ”Ê»yïg6{roƒAVëøTš¼Dk %‹>ô1„±„´ç/HK¦_áj¾J)ŽÉÊÓ|ƒâ÷ôo ¸ÖaZ&cÂäl‡ NÉàSMœ?vؼ!mõŒôb1Ø1B•B¹n@?
-´Zcú°›Ò¡_Ñö¦5Œý ­-Kæ¼ô`îcCfæIè?Z­‚K!é¥P¹&‚Ro:ú¥?’;aZPÙ<M{aÁb̽Ö]Ñq2ï}¾Já‰hµª6ŽN!0%@8ñšmªÕ–sæ‘_»É.CŠJÂœ/Ãœ’ïýU
-Ïã¦À1˜…4|~z52{e´~””©¦Z
-¢ÝÒ:º ¦ [¹D—'qX¬ép#å¶d0 9T&z3 UÈ{i=©B0”î(¹ ú^‡Êîiz«6Üx= KxŠ—é]¹žW©ß!e䌱äÄý~¯'Éñ÷H¢ì@užH
-ɇXœRIàü'Ž¶1…)ß^‡ÒdG= €ðHãB“Èëq„ÞøÿÒÒߪÿºx ŒRžiûD¦ŽÃF ?oA—4
-é×ÖB Þ>c{ ŒÊLŒÌB¼±#‡ :•€Á',,ßlôöÚxbÈ(DŽ|‹n ZF»DX-“Q£ªäØÓœÉù+v&[-ìymÈÌ!Â;ú´W)²éX©y[, ã@rP×)…ÌPÅÝÖyh¤Fct±uF¸$Mt¿]¿¾3ª»áùB._ç-µéÙpï8ž qˆÈ4_,Ηⅼ{ß ulNì<9¿@®RÁ#‚ÿ\´ú´ SM¨3r_¿?Sd7êð<©ý&ýÏ)äËN%Ä"²11ª}D<…‚PLt¯³ø u¼^¹+ºmÎ[ˆ^DÅäRÇ)õò¤C÷™
-°×Aàœ´¦ O© õxÜmXŸä)dœ!6yŠî’5z)®^6œÏ¢1¯,˜ÍñȈºN®bNî'9HADŒ¦®LQ;Wñ › -Ç)ErDqÖÛ\„¹˜ŠÐÈ+WquˆǺ?!„Ð\ä.¾Í!!Ï Ç•:ñ6Xù¦`ÌjË}nxèK¿xìæ_‡K õñÁ†“Çpö¯Xë~u½,1 zÖa»œ}ö5wŒÊŽrë0»’Ï;wÅpjÚ #}òYÆvOG½ö:x;3múëí”×@ŒÆ}¬¤bå •—‡žx›™DÆÁS*m“WzÅ| ¨CwÂ¥i,p_Ò?èŸ^{Y–yJ}•Q½4’c¥ ÔŽßñ-ÊÙ?@¾húwä¿mùŸÏì1ìÁ»úÍ“äç'Pjc’‚õ¸‡0X±v\Ï;HÎ ò>Ì[)ŽNr«¥rL$Ã?ô×2èù^•¸S‚·|(Ø¿ÂxϤ´lo Áðg@ü¹cÙIf =CKþ5èríÈhÙ®Äõãˆ>XŠ\*‚¼Cˆ¹ö¢ù† ú/½V¾iúÓ>­ƒ\å[ ³ùBºËI¼õc)zD´„èýä"a´Ÿ7@:GR›ÞÒ¾›ï®´¦W¥7¤F¯xiƧu¼e`&™5›Ÿ ¿ëÓ÷‡úªû$‹fødçE‹@Л•·~ñBù‡žæhŠÍXV²á3›n7·pr
-²-‚Ÿ-£ˆVGM´ŸœBÚZ”éµBÉbb°Í·9n›…)ÅË“ˆéFv@4+TcŽì>?ŽÊ|Ð0œé<y3ø"ßXJ9$\$ÙX[GR[z(GOžR(š“‘_I×<ÃÁBéjZÎPóæ8/›?¢ùC¾Eü4uÞ®„-Ì÷>âgÂ<^ˆâDZ¿L0‘ºqM7AôâCQƒ4ú|&ï÷gÔÉ ÎÉø°vcLxîa€ÑyªyË ·ã
-­FîŒs`DÍO2ÅLœ+zmWª”“L(òüP$Ì0@Wí¨á‹dA„J’lI©ŒÙ^g©r”¹pËÞ`4Þ¾„Ķ^ôzo&g4NHZ¹žImŽ4c†iž(Ý›%ZcÅ–*'쥺pbZé?µÕî<M%Z)žÛ$I9ê‹\ƒŒ¯mùO ‚z/G㪈¬ò¸´–A;2*ÃÏò
-Îg.,O¥@Éy3ꃾõòóuÄá ö…rç8
-&‰‘€Î©úYv‹’*|1‰uÞÈ·.Î"ÅšØ:rü¶;â»=4DOCbVâ¬PËT^;½€°#P;,­#
-»"m0³›ÕUtˆ/ºAb_ÒÑÊðú,úÇg=aPÊ”“XíòPÜ°)ØüéΩ„)Öðñ‘›Ïà“ûÝ€ÿzÇ¥ÿÄЋñ0ƒÂÊzÁêÉ{SÓ¶2Çïèhi¤T
-|\Eˆo‚š(×12žµ[ ª„(òðå]Lý¡× ôhÚÒÍfo‚
-ðõN•v1{eà—Æ¢ÞM1O —SõFúOèx¾:êu»w@§·ë5Ð
-‚óaÑAÛŒ*!‰3µ_£ÊÜì$ÀÅqMê‘-õ*CÚ…c‚py4¤R†­³^sRT+ñÀT%™ü™ Ád€3ƒÈˆO5εQ^¬‹Tfë-,JQgcpìN ]*Ri÷ÞœQ Ñò®qæøœ\¦x\JSy›¾ÃeUj¸’(4‘Xx”±ß
-cq"%†x7/»O&4ÜL蓹³ mʃIΧ ¦bð'Ö¬ÅËNú²ò’7…¦Ñ‚Ûg(YC³4n]_/8˜u¹nw¾šzêŒUöèš66îò÷í` ç”ÛâåO°Û©1¸Á5â Æ ¸;fxzF½,¥²îÄVê¹å¨>]ošxê !$%…îñƒôRd*.Æ·¢ÕóT¸ÝF‘†0’n v+Õ&dE3o,ƒO¤¤-¼\”—ZÚç½`Šø§;ùß O$æ$çõh™JÅ®­âá¹-uñ*ø ü•²fºÊ‡óá|c\,ÈPaÁæŶ"„‰–Fð飷ÍOg+ß"vô, j—»B€ ”mEÀ"B…Í8¥€0V2³Ö
-˜*Ùî– œž!"îat[Üv1Ò7¡öHsUgÒRª©ªÚð¦~ ¸Ê°¢FïFë”ÇÄͤæ³7ø{¯9ûQ 6æ‘¡CE£6?®£陶f7‡0»¢þšÝH‘xò@2ð[÷µ,ÜU/FAæ‡èjzñ”ÔðÙ w¾—A’h5¾½7ÍŠ}^ÙlíÄl°+Ì.ÊQR"4t½ÀÚ—¥®‡BËg–dT±°Y ¸âAÕ²E}Ï>(¾5“¨7cX*å;aü¼Í¡F“)Œi¯ÃTCéèÐÈ"> ñÆÂÎÐxçêÌûç?7 ’ÛŒM0srœ‘X±DÃ%øôuI¸Ubòf9«0ªÂóFõ@KÖ€QOôb|S(÷Œâºqõqœ(•„°m o—h~š¥Ø2rXfFØÓtŽ!éL6/™š¢ÊŒfß<TÆVo¾“š”¨¼¡1dV®•33;Åò(Ø;‹/ß"‹>»U:™ÄßÆŽˆ/’ë¹nÔÔj0öÅÕŒ~WDîÛ:4C·‰Ý Is”Yð{&œTšÛÀ#ñ
-ËÇo”†ªƒj„eà„X™ n«Æ 3"=Ì7ƾmÈ\6/è‹<ó;O…ñž²º` 34ÇŽ¶Œ+åG%Ø×i·0`Ø‚`Ô³Æ2ÐøúŠ°° £s»
-Ñ•² ¹Ò#½é'K¯pÉÃim'9|ÖÈÃß@1!)Ú ]Ö 4ìeö«²1¨¹¡2!‘¡Rƽ¶¢¤¸ÎŒà_@°tÅfåè›àƒâÍŠ£è…Ç/è6I,¢Ý k[±®)\ë`ºF¿,¦[ÑZÔúó‡Ëo"|zݯNZ]Ù®ºWÍ&&­ÎÙ¼„lÌh¾Ÿ4}oC@¹˜Ÿì[)ËT&œ3øV<²Q;ßê1vêÉåC>Ê—y¤f5jƒœÈ¯ ¶™‰¯ÐñazÓ“˜$ªz‹êqH£ˆ°A€z¼6‘)3e}øÈ=ÔóÌ6çjvp‰}¾ÏàV ÌàtÅÂÆ…ÊwH¡o„å˜&r\÷ÇŽæpdŠ ýàY]>™› ð؃Ah<yf̤­Â4­pëµÓ“6¹FŒ¤‚b¶e8ª²,Grˆb!ä6>9)ýC»Äò=sÂc§ºS)Z…×dþ'±×Šƒ¥ç…¹ä\,Aå?o«H&©rêð”Ax'% ÚüÆ(J RÙ¡éev…`˜¢ªÑlvQ2ˆAùåÇIÊŸˆÚw"… o$'|yO
-Ú
-‹ ¤Tô¦VלYÕ„År‘ÓéʆLïµÕ_­ÅO9­<tTXA{ê=Þ¤V¶ 9`4­<!’ÒV€Dš™† ÛÚ“èî ƒ5ø‚Ð.È <i»L:åÞçÒ TÑSL‹Lºù"ô >ëÜ6$`µd*í8_† ÉÕ²i’µå>͉ P”%…ªbÜ
-L«aÀkí{HË\—(›3¾¤ _ÂÅ*„Hv!T …Üi\$ròQb¼0…š’Ǫ‹ íeíÄT€„†áfÔ7¤k†4V± ¶Ÿã@‚üôÝ:«8O?1ÜÌD3'É èy@`7[…y@
-…6v7šä90Ù®3~†ÓgrÒÈ!Â"#4úíÍ1»axØð‡!oöy1dÀIE>°–nÚDnQò6¢!^Ã`ÃüF(ƒãÃYºÍ9ì -•dsÖ­uE'Œˆœ‡Ñ)…
-2¦€3£•
-¡I[s±u(ˆ:dØg}ÍöƦðÓ ýj÷6èÁÀb ;†=€ç0
-í¤ókh¨<W /ßÄXp˜è|}÷{g4]ä™}¨þ”g{QvDò`w›ù9&Àâ `­ywÆ<)YNií4”$Ž%£Ž|2v2…°êÕý bJðZ½Š~/«ðQr¤ýqÌtãL;FÝ¿buw oËjAš=]ƒi 4›¶’1Úå¿*òÕ¸X§ =©¡&ÑŽI
-L„¥˜dÍ’?ŽE˜¶*ie}AË—ï—"ˆK&ëÍ”ÀX({ÏÉ¿‡FÀÔŒd%m
-üªÎûcƒn›½gÒ'Ž+~•d¬ó &xà®36+ÙW5Eʾr¡¡6A¦C~â,Ãë —ajY7{qCzÙ¦Z‚-Cűþ#›/%8¤E $_² §¢Çzþ£¢A7H1ô&ÍôÇE´9ãœpÂÁÚáSÑ#ÝžJð78‚z·’OžŠ
-oÊ…9à# 
-›¡ ãTôýV™B;¬v3À”ð0 Uh¬·Œd&‘j߉"EEô‹ñrDY—åºKIŽ;ÒÌŸWÑ*òbËã0õ]Òq»Xb¼HÕoj@±„‹×E^&½¯¨Õåù+1L„§/U;%’v}–œCÉ¥Šl– ΞòΓJ4ÒÖ`¬_ˆÇæEûØs$؉ =cÁxïf_íësÔ•b~³<ž¿'— !£YµƒÈ~{ Ò®DÅôÇa×ÈŽìH—€å×E¬á 'ÛºÅ
-|t虶[á:Mô¢èɨ‡MxÉ+ïcB¬J|}ºJÂcÉ-Ÿ-ë‡Å9YßðU÷v,v¼ƒ=(¹):¾,Õþ~Ujⶡ¨« 20nkå¸6"( çœ/;J[@
- TÁ¯Ù·™ŽØû¶ošQVth¼€ªHa ³AÐ¥šØÐlŸ…ÓÃ=ͺñ,sƒú@>/P ½à§ãä—Ö h°ÖûËWÃõ,„:MÐTÉà×ûE\'óæ QÁlì*Ý‹9ú6N–B0G¢ÝkêÏc@s~(Å©ö1PTM ¸»Ç!©á¿à­:ì1…_'Æ-'ò™uì&ÄMÉ°{€ÌÈ!ï´ñP—ù¾Ä3&ÓJ—ÏIõŠQ´?Ð&wõë9käÔdŸ&†qfc{u¬9«
-Nñ¿ãðáë*Š”³H·ÉÍf”õEÔŽ}N¬@½ËcY“ ¡“•€,kœ‘žº "ŽRqÛ<àÀ¸Ójë>»O;É·^RåÛ˜9+b4@÷•
-‚¢%ã»Ø=€L
-\ŠªÜBœT»ôP”h<ƒ<Bœ¼gi$'z q€‰!Ä…º[†£¦‚¶Î;g¸…I`+³â$ùÈpqÏœ€ÓéäBKŸÇ¬`J*þÙoùlÓ¨2gCø‡íæÿà<§’–sí;!B9®Ô‰½ÖO6,!)+¼nzV¨}HÜ_Ù`ÿ(zàØTæ¡Á`ÿï¯øåo¹‹F÷*.˜šôcU¨¨ ê8w’¼&½Æˆä|+%¸á4NêÔ¤†ù’;Kã2JÇTJ ¨ª$x/Jz<Eämxx{1çOìÀòU)Ž ØtÛ¿Bôb(˜+/aC'[¢ MÚSSâ3¢}E{;ex,Æ’,d¼‚ÜÂ>ÄM9™¶%à S…vzöÉbK<}÷…LEß/E2)4xh¾ìÖÏ#õµs†d3Ø8;”h‰¢¬„¹ÉÖ ®´B÷vúŠÍs¶”e2–Z%HG/!µ9ð°$ÙpV¢yJ›Yèv^7კ¾ÃÁÆâá4 tòá«j>n;%¸E™æPÝY½™8CÎú½\p·ç
-1ZÓWFµo¢f¢q¨^+¦Ž㢠zÒ>&)a±ós˜6Š”EVº”LA1w¾½íp,"qNMYZ_Š‘H0b=}?eÅYb Û‡ë;jq–ãJ€B´WH†¬Dy—ËØpÖ3ý\ ,g¡àÝun…¼ªo?ÁÈ­ Yùƒ”‚&_š^ä¼ /{0[NK"! 7‡277ôšvñ„*‡¶O³°€V&í‚)®ÿ3^&ÉqäJ=î ЀÀ¼ÖV·Ð–ºÿ¶Ÿ$«
-Ù*ûÖßDÑ$bð¡"ŽÝw†i•ˆÒ8¤„¨|d_ËI‡ÒÀ5Në¬4Žç×·ƒ+l½#³lRçR¾’/É·“• Rkȥäu÷ç VH¾¹š7Š,³ ÐçZzÀ‘´MêcîÖ'ÖËÆ œ ×{m`Ô¨ÈɬŽm‡:"/ëµÑæ²P ŠÅ#<ÉÏ1ùOrª8é xLbÖ`ä5¢€Ø;>GæßÜøIv bö½â§FÿÕöOòý], yÈ8´ZÊnÕ|°Ø5_d‘`¹ç5ÇYf,W8nHœtôµŒEõs –åôú.¨ EæßPd· PËhˆ2öñbÀ.!—ì7ñepEeܽƙí3†¸«@«%‚‘çwoä(¯Ê¦¹á#äoä2/¯øØr@òÚ¢ÑÜ+vò UGIwnêÿ]™ ÜÔò W¶|S) •[“«§yKb‹yØv¦2cjÍü ÚGcÄo;ð²Þ
-FIüµ\+AÛ·‘~vÉðË(D
->v»¦*«BÖ‚“);Ô0A.0Iƒ± pošö<į‚%òœ€œîÎÁó³æ< ÛùQø'Zа‘ázÔ¾áÌàÈu•aHµ4I
-zN¨
-T†êá×l§lé“W¤@e¨‡ŽºS4 C+ö5?'q,RJÆJþÉ U$çû¾¨+À`˜ô#\;ÑÕÌ.’5ìz”)Nemµç=¦šqÇ›Ã#ëØ„Bˆ†’Ë•Ð~²åå¡-ÛÀZÀ­qqÎ ˆ}€€˜&ö6›Ú‰Ù(rj˜ó½|o€Tž.…V ÏŸ&í†L—âƒ`9(#É«²å‚ÈzÃ^c¾¤±èâ¢UB0âhüF¼Vïi­pYˆ‰ÌÝÅÁ®0_
-7 ‰Ó†Ö÷æ=ä4¿i6KTÚÜše¤)èǺX#QT=ìøÃJÍõ×å“ mŸã$§TzÚuÆb¤ªït£ˆG‹ÁÖ9ž‘þ* OCʽ^†™_Œƒµ¬x<^Á¹>ˆ®pÙßï O1¥l'ýõ“dm3»øF˜žíâÁãlüpQV»¢Ÿbª††–½Qc€H¥]å‡ú,ˆÄ;hÛÝù'~J¼¡§è{V‡T×w !”àZ”âÚµçQã¤ÔµG~n…ä‹/"N¨ë¤ÝÐçäd«Ê¼Äö”¢C‰iÒ´çë*VÃà]gæÏdQ/`œ6•ðW÷˜ª âSó5G¸• Ö7“2#<«¨ {Í|LŠ¾è
-á[Ã~”øP›F=Ö9˜$]Œ¶ù¤–=×sÅFèµ~ÿrK¿§©Ê SŒièÌïb8’moªÌý4U/ 2h2é WL«ãT¬<0$4ŸxT“ÚMñ
-GQ¨Ðå4´íý}PYF˜‰o|ùÍuo‚JðùNV9g1mÌ{3;ýß#H³Ž¹dÞ•Fæ…'PTBëÌNŸþHƒè‘W왇)þ+ –¢9“…—&\ºižslxqqˆÏcxSÞ«@A´d3“ ŠX“€ûMˆ1·ó¶>çRŽv“šöÇhá©
-.ϯÒCv€²Îøý
-•p¦Rõ±åb¾–îMÙ~=-çdIy’óÀ÷·Ašã¡–ŠSÆÔ凘dŠå "?š"~F8B vF€¼ˆªï—ìx`‘jŒ "!)˜.«3(M€ÂzЋCúÌ*ðYé7¹¤Û01öuчÔÔ1nÎáÄ&±Ý^E, 1L"ÿ]W%KønY>b’öŠµÖÏÁø°$l°?ݦ¶xC¥™È÷°µcèhZ9€>ÄØxèôÍe@xA0ƒ†Ûù“ÁÉátGIwO?€žKx‚<5â
-sÜ¿6]IËBT8xyC»d`íšo?Cx94çÓžÑA*âU&Uj¯HXþtZ›bG»o¨1ÄÐßsšÂ%X˜÷.KS½.Á-2–“O§z¦Ü™¯ZWØ©
-÷[p¸¼½¯1…{y'_ç4 ÈÜ‚é„©2¬Ê Dé‹‘DÚÚÒWÐkÿöv2 -oƒ ŠžFÖÎÅ92é…¤@ºó÷aØ[ñÏŽÁ§%0Ђ`Ðs™ৠƒ‰ÿÙ5`ˆ T'é«Ž0¨ŠaÓ0
-RLÙ¢±!‚A•S؃sY0«]˜WäT¡°Ú¾
-…ÎaºêCØAàûŒô/F "tmʽòîév€ˆêIHyp¶¨Â³ ×E7(ôÙ|¯XjˆºÚ7˜
-S@ŒºCø%• ŒaY” é…A<@6Y”\å~p±wçðåM:Ò÷b±Up ${s^Ò$Ãï6ö)zûµ"bWD¶tÆK£#q¡µ?†úCZT0ùMJ"˜*Žîæ$I¨ ›üŸßD"½Î1º;×âd
-ÂJ—4¼J½›ôЙTjT&ÊÎ{­÷žð=_{…ÜÁ\&§°¯bÐ$®ñAÇVdʇôOž ‡˜|[Šx,)®ÔÓïù€.FÏÒ…_?^§¥¬U +Ânù]P.ˆJÐ=Üõo„øœãðÝ4fŸ'³‚Œð^Ò ¿8±’E¦Ç!–Ôi|OŸ.褩I%-ȇ]ÅAÛp®é…g:ð¨ùí7ª†3eGyÂíM"=C"½ý(œ=šÅØoQà÷‰V².{ —ÁZç­ðˆJÅÑòuÕ3èyùO/
-¹|w$woz
-±r@P”o»D6
-•àâ¤Ç®)‡îs$z´ƒG•€9r„EANü*ŠåÛ{®ßÄù¬
-øD~yÿ+F¾´ˆ'M!‚n³(*Wè°§<X¿ kâÁÝA(Ÿ^ PÍïjŠY5ï1BCë'æQq^㇟!°'ç ¾Ž–ÙùYŠ2Ü<¿9 Œìj—»§ã˜Ð=èÕ+h¤à´¸¨ƒmTqÊ”·ƒ)úð¹á ifðd jŠ†·aNÀx”tSÉŸƒŠ]XE¶oÉ·î"«0
-D<æD ‚=ô—œÓ†úø<¶g¬„/+UœâoCsfÜ3PNI[:ÃïÑ A´ïߘ! Û˜¿ˆ@uzŸC ¾¨a嚸â¾ê³ejÝäï³Ï‰VMmeʾº¬QVA¡ê˳/GcB—ëµ{F@»¦]^‡
->ÐüœÂ†1©úƒôÁ¼±Ü¨¸Èúʧ,Xﲘ]ìêE<kê£oá4Œ-okyq¯6‘
-)ÎQ¥>JB¦VÓ€éQy;óÆD9løÃiÎB]š|‘ósÃü°°qLŒVoÇ‹9ãs¦Üg… ´çu4×ÏÙ8PjþÁ¥"ªbL‘Ûø¶Å‰Üç•„ÂT—¨ïÄ€ë,ÈÌJ~n|ê/p«‡
-€6›|ÇŒ
-û0QJúÞîsLæYOw¬Ë>v¡)/1h©ÕèëœÊ>Jn'Šó›y?Ÿƒ§19IÍ8cË.Ç€Õ8¾´]d‹ÄÚºãï²ñp«´Ô±;`ØŠ
-¡gOÉK¹ö—’…4Á¾PC½¯ú(’>°‹•®s`0 Á6[Ï»d'MÚéBdÒ/RØ«.hˆ6ìrÂù~¤ßÊ ƒ‚Z‘ä
->‚Øêt¿
-äSäàÏù6}A´ð³âl@ÉçažhÎ8–@Ȩd £_¶+{}¬æ?*R,é°dÚÚÿ]$/M6B<¿Aˆøuicºzx(Y Ð.YÞ‰çQ‚:ä·.¸´ù¸(Ê•ËѾd»(“]¸´?‡•‚%û^ÂÈnC:òR"€$¨¾•ûªÏ"¢)u&«º^Î1ÙðÇëUUº ÕÑÁù}DÖµ&k]{%§•¶S”ÏÛYË7¼Ä¤þpH]ý­ÁÂGÒ×<ohÀ&Õðñ=?Š~{뇚µ—Ë(éR,,h âó“)Aßon1ÐçÓEŸ-<•| âPòè¡¿I†È0ýò=î ù„·ýá¸æÂjqÖŠWákp Î_ ”¶}q«ß7ý¨ì}—jyN¡ƒˆ=.HíKż2N »‡IXÀ¶v6åPäÃÄET©yRáMDÊ:ª\Sq2EÑÏT£Á(ŽVªÂÊNÛÜ‚ë“ó>R²”ŠÜþZ[ª/“¸ÒÏ¥`Vaé¢RéfïŠ=VáG…ßt‘?×”•ßŽÉÈ TýM 8T¡ØE1)‘,œ™Å÷SRäÑ~ÓüZ$^„_“ˆ‡OðY¯mýû*á=ŠLP´#B7 £«oõz|Ò0üIâ5ø¢óè@’.j<´Ã$¶¹îcÚÐà@¬¹àÛ%¥P_^b¸þ©†“Bq@ÿÖ㢖&ãFz‚‰»’k—'þ"¹&— §NhU±´ØKÉŸ~ì×_§š9{¿‡
-a6ÿþJñÑmÊÍNwxòѸÒ40ŠèÜ¿Ç"$T¹ÒkƒP~|àQð€Óûˆ(gPGú´¶K
-ñú ¸ÏÁÀ³’Ô~¤•€vLêè Í ŠU3¨qT•!ËæˆÇÁè*’e-ûœÕD(t¿Ÿ”Z`Ã*‚C¾¸ÛxsŠ2»ÆUBßÛ9Ju+ÝJœ²0cø¢Q½Dõìùí?+56ɯ¼‰V{ÌG–n7ÞYlpÑN{®ÎU@ðÙãòø{Pll@ø=.âÁòªõfdyˆÊ(sŸÓ}Ñ&e_@Ñf¡ùåe“ÜVá«ø*þ\{–¹E¶Îý·ó5 ÊÑ_§¼H,C 4ºÙŸÄ!Ç*éOâjI’ÅUž
-' OFäk؉©€ÖdÍVÈÐâÔ÷ÖÄ@ÜÎÌT¤Íƒ°ÙöÃSFÃU‘ÈŽN´¾(h8ìåÓ(h,G^ƒŽdóÑ^ÕÒNEqáDEº'Õ,`€!…ä}ÏI">œ/àÚ
-–ˆG]‹„þÂ7;SA©'ñ¹—ØHLC‰î…³hËš5ÒiÞOÜ— Gu®uˆáÉ}MúÃ4ôMHotÝ"òI_oB^ýòOòç WrrЉMþ\
-d×è=Äx9³GìY€ŒZ³äØ7èF÷™#èçÝe+Ž ‹ÂKÒm#NŸx虪RØÉpþt)­ð]jÍÇBƆtaãiÛ]ȨXlúÁiß©.AxåI¦ÁÒÝ9Ì=I5òm-ÃÄå„ lÞ@~‡ /—XÔŠN€¯2,?0y¦%ÁáJ ÆÇêï*¬ˆA —íáy•X
-Ø`Kpaê¤ÉÉPÛže䆢ù˜Ê3«íÅv˳ÉLaý2Jƒ†µ±E D… ò–=¨'âüx*
-åAú„SÍæz
-C!ä;±]Žvê›ä·³9Ÿ´.{»&™1nâžrÙlø Úçà¼eБG?‡¼<HöW„`Ó‡æ„zQÏKÈV>Þ\ ²›þ~NïZ!sìÏ+kw Ú;²?ûÝÄXi‡pWØÈP¤áäÓ}ÖWÄMôF0 ÒaÌÍ|UÇ7`“QÈ6üỄ6 ä¶¡?DxânÈú
-bÀ¼CØ_!l³©I5ýD†)‚œË2“‡79‹Á``"6µö–>N—É¢DÔÈI½OÂÅ€rà T{–ïµ6ò¶L„£?çRayRñcœswìÔe5òT—†/[.{NYC%Øà&‘‹î% ›i˜Ó±ÑÅЙ•Ê75Œ%\Üæ²ä8ï`/vPöÖh²rÈPߎ´vnŒªŒžÎëi›Ù”¿Þm¹r:C6@ãîLŸYñµÈ)9
-åË3Z»]‡ Äïh&fÙ—C/ÂζŽ´ç›þû'fý¾>©± Ã>êe{ú³b²h›ÃVsúutÉ·²!•’"Ö¡» d„
-†’•PP˜Þß
-î¨P^Ç$QŽaMv£- ê
-#ˆ6‡ÆÊŒ<Hs‰k¨c´]AЂõ±Sõˆ•â‡
-×@6ÙÁ…áÆñÛÝέið®6œ;1lP¦ÙìÆWî8Ô26À-Mƒ"à+öÂH•˜·{ à¼3 ˆõÇ’;3\œ—í`L»&Š
-í<½MŸ0 j8—ã?é 7à†¿°ôÎÄm “I6g{úIUŠý˜ˆA×Tƺ…ŘCÕc¹ ‘D{ñz¾7ý—­póÁ7E ¦^¸Ò#ºð²¡]\èÏ)¨fâå™+,U•§¥]€»ÿ4æšìë'7ò‹_z•¡ym–›AÃy³÷˜_ǘË|Í ô¾¡!Øñ4„ç C¶··ý$ædaŒß˜L?y7U×*^b¾þ»Ò³ÿ(0hgéègLÈ¥ìŽ&å(oóç&¦ªbì ´a@x0s }û¬¬
-ö†¢ÓŠ@YÙta´…‚B –s£’®“Jëi3²QuP·Âz”…q)—,-Ë'¼Ú¢OœÊ@c«È ˜sŠfn:ñ5X¦Fñ C¼MFe„mße’¡%ç*Û&µ±yˆ| Ï
-C‰cb>xÞkCFµBGç1†3 }ï(~³6™1„h†:M%¤qY©%}/íæÄ8è_z{XÚ‚Ù…äÑöÒ†æàÑ
-pªÕSikÌ“v,ê‘M Ï¥õ‡!O3ò^"ñ±ö‡
-g
-Bù°Jˆ¿7½áÃ"“å©Pk ’jrhá>(@I!’õD_€N_!`!‡|‘B»3|‹îE‡ŸI·±IˆôÊÖh
-fΖ»J
-¶mY3&*(œ æz°¹'
-ínÐë£iÙé™.ÎIA¨(cOã$ ¢Fu‘“ÍwCȪM\!à È…²)õR2û&7éæ™
-Ü¡,óL„DeƲûËù/¿h‹hëQ¬0¸fP¸è¿>´¨ÑTšc+41´}A„å°/À™¶|ÎFi€÷ö: `¾ÖP­†1˜”Á)Øv5í“´J
-¯ã›,/|t‡ÌдŸ#(í„É5cDMÃ×ñ¹|r3úT·÷¸¤BkÕšâcŒlK=´)=ºCâ–:㌌6Πª#HG‹A0Âñn–\m.V 7Ý©>x Õ]õ!`M»Œ уhüŒT㘷‹
-¼@-å!Òä<:_~$î-„š¨Ä¨Wò÷Tê•·IÍç¼.£—÷eô$¿­ÐD“ëzk¥šú•‡PÝ+^Õ”etfnÒ¸¥>W½YÄ(Ž;zîß‘üñÅ^õôëŠÑ<‹jƒ—Ä娧˜ Í™©D‚ƒ™VÍù¸ÒmJä’ÉLM‡™ÆÊ¡‰‰cƒƒR¦ÛÊît؈’á›(¶dGÁÈ#Jh=«Úo~Ï«¼‚{ @vќϗLyÁDŸ“‡ ÊÔ|z"Xª—cš/è ‹G^.5ÜÐ/°&@O¸ô‘ÙÌ8ëΟÝ|¡
-VzV—·š/h*‰ íOÙ™7^áF†É‚sÂV dàu°:5«Í¿e¯`Úa[ ŒlZ˜€ÎIq“QTZ†æšqNfVøç v#Ô¤~Pl:P±Yqé³\C.T{ jØ}P˜*OÍëLjÛP]-Ô¯ø½žÉUéÇV³6˜±6aÅvAIPs²Uý
-¨¥ÞÜy6/L‹³ó†Ø»Õ†Ôb‚‰I7+Zœ‚CNÜœé¢Ø½xúOÑɳ3ÍÀYZÀb×ÉÂe©£u¯¦PUwQ@ ²¤˜W1c+ |ˆZ¹ÏƒÐ‚®Ý°ãônÎd2 ñS¼«d™GUÌÔÑLÇì—¿‚êhi‰e?ÛÙÛ9¼1•C­!Meƒ0wgäK¥Â÷ÏU(H2»^·‚H±¼Õ†Ï?­¯Åu1ŽQYó‚ÍIX»ŠÑ[þÜœñf´¹Fj€è°i€Bïù/#…;½lÚ¼{3Õ—Ðü6¤_Ç›Åg4…•¢HÐ<=@6ÂxAE:†¥3:‹0OËW£?«ˆ„Þ5…— _Ÿ‚ @Â’6›{kÐöÙÙ‡Ôf¨0ìý_§›<g9}£]íM9[,;Y6E=‘A~?‘»=B
-v¬òÍí¹
-ôaï²àYŠÅçiQ[Æ9|¾6¶~ê€ïh`Ñ!ˆ–É››ÃsÕÕ”Ù¹Ê@\`­ª§Z<AP„Dݺèí!5ñ™d|%¨øe|wAõRzŸñ æ} úA™fböʈѳ޴ʂ„u§î!@ßvÏ! ¢.óéR&bLF,_‚8WÂÊøpsO˜}§ÌK]=ôiÀB~^þ5ûíU@@çö¼ü5hP/1dr ãL Þë
-œÐ¶  þ^=„•¢‹~è²@g~,¸Úy8L j°ÏF œ/ªÁ—û9@y# 0O,úbDrUôšã:œÝ((hý»3 Tý
-d LGzY*t݈h¤[ž‘ýQ {ÍUæÄG#ó–S™LDtI ¡ÌÄM4¶4°‹†2ðlÙ­¹ŽjP3v—W¼z!(Ä ‘.µ‚&|!£/·Ÿßþ÷;ÿ´çÛ+ õîÞ§E ͬ$(æïA *ÅÀdg•dÍ–¦ Z(ÝCø ~ ÍMÝC€Ì5Ëy;Éâ·X ¡k©8‡ÎAüJ7ÌcìSJÃ;e¯;[,J@‡Ñ¨;
-Ék{ •¥NôE«QKÈ ï^½Ëžrz±à²Ží;
-.@%üž#êÚ²<„ÅTk@mæ:H§Ó|ô’V
-«4ájCž†g[ÔäÍ“–Õ$œ•‘^„†)&‰W¯!¤Qdkèù†à[€f\ÃÍCRôçµ=þS×Ñà  ‚EEí ›Ú³èýù¼ŒùšÚÚh!—¬:¥Ÿ 5$yÉfC{ö7Cvï¼à«  8æþëÓ*Da,(Ç>¦jïÒZš¢è„‚
-@fˆ¢Öæ Ý%g¡¦Dåq«ŽQE-šGØ©æàÅûÜRÿB êiR–‡FAy‡GÈ­Ð¥=G¯Ó)iÛwÙOš#Å%È„Å@tmOµÈÖ¿+™—1a5|XTÚ¢²+EH’ F†^}xç®O¹QÖbˆ_ |]N²KI‚Æ„WµaÀ$ퟥ‚äÇ ¥Lôö``¡c¥=#%¯6Ž…ÅQ
-³#Ìl‘¾)Ø>úR™ñè¸Ýð«øXf¬o ŽÜˆ¼ô}VçÕ Áüµ›pÖ±,
-«µä‚s
- ßxíÈÛÈþQœÉ1œRóy•U>¯ò†vŸ³u¶$º²ÆÒÃ&)3‚ór„$i*é¨vÐ宣±áó*6 U¤fÁ)
-¸Æ
-º0¡‹•z.;"Cïßçâ=t¹û£e*P©¨Kàã w¨;l<D¾õ*ÙuMÖP)KÊÚ4_½¡|?>_(Þ£,QAÉp {:ò57õ:"®Ì°ÂÑßGe°iP|áo#
-—OZÅ8¸ø‘¯PJÚv2|
-w¸µ?£Ø1…y”¥h€’æÊ "„Š†…¸¯Âgc&[Ö¹6`|1êæ–¼¯bý¥•ºlmp]Œ v±¹h±gEÞ¿5ßO Mr³Ái²Q¾5œv‚˜ãUuöGí+!/ çŠò]Ø2ŸÄ•[Ë©[’ëãi®ŽY†lø$3ëmŠ«l¶45÷F¬ÉÛ•û\ЉwLsk¡8›u;nH™½Ú¿êW%8F“# øÀ¹¼vËvÎ5ç’eО^@”)ôȶvæï·¼…÷ßþzûñÏ[|ÿý6¶&N¹2Ó÷õŽ#‡¦XØ*§úu ].eC(J~7D†Ï„P¢A2²Ã3Ö&H§S…k9"Z…ß
-øc¶Ãy_GP»õ &Ž²"ß‚©vPxtV?ùaòÕC 41â[¼ÖªU‚IúýÓ‰•9+ 8¨2ýxc„0y?äà™Ä±L!Ï5>7þ¿€=aMZPhF;¢¥ï¸Ý’ïGD Õ|³¬d<oßäÄáy
-f7Måwm
-ƒÜ‘‘+ÌäE©º” ¢4K Ôï ‡›3ìÚ”Eç‘D0Š-ñôÐöÏ#ˆR †DühµËRˆÐü(P„ õ†Éø¦äÕ™h
-™|@=<œæà~¯{}~gG}•Û"Wö} ”kû-D|eg<Z>dN
-C^šlž» Em5wc ëšä Ú´E¦ÊKhÅ
-ÜÆË41VŒl]%{ÐJÖl튛bÄDŒ±sÒTŒí-ï©ŽÆѤv„`Ö%J ô÷ãí zÈBŸGÞžÏÃÉc‡–Û¿~2¤"~! ÀyÇ—? ‰¿ü©‚è^eõà©¿Ÿúð,Y—n^u™Û1êlÇQ÷ÖºpOæ«üK ChKÆÑdz©wá´a°€!Ó»hÈ—ñjÛöþQ®«ÒÖ§ îß;äqåžïãí´¼YˆRâHHNNÚ":¬Éž%ÏÑõ‘sóºr%û…·jGJ:Èâ*1ŒŠw¯q‡´STV;«ù‹[µý3ñ‘¡Ÿ{ù€ðÍdZ9tB óÕ1ô(°>¨yÝ}`¤Bâ›»OM¬£É²Þµ>QÑŽ¨EXi_ŃJEÊ÷Ã) ;ˆ…s
-ìUdƒ¬­GëO4 É›­p¤‡ªxAw j* †/h&üá‹ð91ù9ü³jh! ¿ê© ÏZ÷K¹ü0IM˜&qDvüË@p<S3GÞÆž€J¯˜¾–,†’-ã*œ—O„ÁŒÀµï Á±¥Êãg]H Ã߬ÿ_ã±*SnAÖ@Q(œO!=À”¬P«ãl¡ÑöbÑJÙËûd¡ÿ`
-H‰ì”ÙoÇ€ß è[¤-¶E•øˆmI¶ËFbÉ’ê¾Cݤxßäry‹¢d;Žë&uÝ$@G¶E'ïs)êŠÝʲ¤ˆ¢xì.—”íý?ҡܤiŸ
-äeÌG,æàÌî|¿ùÍ|÷ÝOƒ÷çC $H6l Ø@"°D`‰À $H6l Ø@"°D`‰À $H6l Ø@"°D`‰À $H6l Ø@"°D`‰À $H6l Ø@"°D`‰À $H6l Ø@"°D`‰À $H6x?Z±Ÿ 'Š‹ëÕÂ:>Á/â¾[T\Ã)íN¾žáE­EÅ#çkp¢N& d5·`Õ «ä\ÙEì|§ˆ¯ÄN¾‰AX.“ÈÔ ³KÀWŠNao¡—ÁSÔSxoUá½µ¸A/mç`ŠúUg­Ìù¯î“=j5_%bǽèÆÊÊÊO•`5àáš
-Q‘¥XÉñkFP‘ƒ.VZ‚µ`C%˜°0¾³èleå¥r¬²ªªS+ÎUV¼j7ÿ¸}á¸lþaüÿ¶Ç«ÿóyPè~XEiaÇák)EÕ¯ªÇrÿŽåÉS…1׋Î׉Œ2èZK_Æm-À·óؤPùÑ‚*/œ»PYYZ ae%¥À«¢ +ýçþþ~Þ÷ev,£´êxÕ±ãw/´ÕXUyYYe—ó‹”O?@mÊ´Ç&K8‰Þø’®gß­éK5}¹˜²—ˆ8I§øzÚ¯êH‡ñ!:jÑzuý; ’šø²‚s°¤i¥|ÆÑlТ 6uÚcâ§}Ä@Ò¯ïK¬ŠEcß³YuÛ“/Äõ;Óâºä’´.½,­§½2NÊſ̲̄Tàƒ»Éà{‰à„5¾lÚŸSs¾ýZX˜½”Z¾“YT7ÑNóÓ=~ lÜ~¤mÏôCq§àêî¯b{ºÿ|Ê)nÊF•=i§øåSu1B˜%­ZʯéI»•ÍI·²ñÙ#A%íÒr_ÆÆÇÙ°A”ñꇨ€EÍƬúL˜àï-Ê붦‡K÷gÅWç5­ŒßªJ»M¼ä’Mº7m¦]“¦Ä<ð™”íLqßxúYÛof†Ê·®'뵈٠Eþtf¤üÉ'½ÅÛŸžÝþrðÂÖƒ®7óüjàÐÁú¬Ê¤KÓžrãïÑ“8±™¨c"á×ÅvùÞ¢qp^7˜LL€õŒR!57Odà‘²!ƒ ãÕt¥ÜŠæ”ï=piZÒ>]Ruÿm¦ûôö,·Œ ):ŽÂ&Ù‹˜Õ˜Úìɳ¯%µ»sòF*8Fл!îQ4í;¥õI#6fPæ6,ÆLÄ$Ýu)Ú7¾ì?OûM¢T€x•í¹u‹åèÇ]vÕ¨ÌÆ1%$ìŠ^öKßÍx¤ LPÖDäm/×À÷bfM6JhR;œ!uÇ~EK* êÈÆôB*¬îaI£<¿b·1aØ=Ÿ¥LĨÜ÷È÷\â†LÉ®à£/Vͺl:î¾ß=Z·;²kãŽDÀ,ß÷ü¸,äEÚÇ ×è•›åVo–‹NÜÈFlú,i”å×ôbšTvS¤¦Ÿ‰âüüšEŸsRnM'4ɘ•›bbV<¿n5mÚ'™.È„¥m4)íJ‡$M‡niýÞ¢´ÕõÇŽŠØ}QÝ¡÷† 놜¢úgEWöç” LÄrÍ>F¯ê… ©êÊx%Œ_ÙóbìÕšOx5Ûsâ+Û ²ºimÍŠßN,é:ȑИŽ
-ü¤[Rè×Å=†ÁÇ3D žœ Ã““pþ–F*ÒÞål@TÏø…u¿ªýÀ£îLx‰áLÄaIyMü½¯$W¶><µ7Í+?\âW3.esÎkMûñ™ñk'¢<΢€
-G–GªŸ>ä¼¾7ÛñrØ0Áˆ¬r:bUÒa›škʆm&l‘Q—òÉs¤n%ñá|Ìf|¾i³3ärH›ôêûËún&`¡AþÅ„W¶¦:ŠWþÚþ{çxûkñG6yÆåÐÄçå×v§Ï<ù¸õõg_ôž¦âZÊ-ãz•-sï×þÒw«ñ·ô2ÁÏ‘6<¾È»´ùéõ_m=hýã×2^I]Ü5YÒ¦¥#&I&lÐ!›&GŽ[^l8nçb&1ËA.hòë“wò뎛Lœg¿¶'åÒvRNmW.„÷ç"n>ªáæÂꮌKÏeƒ6TtR)'O‚\E¹³’%-*6:f`c“·¨°M—ðšx)ߘœÛ‰ìšÍ̬›4ÔŠYÅ‚</œ*¦^Ÿ8÷xzøB~Ãñ!ûxâCvcÌžßt|pôÍû¹U›™àÃlXÙNEµù˜¸9¿&íJ†‡ß>ðó®æ׬š4I)pç¤ên&ªì̯*ºó1UoÚ/iØ[à]Êø ¢#òΧÏWï<`V ’„_Þü­[ôξWTCMâ›7þή…]7È6nÜcWïLѱ÷ï’&y:,oMåÍÉ°ž—ߘüˆ]5(A Ź˜c2uŒe£VíÑ.üçß x~g£&9Òpi—è*å7ðÓ¤c<±â9Ûܦã6ÕñwûÏí,¼wzw±ï­CŸŒ³>ÕW}KxæÄWD[qnåž{AT³ñIû¯Ÿ|Ü_œ\Tpò1‹.·a52+úÑlÔ({g~3­Z´Y’ìÎ*jvçU ¿ad?¤X¸ÕøÚöCyC.hÇŸG''“!ußÓG]Ø™î}óÐC ‚ûQÊÄãÉIº3/1
-èhéØÕ–mÓˆ,²„$dß!@‹lÙï–{s3ý‡ÌanÝÇ{ëœïû}ß)•bCÔt¼Â¿úËlßÅ£•‘æ¼ß¢Ø[’5§^óÿ¾ÿ“´.· g×÷0—¤9¿*ªß?xÅ3Ýñ»³ÂÚ‚Ç0”q«.ö]>šã\F×w©¨’‡{•Ý8x…´'§Â§J¡ñ1ÜoU`>m/á—u•cA1䎜……Äm¨W;@øm†œÇ8”þ`äà³ðh¸‡ }—b/n}œºýyx’u¾0oe–õ܃9ÙÍ£Ù‘ºÌ¬¤_“4¾g_Œ½º{nëGÎWÞç]_$^õ^%½FEظ(¨ùø–{%³4p‹òKZ)ßÐ 2 iÇHoò ´4ÄÄÇƘ˜Õ\Iš DPÁÂÀ7dÔ¢cδ’Cš>§íg‚fä?!£ô$"ë®Ä„wéèPSf‰} ]F8”ßaϺÄw³+üêrÔ 8IZÌ¿îŒNÐ1£
- è…XÀªA¡/ £ó[d¼‰°Ój§¶ÆS›c*nÖq½ìÓš¸ér<2E§Æ&áyÄìŒ?+§lÓtÜñ¼§$Šî¼‹_ûù5¨àFÚÍù&íæUƒ.ÅyØÒ‹ð€šGÅ=dXÔB…ÅÀèþî½g](8•Ürxò*ê˜*úõÃ9Â-l(ØXéÇ|º:a%ãz\fRoèäã·XdÜ^¤DDÒFEF:Ê d¨GDXHØrä–´»4}ŸVûÄS&㯻j)T²QŸ–W+8•°ðüÌy Ø‹ˆŠO¼Ä£V3d^Ö#iCr.”vç|Ò{ûú«£/Ûþòñµ¨‘Ž>[=šWµþ23ômzItƒª8t@ÖM‡U½d
-xýdSÉGýÃ9×@uÁ#j@½Ò6Ø^Ø@ØY§–}¼¬ºŸ^’ƒ/ewÒKƒ×g{.¦ç†®àN5ëÓ;~ÕÞÏ«™EEÓ§wòúÜœ¦u÷ ëÂÆôÍÏÿnû#ºŽ°)ŸEM…¬º½UisÞe¬DíÓeØÇñÚÀõÝ™¶?í½p!½:X“vJï¼rB€nh¸tȬ¡"VƒÌÖ’d€ ë†1?Â!ºÁrÐ()Ã,™´½n&Bý5éå¶ó-$híãï›ì‡Áš
-ô‹Ó-‹å´‚‚–‹^u/0É0ŸIŒC†¢~E}‡ŒzÛö”Ü4éÈ„Ù@&Fíà‹ÇDD+(@ I£º’²Ø*)“‰Þ4jKàŸÊÖÄk:>j+…tÃy×H ÖË+I=Â$u*fS§ b?ç–¶âЩ
-^ôŸ
-åQN”lÜ'¨§Bª¾2äMÖ£dåÜã:"8>JGLªRØ E!ùW #}hH;XÙ±=£·L&
-z³ãøžÞRô6„ °ãn<$í*'aÖ'ïÚž_ß]5б‡ÿ:Ù´X*›5³˜)à@)(íÀ½Üoz.,
-k©ˆ^ÊlÚŸ“ññG¥¸}šˆM¾¥’_æ`¶±™¾/3«Â:Ê'ëd¢&5²=É,Oå<й=ò¶¼[Ü[ãWS~Yd9÷#=ÇNIãÁŠ†qMŒf7,RÌ­êF]÷Ò+¼Ë{óÃÕÇ+êμ×(ü¸,nŒÿ$ä0
-uêN"v{)¨,xGZ³nñíœGv÷`AR{¸0r3ùŽYÏÿò7ïM¿G—¬ÌiWä-ùUAí>ð}w–û·­7Ü¿f—íÀ5ߥ 3—€1˜·ÿZÞÉþº°Îù:¿Î»’_ºŽú5¼ýu„{° ¼y=º£¸WÃ޾ˬ jrkC׊ÎáÚÝ9Þ?·?<c}UÚU7”]‡‹¼ª7Ý_ì¼î<·óCןç„5;ó‚êqIÕoSOG+~›©Ì C#íptf]¢ÛGë¢úŒ[ÌÓK˜³þÝ#ïFXglaâša¾M'5âRT3L„ SaÖ%ÿÓ·DÈî€Ù É f€ˆÊºOS ³‰ Ñ 9÷Ð9|ëpQÙvs<9Ý6šOS2.î빜söTe× Ãz„õ¥’]
-kt̄бQ3v<&¢ωˆc’„NPæý²öœ_ÞEÕTR/§Fä¬wà1›ƒˆ˜”TÌj¬lYGO·­öÊ–QˤŒz: žÂ]Z¦ÂŽGTäÑs*ñd¡œ¤Ì&zK¯"a¦à¿n2¤î/… 2"h0á‡OÊà¸D¨WÙ\º÷Ì, ïʺ%·ñ°UŸ÷jú³nYk)jTЉ‡/Ê›ög̶ÕQÙ±ŒÓ[)ž”s¨m½–Ü2ÐÜD±‰t|ê§Ó]Ûsèdº¼ï¬§Ã–Ê$Ç&pÐ~ö¯ “n:°²‡ð©Ø—ðVÎ%n,úFî¡!±G¯J‰Éÿq\fßI¤i¾œ«¹ìÙ{<g»=Ž=vtl§ã6®IƒšÕ…%!T±&ì„lÄžŽËØÇÑÖÖÖD‡¬¤Ø 1» Š¢ŠZ jÏ2oÍEœ“â«ú¾÷÷{žgDÄeÉ-ÀÇC#ž‘ÿfœ<¬iˆþPÿ)öþ“÷U2 ý}N‡Í6‚4áÉé‰ÆÏ6^6Ú„ì^ŸvuE«Î¾yÒõ·Â¼®ü±™\èëÈÏZÚ€®,ÿ$>úæ±è`9aÑnOêvÁQè%›–¿/VÕCŠËø‚øäÚÓ†?®?•#üýTԦߞT-ô7ñÈx¿;¾®S«O¤_`woWüÅœ½ñó⌽37…
-ó>å™üT÷|V}5?«¾²çëþš\P_ÃÊ«DP[ÏĬÚ|@+Ø’ŸÞ›‘Á^(¯æüŠó;>iUvV^¸'øCøÛÚO?$ŒÝûI£œ
-ƒ ù55ÙÙÞKù9õ•ü¬êÂúKÙ‰è#Ñ‘­—ª«%à¹B
-ä${@EF¿##à„§±
-&ê4’‹ú2¤ƒ³Íw«¹|ÌÍ¥†ïÛy
-à7…°]»÷¥BF1±`eg`]~´¾E„­%ØO¾7ˆ Z_vž]~ý@æ¡à·;S]§³ &ÑÆœEä¿Óz»Ýz¸¸Ð/Æýh]~Nwcç•îêÚ Uuê‘ôÈ΄úÒ~ÊaÛžFjw¦uð%íú¤øøîtëÑìlË‘¼¿½jÏ×^UôógÈîg%¾—þ•ô—`}ÅE¤qåiÃø¿êƒÝªÿdi¤ñwÙ':à´!r·îO[O%'ö1S'6¶Q°Î·“’c›?Ý<´ñ¬ùÏÐøgÈN#5T¨_ÎÅú{Ù¨¹«
-ÝÖU]¦Ûõ©/2Kv-ppœë6zÑÖ›ŸS^ÈÍ´}A$'¹ò
-»¨¸È@ßVâà¨À>¹9D@øûÚé%‹š…ì«$û5l½ówTá~“Œ\t;²S¨
-3E-êŸ3Nׇe°±U— jo¬½ì©.†ì›ýžÂúzrs|¯èn’‹ ûÆf£—.8›Z&å´—’^Èj§Š¨ë‰`Ûq",­&0•€Œ#7˹• ðÅòнrb.ïƒJòÖ“ÊrR^Q7UÒFà]3ì¡ŽKz†J˜«<ÇTYæóÓÞ—‡üØó£×KTôòºœ² fã!gy·dQl¿†]¾J|÷‚MŽÜæRf0HØ”AÆð?f%•0w˜ËN'Ƨhp&9àN@HÌØF„t Å°YJc¶l@qaÏ/?†²ÑÑ»ÿ÷ݨE¼ÙÁB®Ñ1›–KÃ3;pè&ÁwÃØ.íý¡.´üÇ- ß“+N7ßq$fG(`Ôr-=0\^ÏdìV.å°”"‰Y5‘%_Mxk?©Ä‡ïì/;ɦ‡oq½øí”æÒú„¥1;;haã>8«qš‹‹ãÿã¸LŸšÈÓ8þlíßlí–µ;«[Z5³3®ë¸nÍzçÈR â(˜pHL wº;tî„c@•QgÁ‹@BÎÎ
-ùhž=gb&S%®GŠÀ¬4¼ ·lùù`Õ4Q[ÆuE¸§œO̓̽H“²;5¸ÃZÒ>YOLUS&{ƒŠ^„¿;/k®Å ¦¼•m:5¼‚ß>œ<|³ëÿÙ™ÏPqÛó¶l8ï_ÞñèÕÛ¤Õ¾üV ¾kÐ11­²™JÇÀŸ¼>MZ-{£2ëF;¹rQz]ÌDqœÉÐ`ȬK|¥0'¿Y ˜ôÓʦÂÌ5Ü &ÐÜÌœš!UüÌT둬³÷b9$ïüøkÿ¿i·Y»‡p1\ÅE ºJ„ÀrDy-8½ù¶ïÌæû¡k«“‚“ÅY8ÏP[Ñ%¼V Kï²A%oõå­#+¿Üú+í“óòà1«ÏÛ¿Øšºó÷¢³ïRÞ¼B„œs}úö‰Ì³Î¯s.YÛê þW¹ÑÅj“
-.ªØ|?ØTbÒOÀã0h-‰É€Ï…Nþ©Õ×ÇósòÖBX«INv½ùLÞD/8Föá õ0¡©’:)åWuF7ÿ%>þý˳ý×ˤ735悁ë+ùÍúJÃ3`V+auw™”ý¸2{ïÄŽ[tƒØH‹-@…Ldô¦áÀFÀ:8CîSA ì1ªJ ãÊ~„‰húØ„FÌ&Õ¢zZ£ø”A±ÏDCÇ%í9ØA:lÔÁžh}Ñ4ÒÈâJL‡Ô c?¥c\B-.’‚Ë ¶e%åÕKè€iÌÖþŠzËl§ÿ?“ÇžOÛ_Žø–&_IÏ—½&u5«ª‹1VÞËù‡ZÙEµ¨šVK˜„^GÇO²/Ö* w•$¸R£{bêþRHÓ l©äbˆ¨Ð+²óh/6âlÌì`¢&K=e°ì¯`h=­·0 ¤’ÂYì%Ò6\$ ›0٪˖GÕ´ã ¬T[&,õ4ôsR‡¬}\~ù;à“.Ǭ•˜uŒKáš¼w=Aè’˜¾[zÒqÚ÷S÷ù]ÿCç†wâÙê¼Y¹éÅ…Eà`½A&Š)¨0&ËÕ=±§ücTXÙUŽ(y¥ˆº›Šàr*¤ª„l#Ù£bíƒì‡zÒìØO¶ú
-ª®$ûå .)ÐÞ½y[É
-¶|ò®àØ£Û3²{Kà?q³ 8ÛÊøPÑ3ôßå·Žæ\¢¦õ¹¾«3êK‡Ø…‘Q:b2•Âš¾B@ÝU¨:væå-™×}§·?H.‡_tz§¹vh{JÔ¼Ÿ$³¬à`NË¡Á¶­ÙΓá‰s¿O?mù3í•ÝÙ[jÙø­ç4ãA8,ù†ZK â²³=§Wž·YÑñMrºçÂÙÙC‹=Wâÿã#L\-¢ÁÑ
-^Y[ÎÓ}†
-ˆš¨ˆœŸxzûh-$çúˆLR9
-!âzƒmVp ~’ *º× KóA\• hYŸ´¥AÄ°£8ô“¡±§ûð?P$*ŠNv~•sÁÞÄ“ ðìxÆP'·ˆ‚K¨…TTz—Mšì›n\”y¯i‡q€›<äMÃì¢É^KfØ}}Q‡gÝ¢¶7Ú‹Ç(·ÙVŒÛïBŸRQëÿ8.³æ&²3 _ä67S©\¥*UI%“É“jaÉÀ
-iFö^J¿­ÆÕe¿ü
-iFêÀ½<°V öœ…^§béAÈ0²·…tB‡/6_9fj¯Œ|ët1h&Q›Œ>+ǵ£o6&N·ÿPx¡näÜ eÔ®(£ÍÏyï 'Ô,†3»¼nºôô˜BFÁ¾_ÕVŽ }à,C•°nŠ•U»?yâ‘êÜ/ß®L\®§­kù’ª÷SX|awcòëüý/K/äí5Ì¢¦ãfY驶½ž±^êFó«“Ç™¸UD7΢ÈHe[ÙZêÿ“cðË_l»¯þ£‘q-cê>2®ã0›®‘t:Ù„à\q{ðXÑ/8¹û¸ïó*íàsêÉý°ð<Úô<Üg&jB'Lp˜EU@eïצOÓ‡…‡Ìü]†Yì£Â.=t!åMã8ùÒ0V ˜¡•ÑãH÷‘ÏŠv3›¸ñ¸²©ò«Ò•`Oø¤¸Ç1×ÌXÍ$ܱ·?(Î’A‹”!lærĦ,G:2j7 ‹á¹J¸:¿>yqiâ«_Ó[fe3=s‹Žë…\Ò(cýCh'ji£šOYõ;ÿŸd<ÿ+táÚŸÙùèÄâZ»~·shå|Íœs¶ |ÆbÚÑrPs•›&™˜EÆ¥Ô£õ´ áÁh˜36í[¦áÿ÷Â’ ï^HÎ6 } Üí¡ãêA–0H›ï÷|Òé Àáv#Hÿ^DÓ÷a[Ñöæ¹ä|1bæžJÏR1§‰ÍøV¸Ü<d»ËC&̪
-¦TùÕéû¦áVf²iÏu
-÷γ›“͸f¹´Ý^Ϙµò×ëÆž7ϵµ´ÝËÆ‚wq9ß
-¿ãò¿(9èþZÚjâp§‡Ão¬î‡£ü‹Մ%‰Å5x¶“MK:ɨ¢›#ôBèBsÞŸÊ8tÚ}½šž»Ïe¼w˜¤Nï'eSVׯ¬žPƒ§ÚÍìì2tò]Y‰&(L\¨›¬e͆Ã׶VŸÙky§É¸¼¥°MZŽZÄ{AeW~môèÁ3ÉY*¨„9QàN$ê4Pà3$t4ƒZÄE¿ºkCq˜§£¸¥n§¡;Þ?žz÷pú«²_?P‰hû‹ÛÈÕJP?|°­ï{ýD~®´‰tÿ”´èÚ1[Í‚G!<î²»¸KýXa¹V
-hºÖ%gX`ÑŠ_ÛWE­êûC×ï®OÊ-þñݽ¾ßžþVõkãV- Ì쨯cgw;È€º‡
-˯ð„QBáš¡J¸-æ¥P«¬µ©
-[HwòìÝúÀ±Üík=$¬¦:pI1b§±…’XxÀ´ø,1÷=E8Ÿ6Õí»k’³í<a’W¢NC›§ßÌë)p &©2¸f¸ ÔÈ “ .¼Tð_;REUµ”gžníMÌ7Ç&[^cT6szi#£fÐéo?®õ~^Ü’µÁÙ¨Ü(bàû¸Üì½*°Z|ŽNÛ-%Ì Üy&úrÙXƒßÓ ³¼µiØŒfÕ‚€#)Iƒ„_û„œ‰ëÅTâæ 6ïZ$S&EØt,îΚ¹É¦[Ü <gKc6-CøîbNÛÇ º«‘›Yª·ÖŽçf ›´ê¨¸¼‡ÅT£µôìr!êÐï‡\&†¸ñ„ËÎÜ‚¼Ÿ«eMZ.eÒÐ ½ø
-H.|Xëÿb÷éÐßé€fä0ítÓ!eVv’!`þqŠ|Ùý—Âڕߟ ­FA>¡›bãª>&¬ìaPÝ$íŸsÓ·¶ŒÊ¯æWÛ~w°9wCÞ[Oê$õVFFµCÔ$…ÙºWË9çø´j˜Á¦¿¡c‹l\3TKØôµŒÓËÃÌ‚“:ÈIP\×õ’/-S•-ã(‹Ë{ø´rˆŒiG)Ìije쬰
-©°Ç
-Ì!#C¢ åmÁ)x’MÄÕ¸ILGõãdHu•[ä-c¡Kh\ÖEA¿U E/…«À#5\j~µ„y}lîN%~{“%æî‚SɸAÈcÈV÷±0oTÂíd“Þ[<t=›ùyžn7wlŽfZ'â yO×Ì*G3ª‘*.ê(¢’ö
-j3ð)d©QÊ Ü75W0Qe/GÄà ýûÁi:isЙ™¥r¬8HØ $ô
-—P°IÝ—‚¼OzoòYÇ ë ¦fqe/‘uìnMþó£_r‘É8çþOr™5·mžQøoôª“é´u[ÏtbÛاq/õk³‰¢(’â¾ @€«H-v¼Å»5V­‰¬X%qÁU”ÜÚ’HQ\°ƒ”Ûü¾œ^àƒ>¼ßùÎyWDí<<#äî¼c™‡ àÄ×ÀV±¸+Â/eЪRôßò¤—Í:5íé‡9Xa‚Í°fk—p´³‰º@·ŽÒÝiÐÊ5Žö…ª4bl1(0ô šòCM‰‚’Š¨³•Óöl­ôUJãÏäÍÐ`¹É6dU§™Ö‡®…»Äœ‡ºkÉ{CB5µhËÍÚôI†@Ú%/ô¼å¨Çm}B†$dà;™
-ˆYÈšoÕã£çë릫\Ü­«-bCõŸqõÁ’å*—>#3&`Ì ^8Å ÏNÔrµºHŒòñéçl’Â* cçªó†KbÂmU·³·ôU—†¾ØûùûÏEX3Ÿ¤Ü­>Ƨ]Z6aàhË-Ž¶ vŠnW§H ³4>
-¼òÉçS2„« —’%}RæCŒ´C<¦VŠ˜K.¿âóÁBÖëSrñiCK.ÓaÉihl¨Nï-÷Ù[¾} æ½²¦¿\‹¢:!9ùXf"?JiÊs°æº½¿†ì.Ûûv—†ÿÞH‘ø^‹î@·lf&_pÀwâi2ªoºïàÒ¨˜È"t{j³4âÖl
-ÑË2Ø)ã”X´6S¯P°rEÓMÐ`DÈÞ[ãò÷bx¿XôO+[áÙÃ÷។2ònË fáÿçh‡º÷†ÿ³xÄѦ~>cSIy#tcÏöO#§ª«Æ‹Í¤cøýŠîëŽ)Åð+±yͨ ŸÇœlÖ®n1ú¾:mQJÁGBŽò‰0ÈŽ'BÇw—úñÐ;¡K…8ðaž¡H8]]Rp6"rG%†ÄàŸ4УFyÚ©>„}i—¨OcÆ®%xR$¼²ï®'ˆZL{voAý`~·HSèïzcÝx]wꄸJI‡ï·3¾ ›p¿ÿ§úxuÉÒ+@FB?mÅs}š ØØÏùý>t€Ý¨öëÝã¹æÚô£ÚŠÏu°äÚŸ·]oülºÎn€¦ ì¼Óž>XÔœ’iC_´ÐŒ¹5ͨ—àI!‹Àk|Ê9Ü‚³!Duçå¼éÖü㳿ãþö¨¸îÁ”¬çSˆ®•rivÁ×꫶>>³a(˜ éɾVSÀOþ[vÙDZ{©Õži&l}lÒxMè/Š)‡ú nxî>ùë—ŽÓŸ5W1{gÓþ´éñAž»*1TS‰[o4'+¨¾Fƒ¶¢Ž›B,”bÓ/”tp¢¾n¼²³0|âÃÜÀ‘êâð\Š°î,¢·öÞ!½"0F§xÐÎ;F|˜v¨¸´SÕ„~
->鯧Pc5jëoƒÊ ‰‹]¶ÌxJÌx©–Ô]àA3íM‡A.ãžh¥™Ý‘Káe'IKK;5l1Ë9‡õ—2‚
-s(›¡§lÁi¬g ßÕÓ†+qý…V~ì—Ãq©0µ lÏÈEÿ” ºmo‡f¤-Ü+ÁÚ›Ê[O{=ì—À8´‘¯DÚ
-ç³I»ZÉ"æO%ù¥ì&:7ÖÕl=fºòqYýW.éTòÞ ô „g<Ëï‰ÅÐS±~Y‡usY·½Ic>GyAËîð ÷r÷àùjÓ$0-øÞLa¡ Õ ‡)ÿ¸’õG”<åïäqLÊ"c|W
-gƒOQ„œÿQOTèðC1M¢-Xg#fé…>båi ä‚]ï¾ßHN¿’ò$)dÐ1à£Á÷³ÃÇ7&¿ûMbºÿO|Ò´è®#ºfÊãªn¸uªÛ‹Ùú÷’.ÕNÒyûÃ’õjfÛ†>*¦­@»íJ³uõ¿óÎtîâùÐG®Ô£Ž‰ËxÀð­ tTHÂR>üœÏFž‰…ÐCèÈvD¿Ùž×_(½RW²¾q>‡:eĦ”\–òÇßÞt£À!V6ƒ;ÅœBÊS>àÈ ðê9±49/}Ód$›1÷WÖM7°OM†">.Û{¹øăVêî\“?hÒ>o#åÅ[°.6ç!9†p Yô¬@ IOΰÙVZLpò—iwÓVÆ?gÞuÎœy3§g†33¥N ,¡’=ÎâÝ–äE–-¯ !@ †rÊÐBCÈÒÄû"˱qœ MâX–¬ÕrBzú9æo^Ü7’-]Ý{Ÿçù=ü†—äónG%‹ ¬§©
-øÎûʼn–ý%íY%‹«n'ì—^‚¾ÂÓb|.0S¥<v²@-æä‚7
-=*¸j?Ù²›Ù¤m`ûµíÚÁškP¶—’öA>fj«E ×ù8°uØÚ%DÐ8ºžsÛø„­zHP¦`~1EÉLÍÊÙ©ùúFàv£€Û˜¸î2Õ_î™hž/.€Œqc\
-×sQ§†]C:wšøüý‚¶E¤ \B{©Nûƒ
-}ç…™yĦ C9†vóÀøuX'roãØãá659%ж1ÈlÝÞ*ÒU¹I”¥›Mê/3iK—˜ñ RÚçªg'gkgÄa— þ[
-ìg£DÀu—™‰Úû¨g£ŸÅçnþñ7èžr‡Þ‚I9ð8sG%ïäŽØrÚ•¬]§Ð8ÒØôÏ)[þ»êVà¾R ܃3j”‚óGۇʦÇÏoØþºµ òxJ¤§îW)ÒƤC“R~æ9øãí&ÕÉùŒ—é@HÞU£‚·XúÖ<—½·X£çÄ|ð^ :lSRÁ_÷þe÷ i8Œ~Ÿa2ßÆ+Ùà,pÕ]xÞ­z <¸¬ž'=Ð=|<˜ª¤Åyzú1 ù4-‚ï×(tð0<~¾žh­%Ñþã·¾ào¥ÀÜqÞkA BÖ7%C!æë´Ëªæ°1‹ôƒþ{”<+…À\%cÓT(`žâíAŸ M¯·É†uð9g×U~±^+¿±\bÖ°.˜·wj„¸å:³j8¸bnb¸¦¼ˆ\Ù{eøò`Áx¶‘ó8aq 4½MËF±6†õÀ™?zë†lp«IBÏ$ÜF2XŽ{9AŤs¬ù»2<— #]\¡Ù_G;Þ½F¿ÞyemÝ_6\â¦öʺ¥ý0bíüuÙr¹¼â3l¾0|µýrôŸ‡à?,xy%Œô42^¢‘ò{¤Œ}<:åÔî‚å&óÚªRßÈü'ÅÀ㢠´b›àâÖNÐЕò
-ÚÆ…‘v!fí8Ê9Í¿ƒŸžÀ`Ìšåè¥GÉÚ4Béæcæ‡+úVnÍÑ_§îü eï
-ãI<])B¯)º]RÓ(ЗªÐÕ :b““ÂF2Ǧ^#ÕM`mšÄå6.d0M%f¨ÒµÔwGϯ‹ù©oY¸.Ò­@#µ´öj-IâlêÁCͽx#‚¶”âÔSù­o’MbCí2‹y7x0pUvú;>ð«…ÉûJnò>÷BÖ…À»Æ¥4¢‘3)À¡ê¦mä\ðÑL£tg¥¾3ý³º|Ø(8ÜÓðiä&—²v‰Òǧ­}àY7÷#„Q &çëà)Àp„˜ïÊ9
-ô——u-ïž~ºûrⳟŒ-ÛÏ´ÿ¨®"ת«¦Vî•—ô-ÿûqô¯;Ïþ¼ý}Ï'rÂØ&'Ñ>!n ?°óU.bmâØM9éÐTWíÝ̺GË%¼6!åspa|¸ú Öy°d<ÏÂ9¯®Y¯UVˈ³ûKºï¯Ø;v,—v´gØ°þ"6\ªÂ¹®F-m{ËúsÉGm§è§ÝŸ¼ ÿ’F.†@·5òQ[Öž+¯Žœ’æ®ÃukûÁô›zœ´C­ƒ? 1èq¬·²l¼p¸¨ýWeYû¥˜°våÐO]N5ïvÖbNÍáŠõ›Zíj
-(Š}qIÒ9Iæ$™˜N›Ä]YD»d+¶bsIO¦ÿ¹ôCΩs9Uuïïûý~¾[ÏFA–üçdWÊ9Ý•p¿|’K¢NaO°´ß*í;Ô£ ¸óÙ |í—§Ea‡{ŽQœÙ”q?g{Wt‰Û4µ¦àF­2ªG'n;œx8æxUʈ˜8w’ËpCz™{÷dYDJÙeô“Ý'#éÝ'¯ÓÛÏ?œí=8{žYU°“N+jCïùæ©…‡s´Â½32 é Œ¯‰3[ÊßAÎÞC©1¶°vÕæ›þ+îqV¶€Ôy”Œ¢È\1Š‰Gjv•k’|u{„øµg¢çJÄÈ&ćaö!äÓ4T5rêRËüŽ8˜ë˜EÔ˜ç|ZîmL'löÎrÊ"fÑß<·æp‚qÓ#5 ïnÌ¿w––¿ûžtioŒvíHÉ(ÆÍÜÆä2·Õ«£•¸Õ´¢ˆiŒÙØ ¸i - w|´vs”t94ÏkÈØeÔ”¹›°@•1¥8¬§Æ PyÚÎmIZùÄ€žCpM@ùñE)É«$åzg:/ÅM¬š´]Ð7Ã5ø»>nFZZnu¬ $,
-JÚ®€b&YOlQFòkyàyÌ^U_žOC)ˆX˜„¨ƒÝ„;‘¶”SÐüʬòˆ)'Úþyc@t²6$J:X¸MD>ý8$N9¥´Ó 1”ÍëlFáKHsÜÂkßÔïtÊ!ÜöPˆ/?–‡Ì""îÒ’I_t‘S22oE­H³[ •x5pyô’è¿-bB›26qÏ—u)ówp¥@¯ñkèE « ·»Î¶þr:äñªœ‹/‰zq3¯5aFƒZ¸üH¼Ïˆ6Å÷¢F9)lPô%írn•’:„à×2ËbvÝɆ„/ ˆI‡”r ø3 æ)±> Œ&ˆ,Ë™‰•AfCAÖ#-+» œù=œ{ÂS+‚îÿn‹geLð¼„CBI®
-ºÂ6v£{ªˆ9„Œ/û^}Þ’ñRkh÷ñ¶Nm‰è1'¿=öæPÅ­Ø{¸Æ‘²ƒ !aù)é‚GÙ_|
-üþt™8ðOÜʨN:8ÍA#¿yg­ÚSÁå1“ ÌœGÇkrø{ƒƒgëàùKâÎ,EíÃîxò(j},wM‹ë#æ!¶O¯ ûõ‚–¸•Ó\ —õ”‚°…T€-Ò+³÷:yïÉú“g€§j“k´
-|‰Z™Ø Ã3 ÑÁYQ1#·öp†Y䞆K|*¸,mu,Ëh!-³2¼€6E ü çÛáyZ±_Ù“ãîýÁ rÀ¯î¿îÖrê/ZÿæžìÉ?sJ™13§Ñ“]£ìºP“òÀšÂ(ðê¸YNN9Là âæ‡ì°é!ì7HÚ·ßQØé½°7FÍÙùÐwåH •ž8ÅÔÓRÐ9!jF›3«bJfMÆŒY%=Ç ßžnœn ÉÒ+êÙîà
-¹›mÏÎy^ç_9?ÿÀ÷õý~_ŸËû£¬|ßÐŽõ:›(I4‘ýÆóC·$XÏU!ÂyU˜ëdì øŽÇîHKâ4u$—¹:¬Óš˜èqôÌ¥¦4í\ÁŒ¿œ.Iîs8ÁŠ9™)Ë\îDC-™w»Ê#ž*Š¡gw§f@Í#ä@]3ÊÅÐw7F,‹‰ÛÝôÄ_ÚZàùøã/Ì“”â¿ÛIðØ‘à<®gÙ©­ñÉ&v¥äçßj[[/Ô5$ó(ÈfvìNÑ{I˜î8ËM¾·×…÷Úè †ÉØÉ`ë%þ»,Ü…’z¦ CN@[XßU1Üép„ðúÇ
-ýßíOâ]-ãb¥šr$ç$ïõÓ‚‡ió`ÞëUQÈÐŽv³M¾5öE+„ˆèËYfÖ/=¿ð¯M>ý‡®4÷z© Î6Ið?èÏy±%É
-á¼;ÈŽ³N”¾7t‘}®Ôe/gÙ°5ûÃédAØbC²£ös¶Ëf;ÎS%H™Œº]°Îäåé—Êò ë-dS‚u]"—êrž¬|ƺ Ðaªªs½ÌÃL赺6Û‡©æ~ sE€?%Ó`^
-ëw2‰ñ5ug‚,ƒXßÛ¥rT;îù¥¼ýàMÛ4 j&ê;²Àípçå†OVÅh7IaÜã6\Ø}Û#ig0ÏO#€?š©H·Wò³.Õ£Ÿ*¹É¦˜ gÓŸ0’ÜÿX©GB.
-äçlu²Ã$ê(D…þ©dxý\àaŽF(« è½12do
-# ÝTC'ÀÔrVâf'1h½™à¹ß›ðý®3¤´ˆ!ÎG×B ´Ž•§ë›É^ûƒ%ïôFЂÚlËóÜíc„."xóàAvú€{'Ù0eu†³‚{°,HwÜlÁº{IþçÊ‚èÛUr©=ËWÊzg§ë ÚbîîPyò‚ˆà#çd¸ÈK3AóUeqÿ¶Ž‘c­Sø ³ifÊO¸ùïí:¡U†ö¯‰·_&9˜z®&Ix·›øÒ$¥C› M#)ðz¾¡ä§¶¶èfžr:F}{4D…X†òwúñ
-d n’ÐcLÃå¡Ö z̉Œ½ÓG’1ìd±
-ÝSVç¼2ÊÙ0Y5Ìq€ý§Šf§`g<üRo7ËMp8¦Ä7”%:Ä¿±¿T³1f95jo
-là<‰w ÔäKTÈ…Š©ï!®tÓ“æ[JÞœÏð f;åHR~&§ÅŸ)*
-·ÅŒ7s Ð#óÑV[±Ï7öo}SÝ?×[…ç3Íd«²‘lc'ïûí‰Ñ«87U-Ü~´rÿ°eUr‘kD_Ópu¶YZ“5J½¯ä¤9l¶zê»K
-NÒÃÕ–tÇ9¼Ðœþd½)ßÅ"©LÐ;ؘloe`ëy­×îVع—jr‚y$ß«5ñ±q¸0ðךˆ 0|ñF7ÑÿdŠ›½%&€µB¤Ó‚ ë©´*ÆQú!Áy£ é½×_ìw ãäuSœ§ù¨ðï÷V]S
-â·íÜTKÊž:´‚ÓyÒuRC.ñDN|혧äøõ¼F§Œšç‘à,C•7{Jî@Z—ú—$—™(û=ww’–z¾Ü×0ð’;[$¤¹å˜¸óUl†_×ê„tñr½‹í„z¯e‚™eù¤Œ’wª£vª:Ä„¤‘šèƒi|¡„‘£éÇ>Ÿ£üºÛWÿÜ-m{
-òë‹üÍòqÀo‚öÅÖ¢½ñ¦äÃѦ„ã bÂá>Æ/g¡œÒ¶R-§àúîpe”{ž–ͳ*È»¡‹Â׺kLµ¼ƒ0U2tÒ¿osÁÐØ\¼4 ;÷gpÉËÂRCÅa&ìw›¨òZ|œWÕI±Š)YŸÊïÚæÐ1!)ÂË+¬éS‚(]gU”†Uø$°ÀnØ«ûÌ«£—û ìy唬s%!= ¥AØmÎ?–ßØæˆiç+Mk}Å÷˜Y¿ìŠÊ£VzQ±‹œ¢‡ûcÕ1†vÜ–˜”ó±!ã†NXWüÕÐÕn«‰Ú,ŒXæe]]d¥]³}F= ¨ ojzé Þ…O¿¶Ô_ ;[ab7†ª£¥­°-?ÿß;¢ŠÇ–Ñ’G>)Û<ŽIVòòïz—hH_“Ä@ÊøæÆÁtõ›¢!É&mH<]$Â\Š–è.ÑÖYFiÈØÃw©™{cõ/¾L5ÄixÈ?æ°«nUSV`“®Ï¨zøÓk;³ Ù¡5f½Wä9æÉ1ã`ª*JË…EHo‚k\`i ö@„;çÈ9>MÕ£ ˆ97µÕ_l2ðuz•w­ í_ãRgðˆ­òç!}Ù·ÄkØõ—Ðÿ?6ih¿®>íĦügÿwÔ#97Ñ1öùšøo›}¢oæîž‹ÕNàt‘ŽtBúyâHÝ’/¢½ ßâ‚ònŠ_ÉÁ4̪Kck]Vw,Å'9;ª‚[ݽn=£Ê&®sKp‰cžœH+bB«ä÷g:FÅÅ:HriX•6 y,ç£Ì#Ä—Pî~åüÜ”dÃDCœ¿»7‰K1O6%S×æZŠnÙÅ\”[É©ÞiˆQóÞ‡-vä\7÷GM “s„×m[¹U
-doˆ°ƒzÞ­$ÃvFÞÿ!§§_Uƒ¹aS”´_f(é¿Z§%ê~JÒ'üÊJ:áÂÀ$~7ÓÑ_t”OCÎ=˜A?ÝŸ.~ð÷¬ß7Ûqnu Ò§ááÏV»Ác9³Øô±òî#ûW;?RÝŸ$%ü¤dgÞ4ãâÆéð0˜wÇ.&çy´÷Юë.W@BPϬ=YÄ$¸õM¹£ -`2íóì‡ÓÍë>õdýü«Ž’P5çØf IvIã[§œ
-÷©Á:×£ÀØŒØÁÅ9•Œ§’–4pð!“ ÃkèÀÙÈÙ¾¾1ÿúˆÌ¯ïÀÏâ^n~ªŒ\ë-¿»#ÂÆú´­O~Xî)ŽÔróoúµŒ:ϳòø3>y{¨ôžE„zb“ÓrNí^µ°Å¥`VXD¸x»„‚„xVâ×…~ 9ûË4:fµ§è¦3çºKE†VA²g‰‰Ù!¤ù |šOÏmr*›‡Sèø“ÏØØ㹚n q¶Á¬sC!Ï!%fž©ÈÈ Ž?×¼2òo)Ú2W± |Ð_vÿb™C¾0u ¼a›o©— aµñTEGÚ¦ð±›C¨?M¢ºä)³?Û ûaéxTÔbëá¥EÔc—7üzjÑ©®¹È¥¡œš@ê§,‡J¼æ”3[/6GæO×z…CGUAJßã“ýFˆ+Û|Þ%½4ëéÍô6!ÒÎL½#z8{¹?Yu4Wñhw¢(rs¸èÉ]~÷å– wêG¾e äÒÜÝ4vµéy„3-Xë’3 OæZá{³´ÌQ*òÎ*»)Þ/¢;Å|ÔH¶ŽiöiÜ-gù <Â釲u^(Ÿ&ŸkAœwö©ÙuÁe.ɻĪöêhÅ95Ó)£Ãí
-°l”’÷›QX}4¤zÄŒ|¯ŒUåRp±‡3m¹=uQÖ)
-
-6zo‚€‰XbÁÞ£X°¢(¢#¨Ø jÄ™dfn¾ÿä{çâ\µÎzÖ:û·Ÿ½ñˆÝAr¢mš‡½Ô Ê÷FHQÛåaÖ>RÜ9)ÏX_´Vñ17aỽô<ûB5ß6'¬øÖCLœSfyŒñrì¥òʨŽSRv†ÊCLmh˜NõÉwµ-7üÇ<÷¼;Òr
- Íhß? ŸëvÀºÑA ]çzì÷–}8!£ÎçDÌ‹Åj¶mZX òŽ¹˜`wz°p4ÙY+DºjÅIîË™'ڲ俖ØEÿé~w„“}:UWu< ò:ÆË0·•2ãoÍI‘®–žÂ€ƒò—Q¡8¯*9à¥ïöò3ÁlŽ´ â"Œê\ør
-¶5AFnŽ²Š¾÷‘0Wúš&»IÕvø#srÁÞ4}±,âÿ\—}¶¯H%æaz’¤$ò‘¦¾(ûÇwEëè'Û½ ×k){ãIûÔÜã)&æ/“DdÓó*–;0þ‡ÓÔ”ýzÚùl]õ‘¶–»;,)Xk¥„‚QÑs’ƒw׋z3hŒM è*/tëÀ:’qÌŸ+ãöºißԄ˱ÞW¼?Îÿ¹Vr<Uòjd%æþÊÔïLÄz ;l³]gnÆ.*™odùÑ}Äœ{K2&l¿«µßUõq¥ƒ˜®$ø|—Ñags[#+m$¯´2¢Og붆„è=0ï\ÎÊèÆ/hƒâã}k&Ð6"ÈÙè¨Î\R0` ¼ðõ:Aänku¦­_Y¾Û&Ï_‘×$h©,E.5à@-+<îߟŒp³Î¦¤l›N=d›ý,<â£MÍÅA³ÒŒ'æ6i¶¥¿‰fî¬ÉÛhâGZ;kÐ-ÒOM‚˜qÚ*8ëW6Á«_òhUÊŽ?’—nõâÃ6{±p›Ž†ú±ÈçÙMõý—¦ú›^Ê14c~_mÅÁÁ¾n›—¯µàaß0Þ;]8ØaEäé0u1.@ ÈÐF• ÜÒ"Ï8ûÚÈ>ûú™²×-H×+ò<Á<˜a_•ˆ/Lu½»ó2Ö椠À:ÉGΈJÏç«WóRæÙ”¨Ì:HÚn/}u6ÊL¾šÆ$%-·º Ù®«JvÜå°ºþR+gY{ËBÌEïG)è«U»}EÕr¹\#?™”Os .—d²s}ãj¹Šv8Qe,~¿Þ†°ôâ^oõÓ’ëqIÔåYîz)ýÕ^¯°ør²N~2¬ m¶0"÷»8‰çšZš¥³ªdQY°?HK:¡%Íð‹.æ%ç3)3Šè'cUQ.ænü‡ ]]ÍŒì€i­•øÚÒÁNÝ3ÞÎ5z«ŸcngÅëÄX]öåJ#ÆØD†¯¶¢ý—¿ ü×Ú ÞÚ×$Ê_–Æé¿7T{ãôSoEÄá‚B|¾Ú<n_¯í°0¶4øx]Cîsc[Þó£)rÒŸ¦jÙ•IÙx¨•”YûØiÿ»~-~éþi¨k>ž(K\mM|þ­;ËïpŽœd7 –>jÔ÷ѧéZNH7§ô¾šVxG^˜þ51òZ)â=$ëw8þÜðzxp†:îwn
-•yCœ„r“þ¸ÆÌüãZ\°€ xáÐTžãÑHH2#Çöû*ÓÆ„8s3ÎÜɈ°ˆ³W;%i“
-6¬›MôVS+Öao
->~r$ÅÆ8‡¾ƒˆ±ŽÒŒ(31Ì1'ø $ÖÏ@x?¢|Ÿèð@H;õp£]˜~ ‘ã&kÛ2‚±›±²¼ª®Í¯­Ž®¤<릹öSK݆Y´À~
-þY/©øÑ,ÊêøÔ ðrub^<s¨ü{{ˆñ^h F€{ƒsaâÓÎŒ<âþ ·h¹½>£*ð·j8%z¥tcH=&*{2Y…÷š—ƒô2R蜘ðº¹4å® #Ú‘œ€¸Ž òs ż¿ÉB†C±a7LõääóY>õt^@±ªÛZFŠuœkÕÂÁÜ¿7&*Ziá ô*n¨VÆ{;ZUÐMGyÊ âî㢂¯c£?8¼÷qü¸
-O |œqˆŠX¬J›VKã‡jØA”|')6 *ÈËpÄ%DB¢½A­za@~è[
-D’IÀ¡ ŒD²·xâÜþé9qawFR¿ YþóztìÏážï/‡LèÿÑþy³§òlÉ Þ›Ö fÕ2š¦ ×]›[àVŸ\ ¢)dÈ`³A¸“€M ' ¨>>€sÃÂ54¯LÀsu>ù`RŸüîшìãúÇ—=çèçíáÎßW-•;Óʨ%[+s\YE4Tˆ&/†±THºÆaH0Ð~þx<°ÑŒ`J
-¨Ï&»SÏ T}Zÿiä_»NÇÉ¢±àõ‚I|x¯;óNo[PG©'Š ‡8ƒC‰øR¼|P.ˆŽ²HðòþgÒ{- 8 4ådºMÈJ°‹ï‹¥ÎÂÿžO|;²t~>î}¿9Öóqßå<{2¢ùuH6ÜZç©’`‹¸±˜Â8>b\|ðîÀðõCsƒ êB‘–¥ ×1½5UDGÇÈ7wÛ…Ïgj˜‡må+N#wÕaI\uŽä,öØ8sZ#ãn·-ÒÑaÖ”Ëý[rë|4e­¤Þ:iÉ:U´éü¥ýõâ|ïÅÚŒõÃæX×ôçûòÂé¸zæ?ÛÓî, ”­ÍY2–'L¼…~ ßÑ¡b:•ZÆŒn€ÓWg`¶µ‘d…u¾†ªj‚¾TJ0——3ïjÔñû“Öªóå.ÉÙ¢œñP'¾Ü³|Øq˜Ïל]¿­ÌŸ/O*GUeDWGýµÇ.Gñ¼Ã•kWûêäÔvéM/YN5>%† ‘$äå@`‘ƒ $^ˆ7V42î¨õ‰Ï§GªŽïõ|X·7]nŽj?mŒjÞ,4ŽªÊ)ƒ²bïõmìúˆ%iÎÞ3Ñc5µt”
-%¸¤ˆXAÝÉ$¢~ åB&/ÉMœ”áV™Sá&+ið´+ÚBÙU¼ã¹ž¬/{c¦Ë »ìë¶]ýý`dâÇѸëÏCÇȧ}çÀÁ#WÛòÔŒd¤KÏj®®öÎJLÄæÄă8!b‚c€äC„„,¼ªVA7ÉuœE›%ymÈ"<½ï2_mMO^¬ Èþ^—O•WOÛß­Ž*^?œÒíÍKV&zã§ú4l]Ë-j}~)¾\˜ï&䧢Œ³‘w)@ôò‡(*Dlgy+}Þ8XüöÑ„õjÇÚ~µeªýörØþýdzíÇ©ãÎ_Çã³{6ÕÁRwÞî}kÑ‚Íö“¡+dPÖBí©©%uÞ¸A—W³“Ò<R¢b!/1ŠÒ2ݤÂ<¼89#«¬ô2+Û˜O§Œ¢óåÁŽ?ž8-lŽu_nÙÛ.V­µ‡·Õ¼W‹}ÅgΞ­¹Á§¾•ÞYYè%IMô¬‹<T7¤þ•â /~X0$„Çàj%uÔ’âBu±ojl# «4 ÿ§¸LŸÚ:¯8ìvÚét¦Óf¦Ë$i;w’¶nb»¡N ÄÆlc³cÌ&Z@h—®t¯VtÑB¬ !¡åjE’
-ê™EJÏ!bö© "¦ÌÀPÞ-òyG.(‘Ÿº|ÒÆM;!RÜÎÃ"<ltG2Þ˜Ãz5ìG¾EàÙþö¢àа*Šmiy|â` Æ$Öè­5;€­¡|¼BVaôŸ™9˜Â,)Ø–¶N°ìØM&1ëÄ*",³ÛcË‚Þè*<ìZV z6×@deeÆ+Ú·p“–Á¸!ø@…ÃýÅ"½ŒoÊÉyD.)!r¸ä‚e70Uñ¤ªb—ÜBΡŽÙ±·8ý8¾É}›Øa£:Ñ;‡FÚhoì Ê.¬j±ÊdÍ; ^G›ºîTÊ:Í
-øÛ>ð¯U±è‘e}n4n—Ð2Ÿ±s†’&Æ«C-ö‹Œ‘üêû(l¬ì3ÂÃC3©Ý³ÉíXŸã4l*„õjuq^ÕOÿ¸ÀÖDš–%xÛ¥b7E×eñM°ïÌFêÈy#Å P”÷Ï*r¾9MÖ§X­„f5—è°ê£¥-3/b&R³M5ö™mö@'gµº_þŠÁ|¼$–?Uóyõ:©àk5÷O9O|kGɹ{`TA÷Š£†WKA±¬•«û²RP—ƒ|vn—M:}û†™V/š6ï±CÜ­KÃÆ%‰O'q-QìêØ/v”ÌÆ5Ôƒ—@â?­·3/lóèø]!±èƒ8?„!Á{<QÍCÃlÅ6ÉO @_Ú*¦¢=¥ELìžà©áhc¦åÈ„f—¤ûϺ™G¿Þâ´ÿ.´ÊéÞÕT–%õ€yAÐêZ¿Û7*i»\”u‚”ã ܧ¨õ·'›ÿ>ßÀ˸*X
-0ƳZ_Þ Rì¼ñ°Y8n_¾Ú™´ZT³íV5ç>²9¶¹ÞmÅTØHo觛÷tä¦Èþ«‚¢§­|BtiâNÊ€»ûŸÄ¬©ì_°U°6ï‘
-Ó!õ uƒä6¥Í&þ¾÷›Š –Ü<jÊDyqjž|’Ú&>Î!(«vZOÉÍÁU‚b陓;Vt¢Üùæ͵€Út€5µ°x6íââSvj×á&®ñØ8ù$nšêF]að2 „Ên XrÌ¡³ËªíN÷U}Ôá”ô홃5\rÏ)³;³`(iŸpláÒV »è±s¦™W™é–“5òÃÃujK¤ä '¶%Á%¶g§Ž ÐP|þ,gæU]VÖJzý>$”]ÔÖ ÿÜJÑÅÆ=¬Ñ¬5pj†“àmÙ-d–="nÎÉŸ*z¤ÒŒ]e2AÊƉÉÍGFRsÚB}™Ú¦´gì
-tDµ¢þœ}ÅRÞŸÕå} :«9u oÃ?Ilôß( „çW8ïæ“3H-¤ê\^‰{ææÝêå#§fù‘±ÃÔæˆꙥ„$¨™Ä‹
-ꃸúS=£»ê•kË>:.aÄÔmL4¢<¾¸ð’ßíãmWA:ñ*,¢w`
-.1ô>¢´žïÏ™2YMÎk²^©,…Ї2ö™®œ“ƒ)ûþOq™=5±¦aüv®¦ÆqjFÇrjêhÑ)u<‡9u!ƒ+‹Ù—H0 dOHg!;tÂ"‚!A @ölÄ$@Y;[g#¸žÿdÚ«îꋯú«÷y~ÏóŠŸüíh|éÔ/•ÃîPÞIë;Ù#wœÌÞ¤Þ”³²û
-^2rqYûm_:ýÍ/öñY«Ý¿Hø¯k3®áãá]ùÛŒGþ[Ø ô¦}ÒI88¹Y ‚‹_öEà‰O Î:Ù¸€ºëZÖEÇä]à«‚œ†]c`ɯXA´%„‘y–ì<BÚÈl ½ï¹RvþÛ9ăuvŸqènb“ÙïòÈY¿HT8
-âíÖ‚C,)îMWüBaÑEï)»ý%'{0¸„½‘ÒñI'Þ)UÒ, ‡µ d¥ 3(ŠDŸÓe·˜ÿ=GÊÓ²W,„£ä¤‘ÎØèíy*f‹vä¿Íä¦C¦Ê9Ó5ºA{\rŽÒ*¡¸Ëê-8؉mVWTÃl-ºEÀ©O"‹ìàD dt!øÊ„ô©”…ý2¼ÙóSt{v11EߣÊ":nßáæHkÁ36ÙFIÈ]X‹ˆZ´‹G`„9+ùYÞNnÉÙ«œÆsšÑÎë–ÿ"¦¡?‹éˆOc&jKÜDmNZ¨ y'[ðŽ½Bt·5IØ›„Sv ²›=X´SŸÐW™7þ`–ÕÿP´³_f,bæѳҳúN}
-©§äV¼]ò©´Õ ™†ž"ù_ŸÔëÒH¶d‘9¶F±²ÁÚ³F°¿®à™Vfœò©Ò Õ ÕFµDTÚÎGö<6:´J®‰mÝ%çäBÙõòvP’5 É©:¤ÄßJë¹ýQ5³AÅh8sðW÷%0ñþs\Cz%…tq$ëžU„jïæ&ìæQ3ÀÙ#0¢f¡¿ÀùÏApþëlîË¡dÞ¥t¬¿¬Ú[ÆÝ o0mPka‹`øÄ Êó)¶
-Éi2? ñ¾c}~ƒ:R1;ÖP6Em—L`Ó¥”™5p²'| ˆÇË>‘ e¶y˜´C1WðN¾‹o3;}óÝ—ó=—`#²§y
-66±Ž¯NÅtûì˪³$TÅJózþ@NÃjɨiOBó˜+¢ÅÔÖH˾’xï7ê¢ÆkN!y›Üæô©ˆ·÷U½Wýªž«ÞE„Ã+ý?uK%‡;ô¥äÉÅ j°ácP¡,yÅ"Ä·/ÒˆGöW1U[üû²€Íÿ´½&ßõܾ[~œ\c=þ?ÅeöÔ–Fñª~è©©­±gºÛ¶ÛѶ§ÅУÂ(ØȨd5ìK „%„ìû
-
-áç>Ï+%ŸÌò­c„‡
-n+Äúªë¡ks«n¹®`ýÙ(,½ÞDç6PüÒÎÇç&Q2P}‡
-»sI5‡ží ™½öçɽŽ¢ý%X–uºè'ûüW¿‚ÖðqƒòÒ± æ7 ò#ÆWÓIðVÇ í nÉ¥Wí¹_é‡aÿ)­¯q/nÍQŠ²ã†ÑÓuz•yyÓ,lø»YX}EÁ~ò òµy zèç’ñÎj‰©ù¤°’VSãK?YØØ̘4 y™=¡àbø¯ƒN™i3³+©£7$AÏ
-®¡òu×\s 7R;ÄÊ B€v,“ î5bQp‹Rî““+]«”bç2î‘IÜtÛ>‹zâÛæc¿øyØ( ¥­ƒ¼„¾¯7câ‡tý¸è.“±‹c¦QÑGÕ`wÀ0ñ&¨á”\xDE«:^DÞ;šƒCŠ^hT…î^kË5Œ¾¸j›‚Ý8·q¨‡£³q=©1¨ú?Åõõ–Vž‡|v2;›q63ÙI1:é1Í–hbbªÆ®Ø°ƒ"("UŠ ©¶{cŒHPDEÅ‚4•¢(¶äɳÿÉž\œçwwîÞïûyÑo<j|¦]V ¾äB¸·•5)¢Ú7`oå8&¿ï)gWà÷õ
-\
-è†L—›äR‘¡=Ÿ½­á¼¡¹Ó£æÖo+êÒbÜ㇒;¦ÎâÛ"vú%Jç:àIQ]†±-7d¹·ð®mùtR~q‚Ÿq~¾½ ôpšI8˜ojwMR²`¿~ï@«“èR ß3q¼Èå. ©iú•a.µ$°Ài°JÉ©ëØØÕÁÊðÅö¢ÛCˆ(‹ðZȆ2²œÙU²ñV!ṧøª¾­àŠñCéM} ôŠ¡²Ò{àVU«BRòÒP-˜A>´ok‚RâG¿],º)Ä¿:;A{ꛬ«ôél—œQèŸn@ê8´#Ð,`–`.1ꉹ;ëŠòü¬y°*zi°ú±±qgKÄ‚ùÕÛ
-
-Wàž¥ –ÖÑ]3ïƒk–sÏ2ª\ ¯“„l¯ŽTXdQvfY§ªîmnZ±°7
-s‹ò-19m©»üîÚ@EĶ´æµ¾=ÿššŸya¹ñèÈÐÔêaß™zKÂÌ—G/öWD¯ôTÆnÞÚ×ÔÚdué6=ÿÔÔ6ðÕÜÒëÓ6 Mýe·–ú ¯-÷@¯‚^º·­ åoŠÈé†6ÄMë)Á7 m"ì˵aÌÓ)>üÆDb¯(.h›zÑñ™óà)9Îδ”¾ h•ÆÎœ.TÔ™ú´«?Èð‚œ#Å‘n¹èÜv%6Gß•w?``3ŽÌ‚V4º¶v °n%¹`ã3"Ò¯ð§KÍÝF6Í«¥û4ìº=5­Ô;A̳~DÅ[ÊÂçß—^· bãÅÌÒ(AÙ‹`ËPÍ+§„Qâ”ð±žqrºGLÈ°á²fšJîwVÄýkš_üjWÉãz• „†ŸôŸ¹÷ùw7†‘ñǦzÜMÝQèénØ3qczØws¹ÕÔÒ-)>Ù1ŠË}•dÿ :f¨2ÜØ\~œšy‰‰üiŒ˜x÷Û«É7M)ØøTñÐ&D<Ù–á³÷´ØœoV ÑoM#Æ%­Œâò¾,uŒÌT‡°$j}j+‹ØƒEŒ€GË£;d ¨GÅ®q+™åƒè¤_øyOþ1TpVFKü}µ¯0"0CƒŸšyÍGf‹™ëG• ãÙñBŧ%¯}FÄìé‰Ð­ÉšÔ¹ÎBзTä)è'—ŠGÓtV‡[Ä”,©sÜ¿Ò£?]as}ŠªøþÜK_nˆ¹7÷†G‹ÎÙÕS*Ö%¨gn=¹Âoy/:^ã¶|Yç4}±pxûF&έ¥—ûÁ{µ7Ë&HŠoL|n@Ï© è¸Ï$ á”lÃeaÎOÈè}5³Ê!"&láž»Çë²¼JbhŠè)"f[všV²¦`n*˜¥^-›°£!ø Ø,ùúû·?‡Nók1Ù‡óLèÅúÉèýiìå®W
-~Øû„- éíPI¼º/ç‚qôu‚¤#ç§IÜ‹+@ òAÆì0N´½jqç;ÇÛºôß7¡Îˆ‘\¿;‡ÊòÈk“}JàV™Øc³°Û«d#Röæ©ÕA­í‘ã²íãõ·¬#u7æÙåqÝ°ôïجK;Rtž}
-•ÎE¤Çm+:A-«usªé‘õmý-³¸ægÛø럔c–N~Ð äoͱàGjv˱EØ÷eCØÒÓQ¦Ø/^eœe°öÆ®‚T¸§„šÖÆÚïûÕ]Lð&,ÇÛÚ»ÃõIg'Ðiß.RŸþU ž÷É[ þëîñ¬´¢Du÷þæ‘’ªb¦^qÌ1N׈5ÇƶrÏ <Õ4RpÕ<Z[ï:2ËwWDÂ9Fõ‰¹G|l€è§k\RXÃ@ú•˜÷TUÒ®¼áñ¿7ƒûúž¾E>>dê~±AŒ€š?\Äåí|lÉœÂglj*îÝÓ Ø.µÄ§a4ùVØh÷|– ÔÒÖdS²{~Ã-®¸î“ãJwU”ípÃM×G&lOÉkß’ó·åÄ—[³¸§ž¹¶§ûjBÑ‘‘Ó0 L„Ö†!Ó€ôØÚ/=±
-ºc¶.ApÎxI ¥Ê»ÂBh»!÷ ñ|’aB'Ú›né…—6ÆêzdmÖqL²e”úØ-íA9%"”ë#¯Þù‰Zè~Ð1Ý’aŸ®M
-hõ> ÎyVíž’ƒô¯ˆ ŸjÝž',
-°±³„Ë÷(ˆeQ‹¨ÿHÇ'ªy8¿ô·Ž‹‹­sÇfzËÎ\[¶YÜpó³—éYàb\ó|´eŒ™mäæš» ÷–5ÿTÐJ.®ôÀn«kßuäŸSòëxg0ÛÛ¦ÔµÞ²kÞéÆôõ1x¢y 4Þó–5·— d¸S†{îž%DŒnØ‘-<VÄÌ¥ù ´&ï2¾Ø:Qs{©%oo…ŽØW@Í¡±,¢/€Á9¦Q)Ÿ¥ðÆÁ¢Kìý‹›“جõibî.ûüçQdrd•O êø´# pŽö*ÛJl“M©šnxüW+ÔyºÁzT@[ÿðÇ+fê›8_¬ñÌò6§P)ûJF£gA@5Žàžxæh°€ž×Ôp0¡E¨Å¯à ½HE‹Â¢+RêË+‡ËÑ!%–¨„å—½ „W€‡ø°•Ç>¶ó¸Ç€Cw§[Ψñ©¼Ýyn}HÇ@î«Ú “È”- ö±K‚IÛ›iæ™jÉUpŠo8§ÛKȵ³Üª;*¨*Þ#Åæð…‘eVc@ÉnÝ”"ó×ß•§ÙÅe×¢F5lìêtJÑ™›S°›ÎéÊËpå­mYcæ{G 觡  ‚¤üª41¥,ñd½ÿSÔÜÝÖ²1^Yk†­ÿu¼VÕ%Ed|ut ™'±ÏE觾վ÷QGŸâ@ÅD8$m §¦9¤„‚€–Õæ·ð9Á5:*d` ¶g‰y)wGN+ÛG%Û«®®—_[æ?¿h,wN`SçmÖ‰Ö\•¨ä²SŠÍ:Z¦Ôœ˜)¨+¶±ÉÁUAgÈ(…MÝ=‘µž¾SÛÀLÌ&:µv Âfî@/>4vT{õT¸~
-ÿì=µôÊ®Œßž¦«Xqƒˆ”?õÃïQѲ/l7üŸâ2Jó^£xçÞ™ÛÜNÛ4c&MÛ41MÚX›mnŒIlšÜ5Š;.,‚싲+HpßÁ²ˆ,‘]Å¢È*‚Kš´ùSî›ßÞïOï™yžóœÏù#°L-µÌP ‡©•W¥´¼‹.`žÄÖxÄ=|`$×&-ĺ èRاb£±`c†Và^ ì©ÈU1=à ¶ø/þÁÉãÛ„"@##aò“6ÉdÊ&ZÙ䨞PP6ƒüÊ–g!­:¢æ"¼‹ôÒUnkº½6ŽzõÃ$"ïëQÔósýÍà³ ¤ü vQÕåÈ[F¥²·ñî >?Í3M© «{H;ó„—¾%xvt žP4Þ:0µ—Åô6ÿjg{Ê%žŽZȘ™Ò7â*¢ÆŽÚðzi_ÏÄX¹ì]5¡pw—ë™%ÁlcíU!R~ÖÓQUŠýsX𦴤Ö]ÀžÝžÆ¾ð._º§w+íYì3ÇTÝÍíŦA5ø‘lG=ÕôÕf
-úU@C­wÈpO€=½~`ær“6>/´F¬pŒU][㥩;K¿C?øÖ6TžÖÑár64s¬=ïüÀnc'Ð
-j;[bfÀ:.Þ»L½·ÊFèDðžbéß1#¸ÎÂøæ1 ÍºËæ‹o&0ÿûÎ:Ú”Õ/¼òøzÚ¶±ZÐG7µ=¢i|²-+Ï4J*¯r¡·þ#€fœÙ›«Ëþ´Ãëß×SwØ\ ß{Ëg¿wò·»º>lÊ+À[2höÖ*ЃKÙyܘ‰G›¸ä¤‘Ë86pèÿ8™äOÛ4ܱ“ŒÞš?ðÎ’!ÀmeÅŒ’ᘱ‡7 ßZz„1V’ëF¢¼#TFÔ˜B¿ùпˆÍ8ûŽùMcºS¿åèküÝ$(½â®ÉðO£îíHñ¹Êî’+S„‡_nM!À'VéÔAE&­PàVDt$hèq 3âë©]2ulpOl|Vêó¿ìÔ–À}~Cg‹y‚ô|‰Ùð›cVrkÿ˜ECήuUgë9Uwœ€eå­÷c«„R+à¥!äü4õá7áUrÝ‘±WÓuSCR©_~P
-½‹¸Ü š\±µ@*2 Àoî®0ZÌBIÂHk‰jáC«ÍભÐK82s©‡ænVÂÒÍ‹9ä#[·èÈÆï>²_‘Z¾##½ôΞª{~­Éùå_¿Ÿÿb_te[Š+Úh¹é†e(»
-.i7¥—Æ©…é¶qR±€Ï\;Ø+o{â•Ã³¢:ô«ÓM
-îã¯ïÄÝ+M:E#3u`eÓŽ]lÁ‰[8™rJævQ¸+A=­˜oö2·ôgr!¥vê; ¥*¡aÖûfpàášËö¡ÊKžiDŽ_ÉlZâU§¯õÖfÄô
-16V úaS
-{¸¯j~lËÿÞ2”ÿ“köÈ0X2 Ö> «°%<ÜžÍe|¡v¨ùf@Ý…=vH¦tBʆ*iªnË;o)'ßûÊ;{öÞÍëÙ– í2â‹ ž×yêRÿãO~ÚbRþra±w˜|×dóÐ2£:¢à¶Ä´Ò‘«ÿí±»oéÈ&”Þ
-œ°_RVÐAÚ¹‡«Ò=5×÷¸¶á– ×þ~tN„ÞÁ?ZçUþ¨bA.Ž´e}˯Îø/ûõoÿFÜ;³;O(Û}K)
-©‰%q#µ>úŽÖrdS±,±!Ž›8„c;—T’ÊèÌS‡ZçSvÔÜÖ½ån¤gœ] ä4^ím|zFÞQùctI€ôMaAî¡êt³¤ Í9\}u{®äœDeùæQàÔ: Z&—„ hTÇ‚‡5¸ü“ç_A€uâ‚ËZañyßBSö©ƒIhð} öåþ*òqd­ ’4‘á;訿7h¨÷LÜ¡……Û_eÔ~æç¨AÀ8XKBk²}’uŸm{™¦4^Çÿ$iÌ;ïèï€x¨•®1äÝ­ItöîÕ…•®¢ŸÃ*JmPÅÇoLuMKÓÖÄÍ9û5lèD&-”æC+¡!nÆ{ÙQ6v"Â&6aïJnzS
-Ë´Ž´ÜqË•ƒXðE·äZx‰Uã—árLÝiZvî9{ÿë›2hšIS
-*o/ ê(sLÀ2RXæÎ
-îyì£èì„¥wüÄ+ÑÄìz@Ën ®Jøñõ1ʼn«»/jd"
-Î-ïjøòÿ—×WÚé…gÍ9ëÔÌdÒƬ4“ÉDÓN4ÍıÆn,Q0*¥ˆÒ¥JSD)"ÑØ{APDA¤ˆˆ" ‚ ½grfÎü)ççÅ{ñÝ|ïÚïÞϦ1óE5äQãËœªÆ܃%Ä[ëäù±Š
-,´!î÷¬ñHG
-J©©§þ§¡Æ¬¿õÔ¾øv¹×ZòOZÉ£˜%ué¾eÒ;ï
-¡Ø»B,uÊ3wFÀOôÂŒ+*Æësö~è“}µ\-ª¼±.¬ºmF¾znfXGzÿ»•Šúbj,BŸø4ðWÀ§¿ZÅ3Xx]!%2Ã'«K©šó£F6!x¦S‰/1õAïJ×R;AÿõR
-*Ø ŒKÃFX&‰™RJMÐýŽœ·Mã+ü:~{ÀÐÙ0rˆ¡­®nß:mºvœGÛŽñæ;è»Rú{Ÿ¾ƒéXaÖ­ŠŸŒbË®N
-oXû¡wUew×û ™{s8ÐñÍ.eseÔÄ$D78-Ñ-6+²Í`uÄ×üYŽRÊ£fá§Ð†pĹÂlñ=êX߆wª[!5é˜#¸)ùýiOÁ¬Û§WG¶ûWƒæ!CØ2`š?)¢›Âž€ƒ¶}ñ³’ UŠ`÷ ýÀßÚN±q SP·adä|ç4&ew¬á¾­¿6^Ó‘AÝ º9­¿‘qÿò7hÚ —ŒP°?‹IÛüK°ÁïïMÔ?vÌBxÈÅ@?ÀÛ(Ð!jöUß
-æ3 Ê\šáYת¤;`è➘â°©³Ý2M̳MÓ€ü&V¯P!®|®}°ùù2§öž¼ì*±¥2ó;ZÉ«ï7º¡hg|Ë:þþ¶¶»(nÿìÜ%-NJϹimH5Ž5>£ò.XzÙ`¯´‡TÓ Q¶, EHž¹êSÂZ
-âÄØF9VQª¢ZzýÿÌ ÜÀüiå ÛììˆÍÖ±ªûŸÇkïʈłæ¬ç˜à{»c”Û *yS¾©íÊ¿2Oûå "ù|WEâ·«œw7ÜšDnuZœu
-zåç |º{‘XæRQj–zàOe¼ê—Çk"±](öZ|²Î­a@|À½…,ŸQ X%æjûq©n-Ÿk[`AäLè-I}Î}õ©ÿÞüìW¢òCk¸ê!Ra\öƒ«‘w¿Ï‹nq™S'çPI¬p
-H‰Œ—A’œ;
-„Oà;Ô¦B @bí·ô-^ĬÚ÷ßÎÇ/©g^×_žv8íê, A’$-ìin-¬‹™>þe#ù`jož³ùxüú!-ús¶˜]5§Œoƒâ9M[6†…=>Þ€\s´LsôÇ®:ZŒ‘¾ ½Íèî)ÙeA¼é˜S‡-ˆŒÞ9XyÆßë*ï–>øÀú5wþ/á>mÓ+®v¹ïÏœsÌfÃT}A„è}
-Û d_Õ$B,F¿Ñ猜ÁC#ößiIîÇ‚Œn}&¹° 'ÅÚ"Rm]¥Ïà¤T‰z4/"é¹Î!7\Óz}°HŠ¹×ÇY’2§Yæ©Bhtnê!þøùãsWsyr—<–ÔäOòBB©/ZÄPb¤6]Ü€~ýø÷yüÔóÙ©ôÖûÊÓ|’Ã0)¼Èã÷¹ÜîT;o@„¼R[ò7|AH¾AGÒ7dB=>)!”p‡‘yULzôä'·} ïp±)Ðì*~{òÀÈ
-Ý$D½
-¤És/ˆô•7¾¼ 6º%Eª«$/ Ç•¿1§ðɯÏãW9mê ècÌfÏ–0o@¤ˆ'£ûX€h*^ æcý–PmûˆÑ§C¤áÒV: ó>­q‘ûÍË’
-©×Ë›#ÅEü ‚›D‚ƹêääX:—YÇÌ–Uƒ³Ë09ÇQÕ¹!€…Ðü”a$9¡nnfç&àÖ[—SÎ €Áà–+9‚ðï%cïè÷gÿ„ñíb<u'ˬ÷uá—6û½É1›"1–»{À[ÎÔõ¸BxOô>ŽŠ+gPNT16
-IŽ–b ƒL®cè8-²Ùqåt.â3![Hù<~è±»Ë>²S$$üèÄÐ,C[Ë8ð‚зzfß5…©ÃðÌØ#aHSÍ1÷0«QŽ4«­—3¨ S™V´8á¼€þ1Y?¾3~/oÊÏZYRx›¦<,褤•—/ÅgaK)៭Û£·dÇy\#¨Q“O݃ÌLCÿmA¨ ü"ï7¿×UXV(*ޟÊ&Õi$î·²/º ׫P<RP)D'/o½´àt³
-t“,•èÐ9´×÷˜¾{L ¦7Ÿ‘¼¾³-µI:©¼[–®Úc©ŠtLýñnŸêÈò> Éx³—AÄê76›=ê(yVM˜
-›óUD¢™rDãÐÙxN„ö‹)ª…ôÔ+Ï"ÍQ…Ìoƒx)šè¨6èK} ôÅäœF
-“XsO¼"Ìž¬“º2TÞ¯,¢ÉÚßÕâf¼”ôå”^ ¢ri۸厕k’½ÞÎøÂÓ’1\’–廼Ý+Û†å¶Ê„Î[ „¸4?[Îÿk­å“ Ö ´_¸ýÍ—ºW¬*oW'ò7äxÝÔýõº/ ïÄôß©i 7Î` 7Gf‘i“r ó÷ÑèØl3_sê è‚ –Ñ`&#[[fŸƒô IìÛ4Â\; ¬s•ñšK@ ƒâ´0ò¢-DåÍÊ«Ï«g°Ç±[¶ÌßJ¯ 9Ç{Ð!rĺvåõPõjëWÐXóŽ鉾ò]–ŠA@~¢ß>È­óQ›±ÆÙÐá&Âdy[n ’²6Ò¯>BjR@RY¾c<ÙÁx¤2>ÚšBF—ó˜ŽVÛ£aVwcT®MÈ1ËDÏfš+*@\Ÿ¿hRΠ@©q®z¹–•&c×^XÁ`:´dQÏöCùÍqAzuZAð§M¬m¿€³| í)neŒ ¿wª>wV‰©X®äpMòÿïøg&ÿüœšT¾ôª+•wZý{ÓcÔXÎj¥=<'HM®õÐÌ®· ,¢—iA
-G„\«+ÆšRÙAºÇü¤<'ð\ÌB?¡L1 îîbH1¹°#y;ëŠ`µ‹á`ú´73ó*݆N›Åý9ÎU¨)Œ¯Ù¹éÎYuÏa7ÅÛ³ÕÙ^}´öI˜ª¸âsU/¯$ð¡ïxXq˜OÙPøÍ•š‡XÇOŸÈ¤ÆûÔ;ß@ú¨í!êG3^@ã™HS^kž¬sÊcCoÃZíöãtëÄ5
-0šød‰Ý¡ÌÄÿ0^&Ùmå0ÝŠWàþ»†ÙE¦òþ§u (%}þŠ“I"A$ˆæ5Ì-Âpÿh)&â
-å°l2‚‰EltÇ^5ù<<}جs;FŽÕ²á… °i<7ø•3e,² ²DÀ‰Ž2"éH$V‚i;¤Ñæ­›¢]…:냨ì Ps±[Û Ða4F6L8¿Êb
-“¹ÑóÞ¨ÿ’q]!Ò¬Úúâç¼½¼|"ï+¤Ô¼ç¼©Ki§ÒŸ/¯*(ì‘Œí “Bª1örF›yyriåIž$ЃÍlÊø朄¬`…@6|INxúÞš„ÐìxV{_!l±ŽÔk_éq@p²Ã}FدÙê_D"PØ«{È‹J>… +Ö%(^¶{÷óDraT­ |ƒ.®õš2°9˜u@~|9ˆ 
-q•¢ RÊ°
-¾õá‚“—vЖ©`Y(¾0Þœ#à än`*ÑU6É&”\ùFÀ"úä<¹¸€Ö K»° ÑÄK`ç£ÔtOèe]® }Y;¬_ïšôj3ÏxYà· ‡m 4ÀŽÚ$>dZMöð ;]v@.lný¶#&ÑkNudŸ˜$“Ô9íÝ Ç”ëÝ° ó†'
-Ãg™thåUn%©2[¥{#ÛH"dìV© ŒT@3Ô;„ꂇ¨çtPR>žkÁ
-Åaͼ£ *r4:ðJªøîο
-WEó‹—!ï»~aÒºé­CPÃݹ>He7ó4¨:\X±U$md-6ɸ•lÐAÈ‘-cY.ÞD „$’dû‚FÂÑOСÁwÐŽjW½µáÊvÿǘ_¢Õ¸,CÐæò ÛÝòvü&¢0-û} ŸâúÆq£d–ØBóy1’­ù»DAÛ!Qaôy±S'Š•Iûl<&ˆýE¯‡ôûñTƒ `æ«Š˜!§"YA#çáí|_$ X¼®ÅY·ÌωŠ<r?Õ/|®ÞÃtÜk´ÊûIVʨíúƒîo²ùD„* š(S0Ì? ¨eG@­KPp€ÁQX-Ÿ(åæ.§-ñŒp‚Ù£eÄ‘Y‹5`bïg£˜-º‡a{‘ÞŠKÖÒ´cÈìZòqÃU`uo7û P¬&ź¸íŒ7×N_s¹LÌéM—É»Ôæ:¿—Ÿöà¥Q¿²,’«aï•„6Ï
-CÈÌBWð>…€Æp{<£e3)õ -„ &ošÌ–øôÒöÇ1ˆ¶dòg Ù—†mÉ–é
- è>…̶€!Aæhß!I< # LÝwM ^ÇÞe‚Ø[¦YT:6j"Ó .ö´®î'i莓M1Åp7y×’-¢õ6äú
-øLPFËE&’ØA ^— DÔ}7 rѦ¬ê
- e->/zÉëbˆµ[¾ü
-Z]²W¥í‘œ;ÛÚûRâÆșބDÖ'E­ˆF7
-¨&&‡„¼Ú}BP
-Ijœ€ˆÞ‘h±BÆŽðÑk#ÆJöƒîÜCŽ.ÀB ÝS®Ñ
-,UÝ!<‡=K]¼"‹„+ý&m9…à2mÊÈ‘;r!¤…·²YÀâÑõ8Z|bŒæMøÆMŒºÄÍ—­.7ÿ‘­?=n‚
- 9u:j‹
-JUŽ¨é€7ÃSê±™/65O`’þe¼Ìq+;’(º‚ÚmD΃Ù`›t{„<ÒÔþûÜÌÈßàñ_( ªªË|™1ÜAŒè!5äf2ü͞æ¶
-êðZR$;ÕY7¢eC˜+îN
-µ¥ìŽ"/«É|íÉ`J²¬{oýµ4ÄdçtYÄŽy—˜î!ä÷\ºK ö¬Šáh܆±ÎäÕGÆ›EÃaË—AN®äsšn%•4†ú~e{Vd|û· g¬ ú0L V¯ÇÍÖ¢Åw財÷Zô½AðgS|bÄ«Ð(·ÑNªá¯²FŒanäaõÄ;ó”Þ%M<±0afŠly_ÆaŸƒZQN¶¯Û9„U^ÀKRå¯øK˜i¦v>uñÛ©¬–-\r› âpjµ ÁÕA¶¬£ÝƒÿØÌ å`ÏZ×Øç~>¤'6™ê’à]hÌ– UXánó<Z)N)í Ù±$Íc£§ùp{þú~e04Cáf†kT—…`éÙ r¦;b“&9=æË hU¢DÑ«Ô§;²O Y¢Q,¸H3£O Ý\8$Ñ® IKg{(+áiÝblÊ4ÿ_ù¡PŽ JE"!S4wP,po]þ•¤º);,³G¶2V‚"î3£ŒuÆÈ5“^@„¨€á$ V[²©¸‹•›Íâ®SêOح݃€©1×"†w¿YŽþ.«Â]`ýžlå±{ §ÉÓm6
-¡æiçœ(õ¢—üS¼ñùzeÆ4Žý‡‰ü×ßþúg³[ üTb¢õc¡Z®ÁCfn­MÓd2PÑA93óéaš&‡Wòù¹ä̓üNk ¡;á,Ã&x¸ ¾¢4,zßx {˜G>)•gkŠÙû´Œ˜@(-MÌ©àuÌ ™îs¤~k¾¶±Ô  nËööò¶J£næÂÇæ@¾vý(0„MX(·çÀ噜ÓÓœç6]v¯(ڞÑ1nà ,
-¬d£tÑÙb֖бŒ‹ýŒEÖ0±…‹/f©Uˬ÷þRU˜)„²Ñ]–Â1ÉÑl•–wj{’Ãë§í”bŠÑ– "à I,=YK9×ÈÚƒÅG±jŒØ°Qn,0˜ðŠ°¥)\® ‚@ôO‰ïø¸È0c°ÎM0¢II5.\sÊ°1)Ãe¼Ò>$oBi5ű •Äbëûœ"~F¡c:ô;ÄdEZ0 ¢„T+vàÐfL Äù×¥ã.Ÿú|Ä`læ¢|ë™JDèûðd U\ZÌ/Ë0Ò]†‹EÚ´’·æQ-–0˜½v
-›Š®ÓÁQ«™–ì:ÓsÔŠ»°&ñî³6Cò’Ôjº¼yer,ketŠl`´G#x$„À ‹<ÄãǸkœÞÓ$䡨³Se6q¥ó U×NWäxC’\¡ˆ!<S
-'Tê>ŽÿÇy¢‚”ÃŽz)I7ŇQ &7WSƆ) {^ê} Å¥¬9Á5`Z{Û7RÎ[D݃LÔ r UÁWP`|ô$IŸîç^Á§˜-h\‚»£”ÊôzŒ^{ÛÈ“Ÿ‚ÎDeQVBlÈRýAú ­uµˆ?c˜¶
-òwn¼L†5 {ödÿ¥³!6çº<Д†Ëž–ÍŸ3©‹™a`1¼…9OîßÇuµ¡àN“r¯Y/ï»:¬/{åŸÓ"†—1¶Ž5J¸æ`ãˆsÉÊ' ÍÊs‡¬ Æ›@ü ÞE¬;çë o+ž¿ö
-æiOýqÉf/oƒ•Ði&DÂf6¦(zœtíÇ=Ñç‚Ô$†¥~G~³´ ä‰RékÕ¬Ö—åÄb¶2ýs¨
-ù‹×‘×¢Ó¸ a8ƒK1{¤Ø‹‘–.´Ý[„™«’Ty¶]Ê H™kè
-C™ƒ ѨóèŽ(Ê#°­Xk(åãr:¡¥ t•i©½ ¢]i²žbáÎ5òGf|ohë=ÊîP·]‚àe)G{žK»
-ÇM»
-{mÈ…á`Ì®=ŠGChéÈçS Tª4?Ø}”è³48îsâ@˱iØmpJ‘L–¹R{{¡å¯¡@ˆ Â^-ÐÝj®Ô+Ás}ÒÀou„¾6ã+ÞŸ¥kĶ!´™G4Ú\r‘ ¡¦ Ø(ïRKÖZ<¼]\ ÖŠ„´Ï‰X0H‡_ÍŒRp¡¥»-z9QQz´)ÖQªšÐ$4ýÛ1Ï…\U•ýbÝû/ãåŽ›× Dáh®S|?Ê@)ÝfF:¥ÌþóÎð—õ_^[òˆ—œ9s‰G1ÀøH”ŸœºžŽ|“pH¹qüjaäߥ‡­Ÿ‚ƒæ€J ?lý¦†Ï6
-<§œŠPXÉ'ÁÜ(z>……œ‚ŠømßDÛ(ˆG¯%¬äŠ»9¸’ÆdŠ©Sô7£Â˜CT¥­Auîpe”\ß¡Pêešúô
-k693±!ºät÷íå\4Dý2½“ ýîDH„ÔZò¹CÑ»qVZ.É}áƒEÞÕ¦Pªô,wãÞñ
-69Tú¼$×ØBòwEô‰ýA»Î
-CM„?€Hé|¾êô†´‘X¿Lk%Ý®³’I3qß\hJöÄeÏKî@û|N[‡òêè·X«¤(Žj%bivµ÷â%JˆH4£íI°(UÄ}}…$|âÍ
-¬ªæ<w|c4lð†æ
-
-#míf©ñÄN«D–Ž ¦l3Œ‡P—“•@¢(¡ø´JüSœÊØ$ñîîNòͻۀ1þÎÒ˜k;¿jà!k ‡|×
-Ì'?ÀuÔèW™¢kô[Qw•OI\úUV
-3©Ú—PxžœûÙùœtšœÞ éäBUÁ Dà%myyk¯f2ãØO¯
-½_¶Å'Ð ßV¦9€U‚³Åcáz]JáûdùYY:y(ºJ Šr•­".õþ墶0‘›nØŠaâPTå‡"aG ÿ8à4ÎO;s‚£¦ð—³•àºäD±.)ÀŠY)x…¶{O±0+!Z÷Í2¯8j…’$kw?Í|Uà'ŸŒõRã×ÛcðUm$öaú³CãËPòL1ZÉzCìsÇ­„ã#«)
-¬óp—••<ñIfÀJ†‰†ìç(ä
-á
-}ܱmê÷YRÍlÞ^NE§öÅ ¨Ö¸sª‡¢'V~ÿ
-uËiÅo©4’k«@ oöC Y,ŸX°Ä‰üÿP´Jx2§ÃôÛàü
-\d­$—ÈåYÐtç±(bÐcQÚöXÊl¨$ö¿Ú9Pj‹ªíDABž5Í%·Tÿ:é©Ok7ñ´³ë)Q¼½œŠº"¢ÔCÊž}·¢´¶sÖSÉ»uñÇÜ`ŠVIÇ£^ú9Ðzd‚©Ônìf$0ÎR“Uð+•v¼™BŠø ÎRh~ãhv ×,¸ö‡£ìè>Š¶ó‡~P´ói¦¶¿t)ª´8æ ÛeǬaò `íSœSÉZ’³UÂøI5d¯æóî"Yå¤ ÎUÐ !•HK¨LËÅRÒ$vx°RÎàûˆåh‚á襶W¬ÈIåîvñkNf™XÉlètÚÐ(Å|¹Íâ¦Yko^-ˆY¾òÌÞÐŒ>`çšú´k·>Dër#Ù1Q}=!¹å“@éìUõ¡CÚ¨«<A<”xŸÆîîŽÑ—Øò^½BêÏÖÌ× ]…°ŠöÕHùuÿÜ9¹üÊÆù»Ñœž¦íŽmPJeõ…§ë´pÜ”ÀÃ8.„(o®¸!ã >¡ÉŒ«Û9 œ°f÷Íã•lC@w’½³
-ÂãcàC'žn+:D/¿¼CRcΘj¼[ô~-"?Ó#ö32´òç÷y›çq ˆ#ÔY·ÜÔ%ŒŽÚ9
-ú9G½9¤ëpú¨û¶4Ž.É7øªÀ²¼Ÿëø“­c-ÚþP&éÖ)Š„ÒœQ˜AèaÉo«„ˆ®!¦½q V¿bó’åñ»°çˆ‡9!Ó0s)RT¬ÚëYHšC€
-ï.{?³˜¿ü Ì0&ÒHÈd’ï%lVÏeœX÷4õgî¾ØOp:C=
-
-Dp5p}i2:’élÜÆG ¥Œ`*vDG&v°£ÇÄÈ™Ix ²As!ÐlcJ  ©¤£ì-¿1hÞ¸`GÛó]|©Žm­Éó} â©ˆý@ê*7‡¯|äÒ#X°´âaVÑœaG'8N€Ñõâ§HñQ_¤ ¦=.4@¸e;ÏÉVÑyzà¸À&°$xä;b`l_µ¸Šyã®Û¼øgäY@?~7ŸÎ`We|ˆ%qì»QFw%E®çâHVÀ”‰U- [¦Z$·œO÷åTí˜Â{Ù5o Tˆ¬Vy¦#ü†RoÁ&VñÁü˜2IÜ9^™J~óƒ×ÁCäÏNWÄ:…™¨ñù³Dê1sÔ8sßo(TdKØÆÊ‚´Rª…²B#ó!ØkÂÊ'^Œºx“×oa)Ö($•ñÆË$É#†¢'ðú9kyÉ[hÛºÿÖï'”›•%Ña…M
-Ì ø“ü#¬³×3ɲ™ÅJxpEDtmJV+`!
-¼ál5]-÷zg -(aõv0ËÖ -à 7Hû§õœ…’®v³
-³ÏÈ3jÑOB`E­óã4]Uj‹'Å“ºwúó>lR3/(¦îd¼UV4•¨Aßf“z):=sùŒëÄrÛ‹KÑKˆz·{«ÖUà —]ôuSÄÓæ”:ßæ3´Ðz@³éŠ³·‡ßÈ!+òª„î ð±ŽMÌ©…`ǽ3¦ÃW{cS3*…‡ä@¥Û:Ð9œ¹¾ö’]G=“ E†j—"âÜò¡ä§="GÁÖœ4ÏëðεżtSÛF<µ‚[M|L²ŒçKÑ!›è<¸ ­·¬¢ÄŸ¾ù+cÀÎ,Ÿ‰•÷+q0·8”ø#Ãè.:d <­¢ò%†ä[¥(UÞÏXÅðÈÅôU°©ô’¨ƒÖï­¯I„%x‘R›ÉZ«ŸÄZô° ¾Á™™`XÄ|[òmJ×#_ŠNóž`—Š8â«Ú-r.E' ^¶{«è…Îðz)rŽ‰
-›–‘’5Ÿ·&B°Æ1‡¢¤ ntIú°81b¶‡±kĈBÔ*ÑØs&üAf„‡“pøÄž1”7~XüÔCÐÓ­¾ô 50í©Z ?Á™…ì,S/X¹{DI¾¹‘÷Nx Ì$©¯ºY%aà‰ø ÿùˆÜd0-XÅdüC‚`•Œ•ô¢|™Sn~˜Œï’Ï|±•ŠXR2צå6Ì3 %/}N¶°Á¥Ö*Ò»Íî;Éo
-S.‘a«;ÂD¢= KµtF†šÆ¾R^?Þ]%"S“h?Ö9î§iä{Ëd‘¡¹ÈÌ>Xa5O<zœ7%WÓÇ‘áV¤#ç­êߊ¾nŠø@®ÀºÖm3ò£yŸ,€ ­(ÎD?2& VføÒ<$Íýȸ4q¾J_Þß å˜ŒvuÄ@÷„¤÷¦›ßJ|'(!‚Û7^×Iì`¦¹§w!yŒ=ùibÂÝq¾º5í`9×½•Ò– ?í<<|ñ"ÓGòS†åyüqrMhcu2Ç؈ócJòo.¹ñ9ùP©ª}ä^Áí9‡ù0EäÆœ¼§ <úæ 6¢ˆö¶g«"n%_ú|áR¹!K»Ìã›2pOÎIj&ÊÑ1=VÁëÁvI=wfÓPH=r‹‹hŒ±h†åo?«W×öÁ²b¡±Rüª;
-¶ ‡¦m…þOÉ«¤qˆ&3Ú;â
-KðÕ}ÆqtLa“‘u¡ÁØá.y’ì[¥Æ_󩘿C®$´²Y7øŒáG£ËÕKÉÚJz€Ÿ®e¹[‡¶Ø ·­iŒ­Ú,’Y©¬ôÀn~ïºbY 5—¢Áã0nXZ¬ä0Ô\öÒ|¨€ %Þ§Ãý_GÙ^/H-¸D;­AЉÌ#; ˆg'é@o 68r#¦é¾ÿ‰1Úõ"Cˆ%­~ØÂɱeì}+ئK â&
-¦®;hãã<Ÿ­O´µÂu†š¿±"\°yçCt‹lL -
-^‚³n r7H‡ãXâËeÜEÝ2! #ËëÏ£3tCFÙùcÐ¥¶Û €e8ŸÉ0xœ¤¬TLò¯‚¤Ùè‹b”³°­DÀ$ÿ¦ói.£ür©ã¼%ª‹è0ËêE$îLŒ”ûz·HIC\>:tÌ5¶£€aÀí°q*  B(¥½4hÊ œ"0ƒD±*ŸvlÁ°T
-(2Žê%„µšd¤¦•0¾| Ãߥ舯TÈþ©¾]4d»Kᬚ 5‡¢Ælã
-ÂðE®R«æ.a~&'ÄÑõKPzõ’l“Â[±¡Ñ“›“/PW¯E‡^pl,Ù)#w »½˜â¯›"® ‰Šš{ŸŠn“WƨÍmq UY‰­ ÅÎ0«=4γÓö¤§ßoˆ!f,â\ÏT¤  œ7­xq¼ôs’ì2'ýÎ9ù6ÌJ,¹[›†
-mJ³Yft5’«&â_¥?RušaöÉz½Ÿƒ÷-K`“õ¦’}ÒÖÜ}B­>xFöÄd!µH¨ýª„Oé™þ=Éâ—$ìL¬C@#Þµ98oDziâz(÷áËÉ/Á_Eè ®Ä
-lY“Ÿ×LŸñÒáãZË™dàs„úVôáf¬EãÖÈîeX >ã¹–• á„ÂÀB™…Æú-›©ä+&}O#”‡7I—dˆiçèa£`NËÛ¡ñHöµU¯àbZ°ú[‹dq1욎=MP2³`“ÝRÂßÃBjõÔ ùGRÒX!Xœqð©Y ”ÿ]®!D?>Ÿ‰'‰«XzÙé]·[S¤cµŸ¥Ø9 a×»q&.{ NÉ<;¡N@Øà[ÖÅåŠþkm’¸â\E/f/Mþ/è¿2åÏ8¸Û9ؼ
-*qêxL Of£<T·M„ ʾÕüÚ,}0®>ç§ôõ”WœÌ3Uc6¾GºéTA#j7¢̓
-æ„Ruqôæòº³Bä÷îÙÂÁoÆÑš‘(5•¼¿iKëÁósmÄ·KA|ûW vú¦d° ½‡ª“ ÕGsþ„
-|)Š=¤•
-‹K²Þý%†—16@ú×Kè{Åí,¸½Šˆ”¤MJ2ˆ³·¤V,åßÃâL<É`¬¾åÈŒÐQÃ.z¤é»´wƒùCgììÈL¼Ké…iÛ) ™×­Øn~ã2È/Û"Öen@‚¥¸bØuö¿®]®&êÐC¢Ã8ÚøÜ/3¦ÀÖè¬ZÛÕÓ ½$- 9ë/ѱÿ“†–œJ !´/¡
-SÈWÑh“Å §¢.ã#„&ÿ± f©Î2 Kà›åÉ¡-†)”F{#?\H¼`}Š:†ËÏòôþ‰eP>¨H³D1¦ŒŒM
-&8Þ,Øê`BªQûLˆƒqM×Ø!ä18ÝÏŒYOAŒÜœH,Ðôm€9 |Àt͘i5}³cïjÃŒ#Ð->ÜWƤ³³ô5¼º†ATt9Wëñ­„dÇŸGŸG\õUDž‚}É|ÀÃ8µ£`)é¦Vã’Á³q;e{ºC‰’èFûðŽºä]ãY¡ã ¡‹?7=ýÊ£šÙ©Qè{ȵÅ^Rò²Ž¡€ëHüûc (¬ma“6ÚÞ i•ÒÂþÈÿv¡pý-,§]±Û]˜—á·]X¤·ef×J>N€aÑë½Ö-3Ÿ›ÌE ›ù¾ƒäKÑ+Š ¾rîðGJ°rÀsÅŠó°~B¬}¸ƒ[ Šæ%„Aï®@ª]âYÚ{ï
-‘¶&ÒSõ És  ˆ‡/¶
-¤±"ƒ-âjF­Š,iŠmà’|<Õv_F¢ÁË·Ó[ñ&ÜsÐòNzßÒúðG:…2¦^Jžxé£èçZ„±eWX6|YÉÆK—"lmo¼D LJDÖÝ‹ÃÈHbÒü]7Kß%v8Õ‘z¯÷hÀã∑Nùž/àцa §ýZâ7¾ÒDW©<£=(˜ÀV<1:"IáÇN¶ ŽØJ´ò
-<H³=ÞàSË
-*Ç¢W<R‹×áÞª—tÅE4¼èrÞøy}À¸z…™ÂjG*Qé_QY ED
-ƒá ¿íELÒñáw8a¾E'†ì°‡Ì,¾÷·o0jFãˆQiÅk .~3{Á$Ô0yÆZïÝ<ÉP÷5(
-;a©‡h…<±‹°I¨ø@…³o¥à(ÏÀhït ¡„êKÎ>›7ÃÏ”³Ó_üû ;}_±AQg9Šê4Ýÿ†Eó].H‚XqŠ«’d 5üà¤&rÊ‚RÝ%
-˜ÈEöIf´á™ELÒù÷É'ÜÒ!Í”]›+O1q:ï5Ü“`
-T$Œu]÷E’ Â¾ÍyÁHB†p4%Ž™B  €~0y->Í ÉO·
-á.y^ qÙ&1e¥ÆFXÆ1~ZÒ!Û)}^¯•¿ñ#A1zHã«o;#H*êÊÓÍhƒšY*­+Lª‹]«fÌfŒ¦c˜Þj¤ü®êMóOðr9\`€1óq× ôeì<ôã
-LÀƒr•zIj8†·"z‚í4q¼ZP Ì%£ )r‘›²t—qí»¤ -[«¾
-Õà…Ï «}ôò®”ÂÙ[®ÎgˆKÉê¥ì¬8Ç&! #`Ö«
-0Î~®¾ãÎJsLPŽFΪ{ ’FβÕvÔZñeá•Eï.KH;È.A‰o„Ù@Pq|³ÇëÜ^ú~šb¢;ÝwïÌ ¿÷þsðíþùÉ°|‘7ÂPj©¥ù••»á*°ÄE C°ß® .ŠÚò6éŠuM¡wŸŠw‰ñqÈ|zŽ.ï† xŧ¼
-ŽÇ»áj54/èÇö‰É@™
-wA‡{ # %èãÒþNðéò¡ÄÒÃ’§<öñ+.úFoŸa4IǹãzMðýȘ×944SªݼIO
-T呸ãF0«¼Å\v¬MÀÐ(d­D袲4è&Aˆ! d§Ñ¤òúÇ]DL?u2ÅØ äÖéÍG8 0¢i¦ØV³ùT4A“ɨuÛ×JÒ·*žt…á4øÈ—¦ùÍ‘È…]ÅÓNWo”F…ŠC€%3­¸« yÍ ˆ)œÍ·zz‡'µûÅüزÚÞ‹ü,‰ðÓcˆ4aèú%¬QÑ3¶÷Ë7‘´wF¦JæsW$<Y†
-Zò扙½EÅžàfï¢>¬‡Œë~ŽŒ©o—VQBÔd¦Gf¿]2Ñ.}fÕ+
-NñÞ¥ìuP'ÒX«¾ó?” I
-¾Ðu¥soLûJ2аäÙJ”oX@kN9d 
- ôâ·’§ã=`31ijqqyQ‚PÜ__žk u&¥¼å—xI؉ÂÀ¬]ô0W £„ñ`ÇKY <ezl…C×ûVþÌÅRyUi¿8Ù šçI[uÊx]’aÖº¡N |¼@Z»ÍpA„
-ç÷£BÊ‚Œø‚Ú.Q¶Ã¡ñNG¨ê2‰<J´CCÓoÜØ4§5@Cß<¦íuì&È”Gƒ¿d\…°`Gå6±qäÄ˃Ïþˆ]_‹>_AQ nUp®=eŸ»‡W‡3T>àÐÚ6g!T é°¦=zœÅ¾|W]¸ÖàDJ{¼S¨ä6" Šßò.SöN
-ú)'žîΩ‹—séÀpšŽÃÄ<v5—9™çÄsÂlHPÖtîŽq[}xZ‚W ᔫ·8(!™ð·`|2LPD4eÊdÜRÙë ˆ ‰v Ï0ˆsBLXÇ ”ˆU·+ðâ ‚L‰Iå›L–†W¨ÿ®·HVïyŠ¡Âað؉½Êe&÷Œ‡q6ÒïëÀÖJ`EJyN“-å,¤$Ío'
-<mIm
-çC`äyתžk–)a>}M3*€{IGDQŒz}QRpcfè?\`êåøù£}z‘Þ©îyug§™jÒé3ä¼ EîÓÏôß`$ý!øC¡h¹ S­
-
- å)ÿÇx¹äÈ‘Ä0ôsŸ ŠïÚ³ô-fë¹ÿvSÊ»Re7`ÀÝÕ¬ø((’ª¼/´Ýr½ûÈ„I%¨ÚÝC*ç«Ê+P"Ä”öä%éÓrÛ^¥ÆL‰rÌÛF®Ä%†—W\DÑh!:’qæT{ ùÄÑïe ŒíE#ï•I¼_eøØîK UÈ›ëôæpt„x»g3m’¨"/³\`ÌP2‘Í4ŸæÊÑep"Òsì6»Ë;F[1È1戡†hŒÑеûËö#Õ¦½iÖÒDþ282Ïå@xiüä6.t¿Ò?³MÎ2AãÀ
-º;ÄNØ×â–ÛÞ­ÃÔC6æ÷½ßÊÀ'0û7—¢Û«H\w^ 2Qr­K+œ ~}§Øç‚šjÒmMñ0? éL I‹î77‚L£)šjÝØéQôÕ é)±Ñ£ºÈ :‡çËÁóWú‰^û¹Ìƒ1ŸŽ’ñîq¡Œ¿\­¤5j þ>º
-Ã'JpÜÌ>c~¼Áp~ŠÊÊ@ëŶÈØZ/sôóL¶è;_¾x Dƒ óÎØÕ!j9}K ÈRQäYqqlÙ…
-Eê°ÉùP˜j#ÖA·è†NkÖåëtºìnKÍŸêOO.ï,7;Œ
- Ç!ŠGï8´¹ÎGÙcQ²2bà;]rÔŠ !¼2ä¢-ÎIcù:³Cb’²\Ñ»ªâmÉh@ˆ–4Í,.9 =Ù2ªÚ$9ÑæïÌŠ
-á.Ñ‹/øiÎ)ÿºYñ
-ë9›âô¦!”’X+Ñ¢€L]Ñ+z› òAeUÄ
-õdT[Iûéƒ2¸-iG%"’ËÒ”#ËnëMnú“xúŒÒ ”/(áXñHÍ®®±Ð"*qÌH#Ù· bz„1Ii-H¬bšNѶCHW‹öÝȦC$[U‹—xÍ'FÏ0¸š…ú1Ωƒm]¡Ñ9­×ïÎ#Ôu¦#xÔÒ 8‡ŠÓH ñ´z–gF0jd€f±È£¦?èè¹jhp@º¬Øíõ²·y44G I]ÚÆN!œI,4& TSëèâ4 ¯XG݇SÕXÇÔZ”‡ ,ü<5P$²[AlfUzŒÛ]i²­gØê[
-Â}3¸b!¡â—
-H‰Œ—MŽ\9„OÐw¨ LBâ(®{–} ³rß;%=•ïe·aÃ.dEJ ]í«wk¯×®Ñb~ýÇÂ^>gŽ.cfÄFdS1~h|eA¦IË©ýëÇ€ú«i—!³/¿Úœ–"ü—_ Ñ[JHæ¹êc´¡aÒädxo®iš_þ±Â1•=º‡=€~~
-7Ɇ²(A´oŠW%·!-¯BµÌ!B&¬äÈTª@ËÛÖ$®m:xvÛ=uƒÔ± ‚JÒ4KŽµNž]Š¹9@?A\¦¼z0W|imA’ƤçÇAÐa5@JæpôŽ$È"±C¿üÊ1¢‹þ¤JÃ?¸E[Ÿ)›¤¡‹ÏËÓÉh¸›=2ç r˜ƒàg]öxH1txBE4?´‚t*Ïorœ2²&®*5O+ð}o¼’ˆO-KÌe”*å×Ó´›¯šç̧‡>A˜™fÆ?p…Zþ¯ÞdHÇì"AÿCQ¤P¾ýýâí“Ú”^ØX d2ËSæ"2½-ø(flˆÕȃíªçñõZuÈ3p#¨lÇ•Â
-YXì@KÅŒ7Ì“œIÜ•à2ƒWê¿òC>k4v ÅÜ¥àeÈLí!cÍáwЂ/Ë8øu ­¤WækÖTq/5XpÛ§ž8ù†iæmñ«µ` Ûr­€gǪ€@MÝ­“ãòч<Ø4*W³ylˆŒr¤ÝT›ôLFü©Ög'=0#¦,;—§ ™â­4Wj;éA/pKe'å›yNÛ—²²wÐÏßé°¿v#6fz™ÖÐfgàtv>ÆvŸ»áð¨ùß›®T¨6IJVC—›¡jOôâ}n£ø‰¨Ø†T顤ÒÈ}ÙdzX˜=ž#ÉppÔ¶ë"ÆÍÈöO6¤^E¿c©„ÑÌX_´rä¢ ì.ôŽÞcå4$ˆåÛÈýè¡juÛ4ÿô=&?Š¬€¸â´GmÃók7ôAÁ`;b¾]±àùFôK±`w|º‡RLh‹·gü8…à çE#Ú§C0•é-~]ÃL"/ƒBç×»€0~).ðr°ÿFÁÅÔ¯ÿVzü•œ;tèµÖ 4 ¤
-6.¶ÞAsˆA˜µž?¸)·Ìö8ž¤"½ pí@@z8|_¾þØ#&1åCÝ}«+ Ïu~¬*»#- <ïûgS1~8Ëjv¤jíPJAùo€uMzJ*¼õ²
-: ñ±>›ís¤Ü{eæµä0dá’ã7•|ƒ\rŠD²·¸}:§5™è<È~E“µ:¡•ûUKVÝã¬0–šXËyÔ¬8‹1';(b-¾|IO*&™"·¶]eK#3‚†È­íð¹Þp
-è?¦jêÒø˜l‡'ô] ßÀsà‘5¸ÔK‰câ2ð÷s°y½Ë|×]1±M4‚Òà¾,U¾ÑPö›’ïSúµ·.NÈ:Z;÷—ÃŒtÞdÛ†½ý>ãò¹·¢ÏŸÜÉ #ÐZ@‹­DEœ33shŒ¸øë¦+˜YnùkJÀikUŠ¼J¬I’pîÈòCÜN‚Pì±l]—ž#¿øɾE]phƒ§!’f–0—uNàâo^Bö¬|cárª²ÿ–oüš¡Ñ% LxÁá¼èö†pó¯Ç,Á_‚°*_·J²H¶&I¤URð¼±#þ«$R[#‰´”ö§2M`W¹5ÄÍ4ò˜µÎI´ª‚²X¼D|}Ic4ÿ”RC¾u•È_Eˆnʪb/[»Ž#'È©¤ýULÅÁ-Gw{ì<Of5ÞT‘Ž EϽװ~ê nº6¿0n8Q¡”±"—lScžŠ«3®àh¼Þ*i
-Ç^Ul,QN§å0%]m_%“=1s¸ŒU¢pV±%#z œ”•þ0’n*~‡œÅ¬­x 3­*ÃÌëPôkgQ4„³š¸ó¦D`,X
-"lY~‡+‹û›—ò¡èó¦oJÃF`o’o/"ݾïÓ°~PUe«V‰Ò"ôBKÚ*A/
-©uÄül²‚%Ý[ñ°6ý^õý†§”üDf«9ì$®Ø¸O»™æK‰)Â?-i¹ÜC¬èæLÏxýËN[›ÄfÓî#ÃìÛp/ÈŸƒ:•Òsí: RH$­ù˱¸G èéP÷,ú8ú*Q>áV<cæˆS t”yfÿ™\Š*»Žr'ØØ™ÌæLãm-õñTœNòïr>l"œì<Á‡(BÙj~Rd«8LLnö‘+™Lü/WNÅ7•Ÿæì¼5§‰t0fGEfkå›®'*$©Œ=+±q‘VgcÐù¢øBHÏõð<†6´`}¸JriL—wl†Á³î#ìîÝcrA5}aùèb ˆU :K8…ÿ–Wð ÁOáá`iõøT‚·ãoáx'¨CVÆžÅ`”S¸#VÀAEå®æŒ“
-ƒ]±•-A5"Î;éÄó34P8Ö¨\êÚ+³9'Y½d9Í :Eû«KÐ!
-ƒÙ QN;ŸÓ?*¸ÖèX¿ aÐØ™Z‚+ƒÖŠn…Ð:¢dûSaøÜJlf«yý–+a=ý´fÀ¶8
-÷%ð½m…MO7%±¶¹«Ø“:9RW–›I‘¦Cѧµ"¹SZ)¦ïÏSðB~ÞàaVªhÚO\>wEDHÚUrþ³wpò eô—[ZXä2|©ø&¯LÀ¨x õ0¹î4Í—ß9¤›T“øL=ŸÁP@æi6®ÞÙCÙ4}0³ ú5˜" ʽÀù†'#)è¹–½
-ÝEób0k`ur’óË7%/FuZñÇ¿zѯÍxâöê7g¤aÙñkH‘ñüŽ¨=f‰æK²G•·§¤|€ÅØ Î\\ª­Z(NÙ¥4 EŠØðêk4]b±uNp¨V©µÓ,pˆv#¢±Öçy"(¬¸â âz:¥`ÿi—XvtŽÛ2à\½§…[a™A/‹ÀJ‘׺Špñð£2&¤ÿy,BaH4’ŸÙ•þÓe]5ùk°óæWÎrþúÑV_ ‘¥(°jÝÇ67
-ã¡ù»_÷Mä&2}»ºâbÆú?mkÀXT\Jôl`J~D5¬ïÎD +-«3ê9hRÒ xäª) òôî%Z~"›õ='ÒšbHDe×"Š^æþy,R…˜«rÎ(ëcˆ`â9M¨[,ر5EwŠÞA,
-ôO§#‘ _MñЛÌYsbWW‘²‚(S—×9¨;wäŸfgr¡Ê“‘),VëI¶è| ÈJhh±„@îËŒ&iŽþ¨,ŽÜŸèä%ˆ?ýCÃè¡H9'Ѭ±%ߘ^áŽXâuNLQ%£îÈœ ]—]ñ¾vH!6_MÚ_úûnþþ#‘‘qDv»œûÝ_ŠÞBÂ* "ß1Âfðï‰eV`òäN¸Óa2á9óÿÅ¥+bå!U¦²|ÐkzÏ^û—1TÖ´×XXЦXVIË`äÂÞÀ—’ù)4±Vü Úù#FE¾»¿Û2_O˜n«‚ÄÂ`‚?Š›½*ÊäüúçT„ÜBC[€>¬íº|KJ|0¥þ8Ýø]×/ï¾zƒÈóa˜4Ý­2«i{4ná¶!oàƒ,bH=p[=7XþýYFNÅBù9 ˜‘á£ÍüS½š &Ø­î+ÝH–µ?Îè:ˆ‹ð€ÛÊÿ„ð7ÑJ¼nD1[?òÜ×±ˆ-T@­À”Á?fI–…€Zó6
-ŽU*¥Ï£+Û–pÂ@{>`_§J¨õËN- £ƒŠ›w¢K !åLPÌT.Écw<g,¨ˆ·b²n΂°FòNçÛ\ üöª#Þ{`³êX,?4j¢³´etT$±E$m…IÇ*âs ¶¢šÿRCbÚìÁAì Œ4ÄÊ8û3Ñh^WÒ? D"9èÆ@Äù¦ÁÙŒ›SD¨j¨æ§”ôŒ<Á]\3#à¶Ö´à(Ô$d EWÑôCÂÄ69)¢„0𫵬s€ýèQ:êþÁ^“µìqW¼¯Œ\t1Ìý¥¿ïÕÁ ð
-~LSzx+Q$F’¸ISW@¿“¡pŒ‰÷ßï4všû;R#`º•ÇSX‰Š]ž¹
-¬q!§í† )B­•§´MÎ…ø-ñyeµÖ9"
-5n2TÀÁ0/)8²Èλ S§¢72<3ÆŠ6š®æ ŠK‘ȳ&´/>|äÀ¤±Ûl²Û”žæpIÒ®“%,Éfc5þÏx™#Éu$Aô¸CËÊ2#wq ¡Î Æ(±FœûÏóŒø ï,¢ ÐЋWnáË•ÜtmÍnWµè"4EÎ5oÎf^tž™úÉ,ÖƒÁÔˆÓw&’.ãèQE)`à ðóóŒCðS˜ËÅew!¸bÐY5ÈÃëæc£)äú$M®uÍ7c7DÉÁ’LsRÔkìSSÄ-sœÛïæ01G†t®[c’Ždë'±cY=÷+frË´dÅVô£Ñð¾ýÌ|¿cP‘íf’F™¡Úç³x +¨
-®ä¿Ž¡_:ôÝ®
-¢|n¥Ý” |îêa‚äu×üeÐÁwj;ÛÙPùЯg‚À¨pQxàÇÞí!ú"`ñÙp|Ю%ÍÓïÏTv&GºzäRÞ DyægÿÇ«®h]¾äÝ*DlYâ$¸UÎQ´¶>í‚s‘tð «]ýc Ê2þñïoIž›ÉáΉ“ÈA¦/aé}™rÓcöá> bç´œwÃ¥…Ò8jëaepͼn“Ü ?NªS0z%B-zÝêzþþ<žLÿõ×·?þÇ¿þ‡k@ Ê(Ëå-ù—\ì¡©Ç®p×ìye<q½cËÔÂ7Yê=Ñ=FB1$ßø…j­¯]LAªœuV
-\[<aCRBÍr]Bi¤ZPÌ õ2¥ ª# k#òÐ"O§$YäT .M¯3=¥¢R‡VæÛ$>cغf­C/1@4#/ëÀߘÖ0°Å!°*®‚9/ñÖb/rŒæq;ߪ>”…LEªÃA™®Ç¬àò ©YóÂP)ò®¶ v^ }¯GoEæÕûëÚê”±]ìh‰uèKz¯¢¤¥ôëñû­°rŒŸlŽH¢?ÌSWbÝ;ÁI*“ùðÞI,A³uzˆ&ôÄMÙ" !jò¤R½¥*Sc
-¾(šMAø¡ëDð+ú¦ÉÙm²8@b+èiNø±7ëPxl?z§a˜W7Ù·€º$§8„RÑCõ+²+Á&8cr€¼y ;·êŽ1ÎJ@ ÃõBQOÂíÏÊi¼Ðˆ0,¡fþÜêWõd´+Š2_§fYãÉË›CT+“ï)qH
-Ê¢ký÷”ÍÔØŠ¥×>ø—ÙA2òX,Ì“S /¡÷ä½Êæbˆ-1†ŸÇ±–ÌX’!‡H±'¾Ûã‹QAæ*ÖQ²•€ßbîPtå0”©9##|D7÷Zò!ºÝvµEèð<‘Jú9v‰¦WörõHtŸžL2Žc'%Ãí‹É¸úq줙¦²(áÅN7Pa:z…ÑÉA–}„ñÔ4Ð7JŠh4km£Žë” íKUBjÞ  jxƒ¶
-ið9hÁ½‹a¶V` *áá1±Œo>Ü*êIGÛ–~‹'¤šÜ#IdbÞ—‹™«±NMKÙ°Ò˜íØ97HŒ8:B]°&Û(Öyq™yw›Vîv„ÜÜêÎœ~“ƒÒ OJût’H69—‘oc›X#K1I<zR®íømèxæ`åÙxYˆ“¶«öÛíÜ€ÿ雪NI­»e’K,­Dä¤`kŸŒõŒiÈðY÷¸öÉ†Ô rƒ ¶çßÓƒ E¤ÇgÞÚD¢™P÷Ý'Ç'v ñm #V%ÇüO>ñ°¢×JEk,wŽ'P Y_hô7Ûe="Ûh6'Çèù•wÒ“rtèÅU\…S:‹Ž){'ÊÙÏ™¥wj9”èÇÄ8à+!RÃ7ôë9‰…¡ÚQð« ×GèkÉbÖ‘‰õ¦z¯ Ó›³G²‚Êü2h(»0×[zÏ/ð% Ò «  I6ÅA÷¢ÜAϯTîÇ5Íp
-ïÓ¤åÊY¸“¤L'³¡"3~Ðb“1ŸêWÐÓA’™'¼Ù´!0
-[òL‘׸6‡0Ê€ Ócð.¤Ý«T<…ËÖKz¦qê+¦2ɇ¯ù³;ƒånX&K†@æ2Ûáf7+5k«h<ZbX p°~÷[­*K2šóÀ­¶aº”ÈïÇBüŠy~¥XŸ\¨-Q%"šœIÚdÄ»@©¼®÷õî GÐišLdw;ñÎt˜¦ýVÚwœó ôôªàÐ[ŒKîІ,
-H‡9‚R'ñ`}·ˆä¥ÇÖÎ>=¢d|cÒÖ¤…wý‘$êÌädW@ç¡Oâ ›ÖAQž€ÊU]¦
-‹ÙODûüJ'þ$£©xÅô­ÎáßX‹>'vŸYÒ=çÙYà¡ÛÒMþö7Îâ÷»ýœ&öÄð®Ìµ³³Ðz)aÚ ˜õì,ú„%\L]g'`7M2ê8°•ßœŽ_ø/urK{3Mz,‚õW´}7rù!Öã Ôåívd!&C[2ßÔú·ï´kÝœNÔ:ÅeHGgœš…‡ÙÏ ˆxQ¤Y¼šo˜™_™ó–öä ÌFÿ<Rm… º†¦Ë¼6‡W
-Ó$[‹IšŠ+{ò”^é(®ÏPÇÕtßYY›t¬2¿OišˆÆÂ×Ë}c^p[Wh¢½ŽkT1Á¯]:¹¶ Å?‚d±ö|“.“´× ¶Q||SI
-®$q
-Üë£Ð"Ę²Â'1ä EÕ¹&3ÇlŒâÒO¶™äg‘»8”6»)^A…ÆF¬KWÂÜGÖÓYš™¾ñã½~hðî2¨¾Ç'âÂq †wµæ™`hã8ƒõù!ª •CR¶¨ “ÒfŒM±ºK‡çb…Êî´ïh“0À/´Üy)BH‹·Øa^Ö3YMÓ-Uu˜QýR´œ4Ïâ¤A(}7N¸/Ò%Á’_à8Mú¤(?P™:ú%ALa…š‘ÓÃÌÝÝÎ÷˜*ED¸N g€ˆ»r»ÅÂï¨ý0AÄö½Væi•„yŠóTi÷bÀÍ!@â˳9w€ØRÌ^×õÈ –/Ü»îVV_èûŒõB¹½Xc³ $aþ8“ß@âSå$?¨šeOæ£ÉÅ'‚Ùçu ÎDϲ™ÔÁ£PÊcH裹ˆ•²\$î-WÊáÖªýjRµ1$ÄÂq)&º.I}ÛæV¶å3Þ:ÔÁظðz<Y@[ÙçvÙmÄZÂ&·¨ç„ÇM6"Fu¯ç (?è}’}~Ž _¨à Eo_WG69²:Þ!|œ?¬Á?×+WÞ Â£½²S“|Õ¤|ÿg¼L²k9 º•¿‚w€¤{ª¥èïê@I~E–¥íc)DA6Ñ vuÃ/Qš±HÜ‹GâCQ¿] e3„Ì
-o±Ž/,’*²
-ŽðK¬+gi`*ž¸yNP·ªXg~
-ƒŠ)B|2§Èó>ç<ÐñºˆñˆŠŠ#÷AÞIG1½tócÅWcªÆ IMRª§¾`íJiiÏNò
-*Nâå6'!Ëþ UŒh\^âú\ ¬J4ä§;˜‰@Ú1ÐéÕI:Í<YZŽQ@òøÛ± øšÈÛâ¶,I 8S:“1.eß™D©|õgB í€XÇ>¶áíD>=.O7£µ?u!"P÷/èK]WFÓPP´íI?À^Ó§…аÉÖó7'â·ï˜ÏßôJm «­<I'qqï´u á­£†&®¶ÞÏ»ƒ>\3•YëD±ZŽÑÊoAÞ¦¨VØ&Qžb|î€ß°¤Çã !°±nÛ·É’i”¨X3ÂR`hÙ¤.¿“ºLØXοȈ‰L\Ѩv¹KSËePJR–‚ÀðÇW{­éÃEž4»þb‹1“\`ì©>0pDÊr¤ûiðŠ4÷
-þ%î´&JQxÃäƱ‡ö
-¡³~ÇVÁ‹ÅnÐ0Ó{}êÿ÷ó?ú“_¹—fºûp:ÿ×Ãð\êEž…mç½3ɼJ9o'?¾Î¤²,pœ 6¯†Š¸ó£¦™äÁì”ëÚÐ9ÓK2¸,*Ý©Ú„}Wÿgì=/ÈЖ ỗÛöwÄ0¸—|ÉäZõNaL±:´E4t]…-FG“
-•&ݶ%ê”
-Uå¥[‹ˆ–¥’y…V¥)AK^5òœIÕY6ô¶M"äåw}è—reCf oB¡;ùlc;à-ôt%Í-ç2L)TϦÉX}I ²|úº“ÊòhnƒÎ=ñ±îÄøëV‘íyÁ¨"ïe8<Mš üs•ª~üô9ª;L4L;ïD—dj‰oÿð:®
-ù· ·æh-zi¨`NO•:Aïy˽÷¯0ï ùáUÒaÑ«ým“#»§6(!\ÇÝmò :l2æWü1×&aƒx,6¾› ˆ…+8ãÀò¹69tžÕÜtqø[ „/ža¼Â³ÀóS‰sð_.>½ŸCp‰d$¾’k“A ·°Ùv®›g“£,©«µZum265‚º·æÚdAn€²Ç‘lòòlò :l²®L¨äeÒ)×&Owlò½€§Kž]б" sÝ-Ý”0àcÉöà’çTèSæÆ­Ù*x@VþÁ$ƒH”œëô™À<¬I7\Û,»Yû‚‰¨sŽ‹ë‘•ò<òËùí‘£ä1Ed­›yñè¯ º»d‰w5]b\fðÝ%GŒ ±Ýíi’(Ái¹ÁÃ#«ÐÐCÐ /ÏÝžM?=2³ |IØËÍÁÌ1Æßááxcv-r 8Î(qf4ʃE1臚99 dir ¾Gž`gˆ&?xää°û‰9<²î‹KlØ|Ôé‘õîÐ
-†ƒ™,Yå p¨0f×#«t‘‰Áe×ÛžlìxdMLjqXÿÆ
-GÌ>HÊ\¬áD>SI­ôøà‘5ä\Ÿ/Iµ]¬MÁŽÃ󔾺ùX&Ç$ÿ¸•ßB «Ž#Uª™ÁÒât19û€ù —ÊÞ„ˆÎàOðvùAˆdÞÐF^S¾Fè]ˆÃ”„©QÜÑÐ
-<žƒÉls—ÌÞ”80Ð(݇›ãƒ*ÐEU6¬ÉUb 9o8³ä*ñ„ðùlÿð ÄÈSât(±®lБÅRu•øxº£ÄGO)ž} 5`ŠÊÜÓSBð{v V‹éAŠ™ Ãõù·ZÓEž¸Å\Š«Å@l:QDÎb¬i7ö²°¶ÉÕb­ŒfŸÓ©™«ÅÇVyZüã~~kq(ˆ({8 ,Z|‚îZ³†[AÌìRÚ›±Ùhä,]âuc.Î ÆG×Uc•ºPhv0WGϾŸjÌöÒÉŒa5÷òé.îž3"Ò;\é°Éߎ—Ññ¦U‹ÀµS`°)¬sY´w5žø#‘!â2ƒ§Ÿ SÌ]ç}™?ª7‚EOç³õm\UÍñAU>l»1‚æj±:@Ä D쾆ž„ìh±æÁtC(1˜S…`ð?­—êj±†SăfíA‹5äh/²X¯Ú¼k±6…¶ ½ïŠF7->–ÉÑâ·òK‹Q<¼§~ˆÉ×bt×bA`¡
-j0˜gÂþº ›CE4!cÙh£'Å‚èRÅ ª\])ÖÅ!Nª<2äI±JÍ':óTÚJ 7uú~HñœÂwsÖ³{
-¥g’+ƒ€ìùR_"2ú›Ìò“‡We¥‹h'GO‹Ã˲ÔÚY¦òÔb ¼^-øš‹S‹ï O‹Ì©ÅÜ“œ€äò Å¼[ƒNª õA‹gý8$j¯Øû®Æ³ ´» å(WEN>ÕxŽÅ¥¼)_ŸºŸSÈ™,CÌS5Ö|Æö/ãå®#ÙmEÑ/èèXAäá3Æa§” ŠÔ
-øïµ6yؘ¾—…)Ë64Ò®Kò<ö#Ìԫ·³Ï9×tÂÔPùIç²ðNHXëvRãû>ÝÕø׋9Õ¸ôòÈ|SIúÙV/‹%!¸cîoÔ‰HŠªã€ù8aDiÌqSãKZ-5ci•
-ä—A¦Æ˜‡ÕÊâu–EslJ[udRrG±mZ#ø&Y¨W1Ô£@Õü&寧…9dºÒË ª‘©¡ÂàÌýùeµWS*lZiÖ¬¤Õ»FÙUþjJc$‡$_W?`>N˜CãÚÀCuF½‹7_:×hÔèüGYÇ^Š©ãª!Øì˜^Ýû{-À+!Væ“ò[-.̵!WÐç+]óæ’ô`­•Xi‡*Íæ†YïÀħõ¾‚\y`eÛªRm1«Æ0Œ×A‡ã*¬8d½3 ô*èÔ¹Ûq¯N¹–à5Ðiš®m¹‚>_éÝjqÍzR¾’ä÷±S‡+æ·KŸ±ÃKtî£yÃœ*^ƃmBmó³Æ}GÎ) kBŽDˆW1§žÝ~(⯪³jX"î@æ©›»úHc1H`ÿ<Áa#QN+'פ(Åa­kÜ>&½ezO 3B
-™ÛöÜ× ?÷ÉϹ`™ALN±¼ß¯’ùc¡T‘îævzv:ávrQàµ}Î¥,lcGÌ0ïÀ¥¸@È»¶¼x<6éñ&ÅÆÍäõö“®ßadÈèBÇîÛ$gNŽ£§ ”H$¯Ø£waŠcA6<ÅØÞO{•0QÇ ¤3ä{›~̥˃1ÒŽù
-
-J%•š¬5·N vÙHu1RN.5Æs^H••¯xs?Œ'KMgºü9ž»úË!ïFC-u zy–¢âyi_2oÆ‹(!¿ÓwÞn‡ìFN§ –ëDð~SÏq.ãæ¥ZU™ôù@Ð;
-Ž«‹%ìùûž,µ’Ë‹=j&0Ë$ÔcÎÂGt¡ýáyŽ5@³±:õ 5ÚË})ÕÌs7Bl2$|mrñDØà;J\{¬ÃZ!a’ÇtAT„X¨ûåfä!:—=ÐñÇš=1ŸNI£UñÑ­6¡Œd˜«Í±)*NÌÂösS7¡±R«®ó$Ði(ð
-ùq*âäʈ/#¥X`sŽ‡ee\ †@Tºò r}ú¼Ï t)âç toÆíÊ÷–þr~äÃûï½ýö¿·à“§AŒ?O! N­O·Á…M§úô{½® uÑÖŠ"~‚8鵈cJoƒïL5ÆÆ°5’¹¸ U®¾…‰í^­Q2–]¥?§>°º<´J“ü6ˆ9†¾ç± °(̘g ]¯â‘H„Fªí£:Ï¢ ¨ƒ°¸ˆ"ö”îÕ&97>§B )±ç
-&ОC8\\«0)¡$C~Üw”97 ,$×€Ô$ÑÃÇÛ¬Ž
-¢XPæ#N"ª“àl¦vúI 25™QjÑ¿£±ì>Ìí£•éÔñœ?×â5ƒ<z‰'Єp¯Þ,yU\(–lFŒû´ëá!…0Þ±ºu:Š¡Û¤œ¢}„3`r[ÀÐæãqÐç+kú1C_…µð½èÔ;d÷À,†móÄyx¡ÁxNß<Àõ^-açd#OéÍ!‰µ0ý±:ÄdÒ°E0¶os¤µŠ]b¤º@‰õÀ­”îGñZúÇÊ‹bDúÀÒW Ä‚Ð >Vw>ˆ»/ öã°u”œwa§ÑãQ\6c^g (6þrÂPæG(«4!,z°¦ò¯È¥[C„ºGL@P!Ñ‚Ò/®+xõV!Q•§™+ùfÈ!àÁ`ÆNQ^Nooû¨( HÆ3æq}Ç$’ÉzNNÎlicTºŒ£?\a“ùé‚(ñI€Xù²B© …¥'ra¤þõ‹y5Âd>˜´Úy'ç úã΢ñŒã™®!õqÝæþÌ1qsHM¬ï’“1yM.òü&@YòÜñý1kN!Ïáø6Åö.SOBg}ásŒ}™ª¸XC+C¨CµZèÐç|IxÅøÆ´^ŽïEõ)qõw [&›}uá{‰/߆&U‹Ùvž|¦2õ[Ñ/ÈÀ°Š„¸ä‹§”%Sýº ‡¥
-É/Nl„˜w–êÞ…"·3f"Y$ª5lâï´WÉb’µ-3&™¡ g*‡\Ù UØOº€ð?2¶¦i}G’ÈÁä'[~ÁÂý^?ÞMmÈaP¸CZ°^¤‹¹Œ]?… jUóò”Š‰Cq±B‰åýÀ6• =S€gn¼-Ô±§œfdÛò§¯ÈÜÊ*âÿܘ˜²CæêÒqFøVö©¬ÛvÉÊ¢ŠÍô©J Ò∦aDјf.ƺåŠþtµ<kãèŽ-HRèˆò ¹SÍZÚ1D?’ôzµÉH³¡ÊOáèZ¤{_}hì¸+8ýÝñÍ(üXµÃ.ºÐR=`>#WÏÌ[Þƒ%ãÄîàmm˜åLCê«0øJÓ‚ÎÞ$¸ãùè•-Ü´rû‰°äkðú¥ú»1ÌÂcÁ‰¯ŠŸ˜‡¼|±Š¥ñcømè¥EÆ8­µ¼@|<õòA}Ëxòƒ£ ‰œ‚G¯å 䛫SÒ‹ïÿQO±re÷`ËMÑSzþ/ãe’¤G‘DáèµÆŒßb–˜XÖ¶O€±¢´ìû÷÷Â=
-”Ù2@‚W‘>¼Y¨ÔÍâ\Uiß,S<€DA’‹&Ñ!Ô —ÈB¦dI3ª‚T=Ü{˜‚‹€ÐvëE:+z0Do‘ï Oâݼ«=³S¹&Ú èXçÏaxß-zÊ&e“ßä÷\Ã0;®G±®cöTx}xq;@fñtÒ‚ÀUøñ>µú ‚Oi²’MÓ» T®ð~Æy*a0¨£íÄéB¾è=Eöi•pQ!ökv;‡ f\»šï”Ìôꎚhí…P?¿tÅÀ´²ÜÊ8…ƒil•9®ãi(þÿpiƒÍaÇ6f¾6%¾Ä£b“£X7n:DùRÒ›¥‚ðÐWð·3&6šçë‚)™‘éÝ Åbr÷û'Ä‚ðèä_ÂW7ÉR >Î((„ {tdø{‰BQ5 ”žùuîçT¹RP%‰D]´¤°°!1æ24æÉ£$Ñö¯¸R|sfš0ÉëW(Ô 6Õ¹LêÆÏmCt_ã+¢)+à°†Œõغbà\†'/÷c7
-p¬ÍW]ìM†ª8—d/Z½,î†
-&ƒÄôä¾k‡¤5r\o~
-ØŸ‡ÛÃ.—O‚ÌÓ|Tš;LXú^™^ðøµ¸=¶V¯"?Ès=ÓÅó~ÆÔ•7de¢ÉÖÃeeYhÝ
-¯B`îaDô¥¹=fÞâ ©L§@(Ʀ·zO{‚å+ Œ9Ë9Þè Cߣ֎+U_òÆhr8ky@ø—xÝÅêîèp?f­œ¨£y ‚æIâÉÚ ŒÓ@ðe3B)s˜–èã
-‘Û)ߺ2&Z×ò!½£W8¨|°Ûep¸5öÓ"ùì£äÒ YÛÁÆdÜ”}iÀ²2N¼Þ0cnp’ƒÀÒ¦Û<ªÍ—çîႼE—qy€à5™@†¶LሩEɘwªEŒûpJÏËT!ã¤LOÐIJQ»}ŒÝm|ƒpà¬qP$üt‹Õ XzÈxh¶vpߟ@pû>ÐE…>¾"UïrWpÔkÄ€óº6ÑŒˆ¢élé#ˆžáFÅÑs4^#Ð<sû"ä²ëïÇO} „u°¥ºM{ÿ£ìCE–aÍ7IPÌQ#ˆao¬@H}ÈA»$’ºøÒƒ! "Me’=è^,;o¶cèbE9æû膩 Ί(„›ød< ú ÊüÏÛ9~@+ÙÒ´!¡óS§AhA¬,XHc_˜a†bykÛ$F¢brSîÛ*Hà÷™³±I,Ê6ùÈìC[½0*iúÓû?Õ¿³o`q‰xCÏ“µX/OÔ˜Šâ`Àó9 ê#톞ô[¯”fÖÒ!tnH¾ûŽc+–´!ÚÃo˜Ó²%™À>e<Îò tÚ‰Û羺léyâ/ ßxò&¿I–wîø)výx
-´ .ÃøŠ¡ã‰Í„àÖ§Êd Ñ*¬¨b‰‚mBZLètuÆ´d/2\-¤-ç«O•A£¨]©a'¥Á»*Á­ù9 Ø,,q.y©J@¬B` ’ñ 6ÑOEO¾Î3ö§XcNÖÿqcäƒ8¸Š„Ùõç\|†¥`né{›üK¡¢z{ߟº.J·a6ä F¨G±R$U3Ñäö º€Ä=8VjOôÏâM#Ô)N]’v²
-·Ï¢Í"ÂØt\z鲧½ûËËÊ‹C®ÕŽAE1h±ïòñu|`©²Ê. H$¢YdIL5ž½‹#°h©yn¡Àܯ1>k$@°ƒZD2¤»NMWÅ´ö
-Æfk?è΋€@•²Èwü’©ÌI]W{wáAP"tП é%Okq ­ïß Èd'ÆšZ1NÍîsM…9ê)“×Ç.WF…‰4PhRÔhÌÀíé7È÷Co îƒÚ½–ñ‡+Ê £ìÊ‘1ÁRíÛËËuèZÃ#èÚ‹ëï ý÷éÑL†·ßþüöËù·ýÒØM¢u©áª|À½ñJ¹_ˆ§kìxóKÊÃtC×,¨d$º ÿT.ý.œ KDÁ=Òk©ÜFAÂ_#‚Q}¯e™‹6B1S^ƒrî“X¹È^±`ó Äš œ³œr Gdš ômƒh‡Gxüܘ/‰~ÐóÚãâ‹Šc$¡äEBÇ×)ŒU™´º4ðX&‚FG>l&. ¯´n…Ñ·ßu{xÛ á-¶ÌËcʶˆ™_]Ú°ˆRÓxÀ¼Ÿ1J™ÄÅî%L J–¹/{¨R¢R).H–D*a¦j¦‰Wá, é²ö¯Ü ùç@M;Ñõ«aØ‚*KÁ™¢¯ÓÎa¢b."ã…Sb ?UÞVu–?ä·p‚üa%d’Œçm
-@t´º^ÜAù%ƒWR‚äðÖÎIƒß­ó”¸­à†’ ‚eT0É!ø,[Ígç~9Ö„úPèÜ D•×ÎR>oë”nTµ5°#ˆA5¤=Ï…˜²ùå
-šœ÷ÄÃÜÒ|æ·ûî zÀ<‘ }s$;ðØ9,6&‘ÅÉN”7+‘ÀúRµ[M›núiøö\ìýH†ЇƒÐ:ÙÉfëNdÛ)Pæ¯heF”€ÊÌeŸA®ËLsŽ5ÊØèà´Z[ˆ$”±×[3)6§H‰»@ Åw¹×*Gܱ+¾aÊJ°jÆâ9jÎèüñ2G®+G¢è
-¸ÚeüÀ<˜,Sn¯ £=Òìý×¹È%¾‡/JªT—@w˜­ »éxO>+»ñì;£²Ï‹?‡AXæºå kÏž’_±‘=b'»ò¸úÙŠ݃›$!ÛtlfI‰ÓWkr¢SÅÓe§ƒÒ–z2â{ÂZfYþÚ ÑJ¬+‰elN!.ñr'À`Ñ<ú”>Îd'i5©ÇÉ &ã"÷v¡5W’ã}æ·ïxòí§ââô +43PmȪϺæÇT¡k/¨dòj›dÈýHt²T‰kãR“w£¡)4 Ó1¢½?)-ÜH~Òà. re–Ùîõ||—Ï3A«Ð.µpAxì
-baß÷ d…Uõªû>÷ïÖx–Ö·‚vâ*—,D¬É¼ÿD­XƒÈÀUœÕÛËs±ï/‡ƒ²–¤CyP£ Òí¶IN«Éã4âñÕˆ¿:tÎ…ôF9¬hAáãçm´!œ\ÍÐJˆgˆûM8WN‡ORÚ­¤µ|û8$BÁ»&cÍ×¹¢rÓ<4—šŽè4y©†øþ<ê·Cü㧅ÀDŸÐ­ÓVÒ–cÄ´î0o ®ŽyåãEÙg!ðêðlØÎR]äN ÃÄ?“”
-Ãà5š{–.~ W–åÖç<  Z˜!²Ù“ŽÞ¦ãþüh³V†VÍÜü”¹Åz;®Ãœ #@˺ïaàqÇ{«teZ¸À«ÄŃü‡ sà)X
--ŸÞÊ3–r o‘5>Ø9_B¨ŸSÛ¬yµ…‘o¶‰Æıžšqxß/M=}‡²#ÜÄÂôĤ2bh<ºŽAÊÏL*“ZUÄž|Tï&•qÇbdBRÂ0tãõ¼6’UÎU´û¨ßïÖ
-zÔö¡ÙF< *å?Ô« +çf¬Ä„hHúê Ø–s•¿| ƒ”*`É4°@¨ˆ¬WkçíéSBÅ”«$'ÈzZà:RÏĦ'ÛXxX?³îÑw¹ÐO]&j¡ ‰ž##Æ+ N‡40á|åíå: ´.ãզ… ‚^£f—›CÅVÃHF¹ÁÁµu¯l(a$î,ˆöòÒ±†ÄØkâÿÓ3TG«az †‰Gå:äwêd(sZÎ>ñt¥Òa'Ýĉ~bÈ0I)÷‰ÈÓ¡ øòþì;DØ9ʃ)/À©nH¹Áª¨°Q²NùÀ¿½œ@§Ft8*ˆãqŸº¬ÅûŸìŽ¯XY^+®!Z›4-'gmÅ ¢
-ß_µº`ÐJD£`¯§«D©¢¯±òÒýIÑžT˜<to4²jKƒ½4ž„üwy2ûj<Ùulº3a&|*³0€ãЧÄúÒïów.Ss¿ÍmúN¯ºMñ½:‡]¸Öø»z³Õ£ù0—]?ìúǾQI¢POéûºíúé¸k|w'±Æ_ÿÁ"ÿý¿—¿þÿ1ò¡QÃ@ø‰ˆ”ó§„L°%ëGÄí¶€ëE:e¶À„M£×‚0>üÁ†iÄú,Hoôyâ;«H?¶‡L3Œ
-3Û
-T%ê%òe ¾
-Οª)1òÛ­Ø}(Ô̸ÈÚ ìfÖvÐ?ïíÆúùV»O@•2_ífÉ„a;#5Åq £7’*ð‡¡ÚÎ0&$‚¾ß3mè M¾át‰“–Rõ8‚©`Gÿ\_¹ª&Çì L&.t°{;sÉ3C˜?Æ$+´€—%ºB¹ª·;Ëاˆ}û öËIͳτªDž׃n¤•¸7^Ä ó¹ßbú×t^QäÉ(¯Y - ^bdBbäN†)ò,œ…Æ+hAØ1¹Onâ4I`Ò,7¦p¤áù`pp¾ŸcYpÚX÷(K£H$¶õ
-c³“ØuA)lUÞßñZ[Ó‹C¤ªX&„t“6³&ÒãV6Ê7oZÔ6¤Në]¬=W@Dûôî5¬l#ó]g:€ža#Ø
-#TªÁžCWŠ Õ «9”™f¤"1b2»ÏaF D“bÇ-XYn0ŠC_‚ZDåÁ`ÊêTµ’-=ƒˆã2·KÓ<ÇÔI#9‰Q“—YS0ø: y6¿/ b°A”W‚xWé® QE0Ùn›C |Ó¹U2L—Qmt'NŽ9»P¤Ï.¼\ƒ¦uu64…ˆ$Uƒ¤ Ø!v™Ÿsˆç®”Ió£ø1Ogðì;E»Lƒã–}:C@´%?èñB³4”…¯'Ђ$qµØÙD”ÛteÏI”«ÐÐB3×¥ QÅ÷²Qh”`T¢_ë„ÞO£Â—Q$ªí3Œî-™ã¼ÇHaιjT¨ÛG]@T…r‹‚Š}§çÂúQôâ³¼ª0e”Jµw‡JW òT|%æš–à­SÚõ“…JÛ¿ùÀ¤Âkãxæb*eƒtŠ_²ÜcwS†ŽûÛ¾lÛ7ÑT®ý„2. O@\PúSᶶ)ã¢ç],K›Ã*U3¯Ì
-[¶¿™°…Ç©iP[<€~<iqàL:y™
-¿C„€ÖÀ¹É¾‚Ȫ/,”—FªÅ!üÖïû–ÿbzÂ#Ó„&Ç’NâÃ.Å,J¯ ò|2‚àMø'Æ}ŸkRbD&ñÒ«B¤ºC¢Ñ› Bû¨"˜g´÷x~*öðçä~„‚rÒÃêßIÐ,RJæro ‘Ðd¦bö»éŠumÙô%£¼AŒ³ì'¶†¦; o•ú„Üâž ˆƒ€C2Hç£ÈÊ!ÿ2^.IRÄ0½ÑDɶüY³ål‡ûoyY’;˜n7L°@í²¥T~@h/µå{ô†A'a±z&lÉ›¦~]&3â «áÎÔ ž9µ÷%#ÿŽÂ_6ùõ“žñFòÏm H¶Ð å%’7¹Û¯H‹Ú˜qò~Áç•\æ
-´¾‘ ‡0„µÂ£„Ô8þ_Ïìá;׬CÑ]‰ÓbïÑ0q)ü¿G‰Kø˹K¾ˆÊ¯øÚäS.¤¥ßÀÈMˆÊªç°` ]Éã ]^—w%Ä,Y;üOPý±SÎÌ‹¼KË+ßþºövÂÎ7àõp‘jµÞ¥øÕ^™áwÖ RŽ
-t(ø€>Ïž':œnq<1/m¦â”†«·D< +Ô:“‚iê"qT] ²š@Š•Ý^´ –Hß·ñöKVï¡ÏŽö¹AOÙgÌÎ죜
-¢ŠAARöÁª]&£uyªo„$XÀmfü4$­‹",ödI,Î ®Â(˜Ñy‘%  óeN½lê© QŒ£›ù©ñUE´±w‹RÞ
-H‰Œ—A’d9
-DOPwÈ Ì7!„€u÷rnÑf³ª¼ÿv_ú5SŠî,³XT¤‡$Àq¹Üeta-ƇÌÔ+͆YF“øø—Š\)£ #F“‚Œ«Œœê1FAú%é¢nãã¯7Ĭ¥fÌé¾ ÃµK}Ìæ:Å›õÞ­‰Ú‚„kæO9Bô­Oç9âã'Œ]ü}ôÙ£Íá?7HºEtÉÍK|H37‰û.Ùz‚é b"!Ÿ ß‚–4©¾ lc6ŸÞüyÏ (ºGºç¹ž£—…O5RÑÆ+æß?þóC>þ£ÖÓƒj¼vÞØxUØÏ3&C¥eŸiUÒ¤š“{Y)"•TB² ÓI^Ʊ}.ˆIªúlM¦ÜEyµÎ»{E¹Ïñnj£µ ÿ¸ä—×4²Û‚À’ŸtÏpmjØã
-âWs…/Ö¼mˆÝ—72aw¹^1z ‹#ú]¯×»úE‡w8|¬ç¸‘ú (µÉl‘ÇP•™¢6€v×j™ÞóÝ)M¡¶¦µnÏS"Rô<Ö’‚:u×ßµ|á„^ü•/øů”jsu'ƒã„è
-
-7q^>`¿Æ‹m5 §.HY%ê+²´I1ñâP U¬С ¯ÓéôÖúw1¿÷ÄÏoôÍê.ÇLœKæXÕàÒÂ"ÚÊ+|¾iÍ9Š(dáã†d¯!WÞ+¤$k*=ÖoHÐ\q»¶ $¸6<˜¬•s¸±¤Ä¸gzËZÐû[F}£†ÖU½T&á˜%mßd¸Å¬šb_Ts‘ÉÇØoNÁ”ÏbÂóS’Ðz*ÜVŸŸBJˆ€˜JÉQœS„hÊ%„žóûŠø­LÏE_0·èà­3ïæ<=¥B*ydzç1$aRÓQ¾?~U)áCTŒ²}4ºÊVÉéÖv• øBGë¦h/8Þ{–:”é+d_õ{µçüΙãk¾pïÕÃ_³s脯9þ§Žúc5^Ö’Šâ1C^ÛüóyOh9Þhû+æuÑx½ëU.þé=·\Ü ¦3·'÷çã°‹~¾e ›·ãóú¾ÿ¹WÚ²TGÊ™›.ÈX^Ö1TvAèV”z²‘ÍÝÈXsT®×ýºÏÁÒ¨•»_Ç`F¹¶¦Vßž¶ÀïYî± XwOËo ÷MìÌÞÆUqÂ܈éÉŽ´GoQF‹ŸÙ‚)©ÑÿÄT«F¾½H¼b˜¡„%,L¡U°—»˜I4Š—ëÀQ­»pä4;ùzœl8™KÅÛYù›4NrÛªÔë1=0
-"¿Cᇩz‹IPð£öÔr˜ÏU_HQî|ÈãljYzÕZÈêÖ¨!_œå_ß¡q1¾-Æ—…Áá…>÷y”Ä¡³7‘‡[ÂùDF„T®“5ØÙÆ‚à<³¶J'ÔZ_§x_ÛÖ¼AÀ±¡åî’u‹¿ÖŽ$x=ºOåY(ÿôÆÅ7hc…mùæH8ˆ&‚i0÷c J­
-hzß„§¡µÌœmï¤ðÁÖúÍ&ü½Üà|冱Éa41`tè·1¿kØÏ#Æáëa ú¶Zt–¤Ò|Ý[d–t0ÎD¤”²†iõ#¸ú=^ S86ÃæÍÇ-åU6I=æŒZI ‡š‹ïeKÐÔ
-“­ ÒðØRÕû äA‚Q)êœÏïP±¬ÌË‚ôêŠ,i R.=j2“÷ƒ±*eêQŽhïœ0†F”l#¹›ÆÌlI
-sAÔG©± ±Æ½Q³ËvÑë¢>QlÔnoÕbI†CldæÔœ^W5,ƒž4nnA¥é»à,Ñ,„.l(7‚$dEYLr©©:!áiÎ'ɳ¤¹ŒÍ6Þ{”= ï¶"]ZNdŽ¡¿‰›e?…7JX6ññô6…!HãxÊ‹°ódFy.öõéÌZ2P‰–û)ì¹ØWœþ¯Ãa•Xç´ÜçhͲaT÷8­h¦ÀäÌ8Bh:c“…X¾—Ô†6`|˜Ò&ãhÆ?ú°Í½±CBDÚÅÛ~M5-‘ÃáíQjý27Aíé@7Ý*q€ìB¢>tB#ˆ7çÀrôt*®!÷9lR$AÖ±õO&ŒÛ‹ô ¥ŒqßuËmz8I×’J*˜vŒÛ^"ùq˜åƒ($övLª9jnaqé忾1£þÏ¿µÿ2^&9rI=ïPkðyX
-ÜrÛG蕒˾¿ïf^ìŠðAC?}07ûƒz…y˜S½¿6„|D_ø.ûÓ@CJ͔ך ™‰>`Q1¿Z‡¡™ÜŒpÙúÀ]i‡Ð}Aªi]'¯ˆ…¡p±ÚtÖõð ;AÆõuÐèÊd%fË !®ºãLL:TÆPÃ9}+:§ÓÝC§²>¼¨d—ŒHâhçvu$LÜ®û@ou)Ä€¹K?€¤¸=‰‡AšÆ¶Ë Åjˆ@‰sÌ ŸÑ¢uYâ"Š¥ÎÛJSw:1f”­Ã°Yw?)xö†fZz‚ E0¥ü쎪PG—ILÅÖÊùº5NÝó öý—³Šð
-0äl’¤½\Ì*èmõâ2¡XÆ â´ýÊ$È(B>Nò "ç¬1¶`îý¢SéQÑ5ÏíÈ:FÕs™î37Œ?€HJ5~D†§'»8òM>Á 
-#ÒÚ;GÑÉБ ?÷ȆÜÔŠC-{/4G
-üƒZkð-â…[<¯£÷E¾©ô}> }¤vÃÅ~¾“&Ÿ •ë¹2È
-Þ Jâ…×·r2Þ’ð9ÕaŠ£fR"ùîwÊð›˜rÎè}]ì²K£Gˆ2­:çÈùQQž»×c/uuºmÒÚyJ/ŸÖ©#£tê¹mº‰¥úõV²AŠæ›iÎÁM7
-7Dåd‡Ï­xȨac·£FnRÆðu2AºI!í(ßRˆÂѧˆŒ+G‘Æ½Õ Ä®D/Î7}²Iîþ¹Ù‹ü^7ß0Ú„U¦fú"•çňeã¯ú‘ÝPGnáïYœÈ¡Üt¿ƒR`㦾Q‰'$̶á Õ1¾,4 ïÌ5º©å= <¾~6Ʀ-¥Rª:×›4Bd•)ÅCh_€ (Ùd›P•RšGYj4Ù^è{Ø—{3å%ÈVa€¢-½^ESôWrñÄÿ²¹ºösb®‚
-ÿ
-#Þ&'Ön ™Œˆþ0æÕ>(ÁM-(cõhAè/ Úwƒ$>]Å9Õ¦MMön{‘ƒKs!ô=D«äŠv•/óînEJ´`ê2x€R>ÊCŠPwoKОAH;RÏ®±.~c9ãL9Ä«F]›ÖÎÞ?7É;°;ncÉ€dÐÄÜgçœ0
-.ÔˇïdœcL6‡…Êp‹Á>§Ð½Â5E
-K‡óþAÜ\’€<òÓU¡"9$øÁ£6`eix”¶µæW‡}¸¿–.þakɸ#7õ€ÈŠ;ƒÏýÙBA$­¾Y
-<IŸ¯ñÈ{ßüÈÉ œsæ }d 3yôºòý6ƒ¾“Âñp]xÕx­¯°ìÙ†c¯ÞU­a(6^5&2…B¼¬gcµÅ5dyÂßÿœA?zÿ}©AíAµW‚=,r.ù¢8.<Õ^œsõ§#;²äÔÄô+ëè+ù^d‚é”XtB–Å)•Ý¸èK4eªAfÎú;«ç‘)ok¹¨šLð´¦ïçlÓµßf›ÒÓ£¶iß‹³íÌ^âÃîýhÕ×' j.)áÅi)„Xº=‹=F^a(ŒÃß#è`ø`N¨ »ƒÅûTLu1à d7Ðö¹@ŒCD¸p¢¨W³y=€*û¤&ó`ínÄwALÃ`>Qøn"Ei“y½äM„ö ¡™×4ØåÁ^± š£&æ&¿¿Ä‡ø¬Ä¸9ËøsíÊ*O0{Ž.ˆw–i@äðoùßÎÁµÈŸ ¾ï¤D—'7Þ •LŸ,
-ú–ÉŸY¬{ø:`Tňäšú)æ´ÛÇ>Ýõ<ï7-}œœßBåŒb0þ‡ùÅ!ÏnKÑ ËÀüIÀÌÌçPódc–V8”.âô&¹¯mÔæצü;³ÊéÖ×
-æ™üj2ÉïTye.„€Ù§ª®LBÁäfDiƒ.Y4Ó züNNž^+Âɼë?üé„9UØͯ/Ý@7õ²Ë ØŠKÍ,eâýI«Ô}ú»;G3èØ^ƒP6ÞeÄòU?z¨X¿òCy)²?ÉŽag©&Ÿ
-çh¦^ÆB§YúZ¢™f‹k3—ïÙÏÁ–O 7‡´ËËÞo#sO#+o~Ô|qÈè™Zõy.΄Pê
-»VbÌ&9b¶°¢Ù©¯ ë bfdmLÆÚÁð¶T7Ð÷TxÌ$ÎZ¬„ðpr¡_YUKÄËy¬ò âUNòšÊöxŽ(Û™/Ã;CÑÉ7/tºµÒW y˜?B¿Fg›È óû«
-åJ9ˆ|v ,?›U'´Ž‘Ðf¬Œ:Â%lµ¼?uå,òžL[, S•*Y|«/®–[U6¬Ù_EÿaоÁ\v(²HïʇóÓ£¯0†?±nÌWúÈâßáÇ-ÉM¨Lm!'%:ÓÑ* ‚ûjÄ#:Ÿ0í4 v_ÔºH'ˆ\ %ÈsÚ´‹³À¨ðI8$…¢lˆ¿™T5'§Q+Õ¤`íZ‡H‡V”ÅOÁRó3ÍI>ë™Ü%:éž[ÈYܯÀ<@ŠL<›b¯×§6%$+VÂᮓfI†)šœAf¶{­þjÒÝOµw‡hX1…„š®êA—#X0w®ŒÊH¼z’x~g‹$ûN¢æ†ŠXQXò|M0-ÒÙÇÆZ.ZKƒ@ÞID‡¤U¡~xæMNjܘ„ÏŸÎ(âuNd§Æ4^ÅN¬Òî¶ÑmlÈÙÖ/0‰IZÖdíÆ%2
-uh
-KÛ<dâ{'§dç@Q¨$sÒRñ_mRÓhöë
-jÒ3¶*ØVõW¡àt¢ôK¬ŒD ÍÝÉÛ%ø 7õ_?Yhf$¿³úÙõ×¨pëÜ®1F‰ø:þ)]šG;å`ËMM(ú_ÏÙ\™LNÅ£³4óòÃÝ-ÿúë_}0½d þp¯ƒ8B¤]*Ìn mOMIÖ­Ù´±«¸nˆÍoŪÃÂ0®u>¿ø<E ÙÈ ²
-_|™‡@53=ÀÃnòs
-s íÂj8Ž‰jÇpþB!B2‡6b@D|Ÿì„;8¤
-;¹kXÕm1`d¤÷gZø0Ã÷Sx¢I“[ê#–³µPay+]w÷d"ñ¡qÉ»®:y™Ø?Ô1I¶ÊnÂÀRš KPë-”œJêí•Si
-Dò¬rkɃgá˜â—ÊíÓ S*$r’qªˆ´òsˤÜÏRŽMPOMš ~tÕÉåMqIÇËp‚dÂ?ã…̶õ$òeŒ”Wôœ'-üê_Ú×!=²q=;OÇùcãz!OÔhx7`?nü´–f–ßPDè—÷ýšB
-tüõB ööJ­RFNÍE¿ÿš4PíõŸ7܈q#*i´Éöð¹oÑ`{õÌà4š†¬ýÞ¤¢WØ Q6®7e“¤TSôL„Â3]ôFÑà€h‰H"ÍbR7+!]{lSrW’p¹aˆï\Ÿ¦¢›ëvÛ¡ò2êcfLct{õ#äýT¿GPøÆhð‘œæ?&¶Qª:”µã•ï‡—¿¿@üvÂÜûp»ñ½™¿eŽ§È?ÿ~ùãß½h¤WÿG´³dga'åº&ÂYÌpQ¤qÚÝ@˜Ã˜J9¨dÑ%a×4v³¦´+ˆÆfNó62ü
-'"ša©› wºa,Füe“áþ1JÀ.Œho_¹’îù™VIk””ÀJ©ÿt‡4åÑB oë
-¸w“´¢SÈåÄ‚|Ý<Sz(ÂöÚCøHyOÆU üçÌ®&06t¦ÌŠ· Ò^2º¿ÿ‡R´~Öúìœ]ˆ 5ýnSp q ”“ž?’–˜o2"ݪE*uQž=Iñ?ýCâØ >¨ì a(×drÑ"ùi»¦
-úo›¬¾åFÍ—Ô=¦•­ây½i}K=ú £:®–\ýÄmXS¶Ž£‹uÆÖm`¾qQ.Ƀ{Ôf ™Wwˆ¾×¥¾®w«¼¬0³×ö†Šu•5c (v"CÍæD{Bìfè2q¢u6^»#®ÉS1k•Á<9åAݹ
-t²¢ZÈòdš ê׸
->‚óG¶‹Ÿ)1(|êqL8ˆþóèY;ªê€bþÁÌq¢%ÆŽ’?qµñ…ˆz¨-Öq¹rŽm4¹#Èq}]–ÕêfÞŠ £}p‘È?.;BfGBÉ™½$Z©$Y HÏOÎ1 ÜÔBWÖ¢cPwQ´l1çpˆ‘¾ QEïâS?}@î S¸þ‚õ96ŠÂÿ`
-Du"-ªô8Bp,"Êh׸>õk¯ú²÷Ú¤1?è
-fTµ$Xä4H[1C?‡tlH{N‰p·|u†ŒsÍ?u€†e>?ÑÐhCh& ŸÚÕâ6ƒF%)Gm©ØéAçÒêáá:t¢LòY烈=ŒÅ·ÏÌNŒXÛÊP«|t“h¯ob#h1bÍÀ8ÉζSeJòÉê¹dA•4w‚°_õmœ˜P@2[
-¢@úôvgPt:a’Œ•Ï"ÀËON;ýðøÈ%i‡»žv’"Åü8ü‰O „p-SyvŽddHÂ]Yî·Ø(·'~¥¾ÎooŒåà .Èce€L…€<áá¹¾ÈO}º>õ¢,N\‰€ózºMÙo²»¾Îo*¼ å›Z
-3¢¬~¸¤ÿÇx™#W–Qt½‡²e00¦¢eÊÕ
-òX¦ö¯s‘‰jñOõî²’x@æÍ;,‹’K»Nê¥Ä?õ2ñÛ9/¸¹Ýæ}·W(>»sÙ…×ÿn§þ´Õch4é‡Ú|Ùu_½)/ÄÑá‘^k.ãüØ3~w#ç ƒÃã“Ó\€ØhDL*.Ô.ŽìU®F~ÁyZ‘,Gê©+ZÚ­Ž¢ÛóâÇÒeœk}³$¬‘ d)ò«‡O½U„ìvåÅâÃ:DÖL¥o!„4Ž‘»h"lÀxJ N!Ý‹µ>N¹Ÿ8%’ßiâ€Û2û¤¦HCdã
-O]’áDBAJoó!tþv¸Ž¨0(V yZ!”üÓyÌÂ
--š–¢^P;‹H&3'Œé`¥²”%¶ ))žoØ*²M¦1ÓJ@]æflä­DWÒ£‰ÿRZª÷sÐ5 F Ð/©ê¿lf-VÁªZF¦4ˆFZ™ˆÇ+EyÐÊ’‚…?^ÙA3â[æËÏ"K§£Biøu$ÃQ+:c)l@+!f/¡9
-rC¾Íþ絨Q³lOPÄÔ½h
-LN€wÂámF6r™Ø(ý‚s@^°¨él’+«b×us!T
-º€%VŒh0„­ñ¥èÛÔ¿®E¢ì /d’þ±Ž|·zm›h7g-·n%%$vO&^lHatjGÜïf­à
-ȧ»£r4£Œ"i3P@(!Ç°.3àô€áÆ ¡gWª|)ùµZX’RjhçÀ:osàóöªçgsŽm9[|Ùºo£ú|g5Í"ňރbô¾9Ãcbm­Cyr-pú¨y bõè$2V&#™3ÿJ7gQú EVm†ôä[ä“]ÅMÌ'3qäªÂˆ¦mWýPpZÊ
-µ‡´ô»ù
-ûtþ÷ÿñ·ÿð™­""LÚš)5À%‚çzöÀ—ûÇúýl+<6,$Vªs–u¿<´ŸxÚ›‹X€”É=qi …üQ…¬GP¤Ÿ¹|Ðh)šŒJ Œ)kC)á~yZ²• z,7!!¬µÉH±R#¯ãò—­M–ç%È«a×sdyÔœÓo32¶>Ö©°ðSðYÌÙ*È3|>ëážE/m¢ŠYÉöŸv–
-è&ê<s±þuÈ=ø¤$q’,z¶æTÁ6%` åªÂ¥]
-Š£“—²7õšåª0`ÆŠÔ@Ðz)è^i$ÃR”º°qáÏÀ¡´›³«Ðú‰ÒZñgXö›9‡•¨5Iî+Uß0}
-ŽÉÃEø$}mùP€ˆA'¾L’ì,vN¡¾Éd†a%,2oR–d¨Å]Ž¸lú})ù´iΊ"ˆ\mãÏs˜æÀa Úý2°68e·Ð•øô(X»”©ÜÈi÷æÐ:[|è·Q}¾ƒã¿Âd’©HPfñë弟×"®Îúˆ×^8ìKáíXëžG–,q±éãêÓÜB^†‚ÿèZ™ûê¡âÎI‹¾­p7I¬À`â?¼‘ؤÃxpÇ9ú  ­l Ètwç ,!×%J,»{Þ…‚Æ‹Ñl¤«<¼ ‰QdRóµ7”À©ä%P¶TÔ_#Q»–0)<e‰Œ¶£þq/ú6ù¯k>`† bJÿá7EÃÊ›ã pÂr8÷òrD‘<Y”¡–|aádèB7Sÿe7þ¹D|`”6=%>ÇàÇL<]ªH'[x¥Ê—’½]•ndˆ²Ý9u^æ@èåM'ÒÞœûòÚàÛÚ}›Óç;»i)5úCÚÀ/Ö¾.%JO/þy-ºxŠá<ÃTß­‘õ"iQÙ]óò±·Š`Á¡ V´ÀLâ­¨&~,g ¦VIŠZ·Æ ²•°“MbÅäw‰Ä^”Ý|dXl’\£u[ŸÇÓòÖ>üœÐ3%ÛÞ†SVÐ…‘ë^ $›ÈVR'##ʺ«})ñOAN8“&çÿt6 Ta¿â>'3t9MÑ•• D¡^Õ½$ÊÍቢ9QÕpF¯aúŽ„Saç°Œi7¹UÝR­{ðï
-„qw“Yä;(–Éä¹_ŒªiNx×Û"¯‡š˜éVè÷cHh¡Ë:Ǽo\$5<[©ßÈ<-¦ÐsQ%Ùö6"<‹n,\GýDJò»5·8>öVÑËšÞñþRä+Ÿ–.õ S·±ú¿Æð§!’øåôÜ£î)E ñÝÁòïnO% ’xäî6øàcB¹}y¹wžݬ\*dÚ̬*; ž¼5š2AQý/<ÄÔ?4:/¤Â!TJɼŒüÝ
-U_–[}¬/xÞX1t£ê/;á’Éz'Ó° °FîG>úȤZ1ú|á
-¦¨*“ÚñViÝŠí”8í­$-Œ;ŒíÍ }”dÜv[:BAõèfs ‘x™ÇZ] ^«KÍOë\:çtšKžnuèäëëæáúÆ_Í•³<¥`@y£æeîñSMm›ˆeÞ@'6¼mw}|çLg
-)¸6l&77Ý×ñï \0Iµ5Â)Oò¶ „œÒaà4ÚÑ„AUåÜ{ìnMP ©·8@Œ
-.iÒê)F ò逧Ev»°]P†Ï”n‚£9‘ rG¬0½Ar1zߧ¹­¢xO`.‡¥`eR_4ÈL$Ù‚8E7R`®ÃG0KTï K´ýøqÚ¬`÷™\*Æ øf—“+ÎU‚5R<^üñ›³0£ ïx^‡*P_œVÔÓ-åNYÞ.õjb éÂŽ‹Ó@Ç;Çdzîbvùi.£¹•oƒ„@º¡7ÞN­%'C;Èù2¬Gv_“ªb%÷VŸ÷ñãqI^Âç@àóÈYtQÅö†!åê±å:8f£W;ãÎ%ɵ®Ô¡k/'8âÖYf—ì’¬€`cfdž ü£åPÁzP’ h/œË½9îËÐbm¨ÉÐÓj >Í®„Ùê±ååôàU昔™^´|0z…I±äÙ¨,ÀîÔ8*‹|t`Î@X©ÁƒÍýž@œibÃȸÒý"Òf­õ9†9£'Ôq‡·GëôÓ´d^²õc>¸ã‚ð²_jzZ†J œouœC‡-I ³î<óÛþ²^Æe¯DK¶4’â‘EÄYﶯ\ð­VgoºÿÛ+a÷í85•}eÌž¸wút²4ƒü1üÛ?üñï¥@*9GŹ¿ä!ÀJI?r8 öúï¡þÅç€ÌõOÇ3Öé-¬¯üÇy ê‰5ÁÀ†c˜¢ÂõûV2B&‡¤ÉVÒ¼‚œØ¸
-¯ÊÈ;„‡"aÂw>l=ã&hûš}‘=? ŒŽ“¿È.«À€fí‘
-f³5gäêg¿;m@£Èäî ©‡¦/J=ce’ÇSƒÊDå ²â¡™V†c1?Ñw‚[˜ú)Í=—ê‹ŠÿüçhYAŠÒš¥ÁFiŠ[vsà
- ›ï)½/ß ( ³ìÞ­­Na\\î8;zÄ÷}©”õPŒÉö9¾¢*C^××A‹d<0CVÎùž1ü+]·04ƒ6™"Öî
->¢ëý¦8–4ûóÇ4p<'=?,$œhã[ ªÉqó—ÝPO=ÓüqÒöîÎ"AÃÕX Q•f(|íl î¡u0a>“u Go &-yC_§ÓÈ­gÊÜÆ?§ {™—°}†™àf<¹—Kü¥ü€8@6ùP^&ÏÆz‡Ye¦kð3P5º
-£?K¡—Srºhè«vÙƒc ò€Y˜ö «î¾P4`wÖÚGŽ‘ÆæAò“ßa²Bßbœ«³—¦ˆÕ‰xä÷;~Å¥¢]`Œ[T¥WR22Ê#!§F¹¸‘¦¶ë› ðŒ¸Ïìö|
-WÖ~b#Öß:q'Ôë¤àñˆ ¼×!b¢ÐÈxinè¢Ï‡hWz•ÌU³BÜ0¼N‚
-ô h÷0P,|J¦ÌoƒÚš=ìç†õ
->„!kDõãˆÖIÙ
-3#Ãgp£ÂkbÆúA(_,“í1á½ÈÙ5Y^˜%è›±yZN‡!&t[‡ñ„M«Ì C
-A*š §’¢*ÉuÌÈ_öˆŒ #OþÚÊ|]<ÿËx™dW±+QtÌx©.Úü&³ kæßýûH¡kœùìE.‘R(ŠSpshçª ÑÝZqIø—Û¯Ëо[>E΋—mcEÞ0QÂÙÞ•õr`'>°ÕÃÔ¡–ì„X•á&˜«ý霢 ¹|dL’Ô}¬;nDå ðÀnb´Ð ôW„`7 —jjÉȹ/DiQW{ûÆTòÑK
-
-ÝŒb•‰9·sÕ-Á%«4“´äÎ&br…üùð"g LBÖì WÏD_:.È®ª˜$”¼`ʆ'È:URÎö*Ñ+
-‚ðæô£,köÔ•Õœb:IþZ"%î0ÃÒÏÙ)@·Q,òw,m.vý%Ö•xÝ!h,*™?8öX& R_SŸ¡"éüxÕêc~ß'V[3VqJ9§G|g‚0—"òéȉb3†÷ÐÕ9c²˜ºGÊôtžÝÔà…—û¦Y
-Uã
-GEqŸ3ΨQÄ8N«ÐêÏnSÐ"î²æÀÅ%FåYÜÛñ² HoGšáX¾OT!3ñ =;c?AÏ,[²˜HãT-‚‘™ÚÄÂÉærµ„_“ð?*U~ ”eöJ>òé_øþë ÑáU® Üëq Sµ5qì Òh‚UÐGÞ’& °fÔx6;XAmAêØ]ÅÓPC`z3Æ¿³D `÷93«d”5'q‰úCÂuaOAZ‚#™¹ŸNĺ ³¥²¦µ­{?F"¡,¿koªà¦Þ@çaÓ[]q¤å¯~82Á®
-=N$
-ƒ¸¹¤¼éˆÖ¸äZdJn½ºsëø=™Ûäxº à½8ά_Kì„|jÕŸïìÌï9œÞÄõ탘>ö× ;¡˜šr°p¸2ÒáHô! Ž±C2ðšù Åî`á)0¥åº&Ö®‰SyõlÖZ£N|ø¾wýÎ…úLÖZKâíQ®U=O%?™ò¶\M̳<=Š“5J’ÕGˆ ùU ³²0µJ†Î,u6!‡¬›»4b¶¦$žuÚ¤›fc§½Ç|êù»ƒÑ“â†Á°¶oŠcÒ)þvtùÅÖñlJƒ1dóú“«¡|t2I–ÏCWC¨Sæ¤úväÚKÏÔÜFâ~ ƒ…6•¯\XÌ@Ê-ØⱈqNiDZ€ Cœ4_7Aå(~1•r눉„ Êe½I«Âö°³}Xîp
-7Æý§·MË* Èþ|½“ÿpc€èTÈV¯çÝ dÐ/AÛ¥sW¨B ZkÜ(„K*c©ˆ€æ$Àz|"ÇH…€=öŠóŒɼkgF·sP´z ér„Ž"„D‡ÚAÊÒ ”îœNˆ]ճ̞1æ§s˜5P©A'›„ŽaQÇÖ –•ÆãMËy8€Î»Dâ^¬[šøè½"º{Þ›Åe¼=æT«ë&,å ƒÆ 'ááÀfAs©ºO¿„ØÓ/%ôι4BœÅ£©±ˆÓm(ÀDýâ" ›ÄÛ`ÀYI @Š9ÍŸþ mrDÖ‡ˆ%O6¢£õÕ(ÿCYá-D(QO¤åÉ„Ðù‰¼î;/î’ç ýx»«úTv J©m;¼EÉâ$s6ô•z¨ê;ÍC ³ÂÆoŠ ™à@¥6|‰;avNLÿ@\ñ —Z3ÌütÎ-¸yä8. 1ZÌ]ÇZ}˜z¤Ò„–ÚLàx¥!+¨Ê†0y¹—oÝÄþ¾nÀ0<$þgÊȞ̓ÀŸ¨Ç6ßFª<eŸz(#Ü
-ÿqìÇ…3ní𸇶'üŒÌþ9 G„wÂÆŸlPœ0#ëz† êÒ<Õ|È' µˆèé5dðCcaCÌPTf‰;ÛôÓy‘ ,–9܈¶ê‡¨§òýµóÿ½^‹ªžÊ,3ÐM9ãⲜc[[(©£z\?™_„6àƒ²àcÃ6¶†Îr¾”P¦HF^ˆ²©d-.L~:'4”…®ý$#"­Ü–úQ="¸_„¤ÖP
-dA»€Á}UÃt”ɇ°thIqŸÃ²Å&Uwü(^ÝâÝ­?„pñà`8¢¦µ„÷ bé!eðç÷~zdà)«É›ïÄðoªÀäÏ6…91 p)L|Wa8¤¥Îú]8Wß`猪*=p÷W éŸû@¡-•Yªg¸˜¡Ê ƒÎË-|
-xDW¿iÖ”b'Éîùbý¼4ë~έå÷ln£ã½ê6÷ê8Ã~-±ò©U¾³4JRj¸k¢¿”¤J15ÁÏ;­µßè6Á* èAPîš.÷Q—‚gO+ý)ˆ± µ!Yè†üÓ«¨+Ô'ÆÕS‰~ëoBRS¡Ámw¼cØŠF9Bõ“Á>dyð½?JÕʨI+GÀø”:¥M…©£ ¸UßPLK¤^ÙBÆ ?¸¸žN骉KfÔ¼ Owƒ µÀ?A|æÌT
-6ø@•¨š*}è(Q+2¢!"èDw•¨ú€<BlHÓú²åÖOOþÜæâ~Ž¦‹äXUžz²aEIóÕ‘F—¹(º°HíËPÌ×MAî‡a¡øVœÎÍ)j½×£´1($ÔPÙšWBta'2·öŸþRÁÝÒÈ’¬&´¾ZOS¢ø‹Y ÜY“Eí%š -qYfÍVVÖ,$?ÃÕ2J}Ó7÷1RüA?Å$´Êÿ/wܪ‚ ˆ®À{pìÀšÿ'DN²‹Ì„ìŸSÓ3–x¯/~ ˆbîLwuuʆ{j6ëX4dJ+¾ÉDú Ï,$TYU©R|ä}.²ðe'èfˆW¸VÎGËKð*ðù@)U𗟨ç_O/ž˜ü:Ð8‡9g‘'çVK3¿ 41½°å ‚ šÐmä¹!<2ê† ñÐî<-K
-îwQ
-î›g6
-tx×@£6d¹P:Ÿöøª~üª(´uÒÁe¹1¢‚6âŽX<£0—4ôè€,äÆsS©eO»ŠàÔBÙ<_ .Úkuˤg2ömS*¨I-«h‡D~¶`¹F“@j€É³‰¤&ÚZ¶]‘r¯JÂ@Á &ænVä[ŽËL²»E+Q-e¨|uNfWÂ\n| ÈcU Q~3y›Y]Ëó\83 ”šM}>%?@Ø-íûd"ˬLÏÎAûT@ÎVNü#V‚ß›GA\bè]ñ·Ø¿ˆÁbç(Æþ¼\1‡:e¼-ëd– ÏœG¶RÒ"`jveý^û¾‘Ðm#ïêøþª`·•}ˆÈYºl{ø¯
-H‰Œ—Mn\9 „O;øÓ)‰"מen`V“ûoçã“dÀýÔ“6ı«õCVKRVGtV$>þª¡^jëUùχ˜”G·ÚÃT[µ )-¼Æ(¥NHsk^ïûòëÇR ë*ª"¯Ö)½U¯}ø„4)6J—®‰(ñˆ>ø*fu!̵·ÞG kŸ?N öp©UÂÌK‘ŸÔ†V
-MÙ®÷ aÑRÿÕ°B½†Œáí
-$sêóÏùø;«ä"pBÇТ«JÔ˜6ƒ¿4ØC¢u¸²‰ô tA¬çÉ›x_ëP¶QG/Ö]&¤› 1kÔ{q­Ti>(€÷ë耚)«4eLP§ö@¨oµ¹EjµA3Â5©
-­÷ªR#Ø…¦M‚Ô¼o5)3lLÒ: éô¹5êw
-iç^ý©çŸÐ£|Ñõ³Ã<6šPyÛô0ç&…ŸÈ ´z–ElÒKdËÔgµNˆªáÝÆ„ôæáÜdÀ­M"…e¥[[ÕT‹_ä»*mºA]gWáÅ@Ò½×ægDGwœ ·l:ÉqÇd‰tèeŸ³íϘ öÓ1ÓQî:f·ºCƒmRp«tHà½íKÃ+Ô·Ö¶M*¼Å€ #–ü8:;ò£¹Ü»~0©$îèT¼•—ë$#7´ÖqoOŒÝÁ†§x6pݪ¸Ñ\¨<ÚÞ*ýÙU:]„OÓ匵ÌVF
-’úà:Ûw¾Íž á8- ¶Õ(
-Èßô»=n˜fø*fØØúÁ2Þ%©Ø‚Žn78€h
-“ŠË¶Þ–zÍcØؤq‰jïƒÚË,á•¥p‹èÚð¤èYÔE ïèEÑ¥†Éå°dé´n»²FÓšÚ£5…0âÒC&1B*þÅaâ
-ò`(Ú˜ž~ˆ˜ÈÚªº‘¬6Û«u¸!>çdC0µˆ¢ºn%¸xdŠÙ©±æy©ÓH†®­Š§÷Ò9kÇ‘¢ zRKæÑ™t0/ÈYä‚HŽÔë˜`Á·>J8u½¢‚k°m#x”Q‹&8 ÆØ §íž@ÿ¾£ÎŸSÄ9ÉÒß‘H[[(æÈ!A¿_€î"EÐ0alJ}Doõz@zšòó¸Ý[ æRJ›£VE8€¨7ÜÃ
-”ç%â¿iDŠPî¡õðîüý”‹UìÁÕ2 œºfCbÍSzÇ]x¶ØlÙà¡ÇÑD¸²÷Õ´ÁÏròGW1Ó!Kɱ5×áÙ3r`È׃ñÛ°LHgP148p?ÏÜ1Oßf«ëðj*ù¨Óö W ¥¦û:!d1¡²$Ò}q‰ÖójL†Ü@šMÇ"„̦Ý6K/f©‘ \ǼW2œa©VûY;\=:y„ÄRNuu¾u㵪ý˜üÂ-Q—³ßÖ2œO³lÅuB®êÁ߉§XÍ'k÷½éGƒP;±cqôF;;ÉâNÇæà}EWo̟ȹ<«|`  dM§‹-ø?q9i_6íÑ3‡FÎdÇzÌø|.AœØ´],,þ¼ŽÕ¹14g:í7Ë` •Ê´ ›‘LL»s=hq܉&ÌWBÙžßßFåUlbw#i´ÓŒKÈu^Á Γ2! ºEQê tA¸!n’j– $‚sÊÐ"‹ó¨ŸRð¤[W2®‹PÂø¢<I:¸+/ºs$IK‹Œmþ.ãlél¤îж¥óÃs“jyËÞEG&]GÍìç}BZÚl΋6!ø1ŸJ¡bÜ°bø֑ɯu-Ô˜éÙö:…æ²7|]"ÅXú–6&„®-»µ¦FI+”3Gϱ:•¬é<b±š«heE5ë(Ñø­\¤Öe¹øóÉD½N‹œ‰æÈù2 g5Ë: °ä{‰Ý}‘8Z—±JÃë¡gEëâ9±ÕcVa«z…üÌs<MR°®bm¥Yãäùî%g®¼+²Ê¶ÎÌ[.½ª$×ÍI%ž™g!XÎ0çÛâ0ž…áñv@¬n¦6êÒîmz }™ ­éºQ«¹äùÌÙýi;>ZÒû ÷çÝÁ£Œü) mß×ìVßS-“_ä ‡11oE@LÙý’üþTºYÀýÁ5dÀ|²\œ^eÓHI¡è—àÝÎg¹1âéN‹YèfЂ«»ˆ±¯°cT7×Á?Q¥·1»]$‚Œ3ÔëãìÕ¹K`¦üzÇÐ×»‰hõné€Ëqrüso,-þ~Ê·$€påVªžÔòãe’ËÑôxÆ
-f™Ø2{“À}C&P¬¿x¢mr!émÈßuÅÅ_/J~:'gÍù6{à@×pÌèPrŤò¶ƒ-¤‹jÊ®+æÔ ¢ !ŸGÞû5èÔ2nƒGd4kø työ››þZòcC»’KéÝMSB
-cb›•Eï>˜Vð|;²r‚x+:ƒO¼ÀA=¸r _/Uûœn¨+%¢ÁI%mÔËGÜ ¦köêúÏS8‡u¥›ðÉØ¥•ªú!}?€TGÖJwÏí³’2Gö 2ùžµ)bÿ^!·ç|œ2™Ò«>«|)_¶Y °¼%„‘¢ŸÓðã#F:/Æ _!¬EåPËÁ„X³bÞ„‘Qª\Ôv@×c"Æ:Ó}lCrä^œCðE„å œsØßmúMdqS[Ëq%üã
-áÌøR:¬Ú ÞDÖ‰ò/q#b{ož:³É ±^Äšy†@{9A2„Ì£ih}S™>‡åA@ ,Z_†/*SD+ ŠqGø\àÈáׇSŒêòüw¾åX_f9;íòÝãÁÓ‹±£3¹¼H7±”üXç¯í°œâšâŒª`šÛ´ Bc?FæQÆĪ%œ¢——ÿŽW¯ú
-÷ü¾œ38²H°–k£O|€Á×Bÿn\¥^gÉ?‹3š¹ø:ÐU¯„Vîod¦m´qøþÞN¡Õ‘\Cžð̉£Ä˜ñš[냌 . x³P Ì`J>Á—[ß
- ÁÌaºõjUk5¶.‹…úŽiÀ| –®
-Ö-¸@¶ÌÊ À(ÄŒ§s`1T—»óù1·™¸|ÔßÅ¢Ô‰_†×‡kèá{ÍƇó,wpYZíÎü1HBû>Î|­›Gë²oú™Ô—EïM>¬àÁjÚ&ër¾G7ª˜†s?£4ÐB[לö.©çÑDWº`ÿÅ)F£?&$‡Ú¬r:ó-H ); x›o#±Å䘜Îç xÛP oO†:ªØ Õ^‰1kμ»ÐJÔmú«<'õ†9xtžL€!ú%~ø[ wUÏ&Ñû¾ xÅX’·…ÆK]µé²)ƒfn ´CÊ”Å
-&‰°éß „{‰`Z î"(-_Ìâ×›n Ó×e=T±.©v¿=r ™¶ñáº_°?¼ cx‡…©Z!yCôçL­¤'uíZO ¢ùbü™Õ±.>]IvŸƒ[A†ñ™ñÑ&৻äËN~ãë7óþJ
-Ðn÷ ÃÿµH)â2û
- cÛ!ÁÕÍHძ,ã×£ŠªœüÓ‚ßÅ82¢µƒ7^_nržlW®‡Ìà_N‰ÿ²Ym‘Ó¬ÕGTR ÍT ÷trkç)åð )ÐO´/>3иÊ
-OÊ>¢ü¹C{Þp^GÈÕr7…¹¿kHv:ó nûs(D˜,· y_»KÈùó¿Óþž’ è$Ë”ìüÁëHŽÖéOrÊFbÖKr¿Ob -ãÿ½8äLV¬ZÜ å†Dn¸‡y[=ÇE2ìK&›!±ýØΠįóÍíkñ需on-$?‡ñU^b–?,‘”ÅQÆÎ9,¹Ô#¿g´ÓÌʆ„ÝtÑ3K ííl°³ ä>ŽÓÁ•7¶Ä›
-ê»yÃÞVD99¶½œ7P/™ÐíS]¦8h>‹¶‰L“Ê"c¾;Ž€ÀÖ¶ù†ÎGÖƒI/þcŠy?%ÞJ…½¤Ýx«Âœ-øj~Ò»ŸusÚ¾ÿsag¬:;íW©È]ëVÃ’X@ìdD›YÄ|
-Ro„BXúúòòàÒ‹jk'Є[‹¿"$m™`.PP"ÀH RuÓ½;BšE*£¶B܆¨SÌ·@z˜æh´œ×1™`HqØZÓpüI¾MU>Chɘ6ÅÕñŽ¡ÊQ&í)3
-’qˆ"žìB,欥ölßI}cÞ-Ç>S?|]Ålr(Î/wv&\d¾jCî*3PƧüy5óaμ:Ï’Zퟢ̷ƒ jÜßiØŒ"/ž›íB“É@¨üF¤ K:D%ÿ½vUä³è~<lO±ÄÓMZ®BŠòúGS¤ùbþ‰•!=˜+Ûxô?Œ—ËŽœ·…Ÿ@ïÐk/dñ¾ ”•=A
-úd8Î?úq)@—0Ë|ˆv—TpVýlg®„Áeˆ9Y8Š—ÐücÆÿos%ÃHÚ7+sG`w^e•ÐrjRYÞàb+O%lvθ è}Ì‘ ÈYØq(z{PôašW¬ó*&f€uÜlÉa,ÙŽº{Ãu;.eMûáS¬)
-ÜtÃÛi†@óWMT,2_Ögqã`4¼ÓÃ?& ? zFœÉ\u'€á;|0óó­bɱ€¿sÄÕ¢œâíqª„Õy$0_®'j;‘ž€Åôd«ž#mbb7ŠCPÈ—/ï>¦½a<úØŒ|@Å,|HdC³@§|T-Mɇ%냒Z9#à
-„ú·ä1¶åˆðÜ~ŸKÑy}{Fƒ_eQK«ü)
-~(áMq¹·#Ò¯q_swÅrbõ‘>èé"qÚR5Z1vÑÇÓîjÞžØOmñOÿÄwù!ÔVïa‘*X¶›LCÇÏߘ™ßüB}¼…ù¿_ÿGPý™ÿü¿ŒƒjÆ»ßþ¸åÛß>ÁùRÌ– €‘…˜q0@Wg›Xƒzvcds’êBEoùW•£úçþ{îëÈ—õ[EÍuóõ‚Sú3×û›ýq‹A÷¸ýúEç`?!ÑaŸkÀ&c &L}™
-¢"ìaQÈ+¶ŠpÜ¡dqÅXJ v¼3À1¿FkDÜÔà «„EÆÞ ‡3D´œ±›˜SÓüºŽ"†p»3gˆåANÛG±Gø-Ö`.%\ ŽÐÄÇ,)/˜Ð8r’XJæQ °’o(D‡GßÁ*
-ÝN%ÞäN‡ ;(E:ÏH¸É>òˆä»lIzPÂC¨·Èúó§sÑ„¼‹þ±ù$¼‡H½ãrÜSEwËúöÌF/Ë&¦ Ð'××Þäá«áEâ´{×/ŠÀQâ‚\&­{í?vWòöãûÌKßþªBtÔJdÿ`Îâȉ ;º®_˜9Æ*Š‚E”H:8¡óǽ®R<Á­ êUB~þ|•dÌ/}͵°Â“Av›°!ÑvÞ+ÄS~ñùÖwP†‚Í"YøQÉò ÁvÉz*fb2c$O¡FUº¶0© Ê)‘à3­á}Ñ냢 ÏÌš—&ß¼¨
-ŽIQ2¶û—æ”x!£ÐZÛ-Õd3f”j_%ÐN®ùåýI¨o]FßY ;5h#ôvŸIbŒY´õøŒ¬Ä´­§õ£©žna„‡ ¶V=–—AB``#`@˜>í§ßð[9ùÔ”yáÌäß!®öܺðà*éG²ïc•y9Ð68>€•¸(‘WÏ ˆÁ}†\JÌ $XùIA @¸·cT%t2\÷T“ãþ h×ü¥èEæÓñ});X11r²$3‹þlÑ-JÎ4|ÜĦͶ¼ß]±÷ƒ”bë;¦DÂu‘¿QýÝRLÜRm[^hl¦;ì`¯Ç¹ß•lˆñkÎÁNE³„~Êq~öÛ$œ6
-wà­‘“#ëP™]{ QÒ:@³o&»Ò¾²d~FLL}&[ywè%‰Jí*ÙK
-úXùœÔ~%¿‘èçé"¬¿ ˜@ :(Ãw¦k±2*I _E¨:®øz‚ªŠ$)gi=)!tÒœ*8n0%Ì›~b{È ØxA A—þÿà;CJ-ɾ»ØÐ(é>Næ%\0êM’غÐrâç,®EwD‘Áñ´ÖËO%-zÀÃqù£SQUF‰P»°®M¸Ù—-ØaÀöMìèX|øN¬ìãÊ1è›ÄD»‡az^›ûQ°5 ¶³
-‡Ûó 2`¹KÅû*‘qsÃZ>”|]È
-qæüØÊ–™í…ûkÀJLj¥~–T–è—ÕƒÔ>ŽI­TX"Å*¤F? # Åç ÔÖAÐ0oMÙå ð¤ÊÎ4@IS0.é<ÿÔZÖ²**$œìc$€@7"hqŸ£d˜BmÅû‚'AclðY[Éü Éz7ùÀ/ òyí%ð «ÜR;8|?ek™»`C*Ü çJ¿_ȈâÙ*×}%H›ès¼ûQÉÖÙGÝÁ­öò’VýÆŒ sÌ_îE7¢UÖ®åÝ<l˜´Ø<'„†[C©BI}Å6
-V£÷mã°u¡ duª:ÓƶkÓ°g ¨,:¤Àˆœ¤è1¨ÑàˆJÂäX´Ÿ¥ï» </Z'ÄÛK
-I Ž+ÀÄJH¡šOèùõ©kŽ!Ó
-¦$?‡=fx
-X§ŠeŽÆý¡kMŠ€Jìž_ëmØ$¸Ðšg+ðRÕ;êdÊp¬ë20Z”I m7!ªt.ºr0h×pT¬•ã¼¢7Yí±qtþ“"\¨p<”lD˜Á~;ƒZ:I\ÉÛIHÞù“% «dR€Ö»{RI» ôþÈO[·ƒ¾„4Jb´Óñþaîá’Z,Y<–àGÐK" ¾­¸oãÊ{$ÊæRE_^ÔôeÔí9ö›õØ[Ç
-at¨ì·§’7:£éÇôÁøIËflÑëý7B±egã'yI,ÈöµCÑ,QfL¨­ô˜?Ã,âª@1aÉ!ìOSÇ„uô`½ƒ@ÊåÁ zð"ÞQ䶬Aw‘YÚ­¾¾ç.d ‰vÛä'q»,,ߊD“˜Fv f±•¢ä@ŠÀ^öCÑ—·l`ö€÷©h–0¸?Éy ;
-¸¥•Þ°‹÷ï@zðà 05ij•¨ðЖâ_’ee‚1=”
-kÁ?°~ÍÎdöYåo÷KGeªr×j—ºÎ)PN†h¶ÉŽ}@¸ÒXºu¨àwù2jÁ…ö—.E.b»0¢ýu¨šK7wÛ¬T Â:ú—ˆ,Ó_™="IÁ3üûÕ>(ójÞþ à‚˜lCÀñ¦•|CçyT'ø0*ÊÚœJžØé­è×±èWEP³“ö×M©UÍ©ö³%£,$a0Ô“µWºCÇ Ü´Íô5"ðv|ßm»ÿkЀM“ø ˆŽöX@;;Vdíã)ÕœHCñ)êUl–?*VG@²þ(½µ¸—ß+óÆa·dI…"Ÿ¥[Þà‹™¶öTÂÆ
-{ÃÎ:
-±.1F¯`[а»Ýãä¿ÿœkˆw02ÔŒ×\#»%ò
-/ï‘iLóL ~Äw[wU!ÚØ°¾zÛÈü=Ÿß&‰à1˜ÎØï¦á™®“¶ƒ³Ddeñ%8mIÐç¾ïÞ⃼ê~Îmà÷ÛÜ€sxÔ~÷ÖÜ0|oðæoƒúïOF»ön½L´’Óá¼ïcQ"÷áúEÄhϺ—lœ”ÅC§Ì1™À¸Ù*á`,w}9˜7´ož ¼¸‘œÎp½,Õ·˜½Ö;¬œýß}îÿ'ˆ‰€¦X}:F–`ýeÿ.wiŸM¤‰µ§7u˜ 6ZÚYõêsôy†[*’Ô
-ËÜu@ˆ3Åè%)³1„ Ûs
- ¾„r±ëßÎEosÿz(Â+·ØWVX£Iݹ)
-Þ8ó2ÓJ’üØtdc£Ò%Âøb¯Žóe €„Ãÿ Ir¦K«]GʼJFT<…"X–¢|+ÙœüŠû1 ‹ë9j0§äNúÄ™ÊvùËÎG™®-ü9¶@yñÄ”ƒØ¡øqéº%
-G(“@Œšî&ÀˆôjŽ¾é·µ›Ÿ"9àÚþÔßwó‰ÄàI ù<Iä¡Cz¶8õc–Èdˆ,˜ËI€Ó"Q£ñ׫D^¨”±…û®‘¬
-.“Ë“·º~­ºD•
-RiŠ€'{Áª§ß%âÓígX“R4ÕþqÑÍíÏÏ‘—ØcQp}.R+oµ”g/!º(BâQgåa ‰ˆPý°z’•Ó8NÊC÷rî
-ÅdžG~5ð3«Œ§ÆÉy˜Tš¦hÅúmÑ£üNŸîvæ[€3}‰M5kŸ° Jƒ²m|ôD«7&H­!Ñb01¬Ë–ЕTŽÙLRµ ï[Î2|Â|b6…]dáHQÎlÆáAmâBì)ë¨ÙL‚ïö2J€lA³cl£E0²ߊuРß{ž êãòÌ–39*ÎÛU莡Š›åö¢ñ•dìOðåGfÈò+ËÀm‘Á¹i>L+¬&v%A‹G£ mCñDܤè•!ÎùÅ»M\€ÐµÄŒ……¯GE
-¾oªöYÎIØÄe¨x!Ž’ê/À8#CŽÖÊ…K¹yzHì¨GºßßyÍû6¯âó^õ*âwp¼~ “Á£âŽ7ÉÏ-õít“è2{­þ÷) oе1Ýüà%zµºwœc¿¼“™F#%Œib4TЋ²3µ}óöUû>O}n C©°Gô¬ªÿîi¼Ç5µdh„k^"‡D_§ýŽ¦0¡|!—sXÿZy¾b^$-'q0ƒÙÚ±—·¨ãԇЎÃQ™§,`ã|ˆ…„AGÿæëØèô)M¬âˆ~üFÖVn×zÀÖ†Á×ÄåL©ÁYØû¦òJ0#®bNü¹ïæ}ˆ¾oßf
-ÃÌ
-(´å’’)ÌaB¹€çž-ˆZÅCJšÄK¤àÛÌù÷wªh›xÖUm’Èg:¿Ø§]¦&%›Î8_i‚æ,,ÖÎQJ¤Î*g"j‚és㪕ާ}óš(òœT L.’Ä© 'ì[çÇIOÿ mÈÕ¸èÆE‹(½Ç7ñŒeÎ@¼Ç-ÅÇM¹(8[Â!¸™Ò=ò9j(š8 ^±E…û
-ÂwøHe¤øv~
-pÎeè­”Èw]…Åg W
-øßL§B'4Îgð¶›Ä0ÔJ,»Ð™áE<IX€YE)™<Z¾I¡
-Ü(`l'=E$ëètã´'–”Ú¨Ö—ì²”Z貨ý¢„#°ŠšCÐ{aRÒ‰Û~Xãè [Ò«ÍFò„˜‹Ö û
-ôœ“it³#ÒÜHK´êäËUÕÔÚqL / Z*írŽÂÕ—óq>fOÈúîzEÝ­_j©›Oã‚<‡ ÄdGëвÃÏŸ‰;ÿŽPÑ8 Çmårª-=ðÿøl™ÃÚ –Ë2mB
-„^Æ!ÛEBâ|¤R©>G=Eò×ÁÞ"4Ùß!ü];åXŽÕXêxƒÌSíQü3‹fÞåƒa”ë†EOåP'¦­a-G0O¨eæ e1 ÄÀM.¡tKÅK9c.Å‘œš høRCv¿#£¦T)§ºv1]†5Êpl´4n[X[¹½‰‚bıÆý3ØŒ!iª¶­Þ­bÕ¦eV c"åÀÆаŸüŽð×P
-Äã£Q–5꾚+ºÏ¨ŽèÇ D;÷¼E*½@­‰@¬ãø)­ßû8÷©…©!{êš9Ù#Å÷6l܉¿S½†8¬É½PÊìˆ"šA›Ú"EIˆ-Ý«žþ~eó“ÄŽ‚‡è"œ£åÛwšJŠg™1IÁ"šÆp´aÈ\¬¸på¼J„ó)ãW¾Iõ—ªß o¾ÄBÓêSÒEñ‰R¿­í4 fñÄØ8+ô Ìz¢ÍJ¢dÌìÂ,
-øƒ¦ ¦ ÌJ™gÕXrY…V Þˆ…d—eS8øïE¢ó²ˆó‹Æõ²Ë²2ÄüèÈ.ËvZø€/¬ú<–eo­<ºd-®>Ëv̘n$åê³,
-à£u÷Ý›eÉ›eÑ“e¹qÜôÂTôY–øÑîA«K7–í˜&2BÃeY=15ñ>î2¨J‚'ð{dª]X–Ò¢x£ø¦dO´$ü­F`©<’Ï,‹„¦%)ME|aYD,è¥ñ”E“9Òh'ŸYÖ“¼`VɈ¡Ÿv{YOô€YIHf2À³½|†Y5/ˆŠ?ó¥r¡Y¹‰éý0\šU‹³µMŽå
-­·’’Ï¢dŠëqlïÝÃÞ¢°%ó¤_˜–¹Y´s*>Ô2 6=Øöç@-#†¢/|O.Ó6È N*õì3­#y3-÷U…SWù€æ›iQø)(Á¦¥í¨·.3» -ÁSsÀ~˜ã…´^„H»ÚŽs ÃŠzÉ|!­Œ!œ)æëw’ʱcŠgz ­J‹ÞdPççUO¤]|H¨~þï­^”ù`Ú_Òê‚Ú/éÀJ¬±31é3?{ÿß[CÍ‘´AáEG´$& Løôqÿ@!
-³:¢ï7ÑÏ<ùÃD
-Д§—3kîC—èÖaD‹¦šúö.
-žrɵo D‚Uc̉C@ ˜ÍÃ[:ñ!¯A’±êC©tÊÜáÎgÙ+Ñë«w¶þoÒUá£<¸‚Æ|
-žÙY}°ÂBÂÁÓTÒx=§žÏ°ˆåäm9ëg¨ÉJ5g'ª=&à~~ùJ”ù@±ùöhô"͘cÛŸƒ'Þw6B Ñ ÂѼ® éu2Ão¼% Y<
-ÀÚzÜ)IÞ%X'Ì…Ý‚d³`Ó¸ÅòíŬ!X!óÙÅ×q¹VÏ‹Wë±`Ù[TsåÛt[Þ…Cø‰jŒôH®>¿þÆzJ«ðœR!©é†B'øøðØìË$uõ #µn‰v=î2Ù›„nÄ—³75æ0n1øú´ÏÌžY‰š¬Á>ƒ¯c¯8èðp|Kø¡VHÈÕˆIL0ðxò4ùC)¼x0 3w“¿ìâ7EQÙ3Ó)‹—¨È”1o¶ÍöÅŽíE Wú™šŠ˜ lNÙäŠÌ³–Ìá¡Ð‰€,¶“®„Êpù™M°P<¦íÏ`š˜T`ÙˆþØ¢.ÈÉeæmüUx¤&h5]ÆŸjgôÿQ^æH’ÜH=Aß¡e
-iX›HkŠTçc£U‰s¾
-¾ºÀª ¼krßµz#¨Ëi!lRÎEÔl‡^¶]$6’ER¦pó:Ûʧª6t‚`km&±û¼~¥¾¯(ôcÖˆ“”u§•æL¨Ëœó‡Ÿ 4H4+xÛõ11èô¨}¯þ’âÜ¢Ôš[Õ꯺L#k
-%ý‚¢å! ¸Ü?‡’‘mq4–ö®¶_›%ÝšR¬ ýض¦f‡‘Ú#˜0{DT~–íöz€á =ûwɘ4!Í á–³>®ÝoÞ?ÇÐ{‘áfÕV
-q‰9é}.&©Ëä¶eRL ‰jŠÙÖ™UDV‰@⤬ĔŽvåñ.æS?n@‰5áën)³>5b@"#hËÇ _‡õJm6v„´NS"ÑÌnÛ4Å)ÔÐÊÌ(*Ô ï•xéø øœÀÀ‰ÁЈB~š˜—3’HW@p¬Ï{4õŒ!Š6!(†hO‘¾X.@!…ÀõåU•,“ŠS‡ñæ9\Tê‰q_ç°ƒRŠz˂ཻÜ]]¥Ï]à
-Ìt`7öŽ¿, ¨\À0Y+~À: ‡.·RÓMÀŠÝ©¼šˆñ&`¹ sÀ/ÄF¥jûF¯ ˆÑ<µ°€pûB9p;ãfÛ%Y3D6Ç=Ò¯ HÔ ˶GäÚ­ßwýgÂâ4-©8·'»IXê>wüâÎf-É Ts#ä‡ý¨±oz¹D¬X•¨:Š’º o R7dyK̺‚œ åÎÃÈ æó#e7jéåÓ²¥[±ÏQKÔÑè’šµÔ9)ªŠo¼Ö_L†F1°tLV ~dÓÌWœ
-ÚJqmZ‚|Yï›°‘dŒ..¿
-2(!cN1Ü°SªÃNlkp [W“£®Ôñ&è¶<Ð)l‰í(WäaÙ [bM~Ç…)d¿ [ê;ŒDÉpÞ;½¼„-Ã@mä(^C’6Ýdß¼µÚEdâ;ƒÉõÙ.Ï Ê&xaKdÈáuXô}È9lÌË+Cj­V7lÁ£ê:Q3ºaë2ƒ^ÚÒ€‘ÅÈt19ÁK[:‰FÊÒ-eº¤­+É_ið+:i+¬ŽõãÒäµ:Ú
-»;I·¨òL3˾3%Îè1âøXyèØdõ™Î[Lø ­ŒÉðRÉ¢\¬ l€Ÿˆ^Ö: ¼¹ÌË‚@2’iç¢ÁCÙ嚇gúçž@W Ä1"Adݼ‹ác£¨°c`ÍfGŽê>eÌúPÊŠµºs’Gˆ¢Å‚G
-ò6ˆCó…±ä‡³„E{]`‚˜jòe›VP^ÄŸÓ'
-@f‚±áüª†×
-0C3ÿŒ„‹òõ¶íƒ2g`aZYC£n7ʪI›ï©Gë™l{~è˜HÜt„Ž¦™ÌyÔl•9 H*‹®ÈÐ;C®úCê°f'¬Ì¸`œfCƒá)ð¯•71#…LÃvØ8tÚºèãÕü{.0)“AÓâý=`ȽϾ`.6ý
-K(Œ•N6 èz®Ò$~ž”ÌÒYF~PÄz¶ñaŠ~؉›cèkdÃ}_´?!l7‹R‘ë%Ž)¢‘A̹¾D©$±´t÷±]x‚ÁúRÐ]PoˆzÏ&
-ÆÓ%]<àÀyƒÿÓ-0©e˜Kß> <TÓ­øa)Èêã¹slv–
-‰ÀQÂÅ~ü¯¦åÓÃxv‰!t±ó¿]œ÷¹·@1‰
-
-˜$†Qµ¬¬S´"Ïtä ÜNžÚuB‹(«µÜ*S•ÔkúOº›å®œ$¦ô7Å "C)¾DF™çðkÚÊ$ísbi˜ vn˜~Ìb)mšºd}
-ýÃâ")1úç4œÙ•NÏü%ˆâ£¦ý9D
-7æ鵸0s‘W‰£“8§ÉaN_ b!ÄÆá g•APZá6Æ4\Y–!qì*÷•®Hfëéň:Hsd=e&PØÝ9Œ
-Yäu›BI-[0ÂìÀ†­2-x¦ùttBÞe¸Sä>äÛQu@×Íp>÷5è´¬o,´Öþÿ áþïÛÿç,ÃmܶâÒ¡¿ 9!\ÀKèÇç ¨bŸänh¼fNÆv$Xf´È8î›û„@³…J`!Ç„Œó§i«ª|M˜6¯+šŠÝ²rα‡òeQx˜t áE+Ðä± Ñ°ïú»<Èñ)cG'£MñÎÉ©j-¸ÛÛ@˜¾Ôz½}•=,³~È®Á¯Z!¾ŸŠ_còÒ«ý©3¨ãw³ 6úîßBÆtm¶Ý¼jÈ{WD%­}¼VÕÖw*uƒy5–32V‘¿ìn§^
-LÌׄ€ÀTwævA(.uàªjš Œ¦¦‘&HgB(9sà<NÒ¯ÿa¼L’#¹• zÝ' aÖÔR·à–¼ÿVÏ@I•ÕäoÉì7å1ø@Qæ†L> 1":„v ø2ªï~u¬îŠ=ØFàc¿J ×ø.ôÏ PT²ƒ©ÉcQ Œ,ÿ`ßâù¢ÄÛùßÏØÞŽAGŸ­„ˆkJÖ µlH—¡g>Êy:«ôEÞõIdÇ‘÷óóSgþäˆm_¶H•ˆÖ¹øÁíÖO]ÿx¤,A™>€äÊj“M£i+S9Ï|`Šé펱†,$+ls=¤ëXu|CЧ ”ÞÐÚx`p"’DÚh‡ê?p pÀ>G>CΘ"mˆÊ%Û‡;-.D©“Æ&óSöx8 j¤®g¬zÙ¿¼YäÝðDá­ÑÚÊ€Ál“ë "^zhµ¡Ç\ɮТ0›Aâß±½$ ˜äȧ’Ÿ=}ÎF,ÀÝï$‹Ã%p¿Ò£Ûù ä ³”0œs³³wÎä‘…¿²ö5(<†S«Ù6 k/ö*d„#Z¢‡ð¨Ý²ÇpÇ1»
-…ïûœ<Ä’˜×Ã>ü
-}èңߌÑ+EL’v¯°•lœh+[Cò–•]ù¨´÷ÝaŽ_zm=Êb2˜g4. —e•h<ü0ù­eb‰¢,À—«F‡WƒÖ’W<äÿf#Ø?ÑM—vÄ£í²k½€F7…ãZ; ‹ÓÁB4Bc~ò†078DºV²±«
-üìä¹ýÕ9mRäÛ|@x¼¯íkX$¨oÈÛÃl òWia Lñ¡òePgª½û0℈øð¥ y
-£0‹;…Ô˜¥UÚ¤ø†Ûàlî³OfèXQ¢—m)ݤ ƒ©Ùs ”Ïò7"üNÿSæL& Ïte¤í[.“øí‚2¼
-'L­`*Ù}øb¿Ð;çÒ>F‚ˆ›(x·(£ÓQÛÉçÙM—©hïšý”E4ÅŽ¹ `3›²•­½€@pC#b<®úã ÿó0™>³tUÑqšä"dQö™·}{˜•nátȯ-áÑñTòQ(¬•h*h½ûFÀ6xéX$.¡…˜\Hò|w€¶øƒÌYÇbädŠÏ|D«4ÒE‹h­«“ 4ÞȚûr«é +*̲ t—[F0Á: k\Çù– þ2’Évž„d€aoâ«q/1ÖmʥϸÕ-à¸a;&Hó[Ð%ðˆ¥ESH˜%Í7›sªˆâ’üÇfˆ$!Ͻ©·aª¨kê¶Sò‹½,õ$´'æ½uâp(.$&B=/ 2½'{n¤PYÚÑŒnQ]¬
- –Nkñî öŽcnxE¯k²rÁÀ±ÂÛí—®j/†
-7ÄN); /UÅ8¬C´»`DD›Òª; ÂES–±é¿¼`‘¹Á,ž—ß Š—Ó»^©ô8 {æ9jŒäÍÀª>WÞºé0.É…ƒä{V¡,†¤Ñ 6wáKÐv/ÐN’ƒz!|ÄGF˜Í”5¾( æhÛப
-i "žû2ÜN] 6—Ž{ç\ææþ5ÎüÝ_åÌñµ:Î6DHH®{xZªÇW‹³êßgtÂbn–ùÜ@×]÷n»sÆ_´HãíoA™ÏО-„aBØÆâ¼J0âp@Ø6‡.@Êo‚I@®í³Ì[˜ÌLKú.8Û2MÆÏ¢ëCÞR’²\¨¡‚´“Àc¡Q&ÿ°˜¿}Š‚E£Ãõ8¤gû‹ÀÌÊþ$²®Â°»Ž¬úç " §O-ëqZ¹âñ*ök.U¤`}hZ›ìÈM²Ó`—%¨ÈœA@Ldß]s@àT^‘cÞ—U¶0i[Ù‡!ðã”XvhAJMŠ'TÐÌþEm`>zy<æW3ØjSÔ ¥Â6ÄÝP ûqoØU×ì߫섆{·¼s.=¿Ímv¼WÝfð^g’¯5v O½úüÍÚhÃÂÞ°ò>xZ+8»šœó¾]PÔÅÄŽ·…€¦ J‚½®Áá£bšEÿ0AŽS?_D}+'Y]œºú!H GQ/ûÞzÇ©kÊ‚Éw·éŸ#J£CѤù_ƒKÓ_ÚñDÓû«þ2*–G<ž–ÍÅî««}N#O,bcç!
-À Ð+9tNï´ûïø_Ð6iÒü EÍëXîæ6·ùŸt5PbS£
-¿§5‘zïÑzKÅRÄ8S+3SÍΊ5el:NYéQ„²…Ï,³\9¼°ŽÎÙþ‘¼ïG8·ŠO€
-H‰”—Mr\9„Oà;èSA
-õªÅ8õŠÖ?~|ûß„7­ÅCä‚ñR+MíãçÔø€pÖ•—pÔ…!_Þ*ÿSkð‡V{Û ·`_
-s‰¦<Ámç˜/^é–è ”aZmÊ?ëáD–Êä”v.²×Kð¦¢z@\7NͺÕã!6û}¨Û‡ho^DŒ®ž.Õ­ôÎ Ìg#¬n˜ï@Mœ 3lµ®9¦üR¥u-+ÓJÞÕÞ5
-ièí ò÷þüþí„95ºÑ~ÊíTd<NÃô6{‡hÆÜÈà<V7Ð"yéhFÆlç±¼—’Ì?ZŸîýyÏÑ!Ô@Z9`î´" ríÂ(œY©h…ùòþÄ*€˜c/=Δ"/¦Œ ¾Ù™ „cEhÊÞ4žHE8¹ÔLAÕ§sZ¨;˜6ê™TîE8qÊs¢BY%›¨•ø™Rx•–Ž°EŠï‰ H rÜÍ+ß} 
-)>:\I’N)Íj=PJy!î”ùòO”R^Èy•ÌqŒ3¥
-¤W[×#oŒk—‰@}i 7ósƒdÕ…a$’p<‡Òn5Ébå™ÖoÐÃ7©¤¼ð'ŒoêËÆåÃiH/(ï.ü t›«ó>üª¦ø˜ãðA„‹bšúì3ƒoöb@¤ªf‹ëÌÞƒöEG«OHÃÓɘZ__ŒÌ®ZQ¼Î|´wî Vl­Cf›²ñO”edRw%Fi†ìëîyú‡ác´ê*§àÈ›:}VŠN§µ¢ÁÂçs°üÚè^`’ÓºeBÂ`[¥†}ÕÓ9!:ƒ¿X' í±Å‹aÖ6š”6uà_x³­ô!&Á'CLW$>à†d¹U„ìW®k›mßA§Š³^ýX-ÇëË ßÇïó #z òÇ_‰ÌÄ¡˜ª°Žôæ瑵õz6º Øw*ŸÊ6jÈùÇâY'B ^ÃëÙ:ðÏÌêª|{ h˜5»·åü÷•,!Ü$‡V÷ÖfŒ2©¢iÚ‰1Éå¯ô±7r¾#:µ©ƒ&€äí§3k mÀÈ@Ÿ+/L4ÒGètAXð¹A~×9)ÖpãPi B §«ý¶VHä({°Éž¿–zˆì²ÓÔ*°ñ´&N¾ôyNÉÿ—RÊôý5мËP|Ì B3M—YZýU„7Œ1”Áݵ,ˆ5îƒMmù d9§ êé>!°:”;b·•Û媘/
-·"±1K ÿµ½® ¡³$ç•>é—9ëO­÷Ïüf/³Ù;—
-øAÕâ4„?Ws@}ÐìmÓà~o¼ßVƒÁDÑ0T¾†C t*…•É Ѹhβ(E#³WÎÖû#”ŽÇœnãy‹ÄX5tb.c_ø7[” ¢ÈšM8ÉûÝ\ež/…`ˆËÑ¢ rXyì»\é®È‚¨ò„p l“ð¨5›ÁrÁ Õ¥þB0iÊ$?ÛÏF‡@}Uæ9žUêÞÛ6äš|φëþ
-‚Š‘‰\7'ÑR:
-6Gô^’Öø*uCf¤Ÿv5S‘ÂUá
-s óŽtÅ“)X…rq”mÎärBÜ®ÚSvp,Uø"éÙ9Æàñ÷Êt\B¿ä¬–_8gï÷%'ëŸóAb`jí§ý`ÊŒ‡³EÂöŠÅs¹ t>!Šb£Ùñêb(•å³èfFêd'Âb¦;ÏñL(ÂmºŽa\{&â‘jÄíùAKÜ@H4$‘ Ú¶mp˜‘«0T¶=.„åªfsM-SÖi Pп#gx_>% ÌC_â:¨[§(0ŒíëÜ@7YýüŠö®å²ò’j¹óÕXÜO $ÅÐN?'(RÞÓߺŸ^é*IŒ@0•ì³Pq:)ùä·+” väÀw5K¿[%méÞw£åâ>ÞS\¦³:¤H~ºÕþ+€0„Y†`ÏÓ‡·)ôX³C&˜ÈË (çJ6Vš‡ç˯[Wz¿j:õöpAÂZä­ÖϯvÕ¿\ËŸ Ñ æ¸²ûQëY]í t¸Ry1Œh6_óÚô„ù<ûè÷­ãóƒ‚ñ¶Ì‰\Ó²óÌuÄ6GÎ^‹£]NɼёË4_¾ºñ_V×IEF³4}èV;Ï~¡­xnDouIöÇG –~2ß+ `ägOçT®‚b墶 ì@=ôãT‰Û…¿Ëuâ™’¤Ë¤rº‡,Ã0T¸ä•eK!±9™';Lúð/‚ì¥:šê2^©^—²Œv:Åí\˜¡Ø×ÅÛ;ªZû„`ŠðËUËÊ]0‘IÁ |òt¬‘Ý»z‚­”°¹iY‘Ì(Iµ•=º
-}bj1l¿7è÷o'Ì¡ÓK>“µFíþè>|§hÆÜØà<W7Ðd–Bn%·cT–H[¢—[å“ŸD¾Š±„é–_š€Ç±•}«HgrMNßñö¥Ë¦F´pcÎ Fþq¼Ó ôù•‹¯÷å®hø)ÒpàÄŸ Ò9[ßås‚(ÞƒÛ ö¾ÞXiÞ䎂–Ãâ¹y±|=þdÎt؃7+ý2“lDXS=ŸƒJŒ–ña»µab aæ*Ø'$==”EeÌ­)_Ξ@•¹X½ƒºÊ}ºf8œž<Iý;ˆp<"÷4›Z÷É= D®E¯Å³ä**Ì9vÒ–çl=e1_Ô›n„€·W¤½pƒä”mkeЛAÂ`Û5lp5·ž!«ÿg¼Üuä<Ž(üû+ôýt$Ë0 Àr‰´ŒCðÛû;ÝÕcîü5«¥‘ËâßÝU§Î*$Vð+šY`¶H<)#›'ðª¸)~Zœ;
-Ú‚ÂóJJO¾ˆ©ƒ8Ø’A“ˆ|Eö3¬Û¬X‰qASŽš>0!0M|¢,ŸÆàx¼ÝögàÀ¨_¡žP¤‹aFvI[GáíÏB\صțx[°1ªžÙÄkÑÕýÉŠ®=~ý«
-ó U˜YšÞÊÆþZ!l¶ öŠædø­³Îq¡¬ÜÈŒ Éifß`œ9õï 9Iž)YÁ q3M³l´Ï¨sû3E;ŠØ£/FÃÎBpÞ% £Ùî¦äû’uT¥µà‡YýïTä[1l˜Ú¤ €ãQvïwÉÐGÂØ'±°±àÓ”{ôך"âg ÖmÙœ`Œà#m}ã™
-™µ©Õ‚Il##­c—@CX!õäBš¤0ö^N‹gDZeX Ðà…ø 9ÔÉfxóØÐ8hëÃÜ?”ØAƒò¾ó0nï.ïQã?é|×Ö8~l°SònN_?³/Z­pV«È«bÙVç{ßÜ"h«KoxcKûZ¸?¹cÜ_ñ9*ã%^Ï×µ=7ò ŒäD§Gµ- ïœÄ[¦¯’—É{j ÄöÊ”äúßÍ TÞ­Öéߦ®8ÈÊ!Þë£*þ>ÎA®kÃ>³,EÐP—á§D(2"¶6“À€eÒ«hPa; a)àx¥¢Ð}‰/Eïÿæa*€eŸ‘Ÿ7»ë‹M—:Q²¬&T»W{8ÇάþY`BÕjÃNe4û¼œ¦3¸ÑC§ sÀe o.§ÔäƆË,ðqÄå+ÂÕˆJóP6Æó<³ásd©%©Ê¨–A5>–·|²Ð<§wúohUàÛ„Ò:h€‘­-|¢¨8ž`w¹¬œÒbpÉtúx/¿SLj¿çóØ­žÓ3u¼›öek)íLD /岈°5 !ÆõªK¬’B“ Š¡=“ÇHmF9òØåÞ׺J:×pê8òˆíÅ™A‡ÑŽšrIY§8%먄Ëh, Ü[ž|'Ý2t>ÄMíÜFÓBY@kß%ìXagy/58¬Ì2¡ ­~ÛEP>ìQŽW7·* ‚ía›g-½‡{îóÒ@ï;cà2Q¨H½Ìmv.ã”#,Û\Î×Nz@…ì(­A—K-ö™
-©Ê÷ ¿|yñŠÚ-À¾R¢‚vA5 œóWÇÐ|¦†ÃŸnÈ0¨}sk€æcÌ šu‡ÜI)0NõDv Š¨ ¹¶Ìë5ïQ€ðÇO¿S‘¹Îv UQxìT=c—0·.õnÇ`1Jh>çnà¥ÆiÎD‰³&@žŸ­¹²ÒZw1.§æí3+sws7ŠÊhUˆÕwsnÞ± Üzmq! v ÅÓ'âêT*íu-`%]j)$ Ýws*BÀ¸6L’Žlõà%0ÃþÎ" 1j;. „ßmÜ ï¢nP‚À{9%ë(&R áõ¾†ßi<Byõ<66ãÂtµ4+Q’l¸­X/±)ˆâ±ËFˆSôŽêÞžEÚ
-h‰åŒIgóñŸ8ÆÁTéÆýæ­ J)ô¸µ$1›‚-@?ŠÍó|Îè¯ÞqŒÛC;­ Ï`žñ°ô,V|¼ðB0÷±={½
-{-EÍG6rÎàr“­Ÿî°"£Â?³¶„E™
-örЇ‰*ÚÊ]QYÑ(nê›iyãp·l% «‹3;·»“I*¸XY—YNt›¹ ?*§;ð}EFÚ3¸ór®È-95oŸÙ-­àÿBF~ t€i@8¯„FX ê·zÑZðåÊ_ÿF}| ë¿_þ‹Éý‘?þÊߣ,;Xî‘ñúÇkyý;!4#% rÌ+óÕÀ¶(~°t]N|‘‰BgX‘¤Tí€%àR¸ê?9÷/ú·û:Köo‰@qß|¿à7Jäz¿r³?^cÐ=^ùYçð8€QöSçùÚÁÞ » ‡H-KË
-é1pÇ ã³4
-õQ@D¿o
-6Næ½!—›’*TŠʢ§ˆ'`Nú¸r¯ŠÈ“ˆ#¿>]Ãa ™¡Ã”yáÙ«áˆ)ăÖî;c6 ¤-Ðú]’ð
-ìX%¸K‚QE<ê.)ØDbùí4Ôð¢nßÁ×”!~ÑÛ÷ Dˆèþ\N%¡÷ gTÁÖ*Á%ı:_7(x&•¿òŠV ÖW—«¹ž’¢T+¼U» óFG
-w+ö&Â&•é–tŽÊL.ÐŒ²ôS½ DMz rãX\ˆÔi%™Ááè¯ÔËÂZm•—¢q_Ü}ð&NLM2à5ÐçOÉL?‹€›â.º÷Pô?ÆË$¹Ž#¢'ðxFÍÃZ^ê(Ôý·~Y´ùûWۤÊ…® ‰¾~2£Ë6‚™]Ü
-×†Ò ì:RÃ/çåCQ—Zãïððãc—¤:ðýÚ•NŒTk"·]£…NèKÓJjŸü;ÅÑv×ðÕ+Æ•Tè-;—¶‘¨1˜ò„Ä´K0Õæ Bs— ˆ\µä°\%€2ËzÓ[â$òÔ²ùvQ,‹…mk¾ðËEn°cål+1Q’ôÇÍa°æƒÄËSXI7ÇvÛª’%Aklˈ€"¦æÆ+1½{ž7å%î^“ó3RP”•9ðÛlJõÅ›ß _€ÖÅŒWˆ§jà²g«Yƶ§”T©k‰ò¹ä…y|§{‘ˆçÎj3Úy-¾èð¼a šƺo%ËI’Ä„¿3ë¢ú=¯KqëJ²à³fR"V”ìRÝëàÛA|¸ôñ 
-6r–ƒNÕ')Q®Ëj%(MOëlB¬ÑOÃìI×!…]Â{2Ô˜óá·Ê Ÿ¼Ä˜{+°TÊŒûlÎ…8H!ö­I ’@…',Îïr¤‹’ÚC Ü(ÿ]à¶ÍOœä³p懚¯‡ I°›ŠÝ™†bÁ¾!¡¡[,cµ'#@åÆJ¢2!Tù¹ž˜y¯]®»8Á±2ø
-ç£3pÍ™¼7R¿@O„ÉòαwbåMÔÄz’}ýˆXH[}R&Ú°tt>¬­c
-ð/Κ•ãgEs4îUð,Óõ¶à{;ÏEÚÝ[…O†˜[­e7WŠ‘¡i¾N—ŒËzæäl§vá¦jÏÇ&™·BÈù…»ˆCRF0ÄÌÁZ{:EÀwwŸ?ÆŠWë³/ÓqÈ45äÿZ\~Õ‡ÔT±¸5T»¯lÛm&˜{é/¬aNX'λ›Mè2¸¶Ó¡äLO·¢ßEo¡åPCKÐ/€í
-)²Ðäì^ønÌÁ(¼pÕôdð¡ø†ß–Ïòhs
-ÜJ»cí7 Ó™°å¸Ä9žb pG'ƒ,I*OëÜ8C§iºÕXir3O‚®„’ëâüb§ùûмrØ{ÀŒÂvSæ+Ýšžåj§L~x*ah¦bU¡_»éa)-6¹mʹÕ|kîí|;·jòôÊ;}ØK¡ôÖÞF>R*0„_¿ÉÈ2æs?ñXvú
-°#ÈQöŽÏE³†Æ^&h¼*NÑ7’åZµFǧ䔷ì5½ŠÔ… Èó4o¶zdbÊCIãü°{¼ŒÌ­¡fâ9.í/ÃY
-³É [o™Ä¡òkvœ·¢qýú‰ÿ–EÅâ {Û[ÓÔYcUøã%Ô‡"†u ‰f>.Hø0£ä+§‹ÿ¯¹ÍÄïãf?*ºùϯ‡¢‰‰‡šI„B%®ä÷L  \ÆœÕJ
-r9˜—ë{¬XE´£ëyg=w?|ª¾0sÿÉ›Á
- ;“Íö+}/1-V #óóã:LÛ”úõ1Ιõ­·ÿ:öë´ iƒ'Ý1‚pÈñ²qÚ½èÌ€ÓS99§ý:(
-€´´³¹Z Â
-‹y×ÍW ¤ˆ‰‹½å9(¢Y"—CÉ{J:ð>
-°µ²×Á 3®=mà<˜/ô|ì#Y¤Ë8y³ÞAÄŽõ@üšo*¤sÅ‘oxÞL.3Ê)iŸS€Õ#ωÒõe;­D®|š€7ÂW#ºÆWª)äÓËÖ1š ‡WÜËðoAÞ­: ù|²q-3”‡„²ââ²K¾Õ½ˆ»Èë²ÚŒvb<*/Ì-ÍûêÔ'®ì‰#K5~L—ÌÜÐð9üý`0€OÙ¦‚ç„hÂ`û½”†'äLqœ|ÍBZq‰xÞ³?Ú
-.Æ ¢ ÆúM^¾ÏJ%@ÁŸ0&×V¯E˜W‚"wdBšÝªkàk2‡ÂÉ™7N2\3+ïÅf…2-B
-©XÅ¿KH8H¶@àõ"D*’ûaijõn«çÆpÈ+n‚>-¨ è…_݆?¸!8I¹9rÂç]¥›w䫘Ð
-ññò$×Ê”‡Qqš8´•øò¢ÄÏ>eÌú"CŽ ƒÕ6ePJJkžšùb7q‘×n¥ïϪ[ª
-ú¶ Ú°Åé¶ç˜ÏW2dqû£BÝ]¶'ÊfÙƦ–¨Àè81ÌÜÏ1ÒïÙãÞ ¿ÛˆPsa)ú¥@ŠF§ (gH‹¸,Nq£ >æMÐP)üŽ'É£<Á.ÝŸ6ËCíMÄy_Òñ°Ž=R·x†ZŒWkÝßsæ{V¾<§Š”9 ϳôpÎô‡9®‚~oàU`³‡ÉH-²ës圂؉¼©ÒlTš=;]–Øo¾i&5 ó²,ºb¸Ç¶’CŠ‡Â
-¡6Žá‘]°†òÒÁášld³ ú·J¯œs’waA0ÊÅÞë<§tÌ —¹é]бÉv”PÓmƒ?‰2¥öµuÑïâXˆw ñ]ˆè“¨´ãjEâTdÜðuÄ"ÈÁÉä ü‚{biZZô®Æ÷ød‰§$°æh“Úùù-:M/€O.=Æ™¡Ám²¿¦òqR1”Hè3dPbÐðÀ³£
-'¼S„ Ðľ Õñ)¨ÞÕò¤ncœ XªÉË =°Kݶ±+€–uSzËåzêp ¬~š>UÓgýî8ÀäCH³:Å£9`Y¶ö a[`<J_ã a_÷ ”9|‡5¡dÆKá̸?‡ åÁø^ab/ƒ
-Jñb`o<{¤«ŠýÇà€”½4c¨.ŒÓe : H òI¾îÄ;_ŸZÐ;|ÝŸ+Ájð+¼öÉœ@qx“]Å_U—hç¸ÝhôµiÐÄ~ÕÊdnuÕ¤–o;2Îã*Žâ—…üo´® ðÓ_YßßœŒBQG-ÔN¸–¿’<6þJŽúË/ȤŸoþöÛÀ.)õó¬ÿ¾¥ÛŸÞ|qˆ‚Æ­m®r&ö#F·ñœÞ,3ìO7µq¿#¨w€E½Mº!k¤ø18…ÂôàUñ
-ø­zab˜:š‰Øh í/¼îϼn=q1Ÿá-Í÷ÎwÿJèÏ7ÇÃ</ñNO¹ýí;©Ö[‚ÓÊÒ©ó´9Z çѽÏi‘ï¤÷æºíwì‡÷Œ*¨ƒ¾«`Åî pD'!Ý
-ÝѺB¾Í“˜/€Ä«RžAŒvD“±‚ØJŸ/¤4—û÷×^þ a\€ª‚q½ð§õÒý¦
-ó_ß~ @P ) œÌ-Wefæ‹nˆÊ¯} Ó‡d´2ñ,Ù
-Ÿrã Q” elžcˆ]‘ßN¶]ÐA‘3¤\–-„-N²
-Þ30¤4‹ÈÛPíœgpA|E£ÅšðÛ€‚·<kºðãÿ0DBß¡î­ˆç´èjDíü!Hº¤Ë´°JkŸY.ô)’«=ÁŽï‘ÏZOüˆž:z=C$ßeñ¡Èš¶
-ˆåцÀÉM~­IØ…¬ÐuH6\“E„àš­ÇTg·p—ŽŽ…2ÔÄ!šæø!?öÉîDWëÒ˜½[&ž2Kë1p[¸ó"v.CAáÛÚû¡’0ð̲Ÿ4ˆim è|ÓKA ‰¡Ê¸ÐË â:Ü¡äh]|° ’¹Ehöb'±2ð:àWšÂ&0 ü¹4ƒ evšzœíýI^ˆj€»ÌË>¥„íÖ þÑ%ªß„XÓ]Å’wÉ}¸`G6þ«Z6 «œS)[|鶅ƒ×Uœò"ƒÙ÷xW°ÓH8irÞYtÎ>­\Á“éã•ÑÒú9…ž×9|nÁ£•«)<A „qC£„T
-Ôõà:CØI^«ì3„`”¬Ýi<EñŒlêbÓ=Òç­÷Åw’Þ©ìç9Èu™¥vÉšÖÄ=P¸v=®
-w
-ÜBr…Ž8©+ šUåÙ(n‚žhñó"Hv«³d/ž—‘ s,¸ `£>ž`’³cv6:j'ÎÖ¶‘ú]=õ‘ˆpgI˳†y ðÖúõÓ‰hNi>ëÓ¥k|±vzµ;çÐñs6'äì^uBà©6¬ ¼ yjÔÇ+3ó›%‡ÔÇ¢²Ø®TÝ&È;ç%LØûá9ð@¨Êb}¥¦ 
-‚ F·º¥2*¸SEm+©Œ¢žÕá¼ä¦2JªÐJ|Å-MQ‚8ŒÒ¸BON‰}*ê¼J,^%Num§›Ê(aX°/k?÷Ãï©ì,rRÙù±#•]W&kr
-à깞Þ
- R˜T}ðW 9®±?sÄ‘ÊÎ:©ìÀÅÊNlÝS™‡¾#–ý+Ž?$ šÔU±ñùÉEg. /r+MƒzôsYÀIëŽÐÔæÂ3—bLžÂwÍËeju*Ø]תGQ)«Ï
-kQ
-² leÍî)`°ÃìòMußä3—yX¾ç²³Æ‰\AP´‰ÿ»öø[EN䢈¯C%´´?×°“H5µ×Ëô|v¯KOFqc™V僀˜DvUŸ’BݘîášèèhjÖÜs‹ÎîÀî`Áe¼¼XvÀôŒeÎFÜc™SrƲÛ¬Kwˆ
-
--dÏí]Ãh¯Lb ÐD ÞÄ®f–ßNûœN¯äŽVÏ´M³pØø©'üüŸWƵy7Ÿb¿VQ„ôŠÞ?«¨i½áïe1¢"ä©ë­…=}];(ËaÏRÙÉCN'²Rµ­’:À{M);‡hªÚºzH‘†
-6Ç–JìQƱ#°ÙF11¤¨YÕÜzY±,å©Ý)±/ÕjOÂÍpBgu'½o¤;<-Ž¸J¤âbëw øÐvûTB¹.g7ÜLBEÝ⋲Q:0sò9ÿðÐNÇ!"
-t7ûÂÅQä¼
-iÊŒi‰\~¥!7Ÿè™Åñ`ãy\%&ò¼Î6Ù"Â~¹‰±>•dš`—< ÊUÔ‘–x÷\ #Âü»ŽJvNC q +UWI¶Qû÷fP˃•¸?•É ˜†b¹€"Ö
-þž²y«‚S*’ÒƒUÔ‚]ãÝ©¬(‡ ‘0Ýö%¬¶6c›òþ7c䊩›Uˆ,“KòÖ¼ÎA³X¨-ož¥@³HLqKn´cŸ:Š:C£Ÿ<²Ù§°ÒIµÌ½ê´A­Z¬Å…„èWHR<PШ@\ÛŸ¢å³w‰ñ
-¤È™ä¦÷ð¬-+üëk@ÜàÅ ÷¤%
-üöòÏv+ ˜Àå³U^…”?xs°‹›¸oÄ  ãqíÔgÍ—[UƔɊ{}¹: ¯Œc—öeYhÍ*ATžg*4šU‰0Ö’îç!‚—ë~6 œÐ'à5lÅÙä"÷b ÆÕÒpÆbufùQb°&°rˆÂˆþ9À†”
-zˆ‘™KÛúfŒ
-\ÒÄCh®NÑ—õ‡Û†é]%¬>ÛFߊ)L„©åi½+
-ü^Z|(Iâu2JGÝŸºi ì¨|çþ”@¯ Ò6™6쥼J˜-¨É¹ï’s“)`–áÜ7xIIJmÇäÁøhWñ ÿŒd>,ÐÇëRrÉ1x!ô·ÁCþ–/ÎRWQ˜òÚQþË5 þë=:šc%+ËóFÛÂ5ðVmÌé ú¦®ñ“ýO±_
- p“åÜ:!ÙHt»çkæ^IfÂC( ïï/Ý‹BåIQ*”ìS§Oå«ídH¡¸¹aŸb7%ˆ![+‚  ç÷DEìm Ì,Ø+“§­É×*.‹W—µÑ³1âOEÓ$àVòDLE¿ŠŽ°rÔÔËè¡HÈ@Ýd
-u°Ä°òôý8%´ ü2¼G_„É´l_ªé!@¥´.
-p1û)"•Éãä?‘çH+,:P‚*¸’WäÑ…n3ézdæÑJ°;]˜äéöªÞq!\ÇÿÙ—ö:s%° Q¡6[wX Öâ×ÜFű„F²fá§Y0E
-éªSôå=ÑΕñÜ%KBmC&¦éà 嚣È{±hs¦ÉÕú£4ÛGéÏzÀ
-‡82$ßÛìÊ€iÈ×αå9‘…ŠvŸ³èïòúõ þ%Ê;¹%O«a©pyn7ü÷%Õg#C‘+Ñ„/ÂÐP¼´g’þCÑÇjüzøÜ7Šnô롈u
-¤»©÷ýX%I
-RÿCѹÎç¾QtãµnEÆ/]xù‹ôrÙ‘ä6¢èô?ÔZ‹ߥÑ^IcA€÷o¬ÖJôû>— V«2™ƒ2 -f¦$#nÜ, •›Åì)b“øÝÉ.§’ÀÑ —Ÿ˜)ì§ô X#µà‰1 V0 >ç,”É 3@¤{UQŽ%Š‰iYY¶•yÉ‹ÞF þ©ðQ`ÙÆ?J4?…«ä—Û=ÆHŠÐÿDȤf64¸‚g÷!N”èß`ÿaGõ.†àSγÕÆÏ3†j¾¿W›ÿ<*‹TdÝÃñ¢o˜M–oF< mÀµŽ@4uÐÙÄ ¼Ø,©â’0nŽ8DnV#­ˆë$>à€vÇIj¥¢¢}‡…䥘˜8K¸
-¿”{œÖñ\ªjXJŒÍã¨cQÅþâ©2aÄŽjð—+n9œñhM‹ÞÏÒ"6›¸,V„¸5*D·¬Q }…´—Ûe¸I¾«>æ› Ý.§q05EÃóAì‰Óº0G`&µñØúþ;Àe¡]Íçåç\ òw=š%‘¸›³vÔŽŠ¼˜øÀÄ‹¡B:§Î
-‚7)ûŸs
-Ë}W¾`›X
- ngy(±“Ô«Pz¬ñê3¾×ZZqG¹–¥ÄTDPTìËUøª£Ål'Ë®6áà2¹˜—²Ö¶¶ò{Nõ}ÚÙÈvWù
-EƒOìOÙ]ä ˆÃ{ì /Á½
-
-Cö2>%ŠMõ2¬?ËÜšBhíiSô1‹ŠÜpߌ›¢QÂC*.$Oi¦‚tøõê•û(ÁŸµ*‚—š¾ÂaR~”M,¡ùgžïÊ07~XáÎâÉÀÔùžê€ù£Ï’Rè/E=¸( ôCBœØs±ý¦¨ÉçÒ
- §0_¾)òЧ5pÛÝÀ¨óÜ ‚u~¸ÉÕ%&óímÓ?ŠRT{²½ÍÃ,Š]æºúœfiº ÿípñíð<Œ¸J9
-Ôw9ý9³î¥ho­máì¹ÈCÿl…¯’ŸX8{¾Ù¡Èp{kÔ°)½ô²m Ðx»<²ÔÞ¤\6JZQOaæª nHP7_vi3”QÂIY-œ³G!W˜‹ÿ2^îØ•¬HAÏA#Ђ¯­65‹çªçïö>ä+Ý$W]£ IQ Äçœõ!Ãì–Ep±í%H†*XWKàÏC]¨}À*ûÇáÊ "B‰IW:=ýuPýé¿SHPkø#’/ Z}„ieah™z÷Z÷³pü
-ùçþQ«ÅÕjØ4ˆ@¶
-j
-ñY·§ $ªàºtPnO—(*PÈØ&̓2ÊÄsé;Œöé8CA{T/–rúy#K³Ð`ægåÊü§8ÌëdÈ4¤¾ôÄ$ÖX‡ çy¯Aߧ £¹ 6Ø«Tãz2·§ [¬‹ÇQñÀ£ú»AÇ”ãóM4'=çí ›DŸòôVÐÜæ"ºSàž+/ey úy§v«Ä¦5„Ælld©>X†i"™ƒ~…Çt¾û
-¡÷ÔAìãâGñƸÁß©l`42ÍœwH&g­„÷ü¿Þ÷ëP£“7è(ƒ/ÄÍmˆ ,ñLþù«"òᘠ8¸{†Gêdz¥&ò3¥ mþŒðg§‰kSøJPéõŽ½±äáܚɳ–éshý#[@Žã÷§’Uy_'¥Ï^Ô#кÇTRB&û\0VyàxvWÛ¨lòSyˆøÕ_ÿ9z(d;t$àÝӸݎz3è×üFê5ä_è³È_@ÞBɆ_= ¨%uÚ\%bTçÍÖx™¸: ý^=„âQåVÆu"°æÑûØjËO…¯Zj¾Bk±ËaÁÕûdFšhÚÖW
-‹—¦ºBzIbihxD–œŠƒ`Ì`_ánðõªi¤¡hæNÄzú~ÒVYm1¯DD«Âx1–}!ÆÜNHÑœó¨­íâ¥[EEÃô¸FtxHAûY™ö3ã+;ÐkD>¸`m§ RkxŽ£d€6¤2Ÿ õ·z]Ø­P ?5$ãR–?fÙ;£óþž™¹kšÏ»*ÆE/¤ L>L‡WÌ©ìTÔÑG™ò±´äbÞ½dÕðǺ¥0a“d)Éë;ô;Þ™ôµB’1Ž¦–Š§J
-t²QòüÌ#¿þsRŠ°etvxÝoA‡F$˜«u6
-”"›XÙ¹±žbE½S¯^Œ"1Lül¶_ŽÄ‘Bé·Q~ÍlÓ{úØ 0DÚV³šõwz®ëþ²[,ãIaL ?~Eû)àT›ó.j&—®–³÷õGlrC/üIj¨ÉHÃ¥ÝL~$Éðn7k™'Ö¶’—>Ybʧq…`f¼;Š+' â§âãI¿ü¤ýíï[æÍ'4nÝî oñZƒ9$diwÅ-hy ½+
-’bƜݷðË
-dƒõºR¢;ÌzÚxa†ú—ÁHå¾›‚sÚ%ìå«!“ ?ýçµâ£L³inè\ þ°eK«)Z¯¡)ÜC¼)x ÊG•øô>!•„œI…£vU´¾Í˜“CÄdmÿlÅ¥ÊFÙ
-(IEÃ4QË|5ãi+¹8/r9˜¦OfUò†žº2QÝ»i"NÚ~׿¿¨è×DúDïb<ô€N÷¶`/¡•é%¶§ ­܆¤Mt"D¢cŒ¼íÄš† Y…‡D­Du¡—&J‘ 1+AÈ•œ¥YPÅàN
-©(œ>ƒÞ¡Q$Fëî
-¡D=º‡
-ñ¶AËë3Xé·µâ'Q“F…Ë ò+„NoÀ ò1')dùÊmuW’n²Ÿ…• z‚g9Âj‡"“táÂiZêbÆ$Q¤pžœOTàGu`š¬ÆaîçûA}JÖgH£24 RzÊJµÛjäSˆ^ÝÛ@‘Óõª[J YÚô+3R(XëN*Ó÷AËlZ €•ÊB¾Vùf £à´î.P‹E ­Ë?P+)ल¾ƒ°ƒ¬ðb;ÙÌ iò¿Ì·¦èœœHý‡çrLÎéìhšê K†ömJϬ/ÑÛ‚Fwë~ÿ?éånû(²À‚§Æ;PYM6ãï[ë®â&]°/Z†Ë­BB~¹Õ—O/ªzuúyªø&íE.¬ùüJ²iw.à÷Ñi¿‚.­Z²òwîã!$"i/$hsL%¢ry†ª”²GœÙ
-%ÃÐèpÆRõ ¶ Bc~CôÙsÛøqÒ þK¤Gey(ô%&Ì«IŽm“… (EÊš«I³e5­§OÄÇ.÷"oc+d:Ê¥[· $’;3 £_90•òeÏŸ”‹¦^> Ôš'ñ’êïD l±íÊ^.‹¹ª¿‰é«,k)[ŸÁ¤»9¸jéŒä˜ÍëÄMɆ»ô=Ç™rÙ“Àå`º{«Ÿ¼5š2Ÿ(`%0OÝÑ8Sæ°PFh”º$sÍàSEK¦käèU
- ©Èyî®ÔA §…F;ˆŸ_\¯š!¨HþzE'ÑekIq~uŠ²Ž9ªý±;‚3L–ëÃW¢€“ÚåM
-lŽ5VÄdu«ëp9îWªYSèG6­ô¯¹ô!„lg®SŠµy líÌ’¨7=„mƒ‚€©#7fƒd c‰‡ Ÿ$ózŠW£€2~è£Þƒ|lzƬ£˜ˆÎö¡…0
-î³ÙùOÊ|Ê1Ë^hRf׬Â΂£§håƧjÞ
- Žè<²&ç%BÆÌ@›¸ÁfÀ{Œ’ÓX È—Wü5æÐvtÍöð6†m ^ÖŸ²³2 EŽ`¯B‘}¦ÄÒf×4D­¼ÚÌzT HM‰×Üu$ª3½ ¿ü„óô–܈#Õ‡µ ~’ ¤¥ÄC´Ä
-:'ŽŽBXáZöÁ 
-ŸsX#ôŒÏÂ4™yF€<HYH"ø°n‚®µ> èÆë™}DVHæ>Ñç¹½ìÿ!Þ*-Ž´¶èmÝ$D_›hîÏ áƒŽ™KøÓdÒX8j9C*°V¥Ùþ\…>Aàg‘3
-Ë œÜKDGqÌÆ,
-H‰Ä—ÍŽ\¹ …Ÿ ß¡Ö¤ R”H-g5ã €ƒ
- Ÿ ¯á­xócÀ.jéUÇA!ô<HX¡°MsìUÂnÈqSÜÍÕò$àÕ9½Áh[NˆQT¾‰ú˜÷j2J«åÌ»—Á´ñ‘Ù€ò`ïæmp.”þò¶¹,ÌYBÁºËºŒbŽfÐÜ×94©“hd.+uãÿÇP±d¥^ø³RQÚ¼?‡>4íµ2 4Ž ¢h¾ú‰Ñ9ŽiÂWBDsFôìgoaI™ZñxÎö¦EÇ¢N¡»èqi>!ÃJ0D³˜óÄ?íÆ]E­zÞô}&'éËIz‚,!m¤ZÌó< ®D‡l'é/ ¸Êä0H¾*ÀDÁBâ±ZæI&xiuBjçþÁ®")…z¡¤íAz†@ùªÖÖPO1à:YÅŽ0XC|B 㔊$1[OÀRùVô â$=ÔÕRJx{uLO™‡ˆÃeF ¼têÚ|B"gÉn½®¤ø’X…Îd 4Ù»—³£ð(5-§/ÿ”r†h¸p'V2Çç $wZOOIœVˆŒKªyјøÛ‡Öe&ÆÒÓ3€8 δ!éá3mÊ„M-Œ¥§´Ó2ÏaÒY?PÇC7oÄÿ™9ÕS7hBò“êô äœS&w$ÑhÎiÀIÚéÇ&Äp€FŽö ých‹YñR4„–>Æ1ÎJt°n‹œ³“ø)ð•HÉú­Ò0ê13Ãf0!š&ø”ÖWõJ¥*,ì “~hõÔ²Š‡V2?Pù½DÐG1b:rÍ}Írß™w’º<Ú ñíž7®&ô´Ü™"6UbšPºSŒa¯Î!AF‰•–¥ìk³ô¾Â&Q8io`:^ÝapM"&À±,
-nÏù¶@C–ÃCd×O –‚Iùf=¯ú–™:JüYY§|ìÈø+?Ž%í
-È*’i©B"Gëë½À¡C¨çr0&…ÙFßÄ'DàK Ã$Ú+;¸‚¨ºÅ%ωÉW‚îðÞ3 ЗU‚÷-ßoXÔE$%iö­psí#·° ©i;GE7MÞœåÁ¬e£ú1ª<Æpéó:£\H¬cœ `”Óêì„t ÄÂ7}ʲՓdAÝucЮþñ2Ù,·‚èèrÝ ó°4äU· eè½à]µ2 ÃïäeJù_WVw4D’¼SD\jšÖ¨¼VíbÝ^ƒ3”)«.åtÛUü>W}Iuõ~€Ñ!´h¹i°³¢¾ZJÖÉoŸÊÇ«h!~ÝÎDõú£jhüÁA@°.ÑÓãŦj‹­Qc¼ŠAH¾º‡¡ßÐÝêyú¹)QË߯b¼RNê2ßýž¦è0&¢J®ØNå`†y^ï>Û•(3.mYñ*Ú
-¸,Í„4åXæf¹Ã)“Â^bê_ÕíX'«+ríN"Öæ9…pÕ½ìÞ§è|²– BÊ{}R¾ß/:`JK¬ 
->až¢Jv /O2£¦Ì¢‘ØìJˆ>g¬u¿gχ&%› ‘PI”¿ Ù.Ü4þͼˆ^Lñ˜5 •æ¦k|ÊÄžš ÷ §£ÿh¡MjÚ€R“w-£ìƧ­P<æz,qòO…¥.RS2bץȹ‚ÆDº`ˆ?»˜|3t²Ý¤´Œ9.Ö¢ œ¬g–¥ÂˆŒ>ÜmC\DjÀ8æ ÄnÊÞb¨üÕ9|¡Ç^[ÕÍ9à±Y|t…ýÕèßæ+ Ô1¡ b1D›ñ£ø^óßhS Ä(›k~‹KOZÜÌ«ÑÇröG[N÷ôýt,ç©Ûy2¾ãÈøVƒ4ñZdé+;R‘[B~Ö\áÿh¹&Ë2A¡[+;ôBù˜ÚX_Ø2a§ÚF~0²–dä9lyfv ²˜Ê"7q»w%ï-óÑ£ìŒ7-Š%‰bô÷é”Á÷ÈFq†ÐTð .Å¥£_c¹ ‹º±…f6&Ïè;Ý”—;—š²lrRœç°Áà™ÔMq¿¶l r–aqÅ#HvˆÙ„!lÔÃh@RÆS¾å½¸Åñ&gŠã=(1–bú™ÉVÖ:„嘖Ü24¹ 5u§ªÀ”ë9gÌmýþ„þ{Z2Ö&µ†âá’¬˜eü?õ¶î@(¡ Ø‹PSb]œŸÄ®¥ì Ða(Þ·×=:ºÏï ‚¢Õšì¼hCR´Ñ…ž—ybØç2­U&ËɈ%;Ú!—$_ ÖǼ
-:Gšw[| x¢¯ÒŠ­¿Ý{­I÷MébWi%#´áòlhÎhIZ Â<6×JJn›Rü¶«×¦ÑôœVd ‹[K"Ì­ùj ¯%©èa>V*:ò¨Î
-PBó+»Ý…±¡ì!—ܵŒ> íå¥&ÿí “s÷“‰çó?´›ÖEˆ\3·¶¨Œê©¸¡»‰B×2¼°êÍ¥d·Âä´ @Ûf‡’äZÓ¿Oƒ6x¾îIÐ)lgë2‚ᥙDVêØ5C:IŽÒÁl@Þ‘kùXÙß a¹ƒÍ3‹9Ãò§Êø¦ a`ÑR6›:…ˆ‡ dÂJ ˆb¹Ëjb‰dP\Ô‘Óæ9~Yì*™i=…@è „
-ô3b\ÆÈ=`Ç®Ni‘-.æ‹— ²êÒÆÁÛˆ
-^“ï³'ïëªÇä”á"`½5¯"<&H‘k¿ÉÛ: Ö‡rŸÏ95Íù5§æÛujâsrN£@ŠÙøz$­Hùr©·ûä±ÃiH-œ¹ûÇê¼9Þ*o=²%ŒãUGÐ÷'Þ3øâög!3æ>кqÚí’?.@Ò6òXäåo’ñãpn[†ŒŠt‡‡ãyB¤XHßvácÞTOÄwÖ±
-‰ê¹——cÑ“ƒñpѤ½$Ì)>Ýþ¯¤½ ßË.×$3çä"]rÒñéWºƒ'*üDHy™ ”r…°½¸zŒéTöHU&5´oÈ}:Úã]rÏX`’®}i^¥Œ—¶¾ž§N÷DÜ {æÇÅï –b~„¡õ5Nb9ŸCx)ýH9m! ZÓ|¢Í¼·bRˆà÷ÖmqÓkI!Ó×Uj@§E¨Û{8‘}µ0_Ö5 .ÞiHÏ
--IÑÆ£) ‘£·Ó¬z¦–P5
-_VQ7ü$¾Àç ‚½’æ}<z@˜f»Üü„à¡©eàÞ’è]VÁïy@¬)¥2Hr«±îaJ1YF¦­sB§©ŸƒuÓ"1ö`ï•_O-ÿ½}ƒ§éþ`é£Ât{¡æ¥Z#Ãêôg‹måŠììOµwBÈ9V_eŸˆÌæÔùPb*g_äÁ`ÜF—Úk&Äž?,³šŒ2C+Á#X©hIÌ‘2móР足Üð[T™6­=†Ï0pa±j&¤ÜIÃVXçs´±Â7<s"PQ^“PŸ9œ)Ož™¦K÷
- ­ÁRtŒ—ïY
-Àæ×
-®uí0\ éd:·[“F‡§ Qݼ_ËŽT°ÝîhÇh´†)¸8‡¶€«EBηýkNmqˆÊ®‚YluùX©Ãú%7bC>z%‡’y›bãìl*pbm]ÅÒ µ²ß}<CíR_þŽ|{‘"XÞt#t§ù /ÙÂ:³£/ÂÁ¿á”~½ùÛ?ùÌÀ„Aûd¢´Ûoéö.NYï…¼ǬŠ€y™§¦ˆ±1ŽŸVœN§ÿÄ¿„QOiØ(º6j¢#ìJR–¸<!0P–Ÿ¦%ˆnXat†"x{ùñý•øVâå<¿ÄSûñŒü_@½9BóÄ₹ýþíe\S=p²ƈ”»†(Å…Ûˆ¨D™J/þŸŽ.ô׸q÷já÷{0AÁíÍ“äß<¬†ö ‚O0W=ÇU'¥>Ì«ÉœŸ¾iŠü·çbÿ ÄÈ(C¢˜~ŒŠÕÓ}MîU!æÏë2Z_|Í
-ÚØà‰`”€¤`u š:Ê€²^¦=F2Õ 1X°qò.óéÂT‰ÙIÌáÅIŒ¡8¶WCøIk Æÿf¹Æ
-r‰PqF—6ű_A(ˆuGKÆs Q—mŸ@ÀˆM¼\ÜÜDYѤp
-µÎé„ØËñ—dýž¿Û9—6¨¹$H•`Ô궓ïðó
-yÚÅ×!S4ÞA žü=™Äh yK±ŸÌUwT… s ûÔŽå"²·^h†mþ¹Cr v(ÜSœkz.,ÚÜc~:g5 )Q¹c¶¤u˜¥yàÎÀä5%KWÕ£Êð=3|ðŽ-moG~±ÝÁ
-Yö½ÕX«¸HŽ¥óvLS2¦
-^û¾¬d V@Ò{‚`Õˆëk<îá XŠý8µ ŽAr.Ë)¼b4àz/™e¥ÀÏ%Zl“˜&o’>ßhÚjír@!¿¤ÑX
-í@v;b•o > Ò¯œ˜›õXãÝ Ææ…Ê7*nAŒ6Ì’²u
-Šæ]ŒíœûsÖ^AÕvMš‘%Œfà‹e‡p l3Å( ½Ž˜Là °Jî‡Ó*‰œL_†ÍKÔÄr&ºî‡®f(:!
- Ç&m3mŸàÓ–r0Ü â(fDA4Ðq³·EP]6 Û¾n0âxš^‡±¸¸æ¯Ë2ah€h¥ism{jæ£WÝ“yhÿÆs‰La¤ópª-=/ÊÝ­,òŠhå>O6EÊIÃ\j¿³ßßXô×û8¼2£¯¿ü°tˆ',F!)ݵŠ•
-ê‘ãr7„ÐD1`ã@è (1T PÛMˆêTÓ˜=L ’P²lÄ}¸ÀµÁåÙž³FXõa/?t½¦1­awBì*nf:å Ήô¢‰wfŇFÄ×”"Í×Ò™,É.À"ñ½ jêÊDCÚ¬ñQ%„±ÀL7 ÄBü6C«û]Èl9´¿ÉÞ©†„c%ùO¿„ØÓ/%ôι4‚lðo¼¼ˆ©Ý†²h˜h\z+¦sÕ<Ìb)Ž] •Ì`ñxGó#&$“@75Ìßý„ãßGb´‰£¡ï<š¼í4í ÞÆT!Þ‹¡£Ð! g´"ع º}[5
-Ø"»UŒö€w¶!¨fyS?6äï„Ž’–i›¡·‚£_ ÚEçÅðS ‚Gö oï‰Ö#w–?_c«Ÿ dj) 2Öó
-j#´nñ2*RJ>÷Þzq 9<§uš$P=‚ÞÈè$×"ÏJ'i/h¬ÀØÑØ»T¢­c°Æ¸õÖ@çA‡¯‡6‘‘+²D¦ùpÐÞåw!>üÁè~
-=E ‰IÑ?P0¾˜¡9rV±6 ÜóÀÇ!R1ˆÎ&þ×à'¹¯ýW§g³ýQbF)ÛÞJ21´«éKéüRu¸-í›hó±QqqÞºA­šoÇ\&ïóñ´)f‚v¦}küòâÅPÍäÛ{†o!£u¡$•°(…Ï£ÂêŽ z&-Èi‡
-J5|2'R‚#B6p„R¡5,
-y€©ýëÜÌ—ŸìªW (ÍÛ•™o¸Ãè"õĉy>@0sX"ŽN!Ÿ£î t”JðÈ’?üÛ4¤šZ 6&?¼Js£iz9õûT0x<ع߄}«pQ l¥A ±v·Sˆté¸÷ËÜx·¹ÍŸ÷¨Û_‹sß– Ï>
-=ðÀ s[qï0,~q#ãŠüJ2¹(Z4,𫼸}ñü‚nGËT;<^
-ƒiËWöù„!ùŽT¡n„Øî„EÒpSËaÖCFŒšÛ Nì FMÀ ¯ÕÉË/&~¤\’¤Oy ÆHò×F%6×ÂoÐJn°§#‘qq
-%î°Aü°fŒe¤•PǶÝ=¦®%9~bTéÑ$©ì$¥v vRźftbË‘÷™Òèžo4{vç/¹'¥<» ·€ü›œ•AbŸ²HĶ9 Œìe-Jjm÷Ã:]!ÎjÏ’úwÔ˜´>ð°ÐDH=M³‹#ß•cJÍ΂)Õºž¢AX&´…D{ºG©ì¬œêŒ‘pûMû¿A,»r.|K1­*cT^[N?ñKØqÆWb9¹M0‹‹1l•¶á¤¹å®c1Øl¸¼ãá°XØTJÇ­:´ÿC{êã¸ó°ª8–ßžò¾‚¿Z.ÛÁˆ¡™f5>pG¤‹SÄÆt>qÇ sÏlÎaÐ߸Ѿ÷ K²Ø¡¬½ôÓ $, `8‘ôš
-J @w‹— æÖ”{¯«088ò[õãB`¬1â±*­ùyJÉ ªò 㴌¤Y
-î;1Žåw1^^p@—¼
-ø90BEù7ü1ÃtïùÌÎÄÝ´þ5o‡€~¹¡k‘?þ)(Ô¤-ˆR¥~ÆÅ€«™™mî J‘Ou^v
-²‚íï5%¦Ñ³™Tª`­á[v¢"ÿ‰‘Äw?ú+÷>økog—Ca³CÑè§ý¸ÆçÏÒ\>ÂRˆ6±ÌêŘu”ÖI?â9>}5EŠ%[~r¤ v–Ýžcá4zœ£¤-^eÊRÓ)³IÝßÁÔ)Á<ÂB!"BÓ¨is!|vRaè‘‚¥=ehñî2ÈÆóweg2[™9ÉÞ•ipJ2.°D©îÓ;~z2œý<ýRÂA áÇ
-ɇ Ñb-, ¯UF³#ÿŸ–83d´çÂIX÷ïDýÿ¤ ·¢\‰ƒæô¥”£î£ úl8"lµÌË4¬£êâ¹Å¥›Å)5„T÷wè""R2Í·#¾mD£AØ=ƒØ³Óúïß|ЧÖÿpAº ¼BvX†x_Ýá|É8Ä+3ÏÒáòíé2ÙÐ þL˜Ü¿LL=ælƒZ¦@3#ÖÅør)p“\nD¥•Öåðû5‚`ØÒ‚xøßa¸Ø@jÂp¿/“(:¿Ñ$1lƒ‹9D)¯@ËbÝGÑc(=P”šÍ³°j™Ñ§qì} çÙ%+ßz6‡Šåó"¿]å\qC礯×S›üÇ¿XæüçÛÿý)Ñ‹LE«¹f¿±1¢¸ãZVBpA¸zÇfÃ\ Ù†ÉrÆõAÔ螥½Ã M>iT}C¢0Bþ®¶MÔFƒS°ï0?0û„,š}‡Zc—
-ƾ„MŒ' 37-ç6ô¦DbGU5 0+Ë—¹ß”SP[îO·i®¬ñæ—‡Wipxsk‚[x“‚¬§þTãäS¯ì¨HC…žXèøáÝË!›%EÆÜW! a88µ¾ ø¹:U¨©¨–u©1~Zж–µeN¯.;êÒsï;—Éñns™@ÿU—IöªsÛ‡{¿Þ«ïÇ#:¯éA´Åñ‚fu¾($",m¯à Ä5‰£I³®# P¡Ö1šM"EYvª*Ò‚×Â;ÒŽzV’Qž
-aÚ^$e˜]Ä> Ô`uÎb( ÂÙJx9¯4§aUÜM“ñ6¤È%!œæ@ì(Ì -¥Ôóñ;X"yÆQã¹MÁ(H SYLJD‰G
--ÛÃK@r“$¬Jè ߥAúTí¸Æû:ôˆ‚†Zíd4zÂ÷u´øM«ˆ°#Q–ƒu÷刽üRAï;—>p6S‘¯G·Ÿí¤œäƒí‘œ¹H/GŠ×ªíŒÎu#žJ^ ÙäuNÖßG}9Êo')¨"×ÄÝš7”é¢fÿ”ç™ú(Ån†S‚¦“\£ZžBæ²÷²!U®ŸK@Š²|53_d§ìæøjæ‰iöeäæ ¥Z?ø.‰8}Õ€Q
-@Ëù!±#ƒ×Å+’AðÄëymª¨­†íEx!‡¤¶ ¦; ?Ÿ@3Ä0óø=«``‚±Æ|.”åìÑÊz!5ˆ4ö&™ ÏÇsRb#\³AÍùÊî* ¦Nì0Ç8%Žr¡Aeû»üC}jÔ× ÿþ9‚“Òö:«a“Ѹ&2›gˆîþ¬n È„Vã„°˜¸â{ÃÜHЋ
-–õÉÒ†ñ;fZ±âÜrØY,¹¾Ö„ÎA¦ÛÛù ¢T ­ÌÍCdÉ? -\º·5FõiMj†xýð1×Ôm#gÄ~†š‹ T´)m²¤XÚfˆµKjÙšqÖg ý ÜGØx½oý,Þ,uI”§6~Ëï‚Äti(9>Ÿí¼
-“Ž‡H1æ~ô&ÅÄ6Ê6ö¶!3‘ jhÕOs׎mç(¸Š_h‘›¥¡—i²òA‹ÁÖœ#}Ú
-‡ˆyi8âˆA˜„Ä|Ìl»©ú%¶
-ÚKî`.Nħ‹ß±¿CÓ%–ÝcqaÏ)Å@+¯ü0~S€ÁPïfð|½¬MŠsVGŸRëÚ;_8ß>#BÁEÊý¼Ê…F¬PYQ„4¶»8!æ2ÓX·h2+\5Oßatà‰NûÒ1ðQ~SóžŒ /‡Nž c~¢|Ix3\Eä‘1”sø.?È‹##(Í üNÎ,m†»Ï %Î2ì––ñLFPf”A´£°|FÖe¼©}÷ WÃ,D¨0YõɵßíÃ×$º Ø¿¤|É’®žÇµ6°$2¹?]PzÅ:’ˆpÏé@é1h³â<þPÕš &*äÝŽû ÐçÐõ?ÆËÉ’ã¢'˜;Œ ¡,÷E¤ E¨<Z·Èûóy.ø•QœÀôxgeFx¸{|=`ÞÖÍ ©0Œ±ƒÑ«ñ>Hùœ²Í„àûÓ*» Lrȹ¾lð™NФ—TôUN`hó’|œ$ªl.›@"$gû}ßcg†ªðJsõ馢ÐíÜÌ©8q»ï/³[·P½Š»æØKXˆr’«%Ïq½œÊ–º·¸8ë'YFBÈã™ÙUÖÍæÙö‚vóœÊH† ò©õ)Â9OÛØô­zÁ¤*¥Õ6#tŒd}Š]7KöK^ÓN¦ÒQLÆ´Ñzå1¸ÚÔaÞĬÐêâïýõÃÂXd¯“‚¤Ø¶Ýø#Ð9€Æç>
-æd|HLA:\ŽñùfÁ9„§Îµö~eN¶šÆ•{yz‘‚²#…Þ·+%™»”ù¥¶M Si|ZAù¢@Ì!)íO ÀŠêÅu’ÙOû6Á3@öþéU¢`"çëǯWÝkÃW¸­'+oU˜M€î3™iJ Ñ©7È¢ÄÑñû9kî·1Øw¾ê$ñ½8Æ$h‹D~;ªS oõkåÅOï†l¯Ž¢šˆ ¤Ò
-Ž®ðòð¤xu˜Éñ©Z Á …x0*úê– ³Bî‚ðw½b¶Ó—â¥$b)µÓ
-qŠŒÞâz—­H"‰ l„/­0r9¯"Sþ%@3v í¤Ô]ŸŒ&‰¯óë]E&õX=à{ƒТ>Ñ‚¦“ñ±ËœwKïçè• í ]¹½ÆÐ΀žW¸=!<É#R¨þ‚f‡Üæ¿Ø4h^Õü7×9”ÉgLć4à«Šî¹LXÆ…Ðœ¾:•4¨˜ çOb «çaÔ×ÓBô1ˆÏeHÁà°#­ ˆwRGn½¦˜¿ƒ@Æ×µ]ãSÈ9ÚuöãÒ)ÅžK~ê×0a4…YèVS$4í¶Ý©;ŸàJ‹üÓ'Dc.ñ‡a«Î®é†DÁUÃc•Çqg¥ï\¢?Y*ÿ;ù*_z•b½p:[g}/Ï°Â+™Û*/P$„øì|´T^B$Ñ~ðšçw)dX,é¦í9¼K"±àÒ7:jÛ«þ.&Ï6dȳ»Îbúv¥;=j¨Åg`ìc:Ï“ 3m˳ 8;ƒÚœK LYûUŒ¶Ì;¾]<‹,Úf{“y ÜŽpHÛ÷x2€N’é>•-ÔURî dN™7@7™ˆH'´–újé¼ %gòAæ‹­ó匣¦ÃÒùÑ 2¦çr¥5ï‚ñ¼<MÈú”÷ŽU—lnë¸ÃÁžþ—{½ëü€;銽Ýë¦óƒƒ5°Oº-âï:/H-šùÒ^.ø®ó’"{KA³v
-$™´+Ìy°†X—㺚S+‰iZN½S%€ @iÿ‹Â¶ÙÊd±æF‰ó cOô¸ï‚ŽR ~¾ Š‰×‚“Æåü iŽ’Û÷§<¡‰c9ó«4ô(H,ää‚ò¢“umxÔ¬C
-'ý´ç‰¹©N\ãÂóK¿›Ìµ!F(2¡³¹í
-ÓyFýéLjWw×Ćæð„Ž­Ž‡{8ADËl;]4ÊØgÇž3?åµ¾ ÅQ£±ZŽçEÙ 9cžCv—, D ŠÂÛ¥›Áê€Àw—ZGþší4@¸¯ a#(p4í¨ëƾ ›Ùíì]ÌDÒšµ‚Í—G¤-ë{͘dDÑê®±‹ø;ýz¥zK¢ää4+Œ|"x¨YO¶}Í´l(Œm‹äK*x8GóB7¿·$ÏòC\hëbqB—\F‚ëÚI /J,v/EÉ]»qµí¬Ó=þê¾æî}^†pÈ«ˆYei×mê4ðìIJ}æm|o 5›˜]@ñÚ´ÑX¿ëUø*Ñó+Vá´ŒUY¹ŒÛÑ‹^Œvï7I+ëÆ^£šÓÊà~üi änžq*Õ¤Ìë-Ð"f¯¨´S©R
-*(mèi‡Ž–p^Ô÷«¹YSÌŽ{Ñ«Néœyð{ê’RuªÊ#O^÷ÿ=óÖúÇ¿ˆÈÿøÏ?þûƒ·Tå1Tt¨{vW õB©û÷ñ–1¼TÇ6úFÁH}8wűµ ç@z´ô'P½¯ˆ8âÅ:)SœEVÌD}­;ÁbIèÿ/“ô8n%_…'à‡yXËK¥yÿ­ÿ@&JV5ÊâÛøIŠ.
-¥#Ã*oÚЕÉô5k‰‹’Š4ÄÀ(Y…!í;|å j2ˆ”†VdeFƒˆ,!ÝÑ—üÝ!~´:dYg{ü«°t5-c$HìeHl§G$=TQ¡}áÅbÉeSƒ}9^þ‰‰Ö 6D¡Edl üB©
-@#['¸t'¤ ÚÊ wЂ@?lÐÄ;„WÉ 7îî%dÉi^¤D¶N$Æ¥¼ëƒMꔄ)ó–ŠQ‹Ü &̾ӵX„‡¾[*{À£ŒšC$]ìfÉ †¢ÀI»>„ ´Õ/¤uªêO>©Êغeågž—E’ ŸVñßA¯Ÿ¬Øò»:°²«Q_šv©®È‘Û‘]ù6Œv© –ñ
-•$ãwnD¾èì?3¸nDãŠSü8ïŠC€Xø«šá!þ•ø0u„ØÆ®·YGLi×¹Óq´ißépc‰:÷§ný×¥6aHÃð=Nð•C혬*#5÷€à‰UoEÊÈ»B™Œ‘?«Ëê#9¢èa~eQÞn,F¤ÊÒ9Ë'ñ»D½‡_GO¥jh²)Œ˜Ž˜ÃB°Ñ{kQ¶*‰éó‚=ã,nH[l>  B€äcµÖßAÇaCeL¬·UN6
-äM8“#+Á‡Ln ^©ú~ø”­gŠ!,6+ÈwðÝä;ˆÚFåæÄ×äK#b…•?6þÙ3&s×xÙÄ3¼P [Pœ>¡-x‹}âÙ{\ʽ2Aîš)œÚQ*¢œšÉÇ ”*S¢yŽ²ž‚0Ø03%Í>ñÒT ‚;’Ñ,¼f0r «~8òŒeÉ{Ýß@6&àllÝïÄñS¬&ã…—Jmƈ=EmA1½Îu´I'm”ÑDÌ3F2wÊûL¦'ø^Ét…VØÚíÒ´qEjèÁ–uyY‚”}ƒªÁÍÅ7+s.£ŒeêÅ ²iÜŽ»¤ÄO™g<M2ÇpúΔ¥bÏÊ‘EƒéIZÕ©°ÈÑ ·Ó!ú@•c`¿ö`0Õ’öQú~Ï$œ¥zÍ ÉŒ1 2yiò”K8–rš@XÕ”ÚPœk,h ö!\åCÈŠ‚JT6Á³˜p(®Þ(d?$yãDð
-ü•þ2;Á· Õë¨ÑÃE¹Èk²—ß 6–ag~r[uŽ‹wpLJ÷ l²ø»6$¨-²—Í ª1üÀã«K4œb[;*ú‚jZ³ï¤Vjp¢äA˜$8­µSyNjSqÑ‚î¦&Z¶s¸c€'cuý¾,=3 ‘&³AÁ”ï¬H´LpÁŒ@ïÔ Oçlx¢¨ïcæ}P^C'ò»P$ž5“AT£äÛ¬¿ï²ÐÁ,-GW"'-©íà ü D¤dŸâŠÎ^¤É-øg0¸W-ôÖ
- Î OžG.ÐÒ?ê Df%¨2¿±r„j—üQt mQŽ½zü‘1Bs“Ñ:R@8£Õ1•}TãW?´gs?›€¤¹Lû¾/Éû¹!zWÖ5i_ +5•(Ê$­’"FOßi•5ç©D4¿ £…¿ӧ“‘f4çT|´WÑ–XÈ”ely…aIè"^ŽˆíT^JÓíI€Û`ØÖU:#R¨g×ÄRõË7T£%@¯P‘rã”+ûîVeC&4x;™žI‚HÁŽQ!P!Û—B™xÊŒ«ÆYQ_Źeãt“ íõf\™b6zœå[;oŸäEl±Äyþ“ÓDbX¼í–"s†±d%Œlî<¡Wa
-çâ‘X0’èì®.+»tâZvHY4¬0âµx5ënèlŒ"@(øü8Ý@¯ÙbfspRgVÉ
- ÎVXDvœéÔøbXæ"D€`{úþŽÂ?öe)íbž£O¡"-Oäÿî7%-.KËçöQ°=ªÏÖ5§„TK˳ñ ö¶ Ra4{;0¾A ˆ56›œ°Ê±ÐªîmA4¤œH Ù¶ýÎ?&¹È2ŽÔl0þe¼L²ë¸a(º‚ìA+ø‡}3v†ÙE¦òþ§¹¿¥*TìAr *’ÀëàASÖ ªØx>Lêp^Š~ÛÀtQ;KÍ$Sê3pŸcœ(+U`€é-™ÚBÑ
-H¨ErcüK4¬ðȤÑ&þ;ÑΆYIJKh+¬MX‡•ðÆÁrÆ÷í¤ˆZžùè(Ñ,M ö
-'û:’N4¨§`Üì0£kM‹ù¸ìÚÛÀû»Çà5µ_c AŽÅ…Ç«`L_{òƒåmœ—;* |dÙjÐá@² Wgã êð (qç»VèU
-™QY½þ” Š+Ñ:
-I~ ŒËŠøî› ×I$Ÿ’ÉçTx+ºµ•Ðþrà?FÄ•¢É:£E¯†©8ó~Ò+|âð&9XÛ%(Fˆ æ[g†nND›”ôÐî¢ô†â“Çé¯$’õŠé “Èe°M¦ʆzàEÏ<¦Æ#IƒpÔnlHúwoÚvM÷—k_ñÍ;9 LÉ„ ¢'DöÝýÂïˆ?,¡v›Î¯8‰¤UŸJ` 0Š¸äÄ­]
-ùÓP ÙßDð÷ïàõ5Ü[ìd‹û¨Üï|Ÿ·s›+nÜW]ñwoÎÄN‡œ›Ô¿˜ WØäjø ÎÖ—W¹~ï§W¤$‚Ô
-H¡A<·E‚Lwjù}s-HüƒÞîÌMî@øpPØeãÐ^¨ŒÛ½ À›ü}IX KD6æTËÃw€3†‡Ç°ƒÑý6¬ ÀF‚ %><Š½!ÖIxNá,Yh%ñÇaƒÜŽ2)³Ÿ}®t‘@faÛ%'„9ä¿gRŠ”Mšlox+ú6ùχ"òbw­‘Ù‹˜Õº¢ !fGê`äsØË#Î ”D9)Ę̈ï&WÜmF²É iŠhH”5òMitÉ"ŽV^ÍîwRÖÂrxߦ°%öh\ÚvµàfKrünò®þì£À: J í‰+¥V…c“¡û´Ú–“rÕ:¹$ÛdûðywM¹¿'ç?¿L²¼Xº²vŽúd’NÑÕ$Ë«åJ ¹n-RŽIv b7/¬Çsî&YH b:oŠÝ5ÉúÒÞ×ä(^ªYÌ»))<xde†$9ͧï© «ÊÜ¢â˜d…¢€bm´gW“tjî&y-r$œë üßäZ®Ô—ö™P;w;ááÂ6;[=']m©¾@7÷heÝ1·k]“¼ŒÊùÌuÜÎe®°qu…ß½7W ; v`~÷Èßæ‹G¥WÆæQó“G^‹,ô„à‚ôÆ÷È‚†Â"l)¶ù`'ôb£¢kÃw¥²”Ëawo» ÞóÈú‚5Œš±ÕôôQé$ܶÌr¿Mã ‡‰#Ô‡75Ô¡`{gß"Û+ÁÖ_žäxµHJä$´–ΠnéÝ-Ò)ºZ$WcEY6Cß"y8.
-X:²3mXI›AÂÒ‹E´ÇâY8"÷AV´_Ì3 ø›ˆGxh04hB±a ×[|Ûß×; ‡åÎòƧï”&(c('âÓˆ‘úluÿ^Ï è´%•$w¤–÷1I§ x°ß·P<+ñ&µTìEø g’±ÑÊè#‚/Š26*®EîÀa~Èì.aÎ?-* ƒÒvÑíN—¢Ï?a¨™Y â1’í¶èiP
-ŠƒŸü´¢´ó9<5qAz´©ò±Jb
-
-§SaÈÉz!Οvrò>Ãã!Ü0W4Ù%,^)¯q¿ ±@’y;—ÜGvÚ
-µmD•’ïˆ5ªû"(TÉ;–‘©/è÷Wî4âùí» ì]o*4}Šp½÷"E–m`}\qhjx~Ö
-w›ù'1¯ÌÝÕîü16é^¼Â„ÈkœH›M ½$Z[$aäË%Xbû}‘ÿÂ<ø˜ÐFýWÅG"‘K¶µ8¤0"+çˆb'dd|WY EŸ 
-H‰”—On/7„Oà;øiHõ‡kgùn`Vöý·ùØ¢üž»ÕŽg€ §~-‰,VM¬×TKNC^sÏå°dÚ{i’úë_¥öcdÉuädVŠCôHÒS³>ŠÈ„Ôοi½}}{ÙÚ‘Z)œ–†y}96r«ü_ϪǑUGk­ÔyŸžGMZ³¦:!=§ZEµ›¥dk=÷äŸy”ÔÚjk9•§Ï$+£J6= –ùÏê˜9D³n©©T ˆií¥Ëèú' âwwÕx9gö‘¨cñQ3Ÿ®Ü¸LHQéÒ*Ë/I©…·þyÒdÔ²Râ2T_½üï%½þ=¡¥qQ)Ü\ã{#ñøaœ«¯ ‘\ü/ÅJÜ\•{h¥àQëÑähÉr™–«µÔÅ4JÝ
-7””GËm]ÚK)C *¦^j£´9ú¡’óÐl]'Dl<ÎJ´Ì/ÌjjD4¾éàjÜ°ÙÓgF³TÅ… “–Ò¨[Êó&J“5')4~OyþЭ$pL—ÑŽT³À×$VŠGÉÒäì”
-L¢ŠÌMïj߀¼„¥¨Zž“j]h<-ªŸC84A·óK|a”~Î| !3ʬÂâ8¬'c˜œŽy׊ "Z‘¨±r~ª¶ÿ ”NÞʳâí×±L6ñ0ËY&få1FW¤bñ‹ÁͤÎw÷Î 3~Mm¼î¸Þ¥à.a>:ûiðâѨs×1ß•O`ž˜)ÊDŒ¹6Ãú±õC¥\«¢ž'Y ´Îxw¡¾”¶TeÄ&„Ÿô¤´#>Ò)Ä 7O"ßV[*_¡»ù¸OJ”yÔâ4oQ »xEbnzÎ鶜åÉMÃS“‡ïd¤tÄYeo9ù`Òx/ãXê“åÜ@;Ëá¬!Œ[‡…²·¿±À…áÞ{Åíå;˹Up÷/]¸;ε•;ù1ân8ò] gƒ¸Îqø·á$;Ð¥Zhz¯ýÁpv ‹á
-ôá!Ú\ç$+ŸPX—ËÖwúÎn(®¾óŸÓõÛwO!
-óú0å”=ÁðGü}Ö†z•Ê›éª9ÜdRjiœªœP’SË„âpñÿØp4÷×=bLi1¬ŒƒnzàÁžñëó+ƒ±Ã6-‹6•šPG4J% ‚$oÔj÷Ÿ¾'ÁHèÇr[´¸.‘M{û5/îbÄ|ß“øí·ñŒóVÄP¼kÉÆŸ|‡[t µ5ÙÊCz…?‡&8Ky!ƒWtA²K¸ùFéßÑõf/»¥ÄÙ³Þc¯tÉGS9Km'b‹>´—ðÁ܇>+rB}*uÄÂé{+¢¸”t[’š‘|Â?./ºb4dp r˜‘%„ÿiÐW4‰Ñ_BhÎ%Íì{-cË`aFÖ9W ¡Pï[Öˆ¯ð4~WÝN7‰ä„PiØ#p'´’ :ðÂñÀÂGšºe®†’cÚGšú 13½†
-Üà?».=‰Ó°EòPÛ@žTé è×(¸Êp¼téb/"j#Tš-tû#"æ¾¥@Ç?¤µº
-V] ‹Sˆ#\kq¸"1˜:Ûæ
-ªôŠ Oqz¸íØA‹\Í‹Ä6ø?!(¢¯«Â„l qTnÆ\f*?}ç¢~œ©Urᢹù¶êš¾žôgÈÿœ–/òE¶Îç’ä.£À@, u¥ LD±Õ¯4 x'J1?6;IAp9Ÿ³;æýsíåëÕçÇðDÖ¢¼Ï#\Z]`€*ÌJ°ÿszýþK[ûMe˜•âá''<{•È§žbÐ-l[÷µ¹DØ¥þô…é|\ž£tˆN)!~¸~#w#\û´|O'›Ôí4ö©Cä‹î@S¯™|2%Å›ê7²{csˆ'á/²Ò×—º¸Žiÿ’»ä¢dŒ¹<­-¬ðp üë c¾½ì@Þ²YŒÉH$ 7'3ÐuW•Yecö`VfCÒ°öþ@ÁŠ‚‰K¬µ²üNÖ(<¯ëºÎ ôÅ\ßâÀ„ÓÔCˆ³$oäûc r[@}Q÷a9!ˆ[¢g°å&,5!Õ6UÏu‚9×¢’®`>ð0{vVi×ÛƒôŠ4TŸa*ÌPžß)î¯(¯–å}KâºluB|i^)He°DíihÿŠæ +iá
-i8³'2ĬOˆ$*5ЉZ6±òìÚ tÙÞ@ì2J=¼÷!¤«3¿…I‘}‚јթ/L?[ÊKáº?‹¨PÖÓ}×ôìÜj ™;2uõ‰¢ÊÞ”?Gþj·*ïìäÖ­Ýw.=ßÝæÂÝ«n¼WgC÷k7/½úç'cóëw.¨2â%ƒ
-J¢‰òtkRhFl”Öfj°²+©acê„8­\©”…„Åœ¸tobôäˎ鶩Š.F¿øíÍ`äº)h€c2£7×6$Ó$æh£¹B»Š6J¼ž'†«s„¡×0%¤„õ9fˆs„`X`I»)~bÛGËlñ¡Qé¤nWy)V”O‰Ö8,3:éMíâñ~ôºªÏŠÓn¤X®>cÞ.0ÇZž:¨¨#¼L]ŠAä*‘Žž•›ÏÕŠ •µÜžOVNص+ š>z‚4‡eˆX^ æ
-2SÛÀ‘3Mw³‘\»ç´t%³šG±
-Í—·¨þË&‹Ba0F¬ŠòºÓ'ÈR>0!öç@wä*î Bòh«ä¼U¼Ý ˆ¡cXe–†“ ¡þÖUt>«šR,OY 覓zõóœÂpÚ–ÉÎièºK n!tãÃzõWYdq
-7äQf&ù}Úè¬ò·1Nä¥]çÜÃ{)ðÉ;c› 7be+·«è>‚À˜?œÝÈ“`øYÔ˜Ì~±ÅH.k•íkÁ¹±šxëê ÀÚˆ.f£ïn{{¦¾jƒo~Å„ýüânU¤±ïjØÉ3é[yM4¾Õ¢æ›ÀûW7¾~û÷Å¿~ÏðwÖ86 £S£¸åŸ×ôúãTèsm¿^†Ã‰^SßÈ
-Ê8‚Q¤óñåîý‰w®çTÖ`žß³/Ÿü ô{ž÷/ûçÕ;½ãõ·Ÿ'ÅÁŽU²I÷”9)ní/É1Ü
-ÆÂÓx€ÜˆŸ +D;—±½y0lâù·Q²@=9I`7H(4Øáh®[DÿÅ©F³@ONmn¡‘þÄϲ´}ÕÁ=ÄOJÅ_Š¿°2ùeºÇ¯ÂÊÄ›}ŠŸüPìÑÉ×ñC·Ü•Ú=
-¦'}þ<—Oúøò¯ÿî÷—oþ¶x¶Sÿ|ùT~ì Å!_¢ÉoÙ x¤pG©‹Þ· ”¥Gq£¢Q"qD-Œ¼ê}xΧAÍ—DL(ëÒètÝ×Aº—
-?ÂîìÀ‘Ĉ>‰ÅcM¦$‘ƒê ‚ª
-’èÙ ØK¾‘eBèx\
-ÜΚ«µI?f-jm!Ž+ÿ•2\† ôJ˘2©I¶3 ñÄ1H±4!¤¾iä³ ì bWÑLlH1{qN‡áµ[(¡“˜ ”}±¨Kq|ð‡]½8G­Y­¼±­,7,Ö¬ƒ5@ðw@7Hg\(´.Í ˜’Sì’½˜K¡`xÁ¥3ÂOh"v*cQ/Naõ9m@öÝ
-i’f§n²„fá#µ»Ðäâ&Ãm t¹‚.b»ßtÄP"ÈuYc|Ý?&IEÖ$2AÑ„ä Üz¾çï˜
- 9@PÍÙ9§CÉh)Ê{Ïß©TëŠSÉçlçøšMž£:÷ñ19›aÈ"p…“Ü{b¨>Üg/ŒÀàšo¿¯ÞñÈ„š\õÐÇhËÇ뎠·gÞd´fakDi¦¸;ë}‚°Uô ÆeP]ƒ¹á½óBwc7—<jl=½Æ®ÎFŽ•X̨8þ?;£ƒ¾ânÌ]«ÒÝ
-Û22Ȩ­–ˆBd7å¶?‡hU¥PÙÎÉŽu#ˆ'„=Æ{£”¯Q½Ó$TÖNë*œ`ŠKç.ÎÁ+eí~$áJáñ58%Ž”L³©wQá”RçîŽ<-ûsâMŠ¸wçb³À«Ë±¡P£Ý ¬˜ûiÌaÇ¥!VsCDÛ„GжÃÅ]™jÄH~Äu ©†&2a¸Ï‹;]–KšB-¡3b0€ŒN Q†mJR¹*ßÏȇ\‡4“šÉ2˜ÙÓ(×8Ÿ T eCбÌ_Ý}@ š›º…ØUŽ’£IÜŸãaD46"ùûkÙ%>LHë¼ WmZT•—’áœVT€àýL®Ú÷.½D9 !ÂçH–t¤®–àÀ/¶hÁ±ð>ži§0™‘?¤Lšg_AÛ’{åÇ“|f9> Òu$BªeoRPd»Öÿ(/“ä:r$ˆž@wÐ h˜‡5kÙ·ÐVºÿ¶Ÿ/ýÌÈ«ÚÚ¬È
-"02¹ØË‚âÀúÿ¾62HO vî¡ÏA—Æbê1íi^>ÀűMÛ̺ç`KáyVâì1,øó±¬ÿ&Bt 0h §r¶ËRØÏoN‘×þÇÀЛHú«E.ÑÿÁ7Ñ÷&=dÿX¼îõËŠ2Ú´œùè)*ZKîÔûp‰ž’iÊ‘\*£d6Yß”ã%"· û“és˜Õ?ÑNrÉø]‚–h×@¡A%=
-_©º4¯‚"­ƒDËÍߊ\q6îµTükN_-òhÞ+ºÐ¼J äÆȈ¸.Ñ rƒÑˆñlêé5ºXƒnz´ûé5Š&»A¨,ÅÝx~“`ø`x%ö)à¯Cæô‰C¸Ç Íõu™7¢W$I;Žž>ýJ‘7¡ÏÛf݈~å XÛët‰^%Ð&¡yjD+r‡ÞW{b üï‹5Í«¦'¬XÁÑ¥yJÂd?±Ùiú4aèÊüg¼¹Wòcs“ö3Àr/Ûw?'Œ£‰g‹/4/„O¸²ôâæoEn{*—fAø [ñÕ"æÿÊß‹æ¿ÿ£Ò siË°8+!.SeÜiS½S”á-½©—½¬”4x]‚¸Ü‰ü;™“þ&Œ]ÂLð؈ƺ•ÄxT䂳¦¥>Š¨çhžwŠðÔ8Ù8kîs ¶*©»OA„À’0Ì57R+•†Úœ’õ©/hRˆý2Èî9#…>é.ήœ8Þ4ÍJ0$¤ÉÐkÞ%QøLêþüæI­{D<ªh¼ì©9Eü{œCš²b(%½7:H*­Å_é‚€ÅB#;ö°L±ƒìðy:fªçŒ
-Ÿ8Sñ sŽçS+Fb¾{'Þå€áƒmÃûº(0DB×{•¼­l
-ÛŽ¤€.øÎvó}¯E¶›‰
-lT‹å 4ÉÙá^æyz²ØxìW’D†P˜–ãY`æ[¡±ÔN—ßf~ºŒâ±ÌïØ8–zh£§Íó /èÌóî)ÙÆ©ïT×+2èÝfLõä?šÐ®"]Ø)¾‚C96ùÏœiÂreÖZϨ OÖ®’ñð<®ÂÇÌtf†Y[…6ã
- ®”Ìx´)
-#=¦3?ž³¼(r0VÂ#;X ëU×Q\/üéÍKr àó„Æ´cÖå@+tXƒyOÖ ÙÁgâìé°Umìy©ž¬« ¯“<0¤¾9hÒ)\(BŸ]o@¼?ÑŒx 9I–éÉÊÛM’Lç&Z ù-Vª5B¥ˆuQ47ìÙ„¦ ü‚Á†§ D–ÈpÆÍ9ºF£?”¼!ôó›Säb¤“ð Oÿ¡è¾Îç¾Ptáwµ®EÛ¾s+Þ^ÑÉÚ¬,ñ– iüâ±’r¨¬W¹ª¢¯r5Y ê&L#GÉJB+UjeJ éîÉvÒm£usÚ§ D\œ7#t$·É ‘ìS&ñbG´ö…Ò
- æ
-ªCÞb;çÖâ,Ë7£\p{Õ[‰¡â6òû97à\oã
-t-’Óø¬x pµ=´ëÇCRÃÕ6nÙí>H-2hÝD*ˆÆ:š9³=’¯Ý¶õZbMfaXX&fÿæ@zÔ?¹ØmpDŒ’—-¾Ì³¦£±[Dƒè0$
-9QtC·gÁÃIîRâp¡µ‘
-n;¬&Jï¦ó““Š±ÚˆÝ‘"qFÛ}Pd ¬,¿5c¼AœÔé{§Ç¶®ðï4ÏO ''»òÅ©€È¬ ?ú0"¤?ŽüË—OÒÇ‹¿üÁGPAÐpžæòÏ%]~ZÓœZuæòAïÐÉq¬ˆöžb^g—ƒšÒô >h"J¥ ïÉØSÍ% ;7·„Žx§Ñs1á5sÁ[Üžç²Ê“g¿p¿Ÿ¹ß¾=/˜xê`ÜxÞüO¤/Ž«yîâ.sùò™Ó¦¢
- Ë`nJhž Q9-Õ
-É×꧂¸70 [ðëþÔ!i\;j¦Ìß[™ëP´Ô%‹§!¡pèI•Q8“9ªOeË'ÏO†ˆxtö‚-2–fè Ñ19r„üÔWóJ!¬!“Ã"š%QÈè~LAaÆCEoÕ˜V¯¥ñ‘׌«ÄÀŠê[õZ… q{¶²ÖI‚}OZ«Û¡¿‘ì,ƒ¿iìØn±×¡0R bŽ%OIéD?b>%¸–úï+W.˜šòÜ
-Ä•!`˜´Æ•õÌ¡üéÉ­uSéý×]Õ
-=ɶònË¢¼Šb{!]†ñxu–DÁ€¾¹S%:—ÌuÀ•x„кisHHRÖÀ£7
-ùùÉé…
-Õý …ñdUZßéxDID‰Õ*I®‰t 'Ht ¬«­–z‡’H†'ƒ
-kX5P‘€æÍ›$)…‡2U“ªÙ¼%A\lú IBøL)iVuí„$-ÑIJÄi€‰2ÇÞ{’”Ä1UâUu€Ô=I"¡æá$R©ä’äfx¥: ÃÙÆÄ[’D2º¬Ù\; Öã ¿‘¤¤ä4þR8IÅžæ¡þæ\2tDˆÍ…mÖ· Éä&‹¯ž™¬œp$írX‘¿ÇÈ1ÿ1ˆTÂMŠ4wyÔX ihŽY¨ÓFUE<!HÝ™4qrÿÖN‘Âé(‰ëðp H ’\ÔLIÚ!¿³(eWÉ^U·×iä-†Äs–ìM‚D"h”ml›‹‰HXEÖ±š7  m¼„Jxöw HIà»FÖºtG…†w†ñ^Ñ?Z¢?‹“Ÿ‘•[rËrJûP«>áÇQu½ÃkÌÝâGÙvq¦“É}J Z ™UKí'üˆ¨¥¨× óÙ:”1!§Ë\%·ü(#¶ê­©ì!ðÈÃo3m‹/ÁäGe xqÒÌäÇ» ´øQy*P¿|±éúȈHÊÂÝ|³ññÎÙMó{è¡“kú5Eº¸ò:EL‰\ŽJoÕæ•DãÅ< ù~2ÖŒç¹$*,¹Ÿ™A&+›ð'Ûë”NÆ>Ô÷:2~Ž™®mëêç=%ÁÁ,Ñ æVMðûöÛ[‘ †™™šã©¤÷Š´å—<¾0¬¯'"6–¹BÎÊiÔ,^-6œ#oô)¡¹ãåIv´ Ü‚Ë"}¼ìGŒ-? fƒê±_+ä;Õ ø- ­›‰N#fÖâÉŒƒÙü6SƒñDô[}µ—IZ+xµW¦LEÖ„%vi+wsZ43Ó¾“fTº4…š÷Fš†
-Ô¶ëŸ8­ƒ¨ÊÂ& Z>\—äîbªäqOa%ÆQdÆ<á#Ø"’ky}OÓ0Ï&c$ôÞ­9œè úúž*ý­C‡#¸­E£©¼žˆ2æG b¥Ë”€œtnÊr³
-W @eJj#ç*F™·'ù P2Æò=œÀúÛñŸÿ«cñAÊÿÛ–eµXoš –ÑHÜN.’±(%xÉ׳u
-=œâ`0Ù,w0zùJ³¸ïÍ¢Ü4g·æΣF‰ÆOõΘ±—T©Äbfõ:±çÚUøcWÏñæf_ÐXç‡1œÑy2LÙ[áT…ešz­8KH;ž·i¡ò4rp¤x1rKfÈËñ5mpš!#[Nà¸{Ýéa"¿¼ |“@•ŽÉä…uô\ò@Ç8òz"âhÞE}r ¼ˆ}ŒœË?œ:,¬ƒ‹¬ËEµ\åLNF!®“gÍtÀªoWv¾m—„s®€oi'mŽìLðÞzÖ.ý …J›‰íl\Å5Ó&gZ^¢HSµþØN팷¬,À†ú+¨í½"Ó8Ù.sBd{,35OdúãmW¹óžÄ¯QcoEXÔäIj·DôÓ˜˜JxØy}ø¨‹ãÒ6¨#I#q”l£‹€9¬Õ^†´`âëIP¸v£g¯k¬´Hx„GÊ‚ÀÜú¹‘’k#ß5Äú1ÃÈu X¥ŸGUŠ‘êÝ êô²:þ‰D¯ˆ’KõºÕãºzk;¥ÑÃKÁÕ‹n;ýÅiT =ÅǯS¤©M¡¬ô^4$ääÞòUW#Iš Hø>«F=æ¨Äâg³
-×ðpæJSËAöu T ŒÙdfS‡‘Ɉr´Ëp»Z;Kv—ú b_ÂtF9Úôt—­Æö>.ƒ%|°žæ|~€êa:®ywkCr%!açØ&{ÔÎ`Öø
-&›®Ux‚\.¤#)mÄÑûwAú·Ã)¨°cQÃÁ6ƾˆŒuíP1mG±
-a½4šTˆ}jæÈŒð°KsÚ‡ _~Â…¬à'3sÔ7¤Ë &®cb$I›Ä¢ßjÿ ‚#ÐlÃ3PéÕ4D‹'ÏŸÒ=ûÏ¢µ(~ôgšW6 ƒ56$6¢ÆTwðhöt\ÓÌ}›
-¦z'iͤº³”Æ\ã?ÄOT@þÍÈ^®Z (× øì12‰Q^Í<A§º}>€hÚb†ë],s²®’…Aá*à%°.mA˜M§Ð—W$Š\ƒ?öÓ³òiÁZ-§2ÄZL%5.ö%ö
-‚A[Í&ê1ä ê+R ù÷‰θ(/€àmhØgìäRø ”ªÌ´#Å9À'èÓ†õÊFe‹äm‰˜¼ÙÔ÷ýrÀ¬ê¡¶:å ð¹¬i²D&Jzk«NÇ_E–±‹qî==UÐ,š«à»F:^ÐéçÝS&± ß²¥²û9P‡eœèO æ…`w¡ï R[ÌL,bµþï¤iŸ¢ Žµou ÎàýèPš[
-z±2×Öà°]5iA2<BËÊ´–v(*€1Êæ+Ìߌ—K’]¹ DWà=Ô
-$Áï¸=Ô.zZÚÿÔ'IàIzÅ+Ëa;Úe<^HäG+ŒPeVb•á¶âk ’݃JðÛÌ»ªõ`~A£ÚròlÆ
--Ò$Ìèñ‡uv ãFñG¾yÃHR‡sî™wR•äÜ«£ó<a+ %½Aݸ¥ªl¦¶pŧhžH‚Ô5®éJ%ì[–Kô
-L'>y 4eÞ+X7
-“÷ÇàD}Sšî«î*÷äq)ú|("AÐ ]÷åeWÑ#Ì{\ q±"€ìAQ HH!ÆaÙW‹¡è‰±¢
-öZ*na£Ï® àjï%´UO‰\³ÉDY}Š›üm2mL%ãâ#¹êÆþ)òrßVO¡ðèôFNÙÌv+[
-,IîçÀ×@÷€Ëð
-®mŽÙ øòYA  › |ãSÈ"_«“;_7ââ3+"„\„Õ{ůfu;ÚÿêkFçL“+6áBÿ?N¿†5 Œñ ¬BÁðyÊ=b {Ë(Ø¥zJ@)S/†õ´~ªn;…m§Åv‘Å™#~ðÊ”icª‹9b ŠL¼
- #ö ¸p Y ë(!T2_/íØÒ!Ë‘*Qq=ëÏC>ÒÁÇøÆCä¯QÒ|a2Ç„IDþËî4–x@®Nw< \‘ðæ©P0Õ‹ÙòSÁØA0.WK·ßß䃭Ç
-kƒøQmˆr;ƽ}Ì'nf…¯q”¥§’"Yâí€vðñ^$½MŠHëvF)zÇ¢® +áX‡k{Æ
-XQÚð—›à½V/C{Qó` ˆ 5zlá…•3†tŽŸ;(ƒ
-À­+@ºaN‚> 3yÎᶉñ›7ßj"VI=žÎ“£Ùaf¨×ïEJ²\Xr¶gß߈ã/kä{yŽ=ý¼×°ëf}ÐŽ\>œèŠUÙ9 ™ÄA箉:]B=&s¹G% œép]
-0‹}a¦.KÈ_•¿´âŸ™INNûù&\¬8fÖá&åI
-^ähvÚ^xÊ·9ǽÃO"ÉnÓP¼øœ¡pdiì&”WÃ
-Œ` zš‘¾¦sO„‚PvËåFïüDú‹&Û·¡¬‚À
-<ÉÍ2Æ"cùqJˆ4€ßƪÜÆΣý”l¯Ä†Á4ÞH‚›®¤ûïù³øÊCë)çŠÔË\SR¿áÂðsUVÐûÈ›Œu=
-X±Y@ äŽY/%ûSõ›œþ$¦õxÎ §hØ3œ
-6ª|9ãäÊŠ²@·yÎÁÔ…ýîäoi3ü4ï k‡L$$—‘£üíR:°˜%ÿçŒW}=7 3ãåŸR´ ƒF7êU2kƒäTî: ØhÐw)^é@ƒäQJX€.§Åó!€ó1FE”¡Í#6âͼÓÁ{I¨-Ãc¹éõÃ9ÌŠ˜¤Å¶Vï·ù‹·Wù§h„±P[A´
-º{ÕÆÆeõ M0§¤ã¡
-ÊÀ~D¯N‘aÝ«Š|†4©{ÁTק® v ÷¨’Y?иƒ»Å ªæ /ß 2"¤ž õ^vdBX’®sýSô·,ÃÓûœ=F?²?‚¸g&øi
-¨{yÍ3äf4Ç#J1`r
-µ;Åì7H|”ü
-;È£C×Ú÷!6Ö¨Õrb]¡ E¿Ñ¿,§íÒÀ®5µÙáuŸèM[?¿"À–5sãÚ”Œ÷zv¡Œâel»[L§›8©´¬îg­´’dø}Ad1é÷«çÎ7–€ŸçšM¯ŽÔ±RqyUO[÷s:œ‹¯#b½†õ’#»ÏSŸsä tŠ€à{Ò`V²ý*è”#O KŽ„²7üýØòv ’@"*C?ã!H‚SaPÞ;Ú1Hªp?a7E½'@ ˆ$Ü:bð$Õw¢Bdµ9žÎ©2_lF;l¾'I 7ãeåïZÑ>¸~—šÌ¼«óž$5ÍŸÂÂÅí3.Qò>ð'­¸‚Ž]¯Ì‚ ûÙžòæ 4è1œ@º¤hÑ­ÆíNÐçW6Õºb™²V<ä@” 5'5[h@ºÒ`Ö²GÀÖ±ÇÜ•
-
-ÅgP±¾yQai@j!šK-xq²¥²æþÔÕ2&:Ú¶æt€¬OåQ6ïWÎçäE°2oÛ9€Ò°'ÐKL!ö.iîû¤
-ŒáâÅüc´/@ôòK×ù.æ(ÛÛº2íReµrò ¯mñ;Àg†>B]¨Wɇ0N}2R˜hCÐæÔåž ŸÎ™¢wÔh q¦Lž}©R‡Ú‡ÌàK%âÁ‰àHLÙØœ
-Mön” “zn¢Ái1C])ÁßMã¸^nP­s5ç2ëìËð
-cu¥ƒÍjyZȤõŽ}ƒøÔ¬Gêþt
-ƒ¥S)ºtš$0&£ùÃ:‰=Ãùú›ˆ£i0±×¾t#Éދ¶é&Š5q€¶/KŒLÄ ÎÁ¤´IŽHXHÏ÷»Šá¯¯(¦„õ ßÿõŸoü—ßh¸..c}™‰.„Š S°CKcO ”‰}C@Ó
-‚À2¸šá Ÿv™¢Æ¢Ó¶‚,ŒIëÉÁPôȦEÍÆMÝ|ˆ¸Ieìº|È‚2­|éèM‘7å¹Qîâ™õ
-ñO!ö™,‹‡íOçTqQ §ÛÈ'¤°åøø¨¦×d@ŸJ#–џê{ƒ¼õié
-š0ÁêÖ÷§®—aC†¤Bõø&(·4TiÒ—ç^›AF¬º Ç%ÿÔ¥Â@ÖxjPb>vêñO]:~:ç27§Û\ÆïüªÛß«sÛ…{¿S?do¿ÿ©jèÐ…XÖZÐúƇ¯˜ô—`^쎼ñ8€¯ÈPqŠƒ`ë ⟪!?LúšÒ¦ü|Ž½Q
-ïÇ­hä\(?$i„èò' ÑTÆ)3S¤ó†ˆ<jbÏ'í(GhIs‰N3ïêG>~>€ˆp^gG1KŸâ¶*DÑîŒDã#ˆaÉ  ²OËExû$%„Ø 9ÍÊà’UŠ3yy ¤ˆÛL/O_1Ek™—ü¯2Ò(œ?¬<l.õMT>æøÔ«ß÷\ã^ãA*ÁÓK}®%"J#¶=LÛÐzä4 oÄd´ü-‰,^ò¾J&;Š¥OÓˆ…”™í³oºƒJbäçiØ9b>úˆà9gÒem"Äy„4<=Nö[ÄõãÛ¤*Ñz81™+9îÓÈ£ù<ƒÓŠ÷>È“bVä:íéq™§Tov˜üZ›óµAú\Ku ¡+Ãn„á+È®"ÙÓhŸ‚I[˃ì!ƒly,Ù8Ÿ#ä_T"t‡°þÄ ½zøÈCƒ'bDö›à)!÷ËV‡(2dfsös ¾Ü´o”ÌÎÏ gü³Ò ®×ŠCRìëp{ÓVù #¬T‹{ßo IiT.qؾ˜ãK ‘*wDú4•ŸGÝ)°?ÚÇ,V߉®°É–øŒóƒú”l“s&Óν™ðm
-cH)ib.·­yƒø§ ù(š¬u>Ck`'ÎêÂËvˆÍú¥@B l8‹±ý)‚àâ¯Ñ{†èsÛÔrR!(¥YÛ)ÿ&¨E¯_ÀyÇ!¤hKü Ò(‰¥…´½¥’W…¹ÛÉAl§lv´s=V@¡],GŽ¿³à?±éÒeÖêƒZð“žÌÄ_GRéo@Èv6ªÊ·ÜŠSÊÿD¯2ÂD³“a_ûg “0'œO?7hÑ#KP ÄÓñƒƒŸ¹ÔY?àÈÖB†àXYÚ²R,dVbmÓ?…lÐ ê*ùüeŸÂ‡²H‰PµÞ•aPRO%N?&Õ%–cbÄW z1Èda¬ÜC:@œšÃÄŒ–v>§AÎ…«L´;Dó_æf›¤ôÄ&ïOÁ}©ðW<l«
-::†çäÅi{„ü¢£Î=—o #·:RqÅav)V…&ÁqjPÈì†.S÷Žð
-CúxL¯qÆýº¸¨Q@¿/¼„ÍŠw> êÔrˆÆž}æ¯éGQÍdå¿Ž¹/Äác_
-%¹J5KïII·F гnyÅáÊÇjÄ]Lë âJ0•´7l,á Šk½ÞÁ=f¹£ßÿ,¾E ¶1]'
-H‰Œ—MÒœ· „O ;虂ÖÊÒ·pUVòý·yð’üi8å¸\þy…!A ÑÝ°¦ÞCÇ÷?¿©öÊfb1‡}ÿWËxé°a'è ™ª"Ísú\!’ü¯Î6³ï÷15s´Ì
-™¯ìæšÖÒÏUctx›½­ ÙldnXç˜ ®'ÎÇ
-qŽ•TÑóCHãÚIÆ­§«~ ¯Lo·®s_Õ-µMï}…LoÞLE¥Å
-Ý›(ζB|ŽÑ*jÆ<W…kÓ9©…­ ËÖZçæiOuì¥f½…Êp_!•Ió³éŠè9»§ñŠxøñí‰ ªåéÃÞcþ¸Æø+§y„öÙFÿþóCÐÌ1»èí;ãäGM$Æ
-Ó-FxøôBÉG§œ½ÇÊÃW:‘«8öÀ¤kŽ1÷9Þb´!ÒãÇ­kOï>t…tò=Eræ
-±™1FC»„ì«šÐítt~:Gefj¸ïcÜZ=
-høŽ Û€äywaœõ÷ÈЫhòU>É6(3Õë 8LÔ ÒVHhš8H¡B²óWt°Å¹?6Œ³ƒ}^äãôóCÐïí|Ã:Ï¢
-øß—Õ¸$‰¯”ç‹Qa “ÉX!ÁÈ
-4¨}ÔT¬p5] af;‚L é¾"dúG¯¡Y=Õ=Ê@vd&…Qç)kέJ6ÃÍÚü¿Q$hOOå·5N¡a[f‚aòÙ×U»j økÎ#Wd‘“â,A_;UðN%WÈ@xx¡1%ºBL˜D@G¬¨1² Pùv®RDAòÔ-ž\ÔF2±Ø‚uN /,à<}‹ÞàÅ°=4ž+DJ“•—ê‘+,²Qõv®"ÿ>™PTw1z ¬ê#ž”4
--±þô­TŠ`¯¹Cè
-BY±pxå›
-ÝkÁeúfĉò4‹Ú6OàaUñŒZ$¸nivÃՈÂ~ ë|OÜV 8
-q"mõ‹¡ÑrH¸¿«†‚Áç®.í²¯Â.PK*9ïšú wvxÈÝ“ð%ùAcG™ ¶µ×’ø<WeÕ(Ë)àÿº€§£RÏáo9©ñ`}â¿ã
-BJœL+×+Bu€A‹áHå˜()ö„žó´“ƒz9´¬ï›¿Jï…Õrx¿rü; þ›þ2;‰²àûÂt9ÚQ~Ïï^b´±5B㺖Ò
-A
-p/¬‚s *EY²¶¡3?6.Å.{ëŸë*JcÂ5_k`­W³Ö9ýUð>m¼ O [!ø±ò½$Ü/!ÏU½6Eaq´ÏçX¥†%²ãHØ
-hŒÌ†—d‰,€îêªjm呤‘16áuÔwL~ÿ'läap·ÎßÔ÷óÂÞõ:´—Ö[ w’ûk¯D «âÇØB@Œ›ëÙYO:Ã’G1,nˆ]J¥mæSáàªǾXc´øÖtÞõè)€d³Îä§QjâWÈßAy°Š ©´ÛeÓ ^å a×›…ÕÖJ£úIGíó|½FüÒ Ú*º°1ÄiqQ
- ú#¯7ÐéêÛq§«ÿîNóê©C'ÖR•+ƒ–²œÊÿ!äðj\ý"Ñ‘˜:[ID¢\¯C gAQš­r"
-ηilÝ¥D´š)ïô*@Ìã°ÎÎÕâ Ž °Oƒà£äx¤t˜ë Blä˜2 ÇuÔĪ¤v’z};߆5Sœ{ìéU„Kt\e½ZµEêc#ŸJ ùucå\ÝÜZõbGm-ß¿³g¿ÍFÀãî4¾—æ0 4‚êO"}€|™©_£G'Mµv4ºÏE6ö¢ëƒjì ¬—¡Â3¡÷ãi_1?¹‘i±±Q.Eg-‘›Yc´Ä¥uq­.ä_}~¸SÃs°˜H{ÀhË0ˆpäËSY!*pXxªÄâàù_4æz,”§ó $§‘þ秈’ô‡xeƒéIʱb7äyjŠÖv^9í S^ZIHe…n’“
-‚ªÐKÒnŠþ’’ ¬y”§_'Ý1è0V!¿¹òv¾Læ¿› d}zTa×lZÖVÖQ[m° Hïd÷vã­Â$ÆešfvêÔÈ8*¼:šOt+Èàù;áÅ¢ °jjçÛ
-v\T0»6y '<âüN¤BN<Rn$‘·’„fN*ª¥ bÙãY!{CdÉX3[4§=ˆ Ìûjà7,wJ@ˆƒ
-%Ú&DÉHÇü¥ ÉêªcªÕ†#²ÊÕò: 3¨|ªúdŸqìzXÍÈvRr¾h]a@`'Y¯ô£Ï)vÌJ‰ùqBÈ[ G"Gýsҹ݅Ñ8A‡â`Âü of(Ê„°™Z±!kæ·2aœ±Ä«í¤ reغ¼?Ú‰š< zo‚F ŽQ±p–/IŠH
-i(+Ìæ8ú}Tƒú æÂÇè›âLTA„ß)qæaÜ‚Þ ÿ¸¶3ú çGfxŲè§ÀÏ OßõTŒyˆ~Ý&OØÆ ?•š´’&„ œŠq tM¾`WÕê§'#LE19õ]{TÊÖMR+í†)miá¡.pŸ
-1Ä(Ô¼²C1*¿qé
-oYíþÖ¨«U0¯ÛÐtÞÑÚ0þ͸s¦xVØl(Ÿ_\ ?b” 'ôPEî2Ñ¥Hë š!¼òvÐ0A‡ƒ¸^K›Íx
-ËߘtT ÖG;\ûµe NZà@N¡ˆ­õé;h!"ä» UÇó0–‘D?²¼Å«–/I1ãÀÊšg7Щ8•ÝDïF@jú1( “ë]…¼Ûq êÄëO ßÏ W|ÁQ,¥†³ ü%|Îéb-ägÙk~ê¡«ïGÐÿ/—ä¼q
-¯À{È
-þ"Á÷8wè]djïz¿#‚Š-Qi§;UÝ ,’ÀÁyìîÄ%h´Çþã"² Ø0©œšŽûQ‘fÊ *¨Ó‹ä›Ûe„^Ÿ¦¢%/î$Ù<.ˆ„¿àAY¤åéQƒm9•é_êM˜¨òÔá”d‚BÕ]ÍÇ&çó‡Ùa“в±ñoŸ³ˆTÅbãâƒÉCo”ÁwìL-Œ‰n KyV²˜(Ýî›ôgÔ!A~¢ÇµØ×ݧ1ˆPcûkëh¡H/ÁC§ÖŠ¿¦e¯-â?òÜH"C–!•¹ß}x"fqÉ•0i—$;úú£~Zl#Ô¼}¸¬A4t¦G\Ε‹²”ÿ 48b›ð±– ×f–w}"ì
-Ê4/|]¿@-­cÙ÷6’m¢yt©)Ov4¼ ¬#u‹ô’ Ï:R‹.ŒžM‚—ûLN›²ø¥FÖö÷Û¾(˜Â]&9²îÛ"lIg6{¡ äW†©qqüãæ&:!Æ_Þù*©'òä‘è`Sªí!ÅE¯ÅjÔAiØÞ°Ýƹ3~Ú;/M;s8¡%úìk÷ ƒÏA˜ª:z”‘˜¸q¸rO!$È.ýys˜ã.eú¢7»†Â
-3ÇùeYȯ˜âÐ[8K¾/IÉ(—‰ùý¶[ßKч52 :SÖ(#Tºê8ßÍ]H(Zš%IŸ-x‹P%Ev—õ}Úgƒ…™"·è7X¯¡‹o.ôHCµ°c'·³¼”øQXh€•!Ê]ÑD Ç4pÓúº dC a?‡ïKÅg‘Òòç$¶
- €ís\0Ø
-RR‹ÛÖ `phL&gþ`­Žq
-ª’e":NѾÌt™ °ÈÇh) °o@ÝWvÓÓª¨,y”@*ƒzáÓ7 rD±¡Ñ¥ ¾*Wßæþ@5(mêq~†Ù'éYh¾òœœÀLn!z šš¥á亯%ÇI…Èbx&þ3>|§¼ÚȘö?¯DÅ]]3lRRq£sLþlÚ ¯@‰É1t­Áñ¤ØtÙ‡Gáð0”dKÇ™r yn÷mݸ®ÌáÞ«UñŽ½3þ]žð3H)œîàþ™ï3
-¸ å¥áËéÞ Á»i]·¢ˆ÷k>á”w㞦@nJ¾†È??Áðû_Ú^º4=Ž>ôï†åó¡¦+bŒ@T4O7þüôß5ˆ¡‰"ÑfIÐ+ØS‹Ë¨Ç¤çµx΂l•e³ÖH
-‹….…0| òq´`o-+Á ˆ}Ú“C­°û,X}p¨eŽ‹.†•m!>…/y4{!hGõ…¨&f  t¡º0CŽaG>GÃ1,+ÝÚ3Ô®(
-xÄœþ°›žó¨-ïÇÀ$U‘`¨hE*¤´Y!+Á¯PG°¨ø¹å@DÆétåäº
-ÔĨõ=[”/Eêæ&o*ü$y–€Íž>ÓáJ@@˜ôyMØ€¬Û½d䪬™F_Ïβèè Ðx+ºhñÇÛî0°“8:Ò< BG”ðåA!ù2—K,D·]‰?»±z¸ænOßA&à'úœÆÒý!“Žó²êóLÈËa^=U$ÐÌ~vìÛ`‘h°IÝ-:y¡’#^È¿ÓøÕYµa~›¦xÂ|•Ž~íñw‡ü
-U…Ä_+Ÿm ¾Çx»@€Lê€co—Š÷îç—÷kŒq:è;cùQî(Ù|ߙڜZË;S”–û Ž¯¶ò¦ŒßdþŠ9š²D_-Ö†Œ€EJ§ë‹h¦è®Àor£¾¿RÇ7&mwç´)òï-[X¤I$‰ÎîZ™aĨŸ-I¶&mÈÊó*t ¹Æa¯Ò(|¡•}›dÅæØNý¦Ä¹êKC‚6Tîã—yy½hþþÏ?^Óò:€N¡ÈiÎx‡kÐÛø}þfFm”ǃ}¢ËMõ³oΈ±§3R{”/As"»Y³öˆ¶Ó1»@
-Ïu¹[‡à|&C·C"ùÁ›m/Gü‰pÁ¬ÓFòɬ8¤µVE…°!±a³«ÔX8·P‘•M×#r
-½„¬«:ÓN.ðFº?§ó©öÃ=ïÙt•UÅÌõ»WõGktpyéäW§‹èL=Ÿb èXØcÜz•” È$ãçUïA\Ù%£„éÃË&0pU­™at÷QaŠKì\ùÜôVœÀÕ|{‚}Š^‰ AúШܟõ{kÕ[ÈAÅk˯ç\€sÍæ@ïU _ŠãŒŒ\ʉ…Ï7/Cõç9{ £ åÆÓ€¯ƒP)²ñŽ.AÎp¹Í#ÿÈhqÆÚ+†²Í¥ÑÙ¿nbTZ
-K¹†ä”…†áhOÈ€$…hÌŸ…À—$+og]è4ìñÖã
-_ãGÿú>fdÀ$¯oÇd-lXÚ<ÒЯ°²Ã8!릆Ig.;šWÊÝ98]ÒFÛû(3ÄQJAÛ!ÔG³7Å츱?ÿøA/nìÓ Â%`H‰kÈe´|NébŠ&ºtÝÕÀv‡ œŒŠB8°UH,ööô<Á‹6èâÐ{aÕîÂ8 Œ{¥Å&ݤƣ€Eò«übý|ëÖõœ÷–_“¹ Ç{Ô×â\p|-±õ—Výû‹™Ñt…=]å–"Lç¸/7(=X@3…c½©K1ʃëc=™¿ÛÖÇ)áñé§Ha1 D}æͦÓ,bѦk¯¯wlº@FÓõ«ßî/<ÃÏÞ¿fÓP# õŽ|÷ªþ€Ô*r@'V‘7€Ì€ –†dþ°aY/¡Éhj
-Ù«âøÚd½ÒU¬f”,ïQv‚¾·þó&¦÷_.“ö]ÊÆ°“1”ü]Ç”ËéÙË9ƒM ´Õ53l²•Ýfž"óꥎã=ã6Ú¯îs@RcßàþvëñåKÈaæW\\Ï]t Œs™'›ŽMf2ëh;„¥¬Ó:Î>@ùpG¬¸çª"Ðd)ÇŒK•t÷3€†§æZz1½J ôÉ}þìA­SŠ„2í›þk>¿ ¥¸%küÞ<å¥ñö¯‡•URžTŒoG–±0>|¶À¥;àm%u§“M±aʆÄ0¢òYðÉ°(ÖÅAuøH
-£áó€‚ÂHB×rÞéY$ü?RÁ„·~ÄÔ·‰ßšÓŠMgæéw_r2 Si‡/¸“®üà÷à¬ÔGº;G¼‡ž!Uˆö0ïâb>–9Ùéö5óáQØWÖ¼wfçïf)yà&ˆ´üë oÁà:Œ+î"ŽƒTÆ‚Å
-ÇaW›Ã®O&;c¼QʨÑ}¾\\záÉNQ ÒZ’˜Žð:
-‡†Y*™]µB!2PQ6A&5Ù™¼N*Ôãs6ˆA§Ùí¢åõLW¢(F`¼QX`ØnBT=D ¢;禟gëÿ²SæCÖ¡iMiÝ1Ð_;ˆÙBx‡„ÆuÙ„Ðq䇈`5¡ ­Ç’ªZŒ Îc2û\­Ç0®Ì‰¡è]y?y¨€%1‰ç}L amùØÙ %¾Éìî@µVYÓOqŽ—2Ä=Û©{`äõ{ ú{D·È­ ¨døiA@|J’eT¥"T‚"-C¬‘Ø;FˆVæe(ª;-$2ßq©ªSå€cänàž"‡eû¢|çz:Ìߦ–—»FýÜð?OŠVh퓺G:ä̆a[¬ZGºíÐê˜Ì1evN+ sŒ.`2б尵–ì"¨Ù”/_Ð,°]úuØ)ìG¨! Øây".m.bÑ==d ĺÜ‹àSY]ØÜ‹Q:V6Z¿Æ\1¨tsÁ}@†gix]©áyxŒg»[>„e3€!{‚»Ä¨,f† 'WO®]÷t xàŒâ_—îlÒ~ÒɆEua¶sÜ!…¯ãÇ1¦G—h¼pkO ·ZjÐÊ9ŒPR„@X{qëyƒÚàA°aÓŠS9¿„e ÝB¤I,z·Q9A¯ŽÄã‹ßÅ ì\@تåu±bGíÂì6 ü±D Z>Ì«V3îšF_‹têÄäõ³½q,³¢×\ÈÓÃT”Ð&F*BÁÀi0.¨uÌÀ”LmUJòIÌú(‡ ðÙE´'Ä®šyÑ ípÏYЙr]A³h6>†·pºÅðÒÜÌ´Ù)Y‚
-ÕìÍëA°?qíl“
-ÄaN{z#iˆ£ÉqâP‰ P™‡Úq\Ä0îg=Aç!2\à\ݺR»G€?©8wñì‡Øð¾§ÝÇ´–Âì`°¿,†eŽ9©ñÈŸŠLñû¹nZèX°–J$ É0ñ,3îDí =9«é}3ò
-Σ ikNùÖ0™ÍPZÔ*;£…àl±©cÊpýû ~3_ˆÍe´êá— mÂeÆj€­øvhØôP ²$œY‚mEþ2ú±ìœkâ&ø¦ígšY6 i£©*+Ï`B0%1 þŠÀW­µGÈQn¾ÖfH |§ñ5&xZÈ@×I%<¹ƒš¨ëY/Xˆu‚Äe$MãöŽJñâig3} ú´r6'O/h…dJ
-ò¡¦N!.rEëI’RUy÷5kÿ€–¦ ÛO}e6ÃL‰ìª¢ƒS‚ó¶i©v ±ËÙÜ!x2ùŒ®Ýë&d¤,‚æÃ’ÏU—  ÓEd°ŸŽ†Eɹ=!•
-önœ-Nœ‘;†ïE ì¦Ä
-Bv(ÀàªnõÃã ¦vž¥ôŠÀüÍ·•`{Ñ¡¡/ B¹‘ÌÌì»Ë«B
-dV
-´Ú2~`̺r{ŒöŠ¦ößç&>ÅÄK²!CQ¼?¼á" ÉãN Úz<k…¯fÙÎx‹ÜÄkw9¬:;
-)… +«•ž¾s# ݦëULO0¼”¨'üi¯B”‹"}}¿êFb€XV¬:
-SQ\­€(rax&æ´<@*É—–2`˜ý¯¶5ÊšEôä>@÷†óΕ hÈ'ÖYm‹yh‰LâÛABvÌ.FaŒ½Z—hW
-˜Ì°Ñ8&š.¾ƒ2@ȺY1âJ“â ‡ût%Nü
-¾¼ÉànhpW”~Tó5Œ²Ô‡å¶n
-õŠZ|uXψ1ËïÈS¸ßÛÑï‘aéa¹êßY@[Ò(Ð$ØmØÐܯõÛÚÖ^pU` mL•oYú™Öw”‚4©mÇŒ=^—SS€`6y'pƱã*Újø6E9ÈMš’–Bëá­µƒ"_ÊîÓˆUZRMlŠd%à p³A:‹†í¬&ü, Ê_Éb(Ÿ]çÀüSd?>£Ä­P¥ùF´¶•ˆkxö¼¤šz%hB9ö›Ú§šZ|ñ?c;18bå>|áÓ¸ÁáIÜŸ4¾ uúÍT¤!Ž¯¤ÎbhFÝoª2ñÐû‚„ÆnFh¹[mx2CÚ'\Ø,ôìÝŠ¬¬læ¯Ï„ÉßË[ƒ}UÎlVtIìÉW§Z–ÍÎ68È S2MxñÉT´Oƒ8ŽE„2È›Å×âÚ}b#9¿­ÄE™EÛ
-,{”ïvO"ß”[lÍ|[“d"5½ñá;R:1;³¶ Q~2Ø\|OÉD*³ì.ïâ†\yÕð
-¸yÛ;ƒÚæ®±ü2nFl㓲œbÔʪ1΃¤Ô~8¬›añøò0>çXœßa¸¥ØÕ:Ò¾MÇVÀ„ìŠ )wAÜHv›u1ÕCò µí£’ØÛM»˜ìpÓãm,> ×n¹Q~E(°5¶ Çâ]‰áB˜ö9¿^Îe>sS¦…‰ˆ Ë]rÚà~`ÈmípgÀ[²cØÉäv@˜v¢Ë7<ÚkÂ-‹_®Ç)<5Ú‡‘Ü~(d9ÒÈX Ú®,ÀûâU#®Í?2‚l[^í„2C…l¤q:¾‡@U„ «l)ôfE"/zGäÂŒTggdÂ2k@rÇx““f·ó•Jˈ0Å.#sŽ?Õ‡±£XìIQüÇïP^*ˆ³ˆû6pdDÊ1‚×mÈvü¤`’g·G©Ç•@Ãú/Çë¦LödŽ~tB&]×¨êŸ JFÖ l:TÕ´êƒÏ)g¾#ÃÒ (vƒ`‚BLp|·~Væ0iÛÆ.1)—5kh¸"Ž…oë3l3C }î†Ê í_
-vÞVÇór£ŒÉÕ0Ä|8/šÓ`ÀÁhMBºm“D$Û@
-ê®öæ» }‹VÅ n™A@ûXíU¼Ciø™Y“ðRô„Of³ÙÒ,ð4í\ìd)+f×ê;X]6a迺™yÒ0òãB ä"Nêä: zgd´V!Ž§ïx›áGì.11R¦¤¼Š(qšÁÞ„¤@}Q&¶­‘„d03³íËbÆ"¿±—õ<k¨éSÜ5ŠÝFÎ ¿‘v‰Ñ¼£”nAðY8ÌߨÄ.‹;±%£ÿ;J‘)öÀ—l ÏŠK,o éÂ{) BÊz¹:Gwq2$³»‡>È_‹ÛqŸ9 õ·ûlkŸ”E´†ançq®}D5klø°\¢û-Ärà¦IÉ tw}|æNºúŸÿ%üçüù7¿“¥,+C§ÁŠáÕs`“›T¹^¯
-}È%oHm¼•¿µ´ MgMÊVMõ2ôµËl Äx3”
-OÓŸ°M$‰á‚À7RR¥5;ŠÌFÃÍÙI¸ì&]Ÿs9] MB©K/o5"öKXiÛEg€:5ÖT–e?åX2lÙ:ª_é‰Ù¸ÖS
-sgæ4¥®¿KOÓûá(ŒxÉ0†×Ö¤ܱ]'7e<?ÚI4 Âw±44g™¥N*a_žJNhóN—ÃÁ#-Û_]1¡§€h• 3ä%ú.qÂ.àîùÏìnÕ˜Q]Âé}‡u¤Z
-«qr§öoŸáÿå5;ɃQæªÛ. šÕ÷·nª¤‡\;„–GvµMÚsÙѾeô®‘Á¸JTbºZ „Y*$*æ»´â)¿º;ˆã6§9^åø™³:‡/:k|¸«³WŽKTÐn³Ïüô6‰™Ô¾û&M²g–bÆ'“ö‚$:랟Š“ ~ýê¡ÄÄkÕ äµüvopn¯òðVo.±· ¿Þª¯{ùŽ8=’˜/kmî"¯×c90OR"ãf\">CÀ"®’?SÖÐÇgîd¼Ñ53™'¶¾U¹JÞ1)M2óÝqÍ #b8£¬[a rn(uGmþ¨1°ô–ç´AÇq¿Å+¬áüSËH~<€4 B’{ù² Øb¢iĉã 6€j.ˆîÜË €{$‰ öЬ®yôÊË$=Ž\Â'è;èõqÖê¥oá­|ÿmÿA‚å.&S.?o^K“1èiò~uÅRF' aÚ(Iš@dÄaq"ö‚iãî†u¦$§À—°ÅÁJìS(± <´‹f‰šŒõÄàXIc#^Rû8Œb¿ðçi^ƒc2 “”\[].¾8I¤3re½i aÙ³\ asÃb<±${­5QÔž¬ù»À^= bcŠ?ŸÁܱjÕMåÖ]Y‘Œ'`]Ç=
-tÓåÐs±
-jǵ`"ºqTyÈ]²Pü|ɲ×:ñ‹y n·cS¢Hø‚“(å¦äžŸÿŠŽ@/<¾Q0òñ/Š®ËwøÜE!÷j/2rIÌ ªÊÙÕÅlˆ1*j¼˜U©Oyb&"ˆ’Ÿ6¥˜†üdÙQübÔÀíâL]y>¯³$ttÙ}àP2F›ÉZ¥ÉYº|sNyàöùš•`"=y`ÍÝ*Ò>ŠŽûzˆ·6Ú×¢}q~ÌûPR»#Ü´önŸ“„×Y)BÈ×M‘² $fƒ”g T¼ŸSb#| —Öì”T‹B†Yh=вÙaõj"­¢´«Ñ• ûÅV¥y‚Qb]Zµ±×˜ùr”ŽÏòFÂ;¸Ú¡Ä>…Rµ ìô„ÏvN⴬Ɣš•ÀŽ^ü¬Ð̽ŽK«¢{P‰òóÜù%0dÍ!—ô „­$Æôužl °ÐújŸ×AÓ­bC;ñ‚L‚íd’EÓ½è8òxðHR òv‘ÿì Cu)¯¢íN[Ñ×;k:¶ùã_•z”&a˜ÊPKÞÈ
-šUU˜ÝÌ~@ÇråÖˆ*H`æ/sÅ© ?Ú“ß”)€#„…‹u¹‰’æ*»U…u´Î’ ó¿²A—¯¸2\’É
-ë¯ü?Íu=j?†ig-+Öª˜«Ã
-¶6c[ŽqäãœìZò#Ë;LõðYRË*Šâ\yNýRtÚ¯LRˆ!gîó_F
-ƒÈÀÕ†1Q ™øʤ¦J$½²r#²Rþ#^µ<ãYã¡ãÚá.;‡ dÔ¨ç9¸‹â –>hA% ØñiŽ5s²þ&ËùPbŸÒM¼xkBètOÓ<?\WnY,.¾o‡Qìþ<Íkçhë2K¹”^Wl ‹ÀŒb¤;½¼°jì{)‡Ô æe5}D¹cò „ÌA®p½¬åÛÏ`"9c PA»*~ˆ‡Ë(v õᓹwF±ï¸Þ± Ø¢nCâo`;Øõy «›±ÚOƒLÇÌ
-jœvSò‚NkîkÑçi€¯Êª¦úE§Ý»|kµ™¢$€¤•öÛ´^"Ó©è53©“ˆ¿!uÔc, Ä‹¡ôWFÙã…Šð@äõR¨püQ‡õ«[©ê5ꔨ
-"UÓ‚=a‹–zŸ†Q<Š³…ÄÜý»Eÿ1^&IrÜ0=ï tpÖÚúÚªï¿õû$XîÊD¶´q8ª¡$ |üAž‹ÇZ 9³Ÿºñ¿ uòDZo=äžZ)¿›æôo˜yžm¬öæðh13ÒÈ"žêl;´‹@9+Ræ°UM 2‘Q¬c—°-\7+Yžqi‘.ÌœSrV5@ò°åé;òâìs³ìEI¤ç†ž !‚0voÚ…3·Å‘½^¤¥ze–cSËÌ
-­k÷Š ‡R9.×4«‹.¯ùµYt(ØÁVˆ&F(΋.Ï>Fì–¹ü˜ëCÕ`uãbÐQB8 HÿúVßi©vÊ8JëЫÃ8ŸV„fqIµÐ.Be2"5©:>BèÒ*$.¢Dš9¨¨”¤Ê>%¼H?~ín)A2+þ•ãX›§qk7þWÍ"šb¯ì+² EÔÖ@UÁ¥:½Z{ðÍlSDøÇFè­ÈsªÜ˜l)°3gÿ\$Y—sf_iü<¼€´ÙÝŠPÒ¬l›8H™ ¨ÉØˬØx$ÍRlÿælŠGCŠ£$Ó=ø¸Gþ¸\†Áª! ×Q‚2ºC™öJ3Gs
-6Œ[2Xï{ŸE0ˆNå-Sùƒe“SBö}N†²"á¤"IÅñë§K„³_vµëe£žÃCx0ÚÎèï~½`»àf²k9×¹~@#¤‡×䯗©™‚4Ø·ãéïoªòù®!dØuÀ
-¦c§MIKÛ˜Á›µ XPpY%0>@$¤¥3)Ž
-ÊnÏYå[ÑÛä{Eð2KïE¿ÝV¹ ï˜ø4­„µÇ­£x°=]úÎ’â ª‚fÎ|+ž§/Õà~é( üДÚj°Y¡ŽdϦHã¤Ü;[¾Ø(ß!qû¨Zb>4<»GLؘ
-Ï—OÞ dXļ—ãI \„<`p .VëÒ‘.f›ku‰ð5bz›,X6fPì;~,¾â€«9À
-α VšùÏ=«úg@ ᶟ{bX¿ÑÅõ­:˳¦:ÔͲÐÀ5AÖÁÓL–ƒ¹Æ]‚Y¤Ñe¦VÊÙµ° qfóv
- Q¶ƒ ˆê²Vîwj—P“ÿ¸Í"PÙÎmT‡ÄÊKYI–Aå•%¼ø ÓBƒ÷ÓÀ‹Í™&¬žð2`g_üöŽ@õ˜jùÞè yhþá¬'¼À'°v˜çï]ƒÃŒtŒæ x/p¯Ú×oä÷-Šg©i¼ˆ†2¥>Í—"1³Jù¦YŠpLIiÖŠ°OâЮo¯¼näàäàÇ«i_N»DòR«Å)ùµÂÛâŠKNŸ!¬L OùÜÖXÖ™jÙzw¶÷ç?N‘çKý`¬¨ ~´“·"Q×D…%d—]ÄqRí
-k ý¬ÀÒ—Ã~…ª ¡ðÙœ‚÷—(¸È.<b’:Ü“Ïul}ÁZÆkòÞú „´›†ÓaÊŽÑÖV—"ÓÃr«ÄpÌuPþ`ÝàæFGyë"C%˜º
-±¦îˆ­ð_ç}­3L’98²Å­†ÁÔ2dÞïà÷ÆoN¸ž§*B˜Û††ñp`®/®°ùXU¢X˜åšÃƒÌOU^ŒS=âQÞ)¸d<‹ w.Ì—Ž*KÚÝV8cµD‰a§N Ìäà e¾ß…L,æÞRÙ/ $&OÇPèÍCQ"Íè”ó#:ë¤àzß ÃüB)ªÚaÚž=¯;ƒº€ÎÁaÔv„ƒ@ßÙ­ˆ×êM ÝÁ­Ó×V—¢3¯Á{ðLÜŠ¦éס~_-ἡ„tŠ,¡SÏõµl»0 ‹.˜]ì³’L¬÷' AaL0EâS²XY§•²a›’^ú¨yìk>ù¹«yÏ©ÿ
-H‰¤—ÁŽ¤· „Ÿ`Þ¡ÏÜ DRsr6°A
-S&s25Åxvl ‹¤æÎëˆvì@¤…”Ð^£,ˆ’”.>º´Åã‘YñhzòØ=¤µ–fm^åW‘êä* óJ2+¤ÜuQjN.Ü×9CI2Õá²²…ÀŠ:FN«¾¨s *’Y·šT¥)&u
-ý¶ÞvÄ°Ï1!׸ùꊇŒQ“lÚz^dJØæ!壟ÙP£D?Tˆ’q÷àè2!ŽúFjþ
-ÍæY¾aÏ‚î[b6DñµþÃæúo]s4×å÷Y“~ô<TG¯¢/Ðé[[tFû— æ #®hI=¹L-ÜÕ¾L†œÆDã6Êœ-åô•KÚq¬©³S3!Z-EŸ¦Xeã!L`Žn1Ï9º™õc²—Œ5[Š†*C'„!‘­+7ã*
-Ph¨d­íÏAÕ‰‡Æ}G jYzÊÀB4î³–¿ZÙcòy]›-¶¡À†áâ&ê¼4sÓH,Šß˜§"t ®†©3““ƒ>aWâtT
-¹‚e|g^¼ä_͹e*:¬Z Œü Y˜Ã[ƒu—ãQ»«Õöœß¾æ#s¶QÝp“›{¢ß&øñ¡N¯O´K6–ÌÆj|mqÔ5vÇ}y
-*íxÏ
-íÑ;MÝ è€0$Ù%(ë„TrŠ„Šd¯ìW* XW‘²Šém´…ÍDÞ‚2‘’¡2½ÆÌQå=nXVt< Úf›ëhœ‹fAìQ¹h¦+A=[OCzæ( ºæÄÐà¨
-ŽQ|v£¥)ë^ÑUYÍ6¬(a®šçtrÿò:+†_f¯å=õÑ1¬KÃØX`¤w“*k­b¸,É<˺‰mˆT4B \¯ÏèàYn¨½âg9“‘Œ"89h,ß— TAÖ7½_¸¡§¥Æýõ YKRG—ú„°9‘!k±¼Î«éÀT•ñè6œtmú­×®É‰
-ç×9yÇɹX1¥I€ˆ”ÁDrÓ,-ÿf¼L’ãÈ• zÝ'(Ã<¬ù—¼·äý·ÿy"PÍÊŒ”hmÖÖjy!|èn_ö¡¬4Úþæ`";@¶éö*Q’Œ/›»0Þ“‚RÙíˆ~iNsåøùÑ¥Ïߌð2­Ç´cH‰{ ËSb¼œö}Á2虸؎$r¢L,
-ex4„>okt¾ ãI¥2«˜Ó¸{”ÆÞÕÛë ¥_–…
-·ÐFBwb¼ƒ¼têóß{¹lQœYOø!;f´=Prf ¯–J:Ö÷
-ò|9{'?òm¬¸€^™òÃýÚo0ÔH*Än¬–·ö@-ŠSù_òe ‚--IVdC]|2ßŠÉ Ðr",A< Ò‘À ¡êyG­šËïâ… Ä±“ÞS
-¦¥&1ê1ËkR²/Q f¯Öíõ‰Ák{ó‚L,%‰_9Èçª"
-¤>vÏÁÖ“Ýpþ pq/ƒ1c x[ïÞhTF(Ùš_DšôP™ÞÐü_/}²1ŒJ bÞßü«p[ W›#ß= *R-1Ÿiî/Q(x…eÚa+è
-š¤‚uüG zjóŽrá Hq©·O'ˆMÄ©ßÞ9§¡¹Þƾ뫜!>WÇY…sÿµRïkó¨3\Ã׫~·(,Ô(×XP¢½yüŸˆ3
-Oçóúð@7¤ñú¹3èë7w2Ò`~C¨Ô¥ö-N/jú}ª¥æBŽÉËúÁGsïIä¡šT\–ò€ Êk²”FÑxYÂëD窈6—Iyö9¹ÅAvo¬sèëŽn&•i EÇ|ÎãSõ1|#ÿ&„J¦cÊWš¸WŒŠõNóZÐ9¡«ËJ­CrI(
-Ö–L‚@,Ø/éä€ù~hžF‚£¡C*ãþN íJ©ZFd•È_Ç,¦u Ý¥!ZFTí¨?ÞcßåIè*g2+ùù¢ è5°ê.,_‡<#™&À"Á øÜ(ËÐÌï59zKÎÏÒEÅÚ¤–Û
-èí´Šµv®B£É•£|üÞ¢bÕ­ûOl?•#©Ž¼G<káöjç°}eh“.•«ê°ã%M‚°:þå©›aê <´ÕÇ–óœ…ÊÄbÞˆH0ÏäÑŠ“"" Qœ ®mÛÅ0~êÚøjviVÛŠ® ‡Û«ÞZƒ€ /~\ÆSQ^éAy‡eÅ0á›C2N9“•e˜lÿ4¤Å?§r¤SJ¼U ¤[|~ D}”1amÉ° ‰Yuî/åH´y73Áe]Q3i\ÏÔVÄB“t‡ÏËa˜ªèº9×Ýk8$ ùO®GÏÊ$¦Ô:—Ë¢­é¸q‚‚"hS[eB¸”lº:å@^ìÁûúTã¾QìŠú²õ¦ý¬WŒcnÃÂß³`¨Þf ¬,»¡5[~Ÿ’œ< j\åq#ôÙ4üÞ³›¯¤¦ÄÛ›<f"V5V¨tc§NÖ©zÕ—²Ý
-Û<,u:A¶ë9[£ë9ÖÕ”¦±E7/w¸Õ·ÿéƒfe.»Øר€kF–I¶z¹¾+¦ŠÙ裾øv („Ü{I»ìæ5Ž1G]%WÈí ð+äs}idE3È)Ý3{;àÌíKPÙ±̸]fjz!èЬ§RHÓ«Xy0$¼‘aØnlD}Œ”dæ@0P4(Od·!Ñáü‚udaX»0‚Êê‘%²AÔ ²ÂÒçóÝ\nš©µ-‰E²ö*¬GÄ!óøézºK…_ö¡¢ÑJ–öæHŠÏ’Á»«¨(0Oª÷OŠziQÑ+Íë\yõ=#~4éóó«pÖ¤'ü"žJdPÊå°ïņ—gŠfÑÓCÂJK{ÝÎ:¶Vò’–…hc’5ã¢~™ÇÊ6“À W+NzL‘à<ôÒœê”u²G{úT
- µäìûÝKÃ=ß̈֬qêŸS ¹]Öe$ÿ6C“¡^”¹Þ¾ª<°8øê¦_œòè£Òp(yúv ?údË{‚œºþuâ1Ô´¯wz–¤a`>Óâìùáò]
-£É³ì‡¿ðPêÉI°Âæ­—68ŽàÜN×Yh­Ür>Â9'‘yq¾Røò:·aF{aÓH-Þ½ŠQoR,æ Ýúea¨1õðx1ÞA^zõùïÝüøO®âÚ ó”c÷—ØT’7¢ôkà£V
-!É[ ´q(ÁÄp.o@ÊðâiÆ7oÜaoØKÚÑ~ gäŸPùüÔßwë?Ù )†«0Ö¤q^K]ÛÄèÐ÷ I¿½8 P…Ù5I<8õ@¹Ë&±{ÈëÛ!âà“’¡‘9gŒ#z$GV(esªºFÚxÛ1 ,PV8ÚÊÀ1f¬ÜaõPR>‰Ö7/€€ 8Y·óCGP&²)¾»9ƒñª’“”ÆÝE¢|$?k©Ý?‡åÿ3^æÈ•ÜJ]÷@[Æ Ìƒ© Ûî_CÞ£©ýë\ QŸ¯
-ÕÍ6ZAê6
-™È¼ƒÂC«)qé“‹Ö7½‘BrY5'Ö12[ÐHxÿÁcô¬ö°mb87$esÁè:òIhRšBŸ¥×~ÑjáñQç2FHFY·¼Ì¡×¨öÐ înÖ¯µDîQÃÅñ
-¦bšT”¾^‚+S£o+$:M ¼×J·Åb2dZé`;, Î.¹„’ö²¬vÌ ½°ô
-^ÿ²Û”â« ‡¶¡Åg±»dwqI˜‰2Eß6Áo¹$¹ç¶?q¤èt,1¡5¢C¦yºg%‡5&•¿qU¡j£Ï ’·çµX¶ k¤—OK(< #;ô4ÄÉ®gק Xu)Ø»· Hµ9Ä4Wª«“¹,36æ0Äíl!ŸãÑ5ø ¨‰6œk‡ÍúN™Ö£ŒiNxUÇ e–±tÌ3£zC™¼Åsç;ï¨×!ýÈRߟÃÓ£lÞre}ªÂSƒÿ‚é
-IÁ­¸ÜV”ÃÅñ¼^ ú5A…•¬ê„OЀTD*çZgND*kF‹’AV^ã¼>ÅVAX~Y\
-2Q“Û4 ’ߢ_‡aŽE†Ô¾ 8|rleq3 ¹¯æЉØåH“µ'Àæa/¥æyNt„6Šël*zy±mëSgõï܃Ór‚é4wSñûéúf~‰j™¼TæºG<ÍÈC¬mÄað1‹ëlÊ`Jn2 ¦V>!pÖ
-º`ýá…T¸'ÑñoÊÚ.÷ óUª4…,dÉ©‰¬Óç1,^‰Élq¿ÈHf$‰EdŠק. ~Fyfî8Ï!OfíbekÁîc]±t%NˆÌ1xçW6HÊ
-ù°Ñ*:š]SñzÞ€ v×a¼Ýš?íf¤Ìà‡|B<Ù×`óWŽ9”²ŠbㆵBrŽùk …â nºMU]¤¿­êêZ.ã·s?gúÛœÃð£ý%—ÁßÊ33(B"
-Ž¿DäH}]çzÑ¡çOÄj,$y†áìÀ&ë}M¼å‹KßBAÆuqchöÝ·ÅŠWÎm~zÞ€ŠxgW[4©!Gâ®ÑÁ‘,y±Å$
-Q-ðÀ2¸é(üµòÁ±GH’&ºE^/Ï°qÓççܺrÆ‚|€c$.úý9 W£©ð]ˆûË0£Õ;íZÈé®(ͺœsQRØ3òec¦û@böþòòTŸ^N †™q ¨èWåßóãØá„â }@wIô×”ËÃc‚ˆ(‘HT&èü¹3èù“;éêýúûŸ·¿þ}SEØ•ÿÙ\f ¡ó/Z‰Gø2U±á¿=oF x:ÈBå>ODÁ,+)âŠAé.>È1ÉâJJ¥Ôý9¿„ýb&I?¾ëÛç>H(Ɖp$´7!ã•7Yæ )`JñR ‰Ê¨šI…¡ñ©Ì¦S*¬ÑF¾„!Ç<x¹î4ÏÁ¡’çƒÁb%_&ÄÁ\¸2-¶ °ÄÚñOª~3>•ÐTŠòžaÎD+ _¨ÏlNRÒG»>ŒˆsqÚu:tÑ[kÍ ‘²¾t‘a¸6¦%ûĦTtt@HŠøWÌC€÷²Õͺ3—˜YÑĈVÎÑ?Ïs‡€²† b×ð˜(ÄŒ—9r9EO ;ðØ[.oA—¼¿;èê, G12¨ÏË_¸øþN¥|´ŠB7)¸.Yì(©ySSç@¾Üù{ÿNÓÊBkÄÖrsñYÔÐðŒq÷*¼ %­˜ì1¢_¦˜~2]ÍjÜa7*£s)ÒfiD“j¬…À(p4S1Ð÷ ˆÍ€,HxË}qßG0]ì $ðoüpJ,Wñ±Ll¨‹9_ÖÌ®dD´‹8œotzP³XÙîUcð“øÆVaÕ·#
-+˜­ºÈg)ÄsëØ
-ïø|nS *`KmjF_l;“mKšÊW2ögÁß ’ …ªlõ9ê TP<æ í¨¦ÌDïâ°Ò¡cP?ë<ÎÃa lô3¬2•÷õ†÷Y¾\ öªɧ¤Û6’õ
-#YÒʱ)ÛbhÓ†t +TºAÔ)¦>2Uý5aÝ&w²;‰Fu’¨ÈhÛ˜³r¼{†b¬Yá—J "Bæ“ÈW£=zUôãKCãþÎÐõq#;kÖ@ëß`HÝYo P^‰²AÔèY¿š
-…„ &îªÜ@^Øß?/“˜—.«A~ºDx}ÿñv ËS™Ï€ÆhÈÎ9Ú°ÃسÊñ$#…¬œ¯
-ÜQ&>I[*ÙJéh-‡ÂžÈ]µ¦—¥&ظ“a'?˜OÆÂŽZOGs¬ä4
-Þ°ØòöÖŠŠMƧU¦ÐlF¸:&9N‰‚ɉ’ñQÖòFLw_<'LÿŠ_9ŒR¸-z`
-„«e&³ê¡¸Ÿäe™ Üñ±!PHÀ]Ʊu}(*56‚' cùç a5›LíÙO‹Ùå‡[DqÇ©©Ìx÷w Á ñŸeCøJWr½²!…èÖ×( bGUÖ
-¡hAÚÐIPÀò=îmºÚÒXïQï_…ârLó]uШpäyWà à¥Mç˜WŒ¸/üôáÝ¢#T˜G‘KŠÅ}MÇù5EüR¨ç˜6g‡ˆ9¦‘eâÁØ–´?S5drwÁNJ©–1¨~‹.;éÒjï;—q.s™;ÿM¯ãë•æm®åý÷&=nTÉ@¡Ѷ›­„Òtáñ\8üø'µâ€>=d JÑã``èõ¸+èû7wúÜW„‰ŠC¤$ý8\$-€Q!™Ÿ ¢¨³éÕ½;Žñ{ƒ˜Rœ•Ò¨ƒYLðè˜Ä4Ÿ†›¹cxš´!\úEiºAH¶yëÈÆíWWɈׂ
-ÒØÑï·Ôò}rÔ'ÿ „‰i‰T7<ke剰ŒÔ‡žøÞ*ìÕš7ÞŠgT,GS”)äk%ýJ+Éx Ýv|OÆÒ X),b’û4H²ª!6㠬߄årzõïñù|ÀØä 
-wÌŽ'-ç1]“æ:‘Œ^Éii'àT`ëÌ ºk"€ôŽŸ=´|cFâ k¼fÙüïàÇ"+|…ècØ9ªa> õª96Ž”.s[·Í(.zeŽyìÛ¹F þ÷ ˆ7Ã5ƒ£ú´ûàŸø8;uB‘¤ÏUs»¬--LÛh¨!´‘ò–÷<LlE:ûœ8§²Na'
-JHaØ9Øoú‘õ½ÊNdšr*·v1 Q5P¡‰(î.S(…<{÷(F‡m*òx½úÅy›®÷;—V}ýf”?Ÿ¹6â
-Ô-œô6‡×ïýÜ€jBsH Sm#FhD›VÍ)pÊbƼ!ƒS¯1ú€5±l:ª|®!—ŠYm{{h|>34ZµÙ HoíÑÇ{ëÒ("ÐÉ^›ñ€`9b…*Peÿ6ãÁ'b'Rî^5™?C&Ï-eÇç¼á—ؼ´ÊVùº´þûÑâE}Ò̇sã©_iXÓÐzõÞ‚ñ5]—·TñV?¥ä” 1k
-‡^ºð+Þºy…œ™Ÿ”JrÐ½ì± d7Bɧÿ6Ì(ÜÄ„Òo_¥Yo—‰ÖùÌü¶1T}5èf¼¼têë7ë¹]0¨kX!Íf>?"¦!ž%¾`«Wؘ¨þ`þt!ÍO÷¸_¦è˜ÈŠ¨Ò‚=­¨Ëæe*_ܵ„¦.T¶LÜ%]ÖÇ4HG.ö¯ÚDc‚B¨=¨q§Ül-’J æÑî £5¹ênm‹Šk˜‡>Ž,W­(†¾!˜¦é5¿é@ì(2^J\9u´ëŒ„à,XŸq ˆÂ÷< ‚odfq<‚M˜†(k÷×úU UÜ]êÇlâ¬'>Æ©r†
-‡m_IZ§*™YØ—¡o™:¯Ý ^‰CŒÄíw0À]÷ƒ©înC†m¡ÃåîQå¡©L¡Š#üâ
-õnßËÝðÿ0ÓƒwŒZ%<ç<W’m`4™« ¤
-³Í–¥*
-P\´ÚŸdñ†A ˆÎŸ`z_ã‰~!;Ìâ '^¾s=ÐÂC5 ‡!°¹˜G®žÖEjÍüò Ch8±âŒøÌç"vÍËj¾ñY+Ár¦µ!G¤eiÉ¢Ð.^Ø”¢B¡Ðc“FÁ ¢¹~Ö
-…ðn}© 7Á†÷dWe%^Ö Ö8*ÅÚAFÐ’U' j38žz˜,ÊX)h°¯‰åG£^òBß°ÔñäJ•Ž•oŠŒ ’6¶(Øp ˆ‰÷PÒœ\ÀÅ(5îlJ£e8 £Æ bîúC; I¸x'±=ŒNYuØ_ƒg¬2óãì†ãHŽá˜x;Ô¾ûÚ»+·iDµº¡Í¦t8l$*;3XºH¬€ÌͶ`-èðŽ°{®É;åæÄðJ>èè\|€\Ýr¬ßÿ÷MO’â 7
-6ÃúÂó vÌ;,z ´.qƒLŽ¾
-ˆä(k¯ê™
-6 dùÒF°®HE
-/ów¬ç3q"ÑYFÑ='jn5ÚQ®Ã>Fp*Ädç !}
-c8çý~
-R?2÷tÎ[¼¯yëç۫쪷¹`¤ E×D«ñÛp¡>8î¨ñÂ<@îCÿ·I¾ˆé¶!5d;o‰~?€.¶yAòìÊôÃ1Fï¨tº‚@ÐÀÀé•hp~¤à¡uÅÒPW–ö¤­2ÿÂ%+wpøXåDŽw–¢c‰œ
-ªÕ§ ¥Åèä¾éky:' Fƒž" ¤Rf!B°goè•‘«ržšMèkÄŒÀÛE±–âüÜ Xñ{ )ÿ‚$´½'\8v2ĽVLÌÜŸA
-+M¸½5uåGD;æ>¤×"bÀ©½ÈÍD[n3d†¿Ûè'øˆ@…Ùð¥ÿÖÏB¨­ìiå¥÷†>ɬZ¯ÇBdÊÁo`Àb3F|"Xæ\¬>ƒ³‘O¦z¾4t5µ÷_N•wò«:ú˜ß½‰òdÓÄ?¹=@h8‚OL9«þ¼^ÿ‘Ÿ‚ÔÌç°¥e7X0¢¦LíÚÄ
-í!š½+"9 ŸO 0&…Ì•Ø­u@ÜÃPÂzaUYøaV
-‚;E‡¯~oPáJþŽÀ’}R+h}ž¬¯1—WE1R hVüÅ„ŽeIÝ®JMöy½Í¶(ð'¼‹:žst+î‚;‡0—Ù©ÆOM7d–
-B}€È.Â2°Éob9Ll³|?üõ
-zÈzr9•=-¯½ÊtÌŽI$¹@ëJ°Ör!ãˆqy¥½7YöV%vïä•»¥é•ùä¿SyðµõCƒS³4Ó>yè'ÐD¼!Ì"DA­_CñH‘ñȯNTþL,wÒ'f ·ÁOÅ0¦ýcüƒ-yæ 4TlqŒa!1’`Œ,àˆ“+[MS~Ò§´°:”c/Çò°TÜ/õI5šÄ<šÚHÃ*ý)A÷o,)B]›^ð$J˜æ0<c3‘
-Õ7™fz”óü©#«B‰!ç Q6Ä-ˆ†"©nõìšAK—ßt
-F ¯ÌX©†‚Ѭcï Uˆ—1…ða»?VŸ»Ì]úW넉±mÌg§)b¨Žáú/eZFD[á’Ð(“2²€3W9WŸìò#Ãÿg=›1U"rP—žÎYÄA‹R4ÙHN¢²‘ b SÇÓÂWrïwnúó½¬K÷¡í
-.äó¬gC¡È‘Ñ¥(AXiO’áÛ:‰5 Šo{²uˆ5†r´=6Ž¯C¬áÁºÆäÁ×9»¯»î¾ÎY‹»¯s¶ëÝ×-ˆ² f†Äèùºµ1Ø‚<øºÿ3^æÈ‘Y=î
-w¶ŽFÂ-¾!Æ[[Ç`ðbÍ\L7¶Ž_c­P»03ÁÅÖ“LpóÌí­¨!+8¸š{²lÝêÉ^ÕU›Ý~Ç’ÃÖA4Ž¬Á2q |9Z’Ô¬ ø11W[#.‚ÚÔ÷¾
-J>ÕCýÝ9â4ºÍØ<Îó¥kl‚ãK¡7Üؾ0Þ™±B¼¡øù)î¹m‰L8 ér mW¹6†—Œ;c0¸P~G?üúX‘^jß÷jœç•^ɉPÑ´Ïd<½ÀòD9nSí8#ÔBÀˆ”c}Jy¤I0jÍ âi'âÁž¯±È’¨³0ôoÈšÂr@ü8!lÆv-/€¬Í¸|î%Ðó²Ú3ÿŒù‡ÇNè7)§ O;Ë€ª çÓ güÜ€¼@µ¥fcØ’ÂÊÇõ='¦&†Ö.ÕIwŒŸH÷r4ûS×s´‡¹¢}~}
-j¥²§NHv™ydE¶Œ…Î%ë°÷ËJ
-Š&x¹/1¹Íc1¾o@¼új|ªö}‡c
-ʳæÛsXiìZ§§Ö•„›‰z-·œ±6¬?üT|³‰ú6‰+×»¯4mÛ$cÊR.¡-Ž×tGâ'oH.“agü’Ç6NƒÄ+}ú« }.ÉθªÌ7'Ã
- ¢S² bµ¶úÉèÇ:¦Ã€¬ìU0Ù®ßá¸Êdà§Ömt-d
-~ABRˆ!êì 3Jô²¨iË`Â¥,oë ÄôAzTg¶ñ 2»åT[â–X¨1jh‘á_ñŒoƒ×o¢GÎ*s±˜Äv7ëÜO N1¦séx×O`å`a¯Û…TU¡ßœn:á-4Bµó]Gý)wB¦¦Ã>ŠÃ¿Eʸý\Füøý9!m”
-jô ’nÎ9H-­ý;ƒÌF¸µÄIFlÜm·Î 3}ÿ–àÿ1M¯!êpÙî–^PiåS›)-hý ŠŸsÜ6ý ôyb0ùkÔXŒkY §¹žGë].D£šãÒŽt”¬²& æ§*¬ÑÒw@\ƒñ²Ý8å8ŸÑÂa ›ž!¾uPÓÎ7q[ƒùÙN3Æ®O)é°Œl£ €°ÿÜ„ùLþå6Ú-¢iîÑß¿*à>à ÜÏú”pÖÆpË÷ÕR,÷ó2à•2·ð·=ÿxø}UR¬ÃRXNêg‚pè¥ÈnUÛ‘AÁx¼Ã~â=^ O(H=äÙ`œÂ(…[ÆÓ¦½D6Õ´¸Ùy@h UÒô¸uNª˜"-ZèËIUŸ`J”þ"ÓÆzÖÉ¿W#Ç8!Cøpä÷ ˆÝvžÿ©3êé¾ô
-¥vù‘)¡|Æ|½OßETi |ÇV‰Úð2ûݘ,Íý
-ø[¼4üšÓ*q@ᲧÉ2s˜‹šâBKV„ùÚ+š“«"ó`ŸÓ1¤>Ç–îÛDe°,'5!ä­®ÍiÁoÛ’©`TÌlûSŒ $Q÷þÉãÅÀ—Åxàì:Ù¦ln…ü „.þ»`Ò=†¤V õÇ›â DËV±Ð9Of½.Æ ôýf¬/EÝ™fÞ¯E†³;5K~}‹=ˆ2¤áƒ(‘_‡@ì'5Ew÷ªñâ ·ý>£±¿Ê”«çÜ^gGZ2ƒ…6XkµkÞ€ìžlè„Ë3¸^Ïéc‡\öuÑÏ'8˜™Z=gÇd'¬Ûà;;&€AhñшŒ¨aeI69HrŽ™jl™€>©*kÖš#~Š/Fpt²3›q[Œ‹Â†Î1å+‘Qò&鬧“¯4t?±@ò<†]ý쟂~Go¿¦É‘ºØb6 ÐÛnh¾:2AêdÓz`½>žÛ¶Qÿ”Q r°/ù4 4 ¸
-'xTþÛWH‰µ8?†=D’rª¹LL¹Á ]F@G”½
-Æn†›‹l4^PÑïÞÃÌ0´äG¼t²ër«kq¯ÃùÔ£¯øs祜»ÊÓQ/:Qã~L÷fkãÈt˜™áµMjÐ[YE¤6•Å/#Q‚0Ƹ:‘D()öeÞB…"ÊXämDt…ç{,@][…&qÇä>!pSͨéÓ—–_k´"U÷¢X|ƒyL…T¹1â‡}ˆH[ÇnÞ±´!íÃD\+q˜ þ-ïÙÁàÙ;R›ª aU–þÇÁ}¼Ù §¶› ¨MŒ®cj±]ëÂ-’icߤD©¢$ÜÏÊð+¼²‰³‡ÛuéÁJØ™ð¨0ä³;'„ºE'³Y+2ÖÓ1BÚ‘0–4B™A'ÈvlV$ÝÈÛçœæʺÍe<7]§üR›ë®œëk­ÜS›¾^ÙK­°Ÿ+\œWì¾MþúÆË$IŽ\¢WÑ Ò8€Óúou m¥ûoÿsYÊD«¬MmÝ%Ž‡Æb†H-¾Eh[âF›àÈ’”±B¢V’ãO1ÛŠèü˜ÚÃ/q›\Åóé©í/o¤\ÖâØ=«$ $^b°gl»!èg¾MëSY!I›ˆß¾þwȾˆoÑBiZÿp™M‰ËáÐ3@
-¸}n6Öý.:ÕEŸ— ç]Žäó9Êõrí2E=‘@ädºÔZ<§¥ˆµ1jb}úšK5/¯ÚW}Š"ƒó[*lj9ýðå7*“4³îÊ[ý»âÿ%ã¡•èJcÄÅèuÐ7ˆFdyLX<,®NŒPx¶Ù±:þ“$·e*¨£)qëÜq– L¡&ðvÛ‚¶PÌV¥öÇ^P§HÉÒ:‡¯Ä«™"Ñ\“"j5ŠÒÚƒÙIP0ÔÏéþ1õ5tkdœ}rgVó®ò zcž“h@ƒ*¢çF.p ˆLõ ¨ˆôú¡-E#hbU(tUåWM¸’=Uƒ¯Ø\é ÕÏ
-–\ëº q0¯QK Íß«$g¼X{nÔ¶ã[⥽sln§¹¯bôÓåI+„õ„eò×½,fþØW´u•10 ƒC)uwdÒ(¥qŸƒõ –°µªÆÑÑ Jõ"0D®4>  J«š÷˜6æ„I{ÉO× /A¿wÐ"¡¶£@ÚÊЄú{·Þ_T½s†„I§§Ù©ž¦<³Bðeú4°åtš¬õM²èž’–U&ñrTÀ›¯)“ øo²ô„£ºžjvi³ÎìÁ;Dpà8€àÔ« /f’QzÌb±“ü ”¡ïð²S‰)yVÚ;#I0õŒiµû½uÁÿÈöf-#ã觗ZÒÖÇÙ̘½ÁÊ×iï[¤øM4×£;Óí—ã ¢¾pP‹Ýâ¡*¶gŒÙ˜Á¾¹ýË#e§Ó+X–:ÚéÁöXƒ”¼3ì%/°»`Ekˆ÷Á¦ÜT5»Œüظ…Ì
-ôžö¾;q‘ÓIá<?Ûz¬I[*m}=~Ș&= _ Ë ʃÄ>¢cX_ÃÌHŸÎÑš—µ –ÃÍä>Ö¿VDEäL0&cÞÌ@2ÁÔ¯vnúoé|áœÉá£ú,<áœÑ¨Ú,˜íÎyA7œ³ÙòXø€Ÿ8GïSËÑšÉÅ9Bð=„Œ9ªÿµ.bÂC¹­çLžÅÏy÷xOÚO #
-‘ÂxÓÎD¿[­è'<žÃhz¶Á˜\ž#P£çä§fWž#ÃÒ§Ü|òœ
-Ú°¾ÊzrP÷Âsÿ¬ùÏqac™,Ÿ1•žÓ§ÓôI‹œoyÜÈJÔù__]ž#„ïàvžx΢¼L“€L—çò„üÔæòÜ=Äá9/èÆs÷ Ïé“£ô‹Ës<%•ß⟣Õ+Ï)ƒLÏÀ'Žž\žSYG±ÿù<'=ܘ±'œ»ö±wŒª‡š ÉÇ9+ßH\‰ùæˆÉZ^@¡«Ks„0z«ðEÌàáÜ=Äá9/èt÷¾p€n P ‹
->ЩKq"„j>Щe˜Ù4<¼öt¡"D4 ] #n¡ÜøZ-.ˆÉæ¨ “9÷øt*:ÛHGø@GH5õ'ßtÀðt„ ÇŠ¿ƒúö
-XOÙÏNè”
-dw·˜!&''ëã¬9!zx†Š™ªû~ØbˆHü£$ŒóÁÊe(¦1N…ÓÔ}û ³Ún­õ<~r˜i”¬F3<Iùä6Åõºo]ÕÓû-è ²syi^ ‚:ç® 8F_ô†ëÇÙø÷ ¼<¯e v:!½kÄgÉÉué\_l§F4ñÁí b«€Áå|¾ÛçÆüÆØ’†x>µcÇÄÙ™ým‡0ƒ‘­,wËÌ„ $f•— ÆçЋ¬j{:wí/ôj´µ¢ÞƒXÐphtYèy_sS»†r‡Pé´0J_O—‹7)á°BDây¶kËçéb\HÛŒMâµJ¸Ö×M•9MUÃ<æ_IÆ jÆØÓZ@PÔWÚÃZ@=É•ôBÞÍý*Š!(§<½©`‘©©ZôSsÓÖ=ÁŽF?
-õë;BþùÞ2ø¹ó°ú…eŸ÷Ç ºñ3!P
-õ“k²SE¿µ¯¯ˆÚrEŽµdƒãùp@…3)µÅÂçBàÄØvs‘2ÊÜÕèrïµî.?4¸«çœêŸÓ°` 3KòÙÿšÆ j&jÔÕ•Qd,lnjú+·ŒA1ÅŽ|l'¡¹57D‹˜)ŸBØêb'è£î¿Ý ¶^ékÄÖCZwcI H:×Q)´OjÀ3¼Øè¾=âdI¸(‘vŠÉ߀¯[ÒÚyÈβ ¶Ø>8~&nÏìf•Þ D¼¶‚¯Œÿœ‹¶¼¯¹IÔ{ÕMé÷ìÜúå–b§í>*õë;½9GWIã… ÈzYùgA/#²öm¨™5ÖÎiS‘Ž¦ï˜à7Á6¡^œEHËŒ;žŠ~ü¶ /9š5ýñBæÛ‚¶È‹ >šTW  @K§ý0êà‡a+$Ñ%@%}¼C£•¼Çh|ñr¸?Å$Áûç BЖdŸN¿~M È=Ì¥M¦âš”»Œ¸ñ…\l{–h^jÎcñe…
-ùïÒð< ¹CäNòãÔï„óý2R¢1ó¼:Œ·îƒvñˆ–ãCóΚ†µÆãäV¸‹Æ"<ÆLáàdú4¹—
-H‰Œ—ÍŽ6„Ÿ`ÞaÎÒE‘ ç˜ë>A°{rŽûþûQT{‘nÍƆÇÀ´«õC«JÖÇÃç\Ñ£5ýüµ7yX—&*æú)–‹f15¤kµ5øŸÍÏoÿþhŸ¿}€´ÇX½7÷5e$t<¢15M×çŸ{¹%ª£ëT_Іô®+Dà 2{ ‰Õ=¢hZ»ÌèQu ¶øøó 2ËC[Ÿûr|KmH÷&ÍÎ:jmDØÜeCÔ»õ>ÝÛŠ+¤?\ÜdŠšràowP—°>ל.ýóû$A”])ˆ×f¶¯9‡´]ÂöXª3¦›GÓ‚,·¶¤wõ"£µe³IÝœ
-¶ ´ ×üU"}†²Š×F”´iŸ25ï°!“RvŸl´6Ä
-f›mèñGµ<œ Fä îË8—lÐe锳S,I¦Lç
-bü¡ J.gÓéúZÊŒÜ@»£
-sVÒXd¶FË'‹Û8ÄXПµQFƒÃ2ø¬{:ƒê —¯9—µFÎ ”òª²sž°<’Ì#ƒù†AËÜúa˜/ø`¨Š„¹¦Á¸uhê“]š5?;Á4Aé8Ò8Eö‡8ÂÄßV Å‘u 0´¬*¸›ÅUš}¡o§“)©{Л@
-[”é(¯ˆ‡q F`Ëiç)Uy¸(5åW>U¤¨wˆh¬w
-
-ÓTÁ_ì+¹ìušŽD|µNh(…—ç­ZŽÉÈÊ
-];ͽ “àaô¡Wýœve`Ê~ÜœTµûÂ]ªWPOQX`R„el­ +ˆX‚‚hµÖP'¡4C):ª™ŽÚ]ÏÕ/ FdŽ‡ÑèºúÖ¦ú¢É£&1 ¯†çœí#3φS¢â0eœ«£½cáG}s?pjíÕ6ýyuK[ÔT­ä‹Z tÆa}­ÓW|Nš÷‚dµÔ"ÝnWùµ¡@èiBGÒöÛÇ…m’«È±Îé±0@J˜&:¨l†BÃÐW¶ûÑtèIQ-;ë-æ™KŸâ¬ŒM”jö³J€Q2¦ â9Y9 ³?æÂÈ9 ĤjÕP¥/Pbí!ÁÒfCF†ŸÑK[LVh¡zìPrÝœýÇ#}'U}€æiÿŒÛ:óI»GÏØÞN«Væ@:Á”÷Ò“–;'Xü4|j:Ö4*¦è ˜Ô…•­@+Ÿ(©g•á"zO&!³6U½B^°\Ù1ô…´’ŽQGž|÷S^ëè$ŽJM?,í饩+™mvÏó‰@o¹FD-D§]Ä
-’;¸?î32xÅâ€
-VrÎ3/&}ãÏOƒØ gD»x*È› ˆAÇF ü\ã(µ Û˜;f¦¦P ÈDøª±Ár3Äð Š’F $àMÞŽñ4¤t:%zòÍC±í¯8AkRëLe’“§ëI ÔfM?mÉ&Tçr¶â½ÊÛ‚ ÓÖWëà¨ìÄZqN,é§ø¡”\@Až‰^Û~Ÿä½-Ÿ\IÄ~Tù tëDC>™8ž6]çÏ‚^ÇâûÏÌÎï{Ä,u3Œu!”§¨,¹ÿŸ_€Èh<Æ&ÔÓ,ABøoƒ GÓnñä´ÎYÏ0E"\Gâ¡Rky5î¸Û†·Y8u]z„—¡0žŠèD-Èt¬°@°IÄ[ÚVaí8-}O=‡ì­PH¥ý<wnë2Sv1½~? ~Çûy?y½¥'µ1Lø]¿1Æ5É9¸­ÝK|ü¥Ug«7PîœÊÜóy?ÍÚéŸZø–Ÿ÷[·"Ù ??
-˜™IÆ>ž³oE€I«¬u0gÝ£Ô Ô§:ðêœrmÕ ä°â¥åïë¼çý0¯ü»ÝéBã×Ú\†áµÂ7TeoÙ´‰pŒuÇeØŸ³‡õg´5ýJåß@ïÃ~Ùî&{¦-Ÿ¿%Ôƒ%`î³L|dR@q(r¯ã_@dCIͧU»/@ø?'`óKÅ^ÊO“ø„W éŒ,: ‘¡‰Så °Œ 4$ö­ŒrwDšaYµÌÈ'J ‚Ûy/ååÈ&Sý éΓÉ.½ÙYpbËd§÷u†lÞ–kp"ï„°Ðm$
-D#þ,²ôJ~Ê5ÞAXKCƒj¤¹Ó´·Í°(œFá#ä¶ÚŒIÈw"vmWŸË«{&#\Þ §ÊùÐqr¤šµŽBöœ—1Ÿ~ !üPníäNAñF*ÿÜç…™6H<9áYå…ZBñúÎ?ZƒxaÑ›Á$¾ÆúßVÿ—ÇIùV”§Ïâ
-¯‰qYïÏ+ˆ£ºù½!H›òJôæÙ … 9§Š„(úGac}!p
-ÇL¦ñÕ$úÑ¡A1 ‘>…c`šxШ€Ìwx²ÿÂàñ© {­äçrú•é˜×Þ`‡¯ÖÁÛ싱<§Áãx‹Ò0šTìaœÐÕ8‡!†Iãý) Aȧ]“³Sú4Leu‹Cf4£å
-~°oÆ9õ.4ÍÜÿ´Î%AÙzÄ/Éá¨
-K \Üfñw¡a½î)ðÙ¿0/\ó{×èfUœØшŽ„wv`ž•èüÓØ®²§ÀÀG$®)!î¨,Éâçng¬gƒkýÑi0Ñ'ðSÀw׈ 2á¡Ý Ý'—¢tÃJdRb
-LÙ€vJOÕ)9»Çž%´°âŸsñ;%t›ûD@³õ¬ â|ªÛ³;íf+PÉtšDƒZ)vå «d ìê@Õ*o…³“[BË' c‡d*ßH–Û£¡UµGÚäÑ+}QÔ&©tvâL¦[€Jg»„ycµR@Sl`?'Ãò¡
-C±òeBÂnàuJYÜÅÞ#IF&MtÖ[>0Ïܳkƒì ƒ± KcغˆûÑÀ~73, ’Aòßž‚Èq ¹ñ¹í(QûˆÄâ?‘+Ë€ñ…iž,ÒHý]¼kžñõEôûÄÇᇜȤØ`ÖjÏÁ KQf7”úÉeЕ^¡ÃnÊ ^¼[‰9 ŒÇ¬^H\_RËðb0={wNCRaž‹ÛÜË í;+<J÷(¹^|o‚Y·
-ßÍ¡d2ÂÜr[Äå´Ø)¹ SôÌ'Îmž)çz•—–è€8Ä1ù¡‹GÉ™:ýèvÍÊ‹€Ï‘ßÇ\¸¹/sáÏ{”ƒãgsîexvø›•²
-5„ÇsL§C@”+ƒôÞŽËï@‹NÏf"ò…Ò|öãéÎ1’þ“§x%ûSºN£s(Í»s´ ¶¥zžÅ†+œ3–q]xTlàÁYJ%U=köÿ´p¶RW©BH((¤–t4EG(ƒ¦íÔueZÂH]©®ÀXdó¸
-ïм0E+i9åü׫š„¡$nÄRÓµ‡PZÈ&à丂âQ]𸋢~
-p7Æ.q…9DZ˜ ×É~o.lÝv0úeR?²06æók’—;‚wÞ·ˆ«7"ŸžÒVr-XR<D&Äå2õ1ò¹
-ã,ܘ.õPP¨z'C™þR4Rpi¦œ“ÿÄÿŽùÙì
- M§Cq©ãš¼GA ¨vþÛ gøçtÌ@”pƒÖæߦ3y2+˜)¾{T¦Ðþªú½é颣#@D‰‰ûcyÏ—%“ýë/¿èËä»EØ~¾Ä&0<öÇ Xf<,×'î>*ºÖn/‡÷Æ T0 ,wŽзór¬óR±D„=iY>h6#„:‰²dNvÊ D7YÞ±j¡RivñOy ˹ÉPïEÐïÎ\ër÷×Y»/súøÉnn‹”ç‹U[Å;Äp7Ìfm°W³6ˆØ†4jƒU2dÖ›rV¯M ZÂÛŽ±K8P¬‚7ÁpWÐÃ$uûS“(Ã9Zœ]Ä1mLéÜ{ÅÇé9ÖË4@%„´#2¿¶K,\Ï8¹àKÉjP
-¹5T™ÕRÿþ~æ¿>ƒZÎùi›¥Þ†ðϾ&«Ä*«æ™F*t†'Ï3ä3ðJÓ3¨¨ =h3|®iViTPjX'5Úš¦@l œ°´,b(ûœ —ŠôÃ1å3 ŽÔ£[’¸?þ»óhY À+Šä•ŒAGËóUtº¼2ä`™S>Þ +)•¢?µûTÁ‹¨Éÿûn&+Š5B+qÒ
-ËÄèÅØ_bì™gB®µùAL`‚emñM »ÖØ9g¼4l>÷Ù§@þéòã]ÂÔÐf²ÙySÄ×GZL‡ö—–gŒÞÍzÖ†²œ¢¿ºuaÈeæîpÂňÜFß&ä*I¼r\¥ŒgÝãtŠÐWTª ¤©m{nÅ£æ·ÕÌ#¤’©±Â[:…y¯”œ@ɦéµf¡¯¾GÞd°y9Œe ­ú
-—Û¾aÈíp“–¨2dôßòŸ¥smm¬¦NAØÜ^¨>ièÏ´Þ„W¨Y76‹Yü9dÝâÚˆ
-Óß`ܺ&÷]²Xí‰ÀÅ\F÷ω\ôw±¶1
-jĸZv ”#&™ȂZð–æs‚&™7¿˜±øç$æWÑ=öä¤Ôçmò+ŽvéÝ«
-‰©à¤(Io^%ËÌ! ýÀØ‹ß²é5m¸¤¯p¥cR€I•—Q³~ýåÕ
-çJgÍ«ˆCŠ˜²&ß[%=&ŒØ˜…ø%é¸=›(«'VDIœCæFúZßÅÀlR4o5a S <lCPÁOp—´q]5Þ$ôP¶]>æÇ5ø`Ä~À¨Ðë<kü¬ÁÄ)µý»¡èéi„
-¡}Í‹“ÌÔt›ÆáÎvÜ:Ë'×ëå“•¨Ê>Vc Ä©­Ò=œ%j È?Nsè¯xÞç²ìDo€§D¢ŒÎ…T]xB
-Ý6êTƒ0aÌZ0¦} Á›H[—óI4‡Þp_.˜¬d5‡ ¤«d}IŠSûüx9AL.*&/ÂÎ!°lw²s;l<©ÂšŒ¾uÅ›„$ÿ`ÆŒéTòÃæ9¡,2B°X±CÅ@Xq“Ql}º %(&Ì ^%Û£„ZÓy—xjÎ ·ŸJ~ŸÔ¯
-øæ´’®Å>j4èìjC·ñíº9Ƙ¿Æ4-‘éŠ7€¦¢ÕÓaˆAB+«Ü­=þV⺓a;E&X<²aÇËPÒ&þ7IuÓãÊÈ”å H%Çæ4),®¦Ë€p‰4€ÄŽ%L
-’Ã7âPŠ­ñ¡æÓàßEØ5JpjtL™jݘïf·qV/n’Ë`+íå=òS¹D+ÁÿñLäÒ¶—+¬à‰a`4×0(sÛñƒ iY«g+Áa%çÔ3YÞJ>¶kŠÖ Ÿy<g×v›¤‡Wí`ߺ³¯ÌÖãÓæ}šÕ/¬çJ’¶ÈîžКñj~“ÉŒ iÞòó¡HV±š¢U@sA#8g6¢¦,˜ÏV’™©¢MÌÑJø!à„Ñœád‡1ÇÌtPÏ”Iïõ*@ž³“
-y¶Š0K5ƨoÝšÕ9N%ëC•gŒ<v¶§sð"À
-Ò¨ÉXÑ•˜ihaâÕÊ«SÓ/­&PÄ['•^¾c ©±öØ<;‡¿e´e†Ï "¾Ì2:–û)cø—"b£2íÇc¯æO 㺠ˆá† {¸;„KšyžŒ´ÓíK8.6KÊÌ®ÞЕDÖŒ.‡ ŠâWðw~c®§ÎŽ5zýÂÌ¿ý¢éÈù,bB”úÿ/“ä8n Šž@wðÜ!1­µÕ-¸%ï¿õû€Yf‡#’ø‰røùÒóªy«q-: mQäN›Ã]‚ïégÔ1b¸Å%áÝ<$s±5is™r2íwz¿±¬!Áa¹g^n_p ¦&œ£H#1|³
-ŽÔc0q*Fi|6-Ë<ø3n!àD;ñi@<D'nK¤]ª|W²•Uö&VœÙ5§‘QÊFà½{kÓ›ÛÅç9I+*µ®Âˆ ˜€Ñ¦‚ÂÅ©º±$PI,¿´Æ`fVÊža‘ˆ¢¤=k´š™Ü‹r[Ú@K!~©W‚
-£®0Ú9=¢$âú\sº×ÑO¢÷-TÖÀ;EÖŠ)»l.cfWST›­òÓZ,Ã(aIèO~H
-ëSš€!$¤ÛSàgÍ,® Ø
-ÁŒdâ×}ŸÌ‘?svxn½\îQ:¿µq-
-îé´œÃ
-2]9jð¾¹ý䑲ӫϱz„#õ™ ‚Ê·iZþ7—<ësc3Ò¶÷)Rm•|Ù¥#º$AFÔ1–¾æMQ%ÐRIÒd;b´ÑÖuzk"º8ÎÖ9EˆC’Æ5­{µŽÁPü=ðCLãeÑ ‡|­c„¢ŸíVC 6–0êuù·MÚ“IÚÒ‡J<·n‹²HI³
-!Szš†Nq}I£CaD¨É“¼ÍOQeL\­%Ñ?gh×ËÂØ6:ÓÕtTW}N &íc˽#ï&Xä¤îÙ÷¿õóÅt¯hÁã7Lg4,;¾¤6¾a:Ot0D,+5Òû!¹L‡/©øhëy×ãw¦C‚÷R¿ä§µ¦C³í©Š£ËtHÀü—e. ÆðëÉ4]c»:‚Èüª4~M#ûç¨ôX¯ƒm—êpyúȦ¨C„²Î‚™©¸P§ŒVA,fÛÂÓý˜ó/¦3Ýr:HøpÃtº–Š •µÌ¾‡„e¬íxĶØïPg ñÍŸquáBܸ[ñ™.Ð0Š#ú“ O¦;$Ó9¢ƒéÍÉt‚±Jžµ‚F—邶ZZ—Ç|ºÔ3Ó™8@_Æ¢Kt™NYíT ‹á» ßN•BU ÛK}|ž£z¡kr}ëB¥ôõ±Iõëu ê‚j×Á:3HŸíȘëNɉu§ÆÁº³-¬“ˆüSnAéó°Ní€Í´ÑôëÔ궭zƒurÚŸñw?<Q©
-™¿ÒzÝ#¶åp„@ßõ¨SƛȆ°¶áŸ€g}Ý¥:$ÌIbß‘9¨ÎÔifUÆ]Æ Õ!Ò
-Bʘëì@ýò==ª¦tTv«U¹"oB†ùò'ÅÛÌgLšqåào2¹áçB,¬ 7²G"ø|,S‚SÁ!Œ„ØWUÐå (Yèt„SäÕ`»¢ƒ÷W5NSßúYst©Wï‡è °3C„‚ÆõÒ,WfÙ¡d¨­n³éŸ58'pHN™×CÁ ³îߢ‘0L‡‰ñ£'¹ /uhh¤Å˜ç1åÜÙHö4_.30WZÒÙ’žPók0^áy:#1ËÌ+"õŽÛ‚L‚ Á»ÍfM¨%š#N¡iÔÒ¶‹²Å4Zšz”. S¶äúÒæãóáÖ°•<lƒsê…>"Üiž=]ÐÕêvÃï¯ósÂŒ)x ÿ6³ÉþfZ) Å»sØHiÖ:3ÿ6d\› §ÔM>ç«(h®o%ûÁ9Ëï9§âï<½½PÃ>÷…œôÁx,mœ§}¸šƒš3· C‰ËïÅL[aáy:]~h¸A-ÍÊêwý©ö2´ÆÌ‹Cž¸ë¾±¹Xëðbóù\Ò8ªY.îžYw°™ê±Jú(!ëÕ?Hဵâߦò/\›”—}áóUz¬: æh~tê,dEhqÇxx±×êJ&²Ã­)=›ØÑ|Ëü»+²Ö%eS™ßBMºÙâö6_&;áHëåð
- Ý·ŽS»¼™ñ™v¹]åÕeµ– Žb¢S4Ôf±¥®Ÿ³=ú£ëpJoª.Z¬5zsÒ«®ó6G•z¯:ªýŒÎÑ3gŒÖû–«·úóš[°ðƒ lÓ¦Ï9ù15 [­ ÕÂZI¿ôQ&"êYñ«=ì&Õu¡kÀá2¨Ô!¶)f èãö ’ÚÕ$B*O¢—%¸°òŠöl>žÓ¢ƒäšvÿÄQ#Ëd›’†íx»ÕÕ7C<úÍ †×̓yƒÃ»ç ;E:²ïVvƒ dàçAÖwç*쀩²~ÐÅ)•s—ïˆ7Ù÷B™]
-ê6j=±¸Ü”²àrA(g«"”ÑÌœ'Í£M8âÎ4MtF}]Ä–Õhˆ!˜Ü£ßqm>i²’V€PôŠ¯Œ5y§è‹Ñ9=,<˜câÊ×…$
-¶.<MËÇ_Ú×@öNÑ—¼Îáˆ,ÞÆ—£RðµV¦£’Qz2ÙÔ£#YŸÂ ¶âRùî®Ê‹Øw×—Tj9T:½Ì„+I9ŸÉK!^çÆÌ*å÷/Oä$B}CÖPµ.½,"[¸æ”uõÙÇŽ&ƒö‹L¢¬& üebm^¡ÓF†ÙL „Ñ$¥Þd ‘±]ñ­HÔÜl!ÉaP7Z†ªe$\/èŠÜó&[r§®ÍŒa[oÎaˉr )ï+Ù3€A?%tKZ„òšÆÄòØÖ~wŠ¼T0aô D—½¼½ úîÍï/ø÷×v’2d§C‹ì’p» 6X4.§7­ú.ðDnDj‚Wqvfþû1È#suåØ ‚y`Ž—Gƒ½$…V-¹­u°”lLbfléS’èC¬¾nLWg0‹(¢¸R«éͪ-®š_E,-F;&•žûD‡?Ðg¹Çê(Þf™xm&ÊåîWäÜ÷ejÒŒ§¸Ê”äĬVs”e‡Æ\ìð–Ôö§&Ð,P‘»ÒˆJ©È<ÏÝ(<³Ý<Ý£ŠõH¶õsƲ<JŠ(r¯Lú˜¢bb62L|ÜJ$;dz’£ mFm°Úõ%ÉC°Å³ ¨^Þ½pü|~bì2ôxÓoŠ@‰¬ÝµôzEšq™»~÷È“à*‹]fš+á™x6ź”e¯Ž¨ðäO`0‹ùÐkŒnLjfô´]¨$Ñ>¥×à ÀÚÃîÔ–ñÑrí¡e?Ð £­nBʯ äù!’
-y]9¾ÁÕrnF ‚cw¸qvñyŽ=(e-øÙ^©(HFC¾®“…ùQ8ëÂM^L} Úm~ªÐ×8¿xÃVû…aDthÏc(KÌ#ŒÏI@{àÌW&ˆ+¡Õ`µ[ÝÖ{hØf)DŠ‚èeÚ×sW<iÞ—F-¨¤¦ÈÚE”)…9.h&2"L(s 4x23ÿž–7Á˜"<ôãåŽÈ­DÑhŠüBC'õ
- gšÐû÷¹¬¢ÞS7{,ÀÀһȪºCˆ”é,˜Æ'§ˆ :ù H€bàóá§te´µt‡à£Pm–¡§O~£ $>w€ì†›ÒÓ9tHå¢`Ñ«‰‹Ã ­X"ŠLis@:K£ªiî6(Ôvy K €X³qMVžXáýÌÁp艆ÓLˆrøp‘(Xܶ!˜|TU£dÕð¢tB£¢¸cYg©0ö¡ô}ñ†õ }JŽ\kñI^?[§"ñ*?ý¿A‘ï–§"z¼€¬¬ó
-eí%C‘br9bH‚HnÜÚu¼HœŒôU”hŸ\Ít5#ëk 7ÇïsêéC_pÉŸi©‹™ïBÞï#«É7•½67•È8óÓ߇00‰’Ĉ†ãÛT]; [ÚSêdzGºËñ!¶ÒõD‚£è’="x›9¨'¤ÂÆ™X“üê/Ëf÷¶?ôËÙ‘—ûíO$û÷¿_~û‡?hÁ²$9.†‰Y#Áà0ÉOõó‚ð_(îZZ
-$²½´ŸUžÊ«â²°<c÷xHe«¾j‹UÅÒ³‰$»lê4 ës mä`.0øîu\´¤BnÈ7HÃAÓï*-4`r0ÀA;ûÊ_)9AŒö)*ä•°cÐý0Z‚"wÍŠèŠ#’5uŸ…cꀓAhkW&«+qèSteÕBcó‰7\RRXç”&¡³üpÍc[Nu*ÖŽP½hš _2z=¬.Ãé¿:gð#\ç’S 4¦ñw´Ò_™mZ£6Z¨ûê³!°‘cƒƒê]UÍëÙn¾ Ý/ZŒ’/u?Ù†ÀÈàkŠ>:¼=§U‚÷—3Hþ)vÖ so7¿˜ÚV$Ê}jñ¬â.Qëò%‚Ä7Q™D%ÃE~ó!R2þRÀßp5Ö‡™Êûæ¬*ŽŠUŒJM)å;OEqÚ赉óM”€f0okYoý"*†Kc“­y9LF ôÊ÷Ðx2YÞM/üu‚nCuÏ À€ŸMW}“NÙ!Ò<‰ŒÞt¶“ÅkŒnõ¤Æk“M_-v"ò>sD/Z|„÷@R{¶–fÈchm,-Í7­^…µ`èÛ× »Àƒ•éˆÐRçRÛçÓŠ*&Y>lvŸ ßlyAéá°~FÈçÂĵa”ø0´To¹¼³Ìdø$KˆÉ4÷0‹ŽD
-tNeA
-3ÓŒO ÑçÇB¸J
-h” ¯^ž@Eá/3“cµó"ãp&§)øZÉ䀻ðag‹‚Ø*ôå‰uuÖª°[ie)íUZ2Jm_]ÄÁeEØÒhUÅÐÖ,Šï ñ³£­V
-ŠÇ~^ >:ˆêùmlFà?&É&–NúÈ>ÆpfÅ¡cÑ ’n$ ¶NzS<zƒ̤P_W·8cðzÚ-"—FRfðmø²u ‘aKÕð[3ïË{}<€ð«ËÝA É7öëâ©´uqhõ:ºœJØ7¬r߽܌©êClìŽ
-Œ¸!œŒâàíøx¦åñm–¼Bß,Jt€#èvòõÄ}ˆ¯&4 ÿB!?“é+R;rÛµ`„†ì@Út‚ñŒåÐÿžšR`Ãhx®0üFQŽgœÍIéQ _mÖ» YÉn;§÷È<tÚIö
-:G!œÎùIm´øù¤G°´ý9eÖ[ÃÞOïwç|C•2VÝý<f”ÁI˜·Ü÷—ÊNÖg“(¼ƒÛD~sMvN[^§¶ýUêþK2MYk“Ïdua*÷&¨:å¢;¼ØRֈĄ!Î25;‚Hz1>av 2Ú=°H‚mŠA'8"3]€–‹³_0P‘%€Q¢û© ÊlúÛEüƒŸÀà¸ˆÊ <ïઠÿ€nà’H‘óñO5 l“jy:ÈX9Ä*=U3%Ðòó£=ÝjÒ@~ª°µA—ÇáÛˆ>]C Çù…/ò/}áÿDé²£ù1_k‘„ÑÛLNk§;Ű¸ËºŸomµì¨ñqàNBïîbçHޚƠ+»!?-טOºBüK_~<çëØŠ¹ŽßñR×)><Îuî/ü_+å›G#ðž™úrÝÆm(/)’ñ“½y(—Ž Ëôã‚Ï ´•°0?ŽŸ»€>¾SÓ+½½ÉäÁ…â|*_§s
-®e»Î{éWo…ˆåLHHÓ@×Ï]Aß©i•þú‡   Óiì‰=at&U¤­ú'Áƈ»SZÎA€Dª ³´
-ٌ¯/ÍàW;H!ÊŒxåaìÊ즱Kd‚œC_Ž¥"²] °õ)
-D¼ˆªX‚Çs¨xòŒe?GéŒ×–nUƒ`p
-jŽ-ísôþr!—ìY!¬g·]äÐKƽ±:ý(cvõeÄ`ÊyCe^8Bz>çÖt—ÉA‰2QŽýT~d÷oƒtìO¨i®N»zHF ~+¦K²õá>
-e6fì+wS<»NÖįþ<‚ÈT9µC ~]ÎZáq(û±{‚ve—r6 Õ›a¹wÂcžƒ(2ïQ,+ÐÉì‡à}¨n‰‘¢J´ƒÁ–‹ÄyS-ÃYsˆdò!¶j>o—sM¼ŸÃ³:p%Í[iÂÎï©G?€õ”Â>JÆs“úÔ‹D3ç {ç…·I°ÅÞeO߉ñºdß) ‘s˜œBª{NiªôÑÕ»—¤·mÃ×Lyvåœ:ïí8¤Î{[ïç܆Cæ›gÎ’æTŽC†%æÝ m \tíá¥÷Ed¼Qü¨fç¨Ø!£_¦‡A¢Ëþ¼ž÷&¯6;ˆû;¿^.“Í‚¯ª|‰»çàÆ^1‹gÛA@Ü“öˆ0öb@[ØTòI—B3!"¾7æq KÃZbbÖÑéw&£ÄøtNà&u6šï-0[¡t5«´uyø ›VpuBR•çF@ V„¢q)¾=L
-dÆ?}ù[ Eö¨s¿é!lf$Mš6—âž ¬GhØmª{9A^¨Èæ%=œ<¾ âc ’†íg6Ó±0S E÷ÈGw±Ä#Õ´¬)ÉhÍàpáYÛ®Sy!ë'.´&ýgͺ@þ²¹@·e*Ióé”yÅS'*¸öiI¯x0ÂGÜÚ$½(Æò¦'ÐÉOâŒ1B¤%4ôû ÕH‹™ªøgùð;èã;»ó?{WØz~LÖlC “,¨ÐÖìÂßÁI ­#_DâÇþÌÓø=jÀ¢pÁXÝE‘oFÀ²·¡©²ES®ÁýTM6ˆ¥nv‹Œ0âR:º²‚öÃ&8»¤ÚÎ5‰J§O笒©(M?‚`6ð3¼¹A2‚Óœq¸G,%Õ8ÄœÙ'äbŒ:ôŒXäêãåô-¦V Bvfz9D78››ËÑ”éæÐ:CýËx™$W’ã@ôu‡<,8€Ã:·u‹Ü*ï¿íç$¨êÿaR[wV—b€Ã‡ù`îÔÁ!‰c¾Wl53e´\ãÛÜæùú(ÿÒ&øƒ¢°õ¿"dU&Nl€‹³Â’7½øóÿgî*‘´ù†¨–sw/âê­äfìþB¼},üîiî€áÞ–±´!í#œÀ3­y§Í ;~
-yò“¿E$[ÔFgylJø­,;
-/yÆÐDSu—tÌXå!Å|è J
-,ŒòäˆWO& ÏN“¯®Þ›úV¯^tÎ+º¢Ë¼4zÓ ìô^ç'ü^Oá^Ñá„!Ë„£%ùQÅË âÍC‰¡¸žïånž} (×%ƒjKÐî‚Æ+(fÖŸÅ›‡-@ôI`D•jáæa.½ü‰&×pPo%ñæÝÏyGÍý27ðEo
-@üÞ›`Þ;üÝJýþÊZ_À€¡{C·>d’ÐGsmŸ¾€uÍÒAÑ¿E—x‡Æ%"Þ23*¢ß¨á˜Ú°Ce*)b:~­
-+*É’fÖéJa¶KêÀÊ`ÈÈKNse0Fïù@Þ>
-‹Ï%k?I #À”1ºãêûNÀ›K¦¼‚ èiÝJT t•æH£‚’?»…œ‰ÿ‘å‰! $u
-CÚë¹ òÊ›°å^bÄ,ÆU@¬¿ ÷ÈL Fè|¨
-vÂâð/ñK©`Aê§1wä8%ô„mœuزpßNü÷W,áùxÑ\¹‡µÈäÿõ[Mü0¹
-F]ÂNÇçLW 8™–1™†Åì
-\)¬G”Û…fÖ³®ÝìQ\%m íÕbÑ1T <
-!¬=f'ZZVžaõ‰åÒÇœ ?78=Ççà;H¯ºQäq
-»Ð11ÂWIƒf
-†â؃¡­ÇÊ [}ãýVÄ" 0*Ïv7õpi(ׇ¡,?.Ê4•mäH¯óSPD÷å
- yvøV„öân²®–÷‚BD(iÏ›\ Ž§cúrê»BäÖP›lá¤T^à ¬Lì„)0XŒv˜
-®¯LÆö‡A‰”d”e_Z<pÈmpbßóAñø ÌÂ@iWà-ps2Ç>nœ—<«Ÿ÷¤îEÑP´¤WS?*z£äÏŸðö¿_*—ú45Öažnù)ÿ¯y ¢³T+¢’f
-Šø¼‡idÊ0æ%˜XŸ5îm—ðq´mpÉ WI·™ÔØ&‹"¡ w€½p Ä šôÖðsŠrˆ'¹9ÂR·*ÁáŠ^‚Ý1‘ê¦oüŠÍçVö{¶60 ´êýæ]#2íËüVó¹ÛCˆr%—Q^ŠV ­g˜âù²K„3Ãÿ¶kEŠ,côW<À.y³sö§*Q‰Ðaž_"r¡2eîSp!4N8%°&#€Õ+@8î´$`;ÎwnE“œ›PÀ.íÝ÷…ä Cý#Åwàú/»Ñg1dm®Huþz <!÷Ø¿¨ ª¨XüšcÒ
-7Õ-OT„L¡‘87XÏùK,€²N‹ü
-¢i
-< < ÇŠ(~ÿÔ õ
-„P/£òaR3QÆ-7¼U*Ú‰póý©¾Ì¶l¦ó®˜fvÄŸ]Â'9læ#uÚä‘ü:÷¢ÿ¡ÏÕ²Vì Ži^I·ž#p`½hhÇÅ–>RY1flë{iâd…0v©;Ä`AÔ
-C¦J 53>WæCȼEV—K3 †¬ø÷㢠dFEÀ]ªk˜ù¼;t!#Z”ÞOÈ|‹.”$
-•p.(2:ðÛû«éž¹ÿìeCÂ9Tqfþî®ê* ÈB¼©m¯ˆKx¹‚}ˆ$œ¨¥:4>ßÂËßRdžØazY§íc]lÛ DcØ”¤&©b¯¦4Ç Rf}atHãP5Nlÿ±^h½½(ËÕê÷ØŸÖ”uªJM­(Üeã˜AÎIÓΩÕaÙWklÀ­à_ÙCe¶bjÓẖÀ¼PGÈÂ\F#ªâ`k‹‡k†
-d2áöYÔI¸+¹<?ÚÞÃã°ïôh9/f§àè¦!2¦–ÑåÉ^â+²7 Ûã»QËí>#ÞkÍ•…Q´Yì8AoƒM/VÀT¦$ F+1RU:6±›ÊË366
-¦HÖóýí úl>?Ž¢EÚÐ,×Ýyø‚ƒÙ}9Ìè"e¨1µ’o+=¹/Ÿ‘=K½ZÌsyÁ8ó#Ú]Šµdþ[ñs`9.—³ÌË©uÅÉ’Ceo‡fòälhÙSEÿòç±€¤>–?+žx/ãÅIXh>º-ÛaHè14f,> »ØoxÎMuó
-§Üðø¬_ü^QëX»“5ŽÔ1'_1"WÈ_¥)¬ôÃœ~PÝÆ^¥ 0‚‰ÑFÒ°ÛIP0âK\,Õ7
-„ K¤ JJ©óqÕÕK"÷Ó¿ÞÂí—?Þ~úïZ"§nÐÍ †ú#ÅÒZ׃k½ý‡ß2×ÿ£Š'K·°þÿïÿ½EB+;7.Ý~f~îjB¢ š: 'úHÓ±Žìª¦Âö»+†)Œ‘0²ä\ \tS™Ó+ᆼV•@4‰Äj %ÍÓz‡@&µÑ@¨ “ƒK-ZU‚Ð=™·3ð ÂÜP2VUÖÈ RXé¹k\×—iÑ fV•(uYÕ6¢š,ËŸŒ³O
-§‚à&\ã+’CÔ.âZs€D.ï9åŸq€¬«â]>A y¼<g¨4ôKfÞ e”³Èé¡k‹ò[‚Õêѡ¸ Õ·à4IÀ™Ö îB@–r+¬, 2¤üªJZ'ø0%Ft9Œt
- Ä/¤6 «¸ÿDdUÂ=‚¤—»8i°ȶdƒYÑÎx¯˜%rU{;êâ)uä…ÑÛ¸qš:Ø©ßzÆuy­$ñÐóÃII‹H¡òÃ0Ëô0pËjébÙûþÙ8–nô ¡]xç©xðèð‡EÔN—f€%Ü5“¯Î‘¶u¬Ñ!UAQî!»tÀRXÉÔ·î±v´òÈãªášÖÛ¯@S×ÖbH*Ó½ø˜ï]BÀfã‹ÛšØ+¨ðtôM1¥ ‚€¨¿–š©@"sªB¦ÁKyäÚ†Ñ ¨Yþñãõt@èoDNƒú£ÌÛrEBP3ðx°^ ‚¯gª½†@ÖÈ|¡í§|ø5DCÑVØå ø2úUï÷×ò2VˆÉ!2×ÌažÑk‡O”W23N Ré±™¬¹ÆðŠš]‘v™–+b¯g: c`â¯a•!Õᜧ4qLƒ¨—¨¬Àçí/'1²‰f±ò=ÍÆ‚ Ú”¦¬LiÄÁ+Ê\Í^Oþ
-ð{žÚt8äk«Oyš˜Ó]&ïZ˜Ã?—÷
-[¤×Š• ¡t»¬¥@‡Ø×Ã!•°¥Ï ŠdRÄ™³k¿„À÷Ô¹¿œòB¹M÷ÌÜ9ä>CsõCƒê’©àNðE Be[/§^>!¶ˆë!Ì”$«³nÒv`¤S"6<$Í¢" ¡u+1tDˆ«{4q¢<–Õ\Î+]C$2»×I i—ð]¾[¨ëàèl3s ’.*$ŒáÙ7ý˜’æáa´– [æ4ƒ¦•‹;ÕtQccît0 \H!ØZ|Çœÿ
-¿è§0‹Ä!+¨ùU…"ój1ìœCv¢8—{÷ÇC "'…˜R‡¦àÕ7=ƒ ?Ÿ9iVòúñ78ˆ.ÛxP(0¿’‡A(zÆJÄ´£XÂZTê%:ï«ŠG²
-Úç¿`èñ
-–bùF”Â0K㜠©(s_ózÁ«|ÉTrnÌkÍ¿8‡jRdÕ¶çfÔS°RÙ4—¦ñ#ÇùƒQ ®­üâ¾
-Bb†ìq{ ”¥âˆh®ÝYÎIÇï(Kg‰T>×ñ2kfÐõ^лóWÄÌÆ  V ©í›zæe’ÓˆA]chDZr‹+ˆ#ëþdþ%£¦!{T9RªÉIûŠ›–¼À;G«OBÃ.&}"³×íüŒð{ˆ…Ú̵ñâf8­ Ü'®äí$@Avåqc(Üä9XÜV7KyЖâROƒ°¸Úä ‹u‹÷`»¤öÁ2e¬Ù6¹?xwMqaj7:Á <u"Ï­e'8Ú yÙ|s¿…202“¾¸LhwþŸñ2É+†è |ŸÀÐ,j,s‹líûoóJŸêÀýÙH6`7[‹5˜ÌöñþúZåIJG7dšáÃæoó*£Zœn
-[3Òܺ o$hå &þ¹˜'æB
-Y Æ‘L{¨¾(V#ÿWa€9PšÅ‹Æ"É#câ®uè,¢£ôÌØ6ÐXÛF\À°g ‡½HíbÇÍs¸h)¿EŸ^²ùA€O²ä¸ Á–$^äYðÄ!Ý$1b\qSÿ¯±mqNãÇéȹ
-)²ëi¹ ô‚6c¢nöZd4æ¹¹"cÄQJw=ÄJæ»Ö!3
-r´8ö·'<Å­QÁ*Oݾ冚èJ7ôÝŸ&
-WVìÕE ‚‚eÙí}—LŒ@ïžÐ#ì`+¸Q¯WɘusK2/–ðAe9â)Â4!%Ÿ!&É|á¶ÌRÒ
-½£ŸÓxÚ"sjW ŸaLñ×ÓWÑA14ü‚á¼EEøðÉ’G™ãÏ·h3œ‘ ;ÔÌw?òíðøù,é\¼`«¥ú£þÄL¹Kç ÌCÔNBì­¢·l6ï
-H‰ ”iWš‡…ïêjzÍd›¡il†›eÕ&MMj4Š31&Š*N(‚ÈÌ /(³"8Ä)'PÄ•IDTDœQ41iV{Wï¹|;çÛ>û<{pÇó@±cýÒü¾è¡Zusk—¼&£HY9ÚÖÂhû &g¢å`^øŽŒ=Róp.%£hCJL´NÓNÍlðÔÄNM`]`…†<2Ñ«Ý&6Õ¡gVVÙì³Mžx}—´.²¼ÚfÑ3—»;\7ÃH½±Øœ¾=ˆŽ=RÅG:f嬰4|¥‡ïš©G¸fÉ°µ~äÓå®òû›2d´]‰Ip¨åZà14q¬SÌ
-—¾‘ëYlâ:Õõ¥=XçwÎ>Ä;Õ”C]ÜTP27¤ôÌÕžºg
-
-ôû^LüµTìÏ¢Š'w:k —;É…If@pë5v%îÐp°.=rdd \jB¾[M/s©é…fiMÜBgÙƒåBêÁb“È>O£Øçj÷Š€·7߀¶kY¨½!Ïgw8Ôµo7äEQƒ°&¥“>[-_mM=>SåÔÂ$ytøÜêùÎXTÛU™½¯ä£ö&ÙpǯÂ&§CÍèG`îLÆùÞZÈwÄŒ«Š†Š­àíTCvèž´r8M}í™!¿:TQrœJükÛ³ÔOK‘E£,ðx­Gë15
-|+`ð ŸQÀtÏ71÷TbP!&CÚ+³Â6»¨Hÿ,«z£§â¾µkîB?Ò±àWÍ¢›ŽabꦜžÍ«J¾Ú‰I»u¨ec‚÷”¹TøôõÁÒ_FYY7†@ès_EÔ®‘
-*“
-".M23"¿ZەDZȧáýz*Â<€üMÛ–sÃ:\þÄ«c×¾'¤ü°ØŠÈúbjéÿ´$æAÄ‘È÷ÌPrvGp/Wߣ£Õm5‘Ý$XØû£{œWkíúÒMˆ]“¶û虚¦ŠûíU‰—ÄE¿}ã” ‹mˆ(cKá]Ï4>Ó«¡WzU@Þ‰,ýd¤õ¥»‘†wˆ(·’G93µHög(°õ‘ª§¾EÌ·DÎ?1Q‘o³X_7x|ŠO èz¤‡ªîÁ\CÙö ò×õnø=cKî-ƒ(çŽW ”©ºË_¢2#ΉÏ/8¤õÄĵNLôf:&ÈôÓýIbºGÃBy´|†©lʸ½?~õÙÂø—9ï2<Zæ2ÿÜj–. ¶FkžJÙùq¯£ÚŸÄf,5ÛCÕ‰v*áD‡‡íÊ+ã—ÚaáR|ü¿-½¸8 %;’{:ÍËûßâËtTÀ ‚s¥G;Õ´¼ýYZ¡C×HÛ™aUêÀñ‚
-é®™FÌÁdfoŒ]hí£BE?“3B´lh¨SVñ»­›nîDÆ,6—ÜtÏÒ -ÒÊ8soq„ERi–†ï Ô>óL°K?/ñ™g6×gbî%éØÔÈÿ²dÑÜ6è7ŠšÝ*nµw–SPóë*!m«š²Ù $íK%+mè˜ *4Tß”^Tô@-(¸©!n[ú
-2‰ Ã}U)æ^B¼ ¹û ÜV°ªì½å¡fIiàœûnu
-؇F*bK^?/Í 5
-Òü½z
-b”‡ˆ æ„xu,ü¶š‚ðÈ Ÿ\#•Ÿ Íùoå´Ô{FQÎï–Ž²˜=-·N-AÆÛ¿b  £ñ--v>׫ŧ¹ÆБ«²ò°ÃYîôe„
-’Wå’á?nO «ƒ˜˜µÁâ0ÏXñ«µ¯°°myY쾉”y`ä`ŽMìí):Ü«$¦©¥GºjèÞ4¾£"CÏfÙ¸]- ±4Bü
-VEUÞy4ÏÂLãb½£èW›ãBÒ\+öÁ,„ ˜æßÔ6•Ý5~¬]—ï´"ô}iuêo}øœ»_J»°­öâŸ:‡ªÞzT@öŠ´îÝ7ÿÁº¬&Ù;æ»Ô”Ôm55Ç®á¢Ü3ꑱEèÑ5‘m¸{*y>½¨yoAÄw«ÙEkBä( q­½8Ìo€ï¯a °*nE…^¨K ¿mí©ŒµöbÂ…YwL]y!‹­¹÷†ø+Bä«_åu‰SPñ= õù¯61:æLÇÀ¬B=Ó7eé‰×%•Ï~é«¿¤¢$ÿ¦ä§½¸Pxɧ!Uý02‰?M,Ò÷Ví¡†Tà£",’’à™6t0-?þ†Ÿv}
-̽­2&ywL¢ÊÇꆂ›ðwÐZëÏÎŒð[lC=€
-B¹y/üÈI!þeÑ¿O°ÒÖĸP×8)Ù¥¬HwŽ¡ÞŸ.€UÇ BÎDÁ¹[â›#ç¸T„÷ƒÄ¨â‡¶àœªšD¸÷Ôz5ŸÚöµ ”C³Ë±±ÛÊš¸½Yzo–O²HL˜ó‡u€?×NŽça_/v¢Cm²âWž/hØ#U;Z Û£ãU·ÚŽ—yt›’ïå¼ZJѱ œ[¡Ö陥æîéA´>ëP3Š*ÒùÌ· Ql#Ĩ-wº jÙ×6Ñ\j^¹CÙÍÚi«Y—²ÓÌ}¤7JVNÐ0qÓ*#Ź”¼Òý).Ö Ï䞢ì/¶Švç8 ;3t¬SälȪ"÷t`¹o‘Oý
-w°¯&éØÔH;4¸»såHËÆëš‘G(™×§ n­KÊŸìO
-ðß[jÙMnQŠ¿„ôoðDcу^|Œß9Ö¯³"òâgb‚ÿŒ ,Ä$’WúIÑ“mØPõÏ K.ÆÜ‹yûè÷RÒµ VzÀ¼ ä©©³*Æ*¦%h»ˆoiyQþœÜwW÷ÔÜæ :Ô1Œ}i#ÿê«
-÷믌ðÓw”=ä£î'„Ý»HO¹¶&®}½ÐZþh‚üs (äd¿½Œ|t!óï[ÊÂï_bã/gE?ºHL|vÑò~Çnt¨]Š~bèʽ7Öwµõ·Ÿ¼îå’´1d+ÀŒ`Cgiôñ<X{4Ç®÷¨˜ESô¼mié“ NÜ sê•[Å*‘ÑŠ#,rBÞº ûÁÜUe—b|ð%¶†ñ SMÝØ7—l2vÖâGjörwUŠ{„øa’‡Ò°bolôç„œ,U§ù´Ä4«¤6(&Î7×D5Hh…;“T4l êûÝ̬=32°çfèR“³aÃÜ·+H3¢gœœ1Æøps‚™ùÐ&©Žr £¶iÉne[ýöpÊ­Üš¶»‚_afæn+¨Ép—ElH÷ŽQzêþ¬Ü¤åˆ«“ïª ßššÛ·Ä¯v±‰å[bájBÜî<«æÈ lÈÉñðŽ`aC“\£´Ü-iÅ‹Åö”ÎQ\Œ[CI·ªÀ<Ø$ùî °pc„üþØÈ©?·Âs¯¦®Éˆq®/Ä$6‚†’y¸ÀÄÿ° {¿®pðÌ•zg™˜ãef{†^}ll‚ÎVš¡Ÿ~dàRS ÅGújjn>_¶ý4ó9gK Ö§‹ÜJzú¼O–¾ú(½¨üÁÁ,9ÓÛ¨ï"EnÊY¹+âº7›2|ØÖö…un—‡?U†Z%&I Òò™•äo,Ù”WGÚú1!9!bGMÎqO“RVGÊà \ø‘Q
-=J6bOũߦ”ÚûП[²Ãé9÷d„ì'«Ãhc°.ñ@ÏÀ¯ðÙÇfN à`ÿ"Ÿ³£c5iEžqBåSsµ¾ó]†G^Ÿ¢çg‡¹‡áO5@}#µÒ­lÌxèµ{™ôÅLGo«ˆ6icÒJ7*Ö£Äeï«)UÇzõÜ*ÿp‹vÔÍyû:JÅé
-·õÜÂå_¬ò$ß]‚öoèÌÆçüáhkûº&êÿφHz §Â/ìñÂ÷§zzÍú:ÑÕŒ^“6ÄmŒ`ÝrLòÙ
-ecÜJVõÑ|;w{’_ëUR V¥5¬=ÐðÕ^èmÏ(!Ý%cšzÈIÎRê¾VD´£MÐuóû²ÐII¨o
-Ÿw¨gaü Bžß,îXQ³–Gˆéû bà_>ÿnù0rjJN—Ù-»z|áÀm3H-‚ÝÛž`C×ä´b›ŸbTÿº!Å&¸G(y®AlŠQR¶)gÁv4]|€Ï`{³Ø4k?ä®­·üö¦¬6î`Ž^µ;ÏE;‡qI>
-!D;È̘ë!<wÈØàåVÑŒ9NÃÜŸ¤ácô\’½—”íè"&›;¢´<Ì#%~Ý$yw_Æ„Ýã•&^Qâó¯ý¿o«c¤œiV¥wVÔ´6ÛÅÔÓ»qo®iyUq'&zKYo­yìCź•è—ûjb}ª¿MÿéC];º"̧¢¼ÛW£ÒÖG*š:ËnŒâÒ¥¨Œ+òæÜ[/2΢`A1¥i! ·¯ýíCMfØÞDS®¥³ì¾Y˜{SEˆ¿Â= èAgkø¨ˆ¥>n2+þRìù#¿®…öÝÉåzeðg¶e¡º¶¼Ÿ;Q—Œ°8ƒÞPø,˜ Šûû·eV˹©µñÔЊܚÄd^…Ê£j/°wU<›hƒÆ×§Þ œb–$›8¸C
-7¢ÛÕpûZáÄ@¯¿°
-ùI#±Ê.€Y¾s¸Úñ¯‹ þþåáÈóÓ0@¯„fWŽZSDˆîòß^ÅçL¿%T[ˆ[󎿪!cOë½÷,Ī{üÑ*ùû¼‰ñò" >Ö›š‡; pˆ'û¬AÔ6Ó]o.»Á±“¨r9‡È ¼Kʬ‡”³‡Jí',¿k.ÖÛ‚•ñ:ïâ¿ÏXåÔ²v9¸Eíð,ã÷¹ä¢œ,{rÁ1ó®äæ“Š.Ç­¤ÞõÏNµT=j8mâ“ÀÎŒI€Kšx¸”ELK94âc÷‚2n’Þ/QËÖZļ¡ÉØ%dl_¸¼…ó¶ì)§!)tq¤ZiDdÊZP4}™ÔN£òÙ’$×Âb.„ 7DÎú„ŒJX Ѥøê@Gï*"
-nÎôW0o(:BÎÆÈÙäjX³V>˜ß-…”šŒ­‡5«#ÅB-Ì¡`(´ÁyÖqZb¦é—¨oføSRýá÷ä¼ã:¡Þ¾ŒÁ›ga¹¦R(jXÙ’ Dweƒi<^Ef¯c³†¼…Þ~¼K{Y£<:ÐR›R;“¿œøÒ’†Nƒê¥z`Õ“t,ªòV9¥äP0ã Þ®šøη0ùcT7ý$oålsbÔ¹¬­ùe¼ªŸÖVróÞemŠ[K~àôýã÷ W}sk¨W»S@–¶#æyvÈ ¦ÖDm±Š!ßÔš\ôÕÜ
-vÜö•Ô›Î…©{G;|\Æ3}ËÌæÙ'ÉØ|ì\âÕ¡LQñI¹%¯„7μŠéY-y»d¬ìUËQD-.ì+At_<Yõ@Ó#¡õ£­™gfå¿V)¥9f€)¡5¨-k‚!ÁdÅ'áæö%%¿pòSÞ:É5¿p¼PÏ×Kæëã"ÀÀ¡6rKÆ0ҜܽǺUÎ.Ÿöëø=»<Ü)æ˜'$6¨ÍYÃøÃÃuÒdŽð-Ö1~¬{xÄ:–Ïé=ð]b—‡Ï[˜äË0‡|ãÓ/Ž¤ŠœGÊLÛØ?Ÿ‘¥ÍŒ[»œ°ÃŒŒ 
-.)ï< ñ°0˜ÒSgÌÌ%'Hª!B:ê˜éMëÇš±î÷¤ê"þ|¼ÛõÏŒqô~Õ‰y$ÖµªX^£~X\.î=2>Š1 ëe]Q§õØÈí? )Tç‡óÿç¸<Û8ï8þ¢è»èBƒ (.8ép‹
-³‹nÞó¬…ÿ4¡LflÈ’p}ö²•‡7›.€7Ê ºAJÄŽ÷þ0-âžú+%›äuÖ"}Õ±'⊕Ïê^êÃ&~°Ðô¤Î±x¿hƒ— n;ëRl.ÎÓ&.eT|¨R*~áfÊ@ýúÄÎ[­z4¢¼çÈrlÂhQ…ôIîbô¼°í6"u\–Ý»S |éË÷9æúeؽÏ÷~V9òßÖÓ§.îÜE„·6J°Iýk¥Ö 'gºêl4rnÑÂz•/߸pIçÁ^71º1p»u ¬¬©ÜØÍûQ‰ä*«´^å!Þ Ë¡6#ï^vbàN7&—Õ½RfH Mø´ò'I‡bëôXžGQ´€¶ ùn\ºôigÌõVýˆù*$~s#¯ß¼}EH ƒ‚T×Ë9íˆh¯I­
-Ÿb{½c C4_«)ôAó]ûH%ÆPÙE¢Ö|â¢\
-¢Æ)XÿÀ%6>‘Ѐ?Ò_ÎþÄÎY»}Õb½¨Þv5ºs.”ÆLdŸÖ´xl6¬elRƼꔦCzß^Ês$ì³ßà[E®EL`}Ä\cÝdÍS?U-
-ÜY˜¡ÿnñ!õãíѯ)ó‚Ÿ[¹Š‰ó˜ÑÞO«Ì\Î[ ïB˜~éÿÃåõ–fž€Ñ¶'™TMÔ$Xl$Š½¡Æ
-ŠlQ±ˆT Í|tø
-,?ñûvuY2W,èî¾k™àfm« ‚jˆç™RàΖµÂ«ÐÔ‰uŠøÅ!h94 ŸÚ¤ýÛËÙ¦Ã@ß\6Ò=úù:·z¶pÅ`l6«WZ!è G4£Ø}â)WSµ(÷&Ø–<
-‘óœXG^[9ø Ljé$ÐPr¦,oE­ÃWaéɺZúýÚÛ¾mq;ÏÜÌú£Åð¶ÇÂ÷˜WY*™Ÿ,¸dG£Œç-d±7P}#®§¤Ž…Û8q¾Q–˜T’ŸE´Ùwùƒ¢$HV€¡¾cŸFx¾¾ ¼Ú”ˆ¾¬rÚO}‚ö –»\¡ÑhoÓ(í8ÚÛ®˜qa§8–‚i¶ê-›Æ/ê"¾l㥵7°^jiOIø¶v?%Î,ŸÊµIçÉŽ3wÛ±¤ýý²ÿví%ÿKçþw!7ÿ<‘ü}yÿõIë¿Ú×ÚÎv Åþ† rY—X0·égTE­ÇavŽ[P•]±Pî3ÏÕûLâÚcïïß5ŸÇ‹ð×íyyÀíQöiµåbZ¶ø•Êœ ¾é°ÆŒÒàØ¡^ý=BíøŠRZTcýìmB|3%g<yÑ’ƒ¡F¶Ô3nÍŒÍ&ºTÊú#'Äü´fµn®ÜvÇ®fѲ;*ZüÒ$Pü$NÎþYÅàì¿t'p†ÜȉÏsæ€9¦§Ë@jU="·èïZ4‘Éh2xþ¢T”óÂhCþxhá°çhÕc¹Ú†4Ÿ<²C×ÜðŽ–Ú–7¥bÝYcú<w”w–Ñ9¸ƒožjnÕß!µÛ£›šõèœaD² ó™ˆÌ.ˆGQAÔít€Éî‰lk‘ÞcÑŒÏ\JMõY@6~±-á¬YçÈ°j¹U%Ûjœ¯Nð63D²ïõ¢é¯UrÙ1a†ï)s–ó§&W²™Ãp|3AxŸ’™PjsIÑ­õL$§›öªVÇN<Þ¥oJÙåÚó¯ ´|´ù½>§Þ°?FTÚ£HwÅÕh¿qæeëµrÑJ¡”çÏåp·Ð”ñöf¥‰õ¸®r$2-ûKCI3Rdzàô¢D+‡ke”D˜F«ýnŸ 6¯sôÆà¨TsD~xMí5ÇwõÙ‘ þqvg¯ãú55$=½5‚Ъˆn é#QTð(¶
-ÄÄã@–ˆ}Ù Þä‡3ÇüéFÓ.7è]Ò^|PëN×gGwÜÉ’=8¯2žsò³º>FàYqùäôŒÎl)óæ;’õVm“!,¿ŒHJí˜b"·r›Ôhh"¯Eõ ¬>°­iÖEøKµP³gá÷m¼š ›®Ñ0f”çm“ò£òA–Ùܾð˜Òïˆíî÷=,ÇrBSQï1 AJdf_ã[AD ‘Õj¯=¦¬Z|+ E‰®©eÇY”&ʽEÕÏOsÆ?>Ì
-ŽÝò÷Û.Öë
-Ë»:£åã4dù]"”ÔÑÙ«IŒ1G2grû5µ‘F¥jŸæPnÕÕMÜ©ªì¹_WA@ÂsÓí?ü
-ÖÅÖÔèŠ檌¾NÑâi#Kr^ÜË=JÆwY£±õ“!u¼PLé HÈxnÞÏ)ɇåƒä,ˆAâAõ[z„hšnU9È;Kê-“ï·Û8°50!Óîwp—µ#âoxGÉô퇕M󡘢!PZÉ ©ÁÉBó+ø Ý ~½f=NliY£àU6 ñ
-Ck§Èè•«Ä Ø2|îƒf.üèÀ§“®Ø•d½ÅÜ2 Ô‘YÇOßÑ>Ü!ô¢±MšðÔb¸÷Œ ^¼ì…å"DZ>Ä¥€è[%CdW*BPù vêöðõW rMÍÙ†zþóºL¼ãÕMÉ„ÊL‘ȉÎî ±÷’êÛÌ‘ÙXQ8¯ŠªnP†§¤v€ô7}!eU¢°œq'¾܌ƀ¸Ä6’;îÇ“˜Ö渻ÌmÚUö¹6Î×4ÊC߂йdšQlÕˆ4—T¾áïžñwt÷Ønü{ú^Bç{ß=B³&¢¨b&¢
-Ï.C<|ò ÐT”NŸÖ 0y´Á¸ iàñR6æF³¯"šK§hÐBŽf‰ò ‰)ÿ^zÍ|]E†¢
-Ù7Pùcl­<¤²NšUÈ}„lBdæÑe×[v <I&ƒÔ6â-e-×½õˈàcžò‘6—u#ß÷4ößNµ|·Mi:ãò•WÍ#3§ÙCœ`bw¿çAI};3§?üI" ñ,­$¢{AbFÈ(b‡g”‹Ãóð†p\—ïÁÐäaºdá#Ѥݡ–³‡åÜ'¢aN9,þŸ¡òàJû@
-PeOÙ{oø󗀊+j]ÑôÚ$½³w÷îÝ{÷eÎï𥎳L _ïdªŽ`îÉ“·ƒî+¯[ÙgÎeÕÖ ¡eÕtHÁƒ1ÈýôY먧ÍRH^%-+§÷MA5«îü¶ã}:ñÞQ¤—:á ç(4Ózd!RN5Ú(uµ)””Hµƒ ³3O±”íü‘éÍ;ïpñk­0Í7ÅeDÈãjZVYÝôZN3äÊõ:h}§øB]ù;œ’·0Q÷c2ºÏn˜í‹DµmsZ¤Ý~7/Ûo!q7ž}7ºÅ—j[ç²+›hçn¾…^¼ZÉ/=ã“CŠ¯Ð†vÍâxÒogD¥¤M³#ãžïLzøo½.ׄڲŽç*RÍTŽ·˜@nâwk:$g/Ï*x ƒÀz.t¢ì—^ÂTÙ¥/é_6s¯cFùŒYóC·ZXµáâ´ìí'1öÈaD2½aƒvA‹Ý¬îÐÚc8¾v£ÊŽ”S˜ÑRc©¸ã¾QÞ0éaö\]ý|C—ð|kŸàûÞ1ý$ÉyG æ³™©ZÑÒ[PN2Öat²}Í3ù* (‰&µy@«Ž«ÌÉ1ž,Ù86åùéÍ[Å_*ùÕP¡+ñg< ¡wŠz!å/©ÐòFäÖ£1HÎÙ£J¥úwÉ ÈñpÁ<?ÑtÇåG1­bÃ;SŸràËV
-dÛ=“ÌT%
-«¿ÛÖýŽDPÜš¡¹ò Óλš¿V"òÀº
-K”Ü'3Í¥}tÀèòôy½–ÁhÂoE5”ÓM>í¿ÎÿŽÊÿì ¥
-Dš”à ÛÀ…ŒÞ±´Å4°ãÒá>ù”„¿/©þ\“«¾¦8¸=7½ëÈ37|š
-¾¤yS;‹œþ´[Œ éØ- z®>(./΢7¶{4ÒƘKŠLúµ„”OOÜZ$Çió$)cü–^˜;]—ÿ½%ý#5ƒØ6÷lé~þ´H‡íz­¿„è­‚¼âåôìDe´5k£¼ª‰ûNéÄ]Ÿjª(b“Ãã>ãD&ÀíY÷ÑCjá—%{ä4-áüky¦ç8¶ödq²î€ôz/Äý¸l ¥,À‡ ljÕÇïKº¹ð¨ýÿ •ÙWˆÆŸúÖžyhO{2Ód’I:™¤‰¦cœÄ,¢Ä¸K\ €‚(ˆìû¾hDMbDEdY(Èê";(:g’Nÿ“ò|ï¹ßý~ß7;°öa$ŸU%ÍC*Uu›Å5ÕSêïi é·\áûÇSskíó‹Ë-+ò÷{&ÕÜÙ®r;e›n2 ÷ì\Õ/[¯úÂ3+ºÝ+ú—íä–ei²Þ¬Z!ªäüBÍ«Òåñ9…Ë-×#Gˆ_€Ñ_щ¬Hf§¨«0³JÃðë—ÙqïuÖA{“µÓaçn>!¢€7ÚÅ€¿;çÛUÂônˆ R:üÞúï&Ÿ÷-,ímO¡vÖÙm[rzÓÆ;zÃö*¯ÙeœAÄo¹É
-\CpüÜý‘ð(¬§ƒ¢rWTOœÙèo2V
-(¹‰}–ÐažGkÚ‡•˜ºƒUÜ£†ÝQ^lDPÉÉDäw˜Ãe7 žµ‘j¾£ ]\|ÒÊMèyà Šòj_Iî¬ãŸûä£|r죀ŠúbÏ(Åy5²qRÜÒ²:RÖ«Ç–yÉ©ŽJ ñ•®›9ÓdOÉ5Ž؛ýx*/¼\Bщ~•X~”³ñ‰E÷”¨èŠSV,n¡†,óŒ€ù=Gûf–áF7ˆÓm!&e¢ÂM˜îœƒ.8ÉCE']»·z×XgÇuøçž…ž;'°ê'B n6öÌÊÛW ø— uå}Ž¸à玵¾YÇ£JTSÁA_ø訢‹?ÙF?>ÞÂ>«øÙÄ«0›•±£nYרVw¨C6æmø¾ÏLR.È¥ï™}~ »¯y»’2N4G– ßïKÁ·vÄ}7ÂKð R_ÅÍLi0ó4蛨a”¶³F"kˆ»AÅÀmÿ‡Þa9èÖÔ±ÿð§?Ò’‡‚ªìó8—ÑÇùÞ”ìH7Ü”u]÷ËzoÄÔoþ]Ù£¢«ñ镬ƒ;±H¿'§ÕW!¡4m Ä×ú+;oÄ4àûÕOد{ôñßx¢¬W Œm1“öxq_º^ /X‹3ŠŒOÈ;±1†ƒzü‹== tâ‘­$v¢v6aŒmóE7›pác’ÏÝôɲ8tá&C.¤Ö¸ò]FOn«eÏ<pÝ@뾓Û`ôžj -Y#¹3¡&5Ç×&Ÿ„”¨‡&N÷×£›5óñ'zrÇÁ»ñ†Ü&±«â õ—w='ëðÿØgÚ®I ÷þ`çöÞÿâò¯¼Ä¡”öõ?+×ÒÈOYódkÞÁA"jr‹?2L4g¬¤Þ¼:TÜÁw& º¸jð§“ÚâZìã„žØzîaŽ•4xÞÆ|“6¡[ã*d]piô‡Ãµ‰ÆŒ™ÚW zdàë =¾%´Šj=ÝÀRT}p¾û¯‘EÐ×áÛ‘ÚNBKZ/ÿt¸Žx‘µrÐéå©ž
-v:Ä»:4ð;¿‹)O"Ë#-iíÈ“² Õ\°Àž¥6»¾ô`E'¥¿äd–wÄœœ}J¶ñ±14 >ÌÚ­y—œñÈ1öé±ÝR°S ÇÚÑÆÀüÀMŸ´çfn ñ8¿j,ÛI}µ2iÀÓÛ¤ö¬“…HlàÚK.²` 3fR_zû¢hÁ
-
-x¾#¨lÈAMy;n¤êçñ.}ä±³ÍágéMX}p ý4åàáÎƒÓ Ÿc’µJH4õ ØY7‡sÏ?ÑFóNÚpîÿ—‰7ÛkÇÏœ3Ó¹ÓV[íu«ímokêVQ W„†k‰ Yd•MK”–nT-)Y$!"$–lö%Œ‰„ÈB,5ν§3ÿÈüæxÏ{¾Ïû|?Ÿ×ÐHß›âc<ëï}–w=»ºÆª-YMÜŽíacœòêXïTmÖöÖ÷‡jx¬º,ªyñ”|}¢s4ÑŠóŒó‹|Ú†ÒÍAbÔÖöÙŽ i—Sw•¼Ü¥⋵>Jœ_ÓN»0¼å~ºØ­­˜ßeÞ™k‡-½Ë¿¿¯däyt-$§ššbFEÚe•ÏýZ40ÃÈÝ•R7‡ªÁk"4!6`à¦F’}—`‚‡Ú¤ÅOöÕXGW÷ë¹ï-Ë©"<ÚfÀáZ({*:Ô*!¾
-rêˆ~OD_·Škr.:;Oõ KiÄÂÇW¡ëý©¡þL©‰™г+}:6Â9ÁÎw϶1tmÌË…ÎÅŠ€â›ããݳ¼òÃiVvÀT‡Ø’b£7D؈=E#Ö£Tf蹇ã؇¬:våsñ#ë`u°/eþi¼½äÞ¦”
-ÙˆS§òr‡û¾ÑX01Q›âÊp×µà|ùm§GW_¹¯¢¥ï ãã]#˜Ø59õÔÜD:Ö×c·‡ª@dzŒ\ ³âÝaRºo’–³%*‹u*«¡612Ö=ŠŸè]9lU>=1·6™š¨ÇsŒb¯‘sj0`«óòpŠ‘{4Ç)÷›¸È9.ît•M
-Ú®Šqi¨P€cü£¥fŽM t††ö»–]}<ËEé¹åG@'Yå(è¿ð¥8t¾»òá–˜ ”ì)™["B´g¬áaÃœ#@®r\”CIMZíÇG:w·iI'3­4»”šâÓ±àþÙº¢}=ïBO+º0â §J¦MEOÝÄGê¸ãi.Â!öT‚7½ÍV²âþ6Ó’v=0Å)òz1.AÊ/¸}2ÅC].p‹¬²#)Ý1‚Œ\ï.øiýCÑ6 -yMÌËXýBx¶¯`¦Ù¤””] æ¡@rr‚¥õdµ§*Ö¥¨‡[ú(‰øß®H ™×g›K¬|*yb— Ÿ{µ´lç$6ÑYöTLË>3½ì*è¯?Ý]ü˜qÓ Ì¸9ßžÏ!ÁÄLÓ³,€G¨x°«sŠÃΖê k_‘rvÆ5 ÷ÆtkÎ 15éêÎ ú…g’Uä˜êPÖ¦ÙŒB×âÖ0‹U|ð 5?&ØܺµÙ›ßg`Âݺ†ŠÍ¯Ì<ÛWìûš¶ÒH?Ô“a5À[YaÔÖ`Ù£ÕäC§ê5É*¦¿ÚìG<²IÃèó›ì› Ð`À•Ÿ[Å•q¦÷ðÛ6쟠wd
-· ¡@k ¬?¶„o}ºº¢}]‰`éÒçœ{[’’žY8tï<fedδ2|ÆŽ®ÓEaÛ,M¼Ëy^­K‚ìŠ ÃW>f…|ßî<ZìèÛŸâ“f^õÉ í31Ñ~£ôb…:33K¶ÅåÑë½esM¬ó%!;`þ¿³p‹}Ó¬ÜÍâG>=«àp†]àždf¨ñ {ʪhó‡Œ;Ü´«v);oµŸòrécÕ/æwȆ·ÈЕ\¸UÌ
-Ð×p§¢:Òü&ëîFoQ”CNØU†­}AÇŸ»{\ªîö¥.h®“ ¶ôá“Ïôôüãibš}³Ò[.¢¥ßê#Co_.··ž.´°\Úšß´oï*YÑ·v‡²C½5É{¬,^ÑÓ¿NuÆžÌ×c\2d” bg…ÿƒ“þw%õûÿ(.ó·$°5Ž?ÏÜ©Æ›–F©mXZZš.¸àn"¹‚‚n‚â‚–û‚¹á‚¢(Š(¨¸¡!.(¢ânÎÌû4wþ’{úÎùáœ÷ý~?1t
-c¢"È1P;ƒˆö°û•./yOŠõZkuQW…: ²ü~›kŒw¶(Š“‚´‡ÚfÊ›km½àJSJ:Vƒ6Eñ.2®ŸÝ”
-úù­±‹ì±ÜŠ{¦«K~òûjë
-ô™®‹à?QùÁéûbeé¿UÕÚT䈽á7ËPF yp2‘s®ÉŽþŸ©œ§n'Æ–î,õÓ‘ÿÙú2{µR×b›bc¶%X7MUÄöÌWö3õ(¯«åÒüjÂû¥NbØ•¶œú]Ë'MßÏrp ß1§_ â¶0й&ÄmÃó13À~]’ÙÆIt¯ xì Çš$ðõ^ª·¦ç¦þŒvÑT£ï­6“ž›G9Ñ3ÍžººTW›ªèÞ¤(Ê")=›dF€Ù„[G©þ w_-µ`]Às&¸‰û²¸¡ Y¨»=[óï¥ÏIp&ri ;¨¿0ÂNߘ
-ÿSÇÅ_Δ’Œ½¹¡óµÄ§Ç£B¾±³0îh,'êPžé¿,Lu[b^숩`ÇyÉ.×~>œd§ìHsƒ¶Åœhë #èX†¹;öb£ç¾ÚAð¶*øtëDuÎ\ÅÝØ÷“3¹hC{¶Ÿ¶í¸Ü”á®oùè¥oŸͷ¥y©x™¶ 6z£‡øâ[wº÷F7nì$½úÖ~b‘`Ü7ûÓüõÍ©Œ"2ìb¦Š¥©û®L¸rüØqÿÝafØÎ`Nð!p‹•¢w'3üÞîhÊ:ÎIæ¢ 5ß_z(Á7Ç‹ct ÖzÈÁÛr.¦‘éZŽ}ù¯ëùòÉtqÚJwl²"æ¡ZoF ™$@Î5Ø
-‚¿£ˆëu .!Y”%)³U‰\Àøeˆ;ºúµ
-ãÎfø£ˆäcìÄù˜:ÓývûIq óƒ—[S=Ö»“]ÿ1—•žéXƒ(Ýýp‚}½Ø,¼Ö76ü0Vº\ÈO
-z¡ædLaO'‘'J:â`”
-þ*q¾í¦iÆ>jc~€³‘n§€+
-ðÐÉTaêbS¼õósu Ñ2\eâ ËÍ +ÍñŽ³ŸCn/5'Üßnc–ÄÖ‘Bk!ßÛʉ¹Ô§œ]lžÒÔÄ?7tOé¡OUæìÉ‹“FJ?8‰Ùȇó­dø†ˆd–Ða«Ýd˜ºà+¤‡9tæ#_Ì•Q7‡éÁŠrDZ~×(Ló²J²ü­CYþ–±lxqWY›}¨nI‹¢´5¸§35ho};>l£Ÿ
-'ó`23è@E„oI½6úÒÜϵܬk}ûxŠ“:}®-˲ªØÈS ?ãRW]x¡æ§¶Fî eÃÖE¤—¦œ7)+æhºš¶%ç!wÆòÂ׺³|–„Dw³47Ä6YŠµ(óà x·Ýþ,ØïËMíÇ“•™ÛâÜÀÙz”ól}Œ³y€³)8‰×3‚¼ñ¢¤©†TWã@^œY^’¤ù„qRrc야XÇ¡"¸½ŒtCSñÞÉÜËŒ8VUà'ɬJvò¡ªŒ`êg…í÷
-
-ˆ(Š`CE ‚`7&›=ù(û?û Þ÷ÜûÜû»¶)fª(:“ˆñf¹›¢i%E›zp‘û"È!¡½Ûçgé{‰‘[Ãä·Wº¶&‡‚–꘡$È„X·¤p8JŽÝ¡ƒÍ#È­¡ò0S9îX.$mѲ:
-ä€x¦§Á>OV&ئè‰.yMöÅŠ
-^!àË(§”“åÕðÑ'K¬e‚ïRР®Y\ü¥Š’êš#%m åš?›‡1¡^Mm±}¾&ww„²MT¿üìWf湚‘å²f£¦¬ƒÜÝÄ&Þ®¶5¹Uôtçlõ[—”1u•†˘0†ƒ:QÕ"d\˜é#ÚÿóêQ
-JöGq/wz‹ŸÚ³þÐÁwE•ñÿÐ6Âü<
-nÑçéš,ó0ùåõzãLÏÃxµ,¸[IN;_¤dÛ2Í9K»çš°¦v¢u’¹Ñ IçZfÞ×u.öF_‡wH«’'JŸ;$ ÷z$åÂFèY,cŒ4ç<'Ç.©|mŸÄ¾¸Z’Ž
->ngZP½3J‡¬~ÀEHkóÊka>ÆNì‹SmÈ_èçbìÕªvmü«áDUSh•†+ fدqL""¿mБÿÝã³7Ť ×Açj!áÖÐÒp»ù¾þë&{ºDJ;œDEXE%a×+õt·¦–,oÈ tÊ™n çV³Qg: euúr7 ´ØžjÈ ¸^£¡¯ô4¤yfã2.uuÔ3­€è]â=k T¨"jþMY_ø§C.(>˜¬Š_ëBjšsüwÑ‘
-6Ò½X µMaÁVqQ°w>•‡/¶æø­Ç¦b„—4Ùˆˆ:˜«ûÅåý—ôºÀñßÏ·®u:eã6¯¥fŽP*Ór‹¤a*K‘!{ÈŲs²á^dÈFq ((
-"ÈÐìÜÎëþpÿûí/x¾ÏóýŒ÷6v‘C^ƒk“7Ï.¹¢h/ü5¬§BbnKbO84ÓkF݉GZÙ„Ÿ
-ti“{÷Ü9A-4%쩘Èo!Û3*pB®Ä–Ûq‘µÎΘ£ç]`EHw©MÁÅŸÛ¥­8¦£T½Wí$dîÊp7>Õ¦Ê19»S­Ùæ¾²®ýQõ«g¢åQÜ,&†-b¢o‘]Ò
-Q;„G~!ß;ƒ|¸Ü_–¢ï.ÿ‡^Rðîå©­Wr ¤¿ k8µQ·Î?A.Ï·×Å‚V¿’Q±ñ¥9mõCõƒÙv¨k’Vf~ »´õø+Ûù±%oõ÷–,Ï0>/¢âÔ{e”¢ÝÑÖŒ¤MH<T  Ø\Ÿ“}°fÜ@¯Ixˆ°FˆÐýŽ¸»ÒÏ>Ör‹”—I+À,:&do†Þ—µæG—XuA%­dÈs¸úü±‡Ù›cBuRXêêŸõ©¾YÈ#Ç>²!ï/¿‡ÝM˜yè½YFÙŽœV·I8Q»Á'î;Ï /2j"Z!Ò?×÷+Eû8¼9B‡tïºÃú÷}I«´ã‡«³3a¡ÕúdÍÙîaDšOÉxíPŠ°£’¦t™°îZX#ÆúÌꀜR^ –ùÄâýYBþÁ"¥èØÚÅrLÒ¡¶­7‰E+˜b÷ªøÄD¨ùÏ\£!¬ŸÞ\w|mÇ=âC˜tdlo8µspA¡tžUã!§61ݳÀx=H-9Ô°Q¹úâ6!%fä4ìÈ° O.+ÅS}3°Ìÿ튄ß×ù”#©èÄÖÁ?^P61õÈÀoÚW³*ÝsmŽÄ¿=Ó8ðŽ¢½Âö™˜å‘‹à „È’°%ª£UïËñùÎÑ–€v²âf.:¤ïh³~Äd¬üÑx#ºD­vèh þ±ÆÆF,”Ÿ
-ÞŸÅç…M\ä.à-}OýS45ª#{€QZ¢¾J¬q)áUm ¹9Ùј»%"·'¹µ¯äG–w-wTüWWŒÒº´³uùo—¤û»C@÷)•^µò¿>É»ï[îá©Ôô¡ `} ÏA‘eî Ø$«Þ>ˆHsOa@¹ßŸ8¤CÍ5KxâRÀ:cãSEÊþxÍÕ½ñÆ[>9Puvgø0ï<·æH h[N~Z$% äò3 µö§§””!S7Ã>„¹çj¸¶=^Ã9\û`†T׶×3s'«’v¿FØÒv¶ÛåÙÊ{è³´*ew
-‘é›Çƒ\c¸‡ÀÖ)õÈ8Õ†~ÄmcìRX%†GTbTD)Fø&iECmàsïÏ©¹/R¼cÍb&1Á1ŒIw4]ý<g]H;]aÀbzr…k²9cÈþyì–sˆ˜£î¨½x¤¡V&­lÂ$@' í°ÀB[¡g¾>P{ÑÜýâ—–VdR½¾—f¦€j$¢cB&>: ${ˆ\@G¹þEfÝ™]* jv\ >õʈ ßt[nRÇm85IhaaýŒ¸¹5M|[˜ŒZ?Ï$¬}¢ov  ,ôWq-µ2®eÂŽnØ_â5¯ŒãÁÎ)JåéJ·À?‹ùd¨Œý‰Æ;ÛCM÷¢:€ÛÖÅôøŠ„¥íÇܵ| €ƒj)°!%øoVAKÌHªpMÔßÝ“ÁÓ#Z2älEÄ;˜~s‚TàW3!?¶$§k<bÂDª (‘«_ªï˜ÿ¬L]ûÒxóǶ¤Ï¯c"uïšî8FÈà„UÂ?¶ðYq —V“Ë|rd^d±­8¬¢—‡­½â¹Þº[š·0PD/ÄÇÌ"ü±‰?Yå‘¿mˆy^%½lsŸ[–öÄWß5<à_3kŽT¬`ï¾NšÙˆ¿7ظ˜Ý¸1Œy¸1Òœ³ð Jaùõ¯èGç6úëïìN¡2ƒZRebU@Knôöz
-é©~e+à˦ôý9j¹ß Æ¥ÜYAƒB ÿÍ4@ËwÏu7ïÍpËN
-šР†øÜ7OÛ…^õNc²¢ª^bL×/ñ+;±Ž1V鎼z ¡Wyç‰`÷(6Ã5ŠJ3õ½úÍØS™¸.i•Ð÷fY5_1÷–ûáW§Yå)c”’Kë™ÁYZ©±§á††=ïþ‚Nÿní´¤*çXímïö‰GÖšµ?E~æž •ÙG  ¥žW¢F6&¹ÚÉuµä8?A.Úú¡—}ŠÖœªí鱉x(ŸŠ óÌs«´½”€Aˆö-`AÛãM·5]å)KÒ²¹'[ ÃZîl£KÐJƒ€– Œ2“vÙÔóòÜÞ$ü¾W˳Áï›oNÖôˆß5tâËbªk™aí«¾`í­½dî)¿à¨º‘Ô«¦.êæ0¥Àð¶îð}YÑ%zõ¡
-.à ½Šæl¯ŸT3+Z1Úø‰þ€+þåÿ—éWÚW‡_M{:3'¶i›LÓ,g²™Ä8&*MâncŒŠ7”M@ÙwÙDTpÁÔ51&P@%ʪ( ÙdW$&Ú3þ!ó˼¾÷ÍýÞ{?ŸçÙ_¢”Ÿ
-xQ€/våˆÌÀªÀ¿ˆ*tÍ6dî/µþzlâ N]‚¿šX­ÿ rÉ+£VFµí-€¯""z£G+
--“ÁI-v¼ÁcÞqisœº‹«Â¦ü¸ºƒèšiYFŸýdÝtsOψhÐyŸl<ÐK/S["±[A}’Úîñ*™­ð4­°ì¬¸îâ ÔG_;&ÙIkï¨KÝÍ]€^²Nb@qàHë\ZbK‹¯q)q=·Ídоš92÷tï*˜à
-([²ÃËÐ{¦ÑÒŸv$uiQ AzQûŽ”œû~ Ú•’Ÿzd”²¸ŽR{jç2Œl¼_Š~´..;¿óºù6À‡
-¹j“°ÊgéEgVøOÎGôªÈ<>7 ÝÉ…>)&ÿ]WÕëCÍ—ü€s™^·åéEÏ.ùdО¬ñVp~7(Ç–¸fqù†áæëËšó¾%Ö3ï"l}ÕxÕ2ÖpÕ2Íx/¢+¸šc‹xl‚@~:•„ü°®¿+¢å t¤š„–Tå”4¥ï«ÑEEKŽ±5ÿƒ‰…Ùž‚§¹°…G[|F|¼Ã–z¦!w¶Çk®˜Fª~(éU‡ëÂŽÀ2³Q-zö£WF(ˆ©éõ15¶äw+ ùy.
-_Ó3›Ž6™ÐOvAWjKØç˜$ Âþz²óù_Pkj
-8²‚- «Å1-½.²Ö+ hÇ^™ßЊ,“¨Û€oþô‰¢C §Ží|^ÂÄÀXX¤ÔV'eîÒ=oÉ”ó+.„4äÆ?¼]CŸœ=G66+¤Ã÷õÔú˜‰ÏLÙzú?Ú%fí`«x%µ%~3ŠÅam71¢¦<«±QU[np¡-àÙ|ÿ<,#¼D*K­uÓJb¾cyKó¼ìœN”÷µg‘öȃ  ±Æ'„5½,ß"¯Ñ0T{y†”ý…^˜ûoÖý6èXÓ\JfOÁoØ“rª]üÃ÷@û¦éA9ä•ãŸºç»áÎùA¼K!&íÉ;<s”¼ÝYRžy ’n®»å™@¦Þ 2|3è¿—rö°º³5¨$™Gw§h禩 ïw߀om2`>€‡¼‹ÌŠÈ*^eÁv¦¡×=ó°tïBsº}|Í/oÎ:22¡Q£€ê˜§=‰j‡†Ã«]DÀ}ò’fzsXM.?‰¼cŸl—¨u» ì*à æj@Ù^ÐsÐÁ%\¡_‰É1–Ÿ³ >¹à›…fGµ<”c–U®7Þv¼Â”j;ñ¾YT¦Vðäì#ïïaé·úÞ²z%!5±2ŒH×ô6g¦ÖYèÐ2d);7C/üÇxkÎw
-fáw¶ñæa=»ñ†ðpšõôÃôvLç$|jÊÔA‰i(uÎÙ–¼=À-½ÚvHÈ08`~ƒ-Xé­¸ xÖã
- NšXdà¢ËÈÒ¨¦µÂ#ƒÝÌ[gat#Õ7ôbðÏÞ9$È'CæGÞªS›|FÊ"à
-$fhG–‰¿np§á`r“‰˜-Àûíi©°]EËã°WÖPë#.fGŠ+Š( Ç63®gÂ’6æÃÜ<
-ä©OAhÚ§C¬¯[2øÍ##ú_ÏÀÜÇm6)ibÀN<Þ‰IIêÉ
-.°žÆ¬¿¼8t ME =¤€¦ãþ±›KI¯ò:ƒzFÅÎTÇý}½Ô­¤ÞuÓóC \dl"øçé%I D
-kèeÁ9\ðÞç¯Å—ƒªæëq£2iéãÃEß8¿äk‹¢áÆž’ŽˆjȌ֔¶2
-ÈeQÒ¬;r@„˜YÐî×ðêTœš•W˜¬EEë9³¬ùÆ^Ä…áö#€¿kög)*vÕ¾Š]½ôâü‚8ÿ+‹ìÑŸV@®ì¾oÌL†
-¨Åhß”¨Ö€ï,þöþâBLÛ
-‚ Œ
-x‘‡Iظ¿†R”°rа™ƒŽèUìtäñ2“¼¯á´¬¾¦‚>Ϊþ°Ñ?´«¥Õ®µæ¸Fê/{Þ´ÜHؘ-»ˆr`wzføµkJa½W#cnÍt5™^"ó–†Ñ·\¯WüsØI©úß;=ý1°Ÿ½ ñÀ h;\‘ÉcV¶t=õªy{3ØܘÙtâé‘|öö¿ÙSw×-¾Ä]õÎC˜wßÀ¼’§«Ýø˜ºõ§½×ÅßÚûÊ.nŒáKV™Ôú–Zd”#/}t‹ûþç—žz’O®njÒˆ© ÏÖÝÜ®ÿ>¾qÜÏÆÜÓäZ•¬âìǽ¾áÏ{Šé¾4f$”í¾GgǬ|\Ì"ćõTPÇAìLÒz”ÝE›J^ùÖ¸á×ô⣖^ZØa<“„×G_Þ å´ü† úÃõòÐ=aá¡VTQˆ0à,ß4íADÍGøæ({è/=êfHÕ–   Û—wäcbZÊ;+ØCþœ'ÇÌfsݧ¢>ôƒ}ìFçú';ž: ÊÉJ7lê®÷Œoygé…neÛ••Ug`UgATM~thd"2öj¼1¬fTÄ´ÌÚ—ˆÔuÜ ªAŸ0 ãVZ5l¦#Ž–8¤O€1b‹<tHÏoM8ûeq§L7÷t¦l<ì}3¨ÃæùT¸‚˜žT“Yå“CfmÒÊj:]åÉ%1]Go¦õfÜ@­HYXèC‹„Ÿ²=é'åyUìú/YÖq¢|AÌC`}{ë÷æ+›˜ýq]þòÐ)f‡ôŒràŦ¨¡PòÃjìc౓¢æÚÚHãµ}ÐÛýFÖ:^PM«›À¬¬° §ëB~ÒƦz”迪57n¥#>¬Ë~M,õË~Úù¥Cãúæs>mp©‡.%jâ`CF^Ëö«¶)Bf95‹ðQ»Ñ?ßQÔv¥ È NÂÊl k)%©E!èeRIÜL­<˜EÝv •~·öºõjÜ" ¸ûëbÁì@ýß-¯
-§;ëäõì/Òÿ}O¨²(Zþd–×ÿ!òs)4Ÿ¡Îµ•sH‡Î=S^`*.VWÆH©èˆW‚¿PªbY÷¶¦)׶gH5e‡„˜7±Pe;»+³Djˆ¾ë¸¼7ý.¡'×½)eb5'—™M9‡[ôÏõ~
-J>Öãø<á`­ÎâÆï2«ÚÛ󂎲o”±SJ^fÇçMõdC4œ³³{KÃw++ltÉ#
-}À|oÖ6ý%±ø¸¦ìç•ÊœGÆ*x`þQ@©(xøØ´‰r/k¦6î|¸›ºžwÃìJ@ó¼àQ@)£›1AŽ|rþM4·°;²fFs|~ vkêQbf¡N×Ôã‡kJyÎÁE' œþè ¡>2…«>^“pRá¶ópåéZxQLN{4Ä?ç€Gò^¥´¸¡¯„dò¤G!öÏBŽ_ןk³ní³ÒºF[ðÉY+¿{v°îpU4r¼)«^,¤lr^hw)¬#ß,oŽ=OÚxýˆ“׋89Ý)+·»
-¨à•±ÒvN{ÞÉlɘ¨ )·S@ƒiÔ—±B˜"xÁØõŸQÝþÐq!>Ýya÷c×¥ŒÞ”6
-{Ó6).e¡'LKnéºÿŸC“0n$– 7RË´†¢KÆ©µ¯S˜Yà5}0;¾„¯/ö‹ØH@c´úí?zìå²G0]„zC³ÔÛ Ç±E3ê>ù¨;õAtfð‡ÐcÎs¢fÙðÜØÀ…½y^GÁÉÇæLÄ;±ì̺ðæ­¸ž×œµ(˜e߸vgžuKG¬B¬BBÆ"‚7AWd¢ÒªöYÒ®âï/+H9‡V±· AG7϶#ö‘®üÛ–: AlÄIïŒÎVÇh‡jMim”›wòû
-vá`Î:Ò‘³ñÝcâ“
-òº”·‰‡‚³¼¦¤…ÓýûŽvò,¦™(x!bÁ3Êø†GOwO?…epe]@Ü·Ò£ ô&mBÊáú“WåU
-ì 8ceõìX]97wQsžQº{‚~oq¼÷û´}„zñs6\-b¥·”WD¸ŠGL.»€÷ÎVÕêãuµºäSðÁîyzO¾²3ÇnH™a<bÑsö'ÊŒó‰2¾¬ œ³Ïæ¯=bºÞ¯³FKÊÂnÍXø]G~ÿ4¨ýù$¨Ö–|JÎ.ì@#V /aÐŒ¤,
-rÆ,~”1²š³f^ÈóÖįµâ„™Çë*p—
-(í‚R6%;k{*Ošd„}¯}ßÀlÚú0|5®gÜM›ù]à\Gø=¾j{šT“1³Ûr6Ÿc5F¦(77'q—§ýpU­BV”Â]_`ÝOÛ$øŒ ð
-Z›`ÞJ. {O‚ã/Ž6$¼”aèÆî\ß7{óت¨S2·U@×ä]rqÞ% –=2î'ÀJY+¥>i¾}‹ÿÁû¼ý‹Íÿs\^Om¥g¾Êdov&“ñÎì$ñØëµ×ØÙ8k\( ¢E2M .¡~tTA`ƒ—uÅØ^lšAõŽ$DH¨ëD1qò‡äó^|·§Ìû~¿ßó¼&”ÄÔMI“œézËnPuÿûëI^]IÊ ìÉY-½ž‡¶Ýž£ß^›"]C]bÆŽVÒ˜ üë  €‹þ!eÎ)åúxýy+ ]h¿úÐrnEõ`ÓÈmW?j>5ñ9à>@ ãØ1Ž¼¼Þõɶ³Æ{u߬ Õ"Þ‡ï#`ßv¸d¢¸àUÀyŸ¢ø_H¦*zmá9Â…}ÀY‡Ê‘ì² +iáµ™cÔ(î¤]{^˜•µ 0V^·Ýô½lý¾¸"‡ +’/õr¤ëa£ñŠhÀI&‹9še×$ÍbÚñæØT1(‘ AgXìܚg—ïê¹ Ùe!ísDª:Þ‰¢ú¾†œ NF.ËZh•¿°ç1µè–óÐ/»b`Շ畈E€‹©U; —Q «1ë“KÒ®˜FØ´³H.óM´œÜ|ßq¾àbc|ø£
-<ëïÙ%nSRÏÅmÍ3«#€o¢K*6pîM „ i½Ái%u}FÞî ØU>14Kmˆ„„„UAÏ.«vtnu–QÒpë¢K¢»»5só6NàžÎ´Aв–ŽX•œˆj÷»5Mû)®ÀÄt¬ŸQ+Ô½»Èk Í0JQ“¤;o•ô÷(]}Ývvó ñRBÛ{1SnÜìË{ÅTÐ#íyŒUðŠ)À¡ÊºÎÒ‚OHDøiÆ͇”óiã¡:í‚y3¤Ë»ZFCÆ*e<#ÃÅ€j4±ÄÅ™ÇêO›F1§ÀÝìL嬕w½?lϳjRF#¦á‹ Çó.…he²ÿGãöo Â['Ö&º«ÁlÚ|­ Ï÷ßÌ[Å}{sß 3>eð§5¹r× h_ûm 2ç”fìRÚÎ<½,e¢c ¿+cÑ—e2ÐaÒN˜3óñèòýg{¾{ãEDÊ[Y ¨™\šêù1¶(ÀçÃ{þ{#:Љ1}ϯ
-V•ª½€Žhmžmÿð<ÅÚU³j‚rX7Öpfs®çç‚W@:ÀœÏ>~_ÖÀê ¼"Ô¾Ü:'n<ù‡¼MFË;xw÷ܼ»¨•^šÅŸ‹ëÉ·P;` 7Lͺ ^ðÿø¬]Ø7’Ë£š®ëG^~OÑ#茊óÇ
-~©`GCü)c¡Ô§münÄ)ae݃
-ÄóäcÎ?þYó2nvë¾x4mà·_¶¯Ê¾²Tc­¹°ú[qäqÿ~•™•´‰û7Fž# +¢¸³ñ¡÷ªçeË™õ™®Ê”‘‰Š+¸¡¾EUÍ_‚SÄÛ+ðÀ¾‹GHM·—X«¿}L¼ò•¢õÊ×ú®ŸYÁ@@–§¬\,bã
-È’…²„›…„YÈz³ÜllõœþýùþûâÞïïyžïçw»ï k1¢jÞÓ¸ª‹©©Â
-èIôŠ´IÎNZÆF÷ ‡ÁYê­õ˜ Í
-؇nˆœ¶0›vfˆWÃZêƒS¿b1A­¾øËþ)LÑÞ\G9øG6蟃¹õ±‰Ôšj,´”Ø펼zeyÞ¯ÍqêÏÂ㔟2À«9DH[¹,t½¿ko±ûVÔÄÅ&­|Rx‰RêyÓøƒmâ—3`¦5·Îxœ±ÑªQpOa1ãØ58pèR*âþS÷á/k/}oV•·ùkíù“ óÔ'—Ÿø岜SЕYã“2F^[ÆØW_&Þ̵ý´7Cú9²Ü[‘ZãbO7¥ÂSŸLZpJzÓ¶þ–ð
-ázd…]‹
-,ÑÊt’ö¨a˜³¯æaü¿QJ“jVmBͬÙ~‡»fÞ<³ýs9‹{sÊ‘´st<¶¦€‚+ôÊíü˜žZÕtÝ‹h(wú®ª½¥žª°QÎŒYÇ ¤à‘ B:z•ŠX¼7ÛS윲°€GY˜}­,²ÂiÌÛùy;„‹­ôÜwÿúøœûUÝň¶ãnÚ5Ç-2FH/ÂíÎsk=ïYeÎIÒåнÌ=ÙTdVÖ^´Õž‰æ.Àbbæã6?¯¹_×_N;« FcDÏxÖ±1ˆß–XU0–g£É5qwHÓ]暬û“Vtë÷ŸÚnæ"ZÚÎïD,ýDÐí/ š³OýÿaÞŽjÈ×3딨½·. KÙ(ÈžÂÆÐ è ª”CÆ êEÛŸØsôÒ†r3¤í(¬Òj"fFí¡OÌ;ô?Ï8¥Ü´ƒGκ¤œ¤EÒ3ððQ»!¤¡WÄLÔšœKÈ<ò©^çý/–NsÌ5£v~OÖΧ„z*œ¯°7¬õÿØ[¤ÕÅM㣃Jì|K«ö~$ß9ÝyŸ°‰iI³€xd½ÄÞ…l‡Ea +ëû5ïRŽ!¦Þ'!]Çí}5¹$¤£”%Ì”²Cëéñ6vÜj;n–çùGÞd
-‚
-²CȾ‘…¬7¹¹ AëLutŽ­¢bI dß²A a YÈž
-ðÛY•9ô…­Yô°—-À]³v„’±‰) „Š¨ÈÍ`ž·€+öí,.^æuFTð`Z?É,2[<ÏQÕËÚÿ¬`W}YÀ\?z´&œ²O? (àÞ] <˜²HyYÀ'€GP;‹˜ïËCWvT„†¬ëÑÓŒkúŸ13LÉØ%¬ˆZBÜSB²&1%mäöî-á*÷WˆÕq=­9n/câ$u´Æ¸–Öþ@lÈÙ}9óÈÝ„[Ñ{v—‘þ°BÔ|;òƒçöoËâ–Ï—á¦3/û/íÌ%„OFÛvT´0?tÚ4ÒSc«ïзߓª3^wøNÎ657I¨Áß7oI5¡w¸ºœŽq/ofu%
-n1ZÄUî®ÐZ“V˜“w ¨Q-¾6ªÇßHþÚÕá¯í©I åuép#iÊ.ÄeZy]<qèYy3½;c¥w%rÔ)¢Äl9¦çõì+Gj7^õëúùþ?¼3Ã÷"Ú‘Þ„…Û7"xß í†á æ|Â&æ—²é¢]B/XùCi £¥ì€H'^ TrÀÄ¢SHˆÙ1Ã8m_=I}
-öŠx#ïÆÕú]G>¡äFFËΩ鴎ߟֳ;²zÁP^'!¥VFïo¾~ðE^ù§À¿Û¾N˜íE7Â,{'åy»¿¥ÄTz_ßû"¾<p9o¡ß);!lÉ%¦§Ì0:¡—¢àNÀ{Ô¤ë%ØÉeFcTÍnM¡¼sBP\äíù@Ïé ¼Á_Ž©™w
-„VpŒ±ìÏP_ÙS*‚¯‘®Äxu´kûC÷åˆUÕŽ‘vW¡¬EŽd­Sã[J¨0€°ä“ˆKkˆàpMÄ\&HØ üÚñjT!ÆlÌ!Cúɾ¿l½¡4äOÏÀî9t GNû±è³v™õq5³¹àQrV„œžU¯ï, ¯
-þé´–Ö|´
-áO@OWNG4‚À<ó&p<úŽÚ˜1cšáë¦'õg·˜ê„‘Õ{`á ö’ÄLœ®¨Þœ¶súr6hx)*c=eÃ×ïkðµyÌ<
-<~zXÓ±ÚÊ1ÿd²&F·÷iÿÅÐËίý¿¶Ÿ‹ë(w>nÊžžåÏ“&»«dµ9öÚù蜕‰©I­ÛŠþš]%¥>ndu½òòÚÔÓ àžøoqãAÑ- Ä
-½É;ƒ¹š±
-±iàza¾*¸€¾z?\±³H¸QtÊå</tÙU)×±ÛOs¤hâ’jtåö|Û—ë/›Ï
-ÈäÏrN˜ v³nOÅlÎÚƘY‡ˆê{ƒ­È8Eôÿ†¤?ù /¹˜ßýccÇëãÔ;·—È5[JFãÚ[È öý¼YH9q³zÿðóÈy´¼ƒØ²þªûÜÚ éjÒŠŒXÅìà,¹J#»{ö=¿úsß/ýßå¬ÊÇM©üSP2‘s@Ø=¥®äAXÇkb!p³ÿ³_fOMei
-ö½!CcÚúpÙæï{Áóq§V½÷bàÏYF•¥oŒaõ`¯ªùáeÿßß,(°­ :um¸ùŒwŒ‘k98Wü—Øy˃Ì̵FÑ®K«û~Q«O€=\p¶³ÐõÕåßÎ [Þëâ‹*™ß ¬Ü™à_µÓo½ú¿îÏË ;Fù¸ºpqÚ7-®ÛuÑâ½ÚOK)¿°Ý*øw¨>ý‡1ûßÿï ü¯@"°D`‰À $H6l Ø@"°D`‰À $H6l Ø@"°D`‰À $H6l Ø@"°D`‰À $H6l Ø@"°D`‰À $H6l Ø@"°D`‰À $H6l Ø@"°D`‰ÀFÇöBùáW))E"V!CÆ 5]!¥ä—d·ƒß5 ©Œ‘*H)íiù˜¬Ï”ñÅ"¦&ç¦ôÔŒ,rZ ›!$Ÿ|IAäJŒÏå‹@c-“!dŸ"Ÿ¡gÁAJ'SÈ釯&5é •šEM¥dS²r(éé´Ü,2•–EKÍHÏ¥RshTZf¹;DËLͤR3r2(”ì,ÚûAÂdPöa[.øŸìœô D=ìEɤRhY”¬wAï ÷³‚ÞŽGj$‰HÕ¤\òÉSä¦F`•Ï&I~’£$åóW̲óÞ}-`ƒŒü7™ ˆ¹LJ+d+øLö¥òæ2rSéZ²w2¡ïÞÈ?Y%3sR©9d:9#B¦¤ç$3Èûy=’Sú±×Ÿ4r˜…v8ã,r²o:)%åp’É+ LËÎÈ ’šJ~œ•^íZahFË÷OË|O%õ[FqsÈ*nŽ{„ ¸…]˜æ\™»«CvŒŽ»Ô=;&IËú$7ß÷LP²ýT\™UtF­jnÑŠB3JFhVv-`–6,Áú”¢Ù;&ª\~È)Zážò
-CÏxE¸‰_40Î6?h¹u'`ýË]¿µ_ã{¦¤o‹J^?aåùÇ;sƒÏXÂS¢2|ZÕ³ê$/¾–® ÷T…-Rºošyqc²#gm¤%-8Í)‹º„õ¡iÎ¥Èlw-á±¢NMOÄ,®…WFa©w˜IÅ =MžÞÞ˜]Λ¤ôˆE-Šy4Ò°]ÆØœê*\i£lq.îLˆ+³¦;dTvžjy›#ª6Üp]éŸ
-Ë´©©+ã_ÀNßÔŽmgtjŠuœÑj¥ "È"²H !!d»dß7‚qêZj)" ;d½77;¢„@öÜ%÷&8?H/Îœ·gþÿßïyN3á•Þ=Š€]EMê´[ѹ» ¬Ú]’ÔçP½`{^X^QuÀlUa°–—ÝÝ̬ ë“.{kV{C#8âp¤\À¿•þ+y÷Ò'¸Ixë ^Y{Ê%ïL»µœBÀnʹ ¼Äœ¨jû/ö‰×ÜŸ2+¼Jb]ÚJ¹ y¯úÞ¬íƱàvp‘ùõ©ÕþÊWM'óßã>qSÑrIØ á³G,r¼‰D,
-1I0Ÿªó@ͪbQ5‡[ôåMË0Zµ€!eÖ­a¥W5Ý„O×þ’KƒUÛÓgB¿µŸ^³µŸHÎX Âº]‘\„nìO³+ÞM¶üð’q_Öa’¦Œ[z{áAÝqÏXó·øª–G¡ur™{móEã—ÛSm§·°Žp‹êI5$jQ⃨€èø8lQP¨Ít·Saƒ !À‚‚Ž9œtÌ~Ÿ
-(zé ¢—Bä]…uMoÑoQþ¡NÌ%n¢QÀ¢P!£´ˆšdÅ UW ;Æ0Ä¢J» ÜœÇ
-áÈ°–ŒZŒDÌ ÀBFYpþÙ,¬äÄfï]Øz͹DÇíŠ[#Šqë0½iŸ(½}NE,Æb@Í)"ÒvÌ/¨£ÃÂV:*îÊ"œê”—[CGÍ:5ˆ19yŸ¼›J;éÈP7–1ò^QCb‰{­àÑ J¨óE9âœ"B:QÚ µl®ºµ˜ß <Ú}Ü5c:¨}ZŒ8§ñðƒçÔ
->-€í†ŒÇÈO.™¸Ç,$<VâMßÅȳºãgÃÁ ÆéܼU”ZÖ³ög¥µ3ÐõÔŒ¤_“4&æzÎG&[¾yû’Yá{Òu*6ɾJúŒò<ÈþÄÂ`ÕÎëJj‘WGÁ’VÊϯ!ÉQ±“ ß
-à¿P@Œb ¶H1pý›VõÖ6NmÚF©¨YKDõÒkâÆCÐ+À'½e›
-H‰”—Kv\9DW =h‚Ÿ±{è]øœÙûŸöÅ#©²ò1Õj»\¶¤HÀ›†öG÷2ªITëïÿÒê¥t1—ñþóí?oòþï7 ãá:| þW'²¹÷V»÷ÞëûŸ¦<LŠ•æ¥Ûû…àŸ­rB‰˜ˆÆa­×acB¤‰–ÚG>!m˜I¯Æ_õý×Ûuñ!ÒMò£š xˆ5×°ò~AjÕ^ªU‰‰ÐR2æ°Ú‚Ç—¡>”ÛÝ!ë$)´™i=Çi®î<µ ïë2ÎU†MH!¼’Xc>ªKõüˆŠ÷o'P%[V¢©ü”j\ mµiçŒoƒì¡¢5+U}ƒªR–è!¡_€
-i­½–±"•"^ŤZéï¿'¨nJ.ÇG¤FÔ®«ð¤ÑÈ9äÍ"ŽÉ(dIW9¼ðôî¢~€¬rÔÕ£W}g(Ì(µR§u›*£ºWnp¤˜=(W^UuÔ>OºQÕ5yjAFÈêïö Jðwå<=!è/…²P½¢û /;+{PgƃŠZ'a£fÖ‰×bö`<BÍøÚ¸ès!<Ú(Mz«A P>fÔ 1º­µb-V)j‹(!d¹Ä¼7PaâAkNP×’05›q”¾å,ù6±ÎíãÆDa«¨éD¸iW˜#Þ}6oT˜'yŒèç -(O÷€P¿}kYè‹£ÕèÛZŸZ0Û
-¬áÇô.Ó®­«`
-Â$ A¢êûŒ¨6Š,_À»/Úgõ|³¯{ÌtÂëàMÞ®Ù‰}ä·“£¦è€}ˆs#í#v]§wzÊS¶¬§ô0ðPÒ•½AS¢â¥×ýª']?ißךr{É€3V„K|);5™<®M©”ïà[[è>…!Щ&V°i¿êŨÆ9<!)btS6«Ž•ô)vŽ“"W&\öÀzÒ6À½(Ìr¯ýÐÁ?ÞN T;t5ŸY·÷tšFè`VÇ·A'ïÉq˜jK­õ/@ÏO‹UÐ<¸7éÁûcPS ùÆhí¼LÓú–ù~„T‰‚žÇYM©d&Ù9´_©2UÅ
-}†¸ŽÙúÂ8
-íŒI¸¾GÁ“‘Hnˆø õ“q”Ü|c¦¾—ÆQ*•Œ‹ú8G ý*3Þêq`_¥êŒÕñÒ9*Ùo©lÚË ôóèîYn5£ð ^ÀV¡QÎÎQ=[á^9GÉmJ .azvŽ’[b\IH{Q«/+þ—s¢~
-ý8šÂEM¡ÒÆÈ>Iãªi¥ú«›sRɇf"_G ×ÆmDö\ùl@0!‘´€Œãq0Ž'ÐÍ8ž@wæÊjUœzÅ5ßÍ2ÚY¶B=ÙÆL^UË@±ƒ<ÙF*€À1D°1ã,,‡šß
-
-rwȃ>ê9T§FV³—³mTdŽªyK«óÂ7êubä²Ø^"Ÿ|£2·µJ:ê-ϾQ'=§TÇ+ßx
-‘£mÄ+ë½x§§µr¶Ž
-árU£!µž­ã'ï/òhDf[ü›u$NF¦À¶]ê³u¼ ûÝ:þ/ÖQ:æ23l”KSMˆ‹Kkï ƒí_¹»”\OJù?@Ü©BøšÎb‚Ç}D¶‰ß‡‰mq
-ÃÓ¼¿O〖CÒ×ú9±j•É4!5Í
-íÎtÇ[‹-bxK­î%(Ýþ>ßAKH³rÇ^R2Wá²Z@;>9ÇØÞ2ŒtRå›»Ï]”ç-y½¾ú²N³­|ÒH û¥Ÿ|ôŸÂg¦«Ø}‘ý=1ÌEÌ$sãcÔC>º›âMNÏ0|_ß’oôPp¢ìýØ•×Ëì¿Œ—=’d·„O ;ЦÑ ðk*ÖWG7kòþü(ô²_ã-[#¨™< *+3ë¡1z]nFê7ÈOÙcö¹Œt&˜œl¥.ôPr óþTVxQ‰öf Ö˜ÖÀwçTºçV{ó*ƒ\ˆÍ¼–[%•³ÏçùbçI2ì²ûÐ ‡â­:Ä$ydïäÐ Ëäšð+梿RâI8þˆƒ¨)MWYƒ¦æû«n†¶ (Þ´J¯!Þ…Š´ ÈFÌZ/›Cø5…W½vFF†+6žžŸFOîÇ;jÃë[¹m:ô|öj§UË[®O´@Ñ-¶»;¦ÔÂì¡ú›ëÜEð¸Ë‚d|¥P<»`µÒpþSû/¢wLEê;€Ï¬N]’¸ Æw¤áw1 ÕT’,ÃE=Õ©:á¼;-Þ@§–köÐÚhÄàö1È$*l°<—5gñP„¹=·íh+`(R_j@Tâ–¨Zç:§uéÒ´ÄCj A§žNùêÚ‚µh^gbOÓv•< Švê&^œI/J¨uñ tªk [l²LøtQæïOäû¹ñP¢Gg Dñä½Õý#þ\˜Zxveeª§+…³ˆI¨§„éëZÔrÝ Žp‹,lÙ @˜]t!7ï>½Œ4Cb›TDYjh;+v¬œÝjªÂ„d>fŠ ¶ Æ&•¦xæjIxÐ ˜–¡H:€¾n@Ѓ1ëTkW;<Œ›‚ÚÖ)R2Ú™ÙÉX™EƒeĶBóvyMl ‚Ò…i¡ß}À¼Ùi¶ã+î`*+ÛN^ç‰.Äßôê·ÿ±“»ò¸l©Ú!þ89(£‘Mj=&­ÕÞ #B©Nlƒ¡äÚ$œúE*±Ê ¯pC¼§Î&U^äè…·Z²‘±€í­oLHÓ>×k±æ{,Ù—Îdj™Ž)»Â&``Å#ˆjÂÝ8…Hm?‚®DÔ F.íÕïuk™GÊ!8î·óÆkÊŸõ3Å„a­Ÿv…5ƒÌ‰4Œcö9¶ý=mÀBZ@(H:§ F¶¡‰ˆïM¢ Ž×q{†þ¥Nµ¦]•]š‹²AN8µ;³˜+84²î‚bL”âo˜‰ïV—貫ž5ã#÷§\$òVêâňü‘ȶ}fA¹Ï­Å× C ð7niN $‡HÉ_=¹6D9ÜÀÖè…Œ¨ãÎ#ºÆ‚YûX!ªâDóÕC1‘ICÇBDëÔ¸¤ôŽð^–Ž qâÃ)‹7M«(—ÞWAÄ‘¢Ÿ»ʸXWbòC*.‰ÿR¹øäÖÛ°š½BB5êLu²9ÿPNÆW†Ï¬W$¦?ûÊÞoü£¾ø/–‚¤§þS~b>GeW¶ ÆÊ$[Ù¡ 7éÉí(?8–L…æÔç³^¥ý$¿—ѿܘµ•ÔÖJ:hÊT܆°6 cÙñô½@|˜D]šû®N‰ƒb–ZÙá©âu(9N´ ÍH MÞæ“ ð$¥³áòÔPø”Ø!‰ÇÉ…T­uSÜÙðàËν¡jg¢«ýÂ¥@ªÐãØŸº€”tø¹JÉ×ýUCÙʇ µ A̱C(ƒiÚÚ8A~[q}Ò¯¯_fÚˆqoyKÕ?=åçÍy/ ¯#è='
-_êA ÓÇ øœ)^U%ò¯#Ý. §çv–«»Z/ ï]´JžóS"†ÐõŽãrKŠ†I)Ô±ž¦Kê*#œìrëÕ–Žb4Öú:™á8þÚÃHßZzØ>Ø7Ûr"Û„ïÈƺå瘖—@D³ºWTX¢éFT„qB
-5U>d7UzGªÞ_B²K‘£»­Ä˜”ãðëâµa'Á ¶á«ZRÂTö`³]õÅáPTϳEQZ! ]ô`#.ù÷3‰ñecRÙ‡œ'Ðu¸Ýî¨ç òý ã5þùøïÿÿóç_K1¹GÐ’Èó‘&þªÉ80ð„3¤44'G¼c¯,‰ÔD9&„C¸dsåjŠÄ\ö"þ°/HTpFQ0zA¢R(ŒÅ§YS¦%¢è%*楾@$¸:1ÄuN†ÔxMk3} ãŒ_e€ a]£½‘ ×Ä?EµÈñ¡ªëÇsЗ:Mæ"û•ù‡½‹„† .—ˆÕNDˆE±Rµ‘û½ªÕ )³ÞLu›c…5Å™è å$íÎëYx¡ñS ›ˆ€‹bêä¹Ìû˯ùkç¼öA—cŒ-Õ4¾÷³ÎœÅàXiì/½ÒB¯6ª46s^ÈU•¢¤0xNˆí¡ÆD¡ÂQ£g;Ïä§9”ˆˆñºA1WŠÐyDð¢õ‚ìûó„áZÈ™>Jf;"ŽŽÒfñZ'C7Pø¹þш[ â¶eèDS´änêäìX‘Ìm] "¡€1¿Þ JѳÚ_¤’íòìNuÊÏû*έØ}lÊ“-BÖâgçs¦¥¶³ >—É€ñ£IË™y-&Ir× á H$O\ ›DM ª
-§áis~u,H™¹ùu™i¦ë¸ù¥þ)F¦ì·‰øH›ÎšüSoÁÁ™Ý†}&åôŒ„ Žz2ù·sõµ“7ë:Ê"T`]ð¡ÐæÇVòÆM)
-"ÄøÆ·¥MjŒ.RÌà÷!W CYéHÐÂË¿Å5e 2&³™‰é2S€¢tcòãRJ*ð[¶þ tä"ÊË»‡ÖMû¦É@ Š3šÈ
-9 åö¶Q ßGПO§eôYy=nw’W%²_ØC˜´²"¥Ÿ]å­÷'w‚Šœ¦eVùáæ¾Qžm¨Ü„u‰i†, BçXŒ˜¿/#¬Ýˆoi UŒÚ6´ì¨5Œ¤‡Pž–ÞÁp~KY·ø m´ƒaå‚K)AÛ[†ö\F°ç5ïÐ%–¼ ǧV*ƒ_Ž¾yqÅ4ý”§JÈÿp¡iq’Â)—v‘ðQ6LÌœ|hy“AÕ­Õ!çð¡ŒÌôðl-åi°«{`ãéî_äC®f½ö­Oh÷€ÿ1ÂYÁ(V-Gµæ»cHªŒ&ܨ¶“¼Dα6¸ÊHø! ß!IöB> eûSüDÉL’ã>SÍwye\ILÅéiè7èe>PƒÑrÈ]6+ˆ„È6üåI«m#fÑó-ðŒ!JÌØšK õ2cÇl'?ĈÓRÉ. -]’Z zÙ‡3}ìDe…b8*“ZV¯Ãõ½@=¢ð’êqFC¥h²mB]hÇIB9P­‡éF1
-m…Çã«úC©¹*ÕõsÚÂ("GœÓ¼ÆPŽÒ[“Îýøµö¤¶×If+ʃ͢-·¹‚NÉž:Q/tût]ã¾o@Yë£Õ‘—muƒý‰·µ¾ƒ˜I‰ø7DÔ!<›ÙÅìúûÚå%$;©©$ÔvÎ…´BdgãÔõ ™Õaã÷Ä@Š†hÚÓí9ùoÆËÉŽä¢'À Жû"Ò@‘*O
-Ìr^LŸ¹6‡ª0Úè€@~£a¾)©A*öN¡wξ ìè”1 ;Â*f5…ÂCÁ5å´¢ÄE5ˆ‰håÐ ¨œ¼ãVÌ ¼‘ðgˆé‚£ŒkŽ–=± QK—0à«)ˆ‘ÂàÁ©Éª7—†Ã SÐKw@/«O&+Y,t@
-ÿàÁ5\!‰àÊe§¬„?5½b™:%º .H¶ö™šÉuÂìÍRÊÍxÊi‚„@Ѓ} õ'ÄÐò„RV¥"Cé
-ÒåxE«3Ú1¥3\8¤6¶7är)òœDÆYÝãgŽ‰²/!µIŠ%ß³ƒüòiQµÚ µ]=ÒÓþÿIþL”tþ¸õx'¸Ó¦ý±ñèä'jÐËÞÙ —¸Æa5!áD[1ßÆN~©Ë0DAdY¼¶íåY0‚Ë»§¬÷Dæzò¿ÄzI8Kä£o™0F+hJq »ÔPŽjœþ9éòÃk`iíK#2 þ4­¦¦ÃöÊý„ !К.okJ˜}
-©›6ˆ^Ÿú˜9H:‚úçöQ¼&Íeº&ûRÅ[ÍüþÔõPà£1eÓÅǨ÷Ü{s
-UëÝ©aEØõdKL,ä`üZó^
-V1™ó¹Ø^Á€äÝ9`F¼‚##3jÍd£á¢²íÈ á’Óô¯Ð)–¾@4…Ñ—ìÖͨ“Ÿ+Çäm¢ø=Œ¯õ¶A¨±dÛ#ÔY¦*SÂÏ1fJðÿ£${9Ä•o« :¿³XÑô;‚¸T4›ô¦n¢£VbŸâÿ°Þ2ééœ3c·<“––ºÉ Aæ_äc¿
-KÍôâsaþN`77ÂD4tž¶§Ñ
-âs]|PÆÚ*¡’Pk· ¬»
-T•0á,¼¸ñbØ-ؼ„PÆÂC;ÞEÑY“§˜»†A;hçD&— ¬ZºÑÛVÑkzÃN`U1ôc<¥@ÚN'ð$)î¸y=GáË HïUf/:FÅ|
-¶D䄺„2¤„D†²Ú©LÒ–fiÝa›x$Sí¼Ze¿šV× ,ÄØdžÜÅä
-r›Ž¿IÚÞo=†Ò+ÈÍ›_­©¶ù¯ã¾ÿñŸý÷‡ìëÇݲÈ'>,¶@”Æ
-Ü}M^ Cò!z‚LÙMŸŒ<Œ/;Ü…]ð§e%/o¯ÁðqüW*þ^§þ!Þ…ŒXþ}á©$}uÔ.jÀefgÏÔ¼Èë‹nL&E Ñã§Ý¿ô9Í`¥µÖÇŽ;eP×Î
-Â+hŽå…ž CÛ âáNmaé™ cÇÏ]ÁŒQfšÓØ+›å½˜]‚£ôØY7L‹íÜg¬l“u“ÔÙgïˆß6˜Ù¤·®ž©øwÕ©¼]ÝÅG ’Ø™n{v¹]¨È±ì£8ä›o˾ܙ¥™‰tû£-4ã¸x'ØP D™ª­pëúìÊSÞõç‚ 0už ‚£`Ö)Z=8Æ€ÀÜ®aJ`5v)ØÞà¹$õð×(ªh÷æù»D¶ >ò“a>²Ov/ÖvXÖ¤Ã×I@sQùr| SÁT`@)R:‡[3—ƒd.S0¢ˆ\žËMxoÂÜÁu¼ºañüÚ
-ó!Ì_=œùïïL±>¬§?Ø"ïr5—Óþ8Ã%#\f{~ y††Ãë»Î94D²‡%(>je§Æ9%8“aOïk—±©1í|Š©<Zm­š6™%‚Û|ÿÛr»=ùX£pw-¸!v `Õˆò˜aŸ‚x+a‡'Œ…Àµ¶Ê”Mòè'¼Œ3' íYo9 ½XDó8,CüÓDíß]Yìå‚oV–æZÓ a&ÃíØͶ ”´¹+² ÄÖW¬-fcqeÈP-¶kÈCK$©Åi ŽXÐΞòúÔPSAòÌËö%"""FK±E¹`=p%:Í‚9AE%¬ð霥“Ñácû†õH@ hDg·ì\Ø>•ÑmŠÓå…ê<'ƒ26o'…ZºŠ¦"PLÆrrø‚ÄNÀÐviÊ,b œò˦]Á$Ç·V?g³gX„¿HÜÚnɺ‰êí&Ñ6"jŠ³hÐ Ì <“K«L†H!)X¿i!mð9†Ëž}#@¬{Ä­Å´w]U¼å·cAø‡0Šc1)ª¬ y5Åì@öî‰
-‚rT}:ç"EÜKÙηê©z… :fÛïN¸-¥ÆÏ5g;Q(òL¶ûP~ìõ=g½¢±Žßâ¸ä#ØLFÄ»ŠÖÕ[*A±fƒo·¢ÁöPƒ:ì \p‘SS°uš¥+ì¯Ãh²`JšËR_éí
-±nžiÒ=çĵº  B+¥z” $³ÊZVlmÚ_:3? ˆ€$%X㧫0 B®¬Õ’;÷=YoÊ”ÿþZ§Vì‹ó£C[Ô“d3bŸº„A¨úÎç“m€ < §Ã®O 
-E&f? ñb>c„Ú–ñ6ÅÖgœkt!{ž¥WèßØ€ç
-?ü˜¬Î¢ÕlÑó7’8ˆ!“%»¹GlY&²gûâ=ô ¢¢4ÁîÊòL«cq/Ìûo>¾Ca±=,¶WB‚3d*íú¹¿O]Áˆx”ÎÝÞ&„txs[$UõX­YæyAˆ
-8
-´tz¸BeÂÌvý~ùsgxA8$Ï!9ãŸÛpM@'•¼$©9\Ä3-qNdË:ö»d³~¾ eËS1ë!ß=
-ª«VhÎg=> •
-‡&Qo O­úøÆpjŒÿø‹Iþó?þø¿ÌT×':cŸ²¿1²
-<‡GQËÆžŒÆ>ØG]ŠÓ¬(’  =¾KŒÊ»(ø¥UO?J–/ñ‹TòÝwØBx!‰I»» ä#øÉ÷Úý«ÊÆÝ×F~˜c$Ú]…/S§. kÇ_îreÍåEò]
-såð¥¼×Iøz¢<Y)Ú±ÊÓè6—ÍÈ‹ÿÂp™›Æ('íèŽUÍÆ•x*JëH†˜2÷a¹hƇdU0Çùx|ÂeàhØ“n$ZBø”4‹7 kBZAƒC”¬cdRØ2€ J]šq°5?×Q=q#NËî¬SM^€Q[È…ÂCH”Öº~>5TRÉÚKÉ£[—…eEQ~›©ì¹ý¨ æœ‚„Îì¢ÛH´ÕSÅÂ`3T­ùÃ;óqRˆ ‘è%Å"îÔÇÀðBQ2¦ì^EK‚R Kç$'@‚òX¨ŠV[)JƱ{k:@ü¨"3ÏË-ß}GY«!­¸aêÒJ¨Þð8´¢ `pH’Ft"mu7,P`‹iB³ç6Ö¨Ö85Ü%°1ªH\ðúñÒ#K¼¤t©8lÂɯLâà2ŒÉ‘èó”x
-½HhQ(?ÊÞñ±]viv>3~x‹ÔùmBPleá»×“Lò`²#Œ Š5¼ bƒH©×Ž?¤öô’äÓ~ÐoaPE||.ûõyÞEgT\ eg+²l?$J¡¢hOŸÛ8/ƒÏRÂnç\6+ ‘1þ<ðt³úòêÄc/ã`‡#dö*"ÛÊBd´‚â·ëâ¤`ÙãÒX³Óp¿S­qÃÆÐF‡°ã6,Å­qÈ[ÇŸ‡´?‚£«¿AÚ'q4$´ûŒÓ쨓ãô¢UYÞµA]ÐíÁ·#ý(0+ltY…`R¨xäªX÷Ë‘ìPÖX¯fš6OÄþ5—À8]ÀÀsÇq”÷«
-crñï°IàÓ—Y¡Ø4 6Ôº½ìëŠÌº0“VpŽv·j³Ö\ëhÀi/†én:,Û·‰DÌšgÚ:Ñ™W5ùþÌÂ:ž9/‚Kgqè’È_ Ô¨¯lÇòŽßÁÌ(Š¦¨9ÄaUt69\l÷  YÕÝ÷ÅPÁ°³1Œ
-–%¤0œbX]¦5öàRGÄ©’,‰Ô¦kÑ´ññB.d8G6%ül~Ô áñSùÚL)G#Fö$6ÒKû¨¯§ë׿‹'pSË^·‡ø¯ÏAŒïÊ(¸L²«JGêØq$œ­ãëÐ(þR³øž†ä?öë•ÃÀ&^÷ŽÊ1l^cô6­Ò–Ï’Û陲$÷» y#ݫߥÊôQèín\@m
-ýQ…Êb+—n”G´¯é
-…rS^l…J
-$Œ³ó,4†U-¯æß!*u1ºd0Då§Ê0gõn“åÃúã¨WÓáC \Ë¿ƒÞÀLèéà=@ YŒ Á*âzD{XÝ~1L`š·YÕ©LO˹Ãöãå’dÇ­ÑxZA¿ 9–‡Ú…§WûŸú$ ^©«XÑÏñ"ÜÆe‘@"?òÖ!”3þ¾‚ñ_ñ6êR¨>2’NdæˆG0äï²$âHA”( áyø9Ai"«ÑQ Â,Œ‘O\çǹÈ7û”û‡8‘åeùë
-LùD}Ý€æ JUIli(@ÇclsÎ`yYèº|œà"7WÏSp¹”°ßŒ}í™/ýüçTÓf,ëHt‘r½¼H|haÝúI°4âŒýùÃfc°¤®1w7Ì¢'-¦;à„)Kbd¥d
-˜œ_ç^ô·¶¾¾#ÀÓÖ»4²èÄÑÂôð2°›2­ø¤Àã1ù¼*þ‚}… Úz>E ^‚»Ðig/øiW–œ—ðQ0^Uaà Jðš$Í5xŠr¢X·3R“ŒIÀÔÓ€º“&ªâ¼j«œC’1Õ°iRÖŒMÂë¯Mø`ÀS[ÙE×s:Ðdæ‘^Ηé0^ç¿*J¥§G ¶¨°èŽû9ãc64Ýe7üØP(Yô¯$ ¹ã#ÝVaµ Ÿ{Ñ!BR½¤!ã)gÞ‹ø\·HÖ …Pãë¡( s¬Ì²_;Â:ÌÕuv’-Œ
-r67%Ä^pS°æñ°É>-…3À]ða³Š(¶ôõ©®ŸÁŸØÐSŸ%–qPc=–ø§Š¶"C
-žÎý‹8ê ÷†ÕÁ ÂÁK”20R
- þª¬@
-vÖËeÛX1Dͬ{ Ï+…òÂP+mqó½èÔI »fíÛEj~}ƒ¾ä3þTö0Â(ã`ñ'ËÖ’-Q¯»ÏšE"“ýlçÎÏ™F•É<Ö±èIÉqÚ¡—ß©(ºàAÌa†¸ 0'ßen‰¦pwªTO : ¶JðSA«µŽÙI¤cíÌš?è"LYyÕàXB1Ò~V¼?Zf[%h+n¨àèçðØÄh@þ}¤{ÅüPµT±ót
-ž•¨7~7ò¶q• /˜
-èyßó)”rÖÂØ¡$„Úáy†ÂžüòËÀøÂoÎÕ‹’ð–'¨åµŠpòÀ'±Æy)š%8.ÈÍg9¤ ©ôéYÔ<8O÷–”ðU¬.¡-Ú{QCë$X/‚¸Q;D™FV%¨¤©7_ý¸9ŽU"GÍÔx¹ßfº ·l’tmrõOá{;/5­Ànù‡Î+o' óv¢*N ç§üj¹|ñ~Uñ ËZv~î A²ˆ
-§»çxÌ€mÆ?e—Äð¡ô…?g4î¨HLú÷Á‚ú9rn,9ŸGÊh‹X?;©‹>E“µŠÐ¿cÑýœª0Eï^~ˆM~Nñt•`Ÿ52Çå7y±c q|¸÷"DŠb0Ç°¦¦ñ†HBm«¨•HóÄÈÉÖǤ¼†lÀ¸žD¨Á¾Ó-«þtþB³jÉåPâ]Žro±Fq;ç>JÈ èh>Žmj`àÆI—ÜŸº
-EeEW<Ùê?cN˜Áî—]ah6žÿX%Yhè¨~u·ü`|(Éh`•òö÷§®EµvˆWõücšãꢪq•`¥2¯Ù.¡K5bˆ©°ý©e¤1zy ¡úPû)=j`à þž4÷+(ÿ| ¥º@¢ûƒY@†VÓ0¨cË|µ’S|¬ä^¦Ôm9¬4ÞJŸ*”I:‚,ª?vebKÙ¨Ç>³+©½Uåþ¥¢ézk‚¡9#{H^éIx49ƒ cÔó9†#S¯m”fÞÚhQ ­”ë,lm‚¤òËõÆj˜r ¼ŸÎýÙ&#¹¬sO¹ÉIÙn
-²?¦–®v¢u¿ 0„ðQ«8R”Œ‡EËÉæÎH@TR¶Ä7°2ì¸åc N;X…Âœ[M›Ž«ÅŸÍ u—˜e­Èög17ÿ| ‹
-Ê
-”|¬ „½QðQ7äX$8öÂõ1BÏÞÒ|N+r$>)˜·MX–¹ ë]ÔºÎQùåæºê· ²¨ «C@£µý©—ÆA.À¥ìœ—öBªÖ2ü0¬Ùp:¡ËQíÏÞù¹—ÿET”ùÍÚw7H|E–O7FæI2:f/Ÿ¾B ~:S«Ñ.âß kÄ·BX±(t^§±xpÌ£ï›ó¥!/…t6¢v  ÷§ÕŸÈJœ7hY8mCOâFêQ 5J@÷ ãî• 4±Ý¦ã1ôâ aw=
-è´bEÕ(©;p¯òlzŽ­ liÑU!‚2E6ªÐõݘ‚´ ?È}¡Ø+昰·‚^\ÃÆ/׳aœ…¸1C`²ÀÊØÙ„Ï¿<jáùåQÓóœ£3^,Þë0þ¦i—a] ÖûS/*p‰\‘)ŸvÌ1¨ŒÆãíw!òBí±ˆýsà­/Þaž‰¤CÆÍ1hCB“k¨|÷B”Bødîýc h&ëÒ"ÄxIäB1½c¥œ".rby<%†,¶à!‘09@3Ö1XÞO*§}i°ZâDˆôÚ$“vËÒiº>œˆëC YâPFoéî^”´ôÍj¾nʆíu +‘6ˆÅÖ% ÏlF/NÐ7Iü¸ $‡Ø÷á·ì"¬Õ\nDý¯`®†uÒÊ0™ —ªŠÌ2¥ýôÊ!JÁÕ|{OØ`«åBè›íã5ÉÞsÔê<æµàç]Ž¾ñÞtôß™§Ó_3ì„|«ÔŸ7&æ‹ÁŇ.¥ácÞqg™x:ÛMµ¡ú06â±·©Qçmâ«’‘}þ„½,;ªºoŽöHØÆÞB^U•r”* ÆØ»¯†gáOQ¥Å„†¨áÜ"3l×öjðz™Ìöš5¦¥Žr÷¨üÅDüªT»1‚•Ž†v¬s89_u2Ì—©yšae˜ 9“ð¶õ’1êòd2ÝÖ;A_ ÿáÆÀ+ô2Bد⭠³} ­É N€cÐ1ÚÃÓàQ̹ Ïd5+×L–§€ f¼0îìAW°[¼æ-`Ô>€‹˜ñZLVŽž8¡³8#0¶@å¾ “.
-ãáÖ¡¬b€m‘‘­G•^àss¯t:gR+Î2PÃWáÈ)Yç®í#ÁeaЪqÉÈ/¤ô)Ú udêçá¼<¥zèG$jã‰åç
-"Åä™Îì}a-)Dºáê°ð`z“¼¬<E7Â8×-ôÚCÔNÈŸõ)uv@æs›wçp –§f_.‚Ô1 'mø‰T2°
-ÖöCG$'äúrÑtá
-ý§eDC\6 hŽ Q–å74yiõÚ<ù#¿ëçCü‹`
-iÉ}õóÓ(ž{;È‘{}DG—–;OPïœÒÔ¾µƒŠQEËiObӌ֌\6mV¨¦ÔÀ¬4Òç¸Ftõ~U£’2”+Oj­ðE² ýÔ棯zJ#±aÏæÈå0’êöF×€cRÁ¸Út½Š”ÍÂpã—?|h4Û{½ ¹<5”/·ý©§ë‹ûÞR
-\¢o þºó}® 0õâ.^!™ö£>¼´i+¦©E6i…ÈD‚,ºÕþ•ÖdÒÂ<bº¬4 ;myÔg؃"›Ç:…`Àˆß…¾02Ägý ø®${}¹ƒ&fÍFyŒI³ÊÊ{t‚~ßÑ·CÈÄWW³¤g"HƒÝ ”¸7QÎ
-[‹V¹aOŸ…7´…´B:Ê»†Ül—ÆBçVv •G+¢4÷‰“\íZÁÆuùÿÙ-Ûðkõ¯šÿ÷W¦ eG
-G„£8W4Zv­©Ó|„'D¦$;aÇ)qÕ
-¹ zQ|Î,Ø=]êà“w¼Šªè‚ÌgŠ7Ü«ÎAعNy†
->oƒøwK, `øú[­*aÖ±ƒŽ;} úxçâ×û€(šN]Ã_öîxᧂ’Ÿ!î(Tö<U!ø©”q ¯3‚åOMF^ÈŸõ)4bÞü…{²UUH4æ‘ömÐv!Ê;æ
-ÑœD܃ ¯ o“&¦y}‰Q¦ žÒöLRÀ¨6Ì딲‹ð4S‘*Üqðz‚wbN`@Ïš6/èlZ=\:‰D‘Þꨮ¬(ÃòTy7:Tixû®VÒ~ËÒR‚ÐTãšøG]!È+
-Ï[÷2û-Ī5¢Œ£FlÚ?‡]›Zvƒo2ÆÛ\=˜¸a@Ô‚©#Ásôp'ñòò3Yg›€a¿Q#'èšësõjBžï}¼3<Ïí§Lñëú¹~7ýO7†fâò²l#ýºBÈYè¶`©jIžAV„¥
-Áä°á1ú6â‹(îÞVáàp(1¢!¶A²õ–/"R´ŒÂ[ž—ÙÐü‹Ö
-s¾{áµq‘¼<©§pN½‰’$B˜Ì4ÃÒ¿ð ˜îPM01eÌ{×<ø)ÊýÙù/Cøa˜åW‡J±o<¸ 3ûÂ.€å‚×íá r#:á¢Ü
-XŒxùæ¯Æ`ô¤ùÞ¶œ‰á6uæÃ_È$s…¯éÑ7-—fzæç2×ï0Zd¸²í=ÖmØuØsòð ¡ñBèýäš©à ÄÝrŽ
-ÓŠ±2ÄØ•mDl{¿Iø¬Mݸ‰ì1öçÆÙ)ÅÂBݘ¨_ïl§9ÑüमجéÌ+‹Ç²õ6ÏçPåS˜æjÚ·1§õ§È ¥¶‘î@ù¡dC£™æ¸[éoöš'¦ÑyV!ÃâT–€§'¿ òŽ#'…åœð=·O 1䂳o;K¾€¾Þ)¦jþ×ßðçþùñ׿ۤ É.&ÍiÔÙŽ0)Òñ¸ZÀßQ“Vªª›ŠútA jEP ”`%3(ì’Éän7Ö¯¸8Ó—Y´@ÉB<ÀÍç†(ú±ŠÜ&­徭Å€XÉ)ÒäÚs‡Ì$ÃAäí)•`Fó(ñÃVl@IÄŽB²šÜ˶;îwØæ™c¦Êíî6Š…³Ü¿*HyáÿmTŒ ŠI‹ëÏÝPÌ6üÌlœs”¶cùŸ7zþqdVçö„&IPôW'_¾-ìºRéT~•x¬ãz&eI=×
-6ìH|š_¾tu”HÙ!vÅ rf-A¸Óš¾ö
-W—fu §é ïPQß}G:B®@»ŠÝ¸‰ˆ2*½;‰¬Œ‘G·ÝƒÜÜ9rŠ§ØÒˆsª9ØwC„yÕ`‹•ÖÁ¨ÚÓáUÔ
-µJ¨6è,òŠaš²õ!B:k*€ô)fàü\ÜSù-SdºuÃ`êÄN -„Z±E`ÙÛYsJš9ªA([”KNÕĈŠÃTLÀÜCqÑ–Œ¨:B+Ë'­;£¦¬PÞ!ì=ã¬Hvˆp1„<±"Ëâ/AXÞ cDY,.Ç vC$´:1ž„bP.&ŽqKÛЉ‰pkÞÓ9 ¿»Á Ìn–ÖEj Á@5!¨ÕÚ‰]
-%Ôà!ì v‰‡KÓÝW…ÛTkÆ\ö;º]œjŽV=ù®Èë‘ nÓZ·’Þ=¯Ä×ÿßš•!–K õd)¹ÀÅ›zä¿àèÙq`{¿®ü%¢ruÈ€Z)Tsy0nY¶B¤C&oøЊŸqî>/!5ÎUí($ ‹/7\«A`3f,~{nž=49”­ì~
-–6{8¦Jåiæi^Gž
-wÂÙ›ï¯ tFTÅr¿î}JÔ’>”¯ÑgAd¡1Ç€(w='ѬsPš´¹.Ù%Øõí3‘œÛYb‹jpRå¬~m-ß@˜Qî3¦ÝH”pŒv—AÞ¼€®2Ì bpËÕ¿$
-¸/w²—
-É•ŒúÙV΢µó»ÄrZ¬3h
-ñ'åª0Úþ Ô§`G½‰Y—eñô,)¸BÏ<"ßècUEh-˜Yäl%愶é,2Ü1›Ð# üQÂc&;ISÎ31˜Ç¿‘|KGûƒÉÙeS¸\Èld¡ 3Þ@Cü©&ШÞî¾€¾n@Ç…Y#R–` ‘eäosög$ÙÈ_â&
-hwG¼Z>En%Ê߶6­‚XΈX†¬éÝÕXÙ,v+_]Ãê®Z
-k¬óê<øyLaI¸ÅC·¯ßX?ìbâ#Ó^Ôd¶”â4 ©îÝì Š81þ³çŠñfou"¾Zä_ß9ÛðzØ[§ÝôÇüô¹÷¼C<#¾±GÛÏ0å>ñ0­–½çP€]1-!Aï4oC¨/77„}b?¢0nH™â…úØN2hÜ”ùôNFeΪ˜
-Ïhþâ ‡,òV@ªÕ° Í~¡°4D‡!.“‡ÞÝ·ïhÈÞ8§±ô²i¾¶¦Õç±ûŽ({• 3Tê¹:'1Ge“¨o•˜¬ªóšgÿÏÕã×ÝGx†ÆfzÛrcúŠ Š™
-H‰Œ—Mn%9„Oà;xÝÀ$$Š¤¤e£fémŸ 1³êZÎýçcJzÝ/SiT¡þü–D2 M³H+-¹êç×Ç?òç¿?²v;²©×¢9'ÿüWnåPëÒjµ®êŸ?@|Ñ¥Ôdžò瀴jU“hïÒK͵‹hku@Äjvm&E¢Gr‘^T¼µÏ?ÇM¥(¿[mU†3Z³¦-•qŠZîR¥wŽ=RšˆÔ\$õñÔ»JÎVû2oª®<®Z*íéœÖrËD‘m=¦U-^Jí>ÃîÎOj—S­ÅÍ{ukŸ?>v 9Ü2ØRKêòù×Çî29L<ÕÄóªËƒåPO¤Xª¶ ü™_¸;çR…û[.¥¼D4/ºPBŽÚR"Ì
-Å&%.Ä’£7Ž,ÞKk²…î&D
-A ^1}Ïâ |„×£ð¨Ò”¿6ÇýÜax¸[ÊÖÉ|>©¡ä¬ä¼­L§Ôͺ÷x ñø(×Âé’Ý*„î©Ž‡ëÑ8Ö‹§4™8’ræ*ž5¬yMB^Ú€DGôJ9ŒOF½*¼¨]¹Ì¹º)Bã>Ó`‚Ô`ªÍ×¤Ö 2?R¢8™B/šfÉÄMטÔAx@%˜ˆÚÀ—óœÆëˆÃà0Õ81UÉ4+¿† UÿÔ°¿6h)v¥êÞÆk©’5è$u
-~?çF›ûknôÛEu£ñ=;·f¸çøû¦ú±(”â@ZÜAŸ†ˆcÒ„<ú/,6S‘y†òo@'„baŽ[W_çð_QO€"ŒÐ˜m&ÂDzz ÀåPb²)ÓÞ3ÜH> É礘›I;©]Æ<&S
-—û‚PªÔë\çb¯QITûVÊY¤Ý1_O˜(|F’í4q' ¥ìŒ¸õV0h©¥³GËY†ÀÁÌ 
-5=]Ð`#ÇØk\Û<…íæ¦p³39ŒU>‘óà™d’ó´Å"R_©ØS©¾/ùµm´fW”ÅÆ̧IRD\e3G)b÷jX‰Ù<Ü S5(-Á<;„Q˜ëŽ®gìgÆF”cÈKç˜íx!¦Xç ›8’=oJÂÝ̧[ÔQŽ(
-‰i6xqÇÀßœ¸•\ÔQó+æÎ@žË¾…_(kähþg:ƒVœkFZ{,€ÉDŠpO«à >2û9|­WTÉJW¶ú yl8§ëZ´©÷}½:ùÇÖÆrÇö¶]ÓN¢ãëxyAææk2e?o,Æ­ÅVˆkUebc {2¯Šm[D´³
-.3²:Ž¡åùŒY²ô†NÆla ¹pB8™È ¼Ž2eŒ©”°î«Åo E ÒÙzX쯽VüȘP-²…ŠVl@ô¦*¿û¹g y [ÑΙCpR ‚YPŒ0Võã5òoÖŒ©‡DÖ´fõЈ·>Î1¶ÂD‹èZ@µ†97~­«j’ý’ù±Ì«8ô~
-°?'¸c•Ï/ˆÁÊ„¹˜qSØ[4E¬'V3t•Ùºˆ!ŒX4¾LJŒEÙ&ÑM£%êËÈiw!`ëmËA=×5L)Ä1osÊ}_‘ãXw"ùu »Æ®Ã ž£å¢ÅqUˆÎ+¬wa¿«ß7zŽáPl¹j¤­~ˆ£_éþ2t6¡Ï¬2ÈÊ”‹’bñãpN0H™íZÖ”f¡ŠTá·lBâÕ”‰h9ËØšNÍLuN" dI‘í¼¥Ã‚ä4•²iá;ÐÅ5} PN™£²ŽÔ_!¯x
-Ö+úì…8cÄ\¿Á\ŸMœŒeJÖÒ$F¢¨ˆ •
-YÖÐODcŒ4rH°Š—ë¶WSJ­Ûéíœy]m9?°:™ÛTöÆZqbÓˆsúÁ¥ìs‚´0]³BÖ5ßðëe¥áºÙ
-7µíœàÏRÆ“Ñüu¨Ó̓
-.kTé6‰qsŒ@H]¢Ä¸Á²uŒwÞcÃQ®)Ë…ÜcÒEÿ•,[Çx×ö»
-Å ¯&´4ÃèÒ]º?nj
-Ñ”0d[Ÿ4©îË·¯Ânj°É19Ömª¥²?†¦pôZªÌuŽ$ÂàÛ Â8'sWŒ LŠê”0y ‹‚q±|”ûvŸe6Щójc1Ò›wØln:.ŠÌ œo}ގîäYÍC;ÍúÓ œ‚JÞ¢Ór_¶Ñ1oÏ è›cG+è?¹AWgKò>1T½°«³O›ýøf ¾–zD!/osܳX?¼OÎ{;äKH"‡ž®†ÝÃ{•…Î'e–q…Ú)ýòG¬"™H&£¤‰¢gÇ«^åkXƨ¿?†oÁ#è`²³sQ"åà”æÒ¯…`$œ³]!;>ÔBáð©0|¢ÈK-Lª5 3ã2MËñ¯RY¯ž@»6 C¹] ="\…²¬µÅ°Œ›D¶ütÏbåã¸ÌZæ×Ò"³†Â(e91ç¤$€­­àâ­z7ŽŽà´cç$ößž{DÔ—Æm½\õ…NÆàUäKº<Ç£9EW1Üý%Ú«zx+͇»VB%æÅag ¥l<½³X7k%°â½·FîÌ\к^ªÈsùŒ:ïиnùØF7h¹yþXWœ@»‚û‘Z¨ÊÚ> :,Ò· ¾$I¢49ÑIJqT˜»6`$è
-Óç$»qéJ³¤¾ƒ¼3q*#‚¼
-Å‚¼‚z•bÝÊ{'…†wBF¹yßBتe'7÷ùÓ´Iï2C¾ãï\¾ÚgÐ#-¿=A݃ào?é4|b“F ³íváýĆ“=LÌH¥côBç–CŽÂú UÒ½Ax •ŽLË
- ù:¶# YFE
-¬~&"çYPžNwÉÏÕ2iŽêÀüom÷ñ¢\OÂirÊC*…ï¹É˜[ßXés1“©ìG¼ ²ü°Xù±)Žg0{Ž¥‡ é¶u)tE‰»An2 ¸—ùü•Õ{IrÞ}ÈSkœdÇðickÇÎäò3û›N[-|š¹Šòî>æ™ _ 'æœôõÕ€äôn Ú’‘A™Z#²X"¨Ñë@|uY!W4Já¨#}[7W •Z”j¿«øó1ô­$‘·TQx©òÅmò DLTŸaˬÓO ÉPnÖÀBÌWÊð :Š‘Íwµ¶¸øsºöƒm}3Åã¹¥º;Á!}wrŽözf«9&«lÙË*Áµ&½vIpT4Ò1tw —çÀ ”ãQ— OïP¾b\#/çÊn!’˜ EO-V¤{p¶ª(„=5Æê7Åxß‚äRQqÙs6ýÈ4ò›Ãë[-õiЦd§hÏa(¬gê­¬€*O¥‹Ó½æªR[²Šx%R‹Ÿ÷ÁP!zO¾¯„Ÿà’¼AÐL[ɵl§,Å¡.¬?0 Q>!‹…µsZfè(‡3ƒIH²ƒ9ÿ6šÞKJÆB¨¸¼Úd°œïlã´ ±Â÷°R›Â&ÓîÐbù%Ÿ\¸Òƒ,þ1 §c ‰P`msCþŹ¤ö–Œ™³³‰Õ»Ö&o‡Ú,k‚PˆÒW’9=™£¯óå•5+·ý2“ÜO•ÖŒ!íÏaƒH½ ¡nWÆ#²NrJüršãltà$² èÔƒyô S‡æºêåf7§`OƒúöÌ4kèø2óë'÷"y]CCSNHF?B·X´ñ#”¤~ïonüýí¿xÀŸùõ›zªtÍ
-îwúòéßÜÿÇß?ýðŸÙÏ6«ZH¾Ù¾oÞÕÕ9
-úBË‚:î(tÞ¼%‡¦À0påpŸ-U 3kme‡¡fSKí²Ýy|mø<ÄuÚÞž™®aþ(0”IT%eŽmYH
-“,½OɆVƒì§²
-{;|ôðø’7° ´û©Ì}“ø’&Ú@F¨Ê‹zXÚÅ_#Y̔޶+û 1–
-ŒcŽo!^Î[­ös¶Šï¯Ù:çôQ[îÉÙúxOñ!ä[©þý›¡™~Óç+h“Fýù8œ÷õK&¥Èd¶®?vaˆôB %œ+…‘óT E™Óʆ\92¸®È'®UÇô™5ôo´yL‡Œ[SÏ2u¨ü.wôÔfÐ>#6¶Nc:¿¦ñ•±óá1t{ø¨þ"w0?‹¸ø‹ÑH>1_q妿ø£T´!¼5€’¬IŽ…*
-Õ²÷§–Fз:#€'e@:þÒ‹¨u‰€¯=7¢Tí ¼Ö‡Ë ¥ 2ß4è5æjéã4Oª› =ÉX­«þ÷d:ÑáÇh¥¤Õž¯jŵàÿõ7_[Ð HÊ«RW:ÿG´†U¶WÄvן"ò«"µÒ©Œ×ìÓCзm<CªacŠ¸É‹A9k4Uœ!89ù‘JÇûºN@Ð
-³¤Ý˲¡ &wÐRæ1`dÍÒ‡é}pöq¡NBêàîÔs½_I OAŸAWÓ°bLó:˜yOº<{‹Ì.¤É£B›!I¿dôCpýâƒÒ¢y¼s,œšbG,º> —i„yŒ|h­:Å® —ñ”ÁçPÍo!Þ8ì?´ *íé€!¤KÇzM”H «ÃM(’6"
-û§À‡—RBK"Ru &‡…l²¼”ðC…¢ìo¤;N=Àƒp9Å àû|Ó´zLJ¤JCBÌ «·MBßR¬%Le£ÿ1`«%Œ•Õ*Úß–Š
-»¥Ú,0*ß05.ltšB¸¿ùU:#úfÓ´ ûÝšŽ5öþ{ðzä$Ô"únÀP¡7 ’Õ5UôŸ@ã7ßTt0盥<D É&{Æ(¼G| ‚%"”B1?tš:ÙÝcå5¢{«KL #ú“ä6+q%7 ÖºJí
-tÉp>}zO`Ùvw»€’è†U0„3hI E ÉŸ3 Ž„B•ºæ®€¬Pœ]˜ìι’ødÜn—O‹@aYc‡.£b©{B‚Ñ°“æcw¯å·ß{ÏD©3•ËÃ!ô ¡Œ9 ‘ø© >+ÿ ¶P‹Iß{ïI Ã\ÅHñi6Æl$‡ á)ä«^4þñŸ±ŽŽ4áo\“„ðšO­·¯sŒ¦%]ìÑE
-z·>œÍŽÛÉâ_Òè9JO˜[!´é„ûN4pÈñN‡ZιU|ÍÖ9§¯Ú:pÏνï>E|+Ô¿10r‹aVRÓbžOuÿzú“òˆ¤ù*\ÓCÛÂèÁgÉ\Ò¢
-ÕP8k‹Åá¬^…cìýî.NC£c00
-Ìæ»—¸¾7oõ+y™ÈÁ:7€±
-¡)Ç‚fÁ¨Y„Ÿ[Z7Ýú‚/g×å. 0?æÖ]à ‹…1 O!’ V/ª0ÏŸ[ù·ÍÕ(ã`èùã±ìáF…‡ "RÂÏòOžïbÈù¾,Uö™Fzb}–Õ­PsäûY K ¨Š~…_§«Êµó—ObG*¢…à©+L%ëzW_è÷Ú“kS=©IiÓÓ9læTþKy™$GrAðó‡y ûræ•¿˜+ùÿ«<°4ÉBÙ’™Ì4£hK¤§p;¯O‘ßÂxSY›%ÏÒƆqyZnJžÚZ0´ê!z“(“!P;i~</ÒÁ"•Ø6|öSÄç`õŒ,Ö4Q•%ÖÞÆ‘¨Ö®Ú£ ñ,§Á²YDÉ„ ÚTçó™`E¨7_^)‚\­A=ùÔï(B9eÍàßè-ÑdÇe¼€vù‹%W¡1CŠf}ñ(îæˆ:ËÑþÒ¥L±1ÒYe¿|í¯Uìà%È~šù^»‘h[`d5…cêçÎú2zhs¦$4ŸX_ xþ˜"˜˜YÖ”9›°£Œ‰1ïyÊ2iüQÈÚR¦ϦÇ|pusTóƒA™À« y™ î8~0$À–TažÃc ©meZ´`6ê(OÞïµæ°æŽMS2´ð«Ù² ¢²ÔfˆÞnD”·jòu A„ø «WÞZ •yD5„)wøº0éúz–7{ RË’pÛ ¦ß(*´`ˆ°Âƒq{-T^í;ÌÜ¿+”ú<‡9îˆaNv²~Kúë§I#űvê>fÎ(i¢]h¡?SB4åãÚ*eg|œ±S^YÍÄ=ð´ºñ7ºÈû#ÓcWE€…ð
-V:e8tÒØæÖöÖTD4Sð»,:K_Ò"ë~®AïóÌ1é´¡ëÎBÐYM
-ËÜ„]p½±:{ŒŽIêÓÃÜ In”}Ùñc ×aÈs}ág.¬JXSPÑ17¬¼Pþ. oPjm/œKÊ“H$ít
-¨ o&oïÛ´´ô€€ÝÏt¶~:ß/*«EEðç(kw«Ïß… ЀôÇáôÔdueu:£k.þ;$ðV("°9>5qj
->æ¶Ì¡Ô;³d…ˆð9!sÙ’«r2[JpÀîf¦Ó–{ÙqzõwçtŸªîÁ°\Æ?«_
- ®ê¨Â]ÏqÑôΑnÎ,ì>˜Øˆ$T]*ÓÁý¹ªЃư…•‰²o"‘Lp´$:ž"-ÑYŠL1øƒŽ eé«ÃêåJÜ×»MŠÖѽ†q1éq4`g^”ºüâ.VÞ—R%®[>6‹ó C´ÈìÂwõ7èè@–C¶ˆº üŠŽŽ¡#¿tݨΨM#n¾?ÐñTxúÅ“¢-чÅù ÏZ®è(§LŽµì2?Ðq´lžµ¢5‘PW:‡ZLäS‡s :ôñ7è(ßqj:Z8Ú:ê†!ˆW¹=Ü/è(äU^SÒ :Ãͬ†ØÉŽß‘T¼ÕUð²mºüŽŽg ZìHªaÈJr{½²£Nêžl‹®›ìxºûé¿ùè„Gì„6JŽµ Ηy®-|‰$º®a|ˆ øAT"¢ªú"F*Æåhí·›oý¦ÐQø‡ÞÁ ¶M"U2
- 7…éÉEPŸÊôfR1@a#øS4 ¹­Û¨¯¡Ó…öm5êÒ`7Û¢€*•éÇõ%jµKäo£ª¼&%5i*˜©µ¨vj;ë;hQõ³·ã”,„¤«|(vCñÿ~ÙW3Gh^ñMMé ¾¦õ&
-XË&ëW|#(Üäj-ÙEJìˆ?^Ÿ³³$ëá®èÿ³"úfŸSðòÔ³²¯~ˆŠÕ/{žnW:wã‚S«3G´Åeå…%’ßñÝ4²€ªXÍsJÁ“(ò½":2[iko$ß
-ôõ%:ê¼P|üŒD¤ú¤àl8ã3Oˆ.&`wÔEô…ðx១ղ1Û>nD”ÅÜØ‹Ææ„ä©%”£V½cà´%¡…Ù.ãÞhóóK~ÕºRF [êð§/órG’:Áž6J³$~ê¬Á6¾$ÆÑRôÕmC¥Q1A%±n PQÐôX
-`­¨îÖÌÍåZjâDŒC†Ð´$¦±ú™°SCì}ÐK*ëKô/»o x<ß PxÚºŒ§5å}I”Jž$õdzƒZ„:la×ò×åoH<¾Àç…-æŽpø"Y©üž'ë˜K²Ï»\kÆzÒQzghŽ>lH¾åéß3Ýòö¹éçP9}1Îû¸E°dl½~Ž¾HL@8Í¬î— ;ÐØÚLõZ{EàâÂvÆghÍ^È‘&¸©§b㽑÷sG Â2Idèf³k¨˜Åž0k²/“y‚2L5û›'eœ¡²AÒeÑGÇP _/s„Æ{³Zþ9ÃëñSzØ»åÿì_˜"õRî–„StÉúûHàϵ´Ì7už&çes{’SëÑLÁ¢m±­ÑèŠUòg“¡H’ƒœ •˜kóœP’âËáí)lXä9ÍŠ°Î =¹O¤ZömX¼2UWÑЭŽ€!Û°[`Ct‰•u™UÞÈ•+ù[±»½D/e6B­Šeÿr.Ã<×vW¯\ÚIߎ•¿Ä°CÞŸú¹1ß&m»†lDÕ ¤?–ˆ±Jß±%ÛìûÔh¿sXnÛ£”Ñ¥ Ãß!¨”C¦‡˜ì†ñš+„êïý®ñ¼°.ëoýþÒy_aÙe)«a±Ú]åí1N  †dÒlÛæ f9XÕêþR¯ÜU.µo|=&¼0>:
-Cû2alFx0ó(Þ=*²1¬ˆfò7çD%FÕÝRÀFaü ôU:½l¡º¼m–/‚I9…Ùå‡èÂÒ¿ð…Žz.þYfÛdfÐraÅ©a r €<ŠYÈ+Ðx?wF³'@• Õ¼$ Õ íÑÀT(l¶ül•»œL´AX¹jt°ƒdD)óVÚÌK:‹‘ó!!8ÌØHUÜ–9¯xˆKŠîÎ!füo—µügõP m*p²è L¬kRa
-w$‡1B4Þ—Hst" ëùŒ ,Å zæµC,´½×nÂì¸4.Zúò]ºÜ0„®[š¡ÀêSãÙ¹àÚ8‘槄‡bþŒëUÈ*àñVœy†ðª1‚Sû¸q¤2iå§EO~Ƹ?—ŸÚ^DQšp½nÌøʨSD’'Ÿœ³DC"r§N{­Ùcµ’ÆŒ²Ñ¶´1ÎÐcÌͲFÔ:ŒßÊE#’0¥
-óJ>«h´MŒQGõ8mAýì0­œ,@ô.M·#”Ø'†»tCófk²L50¤x#Ú<]øâjÛ¦pb耥4ƒ#¦Å×]öÊ%"eJ0äÃõ¦ç1¦KFØ6Â
-$­ör½=ÏTýœò×ÁK
-ä…üåeŽ$GŽDÑð-·†}ÇJ¥:' Vûþó~
-HAâŠa
-ŒÕBið,ðâÊ.¯ÄJE—BCݲà?t ´ÅY@¿/'{/{ÑY-Êx³@(Ý(è<A±u9`™8÷ÓÅÎ
-&d¡Â³Dû.‡û|¸TÙ¯âö×íY&/µ <(¶ ]ýH2,CXšÈ !¯D­éb™±žÑ›¤Å-·˜äìÏBFõ0¢´m>3O$§5Ï.Ôñp¸«“¼x1yóÜ~§À?QéÇ•¹@R¨ QÍDÐxI49·²€pQѱs½ÐX
-X'®-ØÄŸÕ>™.“
-)-.Ek¼W\£(²£íõ2Û)$Ϙ£ÜöÒ­W~+˜)5‹Ô‹±Å߬"Ëûä‡öAΪ”úvÑæ}ÆuÌ,ƒ—¯Š^Ÿ bÆ\ÕžP*?ÁÁû÷J~ÅI5žé)ÎŒðs!8ò›¦º+iè©;3SÔ0ôruÍ>\d"ÔRã:ásá
-.~”ÈHI´¤YñâD…š–Ü| Âï«éqQ-)„}9a5áe+øqÝÆ*$Zäù»L”ÁÅ|!ó;|Àj|Èê£â¬y
-/5ðöy¡ù†Uì]qìHÏNXÝŠ,*‘ò@‹LÇ»E ¹.½Wͱ}QôúLV£rÃ@®¢;Vi¢¾Å(èŠ ²$õvQ¦UòcL w]nµÏ^fÚ§hƒ•id"þå|ëŸPø[ØñY\/ ­ávˆŸ´Ä‰ANaÇ_Šà›Ìú“:_ÃŽÓܺlÀ)ìø‡Ü<bWúP–=ìx¦Î¥±¯»ÃT d-¤ØNa'<
-†¯±ãÞŽ;Gšªsnál;þAijØS}^ãŽÇs M\> ëë¡ÿw(åÅ°\±žÂ£‡„Áçrâ»Òk,¬ƒÌ{´ÃŽÃÌÉpÝNaÇ=
-Sf<±, x;î‘•ó8©y;ëì{Ô¹×XIg¯¹ÃP«Í[ÙNÀÉ òšb¥ER÷¤ã0`WR8-¯«÷SÐ1F¾Sè*øæXB>pyHìoéÍ Ãw 
-I¢¤ç7/)ØI68¸C/-ÙIgà•t@äå!j;%àÚµùý”t6n·øï+9§:y¾êCÔøvÃòs±ö€€Ëb4 %èZäAX4·¸ß
-ÂlWĬ˜³.º¡!€ldwìcE÷"kæ ô°µd[ÌÃÛEp,à/AÁ‡7¯»}¾³¦# #§É V€0Xò U¤ôÓ,2‚ E¹sFÂûð/ŠHy—ãªØîúSER:ä€ÆpŒ×7Š¤JT`Ÿ’€J
-¹b{&Ax £eçG kÂ^dÞbq/IÕã\#°0£ˆldž‚Ñ\Sí—Á¢BzÏÍòBKuºœ% ™F½‚v¯ß æ5—õ µ=)~;ö@´á§§H¾ŠÛÞÿ×gý0gtêì/QÔûZT;Å"À¨(“¯~ö—)€ÀZÙµ®øŽébnÅ(™/®hžÌs8¦`Ë‚v›÷Y¾½ñ \¼œÖ(aAJ†hJš7b±„¬C^4XmÐÅÓÜ£Îtnº„‚ŒuÇâx?" ipJõ¡äŸ߬¢ æåÂ'·gýsžqÆEoÝXÀ^©[ÑÅ(W+‰æâVX-7ûóP$æ ØRtæÚ?>á™À·òçŒI8
-C™%Bçgíùq“|ñ{6}V§“-=„qû³Õ‘]XÆðÕ;MÚö°Ã±<hQbdé*·9ÛƒRÂWgÁæK\t§„Øò¬À}bŒøl>/a g1éîoV±¢8í)²7}ŠUÈhˆ{*ó2VP64ŽN4– $?Ÿ‡áåD÷ÐÊe30¸ú ï­7ô\õyá•4EW)+mœÃo¾oyQOUè{º5ùV2çy–uÎmäûÓÜ‘c½ÔÀ½9Œ÷%/£úñÎÎh½ÜX/}="¨7㼟‡¢ˆ¹T‡dÍÿºJF!J¹j4Ï “\¡Ê²\ŒŠ;¸ãóÁyj>â²eõá¹(±ëss`]u¬ÆÚl«oÌ}·ú@ŒMêâ Tís@3 K«NO“y#›šâá2!ßÈ©}>úM=BZ†”d »
-gx£¿¸Bm²wSÜ%£Eš<Ç$#ÐCqjÄ‚[Ñm쟇"z‰ß Ý—0^
-ïΠPñ6+пê˜gœ»We¹›Rì²p7v‚¿~í°àç‚c^+¼„Œ« >"pãœ@BtdMÀf˱A”»ªo˜°Î Ù’ÛRþ¨O¼&U'lhJoêMœŠíØz QwÑ0o®£ó$Ä)È-9Ì :A›P¡ã.m‹³„‡ªøÁ$þeí“îfU ¡›³®úz3§ëö\‡™¢E­šüsÖ´Â~ÆâRÛaú9jí¨©¥Øh•V/èUÙù
-䎫'r,<ñÄÉ>ü+ø¡"1Ì4º]’W"nñûÌ[‰ǹ`ù}|³Š¬œt%BF€¬úøv×Å’õ™-4Šð«¤ÊèɆe4à˜µïK)rmÎ1™šg‰ÇZ¢ õɱ°é¶e/ãy1Ì÷25)yT"
-)±cÄf%×Ћf´ÞÊ!QdJ‚JWAôÁ‹-"â‘ÈHkœ"ê¸Cfϵq%À¨+­Æ¹7ü“íó jyæ­Èº>%±ÖÀ¹¿]t[ÀÏ7–ô—ÝÍ]9+Fqë`¡HŸ
-©~€ž¯uv°…¸˜CÝk¾sèe¹b¢Æ•4¨bøK
-3Ùþé²ßl‚{„€Ðøà§7VŽr^hë¹rc8XQ!%5ßGž @çPò¡§ÉW m9u<¹ !K3C Y>‹Icï«3Ç^ô6íQÄt&‡ÏŸ®£l:rÚñ®b>ßi“:ú÷iêþ÷íï~E\³ËÀ¨Êxv2maE8±Ñýò÷¢Ý…ª¢°LÒí¼Ìÿµ%ïç‰ïw4¾YbZd7Ce֠׊.º¶=Ä›´8K"fã‡Cž^O¨?0û¨ÀãÂP]¬žÇnEjq!²Á
-V“”’ѨßC󇆩8<ÉÐaíK®r$h*Co‚c˜M³ ]?cÕ\׆ èûtíç…íº1­ëƒU‘äì#\ZêÆn[B–`S¨”¢¼Ù>ýu¦² Ä\6 ºjíjkÈ:˜ Bo˜7~8ÆÃË%öĈ,y{
-$‡ÑóhŠÃMYt߇I­`,¤UþLKSÈ$24”Ûþ³²©ZÓö}î ?öû'6<×Åcr,F‚k‡©9\ŠÐPVö?Ó™µ.,eVÆÑç:Ÿp+&ìÐ4Ú÷zp í\Ê£Ûɉi)NU~Ãà¹i^³Áu YE~ ʹ°ÃBšâæ)¾o·¹‡½ ¾-Ú¡‘vH‡´=®sbÒ
-ÀAi» 5 ‡é Âßø®ª»£dP±Í/Á)vQ(ÇB3(0£Ï9¿&D… L±Óu·>žìÓXé¤uy‚nç§àW|›!cÑÜŸjˆG¥¶“p€c´ž.³•†ƒS~ÐpŠ Õ¼š/#b\ñý©+f+š²@LÔ«‚"b@¾ÌgTËcš©ájD
-2êë5þó—+é°Æ¨~2
-£0>1¯äÜgCè~*ÁxÙ»RV&­n{$ä…!cÑÇ'¤ÑJ”+®H~ ·~ž‚LÐç¥.\žÎAxš:ò9V]¥âÏ4±tNò>­CÌ ¢B€y›LUPÀ†w{€  …8žØ›¥7* -14d“jHçÒ¦ Ä–…
-{Ò95#pÑ“2“Ê“¹3]}«d1ñXzæ ¦–-ˆ’?§°Þh=ððµ¡r•±¯EÂq¤¨{PÐAõ#ëJÜÓ@ié9Ú¶F¢6Ì•ž}ªH]Âà×%3 Ö­d¦ ‡1„Çœîº_uJ¤Ÿ{ubîXqX2lE”É50‰x {ðH»jÕ/9I#]{Z>B¦,ÖP3¼`ê"?1@†D¿2œIAq.¸—SVd]ß&7ZG %$ùBHä# Á¬ñ®ß¤„–ƒItÙ½!@#2ZÃgj 7HãXÎë©êÅR §Ë œÇ5—ÎÀ"Â0.XŸÎ¡Û‘\Sù¤ßF¶‡°íŒ°”‘þ4[Y?áÎ|¿ÿa1¤Bl»ìcÐP­°Ò}w3Íà 4ÛJTËfLPÓ„’¦ØLÛK#¹1ƒÑ-Säè{ƒÄ2fßa‰¦®PéGÅ0DñůÓÅZ"ñxO&|Õ6h¶IÁ'°à®døPã{š Z¦˜+¶—îçTi¨ùíxŸÝüDø‡zšL*½Õ‡S` :K/‡wJ9 ]ÑNá Å“*¹qˆL‰ÁëüåÍPU˜‡Ö}›û0Ür&ý0iMÚòßãê×Lµ²dhýé—¯3|ƒ<“B™¡ö„AY›´Wç(œF'XŒæ»€à,ˆÒ—:ùG> ¬ògƒB×°gÑpÑ oL’úeÒ`DªHŠîeƒ´°²_y6¡¹„JbÇ¿ŽJ±¦ÂQù
-i–ÎÿmêÐ="aŽå
-Âyl˜w˜ïâà
-U!î—£XÕݪ.ªØ6ChT«õUãLaqª!×ó4§kH°$·äŸÅ”¸—D†n'阢a ÿ´¶õ;Da£a½ÿrþ)´ cpUÅ$Q^V¡’ö§:jX•öò‰8CQÑÛÏÁVM$d?Õ€*Ü&»D}Î Mˆ´…°šsÊqµ3“³˜¼¬¤• Ÿ™kc- )¦µ£§a‰—GTñë0u…ÿÏÿg¼Ì‘ã8‚(z‚¹lˆÚSA™tu†<ÐÔýõ~WV“˜Î††ÀäÔ–?ÿ²Ç
-Ë'¸ïKñpY)TÌó‘ˆ-©—Sl“·£W¸ª¦›µ­ûXR½û`(Ün>•Øpê$PGÈwë td³Ýö´?v†1.g âH¿’n«
-(}FG$®¦è|YPŸ‘©/²Ä»W‘rJ0íñ¦Dv »EkÆÎÏ5š`5 ‡ÌRyç¥îr²Õ*J¦ˆ#RiœxMhöhûæ²z 2+F9©Gð€Æ(ïGNd6“EÛlV¡k•ÿn²=ªõBP~'¨TpÃ2É_ø)ÅѸ²9²*–€kÞ¸ïñ¥%R•`§)LGa Mõ'F\Ë·Ôaí¥}—¢ÀJ…ì0«±j€)È/î¬
-øëìa³tãY3®ƒ—²u‚Ryeû<\(>‰6çƒ7êû”å$W0ªNÉõ„¬Q¶Ì+:J0,p=ö'6ÿ,”
->HT[ëT\–‘
-£ZE8RhÈéí…žûÅм’¤Ñ›ŸëTÊŒyê‹ð¯óS±§%
-@W¢±{3¤¨uû˜YÁH®Ì[4yIr˜˜™}Bû?^…æÌY® Ä5PØÖAÇ9›ý¼)â÷ë÷Y¸Æ÷U„<Â=¤…˜_.zR¢ïîv¯‰G‘Ò¢8“›¢8ˆ¹3L‹
-pÀ{AûÝ*š у¬¢(˜ðǶ+ Ìä»P7ó£
- Ic嶮þ\äb0a\Òч9æËEÞ\\¶{±èÓ¬º.ú¾æž—ãc@§û¶3„S´‹!Šf›h7‰-/曢(°£4»HÓ×pN¹n¬«€,À»YýX[ñn(ÕPìò×AÒ©ÙiU5&gc@ÙÂÞ­2Ó_¢ FGîWÑ©Y4¼*D°AÖ}Æ‚ôˆsª}-¾‡€£Œ¹ c«[¢³<!‹$¾=œ"·§ÌH|‚ßÇxµHÛ‘IŠnÊä¯Æ_Š86©’›7ÝÕ:A÷æDNõ™ƒ~*‚e‘d¾c T Û€2°ãn<°¦ž3X³€mL-áßæAAê0Ó•Åh£Š,—ˆ{æ˜6‡ÏEîû$òW²°eÞNÏs‘àÃo­Ì€w»êˆjwvŠ>^™_áµË6â9lëäÜŸ7EŸ³NãôV*!LbêLÛl6¹ÀˆVÂ0ÀpÏðòr Ìï3Šr×üõ]„e =2¢pÇZGé6såÞ·õe_­‹fÎU‚I,2%5T§äØŠðEÝ>üyŽØ„{ô`ü‰ci šzÈ£¤s©ªh:,  xõã”XÇo§è™Ñ?ÎfÏ2îùj8/W÷Œëå Ýu>7ââ¢/ýô̸Š8J×RÙv‚ ø|ˆ¯  ñ¹(Ïȃ8‘૪\èP}@ÖÖ÷V_CY¨êa><°TCc•V®í!j&3•—"8R&ð¨e‰K€ÁPû„ nçU`#žæe-/¹lœœ ã°šœTÜG—sG jØч6—ìñ$}=íž}SËPŽ¨ÜÒ<÷a[aºÉ—yò-Š€ÀQMí<ͯ°ðœqîà¥ï¤ú#üqºâ z]ˆ(¬>ëó±ƒ)O¯ÕŽg"1|[E—A|©ˆIàE¡Ý¡à»‘´+ëIçƒó\ ¡@Ù”&È1v#ôŒÁ…¾š×çëÆ箺ëÀ¨ø›À<³bÕxiÅÆlƒó9ƒhlG2` B]kÛU@$@»2ç;×déßbhÖ29ôeۤɇÀÝ(ÁlÅenôlƒæϽÏדµÜ]o°:Íïš™@< ¿B?%-ÙqŠ+ì´D ßVÉŒnì‘áJ9ö\%¼/øe(̓&¤kÀ-ðíJ´!º!ëy¦‚mäâPLYëÀ%$¦°–VBa& y ¢3ë±HƒWñcaY™ƒ…çÝ*™E©Õ.ÿ,]ÌUÓ£Ã÷ºwêï"¬•Šÿ6ÕÆâ
-H‰Œ—Án¤¹ „Ÿ`ÞÁç¶!J”H“ã\ó‹ädóþùø‹jÄ¿Õ³ëvµD‘ÅbñOéþZLj—Q´¿É°ñp¥Io>õíÏ RZ1>¬ÖtAÌdŠÏøxAzmRK™êÓÞþþqÆ”ÂÿÔVê©vnfV}3º¶:z™}.HÓQµiq¾üR«Çn]ëÛÏÿŽËì¡fJxÝF6ä1môA™o;"çYáv
-½E§ÔóáZáº\\ Hë\¥Ý)Ö‚P¥!œ2l ×Ã3‹M«sÈùœFayÄœµ28X„ö1Â!¯39Aü¡ š¬—ß0G¶óˆQGÊÅ¿ :uÅý¶ïa>õé‘îwPö|…ò}¸CW|¼ÅÇ /½¦p}ˆ1Xø©ïÉYzÌhÆ‚ˆ%D®Ém³Œ57ædh!­è}¶U É4ÄmqPkÕ¯žã*+Ä“Æw`y]gèMÖï-^È(Œ\
-/ ) é% æ
-‡ÐâÞ’¥DOc—&X~†±¼{ô«= ŸùR§’˜œ¦Ð†„ÇÕz@ÄH†äåjü·¯˜Oü[¡Ð¼ŠŽ¹%¤ sbóΫòÉZ{ 1©Éb‰ß:C‚Nz¦®‚GÌhòÈX,®s04Ì1ºM÷Ⱦ 6y8™a’M_§œäw‡s*
-ûÂÓ[{Meì •5dZ^½ª’?æ;õ—þ";ÁSL®ö âÊñ¤òLÙ1–]=@<~T
-Y]zBøUœÂ…Ðû ÐhA¥Š ÷¾.+¾wèÐ]ó0êZõ3[Z3¿P~HÔæ`4aJuŽµñy:u ø–FÛÑß¾ D„nöÐíì c­ŠÎ}´ [p–ç{uø^q,ÉæFKÙJŠ©¼ß@¼æ ˆŠ
-¢áéLª¼Û—t#$tHÏì0Ù¹¡¨#™<ظswËWE¿O
-`<¨´Ò
-´ZjW»úx™®Èã¶Ì‚ÅE 5Ç"ŤÝË„´’â$õŠOÃ$n’Bþy̓šÊöj3’Ÿd×pz“í+!üm ãc÷Ík(jhø‚D¥ðŽ€ø¾ŠÕ ¥ãQ[eþ\óUJòo2~ÉXÍIŽÂð`z1ºÍÕðÅHÄóª;(<1m¿§ËÅc|„̺ áoŒ]±è2å÷.âçŽÍáy&ð“Z„‰éŽË 0uwùmÖ}õwí:ú"¤19´Ù«St0ÿè{ù™$û·[+ƒ»¶çâÉQm´õy;~J‘žt’¡a{&øH]/¥!û\¿3ÌpéŠæÉÌéP(°0ŸgBpl t4z~Y¦„˜e¸fµd˜æ9±Ñ2ÃYOòUQ ëb{†|²
-?³}Ã>$T9€Þ7#[$Ò˜ô¢tÑBB6Éž†˜¥Á£®ÌuèU·HuæúzõIø.þYÌOâ µl±@µT
-ã‡2¤òS<Ä·f,‘ãXæÊ~ø'HRôæ’¾žs°cl\Åz¯/ ŸlÝÏËý 4:F%‚È”K“X„h‘uJüñDizŒÇÐ÷· ‚wb™Ð}A؆8d"rÝ‚A¥ë妺áŒ
-'Rˆp篛l0t¸Žo-kx¢ê:Æ©f o-!PMŸað„>šl<l3v€$•aQp©„ŒŸÎ±°jd½DûÍc4@Kû|Ó¯
-P´Çˆù Çä
-ù† –A×@=v³p©,ƒáBt9ˆ
-ÿÊÇH¾óòþãpWøirK×Y[ƒ´`EÁ$öíîÿ×—¯—³ãðPÌ1£7Ü Jñó9”a†Å¡˜3!@‹6“b áGtòÌ€ÃØ1¾[峜ìSÆ$k#1ŽüÁø´·#µ
-™BÑc!ò3¢1äc[‚JíyÏïHt/‹î埘Ò4õpÜÇ »ÂÕ–Z;†÷í‚0È=¬¯í§Ýö(‚¢—7E†rñƒþ%̘g‚¸™Îœ–ªÉÒËš(“Ø5Ôc‘AÇk*ͧˆbl²#ê¢eíõ
-µ|‡*
-W8X‚©t˜4bÇ"­=ô; £f"ìèv6êo@ FnCF–oF½&µi¬A»càñ,Ÿ[5É÷ÓbÙ`$CèlïqøRŽÓNq¯êñ˜Ï̸‚q¦OA¦ôįx“Çš¦˄O¯MÓèƒíTµ`]éž¿¨ŒËa¸œjj7ã­Á— =u ƒ’º "øó}Õï[+ºðÒˆýëÇÿù‘?BHc‘ó½ªÜg€ÚDt
-í&áPKyNNºîÌÜ„°?ñ ÞS2yÁ^–9fÎ/“ì:rˆ®À{¨èÛ±§žJûŸþl^ée"]:Õ¸¬‚™$ˆ&ŠJÜ"ÖÕb.•U°51§(dì½63º>†/áB¥ç¾õ¬ËÑQýp•$N¦éÀØ’§aràëáÞÛÖ…œ;SâM¦”ªþÁzטë‚Hfä~¨i1¯Å×’=Ë÷I¹ç¼Û½Ì;j¼7]Áç´ÆðµÁNÉÛ þüd_^2Í 1ÂØá!ç¼/¯H2‹‚;ÏŠu*áŸŠÏ Òí%Ót0²X˜åY2^&¾”Ü¢|"“rºd€çßÓî$ÆÂQߘâ˜Çü•ìé«3÷»NOˆ!d|$õ—»¿œ#0ÃCnþ]HD]àhÿÓ›:&{VÀÈñŠ˜V7!{'õH6#“¯&Ëìì’„­g¢ànJ$LÿáÐ×ߊÞÿé!Ce怆“ØÈŒ
-³Ñ÷‡,:ËÖcÞ%L?šÂ‰m½CÙF° ûóp!À^'[«Åõíî:†ø€E|>{í0å]篠pO‰³ÁÜ:½dþ»ç˜
-3Ú^—ÛÚ)…`CdiçSßÍ©*›Ù
-Ô³9ü´W؈4`Å+v:Qø9aÝ)#›„7L3Ê(Êç1{ƒµºf£µî•Ì[ú
-—ŽÁs‹NÁ$Z¨X}²(âNT$×´?…÷
-â.ÉJ'ˆUZ¾‰–†ìÑ’Ösl°4w=Ÿú; 7Z m›\vø¹4ñkõT2»e¾Ñêç*¾¯ÎÆ Ÿž ÷ß+h¤ùæ?ßPa“µg í©™EIù<ÿœü!ìÀ˜©¥“ØôéÙÈn«'GŒÃ÷ä=ö
-ð…`W K‘™.´Þœ’ý%ZÊ®Aæ‡Èîçdæ‚رq‡È*‡úû¾YÂ#£Mu;Ù C)­
-¯G¥¹<©¶ö@d†í+4Šå²}NíÌM.(Í*áÝ8Pà”
-c˜ñ6z÷ã%ÀÖÈHÀS<sŠîñÌ)º¦J :ݦ<DÞ¤Õƨ¤³a·$§/-¾œÂ%ÅÖ?V ç;×Luí¯›Í®crιÛ¹Ë4Þ“®Øs:ã øÚ^§äÎþk]þ gKà¶Dšc†!/œÝŠîáŒ8 # {ÔìÓTø稑OA†Ï£ìVò!œÉÇÂŒÍ\WâÞS\-6ߟκ?SÑZL'ÿ6ñ£Ãâcr„=½Š¬ ˜ A‡|–°‡œù×ñ#×|FIÓòwVãÌê–Ïœ¢{>»ÝóW&AßÖjôóOÇóö¬†Cq×|Ærb™.úùŒƒ™R‰5ó“Õ*½|vÅ…sN˜i‘K Çù\(ÅS 5'=%4¡#«iP…›Ð´3mÊ64knBóvï–ÐþsA—ç ýÝSÌÇ1ùZ5‚é£Ð#OL¨àŒ6’lù6}ŽùXi«BÜÍÿß{暉1P¦øj!*‹µbÙEX↠‰­§GàÅï€Ê¾.Q¦»€äFð'{ s˜±F‡'ÖÃäš)a:EŸ»ˆ»±ŠPø~µ% 7†é\ß!43s§ì¾£/âB=©&ïd=™þûêV1€ig(‘ K½Û› Zûµ 7„Þçè ¢8£-¡bŠŸsNØxt ãå"o$‰ðôU¡€È2âZÐå
-thÌûMM.[+í‡Ã5|Äð;Ó0Q‚ËÆbWˆàx*¬ ‰Ñõ+À¹ĉæìY:Eoäöé‰$1 tS®y¬DMº)'ø~
-ëáA”(HT'Fí‡@IjòÑ!™0Þ¤­Q‘×pÜÃ^÷]>nÃôdH `Púr䟣m1‰Í®G†Ð™e€6B›&>òš·•Ô–R¿š¥:IdZÜ„tÛ94hv³äø·u—зWó²¿N2ÔÆŒÂ/]þgC` ±´¶W‚Å¿ÊW2d{1b°Çà ð!Ó\ç!N^3|4¯¨Õ c7r¼Áû8CIÃSöj/;p;&òF’žºÁ:4q›œV ‚‰Md–»¢ôæ fë/„òg€@8ÝK¡rQì¬øÀ»p功ھ È$ä#äQOIb[»´æ”dlii„ÎnÞŠúŽÇg˜ã¬æ¥.æ6EÅô¶ý-ŒB-ÈMÚ ‰ @~R´wo! iÛ…,@£<#¿èÏ¥¶ù¦@ö
--êë3y”ÌOMÿ%—¿—¨æd…ne/Æ~í"öÁb'A|7€Ÿ«ˆ+bƒè®‘¤DÊÁ20­>É40ë´g:)¤«ŒÓ/sÎ1åƒÝÀãÔÎ8¸JøFQð {ï°‚QBLñû—S$ipøƒeÖdÍÙþjõÇE[\‹ø®è†eR¤Z%™<סî1N r,„Íéï(­da·Æº(ðR@L[+gÿ®<É(à |hÞTj 0é·ÁUBì9¸:%0Zà™l:óéV‚WìfôÉ+Ï¡“'£S‚'CIe­ŸO1¬N×±kÕh*ÁýäúR‘ÊŸ€ÍD>m•$Ûøv.ŒYÅr7˜ÒþýË)r‡n>0F E?-º®àçOötzä•w!‹ˆ-¢Õœtôå׌L`èèP_4%ƒ8æÙ¸£íy°D°8Kžw ^Ž´lùx`eDv*ØLF‚""ÆYÚº¸ žÀð÷â25Å8' '.—)Ì1ùˆ_=aî{ÅüPâG±5þl§ ©˜1ÿ¦UA~¡¯èÁ.ÁN* ÙTZ5OŽ±‹LúÊŸ^Ñ[^ù|(B²Øø×½>ÆR@‡¶‚pF£jæ Vv +äVK:Ë>£§ ëy7säiûq<¹3%ž$c7K
-ÿuPÎ9×q;·¹ÂÆ{Ô}Nkî¾ö÷^ñ6¦??X­U8käÈØÐâ÷åIT"Ç 6Ý*¢É|¦?p¸´\q §9z{nŽ1Êìëm\€'×U{ðÝ·¹{‚ Ä"ªnJ®‚+,u¶©‡‡Û$«.×QŸ^e,#3&Õ£]2ô]ð¶9VS¸5ļŒcñÑ
-©SŒvL+'Ø™±IPþ¨/öZ„jBX~JÌzs_Ôý)ê€^¡­Ÿ\ã‚pf -4ÝÂÑð@ˆè#ÏHGÙq.ˆa»^uze ð©ú•¹œ†¹
-}>(1Ô“…DŽE–»s¶‚6€[ˆ¨Î§sð
-Q*†äª¼v)Nƒ@Q“–7¡¿»èµt¨ Á³µý&þù¼?ì¥k6g¥â·a8ù®WömÞ ("1SváÚïˆ!ma}æô+ȸ¼íÊ¥e5%^·aÛ;êÒš#¸)†6ÍË&"%2»c^iÞ…Xجé+ÅwY£nÖã=­Jž$·ñ­ÖL`%Àass?²F™‡Ñ¶í`~'³ÂV21
-²é‹ÖY´l¯ïäBåøˆÿ`Èhë!›ë â|‚ÄóN|H8Gƒ£ˆhkÚ’Ç`€°[1JUÉ šC:Î"1d— ÿz
-WòúùOA ùÀ+ ô‹òÛ@Øù$Í£@ ÂpÙ gíŸÄõùáh+V˜iè“©-Ûi×å>QøâEÊp·Ü’v~»Àª¸5ºJ»ƒ¿ba¶pXÕíYE–ØY&.Ž“k)6¯•vÀ-üeý
-¦õÚTD™¹£ýV›‚HQ9ź¾}+†ƒõ77;¦•${Äzö§F}ÝpYس!r£ ø®´>RºÙ¯»«aiÊ…‡îäK†–]5ˆÂ ›)ëîzylj÷h(Æ/¹þX3Ä…àÚ!C|g/Ó¿צjšâ‚÷JŠª‰²5›‹Fõa©× qœÀRåS¡ù+7½‘*o.Yc”fÛ­â·I#ò~óÀÑa¶ð;á2^Å?³ON¤ äBgZ¹µüDOL S$ݶ÷stÄMÒÍý6¤/ÕB1à 8&VÄ~X$Ö£óö©
--ó7eÄ~§4®'%VÚ9eÎD¹ðíÅYˆ*)niÈ}[Ÿ¢¼n­Ón_ò¨±ª1]<Ú’èâ{ ,ûÄjÉÚ¿ŽlÛ˜ˆ±üÛ' )¸šêžƒŽ@Cï3ú‚ŠsÈ0¡oÓƒWY®æ+»[ü G°¶cȇ\\¤PvŽ¼
-W¥çf8eDøq-Y=ûä"EÇ«4ˆȂD©êÜCS¥˜Ð[Škº øúLKfÜQ$“Û$«ì^=ÍŸêÛeûpš}[†‹©ÕÁH˾1D›™ÉÞ7©³ÞY³_½¾J™I´^­•Ÿ9ý@|_Ó§F~íèt‡€Òض^ádªmÕX6-®ÒÁ¼­ÃÍìdF‚I_6e>§Ó›¬z<0Þª¯ã~Ëžœ;ˆLJÕai~¬OŸG/+Ý®§‹¿¾S¹•?þD”þñïüç5—ùc²1— j: Æï-i³ƒÝК®.Cpipä%ð=v#¦ wù Ô4‰p,W¯yÅ"‰è DfãOóè뤹^1h?À¬kC§–åfÁu3À²›J‚¨jh€®mn'ã73õ‘c§=¥f < ‚«JhÜê·`Uð“öxŒ/`ÊQLYA {È>˜ ¾AÖ§*“W”¦Jëç NäA4óÛ(·’ÉàjxeAÄ^Šn\È!ìQc£šxðãÇ”E,úOûX[GçQý>™¤P1‰xÍf­àeÌ$¹(Æ1 «O@rO°t ÿN+ª.dˆ±¬x Å ËšwuðÞ°&ÚŸÎðŒ‘¥i •â3†Ì»¿J4еÍÓ§‰Âå@vœˆ´¸R E ÍŠÃ\ iÖøò@(!È=íâH‹´•òi˜yWi…õSb8€^ßY° Ö›@n“?gývZ
-òK´v …/
-SŽÛ,kCP‡\”dͼ‚Yò€#Î+‚btáZ fÜ€õÅiOÙäÊR|Êœ ¢L0˜û^æò—Í…ìö£^#ý~Ž\WFykð+¿á8ÙŒaµ#ƒoHGŠÙS2Úþ§üÁüzù°|‡:S;¦2è|LŒíåcÖ‡N®¶î@=:ÃÖû—0NÈ$5L×ÇèÔóÌô(í`Bû6è´Ì·¥k™•ø°¼2T9Èæ ç¢Ø§Èb²w¾Ð¸¥€ƒÁaåÙ !ÉLB]°P"ŽÀÖÇl‚×TÈ­ÙO!ðåV$’Öœ36%l¦˜€¢¼1?0êvM*´[”oT5áÑl+j-H“¿Æu˜Bõ_ƒ²EÉTÙM9€\¸<M†“'ï‚^±æ1›¿^*›fíÞ ´ I”ˆÏ÷+³€qÅÌ™Ðfi<é0$5¬T–Þ> ªQ3MÌ4®VÆ
-EüCßHæ-rBÕׯËÉ¿ZüÎ ‘XÜ|±v«Vy>w͆°±×C:éOÇMùò„Ä)†B^Þ<ä‰ã–¶o%þ%ˬÆT@{;çFºÍЛ–æ„>F‰Óö3w{ð /%5öÎ0xç@¤-òCeû/^²ä,»½”<Ý 2ÃjÖ©èó¥è>ÌÖ¹1p¬äY*_`Ó_^Éý2&f×?ô ëê4awÃlr&_)
-Mò5Ц“¡„åÇ ¼òc½ƒÖ`e¢¬ìRÃ~²}¬NŽ>‰œ& ’3Ÿ%ü9DÜÚ;,Fä=D•Ö_ÎéR3\ݸ2/J3àE¥·ì%ðCFyÕ¶ :Ê|EûB`“KÁ¶µ
-a)ýZxÁŠßÎ+<QðL°•ÈÏ…íZÿUÂN³½\èË…PõíVX©¡ÛjÙG]çH¸ø¥Œ»Jä†2¬;ga
-‹ø׿‘E¸~f}Éè`µšÉÍ"Ø— ‚Ë‹ ñEg¨I+FÐPlÆ7QWhäH¸ÉwXþç°|}‰Œ¢mļ‹Xa
-||Kž¿}uù2ÓÑø—xz*JÊr‰$J^%pI’‡CwÕ’)xlH‰E«r³Ž¾ bUcÄ7»Å†¯J¸”àÍì+FÕþT/M
-©Ç\yæ#ŸR$…Á ÀâãíDœy3ßZÞåLf¶ó½»ñÒ“£"Y¾ Šâš²],[­ 0%î«"ɚ¤wØ’ü›ÛK }„~L‹ß¯/Ý‹DâÒÏ>‡'>|Èœ‘píob1Ù'lr?¸²M­ªY쳟ÃM…5UùNµ¨u²7ð3¹ÂøßU2àÜ>
-
-–NE³DÞ?Â:ßFÑÉ€f•Ð6 bÊoF<è©8’,k{ôóá£ã 2.²˜h
-‘b®o%˜$ OΘ˜ý¥GŽ†œ¤mŒÉÏÁG†>5Ê¡œAL$¹U2Št
-æÁǤ²\bøWXé%Á-×}Ò8 ul
-ØÀØÍ¿ƒñA– ­aóôW#6!\Öppæìj³€Uˆ•Ú ]Œêç¯süÓÕ,˜ƒC×`Ü1FÎ Ú:ªÓc]8Ÿ\Ñ¥úž*
-ši‚rSNÚ—•‚øÊ=™ 58êrHµ‚{*”ÊŠu/Œ<EgDSlÇáã‘h HZ¡rOD£´œÍyJbJù!Ž»“|‰ASA]‘8]É çÑ$'v?à߉Tœ ¬²VÜ€¯çáII9/6¬Eaóþ,ÐÈÔ>×&Ù\ëÙ(¢ÒAq ©–dŒr·'¿á E=ž;n6a‚¢Vˆ4+O ò¡Gt™ý‘ŸŽ+tÈC{:]ûõ“|±.‰2@}ÐI~Ï-9JCÅغY«L i¦9,»{ß@kCª¡›u/ Ì•UMEÌ ;£3¤ÏÒ·ì4¼úàf\ Íåò5m¢dÌ\AÇ×wŠ¦êæ¯CÉx¥Ë#-HUAj¬õC~ÿ:ƒ´HF=0^o.9›1MÛº~½¼>8»@ˆvÍ:s[Ö^ŠÉ!ÈÐ °ÖÆ‚XWAØ‚¶)Ñè2ç3]N!‰à剸¥¸“N Öõ™"~ÃðÜ…¨hN¦…”ú ÂÐÀ£Àµ¶Oº:²È q1­ïÔ9¯Ò¸¸¹µŠ7+åGUž„ÿf‰âˆü(%99m{“ž~(ümñÚ4Q?“¯Žø_“üÅåy©d«‡uô¡¯òV0ÛÎèNÇwóüe¶@ 2˜Ñ–Ç‘^;îvÌ>óTkËn?–eŃòczÏ|Q.Ä~åútTÑ‘ŽâGWrLâfr¯ïã
- ¸>Xl~†„E*ÓtÓhŸ ˆ ­ƒ4¬!X/Q]C µ™G@0S–e‹óº13Ð祗ç¿X’õ(%— êëÂÒ§ò®ŸÄ@Y¢Ô呺zŘ ÁÕ.ý®üîN«©˜sV¬n²ÄÂÁ¨ür¦§ èóôÍÖ½@×ܧ²z¨EɽìÜ”`b(ÃÆBðn~
-¹Úö˜D5,?†»üËÞArÙW'aÈââhý¤ˆJ`¥ÔwŽVY…§|ì节ˆw¢k×p9£œ@'ÒÐm†…OjNŒhñÑ2Uë 6WŽx÷ü;…Q3“peAhR0d¼z‰„0¦×ïùR0C1å¨z¬–3¥Eå*(@<€^ k7oÓÎ属,_9â{ø |ò® ÒˆªÈ\¾§’1ïÕÃeTªÌÙ¢¯R$÷, †BÓ(@IÇ—+ä@þ™4IJ¿
-©ÏöQ0}–XœS"]dý7ŠÛåøüùÿùÏziY,ïDñƒÏ,ˆ’‡l› 
-Éo{VEÐ<1¯ú¶.aªžì“+ž±"t‡ ¹º¥º¥‘j” !ôëœ@_ÅuSÒ_x:T^ø!÷ ãRÆ=€½M›%­_BÐy•™ç7ŸÔJìd§þ™y+ü^ÞfÿÒô€"Wp½: O${ñ82…Ó„MÄE©¾† #3z”l!` \kÒ|;)FƒÊТèU¼N‰!¢—™†#t§J1Æ,íAÕÕ׃Àò ¬S‰qU·‚¦(v:$á×à%öاi ¶s£pûä"ÄØõ!ÀÈRb0Ë¤æ ¢÷
-ÚKi/ 7ŽÌ!5ön°vlI; ü$>™pÅt¢>}FŽ&ó(&Õ/”/#þ"ùef¿!ZöâA¿,÷Äöo®­ÚŠÜÖf… Å&#†å)Fˆµ’(J]ïƒ~‡;èÐo@ä(Â`vû1¨P‹ŽýÌÚã¾A—ã. ×O6ÔYã22¼‹œ²í7Ä/_ Thµ|kºa70abhõ,jeĬ—~ ¦Eôë‰ÔØŽ‹d ’¨-•H+$ ÀHlrÙvAªþ-RlÛ~š¦8ØÉY³ƒû~]^qÌq´xZx(»ËºoÖ¸-<  gÀ´ ¯^ˆ+µ†ÙŽ›
-„mÏÄÃ~¯¶ƒ2m™å§ï°•­O-Ç×x5q\`^Óy㻪ÅvÆ\n+¯Q<šH· |Ýx~!,ZçE–ž6þ:µ¼N/‚þÁÞåǠ˾~²¥s™ÿùŸ EŽ2³x±y®%ç2=$Û‘|Ÿ ·Ð4oHõ
-=?Mà_ù7#öÈÏ;QÞãaÏ|æÅ«h$yÇOĉòKtHçØ*Š`ní²¢lLAª¹!ì)ae[”áPY,ŒØ{æ“:ÏX×ôtæ*¬ð¶ý”‚rÉ°d_‹@d úü6‘ß {| …"lâù;8zÆÞ[ÞÅ!Œ•"µ›‘¹V—¨V‡àH
-YÙý3l€ªÓ††˜+±‚3¬!ÒW.Öx(»º † ¥„IÖw ‹8ä$²*¯††Ú]‚û`ºˆ‚Á!Aqã´–÷NtP2£Íå «UŒóî;1T¥¦m(û¨MÞÑ›™¹!Ím- gvº€>@¨æè¤ÕB7;Ý@©2*°.¦qó%‹ß¡[sj$—b6WŒïGÜúÏ€BQÓò&ïÒûœ-?ÄÝÿÏx¹$É‘ã@ôºƒNü“ëšeßBÛÒý·óœs¤ ¢'­7ê*ƒþá?É¥½_%KÞÖà Np_ÃÚå™@-Õ)±O]âs [ìÑ?çà ÝfèQ=¡ûF¹…•“ã~÷a£7•Ci “7Ž#Må²ùÆ4˜==”œ&”Šƒ‡\xwŠ¾ŠîÓ<Ð^Eˆ ÃHÕ®ÌÆð,žþ›ŠÑŽjî~yÆ?eìx~›bâº&#_,8ÿÞ^­)êt½æè>½H¿±xp¶ý­
-ZY›UŒ²|ý¡€ß’T°·¤¶…œ£!žN5Gœr(êÒ]p·Ê"Öê//³Ûhõb­¬–É 9NŽÇ{u+áÝ5MbXò€N5ˆIar_ç¨ùS_¿?aË›È(lÓuÙYæqŠYÑß«Vš,䧈DV€w„XôןƗ¾Ä¦Ï¿Yz$€?Îr4¾ =(.òÁdÆÕ&ú…Õ°OïDlÀ™Õëà
-$'Sóô7ŠÒ Üy~8G;ƒÑÆÕ…²欴†çfCi¹#e9¯bËJ1ûS-òÎÉX&Ö, Ë‘yW°OÝvæTëcõ*ü^@ݲ{?o;|+²…\Ñð(¼¬"´‰X"æmÃh‡6à'0ÌFð@”êÆj%N¶H²“3óÝe¹zúÒŠ½ ²€©˜3Ný§Ç“§irzš¯ÀKF?˜8a'V巵šÐÀp,o n¦ô´qü‡­²ï W$# ÓmˆA=ÉÀ¥µÀ¿†+…àâ*)ˆÙ%§Ê€7W@(@°o;Ô b
-¸£~L&xS áŠ$ÇñÍX ¡(¡Ø‡°S Õ÷âKÞÿ“ί©° æ,¸ |;h6ž„Ä_ž
-KQ‚š°UÚ–}âžÜs˜µÉM4ÚA·bsY»©Ø žÆYìO#u½©ý<ÿ.Aci÷mþÖ¢&îB>²–4"Rëu¦ÝÄ‘¸6¯­s.äLy9"ÞÀ$Én<<ćY¢ÅDaÂë¬açª0ÛSžiN/ç¨(|\DÚíô%–ÄhÇ+º¹JªÀàô±}A¦Xì‹Ö®’‘$ƒ8Ë”œ’_ ê’Ã}û¸û90³r§µ9ÆjPD‰?jÛÈ4‘&¤’¤s_?¼"¯?ã%ÀѸÑòqÑa>×çªl--H^Ñ÷'Û3mìÏÿ¨T©‚(…y ц%9HÏ€ô÷C‘
-éÅ^Žv!›ÜagD@ÐdüÞ§ƒô¸*Gö¼Š²ú ĹkXMš€ä¶'ïã0åé}\œç€.HE¨%÷}Ú[âc•T.cƒQ>{É@d¦m”2%X‚—u.ÒBÆÉrÁbŸ®šŽ_Ý¡ÇÀ£èÄq?½µbVÄ4¼ëüõÉ‚þ³Œh ˜ý¨[íE¤I|„ÌÜãôJ%Ȳ­k³’܈­½*@\Ê}|Ð+Jl7p¡»ÝMQ#ú5žMˆ
-^JTAŠ7‰+nŽ
-ýðŠ¼×ÙRg‹øÜÌOXJ,øBEI>!M ú©T ¯·–rÅÖ‹sƒßã:ïؾP½’_‹™ôïe§fÅ"±Ô\‘ŒgM¾Øš(ÐöZV‰òÖVךÌe±M û}ýðŠ¼ö.­i6>ž?.ºó÷'ì=ÝÕ̦»Ú:ÛÂ\6MaÉ
-‚ ¥+‹èNìJhÕ)š%9€y°cÁóܱDc³klùW|…h¡3$†’Xð$IÖŠ¬5 ê²5xÞª}çç}ÃHaøG#•
-¶¾¡ 4aFÔJ$hW¢ÍÅ(س‘«ƒ³&8îP؈£EF$§u<OßéÂ…p¢Ž!kõ©„ÓÂΪį^Q]ª+’òÊ1^Ñ‹Q~Ö
-ÎìOϵ“7ÄêŸä%†RÃö`ë”û0@ ŒÅ±‡ö)š 
-´‡pÿÏ°QÓžz žÉÃÞŸKŸñ2#í TŠb’7îGÌ&ú°«5¬´”Ͼ_ŠP6ŽÑ>ÍXvz½3Çw‹”yÞ&ÕúùP„ºLöcXÉt4‘v£Q­úÚÞMšðµ§´ÈÜ«r
-mX ÿà‘?É´Y¦òNkáqÅì
-ŸRv´ïC¾µ:%¦KüÜÁê÷s€"5Ðw1nƒ¸\÷ËÖÅ%š,EÖ 
-ëÉ7kb½óvQ<¾ Þ¢WÚÇ@àªB†uJ¬ÇZæ ¼×Ãô*QÄCÚ±2}Má¡ï
-™ >²n_*±Ð?iJJçK%°:ŠvÓHL·ãÛ¼-Ï}Ù 4ÎP"I&É-¹`ôë‡Wä¡=,6­eù•¢û:ŸûFÑ…üåºýw3Lù,ä†Í#ÁèX Ù÷¾Æ)jH5f—:—‘¢„¾bØ Æ~4.ËkñÜÒw‰´»`Qr°u¯€9qMäªïцOv ƒzÍFÔEFC!Mâœ:i¤,*"`—AefØÈXwnÆUYr‹rƒoy;Ø¢‰FQzo¦üaGËJ)T$.¦ÒV¸®=QL¤v´H€"›Ó@¯±"QW;_A¶b„™cAJBAò­B|Ÿ À–b—¬dà,á°(w»KÅéäï·ä±¾D ä ÅY-S!Bø?¾³¢U$ñD!%Ò?é¡$¯´ÅæÀŸ¯/]‹ð¼h¥åÂô¦€›õrllÂüFò*š»›'½d'ùs¨eh
-YΧ}ôšA‚÷%ñ–%ZL2ŠeŸÃÝ Ó‡ëP)!M)ùÉé¼¢‚«ìmŒSQ–òäs\F^´Rw úUŠìÂ<¯L€_Ê­µó©Æ:ËL¦pèòjÐ"Ϙû&,ÃáEë1¿Ÿ5Ž‡Š7/üe‹‹8ÐE§èçCQR¾˜“h¯.
-“/^6\=sA„©tS«7Ï·ƒ³!Ý`wsz:§ðnùeèÁJ@§ ¬øpX‚GéÉØÊÀ¹çKy%Õº ½›W.kö¦¤ƒ ´5Z´IÊVc%ûCIæòŠy4~¼ÖáZ$r$D`„‹Ã§»`)o¼—œëá+àól·¡ öàav_Îd¥ž³½è±À8 tœ"®„ªl­ªŒ§†ó©žãT€ÍÌ&Íâ™Xø·¡/ J\8 €À™ÍŽY♄“E´Ú*Împ<Ø5²†)Ál´¸Käÿ§¨š*@hQÃÒ‡ùZ¼!¨½S ,$‚
-âY¼ŠóÐ}“1mBI¥óŽúPµõ KŠO=Ÿºá?H
-›ðMeÖÌQqSŒ#I²|
-”œRÌ ‰3iˆ<lB9yOí3­T£{ø…Ù=ïv0Áíz‘Ì•§sŒ¤)v™L¿i2h+…}^¡øØ£x`,YÌK b@S1¯žC¦‚ç7&“¤&¡.nñKh#6Eý£U_¶RÂÐXì|¯ùyjÀfÚ4£H;!>®— 話`šw·&ËBz9kǸñ%ôʉ±O¾Ämßå2=žd ¸ÔÖ?¤‡Y¾•Ø—¦((¹¸ç,Eä
-~•êp,“Ñ7ûß3%ë­µàK¢©ß½,èÌòž)!€&Ã8Î,¯ç”O¥WƧùø™òÆ^¨,ÈŽ:J¥º¡’
-(±f\Ñ•NÉ=T:E×PIIFp¦)ŸÄx •Eµ?…J^¾Ð4+?TÒ¿YeJ›©Õ=TVhæ‘NŸhz •BÅ Cï©R;EžÈ˸g7UVmAvì{šNªÔÞM 绩R[Õ$ÓºåpS¥WrK•÷¢›™Ömˆ*…aŒÒ¼T©wó_]¹í)TR³@©2ñ¸…J­«œ¡z? ²T¢æ7s‹O©P4A/7ÿ˜"§gËš*!ý(Û‹«ù!TJ^°AºžÝPYØ1Þ£ÜvlÀ5T:%÷PYô@ͪ•ú”*UÄ~ÈÃg?TRÑÁø‡ÉüPY’#t@ÜRå½Ã×P ±)m š=¨wI•Î,ï©¢Í •ǵÞÏÁ…ó
-žo©R«Ë]{Ù@o±r™CRgCõÏu®›àXÌK¬üW«ªXùÛ?ÂÇþüñÛÿ~€ÚR€¼ÜP—OHR ð‰Uüë¡H6EÖ¡Ç]2K–1l‹|TBºc"#,*TI“œË¬»¤I .ilIRM‚žø|´&Ù`ïÉQû˜Îƒì}¨öŒBÇd7VÅLV®>U§Ä>„_áИdwÝs1ð-æ6Ç’üË…
-àî‚x J䜉 6Ù”MãÉs®z$Çúj{+ H<]ÎZ¡€½¿:Çqœrø¸2îÁplÙID*¸¼ß.Üh-*^sÉ3”I2 ’‘Ñ?ŒšMi¤©Æ9æð‹®ábîÊ&mB½@ü!éçÛ
-´¢{98XLÕHÿ
-H‰Œ—Ar%7DOà;èó$@X{–}‹Ž˜•úþÛy(¢¾[ªª™v„Ö”E@"‘Ðfãã_mÙËZo¡­5ïíãï¿ÚjúÒ¥ÝB´@úZ2§úp‹>?~lP“‹?Œµn@Ÿ ê/_}Eï]ít@¦1ÚsEA†ëê:EÆFŒ!Mº¸ÚøP0õ9íãç¾Èzëc,ñ Š¡M¦DÞ´Ñ­Gס±C—˜ ™Íe=@ºËÝ}ÄyÕdæîª}ôauŽ{5 É7„—ÑÔégØfühDÒªÓ–®ÃZ[çU£)?úŒX´ºó¤Æ“µ¢š„)Ö£µ^i±D×è³¢Z$‹CcÎÄßýç/ùø÷®i>ª‡<èx5›Ñ¦ð7Ñ_jsXWµ° o2–?%Ü
-óÓµUŠ¸/|.Š±FAœp5HKÅïlšÀ½¿¾zkÆ›xA¿¿ª¿ž:ŸÙ,H§ «Íó´âï.ë ~q…œB÷ÅÓ9°X0Õ‚4íÞx@X´ ɞЮáÞ*pŸ2B æ¨«Ú+´ ”"‰ÅW/…÷9 Š“-²¬Î™™§Ø0ö¢°®õIŽG;¯º€$9¶x¡ísböF;­µéAÿÅÙÇRîÛQ5ÎÐ5cŽj®™ja# ô›«)—O«¦Ÿ:ˆ)ª-æ N’ä)5 “kÒüPsmZÐç¶Úš~xR§/  lš1)˜Kluº€+ ˆ5 ÂXÑ”/z6î~d¢‘ú¤máÁ† ;†”èFL£ž´>m4O"“ú5ˆ½:†üg­Õ£n:JÒ›Õ9Cé;ã¦U(â+ÔÌHÕa¡¦Ncõ§s¾iF¾&õ˜b+ò£!ÃG燊Š˜áÍJ£=óUÃòn´Teì%O„l½¨¹*ÅpgÑ‹üv>@è™ðå³ïšCÒÌ:j
-ǯ˜ÏÌ÷j^¸Îƒ0i8Øø
-½ß?ê
-Y$í§]Ïɳ;݆d–ê´³nxçåƒ/£  šÊ2˜Ï½‰X3áté>'å.ÒI®Ú/xWš
-ÄáG§–žuÚ ä¸J_ØZ4V;{ñzÎщ)ùç~yÇÔ²,øšFG9qOU#Üo›#7 ìüœ#¢ø.Ú !Á9êµz½Ç`³Ü[y ŒýE½Ì
-‚ÇæÏ8Ó™]éÚû?¡³‡x™ÓáñM¨ü'*.µÖñtü{gÆï²|ãׯպžs©ùõ5îÜEuáà5;7tÿžãÈ—Zýü“¶É“Ýa˜rÚ@ñÐçæ¼_ ñt- ÛŒý. a³%—5z©rÕS@×FdáÁD¢Ý8Ï3Ix:ÍåèœÎ]5ïø(«z0¿qòl§ÞñÊw•ÿî¸Áà qž Ý¥§ ÅÜÌOQüþ,%>‘Ù—÷)$Ôk2Ò½{î:$ÅYzÍÝî,¨Ì rSù¹£­ÜŽVAb¨~4ÿ±Ã9KScÔ¼¼€¾ÔýóÄ/˜åÖÓÙÜ—±[PªÙ¥“ÄÓ)´v¯îŠÕqÉTjÔðÁ9Àäiò[#C[Míç¾r?¸˜ƒÝî'À5Ê$î}Ë¥œwþçŠë9É-gÙ”EYÏ×0à(8ѵ ÑT•Œ¼f€ÓçCðÌíÉh¹b|»Wä#ÒO·ã»_ÈÊHK{&‡ÿgp2Ÿ÷-å˜Mr‡v
-êÿ5gùPÜê‹_¯*—2ÜZŸ9àÚÙÃXØæyú“7ÃZÅÊ„ŽÉ£º<wO˜¿ÓHAIPî:± t> ¦à™I@UÞaóÔÌ¿¹–Wbé}ÇQ¬2õa‰ôæ2r3à׶ÝóÜn =sÇý¹¯bF"Ç@7Ÿ±x+¬Ç–p¡sÓ‘aïúF`W©­
-Çe;ŽÞÞ˜HÂ.GªÞEàÏÄEºÄo@„³²v,ç]‰"0<´WòÃ)}kT‡2Äh.‘ô¹ï"Ð(–#° bMÍ}‰1±Ï¡¬]ØQ{««XUÅ°!¬Ÿu
-Éä0+ÅIЯ­qp‚t&ÛLô\crEI A­*;¬”+é¤ÏD&Œ$íwÛéIäÿÙ[G ÎXiÎ(2©³Rò!µ‡ÔeÞbhvv§¼T
-¡\hºÔ@I%¦$Ë6¥ëó±4»Î;)!ZœÕH›ÍØjÙÁXZecJ·bObËAŽ2Ma âêÂ:Äz‚’õ»s<.š¯t3ø9鳕èŠarû8 "=Ô¶!sXdmÂSu‚O¢^íõôŸ+—>¢ŠÝæ °§°÷{pøŽÄ2:cîs öynQ§\RL’ËŸHOA&ˆ—éébU8•Yý¼(÷²¾òŸ¸3aÁ“!Äk^³¼q®2’õ‚Û ÊA¦wú. (ÜÈ#½Rý‰Ò´2MƒˆacG2Îì¥q%-ŠÆ:`°fµã½Å
-›ã{õòU ÿÁP9FÖ[p^Êâô§_ÑÁˆ´¯I€wÃ|õUõþËx™$‡qAðþƒ^ À¾œ©£žBýÿê, {(Î`_Dº‰ÁÒ]•Õ…³‰'[…viB›¼ãÓC¡Ï6“#H1G?R£éqUiì/ M+’‚€:*Ò!IÄ­O MŒ
-Îåb
-?Ã×áý1Xµú§à‘¬y-‚Íñ9ïIEÒƈSÅ·u”†(Ïv\{Tw Ê4à&
-LÈ#âB6oQö‘ue^Àz¶Œ.e*Ô³¡'ƒ7¶+ÆC¡i ®Î—q4Ö…–\cw«ÉKÌFø2ì¡Cý¬-Y:È~ØÜ‘QD"Ýu Ó€¬•{ò¼ô±¯0
-´Çxùò×—˜OÜšÜá¤Kv˜áÓ^&U ™©´L@’!r
-rý¥Dü2pâ¦ÿ0sÁ64feÄCѧAŒ8ì%9„ ‘
-KØGÛë°h°%4zxqñ½}ðÐfª€~6\MbQ¤híêÕ$a’‚w£´,Ç®Je6 ›Ü˜_Û—cë|)%A
-öŒ–” Û|²è4襲’.¼—01û˜E>l`â‚Q ?k>_jî¯ùèt6ŒF£H•o• åš_ )BŠ‹ä_Ο@™}t‹WŠ#X(f¾“BQÅ$„Ój=!’æ.ñâ‘_Ž5.Úå4´Pg¢ú°Ý0r`ÔË)MÙÐbdVXk%<Zm ô³'¸áÉ÷
-WÙ³è0ú±o« ù*dÊ8ø*ÄCZ•µ³é9òÙ0n<ØJ4–$<Nÿ@È-š} s”kßë0M :—›¿¿Bõõ–Ç’¬ŒÆ7gW‰[}–¢<û%½i0ÆŒî¯7L® †«•æñ‰«k!;8âþ@òæ¶À'Ñ¢eH¾›gÑßÆúùÜ÷·Ð”Ÿ™qÈ=àfž#þØ?/5¬‰ÜÑÛ¦Q"Î6á¾a$È¿ª˜Óܼ±´
-²­‚Íq×1—dOÂùh˜ ŠŸ4.p•Ç^‡ÐZ‘™Ïpñu¬W­>âäA»C;Ü©@D`Œ¾ñ?0ˆ ˆQ‹;U}À_Œ9î §Hèï]"ù£7xöVýK%6%:鹟i„®Â¹ö:²X%7«*\7ǹcÞ%x>Ú[öU¸Ð RMþ!± ßžÝö‹46¯•løž¶@+ÜÊ`)ì„KùX‚>b6€ñ®Ë{a ò Â“Ý ¶•èRƒÉÖJ™døÛJð6–eélâ—«hG=¯Ë£÷°>Fu­@r‘,]Æ^\æÌEWzœˆ„òÿdRí lÞyt’H;¤—Uš:zJf½bêÃLpo6£ "é¡Ú‡`t†
-
-‚ç\£ µÿÒ÷š¼´ælKtm3°.T³q3·Ðh8Ⱑ㟠ù¥šîñãl2}`æÒFZ Ó‘*˜’ §jåëLl>A78‚})Óø\`Àâ¬#’.br]Ã:TlÃL%„öNµã«ÈK‰ö%AR—sÅa‚ÏpôÂwWóø €)»^R
-GÕk˜¹ =¼‚Ä¡èÓŠRÊj¿l7 (§Á‡øS;6lÚå“Va(µNŸ»¦‹*ËòwKp\F,Šý冟©Áã±QctÔJþ?äTÊñ1o%Ö7 ËJ`ÚÛ:„Yô%ÚVQðÌÏL–ùõ“ÿð;Æ
-ʬ{ºånõ¼=êÌŒV?=çÿxq5Gðæ Pòä€V?H˜õFÁE€kÒñйõ‚îÑ”PjËY­*:–ÄøhLƒ%è‘=ꊢ¾£kÜ{ÉÉFLŽ@JxJÛë4%¥…në@
-V¢Èz,Áý¸Q¬Ä`”?þ9éŽ`WP”O}¾ÝQ[N‰7f¢­E(’ú¾ÛÑy1Z¹¨¿W "[ƒ^ô± ¿ê3j’2O*>}dÆg?ùéÝï\¯.Ä…'Êý÷@ ±zﬕÃk‘8‹u;È
-õ¡¦Ü'*’`
-Ð1ÿ|½Ò½-9s …±×Aî95ŒÖÆÇW
-v¶5F›š¸<~bhCóAýËx™$Ç‘ì@ôºOPó°Ö_ò½%ï¿ýÏ3)U&RÆ–µ$–P1Áá 5
-¥Lª­ÓÉœ@:±®ãÅ@›Ö.®riÊ3’Áó郊X†ØaÝâu]Gà]¿æYònDD„øTrFâ)¬$ÀfÜÜÁçàÜ3؈ûßÄÿ()2«
-„?fy8‹r. –Uy¾„ƒ^ yø/Ó„%@“îupʃ9
- `>”àÐ& ®0¹·º‘ïø‘°ˆÙüðOÃÔG)°]’æÜ
-4`2#’æÞêö8ÈÜ©…²­s}a BìcÖ€ØC£ÞJ6"® ¿¯sÍõ,öîwr0|}g’2 ˜9é¡äm¢ÎÁCÝ úÊ D1.±uØh³:ê
-Sßj,?.òzÆvD•‰–Íþ¯¢÷3á}€>‚;s<
->-ý)¸:Eomÿr‹
-b¢©@-k3¸|¢¶ä§¾³dPL̼¾•DÀ]#b±lRy)V–Í1
-÷•0šVc3 qž2ƒÅ¯æ²C9àz1i z'ÏÞŠÙcˆñš3ù%´1²DcÁæáxtdQI×=¦Sô女Ö3Ÿ5£ .B¤|‡i´óèÁ›ÕUNg‘
-Ë'ÑÜÚùVbÀaf™ø¬úë
-$?JHÏÎix¯É7bäÉRÖáN¨%*<Æ*cyRhfÙi•4BØ©K§)Áü¢d°·$ ggÆ#¹%¡ù¼“¬€¢k¡Ž¼ N§(â$!LÀ’ ¤vÒÜóIÛ @Û±O
-¨í=°N,Ä=˜nÀ‰¢PÌ93±'ÙÝ,¦*Õ0{ `ô‡hp <×tù­¨!P†æHƒ4ѬithåêóV14¹K³Ï¹J¦r/ÿ£žCu€"£¢ëýPyfƒ«Ã;Æ
-bÆ¿q÷ÜÜ8§V
-…+ úÙ)ú²"$)GyÏ„9¹íi­ÚË2¡ùúÖ:ŠÚ!ÿRç½ ÿ1X8ƒWfújá™^¹è[C4
-瓤}MÏèzn3 ß(ü±'Ðbø*A–ŠyJ‘'"ò
-ŽöM
-šPYezzQy‘wÐÔíª9ÁojXb"À¶F¬UÏ•"h\!œJ<ËØ*€>„K&®ì)>‚.Uÿma’XÂ;´&̕䨓d…d0-²˜a+„~àïùó¹5¿|7< $ƒtDl)N„pÍó¢$Âë³R<Ó—&óM6ˆÅ´€æÞç1".rƒ^÷e¸=Õæq~õ' i@Q6È1å@-ÚÖ ršà¢HĆÄ*%¯„®O³œŠÅíä­fœ›®i9ê¤Ü¿æÏO—Œ/Y{’
-Fnƒ¡U†¤}‹zFF>³œrlž£bMeêÖI®™yDa0ãw«¹´páˆ,i,+vH¢!¥ggÍûSîä‹uI2Vöªh¡á-HØ ìܵe©Ô&­m-­ÉÚBS­žç!ÚÌZhëq¢
-«I´i»ú wTª`i`êë“ÜÑœ> Ô*éáúË:!TYûŒèå<E™µÛ™$¥¡ëÅŇžGÕY>«—*¹D=¤lÈ8–¡"MýýRŽKúh=doü9?'³À˜cªý9(ÁgÀ=ê°†U‚Ër¦Uª¾±°¶ÈZ¶¾`ËØyÄ
-õçzÿøÔgÇÿÚp‰^-r[­)áŒZ¨L%Å‹±ÖÎ)•’áFŽîL# )d£ GãÖ稟räß­1Þ…öe¦u5 ;ឯ##Û梄¯»·š! n¯>ÂŽ¼Î°‚”£ˆÚ€wÄ­ ³ ysì= õÝÜ©ôr;kIõaQiþàÕgÝÞd(Cä«L©HÐ1£ð‡Ò†QpÌ1ÕËÙì´(=ˆïõçÔ?ÕŽjd©ôjSMhu-U["ßàÈ~6_Çõ ×æ1‚ÚF"ö³Ñ@ д""™Å’/OK•t“B[/¾$»Åí:fô·FÖÙW³CÐH)®W##ø*(’ûÒ —ärôIÞ }òÛm×ÊÓ']‹fÙ
-²åá‰i•œ.!õÌZ6a2ãJ8+PØ÷=Iá„ÐÓ9 ­/^çWª
-Ba{4†øÇ7+(³yh/Á•Àñ9|õÕ‘} ¯_2à“ÏŦ]HÜUžƒnwBÃ=7¤5ëM®€sÀ"=l,ìE³B‘ÒL
-*5Ò†š„õ10Í.FŸ-ÂCê•Ò
-8h½˜!ÀÅ™*(:ÔÈë~zâá…õò½Æ]ÖÂBmh¥,U±×‡#Ë·UÐ[µÎsŽšŸ·9zÇzÕуgvŒv¿çعÔê×WÆæç{sÊý…êaGì.ç}<¹†VA-lo}Þ ÄÇè»í½ôPöQ—‚Z ¸ºÄ01xÍÞœº>RZZÍÞŒÊû=wƒôØ_z8ĘpŸðpÏ*ÃbˆĽœ/âà =¤”åÞA …¤4Ð0„©÷A
-mW`€i׶٣˜æ`šØÿú €“ie3iôFèãSükø)#FhîÂ7Q‚àN­4l“âÓàïÙw"x.òf®Í ÐUÓz½\Äçè÷P.#±m`tpˆß#ì¤z\«FsXÛdK +Fh/*º]î\º {ðñ¹y‰¡kûä»üs!ŠË¡Ùç2 i’øø³0v…üP›~9¦&°à7¶~.òÚÓÖÁ ~µæ“ï¯÷¯$T ÈÔQ´ìÕŸ»aEº œé»YJRÇÐ+øÛ_1â€fâ¡fäF.Üua㲌檻b+…¢ìc
-y5ù4êM)¼³‰K£o0Ù£Î[éhiÉ)Yƒ@¤"hã*³ÿ~Rb‰ Õ§79*ñí=YóÛ¿¿yEžóI7ayk¢ÙËEOÖgŽôSatøð7Eßxo(¶êâ,VñlÇe&“e«(Ên
-Ó> ƒy!5ŸÝÁæŠ —ãÑbœ²¶pÊ4¥I¤…$-Χ>FÏОó™ß#PÎñ¯0ÿûö×o Xj%ôËά¿P¨•bùˆw¬ŠÐ3ÄlŠ…Y’]êRÉ&¹ï¶Jö ¿WöAx!pù¬hB¤Ãê.':[Þº€L‰¶CY’Ùà(ù|[E šˆX0R^Ñ*!eæ‘v»M–ïÃè Ã»„Æàó'hûQQæ{u
-¢‡X±(¸áŸ‡£„
--…<sÙ ¤¼hßg¶•3™’ÉgVƒQ2 Ñ© ”IÂ
-üqjû&EÂé14gä«mƒx™¸WaÂévqé˜W§$˜'*Þn¤ë*Sú‹;*c—`*Ú^+•$5çK <ñDâ«}
-m¥¥4]E‡ ði÷­ˆ"6Àúv™‡ŠË•Tí)e‚’,ƒ8îýÍ)rçÕœ"JýÕ"}Éi°0ü7(dÇÑ/=cXQÎä€ÆqQ{=gáàæ9ç±Ëy]:tÁÄÄçæ%ú@²…¢/ŽGB:8£9m­ˆ.
-2Éœ¸Ùì> ÙÂÈ r*ô eë_Ä—%œâœ!zøS‹q}‚¥ÓÁ>’¸ ¸h dnAíÐòvç»ìK,ù0Wa.’ŸZ\væ¿?ò¨(ètÂTfëáÓãZ`DLj,º¥Á»òá‚"óØÄ+?VÉL$*Uòw8Œ”IÓAfòèbѾ!ÃvhI çpÃÐåéÇ—7àf?=Áø p‰"[oŽë3¶ýVãynMÊ_€¢òj‘¾Æi©"CÙ+ê2B§²Ó»?E¦œŸ‚Oãmý:j$ÇJ"Ї˜Qã¯ÞBÖµÆi!¶‰ä3{ùÒãï’­QDù+ÎúÒãï>”’
-zRÞçà“xúõ65|©t¤š¨à–\Ðùí§ÈÅyúPR¤t¦/y»wûÜ‹>øÀ]«kÑâ–•ÎBÂv÷®PÞlþ{û¹‹°ÌOÌ÷½¢UB0*ce›·FU4\œ—Ú.Œ<„9Ô7á3X™\‚Õo’í8P–ìP>t€û”Xìc"ìϨäuý¼¤,<á0‚šm¤
-í N¹Éý¯’ÉÖ²Ü ë|Ü÷«#]ÖpÕ'ÑÈêÒÁ£Q„œ±?«„Ô qÂ÷Ãv,hÕKhÈg³°š5…ðåÜ"IO,ü[jcÏKcÝf,ÄäýØEMæ öèËk]‹VÉrå<+dó1“]L»D F‹ªœÃö4¬WLGÖŸñÂãè”—¬LƒŸ1߲ωšJ¦}
-ÍSIY›èVŒ†0bO x¾t)A.HC ;gèÉ<ô8}2-²›´õönŒ ~€'y~H·}*ÇM~|ÀÃ` JˆÜUø 5<b< ð8~§ ÜÅek-ù ÎŸV$Ýð‡É‰})KiZŠ†²É3„ÖM™8
-FŸ‡ÿ¥!2Å©³ Ó£àý|Ü ]/Ù3<’Æ£q¡§c‚6‚•`U¬„>ÈGeÃWGC’\¥£•é7¶OuZÊA̲²—ÇBiRš¼Ï0ÓPòyTD?RÁ Ân {œ2\ŸX,ØÏ>u+‚ô„&~Ríx¦AºSv¼ü*Aºpãlé<;ŒÍ€}EÙ󽢌©üf‹ƒ0!j,¶ß€Ê&¡‚èuÛj0nœÜ¢ö®¤Q¦¬^‰ËN×¢ïEèÇCQA‚k%Â)iíØ ŽD™ÎÁS‘·aà÷‚R°]’DÀ. D n_¶jœþ°æPoËÍK
-e,b`-N ´VÌôª b“‘ȺIæÆÉ¡D§Ä>ĦÁ§ˆÉ¢÷œOÆP ÍáMÊ~V‚¤Tø—Y lÅOØú~-̓©7,x×ÀЖ¨ð.žÌ`qH ©…,¿¤Jé }5EêKfÅ|íØ¢E×q^á®wií
-žl‰1Ðà)óÇ´ØfI±ÉÍvP,«Ö[6º*·£ïHŠ‹àØay÷á”è–¡Œ†¤¨ß—S4ãƒàþ­DI€?ÍÎi’ >†J˜€~º”kÉa[Ü…nöÃïçÐ-…žCÊVÒ{`
-øG™öUR€9?Lë W‹]Öõˆšf‡Õ¾ªu8ôØ#olýIZØ ™Éx¨¨ƒ±ÎÆÇ{=<ñQ#•fÁd; õ7´&!ØT/ý¨„DZXTY#u„ùE«§µ…·¡
--†#wMÓ¦5‘_=×¹]cÉßø7wZñMÈ0Û¨áÜ™ûçCQ‡ª˜F›qÏ´¬‹|\:v¿b<ƒeØ%Œ )Ç=,úßþÀÄ3Çß?AטIû±ÈÕæèe@ºƒƒ b[î[ïëCí•[ân}ñ™Šž‹+ ý4ÇZ­’&SóxôÁ×"ÊÊÁ_!„øzªÑÑwªÜ7æãApnϲ0¤žZ«÷ðk‰µø³Î9×)è6éÆK¯páLS´Ý–ÅÐÖr>õ‰
-mª<y›ö¯­.€cN›Âæˆ^‰LVõšµýÆß¹Óú¢éä"Y¶KcX«›"”úÓ«‘îhÎìf2(}ʇŒáÓKÅ&DÞoü ‰Á'ñ‘¿nž”7ÃÅÈ`3„ƒ‰Y«ùÆ $vŸR›.ŒÈöœë37‰<“¾7
-¹áD¢RHŽ˜øh²Ç©‡yÌÕ­¨¿ŠL ›Äkó6WEÄÙHDËkîD¶>âF’_y.¢‡ð8?œ pvûÅc&²èz?LýÞ!Ö‹Á¿LÂÍ T»¤œY¦ °(Z?h來&›€zÀ… ‡q齬aéMY~iU:´Oi*!dʼnؽ,Nö©ÛB â òïIå¡Díƒ"¸ ÷ûï ‹õ›èœ"LÁz(VðZ³ˆaâ
-‡!þŠ
-ir—;ÃU×Ý@¬+¿À²¥þTrGü_pü›èô_!JÏãÉf9E×E,/rJ2IkïWÖ¨»å¥ÐF¬áã‰Ê+᪠oë³ ½#WõèSTæw¤š›Sas_ã§y–§c"‚Iˆ€èØ^Æ
-‡Âçüž„7)ë˜
-¬J"è b"NŸê ‹%sNª]4v¹aæ1O~|ãšb6ƒ-Nµ$óëÁù²u½âC˜3"è“Èy L3§×zV´R,gTK•Ü…©Dk,„¶•ñÞ1ö{z"A°Á4ÅU4@ ÎbU<Çñ&cɤe-Cdœé”iq]IW
-óâÎÜaÑM˜§µ¶úÇp.
-
-o@$ˆ¸·=5\2«›Q×~føº‰; ž;i„k~aZ!'ò˜ìºl÷H‚Ì¡y?Ô«.3v]4yA ’Tªæ¥W!Ø׉]ÛµÇñÁh`ÎcËþÓøPm:~fnEc¬eÈ(hƒšÑñtarbù|ì}˜%ä ·§E8ÏʧÅ&=ÁXÕ¾;E¸ö‡W)ψé8„ü}¶=zã31Ý}ß QÍ+~¦ÐÃØ šÑî¥>ÍhEb¨ ¬3jjxä¡óËYGº!5µõé0ïCvÚ†N
-G³Y:!˜QêST™8™¹_Í*ûN?£,½3æVæÏè×µLKʽAñxk¼× P؆¸06|³Û™L˜¤‡ˆ«[q£È;óŸá€~>€:ÅA=e1âê!@1EåpêûDÜú„P§>Ahœ€s\¯¼ ~Rù§-ü+÷Ø5ËØf¤ˆ¦›¥ÃGEâ*ï×ëydÊÞÑFšd-£˜©²U·Tÿ,ù¯¬3íp¹AUÉ ÝDN…>÷ÕnÖ,á5AÛoTå-zåˆ Â ¦Fk§ãGMe†_C{ºZƒq´½U’q¨Rò´Û/Ñ
-´jýX$6­0ÃÙ ¦­avi³=<2IÌeàv–"Ü@n/NlˆÆ8iæ•Zuõ(„×®n$Òû!r™'¦Hn°R÷²-LKòÉåVw¤è0u¢â¡=-3ˆc•K—Ïr¡kgšr‚á„¥H)õL¨ø•Q)îÚ'Nj¦C0ð{"R¨+‰¨”µ:HÎÅ“œ‘þá.ˆOϽd¼ŸßÆx1CúEA¥–¸˜*îÆ/Õv«+åÉ×1Ý«‹K$^åÝÔ5 ì@;®æ“×ÿO­x, E-Ûˆ2d¤NÉP/«XJCüYýcêƘ龉Ç𘼠íæ öNЉ!&…à÷´ äY°½¶³ÎÅ‚óH_¢Ò‰®8 ¦Yý?·ê£cKªxFœ *8i^9®²Khð ¼ó¦
-îGŒUè Ñé@}¾Ð+ó}ìŠRDTt‘ãÚ'ÖI¤)Íâv-]$=<À®UµÐáþV‹¹äî¸ôñèOAfš²ºŽ/«¨¯ ö·‡QGá8XÑ[~_Êj¨G°Mò&æD}iêº t$Ö(Ϲ™ û¯•Bh«€¢<-L0p¬„x
-æarFÚä@H ÑaÎ2Uñ@ØÈܪAƒ¢IL_hOë(qÒta[â4Y[-Uó‚¤À£uMï>p¡ÈFö0Ê"÷+H¤V`•Êb>úµ@p1™)—Ó®LâÛêòÍóÈQY”ê&/™êæ­`µÑz‹wľ8A‹.,¹¹k\k0ɳ6}
-3—â¡–J½‹5nWÏØ`vh¨ ¿íÚ‡!òlŒL:ÓîÐAX•Z'‹ŸÐ}lõ> \Ut1õä„ÄŽÖñݨ‡ày ²Ú1ÆiwüÝŠ›¡=¤®V.®Ñõ÷A,Íe¶dóœŸÞt½zq=g
-
- Þ¨g§¿ÏÖW låaÌÔÉ‹·c6à>âC´ä—›À%û!Ðx´Ê‰øåhÎ-n·Æ6%v7s
-‡
-5|ˆ.6,—âSØ¥èÒ‚2ãÐ{ãiŽ^p4
-H‰Œ—AŽ\9DOPw¨ LB)Š\{–¾…Yyî¿Ç/*{œõÓ(4ІËQ’>ŒŽÏnKËÝûlás|þ«¯x4Ñðµfk¦‰
-ÿ¨Íòl¯ÏE«h×òzK>+¹¢^å["m4 £¢›¯ Û–÷¬N[1:ßñ]P^G)Lù,o²yÑ/:Ó
-õ*³ÀÈå&>ìzuX7ãMÖÏ1¯Eîùf5é×]~í›àQ¬¥}ù›¦·‡s×ÑŠ:cZ[ЫÄÊšNfÏ
-Á½É¦x·]ÂWÐmuo6]¾:¯þ.h9%Œ†1ê±KÈu|“2<­é èçÇ>úç¿?²Š—Þ'³F1€¿ºG̵V|þwƒlÌæâŒÝ€.ˆÂ²·t­Û"krÛT•ºJFfb°À¯ž
-yÞL¼%=Ã`C÷g¯œ>§°yÓ}óÕFLÔã]£þÞðp£=¹Á
-ڸȱ+g—q¡¾ iæG±wÝ¥¾ÐR&
-¾69n@T)Üí»ó¯ &擳ßÒ[ç±¾Ÿ­†´œ¶z÷^Ì0l’ùœ‰$3¿Ám{œ7ƒ!4çŒ_ÖJKX™XX9òAã¶ï/ð5lƒ+rNr—r¦ zAîIûƒGù†LèŸuOÙŸ„“‹ñ¼ieÁõÒ;aái ( I! ÿ•iÂõ<Iè,Ì»KÔŽFÎTu?sþD¡âŒéÐÊŸ7Šñ]2èÎÍþ~Ê‹ñªOŠì„ Æ{2%ô'G3CŠOþG…lC’~‹柇³¡ë]{NÑž‡@¼ˆ:ª^£g˘â&4mC„ñáȾ6$š¦ ó½T»Úä‰Ô‘¼?'¹e'o´*#ÝuY©Sš××ypwIóŸýyUºL¦±¾Ê+3"¢hJPÉ'üöôR â_Gö ]ëwÌ$û²`Ï¡†"˜$_OfªàÈù;únÂÐ3ÔÛ‘R½´‘.øÜ©·«×Ò”ÝK/¸œ`qVN‹£C™‚²c@cq?<q6,Sï Ù²Ãc/~ü„ü™1 t©GhoóRŠ “ZK»?Ǩ¡¤?gã^áŒô±x,2¨q3ÉW/^Awé„
-b¸ÒÛ¦Ÿ}0áæo ×‡cǸ:z9o~P€•éˆ¬®~ÔY³>–eصFÓ¸'mrÞËêÊIàÅÉè;HµƒÁ3s]{N²¥šVò¼ÓPehØä"É;jx–"”¹$K<oú;nº*‰„(šÞ£¶ÏÂ%ßD|ÓõôµÔšóŠ}e\ßAGP¹µÐËußeNàÑ452ìïÎ~!3ýÚŒ.!þÜ‚>N&óÎé“™Úª¨¹ ¢L‹•eG®­­ü]8aXˆ{íˆkFt*'tƒÎ&aÉŸG¤' OVY½ï'ä‡Î¯ˆº¥€1ž:õå”™É4—´ÖïEüµ ¯¯ýqש×A­ú*g&Qæ8šˆYe¶‰æõÙ6Œ)B|ÏVù"¬š¹AÚ‚žÖo õá¹aöœŠ5ïÏl®b!í8c+erY¾!¹¾b<¬õ^6:‘Œoüò¾J˜70‡ðx:äÞsE²Ï±ü­žnTWåMŠÇ-ä…Ÿ?>n@·L—$ ®Óø6ènú¾\÷MЊp;X¯ R—ñ ‡Ò1˜5Ï抆‘3n²Õå䆳41¸«o@Ø<pt {F2n&ÀàûcC0±ü!M$ƒÍÄû26þÚWI®lÒ‡\› ØÉI¼÷ª7˜ÿNÆ0D·ö†^Ç.øÀk~úƒ#=#…ŸõÁ ¢¥‰àìtV&9/–TyFŒÛç>†×#$úpËPnH4>²!0ïÈèt–Œ®yN̹
-þi9f«sà`»¨F—ö9CRœo^y>ÒÚèY+‡Cé IÈI(Žƒ©eHª«¨6µ!ÇžUgLl¹ mCzÚiõPšÊ !Ü57{ÉßO)ñóyÕ+h;Yn ±— $–¦cê:[JP>¢Ãœ§€È²Kf©Vc‡ø-N[ÏUÌ®±(0Ç'Iº‚´‡éÇ>zb¦þf«W¾î¹óûûjÿðVaÆð7öÕ)éÈä$„•‚Šk1±!¼…"#gÖSôX-uœsð™òr¨àÓ³ ø<ЭP ñDôê8dµ²£o _s/ …<IãÐï7 òUšKŠ¯Ô#$~öªŠ¼ììG©Ùkmk }ÁlûÙ9`²$=ë LŽ9Grâ;ԕ̨«˜RoxbAúäè@†VÜöóRÌÉÍk¦ã™ÜŸ“>Õl‡ÇÓì>bRóð§VäWÈÙÌQýIRª‡æci'¤cQØV
-uqK`v®yõbÍOim¼ HsA
-Ïqx¥Hf'reÛç‘Ƈª~)¶\C¹¶EaîÒ6Ø‚ ¼’ ?URS< FÉ ÁV5ª¼áÃ8ViHé©ü$ /N0d"ÏœGÛ\2 ÓÝ8œÈíf¦,xiäå¡°tÎq¦Š†À"[%µÄXÎk6‚eÉéðMJøÉZü»]™ÿ ž7CˆŽ~nФ
-jÌ°Õcè*‹[©¾C [ÍcþOLyÁ¤¦/@“¶†·p7 ¯´¨­óWom/㫱ùŽCb­•ˆf”@þ™(²`ä=Û>2Y‘3ˆ 쯣Α‰thºÕ¼ä3&ŠÿÁâ´½ËyüŒ<›Ž¸Ú›œÇGàÊ<
-5ñßcf)“ˆ¯'æ!†#ƒ¨÷ÿ3ÍýѦÅ}PîÈ_i$g}è_(ªÇ-„ð"™¼,ñš¨lk³øô»@¬&|+FXŸÅÒšþ¶V6}ClÂ.rV«'wYór¯3véMxOBa®
-E‡Åš¨ .ÙÄLInH“;•kçq/À;!ÄxJP¿ìSü»:È
-¢žkon S^áéAêÔq‡kÙ¿Òçê„De‘¦y”;ˆ J âüfÍ ù8+²\E5È{óŽžÊ Æ‹–ÿŽðn©Î’µøt
-Ò:0…ü}¯1 섯åéA\Åš· pFÜ“#ó\AÇÄ'…¢ÐC¦·}¤ i€‚ÈÚá6¿åñ'ÐçwvDzcíü•´E $ÑAÃQ%ÔÕW¬³Ä
-ÕÒ\ÆôóZ’ŒÆuŒ†úúù
-þrµ“PÅÇ4  |,ï ¢U´É˜$Áþô)Éú¾zY#6G ªï~_†"C †E"`w|0iŠÓ 49¸jÍBÙ‚|ðÖÕ¯Wßá?/ œAª¡Ù <¨75+×xËù}ÖúU.­Iƒßë
-L÷ÅC`G¤)gÈeÍ`ÏJäì(²4ÄO"1ð÷QeÍmÏ "]"ÐÂ’mÍ{ýhÊ©
-D¥ù¥•Ý`=d{C:šˆ)ÉƉ@¢~[ÀìñHŸ¯Yv½[…0»ià˜Òí¤‹V$a?ɤر: /p}k:@|Àæ’IPú;ŸD*•:ŠÛηik‹#¶}¤ÇW!þüy#<T§©îqj¯çC/½ÚŸº‚²Tt¨ åý|vµˆ#"üð(ÜhÇ¥³ ùõ¨Kq
-oÜV‰X„óæÉ>Š)’1ڹݹ/ù ²­§ãÛdÉ<_Ûp+!¡c‹©ôç¸x@Juø§™Ë±ÈyñîçÜfë~›ÛŒuõ{mnûr¯ð réÔyïÆGÕ’6°ðçÅ‚æ b
-’óø(<Ny5wü¥Œ—⌽æxš+¼—xÈ…ãÍPŒÊ±UÈyõNç\ç~›Ûü^u›ã{u+s­ñï¶Ê—/}Ìåàèòž¯ÐGÒ-_ÍTòb`æ|Õ3)O¡nz'Ž¢z½<a2Î ¬rÔý~ <bdF4‡Á•ô\E¬l.W¤r±ï 1& €3™Û™ª4£Ë˜ÁM˜ lt“qóªf¤¨ i…NzÅ™luÆ&3K"¼³¹¦„qF– ØiŸT"«ç4¢ø]ÐI^Ppã
-Œþ“jÜA|ŽiÆAPÜùç(Êus­„}³kcçQ`ô†±¹Üo"$£„µÐ>¡î†àdS_%Œ]âÛGŠŽÁtOY=ÖÓO ˜º)² Þõ;ðlzCåèýl;½~ü²Á€°%ÇØ·øtN¥6¯¸º~Ô—å_[É, ˜÷“0[Z°p3þ!¼¡8õö œ¼Ek1šv´#›
-‹ˆù†ÿ»…>*®žKÑ¿lç`[1SŒ_ò¡g~_“Ýv‰ˆ¾ªH;Æ_ôê,­=`„3ÆlÌèçˆ@È`-&ÐÊ ˆ‘‘€ýB<K²¢‘ó7±
-RÍ°ŸE€è¢¦Ú!ÐüPXÚË1f‚%^ñ˾Ä*\I[H¼…y.¹ä{«þwË•@Ãk:*Cƒ½/á$â>䆎¾•ÞûQj…NÃôц±¹7û*3» ’fÊÓ\¢DíIi¿âže› CPÝibäxú‚ˆ8ª¸!¦íîùFRÂØ$–€c¼@m‰‰ÂruëûsD‘¤¢gŽ)«cl_Ÿµô‡wU°sL¨gµ¬+c¦Ä5Ò<«Ü¡ówµdÊÌ:7í5½ž£á¥KYÊâÌà晇j¨ QÆÇú6¦¿DV¬6T3VdvYŸxö¨B6…Ñ·c˜<{;·âÕXî?‹ÐèÑ„ì ªêu6¢¶^0 UARøn‹~gŒßB›<芼Sù/ãå²i‘Dá'ð;Ô +ï—%ò¬ľ5°W¡y{¾“YÝ®?ÿrÑ \ö©¼EŬŽ¸…H³aq§yµÔ©!³l:G‚Líšuðàx±Öh&%=ó¯Làh9üÖ–WÅH7Mb Fƒ•‰ºÞrNÏNER”°žIðt
-ø Ķ*r ùŒéluf¦oÂò1Ÿ Spå,ñ·£(üKîk+ÄmÅÂ,Œ'«tѯ‹Öz|®<z,–ËøÌze„¸k=ÜÁ5aŽž¯-ˆzå²–à>Þ §!Ö4{)(K´Áî$‰–¶´~¤¾Ï(ôeúêHÆâÌ4*þhCïä;¡GÑ׉nh4Ð<òi‰ìÓ÷'
-L¹OÑü2*˜hf¨ðhñlÿTGWäu˜–ð8Ø°>Ù/0!r<ðM3£ëˆ_$lyžPI€å»•‹[ó6sÆP„.û±ÆŠ;ÂÙšØO >ªÒŽ4‹~
-ÂN˜×QÖªòø¶øðÈàî9ÓpËé:ãNtK­& 3•)ĘÒ'•€Eà`[á™p7ØœÊìH‰)Ýâ´‚±¼Å]ë²!0‰‚#ƒòÜK’MžÄï<êîæ7»ùÍ Ö9”DÍк0˜îXLd
-âA àH˪yÓÈÃGq)"c¸l›QÞ#odŽ=¢ðD&
-ã®ms¯…_¯æ >¯!¿¼Vkò¸ÄRøfuûĽ x€1Ûñ[Å7Y–p÷$Š¡ND”
-þC¬d±ß&ˆœÚpøëDNu„<xHl2ƒ”ÅÖ÷ /ïIU}BpÔ¡ç°È…Œ‰‚Yý U`ÈS%eYèõÌ$1¦‚AHvwÚ½Smžy§:Ÿ×üåCƒÄô@dë»ñ±ö€jÁ ½ìÇGé²»9·ºæJ§,Ù@´Â†Æý A³àNiñ5´šÏLÈ\Z!VÒþn™D:?Áíè¡ÉÆ*€£_žv 2©AI…;ÁÜv¢L7Ñ.Í›òt¯†Æâ ìâòopVÆhœ‘ÁÌÉ´„ë\`R°p=ù¾Ä w‡¢öÆÈŒ„)
-y+*›Â´I-Ö!]JÎÑöË4Ù‚LÒãvˆ¸Ê®Pý„dÕDýT!…&/“ZÂÚªè+4}l¶NC‘ah«ÛÜ0w.â~¬·Š8V‘áKZK½fD)ãý*á0¸¾fý€ùèIö¤ñ9†Öa)
-Ôjl°ÁÄÂH!¢EaLyÁ½ºe¾3ñÉË®…¶•‘6æÃV©¸À„•„bÓêŠD8KšÑfë4Òwg`ƒÑYå«_®š¡‚ÿfö§EØ8tÑJMâfZr²ÎéœZilAFŒ›EèÅhЩä°ÅÚŠÃbäxDæfµ¦¦ Æ¥®l¾BCZÚŹŒYqð¶¤Epƒ‚SÜv a
-ɶ´¥÷Þ§R±î`^ÙÓOœkÑwãÁÅ;LÆ•/ï95æd.Ê&ðLÌ“U` JÚõÝ%È)I:†‰ðÑ¿e9Õ{èÈ¡¤í* Y£Îd‡=ÁeeªÓÄ”›~yÚÔh¢šõ9~™/¦ uWÂà™Õvr–¸i*pôñL7±ám‚è2Þ˜Ñô~x=d¢¸]&˜åòÉ¢°ê§Ô ˆ’¦zÂðtÕhCÖ:Tª95u3½INŠXexíê´³8Þu«ûmø:»52vXø†ÉÚä} b-Ç=ì©#!ÂbçRÇk¶ÙìPÂC3¾^v-˜º Ä/ [!ç B7å òÑ—Q¸b5Ò„0ƒ•xË:!ðO_à'DA=aêÅã ¿™Ü$=A„PyuŽ4…0ñ°±2h©ÍŒ’Èd¬qLÓù¥gEX@V}±­d- Iä0­ƒïà)jŒqm•pH„
-åø:7’Öò=¯82@È7“BæaŒ‘ñ€&ã|£òŒÓN&rCøAà¿œ^,´q–JÊ¢ "gcffÇzªázEßR,Ðë ÈsèJXu
-?o"RnŠ¨ .=Bõ”CƒÚû‘ÐM–u5„,TØ‹ÛÚóTWd-YÙžÇK‘y-”Þ—õÊ:T¤—÷Ï’
-íÎJu¿ä/CVwp[Ü}+a<eÇ·d'o =ùÕY!2sãÙ7 +I«øÕFâQ šV5,1xˆ¥å ù‡òrI®#Ç¡è
-¼¯@AüŽÕCïÂS÷þ§}n|¶^2îꨈj "“ÀÅýÐç× øcQÚ˜(T…®”Šæ*uù‘Ö•¼u•±ê‹_¹ŽXƒ $•cIÿ`»=,aCOEêÍO¯qÍþ^ôÆë‹sg"Ü83lÒÈ&Œг3ˆžŒ”•½øÄî
-”UI@´v>'«íô¢k¨ñ5íZ ‘ó¤A†Ž½OÑš‹áv–}ScÕ'€ÞÝábh]y$
-@=óüñíLÿTÔ³ø A.V¸ …! ÈD[Ì‚ot>Áûª@Â2»ú ÊÄ|q1f:àŽ¯Åì ¸}#ƒ !Ýñ·9Îá¡Š>“¡ÅUìšÇ2—X?>K.
-‹çšâ`Ïe/0ÿŒ†~ãÙ÷5ð$ÂÑîx6üÄÁÍ#îÁãš)Ü-DI¡Ùdý@ú«=¤›*|¡Â:œêclO³ð7¬ïܳ̈Pfa°
-ÔOBŒM q$øþJźðGc^gÁ¸Í±–ïxǼ“Í.ƽüÌqxÓHÿ¢’Ô‹*FZãtÝ?Ñn©—ÃK+OEFÓ ßW ‡ê;SŽÌ¸ã;ç NM¬Ž´Â÷ð+”%ì‚‘¶¥eeáðe5††N`†»R@œ‰p#2=÷Zdg™øa¿”›SÖVþZ‹?Kâ*“ã>î:‡[‡ÁG¥Úi1î“xûÞÏã¸Þ,tˆ’s»,U
-¤¹ËÁbuGˆ$LK€yÓ¯ê¶kH]²J~®yÂN3Öy1Âýd2ñ0J7ë“Ç4ÄŸ|•ˆ˜óýŠf’PMì—}•FÀ³,„”ƒ3ìÊ߀•¹Îá¯a 4mr¡Oìק§’/(ýüv*:㢿™¿,ŭ较‡ëþ¡èÎëõVôcq ò8à*¾ ’& ¥EpcR‹cEßÝ°ÂyI•àÏ S´9š i#ñ¨µ]ÄH Ш¦sÆ\Z)a(<†«~®«8‘õ˜`6‹Ró7mÙ¨ÎÉ8ºX)I†xò³^£Åè&ýå
-aÈr¢]ú_Þ(Â_
-QX­¹K°ö%!Oõ@®›°g]ÝêfeÕÀ,UZ‰];HEQªÅfm„aªt/Ä5í¡d$G·:^7½ш„õÁ¡Ô_,ËÃÿ…^ÂÌÊ'²c¼>º‡sÃ6ÂhC`ƒÚ3íöêèo¬„+.èYV×1üöÚk~qt©BÄœ9·+ð WÈ~>‡ñfñ)`k‘ÍRÑÂQ!Э½è&£Ë«¨¨û*8:Uâ­oK j²YÇð½#¨Ø7;¶’ÕôùPñÅÆîö¸¦òì¡è×C¦P‚Û´x¸Ü>´jQ‚›Ä%‹·®èÊ÷䀄áÞqZ IõØ5
-´ÏE¼Ã9ÚáXp2…|b~Ì­÷q¾•p`M”ErXžÎ ð2¾ Æ'ód0ë„šüý@TL´:ˆT_7á8x¥°þZvî.PÈ€m(ÌîžÌHƒÄÜúCIŸìÖ$m &¯‹Þ‹Dr¬KerôB®\°³±àM”)„8j.¹+Ø‘)‚&Læý쩽èçëÀ‚ìECßpù3ÎÁV1'+º{QR“è Ö5…h²ýJÁ²Y §¦=(°E€Ep_qÕ¥Ÿpx‘c[KÅǹx4Å'31JH;Œc•@ÕÚ9j‚üx›
-阿àÇOô,à"„Ðd¨+`‹mFÞ,¾F.(ºÜŽ%¨&q" ,?ôºê½¨\éJ¡=ëœ>åaÎy Tð%ˆô¨± 4Ôäú.áîà¡¿—
-ѽRì•JºHž)ú—á5,]¯gwƨà^I[꧒*X œ?{:„Ö‰ ï_ ™ãÛùF¸s•ˆœŽÍ.‡öF忆æÑó–Ï6¹Âd¯ ;;@YGÆ˹"Á,%ž(l4_[ø¬t¯ù5 ÑäKKÙN·ƒU+b븨qŠ×¶Chö¤€™¶)-ÃážwÉŸQöÜß{TÑÖ52314´Ã½ÅÚq”o%‰:A„µ÷ó9 ¦cú*ª¾¶<l­Á>e€Ð¬^ó—ìÎÅ »=mÂÍb2ÅQQ”ò’—¿[ÕO9ÚïÿÑ…B™l#TPöûÿLaÿ]E¼²¡g­ŸâÜUÁË;è&ìY¤©}Ú¾*X)ÀÅ~n„Uñâ¦Üºž_>º"*„UÅó1<¼žS–”—qA®‹JÏϧd Mèiªù)®ÜŠD“ÿ6Eá£Mõ¬Š~E ‡émX¡SÑU×ÙT¸LÁ—Á¢E9Þ%¬"¦ÒžŒ¸LÚåì èÑÐ;‹ÜŦœþت¤VõùT¢ÂNC3
-Jûª[‘Écè#¥db ˜â†*6 qn+«
-h†Øi\`/%ôn/J³s_õV$'Ѻ
-Ÿ²
-hê0ˆœùÓ9oœ¡¯q½‰ñŒ(!ˆb·aΉG«Ì&ð¸mßøë+ù=Ž fc' 2ÒÅ÷µ¾—
-5ãZêN__j~kÞ'yC:ObUÁtïÄúÖ)=1Ô(£ø
-üCÞ”÷ „Y0¬/æ‚‘`"Œ‘¼„ZEÞpæ‰ñˆZ¡@œº.LYTFS`Œ8IJlW¼¸àœH-HxHËßßÁ‘>”6% sž`øs]…@ ¸—¥Ž÷sò‡¤ÊVB(#üʬ¯
-ör±üœÝ©{Ió‡ â2 îOçÀoxHnêùü5†ñC¼Ô¾å'O¯2˜¦ò)8¿ôð*Ã\ô&, Ûsõ“J‹VnrðÔ¬\ÜÄ ÀÁç·SÍ WQ™Ž<+(Ì."Á±Æ¤,RŠ¬z+bÇh†ßň뫕OøW¬¬+;xdUc¿¢C™ÞÛ.GMæªÅ°Švo¢?Ÿ‹˜³×ÃЯy’Š†ŒiÙªvÂ.^÷°§¢… TÄm¤´¡£Wf~Ow¢DÔ§K/u”²gœá4ÿ AÈ/IPÆ–¤Ìfã+sŠs0¥+‚hÝÊfI©(+ FICŒ´ç‹>&œÍ
-f¹†ž®þ 9à‰~þGy™äÆ™+Aø} ÀyXûÝÄ[ùþÛ÷™,»Šd» )ÅŸÌŒŒá\2ð^&ë½(#±¨¥•ß±[…
-²oâ^s‘1Ó(žïÆI ¾F‹l]é7çëê0ÎÇãm³‹Çø¸óC)ⶈ/õçJIpÚþ7¯Ë@!. ¼D«Y2–VÍ[û:\˜çÙ}&¶šÂM_±ševãU*„–Å`Õ>ÅÌ:Ÿ'Ìyo%äÇ Å -סhx>ï0»Ívb+*
-«L‚µì#êÊ´% –ƒ÷ ,6 rœbG?Ö{E$W$% :Ï«É€„í+Îfþæ½çˆ»$üãÙòìó<˜áB¦ßËW_ÎÑÆ0?P×—KcQ/H9»Ò"À¡:+„™ìA>鹜üÒÑ­žêQ’)]F ¤o³å±}ñ`ä_§gúÚÎ×~«±íÌ•Ö4q[U7HχD…eMËó` ² ók% –†a‚žîáω¯§˜É뜤$ú™¶vŽ0ëÀ†ïã|+1äîŒBæÚNE†‡áá’)í%±$ä+9ìÀ®Ÿö%Ü#·ºf 5xïçvRâ¹0 T]FŠ÷qTê‹+ú‰By3zaäNþ¹›ã<)
-ÌÚ^þ"8­¢r[=l^T»Ìì’÷7éü1–ÄÊOØD˜Èr¯~ öty*ì¡(2.ï¤áߪèÓ°Z,`’™žLñ$-çÏI
-
-d¯þ½Nê­Â¾ô:ïý” 4û]àÛß´Cø½5‡=ðZw^Ðñ—’—}ú½v©a$XGJ©¿lž©Éé”›×~­Ø<ôéC'7þ·Û˜´VŽ%FÊ¿fÄ_C%ÕÛ½·"ð„:q1 ^«èísoEߟÜi\ýë* XËZk!ºM¹¨C† ååFu‡¢—ü7Kز$ÖÃ!NnÈ­|zÆ›"ÈÔw 5ñð0¸Í
-V²Íd‡œxyIóÜ N éåÿªÇÓd‚ 1Å…KŒ¤¨HòŠLØõD©+Êðs1rÛ†s˜ªãÑN.ØXùUÒD.JHØñ)¦[*èå ø[Sãc^ê…qËzÿ¶ìʬ^¢÷ÎpT¼´ŒÈ[§æé+kÌîûC‰uÙaƒJV´­çs¶A ¸Üøz)ǶiZ¡`°QקހÁÓisoøVüë /ùucLu(xñ"??A²@ïèéPPuyÅ“¤íˆà™Ÿü:sd)™
-˜íÊÝK?éwZ˜gKJÆ-®$IÿXÒzCzb>ãÑÍšÛóþßÇž Uÿ¡èDŒÛŠ}TTfä,ì|áâkIgÝ‹o²©,…˜²±Îx¡´€È`}on›Æ)nSÝÏÙ°±ÇÒ c§x»aõ-4•ÁQZ!FÝŽ%Uæ=cÊJãßúÔ¿¯×TÎÒL˜W8ÖÔŒ†Iº1‹€ó×,1Ñk–f1ÉÓà¡ ë¯QKbPqî iJ\Á¹…ñÓËj”q3/&Š<Ÿ²ô>¤• 1D„VÖ2+R"º`™|0J¨5kyš¼ÅúRƒ]ð‰Ù¸“ ^Ù Úæ92t4ž±µòSkÀÜùTi²oÙÓeoº³ÕÌ5¼ƒL°šæì£"¾l
-òŠ\ìó¤FüD/³Ÿ 8IµïG3¦qxi9ýžîù`êÆXi4 XëÙÔ ð‘çÏ·¿zºcO·cu‹§;âyB•Oï.òýc ·CÖ±-·^Ö§þ}½ÌÓahá‘š=|b7Šåqλæm ±´"¾âGçíù"f b÷5JX&ÃȧFSü–u*xz›E|ÀDø´œÎFÛVD7:=Jä àHàáM%I …Ç3žÿœŠN,B‰Ý]ÀVÄç¸t…Z ù},b°Ž¾Êà„à絡o< pèÖg8
-à”ª•ðÛÿ¥Ü©Àš(7S¥²RS"QåYª²†ÍԚ׋â’
-¤±>J~Nh´X‡DôÞnçTÀ‰j‹•Àà ¦L9Ì’1u%‚ç^ü)îö)Ä”@W™²50w€Ÿ‰
-tcž“XbÐ
-Å|\tH¹ûçÞŠ¾?ÙT[h§T‘Ôž"ïéA‚Ep¿.EpâÑ(Rïtq˜·°”Š >UŲ6K›)>ëÞ¶Ln9sEFóçü´%†f»¡ŒÚ8ƒi—yNá0°±dÔSÀ]Hï,Á´d$‚E·OIÁÇ?Î^ŸÂë Ñο'I  åN
-RSCeÓ¬jž°ëØ0J* Ôh­•$^_ÇlÃ(‚þ à8+"„Ò©T‰ºó˜‚›]uVhG™ëÛ­„ÝÏĸuˆÀó@º­/É™Vé`²"Ì~® Ã+¨„
-H°¬ŒÌ®ˆ’¤ ®J1a´p~D˜Á™%.ß<PŠ¶
-B "{Üs€äR’0ÓMOyéóËn3&ß7^¢j)k!–¬N}Ý’½®ÎwxmÞ*nJìêÒÖÎB)ù»uNÑdÕ°ÝJ1n”™ê:>>ˆÏÖV'`ˆîñ–ÄB"…ìáÕev#ªšn
-
-€FŸºÆnnô=$ ôn>ºÒ¬¬—4Bd^ÊèOEM§aäáÀ³BfˆI4*2€ÀxftµÌ’
-V–„l1Ï¥<†ì`‹n0ŸE‚0…³[t–`áŽqÇpõ'k¶ÜÉf0 y„Œx+er’ä“­„$¬{$ºæc
-e=ELÇJØC®RÆÎ&ú̲ºãj©†möÔ ®¼~Ù”Øc°b%„v³ {wF‡½
-%•NCzi1%ør€åÛÑ¿ÓSJl«Ó“ïÖ9gwš
-Òþ*:ž%>¡kÄr[åý:ý•;8;rê¸R…Fk– XD¤ à–úàZ¤•èsês-*¯µ`«éF`¿ñj×ÍŠf³…OjyØ‘¡
-«Á:ä]¦Ãµ1Ë”¨a-G(ÞÞ«5Yfú6%kT“—“J®7ë(Q1qñV‚I( 댜[Çs¡¼:0Þ
-#Pøp ¸ƒíP¿æÕ¹AÎ
-áy]ÍbÑ Ôª~Á«ŽÄ`%„!ؘ–! ëžê–BRæéwþŸÏÉ‘+—ŒÈqMöVxºÌ››‰¤ÔÄx*Œ@ ˜—ÔÄhTŠiSbÏ ¸Cð@nÝê¼/N["cd†ØgPˆ`ou
-3í•nÜ>ë )ÈŽ†Üêþ4XœnõÉè´#[UÏÖá±½zC§‹Ñ)ŒEÈ×YB„°*X™º´anm5þx‹•ß¥w)ÁO"_ð¤˜Zf;?0–ÚõA¿òÌøúñ+¯¬_~Á1}xøÇß|”Q
-¬l>þ{¤Çolp™XŽ>&@w,‰<+­­Ž‘HCW–öÐ%Ý°yIE2àIv5X¢ÅCÄ1Åc¤™æ7¢¬¥>@“Å(LhRËâ\çöbß^þà~¿s¿u*òž¿âÀü¼ñ¼ù?”~x8®æ¹‹wºÌã¯/cœW¢wøb6ÈI:¦ Á§-¥lì‹FÄNE !†ÇÿŸò2G®+9¢è
-°Ú25¦퉖¶À%ÐRhÿ:·2ë“ø¯^ë7EC ^TÕË᳇Wx¡ÀRn#ƒÒXÚ›7‹1(T.fo¼…5D¸ãó•™Ìÿóµ/ÿÇ›® ‰ü.M›¢Gëfø½
-ÀKkoã/
-WCÚÅ@^MØ»é§4™UxÃE<ûE:“œ¢Ajãß £©p± ƒAÆK+„=ÄÞ wÈŽ®¨k¸ i9o¬Çg5ÚÎAýEÄ´¦¹/¡Mü•0ƒ !½°ÒqŸBËeí{£æûª
-¡V gpPä9ƒŽöÇU(,í¯NŠ#PFåyb}Õ3¨%&±Ð,ˆÃÏ!åg‰¹›0 \ÖžöHVmZÇ QÏÜ ‚^2gô›éÚW1AUÍëuGA®•Wššmk'l†°à"OiqAh#ýÇW¶~'%Ì_Vø”yÙ ÷Ô)Fs)n‹¸e„ƒ ìZb8¨-ÇR÷WÁ)ps¼¯Šïg»ó×%‰S&AC³s
-þòʵÔÍ_¬YÅâ•àN)öÀ¦â÷WûLh s^1Ÿ7fòe³*ŒÙúöŽG î¡,LV/ì±Aøw0¸©´IyTü³ Oï7…ÉÒ˜Ý-
-‹¸™žÂÞñypUßÜ…/&ÑÁÕ³¥›v~øUÌ'BÌvwK^WöÚ
-Àçž+#ý«ž¸‚¯â£\¬AÜ7é"X·ÝÁ÷ñ{m<¶aÙõÊ÷+?dñ& éŒÀÍÉ–A&á±vϬ´X
-l/‰}j”² # .ŠT2ƒ>ÂìE¼×é^‡ÈšäãAÅÌ”*׊©8.•M¬¾tt¾ËÏöìdRÿ·Vñ±Ï’2=ⵄ¶vØ[ñ‹°ˆX5eó£òêE–­¾Pø6<ÞílÒ#øPÀJ£@øiÀ6ø{;+šiZ+{ôØ95–=MŽs™¢,Ž¾O<C‘e® &‘¢Ï´2Êiß@ôÏUeǾébœ šÔM±sXâ¨1šÆYã}™ˆm†ì·«0Ä\ƒÐý¤l[zì“FâG9·¯1S`
-»÷’O@)VZB£¦Ó•¢ïóŽ¿ÍšùÙ3ƒ+ÝÊ>ÎY’Hz(’ɱ­ìÀÂÌþPÍ65œøÚ²¿ŠÕA8èi.¿ô…­]fÀýSÅ ð«£ú9pßdJV/ ‘ùšSîìÅH,%cŠ×NA¨
-˜ÏiC¯Â0d?•ãbô×°M²­JØkêd0jÆ1x™O
-†Ž‘0üA&"Cšnj̇—ŒG•“,%âç`XFêŒÁ:¶ó ²™˜09Lä¸;;xÉ’CHpü ?AQf GQÑí«H©òñ—°¢"ZÐüÀ<­ÃÁcÜïÈA¼û‚Wý¥­“_”‚3„Ý}¦ $ÇC? ƒ“Cž+´²3qOüÕ‚)›ßóò泜6Èr–¡ÁˆÁ†ôº4a¸^áî>ç'MŠ{g“¤P› evp"Üæ+Cf´;ißD­]Nw·׆-R8Ð)ˆ…ØÑI»2Y_D òÂVBÃZN‹;.©Ë ½·+¤¬Ï–ɘU{ÿ2¿\à›\ÑçC‹‚…2šµJÎœy‹äÊéåiXLJñÐdJU‹ÜV-È›
-Ê̇bWÆÍ9”ŒufQ_óŠG!¼Ö ëˆBU}L™&nèN:Щ<Na=ôãx[è èš+×uª+ªÊ|@Ÿ/,ÎJŒßþ° ÀÇÃÙìãô¾Ñ¤Á›8‘ ñó¤4…èr'*UÕÛÙÔÁg„z…Ø|!ø B†´n ŒV#Œl÷¶UI½ˆ˜ÿëŽJ€XS=üh6jçrÜ6#€F1Ê–°ê;|íŠ[ãâWAÕXÕµçs
-ß„™ èã5¸(´ )JÙ ó Cèî(Gå%&êò5!Fò*GÀ¯Ö²ËeŒcïÒ@¼Û70<ÁÀÆ´Gú ǯï.}T<@üÃa9ܪ
-ßïÎyj%“¬œÓ©›ÚÚ„<“žú¾éëLˆä1çèV¾Ë` 3Y…òÔqDÀÔ”1C³¦Hÿ„5íaO;›ÚÀ~¾vý*ßÓþ‚L:Ž:¡a=M{–› q©7‹àÑ<{3HRáð¶Énq>>Z¶ïñt,YÉÌÍåä?2V?½Ð]ÅÔëYuèh¢è8zòíxÕ÷û‡RŸ7"Èf‡Ù ([JIe‘àÐLx£ÜÕß:;Ï{ÁæPî 4~v ËR±ÍõUБ6 Y•’Gl÷ X“2ÅŽgóuWPmø=8ñ±ƒVþfßfE%F&³hG ¤6Úá´ç£î]ßß¼,‹‘Ú¾ê ÄÛA—£~Ö[;ŸÓ”å–u ÖøkH<¨Õ2ÏÇ!kP_•$!í!{Vh Á'žF^Æ@J4g °ÏÖ4ñtèqÕŸî×wóu‰x 1(6´ƒ¸ª)V_à èÔÖ„¬ó‘æô@…P
-âGPXˆ_Ep9ðr¹=‡Ym¨!b ËSлtâéÁÇvï—âÈÆ:H  ¢k
-âOØúõæ3ãQ,é¡Ô®Ì™VŽƒ(Ha7¾?BÛDCJäš:Õ+¨|6ƒÐ‡”Ká×¼:0
-®/õ®8ÐJ§Æ¼'y…{Ö02âcÞ@˜}R˜ìÜöI'PÈ\¢Õ6}:¼Fj™³ª êá«A*Aþ,[ÂÕ‘0Xßòsžj,ã„.£÷Œa?µê á7=uütÌen®¹Ìß飞ÇøZ›Ë.PÊI"jeÎtù²SÕcÞñ8Ð÷Ï=;˜:f*Çxu/ k\®{}¾ò¦Å+" ™}vE&¯—›ˆp‘[¨w„½JZÁ>$yÉêž î¿ÉCÅ"ƒ=>á‡ÝT¢º0H ®Ø,Í~TcìœJ…èeÅ¥È@c˜®Ç•‰àfùáã1óò"ÔÌ[ðs K\`¡C9$ûä¥{2“à>|,õ¹‚Ú;ÁC\dgLᯗa[‘sôò”—»nTAD¿`ÿáƬy?BDf!!‘#"Äïsj¦gmí½»ÉÁzÕ;3Ý]U]Ý¡_ÛìÉ£ pÕzÏ™˜(üm­É2ÇÚp.9
-±"SSŒ4[Tð×ÎaOË,k²¼öš;¯v`Ô:#>œ¿j.³à«˜¹‘Ý!¬›‚ø®+˜íoP7•ŽT;Æ7ÝëJ˜
-H‰”—M’\¹ „OÐw¨ ¸‚?
-óc OYÖF©¨Ykù±ÞMäs[#€‚î”n i!'âY ÿ]cÂG±9LÎvtSH È]ÁǮߴó $™ƒVôê^?’9hºt†v›#§tØ‚t£„Ã¥Nχ3*1‹£¢Ï›¤&ä±^r—0#xÚÛÖ’VÕ´>©aîÄ — EÌ=ºžƒÇ?Ãt(E[ ½aè#lðÕЈ0çx–Î¥dÌ>ööÔ~k¼›€ 4‡w«ª—Ðp¥[\Ê#Ùl TR
-O­e{^ ÷ÂtÛ>2*±•-ì_-ïÆù¹ìµ> JC‹úrj´ s(ØÄýuqAÎVÇ.ËoÏ®4ƒj‹~ãá¹݆¾ tøØ7@Tšq$’$[úãÄbßp},ypP’ °w
-.8«ïuÊêeÐ8?Õ"¾)yc‡ä"FjÆé A!byIâ Ü#x[ ß›«¹åB;cé±y
-ùm«þ¾åá;å7;HøWôö0ÕÉŽHQÛêëmô¯~h¬<hDžCöR¤
-¯a¿ËÆ7ADm6¢5YÄ8€X"”_KHΗhÃ
->Ì`ò§ºýø« ÞÛðõ²ŸÇV86Bü†W‰ Î0þ:óÙ“ÀÚˆûÙ¯ætÅ_$õñy€\s”™}¥Ëû9$da]Ñ«1y›¹0ÂÜh ‹*¤Èy›6É,Ä@ߟBÝÉE8õŽvÐ6Ç‹óSˆ ‰n›6±(„úøxùÂÐÏèÄuY$šâMÿ
-aÓÁ4¢M$4YÒrÀ™6Zpæ± ÆÅÿêþZ¬eƒ[!Ò$V,¶–mîÃH¡ØŽV_ûúòõÓ°@3Óam’ÉŠ;Û× [á3Àÿ2^îHŽÝH]Aï¡mHüaN´L¹³‚ŠñJæìÎT“¯†-EHM&ñË›÷“W‰Œ‚y;”øVY}Æ÷ZîÖI•,$=Ýò~= ‰™7åþRQQ)vœK½{ÉY€
-øº)êb'VâQË:t : þxV´®T3ŒÞynL®]bÑ><c๨9ʸQ·Ð±®«HHEë*ïå³3ªÔ%†±¬!w}Î["©ø˜"e¥‹nú¡d©2Ikðv¾[Q‡rË4ë4­›îÅCTÓ8
-}éÁw*ÒÃbˆX
-9“¦Öµ€¾¢ê±7{‰c"8Å:…l†CCv^'Hwb¶ZP¿žæ‚‹—[9ºÄ 47m®¢Ø?ˆºÉÃþt®…&y´â’¥Ò<8q„º+žØ˜ðšé áVÞlïô=¯Kþø7*ð¯ÿüøã¿ü¢èŽÆ…`(}b ®bI´ÀZS T„6¡Z½Í¶Ì"ƒÝèS¹”’.˜ ý³½*!Ô)2ÅX%˜ÿƀЙz(ù\[ N¢d°ÆÝ:¼¡Ü|´*ª$NÒŒ#] 2SÈï‚ïD>…ŒƒÜrŸ€¼%ô=G®kÃ;LòÃÊö·k 'È3ý³F›‘OiKL6¾)z=vâM£Öt{r” ÇúJÏÖ*E*þ@ A»±òÄÿ Éئh°gõj L@r9•x/dÈP>|dº[g
-W7l&"ì
-¬$¥‹úvÑi
-ÙŽDW —ßN,óõÆäü“‚PK’ïfOðmX4šPx™ºS륨Ê$btÆNQ¯Ä Æž u’€˜¢¸LnûàÐ}0±™™Þž%+³BùÌßÔ¢k:qÃ0ÓËQ"»Ñ?_¦‰ÉɈxØS‰»‡øèu»NŠ‚/^sŸT‰§­.é°Æd7&•HÕÇ áí^ŠÖÐäá0â­<üÃófCœDÐn‡udfŠ'*yƒ:C'Y!1ï«—ñtÊ%~u fÃ0#ìÇu®à4 e€J<õsèýø£lèæü‚Š.ðjVt÷ôó­>áÌo8K¼© I [À'×ôØè[ÿcÍ)í0L$¤êCÍ_¬e@Ci#þR¤‰GWèNë\—ò ØÀ@Î ‹bË°9Ò¦Ëëå|*‡
-gÐzBd:²‡J
-ÀËØ[w¶–5MºVK;ÊÀâü†^Å´b
-BÌŸ´Cn„¶Ø;DWºÂÀ‰×ë¿`±óÕ7é'ƒáÑfwë$ºUþGy™ìÈyAø æú¬C£öåhÌM¢a€†ß_,ê$~}Q™Õôô_M!PöD×–™±´PšÊÏ»1{=,»òŸA
-R Ë×±{«Ø”:2éüKrEå³uÈ}M]ížÂòÔ¥ïo'Щ߫5!\6·Áùè4ƒ—í>zâ…óx=œcªÄãA‘†GÑ‘1}JQ59Ç@3e9¨㲶|’ÈVØ‘X6BG&× ‰„!( Ãgržd™ññâ^Y@p˜ð)ÉIÍŒý3Õaë¨ á`Ђöu®Æm§A¸"³Š½ËÄÚ©Ü'ÿâ´8³r^¦ÜµBkHYŠçÃ
-Hðe%ÊfÙÐÓ¶ òEePäXõ(Ú霾ø©8|ý±5rœóœ (=® ÇÀÇ«$hݲ…áU;­³&Ý+óE.Ì"ËÀÓÖÒ!_î®”‘ËKTî•À^¹½ä¼ HöWµàxG›Ÿgñ ç†GOyf×1õkcòJ7@šU kùð ¼91$:‚^bH!»ò~AôªÓôÜ®¨1Æ4£Y|*€+ ý®PÊ*Êå «1…8•ß*¨oxé¾*zX‡9å—$^Œœ#Ø;ôº˜ÖYW™iâ(!?O–¥ÿÂ|4 b!qèÝOƒïÅáÃæ÷œi”¯fT›1¦›xuƒ$Ž1ñBmø*(@PRhz™wߊv G)gzÇã\È™)Z=Ë
-E*c×W¬Ad†¶î{1\3Š6â½Ô³3æÄ߸FCÛö½®ëÐÙx±Žcxpùw{ä ÃOf†dȃr‚*0e0P?.ÓnÐ8ŠŠÓ<Ú¹†¤­|/ž%¢ÎIïB§¤¥™á’OiÐ(•†ÐYBkçÃ<·Åó¥|'yWÑÀØz Ûfå<Å['ðÞš¶Y¼{¥'tÍ:}§'>ì„Tw±Rz4ò™]"ðÓßЯoA–¡<± }Ĥá \Ãú߬~Á+ý|‹·òÔ©âÈÒLÌ¿oåög6®Hªq¢JË»¥åS™ÚЗ¤tÚº¡FŒVX ”'ß‚êxŠ¥êQƒ; Æ«¸|@à~AjÊ3Ÿ²,¢š5A ÏäÎÁ%CTàý+ü Ü÷èb#û±ôìÊvõ߀þ| Ü-r™t›Ûß¿rÚ!1cü`KºìÃ…`Ÿ<Ë”ƒ€u‰¹Þ»W\¾JÔ@_,úæÀTþdÀ– `!Zš†(¸ºdŒZ@À}ÝžU^ÿ†~¯áøŸ'2‰ÿú¹›ÿ yÐÄ)êh^Îðᆶ/>ó툨Sï?z
-Š¿Ÿ@¬Øâ9*a fy¢\EO¡sÌÚ Â9‰–£4GÄŽˆL˜H^ôWÛ gÁ¿ð ê݇š àN‘aDH•5”‰‚§A¨~!Ï‚$¤d¨÷޸‚ðLiÃ.3Jk«Âqæ\1kv%R%o8>Eëä»Ïðá;×:–!6p (ƒ¹ %$~Á€„b,¿5—û]Az|[óTIÊ.AA ”àn Òeu!ÍÚ Aׂú Q™T4VG˜êÞè#ÆC}•BcG;-n‘B±ªÒ“ ) ˜„˜R1¿Ã6±¿•I‚ŒëÅ Ñ\i¿º¯êâÃ0Ì1 †¯P›ÛBhˆ¦lǺ³aª?˜÷\¬HüDɧ Þ䌭Å$xZG¯YpfL~ÀșŠ„Ì…¾)»eë*ó÷Ô1Å}«.Ç:"E±×SÒĦq#rÈz½¡pÔH#Gƒ0søAæ: BªåùpüÍÞ7Oi!.®í~ R^™œRw” (™È–ib¾¦ X¬ÜüÍdëQÇ ž7i+vš2Sëm(ýd<znз •¨¸0Hµ7æžlbÔªA"®þÄtûüWl.ÙH„í—⎙a†¤Ò£š˜Ãˆí¦± „¡ÎèKªò«B`¥”<h,G(÷ÂÛHû¬Þ7xKò%­•µïµT˜“â«u4Ãt1ÜQü0˜|0oš£51ª…)ÃU4/'wÁ=ð:@÷,H{yì*J˜CèÇfŠ•éG"S¦O½œè ó•—Èjf.Â9{« hh|èêÛ´uºÈÓiT¢JAºc1’Ýjª´§D™ ³wŒÇB E.f ŽÊšYBÚíés˜8ij ùs<8¿öy,g[0† ù¼»Q`ì`ç6B¡©!ñÒš 0çƒØÄàÎÃL3cÞØÍG³Ñø Õe‘yäÒpõЧ{ð ,7ü¶•£)[²™Æê8USffÈ('ˆ£¯‹*<füEšWuŸß’3)?¿¦.Å;âÚʲíÖ3V¬?=¸Ê DŽ–·Äþ׶i‹ ˆ¼Å ˆŽ1ÁvŠÕ·6‹³
-aÁ!ʵ-<ötQÎþ<Y> vK ç^„}X†Í šz4ÏÂCó>QQ‡A= ÀÛ¡Rü™ÕæåГÁ3ˆiI”*G'Hƒ‚žbè£=M#…ex¥{›£È¼†ÉHá¤D!ñÍH[2¡bEÔº‹2)Är©BLi¶ \ˆ¼”1¨g"f怠e¸>Tõ$ZæÝÍFY~d&ëñ'зHÅh!J-NÒîYVð¤ô%vM7u`R{˜*ÌáNÎ$S–‰þ2]Mòû"k¶SeŒB£Ò _ÌÕÞv/r›Iž»æ áÓ 3"¿H[èçe´C|p3-Ðê È›úŽ¿i‹&KD/øf\:N­3£YóÈ(âx#h hpõ¤$Š¸-ûT©qnÞ¦Òx9š^»N¥0LÕ5–áB˜Ãà’· Ì^
-çŒA+‡B/€±‹æqœª .C’hÔyš»µ¡GQ‚
-Òçe0•4I›PÃÞ‰Ö Q€<R!¤ ¡÷±JòDˆ"b[¡oì9¬['Hé6(°‰‰D¢¨Y¬!¢Aoí»‹Çp œ:ª©¹‚H5Ð0–ƒ—H+î@t%©/ÏLŒb×âô3v¦»«@|‰ rú«0?Rl:Ï]t£eÑÖ]7GK](¿g ÿ0^&É‘ä8=AÝ!O ãëì¥n‘ÛÈûoû}®4EÐMÑÖeÕ-ANøø>²ARØHµÈ› ÔAEÂ䌣aMÒ*|1v
-5º1¾ ŒÔ%¦o§¢]Âo5Ò…8† 7yت¹gDZ’/Bz˜yqëäD3ßPöÒ48Å.WFn£X×YöúA¬ F’Ãÿ%‚6 ãS£äûêÉxä­¨#ì·¿ŠA#O‰8=bi0ç¼ Ä„¡ÂtÍ)8§ê/Gù¥8øËŽÊÂv=bEs¸Ë0…Þ?ªÝ3Œî³\þŽãƒQ HÔ‡…Í„C°-áÕYÜŽÒ䌅‰íÔzü\*‡’XÏžq‘Œ°]'=‡‚².TöH u“àƒ¼ƒMºD ·¼êÝ
-»cFùÝ„ƒ„ìSÀOãöÈÀ"J`ȪX[.ã&¶’mŸæK®G=ù‹ù4_ŠÀ@׈Å_‡+‹ÜW–ÏdÌiÆËábvXpÙCs%.ñ«Å$@\#xšá¸t¤ˆ~Zt˜³
-z9Z\Š œd…¹c ÃÄã–džN%€Ž¤±ˆ5ß}Gœ8Äþ+žÄ(§ôøOG(®äˆ4£‰#á%yñv-L…¿;›.KðMÌ?OEÌAT!;„'ñš¹8” Z·f
-PdMÀZ„¨{ýx˜®•t-T[ -¡ËN®4JšÄ „¼ÿÕçàÁ©£ÎiŠ>½Hü00
-+ :ö]“'™ÁÐÓ
-ɶˢ¿q{Âk‚ª¾³9f­#!S¯> é¬)ßÉ㮨~à€°žXèqsœZ ÆÌZêãPôx§O{Òz¡ %}ñŸni¨Ñœµz; ™eÃ]Bô­èóTtìÎF¥hH¿¢ÊÏE§ã&ÎEæÙX+¿]ôÚóC žŠïôéßâL' ÚËúéúOEâ!|ï‚o«”r_ŸæXÂ¥N¶xŠt³Y1$À
-K·<<íÔ´h ÓWò@Í*—KE ¬…«©PáEäˆòÀÚóùíeÙ&y{ò,tZêITB‚è᫪b™r, +Ò£B¦
-ýÆã.U.
-¡[â×CBƒ)2®-UúKNšL«4³rí¾²M…‘VÚ¥º‹ÿ=ùOµîOŸ
-‹(Úá%•©Hí÷f_Š˜:)Ü$›Å$óô¯ˆRLpk1ôíÊW¤º[\ô¦NO»pñçð|1!« E¶iÊyõ´pOE§ ÎjÊÇ¢À™!À õdž‹v³.Üd¥z”È t‰°\-%øS€ ýçUƒJä`å¸+·ö&((X‘G¼ ×tûŒ/UT`Œà‰&¡®!*S_ àÏ(‘y©¬­{²§Œ²aöR$[™6b†?ü¥f} Ùà"4:¤¹0.œÀ‘ƒ‘Y0š h´¼"Ó¸fÖ“gE„׸†æJ8¼ö«)ÚµòŽgJ·
-tUˆ¸A
-.˜¤ó‘á‚Ÿ¨EÄW‚UÒÞ‘›ªC”9„­ ÇÇÒE§9N‘õÈFmƇ„I=H"2GÁò0äŸ!Žoéi;ú®í|€ì›Š’Ogs½ŸcÛ$Û¤©!]¬ ®+çÃe20E¥÷wóêc´’‡¸§ì•¨ïNVUÑÔü–W–‚ð% Kñ‹9†µ†ÜzñQ§¿ ‹ÞUcoçˆHDýFRUóv>d\'Ün™ŒwáÂH†ÈÖ
-§”1¨J ³y?E÷,çZeÇEr¿Ñç)v^Îäã75K'61IVþ÷f¥Î$‰N(J¨“Î"~eÛHLN‚Ãù Qîý†+5Í,´~SÌÕ[<¼È Fš
-]Dz‘Yå›;?S5Ý‘qï[+©ñóúå xLJec¼rÀT°²¶P
-½ôF¥Jl?šöröÚ÷AÀ¥¨¯®[r-H*tÐnãùþ:ýés"B0 hÿØ攆Qµ¢Úó¬¹+š YHÃ3ûôî ‰!ÃyæuñY01Õ–þõMÍ@ 1McFxÂ(`0 ßãÒ ®å,4zsK_KxqîGO”mÖ`C Ø|~S™¡P%1V—…†^@²ˆ Oe}\õ
-Æ,Rb´±0€šhÂIoý…ŸÍr©6­ÛëÇŸ„Œw)
-]@0®øEšÃ@Â=,©ÂZ/ 2è†Ù¹ê4䬘ÌA›ÍÏIRgöyî´É¢'L uîìvõWQ:Ù¸fàãñ~HŠæþÍoš²~Z©Ã}ô}Š“É(Î3Ìá0ZQúyÁE_⸋UYQ¼¬3E4ÞŠ £#È(ÿ$t¶ õQ/ })µì²ÃÆÊ´!xDƆÐQbý¥LYI Í~…4q& ÖÂùí¶Ý@<‚‘BÎè“Ÿ£\•”¶NâÁ.Còr)®
-÷‡h­š"L&q å¦EØ\/>|ÎZÇ‹ò.ò”oíù=uâFF_µË-Þ3 F!!¦‚e/ADù[Æ c&1¿üùü×PÖè;=‚¢óLuñ$ùòZó}…ê§<•aJS~[ѱb‰%愇 Œ°ýÑü"Çeç2¹iú#û¶²w^Q
-â½(S¸iþ³eEËf7ûAúÃW꘶>®ú š(U¦ŒËzöOV×qñΨ²Ü LD
-u1iÙ¨—FüþF³>†‚BaÒ³4,¿°îÏ +ç?Mä…óÕ=KìÎùIa+S'ŠF K¦
-¶íݹÿÜÄ ü‰Ý©šL•ÁxõøàÂ:²_xÒ£bŒZ"Ýé ù[vÍ`
-U¹¡SÕ£ì52ê˜AÞ@úÆl¥ù)Î
-9Ò¸ªFÌ`,{;|BЀ®.ŠÎEŸA"êÓ®1zœƒï̈¹Â ù§bŒhñ1°?66íÉÀ—S¶• b=[Î%}[!ºˆ£R°`‹${”èîM—o4ù
-dx·V“TC6¨0v9jª<™"jT¨!sÌÜñ£·¿n t")#Q»Li÷G×-§Œ7ßÿ”#±äø"ÃÆ%‘ù˜þ² Hk³¨[¡™?6„ŒØ›¨·ùÛ³Öš·mŸ¢(æPXJí±ŽY`Âz÷Îò·=TøO¿Içf‘\—uôs0cRÁ’:D’‰U‚ ¥_7þmÏÇ\?!NAYnón$‘çLXùŸˆ%cõ k‰$Wµl*ÕZÓxØÙC4H|D´’‡Æð!
-2à‘Å¢½_,ô¾ŠÄÉDuéâÑÒM-IŽÓöU9Ä A"ZeE¦Ù¶µŸ(`îºæ½-S
-î~Qã/Kc*²Ž¬[ñ.HªUý”LgLëHGQ´$7Dcnx™•™lç¢ÏNÀðÇ–ý|gOTg8+3Ô,=/bñ)K> 'œóX„+±~t×NíÚþ]’<mŒmÝ-cx ´w¸(ê.ÓH?–XYJ¹û˜r²_˜ï äÌßÊ0—½â—c˜"ª¹‰}E¤
-3‘ùÀ,‡°4„‘öÑd{úÀ„'5ÖoZŒ½ÜúPôr ‹É]Mžr/޽ȅ˜Ž Ò,jÖ<.GÒšrøò²ø~-eiX↕=NvŒ·kì8úÇfc¤uetÆ,œ‡.EÿáÖ6_@>åš·ØÚ–k¥ye¶ èý¹K"
-tªÅjë¡U»LCP{rKÍfHªf~뇵 #LAŸÍ>z ñ¢nÐH¸2àÅv4?†ÑÇ:Ëõ¢á0ä“(k‹©a‰qW+åz웆T˜ùœ2H÷sÆOì66?þOÄ-KgsŒðTŽ„óÏ×Lý¤:mعŠFq5)ÉÉÕT?‡O¥ð·º¢ 6Ê­—^¹B0Çù\õšD™Tøb„ÊÏOO‰×:v”NMI«øhC¨øŽ©‡×„oë’¾Ò«s½†¨yéáY¥µ,ôçàæºÂT=ç[¦&Ò#Ø¥ØÚ‰(`"™¦âW!²æä$*Šm§»LOiYSÊ“Ýœˆ…¥»V;·Åfª jÇHf Só=VÎâ^çèFÇÐc³ªÖêºU¸M´šM]6Öu7%—0*3Ac,vüšòrËcúìÔF˜ÍŠˆ‘*!‡lc2; àÜò„QÍ)—×OñFá¥"çÑÃ2‡x¤%J?ºŒ‹”ÁŸ‘ÅÙI´BQù”‚‰åîuœ‘@®ºZ¾ŸC{qhÆ0Žp­T…
-c²ÿÿ
-•ã(Ù;æ7™ù‡ pD „èR†ÇAôÖvôr~Ò؃,E-áÄåæñPcÄ”³bÐZ’&í‰
-ᜪŒ-ÒNÙågp"¨#ïØ<išø<<üt¼.#c%߃¹ÝWbN`ú% L·¿*T>’-Û\ϲè£äà P— v§(reX˜%ƒA<Lä
-rŠÓa* Ë.©ÁCe\
-8ˤ:V,"ØôÛ !‹’Ž1ˆq¿]=Ь3l:ã†)8t–‘×ÙGpÇÉì:ðƒ ‘;ÈW¶ÙõñÊÖ±z„•­¢é8Z1Ï,*M×(ÓÖ’›°2§²fØU(Œ†ê¡~a[#´kO­ý¸ðÌpch²Ø§îý›¡™†]ã$öb`øMõÒúµµ›ÆFùÔï°:çb˜ü<ñ@r¨k(Ç°ËààÑòâ£Ebü=/Ç<<sòoÛ|†f@Cc»Èü cÄè¢!ÓK˜˜ÎL' è먮tWJ<„2ç35?„ø$OühÆ„%¯ç
-¦RšÜ†gÕqæP€¡4êäÎRËÙ)Ì#èÃló /Éô…î%ÖzGcPr; U—NœÅ'FŸäïÆÓ$^)w¤T⫤ár"’[J,‚ß-ˆæ:j7õ Gþ®žÊXQ®¥<£¡Wžžq¥ºB
-õ¡ŸiØØDÑ£hŽ@c«I’šF'þóÌè¾Þ}[!¤Š`´K:_´Æ‚ÕþlŒ¡þÌ‹{«ùxNžwŠ7º°1Ò‘T²ÊŠ\ìÕB®ÜDLX#ÉŠmýHq,CŠMàYÜD`¡Â¯ò½õ2î‚ •SÖ_ƒÀFvHÀ¼¦øÄÐk¬`°´O¦oZRj˜•GIÅ&%a™#‹`/ï!ô¹È>KÑv—*ˆvªH܃˜a½(©y³>°ã™=U<1ýäÄ).œ§ uè°7)(j8ŸÇ˜žM©%{ ÝÌ(^¸(m”ÍU!»ä jM@kWv@1ØöÉRGMPS¶µs˜™ÎE*Zr¥†tªiV©“d!‚¶X®MaÌ=K “Ó2ª¼"VðmôCЧq=c=à1×Õ/Qy8)YêØŠy¢PÆÖôÌ$#|°Vï W¨<MOgh™e-ja-ƒ pë
-ÀÜ\Bí|^®ÖMg^Ùn„;ió¡tÒ®±@„’¡Êc3SEpÐL6€ ð÷VLZtî…nOz9®sð%}
-2p1U°:KÖÅ°˜«òEŠ?£BNn¸‚h!N!©yAF)V’ö1š¡&›Ìÿ$é\ÌdT]RGéŒA7Ÿ Ý¿¥ë—Íøã•õi[6“ÇèEëfæ­õnŠÓ{ó½§ Qÿ"ücä(ª,R*ìY¯!RÇE ¤“”/ÔQVU†pwô4åÉô´%Ï#Ú5ÓˆÂfÇ
-6Á’-Èå¦åÛé¥ \éQ¢øÛºFD\yµA’C0J±×¼L__ s| Ñ2ˆxyÁž® ¶uƒŒ…E…p3 ;ˆ ®þäýíDFõ¡‰¤K ª©/ªçQj^œAFlFŸBXš•÷è‰Kf!wfêÆ ¥ò 5–Šì Cð3
-XÒê<‰€²hpó—6<vÝÚ©ÀD—í6¿„üx=ÚOÿk#Ô}¯7V!s1bÒ ´­4ëYŸý
-üùoÿ¾I)q½h` û¡¡ÿÜÊ헷ȲNUÎÃÀ½¡³Sj¬Ñ§B-
-®—¤«»A§ ÉSÇ"Bb5~¼MÝ] ^ÙY o× ã¯+ÇtÊ’ògžU?üFüÏ·@–‘¬bPZI¢Ii C7èkks(«ö•Vwú˜
-ÉpôóqˆiCÎMn]<ÒŠ¹\öôùÊ‹ŒIþò¯·ŸþàÿöÏo|±M(YÌ~N‹æ †Žúf9®L®18IGáZš¥‚þ
-ÐoƒËrü?‚„nŠ )–ðéºïƒ´Æå«Ð3¨íÅbÇ *Ä$46 ¤e!S°BäïÉøªôè€QH’=§d d#Í–òXA ;*ŸõèAIƒM‡˜¿hçÀ¹Œú@ö~C­bVÁë
-I@ª¨"’kˆ_¡¬
-†â0iIפØTrÍèøä2² ‚y…h8PBó**wérî!´b«…$j‹Ë€Æ$Siv@†AãæTbCÎB0L~¸!â:?9/DÑ*€_“Óîˆý!þÖp¢áÓ)ì]¼Œæòtd*óïØžŸ4>N¬4¿4ÔŸŸÖ[Ýò^—&ý~s1 —Ë\¨îë^n"ç@ç˜Ò[v_c+¿ž±Måþý¢Keº"dÑ1”›¼òv~€¦ ¢E·KÈþÔ¥ÙÞ9Êx·¹PÏ{ÕÂ÷ê8Ãr­ñwóô¾ÆŽVXÇf49m•¤žE™6Y>c7ôl-kµ9 ?=+×Ï]A?¹ÓV ¹‹
-BšòŽú{c:.Á¯çi€J¡C¤èNp^ßKl¸!+f}ƒÐå(×R
-ÿ5!=©ž:œ¤Á˜´cÖ6{›iõÖ@…î@fo•~Yµ"?CÖ¡ñú-»xcï2ú¾˜Fj&¢Þ,9B%¢z«åp}ªèé²E„þñ²Xáe=ÿ2†±ÂÄN¦K2–Ì%#úçÔOÂ'ÔÃý)T‡&·@ED÷ÀjZË {MSNÔ|.¼<&ri,ýC‹éz‘)»Y,º‹ˆJpSßWN=ZµÈ /ˆÒ®K3û«Ì(€jƒÜî—QUH‰ÿO»Fˆ±?a⪖DÉÊ”×9¸fÀ8˜íìôÇöbCÈ*Ì
-/r%"Q¨ú1¿«ÂßA^XXº†³ÕöèÚw£ñè"ò‚0×ÚlJò H‘¢ŒÖF¨Oí” %~oWC1³)Z"¤~™Y
-ê òôS·P&6
-ü€d–Ê8ïþZ>@ÄñNÔ­qçÂk’–#…†&‡-®N^ þlÝÏZ|ƒbªï߆g"\\…¹)O¯‚éÄ]¶
-XÚýâÜæE¶©E¢öHòm´j$tü÷O†sm'9b¿ˆò·dŽIÌ&¢D¨Dlb}'tšV†¨± ˜4ù ·Ìu#ðM"é\Væ­É`$t0@å÷uë\=zV[r@.(½¢"Lˆô+öU"ÚÀu :» Mìa¿d‡¨u߇ÇtÖ #Øe³–TCTÇ®ax©SƒÇ#”»#ÕlKÞüK£3G<e¦.š9Fy ! ¦qªaù„{õ%e,f“ ’!F†y‚‰yٻéMÂZHÒôÂÒ"! ¹Ù²PYÛ­Ê%Ê‚$Ÿë*¥OàܦÏÙtYöB³ ¡×¤>Hž·Z˜VˆÀŠUVV»ƒ¨9
-Q?_ί2ë8òFE¡h`iìéT5^ä±=–ia¤Æ´Ú  wfü7¤’°GQå|Šá”]ScÃð“8!íÜÍj=c©ð4{¾øë|Çaÿøaù_½ýñ¿7æÅ¡ü¢8š:Â9`P`ý1 =üá¿oDûþâ/¹"“iÎQäòßAüƒˆ2ftÛN'¨d)„Ê“¯ªˆ„RGÖ|ýùð¹ïA3 ðס¼G?@Ì)ªK˜kò‚ð'yE©»“Ì ÿ@­‘7$åP 6úÎ%‡$Z2÷™‰¡¾A2ö1† ÎfšÖ1:V‹m_f’\¾ûB”XqhiwÀþL)ËΩ>RQ|STXF— (K•];]$ä€äK Þ½F)“àù¬‹¢a>å­ÚIiŠ}Fã€åƨm0ï'qa¥{ ©8f]¤Òêe’ýî@xwø)<‡ö"#[ÕØ–£
-´_Ù7-H‹!³Îd“·Õ3øQv‰Û !WØí œZMnÃûZ^çÐ\’4
-–vK”¦”©l/ü|s@.Ó«¼ÝÁûÚãÌ8 ûô9Ÿûè¢î`]A3ö“¯ØíHT6Ùá"nEù%Ñc©‹) InJÃMˆÁ*Ô–!ûœ.Î ™%+¤Áºh(uÙCª†cç®ÎÝNÿð×ù+€dË>f$Œ‰>SâÝ6¥Ñkœ63!òDv.ȸc«fBöÞG]­/ò%ö!›úØ ¬Mس¬‹õ
-öË0YÃÂÊçË!RMµŸqŽ`drfy×øÿŒ—K®1 EWÀz­üŒaÈRûŸrnâ´è®0@H-¿Jb_ßf€üñyÁ.Ó<-j‘ß,X0êü™‚/«AÔ)ì€Q )…q[^%A HÑ ½‚´Ñ 9úyRVG‡ÅI>ñ&ßÍÒÅÇ,iò n™VüÓœKn•Pr²ïé¥i-2Õu÷•8Ô$(+F¶oõ8ܘý³¸Ñ´˜ýôò8ýŠ±°–¥Ýã÷ÊÓƒÐÆ÷S{\Çp ×i†ŠZÈD½ŠwèwßÁŸ°¤û£ò#ÊG¾Q)¶½@-¶‡åG5ùÍ Æ®;[µIÍ]Ì¡þ¾/a^7…¤öÇiëäYꄽ5ÌËþ~}yQ¬ˆŸ¡Çnmá"ÆšÿÖÃé."‹n//•w ˜O¤§ß¡{nI¯ò’ — Hûá
-ÆôË×Mx̬èè-úaÌJi[²ñ-I TD:B¯Åþ»‚ & «²ö}?}2A˸3
-ÆÑèíèàx™ ˆ¬>Óf é·ÓúûÔ°bq}/å“*;@’ ¾È(·³t3ÈË4Ìœ·tœØ±Ã*ê
-,˜q±Ä"w+–oY¼µ]€¤
-·Évþ
-oÚòâ‹þmám´êU³P} ÝáêFó"È«b2 ¿³¾I#Ê–u•°…ÈJ„ɳ¤cöq®<–Ì£ú$á™`Šwß¡éD^ßÏ—é0˜¤ÁúÝ£úSž±§Úν¡¢vˆ›Ñ¦tîð¡ämRû¤÷"CF¶¬ØÇãpƒ<8#ãFЕ㛠šD:ˆdÙöIï­1ðU„OB•ÿ>ô— AÓrÅóœ>Jó¾~ç‚š?nó[€
-H‰Œ—Ar›¹„O;è£"H‚Ö™en‘ª·²ï¿?AM,QoœTR‰Ü"A Ñhè°›T÷{-ZÅ}4o·¿ºÌûT•f&ÓF½ýþ±@£©«.²@ÖFéRªêÔ<ÇÛè͵v_¯V«zéªv„ؽ´®M‡v>½ýüñ¿ãe~/sZák¦}Ü>O Úî:¤MïÝz¿}1
-™!_óRgkH>½¹óô9g•wçô9¥”â=“Ì«¦×á}V[ˆ•ª x¸ÊÉ‘mÛˆš7‘àbÞÉõÂpih]û:fȬ<JM|A(oõÞ¬Ô:Þ@”ô’;QÓ⯘gÙõ úl¾ýÐyÒ^»qÅU²r7£1¦õìø|ê¢
-Q•ã®›äÍ„vÞ|AŠiëEÍ©w@Æhfá`ºaEqɇ‹+‘ãNÙáO¡53ôᤠ’ʲÎQx2û,änA:;}2{•!n‡à;_ ×Uz§ætf§Ôó|Žr9o%² s’ƒZg„½ Ê-6úÔY×Ã¥q¨4àcUíTï°}ðJþ?eUíù2@d"6r¼¸!;”h¦yÌ¥,ÎÖó弊b}ÆDæ8Š"VÇ(ãÝ1´¤Mþ¯]¤ÃpTb4Ë*Ð$SŹ(c©D è¸Ý°BÅ}âTz4#Â"Þn'n }!£!–|UÞ@øБ+éeW󿈜/›ó“Ƥש¥æy¼‚˜>7ç_@qžLApÇXq Bp)Ì‚)I
-ÍÚÌW¹Âv‹ì$BEGG\ziÉþ²:ƃñ=èNe‚Æ(£-šTm”PçU›ÑÔ‹|ÄôæÂ"2„€~ì{ ^˜ X
-%û» g§Õa~
-,¼â‹+ÓÁêI¾Bü–¼–?¦ƒ’C1ž!YŒ¯E=œóLˆf@rúIrj<S yŸná‘ö$|¦ê%dè.Æçv;¾ÜkH¯S\—7Ò€RW0)¿¿Ó] ¹‡“õ® fw›†Ó¨riŸø¤’Lò%¯BÅA%êb5Ý«ZÉ39‹ŒòxCŒ¶† N4¦Ç<R;ªßêXŒòžÔç¹èžuŠ´ JRg ßÖë&ˆn•À#è‚´.ŒòoUàÜÆ0«×„`¥˜¸üÊTó¸p«_@OÂøñúKL»ö ¤C—r‘sn@Eí0IˆtFñ°f‹dÞð3ôCÚÎ1šLX¦w‚F¤8z¾Í•@¬S«Œ#Z8ÛtÃâŠ92Ç¥r&F¬÷$obNâ=§ë»s¾ü5˜gÞßô¿×ܼ°ø%ÁÄ—:ýþNÇü1åʵ?(ùXöÏ3÷qÇÖ1VTR‚¦#š)Mƒ ¼ão2EÍBì‡Ôíë¾Èê|„Ñeúlг¬R t° Ú}lkû$‡‡º¿Ê*  è,Û×=Ÿ™ù+äôïhà„Øÿú‚
-Vf†‰ÌWE| GT[v“Ø–ÖÊt‰¯®ý¢ÇÉp„w–¢:G‹Ý
-#ÑѱÍÖ
-ퟅê>ÎV¿`žÊþñd×ÖIË–ÑÖ£¨K@zñt~|C(ë~·„Æn»=4øN³ýnÀ6;"mGò°­Ra“Ôã ï³ÓxQÊ“cÊž„Vªúù¸Å£!hy(%´F<x™õR>ۆɡÉÜæ¨÷Y5æ˜éçbúÅÉQßÕ0Ü
-„ r»BÒ¾Öo‡žâj,>$![I›ÿhÍkBÒr¸IƒZ£ŽÓ÷™˜YQ¯¾›óÅÐ
-­?OÍï2‹%°àokl
-zy¸DH¾OÁ9‡k“¾ØW)ã³…yغÍÀ`ÿ¬h¡&;G[ô…g† Ý€û»òP‡]ƒ?§ìÏ'Щäáñ£r(œÛwAÏý÷ñý×ëZø'šÛ0e/M}ÖP— Ÿ CûÌk?t{Å\ƵŒ.Ù¾± ø!µ²
-V)Žbøµžô³uEv}AÞ ;4_õx!²ñ\b¡ôL5AÓûô.C LŽp¿ÆÊÒ  YyÀ {ò2^9q’-fw@Â~Jh-Nv,ó•ŸzGkPk”Ë3#TB†Ú:ç
-™WöUŒ²VQ:´m¾Ð9%æ?V©î«ž@¸|^\:5ω’z=ä8´#`²ó®×o=l"AŸÉ¾*–H]˜{»qdÌø=WñËÌ^ïú†€ÿ—Æ?þ“ÊÃ1¥;̃žšì3Aä¥0•sº¿Œî€ÐæpYÍ åÀk@5M²R¡ïÆcoÃ&#¬x{¤s“ž9‰«¥Úö,ÊÌÏæ _Oïæè5€ ß±Ùª­Ö9x–(5&\‰yu<‡´ÙjÛ¹!0”&ñú± A œ8î2{ƒ0ƒª4î«8”w(2¹Ÿþ§]» ÅâßP¸'ðn\[c™Gˆ\e(‘Ñ›âáÃEˆÉT: ï
-|o'˜7´í§ò ò%›¢~ò‚Ò÷Gþè×`2¥ å±.…gñlõ@ÌOšfÞƒ/‹±3R P=Ž‰]é€8«Óè×PE™:8e_âôŒ‰áoÞh8¹VŒaò
-Š¼g` Sƒ…Ü/]FgèÃ!Tl¢05­´q¨Š¯Ç=çLŠ“:çÓÙ@TÃfíìëæjÊ´mÝÖñOH^E÷Ä®PPÞwçÃLÆÌÚ–7@3G÷I–ÜcJ³D¶ ¡EcÇñè˜â„ Ô,CYISÑ2xÛØAgäpý!¤ o. ±J^qø9€>N «œ<éÑ G“QnÙ£Ÿ6…,Uk60?«¡wsW
-kÅ:ȤÓÇË‘~RʬÛ×Øf"ç=ß…a–˜Þ’\1D‚X”ŒÆ0KH ËTžry# ùû`З
-[2†'--(ÓÈÀ¢¬ºõìàÛÕÁKMõÝ&
-Îì]¥Ã´õÿ‚ †™yõŽô;a–;ß繃>KìÇ+:,úýOTû·¿¾}ÿ‡¿íÏß|·²J´]³‡Ë’-ZLƒ‰. 4Ð9šQÌ` .‹d÷(CÄmÕ§"0|Ë»‰”Kš¨áDÝ\²u‡¨Ö€XC>µ•Ü×é°¾'©M†oEi`šÝ ”@Ãs‡ +XIÑw1cùî2uø­º:/É2”dë0ÿR^HG4‰¶Âú¢g½Ÿ„)ÑgÓ‹xÃ4D”2ƒSì[¤ÇÓ¯­™{ „­Æ!¢¬E,¿ºáÂÒ'D*d/¿GÑ|±ÿλA5½NDF˜Y60"IØ ´IM œ.Æ®n
-SÁëÝ׉=¿“'³Cp”¶¡¿Ý»&G¦æËõ
-^bÙ«?-çC ¢‚
-諲'æªD·Zž”è:
-÷eè+\”d§M‡À¤4xr¬£öœzt
-8¢/¢ÉÍÁä¸û“ƒt>‚O]­È`Œ*:ÓÇx;ÍŠR*}#ï×çH—*Ä&÷`^¦÷úxª’\Íë£þ,<Qr`h«\:g%ÊŒ2nÒ ûEM™?2-P¬Fé[Fò"EW[‡×…µ–×pš:+í†\{=³|fî±Êgˆo%«?Ô­¹­Û1g¹žžUÌPrôZoE³As¯ƒÅZÐ 8dïÒÄ 5+>2`ÜoêïGÏÐl]soT j¦nõ¼4D“æBU¡ «ç$Û€SgBòͲ¾ˆNà 3G.È[Õ‡Fc†¯ ¹—cDoíÔ…áô•«¢ë†Á‡¦Èâ8ñ´°HO`E_†g(ªTÙv03¹L)¥ñT7=ž8H!•:íN|0H™?XÏ–áôbÉ0ËI_ÍßM]#­3¨ ’ö gHžgÅp6SW@j.,òhn'™p1"X!"òňò¥0wp …$Å[‡Ž?  c#sœig±ŒHÖxê£E¯Àx8$÷¼ŽFKUsØÖ B§ˆMqºq%;··AÏ™(ðH[". “!ÒMKM“a_±>”þ ëª³Ó„«Wªâ¦Fx!Råà«{H!#úp?‹C¨&ÔM±â¶ö\ÙhØýˆì â:Ÿ±SbŽ™àYóx°ÓÅœFe8jŒÛL'ÿúî­A%ô{1ñ;­ƒ}™š
-~üÈËÓ<-gƒP‡†á"}+òYåy(UÿýÛ t*E€G·‚†›p½ºÌÅÇ+óìÛ@ëàB“;¡s»åÌÓh.¸Àº–<. Ìx’Úv–”ˆþhU¾Ð –21Óu¯‚ùë¸Ë´¨.Uådœd>Fé*®>D¼Å3„¾!ºYêU^Ë ()®R­ÛTSú%©wVQî ‹ûi LÝâÄ#@þˆƒÁ84+ï´ j tÛs"a&†,9Ôÿc£à¯¸m~¥çhtR5’4dÖ‹ò®›C=Ô…;¬ÃÖ! òh…wv‚€ÛÅ×ãTŽ‹Uõ­n tš‘®ª³o5S%Îm>kŒ_7˜ø>ì^ì ) £yb5ïEn¥ÎQÆ1Y¨®˜½ÐkMÉ%á€n‰
-qÃ!¸^\°8Ê%zL5çÝŠË_ã’CK‚ʇ Þg: Ý­CÌý‰!-MÜC£Ì(ÖÑ'Ïâ[-Ÿ—”tAO_èÒ 6u!H[>Ƕ’óå=é†Þ]ámæ'ã.WÅÚú@Î…vñŠ) )oÄ%™'H د€ª÷ôØé¢U‡l7\’£oÅÓaÑ6S y)ô:(é„h—Š<9½BÛEƒÐ"ˆ*j0Üýbpèÿιo s™—Yë±á1á3ÎD1‰Ž»–ƒþ—«ñ
-…)xè$gûß]Cç8DÖókͪ0Å£¬©
-úÄš¡ñðñ!`˜ÒI‹\¶B$ô–ÁÙè<$ØçÝ°ŽË»JšÌOV_¾801f~/FV #1¬-|ÜŠ” q= ï9{-zÅ¢ŽL×ñUó”`2 R¨"Ž«K(a‹z÷ ™Å`<aª¯¤¦lÎ 8]RÈïì{éü+‹²iÈ£0Þ®Ïs`!…©§ó6ÆfÖüÁuøÂxN rùÍÁKî28á R¸EøØLø»µ½Ž+‰µ).%Ƶ-‹¢B{ÑPòðS´+›˜Æö—"L*ž‹X 5jkÚ__ø›E¼U“AÀ½µ ‹KO*ŠHß6A†ÂöN€@v¶¬A—
-¨ÒÁÇ™&H°ÙAF$ãD¡;†Ö+‚„½ŽÝÃÄÌÈ-)/çî§êøÍ<åKIà¼9\CÇÚ»uÄöŸ Ùû4Xæ ízTØŠf¶„¥K=p˜R;[9<rþŒ9äÐÄ͹îu
-æ‘¿Ÿuxfˆ~¥^¯ä}%H&²õ2ðxóA•f4²ñ€Ÿ»(cªxQ¤M_Œ0¸¬ò…qÈÌ”iÆ-"~ƒKE»´}Ç?qjw/2Hœ1Ér.Êõ:f®Òœ“Ãghí’ª¾¡:>øƒ¹œß,ïŠ:VÞ”¼øO½:…UT'ã.6í]<‹vÁŽšñwÛAê=Ñ((«ú¥èó;Oðǽ¸ :Ì]õJÌlãe±hû±  €P‘ž™ókͪÀ».dÀâ@…Ö´²K7u
-ð´›“Ç&®ðò{ïÄ#j#¾€’*òNÞû^g2þhz¸IÇÜÊ:YÓ€-¼ìÿËõþ¸(ð~\´î×®B+Y®û¥ès•Ú€£‘ýRD‰ŒÜOn›[›‰&Š2œÙ…÷UM%o=Õr ˆÀÙæ0#ÇIq~ ÐÊž#Jx
-r†¤mWàfH[rJ‹A^*H/ºÎEšû<—ðƒ¼íJgµÓKÀ¬»llÙ%šè*WROÇÿö±“ôš!iäƒ& %™Üxf‚Ǭëwøý+ˆÿø1ǃ€bœ¬Ý|}à}™ÍÚ § šŒâƒ]ÔÈ< f82š5[Ü µœ‹g‹
-(qEK?Cƒ>‘ry±”ÞÅ® ë[‡ýD«éŒÄÁP$éõÕbˆÐ5hÁ ÐKÉ,&wžv0x]§¬­Lº{J2§K¥Œ¾Ý1%,1å•¡ê¸78@uÉrVÏVt> ‡Ø&X[eŒ
-kš |È7¿%T7êþ¦$K>xΆ¦ï­^ŠìÃÁ±&ÖqšûÈ\ I2Ǻ$PÜ•›f€¹Ê¿3Š1¿Ù5¼| ‹ñ˜À„QÁ8E’a˜ò¡Œ’§ŠµÝ`¸ˆ’2,LÛaÒÌÚD;–7<•Ü™é©è×›"ÈðÅ<vˆé¥†QçÄÍ-ÐEkÕ—šÃA2{ [‚p1ä2É°lØYV¨€›¿´ö
-’:ì ^W×hi]P%œŽ/¡ Á'lãÐ<°nA/EØ!±†ˆ ä\ŠºE)Ü›!2´“‡ÏáàЪé]LšâÈHì’9Bf²˜‰—0Çq^j¾èëçwDxÙÓÚ‡$(-‰ŒWdí…ç‰÷“V÷)û‹õeü/[˜sº……èùÚvJx‡QÕH'7øOŒ…•Ú©&gžÓuXs[Ñàïéâèí&±—0‹iÅ¡‚§¢[T Jö¥”ûüí"HZâíPe»—"ô³?D÷µ*íbtÚÑ,IžéßØN/á
-2Кò!fÞ’©æb}œDue1Å5Á¹ÈßÁ,rk„4Yâ ©Î]ˆ ø†—KÉï Š†ŽÐ`r+Z%83dמƒxà;%µl¯#ha æòÜ
-{G"N™¢Œš_lµ¶gg08âRØšÿQ^&éuäH >AÝA'xça­^ú(O÷ßö2˜.%™.¹wµ %É€h %ÔåDF'aòljéqX‰ˆµ7bì CÏaÌ$ t°=-š;ÈQ/”š@]o t;îzÿdDm’áy+ÅSéãbû514·ƒ‹¡4ó=Al¤8Ûm˜£vÅ“‘°Š²ê—àÐ:ë>îIS‡ °¹'·(l<lT^NÚ¾ƒˆÆ1h}<Ì»
-Ö,¶«ÎA¹®¦˜Ä¢ÅÔšNLäNyy=Š¼ŸäC,!‹<)kÅÓŠfõ ø?vÕRz`àyü ãÝd¼‘'%Rì1'Wý2vˆî$—zÅc–ØÜqÄj,Ki¸Sêv"CÂoÐåž Á' ³!5«aÅY߈·Î_”'—$Þ¯“¼‡Lžš¬érÌKÞ®¢,“ N\gŠ¯{%Ê
-Àd‘§SiT|:~‡®S¿,ônG!ù¨1ÛáTV Lz&'~jφ%®jMq±g¨"Y\Šû;¿†
-3p{UÏRr4®]G9hÐÄmk_‚ƒƒ•$Ú«ˆT
-‘kyE”›”Ð[Ï8\¥#tÜïÓˆ\à ì¯=@ï‡ËÜYþ¼ØJ!ˆ–h©ºê ˆ1´’ˤ«ÈÌ›\•)-²“WAe2³‹nã7Õ¤ ©áY`ä¿YÑëU&±ã
-G(0A{•÷–A (vˆÀjÆ6N«)’rŽïDm­õªéi €ÇÐ<rtlýü?6IîC¼°ïà¯d‡¢†„ÂâoÈz4Hb~"*ÉÏã:
-'E]C8î?M ôUûõ‰Ý´×Ñ×nŠ$Ò«´´‚SøQ‚çùÒŠˆ<TäK˜0¦¿t`é -:~äJ4ó$éFËU8UW£Å ,PÜ2gÂÞÐ(jU²øüçŒùæ®ïŸXðÜ4s¥öœ]smÝ®DyP.˜ŒÚ§$K À.ý7f ŠÖº„ Äóã  Œ‡žºÂiBÈW‚–s"ê«ÃsúÈO,§àW$’všþ D GEq½E"é,v}²è“u–³g⪙B¬ §™RÐØÚX¤ÊÜï˜÷Ä`“’ú`)Ö\JæA´ k<­Èû³›v-„‚}¯ž‡a‹ô³þ~6“×å!“ËtƒáoEŽ <[Y¬ç`±µòPrA£1G,Å·óg
-9šüÀ:HÍí.Œ.ub°s›JÍ8m‘†ÕVÓš2>OâgœÃ>[Ëš¢?s•r¼ eXäÆÒ¹eä€P{]bÐÈa³‘wLTV¢þ‰¤èÚläŽ_ˆë[žÞn+I/$vŒp~tHÉ|c+«¸·Ò¡Ä^–ˆ–©ç÷úoò¸·ñ ³bƒv°Î2+Nq‘Æl‰Cfa^%äóhoÜÄäk}……¬µÖ³nÕy”8žÂ˜Œå Äf­ cªÁ·9ÙÌy¶HÂE©8"¬‰¼Mí ô¶IQ¸¦k¹­DƪÓÿy‰=#l(:ayB-ái𼵈n“D¬
-~×8Ð=Ïžd¯<ã´)t«1u(ƒVWúž’NíÜÒ¬ å‘Y­ÊÃw yÑÓ²µÚÀ>ã¹·ïuBø'Ô”(NAÊŽ":í9|b‚uÇ»´ïš¤±ƒUÝ|BÀ3ÿQK͉çJéMŒlJM³ˆáͬ˜üÛ;”ûý
-9Ê»1¥™¤Kl2EÄ#‹A¸`¢hmZfá$U† -D¿ ”LJ¥"U°[ Q†,´¡+kÖú ‡ì¥êƒIòB_;1‹ tãÚ@Øàk-­“Š‹†¤™}8mŠ"Gµ—ð¸ á’Ð0;ÏpÓ› Å³L ›Ý'H¢ú,¿eàr­ÌVxÌŒêÕUæ?uôwß›,Zñ{ ºI«ÕPWão .È]0#ÒD­ó´ª×¶Aoª͹7 A¨ “!é4ÍÐ ¡Ãæìé …bá@ ý
-É,ž
-žüÇé.Ì#b×ÆÒãñM@¼ƒ‡®âTiu« SIHttö¦[}ÝKÍgŸKÝ—tlÓ ²ñ½Û§ïÜ8³]f£ÞéMƒñQ|Er_?Îsà~Á°y©òÓç5t.ðpä¦åƒrY?3.æ '=@¿Ž ƒ^ìÇÝ@ïŸÜÉô"bDH:ÿiá4¾ Ä@¤ I™‰ØA‡úÆË%ÉŽ\‡¡+è=x7ô¥¤±{Ø»ð´¼ÿièsíÊdÚñ:âùVJ$€ÂÚr&@b–Cµ¶jýÈAQ¶L2Φ%ôöõôbIál–$Hº øR€ö|ÀƒÌÞÖ¿$#\Á&ÿb‰<ÒÏÚBþãë_̶¤@L²±¢'¸fx@d¹²8Šž‡ÙZA#†ù—±‘d°æv~}zT#˜|Ð
-óáŸÓˆ%FfY³²ú`kS¯¶!ɬ‘V ÿ
-¡ÄQ~àp¾>Mðò¨Ø˜çÁÂÖXìË <™Qp%òuZÌp@°BûHoµÅumþVù‰[í$/¹éyÍ3ÖPDm8dˆííe‰Â+…3/»ˆöê‘"D;ëòÇT ‰ô¯­S¨¯a˜–ÎVö©ëR¤N¨Rõ‰#ŸzÂÏA“LSRÌÜzÍ7!wé@ÈO~‘HKÿÅAù ů»61uœ´·uNËJJHUhΖ³ "Lc¯S•…¶²ÂŠ w×s¦À™ˆÃ;‰| ÄçxAë¸dCÚ>@èÝŒ÷¥¥dkèC![öë\^ò%NŽ÷ ³ˆ…OUÒ+ÄËýÊ´‡ Ìßi郫¡g䄱ÎúYsf"%r!®"Þ@^}x)Qíq¥/ƒ<¡ÿ›‚/¡Ï û£ßdžø¤ó¹i¦9Píñ ó€Re*!¥ìê<º—+ÚËâJYV Àédу¨iYÆ,#­õDìë9Ær0æê
-4>ã¯}¢=ñ#¼"QÐÐ}/ÒwR¶z[ÊUŸ‰z5á%DÏ—æ—X(5ݨ¢äŸ“P†›ëÂY_çi’«´÷|ÝtþòHFÈå6¬Zydâ ä鼺ê<aÙxf)ÌFóuž´Ìäp4SØŸt^»©þ]`ê¶^”^Y¸Ñwë5y2>!­à'\2ÅøÌŒŠwEF:ŸùºŸ“±.%ß·5]•>¬W Äq¯›Ò‹„ÏC놫ôl h—Á¥ä+=1 ³ñ$ôWŒÓsæ†Å†½€n¦¯ƒ÷@"{Sð'[»UF2ZƘÉá¨Ê­[€´K N˜ßu Ñ"¼5èQ]—BÚBöšâèüäÕ‡TG¯Špá)jÝAŽÎÿMÀ§ÌûWÈòbaT
-¥š+ &ÓT¢V]Zï€z" §)möÈHâG›¯ð=袵² $ šýò@xÊ(E$ƬOÉœšr…å2ˆN£ÙoÛþTËÌ‹ â@Y —áÝ%ζ˜õŠ@w1¿D¦‡u†§<ŸBB}XR—
-Oúaꔘ¨-‹Ô¹¹Ö¨k? |JÎR”W7 ¿Q”ô°Ÿ:}¿g1Fâ£9a§Úû19)«áÃçK¤†‹=IÄ^ìKA‘Nˆ2¨DŒëS†"1aËÙñÊ aǸZ?†mlc…jm4©üMλÀ<’=‚¥£×ß@—¾<€Æ`†šbÍj7Fí€4<u©
-§ ƒÐv¿Í㺾!M
-’uD+uûј«cÒ×: &\2zRÇ;æccÒP"fšöµ]5Ez}{Bl°PPõ§wbgh\
-.³'à´_ïF³"ª4ÆáÀ¢:ò.±|m#øù,½uÓc{D\+,Ö•Î /]×”Áò¾L‘T¹ö…ÈŠG€ú!iGð°’¤fóKDxäµå¯6)X\zk^&=* ÔŒU‡äÖ›ìÜ]»çŠŸw\GÑ
-•E:Yö§à©ì1ˆûSÔ!’É’Û‰¨,…ôX¹ ùlgûK7 ‚82ª¿Ž)ü¤¨©1ñ"4
-+(°‘BwÓk%p—,¿?…šÑbnXN*«»¢°ÎaJ0'èdÅeà_xüý½Ò®>}U'lǦ@‡r—q(ÏjÅrÕs~’ƒ2ÙGÜDÄÆ1 ÒÇ”\!X•ªì$œ¹A´” }ñMùŒde¿ÜQ_"&2Oìgºð¬À‚¿øEe 8ÌC¤šÍàjX/“ùt¢‘™KÆådªQkÀ9¬[ °#¦“%ÑyÅ®ŠFäõ)8GÁUG®æ¬N›IIÁ¦F€=Q"keOì32Lý|êâxŒ—(+ŒuõMò/­
-MëÈTZŒÀñowÌcŠ¥­¹;%Xú Vuf"Gõ™?¢ÌÔþ0|† ÏŽ{d > UK^ÀX^C´™™¬ØCÑ°‹s“þ94‚"PåNiŠ·AÁ2Å¥û¼;õwL5³)qpŠñ`î³ÔÝI*‹%)RéêfJB&¬
-rÁ\M‡¸ä#´=ÍèãÄÖ£;óˆxè^â„cçxÖ6ë"µD˜PÓ+¦øÒdKçé LÔ¨2½(7ŽsÞ…n#:(Jß›ÿUMÄhïê .P+¦•hX4[fD âÛ
-ª…ãøÖ1ø¢:ó?åe’]G®Ñh^ûf¬jžÊûŸþ$øJz‰,¿_ÝqÙ!& "lqgððI~Š©©Ó s 'd‚#YnBỉÅ„w7DX‚íoÞ8 &AÑú‰î!{SKB8UÉ’”»2vA” €ÌBømèÊv 懿~½bŸ„§ò ã£ö°£Þ$jBi%Õå×#aAd,Úzž “D‘نŠ8MkÛþÂ{PÜD4ý“-‘ÿÂóæilà¦èŒ¸úˆè‘„8”<zÚçÐ)¤¤¦vÑÐTUyÎA¬/‘ôµ@h”oN‰ïµ‰ÌÉioâhL¶4› ÿ`ÐÑÉ•o>ˆHF¡øv¶–]0ì¼EzŸÑ¶Ç·¨î˘Gâ.òuæ©n `¨™íš×Îœ P8A5Ÿ`+b£€P{×O{ƒ¤±çâ[€62F­ÈlïœDžԧyãH—~{—yâó¨+ÿ.Ź²øRbèß;õû•‰ù|„a Œíˆp¨_ûãb2r‡·PW¶W»U^,NŠ
-~íûÕ`+Ë gÿÈ,gÖfǸ”;4‘¥lˆ=Tß³Süˆ! •Ì³?•àÛ£"Oyä+^„¦&hókAR"BK±â©0¯$qa¢!F#çXIÝh7¥Šl(oè©ï_7 ã—1®VéÆS‹ÓdLþb¡˜„È€oE®º ¢Ïj£ƒ00ÉÞîC« óÀëNò¬”Þj+
-lBöx„{Œ¨¥÷‘Üøµ»Ñ‰¢“x†¶Eꆎ¤â桨4xP­0Ì%©$œ@ÉÈû¥\l‡[qË„n4÷yž;)¿ÉZð†ÿœÍe‘Ì“Vdä£íMU®1_fdðÖ?.H, ™„È:C”ûÜ Â\†ó'²¼ú‘?o>÷HË'~ ÿÈQ{ñ@-0jö±„6ÉÒÃŽÏ"ÙÀ| }ihLÓœ´RÅÆøÑ–]íñwf:©"X _ö)‰øÄ`”Ý…–œéœÈð
-QáºéŠ°ïÐ"f‡çÍ)5"(’°s[¸³`”n§.
-ÍV`±Ëp*«s#’†^äzöDž¤‡
-#‰LÓ+ÔïÚð£šïÎQˆPNÅ yØ@è¦qÄtÒ4™Ú†œ+©Z åÐ"ÀœV)W?3Î.U%ËÑzIøB40eæbt+´ì³ˆ@/ÊZÛƒdm„('‹}mOH{ŸeÞ”¤–=Z‘'ʳ„aøø7!ýXy?°Ç %¤…8§ÌKo¡¨¥°<ÒkØ‚H!Ç o•yò®ò
-b]cQœ0Ê* WèF’)û\/Èöû¹2SÚàJ5zÈó‘‡h#¹ShBÝ<z‹9ð')­WŒÉ­ž8H{'«ä’LÄ.ÃÔ1ç…ÈTîÞ¶òÀÈ[¦l\M”Íλa 2È_!\¸.ÜžPJ,¶‹v~ϯÍt‚sÐƉÖBͳ¸>3Þ¹|b>G;Ôá}AbdžO˜z$Ø›†6¤ŒBã}ûK,D¸(³šÆ ¦^;Á0å}N"#-«°Ð¨´ùŠ@%y^(øŽæãÍ=iò× ˆ®H)#ÉvþònŒA ròœü‡£›Ô“ø•G;Ï~*ŸÌª“USf[h¿œ\ïÚJÏ9Ã;gV0ú|ãÀò‹*>Î
-ݧȑ\Af=ñ¤
-¡ÇM+rÀˆ®Fxw#°×ÏM.Âp{Žì Ñ-X¦?ÓºÂCû†Å³ÖZDÚŽžj¥Á*ûùTˆZhÚ¤J„Às‚¢b>2PG×ÞºE¡ª­튾N0uLM˜ýŒæ¨¬\ÁŒ3A±žÑ¼€$‘…¤[i¿*`䙜zv#ŒŽ.Ë)‘›£m•½†x,øg„¹¶ábwµMsWüíM
-[múø>=TÉå®AÇüÑ t¨ñ#m¸SÉh^¡3ŸÔ0ù¢ÒȲÈtW6õ «@1QpåŠg9x>§3ZÜDäð›n
-êI#S¢ZȬ·•º’ÏH‚Á´‰’äjk
-e$5"ÿgV#Í…~ŠšŸFÉüDíó}L‡+Ô4ëIÁî³nƒÃ„p{Ê´!%…Âd*N›tUÖ
-¤éŠù¼Áh$˜0îܬØê7«Nƒ2'„qÿ‰dÚ¯I+öÒËhL‹†(c!ÑmÕ"A±Ûœ6Á¾¬õë÷þ]Ñ—PÇð™ÏïðÇò™Ñï:õß—Ї9zæï@H?Rõ=Y9¢ ‚žV7¢[Ë࿦/=â7nNg£ÔlA¨º\Œ4eNG=©<­­G…âûrY6ÄÑÊÙkë &á¹îsäe’€cñ;*¿7%ÞîC
-[[¤­ ‰è6±(°ªÒŤu·þò¨˜j#“Dã°‰ÖdžNàå„ÈÀ¿»¥=ý‰Ò·¤‹ùÖÚ軜Óú«[rÁJ„"½*üs´f@„2>¬›{ˇ^¹ˆfÏG€ù(ÝE~^íK´r Ò§Ò 2Gƒí‡:©¸kÞ"dɆà#ÃÓ\%ö'‘ 'EÍXÊRÝÓ~)ñ‹ ºW)9õðâšÚÊ
-LÑTlÀt|d”Ý­køK
-¹’B@·áOÓ‡MÕ°ûá/Ñ-,Dé¹þò2G#7¢è xÙct`_Lùãê
-y¤©ûë} Ñ3,d‘-ÓäïËÏ—Ù-IVÐõÜæ'‰¥"®%Uÿ;ÔÔ@ãÕÆ™D…æǯ‰¾y!~A•ÖlýÙÄÿmð²PNa°ÔȉN>}¾HoŽ–öÊfR
-üeŸ!Ê„‡tá~n a\škØSû, í…ø{ '|d»¨’ á3‡Ç«qíbG Ã
-t_?×ÑÂ’¹tï¾þÎK¯ƒz_ûÆHÖ|2Ix.Ê:l ]Õiš¬Ä­u]‡Mq°§â(õ(9H4Ãk+¸¼F5‘É¿÷IT¶ÎÍÝϤÉÖ5µÆç^¨N‘û4¡­c2«Mkr«•kÂ"ËlÑM>Ñ<™8P+/xäˆ.òÙÇ5]“mw”_ˆ~¾ ¶‹&cB•±žO#W@eFˆ«Ã&ôÒ3ÉèãK¾•’)Ö æÌåAÝÀ[û›%S7<€Ð—Vì&LsæïêÕîò,­'M¤Âùœô«òûäÆ4Ù=*}Ï[i(Ÿ%‚ýz†˜Ëð`DŠ¬M$b=l”c fzÁF‰Xïøµ.{u°Q
- bM½»Ø¸$ôi*u¦]ld/YKdO8hùç‹æ‰.Ü‹³ºØ¸$±Pá—w%Éì'|ö:Áy`£D SMÚ…’»0I´Rôšø¿Oø'6J
-ÉPtXë\76JT”ÂÌ.Õ\lÜ)ÃÕ'U=\lÄ߉,ÐØÑó%â³,¹SAñ°Qª€^àW“G·â†FOódÆ[s—!· ÌÞ˜£‹ŒëÙj¾=Bò‘Ñ)ç2®î#䌎ܓg+nÖŸö´Š¿#à´–ks«%˜F•²‚b”Ï©Y Ü}`
-?"´g/..JÀ¹,ð{¸¸c˜ˆ¿à¢#ºIÐ ïEO\tE?ãâò7\€-#†äÑâ²É¦,ño)ú´¸šBê¥kÕôhQ’¶†3E;³Gy«¿±tx,„òB‹Ê'­Ì¢2쇺IúaÍG%aA¨ û‚‹«¸ø0Oº’‡‹’ôªðÉ“]^¼ ðÆÅUp]ÏËOü¸¨qlkÒç...g¹È¤“Ç‚_ðÐ…‹¼˜ñÈÁxv¡è‡+º[êܺ7ÕÁªTš©§Á$)vë/ŠnrrŽû‚híL@#x)Oþþ"¢L©»!ò_‚Dõœ'x”¶_'Ú+gÝ-HL©GàeªJ¯ u»†°ê
-X³‰­X+"§o˽D´èº!Y¾,rŒãäà !Dí]ô¸F&ÂÊ0¼¾Ç
-'7ï ¥d™¶Ïe×ë%bµ›\0(2¹ ˆK÷jζ»þ!únáYMš6^?DK¡qhÎvXÖRÀ;Å/‰h:j†D–›`Új™ÚJHTÎ&d™v&# }{’ue8,ž£ V¬V°ºlü–°#
-…àGMn;éÒð ! ç$eTLwf“~šŠUßIWÙM 9LòÙQô †ÿô3xXFrª¹ãߨÍúR¿¬ã¿°˜ÄËw1V¦¼gT?Làa£ÖiÌ‹3QÍ“Úë»Ê"1L–|&Ô2׌šÕ4@繩ž¾2bñ”<ñ™sÕæ8'Ѫ<—}ËÞVñ€Nw<!I©­Ù4ª‡ñ§zZ¦ZÀ½æÍ°%!î¥7¡žIØ
-5÷ZR¨*ph&‹õ:Ð0FBÉç¨ÈK)Í'{:xÈ„Ó~cG…¨2¨A« ¨‹ I¿Ù_$QÔ9 ŽsÔCT(]æ+^²ÞbÝ+ê€4­CÉV«åuZ1‹›eô\sK¢²¯V£P>›Weê@[6+éz`hSŒÖéR„Ôö»Ioh¬FD/LSˆúHy©ÅQøæôýù"bb³^É|Êö&GÃ?IÚwËqË<U7©E·ŒulÚÅö•Åk95lØò¦]ŸVú,䔈¶MÔ;8 ÒѸݞÞ‚nÏî~+3-)I¦fw$vªé0Þ·ï€5khe‰¹*OaËÊÇq›| ñ‘ŒY•=6>«KäH ÐÖ.™…‘™6ÇN‹.œ›Å˜Up¾‘{{‘dr9ÑtȦYõŒgÕVÑ÷­;‹fí]q* f³èÌ…<ø…i=Ì¿,÷äŠf
-&Íün/*5*QZ¹k
-{ßA‚ãpeJ«egõBwÛ7Bo£ ÔD8"R)Ýš{_\W&kŒ=*áeótDyu#ö×aq×…#bròTì7±7Y|B‡QØÓ¬+2Rá„%êgÒxjgæÂ#A/*O¶´“2¬éûŽ f±r®vTg
-³ùÐJFÜò!>)uK(ƒ(*«{©zHì¨,vdÛ{¤zßIX»ô×½ö?ÆË%7r¢'˜«4D},ymŽÒ÷_ç•H5[ÆdklK,ÖgÒ‹{"Ø“ÀãoÐbì
-ÚÆ a~‰OuÚ)Æ,Úóâüú‚ŠÉ©Èy!6æK1ÙÐ?˜Ø8:³·lùžŠ|¬Ù«Ÿ-V q§Sñ¹€4>/± "ªÅµ#¨ì""a´*êf‡àºCРY²*r0‹å‡
-H‰Œ—AŽœ·„Oà;ÌÒE‰¤ÖÎÒ·xÀ[Mî¿ÍÇ_üð´Ú ìîjI$‹Å¢Ïþñ×ÐþX¡!æ­·ÿû!Cõá!n#F·u
-ü•ˆF[|`¦ú2tÉèÑÇšúñ3¯ê~Ò‡pòôùÔÌçÈÿ‚0.ˆåsõàG׋ݺ®nÒl?§õ©kvžc2»Ož¨<ÜïÈûòN˜áR‘÷àŽ¶8ÅêÖƒµ."Æ—Ü>Z› </,tX“äºj<85b¸téïÎák“¤Öë5ݺø”92-z4íÓ¤ St oâƒT\WÍßçm¾´ÞãCDZóXûªù³‘á²!™bõ˜acèÄU* «k•óÄÕÔd c—ó
-I׷磎99Æïפñ1\Úþ·ºLóU§@BÔ¬Áýû*8Üd)­Zɱž‘77« šÝŸ9+È´ w–¸úò§¢ÿ„íæ‡M¾ÓŽ2­¢Ìâ>iÓÇæ/GcV6ú¦öÚ·.yC[(\Q;åÏ`öÔ¹!™éÖbènèœ~ÅH2AFµ×Ü H13ÿ)u³}åHIuß‚¦¡È¸!‰æ24f FW§@„iº8Ñd7þ+ˆl7¸à"F;.ivt~¼nv4äbÁרì ×ºR±ÕÌœn¡r&Ü¡Û„å©ö³tQµçkÝuH¥ND8Îú Ÿç\“h]õŽÓ¥“^ëD2ßè¸<`OcA¾ºJ¡.ÌHÛ
-‰ÇñTNž~_´:´…æ`k*[¸#\(öl3”ÔõgoÁ¤bM_T•Sx[ìB5G‡m!v§¦ò h"NÌŠŒKÃH1¥$T´rž/ Ï[2Ññ)Æ›6("âBÚ´W!<˜ts¬¢`z "i9ÔvÏ ìÔŠÑWÀ-'5µ‰§°%ôg*š=“숻¹×U# uô]s"B½Ð,-™ƒJ°M°ä®9Õ„¡³s>GRæxõ±ºŠçMãSš{lB›*ÚÅÐ LÖ=Â(4KLÚÁL2Fï9ŒZ‚'Õ9Lú!ŸN¯«xk†…Ì—2µùè‘-Š¤³ô}|Q¢“6¨Ñ2žL¥øä1J¼à
--´Ê1W3¶ió£~C'SR/¹À}´¤NÓÒ‚| A;\¥]r
-ˆÏÁ«‡ñv Ó)¢˜Ók¸¾‚.ã—Zà¤.Ó(†O² Ag²2¸Êš¤„29v뼂^ì {`f$;ŽÔ~„ûS(ÅÄjá¶A\×ÒÈ%û@Ú:ZAßÉA1+G™CM-Q;)&©fPw„„ƒNrxA6ËeaÎ7‚ &'÷Âë˜@»òW³àn‰§ˆTvÔ¬Ç8c­#ª¥©WIQÈE`÷UfЯM4l"†~\d¿’ÍM¿ŠÖÏ^0§D[êow¶ y>ê¿A_ Яãuß $™àBÝ3¼Ï#hâ“gCJiµ¸¸dä¶ Öo9C”ð}(õ6š AS²AlÜr†¤#I[nŸ©lí` ”ž`]÷1ìUù«Y{ÚLÓÒê!þ¶!<¿Ó­x¤8@ê¦4´Œ¶ó9©p!È–ñF¤$úNÄF½ÚÓëøá½?œ@È"™ˆ–)|¦x¥LòC›åטÁK
-¯…æ5ðW×7ssK¶äü
-Ž5ÌB‡Yå“0vÊ*‹¾Ù>§c±ïÌ©‚8ï`e3lØuѧ‰›¶!ÖøÃZßK¨™­áývdä5÷NbêsÓua†Ö)=Ç$ëÍ^5t8r¨l[2®ÄL˜n)¡Ç 0Ô4GͬuÉ¡Žÿã‚Ð%ér!ëÜô>s([î „m —¢é\žW½€F™G§óíûœô
-òÀž9sõ:Ï7~Ô…C1´ÇX”ÈÂ]©ë:ŸC”™pb(_“¯p­ÇðË]é¨8.“LÔ)l\Ly´’$î«02©;saÕÜbÇÈù Kdìs®VÀhœÒ¯–ç¸g›ÜªòÒ0_@Ÿo@4eg—äºB–OŒ=[Ô¨'c•ø^({e9ËÉÄÇ4 •ehôø˜ãÚ½œF‹u/^Ò¡FZc­Æ£w‘~’ÁbôÏn ½­*.¥êŠ6¹ˆ
-Ãb•BÆ*ß‘Aéo ¹L²u± ÝÜ9€~Ër½0ÌF«–+•6Ão9™¹=¶Ü
-ÊðBjï0iý™@Í‹é¿V ,R²É\«Vhä0µB ŽÐŸEÇ¢R<[!xéJ IT;eHî›–r¹¢Dn%ÛÕmk$lï q·’.ôgÀó†WC(‰Õ‡sKº4k@‡ ÜúlˆÔ eö:‡+WEÀ¶£ØìTüh±ÚÊÂŒ‘HúZOé:€F.ŸäFéÇ©=q,„Œ|ÄiűÍúHE36#—¸¯ú"ée(3lNcôqWñ"^'ŸuP"è3pãçsØIó…ÊÎå·•ù}—L­IÁ¼ZovÒTídW.w£–)V"¡_ag‡q¥»Ñd)K¹è1ﳩk<ˆ^ÿV©2XÎ Î~Žv$\ ×m*©Z¬Q^:ÕS›ÊIK.ƒÎ<
- [Mˆk
-BÀh½HWÐWªä [Â,¥M\‹U‡–óšÄ@Ð!L þpI-£HÄÌ5v3,AiTÅqg¥ÿ=‹†á¿†¬² ƒ¹îB…&ÍÈ/|#R²™í¹½"®kâ1&š½r“YïŽûÎ;Ƭ‹D/Uç1QzÓéèìãšD ’0p™,ò/ãå’GÑè:‚ÿÏZ[ßÂ[éþ[¿$Á¶Õ…’1›‘ÑUEÈ|¹fùZ¤1Í´Fî8÷,«HàŠ(×oŒ!m¬ª«ËCÖ£ }'9ÒN´÷®ÙŽ‚G€‘pJìäc(g7súÏ¡Iã¢`;ý¯¡ÝÌZ}4çPÖÊÈ–@Õu m&ˆýäVgn¯þôuq\Ãœö›’\ÙXj¸­v^õý+ó„5ðÈû«D¢8ûôkž3MxÓÑׇžbk£0sÞ±¿{*„0d|yÖäÊcB³r9ß fF!wØICúΠóÿ¸uÝÏÁÌäL®‘ÐR温ëŒCºl…÷Q±ôPP·?†ÖñT´Çxl¯Là%Ôq3€Y™U16vHÞÌiò§ERТ$9„i»hpa²PÔgôM‘U‘¯XLh’Ô*´þØAÌ7uz.4YEÊ—³`iy‹~²Q/h©y¸áÇÚ.RuÌüçL!"Œ {¶n_ƒ( ¨bÕž0bNÂx!d;UŽòk>ñø5uèóœ~¢«ÈÅhBР÷惔›x \ÇvÖAZY ¼÷¼èÛ­Òþñ%l þ èbÐ…|î¼ò4›BæC㈔°ŽÜ
-MFEº?Ëà*“ÌÓx¾‡_« eÑKÔ¹y„0
--ò°çÀü­ !ïÁ|[m–­Œ‘:¾…{ìW‰`ÓdµF
-&ð´[¾NY¬e˜¸3û©ö­0Å(ZSðJ@n%.(X»ðRämD!=0"ëñÇE¼.Ã'ä‡TÃØks)ªŠ ØENs'6JV¤Ê)y¶ž\Eë#ŽZשׂ ~ÖFñŸÃË›¤ƒÄ{(–Ybœ¡>Ül—äÎð2y½x¡äýÅ+òî§iœÛ”Þßô¥ˆ!‹z6íAêwañ¨r:E?Øž_¨ òxØ`ÌÛ{ž"ÞçMQ¡^•—¿®’©päÆ6’äOV¡ò”®‘ â5’"pÎì6‡"ãÀ¡WãT4a"š›þâ ¼\ð‰ÙöcÄÓÐUpÜÖRRJoµ–RûÍ„PÓ*š !ò„
-Nðàyû ‚¦/ª»„üÅvs€|ˆí+={E°±F»æ´Õ±ëË`HþŠÉ ¿q¾:_|áÐ˹œ]×Ç^чOÅAÄA
-—£§Wo®òã/,$OV¿ä ×~ÿdˆÿ2]èlÉÀÂ!ÍÈže!(äÓ-âËÙÊÑɶŒŽ’YáU” D5»lƒ;àßò¿0–þÒVéF M`N‡Iˆý|zž™;©´l˜yÓ‚H–¸Ÿ¢ÈÉMrÙ
-^½Y&…jpêäëf¿øðV;“¼|nŽ­cû’ò£Q=ÿ¸ÈSÄ€®0/Ä™1êM‘¾IOâùMàôg Z6€ç 
-xl¨+[x{ÃIÂdë¼êûåúÇw–¬³æˆx4­‚é¥ìXkî{Û›¨0‘DÊÎ/E¿nŠ¸°hl‰)îÎ:E¾2ZUÉóu—HŽš#Ó«$U†Ñí£9|
-£#,‘^ø‹½ŠdÐæûÙå´¤“pZÜ¡ï ýçŠÉ´îF
-Â{ÃR`#þrŠ>Ü"ÞÕHfK΂V ²Õ"™w3M&''Ü_ƒã`XX~1’þ%T õ×6ªóG³élµÁŽ•¾Ðg¬IŸÏ#=oãº`X&Šm²‡ô¿wØð,3H³øÏ× ìÍm<šþYTÂaÐæèÔ±¨FÒ%\)yÄ¢’]—
-Åìbÿ.!`Ôåö¿¿øE¸WIì^þ屃v×Ç`àûexî˜ÓÈæÿSœ'ýhŸœcQç8[ÚZÐ>ÒïÏÑ'ë‡"×<Ë6ie±fe%« G´î¡†ÓÏ+²8ëp}Î\#Ip #aaÚ#
-ÎÔëÉ'_•z5dî´æѼ ´ÚÉŽ0€ —¹l=ß‹±ãî9,fÖÜÌsðë×@õäž ÝÄÄ5r3,¾œç(±„3
-?vI„ܪÈǾ†ýŽ²Î¹ïŠ
--æçU¨8ވͳZT4pAöyrHÚðï?ƹ(K™• Ɇ2Çth(F´ñ ®5›År
-X¼}-Z%¨_¼ ×JÐ-¶O(vIÑ<òƒÒΫeºÀV϶O/Á'{‚ˆø‚¾E¹ñ‰{˜‰Ü þÙæéEË°jr]Òø ؉égS羿85O&ñk×èa.î;:EvƒÁ@H¬ñOE«$äH‰È½[I[g°©k
-™ËT #G·<5*–ÚƒRûv
-r£­ÝMÅ·Ã¥1 g »V©ÀAõ0Æ¿Ôhs؉tžY󑇦2mQÇÝDÔaA™¿+)‰¢Ó†YÌ$H‹óc +Ü.âËØ¡R›1àœÙ€Û¢‡NÎypUÖ4óæRʸ{ ^3¥ý|ËÊ°M!Ï:ŠÆ…¹ÇÙΤã4Ëßo‚èQ§™$uÖ É¢~Ķ½®
- œB ¦„‹Ïþ0^æHšY>AÝ¡åÊb_D µUNІD!r>÷âÇ*3²©™a ÿ#cñç ¹€•Ú$5VŽÙÓëKÐ%ÝÛf s?ƨ[ß©¬Aé+D;”ÈÓi¢{GˆD‰É¼rþ¾¯—`(ä¡ÙÍ$Ì%¨³Ö#ÛÙB3oÉ}ì§ìƒF@Õ2E¹@ŽzqÁü8cs¸Šl­¸ªÁëÒãKÝ*3CB n±Ì׫ÞUrÑH $iÞŸýÅ`Cø‚}§&WJ…‡;©Û=ºÖUñší
-Mæ¯a^Ka‚$ØÓ6GuwܦùÔSUí’ªjt:j¢õ“6:Y]p½IÀxyA?VQÒ—¸¶sØVCÌPš)šõ)´ß´ï¾Z‡,à’<òíðͦ°X[A\:âˆ!ôà´ÉDuûTã¤ä°ÒŸ_–Ãœã ûSQâ8e£î+Îm„£ù‡2/ÀÐdΨ®,†‘#ÃKØa1TèN\õ‡¨‘ zÝú‡xÔ4fš‘ž:·ú}ößÎ óÉ„>¾âT?”­Ä°¹Sw¿[gos*G534n­³ÍPÐËCæ^ßãò%”.SÁ|AØ2ß–A¼by^Ù"c31?¤Zù§/Øt"OO;ÿ t; ˆ' b ç鎎˜´d¤*¥1 †IDÒ6ˆ-!•þ  I'êžžÖu4’(½oH±ßG“²º×à`3Úé™{ú+'ëó<<RiðžKLýi¹z˜‰C!Öéi}¢ß⊎
-fL§ûÓ¾TxÆ©¶2=Ê"fXãIÞ°uˆÊôªt‡ö² —×?Cŧ‚0š ‹`tLOëŒ
-g±”œv°+ëutƒ`ö¬B~*å°áßßN G42è_w UBÉÑÇ™,Ås‰&®·“ß*Ï
-×;Ô'È4q½tÜ]v0ÊØ%GÐ@"Ù;¨§¤iÊb+¦–Áà!ißõ0?¤Y!ŒB?DÅôâ‘b³\¦/ÙT&^™(¬ÕÖA¥ÑTjÆ*l@ÐIˆ„ÐðMA&Ïøð,)Œd}jrã™ –—¨×ÕºÌf!aíf°!‘2bò$ Ͷ}*Ü> (n0¤­q…#}Hé¶Ò0›KÁkmø!Xû³)3㉦A(›l ÷MµO~ø%_nð¾Îí½çåTþ© /È]QÏ®
-´™ó™\ Ë€ZLñÌýˆèN
-JѳZyù"kìÚ>¤„Wj‡Õþ>@Ø4zÃYiGqí©ëIy-ÂjºÂD7Àl(gé‰IÒŸKK 1P­‡âÖÔ<Ú‡¨ h6ÚÙDçå ÇXmnL¯¢‘ìd7ãN>èlÊ!Ý2;Zç»Âø,k¡ó:p°†!
-¦•Â´›Êåxe>©¼ ‘G÷U:âOì "Nx=7ê?¬+éS
-£ :1!R7dó½*r’ `Ñ—Al‘Ûƒ
-]+ïAh(ƒ’ô†"+M2™V‹©™ds±§ ë]â’À†Tø3I„D÷´/q$•ˆZz¼x'ÊÅXŠ+LD’É&¾ÎdÖP±ÆZÅ%lð3nÙþr”Âã:äBˆíÊÞ ^.Ù­äMƒ` E¢‘Ö
-ÜÙãZWmlÝÞJUSN‡i!›F‚5Í¥í­h
-uP3}*x¦;öµe hŠÆ}µæºÓ ZØl?Q¼9ƾåJµm¼9¨éùÂŒ+?¬‡”¥®³ƒÄ€÷£.ȼ .€2êûSŸ {
-òYÐJ]¶
-¢:¼i_ÙnAð³ÄvKÊ®¦hä‡À¾”‘£4uÎhë`?$R
-6×ÅdÞ ÁAMò~QŽ f1 R”Xœö§. xšçº¬ªCØnh´V)¨O †¢\WËv*èXÿ8ÓN𨰢0a¹îû«Š™\Q±ÐØyL4¤Œ1ÿ#ߦÏ$&<²8!2†:×Ûq֋Ϙ˜ù 6´-7Чä×h¯ÀîQ™DĹÞÝi~Qʦw`̹h¢Þ‹ÄÈ'¡
-fµ•Ö*(2ϵù§h@è+É™†fë, ¥øõ¶é‡Ô õ\.ø0¸óÁ¿u¾0ü
-žù.BzepãÃ"p‚¹â½“ªÁÚƒ;#qåݘâa¯._Ìœ|†úwäÖ¯e|µkÞ<„FÅãÑÃÞÎåÔ·Ø̃Õs{‰›¡Î0Ò¨ÇU"µ`mñU¤œªiþ9¥E€ã~"5£ñ=‚ûŠ¹3/r¿‰ßPí¾
-hÁËu«¡0ñ7î`·Éìª2`ìî¬'jÈÒ4Æí–4ècnó½ÚG ˆûám‚'…Òîä<o,%
-ã †<KYÕx–ŒIÉóTÑù"ˆ€b7¿;V ® _
-³-ï{÷šÕhèÜ‹JGàLåLo5àÁõÓºí¾ä*•Ô ,ØciùœÏT¤3ñ!CÜ‚!øgu’ô¾ ÓšsJ
-ïl3—ÜI)
-!JüSbÊ‚Ç{ÁnçHc˜yj¹`v….F
-D6l÷¦KÑÅ`{—ag%•£Ã=j+I¢+þ.(>U9­y„+ýkPQ›|±?¦Ò›Bèz
-)ÚáŠ{-2Ê‚ÓÔ§JÂÄ*+¡ðŒ,"MšR þúE#㸵<»Å€ év™"5nÜ6çvPkð©^J¾`ôû·SÑíAw\a ªIÿPtÛÀÓçþ¢èÂ
-çåºýòýAÉzá$O¸ÿi%2Ÿ£àL¶ø\@”öœBà ±«„—€y»¹ ô”X¬6´áöÎ…å%e§rÙ\¹Á
-è*’ûØÊ"Ù'ô ¿a”(—¥‘íœuã†ïOnJdxgQÀÈõX‚5}Á` ”ö§nEÒüÆî+?F“ÆïYá
-ä›OnÄ{q›{ÞQrà˽¥à›ÃÐi*¹is`´N¥ÊRÎ ½fA&g«_Ë9æ~W@—A(„ܽD:ÚØýÍE=Bsá»ý!ÜcH.c÷gãß`é(Ra£5`ƒar½žJ4X´‹ ÷"ÈSLƒé•i·ÁÓiÓvû±‘/g|®‚¬Üd I¿ßË€/À¯ÃLÓJ”ÀX›BŸC”Ý„È ·nñDv3f©Phs„¶ª`c,p)9ÓÒ¥èÇC Ë‹¹°ŸEIɶ‹L—hW+Ú…é‘Vf…t8°ènTJ¬Ùƒ-KE E–”ï6„ 4ƒdWÀD\fgd`BR)þ%’m‡ëäša7«Pì%å@mùPâ_Âdhv u>‡v1n®Ç•Ë¾ {¨³Ùs+È
-Á2›„
-#l;ÎçßÞëÒ˜¨~éz®ÓÄ\Vé`5­$ËâÀ ~(),;4ZìˆA15xî¸}>ñ*j&¯J~Ÿ€b-G`DJ…srÐ^_Âɯâ/§W²S¸Ÿ F¤F þ)Ü¢ÎaÑ|žøƒ ³wÑŸžÄ ýv<¥#B¤­†ªíO $N‚NüS¹áohZ‹ö*QÛ”:ð©á%ìrä H+Ñ3.6+J¶³ÀøN‘_éçsPŸtæ ˆÀ×Orªi$„‡¨Ñœ~ᶴ³gy4ûJ‰W9™âW¦ßˆ‹Tj²s@çC†Ìlj3“Íb†£{I#QÊ2ìq2[l#íîEüÿ'Á‹Á¡Hù´+Jåißbë1tgg‰
-l7¬¹mÕ„“ê0÷±os/ºF’?êïò¦ìî‚`Ò»éïÅÀþ<”œÜrÅÙ€¹Œè–üEwûØK©÷^rɼÐr™_Õ3¯JY0—vV½e^Šº¦‹kà´cæ¥D°•sfÌgSU^Êf¬(&¡=d^Ú·xGôšΩd¿ÈÈùü¾ò%óþOy™$בëPtµ‡¿‚ì›±§Þ…§Òþ§ÿ\|¶2™eÕ QÄ$Üî>„C潌ûTÙ ~¾óì×È«—3Ù‚²Wðb…Šrˆtûöd¨XIÄ'¡?µÍ‡S’˜"Ãi©ž#oyEÖq ÍÜ.òyË+ ÛU+žoÆ$`>F‡­öN\ï¡äŠnE§=ϲ…<+ÖÊ(º#ïð¹oï_è⼘Z$ÆAÈ a¯ Vl³Š&OƒøÉ@«áá%¬a5Òèö”4D’ep#Y‰‡&(°9Ú5T ÷NêÆE|š¯=ɹnøúT”Œ½Pòº¡Œ
-àzV¨´’eâýõ¥ˆ G‘*$pª¡"‘cqˆ]Ú!ªô¤›%½y îkŠTz<¤ÔµD‡"bR›äIÄÂv+•ɨ‘üZêö-,Ö—Å6_$#’zã~cy¿ÆMCw¥'¹n~ŠÐQb¦,©¯«Cýì–SãKP:šGÙ»¯¤Å
- lɇ
-ÿ¿DÖ˜Õ6"×cnó¾_æ¶7§GÝöïÞœÛß:|Xó/ƒúõÀ[AØ‚À`uì-£Îû<É$wÀÕyl³JÈ,¸Š$}Úæs.È\Ù®Ž©ÆÇB–e<ÖnRbÇ »ˆ’±-ôº;‡í!ïLv·…÷ÉßÝ%;–gÉÎÑ‚Ú:Cbµ°ÌÛ€ÒX°܇osQ
-àb»s¯L3!$zäM(Ö im÷Fk&Ž–ìRŸÌø`ëÜ8bÎåçÜd$ŽP­ÁœhÛà+…бQ|+ú2÷cÑà$%¿Äy)ÚLj*a}“; QäMròÖ(×ð‚Vw M/[8öÃvZbEò4¥Dò¡y4LÆæ@2„‰&åGE¾åAÖƒÄ š.„s<„µb©XÈÆ®úM§V¦½×“_²¿©FçþI÷†¶ g®/­5•Ùs£°;“6JŽ€…5°S6£L—~9rl6’<AÇ2È•Ó½öþÔ¿#s dž ¿Çž(lµ“]þô"ö×ö˜ãz*êL‹{sÚÓ z*ÑÿÉ@È<aF%â¼)ŸÏÐËSM[ès>3V£gàÃAŽÎÁŸx¯h—¢áÙ3Ž«.ØÕ
-áÐÅÿœŠnÑeÁH]ìÌB»ˆÏñ%úäK­‡‡"\>ÊÁ>B7vmX'Òû1š“i’EnU†qX b@°äJ§¸ÁV<—ÝCP3fæ7;’lHHçQ@œ±³½M¿*°œ5@%ŽCÉ/Û €C°Dˆb:‡tPŒ;ÝözA@9·[¿’x»¸Ÿ¬HZãþRDNø›0»·8*šfþ­vW4ž´b(h©dŒÚÚv½ …¤­C_DöÇ?÷’Ó´9Ñ«˜æ·‹.Øûø@Ç™µÈpV.Ä'g½– Ç‹ô'gÆ…¤•†‡‰gg¦Ž;ß½âÔ•U$fª"òj¤—­û9üKÐéíŒcJè!S„ÛâŽoE§y©)LŒïÖœP|¯¹‚¸ÈCÓviz9ƒ¸,Éa1GŽíÄdÞÉ0!õvñaWô‘5A8ò"Ê|Bq–FÊaÀ…õ|NFö;MÈi†|DqF§¡ÂvÙ!'³€Ð2¤RÎ(Î/ô¶² 8q†1«Î«4ØM±O@¾&ž^ Ù¯¨¶þí¢”ÿ†Ñwfew^0ÔLø!EKËn¸°,ëØIŸV„*Cf¡CÑ*á>¸Ýyµ—DºÖ¦v+Q:€8iÃΣ|˜EdÛnC!Ä(Ž³™f4T´ };G Àl±°Zñsøœ ;­ÒRbÉضY§•ˆòQs<^I6”[ê
- ɶƒêý©[DA\ëRÿ–Ì$Þ±‡õů’©ÍãvÓ÷‹¿ÉYË„Û_Ìæ*<Ö—‡(Y'ŒÂ"Xÿ-@Å´´ò´‚ÿ¾Ê?~§ÉøŠq$!‹7 öéû¡c¯J:zñUÂZ$¾¢§‚˜y!ñŠ¢!ŽÓvë ã9ü^zœ²A+ÆÎYÙ­7æâøˆêñtüÖ†Ñe ]Oí@l“ësÉ|
- ª@"?!zEF%õ„,•Y%š•¸´5÷%LeˆLñ½§1B#·nÖð’»VIˆŒ†¾xêb{*1 ì£Õé¡D#€Y€D™ûS—¢Î:±„AFpv;‡æIhòœÂ"'ÍN+)r†¬XïŽ6Gz†½1…$øÝ´“Çá7vgs\è…‹«\ à.„iª[6I2.^ŒQžJÎÜt)úùPDtƒƒ€„dÜt(JÚµ.FÝܪ„úë^”øðõÃéË:Øõ)sA•Â°Í¾ì5îË?Ѷ±¥wC4ZïÜ ¨ÃÈ€K÷èlSˆlONV’ÑM¾çŽK‰Jy@T4ÇÓ1hDªŒâíùØ©ŠÈÊyÈÑÕ”]ݾ !Åö† §§
-"ȃž¹Û`m°CØ*züP‚ FP&‰kèZd-”TÞ™àÏ¢‡"ž%âäYÉïÃ(1ßtdß8ÈË…I@ò—ãæDÆ\ö¤@7}ñÍÿ¹7Í»¤=*jð/ñÎ uuð΀9Êa2ÝoàˆÝæw¤FDWÞM†D«ê©ˆ
-‘„V§7üE
-êáö4 Â`Õ}Êl2Ѓ¿ÂöŽ×c¢8<K`çðc0ˆdPR¦ó~–“ˆxVÒ–€bïpXö¥øb‹ÐÏÞçε_RÐ*a…:F!†÷¨’LiÕJv/áI].Þ+´(AÛf‹¯5C$Ž Bí7\k°B´rÈÓ>„,`ZñºÝ™?à1*Ì:a«Ü4½²U“#æ.ÿ±ïr/úSZ?¾£¿–5Gƒp ˜(ì‚.΃=b{°K¦ïEt¨ö^Èn cí`S–+Ð×9ÃXôŠ&“­óÚR¾ñm¿iZ¡‡¬dÜòVf&z‰ŸIV#x¦I¬„û²k5»}%ñ„ˆ¢´>÷—&º[ ó”8á€VÞ¨3¡Nh’•pë®>ðËb%B¹g3£2âàlìE1ÒYÎoQÏlE".v¶(ÑH‡a
-÷c%ìY¸3å4äÒÜ+WFɬ™¿¼0Ü,«züå(ß aG;´t(ªÕö~yÁ}0¼‘%àã„Kïï“гÔ
-7#ú³0
-·pPÏÖ‡’/ë¹ú{+:íy‚Ôá6 ü€9Ý¡÷ÆË$KŽ¢'Ðúzœ‡µ¼Ô-¼mßë$XíÊDʽñ“K“Äñá|îA5pçêc‚òáÌì|(ÙiCF@‚?Y@¶°­¤iYo.N!,j"ÊT^³õFhD°ù"öÈg³ÙBù#\ER»® )ûÞt5ÀHt}’ö9Xȳi]³ª5¶ËQWÇï¢õ ³AGÌùU¬¹Aã6D‘ìµ81Ÿû:s²@qi+®Cò*ó–ñÍý-ø’‘ȸÇ|x8.€Ùº¡i¯‚m!G}=gòÕ3]Y\Ï$/vNàÖX «œ3€^1Õ&B³n…C¸ï§ô¹Ü‘2’‹à­Uâ$“Ú!4=YÀ'ë±g64Ô4®/ĉÈMú׆´I’™Zë>‡sI¨˜ÍŠ°‘
-c©I½œy²qFkc×Ò Òš2HaA´V1ïABm¬·€¬FÞ•訇á與ûô*<Ç.
-ÊlwŒš<-dÓeÊŒ@¦l<§îüÊâµ6È} VHÅ|6PÒÇDfm |ŸÆ›7êQ÷ÈÝ'ã»îìY•.@ƒóÛ‹a©JV Éï•N1Yý^Ö·•Ê$“MAû!½‹!¢l²"Õ)ì˜d>í²RÄQ1Ú§@!ŠÕPÅÜ%KDPü`²ŒdË€å¾Éôà‰„=êÿ
-®Þ¯Þè5kíîÆÖê‰AFf‰®c«\Qâ]¬^rláxmÁ!úÄÀq.£j:^L˜D³-D¿ÓÁÌTÖölKBF°©í ÿ)Ï9íê ŠÆƖݾ@þêHÚ­á¡2ܤ2һ{reýoGúKé‚´<(ötŽ&yPƒ#µÎÞSdCg&.íŒE
-(sÅ{±éƒ%¦4uznì×ýfØê0ÔZ+'`ÿtʹO°s„
-S»al‹œ Õ<¦ S²¶ =¢Âü w®OAÆà8¾Ï}lŽ4aϨv:]˜ˆ³6Ý,Y7pw1/g^6éÀÕ¯~P¥
-Q]öüÛÍò7ƒx{hL.Õ0³¸a³C—™4Æ£aX¶Nß-¤–)J Éõxp‹5~Œ‘fg×.ac`B`ÇîÛ%e„m¹éÙ…µ†:™‰EåÓÓ9ú(ëRrB*½Ï3C ¡e;ËšÖ »06ÎV3|çS4ÔÛ#í|Fç‘3ˆàWIƒ”
-‰–§Ñ ;»,-Êö§…p¨¨œ6·J:AjPí˜SÆ󹃘¢€Çr²Ý‡‡kÓÂ[fµû”!#”ÛXîÏÑGÞ<Gô#»¾GØÇš˜©J©=œ2É7˜•‹¨äS)ïvºhNV³›ð—€ŒIE}­ ˆñÂùúé/4ƒ†â»)ï`f#õ¥&o!jæŒb(;Á· Kº½u úýµÕ%Ü0i’3fX4s›
-!ñ'ï„ÀŸªNÈúTI‰‹Á¦ÇsÀpˆ‘ÙÐS‚¡êN
-a
-˜VÏdHÔðkž>xj§VÕnA0mðÃh‚­ÏÞÇà8–!í£}Ø•ù}ä^¢ñcú±œdO¯TY{¸é-IJŒÑ XÙ“…h9éSC«Æ ŒÅ‡Ý
-
-Em-›e@«ä@¬gý|©b¬@v,'& ½"nœ¢sé.-s
-ª?G’`k d–miÈ‹Õ¨ÛYG¤T)ÅNÐêè®Îðß[!.!VòK=ïçܺ‚Ët4 yDU‹Û]•- í¤ܲ¼t©TŒ@zfÞŸºõ:KeE±WÆuº!Œ§|&aëß߬/çiK ë|eî­Ë™A/ˆîƒ,gQg­09×Ðt˜Ä´³Ðͼ•(¢ÐT%žHT&š…ëæQèÉÇAîäê!=´àô‘²»Ø6]¼ËyótBÖ§ø|ÁÕnÐ
-T¾¯7Ø•¡åæ_Ž«v:·/ò“$Ò'ÐXïr¯_?ܘ7Eüôbðv 9ÞšúþPGi‡Ì|oµ8\‡ŒS£²]
-Qî^¬}’”‹“„SçÙ¥Š¸3óµ7ð,†ËÞ3AÿS&b3ÚÙ¤ÖÔ³s¶Õ¹!/¼†X1™Ž¥½G|:çRïûmn}ã½êÖ÷ìÜšø–b§Íß
-õ÷wæËßZÓæ@=°ï…µÕ݃Uì W$J^©jd€>†dÈÖmܼä2j@~ÈèÉêIRFœr‚.²JHÕª‡øCV®z¥¿éªºŒÏÃQtcòÏ¡¡IFЦy𸠮‡F1Ù3g’1ö|ú02×AÔçþvÿ²6‘‰“œµ<ðÆ–ö1àœ|±`“ƒn#)éï;¢Æ
-ÿéA+t2kŠ09î‘C…Œ hø &žwËóð¡¿gY8!ük6™4'ÅØcy9ˆ $Ð3‰>Y›ê®ïL,[€…Çw¥¼ÓŠz‚¦! Jy8…Dæ˜Å'/pŠQ MyOƒrWŒ”£LJ'é£à°÷´®Qa¦ ™v<©Iå†DÌåô+²Òá®–`þÔòœ¶A8cG70q…ôµ×§þ<›Ë"Ù1£¤g²éy;Ü?”;KY õi°?°I Ý¾´öŠBµZÍþÐ@u×Ø/d½-¯-aëÿ2^&Éuä:]÷à8Ø7cM½ OåýOë\Ìò{É´õDE•%Iàâ6¡?|'+ipeÖëdX¬bDv³N~|H›ßNEóHGXš¬dýrÇU…Ð&â÷Š
-‚ÕéÒ12`¾^ã>‰Xƒ,DñÞ°iAdÉ?åÊ4ãků![ R€…çÿ96+AÿȵÈM/©ýøv*:Í\6Ÿ]¢éÉûRÑÛ~~eMÿ7¼ÙQv:Åœ«$;?þmES¶%°Ã!Š(£a”š¬¸í#Æ>…Æ=–)¦D–dIOð’ž°Vè[VlÑP(¢;ø››Ð§•…ã‹}G쥈bšŒså+A}Aƒ­¢êº(²’<ЀõšÉ½¨ y¸(DìúÓŠ"Q†µƒã¡èÓÚE‘5¡î:E«„W´P÷ðà ¥Zpü,fµQ!.䦃wþeG¥!l£9­¨÷.2ÇŒlß!(–
-#42ALg
->ôš~ >Ð!}©ÛXÃ[`†‰õAöŒŠÆ)çu/9Ó[Ñχ"¦†÷g¯2&æó¡÷‹ò‹M˜æJ8Aa`&‡´K¯6Š3²ó Om1Íüù™o§Ñ…ˆØÃ-¾CV¿Õœ•Ùr ÍÇúe=Bôäd-œÚB·†t(ñQtÎÌëÓwðe«”/˧lËPAjs¬cóq4x˜îÒ=sg’$à¸VˆÐýÐÙ5‹<!ókÎ¥úȵÆæÝ‘ÐbrP(%Hs,<}6u`ª¤DzñEŸE<‹ AKÕáÞ`1ǀʕÕ°^[ð%Ö´¡1èd[,‚–$Ä´7k†ZFéÍCž[Cc þt©;d‚¦+Q’Ô·$‡þt$&ûŠi/\M·Á½xt?‰ …ÊÈɤºé êX¼£…t
-ö Eßd-
-vvoñ­èeðŸÇ¢Á—”*ßKÑk‚§ã$+Q|^ê­Éz7€–“¾R8ž%Ò™¢/5ED%ŠJ]ÑFEè
-“šAîµ:@åäøb­“?]‡¼7¹NÐqt,—·&5^ Ù®ü·ÖeªÓé´-»×hyNK Nkdùh_»Žúûnš¥ã§ýQâ,–ݺÈg†ŽñMÅ6øVC
-Kµ xZ× @ˆ<\ݽjšLà\ÖY1ŒÖ°àSSÇr–]È»b·FÆgUD_†!®Š„ê³°³vnŒhoËV2’T*qjùbÅä _A7VId8Ћ‚ÑäU‚ûÊü•²Dñ£ð l45<óÓjè7ž-{ ZMG¹ÙlGqÙ¬äfŸ,5ûÁŸÔfך¼õô’Õ>Šh@Üg‚e*³8zˆ` x‘&{µÏðÓÿgéî*¡%€‚—•î%“èH–jO%7©¾¡HM>† Ù%eÿä,×5V†é’>M×–ÒÉ2RÕú
->{8*¼™ŠQö¢q]q,jXE,8¸è
-®Å¾Ã¶#˜Æ´z“,ܵú~Òë(©€ãá}Î&²îy¿‚‚"xYhM÷óî¨جb€|_Ëu–æM©[¾É
- œ§BWbûÞqôà=JrsEÖ­ïÇeƒKÂ/`((w
-;Øà{ƒz vx.,À#G%Ê!¿Nü=lü¬YIã·ˆŸÔ}0ì;ôدO4º6mrOð¯>˜¾žÉº^‚—ÅYE†1“•0”ŠÄ2Áq(YGeâÍbw˜äñ;ÃÈ”‘Ðæ· Š§ ˆõVIYjÄ(±åþ(rKƒñ—bz/j+»°L
-ªÃ0ÆaCÀCá·Û ‹ä
-?2r¹Á‡Évñ{óX‚à œM2+¶úûn¹ÃŒxg\ ’„ÈÆWPú0U59¤iøÍâßýNl[B.,§&åBËø+Q•+—JÖµÿc¼\’ãˆaz‚\Å¥ÿgmŽ2¾ÿ6Ù‰»5Nª²‰ #µH
-cãN"%ÏËCò†¬W‘ÏFk¦Ÿ)Å‹hÄÏ'Щy ^ÄÖ{ùoÓ<øfÆDQhsžëp+l–&ôo@_¿é¦S¯ Â*ùV¼Ñ©@êÑ~ kb>ë ©›ØX‡¶ r€‹Xv™Q)bzw{*€Ø.­‰(rçÞ7’Õe¼„½¡ò«¾gâ¯+-e‚3þõh‘A‚LÌkÊùŸ£A¬Ð3Íz
-é/qÓnÒÿjò,>œž0Ziõ ÈÛ@›'šþ›È?¯¨DãY8Q•î¤ƒ}¨`,øžç6ÅËY5n›eQe9³yxTÂ@ ÐC,qʆfd€‹°pQ3bT¦¤{3 œ¢+çï·a©X/Ú¹ôîªYÛù1Ï1s>{ój†þ‹¯¶x<¥í{µ‘5gr ¹õ‚`Ó•»¿i€É¤‰x±4¨ߧûî—H² Ú>ÙÿÄãÓÃzÇñ=½¨È
-Q¦_uQMVD­;s‡q ið0M=B]lhEXyMC hc°‘¡kXgÔ*ãÓ€¹ð
-V(WuœPÓ¤ì¥ØÛ›ä£4]½ L*zAÕ¸ )ì ܺ•Ä®J˜
-#éïÎa%§T¯e"ÐÓ•,LmùæRZiB!QTB/½†­/^ƒIq˜m¶~Û\I§VÚ¾®^X“(0I1”72(_hrDZ{Þ6wt»÷á èõÄ«À°²‘zëìnü$ÇMÓ&á,bz…»6À` ´Ä[…òbq _¼ÄŸ¿£©–n)ƒ8OKÈ‚]…‚‰,=D‹ ˆGÐYÜnC>‚¶U4&ÄC¸²~Ò;©‚âñ
-™Š(§ÏÅmòÁ«Î›¢¨3×lµ+ë>˜XÊè^AoΑb®|KŒþÉ82þIŸ&ûD‘®l<µeŸ=+}þF;:hIŽ Á0üRÓ>c‘D¸³Ï¿QŠ‘„0ŒuRvk'–ÆrDK ¬®7y(6x"æþ‘‚Í$Ó‰²)v•?[0í£É p˸˜9ª‰Ît÷MT©Ž@ükž ¿Íõõ?üW>Mk(ü°ÀS»8E•”?ODˆaÕaõ "Aãkë–Yò:67úJù™å6J™ÈÞ~Cw'™Sg¤G!¥øtQ3”€2©û}ÃÀP‘¢ÂZ¡¿ò¤ !²)5‰1Ⱥª|HÒF`žÏ)ò+žPE¨g¶Z2ù}žyæਭBžä¯ Bóq¶Ôméè%¢¦` gƾ,ã9…|ãëf``•còÚ%ŸO¿A¬Ê·žÎ¹5â¶ßœú)iäPÞÏÓ,=ÜiÑÖ°Kî«…‡;µ”Šñ}¢(ä¨'„¢>#€Ë#ŸFœô[€
-H‰”—M’\¹ „O ;ôüüÀµ¼Ô-áUëþ[xËÓU,E{313õH‰ÌÄ5ëÓ.¥|ü«w»† ­:†ôÑ>~ýøÏùø÷ÒZ½ª™·6›/h™Mç¨âSëÇŸ#H¯á:K¯S‡~܈æ6ël6u.D©Ò„+Y-cÌÚ{)= ã²iZ§um¿×Iνͪ·ž n]¸Œ«È}T»Šyé&Ò­.H+µå KàÑ›K×r€ÜGµkrˆxáýü~Ub>Ûã6RÇœs ï Ò§‰•b”,_å•êðÖbýãç¨]V{íC|”êôи¸Gu÷^jÿ6h^êyi"ôhú5†¶ªÖFŸ•J'Œ/Ý5òkö:jS™“ª}.PþÛ[+c}ˆßÓõ®ª­¬÷‹úÎè٠á‚svzØýØŒ¯ˆìEñl²1ýøˆ¡ÃáA¥åUÜ»7º3“`Ü–û ìÉYUÁÍ}l‚qU¾QTF‚´O)ÀèlõÄvg$ªñwôy„ì6;¥bÂöQ­˜ÂÒ*ÍñZŽ÷¹yè Šú4ξ'0@Óš4‹Â/ÓàÉ Ì§>HÞ‚£IWüj «tÂg¸dEN“Áµ²Ì
-ÉÞ O¹„O*Üíü™rÑ@ŠQû,vŒiS•×##K4¬R·1joªkv^@'2 RÒ(-ß_šð-ÇqŠ%•!XŒ?€:*:ZŒ]­«@ç¬ÙJªa­œ££À__Æch÷ÞÚBȤ¢fGH~¯ƒFæUç«><Sju5—ú¦“iƒSÆx·)ZÊ…ëy’·)ï:~Z8ŠÐ³Ÿ4Ä…¹Õ„dŒn-Ó¹|±Qî“
-5ч-HØIÕó± Vë=,‹­–(ªN›hìr0äŽ Žp>ä*>c—ЊiHtM¹Ã¦DǤ%¤§ôÆt×iŽTúOVG^@Æä´‰¡P]|è׺d‘[´¶&~}.S‚â:âbÐ A’œÊ‹ó0|'ðiž· ¡ê“Ç™Ðcçf{4**ÚfgÀÃ"ˆð:3¨a"7„#ืd–BˆdJ ?>Büªd†2ð=zõê\þ2¿û$úÒÜ“9*EPD±êBP`ó,»ãÂ-Ü ‰Ž}®GsLÍf¹Ð“‰üJkY½ s! ˜¿ãßßyüó!i<¬l½"}Š’L/N­´rû7/Çœ,œxAzP±ÓÒ×üb`t‰`U´ë–ÃW´± ¾*ÆC~î)@Ý¡; ¹£.9\Ó舲öSÜ
-ñjî-‘I`ÿ&û? ’ÃveRöèáxcj[)Öî°×béÝÝÄÓŠG.Ç1¶^<<ä ßEõRð" 6/¶«TºO;#é¦ø‹Ãve—h‡¶`,–ÏmœTaøJ û6¯ ºëçw,8WÍFÂPÄÈGŠS%-2?…"¨ü9‚^Â. ¾lK¡ù91_ÆâכþzŠŸŸo@^ SúqCÂ@+ª±#M,\¢j#Ìù€ªug'v=ò!SÉ꺨Ø"tp˜·Gx*
-
-ˆ¾Ìˆù“¸vh¸bóÕ=„¡žûZÁä|7槻Yƒ_ï*Gš¹ö<í7]Š‚ L@âð•‘™q{5;ƒ ³ú†¹àÑÔ=å ÔMDÜ^Ë<në­ÊU}z¦:"c½ Ñ‹±^è,˜Iá9œú ã1ˆ.rƒÞô7Oa–•ƒšK(GIøDÂksv+ë8 Øü¬ .Ї»
-NòãˆmuÏ™4€ ÝÅã†éÑ¥¹jlÀ=ÝW®Á>"À¾sÊ( ]cøR=öò¥Ä§ý¯B Øâù9LnFk©îœ‚x‹Û.‘,æÉõ]ø"“‰Üä[H ù83&óÛ˜Séæ¬ú¹6W—¦ü€¿˜UøÄLþ:]D”’Äû‘_`zS=
-ŠqÀÝ*øJzÀVû½Ðú—½ ‘ð¬Ö­BCC.Hüí9Ü'_ËàL«à•à*ßÄ¡ã*àòèµU2šG„Œl½½ˆÛàÏ`ÚÐ-¾Èr뽂Q'{Ì‚6‚H1 ‘‰6"qk¬>PÂö¢s¬µy8‰ cøà-ÖóÓ^5Du¼HV±ŠXiø.¢±kgô²,vä^)ÇdÍ%óÕ^°2HzõŒ©Êaö
-óáð¶Šøú0dåMsßðy†…ÐÎ[=ç#Ñ¥}ðW{™ì…0[”­„•á‹¼Â«ÈþóŸS 3ºd©°Ï¾Ôèøê
-Vx790KÇœ<É·Šÿ+V°GþÙb´B'F4‘‰Ë¨²Ì0~7¼iô¦¾ò_Ήö2fB)ðØÎ)À€
-hZ £%ü;þ8ô’’†š³»\PÝý~ŠŠ.àÂ`EûÑD¢Q”ù—l•apW.S¿9-G¤éþ*x£qjV=[…VC‡é½[I®ôžÒ¢z¿
-§Î°GnB¦ä‡†
-×íæl¬’èš-/Ç’•XbòñCïË7ùueV¸“F.AIËÈY`p~Y“’NJ`Õ{4äBP
-#—ÁKïa¥ÛÜT&u
-˜ÙP“¼‘\*ÛðY&P)³®Q´Çp;=&®fî—Ä!%„b­H |CGS¦„M¬:½+VÛYX–JRßC<ý<±7È š“ úd³\ ¶;ùrI„´ÆXöê<%ÂÙGqENˆ
-¼ÄÉg²ÝM®="ç—½IÔ89ˆ_T͓ƪA=wêo×p„=™ÅÌÓ¯Dä³¼á ,UM×ëzåC‚Ó* ÷,&姕°lU¬8a! K"µ‡&¹v¾=ºM¼Æ*éüOÄ…L8¸j2èä”%P4O‚jvÕfãPD¦“W˜Âû±è:‡:rê Xc'È·²Ä…ì_Î^Vv<Íã’`WQÓÞŠçy®X ˆüИâë7¥_ÀBðõã‡èF¡Õ½½éûS‰OéÑÂ^f;?GN7ÔlTÇŸSšêcX¬µJ’ì}èˆ~šæ+Cdw¶ÂªGÌ1ÊG=z*Ð0;ð²?Ö溰ñâ÷Çk×¼i/¼„ Ï‚¯îG7§5)lîÞõKQ屉ì‚ÔfÛõ«h|§Fѳ1Þô¢Ú\¼Ö úxXQœãn­YO÷Öà\Àhn˜¡Ø"×Ú”2L;]¡çAÆÖ7}iõ@yËX¾Sð…áÈÖôÀ°Ádf»ñ3kÉ!Q0·š‡Ÿ uœëȺ‹7ÏÑ0ÊÖCÙ%‹û:°½d(ç€H¿C ÑVêŽGÌWÒˆ>÷šgðUº\|,
-¥”šŽ%(äxFk¾S§¢'=¾‹PI,PÖÈžŽŒ;¬ƒƒQ‡ã§ã2 ð€~„cûÓ_®·b ö©ðqhÃÅò®Í<YgàÂ3°úüÆ‚µ. zÜL9 7­–PŽ…É^ÂGòÑ=IÌ6
-!?Ð&‘*m|í×e£csŠ¸ËÇiç¯N<IiéóŸÓö¾ݽH‚<ƒΊäé]žR,£vVofôç.©!º!2GMRÇùÊÈoo`íà’Ê?uã 3Ì›µ­Á5 È!ñ4ÐýHÀ§v>•ørbÎŒ Þß>')$b^.#ÛpÇ´PY% 8üÉq`©Ë
-–||ˆ%ÜúÕšÍÆ¥alÃ_^ÞshZȺgÖ.»è §"¾cýŸIOvCì „ªu7ÄtÀä‘81¬D!
-‡æÕ ¦¢º\ògµ<µb*~”S¶6RúÎqã¡Äß„<$px9?†qâèº2fÅK *¥Dstº‡8ãñHãþ¢?sÑ—O ɉ#Ë€]W:«†Ô$M·Mò\¡¶8ó‘Œ6~IÙ2•
-7ƒ¸°¢
-m¹§86*Ô9ŒÒ
-¬L?eTìëÄ”¢Q€¡dK‘=4(–É·õ¥+¾ÎÎÝeØþ«ˆ-_“¶0
-ÛÅjp³ ²U~µxŽe·i·ŽèN>Ÿ‰BÑ?¼-º‘Ïú·—k@”#úuO8Ø
-Á£Æylµƒ1¿†èS£SÍWjœÍÇŒy[ôlÅ}ô«=Í4¾ƒ‰æèÚÜlò¨$S{Ð( ¦àGÍgFÚëÃ` è]b”
-"JxªØ9Ð3Ï\)² ½ƒúp0ï ˜öG*Ù’°$†;·æH¦érg 3JªñÇu¢îµCO¬×1
- GÃ/‰æNÒ¬[ÝÙV˜µ8;agÛto¢´h»ÊGÝÈùm‘ƒd]MÅ™ˆê³è²'Œl´*Çç«i èE¿ ±Q–A¾꺀•ã&Ã,º¶ªç ›2#Ÿ™gàû9äm8?õiþ:GR•1‚,³CBHfÅ$OùÅ+2$ü<ÞLEðñoïTâß Ù›`È{;þkj
-b žOÝDD>hÜ ÞËèE…v'ŸÔ¼4‚®¬.‰¬na{Ñ!¿ý%ZƒÆÄ„Ú©/êh”Âú¸¿
-ào$ž›Á T‡ÀÍ–¨&xèÖŽ3× üõË‚È݆!ó·dÔ>w†ˆ84žmkй…®åOõˆ‰Zˆ=ÎBKäq>u5è†"$#Ò¶Ö‘ÏòTØnPð£hj`ŒK"x–Õ°»†ÊIɔů†ÀUÉp+'¦Bí3)B¬ëÔŒœ<‡aëüÚ…,ìãµóJî‹Âw¦‹è냨`…"à…ër&G4PlX΄bùXmï:!8(6»´Dlûʺáªq„1‡ÆÐØpŠ˜A«h$²ʃƒ «F›}v8Xü?ZrG\YifsTúÍ‘ìOÙz9ÄžÖaZ*I™u&ʸåñhõí·U®„¸îÇ¢€†°³è§c²¼©Ó¿çvènkb†zÌ´cÔÚpÚ·CÕD‚9"?H2n™)!ϪeT;®Ù}E]EÅ„kÜûáÙŠ&-½ÍÚ2‰©û**ËÕÂüOÊ6Ï[Yá*Œî³—ÿkˆÔ-Ÿñ¶±*
-ž5ìOQ'¦x+"
-öÁwX Ø]Þ‰0°¾€÷ÂÚª ‡ÀRÐáe¼®"´l{ãß¹?ŠéÃÒla6Ë«–' £Liè&^ª†gŠâ ³Í YwÀ$ˆmãç?¬ö†ëLP|s\ŸÊ
-WÀÑ—ig2µ«Ç{j{žb$K¥/9»¹‹~Ž×ïïd° õÏÿØÿúë?ÿ7y5|Yÿý—Ÿ¯ð}Ò@USþ‚[¡Ç1;vÿÃU†=üˆa«Š<§“"Ê:_æw3®¢ïKÔU%´Lš s!Ჸ…!VŽuI8žN‰ÛÚ–ÒüLÂAÆ’ðãM<°hˆp1$Ú½BŸèì`ªr»Š^¤`îg']º¯ ™ƒÈv1þÿq×þÜLóà€¤ö¹¯rKÏ„?ñ¾÷’hUŠ|”‰fH8 [)ÂäM[øÎÐÆï—„^…¢Žìǡ莶ErVáBÕuz\ó m¾n
-¤Ù–~8¬PPÉPCHf^Õ¢XU£&ËËM“–½2Õ‘™ä’OÚäŽÍ¸éb‘‘Ê)•ª•õô;(¾3(É@‹†…k†ò¯W›1‘ë:–ПNL-Hš¾ éBêž3…’ Î}XSehƒ4‰Éy;4âÚwkh‘0SÒt߯ÌF-Ú¨)P¢{jUªD$ì°èµb Ò
-
-WЇØíE[1HëØ’ô×,±þõ´ÿí@e;°×|-®¢¦LÆR»ή Ÿ,Pé
-Ó$£’çRRLc)Ÿ6áâÀ>EI°9Ñcp¯Ð(YŽòUÐ鸂Fcq
-Iª>6ø
-:õîvÜk C[n%x t:îÚ–“þþµwKÞ;‘®IX‚Rö?鯘Û)CÇ_ehø †¡}—¯BãfëÃcÈ0Ÿ0„&cPNhpn „®€Ò"›° ¨|}æ‡t¥+ô2‡ ör‚fh¯ˆßvÓŒp3âxú Ñ@Qvˆòõª4! B¤™ZQÂgñûö$%à;#,ŸyFK ”œ¨ú‹V92sá¶CHA¤GÈõÊ°ÅŒÒ&K£°žN¼cµu÷GHc‘à LV,«€3‰ÃÍf•õhhWŽii©2Þj ÞœPÉýñ; %:µ ›Cp¯px(c#~ˆ^¬ hÿ>éϸ(,gÄ—JÑag‚Dtˆ]¡eÔLžàO趇ÝSb.É”ÏÖU ,CgJè´&.ÕŠž
-„Ÿ â“=Ʊn=S‚"µbìž>ƒÏŠËÙç6 ð (¬YŽÊ]*ºïvêC¶?¦í:„Œ¼y9$*͵¤dßA–ù¢Bþ®¨8Ô”‰C BP+ J‰î0“/DÌ­Äs˜S.¨kpé_BèÊ4Jfºg·A¾czcÚ;#–¬te¹qŒï­œ`éë ÏQ)EÙv€ü¶yˆsù£ÖöŽ_¿ÃÈaqJ"m» µfô;7F®mô4 =Ó·øŠ#± ߸ª_ÿÜ1‡º RL4?Ê==Àr¤¹Zv¨véÙ÷ý}[¾<~NÍ#½DBÊ
-oˆ5ä@* E a-ÖDWâÆ3Ì0 E“„‘Î_VsÊßÔÒÚˆ´ÖñqlˆÆ-ð.ÖWÏ
-Ôßû÷â^#árÚÁ·…Àaòé8Ðímz°D+"æi7Gç:¾)çé Yþê#|Ý|ZìÁ9ò«CÕ†›­.†ëR¤»îßÛ~ðIÅ—¸ Š_ÎþY.ð%Ž§Ï¾/+0@„Eš°í÷gc^ñD8úl$Þ_åƒ6ˆöÐÔ%³ï Ìä!ÝÀ ÜWÏ"mrH+,7Œl ¶^Ä 0Ý^ãèGã? øŽw'ìñØkôw¤ˆ-uI°`P(üzyÖ"ÃìÆ´÷Üù“­Ý/òX=MïÁk’º5‹7Væ¿•š>å@•7»£±èÒH”§ÔógØ?ŒU›twë)vr«{DcÇ››?ªñï]Þf(£^‚ÔÔkƒ–UüŸo¾/SM˜W$àšz~;,!óÕÊ>êÏËiÖ3áÍ3_—+ë[Ù†L[mŠ|¶Ã¤, }ç{q~Ê;Ç‘,±øŠaç¤ÀQÌz YLýz<&Ô¾Pü¼æK×a&¸¥›†)*z†fQŽ·é8) XªnŽ©èÿ†A¸ÈÐð^ƒ z¨é"%ïE}×dð‚¶^^PÈVÙ =¤Ùw8©ÁA¹ ÒléÏDÌ(AÙÈ~€¬ƒ
-MçÙrž&ŧïh•ró»pržÚ=ˆÏ •˜ÅUô3‡@
-«Ö óŽYˆÌ;X„ÈØ-nÄÓªoÍæ:¼A^°tðFàÑ”½ÝeT ED®ƒŸª~ÖÊn‹ØMÉ%†f±» $þïÃÝ`R­àÒ¢E[ˆKÖ”œz9>@â"ú’d¨? S¯wñ«A‘…Ìëå@âà;,ûö`Ø`I(áiLƒˆÞ#ì=ÁèŸibôâD¦4SÁô]«pÅ%Lr51ÔÊcJmúc³}{«ðN÷ìTò<h’²±¹4ù¤nÖ \G‡} —‚ ûF¹¿àkƒ¹çN!&9JÁ °ÕÑ-¼Qæ ÛG0%L6zm™–Šb´³ŒÙ”E‹6±7þ:(y¤—|,˜FÜ@÷\W&BŒsC.–Rï–=¤ïyOòÝR^fùn)%ªôS,T6\,å­ç'K‰ÈG@lYÈÖ”uà wb“ý2˜ˆª`+‹A¸ZÚ†Ûd
-dÇ0ôŠöÛQø’„•!¸~´‡!"”°Jo Â7ƒ¼aδ’Úé&@h,A ¦Ï–òºd‰#_¼‚!Ò7ID4kzÃPRš‹Q¨MÛø߀†™æ駉bàÔ¦IŠ&SyW¹Nê9÷HæX{UÌ!,~7W‰º}„e‚Œ 7ñ½D Š I>@–;=
-F€~bµg>‡GBI02Χ8D¿ƒ–m«‘[‡D”²ïæÄ<aÙXší©Q±…"á6 ƒ7#|œÌtFˆ+;8»º¤uZ™9¦|?Õ—ŸÊà =òÌu«ûÆp~ÕÇ97­³ËI~|nß^D(âIní´§¡Ð8žÈïúk9àÈŽ,öÀ„dç
-íÇŠ§TqQ- þ•n ÃÙ"Žeá%<ðmA(3·;ûã Óñ‡4B:Z< ~ÛI’Ö&îýé3(ÜÄh¡R_ìÆRÏÄÖŶ}=Jì‹Û*og=ñ‹m¯ ù!öœ”†¨ú0ßTmXŠñ*èîšt¯ÂÒbÛÓ#äzé€áaÖse£Áã5êdÇŒn8 B‘¸^ vHVQ²„q´}›ŸdªN0ÌŒqâmo¯O9HYsÑPRØ£G¿ JQ‰pÄe¼@ÐÚÕìþ>éÏ3øí£Ü'×Ñï·|ö‹‘Ä &¦ŸÛžŒžN²‚ßãÉ/¨B3îË{ü"~Ÿ©ŒÃ3ßÍ/
-‚ òÖú Õ…Ñ{d(—s=ùŨX85!L^|ð‹'ÐÕ/
-ÃÉw@<úE Ìÿñ´tö‹@˜d,#übTó“yö‹Q ”Ç÷ª_Úô—fûE!ò‹ õÁ/ªéV„ÇcŽGÊ\ý"ö±uoûÅ/–w5jˆ÷ÛŒ—Ir7DOà;ð ÌÃÚ[ÞÂ[úþ[¿
-_úÝÕÃrHL¢rx0Œ™
-r߆ßéÉ7Œ™ù#f½R{0Œ7ˆgÐÝ0^AÎråíû °ÃÈÓêÒAÜüâm˜o†Q=(­Æ«Œnº5Ýã&EÙQ¤óè¼s N.\KŸ‡)ß cllˆˆŸœÇƒaÄÌBoLx®aR&kÄå³3äÂFø5îÉ0z ›ôãG ›e¼ƒnžQ ÑDŠ ®gU&‰s¤|Ó5kóÚTÃ(®kL.2µèš=ŠG“'ÃÆ>™F@…F0]tÄ7šT8SztÊ5"AM–vd>™F‘©F…}-ÇO_\# EÀ!KFçœsq·ô\£¬7¸ÖO®Q'±Ò%7™G×5ê]yªŠð]㟘Ô\£fŽ˜pÚð¼Ê"Üe°S{òàU˜8TŒªÑ¢îïqÔ.-­JZ©$tºõÀ*I…'û°!̓ 8¤Pøȶ!´Ÿo‘Z¦© „¹‘Çf¯ צ•\èTœ~
-Òç° ¬šÆî©jØl+>ûÚEÐ(ì„Dô€Q¬e—pjØ¡–V… ¢¤|°k¨ø«áçv<¼y¢k#ø¹âd7vC rLe§\ÃØwDî<'5´ I{Å>â+|óÀl ”—Í›Ócåö”ò;±Ï"Ñ7Yã܈
-LõcA†œžœ¢Í1ÕV“ ï-Ψ3ÅX¼Œ¶¼Çâ
-r;Ž!c‡; 2Š©¤ð4œÐær£ èû'º<5?ÿ„
-a£÷Ùœ‚e’lïE4‰~mé{x ]™h=¡µO2>‘~Q<üôþ@Â"Q ÒÓ~bI@ÌçI€oñnàÌ”(cãWŸ‚§6A ôBš²-¢ïÅšìþJëûT ±sÏ£Œe¼%µÈ?5…qËAL¹úŽE)~Šäá¬pºñ+’ý‚|ÿ¤¡¿²T้%P›3"—,&ez’smžIÚ ¬?²ˆÛrx
-Þ’NõI¬p¥€8ØÑæwêýþ§@–åñ6±?ä)Š=zªÉõjGBvÉ ˆ¨§@@ÙܦW,“›§ÒD_ôø||Ö[ž„7Wf«zyÊÜó” ºæ©;è6‡ûÊ¢ ®7Oéåøl¸y¦3Í·@u›ç[ ÒöápØTËB÷¶;JÆžÉ\O7u­qǸqcÈyD7PÉJwL²<•¨
-HÂÄB€Ô£ºaê6^˜ÒTÀ‘©DÜȹò5LâçP+§¦ô.R­‚-;ààŸxt¥)ØEֻʭî”ù_a6_™E„^/YŽö¨‡nÇRPøø° y6ü/ž¡—‚ZêÂ\•M¸¬>å`8ÖLîB+–`ë«áè¯<ÞP~“к¸aCðh"5¶aèêîW=l›²LWªéŽ1²%*ˆ@¨¾ÍE§+¸ÑYT­ ˆ#ÌÛã¢û³YŽI¤Zë¦v°ˆ9æõì¦!À:+ø°[M˹*¼â®ºxýt{ù†øg÷;Pq]výá˜%‹³¶½’N.$Ǧ5AL1åX”À3ˆH8:Û—0ÁX±.­j¶ƒ©•iz‚df¡|p3ÂAØE²»H
-C=+U.»›è‘¿=вLN/’‘úá\YÚÉDà'Ú—œ—Ke†’E¢/ì½Õø½€R+L™”)INnšwë¦#k(˜®1´àJð^<¦¼lµ»°¹h>/f›P¼®„eùI ¥H‡`Äã„CD¥ñÎß­ö}[Vœ­eÆ¡oÎÒ™Ê-ì7\5v/¯Û{}Û¾ÐEÔ7„9Mê9fÄö¥&²(‘sœû¦ŠÑb¡Z÷In€|Ã(é|1ëʯ0%í<zê1ðÁiçð—‚ÃÂ’dÇþÞ{ù°¡!NñÆäOýC2ò"ŸÇØMˆŠ­0¯3ÙX%i µÍyÌRÖ'Uo¯/üºÉÆ[£jUØ¡ëÓŽadxL'}Ùƒð†P5sUšËa•›»•ˆB|"’n–öŠ;;R(»M ÐxÒ~Æ3.ëÙ gÃSkö|˪–AFä=ßro€£rË¿O¾¥ŸRÞ¦hÑŽBX $:§­«΂ñÐÔ“ZŒŸ`ÎóI&
-‹˜†úÞ ¨&RmêHæ¡
-mË˪K¸2ÃhÆ é®†×<ÈóbÁ¡îâäOÍ@À>¿@S–-‰rßÇ@Ý„(ÍOÜoçCd®Šîåø
-6‰£Ë
-dT šáY¼ØáB¼F^O•‹Æ%œ/õ†q ðÀf v+G§DÅ·ByùllmžñÉQÑŽ”$@—ÆÓ1úRâý@ØVŠéGÞˆHäõ^[ÞEƒJÞêûKéëÄS¥åön(Q í›¸Óç(!úZ°Pþ!A¯ÓG¨Šs3”z¾sÅÐ"T‘ÆÚ)“à!.äÖ¶yÚht½öiËIàýkÜn¡èˆ#›íµzôˆÎé?“‘¡ì Ò*Û²ÃðòîR`õHY$Hæ4{†•¢dÙ<1ÓèËÉ#â­4ŠCªðý
-jØ„æÁì(·W@´W˜½ÿ>W™úPÿéÑß! ¸¥'åp9~¾·ó jݲ¢W>9L;œˆd¸7‡n"¶ˆnlÄóŒfá&
-nÀVMl×¹y5”m#¹ Hýî.‡U„f»ŸÓš"î•}² ”c.‰Wuw7„/6©³\ÍEž1j2z·&Y,Æ)Ê'P]µsL§ìq[tôž‚õæ³~Ù™œ)ð2÷¾¿ôçÅúMwðeüÓ*¶ub›)ÕFA~ˆ®bPµÆ´ šê4{ÜŽ!"JpW)æ u
-9|M's‚;‚aœ§ðn+‹¶_¬26CÏ“ÿ—íÁʲ‰NwŒär¾rFA3‹†3YUáYÛ‹ (°¸UîÌøûÈËöóuÂK«õ
-¡Uô:mÙéˆ( µÏàóS;NZ)Nå‚ †­îµÖ³2íùiÒD%Û“6-H¥‰ðVp§Õ¶„•h@h*šlËôUÇ'hk%ž})Šú°V3ì——¦x@ãg²sÂè”bã¦%Šeèó DMhšƒPKqÑ$è¡À-ÉÏõÒ,Žö…ÎŽšTXƒK ROðŒ`y ›ÇR´<kd 8&…0ƾêBÄ©+
->þEO X3UÙ!NJÉ?†Ráiy¿ó:¢(ÊŽa®ýF(›k”Ï6"=h_ç
-ú]]?^‘`9Ô¯#Øýóöõß·˜qáÒ&®®H "”Ðë€hgߊËÃ=×tÌy¢ í‚ç<# Úu H}­kƒÒQü[ÒÝ_·¡mL9³„l‚¿\R‰Sˆ*IHŠRÖ) Ä5ƒÀ…r>Ëu]!?ô%Ã
-›"¥ä#ôÉÊhDŸŠ6Þ,Š Eq1´ ô„ÍRC‚X#lDðFà8è<>n;ÜæJ»Mü÷n_Êìªì`ò±æA
-þÄÒ^þ tö¶"àjØwÈ«ÛÓs'±ƒ âIVAâêC•oäI nR°wðÁÝ1(,k×´ýê¬t¶GèÑøhh{ÏW—,Ê¡›úßÑY¦¨”åfÂVc°¡Ç7‹Ôv¹› Ù3†•ÕšÂ…µÉ¬?ŽN–2X6‰’xö±O‘æWñioȺ7FS€ñÌN×s
-..‹‡áõ ÂKUÒ¹M¼?ŽuÞ\x
-?Cž;õþv}êüÇ¿­•†Ï‡ŒäáÊ¢™ ?̧§7å5¼[®Jdyùs¡õ˜I¼ŒùåÐ9 þ€Ã©aG¶|‚—ëpŽa®œuœo#‹Ï#®´!×WiØEñXˆ’ÏÕ¹ì•jL8g6ì°z=ÈnÁÞé±^O7G#VK/X6Ãn1N5#°Ø_@WƒÀ;xÕœ-†_„<Ñå÷ã§^©DUŽ¸1,ÅFõ€ÔÔÅÊà­ŽEùÝD6I ºAäTqAaAF¡éâgR¬:†öæ­|]k‘Ôž­¶„«€¿`ìüY¼¢
-C¯SM¶cx¢X ÷+v<á¨=íCnÉŽ¢HAðeOç´Î1†¼Ùõ2ýÅXåÈèr|zE\¹†(¬'Ñé[©Á`BW#Ù×à—áØ 
-^Ñš\võˆ½¸\I„jn1î9sÎø/ç~iy—AêõÝäŽù•iㆮheÑ1 S?‡™ì½Þí"zÿ'žß¥±ÿèƒùµHiщÜI4€y1x¦³ä lvoäÑE?Š"”¯N1¡iS»­äÛ!¸ZY^p-Âo0^V
-6´àoÓý®…ÆÁG@_!â{%·,DQöyy
-dY™¨ßv_Bâè€h9ëã9ęέ…6¿MÅ
-p·ÙøTôks&bÚؼêôšÄC*[÷(`¨¼ò¤—@ØÒaÕÙ‡_Í l…«Š”HΑ]yS Mã©ìÀЕ€Pµc°H²¿ø€×ÏÑ ±î^ˆO{æð)ÏŽó1uÑ\YÍßùÖÁÿÕЬtÑ>ÜHðõÔ ¨Nç{ò§m*
-ÙžK¹£¼nÉÞãÊçAÉлC "?ȆLÝB^êŽ/Yî–“su˜ùÜ [nÖ %à­ÑÕA„=ƒfÖh‡©hF*QrÅɸœe‡SRúQ~·\Ëh‰®†æl€U$¥AÐèûo«‰EÆF’8ú¶$âc ‹XÚ¡h•`0ÉA@ÜJ*q%Ð5c0G:Åf¶²]²Çlä÷o‡"5¨ËÙ,-²Í /šÃ Äòó«EbÞØ” ›•DåM†›·§‚ùÂíDõ_ºôþà®;ŒYŽlÙìÅji¤–sø’&„õúÄ– .C¸Ø6ŸŽ) Ø¡äulÒeíù.³+f) fH›Në²/„K6è¯Ðù±
-àÓaí-MÁ/é!ÿ€\Oš²>¥G³t-ω/µâý×<« ïä ¾¤¼vPÓïßEbêÒ¥N‰ÔáÚÃÇ0¦t¾Ö'Yz¡ 8ŒiCwØï w³h\Ÿ~Ÿk ç|Äá6×^_åŸú ‘xÄ@.ItããŒAV½Àp{*ù„èŸ_Áòýá+,Êk‡'ý¹ÝõG}ƒ‡þÊQø ¶°¨Û£æýÑÉ ÔÞÊqÕŸ€a@þüTOâb3Ó§¶ºÞƒþ„7KêlÒ1‰ó'ˆFµË3b%E¡W#` P tÊö€y¤D 0ëwÑ à5:cM_,¹
-˯cQFöq€zÉya(±ÌÐ:çF¯(¸—„Îñ'Ù£&á0@äÅ„'¿zft‡‡M„+l%†cÅ+Ø69BTDåýc™øïfÇ”—.“% ÓƒÌi0ÎåÊ®%g.<ÄŠRØñ’ë„z8´Ô•FRÊ~ߨlƒÎ4w‰ Ù,©LíÌörPÎã§,D1CŒ˜Äjxÿ’(?$£ëPËc.›•4š‡•æè×wÿV¬U… 'cb…d‰<9QÄ°ÆEgù8å,ªÆÈþ.ÄŸ£$½V¢îD¦Íÿz D¤SàÂj%ð”2AN~+GÎ`ôîOGpÝJ¶¨NtÐ)ˤ'W–¡†?ê¢ÄJGø0ïO}*Ù«—Zœ]X9¹(ñ*Z÷eÀ¹l??³‚(c:K¾ŸÍ!Ҍʯ8DáMäÃî^âÙ"f™à“l¥—,Z;ñ¥ñ¡¤éñ9,{V6mYÑ0Ü¥¾• xò#¸Õý\Õ>RdzÝ°/pG
-
-BÚ$ rï$t
- ÓØÒ-Æ:ÐVe
-Ó¡&¶K;ÇF.©Ø!°åÀ<ß
-H‰Œ—Mrd¹ „O ;Ôz"æ $¸œh/gëtØ+iéûûÔV_[Ñ µTY$  ËÞjM—ËV{IÕíñ÷[.V.MI\Ìr—
-ØL6•HÖˆ¬O‰Ïf5éBTm™†…cŸ//¹À›òÉR0Ò !¥X7™7¥)ÑÅR@Zâݽž’ü YW‰ÐTÎ+õöœä’xu»‰F‘q8ë–ëÝ«h¾Ðøª•rNΡŸS|€|)ÕÏï´rt}š]_»LS¥œ»Îû8"tV‘vout} ¤®ÉÕW–JãºÎç2eSG®[iIÊA€Vä–ykFnËQH5Õ赞uã¥î'ý¡Ss&÷ ¿ÑŸz•äI[b~é1–zY×άðÚO’:nª—s âHÔsbŠ¯¦¿ä&½Ïç2ýx;ƒ¾”ýýÊÁ8ùNnâCÈ¡<ðNS»ÃÓ\¹dL‚¹1töÓ¿fòí©rÞ–§/u
-9B½I¾é€ˆŸ‰ÑDËÉø(‘òŠ¥…°jK;C«¦{ûbð…~ÁÝA¡Ê¥Uú›•áÔ8œ¾E÷˜óǧqN©aLÈ9A@zˆ¦¡yÑÚ0ŒŽ1/ê (¯õ]éz½‡¦éëEïß©è§k…²¸ÄŽ½ÍTvz\"uTAôGñ_AðÏ¡<.9$ç1 ^âSv£¶¯ìÝÂÃðFŸ"F@S"³KùÀ'Ρ†õ 
-0»SERoKû:c,|+ÃÌR†y"¤AH*†ÃÂÔ.‹¶j”‚űîÊŒ«*‰ÌØÝÞÓ4 ̽R+CÊWÉÂV²¡£½.á°"0elÑÍÐx@v,&ëÄ×'”ŒQ?ªöŠµ&ÏPw¸•aKuR¶ý¥¥:Å—pÕóUÎÚÃÃù·ì¦Æ!\Ê>°ŸN—Õ˜ yƒ2ÅIÑô=SÈÀ¤é!jÞæ„ÏBèLËJr|ƒré^cÿ±Ê ·8§ö%‡S¾üÊsãŸôÜ€‡Ô<·ñ!Á:|)ÔÏïpæÓ”ÓÛh²–ç}œ@ÃÙ³Öç‹:B_:š Û)"æ¤#9³b@bødÌ'u;›É‘$ÌT³Äí'<ÊÑèp|v:™ßSÙ_ýñh0äÒRv>‡^®l¹Ä\†ŽXB±m '¤)å#`$q½)[’˜Æ=Û¼* iø2%lå¦ðÿŽ°Ü>„qŠŽ&®¼îŠ±òqån(1N‰B!\ŠÌ„ÔM@_
-ÿ~!ódé×(ó¼Œí5 Ú¶AÆçRÿ|¹Å®ƒLV2Ò…7‚J²“ "œàíËŽºA$˜; ’d¬R¯ídkRùlGW`í<crìä¡gkIæ"ï±ÐénÑ Jîi›uÜ©ã¢k)¿ZTÂJ‘x­;7%UK$‚f,¾°nT¶A[¼"®((ÔÊãÌ;v°I@ªOÿžœcLj´Àt‡ù:“?[-qø^Ò¾ï}‚HÍ%™ÉmÀ2à} Ô+k0Y)¼AAåõŽ}~´vbÆIžÏ)#ÍDCÓMD'ÜKÇ2Ô…hŠ™«Ä´xÕÃxäØ1rŸŒxÝÍ"ðÏØFRý.(®ƒÀ•
-ÞÊ$¢5(6¹T°v,
-–¤y =¡ì_ ·?!E(Ro)ë„H0¿Àâ=õ¿ÌÙoбⱠáHÙIìwA¯n÷ÿðsn¹½Am )e[bc…ŠQ+ÂXsO ø›ðýè{Œ’¡ÙP fËRwB¦ãB¤¨ò€DÃùX`úrˬ~<!‡ñÿ9oBÿ%­Í†>ßÓA›êRŠ\PRŸê3„/µ<j¨Ø-üéÂW• Ð_ôªOm„4(Ê‹‰›ç$œ^WÔ—WSA¦¤I@ìBµÍ0OV4h;½µ÷2¯²+:Ú0Rt j˜…ZðÔb@H.fO“¡Upµ¼@C¼Çð´.2!9È©LG+¶¯âóäµ"E¾½» ²ÛLužáÉ^‰-[Ub‡m.L»H…x=æ*ûóªg›©‘¦r£AÂYåEâèÙ–=ÌxY Äz!SD¹ìŽ ÃÀå’w­ÂIp?ÔßžHÏÜç± H¼QœË¢/Ú.¶S= »qhÈ“€<ŸÓ.Ú‘~‹TÈŽ†h•«ùeB*Vœ‘V ßzÉ
-ÛÄQû&*‰#cÔúNN˜Yò@‡-Võ˜îp¸ÿò·åƒÍ¯Ôra†AøÓGƒF}qÎèÿô~¢c؆0[i
-CÁ©ÑN+žÏæ(¯+dtÑC•aÄYq„CaS„ë{††`e’ö¼ŠEŠi~ä+÷Æt(çËž#xüWèÅÍ)¥q32¸B‰IP™ÂÏ ªy‘RÕZâåû¦lBïC³M˜·TÜŠ>áIÑíº¨‰u ¾ 2En 54{.äó¦g»$f‰©µ­sXUH{¨ø¢xõÈ-ûÙ/›IŽ?Á¼CŸu(ä“™y4¤“¼†~Áyu½¾?VU¯4I–z.siô.;=•E™Áà©‘%c¨Ì|ûÒ÷g_q×Hè7Ížù”̪iô(gÈ»à xðS•(¥u?†è|UÇsÑ¡L–yj±™Ã£ûïAtŒ®y=wGA »½Ž“Î;Ep‰ _Ó Qg3bÁKçÍDPmLâƒïÂ5IÒ{KpaP9
-<Uîóƒ?¬[˜µ¹÷Ä°=„‡ö¥Ã¬ Ô$Å¸Ò ˆ˜«¡•˜¶'}h·’°¥gRŒULÌÉsÍ@õDÊ]ïs<-)Gƒ‚¨Ì [)PÕ{NbšYÑ’»‘&—™²:î×òý`]7•½L<€dqËñƳ_Z Yc—øœÆ<fL0EG¹{ßbí7ö¥õ€Ø0ÁSO¹û TæàÔþmhÚ†Fç0Ïp¸o|&yë£búŠã(N_‚ëž tôQê„Y>ýÄ[Ny$bš†é‡A¨èë âݬ£ÌÒq€Lº5~ªçµÃë j˜¬qžc«gqÃÓ)kÜ:ä›ÇœÇ g´‡âˆ9¹o$W|QËIO2á•n—æ~íˆbwº³ƒáæBXÉõ|9_5f.g’Ÿc‘‘ÃNtïðÌâ†É™çX`ŒHµN8sbDàó*¾Uî-j¦œ¾Q¬ÓyHˆÏ\øzÞg3;†žm]¡\ Þ¹ÕïS+¶QÒ‚ÍÓ¶Î}0ñÁÜ1bS€°gÌš°Ž HãfÒ¢¢K'jº²½.ÔhœVDZQ2Ô9Ó¦q7Ö:ÞÄ…š¢×½œâD&”d=Îaê7LrÌ^tÁ.U2c9NHÆrà›RI-€ì¯ªÛÜ­A±©‚þ…ÏTÊŒƒ©¶zÙtcFëUR©å¢5Ó“Äè5Íé1Áñ®N÷-“64Ô–Ûz‹C!—n®³q/RbàŠ3;xÛ7òVj¸¬©aBr ùͲ[/.¸^•éäìWnŽkš5˜ ù|R¾‡ñÐ|`ÁÕCŒƒ‹À4c|€æryW¨?î›iíøò™ƒÍõ—³ž“£é±¡ë­­»kð²÷¯‰ç a÷Ÿ·tû×[â…:z»áhO\¸ýˆ“Ñý³¢Õ~÷÷·|ûñ–o?ßl]¤ápÙì8ÚøûMnÿxCˆXµ§¶K¶Õ.W“©Á‹…5bçAdl¶ðkIû渂¾D %IÂ÷6[g ä_·‚¾~$¦/o¿î$”ˆ8ûFDÓÃb²¬emp27ËlJ¨:F¯ª]Wt‡Y`Î
-ùš"|¹ÁJ´Fã!KVû« ÉÄ7ÿÛlÙrÑ0à( Þ‡ðldå öª•èœ…ã š‡µ2‰ý ¡
-nèBÅ~Æ\0
-
-8^£ *µfV|e':gá8ˆæa­>C^ òT òI°m‡Vaýb_É÷ Çq§Ïdö*5]Ì
-®$*Í*cÆg«bõbe#õcL¸`<$(ø
-
-(^£
-µf|!'8fe8æa¥>C^íñDíñ9˜}Ó†¸mC¯<¡9Šg#ïlíWI-,[¬iÖ©¥G=aÔ̼R³¶ÚqYñ9ô¶¤liëˆ î!AÁWPÀñMP©5«°à+;Ñ9 ÇQ4jõ‚ðj§jÇ’ ¥n­vaýÈÑBõKZ9Ö7³L¢a5³Ú’“µ't,_
-^íñDíñX¦Ó(eÐ5jwÙoôŠE)[½nHPæÅ´On7 t»J•švùêcÓÔ¨Rš³fâmæ¹øžOf®Ô4mÛ
-qÁ5÷­‹”Öpc%lÞº%ÌUÏ» ƒñ_ð
-kÑ ²&5Çò@‚r{cØGãêä’
-ªí¨ñ§8~},êôbðjŽ§iŽS
-hŽò¡öˆÅ¢lÈŸ`‡*ŒòV¦¾k¡ŽÁG?
-Åûú‘À¿ì·çoÿ}ûî7îÅÒL–­Bëè‚´:jÝê,<Ç&9ë‘t€‘>QföÍÜäv@èš&CçÎ Ö$VsªmœY[!~ž; Œ$)%÷Ö貟ŽWÙf™+ìíû¥úÀÅ2MRîÇ9r ªD{¬']Ö&fWOc*‹ ¡‚áåÛ.½VZfç6K¥7F©äKiôålÄÓóI¾ƒzÎiT=/?78u’½œ"Ç!q@23žžù<¥ˆ`„'ïjߘ™•ÉËåÈr!ÛEéäÍ/vÄ(I[Gìò!O-3}ƒh/³¤\‡ˆ{ š’¨´^/q QJ¡ÜY½€ü¹¯EÿáP¾>3¿ëÿg¼Ì‘ì8’ zÜ2…o¹/â(Bå hezĹÿ<ψl³_•4H‚½øÏŒŒÅÝ£äì%= Tø‡&ø¯FžFŠd×A¸b3Æ¢x-tø%Wª+éÉÕB
-ä½k
-›C:V…¾ÒÚÑ6S(”½§Oo@=|„LÓ »ªçÄÆÃ¥=|žŠÒÊó ’X:”8!Ä}Õ”ؤðhq²º¥j猘ÃHL6Û=
-—ä´>RiæÍÝ ~‡$ÈEÿlH¶‰cÄb ƒ@FµP´ã'~#Ù{ì>yŠŽ(Ë”]!»OK )7Z»ÃÈÀç
-´ÃÆ*)aû+ËÂÚ™|DN(Éjî¿mô¨[ÒäøE£Ò„Ô<Œ`Oä‹ 5to¬˜‘Ÿ–+ò« æ?ª•6O\1'¢`–G‘6Œy
-63÷Ën¤ÇÉ÷ ’œFsíJ† ‚ –ËÒn‹ç¦CÐÇWÄJ^kÁ
-ý…Š@Ò«3A*«µaúÖ´Ç)SÆIýt r2Dq-ŠŽø–ºãˆ@iu5Ôûý×1yèÔæÅØCòJgÅr²=áÐHçpL·A/|–-¡¨UHŒR’eQ]Az>¨÷Ôq›9sÒñtSšvÒÀËuÙÌ¢nYŒïÚØÏ Å„íæ ¤ T¤¹xPft­$××O«3iôNÎôô#ׇõcÈèš‡× ½Ñ(JTMç<é$$´Ë0©GФ˜T*"íi+̯k÷Ù—Ð; ^
-IÉ­£ôˆ,MF=ä-íªv¦k!ev4?'‰häP­ú¨£8¼£…É^…â â3/ö^Ô'Ÿ7
-ï4Ú]B> „¥%[aÜÞ_(iLL2RîwZ¬2Sœfw-Ï…*kUUĤ«ãz°=@à`U‰ ßI¾è¼òw±’”ôP
-O2ÓÊÎÁÖÜC\ZGuÖ‘%מ~k èÜ©m¹ %ÊPËÃ`|t¿î6¬ÐyðoÓóïoüõ-
-;ÏY„›ž¸®Mñàs©LšÅ
-!bFRä1"î'ò0aA¸|’/Fb »ŒáâÆιµÑ°°ñ/Væü}wýXù§ÝG8…eeÔ"îb^™óŽIöFLXx²ƒxaeÛyRdÉñ6“™ S©ÎᲦÛc,zC.¿
-–¢`l¤l¿?q&ý°dË*?¤ !”ü*–6:˜Õbì±üÃ"VŽ¥ˆ™(aV´m_uAva°sØe©¡ÉâÞ>‘£ÄˆÕäˆBÑ€MþÎ hSƒ¸qˆß„a [Nðüt2ÊÁOC=2 ¹ä(z3
-ä3âæ9r @Ü율sPKfÔÇ´=ßY7;Å9Ðêîã7’;CÞÀoºhÚ†x‘ÉTýQ‹'éÐ}(A'fX¡$q+ë
-©˜(å ´EQ/ë62AØ-Έ³ÞYɲâÞav¸ ãþ\·à»œ4æÍAY—aRÜ®™X©4n4„>•o‚Hb9B(i$É%‹°ãçUWPïLQ††óø?ãe’+émáôÞZ‹çai´¯à4¼rkéûû %™¿õÔ€¤®ŠâÌŒaÝ
-ÓÊþ4U]­Q°0ÞHëâì=ÂÃì@ðNò=<Ö²˽,A{gåŠ:@¿¿39ï#§QŽ@k
-–pzÝ9¢-™%µ1`L4ƒ3œfðÞ
-åH™ê¬; HOw˜þÙ[}ÖÁ·EßùûÞê³Â‚@Œ¼¹Ï/Mý|©²È§yWÉ<T¶?­C!pŹ–ÌÓHT#_ë’n(ctô–æ¨ëšXÖæôÛµÞ#L]§™ˆ"ÐH¯â~( r<÷u”»i®+YÍw•ænâ«À÷(üíHý|0àj7”„"öÆ5Ìì EiÁÚúWò̹™m'РŒ¯Î4†}!T$W†=N|0ÊDj*%ÎÃc0‰.¸D™*Ûìi•H–tz¯£‰p—ļèjlm"x5x¸H@–\¹ Øš¼TòaZPwÚŒ¡žËT½¢†pxI òêN?Ìå ÒÙ$óŒ1×½Ó‘P#h8eê´–i”?w^»Ä á.”.Öø4ºÍA>ø+\u˜˜Ÿ?––Â
-‹0¬í ZšÌƒPøüfov
-œqä bÜÜÀœ¼s?Ãu)ë9¹CRüêX‹fw†…0”Ùªê­ZÈ7¥ºÒ›ùõFVÏ»ÝóÇzôBãô¤Û‹B”…d› Wh@pþU^°äµ‘&*ŸP‚² bîÖ†²æ©°!)B~›­\n5=G±¬¯eX¤ÐZ“S›ë/ˆ\ªS½íii!:°¥ érq®ãÁ3ÌjÑÕˆ:¿“çºnÅ‹6¨DÁv64ôà\OD³ƒ Þ†ü‰Ín-?Rž×¸Ñ5Žxk{©´rHE8ð`­@Ú F úùZ”ÝùJï8jšÑdT=êâ)Tây°\ëµ2¤ê">µ5…(ZÃY0 3¨fVf(©)oºJH·1/ÊÑ„0„ç5†Þï­.PurÒ4S{oEÙ Íô×lpGÍ7®­ŽW¬„z
-¸ IÀ êÕqsëZ0œ8/†Ù:l†cnx­5ÁR.8:ÖÁ–›á ÐÉ”œY/LƒÏ|Ë­š\²Ë)<ѶÙ höèMÿüŒoÉt^Y×z2U:—š“ùõÅzÊ€p¿À;»Õ=dÀde@ CZ–atáé\¾KA<SêC¤w%7ôóeæ;—]°×œp BÀanp›µ{;R ‡òËÖxR““Ú› –»–².U†É­ù‘¨ÌkM!![PˆŒM‚N²|õRÄÌ€æ:GÐ9sç%ãNwî*ƒýs,‘›PVפZ+b¼”:^ü>ÍÙ6÷¥Œî»ksuñ]ákþv¦B "Âîoxä!²–LI
-¯õÁ} tlgÆÀ´X_†)ʲÓ£"ô¨qÔõÐÉm‡Å¢¾‡Ñ4€ÒKJJ=³\à;Ãœ 4š„$¢*Ë:Š"u¨îó„F¸4ŸCŸŸÞßûIv KCüÀ‡UZdËÎq·dÇø"¨ñâ<¿,Ÿ]Êo ‰¾ùbý Âc¹/^x<p˜ZdÖHfŸòøXƒU€(ÅïhD¶Í~zI‚ÑlF-e‚ÔÏ–ô`öå‰t<™Ôd­%bï]ˆkÔ¸$šÌßË
-]Xž±tÖ&4RŸ?'¦å ¿Òfj)RqÌ1¥î5©Ur|¡Ï4®,ë€à»œØ3Ëš÷ ‰•Xš[š~é„è²€ø ‰Š7ö: ¡w]”[û>q¦òï†õX¦©FŠbœŽÀ9$TSrƒ*T„Í,Ëy
-µ„ïãÛ ¶ãA ”–q³0Uy2Æg†Y Â-ù ;´EC%@i"ð£¨;Á®OD¹Ú±u~U017 vŽ~•G> „ô
-ÖK4‡
-wJºÊ£”ˆÕ…¨óz,žšîePR6 k+í[ËÃ2Lzo:~\}hžåÚà÷¸ü\ã:- #ëA]SýçÐWZ¹ Ÿ¥ÊàÅ+[Ѻa®Si[ü0þbmUŠÂCã—ÝéôP©ŽéšMq¬÷2ŸR‡h}•ò˜A2ŽqcŽÍÐïo è G™©g²šú-‡y¦\¹=B$öçÄtÜ/4F3´f©Q÷Hv0EøqÚrBÈæaÔ×@$†
-:—ýóÁ<GÔ|æÈQ'U€/x ?èMW‚?ã:°Gy‚,<w]äføɲÎK< ¹D]çƒyèÎ9”)°@¿ˆQ„óãôv€“pª&gnV*Å“ ©õéê|Ä‘“Ÿ ÇÛØ)ç÷Õ1|.ÉêfŒ_8“ØV‘³ò„6TUnÏA¨0vº^ó€üšÏIŽ¨t'¶@âÙÄ‘ 8ò<Œeî‘»¡¼©¿T„D›â»'DzOA%¤s
-ÊÄ¥p@k
-œ«ÂHÎÍ„”Y­Š :Þi¼§
-<®oD‹>GâÆä—&{†ƒÎùkŽ5¥`På¼¹. 6lÝБUdÙ‰ÊG¢à)}ˆ^†ÇS×Ò;ÐqD,˜¬Ú’u½§%}>d;éùÖa"È2N¨ÿ:ã•’Þ¥.¹G¾¨¯'ÏÌOKÚÄ·½ç³Ð8±ÖêƒF\#¡²&›ë×5ŸÇè}ÊÞÏc† iÔ­Åž•1ó
-Ó¦­'F‘\œ4ïõu@tˆŽpècA=,A±5†(F"„¦9ÍÃ!56ÕœÅËÌ
-æj>ÌM pèJFPdžÓÜá!øˆˆë*’¿IÝœûñ76ùÃ¥LAÊ™ íàï±um ÔbF­þ’+(‘ÖÙÇɃQ*ÌJX´þ]óþG9ÿújMv¢ËÀŽÙc–“¿
-ø2•ðŠ¬BÎu.3onø¼Äi§þZt”4
-!`ÝƤÞKÑ»w'µÂ@¯Ê¦è(1Œ‘˜¾—uŽ|äÇÒ,ÉA
-dJ]PJDÙdÝêj‰¡VËC‘訡wÜ%°yÃJr_=‘V麰JûhÛÙÓN€”;¯ºAÛ wÂ2ú9Ì.௹ÞÊ‹6.N' ‡Bå–“Zí#7ƒ|:]m]%b~Øß² !±?JAÞœÎßYBïŸð÷3Ž¥]aB1gjmŒ›5ûpt‰
-Úž8vº÷û9°DO$Þºz¨F²Y óIö&ÑÀ¡„X|x €Z:sZ5<W•Í1Wd½[Ñ*ÊEù9Ø"fw-1÷°Àì¸,ÿ¾„E0Dƒc<¯ú^TøƒQÄG×<Ïô¹¨G¾{ð'»ÈÚz8^€6
-ÉÑüøA5ƒßU+d±¿R¯]L­ ¯òììBr’Ã7Âu›X@ËîkÜc«±#»´0ÉKF2Á!ۦįB¯«:}Z‘Û1ß ƒŸaù˜Î×*A1µáVÖ³ïáÆ_—Ì1aÁ
-6Î.Ûp¸+¹;L«2V­Ž]ÑûCÑuœ7¸ËÌ)bðs6/áÿ3¥QWoŠÒ2¶­ÙÑY ½q3L…?EgB…,“&†dÝÒû ªMÂBϳÌè=œ̽
-K.´¡-mñ߇õM}yž‹y¿9”]Îr•4ã!K°Ó1nÚ[%¸J
-¹ÿ*~Äxókìæüôøv4zÈ-¥Í§%Ð a
-š:¥€Ñ7îçc–T].öleSâWÁÄÄ!<žCa©ÐlÁC—½Ä÷/Á [ÔN±²ö€jÍéîV„+Ä~ñND.O(ê.1›<§¹¹¤½06n¼¤ßþň}–A_ŒxI¼<á&ÀŽ}Sâ/ï¼
-™‡e¬#Ô0Àr£,M²°çòÛ8všpëýœ+6.nt1…ß7¨™ÃÛºéUlŒeÔ¾eÀ#ô™
-·¢ÝÀ«ºç†sx¹èbR,†
-¤À+âB•yÀD|EŸL€´Á<w7‹£dô&¸ Û«ŠXÕòÉÊ×sø@D$‹(óˆ%Îáš'
-mVI›¢wïi‡^ÃU»¢£„Ó Üº.“AÀwÃÒi–yôÐÿÜA³÷œaѽ!50 ÆM3Â&࣠»<ADü`ºÍ’Ž1‹âp[‚mn0,AK„r^u-âV óɶ®2™Ç’òÊ:¹bTC=îš%XÁi¾“­Äñ Vd]…T.àtf¦T”-ÖXÍIO°ºÎ¹#ðg ÿ9ÃSÅ`ªÓúÎ÷~8>0¡%…Šo#>¹¶¨xiŽ2–ŒKí$ƆÜÉ‚ðiÊÐßy´À¥Eß⣤‹<{ÜÞÃn‘i+v©mðøÈœ3’…úq+ø¼1¿;‡8
-»û€ÁËðì
-CL–dñ¹¥^S É[°À,ºMU®pq±¢Å±Ü*Ò—S?„ƒžlÜòã2QV‰¢óƒUG¿â4÷¢âúû+
-üÁ fºQ'1æ?“þqÒÿìTƒxë8ÓAþ‘DfUÆ8Èé-&L2a ‘JNÂϸ
-ojâ•àobŒcŒé3mÈÕ¶—™™`Kž#29-O»ì*¬Q¼$IJ/æ& ñ¿ØŸû~È ê˜hê2E¿žŠ<œÿ®ýØYæŸðXÀ°©.Í-˜¥­[”
-‹ uY¬µïÏAš ô„ªnL[5c>³šªH†ý+í¼Î… ñvym„^2
-J CëÓ:27¨“rò™Ãï}x;ðÏc³)Eç!ÞÁ¡¼hM¬V¿:@àtØÂkîìrvu‘%ÿÛ U0ºœx^‡<F8¹HDœ¦Êr¢í­)éÊ4 } Ž2Œå~ÁÏ·"¡ XºéWgjÊ•#¬øV »I¶UÎq`0_,“;ûCÉG”þüvª9 }\ÄfqÝõÕšÓøÝ6ûbÑ'J8×[‘Ó ~»Éaà —CZÞlTÌtÙôr(J²…*]êC .¹WY•f¬éàqÚ½Kˆ%ØÿA
-½j‰­ŒÌÂ%ÉžÁ" r›Än¯3/RV?_‰–…`é×|(¹;>ŽŒvVî,§l÷û¡CZå·Fï>¼´’ÏRñfò*«Ã.Å+˜íe׉ÂêBÌn¿néOtù¸åUebnÍ1R0Ie"Ÿ¾ÆD9úfö[;ßJ8CžäÚã2<¹bÅ+ƤsQ7«ÝH‚;54›À(PÆF­ Ú‹ª¼FšçŠHãü
-:œv%7UC@7ä– (±–8O+<úk§[‘Ø—™Wé¾éþ*«ú‰Å²œ®‹¼h’/nn<—^A¹T˜ z$VZ“Í)4É1€êÔ‚´† ¥#në\aoæžMþÂPpgÚÍv£€¬UgÆϘ(¸v=y)^DžZõ¹ëÃQaꜬùÏÔÚ¸±]•Ñ[9 /²×Ä"R¯¹•Ðªe®AX
-ã)ˆ2Ùa<eÐVË~šË 4„¥c šÙù‚{lu+’übŽ/è[!\,JŠ
- ƒÔç ãØüÞ¨0n.# n…ÆÄA
-ý­+‘¤‰¸ù$ ˘5,ÇnÙKÖ0Ã… ¹±§I¸L\&7é%ŸŒêOùÙïÿhÊgfõóž¾å&„ˆS¯íioEÒ° ²ÿ}—€A¾-çR“¿1¨‘wÉLUNΈ¨Nþš¹;j?@%ó°ý˜¬îâɨÉ0ÔØ÷:xFFF=BÛànY’]B¬£[ø¬a‡ߊ=xç!#{^§p+n.%i2®¦ á»ê«ÀÓ/½Âéq­ZÔknnEÌ©“\R݃sÛìžÁtdx§±æ<⛣M<­ªhÖ¢Ò„àÛ*o]¸"$‰È€©c75Ã¥AÒÄ”Ub§7Tˆ
-de¸´1ßÄ-<Y Ò_q(|±ÌõŸcTÇß›8½ØŒÉ8qP<ûˆ†a´å‰Ôí]RÄEY±ÂEIùAš”y‰ào^5mÝŒg×g»!H[JFœ;IÎU3÷(ÁI·ü‘p‹€/µó2 °ixDCÎD)•âUÊGÈs)Fñ¥
-ÒC*0Dí:§§ÿkÞ%#°5†¯6G£!ù·ñ¦¨ ßb‡*ËÌ6Š+xj£0ö ?YÚŠ¼þÁ7ÏPt±@¸œ?bÖSøaÈv“eN§œµ¹Žl ^Z7;ŸÃjdžýb^%L;ì>­_…D6¸ai{ÅžV"ãÚ÷«žaŒÊ©"†q.‘U¦«=^õ]"eÆ£PGÄ¢…/Ægêi-¡8íÆåˆ, ´—ë˜ä‰=J…[gò¥T ®¯+p†`ÊœJæµ»@¢#ÓÔ˜®Î Óh3T7ñòk¬BRfÐ,l
-„³Œ©³™ )Áåá?éXv‚p)_eñø?¤É_¬ÊÜ„‰À×¢$ø숭ÆUñaØ¡¹²ÅóR„ $Å­$ºf…åd$h[xˆ~ÄHv³¬ä¾Ó8”¬YÑ-t“áØÅ9lNŽBIÏ{½äŽ›¸­{``'ˆ‰¢qùÀXãDQ•Ÿ¯SÍ©=F6‰Ž6}ZÓ¦Ê!&Ìh´]u“ášv¨¹G—ÕU¾÷AQÿïô»Šô¬6ËÕ
-1Æèzû§ErƃoòiÞÁCMS8 i©ÏÐiŠ,'ÛJÜYÖ¸³¼t ;—½$!ÃbÐ0Ö°²0%YåÝBYE踤¸,6Q
-
-uäChò¸pÏ m'»Ê8æó9쌡“öv D‰´ f.¥¤©†(µüõzS5ÎÒÄÕ‚˜”¼#<~ ¿ÐŸ [&Íæj@%%/‘lü 0
-H‰•wSùÆÿÌd2™ÉäÏä|7¹ËÅßårä\&€qlŠ1ÆTêeÕV½a!ûÙ±“›øð70EIhµZ5$šÁ4¡•´}%™ä^HÖoà÷ýÍS>ORÓ[Y¥tT∢㠬î8 ™GÞÌ7è¤oòëNÇÏ[&
-uëXà¡pmw^TŸzÒõÇí§ÊV6õ0p0cì|7-=“ŸSþƒYXËcÆa
-LÂc§ã^2>fÆc.m9l$Ã6! Ù$DÌ,Ú jÚ—ïõÈÏ™ø$äÖ—#æ4
-t£AY Õݨ"cN6鶖b¦á½MËûu³JæÁn,hâá!]Õ”#@›%DÒcÝx©¨O?|¾3­¾°1\Ø›.–†ž£yuóጲñhNÓRúpÈx#;-¬Û}´1ßÏ&Ç\dÒ8Œ†eXÛKÅõ×)Ø4Ì&]&&îÒ‘1·–€¼ÖZÚiü3Œb1y+×—"Ê,
-t‘°i¤´ò A ÿpÁØ“ŸÓµÚ+ù9IÃþË¡¯ó¯¥g‰ iàý«ÑºŠsGoõ—ß¿Ò5£¯Í[S'Wî]üÍ꿺>Á–A>¹M â±î€öbÈ.©¥|÷*œ‡Kâó[Ó]Ÿî¼¹~24æƒÀ•R$ãV¶b°ˆËÌ$=ÎjúæM6ã´PIPL%¬r<R°UR‰;ÔNË*tWÒòv5æº>ÇCª*f“oÏ
-¿+ÌKk§ùxÍí>沂Áz^9jÆa§‡œ*‡±˜¾Ÿ@Ìb*ã
-MŽVÜ
-ëº8?ÔU.lÃàÀG¶T3fy•»ÍfÍ*:e–“ˆaä´¦c~"ŸŸÓNAÅÍb2¥å¯ÛÍÕ(eWu‚ý üÒþ[C×qÚÿxÃá:^×
-hè4ª+,‰Î–#Šf1ðé„EƦ ›s ÿm25ùˆLúïPÈMG™Ëi1¦íFcº^<e3Y›ŽYu€LÎ{›H{ýdÒi`ÒGmÍ3v¼áñÕÖ–êºÃÆf¹Î¦¬*šË2“ðßb’·1«÷g+ÙñûÕu—“]³)NS®<
-1‰hÄ®%ãvu51q¿Âu€€ìJ,jèç¸ÔP^Q]Áa]!¬n#[1jÂÚN:åг«+9ßÃê†Ç_Ût³kf€Èê™ ›…Zsر¤EI§'³™»Ï·¼˜¬ÓZä¶ãnÕ²ãªÙ›“—âã_W<¦àX9DBF~)¤¸„†T­eHs Côœc•¾õozõÎtñØ
-+61ƒø&þ›öNü¼æö!MoâÇž8tëÆù‡C YDdam14Ò°ýºïOÛ3¼/w8v¿[ðˆSÊóÏħKA}76ðð°e Øwæ´­¹Ã_oLñ¿¨¤mÀû`ì¥`ðñ]R¶cQYK1<|fëyï§ïž‹þZ^¶Ž ‡a÷ò|)d¸^ sÌáôÝŸŸÛ|&üKüÑõÏ(ÏübÉÙw[tŽæuWÑ9y#:/m,Ômh@ÝšŸ“þ«;‹!y[yè¡“v
-—O*e’à°ú*ú?ÇeþÔÆyÆñ¿"mÓv&3i3u2ncìÚéØi|Ù\‰KHHÚÕ ÒJ«ƒÛIðQg§M° ˜‚Œ@×ê`À\ iµ«½vþ‘>ê;š‘VÒ»ïû<ßÏçé¾¼9#þKf½#$]TB×ËÆô²rTÛ ü—q„VL…T"2¨ª-Å4÷ø´¾» 9ÉÅ'ŸÒ‘ñï©ÈÈ0Á `RÖ§¾u@ꎡWŽüŠX£üô î¢!_+}pº;ËilKÂzÒ¸MX³;ár”¢U1~ÃÙøè·Lzü“
-µ¨I8ã"ì;Mh[‹Aí½Rƒ÷ íù ÚÈ'1—Æq.m·ó¸½ ù
-7H?ÚPðwÿsûåÝÖŸÕ~x°Øs%»b¿õ˜ÅÞ‡m"´)® uæ½h}Σ­;˜×~³5£¼œúIöÙÁ¬êúIÊ†í¹‘[nm-ìÜžë<Ÿq·Í.µ~–óJª$UEo¥†lh<+ñƒìoŒß9T‚õCHÓÆtãGñ5üŽ¸ßðAx¬é÷ÙŸµà;hcäQýÇ»ÓÒ '„±› ÚiXçþœôó-Ÿ¼}Þügà@uå²n¤† õò±¡.jê)
-žÎZœ …°®5ž¹9ßq6YRN›TB3ñÉA%A[騶IÚdÔ‚2qÜÊ'‡'™¸ÍÈÆLr.>Ÿ° ÓCtÔØU~c6òëCF.eÑñ)lŠê»Š„¸n5±àŠ¿F ifÀys~¤>ëQVçýÈÝb%“#V´
-ÎãFÞ¯o¡‚Æz§ð?ŽËô©‰<ã/öínmm•ï¶ÊÚCgg«Ö™µfÑ©¯Gt‘Q„„
- O2ñLØ8QŠ#8AÚ«ìÉyÞRÄ8ûQUð`¢‚[‡VÀ*1TÂDÄ,&,j¯¬JºË«¨ü8NŒÃ>Õ»€h §uÀK†ÑãUœ(GPQ1 W—Ž×ô#Åa¦kÜ\]ðàrƇöÃ=·g¡àAœ áš"¼‡ße½qÞ«SQAóÄÖ"ÊÚ™ݤ}òž£U5r }øySc.¯"â|8$ Óæýìi`ì0RK+QTr\cµˆ/qUÚÍkL.².=jy98<Y
-èõi§´5ãÖ£ÊþjÜð¸
-ùX‰bhÁóx‰öŽ½d‚Qi‘,0+ wRZ3þ|¼ALTÖ0MÎ)åT°`ç^£=â¶
-œa%b™¬FG¦ËQÂR〬a,‰+!‘v¡âÝ%+ã² §ÉG\?/¤}ã3TSº›v®ZÑ*ö=&ËÚGø®NÃÕ²ìT:þäP²iÉx¸¢—%íhGÉ£¥€F ¹.`˜jÒÕ2iü˜Y”ÜÉ’„v罬!³} gSôáhÎ
-zNÁxäìÄtó™äBϵ¼WÒ±ùªï;ÚnPÂì!¥ &/tš‚W¥VÞĻ޺ÝÜ‹»³Cõ“½ç³óbpž¡–¬W_ö‰ÚÀC‹nkãÍÝ3ëÏïþ•vJXið˜—÷þ²7ÝöÏì÷‡2ÜyÕ‹ð(¨sû}ë7‰_¥lâ–)ö¹Ô ÿZÙ­’ œD!oƒ˜,ç’ÜÝží:Ÿ²ñn€‹JwgÊ•èxz
-föé5ðÑ8Z#µ]\j
-ìØ“¸~¬V²žÞë5¶eHŒrh…4©Cj½u´n‚Ü2Xè_{Òh=tªûòÛs ¼È[Ñ•¼ƒP”ؼS
-hŸ¬3åj.Æür\!dÂZ ´>M’rVÚ§–ÂÞÕ"àJµì *úr^%ØRV
-"ü©•&—ÐƧNJAƒ• ÆjTg<ZW¡Õ¸ÖÈ„•ÂœWµX&rópÖƒK‹aÂ\^3>.Ç­o‹ÀJ•5ÜXC>G4ÈÖ\oý8ï¿à3‘Ñ÷ù i¢4•¢˜²÷] ãšãˆJ
-ïzŸÞ¯s>à\9p=ZØqL¼ØX2Èv/ ¬7ÈTRʧ§ÝŠîà3ö—”OÖ•÷ËX9¿‚Cù1 åU¼æ‘ä²^º5'¾U¬GqÜ\]G…02wc‰ö.KZr.´wÏ)érµÝŸw¯‚ÿ„ fàlãÁ†²+C·×¦îžMÙø Û‹Ü3ŠN—GFi?Aä|Jn†TteHùýOK’¦Ä;nÝþœðºoªëÛ_”õ§ö§ùG¼ÖËÒôiÞ;ز7ßqÞ7qù÷ñgM¢â¶Ã塦×ÝuÌ
-Ú_ò¨sΡæܲàVr¾»nýeÓ™í©û_GÞw_}*¾t*6Ñ}ã84ü
-aB
-> Ž–qˆ[R+œ‹Éo üvøYëÙŠWÂ>ÙÄp&"ëè¤ý2öþ"÷ÊÞ,÷rÁ
-’ÞÁ.×HËéÝ—ª~Êýd‰öƒ8ä¬Z¦eÍähãiÒôãéÃýõ‰EáÍ¢ù Êf„½òp®~“qÉÙµ\ɺDw¶æ»¿?° ›Ø‡ËªÞŒüã3… õIÞo°æjÙáCxi»ôNÆŽqÓƒ:ñX’ÄDGQbì(FŒ}ÞÄ-0'’BXØšñô^÷d§*þÖ/‚x®½~[ŠŽ¼/F¬S¥¨q¼–%¥°„“%9—( ‘v©ùÔ
-.bÜÃÀl¦ÇÕ8n¡ís~a€­høÎùU¢Í9QÃê”èR™4›Êa•„׃ü伈 Zc›uLCƒŸ$ÝRÎdiÚÉ“¤²7é5åýˆ
-µrS+7GjðYÆ+cmÎu×µŸI΋;ª«Äh†ÔfH\òë¾ó€÷¬ Ý4©âÁÝœEëÿÀ¬T‡„óÉ.jȸ¤­à,÷³Ny{Þ…p²¬ßó¼§îµèêo/»oV"˜’òÕ|ItïÀÉ»¾7×ó]üyÛ¹ô¼ðvÙ§S^• ýAv»ê4j“‹rVüMÏ¿h¸•KÞÅÒάm¨Áñð§¿áíç~c#šÿ]ê¤<âÖœWÆ.ú4òjH§c‚œ«)[û×);çÂÞtëUr ±´*îùäì»F‘E æ™v£} ÝEŸZ”$Û3Üÿs\æÏMœwÿ:Ît¦3i§é”&Ò@&R%$Äø¾±­û–V«{%Y–0Ì1¦qÀl°1¶îkwu ¶‘-ií®7I¿êïo»û¾û¾Ïû<Ÿ§ƒ 8,x懀ü;Ðâ v"TЩ«l¡“Ô+ãD5`š
-­Œ®ë;ñ«£M»™#o=)…lêâªìlöDH9€{¾VÖj¦àŽýôTyž
-Zd,a3W"6U%æ0P1³¤ ^ óª8àêâÆô¥¥ë§~Ãl›U­ÌÜ&ˆø*g d†%ô×ëT#¤­Há?’ Ñ ¿ŽÞ¼ú—fná)C.®U“7”ã=°œ·•Çæ[Àg\R?^ j{™°iš[ä|Z3ÞȘtt tÆe¼Ë |?,½øö¥ô\iË8ØÄ]n&¡¹ÆFY+ë¹/¤0 n/¢Úhßí(;ß¼^8Š ¢üºì<ÇL\Ö»ÂçÀÛnŠ4««IÃÔa@Ý]\ýò`Ó4ÚöL.ã¾Aãž.kø¬sžÏØí¬Y>¡ØÝ@ûß¼Ðw×3v ½‹Ï{W„‚Ó ýEÅCö×3Vcn¿µzVŽ¿ó‹.ÕHïC6}/F‹k07Æe¤ÝTLÙLj²Ð\ƒõÓY‡ƒÉ¸nÔ2¾óYÏ=6eÃúd\Úêüïk«C 4ÐSíh+7¿ ™ìã!+«qãu:‰
-
-¨ºè˜][‰Zd{›º®Šß~ š„¼i¥TCuBråýF÷Ç»:÷îñð ¦ÍaýÕö±˜C×î)LÒ$H£´•Ö‰ê¤nª zpW@O{~uw-Šö·áýM_9 ½ønmèã½õ‘/˜€vì8ƒ¹˜ª‡ «º©0¡^õýµ´vù÷GÏGOÖ"ºki˜áêA6¬êg£†iÆïs1—¾UôW;ÿp¸5 wC1ÐH¤¶GÆô#Õ¨IÚzXÏc>!£e“³_3qÑ%.¡©“6¤žÅ<h:©ƒ
-™¦Ž6 Ô+ËLuçpE¿QPqý8ÄLmï‚ý‘WVv[9äTH|±²3u†žäH£¤–0I˜2I…Ô½\¢h³YÂàòò­F(h\= =R˧VËI·šôÝ«&înq„ït*y7Š„¤n‚
-k9ÐMº0.å¹#@ÖsÙÿëén«`s´2±@(úk¸äûVN5vœUÕpq×QTz¥µ…´¼• „E ÷MÃ%4clL5ÀF ô…¡ƒÀT“²9˜ìÜR…4+I›‘‚`ó3EŠ/ó¤fŒK®óiðû”ç¶sÌ1¸aŠMjG9\5@Eä]{ÛÓÿ|ï—^b³˜¯V@u<Ãg_±éû àÄ'ÀV>!ï¾ÝÈ{5@«Í‚k‘ÏÙ16c˜mí.Ø œÁÜñk°’IÛ*ZÐã×(ºÕ×$ç@+½5Òé9$
-&Aß .È¡›BÞê¨P“¼ ~Ú,ÎÿÐxíy,·Ð‚¬:.úžëCײ BÖf­·×’Ã<|U2¤z¤…>™¶[E úˆÕ¼¥¯ÆµC|Ênm
-8 åS݇õÞJëý§jAù`7)ظz ´9qú`íÚ'å øR)ð?’Ëô¹‰ûãÿI'Ówe¦Ìš6a†&! ¡!>0`Y¶%Y÷±·¤ÕaK> `HB ¸P<ƒ/IÖ¹ÚÕeٴƇ¬cµ—´’Ióô«é‹}£Ñüö·ßãyž2¶÷Üü-ƒ~¿Ò|)n!úvqS®±FÔ>TÝ4]ä¨ú4W» ;;nw víIÁ¦éæ‘ÉnµÈœe¸ž˜øº3÷‰ B_]ÅGê¯ImmÍÚ'fF¿h³fÈ&¸´pN,Rîýˆµ¯²JMH‰ùÇBÊ‹­L^¨,/)I¦²„«™°TÖF>9|}ë#î,¥¼D3NNJD'$-C"cûín‘@ºEO ÌÒHú¼ •àO>Ÿš¥<*çñµ²P‡jjdœÈcZµˆ#íòôS)\9Ú§æ(êý6Žž”óIÉelliή_?u¸~ó4ÔÿêQÔðm5‚éåÔìm6üC+ãu×¢ÈÍã(>v°î8Xý¬‘ö‡I۶䳳ODÈwÊŽ'̳š/{gˆÌ™È*÷8•Ã­„íšF í‚'Ø-“^¥hŸàYs¿\pLˆEó ˜Á°ÌÝ‹Šù{q´_)úçÕÐó“·¡—jÙ–ó"°˜Eþÿ>2ãÔvòtè×ÀC‘1JY»¦•7˘®ï¾;[Ù4}眣o7ôç› 6©CO•bø™Tð¥<î8‡¶ÉêŒyL-Ê9¯Oú€wü$Hò`mð´Ü ,5%‚K¬×{Ñ›K/ìF¸] ±ëÁá›Æ£&$Æ¥=¾tJÞ)‰ÁM½9lÁ9j‘¢»eß]9OQÕ¸î«Ãí_ ó
-ã¥`þ®6b¦«BÌ¥—þ95ºßÉú‚BÒ5úö_Ú3•5k¿  |:ÑŒS–zÌ‹óI7Ù²ŸëÖ10ÀADwþ`ÅtÎ?¬nøÚ1r¼l¿Úxm¾*lÁLì¿Ñ«­ŽŸm3Æ.Ì'ÆùMIÉÀ¬œ „ÈkRÚ5Ú„Ý#ú¯Ûyóðò_ýáñ÷?)17®rnRJ£úf?
-zòß2bWÝ¥jD÷Ÿ´)Ó!iøFI;µµ„yè1ñéï~qžû€ßÄÝmwèý¶Û~Žűñ£„íFaeüÓ£-ÌPe`¶"Îr<lÅ矨™àL=fº¼¿2úñÞÒЩÊêè'bš²í¯bÇoÐ~2F·Xèä2:Ì85bÆ¥áOA'ýõ4fªDìƒÐÀ6ë!•^¶ÌºÑ£¸éR5¥¿(ÁÌt¶Æv™t7`VøÌÔv)´¨n“T#e׸A-íœÓö[E!SŽ—oœÚYÆGŽ¡îÇQøH Pßšš®ÅîüÜHÜYŸ™:NQÖÝ(v{wÝÑ'q³ÏxÈFœÇ+pî`“ Ì‹l`FÎM÷ô^fÍ×+‘É Í4îT·§ —©Î¿«gŒ—k ÃÅf~òŠ˜#ÉVanEÝ^lýsm˜ÛÎîÔbk‡¤[pw>ë¥ëÚ-B¿dÖ©kl}®06ØÜÞÊ:´*‡ZÞ—0ô·2Au Þ›ÙzÜ|ùݺö¯bÊy[ÍÓAà TbݸÀï)Å©GJ1ôKî-r„ƒgp£”óÒ0ËDò ” ©vïàÿ•®«%qèÙO€…ªÀajÖ?­rþ°š÷ú»yoqè¤ï•AãÅÔÌýV1ø ½í¤p~²ªyÂ¥é0ŸÀá¸AÍÚ¹ð“v60£fÓrʃIÀBÂ5"¦l#BÂ2Ј/Êq?Í'æ~:ŽÒÎjœF*äx3ŽÚPs™C­Õ¤c¼ü¼gÉÚßM‡(iÌx´j¼p¸f¾,Ù3õ4Q- †x1øû÷1Ýß ÆäŒW!ZYËP#:þùÑêØÙâ“+üçÑÍÕM·X­ÀnHi/Õæ¦PAU&ô@Éx°&ܳ·öØ$Æ
-¾àÐÀÙ÷©ù§­¼Ç#g±IÈG·ß>=³5ûÝï“óƒ”RÚdzúêù´©lúFÓÆ탇)D³ŸrÝÜ[³õu ¶àQ%ƒêd†p¨ÜÞ›ÿý7æ {«–
-xfvQà¾ßh²ÁY!çq y©f#G›ÇÓè¤\
-dY!áv4¢ØŸÀ´|š²ŠY l6!§œ#à©ÃbÂã£^{#‚Ö¢ȶ˜A„Ì,1˜Q{ÚÌR.9G"궛!¹àvóÜØL¡ZX£“ö Ð«ÈPìÜu ô­ÍúCMп·/õgË‹š÷–4†ü|SJz\ÕfØcï«m†üµ ?ÒŒcÀ—NÍ0Àî«[Õ7m×Z[^¢›£ýÅ>X±Ýh&}Të—éWiÅÿñÌ·î±çœ9szæh;­3=(Êâ4( ûZ©¤R$daSDaº]Z=Ú®,„,•­R!1¬BI*©¤Ö´OÿóÄõ¥*©zë­çÞû»q§½ =LÙ,å2øyÕÂæîÍ9sÓÁ²­‡¶çÃhO)¨m.ÔWK°µÏÐÎúMeàh)1d.…Ì]ÐC< ë ÚõbllRˆÍH«îÛ•f¦ e#PÕ÷È«óÅÄÜ1CÁTLÀ*+,Ûv^ÉÏìÎ*j8RÝÆ„õåòˆÔlìÖƒBWg‚¦Ž0¾ûÄ’6ðmLßøæ—c)ó
-3VÖ\Sâ†ënyÃ=-¦Ý÷`FF*ëž™ÃM÷OâšÝUZÅ‘ýC3äñGMçI‡™ŽŽŒòÉ[ÏÁoWH&/Åœ˜@¹GDè]EÒ3^ Æg˜ø½ù"55Ë%=÷ŠÐa«zäSSzîúßwêlàIŒŽýLäâžI઻p¿qi<¸LJ:ìÐ=œ%Ê=–‹< JÔÄÃ0äÓ¾_$M=YßàùœOÞP ›n}pz~_wO%í°¸‰;Ç„ôÈCÈ£‰²Ê ¤‹o€þ;Å$Ž‰)÷T.f–åH`žôí— OÐæðp• %ð!*sï M™}=½Œ´3À¼EÂ*c ýUzI}>»¨k`ƒ˜,3o¼´÷FýÃÁ¬æl%a·Ãb<hz›¢@: A¤ffððÃdƒM“ã*:4¤)A Ä°Qá.l¨þ.÷¥}Æv&d‘í¯˜Z·æL·ßö½ê ,¡mÉ­è[²~CÛo^}cfÑ©^{¡®Ý|Ýÿ¯,øO¼<ç3vVbÃx%â²ó1t00séØάþ6çýU%æv}N»ï¥m ³œ! m ¡K™ES3ã3¶°ACëaªûüô3,¬ƒ^Ö7^:ŸYƆŒ¥ îÇ좪Y¶ÜÈ;Ïøø`
-ÈÕ(Ò[èZ‹„öª@j[¹˜ª¥Fû8Òé Èÿb@ßxéÏñG僽gب¢A
-xÍQ^Ö¦˜@Ù"ËÑî<YKÞ'jf…KŽý\€óeQ°”±»U\)†X!ò¿w49õb8†m‰é±ÇÂçh!Œô²”MÇ%‡Àƒ«â÷Ka·«œ£Ó áÂÙ¸ÍÏä£F™ƒL-¯"ŠJÂf>ºUY¿³(mO¼-ox~ª¤p ®ÉJQã5&bhçHcW)jèϺ¶ïÇ5,9:#§
-°N112)€¤äÈ”˜²ã Yí,¦î,|èUE
-º싨æÃ#¥íÃeìáIÝ\Ìp½ÏâýY`ˆéÀJ‰ñû%wÅ”U#¥,ÚOk6 Bº²ÀÒ¿ù¬½›ó†F&4>ÉD=c{KHÇÖ+ùw<…iàçjï¢W´MûÐIÙ(®¥}XßöÚ"'–c„ˆUž[ÔÔ•U#Gh›EÂÜÍ°152Í¥Fîq«ÊÆžH°ç|W—B¸’ö®îÎöØ|ÕbãåÀÉŒWQËÅ-*†t |b?„œ¯Pè Ö·å—Tµ™u 5#;¾õXy2³ «ß~!?™[PËyѶ×êšõ§=߬N·ýiûI×ñœW][
-j(-”wlâ`üz¯†]bÒ¢s×$!Å%kºÕ1KM‚¦¨.EçYQ=‚õª8Å1}'9fè$›:¡ˆNŒÌ‰ <‘ë’“R”äôQ6³ªÑ%¤öhI€~¬pë–x Ÿ,]mg«Ò¶Cs]h#ž¯IEGKÔs‹Šçu<£Ðy¤&jàbÁ;ÕDÀ—$ºðTˆ.>—øõmõ¨¹ƒzhn'…çØåþYFa؈Ô8P¶K çùA/ ÏókC:^õÉ‚ÿûzã?àszGIËô*™Ô Ä]XŸþx:ä銄ƒÎ·µ zîØ©ò©à<·xß,¯:2'xž•‚ÚNÒ¡IBED¯)ñ¨˜ˆU~fi§£ó‚úCsùðç!˜§Øz—0 ˜ ´(aÄ–»¹Èz2²ªÁ?FÁ½Ç̼ú£eAó7Eô‹51ìƒ3·“W¸à«Ê1åGÌBúï»ÏÞ|²Š¹G«¼æÓÍvøÈÚF‹,ñ|àlìrNþÎ
-¯R\ëo¼%_³ö&Ùù
-^™M.¨Xø¥ñ_û>j5ù´œ2 óRç-Ó=ÉÄø•¼RŸ‚[ìÕ å–âí¥Wø+Aàõ'f!.®3‡Œv7®ÝAÚíý!R:GÍGç)ù«Ò«•Ò:) Ü%0Ë)³Ë™Žq8û@cŽm¸³E1Õ¯bgxÕ!- ô|?8MÍòLâ“]ã-· <ŠÖ»»Âüúá?£ø´‹¥FDÏ®rÆ×Lânz„T°&# ¼:ª—Ì à O¢ú§¬ î)ìѶ7lPnYúZw†(É[ƒ¤›n”s¶$¢œ¯u0ÎKÂz^ÍÉŠˆ|²*fDŒíøSÐoÏ7zºÎ-Rññr;åb»» °­
-æ?dÖôp¹}Š˜æUŒVó«ÝSÜŠý1f®W%¨ºèÀCÊüN©_”y¦è9î Zúö áÆÞ%Å1 gEÕ‚GX»D ³)9^µ_yNâß1£„
-Ê]ékLXÛx9<WÄ=¹[ééDÍ=ü༘蔳 ¬o(W-½øã³ú/•¼Ê¿m¾mLƒìð«*ÔÈÆþaãQNVàª`v»’ž½ü¾á›­¸k^”ã×°JNV%ȉ¥[^’ÐZQ]
-:Á9ŠpN93wk€”´ùks‚õMSBHÍ~pl·†ÈÅÁi]xõÊ7#!ì2€7³ïYßá¿3H«>SóKÿ²ý—¸Ü‹¿;Ä.ýr_FÊû´ÉjòM7ßñ(ˆ©n ÌVã5Ó‹ÊKö‘æ›1#ïÉ™åù‹ðb'Ãg“S¼ÒíþÖïíí©{[nš~Ä~±þúÉ7.”±ÑOÏQHåøÕLìÑŠ:^Ñb‹H]È@Ÿ&š“vû½ö¦ú ÷TkæÊ»æÛÁ~ýÉZ·0¨ã׺Ɖ·vë–þ]ùŠËÄѽãï™sÌb¼ÆÌd&ÛK3vƒ±ÌØP¢H -’R¡…±$Û„Av e )»ˆ¨h¢EÖÁlçÌ{ÿå}üÏuýžë{ßŸÏ šfÇÜ ÚM~„=‘”#@Æ!j¤UÊŒÓ ‰Þún‚—ID Õ
-‰¾‹¼ô'²ŠGc?)⫼*÷ëBmþ™¼egDY'(ášNŒË– l‘ƒ'*íWëQÞ×SUð«ùj¤IRñþË=B/,ò´‰ó}Ly^§£Åá§Rj¤¾§àå×…Fê÷µöÆÓù9ÆQ’¿ösöS­
-ò¸§óyêûãéÒÈÀmM|ATä§"ÝÔ0—/¢¯«%ZÚÿvª¿­ÕOçÇŠƒ }_ËxI¨í–‘ãÔp +þ'Ò²Äorü¸ÍÓɲ˜cIÉà ÎËðDÕšýÌ&c¦\¬ðKO—ê‹.ÕõôÛmùMEO7>¹Ö„z¼Õ‚ï´ç¹ªšàO÷„…Þ":Üç›ÀÓÎdŒ$M[¾ûn?ÉH³—ÐÓìgjÎ#ÌXódE’¶—às¥¬Ì¸\`¦Ü(™N§JÂV›RTŸ²]v»ò=¼4ÐÉè<Æ™Œ¿”s2Íãäà]!Öu•tZkÈy¼ñ ë2LI¹§¨Íõ:+K¸VÖâÎæY°£1RÀÑй­@>…˜†‘"à=Ï¿É«ñ¶…–jíHyœu–›ýMÕÖf›­ÊÙéľ\`}¸;W™æ0@Žw,Oxñã(.éd¶Úð`¿?Çãû:õÃÍ
-ðBÄÍ"5áoUê÷qµÈE~Wñ+¯U ¬ƒ¡ÊhÃ`i°a
-c'†˜GîI !_†óýÖúYÆÓÜ7 O,s¥Ð¯*.þr‘…8´×Kñ3‰ÊÂõ=ůÔp`_†¨Úó<msëA‡bB˜u²2EÛ_°Õ^è¾×K„%)'ò¹·žµÞšùØ,-Ôö‘ü´=€Sˉ»=…ÛížÆbÿï·Ì‘#Vøù>êb€YÊkÚ ^Æ‘òh¸ÂÇ€v;‹<i¡ë-Þ\X ¦ðÞ)fŠ¼6Óy–•ò`wÚíÀºëð~çò’˜› ÔZW–¯ˆm§î&Øfì1'u¥µÀGÆÊt‘U @Ë5N³•±ÿ5K ïÍÓ¸À³¹2è/µ ý_]ß<šç»\g¿ÊOv4ô£\ ÂðA_áKƒˆ²Ú^²ØŒ¸^n*ÿ¥ª§Þ,3¡§RÒ[«˜bìá
-½æøÙO;KãÔä¼ûeCRúFR‘ÀJx
-k"ºŠýOÆ©G#åé¶IZ‚y`§Åluãƒja‘÷»p)/îë(À¶ ÎÚnƒyìu ½¬c„ð; #ݪ¢$4!NìÜàû{#„¤3€£w;0>‡]è—û] ùêD§K'óvQH=Ÿ`n–DÔóE1Ë,gÆŽºÑVä¹"Ìú}§5ûÙ±å{©åÌ6çzìô°sìSÝÓ¨¾óç¯mAy͋оêÏ¿ ^~àÑ
-là<±w ”øoKè¹
-©ë­tÒâæ0oíJ>Ö<ÆN8,?§‚Ïäô؀і„0c9þ|º¦f>=‘‘NåUˆã!:ôzšžö¿­*â7yØK1v
-|TضŒšXžáçëü~r²û_ëʵšWpðœaí{Г ÚïÎó9CÍCV`ß_gĘÀ`kYîºæ GÏ–þˆuœ«zïdÃÆ\ªÙY“ÕéîkÍEÁÿÒ 9?õµÌ‹vúV´+)öS s]+Ó~•Ý·¿¡ËM%¡wZ>ãr†‘m:áJÅN;WR (ß>:ÔQÊNq1)˜Ù‹Me€ßBÏ<øí q1OL6áB·»á/·ºQ>W‹|üÎ8=awˆ}9ÇGÛ<ØÉ0.ôlr¡ÄGžn»;LŒµ)EœkugƒyBT¸-a¼«C‚F©¶šK¼oTÜÌë>×ü¹Þ$´+Å«¢ž`aÇï”øíI«õEnªêl‡a2ôžá !ʪàÂÖZq¾GÒÊ4³¬êã0-æž‚“ä¸ÙRè©ëÄ
-râ.À¿¦\ðZCŽ«œÿ›œ“欓‡\ÙÅ>’²r<‰ªïÖ9óòÍ©‚›s>]‡ûªþ\ñuYD?™¢Ç[§YWKõÔSyE–}‚µ')òÓ·Â=®ƒüÔÕ1n55%–^æî r§io¼YsìJV굊k›*{w§Å%\©‰S ¿o4ÖžÞ»'­IÞëæ@ûÑ;˜ÀÝN´ŸuŒ³ÓSúêPFŽ2LTfÌwàÂÆ+rwÛËÃl“ŸÒì
-NªUN7—E[åXà=Ñ{]HmâìT)Â;´"FxkÅ(ïu1ÒÝ>BOºU °‡2F²®‹iW|f­~a‚{ÉûRRÔoë9–I
-øf‰¹]ÎJ-éb•ûcSÀüs¯¹ój½©Î¢ªÊß }0ôÑ¢ÌRz”áÿ—iSšY†çËTWu÷tÆ,šî˜ulMǘ˜EclDMÜ5
-(»€ ð¢·%îŠ"›€ ( à¾ Ê* ˆ&éLMÍ_™7ŸOÕ©§Î¹îå&¤G”HŸ‚S¹((¹¼5T›P3àÜé+]ˆ+K@Y¢MŠ¾»7Ñú'ÈTmÜÜÉúº!âk@klåÇ »¤sw
-Ÿm‘T‚ •_³wA~qËÐ`Ö2CºNªKN-XûXìžE¥ÇÍäB—çÁù¶Ò°@;ëR oÓ¢Z-jæ]Š†!#«: ²RR Î4ÄÜè"d—V|4Gzåž%åœ-ó[l}巵܂¶dÕ)˽ȌAÙÝÝ‘úôss;~]N†¿oÊ»b”àÊ?›»Û]#è”­o“,¢‚K 9 î䃨žø:ªgUÌÑ¡Ý„ÜS=ät™Û°6XŸªhƒ$-Š‹ÿµ)«ù}ûSŽ°Ž\èÅdkDÅÉ!úk–œñâ'#ðêÊÞd}š[Õ”åV4=;Y AüªÖð_R]ÓìʸµGì×skvFL4eD¥7ÔlÈ¥€®¥ ê«Ó d#ô~ÂætSaÜÆm 鯚’çU‘òö&êR…$ûÕµ˜MÈ0 `_Í1`‰¾Y
-<lè¦ FÐ
-j>ygÿÂ1Þ’=D‡%̶–]÷È…È€FP¿>Ü”®½¹¶À‡_vô—§Ž¡²¼³ÄG9Õ.£pMÖð{lI@h(Íá77”¬ÜKz èÚ5ç‡)jîÏ® v…¾Ÿšõ‘ýi¹õôÜÌ%}u°PŸ­,dØ@)Ú›BÝß,¿ó}Ö¯Îv|@ßZ6ˆ§+RàHÉ-·¿¯MÖ² ÖñŠoéù°ÄqòÓ¿kxùW£øÌQôš@üæ‘SAó øÖ¸‹e€[âb0OK-EQk'j–p=jÞ»ýIÌ5Fxy<†zøÙHEDu4¸{š˜å™k~íSÒ¡a=€ókÙ%ÖþÒ¤õa|¦OÃ.ñi˜ð˜Y@ˆÛ»ø!3ïÖR
-Ãk}#‘ÕáùÈŸp4ìüX{ËÖ[¼)kÈ/¶Õ€9ùÎÒS~kQX|5²ÈƵÜÚ£BöÆ`åÍm2Í­dÂUí5!½¤Õ¯âÖlËðO<sÔRPg#ãmÄ@)<˜D¥¯ô”Ý1tÂ/ûuHt M\ÌÖ1'b3ÃKŸ†ÛŸ@=9žiÈ8šE?
-É°Ó5..
-™%œ°©—²Ú|¢c•º'ÎAäv.{OÁ€ïNÓ ß¶;»‚:z¹kŒøx[ÖœîQÒ ¡%zÙ‰‘Væ7PKNì
-°›Ã¸<çHm¦c´úá¡žwiY˜]9}a{?t¾Ù7ø®K7Ïkâ¢bAû×®žóu±h_Å(5¾JÒ `ªÎv%Ÿ¼ Ÿ¸g@¯×´{uÄ"ŸžV{bd¢¿lŠ—èG§L´bŸšQ5÷w ÿç¸:ÿÙ~×ðBS¥fE«VjÕª±ÅÖ(IXÙ‘E„$2ìÕ FÍ›4ö*iŨÖ<8Ÿß8oÎr¾¿óâyû|®ûºï뾯«¥údRŒÝ롇AVÑuGr^²|Ö„l¿.Åg°gßOÀYNÓˆºæÚ„ÓAAÆ~/9T?A‰:©>›åA}nÿ^läTÒRÝhmú·vÔ‚þ])HÐ)êâ×›ØÒÂ8£J¾Í†”<lÀœ Ögítð¢–jÉߤUÈkU+ûH%-SwRƒwzXq—êöŽuøSÈïÜ©¥UÛ]xMy–­¡¯È÷jJØß»!g!;j"Ú1'= ¹W£M'}²ÂYcÒ<ƒã²^ÍðùÙ+Å‹p'c”ˆ‹©ê¼ëE ÷JÓ;q¥n®»\ä㵟JüÔ’']Ÿäƒ~´›©h,8ìæÇñ‡
-Iöa·
-¢:õ½1;÷½qB°HñyiÔ]‘ïÒIÎtZ–‘G#µ™?gꈺAv‚n€m}Øg,ȹÈ!.Ž—Qù¬¥˜ðX• §Æ£ŒJÂÞ„)ñpI
-ÁN‡çÂâ½^(wGûê9ÀGú”$̳Ce]æO•Œôk¡Ep4'%oq¢7 -ïö¶|\iiˆ¬¥» Ñ‹­Geö“¦ï(ä6L-qè"`¬¨0#ßçöà…µ%@½t3ªÍŽ2Á/r_í DCwƒw«å3¯·k(gËÕÅ[ÊÊ åV¬·AÅ+½]k’N>ÌËêI/V¤¿5)5쫈ð© ýT§%E™¤øyQQ9)‘V|¸©¶–v£æ3.Wô«ÍÁÑ< m˜¥ÅTäHÈ7%žÎ‹w¼¨µÖê°yiMÈt}¥ÏPÆU†M°%Æ›âÞEx8/;+óÒŨ&=ÎNÉÌ|©Dé>S
-n4µW+"ú-¤ç?ïXÅA_i„´»M1çBS] í/E~•¹l´ÐCÖ›ªÂ±™æø°`12 ÆII2¡&„›°Ò£Wg& ÜðXç°Ü 55öiKaÂ0Ê͸ÔH8+r¾A%ÂéG¨ÑÚ~|Ø÷Irâf/%hï3µÙÇ——{ôóÍ•UL?hV¬¤…YˆšœT³$¤—±ã“GÀzvæàak °ï¦Ó’’˜?´Ò®ÿèëeW+ ÌÁH~Кí÷°W[}³-o<SC»dŠ›þk©
-}³Ê'üV IÇ*N?Î+^l%¡ä¥nu¹IM…è'ôäw–ØÈ
-åy“êØE­°äc²á¸÷0t@ ÀlH@ûû¤“#ð„øxfi L»µÅ?\
-Üïg†OËÉ/y嶭xs: ^†z>†½©þ^
-‰)©y
-CP*5Ä,æ¢QÒ²M‘DdÑns‘*¥Š˜w«­±¥U>íÙº/ÎÅù_Î{Îź]Ïz¿¿á]ËÉ®}˜v½Õ'ûçNÿs§¯óúMŸy´\,wV͈i냢„¡6¦¯ ×E[àX“H’Dc½!#(hw/òÄ
-ª©é@ÂC²²c¢!%"ÑÍaâ… qy$¢SGY¦÷(¿‚° hŒ>˜é*y3.¾»f‘7Ì=)ÖÞŒq9;Ð*æúb^}=šO‚ b,¤†GB8ä;‰HgFûâ€àí .h ÜÄÀÝàHhɦ»±QoøYÇS’âãéÞ²Ý)-㥱'uBÊ%èYuè~ö£›ým-šû(Z<Âý ñY¼¿Ü €xzC ¢çt‡?ä‘c¡§¶µ¢á„Ÿ­ÊÏÖ¤ ‡6uoôQÜùJWõñ¢òáæ3yñ ³<Ù(ú?¢:Ý#!%4JHdˆÅãÆh¸åâá8`=0åG€‚ÄTÇÂøg}ÝwDH»X–0NçDyŸl¢¬½ÁÝáλ¶^~È„L¤c3=h9åwR€ž˜äxˆ%àÁÃnn?H
-%‚·Ç-¤/<FŒt¨ÍLöœSÔ‘®ìÒ?þÞí“ÿëCŸâ×[¥øjKÎ>Yè(Y`…¯XÄ Fn³3;Ó¹*)ÊHqH–ý‹dëzÉ!áî XwðCÎA>@$C}f–‹¨¼
-YÊBŸŒz0e–ž¯ œ.¨˜ÿ[g¯Õ­ç¯Õ-ŸæuìwÏ-ÂõQMÉœ±;ÑÒà >þWŸ_†ª æ;RãÓŒ!ÞÅ} ¢IP™UâįhòíRÎåçvyËùŠ¤î×òzpá÷aøï½þ¡Óuwk¦#omJ^4¡è
-{"nQ3ã:kë¼ø÷ï{²**1ÙÉ鮩Q±GI…¢ô{ŽtjŠ–’æÀ¬ªBK[› ¯-]YÇ65çû+“ìû²¾ãlEÙ|:/¯ÛyÚFÞì)>Z2u®Œ¨KM¢&~U!º$r£––åʽO¿UEË@LJCRxŒs] WZ\êYSLGIš½4\^Ä„RLÙlKYî«õÝgQÿù ³üÞWiû!ãbCÓ~¶mêÿh7J—‡e™¦®àAk^ÅFŠFv><̧;¤¥£âàŒJqä1*ÐF!;Ô¦’伟Ñq¿.«Û~m)ø—o”Ú/kOž|F.0'K–ž£…ñÞ3iþÎS1eNÉïh
-=ù“sbSž¾êþþÚÔóÃnè=[Ñ
-¾¾R5]nT—o‡×~ì­g›*Þ—%ëÛºVüqUÍ9²«9ûKFá‡çƒœíÑÞÜ¿ÆTôƒ…1ÝÑÜTÿñü¸zÏfåN[ØŸ§{Š®WUœk$_WÛzù…]Úðý•‚}µd1^­LÌŸ­[NV´ÂÏvƒüt¹¿ýp²·ôxR÷`ÊÒ¼19ôxkvZcö¬ë¥e¨t^gÉ—JcL,&æi[[ðk}ÕÇYkû¥Ýjüi·Z~®™4¿6Uÿ¥¸L¿ÒLÏ0þô´=gú¡t>ôœL;é$³¤™‰c3YÝkŒ"Be ‹ì;¯ì(ˆ¢¸¡ ‚ÀË.;ˆ€
-ˆ€ì¨ÉLÛü)}çÃóõ9Ϲ¯ëº¯ßƒ¯ú¹„š`•ÝBö‘ŽÑ^™}–ÜáŒî‰¦c:ѸC#íµ¯*߂˪“b±Ã*—·íÏqïë¨ø¿9Uò~³RñjÏýnC,zjÙš—%ÔœÉ쉴‰Þw´:ý}ÎHìû%¦0V¸ä¸ûäÈLèöìpz·æÙ-;Já3½Z=d\ZRÌân,³-›"M‡–-øÖµÈzÛ’#;‚‘s¡·à¡#KA¡¨è—) ¾yMާܨ†dš+èXóÑ&²rOÂDh³-N}m[¦>Ö-0;°ƒ¯Çšœü\+^x®æóîë¤s?©y¼.ðÄßì«ØâÆE ç^wT#ŠrP,¯ÆŒµCùv9(RT‚|Vá€5vÐG äN/Ô¶EÞ3‡’û(´%GŒZ‰O'Eº´”Ç:VϾŠÑº q°V€ûʾªAï/ »<:þ@Ü"Ä•|
-ä¡"f!
-\öí/ÍuZeÝV5û‘}S1åØ]áx÷”øˆ‘ÖÕ϶…ućÑMÌ^€–µò±1í̽Œýàã©ÌTñ/ÛªÅjÑ#fBÊ9Äé=R—MŽø^øùU+Wvó(©çÌü¾=³‡{V°CY©Ce7] Š¥çNÎTÉ åηd®Ô¦f@¡©GIJ¬‹ƒÉ€”£të±ñ}{Ò„„X~·DPvÌCÞeMÔfGj>
-"^;˜ˆ²{^•ß— Jv€”uð±Ç>6k•°Jn«`"÷å¶g;N6‰OŽ¶(§&ï:‰] útO†?6
-
-ØŸŽ…ÿr…Í“XpQÞ½B)"’A;Ÿ~f“>Dø¦—¿
-20%ž5³FmÒ™¹ÿÐ3# Ǫ>hNÅì´á¨•KXyÓU?ŸÛ ÏïÔÃbeÞC­……KØ’¿•®äœôqˆ¹ØõÄ]¶nêÂ- œîQûãk¨»y;UöÉ—Ž6q‚êÑ/tÓüº÷m ɸŒ´GÄÚôߌê‰h¨“vë!±ªîDwU­“ æÉŸOô3‹VêPÝÅEWÔeXÀ©øÙ„´ùÃéÖÛ;qMï_ýŠ×7Aî“?'V‡[ª>‘<¨ç3Ì
-ăŒI¬ª ¿H\ö2± ûV“àùAaÇçyÛôàuR´VË´åh뙄ú%.Yk†€¹šŸOƒöÌDʈzèWY»sáq/åº4ôŽ¢Kª†
-NÎLÄ@‡ëy#wÓ;¸º_®©x”«%×ÂbÁÁÅÆ4ƒ_¯Án§·g~J›(ý6)¶Ë#Ç æ­B”!f3ȧ]†Èð†0œÛƒ·F4í)¹°º_ª:w´ƒÕ™–¼“©x„¼ªG*¯¹„̲ƒ<Ñc:ÓfÔãF
-‹kÑò{³}5?W‰óx”x­©r^ܪìùêP›ªDdÚ m´`™~zå##¯‚´™f‰-Ù0/Ž7†ZÒºñ×¼TDÎÊ€”o¾ðJ^}_¾Yv½ï)‚˜¾Ë
-y7¡ÃWž8w3}"YaG6
-9xƒE0»÷ÇÀ*ZKÜLkMZY=Çjü³Ã%TÅù®|:㛊$ø¸ŽÙzºˆþ-¡&>+XEä˜^Š7OSÊçÈ—O°O‹[RQÊ,Šlò@«=!-¹-fba’6 ËoãŒ`®ü®¹ÒŠùa£„5S£¦¡Ê˜ _Ô¢Ëêža¥éPËjÙY ? mJ8Ùí ä–‡õlDG‡‡Ô˜Òƒ·7N×:nŬ”fÇ,â×½×ØòŒu|æ"¦,RZÔÈíšY¾"f$Õ¥läø¦ŸìþìvsÖ)–äv‡'‹ûBaÎMé*¸©½y³ß÷u;®çáÏv&TQ‹€à× 1»\±ÈE!“€ô9Yðˆy>1k
-;b!ää¢&*<i§´eìLTÁ5:s€ÿ¶êTˆ×TïÍàùyÞÅ'·ÙØܽ;ëd"#ôŽ –ÖœóˆXç{Y`ó4h$À³¾—f§6ãV怽ë·àê ä¦!r{ jÞ+”ôœž£uFsv{x*fçãÁ]èY«ˆ”sˆ``ÚFhÌ8Miµ}™]wYËo¿ÓñúBZJcH« ™IMa3©!j%Õf\LTvgø%ÐÝbÐ,a&ívÁ#d<ÌþœƒÔâ‡_]¦Ýþ‹EVùcÎÁHZÅ´“ZmÌ@ï9ßc‘3<< Á<ö)qw‰eGëCå'lEØ@ëÈxԔћÚMº¦Ô™wŠ7¯ìe~<wdc1»²¯$–%̌μ›;xºN©Ê:¤ü´]ÊKo hÏÈÜ™ot½x(™H:XÈ„…Ìî͸žÉ%¿Qˆ YÝ}læ“úÅÇaÿy þó@<4p±c„ŠË 8ØÕs‹l´òsJ‡~YîøépºùûÝñÖ½BÜ
-¬+U²¶ë’Ö{—’«¬Ž¼i˜Y´‹(ðt¨!ªGü\m¾þÁÍÆ\ð6ngž{EŠ´› éIuA=¹6n#7@6J[ÊHzá_!ü÷tEŠò/r_ÄÖµ)-]%ÁN—Hbð®&= (ûnÌ·þ+¨Æ<ŒéY/Ž”Ôö„†‹<ÕÐá«Ø’‹¬ »“TÒ éYí»—wM©Î@®Én‰@W¤7tÔºc Ü`-È!—X
-9yô¸‘‰ìâ%m̾¸‰T—¶UeíƒUI3v¸Üuïàmß½”I@M:^.„Í\[Huy+µ 21q¹9a¡ÂÛ¤gþ5b¹sªë‡Ãb­}¶¿fÿMßý”‰ÝT㟜*û ƒ¼—Ù Öçm,TÖÁ¾È×¼[Ê/‚®Ûb£Ã:üSàÃwOõäÆ£ Z£{hMÃ%õ¢ƒÑ¹6ë2foDOiM˜X¨Ø³5ª!×
-¹Ç_AÛ#ŠžVÔR뎰÷lüê¯Rk„Æ3ç°" ˜”°±¢znt™´YHÈÚxCa=¡1°IlŽ˜X=y÷ÈØ—…ò㻑é⮈Ÿù?Ååù•fš†ñsfÏÉîžÝälvw²“™d3IŒÎ$Ñ5c\#±lA¤W¥DŠ ÖØ{ŠQ&ˆŠ‘Þ¤ šü3ûæÓóåýp?ïsÝ×ïºÌ}Ýç:T±WÕ“ïÜèyá‘£
-¼rÌÿ
-beXIkòo’*‚ŸûZ¢ÀÝ‚;´V· Wé£ÞD ú¡Œ§4çÝ8\&6]ÙÆåÖ¡©s³7°C¬õ¨h €!€ü6èᔓÁg2j£KÞßæf7O³ÍÃ-Ý è¼“é¶gž5LE@Ik9^Eÿئ´]ÚÇSÇïÙ13ÖáÁÞíöºõeÊJjÿv̦ûµ}°ý¥®·Žì G£@¶OÙD³W'C³q y®C—w<³ÌÁÒ#ÆNÌ$JZ8Ì «/¨'¡S6öÀ•­Ÿ7P;\RtÑÑBçS·’Úx(¡¾5Íp õìtD;&Œøô„¦Ò0:|rJeHÎhJh¸xï'BIPJ­O¨Xí§s™îÕÎ,Û<<s[Pñ/ ¿ìºe¸ù™cƒÚ`œéɶ͠²\²>„[ñéÛâ ãÀ¾}3Š„.¹Y5\ÿèË
-¦.ð0hÕ¿ý̳݀-Õ 5fX§:_è&»hyq˽H¬u¯ÐË üÖ´]NÃMÍûúî 5 k¾”JÜÒ~ÈG.,ôüöœº¼ŸÎÕ\²GÍ@9d½n9²àh¹á¿–™ª;þ­ž×ö5d‘VT÷ëùgRÇ7 ÷DõØšà"×ý ’a_(ÿI/*¼q2Mª^%u´ŠËjú`—z1©dÕô—ÿÚ)ÁæZ©p|D>W C3¨o³þ&¡€nÇvydDZäd‘y¶ý-°Þ™å·üv²ZŸqa ¼‹jYX¿WtúLG¸611+¹ëÂÖOŒì
-é™XÓBW–]‚«ŠïqÈ) _¸Õ}PÛ'ükß&±Ì+í-p|ì.ÐêšÇš…UÌÖ0Y¢&áhÌ"´Þæà
-lSˆÃu?†×P ϧžb§¤#/iá}vXÚföÚ—º
-=kï@ÇËmK­éÁm*üêpd9µ/šN˜x¬ËáXÒʦµ½%>eïkŸ
-ªÐE1-¡:pÔ·Þ“ØÀ¼
-n±à{|fTÏ|w¾CjpJЯNÄ8Ðþ2¶`¡¿á©CÊ$GÌcóÝ
-Wf_‚eê•?ž,ugÛ¦»ž{VЯ\K¨Î`¦ànqWn`‡Ü°2ú6³·1óÏ|õý”et>¤á“Û¨0À§3)ôEŒÌ;[ëÉIèù¿A0
-
-älƒTc_æ×óØaÃÈLøW'‹í̲ë#íÙ?èà_‚JZë¦ôÁ<©83ªçŠNשµ&⾉ù·‰_wSÑ_øw1!ãšiô3 cŒSÆ‚;VÉe¾5<¨fBJJ}D-ÿjîG'÷Xø¸‘ÏJîñ9WVÀõ dÂDë¸0Ñ»âZ*$ô¬ÀZw®}¼1Í9¹—ØÆW¤}…
-d[hy ÁþEI/¹Q‘»"Fǧ`4Çw˜È”K¿2 °Km>)2÷p
-œ&ù?Åuþ•t¾Æ|fš™Û8S·;3My«)k²¼¹¦KÚ¤¹+n¸±*‚€,‚ì‹k¹¦fj&‹¢"ˆ(*¢‚¢²ŠâV§sÏýGîw~øüøù<ç|Îó¼Ïë¡$^6a¢W‡jž_#î‹Ù0¿º«ë`š_ÄÆŠI Y Ø¯DàØïåÔÜ›;cä E/1µ›qe½úyQÀöÈ)%K¯aᆎ²HÇ乩·ü¾¸©ìîòÛ†‚c½v¹7ÿæÆø‰KU—e“U'íˆQ/üsL졆GTwV†Îò‹ÿðëxüóµŽÑãE6q{—¸5VŸ¸ó±!ãTË"yULœ´ tGÍ-sI…óÛúøzѯ2"èš‚Q¬€o›»+·‡ëó7¥ôò’ø;ßPóã‚mct‘¡µ}s¬4ÔØšqÍÔžûËŽ}ºÌ¦ûô<î»ði6áúm¢!¿‚Ú#cVÛ‹ohš2škJûÑÚ¾w¢¢V, Öe—'ܽ$B$=¼"ðêšë¬ï:QöÏ}ÕA
-nòM¿žŽ÷{Ä«bF¹]N_,·vž-
-8Kôç4:eùÌ.©Š<ÌH Ë>Æ9äôbŸšYmªŽ1ˆ@Ávö5 >þ»qìÓog˜/oÚe¨‚/6A¿˜“ùÐü’Xb‘O€¹>YâñFàiÌ_sÜ—WWúÁ Íõ—äP6÷¦(¹. «ÎoàPOŒ4Ôg
-:`i÷™oöh0׳øzw–PàÑ‘*+lŠsu¨šáž…Ö«˜;6ˆø`/ó«¹õ“¬Ê] 9kmùX+‚ÜÛ“Ðá; éúP°©tÛ2Pö@ÁÏø·0†s
-›z¼Èçڜڴ,—’[ë×rð'KôºóUzÃùƒX&@¶¥ˆ¨iCºOË&¬Ëê‹Œ}Øô½IÞ)üj>Ñ)'å³ðû #óÊ %ó‡í)j¡„ ~0'(uIXUûröjoÕ#ë "â@V÷Bÿºä®Z˜w}m
-¯†Ûx¨¦A<3Äâí÷è$Ë 4|©rÏ2„K’0!Q"èó`Ëp]ŠCʨtH…8÷$9Ç-!änãóç[*úñÿ˜V¤ø¾GÁ@j„éÿZì,y´5‚J:35á \ªSͪë…%H89¡›Ë¥¦Böe »ãø<ÀWé;
-EÖñÚg6)1OÉÆ(øõ>µÔ§ªIÝ„Æ-vܱ7¤›Ú{O—D¢%`±ÑÚø=!ß-o,rʧ*ˆy;¸ë`M侘œå’2×ßc¢ì2Je‚^¨Àn)YÅ¿¨˜Å¿Íó¡a#¤¬ë’¦Ü–‘Ú«C˜øyQÑYNaˆ„z´Ñ? pn`áôl¢i õ§¶»(â|…/<_t8€\±Ã#mÈØ àðitÒ™™ÇóX„=¥Ä£a FQûþ4.u}ªdeý¤kÍýy¹öxm¬1½“ŒNyüýÚ;LÐë”eSÕ®£mË»ýùô*¿(ì;%#ð¥Ü«âÓß`7±>u3&`ྫྷó[ÏMœ&¯†Záš#åù44ˆkžGµI 9n£úØ%z:ê@Ž~¶Ú¹ß_ýò29ý¯E¡—–Û@O>› »2B¦WE)õkˆ€Ž×èÕ6‚] Ø»0× &)`ä²ÏW:‡½jFÍæHY˜SÉšñ@-8p§Æ9CƒlŽÖ%LÓ¡@®ÖHà[@Œ….v!b¬CÐP×dU‚{
-ój_ŠÎ°¾ƒÆ©8ÉW=³5eçf:ik ¾5Zû¨A=[æÐŽôMèÏkö'‹°Ë5ÇÀ躡!{JÑiÐûÌý ~à_Ýr,ÐÏð=1*Å«"Cÿgg0Ï—aÞylîÉ:·ãhãµ<°Â$,]ú?Åeþ”V–GñšéfÒÕ“mzœ,Óš=;MÒɨ±³¸kÜDƒ(ȾŠ€Å$îŠ-Š7Ùƒˆ. ‹¸uR3óŸÌ˯nÕ­zUßûî;çs»Ìq•ËtHdSHGo0½‡ÜßZ`–Qé5³)a”ð3äüÏCÕÿ؇Ü(áiäà±(²½`ÇÙšB?kˆÅàw‚„ ípŸ³ðèq+@‹˜Ùøȸ›|`ÙöÃ/î÷ã Îeà>Ó­@gÄ–Y´ûGÙ‘EÒuê&ºÈ„îÎ’r·äøLŒ’m•’3´¢Úêo–Qªb—žŸ¦\ZàTßt^m)Yu»3Lxt±­1²ÊnñL²·A¿ ­u²÷õm ;jhªk$ÿokÝo.j¸™ç"zjÍ¡E
-÷«†š«Ô_ŸÕÝÜT±›}ºNÜj/ò¾‚”óý@cÆw½Ùß±Küa‘_’¼z½éÙèüŸ/xǨoÃZ."®§W…T-YŽ¡Š{ó¼WצڳÏGW1eÿÝu‰>FIå›ãMÿò)cËTè‰à&\<àÈÎ¥í-ËÁÌ‚®rÁ¼…ùÅ+G?Ýc_íj(•ûzzõæ,µ`µqOM*º°;->4·¡WúËR ݹ—ÌCµ÷ä´ÜŸÆ o®,(;&Í,ýſyð½gä]Æ6
-»uc¢ù¹c~×&…ÝpŽÖþ´¯kzvfðc&kŽ =0p0ÇvQ÷—uQOÜ؆´öBn/óª“ì}õ·vÔ”â]ÐlÆ?:ÛÁ;a{Fêÿ9
-JÍ™õ£ôÌ
-°N-dرWéŸ>¶]· %¹Äý¶ÕÎ’D˜cÕغ¤Ç& íÔÒA9\f!":t®o¢æᎪñÅïë¾=cWw@Ë'Æ­â÷ 'ÀŠèа–˜ÄdMs’$UÎí®
-9›jFYh™ÕZâ |ŸˆÙ›à¿´5Þœæ…ÞòI«n†T„ò=¶2Ðxgs²²«ãá·TäÂm¹`k–ðÒ?‡{¹g •˜¹ø¨©W· ¨ãÖ^ű£GqâŠÏœBpÆÀ9ãv0K.Ók‚KlÄþŠðÍ¿õ“LG?*ÕÙ×|×(ªº²>üî™
-WäE§Ù‡/|Š.¤W.AnNòàÞiF±̃%&Ó­¬71á!^ »~WÇED–$@È
-lnlžXœXd7EuœÖ ¢Ðõ[å·´"ùÈÌfš;^*kcrÇ«¬¾g¨¾»=Õ”õÅMÀzêY@Á¯y"¥W¤ž¸z¦lâ‡+tpª5ÓÙS›²",¼¾©hÈüêéì·c_k%¨—¡µî±#O·z_ßÞà‘ã2ÁžúÄ£ EWظˆÏYÚq ¹=KÎ÷OQò*fÅú(2ÍÙWsÝ5P™¼È}ÙÞW™â•a‡ç„8‡¬5O/)»êU`³é°yâ` jlM(ˆ›E’C«¸+aéê>uöÎœ9%ý§ŽNá¡MØ7KÃfZ]ÐÈ€'ˆ¯Æå×v¦XÐm%³TÏ®JêkHÿcôÑwzfÎ¥íÑÆŸƒ*f¹y‚Y2Ȭ¹9Ö–{Å;‰{y°  F zÔH‡š©õ;‹`/#foÏ­Aý¡}¢­Ø=I/öÏÓk  .ÌøÒß]LÔ§ óØ*égl­I:­Ý£ kׇ¸ ‡ ”š ¦)+ i~½7× iù-›Ó¬rycŒ¹=‚)¼:Ú’ûÃ0æÍ¥Þ¦ì “´‚$[Wmrh¶½FóžÞO*ø«GΨÛ׊i¾O”üíÔóðêEpþ(ºF¨ˆYØ€ŽCH¸>ÈÃævô‰ñ.b$V…dØþ*—¶k`“¢>°¥¥”lMs<
-Z£UJ¨Ý›ç·ìi¾ÍC. k(¥%>{}Œ¥•Ôß6f\Øãó6'©ùn:=¨&m(ð¯²ú‡Óˆïh‰E ék#˜WúØùgŸßËAmÆŒF¿“PãrüêÿS\Þ_izïé=§M{ns›£·émÓhFkÓs5ƸÒÆ Ü7Q¢‚ÈF6((. . .† ‘! Côâ`OÁ‘4iþ”ûæ·÷ýé}Îûý~Ÿçó _x”„f«Uìéí¨‘ÉŒ›Ù,¿ª¯Ú*ª»¥b”&)ú+¾!^6OT¥4$¨„Nõ%ŸìÔ÷wú^u{ØÜ…†‰v­‘jŽ7è0 zgo¡¯"
-äwXOGŸèh]G¯»rwÇš®k)O¿™îúï·¦W/³FÑ%)·“>3‹sß;=AekᾸ*]/¨½Áßû‚N»t¼Ô”ýñ€5êÛÄ·J»Ÿ
-,¢çW·'žÿh_€<ÒŽ7äÆäÝåí1v×Ð%ꉶ»µûÌ*˜?³’0 3¢Ê¯¬Ëôg|)Áe~íZ‚üñÖÁØ—ô•XÄ}O½›¬þ ë„âoëÐÌG'ÿÎÑ ou=·Ï´Ý÷¯‘ëƒRf{XÍÁžÚGWÏ#+§æAgSlƒÜL˜X@é|äÖ¥îM7ÜöIQOÍÂö4ûúAh‰‡ÜŸD?Ò±jÓ@ßOvf]fק}E¯ùåBXæ¥ÃטÊÃU|©_ÑWÑšC[ÄöSg0aÇvxˆ9³0i^¶2¦¥õýƒraeü:6þ@Áì8^ãÂ÷¦èÅ2Fë ~ëãK’ÞÚB+øÑlw®c¢>Õ((N² ëoì/õäÚfYG¯ù ­Û¿†+÷KÉà† (QÏýŠ®"÷:,_3T|]=X–|ôæeö…•Bòh‰PŸ²û™o^Tu‚âôƒ•„ø°CD¼Ý¡ N¶i(ß¹ñ?‡´rT7$ð«88Ë«®\qoÙ•WÏ’4œÖÛS¨²­EÉÖÑ^ë ¡Ö.‚ÿîœAfO£^|·N-ý) Ç7zålôÎ,µtW‘¤jËó)9„€¶ßÆ·˜0-#
-ØËÞ²€¾0кcþD|‡ÃO
-©)^¦tï5,W?ÚjŸïÎ÷l^&¬¬¡C%¦ÉºØ
-9ƒ'ÞLÐÀè š ñ
-[ãS¡Ê•°¢YG‰c¡)Ó¯D×FÍlÛ"½n{ûØ·Åf¾wŽ*b[äOÌ™¨½ +w$¶= HØ1-Ñ°Ð1€A#z?¤aôxÕ´ß± ø/HßöEhXj¼«=OMãU)Æ¡úT›ˆX4}~yº¢æÕÝ\¥V\_Bƒ’Ö %ÉÖ±æ;Ç«ØbÝüžmªÒrIn%50Éq«`!dâ »5äÖCÀãw‘ù«½ ¿2%$ǵE·‡…¾MvŸGŠ+3 7E°Ç_³>W0j®’곿"”þvÉ2Ò’TôU6ÐÅÞ²ãX¡}º6CÇ+ø·’œóO§°9õ‚¯Pñ«¯xu©»SРçƶúÀïxø™ Ót°ÞœÔ kß>ýÎ1¼ôÁÆæFåЂàJËïQe糸‘Šþ?Ååõ•v–Àñ9»sΞ³;Ùd’LÌ11™$SÌMÓKìÑØÅ*¢ôÞ‹ˆ`‰ÑØlØ©"U X
-n"ߨðeÛ£˜üϘÒ_5ýÙ‡süFÛP{² Ÿwuö檜’{K/(¸éžiMê™øÍ‘†ÔÎú——½s\DTÛßw¢ãSc@χ4Tph›>sr˜ f—ãßO±*î ¢²n]8úç£Ö!Eв‹TãšnNö,vd”äj`áÖ{!¿ãó¯íNÁ3m=ºÆ'§‚<Àñª8p›”} £4„Ýï.ÓaŽY\Õ‰VÄé…¼KˆXºû‚Û@·iùØc Ð,¬
-è.½.¨°7XM[½m¿ObÊoJñïoÛ‡!6…嶇ÀÙ{ Ø !÷†WÑQ3²ð±.1fá°£V&3¬%@½‹ß{”R3÷|ŽìôLx6XÄ ÀQ~çQ2À‡JÂlŽ°©§èïÏ{rV“k‘^µo…ÍcúSÛˆ>lþ,™z>†ô\”àÅ/
-DÑÛúX? ¼­ö¦Ð !%s´D.ôÌ¢S]SÐÇŽáÆ»*AáÏJaMÂDgËí¬Ç×C2n{—ðEûóè Ó§ÖDûìñž¤åÙá<øI`…\ðαBŒQsn7È­Aýè’W5>ïÝè é»;ÏÍâþS£o›%8fi@ªýT°w—ïíx¹Îm|¸Ì
-¹n¡êÈ9ÏZÓÏrKNXËÁFw„]V)ºLΩ¸nG§ûubñ©M<±wõ¾ï$ ƒ.ʼ@/Ù_æ¶ú5TôþZGuÔ"8³ŽèþpöLœYy4Ÿž‰ÛØ„€ÞêÛ¢ÖÆi„²ç©Ålß*»Á+£»¥è´/ÃðG–Èíä£I68®5'ñÇ9jù3÷"®@)ªŒßä—]µA÷¤-I9<ãLËE…´Ý4­ý¾½$áoöAXEH'5tQó§™s[—(fæ3¿ï×*«F"‚¥t6f]· µ—G”̦ãb{†VdÁ½ÚùˆzºÎ‚Æ«x°DϽÖ<ˆH1ôÕÄÊé 4Å1 yá‘ኜy¸„ÊÙƒ%oŠÀ¿Y95j!>÷p™qf ´(™ˆãüb›…¿ØáÑŽ7°ÅžUDê©š\Ú TýÛÈ&ýé¾Øò]MmÜ“¶¦y—P¥{ËÄÒ\N¼Œ]ûÐ9IʶÀžèDq
-VÑ5@WÄMi—ç0Ew,°äiJÅ]PÊ­œ£ÐÌÈÆw†Áä»Ñ9»ãˆäƒyHÒÑø¹{¹ùy`Õ´+i/[²ñ`“f¤áÎÍÌ™™†¸°1Pÿ²ÑÑ5¦Ä·ÞžóÕÜ)ˆêE¢sSßØw¿œêYèS ¹þh©-Ã:R÷P)(¾ùE‚~g›!ÕHÙ剪>P’{_9ϨLš§UÝø©(¢ä£ý
-b4i{{Oïr¿ýíýñy?ç™Õ]Gyú¾âŸ]À…LóáÛ£ ˆå=:|’™ý½¾ÚSúf’pÈká#´ÌéÚt¿=Y5èx†úΩ$§k(YvþÝö$-ËÜOOf†ØÇ8L÷J—Î¹Ô 8rýl¹–pb°æÙ{ S.!ƒZËÓ‚Ö;¨ŠS±Ö`ëÇÅX:Ðáz4À",¼}ðøf}”‘ÎG&¼Ç¼½s¬ãb€ÿ”jðÉ«ƒ%¿ŽqÒn 1!þ–>xÄŽ’ Êò_…^ŸbƒÃþ°µ*ÜF‰øðo
-³ žèZ²nÙ>”=vé¹UÝ„¤ïšai_–šú/ÌBÁÙvª£å9•”¬Üëånô£Ù–Ê°NRNÐ-ûæÑ¿ÊÖÜ¥“³"%¿Úìc¤háZ‘ñ×%…O¾² -°SSÁ=ç >Å¥e”»4´\¯Yra¢øÞ˜:aaÆ6XÄ‘‚O¹\j’î+)9«#ȧ' „œ39Ï»DEüµÉáü±Æ¯wjê‰gú.Ù±¦©Î¡®-ÝDD­vB²ïÅY?¹fi¥šÎ²×¨”Ð+bØ‹oÝFiµ—¿òóh½  púé?ùìÔrPN]=aMŽNQ4‚ïîÏ S?[ .ò(®Å:æébû÷ ‘ôxž˜¿1VùTÆÍ Á½{ôÃþ6Ík¦UnUÄï£^yõøœÑò8skN° ÷ok’Æȉö›áçþì11qg‹ Ô™‰ÞåNÀ‡ì³ôÜ}½à@ß@ßRràÇzÍ=/`^,óè¿¯Õ /9x/ }Û0ì‘¡5ç'cgUì0;ÿá 6ùZ;,îJ[q¬O<ÞßÚ…xåžå`m£Ä|­ªæçÝÚ›®)r,åPAÌu¨IP‡†Y
-8À–@:UøôC=zl`£?[$ÒSç1óY[“œJ­õÒ¥«AxLµ„íøD£¸ðž¦!ý†›8DN¾kÆ$
-£ÏÉ%çËÁ§I—Ç\Çðšxç‹b‰ÇØXãÖ×"]JVÁátmáb*|±©*RÉGFIÑàë]o¾½ö§úÏ7ÜwŒUÇ;•´Âq\æö$>Í1Ë«tΉjÝFò`“ eÞRðSü—»KBìã$ˆÛÀ§ýäHÇø ¢ºÓyÝ© ¥*/vä¹!–^ |À.Œõ AÀÚ›bŸÎ اsbÞîDMÎæ>v¡ ¥#ÂÍí•ëƒÄØ­qlNÿEÅÏ»3ÍÉ _î†G
-~=âª|µ®ªx~0ËÅï¿6@uRôç–Šœêgæ¹GèP‡’‘·=.ÄÚ”Ô÷ÆæÊÇv%3s”“{½µôõÙ©†ü[sM¨§J2œ åв‹»ñïÑ AØw÷Ït‘’ÿòéIÐ uY”k¼:ko†GqÄ"ÿ¢´ýd hýµ |ü߯ޮDƒü ”þ\í0ýX•}:²‰€CŸù}‘Q¶£Ã'ïMÑ~#»¬Ä¦{&˜•>ЋÌBèÍžÊسm%Ïÿ£e¦üáѲŠrDhùý9
-{0ÓTîøRy0E„/òkëø#]ž©:¤G/@û§$Ìýio{¢îVÓR*Ú{ÈWKíøˆv|úEqaÜ-2ü+³óXσ]5¡–æ‚G )tŒ<×Rpß?^_åÑÔW;T„wÞJÆz?&n£¿ä¹g¨äÙF/ô¹W]¿k¦dï›ø˜ïf)Ï«eÁü2äÄÄ@jrv& °íqjÎÉ,ïÓ3 WÁN ²f­oªIèæÂV>cŸOŠ³.Õeìô綆ødÌ,M=òæL3þ…KÝ€\n+¢¢¦\’—Dží¬|dU”?°¢&l
-Öûjß%÷ âŒÛ;\òê
-¢Ï3ò"/õRoÎuT†/uÕd¸uþ–¨Y¦æΉd'ËÒ¦ƒy€çe䈰)EY˜å3æå®I$9µµ(Ä<¿‰[îç¡c<ô¦š•ãå#7´Â
-cVÐàû3m½ö¯„Ä!jæÅžªä߇9!Km%á»úš4ðŸQkÃ|&åõùvBú‹ãiõçJß«'C¦iè“…:ê‘E@ö…Tç¿bB†~ºÜ[ù×Ñ<v¼Ì%ùLÔìMuÍçî•K…} úч…^Z9'þ,57ê’m
-·â–]ÉÎ>0s«öôUñ¾!TäÚ°”hj¬¼;%‚ëW â² mÕa«ýÔ·9êN_5äB&ïÆ(»äþBkåCk'&Ü9€{í£æ.õ‘Þª°»«ýµ©>æÒÐ [zÞ†VPêž”ÐdR¯QL^ׂÝs„Ý–;3r¡[Ã+¶uãc†i—šÏ~ï­yw^Ë-îåV\ »ù bïÀÆÛ;ÑÏf¥9×[¡góC©ïÎIá‘JRJ°N„¥Bž®BÅÿÏpÝÿ£½þq
-ß¹'P Gpé;ZJ¦[ǯüiµøù ›‚›ë™­Å{´ÔŸ‘K9_4Ÿ˜ùl÷,-{O <àZÇ$³Ð¡d"¶'€\Û0-É6B€hÙ姆¦Æ}mÝ9ÉG;œ­‘–ªÕ~nš¥‡øAÁÉ
-”Ñà÷ÖˆqN¿xºãkrO/ îÏ77íÎñX;f[EÉZÀEîé
-l©—øqª*@&Þµv•G[ºKÃ@Ýê#Bo«9Ÿïÿ½6·ã¢×$ô$m!Šž¹ÁËþ°7I-ßD…:d˜·V âÜ{ÿÞŠ}[É‹Áz䳤7Oý©Ñ·W$ÕšÑ/ÔLÄoc”¼Ç¼Ì¨«ˆw—2^>¸Tòþ™Ÿ“põËÇ~„ä0?ëWð;Q¡›ý¨WÆŽì§c¬¸€fäKÿ¡š·×Ý
-<t}œ’)ÒƒŒíÅ}?€ê£9.Ù­dL3rìýůԼ¸»–.ä;—’S4@/Œ°ásV0ñ–4dSJŒö‚‡Ø’a“¦Òwb>\± p¿Ì¥e.vâR\#„ø)><Pʼn¹»Þ›r²P™æÕÒÖ¤ AKã¼s 4£”ž¿3ECª<130?-ìê3snáÎIR&h˜g›rbú†Gp“Òǘñ÷ÔìŒ`›´â&@¶é0—¢…l—5 ]
-Þ¥jamÊëËl2v¶]Nƒ³,|½Ÿëe¤îÏŠAz–¤ö«².ÿÓ©YØj—’<:Ðu¦ŽwƒuLâãvpªŽŒbÑú)ì hh¢s”ž½Õ_>ßšò|{´<Ú¥¢~^S9 Ir]j }„ë3ñÈçk`ÝOÒóWqÎ Ô­ ¢fØØ‹Mq÷ñR-¬¹bÏ,»Ô·È®qi•>SƒàlI(81Ö3ŽŒµ4Ç4«ðÈ(›…ÂóeqË¿–zÞÙ€ñj—‚ñyì'k¢oB??˜e 4ݬd}1rcˆ“½$©ù°1€}³5‚ _ľ7JÐ!¦o¡kƒ¢"³´aýÎn×m UFÚzKCCøˆIR–k†˜²<‚~c”–¿?2‰°'\Z>Σ½zà3·õžZ:d§–¶þ]ãPÕÀÝZn馜™é£Á§Eˆ@ v½³"媖_¼Þ[—³ð•œ(£}yhhÁGN ñõm„HÇ3Ý©âoŒVÇ‚ˆ±ôVAœJvž¡ ûZ+,}flêÎ8)Õ£â¹A;­ôpS/#A×ZùÖøµ:æ@SO™o+ ²vc߬ô”GÈiO¼‚ˆQ^×d'_ï«Bþ¾$eÂäœÂG¢üD?nzìe:<â2 q¾Ù˜»×G. $gADÅq2vú“ú‚ðÿ)èñ·&Xñ×Èñÿ¦§<ž¼r*X…ziU)åÕ•\ÒË‹%aÛ™QØàT02#ø(kgæ/š:ø/¶aJþò;{`èÂäœ,p*|`vZ;KÃõ¢ìç}UQݘð+JZüÍõV•ü•ðòö8ëËë=%5k{¸r0IHØ›@%*¸1Ï;JC¯ix©¿¹AG1ócnɘS¸Xå×]X€*ß%×£®L›&?•Ó¡OV†ð‰}@Æ›Arò%/5xŠ›óçV_ ì`†ŽØ–“ ë`@iksCìýU™»j!°ØMÊÜ”ðýÒíòZÔ®ªëV2²­Ý¸„Q*ô
-Î`dï|CÝŽ†Gœç¿°‘ÓÌRR‰®`—a£u Ð_·ú‘aûÓàþzfÑ–œz(ik ulp.aùNˆ2uV¼µË«¡ž)Fñáÿ).罹Ó-Œ_wvWïèxõŽ.¸î¸6+¢ *ÅJ‡P! BzïPzz ¤‘F’BI¥†ˆH,ëÝýSî×ßÞÎÌ;ï{ÎyžÏ£çQb¡ä»O<°©jÍÙÑ’+—¹Œ˜+øºÂ“~ó
-Û¾¸…â#§€óÉÍç^÷ÿµ.–íê)°¯.¡äÑÛC= ¾6„Jõö×ß\•¡“×GšS}ãéGË4¤mŒUâ›dÕì/¶qó‚ºÀ$%oE¿îèü¾Ò ¹èÅeyåÌs)Í3@ÌØшñ®aTªYZrÎö¶4Î(-Ž )°9{zVcÄ(âEl’öå ü ë>kÇ(þ¥køƒýÝÈ¡C$=´² [zlÁ6À~Mk‰J ½žaCVÇ©ENö±IXsi]ÖüÀ7BÎñ6?6IKã7ÆYÐMu§
-|÷¿*!èñ7tàóª´?æbÓ÷M­à°º%o©·&aŠšÊ;M($@2â
-ï^üÙ3Š‚D”ÈŒÀhUBP»µ1 Nèo¸}\Zqõ¸NøüÚXš|Ÿ{£.û³UÄÿb—´Ål"AÔÌlÙ5àÀÛjÄ£|,NÌÃSkÒo£‹î]ßTÓ¨1WúÈÓ­ù;ܾðOP ;²µÀ6&*¶õ$d?6ïæµô¶o“»!ozœiÍÙÓ‘ÀF|É7¥6¤"ljø^½cˆòlK-jÞÑ
-f…WNÎ1 ÏJ®.ˆà‰áib‘µ³æ†‚ž¯å–_³t¶¤¹‡èE®1^éÒ ¸Ä8(.v3
-LlRl…Ïó)IE«Ó¸\¿‚RZà ÂZ!1dP€ûËí2äƒÐ2=¶Lkr Ô&8{j.{GS§é%Æ°ùg ØŸy|®ÿ¤•^-…fl.!v↽yÇ=Øœ¾:BÉu¾'ç„5Ì7»&rm—VkbnäÀÊÄDô­Å«ãµ·ÜÀþ¯O£ŸlÌÑË­raùœ“2A¯JÜ\ Â<Uxº!—Lü¼3Aáys,ÙÑ OñÏ’ e;®ú£ùüàQ•¹[›@?ÜR“ÊCj2Ø;ƒÍÝ8&âˆÌrLaSÉý“Õ™Ivµ4òß>a÷wü}W xîsGwÙåånh’yˆ*O»ùë›ìÛq;KôŽ/>ñСƒA Í#ž;ºò/¨‰™'?X9„-‹„ãžåT/É‚jnýmÍ3*€Þ?ü‘§æXK!,)8C«\žbA© *1ünÔÀXŠŽðÏb²ÂóÄBŸ‚VáS·ÓCú®·Acß{ׂLbíC;¦Æ;½ŠÑÆ £Ì")¼~;8Uwkûju–W3Ì]ëjÎ9³Ü…JYÆ=sõ#nyÞƒ£‹è¢]#¸ªä#V¦˜å›F1{Û"¤lêé°° ökðn9òaXÙò*jÄCÂzB™gÿÒ=GÊŸ–VߣäÇ}в뷕lø¶Šß3³1
-Íý0ÌôL«ÖdÆåv)ßùä?³sÿû©ÛõE“ì'¹;i7øªp áœ¸ù2™%ŠqºQN,¢îÄkNGbƒõSa_<xdû¢[@ÖÒZQò®_0˜· ú8Af µÑ!yŸjîį¥\+’iu
-·ìÈb{Ëôœ]5ëçîM¼ž†G<^óC̨Yút‘÷ü¯ªñŠ­ úJѳÄÆØ7‡º®¿¤·ÿAxÅ£"(õÊjD«&0ù|ÙÑ*‡
-v%¨˜+yJÕÇ}RvÐn—¼¬îJ˜ŽX=Ð\÷—¼ž›Ÿ4 jÓ§áV=µL•Ð
-~š÷*h5[Gˆ®“óÉl‘6ò¹3T:ÕÆd³9¯‚fO]‚§ÉÍùŽ‚¤œ*zÈ@ûÓ}_¥|O²ö÷Ù½ñ›%çì£:*Ä·˜økúÝväÕü¢±ÄæÄõøFϵ«(åÖÛ8õÁyLĮ㋯O|FCxG>–²H_¼K/9~Ïèv¯ ¸š}ÒD§ïµPöÀ.o…D”äý»’ƒóø*&¢·1ÞófP0|NžòF ÷ÂPjk¶£
-(4—ó
-žQÉ$U
- >á@É=ýŸ+|iû*nô¾M¬/ã+ö¼[9Ø•v[j` îGh/> /s{ÚaXÞ
-Éy„[F%ÜüÞ*É7u/§¿Z^
-îʇAF×/o~ùÉ™KÊ»Ln$ÎbFg)KRû²Á˜Iþ3*àf„¢¢ üY?ñèZÑÊþÇq™7µq˜q¸G¦é43í´“´“fb·I3vœ¶ö4qìÆ‚/0DØ` dŒ1!V·´«c¥]I»Z­î[«] û@ @È„äcÚIgÒïR¥_àýç}ŸßûüºYØtº¥àwz¿“Q
-%`¸–-qÆÕ”zòã&Åk§¥¼º—û(ª||¶€=»øº¨ÆOKjÓqV.8Œ+–1½æŽì˜7^ôØêæ@uc\‹Ww(DžqZ„y/8SûáÖ{³Ë!ˆY ¡Ýa k¤w%càÚqv÷2¿[ÓQÝšÆÙÊÉ„½›«øEÇPø²Ì_<-¬NínÀ²RØŒÖㄧ™Â|•  áÆI»ÆxÓnÄ1d"¢Xû´d¶’Ëiqv
-Z¢S‘Ʀq\sNË°«S1¤ºu$Ù.‹€zˆyg7¸LklÊx%JJOÂþ„Yp£èX½Õê1|¸)]ÞOH•€r¹W^VÑX»¢ 6³Z²± ‚5jíÁÞ†xé0«3¶{\·ÿïRÞ‹Ôêx{kùA·
-‚±ã …[¸üvX ü-…€}U‹áIÕéV¥]nU SÀ•Ï³ÿM^ïë`²™V®g=Âá ›ü^ÌN.û1×< ®£Ì•³±àÛC/¢î$aÍIJ¶¸TέúÉlô+±[¥y@Å}´2:òS§`öâIÂH'0Ç‹„Ù—÷ÀŒ ’`ÄDÌ‚Ïæ¼µß`yâÖàCQ,¸¼åJºÒΰ%„‡%6…g‚”Úîpgyò.~ŒŒ‹.ºVˆoB*×d1MÕ]àâwE™ôûª\õ]YµdÚª›Œé­ãqÄ62j†wBâGUû›}Š÷¨•eÍ×9̤4¢+”˜{>‡‰FBÐ|_ÅÌíÔìJÉnÄ!é«¢ÖöŸš.ÔcŒu_ºÿ¦¢@~ØÑAJ¯Ù²‹Gý*ö’Ëù £3ÛaDÚJku‡QÉ\– ¥ Ü›;váh£çºQãBçÝ.ìÁš“{ÿ$ Éq»VÌW}Zæ–C5]õK&÷7”KûQ!ý ´<P ˆÆÒ.ÝlÈæb;´$-bBÆ’¤i.Œa3aÒ#¦0¿$` ‹žù+˜©ø$M™»a=ÐH*Ø{i¿×sØý„ðI++bµz]â0-fî§z®–
-SGt¢›å †W¤4À¦K8²WI;e‰l?¾ò°ê_{p‡õíœ)ÜÊhàjBÉ*ÅQY*´ðŒÜ
-çQyjX ø¾€Ùøy ×ñµC6‰¼ÿ\[2üqnœÿ`Zq ]wÜE…¦Á°^;˜±€´º_Ã:Ê©Ý$áÌG̪ n³¤µ$7 ùy%àºHž”Š¢G´.z6ÞOâî&ðGoÉxá+ã´•÷&n/þ~a\ñæCéÛ6@×”4;ÛÄR£´@Ê*û6JbsnÌÏ$ñ›ÀÒl•4Яày.©E±[¨ªôL%Þå¯:/NÒÖߢ­¿óUßÒÏϧýø¯ï÷ýdàïßžš?wÈ“qÔ¾pH­t3¬Ñv–3QŠ§Ü:ó &ö]GÎÏâ²÷L{ã`ÚŠ.ÔBVC>èBCñÄ&×]±rµTÏYÏõ]û…Ÿ±M:凃æ8ƒX_W´½Žö<3—ÂÌ¡—y YKyËq§[ê5 4;]s(L)çV¨B™UYB·(Ô_33¿"¹¼KI=:¬_àÿÁ/Q l»ŒÂF•TlZÝ <ÈãŒ/«vå\Òåãn|)î2/ù1Í"¿ÀÍ#$0Š¢9ºhÅznõ©øÏJž¡†üÃÜUòò$mí íÎÒ™Û}Ïû`€õ»ÇÃóç 6x9€˜ÓA«²C”=oÛOðoûØw #é'~K£#ã
-À{ÜC ?t•³ºqî)ÓûÞà í/‡Äo  ßúÓ‡×~ôÑ™ül”¶ú?Ëü ÿãïBŽÍlf›{“c®Är3+„‘£›äì’Rt¨ÝE')GÊ=WcŒí3óù|¯Ï÷±_¾Ïׯ¯^?½ž¯×ë9H˜¤ÊʼMÿ¥[+¸Ý]<ìK…ß·8m×îé¶ãm‹ÜéÜ,/Û[µJ{­V½Ý¦;ѳs‘ˆ­ªdÓø%]C©C­¼Œ¶:V*±†C&´F²:bMòÙ|ÛÜűhâ:Vuù4ö?É/çæÿw'7ý¾Kÿ¾ÑlÿëJçy8ÓÙnŽ4Š³=›Æi]eY4–VƒXUâÐÛz¦u¦Y¡ÁÚ‹·iï^™©¹Üžçýç‹ÖûûrÉòãpAîum¨-¶#‘Ú|'’-ý 2¦Žsz­‘£4K½×N¬a–—ÑBêñ’§ÄVKpJÞ0ˆN¨ƒæåRƒšñãOÄ’D§J‰÷­kW;Vëþ¦×ewœh—Ì'£Â¥ï ÓŠßS’bÇ9g©C®xÝŸÙxÇ4EötãÉ-ª×”fÃsb³6(Iïê@9†çO£{â4‹=¾­ óáF{µ!¼pι,s¶µý¹ýMû¸è6”wƒèÚ‰$BH-†0r›=´d€!ó†!±ð:€,d@²Š¸ .
-Bžf‚\TOPkó\8‹¶üÖ©ÔVÝxeÌ»C)gÇ:O±¨ÖZT²ƒzÑÌnñ$o!”ýÄ E?°rÙ%QÌß(šá¬ÎNm¢Ö8Q ˇfŃš|rh žçtó‘Ûª­‰¯Û«ì)e¿vfÿ>Ö¬ý:¶û<ÛîuƒñŒ©1ž¨t¾Aþ«ÕýÁYíÖÈ…›Ås<O>‡{€ìhž l«c„t4°Þà*F‚2RÐÏê>’àzž¹Ö0)L´r(QÖñ!_WF«<.÷ŠÅ´Ë1,Îi}d¦às6µ××Õo‡ó/Q½Žd6š™Ù#¶(BëȆ 4¼ŽÂ‚ȸZ‡æC¢Þwƒœf
-d_qcì­¤ñ G2gê0{Œµ—A¥ê¢‹ó:žàp“aØŠž—¸r"Ü2/j»÷(Xw³£›ë®jÙÝ)\º®gIoK{¹¾dB—5Ÿ‚–ãx~¹eC Ñ‚_~
-ë2¦‰ö9ŒØë E7hÒKy ü-$¼ïÅ!$£ bÓAräceT…šV(€å¢gŸ?²j”k«oöÔ ßve3GÛúY™@™%®ç
-$G%töi¾Õ„B ÐUHU2 %½dæôC?a…þkå°8<ͱ‰­ %¼Œ#Cr‹Xa ¦ë“kåDýÍíÜ»ÝÑ*/Ü‹‚õU]¬8¨jQùÆ¿{g~"»'NâúÆNã;ûÜáD’VR.†akU¨¢ È«èJ†¤‚¤Ìð*¦’[@ƒN3WàF/eo~õàÒœzENã I•ç ùϲGÏl,Åò*­˜˜V8A×È¡8¹ß‡âq¿×ðHVÁäÓ£†úÈÑÉþ‘ ©ìØÕv<™þR Ó¸Éûkú‘Ÿ§ZûŸ×ºÏn¯Ë¦\¹áò•¤ñ5ŠÎ9Nì؈h «Ÿfå D'’!o3z@"²$"z
-ûº- “,cº])λ° °ß\“5÷Þiê÷¹±«-Iß–Y„5•8µÙ;0«¾ 1§wr<‚>¹ÿ¾®Ë‘ƒ™
-IÏëó/©à`jÅU$Ñ‹Æ^mLóˆ5z€±•0Í;,RKöë7´Núýž‚ÿ†êD«©Ä
-{òBù—{ÕÂÃ7J©¹×‹=`sÏ\i˹ûˆš{·Z”sêÆ@ÎɃGݪ–åT¾Lî 泄±ç~WT±Ñ)Üäʤpguº\EfžÁ-+XŠùcÇ+îêÍî¡ð‰.r¬¥:òÓÅöœSy9WnrÎôäœ<ÛœSô`4·¾YþcJ}T„îÇAmçÂÇlE8XDC-ØA‚ àbo±@³ÚÎоo%ŠVaÆkí}†ÓØ!Ë/ƒøB-ÆøË•â‘¢
-RîÓ顪͉ºeþÓs—/‹ÖX¬ JÑÖc “üÏË
-K&¨e@ž˜LëÌr„†94Gä+e±m×ÙBçíº½ sÀZЈQæÕw.5u
-/’øáR¼ R>*”Hä®G°è‰Áfâ lYiÄ+>vËšŸÞ’õÒ2~»C#«Œö£eº[$‡JhG!‰¼û¼<WöLõüRöOöåÞyL=T‰Òþ½ GÏœG³g¯¶‘¡«Ã‚`« šå¥B.ö2ÌhZúïï„©Ý2S’lPË…ái•Þ•æL™>–|ö1I°^ÚG½ˆžl| —{ôxmÎÙüÞ›_ýPRG8‹W©À“”]…ýc’6BŠ‰„Ï«ÀÓjSA
-ñA|·Ç5fì(ÀèíÔë‚âI¸„Ê Iuþظé*•OÉ •j£¡\k²<u<Ø„fl@ö^RÎü×<b'>Ö²æà1é÷ZB~·Ì[Gt:e…Xh¼Ia¯÷S"WkQºåµÂkÛ”*®$*©ÿCe«ô‡'(Åá*´òX3ÎqOOþÓdšŸˆ#!å¬KŠßKq‰o£TôÛ½÷Ó¼ˆ½×0œ ¬^¯××)Kýš*L—Œp7±ÂÒFÁßN^lÊ=“ךs¯l$÷a ù(ªKz–D´HØðƒÁÒõb5¾vî¿ 2_nøø=›9eÎ7Õí4p‹-V¸_oŽõê ¡v½5ا¼]
-µ½J¦÷Ôsµ©&<ÝyG’^¢°["C¸Ëä„ÚÝnAÌ„lX;¾¿(¤ýgÇû߶HõûšX¶
-Äïæz¬¦—^Wo7jjA³©°"XÀáÛ­ž^ƒA™œ 8d¹as¯WK¾·ŒðPë‘©±ÍèÔøvdr$©#ÝÛ±ûwg¤üw³2ñJ\ÅKú”8¯™Uežì?kQ®h-P+W‰T Óíù8^°õ刦š@7WÐáJº"øX¨CžHôî
-­Ý‹%¢õy£éc†=ô.J¨ù¤âö—Žý}b{ÖèŽm:Èc%[ìN¬Æ·©,ó‘&ÝÌ”§ž\méVŸ®jã<ÇNÞ!q¤e: ÄBzúœk¢~Qƒ*
-²æm‡h¨9'•õJ‰ ˆ–œñ(úmwÒãb]K)`WÙ­j¤Ã¬B0.£0¹R ¹kÙ©ÇïxTÄ_ãê©/s
-õ§$¿ê¢7mBÌžý¤X´—Œ.Oó:S.IG@Ï­E4Ìʰϧr8ÝxÐ`j€´²êˆSÖ‘ðêˆI´¥Û)%ûmBÎØMM1÷ç¥â¯YÉäoI2ê5ЙŸÕw]Þ™¦7¯@Œº7>16PRfܼÖå°œ¶ÒpÒ°íV]rȆÎ{Ô£WBVEKÔcšõñ[ç=´ê€F¼·…öSRÞ¿ÓäÖÏQ\ÙÛéáò7ðÈãÕ
-:”{i{h7&oO31_3
-å÷Eûû¢P´%4Îèk1=ærÄ4RvX) 2¦=hU&‡”– ‰%‹ú)Çú»Çöy¹Bz×i±õ†s9›^>ês‚Þý9Îèý–×,؇ñɧgR꺟Óvì9DÜ£b`o³°µ'榬ͭi)$Lº9 €Qè¥!¿zÆ/{µ‘â½Ïr¿½‘¨¿mLß×ü¯óãèß³_³ôáÏé ̪öb%­Õd€l%¢ýº WíÍ(å»)çCZLÞMs¶¢Ì—›VçjX>ú&
-ùÅ’ õ«h-~%|bb¾NéÐÈþeh[éÏc Æï¯_xåì6Ÿ”ü*m¢@³V"µÍ‚çlŒ¤‰šÿ;zwf‡KŠy¨’×ë‘ÐÜbZ§oTéø€úÝñÿÂ%©ÚSÏíò…á]ñd«W1Ö5®¬… ó³13Rõ—W[nZB[vgŠ{¾÷fåÒ5'>·sÉ+¦!´˜ø”Œmj"cŸŒÉ° a¤Ûk˜uéßñ·Ó0ý©Ä¿)@Ätãبvv¨Å¶joÚJëÉX¹˜ü¼µs×džëlxpƒT¹»ØvïX…¨»pRúÓ66þÄ86ä!~w.÷çܜɴ“C«ó~³Nªó‹Ñ ´…Ò{î`¢3;Œc¦,¬Á¿<u²)W채Sg[h)ðKaŇÈÒ”‰ùºÏ¢.sOÍ‚8ålÈ…oz5ªÆUû–ûï»çzïlOB
-–~K¨S—R3`z!ô'¿
-›Ç}2D¡GÔu×ù¾½ààôÎ]#CÿÛç ¿zsÙ]:úÔÍã\ú-g{S GðRÏBËÏÎ…ö‚€ôõãÓ½ÌEP¸štpˆgÞ1ê_¡ôÊ;>×b»‚²Îgâæ‚€¼·èâöy9üeŸ7‘´ ÆVwÄÂθçÖ3‹ÆÌþŒ(áç›Fá%©jOÉ€ï.¬†>..úÍøQ0t¤ã!266ùÜÁ¢Ù˜„œ™Òsn£õ]̓¢¾_JZ}^ûÛæ‰àŸUŒÖ{Àæh{LA®IªiÍ!)µ:(#”{Åè-§õVZ=Oêù¤c%­iÿíðs`‹Òrj¡væ¶ÉmÇëOÍ3õ7gûýÍÌm/úæç_Ù)=QEǯ¡Õ¦›qUßäžP›²pëÄHD3:p¤ÂU'ŒÔö”y¤'³MjŽ¨úŠƒ’î‡Çùø²’R{¶ËÊY)ëu\‹© JÅžeÔƒC®4¡§CÝ"dÉîBïÏ!%©Æ»†®m’ÀQ9ú‰g¾õGßôÖÁû¾»¾|OHA­3^]?\GT%ŒOD}S’ë‚«¨âض<«'Ö¦uÄšÀ²Ð8Ùò½˜¾–Pt\9&¹6.¦ÁÕd­#½€žÚœT“Ài3³Ï¾6T§â7ÿ#Ê}Öăå9º:m€½Œnµ>»ta+½3kCå¶'9€yJ7ññ "8¢ê.Išµ)—–ØÐ*|EX©I›éýaªÔ5ßuÛ1×vÐ ÊR:tiÎL…äkȈŠX×Q“Ö1Dh“ؘÝa /\£˜„ž
-‰oâ«2,ø›‹Žþæã
-òCOŒSŒŒ}v°rq)µ7¢Å´xpDƒfRÓ‰_Qc*‚rDÑ…sŒœÝ¡öf­˜Ö”QŸÛ&µ&´Ø*À@iþ¼79}éŸ l ??RêÒ+Ï[|BE
- r®
-gÑ/®iX²Øb¶¦u ÈÁŸ¨ßü¢_Cøƒ° Sr´N¯w,¢
-Ý2êqÜçíIÚU^‹:DÙÎ4ø{ÛxÕuÇtÓ­ø:¡ÐsÐÑMÌai¤ûßtj"ÔÉå¢þg<NÈǧÖÑÁÓ,txþ$ j¸q(nûW|sà) '7d,´Ž”WU¢Ÿ:v>Ãq†#J<(°†*ÌçÅ‚7ÍŽÅŽz?ôßu®Àî¿Ç”w,Á
-|…SØô£†º¶N(û»ŠºþIØrëãTÃwþ $ÈüV&€ÈéÙp@=‰)†AG⎮¹W·­ãÕ?ì
-ëþ±7ßYT3:åØæP~çØÖÐj#2TILŠ.ˇÊ܆›+˜g׫ˆW_ìBá¹…ó¾‡Ü·¿©¼áy_~#c‚=9ÿHl:µPºÓzJGTCiJ˜„½€øÅΡþŸâ2oKzOÃø5siÚ¬´ãѦ²U³d¤T´Ä%ð¸/à
-(ˆ
-(›,
-¢˜[çXšin,Jˆ¸²‰¸ 2B(‚‚ₘ§™®Î¼‘ùÍøþñ<ßûó¹ŸóU.É»ÈÁ»Ø%ž9zƉ®¾xS„m á"w¤M¸}%·üdž’å™ÄÅ:ÄàÕˆ0ëHE—¢Ã%.a²yË"ª†ø¹Õ_—Ú8Þéúœ}1u
-›´#-‰s}¦¤îÍñkvµmt³„’l“ã“u0¯Ž‹?P³0v &Á2Rúp}°ôžiõàÌÄ¥m+ð/ŸÑ/œ“ 'ZFñ©†Yöm‰]ùc£©áDGC[eᮩڼ³•Î·û3 e»rrêÎ>Æ5Žï)ˆI§záXÝ€³–CŽ¨YÀÌ[c„T¯Šœ¹9TvÊ*’íØ=‹?ÕR1[L¼y¨ì±OßÊ;Òñj©ˆm Ì©ÄÆ[EØžYjÖÑ"³äPÇB}‘T>?]cTÞk<_Ór å’첚DÓ@Q¸{
-Ÿä]ä¿ñ­µñ¿®s)~#ç7wõš>Î|ÝèUü×ÚÚõÕ@.Ü–c!¶±òh—²6ðçh¹™iW
-Ù!'øæ[ÉÛ¢ÚDï =ûp¡¾`WNÉ9W“ ε•ÐS )Í.§$mŒà£NÕÜÊã9V±CäTˆ ×uÂeôç›oI¹z2Ë,Ø×6¢Ô‚ÊX'/È7ËF[b¢Îô¢# !Õ1Žz¶Þ›÷ËzwÁÏv!ù¥IÀ†¯}¬~²+¥¥ØE¤Ä-)æ'Ab¬¹ý`­¯ì’6d›HqƒøWDÕiWš‘·Wß#l QO¦ÉN6õ¶è±€ ôë:¸[RÊkãû‚ã;øu ~ÝО{Ë!Ä>÷ÍQÒÍ@³a—»ýË Õ¦aT¤„¿¢äf]›kͼ&¨M¸üeóÏ}½À 8Õ!«KÙ–Ró]ŸÙ$·’†sâ¯)8ÑúvÈ Kî?¼Z¶{¦±Ô2L˱`?L|Žµ‰âQaà[q~ÔæHQØZê®Sþ†`P^[>‡Ù…Å÷c˜H}GÆõ©Æä@ +?µ
-Êžë~ϲ‹kâ縘/bÀÒê›°d-{â’–FŸ˜ÀMÔP¾.ÂÇMðrnì(™ˆ¯ö@Ó€²Šñ/VÞgÜuJÑ ·¬<êp¶z¶ÂÆkzò"ŒŸJ¡ßVxTŸŽšüµâ#M]¦]Œxl̹ã/ù ä"]Ò^¹{¤fTßàó¿¯7Õ¨êàNàÀ÷9%$Ч’
-f–UT£iË»©ª‡^±a®S^ˆ¸%wjàOþ¢j, ÷M7¡<Šª„•žì`u{Êõé¦Ô뺮Ò»“<Ô™¡ƒ·7ÉÌv+Ù“ÍhŒáŸá”8%„„é攀qäÂâÛÜ``ïm9ª}›¸;AJxí”V<Ów¤‡lôD9¤˜XËPÙCÓGLŒ_ÛÛç’÷¶/÷P!‹o‰ñæüK¿š’{<W“²=Ž^í/ "§Þ &}[io=]j¡»¦«^MwÆ…Èè [£¡SU/w¦èéì‚Ç?Ívåƒ}†¬KI„N°aŒôðKÌ´ð¿KII·XÀ) ¤e ÅÂÂ.™±‰ßîîÓÕå9¤…OÖûà!óüW"ø¢þ·ô_vÌ\EKÑ-m7ä×vµøË÷Xˆu0=d‚¾4Ó’qCÙœqÓ.­JÚŸ©Ë4¼C<òéY>Ðÿdø¸-€ÿN)*Á£Ä¤{³BåxÈ¡¦¾hSŠ{eú˜w{GŠ;ÄDȶ„¿?GJßš¬M¦dÜh/Œý ÈrŽg¦®Ø2ZaAGØ€=»ÕPÏ4à7ᚪj:²‚×òÁÚ8œ¯&ðs´e
-€sæøYÖé"˜¡7´Ñç¼&Lù÷V#
-¼IÜfD qîéÚ¨¯Íö‡ÈáÛÝ觓‚d—6
-Ô¹“vRÕeºè/gÞ£ýfEh_ó ¶ÕX~—á±ÝóTÓŽy2)@Þï£Áïh?”@ä ˜àÉÚDÐþ r:SŒ<Ÿæ¤Û•UhëLYæÙ,9þpt9¸i„›0ÍÏñÛ—2S¯«ðû2ø`j'ýq6Ay¹òé:Í…ÝÿuoæA"Ø(É÷-Iò¦C]·š‘^
-쇆»Y­&Jb×›‰OSâc/y>S”t&/ŒÔ‹sý¶ÅèçG2pã‚ìúæƳùòœ£‰’¨CYE²m„å˜Æ cŸ›¤ùŸ%„0›¢†i›k(ÒvSŒƒ¿z&?ÏÐÃx¥æ¹éÛ toCt]h¿õnlð¹JPhŸ+Ï3I‰Ï÷úða¦>
-ÌØKz±'É{bEìa#u¹ŒýdÈõê;îʇ·¾‹õ€G
-#$Dºõ—#BN—«HeUÎÚ»,Oèøµðß5-).Ë"Ø=Û >᧩†cSqW«5c?)ÜØ›nîÅ¿:"!ÏÖwåîöe{ÿ︶úJÃ%úñgsÌäÛÍñ­®­õ§±áýÍFY6À
-T7§xY&h1»Ãܼú|Èïü$ßëå
-êÅ"s9ÇJ¼P2á§S¬X`WYë=y~+˜GÝÅo|ÇËÓý.^tûX §`·+•ù—s•oý´˜ÙêT—S%/닼Š¨SÂu­8ßí.bº9÷ÉŽ$?øЇ.8¹›íX_`Öþ_—«ˆ–qv’Aœï«ïxÚîHs[kŒqÞêÈð8ØæXÎF| Åþ«“ýàh¬(åFS‰|±Ù…y±Ò”æoøpŠ”u,Ô}‘W¢&«ß¸ËÊÓ}Ö»È0S?+êx” ùÜG†,·ÀbfœKoüñµ¶–¶?ÎŒVÔe‚&Øñ®F16Ä6J´Q#-3 X+ îªlÆ'Ÿ©Eœƒ ^’º)ÿéjS^˜®g"@Φ QmrH?÷j؇ÓìûR ðDÏ2äÎlYÜÝÏ-¨Çº(}{ö³s.âï}A±yŠž$o@y+XÖ…fžE%¤~Ûä“.5ÅÉVåÕ©Š ¿Þ,'þenê¼ÔT1¿(ð«µ
-Üß&QÝ÷íŠÂÓù¨Sv0šbÄ|Uó©·ºw厅
-‘y_ÕµT›ª<ýr¥¦àFÓÀ¹^®ÁÝ:ýhŒÙí'™‡‹þ°LpSÎèrAúÑLiüN5|KL 8ž(‰±ÏWc,ʲxC/Îïdˆ
-ù¾½Ç1__x(+®µdz­µ¤xÓ!vEEÖíª¨ôh–‡ZhÍõ6—"åU¨•÷hw%?å¾R€pãÁîOWD9­SÝŠ*!n^”íiS–gŸ©j æ!nœ`€;£urðæÇÂg'ã¼d túnŒº«"iéó•^L 7ÐÁÖIv¢i¤6Cû‘nègÅ~[ki°Î±“­S%p»\H>ŸцXó
-¼­áMˆyæ´ôþC+ _(à«Y,øRù¬nLx0UñÛV[î“‹•ZÊî
-òf…ûö»¶Žy³*dXä¬øuqŽçþ8 ffÄ ÐLæ&Ï5¢ÎÔ"Ü }ØÇbYšuŽ—¾ÞCößêcDØæ8(Ë0.hGœåó¹ý
-H‰Œ—M’[9„OÐw¨ Œ‚ X»—¾ÅDÌʾÿv>ˆ <¥÷4ÑŽŽr»”âÈLʘcŒ¯é´Çr5oÚeÍõõã/1™õ!ò¬G¨é²FÄúú™{ð¿S{LwýÇ }ÄC×X}|ýªÝ D´e7 Ÿýç/ùú;¡úæѽ/Y¾7µÙm­n6l~ýÞ ]Óz›Ñ£ß€žóic„X›áfÒغ 3ælj|© :eZÖTåëß{+oç¬fR[P é.\y¯ã.-«"VˆÖ¥µÙW!‚=¥ªz‹üa¥Ý‘ f>8FÏ‚[ãÀ?7hÎ¥1L[è èWUgôÑ|¸=!ü³M®&q63¯²”{>!Â|M©×†L“` …6»8ãÁ%VÌ6g÷¡v«71s_ë(tîüDpÅ%:ºA¬G[Nuš©6}mô†é(Zo6ôì£Ó7¢9Õ…¹œK>wÚ7¢#üÝšÒ+·s&A{[§ßm ÝëcÊá_‡‘ ½:•ñàpÓÖYçʾÿÏâ¾m§bBÂéH¿™²"<¬hM sÔ(úò¹D½O-Šq$éb>ÖF¬é|ǵ±
-B‰¢µÎN³‹ë’iþºþšAI8N62h"Ï›9çz:g>är3Et4ärêÜÂÑ M÷ë:ã±¢çpFTÓc4®¨ÃÚ(êÌA;bÐêFË45‡a~¸Ã1lÆ€sv® §ô^ëÀqjC«‹‚¼ôµù Âhg;BúÚê;¶ÎßtHŸÅÓÔ­¤éðU“¬2'«çÞü‚1[¥–ȧ€€$Á™^1úbH\´«3õ´–¡7«>lÑüœFÆ/P'©f.zÙ… È'eúúy ²‡ƒRwÓdü¯ z휸÷y†ËƒÂ®ÖºÇ†0ìÙmª¹3ºÅ"&¢jÏoÑ{ydÇ9äªu؉äÜp¦ô_lµŽ M-H÷Ñ¥3£½¨¬3÷Z2Ú¼ÔVCrˆh‡}ZæM1€ )i5V(º¡íi3bc‹làŸ¡ù¦`–Ã8Âè"T:8…_5ÑV§™Y?n±ääFZl*ª†Å è×Ð{?/|ç^Ù}a%HWSL0ÀbíUcCµ:~ªvØN·±$Q
-ƒ¿®Ž€$ç÷*ÎÏ…+cj’Ì|âÞ?\¼Q•4>8úª±p&­™•Us¦ RÎuq‡¢³ŸÌÓºLx>ðõ¯»„ò9u¢lN»]‡ve£È»Äá"VÒ¢ 熌"¢]g<Õ¹¤æPS²ž¡¯ZTï®D¡ŽølÕ¡/‚îdh‘ZÆ0&ôËùé ‹Ì
-CÎGe
-_îŸ"Ì3¦¾ÈŠ;u1ßbÖ½œŠšàl< “
-ZŠ
-Â\èDò?C#‘©µN˜"ƒO^\´ŒŠàÄ•;ÞBnN¦‘Ó‡}€¤ö¤†NBÈ}§¾2sÄð+æ×Á±²Uø#F—-ÓrMÝx†}úYâù Ò49…Ñt ËøU}º!´Þû_3$S—ù‚<È^¡Fh]>«n[ùQE€# ·«À™†¥:·Š™Ï€„KÛkH?LF@ñ*Œ’Å‚¼ÚþLwJ*¨8§¹ÎÁ%`œ¥çS§/ÿ
-’ŽAb›KRIÿ˜øÐCbÚÐ%’³4ç;ùVk}¯CrÁ,¸Û¨­Wù´ Î$ÄI~¨ùLYï7çVþð)xèÓ
->­ÃDMÞÐzÜŸªAÓ‘ýt+@<F)þªù½VÇP8‡‘0Wëôô}¢ê¢ Ÿf*böülu5˜EG30ÞŸ¥er&&æöNƒ`*<Õx¼äæR@,Ü2µ!Ï_wHÅc?{>6¯úŽ(J¼õû²Ê…4×£\Èww¥¿—æ: -·S ª~ø6O¯©“¼rHÆÓ›Çæïêeð9Ž8¢¿½Hï@ú¼Üã }lÐe»7Яr¦Ÿûè™#(ÏVÚz£+¿?€ààD>’ÅsrxÒ÷žO­`•£aä
-Ù.ÆS
-Šµze2ÓIl«ø1ó‘䄲ŸmP&<#!$ö:0Ë×f½‚¢›I³'„@GÙŸCV2ã’ï<•òò–¦%µrÎSß19Ši{¦ØÏ‘¢v‚:X9ŽªQmðüÀº BÒ Brvê9ŸyW/LgŽpJáyå{¼‘…¹˜žœHµ ã|Í$mWÞ:)š±1Ïg'¼ØˆCžÐÊ€‡˜?Ÿ62#Ÿª¯¡ÿËx¹ìHvAô új­EƒïÇÒèÔ†
-¯šãD’Ó$:Šp]/ço^n7Qi,$[·s¼ö³Ê‘÷ÎõÔÌC„ Ü€VtŒ&Ÿ€¯¼Ü-†©J­áÐÂm·$x:™"°%ÌéhBi'*o¸µ
-̺˜É¨£°{€+ÖuŒÔæ‡0£‹Ç"#Ó\ZÇ3ójšÄ´>cš_©x›Àar@ŽtU(œ»„\±]I$;biX!Fp®'Ñ7ˆ˜ÛË’¸\àZ´ ™4‰¬cݺVµ)H 3ŒSºBшhÒÃûs€G†Þv"š™äÚüÄ¥›±!ð…º3'ƒ"A‰ãAâ z©°B§q™/0(IGD|Ì)0M(e6G@Qä‹ï­íǼ‰{
-…FáÃF±»
-hG)œÒBŸ£;…Áa´‡<˜<>aIs¤¯Ì"Ÿ9Nè |j{ÓÉå,.PÁÞº&i?æäç]ˆ]ÛÉbº´ôËñœ(Q­vá÷ÙDí»¤-ÛÕ£ðlÊNhœ–÷Å‘­kŒ>¢§X¨LJ‰I!Àq£1ÂÙºêä­*‰°N9ær´yÇ'íÜâ©2g×yªïɺžÚôa]:t{sÊadv©Fo÷¤Í+³‚Ó]˜'Äj»yÔw+ ŠãÆn~[sƒ”Ñ=‡­'ÝÜíçöºCÐý•œ>gêå þa[V“< ‚Âj5Û¡Ï(e僚È0¨(âW¡Â;[ /„•ÒÁ>t!¤€{ óÙ…Dø'i»óÕΪŒˆÔ(ïŠ `,'­§#e
-Î(2¤‡
-Ñ„pùõ ®—°¢.Ívlbž|åøM1YTbV~Q£’…IÒʶ±n/c`lA.1M꬞à.­Å\¸+‚ñQÙº…~Dh1é=lBì¦
-èOd÷;©ýJj+™Î<ÿS~&;“þƒÐŸoŽ¬<ix§<nÿüMÉtœfèˆÌ¢4É´£xðömñ<…r»ávéSü(:E€yvðÌ8UÆ3ø(ÿ3‚r•˜a6@k3‘Á/±¡ ùu%'uf¶å…·ÿBX€‹ŽEøŒÙ
-÷T¾m¥|݆ðfcÅþ—@q±UhÐ_U
-07è‹öU¿ôåû
-\¦ôùö'Ùÿíßo?ý׆àÕùüãíkJhXS¸†»âا©³uäeP‹sSlch驇ÈÎ!lüÒØÌ%ÍÞÑXAvÔBhQCðõñjBà,G[8<õŲ.y© ÖˆÛiæGeÆÎ'¿B`tngë h}Šzê&Ä®Š’H]ù‚‹ssé‹ é*¤nfAÇ”ëõ«<,nß]¾¨Ž>‰ˆ•¸¯ñ&äûV­›N1=°ô¼y¹í“Ah@˜Ðu–ïÛ>ªëٙݘ×E§Ò0ôÌ;ŒU$šÏÎŒ £.|ƒØ6êbW=7|{ÎilŽÙlÆïø¦Í+³ƒË¡¾?@Ô°
-%”÷²ø¨ä±S…øç
-¤ð*mäï1–mVú0ßFH€™©@Ía„O
-Mû&Íä.‡ àê&žNåP…²O» B;ö±a ·Œ«rt/ÙÀš5F¶ö!' é?B¯RC§~¼í‚­úœoê ú!ÔúrPÖÎ+ÔÐX£› *¦@1â4ýì)!ü<D=CpzÂ\üh„ðnÞIG‹…0H^@Œßœ5ägÚüÕk?(kä‹Óë­`)@%gÿú·‚(¦îNŠub7¡%³ëüåÂÕ9@†É@àT I>"}ˆÓÅ°‘ [ÈæUir뼩È0•ZrìÞ•!W
-J?'˜“´%0A¬eX\Uw
-±­
-CGåaÇóC1áiÓÚ-`B´^JµKE¡l‘Éؘ à|Ûtóò¯Ùò 9k#¯Î‘örZv­œgàåð»I൉`f9ÕeÍȸhè¾Jß
-½‰®˜Á¼±'©{NVÆnaý9jµ¡Í`Ž”ÓžN VC³°˜5ï·½<„ØØTŒ¯j®ÎÍî‘M”ÿì þ´>u!VMûb>Д¨N]W14üNŸYÃÁæ-˪ÙøT5,K9t-ÈÀ#snkOd-_æ*ÏNA
-ì§DÂô÷ãm4ÚÂ*»î¾as ]’ú,ó®#š”­5†¡¥ÿе=ŽaG‡rež( Ë:¢E[[L•À³^š½­¿Ê¾f@]¬}Ïw?âMÓÊž•Ã#`å>«\†®d‘F¸:Nz%ˆÊ ìê ŸÉàÿŒ—In9D¯âœ“\»—>Štÿm¿ “%éKÐÚVˆEæTŠ¬
-%
-’§ß6°“‰Y1!á§!u|n\|'‚ÄSó…iÌé‰P2'÷n˜IÜñœL/˜(iuêgG×|ŠfÙ“£¾Nž(ÁÒ¼=±ÿtâŒèî¨@§5U¶=žuÂmÁ¦ôpl¹“Fz7Á LÑYª¦
-Yôá$*Ȇᎆ¯ÀYú/8F‘þ‹ueV _l|‹{€1ïbÞ"ö]z=†EU¿5Ÿ*šÙ9¹¹cÄ`YL<›Ûâ]à:4*•ËÂßÏya
-®¬!O5ŒO¢-t—‰n;ÝܬÁ¹^BÇ‚ÄŒcÒùS:<!nÖ@#ŠãMÉv¬ûz
-cF Ôu?|¨;Šø9–qGHÇmÏÁx"SéˆØŒØ«ÑðòÝAbA}I]°u ÂÃ6¶RS>ù|6 æPNˆü]ËÌüçFˆ0'¹ûfqL¡Œ¤åS:«`˜¿‹.\˜utÍ;ÉÒѬÌñDL_1ÿŽ˜—,ûþ
-cCjÌÆþP“hÈ£îµçbÚh’moT–‡àR¼ãŒèp0v†änÎß1cÙXÄMvd“
-å™,úYLACaxâX .jzŠÌDÐÈa¶ìdKƒ&Ÿ¨Qö}Šö£Eã-K9±ð†”÷òJ79lܲΤ-VŸ¼´ýRŠ#µ4ûeîµÖdò¢L?Úæ<A•åK's4„†•»íΣ*ØGqÜZtžD‡"—ŒÇ—s04{„r·}añˆ–r]i¿\Þ›/Ûåñc xg[úJa2dÎSCî¶âÖÍ“=ø®¡s9ŸíI0†9f5*ë6Ñ%pu$’–!èò?ãe’É­Ñè< ó°¦–}‹Þ–î¿Õs PdeFµµ¬Mÿ‹D1¸¿°‘XÍõ¾í!ñžØ׎ô$ÄJddŸ£U•J@wÄ)¡Ëî†h’3Ѫéå‚TA2ùpƒ˜uàŠÖ‰ªú‡]™ùåÛãXùeïÕÓÉÑvƒL0S]Òy:݇ â¡9š¼ËÀõòTÞº+“÷átäv^h²Þ#3âÝò#»<9 ¥4ÁnRAYCdq0{ [®eä0 ÚBJ,;ôhd-âÙhó21W§¾ÞêG€5+ÉêyáKШ ;™i« )DcSÝ/GKè¸
-ös1úÏQÁ8Žšäu§Ê´ýÑÕî„©m¬ ÷Ý!ŠÏŒ ³k~U5j¨ßÜϯ `WCuÓž@% {.ûÊK®‘ˆ0üçWL € òåℬO5nØÓUžL_ÏiŒR”·ÐÒö*þ*€Ï‚8…ˆ¢ÁæXL –Ù,l2´wb´"¢9ÔuÚ;AìcС-Ùur[ªˆššEð ÝFŸÜÀ‰`g䳊PL¹åd|¾›\
-WÓY÷Š–9ÍdîqçOkP¢,mx[˜—bO1n¥òιܻͥq¼WÝðžœ{_|x©Ó￘¡kØ“U>±¨ºvªPœãþsƒ
-ž–õ¨˜;fª73!üÛ³%­sóôqúZO˯}ážÃùÒzÉÁr ¾
-ÍC¸C?Ÿúó|ÚZx*ÏBpJô6Ú5Æðf°*p~vÌËFë‘û²8 îçì_îç.A¿¹Ó¯o¼œ¯ÅÙÎ
-ˆ…½ÈÏó¾}
-€VMÚéáL.µÛ¦iCbÁ d³ÎB×°Í1Þ:°u´µEŒÿ»1žB ñÝæq ®¬FO²ÿ#¶Ü¥çÈvᢩ#¼´ÏË‹x «µ×"‰ÚwSPIÜm7F…WJ¾Åñ&‚µ¤Mƒ­ýouñ
-Ç^9êó[@sÀ¢Ãü"‰º¥ý¯q&ndzòXÅØûAÓðdœe¥d¡Þ<ŸÊ}F0¥7±ã¤ZD
-p»2/à‚ì'&`y5 ýëI ]ŒºØ}™t¼R5aúŸ_RÿÑhs;ŠÑ$ €Ì´GÑG‹ñÒæ‚«î¨)
-^(ouqã}T¯{7âB¶Ù)æ›
-µ¯uúÜ‚ <Œœ² .%.Ða»èþÊ™>çÑv‡¡‘6¼òuòNò®Ð7µ-àÚ§€š,ÕW tø]Ò€7—ãdÝ-/#…daE{¶pƒ“aa¢<AE¯Ž  Â\‡ÁÕ8…î-5JÞ±dݘ&$¨b*Õ[ Ô“ñ 16µñ7¬-.Í#™æw”¸ 6âŸß„ÜAÌi&6Ä\þ
-Á«µêD`
-#lÁ”r™bƒ`•ª‚\Oa=s‘̾ñap™xÚÚª2à‰ŽXœeuiõÀ5æ2TÖQ+(ÓvÊPŠÑüœÔ©H±ØÒ¥}ñ
-9"»Í cüyïÐ,UUcO¡Óq‘ÁJƒŒ-Waºì1&c®Ã[WÒV,Ëoàñ-°UŸ<¼<ÅÛ¹UÅNrÝ€îâ 0,¦Ý‹6¢Í¼á¾à±T—ÝŠ¼^–M6—Œ€Äj[APcAÃæô\e]]¯I4ã“ͼÍô Ê>ºßó±ÍHßàÀýÕ:EôHº¡½í0 T«›È‡i€’ì—ÕŠãÔpž¸—Ç|Ãäl…P]LÃÆbê
-ŒO‘]@ž¬ª™q™PQŽýγ]€BƒÉHJÑa@)–†üë>é9ôcR”ëV0=F@^áªp_¿ž±P£BE}Ïçôên’
-ÃטÎÛ(B¬µµ‹U‚MO:?…uwÑg¥âõ•Tq„ÒÛïJâ 4\äÚU¬|!i9My÷­N X«Gÿ4·nu<Í!é.µ Œ§âœƒç©Âçøzz¨Ķ:¼÷nC×ìNsè¾ý­N]|*Îy^°üÊI¯ ?Gê{òD^˜Kj´‰œ_«w¯ÌJqŸKw CÂýÜnw
-í=rVÜÏ[˜ÝñÅÒ†4©ƒJ÷„âRæ¸5IÊ0BNן=ud¿lù)ÖÈÒydÌ !Ø¡T$¦•æž ¶Uβ‡\mWëP5hŒ ˜êÊ=ÄAÈ Ykðê…È"¿o0Ð_¸¶
-¸JZO+*½”â$ä³™«W ®„)…˜!|Ëû¶ß›œ»ªîùÍÇn&voÎÊ°RU‚[&âP¾Ñº·G™ ãnÌý…)µYÖ׌Ô0—y©)F6GPˆ1ÌhMTn¢‚߀>· Ýíò/¡òR—£qÄì6K㑺ˆzÉØ 8Ÿ­˜šôQîÃýŸ1÷Wj¤RþùçͽÿõïÛŸÿÞ˜¹Ã(1’úàþ«ü6a,"ÇtÌ×ÄD±O¨Ãú 
-\Ui­£Òóå7 NÈ{Oþªï’èÀ®F´:“³Æ Âvq"²ïL ¥Ú §
-ž×9½‡ÁÀ*SB"yûž Ûˆ.JihðµÕs[pqµrê-4oÏyè­tÃ×
-*‡‰é2Œ¥Á2×µÓï,Îs³çË­‘:D³\ÆÖ1"ñAfûë¤4…ƒ§eñe sf‡€¨ <!IV¾Ï£ca2F:R»YêÖvÄðéqrX Çq¤‰) wˆ%Ç Ø2¹PZˆ~­’ñT\ε¶æ¯I9e†z!Öò¾ôœÅ½õb\
-Š;#£AJäh$f´n[ž;á…²ø'´tÑòá›2M¬F°Ädô $ì"ëeÜ[@ÔÚ+1b‚ØŽ't¡ë=~Q(dviŠÈË2‰!”ŸUˆuF
-Œ«@Ò½Ûõ1朦Êñ™|a`ѯÖkÞâaÎ3Îùè›UºL”äJv#"›:—dCêi¥¤Î ëF0• p'HΊ ‹äÎwgë`HÑ!Æ=ÎN­ž‡ÉØlq»€P<¿4&¬­~Ÿ«ÏoÙÉ⦼©Ç7äû5A¨bAæ˜é ¦Gˆ L\§Xø‡Úèåã„”¯¨a 3î„5d´ÖÑ‘«>úŵG•¨tŠR”±Wi*/›¢é
-¢€†5„/Šd›r%X£È)³$:t†eÔôuƒ¹[y¤û2DËÿ<$ˆqæÓ)€PxG—OýÊÒWÅ3¸ßQP)â´FuxGÞ•ôC1¥i ^|LÞ¤Ò{œÈ,x¨„ºï!*œ—Y5§ÇVGP£wIÁq['ñ f§8»Š‚ijS2{Cu$ƾn{sWˆÔ¦­Y÷)°rûu«W芹±]þÞÉߺ“uª˜Hš%Å IYÓKT ¼NÚ3ŒSÝâNl,­ËApÈ‘qHŠmCv«éq„èwOkóV=ž¢ògOvô‹Æ3 ³¥^•vAÇëa¿HÂ-"£TÒ/®ãYy«†ñ³þ*r26ݬô„°:Ú;µÕ<š4,ïh Mî‘ê8ÛI~4Æÿ/“$¹ŠžÀWQä<¬½í[h[ºÿÖï3v™´ÚŠpØ-t2øøƒræI‡+„âàm¶%ô KÎÚÓÞ6ÏO]‹¸]Ñf;t*è}ãHÖ»Ax<F«l/øÀd÷Äå Q}KF«q9bÆ€$±(„9]9 Þ³L™Ô.A`S²ç¦KÑ×C‘⊀Ø'§[-¤ ·‘“*R¬ÊÞ.ûÙFAÛÀ
-EKÚlû!× $âñb•UßSBÂËÝðäaùþª”³Àš„;q÷ˆ‹ ˜GeÆJ!Íšk¢Kô1c-œQÇl|ùªmC8% VvÕ6°²FiÒùåP X³GY‹ê´ÒÅÒ‘ŽHiÿ]G‹#Z1Z›¢¯§"¹c‚ ¬âê¶ö @ ŸÃ.Tª¦¿ÄåŸ2ž HRéº'J@7›ÓÍH(´Ü˜•Ø­;ÔÓø9Õé]fkIs,Ú:†ÛFL$MûQýmäofŽRf®n÷í1lð„H`€…êÖ÷h`ü‡uj‡‘€MV æ<1y°á!W§Ô‘¸¥C#p š=ã°ˆG)Éó±šSX[U‘'KÓ|Ͻ‚ùbqèQqAãZ#/ŽË.8f ý^s!djåQ3âÕè窈ÇØÜì£z§0{´Ô†eÖŒáIš²«ì‰} A­PDaë÷¬»ù½—ì(ìb>mw ‘ÊËHÒ›¤ÌÉ5Ci(¢è
-’&l0€ÂVÀ™ø§}ò›«¹½C¢‚¶ÜÕÊŤ{Ú°UR; “ÐP³Œ˜Îé£éþgÍÅž~ý³ã‹ŸCy²†L/TlŠÐ}(Ï?¾ QR 3´þÃ[`kŒ(ù¦è“Šg¿Î¹¸"(ÖÑà6Š·ôwèù Ù—pqAŠ„±´
-ÚÔÑ\Œt‚¬<vٔذÐ'40uüpµ#Wêù0*p`²|] a¬¸ŸB§’ìzùæ7†5y¯M›H» Ø‘c
- £y-þ¸H6†ë¦§¯‡¢Ì;¡iÉìjä„6öÏ”:TA…ÉDk2ãDvF†ºÚ lZr «!9€AR–æPûV©¤`à&]†J™×é¢è'Kv%ö%¤7Œ€ýé–…xBt©é€à§8V‰&dbæxÊkŸ‘;Üò^Ô(!ÒYhë(8(ÄPÿîXßäµ{Ñfæñ¦ pÐ~\IÓFF3j÷¢Ëç.E¯,é·«ŽýBÆçbJ'Ùñ<›)ŒµÏM8
-OB0Ö1­ å´´|ëö'ÿåï´ÀT¹–ÏêfÿXQ®WÒfqMUŸ ×ï gøTN!3¸¦fY:v-ð[V‚ÔÐþÔi<n‹Ò”ôIÖ
-2‡T–i_q7 Úµö7E¯‡¢ë8ohç„ )3«gT½ì´Ë{ƒàþ#ÒW8zPþ1«¤PÑ:úc=45ˆîVIp(è=l_NàD(’Ýý¤ÂhƒÝÜéS“D!Й³¯bÇË. ìLÊ&.Çd¦AvŠsîÏ°ùTY&+TÕbœæd /ÛÝì²ÏEŽCÙüK}V‰#¾Å¾4Ák‚ºÊ8Ò%ü‡t¢´9±)¬";žç¾Öe-»|Œ3Åg
-¬\5 íÀãpðMDïúŠL
-¥!ì7ü^Ÿ¢†XWºH0Ä€ŸbÚ×9÷:&ÈeoÏÓ@ñÉåLÂ';&ª^¢{Œ ÄfÅVÕn÷e£qgèÊJm”p /„í¦qΔ$Nµ¥ùwjÖ/°UÍkxÈÖíKâºÁ"‚(= Ö‘:Ë"uJhÆÛ)=åL~e]ãù)tÞ$Ì9d/iW_ÇpH
-¾J èêðùk žæ“~ršv_ašå”¬ÕÄNC˜äˆiÍcç³—ŸØŠ7õZ£žÑ?Õ 8x#ò1EÑÇÖ°kØAÜŒ­•cÞòÄ‚3¤S³?ñ­ÀÈR vEG üˆÇŠz¹ßÀêìÖ*¡Gw0;ö*¦ŠÖ)òúP«=ñn©Šu§Æ)?5ç2‰@P
-0ˆ;ÑõiW™áØ(`à%ü$…N[òù$t€+öV 艴‹) ,Iáö(L2NÊa@6“oCÎEv”[wg6Ùe‡|B‚—;pkNð'ä
-nËa‡d¡Y$ȟȤP"¾ì&dtøÑ=í*[©zþÜL¤äÇg²'%*,(2ÊÚÞúZ¤ä…›FZ>Îa£Zoù--]_Iž=+ë Hëq ˆeàT[Nûhn•‹@ŒNœó …¶sª<%Á¦ÄìfRÐ8æhPvoOÉvXè˜Yµáž×¢¼û˜I<~š½3}¡ÛA¶3÷yL&€Lšú'}!:âžÍ€ã¥øJ z¼•×æ1ø9%ihy(i²RÀ{17=rc-u¦\š_§fT(cÖƒ°K?ÙxÙ‰]B³I H¥ás6žˆ«'ÕœýçIX¿Þ7€%0ùJñÜS‹¯.RIñ;†n%`ä‘u"Þ†ù¥Ä`2›Èþô§s¤ØY¶®Bi‚èˆ}MÃ87¦Ç8Ù«ðLmˆÁÓ¡=‹*ˆ·ÝßÇaâV~Jbºo8Õmhâfqcì¹Ê’¨Y  üv‹²l'NtB®¸Õ»hàV#N5þ¢/)ïÇÃç¾QTUB!äl)Ã)b˜·T¹Ç¢'Jh¶‚ N\7Ò\NIGöà‡rvð>´„3D8QA¼¨EJ@3æ­}`¢ø4̶K
-h°Øßœw ªÈ6±^Á”†kkóµ£&±Àñ÷ìÏ8Ä ÛŠc-;3Q¢í"Zæ|pƒû:šÝá[É¢yEØãB ÌVåÝÐùÜ7Š.¤àïÖ¥èÇ&˜ˆ³ÃÒáFúVƒ´ ¾L¶bó‹SC8
-¬!ÈZù…ÉÉu磴¼©vp–m¯â+l)ªáPK@ÐåÊt ñò ±ZÜ•ðAäÖµ:l!3bHçFÊâb7†/ÅééX_
-¸œI—š ÝÓ1(–d”z|ºLƒÑùkžžEQDhd¹6ZïÍ /EÒ"wº ¡:Ì#°| e<”€€6Déd¯( =B}¬öªÛm ÀÀUR@t_µ˜±f<Ád/ß üÚ´òe›üPÜæèÖc0‰áB
-{‹g_‰^%|7FÏÏ‚]‰þ^äÁ¬Â/˜™Î"¦Ç¥¿yDï]‰ž’"In³?ð|åëªãÍWl#‡ðàœhžQÔ$Ÿ­ö¦¾JèNâñô„‹Š~D…Þ<1ظ"_¾^†ÏóåÅñd@£×'žö.ó6}ž//LR0f­ÉçyJ°°8ù\ÝyþVä\Û§dÎç%ÇSPÈ?4 øOK±W%•ž4™mD£OŒÏã¬òâ‚ÉPßžï~á>‡/ÛôI, ®%vÿ€øFò·"¯;i]:óï“÷Š<’ÿ/ö^$ÿ÷?* /®”Û¨z¹J닶B.ÄXrà&z§¨òLu`V§Â‹x ‘ÃZwI—Y†Ü¤é»¤âHHB©õ]1µ·˜ÜÑäÏý%V ¨#¬ÍzÀÌ@|šd…} ÷H`6#}Æ 2¨¼ÉŽÄWñØXþ4‡S²>!…¬ž´´Ý±wŽL@/`­Û£X|
-
-
-y;çý~("Û™˜(#³>‰ƒ*I ìèIKi%û¼*)ú•¬ÑXÜÄëÊèïipGL®Ç¯áM’Ä´Îd-"¢ðG®Vßl8s¿›–HªÜX/éñœÆvѵøÖÓëmâk¹Yx‡ðô¨ô
-ãÅOþK8pÇQVoóÁ`"+1¤f?²×˜’ÈñÈwÜ%p~BgF¿öߊ.ƒÿõP„OÄ­Às!ïoq}F%H[ÅÄy˜î¾1‡ªƒ2Œa< ZO3NÁà¨LŒÆrøDÔ"b/cvBNˆÿî’±ìw~ ÊÏ› (n§
-$~•bS_ñy…\h÷Îð,`p6ÿé“Xp ª™g¨Ž­užøA"3‹Ö°#h"ÌpwyðhzÅAª;Ï ÞU“øSÒ·§SCE§éxÔNås•$ßÒ‰»„0Fê|Éž$c
-¿Ãߢ|òooa03´‹ÂØ'[˜ËâáSBå"È;r¶ó²Â—"ÛNåFš,?zL™¡ =Ïý±Ð{
-UFÈJÈ^×Íž9LbT\oÎÈ­É«Oä˜ã­Õì  N›s¡É«tçy5•*â‡ÇÎýœ¤I* ¥tæ
-S]~»"¤.Ër»qÍ
-Šéæçáçµæû¡—ŽÉiÅ‚F, æϸmßfÊ®ÖkE-'kŽEJ¿§ ÜÅ° üë0›Ãl-ï„‹º0·@¶ÿ:Iǧ8Ìò¥$>5™
-H‰Œ—Arœ» „O ;ÌúUEE@._y«mNàJVò2÷Ï’¿bÍðOÙY£ÆhïªÖ›Ôbýñfí=D5øUFõÇç[µñŠÑZU´G·'ª¾{‘Òbt ³÷Í[i£Åã× È9¤¨—* 1¯.fCJÝR gI­Ñ¤õÆÌÍuALkóRz ‰ÇÏuU+jFè1d]k‚Ò}Ž˜/*ÒmAÔ­mô± …Dtï¸âQ‰Ä›v]7•÷ðÖ3G<nª—^k«Í`áÜš×´(œ(nXû‚´(«gJg’!”‘iñë±Z‹Ö6&k¢¤Çê¾IºV£Xû˜.R[ËëkÝ]†„œJ¾¯ª][ Žª¶@.œÀ·úˆuLõÚ%HÎÅ
-ÎìüV¢Ë B£ØÐÈ Ý󌩒ɯî*cÇkE¬Žu¾Z߇@‘!m\ɯ¢<aA(²…f©G½®"yYÌŒa’‹Pºµš.>Špµé‚XF×[é]7*Á8©‹ˆdSO—U£€ýîWhÄÅäãŠ&«¯&ROH‡DR;ÌÞ2Ëל3Ä®«F×1Ô»tÙÙ!W=ÿòy/!ÔÞê•cotNIšÜA…®`²õ?ÖUÆ¡½˜¶âÐç H†6³ÆØ ®.¼‰NÓOvwÙ/ûé­i´CÕ}JµšCòKW– æ˜SRßOçï3c5 ®à­eJ6¤µ–j3ªÙMA¿A6w†Y/ô<šr>îPK¸4hó é & ¬»:ïI'xÏFÓ¾hJAµÒ%Wr¨x#£ÉåuŒ·¬V~º{\ø:dB˜Z» 4¨MGMô«÷^@(¹ h§x BÈeØ@Çw“sÀèhx;šÐ††òqAhU¡[¹ðëQ1Z¡ÛPÒºå¤AOžïåzÕPÄY=T÷ÃCKGoЦ«!RV!Ž¶è—¸ñM^F²¾X©áQĸ µ#hí-û‘Ï¢÷‘­×ÕB1d¡>ÚtôvO™)vìë*ºFkRqß“J;ÉBClU\ W¥Üµèˆ=¨¬å/åJñÂqÞú\.å9c‰o®_]^<•Œ®Ñ-óWÐÅý(K–ùôQféV‹våÏÓw åeƒ¬¡A”›)½Ï4% ­ˆ ´§ÏèDZ[œQM´É﯈͉Λ`c–æx
-c³…¡Šðo#æ˜Gíxåž1©MC°_M·{a–Jü6c°
-…^]FÀÑâRRî&¤@»æ”í2C“ó)&Þn T‰<ÐîŒÅ%‘Dl½s:®ÐçQ5MïT÷I°1a¦§X}G|ÃÁ¼ÏŽUQ!οúâCIâ¹(AÆ–‹‰`·9®mjdŠÌÖ-:“£h”ºÏ©êUú¬ÞTódóF’d!ŠÝã[ÏŽ½ê`#iP;™EYÈ`eNïGå<Κ|1tö;Åœ›á`31 [K©­7ovõÇtµ}ääVîÖ5^eÎ`Phø¯3ûRàñå«
-5)Ýó“-1($rÚ†ÊØjF£ûÄÃ/!¸¥O£=A´žAòFÖ¶„0”˜Ù¬tA¨ÍA{T³#äIÈþ‰Ú¬¡`ÈDaØü—ò2Ç®#W‚è
-´®€ó`³ÍÞ…\qÿî¿$ÞoUe‰”×ýP9ÄPC³±(%‰%lÙ·&\0*´‚ ÓĤWùE]B£99òü¦¢òCO"ÎmÌý®¯1‰-#­„²Ôø—ç›Ø>Y„¢)ž¶vŒï…(,[°K1Î&ò­W(S­j¦à€
-‰¬Z‡É3â-mä§Üö9Çóhb7Èšÿ6ØXƒ ¥ô4¦é@ì*Ö(ŒH™¿ŸÃœÆŠòíè"ÓE[ñÃøæ÷&\Þûá5JžM„M+s˧Â]fµ¨"•˜€º[;ù þè/w˜åÒæ\¬Æ k…l™Q¸@ìÃy`•°NOçdI
-¯x[Ùò†vËUïgsJ%³°KsC°ï J“Ew ?w‚<"7‰eÝs
-tÝ%d¶A f„ o©¤C!hŽÉq£?<ÐeyþÝ_Îìâßøqæoƒ¸n[þ1înÜ0÷»!ج®AßšƒÀ±*»ˆÕ2H×kqãýh t‹!c¹“Iiæ7tµB’§@h¨ºš¦yqõ‚“°ü™A-ÌÛSó†à?é:=ÍÙØU$6Äa>ƒq?8ŠXóuÿ ଂMF
-3oH¡M­ò0¸'™!Û@´L70oЊ4<]ŸË«Ð ö ,Þ„Ç €hp¯BÉs xuÕ (YDmk~:§ã2{O¯AÔY›€™O_ˆÍFe7üê ²†¤±§vcS×eÁ=Ž}šAVýÜtñ:„¶ÜfyóC+yT§DçT$"*X ‘¯ò]k#-Eç¼Êw­p {(¥²Ûú/Â.ºõûrŠ34ק8Ãwû"g†¯…q6AÁ²Å==@~Û¨×â’'"E+œôisÏ(ÚβÒ万ûuЯï¼É8cà°;æ; !' q¶óô(÷+ é€Bå/W›gxO/ Mæ÷Øt"Ró¶ÊÝß'LH}Sèݬ¶õwÌ~Ž~ϧcˆýgŒ¬B ìÈúôåU€ÐâIáyÝ\ndÇÎK¹î ¯í¼†¨óùc|äõŒëÐvÅ
-Ë ßßt±Ö¿6¨Jl±u)yÎZ5¤ )Á ¹¸ŽXíbÿᕹnÎZ ¡„RŽÇsT^[ë f¢[$šfã )Ëûn‚Ø6É&9Wýy
-mX Ó¡Óz žûܘÂÊâ´È»&ïT|Dˆu°¶»†…ル¶V&ÀæÅCÜŬNZ³s ZjAÏd«6D¼ÀX-BÝe«T‡L¹Ç쎩
-*9×Éý»íõ]xšñW }üÓƒêöwÝ@YVp΂«ë;ßUæŽt
-¹+Ñyåé:H 
-cä%ž^<ùª£Æ¯üécÅÐeµ¤§RTª«'Û^At0ñÈò ªü„¥gTÛ9×}”Þñ#$J^?lL%í@g”-­BªnkCÙáën5³j•BæËŠ”² bÛÁ
-a «SÈŒ‡¦a £¸ÁÉA܃“º'ç1×|à|Ô-f8µ¹¦§Â—Èã4ꜜ~ßN¹ Íý)·ás¾è6Ã÷Â\áš›¾X§×ÒÁg%á(»—ˆ>ÏÔTÜ>åNׂß@_Ü®óbÓWoZ|ñöÏH+0N„™lÖ%¬iŽ‹øç
-N‚@¤$%v! d¼cAGÂiÍŸ1ìð
-¶m#†Ì²”2X(Âdµ4ÂÌi/—@c‘´TN
-;d«…&A ‘™A·§S†»•6<—h’.Èv€|…žaYô«`ÑØ;ßr¤8olGôsšÞ‡½ø9¹ÀCH^áyÐPô`…¡@«MÓ)_á?µII§ë;!Ô¨×1ÊsÒœñ­ Áå¡Lî=!ì²$Âiyq ¤˜f7¼puBËqÙ¡#Y,½nœ+e†÷«00´CHÒ0£¾XÀ"øÿRp>ÐÅIö^s¤aXmáÐÑGeç%›vqhTvŽ&Ä—§cšÌ¸á”ó8-BÉ!Ót(…µMÉï˜Táƒã V"“ãsÎS÷4ùƒt;º1œ/ê5‰IÖèŒA*Ì° al“m¼ÁnJ2”}-’“æ³)¥Œ@’ ·î’Q
-¥Á8ÒûNÿG¥??¹½ }–#þí’Ü(
-Þ°†’ßJp£ùÆ(°«âK¹ã¬ÉíÅÌÄJ÷¤Éí¥=ÐØaè³&BEjÁ¾ä~æBBÀ{N({-Ošl¯j#¥Ÿ4ùt×d“Ò™’VB7M&„õÍhðˆí¬Éö¢ó
-ŠûY—›ô}€NFnYú›¢z¿+30£\ª—ñpŽIeEáìƒí¤Ì
-†’.,geVu*Œ¤å¾*³Bºb:Mí¤ÌW0Ŧj)8+ó1hÝs|+hWæ-hWfBxZ—ˆÍíbWfZÊêÙ%° ð»23€)³F6nŒge†Â±6]‚–^Þ$µ½Pn”MªùâýBؘxm²ó9 gÄ‘1 ír“fèĬ‚|ÒfQ/3ÒÙ7óšõ›6̨lÐÓI›(ܵù‚F *NÁ¹œµù: ªíZ)§4íÚ¼Ñü‰ ÿ̨—6£Þ€ì4uet‰SP˜¼{ˆI†8PýìºÜ.Ɗ˼DŒ SÊn3y·Ðf©e>Y¬‰Àðå>¦åÕh1/§ÓÞ |³Ÿ9e2B„ü/lÌUpд‰!ˆBÛ1&…û–£­ é¡ØRS¿*`D×m¸7 Ñù¿à“ù €V‰"®†€E(O‹3„/]žeÌÑŠ×ÜÀO`ª¾®Ê/`p‰Rn§Q­v²èµÍsª8Ä´Ì,ÏDÃ8a›OΤS3Kq·~S»[—9ž1)†ŸÎÑ3Ö6Õœ;—*hnˆÉƒ4 C%æ=‚Né}Õ=ÈbVW¨‡yÂø´ ’EßðÔ¨Éwzù‚Þ€°'W€L{µ‡ELºIøÃÇxÖeIërLczA8¸ÈäåÏB&ì_-O‚$ø$‹OB|:g~šòZ!Ìn!e´Ä¦‡.ù)¥6¿*“¿ˆ³«4î0h Ë mËëf
-ÈÚSà¼yNæx Æœ–¢Z joç›fýôù·ÕJó!è÷1(\rˆk®ŒäCN•Ù? :4Mb«>äLö&Æä®°™ðÉÛR®ï*§†Ë¢wz’yÑ»9Ü
-yáÊÜå¡¡_Bü*ÆŠ«¡û91V¡I[Wñ«Ø…røÃoTÁ«
-®¹ íԅRFºuqrZk‡¤
-XðG»Ær¨XÝSF… sˆR~õ"’Y© ¦[ ep‹%?‡7ÐÕ‹÷Á¨–E Åg†T±Ò’B
-ÉWïÜ5e¼‡´x…ÅH.ÿ8qWfD¦ÜʺI¯A§™¦E¤üŒ5WEF”®·ÅØ!*"hu†0¹òÖymð0UHî<HŠQ¤:‹ÿ8R~ÅX ÝÚ Z4=Ô}÷¦ˆ
-#Ãö"ÊBî˜Äß‚4º½"Ä6›
-qñ-üÛ…ÁšçˆJÜÁ t±–Cˆ·ëª4lýáÀC7‘zl»# ¦GÎðc˜Á‚edKê—êP…Ùµ°8õlA§ú°vàš¡§˜cûvÒ2 a|VP‚t¡Ožo‡ ßß™ž_² ‚@œÛX;‰Aå¼Ô–v Ú$4 t²ƒÉtŽ¶C1O«VŸåô
-©Ûˆ¾×Õ¹
-Ek[Ô¶7áox.Õ%¬’ÆÀp6Yµ1ÏapxY á‘òz~Œž‡¨“ xk@¯ª?s £.«cMŒL›‡@”UF2æêúó¯s’‚ò‘W×NA·ÕF6CK™›ajÓ•2Uf„$Ö`Ô÷ʦ~^ö/÷²^Î=z¡ÃÒâ49Tm ÂT¬ËâõÝ{‘þ}oÖ~ÎÖò=› :§WmÜ«s@û½Ä‡/­úç;S£ sÀÎ(f¦ÅÈãpÞ¿A¡³™œ$…›y±ÇR&Ón»vÉ”„T¸Î«0L'¥î(ðÝèïÔkÁòàuq"µdÁÃxC8%ÁµzcYŠNâîñÐû/! f9Ü~<§qCÈÎÐÎÙôCÏ»¶š§W ÄVËfî¸Â5¹B>,OID2X$siÕ¸UYÂX¦SW"OsHÆ·ÂnÅ4έK5· /½ÿ} Âbxm—e˜—ÉC@¿œ†/S÷~í’z:_òÊÀyœ–S®kïafùHyÀ´}¹ |HÅwWTažÃv¡¥¦óò°7ôà‚v`ìç
-¦qAjL²Cbê¢<cß1Áø €¨äÜ~Í$Ñjƒ3Xª¶€lçÙEdtiÙ‚`véº§Æ áÏ„3šÄ®bÚÐã嶮Îé’~zc–q@;b‡b¾yux
-øÝ-ýζ©ñGÊó‘dJÜX^ÊâÂbÏÁ‚õ>–ñл ¼.«”µj Zv0 ![È(`-\–“±§cØ0ãŒAžWç`ù+ XÚtQlH”î`¾n(û¼‹e#B®gbá&a´Aœ aÞ˜^%7L-Þg3²ü>¤?¬ä˜ö/¬xyhÒ÷7tîv2KCÑ/FÂ= {Ý  'Np§ë ³–ÅòBÈd¬–à>õËh­Š^\P®¼·ÖKl*©ÇýG»N 3_„ñÁ"QWä®f;9ÊG‘Z…Z±PäL'¨ª_ßNµ÷1X{ 9åŠÓ Úxrv›À´sRÇ `×h/ ¥ÍäŸÁ^Ä^#oWqð×д¥Œ~ýžŠÀ¨ÁÃeV^¶(”`©T
-"RÂõHZ½=CìªÇB»ç<¶‹Ís×å4ïsrœ bÄsχQzÿœ8¹ÏE‹ÝaíoVO…—¨aè‹ ò¹âéº'ÐÇ+1Y¨™]_[·Ö>õÍ@“üB{m `\ÄCpH¬UëBö½ŽÓ&aä|ƒ¢
-%®aÕ–å2jg$y3ïtN*­ÿØ7Û†ôˆŽöͬâ6ž‚GD>Jÿœ¦‰B¢Yn·ºM©ê˜ ó¸!…¦Šaè!3òˆMný¸
-ÝgoM8|uËöG|ñ¨®ÆBéã(5]=ªß;“Ç ýÝ?gÜ—7˜œÓ-ÅŠ+X! ƒ°ÞïVwÇ&}”Ù ‰÷7äµb‡?™÷Âl¯ƒ¸Ž ±%‡ÝZñŠdLÉ<î©ågZ„I7„­$NÖFÒ<6„?C’8/;„+ØxZ¯ßh9ä<l<¾çH-c Ê³ÛMôdf!¤ ^Õ$ä ¡‹tÆuc RAŽ–.Îiwì)­Cê¡.¢éˆ.n/‚C³ÞáQL£XŠ·ï-8ÚP0Ǹ÷Ôª²Œ2÷9tNäåT¨X†ÎÊ24hM'_ÜK¡J‚Œ£¨,í¾xÆxo;9“Û[zÄm•72Ú1E# @‰fÇïÖd¬ÂŒ4mT¼·l6`—b&26«øI®;f8ºuòë榄f2E1‡‹bA_ZƒQ¶,s5^¨h}ÙÚˆkTsCÐf4e[æÂÈK«%ßÉüƺù2ÈcùÑ·±|\jdÒ <³<ŸeB™ ðÑŒg–gÁ¥eØ6ôuŸåÉ-òƒ×–|£«žŽ—|HËŒ:!-<ÐÅ9éž#„P²vLŸœÁðLö
-šðª=’61¬7Vð‚ãÓ1Q“W?˜ ±07ÓðÅRÃGÎJáâz6dV†åïLòÚ÷Ø¿P“Yñ:‘ü ä5G|B ¯ƒ<’?Î$„Y,2ŸšüLòù^: HÇŒYžn–åÛ1K>ËS ììÀ‰¤ì•}A¨­£ª]ÊZn”`+þ9´n_\gé>Í'­…òâñ¨ËÓƒl^™U#þÌòéNs(rpÊ3ËiyT¾Ó6‹y4yEO;=¬=ü¼ òxžÏ;T‚í/hžwàʉ/§q‘å¸c®zŠùu“Sƒ¶3·å¢êk´SÄ#ÄV\š5Ò”ø|–­+š?¼ì„u4­0Lš^y4ÿ#þ^4ûÓ›ÜÓ‰Ãd³ØnÚ¤± $à”„þ悆
-{º:d/†æ µ8ç}sAñ®ecÒ|diµ}¿“.~ØÆaü³HR÷F›Œ˜ÐO䲧°Öà„3:Rògè´Y.½}zè˜:ß‹"¶ñ¡í‘ÐåõçÚ;ÖEm†ž1/MetÏ¡£.Z•‡ ?š‰bPKÈ©Ì‹WÁ‰!ÀÑ-²‚™ÐLSÑ:·‰ò›EnØ9RWjß^"èòƒÄÙ´PW‘«„åè›ÈÐCí?\PæL¥</Ù—Q¶e"ñ&F†è™þ"㲞Îí73êÁ?ĺX<µÏ,kÙãå”®šã ˆî±f)Oá Ô™ür®ì^ŽnAŸ 5?6†w¾Œ¤ùŸ#…W(aÖ¦%SOÜ©!˜Ïˆ˜á^Ú Û3ŸâÐ|K>6îIæ~Ï Â"7Z6©..Nðg¯C{rålwõ¸êè^ˆ›.>‚˜ñiž¦|Û Ýmw¡MšNÙsÖ”dNW&Ó†ð79S\‰U&¦™
-_¡Æ6úË“É’#œY ²÷óCËšÁFYЬqÁn³´´f
-ÊÈŽ¹Ö÷}<Q1óaõs‹0¥¤ŠÒã Æ£d¶C(ÌxgUl­qÊ<Fb$ž(¯óé9M\ì0RH4aú¾Ø'7qêŒÙïÓS9½~ot*IVGò©HÌht;›-" ¨¯Xf¤ Q ð·U“E–Ö®:×X¹®-†Ú1%–?1TµÚdPï™Wéöz80’¥I£ÿ׺t†Ðï–e#˜q@$÷á‚âZkhJ$xk²Bæ“lüPm&‘>W/¢!¾°ýâÅÍÜüÃtPTŽ—š±`ì(ÓD‹¼.z.$êDÎà÷ÝÇg9•ÓÓ£¶ö®ÌŠ‡|øçhd
-ˆ×‹95O't V†?}_°´óXÜ^¡­ë$=8m1ê¡ÚíF`EBÓÏÑþT0š¥'†¼ûÁ[/O¾²Qv,Ë9O 8”ÁjÕ ®*ï 0b\Ýèé4mBÑÎ y±êÖ*Ê„ÇÂeùj'jÚJÁ=üGÁ¢l#¢  ’,÷fªÇˆÔ.)²Õ¼¤÷\†+Òá×D[²±ÀÏïMN†‘X$gc„<Y¶a/§OÌ îòÑxW@tŠóܡBת0xUd2÷9 #&à[OŠ÷gåü¹Vg맨É3^GÇi&Æeæ-°Ò‘' Lù
-òQØLG”ôù¹+èõ;-o°}>ÃI vÆ}äGï(L¿oÏÎTŒQA8k=€Ï¡`Á;䢒Ì_/¢¬Œ )Ô!ù+zÀnK>ä%q¡Óû{1PPzíxs„2› L#íŸÚ A˜c2Xˆ°s±Spæ#‚_ÚS{aˆñ&]‘¯Dë —.UþS¾ô
-ùaô:Ú†Ý-¤Þý©ˆ˜Šš‰œ²]aí²4Ñ}ã5
-jÚ¤ ÓJ$’Kž!D%"F¼ƒÅ= 1õŠ8p.3}þ”‚!þ­Êß<˜:fLyÆ,õd}€°›èœÛÙû9YÀÒIíÌb†õF¶¿ìG…/Y(E®ä+ÃD­ù}fŸŒAÁQ¢ÑÖTrQ ÈÃÎAhp‚Qݶá`E'îbŒö¡gìÉ ÄœkŸº€Ò¶}VlÕ¶‚¸ ;Qžæ;:¸ºlÞ~7Ïf\1[cCø·|
-¢öwýH/¬!Æ@9a¥E=ÓçPÖŠ9U"Ø&¹*)òüaݤ8)³]áy"¨Ð?GôpI´lzp
-úÍçc*ÕïZ îãÊ«G”¹KìB{ªÂŠÏü‡Aÿù×s*tùÂ1…%…òزèVèýµÊ±‹5ü t¹v‘¨+yg[ ½~Jt4&;P¥|´/–ƒ8ϲC'´oTžz’@ä1™ÖÚŸÎ’JÅ/FžÀNjqç(ÖôïOñw²U¹Ä8=uø§þ<„kVü-h‚á($Zk>„Ê_GPfô
-¢Ò‰-UfJ!,+GíËÒHývt
-SU AR:fÕI Ó
-†+îs”ÕkÕÆl¶È@Q‡Xl™«Î”š¶‚Ë/¢¯S1Ë–ùúèýëbTBÆ%·åý16
-ׄ"w&x{:«Sq
-äÌ"ÆcC/gæÏÁ¸ŸÃxAöì*óý6ƒÖ•ÆüSÚMå{0ûÉ^w|¶Ó…¯8F¥‚<­8ä™`?Öä‡í -(áå¬+1Šλ×s¦KCN¯ú§þ¼ fê—¬2†U~ãà6~ˆ‡‘ÿ8á´¯ *ܱIwtùÀHaEùSœÈysø…ñÆ°§POõ61)Ñ@v/=ø â &°©±o‡Ä?x„Ô¡„Ú3yâ»C¾øù× tòuœYñҭG‡xñ9",åè¨uÛE¼s6Ú§Ü÷µå¯»Ä²yÜ „l[GáQK*M¹ÊGS&1{ Pùûë‘gâÈH
-‰ðè½%©¹È]Oø’“ϬŒðœÂ—–"SÇÚÊÓ9ºÙqÔzÌ 7.,↨锔òWAN!l>ôOA<@r¯óANÂkŒÃaÝ^µ‚|Dçdž$)3AÙ/<=˜4-z̽Mo“ñÁqSæ–Ó·A§öÿõ·ñmíkÖåê™·‰lUõºo#ôѲïZ<¸€$b•àˆÅ!ý¯ðó†(Öᜭ*$ξ0y÷Š
-ŽFÑéxZ.4ÚÚÐloˆxV5T:B¾
-s£×ôÏ?uA,J]ÿc¼\’3¹q |•>‚à›kmûÞªï¿/I°ì¿Šå±Ç£èpCEHäÍN~å"þ-êQ<
-¸J°°Ó\SgïÄÛ™‰ì£PÈÙ)ƒ©@ü˜ÅÍÕR%óêqãŽÁÿ‡åïË’jöܪ6âÛÂÐm×ö¥¢]¯g[¡šVؼGħBÒ½ñ3ã^ñÍÁö°mQÌövìÊiw©Gç!51#|¹.|p0êu ²+¾Cª/’“—`à׫ê‹ÅÈB»»C®Õl¼ÏHû¨ VÄ>:<È•DeäÿŽÖ– XO;éê—PßÞë[ ’ƒíô8ôë¨Ï"@:¯°Z|/ŒwóʺÔÍ´®wËA¥Ë¸JÃ+:€Ðµ”ãF‹^Ä`é8Ü36™o¯ «µJ€r‘¿ãõ}ó%<>’¬ÿ¡ä¡>Š~‹0õa ´†]æ?/E²(*-é~£ŒBÕ1ãÛ+`ÊBÔoN¤„GLb—Y B
-uÎ ef<Œ¸Ìtĺ¹H!¡‘x™]Ë -øÖ î]Pj—Yøg‰‘°¥µÅÏï<hC·ésRDI'ÃÚq
-D¢íN6™;•á Ẻ5ìdñwÏýÌJ­ì£è l6Z°vD”ô/­G·Iz.N
-ûM€„ÅàŠÃ•/‹ÿ”奈â\L¸>ƒ×a–2Ë嬇’“ò½EŠ °ªµ½9™C$\êô¹øŠãJ’±ŽÉ u¢´\íËÕº,äÖ4´„d‰ÑÕc¦Ý
-­Hd¡öR":‚3MÒ³Oº×ˆ!› XóþÌä,®²=y˜‹š¡¯ê0Yì‚ON8¼“™hãâH Áð¸áÖŸÒ0‘ë;È=ß–×sR2I»x3˜OJ+ߥbeSq
-+sëû¤®Ð&mó\HIWFp¬-f–ÙÀ}³D€+˲R2­Ö8ïcÞà¬Â({ï@ƒô¦»EåÉ3ü“š­ïä ´bD¼ J×f®]8”ð˜&"“'õ“5@ªÈGöý$nWh¨n´3,ù±ÉÍåÍ%Ry Äƺg¨Yñ”–.œOH(¬î)X’¶éª9?2\K{R>§SæĪ²ýÜð5å².ðšLW
-õüúYÌ‚Q,ÛàIÁqPzY%˜aƒ$mÓ(eû[ȸl`"1»ŸÀnD!†epé m{¬ã*ñŠŒ&í|)1þ$
-UZYü(
-¦ùƒRs}ø1´³è›˜üó7GC(ãí
-“A)¦µ÷÷ð×üýØQñÙ¦Ò €´Œ¡:‹t’q †t®ˆMtÅŒÒuÌ­†¨Ä~Uømo1=_6#Ïù9 ª’Qª]–ùÞ–0¾„/¶¦X?è³µ*Q’J{¥œt/ñ£>Ç|üÎ'XŽ·¹cîô¨tŸÍy,
-n dÆÑ6ê)"q摶_%%4–«áßaS +¶¡í04Æ‘¾•tŒ¾”!Çt½êQTV•‡Ñ²èW–Š3§²ó–h)@æÝÀXØ1°’=¿1C3MAÛ£šðCò0Ã;qb Da5°%Ðåƒ'â1·Rà iÙ¨‡?ªC•p1¨Hçï E
-±þÝäââð“&/Ù^rØÞÔÆdÇàúœç­ÄÊ%NæQéí;T‹ùâ”Ë€Høîÿuâ
-‰]äMÂfJáLžÕê¦n«À^áá×wÔDx²º±¥ÅèXã¿ÁÚK‰iLÎë×I÷qdëæZ˜Ž~"‚Õ3§¸–{h~¾‘&AŠÕè%d¤q °×Å’¨>±Ãª³13w;H7ÿ ¨íØ\(ÚKÀ#k• œG'Ul¤Ín•m8ž½À^;Cß½ÏA PÙ±®Ab0În´”Ø"ß¼¡q+‘ù£ MžÝyÆ(û¨’À´"Ys¶¥ý2Õ°©ÙúΓc·\«ÜfZͽ ^ƒya9jÛ'=j>M¿î"väÖ<;4€(³Ù-o6AW±Gˆg&–¿Gö «÷IüÀ¹ƒ”¼C'tˆ¥Äù9øØyØJ±tL®”è›ùzº•8$ЭÈú ;ùí;x1¶~ ÅÙuS»+Ä9Æ/EgÖÍ@Ù@AM¿tiLŽ=¨LñQ izÄ,AÚWwyD&å6yôóXðm¿×‹³°|mgÒš¯a×ñЀáq¼`ôWK Ñ$Žs ”i
-r>%V@*BLãZoõ«?öu›ð0™Y¿ÀH½¤÷_Íê²ãŒ\ÛŸ‡®V®ýÏKQ’¥ÄäH°t\ý“|¦ÿñ2I®ëF¢è
-¸=` ItÃ
-ÖÓZÂ3jèý×¹@‚Ö_ñí°#D^xÙÜæô„0‰Ã÷nÈ5.
-“€­Mñ;°Îhî"ù{tЦ׃áwù à×TÓ¶ÈCÄóH”GçryöŽ’EÂ\Ÿ ƒÛ«5=«‹óð•R˜]\Ľrn^Îï
-d ÜŒí«dŠYPc/Žš¹¤^mcrð™<U‚f¢¥"†Ôœç½sk4Mià㸧¦gÆNÌXý%n¯€`3n#ÖÄ0mÚçéº+èë•Eõ}–Q|D9lër„[“緵Ϥç#óz
-wF%‰‰A ‹„œoœ÷ Äš’Ñ´º0\lrø6‚TrHkYÇ}Õ!oâÍò!°DÙ¸ö
-âÒǪõ"ò‚)»ÌöHUB‚ª½zݧQOΚzü[:³ ŸN«K !µtLß y—˜äËY1i;ª ÔòIO½?)f›|ÊÌ\ëùœÆ
-nwêx;YUÕ {ùõ$g¾,è$g;LC®ìp\™ZÖ»ÃîÎv
-.r€}Ï;f8PAVËúž ¢@D[¨¡',2?ȬSó«J¥fÔôߨR†,§U†Î'Iã}¼& ~Õ ›dˆµ;Ÿ£á¡$Nù†<„•Éuˆ‚Í·;D¿bpÈduòaaêØÞtF²`ºâ3Ø•C˜Œî5*{{0.3H‰™ 2E"OÙ÷d°Q¾…wRLHË}³< 5­mg§¢µ.8K[ý¼²ü‘ÿ̧Ëe•Ÿ<NÝ$.i‚Ò X´ ˆ=’íéyÓ8óC”B
-ÑÈj5Ý!£ç(Üb áýÔ½q€ÌVÌÌøÌ,ô䣄]žGÕ=“œaBp™D2÷°ÆoÐÑÙ;ñÔ¢Z‘ž¥+èŒæmìU§øñd¦>O/‹±H![”0¯á0µ•µˆ‘Š87l#ªÐTUDøŒÄSÈlF×Â"UãqLx,ü(¥ÂÍŒ*ÊH¬Cæ‰2®wÅdÏü» «‡®þùÊ þf#†g°›|üðELÐD‡…˜u[ãšp¥MÄ#´hBu±SåÛ‘"4Êwàò‚ô¶¦¤„â´`Ѩ©Æù0Aþ†õ25Öy üK{'Iå÷@ÿÈM‘°ã¼Àbâð
-«Š@ø³>·†í# ­ ´P¡Þ9¯Ðd²€vÓ’5B¼‡šø˜z
-M¾ÉYciDl·z S€Ý ™CT#<Yk^
-í{èñkM¯±x¾Šõ‚#ä…]8ë#fòxÚ­r=AMvÿþÌïGØ.ç¹í»\ÜY6~ÒÊ‚ð«`’žý`ãP*Ê»³»€øŽMømÌÛŠð@Ù }N¶ÎQ’"Ö=@CÂL"eYˆÀ¢û¢+F¦g'ÆX§À †¡ÃÆ׃5œ Ëø¥¯–(“‘Ø+!ã†8tݩҳΙø[B…d‹J¹ßí¦™§okߨAN'Ä™š. Ï' Qþzº¦W ÊE¸¬ÝÅCd 2EHËz2`ñrÛñ–(Ã1ØüÛ. ·ä@)'Þ2üŠb-06ÁÎñ¡I¸;C´r€øU«òÇÒZ|vÎ#_Ì×d*EnIä½ïCà>ºÇ <ò{[èKÖ(0qÿÊm@è¿ÉÊ&wrxãÞ&¿Å'ê:ä¸Ø÷±q),…a2 ¯' k3o“Þå×ÃÒ§è»[µ€!‹ÆWi I¸wþ·W
-FKÌ ìé6¤ËRÕ£s
-ðʨÇÕà©hTZ”ÄK!ˆj¿[ç¥ : CÈd¡}VWÍ”¹H6Æ–Í.˜àµqlÏ96º «¤2N`Ën*dñ²¼&éÜé_=Üéccâä‹/ÌÊÏMÁrèDðóp+0=“"ÉcàÏS P¤Ë¸²ò4§\é--óä
-YjŸ|šSþå(àŒ§NÌ
-0
-H‰Œ—K’9DO ;Ô&@‚\«—º…ÌfUºÿv‚`J•ÉèQ¬?éA‚€Ãáè£hiöñŸVý1µk“î£÷þñó[µYeªÆ/­h<j·RFë2l|\ê£JQiͤiZæÔy™­Xo2ÝÚóªÐ|ˆ[•øÚ°ßþû­~ütô‡zëݤN½Î+eº´)Czûøµ@µÏn>£@¤Ô/#Ø}Î(Âã†kíiY§ñWi3!R›Ûlµ‰Ù: !¥÷R¿H÷Ô®j^×9Î=ÚÝ«ŽÌR‘l²=%!Í;™˜¥é‚Œ.sb%£ß׫¦jÓ)…? 7 µ â”þñ™ ZÇ$Û¼8#ªÔ¾‘™}ågð 6Üym¾«á;ꦺ îd“gú~—”Ò'ßÀ]ùé>LdÚ €Ì3éóÙÇ´uN㎩<»jý{Õ¿C² BÉTÁm)D
-å‰WÝéJý
-:×VÍ‹E'"žï.
-o–¹iñÂ@2L"ªÂ‹¤$/øŠnDŸ}¿<„ Ê¢Ùçœ4BgzYƒ)ôKÙìSlØIã*øÿÔ4„˜> «™Ó‚Þ2f
-¬Ga€aëO»¢O 4³ä)øì=ÿË$9Šï¡à†@ÍÌp,xh )§žB™1Êø©ÏyóïÝyJbsS@Fö;¹(8&ô ýuâß‚:®ôxP—™É윌œLGÓç@Y|NKñŽAëÈZ@ÌWÈj˜ë}$(<(t";ºŽA–&„ñ[ƒÄô,½W ¦µB%­6s+¯ª=¶»šÂ ×¥£ã&]ŠcØ…pÈì5Ü–71§ccâÉÚ$þ Gó'„=â suõ/œ‹€JúKÞÍ;‰³ù:&Ȇt0B_`i`¶Î ‰4JߦÏÉg`c)Ì«Ø4¡
-#rÖã±ó ô$¥‚æ¥p4g™7?­÷¾éC‡aIYðÊ5"bú`„ÿö\_¢l&‹•,Ó'ƒFðn%¥–<b@£Ü£îB…ùFâø4|}ÆʳòçÔŽø(V9ª1ÌE[ í7ªÈ'¼š²W÷sh
-¬ö  kˆCæ¯<†×@Sê:3F1©qÝnGË(á~äš'ˆ…-f¹›˜ƒKÕ£1‰'(úôy¢äNÏápwÿN"cYaGØûEÕ)5€ö‰½÷òÅ‹ˆ„Ä¢ÒÓ_D’‘6a)C÷†S£áYÛz60„˜œnÅëÑX½×ó`Ð
-º4Rƒ¹cŸCèZ:yZK‚ÕJfê±|UÉÌ°<"GLì&ÏGUæMF“磜FàL<JKR„®RK&F¦}ÝbrWÛ•
-©0<·nq£`–åwçMa >¶*©ì±¯¬G‘ÑŠ‚L9F!9ˈQ²õ¸˜|yôÐy,FÓàpž¶÷cÒ2Í8½å1·Ø1µ%¤Wî ¶¸ðòe'Ì›¾‚bÖvÂôš q˜Õ¨ÍEG†œñ¬Ô¦s4 Lº) WI 0^¶¯*˜*ÔçWÑp¥Ä<Ë’‡‘Ãk²]èÑâD©¨¸ ß”;«à[tõù&'½AúZ!Â*ÍXFÉb»6ݘŠ¨€Š2ÕÒ+E¤f ao¿ç_ñT1 riSÈ ÉÂð…ƒd¤g‰§BûÁº$¼ BZCÕ¿¯«®ƒäõ§éúô¹A5køþm•æˆ%Eb¡ÉÖ#WC£W<ápà‡o=ÁòQQâÉBTAõgƒÖn³cS
-&›š½G¶hXÝ<e+ˆ@4ßô $¯Â¨ 8ö?ÊËeG–Û¢_ÐÿÐk-|&É¥1;i2 xoxcÍ]†ß'ø¨ë®fI-–Ç£˜b2Af¸üœ”B#ËzŠÇz›ôÒ`Ò 8Obh’³~Lyn"võÝ$nâÅh6Ö+)=VðïÖùÚPKzHªáhrì
-LS÷¶™Ù (_Ñl@‚îÓ‘Ùõ܉ׯ„…†ýáiWéÒ’”jÆýóƒªùÙÁŒžÍ?þÄÁ H•÷÷B­2»¥ÕÅBèÆ
-%JÖÁç H#ÃjÃPÒ¶Ï
-š‹` £¾}ÍâJµ+ÜîCQ»ÝæKa~&¨ãø8¹žo³ô©¥+KžzjÅÂÓuvöéÁÿaoh$§ìâÎð…ÆŠŽé‚ðd¹«vqj0PÛÛ¹áþ)Æ#ÅŠ+y Ësˆ¥æYpMõj¹9Ę}[è(¥j[Çy)-¦©”râßñX”wƒò™¢°ltƒ¨2å™e7ô‡8)(p ´YƒÈÞr´‘[&Ëø-‹1Âfí -BéYùS뢋¢;žÔ•ƒóˆ±#Ûл«£<vÂð8¾]l(–a
-j‡Z\m&½IAáWßÁÍ+Ç·ÕH­…«eÈszHKxãšãڷЋKÝËD$\"±Ns–ƒGcD¶zs"Žá•÷,ó$eBjU·…he°¥´.Ïø³Ñ ´JòÓÚ¨Øq'”©]óǖԺϹN.„<B i¯$Í&§tŒ¤ Òo›ž›Ø+­2=ò$* ÈÓ°63 v¨ÈÆ·6œ/™sXû9n {i:>/@¯©eŠ2ò*Pfs@”@``^VølÌahÕŽNºû•ÁG*›nÔîsBî~ƒÈ[¬LwJ¬¹/®c»J-p"ãIóþ;gÉèÕD4æW?!¤BT€ß'ÎÑfŒ~*ß'æÿl“1„¢¯ú¡øf-]áü@_[•ÁQË?渰Q äßo@_ ók¾0KuSë¬ûp’µ:ƒPb¥ú×µ‘iC “Q¢ôHÂ>"o®ö!hK=Ù€ˆürc\?í.‚F*Àðñc¥aILø½nœ
-|}™'EV^äðè¯ß15°Œ¥\UCH²æ›rëõ¥ä×ø;üѹ9@2ñ »œFҤŴÀË•[;& Zƒë¨3ˆ¤ÇøÀy$ô¾«zÖ¤¸ÁÚöV6Xh ¶Ž:uÇr'NæÙ‡û®Å rÒ­«“ûß=Õ ²Hñüä»ï<ó楖öí®ôÂâ×ÖlfûŽhã†øß ÈÓL}£Ç&Š†ÏÙºøoó=­"$&ù»0$/ ½h<ŸvÂ|½S‘4ㇿÝÜý×›{БÖ{ªŠ¨ÊÄɸ~th?ütó÷ïþþ/~…XÀj‰šŸÿÞÓýç›Ï.>t(]‹z
-ŠÃ¤Fš^™5Õ r)ú…k…JµÓÖq–1Ñ$•âþJe¿PÙ* °yòøÑôB½ÖQóo@¼;ŠòTáʸÿýWSðµ<&4VܱŽ«ˆäéJµmâ”BàÇNlN€'œK³¼®?ÃÅrªÏm–Ë"ð ¡ÃU×É°?¬vvN ×%¹ ˆÜìó¯7
-Ò£ŒyãÞ?ãÑÒSè$n¢ÌWpO×gö³sœ†ÝÆsá©þìýµƒ(ü{bÈ­i
-þl®Kú¼ý›òÿòÏÛÿ™ x—›¿Ý¾??ô^P-©juµˆÓC;ûÍÙÛø6ĉe ÝÛ’IÀzÁ5’I%­Ø©}ˆ[›, q¯e[™Öß#4(9§{ÑŽH¸ø=ø=㘰Dé·ˆwÆEÒ Ù¨O¾@9áôàø6Æ÷«C8L+^åkÁ^H¸á›³QsÒ“läè ·²ˆÅtl)?/žø É=lµãÙ¸ˆ¹ž>Š^>ª£ÇEb— K~|ÅC"ì £4õ"ÈÌE© Þÿø1»ë¥È[Æá#’VL:ÿÏŠ}Û‚*s…÷¡:d}vÅÂY"Q ExÔºð²Èµ¦:÷ˆW­¦eK×ÐëÅìÌì~Ô7tšÉÌÛÕ×IUü‹Ã0¤£ÙáD£' ž Â pÿGuë„Œã8'ˆÃrõX¦ù%me’Ç€` N–Û„zY鵬¹yBÌ“(„ ¯v˜Ñe-˜”ÕuƒÇ é õ¾y‡sµ»Çá[¡QÒWó«Å4E± V—2rˆ”UR7ïTîôyV,wX¸ænÖ2¥…æ}Ý æ½¿ª÷Ÿa–ÊGÈ-ÕVż%R˜õ©ðZ©µmd¥%1J«Œ`¦)è=±…xØÆgLµ…Ösëô9°äÄÐÛ´åº×´7Î`é\Ä h7/ǽ:iÂv´Î Ï¡/ýΠº9Q¾‘{3Ö%ΕòŠ!×¢³lNØwÂâWÍ„°7ae›þ¢ 74îÅúăʸ4^VÏ÷ÍdÔ¼¢ tY‰øäâÊ@ðoQÂèˆNTG¬õa™'%®×ˆZ0ß(hQ±®j‰…&Ü]ú;aÔ£"«öª3¸D°4'1Úâ+„,R“^Äöý¤3¨°ô­ gï‹ávô³à6ZÜ^JI‹&ažÅz´ï©7Êt,yh•r²û®Á@‚y0±…`Û‡:AæIÏï½û̉4»bž¨·¿Ñ _;sž”-;i¯O{ÀÓ(}#âXsu#Úßkø;úSýó¹Ál•â|ØôõNEC)
-1²ç"EžÝ·¾ Væ°Yò¬JªLoü5@"÷¤ɲz††sieÁ¾cí,â²Ó”Áÿ1^&Ù‘Ý:]÷P+Èþû½ OUûŸþ$˜¶^‚å¸9ÄGhÖPzwIÅÙa¢3nÎ)ÑX)èxN™^%Úk~´R¤QA4òŠc—$ÞDì3ŸP‘ˆŽ¹Kö¥1ÀT‰õÜøó˜Ö Llmô/ƒn„
-™ìaÀÏGMR*ak*Í\ÏáCˆ: èÜ+sõYǩЀžtK‹È)Œ’k.ñû(òpHQÖKñÀýw‹ø\#|9èaÙ@ôŠ
-”‹e“OnûÚËÎÃQ¹˜'¼•¼VèÉ^–Ĺs˜‰1ö+óÛ‰ßN§‡äÎ#~Ë: Í×”d³(r˜²FÍûš¨ú“Äæ9Ý‘Ññ$ܯä~=§*²‰>Z<·)#óõu«$`MyEÝ^ÕÉ¥ÜO“ß Œ9‘íɽ°s2LÙQ—¸%€ÃYQže²’Âm &¡X R_xìÜÐx¹Sgýðßòà›â«HЈŠp™l:¶›Q9tE{>6¸BüØ›¼ù
-P«(Š?î»dˆtØôšíº¼(³¡C–íÏ?œ·9MmÆ‘4™“ß-òXþ?éÛX>-!¤‘­GÏ¥þ´"~!PC7–'ßÒE–›î>Íç¼ÂâI†OdùU{,Ê範˜a·„e(¹øç”WÌ4zã…ž —Á¡«G­ßÐQ^Eábãv Qo*êÕxyT})¼@Z`bÞUô„õDÜ×s†¢ÚûÆš§„¥ÁFîy£ùg‘ ²ŠÀÁ2 õªÏ"—æ¢'Í×—ÜX†{φ=Y¾¾”EÙQÙÛËSCƒ¦³…O’gÜŸ¦2OOÛ×@é\‹ 4X þ’À7=jY%§Â—íÌ'Ç—WÅ9)"†Tn+žŸûX®ûäøòZ‡h!úO ;gñÆñÏ"wä™öÔX3a°\åÿYär<E8pÝ”•w9>¿”®’"L¾t9¿²‚IDœ«$ç͵)eùç¤
-Iß'”u\ăäaAòM†NAÞ…äŸ5nwÒºsœôçbÀ"—äÿ‹½ÉÿøŸJƒÞ3p!lù /Œ ·paǯHMÜòDG×Q2B,lY[ÜKÉðe óK°l=ÃІ€ÿgù#
-ðk¼‚œ”g£1z8Ý]2ñ" ”˜÷™¨ \!‹ïaÀ>¢Þ˜uŒœ$ó`³
-@2,¶!ŒB=yI %`g·$3 ük>Ó<p§HÞ£pI8ò¨(¦ÄÂAûº·t 2-æép!ŽwÚ§düYÑt¬Umd¬qÁ)N’Ñ
-9E_V´Æ…Ô§j×KaS v3jJ{iÙý—Ãø ˜K‚xƒFî]KÊnsîy9Ï‘Ó¦A£6 0ö!E{#[óñîóï­ƒÑ/ë^Ñ*i£à³Ñ€x žáÄMÌ]‚qÁŽ³£Ç6³öq²Á)×ó%ÅH$Æi_b_xcT‚‹ûÆÆð:2›;zü¥„´ƒaÅ_‘÷8ŸEOŠûºa«Ð¥p»?–ä¶|ÛI'H(¬Ï9›½ÃÄf5.qéL3wxä<Ö€•é_1ŸÂäJaû±ð­Rjw5äcšž­Í:†Ž]ÏR„/» ´Ð¡ÓÑ‹¡5æ±™¬fו—&AM£NIüIŸ14ÓiI8á»\úg_É•
-Z Ï#s¡y“ÿ¹‹À]ZÆxò…¶á¡P•–Û™|ÔtøjI»D‰@Q‚Ö»Ø
- ,ÃôY®`RÀጚۨ~=ò?ÿ Q”EjZ¦'ë†IYÒvÌ‹fk d)Ü8‚%Ã×.ÖVI¦ýX­)4Ɇéadܦٙ›/ÆÆÖŸåÀ[¶¬ æ>†¦Â›Š?Ç£ŽD,h±ÏÍ@NÉ’ © ÀFdzHš c š¬½i¶Sô„bSL\ñó#§:T$·É~F-50L|g5ÙlÚ@Ú‚\äž|­uÿ©Ù` ‚d(pRñÏ©hmîðx9þwŠš´³í¢­bßÏm°ŽŒWôcÁê«hP=„ Ð‚ˆ&û>Ga‘]IÖ?¶‘þðÐ@Lv:»õ‘Ÿ5øø×güfÈjT¼SÁO]Š…C²ÝY1[‡>K,ÊôÅ¢,æ¹B¹‰›%8ÐlŸ®XÀܸý.ü‡î‹E!ÄñW,[¯É)±/ñHp÷¤v;5Ü9+ÑA³ñê„*›fn$‹0G> Ht)³®9›w3‘ÁËÝ@Ä‹…¹òIk
-L96
-º‰£¨;º¤W…Ž¹2•çáá>°ŽÈÍü³H.ƒ `òf{îÏo9䤫/¬F0R†&+{w§h/—cHt÷J¬É²‘ðH©9úç0‡®ô‚ÁÇXw¼&c@ø6Ï®nŽI ª’0oçKôUA²²E3d¹Œ”ìL‹Œ·fä–×%QÐkCÎwü‰r©§{Ú‰öþÔ¯€ü×?&ÜeÅÿ/“,IN ˆž@W©8㺷} mS÷ßê8¡Ê ¢UšÕmE€6° Å/…ÿÎòúÔµ­™?€ŠÒ~5ðkñ0Y1–Ó  ª²Ø’„®-Š•md^‰N×ò¾9뎎å7ˆLaJ|½*}MÉU¤»HFN†¥mñIl“ZDŽ‰ÁƒØ2‡4PÎtKmGFøÍÈÈ/
-ù}Q~\Zµ±‘|“8€x†óM ‚™ìªkÜ=ƒþ`
-1ŒÞ„ò±»ø¦âª¿Bl˜¢ÔÊBžJØÚ–TZñpðmk©,9T êG'üν ¢A>#ðT†žeiÇŽŒè¾‹’±TæF‹Ï!ZT§Fíÿ W^Í W¼d©N?0k2<MÍûÕĹ"£hiûf¦ bªñV ZŒ¨;/mGj9õüFQ/æß I,çÓ9xpߦÁðýÈQ]RÕ¶éø€tž“D͵í — ±»|™´ˆB
-‹Ô,mýzSžáåXÔÍx£àmõ D·…7Ð-¾(㇠μKfYSq
-Ç°ÜOÀãOøEÊäÛPØ'&ôA“~9ÊÚE–œˆÿ…Ò»ÛmDZaÓÅÀLZø¤SN/æs‹èÜu߈7‹bà
-q öxŽ1ü>:à,ä˜ð}ÚÄj° NÓ¯ ûq¢º|}‰â¡YvSÃlcûGs‚›!½ž¿&áŽí4ªðHz(e­í öŒÒµ±Éed´LM›Û»¦/ьഄ±¥µªYh'n?ðߟYô×4ÅL¨žÉ¦æA˜3ÕtØ­×aˆAlèvŸ;jì‰iµ¼‡MÏØG)_ GŒ‘ePèÊO  éêßkÁ?…á ’Fö´/ˆbE,(HÞÊce ÂäŸ*_ŒDNkËÃ9…\ÁY¥4êù6…â
-ÿšJ&¹,‡iH þ„¥T3f‘òðn$5¹¡C€X‚‚-];ˆjM¿üK9Þ ­Æ†¬s¬V0 W¤@ØÛÖú
-HQpÛ\K©÷¤ht‚PNäFSãþÔ ”»¬v`›’!㦡܇Ì5¥Eª ‡uß+Z?`Q”<åk#DÒ!WJÄ¡âK{Ë!²ÎÎÀ ¢ O(‰Y<I•XkÚ#5}‚~?€Þéë]@FÚÙ«Õä¶ÅËlT\!ö™öùãà&[Qª_: xÎRÞcLo!¹xy€ ÝØ¡]½œ…!n½¥s„0(o8Ä´omŠõ
-KB+Gz[ÃÇ]%æ Ôùæ±(LI‰óÒ6F¸ H
-¤®Å]¯‚nu)ÊŒ`€˜¦¾©`K^áyÒShƒ‘.if#ÔÆ£,/îä—-/”e™\z°0'C”˜fÌ7[ß.úEl†õ×uf¢ÀÙv+²„¬uÔg‰=㋼1¢ñÚºÎ46ýÒEM¾’šk¶½l6õKß²¸YS;oF,@…±/<*<“Pvl-2|ôSKœL~îQLòÙÜ Â{
-b낾aéÕ‰5Ä7Ö)Ë85üúÔ¢þ¡b—vLÔ‚1oÉn «"R¥AôÑÌ4¥E¸i„½Òïήv¬¸=Š¸â$gIº8‹×á fØ…º(‰Õ†¬;Û`­du»ÜHµ‘@ùaKdù_»à4*¥r‹D¶¡36éH Ηñ/& ø1D1©WaBxq
-®c$Q.» ¿‘n'¶ú Âe1mü‰\ŸÚ@Ê^|˜ÝÅ]Ø«°mUÝõKÈå&Qá%šDE.Ë4F³ XAìÒûú”¦‚ÓQÜe(­Aì]±ÕÄò36p™?ÇRvŠHgó×Çt«±è…ñI5ŧs¼†ÞK‡ÌóXÓ†&4E?,²ù ´CÍ~¶) vƒ­+ÝÂxlb‹‰&Ì–ÒÌN°ëÒDŠêòAð3Y$඾tîЧ˜VG
-À—Xà ¥Õür¾ŠF(à´ˆ´.aTtƒ”ŠB",oŒ³ckj},ðf#ÇÞõáâ¼·sŸ Zø¶zù±O±¹Œ#¶Öŧs˜z58KæmØL„@=7EtpQn<µY£|¨ƒ÷1KeMè¨r %­ûÜ—áf2ɹÕé?)…È‹Yý5=m~Ç«$ì:$Y§
-V
-â”1ÙÔ8µOºBA1xr3p%"mص´>åyI KgÆmÉMªíåeŽè ÁÄqäèĸ šÀ#qôŒn^–“_eíÁšx@á%º,ëÊH1 k[ç *²ðan:.9H‡ŠãL ° z^5áúÔ⯭+ÕÁ#ö*'Òk2ê–BD_M.ÝOÄÚ"¿¨Ñ²`sl¢ßÝ]勹a ü²†=BAÔ>ÍlA±~ôçøê©(¥ÄSúRköPðaÈÂùƼÑJ$Ù]û‰÷éø£JS'„!©\î¬W‰3rAGJ^ŸªøVÞª¬ˆÖ4‰´Q‡Ü|ô2û+:1â-‘ÓJ|@¼$Ü_¶» A¡€@Ÿ F?i$]œÞŸí%©8Md³!¥R¤ÃŽîV¯D'Äd§øá‡p..Æ«ÈÄ]´„—¯dIX xžf“Ó‰cLãü_ý|Øè°˜ìy¬Ò݇sDŠþ)vc¼kW¶jLöÛ)a¥ÿõ%D†ËP^ëÀF‡ ®aQQrtxÕŽ@I²BéUÄ—q(å¸>µƒ´` â¨ñÞØ[ØØv,é»Ax‚²d;¤hOO³ÊÅ‘¢6v˜I5P«NŽ ƒ¥Çk¿Ž‡¡ìÞEÖKÒB$ÃæáýÅm%ˆá¡›tmC ЉàýâQ&„}è\ÀfîƈɌŒ9•AS¯ÂD HAö<›x„ÖÕ#¨¿„kíPr)›hÇ$¼QV"ƒMl©¸©^”ÝR©N±© ×{‚pUãÐק6ÐÝùsD›Q,Wäã®°b_š©@‹{S
-ô«ô½qÐ%M ϵCÜüZ3ãuÉèQl™ô
-ËÓÓ}fdd’ ¡BGr+«K‚u”Šl œ q§Œ1 €q(úC ÔdÔøToçÈ^zÏ´Ò˜e¡®ªDQz5HÅ`ÀË
-ª$Ì¿Û”¾èØ6lŸ'š9_~
-Ò猘lÜòÑè%ZNÁ„ÙG@Ì/òF$ÑOCghôX6Õ›ÙÆñ
-Ã.-¦bº‚a™§ 8õò}|šÿ’—Έ‰´®­pzÃP'b'ÏSl´S¶›
-ïŠÈЙÔÎÅBê…k«é\âäÔ©hoøí6·¡¹=ê0z{iN¼Õ÷´ÿ½NÓXVs=Ž=ÕâÜ:.„Ö dHÜ ô±: “¥\³“pJ‰˜ÿÚ&H³ MöxÍôù“;M"nDPÎ åÊË%Ë͇Á+è=ÜøèE‰§‡ÙEO“ýOûƒD¹S¶œS=º·þÀzÀ¢jnXÃüI±÷}ô ˆ­FÂògóõ˜@˜ÊVë(¿Ÿy"‚¶ƒxO~÷tY…c˜òNÃ`pr(g*Z2müß&G~¸qh„²¨Ë·©|¥°æRó ¿cà ÁÙiÛQ»Ç¨ ÊaÈšJÛ‰cô‘h˜±•B¨“ÛŒ­ºœB
-n—’õ6Ø„ðe{TÊ2 ê¢@lýhÄ&‘òù <卵ƒÆäç3 ÚÅ7·Y6/í‹+¹_ OÒ#šÚn Íô!XÚÏiÆì=sˆ.Ã%‘˜üŸâV,›0o¦Ÿ#Pô! ÛÆÎe<³%›ïeàêJHÞÆ£Œ$—Ñæ(WHß]Žt"+&êÀU[ÃvS}Åüºb(9©¾µÍ?Ú×™K1»Æy]N¢ï¯+¨Žs^ÔÁ/pÒÎ Û„7Lh3ÇNÖ—Z Œög~#cëžÃBчb~ÄVˆÿäª\Ê>­“¼se&7[Ñ-Éòǹø‹R
-Þ’‡âP¼šÉŽÿ<E²Î\
--;c+F¾,§Ðûq0rdÁ“Ubc‡‘r¼:7!–Ѷ¹¦Ÿ4°ð³¯]ÉMSWØ)3ÐZ4U¦&´š¯MŠ]µ­´)Õ É%xz\Š”¡0ÄeÓ3ì”ÁôE™#ûbcXGpò½?´þFžXÆdŸ Uƒ"ã-ÜŸg£7D‚ÍÈadÐÁAù¹x $Ä%¤ÞBp“•9qÎ^zOKŠ
- JàJôÔè)5Ë@Uû¼€~(£â\³Q‰A—dÑ–&n­J‘®ã8Ä(¤¥ÑwL†<Ç9³ÒË•¸vöo¬œVp2’D4Àaу9êRžx(·ÝÊù9rL+ÀLg|Z§ï+èÙã4^PI¼ý sà¸T?¥B×0H§Ç“¤ÄJÄ—N™÷~¸M^sãÖ÷ò%°îH>&‚Ö#3´‡¢ÇTgÑo+×¾ƒpûé° ÷‰§¯´ Hn%áþ®LË+ëÐÛvß
-BÞ+Ìt{ËJE8ÊŒ[ñX®˜PG¿R|Cò“¤(ä0n>œf%`4Kã(<™¥`#l‰T9“8A ²«Àß4ðïZúc‡ìʽ*.ɱZ´V'¾e<O²%·ÒÄ¡¤ü{Œ
-–pòü¤ÔG¤+ÊÑ{š™Èã¸\'çfä}Æiˆ{¼àÈö¬çŸn[­‡äÔÜy­fH}¯Å} ¿­~¤àß©üG6¦ôNyPÝlù¢D¿D9•|¹Â? öh¥y‹Q9¨íd‡¹Ðß݈ ¨j@äøªQdZu;ê ‡G{’ž_@!6Ê÷’â éCØ}ÿnRI)1ãù}^ ‡@Ø.Iþ¿”—I’9EOÐwÐ ÂH‚ãZÛº…¶Y÷ßöû$èR„ÓeY*“¬2Á ãM~Z'(*H…ÊÖr6E[-("#C8å¶-•%É­j¸ÑF”0RÎê˜_œ‰
-•Í)ù"U#’„õ
-
-<ÏÁÆ­?”ðhÊúþ´wºqHå­j]ëp;°À3÷rH‡ëÖ¡…NPïÍ9,Í$Ê*Ƶëõ°=\¹÷¼§S¬ŠlŒ†TçD&Å'áÖ|+Û7Ñ€™&ª5ç}”<©Ó[Ñ?EZó×±æ>¿¢¨m&C®¶³<¹”,FÈ0GºìÝéD±²¸‰Ðuá\3ÿਾNÕ£š\ :A^àíÕžóŒ*¹jÖ«J¼X ÙGÌýiÉP¨ ªçgG:O
-
- å:νèO{ýúŽÿ©µ3¬
-ïiö ¤¨[è&•iק¢Ù3†Zžò¢+b()î¶r¿ÑÈFðbU úIa$îÞ# @ᛲݯµËÈ¢Ã\]‰D0`ÙV̦D:.Šø¢4âúQ\–ædÕ%s#ž_¿ÈìT4K¤µ)ËióAÂf a‘»STÉ3…šµ´¤çVDÚc]‚
-InÒ¤µçuè4žwðª}Òª
-Í2FÖÇ*a@"º ºÍ'&°Z$ß×ÑíÅ>õ¶~¹¸qšÁPç#e°˜X˜[=+g~qsƒÝ’JæNE¥•’{?¯S˜™dh­öd t1u/á:)HõÜKð„­ô„ë."ŠÞ„ñë¡(eåÁÚò×½Fe.ÅÎ=RTíêÌsb¶
-ÓPoÏE´`2èìëéÔÑ4FÔU4" 5À¬§…‹×
-è—Æ\ Y%¾QêÈO1”7=­#Ù „:f.? ü…b†‚{>Žûóج~|ùy¡&à–1 ¡üƒXÔýâŒ9Š¡9Ä£ÊêùˆxQ93J~­nÎá3ý´r^§¿lM¨_Í‘•qàh½®gn9À}?p0ŒŠ¹Š–Ö½RÁò\x½2äU!Õ¥µf€‘mwJKÞðPò†ÑŸÿ;Ñ—½Éàÿ›[чí¾Qô¡
-gr}¹ÂJHfÒÑÂ~ð
-•x.­­²|“å¿âë`\ J´fIÏ`HÍKrF""Ù»X%<ä/ïç[YÆ›°Ç"æúV-£4i8N*™1^ïá¹”Vcü…u󩂦qýŠtصÑG à Ó[!BX÷+At0À—·Oyr"®Z§{)_È1HÝN¿!Á?! Wø±gv„eô`ÀÕ› ÎÊ“ÇäO y’“á+)}NB_éDNXjí¼¯3]"rÛ§™)Ÿ´
-5Ä6[%,¦“ä·yÆŽí·BÐÈîk
-1D™¸·jœ¿ð@@?KÞÃÖO'oH>]ˆý^óu¬á%˜HÖ,^¼ƒ+Э¸ç¸®³¸Þü²Pã0^‚HñäÊC­\OŒ‰Ö¦ÂwªQqçäôWvÍ•qgBC@ëC7ßJ|+`ÄŸ®Xû´j8„\Øç§ :æÓª—|è%Êêx&œ¸n$FH@7ïyã†8Ü(áQirø‘{ád@9.%ôT`«ã7F?Šxv
-äîA‘–…cØÌÞ‹jò”Q´¶Y=B-pDÑ%Z¨ ^¶˜±Ööx¬ àŽWixøã9v«g€_-Â:OÛIÀO­ê´?'Á…£ã_qW¯] 5iô’è„úb&Ø;møÎM>ÕÒŽò«Ðo0ºõ½B#SN0Ù1—%ú¾Pí
-õôûts/·6žm A·B.¶…ê˯¾:Ú tUžo¸ù»ƒ>Œb(àçÓ0ðí¬#Ð
-Þ»•ü( šNî…n×2•ìǃ º‰†¼b‰ŽÉ"º‘1“[íî¶x·Ló!@ågdÞ4ìî3éŠ!6›¹¯î¢Â“vc•inCšFf‚&‘Vµ¥”®UK§²ê&è¹ º?ç­ÛI™mCç¤T=>3¡×ì*·ˆSm5WÕ?½€õƒÎf0VPV2ìà!S f¤_olç@KÀ8—ªÃPq3×q»_E3Qa *Û£_­Õô©e¸ÀQ
-(cF³š±„·Wiê׎U>Bœ2¼Î©Õ?ý~¦7â„Ä×–rB{{ä?XȤÿ$’ÙJC·K£‡;Äò€U$l6/²`‰ë¶¯ wóËh]ð _€F»‘$Þ¶þ`
-H‰”—ÁŽ\¹ E¿ ÿá­H%RZžÕŒƒ
-çÔK/a>š¬xì¦V\Ýml@Ÿ_þ•0É°E¼¸—–°vk¦ ë6Úñu‚,fV˯^‡ZŒ~œˆæáµ(ï[­Rƒ½2!½Õæôn ¿æMzãÚ"c”;Р᯵c\çÔa¥•ZŠÔ…È÷TQϧûMGïâ£öau&ñôŸ¤:ŒKÄ> ò[!:ï„CX³ vã‘ÑÍ\³°bH‹Ì²¶7ÁŒ½›Nˆ´á¢Buú„DéÕ‚r˜ÅÌ¡Àªî<¸»Æ9åãä*ÖǪ…«
-5l²ÊÕºg8”ªÂ(‡Ôº¬«hŠB=e”ñìœC)»Ó>+š¢:jõ¡e1ÃzÕA@0dA™i<£êÛU<´6H8|%0‚»¡AÕ²HH÷•ÞÞ/.“ƒJ@YöuÕÝý&å F£„Nj<€6U¯þXF]îAvƒmM¤ÐÑuÒçá¶÷˜×télæzê’k—¬JÂ*ÉG:
-…‡#g3?‚ZvGŒpðvŽ2 í^:Ìú¢H?)Ä/í=\÷PÜjí @QŸ3 ;Póæ4š©FöGBÐÚ¯D%DuN’§ AÈ"K§5ÅÍ;)ž-ÈM›5ÛŠ9ÕF„¤¬wõ°ê± c ØhÖuYW¥°ï®}vó¡ xäW0ƒî¤uì*qï§m¹6c#ÉZBHb ¢?¥æÞ׳\ öõ%Š¥*EbÕÆ„v”‹Þ“Ø@ÖËk«‘®EŸƒúä0cú]M{Á1'„ÑØÑ@Ú~]%æâˆ%5õë*†n¼÷Ù?<“ŽôBùŠ•yŽ4¤×çzeYê8³…€=¼céÊòhÇwŸ$ìhb|h׃×}
-õÿˆE‰‡zß²!Í}(òÝ?hCáû´lÁ
-wbü0&öò®¡>½õ)Tbäììê׋5Zš¦j=5. bÜßv‡yý@D©?üýEŽ_^ð’øCÏû$§²Rò#¾ †…qˇŸ_ôøéÐãßGn\†d—„ýøßQ¿powú¥¢Üð$¯å»u¯ Tú3
-¡äÚ€Ü'I„}…QT1½”+Cûqý•¸®ëƒ!ÔæGÏn8#úÓ!„¤Ä ’Aÿø%¯!ƨ©ØQJrD<w“ž–€šEi€1¤x…^’%Bž›[Nµ•ont`/Ù=™L©9 bp^› >nâÁÑ(Åi¸âUxÌãu¯‰)Ë2kò·ÿü’¶;›Ýd«òû)0ï Ö«3Ü“+â[
-Ò<ÑïMµí;SðÓç—ÿ¬ò”–_^¾Õ>
-ûŠáë{J
-‘b°
-Œj\
-~¾ù•‘³ÔN#…ÐÜL“ÌÒÏç °DÀšTðßõ| Ð|wÝ 2Ú…¨øç%ˆîdU¢qH¨ŸúŸÜøó?_~ø/ÿÎ?_ò‹âI5* >¿XŒ…­frúׂbHnö<]o¹„ïçhy}bdÑ¡¬<xàã„œŽ[i™¾Ó@ä*Çl¾Y@c5×Ø i)åR"mF:1jOõ˜•¼UÆØ€>oAÂÓ79½ÿç4fQ²…ê!\Å¡£·œD‚êÔ†­O¯01¸ø6ÒH{\éÁOÔ¨ˆèuÔeðjZÞÈ·7Ì\Ëf²~“Ëâ‡õ-„Wš!“¼½Ÿc‹Á†çE¼åiBÒûU"Ä—L«)¥c«`„O£³]ÓŽObàüSm£æUÄžÓY?NãµÅ¸µK–£÷T"ø0ð5l?_· q#cÌP(‘\ Ñ=9±çêð
-ËD².j)?ž»iî®[ˆåžÓ¨HÇ­«@(
-ÏïgdAfÚ5MßÄdkÐÕ<Hç)¸Etb8Z5Šù6~Ý3ºóù´XJæ9­ Ÿ–¼÷THìNÑ èb3—S·QŸÜ•þŸäóÅ°"À!¼`þ½LA
-Þ2{&$Òˆ¡G2yƒˆÐ‹¸Ö,æ¢:ûŠ`¾ª´K2 G³I›çäBGZåäì,8fO ùtI¿µÖ·-ˆ!:ðfAW[å‚pÚ1R[ ›@[7±®TžÊ„^IFÀQ´, ,YÁÐ,ŠÁÞUs2Az´¦÷x J@]Ÿ¹Nr”–ê¨KN0÷tÄâóa䔣CvŠ“MŒCà>_ŽrŠÙÍÖÌbˆ±ñÀ@Ž?öâæ¸"–EžVŸ Þiä¹Of_E®§%>s·ôãp›ªâÒ¿>ºš{ÈÆø
-ŠF±‚£»;ñ%ÈýS· ½€~|eß׶ßv¢¾˜lò }{ÛÅ™ê般WÐZ@­ V„ƒ ¢dZk‘W2È„B™ ²!( ä‰o›ãQ.ÖŸWô±¶«BÅ(Y‰Šxii)ç¢ex«õ²J´häR°#Ñ43ÊY Bêâ 2
-Èý© ýisðw–ŸúŒÄIÅâ$,Ir: {¯JŽó”H&‚²•P~=?EÚh]¿/Ô–”†vµ´D’äŠ?Îú»m§äI€â¹–8øª…Vâ»|ï"˜Ä >Áqd X¸/0Ç|(M{8”WÄ+±ü4{œ Ïjç0†Sâ›Bq3))%#wúÚ‰ÿÂ0Ò»XÌÞ}o·©¯åÑcB
-bpð_lMÛ±íƒÖb1æ4)˜i'cÕ{bk®"ó¢ÿŒ½ü›Ã‹†1*ZãaQé‘Ñã×h….*ꎢ"¥(ë=’ÙQ””#2 À=Ãu#³ÂŽìO‘{0¸åBäæ:T« ‰Ìüu.9ã íÑô»&NfÆÆZrJ;õǨywAŠŠ÷ÝÐK/‘ꙡ Âþ¤db³Ápe&©V;Þí»ŠB.›9¬ûS°fK¿.ܨUëG04ûSZQ?‡Ù¬£–Xsœ·YO8›Lxc@³Íºæ<3èìél®Q\:Cq æe˜4¬2ñâ°æî9gSó”ìÊD1)Þe˜¡f*º4!§%O
-‚4‡ˆÓ'‹›Á¸SŽ¹S—R\ÂeB(yûlÆpà·Ö
-•¤óB”°9› ¿’“rښƚÁv§XÐÓœ²'Ä(Å6ãy¦CÛ^ç¢ÊQ\(A~Šƒ­¡t¶ž˜ nˆ6_Aƒ*JØä“$˜ìö\»Ç¡Q3À¡(Æ~Qn㘦¼Œg|Á²ü¸Dw‡ã«I”H1x)›MN@~æ°‡
-ÍÄÅN·3XÜ•-‚
-ì+,ÍÁ{c:ÍÈàƉ|e,ëŃ`yzÍt“wÀ*= ‚aŒåIFØ›å@˜Ú˜­rV (Ç׳‹½ÄëÂm›+. +ŠQ!N‰|{(ÂX|-u˜²¢kó€`£ˆ–²æ¶qÌxÈÓ>$ —Š9<e¤AcÎi^ø°“\˜©Åa7òø÷§® Ö4Ii¡<óÒY>&Û¬D'ÛÄØÛ³MTÙJÍXxº€6W‡ýa™wxbš œRFr@§ÀúP­e¾âêºú7¢½_A.éšUÛ:¨ýŽ…Ú/ŸÚ—ª4d ÄÏUöîGÝûÓȇ<>uݹOªÁ ÛdôˆŽb£š¬åÄPfÄW÷U.zØ!Å
-{î­IvØÈÂÕ©Œá´êäå×R6옋Hº+bÌ7>@¾oÁŸÈÔ?†2£'ˆlA»1 ©ÜF®Mà ô(U¹Úd§Pbf´Ë<Ï}Ÿ›
-}
-­0n=£±µ†wè‡wÔD­9 ôjO³ ¤ŽêG|Ã0™jQhÞüôÉs‚>¤: 9`̘0ùÄ
- ¿‹³ Ò+ûYø5ÆPà(mÏËÃUE½jÍâžT¸æÖ IS2[µ –]Ï,×ÅdcÏNê¹’ Ÿc¦ìÊ
-c¤EI‹º]zèg‡¾˜ƒ0¤Ô“ÅI­žZB^9G{:Ä8åÞ¨i}l×ç &Ú ÜÈíìi@\)÷LÅ=eö UtÚ9M„^á“àÃœ½¦rZ©YW¨~S‚á¨cçuL¼Ò*ÊΧz­.d@W]6 Õo* xæBX];G‘—ÏcšÅrQ¤Ñ“@¬©$Áˆk¬‡YB9¹£öÝßÁ+ÈïWGO¸ É+sƒmç>Ð÷òãs†— üö×·€âb…á·
-áiI8lÑVï¨7åÜ@’Y…OÄÀ.A¤E2Jh9~„‰rS6·Ž†ÖcŸ,qañtLÊ1/Pì¬6²Ìèõ%,p÷å0¢‚ðÌ…œ‹ÅqhŒL:4Õƒ™áß:‘bö@6¯È^3ñùèLº<H#S:aWfh1ÏÈYØnµÉ}±áÕ^…‰èòƒϸe)bë!öc TBYgª
-Y¯cˆ‘µ)báVÄxZæÑþ6Ü¢:ÓÿzzÖèý)(!²é·ƒÍGç1–%R
-’MZÀÄ«Å· ‚ñÒÖ>Ý®k¨
-Áì £ùu8Î×& ñÔ½¯‚Lf,"Áe´ÊC÷¾
-:]w«ùWA§Ü®û*èÒ–×7½Ûâü¯šôÿêÔBÊ"Ù\ä1kÃÎ㥌Žå÷CÆfÁˆ’=+L侧#D¢\B6ŒR¨/IÏ°Cz,LO…ëlòA ´C‚®”ß)VJ×û:G¸Bóe…ІQX‚¨0ÔyÈ'!ó*¬:ÂðO]Râ|N‹Ôë¸|…¶ᘅE¨¦ÁÍc=<#
-Šbã.Á¶ʤ!Š$[÷l(
-b<œ÷ûD§™°ÂMT©­¼/¥¹ˆºì%€à+ò×ñXÈRJ^
-é2NèHöi!å uN¨èÑw«B]m]ÅƪTBH"­^%&ÒØx[Ä~eû)
-¦›qC[ ‘·\É è²S½14Û$ãã—X[PCÓWÞ%ŽðÌGãýÝXð¦@
-þ—¥iè7F=
-[H–ùo˜13¤Lê’µÝÍDN¾T ÈjÅ<ÄC*]³€ëòa ý¦Kt/&hBi?p
-'$–v¡ßÌ€´ÅÖ›aÎ õIñ‚za©„¢A˜þË9&¢¥±ÍìGÐ˃ ׈Š
-æï’ê@#ÓŸ'cäá8ÂóA²‚f¼,yÓÉœ2èÉ‘j)Ô~¤Ç*£’@/fý¸Wo0<HÒâçHI}ÀMé¡¡!~•t†à¸¥ÇsºŒ+Z‡Ï<DŠbÜÆI!‰âê}HE2-)åæSÊ7tgׇ}¸(M*<˜ 4<
-;Ídî–
-Zq À\"Ñ*}é+¤€3A¾s™º»“P‹`rV5ד#QˆIƒw@}øU•¡ÚLDÃC¿ƒ²a©ÒǾêDµ”Òáèa?Å:¤7]ÄÄ1UÒg…ä„毂| 4¿Ö¾ÑÍ‹ôeÙš¿Šß#)(bí§üçYÖ²½Úš¥1méycƒèyÀ&?UA{Lß­>h4•¿š­_®´.ôÃ{0b
-A¹#ì½EZöª~ÒÓBM۞Š_Y87 €€dé-É'°dþáíTN!gxºýùts[‡˜©S“TKë>£Z
-ŒêÙàðvkšÏzrR LCŒ¤ˆál¶æ¤’tµ?s åÂN¢N4Ž¸L½p³o™)
-º«ÌïuùÄ/œ”%iMŽâ“5 ŽTt^š†³>¸U¾%t ‘o’J€§:>Çx Á-$Þ!èõôÙÍðó®N!B¦4;uéÊìîâˆá(V¯짋°©«…µWez))Zv5œM!m…Ð=µš³ãˉ@Ä–‰tñÍjì"O`W'
-pŒ§¹½¤¼±m „¾•êç@=ØÎ";åy‘)—-0DçüM‹«¯çLrÀÃõ"å!<xªd>Ä ?ÄržÌÜMÞXG}K&otÀCÅš5FÝãLø²Îé¼»‹õÌv§Z—ÂÖòCuC:¨^tʱâUãA”"š¬lèÐN@w£fÏ*ŸVu´ŒóuiÅz“‰¾×]è¡krDVÇæÜ
-)àY›ZÔá`XÑ Àrz÷ªYh…ÒëF0Éâ¡ i|žÂbý;‚‘Ÿ1¢â¬~°5æC`ƧSP­ð\ Íaâý—ñ2GŽäX‚è pÈ`¹/" *Tž`Œ òþ|^Ù3]eÖ_€ñc•™±x<GÖ+?“EÌ"²ämÚ“ÊdH†5:}i±÷ ¸²w,£vâQïGH
-ˆœ€èf7^#þä“O›]Ü-,&—aÜîÔgÀ—½ ¢¢‹ð€ÓЂŽ<f ËŠð]˜OÇ8‘t3²¨¯îô’Ì©QÃNŠIt`·á…`bã¤oàã\HaÔiZC¼,Ü°eézA˜ËSŽH\¹ìâ•üMU²¾;xXMÓö îE¥_ÿ›tžO(Iu ’<j=5rfWÆéÑD4“eG2Ëve1n]ZÈf*&6]L=ù0#½šøQ´™ñ¶£†tzÑÖíÄ[1S–@bG
-p‹ÍÆ|£™ô¡-;Q˜Ö_³£jÓô'üÞd!tÖÂ0';B<ÙÖâɘ͹P€‡£iÈOŠnèBGKDƒýs¥'5!BÎNз Jwñ{ºˆóÊoAAUt©µû°ðr¹2‰E½kWNxAt›åg–<F¯Ãr¨ âd!ü§ÀŸ™n
-ú²90Í$Œµw÷ùº*ðßíuÀÄ!pKs˜àP´·èõý*xú¢wGŒ9Š¢jv♤xÒ¸öNqCN¼ú¹°¶|4ÆÈo/ 
-wTÖ^‚*ØRQ©ùû
-¡V)`¶/¢ ‹¦"]ˆ‚ÖQ-¤#VÜ®{n"Ü”2öÀ=$vcqmùâ3úK )äÙ¡V„
-BŸ u
-8ïŸéý!Rê]j¸èC2“…PÇ0µEÀ7„B^
-±£N÷¾sjï6§öó_ujc/;—‰¸@ö§Ü„< ÕïÙCÄ¥Ÿµã<v÷à`Ù¹5&'èË ªëmìó.›ôåw
-ú~åN_ëêá^*»¢6G]~n‚¨ š‰Ù«(
-êµn †`cIhÎ;„%ÁÎkÈŸ]:“Ékš©sDíñxˆèŠö
-%«Ã¾ÂÐÒ1œV z ºÂVj€'3™zE1.Ò¦C⊶Bh -VÖ(pÊ®]Ð@0Ù…* Ár¬°
-JÃzðOs% ¬Œþ³-:8H@_hðtÛGÓ³"ÔОì…ÈÒZÙ‘¼Z©2õÕ·±‘.Å•ä„ìþÃŒ©]Þî¾Cû‘Œ"Ód·¡ié~¦#$AAˆZ£˜9Ú«@2dD0`­ž@2Ʈϻ†È¶ ¬ë3¤3K÷H‡y¨,Ü/“rò§Ùý´ñÕÜWà²_C¾ýî^Ò´rxkzi?|$ãiµ¤gHÁ,!ÄÑeFbå*Å‚¡EnÔzuçòÃ]ÄV-†Ñ?Æ0ÐÛ6àŸt$Ô·±—JžBì$ü4Bt÷~hžª}†‰"ñŠf·9ÉJ„S7Ї–¨tU¨°_ÎÒ-V6½Ì
-fà69¨ŽyoB˜®€nuY¸Ç(œƒ$¹ë6 M¹M€êùjÜ4t§4è¡i¨ø—Új\L%è¹"ŠgÝíG1ÉŒ }›¶Õâ+ü¼¾“8ííeÅAè%K”éµR!ñ¡àj«åobÔržµ1 û¨¡ò£¢¶ÑåÙSýp6uõyÐ_°ÀóÖtÊ‹¥(„õ¹Bp
-RYêm»£@gÈ'Æ"æÇÐõü–ûÙB7¸VØwŠ­•¬®U†+ÂP‰;òM¢gŽRç>êt¡.£Å@#®æ3Ø
-Ú0qf“
-§„À2“!>Džõl›ƒ'"$¤msŽ†!=)º!'—û¹Žbth`}V'èÛ‚˜ÕFã.*Ŧñ?v:¿]ZÂ`Jº‘IJ“s¢¯Ø‰¬;6<)ã:V†¤f ­¶èm’¡#”‹>¦¿÷ØÑjY}{-çS„T!èx´õ¼ûŒ¶¾&sìÞ:@ⶭ6t•Ã•ìÞJZžì÷ƒáö€“c0™î(\sHxÙi\¥´â†œPuÁø˜à"Xá0û„OãÕÎŒÚê+„B—Þ\·G‹@M¼¬Ü¸FqGr¦^vÝ'! T€øY= K™ŠãA@FØAG;"Ú2JþWèMŠ•ÛK®WpGbE²“æw¶¸XÀK cÊ„ ô,5Ô1L-´× ¡PM”Õ Ó½ Ê!܆G{÷ns±z×W9–ñš‹õ¼¦øb`¯•:…ØQ§‚{ß9µw›Sûù¯:µ±—ËÄp7vx¡ä­Ü„< ÕïÙc%“düŽçqmö²È ©8A_nÐÉã~¹Ç‚¾_¹Ó׺º¼›ÍN›áäg'›lˆ(
-ݘùc;7•Üeˆ`П`r‰®bÌ ¿ Ûn|È
-‘Ué¬óxì¾sȯ·#ˆ Û.:ñ¿ƒä*Mº¿Ã„ !††ÆB  Ø«ü†B2…<rkýâóÍ‹©ºÛY³™Žœë:MÃʨåÐ_â´ÚáôeAU7ˆó3
-5•r)„Z’çåç]@<`%› <"ø×(˜i…
-l/~3{¾ùNe/rhµ?ŽªrŠü_ñàÂÝhâ1ÛîdP`•½®£Y›Ak–0E~‰Çõ”ÑaV›æ.Jïò$éÝkwª€0×(o„ü|º3Ὢ|˜C˜k¤—ƒ0‹”+ˆgÄ`_îq§ ïWæôPIæSùW£Ëó) ¢“¡Þ¢wkœ3 (` ùfw‚)€bTmóªZ'H…^F,y…D(,§…g¤ ÷ö¹ªV>@V!úˆè+"ÀgR’ÿ/“äJn$ˆž@w¨Ð0ëêeÝB[Öý·ýˆø$3‘Mm&5éD1ø€‚oK‰÷/<fC*F‚DŃ0k|+õÜ6DæQËÊ£»kœ¬I³Ã<€Þ ùN†M¦}¬)'Qp
-›öÇÐtDU¢TŸžNÉ3”ÈZåÝ{ÅZ:/%(¯§/cÝð–6 ¼J{X Ÿß`LÜ`?Û áÞyCÌ¢ëSC/wC3V s%}:‡’„¨à°sp_¡a!ÁIÊü`¤æ‚hèiiï/1uøw¨”¿´vb‡xÓÇ>…j’Ê0€ çŠÞ«'
-wÕís
-ç)N½žµî¿4ó÷–Öð¦É™ÅÉÖ¬ %r[J¦¬áM{ÏE]¬
-€a–Gnçs³C£ÅÍ×ÕM¡ÁâÞ:Ýß^Ýô s²CñMzÓÛ£å¾N”q
-ãÌ_dzŽoTG&!ùnÝ#¾Až‹çUÒŠh0&o«âÝÇ·ˆ5À‹ÀjõÉMÓuD%ˆºg<ŸÍ13Ęڙ¾Âjy’8¹ß¾›iF°–(å¨Î•W3Í(³ý”CÐÏfHìr©Ý}2Ó7ЩçéA¬ÙY¤êÇ ¯ øþƒ%].ù×ÿþáéãM¹tŒF‚1N#S-­³0,2õ`Ñr=€DÞ-Å'Ý¢ 0!T'ñr–’—á¶üvõ^ Ť2É\Ý(‘*Äžû‹§Øó7pL7¸Ò¿©´qC]¤n2³›X;ô 6</?€¤x‰¨Á`Õ²Bɺ4#%Ý .Ü_@ïAÃØ)Ï´_@ BXoV;Gp´
-ëIPáêê¤]‘pøáC‰uB@øÀú§ð*:˜‡Ÿô õV&°²Ð U›O3øí(K¿Âú©Ká³ÇŒ{„.{ö×@Q¦9ã_<*[DJ´ÖçŒ!, évamC]Ä H‘mÚÓäÔ³’ç««s92¢Ÿsý;Ȩ à8„cFZï'Ãà7hõCFÚý(ú·lçs:£9XRd&$)v4íîL¢Ã³‰aìá2“9ÖÕŽ‚bôPƒ1l áLv)C ÅΩu‰¬nn±¢(*]y€TJ®Å âDÿÔ ¤ ÔTf*º/SI+²%Û6" —I«BH¥x”"Ú³žbQtq~l¬±0^14$4¾€0á¤píþR3ÉGY ³a.'‚úúó
-øJÜ¡¬‘¼>´{V)­‡7mE¸bÖãq#ü :>‚E¨S9’Yh'ˆ}©°ïȲLíÓ9Òà2%1&&·ë2ÓÌ5„5Î>á@b—ô±ç‚HFj¡Êî>åÄ#àêÖ”bCqœt°@ï k7oÓΫH#©II§-é®C&²ZV›Ô”+p‚eú^I³#T=Ü#YøF$mÆLEïö)zB}Ñ;œýñ鸑ѹ_ÕÖ¼8%Á³ÅAL0·Çäõ4Zs‚Ë“ƒEq'°*÷8°Y™IŽá+ùWž iOüü¢”•Ì‡@˜²†0²Ýf­'64jAþÝ›‡gF¾!ËqJB BEFµ°sFÏ4ŠVàBÆ¢QQ<>ÿr¶¸`kAcƒ‰ïÂn°üÏ(9 ÇÐ ’ìßšëÏXbö[·I”Õ4Y*Qü6] Ú”1ÉrÏ~Ÿè‹Æ¾ÿDˆ—QÕŒå¢lÈy¾bæ$²£n½î4‘ˆ ÷™§Ä¼î ÅÖÂUŸgÏ ŒegО&~Q„ÀË¿>CVWÛÄàöšÛëë9 ½žLt˜æž®ÑBzAZã†u¨û÷?'Ð=ćÇÓÇsO k&Ø_ë0ömŒo0_oÄHÃîJ_‘þìÆ6u†¨µ=AJt$X…8”ö%…óÒ ÙfÞ‚oÚfšJA‹œHyØfÆÊ'<ÄÏQ9ÞœHæ"0Á÷E?%)RÿÒ÷cø)V±4x£[µíè° cýŸcOìÄ%2Î
-O²–Q~KBˆÍUE‘I¬Ì´ ª„š“íâXx¤ÝÈÕTYV˜-Òk`?ß|A ôœt‡àr8{Û†@䆿÷Ä>%ÓMN@|ωRÏÀ;›AèS ¡¶¼:†;› ‹¹w´ÝH"mÄ)Ãfk7n .˜¥*EÇ(1óßRz3‹9!¼Ú±vÛêÊA–X:wÎœÜP îÑ=w}ØÓ»:“dŸO äÔ’TÓÕA
-l(ÇÂÀ‘„Ùloƒ¡Þ¨¢KùƯÓt•E
-©¢ècÛ„Ã
-+|]6ìG ‹Çñ5TúÝ»Ÿ¢æ ¢Àf ÛBÖ‡x(Ãtæñ[+NzpkéýœÛ`\ éiÀxTZã]›ê2¨"²¡ouŠ^~W"ñˆ5´H“e&õO}¿Zæ”"·¬ 9¡g+Ý¥õ7/ÇxjéNÖìÏtjýísÐûOîô!›»\™Œ#†ùÀ 7Ï­|#ŸéD£E4ˆ\S‘VaCÈKò
-QZœºÏ!çЊÌ,Y¡ŽyJñ0ˆjp€Ñ‘kœnŸv
-¯dj( boö ”‰)ê ÈÁ®·.B‚!aÌèÝê_cô{8´22dõ1L¨ÑNâ7$I•:¼?-N 6ƒb°®£{ydEˆHøkWÄóMY1"Æ>'ˆ±œ/R“8ó{&<•Hám–+Çק® Âi|¼û§¤ê¼ªTÓÖža<ï¶O)RNH(x?GTôIH®þ©HåÈ-i3µfÙ¯¨O^œ1
-ÙKQŸ&ðûIþý¡šA—be0±£>í,ãÑ‹ÒÝ0W kUõˆ²
-ò¶‘ïÜ+‹Ê´gÆ5i/Â0ª>RÈL=U^†bYñ¼ò™ïg' ]D !Þa™Î~½v‚*)̾L2uJE"|ýd:Ð-¨(oHe:ÔÊÜ‹Aà+D é­'È;}ýy
-8SÍíXiý°
-¦P»¹ùÉøù'ù9Üi0à¬'Ï(Kom‘3U®ÚzÌ«KÙxUu(_™óºùÙ«_l‰ÜŸC2¶^0ô„Ð #ñTq5ñ1œ¦·
-óV€J®ôbDÕV‡þèÒ¹4BdQ_§S[\£ëBWhH³M¹Æ¹â„Aª¤Ê£·±h
-JÝ`DipËÔ9ûSãöeàb¹ìp5<§AV³Œ—Eã:AÆü©QüàþÊ\‡ÒU(ýX’E6¤cjw<E¹ùV ^THY|ÀuxÙÉ¥ Èù "ÄôÐ]{‰P6n?‡”Žãi#ùê…57µuF%²[µ7•€9{y\½7æ «¸
-Æ­ñ)h“;¯Ls‘Õ5{wq©çÎ¥´{‡à¨G~ávÚ] §kÜÃ:M-ä7^‚‡žÈËp
- ƒ{:D*X†¦Ë·Š™.1i™? ¿ÿ”©bŸëà-` >Kn>1Û¥
-º„ ÄB³ ¼ —¥ƒz™›1¶\úeçTUÃÿT‡dØ5K
-y¸#Î1+|­‹#ÝZÊ^ó3¢ .ZÊžt/åÜ‘®†o¨ µÚxµµe‰D´s{A >
-™CðÈ<;%¿6[èå¢a_¢ŒŒ‡-Ï D~J?È¡ÏÃidÎb}¼Œ
-«–Æ@šŽÄ;Jb>p¦±l,ÕêP¢›„.¦U¨ƒ¢Çáõ tR6¡z ÔHg"¯Dtµ‡cG~Ù¦BÚk0/ …4NE'k0O è¸$žS„ã÷ÍxE«Qó³ ¾Œ”1Ç qÀ&ašt“gi¿8Ñêð1cN—ãÌ%ÌF°ÇÓ!’z!y+çÏØÛŸµaf}–îŠf»xô} "eA­™Æ¹[ò5Ì6cs;™Bp™E3ÃqðB W¥ÕNo`>U¶îÜTÑ&çÛ<gñ
-毊 %c¤~›ƒƒÀð:èÝ!ˆ›Ìú\‡/àf‹ì³%+M oåAÄ•cl«P?Z4ä è©ðo[C RÁ"Ðòen†wÀá |eI·ˆ€Š#èÝ…&Vfã!bÇ1äaëæʵI†u¬H†+/Šzpÿ,Uï,„ó _~®æΖŸ{⺊‹2ж\9"¯«Ã”CÐß¾²ÿ®Ó†‡É÷H¥´1êoòôHN£¸ÖðU}4úråš„’öÛn¢ P O©©k«gÓs(íD`Edü7qõûe¨'ɾ¥¾Í´;P¼¥Cl,õ* tÚîzûÌ™¾>Þƽp3´úSŒäâ°XØÞï${…Ì„c: j’Ì|RÂm˜¤â 0ëyA4?Ì=Õš
-HV¿G+Œm ž²A¥,¿!WÌÖŠpôu@çxÓH»ß@§™!2@vݽ€DÜø{††F™ï­CÃ.%’æ0ž@oþ>‰åÁcÙˆ…^ç¹]œ¹'ôÖåòã„Ü…“Ớ嘾÷àÝ5öx$ˆ1Íu”àÒ¡—4µãß:Ê Y‰
-æ \[AÈ*2Lù¸ž¯C<ê3®õ‰ªá1wŒ«êÄÔª¯][ÅF8ã ÔÕ=t%mg<ä\‡&é½jÁ[ùçwÝ óPYNb¼Z@8M#´çO …îaüødBà0:
-1“)œ\es'kvÎT­®çO86(ì¶Ò€åŽ±JÝñì1Æ
-¸ Ù ôöt®æ¥Û¹Î&5)éX1°<ÄÜì.”4ȈŽ5V xÈY^׋YõI`¡Ú\æh
--œ2!EV‹ [·¸½9N§ÛV ̓‘æ†=”Æ8(j†’š¶-~3“³LO¡áêT6áC-Šª40äÈ}ø¨*ψ
-ô&|à"R¾tO”ÌßFÓiDÆ܃¼§(FßÚ$”Á·Œ6BhBö¢LTBb¸ƒÐ­éðdˆº¸â„A¬ñ#ÈóKc; TN›ðeuš9 Æ ­²öbZ"©l.¯£_F‘ÓíH&4S]šÇã’9×q. '}ûŒ
-˦þôw4ûÛ—p·AB#ÝÂQ1<„~åðôáñ+­¤_~ÅÙþr‹·ñŽL¶Ê
-ÿ¹•Û_¾u¤ìôE±ê2–Ðp˜Jf‡éµh÷¦°™ÕÇ€[h¡«x•Óý£ý•£­ˆ ëü•Åã<ì<ôï@¹N9F :Çíß´3¢¶yºF2Ò#<,ùYP³õÄÔ¥O«Âœ$%`?^Ç‚²÷9‰ÆHÅ!¹tܪP¯ —åà᲋74IeùŸúzبoŸ»÷¯À¶¥äœ=¥v³ á‡ë‹Aô®ö¾]€drƒÞþïûã$pšéÇëã/ô¿××ÿè@_¿üÁáÿôÏ/?ýÛëÿÙÖüýË{ñ›‚ÙG—äyk2Ü4O2‚ÃL^QnƒP‹d&HcFM“€yêbOÂg ‹˟àÒË„t£ã%µl +ªx\œqorûu°,xW%½.ˆž´Ãô§ Á»1¾pÜpHV>š*weFe_oƦÉ“‰l˜´Ï‚84®‹Ig`]f†c;*è{á#ÐóÁ¥CGéPx›ª€Tiì¼MP£ÔK9þËx¹#gr#AøsÚk0ð~Ø”)wO@—¼¿»_Ʋ»ZúC¡Ðˆ“DUYY™q ¡ÄÍñVk À$É
-[Ç·V×b혌!æ üsD$)²É•,ק—œ ‚m‡PY¤ÜOO˜¶ÀYáXÚc¢&žZËOiõÐWC0ب¼V\Þ¡ ê˜,N1Ø ÿ
-“(Á9Ë¿DéËêë¨Ü· ¿Í@“öÇœÓèÖþ ,Ô'úçÐ2VJ¡/Úë.”«D-ñ¸:7 c!tvcÜk<‚Ýœ º¿AˆÆjL¬™}H¦.Å8WáeÁ}cÙfãRÆZ8h"váãr˜
-¨w¼®bú¼
-ò÷²L:–:'[vÜùÓ´Ô ‰ƒ+ Úʤ~ŒhPèjUC{†#À«‚ô†„DÖíG£ùb^÷Š|…X?7Ë=çwËÝÛ\¨ã½êÊÀ{qn4¾—ØüjÕç+3³-ë¯òNö!Ê fvÎû~
-e©’Äa$Å°ãhûÙLø·P•þªQ²wr
-—B\‰#»I)Í9ïûĨVLBqQ1½wÅôÔت:¢\8¸‚½Ø-<X’Õ&Z~9b›g7gŽÞF2{,báu
-ÛF´
-OAâ“xÜZï‰lÕ&£eè·†–ëÒòO¼Þ¦¼SbäcÝÛÓ«Ê»|Ö‘ÐýêTEJ®¢mÝ;ˆ_úøã.ÿz
-0<3Æãûg¤:—ÏÃ5|ü` ¶èS_åM!?Mh$ñ`÷qL9&ÿ˜øž %¼”tc_Âòʆ§Ú/$o°¡¥×ÃlÁ“DtÙ/¿<þ‘¥ˆ¦Œ6#6^y#qûÜK Ë”º|¿`Ö¼cžÄT§èZº£@ßûæ 9
-5Q‚ÀYŒórŒÆ,Mãulš:[± ³ú…–áíÌÍsi ‚"ÄòàÒV§*3SY.å¬_ÎH¾¼ )-z»ñ…õù¡-ûö—>ØÞeµ™Šnt¬—¥Æ&Šø-Ãà#Y‘të€þ~
-
-H‰Œ—Mr9DO ;èó ?\»—} GÌʾÿvŠ,ÙªbÔî…ee‘ @&´I 1•÷j£½ø±ù0—Þßÿ£b/íí˜{è˜&M¢F”ªÒmøâZß¾ ^J½G4› 6ªóG%ΫD]ÍcAT¤˜xµ² Öjt¯}4Ù@ÖU®6¬6­­>CìZ‹ÔâþÍè¥WéÜ7ž^Õ_¥ºŠ1ûì
-µD
-ÕƒcϪ¦ªÐt½®7q± ´Sÿ¸ª.1Ap+ \MÎ_¸ÌkŒy€ŒF­`ˆSäçwˆœœ/“óåÕƒ)ÀyÁý¼ß ]´gE숋®òÃ4{oB
-ãŸàÎ9 I¸8Lêl×ÐŒjréc†^^£¨zšcõ4ü/C:ö,Îó^&¼kÅ”ælaøÛªÔHœ ß@V–.ÙAt„Ýdi…Ò£j|Çé[Òû‹1À0@ªÒ#Bò\þQúgòBN´µâ» íô”W…e©¿êò BøÝ ò·‰‘ÊÓÞ(€}ôa–#È’ê)Š)ß®1S„Ø _‚¬«¸–×’1ë»b\!«Ÿ‹º9çJ#ÆF-•)£;Šå£2RH׉“b96˜ Pïv”ê*Úº¨š)w^ÚŠ¯ žˆóé2á/=A1*¥#´ûª»þˆO@>2¿+U6=ûûÔ™€ÊÄŠ©, é$‘ËY¡syíÍ°DmB”¡œˆ¯9Í7Ì4r0#O ™e’“XãÞ¸9j²hžÂ_¼c)c´­f
-÷`nż<j]u!Ü4ÏÁ¿ÉºêB-´Ç¬.]Ûx€Ü´çKÿÑž` hšÍlØiÙïÐE{€ ´¤›`GÝjO¤¡Å¥àIÔƒöDzgEÒûV{€`ë¸Û„£¶š„ÈŒ0ýåA{
-%ái±¬«r@HÜùþ˜Ë€OuÆ/02ËÒÒ‡+g4µóMÛE=«œü¬i/ÑÔ¦ Ä gÓäÅd§[@<ÍcÖrèBaPÅÜ1Æ^ÙÒ÷0í`±:…í˜nŒfñU̬“Ó²éç–lá€:¶ˆ}lkÂnÓmgænSr{ÎçY{w–·™}u¨?ßv³û€UKecþøûNApDt%¼ÅcLû°P6Ä^Ký¸êÿËÕaæ 4E–ÀÂÙŒÒß ”{¿„Ô·C²a¥¬öSZ %¼ýÔ£ªŒVɾx? _:Y\1ÝuD_š‰f]À9?é‘Qã þßiÖh9rFܳcq/$eA”e¡ˆ¾\“‰¯´ÑÊ‹ªWÐn7ɘáá€iHïwAéXØ0ào§OýÌá „qDDkmLï• NŠÙpZ—ÓA¡ù˜æjAH2Ò<–à œ
-L{ÿ'£B
-K£MÐSEØ)Wà¯(MlÛ€èÒJ®‰Â"1ŒQ4ÈÌ–³v“\5sýÔ4¬@ö*ÃÓªúrdɉ±¯”nOçtœo½v®Aɦ‹ðíXMqOÅÂÜŒ "g“´~h,«‚ùé=ÿÇxÙ#É•ã@øºƒì1*ø ’æ†\¹s‚Žõ$sï¿_’`iªßt;«ž,>Hd&^6¥_7 Ä°ÌðÀtíû„"¾¦»‹‘í«Œ)ÕÉÚ13+y‡w”oîRíÏÓÙáfîm'óA9‰09¯s ‚ø‰ÜïØ­ne¾G>Vù ò±
-é´ÅÆN ÕP¦KwI­Ÿo£­Je©ÚÝ£ Î”ˤ¶sq.캖ø
- +§~¾CžóEMÉà£æó9°K4æiaî$‡ÛÀR,¿„‚ÙÝ«`;¶›d¨ãFâ/##ó„V—|Ôn /½úøÊ|®¨Ô
-)(N_Û,PÃDY;Yì|Œ±æÊð`oÃB}H éÐtR¿ G‹ã.À”õÀ
-ØcËmÊ)lIU±öèÂÑ‘ŒÐJ3üsl ü;ð#«·¡J;Z"1e[ Ø”h´”Š¸KÃœÄ&ÁÒîAy°Ìu§×CÅD¬%WEòN¿;©`‰¹ëæ¹ò°8}Ú`ñ௿Qõÿü÷Û_ÿ[™»æ%c$2\Y5)¨
-\Ø7ó~ Ä ç™êµÍ@ÒDʆ4ά„™é&ºÓ–1ܤü‚ÁƒGÅ6…P ÚùY%¬Ç…éŒâÐ"„¯ch\VÅÚÌÒV0°ÖŒµgAØ”ø‘x² tSQœ4?Š„P/'ô)™Çúôó”Ø•èU³¤ÊO’Á0ðëâ7‚häÚŸÚ÷Iª¹*íwÐ<ôÇÊ‚ðÿF´)& bÝhaA0b[åAó9t¤D»Ì$UêLGâ:'K
-åܬϚþc»ÿ„ös>2¤*ê‹}Ñ´ð¤išPx
-9÷ÜpMHCŽPÌ«s™ÆqÙBvs
-‚oè±b¼?*hÎé¥òðüÒxã{òR?J:¸@ŸoÂ횢à êù›†6‡¢§VGôœ¸7jÞ'Y
-Ç07mõò
-çÊhOfhb™OœÔ¯ ãÄk[Ý'c99¦îÚGªؘ[ÀAݯø‰ŽJqùƒéaÚÆ
-Õ’wâ
-{.ù8/µåŽ˜ŒªHªFöƒ$Làû„ @—\¸G«ÊKj >.4Eß.1£§ÈÇút p“ÏÝCß0ZÑÊYá Y4h3°ÕvâßNÊ«áá(¯á«<= C„^¾ŠAšä×W ÄÇ
-é•5¥–½ßšHÌ¿’±-ø¨ózV/
-'[—Éï4‘³Óz=öÞbȘÏzJ+fòž Þ
-F›Gac!Þ1œä‹€ ÈSÀµØŠCÐiƒ`f[º5üÛ•ø?¾@¹O¬p _£s÷mÛ¼.á1³jx”áÆ4!M)F>YžD{
-ø¼a ›¯×ð˜†ðe;§G È
-hLë»­ïêš¹!9°w"ÏîØ%?ÂhœÓroÏ­á=?Ò¬ ÑŠq§S‡Î_uJŸ—°CüÞîÎi¬²ˆ];¿åGøMúD{‰‡›c—ü¨r¡t5B»vÌõAÎRìγJKÐòÜåÇè ¢ñ%Ð5?^@—üÈ@T­š`©çü˜§òðŠ”ì.>Òr¾“åž­žã#Ú ¹AQ;Ç>5[6¬ÞÅÇÂr§X­)ÞSð[ÃN¹é9>*è@,d Õ½ý]â£4·ËU²s|„€Ú’ÐJkù/ <ÅGˆ‘åôúû×—øç$Ž$E÷¤k||—÷«~¦¤#É&,‡?„–ß „ÂgÍyH;¼…–H/ÐÈêM؈4p ¾$ÚqZv7Ø&ù£ÝˆAzÀãDP Ûù1,ÐLß0sQ5Sdî·†Fq é&.x'.˜C6L,BóÀ•ï2æ£Ù'NÁŠ> ZL|ãBÆÌ­;K+J¢ð!¹psCFu^ãQ±o­9Ý!dhõ€u×|nâÉF•I>ÏþêØô_eqp¸ETD jªË""ô’žÌA?@üKÚÞ”¸rJwç „Ô¾wR p=ð(ºç¬ á¡+ËìèˆM‚Qb{>Š¼œé^©{­xw5 ¤Þ-ºt6–GæÜüS®+þ ]9bò‹СçîÐ`am高Dc:—Q@…¦?{ýúʈÎtm££èìgƒG7pÅKÒ‚ ±ã÷ (•€X£QE‰fBn©XºÍ$JÇBW0œø…M±¤˜Cøo ñµ€æ©g䋨±û
-¨±I%JÓá>mT"v1N«åd
-1çvÁ¿¤.QJ6‚%è&ðÜÞö§ eä:¡!û>sHcÕ˜_žÖ’T¾4žÜ£ØT!û?ûe·ÇqDá'Øw˜’c­úÿ'A.Dd¯DŽ`A@P"­0Z’E;ÑÛç«îž%w¦Ç^9ÎMVËÃîêªS§NÒ— ©QGÈß:*SŽ%ñm)±,É“w·
-¢2K+qŒØªë²etXÙ}ªßŒwç±ú,‹s§!hj,6¤ÁX*iÛ1²ø(±ø17S§2ƒBjçй¬—¸ô‹• óØj&rB游¬¦¡‚ˆ è2iu? ÌsÍ]1š¥Wá“Éf
-¡f a1|j cd~˜
-’72ÀÊÉÁà gÒ¬hØ;”žõµ{ÖÓT^Ëælé‡ÎaGoWç—Ã.àÉp¿8°# ŒïröXÖBÎÂ=Šm¤õÓeÚwÎ:0.gõÚ¥H&,+¢]Šë„ŽzšÌQxÆn?_"©GG«G§ÏžßÞ}qùöîòæúìöãð[ùêåÙ‡÷å“žÝÜl‡Ç›Ëë÷çO†ÏùR_~qùáìÍvüz‡=Þ^~ÿýåõ» úÅõ·w#úä÷åg4í£Óä·Ç~ 4ˆ¶ÝõCÄ°í²¡Gµ¤I¬ì 6=Tk@Y’L•*jvå ¶=,29^•Ì»Uëíj5ŽÝ‹w}Ø®6Ê&!‹Ú'·+æÚie×®9v˜TÛõÑéO4,“>åŒáÚõ…xoãî9#©0Ä+ýÊóvŒ8?åû‡Ýw,û.×ÍOƒ€N'­aihG5´½žÍ ‡=KØßüÂaFÖš–Þ£ÿs\Œì¤íºÖ' íBξ+]³Ø¸ÿ=<ûúæîÕÅÛ›ÛsèX:ô×c׳WgÛ—gw·—ÿâ`zþù‹?4Âÿù»›Û«ú£Úê¿??¿ysqúüE>%èoî>n/NïCm(þ”DZ”ýdþÓ~ª_·¿KC´ì…áñ“áä[>½æOÞýëä7å=„y<a‹"Ö/~õ/ÜÿRŽ«EÒmm:ù8óKÃ_þª†óº¶rPŒ^)>ňL+Qê0VaQc{mªý=ƒ6U~,–ÍÑEÿПMuÿ´=$¢Íêo«oW׫?­Fú”yöÙ5Ål+æ }…ÍUdÉ#ÒÖ™ì½XmÙ]Æ)„»ì#E»²G“˜÷VW׎ Æd [@Ž_pZ€­ úØâÀÓªùlR‰8ÊFDæŠÃ/冈h©Š–ËaÖ1pZ—<ÆýxÕYQ«T¾HX+Ìy~p0$Ê›-åTÕ¥ÌèÍ–Ř¡B ›†%Îâ¹åQ1Y2•KêKÀLmÙ.ÈŸSã±òLrçÊ&& d³˜'•b«?cÉá¥d¿žC†á—‹¢çµ9Dcø½À–y@=e©æÖDK6H|,2¯¹G£]®”âj”M’ÞÊ TÓèa–õ¬HJŠ| H«5_Š't™ŒWÐôºÃ@²UB)—­¬ŒÛŒð—ÝÓã^ Ï€¤ ¨*£Ñ4~$§å›«ÉF)’ ÆÙ*ı@B#«œ
-µh€pt«º]Å£RÙÁ´zL²¢µL[òÃ<ƒ7ÂÔ£azˆvfŠÑíuò±Œ_£ê9EÙQÄXë”C skÀIöÃ=îÖʬÅ0 $ZÆØì´mÆ×'5ÆL[8˜Ê[q{õá*™$î¢A¢Áá¢=èXKq‚oV¬Jè@ÚË=ÎJ€K‡”IŒËÁÂ4ˆ’¼ r¸†
-±€I¾ì^SUi÷ÐG˜ :ºØ @9Iõðx*Ôsx˜oJÞR#wóðh°Y ‡ü<^õ0=¢ÛB?\—q ¨Û|Óëí B·±¦ M‹óG§’‡2©Â‘-Úvµ
-B ‚!ˆ©çE>䦃„™hF¦pÈC#ufÄw í*Å7.rQèÎ9ÐêšÄ‚ÓlØ`•—ÞÄ¢ÒÚ±.:óÜ
-£Œ)‡ƒþÍx¹¤Éqã@ø¾ƒNPßµf©[xÛsÿíüA‚9®J¤»7²ÔŽf’@ "@¹JHÆÝʦ¡êYÌÁnô“!ò+ÄžaŽ žþ2ˆu‰H`a¹*ƒcŒƒ…HÏ`"lÍF[ Y.¶sŽ4
-KUȬSF¹™9ˆ]ŒVÊ}@<7ík§Àøa€”À-sÔœ$Œ‡¡¶‡v"¶ë§C´|*uæîÌÚ2rDCòF0ò$ÝÉÎ A7°ý.×Û£u9µ‰c]_JWjþãéûwÂmò^!Rå=¥?é; ÁrË~Õï
-Ï‚[±\d¯”á+|}ulÆX>4,¶W $ešY¤,¢þ6ÚÓ9Œ0‰$¡‡Ùf }’¥f†^õ‰­†W1o#'ÿœÎ¨³)ÑìzÒ‚°…jÿ"Äyð÷î)ZAÚT
-ñH‘qWQÁ—xA@•÷?Hüäq¬ãm“ÀȆ§A¾ƒ‰÷@„`Ö”¸ª+ñ‚ðX¤1Žù ð`‡¦OÅṡÂ!Ò3€•Žzm_•n´Ë&ïÌ íZ ø8ÚótNÄ·:„&²¹
-„r¢I;Êò©ð"áÈL»Vº#„ï/S+A/%º/H˜³°ô¦'…¿a¼–·]Q‰4O1õr^ ,½•ª+¸„PÉPpÃñPåÊçÜ©å²®{·*zPÄ'?E}1œ9Ö§Ö}‘GgK›Ú“Èß@^}ʺ4«Þ
-reþ;_:ÿë?‚¦6%V£M}¥€8 (8ÉÖzÄi¡ÀáØ×
-¤äOnX&Œ[_ÛuC`ö]Ô¹ iMæG€°¦ðæÂ
-;[oÍŠP&:KÙ¨:G[£8cጧRè/f#25"’0ͬ/e¦B¢:±?35Ë4?u{“d½rÁŒV/åf‘,°+ÃÜ"ë·6ë¾JüņŠõ¹{v1#TTj¥nCŸÑ©>JõšGU vÄƇT%©(—«ºü”Žï1^Æ\æ¶A˜ù:îsxO’FS#£Š[ãˆ}é½U÷cný¾_æÆïM7þÝkscñ½ÂÑß:õ÷OFFÓÎt‘æÛ)=iÎyÿuAØ3šÇª„{!ZFâ œÄ#Š¬»±"9mH¡
-›ÍñUt$•µ
-;SÌ
-Æ1$RQ®vvŽ«¥-2M#ÌÍx|ž0-Iá-èË@Êå´6g{WªD÷®œòþòÝÖ¢7ÚÓÓkePê$ñrLî#;Áõt¢>y‚}HÆrDÞ6Y•‰÷L6™}ª: ½S^*/^0FG›[_Á¹ÒEy‚Iòªı øe3ª|€ÌñSÛP$ÌKÿ¬¡èt ò„^u ¦€„©|(ŸQ§„S.„Šv&þÒÈj¨ú§Ì}¹êÿ”’’²Ý˜©f7›Õ ‚+ƒÛµy9L«]IÔ¤«J• ]9Äj'L!#ì°/ ಊ \jìcŠ¬6Õùl§ëG>Pˆ#„öωš5–ZæÒSÝZ¡U\òÌUe~{R§ýªØVõrAFΧ:µ€ûèÊYd^΄ÖþË–ò¼¶‘œ‡ÍçÇè‘VØùÔC:ãù1Ãï›N\O»$ò\N0âr$¬|ŒlšSøû°e1¢Í&L<®år™ì?~jL³ä^An`1¥ï¿<‘¼çÁÛlz±’ja¯˜£¤úéœÒ«†ŽW¥ÓvŸÆÊ’º1”d8µ¥ä­šö)J))MW£Ð"c¬sæR"?Rƒm\pòFUD3ÈrÂÞÛ8SpÊ‚õB‘ßù™YRL Äý¯œAGÏ·¤OÒÍz¤Ò^­ØÏuÖÆU í.ŸòƒÇðšk6‹”—üÁL²i®Ò²ÄiŸƒb=ðÁó¾óÎßËbCç\ŽÄŸ.±%>NìËb¡­h0ªrÆè
-ƒe‡ÃsU¢˜ôþ¹OÐ×Oî´ÒÁŠù¡¾ÈmŒê@ÅÏJJk¡I&ï„
-{o¢¿èóÙm{- Å•t‹B§ À(3“жÜ0(‹'îÐõ¶«Í«¸ëÚÅbw@_VšŠâ?¶æ€„@/ n2¿’Ф:Ò~U}鑈/Ñ:Yìc¼~í‘T–!ÓÈl¡¦3áÔ˜þä¼ÏAëè(üÞ€Á1H³¸6“O
- p=­¸¿ÊSì¤Côõ
-~®"3ÂÈ©:oý„WÈWï›ZÅxlÛ ¶&2)úBîHÅ{ùçŽdŸâ”"Ê£þ¡’¸jœGঠCmîtK(Þ"%*s0ó€Kù‹” ¢e réYë*íGñfè. Ž5PdKð,ðDE=ÎÖh_«%É$Kµ¬²î]ì´‹¯5œÛÎÁûÑÌš`óx€Ô';Í°Mê¯IQë †}¤€dÁ˜ðØ8M”CÄY]ì[”®*|ŸˆJÿáMá¹Án ‘&#’Ž°kÏC>’â¹Í'æÍ`¿~âÂv²./IeOk.w/Ô "\Š£[4u@Úw %uÏ›HoŒ{ÈÙ Ôj‹ f­˜¨{miC4(]ÃÐÍn¢$0¤…¥}ŽÊõàG¶s–¬àÞlM+Ÿå—´•Ï׺ôô²>•iÊ`÷ÜžÎùãå’#IŽÄÐôêý?ëœe¥êþÛyt™b:ÜM“ 4È,¦$7£‘4ÚÕ3 RxŸs{M†-‘ ¤‰xú*@„ð m3W¿:@p DÕcØä/h±*}@D̾dÆûxßt1öY±=-+~¼e\‚‘þéûM@x/5Àçx—ï³6c ::Åíœ[…H¨ßä<ÜNÝ FŠ[ÇŸç<xó|̓ÞW=xü¬Ž3 JlS V]Î÷ÝT}½‡}ãð:ç)(«]ìÈ.•>mµwUQb/ t»íŽùóƒ™h Z]®E^J69ˆ>‘6’øà¿ÐóMy•[: º»éoﺟ>wÖ?L’³#üÄíkV@š4eð{5ƒl‘Ðdd]õ
-¡)'ârð~ÝOA¢à×d_TDbÆÿÒ)•8 {*Â.R®Máà»@H^“²žü[Û*/VªîÓÏ@Ôe™þûi‚u–u®g¬·çS*aM]¾Î²ÕOç°ô1¾‰™Ï§×0”º‹Ø}ÌZá…jð脶t¿:@ŠY9Ã.àg*qÏTâ€n©äñ–§ï>¾ÉóïGmž9àQágšxtÊK%Ž{çÜxã½æÆ?ÿ«n<öªó˜†{*ùnª¾ÞÃ×Êà"Â’—8þnî |8CèÅýö@®nܯssÉwoºtƒ½T`) LLrÎúk `€}+¸Þ×Æ?Q½ÌãK«H¯ÄÆ÷a ó‚$ÎÀ¸/ûÜtŒ4‰fua³XÑQ…EtA2:é+o„¥tóºì2(0\—їþ©y^¶ñ
-¨‚ò”·ÒÄ€JTñà*Þ%TƒÖ-¶Ò0Ó„£.TÊdª÷{;óO4+A—ý㼆¨C ™dŠúS3ÊßϨr!ô|OB-ýàa>À… ¨#ÑìíYœ Àñ¢A³o• †·4~»ò‡å
-Ri*7k“gÜ‚@Œ$ýÁƒØU¹Gü)Æêé1JYrˆ§×(ô’)ÇŒç‚í­Ë&R9‡×òg5îúýÛÿ]ÄÝÿ]Їÿ;o¹;Üó“žFéTæn¸N}ï¶íôéiÿN¿½sn¬ñ^scŸÿU7{Ź§û;P_ï±c›ãÑ1oÎmîí¸g£©é$wcþÏë\ÅøîM¦ùEMøq6@®"ÙxýÉüË‹˜ÁO9Í¿°KѤ’péì›AŽ+šNp9˜?òÍ°°-ÆÈĸæ/HÑÚIf+Û$?Íÿ‚0j$Ì¢úæ¦•×Ìc6íºgó€ów0wó/´‚iI¹ûæÏ¿£ %ÿ?æ_^Š·AÁNæO“ÞPÑZ|Ó.Ê×u*ïŸÍŸ–ó'Í¿¼RBa¬|ó/ê8Ýžílþð¯ÔÔÑ°’†oþ™h=PÌ9øÏ7 JωãäýwŒ×îÌ Ò1z­Çi¿ƒÜAþnB¯AþõA#ɯ¶Hb É^ÆV7ªŒqØ0G^ÏvrKÉHzÑ°Ä)vƒv1JÀ„Ͷ pµ-,–Š);çªRÅšŸä{°jvÇ"ú×$ n3­s$ì¸V$ÝdqÑ®AåÉs45ÛK"
-2¦5§/VDf§|&¨HÒð›ÞSû¦&A‘.˵ñÒ ´ËLåòµ£! HÑ‚N0&hSŽ´ÉAa¼¯*-˜FÛ¼á1uR(XõÃMQٹϾïX,Ó ‹ði½ŠP—“ñ‚ho³+¡-¢•(@1£NÌ4Z0¬F쎼RŽÕ ,'½È‚q•}… ­ý„ÍD›g÷obú:‹$߶Ë8;ÃH°#û|6ª —s‰dW:·Š¢cõtNJ†0a?FÝ QßiMe©Å8DiûjøG•¡e7¢bSLgUÖšm7À¾@³/|%>Vó¤†FÄ›¢^¥ ‘Ͳ2ìï›nø¸f\1ØnBÐLÄ{ú064…/HV`òƒâm²Áʌޜ2™ö.Ÿbt¥\sˆ(Ó*ƒK96QK Éb¹^Ì1YÙdi
-êÆ®Ôñ„œÔéôÛa;ƒîþ¹¿,ur@ ¹íŠÎµ#©D„çÄdñ Œ‹Ú!› ÂÍ
-é#o‡+äzÍѼ¼yLY º­¥mí™=ƒ3Fjv•žp`óä4):
-EõcŒØP®w ÖŠÎý hk§SnŠÁ[x>ö5pNeò‚šEyæ)<Lù€ÑÅ®edÑ‚3!;KŽE†Ԗ̠)¾øg@€¦aåOæ€þ@÷v>èÎw1õ™tø–e’é`W`hvq®K\êé]â(‹JŠ’Æ
-h¥LÖ6±À›b÷° 5d¾T¼/W!™@&íï"W*Owˆ –ð5ÍH$+jœ[ß*ƒÆÃp(î «õRÉüsPþzBûö¢TµÀ1C·€wÆ =¶';7«Ø½¯"ƒst.i:ëÏ…°„æ¨í˜Ò³òq‚Ìã
-"CöŠ;¤j‡Ö“i)Á.ÊW¢¡Qeﲤv4V¦nÇ@µÊŠ‚
-/˜Šþˆ×8@>¶Ý}ÕT†ºÀÀæ`çP9ÙY.{<û`úø_Û¯©j‹gh&“ì› žªãï«Dܜȶµ‹0Å2  ×Ú èÃßXzj¤ÖŠj”ù ]âœ\bžÎ!Ë€šî×ÐpÜ‘,„`ĪØýUd
-¤Ô­€Y¾SÙñ_$çd2œí:£ù(_6¾‰•‘åb YT{÷íùU‚&ùÕdù¤fˆDÁ¾Gœ4Z4ßmûÚL¢£†ô}—Âp9nÿvFªU䯔ÈFœsÑ’ýpÃÇ£›^„„&Ü”7Î8¬¸áªDuÕS(œ`ÝYw"ø x¢ñÐì|É>¼Š%œ4Ã<A¨\ÃL1•öòHIEYæªC¼#–wý$µœî×h Žî‹J¦ßZ›Úû£XRΉ13U™Ul€ú¬>Hž!A%¤„k¤(kÕ¥¼6ìõA)'e„in5†]”—b´²ž¯¼D.âòdƒ‡à_[“njÌVØHO_Ó 2þ—ñ2GŽä¢è æ´eL`_LŸtu…<ÒÔýõ>¨QW=AcØÌF¹ü¥â«ÐÈü’n‘ÄF\‹W\hô5amq³Í¶JÓE„v¤R€ë«fcoÊcò)ò'®T @Â#WÉveÍ=ü»,$3yè;.Z;º‡ÁÍa¹Aæ¡Á/˜Ü¼ê§¡(2qÉù[Vù6ŠÎh;`Ÿ±Dë5ÕVq*‚!°È‹«©H.Že`òà×e˜_x‡ÚßI.;*?-ˆ”€•7¶Þ~s Å€RðVÆ‘Õõ2£óœ
-×–H„ü()Ç8oÜÚè3Áe¬4`>»‹r­*ü*#µuÍKÌQÒAmYJ½óÑÊ—…Å^â
-*>e5¹÷ öðŽÀP¶˜ù¨hËÖjÕTž ;c’“Äå_ña34/têU…
-! Öå©fxÖ#
-n6_zÈËt"
-â’^ñ§w„f1šhƒ÷ˆ×‰Ì*YJblÍÕ”^a2@4ÅÃI¨”Ô½é7¢›­›™ÐpwÎ5;…×ð>ݨ§yŠT^³û¼¤"vPPg„´yÆM;ƒ}¥À4ËוFŽ!‹š4ùKZ}†Òš¾†êHD F_îµI³²àH;„°ByÕ„<+Õ#ˆ›ÑŠ9KÅ3H¶d ‰S1<h×uŽÕ«y–™Ä25j÷•Š±bH˜¼¾†ÁÅúÕn= “èq&0°w¯j¦.LU¾é²†ŠÂŸr:¦ÓF<$±îB³Ñ¨½‡!ÌëxPïâÖ›€%t cS­S ‘ ÷€ð7׉dðRnpMœç€Û’Ô$Y®ÉãIõDLÏ!äÅßþ²ÕE!´´› ¯CP¡AC‘ÖòâØ8¾j³ÅÝq«2k¿ÕÄ\Û˜3螌y![%¦~9É*xËDu
-¹çm¿±?(+TÉœ›{½wób©$çà´žÏçð <2>fqjN›†Y!¯(Á«|B$ꞯT²‡<Èkbó
-'ç9¡ÊªÌ\@³¤àXW¯(V¦ìƒA´±B8ºqAq˲m%7K„ÜE˜Q»4ËÇZ16Èqr[^²2tf† HLã²Ad>†mvKŽ³yòl5m6òˆŒ¢ Æv®U”¦º‘9¡3€ã¦
-woD….# ÝWÍ7¡DÒCÈÿíí¯™©1w…;ÖRž1_¶t¢
-8!™¹KпdB¹¸_„º”‰p²:¾"^DªÉp´"CgQù°Që߇  c¦‡‚13„¾Ð'8<ïMžÿ9øœíõ1ŸÌ¢°…dÜ»¦åKo¦ŒÂ븬ÜË—Þ¬+²”cè:+7!–
-™B3á”VOç°; ‘(:œnCE„Ì çWQPöJôROÕ{`Z~ê*`”¿,ªô!ÂÉC¢§+Ó=¨‰š LÜÇî.O—÷xÓÎ->jót
-?­ë£S·KuëøîœÛÜìns›¿ý«ns¼«Îc¨%P
-‰BH½®NmNçV‹@Al]ª3$€±¸”R
-ëM^í纖„£àœ‹|‹ö$€„Ï âõ3¤S\ÉÉnC't†µ¡úÓ!=\à‡† ñÇ…Y ˆŒÁ › ¯Cþ¨}ðõZÞ̬£¸’µ›"i£‚ž2#20Sî®u›ØQL+–UbA¼x¹UBenP*~>˜K•°Úx„òLšyßÌ—Ë„+I"–~8†±D#c?†îĸ”¸8›áJÒ;úCB´÷ Jœ® .Ìs´
-(õQ°æ9µ TînØ•¯ ü*bÉv ]<Ø3B«]»p>º öp¶Sà²ùè õR(›$ÆPFö*˜¨­[§2'ú“@q+†KâYp{Un4­”’-ƒËà•-/LBžaxèiµV5 »Žnò Ø4C
-î
->bg¸A1…#²T\µSh8'„4D'sgŽºft.B2
-ñk!°-Œdcãv¥!C:XX®)èp‘ƒ°v×1@Ðlþ2ï(±@({«3
-V
-7ñ&Œ<ž<™ þ¦*2z‰@öTo(°‰~ùbÔÖÊ•"ìOi [»;‡Ös –úI¥Èí¥™¡,Hà'<äWñBT‡²÷æ~AŽg2­ˆŸ“To4²¬c"N<Fkq3ŽþÁ †qB¼ÍçÇ?ÌiÐ1ÓŠøúíõ‚¹nÞõ®ÿǼ2Áy¥^1¿§”oÍJ…l×á¶?¢1èn{f¦ñ\×þ¦Ñ…™‡›ÍŠ•Œe_ëY1¬ä?aˆ7é£Ê»£Mï.ÅÔLŒ‡ÚùÃlúHM²Fë‹ ø/Ú»†HCaÜÒÜi·3:”6í¶¿Þ6ë÷úÅÆ®Jý1ˆëJŽ¸€ˆßñ=€^‚é‚ âRÝÚÆ’²›5J\L7ô†,ùÃP±™8dBw ±Êü³øôýEOh~ؽh³@'Ê!Ã:¤È)~v-Ã'Á]à+Â/¢|ÌDÃ[)É,PÒÖÔ#Ì/ƒÇdÍb2J­ûƒ0íIž´»Ã.̶ô³@¤n±1ضƒBVÀ’05ð«™û}…eŲ<sÎqtŠÅ‹›s‹DúÔ}&. S» ƒÓ°x”ôSÌÛæ}þd=çÿúWÐÄûðtTÚ:Â? TåÈYƒVN  É&_„ŠöÝÝYŸR^„Ob0Г=b]ª¦<•\þ;H¥•¯Š—“$ç¦-\Ç ÜÑ(>ô$WBE½I,+#
-¨ŒxìÂG@5]Mìk<. 6«„4Kžòjýô>‰úd nøË ï gÏø ]ôµ#'Œs·xÕI-`ÊÙ8ëÛ¡õWdÈ Ö‡œx£·ùÁ(ó¿;»½9ȆPQ¶uA()} ~‚€[¤0}ß3 ‘˜Ëu^F­fˆÊ[‡hrÑ›½¾}
-èÑÔïiV†bQÝ,¯â5\"â÷Üõ7PGýà“& mîÞ9ãg}1ÃnGsÅLŶI„›4 –ja÷Pt,^Xé/-æa*ëêT—c ¼æ±=üD³ÓNšV(' Œü®cª5Ì;ã™I^ó,#1XÅk¹þ¿†ÅáìX;`|bàbVwl»óGò-Üqxæ¹PÂy7ï‰@:(Ù¦í¬6Øš«0kðpíQ£›#ÐYØ mý:xTv$âÖ k´‡aÛà㱿ª‚Œ£Å¾I}úÄœ±p[­qã̫ɆIýÄ{ßóçÇ2Ó‘WQ[pÁ¶t6v! ÞÞË‚‰,:–§DßnÚŽ%$*sáó8½Ì;mTþͶ°˜N}R%^Ë‹ó2ÛCŸ‡üÔ›c%Ìz3ÞΤp 8ÖzXÝN “ß HâÄÇ`&ÚA§ôÃu)ëa¢Ûo@¯ß§Œk¦Øœ¾Æ#(ëáº^¼Ù84ü å]sHË\ &öĵ«H
-¾Ä{KÇtµÂe²r)Ý“|Ç
-CXi– ˜¹ ÉA1+‰ôçíl"ó¯úvŸ¦‘ÍPá+ÅŒÍ Ñ‚òk=M£@Æút±OЄp_œD„ÒÇEND¯Œ50ìE ÚIˆ’ÙŸiA âv=Ì›èD@Œ!¬sø[OF˜njB(†$!Çé&¤3UHNÚ*A—œ…Øå)%Gˆ,PFå+ÍÐüèÄ6å—q
-J;>o@ï½|tTqRø”FöÝÕï,PwY$E¸`Ùâ½QSªQ«ºý'¿ŠŒGm~ͬ=…`É@vƒ ŸâðõѦ%ezXÓڟć£ÒÈZû¶2 B£zi³¡Šeœ<ÓÁœ\½×`5ZèÖÏ爚»| ½g¶š©/¹µ/<‚6ü¢©¤Ÿ}Ë.œRö„½Û›*ÇÚhèžù9.@N°ï>áþEª%Þ rM4’„Ng‰7,VDZ0ŒÃò&
-H‰Œ—AŽ\9DOà;Ô&!RE­Ý˾E³*ß;_TÚ®¯ßcÀ6\•LI$ƒA¢½ëǺøKF×éM¤º}üóMtÚ˦tû4^n6j•¦ªûï·òñWD¾mÓKâ’Ç5~ìVl~üx2±^Ì[1³+¤L­2tT+dÚT^Ux˜~\šj£Ë´á×£æKKkæ³1û壦}ð€¾‚ZÖëpÅ×9œÞ¼”ê^WHïC›i™ÞÇ
-ÑbÒ«©ír]Õ_³Hm³—Òæùœþ2›“"6·|rkƒzw›QÙ+¤Sª¦SZÉרðu’ÒAm¾;iyÕ8šOhÈTjQocô? ’¨FÔgX­sñÈVË”9ì9ˆÄûœµkm+È»’|ü\?>WŒ‘ºËt›5r×ÑèK[ù»[å º±"ÕÑVÜ[;ËÔ¢³ßý’}ï ³"Ò}:gX`€Ë
-ùΨ@œÝÏ#'¾@›ÌðuÕ ªü¢öÖ¤2!'ÀW´BÄ
-ôâª]E½ß7ýûpÅÊšCyuJ=*_ÞósŸÃC(£l ½øõry™V—R[ó¾B𮌋µi+d4px¡ó
-pjƒT׬[P<n™9¥¡Ï"®×!ú*ê¿ÒÓœ ©B³ø_o+BÕœ‚ p½G\)ø‚–è)O§ð:£QÖJæe®´_åSf©
-‰Nêp†ÏúNœ”Í,knÖÉÃ}ì©pSY=
-›j¶Â# ÆÑèôÐõ;‚¯¨*iqûÓ9ü•âɦÇÇÔÌ1§”ZŸrª/4úmVJM0nC¹˜Ò¾Î©Ì*4‹§iBÍù©µ L1±À%ÅULÊSdÍð-èKã?‚cê…ëbwžŒjôbdÈd@
-¯Ž9ÉÔ!$£Š¦ªKäÃÉ
-v‘½;Iáoªl¯ÂØ4=L¾àrF]Gàäè1<y÷*7\ÜÏ pñaLÆ|;'Þ§>!ö@쎦…eV¸/À]ô÷Uáp½õšÕiA¤­ŒÀAŽÌ ç…1ªÛâ
-:^
-Âú8M½‚]¶”ßWýëx^òÈóP#ˆðÜÌ šs„™és°ú¹‚.F ¹‘v‚<q@¦TÏóG~¨ WÇi´®ÌÊ‹TKÀ.~uœ?ÜèÐÒ=]¿z•á„AÝ£u%Þùx ]Cñ5†®Sà³kmY½ò
-7å÷ö¶±ÿ?ˆÛð篠ykºA Å U}=ZàûÊOe¼ÕBvÞÁÚ
-%›OÚÞ¶ ¬…E—®RçK~b‡ÙN—²ÓqÔ˜e+Þ
-äu8Iö
-J•@?ñ¶ŽÁ¹±já™gu识…áŸz"þ =  ®º=c1ŠÔܶ!ïÈ/øîM­­
-ì’fèæV(‘èœØch±n$Û³ÆbÌzxOØå!³‹?œ!Kþ¾êkP0#šmÍ꼎Y0—méáW:ƒÝšù,mPgà:)éGF¬¼ùÊ°[ÁÿS3+$ž >jyœ¯6ûæ#G‘˜zY_ÚÉjŠ•ÉÝ”Ö
-Ötÿˆ;‚[0böXcpä±ø1Ž9x±ȃ‘ÍÚ NyfoÝü5"q#ÁdÌ8O6½—p°Ý³Q×æÓëÉú¼œ®yíiTK@ÑÀôø9uQ^º ÚëÓ(ܬ%³y+úò›EýNö㯸°B(~m´LK ËMá—ËËÖþŒ%î’~ºBB­v€d‡‹–×+ zÔû. šF‘p9+ûʶ‹
-ªÄ™ٷhpcõY8®Áwð(EZ
-|Ïž^Á[ˆdöVC¦xc•…ãCÉ`§Ð8eGø{r*Ûã8}® èŽ<Šž‚®¥ÃT|g¤Ý!ŒÐÎ &@¼x¦?ðJÉJtÁ’™îF^)$ Tuä9 ÄÒ}Ìô²«‡Øs‰ÁÉkvâF¼’6òœ1ØùXNj&…EçA….ÈóàÚ”KéO#LâH2zÐÆÞßÂ<ü¸%vàq êô®O
-¾f¸€a܈&؉Ñ#M,m âžÇNÈ‹‹ÀËI:£ãéXŒ5©˜[*G-—GÉÔÒèàÚ (`‡#KÂ&§èý´4¬ÞM_Ö˜b1P!|Y·-9CšÔ
-ìÖ¥³"Y2–°Ù «'èÎ)™E;g@¦Ã’@¹GzÝó
-Ó“âSøß
-5e¨š¬¢!°ã!¼^SáÔ¯T(ç­ ÅG~]™'Û£%SÁßé”/“ÛÉ"81lþ4Ä ê%«€°´0ßœ)Eäûâj3@ ósnÓε2æ턤µÂ\õ…SÖ;ˆ‘ñEzLûìšdQ'Hq„$”©C¡€:'Ži†Ëí‡D<_ûa÷…0’Ûƒ½<'¯ÎÏ'H¶
-Yoìº 9è§7 d »x‘ùr2j—kc€ö4>÷è™ìÕzÆ,vátÌò‚«J Åc9íö“^ Kʼ@ãi¸Ab9ÕUö¾z² Ô>¼–ÓÂÉѵIJ½H^€WÏcûB°’è_ŽóœØDëhA]]Š"Ñ&$ §mZv²>Eï08úììçˆëµÊŧ«jPø>;¥ë[9Yjv²N¹6šã¡¤åá'‚1áé¸h‰ªaâ$¨äë—Π‚%ˆzÞóf3òDJDŒÔ..…]ÆžQrHö{3lœ—“éýfuˆDƒïJ3ê±>tzoã”mhöR¶á3n´ðÞ˜mðWUö‡ì§…úôØ;RHwwb¹Î/ÇÜÀi°V5ÙýÝY„±}îúx¥&QÆÿzs·ßÞ°}Ü5Ê7,"=mdVþˆ«ÛÆ¡9ýáç7ûéæoÿåGÌ #Ýý¨øöç-Ý~ч ƒŽœG—㘓ˆWâ³=‹ˆëèEAIp|äW¶B¯ãÚ]6:#ð•u¤¸RÙ¯TvP¥§ó„Z?k5ÿô§›£(OÞ©ŒÛ¿S-¸bÇ­qNÛá°zdfg-5Ü¥GYWúaH0-žT;:N½c¾-%ÍreÈ2Æv¼
-åÔÖ<³BÐʼnD6oKùx¡ =Ê|‘îý30ø-É.Ôà±ëÜ7·Ï¸f¢}ó5—`´Zü7×W2å>å»×¯€sêß¿ÒûÍÀtuÿï•ôþöÇßÇОÕwÚÚ?ß Z+Îw)~˜ÈpâWT–Øtób
-j|n€"ÔQBŒ|,úÙÄ
-•°%ž})⯠ý¹ýã?o?üo-È«½úýíëv`ë0â˜gÕ ‹P:Ü îŽ[ỿ\€dƒ
-w¨/J‚`qk©,H%íŠíùç ÉÅc®åWÛ„ÀˆXg”Ÿ']§]Q6X}ÃÌ5ü#N·¯s
-C¡ nQ6Ä»ƒneñÁáB³ˆA™ÆõöøÔá?µ—ã”çZ",Ž
-Á®Æ«çŒÜ ¼«[1`œØj­ÞG»;@0S2•gkðþïû+í˜óco…ì#³]ȽSc¬>µ×Z„ï/Ô°T·'kÄá>4. ¨‡{+·ÇÔñ`s÷ –X±­Õ)í á¤Ö6!ðïÎñË·A´ª¡ˆ¸>ÅkCè•Õiˆ­+ëbCš˜X2µ©Õë”gó²>ð;¾¦ôl#”R*ŒŸâõÙâAˆ½kø(Y]œ »Ç¦râ„Tyw~–x± I!¡²0OÔÇ£$¥¨ÍC’
-[ éè` òØɹ¶xRž‘Dô›¿6ˆÍ”è<[5ûlm·²fTÝÁHfk·g·3 ¨ùb/ oÅñ¡°9ϯ,ç…3õmdtùIŒ‡:ž}Ód¸/A*Áý/Уå—Ì<Õ.6 ¶3$³CzòNÑÅ ÄÛ¢|ÅB™:¤7G-L/›b;S¦ŠA3« ‡ ~®¦kMb¢rA3oÕésÄ¿ ØuÛ›
-D½5bžjL–7’¤©D0ÜS±LÏbzSóœg fTs&SóVgKhtçä+ŸÖKí˜óƒo¥ìc³]É¿Sk¬1>5ØZ†ï/Õ§¹{çðè+  *¨¥¤ÿ‹ *÷JâÁ, xŸÄ,
-c½ô„¸pHN¾6B|ÿg¼Ü‘ãÌ‘ |Ýö < €¹!—îœ@±eîý÷K Ðœîÿˆ¡ˆ’G!++³ ;ØÕ)ÖÛxƒéؼ[©®sE
-:‰ c· §Ë}~§‘zòQ¶U°™Ü~Nˆ‘“ƒ(>ª]4˜ã.Á ¨R“ ÛÉ  s9“qf~ò³Ý‚f¥©lÐÒçÝ2ýÑû(ƒ×íÄJ™ËsCk«J¸¾Šô×ߘ²ÿü÷Ç_ÿóØÓšz±7Ù‰é˜aÓÉ“0¥0¿ˆRÂbD  )5ÎÐÀXÄÔw FìQ-˜*j°©œ¯©?¥'¿ÖV̼.§^’càStàƒëZ¦\ùÊ};#µt>à1¿QÃrüñ‚È·gå‘+âê.S^û¬ºŽœ ^ìõŠùô
-K:̨ÌDDÔ!¢_6O| ¾È¤4{l"îm!àR•*ö±­Ò˜‚›Öȇ]ž ,ÓÃÁ`Z£+䨉ÔrK8™n rjÄ'^×ÊÞêÊP<@ЊkDÓ€¼M)ÑCÑ’^®Ñ7¤&YK#í÷î˜'þ„²ç½7 Êñ¸É6oxZ¬~,ÓÀQ>«pFÛ~eß¿³øç#
-
-‰ç†°4óüL&ë—œt×ëP±å©é¦D·ˆdØG¾ /›T«=]
-ôÝæÄ’:ßK&N:% Í ŒŒ“t¡`LIºK°·z1Ùàjdxê k¬,¼éZŽ9&p%úVUm©ÄcÞPð
-aq¬!.¡ó€Æg§(ºÉ£G¯¸·"0~hŠ¶u ´È4Ô㶵Ž~ÇåæºçÉ~-ˆÈ™³c¿”
-È¿˜ˆÞäГ=ýøqV‹o:sªWYRWÝ ¦¢fL 7ëo®oÌtú©Dwïô%Ôe 朧S®ªŠ¨ ÐãÌ×B_Ñ‚芬ælkþÊ:hx0lQ¹12TºK©BV3–}à'È–€á$xÔó:"‘k­#ùip3ä%*s ”Àã*‚Ò(^×¢xV=¾dÙ A”~bX}Ã4†(Š!9gRcôv4È„\lf y¬›$~,÷B l+{á€p®ù0" ‚'é¶ó"íWýû7 •ØŠïARŸxð´SÔ<
-ÔbM¥ ˜=Ƚlç¾€ü1<Én,–^@—Á?AGŸàÚ·AñAØ5Àå›í¾*S gJ}¬
-h ÊØóù¨u‚EÁº÷`âLYØB¹ÃÄ÷‚“ ä}7œuC¢”|!ù”‹ë]"¼O ã£[£õ‡—›F ‡l±X–8QÜ$h]èUmÒ#H‰ªÀPTùmAš, NkÅ.BxÄØ÷ÌžA8š:Ó„“‹nj†_k£ª{ˆƒ+¡hž¡Ç˜LäËÖ*ôfd0˜÷*cÈ„£ÜægÕ(*s€øVLyŸ¸âÝ:4\¡WÍáé4¸ „ŠæííîN±Å`§+Щ2J9"Â;‡ l˜%õt¹ð+òYø[üÚê´{Áë×·óiÌú€®óæN1 „š\]zOµ™C¹‰%Åou©0—¢ÓxáòÍK=A6)^_üºÎ…7×Ó\ØwºÕ…Å×ê\zQ̪tvyê©ŸÖ3™$¢žÑ[?j ÷kôà
-:ÈÏu»ÐçwÎäªÑ¡pâŠÃR9j½½óqR JwG¿€:}Ýîôù3ùѱ-á飒“`ÂZ†m…„¿o@=F&u™_åÄ KÎÎn9ªR mÛZ, ¢Œµ–q𹈣¡«
-ÖbYN@‡Q†QîÞdÀ Û¥¯uJ×iãî±²óÒP‰õãXœ]ÏnÛ'v¦[bFVP1fÞ¤¬`æó¿Ì¯¦È0wâkh“Ôƒ.H‘þ5Yò ˆIé˜IºË!X¢ÜK,_;Õ,ª¾ðe
-!€Uéá6Ö2ä Ù²Î-÷0D xƒ¼Â— ¡¦#m¥"®o…å+§¢R]n³Ö™¾á…£Š³òž[#€x7ËGiudT0Tž×[½‚Œž ²µc‰ƒŒ>‚5ãwÈ-2’£ZÞ§C©„\Æ‚ ’˜4®€wÜ[ÉcYÛ·â'Ȩ Òýȃz‹FjÇP'`AJ´dÓI”l©Þ­_()­Ö}^A‚ƃ-È@4©‹ùVòÁÔ'e+˜)“Á%&ìð†×ÁÓÌÜ· ‘ˆæêÛN©}¨”{yÊ_?½kÇÒÁ ÏPWËxê8Þ ÌJÂLÃó)x\r‚Ý›“ÜñâœÇ!sÓô¦\ýQešÒâ—|+ús¬¡Õ«796Ù 9ú½¸ôP”¢ÒãæAŸ ¾•83xSFÛÝ:p– ÁÀìQCÓÃ
-£¢Þ²Tuá W™Ÿë¤LâAü;ø|&ÓìeúŽ­Øþ˜í÷øàKü#º^3(ñ&hmµÕ ÁŒÎdx&W¿¦´RZF,vÛá® 
-^ oÆúCíÂSrÿÓn!Aë²dÚŽ°BtdÞ¼ ÝCål§ºú›ZY´B:
-Šµ,{£è ¼šËbEžY/õ‡†ÍütàyŽþøÜ·ŠØZ/ãDSÊ*Âi€^¨nsdÉ¿8¸nÅóŠBl]Á·Åéðö¯YD4IÝ1èO-º7ÈßvCÛÇ7FwÅ•¿þGeUž”'#K´]‰YxE.ûšòYÄ”‘L"¢—pJ_˜†g¶x’øU!·Å¹ìè¦2 ˜t˿חp‡º61ÁŠ ,•j±]#¼”%“ˆ$OÛ‚X¥hqŒ§­ /Í)h_ûv?'
-ÌQôPÇ&FXh<l.¿CI&])HÔ椣Ÿ?ü¢"Ų\tôã¡èž6þ¡¢üÐMµÀ!Û6%b«ZG݈½»Dó”(³–ýëé`†ª·I«òNÈ
--ü¨n+Š ¥ÈXëhùËt.ÿº•¿)d´b‚×–îS!¢S!ûKÆPƒÀî*d%@Ÿq­~ùð»Bv‚ Ü]·M|WHJH8ü‘”W]e£¤G–ñKãA ëxE §þ5Œû1ƒ”Õ3æÞ]TÉЂM9ÐôŠôŠîä=ddiF'M_xÕ¤¼bä'%DT¥ÌŠ¯Hý5ãåïzªÑ×µ{y<Gås¸w™p¼Gø;{ã@ýÞa§ä”Ç[™ßä±á3r‚¾Ì‰xêxÖÜűA÷Š«Dµùÿ&Ž Á(X7äïI¹8Zµâ¤+GÇÅÒy_Óœ¹Ò(„A<Qü7¦̸¨ØÂ.ÿ.vðÜ_ òð¦ñÒG@;l¼Ã»6R2ÓœStµQ%(`OÛÁޥѩ9”ñ¨9„Q÷eÒ¢ø´%à]õìB_Rf÷61ÝuQíㆉ7¦±ÃÔ›.jü?4 r­ž¦ÝyÈâ†ó\+KŠÙ.ÝWEp9"tîÄs¨bš¤«/‹ìˆT»Uúv7]<×èÅÙÆK! ;v·…=q"èç*"¡BGÜ095¿¼šHx™LëÄnïšÛÇnEß¹‘]<¿2ŸýĈ«Ié•eâK–eÎëâG«IŸ'‹ï×­ Ø #Ç^Q¾ÿPTi±BÚ.:>÷¢
-º$…)cWœ¢7û°JèIqÞ@ª´Á¥6+Á¡'c& Ú‡7L¸âµÁhK4ÌÂ[Ù°“×1UHÏ‚ß6{á
-0¬ûR-x(@Kc¢SÙ)±Oñ:ØÛhñé ?Uš÷¢ ßB»=ê6‰Û…ºãºÈšÜÐâ(i3V‘Ó)|½Ç}œ;`D8}«L÷*2…ï_ÔÒJ~%v‘MÎ!ÿˆ/ñ³ÞºÁKa
-(&‹c˜?Ý¢Šm­$ì]Z0ÅfH OùkzËVIÏÒbYŽ7ø{}ŠwW~ƒ»oégø ÏÉqÇ0ØpKÆMŽ a4² XqÀû ëM[D’VžÎi˜O4šoÙ•‰ªô0zÊ\%T€|¡¤æ @S&Âáèã’ž³(3ãÿ!"IB>~x“9AÑ'‘#_òº2áKb_,²ž€é`*ÛÓy+ª½{:/À©dðýsDA
-·±X«¡ÆWëêÙ&ЈÛ2xH1“ÀŠžÏZ¶›`-æÄCòó5yÝ·*Õ®>ÞJ6èár K+Oç\« „!_» ]Qœ_ ‡$C¬e€­¤dñp Ü2mÐYRòkÝ ? DEûà9üFŒß.º‘ïÇCQ!Bbɹe0††Tx‡ødU€dL‹h±·OA¨OâˆôŽˆGJfõz¨”?c\уÎãàÅäÜÙ¶8MmK]»ÌZbèaè%^ÔÈ"®|¯ØkŠVà¹qûÝ=…-enùZ§0¶8mu¶¤%ëÑ|¸Ä"¤§ÖòþXü˜VÌ3ȲT~á˜Õ@ØyÐîÌ`×0Ø3$»Œv…cø¯• ÆŸ•œ´€?קØü(¢Ë«H~&*LpÏ5K.­†3ã¾#Âði6;!²›}+ÿ(bÊŠS6‚¨T fõ;g‰u¸˜š}ûUç9„±LS; ±JðCœàj
-Þ«ŸÂ]ŦéÉ—c¥b
-œ4Ùw.$:Ñ)Ñ«•$N¡¦å»d`Ô<æý¥Ô5ÛïÐ×p~‰~ˆ—­9d~…£~Ãß?Âøç·Ù©×¥Øñ¥“K¾ 8ˆÚmâAõÁœ$Ì Æ²c\¸ºÝ ÆÉM-Z²¶_vVíðÙ€ÆkÉ÷óå D„¥O÷K A¼‚®iËý=¯É p{È'í&GÙœVjÞ2sìCH7ŵ„ˆÎõW (/U)¢šû§µY™b°÷ëC8>ÞƒkåæAp"²NZç È™OíS*¸Á¹Nä?¹ôK›#K˜ïÏü^¢&ò\D_רĖì¸ßõd^†ñÇ1Ø6]lLëAâ¸÷
-Ûóÿ*¼Jj5ÒB+Ø ìAóJìK¸ä¢2´×s<ÁedJ¡HL¬ñ³3ÍÎ"Z n?h¿Rø¦¤OÞ¢9£³>|´ûáXôë•«Å
-ÐÙŒ¢ÄžÝ¬Ké®0—ÚÛŽ±Ï¬K‘#ÞH"íf]J½€.ww³®Jø®•Ÿ½Ìô¨9“®Þ$;Ìux–Ÿt©É ÃüYÊz&]*$™´"—´OùLº”„ŒÉƨ˜—¤›Ç¡šœ±ÕøHº”ðJò›4Š›t½’#ézEŸIW¶©ßd7éê¾UÙÊKÐU Öñä]µ<ã8꬯Øûg']J¹T@ù“¥'骈ЇèГ­ÇùSà!Go©7éªD*¡Å:_’®vbJ†‰Ò_¾„ÿ‘1gÝ!S=’”ÇódÛÝeN+ NÔ)èЊȳ«›t)©?çËJ½$]Š
-·çþ\(¹I—}"vd³½àŸY×+9ÒîYtä]ݦh5ø{ŒnÞ¥¤q|í䤗¼+¬ƒ«^سšÝ¼+òrù·Ø¼œºÈ„)v gi/y×!¥#î5NÚujáH±CLÈôln؃Ã
-ùŽ°+WÌJ%ˆâ†]½®Æ.”;‚>RªX”máJc/iWH‡0rlT;çAGÚ×ânha¬½¤Ýƒ»Ž°+PŒ.LLò™v½’#ì
-¤V¢eÜqî»^ÑsžØ°«F
-(Ê¥y6Æ^®Ô3.—˜Ý°+¶(D'~TV|:®÷ô#ìj8ÏT3”èfÝ‹Ûäu”S>3êÓ˜8IW8fpHÁ+ZŒ8e
-ûö]Ϥ~D-/ÌÅgÒ ?È*±©e·ø‘tƒˆ+PÔô“®Sr&Ý£ÈKºA°¿Ý¶ì‘uµzhL ¥ûI7€­JŒ"Ä´-GÒõŠžä_åw%ÝÜØt(DÔ·°ŽôVÑî½¥x¹µŽ9¼h™Až4Y‹"
-FË/KõIs6¢Äªy춱'G#Øo¹zžÊ»Òeáû6Œ€ÍLk•0øÒC­eó¤Jxmiªé‘UÙÜ…ihLL¡¯cºÜ“¢KڦᡋNɇ=ùi«›d,ÝM·§‡qŠ°SþѲÁQU? Ã^Îñ¶,vuõo”û˜ž5’$sÉŠ {œ`œÝˆHæضc$j‚lÃûÀâ¶Ïyšgž§‰Qè¥ñŠd³¾Šà<Ô6COKuð„gÍ Í¤%5¤ä[<p,D@CŒ5PãÝÌâ­š MëɽÏ"Q$ÑNoµst(n3fT!¦ÅT ¹Y n—Ð'(F¨?‹Î+Ëý*x*ËÚ†jü½³hlöÜ»G;aV2™ñ׉p$—²aŠ(Èu¤LŽ`ÛfHÀÕ°4±9”d—¬”ÛæÁ=“ ÄôìÂÛÒ†ï*ás²S#c´/ëÆOà‹{ñ¿82Ìöã2˜6ýë+=´…-¼#nÀà7è¥n8*ØECøí&“£F¬•1‰ð­­T+à—ÁÔb%Ø
-€˜¦Ut|îQôëOîô÷ºzÄåðf:‡s¨å륾Ÿâj!믫„±Ö¨•
-[MHhèàÅJ å‚ÅŠËÄÔ˘%ÔÝŒknªS’á’;˜ÊàQÃ0ËXçà_ñâعa¦
-KFtIr—³ ?˜¨A§³þÆËG’‰¢'¨;¤ÜB€‹q9bªs‚FkYbßÞ'QHwÞªò—“´å/2œÃVÚð  a„¨vðïˆâ³œ÷®ï`Äå.áÓ.ÒÁ¢2z˶&¢Qé‚Mõ¯p üsë%åçùÛá‘Q‘ÇÑ(Ùú ³ªÑ'æ´í ýäg£ä™V! æ'Qᎈ2û¨XRb·U|b™Á3 l¿¾aÀÜ gùwR%«x„°Ý´/1XKG@(<lG$kŸ ¾ µ†…v™æfv>-10ÈGŸå„q4D’ã~”eY'”pŸÄ!è(”»ë…q¥²ç_Ã"—ç¤Sý
-˜lAxŒj†+­iE®’S²ÞýéÖ˜
-ò#â~ú3‘¼aÄxÀ|Ÿ1˜ü 'F?Š_Då^ãë„KËÝw“*)
-èù…±s@ÌVß'Cñ{tÏëÇ´Ö!vR\X+ÎbòNx¸žÃë¡›? >8p
-:D„4MóÍCbq)t8;c§¢'Cn^¾1dSD]cS§07AÛ3vã¾#{Ó"Ç´Óøç­Uu€£Z󃪆Q)3ß;|6—Å7%‡ ü§‘rÇsí¤Zž…AlQù[K¾S<˜–À0îÚy`©Tªl¸!HHQ“Ïäìƒn˜«÷ç.–yp‡°]$Q!6Í!UßÄ%eGàÄ°àIžL"J½ ¾Åµžÿ%H6H_Ll‹›øü)¿Ò¥"}Ça®púðJ] K€îßàçYÇs÷@¾rÉй¢2awV=WA¤SØÚø£—«Òy<OV˜›¡@D#\¡¦Êvq˜§&D™€”Szøo?×AÐRSñaýèÛ×-ÈKꟾCM_[ÞÉN°=þ³+ ¶à1~A˜-> …®)cææá(l¡:ü±çºÑg–¾çrή·V^ ›„§„õ‹ï03h3¶ÅÝüK¬á‹#æÀJŽá™;˳aïçfÓX€£â«5¸ùKt†‹êxyùáS—§ë¹à7 bk¿þû÷È—¸ÍT1!JÎÛã3ÄýÌy@x&aL´›iQ,–¡QK6n™HDoÖÇMú-¹a9°ìOLÈ<ª?ø5"Åнú ¨æì|›3Båò,¹Ÿß$‰Yp_–Ï•™£àJ’'/<!S%• ö}!NxK@Ï£® ”çP£,µ|œos y§7ÝÂâ©6—Ðyªð%ºž:õâCqëøý;·¹¹Þæ0}÷W¦øZû*$â§% •>#~,ÔŸµK„A„9Åx›¿÷ì°¼ä²|Â|0—dûu<ìú~çF_ëâÀúãŸkÞ1àÀñ¡J¯ëâõjB4hrInø¥L1¨,³LÒâì±
-ÄlAæ("¸@÷
-üÀ|¿Q%Õò¯ÿý
-ÿùç×_ÿþR4%ÇŒ†7B8æŸ@ Ydùz¯ÌºÞAƒ 5¬á Ð¥u½Öe·žPÛ» ¥Ƙ ‡õUÛqï”ȘHÜ=,]g9î jV¢x"š6CÆaÈ!Ķ /+ŠV5‡ ú<c¦9d0<È<ùt9^†~·Ð
-:íßÜ´€\Á´¢@$*ÍlÔ`Î ·j ÁÝdœK­å
-t»”!KFu“S üZ™t;Ù3,!‚º¥çIJL ¾½-að"aÔ‡ˆtIó¹b,¾>•¡Nˆ/KÔ7% ÄØjkO+fk‰¹î¶©Eó! h!9„p…Kg;â‚ÌI¤±ÍعOoO³Šé
-6¦t/2”`ØÖ©w/2ûÍ"òƒrÞ°C;ï›Zðe5ȳäúò;©ÞÈmo|UΉ1¡º#æ¼ù¾gÕ%È["Þó(ôœË2q†;¸É 5ðÕˆaY/…N^ £2:Á€ˆñùëŒ 0pGQ o ð(t|¤NkªŸÕ)DL“ìÄñ΄±uan­7f¶® 00’¸D
-Ä·ú®1a% p.‹:ÿãËÔ¼¾S”mlNŠïzâpžÅíÔÎ+Ä'‡šóPIÊ‹ïhi+¤XhÕoƒÑC™Ñ}He™Û’ü¼ƺžÆî£pÓ)+†.vˆæ‘½öa¿¬L€›É´<³óý¼¬^x´ˆ>Só¨âûyYâ È÷§h²V}i 0¢•k×Ä(0WëLíðë$#*„Àýœ»MÊ!QŒCËýåQõ“õݶ'ü{×”îõüÉ’ˆ@Ñw!/ËÇv^!>9U)±ÊãÕw”¢dwãpQŠ©‰(ÚïC
-ß`0ÐùèVÑ€«(Ï>ŠhÉɽÞ#¶À.=jÒªÕâ·!HRˆ‰Åß\‘ 3|îV¿¡à…GòÍjç Ä[©ð hqµó
-ÂÆ„²æã
-®»\àáí|¦Ka
-"¦\ÿHO…h‹Í=ÿx €CFãqÂù¡k/s³lª…'³Až!‰:d67 ©‚mÌ-rõ‚<þ½kTŽunMi‡aæÏÊJ Eg¬‹&ªçŸ!ÎÈ—&w2Ni]'ìGEšx—ñoøîþC‚pÉpœä
-¦›ü{9o§¡l$³fì*ïÂϵŸIýÞk‰5þ{WïëÜ°¡Ãp/ä“ ÙËëÓ´xœ.H šæYˆb±¤^ðκÖeX1jn –Cæbž­þ=\ŸÒÓ—ÃèVP²‰3‡^´Ïû0Hb¯URPxIr³k@¯Ñ²]R•]ÑmYïÍU2e(@#5îéh¨Ô…» §ˆëi#ÅĸלsÒšŸp[ã–¾a¶›S²vêo
-Šµ ói&¡ãQKÙˆsBØb¼6³•€Ž3mÄâb—J‹Tþ÷/¿è+-¾»54e'Š
-âÃö"á"æR(“9Ìy‰¹ïœ¢;M$ Éà€»bu“桨¯‹g,ÿä–hŸ/ïýMà™8fCŠ
-aÏ0㹸o|)±n~oÕ}™[¿ï‡¹áÆ»Ô ··¹øþÀοöéïOæSãZÅÒƒ™úì,÷áÖ@È)è‚Ú–òR2!±!t®†2ó[SÌš÷Á#× ò½õب¯¤zNN96Ÿ
-EÁxÞ¸tôKd+ÓíÀI0d¼‘-C¬Áö¥Æ]|«áPåݲ\aᬸ NÆÑ>.B>™;â%H'¦E¾¢˲&©,fÄöÅàO¯f}"NxÖ8ö<HZ «ò1…C(1mbnƒÇ¤wœˆf¦œþ9K#Q_¼|ÀpÕᄸ«ü¦±Nx–&±Ý H˜é>Þ³¼HçL|÷½%J´MÆÓôå7¹ã4.ª¿N!C¡v™€<DzK˜)zŽGÉNà\3q+òÌc-C‰R+?.‚ž£Ì+iÒ~D§è[Ð[%èw‘éˆc3xe cˆKÄÙ³ŽcÄì ù^V “)`”h"‰r¥Ö‹˜ôÄ£<d× iBhV­N‰m¥ ¹—§ehSÍtÁFß3ì8ÆV®ô&ó¹8£œã2~vÙ¯¿A"ðà‡*/BÂ`ƒ.ƒÁ3qm)t±’
-cª³ÚÐÃ}BÂH`Sì9 0` ÆÿåߟFT ÂK#«7 hˆi>ø J ƒÑÄó
-§e&Ç©®ÒŽy€b4°%z;ñàÌoœJZimQ=¸Å|´ÇS€šõa#M0td6§ë¯^â/îWRüVâÓÓ¥èÏCÝÇç3rÓ,‚Sƒ_Ñ[ÒFLÅGœºé`žÊŠXÁYŒu!™Àx"ÓSùͪÄ9^àš¤Ö ÔŽ£îp¾‹ù0r’ùÅÆÔa‚í,ëE7™ö)ugŒ¢SbÑXü®i<­s! ¥þÏãƘx¨9æ£G¸pþX,‡17F`AÓ|VD;ÎLÝJnA@–ÎҙЊSôþPtiçíºhT¾ÄÔÚ
-8¹‰õ8}|Ä‹ˆ‡Ýš¬nîÙ·ðW›âFåX­‹ƒ*^^Øâ O‹mÝJ8ûˆcÝwIžpÇI”[È4ÏNÌáT˜éÇ0 A«D€ŒšØÓ&Ä•¹
-ekù­
-³ÃÇ1à–2ñv8"iñk9 ¡‹E*FØ‘/s1gYADŒ§ï@ŽÙ¾
-H‰Œ—Av[;DWð÷à ´8Îf9§GÎþ§}ñH*É•v&väI
-7=€¾Ÿ@ÔÌ
-làäûéº;èó+oºžþñoBÛCºk½>o3ÊR½d†µùúL¹Ò%¥×^ÆU> Ò¡œ…V™h–ä±ÆÅR¦µ¡áU`öàÇäR} Ï(Î <‚kRµ_´­·1„Üê„Ú.Ø„)é’Öd]¥¤¬I㪷çH‘ZÀ­×hòÞˆ²ÈI–ò¥nÑÔVÜš=5²ó/Ú¾€`R šMŠBèY³ú(£9MBÆfÉÞ5#=b+r sƒ µ-)oå¨6žÉ1+TY®Î{…¬ÈÂ¥DôwçÜê
-؃l„=uMùNnR’zŠÕÓHí²ó.<#ÌÛqóþû¢;Ȳ­ùçÌù\V¼\|Æ8èá Za ][Fú´7è´ñìMÇÍ©m¹ëayqGˆ{Ö °ÛUÔiÛâ|1ÚDÍŸ•Äh#=)ZÈY›n ïo@Œ
-f–‹8?ß`Ø:Q³ —žRúŠC«±ö
-ú5÷6ñԽ²£ÑWPw½:xòAÕ'‹Õ¹•`l¿R &Ó¬’Ô2òx´F „JXnö”™ÀÖ£¡È*D\žr5{wÎM0ò1æð[m¾¤ çM—±*¬¸‘QÏ~‡¿¤éOý"9®9±¬Ð K­ã&G_Õ ±U*¼êà«xvV«ÞI✰Áˆs9€>߀îµ|azò'Å.8’Õ»¥ÒC9ewfr{ð”&õ
-[RȯI³lŒ°–ý­±®ªY^FhB½†#Þºøkàwß´.ºÖ/¶Zmù¯´˜c³ÕRKMtvhwrtzÐ3¸µV³ó9(‡„ЖxÍýâÒƒ|¦•Y&O™)F¦ÖUiKÙä¡ûª¨È5ŽÈêÉã^ì
-7¥¯ÜnP#-Í(ÍÆ
-šŒ¦˜O¸aô²ƒØ0KÛ€>ÑâèêØë¨AbÌqMk<!t]ƒë¾'¯Àq#Ö1#çdø‘îD·\3äÒ3;ˆ|m¯ ß'ëçWÆï/{
-å!VäuŸüy‚dç7΢$åÚÜZ0Š)#ÂêaT‚&/ü­Ö Á&0¨#‹»ÊÁôcåÉ¥kŽi@hE§+1DKà„ŽÈÑ]§ BqaØ _ýGûbs;VdØ„4¶–Êt£ȺJ 'ûçò^¯Ç8œ·äoöäzqá) vVÛ C,ÇÑ‚ uù<ܬ´©</ țϻڲÈT.C±3…ü\£šn¤qØ1lEž¦ÁÀ”ŸZFž€ºçw^!+r
-—£Ž´ŸlÜ©š›Î”kÒ¼Öbv2Šs@Èû¾êÆ‹«›HkºÞø8ÒéRÜ[d=#rF6ÄŒV’íPþFâïO_
-yÅØ0­¥|ÊÏ7 ÃŽåj>ªa³`XŸëè嬘~˜ÎÜ:&„öWö]‰Ü5 Žcr?›&.¬¬O(NòAݸ>< ºnG7 ÄòˆAÓ~2œ«òöÛã|dhtJ^ê‚àk$Û“ÖÅ÷à l!*í
-’Û× °G®|(+lØš©%ïÁ\ˆÌs¬§‘åÿ±WLEãRjâ=SÆ8ß­ü亪ãùœ .½T?ŸÓQpDl¤¹]‚‰-öÔ:¼ÄB@Sí4Ɔä[aÒÏ'ßþ9ƒ~WÄÏ#Hw›Pxª1ïª\Ë ¨±çq5¢•‰À bùé ]{ËUL,Tn.ϸkˋо8uƒ¾š»ÏxzøÛÂñšâÃâòZªÓ9·‚Ÿ^s#Î)ª;ÿ^róÂá×hþ{~|¥_~o !)ý²q8îçƒcÂ.,ì¹Ù€° ½¬{ÇéäUF
-k¡äRŠºßÝÔÓ%Ê–¹»¢ÚÅöHŸQÛY ïU?**+)¡çS r´–R8J?¿¥3íÈ3êîïbê ·Êz#èÌVTXò?ÆËä8–[‰¢ÈZÀÀ<¬©¥¼Ð–Ïÿí?È,‘Õ(~*BÁÇf6€œî0 Œˆ]%‹
-€sÜTÐ+xã†]ÅNãxqÕÛÄU‰_…^¾Â/AßÚþù„èŽHI„d4DÁ,DéÆ ™‚œ'[øêi¡4 ռħ4!=õ<)˜¤õ´ ¦ËS‡|í>p[íœEÆ'_ÅÊ},ŽçÀ`9°£±ùcš´/V6û„–…¥ù’E¼¬#)fÊ“žþ“šŽÃxÒ4jo¶/#¦ÒØþîj›µùi¦·óÚI&!C´1ůúq7A*ª„L® ¦Oá7p²ÎÂ!ЛB[IŒ
-Yöà­>Z°C€ÀÈ@bõÂCp
-I°uY¯Î XS݆y>'#MV¶3Täw¤ À¯õ²#`Wö…ìçvµ¯1'A˜Ü TþÜ$0À­=QôhAMQMûø)èÛ›$±fFÜÞxǽ€$7ÀKÍäA4õ ìåaùOÛ­qD°Ý
- +s.öê äh)ò‹3=žCQ …)w<-rlu”¾á€`5AZÒ1ŒÒhK¿êç)ü¢æ¤–h~’ï;x¯?LjšòJðxÕ(­®1ŒL„k“"W&F}‡°à]õŸÑBX@Ñ1ŸV£¨Z«$RÁþpìÊ„»û…ÈÄ"›‚©±‰ 6ÆfðÕºC$»ynJãbW¡iPÓs˜˜;[K›ÅŨ֡ÕЫ¿&ˆ†x]viDgÙ&¹·ã%Hi&Ρ{ÝüËË]”tJ‹ ,­Èz1`ˆˆ7õIâS%…,Ým¾ªXáaÄj|:æÖ…5
-;éF¿éÇ)þ"± "^?Њ“ÑùóJ Ý8s™ûYd› ¨ÒÊÈ0µ ªÛÞ,½S ~cå.ÛÒ‡bÑÑóªŒRø(ÿ‡œ( ð†Û§U
-±Æ£‡ÓDΡžÎIb¸
-+‡óÄ“Õ€*Š€öÃÀçwyMÚŽÏrªá8ú—1Gœ—ø*Eã8~ŠÉLEeÕ€dlFbÔkÊ®¶9ˆBà‡%/ô®‰ñìíŒá´"U^”ÑIó‰ ÔRÀe2¨`me—T ÓÕ7n…OXOó%‚ƒ+óÃÞ¿é6§|€Ø0±¾¦ªS; ‹úCÈòµØ m½_õójm‰”䤣‘~ÃQ2”jÚXx
-êsDXŽŽU¥OÎd 5~ÔÒ&9?v‹ñFI5 ÁZJÈsPÙIAh,¶˜†˜ NwÕ¶ÏAžsTnÔ{‡ÀãüàzH!ý̓«Ùœn¯e׋K°
-„*µ3Óþdz§Rkz÷1¹Kà‚àÙŽÁÆQFšV:"W©=šß°[T†Ðõ›"N†ž%Û‹ƒö‘ëbMû˜€ö‚ƒZwÊf‰™éí-ß“ñ'É&Š“é‘…ª[kd,Ì(<‡ïN[-,ˆÅŽÐû·Âû¡±V‹M:‡ÃaGJ|Á
-0aŒæºê”2óáuÖÛžÌ Ñ°#Ù¢z0NeÜ­Ä *}qÓÊ2'u
-!•½~RPZœ^Üp*sdoºú@Ó´ŽÔ/—˜L›Ü­ªXÀpA‰,{<Oâqo;EÙ)ùk„y…™]|DH£Ÿèàݳ'0….ûM´1>h.y*Ť©‹ÆWKÝ&O¦ËVâN½Ð{PÂx¹ûí¦œç®¯1Ÿ1âAÜÌúÐVœKàqöÙÁ Ž¨°V´/”"ƒƒÖo Ì#šÛUá*õ‚^in¦ä¶PÒs–†\Uè^ “Ú²‰ÇNÞClh
-&\¿Eô·í$:«R;äèQhªK±‹t¡ïò Xµ,h x
-¤4èP¶}¿îwAôŽwáQ¦àó$gá~eSÞv@†oó2 8ú^F"†.Æ‹¤ò4”õ²^Šv¶qÞ4B8ÏQì)i,s/ûI
-âZLÉ—ª%Ž¶dfð|sÚ9èwîa,úð¡`"ØgiðcÈmB?þ:f½¼#íÐ; _õ¸5÷ ãþݯû]Ð Ž«u2|),\_š…±LÀ ìÊœo|9QzŒÛB¾MŽ­ÚÑŸ¨Â"³ ˆŒSeê""gq =²æGåìÎfQ-BcÌj)´bÖØìsëÃÄŒ­êB!°ª³Rv2V R‡»JÌ7¥hŸÏ¡W:°½õé5µ£;Ëò&ÏY ÷<8`>§ê[L&ÿ[…á²]Bï!$,ЧNñ›îA<š¦û9ßs#žSRHÓQ±8ȶڮ¤nÅ‘~ÕºƒmØ9·£ê߀ãEŒÌc«n!vÕ­å§snƒszÍm
-zÀï×݃>ó¦…o+”CÀ¤0¦a5&ŒÝ˜Ð÷µì炨.Õ«û6>„0E½aË8X¬‚$­ÐÖ(—`ü*þÝWAr­¸ÀƒPoºh÷9$Ë@ ÌS;«à€³LRÒ™MzRÓñ­fÙ¾ó9RË(»LôÇrÙ"øWAnËÂìúñV¼]*êÇÇ_ç €á ”jÙ={‰ ï4œë ^Ãî
-YËÚ綟ª{)Jܸ@J˜ZÒ»G¬nØ£+ïÐI%¸Ø˜ŽÅE2Q+S7Qð„aØcÐ QRžM*ÇßB¬›·Vι5üôšÛàœ²zÀ—â¼Lñk…ƒþµQÿþfc´\a-» pÉ=¢¹}ÿsŒ¡°AH‰»¥lo+X@Û¥<µÚ p•w›†¿”¯›Vè€r!AÌW¿^
-DýçTȃ]¶²Õ•}2`,†Á‹ „
-U%whü=Äg ¾H$QR:Ÿ£²äêl_¼Ú÷×D˜ßƒ„cÊ*"QQEƒô{²ê°BÔ@AÙUCæzªì+„žóG`bäXaÞMAÇÿ1^&ÉqÜ@=ï 00'°¦—¾…·äý·~HT°»P–áÔ!ñ§œ[¥Ì*HØæñ­èåé¿ŠHYJ2•F—ÐoF‡È’®„¼]…¡'×þçO¢vß"WdaÉbÜ™„íÉ
-†TJ¹‡Ÿ=1j›=‡»õô*7pÒœR°· ¾#ùYøŽ‘b·ôPñ2 î^‹0úL&ïðAâ{_{ŽË¨%±yÑ[&ÄÐbóœTÐÒÉ&³›gJ7Îe/jØwQ‘ÚMuD1³„sNÒ;ñÖD0’P{ÈI¨¬&«çuk\
-ÄŽ$ÉóG 2>LjÛ휊¶Ç‰xÄx*™ª¤ž(5E ÏëT´
-1ƲJøÞ¸'óÕè^ÂKÞÆÈáÂÎÕ£ŒIë~þu*‚¢¤6ªäÛÉ`…ptþã","fåO"Lðlq(zI“³Cƒü‘”è“?F–\ôàÛ*é3e3v\qSðÇ׈)nYño(de»#s
-RùôŠ­?K|«éh¢rOëd 7Äú¯¤Ãü@@&PôU«ØÖm‡z65ãIí²P¨«³í²©UÔ òô‘×:üÚ…Èœä T")züZ€×¶HQM;*2y"P³[ÑéÕ3ø!ÂEhþ§Eï$üú¦Îõ×ß*Åî5LTyªsáÀ¼åðãû¡g?ŒC¶,•î;ø[í`Þ³¤@¦º·Ž“ƒ>D©×›0•ÊŠ)ó¶'ôVC&µq­BLlÜbg£»¶FÍ A^pñ®Ñi¦aZi¶·z_'}Tù;Þ2Ò6§Á:èk ”¨Ïó¼yUcVQŸ?ÿ:•Ñ ÆÄrÚûu¨¸Ï–ñŠ"9^TYA>ÅUò{sŒÍtž1µ¬@½¯ÌüÅì„Ct' ,ac 7µ²Ö‰²õ‚¥”xÎö·îžf„Û+Öy}êûaÞsºÓ w·ÖÜÀ{ïïß?éß?!Š8§Ø hLÑ<vXîûXƒ£0›+t8L $ôKEðå¾2Â]ŸX˜b]¨êÉm÷ÉÁN"l[Mg·éIˆg“|õ£Ù0Úž4+X;¯”y_œ„i0ŸCø¤qž°Öüt©ô¡Na¿y×$IÄT¹0+¬7~Ó†£çK™ÇŠº”ð%Ù)»ÙĹ}¨îÖî[ÑËÃ=1òEÞeÀJW“1e—;ˆà±Õˆ=»šÑŒ"Ø·µãËy£^ÆoÎ?VA¢¹pA´ÂF$Þèë$="ܺú}ž8hä}.yƒÅqƇ07¿†¤À ÅG8×Æ(=ÁwàñìшâlÝÖN`½ýÜñ}?1 CÏ`U™~1¦*@‰âƒ({„1ÇpÆ܈wŸUÃÎVØ ÊùUÃMñ!$¾h:ú¥ÈþýP4“#žÖcŽëHQ€ÒðúÂ;~¦ˆÈ~æ XHNÈ5Ð0WÆ}h°"8§_¤ ƒµ²÷'s‘fĽŽ2‡iš’H°Epä¯J´E€XŸÔñ´ŽiˆC
-KËÇÓ¨$N¸vy¸EEp
-G£€Æ~mõ^”¸b‚–eoNÓ¹À“@èxáè§álÈõmeÒC1Äæ½ð™3vÛP':¥ëH-] íœä„‰%VŸ¡Ð×ÕL=ÚÓ2z(N/wÙ‡)eâuG:Ž‡ÇÜBIÅ<9 _úNëÈ?¤·‘ö¼ÁTÉ‹rW7-:Ç¥QÞæïÍÛ¦FÊúä\¢i ù
-ú¿·y-™º¨Üлs@?`ëõÑJ@¸ïä÷ÁåÁœ„{–Lf—.k ?
-6®!¢µ©qÉ%8ÈÆÉ¡£å­E0‡ãò#[%Sè8‘}+ZÁÄñWu?ÒŒ—K®œ¹ …W=Üq.$ê= ÜCO³‚FÏÜÃì?ß©²]¥Š rÍÒ/‘‡ç‰çŒûo%6áD! LWk±LRílÀó°´U[]\íüÅLÒ-ýÅDkSL,Ó¶%t͘“ÅNåÜc™*^•SœÃ¿ ô"‹vî˜g›Ê^„ÁÇ—~.2Ù¤ŠË”ó%†q±7=JH@n%ýÁßÄ}ñ!˜²H;HÝ{DcNó« UÍ0i0OL]•LIîA×D¤9IÌ’ ð.X 4¯<—kÏë94y7Ëi¦(é"ÿ.ˆ‡ªhõÑûVG¤E'ʉE`ºßU¥6fK*‹´ˆ£ $ÈÏA€‹š:s4X©‚MÒi-×ܱ,9]À÷%d…˜`U«õRô-ŠÕ†£…t/T¸(ëÙ:»›èy)eÜG)M8(J°ÆâË™£9™±Aø6Ô—&›è‹þ@#½[rð[ w·7óü©$ ÃŠL1µå·ç ùeV·aã06­œÅƒgè<\8Ì ­‹L¸Âzl8¾£.;t_‡wIÿŠºI
-èÞÁkÍ-~èc¸ÖÒ$Ùëÿýt#Š¶zÊé™/Wײku»Í8‰Å÷ó³rfQùN’’&»;2f!s”ãV³àdÒkškëçõ@ïÙóø
-šŽ
-…;y}ü©Òú™¹ïG ŽùѤlÀ¢ŸbJ»íŠb÷Ò±hî òŠ…/8r  a˜‘Ö+Í(‰Æ™”ã' ÏÈv ñc b& “¥GzHüÑs?¦†•‘ð³«Ì+Ž×úÉÝ`þ÷XÅk¾¾©ù)ï|‹"8rØ‚LÏr`à~ «±Tk
-ÞóˆcÀF5°—HÁ•UÚÃÜò–¼æp® ž".4ZÌ“îu9œ]›`˜Î»Aýjà"²t°at•ÝQù¢¹ ¹.öѼ©w̃ÀÊ4Ô€$/á-ñ
-Üë 6Jj*<†©'„n^ðp•Å—€
-¡ÛùÃÎ:¬³å?Õ]³ì½ÖlÓ¼ÁÖ €j0lK<Å.Ž*’貊wÏ…qbsˆs8ô¾˜+Á§I8wl/„1w/ôþÊ€¿bÒpàd.žüy>áÖ8V6©À&\:OOé æþÎüÀ@¥Cý]‘zÒ; ÆAo=Þ3õšß%
-Pd‰›[/ŠX¾‘Ø„¾Ï©Ið…<A¾@µK˜KOM
-ÇÖq-áfbqQù¥¦£8GïÌçåOEô V;Q›1Ђƒ2qñð ™[^Û(‘;SÑr¡§gÛN©¨¯ótûDbIM^>ŽÐ‘Ö˜U2Y® 㱟ý<LJDÛècžXÅóîŸPQd=YÁI×cà]^Ni²yÑTPdÓä,ýM`'Q”[ýS³¯A'rJ1o˜à[ew¼„ÆÒ•Jošµ6à,Í|;ºì!–*ËÖ‘€
-eü§ùš¿q~iò/‚Ážµ¼ÁTÝ’A"ü¤ýì^ÁÂ[ËÕƒ,Q 64M¼&(÷N7J y(ƒ¡`ªú9ÚgºÜ‡ ïüœ4KßÁý7/ T‰R^—’ø”ÒDȧÊýuOY-¯vnÃÂ\ä‡mû)Á_W@ £5 G^0΄Ò~(å©ÄeÚœ‡»›×1V^ˆŽ“;?\ö@
-Ò¼„72s•0O7†ž˜Þ¼•ÄÓ±³¨X ßÃ
-ËŸkÜ¥q¹ñH;iœ…‡€ÿ°ýsÎ!sÀ4Ë£Çr°8LXãáU1Žƒ߇cKÙ«
-+A:Šx`Dñ§Ü1
-gÉÌÀD–ýS¿ò×Gþ¢´Î5Á}\xîŸ7E‚ i
-ÉmèñÔüE2T/%1°Q˜ ~?§ïMÆôÕÐ-nS•½¤zö"+ȉÛÁM¨<œõy€Þ€
-žÜ[|ª/I«»w¡¨ãQaSt½üv2ɤ«v>ëóRDǬ³Œò
-O°e °<òýìOzã6ʧ:‚Ž&%›¤Ùå%†¥™ òy#V°ðb,0Zq 
-k“[ÃBA¼¼¯G“:ÄîóÇU½¤F³
-£H;Ñ¡øR4>·©Þá°.wFü‰eSÛýZô-ÚcéR‹ú¥h·¯þ€«sD)HÒÍ^2tL76íÝ`íSŽŽõ§(€FWð+ÊKNt”Ð, ¦Í€ÙΚt1eA—F•åZˆwß?õ\„(T™1´ Ä9ä:ãQd–˜^ˆÀ³d‚½D <dë™'4d%’ñ)œSyÎÁÙN û–f4‡Ïâ‰Ð©|Gà¯üå»÷)~+c«ƒ_±Ø:ȯ~0¿}Mã þB
-.C‘7`F3Š°W§—ðTÚ•±³Ÿ$7TzøkØdJ¼ôÛæû–,ó»/eB—Éͯ|§)†´ °* ¼¡;ƒQºòŽ6MXh"ûâm¤9ÿ£¼L’+Éq z‚ºC@ÆyXk›·è­tÿm?'ÁŸR¢RYf¹¨oÉ
-ƒÐöÄZº%¤?<»Ü5Î=ñ´VÇ §èÃ-ºóuž¼h íÉÉ><…,^Å3žÞPA²ÖiœO'@V­PM'±Å‰¥E!Z²— Ç mK6ü€¦A}ó,ø­;™ÌU¬Š»;Wõ(aÂ)õƘCŠˆ­n”!ë+ü¼vs(^î¤âPÈzV¯h+r¦uˆã”Lؼ-V2ÿÊ>BšeiÁü,ç*™F
-AÝ ñ¸¸¸dÍ
-ÐÃ%’;‚B$‘=ÏLç&À+ÃÁùí_o—÷¾»ãò€Æ{†’¸/–ÝÈ è_ 1Ú—ÓT~b¯ ýÀñ0FsJìÓ‰‘°˜žÓ?'¼Íئ1Í¢%ô(Å21i—h¼yàó‚œ[ðNU̶®
-P¦ˆ@gý›Ó –¾â>Æ
-]’·Ùyˆµªb+Þ¯>”ÜCÒ­ÈÃ{y#KYÿ¦è¾ƒÎu?(ºð‚¿^—¢Å1+ 4´wù¿“¼¾úÃO·ˆX…µI)©I&½É€a9Û…Ç®BÕ€ø·]åU™±’³óÿÛ75ZZŒÐ1ö%‰ò2à”ȳI“æðvq•€É 8ò“]…Yä¼°ø[ß°Óô_ñç5_Ü*! 42^¡?
-MqøÄß:kñ¹G†‚¨E±¿;š–N@ENbk„:Ú _íÅ/|`0Ç>Å",T(:¤Œ<›¦m°5IÒæ4”‘\¼ëY0An@@IæÂ/áÎA:
-ð²ý¬šÂrá\¦üºK²ñ6áè6Ʀ@¼ÅÐ%ƒ"‹jàb+ø—OìäÔwÿТ‰{žNÑÅ‘øÌñ³¢Ž…#Ìtq)Bñx+èÓ¡©AêÂ4•cÂù"K—c²‰ІI¨î³ckH®3ÎñL;†
-ø1Í]‚M²ÑÁdÛ¦¤­ÂĦ.ÿ]2|ç4à §åo«Ã¿ÆA@‹B'-³ìX>±R¥=÷VÔ·!«ZÝo]:Ÿ5N§èÃúÖiù”ÿ¾QÞP$’WösN¯/®jq—pQ Q‚“ÌQ(9☣y¥
-'GiKÇu
-¾ZÅE2ÄZžHšqL"@(¥?ua¡Ó‚n¼t1–]’y Râ<z€Um2ÚÐU>Wôø¢ÉìçùtÚÀË“îs˜·hMGà 7Ø
-*o3¥ªdçé÷wp5â>óSd"ëmi“¥RX4h²Ý†¿à²ð/ÏWTEe
-Vfžjci;ˆϱty·Ï 柡ÅiCr!°<ôÆ25ó'«¾0ãÀä¦ÄÙ=:‰?$e§NJ›}äÍ|ÜH• 3<×Ò5eIëCé8„^ÄO(M:×¹A×zò7^1ÉÁ*“™;aö‡q¢3¥Í¡ïÂ@WœwNû;æ-~ú,4CDvŸº*ÂHX%$s t=æ¡|Ô+ä|Ð߸‚%š¿†TèvHaÚ+z„ºK9ù-›WLÄŽªÈNšèFò—™½u¤bç¨ÆeHܸýòúðváÜf9S¦ûp" 묘ÿT2Gí]ä6ü nT7©€S̪±§3•èÜ©ñé;XRÅ&zc·‘p2ñ½òR2Y1\ „
-¡ä'¥œ}MFskÒ X}f6"˜­9Øi3¶§W_¹šÖåêäÚ“n7î,³p¼þ6þ ›Îq?
-Š'îAêJzQ~>Æpv×þåƒ83i‰Ê|z7ÍYHµäî± $†ŒV®NLêC©Ÿïêð*šÜ’6Nè 2G‘=ê<=c@¤^¨t2m‚NŠm+CÇÇpZMPnμ«ìäÕ»[÷w®žß·¹fÇ{Õ5ƒwuœq¯±ùÖ«ß?¡6Ã*¡YAnÖ“a¾}îaÉËzmf¡ûµüŽÐ…ͳ¨TI Ã’²Õ(6’cçã'û~\çÞ,l¨e®'B“OYð$¼ÓºÁqX¦¶X7$z¿Â¦fŒÑwNô©3§Åüìߦ³áŽ*<èáQãƒ3
-<žæßÔ†j¶Þ4Bc˽ˆÅÈŲS
-&ípäHÄ^F–HÔƒ¿çA¿†^ÏÖY™c¼e20qCHt¬~”¬gÖË©R`·ÚŒ¸@×&³.]v8@‹êAû
-ÚPeŸ  ¡£m¹Ô¶+4²•{­¤JžÊ¸ ‘°  ÐYq“\‡…Ì‚1t|#œ2w/\¡ñcDù†1Ô˜›±Õ¤dй¡AP¥Ü
-¡·6bGå,*iòâÓw¸ÌŠÀñåÅ“4‰¼e˜±!Q4c´²I ^!9™ñ¥“L`⥭*Oû’±™ µT:c>KújZ²xĆ jß#F\¬¤MËÖ“wŒ×ïÌäëòXöSÐû>BQcrü‚¦®AÉOL”ô¼çôÀäøÁ-ILÇ‘ã
-éI«Ÿ€é‰7xAz"rZm-õèÊý¢ªXì|ƒ`[ê ÅHí‰ÇÈëFBgãÃ2xlà ÇèÇ@°üζšˆ½ó8±ANNïQžè39aǃÄ\™£è3™VTv m”Ó£éjèÕa"ñˆÊÍdºŽiIsCÊOßimè•|ò™WÏÇRÕôDåøð—s '½S™IƯ¹/²2}*ÉT®Ò—/×ô /e¥SùÇ Ìcéwבˆ©´XŽ] KͪË"4 œ‰l£e´ …€D5Ù,O(½!:4)Í áfš
-apâ¢aìê-rŒ)[ÌÓ
-Û™|N‰lƒ]í<¼k•A×ëØŸ‘BáG'†3쨬ÖÌH)pÏÜèuô@ú=
-þ†¬,ñÚe¾. BŸËü˜Ã÷$Éú‹š©Ôe>¶ß"D,„‡v&½±—²/Ó×C‘T› èJ<bC
-äIœ¾þý
-Q2jæw¼@4†U„©ÅØöÏâ>´‚–šG¶>‚Ê@ÿ÷a‹}IQμQu¤aMŽ$â05'Ç ô¢HÇùÿ¹Î új±Ÿ?ñá½sM&Z©J7S9Ö.è‡jYýó
-gbe£€h¯ù™ÔÃ ÍÑ@R
-é±b„
-ž-r˦Ý0EÍq…Ý}¸P§ÇãFj'u¤I3ñ v; ]>®7ýË-ò¼åy&Ñ™8ù2Cm…=Ø»”ñ'mÍ(‚ìÏÎ˼nÁ–0n׸U AÒïÜdH«yXèþy¬ëØ
-ÑXÊ=õt I¬Æ™a? Sç“D‰¥‡?Ÿ×1õ[/˜s›F£Ö’@w ÈÉáx=‹”™íài„4tý )iáá#É#’‡Â‘-‘ÎVÛîPfóÝrß‘2«K,%È~JO2l;Ã)lurY±öŒ£}ZG'ë¬=]:)å4n¸'.m­Cb¥½BqÍ­T;g¡Nf4²HјÇ÷êlÆíbaά#[®¬Uã»™þPcfB£èUŠj?¾•raŽKS=®Ãíæ‘rÍ)/H—;Pó¶=B–hL‹YÑÞ]«>‚´$Þ]2f¦É­äITÐ9ñèô‘Äà =wD‹+¥÷}ª8=ƒ÷ˆö56ê¢ß«6@{ܲöâ¨KLKMBí7BréNã¬Û3b‰ÉÀD¬Ò16ú³£UP/ËxŽUŽƒ·&€£ù@¶D–ÒtÝ:jíYÏ«uÓ!¨¶"Yr¼=F<&µ;õ :ö’„A DˆÊðRã{Ç_·ÞúV»2ày¾°Œôñ$[µÕ=iùlëH•bÑvÖé|#êpRjg8“I %…XcÒ°“–­>€˜ š0 ^-!êá4¬bD˜'wsÕ§[} ™-
-éjËÄîטôLÌ5 †Àè!ù)ý-ñ€ù:×Þž|&Ý¢G¶½éÅëéñ‰®Ó!²1½Iý©[ÉDø}Ë·ºëÕ0É_$íÊVË4[ê…– ÙÊÊ?ÜÂÌíÏëD…J÷h™°Á©ìašòì4!§Êšœ/ïrLQ_©Ži*QÍО­=.ÑÄš`‰Äã!Kü>Y
-4 Çå%ÍÚQÛ€`ùG®ÛhQ Ó*ã*ñýTŸ>M×::wÚA”‡­‹~Žêp9ÉmÛÚ¾vžµ³Ž›]Û-°:{»ÍfŸÎ+öí› fK¶Òe×qÎéTP+o ª³uÎÐddæ{¶d¯ZK= ³uz}pìZί­³§Yç²Ì‹ÖjP]a›³™=Áóš!uã#®Œõ{—^fâøÚ<|ÑÇg²àµé=fm@$4ÔZïÑ‹%HÂ=Z»wÒ\- L4#ŒpøØæmæ\1†-ý>!žu¬NpÌKKÁ%9¥L:YÓúÜ¥uîÖ)K§Ž¶Ÿ´ÆBÕ䇵ܭ“{ùàv•Œ²mwëDà‰‹~³í¾amö^S^ç\z¿­Ã+vPrL[X¡ Ò“Ö¦W®?tÓ ÜÞÖ dÓŽ<&lëìÒy<òù95í$°´8‡º·"+ëÅx½Ê@B]%(Xø(·@$̪~VQk3%Òñín¥¡M„¯Þj ¹sy'¸Ïå![]¹{\Ê~L.mµÇº½MA—5 þ8·kÐö"õèkÞª†ívÿJ»iÛ7ò,ë9ųy—d«c«c•=µkÔ·ÌkãÄ­tEºR“\hîhÒŒâ‘66Äç-‹QiÝ–ëGÌTEEù‹l'³Ó<JQ¼xV¾¹Ý‡q1”ßãÆ&Ï;•Y`ÚA'ëûhÖX–®Cf¬po¹g3ÊÛµvz¡–b^HºMõÕÒÌ’?ψ›nÔ.ɯµã+«Ä*\|Çþ¾J®hQ<Qžˆ-7Ú®¼=ßÝÞ•Š<örñÚ³2Láæá""“C}á¿Œ—Kr$7 D¯¢LÿäZ^ö-fkßë—P’ºÙ/vÈh²$òƒ·ì-f-»É*sÖXöRÛq}ü¥—5oèÂæÉ úX`¦¸PÈm»T$w‡£ò1ôÔ°Åær¨
-ˆêXn¨x°¤‚‰•åÛ€Ýbˆ–aèë%£ÁUw‰ò•œ£² Z»Ç„mä‡ý…Eû%xá0lœZò|pQ+mR8ôK%F~e#纭àËýãdÎ[XÁé„ ucj¤Âtô”¯_5á±2¢P{´’ Äᙓ<#y
-âºS“¢¢n%4;×Â_P3ÇG»0
-%ß!$PDŽ$î’G:†„—T`eiD¸o,Ó˜Rœyùèùi#“wí¦ñKŒi=oò¢íçe†³±Ù‰~Ô|»W J¶’•”´s Û)G ï€þW-ÂQòQñ!ì
-„:—ƒÃ’Zm¸ÃÅGÌmÓëôW%±6RÚ±|úUÀ¹u¸$9Ai5 È8yÖ(J'œ|ä_y
- ÊG3œ1ø,ŸšÊ|5—»‚ Ʋ³·ð
-
-y‰Ë†øT9–o)ÒUP3¶‡`gz›Ìì`ËŠŠ²GvôÁö"3jòOíP³+Äë$"8ÔK
-ÊXÒàˆ²ˆì1§Œî¯âã~‰®¾ÅBëóK$) £Ä¨hDÈÊÿH¬ÏjBP!/†9I©Gl÷TÖuÕ-BXAÛ`mùá³ç7%?"íç›ïA1È€‰¸!ÖÊ.¦ôÂ(øº_ý2Œ÷0з;÷~#;ß³ðOLJš™ÒèTGÎç$:FT‘%ß‚`ÒZ¦]"úkHým­Á_†;jî“OÐƱ3žNÛƒ
-Hèd°³Ú‡êãFú×UaðçìË>„&#šaÇtÙ7x˜ûr)R\;«d+AYÇ ”y ·À—ུýû‰UŠø–§`1[ó]ÇÂá!ÖX¾ÇÚNÀ™Nt&iÚ0Ò¡$(ŒǪ˚ŠVĆ"ˆ¬Ôr=Éo²™%í&ºóŒäU!µ¼Iµèé"è\í“ÏŠ=YŠw'W+Ÿ72Ëœ®ùîŽÀINæ%jñ~Äð…Bòßr¿Âovt캯*ÀˆXnkøXr%›Ã»üZ!$¹y‚”Ù2$ÈkÞÆh°ÂþêŽ'«>ÝÒÖ%¦§¢¿½ˆø 8bξ†œ[ÕõþnŒ¾|G—2t1r†Øý“a÷Ä`pXëfT¢ÒÚ„cÖuœ“C°‹…€¶|òdªOÚwòÝ B©
-H‰Œ—Mrc7 „O;èQ‘ ëÉrn1UY9÷ßæÃ#¨ÄöS*3^Ø*ˆÄO£»ùø]{{úœ½¯&¡ßø]ža}Y+Öx|úùÛŸ„™ó©ÑFŒ ¬ù“Me™v·Ç_Ϧ¡Ë;±=ƒÖ3ÄÜmØ´¹WÈh">½­¥;Ä[‡Î1#vˆšÙðæb³BºúRm}qù¯}Õ²>VwéÍo‚®èÝc(Yžs8Ò¨l´ÈlV{f2±„z|WÕHÌ]— “ë*‚ºD§i"Uº(ùgwÙçt®¦]½Ï!±thÓéêŽ÷.$lk‡¨ô9ZÚ3ÎMÒøc„qð2Îè"áCúã>d­n¦Ö‚Zß\å¢ÎImÊãÇî_&ܧx¿ûV4:Ñ9ÃÞ-æ9e3­ëÖ¾ÂhN̤mRqÕeÑG'ŸXvñ&f¸†™0‘¦{ &JBô½[µy„0 ™rfþ9ã ‘B'ÔÂv¤‰ˆÃo‚6’Aʺç¦A8 晃ȅ0 7Tu™jæÃeí.çpÀ “.()üçš3¨ž>¾ërnhšìš¾EÂE;ýJÉž¤¸¢ñEZvFÑgcýhÜ7AÿgÛ‹ôi­Ï\ÓØIMª ˆRÖ&}²”F«s©o‚®÷©.ÞÇëœ 4ÃWÛûCH8Û’­ªŸn¨[²æjσu‘¬ë£Šµè6?uO~ƒ=i ¶B¤GÎ}€¬aKàY½ÕòÐ2e¿ÍuÝ}TP.Ú¸öe={¬
-ÃÌ
-õh§é<ì™7Û)ì½®R¡Öº\&^ds…4¨<aâ/ öª1[BžùäwØ]uD¥kæìd®J+‚ŸOº þZòóÒ>â‚;\¼Ï¡/‹ C‡ÔÀ!ŒFß'¯þ†Îûª¢Z¦Ûdr½œ›Œkøa³tOÓ¯Ôìâû¼šÝFë|ÜÜDÄÅï €±P«ÇÁ¹b;ˆš6$¢R<HMpŠØôÚ= f%iQW9“cúh] ýl e[ÍdO!W}ÎBOשS(ÜÙò3ÍIvB;ö9ëRLxaÂÂܼb;d\?¤M5ð JºrGÀ†ã 4oñœ{;²Bu| ÔZ†‹9ax;É€f@Ì0Ö ¦à¢SS‹p9•Å¹ha.
-íà›t‘bÓhêBý8ÒYú¡ÿy Rht.õÀÔ ÿç¦é¥§ÅûHôLÖ{9õÚz )Ö’'’(aMRzü¡ú±õ Š!9ò`C½è"™Œ­a‚[ΈY©±ììEYS7l"r•ÎጓýœípÁš]
-¬¤¤Ì:ð'ó» ľÆe¿î)— ¥O–ö>S±±´ºJg=8É¢c§Ë4+×|–TSú¢ ¸5°_µŸ v¶ñôæ‹ûgœP¦ÐÃæzR ÿ@7UÝ=56rðVhëX2"iFqŠ¢âŠ¹1YGiFRKö”Ž†¤šÃO>ß÷á Žó} cC¦¶¦WHB€Ž¿ÚÄåpÁ|íºã—DÕê]´ŸJÏTç CÈ.`®”™4¦9ËX§*kh
-Ë'Eþ´3’þsriæ`(®‚Ø2<{ÏÄr².à0JŽÒ-ZDÉ ¦-¥:^b„:¤ zŽùnin} †[ +væÞN’ ¾xå2–'ÍoD8¥0
-©ƒ\*/û
-Âuï× ÊÃŒB¾8öoòðݱ'•®K1;'›|ÑòÂá‰=át—7¯‚xåæƒÇá¾Yž4<ö1Ü€MdÃÚ1 ”y c†€ú‹ñ;O«y‚ÒEÈ’£÷ï1%‹ÊÉT
-m—)èàOèŽA.|^¬FaA‰ù&<+“Œ#iñdÝ¿:‰Y‰êô­~Þ·¨4Ï
-a:š*ö¸.££8„î²ÙíG3
-íèfò H.kÆS¤QAZY[’=m?´[Ý‘”û=R)Ç ·1g±²oÀ†ŒüÐëyŠ}çß:ÎUÀ<r]ç(¿™¬ƒæ
-Ä#û^¡i¬ñL5ªýJãÒOȧS¾Â§®âÀ”J˃÷@Á)È)—ÐdU¸û´©÷¨øOl%
-ÛF!è@tÙZ$qVÆ$,Æ ýb²òAçýPwö(€~£ÚÈ.ÑhVìP.ÖŸiq,æùMÈ'•øñ&L|…lüÁX®6VoÊ!…©€ÞY—é‚}ÐkóF'6~Pd+eï¤$gß\ü÷ç(â’vŒ¯£6×{!½Bx‰€Š¯Ò©‚µ ˜öU¼×؇ċÍS:ý¾¼îs²*¬ Ë=ÏÃk¨FÔ
-Iÿ !Ž£Ù¾‹ ±h¯«ðQH-B{ÜO ÒeÈ}UÊ3Ù _fµšÏ <̶'Rø; %Ž;*„kòч¾¨Ÿ~+AÉ!°
-ªZ³ÊgCz«#¹:L…ñâƒpK¸¿ )ì°Ç‹Û€Üº úYA”ŠÆ}cÝ JjI¢kç€Í] (E«¬â‹Ÿ/N8O:P!ž§ß„ü:|‰ê¤ïµõîãiÆA~ëî³…‰ÀÖñÄ|óJHVÀÒ!ŒÐþëõÃ|Óeýµø‰…yzjäva&ýMy™$Wrä@ô*uZÌÃZ[Þ¢¶äý·züªŸi¢º­ej̘
-
-fV NRTÿ«©Aéq_”jüŸ›±]£òòÄ\Ʋ*• S#gºO#¨Ý ¦ñPÑõÍ‚¬ÓKØN Ñi¹5TGÞŸabáz0fºöño$ºÎ_?x¬?\”Hª
-§T>ñ…:ûW¤œ>í ¤Y酻ߟÌcÕör¯SÉÊdŒø¿ŸSçDB@ëâÌL`J Ñ^³~ÙÏÄ(“bX¥5v %ΚKÉî5_Vƒ%G™Ë´!yɪýøæ ô,‚côS|(ѹhÐùO[¼)Õðœ} «¯´\NIÍf&ÁÌSá]!\ɲŽ9l¬ø&­;AðO2ÁDš¬ˆwJeJ •R¢®È-í‘Q‘
-Aû&°jWÌõ¡/ò¿”vI”ÊòL.‘o
-´3ÈF©>³y&ÙCÉeK]Q6"µE%$™rFÙÿz­¿P–78Ã1µ'”åM¢(­ó̲l£½22Ë‘e3ȉIO¿–¥HFΨ²‡3ËRÂcÑêbªS
-\Y˜¿àÎ$«ùeÀÉd%ö'’ [ I =õ3ɆÕ7â%ï(K‡a³“ðjy@Ù°Fj’Ú<£lÀVÀb•Î(K§#n½€“Ó¿rCÙˆ‘C¨(ä9àŠ²Q-ÉóŒ²W8¢,AG '±8ÕÜP–¹Šœ¤’g”e-IFjãe9Ԕμ¾Òe¹ÂOOSÍtfY~ágÁw9êÜa³lFAvnš™qøÖ¾wQ Hƒ $—¢£¨K!¬é²Pñ]ä–kØEd7¤“váZòSQåë˜7Àm?-W )<*w9Ž·åe„$*ïh9‚–ø–Q¢p+B`QQ5Z.J‚6‘#XõùãîW€ðÖB5Í{‘Ô–Ó§ói±±r­‚ãCÑ×O^îs?0-'ïŒÀ8å½ï]”ÀZ‚ë“D{Iuh=Í5%4ßäbî#‰9ìÖ¬„Aïš·\ô[¬'ﱦyɺIÈÉfŽáXpB´•`tm‘Ëž¤êTQ—°2›ôµÒµ3ˆ
-ä}¥ëf:›XNô÷p¦ŽýB<rí¾ÔínÞžâ|ü$Þ$¨Žé×ù¥ÞJl©€ýó?6éE¿×%þ»„¡/IáÒ§•m€ ¼C_†0ÏÌ+Ï7 ?›úŒ] HQ±ëóë‹ÜI ñþÉ…)Ž| IŽò\Þ¹„U˜7E‡òZéZ£mx*³â+]7óæçC½9†ßßõr®z¸â‹­üçPmqM +=ˆ&Ò2<f¬Y }üÇñcô`yI¹ÔÐsrK ÂcÒ‡H. '6ýQ–0V”\@ÿñÊy‡"®:Å™Ú0Ód-ä‘ÝôXDH™V%–Æ¥Q*â‡øšèôÂÕn±‰¬SI$ñ—³ÝÍwUA®)Æ{Åï½æ×ÃW2Pš§lß×Í
-‚°Ä]RDÜYœëm˜q²^JëU÷wˆ|PUõä…_¾’¬R9N©NUÄ&ˆèkJá&È É¶Ÿ JúAíý+ƒ糸Ì>9DÝ—15‡Ž·šU¸pT¤Úïo$i\gÓ®€PqøµÃÛB•ëŒMJmE|”aã†Û2
-Ò%#mÙ‘OpÑmk²NbÂ"ζïº*Ü vM°"5=€"¡°~®Ànä>׃MÔ2ï¢_J'‹b]:„¸UÁ„³6Ô¶ßb®Ü907°i7YUÀåHÀ¶3dï€/õÂðꥡµWGõª€™N-Vb7uó´Ð =#ÚêB37-À©‡6µ,\@ìxóæûeúˆ³ÕY53“]êœúAwƒêU´¾KïÉ4’òk)äÎq±úK,Ç„¾'NMK
-
-V")¡ÇlÏÄHíÄCÉïÝ6U"È÷[RQ.fŸã[Ot‘
-lÑ>E¢4¶ðw•ù6×ç¡U¹¾!µß+udjceZÙ.‡´É¸ùýê~Í'¦4ì©
-ß…AøËì%ô§ ì˜5m¬ìm48—¾9}y²St÷Îç 4i—geŸ Ve|ØPiçýpt4Ë‘Æú.Á©¤ ÿR^.Érå6ÝŠV  ~ÇíaïBSiÿSŸ$Ûªz,¹áA»„ÇK‰üXƒ
-£É<KN¡¡]UPv¬ˆ†¥Ð™¹÷¨ÀÎhcN ìJ G×q)ñO©?Â;Zñé`\,á×K|Š¸1 Eì¯&­iô"{ ¦úúPH T”dÿÎvÞâ Èô¸H´–ìÛô’ú* ¯ÅîµJÏó„ ê³QŠ®ù–OÇÄ•5‹_ N«Žf-ßÂF¼ª/ñ*–Þ'±òœÃ£h…c§jaE¥)h ‘ Ye}=°£weÜ/?:6éZÒ;‹ð–`j'[)#’EöÉ·­«)†žÔJ̤!~\¦{ÑN•d=Îò/ÉÕ½½F¶Ð’H²Å¬ï ks­OrÝ•«ºþ|„Oa7Ð"^æWÆ
-¶p®w£1p͸ ·wb¶.róVpG­5“9lI@©­ˆrù»,bR6™þ)Q¶¥À:›
-S ¶Î¨Ÿ³^¢£ÃpaàåJksP«Gô•PѼH'o‡@³?ŸÙ0-dU4s/y‘ˆ¿>ÜGèE[ }ŠcÁê°@ô¨Qp•:ýcÄT:q/8ð©0#¥~•¦!û§qþýœŒŸ¥ˆÅX󉲤0$¿uJºäÞ 7Oܾ‚¤@´Áªa(B¯Q`Oå=§`aÐ ™™`1J\ ÎÕvJ´Y'ÓXét$•ýçS†%åQx´Hiˆ¬ZEhñ 7,|#ŒX-Vf¢O3_š‡úpö<«—²mFû^‘J—Y¼õlÍ…Tæñ€ºöÞ0ni:ìµÁ—|)qˤ×ëõ{Ñß^Ä6²Onªn®Ý6­à/`ñðÛ
-{µÀÜYZŽI7“ü#¨Ð6v`~<E®<§•ï¾ž"5eÒ Ñ?åUl•——9Q
-(eí躛M÷ï Ê\|öIcdw)j Là¼JXkÂY‘ñ-ÿ¢…2КÇÁ›¼)¥û}&’ñÎÝ.ç¢$}ø§¶(GîÕ½ƒPÏ@¥fh:,²BìÜ<%2H­\³£u OÄB0ǧØjhÃÓãéP*ô‰L?‡F´ª¸©ˆí Œ´ß¦÷!k€y*¡¢ú{Ø„ŸbEûàÙ«èh€Åöí@äjá§ûèJ^0úãS¥ŠLéæ{~±)%)vˆùѧ>¾Ý'ÿfÂ(‘ë|JŒ•”I4Åç[”)Œ@[$É}¹äÄ’ €ý^é<h6xçëc~,Ì•¼4£åÜ*ÓZVÔÀ´ ¥?ës¯‘2$ÁÓ÷'+Ã抢Ï÷‹ëÐ6v¨ƒ–Ð!ùfùÎLD£$ŸâF⋬Œh–³±O²"I­Ðf”â*+”Lµƒ€5³?kqê"yŠÈa&Œ £ª,G<
-¹À1±Õ¥2óô0$dÃ=Vôœ£øÂËtíÌÑåÍ3¿ß½KXeú÷xšÄMW4âS…Å`—ñ5q ¶kŽÉâ2`Ùc ½b/ªÉŠ(]CÁ¤Ä‚‘WÒˆŸ'a’Ô´‡ÙePøBàˆÖ4öÛ<]x›ÐØI¤·´[è¸ÎÁM+ˆ"/ŒXî½Ñ2´R±·:"h->£<„톔{o©úÿy9ÿúG–ï%‰C B~7¿NÍæ#O\]B–m†çè×!\ü;ôDL›õ”°f:@-îÕ€ì±Õ,ÜYcô´Â ²HgùÄÖ è%Í7«ò«ý?Eš{V”Ÿ§„ñ\kÏÁˆK nç¬D@íåª~kr' =ا‚’Z8PoŸ‚Ïé{“yÑ \t·†&UÐßÊ|ûßÃúžå‰€KÅý=3
-ÀåÅb1ÝËó T@™hã7Ckô”.Sr {=´¯øH'–°á"⺿Wø‡4¹ÛRÂ9ï~2L8Ñ9,3^\—Ed²CÃc6.<ñªF†Ã
-M0¤9®’,ã1Äœ.aÈô–Àp\圡Éɳ€öã×iýî’÷E±¡ïwwsC) ?­©Ä<üŽÝ‡îåÁá¸Gú¶8°3ëáí[Ó„PÝ|(²­ ¦Ô‹¨ð XÌGZò#´¼K˜C”çwþ%`Là†½`UgŠ‘¤ŽVAJí<æfÝiÚæ8¿Ž‡| ë?}‘Œå£|„@Yb½BÞ¡á„u4ôü²6M„<ž®ñZ®17,_ȇ5þù—]ß”´&¸6@7Rƒ8#ÉùåÅÔÀ®pY¹¬ü‡/¶x
-„Ú.ÁÈ2¿¢t&=ñ[v›µ!mßÐi3¤ÕV³£¢a’+ªuyaCÈu†s$x^„ŒÙ­¢ÌmB•˜q£„±ø¥pJVEr´LĪP^ÂyBHËNP‚ã …CîdMu¢2˜¹R…*s<)u jî°YC–]Ò*?î|ÒSÿóåc­ чE0hq߷˯*y$×AžáɬP‘$æúay$&Ú
-~}
-% ØëÆÜkµMÊ{îOɄ›³™ÄÝc« œb9ϸôÿl©á»ÒX–öl)‘7$·9FÑ5ÒM—Uî«Àb†4²ïîquyÁœþ!„(±ü4Ð[ƒíà?д¦@(ÃáÈ;Oï^)DHí%Aô
-Oº§Aˆ% 4Õ Ð –…8ýì"¶W<œÓ>‰‹ÐÜ?¯YXíoÖ·ûˆ7YN@°KÐ)BÒ B:^„@aq€¨Ø8»Ön
-è±î7ÿÄ0é={‘[no>,Z{ àqMâ~¸6\Xu«Æ§mQYÎUÂ<qN ”ºU'Váº\Ÿæ)ïoËp±,º Óî’¬°@†™—A/¬Yð@¹–õ@rÓÅÛƒ7f1eñ¥"a ™Ä&zο‚¯¾Ù%þ¤-Á—$åœãÈú2—5Î]$‰ o¢):rì]Ä£iŠ$þ«­¡ä·a¥6oéT+YD±ðñ´4"u¢rëš9 NëÀù»qhŽç¬ý©Š,°²h÷–ü
-#îÐ`I¤ˆ™4¶çò¦Õ ¡£\&…°
-þ Š°Ó¥éxÈ«ºl%½â¦ø²% JX˜K«D¼Ì Xéy(ÙŸ"q.àY¬~:-ˬ<K3Þn àZLFT—+CJ.ÞÑؽ9vûàtv¡nç¿Â¬Ÿèlz àÁz†:“òOÝ‹èCP¾~cÁ×€AY%ZÛ€Û›ÚªÓ£úq^E”ªWÿ>›cù¼#Ê\ýëÔânŽË@{ð§QÝJp˜,t»‹:Æ¥±®­ìsøTD¾»„u¡ ô¦8D¥áèGõÛðf\pf/pË¿êÄA¼\Ëþt˳È0ø*ÁEibÝ^3ÒÅ´FÕ×?lÕµ|r0¡@3¹‘P:~¿»–'!†MçSѯ}R7Ù2ýHi6 ˜sꊱ>k~þåB¿Ö½‹²-X²!CšÕ !£O!M%øÈ©—\Ç)¤©À_‘"<7ÝCPædþÊï%žCšŠš‚ÿƒ“SHS‰Â^aÚb–{HS ¾!Ê·ÌvNiVƒ¢3#N7h¦4Ud¦Å‹ª¾|HiV‚.Bå8”~NiV4M¬ tÇ”f—‰ [â~ò3¤Yc°ø,`öÝ3šu¸Ëo¢Ç«Œ¦I±X°Ãí;e4•dÖŠñ&ôÒT„‡š °;…4• ÜdQ/Æ8Å4û<´aÎ1ME
-¼]Ç‚ÂNÇTd%Xz
-Šó9¥éÆ&YPÓ짢/ÂSaW §”f%lN©ÈçûÐ?gÅcÆ=¥­å4 ºçSJ³åJ$ÂìÙé#^Ù<ÙT^ÙãÓlƒÕʽÓ'6VxŠi*(ìL`æ9¦ ¥3ͬIÄ6ßÖáä{N³7ãm¦‡Ï{N³"ø¨D5O9ÍJ .£×Ÿrš½
-‘˜ìÐ<ç4›²ÚVîóœÓÖJð.Eµ|Ši¶€˜ÖCÈýÓžKsˆiú®“½áÒÅ3ÄGL³Ë@´è~÷”ñ™Ò ¤äÎtÚ9¥'ihÈõ”Ò–<TNfÆ-ŸRš¢gy#žSÚS)͈T8*’'¿ÍGJS /Œtüù«n)MEöJå˜ì!áÏ”¦
-\k’ÏE!Í*¬ÝGÒ!ÍÄŒ wøkíÔ#£YIÖ‘¢®q
-iKáÖB{ü¶Ÿ!ÍzGA2剎!M5 “GHM?Bš­Ka¼|:›jÞã•Mr H“dôÒŒJŠLÏx<È ³x<aàÒž¼vi†N<jNì`ö1}„4Û\¢’N!í¯NjûD,håRi¢gH‹æÇ‹þ·`yi” ¤ZÞâLÕ)(ÃŽ™Î©(ZÆ óXµvÎV‘_øa
-•§·?…3P¦DÓ^Ï™ÑReÒ¿Ü‚šRˆýåQ ª³TZºZó™Ñ()" !{Å-¢©BŠ
-¨K{‹h‡¢{D£$"—|ˆ•8G´Ç›NíÑ›gD{tøÑ“:E4&>ð8DÂâ9¢Q±)¿Î¹E´(º™¾î~›gDбָàÔ½;·ˆF Í‹’CÏC÷ˆö·ºV/cOÍ;Ž·„Æo}–¬òÐ8k‚:„öÐ…LÛ@VB~ h¹ÎÊgÿEuz¥”ñ°“mº¸¥Ù­)BË°
-ÛDSMT@ýÍDS!71¥Ë¯ËbñXà°JP;-L´ß9¢ÎŒ5J14°1i>^²‚ÂÜEVB,L£ðÑFÂc@O‹™(Áþa°ØÈèA%ôNôƒ[òOI€JFJ¶éŠ©òb–«^%èuÂ`
-·Ûœˆ`Õ¶õ¼Kè'O~šˆYç†$)ÿæÔ±¹¹¸M:hÍÀš}KºŒSÅŒùò%(ÓÁA8ISrjQŒ¦÷|1:¡³éNy+šjrNÌqÓ*OÝŸW RÀœhÉ<äΟ—"Ò*„DRéFCN–=–q-ž VE²)oì|^ù„AV@Ùº9Æ9v™å/;Ì`+(×¾Jè)È
-A‚Cì¢A…mÄ,Š~þeÝ7+´on&ÓÅqÅ…”!)7+ÔošÍLXÎýZç(TÀ•ÊDï5Èwá?lCØq÷²vL.&jøàNEìwÿŸò2G®ë¢è
-´ÆX˜‡Ð%‡L½•32ôþ}.ºñlþ'Ñ
-Tš@÷í;
-þ‚ûÄmÈ
-rOO ­X÷Ið#‹Þ/Šþoj] £ZXU
-vÜH
-Q*Ö»”«¢uAeÆyFÏ¡ä!垎zŠ¹•Y¥hìÛÉ;YQÀSÉ ÎÑî‹ôH $PÝÇ=ä\ÕÐih–Oaïý¦è!çR‚ǤµøðØŽ9÷éΧœ
-1ÂST’.Yþœs…e,ç³Qã˜sµH7 ÜäÜ®üÆø&:/³š€¾xðz'&PP°18˱ÍÚs_j‚!ýoýy•ß¿°îÿ±« À"L—`¬˜–(.߶˜!s/=j_rùXôfEÈŒ”êì~/(I$ tšù²_÷v™¾‡oÇàl ”áþGÔåó̱äCѺ™,‹ÜdoÛíKdºÛ’ ‚4}Fß’Y ¼ ‚BâxQ«p?ò4ŒûOEµBÕ{Â5ÝŸ†f«Ú)7aô—MR?û“–þþ×·ßþ¶¡ó_˜–¡ïj<úôPH,ZD ýjí*¢„Fœ~²¢Â÷³ÎâÀ—UÒE7R¥O”0ÖÉX°ÃÍ+
-º^ªO»䎟1†£„yyÿÄo{NDC^Q¬5%{ÞII`¢•û;Ì`rE,ņ æl,ÌôÛDÀLȘrj S‰/cñó~tÂê
-0l؇Åe"('?—r·Qþj»/ŽU)sA|ÉXcŸ)sÎËpZ›@Ŭâ‚à#±™%(3ØÕeÊ@mx‹ ÊFNàÞŇK!¾R MÖzÙéÙdøŠ÷‚eÀ.DXÂïÀâ%2ì þšþ;6:;AÜêKcV ‡ËLÒƒ ì ËßBîŽ +æïcŽãúQB ÀnFy×—µ5¼š7bØ«ßf­ßÄñ96»8°#y9ÔFÇ&ö™EL…5¨uïjA׉»ÅJˆ +‡5ʾ~4Œ%˵}P 2€
-²Dw±áü±gû ± d‡ÓÆ!›Æ_D:ÉO¨¸afu '–ø«¬´i'°êi¸(%OÜಋ€d² -…2üU„f-¿\jĤß!áiÓœF‚òó=Œkš 8h „=^DÓ»¼”MSÏbûU±@Œx²`Å=J‚H0g&at‚P¿“'6˜RLŠž™
-¹ã„òŒ^‚l%-ä¥D)Òoš £¶}¤³r\Hþp¤Œ˜@ò ®®Y¦ˆÎ•¤VxrRè >4Mz‚f“µöA)pÊNûWô,Sž›/xT¼ •±ºº&"U-pq? ÈAèë<@âÇøfùRì6çó BBtNβJhõ`ôÃj
-CèðkLíÀ'ïV„ežÚ¿|’)2 eñRD³²z&ôÈ‚’„µàYM7¿£“¤`Cx`žù†N¯â†ÈFªýL'‰°¤`L¢ÞÑI¢eœÃ:æy¦“$¿ËôÍ‘›^ågðŽ¼É?Rîò“HȆ¨¹·ˆâo—sI’«€¶ZéwG‰ãaù
-¡U#rl ®ôXß8>ég°)fcv-É>ͲWøT àÚ õãÙ?£^E2p±²rÖÈe´üÛ4ô<ÑF¡ ºèiwÕE#¨r3Óáª(m&ëO—>9•H02ŠežX.Øâ•_FvœØÄ‹U”Qq™}d@q•ša}Ž4C ,*mþfE⶛8w;Œ@ºÃª¦žÝxžŠø¶w,
--‡U~ÿº_a•&¿ÂÖYÄ4÷²~jÓ‡aÌñy,Þv†Q?YhT®2kb8äÁo^àÖ èt+‡WIÏîSN"õ$ÓknŒ"¤³ÊÖÁn¬‰x@[ñÖ –µ{øê*Áü_E]E öà´lf£/6ÃA¦Uò®0 ëÊ úµ ª#ÛŽµº)a›Q[%œjzú|”:„Ò``yÿŽˆ¥fÏçú¿×÷ˈjh
-$âM1ö쿵ÄùTÃÑkP˜‹Âç.yðß;¾E‚ÛIRa‡&æWÑgÁ¤„'bxšöËoà ”(Á:
-†#*výñ¢8FÞýU}E†T-ôîpXSÕ¾“ˆˆUÈhu¢HXet£Ý”<ɘŠÂÊÍ6æùíxŸ§ôæܪ Å©Æ‘ARí‹ÝíC4u¼‚¸¥¤ãسø‡òrI²ë6‚è
-¼5èÀ…¡ƒSM½†gÍ¡÷ï“@á‰ý. Ò¢D‘Õ¿¬ÌSÔ³¥Ð¶JŸ%£"Š÷a˜®ŒGQ55;kÕEȲ̄ ‚pŒ¤ é^¶˜‡ïfA0‡S¤!sL¢”àˆ( b…Є©Ór˵ȟ‚·ž„QJ/¹ùf â,x¼/í äÆç¿Èøç× :« ΃¡iŒ_ë;9ãñ•,‰û;]nh¬v—»¸ÉÄÐû+?A¸¯Ä$Gf@Å…ì¯<jÚvªX`6[Øò˜„ž!a ¬Ò¢÷²ÈëVðK¬é»iš-¥’øJÂ`ˆjûÈË#>”'3v¿@„D 1]v·I,Ç#9§m9Ìu¶yaÇ´#¬—„„ûä­F·T·#gòŠ&•Y¹¥°9W%tÞÿñðm¹`Núa[¢A‘-âÉ+E(
-mlk“ÔW:ÎY’£…íÜ"ǪXfÌi‡
-䉕7k‡’yöLGˆù‡Zçö4ÌeÑJÙi…–Æo[‚ì|3‰C°×”ÖKÈ?²4#ÇzöD>îSk£¡?–vÃg}¨ÊªAM³#­]#fì+:a‰¦*­BÚº7w\Ð"Êk¶”˜áòÑxÝwâ$D„Ãëü°AwcÏ;ïÃséqañ8|Gš½ÒämГ2äÊxóŒôìhüf•ð‹Ä§Á^s™ 8á.}©_Éð'¢ ¥IŽ˜}ÜÙô ÚÀ¢ °t}ÉG¢Mƒ)&’F¬‰–ìC¬é•:¢U'KC¾9n°Àg¼™xLö=ˆ–"ŸÏÄõ™h)±¦6WŸ‰öPò$ÚÇRO¢ \}T û¾í¯žë'¢åÑV’E¿­î›ˆÂ°[ò ÑRQi~qËg¢Mjãî™.àB´Ñω0áüýH´*Aì´DsÙ>ˆv~%4lXuG¢¥$qp¾ ?­JèíÄ)âØoú•h))Ò÷ììçúJ´”°³A[´·¿¼-EÖ1K‹õL´<”ðCëÙ`xv¡ÑûÕ`Â|K´ÛK¿mÀƒRâÛ {;mä€^ƒ½ú•h㇜„Þ èðL´‘6aªà§8ú™h%O¢¥yâ%£ö+Ñ>ös Z½Wk(™OõS‘K£vˆ?¤Hû|÷ÒKÞ‘öTô†´*1û.G¢Uk€¡¦¼Åw¤•å…°¥œï„´2p”Á)ð¨]ò†´èÊÑë¸"mX­•:‡º mø §‰TùÁiÃvD‰<oH>@¾ ÖqDZù)N‘Š"þŒ´”8!m$NÕÚóÞðii-Ìšûe;é;Ò²_™W6Úi9ìÌuÑûvCZÜ€ñ ˆË±¦3Òò ƒë£³ÍÆi• itöoåEýXEL‰A…c8ÛŽIZÈS` ˆðYˆdi»‘m¢‹©åŽõýbÚ~Ÿ©eY5G%ûË-¿2%³Öµîï`MÙq´ù”0QI?²ôU2é€çb{)>cËn¶Î•ƒé<µÙúN/Ü1)†éY^%„W#Ua7B“îcNubSèô²¼€»à“QŽÊýó\’„2ð[¼-õ0TÝ7ÈÄ žl‰½S8¯EÓò„"–z+b†ZAð}0 7°kú§µô*ᨗ«Œ½@ËÜ$}ûyªá•¡< mé÷-2Äð6›°ßÐè¹å74ú¾ÎÕ¡àŒ/ߊf .ŒŽ±¶Ÿ´Tñƒö\V‰^¦ÐCÑÒÎ6„‚àëš%KñƒSj‡ƒÏË© ‘îr¹^s¥ÝéÆÔÒýÁÑ–„ qj¾b?Êä"TÌ»H&¦7²ÅroEŸ¿Óð._`º‚Ù> Õ°6}i#µ*Ú³ÓûœFQƒèˆ é—"Í©¤z7‹·KÈ0ÖM>­­ŸŠÒq’8h¾}Ž³³(~(8`Êañ6ÏR$î$nÉœëÃÀ/ô­–³vU)2™!“!^/ÌéR®6¿qÙ©€¢|.êd÷Ë„{õƒ¨ñ´Üçï<°tðÇ¿™6þõŸüñ_~b;™‡ŽÓ}H#‹zH@˜¡ß$¯/UÙ”óE̓?㥱ˆÒÃMÍ¿ÜÓTó˜ êµL¤ó©1ÑÂ$mmÿP¤Ù/çB‹àe€ tQgÉ6vÔª‰2“â^B—òN„€DÁý4g-«¢¦Ì¡ª%ŒÚ‹ˆ#š3–éxT4¡j*B;$%+š€ÆÞ7ÎbØX¾Ó¦U©ˆ}(ØxcÍ:O½î‘–æý¼jhZôÊ/òÚךªŠ"j•ÔT¡/4\ðRRXø*BNûà"<4`¥M
-õ“ƃÝ«Og@oe8c¢h«„ଊø¸áË
-È OoåûX7qÏâs¶ýîåe!Ñ܋ˆ‰ ËÀ‚ÒÄ„£ÐCê™ú„_ö‚à0¬¶‘ ªŸ•ÎÛà~žM¬"Üoˆ:ÚÕ·Ùt$x4h:#Ú3$÷Jî«„ß‘ï¨%ùR<eÁ+˜c¶|IÁʼnúƒg/<t÷„P_ß©œ†6²òzS˜²Ãm½-¥RâA öŠxÎC㉴«­Æ9qaYg/êýO/‚1éðW Ò1ôD#uêZ «5Ðõá Ôãhh.$?ºD†ŒE½Œ Œ£¸#^·Ä¬Ë­™V‡§×—5Ô©™—Tç†Õ­mæÇ©Ðá­5³~òa,Ø"ƒèFóþÃU±kþŒQª.õ©n غWdN¤ÉJG˜%¸C'ÿ$Q¤Å¬Ä@Ùÿ’s ‰æàƒ
-áÆu?ÁåLNM \Îa3ÿxãÈð£&’’ÝKƒ:8h¦|-%ÄcêÓ¶<ðàSžˆW —£¡3™¿e’,†°´K’ÆtBO3ýæ+YÑ Ÿa:Sƒ\‡•Ù®">ycŒ›÷E@\)yL”p—쇄xÙ—“t?x£¶Í¬Ù¼+TÕ„9ЄœíÓè2´zœÞ¤
-¥2ÊîöåÀ Ç\7okœ4¼|1Ç5àb–±Éyàÿ²ÜÂx@&`8f¶û³s}¨š÷cŠÃ;fÎ p(š%-Òã£hÊõÅ8¢Ü«¤Ð08j{µð—æÛZ*VÞœ6*7´>AƒQ„ë÷"šVg×aßã;i×¼EçÚÆ ‡©!Ú ¼fVÝ,Û@`snâÉü†·Ns’¹µ QëtB]"¢ûûåKàѬä´*ä­ú©žöv4S’‡œq
-H5 .į6tÒ[ íäãõ™AÌ¡r®ä1¥_tµRùPò}é‡V‚…³’äö„ŠàW/$-`iüf•dñ`¢í¹¤ò!~Š¯¥þ^ªk²yV’ͬUz~ ¥‚ óÇ*wàxßõQ›Ò£ïôÙm
- ¨cE»·þ…k¼ˆ!X¹»Õ6ˆD»ûæ„1²µCW×¢ZtTx§‡**šl‰‡…Éx 9uFŃbONª]`3dQÑÄ–9gQ†íâ_J¾¯s…‰ ¡äzý ÿ°òrz¢Ÿ‚i•DÙ:ac—`‚S‡]-ÿ¸Á·üúôí`ò|«Ü³Œ)m߶áïU~Œ¸â!Ng H¸_Hæ–¸U4W4F´qJ\*+MÁÙÓ® ¯¹T¤˜Û*AË¥Ë cY%s,Mðî•xë¢î‰y'n¨ƒÍqÈâß <ðˆ˜èžD»¨“#€]^u3ùêÇ\6IÝÏ(¾­•h:*ȹÞUŠïj†
-vkrIeÙeä#c·"Rž¬N|í›áÖð_Õ-ÛOÑ]
-¢,(È>‰Hrä;{æ‘ RBS2¸›T„×j@“õ¾¨—Ø´rñèÇ>ÿê‹Þþ£´Ëº5dL,ij_²FüY¤p¨Á3f:IC‹•
-X¢‹ao£à*uPFV2 wŒ=pvc|«·ø§5‘Ž$­%ÿÛ-zvò-XPØ}[ZL”›“®Ë`ôzuç]’I/CLá&aé
-FO6
-)‚'H¼øÆüš‹>­$cìPî¼3Dÿ£í á04öQ‡Ä´q¶fÊjbYM|o¾)yÀŸ½û¥H8Cök§½
-ÁH²n5ÙÃReäXò]‚FV1,z§=L„zTö0ºƒÆ
-·,Ũ!ù¨?r^šžXJRDmW .5M¾ôM?o‘75? ºèb
-é?*!’õ½AÝPTý±þ†
-ÙDp(’Ù(
-Ü%ƒžÏ黄K?;»§%rRŒ*©ì%‘4Ö™{wIW¬nK:q£f$‚-ëA9J„;$?n¸&Ã÷]¤QÀžµ7w•„:œ˜ûXEŒ‚‡C¼PEº+âK8 P€‚8}ŸŽ
-›îÑEÀ¼ÓøxCEò{ ­LÇ0¡Édp‚1tNxðiº3ë¯È…>¿V|Ø» ÌA­­ß|è(W˜Íg¡Ä„G…iò.éü5ÕÁg¥ÒÊWSl~R—éà*|ÏŠðU<°Î°´M  ‰°Q¢¹¹G©Ãh4+Ñ.C*s:=uhFX–•ù»ç$>˜~Þ TBcÒäVn‹°rS8Ù9ãÊŸÿ
- BR9ùeøäÞöðÛ²­…lªô2k]TŸ6Uÿàñ2¾ð5À|îÍ ŸÕã8$öCÙÇ>«KÐv×nIt©¸·ó¹âöìçš' ë²MÈYÎcOzÛÚ2¿”ÅqIé³ÞR$Eæàf‰öEo× è9©ºŸÃ~&Éa'aíˆ. §Ùu›Ògóá} ËŠ ¡ ÄúÒÀ0  —âßÁŠ–•Sæn/%8aÌÀ´ @§Ê5·ë$L$ÔƒEѱ®ÐAOoo7kŽ©r_âW$HIÃrôˆ¥ í ^_6Q^EŽE«\âÕ«‰’ȸ¾˜¬Uí!J…fÜ%ˆ+GÉ›ße’GÌøòte²¹ÌØ°¢!g©„$úþ6;‘eb¼FúHÞ*A¥¦tÓñPdÊbîÚ† šCÀÊz;~q[(±¨;Ÿ6Û¢ %•MSWŠìÙŠHñ€’=]Cä¥qØPµO了۹P3µr,®ç6ÚpŠÂH1LpañÇØtù"µÌ’Ù²|"µ
-
-C²“¨ ÒV”ñPbG ‚!hÄy´»ïLÑ~¬öj·AÃ9*ŽÌJF”yïv“ÆÃ@ühT–g+"ïæ­é8L„3ŒÍ¢Ï&ƒË¼«=[£íZ{䦤ÊÙW`ÄÀý¨—"ù¬"ëÜ7Ñn3X"‰ K=¾ 2$¾‘üM‡Î0lÌ*Z.pX…pf•
-K¤GË㬰„‰èà<”ØQð0ÚÞÄwßQ·ªØ¤úmxÁÄœæ²ÅƒõäŸØqØͦ=‰&Cr+úQ0›È&×i«¥l&jã
-vÔ ¨ÖN§ÄØoJ
-Ôœ±¶úYF0–ô©Ù6oÛÀÉl§„+nˆeçŒFñ­¬2x)Í¡:è”»Î:Œ)HK¢I¾Neä@ø¬”þW?`(§¤(‰ ¸‡­>MëÏ´¶Ã>½zÉ*D¥•é–…>“dyt6Ë»Q¼G•ð¢*
-Ž 9Z‰ìÕõªhW^¢NÁ²AôÐ<[5 ÈšD«ZËÓ’Œ
-J˜S"‚ªz¨cª©:PϹ:~p
--ƒ“;IR1 ícɯ\ôÍ·ÂwÊà õôñRM4e¾3 í€=woýëÿ;!JÑ30²È`Rµ‹«þˆ›4u„nE”T>ŽlEAËÃß%˜0EìËY¢Q|Öìï¯/&Ƈo¥[ç•s÷ª²ÂIM¸ ¶ÌR\Q6¯`Eš
-δ»QÃèàÁNwU8ˆP‰5@cgÙXwCäo¢0(aí^©X”àžÀ\¢/Cc~æ±:Ö<#ÍNî‘딞 «¯RÑç5f£âÁ8:sç[aGh‰É6/MÝ%(]ê?ôÐ?œkãø’˜&Žàï@ñALÎÜWdLd >£"ûvñ7C|’©öB9Æ­Fúˆªf¯½‹$("&ÂFÉQOE¡Ó©CÃ+’ê¨x¢%tê€E043ÁÝ7Wp5¿kfçΔàÄp8 íóú(áî–"P—ê[™àÇ€È\ Dc($ñª}ÝKÔ4¤‚'9ËÃV¸º×%EüôU~ÇRÞ{¤ñŸ
-H‰”—A’\7DOÐw¨µ#æI
-¦C*͘>Áo±9öwª³%fù‘9¸«öÆÙóóßÏ«°huÍù<ä'ûÆ-B•B8nŠ€Ö"¬T+žÞ^æ3óozò2ü»ÎE†„ØM{ÜMèòמCïm´æ䳶AÝ,ø†À+­w{ˆN•¢á}BX:ÕëyN²1zŠÎ›÷ÆQjÈDßß­bt£ç½‘=e 4Tý&‡ÒÔ^Çó¨WP)¶öÍíyÔÏÕÀ‡†|ë|{)h×m̳{?µ•:öÈOó~îïËšüÂ&-‰zü3Îk—²‘l3òŸ†AùL! ‹‹}KФŠÉ°÷Âó=îÚ!^+mÝ­q7+-­žmqŠ '(´oÈ Y…“"~³0ëþr¦7ðF9ËûºUÂNð£0?GuÆ
-ß 0eOáq4è\6¼ÄzUºvܲE/¨‹ÿÙt¦‹EƒFzÇ hÏ‚ ‘ƒ>lˆJ™Esƒ×ˆI³&¤3yè„"mÖàWb£?Å\×À §Æ­Ð EÂOD ›¢®ôéˆãB)ø9roß‹¯&t–é̹*l…¢RËp{ØŠ×p·$# ‘ú7®²WµKïá­6N‹52l›{rÁ{ÚÊGî²ÒáÛ­Ê~—s3&‹° lp†+˜#›kA*]rVtCÈ=nêé^^Ý£÷Ï“H
-^W°=Ê!áwƒ¬â)RÌóe7Kr ÷ ÄSõ D
-›M ö<ꄽ¡HˆE×sé¸7,mÈ·a@B~÷@H´•aÕ’;¶ªé.áç¨ZãÕÐ#&n ?Bqöwp=GŒgËm¦X]è{ÿ<ŽŠGo6ó ­6.mOÕxÙÃŽöÕx@ ?Ÿù”œŸ«ïԆ䜚ú÷+úÝœ˜á„nÂ*0çÔ)<¸Ðþ±2t€xôFåˆn[ Z=D¢æ^àCŽ`¸5ƒßÒ)ò?J
-•¯ªfÈoXÜ—}T©â!^ ÄÙ+EtÚëEÎ.aͼúÆÿª,$H\¢íÔ`*/5¬mƒB„²­f_¿×5…kàYæ¬ë;S§¡d¶zFûé¨èP<ÛXÄ:ò;uE^w£c!ÑF¸J}ü¼¾ uLÍp­6¯7Ê£….†PKæŽWeX)#+\–DÀãAا„â20K$¨”³ãâFêÜ÷-—)á['à¼Ä.~b\ƒÔALÆR#ä˜>ò#4ª’ õužxÌb3(Ô„ Âöú~_úJf(¦!¥kì‘1ZD7z>ÏL+‹Ë^¡Ò’w
-Û_!,§/;†„´%Ÿ±/Äq’ƒrË:É¡Œ‰VÉVŽhgìÉ%÷BÃQ#ÊÀýcàL˜Y¯,\pD–¯3§ŽvÇ$GBÆÊÏL¡‚­Q*½z‚âRk%÷kª\¡Þxv™ÓÖ~Ûѯ\ðš\@âñ .<˜„ˆÏ»zŽ‚¶‚¾ŒvrT˜)ˆsí‡L‰!rçeJ¶˜Ð5V–B<Þ@„TØyâ6¶íP'm‘ΘqŽ3‚qÕHg×_êAçi:†ât ²+_VTºÞ€¾nBÚñ†6F¦)DÞQ~DÛíÜÃœ"çy¤¾ƒ5ÂQ"j|ÙXk‘šd§Jã%JïOòu•šQÈ™Õð¤k{á-4' àö¥=I
-€Ð%†€¿Îöæq(6«Gú+çb(ˆRÆþåHki•ŸÞ1Áw^'¡áùŽùá¡—dË S¬Ñ”žz[N™HÄ0ʾÆ}2‰—,’dt±i¼NÁÔ>BMùØqDrÔ|ÓoÒÑ^PÎX(;9\¹‡:Ðö,¯£îø£C§"²Øì§Ç¡á=‚ãÌ †ýpsÖ}ZjŠÇçÖíFûÁVHh±þØVtD=›ˆ@ ŽroÄŠ*ÚírÇ÷1t ¶ðÕýAâÐW:ocC$>@Ü9¬˜Axj¼¶º­’/=—æ×ð0 ñëÆľNä‘0¸1ðka€:ÝíêA¯pž[UY\…flRB–"ºt-wØ®xåH¸„§„)Š@Ål‡¦À£íé5|¡ðÚ°v(3Ïp‰
-N1~ÓPò‘
-H ‹Åë½:ÉŠŽó
-óËÛ˜Õa@¤Ø=¤§*‚-Ž~ÙƒÀ”Eß™E9r:ÁŽ¬=(Zö—þ
-*E1jõA{McúcÆ(Ð\·¯i †`,™+·8Ð J9Çs r©¼=+f¤cÂs8*p³ölj¢Ö¡§_â ÿÒÞÒŽqLÌ({/Ì!Ž Àõ!IÒK‘ætÒ_?Ðua†£á©‚›á×8¦Ê@
-ã6¥~¾åc¥@ÈU]âØZN‚¨WÏÇ8¦åÔ¨3¡Ÿ²Ö‚äÉe!ìÙ;)iŒ;Ü=N =8™ 3¥ûŒ¾¦1 0—ÆO9ôÇ4¢¬6ª»·ósÞ¦ø#ŽûP1ž.qL îER¾oqLGq;Ì0mwxczÔYÍ»Ä1µ†a F ùÇ
-µ(Í/óêrð:M'j¿Ä1@x˜6¤UálT€ˆŽeµ¸ö1Ž ¢ÉÁ£/qLWî\YçÈK³…„°’ó˜Ç–,²à BÎÇ8B”Ó×RÇKS=)"T·V¯qLk%u(ˆöðâ¼Æ(µ“&áZ¸`»Ä1
-ÒÁ®Q¡rûF±óNyÑcû`·Ï4&=£ûÈ^öF½f1Í0ªÚð8ŽYìÿš©•Å¾þ¥ã0z(³J;ÏÏ ‚Ó›Ò(ù<ayE6†µ>ëóÒ/ EÒ7$ ¢]\âÉB„†­ +Š šfË8n²ö¬-¶£„Îbõ!°VÝéŒY¡«*½‡0?:2Õ¯tÀìGa•aÅŠÛ6áeÉ؆ðàR0¡SÓnIKOq™C/6O"¯Á ŒðþŽ´µ‰ˆš92Þ´ö.V?ȶÈöÍzHlv¢AA‘÷j'©2ìÆÔŠ¼ÛÄʇxxþÊËüøQdN$¦¶ûðR æzTµAf~Š¿.ÍaØsÈp¼e„±Yâ§Ä‡41ìMª¶Ž©‰>£H!ZÜH2Ä´©á=C^”â÷Ë}Lt½Áü¥ûáÑèbQ†³ÃF•rU~eÕnëÏœ·ƒVì‚zf“/K79¡!ˆaR(œ—ï"cÛm¬„üC)ÿ4ˆÌ ÿ›Ç{:„ŽÏÕ’YïÓóÚBFðBõ§c­TtÄhg½j`m}:¢ú²¤ÀYŒÚ!yãƒ
-A|ˆYýë$>Zõ7Ùø0UU!Ú}É8’î S„•!JÍ'žc64Çv”md¤ÐÅ‹÷6ªxÕ<e ßlÓŒ ^ɲbí ÿEÔÃ.qNÀжq€8}ñe&RÉÐ÷IE0‰ô<Þœ; ¹±¢Ú˜;ZZÐÝ&¡ã>Yfô삳äLØqsÓyÏœÜG¹}FFÆPý'äÍÚge!HšI~߈
-Fº(í=“Ûqwø¥öóëb•sÙéxM9fønº|Ië²"œŒ©½Nb:‘×._R=öJíã
-˜VŠd2œÐT–î>E^€ášËÓ¾Cl"h%sƒŒì 65u$…àq”K¾ŒÌó2|ÔI‚=ÔR?ê}†EKì\£híë¼Ü'9µ_ / ¥¬²ÞNØ‹‹ò:Ln õD?§ÂönJ†ô» ïý%e ò•Ì¿@¤ ¤Ï0t¬ƒ&iM)K«ßA?~åNßûêˆ1Ÿ‚Qä÷ !âÈDZ<øíŸ"£2Isîã-¸fì,ÃÕÖØK÷WÄÉÛµë8<<$OòliC¸)¢Oý³ ©íI1.ˆ?`fð0»·M6GVÀÊûixžÆKƒV~Cà‡¦!у¿bdJ,MÜ”d`­Y7‚ëe†A®{C¸A!båö e­I#€Zï®e©&ÿMâØßao1LlÚˆ7ÏJ‘k°“6©ÊP,Ÿ„Ä€´$_àQnZÚrq`$kҙ˴ x
-9'.Ó $ÑM¸43yC83kWÆ°Ë„Æ°Idóþ´ÿ—ñ2I²ã†èUt‚ÎÃZ^êÞÊ÷ßú%”Ôýù-‡í¹…f‘@"‡&#­ƒVÚ±;
-bã|<“Q‚“´?°Zž©l(¤/šœh›ÜœªÙF+v)¡
-ÿQªÕ»h¨·x ¹ù9,n-Üf·Ò0D'|É/ƒœ«ËðÝÌŽ
-žÔ&…èwæ^W|‰»A´ýœ¶gPg;µC’ɎßÍÈxr¯àÔµAÈ©üÉŠ°¢„5¡­rê‘h:Ó´B¯E®‰P(»'êòûYabhž!Š›'…°DB`åÊÅ9©ª§  ¬î¬ -v9ÛóYQ¸ŒEwÌÆ0@‡MŸ"6À×T-ÉdmýR„“OX©¾;§ŸµK2jq‚wÁJ×+·M‘L U|¨M™•&ýK`¼Ã&ëYò©Œ*Cž¼ÁD´ÙI<Í}韼Ôq‹ßþÒ÷€V’m¨>xö
-KÀdÅÌvQÄ<9’׬¼ÐæË?[ ÜФÅÕŸŸåÑÑ]¼Ì°HÁ-Š ~q65¤g²&K½d˜Š)Ž
-Iî%×Ä$‚ Ñâ6dŠNÜ€°Ü¶ò¿¨
-#Ï* çHÂÖüÜ !&: –„-& Iˆe®áˆH_Ug(òe¹i.hǺ1$ˆ#퇀&9èz]vÈ4®s¸~n»Ø«)ÓÚwÔ…)— þþÓüx<Jåfݬf
-kõ»ÅýÇŠ
-~ϲßßÜE^ 'Êg×~Ö‡LïwÁÇ 5tvŽ@X!œ!Ë#<î'’3ð¬AG†6þ jxz^kN¦žüºö‚«2‚òϲ9ý-DKŠ4¥KýK´‚ Õ—wÄ'íäçÀkø£±ŽŒ¢ÔÀ/éÎ"†õ¤C ϧ 9Zgw^ ,g2gçÀIúƒqóÍÂm1¡ É)!vÉeB‰^R«‚˜~m•øÔ¤Ži`„ÙŽE—šm²Mò>kƒ‡YOIÇ…)ꌱ/%Á_KˆE´n5N_tfvr•ó¾UœðkÒý]"%­4º›<§#±™ó-ÂÀ†ÉûlÛug8Ÿû`šÞÙöC•%ËïúöŽØÛ4ÒK
-´ÕÛàB¾öâÿrå›ÞT"¡ÈØ]o€2¸l0!žÙGŠ’K‚]†•ú?Õ’`’n唬Íõb*râ)ôæ÷wÿ°Îh’˜>nkzŠÊ‡~4aÄtÝe?‰;BÃÊ/±j( j%xšÝ3Ð皟ÿg×H¾<• ãJýBTÿX‘<j%›´Ù.E§Ńìè¥#‘­òúR³
-|·!°äK´ûÛ>4·ÈWÙ*2EW,a2­§d¡«,¶xÃó_l%õ6ö„íƒÝÕö%Þœ¡f¾ždøVê—šŸ^?‰ÈÇhÁ8%`KnTx÷p,ýcÕÍð
-,G,3Àj%€,PÄ•s_‰éh‚O|ºêm‰µŽhÓéÔ‹©R9˜ä5÷î J•˜BVáf‚§…äk¥a¹ŸMð ób‚çþSÆ5¤t¢Œ÷'(cM”l¸|3ÁšeF›ªáJìh‚µ„N®0…g ÉÕ^‰Ïу!8Ö „­åïUƘÊ÷a¨ñ7'U>SÛ«üõ“}_7ÆO¾4B‘ m]0𑤼ó× Ä~k°õ™ Òŵlær<$>†¦z«Öñ“O¢äÆœ_€Égð×ê Ià› ‚àDÚ:~@à £+
-~›qbŒ×öÎORùm³4‘aõµÊA4lrÁÜåÇ;ѵÝWôRNƒÇšƒLrKÖVÓ¨ Ó¥uós*"! †iAÿThÕc¹VV_b…!\+iÔ•_#¾ñýãèa¼¬br³>h†6°•)MóV4+z$¨N–xŒ§Ê*myníÄQȈ=Y+" ÚžEDŒŸ®ÏŠü4ôÁÛ‘kÕGk¢ò‚ðR“4ûïu“<6Æ—®µ™F³¥á›A ÙíÏöÆÏÑU­×Nó?‘òÙck‚(×ܹpöئö‰Ç[Ý!SÚŒwsȘîµäº“+jALEHÚòcÖ?eðyPhv³%µ¤¿cÒe¹åVYcÛV«ˆ”¸hä äÍõ
-dê¥Do¦&‹ʬ¯U{M¹‰v6~d TÕ¾"^ôåyùXPa…²@€X ÒÆ’A,¹›®ÀÈ«ÁÉ3Ç ´‰l§¸¾ƒ$Æí(¯†ÎÏ¡3Ð!éÀ!Š1!³1iT'UÒ^´Õk¯x*uä=¡<F6Cß÷«ÜƒãVÕ¦›ãÿñ³¹? nð:È¿ŠÆ„&úâ#8[‡’v„Ń0pU²?!b!¼‹$ËÏé„N冘ò‚ˆ Ú*:_¢âÉSÛW¡0YÞ mŠ#ÖÅyu3*l)‹f~Œf‰vÉÂùM/*Áë`7¸*‡2)u‚æoA½<^¬À÷ú×-%M¦Iû¹%ž¯d¢©ûä—Å–Y@dÈ!\£àÇgš-"QñÌÛɽTgÌÝÚ®S‚âÇ æ¡EÔ•*ù—#+‘Qgc7³ÿ›þ ËÞ1†’&1Är¢M©¸FF°¥#Y’áG%r¿@$
-ÚZTð(âB…{B¸ú$@±Å6™rÅD/b„š¶­=ÝÆFOGòãôõƒ¬ðeÆÙ^Åë—ðu=‡/AsµÎKLß— ¨}Pi±KV$e8`±ú)ò
-îÄg gÇð±–5Õ… ÉØ ´Í”ô•Ü˜X±iq• ‘̈‡ÖíפuãHö|0˜h´øw¬3Ì"[¶#¥²ï†;½4Úb îÉt—IHe¸‚
-ñã|ÈÓpy‘#A¢2aã6¦(ÍV¦­ÿÂ/hÓïÄø¶9"g¾•ˆ!?|á7r‚êJa/Ûüõƒw^ˆŸŠµ
-‰°ŠË/4†;Ç"†ˆà ÀYcPH-PrB‹ÈA–§åóÚ”æL•€_X'aªXo{œ7ÖûîÙóë°[¬Þt󥟸ê—cdIpëÝvïÿNð£xs‹ªvÈ|te#]3‰VAú(H—63«\ç—a2i†µ™°$ÅÞ;@æhÌK ‡-¢=ñâ"§¬sòÐh1J~p­š›Æ @ªÝ+°ÖŠƒä³×y_…IN×Öâ‹·•VÕ·‘Ö9mÞœ”J„õ(ºG†Ñ!¿Zq¶/²Ç
-O…¯FÑcæN _x·èCK™êÆL²%*³0IòUµRÞ¿Û«Œ/ã–j1Ÿj‚ú'ͳÊl×£Œí“¤`‰zÚä¯lûä„?…,“Ð""Ãh Z‘R\5† íqb
-c§ šìQñmêÀ»É16 tkÓ‡}NLHŠï½T®Mç%¤ˆÖ9 t+ÑÚvZ³cøò"€Åé=(°ÿ†¥4rçzÜuÕv³Î9õ<¾buŠw{/žv™ú€û‹“z§ñ
-FŸ-`JœÐ<)V¹†3ô•]ÒB¹¡WŠŽ³úÀAÜ'£qàÏßÁé/z› ­,oŽß!-§8d¸m©ëC¤%W•µ±ïöQ±ïî°ÊØ—"‡4±jó$É„ÃS5‰ÊO/ñô°$8_Ã.¯U¸JS¬DV¶L5G+±Y£ãô¯Ï•#Qn<]è2¡ ðÓŠcd1¹aÝc_ÄÒN
-2&tGü"ri¦ž¡úíË“–¬D¯é.JnL·î‹²—ƒ2q÷ê¾Ì¨=ëeQ>4 ‰
-nÜGð©a XQ_4Uuh´Ç¼ŒýNQ_J~þ|„´?ÿ ØþõŸ?þüû,êÄÔA#*¯fUüX†FäF‡^ŠúÉ#[%ëi%ÈöÉã” MK…›J–š…‚—Uð£L¨ùŸjr›Ä!t.Ž=ñ±t2Õ)ö‰&Pd± Èf’*`œ†'ÉóX¡§
-ÿ…Yª«¼:E ‚ cBk\£†£—þ"¶-ªzƒ `ò±ãK¨<º(l7ïŒîŽ®g¶§Ó@·Z÷û""L™´ôZ+)B皆³ï5CBzþ8ηÛUÖ„ƒ`ظ¡q}%pF—6Œ_zjÒ–¢!ö4w¿ðSåºù_4lñç똞JüS…ˆ&viÏïçÀ½I„©_݆Ígq¥l/_%wE^¢¨_×'H¢Ío÷mÉ0Ö(è7âò¢äËBýÑV5ÎÌÃ'Ê R‚¸²Rî_þø¤uw£]ŠÞ}ØyØD>]EIÇU£©ôµYÑ~Hf;f„z)úø;½ÛÕaJ¸ £Öæ1Óœ5ˆ{GßÚ²«cG ÖÌ.Ž*lÊÚàM™Ê(v«yÆB¢+Å&w+Âút±;ërœEp6#ç%ˆ~aq¡^(uç×Ed<`‰-çC h­Ò_ýJ VCAE™ýXTí½BKĤTßì©óè¹ÇγjØá–ê²ò‹‰W3¾”ü´±El£NÚ¯Îéî—Ä÷¢¤ÉAM÷ÊVž¡AL{ħ6a 2;FðÒA^€yh‡œ[¼›@'°sŽeDøqKýðw#mœ‚Ÿ—Ð&JÚS¬„^ÂðlÿÉtÏ%çå÷QWo±÷DRz±tçS"ˆvÛo\ bd¬V"ê9Næ_NÏ;>Õ‡`×_ßX6¸ Ϲ6;§c:pDv†FÚd¦W4yü¶?îá-æG S´ï—H“ ³‘Ï×E'ªb‹ŠÉämqh!¶!iªëÿl—P@‚mïË2üÎÆ;1`¼H£r÷«;!qŒµ2åÄp)’7'l¶Šz³ Ì_y]¶’–Ž3o»M«@é&ÿÑA§³¢4·²#; 7·êVs
-&Š 7ÛZ[nÁ#‡psÔµd+a `4Æ7Cˆˆ “Å›ð²}ŠP?GU—™´¤Tmp!Û)pÕÒ°2C¼ÜqbS¬3 j+kX/žÁ?µ×¤(èú9ÐoÎÄØ&¦¤°óüI¡Ä±—o4”;ï{…XR–½Ö¾Ìze¡8)LíT/Eïׇ3Næ]×,Ænù{Äd°®>ÏLs¹ñ>6˧'ô¡„@,ˆei€#¿± %“/Ä‘ÆÄÑ»*Û“ÃœHû€pÁ¿SЮ…¬yÝ›“t=ö™Õnϲ¯J°7?\h ¿]ÓqŒïÞÿ¥¼\r$»(º‚ÚCŽ¨Áÿgh”fnA€
-Øÿsà ü’Æ“$¿ÀÆ0ˆVŽk~y•¯ðâêköQÑ\´6±ÝV‚ûàØHa²×÷EeÄ&€‘—xÑw +$‚áõ½æùž`9‡ÇOš=ÐC_@Íh§ õ»ÕTéÎBô"(*¬!-ÿO 9kí%R`—u0a“YÉ^‚h,Ûw~A;x,h…û>í¨T”ýxÛôTœgM¼Rµýæ$A% GÑ¥èéEä“"á®:…s€Ò`¡×þh]šSÊÙGRtkŒÀ,ö®C [ÂëJºnûCQÁaèÓýöñبÌ]’û¼¨,å.qò~s²¨aÏLÛ
-ˆìÝ2,G!W_Ä¿‡
-ÇÐÜbY"ÊÓYzÊin¼J \t^«ÐwkÀ|†“
-HÆeìïȾ@Ññ% ¢­CpISne£RÅ…’<çžVÔ¤°n}ktù,g(Ûö˵áûÉí(ãiv“¹ó'S¦/´uXÂŒ4È:`%—ݬƒôÓfeT¿,qF2O+Â^aj`•¹Dþs…‚<%¬ <ïÞ%—&R’`ý¢U÷5†ØÀ2k.«û›¤˜AÔí¸9µ/?ž$ÅIE@ò˜¬š­oÀF)ìÍ×öZåÏäªÆq)ÁÚUe.áä„L+ä´a%EPmî“BØ-)+Í}éœB™åˆåª„ƒÕä¯ÆΞÚ=HÆ7¯àL=1ÕÃœ>í VJ²ŽZ®”KoŠË’9ÉSQû¶åðØж“Á¥ð–má˜ñJ’É3ò ä‘åÞ5>¥)‹mZd+Ò+ÄÊ’¨Šy**²~#ÆØ<È4¹mPl)âW¸Bùí€Iþ“×:U†9i-½$Ê:[óËÛ’­ ¬*èÁ%k÷ý(ÈJ¶KécËlŽ²²àÝ¿ƒ&3Ý"Uòæ}:ËY¼„éu­q·&ÚB
-í¦J_¨fßØ;þ;-¬î\‹¾‹°Uæñ‡Äq½¡"H3>ŠžV¤¸Ã„¹ØéK«Dã,2¯#{ƒF"u”ÑJà,ØYé^ÑCаRh»‡J¹A8­^‡RHBÑZ±‹•>-ˆ
-„5“½iàpÛuÉöB b‡IÁ’„xžÖµè8-~têÛk6­·­¸=¿guÄfññ“¯¼tOSc½Õ¥¦ÁJÕ ñçM|ý´7^ŠV 3SЃaë&a?s‡äÅß熟S†žÄÊ©ˆMæglj]›¨Ûà'*î‘­c5Jä±½ûmä,q´Ò¿­²TÔçÊ‚06àÈ­"›Zø8ä £ÇóPd»ÑËJ°Um÷!²eEÏñÚ ¬mÖŠú£„;ÒŸùG¬G­ë¬H#›œCI²Uád¤h%ü¸\íh7%oM>%Ao
-³oä_o£ëCk<ªÎ󣤺µóšo'½õF¾kY;ªÞ›K‡ßÀõ>©KÉ/—$9nˆžÀwÐ &ø'¸–—s m¥ûoý’[î*ÖÄض£ ±H ‘Ÿ_ßA²@6èoçE]BI(&—®Nh ±\>Š¼Š xÞì¯ãëˆ1/Ô/‹îI…4%¤è¯+B×RvÝó`D\&âQlA ô%@_Nò£×§’l sÉyô·"ùuúÄqÁéõr:áÞŽñø*’I)Ò,h;ýÙ[s0bt…CLæúÔa"P#LY+ü+')ùyœü¥è÷"îÿ•ŒãÇ(Á’È@²“åtc*>¢ñhçg‹Å±¾°ìÞÝã¦I.à©gp*¹så­H˜àcPÛ4~œn²ºT•ã¥§7ÐÆd«‰|ò+ô:8•HÉxÖ1$ÂY¡ôóº6ô­ä×wvsjÚË-¡ž™"'vÊÇÀc#î0YðNÈ^•õ¢-éP4Kð͈¥Ø½DJNâi•`¾õp~Ÿªê˜áaÝê®%} /ü £.´Ë:Ãzà4gë3®ù”U‚_ƒ3T°ØâPü2ÌðÊëKך¢»é§ýÆ·Ë€c~ ¶ÜÚáQ5©A2ë_ºô†°—QŽ€°øãÔ`* €"ÍöW_u)ñ/á†a˜ÉúÓ9ˆþèˆ:ñpŠ6=*OBøÐ"þœyóªÉ1gÂR©ë˜À?x9ó÷öŠ°e°êCÁaF×’û¤o¹ãåöžî.m9á÷ÒÜÓ|½M?çÒÝ*3À0‹¶"Oÿs¬á(b†Zv#>¸Øo½í÷7n´ÈBŽQB‰¿h³‘™ý`ìœ[/+Â-øûP´(.ó%bÉHû,L
-WºÅ…fd¡Åé K·‰ØÑM¦’`-ä²D™5“e°Àê:ƛ⩗!ÙÜ`
-“îpc¯`%ÕWI†g²²ú²D82>.3ÚW‚¬cÃ&dÀRèó;°²Ž&´æîŒë‡ªž´J †MÛßA2xtˆ}^¨R«ªZõLKÀ„kø!®’_ÕlUVÔ“;Ö!%§CÉÙºÞÏÁœ$’*Ôö«`)’é ¶7n|<ÄQ’¿
-1CìqçË•‘v%¹1û9ì'9CÂŽ+ðá`ðõç’Ê^±´&õ`ÊnØ»_¦Ðˆ„PW¾µ(ýö¨ò![,dáÞ¿téMáá3é˜È?¸2LßMˆª…Òcw?Î(eíèh>”¸+»ñ( ­h*ÝI˜c6´zv(Z·8Èq ÝA,+À3¬WJ@|jè.g#çZ¤ýÂ)5í¯ŸSfB,~¬t¿ºƒ}¢©­F/ )`„Ù‡üú”L £Ÿ£5¨ ¤ø>Œ^ Xsa½$¡TƒlÔ|9Í,0ïí^ðk·¸S€
-8p6/d9žY’
-ðDÖî*I*ýd‰Š—p1nÖI(¾ ¼ü×fbz yfÇ1$†ñ\ÕݱRËÎŒUÒ8ÎQ­XÊ‘aâÆ©Ä?•8¡qÍŸŽY’ÆEý2ï7¥-7ÏD²n¡Ÿ7\ŠˆöcŠÊëᢸ熻ÔJn´u*‚˜iE&¥ìçÈõp—\2Ù@~é-§I׺0gÂB¡›3:ï¥UI‚÷§ð¼©«;k]ä_YS
-W†Ü9Ví
-å5)¢`]ÿ¡0ò͉C¢­cŠD
-Âcõ¼,6þêµÀ»U¸”üüçì'¢Œ
-
-7±äkO¯Âûüy(°欚ä|m=¦€½§wi}Ç*YKh¦gCèO
-Æcã*Ü“.[ûËöÅ”VÙ
-iH(d¼Ðß±¹‡#ç£E^y5ߪiõù1¶îÌÍ«H¼ld,ñ”*¤#}à9œ‡’7š\¦ŽÇcˆÁWþBe탅Î8và ÙÒÚ«±é"âm8IÃÙý
-º’¢ŸSe#ŒÀÍ?eô
-1˜ÕMVÒ¡Å·Î*$9~]S7-)¥‘B4Oȃ➠U£M¼Iø”,¾•ëW%Öêžô¶…šÅ9,ˆ7é_ŽÇÏg’‹©!ˆ¤_Š\‘¡D?_P«eBw.-²%„Sõ¡3ýˬ3´Ž„ãò5èRUÄ
- àÇ¥G(²¨²/KˆÎ“ËØó‡
-6$ó7æ‚ú`“ 3DbÑ‘+1m+µ^Sº‰È²•Æ4c*ýrß…Yª›wÁ
-E¬¶½ØA¯ìÍZ/l4¥ke˜üR߉À3–5…6× Îj CÞÆlì )HdQäuAÈ pKÂ Ä ©ÌD)*µ ´+¶€ò_í,+³®¸5AØ~Ç&¹¢á½Ñ}ìïDÔ
-Àºú¥°t€±¦eBÈ
-^'ã–ñ(Ð4)žUŠïh:R‰PqmÞ@v•"÷Á1d<mÔ‹ üxó]!Ìç ¤KI;×Å™ý‰Üj9+Ý•Ü×û‘* ¼b[×ôŽ§"iÀôã
-ˆˬ‰_¯s’C³tqAø³HR«iAx_”ÿ.i æ¶åÌ´~€ßOд·?'Ô;eRJ; ž¬€h5B
-6-]œƒûç“,æ´ah@”9´KHö„DºÅ ôæ¤d âZÏWHz€Xl¤‚»b"æ9d«(%”t
-?†ëÙ© òó•IÖлkè·óèbæ¦å"X™JÆLþĬ*z1‡¯ÓÄò’ìetš+}U1b“F‡XLs)ð(ÈM …Æ̵ "n@‚R¬&Áð6ÚÀ‡½T«ñˆQ•+"ظfl» Æ,°øAÀe™¯ÂcǸ+Y-û_3ö¥:ú„Ŧ¶eQ%&ˆw{ö¸æbv~ƒü0;¿–ø¶V)=tóc@`P¯ Pb2¯ ÏÊ£€µÃË¥r0{‚°T³‚@0*8Éàe‘­><![ ‘`—`߬ÛÈ(’Pv׬7Ñ *˜PÜ-3ëJ]’R&qƒ$af`ýTÍ…yôé+âç «y[$FêäÓ#÷eîWG¾¤»¼êÓò€°"ùOX®r0\
-H‰Œ—Ar\9DOà;èS®=Kßb"f¥¾ÿv>ɲ­úåqtD·ZÊO@"‘h}øÇ?ßZú11Ë9zÿøWùð6úlª™‘@Úc†Fk.cAºN ‘àËXLïŸB炘ÏÞÇËhÿù¶@ÒݦFú>GSS2<æ:'¼K5ó…hÓr¸ª  ÑMx‹9o^™Þ¤…„v?7µðl³ÏX/™#½…Ùð+(yL~12uι 9ÃçLáø…ÈÑL[¤¨mDãçڌu“<F4å~›ShXº‡~©ëœÈÞ,»µ±!ár}4uˆE³Hs_åÞÌ[ŸxnòtþÞF;¦îd“¼'ׯc®{£·&± ě czi1ºZ3ëÏ«~Åcºg©çþýboÊá<f.Èp1IÞA¥b¤ÚÓ„œ83àÓ©”H¨•MûÁ­™9Å|EÕªÔ‰8­å‚4ROáF_°}RNQ¿ì«ÆsÂˈyÍ`T‰RåÜN;ßAÛ Q™Âu2Ú¾*Ze˜‚zŽu•>¬‚ö!ÚwT¤IÄu„ë\çôa SÅvŽ¹Â%z7×[Èx¨,½‘Õï+ªJVð?߀>߀šR+hѺõÝä³Zö ¡¿ƒ¶²›3;è>eŽýä†ÁRÿ™e/Z¡·¢ÇêIÙ-Õ-ð]ã$§”ƒòöö¦œ¿"ö=æ1èÄÞO5_NQ¨ÄÕÒs?7[£åB²}Ñ 0/’ü'CVäðÐxB!å—(Ûf(W@R! »Ãų‹¶fMü ¤%u&L58W}!:é¢ÈØeòm)´ïGhQÒíû*2KwÂ$É--É>ý‘O…$j§Å¨ÄšXÝd_Å áHDæˆÀG(ðÎBÁ[†÷~”Ö¡…‚Œž›¦RkdtùCb£# Fs-¢óW‡¡cû&B‚$a—þ­¶Cx9õ8²Ï1 h«¦§íºé¤È9³0$J½
-6÷9P«SIÛTÈ'G Ó72Œ¨yæÏ1^z/µcŠìö•JÌD¯N˜°bÐÒˆ~¬±ITU¶¦”gCą̀$í\%ü«{Î=?惨Q2‚eHïΤŸÑ!æņT[p?]ô,UC“bD¥ë²k¥tœáÚý1ŒÍ~µÚ°!èŸÀ’È )ÐJû¢Ö„êZ)ô6å—èç1r¼
- ¼yÓo Ï¿yø+¾¨Ž#Ù^ŽìŒOL)X
-¯W|€è¯?Ò¨Ì9-uABô9‘s±"ƒP<cC(sN4ï Uܠผ "÷çPKþÖ¢4þ H¡Ö,܆rÀder¼s2¯ Âä øÆÒVAJÑ«ç0µÃÿDi©4ë‰&mPPžî½èþÐïoÂe'jKB>¨\°X¹7=L’Þ™)[¿r][…_Š}k=«L<ƒýƒ­ºóVÖ³qûz
-û ¾ 2Øñ¸!Óq•×¬(†é@¹® dCp6÷gôçM¦áÅÖ´Œ?r¡k]|1bÿ, R?°ÃHî­åÁ†Ð]ü˜|nb»$ÏýR Jkj±jûÉRKåzxàk(̬5ïø,ÜÈ@v)E¬sèxeôP‘y¶$QÄ
-Õ:Ô •¶v[Ì2÷5´˜ÑSâ\õ…Y_amY’|P+/›Î¸kŽÞ@`(<\¦žWý‘Ç?~º /ÓÄJÉÃŽ0üª¾ÿ¼Á0E±Âh…éXã´„5¹€.8Û,S’a…C±‘¤°5–9ž5òÒG„CÏËù©Þ<53 ¬œÎɵ2³Ã Ã}ÃSÓK5ÒÃç d_$ØjT$ö†özŽ•ùðò’CöUl¡ÉAT9n?×\b¹˜Ý3>F±Xеµ”¬ g´
-v‰‡]ëÅß`nW/ÃyÑMd>ÛÛ%ŽQ8´žù¾›½øMQM¦=[5¦6V\æñ>()&
-Rß„Eþïåüë ù”.i/
-Ø&ìì`#½ °—Jq3åÑã¯ëC·Q9§Üæí]å†ïIwø90|ö×)ù2§ÿý`_>©[@?‘ìsiÞqŠ’X¥²¿èÓ¼ï'>b<mø2À6Ð'èÈã)OÒ"´<êSµúyÒ.¼³…ààs¡3ö“Sí%*?–á”õÆ"mþeâKßÉLÜÉõ|TDq9ž×už&¦u­8rî9,¾D¢±|UNj݆á%,2d¶'uÄÉ£èëà?jÐuèÞ®À1¿UC ²íƒl3QDzŒõòfp7n»ìÔU k„Ïçìýr«hBŸzÛnÅpº “¾ÎYá§y‡‰?}›á0åiWXœç
-Â4Áh`u6H åjmgw' ­xù8Ï™bÅéÔò6„L?d%ŵȷ¥êק7éÍâþÔ÷ëyid.ã¥P»ðv…làæ}n1E
-¯`Šî;5¼Ü@áñ$ ¡íšÛÇnE?¹Ñ?q/íÕãÐ U; øï¬aú½(Å%‡È¯
-˜ l»
-I+áœîh–(ÊÀ¤Z¼½‡Àƒ‰À±³ãExÝ¢äkG4pÞ°U©^\§þT‹~Õµ¬Ì ‡ÔW‰Eá
-n_ù©mÉ°¾„‘kYËÌ.µ^£Sóǯ»øš¬P9[M ®0Hk[ºB¸’É“5ÿ5K¬ÄÎ^Ž´·ĉ­¦³£(²Æ©.²ƒ­Ó• ¡ÙœŽ¿îhÚËAò`~.6¦ÏsX„RѪ?LêÛyÿ~‹“*[ †–’³Ó ù: ­Kþâ_Ó¨l,ãq¶MË6fIˆÄ-l]xeþ‰yÀ€}¦ÆÂk±>MrÐ7-Ž‘ùãuû_W dèö&WÔþú#†¡?”°*t£Šhf$:‹ÚÕ$e€QÏÉ;Ew reœ 0¸ å鲞ªª{wSƒÂP’¹J¨1¨} Ѩ®œzs?TYkÌâ¨æ«;%D DÇp¢«$‹ ƒáÐbœ%2öRÇN:$œWÁðÖý).Œ*ãT·‘j?VkóÖ®£ND«µÆ±(àÉn¼wVV.ÁÚƒ*5w7æÆÏjeþ¿“™˜pŠEó¹ÉZ‡-³
-¶E• „
-.eƒ„ÆÁfyøtá"Â{ò§Ö‚`ž OJ6E²a+•. 7ØPñh-6%@uÚÄ—$ÌA¼êf/š™5É0ÿ£"/ËØË2lG`ÖoŠLYÐöMVä¹€ò½…äOØù
-v6Þä'gËÃFˆŽÇ8n%›çðŠ¡GúÝs ‚ZÇÎq•éÈû\U*X1>DAØ2 “j ª`¸0ÆÂi™ßV¶èïkGwß• Wìc{( ˜Âh1z±?õýzýË‚Y¸Òw 춟ø÷ï¬é<¾Ö‚GSÝ…j„¶ÕGKÒaÎ*€˜°b%°Qyr—"A(s5(2­0¶øƒ§„6ÃÓqž£@QPÜe@)n<4¹ÈU«ž3¶ø gQ›–„80fÔ•ƒ(&íé(ù˜Á`{ ‹{–\¨.
-èípÂÝõnîO*)ˆVžû EÂ7x7öñ½JeW¶\K\e¸å˜©\8¥Y|[¿f‰ôÜðÃ*ù‘cû°/%O´ô¥èÏC `I•Ò@ÊÇCQ nÑC`×7”YSÂËf°•?Ó K³&P "t-›A/e:Ó(u#Yf9~¤¯cº(€¬·+üuýí²W­)×&®b ëxTâSŽgÅšC-¹³4N¹Ñ…®¢h‘eˆW ïÁUóïG2ø{a¾²5PRœs*‹J$’ïkà&ªnJ™ü’[…)ÀÆÍ—KZÐVœ¢ÿ3^&ÉqÜ@=î t`ÖòÒ·ð–ºÿÖ€
-µŽ™D™?ÿðõPtŸåuaP7ïÃg‘VÃj=gÚX\waÝE>¯›²=6ô|uˆ„f£aŒ´à”x|ùÍ¿.ö‡$ü{ûøÁ‘#aÃ_±œ Ã~tÊ»398n8°ˆO{pî¢ý"Qn0´•°íèÝ hcuÄ6H›(³gk5ùw…ק`®…õ ¢A­Ãéò<ó’díëÊ#÷Ȳ•
-˜7áè"j¾¨âV„J¬ dã°X€ë°t„wù2øY·îÁV\Öáv~Y{/;R׬‚Tôj—ûgÐ]ýºÏ^ô]^¿>ÑàoÆ43¬¯v98c¨u€W<aŽ·”vd„ðªì1cV ô< À³Ó/†aÞé,YÛ®QþˆÝ(!¼d½`KÖVÕ/I –yŽ„zÌÚÏŠÈpŸ¢õ±Šº] Å„$ ÉТ—Êþšïæô€†žŠþ}(ÊÙ#ŸI<6{qF1‘ x¯…
-6:Ï
-à Π̉²cÎ*³§“  `çüâ_ZÃx³RÓÆ3£]ͧ3ûF¿³8“Icêi&¿Ó95+šë6
-¼R92KúŒ`×nSZêÒr4é%ÝD/ª74w…K.¨ÈÏQÁJøÌxçÁ‚¡Tå¼°Š+ÃF‹¡[Ñ»Cý÷lj5>«!‘áF|Ð,\lE)j¤]Y+A°9¡sÌEÍ’ýFnŒ.±ò0]vÚµ¦< ‘.P4}Z;š‘«”mßš$ÒpÞ¢a¶ ’ô,á"îÐW{+1\ ÃR[+—ìç€,žê´þv›.\T¡ÎpQXs–„Tg¯‚I“Òi/î‚ RËÉD_©v”`•!âO±‡Ó>ÎýÄÎÁ&Â;ð0'-`x¶ua-¯+{¨›eºÔ”“H$885X$ë0z—5›ÓÚ~§Á¿Ñ©˜—2÷žc½ Imˆbe:y²®Ãùy œ0K˜8.Š5ΤëV²
-ÂSÄdÒÿõ¥{ùHTÊ;Ûºñý2ðfQI>?<j
-׬$âŸ
-¶@%—¼"]Àô¹ôPâe¾R`‹cº>õ^D4@\‹K0œ¯vÝâÂ}‹MäÆKÏb˜ísËj;H
-“El¥„«}AÄ"Îcms`Dþ.Îsð Xhå¢vLD”@}h_k§ðu/YÄÌSüš8¯z±¶X /eX²Ó,éD’h†½J|§B‡êú”öÂ'm!NB
-yeèó™ìˆÄÒ k±âýä—áXrK_¿l{ °xz|v<}=Áù4¾tuÏö·Q ÷= €5ÂÉVÉžÍöiIQr–dÅEÀ
-²ÍåQP 
-${ƒØêÓ!ÖÎ}•"ÜÿTra¢VÒ
-­¸šuÿ,÷ÐLéKÌ T›-«Ð¿Lü#.ÞÓ.i¯ 8…’pK·³ê×ÀÖ²!œÂ?mx s Ëä0ß|¾úIŽ¬1*â¿z(ú²"äQëj“„±Á¨¯q Jä?„2Ûu€y@²3­C«aVÍ/@ èˆ3ýèþ¡Å<=Ð~‹líxnƒ7Ôà| C<Ç’Ãmšo%‹‡½¼
-tíÎ6‘”b·Á"á‡<Ta%ž
-ݛ٧?ÖÑJëÀ@¼âQ Çàvü
-'í"§B¦ ¨ê•
-(ËDÂ…D3KqFô³Çaµ3²½^âl^“u h%yÀÿ)/“¬Jr%ˆ® öÀ
-8ê›1Sv‘SØÿ´®…\ž¤ ÉÁ¯œännM|9­Õ!ÆüuA¿édy͸¦F¦Í!ßèä¡fÕIJ8 7í¹ÊY'Á8]¬LeŠÎ¦“Ð$^?ˆÂó4ö‹NŠ$*2…áug_*èÀ’æP-t’"\ Påö;8x§©²ÐGTIAo=XôõF'÷¢ƒNžŠVçÏ”””ÏB©WU§”A\)wªR_åý™§sV'˜¤óPT§æI¼Ï·5ù ”Û¬¶¯l߯²çô¤ €{k6ï >”ìBù—•ù&”…_tÑ ^ì4÷Ï›¢U(Ë+ÿÁsJŠg¡”Á/z¬ŸÆfÊ"'Ñ¢ÒÏBYyÑVÏ¡ž…ò0øM(1~™]¾ûÎEˆˆC çËÐXéÒÜýÝ£ ßG Èñ¬“”pI"ä’Ž2©
-™1XËœÔ*“{Ñ.“§šE&ua„,Êi=„àY&õðS¯L¢MnZeRý¨2ízÓ“Lj
-ôAÿòÑŸåíÀ•»Ln¨Ø¿#lu‡ ÆžãY&@‰bØÐ[¼“I°ž«+öÓD,2ÉÆp8L±â,“ÛRdòoëyÉd
-\Â=0VŽóeߣéµÅé•G´œ‰±Ü„ܽ(óXžï1p¥~?·}üæNvõ
-øAâ—÷‚?£ƒ˜C6ŸÅ.íæ#ª–}6…/õøÊw†—Ó–˾gµ èî“=!uqî}È‘7ÔÌôíQ‘­ñ˜äA®;5ЙÓÃ0±ßRLx­ô%6Ÿ Ë»ïÀ°-ž¬Ï\
-µN݃·Ê5oGeî¼-;?CÆ¥ ay”vƒv–Ò¡ÄŽBmYèàqÔöÚ3£¶Ûˆ† ˆå‡Wñ3l‹œ‹¿ëN—q—©ëw-^+ž&5Zj°‰!HÜÙí—ÓU(5»*9>=I¦ãؘXý£{Ï­Yðuj0\Æ!ÐB—?j)±£–Ÿ¾³Àæt›~çW-0>ug[†½Ç?/Õ›vïÊFóU05d¸8÷æ»™þ¼©ÁÛbîñCñrÊ”È:WÜò Ãõ…®ÆqíÂ-;”ì ïrp ÆIÑᨠÉ\Í/¢*Ø@$µ§6¾“.YÉæKWe¦€Nø3Çßè;5L³AïœÓ_Á\S'šÔ™š<4ÁèÒ8*4[”—uµ*úÐwÚ)Ï^ÄwÙ'œ>Dð?þ;Åõ*ê])ÑúÛÎÚw±ƒE°Þªn]ý(!§$6`%öðĹa ­ß}ö@íYšd·áÅ\%ñŒl·áþ¤Æ†*ãUN'{Œ?ͱ“|`Fø¹î‚½­“›#5ÖÃI溰°[]“(íå=²×Ð_;Gýˆa)hϯà
-ËÔa<DÏ›¢€HóY4<\`F†Å¼8 ©ùpí¦tXÃ(irZ‘tàÍ_ó9Á$UÆ<oî˜qÈ4ܾü4_‰ÅÆcjÚ
-9‹]—p¶qÁ!ã‰R
-ÿ{hwŸqbâ–-Øë“ \,  áÆ@Fspn8†n[vÂçé£ V|[%ùºF†à¹)2Kyõ3·¿™ž¤¼‚%<X„ÏQƒwlÜ€ûB¢Ê®]»‹Ø™±| ”²"2ýΗ'ä˜P«}„öÆØÙá8%±ø Û@CÌ7åPj‘ú» sB|…ÉŠÞµÑø­4
-Š[-ÔÀ,‡ùÎñ8—}‰ê±™R<òä
-×»)‘Ûàžèð8i­‘à%Y"mÇ(gŠÿÊi(¥°_ç»q“`+öi›ŽtÝÏ“”¤øTlse0’RðÈÐÀyD¤=ƒK̮݀îGä¾}Y¤+Aœ"ÉrH$rùÜ'O~PÄ RÊ(‰ -ç(,¸á½8‘ÍÞJÐPL^³;Iá HW¿!=ã…XWëÝIAá'éÒõLKàKÂØÿÄ\s¤³LmYäôTÙî¤)MzSbp\
-m½Ùw püŽâg<¾œseQÐô™’<ù§ÝµìÅ¿™»lø˜w°Ð×~Ng«9…<Љyã#Uퟩr 2Œ3x1Ì@¢kϦG‰fɵ•`¢Â~ÓmÉ mQ³‰ò Î(oDsmî
-CI‰d
-Jn‡Ž%`S™Ðä+YlXŠp@tŒU§ÉÁbC”ø>4ZjbvŒíÑ­{0£é5<&ÄY{¢b×F 2êIwâoÓCX€}Ę½è»²~üF~/7Šò¢yHhrƒs0ÌØ°]!A?Tz+bf4š½¥ \ü}aÑqÙÍüEO‹ñ~sÜ/ŠÓùqST«“ŽTj.°Q’af|[ˆõ(aü]? Ó8ÑG|=rØLôî/(“•rž !!c6!æéSžÝUx•ueåAûÁ]ÙAØÜÙȇ›¯m?ÛT¦_” fåŠvóå4‡å¶oÇapÆu®|Z¾¢yË]:rÏfþ©$=íl‡hÞÿŒ—I–¹ „¯¢Ôã<¬µõ-¼-Ýë/H0«ÿL¤[¯Ýý¬*ˆLБ,.Ñ)±‡#/ØU|]} ŸI­¨Tˆ¿ÏÇ0Ð ¿lAÄ9L,/ÏI²$Ÿmž<—³pË?¶¨A˜sÑèv .«Èô3n€4=ö—Šg*zyPÂÌFëÿUÑsýœëþ¢èF þfÝŠ~Ân`çöÿ®(â†]jF×{:ž¤y ¦ Äw•|íéGÜ ü œTV*h§àžw)"\Ü$ö³¸yW%îàüM7ïRØ‚åì/£}=¯>™¢‡üt¸‰WÉ’B,I–¬‚¦H“ë5ÝÄK‰´µoí¿Gâ¥(ËïË‹Ôè&^•dàÆŒnâõJî‰×«¹%^•0FƒÀKÿ*ˆ²ý‡¶ï‰WEXg;—é&^õfì
-KCdq3/%øq²UÀhe¸g^·èžEþU€wæ •5'
-u03ÍBĂq`d·N;E•­1¤¼M:X^¤œîò ó %ñÕô’iVè*%¡›AúÁ[Wº0Ú©x$,…Hîœ# ”qeÓç>G܆Éwgõ+rnâÇ‘¢‡Ë+°+…°dóŠÚüØ ¼ºÞTV惄â˜ä¶¡Wx¼|(¨£®0y±°W&>Û¹†>ŽÂùß.¸•ÅÇyo›]¾pftg­„byd꧄k°å9Sªº„XðºsSZÙj2Y,
- †Û›j‰<î¼ècš6«¥«}=Ò-2g¯'ËñL #±W±sbHÛçœ
-‘< í-èÉˬ„ôvŽ8lE~nCaEÈ,Y ³o_y1 X¥Áœ]‡¹©†~©ìL¿x*Èt…§_»ŠDSøIñeñQr³&¿mwÕ¨$£ï}¿E¸c‚
-ð_l{Ùy™Š:ÍQ±Û å! [L†Ç±üçˆ}œ²"@´^M. KÈ,Ç¥Œ`Sɺ[^½LãÌáæ<œq>üKÅ
-ÇŒ¸¦ør
-°Ö4b†4}+u£ÇÏ9…ævÌÀÍÖQ®Cƒ¨pµÎIß’D;Ô—’8˜r–t´y]u/Jʵ’ÆbçÐr8K|cû Åfô…±ØUp¸!^”Ãú£¤´µ‹I°\OÔ«æ‚M‡ÁSƒá|࿱Ié˜gÌ`æórˆ¦ ‹%h^èéÐö†ñ·ÙÚ™SÃb²/˜n+‚_I9ƒ šó>Áb0UæèºÈ÷(5ô±WºD#±4G}tÄø͵u4
-Aå7fƒ†,.C:¸FI) KÓÌÂÒ¶À„£šqhz#Ú0ñ†¸¢*'ݶ)`Où¸nVŠÏí Œ¥Îi:EßV„ÿoŒ³lyÆ#‰
-iÚM¸3½
-C&Î]B÷hú,«aÿÝ7ag±I|sÎVD$ö„ »©ÔP$ÆÝn‚uåvi7I‚à.åI§ÄnbÅyxšùíœHþDõú·ÒLŠööñþ(æ•ñIoÍ%¸$ÐÜþ=‰g_
-¶¤i½™ø¹ç^\¼­¯¿ü/™CÎ
-ÛY_^Ä¢UmXÃ?\/ºwˆ'¹âYûå÷ƒ×¸™Øó2§»ê>îç1Ì<?æ=ïQw?{ó؃*ñ2{1ÿm~¶. Ð
-f|£jNÉÁ_ŸÀ «óv %·( Ø« )¶¥Ák©$âlcd!y„½J¤ÁɯÃrü"¹,Š>N>ìW"NMsŸ#˜ð× $ûÜ4+„¯!¹%·tûÛöW&/ÖíÎnEß/E$
-¸“­.¹Ø’óçeÓöýfY,úfKƒfá©ZêįDbÐÔ
-׬}=»°4ëmíø ŸJF
-ÖÝP1Ðà,Õ—*ë ÷›îE$H_£Ùú2Db j}ˆBD‹òaQªam€¹ªtÕx"š/ñkã4/2U¢n©s‘5šJÂ5@ 0©Ö¹ÌÃIì&:‡hí+š=RQæÅlyèjkç*X4Ñ6Ó¡QELâ sÞ@40ã# ck´ŽÍ‹þöB)e¥6ës
-U
-ÒV,ÂÚ¶áXAä«T9y;
-mè…E*õî3°z
-M’Öï.ñ"á÷ÉžÞ£ð«Ž6ë]md˜ÂØó)3Ý’Èö¡¨×´äôüt1ýÈÞVÙ‡{—×°ç>é=3º¥yÍž^}_¬Û¦ˆti÷õ;—¡¹^æ2|Þ£.C|-ÎeªÌ
-"[ôÿ;,¤Â#{‚ŽüßîD*X¤Ÿˆ 1ì0fîÖOŒ ëƒtÅâ@þØsÁ/r¬ˆy÷Vß™XØyb6AÂ¶Í QË9ˆ5;âÔ([Ó9 s™‡_ÒI¸+Ö²)èìÏpn_²>OÚ@­s+Äþð†Š‹a.¬™Ù¢ Èë8”žZÈü´=Ï'˜Jì"ä0–Mûv{ý|²£¶Ê%öEÎì™|! 4(ËÆìU._$Uh^n'; oä=/+¿D±nêcw\bÖðÊ}˜Ûÿ Ã~ñåd³OÁ/xý|R%ó·ý
-üû×oÿÁÃõoahGćk-G“ßYRÍ‚«®1⃊9Ú‚m«"öj:[ ¤#XÞ ö›]"øؤP©ªGƒ(…)òU9ð}¶ £f}ÐQµRaê'x㟿|LV”cÄô¨^¥'‘âÀ©“àúÿê­/ràÅu?ÌIÓ
-s‡¤r͇R‘[r[ÿゼaT‡ëRm¢¡Ä¤øÓ^ôЄÇëÖŽbeÈá¼z¤TMv`A˜RŠ'딊­`Œ <¬-HÂ<‘£RŸñúþ±ca!3n½)èú¨Ã‹<i·ûòu‰0ÖòFà<ÐÉÊ/6§Ô
- ™„I,³ÚV)¸<ÛXs+÷ÁŠÙ`0µ¬ýl2I›uí)+Äõx¦Pæ-‰ÀBÞß¡ ðôÕO5ŽY–nHƒÄežÊ™v?‚)ÓJCnìŠß‡²²Õ‚–àZh¦Øað>•T¤Ü*2hF¢‚E,{÷tÖ"b0ŽÎ@ز)–x¾€£"rY§dW#/bEÆF6 Êðzêõó ²Žê_ %h¬NÛºwýN×òCEðZ>·‰"h*ßcÚZ¹òS°•`^À➣cì õ,:Äf!+D’T¡&\â ;ÿ [M=ÓEÀ™„Ú脉çóBË?æâšÖuS`­åM;‘hØû]ó†à±êc4ˆH¡Ë ó®ólˆ ÃE<õ
-®ÂÒ#»m†Ù‹Ê_d%Wô®½tÄS3AÖoaÞ}‡MÍA!$™?C÷Y ?ÉRƒÚaíæQ©@2h1ìñ!¸ë‹7+x]\ç䌆¬˜÷x[»‚X e³4Ývó²Ào ÛÊGxÁ»Ø¥û,8j¬=ŸÎ–u9…­W܇ÃT/£%Ü–ûD§å§Êy8Õ¾SDA4»n;þF’|mèÄF‡#RQªêG³ƒ³d{ëÓ“Kt.J"² Ü+êUŽMDm{jìâsŽÕ"¡°0ª4lŽ4lCãÆÍã6ù(&
-8›ø:ƒµjÉ’ÉÞ†È5eYtyJ»ŸPÕ62sšË<í:EÜ[ôï®ÑËË&¦ÒÒQyËPÊzÊÕ«Q+;‹cnDï¯ÅÓ4¶,êdµbÙefEYN$ñº¹5|Œ
-õŽVÚ—¤<C
-厞½@ñbSfrˆpCðHÕ˜lz0H8+º?q¿b¼!T‰ic|¾÷ÃnŒ)l~ò8ãbä™
-f9Víí† ³š™8m+ýí8B-؆°1<UåÉÄû¨Þ ‘ïÃot©V4Õ¬ž%EŽ¨)£Áòn½ªÔNÄNBmPµÆ•ûÝwpÀ5Tó(Ò;1]r-“Ú<9ŽAšä?àyÔÒ( æâ‡KmmÖ…lõëŒÜ‚­½)‹Dz´ÐN²×ìì½òäõ¼, I{HzýcÐÛþý|²¤ßÚåÇï‚f=¡!jœMý_‚^ëœ"òÝÎc: aÕ¡9s<óÑeøj¨Bm{"íYµåLø•gÚœ%ö¦Î̤™PêQú¬¸¿Ã}ßÀÇì¨ÉŠâAyŽtŽ_ƃ,`…bfÜ=YÇ÷¬lwrí èû„õå«\'&‹¬yñmc^!fß‹­ñƒGا„ÒT '7oö6xÉFÒTLÕé;H6ibˆ#εû{˜×èc¼½ð»õ7MÕ‡çx#QæLtܵÍGÃúG´.Þ8yõLU¡ô3ÚWÖ¡ñƒDÄF+lîÊ‹¹(~'›Ù_“jP¸ÐqàPá’£û" pŠ¦A(3N™Q{<Hù"Р(eÜ©HT~$mÕ ºÎ¢®œ[ }©>Éðt¬+{>kuäÒC’áÁÉF_.iCUÕ•%<-tï©%‡+4ÒÒÖnL8O Á‹Z¼Ó˜5
-«Õò†íX%¸ªœdÁ†°•˜™ù<J´E3Íö,2õ¥>Û
-`™ sš%†$G~Ó‘{™ÇTåy b#hJ
-†d®\ð£ÂúmÍS>Ê‹mp·ç~©HÜéìâñ‡Æ¢Çסդ‰ìŠH‡è Ÿù9‹/ŠÚ=÷:ˆK©òr¯
-ü¬r=&Ó^·7lJ…²¦Ý
-FÚëPñ¸þHc؉„ w¢‡´Ñï HDœ™{‡6€?ÒOÔö;Áéf…jðJéF†è€CË6>= ò9œ›o„oI&AÊ0qCÆEÎ{#H½:õOªs…Ñ$H$˜™?_ÈOm‰EÒ樃 e>Ž r1Ý–!]w•B“ å„"E.#× @×e;á!í6H$ü}¥¶ñ&@žh
-$ž‰kÉè–½ËíÅ©ô`Ûôø"zç-PÕ
-H
-W5/Ò ÈD˜ÁÖ*!âÏNØW°¢4Ü žñ e33´išA9&‰?D_S$\g²C4$2qZ:/ìOÃ]9Pû”m•µ^A×à¹Ê­bÔû~¨åNYƒ Á3pn7ÏŽ‚"+9‰ÝóT`ÄN„éE¼–„xàjø”S ï/¢ wxRÅ(IS÷z²1í”+
-jJ|?ºÇshÁÍß4XŸÒtk¤dÒ..å×å`79
-Êz!o× È'L¹qGò—½ïBÏ×J¹þzT-\‰~HÃü’Z°‘äk†”Î0)n®„nHvý$­w:Ÿë4ê…;ºyß#÷ÊãŒ=…)©Œ¹ÒÚ;x¡qŽæ$ˆeøq;4utž´Ã=­uhY¢‹ox‘ÇãEâ § xÀý¥‡&ù
-èXsëôÒN’òW¡X’õ%κ’í­ÝÖy;vŒ#à5†´¥råcî5¼1DrdGá–ô§aÞ LáZ+›CÓ×:P?ƒ'šÖ€7jD}F_$=îF騧þ] CÌf´ïÑìMôu=Þó¬u¶D ¡â u500Òø‰ïëvhÿ
-ŸÚ‹äÕ6ÿK¯Oéµù“æ˼Â6ÀXñäËZVaZrLl¯x×ux-í™_¨ *1-9·É‡C3t=ì¶7hÂ(ÓN~:9Åà0•2#‹SyÍ£Ÿ†ómÚ ¯×– Çe¨è§$RlL‰Á¯*ÝYh=‡1ü7[¨ƒÏ³.u]²@Oùý!q?µRvÃdnœlâ¾ØŠh2/C&•–U¼kò(ýBæ`kÛ@.JBfµ¼ÃQI]
-0Vö§àcl‰ú^¦^…4tÃ^§„uë@¶wê–¡kÜÛ9EßÃõ듈
-0cM€ Il†ûÿžF@J² ã9 ¤J ó;ª=£M¾‡YªãŒkem\;¢Ïx&b¼NMÉ8·ŠÍÎQ˜L;M8%M^5ö•4%<N
-H‰ •gWš …÷ã̉™Ñ˜Óm±ÆG$0"Š¥#Ò{Çh4QÓ4vÅ‚ €ˆ
-"Á¨("¼‚=Ùdg?ìÿXÂsî}î¦äZ[ª¯˜”¨xKâŠwŠU²;Ã{'ÈOæxÈ3Gkó霜ºÜ…Jdå]˜’Ǭ b‡MBôÙbkóÙâ+床”ìÓ
-ª¬oš€%ÑÝÓ9ÛAJ2¼Á't³Ê¶´csŽæx(¯yÏ3ZywCU“¾3JÎö ã’öõ”× &uR^3Ì{2°qGVvåfô†ãUv¬û}ñíLúæ
-J8±6”­uVÞ\iƒÄ®´W^Yl}ñçj7ònÈÌ©VÂn•'^ú‡òèç=€p0/©÷cR×z¡7—ÞB.­|D^ÿ2DNY£=ýÈ.¸ô–úëÞ$1ˆàÓŒ¢€Ÿ·>„H÷kj3£J~tž µ}"ähÅðؽIvé‘•Z|h©qæàÎVÄT¯†ý|î &A#(¿Ð q;zN±GKËuÖ%ª…WUÐí€
-9YâsNœâf÷8©pT
-úë#Wþ½­lù¾!åûtøg–VPŒãCY®óôÐÖPº<„Ï$€ü$GgÜýú¥µï»[Ùöm±¾2j%æ¯UÝZê‡ß_ÇfyôB˜gä×ðK
- Î÷¨øíQ8l"×ð]jn,¾.¹l’åÿÒGÉø§E ‰ ëÕÛc¼wOýãc‡‚Yb
-ýSü2ß8%Í7‚}x4+#ïè¸{'ò¶š]øÓEˆ Ls+¶Îv Œçkƒ¤Ü¥wø¤ÕN|ê¾E„ ™%Ï(+/dc£¶FþμØE*“V¦;>â‹¿»ä²¿Ý2É©O¦éë*B²W/Á»Æ¤4×
-ðE57í_»#ðGß–™U?¾H¸+ƒä”Õn|btFF<[lVœ­¼”]ác÷gÉ…[#ˆž>dÂñ¼œ4‰êu
-èu¿–U4 ðÁ."bžgI+š{ I4¿.¸ãì*¾zlg ŽUîîªÏ þù¡ULX¤$`VFÛtk.éSCþ¯9ìÚ®NZ³9BÍ°wÀ¯›šÊâ]ŸPÌ\øU„ñëÙe†ÖŠkæx*`–â<*zŽg öŽ½½üê¤0ïòÊ{è­3; uº*á, òu
-øõ€ž[4ÓÀÞQl¾g°:3d æ¸úëî›[Êâ]5³×+,½9¢„'mNŠ1€õ%-l!Öûñi“|Pì//°0 Ñ!îÈ)¦æY{ lØÉg+bãSNbFxš‰ÜP‘òÝÃŒ¼ùnZÖ¶ƒ9sIù[£µYîHlÔÎ#í;•Ê¨«¹moQÊZ7HA=5/d¨/ˆšé¥¡v™«‡òØ3FJ_鬈 ¨ñ©žBÊ|+ø¢ó]iÌÖ0.ùp^NäTŸž_ž‘ÖnS’ý”ÌqL¢½ü»¥éùo–ÆÒËÛC¤ÂSÇ«Æ]«0
-*"!Ì?LË&y°C«„à×±‹W>aï-½EÄïjxåë*&xþ5üòZWÝÃs¿RÜpiKopI[}ä´}ƒ jgŒþÌ3@xtìRÓÔ¼½)⟟2sgYÐãY0JÑæ7è;‹¨”ƒÐÓ mœJÀÌlS³½c„̈‰ ê˜ ÏùžåefEøm-§ÜÜ[z_çÓP2¶ÔÄäϽ˜ûövø£yQݶ† ÞT3 ‚ÈáSŸó“Ÿ
-â‘ÐjŽå@o‹°OB˜¢S ¶,eÀÕ}×”OÚ[Ò -ÓÖé¦_Ò­3 7|+˜¢%¥á³žÚz¶Í¥ø¬ær Ë%ÄlƒÏëù•iŽ%Ø]¯²Í#ïy…„§Z¥™€ÝÐŽ@.†ehDÆG¤˜W€/šîÉ?7»wNN+NóÌ·gÆtœîý™Î,ëd˯±ïçì²ðÉ-"$¦Æ–ÛíÙ³€÷KØëÖitŽ¼¿î±W‘02§:fÛ©† ¬÷:—Û²v'ë.臊 )ñ5€'5¨'·-3½ù9¹:¢"OuŒ¶€óÌ)†å}”ëß ½LYøü ’P~´Ž~â¢AÞåžÜ„ŠÖ”Ôqñaf| »v°Œ.ˆ™&QãÛ•Sãû³È¡öD‰«8Q’ q Ü›ôö­T¾u©·"¹5Äô¯"@^!<Û½Ø|ópº%#ª¸m—C8Ùâ’•· ¯ºóƒr>)¤à¢>™1-¦Ü¶ØpË%„fE”ØêÔ›žÜØ[Ääùå¤êoÜþä}ªÃT¤­yÛïªnê_Wü{ç]óµo‡Ü¿ŠÔªk¹¹?‹Í?5rqƒ|b aÂrl©WÔú0²Ñó,,#”…<ÎïåuÅ(Q³P1=×Q¡gÛtìg3‡î‘J÷P91ød{|2¨ Mª9–‘kB
-r}BßûË܇ŒiúšÍ3÷̳íÙ1£[Ê*ûõ}Ûƒs扆›Ž%øÝ SqºÍÄ'Ì<žè•ÝyÒÓïzm±1!5®Ü/ítÙ’å^Õù5ä±–Oû´Êls —t“øGöµ¡v×
-­ôLß×Ü@íÏ´Üõn ŠŽuxpÂ:ôêÄ20h| ÏÑŒÂn
-iˆ°iýIŒ+òɉ•Ac<±Ç¡»ÄäŽ%b‘\h
-pPÀG51Àb&,j¤Â<âgäEkfT
-ÍŠ+¢J\YTÝòK¨U!5µ9¾ËÂuDpP~ê]Þv̯x–;ïGe<tL5ÁõKûóä’O"
-ا Tz$è|û"Û6¿­©½¤®H \—0r ®Urù}g†ize™\–6ßûââî«Ö»ÁU|‰v¸)]AÿÓþ®-ëOã; ÄTZçënxÖ®ûî%l}_j™ëmמjû:Û4Û|GŽuªúÂÇ ðÏ^qWNHÖó$®!TG5t¸WFƒ8%´*Ÿ’×аڼëÐáBË Å`YÚ&¿ôª]ÐUVR‘)ó ; À”^
-¬Ku|ÈϺáçç\èùÐ2 ½×Ïv˜„ˆ†ÑÕ tŸ˜88Ûbk¶q¤ê¼‘WwQ?\vÞ:Y™žP¡+Ouƒ¸½™Þ<ÍèËóÀýîG7 UG"(¸Ž*ôˆÛÿã¡rƒrRE@ÉiÓN¡ó_!Ÿý”«¿ú‰nbÊ€7<J±`ÛBc†}ü‹o­ôç—øÂ%éÈ9’!žù7ÅasNPÖ]šÚéç~sp'ýjÜKý¡W½b8¢¥uEMÔŽ°Òâ^Ç<?–jÚ¾¶ÔG6õHÉ"¯0ÓU<XQLÍÁ9–»óÌS+s°;Iûƒ°ùôË>»È¥I ܹNªHZG'½R*Ôò¾=SË«¼0Þ˜þ÷5RÁ¹ÃÙPbodÊ¡b©ÆàW÷fQy10#™X丑EŽYĘžÕã<(¨¦@Ïv‡‡\ëÔÚ#¡<eéëþzÀìûv8ü:¹ËaþŸ‚Ñt âÔ®Ž÷ZÜF§ˆV•ÜfcÚã»CÃ_ìcË_ã’Ó}ǯ%78×)•Ç›#ý!5oð»öÏfjOrŸwKºŠ¢®±-,eà¹
-e¾5&Ì-ŸslN¹e<ŒCD)Ùÿ€Èü8¾°A-þ‡Š]ò¯„ª·6ù‘ÏuJF1fAEÀ,·-Ñ^¸W(ÏÝ˸ÍHåÅYÄÿé˜àËÇKè'q5ù¥CŒ+°¯ôÕ«P@–Æ«/½Aeþð®ç·ôüÇ?%-,bÀз
-0yna÷£‚TdXÞ‘´ ’Ãsw¦Ê¯Ø™ àAz>Í&"~ZAç¹D„*·˜XÓ¾°¨g[ ¬_„,0W^¶Íµf|°!üÚÞÛŽœ¸šÞúÉâ:b­s¹%ßü¦<ýàäf
-LŽ¾µà“…Ûš@^ù(Ã¥Öù¬ø
-YÄ—»%ÐÌ­Ñúó–áÚ3%³vß$ì ,
-,ËöW;H_Âä7p~;C::bGyÖJÃZzCÄÈÅmÏŠãFZãÁ&ˆ
-óÔ§ Áv¤LèÆ;ÌuÇ$ò×”™ ÿŸ»æp‹CIZXˆ¯NïË&@K¨ kÓ1þyR•é%ìü–¤ån|•CHØØÄè
-’°2°#šÜä÷|r„I+‡30‘®9ܸ@}5·þ»ýl,iyú4¬ïcûUÌ
-¿›½ñæÉÙ Ú#”KG–ø·ÿìzÍL™»Aðèã­Ð#§–ìʱ·"RÔµÀ,4këUÉ?⼿§ÖxäÀr/Õþž]²ýž^èƒg&È»ß-Tèï6Å¡DÝÒ ×ž·¾†_©{‰^y7ä×
-ïî沨ü¸m¤)#ª~Æ‹ªGž”Œ{ªíîÎ1'¨æÀºnòG9ðÐÐý·APýc@‚»_ WîXTK©Ú'äïª-ëïŽqB¶ëì‚OŠ½×±A7âS÷LB¶_ͬñHQY‘eby|¥“¸«¦W9'ê.:ÇþZ€eYu1ãÀ`Ò<2^î"T­y‡v6)µÎÁ—h®ÙÖ<‚úÀ.!ß±OQïí.²b.ί¤–î鹄ŠZ”csÀÝ»¼ú¼øbPÍŠki•{zaGDß/œê(=ªï‡\Û‘PGU´†ƒJSÊHƒ€ÞT±þqÉ-c5†—€ËxGQýO‹½° š§L7ØÅ)M;*a`5;fð9+¯Wí8o}} s')mãRöVH•»óć<η=âÏ›=¢Í)b‘¦šÖð)ã&.Þ¯À,t—žZì-8êW¢ïnñÁwa4L0ËŽÉ»ª~™]7¼ÜVä”4_sN 2ݳ¸› # ‘²õtoOîØFЙÑ
- zíåãÓ‹‚{Gô¢’¬`¯|œlÌ
-<e-7=ÓÏÆ à¼TŸ¶Œ•Ð¾xð/û"7¶,üó]HÏ£xWÅm-qaa5­:ªaC]3ø{2Þ½¿M®ü% m-O­
-ùc/°#ë¨ ‚ßå¤ïâêÞ"©l}äáYSÉ? mE!-££®¬¶å%u\4˜ÉØÿS\ž_i¦iÿºûiÏž9ÙrÎæÃN6lj‰&nŠËj,Qƒ U©R^x_ªŠh²)'}¢±Œ
-J/¢ A@z[Ü™ÿc_ÿç9羯ë¾~×ñ—µÒ;b†‘ºÍwmW쯯Ä5¸æ¼cBÓÑC*rÑbðNÞ0ÒzlƒH 0”6²ûvÞ÷ÝPAÕßd­´Þ¸…Ý\£ÕÇ5´Ö„†þ8kó›5ª¥5…ÔÔº
-èN›§¥¾%Òƒ¹Á’õ‰–ïfÉ•M¨‡/\"AÁ&áóísÍ‘îÅôF\/ )H÷ögZ¯.2oþq‰}÷JXN‚;Þ³I×,»Öú
-÷õþÚ‘V@ð|A•À¯Äû¹ýïûŸZ®&4ÃÍyÄ8vÈ^WéÍÞ呚ŽdüÄ=&ËZ9ýY¥5¸ÜûãÞÌã?G×iMð„ŒM&‹ÇXûËÜŽ˜N†×Çiq=ˆÊZy„#-±6¬%T‡×Íq“¶p1!¥6mÐq€Njé­E+½çd‹I>TýÛ¨0³ÛŠ®É7jZûÎì@©ã}×5ϧþ›i ³?fRzñ°glß™tùURæÞò(Rÿº§ró-ú¶ã]Ïõ[Ñ´ýâM&áûì×JH-0g—Ê’f:níô+•¾elyÒÂDžzD’ ÿä'Ÿ’õÔô÷½Âœº'¦~õK^žo³ðIåÀ]߇ºo­MW]³ø†#³tÜüµV'ëùÇ™[<ñ[H:sîáK¾:XÔŒÓ]yZv°ÔõÏ”âÜÏfÝKäv…´ùÊ™oâí…ozéÌŽ'u„¦ƒ/è’¤Ä%|TÃG…×
-½Æ=7xÝþ²õ›¸b¸*¡$×çtLıUDÍÃ;Ž+ÍI5³ýÔ!d‡×ˆ÷ÃJ˜'t¤š”™Ö7Ð…M`ä+Ü1’&:¢Ò¶IiÊ&ODÃY P¢ËÂkØÊ W•ÔŒ<9ÞÉ-³=cf#Ï·AxÆä†ä±*¸<P–ÒR›³F6:g”€YË‹×îù‘J¿‚Óu™¥Ñ5nwB…¯ŠÂz8ZBWì}ì»~lsÎœ²×9›˜Ñ0Ã^D&´,Ä‘‚ð0ªÄþöØýô“;ï{oÂÜÒñ°˜ñÂJZ{JkÅÎ!œ;`Æ¡zæÐ !Å@yÊLGÒÿ¤7'¥9›ÌÛ.÷((ï-ýêâRs\JB`#:^ÿ¾œÝ·LOE 2(aâzNoh•XVk³
-g³‘;2òñ!Do¼|³£|,La˱M¥¿w|aÂìÀÿ0í,lD…¼Ÿ¶0ºã—^5Ȥaý³©Ýyê}ÿ*³5»%äf·¸Ä¢SÀ-8! ½É!„uÌx&˜¨U:ß@ #åqLM¬Š©qrBKÎδC:ÛIwå`÷¡‚…øÅ'ýpâ¹¾Etip}sçMç-ÿÂÓêÿ¿}8Ý@ur»k]Ÿ¶ABûGTíÁ"fLsq›Žgʉé…ø€
-BÂï5¹g‰·k¼î Fˆ:ÒJˆI«„3‰)a=ȧ Öx‰ånXÇÞEòCÿ
-«Ñ;µÄÔ¤¼mŒç° ¢g´Âw¹:°Â¨ Éù]!¥ 7 ç4åôÚÐ2¡<³ÁèL˜™O”#U_†Juâ¦?hE5¿ó~F^Oà ¬
-ldÑB눯k¼ Ø›îOÄRßíáÞ"ñ¶ÿg\EÁbÓZKÁHpµ3m7B‹ý%a9¾2·ÉÅE5´ÆˆšRŸ2ý9gðRïg.ˆß¢õCw`Öz’s>›‰;d/ý
-v[a‹OIµùMJÛ… ;BÊHV7舼 ³!¶"¥Á?ˆ©†îXxøÿ9'Ÿ_ا_å­ Ìrm£`øP'Þ[ Þ-c+çQe°Oþ•]g Š–q k’á¬D†Ô£ME»Lš¸(ߺl÷sçU÷LOɪ¸æO;‘·â:>aW \_F2™´°%Ï[™È¤~¸~wùƒVVÿmXÙWQ°³0'n‰$eÒ26ëÄ%gl¬þ˜†ø0¡%Õ. ”ù1åi«€^tI_dlbntìk¸½'["VÖ
-öHzSåœã“Å]¡(bóìËÜ'¦ŸÈåÊileÂ*{žß‘Ê2["vBÏêñ/V;
-œ—­Šñ9Ð
-É`Ì€‚³ôkk¿Nº$ž\yN9žáóV/à¨î‚SÁ+-+¼KÎNZ¸-9³!e \¾–
-<Ö¼öwr}’TYäRþ9pí“)þí¿fMÃy+Ô•ÑA͇°ÿÐ#ç—œ(eæuœÄi³R°=3ð`šF¯KºÄŒòªBuy´¥ø!l`´¦ÈpiU9·
-RvF³žú½~èJpzÙ¥Rí®Œ=º’Ü
-qÖõôUamìÙÁ†LR°B3ó^DÏmŽë¡;»ËBÆA@ù {Jø"c…û?nÉÕ~À[~™<ï•ðÃfñ}ß,|'nâvüg{üÕÇ-õ‹¼ ¡æ—¤Ð¾_&=ÚV<Ú÷Ëe»^5ŠÑkƒóŒ[q³p¸â}ø¼ìQ+AÏ¥0vgTÇnÏ:x¤Êšˆ–]’2/ÿXÃ}“´°h·Dü¬™t%ƒ1ÊNiwI<X¶ úö€÷>zTª¯JUr+ø ÷Ôm¼<¿=ǹ0ÊÈ“Z˜µ<MÙŽ†µ
-Ê1û¬¿ì<±5û"m‚&NcÊÄoß[–ó|ã?úTã%7:œµñ@]L ÇtjV¤LÅ=)=»>m„[Až7ÆáÆ]›ŒyàU‚·T I;BL˜G9i󣑸AN‰êà–¨ŽygóÍÐ…°ºž4òÛÁ¹VÿkrUèíÀ÷)#§)kFzÃsìÚÀÔðåõW¤³·¥âQ)3ÎQaDÇkϳï&Í(9e<
-Lφ¦ Ui=¯9ƒ p%»„±çxô¤ä@i@ïM`·âò®QQÆ*¥úøäÃ5˜X\‚»×QîO9–s(‘•Ì«ñE!îÐ7öto…ºû—"sݧwÞª‚Ó½ú¡¦]°kröqÎ. –—ä¼}ÀJiløf\7t=8I>çzÒòÉúK¹ø"ç^Ê,gº^±[”äKœ„›Î¥ÂûŒÕ–Õ1nå@Ï˶ݞcÜÜœ¢^Í»ÄPX'!­M ·¿6‚VV(ŠKRî,Ùè ±ùî¯Co;¿Üó)b¼îŧíŸÇÌ|.ð²¿,>¬"С¦ø'q§°±¦?ûßÒsž'Ó;@oI:2Q\öŒ %ï
-vÊÈC2eeÂEæ_ïÎ:(Ô…)e…»çÃÄ}£”´ëAY+ò½ÄÝðþÒõ÷ŠOŽ–}Îñ—÷p{#:굈jÎyDtÐI&+Ër44Ë®OYÄôÁGS•u‰$ïôG´ÌÚ- ûVÔÀk)¬é¿íH•¶D¢˜a ¥hG@'º^°Òkÿ€Î÷bZÅ-‡óÇZ1²š#¨6gàíNø=áBÞÊj+,‰©I“”×
-ï…†®{':? N÷)»Øû^NÏá›XvCø(oÏ‹B cÒ²˜„”2Â;‹ìú„íK<¸ŸTqJi¿÷ éÙ˜è;›ª-8…ļ[<”sŽ«âÆg#:5èD€ùŒrêά°që5ãÊÒ§Ö'zN¥ ÂNÀ%`×!¸mÚ½ôoÚyûSÂgà_§ &Þ½”‡ßÒ0ëv
-šÿ|xh•O ÍÒZâF!!iaVTÊ°ÁoÌBÕ!-¯)fõFµÜ†¼…ÛV²sq€{ú3FA'ÈZFΦàîh‘vàÛŽ­úå„žÓ׳îæm9º
-ÞQ/DuPKÖ&…ÊËjUeMù0iâá-š?7?lø x³?ƒÉY¾×”o¶5¬ú46ŵ¢ž
-Èñ’kDä›üSwœ˜Öüis‚\fƒóNtý-¢¼Q²‰v2æž…ŽÖeèѦ\5
-º7ßpj‹žQiÖ!¥‡5Œëi3£!g哲–ÿS\¦OM¤yµµVmmÕÖîlíìT1ã0医«Ž.53Š rÈHä¾ï¤ 7 㢎£²¢“û !ATH9:ÝIçtÜÚÿc_ô»TWçy~¿ï÷ó‘1j5è°¹ŒWIKØÅ„l`ún185_òÈ©y'·5k§Õí.Q.$ôBÞ;¡-†¦~Ž›@'z¬bhä ¥u’«³^f¶Ái?0Q/íxD,8}p× R0#3ónˆ2°®Gàϼzˆ;³ÄÿöOó¤ŠßoÞ¿~îCL{3„„àîhfKaHz¸­/†UÊÄ:³Û¿Øý¡÷‹}·ù02¢4ͶV¾ÑQ®6%Ô÷a¥àCP<”[çRˆÍO$5§í¿Ë»Ô̼GÔWô‰ú²NVÃî ©¤™V“u–ð)¹ ù øÿ„œ[z#i¥Õ.oŠ)%¿¤0j¸ÿ&à³q=·%µ&h’Ós.z}jýÆÙ„‰ôí1è°÷Û¤²$ka$ÍÜƸö#l“L  ¼ë˜CA¹:”6Kq¡EÒÙýzæö–C’AÔ#§Î#ï[Ôƒ)§–w`Õ²â:yëÛÇœjëdÓ§ÑåÞ33»ùà%¯9aUõ¿]¥n¯ŒöﮨH¨UN>г®„öŸ~µ4x¼kvò÷L¢–=“Ÿ´Ì{ÿE—´ÍO"î1qìåpµïNWEÒ(èÀ<£üRxŠYe„7&YOÊ3>‚lŒ©RvùØ*ãÒëÇ„SÀ3Î V% ÌœŽ7H;›†—4H:s616³›ö–¨Õo—hU»ËÌ‹’„94Üø ^}äñôë'¤s¨Õ˜µ3ë3VZãÁÚ@mLÏ©O9&Uˆgj,f`ÖEu~™^ã5§×¤øÄ
-»öæRð~gæWxC-Ú3ŠZ‰ÑÌÆì<⟽‰øÆTñ5N£ÿ.î_áG½WrN/®× ûï±Îî>—u$MzÒÄjÆ\L\ÊĨ/’*Ðõ??^þ$x—øýÞª°Ñ<Ûù àà&Ô)Œ.S«ÓFVâätÂ..iwecŠ¬b"j¶F_rêJ[š±bH3’ۀĨKDË:xxÄ.ê¼JF12¯+…§n‡ÇgC#꣠Zšµ«è˜båÁ½fl¬ö§¤Ói§ˆXA’¨‘ôâ ·d\b2êUqs>í(꿽Š…æÿƒ"ÄÇ×C3™uqWä~ÏWFyõ ÷dÃ_]3ÿÜþWw ÿ›x
-›e]·r¨äá ¡à–“³vÉ Ì-¥7LÄ!%dÝ2RÊ*w$ïÎ9Õ 0TÚ®$më˜?ºú*Ó&A[Ù§d¦@&\cÒ‚W ܓבõÐë'½ö£€>mÏydä¤]œEÒŠÚ !Ø"%fíœæÀîdàfÏ—Àwˆ7p›† ;Æ%¨CËCj!âÜì“Ps^V[Â4øÃpÙ¼ON?
-ÌÞÎzº³¿®ßQAÏÑ»·§ÍôÚ×Køs[N¦Á}ƒ>™ÌG¦ï8U´ý\‹ÒKoÀza[ZϨM†€'±®æì>꜉¯›bËŒï6~ÆU„ná+
-òz>í‡ßôtÆ¥„×m°œŸCBŠ¯ŠÛÞ>×æQztEÖñêIwEôEß׻φÏï-‹›b/”„Ìš|
-ŽM–#ã3¥-•´¼5µh ̯d—‚
-!æSp1б/»eßLùw ÌÉÁ*·6¦cTïë}9§RðÛ–vîoeŠ‚ÖÓóÛ#Où5[WÏÜbÒ­ 6k…mÊaH5ñá¤Ê˜%=«ü« #óòî
-õê÷äGÄÁm‰êˆgwž ^Š,³ðoÌ2:êÓŽ—Á¬gÝœfÄÉm:;pЪÞ5ª’âD ì«;Ký_¿yL¨L<£TåmŒ¶ã‚õ.¢Q¿ÛÖŒƒ
-F°.l$_ȬÑ."f æã‹ÅPÌ3æ–÷çç”ja90"Ä<RbÆμ;d}i›†‘qL*’æ)jWç=™ [¥ÝY§´/ïQP‹¾>öÝw¿í ½âü ß䵿äÜ|ñR2êP2Ó6ù@Â$ïI¼„ˆû:~CøNûçQð­I³:k–à0à©¥ ¥°‘b% äSâ÷ä|ìö´P•6ãOÇt}§sÀŠ¾qMÁ;?avu}µý÷„|¹äöŸìÝz-¼Ì¨Ú3ˆqÀÕ&36%es‘øÍÖbGeÁÉí8ôɇsá@tu¸1òœÙsî•„e\
-₲$ìûF€°…@ö}Ê_2o?œSÏ}?ÏuQ2>Õ!> ~Ø_h»R odm\|Ö15›²Êe1ƒ
-áüò/ ÕGu"|Ú.“äþ̳G2ÕÃýQ=[Øžœ/nKÇO·ùœ#%ô‹k¦ërÞ$
- 17 "×{çQ×} uAÀÎI#t”Ž8R‘jBjV[Þ
-cóVfwDM¸ç~õè‚ûeË7!%¶*edvDbJ`ß}ð™Ý䙣×8gÐeEr{¦ý²AÖôu²é\0wÁ. Å p÷Ö{T¹û÷Ö²”n°¡à ´…Ö)ƒ*"¦ûâZ)%n|6‘0 ð¾Æ5Óò%ÿÖWÇïû*ó>)e…cÆaðÇæ£nûáÇ‘^ïÿh·Ã
-LEÆÝO[©-Y»ˆ‘»§°16
-¼AžtˆÙþuþàÞ{Fóá"¹: €*JlmHKj (MÅm§¸ùô׌SÄN98˜¬KÄJ…øˆ†ÓV1ž予žØ˜sñh¥mùïyïó•C «#¢gv¤­0!k…¡À¡ÎùyÃ<Ýú“o™ÔÕOM„4ró5©aóæÎÙþø\Ü" % \TÉ
-¼ÄŠC
-©jçuW™óEË¿7æú›jRgÔ4ÜÑ °ž9ò]ÝêRÔ"d—¼£ãy«ˆ’3³{“ëÔ†’ƒ;ÛqŠ6”·sCú¡Ö°NB®QÀ=¹‚îf]˜š‚‡Š8ñ°‹.½d—'5쮤v¨5­…{³.¡¢·ì¾iûÞ$«ø›wæÑ¿:Úã¼K@+mŒÉ²V.ö`U±ñ¦é|DÑýSÖDi,Ù9è¢SHIyQ­=‰ï‰­áîVþOq™~5™žqø£_Zí™ã9Õ33ŽNµ£âX)cDeLØ!,$d!û›äÍN
-3vj_ÆJéð¨(u3ƒ%ÞE*¢‡É¶‘_“VË 2}WN*÷,R@¯£cf˜º6Þ]Q3Û²º!vZÃÃd‚3vÄuøŠ¨sÇ5‡Ê‹‚~ò(™Íû
-zOE­ÏÙ!üïÛlVn“†Iš)ín)úúÖ{ôÕ‚Ñ^ä¢}2r­Wny‰øA-*?¹ùºíàgTÖ
-έç
-ˆ¡£N•SïÇÔð@Â0:\ ¿'Eÿâ‘Ê|‹œö¬ýÁ«Œ]òÏ$Ø£°‰Ù_ev'Ž\HÃîI-C}¡ErýÎ4ð:ù`Ý¡] Žéi+›x`cBZF[PÅîHáð±fk¢õ¯1 ¾þ³E,Hh…ôíé¾B÷‡ŽK]y›Ó¤[[3PO)&:g¡û¡Ð##ßÝŸ%Vå,lÒ<8kåÐ O| ´ú°ZÂJê‡ùÎqb¡JÒþ”}ï$`É¿' Cœ´E,Š­ðÈÛrBÙÚ»®üˆŽÕ®·-í-ؘF]ÞœêÌsD'M’1Ë¿•ÑÛ§¤ÔåHRËê *P×\“µßÙ^Vœ>TâSÑQ#ìÊè‹°AÀð(Éuþ%
-"fäÑ2ñƒŒCò<fb“ÀnÞÜ•‘*¢z>)jäà¬cÝy‡ðeS0|h‡@^Òº~·óùY“xä®9LáÖ,±tý?h”{ñe6g&7}µÓ1_7èø¸±¯Òöyfý]~Pt\ÊÆ8¦`A\}jŠqý¸õUËÕ˜Â~v
-$‡<QÌÈìÞ•ao¦-09»Îe7«#œ?¦ºy:¤ÀV:¹pv“/ö(qµ¶ñÖó±UκŸjÝÃïÂ:B›†—\%(?é’”øÕ´û= æ{cožŽL¯ñèY›·!ah»í+ýñ5îÇcnióO>áÎŽÓw gu˜ ž”žÑž2jFliL‹)‰¯ÐÚ6?Š]3œ¿ê±8½&`æ>A„„ˆô.÷\_y<å™&U¦ub¦íýÀ­9~ÙéøòQ¯Ðï‡å¬Æ,è¾´™„H˜5^9®Ø§ #@v‰£€«#KÄJÇûŠo¬¯KoOµ_Žè TÊÊg ŒKN½ûi†P´=E.ûl†úÿçdRfB£WÝteKZ}ä\~ÎΤ,<šoPéx‡8ëšjºSÒ‘½–6‹8ÞefKÌ( ¤ÍŸ¥­£OC6Æ-m¿¸9ÞtÖ'¸“4ˆ ¬Mò$f„q1ŒË}?H™YØ Çù¶ñ‚Jrý+Oªþä “531_Àüz
-"ãàB‡[‚á´EÄë9}q=­}WŠºúÊ?fzZþ}ÚÀêóÏÓïùik²å/ûóýE€3z³+bvÎ,€<ªÁÚ­9\aHË#$M¼Á¸ÑÒPê7¦P7'Û.d,Ƭ…Þ*Ôµ;G«ö^ ©8¨˜îI@vÈ a- p?³9c‹½¿£¬
-h8蘑KȬ‰xIð= ç ì«Èu;2jupFùå´ºýÙîkÎ1ä÷›ï;/¥,,\Î)NÛÅÃq ]• ´Ã¿aˆ•pŒ<O;$À™vØâ=9æFT'bÄM;:¦Š"¦!QÆ)õ«{ÊtÃ'v¦º®4èAþîѼíRj•öù—Ù(?m}2™
-
-„EbL$å
-…"Qa‰@(Æ4ÿ1¨Hœ/à—ˆDÅbð[1Fä‚„‡s%|¾XXÌ€ Ñ᪂BQ¸¨ è¿}çvÄ÷ɉà)y×xZ^¯;~“\ãµ|ã
-ÔMœ«[™ÑbRÖËÌ $Ú£É2Ôä[ÓÇ[´Z™ïÃg10 Å'@•.‚CbË]à<Ë·«ÆǪÀ…LÙ°>V‹utñ±¾\|c.ûa.cáQ劊óEÅGãšoŽ Ï5_Çw|¯ý÷íÁÉðu¹,Û㲊ÀK.åþÕ+  æ
-ïl9nUÉñKµmÕ˜¤Ž×Öž9l˜£o0:,¶Pxô(„X&à
-"ž¤ò‡‰ESpɧ*æ6·Fg -»óº¶d@×–‰­Œ¯Œ»W’>MC’4v1a»~ßkh1Ý1:7P¹7««£­½é€}€ñ;µÉ›,¹hîˆûLmq¿càÅŒµmë±öê³/&åñYeyrNYÁxU• ìT%ü·ïÆw>ˆFÑ9[×ò‹OûJcS½%‰¹¾·S3ÚjÆ=ØÆ OU›ôõ)¿©+ê–_Øž–oN´ŸM¸Õé0Ñ’t+.Ñ‹š&6dîKS=íÓµ$牚ø<QµõH.b<zÉ«ÈÈGZð”×ÔEûíZ.â0¥H³lgF]¾1Ñ]°ûXqaÿ‰®Žõ94Éy›4>ëTîL v3ž1[ì ð— ^ŒKÞ|þàêÏö&»„켡%íµ+¸€]ý|²Gøì~kÞæŸ:Ïl~ÜY¸ñ°é×±'²RàÐÀ-:ˆ¸GWŸ˜7^cü6E&4leîјwÄu«wf¬»O éÐè(ȧ—j%YÊ¢‡’ Zä)¯®)1?P“X0¶îytµÉEC Ô4ÿe²ùäæc‰€ 46ÕˈÚ ;Í x&[Ÿö—mO©«èÀ™ [¢ Õ»neEÔˆ‹XˆÌšÝš
-Ù”ÛžúµÛÏ2>žð›{^¢>³j·|æºË-[‰tĬ`Ãæ~nÉ$Oú”樂—Ù€ªšñ«¯¾Z÷‹ êÒa³œ¡ôÝ)Êнï¨Mø5 鈩&µ-eUg—†,iÏÅ$ãÂV%²» ªªâr*`ìI/{_.þºîºû
-Ü÷`uØ•^qÅüƒê]¯Yõ;sýGSÃC1ÐkÌÒ÷3Ë·d£×Ó!§)MYUÙ“‚¡ˆfšÒµ³a£,»b7¥ÁšÄ¼®‘ ØTìÒß²‡1»ê<Xc#FyŠT^e(eS2Ø_½?¯¬Ø™QÖy~ÓP¹‡—ï{¯³¤¡{ÏWl}‚Ÿß".³!PË•á!fÙÔÇRš¦”·¿Šõ-/—Á³Z±c^]ãæ”âüæ´ª<AYñÇŠ·b³†vôHpÈ@Ͳø|žGQ]°t>4×ÒäØ(CŽí-€ý7ÛSœ\žKûñ
-Ö×Wžòiê÷´1¯¹;rÙ^›lçÏýç7tžØ™
-÷ge¥¬‡¨Éxm½IŸ±cräÒ±ðï:O½(§ÖÞ½¹žÒçŸT¾±ó¸áMƯ¬äH³4t¨™ƒ`H§–9¥I§Ž%í*ÚoÐ‹êª eèä(cw6â´~¹îf©!3è!}ÜkjÍ™šY¿¥‡ýî;¿1Þ·ô‡ú_ºGê}äT§<.]ô‰úÒöxç©g¬{cë£Ö“Œ[QFÏ«*÷½DíÔ»e?Z¼YõsfÎ,ËPNctFZ²þá•o<¬ûëU”±Þþò4xפ)§ž ÙúS¤Eκ 5b¹æº•‰Ø4thP zA—]»“]uÝ`C`?ûô- ¾‘vë›2Ac{&¤“dÃ:I†Ô6¥<& pØÀ@#½ ¬ÌR H+žY$8Ê®áÂC.2v“&†˜×&M,©rØœ^q²«6½4¨á@ŸçöÑw¯Nvä?è.Ì®¹Þ㞎¾Ç­ g×]·>»~/³ìäBÆnŽ$êé
-9ŒPÛ̺ë6ȶgÚó_L_;¹=ÓvzQU¹:ÞVz³ïÔ±r\fOM¥i¿žš›®¾š¥©¶ÚrªÛéÒi[§AѲ˜˜
-³óV.´Kˆ w03p>ùãõÏ¢[?=bŸ.M;¥¹3oJÕt8©hÌMÊðeyÛÁιäË[§6~æ~zÞóåÚËþËdȪ)öÌŠêwÞò.å憮S°ü6^##òN<õgA¾- ™ÔÈ“tÚki›…ˆjØð ™p˜˜OZYs Ã
-ú±Ê0Ø¡ÂÀ—Hö¯;=ÔÆÈCj}ÄK¥ìF"eV}\–µ\yLgF÷€Ù}V͸Çé”÷)ðž–Œhz‹~A êQxèZ6Àý.à×]ÊŠ`b–â=ŸJjúȘ´ƒŠÉ
-qšv—”íE¿e¸–ðŒWÁ>Ž–‡®nO°þ´ûáîÙìÒp}Ö§¼Y
-A\"tÕÀ£»Š;mLrdd¶‘ŒCCdÌ$Æ`ˆKFLÃÕ¨U^³deg5)n'Áúìë4ÈŽhmg†ÿ]~~¸¾úÅɆÃq´‚-—Cú~,bSaa› ŠÂšô2e…èM÷SrÝf"×ìrÍå¾xHÄ¢rh!mÕ×2w-c³ÑëVcø§¶1öšN¹ÜÄ$.úL̬®¥Í“6é˜u“†JB‚B@yªÒ€~cP«¦ŠXÕdDËÁâf
-Ñ TAÞäƒZv!0j"¢£.:nÓUb%±Hpå4€"ÆáÚ–û½a³Q 1[ÞWô†f°´*i;îÅeO5 IòauÏæ´ìêöŒª…NÞÿÇñºÃQ[·èé¤ÃNT¢Ê.<Äû~¦ïüþ¬¤Š›•Ìºç9™}PIyƉ䣷Túþ‹˜mrbàëÜ’¤‘
-«º™„MOgÜOr G
-AйƒjV1 k), ê(XÕ²œƒÃPß‘O~cÑÀÉùÇ\ùU‡ èzQ¿øzv‘qwZ\w´¨ï.†¬’ÙÔ«;$A ÉˆEZ\Ñõ”‚ Vem¥ ŠEÀš»‡‹¢†­Ÿ‡/ >óÐqÜã©DÃ¥âv> k-U·ögä 3Š¦ô{ÁE³àëß¼×´ýsŠ0ŸCR^Tw—D {€ïÛ“¼¿l¼áÉ/h:×tø/:s0 ^)ú8ß–V¸ßWø—ŠË«(làï­@¼ýIÓ1è‘ ;Êj)½ìí^nYT_X^)ûÄ ÛSü¿Íz[?<cSYuéË«ÚžƒYþ…­7½_n½î>µõSÏŸ¦$õ[Ó¢ºQù…ßfž*nÔ`·­˜A#ŠNptçýÒÖÃis. Ì3Ë™Oýtb
-¸å*@$!ÉL®äw¶«¢nwµzpU´á’˜ äžî 3“ÉLf& âöé/}1‡sLž™çù}¿ŸOsƧ¨¦Ã0ˆ3>¤ŽZÔ…ÄèÃâÊðýÒšcäpÝ>THTtmçÖLýLÊbÎEÀ‰bc ño¦6œSÀdF+s:xXrèn)98FÃ9 ËkMX-àt­•yLËÏze×qo_‰)oåBjYÀÄÆÿÅ&&Ÿ“!‡)ã7~Œ9Gÿ›²; LÙþwç6þϲ¯Rô#ô9ƒ„\i&¼Â‹[¯šþ´õºåÄ6d÷朣;üT~yíY÷_³‹êzðÇÊ×ß/˜ÚªV~ì<½ö”¼3©vç´õûà(̲EU¾/…Éoæ½7_çùéÆßoN‹Ïc¶hvgä—³^Í™ïwÏÕ}aý™èóàÔcwåçæ¶6}–›·vefÑZÜ%½„Ïö\"Õø‚¢êÀÕówʧ¨#¼ÒjÒ¯j`#fîUñög%æÅ°Òꌧ÷êžKT‘^Tzð~‡}sóÓ£˜®ç0®“иGY“^èû
-w+ªðùµÍ×âsá'üS;¯åÕy๬æ܇6ânùÝÁŸ×Ÿ6?x#»²õBrþ¾âÂÏã÷:+€…!+ä
-+'·jƒÏ¹øø&6ß70Q\/B÷Á5Î_±À–¹F@›öç{.ÑK¦^6l×QKšV* †³]îVCøØ@!1ò
-/d2·¡•2É‘©|tx²Û@C6ìuç˃IÀe”õ\܈T
-)çdد˜²Ú˜„AZî™ÃTÙ‘‡Ø耕žå0+Iû
-¼týEÛIb±÷:
-ÏÒ*n©÷: }[Š‚£ûdÜôô ˜e“‚ƒì+ÅJ.Šòß{:*^L- ØÒ³(ú³9ëщi®•ñiȤÜ[¤éÝœøâÆËöӌߌ0˜]Kû-ò|À"¥ýÀLa“⧔Ýq´b66«Ó~ÕíײÊ\ÀŠp‰±ïè`¿,ã.÷ŠúµdRrk ³bwÀÙT± »5‡¬¶[é¢ô·Ÿ%1Q%”ó¨(r§™[J_¬ ?(ÆFáÿ¾Ÿ|VZéGŠ«ŠæRR| n=TâÎá|ÐÑž£/­”óÓÚC~xÐ[ùÊÿ
-S ûCX3ž…žá¢•nè.$ú^–Á…€ÿ„%„«ôdÒDT:®4vÑÀ¨¥0ZÂâ(%á™e#*Äq„ áÊb•‡^‰ÎLõUý®qŒ, ¾ãŽ‘|DÕ´5#¿œšBníÎÙ.úpZ
-Øãç…¬  ¹ACÿm|húnmR|jo¶ë&O(G:z
-අE´™õ˜»i"f<º†Ü¼ä|êuÍwÞ5|“™‘^¤]hëúTë™ Ñ?9“ýXgÞ%½º9YûÕÊó›¿Ï¼k9C/hnó£¼è…®Y@Ä<8En¡ý|Æy÷ëüìùù†S´§â[H§
-K¨î0i<µ»€˜`¦-ÀKö¡Ã%Â&ÄP%6ªÊÀK‡ËÖA.bë¥+Ü\Í„Ž ¢pÎ÷s°àA‚&¾ÃÂs¹€IUX°"Õ;º6‹Š6f”7è ®í`ɈÂ~ùdê–U [Ì…Ðã… 0v˜Œ5¥8ª>¬°ZÌB0eüÒš½YÑ÷iÔ ÔÀ¶Z3ÍݬX¬6t–“ö'eèÇRGòÉ~ÉR61#9`V΄_vü|¸j--ã¦ìSÚ£Aæ^¢IÕ½ìa)Ö7VŽNq[_…rnD¼;§ª)E,¶ŒUm: ¢¬·o ã{ün×û³3™*FplßÛU»á|puÇeÖo“=}Ëïµà»Kµ d*M?¹ bšìq컬ڽ´‘(6 ×ål×Àš,†Ü›—_ËΪoå|6óƤ¶:; s {à ´{3§gI85QwlÏÙv©P7~úµãzÁn€»‡ð®ãÃ"°´ iO½m?»ù^òýæÇîªÕ±öS¹8Ow}n^Z%•÷ÀC9¿V´úúö±•_nÿ…ö¨Eð˜Õ—w¾Úš¸÷÷œSrE€3/iÖ¹>y÷dêEã·éyUýê¸øoé)Ù%Á©>Ç¡o)\›÷ªo¯l>•ž—^Õl~쪘ò3ð8Ì
-1ÐÅ4ÜA:h5ÁÏÌ… ´œ° V²˜¡LH 2ösÒ:ÌGõòÙ~µÂ¶¬Ï¢-ºÍ
-ÚgA*³u°Ò½eï£ÿ?“Žþ}±£&ð-7*½Q^(¸mz!Šë„„ANµMiow—ÐË„¤^ÁFÍ&šê¶çÓ‰2A£r×ÊÄÀ•*ÝCé;òC °¥–§ã3köæÐ66hÅ9ÊÞφmŽrÜâ8XÁÐrÒì`£E> „µôæÉÞIh¸¨­WXv<’ýo8`¥Ò2á('¡Ÿc&dmº½jDúÍo€dllh²@õŒ2TÏ0Ç %8ïr”0Æ0 |[xÖpÖó°å®÷±sÃ=úbuήÝtãÒp°^Æ4Å ¦Êøõ­Ôsñ×Å ¶¹ÒŠò!}K1„«‹c7èÜ[´jÖ¦U?–cöþƒ$Ñ[^AõLyPð㊼mÛ_T×ç½hû–GÝì¾w|{JÕt¸þ±÷g÷°$Þsuÿwyüöñô¼¬z}Vr}Jå·88D‡l¶|Ð ÉúôÍYŸ®agN]›z+9»=­¸o>ýÁPud{BVs#*³¬áaN ®ú­™ÆSÁÑó¿M>¯ýíVÝÛ_ì®ÝxÕz–u¡<‰uå=ÝuùEù{3­gW^Ö[oø.6Ùzñ™êÜ‘ÄhëõÃÈÀ¯ÀøÑËhp´¬[UŸvµ|_ôɪ‹!µ8úüîñR@-þü 'ؘ¶< ‰iÅÛ³’ [%ç?*ß t5{ën¾Ä:‹þ§st<À­U:0=«­ó Õõõ\;ºÿ¾³*5«¸á´Õýµ8ï€\y4ÍÅ^g½:q¥Wr^å­µ™ÖÿìÎ+jYÈŒýE¬=ëÁLhdŠ¡úŸBöþ|¥;‚ˆ4³ ¹•]À%·Ý˜z ,éÕqÛðAÂ6üåÑ÷DÍDw³dûypOqƃÉÖ>È«á½ûåÄÀ>>8ÉÅúÇù¸c¤Ò%|TÝ’óµœ+’òÚk”]„’õ
-~ÕÀÁ+Éw刲§è‘Ý £ª*p/¬UoÎB¯Sa£äد8ØBZ¡Ãç꯭S•×:Þu<ï3“¸YJŸ#êÁ·#gˆ…Þ?å^*ûkûl·Lq«ê—¼ ƒ÷øt# nÁ™]_×_ûŒõ9 Ç~àУh*‘.p–¾R@ÓKu‚’ß4~8zæ‰âÒ¯ß-\¯&MZ:Úð%EçQ@tecô›ìÞ…—²æJÔ¨¤#iaMÝ\ LYr¯4ƒÙ•ÑÓŒÜ*¨fqd ´-oòÏwÿÅÚ{âWÛö›ÿ¬¥lsù°²‹Œ¨‡¸¨YSK`\Êo÷žÊ{g÷Ÿv}^Ã%-|F9z^¦q3ÊÃ>3!½:a„‹9\Úò~uü<íµyÈÌ#¯ô:Ìb°¡¤Ï†7uÃä+íPÉ«ø—O#í_~–ß°Øø§9¿Y‘]‘ü«
-OÁùÔ³Zù§¬JTOk&« `±°ÃZÏ=bBókLôÎr)¨ì¿:ýæÉðÉôòäùØý‰ lÂæ,FŒª0cEßÂ
-¿÷”%N*†ŽyÇΓAÑ·T@vƒ'tb*¦ê+ÛÂÎi
-7IË!³"·…´ç ÏöÖ{NenýíaÒWKòAí0]&‰ÙGLƒÏâî(ÃŽ6•Íû«â‹Í<¡—•B˜¶ž¡×<Ìë)p &
-™˜ª¿TK!£LLx-ç¹õeWôTv3tãÛ„]n6Ñð¼žA%µ”zœÁÇ¿û¸Úùy~KÚg£`bº ÞËL/•ÕòàstÒb,DµÂÝçß@.ë*ð{:nBf›²À¬p$y-¡SàkG>È™*¢âw_²YÛ¹£Ÿ¤³†9 ³¦î²ÉwÁÙÒQ³š!\÷saÌüѧl«e¦æ«k×q·›0i¨ˆ¬ƒ*+ÉéÅ\ÈŠúmz†¸óŒKO݃¼wWÒz5·£WÑqTtŒO\ã’F#—5Û?†$ßײÎÅúÞíM>ë˜gwŒ .TTãv'tìƒjÚ6UIÙ\Õ ÝmÔsiÕ8·—ˆø´NÁïš,Ü.æ$Cúq&bA©ˆE ó¦¨ï&Š ïo ÿóÊ[¨EUÄ’ý ¤¥èÑC^ÃLBßÔòî
-!jþ¸ÞúÕ›ÇM¿ûð¤çKºÁu7Ùȱix
-Õ‹ø¸V\ßA„•8"¨GÂ<8Š0OûEkÇ4›hÏÁ¶²½à_ù°ÚýÕþZß?h¯jàS³Ó~y·’~`~¿nŒ|Õþ×ÜêßçŸ÷Ÿ,‘^>®c#Š.& ï`pÍ(íqÛi¯]]Äe7³+M8Þ†ÝuVqµ‘‘!u_ ×K`¶–*ÌÍ'ýLtü[:,¼ÊFT}•¸­¤0'3 Nj%ýzA~]ÓI¾2Ž•¶tƒlLÖÁ'å}dX=HE1}#»àûH‹^“
-8LÀRÒ?q¥¸-8ÇO²q­¨Ñ‹è:Lú7ÙˆQÖ`1º„ŽIÛ(è·21ÙIÅ=à‘*ngf¥uºJQ÷ýRda“%ÜÀ©¤µ˜VÈG‘!2 ìbaÞ¨¸cÎ{<t=›úežê»fk=©™à YG9&ú¾žþ?ÉeÖœFzFá¿‘«ÔT*¹ˆ“¸*5v9{Æ•ñŒ-+ÞÇ’,K#!„
-¾˜CM,e¹^AŸ¤ ¤]öA!<À[ŽFÂ6 f½„ |'ÓààC”þÜÇ¥±ãl®µö—^Li,úì`+mbã£_×–úþ°3ö·Õ…‘oØ5Ó€˜Fõ[ó*È[ÓU)ã÷‡¬Eí}••É3µ•ño1Ó) ž_ðú«)ãÕÒ«Ñ?sÑ —&fîÉÊ›Ñc…ç~õ¯—}‡ù Ëp‹ÂLÕÅѣ̚æp*fqûÞëË¿«¾¾ú%¿fèo¥1#—°ôUߌ©¼üc}M{ººêÿ0oºÐÜ€û~£úž¹tr·ã¦œã̺m°¾fìm&-ÜÓl=îv¶tŠ6õ§¢UÕ)¸&;EÄ,æÌCÄÄÙƆéŸpëêKØhã-®>X¶\â3c§dÚl‚™Á gùáÙZ.Õ–ˆ !1÷„K‘Xuq²§¶`8/%ÝV…v;Ù„e ¶<úÕÞÛ¿”àÌBŠt³q|Rȸ´\Ò<ÈS–!ž²tJnW§ä @ga’~¼òÉïW²„« %çõ·²0‡<bd2ð˜Z)a.ykú¹PÞs>¿’'ˆÏ›ò©ì2}*; LLuro¥ïÐÞÊð˜ÿ•êºþB=ŠêÄÔÌ™ŽüÔÊžƒu×ðþ:6^Y±T–ÇþƤ½ø^Ò‡îB·lfgžòÀwÒ¶7Ò¤UßwŸÁgP0‘EìöÔfaÖ«\ÑËEo°³…“RÉ6ѤMýbÑ>Á—L×Aƒ1w{/ÜŽóàýRijNÙÏzþYÙòFÄ‚ÛÅѨYüÿ>à"åP· ¾ð¶÷yÊtMÈÚT­‚ºŒ±oççñµ5ã¹fÊ1ö~U÷K¡“J)ü\*E^
-E2(0'—³«YZ?РLãJ9x_Ì“~ æÙñP,âxeùÚz't©>,Фö¢«Kv#"q´E{1øOèQåT‚{i—É@aÆ®[ð¥Dø:[þ[b êq홽Eõ_€ùÝE ¿+̆ñ
-·áÔ‰‰©Y%¾ÓÎúƒ\Ò9öþŸê£µeK¿ ýt‚æƉ5“7°)°ŸóÇ}è
-øZcÍ6 $a64 sñzr/ÕGð“ÿn¹l¥=_jO5“¶.e¼Ì%õ礴C}0 >qÿõ3ÇÉ/šk˜½³é Þôø!Ï]Õ8ª©&¬×‹‹šãÕª¯S ­¨ãº[ñ¹§J&x£±a¼¸»8vìÃëÁCµ¥±¯ø4aÝ]B‡öÞ!ý0F§¸Û.8&D
-|˜r¨øŒSÕ„~
->9ÕH£ÆZÔv­ (Ó^\ê²eÖƒTãÆóõ”®W
-=’Jág 87ŸsÛ›fò¤´ìf€…„»ÿ~_K`Úƒ$¦ÿÁ;)t¡:ô0%;5­ä¦"Jœêp¬•C&yx¯ϧnÜi•‚÷äM/ä#qðäE)¸JÉi&0x¦WòÁ»r>òTÎn(™À´˜ò¢t .áåSÖQ.a`¢†^1>åk&fî¯ûõ¸ÏU[Å5lÓË0s1‡XêI»fëdÏkK'¹'¥QCuÉг·l:] Ø5v=Q)ºô-ÈbÈ÷T6|Èî*1.fHLÑÊš™uÍ·Õ¥ñ¥§—¿ø÷£ácJÂçkÑ8RƒÝÒ$!ç¦RÀ*|OÊxQÎÉÄ-ýÐG¬e\°«àÙw˜ÔÜóVÁë³è$ðÑÈûù±£±™~“œ»ö'!åFXªë߈®™ö¸j1·ŽI£º½¸íÚ^Ê¥ÚM9‡?,[/µa¶mè£RÑŠ”Û®1[Wÿ»ïL=–̇>r±uôµhð·¬/
-á'B.òX*†îAoô@¶#øÍ΂¾·üü—ÙWÛfÆÿœ¹ëœ9s3§g&³4ít’4iHÓ.ûfÆ6¶ey‘e˶löBh“LšÓLÚP ,ï‹,/1†P(`,KÖjBOÿŽyÉÅw#Ùòg}ïó<¿§ÿïµ49.fìú“‚Ý\ËÛL§ÂWßÂ1à„O9­rÆ7¥d=$päxõ‚œŸ^’Þ’3d$Ÿ2¶… *Ή£=®ý7h«š¯$f8jbž£H/›ð:+°/>C¸Ú…Kiz–ßÏQÓ/øôÃ
-=:ÍgÜŸuÚJ)´ïhx<a×I9ÈÓ Ò±»jk-Ç&çEzæ•”ž|^Ûž\¨mùçkß#)cÓŸæ½Ó°!—òO3Ô|HÈO-piÿì^È©;Œâ‰¶Þ«gŒ]õ4¢>X×^;NtºzŸu 5Ú¢æbH[ |gyèòáŠæŠ’2÷Õ2N;œ—V‚¾ÂÓÂ|šœ,S.+ YPË“3rÎMÂòBŒËÀ²|”@Ù ÖÇE±.á2 )Ü
-œg½€Ãu‡ Y;©çŸDfÚÿøtO9‡Ao1÷Ji𘹓‚ËsöÃÞoÛ­JÊ:¬ÐRßòÎ(ÛÞµmò¡’'gaFüõ‚oîd‡œW¶\^>ƒ£‡›¦FÈã1‘{X¦ “ðJÙÉàSç T&ç“L¦I¿½«BùÆYz|ŽKÍ.Wè™E1ë›­@‡=×£”³™óKÙ{MèŽCß'™ä·‘RÊ7 \õ
- mõ¤¯Ç½.)i Íݺ°·hlgÂnK9HhëIÒ{–'ïŸæ Ë1µ€†n×Ì\
-ÈÕÚˆ Í•ÈÈ]™i“Ú¦JÌÚ/RB†,!ÿ+!c[êÉ­?¤ž~u¡îýTHhdð!NXù˜Ï+@_¨Ä&%MàÀ`~`u-è¿G¦ *)aîd£Î!ié;ç]žòz ëB&›º™è½«‡ÁÁ+
-e½§@fÉ6Y£(ÛôÈésß­ïàÄù{f sö– ×õW/x§Бw¡Rzâ¿rž| ç,Úú–±ç–’¹«$L­5ðl)¡'‚¬FŸ=ƒõ´
-ž®ä¡×ä)ªèKeèjÍGáÑQ!ã‡Ì±h׈Ú°6M`r’¨º¶v—iÈZê;Š£ç6ÅìØ·,\i›F ‘îJBs»#06þh…¡f^îLj -%?öL~ëech¯@; bÖ  \•šøŽ‘ÞZnô¡’}ÈE¼¸r ð[ƒRQËIÈàÐZÕÔÓøh²^¸¿VÝø¹¶í›¯çp î©ùÒÎÅM*‘B:ù„©<«ý0ˆëjt®
-ž ‡‹)ð®´]¯ÐHWquøò»ï½úd÷'ýåçš–ב;åõ‘îW´—ùq௻/ºÿ¼ó}ÛGrTß(ÇÌBÄÚ-A`ƒ†Û\ÐÔ(DÐv9fS—×­­Ì¦KÃEÝ!î±q¬¯üm9ZÑ_caÎ˦;¥uý—ÅUݕÕáÿ®Y›w7ö5—Ø€öK& »Q†¹.‡Œ«Ú«±Çèg­í/Á÷C„ž cýÐmõ|ÈÒÉ4W‹ëý—„˜Au¼ij:zmþº!Œ§ÐE«àÏBúDí(­ê¯/kþ]ZÕ|.FMª“¬ú©Ã^Ë:í•°]}¼fúº4«êÀöRÔÜv°Ô{qû‡Î?±+h³v£àÛ¸’r}ȧ÷YÂÇŒ-ÌÚÀ%n³çâiÎn¬gý³2ý!wF`.¿8øY{þcËÙ–Õ\ËZ¥$ÒÁõ·Š«ú/%ʳÇ0ÝD¦À
-’ÆÖb@ý¹-E,]çÚ)ņýU´©¹-&õÐy M'´}X‰[{Å(Ú,ì[€YÍð,¢š'\µÿS\fOieyŸ§é—™©®éôdºÓIº£mÚ- šqßbB\‚¬¸\öÅ-‰•d*‰Ýi“¸
-‚€ ‹¨Qp
-ÈvÙ.«˜îLÿ!sx ¨¢.uÎ=ç÷ý~?_§BÙ”ÑV!Þõ3`‚Ü–Œ™Ý“
-vÊ¡`ŬÈ}ÿ
-¥ìd‰Zv¬¢•£&>³+°qÖ5ªøäü'§˜žÞäâk]e×8¼ì™f•£«p£WÉ(®BµQƒ˜pºÌ®qÏ’®ìM¾ôÎô_ŽØøà0Ô6œ§WÆ œÆô¿;æ:nuW¸x¿†{Õ
-Û|‹\Ô$zè_áÖÌ0®£:¸.iåÝ‹€ù÷-RKÞ/NQ¯*˜‰Û’Úàvø´ÔJÏ2µ<j†[âVv3fƒ;«pƒ_Ô;'‰ß…WxÍY›Œ’¶Á÷’fúí¸‘\ÑQÊâzzUÆÆmOYø„ ŽƒwÏÐKkR¢OI,ò-ô\JYu› 'a‚ê°uvS·5ÜÚ¤IANšäŒMAeýñ51 áõ˜7}ªb¿š\53ñ1;»sÀi‡ ø9=»Å#¤HקÝ!ÑÙöˆ(ebaV)ÿaDœvH©ù]1½×…ŒÂÖᶄ™×Þ©-örÈé˜uLˆm<‘‡M"f—RSvÉ@lÓ60ïÄ,p›g™^éSCUaÐKbëüΨiÍZÅýŸw¤ÌßÁ' zM@M+ªY8Ì,ì=w==2·%çbë¢G˜‰×‘4Á-! TuªÞg@Zãk‚û1ƒœÑ+R69³HIA-Œh˜¸¸™Ýx¶+a`ëBÊ.%ç
-R@'hOX8Í¡UÚŽ\1KÑ5ÚíÂïA­üÑÙÎøsÀSõ€¿I€5ÚÿÕ¸ß1KP5çÎé"½ôx†VPÁµ¾QSP-ëôÎ j¯Éߺ~&^ô+9Õþe¤Þ­4Y_tXæÜÅ,âžž[t^ç]¤•Ÿ*Y¸°© -ójƒ:¸q÷-éšã?ý_G€×gíÂÞ‚Î< ´ë}½§];ž¸‚­Q«±uJ5jd7õ#4Ô8BwEA Üú“f¹gªô« \Æ"ê=ÛQÃæíÈ*ÒÕóÛžïFV¨eÿUßü£ï= ˃×=N“ýeÇß<³ý%ç)3nâ´x Ï({/—‰Åà™²ðê„INJÛLà ¦1vÄ8ô’®½·”ïw']<œ¢\Ý?pùTC¿qæSò¤, s|Ì„´e·Ää춌·Hús ßæ£CùÝYfSB9?l+H€ùZ„Ô5ž,‘J‚ÑZ~ëé¯éxŽu3¨t&ÌC à!õa·.¬…ëKŒ§‹´Òƒ÷Äï>ÎPŠ<ÓPEB+¸÷§kH 2›‚®!­aT:)|'-r*
-þ{¼0Xa{ñૃ_®†•ìªãiÊîé«î)rQ@ÉÀíÿJ¾zø*:!ªå];¿@%ۯȗŽ¦?ö$cVaWÜ$ ` ÿ£za§WÃÅGLrjfëñhnwX–Ì€ ‡tô[(`t°Æ­Ì§¢ßŠ™ø@ƒ’ž¤EAMÙ¤ä¤ ô3 ýæÖD÷…×Ý_ÅV¡¦‚Çc ÷“[bà#£
-Ì>ʬËH^ç¶ëå›ÝŸû/Xþ¡Fšÿ²÷ºûB dGX·`NûŸn„’Ý‚Z¢€ÙOÔŒÊÍ7]ÿÜŸìý6¸L¿Ö±ñÙm9œÝÆrª?@Á|Dô‚{!-Ò|4C»¾÷Ûà•Óô÷"¿!iA2üÞˆQ“°²Û²ÛHàèvŸ’^q<Å(ó«8ͨŽUƒY$Dàý]Q£ð>˜ý;áeæÍà½Ì3G-vN<úfóyß7'3¢ºãiYãá$§Ìý*;~•½¡{gáªÃIz± -ñêB W$L _t¢ÎFØXâÞ9™üqoªç’þIÓúáŽ/œoŠ<s´[ I ' ÜÉ<ûÆáÛ¾ûfüË9ÑðwÏ ‡†¨^µôaÜ<DEânÏ"çv ½³¤¢¸–q'¡cÞ=üðµg‘qÓ£„ñA5Ò‚jyM§ ¤k¡%òOè
-¥ÕÑ*]ÓÔ놱ö¿zgqŸ6‡‘Â,¹çú®x‰E¡zUHËÀ…®QÒY…[NU´ÊÄÚ+a~¦êGÝsüÚ£÷HõÁ$óG×ñ¢{ŠòCx™S7ø— êŒ]ýŸã2ÿf3]àø½wN;Ók´¢}o­QLUÑ(µ4±$È.‹ÙDj ª±Ç±$„&$¨5¤BA"–¢è2÷žû¯Ü×üþœ÷<ïs¾ËçûíïåüÍ@¦"ÿv 5°ç`?·jW•øË5`·©˜7Àù} !Ô8€õÝé+ 6 ‘Ÿ˜†(O¬côØàÍNg8éW‹Uù糕pÇ3Þ1E±#Âù}ûDßMðµËØЛM¼‹µº¢c Ÿo
-1>]oÍéºQ^vYÉŸQi¼‚ˆ?S1r¾k«K~lUÓn4œü‹•âDû>d_”ç¹-ÌɩϵøˆóùŠ‚ŸÛ¼óÅ
-¤}’¶?šïó¹ š®ˆ¿;X~GV{(-Ëí‰JŸL°“ôBr€¡‡äoÓ£tBrÐBCæC9ê¼7@‰ý¢¬Êÿ¢ªÅ+ß!-VÜÁ$-FÛ…vß À{bjädy²Ór=2àbª
-~>[°H9 »#ÌXƒ°Ð×>Š ´ ¢ücE1Ž‰Òç†^¼ßUSéÕJ{“c¶&ooŒªëÌuÕ ²êÛ }G.h”<ÏÏk»iI–±ªTÓ
-ðYœeœi
-ÄZ.
-ãö‹AˆJüù¹…¿3NKžoÎ|t0 >šB™ú³A–LÐõJeÁ;ññ™œ‰ú ð¦}†5“´=9àÍn˜ÛjóÛë”—°$ñ.lô=û=Å8R¼Ð
-jœ¢%<ÍKŸ/4Ð
-Ä2Zfá
-æZ
-B¶úI›u.`‘(óÚÛ*Æ?ÙjGë{IÑ7‹M¼kukÍé\Î>Ã'Ú¦Ê^Y&(ÆA|€¶í¥d´mÙn—Ë•˜½IJ”a 8R×ÃMXÐB¶{(Æ>êSã +fªï‰óüçÿ.´ÿ=ŽŸí7?ÛØØÜbÈe˜Ë˜KÍ5I¢‹B¦D¥¤_‰˜rcÈeHQ.¡”h®%·’ûeì÷û휳Çã<ç9ß?áóy<^ïçó© bnµBꮤ*N+Jþ]+‚þ¾Ð”þHÍËr0‹)!º.R
-Ô‘ ¶3´•gÿ2´
-.Ô• ²wÁ¦n¢—V€~:^•f÷¥ç1Õ„•$ÿ¶,"„Ø&™éúv¼ïz!ÈÐó–³Sßõ@B ¾g‘bü¢‚ ñZÄ‹S%~<Y°…úØFÄî ÑW/Êy:ÉŒ ¡DÜ׋à Ï5HI :Ør_ˆÛ©?ž`ÄÉé±[ý”Wrf¢½¼b¸v¨YV pöíù,c›`§)«a·ºjø•êÜŸkÕ¨½Q\î=êÅÙL3ådº¿/eB·È!_‡Èa¶1:äPZѶ€9¹¯ì'yÈ—×s¼¼ÕÖtÇŽlWS¬âf:ZÒÝOÇr#lRlü…†÷UAzu­á⮶Øzr«¤ä¢&Øp{]Cžóõ -áZÇÊRw yy­r>ÆØψ]lÁ¸-µ \NÆ©ñÇ
-züî`iÀn?)`”µ3D‰Ù¢Æß-¶ýq©•ÚÌÄA"Ø<DôWòNE14BÔ‹Âs‰
-xôvw øk/Ñg··
-¸Š€´ÑUâ»ù‘à½×G
-\iF>ÙîÄ{Y%äp«‚÷¡æ È‹}²ÕMGý2¶6žÎPãöGËÃG€ŸQC—š
-ÜŒ]ïüåŒ{f8èž²6'Ø¢`#䵧Arìo*vªý;ýáçòû9n¢ãÉ 5¡©êòžøÚáRÍÆY´˜A co!ÈÔWä»ö±ÐG×€|¾,Ìó²1R>RÓœèY
-v3S•õ¿M>õ¿<Ò•Š
-ÝÆøý¥o¤]ý¶-¡GZd,è‚š¯Ç<ß—Þjoo—YH½RŸúðë7k­³"BÅG=Ñ7£@‡ÃïB=§ZåÕ©ßÔÔŠ0Š vGJc.Õ͇ãõÙ‡ãLÈÁxyôŒ
-x<-y¥‹e‘ÑRGëУÜ\ð±òì¥6¢ºí¤mD9Ï ÐîÓ¼°²a’Òß–#¢’ü\þ1T™æñc­v³À+¸|Î,!úí  @»}yà Ð <\-!Á›àw®µ$h ôê‡CG6°£ìg‹ï¡Žóü8'›œ¹Z`çLÖÁ=V;¡ÿ2
-9?¬Ë96|³ Úù/QnµY÷G¨o=Lý•°¥öâð»eójŽ‰<nµŠu1Kƒ­÷àý>WÁGØ鮇JR×þèJø…’‡¹]¬Æ^j¨i‡ò²pSÆg³¾Ö È[Šª”íQjìÕ¼€x®ä¡de᧤°ËYrôжÛ2*ôlVĹYèi³Nˆ
-Mbæëù&hŒ™ñh³£Ø÷›Š‹ø·¡¥þŸkíÂóÙVʱ²™bc'ïûž+ÍwUÒAV {`î§Ä+¹èÕÎ2¿ý‘Ú,«”Ÿ)c@(9©Ž ½ =%€÷AæazÂí¼°ò¯e!Ã&¯Œ¹š«#œÏ Šö)¯ŒÏ%!Î]#Àº¨ëð`Ë
-(‹  þAr7Å]CvYEÉ\B”UV—jºçžû¯Üß}ñ}û=ÏyžÏj`×Ûå¤7Æ^äcuWUÈCdÈÈBøõ¬Ú À9À[:fÑ<2\*¨OñÖ ÌÓÍIÌsËd]Þ¡’R¥Jî¯ á±ÎÙút¯ —Òã‹ÏWèØ‹UÜ«nÌP²ò.Û§q¹ç+ì¿šòÖ%!¤®K¯™ù×WøÑ:nÁ§´þíò
-íÁg_]DBB+,Ìú2AÚ‰Ñó‹ÿµ#ª~`¯¸Ðò7&Ñé*^q¬‰Žõ5ML˸d
-@ˆYõÇjtŠ×Øü.¼*h›„,§’óá`¶¥À>…Ï<žB=ýf …5-…ŽyBšSÒôÆ-§BZ
-÷æ[ ?mÝŸ†ZnŸ"<·‰šòˆßH-;1´”yt”’ @éªLá!R¯ºå¬¶óÍ1åÉZ¿ÐeêÄÚ¤ì=1>=¸
-re›ÏûªbÀó]ÿGsAVÈÒ?æ2𨳸ç{ÓÈøÃ…êûÖ©²¸ÍѲ‡?­üÞ‹-AÿØË´Š‹ÞÈjO{ÈÈ#„ô@½GÎ*=^hƒîÎÓsÇ©°[fNó‹ d„áóû"Zº}‚–圥C½rfYÐÄ#œ¬uQvÀÎ æÓôS=€ó/rP-Yæ’üKl¤ß@/wÉ©¹nêT
-.æ`®ýÝz6Þ>C+pk…-»f‘¹s×Ô‹NÚ›j) ,Ä¿×z:OÉУ¹ºä݉ª»»ÓõI!ƒ€r,&eo Áo+ÛŠþÔ±+ï,óQ©¶Q"Ø™ú¨Š.BÂ0ºàŠm”†øÏvïPx©)ïDYŸ|,­v(k‚ø4´òƳåVøöüþá »Ô£áí}æ”­
-·AS¡Q‹íEѺΊ„1üÛõqj‰¨ËýÅeþ”öµÆa4™Þ4w2‰ÍMÒÔ$š4½jj½Qc­{*h4n¨U@ÙT6ÙÙ5Šâ‚€ÅÁ7P‘M%`›´ÿÌýæç3sæÌœ÷ù|ž÷Îߛd9*Ë«oJ?P#^z xH` ¬s[N;þ.ìë„L< àÂéidÆéGDêné÷øapŽ\^éæ챊
-ÃÓC=aƒ¸Ý¥iNsŒ ^ûgÛ`WÛòáȶ\¶t‰ÏMlÔ™‰QÞ‰.Í”+K'É¿€ÎuM6¾ÙSÁš¦_Žt¤âž&Ȇ0U±f!ùg†Ó^TˆÏ§%-‡JJŽwŒ^t©—‘œ£¨ ic¢w’ñÏ K,Dhº\–,IòÎuæÞq¨q¿†V]_9¤AÂ/ÎÚ»ÀñN¦ˆyG:j¾c¸ýí*™°Ú‰üïv/%ßÚßšb„%X>@v†ëÿÙáK¿8ûLÈ'<óä»›í_—ð.mó‘=ÙHd—M9ÒãÞ®öÖ>³ªêž[!Ú¢+»´Ïoà7»´´Ò¶úƾl|PÞR œ-4Ù‹žíª«~ò¯´B"vÅ©%æîsËM2zššŽ¾;Dj¸%n(û±(ç:ëMTÕËPæ³xPܽ[ Û7®ƒbo}J{|7Šúîõ·‹Ü†Øüϯã˯û¨[!¦.ö·¿2ȉ B|܇øx˜ˆþN‚€Þlî¤Cò¢x%à(9´ò^øòÛ5jåo×
-SŸ‚À‰?F÷cjõáË.‰qÉÇÚŽ2ߧÉ1F-tŒR²]¼jÛ(¿tQBKVÓñCDì=ù-û}ùõ–‚üèÆô×Q\pÁuaEþ jQÆõšÔWQ?=eÅÊ}þ–™5ŒƒÞ;æ”ùôbÜ颌}¼ Â[ÕíÙ›
-H‰Œ—Kr9DO ;Ô& ñÁo­Yêm6+êþÛy‘
-„Óoo|â2 ¹K³R=§üúçljižÄ•ä604+5Kt¹ùX¦@\h|÷±*5z%U&Ä3GÊ™óê2·ÒÄ%¸4{Z‡æ×L5 Ô<±¤nνÌj@äh½ä’r×:!µYõÞ$³ôàí “:ÿg÷NËGÓØLLÍù-2@Î]¨©Ö×<27Ê­HŸ}¥à=Õž<7›WgÍÚ…± d^½0H½+¹>­si©Ù¼dîV¶ýÌ“ZK¢^ÇV7^äƒ5Y‚‹v+¯=ƒ­Æü?@JNL}6f]ß[ý•ÊÁú´XãÁ¬st›ë©¤TBW[¬¿€ò‘¨k-½0oó\ÜÍÇP›UbúPÕ&RÄT,ªçsôá¯ÕN.¶Ž.Y½4 2ÒÅ!fG0Egµ…!@‹(øÈðbfða@r£ï]/EûJëªÚóÓ:ÉX¢8›ÇiZüCSN>iÁ™“4”’s¯µ¿iÏøY°äIõäpñ
-³¼~´“ÆÛ”} DÄ‚²Ü¤½'ÉñØÞ¦ÂÄű¨®Sp' „ΪL1¾%†¤¶íÆ2»qéê}787T¨qà\¶3ŽgZ[ÉV59vájˆYóÂlàöÚ1ÞôÑ«x˜êÂ)rש§¼wúûtý±ëG­j!Á¢¶Q¢ßÔl¬0pMÙU®Ò¾PEö, BÝÐÚHéšZ7í}Î*VŠ*s6å*ê]š.Ïg–3ÔËVÜÇ:Ú ñk…¼ 2HÎy´,!<Tåbó4œ\01hŒoüü±áÚ¦¹ˆN2tå^´ÚaDò æc–·ÏÌêPü æDð3Ô”¼3…/5¦—Ñ°>Yé×®:7ŠHU«ô„ݜńdÓf¦¢Í¾2ë1+i\<˜ÆÏXè”rò :Þ%¼ƒà…Ô…­’“÷NW$óZ™ë¬E©è2:LšÆýì8—ŽAºÔßf"Â}|må±(_²·a¢ß‚ÌSÀYv‡Ói#;þý+þñžt¿jKÉOr´ŽÜrŠ¼’n*½Ÿ³ÚË$.„À¡çsKnÚC=lA’EV)} l“jHÆ'åÉ`ÎXäðõÝVÜŽ< &EðÚzFÔˆM¨¡ÙOÞµV3&2?XM!Î5Ê9ƒŒr¶8Òì*ˆŸÓä·;‰ðP„S‡¡Z;‚—RåusŠ rìhG3¶†Ýš|y7AÃ
-nŠói¸Æ„´Î,´é«€…³2XV¼¦ bMD¬º1¥!ÊÓ÷ˆ&Š¶Áœ˜¨Ÿ“ÄÀ«Æº}<€.í¼1ó*²BÁ‹ö:§—ÜtÖ"­ü…2óØõ|4Ä8ÈY›¹mäzÍäRøU¿¨L´b@D#%$iârñ/¹iîA Õ
-›ù‹+¸Âã§øA¾Þi}A¾F´{@ÙE=x™ÈB¬ê>êa <#¶ù¢(š€(q×9 (Xx5R¼î³Y¼p÷¹U<@¹-koBî‰hFokxÐ\&£Ìh*#.åB:ˆ¡ÇÞ—T\@¸0”&p3A¥. |ì,!õÓé ï@-k3ŽÌ±úuâ6OÆxãå9¿H³fÜC–ßż° rVmçúl®ßqàOù´â|ô‚,€šlÞ”¿· ;z µ¤
-4á5 ¢$0vÏSY›LnTáÏih;ü.¹¯aïƒæÙX0¤¯3–5`áô€25Ëä§$rÄxöž/%%{FB?!ÔH*Öß2÷2·Š)±ÌÒò°Ná-ÕÂÑ©àoaÀxM9ê€TþšB—óï
-`'¥æ¡>76˨ÓDD® 397KÁÆlÅwq\´À¿úšGxäo.^c7w_"Œï^óæñˆ-Á!ñ§u.}
-ƒÝ‡ç@3J]ÉÒ£9¼¨Z¼eOˆôè1þVNcûš\Þa7Åÿ#×̆À´–âEÎ ¡ñ
-ÃÃ6òrîă:J”‡u8 #ªLÑ$‘~â]3ÎÑSJAÕY;¸Fá ‘Üèç=è‹ ~<€x›@71
-?7#AòM÷H!Ãâ:DJ˜,â1 X&ó½šzIjŽ„óçÞ)[‰Ÿå¶÷vž–‘âu$O[‰wO˜[«vë\ú½;Í…7»[]éw/ΆÃ×o _ZõÏwæ“ÁEØå%nþ”ên RNÐC.k>Gž ;F‘Õ¾Þg‰LÂ9š÷iÔ#¯¯v|RÔupž¨…ÛµìÕá[–¨ýV oßi*ÓDÄ.d¿ŒOx]ØËŠý×Ó0ú ÏCfˆ*—"¿+¨HiVó‡m÷n"cÂ-BUxÝ®FhwÈ3Z<!^ kVã9É]"­A¾¾4þc ŠqsÞMd4nl†µÒ*^uB¬Ç;EðHŸƒÌËp#hNm¢zÿg¼L’븕(ºï+P oÆüCíÂSjÿÓ.x«²/¶ÂâeÈæ61¬a¾9‹b"Ž4Ñ& Í¥&ÓÞLcB|§ï3nýôüÊm.¼ï°± CÙÈ_Ç<…Þ2ö%mİη‚Iä.¾=÷ALzÅÍ`p0HfåRª2QÄþLÕêÁ•!›— ƒ’· ì:>ü½ÓQr¥&ùõór.lÔ€Ó»G—¶Ã©6b¤™x1<,ò¹f;嶇¼Z?|!2ÉbmRˆÄ`8=ȺvÚ‹Þeç‹ÿ„·¥ã}"Fѧ‹ÄßÐ
-J¢öí`ÚãÔrÜó~Ãx¦0áÆ!Ö6Ç÷AÐD@Âc4¸jãQ(rï?®÷N¤˜4ɲú_ÔÙt<„ÏU”ÜdHûùcàë{9”pç'šAÅRÊÚð'ž4i(ÚÍ›Ÿ¾“°‹!úñ—¥Ò¬ˆçéqC(KžZ®0 ‚çÕeöûõóþeé"é¢7EÀìŽ?>†µeáòc!Ô´©|I
-͘ª¦{½-С:È š ,9t`§G ¬‹jÍvB#­Œg
-ioF€Âñû0ra4ßÕ)Z/G» UlÈ”Çóøo;(±äœÝgñ@ ‚ dÊÏ3l4
-ÇÎÊÞ1/@Ò¤öä2¨õåä—ŸšX:Š¸VãÂœ5&~Ê¢a7¾þñƒËðAôyð©üaWF'$ìóÄÒ‹åéL.l {ô'/«9?V¡<}çÒi qŽ}ki{±[;Q˜4#14þ¹OÌ…È £÷áΖ(yá2qúɃ ;ÏtúqŠÿ²Yñ6‚C:s>E˜Ùkh³‘NíV•ßMêk³§A™Ä7DJä² 2†&]†ëÐzÜGÌç≰˜[`®ÒQBFV§j§Òq*µ/§ÅJš\Lm|’å€Öwz5à}ñgÂFhÕž= ´~ÊîÀó&‚ݘJ¸½= |'=ÉšAõŠ˜¿7ˆPŒ‰SMoƒš×q´õ„žó Š›À:Éáï}gýñ@¥Km ‘`c…ÍBædb­ÛÀ`Ͷ©åNáô½¥h(zr Ö x™ùŽ,ÚƒAÀTžËUy`gkóæ õò©Ò×ræë2¦È;o„irÏÙÆô2ì’w:æ`j‡ )J·{F‰Z稟7k{¤Ô)<4Ãz‡nL—äÜùµ*ûçáæÖäăn0(µ³¢üm–cʽ"ti ›[Jix1”uk@Ì<§Ë&l JKáéÃÔR¤öK³§3^fýz‡ßÃпA>ÅF³6ÝÎåL€Íº€
-Ê gøpƒjÇïr.]û;ŸŠ¶‰7„‹tzG#ª]†òrr_è0.Dƒûå~Žb[©ú›â_8¸êýû;„•fM§A(ÇÓˆ_v}¢Ë‰YšÉ<’NöQ+Eàc¥vvå€1 žÐ—R÷w°OäSÉ‹)6yXŒi¶ëÁv’`ÈB稈¥PgÄ!Ø;·g=Ø{Ûq<Ð()?±ú)ñ06pƆP~~Kí~•O¾–fAgó",pÔ8åCe”Œ{ñ÷ÈHu"—çɦÅyš-Rýï° ,‚Ö:çzn34G}°R•€Ø”pÒBœ•ÉçM3Ÿ“è§0ŽÝ GéÙw¼ 5:9  Ð3(þrͺ.ö4OÞ4Ì׆œÇnCS¤V[]R)ƒÄ‹¬•U‰Õ¬¡níA¦&—±ETÌ´žå´Ô ˆ¢DÕãmŽÝ˜Ê‘±XŸ ‡‚Q Z}á†÷`7—Õ¹·ò±©AÜáXäk”§ïT~ÎH–wE)ƒÖ®EÛï Kpa%UR¾!¾¨„‚b‘¢ÙNoà"ŠQI-à«á$3Û‡T…—(ýÒY.¬+Tb6Ù‰ 8 œïL’˜I‹m¿a™(^bƒíUP{`ï 2c‰À†! “€pŽªøK
-c_\›©&• É5yNôŒþJÀ קï F+5…q.ÛQ ɯIê"
-i—«( R‚2ñŇz¥³pmï=ÆE'Ѿ^L-°ØA‚Þ†yüµÃ2¶Qì3 Áý0囜—ªJ™Ù¦‚È¡ûcößFôóãÍ:Çp"n ×»oû®g½‡ùÆþZ]@Æ-|^b…¤fßR^!\eõhs‹JJså‚5ª@4
-jžp¸Œ<™;‚€Ü$ÑÏ+ÏâäÏì$­È7¦¾S# ŠXY[ä©ïÏð#ì¿j‰1Ó!}Ú\Ô H)7t v._éI&ëé;2É*`}çv^D
-î¦E9/ë×FÙÄŒs—Qf6k ¢æS9(¹5¾@ì¨K¯¼ï\îÝæ28þ«¾Ïß­8Þ_JìA¾µêßw6FËÎr²¶¦é÷ïýqA2KqÇéö%L@j[œÃ4;‚ì'>S £¹!—êô2ð‡p(a¼.>ä4"¿hudà3Ü1RLVê„­b¹`f®Îp̲r÷Æ_ gƘ•žlë~g3ÓL—øǽ ­"l«kûÓDì2ŸÉªG1YXx4o½ø«„æˆVíÝcʦŽ=¶MïW _ÁiÖ(.Á¢lþYäè[ã¿\:A@¨{¶EnÊ 8a8Úˆp*0ÿg¼Ü‘+¹• º‚ÙÃØ2ø
-WÃÛhŠÆÓӌꪬüðŸýåž$ÏçäD÷žö &Üƈ14/Â/ ™ÒWgÂar÷Ls ÁŽ_çyHW\\Ï]H.÷‡ý(t¬™”2m„2ÁOåoÂq$¹"&¿1ª¸ÉB@®\bé(áƬsJcþY‘ÑK
-ÓÅVjÐÝ‘25¨XYŠn(/SaÛ°¨«DZ€[fò^R,Ã)T/‰ÊKta¨W~•RA<ÚY(ÁŠ"Æp‘+ gâ$§1´›|b+1Àú¸ê¹HDÏcMû‹Ùwš‡aÞôÕõ 8c‚úG#XuÓ–ÍÚÏà4îGû¾yÕpåŠÈ¶pÖn_‡5yF$ñœi½á~³ jD•;Z}°ïãî¡tI³÷×?ðÝ8[%À5ñ'ùsÄÒœ½o›D`mqÛ <.´Š£uMœq ¢+û"ÀÚÒ4“£Ü”(çb³<I]‹9è?ýë%^kÞoj–Ôºô¹ù³Tß•àjFÄáö&"÷õ†Æ U/¶+l„¥›Ò)â{Y8ñ™ßæ!’ŒÅob
-gú×Ttªá'ɯâIøƒ«ì^Á$0ךù'cB"„ÂCŠ =DÈð€Bò¯á©¢¥òcÉSô«.E%ë ´÷-i’Ûù¬ m½ã…}4gÀ‡€»ì6 s”ð‘pô[€Ü
-ÅeÞMêë‰ áM½ÃáÁæà ëˆS\าœæÑñ`$îÄ @ýHZª^‚]¨l Œ‚³\à!E—â³!dÖËÏa"`RÀ¬s¦cŽ6|y&°d¥‰c ‚–ôùSäl¡ãP¤.áq:˜jk𗢑•$q©q&øba0«Û[¥¹k 1Kd öËY’(9|h ”þa¸c*{1Žph_þøêÄ/£?9z@¦t&¶X.æzK€¾‘ضxAþY¥y•@“…ó6x2\Æ·º¿®"úit´"´m‘°ÄÉaøM
-f0f…¾®^|U£YÄ’|Pt„¢Xæ½ë—"tõLÚѼvýÀß+Ú6­wÉOEUÎe°þðtØ$¦?Dæ^œâÓ s÷·ÓT"úGøs´#/ %ŽÜö´ J™-Zèç0=¹y“‘‘‘˜Ægár‰ƒXNÚæW5…J“{¼ÑQaG"Ž÷Ø%Ï6„
-^®ûfÑ'Z8o×SÑÛÃ÷‡Žé}À;ÙI?nŠ0œ„Ž†¹­”L¢LÁû‰Ð€â´ «Ôa&2âU+ÿkÝŒøèÊŒ÷š%<“¤e.PÌ_ö -Ìí¨>”°IQ^ÁÒŠQÔ0c¸NHÿ¬b” Úô`”(0Z2ÖÏ9×¢¶`y,à_Sk˜hNZ0:ey8Y%lÎÙ¡(Ðï•!Õ?§(åkîeóX:D)§U"ѣÇA˜&üÈG§ß^Že§&Ò—Û"ÚðKx¡—uOìFå®M~*ñ«ž†u=ç2ñë×\szÕ3
-G!ʃ­D[rd`gk˜eæY‚ÌâïÏí8
-Ⱦ"ø¼þ8f^AÏ\mÉð·‹žðý;[ªeþã/tùÏ¿üñ¿hÊ—ü‚a›Â10ɘf!ؼ̽>ò ^M'ÿœ%Þ‘Š²*˜¢*ý«Ñ+ é&ßÞVÅ¿Œ—Iv·DWà=p<hÀXr)Ôþ§¾$žüªP’ÿ™ ¢€l¢q¨/KÞòÚX0 µ‚ÒÔqÅÉX(CðcðÓÝy§¦mïDÉh‚ˆp"lfŒi»ÿ~~F§Ân‹:Yú~‰'¢açkð>è¹(Õæ§×¨JüY¯Éò¹& räø£ý¡kaOÿ7hé
-ÒJ4}¬ã]ø¬Ëdb9Ï/‚ǧŽ¶àlp/‹L†Až­Ú®Û{eô™(hë¡=€Á¥Ç§Sn“r½Ë}àîºíµ,‡Ù¿”öO+ôc*h ¨Z+R¹¾4B†žìéP²å‚ï 2¼ž¹2”—&ðÁ¨tEã² ²,o•Æ¾öG »-͸Zåq¾@4¢«ŠjÙÇ‚èŸQZë= ”)¡YX_‡Ð˜Ö{Ê^;Ú=Fã6Í;ˆ¢ñXÌŽOéj`¯2^³­s4+E?IÉ!82Ní(A]ˆZD‰;nˆŠjp£À{ÊùœˆÄ"ÕüÊd<ÆPr³C#®þqêÖuœ½Êb)lc
-ÁïƒyÆr Çm¦;=½A2HqH>‹XjT‰Eô*£ch{q‚øÓP Ù%Ôöt6QV®Õºo m!¢dR¿LT_òíŠKæ‰×ï/%ä’è‚?ðE&ïuZõ_çDã£ìmÚS!‘•eœí
-¸LènàÛ`úˆ„0Ê sÂÜ7ïö©?B.Lp\©+hùrëŸÌ¯òòÑ£HTÄÅb{.¾º$…ƒhB½ ¤Ô^SŠ¦
-¸§v^!ÞNìhêÏçs´06ȵ½nCæáïÈJ{BÓ\]fÎüMU>L–ë¯Õ¤JZ8 Zã‰ï-ûK—}-½
-€Øˡᯧ<#`ò–#9yÎò˜ÉòF‘‚pdR{Ã^à[;ß þ©<HŸLXi'КJJ9X¨î}€o ¿lÕ…>R>˜´ú»ašÁ¾ãkrÛ_âM\¦ñ0ïD”‡úþÆæYÛlðö‚H¯¡.¾\6u®&¿â{W3ƒgéÞ»yÁD…Z–«BÍönÞ@²ìܧC£¾·é›ûæ}~ËŸ˜DÍ7G9S0Ûü§ÑÀ#@NØ©j0ÜÙ›‰*Áˆpä6w½û½nNÓþñ¯>hœÏr¦ÙCK§ÄÖO±-¹.׈]ú^á\™bÈl÷=åÎÔý1E#! ¬
-I„°iPÿåAÉ!úA¹¤IÒ°lðrZ­7Øœu7N‹'Ð׋’>ÞçéT{Më•»(‰ñ–’8S.$8ú-(ßhË‚PžÄ¼VÄy•Ç>‰±†`dÒ™æìS6An¡¾rÏ¥Yjºæ#¼æäKä‚tòÊ>ÑTÕ€TϪ­¦#{]¶ùô†÷¨K»*NÍÁ`³Ò‡¨éóÁßw&
-nðûö¥c³Î)ºŒ9FhíYCW)-Ëiù‡ Z#»xl¹ƒÂ¬7‚ÿÇ
-‡'Ð}Y=lˆ²Y¼V–˜ @…üé‘BÍ䧖ÄÁ 4>ª×ûéè]ÐÉ+dJ) Õc:I¢Í·ß“%;µœõöÐû»n3f\¦ÒõêÓ9-’­éÚ~›¤p˜¥r>fì@êX TË_%+Ì” q›‘`%R*:¸ÇÒáæ’û9¾-ù>^¬W’80¶-ŸÆ”½¡Ã‡åTÿŽéƒ\u§ŠÑֺ߈ãoAl¾±™ÔÕö`Ü@xB¶õÃûN *CÎæA2 L) u·±ÇU2*¶g¯^\Q 軌~DNr°¦Öy¹J:@|*`6…¯ötNY×g• ¢i*¤œÝ™PœºïSÔh¯§±¿DØ`"ìéǼ’úÝZóá⛵(eÆè¥i"
-
-Þ×Ü\çOFÚ!Î9å5°tè(NØÅO§1Äno‚‡ßø•L±ƒø!»Ù‡’ŽçÀ?qé•z âÁ¡¨©Rkƒ}ƒß*üUt£Ÿ dDzÃ{ÇÔ[ T¹À±¸¨ʪØ–Ö!°YàB!»³“"ƒ©\½
-é\™ ÐaI«W—퀴Táz*ØAæœUÜ_¹BxOÇê”aû®—k`*”bˆ1Ç·tv§°¤öãUµ÷š
-vßA×ùûþ›!ýú•çøú‹ÍF…Ü éU«5ÜÅšçˆó‚˜¶ñ>„Í,ó„ €d2æ 6^óGË‚g‘(ILø ,ê*dÒÜ u)x¦ ˆÚ`ª¹ŽÁöN׿ÆGa„Å ¦Õ„_%´žûæÄ¿„Âr©ðp!óÏŠØ9-Èdpç¹’‚7È62êƇØKyØËÕ´(Š[ÂtGïû½@ønÌë[ª€/â÷,K~eÚˆE5»÷`Ìð]Ÿô§3–8žŸºö‘6sZ{:ç½ ˜þ‡t¤qlgœêSd*61ߦB• tYŸ_¼ÍV„º´ÀÚ„°ªÄwå×àü~¿~eT-¹ «½:5í?@p
-¾ÿ”è/X_ðøãå´ Èy:È°ýŒª‡m±C^“ŸKlž‡å~çiäÞmž ã¼ê
-ÁKw®@¾´Ø+ù0ªoŸÙšZW—¯
-êW¾|eÒâwsLË®HL¶®‰:±óí‹Wä8HŠJ¦Ó8PÚ§‹`gpüs§¸SšWô!ï­9-¬1ß~h «T©¬V’¨GÄgŽŽ³¶økÁÊt ¨
-“5–h6”kð XóÀf¨¼(CÓÜŒË4·$¾²
-¢yLîˆç¨KQÑØa?ŒUÜß“Dp˜¼Œ²J0>p9m¯”¼Zç4Ùµ³u„Iºo¶X¡‹“ÒØ2X±± ƒÇšO`#pÖô 3¦”YË´±E§Ä'§§¢?nŠ
-4ñcdÕ÷›¢”ÔDÿÁrl %òGÙþN‡a¹g¼*Á‹ i‚º@€eL¥<°Œ²Ãùh“é2²Ç›ä[Ã)t°U€[ üläi»œ•ö€qJì$È~
-K£ç»ï|¤ud»éŽÅJWr‡çÝW—p¡1šÓ´C‰®²éÂKM6tÆ
-Yö›&2.ÚlVæRƒã@„Ð6&éÝŠ”$³ŒR? ÉP·ÈvÖå)µ¯øÕ™ÝÌ»‚Œ&‰]8ÁvTvšá´skÑÏûþ!¶À©U‚Ð`]®ª&ø úÄfâ/ÛÖëKÑÅﮢŽFYË|Lþ3E?/Æ7§ý²æÙ¾ßñz†ß`©´`O ÿ·(ŠÅã™WÐv±Ä$â± V1d×ð” E%CaŠœW‹?{`Up¨E<z ü“Í"ó(xCäç”ØQ,1ä |»çÅV ´\!Ý´)^%¸ ȘöâÌáùÂoÞ°\œqK…†+RÙoö#ÙÓé¹Üí7ÆHTœ2Ž†Øç•ØÓy¾£¸~GÚ¯D[âãÊ´4¿è§€& DÂÅ×Ø…QÃ$;%f[GQ4¸}—á+Ç[bŠ'H
-öwD«á?ËÆ2¨£ZÜ'']Š¸S#«‘ÖÞoÖÆ«¹ìŸwØ'Šž8Á]®ç¢Å/+”.ëÎzxŽ…üà¿ßUàØæÚ /%”ÃùŠIǯ6aÉA—v e´CRæ¬ü·}ð@0ÁÚqóQ®)6¯Ûwä<¹BvÊGð[cÍ
-¯Œ¦ÓŽÊ{Y½".ÆWÐ:.d÷¡}`/lzÈ^.ƒôö¼KÐ+.Øp¢V’ð1)Ìe×O—)š ²0—´\
-j ÐìédÊ̶ Q¾[}n²gV/³r>s™øõ2äxº ðÚœ Ž¯-vJ>ŒêÛg–Fûö~5|¹—ÚÏ}÷kÊl
-¥Ç}§À?¼“{2
-¶E˘!+á°f­MÇoÅI¬Áßoî[ñ¢@³Nƒxxc„¾EtÆ~qšÔÀáø:×¹~ˆr8„;³X‹&t%Cˆ×GM˜FdÄ=Œ‚¦(¤ävTEÚkB7Õ ‹¢VM6l—Ðb ç+ÌC/¦ÖÔà©èiìï7Elëà?¸bû0 Ñ rÑx@
-k€+íå#2aLÃñ«„~a. ¬Óä¶(¶1ÓAþÅèóÜßA=¢BÓÕUe‡*/â~A…ó°…©á KŠºKÚØÖòh°àÈö&LúÁys¹£AMä.“m!ˆñö¹)¹½Î
-H‰”é;Û ÇOd$²‰D‚‘ˆ}‚ –¢–Ä®BVRB„Ð!´z{ÑV/ÚÚÚªª¥EZmu}\zuzïóÌÌ3óbþ“ùͼ8oÏ÷œÏ÷|Ï—ãí=ÛÅU{KÀZ[ÐÖN´3¤Ox: úå’Ò×Vš‰1ä¦bóD}V’Wg^2Þ,OĽš0œoXMg[6ã÷Ý+¶ãGfåÇùÇemòñýË9_Víõ/nXRwÜÝ †zbWú[…³œau6­IƒmÌLñHâ³A@'CFH GOa&}¦½8dy°:õ莮ú|³Wó}kÀøcÇaù¼l-ÿ´Ü©ü¾i7üÜì<Ýì®~u³Yüt¨.ðù˜1ö™«#qD]L¨MˆA5%' :ór±úìD¬¹0Ý«»8Ì‘ñY¨²èH¼>_æ;¦*Àœï*:Ûttžn9­—jÞÍéÓ_ݬMx¿¨ÍÙÒE¿¾cÉÚ6Å?r¶ðÕVf:ÚEÎú
-òªßSšï+ ™>žà€>ê1nÅÑñ÷WC“ÿz×?ü}ËTq8W½sC)úëuo÷ù¾säëÆPçû¥®Â“õåù¶µñ÷ {Û§e[Í»»–úÇî¶,gs·¯,—èR)}ŒŠ’:9Š0\§`®ôù=¼È=š3–þóhpü?'à ‡«öÚû.£`ª»‰êÔªñÖºjL]n6dEE@(“2 ÂüÀó£€7¾D ù JFÝД‘·Uœ?w,5g»Ö¦ý{¦Ô½»ýEëSŽœ{#]¢kFÁÑXŽ·U—bšr3P™<…r Dª„XH å‚î ŠÈ`ˆ  ò0Ô¦„£Fkr}ö®ë¥ÛW[BÚ¶F a¯§ûs×'ìÉ3–.N_]“·¶äª*=Jbã!‰Ï™qþþÉã@ ›T‚' €â‰Eæ&@,› ˆè¶zÎÁŒ)þh¡Wy´4jØœ,XqõDÝ0éX¿¶ë™“z ÉZqS“–„RFI¡":ԱѠŒ8€ Á‰84xâÿXÀ ZÛœÐF¯é³¿më ¥{׫9§Ö†ÏŽöçs¶¢¥QsÄ5C³oWy!¦-'Õ&K]V
-d ¹ aÑ!’é¼7=1L#@ ²,œÐÈéϯ7„y¨Ïz·Ôûeµ=÷ÍL›ôàf{âŠSrÛÒBskj eæRVT%H ?R
-i¦êíxŒ°‰8°îÒ
-E"
-î÷řڙ …yèt‰âùPŠ% b±Æ^à‹ÃA 4"ÂüÙ ˆNðÈ‹’bFj ý¦Ûå'k=ªãÅŽœ÷ ²×Ó¦Äý©®”…~#ﶭëÔÔ“jåY¨’Äx(ŒŽ…$
-Dl1XðöFxøC _T¢/ò/H 
-P•q¤E{•øìI勵í;ú~¼rØÏ÷ÌgÛ}š+Êõ‰–ÇWÍÒ1]3£>3SÅâH$ËL !Y¦y⑲î~@ó!‚?2wx
-$ñ9!7ì^®å\|Ïíõõ_¿ÊÌü² ý ¤ði>$ýN:äÚR!¥O_%#;n’Ú»Œ0¨Ï ljîʘ„±É¤[
-e@šò‹!ï‹+/•dç$gÜûò&73 ÝT•"êHË<䮕…:ö20±&wÇÙß¿
-â¾ELŽ:„ô=»kÚb![T;£>‘|Ï wlÌö°‹‹[·³k"huû'eˆÙAúëù! rÅ0Ä[›„f†Y­¹:vl“ËÎì
-›•­óþ®b±ÊY s?ãåª^ÉxF'~p,îJO‚rýéŠt2î€Ç>6=:GGì8)Í+Ó„²ÙÄÿÙ”¬"§È_šµúõѼVüÉ­!ÌiéUæ~ê‹ñk8ØŽáA”YÍ/÷jÙõ«>öhžËøÝÏåý¾ÌœyI¨­Ìë_¸5 4‡­BbÂSRÀHoôip9“„Ò câ»D ·µ„×WfÐKcŒ†¹©i¥E£‚™xeî1áǽ‚¶Ë.Nïæ$ªÄ%(»¾¥ƒe}^8ëJ_|‘Òuà$5Çf9Ä ;«ËoâwÙGùµf5¯Ì¢”@­*F¾cìtÎ 1g Š¿ž Lõ/kñyqô¯‡³\rØÊÆ5Èg»Ó¨—ÿÚ–l'‹àpÌ+æ‡|â~‚ v ½å6)ü)uõÄ
-`ãq×Ø[µgê.Ù5`‹¢ŽDWí¤Æ¸‡:ñ Åû.fç‘+Ñ»yµélQe<_ÏüBIØÍDïÚ‰õk:Ô‹M}wɺ±§!Á
-­‹|î±Gĉ;e‰ìÒÛÎæúšOç‰ð];îí¾“{dýf çÈÁí ;Ù˜M ¶ŠèG=j$ÔF&ûJ·Æñ…kÄÒmc?k+¡ÐŒµmôlNsÛÖÇÉ•Q»óÔÍ£XqMÿXâK/UÖóÙè‘›Ž>òÒÚì4Øž €ïLŽ=|ê±WÀŒºØ=G^±8b—rœRÞ®ùi]/ÞÐãŠÃbÍ®¡±Kc@upXеZŽW$ÚØ<“Èj]ÔI„Ålè’íÉ–ôCæÍož0æaã#1¾(VE—ÀÑu¯L½éQl¸G6Rº’X˜â¶„LbÌŽƒ;õQ±ç‹\æ…Ãøï&WþŸm€î§á£nâûØ,wäH›Oùm™ÑûO?µç|–ØzᣢÜÔÖ°‰Þb#ÚÊþªå"›CÎá)Ÿ…ßt߬TXÈÊBœ,°óe™îlY¨8ðâZN—ùêÏAõÂY@<qQ>&˜‹q¶”ஹ„·zס‡ƒÛ6êVGº2´®ø¼T½6ŽÍ÷©þGq•}5•¤ñ×yœ93v;ÎC{qFlÛnŠJ+ƒˆ‚ì›bÙHÈJnö´‘M‚ ²ï Cزçf»¹I€nçØÿÉ\žªN=|ç«ú~[ |{ %<òiÇ"îhÌ!åF]üUiçõ=„xÒF)¨Ô”줦âÎH]Æ8òøDG¬wØ=%‡ˆT´ ñ•]©°àТzìÝÓµ×5á…¶ú¦Û¯[DO¯D{ï½ê€NÂ5NcŬ<zé“Æû&”y7Ñ×nI_üÕ¢hü:m&tŸN,gv§–¶çjfþ÷ðär9(“C> €èÌ›#¾Î÷¶÷?¡•ÁšlH,Ê~Rk£H WÄ(e’œO0Zô³Ñy'½+k¡µDuÃw×1?žÊç!·æCÎú~-g{·’ui–òN6kfµÅ Œç! ¶&e¦wz1¿x4Ø1=³)i¢5åœìÁœƒÙ š©ÍEw¤à`÷Áîàà[+ì×.9PI… çø@ÌL3Ò^¤,¬^›¦çƶ´ñÖYhròÏ®æìJ^ÚÈhŽë1wܽÄ&­)cCzZ'î¿ýHé*ùÔ ×ÜbÎ1;Ÿ±‰Èû Ýß/£nF׉¢[ãf¹É¥¦t§w
-®šZ:Ù2Û„úª—…­
-áÙ¹O&.ØE£éÁ**i¤õ€6
-UÞ?g(}š\*Èg+ad ɧ@·ˆ^«ËÙÇ_W<Rl“þöÈE·Œ_ô ™¥àÄÂYDµy~$Î{
-¹è=+µ7ª£ü7¦“a£«¼^pc¼¹`d·gôÔúØê#p Ù¨ñµ7·»ÿ•0à‚f ÷xÑ—Ûâab[¬öC=¥þp^ŸÞ 淅ؼƒOJš¾KîUüsÚ3$×À>1òWduÄMŒ–“­±úÄ6€`yB ù%B$sp@—ròNªªö›ª›Ò Ù±µ)#þaÔ@zÕkS*ðŠË¼+Í3ÃçÌ¿=“Ó$§K¦í9í¤mFÛ&¦VS5*šE¨·ˆŠ‚²ï›€ ˜Æ=nàÊŽ.¸!‚l/« Í$™2O¾Áûœ÷þ]÷uOQ·¸1Û<jà ÀkHOï¥Tí)ˆùrBÉ£"2嚈Ûe#•Ù2t¿
-Åȼo.åÁefùþ_è{Îá¦ï첆ow$µ_9$U·.”ÙA«Î8ƒ5—d|6ß]ñsPÍëlŠ(c>fä´6p¥‡su÷|*t~Ü&`†·ØxÀ.AÄÌnë)ð˜‰P–´t—E ØÒ“EdÎñl{NT/¤G¬Íù |à-xÊDoˆëY¨°žú2Ò~-å¹g• ³½Aþp²L®´L`^¸fÚEõÜß±ø\yྗÐЫRf:iå~òkQÊÞßs ¶Âå6·Ë¿A|zø÷sµæT豃¬©øTŸŽGöhXÈ ðÚ¤CÄ‚Œì¶€ŽVé9è†]TQ_€¾.‹lò0—6S›¤?n—OÆÙ…ŽQåSÓá§s¸sOÅçÑURÍ•mPL‚ÌÜΠŽ¹[&f‘’fÁ¯#Õxµä—=§5e— ÿïX¦x »Þ÷$ìltÄŒ-½ÐvæyV;³}*lÁ…ªûqPM)‡4ÌúÀ:µ,´ÉnŒ·…ôÌfï±Ü£À–D­"Öþ IoȽ±?K©¿v¨.w%£3ÔSª|Z&ð¨øÛ(È×£¢ÁÏÖµç*N‹|»ý ò¡]Öø³w—{<Örß·Ô]Ô0çq·è-W®þ‘ôa n§µBfüb«­À§k~”Þ¥¶½;°Fö+çLÇ^5uÇ€Û§]Ò‰ëcÉDÂÁÄD̸ç'
-Ô}Çä«{Q›Pߤ"Þ¥ƒÏY¨¸´K ¼vqh +u¾‚+>˜nÿÍ«aÔî/2^n‹ê‚º‰±¨Q>˜°ö±’2là¢ü*zyXÅ­OĤ %ùIh…Q“ÔòÛN'Û3½óíY®)dæÖ@ÙmCß³:d ÷Ý« „m¼ó¡k›u¾Ænõª{0þ .îíM:x®¦5he5?ÌuW§A†AV[Ÿ¸
-f?8Æ+¾ lt-aŠÒ껑M*ê𞘅PÚhÍñ*ë2Ž¦Ÿß±H oO6Ý‹i¹¨ {0OÌ‹د®,"JÊÜÏéXç+¤"Ï"!d¥Ì½€y •5e0^f}¶H‡}7õÒÜK”'ÇS­™go›~ .·gy¿Ï×d\Zé]1#ŸP+â ÷áMVëùzwY|—ÖqéâP »Âa{º#ëh‘X‘ØÑÒ`_xuì&—’Tä_§<»XÁ¸Ð†êíòúŸ -¯ÎÛŽ;úAÖ[Ü‹Ä×hë¿÷dÕ_@KX˜OÙYêYDå¦}`ÏÊÃ[<üÑLG¡o© v8Û’±7Ó|/´Å@^ïͦұäv/ÿjoPžÚÐCFü¿_äW`!-®8n$¿õ/wþ\íÎmð‘—;}¼˜…×ÑSžE\þ±‚sÎ
-¦9ˆßÜ+<ZÔ.Ÿ
-š…”Sðý~°"f.åŒ\:å³îuJùé:½2K$aÛðëS5iyÉs¾FçWhe§³íýkا€'eGŠ®œ‹ JuÒÁ¥'d|›X5Ó‘ÉJóÕ½óo‹
-ºâ;b~Ú5ø:` WBF"< !½ëMq{oßÑ2±4jæSÒã–Ô¡l.¾Ë§ $ø¹ŠüÔ½H(9UtÃBz6Ò9ƒÍµO²àyz2È!£˜ÕsšV!%fdÖ…´ÄgG3¯2-å_Ï ºÆ:øæpùç3ØlÏ4¸‡Qd†WÑ‘ÔÓsÿ§¸Ì¿’N÷8>gšÛ4ÍÔ©{gZlÑkåÒªe™–“{nhŠ²(ŠàÈ.« ûânî[¦)ˆ"¢"((".È&‚(‚V§Ó¹ÿÉýöÓ÷—ç|Ïsžçy^¯w[É}lñý_ljy'ƶ¯ZDñÌój}
-kö–::=‹œ=eÔ7Km#o @c½
-lêÁ,>Í>Q¿ÔœyÍÔS~jbQ>¯7÷jI¥žÙÚ7>51ß1¾Ô2Ð=*LöŽ÷àV‘söGŸ uⱎƒ< í›'å»”¸ì1t‘ŽÏ ®õéü«ÍíGæÆ®£µÆ>¿`©žMtβoÈw«ð™îy*اó=ù@/¯6uúÔÂzÏ %Ç)#¼1tÀî™:¡w¥üÜ«´w1gWÞ#2RJž¡õÝ KoY´ýêŬ$÷ŠRœwÉØ^zódM
-Ûݳ´BÀ× ´)°éîèG&>¯ …–qzŽ®£:Ê=M‡…V 69õíö6as°úáZ;äîÎ0ò‰uœô÷¸
-VY`¡}²,`œÎd©Â-C?7w„ӒΙkâÖÿyjhGÞÛ“r+ê÷ï=3ÄÆ
-Z‰±½â¡¾µì±kþÊÔ ‰”Ö—…¯ö ƒzfíjwÁµÍðï<æí®¼:Ù!EýX`c4‚:u,jVX|7°,~±´~ ®pëlŸðI;£¸$Ç81ëTË!ûçÙøÉzÐ-5’à“Ì}¸D%óÝŸò:Ð% r]+ß4wBÚ†qÛ“LHIâ­Ÿé ×wG™¤c}SËöhi”¡)ë’©%ï?ŽIDÜé*—y¨ðG¸EO»°/ÿúß®d0 §¡ÜRdüzKñUM}ö õé¿ou#NæéPã
-2øëjSÛçï«‘ùÏþ :eo
-ùÜ.«Œ|ÈH#Ç®äV¸ÌâC5»zk°:^/]×ps.ɉÿú„}ú‹’zÍ.G~ßõJyÙ÷ÌCð”‘C=r}bCà?35oø©×zÁ1GúÜÁ2Ÿìšk@ìLÓò¼& çÑO Ô7µ"¸Ä±†øÎ7G(õ.ÑÐ!k˧C³¨Ã½Ä¨ð.±jÜ€_;gI…ËdXhKÛ_âb]ó ˆƒ¥¦Æ-)ÔK„! —Ô|œgŠsʨo-È­á–1Ž b¦®tÝÔ
-ºií/»£f…YÇ؟ƦW„|»ŠW»9Îxëã×´<‰‘‰ù²Î$~±°¡UÜ6YõÄ1IÌ<ÔrIrÜ;C6Ó=%"ì+Ĥ€ZX·¯ çY¸­de_PÒ²³MÓ‹d|ð$Ê+ãTîɨ9ëÝ•Ñ[U<rÌߺö’pµ8ÿ/K?2þTßØâœÆg˜zaQæ¡Ê¸µþª¸žê„=À·Ž5”2û4%×.e–|5µ|37÷úµ (Sùõþ²pKø6àK1žFÉ®”š«oEFÚ†Éiþ9Ê.Å¿ÞÁ¾˜#þÛL?/‚$žÁ¿½âc€d"ÄZQü¹Åføë†Umè,ºÑ…~r¦>çöOÓÄøó®Qècï4r
-t‡
-_¤ë*Ž éù¬S³¤Å§][_\æà½*jéÎòq@Ë!~]oêøŒ-ê×ð)Gjü@YWlû€N¶”?4¶Á#¬ƒødþDRþêºu“âšdÁ\“b¼oŠšë“‘òlÄ‚ÅFXlgU⯠bhÊ¡J$<P±qæ啶’èTògS=!¨çÓ÷՜څ2^nÔçòªéð=91Ëù‰øU¦c ð˜áꇆ¦ÊØ)zþUèñ/uéÑß×¹þZéÎǪöqäsÏ4±ðH‹/únãüŸâò~J3[ãøäfî½Ifc¶Åì®IîšbÊjLÖ˜¨1ɵÅÞÅÒ,HGzQ,«ÑX£k‹
-PŠ Eì‚ (¢¨Ä½wî?rÏþðÎ;sfÞ9ïœó<ŸïçáÌÀifðék“øâó•n鱎Cs~ªŒÝͿ阂Æا`±A#ãÕ63œ³ÌR¯Š_ëQ°«?âÒ/·Ç_Á¦\š¥§^Û€ÄÕtøksÛ©•Ëe—Üý›J”“pfaQ}ZbÅæ2îPO,uÏÕf.õ@€ßÒP_€?¹TÍtM6z}†šç5÷Hk}ú/k|¡OŽIÚ,ŠX(Š°öEzµ¸B¿žŠØ£<z
-"°Þ9}¶)l?ß´ž¯ šŒl¼G˨
-Ï<)ׯ¡WyÔš]LÈö*˜5'`– ê¨=:~¥¯êNÍ¿/QÒï]D]´´çÿrndœÂ;ŸŠZÐ0ÁEÙ§%—ztu;2à\Ÿ1IA#ŸZîñ-0±[£Gû
-LFÐÀƒ½ààìþgzÕÖXmâžœ\ÅÎ0K#
-9ÙäQP¡†È»Š^©éC?uÎÒ‘Ç‹m|§˜˜±Þ_rsgr×9 ]í)¾½;ݘåÓó·ÀŒcŸÆ¾ðʳÁ9A<j&¬|jÀÄ£ø–X >qñÀ
-·˜÷Ï7Uût,ÌÆ4>yðÒ£ofí+› ®ÙòÇ+C×õ])_Ë9‰—}Jré‘Qò\¼6Š{¹
-d|È"D»ŒU~ fãN,¢®ó5ÑûÀbÊÔ ¹«á—„[zªî¸fIÙn¯Æ8ÐçS73Á°6†ªõ£/ ½4G{óO-/ûk´.ë¿6aŸc¡Õ‹¹ê˜ •†Lƒ!qf$Vž,Õ9ÄåÏL}Yæþ¬ðÐJë‡s¯ÔµÐ&rʧæöÁ¯éÌÈ%iŸ›f/vI«_}YkéÙ[lïrÎ ¦ÖŽc+áWS˽sø ç.i¼15¼­8æ²[×ÂÞž¥å{4ŒÏmûÔ˜¼ jÉ>Zk.¿c,ŽôHñ.%µRÛ[}o{Š q+ø v)1sGJ|g—àß8dõoöÔ„œƒ%NƒßÐ=0öÎLÝ'Ëï'N—[ZCÖæðn9ÿ°
-Ø1#‡œÜä²âf6ýÐ@oñiå–ñº[eTѾ–ÑXà ´£ò¸~T ¼¦;¤°kÆAÐy1:ãg×$:×&k/|‹/8íxÓt7¾Î£G×xôðJ ƒ „o [alùs¥–òÉÂáŸlq{<jÀ[¿äc—õÁ$?ÖpÆ3G,rIZÓKÌfR@3Žà{éЈžK‰®tµ©8¨Ã….„oŠRõ€.JiÅCN»SÚ^¡î©ºàSË
-R¹W†ËÝšÀg«„õ×ðÌS.1®Ð=M.²·¥ûÚK\R\¾e¼þ¶k¦é‘_E(øH]‡z¢î¯K<¿ûƒã¥8 póHOƒ{PÙÞlgó̧¦7X& yÀœ^x¼˜©›X&W[F!¿.sËΨ:Á§G1~4 W¥h™9š6Šz6d· ¾ àGù5-aÀ -èžg>÷,qÚ>Ä-§„ Ž
-«ð‡÷Ø{§7Þ6Ý ‚R_?ó•i´.û“Žªó\“UizQÍ/<è  ©ßydõ?ïðöu´ÆÝE\Ðíæ|°òŸ\]]$䶼:×1 }è¡žxq3Ÿ^çÓ×yÔ˜ž×‘\á2ÿ±²¨Ÿ] BÒJÅ8$ˆGn)µÐVvX/ ë{» Â×GÆ^ax…Ï8PP€ŒÄˆ¬’j‚*,È+oËôÎàr€œ}×ðºñªU„¸céoüm]
-B ‚P–)j¨¡bcgâ»?å¾þagvÙÙÙ}ûÞçE Hx—ÚþÁÂHÚEÒØž`,jäà?Ú¸,ÿ&±*¦c€þÁødçÐNõ<òÑæYïC¼›b—nrZÒ…-ùßÊp ŸÂr>âd•åmH3IJSc éî%t–c¦óéÉrgNRÏB®“*Nôú°–ÕTaŠO·º ½ð­¨ô¦f üÒÉJ[æ';ƒæÓQ;*TQ`‘R#KFRÇ;­ó˵óó7³0mzÓW~ëøô3½Hrªæ“lÝYR\ùÅ dQŠ–ßòï)Lù5IKá%û®äp…ÚŸD<:˜éʜƼ¹²Á,»T’›üJvo–Y6MªLQ‹ ÙŸÔõ f24nÁ7GM@—¸ò ¡4²P1›p4±Ç&^NÚ‡×bVñxÌ*>Þß1בah½ooè”âA#¨œ«
-nÅí œÕè•b²}¥)vÁEÛPí]—ž5O.IÙäƒÄÎçSâªìÓ­÷ís­÷60¯"»t(Ð3Ø1³pêüP¢ŠØ84Ÿ†ôoKxQý¤â|¿o0l`À³vDó&Í\ZÌÂrTæ ÃàdXÀù·ðeï–áY†¡Æ´ýyTŽo›Ö–´÷ŠŽUx°}]6ñâNÁLÈÈÁ…L¼OCoõ'a ›E#½Hp¬ê„u^Â$<·ô‹BZv—KN¯Ü—qê]Ë=Çëäjë$ìZ̓Ša/R#Z2:´ƒ­>Qt¾t-@ŸZÇêÓO”Ä·‚qʘí
- :³öó‹ì:ó1?°Ëãþu0´Û¥e¦Ž˜…‰KÚûcæ~IÒÔÏ‹é¸Ø¨¶4jÃZÚ¯a¡ÛT(p/]uâ›ðµ:¨¤Ôú×Я-#Õ·L¢†4Ç$µp¸£ø‡E|ÉE îç5fåÍ%lIÊåí%û0ä®gXªF<pLáJº>šWÅì:3ré »d!lˆ½ZzË1àñ®Å®œ£5\‰ZXu+¬$AÏÌâ±ÀàSÊ-’ÖŸ'áù—4=ýf‹S›JkÈü¥ì·omƒÍ9¡-BUp[ÜÆ•{äð¼ýiP†^{YEþÝÁ$ãPN®T k®ui®©Žç@ÏÍ‹íêÿr’-xðÑ$#¤Å‚þ|úO§x鋃×w¦ìÈ É›©E <ӣĔYF ·Odt°w“ƒÕ!ž @ /C²ï|7ДÁ&lK?œ‚Ý÷¬¢^Ocr¿Ÿí~™r0I(òË{s°ÇìÊŸ4Bð‡õ\;ØõtOJkèD>-ìWâ*CZ.aâöœïñú’62ñÌ€ïï¡Á(¤£w&÷%+g{C!Ÿy°Ò]â^iyR!òÃZl¹qU8Š*KÓ‰‘yÇKœ&ÇHçC¶àljöç?*H¯®z__=Y€fÆ t¬j¼1“Ûðä‚w‰Õß‹Âz9ä|DGGŒpò€IZ)íNöÍ,£2}¸+÷Ú¹K¼·(〖O5„Z÷\ËCÏ*2'¨&Ö
-ºVŠ{uÅ«DÖ$, lÂÌÂ'ö˜=q;ÝŵyW¿æ(©2aŒž™Óžm>ô¨S=ãQÓÀÇjf‡`Ž¨U ò{ô½‚Ñì^¥6Äícš¨mÒsŒ¢¶QEÂ*D ¬.'Ðß)™¥zÏ0ì­ã‹M³Ý5å“‹<‹Ý™îÙ¶{®±¦[ÚÞ¢‹j~íinëõÜ{—þ6
-AIDqu;§çÜä~ýöùüö|>çy¿žçåÑ6ÖøÁ¼m™ß$“­ S³õ}¤T^Ú´1ëQraw:áÏ/÷ÀSÿ㪹4Í êHUƒô72ãnþKÙ^™sbiâ†×$÷<µdäÜžªöñžžylà“«’f«œP0Ç/º¶þšê5Êd!›¬?èhnóïIzƒzÞ<ÉÎßV
-ê½za[ÕP¶ˆ;#Ö~ãgëPÄ*<Ëècê3±ë=K¬2Ókt
-µ éë€NÆóÌòª÷Ì<·œ²Ù‡ŠµtÂî¬tbc‡y57ê3c.Œ³
-ÜSä´8J-*¸âDĸäðxßêiÄ À -€ANxË¿ý¥£Y0Ê×|Æ¡Å°¹kìÔÖ,=1‹Ï÷Ž­YnÙ¨™ØM¿féÁ5µ‡“´÷
-r¸#§íNã3íãȇjiÍ}K7¿L'¡díŽaŸFLLÌ‘¦}8ÃA­p)g«Bàp‘”·7‹þ+¤cT©%×xôϲ޳Uï:Ô%¯OÙŸÆÿíRÒþî$gF)xœÃô G?2Î(-º1Ï…\ÛⲬ6å»q"䎥ùp„Yôsyâ­8iÁÅs‡!f»§™ö×è‡;°øUM’[Y—ä[àÖÚGq w&‰Ù‘5€|jf#f
-…»oëSæÙY×W¤EÑ[#˜ä ¨
-ê8ð…–šèõ>Zªw¾ê] Û†Ik=µ÷œcˆx·
-ûä@î=Ôòþe‰À5Ë©óš…þ‰Ð£3bà7œ8„àGpÏs*<
-ô„Sf_Îʵôá)hﱩW»PÉQ²º‡·»ÑßvSËÓ­
-Ég`£Ý*zÅÁ’ ÁkÑ‚&6Ê«!•ú4,˜WÃ*·ÊÑ)ÆnØýµ7¤¬Ã‰Ì­gÒÜzÒ·.íé¹·–‡Ú3¶ˆŽAï;Ðà
-6&*ãü:6É&gQÞÛÅmŸv$}Çf.íÔΡøuÄ¢mêÏí)<DÛ¹¯:÷~ÅÁ¬¨ng‚±vc~QE—°9_ â2þ­$ç\9Tpë6dzܗ—öäøŒ£9z¾žúâHM+ô¨ˆù;JFáê03s ¨|à™ä![ŸÖonƒsýÄÂ%›ÄŸ^ÂÙS·ŠVjF<ïGg^à!7úê ÉÖÌ/:^ÅkKå̓·ä,ç륨þÙ•nìó[GZ>|Ì«&f;Fj~äå] ß[‡êâvÄ ¹ž^ö$æ›NNì'W‡*´Ü*;ù6СÖ7ˆDí«Âë®·µ:>®Ÿ”yy¥š÷ÁÜ6|¶Ú">ÑР–Q꟧Zú1ñšWèØ^Jñ㌢|Ó"œkü—^R²m€údkˆ•»$©»×QŸöMkeâ?=$ÈÊ+hœ©­üŽŽ˜XbÁjFIÄ
-L®J’óÓþæÅ{;˜Á5-°&‚kBÎÇMéÀ‘‘\¶9‰N’óKòãoìÏ4äEVè­Qdš{ õ$¢#ïNÀSW;Š£åÄÔ/탄”ÚËXVñï—æD%?‡M
-âÚ8NEêUSìeÄÖ9u°È®qÊRw„çA
-l2LŠJ¬i,Ý÷@‰ÏrªØˆ¹æÊ × äž`ì«)`·†qkXÕZrJ˜é»Ù‡L:7 k.pO²÷ Ô‚ï&6úO«ôË‘‰÷X¬­±Z”NŠŒ>Ðs*=³ÜÛ !Ñ,)|2%ʾû—è×ONýus
-Ï—¤KãtVÄ?›“H=æα‹8P³ò÷ƹ…smÈ—sMØPµ
-zú}CCîßg>UÄìkxµgý†Œ&ø±&j¾°
-xn dFDnÈ+Î̬Øÿú
-è2–n\¼ÛX‹>²Ô<ólü)ýžzéñ £|¡»*\ßT¸9L†^¬Ie. ³pk°:n£˜¼ÚKNÓŠJ_ Ô€üf%…/÷'YðfZî¯U©a>º\þ¶Š׊A¾“‚„ÇS©K=£O¦´“‰x[ÇAS‹ÞÝäfEþX6xfüÔ’³íòª×ÖÎÂ'Q†ŸA”õlkœY@„ÆÜ¥äÄ=uZML”¥òl„wK”|µ­8äÊÊ'HÀ±‘QîPó‘¹ïŸ_VƇœ˜X´¬‹ZÏæYxû0<d­öÛÞ6ùÂ*nsiy¤Ñ:Ès£úübA(:4sÑß ,ø¶‚’åW¿–¿Xë­ ÝP0³YÐhobæ«ë3e‰nÀO7åèTë—’(SKaà×ÐMôõU%7åS‰LÝÕ3íJdô¡±è[­}çËZ`f§V~-“
-š4¢üp·ŠXþÝ.ï.
-Ì%ÃįŽ–=4aìS¼*)£*Â1JÍ>Z` fÑàÝIdìú”€ oCEÎó`¡³øMmKù–®ÐÚ0ðZ+BުɼÚÉûcšZvÏÒ‰º¿Ò‹yä«~åS
-X:" »¥~}CžGQûæë.q[|ðM8l @»ui܃ßUýݾ¯¥ ¶¤˜”QØ%¯KÙ›o*òÏs ö! [JËû¯cøNßÑ2ÅA½X#AÎax¬oà‘êÛZ קãÔü°óÛMœ&§œY¸;Ï®ÝÕKŽÍLàÜÁk;±rè¾yRþž†Ü Ôn))ð-枦:ÇHï¸Ä-}j ÷µ-d’S¹%ïflN´×­ 1¡¶~ÂK9#/bœ¹é&¤x䜲} µ¸É=¸¿Ø&Úѳ¨ÛsM(·
-Èû:\°§£Uú¹¤o öÍL'[›É‡f>{GÏ#i™]+,z‚˜}]Ó\tkMRùp_ 䞘¸Ôi#Ä2T“¸3G+u)H™{zRO‡ÏrHk_»Õä‚ÃÁ§¦”œY['6gßLÇýtñû~¸DcßÞq²ÂámÍÒk]³즜žïQÑaß7:¦÷L<Ö‘•Ï?·‹eç+í_έ­œS î7 ¸N#×­àtƒ]në©ŒYéG/µ ¸Çz!*z– [j+¾íÄ>[Ÿl‚X—:jcÖú…°UIwÕj?3}c¼)c¹§,Ê".
-߬{ylàÔû ´J§—².%@ÎlÂŽoËBáÁ’ yßÈmÜž£û—x”C“Hph÷û—lï «Ì«d•9GH[wå!¥}º%!•ßd—|–>E©›K"{1ÉAc à qUÂÅ/¸÷Ásüòk±<@HšiGxˆÔöt²­·âq€~$¤‡¨Y¡ üÒGVqu²£ü^Û‰{E.H f忾¶§$¢×G ­qÔs{ì~u\Ð
-\CeÕ¬”¶D¬WÁ(&Ããí£µkè·¶ÎÊÄ !Ùhbsó^Óò1¼õò’s˜™³ØEÊ5uWðNàÞÎp *øÆ×¼˜“¥¨_‹ƒ:$%­Hñë[Hf ¹x{†„ 0P͉µ õÃFÇŸY(¨s‡æQ6äæðñ`Ž…óýŸâ:ñf{Mã
-°sežY:ìl‰ŽuÏ‘gËþ…EÈ?7óȧf6Ñ¥¥–œšùüo+BáÕª¸å§•ÇºX¤Á½zZ‘{ŒüqÈ“­o”T=>ž%ÏtSÓŒí 1C ˆEŠÝ¬ sªàáyí³´êÅrg]ˆC.*]ék*¶õ0@;£œÒ!dÌf?ì…k½7‰»u ™«ªª0s_Í›Óeßd­ç"<~ƒ×ȧ­´õ·¶+¿[Ûd&
-Ü¥Áfìë™°-5%ow„˜¡JÒouÔeþ¢çÖ­÷s
-¿âS•ÄOL-¨˜i!ê­±­>Æ5BÉÙÕ0Ë6†1‰€Þ[ûÑñ»ôϦ¶ÚP½ö¸±Y{£¸,†YºØÉÞOËXî'§Z‘毘÷Ç3<ÂB쉭»6ÌÞ[­$gÿ>Æ*zaÒ’ä"B(’vk
-ÿÛ)ùÎ85ÙwŸüW)óïs⢗»cÔc:—ùòf/âCðµEØva
-vÇȹ.*ÎÖ‘÷p†“ñpSA€®ªè…ðô?S¼à|‘QwÜN[,Ü(‚<@ÇùuÃÃoN“o¯«¨`VeZ@eJð¯£ÔO¡‡à2þx²>åp¼2uŒùþq;,Äw†•õ}ÀQèû;JJnüwƒv½Æå\[iè³9B¡g
-™=-Lû]M؇P©´Ü09>íþ++hšYðÚ9€M?Ö‘ŠwÔ8Ð:p ôìÂÛ2tÞÁ”¶ÔËÛRÒŠùål«Ù•NíþbëF¤ 7‚héA>
-<èÕª ¶÷×Ä訓eûÄÌi:Þ» àìÍ°tbèÓí|öJ®ÂÐZ•²­¬M0@þNYù«#-ð¾‘RêTקúàÇ}3Ón ¡ØÚS·ÜQ±­Æ€<Óä²ri6ýÛ)îÝ›ÆezfÈÅçË\Æå
-Wp½Ê“üt›¯ìBñ…UÀùnç󬋥ÿÚ÷(å×6aÓÖDmçlc
-â?ÍrÜÕ¼–Õê× \ÑO/Ú¡®o|Ú­È
-Ðz¸!~æ]žhw-O´nñ[ÎÜ ûÝDœ2±[ãZzcZ?Þ3‹y»Œ•ƒãÈ÷»B ¤›¹mÒwAÞðá"öÛý¹¯cëC?köK£M…¥˜dŒBœAø§"7}nUöýRØc¡B „+¡¤"Ë#wâkãûKœ†¼Mð¼â’Ž^Ñó&ÖÀ»ˆTqæPcmñ-ìwäþ'´”{IÐåß”u”ÔÛ
-YÕ/ n·
-²NGvwôQÅÎê¬À€{Šò£O5\_°(˜)„‰­ñ’Z~Gd‡ûԷƲ¿-Bå]*ñ¡VÐ Ï2n% 3„q^’1ɱÑ-öã#§ùãžœúe¿˜[°!½Ô ÷ø„¢ÀÕRa–1;2tÌ(Ba¥CTXÚÿeáRÖÈîÍ›Øe'€ÍZ¹¨„a¼#¼ <MX%ä¼kRyžZM;@RÆÊ'¼ªÖÞÄ• ŸZܙ㴓D×:óÁÞü`]t‹I}8¹ø>&‘Ÿ¨=UËHCÙÌè.X¸øØö%´öblG<ú‹cšÚõ!"_(#Œ‹o`°IZþ¦c=ü‹ŽÕp¡‚ÌÉNrÒ =OÌ#Ó$=‹°$g‘§vÅØ£m 9¼È¼^»“Üå÷· g¾°+¦ƒÈUò®Û“ÐqŸåMÐ ÂbÙ«žLØä£Gvp`š¸Ö_üÛk¢Àæ,%®“ú§F¤×Ù­e _´‹G|[Âv »÷¢ßøià%÷YFt†—pW÷Ô _DVz®ä­|LÒ6ÉM;§d¯j"ï–г619·'eäœÒÑŒÄl¬¶¬ž|?ckÎyÀ!ï·U<Ú|‰ÝZÿ§²QL¬Ø¬‚EL,»Á‘<, 'í1a•’‹ð¤²œT—ÂaÅ#=†…¤š[D;õJØU—˜–2qÛ÷—é·“;6iS\ÓäoÝj\]èöâÚ×b›øúŒÖT‚…ÿÊÈ#ÿ"å?5Ä.Ú\xyðzh©õ_ç>ìÝ×!bãI
-ívѨÒð”±ËYU¿JsRÍ@ò»bg÷eMÌöŒ]ø<iRŒ=šßÆH«s{?·Ç§ä\àXÑP²Öñ‚CHÎÙ•<‡jä†GCTvNM& blìØ‘Ô‹Ð1½
-„^˜M¹Ìr€Vœ¶–0ì?t‰p_yx¸»yŒKjÙNöÜe’EèÆÀÃZÜiÇ9„ÿT`ÃU^ éÆ9øAB,$T®iñ:Aœm!?Vm«w‹¦µÛ¬[Õ¼Jü”ñÂLŸý¤tŠùæ ç'[w/lødtë·#²7ŸaãëA˜¾2Àò¹â`.œ›é‹u7iã}Šºñ!ÏØ»Îò Z˜Gªx!Œs)ÐŒ¨ôÕ òøÜ «˜ÖðèW)6ã`¾dÝúWÕEzÜö3×ûÎ^Ë·?]±nÞźßX/°ò÷²ùù_ªöµïz~Ì#±®ÕÃòº‡ÎÙ‘©æ3Z؆õ²ç¹SêxÙ~ør˜„DW¹£Ó^Þ„7ü¡â¢­w"aë âÔÏ
-v;ÊÜn¹»ƒŒ2xîäl¬ÔYì<œNBÀeø¢wYñI?-ÖT#œ’ïàçZ„¾Ò:©U?uºŽl~”\g”¾÷¨*|•QØ+¸‰OòVx5¨ƒ^À믗“ž^Æ!î Ê%·Öj ¡Lµ1¿éúˆ/:Q¹,làβqãŸ.|ó§ß= òUVƒSJW= ÑsÖLê”û,¦%Mð"o}ú÷â剛5›5JJ >}ˆýûÃ3>³ê–ó&á›Ô©h>|LÊ–?¯¸5äp®ææ¬4‚ƒœ ZÊ:Žé)›lµ1žÕ¥èV‚%¿ (zx› á‡s3kµäTò3Nûi@§'…e¢§f¥ëRr-\Aœ‚coòYüî]šº~gï]aùÞO©Cí0w«b=œªÚ˜¯{!ÖÚ(F_éGhËu?{µ2¦J`£æ•0s§´Ç)ÉÒž—¹ÒÄN¤t"œíz€½–³Ò&Ó˜›÷ÃBáUJn¸Ê€¬AŠA¨…ö_5#œÝND"®¸DT¿w«$Oã®8’¶ÃRiÓ n£ü½¨hñV¡¼îÇ
-da3û:ïd/tÏ ÖeŽNdöß”ƒR0ëÕUB:[3ªväÝÚ#Fµh«aåXH­Xðñ¾Ìj9¯:åÉ ¥03Ý0)êq¾›áP9©e˜WFGE¤Ÿc3+ž'e7ñE=Ò²°ѱÆÃZÆjÚÜÁnÄâE˜‹Ï»Ä~Z¨¼,úy™»™”èëq*"/«AÎn#)Sõ1®ûÿw€ÖŠîÏõÄ—£ “<ÊJ-=T‰äíÏÊnúÚ #³ PX1Ì
-Â|“¶RÆKáÕAI»®rå­$›ÚN@À° ÒÒ°x˜¥nŽP¥•K“F5!¢³Q¼*Ï®Q¤b¢óÿ–Qêð%“ž•Ðð&¼"æí¨zP8Q®ÌVaÌbÔ¢iDþ6 ïŒ_§åŽaFªoƇIëyÐÀ{0ê‰Nµ§‡•?íoø8ŒŸv…h‘Š{QPv –ÑSù¢Oªt
-ÔmíS!‰ýùÕôoÌŒµ;½°Jß «M­°Ö‘¶IñA½ïVé'šµ”Ý$r*OV­bÍ”_í&&,KÌì=ñh¼\߶  O¨k´›´YÂ-ÅûŽ…¬{èZ#Šã7 Døˆ‚À <áÇ }ìT¶ŸÎ…†¥¨Jü¼äá̤‡m¾À&ÆuÊ&ÝAÄìïõ¯)5{Úãä̲KD*!R=ïP‰áßE™cl¯Ú¹Îó¿¾Q-*'ŒœWN!é =•òç°æhùÜ«
-UÔF°¢(.P©ƒQAF BÙ#„²÷"óÍÎûfïY  ÔU­×ßõ¯»ïr|‹çñp°{‹Â©½0ÿÖ?Ý´åeu&ìŠßüf;Ñ*ƒÐ!­ª3i‡‚:]r²:Ç« ²Uà ù„àV¨™Ø *û1q7!¢ív/Êx¿Ì"¼?ºÄA‚=±?²ZTDJº=ƈ#-¹½Æ0dÀëdPµXh®`Qõ7IÃê ¤!q¶®ç»ÙB™U.í˸Å#û‹¢™·KÂV„ÖûyCþµ¥N~Ý»?®q؇¯ùs{+JÕZTNy43>ì š´¸Hƒ_hØé ^…tc1£yfQo-B iÙ)š^óQ0+6bÝaDLý˜Ôº?¤ŒÉ/Uè´ þs] þg[¨ùë “û¿ßyúÿî‹,o‹M_6x¼÷)>k'®R¬tó!«nÝ'¥¬¤Œ%;³-‘p?¯sx{‘™®M¹ý "W~ZÑß'¥òͨŽ€¼¸Ï{õI>,_ùq”Œá~,'êošæ¬ÕV–¥e¹ž“§Ôˆ! í
-½Op¤ZA¦TÊI“ýÆ#%¼[6ÆwbFÛjÈ ñÙô£fØ;Ái¾\2ì÷ †³* àC2;>*×¼ŠécN©·ËÈ¿äQ‚O0虋=õ“ùcÁ¹‰.n®™¡¨}3Ø>%U¦­€Œ‡y­aH7äÐy& }”hÔ%ˆ®·V@qÞŸg-¼%éa 7ÜH›µÝâ©phêù5S'Šo¢³J jŽ5=ìÍe Ê­ü(6ZÆä¶/IBǧeROÊÇÆ9¤Ží®é¶r ÇøÈ©wö9UdǶü°zÕgýF〙¯xÏÉJ$£„Ÿ‡jžå˜ ãUÈÆ?©¥’*øß²£c0è»ÎþGï‚-®J¡­¸k=bsp]jm‹ŸYÚ¦¸9 _õÂâ€A²lUáM‚ù§Œþþ³Ðå~L ¢”c´KŽ¤)c×0÷} gÃÌA¿q0ÚWõãO7-¡˜Ý!Š8ôS»aÊ£“6¸Uü
-¯ÞÐfRy;@pÏš‹gÙ×…u­\ìAÍÍB°hòUtÃÔÕúšÑÚ›y½¨‘b1QôÈ«Ò">X¸± ¾=rÛ^”Ò›qS^ÉxÌÑ=&I)
-a W³ˆáhÑü¤ÙÅâÁ ×Ůٙ–&öqd óøµÂg@ÑÕ_²;гg飬B-Kô< ƒƒé€š¹½ cF¬7>r÷f€ÑðÃb—ËÃ4¬j…µI­òwKx®JzÂUþ:;Bÿ¥=zc´“v«»™tU?r± Ù™7;„½dsÊ-B)Æ!3Qb›æ]
-´þ~ä’/iáüß;bÓ×Mžàsô\ׄ—5–L”,/Z@—ÙF‚A¸SÇSþâÐZð“s’€µV‰¬*`šo Ùõiÿ<í5uøkZïƤâ°Û£‚-q®
-ÚáŠä»8"5qo`Øœ79ç è¾GÕÏœ¨~>’ÓÒÈ?ƒê„O]/~ü©ùXÙCÜÉöFÂiÞ4ÿšK©hL9AâzÐlŽxÃn«ãµZ½ždÉß´2$_ÑTþ‡ZyùÆô¨û2y̘›ð\%›òð}úË]Êó˜vÝYT»údQ)¸úS3P]E;>2*
-!-TN¦DK±íìÝÍÄl+éBCÍÄÉ[×+ÿÙü¬ ¡¥AMº9Ö53“o&<ËÙ0NÖ…Ü#lZ ë ‰I¡:Õ5Ã\º‹0ô ZzúAï€ã‡Ò»¸c%%Ù¨Ins—îdñmp>¿È+hÊ*éYù?÷÷Íüƒ8*1_S~›fgI¥Ý\àOÆÝzÍš* Ûd†8Ó0H_yZE=Qr»7»ò9ñÔ«.óéúVýñÇ/èY…7{‡OÉYå5ܬüÂ>
-:€ìl€@Ôeá¬y/êا ‹±¹/ëg/A
-#v?)W~]Ÿ7¼_â3Ònño1—Gãw…õûk­Zã‚Ð;S´Ñ05ë+$L;ŠÈÔØÝ)Òâ-NócEötCÃÜ·µ5øs Õ(<ÏíÞIH;QÎ¤× S”†@/K¾ÙBl? ¤Š}æÜÊFê±êÚ7Ÿ—o¿N»\/B*é@Ñý ê~ÊfÍ™KÌJ&nS GdÈj!ÃæðœH³ÜC‘ÔÿŸ¡òúJ3A ø÷aPSMuKbï[D#¬T°aC¨€ ÒAD:R¥‰"5–˜Œ%‰™9“Ìî™Ý‡={Îþ3ëë}¸O¿û»þmÉë,cpf?¶±[V'o -+aU làeÑðì®ë×44W: dÃæÀì²™{C’˜u…·'h6‘¯|jѵ_¯>ñéÄ[6nÝ´Ñ»¨>iÃÍ}LÀ£ºÆÝhn ˆ~…R²F€êz˜Wµ
-à hA=Z‰ÒC;ð¾ÒâiþòÚyQ{@ l:—N+CW>Þð{3³Þ,ሹ–báêI;KþEâݾ°=yÓ, ¿Û¤!‹+˜@zÎ8š=rç::PÔ$’a H\!,½”©ï²Üo;HÄŒ™35K×up‰ûe{¶ùÆËÆì[#:‰µE¶vŒ]’ÂP9ÇE´‹”ᙳ„~ÂîÓf”2,«˜ äW0 Åðði\ð$"Ú—#àõÔGØ.Zò{÷:ý* e:Lëx½i‹¬Ø8›YR]ô/J¯ÞiÑ Ùñ¼¾sùAuóB8¬‘q/&ã-U ¤ŒÞñÆ… z—Ÿ0HÚ×&åÖdÈiš¿öK(gvVÛ±m±=d¼Ý´Z§†"O¶ßDçnf‘¨®øAÒîËÊ6ñÝMBÒóQ
-=N¥ñNÊõ¡q¾4Ô0>mOª{+{\Ú ˆÈ«¤ƒ¹0â#`BfPRCK„À‹¼q îî£
-$
-íÁÈ./ØË÷ ʾ+oàk€=âQÐ˶͢ɰMà‹œe|Å%z^ùG7IxY30ãÉAã5ñ#SÆç“T×+ä€öyf)VK»Äáõ½Š˜æ!YúÔ‚£„'Ùm2n„¨Gñ:(ÿqºÄûǧUã‘O9ow%Jë9[ ù€e Ý•‹,S.K`-¤0Í}ãí²”–^~jGŸ ™ÌóWøø4»bYj«qmꇂ®uÒ¡KC¹*DŸÝ¬®+/³ëÜÉh=rðÐ…©×š{µÆ­A¡Ô^Áà[²É<_I'ÞTݶöKz%ë~|6,~CG`”ÏXC4†vøË:Îꙵg½ãûºuöcîÁŽõÉ5ßñÙ>ZþÝOüóheùܧä¸\[kjÛ{öŠþ¿(=~Cæ_WâéÇÉÓ»q¨ASdZÁø0 $¦ß¹y RÑLL$Ðä0ùª¾îÀ¼6òWp|³³:r;ÕÛ®-¹Íî¢ôž!…:Ø'–Úxb_5}Þ‘M¦Ùsð$ó«&´è ¼‘ÛÖ-~5BXÏñœ­Í.ëÄé5 é?DÔcÃTi` ›úÁ4 ;r/zœšFmì`3ù) ÿW¡ô¢ûk†Ð¼li›xD!É^Ì2¬)¤ËKÃY-^²w™Õn¼oC‡»ñ³qÎþëhnàÇ.µó‹{®å«‡Ñv §WøM+ÛÎÛtØf6ôfŒ^ëìS«|½¢%W}ÑM¦ÊÓghº,:S_¶"Ñ äZ \©36Z5Ž‘Å5³m`ýÜ—.üû„7÷}o¦ëÊÏ%ù Ú}¯Ó¸ãÝ”8\•JV+hó©‹¾ÜQj ‰QÅÀ‘(²Gö  1^ÑD»‡èCê0«õXYjÂM`îét's{žÙ±MLøyÀ!ÝîÒ±·æð_'BÖÇ=Å¼Õ iQ«ÕÍ2ËÇ9¾úK¼¯ pBù“óÁìÊvþÓ¸ä0!¥(­¦€¯›fbpâD2É”±ÌrUíhŒ¸ ûbû……X~ë[è¿q󆾤Ôî•A«†SfÜpª×ƒÃ*ÍZ½áÃËõNܪÜ\/Q;Z8ʃÓZ>A§RYú¡ÆÓYíèÍMÃ@À³N<÷+iŸ ÿ½ærÿ÷M¸öŸ+‘äÔÅî
-¸l×µêñnrÿg¨¼ºÒ@Ð0|µ×s³çìÉlÎ$“¶³3“lb2›˜Lc¢qìbEAEEªô&(R•*½÷. E,`k²gfË?YþÀwñ~ïû<*iŸN"þ¬^6)dÒ¹Ê
-–k,“2•´²bí•j…ÍI2˜e “U—¶Òzóž%dÁ»„Ùñ,ÌÅðºy¬¼Î¦ïG9¬ŒŸO Z–'L2ÒÙÂØíú‘H©ï¦.[?LãÕ&hÎîYa# /{‹ç¹ð<ç»y±õý¢ÄðV¤6 º^G~cUz!Oí{aŸ‚؉JŠ§©d$èªÁï\ë*”R­ ¥æ¾rƆۉÜÐGX«]Âo?ôÐv€žÂ)ì×b½ísIð1ÝÜç„°÷¹“\ÿýŽ ×Óz“&öLÜ*BEŒ¼Ñ€F4ÔK&|ñˆn™ûJÍW·ªÖ>ß
-Ô­Z&R$¤ ¥µ’É=#æÔ/XªÆx‚ã m2«Ã·ôÄ‘JÅ<
-1i­?¤[ìsH¨MV!±Ám±ð5ZäbEÚ¢q=ZN_À$ž Wà·‚½Z&︄rh‰XÙ`³.“‹ gAT寮ÿAR2tφoÏè Í[8éXF¯hÝi7—r )aóâ A0uOÙúÎ(@<r©x]^£t*j¡woqÛ!ëȿ檄ش‹0ªûÄ;ñz×6ýfË<û.ë Ã
-{!¨0§ì\DÄ8èè]î5^¿nUó´ÍÜyý NóLs>ǵ?à‰üïiÌ•7‹ËºVXñI%_iO95ËGaµ«ìã°vlDàe„·|“nóÌ#/¬5&ü»O¼ï‘Î>wkTh܃ÕºÊW§–•8‰¥xC36û†€&Ç屟i•k ·FOL˜”‚‰Þ{ÀŸø  «•S‚ëý ÿ4ÿ%¬ÿ³²Føð¸éÏ1ƒTˆ‹¤)×"4h ´8ä„·V á¥kÞ¸nçŒo'—h¥$v¶µ(¸Ú^’ßäôË Ìàurr™ÄOŸ„ç€Y ®3 #n9'ã3Oã\þÑú2·âPÂ,T9L…½Ä‚‡ÔŸus[~¹<äQK1&¾¢ó`ßOïyÑ€¢ ú:§<©®“_s{”½i4年$õˆ÷Û6ȯ;>âHÊÃÇÖœÕ
-©/>ͪÇ4ßé×àÞÌ‹½QŸŸñ³`9sâ(Éá^å¸Úã0n¸ìÇ´Ÿ§ôë‚8z‘“„Ï6ÙâmcƧfõûÔ´îx͇Q‡Œîµˆ`Vd²šTF'M«±áÍz Âmæ ®»­¥M6·’`±·õc/cܶ[1Iÿ»œ~ô©“¸[F7ô®…ÌiáõQaß½„xäÑŽy¸mãÂ#ZZ¿–}|ì\\Æ„ª› :áÀ
-y]Ô€~,êAKvxá Ûš3£ÛŒ¤®ûY)¤å÷v€·œz1'^L×y„
-ê:NÂ^E³~ôàu ü²Ë÷”ÀÇflKý]ÄÇ;|ç£S+±ûÀˆútbǶµ˜Æ‚nö׌úÂIíü¶bgÁOÜ ä¾Û¶%™zyjCw\0}AT×¾ü‹ŸÓr‹ |ò'?­ûé¿ãLÆ×z°lìý[QÕvëÐüùÄ=Ût Bª!®ä ‚w-3Ç^L÷™7X "ÛK`]A3ðó~íG#üMÑŒnºŠ’&/Bxð™4|è„54º´tâÇÝLý±{°©„¼ˆ
-‡îÍÈO™5hÓù±¬‡>O þÏp™%½æqü§¹gν¶x›Û­îÔ”“eii®•¢!€Ê" ;ˆÈ¢b˜Z¶Y™¹€,n  ln¸@
-Š¬Â—Í}ºÝéÌ?2ߟŸÏyÎsÞçó~¿ÞOÅåí5׶ëc·Á™]»@#*<g—7Aýóäív¡g’U°3JHöLP²ÂjF~pŽ‘gÃ?˜ï)¿$f¢|Ê6ø©©GYì zTÔ¼°¡ ¨Ùe~%ÔòêWÆš ¦ž—ݶ‰›²¶‡qy^.+²@Ì jÐ9ô 2pjÆvBDßÓ h{EÞ…ç4ÛæšB¤úµMù“°Õ·,jµMѲ
-r^PËit(OÖßÕŘÞVÆ
-ß,
-hZÊÎ6z^žXº_Ù&H{“ô‚ N$
-ñÎrj2´À(þsG<]â5ÌÓ‹¶?•ßqŒÕ&Y?WßÙ«Žýïnç‹S³@àRÑ
-lã”’®Z¤U¯SàG&2Ê£&•ûuÌÊÈ
-sjuùf™¥æDÆú—H@ËÀ¯uu˜Z›÷g°9ÞtŠYJÎv뺇æ¾?mýÒË‹>ÿš¨Ã¿ÔÉt,Äá*—0p±€^@sixhÀÜû*hy9°§4X%MI»bt‚S‚yè–6&4”üWþi|ºwŠYjzÐO|¥À†U]X`†WœãVo â­#˜»»ì}‡”œº'ç™6?‘’BÊn꙾§õÌbß\SæâKØ¥¥nè9ÓËÒk^9½PwÝÓ䧎qÔ}‡q/4G„,Ћö¤ø¬­‘ÆôÍ¡zP'|â;0
-ˆŽ lŠm¤øŠ]\yË;IÔ¬â®ÐPóÝ“Ä4`®ìp$×$ b#<
-.n¼«½éWrkí2JÙ.øfÏL3˜£ç»¤„TÏ81Ù!kÎR‹¯‘Ó£l£M…ßVúúŽt\´e°:nåõ³+æÁ¬+¡tÊ‘‘Qz kAÕ-p·ª¥Ô§Ñ÷Õ"Æ·•NöÙ:Ÿ\âá|ZN­žYp`dÁ­bLÂ×!LœK&À
-ܳS º3HžjDܬÏ~hŸàŒ}!æj¨eˆ~¤*ŠÙûD
-2‹ÈOMeÐÁj¤«˜‘à¸)¢í*Ʀ¬D˜¤´ð¹ÆL¦â¸#Îó^ûX&}óˆ–ðM5Îïr¼oWR£W鮳M°;ã5 w´­¹Žññß›ù¶±Êô#;ýd¬–`æ¦^Mðr†Š¢ÇkaN#œ¨ o_¹w²(èù·ˆ»‡rF×é²ü@]sŠûFwVО,/Â(Æy¯vå…_Í ;­
-a“^Pµð–^ï¡Ä\Í–½:Ÿ¢Á,rBˆ¡;×O\šàÜCwùg¥©áëRË:No‰tf;ïö§zœ¨©1ûjV
-7Ë÷Úd+2ôr±ŠdUÑ!rn’;ÅÏ¡îwSÆ€þn‘€Na£Ÿ(R’§Ãªˆ÷`÷KmIæž °Ö™ì>]ë$e†þ®kKqÛWV¾RÖeߟo'_Í·Ö]ÎT•¤(“(Å]Î u˜¨KuVÕ¦‚vdTèñDIÚbÊçRÇÉ¿\øo˜¹ äÿ mWåÁ–…/Ùýl®"{KFŽ]íÊ|¸/#‡î Ò£,CEàã)FÊîX1ücYªs&âàå ûD ÖØŸãoì#ø›;) !öñ" ¿KQV5 2׌pý܃ ýiæñþZåP€~1ö|VÞcŸh[2}ûüšy ô™¶®®M¿ûu¹¶úõÍv )~oéµÿ)/rWJˆ8Q$}™)Lüw«†;ÝIH®!DÜÖ÷ÓRÿ6˜»4´tØ'*ÐÛƒ¯™úøÛùOoͶ".WªKðÁ·ôÝ„¸ËùÊ×yñLMzñeŽú}:U7 =uï Ž"ºÿoFÄ­õÁ˜á¤âã}v†*“·ËÀë)3-X¯éF”ûLÊås;ñÏÝvâl{ž¿¶%Ëîa¥ï ²öËbÏÆñ€6ÁÖJ8лOõ÷C%°sÔœŒyxµ;´Øç8ÇOúCßø
-|ÓFõ—Ç;,µD
-àqnæ÷•æFÛxrGVµ-a'Z¥ô¨cy®Ÿe ÛwSŒõþÜ…´*y4«º¡H'${û~q&µÚY:ÏG9¯¼Ëó^êÈ XzöZfûi¸ùvujSLðÝèÅnö’ÁÆnâÓ.Ô£ýA´·©?;|©=ëQD
-;Ÿ­gδäxNÖ¦ÝrüàñpË#nGZm¶…ALìf@],#e«Š1ÄA€šÐÏ“£o¨*“œ´@>¬‰IÑÛ£tæQƒñûïÕBéd²2ÛЛ6ÎOº?]—â2[— š«K}™)Ãðñá΢Šä€Ãé*âþXr®>ÃUÉÿ5䶶5Éiºì`UàâlòÊ­šrøÙ,lƒŒÝØ ­n\¨¥Ÿ2?zå}–Ïzo¦ÇÏÝ×ÕgZ&~U„ó¶©i‰WËí‚«¥¶·?Œ o.K3
-ß)‡ ÖfÞ—ów†™):A^€s½»0òÚzs” »©kB¹D|DSaò6jŒó‘Š[p0†MQ lZäŠå¹Ö…¼oÌõ±kèñ‹=Ôg˜¨ë my`sê?`ü¶û
-Ÿ¬tä¿Ð '˜&‘ Ç2æÇ:µì¿ÆFÊþ%ùLÙˆ:Ñ“‹ý&%'üc³ æ­ë„ùé{sžŠ‹£~Y˜•æy|Š¨ öèPLÊ:–¿§ÛdMØëõº²sme걸<òDFL¼\g ~˜;úϵõÄ# !ñ³º¦ø—©…}k¨AŸ,¡cNd¨Ø½h°é#ÂÿBS‡½Ñµ2œò°‘ùÖ.c@ÎU¥WÚ6êårc ÀÖƒYhg¼,ÐÌ«xi›£¥*Úð{"&ä@X´=† Ûà üçªâΖ
-lrÒÖH±¯u úªïr.5£÷§ª¢Õ]Ùª»Òþ<äáAgâèÍJKõ”“wç=ÚåU§Šêaªwðû’º´{&Ø}–{o¡&措)ãþ!·2Ù)k*^jÉñ´K9 iž¤%îxçÝ0&h}ýÌʧ§Ú€¡Ósiqšše'1RÏÁ†™¹øðcå/Ó4+ku¶5NŠ¿Vwµ/RRç«ÏDM˜SA þ`’2s‘þÆ Äó­1t žCŠ>‘6·x”¬à]¸ø×ÿ2"ý·‡K‚V{P¡¦ÉÊD“€š>Uº"ÓÓ)£A?ugºëûÓÜvGr¼ ÝÉÖ©œS!.óËj3]Ë­ˆîǧ¸)ÚŠ_ýÔw»”älã0Ü{k ÏÓ<ŽòÛ@‡nŒ—GÈúJýÐ/îÀÏ|[­-¹Ñ0à®%lÂÞÇÜ`Im¬Û&à7eÛ»61)±§ü÷쎲öm•‰q‰‘៥ˆðsIQ¸¦=ùùª¨¿oôäù¸T¬ò.1Ü8‹²K(9Î%*üLJÍu*(P 'Éú‰ÒЉjðÝá
-ðCÝ >|¦1ûÉö$&Ú:GLߟ)O¿RÑŠnWÙÄ«•&‚MDJZãäzZø¤X3°ÇÅ›LK]l‡=²À÷·ÆÁN9óx‘YÂømŒ¢ì‹T˜W¸ÍzmöÁïŽ=±-^]hÞ×4â #eg
-zΗöÖ˵VÆé"9ÕÎ/ Ýþð—ßöàÛ
-ôp¶"Öʧ&8¤µÙ—Z6îDR“á’3²OD@ÇÍá"/ÔÌk³È±ÈBìÏÕ¦\ªÚª¬zÚæ‡2_ãÚß<
-XíKóXëHõ<©JºT¶¶‡°¡–1|äU3Á%§ANÈ v!%Y7ÿl_€4ñP6a5ر܌Ñô?Rw<6pJCö§pQÇÓ”d×B=âLHÍ5 …è9…¾çŠšü3y]žU@Ž?˜¯LÐ`^júÑ/vF Q7š6ò¨±`kŒ:šëÄ™-pË,5Î2‹\ïÏl™, µût*¥§_iʎ汯ŽøĤsygq¼.w‹ƒXiÏ÷Õ'ÝW4¥¹_-wЪΚ­éÚ yk¡ÇéBMÖÀ¥—Úº¢“¥ŠDug¡·²é£j/ò¶JhYÇ
-j†ulsmÉízWÇWMs¥a1EKr—4A<w§0/ÊzÔ­®«ãV÷¾Õ<Cˆ´‰˜ˆKuO»KÑŠ7ŽWÅ®ô"d=ØÀ1ZÎ]U`áZ¤u¾$xŸ²ÌGç³M—Gœ/V¤ìL•‚ÄÍ9žÓÀÿ¸¶üZM‡ïqaÏÖßÇy?@ž[&K£÷&QáÎÅJ°K]WÄc¦»ËÚ __¬°ð_´ŒB—œ þÄùð1ÿ‘°!UÝ~š>L„¼\šúüž€ ¼QW½Ý†ûmöþ?ÛÞº®ÜGÛc%AgËŒÂéÖ|ÿœp¿± awR&îRË"Ù¥ Ý ˜ßÆ
-[Å%
-陚žÒ@!3ÇýDZ_~´È€ì‹ªSèðùú”'3LðóY%ôf£Žq£oì0
-i|6ø¡UJ„ÿ:líüia×٤ؿT]`ÏõÁ·Ç¢Òø«µªl‹‡þ»ôÍÔÅœ¦÷»Ž¿Pã“·yÿ!»€#ëó\FØ…uY.% y¶ÂÆXfÈ1ŽEJ†cs%¯Juˆ‰‰[c0_ãÇ|ãxi€KÙPl“ÔÂv'ˆáÖ™êx €¿Ò!
-ZÖ)Ð5†á¢@Y#øži“p»ÖÕv*§¦ÛªãBXß
-9Ñ¡Ne]Ñ™¼q$bBõ>‡|Z†SÆ.1Ob_î ?ûÅeú–ôž†ñ·3çš™NM§™œvm,Í=“S©i(‚¦A. €²/²/’©õTf¹äŠhÊ*ÈŠ‚¡ "Šl.Ó™y1ÿÇüú ¾×s}Ÿû¹?ÛkÈ¥%Qñ_F …ÒwÂRBJ΋mYÄ=Ü~/i—Уf.*¬g>ªÚËb:p˲À­8¸ E¯Œ°z§éåÇf>¦gÔœÙ9èc3¿uožøÈ7…Lß›ÅdhàÝyl„9¿9A/ ,²¡þYB‘Xáwö¶¾oL•3Ê~8Òs÷Õ¬Z0ÞŠZ±1Ž{äxƒÍ^Í‹èy˜C
-tiãæ®Ø=I}lúH.ÚV1Q§.!Û7Ó\ä†]ŽY;p‘•ÎΘëUßMH÷¨Aåwwi/é(U@ïA]Ä{^î¾ó}mʾ›çnÍ5õ‚ϯ¼©úÉ7‰É‰›ÄÄ°YLô+ÙU!­°yk’˜#<ØEeYÀô]ÓK«
-zYX骸uIrQx¡£.n´ŒJçtºã×ú+{ó5ž)Øô~ic¨%ÈW®û¦Àñ &Û7Š/ˆ¨8ˆ]¥Äû©53i÷ÕÄÇ‹mù~96÷`Íø2½:¹ÌC†5B¤îdšm )÷HË©+)eI À,:&l{–Ú‘µ>ˆ.±ê‚
-Z¹¸ç1ôÇ£evû3³F×Oq¼E¤øç …>y[ÎÚꎵž–0ñZ¶çà-9­4n—r¢Fv½_Ì;‰Ï+Õ­ø,i
-(Dȵ "h}Œ
-éúºÂúþÞ¤¥GòÍÓÙ™0Ójý2tîæ(2ݯ`<w)DmŸ¤2aÝ•°FܘcBä”òð"ìŸ#–îÌì))%G–—,×½Æþ®õþú0±Ä6ˆ-Ýk.=6ªß ·$WhHËûW]1 ¸á•x_#&:êOÖ8¸ Žðtg¶)/ªÆÃNìbºo‘ñ|˜ZþcPÃnþÍÓ;· )1§~KÖV´(ùùŸ
-ñýÿ,üÞÿ¼"á×U>åPE*9¶KøGV5aS—ù;jdós{‘k ùoß ´5×Qi"fû䢦½ÅNBdIˆ‰êhÐ9þûæ.°;Ùq·%¤—´[Þa3mo®E—¨PÀÓ
-çÛ@ßVØm3¥Þ¯Âvæña#å²¥…¸l|Y“Õ‘`Ô…–¨Ï+\JØ!¢ sa7¦$ ùr!ê˶ò‘œcîäªøÏ.zêÒÏVyä?<Ò®¯.=` @vuTÈýÒ¾¯îþ"é© èC#Àú@ŸF¬Üà$# ±6ŒLßœÆþ¶ùzôØÕó.dÐ<ó„Ÿ=s$OÖ’é|_yag¢ú_Û 7ýr.ì@õ’àåÃw¸Õ‡j`·åä‡!%©$±L®83Sk¿gjOAy2v1ÖF°·Ý#õW¾L ®¹G·öfI%qmâÔÄA;¤°!¤ílÜå‘­¿æ咽ª Þiä=ÿ¾Ð3ŽË\ç©OÆ. ozá—Â*qSD%nŽ(ÄHÿ­d¤t®™uNÍ}raw}7f\£Ø ÷`ãÕØ÷wV…´Ó“+=SèÌ1àö/ˆà7Ý#Ä<µ¤ö⡆
-IZm £ %±Ü?Xlì›iÉX¬½hêzòCHK«nB?€K_¥€Ô,XDǬIù-
-R©o™ìQ~@ɬ;[ëé jv\$>Ü• ý3íùI·þÄ(¥…u|¤eycc†ø(fœŠZ†f–^ÑéÐfú³¸–
-‰k™ð# v–xhÛ䞦@Nl]‚À|[¡_Öœ¹3Ùúe¤ñvTpÛª˜·IYÚlšùW(¨îRŠ?µ01©Ò3‰HÛ–5eD´dØ™MÄ;˜~}’TP3aß6¤’“1a$A¨"Çhªé-$eåCÃo_¤½¥ëkLu‘A ‹”dæ³âf.)¬&ƒýrTADÙ^VÑ+–nñçš×ðˆ^ˆ™Dø##§éØÁ#Ÿ:ż]¼>Ï‹Y{^ÅýƒA økfõ¡ŠU øîó¤‰üÃÉÆÅ–Ù ÎQl–s 3ó
-aÅÕ-9眈Tïtó½ –I8´¤³»ÛìÊê8³ø{Þc6)¤§V­@.ÿÏq™%½æqü§¹÷œ™9·;Õ-»5u§©[ZÖµRº¥¨¹á‚¹‚ ( ¬"«ˆ
-Zèuiq+\ØET6ÁRpAdß0$[î9sæ™oóó÷ùáû|Îóy¿_¯ ·œTâ×q1a½y c7H¹ðó†qrŽ]ÞßâZd<ZBƒw¦`·½KXpØ@®JîöY{ûL/Yº¡¦«À\ûŽÞuwŸìrø
-Ø/§–;8¨à£Ê8Gq3³)fb4y¤ÙžE4Јô˜
-ž‘Рsb+¤’˜–‡õ+å-£1±Õƒ(U! .Ï»¿á˜©ºè™o½S pñµa¾_Õ‹Þ™¥HhU>M'Ä£À=´Ï oíÏ o¡çõe§C
-sbéã5ø¢ð–‚JJ±AX›f(<åÃoz¤˜ûÖIøÍ„‘R¼Éî<Ôu·Åt½íGf.iÿ-â–i°üŒIP}Î8Prfwr9¹†ƒ|0ô‘¶§ˆ ÝÐÓ3Àÿ݉­v–$èì›ë‘¶üæ‘`ï…–»Ê‚+Üfýîá&ÿ¯!5¥â °?±U| p‡ÂŠPµÿ¦þºýMÕ%Ÿ•ýi›Ï9øÂ¥@eÔè|ÿºÀ±Ð˜R·Ÿlòø_üq¿–ôÔøüŠWÚUu¨g¶¾ŠŠ®Ó`n%¾0¼Ü MêéÍ'ï8ŒÀJu‘]yMÐŽk¹$Ç|;È2Q{qo¦é¦GÑr7ªÃä}ÞáÐ^z²
-ENeWYjwhÜ«bÀ­¯ZÒõÈYQýåïä]OÙ¦QÙÉíÁ ‡¶¿gí9òÊö47
-iiðã­~—’
-Ž­<zÜDEFWp¥î9øíÝ—5ÿÚ¯þg@E«þ`pË ˜VX{Þ+%æÇ´´†˜Wôç6µõÛ\
-[úAßKð- ³ôü²³rzÞß×¥§ƒŸ½rbQXÛƒZCeêY)3 ^nmŽCÒæi?¾lÏùÅåùÖdšÅáÏî^»³Ž3ëŽë ®Øqlˆ"UiA”L •˜ÞH‚0J ”@I õ%%BBé (º3³ÿǾóéùò^×s½ç9çwîû„š]xbµ¯áRØ""ØÉ÷ÜŠãÀ›Æ«1£ˆžœ1ö[è1#½nc“· º¥×Ä…€—]Kƒ„‚َʳ g•„t„ªä"—ö!6 E—FÏ+=JDVd†˜•‹3÷<½dé®úÙ;†¾ëS¢ó#3ä§û "Ö¾½²Äü
-v6¤ãÀ}“dÈ›Çgýã·b`vÆ ¼Æ]@@Ø·K_ì­Èº]!l]%‚»Ô¢[2Ã5Œ¾ÒÑa1€ƒ
-h)öl|ò‘Sú2¹ÀÃÅ6ìß–‰p«1%añaØÈ€F
-óÔ§&ÃÝÍ°•˜ëÎaäåÔ|sãïž®±Ã55¹ÈBm…_VÙô¤…²6ãŸ&C¬ïàçÖM÷â61aç’¢sŒºÄ¨°äª¨ý“³Mš\âÑb–f¤K‰Ë‰Ï³QGóâ×_ $;;Ãæ®_Ó\îWao¬üZ›&§ß<&§^<6+ºó×,35ßÊ jØ·”ô‚m­xG…½™@eÆa×ÖÞÿtßÿ{jAH è%4Ç·x}ˆQàhÌL¨‘÷þX¤Á~sr©Î)ÔmCÏ“sKý×C: É«#@~-÷*q·ô²Òïí½Ï2¢º¨®÷U`ª ãÁßs²ƒ:<lS¶Tì2Kì?–¶Ê
-Ü͸–Q±°áQ#²3MÌÛѵ5-1óƒÄ®ðtßöVÜÄÝHDÛµJ¹~]sÕöêZDO*ϵvt Ȇüé…Á²ó!-üFp†õ4¼|“œïë[‰Íóû‡.9µÌ#géå®ñç÷·Õ´‡‚’ã¡åîÌp¡1‹
- Wo B3’v!3±ÚñveŒôh~ .}ožŽä’õvJÞîY™ ÿ3ª
-Èã¬ÊOk½[ZjÕÊPC¦½¿ö‚ó<+1Ç„‡­"²×ØFpNð«V-µŒ¹1Áxfìf/ô!oØßC/ùU˜¼]#±ò7WkG Ìg^Œ÷ê…É%Yg à!#fÆS—ížÀÜŒÍ1Ÿ}v¶Š¿y:>¸§›«-=ØËž)ê³CúâwøÍÑrsSlºáŽ{ èG«´ôÌÚPÓÃ
-œŠæÂu¯lc¤­Æ¯ioŠšÛ©!³
- ¢¨ÈfXb!+!+Ùnr³ÜBDGtœ©t\Ø„„²ï@a !d¿ÙYu¦=ý7ú㸿{Îó|—ϳò¡2:CûöÔ 3ý
-(aáwn¼¸žçÔ¯Oö^ò?úmJG¯Më3sèR°Š`Ç)=÷aÆÀk;^‘ bK´š˜ð„y u°[RV¦ä ž#câ& >ëU£µ
-µ*èy§˜Ñ®Æ–HÕû:rmÆ4Øz¸*aÄ—ym9‡
-nˆ™¶ˆHq³·¥t¦œcOãV œ¶Ê)i‹°'º@»3ÐònQ?è QÖÁëI˜wóvà2•µ²š#ó}U+¯›þ¼öµIÙÇë£/³D:ÿ´ó¶Á}gEXY"ȹ@7ۤ䛔µÂÔ˜{üõšþ¹hú)©’t¿â‹•¼^Àn"ðÞ¡ŸOŠ/bk²NnWêÜ«V:fyö44Ū /ðå}r(ïƒhå€ *`QÖ+¤Æ̼v0“þ„Ký4åVÂióAÒ@«MÈ·
-NjstgvE=–tkÔ!­¤kOÇÇü¼«~s”@»3„ŠýIÂ×k¯;®…§×}ñyÿ=~s¼)ƒ#FF[pšÐ˜õÀrÿD_ÃÎ °KÿÃò*§ÌT˜´È)‘E Þ»¿þžv-²$îÚ7Éû–•´ŒKÉKÚfÌ"%îêXõÛ3´Êu ãíÆíð<¿i{
-nNFŠža!èaYÜÂ}r¹.2ϽÕJ;£zYOD+|¸¯å4D稕97·#íà=>ÐÖî| V˜‘û¿^VÔÿjû-öRh42/j>×j‡ûÏ=Sr °e'»=e¤ÕoO“¾^ÿ7­b÷#ûöæ ízx–\U²KHY»¹dã´§É ;ïZ®Dgp_Å´”ê‚"'L즸وÚE¸‚GØ{®÷“ ,(úØO":â ÀZ­…À³w©ÍxX'h)ù¤œ”m ¡èe¶|Ú œDTÔÆy[¤Þ*»9˜¢G
-AÚÂïÏõÖ®ˆX'Šárp|!aUðBïû.mMSþYÚ~·òº3^gÆÁíHX†:rÀ'‡›š‰bè…6l‚ÉqãNÉ'¢an9 æ
-Õ¾‘Ùî|‰ÿ2i”²N9tº%ùe’åÜ,\ÒzÙÏíþ´-C¬ßîA_8^w?ø¼§úñqÎX†ÚAž ¤íjIÊŠ€¼ðiLŒ[Ÿ‚ü
-~Ü"%˜à'1“¿§·oNÝ k¹Œ¢Îл&ô¡¯"2G¬FmrÚ°Ò6))¹,ëOYTÜ´m|/ZwgÁ]wÁ”˜I‚Û™£ß ¾é»è{‰¿¸ú=ñrd–sÎ[XÀQ]y72Tô#PÎ+g'mÜGYó~Ê4
-íû.Oÿ~ÎÅ{y¾oÎ÷¾ïó<?¹¬â¢fjÃÞ2­>nW}?”½c*À²”™ÕÕ±Ú³.¡êQ².)Íñšvge})ieR~Ýñ³ÂÍŒ™†(;E„ŠK<T¶ zÁîýê=öŽ–Ö”|À=¶f†.,±$Œ2bÆ4&ÌZ'FR¶‰‘V9ð)ûÞt~¾?‡>—6Ñ ™2ñÛ=rþ‡Í'/O6GŸ”Öàá¬Uˆ3Е1ñbº1f¤JÅØ”žÕ”6ò¾zŽŒixÈŠMÆ8ö©À[*¡¤Â',#ì´eR7È¢:*ªc4nÿB¾RÓë’F~;øîûbMðÝൔ‘Ýœµ@=¡%VÃîìðÀ[Â×UõŽª2ÎaXÇm -³&-01ey
-’&3ðP1#§9aâµnÍÓnÄ üÖÒšœS]‡(©¶3¡ÌW±•ë»ó¤« «%xjG uz¦ßÁ½“€°;‹ÿ:8‡«Ië¹-³
-¸äSÀÀSÿ ÊTU^Â}srÖñ®r¬°. ¤VyÝŸú3‹{ÃF)¡â…™…U6}ó ú®ï§®T7åpySÂþTy/§'¬#}6Ò[r^0ÉtÕ#‡ƒ‹¬¦”UL=Ý›œ­$’¼SÐÖ2öÕ¬ú¨‹*¬ ©#RÕé¾H3 ¢Šv0¹®°Jmø­Àœ9Ŕꚜ—ÿ4+FfKXMoÈ­
-0 3¥1ôw%¿Êl-¸Ä¤¤IJˆk…m¡roªóÌÞ\ïŲ›ÕqäccOü,|yŽ9Ý‚¹‡>˜“’5K)#¯#¢a5%ŒpoÂ
-Ð’¼UNI˜M ùvÚábzàVsqUÜtu0evl¼Â×FÕÊ..æpC0sBdóˆQ“l iaÅÌ#´È„Ú˨3!þšÇÔd tdl™…Œ›%}ûFiK­è ª%øœ"ÆVh÷ýS}·g®‚³Óû@Ïk9ÐC] ÓSÐ÷7K ˳±¬ã1?¼<T·öC癄–ÓVt*ØU¿B6‹°{zQwÒ©’gÝ%I+Ô~O¹³û{pFMÖ ãÁÌAYÀ°=kQ²A{ÁÂïJ舃YRÝþ,ùZpžz+k‚ñÅU%3²Èj ¼Æ]ÜÁ_ÎYhMy+µ1c&7Åt„úð
-£1¹:&É:LJ5Ôéö¿§t,dJ'슫éõ½0çtgâç´[Æ;ÐòZ²îQEÆ=ù,ë™|‘]{,‰èMž——üÓ˜û›„YQy~¤ÕDm ½r8¡§!‹vjGROiô¿ÂŸÓJ›ÿ´À½û™ï%îæÁ{nÓÿ).ó§&²ŽÿjÕÔþ°µnéZ匣;®3Uºã¬¢È £ á6
-JDØŒY0“´.ãRÐrîn‘6g\2jÒ&~D¸$Ù%93a—4']RJlQÞHÖr¨ °¡P›‚ždÞv½h9.ªóˆ‚™œqê$
-°'ïaÒM/N8èEÇL
-¶g-)‡Bð{Pûø_¤ò Òýps–_zÏ/ Ž
-î%Ü_ïºä`›=À¬âö½€ÒðÇ*¬Œ›Ä;Óü’¨‘yw}ªóîµïÇ„{?2I¾üi¬ãNhœU¿f’ÒqD«Ï­']œª„ƒ[¹<pàÓ*ýeÎ s"sì’OZ/®6ŸŽµßH[Õ9ë0¤Q†5=Y¿œ[3R¯Åç»o%,ÌBÂ.ªÏºå´4Ð3á’µ¦çä}*(ïë·„·1Ë0»´µjq{¯|×Ô'Ämª®´fb ³±EICÒ!iI»åY¤‡Ÿ
-fStäã{amÿaX!Ù2Ò*}Ï›.æœJE†¡ ¢J¹a!jÕC)·AExtÚ½ ZûǺî)ð=²4a—¶®ªÕ„OÆŠ» &°U«ã‹‚º¼_Ú}”ñ÷üP{ÊÁ­û2Öö}ÔÈ(:ZÕÅmPSøCËw«£¤‹…àù€?uÙ¥Áᤳoph)èQî¯÷¿zå­¼i»<!ª9… Ñ®¤W³nˆ’r‰yÄ’°kcºûfÌ&nÄ]Rjt†vge¤ök÷pñIp¦)»Ä¾Ÿv3Ë Ð§{ˆ’}àÓõìù ZÌ!}ä¥üÝùôç?Ûû
-¿
-½ª:sPpÂÍáªF]–u¥RjÚ*!§­‚l¡ízd‚|ecŒúÏÝNIÒ)n<
-©äGaµ*¿ sRnaCÔL¹ºkæWÅÁ6Ï/kä¹e,¿ ô Øä*ï7ó~NÙx5¸jŒ-J?O2Šƒ£”Ÿ¶?2Js^QÛæ,åÇлƋ‘æÝíy¸5fémÍJH«¿Òîà³¼ªÄ,·bíMóe‹êÇ“koIße%'0ô§–†P§Ú4³JצZ®£&Ful®«`wŽv;:ßU¶1C/‹Z5\Ô¡“¥½:8¿¢–í̳ÊVGÛ®mŒÓK¢`;'<àQikžyw×,ªÍy¤9ÔŒšé÷ü¯îŸö¿¬þf×Øq;å€þOq™0µuaødÚiÇ3É43qÜÔ­]Ûµ`
-˜;çB81+Ü»½HºµñSÛÕ¤™Ösó… ¼Ö³UQGÌÏM£¼sÛÓ'ñu„Ô1qÞç¿^Q–}qºH,ͺ•œ$
-Ób¶AðÇæ€VÞyüóPŸÿ?‚ò°Žr'å¤?ÀPþôK-ÂÀíÉùÆÇ€7L&Üòƒ’¶¿(j>þÈ­
-êè¥ÁjuÈÄi YyMùÊo=þ!åQË’nˆ’öª¥q›Š1B„ðª¨=¨ãÖF,ìÆŒW!(ìLþ”õÿK{l”vE,’. …Yi¦—Xµž—øïí³m74œ‡QËÌ“qñ¼æ4l½§T\LÍŸ;NÜ*'Pà%(£°s©„iïô¿³Þ‰é˜…ß\¥––)%ÁU:îÜJÇå7…}Å]ˆwf¦–Ÿ¬PKËCÿÔ\
-°UÖ)êɹ]1³°½°±‹»ê¡üÞã—aÂ=Ò+{Ïôbf>¶L©rÏÔ}e­þÃöÛ®k§k<À¹òþƒO‚Fû þOþ·äªà
-½½è†r !f ¢¥ÞMÙå¤:"͹'F¢v¨cUâzE¿í™ë½ú‰ûu·`VaSÁÃ0©à~ò4cLY;‚KÄ»¯ WOè%çzAfáÖ\2RΫä¥JfÆ­f
-üö=íÖÉâÀµÃ÷×À\6
-BÂ4>\4l¼ þÙ4ÖúG¸ä‹àGRŸ¡Å­‰é8:õدQt
-B|}XŠ><B<Y"Ý>Zê»u²B«Æ<Of“ž©Â6+‰ªEA½š~ª…aV+aì>]¦Ü9[¥—ELÜú4ؽ¤UÖ{näÖDÖ¸ GŸèÕ˜EŒOÙ8ÿŒêÉåAAƒ¼+ CzŽ4ÊÎýwœï7ž‘¿Ó©~§SÔ^Úëù{<Ê{ jÔ,l9YáVƒþ $¬œæ°ž\æ_¸~ü3£,ivf邏“«š½ÿ ÿ¾ÿ£ü`R•2ò›Ò6QGpË‘†r÷TÇ®J˜åäÀ'¸Ëþ”r%´Â®^ÇÍoAœÂÄ?·0#F~;†ÊÈq§Š“pͼ<[ùæ9{è%%R)†
-ð9Ÿ”•Û”ò“ÎAʸ©‡ZzeÊ;¤Û`Ò‘†Q\fVÆ×m¯˜üë¹ØUG°äØ"jK¸Ôƒ`'ÁÞRvß‘o»_àoùˆÕI à&Û°jï#»뻶»Än.îÿhŒÛ‡eØ÷æ ×ÃË„À™ZÒ¥àóþã—¯Jq°D¹Xå6ŸÛ’´f‡Ö¨•!õ^ðWÀH-=Õ3ª ÛãÀ†ã¨œ‚9ana[5šÛPˆÒ6^gÒÎë8wÂÌKÉ
-;fØ$í:Ór*w_÷\õüøðo¾ùþ¦à§;º>ر ÔÍyî=ó éJÔ¡’ücSYTÍËØe} ¿¡à„>5”w*èY—œ²ˆÛÂæî™~œòÌý^ÚKÁå6ùÅM)-ïE„×äTÂ(ëI˜Äm˜ îKÕŒøªðáÞ›GYŸ¸ó{ÿó–oãfAkÖ‹
-¾ñ‰4*§jIw|oš¾Œèzo¦×yDÎ{T¼¸M15©!°'1POLϨjÁLêø5!½¸9jzÓ®Q8ëÓ(ÂŒ™$íþ·Ô›a½ 1ãD¸ç}F¼ì˜fÝ؃tD—!À«ÂŽãO7ƒZbyhmˆXEú°õ ³OŽj¡vÀ
-DÄ,*fF˜{¯•KʺoVG®ì¼V‚7œÙ”´¯Æó¬ëJÂÄoκûòRjѱÎtÔ×lÇ•7ìrÌ5‚¤|CpÊ+#'¬¼fð§÷kÜú¢¢^€œÌºO p¯ÿƒà>p<^ÌÈ®IÚh5aC…u÷Õ±†Tµˆºcë’~À^ê°UÒ2óꨟr@ýÀK‰I䔃Š;3P+Ó… èŸ~ rx,lµ6T²‹m¬üNßlÏõƒ¹öow^µ~1²ÿ»76{±?ñâܪ ´¢ÐÇ®*HÙe¤°žÑ|¬é)hY¸ˆEÔ™õN¶&g“€{‚àß"fþ£¬f…“Fu¤’ *êÅ<
-f«d§6TÒ èiÜQbAg~G
-ÆùÇ(e‹ ×É[K6,|᪎^‹šX¤53ò«Úª}JVmDÇ!&HÅó¯o}ƒL¶”­…ü°ªƒ¾0€Ër Õ³¿nHw /ÌÂÅn…d†Ë-(kYF)ú8L*HYäß­\NÜĦyŸ¸ßÑÊã"fD#æÙ^‘²”¢š½RVé.%¿h;Ù¨Q(@¦¹”9”;û¼!#¨f6@×[ÞδÔwHêÒ]o°9½¨1þ¢Xæ³Ü
-jÉ–DTLŒo´þ”³ÿê^óã¼] w+i«:.Ø•îG-¿mYA)ñLP+—³
-{bVÑCDÏ"ƒÝ<·$#ç­jxäU›`zјÔ³¡O¾xÿ¤5üaáñâfi«w:GðYóäËs¿a_PKCSÌæ„rcÓBÇoÚé-!.ßÜW¹îyS†OÍiõªÛ©öWøÌwÂÂÝ’¶3ÛMOªN"j¸yÝÆmعDÇh\’5ŸCJ|® ºYá èð6uç¹=þÑæ¼ [;'îà —„«æW·#3NÜõ@µá?¨¡êInÆv%ÿÊ.§”xÞ3N»Ô0±`¾g?¼¥W¢³\zÜÌ"Œ[ÖV_´½¸|ð)áà6—ôæ· º´¦fãÖ4ÌÆ5=Œ‰jÚj¢:¨8¬k¾Œ¨ðçCÓ´jÇ”ãdWy”÷…è,Ÿ‘xCa ©re
-sfúQåîår>ª2Ì/‰Fx¹{BS[w…~- g^ƒÛ‡Èa=T¼"'ä¸GéÀ»„« W'HùÖ—y;MO/o_Ôªáú¨‰ÇôjÙx§üNÑûA({ABÉ]7ÀMÚPÔ
-}cœzœVòq¸ñ”íEå>Ç˺cQ#“° ĨE(¹m«3¢N¯JÌöh;™ak×CÔ*º
-H‰ì”éSçÀ¿w¬™~kfÒvÔNIâ sKžÄ`À`n°¸%„®ÕêZ­n„Àv×MêºIfœ8áÔ}¬Vˆ+v‹1` ¡c/ Ûéÿ‘.¤É‡N›ÉÇ­gš]í>ïîó{Þç}¿ûî'ÿôãÿX¦ÁŠ0 V„i°"Lƒa¬Ó`E˜+Â4X¦ÁŠ0 V„i°"Lƒa¬Ó`E˜+Â4X¦ÁŠ0 V„i°"Lƒa¬Ó`E˜+Â4X¦ÁŠ0 V„i°"Lƒa¬Ó`E˜+Â4X¦ÁŠ0 V„i¼9"o-Ü7„SEEõÚÑ: ,ሮqŠj„•Ãôÿ‰–AœNÑð…®SIa•N+lÜjúVIqY÷B‡Lrßû>’Kq[!•B¥¥ovJ% ì4÷z‘>8%ÜRnÉÉOdãœçñ*ùÅåü²ª2~EE ¿ŠËãó+Š«Jø<A_À+/åjþk¯¼¸²²¤¼²¼¤²¤¬œ ñé{ŸÏ«¨ªª ƒ*NF ¥<A ÷?‚þãsàÏÉ ä(978ZN;GÀ}ï4Wtƒ¶ª‘q ?Ê•ËÔ¯Aʪ¿¿¬•Ñùw1éQtÌUÎ…:™Y%•]¹ÞÛĵpú¹'å<~Åù“+:Aå*ü
-î ·¬¤”[ZRu\@åÏpüð‡A?œùÜ
-:RþI¾Ü“7pŠŠNR<žÿj.¿²¬ŒÇ ‘ ûñ°Ìúª”îI.º^]o6¬ëÍÇÁ<$¦Ýò«Ù ¦=‹@ƒx̦?ôúv5ɵð`YׂÌ#dئÆCmÖg‘dp:hìM‡ìêÝ%sïó9mëÓ/åõ»3òºô²².»¢¬Çý*aÆ#¹HD¬ªLè£{éðÝû©ð„=¹bLÌk…/¾­NÍ2+£ä–´M¸Û:L…Ç O;Óú¶\È8˜tK/ï-Š«vfú.dÜò&2vgÝò+X@ÓIDáQµë± ®;ë›Ó^°ñù´”‡{ô¢×ññq
-1Ér~ã ²i©¸Ý˜C`ÉþP·=3Tš˜“_>\еA»&뵈ÓËåþŒu÷LZR ´Ï”´lwJôγ‡­¿9˜¬$¼†nÒo“Saðlv¸òég=E;_ œßùj |ûQ绩I5íÐNì`Ú£kËx¡xÈ"ÏGf"æšHùÇ I·Ø_2$ dtb‚Îg‹hEÔ¤¢%1Is~]gÆ«nÎø žîz6`è&"š®¿ÍvÙ™•QuûbQ½ŠÛÍ…˜Æé9yþ¢vohÄÂc0uš’>uS­¬OÓ5¢â&0¿i3ç¢åžGݶùUß<h‘eB°üÀ¶å7l¶£o]÷¨53HÆa9ƒÔªQš *¯å|Ê"¬jÂC@ëëuú{q«ŽŒÁRÕåPÃÐaP}=Ò´“qã(†h»)Ô V1Ñób”P1³’ˆšÁ„OÕ¸ï‘7äÂÐ0¹
-¼Z³þ±åº÷šþîцÓE®»R!+ðÃ’d8î? uŽ¥è^ÃWo}’_»ó0›¸IFF5«
-ëF9Ž‚]ªë#b¤°n3’ô˜ŒWׇ-*bõÖŸˆ¸*lØ­G[ÎI"Isˆ²G•Ùˆ¢éЫ¬ß_R¶xþØ^ «;ôßtˆaèÀ-«þXv)16Qº–ëÎ1|Í8J šÎœ_ÑHÁîWkô\­Û ”_×±3/¿´³¨ªË fÙöœüýÔ²¡Ð=3`X’ö*ê=òº¤Ï4ðd¾Ž!“829yà£×ßòpUÖ'¾H†dõDp´.Ô´ø´)?<”‹ºl¿E²ÿµâÒöÃÓû3âÊÃeI5á›ó~ËH6õÏŽ_9ûóÀYz-J±°yä`e¸úÙcáÛûsíïà!¥B`1±xÔâˆCKÐ9‘ˆCG 62ˆ°
- âóË-‡“@Ç`º‡ôi¿±/µbì"B¦aœî¿äâè¥í©ö¢Õ¿¶ýÞ=ÞöVrÚä<.]r¸²75pöé§-o?ÿ²ç î–×b^•ðÐ^Ÿÿ°ö—Û¿ÅW`Iu@É%±`ëó«¿Ú~Ôò;Â/¯%üŠ:’ÞkHÔ¡Ç£E1IñˆC—GÇm¯6]wòq‹‹Zºt…É»… ×-"J¯ç ¾;ãÑw`n}g>õå£:Q!¦åmgÎcQa‡«;0ŸRX@é^@̲üª¤P›†Š™¨øäm qR~‹8pÄ “ë+±aÑa«V E÷ùñZÀâú¡Ùþâ'3Cå…M×ÇÔ“‰©Í1gaËõÑÑ·7ä×V*
- Q؆…eµ…¸¼¹°®ìL#CïÅ— ëvŽZ”½çdCÚ."vÖÔ]…¸¦'T4ì/Š¹€Iv„ÞýüåÚÝGĪI‘
-Í/¼²~Y ¶È_mÝü ½vmÔ† 8Ú¼yŸZ»;…Ç?|pˆZ€,´dÂ@s1Š ›“ŸPk&®¡<wM’1׳ëÖ¡ÑþÝÖa€ŒY
-ˆ"9L†
-ML—‚ãc¸Ï,üê>Â'é*G¡Bè)
-¨G=Dø¬ºœ[?’~§ïÁÝF>áV±û/FŸÝø$0}óÓÐó|aÁ,ȬhÙó’ëGs£ ™9Q=¾.j9|Ëú*úâιäO=_zžv}Ñ÷éÑËŠý‡Kܺ÷¯Ù—3ËC7(Ÿ¨òŽ\#ý¢vÜô¥¡ß@K#•ØØX%j6V11ð 1i*gZ‰[ÆP¿ªŸðª*#òkP/> Kº«Qþ:2Ò’Yf]DWÊg·eÂ;ÙÕÁÚrD';I˜Œw,“tT¯ÀüZ>æ7«PàÔ¯b>“ƒ7…ìß2Û¨äØCjkÌNÅŒj"¦•|X¶C¯€G¦éÔØ<*;ãOÊ)ë ³?ïÉI¿¬;ï¬Å}ƒu¨oèZÚÕóMÚÅ©]
-ó°"¨à~%‡ŠÊzÉ •
- !£þ±÷–y¡à³Ë¡©©ˆ}ºèÓòrn„]Ø”±°
-v”ãÈH)†° ¿õÈ%j=vªú?¬AV„m“ÿMôw•b, g¡^5§’õTCüÛägΣãÂ^Tlò91¡ó²nõKÙh@ÜóŠï<güåýKA3y²v´ hûÏìÈ·éeÁ5: è¡ý’n:¤è#ý›
-™u¥Ð¸•XT˜Ï()ºT=„KË)ý_ª=Çè­™Îsée%‹ðg¹Uý9¸=çà6‘é÷• Å@‡Mš‚OÙw
-jxyçhk%¤•VZ¤’Ð(*[Es.qLUðÈ€o4ƒ”_/+õRÒ/gá^n#Tô—¡o²n93ç×q 6(J!õëø8ô_1„ô£AõpuÇú„N pQeÇþ” 6ùM°ãn<(î*'~Ö+íÚ^^Ý]”4Ñщžl™LÕ-’ŽšŒä@) îÀ=ìo{/,ñë©°V\Ù²=%cãJ1Û zM%&žç`¶ÑÙþ/2küÊ+é¬D J:e}”Y™˹¹ÝRFÞ%lÊ­ÖR>It9 ÷!½ÇQóÁªŠ•qNZ²›&1æRt£NÞô*çÒÞ¯öxUÙ™÷èùïW„ͱîý„&ü I¿NßPtÜЛ–‚[ |²ûG«ÜúŸ†kP‡vè$l³•êá‚g´-ëÞ̹%wEõ‡‹£×o/i¿øÍYËïÑe3s˜øÅUik~[¿ù¾;Çþ<ùŠý×슬rMÁw)`æd 渒w°¾.lô|ßà\ί\E}*ÎþÂ>Xä_?ŽvVcJìíûÌ:·.·>r¥èàÕïÎsþ¾d¿ù©ÿ óËÒ¦EYÜ”w.qjv^u¶ó²óÜÎ]>œç×í,pkÇE5¿M=m®ú¬†dm‡› 3ëÜ<Ú4f\RÈ<­¨rÆÀyÂ<Ë–JLÅ«À·é„JXŠ¨xD:f]ò=~Mmv˜Ÿ ¨†ˆˆ¤û4¥SU¶:.e:x7—äŒÓ¨ýÑé¶Þxš’°qo樂£·&» ëæ7–‚rV)¤æÒQBG-F<dHD&Ÿaû LPæ}’öœOÚE”CTB+¥âzäŒ;ð¨ÕN„ r*jÖW“fËé¶ÙVMêÕ•”^K'À³¸‹@ËTÈþ€
-?xJÅ-–ã*)£Nj$Ìü×M•¥ NBt¢JhâQ<
-L¦É{Ï8î°ÄøãJblàgÿ7èá¦cBVö^«àäßÈ9…ÍEïè]4(ccdôÁ‹R|j¶4k³›ZàcÛįQëÄǤɚ÷Žv„þý?ŽË쫉4×s5—=KÏôxÎ8N{{ltl§qWè ²JØ’@HIª²’}a°»qûØ:ÚØ
-:a &*{
-­!|Ê3ÄT÷™Ü¬ú*1«¾²ëëþššW_Ë•WɶŽÛ´DP+Ú™’ŸÞ‘Á^(¯îç·}Ҋ쬼2x_ôGìÛêÏ>$Ýû)£œÆÀ…šªìlï%¯¾B̪.¬½”ˆ=Ù|©ºZžËaÎçÑz¯º¼5Ùö·•'w_õœ[.?yW}êש;•€…!+Õä
-ëàl Ýjîóðé¡ûÀvýyð›<æÐîÃ}é°±ƒœ7ˆ³3°® -F‡n“˜±¥û)ôBëò¡Î³kϯXz$úýöT×éì¼I¼î·Šw[âwZæ-¹
-£ ,nl/`p†f‘k î2PaSÛæ¤ôËؽšß¾}ÞY±3¡8•y 9FÌ]ûI§˜)díf1·©´Ðïæ¢Ò^Ëa½ßÀZT¥„]¿¿ä¹•Åô-«ð¿d8010ÊÁ¹(âÐ=s’Sùpˆ[5(™Ìнbbp²ÛLC6ìu‡Áäà2šZ.eAÈ8Úgù.ñ>ãî/ÅmÀRú6ð
-näàS£LÂibãf—žOÚÈi 3ÉÊo¬&~ÉbâÒ6=Ÿ¶÷Q1ƒ¬€ë¡×fX1ÒÖ@‡41À¼D©ÍúUr!äzAÈä¨ÍCÆgýʱQSw>Ïe¼ƒlÚéd’&åþŠÓ]Z¼+ô ¿Ô»ìWZr8™´Y)ôÌþ’àHÞ6áq°À³\f%ãò@?ê‹ £,÷Zß ¸Q>j–gCêšræ/9ü€ËŒ<âWúï3q›>FwÚ
-÷ö—b·ÈySG.ï
-zMß ^™_0¶y°Ò5½ ßì_íN©«È9S›°!9Ü"ß ¢×â?¶ÚxÖsŽ‰Z{²ÓŠóä,Z›Ÿvtf}ö¶Õg¶ÚÍI æy;ÕùÕƤäK
-¼tåyËáÜœâ"ŒéÛ~ɘTÌ9ÔÔløäÿÜžÔT±¡AWÎo“s†úíW½—ßMiköþ«©bº:&ho>—œÀÇD¿Ùï< óÑF4Õ4pÌ®¯ç\ö•¤‚˜–B·uU€év|ê‹ì‚C Ü纕‰Ø{ ¿òÂÞLëTPr’+¯pÅEú¶œ
-?“f%4woƒƒ¸ÛÁ$Ǧp6åíN@(ÜØJ†uõÌ,ep¯=T\Ø Èχ¡\løÞÿ}7fUo¶skLÜ®å3ƒcðÌÎô ›ºaô!ŸùO\hø_4*X¡'—]¡ã(ÜÐÀ¨¥ 0ZÆ;TZ†Ï,9l|Úi-F:
-·i¢?I¾š©þ¤œº»¿øí$—ºC&ôo§4—Ö&¬ ÙÙ+›óñÀYŨË\ˆŒØ8ûî'³Èé˜eR›öüã2}j"Oãø_°µo|³µ[S»³º¥U3;㺎ãÖ®×xŽ,"Ž‚ G€Är'Ýé¤s'ꨌâ(‚„œû€€á&äìNw'üKöɾ xC*ü~¿çù~?Ÿ²P„¥³¡Ä¡Ÿ`ÇÝüË[.þÅí¹Ákt
-+»É0&%ƒš¡JÐ:’]4ÈÖ>J~¬'Löý4n­¯ ÊJ\ý ÀD%?Ò»·(m+ùÞ–WÚ»{l{Vrÿ` ü'f²g[h*º‡þ»<uûXÎ)hZŸï»6«¼|„Y¥ÂFc)¤ê+ø•]¿¢cgAÚ’yÓwfû£èJhªëô{Õõ#ÛÓ‚æýÞ˜e sZ¶mÍuž
-Mœÿ}úYËŸ)äîÞâPËÆo=gh72Àè`É;ÔZZþ˜ë9³ò¢åèúTÇ·‰™ž‹O%玤&z®Ć_ã«é˜R@£<’¶œ»û,é4‘a)7þìαZPÊ=ü„átB>
-˹Ûó}¶>ô¯a68Øåiûbó:@ž,Pað
-ÖÞ ›às÷ê©á×lrd†Iاؤy¼Ñ%l\Ú]ôwŸ# a3åÓH7.¦ÃÀl–Çõ4n£€íKa\M[Qð»FÅŸ>Š›–¦Äçª~«¥G¥4¸ô°T ë ¶YÁ´øI6 ë^ƒ.Í0EÖ¯âe½â–rX-„Å Ÿô=݇ÿ$Ad²óëœö&fŸ¤§`ÇÀ3†:Ù.¡ä“ñ=&a´mº0A惪vÄnòˆM‡™”ÑVKã&Ø]=¥Å².AÛ[Í¥ã¤Ëd-ÆlOv¡OɈe´š²<e“ö©¿®ÈLDzù%÷ûôoÿã¸<Ÿ›Hï8þ"oóæ&“W™ÉL2É%—Ë —„›#„’ƒÎ ãŠm,Y½¬z]I–% SÆßáp°qQ]I»«nѱ¬²E»«âÜ_’Ÿîž“¶<Ïïù~?Ÿ®2~cå]Øky³íVcnG#?·ÔÈÙå°vtoSöm-¡ª—\;Ú
-æÔþœwqðži‚Å,س‹kæ Ÿp!å líÔ•(2
-™ƒò‹0‹tÄe B.¤²a§6תA³(¼<v éýì“ÒºÃÂ%o>.†íêŠì_eX!åîqú[Y›…‚3öæGåi*d•±¤ÝR‰ÚU•˜SOÅ,’&d1<WÅWÖ&Ï/N|ùkfË¢jefo3 ƒ˜O™ä,i˜bIÝD=cÒi›aç¿’³Lg…ݸòçfnþG&¹°Zůß/Ç:`9_+ε€Ï8\7V i/3ó$·Êù´f¬‘1#8sÆe|K Ü/"=÷ö…ôTqÃ8Ð$Ü&¡æH£¬•õÞR¨“‡Û"ƒ{QíÀûmeÇëçÒ³¥¨Iœ*;MÇQ3—õ-óùyÈv—‡JZÔU\/:ª» +ÓÇ÷×Í#íÌä2žë4áç²v”˺æøŒÃÑÈZtŠWk¦¾×ÏuÝõŒÃ —ïâó¾eaÇåQñÐýõŒĮ́‡'n®ìG”cïâóµ¤ï›¾£È…Ux6Êe¤ÝTLÙË“1t¡¥ïOgN&ã¾^ËøòYï]6¥Ÿ÷“qi›ë/mNÔ€§:L­ÜÜt²Ÿ‡®¬Æ4n
-C4ø ÍbVI) éÙ_Wžæé*mi:èŽwOÅ'Þþ0ýe%`ªFuƒ¥mär5d9Ø6 ¼z¢8SÞ@zJY ?íXLmŽ€Á£pÙÁ]Üå áZq¹Rj{Ö¤§8`Ñj@7PÃlšÃ6»C×ï®MÈ/ ÿñíƒßŸˆþV
-FÕaA+iåôÊF
-X,îqÖâ ß³±Å§,~s¹5ŠvŸ_;öêÑø‘ܲò$qwæ—ry+ «ö=ÌX%tçÝ~Ì‘/M¦>§NRQÉ7tDqI MRšÐ^­FÛâÞ9³Ék1»º¸…ô!ÏÞ® Íß¹ò×CÒfn
-®*mVÒ¤]Ïè¬Ù[\¦ÍÀc°· n×±¤ïn1ŽÚ?„4=Íüìb£}íxnÕáâR6=Pôq¸z¬ž™[*Æœ†ý°ËÌ’7Ÿð¹ÙÛ÷þzάãÓf-“4H°™ |Æjå v÷‡˜ì»fÁ»Ôz{}C(x¹´µÍ…êFÒí…Ž½ßȹfëY—¯‘G¡»­f>§¦ip‰DÈ™ÔÂŽÍÁï ^*fžfpaÞÔ­´aqd|wKüïbPÕEÇÚ
-f•í®#]•€òfú¦•R ÖII燵îÏ_ýÐñ›÷†>cÚÜÑ Rí‹9‘¶§0¸Y"$ÒVדˆ¨ óà©À<íÔÝ5 Õïm†ö¶5½å ôÜûÕÁÏwŸ^ý;ÔŽfP7Võ0U7曦¨ÍÞ¿W/ý¶ôläH-Š Iý—P°U‹é'™€ßÍݺ
-¦¸\XéøÝÁÆ8œ E#¥—6ÚÓ]­bfÌÖƒzõ õ‹OÃÄÅ繄öj=i7Ô³¨W€™'uRa³¨´¦ï§6­SÕ-ÓG(ú„Œê*×Ñ8jng¬¼´‰éˆÇÌ!§Â3ç*Û¢ð$—4Jj ³„‰Æ©°ú2—°*Ú,ÆA—0„¼‡†~«‘Ê~šPGjùôüJ÷úª¸ÿn5qgƒ#ý÷Á©äMÂ(päÑ p0otÒr)ïmºžËþ<OwZ;vg+£ŸHE_|×Ê©F³êÑ1ÓU¤UÌnÒNÈR“L ­Z8o.¡ecª~ž4JÀ÷ƒ¢“LÊîd²³‹•¤Ey´)è6oµPÉ™K|R3Ê¥ô|ò>å½%䜳 ¡±¸v„#TýTTÞµ»5ùÏéy6‹úk;&„ƒßðÙ…M6}/œøØÊ/ä=·yßÿI.³ç¶­3Šÿ}êd:íCÝÖ3Øã6vãiœÄK¼ÇÚlG¢(Š¤¸o
-‚«(9µ%‘¢H Rnóôãô/ÎÅÅwÏ=çw^´@«JÁwGÊ‘4ŸqjÚEÒs°Â:›A`%ÌÖ.âhgunÅ׺Ӡ•kã VÄØ`Q` è 僚’óÕ, ÎFVÛ³µÒ{T)Ž?mmËM¶!«:Åð,°>t-Ü%g=D³»—”2¨©ÁXnV7 O²Ò.ÒÐGð–£³õIi’hßµXðð¡ZBñÃâðÉFÌ®îîu7bí-ÌŒ«-úÜÁfÒz«úGe±çOÛ³ç_žü¼±jê“’¨¾4«‚¼5ÝS^ª±÷ì.­,|^Û0]–Óàù9Ò[No^ý•H˜¸sí¾:‘{tñ7¿¼ê9*¬[n7ÌT^:^_ÕœNC¥4nß›»ö‡òÜO…UCo3‰ù˜¥§üfðØîë?WWµ_—W\#ïgM—¹u8ï7ª¯„ —®Õí¸ çH}Í6P]5^àbˆÎiªu;Û;y›ú0oUur®±N1Kó­Zlô|mÝtUˆ¹uÕEl¨ö3®>X²\RÃgZ¬ Ø3ƒN ³±\­,£blúŸ °òÂعʼá’w[ÖílÄ,}•¥¡Ïö~þîSö,&(w#Š‰)—–›ÆrK`lƒ‚ÛÕ)þè,õ¸—¯„|òz•4ájãdHo3 sÈ"ÆzÊ¡S+ÌÕ*¿sûR†ö*Y‚ø¸‰!‡E—é°è4Ô7T§÷–{Žì-ß>ó¿^^Ó_®FP”˜|ÔbÃ?6S”ç`Íu{ Ù]¶÷í. ÿ³ž$ñ½8î@·äÒ“Ïà;y‹ s¬ê«îB
-5
-ˆ9ÌÉgìê«ï«1¦¥x(e)¯ óìx,åq|w©ÿ˜½ºTP
-zÁÎ[íéƒEÍ©cè뀸¨[ÃEhBŒû'¥”?$¯‰Içpî†ÑoåL·æýãk÷×Gåu¦d<¸˜Dt¤K³ ¾V[µõ‰q˜ KÁ\HOæ•ú˜~òß’Ë&3ÚKÕˆö ·õñ ã5>®¿('ꃘià™ûäo_8N­böΦ'ôqÓã…<w•£¨¦³ÞÌ/hN–7P}•mE7¥¨?ÐŒN?WR‰ÚºñÊÎÂð‰÷sG*‹ÃŸ Iº³ˆÞÚ{‹ôÊÀ¼ÿ~;ç•ðaÆ¡RNý|ÒWK¢ÆJÄÖßl±$.wÙ2íAÊQã¥jBwAÍ´7†V ÷ÔA+\*x§U Í(›8QOXúxÆ©áSˆ¹•uX-!0åHaþæ‘­ylh澿FBŽøýµàøÁú§õØÈ™à~‚°l¯¡ƒÛËö«bfòlTÏ’ŸñŒZ`ýRv¼ëÿÓkê©DÆÎ5’˜CÙ >áóNc-cø¶–2\9ˆé/4rcׄ,Ž7óS ÊöøL«à›jnÛÛÁ™æN7aï\š¢k)Ú#ÀyI¬C[ßùBf¬pO0[3mW+Äü±ˆ"¿–ÜD'ïƺš­EMW>,«ÿ.$ƒJŽ@ß@DÖƒñlà®\>‘ ¡5Ø·qÛ93ˆYŠ-»ëÀƒbŒ&ZÝo€ÿWb˜ö ŽiÁðd
-]¨
-=LIûÆ•Œ/¬ä(_'‡cÍ 2&À{%ðx!1q¯Y<hm’ÆÃoC%çv*:ÌÅ0x¦W²û­løy+íŸPRþq)A¢"t >æÖ!>fî«G ¤¨æbS÷×hG5J»*+¸¦Åô-˜¹”A,Õ¸]Sz Ù3géí$Ãä$j(/Îí-™.A¶F]OTò.}²òý‡ÝuÙY!F¤…)Ð!šió@}MóEyqäTáùµOþýäö %FÓMG*p7Ä$E´2ã?*à‰
-z §H´û¬G-½ÐG¬"c\°«`í{õÄôËfŽ$¥4:|4ønvøøÆä·¿‹O÷ÿEL¸‘ÓõoDÇ%=®Ê†[WO¢º½¨­/áRí$œ·ß/Y¯¶a¶mè£r
-ÑJŒÛ®ä1[Wÿ;oMçÞ/š¿>r¥qô4Yð·4í†hl £RÒjæBÏÄLø©œ>€ÞèlGdð›íyý…âKÕq%㳈¡SBlJÑe9,y|íM7
-båÓ¸SÎú&š9Ê 9^=''祂wZ‚ŒäÓæþòºéFΉc)âò½WˆMÜo$¿Ÿã˜Ð}ŽñÒõ$7`_|ÖC
-,á–2^èY~?ÇLÎð™Vl`’Ï’>‡»ªiûPyx<‰ŒIyÈÓ5ëÀ/ÿã¸L»›¶ò0þA8ó®sæÌ›9=3œ™)íte ¥„„ìqï¶$Ë–eËk6B€@Y†rÊÐBC Iï‹,ÇÆqHâX–lm–ÒÓÏ1ó⾑léêÞû<ÏïY¶wW³÷Dfþ¹”}¢n;P7ƒ÷Ôbà®´a7|s°!Ÿ αô½ˆP¸ñ‚ÏoïD\†½8©•|¬±aéodÍîªþì!t¢cÐÕÇœS›†O =eð÷K-{¯µ§• :¬n¸°_z úJ¹­eý³ÚsjÁ?/ç=~>ÈiX¶§0.L óqb”O¹­B†4C7›’¶aÈÔ~!îÁ„°åB„† cÀ¶„^
-=Ì;íj?ÞÂÍ\Â6°ýÒveÍ9(ÛK |°5µU#†«µ°uÈÚ%„Ñ8ºžuÙjq[ô€LÃü¢n‹’žš“3S õ ÿFž°±1ÝE6¢¿
-ìg£HÂu§™à}ô“Ñ/bó×ÿøtO9O@oA‡¤,xœ¹Ã¢Û{ü– >n9p%ƒë†@›¾yeËwKÝòßQ
-þÛpF‚b`ápÛOÙtûj$¶·nmƒ<ž™©;š²±©à¤”›}
-þx£É@u`òZÚKÈŒ?¨@ïªÒiŽ™^à3·—ªÌü¢˜ Ü®B‡mêQÊÛÑÂËÞ¿ì¼¢ ‘ÒlúûX9˜®ºÏ›®ÁsËê9Ê ÝÃ[cüSåäƒX™yX|šÁ÷«4:x?[M´VhÿÑoà·¢þ(熵 Q!ã’ Á‡G uÆiU³Øˆ˜AúAÿ=JŽ$”¼¾œ¶iÊ40OáÆO OЦÇÓdÃ:x‹œÅuå_­WJ¯,Ø5¬‹æ­Æ!f¹Ê®Î¬˜[…(¡)-!—v_¾Þ_4žndÝ`XB@oÓr¬‡‹b=pfÆ߸ œÆJ‚Ô³q—±,Ç<ˆ'bÂ1Öü] žË†.>n×ì­£o_¢ß¾{amÝ[6œb¦öòº¥ý líü°l¹XZñ6Ÿ¾Ù~>úÏð¼¼BziÙHúÜR,\:±³h¹ÎF=¶J˜Ò7Ò~ßqÁó¨à­Ø&ø˜µ4t©´‚¶ñ!¤]ˆZ;³óïà§Ç0˜»f¹zéQ26GºkQóµƒ}+¿fï¯Ó7”27) WSØ1wTc¦«2mêÓúöji/%CÈÿÕˆ¥'óðÒ2¾=Q‰})¤´­2xŠ¤ðZ"à /T“.«’¥H`° °ºô?(Óæ.)…öqq—IHÛ†›¼[£}^èºÉÖ6>vf/<~Z¡ñ12K¦ dF íÐ#çš¾ÛØ&©æ:³9;Kæs{‹Æ3¿}s
-èHHº1);ó¹à¿%çmúƦeð†’6]URÖn<[*Øa‘ò7Š“€ƒÃxTOW
-Ðk
-.§”Å4
-ô¥
-t5È€Žýè䤰„̱é×(uX›¡9‹ iLSŽâ²–¾Oó̺˜›úžƒë"c×
- 2PMi/WÁ%ï¾féùgïcDЖR˜z,¿ñNr lH`œf1ç®ÊÌܯ%ü>5?yGÉNÞác>RÈ8x׸”B4r28TÝÀ´¬>šmo®ÔßÍü¢nî5ò$÷4µrOZ»Dé«¥¬}àY×÷¤Q 'êà)Àp¤˜ïÊ:Œ
-ƒô—–u-oŸŽ~¾ó|â‹w?[¶ŸhÿQYE®TVM­,Ü+½Ö·üï§Ñ¿¾{:ðçíz>“ãÆ69ö 1|@‚þÀ…Í—ù°µMˆa×å„]SYÅ»Ùu·–{lBÒkçCÄpåW¬sÿµñ,ç¼²f½R^5ž/-Nï½Öý{oïx·h¹°³¨=Å…ôçÙáBÎu%biÛ]ÖŸI<h;Á<îþìýKø„2òQbº­±±õ±!í™ÒêÈ)!aî:X·¶ï¿B¿«Ç(ËtÑ:ø³…>ÃzËËÆsKÚ•—µ_‹qk×aÎýÔéPs.G5êЬX¿«†Ñ®°½G{v_Üú±ïOÜk¬CŠz0ðmRɸ?åÓÇå­E,ìÊè)~}ðäQÞaiä‚·eæSî˜à\~³û‹þ"|cçñ&Žª9Û¸”Fzù°ñRiÙx^¢=$sêxè&
-0­
-VÔ†Ü÷-PŠŽæ©E‡*Z1jdâÓ›Ûg¶G¿œÿ²%¦§Vy„Ø„GÙÕ[o®¹'XÅè"\ïQ2Š#‹PMÄ(&«ÙÕ®)RÎÎ(ákÏd﵈‘CíÃðçziÔÈ©O­ð;ã`®cQg`‹÷i¹wP°Å;ÇÁEÌ¢‡¾níÑ$ã&ª‡k6Þ½0˜ïµ`ï#ñÊþ8õú±’Q‚™¹MÉn›WG-u«©Å ܳ±1;ÜZ„ïú4HÝÖ{âÕЯ1c—QRvø^ÂB¯Œ™È%a=¥(f —§íÜÖ¤•Oè9x×$½ ¾$%z•Ä<ïlו¸‰U›¶ ºâf¨[f7ÄÍpk@Ë­I˜ä„EANÛô˜IÖ[’ýZxó–WÕŸïÓ #&>ê`7cN¸=åt?§gÖx„”éø²9(:]%ƒ,Ì&"}§œRêÙ¦˜žÍëlFaËpKÜÂkßÔïtÊé˜í‘[y"™EÌ!¥&’þè§>ddVE­p‹[M/õj òè%Ñe~{Ä„4glâÞß7¤ÌßÀ•½Æ¯¡4,fvŸo?úùtÈ“59[õaf^[ 7µPù±
-xŸiŽ- îGrbØ èOÚåTÌ*%t0Þ¯eâbvý馄- I‡”|ø3 æ)±1(Œ&ˆ¬È™‰Õ!jC@Öí+»œù} œ{ÂR«‚žÿîˆçŸdLð¼„CBN® ºÃ6v“{‘^s¿<~ýe[ÆK­#=';(µ-¢ÅœüŽ Ø›#·bÿT蚀q‡“BüÊ3â%r ä øýè2qàŸ˜•Q“tpZ‚F~Ëî<R½¯‚Êc&A'˜zpÆŸ¬Ë¡ÿí o€ç/‹»²lµÀ˜ãéã¨õ‰Ü5#nˆ˜‡Ù>½‚ä× ZãVNcp‘VÔ“ Ãb!ºD«ÌÞèä}§OŸžªüM¬Ñ
-ü¯Úõ‘Y€j8UÇsôÂÃIZ¾_×xgE ¬Ý3#¨ÙzCþ~ûñ’OÉ©ð©‘:—JÐ`{Ñùµ_͹ƒYÅ]A·è¼Ö3G+>V²p! RTójz¸~óéºó?½ÃÀë3awVgîYÚͬ>Æh×Çûs°%j¶L©@MìÆ€a˜†š†ià¬(¨‘[w4Ë,vÏ@¥>„K[Eݧ+2jHˬ /"Í¿èùNxZâWöæzgú~pƒð«nºµœÇ˶¿»§z ÎRfÌÌiòd×(»¯ÔÄ|°¦(
-¼:n–“RxÂøù;lzù ’Ž”6Gû.íSrwÇú¯kée§N1åì“”tŽš‘–Ìš˜œY—1cVIï è·g[#ƒg›Ã²ôª„r¾74ØVó±
- ¨ª?š'´ £uüæãy^Ãá4ëV@+h[ÀCêBznmH×ùçeÇs´Â½1âÕÏ“”<÷T× îý±=(™MA—æª
-FÂåti
-p‡Xë+öd¦<{¥ •lÉ‚Û5.áTÁL:»ë8=É4J
-Ò¶ ]ô8wÓhq䊈¸ÓCKþKSü#wü…k”öºð»b¬Çõ,;ýïuÉ(¥@¯”¼Â[M[Û…ª–h’ÑlfÇíö¼—™Ž³©÷ö»q^›„p);l™ 'üo…½PâÃÎ$ȉ‚ h ã»&‚9YGñþ?V9¨ÿî|Ýhëè«5ä#9'u€l¡BLCþk¾åf›(~c(‰Qà1—³Œœ¿t¼â¿·x´Ú²üëå¢xÛ$>àp ïŶ8 t"§Fézñ!Wª
-ä¯ízîÕBÂ6N
-:Î÷Øh‡¦*bîõ•ÛM|„=••fƒJ¢ŽÆØ ;b²·¡“äe–ÐÃôb²¯šŸñT^–äpÐK‰üª¬Êÿ:[ƒ=SV#Ì£¬è£qZ„®í².B$ÔÐñòdû¥:„÷õdUæÕ n–•Åí1# âOÛ0ÖÇ܇ò:•FœŽ•Dºð/¿Î6”|_ni8ù˜w ¥êÛrô¢ì§;ÍpÐNk.èp˜à§ä‚u´³´
-jì%ûÉÈ!¶qrˆUFÒ÷½5MHç1ÎçDNO²Œ'üXp®çª‰ÊJ˜MÎJ|m¡†
-sÙ—äy]ÍÓÓÿ³UÏû¶\C>a½?) 5ö|­£Ea¶»Ž-‰
-÷<ÿ¦äm³Ÿxú¡Ò„#7÷›¦¹Ù¦¨ÊÛlǼœå¼¿7]žþ¨šèPšäñ¯)î݉¾TŸô`·7ÏýûJÉû›EÀ=¤ÈuIÒ_š2įu>ëJÍ…×ʯ5õœ½ò·ÆþâPcî¥^Œr7“ ßç+à«í¸0t„ó1*þ×F“`o„–¬jÌxv4…ñ;™Dû{²Aæ!Œïír%²ŸÿüRÎDýxÓ6ÍJ2‚t9à͘óJã‡'k"”›¸8þq;6ü¾mŒž²;Tà§æÃÍTeÚ+y9—PO•©¦‰g›2ŸÐSÜ_m@@.
-aÎñ³¼~.rÑG£dˆE
-ôÞ ²?ˆ º6À:šî¶&Jzj.Nûªá/Õœì3 ƒ¶»if #ÂÐUè0H‹
-¿ßu†„¹(Àúh[ÉA–±ÊL] Éë`¨ô­NL^ A[íž{ýô°•Oxo.,ØN× pï$ª¬ÉrVp Vø™Ž[­7C1à\Ys»ÆB,wäøJXoí´¤ ›BT±7\™º(ÄûÈ9Y.ò²lÐBõGEyü¿-c¤8Ë.ølš‘öS+jùg§^`‘¢|jì—)Æ^„«QœÞë!¼4Jh¥<DÝD º^h,ý©©+¹Y`§ŽQÞ S æá ÝÀåEɆar® °ÕC‚üXã  3õ£Ý-ü«­´ßN)üÇB÷V#üx1W‹³M ˆÖÉÒDó%d·ï­kE»iEY ]s¶óÍR%æ`œfè-
-ÕwrâÖD´€íNŠ÷n7Õ·1Ù„wÇD¿øm®:+âZUO5HoT‚ø{*Aì=5?å²2õ¡QLñŸo%x“??(Žrÿý|º*OUwœ©H±[¬M³×
-³Ïñ f*“›¤¤× ”ØGôÄWvŸ
-ÓÿÙhª>SÒÞJ‰¯¶Ú1®ªê‡QÆ;»åÆüç“|$ÿêÚß:ÁLYúŒôX¡ý6Dùn²ÿ3\&\I·yžÞ·Ž•––šŠK–[š+n¸"¢,ŠŠ"‹,¸  .¹¥â’Š¨ ˆ
-¢ îâž ŠkZ½S3óž3çÌ™ÿGx~Ϲïûº8©€sÝ—P^Ý3JÑ~rQ~àxüÅ™’³NVÛBy d#l
-º§¬Ê~e”sà²*¸ã
-á倭Êï[ðÞêZ”ã|=ÒiN€r›â烕u¸°m)=¥ aŸèëüAjšû¯µ:ÚÍ?ÿà¹C Þ÷  ÚïÍI
-!öˆï³Í%逡V?e»o¶½rôî™îc‚Ã\uŒ£EFˆ½ZàdOÖÀÜWÛ
-ƒÿerêY—³ØV'´+.ò["]«²þ¦¤¸o÷Q¡‹­Å¡wËæÕ,a:áZÅɺ˜¡A×»q¾_* Ãœt—c% ¡m}ø 9ôBÉGßêؘK %íXF ÝîE{oõâÀ×ZiG^‘¼;B‰¾šàÏ•|ÔÉ(1ôl‚r9CŠ¼
-½ØGŽ²*y¨Õ¢¯i¸*Ë,­ÎeÄÞWrS6Ú <7»K
-ÏgEä C[¡Ç¢ë¦`œÕ58°±Ÿ•y:õ©|g€›¼ÙIŠØl-òYmÉ{nhøÚdäÈ«…jìú
-O5¨~ZøÑ03Ö¦à¦Û¬ä³ ô|ªšøc±Žs­¯£´P .€WAÿÞk[æÙ
-Âu£“z(e%žLpÒm€[Ü,Ô‘LSÌT]{I°Jˆ{ä°äFW[|9_‹¿Yl(?þòXú>èLQ ôÓËÝAb˜aˆ±6Tšv4ÍÆÍ4äøo´b¼,RRœMQžr3OEüXâ‘®p162]›æ`’”§üXª+»T±Ó­´è¥VÔóåf´ËR3ÚM#‚-“¤týçbHKI¼½QÁ£ž)©)ÿ§¸J¿’Î×ø}33çži¦Û¢VS¶\³&³\’ÔÌDÉ} \
-¸‹K²
-¢ÕtÏ=÷_¹¿yñ}û=ÏyžÏºæ_ûîwsWAÔBã›è°›Ãž@îò*3þ9IE|â·[èÕiÙS·‚Qpºà"úNZÄÈ'ÈIo\‹TDÐ ht/Ð>)>Å:\ùp«·ä¨uémäð
-íT1óö¦éç+ýÝ!£îSR¡gKÄ ¯›t¾†Ë
-êÒÝ .^®wsÝ`ïµN²s¬éé‡cäÔÝÁ긽Áª‡. 1mw´&þp†r$e!´¸çó´‚+{ýõϽ²˜OA‡ºHoìóØT×ÜgUœu¨ì–WÚRèVòkA¼*,]–ÇZ„e1¾9Ò»ðs8CÎÙªKö):©¦Êk1!ý‡I|Ê–î‚ÛNñuÈÐ^6‚o•‹÷먨/ÊW럃A‹p.µíO4AŽÆšR“¤”£QBBPÎA»em¥:^Áõ½‘Ê8ï" ΰօ¼a
-o÷ôy ¬*»¤>É+ŧŽxr"«Hˆ¬QÞŸéYë
-h„³µÀ!g[þ¬¼«bå^Qsóc5ðè)rÊJnöÍÍ |Ò¥wœ
-Ò§`¼w]w¹
-ÃvíÉ6ÅkhÊ ™ºÚBFÛ¹Èýp4Ó ·MÒO&1Ï¿è©ÈºaŸ#¦9¥ïÜr, ê<*Vi
-Ð'?¬ôÇêøù7ƒ:VOÅ®t|"@v†KïYÅè'v9q¢h¯ðkD-»Â*Æ';¥Tȳ’ ž^ÔRr?Ï`Öz‹h;×=j
-4´P|ËlìÞ,1#h2~“[Ù ?šÆ$Ÿ|Â%:æk^xõdøٻΠ†<—Œ”}¦¦ ÂzÌ!©yeìÊ¿¥hËþUÍóÁ@Ùý‹åÂÒÓå7ŠÚË}\«§j&Ê>MHÜFÿn×AetÄÁ\3ô»µ³Ë§¦Û&‰/­âƧ¼ê7ЊNõÍE-µàÔЦye)tê5·œÝz±5ºxju69ó@B€M Wv„‚ÏJfiÎÓ›ÿèk‚gœYúF]zíhÿò`ª:îx¾âÑÞdQìÖHÑ“ï{žËí®¾]°Vè%—›=ýaSwÛ™A@<Óµ9»ðd¾¶?ÇÈ£¡î¬q›’ƒÒa¦["DŠéÛ8=Ã9Ày嬢 Q@<5ó¨»`çó)ä\àý*.& áÖ…Wødÿ2§Ú¯g»ä´l÷æT
-=ºaÁÁ'n‘©«ú¨ãÑ솪 ­í(‰ß%ü±1FËà 7úk²ÿõ}]Ä;ÓÓ@-¯Ït+ëÒg±‰.mS^ÀÔÖ0ñÈ>€õjx˜¿q^æÀ,œPÔB|rl²uuks
-<¸Ì®˜¹×"9Û.%@òÿ).¯¯4³6Š¿“!‰‰šbŠ5ÑXÂ$š¨QÇ^°&l€‚ ‚€Q,±`ÇÅ‚EÅAņ5âL237ßò½sq®ÎZg=kýÛÏÞñ?Dl}SiÀFÚËØŠ ÜWRòmKµë¯â[?!iA–íq4Áεéd²k½Tb™$¥î”:Q0ü³÷zg^ØEö'xw¬fêÚPÞêê÷ÀºÕMY’ä¹*ËÂLjˆ‹>ír¹–a僼£/g¸˜½~L F”â¨æÁÕ‚d×Õ–,ÿSuYÊ_+Œ¢ÿt¿?ÆÌ9›i¬9™y`g;ËÆi wDpgS?ÒïhŒ
-ÿ¥—JÏ&kJŽ†ØûJN˜Íá¦al¤^‘¸Ú‰€íLáÛãô¢ï•èkm]«Í ï´üÇÈ‚„{0ËF]®ò9?7Åõ¶5‘Ð8JI–D=Q5åüø.í8
-Ÿz0Y‘|8EÎ;™¡¡ÿ2ùV-»bµík™%§ŽQÒ/ækÕ ¬ýQaáF)ŒŠîÓLœ«–OõÓòi ‚_o9Ò¥ƒt'bŸë«ãz¹éßø`Ó!bs <èp’ þsƒðd¦ŽnV‰KŒƒÕiß{h›íŒÐí.n¼±·,£½ÄØ r¬ˆi°ÃÞZÄaoͧµffÄl5Þ뻘;WÉi»*qé|KeÐZ5æl¾©yg„‡:
-ñc™Ã¶š¯ MýV­ˆ©kCÿ¾Þ ûB†u^P¾ÑŽƒ}kF{îõba–ÁŠ¨³Q
-âr’‹:£ôrn˜©]’yþµ…qþµžtÐÇÍÐJóÝÁ<˜i[
-. ÊýE1}{š[hžæ ,süÒ‹ÅZêõ¢ˆv>Ã/3“£w»JßœÓR®çø£ aI{Eæ>|ŽóºŒ5ªhºRKèfeY°±»èƒeœ„º^“wÙÖäíW«u’ÓYnÉÉ,«ðjE,¾ÐÖP¯Wkª,S¥Ñæáâ›(?“ûvg°*¥ ›üHQžíªQÞ(yÅWÓ’ÓQiåv;5ê°—™t¡j¨2õÔ”,ËŠý‡«’-cUÉçsœ¢ËEnÉÅ\Eêœ4æÙDM´“±~©i¬û‘=° mtÞšºi{`ÆÛ!Çì Òb]ô
-ªXùšnrÐt+ýZNöá=Fxd÷.réiâ|“™¤Â!rDÖ-A&ÊJþã-ëñA^
-ó‡tá·ºxG* îxº»;%Æëûè‘+ Ë늆¼Å†ÚèÑjÒ‹>R‘ó ¹Ôe”^å?H½PV?ù‚A8abCìüŸ»
-¿>
-Â]Rÿtn÷ÑËðyäD½r³c§Å<êªÊx¥æGû ùšêr뢀t ò¼¯âdï©è©V Ÿx¥ÒO5¬|Cw lAŒv[i ½_–QBë
-3P!AlX„O¼Yz“šy›•ç¶özÉ
-|­LŽ¾ßP52ÒÏ4"ú颔cV ¦ÊHC7*d{Ÿ S7ú™±ºNr°ZZæÕÏuè¢T€Zq|‚²3“ï$Â|n<½ûð< €×CG 0vk\TõÓ þò¯©Fb]$#6rµí©×Õ¬ ½´îpô’1FÚñ,%õb‰ƒ9™çãöT\¤i˜Y4#ÇÅJKÒ_ð²ïÉ
-Rï’’Â ÃÞ:HÐIOÇ«Ó]f„9/Œ¤Ì¿ÂÆÿK†6'ø(°nø(XØR|!”ƒÎ·G'Ʊoýï§Î€»“#ðÚå1àéâ ÜÞÜîߢý¼€‚ˆ@H{y–Ó’4Ïݦe"Ït¬~„±:\“>«%ŒÔ1ZH"L6”›ŸiMŒ‚Äø{‚Zu>Áü‚÷@„÷ ÀïÑ} éÍKàýk7Àzˆ{ j9ÜRL¼»ÚZùn©¹Ì{Šy¶XG|½ñŽËôŸ lãO$±“H„Ø#’ ¨%¶PKb/J‰JÙDHˆ]$–No)¦•v(míUÝQ¦õiËô¶Ÿ™;í¼¸/îÿrÏÌ‹óö<Ïùþžßïœ3×ykj kÞÒͲ·¶û««ª1¹¹P%L‡Ì¨(`ƒ -4
-Ø,HeRèX
-³¡ˆ|’è!@òõ¢¢)ŽÎ“ŸÀÄO)ÅÔç7Û>?Öþº*~^7^~7¯J>ºc¼´6¦ŽY´((.eK NRŽ»Q(‚Æ >”%ÅN82 8D“ˆ@ö
- =–tóALhPšœ„)æq°]•yäy}5sm 5áxÙ"y±`ÎÞq™ø{îÞô½Ùþœ»’5kÖ„NÌ4]s³ŸHÀƒ2bâ€M¡“ƒ23!„
-L2‚¼ý€H„ìÈ8è(ÜT6Å¿˜ÒçŸÞµ–ŸÞë¯|uw´éádoÆbŸ†9®hô›P¶Nh;‚ŒõWðbbèa…æL@§AvT,ÄÒ˜F  éŤÒQvС˜Ï…Þ†2üæˆ:æ|ËÞz¾Ó×òΣη%]lZêN×מþl/ÿÅmO›4émÒRl.ŸéQ,ðøÀe0c?öö†*(ADˆeBIJ†W© 7Þ" 9š3Š¿lX›ÎVLÅï=¦üÃ9Ã¥W·»³=ýzö¢Í1¦”ZÄ…˜ªKé MI¾
-òpµ©iPÉKB^¦y™âã‹|È@ÜC€¡¨ï„0DЀ̄æ¼|oSU õéTWæɽÁºÏë?þ{Çå<Z²”¼^´Šºro÷ÈÃÔ•b\~R $1è ŒŒ&âKñ @¾ B ò"ÁÏÿŸý“‘†¼ðhà0XÐZ˜ë5)«À.©%þgËúÒÿLþñÒ¦ÿr0Òóac¼ûÓžÛuòhT÷Ë°.z¤½ÉW#)Á–ñ¸˜Ò$b“<Vངê†A|8¢–•©—0= uD§úJÜ›;¢g³ ̃ûÕ+. oÕi®ºF —º8s ãN×@œSÝ©«V_/j
-ÐUµ“zš”¤eûtÙ†ëçŽ×Kó=gk³öã_ÑŸïës—óâ©{âdkÜ°½<Xµ6gËñLZù‹ý6S­aºTƬqÓÛdfÊËä$YiS ¹®ž`ª”úª«™wtÚ”½){Ý©§Sr²¤œÝ7ŠÏwÇm·}§k®Î·+³–gž)Õ˜¦ŠèV7‡?t;Ëçî"‡ÆÓÙ¤ vH¯úÉ
-ëñ‰<ˆ %¡Y9 *RDxKM ã¶Ö$|63Zw¸Ð[òqÝÑz¾1føüxL÷Æ3Ø2¦©¦ ÉÊý× ÜõQ[Úœ£?q²»/Êz]R)’àÒb¹ÀFÙÉ$¢|‹âA.?ÍKœ–ãU[Xã%«¸æëPÊÙþá\wÞ×Ýqëùc‡ìÛ–Cû}tòÇË ÷ïÎÑÏ{®Áýn¹gzV2ÚibµÕ×ûç …ØÂħ@bd"ˆPšš‡×4*éV…‘³4`K_¶‰Žïºû.6g¦ÎÖe¯ó'Cª‹'CïWÇ”¯ïOwçG$+“=)Ó½ºãõÔæË•øjÑe/‘ y<Í.ˆ~ÁÏâAM¾«¯n§Ï[†Êß=˜´_lÛ;.6­¼q|?šYûqì¼ýçáÄͳÝÍþrWñÎ]{Ùâ€%ú's'{HvÚÝÐHÒ_¹BPT× Ò²|2â¹P,Ì€²¬\/©¨/NÏÄÈjkýúTræ“iKþ©gHýÛ#—í·ñ®óM‡ülÕÞxpK˵Ô[~òØÕ½97Tá2µÓõµ¥~’L¡oƒ8ßGsE\+ÎñDGBjL"®QÒD­(¯ Ô—KñÖ9iD£‹]t˜…{3Úôá†Ã…请cÓ?ŽGÐû°éÿ—éS[ç‡ÓN;ÎdÚÌ´iÒv:î$mÝÄvC“@¨76ÇØlƳ „Ú¯®¤«]´«@BHh¹ZÑ. Ђо€!ËLó§ôæÃûõwÎ9Ïù=oÖÅ'Ÿy¥¢8"aX˜÷¤”É?ûzõøNÝÏ~vû½W÷›ß{Ýüô-õ ¿¼ý·ß{öߺŸã_=ÿµd
-sCÒ„7“)+Wö
-ê¹EJÏ!bö™ "¦ÌàpÞ-óG.(‘Ÿ¹A|ÒÆK;!RÜÎÅ!\ìþ®d*²9õjØ|KàÓƒ%Á‘aMÛÖr£:ùäá:ŒI¬ÓÛjv[Cù*x…¬,Â87˜Â.,)Ø–·Ïœ°ìÄM%1ëÔ*"®°;b+‚¾ý5xĵ¢òl­ó‘ÕÕY#¬èØÀMZã¦tlð÷W‹Pô"¾%'繤„Èá’CÊ/»ÁéŠ$U}»äG:fgxiæq|‹ó&±#ÂîëDoi'¢U¼¶/*»M°ªÕ*“5ï
-Àzmú†S)ë2+àoVyà¿×Ä¢G–ù±¸]BË <|Æ 'MŒ—GZìç#ùå÷û°±²Î̤ϧschØRëÕê^オž!þi€ÖEšÖe€Ç¥b7íoÈFb[üþs©3çaŒƒBQÞ?§Èùæ5YŸb­šÓ\¡Àª>œ¶Ì>™HÍ6Õø§¶EÚœÕJèyñ>ƒùhY,¢æqëuRÁ×j.÷_r®øö®¸{hTA÷ª£×JA±¬²/7Vd›¥ .yìÜ›t0ú ³m^4ÿl*îc‡¼Ú EŒËŸN:êZ¦>ØÓ±Ÿï*™ë¨/ó‰ÿD´Üî‚°Ý£ãuZ„Ä¢~ˆ@‚Â\QÍCÃnŶÈO `Ú*¦¢=¥EMìÞà2©áxs¶õØ„f—¤ç/ºÙG¿Ù:~Zzöô•eY=h^´¹ÖÄoŒ
-FÚ.e|ÊÉ&®Å)jûÝéÖà. ÿ*®
-–Œ‰¬ƒÖŸ÷ò©ÇvîDÄ,œ°¯
-_î.Ú,ª¹«¸¬ÃãŽí%ŽwG11Ò;¢ú™æ°ŽÜ]ÇUðBô´•GØ_žü"eÀÝý.1g*ûm•
-CW!TvKø%Ç<:»ìáÚÞLÕGIÙIßœ;X#%÷¼2»;Ç/"%íàN,<BÚ*aÝ"vÎ4û2³9ÓzºN~x´AmM˜”ÜSôĶ%¸ÄÎÜô‰Ž¯ÓŸæ̼ñªKÀÊZI¯Þ…„²«€ÚzéŸ_-ºØø¢‡5–µ³ÏÌàHÒ
-×Òî…Ôøª°ûKZG®?FràÄ5ŒùËË^¹v+Èì>„¤«XOSfV[Æ
-ô…4äûûK¸º“]p& RrJÇi;ZÄÿœÖPï—­b:¤—‘Í3ŒÚ9ú“3‡o‰÷*;2qÖ,Jl`­öÅ´ôvÈ26)6ŒóƈÍg_â_i%#q£”’43ž$MCõ‰ü ªÅ×D4}7ãF˾xê}K¿Û’ò
-žI5ìãz!1¡c£cBõÞ›®ŸŽÖº®BVF«ãæ?¾×ÄÚ¼ubö[ÌZd¬¤‘ߟ4ݹ2Ò³6ö
-èI+€p‡Oȹ„¬c¿XTÙña;7Ϫù›kØ^ñOë+¾oìæ’BÚ¾ßRÛ¤†´c¨¹äf`>Fç²Û"²‡Œä<Ó[i»ÌX…Äœ/ع¸Ä*¡:a’03Ï«ÞÏQ+(ËØœ–Ý’ÑÐ…æ0— D‹©á–=éÎïLÔŸÅW¾K!y›ÜäöªI7÷Ô½—ýêžËÞ„ÃKý¿|qˤ[Œ•ôÑù z áCP©*y%bÄ·ÏÒˆGö–1U‚»±‚Íÿ²¿¤Ü÷Ü<[z˜\a?ô½Àýäï<ïR´ÿÃ9Öò½{¬é»˜[•ü?Åeö”–Fñª~è©©ž¤&3Ó]éôt'žŽÁž$Ú‰¦“H4î(î â
-²ï«¢¨@Ôĸo!*"( › QDEÙwÔ¤¦jþ”¹yº/÷á»÷ž{Îï(˜õúi,´õ%ä›e\ù½€’Ûåß#ú¾Þ˜žôob –ê3¼
-Ô³¸™Ïm³zwñ#VgHK†Åvð¥I#®4¢Ãž¬ rŽ;s¢Ú~ZÄôvɧãn!ÃÒ;´Æ¸–ÙÒRêÂzZOM.q­“ æ ÄÏ'k¤Jã4ºÂ¾Ðù4ªå´yå„·ýÈx/¡¢U¥ lTÒÄùÂׂ´u¨ï
-t…”…ÓãÛ$ƒþÝ­¡ÀOUt¸u
-hMÁ£x5\’KÅD
-JÈëÒÈ2šECqëØL|O$9×Ы¼Jìt ›cè+ÿkt¿4HbÀ“ÂNw@ÃC§@—‰éĤ÷iˆpšTçײ‘i«hôÇéE“WúV*bÀž«»ó\ëݽ
-Lþ¹÷Ÿ€’\V1ü”Òà«)ÎÔ2Z=rB™KŠy5 ˜r&‚Ö˜{ý`‘ÜpeW¤öEï"no@K®òª5À€ßÞýq\
-*ìLN¯u+Øm0»u‘m•4ÝóÌas'ÛzWq¥£éhûG`›Övi¿8êãÇ­TdØ@„o·ç{5­O/ö)íŸøL¿žÕ²·ÐõÄ£$À¢{#£1ÀövñôÕ±h:ac #lɉ´ã¡m¦%#jîÄ-â´MÀMÙx¬ ‘‚½°óû¯ìljÂDïpË°‡s<*zíÁ
-½Î2%¨h¦'£ú±‘„IÈLê؈ŽÓáSÐÊB
-NCR7@<ÿ@*
-Êèð¤š×~:Ó™éYî̲Ï"2·‡Kÿ®_³I:×é5æ©îlû&Ë-g!=Ê>´oS€M€ÿöÙ,q+©j üד%\õÈÃЪû‹/
->h¥ÔùýH-i†Ðë²¾Y¡AoÆw©ÎUrÑñ,2ól¾ù·ÀZg–KÚôÛñ2’2ÑzbzÞ¯ ”ÇîC[L¤{Wߧv¥ìlrdWÈÈÅ[溲+„òÄ®€zú…GÃj¶ ¾ðm‹Ïe½ùÎ÷¨|Ýpõ¿¬c ¿†ÕÜÖ0`–˜ed4nZos®òíïw?Jª¿ ¯b ÞÝ…®•ŽÜ´Mú¬d$´Ííu,t=÷®ö@Û Z3‚ÛtÄÕÁëÅ‹=ñdÒ2È»ü82–ÞçÓ‚úÞ"Ÿª÷…O‰‡ÕØ‚¸žT9ê[ë~XÇ= nò©]!7fäöD´”×
-öÙ±”
-~Óp?ð ú¤™Gº<{)£Ê>z°ÿ¶åÎÞxk†g­¿åpžS¢ ny¥Ô
-·”ZâyÏ;]è~`h¹½=Rûœ»>ÍÿÚ1Go?—‹©‡ï±yàíï{äXhx‹ÞÖ€ÌP³›æQYãHRË&:;¤M÷v†Š¯éú˯Û'š3زÈû´ž…tˉE– ä]—ŸÓ*}2z…k•QvºLøùˆÏñÊÈE'Ó¤\Û(ቒÛ
-±½îzâÚÄj†[~T2 ÿl–Üm sý먧>Yç³K3‡(¨¾O…Ý¿¦l†^ìú•yéÝö—‰ÝŽÂýEX†mªðû|ó/>%­þlRéXóùaÓ멸«ãùvÈ:·øÚëöì¯ Ã°Ÿ‚*FëÜ«»³”Â̘q@|ºF¯²ˆ‘w,ÂúX„Õ7”ìç‘’ _[F¡?ã\r¹L-ö­2A ŸRÑàQ ¾ä“•Mïòˆ ³—Þ
-®öÿ9褅ё²0»zz}ô¬À**Ç1^{Ë5[;¹M¬(hÇ ê^%6)eç
-r…k…Rä\Â=5KïÙgPÏÏ·øØ/~2 h)Û /nèëM›‡øA}?.²ÃŤmÃ’¨Y,:Svûãoú¾_Åm«iUÇ È‡G³Í²Qã_ºWÛ²âW7÷&a·/÷8Ô«CñLÌ@j¨1a±Ò£À•Ö½1 Á–8×p ·àÞÿS\§I¦{Àg¦™NãL3™i1m/³r+-˲IsEqÃÁYeäAV·Ì}ÉÌDEDQT\•EQÜêÓçü'çéÅýö~w]×÷7ñýžâqvu
->;Û†H°‰j †–¬€¥î¼ûÖaÔ³ Aê¥q>äÂ\knàá“p0×Ð꘠dØÁ}ý¾&Þ!'@¿gâxË]RStïË‚cÔBß<§Î"%'¯ b¢VúËBZóï® ÃÍBÂk!ÈHxfWÁÆ[„„·¦®‚뺖ܫ†÷E·uM°«úfXÀr/ü¡S”¯I‰‹Õ`ùÐ"¼­qJ¡m´òÍRþm!>öÜ8ím g¢¦Ì£°2Fžwª}¨åÐŽ@³€Y‚;Ä触Îô«BÊ‹s¦þòˆÅþŠ'†Vä½- îUµµmËÄr&RD‚þ@#À"Ïʨ+›CäDE'1®“x~¹÷u–ÇrË(9s­ð}K^˜}¤è¥±3ÿ¶¨6ïÆ|>ã@O¯œïL¿²2{äTV%oHËb6E¨×Þ)&fOÍ!ªÞMp³ïzµîÉR˧ƒYÑ2Œ}±>TýbSˆO<Ò
-nâU3hŒ1LÜÁ,—mUÔW®iÉÎIv¥WS;œ£W,Òñ'K šožPd‘”†oJð »aYZeèÂ$8Fy¸ŸàUq‰;2ÌÂõqFÒùqJÒ¯–1j¦˜ »3ÅËrŠ’-19e±³äþj_i趴굮5熊Ÿvq©ùøHßÐlþ5v™>”D,ô–F,w•EmÞÚW×äYÇjR­"zΩ±¥ï«©©Û£©C{‹ï,öæÝXê‚]½¼-§ålˆÈ©úämË
-Âœcäü#ð&ØT`3uÙ|z6ãÈ$hv©@£kjáZ
-¿ô7TÅÚ%ŒB»„u’S]bÄ2€KŸn(|Ð^ýŸ)~A쮂Çu+H5?ῳïrbŽµ¸=›º£*§:áÏÅõ©AßÍåTQ‹¶¤øDÛ0. ôUÂægÐ1e!†Æ’£Ô´ËhØÏ#ÄøûßY ž)Jîú§ÒGV!òéö>cOƒÍüfê½FÐ4b\Âò0.ûËbÛèÁ @µ Ãס›#Å¡#ðpŸ¡pixtÛæR²«œ
-fIe¯üì§?TÄ£Åÿ¹Ò“ꛦ!NM¼Æ#‹Å̹ó“R
-úÉ¡äÑÔí!f1%Ýelõ.wéN—Ù\¼<f½7+ÀÜ“`êκåÒTfîê(¥kôs§Ž\ê5¿¯r›¾¬q¾˜9¼}çÔÐK¼`_íÍ° ’º‚[>#ŸëÓqj|Z.Å5ÁBÚ¥„8ë`qý*b_Å,·‰ˆq¸ÎÑšt·‚M±#EFnË@ÃNÑ
-W匼 9³È­avÔä\›îÒ¢^û³•)^ &ãpŽI½X;Ñ{0%€¿:Ðv‹| M}`ÏÚ¥U¯tÍÙþÓì´´|D~œ ¢üú± ·Ü£¬±þPHzé'¥Æœ×6¥^”oÏËéñXÊbŽ |ÁêpåÓ 1Ý1ÉÂl+¸Õ»Jj"Î6Z5Û–qÍ:Œ?16wÍ Û“ Å>UF;¤„t—¬&kG:UALÛÁÆ®öU„m‰ÈÉv )iùcy¸UJÉ0Ð3'yð€I ûo%3ûÒ4·øÁ )ù¢¸rÙ<Xùz±¿<zZuy¢>󖘽¿Òˆ> p¢pû:Ñ8„z¦iÏ
-=YàòO–x-v°W6†a#ÈÈM1èp9:æØÄáìê‚CAÉq«hŸAм%ÇÆ-÷Áƒ&äßµ¿æ»àÁKC5 ÍåtlðÙ¥åÿ§¸ÌŸÒLò0^³©­™ÚÍ$©]7“Ìĉ“˜Ä˜õÈQjŒI4Æ#ÞTTDDN¹ÄŒ÷A"Q11
- r(7jPÀå•Mjvkÿ‘íù᭮ꪮî·ûûý<Ï“jº¯f4zgiºîW?õ5¥ŸVÜù³šUüXÒ}-™iÓýà
-»%j€È¿o
-%1 Ähi5þeò« –^ç×hÛ3Ä¢C«ùdÉèµ?‡~¸>\—0ÒüìÛŽ7¾—%ž³v—Þýbb½³Ä—%êë°–…Œ®
-(¥Ú¯o+Û™žk¡%+jâób¶Y`……qŽÃî¨Zò£6ìÕ
-0–hìG¦m½C$ú‡Ê–¼½tþÖâÁ”}þh‹Ù™d×d}²k¢5ìA;³BôÈýuâ}ù,ê÷/³ZV×wÕ\ÒEº´èÃà^çÚ@=×%ïN£ž–:ÿÛaqbfJ}@ÓV|²Éÿ-âè‹Ú8ä+ð¢fvðqGZ*ìh“_EEÞÀnm/ÑkµÃèT¯’Þt¼*á{gHùŸGª~Ú‡ýêjHÙ¨¼æ›&Ö ‚dœíiÌ£ÃyB¸'˜_ÃB‚ybÈħ†ÍPGÀÈn
-!ƒX°=dži8­'Vqï—Mq_x•2÷Ã~Õò«â¬u »JrÑž
-j6¶ßh:YàMØŽ·uw†’¿“¡Ó¿]¤åüE]ð+Ú
-ÿë{VÚP’ú{óÈÉÕ1s4f†˜g&Rí‰Wᙧ™‡ ¯ZF
-ãbë]ƒG–!ÅîŠDìcÖœZº¥'ˆqfâ‘#Z&2 Âä¹'«“wÿ½)Ø_íîõ.
-as×›c;Ä j¨ðÃE|¾÷ckÖ$!7NRyï»=½ˆãRÒJýZf³…ƒv d»@-m7§¸Çà niåu¿_¶«¦Öê†o¸>²`{*~û¶‚T°£ ½ÜžÅçxæp9ûbñ‘‘Û4ô˦!eØÜ/?±õÉOm¢®˜½SFQœ3l^RK­ö­°‘º.È=Cú#ŸdÚÑIö曫âÊË›£õ=Ó¸BÛ&Å:B{ì–w£œ”ë#¿Áù‰Vä~Ð1Õš¹1U—6Ðü@óìº=X‘@~ Ô¶3O)>X&`ƒ»„/ð(IåQ«¤ïH/ jøø€ô·ž‡­ó˜'F«w—k‘6Þø<Ïò,ð0®yÚ:Êʵð^Xºˆ÷–˜µÿTÒK/­tÃnij“ÞuœW øf˜0ûÛæ4SOù5ßTSÆú(<ÉÒ_ïù
-Ü9枥E¼ˆ¢œXùìc 0Л}Ë„›¬öÖþRkþÞ
-±¯„ZÂ+ÒéãUéø¼c
-•úYO0_žÀÞ¿´5ŽÍ^Ÿ"½Åç^ø<‚L9^ÐCzýHËd }*\©}¼9MÛÿjƒ„g›|±G ´õlà³cæ^ÙøÂ`g–˜¿5‰JÝW1›< "šqÿÄ3G‡Wù!-^„ZJ.Ú÷\¼(.¾"§½¼r¸ ‘rR©Z\ñ£oø
-ð±ñ9'|Þ à_ÐÐ%t+˜µ~ˆ¿;Ïkë™È}u{‘c™º=}ìšÀ¤ïÍ´?õL¶¾PrKœSíeŽ”ºY^õm5Tï‘cóB „¢ãevSPÅiÛ’# ÖßU¤oH˯ElZÄØ)tÊÑY[“°ΩªDëPÕÍ馬/­ ŸCf’ ªÓ¥Ôò¤Óõ¾OQKWODÇÁø¦Û2í}¯ãu¢‚«.9"ó«£sÐ2Ž}¶(Açø×zßG½Ê5 á˜Àe‚œšî ƒ:6.`pC&*l`¢vfIùžiò ¯‚^¾9†J±T_]ª¸¶,xvÉ:Pï”aÓçD8›¬í…ZRú£SŽÍ>Z¦ÖžZ¨¨S ±s(¡5‘0lK"æ®îcSw&f— žÙ:E °J(94vÔøViðÕIÂÓ÷´²+»ÓLøνDÍ®Œ@¤þ©~ž{qg¬ñ®OA/3NÒ‹‡éÕ×ß3ò.;?ârŽ–„”ÿS\ÞOiåkß¹wænîÎÝÍfÌd[61›ìÆuÓæjL‚¤ib°k;Šˆ r¨JW`ïbE£‘)ŠEzA4›ìæO¹'¿ïOç™yßç}>Ï‘– éšøVg­O ö‚<Ô­`a½*{ŽšïXò@eD úb Wô§‚ü`ãò’fÔH¼¸Y<•0 EÇ&Ö+¼ò&ˆGÞü, £V…””k™V²ÎiI!À¯O`^ý0…ÊýÏæù…&èù%RÞ%‹°òJè-½BÞ×poˆ—âœ%W•½¤ýEâK÷
-2+¼ÌöÊnÚK£zZ«g½«=a͆·è舑\ÕãËÃúŽšàf7ɯeŽLÖ’Xp°„ÏqΓæñöÊ€‚ƒ
-È?ëé(
-ˉEžtg¦¢ÔÞà#žß›Å½p-u¾tL£ïy×:`{ó¸gÖéÚ[{Ë|J< ô#`˜À<Uõפ™Ï{¿Û7›½y¬'#×0ÏZ[Îáö•WE©³JðOÀ=½qdäpâf7°ÑYn¯¼¾Á.LQv•|;Ž}ðy¸,=¨¡!¥,xúx{îÅÝBú®6P?ƧîjŽA_h8×*íõá: ¥"o:ç:KŽÀüŽèY„ãMf›{± ²3X{EÇxñõdÛ¿55f
-®>¾‘ò…y¼òÑAi©žìIÊÒõâŠkøíñáiçj³>ísüZrà —ö;poy¬÷6.ÿã^w÷‡]"êÒr讞µ»€Éõà.'bàR¢×sèI›ö·|Ú£â“6
-Þoõ
-":.5(ê@F¢½#V„”m)ú¡g— rö]㛆T›yÛÚßð»_rÕ9Ræ™ÅdìÏrä=ÅW§‰¿ÜFAOMLÒ™•‚Ž›:àà­ÎiHð(Ø3¢`fD7ÙÄ3‹x:iæsNÍ<fâó¿,”æÈ}]W³q’ô|…Qÿ›u¬ *çÔü1…ßè®ÊÒ²+ïÚÄ ËJ[îGÖ‰%&ÐKÃ$ØÅYÊïƒë@퉾OÑôP*R‰G†}ì• \ËøŸ(ß]"ê‘·Öè-GF8¦§6‡ÕÈÇõ&h@ÑZ
-õĵ„.ò¬¢söeÄ¢e.üú½ð×0}Z[N…{7舰‘CöjØm
-FOÃj5Žb³w¤à Lý/ø¨è5‡Ë„× æs™é\ÀÂÜ
-6J&ÂåR« ?ìÌ úM-ãyßm çýdŸC<Ò UC C5Oƒ
-\ñ'§wg•P nºåUvã’VñlÒJ#&̘²€ªòŽ´ëΗR ã+×âÙ{·wOÚY`‘t¾ði¹]gÖaåßVÑÔ§]ùOG'"ò®-Ï>Õt7°J¯
-É8Í5Ÿtbx›tô¯œ˜bï[b¾mñKÂÄ;Hë#ÇHeªs²ú†_†aiN³î‡„ؽQ£MnÅ
-&ìûÑÖÌoxUiÿf½þíŸ#¨Œs‹ÄÒƒ·ä€²³8ª§Ô…ßQ›OL|AÂ*’Ķ…#Q›˜´p˜>9©4¦cv‚ýƒqfeÓ›<ò¾’Ór¸ÚƒvN°òåì†k} OÏI;*~ ¯ðÑîiÄ1\•jç§ØFª®í-´ClS˜L÷"šØdâ«@q@F‡‡5LdP…Ï (Ûr=k(¨F”E-(ºè^jÌ:³2h^éWá^ú×ÑC­°¸@þe¥aþÚ¦bÞo3ðÇ[L¼^ó™ŸÃ:>ýhS$lðËXDÒQta¬õeŠ†ßpc_ô“¸!÷¢u æZ¢TØÇÑ÷v§°Y“øW—Öº *È5>°=Ý]8 ”¤lˆš²ý*>%¨ëBÇ·ÈMÇ&b}Ôˆ÷²£(¨ïB L\ÌÒ7ßæ÷%@^NXßÆÌoFcæ¾Á}pþ¶äó"Ý4Ú|×!!V á ßË8Å׃+ÌjŸmèÉOQ³r.X^ßÜ‘  ³dXŠœ_qûì|^EG©u‘nA¤ï¯áŸGÞÑ›ÀžÁŠmõMœºÄªˆ…MóªY­¾u1/º9.;µ÷ô‡õ ¨õ&¶8´˜‰æP¿ãúþñ°šÑâS ‹(ˆ~ :Õ>‹ƒz×i +Wt "ÖZçÛaa#_pìN… 쎑Môªé/è¸EÐÞ ù7EÂUW]X'äÅÂþSS¯(¤aawVè%v)¾³ØU|°J.3·< •ßþêMË£ï"r{HK(sË0Ïvæš2Í#ðkn©|OÆÇ;¤ÝÍ _R“–Þ>ÿéµ_|¨BåîË[
-sµÿ§¸¼¾ÒL×(>kÎY§f&“6f¥—‰&1'šfâXcÅØEQ0J¥}ˆiŠP4{/Š(ˆ)‚±‚ ½8ÎäÌœùSÎçÅsñÞ¼ÏÚÏÞ¿}¢
-.°Ác†Í=Ó^ƒPäP1?‚o›Á%HÉeWñ]¯œŠ lŠ\ëí”cµÀÐSó`¸.ío=U¯¿]i-‹j†%ü“žûcou²g…Rì^òܫ令.u{ú\+L¹¦`¾»°3€x¾/¡)»JomËïÙF0ïÀž›ÔP*~·Ò°¿áKˆç
-úôW«höK{g@ŽIñHªãŠ†ì°ž„@Ï´ËIù†~ÄÃ#1îXn´Ÿ°oÈÌkˆ¤è ‚ª´‹Æ®Úûû#è§öBÖ()å»q|ú•aJ¶S҆ݙ@¿\j)º±Ö¶LÞ©zq¯M“Í0—º[p¬¢Ãrr‘GÅ%‡õ<ö™©½3b¤5tx¯¦ é^§@=jf}d»g>`|òè;8;óxÈîüÇ×6Í«
-6†™Ÿ ù÷Ô¢†ÔÃÙÖ*K}œȸ<„zwYF}S×–uýh™Ò1Å`eöê¢c–‹ iDÝ^m+- æ¼OMƒû6(ðȇéÞ¢£¬2 wœUt¿—róÌ&š ™ûå!PË'k”²Ý‰qö…†d·²©d#ÒJâùye{ ²M­ ̧ŒµƒãPqЖ)rê˜Zéu¿-e l3¤¯†ßêÓu´øô\rÀÔÙíÙ
-?6…£öUV£ìQ'Ú’]Ù ?Tr0N9ü[B˜ßŸ÷d¬êÝ,dXó‡uAË Îoü, o {|:.Î
-öÅ/rBÞ…|¬
-DACG«e†œe›¡ƒùM.=Y¥Á‹¤Ì¡†W+ܪGÒfè]pW1¥©ßÑóß~¿ÙÎqI
-B.Øø¿Y„ÿZ¨è°_ìQâs‚ ¿ûÖšávIc¶mœ˜p8Ý\
-qKéÝ1*äÉÎ,®lwRb£$['H)»ó@ö‘ŒQúe’”ì\":ÔÊåÔ I;ìÍÉz—È»!y@­‚>YíT1áðÞ–G/lŒ‘3ÕÄD§šÏ³-²áRâNoMÆý5‰ÿÞ…ÿä•c³ëDØ0%7*ýÉõ¿H»+²Â&+dèàÉÉ%‡ ÏÙ—«ßÙ¥5é~ ‡Úìh7Oá dœ¢«[#øÄ­@´Öö.÷9'©ATsqÆyFÞ¾”‹<QÓðûË ¥!S[oÄ<¨ýº#˜[èNã·°Én=é\£•éG0oÉ/þå[°KìJ‡˜
-9šÂ¿ý2€Ž1õ"îlôbcÆØð(dzô_gi…ÏŽHYJ~ñ EkÁeëpmôÞTM¬[†NŠh¸8Ÿ¦“®™ÂçÖçÝþ»µUäÓNÜÚÑÕñÓô©¥6¶2Ϲcw‰U6ÉGÅóªR®šúë Jfµk¾1ëhšžc$½ÞìÁ=]aÕÞPµ ¢í³Œrc&^ß]vãPŒM´MÖÆÛÆ/íbdääC .}{§àÃ2õqÊÖ;€÷‡ÓؤˆžZçU21®ÅfôÙ 8Ûl¡»V‰û&!¸Þó­’Kþk`Sþ´ >Ÿm‚þ¾N«Ú›B¾uHpù{ÒÆü^Rú 1»üÑÎ%Õ:ˆz¢åEÉY9W@Yü ¨~{q–sÇÔ‹Š› Ý…Æßüfg¨69°zÞa™G øôíLÜÁ"öxþâHúñ…{…U½=Y_°zãÁ<!3b “NTBÄHÇœYšq¿Xx÷:!ϹRŸþ«‘×Òñù§[ÝÃç÷Ô±ðAuìXR—d¬x¤lƒ\ÿ2‰O³LSʦ؅Ѫnhì‘(žk.Ž£—<
-jÑÚ:0‰›=j~µo†WÔ4ÔÕ"ÚF/5y½HÜ• K–ZÑÑTh¨¡)ÿÞœ¸è¾FXpC/FܲõPV¸ç¸èm%)Í9ELßgp)™Û
- o}ÈQË£X𸫦Ž²¬ã•öñ½YféºçPàRõ DÐH+ ÈEûÓôâÅ.Ôc‡œ ?6µ}
- ¨)à(Õ‹sa¼<g’¦]_|ÿúÚ†¼"æPËÅ-¼k›ëÂA6FÈoOA½üÏÉkúËÉküÏ&ºL.ñëðKï‘Ñõùq¡ôì˜ÇG&öÓ‚€~¬á¢ýJ
-2XÆß$îÍž’Ue~‡Œp ÞiÜ£¢¼õÎRò¼³Ì:Ÿ†‰R 3¯ØPÉŸŒBÈUÞ|–[O…Xè/V‰ìÐÀÃÌ­ NV‚Šõéê‘›àÆ'ÅEwÔYWeؤkƒä´[ö!L"ÈZùø«Ë)‘aß1à/NA]ɮYlòž
-“èÓàn9XH[“”ÌÝVqÐØ"ñë4ÇX]ºOK+s}ÄAŒÍÙ7±/.ZK£ZIÙá¹±÷Ï~ ¾ !fž¬I8£c¦Ÿ×±¡¡Ã¸¸sÝhȵ¶êÄ0mcáC•ñòàê?PÉçÓ ÜÚ81yk¢&Þob`¶g)ù+#˜ßW'jý oÿëlhß!¤{fùÔãåÖþÀJÛè'{ûìé–¨÷³E>3jg¬úé¶ûÊÐQµ.'¤î“Ó·k^:åÕÇ@yÜ懒ßõ $»œfaõ“)n^øfœqw†ùöÒ!í¼‚tvšštn©9'l{
-?­H¤E>ýØÔÈ;1‹%cSý‘ž]åS1 ÝSì"s;꡹¥6Z%¨z,C§_V§\j.~u~ÿúò|SáÝý±º¯
-(ÚÇe;&ð™û^w®™ý†ËÃ/éE ã÷Ö½öiZ§:VvÒÔ2ÍÔÈ‘9Qq
-3n.v!ƒ·GÉ™GV!cà“=“ æÈ*k8œ3|“dðî$:Ö¥‚/õ
-Ò a5<hèb* È¡‹¬$ÂÑS“>ÝML”¡Áw>b ÁÛjNÍRweø´¼<xN}³ÖíŒãNgø„ãÙ&™Û$$4ã2ýtòÒ7?øÔŸ.ål ?›'äœÚ‰€ˬíèHNÑ;¿~Z^Ä¡]Üî BÖ»+BíˆG:>øFüÅZÆã JR¬ß¾žQ6"£I¾õ’Êwô”­¤€nª˜¯nÍ´¼ pö¡bvuœ:¯‘O`•ÆÜ׈ÀÑ¿W$M?—D ç6÷ÐL‡o©jç…áfQf ÏHƒ àÑýôü0ŸCØÖÒà^ñƒk¨:ÕÔ\ôZÅȸk–æÿ1ÛQÚÓó©Z92q©MøkEÒr¾$äûô„L×:fMYq8ÃÁ÷_":)|°©$¥y'y[c4¨kž·3)Ä:)L-èç #kœ{¯ {ÉØÿp¶¹üÅú )˜«Ü5Á*šïÁ½oB%øcß?½Ð]—üdW_]W•Ey&k²¿OsÉnƒXä›oì8[•´ýÚ|üß&WàDü lü¹Üiþ±,ë:qˆ$Gãxž^¶§Ã%7RK|&vq›áÕ2л€Y„Ðû½è¸Kí¥ÿž`¤ÜôN0‹Lò’À~Ò‡+Äë J4€¹2DȾg—V‡OÐsoXy97œŠÂGË=È=ô¤’ò×GY›Ãµ «/Í°¿¦›áa®/E‘‡F"ôtA"?[j~¤Ûk¬Gxõ|”Ï(eXeÜm}ñ–ŠšæVR?8
-7M¸§ØÅS@—±wã“|^õ¡G<ž¯'œÙ<Ë(;še¢º«^™šËƒ×G(°ó•¦Ám=«xc¸6qm€”â짤$eχê2ïØäÅ¡{:6²…žÿgUZ„¿±_è™ä ²Ì[:áûÀ©Æ´Èo=yoO¦…ô“Y¹ÌcäTÓJÞÜæfÇüZKm@~(9.eUÔÒ§âGf øŽY’´¡a‘` ÛÔÜÄ'>³Tq`eaí­Ð QZâuIaØÅ6Dø…åèÓ# åÖ
-0ùqÏ.‹+“ÂO¬lú?«ÅÙ<›àA†¯ ÀïNáRΗdmÛ>y¬úÌ"ƒ=;_Kf¸Õûf6Ò£¢f»•Ädg/êùJåË5+‡ {ëGÊzqyöSy²ðÓueuÚÒçÒXkkqpo]æ5!,ꢚ›zϫƤíèIY.5æí¥è[ŠŽ`gC§K“
-ähV$;[ll>´I¸îqF¡A^jT”…Ú?c^ï›EÒsGëàÉœ˜ë3s*¼“\”[ÍEm¨˜Ï8±>!¬Ôȱo,
-jñÁt{Ÿó+!q„’u­·*ù¿£tHÀB{iؾŸüsùê(†I‰½ÚAÈxujeS~~kàmëI™‡V*êl®žrbç“vMBŠ[Ë«ÔÊP/ûð™¿]-êÓENÝ®™’³¡Â¿uTÇx”Ø×€¥ÎõQA$Hü%JnÔuÇP5bgŠ Ó4$ùDé¶ÿ3\÷ïhïÀwíÌÎ\ç\g7¶kóu¶ÙÎ9f;¶9Úš™9Fn‡“›"IEEèV·*•äfF%„ÖH*‰(¥$r3l¶æûùýýÃëz_¯›Ç³ñ‡m
-àwI¹ÿì‘!SÏÌôšõˆ'–ö÷qÑ»kòº'? Ö&_Ò’³щJãóžÆ\€ƒb/EôÄúïv&ᇃEüfe5ê‰e~"Å%¯ŒŸ•"ã©¥×eؼkFFÉ- © fš½íÔý¡k-»œ“˜Îê´hvaJÔ¢ñØ (KäBŸF5g%D÷T¿úÍÀÊ‹Y“aSÄ쀦6{ñæÔʨ?¶Š9fØ»•‘ùæâ€ÿfc„
-R¡šQü?÷09c¾«9}Š‡þg±™èQŸ‡>#Ôì˜HE!3÷Í%’/óh »4<ÇŇMäŠc›tîtž8xÌÐ¥dÏÂ@†·~î×ÒaÛŸ¥žQJ¦gœ
-ä†[ILhxUûF.: ôäžE@Þ_ì”ìÎsZwfièm=©xCYÚ33P‘E>å Á¾Ø˜ÄcGõÐ&âîÎ ÈG&6Ö,„='^3¶•Ý\—£íHE'ËüÖUu Ä®Àwg•>-%wož ™óÝjüëmz¸ † ôŠ3‡P|âðömLÂwŸHöÍ'ý
-ÜŽ“UžÀ?ÃÄûfxu[fI@Ï„}õv}Þ[pŽ"ѹ«gò|UúéÜ!äÚ̈MÌ÷L²Š¶µ<`op«ý¨„Õ~øƒ•Ñv¤¥—ðd¾ý`†¿µÔY~Û=\÷ts‚±·€—ºð 냰5y_íÚ ;Ë;FË^鯊·÷”Åz‡^[xM åÑÒ7ÕDÈ™³£ëËJGÇÁ’¸mßÊoÙ™m-, è‡Ëñ¡­g0²$æ§9UA§Ê3B8ûP›%°85ã¿›rJõ nEN´œø_¼¡­âþ
-Oq©ðÐu%ú­³öʉ© ˆ­1l¦±½ ¶ýâ’GÉ~¿øR´ÜWŸ'¼æAâô¬´ëCÅ 'K¸¼ˆ‰ç–W
-Ï1kŽ—™MÁYîØÞ.8[
-Nl|Ú‘Kñ[áG6à‹C(<_K8ùœ³%:bbT5´ü`ž\ƒ-`‹uÿ`Ž›h}gé%‚6U¬’YÓ‹M%6ikýÔ=‚M¶ÉP öu‰îQ¥CÞs}bemOµUnªp ÏPM‚_…OÙÑ5gˆ9«ã¨$›“|d ÂÀLM¼ú°Y@ŒXŒcG÷Щ³wìÔ٭صÒÑ~}$db×xÕô¢À$bÁâdÄì+}u9—M<̃¡6èÒ‡–Ç(ïoY¥xдÿÊÒM
-H‰U÷7Š~zúžÞWÏmïépµ÷v*ÚâQJkïª Q!C"CöŽL´jÅ–ÑX™$F!F¨º´úÆýSž÷ûwÎwÎ7›’d¤âߦ˜ '†jƸ
-_ôoppGƒ-ÜÓ“jN–9ô3‡w¾Êÿpó;¾;ùÂS;ý‡³½ýÛšpà_Bɾ >wðEÿq >œ¨ ë#ðd÷
-O6‹7¬ªn/ˆ+nû§1…&2¸ à­¢Îe9>×2†ÏÜ[]èòiô‹íãØÉŠ@|baµ ˜Ò]#àÕaaíýíIhMF)·K0i&~ýïT’gŒTèF¥™ÄU›2f펶›·=˨ÝU£2V€÷ì}oîlJöç¨ïó¸kâÿŒ/ùnp¿,Rê·T¤r÷&Í>€ˆß”ã³öô´º#ôÅÒ!òÌ2êvtêAÌÞQ± ·iQ.
-&Î F§8úyÎn|ªµ£ã"+ðàfñûRFí}neò¦èúÿ}[ äoÌ0ë|ja뚺›¡$fö K®ë¸ïŽÍÔ&·¢)qe¼á‰sïQÀ_íihõévÃÐǦxM„_Ez¿§e¬Õ=2wUÝGg†J`YWdØ‚p{4Á&g‚•áIw®ÿåcCvÄîdk­«êUPpK…K¼Â<
-é…g‡iy°¨¥~N>47ñR{í‹ÇA}凋ÃñIÁÏí«nëÛ î‚Ä\2uÖ&%ðLDéó0 á¯ß-̶33½åÄH‡nM!³Gq¯ÃùobÿÖQâè®y>ÙJlN¿:ͨH92³ÑZ>fck•D Ã_]fWÆ„LR2oºGÀ‰4`Ü/~eÚ—xðÛšxàÌÁ¢š°Àmmkñb_}ÔgJI˜[ÙVÖJ¿]wç²k
-ª`é¾ñº¨-)øéæ(0j ùY¨øíÃÐ9~ΣýE2„P•p_ÍÔÕ˜õÍ"hÿnuœY¼#3£u߈îj›^þéa²Ï\l!¥>õ¢<þñŽ–J9sôjO]=ºÿnwªÿÜâIN­­àMùÛ¨]6€)Ž•Sªžyè¢MiËë­IláÁx¼€ü°’!~ ¡tG׎ô©¹Ð•rv@+@íéÚYjÕÆ(<ÑÖ]óPÅ~9Ž)ºêìmJÜRq =OhÂñzbf"N­,ÜÙ
-‡yhæ×gYµv°©3=s½ìÊN¸OßÛ4vpԔ꠪­â«‰ٟÖu„Êàœà”r–{à1óÌêƒMé?ÉP¹WuÔ¼k«Ÿ
-MÃmiS¢æ‡jACô¶’Pné®2M+ŽÐsª-u·¦8GhåŽ nÕâ°°0,¬pÈèeÇ&ñlµëQË×”¸"ï4ù­_ÍnÚÖó ~£ˆ|Á_m“À’ürXêÙ2µÅ1‰²÷Ößw#“•4À¯˜’ëFøžo–Ù0ÓÕ /¹©צïÌ@6IÓ[ì¹s•º6F.²‘
-·uŒ÷û&&l]+ÚVêÏœ<ѱ…°k2ÈSçEÿ7”ˆW›3´j‹”_=#F'ÊiuÑ;jØÕ]w×ÕúÝÔ^|ÍÈ+»iî'¬ô4$z§ˆ —ª׋«¼Û Ëùýâ£j¾^än]ŽxЫÿGq™=µu_qü©}I¦Óédâz2“i&MMë8ÅfL2®íØØ8`lÌ.°dH Іt%]]-W»X,vÄb$´/èjmhßÂ@ˆÝÉô_éõÛyù=œóýïç{ò6fo\?ùì4 OÂRØ»E~NzÙøÙàý†ëU›ù¿´xþ÷›ù{hzeî£ð|×ßBó Þ5Fg÷ÝþñÍÛ×*>@ù!-Y»sfò&ü£ð\Ûuýþgg>­ä—ò£{üAß­9gƒF>ysÞÄéAµor‰û¿1òú¾¶‹‡rzvh—7°Êê»n•ànÕ>åÄà3{äýyÚÀîIÛ@Þ5§Ê¹5+Ë’Ô£Õû۳qÃ2œÒsºüÒ.”¥¸›¹ÝáÆ’qòIbOðz?ôíÜDëŸCs„ÛÉõéŸ#‹øÅVzoÔ÷‰U·€ž0 ñG»Üî¢[–ý♢ * ÌÞŒÚÝk*˜)Oênj_ÁE늩-Q#£M'üas¦íÚ™)›A\ÙÊÃÕ¼ ù4$â•|2èPÏÇ9”øæ÷!!÷2&Q\Æ`ùeD(.»¸Ãy»;c`w¦u`_Æ"$„–§ïƵܹ=å­ÝrÌ×G‹ Ç[÷²Î/–pe'ˆ×ÃC7¬RÜ­D­ûôŠ“O<óÐúþ#c.ðϲֱ{ŸzH;4óÞ ^OxkúÁyXÀ¯ù¸ÓçaîÔÕ@zd¾);iu?{ø"(`%6)?åôÔ§e;µ#¦½Ö’ÌZ€þSv‚§³&NwÁÎ+»e˜K›E„ŒE0š4‚¸¼$Ö½<ÒÕ¡Xtð“˜Pò«çª©¸€Á¢G
-&l¼×9+³3·7ÙRuлªˆð¨ˆ?ø¤¦¢UJK¡¡ø»5¥ãtFwY¿ø78Owø}·BÑq{yêݤqŽ—4i„Y³ÍB 6¶Íxr¬g¶šÉY@Ì; XE;«ý+ã¥}¾äpõ ˆ—CÄÔà®7ñ1%„O,# ~•@¹”31ú fFWÅ`s6V_Ò8ÓÞ~IÚ„„‚[.; «Ö3Np,kãà)6.²¥¢_© í.0ƒ:ù¨[K»¿¯iˆmÓÈ"òåq!ü>Hî­Y'Z+jOÑʎ行o§v“ÿqªÉÝ£ðRe\bû½]øü/zú£ÏõôÖkUTOÔ; ) ô&e’ÒŽÍòéÊ’¼&¥÷Øã =¼Lk¯Lý˜Úãô†¶¡Wþ5°;®‡5?úÖÁêMêY¯
-fheÌhŧ”'íðä±C™¸níÛ±ÀÎ?¸5OLèá‘€jò~FËè¨X9Ã%‡`¿Í{9Ëèÿ+<üìOÁEÖ«¬è
-¯ànì+[¿Œ®õþ£`ã ¥ìrVÆ¥}
-IÁ#œÎÙ„ü¾ˆšw‰&³6[´Ó_ä „{YÛT{Þ ŽûvY‚Éö댎¦?TL‚Ѫ]J/Z£8Q@¸„”MÚD„"—ÕBre%(d¢láU½üÉ„7V÷ð)g>!£æPÒfÖËÃÕéæÔ.„Ma¢[MøΣÄ5¼ÅÞB³ö­øÖpSÖHi+#<|`m¢%°L|\÷CŒ’À…WGV:þ~îÇþtq0úì4PËÙåc»FíÝâŽvx—Ñ9ï1åæyâTÝ”UdüI ¡öœØÃ57€=\!~Ÿ5ОŸbÝÃ诺X˜3²Ï*XfúŽÖ(Í%'8~r¤XÊ (ë€éµ€böü@¡ùˆúwÕÁÈ™i/³Þ›”Y:QòÎ.ù7':\KØ{ù}1ï§Jn€˜³Í¼.:y„¼CÆv*&n{g§[*.•<i`ãïÀΔ‰¸˜„IDNØÔ¢cç‚"j€ñv5÷á‘is5l\W§¬b"ª&kb” é4
-¿·ê”±¢z°W¯˜¸a_˜¾{¸Íä,rºg‰Þ|°>ó8þ•ƒ¿<ÈʘSt‹QýÌ‹È.£%k—Ü*iQ‰rû
-°°/šª¸ fýP *x1ßæÌS£’ôo3LjŽèä¤À*Ô–6@ƒõ
-bKJ7ÚßkŒ¢·UÆ*ezµ¼î.æ‹„ÍhNˆ­O4§u”ûk„Fd÷zcÜ©¹¸øêÏÉ=ðul‡‹ÍšèÄ‹ ›xáQÏaYÆÓ“Vºç³¢<²¸‘rj–bV9-å9Ì}„¸è ýŸãòúmë<ãðEÑ»^´EÑ EàÀE
-sw‡yuøÔ ¾+Û鯈÷€Ý”H0Î %ï Rã 'ÕŸÅ@r5pø}#Æ\é¤ùô³ }¶‰m~y‘¯óêÀ¿pMô*¯tÖ1þ&nf=*ÙáÕ°z¯Ïý"© <¹LBÜaœKí`œÕF›¾ ø¦ØÖ+äQ3÷°5ñÑÂß~÷ó‘E½*èñQVíiF!fÑÅyž5qŸ&ԼɌ^¬ÏþRºüðfÃpÆD;L ™#bïÒBö™—·\²ˆßdM’×Q-s"._þ¬îÙyØÀŽæ^p¥-ÐRÁ¥efòmÜÁzÚÀ$´ŠWͯ弊O°™Òï|sjå¬VÝjaÞí4… (%*—<9·*i=l¹Žá:¦Ë®½©slñÎû}ý2 ì]ó}ÕE.¢ÜwuûÑô™ƒ=×pÖÆ æÊ ÆXnuÜΚ®úx ¿Œ]41deK7ú~öÊE„·ßóiÝ¸Ý kE;c*G°ù *_eæ«<Ÿ3̲v‘ƒ—í¸Ûɤu„Tð'¼Ù“¤M¾uR!QiûùÛ¸žt7.Yü´Ñæ £î¤¿ŠÞÞÈë6o_áý° Ñö2V+"ÜoÀ•¦Ÿ>[óïuˆn³$¢#ý#¤&Ý­bJAÚjääœÐr姬w}0¹âÓÀ5ŸAã—òsæ~[tB‡½"bé3\‘cãŠÔÚÍò9DfçJn`¡—†8—EæÎ0ð¦Føÿ±ª18Úq«ä=VùôšÅ©fòVß‹è” áá ÇàËnLmf•ÖQ^f!e3É!õò mXDl£’:>®+cƒ"À®ûÈjÞýgÍ$ŸQÀx+1g"z̺‡[t‰·’¼ýó(—Tòˆö9±ú²¬
- Jro;#C›Iª`‡/ÎÂàn+#× ˆ^þÏ<F'~0?Hí¿çÙÔq±õq5Vr>­y™küÜ6Äaå(Ïc×1ö›œ6Q­ ËlÆõWÑÉ
-ðêËÙŸYYk·ûQ Ú‹ê,è±+ç@HaÔ@òj !£~-ë´HÜjãª]ªŸê¼û)[Ì–°ú>½Ÿk:Pžù}q“ñjçSå<pÛF5|çÛcJ훺 Úù€óy?–âE!<ÄehÂ$_ )Ló¥y)®‘ÎT}à벋òÝ9ÆxÝAü6Ñë¬!cRàK ¤ßÊê€Y¼u¿tÂÞ¨y$”*&¢4#0ï=.3ÿ§"÷ÛëEvŸ_—„ÊŸþ¨WHS'àK·˜ò9J§}Õ«–OýJ^7!“·‚Ü
-L'ÔôÉê çe“`Ý ˜ôy^Ïxˆ(S+ýy?ó›ˆ^ó ·Ê.9e/•ÝÜÅó°h÷<ÈYiøöŸT<À\Â&_ó™m‹ }Ð*çb¨vïÓ-ûQˆéÜ\Æ*Ç_#dág ƒ†\ó+Ø͘r–€˜gÞG9«Ý °×%\¢•
-‚5F¦édf³3›½Ø¿g½}/ÎÝû<çdš¸ŽrŸÌ×ë_\îÝ\R·uvŠcÁC0ð5BÖj±y2¶³v,†BÝ%¢Ì\yÕ ÞösWiüä[änÁ¦€I;`׺GMºMšA»M“ <U"–#kž·VÉŽe‚@=›aË$5O?"7O?,«¿žšÖŒ@ÅW†`rº¢¸ýú\ëÜ&i²P.|Lü?»Ô¶Ÿ{ôÎÃ>Ù.×cµ|âØrÕ³†<‡ÎÑíPª±Û0Dùä…U+Ë×`è3ÏÉ à©Å Ù0õù@eI¤™:R~j²Í]øU í*áÿ/^5—óÅÑ“÷cu´ñ? ¦O[Î6»À©‚š-Ri‰U¤Ál™}KXzìÓËö¬Ê^£h¾˜ÛÓsÇ4ÅÊ
-* œ‚ÂŽsÏÊ0§Ëê™ï+Ðì±y¶ù³Ûz )>±ˆ‚ËvɆ]7¾±¬wkê\ʹBN7*=m´ßË›„Sýü1KUµ$u㦦<R3óisÝøÓÚÊáû­jtn(UJ“äy”ìö
-,>^SŠ¿]yÛ×MVש‹Vè‘Ý&ŽÛ¸BWHüD×Ù áÚ%lo!±žÚ?êŒ%t.ÞjÄðð3a‰I% ùiQx[3ãg˜—¤áIJ0ÔäSÍœ­-Î\nˆxŸW˜'>nǶ–:î½ÞÚ®’[1*¥·C&t¢g™¦Cñ–1Ä)ên~1ÜÎNïh ¿ÀÕÅ°íÑŒRœQ:›k/í‹FVÐnSÿ8„¬\yÉ?GâùÿK¿N„¢¿O!ï¿>ªý—{jËé$Û[·@N³Cp»V¨(²k,½v£cÒ$ƒª¬²ÅrŸq¾Þgà×yçÙÿþ 
-ü:Z‚¿¤—[ [¶JÓ¹@²ô…L›ÞÎì4G Á1”>í]\íäõŠÒ¡ÈÆú¹[¸vøFÊ›ðøYCÈ›rDk=õ¦pb.Ñ©×: ÚÇU³yÃpYí;ª%ÓÎoésWö«yzî¯**sïÅÄ°+Iq!§FÝOiƒÆèÞn]¡Mñت½ƒkUE$£ˆàé³PQ΢øã¡ÅƒÞ÷é2©>º%ƒÎù‘-,¶,oˆùšÓNªà,wŒ}ú²kx5‹_ˆÄ·io:¬QMxm8êÍ"Ù
-G—Òn´Ì7k›taùeDRZÈ)f"r+ˆ˜¤n€DÑAq5²p%–Ë0§›—à§b±f×ÂÃîYØ5ëݸJ³OÊÏÚ§¥‡åÃt?ß±øˆ4`éð=(G3CÓR[Ñ
-AJ¼Ê¦€ßãÛ@x8 ‘ÕrŸ5º¬š3)•USˈ3É ¤ï»KŠ_çõ¾Ÿã¹¤ï‚N·Úë èìË;½éƒ
-©ÁHBó+8 Õ~¿b=Jăô¬1ð"›Žx‘3ÖA’Þ×ÊWš×aÓÈ™žûuоO#öXåD­ÉØ: í×éG±-CïoãúQè&Õµ´b6¸û„ž=ï…å<Dz> Ä¥ ‚g¨Q[%AdWÊBRógÂsг·F®¾ª“ªjNו ŸÖ$ü-¯fV2#Åã9rf涊(ŒÝ¤úvcD6šw UDV7ȯ¥¤u‚ŒÌþ²*^X FŠ¸_nD倸Äv’;îÅ9ôÛ´IW™Ë°£üäs®Ÿ­ªä¾Å‡ÍHÊ6kxª 2G÷wï ÿªgb'þÝønB×;ß]^^T! ¯Â(®eL <~ RQd”Abk9yC!ÜIRÇf§¬Ïe_xCN¬A Ùñ"ù~Mú­ôŠùºŠ?H-d\OÍŸ@ k¥!•uÒЬBjèCdâUÞ8¢ìjË.aƒÇÉDVÂ@¼%­†cz6å~ÈSC>ÂƲfôÛ®Êúljú½/à²È §,Žü?*<ɦ0·ÿÏP™x%™
-qPI·k–{ZUêuŒD³‡¢pן᩻y#ÓÛwÞ–n´ u?–’aÅUô´ÒÚ9ø¬&ص›µðúéÅZå*¦›š»´Ðb
-†ßiÁY d­c{Z¢ß}ÇR4Oñ·ž ‘ý·]ÒË5-sô ™oá—®—ÂòJFÏyã¥!ÑÒkt’é¥S·0‘8™‡QùÔ6Àn_÷²:€ð­Ïã™ÔÚ6‰|U²‰Æó’(`öiénu»ìüEiùÅH²wþbÆy¹©É(©c\ªkâßĺò˜³ÖÇ^­¸rËÃkþd¶Æ¸#GÙônH‚9EÍN«¶]ú­>7RFeGKHÌåÂ.œ7³ Áºü¸¡¶‘‘Žè§·ô‰~ê7ÞAO¹³ ÔP—|©—,¿…Œ é4®àEß·m
-x¯yÐtëaéRÅ+2¼±[–@k3[†Uù“sþ2¾|©ÉîHPÖ =ñ0.ÿº%áÿ}Oi_ 똀?.×yv8Bã†#
-V³ØÎÇl¡çéÃUÐ?î(èTåµ¢÷;û…¹d~´š ˆÕ~,VIÞ:ÐgŽƒÒ*hœ:ŒkÅûAv÷AˆÑ½ ·­ùù}n­¼Ùjr¡Mö…!‘¨¢ ÜEd~¸¬ gû¥¦]ýçüjöÙE8xékZF=J÷S=ÆvE]½‹a¯öÎ
-Òú&åRc¿ÇçÈGål"0,‚ /
-rN‘j$žwµ{H“èåta%¥dŽ¬FX)ñˆ±ámÝÖ¢*Âì—y':jÃÃDíd¤-H7³æWânÝP0àãný°W¥xáR»:mQCƒ^S°hö§l–=ðů&ýcY3ÿdžRó=É#|ò2:¹á³¤Xô-%ø°·ÀëOy¥èE·ÒÎÕGƒAµÛã#ØŒæ6@'oˆyäèD@OJúäý¨Mv’R±O
-æo©ù¹³M™øß;RÉ?“3¨]kþŽaàÁ—r`¶ü5(Æî,ª(«>^Ï^TAÿÑrV@)Ƨ™¼ï–OþŸ¡2ûJûÀâøӼ͜>tÎÌIÛÓd’Æé´M&1™cVQbÜ%nDP‘}ßA(¢I Ê&²(ëYÂ"Êê*;*±§Étþ“áùÞs¾÷ûù~¿×.àj,ò¹.@»<î5ðº?j©q“TtêPX
-®ny›ÐFlböô“O"&ÞHr{ŘØZчŒbœG+€8×x]VÅ\ßÚûˆlN  4÷©TÕM×|ÊPÿHcHþÁ¾k˜ž_k]XZi’ËÞµ‡ÌªùÓm¥%mŸío2 gž¹ùJ@º^ „§
-4b vîn/J=VÙì®mI˜ó‹%§îyqÚ5Ë>ÞÒÛd`ô'l̾ˆUŒÛsÈd‘­9NÊ'¤¥\<FÌÄ„9XðC€IêP£*äí¢›‰¿Œ.«™Á>t1‡cVÎPPƒ{ßD>Ú·3†B6 ¹Úé(µ”Sç´«ÞÛt‚N‡ŠÚàÔO¿òÚ¥´]‡µ GOƒ³âó¨XÙ¦¾N;Hí¥0Ÿw‘Xò–£o·ó;3Kq;®õÙ•Ünµ½¦<À°ˆÞX[‚é6ôSr­™«VmÒôΪŸp[è­©q! š‰kFê|â¶+¾·}O¢šá;fä;ß<±1©%ØШ[ï•ö^, ÕìëÐø¦ëQsûÔlÔ­ŒùÝ™O*¯|äÑ7“*ØOI ìVʈ}vb!·FõÄ6-³ëFdÙò».9±-9€Ô‘H]%•v1à1äÈ%™Ë\Ò‚|Z•ýÞC3æÉ €Ü4hÁÅ*zXÈø&¥5eãUü<Òe€«ø9“§
-êl‡Çù[tž‡¦¥ºáú°´ãj@Ú}-®~ýï³]IÌȳ~î|—Eú#5£¾ÜJN̘¾ÄZï¯eûµ¸fðNå#ö[ˆ>þûO”õ „q³?ådw$ëÅÈ"PÜ›]Íø…¼#;c8¬Ç?éi#¯TžÜ^\Œ9DØ$ ;°ðE›pág’Ï=ôɲƒ8pá!C?H€Ä*ô‡ŒžÜRÍþ®èªÖY“Û`tk MY#¹=©&5&Ö&í*Q÷ÍœÎo
-F6kåãô䶽·ãu¹MbÇ™“Ô[Þ"t­Ãÿã˜m¹"†Þþ“ƒÛ}ç‹_È¿ôÒÚWÿLÊÛ®œ ¿d­“Íy'Yt‰¨)~`˜hÌ
-:Ô§øí?Ä•ˆGÑ•‘¦íÈ£²ÕX°Áž¦7;ýä'ÀŠ.JoÉÅ-oMqrŽiÁ‰ëp ”¡ÿ~ÖhÎû¹äŒW@Ž°Oµè¦‚ƒ2t¨­.ô]÷Kº®çLˆ†¼U_vzª3dÊ€ŸXH­Y ‘ÜÀµ–Ü4d%È@g¬¤ž“ ìó¢ ú¤ ¾D¹‚ªÆS`šVô‰Å9w"o' ¦ŒcÍXPÊ„åø¶S+¶9eD?Ihw*¡ä& –\èÎ<€h)oá;3fÌóœØþ[hêͧ]ál\7^w Ÿœf•[lÆ0 ÊРœÝ”TÞ;ÐN<>1Szsvú@ÑŽ{ù9@G]zèCgÀdKô]GÍ¡¢÷Nl¹§&¡è¹ùG’#º 3™)WcZ‹NêhÑí©1¯.üèÁcëxGÖ‰ï*ûhðËðÿ).ó¯¤×<ŽŸùa:÷´[×›Õ­[NÞLMMMwsCY”EVÙDp´¤,ÍÌA@QqaSÁtDdSqÉqî=Íü#óà9ÏyžÏûõzÚ„Þif‘ežº:X ,0p§+Bá™™MÚŸÄfz&ÑÉ%Ã¥2Ž-¢žÛ:e!ë;‘o¥­Å·ØZï×ÖÃM\B@ÏÅúuM´½YÚoéø´~èÙÕ4UoIkw$è8§ï’Õ$fërþp?úTx°g¢º2Pû¼“øòêT,þpJˆõOòJ‚3ÜòÍ!BìÖ0æéŽãQRvœ|sáùú7râºz®{Ïþt±w¦büðúöb{Ö5ó‡¢{½Ð¯i%ºT”4Ç(2Æ!…?;˜!BCóôü]>}s¸¼>€rÂ'„ô|\ÈÐDtŒc“mÃvIéc
-òkê ´lX`–šãRAþ™ÀáZÉ{JÔ6Bxøâ#ã§âGæØCë`MÔÊ
-ø¸€–²ËP©›CU‘–þªßÖÏÖù ‡
-÷Ò9|ᚬI éY°]üb™ƒý±ÑÔ20›bx”{ŠR|¶ò^ä×4Â=JjæÞ(.É=†NØW‘ÒOŒÍÄ#m#f{¸t´@Ï2+Ý%f§©y[ .E Ô.F$xÇ1à=µ+C­ð'ÇFaó¡¡™r´H/ è Y.5l“ _øféù‡‹ •6bG†M<YcáîqÏ-o[z>Ù® ¤­«ˆòNáÒƒ‹‚·Çkm‚ï>íÔÄÂœZ;ºÖ¿j¾ot«þkv|_¢–;”hÐöhu¼[Mãš[ì* 3ÔÔ,°jŽØÈC-»òè$› ÝWc“–¿–F,uÃl‰IIûJ~Ùž‚‘½5€óO4Áœc¬,׫ ëTPR×úpѺÄ­!jêñ¼êPÒ‚fÁÁB}‰GI+<×RKÎõXȉŽüÚ®¤¥o ábO´|ìÑæ”{:‚Š2¼ÏS0ÿ:ßšq54ÛPâ×sZ16YÂ+¾u<ËA^,7 ÎMÌŠC1Ó9†ˆ±tÿbé,ùÙ>B}¹.æd¯}Å?õÈv 9mWNÌrŽ‘!N)ÙÚ‹|¼ÖSà–7X¿‘Súq¿$Á¿¾ºÐRvõsÙcÇâY`†šëš¦eM‰*žˆ©Ùa§†wü]9í•ésÉÓ§ì:Aö¥ö¢»Îtâñ-Ç
-x„’“uy±³4òÔ܈_DDËXÙWÔüüës¼ëbJêå!Ôsÿ4³Ä0Õ©¨ËpÈéoܲWÍ(UòÀ×U¼ø0c;èæfoѽ ŽQàÕp«6…öAbÖuïtµ‰æÓ’²œ*€·Ò7±[C×z\Ê·D›˜öj³öÐ>{äEEßåÞ˜âBÃ
-95Çf&*h` tôòóUòÔÈ(ÛWÆYz+…›™gf+dü¿³°KƒsÌüÍþÒ‡A-³Ø7Ï*öN3^ï«pÉ{Šê8cgöí)vÆe‡„U¸ÖG~aþTý›ñâ¾î="bµeÓÁ;&Ä>ÂH7´—ý¼ÑÙ£¦í+ëÒl#UOÌ]9·L¹·¶%ÈßÓÔWg Br@Í«Øã½*vžWMËô(q ûJø³à4:Ý.EÆ͵å‡Í
-*îû4<äæ6~{¤6Á!«Mòª‰/£èØí~L´m„–.å¾  g^ùg?ìSóÊ÷U ù6 !I×V|{ºrÅ>€Š´ Ò^Hø•¿²Ÿþeš :žiBøTµ©+]áÚöŒ3M™7 U=“͈³¥wÍû“ ^5« 0Ù‚ô)8¹§^¥KFLiɸ6Æ]Z…s9”$ˆ^”æ'§}]à’×ÄßåÜÙè-‰uÊQÉ›ðÈõ¯¨¤S}w[ÙÝnE$°õîå©–Vt4GÈpŒ#ãW{ÿGq¹ÿ£Ý÷qüñ¸îܛʹa§Ú6fÉ¡œ'Í©ÒRRJ
-‰9ÄœO™SFD¤ÈaE!J,9'äl®]÷îÇ®ûúKîïþ€Ïç‡Ïçý~½žO‚gO^¤S3Üù§¡¦ê»^X`›¤‡NÖÁ\‡ Þ8m÷¡ÜŽUô«ª ŽŸòòÚt}²ÿåB1Å6ÎDÈùÑŽÜ8O‡¢XÏ›2òÖŽ„t
-k¤!(Ñ`“˜ö `÷K]nÒ® ç½Ò㪮 uàøßškŒs±*‹•ÂÔGÚfê›+m½ðRSB>RR‚ÖÅq®rž¿Ã”å4^mÉèÈ£©Üø…ŒÇå/ãrà¿alÈÿ=1Ø>ž±Ø†vĸžÎ¦ZdÔPSGÒ«Œê¿+eí eþ²â¶Çrb¿°QN5¸ÀkÀ.'اrñæ¾^æ^’×ðχÊ,„}2Èï<ŒMÅ@ÌÖ¢.w%ûÿ³!ü0ñh@?¿5wQ< ­ø纺¤§.—r.>ÓuTî_¬(ùï·ÊZû%|w(bL‡mU™Ñgš¬¨ÿYÊøêvRL)ðîRõŸÏ³—ƺûT!vSŠƒh*Ãï¶g¼º3Sö¾4”äUßÜYê$…]jËhßµò©Šòîl–‹ú{ò•»ÑÏ5!n‹™^HXwV¥¹mÜÇñr¢ÇÖPQŒEʆ¯~¡ùhêðu5ÆUS…q^n&¿ØáFÍ4§{éêRÜìv¥‘V);ôt’Ì&Ü6B
-ô|¦’£©ûž®ˆ
-¶‘áV†óü×Õ|1åxº(ÕØ,~¤Æ9Ï“@³ÂxЙ†+'8‰ c¼÷ÕÅdëXqòleÂC%`üRÄ]]}´£Zw°¦…ÿZäÛ&òcOgT³˜ìkîÄûZ:Óüwúȱ@æZS<V»“ÜþÙ.-9Õqˆ&qšûŠuµØ,ºÒ76ü2W}ºXÈK
-à­Ë@ºOv`¶7ûrƒô"4D]êlhIE8Óg’û†,©kIó^“d‡¬Kh¾+"¬ëj3þén/Ýï@‘¹Ð(xa«m”@ûX^×€-¶ž–%?n¢"r‘n¦J€e$?BZ‘ôH.H~²5̉›¥ûŠè!×;³`׆8È›
-nÄ͹Œ«Q\Ž®ÉŠ¹×Hq:çg^
-<ô®Œ >Ws3§ p'*fÄñ±? þ*a¾Ñ4ã·±>€‡
-Q€+
-~¥)Ÿ¨Š>šÅ´ñ’÷Žûc »Šb’^DõÕ7ÀÆV’§¶6åéJÞëà¡ã©ü”ŦT0ðÖ/ÎÔÅ$ë;Ò$ƒ Í@Ææ8§ÙêÛKÍñ6·ÙV°cêÈ¡·Z(ÁÎ[ƒÙѺ¢T çc[q¯45q/L]€§ôÐaGSÙ»Š¢Äá’÷%…¨Gó­øš˜´-e@—»)PuÑOÄsìÌC<9Ÿ+¥­1‚•ehŒ¼g¥zÛ¤™¶ÁÌ
-"µ5øg35};!l­=ƒ~.æ“}°7åìpûWÈć_(Ðãya7—ëŸèë_š’ž* ïþ^ç³,#ôHEU¢Û¶’¿7U[`(ϼ\ä‘Ot¬¨=%Õ‚8_,$ý´Ô´œèŠ»cYˆÓY.áï5aÙ#7c2#h‚ß&x¯õ¦ºŸiy™WúÊ£)n"Б˜3mi¦m¢u¢¤_èªòÏÕ‚4€­Q[ƒYÐU1ÙÓÒŸýÆ*ãDNWÑ7|ÔÖh.r¥;ÓwIDrß–å„Ø'KpÖ±<¤©“
-|’bA‡Tƒo÷W‚ïé{ñ ÉºœÇÛ£˜XÛ 1Ã:Y‘q¡¡#ot|âÅ’€`—’W{òý-Ó¤xó8!ñ‹t2=MÞ »'æ}·†Ï=*J¦CÎÈZíÆÑN9 f/ Ýî>Øì„?Ü@>¶Ï^­
-³Ø«¤€×z`Ó̸IùY5íEA˘He{ùstZðz­%çîöÃ6?þßÛômù÷·‡JŸ/2‹' ŸæüþƃFÜvÉ8¸óÉ.BÇìŽÀ‚ ÝP¿Í¾ÒÀ½qbôîLuB#Õ¯ó›kž
-9UÔ/P3Ž$Ødó82Ö)~¦©L9[¡ÁVq‰€„\óŒœKmUÖ…†”³ÎÄÝlÖUÙÄŒÌåt¨˜“çs$ãVÊ™YVIu’i¬4ËM}<É)ª ×6óÚX×bÒ§ùà{6þó ±õ‡…϶˰o5m`ÿõÞÜP‡p±JÎÙÇÆãÀá¿Ö—Å=û¶×&6ÍÇïzüL‹OÙG<5|.
-Û)羌tŠÙÙ^5u¼ÄÇX&)q.9âšÃÆ](Éi®ybÒÖ,Ðô¹ð©iâU×–Ø¥5°Ý"È6Y
-Ì“¸(›œ‡Ý™áWïŒÒÀ«±áâÚü{²Z¨Ÿ¡óâDÓ@
-T7çì ¢"
-­*jä6Å×ùÄC£ÆodÖžlñS+ñħ[Úà˜À¿°Óò ß(yûJòÌ*luM¡òlUW£æ|x½½=jízï_2ìJAC`ñ§»4F5Ô
-`÷*­Ä ç4þÉæ—šäC&Ë9‰}lè)ù×úŸ¿ºÆ›Å bRÈ(&y[+‚j!joœøÈ''æzfͽ%I+¥ÿ\‘T
-bkŒÞ¦‚ƒš÷¡•= “´í‡½½=n¤×x§;†©^óU!ÂHÒ¦…µ×C*1Î'gUúeԢЭÄ+'ºg‰¹‹Ô‚cSÛ:Á€X>cŸl
-Vû0…ŽaT቞XýŸ:±NG˜¾¼½aýÖŽéºÄ‡*1ùH×RwºÅÁ4Äb÷ <+²D¨:µˆ®æ›ZÑÅ€ªõ—½§/fR£:NÝÞ4.o¡íé…øI²wšñ?§Hø}ƒO=R’ N,müc³€·ˆiGZ~ƒ{‰]î˜kγ#þíšÂƒ÷ä-e–~R¦K&‚,´Ã˦ˆ†^é–rm#M€ìdÆ \tp¥­Ùô“¾úgýÍÈ2­ð4ÐÑ,üc½6Rë¼J<Ø=KÈ é¹H'Э•.ØU}$9¢¡
-0ýö89ϷĪú±#i;]ç‘âzr¹_Ì[ûZyÇð©<yýký­»’Ÿ†…Ô¼o¸c¦€ã& ÿØÈgÇŒ\rh‰Râ•!s‹ͅ!%£4dêÏu×ÞV½ƒ‚Â+BBÔ "ë9ð“5ålSÌó(%Ûc„¬¨YÚ[ûÐPñ€ͪ>R²«ß}“0´"þÞlÅGµ­õ›C˜‡›ÃéQ#Ÿ¨–Þø†~ta³vÇ9‰Ê¨Éåñ5=±ÙÝí²²1Êzñ³ïÑU9¸B+ó)°@/ÒÜs´RŸVŒ?ÒI¹{³‚:¹þ›¾žë˜ëlÜŸá–œ
-ÛhMŠg÷Ô5ÍtORž;Æé%[#DÐr×ë_"ºVLb­kmʲ}©ºdé…\ñʱYAeó³c-£*¢å¡¼J.Ô5Ï­<PwSýZ!Ú»€íŽ5¤¨:J“–¥%¿;&°ù!5¾Ù!ò«ÈÅ Kþf‰^
-½¢ïzua~ß#Ççl Âï˜oOÖŒ°–hÛ‰1³øÿ—é[Òé†?™k末9sjššiª¹N›•5VJ‹»“á‚š²
-(›ì²‹
-.ظd©e¸€.)«¢€ @ ²Éª"Y:×Yþóë|~ßïú<÷Mv¾ƒÝZé*9½"®8kè|zzs|1¹ŒèÛɶQHÛ]yXßø¥$(ÇdîªpÙ;
-äo;rܽÝÚ³Ð{B7„ø›÷íî<µôø?ñ%ÂS`»jb¹s¼æªk¼ü‚•ùÉ&âÇ
-›e­ºa,½ºýw`⟎Ξ½U6*ªaVT¬Š]ÀY<è¶!è} ûÔ?Ëmð. õº—†z½ób‚[Î(²¿Æ¤­õ–Ÿ™cåÿu™_ôCr™I­IDe7Á*–mȸÅΉÖBï4£À;I~¢íŸÃÜÿ‹ž[~><¼§¡Wºä'®ifYx¹ ti¶QZúã
->ï|»ð!À†ð˶—¨Œ= ö…ÉöôTˆg²þ¡u øâÖëçÿ ¹j—±K§§–„ÏÎÇTŒŠè 1;(CÜ+Ðù~9.÷}{ÅÙÕ~Ø¥
-´£¨¿šEÞ )ñEî)B®q
-}/öN@ooWýj¬ø%¨fT¬ŠÁV½FòüGŸ‚”×0jã|ÑŸ6:ú˹
-6Fà÷vÕäŠÃU'a’tÙg˜M99'±*b&L¬k
-ýÀ§Æå‰à¸Õp¸Î‚Þµ§6ÄÝ.€I‚‹øß_þ­zOC…D—ðù‘ERa\Ǩ‰®t‰ƒº—£–·ôëæà¤ÿú¥ªOŽ6ÉSG[Bþž™‰Û·²[RnÊÒÓ¯ј¡–]k)õÿöµ÷vµuÚ9ì°ž
-ÄÀ ñU6N?XyÝ …üâ›Fƒü
-tnô=©2µ.d¦¬".À¥úÐËáÅÖÿ,©t½¿ür@¿²3¡áÀ÷<|Ê*î9°I¤îy>Ô©6¸UBØÚ0ò¦[†~^¤BãÆVTpüûÁ—tâ÷%×9¸„‘Õ¼_AXGCl«ŸF4„¢ˆ–V5òpN9¡ a¤ÖÙù¬„…H9¸k\pWȧ~©a{†µ½i¼ë!ošðÿx{§?mrZ’f&âÄÅçÛYÔ¤°6­10G*]jøusû(±Æ!ìYÙÄØ
-­fÏBÇD-Ф]ØñÑ!'-JÜÀ@º¸‡  ubj%üËÙ3’4wwGô]ìÀ<Pb2l£ÕÇ©÷¾o¹öÍ’0ó[÷;èíCS=4Ï*÷(¨y;JJá®ó :ƒº”CÓ7_ž7JŸ:\瓃˔­wìBç;Úÿ(.Ó§&³,îššêé{œ±­±UDmÁ¦UE¦š„,„섬o€„[…¡U0ì„,d% „%‘-dÏ›•`@´zzþ¹~z¿¼U·î¹çwÎóä;Çš3br̽?× 8ytç"öŽnèñ¶Ñæ[Aµ„â^£¿"ܳÄ,­´ä[ûp}zXýTV?÷-Šp®IÒ½ýIJ¶_Ío Ä´½Néò@ÖEg|2bfTÕ^–0qÃzzy@A~P‹ë¬<ç[òíÝ7iž9|VÔÀnÔň[zy^uGÕÁö¬¥”DÍ”€º½|{üÉåí·¥—‚ªÆÛþ%ö“ˆé×—‡+Ã3!m7Ù§l½ìàQ“ëü6¿†‰Øi½ g;d´»ŽIFN`‰‡Š,CDï"£(n„ÈA%£Ä¿€ÏÙ»b}^xÙ/o¸Õ3ËâÆ^lè}m¨½¹/c ÃJ&*e¦×'MÌZàMˆõQô®yv]HÃA­ ƒ;J«¿[’4¦éúk3\`'u\ll™ÝäœnË6¿Â\wȨ ßúúb+Ô#;D›©e¥4µ!äÚéyv²Ù#Ýœ¤èÒC:!+ X1jÚ¼ò¶<•¸èÜ’$ïkïb˽ã­.Pj¼ãÑ7 Ýå—
-÷ &Ç«Æåy fWÓ…Ù˜á!ä]¨owÆ wS6þÏíÎΘž†8²0ê’&jõö[Tú¡]ÈŠmö nLS­ŒÕ¦%V8Dàp‚Ó]éè‰S2˜°°
-°íšÂçîL ®ûI…„}?N¸á‘Óò½`ÛG0™ÞéÖüÓˆzbëæõ5Î Òm×<#Ï!k¾b{Y~–·å†”‡‡:2eé¦%ÁÃ
-&"¢bUØ»Ø~uë=¿ð„Ž”5Ñ+`y´Ê%ŽYæcASÌÚ'Z¥’¨¡»-aæãÜ
-Ì-¿—í‘ãs#rej]@ hYUq»þt]
-.6£'Ö|öÒÚrVÚƒ™þ„€3^„»c”Îô]ØŸ‡Zsv>.c ÝÉH5 gÖ?²nEuPcÚ¤`•¼£ÚÝyöýí)RjS&ü ¶à’‹Š«Úçq«Š°¬ glZÅþ2B;ºx¶µµçå×m)|€9¨Ñ¶3Û_] ×n¨5Å5/kçwç¬ÂþŒy¨5cœ#â?"ÃøÇ».n½ÃWì-q‰ÿ"ßþó$¿î«Œ‰Úœ³1±è
-sèöŸ¬ÊùE—”™²ð°y׈8mQ vgÈ׃Ô$ÌôI˜QÚP¨OCÚ_NÊgQ£5å„©Å •6n’S&¸@ª
-. Vǧ—<juymô9Е4ïUˆ3ž—yÿèÇDš·1;P ëÑžž‹‰ë™ eŸqRýh~‰ûµAýga¹æ8x+ˆÈsëR~Ô"Øœ…â&nÇo»Ú‰³°f<çI9·Œù9ˆÈNwcŸƒr¤¼. ˜éõ; ŒÆ-BêáúÓ×¥U
-ô $efw¬°Û3NþÐ/¢eÜ2†sœqoq´ëû¤uˆvñ3|5jf4•\"|Ù-¦”‚'GÀ{g«jõñºZ]ô*ø ÷<| \ÙãÔ%Œ5i„ëSeÊþT]VÏÙgë—Î á©®oÒ&fSÂÄiN™øíG>9ÿtSûÓɦZ[ôJ¨«°h
-Ôr°ÂjØþ8x5ªcÞMùíà\kð¡"2M®J93¸7:Ç®MRonMà/£+Ü–ÃUµ
-u)…{+<Lt}?i‘RÀÀg!¯y}‚\¹5E¿z p=r>«¸IÐZ%ø¤ –˜‘û0a‚Ú3Œ›1¿­è•s×`ÚÖÏþýÔs)¶H¼š!U¢6&úTpîô½c]+€wQ“
- ^Œ³®ÛÁ¦£ŠzG¢
-$Ôu¯*Ŭwÿ=·óõܹó¾ç÷{Å(bU@k/é7#J~ËÉúèä¡æDÕ=?Z¿ -á®ì¼kÿ>ª!ÖäA× ™±ð9»”}X)¡'Ý‹¨‰%;ÓÝEŽGuñ¿ÂE” qƒ”îxìStÿøù4§¦(¡ã÷¤õŒú”šZŠ
-.ZKpwùpÖñ¶|$½Æ늛8­ŸæÖ ;‚:qWÞ 3Ò¦Úú«–;žÍßÖ¥pn]4ðé nV{PM¸ÔÑj·€œdºà’ÂyfeÜ(¤œîŒÏü"jãuUôòÝEfé–]—^ãS>†ÄŠÓ] ¬í«ËX àdÄ’´‰Rþû{~d’ N)ý´+:Fmp‘VŽ˜xmQ=¹b w 51êÓv!!¶*ø û+ÄÏTÓ™w—r&æÈ3€=ñ1ñ9'­ítfz`pLrJ/êŠë8˜’YÕÁQ-Ô¾ßU°‰É¿û‰ÂnLu…—‰åi:…DÄö`8¢ûõ_Aõp"À|:)!4ϯÞ}K½aŒ¹àŸÂ^HhùM€K@×A-{j¸Õþœ|Õ2‰; îú6½ÊnˆkÙm»‹ôû!À7áU¸a׎
-ÂT²^ÿ¬œ¼5'íoì*˜'×Et|\Ì,£¦×†û¨mcžVP±k«‚ö«
-5²ê³V àžÎ¤Ž×²–Š˜å¬
-jï³;Kù)ª¨Šh?£f¨û`…S˜££QwÖ,êîQ¼ñªåÂÎküÕ˜º÷:b$ݹٗu É GZ³. #ç’€C•Æ4Å9+—Ô °û³´;G61ëÃö#eÒs¶ç×Ô´º”YL˹F† >ÅXl•Ýf¯=g«: ÞfgR/e¬¿íýno‘Q™ÐËh•
-X “Ó¨ü?6måwDõÄÒ°ªëÖ‰›ÛSpñ:£VùWŸm ­0jcjVý/DJ[H1]GQDƒ¿v:ìtCÌ˃,ARrT˨ )‰Å „ k@(™5“°äj_\ËÇxŸã‹Ie;»íÐËëElp^÷Áª¤7fd†õƒÔÐT·û†^¢©új¶íJRK«/3«#zQç®NFØX”uExDu‡W¨÷|S—6gz¿wõ%¬²= §vO5GW‚¹¿Zˆ&FRÖ!np¹¿Äùï¦3Q«!c“ |2qP/Àîh­1›Bšr ‰bF¨#¸D¾½ý{xÆ•”ƃƒRÀ1BJ~cÊ gF•¼Æ´ÛœÐÒªöf%»3ÄëYÊÍÔ*ŒÏ˜äŒÐ<³Âÿwiû-þ*b V¢FJERO¬ «»Jƒ+ôŠ˜iD”²•”2ÿtã×q5³:®æ7Gi¥Ý0ëtkìuÂ!áì©8µ)Ç°,éŸH¹Æ'SÎ!QHM¯t=Å|ç›n»—6‹˜¡y¿ëµ(0'hˆj䤨†Z±P01 ¹Â÷^%®ùóûΞ§¸{KìJíx〃«3¯w–PWQ«RfzcÂÂÄDܦ¤iHˆº†‡÷•ìºýezYa]>”÷Ê¥i‡˜‹X8DÔÄlN9M;LÎû'
-¾ÑÇ'>Åø‰W*9öHø¨QDÊXÅÔ,˜kÒ@­ßú )næàr^1o_…ÿ)e"Õ&-ÜnÄ.b¤ƒ2ÄõëRÆ;ñYrRNfó¡wx,©ã6ù_´~£‚J>³ŽÜÿÒ2Vyyã5¦ìØÏaÿ78ü22+nöo<C\"FH5ðËöûÞ®Mç·æºÊz:ph[Î õ­(*ÿêŸÁß;Z‡\b¶µÈ4xÿ«ÇøëŸÉš¯þ°ïÖ94dyÂÌÆ `ZyÆ"èÉØ!B`‰r;¤¤Ü¬0Ë^ãᚘõ?Ì>]sN6±ÊªKhM9+ÜW°IéȪ
-:f µŽŠbõ`Ê"ëÍ9¤td6²ÊoMÛø9‡¨§
-_õ¼©G,‚.Ä"&—3åØq@ÌßÓQîy¦ÛÊŠkE#“yX1™qHf”qŒÈ²ÎaåO®ümgøðYš´
-ºƒryÖ#d v¨ °*]xTò
-úŽ}BÎ"el¬GÛ³„£:ZõIP9‰Z ¶À‡Ž ÁlÙî<¹
-ü#ìÏáÂúÄTzM=ZJn IwÆÞ½²7ß.Ís›¾ƒ')—sÀ«Ô•±óØÙõÁÞÝ¥¾q Ÿ² ˆÑeJÅæë–ïS?gÚ
-ëÌ9½> úô
-Í =þ‡u3®%]É­Sª³Î~L–q² {Jªa°Ôi—œ6ˆ{¶>rî‡æ-åzDG®Š­ÒbVfãA@Â?ð>͹e¼Œ‹OÊ{dÜ”MÚ—0ñ;âzNsD˨IXh ˆuP¿*Ÿ-‡L\\Âá²N5ïP"‹Ô÷ üUûTÓ?v—èÄ293©%î_éõ¾¤['Ûco“ =e`—8{±€íðYXÊÎ{&^=#¨¥ÿaDO¾¹§!]‹è)•I+¥ò`“ýøè3Ÿ5“o†uäë€åù‡Á±×9ÀVÅuN[ fáP3»ùÐǧ}– |}‡%ŒÝq;à™ö¬™‡G5¤
-×díiƒ²ê[ÿ î⾑ 8Wصý‰Õ`ŸÄŸ Î+":Jó‘[Î/¹¡Ôd™\ž³ ¥ÿS\&\M¥gÿsÚsz<gæœÎ™Û±ÑŠƒQPAvÙIB²Þäæ&$@—v´ÚCGQq’°„ì;Ù BXB²Üì±ïÑ—oðÞû<ÏÿÿûÙåüºB·BCž9jµógòU×L˜gÝç-!«¼!¤–|0µ q¥õ'Ïræq^ÆÈë +1•[o.ìÏ‘«V3j¤7•œ\Á-fdbJn]2šÌ—41["k¤»µ-¿Î7)ÏÖO™%Ô£Uà·HWöç±w?`/‚½lî2€ÚjÚ&&%-&¼Bió¼ \±w pñ2¿#¼¤ô“¼°’Õìy…ù“~¢í*NõáEÜÍS¡å ÅÓ¤}úq@÷¬ÁI‹Œ><‚ÙW⮆”ƒWöWHõ¨ëÉ‹´kúQ3LMÛ¥ì°FJ>TCP“„š2òz—UG«ä1=½) n/mô'tô†˜–ÞúD®GœÞŒyäǸ_^u,#}!•¸kçýÈž—ø?/Kš· 7žÛšé»”·³]1nmÝ_¡×ƒùaS¦‘–¨#0‡­Øû8|#½ÆïÊßÉئ¦b&)mçæÀûášàávFÇ|5³;ã€[B*µÃeÚí”A„?ø$ì¶>#œ¬Ð×Ñ‹ÐHÉ1FÊý˜ŽÙÚø¤C2’r>}¤g{gGnn/«”¸ë¨Õ[ðò©Ÿ™vð!©»jrmÆ=GÍB\H5|=¼D©MjYí97ÿ9(FN·¤“q›»gd·§œR¸Ã)p·„­÷ø«ë¯z¯æ0õi#à&³L²½Hk´Ï ^ÜRÒZÊ;?é’V™ ¸@»œ¨ˆ. TgjͺĬ“ǯsn TªVé- +Ìͺ„´ˆ–XÑo¥
->fgÙÇ'ÝÈhÉ95Ò úRzN;ªfuÒáäêèÃí·¾·(ª~øWëwI«-ïFX%ï¤"kwÕ¸*ïÛ_Æ–û/g-Œû%'„/º$Œ¤ÆÆõÒḓcðžcÍðÍ°ìä2³!¢á´ÄPÖ9.̯˅Y;B9Ös;£Öýœ¡çclûKÌ·¶§ÔÊ·Hg| ¼:Ú¹÷©ërX©‰hdžV‘AÔ¢@Pë”|W u
-¸=¬"]¬0cZñà‰ÿÉÊ~Å?ó`RN—uAøÜ™ ™`BÁ,$'µìöƒEàu«£mŸý² ÔÁÇ}0³´)b$-‚„ÆäÈHÊÈlÙïÿKÆDoÿÕ3!ËYäüÐ"¹fÿLÅÎ<®2¸Èªßý$l‰é&˜Ûja‡ÿ#£&²Â~p¤fÞ?õÀ¬ÿ¤È‰OÌ;y[㵧
-QÞöxlû³F¯üZ?<Xò‡¼}R\ôLŒgÖ¥ìÐ*£Ñ;‹»–¶Šð)àz!±zg{)øq¨r_Iº•w*žd<¯uèº Žé8mg9’·ˆ ¶jo¡õëÍ™¦sÀ‡êbz^'ê‚]™þwÊ.Dt춸‘Ó™qHyåÀÄ“r@ñ2ã„Y`7o®°šPÛ uˆi¾wøÊ´SÌøoPöø³_ò’‡ûÍ?6v² 1ϼso‰R³«f6l¼'¼à<ÌšEÔS÷ÿÙ/Û§¦®4€[¿lt§³j;íÜiË;¼äÕ$PWÁ
-vÿéÏÁÞÚÓÓ^Þ0Ò=t!o"ö?öºØP_õ)‡Íäï´™–îº?›ïæŒSÍ%û}ÿ8ÕR­’tJùݨaB݆ïAþ'Û©ÌÅ;»|¯²&Øã²Ú…â@;¿¡ î2+ÛÑy:ù­ —+ž¸Æ|ú˜÷ïÕå¼ûà®uÆC]n~©»’}ØRš~ïªI=Ýæ0?ît”¼Ö¼éVêÈ`}AôP]^Ôbåh¨‡÷*ûÉý«tê8¨×¦[„«­ð±œÝÞ²£3m4¨û+ô‹ÝU¶Åž*G
-®˜Ïr°WäàE"ÁWgT _ÆSnU¹¾ï¯rA7}Ó »õ÷´7oÔîÛ5ë)+^ùôü|¿ƒŸh¡2'É# vú|yÄý×P/_ì` A>ŽôÁcÆ®39  .ê?£÷Ÿœì7ÞSÉoŒÔçJŸ1Ä"„âí^Àÿ
-$H6l Ø@"°D`‰À $H6l Ø@"°D`‰À $H6l Ø@"°D`‰À $H6l Ø@"°D`‰À $H6l Ø@"°D`‰À $H6l Ø@"°D`‰À $H6lGX„ðÛ¨¨Ú¤Ãy\rü$*)]UþÎÆ9ž`%’¨¢ø$–בFždhœub à’4N®Äâ³ œÂ¢W#1„e²¤™¤ÁE½§ˆ=X Mß)&ä+_Ç’XµZ©ŽSÈ•2F~É1µF­ˆS©¤
-•Bª’ÊXy8H¥‰Shä{å¥RªÙû|Ò€kJ­V£Q+÷îU‚ åÊ,­V¦ÖJÕêÕ çÞNTÐsog‘äKhÉ1‰‹ÞƒÏ—ä®{ò¦ ç-™8K΃”Ð?%³(ƒ¡³X’æIÚ»z9™
-@Û ÆÊ#¥Az“ˆm‘VË‚$ÊjÁ#¥(ÝIp¼IGØH<¼ Õ9ÿ`
-H‰ÔWénܺ~½ƒú#@Ôs¹“2Š ˆZnf12NÐ -ŠGqÔÈÒ@£qš>}?R³Èã±=Nƒ‹[x,ñ,$ÏòñٟΧ'ñ¼ýTžð ƒgÏ’®,ú¶; ýhxV׫eß¹¡ço_„TO„â33[ ¾/»eÕ6§!#ꙹÓ~ž7Õ<Ì»¢ù‡¢²x>ÞEÕ×%¸ïšÞ½ÍOØ‹Íœ0’=˜œþBÉ/ŒP…éN™pEsS,—ÕÀ¦ŠŽ1Û®šyÕ\ÙöߧáIž(F¡ xû×êm¹¼O„M„fL %8“^<m/W×eÓŸwíe¹\&mÝvËÓ0ù^4á«â
-œ"üPÖuû-´uqù5€ ä,¯ê»½.úr·÷øŒ²™]UõüõêúS ?P-Ü0Ÿy“ï–°³îÝ ëÙÙ5F¦eßc™˜Ðù/yõáoãuÀÈšž|[^Uþ8à­¾X[îÚÅuÑ}uêØ"e¡ŽXHæEy½¨áV爫 O8qÿÆkYlÇËÝ5³óOyS•ßNÃ×mSNˆ»~:Œ„ ¿çíª.»wMÕ‹Ï¢Á ¯ÚyY#`¶úy]øÍ{¢»ßAà¢è®ÊÇÙÖ«Þ‡šÙÌ
-vÌÈà6„I-lΚ͒W£Ì!“WSì›NÚk«KW$\4 ™êöjàmß=ê«Åà‘!nÖç]Õ8›ÁkÏ1³ózÖo]»Zœ5ŸÛàùP_VM¼Ð3QâüXÑõßÚî+>Ïæe±«“¢Z¼xÐäôkÙ_~Ù7ºýq³ïËKjäè<|óé_øp6\Ý /ºâ[Å÷Væqs8†n³shúÏÍÿǵÓò3–½SF³æ¦¬ÛÅÈì ÷¸½óºhŠnë¬ÍÙÜ€Sà w`Ùÿý‹ÈˆÜámÜ>ŠGF¬#&*ú/h'e3_nmŸ»U» cÛKŠº®®ºbñ¥º m·Z~ /Ú¶ÞÚ>ÀßÎ3æy–Ó<"b/]Jv‡f»ÍÚN´þƒÍqîš7Íp&wgZ ìÏ„æ5èüAçÚêšÌÿ—9¦ß¯?µuµ¼Þýhäµ±º¬Ëé÷e_S3ÖÎæŠÞ=Iþ Ìô[šü²úô`ZºM~®š9"tºªúr—‰íõÂaÓpú¥X”~ÉéÖ ô |Ô‘NNÚfÔ¯~ëŠy…VçuS\£Â_­‡B ëCƒhÜ<´óàcð— V±ŒEÌcÓ˜Dy”Ei”D6ŠÑ{M¤A*’‘ˆ8:7ˆÉMfR“kbc´QFa¸a†è\g:Õ‰¶:†¶ÑZ+@¡¹fšj¢r•©T%ʪXEÊ( d#ĹbŠ*"s™ÉT&ÒÊXFÒRK%¥ÀDLRID.2‘ŠDX‹H¡â¥‚ &¨ <çOyÂ-y„‹‚æŠKÀ*Έœ°œe,e ³,f3L3à,&Àg€X„æ4£)M¨¥1¨¡š…PA@£”œd$% ±> ˆ!ØÁÒlðƒ_kM¬uïœ`šŸêÜ@šŸêÜß˵DÃg3ÛÁËIœD‰It¢™ˆ„',¡ÐÎmfS›XkcYcµUVZa¹e–ÂvgqÛ8Ž£áœü‘%IbÐ`§;ƒÞØ=Û}pÃØïá`Âç†øb{DïÐö±µë>dtqP¡Ä .oàCÏòì2ÀED2œ·î$„JïmI¹3r”°·Š‹&âÕ âº »è e&"^g²VÞ*Ž&ù]ÌiÓm…ÝÔÐ#Ëjt¨¬F®¬Š¡¬Ò€ >¾ûòƒ^ßÇfïSë»_ƒÖ¸UGøoÿÅîo[9Þš+Ü|¾Ã¯£LÃâ\ñ'öH„Û!<18_ᯢ.¼9õ÷Ò;~}ḊàVä`ä>%ŒÞtEsUþ9üPÖuû [Ý€9¹éÊHÿ#u˜‚Ñ««&¨b ªYfó„ º1T9j§Põ ª_Œ:˜&Y’§$¥)Ky*R™ªT§&Ò8µi’¦i–æÉhÆ2d"“™Êt6”>HOâq
-F¯¿Ž«ÿb¸#ñt
-î Ýò¯ßú±D_ÖèÏú´E¿NÑ·óˆ ‡3ts‰®®ÑÝ#ty‹nŸ¢ëç1`@ˆ@¡ã4Š # Ð9²8·}„¡Ÿô…þbÐgbk‡ê'‘zŒ‚ƒ£3Ùsò~ùißàCgø y×
- Ë
-„@‰æbRr,fÌD+12xŒôÚ.s"’å$QÀÆ’JMŒäÑØð1âƒe¢œ(P½…üÌ„ OL>,·‰7ãšÍÌR¼Ã|
-Jš®eNÛÏ}hëâòkø¾ºjʾ/˜îça.þ_ö«e×q܈~ÿÁ›
-‘ƒÿTÖ¢/Ð{葉¦ 5‰@x…i©ìˆw+˜E.SC3]APP^BïõhˆTPäÇ:kØÄ äÊ–×x~Ë3’,AØôpaáê=¶¥Å¥„Ó!5@ú+Ä ùOúÔ¼JFfIÈ.Æà\²Ðéù¦Ç^¶¸yƒÜS#ÿ¸Lß³Pó©Ç.·L ‚S
-‡§Sɽ¿3×ÛœC”¼ëÆùŒ/9†äœL02$z9ïô̦ºÂ}š5íÿÔÙ¼¯h%g&ßÀ¸ÎV0¬p¹?®¼r’¾]Š°+y>ØQãåùj×ð‹µUîr6ütÖç&w:ѸÝDóÞ¤Ówæ½I§õæ½I'uæ½I'zóÞ¤Suæ½IÇz³$«ÄFÓ…,GƒUÙ&7ÿá«x¤£€êAÂu2®×Ắ?Aoîç)Ù5E:S–{
-ñDå­ðÌÏ^WÉàE2^¨Ã› xà bäðÆo±`v£Å®ôØÑO&‡óعˆLØÉŒí°³vx2*‡-÷Øûˆ€O¨G‹ºô¨Ï¶¨W…ºÔ¯FÔ³E]{Ôw„2ã}QsÚGô@2h†Œ¦èкdˆàÐ5ÝÑE Ý”ÑUºë)1ÏÉ­€##œÀ‚3¸À¡ºO„Ê V† `Ú„¡Æy Œ`b#3˜Ù¡˜:aðq`®ƒ#˜œÀè fw`ø
-}
-™…EÊ£™IäR˜H&¥“J(¥¤RZ ±”ZB.Ј Ç„eÂ3ešpMØ&|Æ ç„u»Ü™Œ,èÈBðЀŠBF¡c$%z4D&Z¢+è †‚qÁd–äeoàn¡‰Ê²Šk’Ú'¦M4²|öåz™h :Ü5òÊ?°“`Iló1‡T_NÃpmJN›'Ï»T|LÆk:Þ&äQ‡£›Ä¸‚¶‡ß!ìWhÛî‘hN‘Ï`–¯í#¬5ÜO«ÇÄ|“ŸÍé4óq ¾±ocöõ ÐLfþò$d¸…y¼d×÷až]ˆ¥§5üäñž nÚælöúþ§.¸Î_ÍçÔ1?™Ôƒøt–žÌÏÆ'vê;ó¬8°ygžÃ4?›g•ˆÏpöY±x¨,¯ÉØ]í{J<õõ~WŽüžÂµ¥ ’þc¼p˜Ó_§Ÿ‡§É~ – !*QS)Õ¢¡bdªFKåè¨=d Š@G%iF’¸à „E¤%P^"%FDFЙjÓRq:ªŽèÎ@íLT KŒÄtˆ‘§ ‰$EÊRÍÙN¦»Fû®.F<OûÁ—èw;#Œ·3Â< Ì2ôºÝ‘"ÃiàC)šÚ• <=‡Ág÷Z·/Õï³}«m}Y]Í^^Ï^i¥Êß8GêÜ(“£÷WÜÏ_v#åÙŸ9Çâúùb¯÷ƇÅSʇõ¹,—a5_± ›±ö…sxˆsÀŠØ.¬ðûü4Ñá¯ßÂò–Ö{¼pŽÞ#¸
- Såj|øTGùˆu¾9 ‚¶¹É 'á.Ý`þÐþ%þ}üñíÏÿüåÛoßüKè¾ÿúÛù§?]þø×?~ùÇ÷o—_ËOW1§¿â¥ü¥û†"²-+4dVlц#°BóÕh¼-7¢Ý*tZÍ.ëÐa»+ ¯¤«:é(ô“tS”N2äºõ’’þ‘îQ:ˆ/«+‹'«#«Ïn\¼x5âc,z-ÝÆ¢d(Vm©a‘&W)%RÊT3‰I”•JX’¸ÄÀd˜™$5inj¨©-Ó“ä'IP’¡¢˜£l0+Æ) T¡Jb• ¦«† +«†"guÌZ=óÖÀÌ¥˜H_– LQx…A(SÄ‚zA*h6È Ú º†¹n‹G&yêfÓºq1÷!ªÇ0üðo@P˜ùË»ðÿ Þ`š}R)Á;°eZ$)Á »"J7²4Òö<…)ÑîÄì`u^'N§>§Æ­7Üloëèp;8ìÆs;7Ɔãà°Ž«lÍÂLÑ®TZ[bY dK«JÛ¦¯5wm2—9Ä­9k…EÝ69Kƒ`ѹ®h]OÁQ¶O¦ˆž-§ҧòç93*⢃ª…Š¦ dMyHCyTì™ì±œ±•˜iEt…“ÑÔmPàwfþ²CýÒÌùÏ;4¯À¼¶ü=̯À¼¶ü?í‚$Ì•sæÅ̺„ßkŽ)yÉqÈÎ^¾0)J>Õ,º|O,FÔsüC}qþ–ä»ÿq^uMIOµ»u›Ÿ?›ÓèØ|Ác‡Mtt»yæfš)³Ìù43ì§fÌÍ<³h¶cÚ:ÓÌSM™k–ɦÌ6fotf›§6Î8eÊÑ9G@²ªN;j-‡ÒžÔ—Ô„YOÜo‡—PŸ§¯·XÛRa{úÆ@ï€{Ð?à D%6bà$â%â&‘ŽRÓUþÍ}ÙìHŽAø ø}YÀ{iˆIQ†/ú5|6|òa±À,{ðl¿?™ÔO•ªJ==X,¬8ôL7KR‘™_´t–Lwéè0=]FU&k™+ÖÛE#:Êߪ¸­œ¢·l*§ÙðDU‘JTk‰UÕQ½I­îàh:—I èì)¾\µ©1S4%•ó¶_»7ïLýªÁ4®ÚÜ`…beGgY­ò;í¯æ pPܤe{T{§|ªîLnýgÿJÛî/ÿTõ 5Ίà±ÂÅMnÿŸ;¥Hk°uåu× ·r¯—êþ¥ÜÕ…Xzz†Ÿ¼¾Ï weã^TÕ‡õuCœ¡AÂ_Ü þø/è¯à¯ÔŸW⟌ö•ô)„ïøÑ~&Õ{Ò| Çg’û@^Ÿ éžXâ-±»'_ M 9ƒ•kòo$ª
-Óõ`ýqš¦yZ0°‘¯æfp¼OÉ!=RÀ8O¬TZófÌ›-SVK¦!›ӌ͉»Õ…5„y·æ°´&±a—Åü]ëyì6Ž¹»<vñ8´¯ôìÕañr²|lŒ=œ}—†§~½ßµG~ÏÁµoÁyú¾:¿áøírŸùðgo8\‘»¶ìð)0LµÈÉVԮʦíêMêÑT2Øì0U‹ª ç
- 5¦`Š¦d"D;þȦò
-åL£i2ͦE5ñ
-s:ƒÏÚÔ˜‚)š’©`|6•ï^ž=¸A¯Ñ4™Ê>/ª‘¨­´«½]©pJ!óqÅñâ
-à» n·+]“©Ý.¨ÍÆÌ…‘›•‚“e¶lĪ¹M ‚±Koµkš]„S¿(1n r[”ÛÂœ:ˆxÈ!Ï9îp‰tj(ÇPnB]·†º±„º]¦kÜI¤ëÌrJœ›Íx4ÈÕßd_k²±BmËCØ`æÖ{Ë<[Þr»5ÀŒÜgÝãÚ­¬›Ûݹîkß=8¯;³Þó~Ø{ݹù2«~›û^£¡= m#ÿŸ®zSy(½5Í»”þ?ÿÝýðÓ£?ÿqÕ;ö¢{«Þ=ö ?*ì©ü¨šÎ–Çê­‰ï]ŒëÝ>ð>_2`AÌëê&®ï=þÚø·ßqˆõöˆ|Æžá¶1É›…ÐzüH¹7‚-ïrýCxÊ0¹ú¿ÅŸæ¯_þúüöË×ÿê/†_~ýíkùÕŸßþô¯_þ×/_Þ~µ_½ùîGwú[<_à Žè<4^ÐôLŽeöXË#=?×ùª¨9U(rÛ?™ΔNÕžÝåV›Í'†{o½{ GÓ{Æ«oÔB×8ŽG‘{íqvOÈÛÞ÷; ›\5®švšW-E»×Þ®z'ÎU·úbXݱ8d2Ÿ,Ê«¶R(`29?®šLóªEµÛÂò:ÛÕ˜‚"–Ðâ‘ ’œ•žŸ\™… "¥#EÕ°åÕ*÷ÌÞÙa½”‡ÃXÆìÆ€“ ×bçžùdÁGHÄ@HOÊ•0òáÄþ5w¢J lî08Ø„¼B†i$˜‡8j+ñ©»…¹L0™pÖᙘ>0!1ë–äcX”˜úÃêC'îÕâ.²&ÀÔjœKH˜aw ̯ƒ ¶0ÃSl°Y^Êü1Ã4G˜g]È0ÓS â¯5¶¸ÂÖÏ<'Õc“2¾MÂiÔ@ò¨P83ÊiD­õŒ~·ðŠrw‰88’jgCï°ÛºnÅlÞ“lzâÔ®d–¶ïx§°3¥K‹9ÜS•;/³Ùã‹úh^†Á­^s˜éÖ~j”×þl”ã·xNSFùŒÂRÄ4›qX3ƒE/;º@£ô!\m©lßRzRT¨7± …,­ä`H“ÜE/áf%xiµ
-ÔðH„InDu,Ÿ‘Àj-*'­„­´­ì­$®—bºÎHu*½3¾WÚ/ô¯Y@“A\%JX°(A£<ÁñAåÒÏ«ZS 7%ì„U%­É­™Éo£´ä*h^5­wÚ»ßÆíO¹ŽÖsô§£ƒÝúÜÞûæ™ÃžûñjØ7þØó9_‰Hq]Æ]Âœ£†gº¥¨ËZÚ Û$²7¤'*vÂȺïXë‰åÝ° +ðÄ‚íYŸ-k1°î¼”Wñ«‘U£•xÜÅ™*s¥‘Ž$ž”ÍŽ‚Ù‘§©îàEɼ¨1/'R/’^vVt4£¹8™# t$õ$u¥HWR_ò‚-ô¦ÍöZÇLÚ“r!Чԩ¼ DZ ¸êYÛS|KœK¼+Ñ¿ÄÁÄÚ¾ÐHåhebf3 mâÄÒ±ÒÓÚÄÜ2 N,.Ñæ"3d0x¨éx"—£õ-´¿Ù,p2FÑ)¥sB»I§@BPÁ"Ã$¥¦†®©*—!׊a˜m°¶!ÜŽëöÀwháƒÚƒŽP÷Rò 'jèmòŸéåu Û—/ë\òymÜ ÕŠÐÌ£QñBúUÚ ¶­¬@«Rê,D꣊Ÿõ”P]RejNjod-ÎR›xªg¡5,ßÈbnYÜ }hF‡º—úŸ¥°óR8R¡ û%Jk²‰2ç¿4–4ØÈf“¦[‚3”—–·Á3©1¢S;VVúWœPºYŒ^z[(­Îªê•‘”'òÃI.Œ‡I‘91ÔVÅÑeŽCg8]›4û³§!ó-8“ôÊNÈÚüO[iAp„|ÓÎ&™o‹Uµvœ¶tcâˆÉÑ‘ÒcN&Þ?—«oÁ„2Ü7ï(Ö´zš;½çÉö4ÃÞW÷"©~8žºG u§ñ‚Vªq;À¹¢ù•Üë%çbç®ùæÛƒ3Gpì<. Ö þ#êOÊ%ã}zéh|^0H=L¡AH™§¹å,@$T[Æ®õðæ=÷ æj ã è„*ÌعÎ>‚pçaÁüõð•ÞQô-_íJ¸AÒ8É!W3ÜtUBûHBÉÞçdÅcUݼcàdY½ÞöÒjÞ·Eüi;y<3´kªk}ÝM_/ýTdjÎSsLÆBÊ 9€R˲ÌÈL#’IXÏ #-`’Öðñj^æ1"³ô(¬Ìø¼$tUŒ[c–D¬ì˜­"#•Ä©Š1jbxêšÎ8pzL‚î5
->áÀ[
-º7$
-ý)ûòSîSêË+ñ5J{N`OIoÛY)kœ=@­hŪ’2`9ÝÖóÓU,¸&â¡àŸaS9m+öõûlîâ·_¬:üîs…O+1J)ÖZŠŠí¸oÛ¶Y‰¦­D ˆ†„‚ƒÑo…­ö‡)"mßüÚ¶øVmz¯
-K¨,¡´„ÚŠK¨.}ô[˜1¸gj¬Ù%¡Ï„F:foØÄ ¹e3wlè-W¨>iH'y‚C±6\,Öz¾+íµ¥‚
-˜0€fHiÙ™rkʽ)7§ÜÖí©¡T LñÍ].R“ºE›šÕܪ¦fE‹‚5—¬²j- WY»Ô¢~±hêa³ÌFvWnO4=mŸÓýï„b
-8èxçÚÞNë£Ûð%*¥›ÅðtU\—Æ3rçDgwüê¦Ûí³wÓ_ê gúù–àP5xQ!E8¸G¶àÉÐ6Z.°´% S#* ÔF;@é
-yë’ú¤!iLòQ]"ÞÀœ”à³N’I*I'5IãmRþíù³;êâÖ' Iù:û¨žQ;Òn\Û™2§d2ï'Ï <cwÆm3Ñ535EmLÌœYNܤÎf±ÆÞ‚#¢ho5IYT¸˜¹ÆÍEn®rs™‹ 2dÑ爯p®t1P–¥N­J›J]ŸK]Ñé$íT:—"'×¹1O,ruÆ·p]kf㵆oÂ|F¾ô"uÅ—Üð厦çë¯qMÓŽ×mR÷ùÜ]$/íEo‘¼wg/í‡/wÕ—¥ï9*ah¶ü?Qu‰Ps‘òF ãíè«7Gowÿ¤êŠká.ÕUà:á¡Â5 •tiw]]ts5J4Óéî9†??SamïXK=}-𮫯¸õüw“>ŸV]nÂWSÊ<4¶V«ƒÌ凜?ŸÒ ôUû;ýf|z÷Ûoß=><}Œ/tïŸòK¿¹üêOOoÿþðîò>½„}M»¯âGá¼ÃMü–Ønö4ž’_‹xE-%š7YH%éIMa=šdxÙô¢ñµÉü¢ýE ëuŒ68a\»µŒ›¢ÂÃR^›b´Å¸°Kc,­QMÖs$,tvG^ìÙ}Zò³5ê„ܦ0Æl‹~ZþlŠ³!F˜ |Éà¥DØ5Z;{(GÐËeÖ¢ôÄnäVj u…úI<ƒ´Ä4b›¹ZÎÓrŽš”—<BTLÐ<?ëéYÎN=ÍŽJƒ£çÁ¡Év'gžç†"fDœ‘ŠP­&§]LÎXÆ锥9I[ZÏN¼õ¯Ûêµ(=‘©…t¡ýYJ#CÅÔlg¥˜‘i@–ÃQß@ZÌE1‹èV45.ˆJ”£@ËIØ Âv n’•ê(ÏÀfÔŠnXGé´²ŸÉé“nó _ÞjiAëø˜$oJHâVÍŽÌFv#G û³Ú•º…ú…†…Æ(JOü¬ÅÚ_{ûËŒ­V˜YÛÓä\@%ñý?‘J0XY«93Õ]î<ŽIà‹Í{`ÖÃc£mX ˜“¦ Ç;y©]>R·ùè.Ú‚Ýä 5•éeöˆVö,ÿ,úàŽwÑëSlé`´J1»“bþvŠ¥6È.›¨¬BvY…vËÐA¢Ð‡Öuè~FÚчhECû$´â ÅÜ­&‹že f•vÏ
-*c‹y(0TÌij ô q‡¢&2U¨ç,¤*,dä’ƒ¶ÀÉž;n¿>¸ý/¢ CGÌssvÀf6·af1ûüBè²A–’VvIejˆRÌüþ¼@?¤þÓVH /Ln¸ä¥_Ú‰€;Ö)eã+¢ˆ0úî<î/U׺V÷ñÒtÈ«xÉîá’ ´¤3-½¬Boë¾¼bì¬ÀO¢/'ürÂ/'¼ã„9XgZ-ËÔq¶„,šƒÁrôì÷ž¾fO×ìã–­–ML*ž %Ó‰f.±‘ôKD"‘ÎM&²hF
-G Zô˜Üdˆä6“û  %(ÍTÑ4²I “Xq2£ Ì)c„ÕÄ+UŠÉ˜_’½*®@Qé¼&o6É%µIݤ~Ò@èMQc!?k vYlê•páÉÊ…ÔŽô¡š­¨øÃœÖn½¹ÚÜѹÝÎëÿ÷„Ù'j¸Dðˆ:ÂjxCƒ‰ ®0Âjv'è‚ Àj^ü†~Ï >,w–9ñ#,ì°¤ÃrŽË8,_Ï‹6·Ë+sî ©/ðs±(/ÏË¡æoxäœm¡Îöv°£õ lÔ”¨9šW¼Á/t®uÔ»ÁÎ;þÄ(*[|¶Ö«m±gÛ¶Ô·4¶¾õÌè‚¡5®`]šM$¬l|v8w׎
-[ ÐÈòg°Tˆ—ûZ(_=[YÏN”ÌÁ²«¥_¢çóõyXc’š:ÃÔP‡z’œ¤hP“t¡¦YÉ®äJQzÒ¡~_´yé•áßø)EŸöt¿ Â'ªÜÕÀGOB«°ä•C?ÒÒV&<±Ý)%Ô¨f§ÂÝq Ê^‚š‹-®y>ÓÎ;yÿk£ñF#ÐㄸH…Ú¨Õâ¸ý=–ÇœTt©««¬Ù9~½Çt¼1ñGT˃æ—_Wåno”_ãÖ¹8Âé4<OÂûD[Á G,àÖâJ¦†uJX¨p•õ°ÔÁöñÎã`0¢ᢠ$BàvxÐä
-\?6Àî:ø¦,Áy8³‚m×°ó
-6?Â{DA‹l°ÈŠÙ¡$5r¥BÎŒðÕùÓ"Œ,‚©AH)ÄUèª96”{$[‹Œ³H»ãIpdz€¸kº :ƒÖÈa‰<¸íù< Ä:$©Ä·FŒKĹÀPx„û€¨ëõ‘oü
-Èv‘Æ^wÊU
-ÓƒB¾~ËÿÿøïøÇþÅOEúa?þ‡ÿü=žþõ¿¬—[oWUÅ¿Ê~ãÿt_fßô‰‚$^$Š1¦A
-¦lÒÔ¨ßÞßš}þ…´E}„BÏÙgö\Ö¬YÃÃ?HIø*üøS çëËgbËÛ>ܾ*¼ãÔ¿:¾¼ïÔ1ž/ï»è_Þkÿ7þž<ºº~rñêúâò·—W…ÏœðON//߆žîé>ûâüâúòêìN¡$gÏ/Þ¾>{öúÕõÃð)|ÎßÛIûÆ®Y2‡_P®[™ ],ùÜFH£o´ÀÊI‰Ûd„¢¡Ñ:&C6s Ô+úhuÄ ¾ºq2ÇYëH…¬£ÐÐÍÔéØhŒÅ\Âc·Û—]¾´š¾¢±øʘè¥ÇAvºwÝ\×Í%ÍÁ‰ÊÍ»¹DNŒ >Ù펭ç K”É:À»ºÙÀp-ôcOîËÑL0ùºOD8ËZO<øÎÍ” š ºJ“Oå߇N•BÕ‘ËÚ|þF&RZˆ%Å2BƵ¬@Êè“•Þ”¥ø–ˆ +å-óÛyÌbH‘¾ux‚M''ʹor+¸ˆ#†Xˆ$¸“¦ëÖ¦ÅiZÉ#¢F</9m-Bnm5÷&m؆¨¹¾¸¹Òv&ô;Ý_ñþöi•mÏI1•ØØ6²
-t)]D®<ÞÑDWÈL¦ ºÔ“…iÆì²CéáÖÃË25km,œP v²OW¸šO I\<Bh²]rjŒûÍ §„¯ý‘88oFí¨nqdÉ%$ƒEZ{ˆìöó^áÊ&ªx±×š,&cH KsˆØ`i
-Gƒ?AMXЦzI³'UêO¦
-^é&t££€ÎÁì$CH²’ZeZYvÝ h”QA ó…XQ;‰hŒSN€.á„ÉXç
-Ö /Bà!<­ÕH4+ø.‚àÊàÄLjÛÌE
-„ÂxôüØ¥tèrÔfŒ2I¶Æc¿Éf¦‰“Üy‘›Z%5à–®j@ ¾Ñ½$$Õ¾|I¹+è ®-ðœ Ò“ŸXT¯N›¶ßÄgÀ^3ðXS2t—ÛPX!í€;’ºB–
-r$.Tµd„»¤~±YàJ(£C„S>pÊH„NA§d ö§l”xL*'ÒFcG $0S
- lŒÄ ¡Xìx°8‘º ÓÛÈLÏæ(3/£JQë‚89ÁÐ:%15*î !™ý¸Àà˜½P4’z÷ÀŠD¥Fý’M–‘Î)[,¥Ú@¯‘º)zî3ÆÈ8Lb'H
- nDòi¬~þO‘ÁÌQÀ„˜#éD–៑4 '?ýß";ô¢I²gB0sGçÈŽ±"{ãòôôô~í{òáïáäëËkdîåÕ9(úÔAõ°8yöúåÛ¯^^_]üÉáðàñ£§Ç¥çù›Ë«wëÕ.šÑ×ç—?¿>{ôtžáÈ·×!ªß_KZ§ðâüíü?@ûøÓq¼ç£…ËïßKùO~÷˜ŸøD ™
-tùÔìNêChÆC²Bª&…Bð“V%748u¡Q»Œ´E 1PY0à !ßÔê·A-ÉgŠ‹Ìº+ðÅLÐ4
-T`
-ý Pv¡ifH‘
-l.݃ås¤w‘\b•]>°ü`L‹F¤¡ÓO¦”vïj2»·)§™¨K8ó¦4³Ïtú>@˜4š4bY ‚%
-YÑÝn >?/GFYj ê¥~ì’°?ò÷§˜7…QÉøÐøÔZ£ú»¨.¢BÖZ›á¹h3u2b‹14Œ4‘Óé±Ã‘J»t ¥“ë˜:{543˜!(5ÌKapq>Rtw¦išQéêsÕÎ…d@ h`kªc¶v á‚¥†œ0_ÓŽ4Æ
-l‚3°QæN
-‰\c ¤¦doÌ{˪±dlÓ7í&81`-Ú£ˆÀñŠ¦L›T9ò°h/Hº—¨l¯#ݧÿÓ{¦ÿ¥óÁXIâ*µŒ÷“£G Ûºk¾É¸Æ+‘dsÑ ²ÊÓY"p²ÉWèˆY~ا<LtF빟í~B¼èN*£&¡Ç£7£„¬Mt"igpúÕ`E:©¥$ fÒg‹ñJÆCÑc˜â
-ŸEŸ¸ƒÀZ€-·v3+
-ˆÑB—²ŒÜ&é‚âQ^4ik_¬³Ðz'ËzÑ÷=H„ˆlÙ,É®ÚÒ'€©l•CÅ¥H!WBÖ(êâpwŠjh½ÂÉx¤tV§n–V.dݤ~ú&ªf&½áî
-‹~ݵ"ŠiÔ~T\ÛøüL,¸M¡²ÂíÊ/øÐ¥íjd³0‰•fœÀ¬–PøPs/5ë>×r•uª³÷™O4Ŧ‰¦R±2U5‚vˆÄŒ"'U—(ŸälAÛËYœ[ŸÇþ‡Á<àËš0Æv:ª
-ÀX%TprŽÆ$ò÷óˆMr£rƒZ†}ŽØFLk YgŠ‹5Q C¢ÆËI§ V²Æ}B-$ùF節 Brj÷­{ôq•P6*b"æ¾ÆˆZ«âv3Ž¦ùÉ$$Å¡¤•^v}Iئ¼(´Èí
- E!S«ŸWâf–JƒdY_MÝÎu&Xš‰_‚Z\ºäÎ `Š"Û#¸ýryKËÒ” L¢Î—‡“²þ7Ýåv-)®DAWÚ‚Zz L¹ßãõ"R@W3_=§@¤ò±w$!± ¦~\Aå…7'Ðëq˜MåqPŒžÇßÿüÒãÇó"¤š¡7»Ü¥¤¬›w(›LÏØ’ƒù“®c®:¢Ý^IF ¨!w»ý«|ßù}rðU?®vœ%éç¿¥îèÇúAR¸ÂOµð †pþôNƺêaÈñߎ3—Ø'ËPbb8æìQìà¸?Pƒèýv6IÈúI
- Ìk¸9Z¡cwoÕ~$ë/Z@Æ—ztµ'ŽÕ•Ko:®šc pr¡þ£R¹õ6rÜëÒ¶ÿu‘
-Ýc±DÛi¨»«:moaËdøkM€q<Œ¬`קyøÕY\qÇøáËrðu˜§Ñ—ä|ç§QÁ黂xiÔËÚènª‡»;jß>è[E5œ‰ï98Ë<»Hš1z^ÃBÚå¶æ«j6ºeéíÇ£»‘ü&ŠËÙûIïˆ0V/èVíä•^LÚ«šSãG†lœ´ÁŸ(ƒ‚%Tò|"Êÿ#††bˆð“îw˸é ô®m~ ÐŠz®¨±n²·ìç3vÓ.Øbœ?Òs¨8èÌç&Õo±‘}1]G`|é­¹3]$ØÝ(´,Ô{ÛK¾ØññÃ7q>~<9•e†%lWuf(ÕI¶êNì^$‚Í¢ý`°¡W‘¡s^Æt¶jÙý¿PüüÛÉíN)%EBÉõ>þ’¾y+ "éìºÊ÷~`
-šja ø…W…|üÙh¿¤Q¥-ÜÌQãßÇ 9…ŽçeÖ Õo-‰ôA:tÌ‚ô„¥–¥5fâSå̃˃‘»—¥ªUôpô&!Ú{{̺´0cøÓ.fg”õÙ=q/jMî†íMc¬ò6)šúÑ,4laPN(Ž¥{‡sÓŒ¬˜Ä]çL <= aØsW[Œ.‘ˆºHè!ìL²BÎ×¹üš"ã9*«Hï;ôÅÙÀgð.FK§Ø÷Pe0-¥Ñ*‹½sÚ4»‘µ K™ƒñ‹Ç—ît³ÛÌ.‚à/·
-€ƒ[€Ê‚æH¢
-£<¡ 7º˜›
-ÌÈÏ\Ýõ|™~x|¹H5m½ËEÏ€*OäDÇ Þ3A³S<ö$S¹ -ã/+æ 0Úÿü/¨ìV >óÙqm—?þbÀ÷Šú!lÉÑÓí¥3¼REâ ‡%n?:ãÞa,˪ÅEo˜ŒGsb@q±Næþ¥·}¢‚#D›š5øçœìïÑÈ͈á?n”øâŸÇt!-üƒ onlùeHIÚãÜ¿m×þ»¿j‰ß)ðkmáõb–ê¥%¬c„PÒF;N~uùå._ó¼„Ûæ‹äáôè6]Ži£tí©}´
-!Nn:¸]=Þã—ÆãCL¶Ùݼ*͈ØI[f²CgqôÅ@Lû懆dÉ™eß·º4%f`$,Të“„~ä©ËWð儸5Oí:(¹HPü0™Yw…—Š†Sw œ±b¸9¯cýµ†“èãš}]ÓcšCâvmuw+»kˆãQì"žP9|¢¥rÄU©Ý<GÎBˆ“n¤eS9*„ßQ8þÞégHB° %U’ÝŽØ'ÿ0k1³H|É
-Vj·øÏœñ“Ýõü]_ì
-ï ¤å’Çbñ26³*Æ¡H]”ãA‚<>DYQ@ˆ ÞÙF (B”A(N„ºÌ& ‚>¢©âÉ|$˜¥x°7baØùÀpJ k±w /Dó6¦…K\€À¹Imö9=1–œÓz›rN=24Hƒ@2û -ª‡2J{Щžß>@”ÚÁ’Á5ÓƱUF¶ȇ¨n2¦fÍ&€€ÛÀf¹E$L3•Ù•<àH°Ñ–›:ã.KÃ%®„¡:v.%º#íG3¸Sì±Q­+A–+—mÁüE(X䑱éBÞ%4šǤ(OíIê"! ™IËhz9©ª~€)[¯R ÐlA<¢úxà CÊ"{·KYàh§pÐ4 ÎÄ«ä÷›Þêü±Ôy²±äÍqÜŒF&»5X«~²œÀH¤ó"Þ×%¡íÜ£ò«µ¦–»¾¿Eõ—6ûºqoê OÎàÀ)iÙ fín†Ò„@B±Åù ›ÓƈpÒqˆÓñ¶ºÄ‘öj ’G;Î<‚S$‚Ý(: }®õÔm0r%5‰ºK¥æõ ŠqR™bœöQLiq»ã²Y~yBB¨˜¦¸ËJØã©û…-D,dÏQîô6L†H ŒüNvrF5ÝþЩ°#[´S·zÌ E>ÉìÎØã¥÷cpPÖ^Z´1gÂÅ#çoz>õHŒd¬ï7|g¸™<’«.vºµ¹¸¹E¾ •êWeú« ÑEì+ÛKSšóÚS4²§Ýûq°þ”gû±àoŽGÉÆë0Ä‘\v!ée¤° <]`Ú½>§Õøø.™ d«÷éÞ?E ÑÿE´C†¾ow¯Zž²2‚U½Š¶åÿ'’ø©xÝVÑÎ,Cße TcI ÆS*ñՕȧÎRáhE,¢Ôô&×¼ñÑÛ6Çãy*>[öÂ_·ñîq]÷¯[K{Ðhä[–­œ=Úe]ÆèÖÀ¿³ òî|c²SÙ↳xwPЦʈ½_Ÿæ‹kHòaC5ßÞ Á/´ªc¾X?“Í ¤"Üûc¸¬ýËxÙãLAô*{‚•ÿ=ι1D¤œŸ÷Úó­ÄÌ AÀzl·»ªº
-Ç‘ÊÌýÙ†0óÞ-sÀ ƒ{µ3c
-¦ò1@–¦/µ´…ô<û'¿Ê m¤\|Ø0}`[®®×ørp¶Àl*L&”yöC'Ìã€Õ¾Bº¯>rî{”óÊFë@xr7®qos©x£',¬ßË°¤£|~4ÞmóŸ¸V&•¡ou.ç»ý`}ïÕ¹GE¸½¨HÎ<
-î_ÖŽ{sWq_…:3;YÅF9|Q.ÅäÂòf}&2²ƒ‚LÙ»¶ý,)a¯¿ïi3À ¿¹¨Ž‡]Íjðm³"´Üsª‘^
-¨½b`(F<"X¬ˆù°ŒEÔsœÎXNÞ€Íw ü&:âÅ®ž›¡3ÉÚ6òêàÍùÔBLY‘G¸Ò™õPp¸å¶?Û40Èì°Ý½‚ÃVÁ‘ €À°âô NôWM‘¬¨íÞ×Ð1‡¸‡ÔÑšK& ê6v‡êе‚³6Î}¡ñ nR#þ
-æU|¹¡ú;Må|
-ï!P}@ÂuªXÖ¹DõðÍ]Nbo.ÞÎ#îÂ1ûvÙ•NÞ…Çkñš#•6ægb²ˆSHçxkÂ/4m$à Þó*{h¦ðΘBö‡*p
-Œ‚õ è·qè(u!ä*8‚ÜÆslEˆPÌÕÒ¼t„súâqc¶jT¸Ác
-ëYQ:JGj‘!ú‚Àƒ5td¤Ø°/ˆlØGï—ÎKÓêðß5çh€Oi*@JÇðµR‹2à=¾)€/:ꌮN/â¼]ÕDÚ˸V{Aâ—;±GÑû‚÷‰lâ=õ‹ü!0ÅIÅ}8‰ÿ¡|I iÝ!QaÝ>qæð‰IIÜ\?G›.n؆Þb¦‡âCÿ„D4''AmaO #~jhKÈQÔ@AÚúh«#ŠÂ؇yiG¥Â$¥˜€5€+¡0iÒ²Â]@µ
-À͇&q½ªUùñø „"„fÙ‘–žÓ9I„CMlny}}.máz8ôk7“ö)R àŽwLP‘­¢2ÌOL\ •Td–"Ä“¨öº¡S!fŠßÁͼSé/ÜXÞN(ßh•q¡Œå%«¹Þ=yg”‚ŠnõüÉßôúÿþŠa¨@ã8KùÕòßñã<>Ô[ª ÷0—ι˜"§‘Âîi¨ŠèäLøW€
- endstream endobj 208 0 obj <</Filter[/FlateDecode]/Length 3675>>stream
-H‰ì—ßnÛ¸‡Ÿ ïà›´@³þ“x{°¾Šã­Q`uOqîšYl)RK‘ŽÝ§_Y¶c9ÙFô¦(W š(ÎŒÍ3ó›*˜jÅļõzs‘ýz¶þ&H oZo_ Z¯SŒ`ÁˆfR¬_jÿò×ufÒúãU{Äèúe¢VÙoƒý[½çÌhHsK¥È# 1(Èß±×júð
-²ò¼V˜@³°*ê^†a
-º¼2ê[ý79aýêž³y¤³“žQÉ¥úã>b°1JõŠ—´žÜÚyîõÑ8F…„”ª§F$~€%M€Þ˜’ú
-᫋οŒßp¢®¤H5x´§Žî!;¶”.)à”{GŒØû¢³g½Nö{Ißзò­‚`Ÿõ-PðãbÓâY×&,ø‰qUá(r+™Ð­û:~9ÊA¦ÛŠýk;cÔo:²lI¾wزóíIdŠh‰^d Ω¦Ò(
-—<‰>P=‹HõNxªH£®dœÈ´t×ðQÐÝâkÉäWˆÇÚÔßÁô+¾X¾VQ+øˆ\àA.¼ŽÈ9ä¼2I+’DŒžJ÷$Šé('ªSµu|ï œé[ÂÊ̦…â"àK÷•a˜‚rSRT? +Åsj뛬ßHd[j'’ã£Ú30®ÝÇÚ#[ƒWíéçñûÜÑ#év;ÿÁæé= t„NÕ­µû©ñO›Gø&·3wÎtùáîJJ>T
-HË*@,ªj…&Yẙ7bù[É”_ŸIÀ >Kwæ­¦—<‰È©,¦ã¤l ¨çRŠÑ‹—7_ò^†Ì¹ ÊYª$’\ÎÑèÏÚr‚êÖhš÷š6;5MC5šæblÅF#ÀO­ÁÊë´ò\ÊfÝ“«x4Q]Jþ& S@ß¼?å*B5á×’¥èf¹qFFe÷Iþf˜ïÕŸ1kRý},0ñM– ÀÎEç`ü>0#)¼Wð·Añ}ô‘—s@!§šia)ÓÜúã<ðñ¸ÚêÒ™>53<K´fûÓÎщF Ç÷¤­uÓ”\”‰(1=@éUÁ‚βº4X<‘µˆ9&ùˆY^EDàSà@µTh¬§ŽÎ!/±«—B>u¬¬XšpB!¡'$©_OŠIöVËSÚ•:­ÝWëÉc÷àK?áG¾¹ÏBé{C¾8¹&†&ªË$~%¹T„|ø({áð¼TÐCxªƒ,YÈb}-:¹¯šþÉé
-à[É QÆ9ú*6ÆÎÊ/®=×ÃÇ_çÇG>òrNª xÑAÀ4[Xð=88GRà¹(5±áD[\œ³~OV%3ìšj¢¬ätcïoû •Œñ*’;‡áL
-¨–
-õÔÑ9ä%rõRȧŽ•µ£KN(Ä ô„$õëI1ÉÞjyJÛR§µûÚþè~ïK?áG¾¹ÏBé{C¾8¹&†&ªË$~%¹T„|ø({áð¼TÐCxªƒ,YÈb}-:¹¯šþÉé
-<¥&6œ”es‘¬àâœð{²B§¦‚T¥-ênkïœ+M8ÃGN'Ù+h°½ƒs²n®ÀB"ƒJÄÏ2ƒ9Ãô[k÷Áiu½N«ÛϾwZÙÿAöœýdhaQó'ü,³3¯hm!‚År÷LHÇj*¢pÉ“ˆ ‡g|V’~ï° ‡ /éÐÉ9ÜŒ—ÉÙA£2ܪOåæ^3å›2ù‚Êä „11iʈ–²ù¨
-Vñ\Êη'‘ (¢%~\Ø;8§ÚèöX‘$bªžE¬z`Q'2enL‰pý™«H®vŒõÓ…6&_»èx¬Mݨh|Å|­¢`ð¹Àƒ\x‘s<ÈyM$Ì÷JÓQ ßjê×K-w :uRtmýÊ­´Á—.ü¢ÐZKLE!€šÃú2ñ!=Þ9ª=ãÐÚAؼjO?ßçŽ%l¿Ó꣕ öÇõÇ"óµàá\f/?Üݲ%ð[NVw%=¡PŒÁ›~±
-päì P=”FÙÙ†riµÌTÛÆmëƒ_òYA,%âpp5ÜæNxqg"€‰ÒNZ zdð^ÁÃ9RTöxŸ} y9ÇÌ®˜ŠŽ! ¦YY&ùœ£ )ð\”šØp‚Ÿ \ܯWüž¬Ð©™MÝš(«)}c3¤D ö\”p:‘øÁ¯ààœ¬ÛA‡+°È qijÌ`n±Gl­óäãæ ×iõ:«Ñ3ÂÏ/;óŠv%"Xl!qÏ„Áq|¦Ò(
-—<‰ÈѶWÇHï° ©F°`d} 4Ò¡“s¸/“°ƒæd¸UoÊͽfÊ·5dò•ÉAcbÒ”1,eóQºè†ÊÂФp%E6×|®=ñs?5ØUÑ4pðÓÐs´p.ï±|œÍ#ýýŒJ.ñãÑc7÷“Zæ
-³EÌ.‚‡N~K¢çýx[ë§Öµ,±ŽÐ¸|é
-b¹@_DÈ8G_ÅÆØyl™ d‚•MôŬM€è‘Å~YðpÎg£ù…%gw€ëœÉùÈË9kvÏ<Sr4d0ÍÊÒ¹È÷ààMHç¢ÔĆ[,©.ÎÙ¿'«Ô¢ih¢¬ºÆƾ‚Ò@Ð%—t’½‚Û;¸Ÿ¨ûèp:T¢4Ë æØÖº¢`0W
-rÛ†à ú‡^{J›E
-8u½ŒHYl(QH'ÎëKÉv-µ84`’rr³Œ]`‡»;3‹6„ óÑ–÷¤—áŸ-®``ä…Zå¸níâÍZÆ&ÜÈK©f­ÍÂGîH¥tgÊlëøÆ·
-¦s2%²&å&”î—å•zÀwሱ9ÂUKJ^8p_<·ìgØc3a>Úràžô2ü³Å Œ¼ðB«×­]|_®?\i°ÅÉØ„w—×ÌŽ­¿?G)e±½“f[ÿ:¾uÞ]zsÏ ¾Ð¤E"+Ve;8zxö ÞQ-¤®Sv-ªœà:wèÔy
-H‰ìWínÛ:}¿ƒþh€ZÖ·ìæWœÜ]4ÉÅu6ÛÅbб•E•¢’ø>ý’rËi¶µ>\!H"ÓjgæÌeôϘxÔÇsÎH|§¼\F±ø8”b´ÄGʇÁ±òžÄO›ï‹ŒãT~1:a ­”Å^H"ŸáÜPWFŸb¾{:_%ùéÊèµwߣ(Ë¿~à Ìîð¥X<R`î~Ø£Íú@"ŽÔ…Ñ”ãÁh~3;Ï E€F_.>Ë«”gÄã„ƈ­~öÅ›ƒnüè{ÝÒÞýÇõñy½Ùý¡vD&QˆÉ]ÈÁ6ÛkÇtòév"Ÿ>ÜPhÄ?z=‹‹lâ7€….¾bOiû·)}„"ZØÊSpÄvlj‡:Ômp*–\CÓcË‘¬ÀHV°fÖ®œÓŒyø$JB®Â|ëÖ^3$
-$åþ¾'H:†´kT;¸E”•ôè->†Ó,‚w‚ÍöÆ´Ø eiJP<-ÅX”Bm©¤14,>œý&xΊþªåµÒvR£Ab.+ƒa¿]w®r¤¿ þ»Ó„ßÜÊiÛPPóñVÞh÷x}­f %!ñú¸ìÑf}ȧ*¨ £3(ǃÑüfvž¶ˆMN>ÝιЧðdõ^¿b–úM4½ÅWìñ)Íb_ø6¥%Âée0ÅVž‚ëpǦK#\ÀÇQtIIZRBÛ Zofó¦šqyú¡ˆ7ÏØ»X«‘®AÅÙòJ¤ç=†WbѤvdšjC¡-PŠÏþžá؃B/¬jÓ9'Ü ¡(Ó|÷5‰*DpǦÅå–w> qøÝê
- /é=¸ˆæUé”Qa%±"ú3à Fü,˺¢Eíø*ÐÉâóû/s@˜/¬j‡*®9B8ŽÈ÷ 'eÙ\Ä÷lÐ
-µåo™[$4Á q
-¯Ö­Aí¨æ4c>‰’ÁUÓHo€Oé2¡i©ºÞw“ˆcp2ŒÎp Fó›ÙynØ¢L×´wÐ,y >Áyò´»öô¯‚(Ää.„k¿ÍöÚ1|ºÝvŒ[\ÖþÑë™\,g¿<tñ{|J³Ø¾Mé#XØæõ#¶òUÔ·E›ú8K.¡€è±Õ8V`+X#i Wr h+HâÜ*ŠŸÞÓ
-üÅ¥ÓOýø»O`ÐOýØO¿ì
-†„ü.)Iû9°ås u¸s Z?öc`8£û1ð—N?þâ¡É>¸1°¢ÿ¢Ô¿cNYý Øü 8Ôe
-¬‚ä`çÀug1”„Ä;ž*RîŸá{‚¤CwѨvp‹(+iÓÝ›p«`Ê›
-3:…­+d—†È§§‡Hy§t™Ð”ppmíéàq‚A–
-¨qÊQ Ï·ìjO<0ÄuiÌ=TAíØÔí!,Mº-¼ˆÜ…\|?´º—fµƒ´ÁJ6còpµ
-9‚gäf{z@Û»ÚL˜¦ŠößÔ›#Ê.
-X×
-j†²4%(–X»WQCpþù`¾È·ÖžkC°´õázÖoBľ¥jÚNsWAbþ;ðÁi÷˜ ²òi{Ê•ù·EB̧`ú.t¨HlT˜Ñ
-OäëÇ®©üˆätloOWu×qyÅšjYòòtá­96ÝU][~t'öD¹Ýµ&n4™.OY¯˜šîÚbESuÇaXœ‰mŠ— §%KçÚbÁÐywò~Ä{òÿ† ÅÚD\˜ ŸÀ«iÂuÃR Ãrä{4ǶLå÷%&JÇï±åˆº¸XLWÕ,]DI,ÉËÖX±d[â
-釴â–ÔGU7lX®v\‚®µ®°œT%'Dζ7Z£í^ Ø–Weúð9}–Ó
-W³t")i"ÔŸ~.òqbú熅„‰ÔV0Yrékwc—Ò?,ñ껀ƒ‰¨a½Lq ‘ ¥tâ¶Â«¼»ÖÁ jYjd(Àø#±¯ÚXÜòû‚©ºu/'§R ÉÂè9J±-¯ÐSë9sòÞvgBå¸í†«*,&Õ¯ÖÞåðp^<ì…Ù¯›hþï8ÆŒ²ÿpK7Ku3]ÎìÝôÑèž_¤­ü,«Ê<Mµ“‹pωŒ—]Ò<ú]A·wÞþ7n_Ú˜gÒcΩ%årÌ*–î
-u(yQ@‘ÞWdÄZl
-,ǵqÝ ý¸r— ˜ vås_|iÞ(¥Ãýð‰ÿfˆ¼TÐ4û¢¹@Û^]œîèë˜pÁäÁæ×Ï_p{å-‡\ßMN¯u,Xãäd`ú=é¿ËÓÐû7É¢(ßTÝÒ`˜7©?£ _ýv 6½_
-׸´i»7ÌJ4‡RôÕ9·^C›*©pˆµ§?Y½ÄÓ ©¯¨(>7sŒzrQ †KÙ$–¡äú;ö²¢g&º€>·aõ ÷Û‚y­Ñ`XõXû…ÉL¶O3rº±¾í6aÅQ =¥åü^ôM;ûeÿÏØ’Auú˜Õ=í-nS»)°*”ú'¿”¯¬I 2@rJYì?r~ý‡ÿ 4eÕZ¸¥• ‘'Þ.Xσ䈫•"í§þÙöµ0.Ød—™&Âë¤845’ Ùôw enï72ü­Aµ”X—3§[t¥§Ž)Uë€RˆÛ7-YEÉ°?h:ºÛg¼’…í"[¦~a¿ÀßVå‡,ÿ-Ò‡$`§^«ú 
-À%ÅÊ‚_צ ãpÎ.üBýþÛ/—¹'qûÿøÝyoDÔÊÚº*[S-l9j:åÞU®‘–ÄXÛg;…
-ò[©!†ýªXÌb5(ØO‡z¯õ5s¾Ð…¼ëýø&]®}·²68qô²¥r4{t>¿HQšÌ-̾´dAe TÂÜŠ²m ‡x¢¥QvÅJ†]">Çä£mÀŠ!]ëžëû·7Än¨¾£~rh2ú(#g7ÁAý¼
-¼¬ã×}ˆÁçkMŠÜpÿëPDç9'¹‰¦P)ƸôëÐ}\„bÉûuåP(lI<võ—Ö¥iNü]ɾï‰Ä_ðtÕ‘¾×Ô·î=Ã\Ðøɨð,ÐDÜ[%TM‡zIDÈË*RŠÆ&4ßGëÄ36%¬dÈvP! ÁÏÂ=Ãø¢»nìyývãØÛç<ü+Ã_üÆ54
-¤¥€|ŒþƒïDZiñu¢~  ”»¨ÕФ°.æö–öN ´í ‘Uü’_ž45WWƒ<³o $óÖŒŽ4¥_*dVÍpIã¼Vµð¢ñ¿E_¡³ýªgD‡4oµúRÑU‘åUTYeÔÏ+{;óM RÊòrV½°¼A¯“¹‹ÆÈPîÌC6›YÓ]PÔj¿ÊV¢ÀÜÆJkTx{˜uzvÍO
-Ýs¬iéܘÁ:ÒÝ«VíYe‡Y“ëöb*¯×­1o˜,¯_Ø?×WZŸwQx)ÒÓ {±(êNT´þù-pyŠW6’Ú¯eîö(Tíáéo˜ïlT…A¿/ùa=°ûNQFiÅÊÑ=¤ ò2Ûa(¿É!èUÏ'¢O²“ä]ƒæ!‡/Ù"
-:®eg0]+-CBfG:%á§ÝfŠƒ_ ÄE¯ˆûñ).¯íøýø£mŤo‰WÖ˜žêjÉâÝ"þ#–EÍ‘êÖœ›å@–ô³¢*ÔÑ°fN³ jN3ÈñÀP»/Äùá^mgÞý¾îmåüâÀ9&g§¶‡­Â€½œXѼì³gc•™Z0„¥L¦{Æœ­Ëšó. ïÿoUD6žô ϯˆA_ï¹Ò´ÔoäàÐ=8Üç=^ón»eë7Vüµ¸¾xµz³—>EJFŸä¦cøLËqvfk†ºï¬ç¬MôͯqxÙk}GÅ­;ŸÅ«`Í
-0)¡Mª,ü+F-FæòùRj>H[’uÏ Ø
- Y£’}!·ìø£x¸jeôáo5R­9K8c$ÿ·Ø¿ ?û×&{Ó/ƒ¸Ïê6Ñg¨)’O-Øk¿¯ŠZ瀤°²Éò‘dz/Wɸi­§#¢úÔðï«jeöéƒ ÄFE¥>b-ñüijø
-yÍ«ðÏí}ÑDý'ŒÑjÈ•¬¬øÓÛ¢vvýlÆ‘§:LMcµØVüRyÏEr¶í5…Ÿíƒ‘Kö²⊗¯U„W‚H1­ˆp‰|ÊÔ™H^ÌÇ…cCPÿ5$ÿ­¯>N·±Põ¹P¶S…•m;)F¤RãR°ô‚]y°é^…F SÁf=~d€Ô8/òÆ‹EkuÊX…B п‘ùK.­#‚|´1[³.} nùØúÛp®$Û
-Nâ;5¯Y
-¯³ˆN™'§„OÃwð_N‘íé#ú·ô³Ê®Ü7l_¿ÙþL\WÕ˵4}«”0•ë ›Øs¨6]6+T-n‹\”oì}96r
-¯’‰V¥ð3d1ÿ-«å_ßþ|ÜOx»ÃõžÆöÈØ{¨Ôæ~5\VÁî§p’¶¢bB­U,Qö03ÃëœÅg´-öŒõŒäΓSí¯áUH™ôáQ¢µÅPÞIâ•>Ë J¯¡r×6ýÝk§Â|ʘšÎQ*–µ}Ò ‹¿9TYb_N@ËÚ[Ù<'Ù¹üë•ß²§#0ЮíƒXi¥&ÎSj{Ÿd¨úýPALû)x…ä=4›J
-$µZ³-#¶Â@­ÏW„úÍ<ýnêj c·‰®šâ‹ÀÞnMzµs³,–ž‡ó!ÖŒŸˆD÷ëÁJé(™ÃKû8ayÛß®]òT²‘q÷ðÚ;,›í]?Í혹§VmU|$%úÒí[šó^U‘)˶ë sµâõŒ¡ú1±ÑɾšBš9ˆ\ÛDBŒ;ðýð2Ö‘ã‚èÜ?\h 8€rHN(@á
-™Y9U¨ÈêæÜ>”l;Æp€QÂr©6™å ùbÁ«ºo´:¤Ñâ Ê­Š¼kÊ™ír{g"Kud™K€r ÊöFb »Û !†…CPƒݹW Õf´õÜbEOè\Ô½ª{13T`óÁêÁkÚ›pß›ÒÆ“Bqp1³T›Ì)ŸàEyžø ¢OÕaOëç¨UŒ†ÃÛì«má šÄ·°'dî'—-,}Æp+»sèe";hj(‡Øáj¨^ÍBÉz4™ª÷ƒ7¨GI¬òR+ò€Ãý
-Õ0ú‰ Õl1©PÖ­®3¾4x¦zK[§ †ªh¯ñé"[Ó^/J‚ó ’h2× ŽE"ÉÈ2›ÇÁHµWÉG¿-‚µ‰Hžªló»‰Þ°ðOÐé [–ª\”ZDÛŠ¤ÃÉÉ›¡<FÇéCsÓWaªÇÃÓð›Ê•Ï¦“BxóÛXñá´/š9™ÞÅäJ†éŒ`ºKÂt#›lvhÁ}3»ÛÓva«V oLfFvšrÂËNîP-˜
-†p0<n‰ø)"i¤\ÛÔ&î†~s„·+rؼ9ܤ@’5ˆ÷Õ¸„³½Ì=0Ò.Z`—Ó¼I™Ïœ"Ïšöýq2vQÝ{ôøt«êÈm"#¶äQek›³a+SBðëwötSy,ì¼Gé,é@×klžàÞMÀ@S¹~ÔëPCDº«8©'Hf„‡láÅí½)øqŸ%z?^û”wz?˜5µ[l)¢3*ë
- ÃIÌ°“6Né±)ô—¤E¼Y•îèR>(¤7˜F‹n”¦ó¤S]( ™3¿“k*[6×ÜôÁøþMd¯ÛÑp ©P ‡·X¹˜8Œ)¿ÿ˜³ nÜ‚8 ÁJ—·{|ô˜»6óÙ†>Y1h;à(ksHs³Àm ßÎä³õa
-}4GÏæéÙ V>Z‡'gñ$`oV´À=lÌîIM1áD•è“,edzp}¶UÂ1p½J ¹\¢©éÍo—JíœQ®Ù ñ“R7Ñýw­¸,íh²ŒÃjÞ,ˆÞCñ_b„'<QÏaâ-n øÉŒ£À,ÒŸôÑMRêË÷PSˆ©¯ÿèïo€xÀÍèê1ÚÔEØ€áÁœ'ÿ¿0iQ}€cS}N­xú+}¦Á¯À=²‡Õ<¥_vS¹Ôå,NÁb÷ü×ÖMðTD´fÈH’;…§ÐÙDt2dtm$sØ>t‹üS€2ÌO±n•UGÞ“W‰Wmäúô¸'T¢VïEŒ‡zÕ \ÀÉÌÓ-À'ÎÍfQ$
-’Ídç1Ë4iÉÖ"”V"ÔlW*c•ù,icîœBAÝi÷5¯ŠÃZ˱øSTU·ø¨Þ„j2 Zëúé¡è*|räGГ;16çZy$¥%4ˆyL.++íKUrnJ:dìewé4UKœ%Ðxqï¢G\C00Õ'×…Éæõ–MÝ çñ%¸³[’’Dm%G'„
-µBÞt„ðù ¨X±ïö
-?þxi¯¿üúúãwýüM(Ê%wKÇd‡Vv@C[x¯á
-|Œ@÷~˜TOPªhÉ6ñsOÒŠXvÓk‘ å5ë”+0¿ãÙÆFé–¤qê*Äñ½+%Ç}®Ðºð:çéE·°¨¼<ï£x,ìnxºï¯«¯¬@™ä¢17ðiu2ÙýV+âY(Öïû}Q™=µN¹÷¬ˆ,K Æ) AÝ·=f`…˜bq¡+´n|ôô¦[Êþ
-G–mà˜4Tsýb }Þ—é=8B*8äÉ=Ô¦X{Øx­ºÎ?òMp¬vrfêdÍ÷4̾í¼ÖðVÆg5k½{dŸcê¾k­Y'ŸŸ¾u/Z4\ÎŒQÐàáÑþÕ”t-C+Ùd®ýaÃúïuìùùK|‡ñÊÎ^©Ì©w06ÙÓpƒµR¤ÔFn>s›~ô1fI›7ß×]_9úmßi[m&ÒÇUp#ezÁ(L´Çù°Ný­†Û‚€Ûní!´åmÚ´µu-[_8òÕÿ
-H‰ìWmoÇþ÷î‹
-Œs¬´ëXó)jƒ±±³L9ãiH‚ëDÆl3æSEüt_c2æ&p>FNcÛ˜<°­1&v±Í§Lë—]wÑÃå-9»ÅWéÓ}…É
-j ±k#iJVî$zYçk9¥[ãcH
-TkwiªUª³¬çìÓ}bα‘j…«’7Xyš,²HåK¶IGw’]°Ù´¢w›æ#)=ä-ÇzÓµbŒn­¥d '4LA¶Ç \J$δ?# ¨Y(¸]Íä·(žƒr•3EòtOWÖ¯…(þ°ñ |ˆA)QV“Y»cÐȧD>åè IÎ+CCÆþT/:¢S,¹ªb}zV¿þo'×OÏÖÏîfë»ÕòæáSýWþ†¿þÌÉùsR×ß,o_}Z¼YݧÏöz2{·ì(§Ïïï?.î–7ëùmýÝÃÍòíü¬Rõ9þ^ÿ*/óêcyP}þïßá÷“~_‡àå_ ýZ“ª_Ö?ýSÕ·ÂY¼Vœ|P’Š^âÖѸE=R!=î$Ó!ª{™IàÀNJ³ËÚìËWO,ì›—ò•Ú¼Îªb@OÚ0¦fòñ8½Z.oˆÜÛ‡›Û»ùr][}–%F9JåÿämäðÙj[M(„:È3t*?°Ú³>x݆hë׋=Y(½þ8YÖÁ?âz21ŒPûX{ň?Ö¼ Ì‚µ×Ê)§ÙDü.%ø6 ”vº'û¾RPk£”[Žúp¹Ap沇ô˜Üãc‘#1”qBD$Q9ëÉäO˜ù¤¾f~—ùhè>úà¼9¦ý¤—Ä„ä"6‡'yDs3Œö¦¬ÿ'¹4s¿é¾œ9å›Cs¾)Iß|6ôˆ=’É°„ÞgcFÓ¾)y¨¸ý†0Jâ×i¼ÕȵìG›”Rs­u] „‘!3™U‘<uI*’"ä8ÝñAI÷Úa¢ QÙñVÑF5«HGÁÅ¢-¶,[ØFtôôe¢ÇÐpÄz’ž2cåß_v'­†(LÌ‹J*˜!ÚʳIßȾV}_T…–럭‹”Dw‚åòvQ5»_6»Ü͘ŠfÏfÏÖ'Õ·€Ö³j
-Û×±á¼üOÔó~oüegõ$$²kQ r¥Ë®a®ì’z8ìÈ™Vß"›žm‘aâb›ÓÙ$–|ÉùCA £mJ‚@OÙ6©¬ö™+ɱ&r=ô#.†Î&J†ƒ»PDªï #RŸ»ÒP(ÃPô„d‘Ù9¸“‹Ý MqO®° m
-ýE[”aÒÔRT È
-¬¶V`I`è“ë÷ÊÉ&¥½G›±-¼Óu„}ÑC9£ÄÂÀYÅX”‚÷¢]«kqÉ!a$  P#Ádƒ 0E-Xð4ðJi´z!YÁ-¤†í˜Ü¢•z¥ Ú(Š¬W€¶(Âì[BŠ¨„-¨€Ù‡ad#aÓâžDY˜ÌÆù|/!Œ’¹x”ŽêX9›uáÚ( .C),„ cd@ìk—µÊ×(œÂ§1­X™a´à<JÏ×­ÑÒ<`¶×2‹ †l¤è‹o£ øN£]¶Fy éâ)äd3)Ž;Ù7«>ŒÃïôÅYýôÕúánù¶>}õîæý|r?_Þeï6
-_F‘IÁø¢ ·ÑhÑ`b‚0#º
-ÐL%3¢ÎâòÈêEÞé\U
-7 vO@„›Bý ÿá¼j{³:Žè/ð¸_"ÙU!;³ïí'£ôCZP+ 
-R!œàd!þ}Ï9³?ÄR9\_ïÝ9sÎõøÄAÆôäaÑö9B¯ÁÛ2b®ÍzQ‰éŠNF(JÎBpsÒ-€V{Öí §À6røiâÑÖ:YàcΘDÌG ¬ä¹h‘dÕzÁ»À8ÉM€Æ-"C5PÌ=˜ÅLUqˆS•[2t‰hr‚};XalÔËĶRƒ mÕ~gUCbkGbyüY)j(ȨIo²œÐ®@xT
-ÆÞ £ä0^8§ádf†LQcÏ (‚¿¹Àf–vd%†ô0ì^ÓP8ŒÝ+Ø•ª~νMX9#’àôK5@Åàm{jW®
-
-‡¬zQñuƒyªm`™íd\
-$Á B¹$ÇõÄ}…3ͪ=Eéš]æˆôÂ$²[aÄ 
-šä®ÞPOlHã…âðcBl&W#2ä³$ôtö*ò nª‰
-›@ïLV ¼T]¤oêGEôðt\9­¥ÎøäUØIak.Ô5à8œ…”pØÆh–ÄÆ%ñp ƒl†ifµQ‡×É·<Û’Z&ÅIFb% v}†eiÖ˜³bjZ64ìFgVa<¤Ø‹´¸ä]}ÆPÃÁÁÚ‚ 䧧ü÷ÕÕ)¡nêĆ¥¤ûË•pä¡"’âÙDz•gv‚L:°È.¾ƒùèB,.žÃþº¦4vbÒ¡r`^
-á§›Ú R–’4sÙ€pà.™¤Æ)Ëyd˜iÚCZ©åùgÛåÀJ²Wm`p•1L3Ø(¯›´3† J/êEnbF¢ÇIDár¨QkÚ¾ÉÄ Q‰ö¼Q¬%ý†CÃZö4W NÈ™[´OI㌆I£-B–]ª™F^eª4Ëã Φˆ1I[C’y‰tc×/¢HbŸÉœÑ,k€µØ6Óùò ©‰´ÙBµ”æ–˜õÓG®Á‘òsØ ‹Îñ.üq(ë%Õ€1Q0Öôpx„ž5´¾j2z[\Uèõ
-1
-‰2Ê<
-ì´ M…EP :Dd«ñ™kLÿ̘ŽÔs$täOïh<1ªlѱ”@©ÁúÄTÑÄç9ÍçΑ9Ä^Ñk˜VB) GêrS*Y‰^êÝlM}F6ö˜Çï‡æ/µ-üG‘ÿ
-í ŸÍçœS4âÕM
-8ÜÄ=I÷ë;€ÞUúïÿ1ª?c‹a1 6»-+ì*(ËJ×ÀÐÞM[ bWzIË£¦ù~åQ627Pp’^^ŠtÝâ”{Ÿò~×lcð»$—w°'}1qk)ߌtç•Ïß&§qÈîy€MÚ)ÐàœÓ®¤ÊgTԇÔ»šAPç$ uÂrÀîSÁÍæx3ô¬!5C Â·¡.ÇT ßõß•¹àð2Q¹èƒžïdõȬ–MFY5Lºj?ò¨æ î#v¹a«Pƒ´T
-eýƯiÍS³.Ë*ó@¨Âê¥t×33e„÷ZÛ,ýqUw‘•EÒæÌú2" ÝŸú@Ss£ ÚLâ?ò²sæªx”Ѽk›Ë+{<JÊ=(9e5þNGvÏ4þ|¦. Å£²ç¶ÎHUÙ•¯Ëe~ç³Ô33p[cÌ·‰þRªÿ×ö
-§ÿ¾Ã4¬âµËÿJP&ÀM?³à ´Apƒ1£A´ÎÀñyd £ÏG+= N šd\Ðî඘¦pëïa®-ßå–ƒ)ØÉM™Û”6= f2&‚Mšðk¬1÷qÌÚ”„J.ET™ˆÂƒ˜<õ°e€ðè
-0 î+¡
-¡ÔØÚÛ MJ
-’Ñž‚uøêÔbã W¢7¨ÿ§¯*9ãÑ2+ŸÙ†ô¶gfëÔl³" y—‡!|êí@(®u ”*·ùÆ×ßûçù¤*µ£YF`Ò1[h$´Ú| Û÷Jmg„æÚC‰2S…v¸ç°úù¤%{íNÞpm¾û¤z2ô>¬4ôåÐÌ7|Ú«Y7}t0Kkñpgÿô,—®˜ÁžLkˆr$¥õ„J²Håtס<ZÇÏwTŸ»(\°7Û~“x=¦‘ 8 é
-½]¢ ÊÎn+ò)N{´Ö§†AãW­« Äߎ0ý¼úÓLÆçíê°ôWí9¼Ûd¿ \,OW+h„Ͳ:Ü‚r{¿1É€/×ý×LRˆä]
-iŸf‚Fù¤/‰ën&U.¶õ¼¹m¾3XA_™pÖd4Lu…˜Çgô›1É¢‡"œ4o&Ù!?tsC›•n0ÉË.KZÃÙ£ ¤|I·ÎýئìèC«¨ôàpò“l£>‡{áõ¡}ë/'Ÿds_Á±EÞZÚ°þtÿ«^þ ¥Z JMÃ!•’É~ª‚€zº~꿯Ô~û ÔL”iH¤huÒ€P a0 :g@zV–õŽAëÈ,qô°“ˆq¤Aò¹$ÔËœXƒpYñÍïó¨o<à+WšTl¨’Mpu>ŠDîïPttX­]O(4ûc‰î$ÅÊ鲘s¹üº z5Î'qbio¾!7ÓJÿ¤F¡Úå“@«ýÑts°¿¾˜ >“ÉTí)ýŒ|^Л`4»ë>ƒ0œƒ ÐýõÌ S‘.XÌ…Â/tÓgÇ´rÂQH*æzLMƒh¯¨“ò¤¸¤ˆÑ”Æ ïÝSÌr@¿ž8˜Þ·Uä'Øl†~nl…Ò–=$i¥y§&HzÞ··Yê}¥³Íº‚rÀ<‘'ÄúVý‘ŠV©zã“T®åÊóž¸ò³L*E)z‚¡%'JbˆõðgŸ§M—u™§
-lƒææÅõ˜Ñ1ÄÜ\‚4su«P_Xà¤:wÈ}Ÿ¬4øÉ£BKŽ@”• U°¤Ì°ölVZ'Dô˜Æ#<¨›r—®lŽ”µy#Ô«‚Šåw½•ˆZÙ²´ÚyYëùN2¸¡X™i†«œ\É"n9ùUm…qä[GPZÚK¶²€çêˆ'´Ç&ø0ƒÙÖ¹ÇQ—Ø{‹064pbÛXy”….vý‚ühWãóÕó]Ó
-£ugá|!¹Z¦…Á¥Àº5Œpyh¥Ô,ÊX.
-‚ ¶«¶‹Òõ0À¤;gí'²Ÿ0ãw”šp´¦u£ÖX¤£Eö·|A BHu«ØxŸ@¸šqÙs-‚9•z´w‚pôc,·{VhãZGŠû|ÏùxŠ N±u˜f»ºå´á<ÜÅ”¹åÁ9^‹Fé˜Í^:q6#›)ŦŠÌ=þ{o6œw®wf² ä,éè
-K<äŒbSv‚b-zž'2{­§û†BYlÐËë¢# ²Ã.kb%â¬rç®Ø‚IÌÝu]ú¬r}³×³¤Å–B=±=¸(¤a‚¬Ö¹od˜5Ž†7ecè‹dçnžŽÄk Q¶uV¤{¬R[cWG¨ºÓ»?M+]ç3;'a; ê¾A}ûÈ«)›G…z]1zRë|Ö8¦Þ«3‘”TJzšNÎ
-ƒžU!_UU_ÖPjê
-0¡TQ×Í QP­œvŽµ¡
-Δ68š]Q‹q—g,/ö›!e¾ÄØUæK‰Žv•ùvJ”gm”ö ˜Çädž[¡ôQçôQúÖv–>êˆçÇŽyCî”zBÕj\\]LÐÐ÷ïPÁÒ6vÈ*µÅͧò‚ºr‚Ä£Vñh©v扂$Üæ3HœïºXxÅa°½žÚü÷k¡å~ùdCÁwôšUò´"1ì4´æÙ;
-¯)0„œµJ¡¸ÁØËŽé¦ã/?Òcý¦%˜èsæ¹ÇI®X?‰™}Ñá'ÊMtŒüýôÛ‡¿þþôúí¿?¾}ú÷Ÿß¦“ýø.½ÔÇÛ^ðê#:=Þ÷¢Wúú%ÍüFµ%“œÀE»Æ —î‹ *]ÅWê«–;MAAÎ6ÝY§Ö³6ÙÊTÛ ÝY1ã½.™mÖÆË,y›¡;ËHUͽT˜á¢Os´"Žè[ ,ÕwfAÐÞYzVç¶m*ÈJ !Öš.‰ÐÜ.Ú ûT®èò‚ v—K>+ôå%—4äQ#^Kâ5c õy\æ¼Ö5u®´OF†šÁŒÀvN`AA¯RÒ jIíèIí…Ålu+¹R®ÀbéM‰,24XÏ­âÿºu­p]7Íå’‹§¦Zd¢ÖnÝë¬W Õ‡¥hB#&9©ÈÊûëÌršÜ 2²¶â[ äj°Ó)ε »²PnMZV, „fjFÕ‚]Ó—æ
-y°Á¼Ù»‘\üU9\µ.àÊKä)×r5e;­H½ ˜Ü]y¤r &L¬pÚ¸J`Ò@…ÃLˆ†K£`u㶰åÏ’”Óéj*rªßÃ:e\^›Gµ$÷+F׶M¹L¦4¦,? dÒÖûaæÌu)^>_¶åvÄ-;b{É°!×W¸±/'ƹó%ÈDf&Æ`—sr}»ÍOåÄd|ÖáfÌy5c›a/µ‹ºNë~y%£®GÈi}G³+œ#f똇– ¯£ ÉHêBh¸´@·¦:Ú†þ<²E IÌQÚ3(¨íT'êfWX¤kAÍÛIQ«6¡–Ѷ–6õ±cÞPÐô„¢Ô4ôýQt¶„õA¥Ö#°hÓ·±³
-êÊ |)ZÅ£Q1™óÄ”“¿ì³_+%‰æ–òô šŒ×k¡)¡Þ>ÙPðÝ•¡¢ŽYŽÄ°Ó°kŽ­|¶­ ,~GÖŸ°ãÏLúN¨Ô{¾’ÇÔãvå¼v éÓp­éX6/y›íÉ^ÑUî:¶|Šû$‚ÞÈí0sp¸sÇ!Øfñ"h\}öÞé^S‚”•Ì~¦·7{Ù1Ý~‘ñ'J4=>oåjÒVEìúÙ]Îö¨q×éñỂöã»ôRYÒþÀñ¯>žÓãýw¯y¥¯oBAZaý‚2æ¿*ˆÌlQ²S &õ(‚U¡;(®tù°šÓM³ÔƃeŒáò·A¶3-Ír¬+}V=¬)"ǪÆ¢*êq®Pª\Zçh7T†_ê`©¾³‚öN–s 9ÃFPr·uY <öVƒævÑkQÒW*Ë—•tvXSopµÛÎÞÅ2fÄk ëÒ0uVõŒèΖ ^ËZIci 55ƒÙ€mm²
-*¥n=Ë@9c†zws›Pre±¸tT_âœÿ³_-«–7ô î?œ¡3ð¥^ªÇ8‘MÀžB¡ Á¸oiCÿ¾¥Ò£Tµ÷±»“IüàNö]§^’–¤%ÕÊ£òiÓÏ*©k–¸LÕBÐPóSEÑó‚æÖª‚ǯËS”Í+¸þVn,ôŽ¢î”â”mèDˆ¥X î ¬/ 3‹g.Èi0™÷*ÓÝÉkrÓ&O‹<Ρ/“\ ôa¡&†–² ñÑhì}[‡g«
- ÿ$…ýºR*S&4¶¹lÄ2;+¶fáGî]¨ÛgÓDd^qPÏÝX/ •£ÂËZ–.zWH/ú)su”¥Hvטäq„F.Ga˜æKí}[‡Pè\ðª•ì^´µ`¬o=É:hš0QOËÅ*ªo¥ïX2hKþ’f<„¡Sÿ¾É13,Õ†!öx6OÒ|”ĨXt¶(⢥ûi¸j²ÎTäM:¤©ÈÅAªÀs€ê2ÅÛ¶¹NU:¯Ð±VmÂ6!ÑÏ*d’Ê«í@oã„ȶUA©}t¿Uö¨—é½›µKÇ*ÍØ$å¾Ô&šûTYÚ/$œØ{J@ÒÙ‰CÖªX+ç;ƒ Iiœ •‘P\u×yKfOm^6Òd˜!~ÈS0 ®t˜ ÍÂ?#@¶9¥FÝÉjŒ –}T\†EZ+AÊ0¨nÝ{¥±t2ÝŒ°Ã®@H}@ç»®«ÜQNcAé¡èȾÀtB˜›ˆô¡HEK!EÛ©åVccI·X¸Ì$®¢-úCRG‘¢>IUZÞ¬V
-JCÁØAâ[ÒøƒÔù²„ä”ôÍ9wY»<­H±(غ†ƒd«Uu·®I×ieHW…œíVS2ëu¨¸Õ†*6@ª)ÖòÚUyy¯ôRÚá¾ò*¾Ø1S ‘¨µ"o‘JAÑöæ% TM®ÊL•OÈQÊÀE=xAµìoD®
-o^âƒÿ¾øë7ÿøçw~øÏßøîßÿúÛð‚¿|û^áññºåƒõêðøóOÞöý(SÄ,gaïM”ÀTù†ÚðC‚ÆPÆ2©á0e%=Ó2z'ÖØHH%"8ù5 0Õ»gX¦èŠúÝ6w˜Ç‘~ק6õ;­—½ÜÓÉë CQ‚Á祑†ÌNh8LÅT'ªâlv²}?öÁóTŒ¡Œ6¦öYÊm)U]Ùø£Ö¾!»tÓÓ–[ûÔc§û{ŽñŒSìOôœÇÔ s^8ùPÙ¼0R
-†ncØKZ ?28¡š»ºµL±M£-ÔåÂÊ[1²óWœ“í̢눘4Ió_ÄÑfCB©µ33V¸­ â,©êÐÉ…TUOb)¨©4¸mñ5+òÆhz ²`%ðy±¤ê³†ìêê7ƒ¼ùF%žÐf–d™oqìñf…øˆLêùŒŸ¨Þù
-s_ËN­Tƒ2 ù¥Âçp„zGÎu{BœPëݱ€Aûh:G–è‡Å5!‚PŠ½æ!ïT{ã†H§It£êAé†>’Y¥ßŠ8B W^ Sd§Ðs
-»'¶ß[êTH‹¶¤sç]žÝ¤tÙM–YºáJ•…,ã¶ä6kft$KØ)¶c:•UâøÀ€xÍ…°º„"áãB(LÆYGI¹[1
-YÐÔšùfyDÍ®ãVØYÝÚ!›Ðï1ÌòÖ‚èGÄê€ÙÉÞ 3”xL Ð^Éc¯·ä¯ÈX„®CL–¨X뉹GîŒ}[f[™ ‚ŽJ†¹Î±Pë0t ·éÕ‡½œ+[²®Þ†X®G $¶ußVÕsºÜ[(,íÜ^‹\žE‰!T“ÜŒùnÆÔÆÝ(à…MhÍ_¤KqÄZàЄ>í’ÝítD“·xÏbÇåšr°‰sn¶…óDËNåç@mD=&^âÞXˬoŒõ™PSöjMÎÜ®d®i„>ïi½Z£O(Á™¤Ÿ¹W¼"ŽHgu¢™–ýy šåñ5PUF̾7ýƘ|õòíË'¤•¾í—1H™‚þ¨ÿòï¸0ÃE%b
-èù¨UÇ‘fдB;Ü#¶7¸'l/ØpÞÿäúç·?óU$_Eìá謦·¸y²nço¢$Àþ%‹æ×»©ÜUÌŸ´&Èrþ—óh~¯åî+뙫ølûããr.ÿ#N ˆ×õjN¹&‘â+ÛÓ|ôSq–ÎoxÍeNc¥’w)Ê#äœî¶œÿKç÷Zn_ºh~Í3ýåq¹G,ý9Ö'½~+Aüôñð—ê?ýt‘‹[¸õ–7gªw\XŽÃŸgEà­¯·—=Ü#¬.-´ÑÇʱEVâlW¥D]àÉfá¥å>ð7›ñvÇ››ëiÁF;{ûÌ å R—s6â8—íq•`D¼¹`«å6öp´• ßž3ȨúØYeA å>Â7›ñvG›ëiÁÆ/{û'„ßl˜?­>üJÈð%ÃD;Àù1˜÷r!Á¯"<Úˆ ÇBi2±]IVVœ€¯9Aßx®&ôÜIžãréFrg`ªAÚXdË(9 aÍõÍênK¼»ãÎÖËnû·R}oR¶cÙÇ•²Ì}0Š2·2u8…ŒC·DÙüq ¾Þl™L½Ü1Ñ»a;y“Ø^Ó–*e{m†¾è@}û¼ÛRnï¸ñÑç ©ßùþÿÁ÷ÏÐz¿gÅ•Ÿ«9Ÿ»ùiÀÏjÀOWõæ&Ÿ*q&Ö}"^ôÉuÛJó[î³â¹$Êõà3Áž¤äÕËÆ»ä¿u‘ê¥[ßÝd«öÿ›¤|š“OXp›5s ú“Œ»è¤›7¹}ËDÖ`—Œ¸¹â ê“Ü»1êGöËe·®ãˆ¢_pÿáL HAîQ?ª_ÉH¦ÃI –¦® &e0,þ}Ö®>|[@ dyŠÝ]ÕU»ví~¸ñ—ºüóö«äüoñÿÙÿý‹ã·¾ùŸõͯ|ù|2óŸªÿã©õÉ¡õÝî³7Ïž_\~qz"ïÇWË0•åÙWç—Ë“ç_Åüòøòòpq~7Èo¯~:<]~ÏÂ8ÚŠ$³QBˆ$4e®ÃJÓôÑRh´áÒP
-˳oÇg__^œ~dç½ÃÇ«³Ó“ë“ã³Óó¿¼8}ûçÃÕtÀ¶Ïß¿?óÕååéÇÃÙËÃŇ“ËWWï¾öâüøû³Ã¿®WÇÇq¿øøÓû‹Ë;ß9ðfŸòå‡Ó·‡ÏUäg7–'O—×Û}ÆÒðæÅùÛéÓ¿íÍç$ä|³<ù+½¿XýÝá)å}ÎÏëŸõÇa÷aþúÝﶰüÈOôŒ°æŠ?ñÇ?1ý¼Øòõò÷„å-èxýôè
-N×½®­×ê$¬m ÓúX­ù«·¬–Á¤,1tÉ(
-¤±¤Å¦5-âj”…
-çóZ¥$¦õ^à¾v†¨ ̵áj"iSž¨I÷4fú æRÉ÷®+ç¡v7¥ÚªÖÔ§!0q–Gá)fA/Åìm÷Fb–i¨¥Àz>KK[Ì2TKËí&ÐO;íH 2¡l"«th÷áúqÑ?Z*n(+æ!.K’I»‰‡~ó½ZdjZGšY¯Un*…ï¢-VÔÈ]jYÙÜ2ÊX
-ýç_}ÄÈŽ¢Ëç˜z¹Ð…¹ÎÐ3 Í÷HB:ýLsµˆ.oY”·â¤ÄPÒw-Mzð-|í„ì¦"Ô·¹'Œì†Ô„3]jXš›Æ‚Pœ‘Q¯ê&Ø1‰e(I¡rI³ZW‘6µâ»ªä6&K¡Å
-'èRV=2²®¶ÀBy8³­MJtÏá!q(GM"+xm3edjˆ$ *t4Š
-æ2F)ÃÝœ™pÖe8Eƒ±@ðª]ö¤qK+8ô–®ýÊ‹š«¨38Þ<ÝDÉ:ƒ’Yλ¦’zVDÚB´]y-`E›æÔÂ`½OÑ{õêÈ67U³â¦>‚LÏOCê÷ð¼5:cOg¶¤B#yjˆ>®HIi„²G¡‡$*Ñ…Cni^bÖ“žaÝ4§Òàc’³’éÐœü¦ehß#ÞŸLNL\zðþl À'í̤ªŸÄAʆó2ØóšB”%Aì"¨[„rr:k9òdÚDþ'çûÌÔ2ØSÓ¨à;´ê]Á}ØŸi,ÃÌL>1àºÆ3¦$Ô> HÆw€tÕŒ*Õ6®`‹ÁõšÔJJ§"28r•7w,ÔcÚÕýX¹óœ¤æ–ÁË%Ö*‰ÑN5äÂl÷=Fµ™é½#P#;4W ²s‰Äi: °[±è[ÐÀ&?’*?
-Ê(…ÕÙx2ŒAØĹ‚
-î"}½ü­ËqAòL½¤#Ò£Ž}Ì÷¥¨¦7%‹Í×”Ñ<4x¶»¡If;OEï7Ž%Õ¾&ºÄ·ÉɺŽ*õ0È!“\©vWßi Ž#ýnÒ ó;¡iõ=4†ôÍ I@âõ¦#/&àg"T€k íùLb^%µé™’Tk4HßFõ Ræ]êµ›¦ÌêÙð7çö²ä}—ÕSi¬w‘v|èC~Ãòü°û I5Ä.U,÷îŽ)αÿ—ŽNŸ¼V2¥(7,–&¢oeh¼Ý3ŸŸ”O’™n!ˆáKèïÁª1à+&˜‹hIó‹p\£ÒAIlälh݇¸G­ÈÉÅ;툂,®vˆ2«_K˜r™/CŠYS‹BìdªzïdU,o’BÌˈÛEéî9!B¨$’ë,½èO:‹ÉÙg‹ L´gQ8U%¡*…9ß%@£RFK#DxY¯Õ8뙫GÛšS_’Jur1m¢
-†Þ†_±že…t…Ë·ä¹Ã÷ÆƬñP»rìOÍet§Þà/vH¸‹2”´üYZÔü9ÍP`›\ýÆ’¦AeEν”²÷4LKá¯Ñ!K¼l%d ‡“jBöXm»ù ¶MÞ °0¦ƒ m4Ok«¹Æ\YŠu‚R[ÌEE QˆsÝhS‰9¯‹ ÆÄÒ”`v oÓ,¨S…s—µºõ¾ú8шö‘·ô}Ñr»»¢XWE£^YG˜þ‡î2ב¬Ê¢èÄ?< ZÜy
-Áî t×ñlyÊ[3Ø
-¢ý2šÛP¦sª§1~òMvÈuùœ®j£Û2Êó\µOÿ¨±VVô™½uaº›­kžÑÙ\²œÀ“‘øØfŽjJaì6ê„9YJvo¼‹ê0Ÿ-™:ü¨ãz#²¨œ’óŽclÓ2\Š¤ut׌ŒØ`D×c£§i,@æQö]º÷ØõÌq®Ç©ÄWY7»–º“ª¦O#{'¡€77o?&IÁ.±l†n#s­ölCcI%¬ÚÃâÈKU£âN9ŒQç´º–qFÅë6çû)=|{äŒmû¦
-+R)’\ÑnÚ½9Î2d;((ŽÊ WŒ¥aü™çq@5&Š‘…5ã8yP×
-63+¤úݸ\­#uÓ¼ŒÃ^"|üeª³K2v<e;L“*¤ÂÚ`îS€p(ëN†<Eö]S=p&³Ö„”)Ù¬P…³òLe¸‡n¼§Û©Çëf*S„@¹â2† \ºÉË«ˆ,Õ\Ï×Eî–¬ÁN¤LL™Œ ®ƒÂxÙÊÌ@VÄD¥5²¨£²Ȩ«”ñR <’fämk³nFòÇ:1~@”ô •ÀS„Eôùp‘z™´-—RÑ©5:#9â+!ÖPà×TIï²})E<Å,ÕªN‘âØ‹bÕ£çÄx•`‹«+ÒEíUƒ¦Â€ö[èI«„;TWÕße«‹ƒ@ÓU/çp´,S¹7
-!ã€Ì%*ĺÏYÖYw8Ò3W(9Ó¢µ`iYqj$o®©~)«PÈ©
-±‚µÕö½Èâ;jS
-å DT6n4EPaÙî)ëVÄN h(¤ºÙ€!ï·Ž†ëâ¾*PÚ6×#¢+ÛÂ×P±>ƒ¢T #I…Ó¨t1Z «X©3Ũ;ô µÆÆÍ>P
-†¯%É&*UZ…l€.Ñ’zKˆ7WŠûúâbuû\ÇU.OV3PEVv`ôiUSCÈHšÛå|O Mke¶,ïT
- ¨ð§€K*AØA‹«Iň‡Ø¡óÕmúàþ0’1Ư{ˆ晕±ö4„@+
-¡Ï%1Q¬©%¶P¶¦L%ß·î9Ñ‹‘ÁgÅ–i—a`×æK–ÒxÚʉˆTž5ªù]}
-Á,q· A\ˆ±d »‰~ÞÁdIÓ0 ®qA…®®ÑiÇ-·ú^ñ¶àêÇJ¡¼ôÖ±”å tmY­„*h·[è¾s….ÃÆ©º—ÒÚ²ÑWuŸù¶<¥š"¡oµøà÷©Ø±\¶pƒvpÅã#X\#ªfÓõ9O¥
- r i\Ñ•|/‚¿£ê¤ÁW—‘e¾"-¤ó ¶®ŒbJÃW*þœÿ²¿¼¤Áˆç—Ð>Ú±JR½Ø—Ý€;ÍW;C™@Õ/ÀFW9 nó… *fÍG$ –ȲR.7Êuaç„šîRëè:r&˜pUᤪq •í«Š6t‚­®Ç ªEj:/YÏÖwÅj;™>.„“\Ê©F`
--·w5¶Ñѹ÷FJ­¾ÝºR8Ø-6ÖüN)Ttsòvæ&ͧ:õ‹f XWoܪO¾w§Å§}>tu›_Ĉšß#FB$%^1݈;‰È8Áž‰6´³VØ¡²î®oÙÅ~H”âzÈm9%‹%vC°È]õ¡Kã+¨¨Çw±ÁÓÅ6·8ƒ\DQ¤°…êÏGðs/·G L„Ø…Ò×÷ÐNÍáY÷D7Ìf„‰~gAÇN˜hT ¿Y!Tê<›|hžTkM‘a™äø&ú¬}a?N)JÂÞ©03þSŸè0ø_¨ñ°Ê9®ìÐzê&n¡KG^Ø3¸ÒU£úž=Ž¨qfÒAíxkÑz\líò$èÝ; ¬(ßÞzòFz¥ù^ÑCÐn˜¸t›8uBÓ0ßÀǤ¥Ñ&8Ð] 6]zCŽ ûÕv®è"ÊQý/È´è’pª°™#+ÐF|ƒú;ô£ŠVQ—'*þ¬#ÒÐ9Q{WK›*;ÊŤà§Ï­ ¿ ”r0b4˜­ÈD£ a2*‰L¢(£ØŽèOcP)+VG+/jø<ld¸“ÊøïÁôÞHÊ‚)ˆJRúò°ÖÚÂj¹‡†Äô’}›¸LL?¬¿tCc¢ØƒîRE+Øź¶èè©áóKu!©¥á®J.a¨+äßnð|Rä0–Ò$æmuСY¯¾L²"Ûb=f¨s¨Ì(]R ^eX&k`çq?èÁxg¼V² Õž —Vµ>¬ÛI‹ÚȼØ2ÝFÎ(tæ@4t¿?—a@ûÛdÔ± fØ]ÞãþäÓvî†äWJaí÷¤‰UTæ–•_ ï
-^7ÁðôSj7øI±VRr©Û»ëúVAï2'É°vô]MŸIƒµ›ªjK ²_³ò
-h’PÏ$€ÿ[¤’WXŸPÞ=c\¥‰e {®^Ä;ÞO¡–Å|KñôÖ–…×Y8Ú€YÌF¢w4"=Z“Òñ$Œ- ®¨D-„HvOú&ï‘#KPdh–Å:¬O,Ã6ñZŽ©/øØ/ÒË$ÕZ†¼s¦EN~΃^ºâÉèPtÈìüxàjßвÐÕ¿ Ê€væO9DÅ4û@“3ÖÑ ÅõgY²)<0Ã5O VȧßZó±ˆèȧŅ’d(„‡¹˜ý1û¿xcÖ6*ï2l=³<z¢œƒ
-H‰ìWkSÛº½ ÿA_Îd¦8~)vÚááÑÃá•!=\˜žãÄJâƒcgd
-¿þnI~ÈÁ)&-´.SH¤¥­­­­µ×n_x‘7ô z×h÷œÈx~L(zßhî¸á ALÂÎÆãˆÄ-¤!µSÌ»††ÚÅútÁ¡ï'QL8¤Š3Ÿ·P»ï'/€EäÔ™qdÉ(:ön ÚÉ6hòbnNçûøg4ƒƒ{Þ(öÂÀ¡÷è=jŸ†ñ9…Ô%®p¥†>Jm Ó‡A乤ŶÌ>¶aÞ &¨¹çEsß¹_¤-Vâ{Øÿ=œó¼¡"ñsŸ´ôóå=|ù >ü‹4ÅFw0q‚>Q‘ ã—ç †»tÁY2FP#sˆ›eÛ|@üèC"ãи"ò=Ÿ.ŽˆÑßzIà¿—67VJU:aÇPËç(PXXâ¿|”Ýp6“À-N³;u¼à§YK‚5ÅBÍräïˆìß’àÌuùų-Š-¹ìŠ1 ÜuoÙÚü; ½]4¡Žë‘ F¶ðt«Ë`Âbö»7µ½žä܇Ÿž#:䈵ÑùenXS…«¹á·S_cX~O®ˆg½€F{ÿ+%Ì>Á×6ÚGAx¤;C `Vëb(Ui¹lï€Û·YaZÅ>¶0ˆÑÍËIz7 ÜÄ‹WYºÑbñ¶4‹ú„f9Kâ—ˆÅÂy™¯P.¤²ªè²¿)é’qI-\6]Ö:µr©“DJ’¬êM«ó¥ÛJålQüêóo¢Ðÿ‚šN×j©[•úµÒ}±Òí‘[׎ã7¥uSm·òúgŠÂGŠnå<ýnñö ÿÍ#Tmõ›VÎ*ÎÀŒ4U×™D× ¬¨ªªw;ØîvÔÒÝÂÖÚ)V4:ÉÃÃ=:q¢›uµEĉ§,øyôÍPC¤ÚçÄXŸC4’ègh.q¸´‘ëƒûëŠEÉäjñ°²p„ã(n ¶8„iþÄsöÝÌ
-)í§`ƒ«1V dáJÍõ kS[Ä4Gf1å5ÒxÁîòsæ!3J{§ÊÛ[r<l¾­ª˜9ÎV³ÝMhÉ*Œ™ã0ßG‡‘Pü(ü¶
-”–@Í÷dç<a¸ÚÆŽ!u,~I8‘n:Cê¸8®&9WdeùÎ$ V+1†Hq÷aÖ ,߇ðP:EŽÃåÔäÇÕKOU/%ÎNkæ©Ç6ÖÒ”‘fz_JDŽ5™Ug{ã"MùÿŽEœ?¡Ž*ÇgÀŽðB€™fg7Kîš)Xr×Ì¡yDS,9¤¹ V)¢Fæ‚-ùkä.Ø%³ÝÅ»ãÐÁÙ“6d°•ÞW´ŠW†¥—ͳÝ拈Y¹–€ö† ÇŸ¿C‚ÁQÆéR³ ¿{Hƒ^¯Q6ΨL`<%õ§¬,À ; ^ƒ ÜÜ?iC‚¦ë³Õ›2SƒdúbŽcá-ºð&+‚OZ^¾’mÔ<}ŠJ«dDü|–,~AóËöA|;n˜Ð•–hÁ%ÍÔ¹çMF"W^ñ3€TëµbwáŸù×-Ã,@Ùöc˜]†u˜5ë1Ì*Ã0ƒU8×Y€=Fà2ÂXâ½Y†éK¼7Ê0m‰÷z¦.ñ^[€™Õ›âì¾zÔ›LãâÆ
-Y´]ð좰„‚…+@Y’-H©*W×d©”%%-c‹%¥“R”
-ÿ ­øÀ×t*–ô{¹$Í”g¡Ee‘Ú8 9Ëg2A{ âSVÙæ çh0…÷
-IJw×F|,]õi}o;Ìèà ó @Z#é¦ä>傱6•J9I¯ÛNÅ)È7¦/j"Ÿ(
->*pÌ:¦ÐEÆÄA,ô¨é˜«ÊËýŒ×ÏbÓ¢¦ba¤¸–žx1XÜU,{D‘¥ " ¤\…©÷ëm°Æd¹ZäJ¥/oßѱ屾ЦŽîÏ‘5 @f‘¥¿PZ-e±ÑÙÇúö=}^ûPF‚~)ø&ò™Ÿˆ±ÕÑa~À-<FŽn¿ŸŽÉ TjÞ¯ËRE.•—î»;c¢\*.ø'é«–£G¨Tþ•Ù„ýèKD¶æîÇs¬g.ô1£ºÃÕ_?Ì몱h[¬ga˜$!4(† ‚S‰șB1Xïä‡ 9kþ"]zqáئc§¼YžÁ!5##¸üÍ…Ô(úú_Ou:Bz›ŽÎ½ñ¶óˆJõ8=
-CŽKÇqɦåbêÁ (Á„ ’ç$7U˜0ÈsSÇw0È€Eæ—ó ”ϧ:‰9–Þ`w²5At+GñˆV©¥aíáòßRû1Ÿ}4<„°-2rlÌù%Úkµùµ`h
- ÄæÂH
-¤ljÑ9nAo1ı:~3ì~Œ×âRZqðDõ}Ó±‹š‘ gM Ю<ä]j¡ó»ÙšÝKC6?‰4|®PZ×A~µ¯pØ÷R)-Yaš:sh,e+8ËÌ
- ¨°"añN“2 ôê:eÀ4EµèÙ]t}>ð¸ü°¼>ÈØPÄ£|Te@`:ä,„;†
-àà - []'pÛ¢3ÌÖn—Uïl8\Y*¥ÎÜ ïÖÇU#ºRוŸ÷\R·ó‰0åå?¨ÖÙ]µ‚²K¬…âf‹)4œõŽƒlÙYéßÚõ:pF¼Ô°û<1YêÍ -—{Á.Ûã\^À„d Ù^Â]`0¸µ‘ÒñžK¼qázNùÈ@Dgé«"ÖMa¼+GF6 Ð}hýT-@ ¢Ç_äÃ{3ÃØ/PÙ€+&>õ›«ðVˈTÀ…  Å}OFÈQøöÎÞVÛÛÞÍ€m-'¬1šüà >µˆöEqö€\.”6ˆÖ*ƒf§S)µ0÷†”^]lÜ;¾z±s„>쟷/uët>­MŒçgíçû»;M‚rl³üþõIy£Vúò\zUë~Ú9¯[Ž*·O
-ç•-Q’6òyÖúÖšìç7ëGŸsÖ÷MVgo
-‡Ï¶êGÝç–/tf7&¯ßuëÇ4É‹—j+—Û™<0ÕÕþöäV{«&ÿuj·¾]7¤¿ö•9í2¥3°§{/ËN»%m^5¾é;W϶ZãüÙh¥²M¹:–/ß}ü¤ ›¹Ëd£Q¹ÚuýxÖ¾®×Xn¾×ÚßrÚ»§ÚøÙ–›¬öWXI­ñõ•ÜÐëú‡Ú¸1µ›Sù/q)_·[ªØý^?~µsåé—Yóóä3…_Ûß[­ó¼qPù¶© 6 χHsžmU¿íî©'jéÝns*}9:V¶ŠÛ{·û_÷êÍ÷í&vþ|yy¶1=RU4ã¿ÈÞɸ;õ,‹ùC$[dók|>ÓúÖ«kï“£tÛß¹ÿÔΦÅg[å£Ëëºb¨;ó½çG‡òüÓ "ˇl\T,µ#îÍjb Qm±KH›¼ƒå«b^«‘¿¹¯Îõd±-|^„QŒŠŒ‚(*Ý[ÔXbÁ^£÷vQ@cf¾9s~?<À^{•wu9üüK—SÞ``&mØê[Ð)‚œç]m5Àž_ò=Æ•fåý€ä[Ó^"2võÛôŽ
-ˆ "qÔø%EïdZã¯o|[-br9 Ž0³H'’¡ûA‘é´ˆ(™yêʧâ“ÓÕû
-çËOÓµápsÄÇÉycU™S‘ÏBíN‰ydÄgJûÞPð#^S@tø¤´ç¾ºGÖîØ›#pädß„°ÅŽS¡”‡E O’#ÍkC"Å7ºŸ{ÀcEîá`.:7Ó¼žƒO^0úZ%K!ÍŠT
-#T
-§Iƒ½eÏÏp‡ÏTä«s/=4Å7ӭ˜–é¬\à[š*dé5'2tÀ+gÌi놃°(Ñ_ø)ÁR(£‹è“©—"5xšÂ·odøOÂÌD>¨±± ¢G†Ýƒ
-IxD ?aª'A¢w‹–åݳLåÓæ$"ÚT‘J¦¹"RÄA 3±ÁP)¶š+7à¿$bfIA,!º©ü(}šüêW)æmt' Ï‘ JDŽÔÃ(îæÉš AáiJá\¼ï¨'®ý/ñà†«|‚eñFf œîáH!«¬OÄÌ”œ}¢ƒðÔ–ôß»«ŒÞLŽXèý' Pù Œ_×L«¬Py
-:
-¶ý¬Rb$W?C&Vôý.MÝ]@VFnÇ‘p‡{qvR*Hµª
-*KÌFžÙ§\5,mB: ˜ÖwhìpXâ{3ÞW‡¢”Ÿ;…£4ðškaƨºŒ›
-^Ÿ 7fî£IbN¬ALp/IÃ]_<MTÿVI?cØÛôÕa( „–û|6%—€‹çNæ\ÒtɱF(xwôê¤ò½,eaöW¨r¢¼2ŒÄòµV#]@Ô”NÎÿÌ´;ºé ’ý}ïó¯ˆZ~ö}’¬<$gßZž/þCy•®'ˆ%Ñ'È;»FÜpWP@£¢F¨(²t÷Ìyö)ÓÓó'_êVÝ[uêÔ)J/¼nŠ"Uf `ÆL‚fèyã`„–ÝîÌ0?PäÕa–t·'!SÅÞõ×ú¸ú ˜·€íñdóq
-,ta»V€¢·í?}éIæÝz)5¤î!RÉ6š0_Ž³âôR¨%¥½z­èØùññš1]¾+Ø‹I>ø^xÝí]â~0˜‡–ëDgè?ºÚõHXÛkí
-=ùF€Åé±vèU2?ñÒ÷ÀøÚÏ,¥TLçÒ>jLœ\3,{èúàêÀ–>_6|ôc×¼ ƒ\+ÚóÀæajnBõVÉûN××ÕÔµ}œýÅY謓ĢŸÞw"šÌì·d£â@bä1l†ñ3ŠÏô‹Û"lñk¹ü´8âJ kU0#×Ð6~ð¡©p0”ËhÅ ¨¢ÆŽè%j)‚W÷x©¢zݽx–AðweÕ£3¬2JSD&Öî[D‘øÅ6²/º “ÌÝ™ä¡;2Åedˆ{ÝIV€È»4Ô`úF(Ä:x?
-d¾ûÍEÔº)t#)˜¤Œÿñuê ìOuù øa/Ùž3)G hbF&Ðd•î¨–(ÅMµ ‰7ÕãÙ8ªX‚;©1Å%BæG]DÊ/³Wv`êÌkR²W ÈSÞ‚õÆð °iñÅ [—´ËKA&ÅBÕÓŽØm†Ðš$©KKäîaÌ5¶WÔ
--Ü
-Þñˆ>+ƒõÖ Û¢%JÇ £½#VJ{órk÷|±£ø)΃Ía“yÔh*7h~Çæ û[੸>øý¸fî°«º£
-ÄT#zí& p3µò¼¹RßÃAø(²eÛkœÚùh*¯ˆÔâ};‰Mï˜/±Qïcç0L‡þüÕ72Š
-Åa¡L­
-‰Y¹Õ‡Í¢–žÅÜš,aîwé
-Þ9VÏq[!DÊÝb<{ø,‹Ùl\_§k%"ûB—Èä¿"T7’‡®‹D¡‡â*Mp5ò«Oùõñ”ßL´ܬ™¶vA0[ΰîøŸÊƒï«ˆ‰V"‰¼(+¤§¢"ëÉl‰Âׯ)Š„ßMWÎÿšÈ eV=™d³Ù oÉÆGCñßÂÉ*HðÊJ@ÞHyÓ]0žwÊJ9™…øÐÐDysÇÃ+{.Wq‚äRá̃
-HüU1§h¼ÀÛŸQÇIœ5 âÊ4=.Ê{I7ž9Å”““SNHKÞ#Q7Ëièìà—„l•?›"/|Ëä™ýCèš’!ª’@hÆJa5^w¬Ò×Ä%¾?ªÃÊ“Ý@ÎÕtrtì;¬nœ}µHÇYî6XÉÉ"ÑBË‹–GVæ‘® o‘ +’i%èt(…þ8Ôeçö!FøËøqè6R¡Þ†ÿw¨Ó©ëšÈ<"+ˆò‡ ©€e„Sª¢‹Æc]̓ËÉü;¶à´ÅdAsèÂz–À,[B6D„DV?ntòW—D©ÃU$á/½9AÚn›Æ
-Jb`š
-TªEQÒa6)€]O+¼×¨ÄBÜ?ìZÞê2–Å¢¶ û¹•íJ
-‚Ø=,ô(Çl~”ñêé4¤d’ÛœQÞ–§VÔ±µsù×Y“àx"Ù§@Ù…?퀗D+KÌð «!Ó¶‚—ŠûÕÍ,°‹”«(ª °—º5ØOž6‚²â%¥Ø†守¬¦ì@“©_ íY:.½æ¤¨rí+‡©—(È6ÑQÇ‘
-vƒ•Þ Ò-­£‚¤Œyô™Ø"Ø·‚ôŸ†JbPêüf/ÜëgÔ¶øtÌž6‹+šcŒ½®â~ì}+‘[ýÅ—Š†YñÀ®ˆ!Ff¹ã\…÷扣ÅëqÐq6gWÛÃÓ°cÙ©®‚ò_îwB…k*m^Œß¬%/³òñ*E©$¶!CW†´s-²éÆW0+Éc,D™cX8«\IpüPŠìï…F*p‚´¤%`“ÇóyâZw9Ë'.]Þô˜_ Aæ1~6ÝuìÉ1P·hÃËÑ5g/yF”6o§w
- –Æ}Œ£r £?ŒÍ0KV™Tm!<ó «áÇæ̤¼`áô
-ì«FÁÁvÃÛïÅÅ”ÝhÃ5´´AØÒðÁØDI1ò¾!xx¶cb»£Ò(ÿWŒ.OƒêÑP(É:ÈÇ’ä'bäGáô.(Ÿ>ûlp@}ûÙ#a[³¥¤y™¥9–§ŠŽ
-âÊFUT
-X𠀃¨–×?[VfŒ éÿè0kö°wö1¼ò*;Ù$ðM®÷µ9ð+›ŠÒ0°¦dƬª+MD]Có¼ Û=JUÔµGÄj2Zù«-ÃAºþÜè—ãYçÄß<;cT*‘ŽP9Š$“À•çÜN€'c"*M£<ÈàŸí±”<2Ò³ÚÿÝÙ &P·Æ«ðÎé/·b1ç‹2å9ËÜYcWf_©§â’Nøx=ìá”ç|aÿe¸FÚ0+ótp@ÿ0øÚbEŽ)Kpl¦¥5(sÜ€Qž°F!Ü9o»‚ÜgV‚´†±TrxÊ­ìü_D5Z¦•c±y6R~ï«asÜ*¿ŸþâÌ9o˃j«•IÖ%ôÊ®¡br‘•Þ–·äm¨ •¶r\ùD%ò½\ühè?©†»xi(Wj›lc×¼éèÚ†V*T觶D Þ,‘[_ßá!BÅ]žtÇY"¼e¡i±‰¡Cn@„;jD„ìPämaäWé“D5ÐK
-tàáj»DéyQŒW2ñLjœÚó‘E]H¿Çɵi%›s¦êðHR±°,‡ÅîãýS3Íü{´.ŒoÒdLÖÆõÑ°^(V±`9Íë,qw/Tû¯Â¹«9·³n± PHÒB’p‹¼M 47Ì“L]~£fÂÎK®½1•ùÙÜVš’ ÷ÎBÅáUWóRÛEoA¦‘È|ß}Á¯ ®ÕÎI'Ò´3é¡IéY2ךE‘¤3w·íðXhMÒûÔð Ió„_1„&}‰M.*4I“ø†4¹õӾњ4˜„òÔ'ÚSW}–pxn^E®ò•¬Wžî1¤©7/
-ÒÑŒ¬oº“úrBÛ òÞØã|ˆ$m4©!6¼Ô¸8\¨¤°—ç9}‡•<9Û
-mà2«þQüƒ‹ iB¸(¥6YÑI_|> i2¹Ÿ‹&©YÉí\šnù!†ôžN¥ëî’tVZôq¤M‡Ç÷ßMоæ‰)¸Ù2}4i¯(~»÷mièŽËMR˜—óR
-–Æ÷ÏhÒÄhDÖ³dIꪦÝý=õŒ"uxÈútZÇøšºñìøNGJ“ðâ MÚ Ë>ÆŸ©¤5ÀòM¸¤“Ž"~K€KÝDAïÃdW?#çÉv:SHƒR‡¸šŒêÓ
-Ò¦Eký¶?Æ4†4u“Þ­ë3iì§Y•T©1‹¯­ïÜý—Ôí#Iw¾8–ô‰ÄI©¢ü‰9˜\(_ë©Ét?Æ?’ôÍÇbIÛÞb©’:<—¾~4È·'1&mÇ=¯õû|M*>ºP¤P“Ú·yÃ%cüñL¾—žjhÒNña>ëM§HÒé󮥒*ýåÒׯQr]ÇN2äp4i÷KÜ?g3q )dQiç­ °ä„ éè•|`÷HÒL7â"c6÷m½4‡yz®“.ãË¥ ŒÛtP%¥|EóÜÓ6¹æÊ
-iØ$…,
--ÜöëÛý‚d%‚· “Ê¥ÅSbB4ÒÊ(Ö:°^‹d´ÑKUjET_!iU¾Â¦+¥‘–bO‹†ÅDWë4qw®ú¤’*,:­[’è%¯’RI*3‚Q¿„…$¿rz§)åzQKx]³:ôù¡ç©óC5_½3!‡µŽz±ýκ%› ÏÁ´^(?”Þš³æÀªçúbÒk*›u+Øe.neŠßºþ ìš(¾´r¬5Cû ¼uKÏ|Lj]ÚË”w¼ÂZÛ!¾Dá­ËçÍiµD,uóìZ-›˜Õ™¦·™šuãûÎZÖ¾†Xc8ÝÄ\¹‹ˆ½.<Ê®©\-´“°ÖwÏò–À['µ\Áˆ¾ðÌÒn¬õK~›XëîªôLëEÄö»zq†[ Ô»Kb­T¢ø1ÏŠ_Ú¸Õ^ÂÛš±Ö‡rgÉ`­TÉÃG¬LPî@cM6ɇBÐð9翳XCÃ(éÖj4o½•Íá¢,›öH„ûç/°*¹ö}TuýYx8Å*êÏÑú<©IOE
-üÿ3»Y’Ý°³Ù`¿ìããæòÎÌ;ïÀ[:äÒá&b¯óþɆ;v°jM[àï÷‡À_fïÏÑ]Ø)í¾,oòoº}Ifè–^:ˆÓƒ ¹s.äN÷‡ç¨SX"NDñ¹ÒKuJVÞ/ÌéˆwºßÛ2LÎíû¯µçtdY™Ð)UÿÓR^¢þƒL½ÿ§Ù!½^y·ÀGEÔ)UÿˆS¸Aý_…N!!×KÔ)
-¬Þ$ꬰ¯„ìw–÷ó99òRÜAÜœ³N~5òÅÚy¹¥ÆÝÀÁ©'»N=W®H=%”zŒ¸Öu6_x
-Ó¥žÇ÷sÃD“†f ?5s±@×’a&©¯G0i$WO²Ùy"OKÀêLÃÅ«iQm¡»òäŒÅ£#é $\ЭJg˜z,o©…Eœæ*ød*…E‚úyÝIhÊïäWë=iÄS©eL\(Iãò™?06T1I’äUÝ«»~ù‹ˆ‰Œ–0.º_Bª¸y÷²v¸.*ó Õq+xx²c´Ò]¬ îS1<Æ lùT.ªé¿6•µÁóV¼Ü7}DÑÙùtçJ*ÙØ­:í/!6†¹ :ô¥{|Ú2ŠNe¬eÕ‘F5…\6"¤ —ø2Uæê/ëäõPbX@+ˆ¶Ü “˜±ç!ˆí÷v‘õo£ðû8¡9H¤ÏŸ¹Ôüö{d‹ÁoŠ—ó»<‰âkO“ô¼›ÀÁþTŠ(Á”BÃHé¦Zvf’ 2€È–dä.¦z-ë@3$
-¿ôPÃoH˜
-îJY ­Næxó6½ðB1-Hé˨”†>H¡'kˆi‚r;*¥“`çë1©ŽG­„9ìªýwv¤#¸[,Ñ"lG”ðfórxšU§ßçípùûétUŸÏÚѽ‡%D4 ÚéÐ;âÒÛ„
-ö ›ª‹Ü¶¨8Éð©I#ãäúNŽ<>À/†u ÿSÇ ÃŒCòü/À
-H‰¬Wy_ÚLýù,a K´O¡
-–]‘*(n(¯X
-UÈ÷g&ÛL˜™LˆÿLýQ8w=÷žÛ(•oíùÔ¯YS©.> ßBõäEñ¨_Ö”Ú‡^W_bZV©gRð¯«ôåbõâ©¢vž5IVϾÉØSY'^®•Ê¬,ê…h!:_WçËyJ«Ý–ÎÔ\ñª
-ÑŸÝsñqÄÍØþ$Æsø³Í¨ä4Ëéd7ƒìtâð;B’ÍžrJ°#öÈendƒºÎ>«|ë½S/ ³çúv«éB™÷þ4”=6C™_…ÇPæ¬Ô [‡MBéÅò> cðÓV(ÝÔás“-œ—¢vAc.—Í¿¦Û0 ðeF9|_lõ¼¼Å·X¤?;{ËæôbX+—`õ­,çz?Þãjîx¼ÛnÂ1`ïõȶIM‚c'ÜÜîž²¼_£Ê‘ö§ï2Šf22û=®ÿÝÑ'·L£z¸µÌ3ª­×ßWäõŠÅú=ËŸMÿÇ2ú‚-^E1£?~×®0£/±Xrß2«GsG&\ ®l¢ov¤í„Ñä„i¤÷X#T4‹ÇZR3Œ~DoÚ#ÃèäÁeT’‰ëE¶ÑvúiÄ4Ÿ'þ[Ð…@'³nÇ™F·ú°b <d®quÌÎK–è/³ÉúíËQ}Æ÷woïüïX íÍcs|á‰ømaö)&k æû_è{Ä}J¼9Ó¾,Z»-{HÙëßíP̙禺0Ù”@
-Æ `èÖ”€8Uké–ê³\Ñl+`[Ìûž0Nê"@.¹Ô¯Û% IPÿÞ5Èmï¯tÆÅg9Uî÷¾"O?SD»Âê»=ô'a«'v ¨óå|ÄÏ““%ã~áé«›ÀñI2Œ0ãŠðÐøÀ½;áòE<é9ÿ.»rß©zöîÀ<‘³&‰P`,Ö´MrÖPd³È¬iBËmÇMP}ú ™Œ¡î ‹åIú“/I]£jb¸b5hÞB,eŠÆƒl?#´Ô¯Y“œ0û7­ßÐ2~hÖ-6¿ÌÆX(ÈrûòÍ;ª˜¥ÏQ'ƒš»ÈwP­ÖäJ`^Iín “ä{ej°ïSç ¡¥›–01Ó­Ðiêu†4ÑÍæ@sÌØò)¿vD„™»™¶qÅ|àL~nù:z+Ygï¬)|ÌYs3fòs¸—»äLÏÀ÷ʆ_ÚF«Ý–Î\AÚz,]y:î¥ÍÇL‡‚gÌÔzÖ²ú±Cï®î¸~;$ÚÇ “ýʉ6Sv‚] (¾&0¥DÖ÷¥í)»\YdUwõc¬xì$žn%’5 Ñ’…R%¡ /†^ÎÓ©R˜é_J·˜éÔ"ÂrêÄ.Pýìio³roçÆ]dÖ¯P]÷øõ“dÁ
-nmùy@3`:Ùóº1„;k›OÕ–-eÍä `Þ/ž±üs4ÞùªŒ‘³6PÎD;(cÆ:µM«'غ¿í&î@ª4 =v˜ÀØ/;&ÙIª@,tˆ{^¸ 
-ÔÜE¾C:Û‘S¼@*XÔ;èiwcÌU^ˆ–6E~Í]iÁ¦%™˜éÖ;1{
-( ÂÜ@Âyw2äm#“b¹P½þTI±ÜuIJ5ÇÜÄÄr¡:T"Í É®v ^wÉCƒ2
-Ae@tàÏ”$ NÚ«ú‚8™ Þz ád¿$ªçJÊ->”c«‹¼' IC /|º–0·ëq/çpŸGC ½Rn‚Ï<
-á"!v¿¸h8
-BC«Ù'kd
-²28 IC9Ƥád-JCŽ‡ùöw/R­yßpOŠô¡^¯ç èPrb[ÌGðFöŒ<Ÿ+?W‚•1ó7OÉ4úR¥Ô‰.m怶CM®”Ná#c’I¸F†9aÔ×|˜:ü%ð9<Þy\¯l¡³6 û’9@[²„
-8@dQÄe@q@.z¹£‚¼ÿíÎÖ ÝIGøÓßL¬åTÕ©Sû¸+A-SNðžw%A¨`#;Ä}à³?aCBaz¡{‚’†^°–:܆µ0Qž4ä•và& q*
-€£ZÞµZ*êóZwéãÑ[£+¡‚ݾ±@™êiÿÀlÃbÍ,ädÏóÃõRSÛÈý’ „]‘2AYn‰„IöË«ÏÅ6ò‹æ|›^5i>–?eN•ÓÙ•“\P¤𱆯+ËÌš¾;
-e
-Tßùÿôl‘(mGVüb7
-2ÞûˆcŠØcñ]^{Î> ¤ÆoJpà öhÞbŒÇS. ! T‘PÁ2ƒÚý
-„cä\I—ôq'¯$„¼›zÌ>¯¿<†
- ÁÐ($“Ç„ƒ¢B¥K»5üú!NÈ)D E^[;àD^˜ž ã‚SöySmù¢L¸ÅÈ‹¨¢4×ÔE” .‰½ï8`Gx¼äÜ• Ý…îÊ×n*Âãä&<.±¿u&Ú¸’Lr”äŸM±ÜbÎãÉ0JKÞ=µJñ¦cü-¨ ™¡HbcH947äs²Ò[‘@˜»ÅAÍ¿²{¨•>X’l¹Õ;QFL¶ä•‰^ä X"À3ËÑí$£°±4 D§ €µÏü–8Úã‹ ©G2LñæÀÝ’Pð¯ãì–-’<s„²øÍP¹WÜ‹()É{% Ÿ'Jr›ó‚z¢E‹nv‹³E7•’ܦ‚åwº[j¥˜hbzŒ…VÞ?\Pq%^ý«awåÏ
-çZ3à>º­­]ùƒÁ]¶€—·bôÑ (sÜ4D‡ÐÜNæÌ/©eàY’a.WNV5ðoÑOnΰÀª³j¥w?¹sç^I›ùj¦:ôb1Ý
-M¥‘)K)1>îzËìÞc5ƒûvì±þ-ÌཱིJ²2«/hg°üa4èJ2ìì<†ò„uØ’²#9»$áfŒT«ìLS&ÆH©YÖoçÔæ3þÍkK'Õ¤ùÀ^¦eÎC`Ì·Âãh~#Z2ÃwÊ;”Ìºà‡¤‹ˆˆÅOʧÐ_ÇË=ä•
-õ˜)–‰ speOüú݃‰(9ˆíJlâÁ¤¹7_Il›joD´% ç ƒÆº»Ïþ=Rðþe€}%AÚ]N˜VÖï¿]«/hçMþêûŠÞ•,;ž2^({]9nVl;×7N%½í~k ¬Sø‹Ìë÷=¨‹µdE´|,ÁÃÖRC‹Œ!(Dj—« x1Ú]^ïi Õá=9ž<ÆCu8î¬ÆÞ;Œ¡Ýhƒ¥1„„Rú©í1ô{½v|!k‹A;»!´BîBg'û’ö¦±Zê‰eŒkʼ+-c¦„¶[
-|§úôÈr­¾þ¯óÂ8?èñž\µøNUõ^3œÚ¸ ÁÿO:¿Ì/W›x)MVŸó]®–á~g̾í{/þ°˜(.¾U´&A΃<-:í_² äd|yÖеMHö¢ãžOäÉ@=ŠAÞ¼Â4LÞÍôU*¶›íÒ׉N–©”Œ§g* uø®1h½Nk^×`'󃪭¨ È$‚Ê—ì½×¬aî Bi]w¥ Bjo¸!ÂLœâ¿&*'j³ –ÎÒ0DP·Á½à´@+Ý®>½ÔA<˜˜ä·€~;w ÉD) ÖOúÃb—ü óÛ*êóZgŸþò#u7c^„A'9Â#¤@Ø-¨Éz?}
-%yÅ9qav¿ÈßÃуGL£ìµ@õ"Ê€Ù·Â KpR]‚<f'Pâ´b±%à"MT!>4{9aêŒåÌ©È%BÕÂ%…”½òÇ8Ÿ¤™ûVNÙ‰— IN%°NIÓ¶~ËeηܯÚrÅJv²çâ¶ÜÚƒ,¶\Ð4Hù}¨wLW„,_÷ê‚T`³ZñÌ‹zSŒOK Jʤ@*—ŽeÖ _ Chª‚UiÁ&4Ú:4ñ²lC¯efw‘g( í/û¨|bTæU r®ï^€˜I¶lªôƒà¼rÐE¨ûPU½ò¼Û¢Þä.v90ç°Hƒ2Œ0¥gƒxt =‹©dغfº@‘ìè›h¶{äô‚½nìÆdRÕ8N²G³½ çÊbØÖ5<†#€RH¼Háòßæ‘z¢°™”æ‹z±&aZŠ¾<4Xcºàô¢Û¦B1Ž¼!*e¾8¯P˜óþ梀ÄÞ7f‹{§vCëâ´kÜÔÁϼTù *¥“pиht ¶Ä«^ˆÎü`¦{c¡ŽN[BŽ4ê_tŽºk]M1æ²\žgrø'˜Y'«ØLŠ CÁ¡R¢¦ñÆ ºÕ¼,ÎV]³ƒÆÎçÝe5ÑV[ïÇ5÷]¿â²M ƒ³´Ãòåk¨
-ÈCU°ÃžñnÛñýY-¼\¬$±¿§|Ý)€HÁÆ6XcQï]½q]ÏÖQy­P-€
-¼ X[q9µºÆ‹l'ü+Q™¶´‹]b‡Åo¹«M0-×–„Ì7 Ô ú6ŒhÊÓÒtM7YJÄ´WÀ؆àžM"¬ÛPiÂ>jBI)ý¼ G[rÞE:kC`ì’644¡²‹ÉÆ®oC€¶q[ü/
-ðì‰Y{
-VâÊ‹qX¬ËtC3îgï&|& ŒÍ0V…¡¸½b¥áÈj?ÓR:P,&r$?\¸ £p±ƒ²ÀDíôØ™1ðáŒÅˆ)QÃHÆÚ…3–p`Ì‘†‰äGnŸýÔôØ31ȤÐþ2˜ˆáŒaús~°yæÃA£.LœzÙ9ªÛá Î}Öd<<[i´Çj\ñ
-ãâî88…¶±Ö|ÖüŸ%<ÄC¹Û%9ïrc‰·7zɾ5´­]P
-BR 532 ²pr‘ÅçòrXô,N¥Â_¡3L´
- wŽ=Þ×rìaqWNzÖíÒ }°}g„Ïþðå¡’ æÀN'›%?‘šáƒë
-äjôš»k{ÕÃ×VòC}0˜Kýaþ·?ÁðŸzÀXê>ðæh6'Ž=Ò ø;9ŠLÌÆJþÅÓ ¯B4@äæü½ @ œêüM‡Ãx(0ÅÆ{p£ÀÈ–Ùr)Ò¼f+\°"OeºR­ò!jõUz[ï’›¹ñ#G¡sù@¿+ü7cyð Ô<˜y i)?*„ÕG‘üs/+?¨*çյ煽Օ LË(c³æ…†{¦Ü ª/»H^xeÞ”Gaa›âà=VÒGñøÛö}ñ•D#
-àÂÑl
-ËT=e
-àH<‡‹ììÞ—ú÷MõÊ÷¥Ø‡†#ņOZik¶EIàæwÁ`ÔE^m6BeÜEÙ¬¿vû”¼Ê9jÙ-ViBb~á—óÛ¨y‰ø?'©žF³˜ œrLJµ1 £²—ŠxÞc¥²Ÿ9~Þ¨úÁ¯1ï’ô ;d’ÕÈÛüÒ«t+q¦ _÷`”%dYd ¢ìÊ& £Q‘íœ÷×wí_U§³À8Ž:rºÓIUu-O=5ѬÕ,DDÐ  "1@ˆ(l»ý׸“­ÕP±­y€nw•"Öà]Œ™æ:2ÚHqwu\]yé]Œ×3RçZ6ªEó!÷˜ûu¦ßd_¢§Q×´˜Òw/„éš²ô.ƒ‡ïm¥Sš6Û¡¬• «‰b­fªóîÜoûúÍšð¶säÕy.•ˆt'U}\õÆ0ªYÍ7ÚDäË¢†X Î(þtåÓ¿
-|ÄÊ`CYäz(  –ŸUìÍwÕÉ*`áfˆupÓ†:¿Ú¦Vòüy.à–#!?úWd‹¬/Õ[MÈôg˜ <²cœoj¢:Ø%ËÒSwDC|Ò“Ý YæI.H·yî\W~‹>µAKdýÌ’8@Xæ
-ê‚Œær7ÉŒ]P'„$Ç há8 
-Áo‰8Ì1Û-?Î1·'~˜cnOüzYwÅï%È^Ží‰ø-M]åú]WÒû×hpŸû²‹ÏE| ?@zå‡ÿÕhpN4þØDà.ŸZñ}ü=€á´<ö³k8áü¼bôÿ`ÅŸ€ëË6|©#3þü}ŠP7Ã}ü·êÓìÈÝCv^þІƒ>äB˯z‚wgåÏÐ’ÿB^~Ú‡ø²òžüI^òj¶§”]ÛÁ6~él5O<WÁQ!‡s,rÕ’è Žê渌õ™@4Ðg„i°Äˆ7œˆ$0‹ÃìÌKA:©Wg¶a¨ò|›‰vhO¢Ã½‰oây½×GÜ].Ü “‘êiDÆG`Å
-ʹßàlLø–üö
-†}Z6[ÞœO•‘\y2y‘ ©¡ôG‰Ì7hÏ=™sé”›
-±zA­¢ÉŽjš)ƶëºÁ}p%L¼öQÀ}4ŒÌíGß@ó$–¾Åq \Òû"KÅsÞy§ð9%A>Ƹs¢ëhâÉS9År+bÞ½ÐY)Ï;8h(èA)¥8«Ôy—… ÝRÍAqê‰ÄaJ2‡±º$‘V¦sœóêàþšïU™¦ËèºBÿ©·‰Xxœ&OQ3¨­½f$¹@G€–Ë-*—Î$L- „œFö%¸à/jÓÇ«|¥Ì4AÄešŒf%Ãè™CaÞý‡ 2Ó3U®¤'„ÂôúïbëWç¶Ølx[óÌ‹ƒ~tqÑÜyž
-ýYM&³XK±ã;V»a†Æ¥7Ô¬|j…\Nȧ#S+7nÄ•j¾žÃ2¼•¬´¿•aÖp¸RP‹™º·*¿Ä•f¯B¦ˆBâõ ¶}*q4Õ18}»rú²½R\ÖŒÕ᱆ܥ¯¹ò†§05V1Y2žÃÖ]ú´ÎeΕ՗¦· Ƹa&!w<ÄÇ֘ɾ˜ÙlÐ Yë.
-èˆD×®ÔuÁZªæ÷“lú_ê(‰…#ÑhøXjì^æë›õÓâéíX<JIeEi¿Í–úz>oÍÿÛæ—ÓÝëüm{?–.š¹r9ÎϧËÙü˜´ðØÉŠ
-M—”;J÷³lPž7.µI^o[¬lJdzç¿W¬¶tË•¿W¬0»á!ð·Š8‹W®¸ÅÊ]ƒ”¼S*ßÄb'
-{­„óªs”yB€Ó@Œ<}Œ]nkô"àŸsÊ€l.Ð
-¸@ßMêâl“}©#‚"gù?jjžÙ©ù}i™:U¸Ø3¡ân­ 7/›à%?3°‹?c/e˜M­ÙòÈ(uLviø ‚«èÒƒ8¥~
-"óªKíD·í*F™éã¯(ñ³g„žßÚ]Ó3Áµß  5Ü>3Â4õì!¯ûŒ f‚·® uc¢ÍtcRëËš
-
-i³3±˜°¥^~]„9'»]FºWã¬^tá§ò9Ö2–z¸IÕÏßÃÄO‘«;ËL¼½·°²mãä y3ŽRg×¤ë³ ÷ß«®æÅÃ-u/ê\‚¨IëñÔ=ú¥ÏY4§²OêÈKæÝšs]ÅÌíQÃä£Y[ã£u·G4,hEiÐç#íÎ$
-ç7%g´Îì‡rþH¯–!\¢¢#S„¶uõlATµzŠ“Y©o²®”À‚òj„q¤úœؘĘw÷Ïbd xwi=£<Ìg"ÎS—Å·)ÞÉ•T¢4ŠHÏš ¯1¶´ªæÈÝ8Ô~‚©RˆÅDðXAÉÚåF‡@ùXÂÅ›e%íSJ„‚ÈùpÐq@TE ê4aNŠðd Êò˜¢Ñ4çßlš#êçälžrd”“g¶ª"sxœ£±Ï93´JÎQæ Á¢ö¼¿Çü€Y¶¼ƒúè!ËxŒ„KÀc2£0ÆwÏi•rÙ%yQ)ÜN&4«
-h¦ /&™­ …(]ÀR 6Pà (ˆ}õ`±rîG«û§ù`ñ;&Sz­]ué
-ŒÉ-A¶vàQ
-ƒßý•±e*–ž‚ ÓJjÌò·Ó3öuMøIå¦Aä62m]×-Ã…};Ï·±4Ì‘Éhö>§vˆ­áFˆ!ØßTHZ†¢›(©' +¥ÓLKA`Š¤¡Ù6\Óã»kL%‰m”Ò-¬HÐ%ifÒ2MÝL²%†¡†™‚•l…¦ëØ0‘‘ĦÆVhVÒÔ’º‰MdFt'lé¦ihØNÚ&[Ûàÿ^É•ä =ÁÜÁ'¨ ¬{®3÷ßΣTÕí/Ïlöü’Ì”<MˆÚ ³¢ @e#æUÉ£4ô®dW–O›ê
-¥ŽahBV=äà!±2¶:­¦65_ŠÓQ,úð¯“Æ×¥ª½…Ÿwªÿ6Ë6Úß [Ûj( ±ßÇ F‹ö¾Ü¾:Øø’ñÞ‡_2{øJ>xIZÆG¥¦»ñ{ÂÙÓŸu`( ¹ÿ4N6Y:Û˜ 7¥ò¬#EuS35‡œÿ ²5ö]ª‡sè4&L¨}»™%Xˆˆ^%cz«¡^ˆz†Â`ËY¯;>¨S¡ë( Å ”QÖ6Ãméø» Œÿè9_‡¶ÄØŒhÍÛÄŸ ¸Õ±Š¥Ú²ÛÆŸ ¿Ú
-qÈ„ ßÁ„²:φ½,‹Ä\],^,ÅÕ]?ÑÔÞÌnµ4l#Æ‚µŸròÈ#yZ'nG„ØñÄ…¨•…3I›™”báy•? …Ö¹šW«bÄþÏ\3ÔËÛŠi!j3Š¹qø¢šW|L8&ቸŽžRÿcÏv2«»ºE¬äzlãƒoeªôõûÏc$9Tt$tG¼9w –OÎ…vÖ¢ƒuCrÌë…R½Ëì¼ä7||7=ð/–5§þ>‡'haº¢KÉ5xÈ Ÿi>?/à ¾DùG8Ÿ×„\F/.ʘçSf‡ááÏx$—'aË~˜HnóÏ$!ï-{ˆV+Ÿs{âºE+»>[Óx\òøcE»ÌwHx"Hö½åyêcñ'ïƒÔ˜‡g\_0 šO¡O^ÊûZ¿»ÔwrÉGn¯„^zÜÑ7È.Õöê딜ã9èEé÷ ;äØ͸þ`
-H‰Œ—M’\¹ „OÐw¨õD¸‚
-ÙdÌFê¿}Üò)Ñ ÒZó°Ç7 ïÃx_D¦îˈÛg'¯q CÈ„Ê$ñsA„Fàîz î“·.ÑFz^‘RÁs7FýGµÂuÓïû3[nˆŽ–.šc'Ç…& ÕN“Ý@öUô%}ÜýÍ9¯%ç5sR—–.·­CP½YNép%ÎU³Ik´Ÿz‹“'¢RÛ=
-CF´éfó¤˜4nKNÜuz>•©ƒ’Ÿ+ªÿO™ï«-rMèÝ)ho”Löqv–1’_~¾Qq¸>²óß‚¤y’•¡:OY%;ç3õ… ]‘úä ‡ñÔ‡ÚàÐõðùÔtë­Úeæ¥?”±£.ÍæmŽæÊ5ÒAf!Ê]å_ ;G¯½úåœ$(TŠöÕŠò¼Æ¦ÔWtõ‚ÔUÖyŽ·wšÔ,NÖUT(ƒŽn4QØmÁ7×b®9©ß).Öi…]û5ÂKç䈓b~©£.¢Ó“¿‚bµGr9½Ø“¿‚üéH2R¢±eƒ'£:&ñê½Îå“LQ~3RÑ·>уž7ªl't$žWêœÓ‘>š }ÊC³¨1æ9†÷Ô†¿‘ËOÓó¦)Üìóöº+ÆæêãRæ—×̺ʋ7‰Î¾ ŠfgÐ’:=Žì¶„pLîëœAx¶Ž,ô“b‹B•¶í«^YP†‡ñ'o窿àgQ9kR%uX}8òfœþ|êÈ9e-U¨71>$3È£x^²jI÷Àk¹ éŽí‘Lþ•×³ ¶)ÿ C½æ´“Äv_ð™5myAþ4
-‘L
-š6C.Ÿñ:*fFø"ùÝ)(}ѧý7ê—§TÞi?¼ò8ß„Ak
-+ã'¤¯1mç8çôÎðൃÖ8 vk¨D—ñò©Pûª¯ Ïöéö5Ÿ=ØmT¯^î6;45‰.°¾ õšb„²•–y¹ ½­Ô d—*hÛd€ÃãþææÒ˜½y rƒû¢þ&¨2Ablê¹MÎ^Rü—œú¶¨××ä«›0,ç²INyN#­cQO1¤°ÆšÛ¸}¿È,î+VMddÉs©!G{–@ÑÎ!ø²{Ћuü¾N ’‚<‚IR…GAç½F÷úñ+)X"e¥e©EŽýÆFT¦Újbu˜Gægð+BˆyÉâ‰Oñõ8–0å èëI_sΛ¨¯ÀÛæó'uc0ü,ﯫ“Ø4ºáÀï@?~%•©ßþ9ûû??~û÷‡²'ÕæÜFñŽß3Ã8d(eך‰Å/œÚo@ß9©£*½&~SI«'[‘ñWζ@5¥ŒcÏmU^A?~åM…îî]þ¶eÁäIƒ£<•¨×ÓkâȤAbhørŽfŒº°¤cvVâÛe u««<9.]Kí´¤¤¡-í@xuÌ[š$Ê g_Îç‚L-‰Ç ZÖHa½
- \}Âù8¨µñ°â¦€È:±Â¦–oJ%=M«ëÇ•Æ—R,GŽ"¢Ï4È]^°’J
-RÂ
-Aƒ©Žu'`-DÔ-Pz{”hð’P\Õ’ ™|‡‹zòU‘œïT‡l§úáy:íiæ‡I‡¹nÃw$²\ØZ¶§G ÛÓ|Uvâ\T€  ÏõRô²$Æü0‹`ÄQÍÆÆÓ‡_xm¼K:-AÉÈ·¿šP$¢ò€ƒ 5ç’ÔICXÄÉï÷"MgW¼ 䤋þ‰»âÌ¥§¥è€"±úÛKäy
-ß^ï¢܈ÉûÛÚ„ö™µÊ\'GKŽ‚j¦f‰²µ†Xÿ$Bð‰ÅP
-—É ‹à)Zì¯Sú
-=É8B ÙϽ©„=]Òg(+ù`W?§Á³ñrVŽwÓ²µ_Äü?Ö—/ªÛ‰v–§ÈÏLKÄÀ¡>Ÿ:’¼»h‰7‚˜§ SjÑÚP¶Æ2þþ¸òkæ ˜Oa¾ö‡@öñ7;ø“u-¾®šžÄzìkýw’kƒ­™ëO˜C’”ú *o¶ÜzÙÇZ¦xzZ|%Þå2ÙZt _›Í¹”Gö%†
-XôÍ‚È×ôùN?äÀßñ¥­UäaæêN*$9µèù:^¤±5öÒžnŸ‹êp׎m™·R~æÊ»8å˜ð å&ꤓ¶ñ¢2îwÜ©—Wœä~¨•ç9[Uê‚J½–÷³Ÿ¥†ïôuÌ[ƒ¹å;!²*ïü®(ÛbaÅ¥ìîæá¤Àœ¦ÖÊu¼î³
-*×)æ,Š„C)gd.C`ù L8;Ûü3 U牺ÑHþ×1ð"©(™F2Yc=ciÉ"%uþžD
-#b,›±Óø"´KÒmÇ¿3`ÿ%ÿ_V– ô3‚ä{ ÀŽ3—Qƒ&)`½¢Ÿy'ð ,.tž²Ì_ y
-Û§€F‚\Áù*X˜fH”—L§~,BúKD2Pš’Æ椈;Í]g}m)s¶„¢à]ºW¶ÜÉLìõÿ'ß?Ãó?áé
-œÆoÙ¨ä é7"?ûvßGÑ@äÕëL2;œÏ\±-UKØed³ r]&¹§Àì,Ùö’Ã$0X÷¬<b ±*Í‘L˜¬L¦iŸïÀØvÍ”/“úm˜+IŸö¨E^„æÎÁ£x_2^ïò©¨\sUݘޑRÒ˜ôû^aî§[u[PäBµ ^ÂÝô•…aØ>2DXF …
-Æi…Ò%È~ u#|îòH9 Å!رlðã‘ìý¾_±‚?^ºÓ½²ôó‰çcW8ÌÅ:\!EÅÄì™=."0œ´‡UŬçŠ.SIÏ Z0lä–yH„¹õ$Ä-ËgY±È
-Ÿª›Œ#—N,¨%Ñd”Å“ÐÆo¾Ã!b'¬æNJ€-=Êဨî’=é}ðûóeî½ãMõ]toü¼"ÀiXÁC£mþZ`Ëv‡…
- è|ÄvI88–\Àäê03`8&Jay·)¦œ2.>Ý UUõ¸2Þ’-2þ\ÓrYàkþùÙ rz¡0|Ö~™ $]=êc!A´}I†b%Š‰™±k'Ò”7‡dVf,òWÖùRü%ÇGÖ1˜ò<ýŒ¢­ÅÂÂHQ¤5jÅÉpß"¢›7ˆLËëþÌÒ's¨?ñNÒLWVUaÔ*6¹Ü}¢¤Oâl°v— ê
-tWùE>ø›"zÐÇÁSr×M«ÈV²KŲH!AÁá/ŠH“|‚)cÞJÚšº=Êm¢Ý¢Ñ%‹(Ýõ¡–(軉Ù?¢¨‹D¿}ÒðO9>e’ÃÅU"¾Àšñ—-m–‡WPB€‹úßપÌôPòË2bUÂÌÍÒ½üåÐÞüñ<š´iDûP4±¼ˆÒðj!Î/—äºnˆ® {x+Püsœ ³ OåýOs•ø‰7åTªËÉ 4úÿcèPÇ:¶uLÅB›Bd TÐ8äà÷—Ë4œ·Ž%Ù ¦ÒÛÕü³°¬ô¢K¯Æ†¢@ŸüJ›g­ß E Êf‹?A†Ä‰éž Ö:ó@ÖžHÁÝç5ü>9z-ÞdlŒä
-ÖMEnYU
-8¬*§ º>·ä×d]PšK‘Jƾȶ¤~ÔDAIEf•ƒ$"G°‹L©¢ŶaÁTÖsrÄ8žLGs[Fx‘Aáß| 7<XeÌ»«Ýg1Læ¦çi•…$Դ¼„r0E@¬3Òk
-s7˜µÅ‘pâ’ d@gZ^Á_1àLÆÙ«²ÝS/ö˜¡Q"If0{Þ¸,t ^†_^wHðçfß|(ø3ÚŒ$xi¢]™†
-@–Fc*Á£áð0ÍKpXy@ šþ.kñkÌžMHE°d{a 9VŒeíà Qž©ÜVìo?‰mÂ=gQÊ- |zQ®¢)rSEãC/SXê*þl¾’ ÄηZ¦b©A¤t»Úþx§¥Üð\m—ÀMa(Ë7üøã2ì;=§]üg™ãCçÈLc„l—(âÉÒUA^“¥eĹ&k¯_Y¹>΀èžRf¸¢H‰`fØÑÏÉ0=¤Ìˌ׬Áb!߆q¢“i]b„vӌȡ_5÷²‚}m£>piÆNr¥’šEve上-aÑîËKä=š|sŽC
-Àäuüô2¨
- l5®ªîQ XÌÓŸÅ®ƒöUÔi79Šƒä÷)ÁСnˆÖÜ— æ
-J»É þ¦¢†œR¢ù+qý!†
-® r3!Î(špl+j
-‹/…ØÚfBö¸ðUl8´U(B
-Ô!»E 'ðˆâ½]J^
-¸½FðDC¾"¯ËGºè'3_ƒ(Âã,·—.†Ë$xÉŠ`ÁÚÒXÚi€äÂÌÖ Ã&þG÷8%nú^„©ÆÒY×¹iºãC1ƒSaTÌŽþ™¯Û.XÑÄ«¨Ñ¶¨‚q•ðŸò¦‚oÌâà$çC Ù¯˜,Óœ¡X¨Ñ:ûÂ,O
-­”àþø%ÅÏ>¦Aˆê%ú— $àS[^Ž½Bf…(†ZL@VSA_ò¨JjY}°ð©µKžˆ‚)
->°ß¹è{‡ ²Ú2Šþ–*}Ì¢(©Ëõ—¥ìÈW³éxæ4R”8C–EýÜÝ“'ÉPÉ<™À e1¯ŸÒ9—qËÖ§ÍÎÐhÂôX¨)e~\º¾›÷V²/‚ôÊX"5®ç4p›,Jç*ì(€eʼ"÷¡k³iíËnßww¦Â‘‹ñ}Y€¦‡«p¸%¿ìÓY;dŠMШíˆ$^à1UTïkG¦cºxÎѺ•»Y²mÑ3–
-?цEC¡þ Ã` ®ä‰ëR/Ε¿¼ô÷"F ”q¹ý
-5†R˵`€óƒà—2¤L
-eò邶yÉ›¾TR  †R¤@,¿ßXp~ä]Fç’¦ôÚä0œQ7¿*Ë…‚fF>r¾Ûº¶®*Щ„…"(ò¢Pü„ñk­7,íÊ¡ˆZþÓ?ª ÂðÜ­<
-¯ÛMHã‡î²˜—ÀžÐ
-–èxå¹IbɼÉYð€!Æ"™΄‹À¶¼oª´”Ëé*š< Ög™FW¬K¦ý(Å
-
-áÎì~~2ßaŸO|?06MF5oïx©1Ï¡@)#•±4“V@ÆŽlŠJŒÚ™2Ú­^Š>‡1D,öú‹F¡,,& ÁüÂk‘3VR.ñ絈ñÓjzn AÈ'd¡Õ˜#ìÀ‘C%ÔYÐ<¦—
-9aÀ㈀šÁ:0½5ƒ r§—)˦PûYâv¸ Y „©ØÃÍš˜“èC[˜¢•Rö2‘IŒç£º”+´ü\§|-ì—|ØzŸ›!€ß•yÝ%MŽ;Z8úž‹ªéº¬·Ÿ£¢ yV}™Ñ¡AD ÏØ­`óVdGV$è——O‘S€\¦CȲèÒžüWO*]çtÌ|²…°ŠK¨
-w8#È ™ÒêcE(Eø\̽†?ð'Fâ(y›þ ì°÷˜ÁSÃ(úˆÞÍfu˜1÷±È·ÐÁ¯õûƒqÎ^~“¥x¯¾y±’f}sÍw{¬>z×u_kUÒã]ødyâf½¡m{ •Jb³·´æ8æ9ñtö榶ã6ºÅ
-öãqEqÞ¾éáø»z.²Z¦ð;Õ7µEl•`VpdåÎmB&¹ÄòåÿŒ’2tÃzž/DúG}Š|{Q l95¹ÀUkãÒÑñ•Lô(Z‹‘pXï
-ÊOÆîÏ÷ß1'W³¬7éñˆ/æÅâ¡cÎse­JnÚ'ì$Öâ¶Ëƒ˜NáÄ1»±Mðz!:ÂWß~O|ÉlLBÔ×êÍÃÌ™7ˆ½ù(¶Ha±éãi˜üœØ‡R`\W6{퓸çS—îV¬¼|Çg[tùÊ99G»e ~‰»¤3I®ûÃî–ÉAÂÞê#í Ó oZ³}úçW–æ|)ŸÚ"åÜ®<E¡ävÕ´õ]®ÝöptÇ#k ƒË/†F J‰®„uÎ#ŽÅò&ÞûM¨ qݦ¿0‚µÑa×ùQEè˜>‘0dòbúRÒ9Ô+¤MÀ_œLÝmý–ÔùÁÊhO«¸ çãS²2Æ°ÇÙ^IBÇ«•1Îò»²õ“•QȦµÅ°2¿ÝÀÿ})[f&¹…%…Fü«:I•è7·í³èŠá8oŽ£Ú¤]ÊÁ€“Á)+ßa›…NEÖ¹q¬ƒ%['\‰Ž$¹{¹9™¸¹•~­¯¾9}ïaŽ-&æêŠÄÛ‡9ÚÜyOàÕÉj:eúßœ›ÔcS¯Eµ®l»pé6ù£ÌaZŸÙq¢ïÆË¿Î`€€]²<î
-©­² ÷:
-‚x €Ûé²bÞ
-Z™þQ²†vís<
-\«µe,fó4\€äõ¤ÎáCVˆ¾þL.‡ÅÝ£„n•Ö¹`¨•ìLùùWˆb÷4`b&îhMUWö_@n½‰ÿt,W<`ó±{|*FÖŒa}ƒ»ÓïÒÙ¿Øue«5ÉX4ÂÄ—`e,êMF¡_%»ÖB ²?®oo¤ó¯’A_¶J’ÊÆ þUúJÎ0êð|2 jÂ…çS”8e3 §‹wÀFÅû[‘æn‹¼ ÕݪÂÓ5Cc8¼¶s ãeÉvtÕì¯ó¥dî;]qoÓ§)ÚÉnܤ´XçˆÖ¿Oæv—#†G
-zݳ/:ES5n½ÜùòD»3fXeë_ ÇYG¢ÚãÍZ=™=wt=Éx¹uY~¿x³’4ëpÆvî—üÓ›eü.s·óZÏu~òf)9}ŽÒå £ ÞÓ˜eË
-Uðþ倫S²Çöå4%|ƒÜÛÛæQÉea÷ðÉL%/û»Õ,é䶗)|EÁa¿ì(Ú§’ŸÐTQòJZñG¯êsCý0ÎÄ–0_#_Š÷hJRGô-%hi«tB]fò@ú­t;«d§ÓË-[µ}&Í£i8‡r«á8¼ÁÕ À´ gÌò)?ê±N–ÿ¦K5@0Ý°IÞŽ˜ï˶½”Ì6˹æ]ªñáÿ^·Ë.ïO jžÐý¤=‡Äëºó³a
-ZÃJÞÇ”ËI)uo/%c'¸J•daÒ×sŽº1)Ž“|>µDsÊÞ®×íó*†:{ìÙüÔ¿·¸×4Y&Ô°ßßÞc¤ŸÂzJ~ÂÔ€úhñSæ|-OÜ¢ÚE&סwŠ8•=2´µ¹‚‹TCeêÙŒí+L¿Í
-E .®;k\Ä¥˜]%]ôv½¢£hüJœ‹±[ ô‹ðZ…‹^\ñ¹ö¾ÏOU^¼«ð@™üšýŒ“í£„u» ³Û\Ó5>•¬Ñ•ÉÙ74pãšÔ:Ǻ¹Ãù(‘˜(DgKâÆñíy}â!ÒD´ûù”&84Ùr™çÄ.'­žÅ\k ¥ÜÃÓ:\§ÉÛx6§©wà°´'Ûä‰iAúð!áÆ—¤ʾÜãMÁsÛŽ©®-ÆŸy²ÎUBŒõ*³Ý—Ž*šñLÊ}¬Jc=¦að€;ºÈDlsâø1ò¾ßíÿŒ—Kr]7 DW=x*þIŒ¡v‘©¼ÿiNƒ b?ñÚ©òD2ÄKþÜâÍ~_â 5À-ùÜ|‹7‹ñ±œÀSKܸ1„©©Ð/^tW$ºxó’Ù(šÚ`6©Ãô'ú%Xˆ=NqÎÒV)'d ? ` £±Ò)!Ç Xg
-¦‘Ò ñ©¨À«`ñ|Õ/5»FŒnR'‹¢Ytægxÿ8úaZ©*P¹x½tyI5åT
-Ol¼¦cËæ˜Ï ’ª63‹ƒâI0³l
-N‡v3‰P®&²°™EÁ–â=©[ ¦Š¶Wmqs~T,⨅ãp÷öKCÓ?v‰{û´måö.«SHF˜‚ˆT?K$æã͵ït.k2çÂH
-¬LIµsãÎ5*Ùih¹4MŽ•b2m+MçlÖÛß &–~J)åãçeŒ?Ü™‹¿û
-î³<a÷OB‘¥­#–Q³È6ö`<…±‘<#…[Y쟌9ïØŒ*î’íU1‚øÀK›ß»ž®9l]õ
-ó”$
-FFÿOJº5Ñ*›ìapû” “<›È,Š<.pB[Á¿@“Je0¾€rà8H:IÃC»àÍ\ÆrþmÊ&H
-HÌÆÈZÁâe—Ð-ÐÊÇ®/%ÿø§àkÒƾÔ#* .` éT÷sLGÇ ÷yJX“ ¤¢m—у³rǸÀJ¸Èºó}÷î/ü(“´Šâ H’H³_.ú‚ Á_?œ?H@‚[íë(Ъ‰ô–~‘J
-cæã\jµ»ŸÄ'~£r‚úƪû`“Žtø»?«7Yá.³üP ‹·KÄF¤MÜH=Ÿ’>ƒ}aF‘Ü ÿ/?¶üœDXá¾pØwYzÆFûÃ)¡Í×p* n)¬)\z—¹2Ô’ÅbkÚR[EÅüD=}½ôe{^FÐSNÊE¢2fˆ ¿-ôÇÿÙúw'¢oG—“ ù@¤¸¡deËÚ.å.Œ÷³OVæcÑ¢#õ£lÌ^E^a’]N²>ª¥bÒ¡áÙ¸Á¥ÍN½=P5¬&ÐAOÈz¡†,;¬ÔñŸ¤ñB ($­ò†Zþ@ YnœMc‡I7WjPš“5ªªÃf/ÔÀ0¸FVèê…²”‚
-9àõf7kK NRñç³çúÅÚãhò'\ófm)a‚¹ƒ®s.“À vÔ€Œ—°ZŠŽÅ}f%;k‚ó*ûS†öŽYÄk†â+ø Ú ªAŒ’ÖÆ&Dš:'€*]žôZ²Ô–‹Þ{¢Q‘ì.+¶wù›"1¶¶uñ®"kÉJÊ«øeð
-4,ÿ¦h%Å"’WÞ¦½*e¡5@9%`UûÂÇÂ’ëOde«Xëc‰ì¹Áø
-ŸÂD£xI†ƒM¤±QW€ïÄ¢¯DŠð/rÔ•]D¸Òß(󘣌K³«tþÔ@Þi*ìßB³Ü½8»Ã—(g<Ý+P€Ì—j !Ý@•Ùµ-/û
-·Çil¸à°£@ØoÞY󷎱¡õ”1–¯šÉ+7Xfë¨{ÎÔèý#û± —Zf OsÇÒº—,FÉ–V@÷E¢:̾æú”òªá‹xÚ<Ì@@cãû þIŠ;ÁŸ½F¿¯—,;r +ðjî“ÉO~Æžz=Uïê$³Ž¥ÎgK#U’$€@DÀ¤_3ÄÐc7ôSuÈCÆO\gÝbhœ8{»ú¤xøÿÇÏŒUÚPö5êl
-D¬F«Î»@ÑÝû³õ°¥«ÛÞ¦BxŒöG%Ú³3álÞ1í+ñ°°ÊŠx>&Á ˆ(á…QÀ‘UÄñÜVÅ#aÖk†üÚBð„Ä
-Ú»K§{+p3,2c)œÃâp¢%ÛÃ~®s¼¬Bö¨3Aq\[ÒØ_BrúÝ#ßßϵ„ Þ3š¥wœ=¨§,£Ä`Ǫu?GˆòÇ]ãúª «Ùbd`¤Æ%€`…5ìj¶¬Û¯kš&È.ää^¯¶¿Á±Æ(œiÁu´ÇÝ`:Å ¬¶™¸|*°™»¾?¸?QYà¢Wâò Ä×4ƒ€MÕ$œm´
-ïé>¬S¾<8˜×9¿]Ý„ÖädÂù–œ[ûê5}‚"¤æ¬ÆsÇÃ)È1Ðú!´n­ZçÖañ¼ú‹öü5‚ˆ® ºB,ËyᢥÖX£>Âu ébŽÖ€ Ÿhd¢É#$»çNŠÊq.-,Ù$cçÍjlžŽl{Š÷‘­'AÊ:¸iæcÿľñ`¹oÜÿO ) ¥UG–ÿž3M¤ð²jƒâª¸,Ð>ÖšpޑȘ¯i¶ýó䯘¬j\jȹ$ä`ï¹e…îƒ<“Õ6Q’gl
-ÉÀ”'$öSŸ{YóÌ ¸† >êsŒî8•`¶pf”ãŒ>Ç°rpÂ^ÞÛ>BbzÙ!ô^)¡Œ
-€Áñ¸Éd^¼“é4ùki
-ÆÛÞeœr˜mn§©ÇâtECR+¢ÇžÑÐ2¡¨"
-±,׺ÈW&ÅúÈ&MPûÿç­ô×8§W¦–x_ §”`îYcòGJÇ–„vù-ººdØí/ÏUo)Ù,¶¥@ z• Ðh­P¾Ñòc¡ ‚´mî#„%é˵Þíƒ×"Hëe•»Ž¤mè÷~ »Žw!U6Êõ¾ŠÓ¤ª1_¿1ŸcÛ­¶Ð» =Fdz=VadŒ_ƒ`DíUg`T¢¾£(ÊxÍ–*kX¿}„謹Vžc˜­,J:µq ä8©P"TcYÿ{ÆàS®wˆÿ+!v×ÌF8¡Îtef1à5B œjöx ™Wy…?S³¶rÚ:G}cŸyŒô®öõ'íB!uœ·Ô„PŽÔ™Ÿ˜ö:9 0úg”ÆMö—â7­/ë9ì±°»)ò×¹† §¦çJê€-,¼eëúb$ `­+ô\õsÐØ{3˜…ðëå5Bêh”ܾ%%f´aJ[åû¥8‚809b÷¯¿W8·9FˆF¨¾5ê×yc›•”µœQHKOÁöÙr›=·¼îmÓȹQEêzgˆ»Xæ
-³\n•mã¹Úzø-G`üO[äîÔNª5î G† ­=¶ic,¹é3¶FHkèŽDœ{Yæòrbjö6BÀJƒ³ijÆÚsÁ¶â8û-ì#bAÛõ¡è]yŽýT‡ÑÚ£«¥¿Uòßÿx{ökP­QZÛ*6™AJˆ’™Üf”š2¼`4\F7†"!GÏGÒ½¶µ›ªýÖb»JŸed6È»“®uÞQe&<“ûç¸É7gˆXr똢ðâx¶lt5‹ F(gB²Óxvdo„HjÓÄJþÏ—?:˜â¸
-[Ú‡sb¶-þ¡ÞoFEˆq&+~ÜÖÇïö±ÔûXWýo°NH§ðq La[s/‰äé¡Öˆ¿F ,ŸY¼ÈGÿÐS+K˜‹ènOú/AŽõ÷;⼬QCØÜŠØ&ÎöxNCcï» rh=ct¯ÄôøBk+:ZAC…¡ckµinG}FtXÐÅ ÞYÁ¦ÕJ实Ñ<çWB€¤Æ³…GgÈpé—S!±Ía?LT^BþWM“F¡Ö "¦–`}œÓ7·ÈÿjÛwQãê®@&!ÇÅeÐûŒ`4N©“´cL½cz6 H赜ìΰS^me®8`Þkù^>¦WkV«{>‡Ïb¶Ž,„ç‹Úë)ŒC¶±¶ã%$™“PLbÜa¯,²Sö͇eœ³ïêbL·Ç±ùœî²ù55.Qü4< î½X*œº³B%¦ÊM‚N³“•Je—pHÛ´ ˜ÿ(äØóÍÀŸ«ÆðV0ðÉ;!¤Ìƒ¶,
-Bú~ŽsÜvRB]<fÖ ¡â†!V(ÜgÍüãåŽœ× Cá­h’à³vJïB­½ÿ6ß@Môëj♑ ]’
-™7Î%yΛ¾AfEÑ$½»gg8*µG!÷Ùæ¨Ñ]QUn`}w5oK½§Ù×ƪe S¥"
-æÚè¡ò¯1—#š6ÙPT‚ƒéñXgy;QØŸŠ¹_+ÞãYÓ}ëúüÙ[ÁVö¼¤ßêÒ|ÙÓ-Ù¥b"a®%ï%£ ±M½‰“
-TÀ£íØíÓ® Ìñ’ý‚ŒQЖxéTÚ Kã3iºZÍÔNð&»³"¤é”Û/âi䢧)Ç5@ø9#/×°kÀ§Ö(Á¥p#¼IÏ+-ù„Âxùk«6„V@Ìîï*
- ü8-M û @TǶ¹ŠALS|÷ Pï>O&[!<ÕfÙ>~Ë÷cXÇY|¸Ž,a}±^ì~£9O(ˆ÷{aÄ
-bGã×=Š8ͳOùô‚µe¹÷òÏpDf'ûàs$i
-z±\º(ö% m˜zË«AÍ“´9$1±±Å<»²+âÄs×Ûó²/PŒ?g ëw%Ÿð Ô[:ÍWÞy?×·ÿGÃþxìûÄ~ö+…Àˆ çL±¦Áõ[YŒ¡íD4¾EªM3TÉp¦Ò¼ìê2ºÄhä>ãýÆPùÌ‚KÞ¬¬?”¨‘ibZ'µÂ…çåpv¿×X¡%SƳKãÏý°ÝÌŒ=K {*š…gq—)?õ;Šð¹
-F<m@f?Eèˆiqti(EßïIUx`5Z8LºSX,YŸóá#§‡üÑö’!<áû¾ByW9*:2î<ñ|¬5O Õ©D…‰Ý‚ž†ÛµcíG3ûD ÊÀAðR,æ¶"v{?ø¢b¡
--Xo)|Åæ»oy“ýhp×j7h~iJ¦Ð„_„ÇÏQ+&aÅîË%[
-:â¶àZ4´"ñŒ‡7øÖ%'£ÄÁH—Köf™X‹̯pÖ'+´wŽ
-1Š—ৡ§e×l“U.Ñß.oŠ+° Ð¸ÞLòè×äæÝ_ ²‰5JÕCHy:íiÇS¨$2V1i²¨ ê©—ào!$¦«3œ09ô¹^NR˜©f&Æò[šzfqÔTÞ"@¼íêh‡‹%Œo!1®Dã€h¹‡‚‚âá/âAS‚ëMP°lƒíc<Ñ d˜¥IÔW¢Â´DWjJ 1¶™çîÙ!*Ër
-||ü¢|C®YñÉ ÑA® ôî¯Ð&SFªF¢O»ƒ!Æ÷9@¥ÿüš%®éÌ9@`¡¥`lyf¨º
-n·pã|­xwá;‹¢¢=Ö©¢E€qY…³¸¬TÛ^B
-À¦²´¥ä$†0‹-jÍ{
-0~Áöùá=7Œøˆ`•Zö×Gª XNÄÁ¥ BûMžq¯ûÓ‚˜›fÙÓÑøº.F‰ëó&@’ô÷@ÑD˜óPôÛ‹àþC7Э,¢‘<ŠÍ’<QR8ˆÎ’”Ìt·¡i½‹þ@dST¾OÆYL_!dN_XŠ0€l<Öú¾ŠÁýù'ºjþ’„üé¥äQ¤«Â €*Ì•¦Ý<Ö”(ùyœhÏSá±I"8ÀíûcÑgû®”ð˜üè̱ó|–œx—£¾P{=FŽ‹ Ë5(.ìûrVb,Qé‡:I+W/òþM+1U ²ì‡ û‹%”€ßWî #Ø¥ìe<€$öùV´…Â-ó
-®†a¡j?jñò1q·çtËàXv¤)¢5ÿŒ‰"Ø2‹%ætòyÖ?ŽêvP àp}cgWÀÔzú› m˦p{¥ž-ÒŒ5'tp½
-{]æ¢ï
-!4|k¬ùAi¦BkYÄs«ï7þz¼òй.QæôV "Tu%BtG:Ë~ί—,±i
- +`½‚KþH3eL;ûŸrŸ,÷ ‰s
-ñY¿‘Ð’¨˜ñŘ­.Ò³¦·¹ù.¡C½Vœ·¡1g;
-D¦¿ÝP¸D]tqµ§Ûì´2KdûZܧ¯þœ!hž¶ÙŸíâSÝÇ“û€1îÂÍùô ^éFœòùÀjF›’þÔ1+Œ;§:ÎUgM—<ö»#l¼ŽÆCnõ-™¦wëè¶ôÁ‰¡©-÷~•$l!GARœÙUïƒþCd¡Š5˜ç€:$5åeßÿ{Œ0þÔý2Žåœ¬
-ñ½J¼ù‡\ Òïnk5¢K–F*5ö½-¾q¶Ð”ÜIÍ"¯æÓWðagèÎb—]ue”æ=÷—¢ÏY!û&‘ ìEOøø¶<ÌÄGJZZmÖfºJxY#ŽÏWßKTˆÇ!3eWg‘ÿÅ•Whþy»Q3Å=VÉ•wöøÏãzƒÅÿÄ{u õ`Æ–òœ/òöýµ•? ”{à’ôjYœEÚxCº®Äì#¯^Š6ðÕ4¦‡5Õ¤ë'ŽòúåŽèOH ÅZç+Å 
-¸'Ôå¹æ-">
-ÏߣÈõKÿðyt3n$yC‘‹à) ¡k…ȲMž ó;&Å„Êù+BR›-4‹MkJè•9³Oð±ä¯'wég.óç<É@Y’|ÜYá`_ZÅ›“ï²c Í–4adc$ð¦à–<¼rD\·¡¯Ie¨Ve÷%d£"~5±ê?ö õ¨ñì°¯Z‹8Y»r=.ÿ¬Á?§tLüa ÚŒ¶üò›Ú0†C.Ä帧𳪜Ž1ÄýEÏ1âŬÑ8Ε\â’¢pZz¦uS;|E rîγ 9Ší7Q…MÜÎåˆltÏÚØÞ!ù˜ö%€ñ
-+N—]M[úª ·~Xðµ[{dçÀPòSš$±_7%ãÐ÷àáë2',à…¬Ø•Ýr0À@ V_\ð¸q
-ø÷ìÇ{‚T„µ:FÓM\¼öÁÞ¹à>K.
-Ûµ,ÿÍ>L^§D Ë=æïµ®Œ
-ŸËÂÆ'°gykK òŒÚàïv®Ût¾ }ñžÆ®ˆLÃPBmÿͬ®œ=*Øø¥³½5*z„<¹’íÑëáøóÿ€ý¯eõ;?;nI³Ž¥5"Ì'Š}-“¹D²„v~(Aêén™Þý‘œ¼F¤P‰xbi±-oÄLø€Òß>ew‘dn·[ö\;EÎz,áÙãïþ¥ò){Âñ$…˨]¤1â°÷))Ê;¹Ä†-VQõIk„«ZC?á`K6ñüc¡Õ^â &/:˜
-vµX> ÙÊ]B*]ˆÌ¹ñkÉ¿@ø÷oE5q¥ÀTzhg?Á~Óˆß{o4.L{²¯ÑD·a8}2Åaö8Ëìܳ?Ÿù1¸õØZ<ãk[kOÚû¶Ù ´“i¢êAR.(i߃\ïï,7ÅøòRÌ"òf³ŒîÌW<Þí‹ôt¯JŒBx~–x’­—0ŽåÓ,¶„ÄöQîsæÖ´Pa¿‹bl1Mâ”;|¼/º¹/£Î'ÿ¦ä_XxÒV?îuçŽö ñWýúž‰–h§;±!Û#ƒ?Úf%ù£ˆw ‡Ñ^<¼’MWÆUV‰Žú×â£è¼ÿú–ЄñÀä,k^…¢má0üPbÄ-ÞÍ Çš×•’teëg‰¹…fcý–›e %„c>5°y-‚Eh3±d§Ïyµ”)D"êeUa6¹rC£
-0#A*àh £R‰ãµôFžˆ ÙÞ{5~ʇ5Ö¯Z}‰‚!¼‹.o«Æt‹•m
-Â
-°JÒª ÜNΓ»
-(ŸCäA#ÓVÔŽ›ƒMTaÍ+~åK1ˆ@{ ³+U"F‹p þŸ&X<;‚<ukqëM¯ú8ÃÛN|")"-´üP2nSg'o’Çóïä’åm÷§"³!v~:%΀ΠU¬y“½öx³£1›×§þÕ;Y4ñ<­ŒðêõÁŠƒµáSÖé­w¾üË‹+Éõ„+m­È?†­,ƒ‹–A?#¶¾Ö¨õ?—4Š8³I©RÈÏ4M™7¾Kïû%xŠÞFà‘>aª -u?l˜¿‚™”„x|0æ趒ÈÕ;èÙ¿( ýž(…–'@(Ô¹µžÞ_e§Žf%Ï#¨`ê°`¿ƒÈß÷,}”ük·±7¥Ñ•<"=”ýÁ
-þ~凢#ZÎå->æœn1‚Má÷‘Þ”DÖ*ç¶O“DZk
-©Ë†y¡Š@ç©×éosuéÒ
-ÎíŒG óÇ¢ÕåÁ'+é€Nh¬ôiò€æÒoÉ)jqèHÅ´vEs¸ÊšÙæwF3 ߀¯¦­ã¦ß2J˜ª~‰'¸JÖœ¸QÕtó_>Eæ€\%qKoe5”¥ib(çEÒ®‹ê¢ÇD¹/ÃÑ…†Žá îµ:g–†Iž•MÞÁgËÍe쨞¬ò2gŒÜOôÿ¼ïþ¯T°Íî+ªuÓæ_>Æ–è¯õF=î´÷‡h6›m;ûC <âuK< À÷Û2ìU¯g|WJÀÝâp173KH¾ àsµÆÛ*Â…žX†ò®Ñ0/Žssg~FëØgŽ@ÏáùIÒàÐû(9£J‚F°5ññUì
-¿¾dø1u¼ÂL.{¦ T½JIä?[à\I*gR Ü„ 4Ý
-_ò¢åb­¤A7¸ªÞ¯E Õûð.`= kHn#Ç)r³<Å’ÔVnâjøtŽ"K7ÿQ^¼ÐO€$m݆F¸ïU³…õ¶«˜ÐóKõzz‚Ǩ2Z“H©¶…€æQÇlj³éK¿=(C1ú(øíG!ÂG·h‘WÕ @Ïjì¦S‡ÖsÓÎq–õ ³
-$³{}-73},ŠÙ
-‡É—é† Ý«Ã架N?€ $jPâÅk(ùõ¢(AdÏËîš?Ír0Ú2iZšÍ0
- ·‡Ðo%Ë@ûa~µ]%áÐ$!d¹õ×Lh‰‘uÚIÈ­}IÂXmL)ß6‚DÖëÔÇákZÇ«(Úš@—ë»>ža Ü\F‰%¨·ê²Ý*›G²
-k$éz8~h<Š…Np샷ˆ†‡l1E[vAFåí’… ±=c™Œ¸¥õá/„5¦¹Rá)òh®ÙÞÅÚ`øö
-H‰Œ—Ar¹DO ;ô¦ƒ ‚Xû/çŽø+ùþÛyÉby!—#4^ŒÔÊ& ‘HDvóÞGõ×?óÝçŒê˪Ò^?>|½}òãUÝú-kÃÍFšÕëßÏ·ÍÞÖìѺÍõ Zï0®Yµ8( ¯wóâîྨÞe­z†UÄZe½ŒóÚÊÐuöÎZ6‡½>…™5¦åÌ>3ç…q›
-¶2<^ÑÞ-šqMŸœ}!úè³–·œîB8IoÎýmÜ‚ÁýõóL³ZMŸÑ&-s¾øÒïe5,Ú̵ü¼e´$šƒMè$j¯¶îSr6ZËäS]Å'³F>m¬±ÓÜß$¢÷ÎñTÄš¡¯•B 1y¿©¿ cÎn¹âªúà}œL½Túë&ÞNÔæ#WÛ ·ì¹T-“V­—[e«uA’|ÙLó°ØAqDõœ«— ñF™ë²sÕHò™„
-WúZTRDá©sàßâêeIÂQ+’ÚÁ‰–ª¬ŠiúJ™]~o>(§ùºJEø¥Êsùoš:óíKçœÐ™lÝJÇ5Šµõ³xZ ¿Vˆéˆîå´Íÿ?ìõ¿÷·wáKiqÅ–Õ‰5´ü%Ðœs4_zAúI@£z­Qæ/ <¦Yõf„{ÓL=ÇÓV¾<Þ­¨ ‚qrí¼ÑI]ÍLöéÐ>< køU3¯².Þ4Õ]œD áO’È O=:¡%€0ôÔÑëÕ|Ó£c¶ÆuÜ–ëœãl‘ºï¸F¹1Œ¹ Q 3© ÞgóÖ[ƒÍ‡‹Üâib(|
-`ÕùÒ¬0=¸ì( Ò¥"ÎNU^@&òByœatI+#(ç‹b@Rk%Ê£è<¿y01ê\…¬L˜§sPt"5\çÐÀ:g-õä!£¡¤3SJQQ8¥¦µ[Æ»bUàªZ^ùKl‚¨Â³¯® ¥Ì JÞ4q7U‡Ôˆ©×{;ƒm aÛ@}Ÿ¤ç d‹“—áßi{
-†CáÆ)¥Ñ<гϵ¯*YZ\ÅYãØ¡ ]5Õ¿?t•Ú†2Z;óˆúþVDƒH0€Z@£]LOœn`V©â€°å©ŒÃ•#¥òý²sý¼ù»”„€i ©¾ÓcЗQ†ó»÷…ܦŒž%àóf¸º?Ì™Ïï £™[£x
-”Z+©îÏì…NM¦—b'ë8O™—´‚¬ÈñHYT ¦0ïR_¬BI™©x Eç
-ž± j™®(¨±Çj¢õŠ!¸f ¬~TÚ=ô
-vqË¡Sdf¦œb¿#Ò¶©ÙT»s°¾•eز¢ˆ nè?vÝ„© E©‹óÊŒÄ_¾†뜒ï×"7Gsdö䦱ÿH5öCÞ¿àì¹ê ˆš‚†·^jž×Ãk€PF ¥êA ²a;&¿nú’0’OшØþš`A
-—B‹ÒpãÏ2}l>”Ʃܨuh„Å ¤#¥MPÆøþ$ ñûÇ¡ËL\ÑŽªS8^ëí±WDí×â%úvòMÈúôd%´³p&Òýzèå…^ª7ãà­ôãê8tx,™6úâÉIÐqx{œ*3ŒÝqݦ쫓À†ó#Ž„´gõg± Rì'cí=ôq°~çM[,ì EàRW¦ÆY,GBDÑ”Ü_á<î(ËcÍ0†ìW‚µA¹G¿¬ŸÁyM¦–¢Q¡Ð΄ dĵ,¬hµ|4&’6š1[2Ö®a £.š˜OT‡§x‘$ðbž¼!¬Ü˧ßϾäR“)ïr{
-Ð×mpQ0Á†6Âë*¹$V.‡Å·åñò*œä\E”âóÀÝØYã‚(R¥eå9:€µà?Ú˵·Î£ŠÂ¿àü‡÷K¤¤Ð“¹_@|ˆ 9T
-Dµ„åÄN0=¶‹ëù÷}Ö̼Nê3Ž ”Viã}æ²g­µ×r:Aë 1õvˆXñJEº9ßäz؃ýÕ©H!ôu`5áé%¸ºHx¦[±
-‡È¿Sf´û5‡³{KâšÓƒû GGQ$(ñ­€èÁÇ{³†4D–Ñá§Äµu%¸ ÁJÛ; uL……ó˜­È ¬ÞÔ‚¤f¥H•Á[Weç…ð(Õ)ðÞËØpòÑ‹I™xU0Fk%ÂœÕ V¼ ÿ0vAÿs+‰P<R>|'š]s`h%b8#6ÞÎá;œÙµ"™#€ ƒ{ 8:¹µØ°Ž¹gM ôê=åíœ6¶
-~„± ‰ì„Aª&ˆ„?åNFÖÞƒ§8Ô¢í¬‹k<P ´Š
-ä¾z³1˳³Í?øs‘ÈU½&¼§‰
-󚺱ü©:Ñà¾KM S[‡qÉ…6ì%Lã¨ó¥•°‚o¤Êƒsp41Ôž>](B>Ù
-V­·ú™’ìzQõ/… ØAM‡d-†Y¬m3´½àQÕqs‡d
-µ™¹?å)ñ’€Ã-¦^ˆÀ„gÝ=žƒ"`ÏœKÕM½ %ò;Ò~Z:u@*Éše9öñ<±[1oAž¸ ËÝ"§0ù ¤`ä¤A¦7Ñ…ÁD+$¸}úz¹wÉ>ÆétH[
-6"êù±×(`J?1^/ÉnãH@Wðö  ”‚ ‚»†ž×zRƒWµÿaŸ PÝa;ü“S@f"ó~&§O
-)Ï€‰ÑZ®A}Ÿ° F­†çnÒA!µ<¦s gŠÏt#P9(â ßîˆîòI¨£q+f« ªA¥ÎðEPÓgB@:ÉàçP%Öži_B05š1ÆeD„þu*ÆnÜd+ãBº!©ºH,÷Mjsç"Uäcjƒõ`ÑŠ]ÍŒ
-ôù„âl#c@ÂqO÷Ü!ô6``®Bï™~ÚôV¤Vh Û@-cÚ¯ÂI¦Ô¬Syw:…P¾½PÝäªõå/x
-hìëxùªà“c@mâKkôd— t*§&‚èë}Scq%D&Þ+~-f†³M×ú1Ö‹šÇlíb)üìÆvö€pÄÓš‰{´“rð Ή"\–’¾–]u®p’ŽxIC_ûmqÙ¡Leë!ª
-U%w6e|Z–í¾j]$¬É+ÈEWöʾô(†—¥¹Ý­q 0Ôòë!šrhq¿L)A{P¿áðò2p«Å‹Š L$âòÁHÚænßÒ7žQØu«K:$ƪÁ’rÓ!šjVµý¾ ¿ø#¾Q?%iì=G÷¨O°U`G¹¹cwŠuRÈrŽ#:ðçBNÇF쌇¢ìÀªí”Ôþ¢xÍŶ-*e¢T#BS â<êÂß5;EpÜƵe·;’$?¾þþúëë߯õñçšÉ&ÉFŠ"g1ÜâI¶Ç?Ÿ1]ä˜.+ë²=~~äg;Bpà³t8 Ì+&ÊCK$AX"kfàêö‹“Þƒ>Rúþ´ÞEz}౦CZ`Ég~M£99
-þ¶”Ìá$æ»ÇlÁó€ }%d ¹lS1Ѻ‰2g#Ää+è2þ:Cšà:¤MЀù²]K„ñ|.‘nø öôs¿Yñ=û)eÃ;yó‘ ôѱåЀYÈþhg˜—|5¢“˜ïyL€6ÄE0ÔÇ4™b—ErtÜ4‚ÑÈŠ †xië3ÊÁ»»Tf$H¯H“+búÖ±±18Þ/÷¼OÖGˆ‹*,6ßÙz¯ÍΩ«Õ‰ÂÔ¿î^$c|°‚îÔ¼\BàSé–( †”Öq`•ÄîW‘ [L™:—³ô ×xX¨£+ó4x•Nʼn‘7 1è¾Î\%^BHøÚÜÓ†¼]òeyóüó•ÊMÇùŒ;””kÆ1Ö%"’ºr݃*4|º‰,²2B9TP$ÔÝN—“³ÉfAœ”´vv!jò{Q‚Ð[¾øSÔÙžtÄ–Õˆ”’r#øTg—d‹ Êá*6²ÛUþ5ÚaûŸ“ˆ¸ÕbÔbÍ¢Z§Ç Iÿ¤‹ƒ¶ž ª
-yÞHIÍ[J©Ô^S± œ%©K²q Ü6ú M‚¾‡Øå
-j-erÌ‹ð×½si×4a{›)%µµiá].PÁÔe#ôÞl€Ã1ð'ûýžL"x×%伕àȤp5Â‰à•°ÉžŽ ŠTìLëÂø#2ù„bƒvrÈ9…z‰YÚ¢iÙ“ÿ²]'ÉÑ«X€·â T†B õÔôí\ß¹"ž“Áß8}¸Ýiø±Oœ)1HøÌýýžcƒõÉ Ý%Ýjmîƒ_Y’йœ3¹ËA¶yéD†'ŒFÿ´+f„Õ»G7‡¾ˆvÁœO®ºbG êí´† âD…ô¨©q†!·ºËèoœhðë7ÎWFq£¼i—»iÕ+Êøj» Böc٠תÜ`ßWÄA·1ÿÂámÄ¿°|ñ‡5èë2 5_[ÚØýû®mÈ¿¼ ù›÷WÐwù
-?ˆÒUwŒèŒg¸JbV×·îZ ôü˜nËœ¥$pÑÔÄ#€|¶ÁUxÄý#ÅÏyÞýÕeõÀ]+GÁoRä¡áª“4ëÓÀ¨´
-“Uq
-•á;Ƥ¿YXòÄ—ÆÚNÅR klÑ'ßù=ÂSÒ–œbDÓ”üèA½Fìñ#bëoÀâÝn #ÒôÝ!×'.ï„Yäh}qGlïSVHTKC†ÎÎŒŽàÂM+ÛŒ§ ÷¥Ÿ› fPweʘ¥±»¬ª'iÛz8%ÞäëÅ´M#òÁÖ“Vmó.`^Æn†½!ÿžR(›ÀƒÒº¨ïž"„Ù<Ÿ'Xñ³Ë»€-jñPÁs¶i—w¡´<fÁÕžuY˜-hÏyYá,ŽbŸŸ8†è[`< Ô§û+êûc-Ýœ3s%~΀#®xz‚Ø ¸•ÜZ¢®Zïñg§œ•qFÙ…ß–?$ ¹ÆØÔ©B‰9 úíÞ\LA@ßÀ¶ñÔPŒsú]kÖA¶WŸâÞ³=î?§äýקx§Ñã5Ö'c¸=ÆFAW¼O–k=µè¨%³ymmæyh06ógIë+~QÉÑñÿ— S7A\¼&ù–€Çmw|,ö]oãëîÉav—9´¦¬uEÚæu{LÅA(È#îõ8,ë ´4xÒÈxñʤ,ÁõTñ(arF ‹ï×”ëW<«UÛ%õ7bqG„‰²jmwLÚ€6ýºöIÐyŒú¶š,[I›¤¨ŽJ˜ë™ž#—rší(šï V5õãðúî² qOÊ3Ö˜~=ùk7™Û‡;1V¬—±=Qu¼NŽiòW¾C6íÜ©W0à¶Kå\ç,6È»¾B¦h”óiÞé±s£ÂÈO ÛÄë`ÜÎyʽKi4‹½ùXº€Îî'<&,Ÿ•Ñ•Ûˆÿ #IgϳZGÈᑸË;xÁ—àzè7Ô´N”ô;€, Þ,„V
-êK{3¤Ò‹GÌ㯠œ¯Ó}j¿|๗’Î9Z!ÅØã;q¾WH;0[ã¥zÉŒ
-Ýñ5Qpë&6Ôæ°îÿÅ|sö!Žâ½d‹öŽö†˜µ3¤ÍehT
-é™’ÿtü^厹ã¸oÔDB².l˯ò†(9F2„o3•ÜH´,Äâžl/Wx½7™ˆ³Ùêç«7ºÿ*è³`@ˆyÍ6˜’W·@ˆ˜@ãXã'iìLÂ#²£ìMþL1qÅCÄ ýg*gïTQ×t$ª8dñ™ÚæM (Pj”þ_÷¼ø?ZaÒH“šj-‚µ‘ý¸¯%}Î)czŠaÀ »p%eS ÐqŠO8¿G†ü°a†úŽÂ'¢úŠÐµ|›¾:§œ¨aÝ®¹÷=Ÿ‹m®hÔ0Ýá½ÝÊEÝ;DzΰÌRÎÈÐ3Ù °²^^}¹ÚÕ¨*Õ¥ùæUf¤GÃr9%µC7¶¸G ÈhɃ„âzö9ÝŽmaỂ0 p»Û•sÉaÐþ Õ<³º‹Ïòêîº,$¤W%tL¯y¸¢ƒ¦`N#uGÅÌzL´[Ýæ½2€z\c¹¤ˆÀ’!V¿‰G‚ÀI\Så“ëØ›H
-=ž>!kÆI<¡›H>µѕ31}²Z(i.:É·*m(çGMˆuÚÈ¡0‡±ÄÐÈžý»A®)‰š(?JÂf‘92
-MgcÔ>/´Á ãœ#UÊ7Áj‘v—õn’‹9¤l¦pŽ Áû4
-+Ûjœl^!ºªIÚÔ°lE"ÞœI1jSs¯ ˆlèŠÖ›SOˆÔŽíóTÅì¶^Âh!‰&´
-Î7˜ÉýŠ Æ“±†ÿR«î2V³ÊN dú‘ZWÊ׊»ÒA
-$SÊóðÓž#²eÑ
-Y¬¥î‘¬=!Ìù–öT‚'D
-âG–KÚ¶¹Ë" #Š’RºS¾1ÅT>xAž„ãŠ?‡yí"ëå³aÞ&¿CøÊo/d*÷VP!ÌTÅݵ¡Sù Ž5œí•1ô^ã,XÑÖÁT¾÷‡u8!¦;§c ™<TX•$vMWŽ†E¬²n’ÿû§Cb o µìKÇ|*`¡ê‘Ùý\ÆÍ;6{´ç2øny®èD¥ñRúÔ‚²Å“£[< 3"ˆR:N†çšYz/ž°‚Ó ½Æ»ÈÚRø`­pLLpÑB WÙÌ®,iÖÞ-Þ£,^¹€O²Ž½À*0Hbƒrê]ARÉ·òëØLDÆÅ?ÔòQkywŒÎ$Ó‡-ËwýÐ-4eO-0{+þ>Ñ0¥¤H_‘ŸzØ"â¦ý"”M€1õHº yxVìÐâOûvZdýuˆ¿»Ëdß*3ƒ±šr]WÂ7jÝe~è¨$O.îídÝGt‘™ÈºU}Ëè,_6ï‚¢v1>ÌË´e3^Ô%+™°­õ bŠÒN2EùK!C„ÊV=/SxóH„¿„T(±ëODeƒšiÒF{|¹lаI¢SXÓ% ˆ®ðbß<•Aj±èÎÙ=D•CïÜÌz‚ð,Ï`í_RÙÓV&¤¯‹@YC³e Ÿ¶sT¹"Y4L Î"üÒËQå*šßDš°¬Üz‡8GuŸs³Ý•Œ ¹k²A?ŸærT÷û^ŽÊ5“/(õ.§SÏÄ«™¤´å.Ù]¦v‹=Ãnl›² y—n‚ÞO´ M)‡wÐÉ5âÈ»ŸÌ:›H×a‚:í)lk+ÜìC¶¹Ü!wM6hÀ©z; âs›ÒifÙßoÓ“–|J|ž"zâ騡
-»xŽQZLǤǃcê¹RG»CANµäF¨}J@D5«~˜øAöÅ.íNÆ]«T€S?„ Ñù**#×áÕOá‰W´¬mNÿŠ .ÕGµ('2™ÁrR1ÀK¹âHK–måœî%/Ÿ‚‘!é ‚å$/Jy¾!C+ü‚{Be·Zr÷¥Ç©Àð0£Åy!Jï€G¼ÖšS‡@0!­³àU vPu édì[Ǭ"ϵ§D¿dÔ>ȸ#!÷a{Œ%˜
-dM¿ègdàÚxóUCKÅÄ'퓹:bB°¡fž¬šIµé&±Ó\" }ص«¹!ó9†ñcôûÚ©AgÓvùKÈ q\Ð ¹:@›V’òËÚ}ƒ ƒ§ÌmÉ!¹ ¤¥?Œ =v¶ÇÐ…ŒÂ+Xÿî’1!wQ6èÅ(dªù@?«þûýþ ªìÎRvwâ…•è‹ý¬-ñWKŠ'( éºàÕÝ¥.©ˆÎ‡Ë؆¼+7AïÜÒ[ôQ¿'rHRG„ã´úE7±eø—Ñ;[Ôs’xÂgàäwº“q!WQ>èÇãD
-XDNNÅ<q„$9 ¢j/¶Ÿ\Š2¯»ÃoHf'k=AüRdņ9Âê‚v`ó,.eò.ݽŸì¯Èë.¼®Y.´:¹!{9É÷“ê> ¦ßÙ*!¬é‡[(ßå]2&ä.Ê á˜8ed"s‰$´úó8Ð:?ã†À!BÊGxÂÂ=ûÛÆ€?t¿Qg\…J@¯n´1 z¼cd÷bþG㪒ˆEÌY|ØÅñS!"ByTÖ¹êfÞöÃÚ5™Î^‡e$—H†*8†1¶`Í㛦‘#6%•@± 2ÂŒ/­#Å¡3¦Jæ/dWm=Wïõ:žsÐjˆa“ÿâÝ`&Ðv’œÛÐ4Zžæ“H¬ |³ýí“¥+È™7ôÇÐÁÂáS»aû!¥þcÕ²=ô™ú|¬­%¶l?OŠĤҋí$CÄíHcÞTzÈ°ý”Rl<Íf5 TÛÏ™%«ÅÑÒ‡¯¨kJ€¢«++<u7®±Dµz¦‹ƒ…òl9•Î"r‡]IÀxä:â¹flhê1¥¤©Ø0 µ?Óõ$ÑûœSø‘9Zm}£s$;:G>âµz.èµÂ¨}1#o‰^¡Jß@0C“fI–¼j÷|öct$j¨<wŽg¦aU1ÃÙ&rWeƒ~ ­Bj¥bjûv¸Bö‰`²16¿áäE³1üSÊŒ÷;Êö¦‡„¯ÊgiÜ]
-‘œÃƒÀIŽ|È»pô~@àM̨ohV\ZÿÈ®†t­ÓA¿®ü©Ž)€®–
-É‚òÜOÒ¡PXnK¥žFÖ ×—(‘GýÊ
-ªgíÈ©£íEu¨òµXUž‚?ÀV
-©´¯PˆˆpdݾL6YÓ„åѺ´œ©êr¦4¡¶ÚF§! í9`æ@ô³©´'P¸‘
-®”µ"ý†ÕE-Þ©ÅHõZOúNÞÃí»Ä€ÇÙ`BÎr_ïtho ²dœ¡¬»Ã(i
-’×µ¹Îðbì®Ã”!@š\°åa¶åRzð6jn±.ýÚ©B¿P\;ÅFÕ9üs–ÐfpX_‡± QD“™%žÄ½‹¥ëYbòØÐîm½¶Z¢R>‚Ä׳ȶŒàmE'¡“SwBë_Ía+{Üo|é,I~¡x…ƒÚÏù£Ãí¨$҈ͭp…äºë¹¾^³®+ìyøÄl§ƒ²ò„j}Ám$FèêµÕv„‹s©—+ÛÉp¼Û¡æÚj>•ïMx=‹å3ð-ÕWÐû¸Ãâ&,
-Ë9&r;"02ŵ‘|„°©1—‘4»†¹ØîøF®í±ì”d¯íŽÙ²“[BOž
-~5ØÑ-#‚¯
-Ös¶$«HWŠ­‚Ø`wCG¿!!§¥Óšµ% C×]†/ì&.°É¤ë$¿M˜¤(k¤ã5[qù AËfs­X./±ÂámÑáy–= ÜñÑú"‰#aXš¬qmåâ=ãw‘Z–zó˜1RC·ºJÀ¶dŠ<ðY‚Ñ,ЯùdnÂjQÓåÚ*™Ì”r [}‰/¹iñË\ÆXŽPh4ïâᆸæÑ×óÖšKëY#Ó}CùçN!oäg«öÒ—é½ @Ÿ[%ʉ‘É å¥c¦Ã mÎx•Èu{ÃbíeL=!²ãd‰ÔØ%ø-/å`»Œ,YàÃÎed=êÝHk¿Jjø ÌVw§ï•w}žY´”íj_˜®€PÀP¶¹÷xˆk xù
-ËÓÜ;BÛcíÌíî9ÇšaûÔÍù¯˜îycYË4"qpGŒT¯pgjö6ÝËÁ.%
-x"pÛVašÖ¾×- ð­äËCsãÿ14ÀQ·ë0W ïµÁTÒÓûiÓ7L²òôôöæ3jÝ3ºq‘·7Ÿ5Ä Ó&º¶»½üQ€4éïNìõÖ¸>?Ü{{qîBÆá¸cZð÷e@Ø`ÓLXh&q¡‹ӯ̒ugâæt¹ÔZ Nõˆ˜±Ï­ª`![×Ê¥Ü2­$sËL­0êRÓÎò[±AXˆÄ'B¶Z¯¬jp&ÅãÞ ò¶5îLˆrõiTY£çãƒxê%_" Žv’möPƒ13%Ë3“®8拇l©Ý’@šöd«Í›Nm;ž0a$`[[Ë”ÌVSƒš;–Ü’›ÈjüÌÂ|~üóñëã?ŸþúøËc|üáûõQ>~öõg_çŸ= ÄÌBk²m[t
-\Â~@óý[ ‡€ðÛ&c¾×ürÖ4Bë×vé+Ñ&5^(E=i-Ž^þùÁ"X‹IDÉ9€†ür{«‘¶ýå¦èëÜí—Ç?ôâOüôßÇ¢7|//Ùi WϹ$±‘ÿI¸<GÚaœ½e^å‰x±·"V…²H^û:Iu#zÛ>‡Ö³ç,ãZÜ£œhI%HpiIQŸYǸ»jz¶üdÙ• o¢j®imúí†à…Ú&NèëRñÿ—ü‘#c!~´:ãB4’­ E#ü%´e2ã¦ä‹­àÖŤî\Ëí:ÌYÕ2­kNstÉ¡Ä]·»Fä”çÍßjÈÚH’Bs^ú}d•û<²ãuàB¦„kËi€ å9šà;YO 9 ³ýËÜ|Š,~XîJ¾ÌÃxÓªöq·N8m §-6ÏÀžåÍI¬÷6w%âWL ’ÞÌK|óMÑñÌï#|kR¯ž}×hÖG•&ôDÚªW·]ã{âà{É—9îæ urSÇLïëðM2”‰mkN3žŽÊ˜Ën¹•Æš N„·Eä>¼‚›×IFÒ˜Á2*{tãú4ÔÞ¡ïý‹ò€‘k3Éü‰‰÷"À(¬00K4ÿoàHÚJƒoaüéàódŸo敶S¤7 ”¥Næ8¸@fqçØÚd-\Ç2ëÌ’)Þæ4†VZâ_;yÍ#F‡ Ï2*²ìËL>ò^’— e;{¼íCp³µ*žõÔ—ÏŽ¤· ÄŸ`ÞaÎüAõ÷hði^Àg#¹¸÷˜÷ϯøu6Þ7£ ›C¼†·§Í‘(²X¬‚¢ôÓ“Á‚j”ÆÔ¶
-B*]Ä99¢Çs4^‚aìi½‰=›—ÓêÔ‹ÁÖ…•}"÷¥ò7Ç=DWÉóÚ0;+¿„çÀ •¦² ð €nd;‚, ăY;>…Ÿ÷S˃íúçýK_Vg. ­†/a¦ÐŒÂAïîŠT*ºìRÒuï†Îæ­¿ÿö¶Ç Ì¤ï´päV• á¥( 3')lnIY|]J4°|7†Ã 8P¼ 4ŠZX2@ÕgnJ{MÀT¥'›H®AÀbäÎÃ2k{vªÊÎNIXª!Ž—¾‰«dŒ.Ä2lÔ»Eçdô.?r Åëž5òèªõ€ZƒšÞ\)r¤ëò«¶ Ê$).¸EÙ€ë„ð $¾í÷Ž~
-Œ_Þ~u&QhŸÈ”ÐîÑmèm Ãjf9?1àé«í“s¿ R­+?˾‚ÿrS
-àG&“Êu/ÓR@”û@/\y šæ“Ô¿=‚þÁç€'ArJ†¡Êei%E!rdßN­¦á÷¼1ü‰UÜÙ•ËaJ½™`ŠOLŠði#Õs($|¦J*iæz{¤%š(«¤4‚åa… 61ŽR‹-ÊVå¢à:fš'é`KJ°ãR¢("ð‹Òkx„©Áp¤vµƒ–ôÐÆü"4ÀBçHBBñ »Iˆ2,Dc_$X MÑG“³ â=a@ÁÇ%Fr¥ª‡·Æ C¿á鼆@Å…s˜+–×ÀZXtN‡eÉ£Ž«þp¬ðœ.°‡°L:úª`yÙÅɯڂ ª€( -S@’¨øÖlJ…G’©8’\M céEqÒ’”ľøÖÜÏ¡›£.Ú»doÒÂò\Ô ¹@H¿
-Á—Dá9SîñÏî@ÏD,ê“=ÌC¹$4Ùí%ß!X%Én§>Ìàô
-Ÿ‡Ç cÇÒL8wk[À_ˆ%¹Ùª»Æ%¯2€Mlî!ŒHp˜ÅCJå&”*ŽÈ‚½þ¬x΂»{xÈ0Š\ÚVo§’³&ËÁ¶­Qˆ¹™•BE–øk »»“]~kÎ[u΂îñåîká#ºî5èq
-(LFœß~òækÎbdž±µÇTö é$8’ªÕð]4%iÍ’•9e¾¶¬+¶
-5‹vÀÒMÑÇb’Æê$`GµðaZº¸Uz‹ ¬¥„I—ÎÃ(3^†ÝÚƒ®>ÍósQÉXlKCÇp`OUþ,‡b}hL¸j²äb¢mH #ö jRî€;Å’£oäÍJêå —#ˆ Úñ9KVaM„EmûA¬088……¤·|Gè´Ýâ{ó|^_õ9äÝ/^I¥×¼86øÛÿKWêü?NÞõåGñqVÅ7êG鞌Äÿ£t+bô™ïâ|æ{pÍ—ÿ1Ò‘&V‘yÌíBúãl‚ÿvÀ£
-ýÿ‘ÜïÇ%úï°~4šËïG€ýàš/ËZyF€;þ쟳ñ!Ø´ÃØ*tÔÒñx;"Ÿª™Qôûq‰ÞþëÛ_þ.ùƨLsaçxIòL‰¿Hz5+TÄhSF6™Ú"“¹}DA¼…]Åø<ˆ©Ä}åŒí­+Ÿ×á’Œ’РamÆ`“l® %äeš¨¨
-"ÇÔÅú+kR>ÂŽ|ó8éš7×Ê•™ôÊÀפQš[Œ!h# ¶`õ:Í݃‚¾™]íe¥:Úwš»ËëZbÀÚ™½ã:hºñ/œgå8hïÝ^‚£ ½ÁAW¶Þ9op®ËÍXgkvò×:Ñà è`9NZ7a‡ÅÜ‚$é ¾J"¯ßÊ´_WÖ¸¤†fG|Ý?
-
-z·_w´·%¨ÀALpÙÞ”€ž?ïœÌà\Y‰Oô§V"#Õ.i•–á5’úÆ¢½ø“‹@Ô°p›RPí;qŽ‹ÙÉ,{ѹ«åQFéwé®éõÑ;Œ†(¨åŠ°j~Ysjaï3ˆºj\ÒÂRTÖŽ3ÅŸÒ'©¦> ! g‚`Bh!FÖ¢-¬CɧøUðeÌ7y>)8dT\ˆ—I‚ñ6‘2¼«L$ŸŠ:Ô€c™™2³Mëâx!¥0[ˆÒM鲪#xj“tTã[¦WÊx,|Ò¤µE`"lD5ÖÑ|Mº°"ÝîÀE<š³7O¦É¤õìÌ~Bí_fªMUg&ãQðõ]!¤N/‹ò«èæT2½qACP EO(ðá˜Ï«^ƒŠk `—Ý)—12[ÖÝ<}±ODhENæ]¥©CÒq³¦׸0UT ö»QÙ±eäÈmõ†»ê™ w¶’^Ò¤†¯Ê)¤!"ù¼ʹ—ž| DW-0Íbïâ›ðœ‰5¨"å|û,¾RQ«J‡Ë…t A…;b²¤¨oݧš©É€Q&FñŸ¯Và×Ùd㽬|…`òZ¹¹`^ù3
-ü˜|
-'dÞ­ßï
-Sß•}Ðq¿Ê(:¢-õ~”ÕQÀ%7ø‡F-™¨¡˜Õ{ÓÑpR)¸›V[Zaˆ–’¼ð`Æë0ÅkÐ# BàTÉ$àrWºÇMUë­DØ"„Þ3sT½ù)<]üƒE2ñÅ“NJk<¢Òú¯Šx2ã\‹t§“ì­’ +ϦaV6à;„ÎKˆ®ªWí¦¨é«x9Ç<‚¦î_eUÑ.ÇÝtgy£<€Ÿ¥çÈàhZI¨Ì™»_EoªH *¨iÞÕ1±äL*ÅÐÌô…«…‚ÞDcö:r_Rÿ- )('¼CFJë9{¯AØ^Š¼phxzÊ "Œ,9=Ÿ”ÓO¥‰×Óýªiê&0žýf.ãµSÖö•Ž¶$¹nLÓ*Û tæ¯ ´Ê¯çæƒ%’,ú
-îÊš™Ù™Ø„•c#ßLËp€œ“Îùx\&3+ޔɗþÁxÙäH’ÛPøy‡\Ï" QK£fÙ[ŸÀðjrëûû{Td•ÁB c
-Õ¬D>¾u¢ô &FU ò­ ˆª°Demo'g¶„Óä[chLÃuf„)ûêùÃi•U>å äzØ´¾Wš£à¸¼}ˆkÁék.a 0dÝ°Ú<·ü³dwRë/)Î<‡õÅo˜ãXöª`ûVýU ÄgÛzw×@
-¬4{×r/{§$K&5k®¾çJI”˜ÌÌo“þý+PÛ’vw‡Ûä¦6Ë‹¬-Ð2sÒ¨œ÷ƒØ@Ú ŽÚo§{žé:O‘¤µ‡Ö›K™¾‹s¿o[G5^ÇpûZæª)
-#,ùnÿdÖys‡@èÿ=Hˆ¸õ¾{ü— Ñãñ¨ƒ²‹ãCyt¾[Çß±K‚«×í¢Kö‰ZpÉ>7ú¤ì“Ÿ?ÐTÄ…`A›g*ÁSAÂf©¥Ì¢Â¸5ˆsFEÜ f7s¥‡•¨òHAæcêf>N7Kº!) ÑÜ`{}•PNTÒ²n¦ aÆ€õä¹ó³ˆ›¡¶¸<a6)ÉÄs¬ZaÔ¤.(üMÙŸEH\ÇIàYäg<"ô‹ËCøq­~XÄÇ›Fí'•Žƒ,áÛ¦´ðu§OtAÀ#«|¯nI—2`C’‹í̘-¤ùf†Þ©Ï¢_Q‘˜6g‹k‘R;Yhx¢8Œy·(hBŠH]öi¥u© :Ž‘$6°Y“®¤hsâ¢ë¢^p«¬b…ÑG’Œö+œÉ÷š×¹ùx3ù€;³£@|Fg¼‰m™\§³¹þÀz×¢ë˜ll6ùàí!ï]Ãv1,¿ î]gw«è:– 7j4]‡õŸ'çd-åTS2êãôÉ êC­ Çß°Šðl
-E$7r°CQ Á´…¨“¤òCŠÍ2žºL'E(xR2Ëõ„É°½»Ž-€w&ϘI©b.ø»ß«›åý`Ò1ü3¦™áÌqÂ3°¯pÓÑ•U—çÏÈÓnåU> +w—žÏLÌX‡þ±˜È8\ŒŽÁ¡MÝo^(–þÍû¤zàaO1£¿)ó%‹à0 *ÁŽ`£0ô£š,zémªŸ¨FTB_øõPkHn8™ ˆ ‡[D-P2°
-^:piëܼk ’[«Ëò´ŠžÍ¡à“™7!ƒ¨&4M+3a'1—îo?K›vp/k,Oö_?#=CËëxs9©Û1¬îøä%¼i™ûM"Ú©\t0|p_½…F€CZeÊŒZlÜÈ› g¸þ¹ &ý,]m¨'bb=xŒ¦É…9ד°“›.>Š^^„)k:=:ï”<j˜üÕà,{F=M!'ïaN p„X ã%ü3O4„¥Îý(›j:+G*8;ÜÀd5þÁ÷[â$—KôF "ìh׈r§Èõž
-Zp1+7úäí$ÔU-'Ø[5£2ŒxjCªøC* Š‚›_N .þÇù½aŒQA;ä³Öéêj
-¹—Gí}&Ä ˆ—n%P–RxÆ­Ý/Ç*á*²ŒÎ¹ÒX0D¬!˜[Q :
-!ÅÖ¶f2’mJèPÃäìÎv%1BwÄ/8!Â,˱;âpTœ˜38:¯è;<0ʈgÅÔ}öƒYƒ½I>Îà Æ‚]S À£5ôÏLGÑ-S2]BIÆV挛ä¬íè8˜¹d‡§ï:æÍF‹QoÛ%ß÷…_@U,š §fÉu‡D Ø®æ[ÉËKðvXQð ÑíI&);™ÕõÜ6Gò7e™æéLK‰…)+\'ý‘I“K™ÚðÝß:A+KÅ欷9¢ªT<sÑw&þÄ.ih$‹Lfàƒ× ‡«7b/ÁÔLÂÏý‚ýd9Í-¡ÞÀu!þÔöîÂ3<вXûݵI˘$_>ái­À8ÎòöFØ-ÞÃKpT ¦ÃJ†iî)h3` Œõ,^Bkh8¬AjÛK—Ä*xԤÿA‘¼ß톃Â8kžAÞh©½•ð@ô+wE6½Ã­·¼É܃••ýépF—-äµíôNGî>Üií°dÌËjµ·7´žâèß!pdå¡Å[BnsžmS7dëC磣æv:Êæiöú¥À m°â²G Ä–h—,E |m!Yžö¨T¹Fh{î E(:Ô°x$Ú_a`ž1Ã,,Q"!›»6Ìf»[T OK„1”<›wÙôš× õ”ÆþõïGëþŒW¼ÎY1`ø"7~øçÑEµC¸†Û‡‡ 1 ÂŽ+fy‰9úŒ±Ä€°Œý
-Š@–– ³êŒlªèzÜ¥èuçNzizþë¿¿þÇ÷ÿþy
-tttbÉ»[$u§ÁDiB”ý;4¼'ÙTÔ·îƒw±è¬ß.aœRo-à.aš>÷0Ê×#(Z üB”]üÉ}^a‘;Q¥RX½ì§óU&^úi1Æñ¤H@Ö¢§SÒx(n%ó§ý|úG )Ò´ù3|»Cƒh"òµ¦»Žÿ3^'ÇÃ@@Sq*·&•Éÿ:ïÐEĔ쓤jDwÿí3Œ„Ý!xkŸ'ü‘2,ÓXú£¢oNž²òD¼Õô)vËÂ`_B¼ïWaUÊ}FlûŽ
-Ùë-Û¸Á2:GïýJwwh‘¶µŽç,#
-H‰Œ—Mrc7 „Oà;èyE‚Äד¥o‘ª¬œûoó¤¼ð£ÊªÙÈ£ 6€F£âMK•õñW »ÌFtåÏbúøüø÷£>þþp‰«‹úhÝj :Ê5Lºšïaÿ>¼•«ºªöQBš@Ÿœ4.­ªôÒ%1á—‰šD©ut|½s[V20îÔ0‚.ÍBGBå"‚nV[híç•Ú[?`2.¿´ò¹Jµš ~u#¨ÖÊ褀¬x)D¢ýˆè{‰æEšF^z•a¼Ú*Ÿ“TYQ~×M{;cÚU«¶üÞ†Úù²V¯^E£÷hí
-îqß)øýmßí^œà¤u¸—qn÷׈¦½ˆQyqnw@µÔ%{YÏíþûmßí^Æ©ÊÃ<<^´{±+DÌ:Ïonç~Ô`U º
-*T;W˜©Ÿ@Ÿ'Ð)ôr‘bt¨¡TòB<ï ûu<ëÍZV)|tOË[ÛüÎR’i¼eŒÂLcˆX]”3&™ÎpyÀTš¡Ñ“­Ñ%푈@¥‹yˆ­ÉW¯–ª]Ѥ;LíJ©æ AV›Rdt²?þ™õ‘·RH­ôÝQÌê«Ó{6Ï!aBëw ÝÝëTV^í|ß.Ëž®Š54™"œ0P ^5æ=B0Ö™B®dlø<Æpæ ç9Ð …Ymš‚è^éOR“O‚…’¯fdÆò!˜„°lMÊ—åU¼’Ä Tœ³ƒâ
-F ôò_yOü”Œ´.MI,¦c¾ùŽ`ê#€$©ºYÌ‹î »|„ ª²Î€Éi*¢Tõ©”>Õ 6‚”Ñ0Þêð(
-ŽAJhÞy
-*t2%¹t„èX™«åx“‹àbe*f]eÝkúËEÞyb<®{‚öaÌ×™§¢)…clÁJA¦Dè¯&ÇTâ$bO!Ù-WÃÃÄÆÑ·~z–ãHçÕfçš+xH´%Ö0e0Gñ¬®Ì9ôÕíÂxL'õ9t·œ!å)bhÍÞÌqÊ>ã©ÇŽJ¹ìÔ ²¡KÔN8lj±±4í«~‚È\Â!èÖjo½ö¡øÆYZÉ9ÅÙR[°ûÂFç¹C¥„MÄ %1b-{lÑÇÀÂjŽü·—J£DþËcÀ=R¶u™åJUËê„žãž<õ±*"}…Ï’çcxcÇsR9ü½6xrŒÏš`jÌ•pð²Øñ
-©¥RŒ½cìq™žqËóá|‹s–­±Ûó•å¶ ^«YûüpB(VšÙPk B…P‹üu¸f ‹€µº×
-£+
-Uƒgisî2ñY@ȱômÈkn¬4h¾!•n1–L
-wÿYvƒòLkÆÁ'ÐׄÉB§fáÐ&ƒ97¸Î}ûcº®ñˆ\²– ¼èÙZôýxÔJgõ,·Lè^I#¬u–M®™K&xÛ©bž÷é³íÆ©n~ –æ›nBôø‹cnö“g{rFÅÔ¬ß êŸ´±Óy±ŸQƒIÇÇæ
-Чô£“§¾ÓÛ–TuÖ§§FÖÜ@ ΠÓI<¡ŸæSäÓt³û§î˜ûÛR¾ø¶eV©±#èpÐÉÛnñÛs·ˆzeë7ôå?íª$ÅÇ•æ Ư÷ózu
-¯Dw¡öÿM JË})ýù9¶ñ
-dø‘ˆBÈÊ¢•uV$wv
-¨ Éø·¤üÙ'#•_Ñrg5&#6„}Š¥¶ç´e±ª œ¤íżW6ÝTiÒÊ¥§s;Wɲ* ʦ÷¢ÜÀˆ-2!™ë”š†nõÇ;{î¬Ü/ó*¿RÉ5·(9 #Í•¤b¦8¶nÏ¥ŽãÎ%µû02`ù7}dš;ü™3|@Žà;& )%­m×Y_–ãms6ïâäJ9sÛ[—t22Û¼:U—gzŒØMÁP¢˜IÖ PÌþ3eÓzn¤¼o’;Þƒ¤-af§ŸµÎ Ä!P,ÔhæÒ³d;á.Áûɲ©Ì—fYÊíL÷²ä°1õ­ø’†1Ó‚_5œƒ;£)cw•çêÁ,¥i²³øÙÀõãá¶øЩyìx󄤈a͸u‹Ü—h§’>Æ|ºn®1ƒõbËtf3Xî\7¯©ùÊ®jÙ»-_Òg¨^®xpƒ;)¤¥õM ÑÐÞWÑà«¥ðâøÖžKÝ‹Ý6ûnx¤gÁîì­”í0ù+1Ï¡($°Ãæmsƒýg1úÃJ'•”ë Ç8@òªrñ êt …CVy úÌb¸+”My\•¥˜g‚‘obè”’+ñÊ–
-#ª‡ìŸï„m 3T]¤Û¯¨´qâ<x§Tf…!o^$feÉ3+`“Ž?S„a”ÃEî`‚äú°ç—¢÷ÏH°+u09U%Gz³º]V u¿v,J„./b»sq·¨Ù–±§ÆŒÕ¢9•€9¸ jSÕ@kƒ
-A[zøk1Y#o{†SCI
-ŸSáÛååÁä„{Pü3ÑÂÇlj‚ß ¹. öVe0«º×€·ì÷wÿ^²ŒŸc_k̇"Ý _™ÅÙaJÁm™LfÆF(*2•£#¹œyÎ_ê•|3²Åë¹M4¤˜Æ`WÆÃaö¦%ÇÈéÚ¡èý3MR?ú–þòÇ—Ÿþò¡Óq¬}a[(©ó·\×í Æ¡_ÿübè
-Ia°ü,'ÙágÇóEF†ÙMpª)î.—ˆRs/‘£–·ÆÌÞ­”¥v/cÄô6ÖYB%iA>²Ã*Áúš¤M*©2ìÄ <¥þ¼]h¯µY‚7剖#JMI~ƒµÓpov(ÑQ,Kƒ¬BÎ/ýðŽIZð0/\õe´iFó()òTø9D·¾žM4Pð’«g OE N€4–îÊã÷4œc)Š²²C†·{ÿ¸1—ÃÃâÐTÁ]`‘ÊýR;¾üR2›|íàí;÷9°:ÌšûÉÙqšòs]´`6<sœPÁE'?QF°Åý¢˜ƒ‘+¼ž!*è õ9ÖýªÿÇñæsc')‚“Õõ9ˆ#°Jµäê¿©'0?Š!ø—J˜0± w³G–¯(ÊOÑK°®!桛͊ZŠb c¶.N\MAo¶>%: ä[™ `K’ĶE‡ LŒ¥>‰U½‚)pÑЩCÉ„|¡ùpð²züN–;E»`µ1Öàå’Ò¨F–ÈGÈó(³6òò¡sD§Á$K«"èQ„‹‡\øçŠXBè~Dpý«ˆì5*³úXƒp*è"‹7ðåL󼽄l¶„õÅ?²4äDÜGŒÞ!̯å‡Bõû4Œ\"x­ Ò×a\JæØ="’œ>ãfˆ#æg¸ qŠ4 €šM|IˆX§(ÀÍGAºÐÖ ùýËÄ©‰úÉ•q?k~çŠv¬¡‹$‘À±DXq,ü·Nú`³´„F
-‰4þ¬·(ˆ<F°Žî%lÛeªk‡’ßý¨€3ã¯Ëù;¤N®:ð‚ (ì]'ƒ6©Å¨ÑK`+DÝÒd Ö˜ýboúÐZjî@­fHÖÁÍÿt‘¼ikHâ/"² (’ˆKEMÏ=Œ²¶­euÙz-]ú‡}êÐ&¨ /V¥VÞfð'äÿÆ™¡Ü®
-q¸ðŠ‰V/:~Þæð‚“úÊÓÆfº– 0Ø­ô:£+(a2ÀOY}
-+£dÙ†òÅ4Æ0¸µÎW5aZÖ¦K¸AðC(Ý&©× ´óbš¨°±¤²éìG…R ÀHeœ×­h³V)y¢L(Téþ1ðŽî¦G[¨'|’®ÞVXç!Û<çw´›/ãO’J¸/‹*:,é¬Ì> £TêÃw±€•ì%Œµ¨xðË¿÷¢íW¥÷ÜÍmðpûîwÙlFcªy[ >$ÐOU€ÅP\[Ú„€©™EíýXQÔ)‘Ê\ó:è^Dt„ˆH¨(¼Ô²ÆÀÁö®ÓLŽb¼ÛK ƒA°eýÂRwñPÃ*ò/yï:™…Õ<é™LBDÈySŸ;ÁjöÄEc å¯äÁoW¦«ŒÁ ò*ÙÂ"ÕèéRôí¡HíáNK»éé^Ö¸A ᙜZe£<î2ÆL’(ÈŒê%Ú{°œÓ2ÆÅ.¡f¬/#„2@K;|yûh><?ßáȼˆ¬g Áñ°:¡S–çCÉ…~4 H:~Î@4MÁ"ÿ#ƒ|·b@Æ„z¥Ó!èõ*.W[& •òÏÊüÈaÉ5Wl$9™P0†G.kêü¡w´~ć4N–_'–MTÒäÚû¡èý¡ˆž+¾Á|a‡§ÕÓëÖ@c$'°”˜g/!xàÞjÍÿ6ÐEx9YbíoäxÞš·yÄž° îšÄLG£Ö„“WE‰}Îg0ª»²|Š]³É ˆEm˜±mlL¾¾MΩ~—ÎÚGÌìÉ> 9ü¡aU@ò©d‘­Á;`>Ú0鎃®ôcá8Àe-H1fEÖfKøu­¡²ÄÃE•T‡ƒ7Øa’µd*YÁÆ¿c˜œÄ÷ °2ò*M©çT& , -8÷"M²_y&³sàPK*½áÌê6iF{Y6Èr†·P᢫¤ÉÄ`äL„¦eÖ"§‹,yÐQA¶mìûŠþ«°ïŸ‘á}*ÞÜ98Çf^ì € ±½ß5ÅŸ—d&‹-x›ð,Ð$:” §ÝÅ~Ãm*æ™HiW'{I.â“æ
- -à³CPЈýoÊËI² ¢'˜;ð4ì‹Ü#òT«ï¯òyD Éú‰46G³.z±øœ8vB#Û´|rA¼3 d!Àµ­òa+. bá “>1­‚76½5ENe1AX¾ŽHcƒêÛÄüàNªÕO®Š©-bëë~—¢ò ‘O´j6‹KîêÞ‡*£Í]ûPËwmÂÊÀlhù®qj9..'Ùí~ÕJ‡BÝXù|>zg#ž†àÑx3ÞÑw?ŠŒvÉ‹l7,€†9Œ<Ðx9»ÏR2Iò@ÐFØg;)×β“~åž‹(@àíÑVòÄáV3~Ð¥åxJ&ƒÉ‰7sxÅ<vïëWôe 3Å¥'…äJVam— åfb¨]øõ†ºSvEe*Çmaˆà¬‡9 $kРðc›l„kkj‘RY8(Êld• :8‚ÔÁtÆMEÆ[µŇ²ˆ7¾mOƒL²¥ŒœJ¾Ž}d~õCÓ¸ ˆË!'=ýðbC,¿)bè èË«“8U^38“Ð× l²
-×!¶ééåÀ^ÀŽ¬¸ªJ¾ l{ô
-
-öÁya‰¤ûüeË68€ø'0ÑÒ#‘п@xZ·Ëæ°ËþRF‡ y\v»drBV˜Ø9xÝ®"ç5Aü{. Jìׯè°eͺ9‹TÉ‚K„TÆ÷4GøÓwлße!ÇÉÜU½þÀ^’•W®×ýˆ²ˆ‡¤Åšrm…¬ÎûŠvLÖ“ÄÖ(¦|rí ½p5ƒ>£h±ªòšG@UÑ–,Ç¡aomÒ+;g£.©‹ Ú‘?g÷ÀidÓïŠ5Ų㸠þ´âG{’â ÍŽ1{À÷i´Cš,&y‹øÛ­yýáíbZù 5+óäñ=h¾F2lr<ä²T@Ì? ÉU®ÆHåÓ÷*ÑQ®»ÁÔ!0"Ÿ>¨}8GN…9À"–“ñY|Y¢h1Οv¤@ÉìÂS1ëâGxB•gžC[¢j—ÁÂÏYËy®ù–¶Þþû{Dz".C¾9:ø çâ½ßõ/ˆ' \·é rJ¸4ÊÜ‹K(o‡Í±•3%ÿùò,V’™²_Š²iFÂçipwŽ˜ò9ÜÏØ‚t‚›µrÀºìF@Xñp°Øª¦ä }¤"5M°$%¤OjÁ­,¨kåükÃýÛôL—ûÁËÌWÎ1æí¹Ù)E)5¡,cØàMxMc 0Ù ‡ÉÍÔ%GT…Q’¦®ˆŽtS3_@ý ‘í¤‘ýÂ
-TBÁ›aŠyâ"ò ˆÆ›w3K›e“k÷o‘3LØ >VÚí!©R`=D-=m ¨Fˆ‘ÁÞ¶€t›
-4¤çWˆ6?¶z®z€²}CM‰‹Ÿ#“‚ìµåcx0´¡¢‚â¯2cÎ+c#Id«D›°P ²*åè” ْ@Z¬ XTZ‹•|31L bPé¦ß|ŽO¡Åë~:‡/[“uÇLjƒÇXêÉHwô)Ó¼vÜbÄ¿pÈ@tÕ„e[¤¿‰Šèø=þ2íÌq—¼ Róæ´¯n‘낶‘_LµØRP.¸Z«B`X±ÜEy•,Ùwä&èS»Ðe! 24òCÞ'Ÿü KƒO¥êëÔ˜_5mü«å =œ´È³ùvë9¢­Ò¯¡èÒÎ÷TÄT°f 'öñzƒ3g’sݹÈ·ˆf,!Ê+¬4îQP“¿c&É7ùº Ý_…ba#8eÙKn®ù@.ºÈhCvqÑ;qD(—ú-*^ô+ÿÂBá¿Ël“B>we Ÿ|A¸h óÒ—UΛ¸§È#à·ƒ`y \Bö«øƒÂõxqW#åòVÅ:…bmHm’3œË²ð5ŸÅÓR0£‰eMí†Qñ”ƒƒê,‘5‡ô¥ø¹ÑRƒ´Ê‹™RúWq®i½ms!71¡JŽP>Y|©D?r…»… p™ÄÃÞÙ¤ß QHæƒ ßAh…æ(3€9ù£è-!¯#l>ˆ= ÂÎÔ ‚ˆ4ŽQ óƒ¥BøÐ}n¢L,Ø‚¡Gø]sÍÔnµâ¼ýoˆ v­wG7d£¡–ÅPÜ>¼‘D©ÿ¹’½ƒ¯¢úXfâ•cˆ³“qµëÛb2[|rч…ZPÓÑí£“£S vϲúlls}©S"Š€ú#-°ëÜÒ•ö>@ LnÑS©èW˜Ä”$¬brÿ
-OîÁÜá(œÀhTþžÞòª âM¿‚ÑOë2¹CŠRHG/,0¡Œ,˜Í·ÎГº©ì©µ0 "I© ùâÍÎ!YQ–,
-¢ž›º"‘2O¾ÌÖ(ÄT$ãGýâme]AãÒU~d( 'Ë›D‰ÉÆBò>†á®zžY]‡E)D«W1 žüå ¤”” ãæ•ñ9U| /²¾ £-£óu¡þýª£’\¦Žà“ø3¸
-£ÎØè;pßÉù.·xy“!)OÍ£ð˜(ëE¦(ΰ¦ß@[ÙS‰”¡Ÿ4É°;C½È5äy~iÐs…ç(k°ªò|½,©iC¤áâØ5â3ÄT
-}¦.·Oö@ÖÐâe“ÌÿÇA†`•hmoƒØÙJUÓyòØ#Ø«èÙÊšþfZ¥Ä„hížæO^L’auA¨½‚z4£&–ãž¡PŠî¹ÆšÚ›º,y´+‰•Y”n»4 „$P¯t¥UTt¶¼›…,¼0Ë
-9‘Œ43¯ôŸPvéS7¶/IÖ„ÀS’ªß„¡âOSí+±§i+!e Ö M†TY¹µ}Ñé´€LS´ñð§Åt¼Èޓ܆o©ï‚’–ñm$rÖJ=®»ƒ¾ÞÑ?>É°oFí´¢J£: -à8Až6G ÎRøTâ'7ï§Ã_BÓÔ@"ø?@U²Ðô¼î P•v
- úr†|NßM‹í¥áqT!ŒWµ§^ŸµˆÕdõ¹²¿†”Eúä fÆNqоSCÄÊ·¯âõ¢L†<ÀΖi¢B~JMm®väF+´0„X:°dÚÜÙD½ÈOPÀwÌ»³x¦{¿ö®·@Œ®ût×…p¼î ׄÐ3—•%ÍÏ ¿7ÚeòÝ6o½jX—¶Š ÄÑ1QðÔò•(ˆ4¸IV«“¢WòöŽ{€2b¼q&TãDa# ›*¬õ#ïb›à@íkA „ae‚ Ã‚@ ž¦Àƒáf¥äãõÂ9Ð3P„ ŸRØ+“\ψÝ.b4®¶Ñã@ˆD[_g›ÊQ P#ia°p‹â‚ üac×jLµÅ‰BA—d‡ÉSÆ\Âs”]$º¢ÕE
- ü{í®«÷8Rˆy‘]«¥9ÂL!oHÈ*æ;Zµ(TH&’œxRö-˜ÏP€‚®W¸lÃm}åWüy‚nó÷õÎîY.DRjBhç}<f%©§°ËóBÂ]ÙNÙu»XÂø§Ø1æA,mhüæšyC’¾<§¢}n`Âhñu•¦n8 “C')ÖAx©ßáÕ‚0µ&œ«éìÔ!!Ôc‡°7eùNØȾŠ¢Gl’'Nç } ûi›åÅk˜I®©2ðùò«ð!ä¦f\¡žÕ‚ÅÀpbÂ_}þQâñ£Sç¦ñ4$‚¤žëGü…wf5nÍ裀hç«%7V¥u®ºPf€—Ò¾]œæ k)ˆÑaEÎ&KŸ”Z$  ‘jpÎ
- û*ü@™.‰„/ÎáÇ)<ýî+~̓€ÑWED¾U'š†[ªŸáKÈ',MX|¦ý{·C¤È¼ª¼Ò'虂ëÝøõMÒ ûøÏ¿FJ©4'™õsîç3çètóÛA(~e Vé%ÀP,^ÃBøë CUâMüÞt!ŸÕ‡±ìýÈýšø=45µ’xGõVÎG¨™oõÁ0ºáç”ÖrRYÛ­ÕÏû5¾,B+òêÚAEˆˆY•â4i9û{™BëºLõú‚ )’Åø§;¸@(]g<DÞ ªž¾Pˆ†¹TI@Ç]Ð ÔƒûrDRêÇ¥–RÚ.7ámåvU!ã&9âUæ‚ésT'é2¬°®¹ÂfýÚs1;z ‚È4ùIûÛ3Ü{Óh)ÎÍ»-•
-É‚Õ¼Qµ (lréÛ>EéÐË6%zAoTÊ07ͦ½*­±'îcGÌåV$ìpLo8á‘BrǨ°le
-.›¨‰›Œ-¦7ÈflT §ÝýÅ1ÊÒ8#qä/Uב$g®€Š4ÂMgºsÇN:*ÉnsQÐÅþkº›vþoÓ©ŒõCz|nJE+¡78oê‘JÂò»]õ…†X›×:”`HŠ@I/Gþñâ-ì(ËÁ8ðT‡ÿT¢}c¿Çp¾FÞ%€„Ò÷«„zŽH°ÙÃ4à{qŽH…¤UùZXÁ×Ä9â Ò !8dŽ›=®»ƒ¾ÞyÓÿr„ÌŠÀ…@0£íÌ!"ŒðùÌòwRÊGëŠ.
-
-_ÇÉa?Íâ;ÄTâBÈ(Pó Æâ”ä/®g¾ØÅ´i±6NGðFŠ‡gÛQ;MÂùG÷Í4‰þD«„¸¥u¤Œp”ê’ÛöÝ ‚7Ù”è2s¤A‚•‡Áã)Ù&{[¨/g×ÒãsÒg& ±5õcü<¦›Âg­Ívb:[¹]Vࡳ~Ø>µ‹-ˆR,^ab0™º‚?äXÐSƒáz t j{
-k¾Â>óÕ³AN£§¬Š¤ f,åð˜Ñi…V*Lê<¦@4/1™›`eÁp™a»¾ SdQA& K›a$ŒEJãÆíƒR°Ñá:ã’ëGÄv’–ݹŠÌ<BóÕy)Õ ù\õÏ“u9æOXÈ|œeþí jÌg2Òŵ AdÖØo¯ŒDÖäcm\P6‚üòïαRnú!ìƒw“hÙ8ãsQà“Kà3q–Æ/"Œ!•G$ðHõ#Ø4ª;Áµhf"-´“ÉK‘b¾}2ž òÙê£md“ž7|C
-èyvD¢ù¾bc;RˆÁAE>ö¿Œ—I’7_ ?è4ìË™W>¥õÿ«<@sº*ËfL2“8ÌAaÉŒðX%P>ã\¹ü¬9ÚŒÁ
-Š:¢­RW·ë!ÉÀóTºÛ‡Ì¿ˆ¾„*ѨµÀÿÉ ­$ÈĦAÒÈ%ŠˆÜŽ3ËþÔ½ˆŽ×à 2{’'¯Îàô1ˆTIWfS«„¹í Åæi&Üq
-ᆲªlÛm’µ×"Ë(v !¦¢f™ÿ ‘oßÑÛg¦TCƒ;g­(©)ÞUµ~õ+aer*¡´ì]u€£Ø³Òfpmï- ö{ÎTI I´fÐø:ó‹TË÷§ˆ’ 5^I˜Í(l¹X†5™âa,ã½YÏzZ™.Bq†»×Ö “A_>nÐR«~UÀˆLPS—sî!w¢çÇj ÚEê§w†)÷ÉuHýQEç÷áFüö˜ÓWßö*
-\‘φÕ¼?t/§0xÞ ö³u0ê„)æ§xIngb¨ˆÑ­D²Åd{>ó'G"VÑ»{
-ÎÐJyÏ̧ˆA܈ôÙ–Võ-”N$‹ôSO’œñ¡„ ÅÄŒø‘½º4–[í.<æ£èõP¤™§Ãsa7|ˆú[hÿð`ÛéÃ$æµýÐÇY 6þ^ §ìBÓ™ç>:CNðá¡ãÜ°(/ð«4µ-SL?“qàþŒšk—«8€»
-È)êÙ0‘ ÆœM8w.ºöŠ¤$–RëSaö[aļ+?6%?H«„~Æü¥\µ®®¦éŠRÁ
- ïP” qÓ€&mݽ]E
-
-¥ =®‡Bk†°²­.¥ÇÆ€°×;!ŸˆBPFpJÖKñÝLq3=¬Ã]#ª¹r÷O›¹tŸw(¯‹/—ãÂ势©ß{òpD¸Ê¹=ˆÏ…ìÁº%ífwDã^ÄÕÓ°
-&š¹[ h!væ5·Iõ>äuÌ ”ôû§&sk8s“dG»mj2`è*³[ô²+œ|9 Ë;Š@hxÖúí_•Ð6´©(®•U ±Qn%BEð*²ŸUÁ7€þÅír ìT ÕÈÜÎ¥‘ hv\låBÞŠÂãÏòÌ:Á°ù¡„ó®Ž1›eê^H)NDõÛZG1ËÜÜNíRH“A㪠£?|º„vÜ96±—âZûSˆBåïy÷º»‹Hȃ¢µ¬S I Š¯·¿mdk°žÇfé&‹‘è>¯öÀˆÑµdЊx@È7mwÁ32qG ÅS®³¡d«ç%þUMô&!Îõpmyé=E˜%[üÚÜãJ¶˜·ÇÞÖ: Ž
-FtlWž.5ü];ÊÂS'§†À>O‚‘ŒNzŠÿ&µ6’´£‡¥§¡ë2UV¨jH<ñjÇW²Z •Éíc·qòö³Å¬šÝÒȯ“ãÉœ ·­ƒQ×…rrqÜ´•à]€6§d½!A‚OäMÙ]É †wÑé÷:,„µF)í’\~…`¨{=§"Ø.üž˜O KäŇEŸKz’’^'òpÒ}Çüfê y|()h¢‡È%Ë2jdä×z®­îº½Šp T*  aw;$NLZn¿g¤­ù)îk€C¨ì/÷0ö“sw•óÐ- £(ê¦Kû[–$@ãÊAEZaIF‡–M†|_ T<X¦ë_OD#û¥bfw8 ×sÆŠ‹â´?ÞP£ñ¨<DÙâÆ8Õ©I/e:ŒbÆ<Øjœfê•Ôæ”l©íÈ_KèÙ¨ëÈ£Õ´ažq (0óX½7TŠU$Ö©ãl—æãòYIš©/œÖÀ9Å>¸†’=òTµÛ:´‡¢°ç±KPå(Náþ¢[BKð@&äWßÜ‹
-¸‘7±1¿‚¼ú=öaÿ„¥qWWŸr{BÚ¸PõÆñÁ(Oš3ë»äÊñwir@Þ+º‘¼WtAù Ä¥RU£‹òReˆ'$qÒÊ^IRÒ¢‹ò˜„¦¥s’¾&æŠàÒRaôˆ¸`}@yŠÐ@¸·në ]L¾¢d÷H^²Ó 㺄Ç'yGÀ®$¯¶àúBŒ#nqº’¼[r%y )â…n¢OònÑ'É«Ûy5NX²z(OIåqéQ½á‰T”×LD¤«憃òT€P´Zk
-gÊëäfܽ ñÅGyy.Ȇ¸°Ó^(¯çL@ÔÕGù  ¨‰çæ'”§‘sBz15 ñaÉ_ò~èsQ>êyeEœâl÷†òÜU¥LìÐOw]PžŒR™Rbê.ÊßK”¿9(O¾Å–¢à£<=€àum›~sQž!BHxO^j¦–w‹®0ÿ­ ÿET¤“ÅpЛžiÿÏŠð' ¥ÿŸñ2IŽì†è ú:‚ó°î­o¡­tÿ­_‚d…U„¬ŠðÂQ ñ“@"äË¥8”ô…Q"øä hÌ l&~i ƒÜËc´"^™|ˆ"pVÕ‘ºl"°âF«Ài Æ”@<®•_Ó.B™[ä½iÝFd³’nÚ†OÙ0É]qšqB1hoÍÓ)úÇ-â¥p
-ø6ŠØðùiw‡e¶¹©ëö!ìÌ!¸§[&YŸÆ˜È/¨+ÚÂ|ÈùiV¿Îüaç(…p
-.K<%;õ5wÖ—ÛÊk/l8%,êZàõL®šdÍ‚Ï8¨FûÅ”ÔÓhYyVÄ¢¬W3a¦ŽχÉpðAbì•x3$)í€ÕÉ'moË)šÏ‹WŸ©×úMá—˜N>¢eÿ‚hFH„ŒÇ¦p-4‘kÀ
-<RŒíé ­ëÒÕféAMì8n/[s0^© 5fYLp×Ð/¨³qR(ÑF¥4’Ñô¼Yì'‹;dÞâÂD§]XJXfÙXš…U@q”#çFÅóÒñNN@‚ñï}ØÈM8jÊùïeQoÉKD´P¥È”à FwJ>ŒFãÃMy#»Ç ³áÂÜ YÞ%e h×÷e’ºÀŸQQ6þXnd7¬¨³×›m‡_³NVI K~çi†L’–…?¹:yÏ9¶f³Ù0ÐÀ«•¹Q>Â. =‡â\yûÈh'Æᤡì"f_Mæ]SÑ«âû—5ºÈïWýûcLRœ\¿lŒ%‘fÕlÅ—[”–ÿΊ½âRüŽ•{Ó¨¸7‡Ð+|%‡Þæû`§uïi1ßØ
-vØ™æA‘¸5vá°íM„H"åè´ƒ~“ƒÜر» îÒ<¢ÐAIÀçÐ&öof§DŸ"÷ÂÔ á½¹çàϱ¨aŸ„3¦†„ê°Š¨iÉeí,•ðôú8`/5y§Àh¤EÑ „Zƒ|˜Õ¬‰……C
-$ØýæÝ/·¦¼Wίˆ,…ݪ˹È<1—=-z_å‹Æ°
-ltmèÏ.
-þ´£–´»³Ä@ÀL©¢f¯ûSϘ@Åbƒa<w# 7£P$*¤Ñn‰¬íÔÖ³Xõ¼êÿQü`Ö`¹É?©áÉd9E8wË#¦ž…§ N­\ßã`„1‚^­µ@Lh˜»Õ$½!KÎVö}s6´²ãªÛÖGxAE‹´Ù:
-ª³pÉ÷=Ǩm“5"]QçžCó1¼,ƤE×”
-"Öä‹ÌS•˜aÓËE|.°À… ÂÉÚä½"m´[Ä•6 hþtŽéùJšé \Qu<û À£ Ã=¦!­tyâLNœù>AàßeæqÌÖCìß?^‘ÓžÎàCž¹ ç«5Îò±F¯0
-Þ‘oa£lføvX¸sF-‡‡0Lµ!¬t·sæÐ6 ÀcöIÒn¹ªßsÎʥظ1œ}JÂÑL‘åÐÜsð=†1\Aøbºˆ:,|Ø%™<€@Æêµì-|/7ù÷_#
-ŒVk#»‹ðgVˆM¾®ÚÇô.°FÓRÙ.!FJ²p”Dœ â–»EÕU²¢™½÷O &5`!·éD{Å¢°yÖA¦ÇläEëfÑ'žœ( oY“ã4[Æd’S²æI– ëLFu¹'~]æFŽó¨Won_öÖáÛ¤>^Ø™‡.ó½`_€)wKÕ9îË-Âöð,¤¾K‘ÞTR{ÃI¶Ÿb†Ñc½±«:BCrÜ>±%Üæ8—F±Ž=—ÃQ±d‘'´³­Q`c˜M™ž³õ†~›_ŠPØ©Ù#½Îa6|†±²^'÷`l'†©×…䤉E¾/\ë`ùSäٗ2Iˆ~Êgör’îlâ)Ù~CÃs&ùr,€—/TR`K¦™ûbýA
-éÀ/VÛa¯è¿CÿtkP{š éA̾%ÛLŒ)ò'ÛŠKðÀq¤²ñYlLÙKódž{åÆ¿Fj=6â»yÖšó¿t¤®æ\~å&JÇ÷
-%K
-¤[è3i’!ã.r†ŽiƒzàW~›ãÕ"'NÞŸsâäï[º–9³8I`뛞5œÁ 8ºiËìI&Áð”¤PC¡àF!aÑ<†E™!”U‘“" <ÍÚŽù_ÆË$·Ž#¢'Ðt¢æaÍ­Žòuÿ­_dfæïjˆ6`Ùt°ª+‡`üi+ù|Ô¼«ÅÂÜ"ᵤÈÌuÖ@8“ªulÍ®ÁuIº…c)6@E¾~éy¹Ž¾ÙO]$Oˆbƒæ ’Xªâbvœs˜)‚)¬òÇpò§)ÊŠÁ¹!ÍLlãJ”èÄä“-¸âj¶O*=ã{[˜ºNY!äÿ\Œ½› $Q]’ÓÞÛ?¦T%Ò¬]‰9„ñ7\Y‘Ðo’ÛC(˜Þ4/3×Ù¬RV¼$© |Þ*AZ²„Ï‘å9B$kD1V‡¶ÄUo lߣl9Vñsd¦‰CK¾-vC+Š8†`Õ¸•ÉZ5OEQU+\O‰›à óÎêFH¤›4ž¤fÊËle
-ˆ“ƒB_¶2-Q¬ÌÌôA‡Hi\ùõn¹nÉ_DW1×¼25ùÌy¥
-: ”%÷wü0X­K‚!cÁŸ‡¤ó²Kkh$ëÐþÒ ¥¡§c—F ej̦²Âtüb÷Œ=d†»³r‘GlQekò) ºyÏYMÏäë E‹‡sJWDb–K½4k3HòV݈ ¢ÈôVڧģdŸ¼Ä²ÅŒÂ60!“žg~ØtwØ7ç/­Ñáõ‚íòó-_Ý@M!‡þmwz@:U·ìËÇÈYKf4jzRêü÷ÆE*J9M "ú¤
-‚ĸÎE!ø
-Á4J›B÷"jÂuÔ¡‰­ÁL’|3Ù[(61“3[öh)‰»Ö‡Î;ù¾Ö.Å ± ‚q1¹‚0@­ª”É!¼¡A˜Cµ]HÌQæ¨|$Pœ
-H„¨×Ö!`ýt‡xȧÒ[(²Ø1‰oH’Š)> >²˜õ2ä}Ô‡yaÛ!´“”±Ä²£8:ã°ÿò|dEç’…KU(È%N¡±¬e“¿®Q?àÌÎk†
-À?ƒ/ÎZY¡£ÛÇÔÓÌìÂÂuv鸧Í.€wISŽ©‡é£F[ù÷Å›lœ
-Žƒ½ùª¯JY‹|nXD¼¡L8ü^}wEÃIÞcFBÁÃÿ¼·ò âWmX¡+ŸñÇs¤†Ü‹¡[d“€Ð2,ݦ{:öB®W‰”a lÈž1žJ-”®iõŽ›p2˜\AûÚÄìåÈ7£ú)?[•a§<-ÉoèšI˜48O ‰xåïm”cVbVᱨûÏ1Ø©(šìÀÜ/û¨i‘rÏJ&)k [ôÎë
-´høº&œx±\Zš,‘!5+btWê8÷ P½r5¼œO“¤™ÇEÐ×€ŒWf2—Ì&Qeø!Dõ
-ŽÃÝQqØÈ È‰º—tÑOTiå[pÍð3›³ ¶w=Ÿ3ÜÄ¢â6[”ŽC
-°"Å>fˆ;«â.!J {0 
-„ÓP›ƒÑ‘ßl±¦°>§+©t;‡Èè96¿^ƒ³eñ¹ºï3¤‰<Õ^<
-ýýüu¦¯dRkOqÀÜÖïtÙ¿AïŒp\­wÐcÑ:ΑxÒËrÔL6hÎvr9`–f‰½ÁtPG--7!ß©…ƒØ"]kãW BƒS’±Ê>„‰aÙðhAÒÝaDíQRbqPf‡0 Å+v6ÿA—ÿv“CcCT Ò•9²¤mÕįªJ_ ül»<œS¾0À#\ûák²ñ÷Æ£]ñêð*…æNCÕª“ØÂec[ö¹ÄwÄ·FùMw¾M¡œÔì÷ùcš)PAÐö:=
-ûˆ $Z`…㪷â
-ºA/Êÿîÿ~÷e †ž4u
-{c€Cˆ,PhÖkíÙvëÒB•ôe|ÿì‚Ü—&ÐïÆ[‰-æ4K;3¢Cæ†ð}Á?+¤¡ïqB'ñªÂµÓÍ¿Ò8~©†øuõŒ~²îÛ7Š<‹UÆD˜
-éV=® ò…/ìB)èü9a`ÑÅiQsidHù:œt³Š)zTezó«î þóú‰ršÀ–¦¹d¶¥n–ùIÅP#þ’ÀA¼½P†ˆ »É2[ô[b|࣑ôQŽè¥$Û<šJÄ ö!ÕŒ
-<9ñY|g;íÂøJ€µ‚`Nè
-|ß 1~dÁt±ôévÖJþ[.—ÅZ‡Hrª™ðGgõ¯G ÞÓ”7§‰ ÊÌ LÛnX9ÅÉESí–`S|Û°\‰²¬®`5 ÜÂc®—q—6sáµäÁ0¿wÌëƒkÕ¶À"+\~OÁ¢_£­køÑðÍ$ñK1èQl¯Ö®à”ÖUb'1·n7‹ÀP/Ü|á
-¦¡Áq‘FH,¶J@(êÒ¢™â
-R 5L8kXcn˜Øå2®7U˜£r,ž#@RMV
-‰’»æ>¡á‘Hi•¨¨Z|Úq²$°E“ùÑÐ8Ù€8XüÁô×pûÂ¥•È…À„›tˆšwí$t‰¦Ì0”ÍÏ!åÌÏQ˜ ÿA|˜›Á-b©þ¢¤gQg1,cHžÌMvu9(ú<ED9ô˜g778° =˘Q–­>$@¸‚¬ÚqX|pF#*)ó&ƒY Ñdo†6‹¡AÓÙ_z·9§Rå
-Wó7X½y|]Bøi§kà%K)ÙbO¿ oÅnOð_g¸ ‘Éüf²`Vßåió‚ÂaŽ©(3±•Hu!|Räi)‚’h+ä™–ç/0¹a*òÉbÞ⎨ü2œÕ³‚‰çI” ÚxVš,š%ò²B.K¹_8µ¦53x©'><œù&<Ǹãê”ñ™§ ×-%Z.Òc›…„Á…õgë¹eL•N‡EC$E¼ ‹ö‹ÐS ¼q9 ‹0> žg[„‘€Š^Γ à”Lå6URHDEB~Y®a$}9iš¬(…cîuù¬à;™MmN?ƒhºœî­îç(ËŠ½R.gV0$ô«yµ”|,eK¶¥¼8c§À2X£ë5U˜Äø4¯v:?ÆŠÍ Åt
-¢SÊ¡2iœŠ³*$ïAQ
-±oí÷Æßb‚FwAɺ¯ðœç̯yb'øª'Ýy"ùÑãh!¾Íêã[£ýJ¶_ü1B8Äܽ§}E5å‰$ÂXbmUКΰv3d*Ý/ Úyľwb}°èj¼7ËDè‰_Š‹`¬©2¯f1ˆlʪ}‡JŒý©¸B“ÀK«±9<0K„øN;”ÿwYÛ„)*Oña[ƒ©£aW4T¬’…ªŠ˜0f"!Þí¥m…Ù1ùvJ urjî"õ3¥Êx‘
-d±ÛGEÎü3¬iÈíÜ« aöQ`vˆŠáËÈŠL*"e;ßÜpäVÜ!ðçø_>„(à+AÂöê~Ä1å¬"lR¬ó$ÁœèrÏQ>s‰011Çe
-°Qx1d$Ұ麃ц­Nâ
-œ=™FäÍ=3Þ©C¨›r‰&£­ BÁôä f±…›\½ä¾sZ‚,å.Ù/úïµüǼnáǦشÕdÊÒ&!e€œmoT¤iãE詺S&RR2u9[ƒô1ÀSBÿÐt¾l7ß;`‹ŸÂ`µzÅydQÐÞx¦ÛaV†PèAևЯå¨%Âå%ôs'™§U­DiÇØ™âV¢«ä¹`6½ÔÔ_œÃãÄ7E³ñ–KØ µñGe‰.;­T›wØJëŒ}c±kÔá¨âÛ ü¦G¤ fvÛ¼è1­“@§E½|UCc²4uûM·ÖPÄúì† ‡\Ok°00ÒîXíì%Pá*2ï)ŸA¥¦
-H‰”—A’[7 DO0wÐò‹
-V'EiŒ‰@Ñ-ÈO_gÀ¸Ì¹º/N>zŽÛ1ýr‚]¥¨é%pSØ¢~;°²ö1‹7ãK0œ“a´Ÿ@“ƒLA/ô-ê±oƒ ×t¬±¯YÔB>^ E%…¦‹ðÙ}L¹¼R=êÑ |³laYƒçLú‹4[ÐW‘õ©‡/ÝõˆNF½(ßP¨¶;0¤ð+†WR-¦D‰Õµ0ËkÚ„%ô|Éx)9UâkñYeG$0-H2I;ÆFÒ C°ÅÌÄ©àô[] K•A„µ?v¢ãÝS(‰{Ÿ\¦jöúRÖd§gÔn'ºë…‚ ZÖMÛrêm3£¹Ðè>ê¿[+›Ðc\x(²HwË|XúÁ2=?‰\Ï ¨@”νÆ-öÆ2À2 ,pp»6~B7Šb1a—¤²HyXÞy˜eNíÈá‘+Ø‘Cö l}7ãàøà&3™¹¼!4)~™1Ì&D«¡5ÔHu,"fúübÇ8ýšŸN_Ý·)°»´n÷ªÎüÇöàëÀvÌNGE ´€I?¥ø„ø¥Rë¤W§Ó8QR;_ÆÒ¿`U™Ñãô¨ÜÇÚˆ$ß}ÔSr
-Y¥",o‚Éò. t:¥rÇxs™'þuâñSrNÍð”âß6ÕÝ{ùàåä/ÿYÔa3td°ŒÇÜzæWЋ›=œö„ùþàFK3úU:?ynèSH~ ?Ð>/Þ°5ÝF¦mýNó!ìP…ýë–Bk¦Š=s_©7gŒS›Énä s×Òrº ÷yTnZØo©Õì'ßÁ±tfš€Áíq=<D.6 a•„‡Ñdy5d×0…,y9~| ‡Z°SQx6HEícС`œÆgÂæó.81h¼§kO ·†žPp6cÕ_Qƒ©–‘#ÌZ—ü+1³Œd
-a@; ÀYÚ /…©¬çA: Ê„ÊœÖôMú+δÏ5dAZŽ¤½ÉUJÊünÌ­û' \De2ëXh1uKÝ ÿÉ“ÞÖp{òlf6ÁC·wÅ8XiZúgÆ{LÐé¸@XõìZ…ZË,ì 3ÓàZ
-V ÃÃz¬1](VwA0)8T2«ÿ…Å옳>Ó]§ƒléB¶/†Ì4Íf|C;,Þa‹Im•E·›ËqJPðCrc…8Ʊ‹ÑA䉈ò†VŒqÎ ·S%€”>¸\G•|v³ÍŽ‰‘ëk?têJ2„o¸ ÌÕÊ ýämjyß DÈ!´Èi#˜ÉaeÈþ¡ã¸$ˆ€Rð«VOABh˜‚ÆãY˜GæÛ˜k
-eEà&,_Tj/ ´$MÞ—aA£ KÕ´®;ƒÌO¾Ç%C3Â=J‰\.vrkäi—Ð#’öôl‚·ýãë:Ð]’iÆjÆÿ
-ØT` t&óVJ`íLàuh[›§Å Ñ:F—;‚ЛËøàÍl‰¹êå¼é8°ê8¨¶Âi¾•8ÂAo"R@Z;x§Ü{:Èq£#¸ x(ï’¢9Vþsa‚›Ò'cž£(ÈÒo,é Ñ°ö«8¥®œ?'9ðqø-?hÑ¢VFÍç {}b'?1?H¶Üv”éy °Åùc –ÄQoJ’<Èl§DÙK7Ñ*]‰K˜©TÏI›•‰“0ŒŸÔ
-°m«ëño¸qœ
-î‚Wõ³eas(á½&ýíQ‡£ŠOƒ:'ÝŠÆøZ©?âË S6›å‰E b
-?i¦&£­m=|†‹ôÄKá‹^æ¶~Ñ£¢5~kN„…·‰© z[tøJ9´BV x¢°|¢²ze2:ƒ¢_abhü»¶/ð¢ûqoEß¹Ó/®žüŸR—”E+e+‚3!´íí¾ý½‡
-6)ó —Ïmžî«Uv8ZòW4:,±—6o©ÍÙsì—k¬…O{á³,ü0ø@Þù|n*K&"Zî¿ñ`¼Îý–xSÒõR¬ìù{
-<Ûd¿$ÓÀú( WžG¡§ZºÎ@â•O¸I–ajòÄžMe I!­â”Ûö6ß*Š˜“ã³Ç^¯õ\„“†EP²rH‘að4—^0Ô+ŠRb-^DÒòƦÝë./ˆP¤Ó€[$¸#He/‚!ö!þN‘üi 5ûÃdì™k°C
-Ú1,Êj\V¸ƒ‰Š)½ýÞëÌ1øÊ
-¦F¹¼è¯òÚâßyßøªŒºX]Dúlü9£‡öBåœôºD‚¸­æŽ¸Ò~Ç—ì~°/AN ã¥ý!Š’烎 6vöÊå±fìmTÖÁ"4¿”¢ÆPçjûû!ÌÁ
-ghÃv ÄhÝ š¿V2`—·<Gá^¼•þÌOY–‚„$&þ¾<<Vz
-ß`<k)~|~йœ¨ë‹vÚGZ‚~þ/*
-fŠ‡ ‚O˜¶oqÜáãxÖÇC‘D–Í÷I@Ò“½Oè`‰,%M®ghkD®ë÷Þ ¡Ñ?j†…ßauø3Ws;$ ‰®…-ÜÈæSß9Î,UÜ
-’ïÞ‹‚ö 8.dX–òí¢
-ç6HÁ¢ŽªœÀvMH„¨Õ¡‰vÅäQ‰nyìÓ
-òóŠZ³ëéXç‚<
-ãû;ø 9é×N1˜X
-öÂÝ%Ø"Ø}öË,1äu„ö­h5‚¢`êe&‡qñaãAœƒ¢»\~R3¯tCA/»^/¥«¡Ò‰ æ¨h*ô ,ˆè]Á‡‡¶£l¿@m¤™5,^‚[CÕ€Jr+Xà¼
-W¬Û.vÑ-¿ÃÖ¡˜ïRê1™­ˆD%|Û kdN Ît%-Ç´]È»R¨:(ÑQˆ¨A?WláwÇ,¡©ò/=¼ Ô®Q´Êº- ^UŸÄš‚Ÿv‡hœèS8¢GŸ&uNºÁàY™½¯?âËð“ÈcÍèQ”`„qŸ¥1ÃuŽzkExæEÊD)³7g)Áá>ñë”àéqB¬SÊ>ª"Ùæ J|+PñLÐß&–è;Ö¤ÃeàMÂËÜö/zT´Ço͉ÀðÖâ/Aõó`¯"¸‚räï ë| ˜ðÅ¿â} „{ÑÝ'ÜO Hã«9gdrUMŠ‚<ûÜ ñ€¡ß‚êâ& aB]¦ýz(º½.½d®à2 3"ïiºUcžð‰w»ø{ÑÇw^·›ÐÒ ³VD³º#ïZƒRq 5U?B*ømlάA·j(k«C™@v6¾zcÇ8¹Ã™Ö_ýë;ùÕÕ>Í\
-ž“õY¨…‘,%wÈÍÛš"BRˆ;Ó‚ôùB^O ƒ ÑÎ53þg§å¼3 ŽB]°÷pÈzø‡ñrG®äØè
-¸Ú2nÔÿc*æ™rµ‚ y”©ýë$
-=ñxï„ 'Y]$2˜
-·#<GÞJìƒ
-œ×ÂËðJòäÔÏÒµ‰ÝÅ:OJZ×ê
-‹Ãu2&Þ{IËs…#ħFýx @‘®|+GWû\£ ¯èJ#ùkHo[I¬æ !#Uî:çÙDÓ‹ G
-@¹¸
-L×Ø.vS­î[¨ (çö=S÷F¦D-¶öE/?AÎ\B¢•™mâM Ï)JÒ¨Øámùm6Q=ËZP
-ÜEZgpËüÕÌk_ìd-jÆy0 cÛUÒb,gŸ‚åk±¬,oAYÈ8%ü8¤Vì½}éA*È£ ]±VÞAJ€K:F´nÍŒ@zjIJräàÊ„Äa^¿ú<—ÖÀ=6®íZÃ7&F}·WXªW9Ë잘Sa5š&HÄ«•Å*j:"a 46¾J”DÓˆ<;>DA²cýŒY6Ê3¢ðVT¦ÈOgâiiRã`4ÕlñBCçáqtùx'¥ßM;Ä«8+¿B»é’AîþóñŠkš¹Ö  âUL#¡åÌä@FxÙfU$Y§BeF
-DÏÆ<—¼ñ@ÔQ<—ÿÐ`Õ°ÐO¶28\L¥pÌÿЇAFaÖ7¾îâ´3Ácäæm~qÌÚ&§Ìá%<˜ÒÊ{È­”08Ã×æßùoþ‰¥ùý ‰L$þZ˜‹r†gb¹”ŒŠ4cêÓlâ;¥’ AwLñMˇy †_ÅÿªAª5ÁÜÝO‘Z2Øèü6õÔi\†vR:ÂÆhʹÜ\Œ(uj_«Ûæç=Õa— >»ÅDŸÂÅ°*A¯%<‡g²9³ãʌڳn‘P’#àÊÍ[s=å3ƒèH33icžÍ$
-?Éð!kL•ˆéaB _vÚ±p'lwëÛ Œ€‚àŒÆt@ »"{ñṡŒ%>bÄucAAYt¡ñDÙ!±Íb»Ÿ|
-ah’%ÆwZ¼¸ŸƒThê”ÝKwÈ¢(ˆ/ÎF•a ÄŽªrƒ¤¢°IíKÛ×·ƒPQ•ÕÀH%
-nû¾µ,ƒTÒ~Ç6q'€œOexƒ
-"Mk†ç­¯lØ™Tü܆¡k°gN»â†§ä_ˆ,¦4\] þyHƼ–Ö^9CFÈï
-vLÓj qˆ¾œõuþÇ ui»Ò€
-fSA¶ &Þhq-Çr$Õð›—AOøñÊ”j®çHÌEcJ „õ¼ŽäÀ¦
-o ‘Ìjˆ¢YÙÐö±[bPÝEY¸ªs³·‡„8B¹Ì1¦ˆ«Z] —j- TÄ£)‘-R\‡^â3\zlݧI(ó‘ªû-Þ§w²mß^dnÜûå;ö)ìNžâðNê´ùC~ÿå”\c¦¦ƒ$PEœÃN}Ûqñ:]ä€ñÜŒÌfË(<ª\SîÍÝ–“câÊc)v”€NËl$øý¢&
-OžvGZàÇ6[
-чŽÕ|<'™°^¼‰0+ ¼E6¥M͵v’àG¢?#k|i™"¯.Ì8PZ>R®4ö)“èá •“z%ÕQ6“Š”®ìCñÌç"m*[é¿Ú»i³I¡•½£Pöý9\‹bü–«£tá9Ì ¦µ$#,”›%1“"‹A¸‘/Iu=2F½ç^Y—¶}J!HÅBÊ^4®T'»ý—ñrÉ‘+Ç¡è
-z^¡/%=­]xZµÿiŸKò%àÒ@£Ð•ÅžÈËûÁº#FœC„Åâ5F
-ûœÜ­*x2WSJL¾Ï>sT¤j„RŸç{Á˜Î6ÏX·.ÿeQ•&XÕäÝÉ_‹ì|Dw+¸UØ@ÜfÂ]ùŠSŠºt à&ïæñ%„Ä™ãN`¼®žÉÐ|HQô©ÓÍŽ«'Á<Æð Zèe{ Ò½«àSƒ/% ÛÇ¢5ΑAnGe ²áµ‚”:0Øßã+]B™ùàÙ˜ÈÇf£‰?'k1-­9QíA=~Í„”YœB6§ÉÄÃ*½ér
-~ÿ –ÿù2xt«‚"¯‰¯záßÿ>mÙ| ?;üCìÒ1çÙéÁzR VÏð’.DQ
-Ñ&ý”S; ¹_öiÄŠ±Ù˜Ð/,³YZBpñsÉÑáí´ùiž±‹]Ö@nPº i ¾ÃpÚ‡¡BK]© £¸û'x à ’#sÞ•¸PnŸ<ß„¤ìN‡ZŒ¾…¢Ž>}:+¢Ï`³Ôß(á{ 2(å^ÂêWe2Z½£„›– f FÄ­*'€¡È§
-uãÂäK-Þ_¡.™_!‹óßµèòU„ºøùiýôé·¢£INvüDÍí¶ïk°³áJiùÊÜŠp0ŒHfß49J¶èU*8´ˆ1ŒÖð
-á.,yÍa¨£ŒªsauÁ§¯L‚@Š“`b X J0> ç$-‹…z/Œ½VIca™‹Æu¢Ä{ŒdÓ¬™WU è‚Ž¬•¼
-R¦…T™Ì
-é‘Æq1³ÎÇì¥~¦—À%X.›Ï×üá tÕÆôtVG^zaÀˆ6Ü$—á%ÐhÜ×üÒ©#²pDî×SRåªçª·¢? „2<¥5²/æÞ69SåýCtë°,c«âQeÕ Îþ ÙÑ.‹ÓRH€Fw£b;æ
-*CºQg y=GÀ9
-
-‘ÖŸ$E”n·¶ðý|,ä¿Ÿ Qé8\ÖIŒBrØøëv³Ó*!tÒ Éûɇƒ¥<g©JŒ½<bš‘W½áj@,\;Î×ht <˜þŸ‹èÑŒW!ÛL>î3™ÁÁòÂضó*ñXe
-¢àgÀ;ŠÜE4}#™½Â" k¤±Üb[å¬O%x„!©œL'¯z-Â84°HEÃÏÙX†±g"ÐðœèàqŽ-ŸÒQicŠ¹ý<ôANµcsó*O”©¯ŠÓ™²®È^ÌŠA¢ÿÏx™$Éyë@øºƒN à<¬õ–u oK÷ß¾/A°íîB…ÚŽe5ÄŸ945BßÀ^Af °8„ü¥Äaû±R– ¢sÄÙ O#Çãþ£Ÿ$*VöìL¥Éͦ¬àˆÙUœx£9üY&•
--òë4«8Xf›èáœC
-žKÀ¿áXˆO†x8tõŽàŠxQì‘ôg Í<HŠ™¼¹{Æ\°
-ÏΠڥ
-<«F¤ñÇŠ@ N'úZ!%dŒ‚ºÅçÅ·–ÁÅu´íTäŠ0Wý2œ,våäàt›,.~ÐÑ~žóiÛ
-nÝÑdÉqCgØÌ}J`Ʀ–×SÁ>°6<Ác7 GÜn1l(0š²KAÑãMnxeßÖmVá'ŽñË ÓŒ'×>EIÂeÂ"4ÚU@$Þ2%[f¶œKgGn¯| R™ù$%­7·a²ÖzoráÒ’õb„YðQÒ$²ÂnÃcäÿš¹ŒcÑ Zòõ¯¦æ £êêµb]úf¶ŠØ…×]rqŽU°?P뮌»9~´“Ò ¶ÄÑÁ
-Çå`¥Šù>¦FZ·V§yùˆ,ÞزK*Ñ% UúîË…ìÁ½Iª|Jpýäj¸/ýÌ!#¯cØ@_‹ØÊÒ‚›5øø#ìò7‹2ÍÑè³Cãµ·ÔªoX¤¶å‘Š<Ä~ ÉÒ
-—;^—éBÉØø¹ì¾›ZÞòß7Þa¶HŠþÛ@^Ó…›(ôµä
-ü+•ŠugÞ¿ Ãá»´@ºaܼ`8GÔ7WdadT¡B-“Œè#üÜ—¢çwîôa'²Es±a<É¥m†(:ÿ²ÑÞÅ%‰ÄvPR凅”^\Se·Ô a|T’Y9™~”ËÓ|êÔi˜¥H=€\ðeå*¦NàóäO ”;bÝ×–Ëæh0|iY ·Ù[ÕsP¢O5L—Bïüÿ~9‡h
-Gyšù²ö6χ2XÏ1”ÁŠj>O–.NR/Jp(Í
-³»¨Ûàak|ïz†ECPòàyZ8ŒCxɘWt`ÐŽÔeó„ÀÉVM¡b%ÿ.” ÀÊÀj÷7çl.WµÃë¸ݯ)W²ûtÈ hÆ ,ÇÞ1?’ù£
-~ÿˆŠ‚þ,åÆ}`Àõí¢W˜ä
-Å!ÃQŠPd‚UWˆŒòÁ¹ä‘A|Ú¬á.Š­ÓÃâB¤ÜŽUH®8î
-õ4¯Ñ 
-j¡d)ˆIÞàÛáäH Ýõ{ö®VŸY¢úSÂC*ˆ¿°’V¡:…‡r“W˜^4R¤3¢¢Ç£sq4³…Ë«~»è6ßÓ3Íã5ÍÀ¸ê]Zä*êø
-wÂK÷Ïhø«&ÄQ"G •ds4×ùi>7GPQfôîæ„ß‘Ó톥M½I@ä*á‡\6¦B—„D®¢Š[™ø ¾8¼JJY[³”Ò
-üTÐÈ+1m…H=ÞB'Çð»Äsû~ÑÉ£¢’«Jo°$âm•ÌÚéa]ÚuöºèÙ‘%Òã¢YR„äÖ<#K'qžqÙßHnM‘Ð:lò
-7$Š‚û!òæfûuÆ]CÆrHXˆ
-æHÈ?¾3=²üó?”®¡bbÎ=Žœ÷Å‹L…)²A{a1hÝÆDc›*a>2½M™­¤£•øªÖÝV‚id™Ó•ºe°;4ÔùŸ-ÅþzãêðÏ`s°ݾ‡š?¿bÕ™šÅU„*œ_rº¦É-Vsáøä¿Òñ“ø;‰ËÞüÐÙ?¥4ÃYéš•­¤óš ·ËÛ5‰ævÓvzäYtk¤+šl˜Ó'榆 ©-Ó³8$mv5'¯—ÝÀâ7á läQ®Ï£ßã3W`Z á,‹B1ÂÇd概JŒYû<æ½)ÀR.OÊÇé‰{gu®pÀ¹+Ï÷¦Õèùà+ý£ÕñÉ:ž¦`Á¼ã{•W­Ù:>*ÂmÑh¸o ½|="Œ~±WתŠòcÇs’/lë2~r—´ýü@ÀÌB"Í·.Of¨ÑÉî-¾ yqž£L%(öØv Ý'¿&_ÁZ›×W.–_˜¼6q2vCp
-ÊØ
-†9»e×! MÞòˆ49‹ÙW¾ šž*¿Zž!E€ ¹v壛˜-H¹«€ôŽ™ôY’”ßÊ"ßh&‰ÏéúV =t£¦[ÙG$À™ã‘\Ë[“ð€5uŸ´s–,>_²GOñ ÿó¤Ì;ñGà~‡Æ€Ø³È¬u7 èP
-,¡Ïþb]B \Á`K#u‘‘#°
-RMFaðYîê¨%)ߺ¿Æp³:Æ\Ñg6’8þŠ*nõëGPs{qÍ:‡ª “¡Úgë[E¬&ôM8_1þ k˜ò]–ÛåÈe˜. núå 1—¬fÀcµQÇè\Þñ<ä©æòùP ø“yzе̊Þ»P^ÞŸ—÷ÕjƒŽxZ6Å"XmJ…\LI㎆`žøîf¾†&ƒçÌÞ‰6ïO°‰Ý¢‹™PÒÈ0heæft¹QÅßOôëGTs{ëxº !9z´>Flð¡ZCàm!˜&'h;¦+ìaݨHÍ%OG+”á]¾`åÏa¤ï¶þÏ=ÙÖç|‰~«þ,Bƒß§ˆÐ”DýueWù†î"ƒy×\ˆFÒL’­Î‚¸͆ÏLôû©’Æ/!¦D–CÅì
-¥bçš›µ9.‚Í„Ÿá®1Ö½t%ûʌБ=K¦Êé…VN
-*ÓMIiŒ~å”èÕ¯QÑ“ØO“̓‹5•7±)(j¤Ñ*™¥«ýE°<ÇÌ0@C•Hîy癎¨byê†hjVŸ.bÿŽMŸæ¡¡ Ÿ¦ˆy õ§²\óœ£6s1ç-&)oÏ|5ÿ=ŸP ¶T·“Ø3çP$AŸRŽ~áÈã;\2-·Gñc7% ^ùËwx”˜GÙªŒÐÌ8¹A_Š÷‘Ž¦‡!æÁO†ˆeÊFI®rú|w刬,Ñ$jwY•öôÝ‘i„ɳH¯>hçÖeÈ…wýó,ºàÇwæT㜕/f{¡¥ð¿‚Rwš`ãÝÁ7ÜPD£ÒÚ€!rP¤’}ÝTsÉÇòVb-q*°-P “ÍÜ,‚™½ O`Ôí£®ùÌ7ÿ’SšžDKd4Tv¬+É‘s 4ݺ^«òãB77…4¦þ!v‘Hô"Ï"--ö*PQ®vÙl™±}†ê`ï­èÊ
-&…”eSñ¢5iMØÒÑ þx§/ÆM¬Äÿ² «`–²¢Êé&Ä$q D†É²Ë¡÷–@1ó´«»SÑPôV‡lÏwP 1Òà(Á×–w…„°‚À²H‚ÆÝ}¡[ ®ª’­è_iJK òR?‡*š €›Q Õr~¾wÛjú·úBäž•q1zizÛpH­écöˆÄh×ÕÞôÞ?zø힬Ýû·%²»²é—ûmEœ ºîÌoßQÆUI —åŸt£
-Ý|`‹—a‘¶´¼U•!ÐßìüÜÌPJ•òÙnø3z<ËqEá&Šš†èÿ6})úoX„†p=Úm´)*Âè¡!)H§OÑËG"pQi!N\Jÿy4²å P¶ƒF†Ò³")ä<Q¯¤”R¶ûMÍÚYãVŽEpW\4ô1œ³Ð¥ÂÁ@üqšHÖ¸wä&(9K%.žo Lø^‚¶XuÝ
-H‰cØTw<ùÅð¸Vµ©ò£J)°
-QË”Y‘súf6Žsé`Éóó[¸(ûT³yQ6–Ó[ Jô)Þ‰u˜˜ a3<'½˜°š_VJ5¼M²À5 DXz~ñªô’±(Ú®2JÔ*Ð\¹á#ìð³ä6©ó¥GÑBªf.'Û®çex?¨k2wÿ|Tr‰0Ö~½éÞ›ô‚_)“›½7›”‡‘A°óÁ–¥ˆÚW*>©Nbco`Ë Â1¢ŠDåé_dX*0çø2Oø=ßôñ£5ѾÜüíJ½Íz‰ÔE$û ›¬;B†€ پȫϢG>„ÚoïôjÇb¸08XLÜ@õ­ÏÎ?ÈÌß°¨šG ö@ÃR0Jø%t‘©ÔKqÇÆδUÞ‘’!&ÅS‘-½Â¤Ê„KÍåSƒ¯$®ž{=DŽ„@›2:è´J
-ÂE£æGM!‘*sžc2ÊÁå
-æãÓ=ý[¢/MÜ]ã¥ðÖóçd’B–­ÀマeÉÃÒ6¡¸*†næqúß­p³ºY–  ÙrºþsË¢ÕFîä±WJ$Ñ=–jäi×ÁÂ$Ù•¡œì†‘@”Åçåø´&5[njn%Þc¹VbʤG;<ç9TžÃT EÇhšˆ)dº*9=_ºƒÍ£{›p@&ü!«Ó?Ä–—³®í‹36~#¥×—¾ñû•kÇ~)pá0n\8Nb_d§³!>*¦ÒÉKÆ™ŽN2cy¶3Jè) •Ý<M¼[ì Ò‚võMK8Ï™0m'Ø"`
-üð"FŠ+åû<ÝòNK4ó[%€–FIJæQTäÝM°¿i7#yÊJ¤²},>¥x’‹·§½Ð öIÝðÔC— ·ÝÛ š#ÎÁ w᤾øÛ'O#¤£È
-U¶£dåàH,' S¸ M3ƒŸ[/\<BCâóBÓ³W5«çtÄŽ¿Âô²šÕ½ÿÈVZr'úw}P
-‚Ù³œ¤—;Œ•ø¡—dÆÌ ‡o¿¢– #Õ`
-ò€Å ˆæ›Ï‡M”ƒTÂN=ŠDû óÍÜ1FÆ<‰a3ñAy|èkqGôƒ‹ÜLG°ò’ÔF<ÍýÁ‡MJ3º6Bž#UGŠ®|Š&pg‚Dµg·—ˆ·ÉÝNÍÅ·ãdبm_¢ë
-X°
-“:í“_Ä5CRU_êØj®›Ä»g'fà¦*‘f¯(·|Ñ:sB¡·²žÜ×Û¯ æÁ…Q‡X”FFÖÔ]»¢"D U‘Ýt&ä‰pý(ë`=á™8’ÏŽŠU7Vôç~^É_Òò|Ìócí°‡è+!p’v— œjæ›…TIàÄ-zšÅé7‹
-Ò÷6{Pâ_Ñ°
-¡À¢Õ\‘o¡# ßèq9*ÑÓ2ÀÔN«E5<¦(ØÐãŲ­CRs¾=QÎKø ÑIz„>1´¸~9ì¨èÑD]ÖàÑ0ÆXíÇEX
-œÞêHô KÑ…ñ+ jΣi„> "/×C9Ò(Ñg‰brZL¿;´=4ÜJüSº¼>–Ë5¯Ç9IJC&Böšx&ø*Ü|m-ÆÂZ1.+Jc°vê >E‚  š92ó”ð ΉéJÍ<œŸs ïUEM<QÈC ÑÊ û¼ýŠŠžSo 8#¹ÝNŽ—0*ºíàÇöÔ·ybû•fÄ)Å 
-Ç>à€ª¶Í A%Qâ–aWT6„ ÿ¸Äq Y­ qåÍøµsFm
-$¼fzTáâgò¥ªÑ¥bˆ›C3r"Y—ð&Ü V²/ÿT6W^”L{P¢O 6Î@NR«á1bCîŠ.à¤jx™ñ¢Áü·MŸÒ|E0AnBkkQoð¨pžŒ0‚¾Âþ>Kncò/=‹°¹rY„ßÑeXY;ÄDÁ£2Ԉ͑E:_º÷åÓèVf„Þ@ݺ å)AûÀI‘Þú °UYK1JJ0
-J
-=—þà±ñoÞÒÞè6Oø=õÀð£5Á®ÜúûÝ6½];G{‘oµGjü×q£ÿ<•¿ ‚gÑcÉ£ÏlñíÞ¯<ÓDá°#ÍF{Úag˜º)ñí‘íú‰lc£¸t'Eã ±‘ú·‘ç¼e±?ء쀰cüâáf6›Á"ÍÉb,5ØŒ-{ÔöÅòL&M*¥ÐŽÁâ±¹OÉ’–™Õ+*î¬+ëŽìZ[I‚PÓeü•
-=Vu»)¾½QT„TÖÚÚÖlŠøO¢ý€ô(ÊÄ¡TEP E”ðj")B„?¢Ã ,;ÚJ¤ˆ©¾ËéŸ}
-Å“ÖæÀþÍ!w?e’KCbL[2 ÌeJË¢£Tî“ú~âoW¡ŸÈ¢ÐÙ}ëÉ$Ý\Í¥*7»b*$4(²‰ÀÞHÀ™ÃKäIS Á+²Ò¡l@ÛÇaóW;I–«³oE)•j3òÎNÒEýñ5Âû)‘!ÙŽUGw3Ïèd|ô|JÊŒ—Í: „+H[ÁBÿϹ¾R6ý_ß7½lY A›–Dr8œë–tÞ¹!•%Uä?Š‡$ã`øß7ú•Ä…¹Àm¢y›ß…Â[üeEŒ• eNÖü€èí8$Á¬¢;Yw.ž!º£¡}&¤¶c
-šÃ{½œË¾@šA ý‘UE2zbÀ»³t·œjòâËï<Ä(9‹¨Ç2å  ü~‹LZøF&±Ÿ¶wFÿ¦RW]š€V¿=W]ªŽ4à¾r1ñ0’ˆ<“kñ˜×Ëž‚¾~ò¢o-Ñ5.’´aNÅÓæ¦Lb |DaáH“ÓpŒO ÕæÐzºèið©‡ìí☘Äà뛤½ñÉr(gÈGÆ1¢ê1dzÙÞŠ`ç áÛ3ó¦½óô HçœÜâ3q¯‹s‘—YBØÌæ–¼ŒÇðøN)I‹Ý ²Tk
-zµX™±K(ÁˆÑH‚¤¼YÆZ_ã$²-æÐØt,Î~Ñø¢Ú ¶³|Ï£ËRµE74LPõŽá«jSWRkµR¬ŸôéʺD´5ΈøÛ»g
-1’Ȇڪ1Œ×<³JÑ<˜lëL~wœÀ77ÉúarÂë±Ñåmñ7ç#ˆC ^”ë7˜ÿ1ZšÂ%ª@<ëª*ðÚ¯?7ëUÔÔv¢@"ýÎéΛâ%1¤ú5ºvTi“ã{µ“‚1nVeÎTKStÊJbj«˜+=ç`=‹Éj
-÷ñ–"œÄB;7…Žœ^ÌúÚùj"ˆ¡¡‹øæÓæDkiU¦
-4‚º¾i×òkaK¼i;ré€N¬ÿeejÞàéjibßCwÖå D Z(!èú2 JêÞXZê÷\bþQÐ-ý„»¿Ý_¬Š¨³½Ñf™½üãAbMávN¤ÃÉ4PÍ!9æQõNsDvŸÃ­=0ë5¶ÝbAì"›GÈ45e=®ê<‘¿¸¦±ý(£ ò¤’B²q 2sj—›‡LùÒJiq2^Ä,ß¿’˜ñIwÈ“²µêzDOfä•õžc&A_^æio!J‹ ³ûAüRœêÕx f±ÑvC µ T“GÐçÊŠCÀØÊlIÒa@\^œªáÖα"cIù”â|(â¬ÉÏ
-H‰Œ—K’œ7„O ;ô¦$ˆך¥náˆYI÷ßÎ’¿Âîb…¥…eUe‘Ä+3a™‘cä°ïýSuZtSíóã?½û§ëœi.f!¼Y‹!j7È÷oÿû&ÿýæ]?=ÓÌZïºñÙ3ºh÷Þ¼üÚõìMGt j)³ó§ñÍÇ‚ˆÎ.¡ªc#D¤çð1b,€¥Iïn£í'ÅÐaÚL|ÆÇ_ë¢>³yNã¦s[Ž9Ml¶ÙÔÖ׈FÛ s³i3e?²ÛÐà²~ƒÔMýS´‰Ï òë9íÓ#»†ð?'56zèÔÙl!F½µ9ƒd?QGŠn„»njŸ-ÒgËÔ1ŸÀ‰Ï+t±¶Î •™ÞsgÏ?u&iDË~…™ƒ#BÍƹêTïÖ¬ë:‡y-UÓæ"]SªÄsA
-þ…®æžñéT¤ÓN>tCàŽ^$v’L+A?\ÞPuV•ˆÜå¬×ÓÇÜœ×0
-QÉ ù‚d‘’CÑôÿ²›´Ú=€®æ¼žCÖ[P*èeÆ 'Žê@ƒKIqä†R2/Ð<ºnb^QJvz4as:Œ¬Ê0àÞY³
-eÏÓ½² ½¾Omé(NÓÕ9¯ ÿD¡²ÇlÒ´­Î”•ÒôzÄ‘¨hnÒ%Kaá²A=­(NrC&åu2O¬û=6¸FŒÆyd]õ2iý¼çú»ºþüþVSK¡Ñ$#rx°1Z4‹·¢+„ºM(Í8€Ú3­§b|›£ ‹,m©x•7µ¼ƒ8I òihµ·£%4Ð29ÎAÈYbÄSî/_OÂv@Iè]‹7 ‚c C’0õ.‰"ò
-¦n8"Š7Èöæ$´•M³xÿ¤„ïh*Þ6a{p”
-”_Ñ7™¬9á¡´F¿€~þI᪾­¼X¤9备þÎ濈›1øBÚM
-"eÕÙæ3+ÂË8[!ô³,IOdA쑺RÕ h8³˜‚ŽÈ#vïuDW‘ëfÍD5sNô“«ÃÂ`h…H`çÜáó8¼" ˆDל4cN†MȲ Ð7 ÒÉá«?7ˆÏÆXÚå‡&¬$Šg/ 2ŠË»Zœ°À—iä«-G“‘B ËÃG\…jÅ[é1D2¨myQ9ç,¬âÖK)Ä\¥/±µö¦VÿRóßV(ZVýEÃe\<ënÉ ubà «›±­¢Ù,W(í˜uFnBšÛF|ýž€Ûñ¬|5ñAX†±t±ñNƒÐ¶v\kÉ_‰ƒúŠ¡,#Y9šqLk+y­Ši;ˆVv5Éöñ£å§…û«¿»aàÕY.õÆX…U7„ %B'Ö]ôÁ@öXŠŸSŽ´(še;p_Éú 4śТ˜íŒÅ׎FÉi)Æ}êθ‘”¬}¨ÝÄõZ÷¯"]-• jÊõûdÊ™?zqŒ£®÷‰~á‚VÜ•t†ï6мc`Š#ñ°¬VË´Âwô(&ÞÐÇ™q v—Y~®@ÙØÇf3!(«”éÚx@k]g-0Ì
-Í621#ß¿Ý@ì %Üt 樭iÍò‚ZÙxÊ/½¿‚|âHŠðb³¡gñ»Kn¢óš"/v„¦wc$V¼ 0¿ò³¢i™BþÛ×Ny=Œ…ãF>2—«êUwr"yŽÁ†ðX+YÛ½UÊgdþÙWA+5T}‹—sà0!¬’¯g<]!t<&9¤¬f¨Ã‚¨ÇU·ØéARÓŒÑâkÆ|ˆ±rÐTsST]¦‚¨žýµãáÈy“nÕ ¨’Bœ¨˜Ó²XX]{ú?Ø©mi—o‚‡ð—ÎØŽC‚œ1{üN2ÏŒÔv
-±<Ò|.g.>‚u¦V¹ßšýwµ Ù`F‘“í\^Î æ-Ø÷jÜÌ’k%ül¦ ¢,½ô:æ4+DZÙJgIÎ ôê¤ÄkýÔ*»oüÌ«‘ªËhAæ^È›‘: ¥¹i=lù¡1
-kŽ›¿¹æÈ¡f²\ Å'êõº«ø3¨G+y !cˆUðÝ¥DŒqŸQÀ’]ë™eÔÌ)~úIFMk•ˆQMÊÈŒ†Ù†žJõþÏx¹äFrÄ@ô¾ƒN äÿ³/糕î¿õ &ËÀT±¡ö°¡ÌJ2Œ°³ð02P™øˆ¦ŠŠR]þ°P°Cçó·9»ô ©15¼"%ÄÀwRS|SL ˆ ì[9ßu¼Ä ô;=<­Uí?Ê8ß%b.£¢é4”ÑýH7<@¼Êf§úâ29ÒøÃß¡ÁY§É~‡÷¨å óõF½Õ•¾3ÌS¼$ŠÃÔ•lg[["ÿ£„‹¹ÎëC‘HcZõ¡®òPM±Ä p±kQñ£CØ„¾-Fq¶Ð¬giÂÛU©SŒšsNAÏ
-BÀßÖVŸÁPû G££0Ç$-ÐÝZ|
-ÝrWˆeyñ)ès(3séËãILôÂGc>óî=, ‚ŒôiYZ9,pù«Qçª'h+&™;ÇE_ƒ¾ ¿KQD¹#z½æ䄪Hq®ºWç6`Q‰§•˜ÝÕµÃNÝ çª{Ãç<ióøš'ý‚W=iü¨N4 ·ÿ8TʺØÐÏ•$òl:ㆿ¶&1’»´ÙK"f!åkঠq׃¸±b×íÚI³(BM¾çàØYßÕ°oÊ8VRòh°°Ÿ¹n-ç®×$L4Yu¬á{y]Wla S÷*Ù£hËÒ„jsëЧ’G5~á(ò@¡¨õ⯠jídv ýþ¬
-£¼:dƒ°åÚàÑšDW‘æpPð´k©¿8G©ÎðÏp§-su
-’gâ¼K„ˆ¼ÌŠbŒ“;ܧŸ›y8<cñg9ˉ"³úXQmÖÙÈé'v
-LEMûd$‚?bÖ×ÿáÎ3
-LÇ0¢ñPÂ]uíÁdwN…ûÒ0\#¦>þÛ3MÆZÉŸÊY‘E£"ˆ­{¨?ÑM+”ËÄ•Û¢HHQ"‘ Ó¢¨†€ùU™',sÞœ£o‹'Cy´„iC#‹Q¼&9AÜBÜ#i\ÕØ–µlç‡M v'¡Ë§Æ+'Ì ÔQ½¢¡B™)/•!æÃÇÓ¼ÝÜü˜Qg&ŸéËœ¥ðˆæ°‡4Å(°%‰Ÿðôk¿´.†
-·Ý• Þõ3f`
-@”†ŒÊ^Žä‡T3ÓŠítU’M®Dk+=8 -åžø€jÓY…ÈLptÈJ{à{¥ã@†9gŠFi5€è*-4hÖ-É•çÈJ³-äjø5 e'à&Z*¿
-Úñfö{¸®¨8 pSL §ÔVø ¹uÊoz€d¤‰t©,­öàcÒ'’†ÿB\ŸðQ ›VO’ßt¯M‚qEv+k}Ù1œK'<‚CÐ4œß Ñ“.ô|¬Ñ rHÕãþ‚1¼u;GÆÙf¸P„~Í“ÏG=Yü¨M40·
-ÿ8S¿®Ñã IÕé3ïïÓÐ=ø3©¬
-¼æfD5v".—å¼Dùy ¡äsö!ÑúMü¦‚:¯‚
-˜eT+ßWù€´Ý¨+¤&sVˆ‚ÅX:yíâ®n²pdC1ºJ9‚ü(S3íÛ§-IL{a8íªò9xèÐ2u¸;¤­‚9Û9Š'˜g¾u­©X <|wƒ´¦H³ñGÅ!Ec“j.Tѯ"Àð 6¹Í+™¶"‹Ëc—à Q\æ4_‘Zb!ÆܶJ™dÕŦêízÒcßÒùhÌÈùÜ¡ô¥ÝyŠG­Ôh\C¯Aɶâìõ)—:š‹;=`÷æ†OWF„rˆ"…§5Ö&‚à žŒÞ£ˆdá$œQqÒ„YuY=…½è”f¼b_Z~M§ˆ _`­ØIŽ£Åx¹š±3þ&ȹ´¿ÑE&‘lÀÆå1jQ°£BeÙ9]%HòG”)0390¤5Y›"» o’ÓóËÞ4ÄÅ…ξÐ× ŽGV‚ëòù¦ôOÛúÀ
-_GŸ«OœDcGÊr‡ŽÈàÕ8§¬Ýí%Û#Ó‡£|~4ú[X`É.#è•|®·¸À>c«‰eõsu…8%#+At Ì÷V¿ï¬ƒ7h²k;–„ ñš´Äšî½ysúZ7—šx¥Ò,,RŽƒŸ¸°UôƬ”4,"¢æ£Êø{`¼$^ï¿¢¢§Ñ¼(â€Kù…‡Mû„ëk ýxþiU|ìîÐbù.Ô¡8A Üœql‡ÅÈ%׶ÝÂE¬K1;‡.™èšb;æÝÖh/äùi©((< ^ˆ(%Ñú9@;AGd²ê[Ê“ªÞ¨víWaX³´â²O 9 àwäzt5/Š DÇårŸŽ‘v‰ûe)Ù4å-‚ÜL{é ßn÷{€þþË®¿Æ``±ç¬^Š0 ›
-žãóEÑ%+]4î)B!@>Ò¹Äaª¿c =Õ’£àýò¼T0I‹á#õ6{Š€
-Hm+ì\¯°Q+‘­˜Xâå!¸‹çü‰oX^L¶Û*tzÀ–µ”èKø’"~–}î%< c(YÀž•Yy
-èºj«xÜ1…ã„R9DÈHXJÀºjPôûEË€-*ÉXâÊ`MÂÜúñâðÂÜhªØ5=ÀÄöÃ>W´M»µ’•Ô)äëM}
-c§ö`Ӄˌ
-<н‡4
-^-ü¥á"=8¤+|;¢þ`æï_}=´/¼ž˜joG®2</åÎlflvAcúVÑY»
-`?ˆb$»VgÐ-l˜Ûmçìpj›1É”<´oÆTCÐÕR·Ïwða»!¼ŠðÛ1Ì“7`fÚI<OF“<ˆaÌÐ.Dö¯¦‡h
-Œ³ÌlÂW<¥—ðpÑ*,;&÷ Çfw?8
-ž­³´¬ w
-|ÝE‹
-Ù"§Ú|+X> Ls!üsá+R®ëØlŽ;Æ~•Ç»Å¼jâq âü9ºï˜Tœ+JA`ñó,8ªä®O+"¬’|A_.n$.‰êà5ã¸,•%Jå…”¤ÃGä>+AixÖ"\+(ïaçÒ^CÁ/ÎÊ1ú°ÃpIªßeÁ­«—.‘6]r h›¡³?É÷^4v)¨?GöºŒ×jÄEˆ·þ¸ènCõ9‚)‚FS‰©ÑEy¼jš]F\ã6¨ˆ¸ â]ñá¸ÃÅáîžv‡FãvÑ‘­gFÕ0¸8‹g3³†Ê¦ Q9¹ƒ
-Îé$hÄ#%(ÄP;€Ý[´b”Ìu±.Px9Ÿúfå Yä‡ò„GÔêÏ]ÄYè \æMp#:Õ+ÿ¢&ÖÁéÿ¶$žGßÀ:Á¦`‰¨¨üNŸFhÔ)Yâ‹$GY_þ:…z$ŠÎA×SQ6¬’ ¿ èŠ
-lbNÖÚqO­¸S”ÈG6‡eV2ùsPL'ŽQ£U<¼‰¤lZ¡'8ÉÉByë¿Œ&LxDJy3WE’èB_k¬…eŒœktN•}À“EÈS‡ááêVA×ÃSÒüBa£Rœ´˜C–”åμ2jÝ̉è€)¢Œ?;¬îßKmý”eø®èføýWTtŸ¹À'Ü$³ÀóÇE|Žë är™ÁRÚ6yÃ9#5÷T‹¤Å`Ì,6O÷ÝúŒ¼á^°²Fùż¸"øH¸Òþb\ý¡üÇ|mæãca7) Ra%P7g-H.¹Ú²€¸%Ƭ ðþ+*
-ÚƒM”7© ™ÛŸ=óÇOØ[$Ÿ”+kŠ€H‡ïþŽŒŸV+tÚ‚aè#(¢Ç`ÊÉK£
-órU,Ý©[<ÓHäæ±-ˆühÍ™Š}Àaª)´s0ÛIDE“}&|;ó6.WvE*ð‚Ük+›€ØèêJ‘ÛÑHø©ë€|Û×ù?åå’[É‘CÑÔ4îÿÏ°¡©§½‚FÏÊûŸú\2RöËäCUF’©È’÷w+úãM‘a1I$ ÖŸ^„,ã‰AõrAݨ Çt#þjtÒ¼üµ$l˜<H [ QhÈPfï ì…}X»4/*SØ€,(‘’‰6ñµýá¬~9sYÖtÖ£W ¡koänÿ´¡á›Ìµ_^òn’mhÐ"¿Á*Q’h¡\V1-ô
-Ö¬PÕŒ P4ù‡‘B­—,!i)t£”´ÆÌ“À\.SÇ«qCèy±
-öE¾°k£)‘„bdÚöÒú§F7Øuô°+(ièõªúƒAÞ9U?ZG4‹û•½Wǯè„K3“J›)dŒ9ùõ#*âÛX×ÄÖ(¾ÚŸ=þÍ",>\«4µ]Ä¢¢8WÞt6äŽUób»OÌe ¤sæì{1]Lñ¨GŸÆ'6PÇ¿GžÐ¨Ž¿³raEÞ@n
-Æ©žcÐ'.Ûu=çŒ>hÉ)õVâ܃Tb=âsØœJI(òZ§„É#$ZË™»f5ÍƒàŽ•&1‚’ÑÏ*ì ¼ò)ý‚yK}ðü¬èEIÆŽœ\ϧj$Þ5;题*¨h_¯Ê(>ODì×^4
-U“rWpc'xVÛ’VA yU¢ ޛ̳ø‡åÝŠV!þ’J¿,yá4TÌîÀ‹Ö Œ2T‹L yã>‹ž!—"¼KرXÿG·iÀκjž_ûu ûÜ¡ÐÞæñ%Q£'óf>?´B”lì*HÁ@3zR³æ<åE`øk…Òb~¸Êz¨%ñTöjÁXךÄv31ôqØ1°'~îëZVœ>4'X.+Á‡4%”zÈûVâ_R6•MBüæ­àzÿØ2r&fC/Ñx~†
-8ël+ç°+˜ZIG`½ÇØi¨YÊ·ž5Ã.6¥$Ùe{ýg›ÓZ3ÜUº§ëu…‡­³?†l`0lKtN%î`Aá 9Ã+/R€
-øŸ A,^‡ÉN!ø¼D^¸Äœ­¤i¿ä™0ÆG’!zn&t˜ªz'N ³P1· Ä1ü%Lž%¸UOû_ Ì­3Ì/÷Y!•À4UF <Ñ€³ž&_iîUbTê)RâE¡³ÂPuÃIƒF9žÍ#@PÂ÷ßß± ‚ü.Èþ) Áƒ:Ü8Î9Ì»Èl9Ü™\1…¦5/“*ï ‰lFTÂñæH"iŸŠŠ^Š]¹èïðúýÊKÃ΃Åñ
- Æ‹HGéØXQ2#û_Ï£°nô
-'Q¾¡3*ÈZlòò‘Ã] ®õ»Dµº¯˜yÁkÇ^W ȾnÂÔ\5*24T¬$×X¬s­'[ƒ¤8fYMKSÚ>·¬èÂU•ü×!É:’ý7iÈâãñ7ýP B¯4—Ö6 4i£ŠJfEl’dsgã0ÐÉ:L,!&pE?ßAÉMε’Mí]E½á¦@ût(…4IPs˜ã|$Küí¾<<Õâdö@'-šœ}Ž/°¦ x6(ä 
-Rk8Ï—ÿÁ@HÿR{s4
-qÏE¶tÙ),ï4óâÚŠ@Áe ÄÏö$\@Áš#'%%9EØãšSR¬Â/ç²qG.âe݃!‘e¦×.Ž,Ê}"iÇJ`D܆æ`“¸˜ºh•×t‰$v©]DÚˆm„Zþí¶ZÖsžê9G‰`` ‰ËJàj˜{x6 B]’†&¦uàe™±iâê^¤¨@—²²§¡J³]jÛ'mq-¸{W±åly®?ºÕ°„;h,)¼Ø) »¢VŠR¼DÔ¾H€§s £´È‡§õ’,²XÏÝO÷ø.÷/ß;1ÝH3>íÃ¥U¾+)JÅîÌ£"?"ÑNÆO—§
-ueÓü­0ÀnÉ Ž5¢øH …LˆQ¥ŸËP)L1¾~–
-…4wÕú朼i2c‡e»— „Ù•¬$Áã(O›½OÑD^@–·Òg¡ªŽž”ûÐ2E¦?˜
-žÞ­t(2¶I<v+R ž_À(–ÃÂ&¨í<ßÅø{ü>³ÂžO:ÁfìzºCDÂþÈ»Ì"
-Cd-ÿ6+Ĉ—ívJXRŒIhúV
-&pÇEºM[¿P5'}N´r)ˆôò._òt°‰+ìo‹Ÿ¿0Ë—LÈŸ²ƒ9Ž—Ïš{º¤BÛÄ×`K±_Ò¥vØÅß9N—Z)YЮüt‰ökº–@–²–¢GéR«¯âÕdyÃtIþƒ8É©9•(]j†ðý$|Š¢tI‰,ÐÒIß%÷tY¤ýte¢#-J—Rh Nf‘»¬].mYt!±¸|Ü-]R„°u=V¥K•@iü(+¼¢t–ÜÓeXôê¦ÍâpY”Êuô–-ùÿ
-¢¾RØ-[j
-
-±Œ‘‘ÖâlI‰¶%QFÍq¶£ øb:˜vxζÝb©ùyï([R‚òf ç8²dËÄ šZGtkWìyÍ–ÉXºj·wÚa¶ŒJîÙRØäd6'%—Çg´Œj^“¥*H_[bH—£d)ôvbŽÈ£Õ'KõFœî~}é5Y
-áNXr£a° ‡y–RL1jÎa°4¦g×$úÄŠ(XŠ&8€ÉëK‰ƒ¥¬„bR®†ÁR%–Gê¹FÉ2,¹GË°è5[ª[W´kÜ2Ê–Ò¯1ñ"t<½Ë–z:4‚€°¨}FÙR=§yâ#W ³¥ì§iТ«äž-%MZä;N‹²¥P%bä¬aœ-îƒ ,¾~A´L
-ë¨a¶ŒJáòYô°Ó°ÀÖXðsEáRÏ–óà™X‚‡K‘h’öÀ=
-—‚±MU¸®0\
-U¤¹,SfTr–sÂï4Ôž3±0Òˆ|ºÝÃ¥AʲÉÛçý —uFQgÅáR…&ÔmtFá2(y†K]y±ö^ìq´TÉæ4–iËÈ>£¥„
-ý”¯ï»¼$KÁ_ƒYæ QÂd©Ãÿh8ƒk3J–JØpèÄæ(³|FKí̸ i
-#ª)â”èwC|-…]±å’©-Í¢[Îwö ‘}M–¿´ª
-–ÿúÏôñïÿýÅx™äˆ‘QôºƒÖ^œ¹î^ê½-/}¿d
-®ÌH—h@*ýb’1üáÇ¿þó£õõœíNòòºš²"9vBz—›ÛD.KK©Ó!‹BIJ¶É!²õÌÞo:B@.³š²Ø|®Ùㆭ÷À ^æÏ]UYÐÊ€ÀVƒÏéA³Tà4À6^åàmX.€ð%@ЦFSrd/çðw˜œZ—Å—!dðÏ8xÖ2|VŸqå‡Ýö½0 Ñó<Ãê†/]Ú_z‚P>Ƨkßç</Ó‘iÈSm/Ob˺bÀPÎÜ_ºW¡a
-Ñ­7%)©@˳Õó©;¨@9Ä»ž ¬êçTK)lV½6«ué ª¼¿D“›OOJg­’,ŸHgl÷¨iç~ìl»•§É÷Á“GñrSÆ…o#Ê›a³AÂëðRöËÐÈÆ?Â
-Ô°HÉŒÂû_˜é+æ× †G¢ôŒII[ž ¶„‡hØ•Ü7—JõúäcC3•Iu2Â/wrôv¬uM*MY\êš`,D-r…;¨¦‰´Í…&…»JåkäÑW¡I®²G˜¤Ù LÁ¬d·‹À¹È$“ùrzƒÓV0*çÆY&/¥²•ùrŸûrZf†ð#µÿÞ–/ÜŹƒ¦QöÚœcPTQQßS_èï…Q¬ !krwªŽœVo8ûÂcæ‰I€>_@£0Ÿ}® 1ø»„ qM?ýæú C»”µ÷7káiÂálžÉŽóCxüÚ)ŽEÅXóÜ™‚¢°|9×ý%¦qŠ´l®u"/òZ—Óê–<ãD
-vÇ!~éNÏ|ÜÈi×P,“eôZ> †]‚XXJ¼ÁîEe“em\ZSµjÔqäåRE—ÚÏ<{
-ä1Æ·Á·ãÒ ‘,|•±ÙÔF‡ìð^SB¡Én#v± mA,o`Xû¥Ì‹M-»UÒ:Ì:®,‚ìOUV‰#XÛ}åàîKIQ=V÷å6÷ _õä[u¢u¸ÕøÛµúëlŸòÔ×+ÞÓ®š7¤³œy8á z¬{ô¹€8¾½Ó&Ž$OÙÐm—x?l
-BÖ—M¨2!$ü‚}g Üë…êÝhv5ü»
->AÇKÞÎñu}À·$I•è²Ø´òîâ1Q<˜Ü5BU¦ãRßÖ߈œŒ+#¿õ’Sa¤â]gã¹Pfèrc•€VT^*î!›R·œ1qÿ¬BŽ;l—OÌ¥:Ć‹G§­"°‡^ÃÌÔÊÝÿú`ž%®XÅ%#ž%þ#ÐSõ5œ"³Œp-{ñì΂Ï1í
-¦|¬à\frÕó)äBËÑ(/-x‘eÚêMÐ õF™2—$¯H ÿñŽ#¢˜KÓ\„j¬¡ÀöUþ.ÞˆjJTÜRví9Z ðüP q>ôÿÇOCj?ÿ ³MR þÀd§÷¢Z´5IãžTmæ‚2˜Ãk‚¾`„àMXD>‘#¨¢o ž3·³Ë(¿ƒ…Ä{øµ!ð^É0Hɚ瘱4VË€ 2ð*•Û²Ãª&̹x‚ÿ2^îHvÜH]÷@[F˜S1iÎþçÜŠTWå >Éؼòsó¤m ÷ iŒ¹¼$¢^1/Ö†¡ã40ƒ§¢¿_ˆ|Xhyl>iÑ€i&ïe¯1D‹( ÎVó I›/O»Æ ÃØ®¾sIm«±÷P®µÇc ‘¬™·Ê½O‹ªžŠK’¨Pjòï™úCÂÅ×éÔOãP†ZÞeO#t< äNih–š˜w^ˆýOÍÎó¢L„ù(4pøºSûYÕ4협־½ѹYŒôZOqXVŠÙoo‹ñ02Æçäˆ0½ Ì™·ôe)ašo’ð Ͷފ±s›©̤>•Qû˜</gFÊîÇ ¥Êæ;ÔVü]¸M'³<­_E?4y·˜?¬Âdùêƒ`0)Šh–óô[Eóö%¦ûT“{ViM]Ít~è,ÏÄEQ¬ìDvµðº€ÁžØÿêÅù˜£ivuwg¿¥þ†õzjâãÐ°Ñ  ŽÄO½ÄÆ5ÿ­‘Ü”¬ ?"ä>×·ïhìlþ­Ë+§kY˜Ð)Ðè[¾Ó}ÈÓùuÊ’ ƒÝÓ›ýã÷4â«®*HË+Ò@çÄNxn»Ú'ÁÕ®”óÞ˜x*b–P
-Ö(Ëb.z|í • ð/cJÛ' ~íÏÖ¡¢ (
-¬™aŒ“PJ¶òš-añò‰ÈvQ,؆a0wÝŒ†u%E¶\Ý ‹Ì¹ŸhqY¤ŽÓ^'ãUY@V˾Š@šEŽ~ÞŽ}“|÷ð%¶JÊž‰kxNvp§¶9fµ«¸:uÛ”Öú5J¦a€¢ÅèL"~\õ„ŠÀ¼'ì‰+t5À5ƒsF:ZÉr“¯s>—)ñ£¡ø8ûG
-yǸàt0%_· ”¥0ò†×6q-Zô
-žP#ȧ_–¼°¦Ò׌_ŠYÔäÌþ OÆDOÆEŸ_7&­w¹b‰_/ï:Z¡É9fü žï¯4Ðá™$BÖ!œ‰B¾jl‰«i8DÇtŽ¡Òƒ8n‹Ÿ¨'yêËC¾¨ 6"îä‹ùus·A¾$|bjb@ª1ä¢'ÀA~StÇüPô™óÕbVÊ6]çë©P¡¯šè1çÝwç|YÖ«Õ«Æ|®>×—¹2?ŽV]ªƒN‚ùÑ2à.FJy.ü})>a>ŠÆõ´•{…ù²Ô®»Ž"_
-0_ñDÎÀf‹0_5Há·?CÌW]dVm[-¸ð™ªÍŒ«®€óå!RÁÔ# ü“‘:ç—Èbi­Ç °ó¢5‚Þûéš•ô¤z›§û²MÚc¬z¹Qäž²v°‰ h>e¿0‚,f^øв²"‘ô,ÂÇÃìº/YaSIGa™Q—tfµâMåóåt¹í]tãØ¿ý:ü;$L±Z~[ÄæiŒtòCZww>E@œFzY’Ò%²ž œvV»Ê^¸prs‰Y¡DA"6¼ã^¢BÏHØÇÆ
-žcFvùå?û՘{4\ÁIf`Ÿš¥çº„¢¨‚,—y
-T¦ë&š„Þïx¦‰ÑKHŠøyô#JŽu˜ èç”Ñ»ð>¥<(€Ï’ÜGŠ¢è‚à:öð>4A3®Ù¸µ­ó¨·DAß=¾öŽææqCÝDr•¿þÃVö¯ÿ~ùë_þñÕ&Ø:rtB<ª ø?É`$jÜmd
-ܶhßÀ½;ß–gß 57f"¢‰èªŒ¸úN€ü´f­k.¡Ï¡jáå’.B*øýÌ‘äû:‹‰Äž6˜Èkôð£Ðyv¡æ¨«¾èzÑ!Oq‰Pšð˜xK—qÜ°—ìŸb<30wäç
-Ïp V˜Y[ámʇÓ.]O'Ú‹WiµÁ·†_:Ÿç0EkŠéò¡¡Dà•ƒmˆo—-áŒBBMÖ†d©C NÂ|¡ºÑ NH$I•ÃuêD—¦ÅºÒÜ6ݽ%âsDŒ:¨âe‘R$ÂÉ MIq'I×ÌUõµ-aûH ´ây®iAÖ8é**%ª›Ûé*5e‰Õ³0­“S ÃÐ~Xü^ s­-H»2J ú—¤—•Å1½‡0µ¿8§ÒøËšš¿l ÍÈ8K´C^êJ¥E"|¾éUÄ„2Ñ°ù]„P«“…ã
-»DÓŠMø9¼G!¥…|©z† †ø)EÇc¥
-
-
-oj,$¬ž—C1ø€N;œ›¶DU–W«[”Ó¹ eÂ
-Ã,MyͲʩÐâŠÈè”à‡ôD3X :–®ÿåªGa2‰%qBÓh,Ë(x½JôÔ2]91 е7Müß;chÓZ· ÍbÖÚŠÜúW’ñem—:§«ÐUY
-–EæÐïþ6è޲ื@ðZd6%!¿'O%¡£ÏÉ:{…^}’±ïô#ñ`û GäÀ„*Lƒ`Âa/mæÆþÉ'QAJÉò«Þ€ˆ˜glçå€d»—ÔhuûžàæÉ{ç‡MÕaÉÖ,}*AMCñ1€¨µésðÐ>Q¯Y>Ós lR>¢ #óAòß2ˆüK†u? WƒÏqbHbDZºáέžú%Ö€ÏsÛÎ: [t^É¥KvÙÎbx¹Zá;ÛÈ SŸ™Úƒ vmæêH#€œw§nugOˆ}ý%–Œ61âJ~aÔ¿Wq4%„à£e¤µƒ¤F=<ݨ…gáÚ‡æ°Õ‡9 @ÁZÜ{ôºª¿ßÙç³ö'ÓHíájÞiHUóÇ1š(ØCV¡RÑ!ÞøP©
-(Èâu™osCŒè©ï¾¾ƒf̉4˜!¿Œ¼œÂ
-‚#ÄæŒG‚¼÷è…ÂÝz‚Á0%¥mAw"ÆÅcžs¢á‡`"&5ï!&^š¡b넆rròãZZÚ[âMmAh²ë%wx§•G%*6 ?e ï¬S”„ÝkÄÕm7Š%ÐB´ÀùóùF™ë@hõ”@·¾j
-Öï~Ü[ »+ù™7D/ùã¿@J[3±–Ûnc: E°¿ TºÔŒ½ªWù$AŒ|¿Öz•Š@MYBëeðYŒL´â¯•¾3#ŸªŸ˜u~ÉÌNvÐèÈÚÄÎm[ ÊÀ–%ÓPØãHyY­¯™)i cwZ§Ü[nf-Ü,ÃT­»XöL—ö@RF @=€ ¤²ñ產Z¹I,KejIΛ¸ƒ­»Ø›ƒ`U˜ÁE€Z‚gš0´ywƒðq¤•í¥bG!iüvêCB ¶ä^g¨Ž*sMmòt 1p¡UšõCÓ¥œÉçchm‘æ•ÿ0È?ûÌG’/†tïtº6XÜX2‡ ý=hŒªAôO3¤ü狽tÇNaŽÇ+ .Äj4—§C¼,ÎXU+€ÌŸ†<[Ïž1å¡øÔq ]»ùî6†M܆VOÅ¡Ùm@n z?y‚%0;¿@èKÞ§mÒ:Øz_sãÑzš=÷y9ŽB•ç3>@µ
-—óü5|5^‡zÒFnÜùdx–0“AÑ ÎwwËãUsØúˆOë”eôv?ƒ1D§aT¹Ûå—ª¶°÷3òk ȾRê_¡#©åÒGqeƱ­LÌÈÂú$òÜa{9¹A*&›‘F›»ïÎqóï²ý@89 ¼éÑBšÀ°Áx¬J:d~ÃÐòŒÙ„1Øðfï^ãwA5kÿVÓØ\D fT©f+‡u]ý&vt*âÄIJØaL>ÉÒ¬!ºA¡ãÅ{A¿­‚÷ÝÃ,²-‰ú F_Ù »Q–+©Š<ôŠu2È4?žÑÕ ÎIüÐḦ«0ß✖/s£8€ñý@u SÇIõ27º;ŸaÜ}þXÒ äùCÕ e–¸–fŸ™¢—¦°‘çU¼K/³ m'ò?/׋-úOêÕÇÒ›Ø úWFpãCðVÚ!o¸ à;ð;ŒqøãBò(m‡ ø#“þºD9ïÏL+ö
-Ô` ¿@S! /Å ³¥‚°78[¬Çö"1ÌË ù„ŠV¶Iѱx%¯"‰z‚! 9XzRš‹t—W§ö\¸
-€è%t¾¼asû†(g j}boŠz¯MßAI Wb
-ŠaÅQýé“Y•9/µSe„¾L,a+ÑwÔ–dÙnt_ŠHFÊYOCÇ¢ $öÙ†lÍTnYÙ¢ãInΫ¬§ãp óÜ*Q+/8]ãŠÊ<@ˆa$¶šh®£þ}–ÿº¼FV–ƒ;àödÒ.½­ ]PÛWÁiì0„Uü!.½ l}¬ËF1ò R5 Bó <Ê>÷F™Ö.ÔV<YýÞ7bº¶œ†+ÿg6®Î¤ÙûsÀÀ”9S¨“@0 |vhå"È™yxEe£=–m‰[I]YW¿ šå”!µ·™·àRyzñÙHç²qñ™ŒO®¹¬3«AÆÈÒWB U¯Kÿ RœƒP¼©Y·í¹ƒê§þ.¯EDÊvmþMQoh†HŸ$<l‚p "ɦÄhÏÿ¯—ã0n  8‡°?,€³¯EÊÿê×
-ô‘ÇêÍ’S¬EšÏÜÓÍvSnvþúZ±ÖÔ¾gè½NUþtJ¶Ô¸U:ŸS4]"Ám–˜[3s_ZÚzív'æò(Û\`{Ë@r–
-<f¼5T‰OëB¡í{œ0e]W¡O<ƒ”l4=ÔÏ~‚fX—y6oš%>Ú§—»ßCE
-7É÷=0;ÅTQ?@º'¼NóØ(drJŸ¨Þã,fIÈ
-Íð³‘%©å@»ïë”mjµV*2†òµÈÉç^Ð: Ú[úí=j[hø~)ú1ŠŒè¶F[lõ*"öšÍZ>žzû?öƒ9êò×@Ep’ô®QŸnVÓÛ²àøWo«9ý®"‰Šn–aPg--PgÁzJð¦Ðøí¹*~°­ëö] Á=c‡ÊsÑç-äªÅO{Ni£åWèt…ÒôÙUC%&µõXÿëcæÿóªšOPû@í4)±g5oœöÇQ¿Áßÿàø¯ü¢«–=\‰?/{ösùl2Ök9ÿyAŠW'å—ÚyÊýØë,ñĪIä7#MIÉ/„%•÷¯>°Ñ? ßBþœ =®B’ä©î1A)a‰8Œ6"Ò›çPÂÒŸac×ïÞeŒ Hxõ@J QFC3¥<µá~aÜTòØãô‰ø¶n
-5÷›j¶¿ÔœsÞ ~Içbïq 5V_ÝZunCDû®„(w;Òö¹êsÑÆO3ÕÁ£s¨§©a˼¶Ïìb `Çw3Å ˆüv[rœ³ÓùÚŸ¥Èo9»³¨t£r¬3—¢g˜:d}–P•Æ û먓+%=çë:åŠä¢å¯ìô¹èï×¢6ü¡mïTƒ·"¾îoq›“Q5ªè—̵Äú@¹Â_Œfx™Ãä¶î;f YAÌrÎCN:¶é‚lá‡K.Á1‘¤iâ=ÎѺ=&½–±4ñ‡5F³ÅÊM°ó×  ,ß]^JæU0yÆõZÀözNZˆ§~L€YŠOG ¼(××d¯³¦ë«œûRnùØ™_(lØ„«äƒ®x”Q¹‰À|ØI2~Iî«ß”X0GPÇP¤ Ù­¸Zôz>ꗢߡhŒã*ý˜p¿{OŠº?™º±ÃÞÇõzTyFE¿’èò|ú4®ò-#äñ&‰—€eŸt¡¹~†N¯
-H‰¼—Ýn]I…Ÿ€wØ7H Âþ«ên¸Šƒ„rB¹³<ö™!"Ž‘1óö|Õ{ŸsìÝíÉ0$Š­œSÝ]?«V­*¾Å uÑ¢®ÖXjlÞ‹Kâ‚×ÔÊfqó‹_^iM®5õF_½ŒVZ‹kRø¢¸*žˆQK\´%§1ñEuµèò®_w4n®¶$M[ 1¥e|'F§Y2>”'þî-º¿%8Ï5ù\sœÝ£Åy_JM!ó¢báþx,T$)Ñ¥–sMQU|}ÁwüóË÷ü”ƹ¤Šo¾H[¢o|PrË%H.m¹›[eç5cUy¢•EÈSh¸,>dá™è½ãôð9ÿYO}()ö€_>­.†\jn©¦\fï;ÿ×û÷V!¹"R[VOc÷³i·hÂy,ÄUpÐH{ɱN"$åÊ’LŠC陕]ŽM±J©éôž}.G_¾V“›ç5ŒùTÝ^-p™ªj¨-Ô:‚Cp*ásÕVya0žvh ]U^
-FÓ¤©²_OL{é|j«ó;{¼mÞÝL[ß8®„e‚t×B “–/.¤P·þúìxjŸ¢Ó;/äîØšª‹àÚ@ ¾—îÜ ŠuŠÕ×"•,§/5dJQã‘,AТU )¾À±>¹
-ä@l™œeªÍ([.yÜ $ #PÂ@ÖšMªb­Ôš+‰âå^vÊŠ}ÌTG4•dÄl>V:6™EØHŽª¤ n€%Ø´¨Õ,þ$'ɬ¸å8¸D¢Áì4|ÉÚ™
-#s{3Z§ïØÈlI(, Ý ÁÃ<ܬMÖ#k6‹
-B²mD·ûI+<Í—9vJûµ6Ñ©‚cHØpÁ¦’§qøm5â5_ÎI`ïɦ:ÙG§NÒÇÀd34 ¦@~ž|#¦­M|æͬt¶oM nÛ¤üˆ`
-‚b.>Ÿ´ÑóDôý!å¾?Ä.Lv¹´]á„bIé®ì
-Á ð•æim.C=m¡¹mI&ö pM[¯É¶IMð„«¦p«(g@=ƒ%›Z1÷í­&ü  × ¸Ì¢Yä“Î`Ï0ÁbÃ9¾´ï°ñž}“Ž¾ì{}Óž)ÆÜìÙfHïž«¦U8o(öÀ›^þánäñ=~'`×û¹ñn¹/ìxaysyÿ™QøþOׇ‡/WïÿyõáðÃõãáÖÆâ³1ØžŒ«·~ý˦!òË£yQ3©zV|w>£h”Eè2^&¨W©L³‹!ã?ä—YŠ-ÇE§’ß]¢o>-{ }ãxþ^ëDÜï=‹*„  $Q73£9Í>kwij °¢QÁÀ&Ÿ‚ 8$°C6ýñUP@¤ÕYž ©’nJ³,ÿ÷X\>ç›å»ˆÜbšn/ŒœŸâ3
-sõïNª2÷I¤øÃVycæ9m%z˜¢e"œG(~Ê`
-üÈä¥ ñ“"áŽ[4LQ ‹‚‡±õšRs`jÍs”Vôc^€ÃŽôj´a!¯ëîÔH5­;¦Œº
-Æ¢Pi,ßG˜:ŒFÖ>Å[Ôòò­’5<ÞvéÎð&ݮ똗2YG3BŠË¤2&Ѹ`¬ËiÂÐ ¥[ùÝeP©´j`Y`M®Û9”!µ?c&ñG¦†æÊ’4õ4öoœPÎœžuVv¨è/ÔÙr¦”how:ëà¢2¨L/Ôˉ€¹%ãÞHi‰Œe ciå{¥~ ýÒafÜWkÞˆéU2Y×õ±™rZQŽ%΋2êÏ>m½/Ù1›b#©zRŽ%ˆ#q/úu}ÕœecZ×ô®83˜¦f„S­Á
-[á뉦Á@r‡Ÿ(Tpm<‰Eö~š}ؾ
-äZu<´' SÄ‚QuDáÌ0)ÕÈÃ\ɵ'åñ"· –ľ¶zÊÍĔݔ]ŠD&æhŽqa6ð=µ›çárT'èDá¤Ê`Ð}ír”õbÒòÃÈòeÁö­^_öGÝn¢
-V§®e¶ã¥µN’Ä4úÿ°eŸ—ø—LÚköóÒ«„M+°ÀOòAh.¢âÆÈKÌàjw2NªB±˜1Q1
- .‰¼™Ï² Uo™Å¥@Íœ»¡‰W8 ¯U鳶ô´â«#ôh5cçAÙÏTRû§?¸s?;×ì'TøLð`OlääF¹ÃÇ©"p‚ïJ©Ã’¹ç°äœ9^9§L7÷†Î<Æ~ÃÁòü-Ö¡‚JHYýdn±|«Ü÷7ã÷Ë­Iî¼
-aºx“9)ßñV1š£SäN
-=AÁ1%åÆù¢sÇ¿É840 7ÂQ"È£´2]‡*À²T9ÎQðsü%#Þ€Í á·-y£`0æ¹ñ—w•Z<ŠpôŸÖY¯‰óò ¬à(s›ßæ ‚h"þõL¼»î¼™C"AåXw(¶96£ˆh#çrñM7Dy»¨ƒ_!7´
-!Ø^ 'ŠÃͦÏ|ô .±+I#´QK°%)ÅﬨÉJ±¶ ÷ǧû°h‘Ôü$yV€5
-ó*‡îCltÑ(q²û‚F»"8€pe%ø
-y£‡ŒTÚp€ç>=ú°I-NÃv“6í˜6zÒƒ½r»éçy0åªUBhšU‹AIļYÕ{DMžªpüÇŸ´Ç›ÿ=ü)oˆZôCÎl$”ªQ(
-_rš³É·3º!,
-ÃUŸ.2šèw‡€¤f>þæÐ’¶Îö:É:D£{OH ¼ø|ÿ ðiÛQìiˆvNÍÛ‹nà7âÅÐ lþæK®ÚŸŸ¨’L!oœówm†>q-ÆC±ûv?Xùý—
-!¤50J‚ È
-98‹aŽ¦+õɳ«[Ìñ#h¸ø Vdí‘ã 9n.òí*%*ûÉ9üËZèԆЩ˜úûæ+úkŒ½¦
-ó‘QÔ”‹@ít€OÓ±Ó“´=Ìe†w|„^O1¦89[xPf˾„HDéwª‰)
-émˆ)×q¡Aè‰Ã°4#{÷Wï.½L[m¯•ŸUy ^Ï{R£ía
-eˆ+‡z6=:Å11§Ó^bŽYeп(¾¹}‘¡i‹u+u½ØÕnºŠ§LêWé“âg£Á†=Œ*ÝL“JMí?žçrQ—
-€[—8Âû÷1/ö!ÆÅCíÌùÆ>B¾LˆDúÀ&ÞZ¨ÑSh׿
-¹ù+
-/NrP*ø3Úo[˜
-
-v•66)>L¤j>b.ý!!ü4 ‡/¥=Âh=rÜB«ž|9ͤÿ)Ïu½ëä}ÿYgi²ÏLfî!bœJ[ÍÎB¦û/÷ ”פ¸f­j ÊK¾6¦–Öfº•€%Æ{g”ß‚ä’FCjA>\ œîj+äØU„ÝòzŒªˆí ÝnÿÉÄ@‰eôØ[^­zµÚRcöx ªK~ ”
-ÕÀÖ¡O=P°;9Vm‹3`X“gØqÑLCD9`·O!@&Qg4À™›¢7†zcr :§ÚÙꌪ"šP•~è'ò“\ I³–T”Ú†»Q=¿†wÝngm?×ûŠŠX4=M'ÿ©¢šäØ0’ÙñPå³vš4ˆjdï<0Ž¨'Ya&óQ$Ì£5¼ê®àK°Œ¡êê¥/Køf!,Ë5k«]·Ó® cÃ
-lìé¹æUµî²ýá‰61Ôt€„i>ðÐúåv;j
-S†¶íp܇˜Øþ9ÅÆ´2IŽ#þ!UØUNFÉR߶4äÔ7¸·Í¬Ìiõ¡ƒÈ‚P@9´úÑL€%°.ŠÙËšÛ)°±¸
-7pu™”/I¶Úÿ3–²¿HûaD–︂À{|@>
-Sõm%Ü@ãÖàjƒŠoFÄ“ÕÚ9YºRÅÝÇd&½GÓØH¡w d´d±?Ɖ$ÒýÐæ æaœîvK´Y>ï…6"}ÝœZÖî\º)ônôwüß᩾|âË{n“ÅÅÚäÎ$º<ñ¼Co[ú˜Ý¶¼ZU:O'(¿ãÈTÊÓ¿\¸Ùh9f'˜0.}0ÓÃ…K*Ò?ï™SÆyø Äfk>PbÏX[àP]Ûá>¿æ
-ém“Ñu(¡¤³¤lb’–PïæVéÝZ mϪh‡×®ªÑŠ¤˜ì@Ë1µCiŠ¯¬0z â(:qW®á?ýjÙ!›Be¥
-vÕE«9\Û"í¿3i¡&j˜Ü¬ô¦ƾr¼¾+ƒ&Ww‰®…eÜ "G»‚À ¿¡«—˜z­¨X{t@©£Ô 5P¼µµ ¢Ëç°0o~¹ƒ5•
-eEØfEY9xÕµRR"uí)‹¥ÂN|b7|í
-ç]Q n< äЮ~É0>+<ÕC³ $8bþl@AFxȽµ±ÅLÔ§ŽîÍ,pÄ_Å{€rìóÍj°·Œ‚8Ó8vªù2'-V†6àöni|œ–ÑH®,â½9"Ï[jsC°z‘1ÃBÙËÊkè¸ÉîÝvE¼mŽ(ñ_7myÅOÀˆÁï¹\.OŸŠÁ<|ªØ¾›Äµ9„Øp³p53þxL©/Ô‘¦©»[ÔÿF}m¥¨žF_À»]ËI€Ä/Ÿ9Έ›3¯^¶e±SE€€ ö´ç2nÌ¿“…ÆqÞo‹/ûm0ŸÄ
-û ¯é9FøHœõ‘ CbOkXlÀá¾Ökó„þñrëë8‚ð_9R¯ÎÜg’'Ñ=$qžZ\+BD1` þ÷ùªçì’{fÖ°e‰àî\zº««ª·©%K¼jMð~ã·†6–ª8:{¬Rô:q/ÛkôÆ»-èaä7f9Y®1JØ(7!–M„ž•Â¼zš¬_tšV"éì%X…(G@',Š JÒŠD’x¡.ÚZâA%¤³¾4ç(ÇFÉLÊ\Û¢ŒªR²^5%ÄÏ–U‚¢÷é(8y¯V8¥ÁÍð¥oè—ˆÁD„Ð=|^
- Ô¢\ø 0"+ L:HU>=Ø* \ê]&ÎIÈnEô‚ÄIÓ®èU/‚‚Äìx¨¨dC‹#âo¤]qJI+#ÝÖtŠÈ1 3#VÀY$L~|ìF²ÈÎÁñ¦)b?XNìO¾±[VYåTÈõ’TZ _SèÍp\ ;ƒÁ€¶«•„z•«æbôJLx27­?¢N€¢»@„¨z쬡±È‰&s±Az §Åš¾` ü¨<-ã=këæ˜rGIÅ9L0o C²F[ïooÃÜ‹ °ÁÈ­¹å}j@"£ç:•Ê/ÿ0³½K1¼¯q¨ Ãçm
-NÈšÄI?9ΩD7i6 Š£¬0Ut
-ü™¿ëòýûi#ª‚Óƒ¨¢ع²÷Vuóì1„U íàH„Ëjœ@ü•+ÐØ
- â“Ý¥Œ ÕîM‰œF¨0®°g‡râ}MM09‡žòx™P ‚è8Ú­Xä€Y!¥høzÉîKˆŽ›™>oœýŽx¸AILŠ‹“‡ìWtÐî2œ3$•ˆg•‹Ã™ƒœk5y. J'Ç`“›à)Ÿe€øýÅ—ˆG–¼cÂÁ¸Ñ8Ü,-kÈVwL¥ŸË'ÙN&¬˜ïõên¦H¹B|+W×ٽÊ]Øýüý*È…‰ æ»xÓ¹àmE©üoÙõEÙÂòÔÉ I0ç­â ˆ¼09ÞR•uª5MÏÙR8†p%ñ/êS„(Mº/:
-Ó‹ª»±æ¡|šÀrÅ
->Iu6(ðyå|Ž†‡F–‘°e¤mý·,cT\BŠsмzÚFz™³Z›¢i+[Óí{ª{í컑Z¯äÄ ª45X÷0…+'úØ‘C‹¸·³Ï¯ n¡–‰³-XÄ3]ÚyÓžÏ× t:r åáµ£ŸÓ³×‹¤22Ôd¢¡¬ƒ¤MÑ1H〱A^tžÔy
-îA܇& ÂÐhÃc§ ;–¡ï¯z1½Üüdγÿ¹ù§.X^ýðõëíýñnùôx{÷ùøõi©áõ¶„¸íç7˜ChC„4RHQ ‚D¹åæÓÖí°ÉNMZÙ7ï?üÑ©Ö·z €9ÎYi^QÖUâzs¶Ç77üøÝüóæíãÓwŸ?>}~øzûøËò}ôò÷åÍ_žÞ?><ÞñŒßÛ«~5ê7ï·_þ|ûôøù,^^}ûöÝŸ¶ÇÿóÃã}ÿêµõÇåÕÛ»‡ŸŽÞ¾käoO¿|9~x¾~[Å_‹Ú-?ÞMíS¢OÿZV·äåÕëåÇ¿÷ª(Kþeàˆ‡RèHt§„²óÀ 0‰ª>bæ î >xÜ•˜R¾VdycO‘³dhˆ¢n¶‡Øl ëD
-·˜r»Ì9ÛûXÆ^öC÷P»1'ÅŽß 8DÚæ¦há³ÔÂ|8H°ÈUr|;Ã×T¹=@õìšN¶f· ÷èp1eåJYÞábØF-bÛb<:<€Á2‡ùW/—z¶ã—‰0Ö¦KÄÚ§Ñç"—!‰Nqhƒ…²¯„óÝr—jkí\’ËŠŠøc6±'PpjH;&æ D«)pѪ“âUq†ÄÒâÀ½–Úõf¨Çbè œÂŠFÚ‰%nÚµØx̾IÇPö½>ÒFCFnÙ'u`¦imNÄ6”vàÄ·NQ6pô€Ö‘Ý÷ˆ¿&ßn
-{EYÝòææáá ª÷OOÇǯÞýçÃûã¿·OÇ;)à…âµâôöÈÿò7ៃ׀A/‘è…j‘1º7$¨
-ð«ôÒ MS••Y—%6O
-a«ph;[ ˜N´„B¨bÐHÌ ØB‘€#¤Nìwuìzë!ó“Öïx³œÂГ³tn'ßÖ²»"»(„<¶Âù”2;á±TL Uººþw‹—érÍóg¿¾…|?‰Ôï©üYZnØÕtu+dÊà(~#E‰bvv xØêVÆ"+PaH«YW ÓÔó¨^Œø7†^ õh-g ?-{µd{|.ù^g«ùäÖcOD¸Æ…eEŠ|c °‹ ¸BGl µ>ïEve§|gs;á|‰³×­Õ=Ö¯–ä°Õ1-z¾b¹$wNÕæS„êÎqSmpE•‰¦Ñø³6ð›]¹vhe»SaÂ-ñöp–k 1Yõ3¥*e(.òpÚ)D²&¸–—ÝÔ“oŽÇ_U ù¯,§ð»ú$ŒÇ“aB̯$£)O ÑBþ ÀeÀ€fý‹uMÅ9VHµ6`>{ze·ÒhVG_dþäÂ\ºægd]cçˆmˆÙÝBlYïmg/ŒAÌÞ¶eµ=iZ0Á–?ö}nyV@`{=ĉŠ ŠD.óñFý€±Û¦Öø´yûËo^ùk,qÅóïàå•—¼^¡.WüŠ@‚Fx,n\³iâFTܾ>°m "œ9&¿·­~>ñ9Ô2zìÝ1ãM”¬ïæœ!=”j´‡ûÁÛãiºæ.Ov}hJþÖ-èoÔ/ï8@,̤>N†ûÆ8àÚVÜb‡dKL­…HeVï8’Ìm¸L–âá;Vƒ/°rà¦#Ø÷U‚†dÑT3Ž¿’}·ÜjµŸÛ,qdûÈ)uôŽÜ´CÑ-²µp$KDi c¦«ç$5U ””Àîš ïœ$Ò‰îៅ?{Ê®¼«?)¯™µí¸*„‹Qr‚9ÏÒH0ï†cõsK®…¸­‰trf@=g ûµ·¨'´¹ÀÕ¥›–Éjö'êÞ¸ÿ%³ ÎiMï“÷ƒNJ£òç­ý‡3c¿_2Xêï¥2osŽ¢Áæèb÷¨áyFwöì•Š4tü“d[v'èê,W¢èm
-
-ò‹Š^OPa¡‡8vÿ~èåÐþT“³©a+@6ì„—oå¢U¾¥ké5ÝYUí}ûÚ{sY´‡µò[ý9ÒQ”éQ,^9¨£E©·õìŒÒ¼žhÑn(£âû=ˆ/§Œk)«2£q:¡œ\s…u·GöódçNýD)¸¸ˆ ¨A°ÇÝtØ/äÁ>G ó•aaÿš|?c°E
-ûV'¦|gÈ1Ò¬Ñ s˜ÚŠâ÷ªÆ%›Sh¤úZö6*(YÕëaì,¾°ËoÄÚv³;ŠP
-öÛ%?¾)F{d4[¼øÞ¿6›ä¤Ù­»Í)>l]cÇqÛ±‹Š”*dS¬J•s3¨yic]Ë#G¾MFÅè ïFeÚÌR5+Ëž:,©ïÊ[°P(q)Æꈭ_u¢zÞ\‚€g (B"™Ü\tiñÁu$Ð_R’…"91ÐÑÅüú#×—´–æ´h›L®l^±Tp)¶{ÿÒ[÷Xv|)Ðz
-|Бv0Õ#Óõ~èxöaƒ!¨ò¨{ígüf®1ÿð@º?ÞOíK7£mmvÂA#ëEYȨEb©(â>è[âË`ÇRVVt
-(¡Â²àˆšûl Üðð(¤O¾/ËÕ³ežûl@@¯2½‹·eÃùiJK}ÍH œÒ©A/(–ko&9PÌOÓ†W׿떻²=)RlO™u‹™`dŒ±•l²´]Þšá1/…­äHŠT¤R4Š3‚¬HâÊêR¥
-S¿0ŸÀ[¦_Z`Ê
-BöÈÏ°òiyÉÂÇrÜÂÔ=ëÉõÌ+lÊ^³p\2´Þ;⯯i1GäøëJٳ̈¯±…³PÉ×>$“:æÄ6w}<‹#Ù¢£">‘ä™ÐQeÕñ‰­˜æó˜÷gËCq”µuIu‹E¤ã«jÛm,=‰¯Zžä£RÃ¥Ú *³y^)\uR:zk±“¤X\oxüúB•z¹žw-xþM-®ŒBǵ¢íÆe›QõLŠAía5ÊÏàÅW³•Ïˉ“ýضl|¦§]³/§>¦ L-6¥—t/'xýZ/ed¼‰v½ad ËTŽkÚHÖš¿ôw^Þ~˼¹Æ´³\® •÷óM(/'Þ¥ôzêci”BäÈJR$ÿ¡¼6"fn5ÅV”ž}æ}›n:¢.+оi÷W c„
-3)ô«Éö%@Äy0Ûr½šõUÄŠñaÖx­WÓŸ)ÅL1U)^‡™õ1³FBﶎ ع&TË£<^wìøÌZ#oÏeeý¸ÿ„HUd ‘ö˜åwkÔàº6´•Í®ÿ›ðr»²7‚ +mÁ=Ä0Eßëƒì߈oÏ.Aýh5Ýh(TeF–1CÖ‰\šçà'æÈo犷x®zæÉF®X -kG&UñA‡n]ñßúšh½n€•Ô$’•ï·aLÔ¦Ôó¿Žê‘nÿ~aùÝ}¿ƒŒ}
-®†¸¤BGÇႼòâ®XØTQ2H`é“<P¾8 %öá±â¯ûÔZ2§¾•ö²Âtå¦ ñÚ´Jÿ\h ÌËyÒÌ¥ìÓ5ü+˜‰Bº²ÊˆÒýÒ¹ôÕfå!ZºŠC‡­§=m^ <·®žerë¬`üI4ÿQºÏ³¢È°ßa±*Dúu•|ꉙ¶¦Q%‘?Ÿ|-»Ž9gfÓºÐ^"Ž r°D×Î( ÉåIi_Ìì~r¾N q`va²˜¦åØR3dhíç«koŸ5ÅÑPâ©—R¹½{á>”²¶¯"¡b•yçþ^ùï–ÞͱoÌ
-òêÔý›¥ç+ ïoÔ• øNÓƒs¥‹OÔ†`Þnê‚<(_\àÒ¦iÑ×òá
-:mã'Á ­ÖêÉCJŒg×ÜÐeFç>&~Ö
-ín)Z‹¢Á|œµ^ñ.kIsBm© 51F j›‚ÕDo&{cãFìÆt`CSC¤h¨Û½ák@ '²Ûi“"²á3Øüô£)¢¼ýU6ˆ÷€\ÝBl‰FßHØ‹ÓÙ@%)àM¥h4a'‹EôKŽz«ÞÔ1Í4$}©’€-é43Þ)ìd§-/C 'NÁå:l¿wÏõnÞå Á¿ˆ{nêè¸)\1CùVZ¼¬€a.<5rÚׂAYn‹s˜{ûç.t;ä®c¥§ã)„£ÆSsø17e­®TøN%Àoy²»&l›ËždÁÙázÜ£ÃKC)t4ÍÚéM
-]|JEà…ÎW^ú)J/àš1Înñ&Ò,7É3ÝÍòlºU6u\¢&Ós4n¿EÌIy)ñì{W Åô¦z'ŸçôÔKR¥m—b,¿=pÖÏ…‹kSÜ¢½Ì1•ÓøXÁ¾èÐ*UâQéeoo!Ïù/OEP <ýW~¨8'kì‹-åï¶Oõªü Ó†\SZíTO?`8D“Ïpu®;ú»lÒR ­·¢tÎS·«.Ìëó[<sê Fïqh0ãÜžÎQ PmšƒÎ(Ð<«0Î
-éÓ¼ª3*ÚÚo2ü— Öä1/ŽÉ¯’„ûôÑÊÍøJ3Îu7~º°7E‚â¦é+©‡™Wp0§Á“šòØöÉ$+è  pü wÌh_ãÉ".B#~Se$¹ƒ—ûN‚«±è4¾Ì¨ÆáŸHeµÑ)
-ŽFQm³Yd‡‰ÚéÒO‚cb;ã»´©ù%¸':“´8“)¢ì&¹9 ˜Yab™ù„Ò*”.Æ“‚pþûK7ÓÆ8јSŽ5ž4\/þ½²]Orh/Lu^Z}¢èëfê'š«„ñÅNb{â½]Iñù¿1Ò¼* ­üPæëžðgܨLSRvüåÏY J¢›Æ¿ãNGô¡ÕˆhªòU¿yä™ ¢ò½•—ŽVÍ‚t” ™ÇÈgš;Vüu'Ÿ¥ÂsŸ;Pú´íò®IçžÿøE§‘T ì‹·ÿW ­xG¦gQsæ÷ç½ç
-°*]Åa2}I–þÖëjû}u˜ØÞ ²N‡â¤Ý m{š“ù᯦½
-Þ²‚ƒYËOŠá±"œ^䘂{ULkÇLœV,ˆyïקW2« Y¥Qø);•È>\úÒ”yÎYC­BIù ÔÜÃa4!ã@C¶PgäA?Ó^FÚ„£UV SÅR+è[hÊF¸ _ªH4jKI˜¯ûK¤BË˪ih`Õü
-Ü]ŒYq$Ê^n3Ä¿I˜gë±ËƒnJS€Ì>¾
-y;Ä„Ÿk41¸nˆã4Ì@ò4¶;j`%#-íý/`E&¤ò-š6ô
-Ûñžý]Õ†ÊüÓ ž'Xæ­ЯØìÙ|ÝlöÒ¶~%Øœ¯X¹÷î]‘Põ&ÏëmŠv)ƒðXÈk9'ÅøøÇ”€Ç—´Þ'›“n„
-µ2+ ®Á}rÝ”ËÌ:ÃÏßo#ÂUþf¼ìz몱0üWöe‹&§þö6sÕ€4â.˜A”«*$©D)ÊÅðïçy×öIŠí’‚ZHŽíµü®÷ÃÉ h‘"Í´‹c†aTciúHEØ !”çÃ
-ÿIKÁ€¤ÌYÉvGÃ? #S»ë|ÕÉæN#p ‘õUJïu°ŸÑñ%³–äyd´Ÿ”>اz„Ôž=GÄ›I ‡•[â@0äQI¨>p4ýG@NÌ×7«ÜÉ.(‰hø5>¢‡t4Ø¥ATª$•ãÅb‘£x®ôýi
-r“Db/€fÅ]¸ãM-OÊž"P]é o£®\Jôl¨ßRöɘ*Nf@K
-<¤´H¯É>NQ¨=<¦µiçÚÉ}ÚèÍÍ4ëÅ„³ØË £ÑÌ‚f³48,,
-”õÐ+°`Ò÷è–€ öa½­fK´Un¤GˆL'³¹3C~„ „Ý”œçdü±´":¨‹îéaÉù|P¤p04²1«øS3‚†"=“ŸV­Ñ†ƒ¨ˆÃ‹0¶ÉÙÃ"Š0··ñLŠ Œg=ÛA¥O¹[šyØ{§º½K ûu’GÃ
-gÏ£k„9—Î
-®ÝÞ² XãäM8¨­ œ|Ì<ÁØë !RpŠ¾…ÍÀW×½½p;ìM“Cx.Ý+±Ç ü“¹À”4ôr+È›&‹A0ÐÇâöíÀ8bÍàœ’N¦¥œr¨Ð¼rVÈ»(ˆÍwQ*m/fÆJ`7Œ*¥Öˆ åN#cCŠòœf¯J¿ë¢¯$„„}æ ¨€_übûŒïi78”餽ÏðÂÂ'Z sð2m
-Š2w”Äœ h+bhžW$“‚ˆx
-R€;Xï7þ¸í[ûûw;8œðÖˆôMd˜qqg«jÏ | &\ÀšÌRÚ]U¼TˆRÍ”=õËik¥Ä-H\ÁÇù+]c?¥¨`!ïé[ ägVqh`¼Díób:€†7¹*Ô{›·ßazÁXä6§Û+´ŽÅMûÌ jELq#Ú¼ÜèççÑÃdŠ| P‡ý€H…KÕ±{ ÜÜ­W!@¤,:l\9Ë;+P
-¦•ÌŒSÁ
-7Â#/þ$ ª²ŠÍsvÑ+ZÆãw.(Ò[Þ~WΓ‡Û«®§ÂêrZðôdÕµKªn¼16Ô¯»¯U9;í³Ç#V —ÿ}ñîºBMÀ8 –®-á£ý),kÿªÞM(ÌÊÍ=3Õ.Î@&Ç’ÐÉLJŒi9Y!׉ÇèO3{u SFè2õ1-^¦zçòV3œQqì6ßÎ)e EÀ7@îɺN^ðIN\M×/žö™† +Œˆ_ÞgºKÕÍ¥Ætt<—"wb—Äzä–z)c#Ì¡ ~|_òÐSñ¬±.`o¦gdQlå ²V¶EAQõ…ž¼À郵…€Ðë8YÒ‰[òŽ@¸m3’‹§aÀÝq ¾|$ÏX+ é
-}ÿq°²
-©À­ÑØ(ÄŒ#Y,ŸŸ™$v¸
-|$yµï{Œ?-¡M© Ø·‰6bv'ˆÉðj-3ýßN.óF>×Ò³Âþ…Äû D8_eäÓe!÷òg";wÖeãgÞoV¢³ ­4 ãˆÄY\0Ͻ‰Yáû@MÖ`ŹÔÕHÏNed„/p;/º&±Óå¯f/ÿË~{õÓÇWw·7ÛïW7n?>n{|Ý—xþÕ/¼ô„j9
-« õ ® ¹…P,S­sUb•y ±8ü‡ÿäÐTõÈXYs cY’䨂l~-GБ§¦#îUº„iƒ‰dÒɈ¤ƒ»@I ñ,×£ƒØ€ÏNÙ7çÁ^‘f̯· ¬SòtL3Œêù(òè»yRñ„ >Íø'Ü„¾Õ
-´9µÏþEˆ /Ï™¢”
-f€Þƒ&/=™Ñ4ò$’ß%²K£/wÒ£„}ºLº'
-ˆ‡?)aXPrUæÞ2:HiP.¥M”éM JqÛõáEØÚcÕV³f÷«Ã"·'WË3h8­ÿ:í'rWç$"çÔCs–e…À˜sÆí‚‚
-Ð)ˆkl ª€YF®âç¨è‘]L£÷²Ä´j› g(ô^•Üö›
-$á³,òœŒ:Œ!ëB«~,Ïû‡¿Wª˜÷"Œ="õ©"BA)> "êd5åãž‚ìKzo,€«Ì!‘U Z?åCv‡aQD™&$¢& Ŷ ±ä‹ü­ÍÈ8•¨‚©Y›x\ÄÈǬÔI0Ññý¨\f¯I—û‚÷ŠJ
-¥àéR,©÷rÂZ¨ž‚j….»ÁZ¨ €ŽÈ1N:a-¼„kÛ¹
-ZY qʸÁ|
-F<vÉ›3º"2zC~–ÓSOteÐUk…ÈIéq¥«—GçÕÜõ8³Cö¢Š¯Ôus="m§âØ’@k˜ z|à$n°Ö³}‰Ž¦gtôs#"_¿ýª lP ,Ú¯2©Ö&¤ßÁX¯
-ë„­þ°þT¢úõÆùæ)¤¿a0º°ŠVIØÉÊd”쓦
-và@5ñà gª‰… •UFÃå JÕioüfØé­üû
-ÀSg
-8‰FÞƒðŒ3ÐînÚÛS?mOÑ@¬ ³À_Áoœ!ª˜Pk•h­ÎÃ
-ùÒ3¹) Ç¸‰À<Ýu] 4"2‰\[By$ZŸRõ„Êœ¼Ó®qAD(ôÇ…’SVT3ôQkNwG]¹1V£Æ¨èh‰N>y?êi2Þï]#‹L3ýb˜¸ñÁvoõ˜ã=¬wŸéºÙ6{¹Éïá6`µÌE{Ú~”¾0m9`ËN6VZW" ^`\ì
-ÐhL.‚?jŸœÙ9΄)“?8â0RVœw°sDòÄ´}çç á‹èÖMù#¬¦UA&F™x!Ã?º7IúB„1m¸{WhAÎŒéxï«Æt7 „œ«d>>ªã¬xb À›y£3؆L‘"!MEÖ°Ça²t8Uñ¹¯Ky¡&:Ü $ú¢é€{w“”,OÇ#'çæ#ä®D B1L6È$Ç™ur÷ª+ª¡2Ø]§¥Iè–âõ®I±K³Q÷ ÑâÙïhôìµK–^®@Dº¾Tªâ­Ûò¤jWÝ _’nn²d®9‚7h¬È4:¤ÄŽ6h6Ž ÆQ$5†Â$C “Òߘ„Ù¡´žü
-É6ïŒNz b c•zÎ芣uÃ?--XT,}A§E»}‡u 6¹§³:¸l¼ß)«²³:×q ç’ô¤]hcut‚æ„cJÔ«ÇÌäXsTÛY]/ 3ó-Ç’3Ù0¡ ¡CLýÕ%£ °|‹;«ëÞ¢VKöò.VTÏTˆew8õŒÕc1—Xø˜Ðº>XÌÅ8* ­Éð¯´þ¹Â.ÂõEc ²§edjb§õcàzÕ²¤‰’¸Î¸JFe‚ · ˜@j“%ò_ZôÞ¼\Ι̠GAL°rÂ:ÅL²Ë„õµ¿’[nU°Œ¼Ý©s€‹8ü‹×ÔÓ×jÝÒ}ó»i ²=`ö¬N{ªYÞÂì“ÕqI DW¿ Ò›u  ó$ux·IêׄÆk$riRöê2áOú þÁ¿ËéÐ’+w
-H‰Œ—KŽ\;DWà=äúB_~Æ~CïÂ@ªö?íCJ×hçUá•®¬HI$ƒÁ`ý§‰^Z¤ˆXÝçK‹]³«Úú& 2U«óQuõ×ïR3UµV¬.̘­¨ÎênqŒ_…ŒcÕ{_nÒ*ßë.5!Ý´ÄWÔÇ 7ùe>jŸÅ§ë8SËÕ¬KiS›ÍûÅuÖÆæ‘‚ñ^}
-ßq³Œ)΋ã*@V;G´^§'È®R‡t‚ìSZžãcø˜µÌ¡mAº5ò%•lè3ÎRíõóǤõêÂUzí]^ 4Û 4Ƈ²@:[«E›¶á\V¯RÔ½4!?QmW1©DÛ|D@jUÌ}Aòª6§ ×|Ï 4Fon<ç~O›côQ÷Éôëǩ؃ú 6•Ï6JE½Èko¯ÏͪTM¬tëP@S8ß\J½Ã75²f­jBŒŠOeÎÅéeòU$ä*³4ˆPëð}ÓˆŠµÆu7ÉUã"‡Rmšª|’ ʬ= ¤°E\•´:#‰`¼AÖ©¤Hëó±0TŠAš¶kÚùu¯p²åUÚÕárÔqG¥Ãà ù²¦ ¡]F„íc—]¢ýÜy¦Þ;pŽÍÚ.<¤—^hŠæ+ÅÐÀ½6õÍžIêh
-«¥öש˜o¸i\·#jYÇsù›E‚>Ùçp(šbt„bôËFë:Hí²âvzš\ôhÚ¸©CS™ÁÓM-::j EÜóŠ„.Dgµ¾Šà°
-ë³h-¦Eç÷,å$~qÕª£8Åý8‚ ‡Pa{=ßr1¥Ò>:u´SÔ(BWkœüï¿e/Ά†.RÛ‘ Ói È?zK-»¡òüµ"_è-””:ŸÐÏçÐ ®5Zm‹)‚SâéÝ? ¨ÓSälbZE =Ó o~æM¬+9$K:ê}ÈëÐ-@¤FŠ“ŽÕ—o=G¡ªzÓNŠÝ˜oÍûZù&¡ÛÕHÄd<ùºŒJ*AɈÀûN~zü»‰`Œc¹Ñ¿sÌkiwRvG®1­H”Êsf«™ÔÍ÷UEECj2ËùYÌ …”6ÑÙiÇs‚9äÅ{Ì¢…h¥¢7Éœ–ˆÁ‰áØçi|0©Œ^꾉©y­´ ’èÝ„- PÞAH„µŠP˜%ž‚ŸD"ºŽWÑ•(÷ü<õBô/騭bž@/ÜLÌËRÙ âö>––4&ò Ž¶¶Âîü
- <fÁðÅ
-D×I i>€ÂÛê­#¿d¼EÏè÷ \…Û
-­£õq€¼“¨B-iBñ6»È,¥CêûX䉟£ÓÇò;9Q¨ŸÆí'P@ vžâÔ¡/n P ŠºmRé–4Ó÷
-I¡ôùH“-ÄÃ_a·˜'…‘²sU
-6ÙÁ5áG–çpªÔ8¥úI_(:@›„’©ËWÍ Ý†aWúùœIï’´-6»ýäÆ·áZ‚#Ö ì±––XÏÐÉз$É„гp⠵͚U;¨´“œÍšÏa]ÉjWÑ{d7èG­&†! J3”þØ›ÑO¢zZ3ð˘P¸cZ잀-~@²Ô2•B5­Êi„ÜQq–ë8W©Š¥¿±ã4>üñ˜oN1=ø÷L̓Åüž•é÷w:&š«ds…ôÓÓxzŒX;œ÷ù³i‘]…~¯€Ì¨WŒžq;ìŠbÖ@è‚Xê>&†°3£¥u°±&w’˜÷´›0ào[ö6éRV
-”™ƒu`Qºíù_vøTù‡­&iÈòUçÀæîji÷kØlö×Åf-»çì¨Â¾øˆ©±H†Kå¿‘Ž¢Ü?Iœ.a
-^KŸoÙ!LŸ…©^Q;ûFos«°+4ÛÚÕ1ŒRFÜÓCqqjL†ªY&c"Ñ,Iv6=O™<˜*™nØOÎ(y%8Â0/èâ~MÇ$ÂbOzzÍÕáevzˆº2—ò¦»-Þ’M¥—­Ú±%b¢ ›ØòœÐ00Ó—ý$½\=ƒ326äï~
-A†ñtJÜ}Õ¿tæ¯4 |“¯÷¶ˆº^DgB%V$ž Ì k˜~–WP¿pG„ëÈÖ ô¦à[…tçÑ‹
-‹]<ˆ;  ‰Ëõ 뮂1·^aË(ÄVç\“¸£ Œb<^‰O0Æ—aüQf? ìŒ,T†®Y @÷Qa軜,tÁŽ46Z/]Äœ%a¬è±|’ð„Ðß9a›¬’¾Aâ&z‘"SQò¸Èü81—›0Ï5SsYÁ<ò³ˆÄ\¤¡Ü~M¦…ƒˆ>€bþЛð.l}Ô!.C9<6Ö^viFÒjÎy=*qˆì ~層Aè±/ŠÜ²"+…Ì؆SuC&&öƒÁuWJ˜XPÛá¼PÀ)È÷º
-Û:Q·Ü
-¿Ÿ$¸„£ú– §`!’1rf 1±ÁZ¹Ùce$*ùNïEóxå’§—#0´Á;ÊQí€ùøNweZø4¢Çºû­ç`æOcÓ„6.V>¦D.Q¶sD‡Gµ£õ³fH"{§!w¶qKP¢ŒH$Þˆ»èFнâ!IÙ,,« ᨘg®÷†Ç‹‰€JSþÌãT—M7Zû2G“ç ¡w è7@-5cß¹-3yÅØ6‚ÒóÙó‚?B«ÐEu!45¼t„ÉAà kŒ2xg¾Z¸ä"&Ç?ÁƒûÎ3ƒÌÃkÅçyN¸ŒªKܦ4|Æe!(*¯oTô罟q$# `·øù™ Úá(5ë®'“Ši8'ûH ±º 8Î0ód(¦L¦OÒµ7„ÈXõB~k. €¢9ˆ‹U ’6qì1€€ âETð;Ùhi躱ÆÒ–ø4qÊ~´ daT
-yº¬þÀ)"×ѤØ~^F]ƇÛ~°xeƒñ´ý8­§þÏöØCÞxèbììκoöäÛ¦6e‹¡%í÷ÉÃh$P(É‹héÈk˜a¬©ExaòÓ‘,~ÉÄÈβ3 ÁœÙˆY @°ÎàNk@xÈâ2›÷¡3Œª™åæ%Œ[ƒÛ,?°'ÝBå¥F†Gq¾ãj°47qÉÚíKÚ
-ç´ºƒÃ{¶Ð»ñ\°™··s¶8¬ôg¶0 ÊôòC&8 þš-XD2LÃ÷û\Îü!?4²’‡Ü“á«° €°Öµñªà‰MÆu•Lôe5ƒ™_x<È“ä(Gg¢€0§éA2L°XÙW•Ø0ùµ|k]Í/Hh_ØB®ak@ÒX‚ñQsM•‡ÿ¶H„$€äçMŠG@b³i!•´®Ù·U’TCkžt íêƒ(ƒ Õ·âxü AâG²‘Ë0YO—Jv‹Þ0©™W ”Ų0I>”,æAl! ›{;žÃâ°0Ððc:Àe¶(O]¸¢ cz^‚Ì·c·à[xîKi#œs$µ ÍŽ©SþŒU[ØÚ\e€¢oæ•Pøš—X˜¼f_Š¨ñ Y î8\x‘;æ±J~ðæN€IžRä_¬WÉÜC»ÉõöB?Ò¨¤ëXB—úÊMþ¶¢¦” ¹o›ßÞ'A –2 å8€ê/c‡´Äò+%ØšLØñpÕUL ×¢F³èJÖ6ê©/ Åö©÷8U}
-®Ç‡!;WT&@
-Ùa•À×IY¡t4ÀCôO·ÙSP ™]†þZó´Û…fö{ðîðÄ’£€‹}JN ´&ÁÖ.ßÎB1…n%¸v9,™97áÏŒ#fbߧƒI–£&w|¬=ŽnĵXu7²™(µ¦~çG‰>ÕñEÂ4.÷ã9¢èPmû2ü(šéÈ<ôö@ê “(,ù»-}È_“Nj°æŠ8•§yû@Œ†Ù6ì˜Â"yŶll0 FIÁÞMA’Ñ ™)ÛŠDÈ}ÈÅÉ5G浈L˜ž¥Ã¾–:àù(±¤Ó»¥2½hx<=Tïð{û$V¸g–ÀŠPlÔ,oy’<Í2ñ÷êW°ärNá. æ,P8K§Àa ÙäÈoS´
-¿ cPt’™C· p@ïgÑ‚æ H¦‰±½ýä“—ð!R=w%gã³Ùxþ½8‰ß%1WÛîömà»Ç°¶d£6÷Éì 4§øµ²ˆµç˜ÛP½9àÃ4?JÖÞ@r9€rqÃñ'Èrë¾C ¶ÂÁèÄ:¬„ Éèöòå
-™FõY ¼V¶( ‚0<×Ü9$Èfê.ðñ$º@ƒ1ÕˆU´Y^ˆôBk”iÖ(5ƒoÓ_hµ¯/-/r&[\ÿo]ôfìV {šÆÙ¼P„„L†+ÚNæÅ&€W–ÅíõNê~Ì¥¬õ!­H
-‘ M®ñ-Ö_`>ymVÑeŠOÕÛ†BCÛæÂï¥õ(îÔêäf®¶çÇÄñòÚÉòÛ"ˆ‰¥–é‚ŠpÚÖçrà"¢9î‹
-§•î£hûiES?`˜rIGÞ¦‹Ôq,G…qä[¦·“Kš:wÃÛLuŠr2'ßœ3e,
-•ÂH3ˆoše*ö¬ÃÕÊxú”y,iÁ/°~N ͺõ;¦*B&…‘i2d#~R
-]%(ãd_qÊc±˜£ãTøœXáPtZUÒ9{ž†éÿm?QOùãàaÏcÑÅL,8[*¹‰Ù ý•ÍMíN¢UÔ8JþÚf°9ØÞ ¡zsÎ CÍ<€áÿßl8ŒÂú6ý[Áñ–F/—¢Sƒóóø‘ï:}):qÀв`¯
-ÎTÁ¼Ÿ§
-˜ Ÿ,Ó»»™%ó€äƒá¬5¬Lƒ8YɶÏÑÛ)ƒýg”ˆÇ‡ò4‘< ¸›|iEŠ}
-2Õ¬9VîêxŽ|'>i °/…Ήuåå ¿²JÈ°+¡v·8?Y}öÏ$èZôzÊâ‚LW-‹õ¤9YˆUørÛd²0ìñÀ3[I› p•wdP8ÈôýåŒññ w¿d¾”¬Èׇƒ}чك­òïÎO=Æ<r»Ò!¢³ƒ´Y)Arø<;ÈëÄ/—¹,ÎéMŸûwmÍe‰/ý=U¼éïo
-Ò+׬[3‹´wÂ<Ä+Ép[æ«ÏžéÚ x2^Š:êt}†iÉ02˜a!'r(I‚P[Ž†â0ø«¡Ð*’–B GC¡}9ìð(yß&ê9¥”l°6 Á(>ù Ä®Ó2$ì…>6}ôfLB©J8vR9“äWý‰a5k‹¬„ Ãå ñ¹£ æš^äÙ->\‹>gÿ¼)‚0H è7™Ñ>†ïììpÎ+¼‰¬2×ËñÙ#Ô¬÷¯
-$QV¼
-v£8‹Kµ2°Æì‚ÛJ+Ì—ÂtlꉈƠ0%¨¯Ké4rV”ù´ý²iZ%¤ƒjéSŒ§ÀÀJ¤©¬š ÞæÕ!GmfÆ“,2=6àpy!]5Öe±ËTh¡5K³&¸Wã:#ú‡’B7ýÛØÍ ¸Sµc"€v€zñ’Zh¦Ìu6 *ã²yŸB°FÄk“mW8êFF·LuœùØöZ£| 6ÞKØG”RˆÇ@Ñ‚’oûS—"» .™ZWnŒ
-Ä:u…b!"h¥­¿&n“+X$‰GÀvEŒ
-gó‡«Vö„¬{SÒiñ‘¯—¶¿t)šYDÌ:-SÂv2<bw³šÚÎɤV2z y'vg•Ðš Æîisd0b+zæ¢ L¦ƒâvkŸ…|n*øš™Ý°’ª`p™•sò¸ŠÜ­°_˜œá<Ú‰W
-‹Á\SÜÈ[Ü7ÝA6}ÛÛ›dàÑä*íß âYÚº’7Ý°`xÐ˺mtÊ«:É.ìÚQ¦!„Í= jüqÝ¥I‰
-ÂçÉ«z
-UX#o÷s¨:!Ö„®ëÕy+Z4Á )úžZ¸ð2«d¹&“ÿþ€ÄôqIì*
-þƒP|<½ÂZ~
-z×ÄŸ4eÁ7ÿl2qýšé4î¢A]6ÐkÝ5^ZQ½Ë(¬(Sžv^5¤ðfZÇ’ed³Ä¶jQ¤=øÖ ë‚ðK'\¹œ‡Á0´”k0ЗÃsúKBÐÚyqa6itF’1XG´äïtf?ÂÜ‘wë±v,"'c#DÓ‚°/‹¦òfa…p7ˆ©½ Ô?å)LyóûW
-¼œ ì.ecZ»Ô ¨R¤¹E<F÷ùŸ¹ç£„¼ÿiòº~ê³V
-}‰åŸ’Ûð×p/넨Ìéî8_Å,E¨RÂs€@#¸eHŠãÎ'CËݺ¬¥ ðp‡9ÉPvì2Û’ª×\P|9“ KAÀ¼óç„&ÃÈEÛŸãÏJ²cm„Í£ Ñ[[õ #û/+Œ×®*”gb#j¼Å8Ì@ 0ìʘ^@ÓÆñl%>ÕX²C¶ÅŒ89z¯l(ö½6ìíœ[ÇosœèM·¼Õæ>ÆïôéßOVFÛ•|»k«`óìËÛy¿@¸˜)æÖJô¼kØiŠ!k*¹ÙÒ-T
-í±N¥‰›ì¶`ÚU$î•I‚Aú±c„‘Ù9‡l¹Û?¯Ê¥|Aä8‚Îß‹fŒxºp’ùй0ð™*ð««\_ƒ,»?ë{œ ¼›ô·Ö5? Æ`GXC²žy(qJÿÂíŸêÈ™Ê`ÃÛ_‚Ð!E»Óåëp¡beŒBæ`oaÉCš,Á€´µÉ‹)ûþ€Þ{ÿó
-™J,óÒ¼
-/E?sߺ†’h¦áó¼¦$¤†ûM
-¶â~Ý' ÷Mýùd}ë+¡´«ŒüÁCð8]Í·í3ï˜ûëê"´i¨²ÙCÐýu÷Û>À 9§Ñ5\}í$a˜ÌIJ¶Æd9`²ÎL;}b%¼Ùðèl„¬]•Y&¡»¬ÑÉ”VåU <«"*‚…%ŸÈ8Ì©÷Üü~„zçö+/f9=dµÊx
-¬+=Œ˜.ã,Ý=ž
-•Nchy¨íw¡r=Œãë|3€ª_mh¥)„ÍØHÒ÷uÇÜ|x?9÷VwÜX}²ÿb<¼ƒZ
-¶ï~ÝG 7BˆV볩§Ä
-tÓ¸a[1I¦éüý
-“íñQøÒ¹ ø¥†ÅB~`âÓÄk…%Ž ´ê\u%,·É¤ú} 5Ç/‘‰º©…¢æ|hê-1ŒíÜô^Ù,¶kPDþk—XŽœ™[@¦ër¾ä©ý$›‹R¢’vÙ°? û¢IÀåSŸÒÎÁª°[,o9ü–ûôoºOñ­6Ñ.üYà¿®Ô÷µy)+ž Ýb+¯faAW×$äç¯;(âŒÛuï ŸO¾i“.’¨ÙVƒ֋[S#~µQ1=þé²R¸Jüt½wÉÀVW>¿®¾Lã_9œïë0ºZ5¶CÅ,r÷
-m\#MA¡Ð8’u_!#LDO—¤Ü(\á!v 6cIxJr@”‹VËúƒH˜îƒk9Òc€©aì%á) ãS°ò‹Ò #-GK!ø8¢iÄ«(Þgh½ä‡£)S€Á !ÿÁZ¹
- Äÿ2D³0”?
-%åS:bBw‘Ö‹õ¼ŸÍš4t™®r§cia㎠§—ªÓåe†›£2L¾¥ckÊ÷¸àhäŠÈî°">(
-¥D½>!…˜W*:ŽcTk?)‘O£:LÚ&ÜúblÀ3ÓádRY)Ë~úMd7è¿Ë-­‹Ü‰WvTµˆÿY…&ºåg
-vòIïÿ¥¼LräÜq |•w‚‚f‰k÷òÝÂÛºÿº¿ ¨l8%\ ¶++REÆ茙ÂÛsZ€`uÒC@¢¯~ùVä2ðHOOýÚóB%ÕèjÛ¼A<åDgh¨TüZ('zAÝ[ŽkaÙø„äOŒTi+)@32dÂ_ÓZíUd^ŽçB ¬_tMfcb©1a«DW°3—dz½µžïùÙ£ w3lrw]_ÆIJÛ~úC@LSO꣙éb}‘O±
-Õë&Buì.%2p¢¤€¤Gßà‰Ü72Š†NÐ;£œŒÄ-3†•Ü97ëÜã#«oŒ1I&>œ\èí\¢=@~–f[Åd.''A #r¶oÎÎôfÇ‚•
-´ R¡~øJȬ4ëÕCÐ42ÔÁtö[¼¹Qí…
-NŽfÈÓŠU¤S²A
-ò¡-JÚå´ótˆÌ:þ/9Ëeö÷VÐ,¶—d”rûò!ÅI»z²Œ&¡êm]Ûï¯m¬$’¼ã3ª’¨·Jþ0°4`DÄA5ü²)4qß݆R%$õ„t4©ø›J ¨
-µäË…+ú
- C[sõWÚ£»`“Vm?C!k1,‰‰ˆUè,eZyæ3U,R¥²°äÚ l,<&Oú©Ãï•eˆR½¦*ª\´:‡ëÀ}l~Vù\«î§(—}X‡)ƒ“òhœ9ÃþL®ªÆ)Ì/#-g{³­º½|'h“–¡uÈhùô:uÃ(_gd%^Ü Ö&^j)¯Ž¬àñ"†×2NNÐ{4øh’_09!VNX ¬âÞLÉkˆŽ<ˆÈÐ\¬÷îÁå~zȃo%oÕÂXÝ@ì÷OTØÝu¦²2{è:Ó;wÖ¥\ŒŒƒ3—X_@4Ðl²!RO4y}u. =0à– b2¬Ø
-ëP¸ƒžÛý$•èh4œŒ»Çùj2²sái
-[*MŸ.ƒPR©—ÛÑ[غCÞSÒtköÁ ›´OÙ×úè2€Ïí~z#…ël½ƒ6ÁtXYÑSg=Ú>+“I'˜'ˆÀÄÜÐ?iHB±¾tÈ(&jï OF‚#È ‡0° ˜1˜;Æ kH#æ€P”÷ø´¯
-éA
-ÚéýÜÔ[t-Ç!MÀð
-:]|,±uˆ=QËL.Ǭ%cèV’W>Õƒ—Qô/ïËàwy[¹’ÙÉ.yqoûDà\DWµS›´}tõÅ
-`§Êó½1"6T”Ñ
-Ï^ðÔ°|[;A0—| ÓŸ•"ã4,‘Å51Ý]œ…#d8öi ê\Ñ‚Sá™øA³q*uÓ0£89„©C ÈVñÚïoùÙC×d¿pmüóa <>–÷Ñ $*égßI8 ,yQãùKö°àªL“0î£ð4¢•d†'C¼ xÕ_²´ :D ›¤£_6–6ÁˆiêÞ Z
- Ú>JisK" æe"èÔ
-‡÷ @lbÂÌÔ
-!Êóêà L.‚"{ºÕ'ã<‰°%IíºŽ Î_Þw´Âthš6„à´•OÞbuÞ
-ö(¶ t½ÇFE ¯)‡)6.ø;HÛÉ!2FÐð¶O’†WæPjjÿe¼Ì±äÈa z•>A?î‹­1çr¥û»ód¶TIätyR "“@ ë¤/@•sl]%ê {™V³E¤i
-Y{J_ÄŠÉK×…†¡àôhÎ¥é*
-•MåÖ¾‹”rzÜí4
-žB (=| ¶iàx9§¤ÇG%HŽøW1ný¡9ÕB›á› £Å^É˨ÖUg‘`Òôbá}L¥ç
-™ªm¶°…Íiy,DQ³(ÀÇæ·Mâ«â”…ìô"1\iàÅæ¡Ë]»%º*)ñÂ4dÔÝs’RÚÀ(cö£2Ú9“òžr:b4•ÓÎI‰]Šf(ËKœEŠm)žªÉ`¿ŠðkpÛÈÚLû½*A­£m­˜¦$ø©YIdÿ†‹ÒË#tå$X¨/r‰Ÿ2ß“A²[»aC #xïÃúÇÜ2á€PÑ· ]å4%Z-Öbèà†S²¦‰°âÏhó—tßÎ9~|ÌïM7ô9|´×«x™ÒÏw¶E‹X,bà!Ö°…x±ìœ÷û¡(D¬*Yã2?TRi^É…¦,¦¿Y•`A;kÂXwŸ£¸ovéâÕ"(“F"¸–Í̧c/ IìÍj|:}ÃÞÇæùkgî§O§U”Q¯°{ X&ûåM¼¶H¶ƒäF†¢Axþκ)Ct$/ÚÊ›6|ÔË‹
-x{ÁÆÞKÅ)…¶BEUùFqv’ Ö¾
-I-Û5÷9XdèVCï>œ9¨¤²W¡í2á‰!€LGL‡ã±V‹ù4’Ôi×p/a½e_íUn¢úÒÈûzY÷0®„ÎI,îšÖÙ-r%,6@÷ÖT% ærÌþb=JÛmš]TÔ"tô‹4"†˜@…â"6ë*¨.-Úçm¯¦îFm:¢ 
-“pB8º@¡¡`åQòøP’Ôt6•«»õø(ò°N>a‰§8w=ë½"gÿÎëÞ*ºq‚»Z÷¢Ë€×Ù1·Û1þÕ5à~QW"bl9XC1Ü-±!X‡yéJlê‡X Š‰Š”öàÀeå3Qf‹i**³Ë:¡›„ÛP¸G¨‰#1 }f’›¿d F¢ðË
-@¡~àÇ‹ŽsøW< ®c_Õb
-©@¥ëkdh ¶:¹€ô7Õ HGQ
-hײê2>›%‘­¢ls¤Å}Oe;\Xã lÉîÓï%«É·žçÜç c ìr1ÚÌÞ8匥Œ ƒ·Å}Ó u²&ˆxŽòဠ1Ô·WQGLý¡¤±MµB€­]W}ƒä?æXŽý!â.ýÅó[$™Å0ÖÜŒ›J¸
-þ-Is܃$Gl±÷Ñ­¤M\>¾¶ÆKx唕²B‹<1C±ÿ¸="vÓÁåXý²:Àù :÷¥ò/¦V%¼t
-MælñAGò `jWf°õ—š›Ç8È °ia-ƒF½” gbysƒ»¬-ž´+ŸÍ‡+Ã)‘§Ô}Õÿ¯Ö—òŒþ©=ˆØïNéNX]uDÇÈ[~[†¯ÎÒÉ,׊½©„.',:Rt¹V:Àñj#X).àùò¬ ¿†Ž‚Ïõá£ñ\õ¶³ˆmß$°Dò`ž’JÆHÌL®kŽIЕéÈQØ[%lûTCj+«ÄH1 ^ŸÝ¼U14&]¢Š¤ûs¥Ð,¸RÔÉMR¿¼™HŠ–&˜} œ†•ð)x5oí© uÈ.EÉ
-%@nb yìŒq¸g{VÔ²ˆ¢#Ea\š¡e£Ê 5>cçè-·‡a}3ôI%ö‚kàÔÙ…b-;FHã@o‰ljØJ±CÛTò••Í"|55Ô°³2±{‡Ä‡HÐljsRÌP¾¼@íƒ×Ð’hÇ †].ÍÛ»ˆgÜÆÈ舕Ô*…
-tö ×~Að&ïm?ýjÖròÉpÜÖÒ|ËÔmž®8£?õI(kÂÎQèÃb`pªòQÍ—@Ñ^maµwã†v_n9°¤ÉßZZ¡"l ¶Š·B——ÝÒƱ!O;§Éz NØÍ¡“(pÐ+ë*‘Èñ÷b±GƤáUÖx™¿£ä´%N‡ß-’ulAÝ°8‹€èL¤(D|añÒ|Ó¼|/ăI<t S>jBÝÛF9“
-Zæúén®2¥ §Ç.­sZa‡9¶ä²Ï ‰ë”ì0LÌ4€à6ŽsJ(0y2éL<<#MÇ£X9ï¯awY›œV °2ZŒyì-óS›N7öM´²Ë J<¯%çàTe,4N@…}êøç’¯æ°àòÎ5nüY0ª|NÛ%æï ˆ!oXæœ/¿?œ/þeEJ{Ìxb3·‘@'8ˆ‡@‹ß¡1™I.¯.~ˤ?¾D9Ó$OGôbò(ü·Ñ
-V‚ D/]žÇju–«KcuU9}SÐ’ì¼BѡʘQB&#AØÅUåÊ@<\M¦ áMH!>hrA à)Û¯:šìšL˜Y—ø'8¼jr1ÀWSb®&ŒlÆéauG“ DG‹Ù ,ûö^59Zb ª<Ìê›™ÿÑäÌ8°>,,W4/®1ÖÀkFsÉH*!Ic–Ëؾj²|7ÿerV
-O¢ÌOhÙdLaƒÿe¨s¨à–gˆ®(«†äÛpÉéA”"O”½¢›(ë¹#Œ£ú¢ÌÓCË
-*sQŒ'Ê'ªQÖBΘñ˜’Ù;¢\°>”*ŸÖè©„dÕÿc¼\’ë¸u0¼‚ìÁ+8Å'HŽ=õ.4•ö?Í÷ƒ¤u³Ë'÷V*–`6 ü/àtÄúÑ• ¶“¤Uü-{råú’O៕¡]™‘Õ /£÷[Z.®\_Š{äô±÷Ê»-ßjN–{kò»E7_>]|­Kò„žúÉ—QL쀅sþ³ž‹/ßÙwóåÌæ‰fF,eô|ôSˆṄë§_OLÈò@qÕrz<Ø°_’
-Ïïés RšðåÉá{á«ÃhPüÚN jÒº5 ¼ˆ<ÈÛÔ5‘/s@‡%}9rvù%Q1j5‘"MB$hT;?…*Ï$X?Ç´¦`
-c«Ñ,½‰” S¨)½®åP1¿D[gnm§•Ë)Ä8*ùùXl Dé~ø]èà+È6¨\§
-ÿìeP£DÕ˜±¥ÒÏ×C‘¤<¢æX­ý§§F­;o`¼ ©†³S‚
-–Èá¾Ë{±¦‚Yî3jÙbÓJ¨MZ+ðýéW¯žóÐIh?
-ýjdŽsÈÊ©KƒÁûØ¢û3ªB58T%…¬
-‡Èûá¤iü8•ú ×K|/Tüœd Çk ƒH# ËB³„¨
-'˜¡-êÚ®ì4äIâKÑuîŸE4¬½!Ûd±¨ÁQ¤¥¬=²Jˆøg¾ˆÑ(Ò×Ö7…IòAI}½;À’›LoÓHqx-‰–’–!M FÁ±õ~ZPî"y©˜ Æžµ_ÆZp:ÆÛÉx!5DZ_b/2¥<žî¬AˆM Q´„J¢TˆÙؼRÂ÷ê+2ý^Fä ŠÈÓ<©³ü¡
-1VvÅ&I‹ Ü@уÁúÌ_8é9Δ¿ˆ•'`ê@7Îê–µÙ¢î½èBŒ³pª1‚㩨+²#]h°`òçø¹wŠè$Àç÷ÒºfE€Is=TXBP 5¶åŽ$ œGž+Ö¨d´‚έCŒ€SmÙ¹M!ˆˆ¹ÛB›y
-a–ÅÁhGGãb]> t¢höÁVÄŒÝpö^òá-$€!)$’nýáÍ»ÙÂ!ûŸ)GÐöë0•@~ ®¡Éï9-¶Ì…bíc?ç}€3»Üÿ¦Â.±"Úš?’KðP‹|ä¨úg‚'vŒÙ=”]
-®–fJ FH §õ¤ù“¨Î`Éôù´hü ߈
-b¡žü_%ÈæG¶#Âв@„Côó,ñl<Ç CSÆ›fh¾vE.mÄõÜ"Z¶Î{‘>ïI=(FŸM¼õ—Í¥xO(Þ!“Ú)lLKõ ZdS¨J^Bj‹¦•f­ýÅþeC¨çT*ü½=ÒN×ð‰_dÔu¬a(2×JOÛ‚ñeOgÉGÚ5*xƒEÆCɇCØÇ® …<œÃGé<4Úz²… É‡ß†u
-*IS@ªsÖëCQ˜†¢‡x½ß\šý«¤ÈSEŸ^Ä…y?_ L¯"’/ÍFÍú|<8“4[-~9¢F,°µVø¨µX¿•‡:hÈrwÐRÄ" Oy_‡èÂ,Z(9š}¡®ÜIºïආ§’6Öƒº¿s-¡ƒÌOúˆ}bAÊàê;“u0_=7/!Ý ”¨Dê{äÚtÈøÙòþëlSºÈЂ‹“2[È Ž"8°.=àï/8þ½—Ü*€ÀšD:qñkÖø&J%-Ù+‚wÒÃÄgR˜PvúàÇ4 ˜ûD)áBA&Öãº
-=c!ÞØPÙ‰SóÞ{¸3{mä “\ ¬)……rÜi„¯VÅ¥ãqí™nxpž0Óñ’b#|0æš]9ÕúÊ”¡V8eÍd‚n½®OIšµÿ‘Š=vUB2kúÇò2Ú^ ¡1íK2•`A¡
-¨RÙ‰=K¡˜D*Á”ùsŒvêZ¤MRz%æ°ª„7Ãb§oö5…t%äùpâ¬Ff ÷ô\þ›sȨ6äC¾
-ßü¯ÇYDº
-ËKrù/­tu=P(€Ä±¾tÓ0 ¥êA%k=,
-œÐeø°OèŒ"»2\UÊýŹP—5.âBÛ«¶PxFd]#ˆŠæ‰’è•J ˆ$a£Zá!D Ç\'ƒ|
-‚¾b,ss˜°`œ[¯ÁLið÷à ¬y:ÿæ£ó90åÝùh&ˆ’Ø\m9Ù#Ÿ¬%;’$ƒWB`bù¤¨Å€‚‘¢›“1d™`’*Ò´”E°A«˜ämkXõä$Œ‡ó]˜$s®Ì2v};UcÓë†|ß(qrïÚ×\¿êÇÝtjdYL-I‰L[ØMyâ…Wô(b¤PþdÈa¤ôàŒ¹Hzniöà¸[Œ$Qê07Æ>!k>S¦/¸e‘Ø™Ã6²%œv}RxþªDp¸˜¶K6y9„B¢$Þë'Æ'7EªT£‰Ê뙧1s`¬4 /5÷͈.šÅZ 4˜<Vr ‡08eŠ«r(ú Dq.‡PãÎÓÇÃ9´‰!*ü¾ŠÑ¡N”Ïekˆb5)èûM6Ã-ÉDh‰ cvYN vÅm–.c/g2–ë ¼3¢8Å!渿ì$}!xðÞ¶/«,.›0jâ®Ü±•s·ÓP-+‡uÕg5ø]ÜH{M?;nÞÐÔ\Ëçèn‡À‘Y’(Óïè²ä­år˜«AæOYª'@Ú¾±Ht÷&³ÛÈ1#4cLM)fÕ&3?‚§†ƒÐUDs'È×;ÛåKXØL|QaãÕÿƒëý÷‚åIO:Z™¶ê›
-hb¡t¨aósˆ§¨Sñ9{×%Éø©,=  #øôDWᔳ,#"ý<Ÿ£1ÃGáþ×þdhDþÛ¦Cp<ÒpCu_…Y#Z züÔG56s{û"µaµŠOšVÙsˆîw‘å$8Þ7ó»Pž%Óµz°8í!´È®„ÕhM=†B(ò`å ÎMýx6½Š_z–‘Ü-¯Úqæ…¯<BâHßä ù tÛCŬn
-ºL{}t_ŒÃuï€õçŽÅçxøPm¸”%” ¥jdz ­G«¢Â:ÙÝ®{}½óMúô?þ&üù¿_üÿW—É™cðJ0ó„™W’¶uX_)àˆÉ•e…õiû‚ Jyyc* y†aqäÙà\©½ <»öwÆx
-„F°-„îIДU .¨ù@l·éÙD5
-lðÌBPòÃ9M;ÁÎóÌ|þY *;ÒÎOò$P“©~* ì^/btëóTà#ä[Ÿâª;HdʦÓ‹sî_ÓäSã½ÇWɘäY~î«^‹ƒ¿€T{“)"ÙœJl^bb‚+è±U/¸ê¥ã¯Ç¦æõcÓwÔqŠ¿ç´
-ß+üãBýÅv…‰¬tkúÂ=:UöV>¢ùÞ@R2ý¥ÃÈÓ窔ˆ,ƒÀô€d/ ,+A°G‹ÿ°q®Ï@àè¹H—ô®øÓf°Ð«b‹_ ”©îV£€Œû9Ä;:Q$^ ä#ÌbÚ“ppXºãÞMéòA|óÈ#ä5^¤åv¿-ú ¦REFo’¦#HÃ"»HȪ0ÝtHÎrahmñ „|ƒ/UšÍ¾8¸å[”‡”[ âåK“0 ‚L•aÉR–iEî
-Å2d
-±á;´À†V£'£^+~}sm"ÒcvA´ËÎ:9#)™ÐI¶•Ì¿e­l’—}•Q€ûÒ¶.Ì·Ô9áwÌ{À‡™¡Ùˆ~’dÒs@2¿C!Ñf;Aö@tR<Ë
-õã9ý³HѲRK¹¾fˆ³&}ûñrI®ë†è
-²¯@Å?‰q2Ô.2•ö?ÍitJïR¶S•TdC¼ü
-Δíéí47¯ÃÆ~€“ÜìäÁÔå%2G X|…–á㵟Kæã°K­Òa*ú³,ÛÓÕ!úRžÁ†YBgüÒyïçc~)Ù3ÇfíÇèº~¬3d@$;Š—JS™·‚Ѷæ[Ç Q|;ñ…»8&Žæ[VÕJÛØ}ž€‰veƒ%%õß”|UñlþñßËN¾G j#L‘S%e€úç­†!g\Õ(<»ºî„A:ƒËÛ僨ýóÝõœtëys^¥A/sgÂÁˆÛ½÷sEðä”-If\’Œu¶m$MÕpQ/ŠTæ'oœÁúR¢OAøÜú‹”æY‡ Haê¥Ò#±áY«9ÀY²â€þǹIˆ«Ó» ™OÍ£HÀ ¬K…tÄ:^Ôi—A†wòà£ßþ±‚¿IXAÛðh¨EIÒ‡ÛÁ_Kö¿\àm—gÐf
-J«ƒïÑz<§GF…0˜Œóß¿nmK7ý@ ¹ÿ¸ôVrÄ)’Iåˆkc&íÇGGŽýº‹ßé÷äýžÄjà²Ëî±O©Ž±"Bì ÿ,ºþ)BßmPÉ—"«1¹
- ÀÌ删*’ø|—
-áÅT>ùkÃ/¬àR&…/úˆ+ÿ¡®kˆ¨‘ʸ£1|kÈPj^RŠ,>+fÐ]ÅÐy­†ãRÄ#–„êd 滧BÅQàºú¥èË*¼ÄUÀ.Û)ç¸5*UBäíê*‹+Di{:S.‚þâÄ`ú‡ôtEVèâOZÓ"³QÄ,bkC©-ôU ©IP :_‡W@•Löf—iØ\Èx­ ËøNkJšñgI§…ÁF+9-“ZŒ¦Šà/“Ìk当h™î¡õ~'G[Ïm:üO÷ÖšçìûSü¿Â +×[“þ¶‹ÿ>®Ã«ëݲ U»hÔçn ¾ F+ õÛÀ«„ ãʈƒ9J˜?`D(þ d˜
-át±+l‘ÀÀµ–høõ¦.Fì•„æQ:äŠW vïtK~ºYòU¡(¡¹ÉMÀN½Eœh%Ã,Ò]è(ß'ÿ¢ñGS!iÚöRk¨$y2)ÎÄDÓǤ4Ì¿ìƒ4†I«åâà~°.æ­eÎD¿ª±×nvZ£
-ò›/ÚL0-˜û™<Ä`ZQÝæg’‹ ¢L^¡b) R*ŠàH™¥ÒÖĺÂFh§Ûžðæƒ~Û"Þ.fÕåü$‘Ä¿‰´ÀÏ’Ì]Ñ&HýF–^ŠÞ¿)R&j '$±eéQ"ÐER
-­%fÝ—A,–šÓŠØûlFÈ‹ãH[iyxŽq°s()}4çŸãòE¼„Õü­Â—”µT’!ê%˳q‚dÀ…1¶n%z(^Êv"ºx k¸\ïRôq+ò×Ìz`<)Zoóä–|^³IH3q¥í Oè5óŽž<Á]-äƒÀÚŽøgaÛf
-â輶G"1áV
-2R”àPÁ~ÍãÖöÑ‹nñkë°!þ|\!‘Ôèíô øÎn Â!Æl-~в:gׂ¾dç³ uKh–<9üp]‡^Â"ž·éiÇ¢:æ‘Þš®í uØR„-þ.I,Ð ˆÁ­h&ÎÖO_ÔDW ABvŠKUsÆOí„Ì—Øò(QWàpžY€;'ügQQÑ 3ŒÑÇ.â˸Ê´ÂóRË>žÄ‹M•Hx€Я»„NKÐ"¶c{?@~e‰Øºò«’½ŸgÑ{ýøþŸNADI:çöЗ<ùùMzqê=D
-H‰Œ—An\=„O;øó J")­3ËÜb€Y9÷ßÎGI/ÿ¤v€ q»Z¢Èb±8Ú‡ÕvÉT«¥L­:?þU}^£Ø(M«t¯ÿùaµ^sºTífm Q.)R½Z£ÚÇ‚”ZæhÃ}Ô ÑÒG³jÎQ)D®"2¦‰©ªÜW=@}Ôj:´ÐǯÿýQ>þ½ e¶âÖ¤VrÞïT®ÊkÌ«º¹ââ½T-6¥íxÆoJßã õ9¦JßN%ª^zv‡n¥“7å˺kŒAäµ4^µ²Ýk«£‰ùÜÒS¸—s, ý*¥ym}ˆ¥¸ª_:¤iá âLÏÑ«[Ô¶¿£iFEÇ‚´¡f]
-©“ýª:k­2:dðu•^ÞFï|ÿûÙ4ç|Éö9Sfñ1IÅГc?ÕZ—¨³K‡RÕ‚3lß ÑÇÏè¥ôŸ)ˆò uêQkë2WÒ×'¡vßme¦D/Å©¨õ>)ÚU‹Ì^Ä!J=/ªê(56ȤM¨1«Ê\µÒ©<‡ØlB± _!ÑÒv9eÀ6ˆÑJM q´h£Ñ($>-r¹v'çÝTN4U4ˆR»nŽÖêE`~-z%F+yë>ïN®î½nEvnl˜ÁIˆ»Î‘RtÈDûž Óúâú yvÕ6@Nw;|ÑžÑÉ<á*.[ĹÃöh]œóÕÅðÉZ#ÀF‚ù•`Üh ƒüPƒš-Ìã²WÐçw"Z‹Er
-é´¤Å>ˆO¼ ™é2²V¿ZEY
-\$Œ¬á jß\N{.ÂGÓ'"®ÉOÏ™­EåFœ•® Òëè¢ÐU}ÈVLÚ™Pgë‹8휀žE#žFnè€ }¾â:‹N(
-·’˜(ùPw„ü# ¼¥¡®}ê¦H̺­ Ti.郣´…<j"1a1=|’È°¨œK
-
-zÝ'€ú¤ápÿ¬o%¼jFÊËÄJYË·@N‹¡s~*Ø(LEwþ(=‡#5îGî›)ºLÚY‰vŠ•â`bM»˜ü–âzHqKyÔû̃7Ù‹žü{dæÉáG~3š¿îk_7ÌŸ}­ Œ=¼
-ˆ‡Åòâ;×/ûZd äXþ?³}-
-ÂИð}Žt]{Vþiº‚`-¦T˜.OÍ[pß‚yÁŠfÁ3j1“¬[ù¶ˆq$Â{›fÛ"b«Áªßõ׶ž¢j¬~ù¶–€žÛZzÝÖˆ•ÆŒT]-ÙÖâáxÒÀ2QF¾­…^¥`5´l[‹2Plò çŠd[V*•¯ÛZ§Û™ò¢)hQ Bb!äß»ãÿokÁPÄ„Š`‚Dòm-˜ÞWR¾ÍßcY‹v!·ì<˜ßò÷²–¶Ýë²öuoþ3"e™
-JBïÚ~ €E±òRJ˜ÕqüMÇÌÀ…zÌÞx+Š¹Wš’NÒ|ͦ¨<9Á©ûŒÓÛ17…‰=£\˜ÞÁ4Ð]<G–@â*>j›ŠŒ IÏÁ³±p ©hçá¬Z$’öñ±¬E Åá”MCÞMßUþóG
-«8VU´pÙš¸+ä-z Ÿ©£ÔœE릭»bSéÎúP=]žOÖgŸç<ÊÑ°Ý”xøX^åQÎnLbØ÷#|—ó•ìq,l\Äv"›¯äbD_k4 »ëî1èL9W}ÁäföØ"ýŒj8ýÁ!0^ûž]OЫ²–»xžŠžÝS 1VàÍÍL*ýÌw†æ–Úûè'p‚FŠc‹jg  ^Ö¹›Ãö9xDç$Yí›ÍhW¬Mh§‘Avåa¯0>Z,zé9—5Š³8Ñž=\HJùx/Æ1à8XZsʳ'Òå5
-Œ¯ ¤c؉0“‘Ä]AfÞ°Àb—· ”&<‡‹'£g·!iÌÇàE-=d1\;¾òÑó¨F6zh²‚P”áaé96®0ñ[,
-÷è¡7zsV× ‰- ·ÏÊÕÎ)µUÒQX·‘€©bËwÖÞÎä¦T¡ª”luü“î!B8¸Ñ)’BÙDô z_õEoE"× Æø2’¸DÙçF¦š PH/rGÕÖ†ú
-úh^Ý¢—0NT:HäH 3?–ˆ¼JcfÇmt¥ èó;1íÐcàB†½Ÿm²¿7ˆRbí¨Ýªm4‰ ¤Èĺ0Úº…`P§å…¢×+\"…¡˜¸€ ÝD¹‚¤cBpì°ÍÒ¾Çà0ÇJh
-*¤#=…~Æ “ánØ4§Ž·>7d¶F·`§ÿØÑ—áÂÄB c#èé9ý‚!ì°
-ƒ’F½¡QÕë|ó*|ºÄFK·hz rBcÃMFR·TõØÜXc ‚ÞÂ×Ê™-ÌFÊ]Àj–ò1Ó:\Œ ì‹yšÔØX?sÌ_ë^ ˜tt§‡µÚkcƒÀ¬¨…,HxÁ"š‡Sˆ:Ä*µ¨¨ VÕŒó7($œv†Þ…˜±Ä`}÷~ñZó(gx‡ÝÅË{Z0¾s÷7ç(‡+Œôqæ
-Ý-a·…ÀÔÐUèqß· U§ÉΣ‚€•Õ€ýLow3`dµð¿eŸ#ä)`ür¦)R‰…6þlMpsaë©‹OPRrzOB(¼3óù• Ž uL6y]Ä
-{Ÿ±Þ4êø]Ы*~GºïÅH‡]ƒ˜˜)î5]Œr¯Cù,T?
-©Ñ¼$È¢!KQEtÿÕ„½£ÎK–
-x¹N‰ƒ5÷—1~)‡• dÏ“ ÅÖÃêyLüy™r¢G=øèÍÅG@›Ô³27©TÞH´ ^VpÞ¯°ˆÆÉ6Šp¶ü^ï`¥Áè¡DôÃo9}/Á$t|,ý½¢QI¬&Ý-Ón— =9Ö•o›Óäáp;Å› cbç’¹jä6‚É?M EÒÚYÏ\ç
-1ÒÊko Ü‘ä ìv¸CÙ&©o·äs똶Q4λ
-XMOAz) k²Èˆ9 mpû™0(˜¬ç¡–`×dž°Iï’$Ÿ%O'³­èT4ùT¹é•Î`6Ýß³ Tð-j0®¿Ñ#2‡1.ÍÏ¡«6eŒËíÄA@£qÍöm [PÂïÌttcfr ˜ò ø¼‘
-Bg’Oy©‚±ä‘t½+´ÒÖ%/˯³°ÔvP'²ãÌûlÜ ¶S|;Ìø±„ôpœÛú9…!F£Q>°ÎàXŸÁ±¯=<‡†‹¸0º².Öµð,0¤ì%ÚàÁºBØçSäE0 lÙYÿTj–~ÀÝy“@¦b‰:‡ÉÊòËÚðr¡Î¶¶&
-Åk TŽZ;DŽbÛ—^Ùk| ‹à%fù3åŒx¦?;|us6ÁZGƒ²‰{Q Û¿Ô÷— 8ôìf:ø "rhÃsQ¨
-*ëþÒ美¨†ìÐð¹½äss?Š¾~D 34ègÂÑ®C
-Â0àÆæ%Šˆ¨ð:R0Ò•qD .wB—,. °9/=ô—Ú‡*U¤Æ¢uaäÇh8©a&¥dÊ;Ž½¦d‘™4-X*ÁðCkÓêÕ­W =à%ìOš"U©}w#²°<6¼Í@h‚§‰eß¼jzÖqKX{ü*fÓ [öy:Þ£(çÊ Lé¸oBÏ¥ÕàÐ"4»Ù4fõϨèªÿþÐ¥W_@´ÔëÃÿ¢ˆ}Ãx´5ùoŒø×7Eô¯ilK1ïKâ#Ik^÷CdÜ;Tâ8BŽ#®Ç0¡oj ~Ï{80Þ8~¥Ñ¡£ø aÉB›â%ÚØNôk©SWì…Z©}ÿ
-FÎöÁXP%Ý©ßçY.8ÒfÀqA‘ü¼Ènöó|¦²dþyk÷=ÎŒ«!S8¶¹ý$(`lxL4Oµ°‘
-×a6âaaSVn²PØÙãAט 'k^2ø ÷
-Ô\ù3rrT¬
-3 nÚuBÐÚi
-ÀP…ePŸëMqtÈ–ÒZX@ê+ÈÔEžúçGTD§ kyˆç4É°ˆ^ã£r­½‚ë~fØàÙY±<Ú•ßið{÷dvD[|_¾ãµGÁG©ö»äCÎeMÖþ°s[À;›´z²Ÿ¬z±²º×9Là*†Ãpä OnKß+ZYö£hºÂÊxêS0_jW=‡Yax©ìcYd{e˜åW´t¼Óð¯|Žÿ5ßÌçú~}ýˆh@²6
-üÏX›)HŸüo™ýú2Ó¬V÷bæDÆ@„¡ÑLü6™éö²(=íÒ+!}mzlDØ
-± é $Uj*0‡¼oî§9ž*e¡³y  æåpYóQR’”&x¸Øó&‡`µð£
-…ƒ'(0*Ñ䉹’¸ª]·zæ§JÔ|È)‘så–×>T±¿@Nôµ+ÛâZxq{Ö‹"átž‰,§[*°wbƒ_
-jl 5Ûƒ-”@1§ÉóØSùçy 0<Æ!œåš<4Ù¸• xxêÀìáøš±1cEH=µÓûCØB•˜—°’niwÌ߇ø›Ì>Ê ¢õÉ›+F¦)G°Ê¤¶¦ ö©B$'Ó
-I_R…;äà7u‹ØPq ÉÙèY„̃¶ ø•Ø—4VÅ¥—J“ '×á…*°êB0Tï%` .…9û`¨†¡h͉A(¯&™ÐÌm©¦x”f)&
-? v™š7™ D ØUÔµST¤’21˜È&€<‡™¢,Ücf ±Ä³Á&딀JH&£ìåÒ†Y
-Íʲ¹É¨%ªÁ5&€{[àG Öž>Og3ð6àGž„/©„áÕ£Ø|/™9;âÞˆ¢
-ùaƒqÖYº4”#Ç¿—é%»(è@iy BXñrˆª§€[‰¶âG ÝìÐu©Û2lÍq}Íÿžøv®€
-6ÍÍöd\Š%u\&¡®°9S©€)€y°Pa‹£’//å[=‹ ÁV+âñi@Ö`HÁIêonE³Q×UÉcãlõìN’e BAOÛÖa`E×hÛk"øjÂðɪøS1µkˆ®A‰£ÓÇ»X0XoÖ­`e—µ+:MÀÇ­" ߺLíÅßÍÔ¯kòHTœ@1¥ÜýDZ“¡£!*¹ôæKÑï¨("Çv÷¢ÏŸœI¤‘?þ¢fg
-™CL^;y /Spg<Sóã?‹Š‰X€(
-J¼Á`¥(ÑÁþf™wH
-~ÖPLÒÀUmopVB`û¨g<©JR¾|+0AÈIòù§Á(~Û¼¹™ÿˆ•^M±N„¿)A 'íDY÷ïŸÀXˆOñXrŽ=èvj^šâ’YèõŸ°CÓõ;jïAšâiPÙ§I¼žº{™òàxÄ«M$^¼‚qÍ…‰3içàıÇ…ÒñûD2³¸¬µ¼×²ŠÐ¦|°— >)'"°þbp¨Œ4hYA…ç莖s¸ vw¸{_ö!—.'O‡»¬OÓ<Î cìºeôAßø…¬
-OÌ %«:ã¦)6¸ÙðæiœpSº¦ž)P}íç¼ü_ϬxTÈRW¼ûƒ¥*…)ȇþºkdÜKéÒ%øk;,ê ‚ÀŠˆfù#Øq$與=&¤±%Ü”l´KsLZáׂ'+P!IÌé%âÙdÕù €ò&HþíYâÉCCÕt•¹×é°Z mîÝK€TÚ24$€j
-Á<@´'€{Ìqè=±.ã—®°É2ñ4gÁ¯À˜v¢jQ,{ð@îD'".Ȝ׋Š “—F·‘Šø0@b!|Á^Ñ¥ZØŠ–°¼Ž|v©ÈØÉéJÚ‹^Á™'»‘t&—âÈzÒugK#7kø–Ó=%!?°j*v> ç[¢q¶ó7©!~å#ß H´”_S—‚
-¤ Å÷#L<b¯•B`!œPGÑ‹Ë´ìúE.”ˆ9øjÒ®ò
-T¦ü°­D
-
-ß-4(ÑVÈ ËÀsb@Âu³‡ÂUZ+>Í€WÙ…oÍqmõ¸â&›héZ »C _h[Í+îqTòå­ÎV"ú‰VàQ¿ø4¨I^X¾ÙßÜj-ˆ`°d¯|«gwø¤¹¤«A‡e/épÆÃKWƒ‡ºU8$nï¬òÍ—ƒDÐ{\'‚ð­-Ñ Üšûí@ýŠçNìLdaöaý‘ã¹£Ôá£+W+5š;E$x™/>r^py¶RÅ/l—j<wÆQä*¢±S8Äè­#2ákÞJ±{®ó
-”êrsÊn“ýÚùUdö-æ”e% ËÎ #yVÉ7ì¿Ì>ù5’ü(ZØÜ~¦aEñš§­tøe–—=% cO‰­·EÁ;ùYÒ‹£BmÔyã ðpI»y£AÔ“ Š¶Né£È17ÕKðј1rXOõMIZ¤µT»qvúZ#ö×q¦Â[õe Ÿ$˜ëòQqàÇ\š9¬„oڦћÇS`ÕØåÆËG²c‡¢+¨=”-#ó`
-’Ùî_Aã{%Sû×¹ ¾*B BµnEÄ#y²*®åW1Ãü!‹·ã"ë±’ö?¤+¯Óð*’5(J1„—PNb^Aa!Ù=¹[Ÿž>{lm<ˆ¦¬Sm´X$UòóX²³ÎzŠ¶XØϼŽ³E(aÑÐ`7í`º¨io`Ã"–óh/fœmÕ®vNƒ†È(ÿ®Ëke Ù¡5ö¡Oö~ Á8ÛœxY¹æX€¾"BCÛP)ŸëðxEŽQ¿ìOžåÅÑ^kôfÄOrÂ}|$Ršð–ÍK * ÍÜý€èj}g>™†ápäªÍè|2+R³\qëåâЛ$”,´vE AZ"Q23ãÐRo©¥%Rf¯®$’8†ukíñƒ ó:Š¸š_Å|  ¨ß¯ïþN…¢¤ÌEh0G{æjXtæÓD¤“h©ؘßtZBtÓX4;'ç¢fRÎäC!ÚN™vz>ŠŽ°0Õ™ºC¸"Ñp¤zV¿Šê%)¤b·K šÇ¬wrÃù*ìùëetIöˆ 6ȸ B˜ªN?Ä”¬±S sR\´ë•çméÂñÍŒÞ`.C^iJ\5Ž£nt¹Ø*(±ÖPIÕ脱!ƒU¡ˆCøf¸Œ+HdñÐJÞÛvY—w Rˆä»ÏÃ)$-¥LGwêÌ3ëe{‰¨öv›ªßs}Om¼ãéhúÊž¶&–Ä_á¼GàŸâ2„êó2yºße.^:\‡aà÷ö8ãÊ[(Cý<~
-³[¥GÌ+/áeK3O—É`lðë
-€¾3†¹…ç0ƒh )p+Ëøkª– v ~;w}•ü´CZ–‘ß<4Bù8æ˜ÁV‚¹ÇH³ãMÌÔ—ª\<zh’[`’íEõ5f’IÁÚaê¼v(Ç)Û84Übiíòuei¦
-¦“Ž®à\ŠÛ„•Z£•G½`ŽÈÃXÜÙãî«“zºql-sxZxÚ˜ˆ~ þšœ*¤AË`Àø(&’¸íªG8Æ”âárº„P,7‹ÁmëÒö0Ù—’§d,”qƒì&îÚÄouyœQþ=±ÄAˆý šD ˜°íºIsØ’¤;4ùƒ‚¦vÜSÜ!Ñ¥óýo%ªÄú©M`8èùºw@’32
-¤G8ÓQñ¤ˆ¹žL;T¤i3DDR ËlÞÙ»÷mê/+x
-
-€ÐHB¹¯^tþ–~@´)©ÙJ.W>Úh¢Ø>Ú 6c-öªtÉÏ7ȹiV¬“$åç`µE±“vö+…âäR%tù3h„ L¥¶ÇÙ»ELªJ»Jösä+Cn?ÆôZeY˜Û’C™
-x¿î-Г(„Üzá“«‰éÛÖ‚H`î àU´`m‚?+o+åmPP©ûuï€"‰@O„ ÐÅÙUW$0ü
-ß‚ÛPÍ4_ŒÎçVRʉ†cSÎò¤`
-çbr²XˆÔ^Œ6%¢$ ¥wxçÖ&ñf(0·FDhêïXåf-/F·¯,-‘,†Ãwe òmÍ¡0ˆy+
-‡ÏWûñ{EíþêÖ¬,qaús¤/ù±ÙéøjRÛ®±¾dTŠøÓ»Ur¨/Y…(úîºöõ%‚ÜôåŠfü0¦8Ÿ¯zðï~Ý[ @_~+¦/e>”
-3Ûbš¯ ‚¶Ð`µXC‹¯Iišª>C~Ú` ÛTVÙÅíå¶^’BΕFEÝ¥–í¡á}æ¯ÜÙHæšRÇÑü¦¬#B=7ÎÔÄjÇ°Ø1ª¶¡ë‚Ê‘š¨ÎóL»¶Ê0z<ªQ>
-tâT°½
-øw¿î-Г&ÄÜzIjòçß@ êÔšývŸæ2l„{B ÊÔ»iL"* ¿‹Ijm Ñ#Y¸˜âÔE)ç(,š¤A˜ùÄ •ƒ¦¨¹Škb‰&¥ù{*”bΙ?¿ªÃ äd*k»r@
-¤–A¦ÀAW™‚ ÁMñª’ëì€uZ ‚n|ì7§Ùn Ä[`­vø#’úä Ç}7¾åaÂë…<?w`ÁP \ÄcS_Õ0ãi0ØjÁgh)B>Ô,s•+
-¢ÛAÕÃí1w¨r½š°£DÞ]b¸º´V²=MÔ‹”Jß÷4M×c)Xe¤í%?}+z¿•71Áâó“-s~ºÉ•˜,ìaø+y¢­¡tJ,D&—¦»[kr`»DÏðØ<ü”Äí$¹þ-†@®‰½W_~Ž 5-çé6¶Ê)ØÈ“`³7[²=©JklkÀCɆ2C{Äv½:Æ°KºWû‘ïLÎ, fî̃$ñ#ÐÃÍr"/>áCºVH;™“ olæ¦95ÈÒi1HA5Ñï¤!%vÈŒÜAJfª"Ør.ü­èãEœ[À2”ìH ÔÀl2MØ¿‚Ôq¡¾Â2˜8çòÕ=|$ ÕXð%FY"4 –UãFu¯§`&ú' †ei˜ø àPx9Çmâ^ãKô—~'9›r@–¹s4sçñ@æ–û˜Æ2²ø¢ó¾KJ“Ùf^˜÷ Þ [÷±_J¡ÌÓV·y=‡WN%Î)³—á&$Ê‘Ž‚o!sÐnÎ7]ó/ $Ì gÕGûð_¸žY{÷s )l¿ÂBë1¨º<òLß–[ÅÀP+ÈNÏE
-˜¡Š ‹Ä?v„ •Ù-Rèß¡w0ÝRã)»Zøªâ†¹ð ‰©ôëh‡¾Â˜+žv_ä¹ä)”ü(¾Çœ"Èçú
-?—ÿôé(ßÞÈB%‰žé--Å:ÀË佊‹O%coà”uø²eØÙÜ|Ð/›S­“î"¸e`[_+ºZ!º–hIþÓCù 8¶ý)Ù˜ŽVøÁ[@:4ÊD9EL0Þˆ,ÿèãRôþ¢c½’¬3ªîtAÈdûaÿ
-S$xx¡"¹ÞÆá/¡Ò•mb'Ñ ½C3¨\Šbû RéÆ¡Óo„{úo ^´³Rq•–¯Ç ì~U;W$Kj>¤[|=Ì´Àé®
-µd,g§4Ø…Iáنŧ8’EÊãl85¦ØV†Ÿ3†|Á ¬ø˜…HÈq‰ÐÄ»ô«äÓ`´"7km,8@±BCårå/B©†Œ
-Ê*š[KŠjk7yÈ2Xô8—uå¿YT„+¶0wC;l‘Ed¹F¨r²…«àQ–†®å 4Él“z䬈ŒÞ2O zÉÚpäL
-—-<.ÖýR¢a˜›AøX®/Î)S>^™f¬Cp<"E˼BWÍè
-/8núkîò®¿ÝŠžÌ
-Þ[Ô ì`’õÕ蟋°•UÖf㼈ϱÙp°žöºˆÎã3'ÿœëys–!_ãøÀ/Ðba ‘A†MžU*^¦7
-š_‘Æ¥—øæ/R¬l—ÐtÈJ¡±Î«ì±†K¼e¾€Ø‹…/Q4á,?G_.ÒÆ°Îød.)+*•½£È¤zY{ %±£~æUÔÔë9ì¨"‹r‚xc_ùw±Ä†N×ø± Ó†‰–hY±c#ÐÄÊ:°O_î«`Ol™S lu{bÀŸðªsŠ/l‘ G¤X1ú.¡{ˆªÛ&èS€ ¿=¥÷Á4÷Þ鈪K7wkHLÊ1-¤†A $gÓ\’r+u‡Í¡ü†i—ð ð‡r¦§Jö@eà±è™‡®Û9š¹V —Ï‚=aEœNö
-ÑgA:¦|â[̧Áÿ(7zょ’=rNÁ„ð¦ÚoEÎK0?–VÚóé. ‚Ö¨ÃvôóÛ“þuXX°Ï}°ôÅœió¨t„×˸o榴8¡uÿÜȸzPj`©g|éZÿczP_È¡ažåtC
-§hÍá,2”ï¹½¿(*2jCD‡2|ì"+2'²O9rð­d¥îp0] ÍuF¾-œ«¬›è~”0®Êá—„ò! 6îàðPXM_IGcÄ÷®Kš1#J£_GõãÈù,Šë3W©—åøô‘-ÐÆÐÅkfÔÄÈ®,,vLàDàs—è©X†^‹…Ùeâlع˜]=?ùU|”EBcƒ&Í`(¬¸7}%<€I§âߘ]ѼlE ‚T$ðgËJe¹íMÏÏE¬PVÎDËûfç燲Àþ©ÙŠr€–ú$Ê¡±wýýn:•štªþÇx™äÖqAôºƒN@Ô”5¬å¥o¡-yÿ­_Ô@øwç`‰VUçÃIf¸D™Â÷±—â:Î2#‚BjŒöþ5TBÒušz±F^ßoÖHqr~#ãÜcpœÙ°ìJ¦ÇòVi%Ž õ‘ýXNÆi¿ހƌ ËëÁZ¨ ©cª_->M©•u’Ã=ì7Ú[[ "^doê1ØÄšQƒ÷þüºCnVØ«îCPdÈy?Rƾ¡Ly£†qñä$¹™·R(³òøAZ#Ñ'0öÐÙuÓéÁB,zß#qY:²!j)çgunôÁ ªàX‡}Œzað£¼È¢òwY|Gr '(bªUô¡¹çäÙLH'Ôökº©bœÁ›è^JçÁ _3SÍZÃWäš‚üXˆg¿Á`xú6Ïa¹Øö!K´ETÚg
-lX»5´Í°îprÙ%.Ò>ªÊäž¹P‰ù)¿å¼xÑ:²Â´a®ÆZ†ŠÌ³©¢õUdˆ.QŽÖÂRÆùýÈ¡¢[~fÈLTÖ–"øBúš ¦"%n„ÿº“š¼g+
-µ”Ñå†Á“SdYõÒ­hx'Ì"oØ݈6AŽDša_…üÊrôùKÂËØ\zÜ·³XZ_™“Iµˆ¡oP _ÒfüD£ÈH+O1\FׇÂM=½chIs°xŒÍ,^‡0€q;>›ŽËEG&d¾˜™S€ÜZÍ|b0ïe2 F„beRÜ6õF`ªòÐîÄ`ø ~¸{q•ªa6­DTNa\šYWQ<ö¾±\u¸ç`>³,B7V”
-èE ïc7ÂTÂÃÉ°²—r]W
-#Éâ4ªäIš&y,Æ¥ÃR•$)·Z{ÃN¨Uä\@œsq9=¯:¤}ãCPdJ¹3zL&Kt½îú|²¥ÿÎeƶ3àt 00F¼[CèÀó\æ;(Â&¢Îo=Z*%¶ù1ˆæb øCÉñÈÿº×=©”O£åˆÎ¬‡!ƒé9Ù´U‚àŠ”6)b¨›ÈeZi ¬ÇÆ”²h}Ÿb·‰¹l¹> •áP$ýH3=CÖ0¹²¦jHªOÑù (tb"†œ³Y7 XÇL²ñÍ9¬Æ°²çbÔã
-ÙþöúÀOP$>$̱Ö'p0º  gb?×s(KmE=áVÖ—Âw
-‘j†„¤OGœ^•GÕ«´Š¹ÄïyÑöïì&Z™%z©-¢¿S ©®hËð£T"cÅbž´U½•3߯‘ÕdÜqÒ¾JÚÑÄ”½ïÒÄ•O} ‚Ë¿m[»1ÃäÓOßAàþÎ×Ú,ñâŒ:ÒÍ÷.
-vAÎúݯ{ºP‚¿ZФ—Ú>J”„¨16ç¯*rÚ„ €)Œ@a˱j†äìç8†‚s¢¤gYkŸ–«¶ç$”W'
-;œ•tWÕ·Èéy¥y˜ ÉöÆR8 Ë
-~>ÙÓµÎP?‚ÁÈ{½­­‡$!Ï6×ÙEkY(X>Kx¥¤ò£löHÍD&sÝ„MÒ°CB즈ñé6iº*Péò)cÄ X}¢—Ĉ8œP“fõ'Ä0XD)&³ÊºÛX¦þ¡‹°
-‚›7Š[ ó¶-?Ó;$øiÍ  ÍaÍí]0æJTÏçÍsHSKcªëÖme /ÄN¦ê tÓY§‘ IHîäÉ,Qû&ÞŠ?—JKR€àáoÜÑvЯYçÏ/“>¬F®ÒÆ¡Žé®ˆÆ 3 r4.Ã[á×û¼«DJ‰ùaS]1½ø]“úÝŽ¹wÇã|8yËí&rË
-ã[öUשH
-.ä„€î*ÜG+ëÀÐï}€²‡à9—-üq†5íaO;n…úH3j[Çq´`1Ê{ܯ „…„™‚f9®W©QIªL½·Ñ*®®Kv@@\˜pÜEÊØKÆ£×ýpò¡ mgu6Ì‹âj"i3rçxðXì5ȪøΙÉ—5lx‹ÅuÎ@ªâ¤¸6V<àùeÜù¨ÄŒB70åpç]ÔÊ`AœtÉœ4ˆŒÒ
-ÔAzòXS×1„ÈÅ~ãÓ…1Å6 ï¶Ö´5¬)?…!m¯ ÿ¾æ>IéuYÍõù8JhojIór®ÓŒ dí…¦‡“-×ÝsšRܨ®[ö!PŒœeÉ瀑wù¯‚˦Jz…râUø5`,»¨HØ,Wh(RMÃò:ç:í$È +¢AÅæw{4þÔŽ°¯úaµ¦Qµ ÑEÊÉÌýÜ)Í„ƒ Épæì’;%ŸLY芗;(N”
-eúÛƒ»aãÍÝ }……§[e®ðî1´‡Ö X’ôa^ì Ú/ÖÙÈgɉrªÀA÷Ø逮±SH ¶š=/v™nØð”»;1„ÜpóB§:QƒŒ/ѳùú†ïàï• †¢ò£é ¸–frÃ+9¤–Ù @$wÃXBM¸:™Ó
-%~Qjä…N èçdp˜;5íŠ+˜UZýØ逜ž'†¥Bßþtw?¯éÚæø*HÐc¶²Iã3)†æ6m{*©Œ›! D
-“§#‘Vé’F‡‹TÒbý}R
-bxËŒ ,ǵÀTÆ–u ªºî€î‘€ÏÊxR(ŠíŽñ1ˆë"`×3Š«®; yt¨sh[ºÍ3ka.Ž¿øfbReáþñß/C¥L–=Ðœ2-TàÛÚ…«`û‚Läo_``øYím¹fìwä\}혛sÝˈ¾hçÞd/ä¬+AÊ­h7%ÎèóÉÞ|´RdK™–ÓÈoš â‹Qã‚sDBÐ1i4ÖJY¡•‹ú5[Aé8ñýŽhð3¼.‡7Wän¨2Þ)Æv"šæ¾ßIãÊìE6ìew®Íz@ð] \äU ãœ1Ç–ˆ®ªL(f@|Ä4÷œúeˆ¹“òÊ^´.‘ã=ÓBúDjÎÛ½™sE^ºë€Èìa¡m•‚Íõð@•¡¤8ø”×{´äö0Õ¡†C“ÉDG8šA
-Cšhèþr2¿”ÐÔ² räÎŒ¥šç°ˆ0T˶ëÜ€;d²(Ï,2T¦ÈÛw2x¬~Ò€BƒêÍ9×–ß^sç«î#x-Î}Žoö /úûdi¾#aA *A|ÀÃ6ç¼/”ô¸=B—c½‹±„:ðDÂW/
-&ÑlžÇ.ø~X^ê(Gèxu]õãe’YnÑè< 3ëÚÖQÈûoõ<
-SÉb`É á×ðæ%·Ó)F ‹V³"ÛŸÿE ÿx¢`ÔWMýÆ( žNjN,æ>2ÂþòÅ$aã‹æþM•»È«ZaÐÂëÕ¿¥JµU"þu³ÞãòÈ–êòÜžóˆ<á1<RÝ–¯7\`þËغ÷¸1fÊ$œryÙðHKÖîv1áEÖÎ?îFLÐ*ã¶ÜG±00,Ð:Æ]ÀE¦™šöí¼Ì iä¯÷6üºîC[f¦T
-E÷3AcÃðâù¤Ç3ÎT¬Ž—1ßzüØK „ÍçƘ.‹g4ð £ ¢8†ûðåT<³
-A™Â„%-©˜±‚Ì u,«d‡&™„ÕWÞ
-
-©ÓŒ2·´+á1šñwmƒD ™¹7)° (-3ÓQö±Y!¥!Ö7BÞñ0ˆ;@쮲WFúàëùà˜ú®R±=¹rÔÀL>]A¶³šÏe0Ï“•Öè¹û+ÏCËʦ±#™ š€nß[¶´A¸³žÑb6ɨ`þ±¬ÛéÞ<ƒ»Icè`=„Kb2Q-]ã­i ðf+<Ýè$Câj›zè8=èšùâŠAˆ#¦EŸhŒ?ýŒ u&‰\Mà´—AÁV<~î%У;þ}›¿Üq…š´ÓWà^>Dœ]é²^IýnqªŒnå솋)×pa=+“Î,O‡$›KÚÝNHEÃxznNU{kÓžazꜘæ b—fÕdke!r .5s$zÌEV6$;Ñ"Ññ8u^ždÖ9…öÖبD†TZ
-rù:ÈE Å=ÑE9TÎ:Ñ „„¿“µ’ä ºÜÀ–h&Š_P^ùF;‘?綅¾¡ü˜jêñ<€ê;uÝ}qñ¶?b4ˆ¸Æ¡Ð¸GAó³Õ"O Â^že,÷ØÓóüÓÓú’F±iŒÈ‹†ÿéi ÆßycÔ9<GÆN3¬óÉM
-Q O[|AñuR‚Aè¤bçIükÃ%çq@M‚Ü#ëfÅá&½µú9”:ûÞÌ|–‚¤Ã–#WSr*ˆ†SÓèn{CvL CˆŽz/Aa&*ñ‹ vÎZ‚uÆâ4³Ö ]yyÓá
-‚Uò1€ÒNÊNr)Å»¥È "
-¼Á¡åxöáDßÞ­:íF RþF$š½9$¥Yä5EŽ¾?#A¡c³’C—lªÚEP›*o‰
-ïÎ#2™¢É¸²|6•Di KÀjpŒö»Èxw*xLÛ×äS ùî¦Ûª_u®
-HC?g
-´½ç¨ŸÈ‚É®Hm’~þ ^ÞD<y©óoÑpµw¹Ì«è¨<dÖ„ýLìƺŸúïIþûå5ª’’Ô Ñü€~?cŒ„©â%´‰oBd&Ãä£lž®’9Øx,RYûmkˆš%‡¥äÂèÎÐbœ‹£Æô¹A å:f³À8¥Ý¬Lg’µ®|—`‰›ÂR »ï—Côè2vá9L!{†u"îcç¹(,Û´,{ä!H–‚'5;ïÖŽó¸AÝ#ï+H …¥î•¿Ç¾ú.§šù J“_yr”ÝEa;,íbùsÃ^=ØŸ³†‹Ž2”>¶?”qHq‘¨iú–ÇvþG]]âvùŒØG‰DEuL\¿iˆ‰d†äV×^þƒ4Jýš:X%J‹éŸÒ¬¶‚NO¨v]&[2†I è-x cÜ”F²²î#ÿÃ'›îZÛùÎo–v‹Š(ªrOË×b~˱ŸÂìb¥—9Ž;Ä[`:ϼý qiøHiÇþ±ï ‰ ŒÈ
- ÏãšxíËQ•tQ ¨ŒñÄ­–[¼½‰gÂs#ðgh¶û@ 9¾Oǘ» ðíV¤4¹Åä‚ÉA
-ö"Å%PÀ•õ»WA|Ž¾ jÜE|1v}4,HÕ2x…H"i™ñæ_ñP™žâ. g1ŒüòŒ˜v
-10ð
-F`x´^eï(ÌÐ
-"U¡Hf›9ˆA¬t •ä¬2Öá)?}ý AE³ÍÓ‘ø|Ä A—B„®îñÚÍ(T+ÇP8S¦èçÒØÌÄRx:õ›iÃkl~Ò$gц¬§#»‚ÜÅÞ6ÌÏÁÕáãÜ­³¦•B,ÒØl ѳjn@ö$ $ˆ±/OΡ =t¿å|oþb~Ç |·^åˆ7¼ Þãh¨ç.ÍwÃ'P]L9\˜6ù$Ñ0ÓâX‰fü™q)ë `Šöpóè›»­LZ”¥¸ZÐǤ[²Ô—ÿöI–– üÌûj¥„nRè~ÞL%#3M ˜gÚûjÌ:×¾Vlâì!InÔöz¹h/£MnHÇÒó3Jfçå\:¤%ŠB»Ät“
-)kÒ5çH
-¼±Ó}h§ëbþ$~U°kVÎQî"D™Âœµô Xq Å°bÅŒÔú&‚ó8÷\+žAQÅ(¡Ç\¢ôL,»e»€Fþµád™,â3..l9rŒ² Њr{
-k` å¢
-u¤45/è3È€>S¢ *» QÀk
-RÈš? £æl"v™[±õЧ@ñ¾¹Æ‰‰hyArÉâ¼I΀ª…$sÚÄ{xÍ´Õ”g4µ’öžÐ÷~ëŸ?°Ùüù÷ÄE¸d™ZPÓ<¤Š/H=ž,ZÃf¨~ ±KQ¥…= ~Ó¤°ÐÉíx­5Ø uË^x‚†¯ ^j§ª˜¨FŽmM2G 5©×™Š‰EI”½#И–Þª”ì+‡P÷ÄQÒhÎ?ƒ ŸßôÐk5A áÂ*hqÕ[`Å*OR@¦/s.q¹-‰5;!u§›†:P¨
-‡O˜± ±ÒFF!¥äت…,ÅFLÞ»Q‚àÂ:S[¸ Jõ5ù´Z±ƒŽ5 ÍõýÇ1Ë+Z„ÅîžE·1ÌyÛ!P=‰É<©Ÿ{ã]€ƒ-Öó(¬+|[×ñ®ßͽŸÃ¬
-0ò—ªF§à%SÞM8”/fÚn†1¤…žjã6roc-zã—¦Ó™;Ÿe•š¾Ží·
-H‰Œ—A’[9DOÐwÐFA ®Ý˾…#fU¾ÿv^’üž(é+ÚÕ½p© ’
-î½LnÎsŒ×18©DïsEx«½‡L?Ï­‘áÑçtrÒMþœuÌŒ,£WŸôVªyT[7ù“k¢ÎæÙJÛ!T`F©eT›+$¬Íž1ªû9¥‚8HŸ«,fµ3Œ<WPk6[¡`cÇ)N牭Vçª GBøVñRŒrO«dßwˆŠ^†[Pçu•=‰¦Èfjì ’ÝÃ
-݈öPˆŠnNæ+DŸÔ^Ò’ÄâCHï>Õõý\õ¤÷PÀ9ÍÛ~r8G’Ä)`¥êQGváfÐI8"ÒƈÒc¦µ ‡YO;ÇôN²vŽ¡%­”MĨå¥tî³›×b Ï»ÊÚc…Ð~k@dÒö›ƒ¿®H«g½ ZdhePåê´ô¼f6…üF:ˆ­Yf~r S®~íÉo£X‡Bí<x¶è6i‚¯êõÕ¹´J•Gî{'cÒàò)ÂÊQë*J fêã&èëCoª,Þüä5’çxoÄÌáÃVHáœ@ö<‡f7¯s¡§ÄdÈ›s (ÂÅ#Å ¨Â@^Å w1Š>ç‡n~ ÙWAæ"=Û‡sàIfÂtD伦–Ê›ÄÞ`¸ó—žv\AHE‚’zˆ$¢R,lXYãQë9‡r¨ ¡e~¡µY¨q«1¯«Þ‚²xÍ°Y7Ç}7¸ c+ Âà-­ØÏX! ›ÁßBöQ
-’ž!ÅWVüJ-,Hþ(¥k 48º
-‚É@"s‰¤uæèæ¨MÎF$K3∤ÄÙI¡ k‡’ðÇ—ó(WWÑ+ø+æ ^š
-Q[r:mƒ ðª¯*ôHò;tÐh£C´ ö§­H/é»W3]ÿ1÷”îH•3þ7¯Ò=™ö%7¯^B,Èé•ÿÛs4áD:žƒ>× Ø <%<\!‹ª£;ñÙzsþL"q 4Fb¢yûɃœh)f£í†7
-­©@Vž¸nò™Jmú<°€Íè$ëÿ¯²ˆÔ‡è“:ç3)¨oò‘¢{0‚Z¡n§å¯ý| Ù:9j"Í;¾9gRðå¸þœÎÁöˆÚÛæºø«ÂÏÉê2Þ”­ôƒR*
-Fh³œã=!^Ý&_Â%B
-
-ÀçE¿V¢ ÁíìVˆ f3fmˆÉ|ñTóF‚í }†+È»UyÌϳ˔³ Õ[‘WÄšHhXñ @ô@‡¶B  kXÈ
-JÞà«t/[Ò–â‹ Qƒ)µ»sÕ&ˉ¢œy»sî^i¦³Üžíìæœ×Ž¿½æ97Y½#ðµ8ï0~+ð]È·FýüΈ^åЋì©¤öv×ø_·A¬°2xŸÄ¯wYhu¨ŒÞÞ.#„عØg0hÁ;†"å­`<˜½ŠÄ¸¶ÈE=ZMh!ç´²‹-Êày6oœÀ}ë_ÅBY7ÄJ;j½ Zô2Ö¹~,åeoRã0>Qˆ,GIµ.GÁ&ƒ²â|¼®Â±k€Î؇S9P-Š˜ÐœMÚøá›
-—–{ûó.–7öTTþ.×!ØÞ£½€Œ’´ÀÅõÆïpr¬¼'XÁD^º<C+«à¼è%C ëÍÎ&3}ù(£%Níe:Ë©›vÊ/w¤B_é¸Z#@«þ…žËŠfÒ>tqf±˜7“ç||= ]q7N}•YÒÀÞen ÷¡caû
-AoÙr!qX¿1%?×Uì ,’æ¼óQ„àvgrAk)fcûì+d™×Ì)L5X:æ”\àËSí¤C(x©7A_;(ä·'e¼l—B°,løˆèÍA;O敇 9]_¯™Ëo,Wâ“/±uÂ;yw Ï.#÷—ÃöH1Â}CŽ,8Éw^þ®›ïx'¨ê‡¥¿#•¦~ÒHÀljñoM©g®^KIø½_Hý‘~²è-¸7PlšÙòìä¤f2ÈŠ’Â"Ïq:Áùnnù¯Û¢§à•Xl†šyô"q_·AG1“Ì òí»'£·,9,({¿Mýe½Ý©¿Tðe»]m€÷‰>¹]>äûQ;A ;žöÛ~?Œ ¡Bž±ýÞ]¿Ÿ¸ öA›Ø™WLJfcKÀo£)­ÿc¼\räHr zÝ!Oðÿg]³Ô-´-Ý;ÏœŒTJ »!U[…»“F3#d7[W™R4ÔçhJ:G±šÑ äa…r!f™¶·ýæu]3míŠýˆÿ}ìˆ*h+É“+­“*ƒ~}ÿŠ„ œ‡¢8è6!à_‚E›”Ù!˜ü“5—¥ªrºÐ· ã^ä9ñrU«^/GÈd{ù‡‰äyŠ~í’?ó`ØÏ×\ ™¤uhLZa®uºvÎÒˆØmÈ“L‚_Iéç†^0²]i9óÝÉÛ‹Y, ” éY{ŠX«ä¨[æáJ°Ò’Uø ÑTR‚½3½>Õ\ª€ŠrÐW4 Zšª ¦X7 ëb^Íj'öTð®Ý'Í㺰۞=ÔqD†[ºÁv=¨*d^&'²ˆàFWúà‡ô.ý–é(ÏEd1øÒZhxÿ4ίã¯
-ꤞ“\Mr^-·ZœÆOþ† ü¬ø?qq(òãÕØ*¼hIÛ†ÆòcÌÀtø‡~0û¿Ãã>á²b£à§e'×u*Z¤ž!°IÜ=qÞˤ+î&Žålâr0ð¯th4;dæ°Ó32-²’îK]W¾À…ñÐݵá£õ0¾:d25ƒ=©é®ÐŽëŒ#=€ü95„ƒC;
-iª½ùû.JŸI™D¨øˆ¡TÀ>°R^Ùˆ@Œx"}¢5++S›5]l1§È\ÛÐè#Ö—§³8Hv“è.i£T–Q­5L°ªŸö%ö‘´Â°lEV–žZOY‘Þ|‡°ʉ‘ IŸKfÙ¡ ™bâ,ÅoCh!ÖrŲ,ïHÓˆµJYCŠ–4Uל* Þ¸Ã;¥OpÔ¤ç Èžá…ò„î2ÊÇ `
-f1nƒ>ˆ†]&)/H!`ÄÁAsSD4…qgV𬭠;)Xt•©Q´Ê²Ìµ?I *Z•œ¨4@pö:´‡/E!?eGýqµ'¢ÁÒ['ÊO·Û2µˆ@I3x• ¿"µöØåGý¬Ž@,§üFe²‹Ug¡¯|
-CïäÌùjH±wêH*ÿ=Ä8¡¨K=Ý•ß|fI#ð]æƾèQ7ß‹s›…{‰ÿ=S_×è‘ÔšJí‰ïE¾ÿyðLe¥êdýAjÜ{}r§£“€³‰ÉLÑÙ£†’óf6Ýsõõ”ÜP…ÒX
-ÜÃXʶZÒ{דÄUµ“²¤ÎîïËhd™ë¤) ^¦Q wE¶2£›´’âÿsÂ{š¬Éß9gEäÜ)ñ®|9O&®cFâÙlOàÆ= ZŽ
-eXr*Ñ×Í)k–š¶ä<@Xyp#¤±¸Úñ/âvnu.ƒ HŽzã©Í’1<]J¨E÷ûúÈéÊä£böÙ[g‰Á3þTÎaU:ÈnÉvµ²ÊÓ„Xf·Û•abAÑLÆ8…¡9¤}«qRŒá$Šª‹¢þŽÍÜ£a¦›Ðr Ä…Ú±(À
-^TÔÒ$ª²»¡’Úe’v@X¯(‘Éy“m|TùWæìeªºž…ç#=Õw;iì‘­ó¶±Çˆ»—–Aƒ°}°ŸðÖ¬•*˜™ü”•LD9ýœLCDÕ™†€lf†´¦éËûÉÝ("Ùìé1ö(×"-*LS+*!ðs÷."çWµÊZ•3ëS¢X½\øÃàÔ-‚wS¬žíòÀB¸ó¥-ðÖÐĨƒlÙ+é’YJÎJ—¯F0SM%:=×¾Æí¦RüÕˆ©X/𣠱Պæ!‹jA$*_±ÃcŠ’Æé9•>p ˜L$×jr Hê¨ÃòЧ•Ñ‚0N?ï Š11ÔÁºzúyµ§6ô–öõnÜ´ÌB\ÖæÚ÷’<®eßpr[üz­Uúk§N+±'1%ÊÄôŠ…¢é48¸£õ%PÛ@ ±š{Pµø;“¬Ç*GB¦ãn}jÉ
-â‘ʇ¥AN”ßÖÎ{È4´ÐÐ4kyó†i/¸G“»A
-¾Ë±ïz o]™©Wä#$"É 3ZÅBù7r·)±WP¶N“AŒ9Èxš(É]„P.#¦Ëý¿~ˆ€è$m®ù“>݇ï~Ú'˜9ˆÇêdÒ‚GTÉ/Ž\œ÷×@C²EÛjr3\0e l™àt”rÙ.R™<”`>ºâªðø!Èb…#‹q™æ“Ã3[éý/™ŠÄ$»¾@Ôx|·'b²røÄž±!²84¿ÌB±9ZÃ3„¿ÖÄ;ª?ªÊ†‘bÔ,Ž ûöÅ×£Qí½Þ¬hˆã¨Òh#?ŸÞAM’Ò³ E/!xà=ðó¿èB¦@„KãßØß5&ÎQ]Ú¸´”‹±}²Æ<´8œ^ãK%R¤ËQ(iÚ ÑãɃFÑ®Ìöùs˜±)é‰,:{øV³ÒEV|µú«™ d·A¸6/VÜî›·%]c«Æj"9µ'Àû«*Ì–q Öå|+Òâà4ɺjŒŽÉÚ²ˆc )ð6ðMÔ»uó¡ÆtµjŒŽ  &¶V}z™ÁïOUóœÿš¥‚CÑŒËù¸Rû*µgjÖ™i†s9fÔŒD§FpÊÙs==\~ýr”œØÌî%O`yôZÒTjTwU^SO’¬™F’‹³¢ÿªœœ„¶ÁÄÿg1󬤣ðuÈÔ¾ƒ&ãAžÞ*FÌ㢶Gy2UªÛ-¿`~Çþ´eV\zžZƒ!%bLTr6N9.%Ý* thZjñµf­'ÑŒYqïå«h]îþ&¤e£³Ò@ÎŽé‰öTè¢=, Ú’ŒûùÕ<i“—ï7úG¿¿ FrjpÚùYew6j(–'ƒ¢hháêAùM£z €YSŽ„#QXâéîÜîËœ5îiÜà*üÉãÒ•ìÑŽftÙFMꀇhC!Ùê³+ºUÔ1Äâ@ýb¾½|*ÊHÐ 9ÑíÀ—;#¤Æ3¨UÙ©
-ÏLHe,0<œÒpû«Üz©ƒ, …ÈßýJgæmNRD²ñ#-0'l®WW_\.jüÍ,afÂÃôÃòÆty$ï V)»Ð71
-µ`‘ÄofO×íMz’±Ë%Ð Û¶Ò5.Q°<z
-¦Œ@¶0b¸‚Ï/Ã0J„+~^̀ǺÌÚ­7þ> f·a,ä‰í Hf*Ò÷ÿ2^.¹•ÜH]AíAc’Áï°ÑSM{†g¥¡÷ßçò#”2#¡Ø°¥Šb’ñ¹qîJ2
-Ï™ D°7ô£”JuÁJÁCÚ°LøœA‘Z2ùLœe'èà JC.‰Ä¢)dr}ÿÜ-è÷+wšÞ €š— àù³‡«ãËú: ®~ r¯~ýœ{õïô…A=¢ÁpÌiò)ˆ »•ÍÌ~ñ¶kAÆÀåÀÀw "„p”°ƒ¦ùƒ*l=>5šÞã "ˆH×XÚVˆ+)êã"ߢÏA D"Œq>¹AWRìÁ(„ñx’ˆãNâ¾¼Æw"$rš¦Å™}¢ü¿rŠ ôê‘!­RL,&ǘ[«ŸJþBDR=Ì DÛp¦÷s–Œ Á "1»*0KV›”¬·=*"8Ù)[x
-Õ’BN?_AHˆååhxêxÌï
-eOÙv©y!Ïáä`$ŒjÁ_¡Ao`0ܾä‹Û@ \g§ó€8^!¨WcCð–ݦóSt;â·¹¯Ê°Ñ¾Ìì›71¬'( ËËŽR';“gPe{I,ò8Çó>× 5ž)À òàâHù’õIY”ÄP–¼U©ñž¨qìÅ©øÉ1×u`;ÎášgŒÜÒÛÒȬ¥†TƒÝj~ Y#‘¤)U*î9ýÜäCl¨aíxŸ.Þ7Æ4ͬÓÐ× ¤mŒ…Ï ³ÄCÙŸ²,”¤ìèÙö>Ô••9Ìñ¤á=X—Z0ô£Œ$åŠÜ×’”*È#Îñ¼Á1RMF†Å6«éU6œÞ@¬M…CëY±ß(Fçj|š‹Ý§%NŽB"¤C1³ ìhžNvÞ‹síWn™±jÙ8„»U϶(x^ûµ2œÆ^©yÏDG?²rQJ¡ 1´è#žfw‚x #HìÛFPr¾-ÃR¿NâÓ‰´|Ë;ðLs&!Ì ÂidÄPÇCŒh†ô‘òª$5%U‘)H^”o#z†?œd<æ’dÊ‚ØÏ  ½Ú¸^zx'1ü¥²;K~JSf
-BÓ2U gÑ2‰íÈgV™´¹Ìs´b 3(4e·T?–\ãvwÕ$ɇOsÿI\«;ؘèO%Î|¼£ *4;PH³± Ç—Š–©dËØS\$Êöåcw¨¹8£òਤŠ’gþMãØDÓiŽBžçÀô
-Aš‰`rÛ!¬Aš VG·vgÐ+QfU<cN”¨•=«ÎÊù¢ÕÐÇÎM®Bó
-‚ÅÕƒ410Ù$á;Ãh bHCÛѵš™%˜¹;7^OV¡_ßØ‹pvZ9Ž20j¦†g`_Ó‰]†YàÂ`?ƒáÒÒç bF
-·nÍ× #±ƒA!iiÛÓÛ9¤-`˜"JqÁ¸-<hß‚J@ËF@þ‚2”‡¥Ë÷ ;oqiTNÎhˆ<_ºû4'£Ægx­A33Cø¼Œª ¶Äó'ˆ1šSҌ࿠7 &'ߧó(3Ž¥a·°Žj ªñ,eÀÔ`ƒêÙíM*BÏ  I°ØE-LÛè„ü=û¢« Œ.¶°ºç°ëY:Š¾@Ã$ÅtÓX¸163rdÇ|rY”—MG{í/™NL Z:©ù¾ýÀ)#fÉù^áLZû¥Ö"1eéN4Þ% –ì6Ûå¿¿¼ §âr’àhŸ-<
-GË×ÌB±Ž…ò¬J÷éÝ:HA44\1¸£ßeNŒ˜õ L2¡eÇ\?öRʦeÞÛ¬L²á±ùb° ØŒú6CߨVKe²‘ga¥³ Vˆ¨yô/ñЉ-á2¹’˜WAZÓSٶܕw­*Æá‚ib ³œl-fB†ü™ä%ŒRß¡ñ^Èút&G‰žøpŽþ‡Aàk‘p.‚J´“ÆP«ƒ½
-¦‚ÂS4 I%e ˜÷¸aÉÄQâ‘ÿ®D4%¿#˜Õ­dÃâ÷™ßϹ!ç~›£WÝ|ïN¸4¿÷øÿ÷J¹ÉG
- /‚yÚ-4Ðy¨ÒÒ€¼ËÃämØäaA‰>µœDG 0*òbªñ£<sÍ'·Ñîaϸ>ž¼
- Ä~u.50vaw">ô8*ùmVß_@²0Ÿó0ÌÔ11µF£ÿ•w@ØdßE±o*ÁˆâX ñ.ëê#†Ä°Y½›ß¾c=¥s³mª›!ÿrÝsóX1¥@m <jHÿ9%uï5¼ SpLí§BŒ<‰ÄƒÉ?”l±Qb%Õ¤øÒ%Ñ ú”ʇË‚Yo8ö‹¿©(Ò*EüuÔ›¢&7Ïp „«ÃMXeÉÃ&5þ“ëͼe0*úuða¼6R¿$t¶ü[`ä ÌëpO…Ñ9ÞýòA$šSX9¼:é Ñ
-uõÓ¢t‘rÉ•2€šêkSÞî=¾Ãg· ùÔZPòý ü $ÿüçËÿ~™£ Ñt\@A*¯85zÅ®ÃÀ.££‰M™&u3­XG~
-<š~PÔéÈÅÚE“lfT¥:Ç.bK•µÙ²Ÿ•áoü"Ÿ¶KÆD7†Ì4ã/¯ré
-Rý5ŠAÙÒD­ð2Ȇæ§ÄUé%g¥)ã­³õ)}:„ÇE¡qA(P«êBòk%VNÊeèÍpi‰$Sa¢ñ„T¶GQáÎTóçª4‘•ŠG¬á)È[àñÚWË\)C!J„mÙOÚÏî —B÷Ï} ¤:Ñd* ³dÉešo°JSbÅ÷{+kiE÷‘•ú
-"ìƒ
-Be«Wy¨
-Pƒõ¬Iü„Ž›± Æ=ýß’zq£ùî!…ï´¼X­žÈ~ßÊ~7š™QGdµ-LpŠì©Ä6Á“ÉÇZîÊߊŒ.æ䫪p"àvÈ^q «™Ø<nÃÖJvÏ9û}Üæäó¨“÷Úœ$>êëA>õ韯LÌGˆ)d„ˆKØ^nçýrA,= "^)|„÷²²Â šSÐ
-‘“…°d3ÏîÜÖßmS$cG”Ç”Ý×ãØÌWàÖû‡m"Y4+˜ FŒŽ
-Ŷ‰w«2´™Ü;?EVÖËÓˆtcûf£^Õþ‡khIeYy•˜HÓ‰)/© ö™±V«à˜(ÇŠTf^:A·Öÿ|
-Ɔ
-b!qÃÌqùZe¾”éLþ&*†8}JYK)JÎ(ºç°XÅ€®(þÔý*F:Š2úã„pžùSß#ˆPújyÒ|9 £~ÖÝKóHAJtd¢·)³ð%~ÕÒºO“``…¿.OŒÌ˜ì¼®§3Ý „ì*›Ž`oãòÿãœ{#XEäÿ$·òJðGt‡EѦp¯"vuþ›G.Á$†j‘ ©Å ¤ûKo˜üÛ¾"„’V†ÞVRpÒ¡’ÌgEæ1=>ðÄ3Ù®–%„L« ª8!fñç"Ç‚t|ˆ’TÍƾzÒßÈ Lð–ŽA—’2ÅêGÇ)0,¯º›l‘býÊ+Üœ‚…d½4}º¤õv¬§ñÉB C\êËþÈõ¨PX¬G³øITm/ÁSÎÑœ°álÖG’4ªmòˆý©02"ËøÙ@í¥Œ„¶$´„Acºèwä½i‚îCö%Б&Ö$bÜá™^šPvTŽjn pÚq¦‰ÙÖÖ’B?ŠíÆ È1ªÒºÐw*)%w…êÔûšk^é9æý(dMëGñDfÀ0D‚þ²É¯ŠY Îß<Æ“Pá1ŸÖ[« ÁYX#‹.›ËþÒ›éÒ þù7³ø׿üùß2¢šé1Éœ5±C-~ Ù„cì²³fr!ÕB]Ãp@ðø…za‰ÄÊÉRbL\)´–Œ7-!±ëø|œY•†ò'ˆ •")!·yNVþ×æ’¦âÄùPÀó†4âÏÐÖ4Mr¾Í) Jec“áÐä€~<€:\ž>Ã1W 0ËN›L
-Ðò‚àY¨†zV6äã¨ñ,‘b6$3I'=N !šÉÅP,8þó$ÑæAü‡.Î «´ˆ{˜J«®’Ph<±ƒAïÆ/ÉZ3N.wGdª|}ÏÅшÉ€ MÌÁž”Ðr_MÐ~#â0±Ñíû ²)Ö¤hˆhŒî1åUB%%tö™¼iZG‚nT'‚…E–Ì< ÛO’!LÏi)©uøÍB®_e
-#.1–/ËêmAÈAøƒ±ÿ´iŠHKÂ.«¤z?Ü #oÒ ”¤¾˜GÒ—v§¸ˆ[øwÅå¸% ±ÜOñji%}¬L±)\Ùå ¤î'îSWù‹´‹mcædz‰*öˆŒûâ.+¿[Z )|§ ´½;Å µn’‡sè¦Ü\›è~ Uoš‹V•NC«¢4»XÁ…«j\Ä0Û¬ ‘¢á)Ûê5àì©3¶øG
-`\øœµ}#$RÔÉóüMÛ%Îl‹’
-/R1˜œʹñÒöFžÐºÀ<Œ%Jes Á³Èh{ŒxL/¡¹ê÷VE¿_«¡±JTg˜É|G6‚XÉrŠ)š§ñ@°æ<X„ ž#›-èAš¨üÒwd@è&Q ™až<GÂ1AZ IðYˆ‚B¢U#Ç‘µµ šW?Cv0‡ƒAŠ3ŸÑócª<@iµ•å5w?Ò!et¼¥ú~ ÖÐF­(ž)Ø\æ‚ÍMOï{þáǶÒ5ù§
-ä„úðh`ÕÄÔê÷–\+Œ‡¤d„ÁîØè %góx~¯0ÛÀä`K‘>±íÑ/ Vyóåc¯ÝÒ <”õ·A˜ÛšÐËâ<í ŽS’ؼF ¨lÉv^œ\L„^›ý®ˆž/ðvØ6Ã.À^iw"h…¤žC*U'˜þÒäW”v'8˜éžøæi/¾3f’–dó¼ŠqÀÿYÿh¸x7cÌñ]?>'ý0¿}PI°—bÒ@iƒV<B6ƒj0¾\Ü­
-yÕb`yÊx´ì~Ü› wã°à!êkƒÊÀz0þmkv¦ÜÚ/ê‚û/ à=R;Üè;cÃ7‹CpM#E
-ßt„ߨd»±ås±É£°¿³Õ Â&V—ªK+T BdÂgŒÝWqñI~¸ø†a%©ùPT:þó ¢“ÈKôZ«‹€Xøö²§¥Õ,u×´Òy¤¼:]+ä2–gS÷EdW…jùS_f<믓¬öSé.å7aÚ/IO(&¤ÙË) Î
-‚Á&·áïZMõζ‰
-¶w¤ Æl°ÍLÒ¶w
-@wí18¸+”&HaÆUŒ@÷öë¸Ö;š@¡Í^ƒ0š9ói,s¨Qz?ëm ‹ºf4JEd{3Éj‹š±ø#š%±‹5
-¸akés˜>4µP|ô¹Ô ò¯Dóu—¨Ÿ‡P³š•^­|*ÒUäW†ûné/0Ü™î+Ã%˜ÿô€F©ì$Ê®[á3:E£þ$+Ž…Žëo®y6ì¿ß\{Ððµˆk»¬6 h´u²®Ë¿Ó©Ñ¯[gd´,<=ädÊ3±a7c ›&…]ˆ?Ó `è›T’N0Å"“@׎ªõ aE©‰rstsÍ0fioÆ„“pŠ:m»èÄE & UÐô¬¼¨_Mé¸MfI ÓŽêˆ1U):QÖ!r€œ0;9úyxC«$$¸ôË´>ÍÃ0PÍ¿Ùi¢­zˆÞsxcÊúÜ5ÆNM¥H©Ú²ÛITE ˆè‹ï<wüv›û䯺Oàsqîc|«pùÖ©?o¬Œ–+åJ½“Dd:F>÷xRDTäcËöÍ‘Ä©‰É.†Æ'i ÒÜr'\ly;¯Ï£ÎY:3½®
-U™ÜÊ^ž3±EÜu†ºŠŽCŽŒvÔõ€çL{ÍŒÊÉÔø;L{æ…˜=fþ/é¢åÚ½µ7 '«åc/y'ù(Á‡É- ö BÃÖ·y†Çù’ âM³gJ̺–«Ø)¯e‘ææü<{¿¶éȦ 1ai÷?ƒ¾wý+Ä( B(¿Ÿ…F@N8Vº»!h{ÍupØûå(2¢˜q’ LJ[À ž—ãúæ"ìô£lãSm¤æ\½d_âÖ×cp.‚)%! ¼+$Ê'È^blÆ@Ëá”ÛgäÑ'6ONs]wA0y;½Ø‹ÅÀÒÙ¦Wœƒ˜Üžè0·¼«0ÎÌùPMOmèA Þ'A0‡
-\N…sÉÅ47ÓäiŸ äR”ŒúXåœôÃbº™«Ë­4CE-²4t·˜€`%ef®½º[šà¸7AÏÎA³Ɇª‡ÈTãÝC–0ÃYÒ61ð™6$‹C Ú©>å–í Bˆ!_£ö>
-_–E‹âr¤µ8Ä‚“i"¨) q@l–ÂﯚQˆÂttÖzŽÃ„÷'“
-[¢UW>{q:ŒÃQ8¸v%«o!NW®³ÐÀhQø‚UBÃK­‡8•PÑ+\ø¤3ú3+9qââBÐÍ{órq<öÊ ßA÷½Ž{ tq?/ô_c\ñ [ Å"9Wrü׺<ÄV1ö ýM­ŸScD»¡øuüqfæ?B–CôÛ‰›…bÏû{\“~–Ýß
-gX½œ®1e^y@a{–›{l¹Xñ1µÖ«6
-ø˜`’-ÜsÜléD&ºUÓ+ºÀ²ñodŠùX5üŽ\&üÆ·&îã\˜ÙF0å)„¾àq¦k¡o±V
-oÊ·¿þ‹07S£;+@ÖDl:g½‚+$ÄÿL=ý
-A¤Hkbwt5í øAJ4Û aîXý%-5‡pé¹AûúaBÙ9 £`»†x:Æ—éU™.U7*3Ìèîé”,LéÑ‘WÍ<Ó!È$6€ŸÔAþø\`õ1/.h7ú&³6<$Ü/‘0xu ‡@NÌ?1¯˜gq$‚”¾'LÛí°^­‘ôQÄ*ònÊmŠúR!$¶û(b[.ìn&36ðÊ© h4нëejœ®Ãö6èi¿ÞYÓß¾ÍÃyÚcæI!ÌJÏ‘2k CS¦ô«Jâ€d:ÔUþwÒ jÀf³Fu:„}c‘™_ÛµÖÒ-MïR.ò†
-+A¾ujuå5`±q®í#¾MjH†
- %Ð
-4¸’VÇKðº:|…W`ýù,`W…÷Ì:É;ZªAÑ÷7E&úôƒÝ6§ª"°0^D¸uŠ’”Ù
-þ*<‹
-wÝG£w ?D9%ܲDe^EÝižÂ‘âuçˆSÌ…”ìuÖ<I^.1Z˜ÒGƒlÔPT{¿É0Ê"ù¢Æw
-Á9kO(˜ÍÍuxc[x6H$0MfU¼ñ‡¯¡7Á«;&PìÛtÖ]o¤Ð°eçp
-kö߯‚i ñ©YƒŒ®pcf.}ñ£^äù—u19fÉ&ÂÝ‚+j‡U±”òõ!­jÅ€®u9K >…¼ÑBÿðWßB!\ÅÆÞ•’œ
-Š¾‡E‰Æ"
-Uq¯hù/+j˜ü*2o7:üQ¤üAɲsû2 Zd‡–o[ £gŒT”|6•#Ù” ssÁë+wºG™6Æ„=S‰–i»ËµC¤¼Äç
-ý?%¬1LÇòîå¤Pq}4ˆcàµÏ¢ì IœwTº¤û€;†š”ÀjPôÓŠ H-N×$çz1}¹NU‘P–ŽY<&È WÕ0\]Õ²féuql²ŒÉ­¦Ì*ÂráqÅeŸ"œãÙqZµszb0[<ï§ðrØ_r ï K†åE­Ÿû§žE­lzÁË0€çœ>µ´¾ïÀPÚ…ådUxõð
-“²Éõ¾ŠFh|¼?U—9þcðjs·sø2º"©¬oø$ÿó©<¸JL?–LxlÇĘCÄ€*VJ€im‘¨œƒ +eH$ä­¤@Ü“— ÷œ‰W¨vóô .çO»_§á>Š~L«ìq ÝsìiJ°£VyƒJMcŒ
-"”ŸÖHð3»Ø§&ÛΪg^}t1ô-û¦åFÀxÖÅÆÿIw\Qz„°Gö/½uø™”aLù:» 0dMJjnüjCö(’e2Eí Þg¸0\Ÿ;ÑÅÄ[!®ò%ž,ŽåQ»žM׿øa»ôÌMufœ§
-ahÜ~ÕßôA
-ÌÓùÒbC°†Ìâ8ëŸÍY±D7Ü%Ã-ò¼‘Ý3Ü ·˜ ÒÚ!®‡ÝûãeŽ[G Ñ«è6¸/±SÝBé÷ýS¿êæöL ’ABäôR‹Q-_,Yχ?ìâàº@áóÈôòÍØ©± ¢ÖBõ˜Zȯ»!÷` 3s7´ù—ÏMø~š7íª W$y&ì[=&zãë‘Ff‚#·ØlO¶OŽ¨hUésü:nÅká9/y¤sLrc\ªßʼnŒíÖ;eÓ
-.‹Ù*¢ÿ)ð P×yüMÖ§Ëþ>!ºªÚša
-9?µðœús¡R„QE_±MÍÊÄ(Ùà«
-/œ­©@ÈwX7Åvb) ¯Å“êx6¸J(¯«&ÉeSƽ}qlÚ1x0uu ¥Ø /”§O)£HwJ ^ieºÅ³¶Âë¬f—œ¢©„GRA! Ad}¥fXèr}øbši™Œ$WªÚÛ‚yßϧ$ZC…–Ø9÷ŒÄAííPÊ„Ô“Ú|nz"øOSö çæsÓ„ùª*'¹±³sDáêqöKÐ\‘ˆ TešÊD± þBÔÖµLÌÆoiûãÙ2‘(–Ì')£„¨´ÂS+' £5sBgDÅ$ÉûñG€
-H‰Œ—K’e· DW =Ôü‚àÀXjŽð¨´ÿ©O’¼e÷+VHÒ@­×yù™Éfý5¢gš÷Hß›i/9jë…ÿôµwП?€ÊmÎQ¢[ýø¼‚Ú˧EïQJ¶þ!ÈŒÌV‡ÇÈ£–飔(mAXw”™9kŸÒk³¬½D ÿø÷Úªó—…_»wÛ šYê˜eÖ™kZ32lŽq ­VK0mòÊ9ÇË2.
-þ¡íªòXëôp™.°zåßßòøw(_åÛ‹Þ ‡ƒ¸ ã_›!v¥ß Î'ðBøÜ,تÓ~ͬ¢Ac#HP^½mg'ØÝ Mxº»ß»#°h ¬>;97Jʘ¹'§x*c`Ñ~d–†R쎌š¯ûcÞ£’ÊiÆäðG‡ëÓ¤z]‘­ðŠ!Ñ‹oø  "G@ò§æö¹8z:h™<H[Ã.ïÅœæÙ‰æ:”¢$ÓÖ2µð·-Û°vDÅKò#l>}G0ö]™£µ³Ñ;hPõPìä²­®uBŒ°ÂrƯ
-Pcù_,bdvfXqž¸E|ÍÄT@êLiiÛY½ó;älÌØžt¾I38òw"¼¨4ýÛ2©Æ3ÃN©. ý®Lßcüôã/ ÷/5í©ÜAW¢Ýb¼4Y΄.©®÷/uv®Êyé·¯Ëgi¤dm^c¼œ†œÚ¡g@…{×=%+½÷Ò~X‡D‚¤ÍñKŽ—ÞbU¸¦Vñ{Ž¿È×{Ž¤HèjyÖù5Ç_ —ùlt\¤”ŸrüwзoËGDnÜz\s<.Ê€º3å§ÏëQHåòõ-Ç£ci(c´•â=ÇëæƦŒ%ü!Ç«<‘Ž9 v— ¯~kªÄœö„ç_¸xCŠDd™÷/¡•G=+Ê5ÇË©@²ðžv òÑ×óâ<òžäµdéåñ=oIÈຌÖ“O£~IòÈ÷$}Kò º˜fÔ¯I^(ÊóÄ8DÜ’<,¢Á«
-ÊÚi¬hÍ&:}@X°ž©D nHÉdñøOG" „‹ RE
-IõÜ&Ü*îtÂœ­¸#É®|ùþÁóù,«8|…ÔàŽÜ~C°vAà«,HðÂ)\#>ô“C®À®­pK—ó¬TÄs JÇ×CeAg
-Èh¥LÝÚ—~¹ZJ|-ikØ©f¡³Þ”Z(%`>ø•µ»‚¹ÞKä•ÑP¤’×u|Ñ ²OñÿœÚ”õkìqè®ó¢äQÎVz>ÀŒ/–‚Z™—“ò11Aæ—ŒµNª^ëH{¬ÞÝñéËE Š–’ Yc×ÅÛ1/ Ï+a€xý`yÆœ_ñòG?G­¹-öÆ%ÖK©ð
-%Èãú4 „-ÿ«2i­Ë'æ“Ð|ò1Ó}O94Åì–Rnýüd
-<T~ÌœýÁ¢‘Yˆ½ôqlŽ=Köß@ŸDG\w­û‘A½`(³ˆ‚)é˜6«~bcׇ‚ó¤ÆHÛ9ŽëÑÄ öh_%FæÊÄÞÎÍå$·äe¹OJ,]ñäM‚öb‘íÞÍ7ÈÖG…RþeÚüa¢—™óÆèýÄ_~‹uçØl2yij‹ É#ÎÁ ן'ܱŽiF~˜†ïIóÿ“ö?¬¿¯\+›ä…Kº·ÿ2^.Ù™Ý6ÞJ¯@‡oãdØ»è©zÿÓ|Ňâÿ¿%DZO[%^(TfÙÚRA¤âi}æZTJ£}„<  ‡l´4~ôAÅeA)pLˆ’kïuA8€¯IŠvX‡¢Ž²T;ÂnJŽõ›®-Á(HÚŽÐ@”ßñßlû6&iN›ÝÊSˆ>EÒ`Ð2ŽGgÍ=‡-’ð+eB2̽ [¤)Y"È«¡Î£À$¨js‹“ÔaîŒý’½Ý{—V­OÝ ØGÁÐ4³’wF¹Š’!óè!]%ÅÛ_zÖ&ð__Æ’·­3äL+"Û>‡A b ÿ²Õ)†5‚†è†,Rpéz¶òŸsLÑ*5ÅÂÜËÜôsåÑøQoþv¨Îìñs¾„Â#ÝÎêùwq‡àDLÄöÛ¯ýÔÁ6&þll#y‚îÏ=@Ÿ?¹Óo]½a¬?榭S]´¡°=Í«7ÄŽt¥¾¶ö*±£DFDé· ºßˆx­rrxòoåÁ{1áÚHBþç~Âbè‘Ô ZsØ/øixSófBÁ@r]"ý`¡˜§Ø ~JºZ§dòë$ˆCêl_>æ”``‘ȧlµ;ÏŸtN Ž¿þ 4Ô”ârAÏú†2Dz1|Ÿ=ö0l€Ô…è­L#H&_¡Gq« €B0sFAIŽË¼ØƬ۟ù%ÐÊóŒãØ.Í<CU’8o✌×÷AèÁð£gä‚Ð0žÏÃïù^ß´( ,h…ëõ@Š"¥ÒRûÊEA9R|í>2äóè_Z*Jê!\…Nóa“•*×`Ãbµ$ÅÏžy .Bè«$•ù±LfÈ*-áb#jù5™þDÌû+Y„ PúJ$>bõÜ.¨½¢J^7Å&y¨i!jsÍá-“³ÆMšÒò›þ¾9{´xµás7üºÌMçQÿž•¹9|•×ƒ¼´éÏæE“ædáíÜm IrŽûûDÖ̓ÑaÄts²Ë+̤N+ç ßà‘†o,ˆ)|bNñ´+bÄ"~ÍN J#,m‰T×2ÁB¹Uhì°â°,£+VPzÉ‘ º]@6ÁôBø?ÒºÎudÇæѽŽQl›Ræª=[ƒÕ ㈵cÝ›±Rf“·‡™î;o Ý!Í£®Ð oŸ?‡tAŒ(ÕlôlX››ɱ.ûdÐ*CÛÊEòÒ
-ÃðѳZÅAÄ›Q6à1Q(rbrPùniç›ÑüòÇÚI]ˆiäîÁõGóê@¦AÓB:T=ƒ¬ã#ˆ“d]tkø (2QFÈÎnùb@ø$¡}t-‰Ž¯PF¦ˆ…I¾?Vc’èîð<Tâ aƒj„Ø={„-ŽJeëí4ãaè¶Gôªß@`@W‡?Ù1(¤îÛ!}ñ­P)™Ò‘²i«gI@…IÐÛõGÕ8“÷Ðäû# bjÞóì÷u™›7Σnþ=ks“ø*°yä·óeB%%î’š‹þ¾½$_ †ÔW°¯ã/ Ö¼%´å¸É«Cêâ†8ÉpZÏ!ÕšSç=gsú~;¤(†ìqE"hvRdfÒè}BЇçáC¦Á®jygì= ‘åF㋃ ‹À`µºþ‚÷fº yÚ¼A·?ޘ˹ðà.²ì>Ž¼ú#ïNò5t`úmªÞ(Eê‰Ø˜gêÍä M\{ttò¶GqB* ÏÚ ¿ÎaøB)„òÄS’g"(Úø«çyÕÃE"oÒqɳÇ9.+G眊gÎD]ùýhþß ùeÆbxÔ¢A¼¶¿o@þÁ~Ùtã°ŸÐX7Ÿ§ÏFaó˜&ö"ò£¥£™›tù3?C1d/Õ¶bÒw
-;±²eNÃ*.u6 D<Ìð~´ É _•°Nè~èS’P (WÑ=†ûUô‚ÜÄv³¥‰ôBeQùª ¥lŽy¿ÖöNâ
-iZä jÔOæÌ‹›ŸÄ
-Äèž™q–¹}k6(>U³ø²ÅSrI*»ê
-òQÞjXŒ°Û\οºÑ»·ªzá#ê Æpîã;ÿ:W_®SúÔº¨ ËÑçFç¿Å:ƒú1.Ä€+,Ÿs€#ÿ×¢ÚJ“ ±&"¡±ŸxIç EÊär]O…ªÜrض&:òŒjEù.t­Hʘï$ˤRU›• ‘ ƒ€Ö½Ÿ dÐCb–Ü›Ñ(ìw5¦ÈÐÊp@¿ß€æ®I×؆È*ÆJ$QwžgÂ)5ÿŒÚ[ÝR…zÞE¢R¶æ“R_ YÛ'>H
-Û†«OñÝduY% žªÀÅr°kˆOö(­ÃHf'(«7ÁÞ4뛦ÿç4P
-—è<lv¤jñƒ2ŒDÎîÊ¢BŽ¢ñÌùÉ‘•J˜¤”NOÄ0äIN;GFy{e:µèùø$BTéÒÒúŽLnÄ™_‚à‘:o$¡©¨ce!pNN²mÝÓQI„l=„²1ÉqcÊfJ¹)zöÝi yÿ@(æ…™À¬‰ÿŠZ¯;Oƒ?R¯‚¸º;•Cè§Î ¤LAoÕÓ:¯ï·Â0ZFˆ!Œ«{ÎàøÇF4ê>–Èq¹Q›
-˜ïÎAS ÔuMÛ±ðed Öê4!|G« 2¿%=¯Z¢ÙŠsÇO@Q÷ʼn ùíÇ ¶0dó)E ûtAlsÔ*èº5y™Ç*³ È!¢b2É2k¨Kk3£µGØ¡ j¦­’]ÈÌ…Ôñ„"ŠÊàòwÇ4Îã¶bÌ;‹Î#· áòüZE7Bv ëK‘Ùc³Ö­¸ç$NSˆºøO<Ù!0ôÁú„ ¨]e°éÄ‹ÒPlíšm#IŒÈ$»ki0‹îú«úuûãe’G®Ñè<AæaÍ-o¡-uÿm?
-Ha¯»Ü{®ÂÖD¬;H¶ûmWjXìè¬G†àeIƒ/a-%®Lu鎌 Bh”sŸ´¹øJˆgl¡êZ†{Žh—ýC¨dÞ×@Ðr€zKL/FmÀ÷õˆâ¥8@¨6„…þ.È­Ää©UûªÈ¨O9ê}ÕåkPß(Q‚ Ëp¥TA2ão-Þ7]ksÙ ¯Â}UX ØévêYºvÜ9ç:7Î×\çÏyÕ}ŽoÅñ¶áRâ·JÖ$*f˜°³»I›™¶ÑÆ}V.èbûç`rÆ‹[ÆÁö£ü Ã;·öf€ßŒè0A»‡ãô­½˜åŠA&Mƒ
-´Ö8¢_êò¬…ŒÇ!'‘CZÏÒ!85þ0SÏ/#VöË1$žO8¼óY/§ 1Ì+¿÷ÎqÚ
-þ¤GJ”°O³®gÉÑ9ʳ™Fk¸{†‰o\_•’Ù¬¥Æí‚X)Ø›ã°ìn RÂ+Œ´Ch§xŠ› Y=Ož,‡ƒ#uÏaÚs“ÄÁîoi‘¢2Û
-;£QΦaÎÑT€k„˜Ñ²—¬HÝ´Ô®Òœ"ÅОvsnAqX~žšó‡7설{B*ÔŒÑÔá„–´¯ú÷b™ÝK,w!ÏB$‹âÛ=@­qo =-ý¿P
-‹xþ æÓß‹Bÿraz0B£¼Ø „,ŠÇxLõÏááJ-`Íó1ZþŒ µ¤CH],×Ï8³Õò °p6–,Eö ÓçoÖÕ´T𾃣 ‡Bø\5ª›
-Y ÂœNêNKǪ2 +kÉ°kï dÖ›H‹´¡._ör˜ŠÇW—•ßq1·J‚ˆ¥¶:w” À}°/a½Àúàg†ÆsºÒUP%¥8ô8¼I#¯“Iž¨ºçÔ¦6†XÓ6\!ecMTrîÕÑãÏ_È©Gg”Š!dÈ_UúrØŽëØ~ôKù¨: ïw¶çëغ âY»«ÏÁù³1ÈiÔµhÁ¤Ñ–ªI¾ƒaÅÙÊ]ùt.„¥h¦ qä׈þÇ \#  ³Yåd÷°-¥Ð´{‚˜‹U«cœ aÓH,NÌ PhT]Ú#ó2ÿHPˆÖ¹;¨>ØD ÷±VïøÀ’ÀM©Ez}[}`Ü©Ïlrù „ùÄ¡M h ꈮ6¼Y/!ó˜Ud² ƒÄ
-u‡®ÿú‚3½… °|oÄ“ñòÙ *mQ$(e÷ó
-Ahs âSœÅÞÅ2IŠ<:r!:‰Œ0!ï«î B\²ÕA™Rö;ÅÖÔ_sIÞe0ˆ>õëq@oL¢®‹]ž‡GÒäÈFz¹3I 鶘¢œhzÁFùó¸;º*ãÄas²g,þ¬ù€.¢¾ž2x¶KŠ-#f„ºÝRŽÀåê£uDÖ˜e\tß7áã`ÜŠp…¶‡Ç
-$ĪSö¿KÑlyå³8½Ð©2xµUǼ«–e3aa¶`û¬Š/ß$-d¬ö$¢9ù‹Ù{ANÐ× P`"ù‘“ã
-Œw>„A‚uB@¶£ŠØåRÚ–GbS3(´AäÏHzP\ß6²@ç31ë›ÄðCŒ5ï|•Ì/QòÆD¯·OD"Uvj!œ¬8¡E„=©o~\p,Ê(nE©G/ŽaúÓ‰0´}»*î²_Ƹ|=OÆÖãz«B¥UËY˜ ebBÐdÀ)2ü‚àbÐøÓý1¦ S@ðq!t*ƨDGQÍJhŒÑX$A.²9 oÄeب‘§vbÏz5&`‰âî8µ„Ý‘£YÖŽg^íý抬ÉçÖ*“¸ŸŽ¡¥:¬
-½@R²¹`Q妽,}Ùù©šUéõr8›/„NŽÉ|Š(«›±óPù•Í'ø#þH>9Æ57,=&ç9ÜPÅÜÀû3=D?T‰j;6/*¿?œ!¬)0ñ´ý¨Ö¡2’þÅ Óîxbå0%×£¿”°
-óœ‘2ñ§»ÊêikvGgƒK š æ¿ÚÕÙ i,CË3?¼K‹Þ¡AºQ÷M?LáV¢)åbø±Å`+” ¤!=ùã‚œ:cê™q±y²wARÛXº¸>c=¾ÜëÞ—¸/Àâek¬ªú4Íf)…@þ†l‚ãÙvN‚`„ðTLΞ-ìS†\„öJáí·½ŒBÄ!éäMhÓŽ®sd5P<hú¤îÁ®4ëAØRøŒIȺ
-;ÈH Z1öç(jY¾¹Ä HÁ
-SzPüðZqa×ÏÕ/H (@-z§E}Ž…ÙŸ(ÝÎÊdò5ÔxÚ]„"„Znã@ž<õ›Y)C-®/’
-!õÆË¡£kU±€€ÖÚçèŸ+#I»†£È‰d{óD8w–³ÍúG $¸.²¬kاÈìÓën¯¤‰Çø²a'^Ø0’t2ÊÎa½°›$Ÿ³sh˜É*"µ”=
-ñE¼
-_KŠ]2ÑЕA”iÚ4³6êº6ˆ–·³ÄÈãå»fèå†hãÇ (áƒ<¡ã™ƒ0ðàíУ›LEb¢—,q¡‚ØÆóöåd”†ß†sø/JV›BB\Øèò™)Š>_Iõ‡);›
-E‹%óPôú‹’oRã;þ\$]€!+щnƒÏ‚;ˆ¢)Ò’61+,¥W-T¦‹,ÂïÊ|u¬Ú “öLÇUvܪ§›9`“º¥9× Ñ!ßÇîÕ½}œ…C§”ŽñPf‡;*p)¢
-ÃíXÀävZ! @–B:J®õ€~‚–®^Í […ff0öÅTj«ä+8‰›^¿“˜ ži€¤SÐZÅÓîí‹ÇeZV­áLa¼À}‰–£ÀÖ¶ÎËñ.ÙVST+‰&‡lQ-ÖÎK´lKKv%´Ÿ‚:ÁÝvJ¡Á
-yuÆQINI~…½‰Q ú“´ ì* {”ð¦ ,›Î óµD`*
-g u@UK¾*J
-2ê°L!~.õA"¸”ü1\ ¸YÂw¤ïé;õ å†ßûÜõˆ¹.?Îa
-8CVó+©°x1YöáXù5 ½ÅÃÉküidUûNÑŽ²„³œöÁ8U ›Üè
-wð
-=ÏEû÷ù“%ý`—óïÿý
-|à‡!6
-'°p»°Œ=|È«™-Êücš¨ï~„4j‰·åIJbÝW³€žËK]dî6÷‹\1|5ûǬ^È.1¦Å
-Žð˜ÜE–>éB"è уÆE0kË ¨W,8r,ãøQ[0HãE
-9NþÎwŒ+‘Zîl…aühû2YPÇÄóÚ=Ä)•t N¡lÌØDžB¬“å6ÏP,s­q)qP(©
-´d“ÛwŒ¿’è'ÊÞEIOx ބɶ’Îõ±€ëDÄ5Ôä&„õ8ŠÂÔú5φwq+ƽøQH ;Ä–cÀ!˜D”ZÀƒf ukE-á¡DÁ |¶
-£wñíÊŸV„»ÖápL´\ËĶ…V±»Ž†ì`½òß?yôýK’¡"Mæ– ~Ón=hF¹˜Z6‹L$^Ë—¢O+Âþw:€ –y)RÉ*d(¿ "üEB†Š•ƒjž ýÕLAh²dÞ¹—öÛ%…x4ëQð•*)Y@¢ð‹—$~ @NïøÀ1;MÈOz.¢› Ö¨Ò0û‚\ÃO#.–7qâ‰M9e‘e¦ld7dp†Ì…Õ-–kBŠ!Ð4(2|ûŽø4‘H‹ÙKdµ*üCºò£Š’*ôؼ}ï×™?}þ²u·²¦yU³±(£áç¹è;>ìý¯N\¨
-»—"bFV2W¢˜ÕÉò]»¬´F†üò©È
-¡ùŽžxï+ì.ÔQÆ•|‘¤Ñ1ld²”â(‰±¾Â¢ÅÀ iá¨r‰~Ÿ€„p‚í„”‡DľqnãÊ,æôò( ÷Ë€†9q!üR<D),
-îÖäSkÍ/J–Bû8Ý_ô/ø~‰Ú’s“.ÜãQÚÍuà·%Qÿ{¯ÉrÍ€Oôo—bõXÚ¦¤T
-‡3½Z1³ÅJ:4•”{.s
-̃Ð×¢XâWÆÞdqáåd ÊÇ”Y]bƒ«(8$ó¡jQ´Œå¾RËYcØJÜÈxSÏÌUôt¾õ“š—õûüÉŽ~ÙƱ`Ñ%Ÿƒ<$÷s¼„$<mß¾‘¢ÉvtgÕÚ‚"•4™fõ‰¬æ%òãpâÀaì+8Í`™³Ô€ ¡¿2ê \ME80‹{öû`õ" ž•")ù€Gûcâsø‰ ûô‘¤¹’s ™;ºÛf:Ëú,ꤔW(†©KúqJ;·+x}î¢ÌÆMÞêÝ‹XM½]Š*rm³–û-‚Ò˜<µ“´v ɤ(ÂÒF§h–™ÍFßê܈¥÷A’‘Õ®æI. !–’*á
-'µžÙ-Ô‰ª—ÀýMÁÍbªêYÄÇ™ /K•Œ¬+à Ý|XüiU‡ôVpü@IçöýÐŒû*`¾Üø%·èX?úSÔæ¾Ïû èÿ¨ã ÿ
-ê?ë‡.`$>JÙ?Rã²2¯¾$GbìZÊ‘etŠO^´ÎnjV„¤ìi‡› ßZU*V6õ¿ù!ôh­¬Áù†œ^Šþ~SÄ ‚4±N[ žER0 qÞí0j'-觚+XWtãžÎ¥™‹²®× åY[;/;Áð<—€ Wßî[ä‘;×·غÑfÜø7›»„så»`ƒÚƒ’3 ZlI߇oÂs¦||ÂF½%•ö°O°Êá/)G
-7„ÓL8³A,cƺr¼QgòSÚ#¡÷‚o@úÊô`¾Âzh@•‚™ä”ÅÅXg×Ew™·¨ƒ™îE^Z—ÖFP¢OaHpoEÖ°Z Ï!ÃL10½Àëyè‚X™‰1Û%¤†©Ø8Ó!×.CY¡¸ºaüAQ“cg•šìY×ÐÂ".Ò$ݳÉ!é>‚+”‡—pÀ*hNÙ˜Q÷Ëå¬+ É÷3ÌÚ!˜Ãü嬿–«œ}9ªrž}Ÿ#Å×BFd蘃PÈwIþ-4†{XD6R„ðÿæœ×‘?nó„Nðª'_›óÄñ£ÃQÉ·Iýóƒùû&[*Ñ“9å¿=8îß7EòxØ
-Ì(,«Çï¼3
->Í Vñ/ýa9·å5UšZµn=Ð í0’4C f,JØEŒ
-ùÍöâÐd®×À·¨Ïy€y¾ÌnŒŠh%Td ó¾¡M .NÁýí¦Ô±´Ò½.dˆd¤ b¨
-sFG((È6®¸íi¾–°ºàtRröY9 7ùþ•%Í€5Úé
-9…)7áóH oæR06ºÿŸñ2É$É¡è ê:`ó°V/óڪ÷iôD§;¨. :@¹™‘Ÿ(—é@Ô5 6íb½6ø~A‘’sù¡«¡¼– kˆƒÒBû«^~]á³oÚ°ªìP¾„¡³¨ºõ:ö˜"†É¥–4oE*aø8¨3ÑK`
-Ûó.7 7ðež1NÑÀck«ùZµï â´}ÙŠž’Õð;„2.—Üôìõ,‚8YI^ÆCì;]ÒÊÛ¸LŽ–±@È&^*QÀ†¬æ¡ˆ¡÷-«½%î~Ôd¹øŒ8;¤ñôô§¨Íݾ£à¤%€@ê þÊ_¿CaúÄïm½—ѺGa»ˆ9S›ÍPR·S€¯"`b1!sÃààSl>”sJ*ƒµ_¤Úu (!!D•¶Ý”'F^•¼pëê¥O4†qï/Â4’fÙëD¸ZŸôÂÿ d̆ÍG·ë [e!”11{¡­¢„i‰Ëõ¸Ëä òŒCƒ·•`ñ*“§^æ¬fYw†¶»ï“…LJB€D‚rE( WiɇJÔËÆîµÎ,ˆ‹  í¤¨¢ °/„8²Ÿt/ê$<š
-…@<˜)sí”é+9è¼—¡Õž=AÐçÒ¤JB!tÕSB±€M„t‚Úp ¾V`ãü(¬t‰¡É£M6S›JhDD¨L«ÃØ¢Ð؈P”Ùº,•—½º}‡I¸8iÉ4¸¡=¬”ì³Up·%µ"Žþ(€ž–^ÕÛïù“ÄnnÅ`1û¤}µXäUà}Þ–0ªœ‰7³DÓ¿ÎΈ‘k Š~Â"ã«K¿ôìpGM S2%“äaÉLÞ?(¦ÊhàüéÐX%å·ïnú ãUÏËYQ,èïž`ÖcTuú¼|öj ¿ÏIØ%R$Âiëj²¹^@Z´FV4P¶!“•phîA§¥0IÈ©ði¿Õ8ÈÐiH4 $ ó › @!û]¤N¸µ1„bJˆ`–ÈR9v‡»íhd&¦˜›KŸüÄΰçûÇA™ë%øýµ‹™úkPô‰U“ó-a ˜(‡!á/ÅÙâ^„+‚”’v‘¹àƒpf#<®ËDZöI¦ Ô[ŽMü'ÿ@M—ÌРss+ØJúêò “påsº¹
-‹þ_aÞ‘á_(6`üÄ3‘8à¦y±È™
-yHÝ2
-7bn×–x”yåYÆ¥x…úPÉÒÌø)-Œõ)eßÚ®RÖ ü @„L8>È!€ú°|8di°~e?)6 §„­.ô‡yº³ÈÖ´.5éÎÌo€1Údo=kPTe»ÊFÕ¹÷i…Ç2±íá}Ý ]oVÁP`F:qá=®RÓ×DÉôºæ„ÊJÂE
-yˆ ¢Y’”äUî-(E0BkÅ’+HØŠ çI)§‰(í°fÞ 9êÛI••`·3ƒ$ìåÜŸæˆM¬$³– ¤A«Þd¤h•$'ÑÇ)J¨€£ib(J°½I´€'Îô”ä…q˱y2qŒÍQÉŽü Nõ#üNV/Èš9e¿r*Ö~pÊ”cBaÂz*°{+cn7 €§“UŽ ËŸ#ž `ìü­ DK³K5ú\=¼\Ç!˜P™1K–1«…vávò³æ笌l7ÝË
-IÌÑ.{•b¦šÉmw|'ëÈxÙ+ R;p}=œPÔx šÔóÕb„Ø—— 5Ä8d"˯0(é9d,¤lZL4
-ŸGA88¿Ê íå/'V ½ðTºh@‰@WMçåÐ<>VÜP¸
-¶ïyÜ[E7>wëVs˜E²ŽDbñACA-Ï¢àR˜þˆæB¤}¿]4êyÜ[E¿DE7‚QZÈl¬Ëh!Á˜Ea{‹²O}A0æ†%^!Áà†0\H¹ìE™AÞ%P+‘V~[s‚¡r"‰öPP)ÁåzlL æ9‰€a(J“ñ­¯ Ã}p£3†¨†ë$Ÿ»qz·Ô¾Ææ¢ÄÐCÄA§Ç²$S?a­_|‡Ü¤WÊDÎaðë¹ÊÎºÊ ‚Ál༰èŒø:éF0 šç²ü^1¿zyÔ<¡^qPͯÜf½]¬ßã´wjnù+kˆ\òÇÿ¸ö
-¤&†2òù^§ÝèÎù¿„5ø6ì(˜êJ:”Ì4PDþíËE¾ÞÑP¬Â¯$“+lœeçŽ
-*Mª„ Aû¨G2»Ùðd$Etüú'*z¦‚°ˆ‹°ëJ}¥Ùad!öŸ½†›?"F”x8«UtünœŒwVY‚]‰­$Ÿ:‡¿ç›4'œ"øS
-1k—¢//š81³õç^= ÁygÇFÿ³=ÞgI‡[våœ<ÛyÆR3 áø’eFgž´ìÜ|ð7cŒ 8ΣgGԼɀËL,]ú|Ï à‹Î‡ì ¿Í/ë”Oe»„¥ÂqÆL4¸XdZ c¬ÙÚòJª­ðÕK*œìãxô"
-ÞÚ]ÌN¼)rÔCï@³ÖȲñoJºt—¬‚òõ¼ì=ŸE/,÷õ¦•E0Z— ú¸™¦ât–ÍÝæõêp7vˆ¬ r4ùµƒ¢p ÛûÅ˧Lƒ¬–Ô¯ÂÎ ³C:,ý¦2\•<Y«çë2Ìÿ&<r¸r„±%8AíÛ§“ÔŠ«f)Öò+‘$²íg©°<5`¢÷¦Ãò(É6¿ ìغÃd÷Ûà}ðˆ®5E{Íç¿}}»QF³¥,5 ¥M93‹°áÐø€‚vÒ‰i@ïH‹ØñòàÑå$-Ä•kBüê„f¶ìiþK4 lxJÆøfïy±”Õx²¸»r8Ë”æãkG‰xˆY ŽŠØ_€¸¸wJ è-½h`TÞŽÞ”¾W”ƒ¶#V¦Æ;
-µœæœ9O
-“E'àí²m™ÊOÜÖ3à>Ö¦&yŽl%EÁ
-*’!䪿)ÄX¦.göE›’J0äÃI’;M9´¹ƒ™TLHÒ5»•P!á¤éAnÐ!Ÿ,z•æ:–„ñÙÖÍs³efÃèñ°:Ç0A Ÿ%½fVï0c{Í ZáÙe8W€BìÜ´QÇh=åºm&&}b±Þ˜&(îâð|6`©1B…8œO–TÏ<ŒK4ºëÈrªo³ôêÉ–Y\® '\èœq¼)áþ3Ô#8=‹pÐ/sÄ2ÅX&±ðgÕ«±HŸmBż <q°ATM>4n…}£sSHªáo–žüO×zfjZn‹Ó¼Æ8J˜UEJÐ÷=ÚP¡fLïp_lñHªa«+Ép8ÔWGºœ@ÎjüŠÄysU¦µå@:´ÑÝ4c+Œ$â©ÑÙJ¤Ñç$²-g+ AQ^<[A‘hOÆ&G¨”HËþ‡E‘“Ï0ñV±Çš21º%ÐþXQ œ¢†;arv¾–tº@[Ro¾Û­ˆV±©£Üj¾n5Ú
-¥%íQ*)ìÂ%@œ— ì-hsX%¦tÉ!ì¿­-)€GVÙyN±nø¶
-šíjY‡ÁÓâÆòWëËk¢”SrÅ>n‚7ÈMŠ~W;êµäň˯ÿõ¯oéãÿùö×=!1t¼³¹Î_,XCM¼ûóZ„õ”ã’U2þÃb]ĺ<ýüã¢&
-8œ›ný¸îö'5L^§]s“¯"n=‹ q½ûåÄ­_¢ ˜òªL4£çQ wÜ–½°äUMiEÜô™ûRêEô[Ž‰ÀÑ|«)åguxoF ßD\¯’mÖ­Ø=Ÿÿ¶&Ÿß˜·z]æìT‚—ƒpx.·wg`¨YvIÙ¿ûcaÒ°õPJ-^´Ö$‰ÊNo2çaœ!A ;c3@,rã2‡eÑÉüòI²1R ›¤¹ä
-Æ©©¸¡GzYFN: B¤Wܬ®0 dÕ
-ÃQV¢k>ëÆeõˆ •Ì›hV¢_o ø(K_“¡c
- ©¨l{ Èã$mêSe‚I(Œ66¯¡|
-¦c+°ˆ"Ÿ.³Xy€ ~#W! T×IBoHú+ŸëHªé‰ø O­ÑÃÐÔ,rVxƒÍÍõhçÖœwá£ñCGU‘ÿŠ{Óoh:É(Û:ü7.IÂèOöÚïJzmHç?ã
-ÇÀóš¦l 0Šu¹RÆÇ3ú|`§[Ñχ"˜!áA2dœ;yE OùºÌ?”:"³K$š½\…å§S lŸ o±Š-ãyMåÉ —2vÇ`‹ÄßR¸8>˾lk$XË(l%‰^ЊÀR®ö@)U6LNÉFråë,r3ŸÎÉ”¢-8ÆK¼ W*D›sõ(\VÝöªÂ¸1üµ47
-£;ƒXI(Dè÷JLúŽ0 šo#e#bRÏüC šBäJ¨‡e¹ˆEBØÇNÑÛC={ø;ºUWâ])•½ç™ßòÒ„úëNêÀ˜hË4¼—ÔÒPPn]†»yK[²_€Ç(Qº®”…ÎQòýrô™ìK¬T­`¶½šÌM+ã£tåOÌG°IL¢\:x’ bÝÚG DŠ¹N²Z«d fÂA;%æ1˜g“5èç@ý0ú²"h‡Y1°3 –}Uh‡±W˜Ô$‰QåiL|çFŒ3­÷Zû018Û¤Ì:W(ÌM÷Ň«Ã|c`ŠéëÌn  à}¹@üݯ®Šò{Ð)²¿|¡ŠºŽ^™áC°P GOàÉx›ßVTþ„´JX´2pØ Sšõ©"®û8E·xò¹ ˧~ûÑþãï—oÿ¾|hš¸þú„gÌSÒl"K¿~Ä!è‡^šV™—%‘w4B‡
-ªˆqH~­¬ $F?~;˜•é$óîÜÀ+:®‰˜ð`6cTe·öå¢ô˜%Y•‰üÏ}©%‚Ç Ám_\’ÁC£…ê&
-®ÕKë¡©STq(,Tž÷Áɲ‚h…§¨ÙEðÁbÆùЂ{)zfðfþö…Ñ]ùü.d©DSÑJyh⺦ì1e‘I#³ª}*é`¾XH#Óœ†¶¤±hX„Uƒñn²ð%ÙŠ±§,Jð’À–FÄŽ„ÃÄÌ>E: á°"еJ2É!×XÞQÏŠ2=ìÉ»OÍeZÖ5}*Â%LçŸp0¢X>Èvš5Â!³qXµÀ^®‚/Bƒ…—žðˆ“€w¼ø5±¡™8EKY3;‹êwéFR¢éì¤J:> Hƒiâ.a˜(t(¡R ~1Óß-“¦Å2ðÜÚíå€uö‚ ÝDg #$&ƒÝTɲ&ØMˆé’·ÿûƒÕä$«„Žµ]Ÿ±†Å°>`¡—‡sî#¿ßÆÎù*‚÷î8@¾÷Ø]ˆ³úë+[óÓ¢R‹âvÀ€!W.uÎûåUÀ)–C~°ƒ¯*A@ˆyøíp¹1ùâg ”uuLjU<ú4MÅæs+øXÀ®ÞgTD‘¡07è
-ÒP¡î=œõZÞî™
-%ö”˜YI ºøBIw$}`XBt…’l ìÈózžÀÅFl'¹<%Eò3*"Èùçt~9lRJÑJJ¸:‹+RÛ3;„Ò­¹ ¥Stx_ÏJJ¯—–Þ¤€Gñ‡4èA()âò¤ÝŒÏÕ•¦†àòÚB¶©¹yG yBhœuQî](5¬*Ofbî9çÈÛœÐq^uBðèÎ ä£ÇÞBBùéÖ¼ %ùo¬æâýI(Ï¢C(%lŠÆÿ\¡Äcéi}¨OBI—`ý ‹+”9BI ¼+]éÊ`žÂ9³?•’"ü\©"‘]¥¢¹h.|ÝUJJêâqé^q•’†Q5|Dò”J$%°LÐMÃSJ•àŠ§hC}p•Ò-º+¥StWJ]¹ 9Ò¯9=¥Ô»G'¨IƃRª´)BŽØçè)¥¦ÀM
-×]}óÈò®“„0„”öâ-d1·¢m³Ý…ò?
-H‰Œ—Kr&7„O ;ü˜
-âEkÏÒ·pĬäûoçC‘Ç´Š˽p?R,ÈL$"^]üš-g9›ú|ýËt^6Ô‡yDfýõQ ïÞE=ÿ/и²‹ÍÙ¬{Ìûƒ m¡sA\šÿäâcCî?[ó¡é×ã;SUö§ž éÃfLnþúóã?òú7P½Æh&£µ1†lèT×tŸîñúûŠ+
-$Êÿ„Õ6¦šXAä:8Rrhö¤>%—‰g¿xÛ7ç´Ö©a϶o3Æœœ==R€4:ßhÎ6WÇâRí48dD÷×'Р|ô£©š½>o—‘чN‹±8ÔÌGŸÞÍtÝÇÚðáÂ"DÃ'4šµŸî"a=Z“dUNA²žn"Çsž˜W¼÷ÉoÃŽ ݯwÁiÑý©¯Ä¿OïÍÝ_'j
-(I·gïã éœ* “{t{èx\”o7åí
-.¬ÍÒaß>ÏƈˆÓô¦üTR´Y_ñèÅh»ÜÂv&Ú‚Æ ó7zC$ l4þ~ÃD1:Û¾ú¤®~¿÷Æ ÐÃ[zÛœ/„ Û_’ûò)'ón|ú¨çCg=Aç]£õÞÿ}wN³ò,AÚ÷mø™¨öEy
-¬–#”}TiiMù±±)_„aTÂAaP Oúó£·¤\j0Š/yþ$ˆ2\Dd:(ìG ²d¥ú · yáVÞ˜v{oR ¶*äÕ´Þ(xAŒoµ@=Z=<6ã dµÝ§AËRÝñ˜‘Ò©­BÅÜ·Q œç±† ÷*P_¼çQˆ™ô„{÷§Š©)S(‹šn#›Ý§
-Hü:ñ=a< æÓ¸§ÓI7XNéÈlêÄU:ì­_Ø3Â-r #/,5yÊ@:½4¨j˜ÜTj†<AÅy}qDˆR ì-ë\ǹø"‘Ph*<¨¥@Ÿ?¹Óºz»J>T³ÜEWßRh";½í£@ˆƒƒ²ÛbÐ
-€õ\–ÍN0™nïö
-ÝÓÆç°¾†ã#z¤q⬉ 0TOt¤+ ;#¶ŠdíxJŸZ¥–|«£ .ÜG=Ç ÉágžÇj3¼À¨4Ó„B±kX›”Úýx™
-05¿¡«EÿæQLZìQðDNÓã9Az@í˜0>´¯lÕÑ
-k²
-EWRfv
-ôF¤.›îÌvš~[“í‡FIPmŸ31Dø‡âlа6« ´õ8ÒôÔÎÝõ*Q¡@ÆM‘RZà‘3÷—2²²âí q§Úø›än¸7Ä(MÏÅv(NÕÎe¼[—Fm&£•5µ¢¿ )=ø„—3yÍ o +!jãÓì7ÕÍè7‹û<‚Ð#4K#ÖÓ¿^Ã¥P¼Šåóøtl›sm+¡ì§-!4À<H×
-£VŠT–,q‰ËA¾µÉ?uñÒ~eTÿÔí60C®UZãáUïŒ@x¹ù§^«Ã
-…¦ä¶ØÒbMm"S¾¨CŽ VZU ’×N$°:(ÉwBaUˆ&ñ—[O'½¾ª/èó'™Ù‘rá!Äß[Vì8èÛ9°8½”yËŒ˜_fraéââ-´
-ðçÏ‘¥fP=™dïe¨Hº.
-ϲj¯³ÕgWl*Vqµz™Í\RÐ^”S€¬$‹Ÿd.³™É>8³µ½[h%S+»‹s½Ÿâ,™hÙ_kþcè×Yô—® ’{“[©úëq0dPY ‰…Çt–¯ÁèÀ›5r@øi4yù)n.F\ÿÁ¦Áà[Ý{šè':œ§•¯Ë}bÜH½õËÞ}¯0?`ç1r;§ìvž:
-(¿isqÇ-g÷&V¸›‡žoƒø[­Þpv¶¹
-œ0yL?&?N´KéÀJxÕÉD+–¯0„È·A/¼üùyÿÇÏq/°D‘ÌÀý5â‚ÝdmW'³Ë_VùjW¾H•ÒO´È.lŸ¡°‚ôµœv$Y
-¼s! ÷¯kleÝF|Úv“ŒXÃ½éˆ þ•Cñœ™e™iYÄ ­ôá»ð÷2ËÖ2*ùQ¬¢ç
-ˇµ%séx“®9•AÅ%ø¢ËíA!j(LÌ""͇wÔ=l«XKðó>bs6\ìýëG "°rËÂœ©¡ŠdÁXr\`_Ñ•_Òlôt( ÿµq}°Ø©òk 1EÚ0
-{] ElÑÌûƒìýC>-IMÊ!êÏZôTüÎ[Ö ¤l"aˆ®I>Wû0‹µÄxü‰WE@@é…]Ù†÷0iûËåÿ˜}F×Ù÷IïøT½»Æb# :¶ÂÎi–lr’á:͢ƊC—4H&* Hz¦Ã’ã'N,£ŽÄ¸Ã€MF7ù¦{Ï{CÞ¯ Å~BðÁóñ±ý˜Êƒ°šƒâƒ (Ç“p@~
-ô¼ÈCþhþ©¤Á¦Lovò¯i(Ç!º1”HP@¥Å'Î9„R$Ó™ªuÕÆ;\Ìu³!ˆÞ@”
-WÂp“#±"jµiçPË“ëàä-«®K½Ö¤à=6\B ‹êô’ìUI3S¸èQ‚ØU¡uÊGiZeÚ®˜ZÔ°‚óê±ÿ¬<’תëÇf)Y8qŸ.@™Ywƒ‘W(U<
-Cç4àâH-܆£ŽK/ B½—Xƒc³XSå…øcņÙàŽ‹j9 ³KÖó¥…$.¸C¦/àÈ‚a`-cFǨMlW’[/íù|€ðÿeC}ï³s{°ß°ìXÉíã
-t75Ÿø‡&²žÓ?õ@ûäØÖæAEs£Ÿsøú
-T>Ð(Ì]{€ çFJžOÝA´›Çc>';þÒ@„ÌC
-ÿ"TˆæÌçÝ(5fßQ<wQ顨
-û6ÿŒÔ‘†Aëüx‘ÖJ› søË:¹_j- UbxÚ‹*íô”Í åHæŸi‹3lf»·ìÀ•'¢÷íTMl3É:Üfû£4Q–™J»ÔE‹7åï/Tª¶ImïG]d C¸*{…ñ%k_dybHƒË‡bÅ1ŠäÊÔª(@ò'èó€0<|¹U¦ÎmNÑO_à¢qd¨’ßg7f’ö¸Õ277<qbåe¹éW•[Jx-$­z}`,F g¦˜˜Êy»°ŸßgñhÚ»4÷uÁ1|b#‹LR×¢ìÕ„ª£A[粫R% Ñkù²ˆ ÀSËÃ:Ü]æ‚
-¶ïT®Á1‡›à­!„Õõ—ŒDòëGº»:¬I†æýYï`îÛ|ì-Ð #Ä«õ:샫Yú¤’‚“èÔ²h
-¼‡ZÁ v`3–‡^Š´ÿé?—`–ý2ñ¾a…¥”$‹Û`1݈¯ÂÏa—ZêRyï ÌÀ“zà¸÷7ªxÓ9çQÔ”Ôjb £«Ô†ÅÇ¿pë‚ôX33ýÀϹ÷¥¼ÀØ^9³/ï® ¤ÓÛhÖX‰oEœ£!uÒn¾æñ,ðñWnÅZ?ÒÈŒ+µ=d|“'îîŠÐûÞ–hn­ýí&ý8 ‡MÃJÁɘ€³ù$ 9Iþ´]„üVôOXpÅó¸[ÑÏ?¹“¸"ýM)ðNC2EÜ')!w4cTͯÿ,[¼ì7¶s—`¬QgÌÀèOÇÆò_6còÂë#Üe)ð!¦;¸Q„&°í
-£ïåyÖ¬»\Å£mÿhL‚A·>YDͳâÉNCeó.ÁC/À›IÕK0õLtŸÁ„g›Û‡¢f¯AšlóÆÜ*F3l,ï²¹ÎIäZ Re3l KZY>ÔZPâkJ
-€ô¾~•ßA¢ˆ—üÎòùrr=ÒîôÉl|¾. ¹6üLÁr_lHæ¶BÓk e.˜jZæñ/ø`©vzŽr‡á’]¸‘êÁǯw\Ec›‘€~Nbs‰%DœêsÚ—XàɇÉIè7»í~Xivbá^ק9Y\wZ#V!Úåô$ѦæhA‰O“‹@ªEh…ßaàPžt¬À…~¨ÉfÙŽÉBX['° –êyú³èq\€E
-y+À'iÒ¾zåsÐoˆ}‡$#mVâ¦v¢{Övƒ,5õ øߦ¢-Ø.øJ7·"qÓÞ6ôp&1þ1¬d24[Œ?wQ~5±“4—E?ÿäN~u™ÄQ¤g½µþáêýE£é s+cÆW×ûø Ò(뇫ëV©.ØÙרèçŸÜɯ.¨}Âæ}³¿>ádzÒS‘/§B¾Î\Oû‚u)¸9U%8(4Øæ]Bf$ºñ¯"ìJÏzÉ¥ÌöÖ´[sG懚VR^ßUN+¤‘²K08;ŠÜ·¨DGáöäa³&yŒ¾ƒô¬> ö%Á ocð-Œ¬uŠ^…G™;¥ (µ†ÝA+&²£+óÛ"¾µ8ªx›”Ÿô,‚´uäÈî'=/C»‰jXÊ+|”a}ˆ0èÚ’cò£îÍ¡£¼‡Óå\ì+j±íƒ\%–Fu+qTÜG|çœÇmž
-Û‚é“I祴Á/¼>¯Âi¡£††k1É=_Ç*ùR— %°y”ûÏᘽN6èôFw!ï`´±ŠÃúš^‚£S–<ãTœáî bØÎR2}$’%¾­%ïïps´-¥~¼Ž½„5¢ ·“¥Dv—Æ+Æ)!ôñd…•C&D°†¹­“PèEä/Æ9µ"cG3à_‘üÊlbÇ1qÝ4ÒüPRÈ:˜õ¡~\GÝŠšß‡¬ ;ùQXqh§5/{ÒÈ;ä3Zä' Æ$ß9v:ܦ‚¤25¼3(âíÄè™ç›ú"|R ­ºÊ”’¿Ä‰ÓK H©™°÷]2§º «u+9èCšt¿”[T´WX8ŸYÝpr›Q÷ÈѼJ‰-× ’‚.«¤YóHS‰Žª/B
- ‚½WÆ=&§TÀì&C²@JZÊ4§ÃsÒPbåLq œÉ^61…¤u/&°éˆôÞ%??”ààÂ’„\_oö¼‹h×·SÚ1”ÜÄûw vžÜ¥ÈÛ X‹2p'àâ{¿,Ë ³Ë °e«Á­n_Øo`i}ç:Ã’ròJ}{Šç0o%ŽȺÁ
-eûðfJ
-í:jnݬò—Óë-NWœðW±…½q]ÚvŽÊ2VbÃnBÖ›x¡bß8›°‘ÊrÎa K—!1ºdàô(/K€Šï7%t–•Ã]õ 8Á¤€h¤—À…Ë°`ýt–HÌu‰«ùîáG& ¸LaÊ‹ ‡"˜×xÕa¦
-ÄC’iŒp"—Éà
-‹ BlÌ¡T û0µšôm…þËÊ*©°Œ½Õ©º£_ÛêõM„;Ùž6/µØ0pK2¶|†vðgbø—¦Y÷Ý.áç€Ãtù©·…©6¹1óånßÁ/wÁXþ©Á@«Áf»bEi °™ûg8™L'7dÚœ h o‹…ª³hs‚ÃÀ<yrÈç(ìã– ½Òá
-õò^6ÿKHb4ï *D“#ÈkNn‹D­tJPN ‹
-‹v̪úBEÞ:4F…Löh,ÝÁIPV —ª˜ØD¦œŠV{éˆÂ'žB¬vOQê*UFPöá‡âè„C¶•,è‰&s©à̯‚MÌf%MC§Yí¸ÔøtÜy]á3¥›ßrIÎ"¬Ïà˜Ñæ¦Ä8*š$·»Oú»DD¦ë]#F»—従âÂýjáOätµàx³†é¶ñ¤
-'æ~Ú ‚s ®ÌñRr4¦Ì4ãö6!ÝAM:¼9c|½‹yBð>ü€®æCè«[Èjuǽ3›ùl„O(+Ëe¹Bß.09–—u%¡¬1Å¥žÈ:©uQœéC2^|GVŠ´Âêñ¢bóÌ6Rû{xÔL€¤Ifdj¾ \×æÓÛ3ªEÉ mÚEF
-1\rûÎxHÊdžâz–¼c'‚»jGùDsf´îùôõò(¢3Ö ¨çøK†·¤Sò‡Ü.Ž,¶Iµ’L؈þÔÿ:Hœ uAüáà<‰,”dW•ZÏIŸÖ… ìRÆz„üñ(.‚ñb}ÖP\3Ê2(€lù¬ñtv¬èœ#ž…
-\mÁ|‰ÆUÍ¢«-wˆ£-wÐ}Úƒ\ í¤¥ûYO0ûî‡=9Úò+јÒbä®ÖÐ~Ü–Œb²¶$-Öævׄð‹[\Õ”…æ„ 8¶VeWB½Z?SàÂÿ§BìJ¾ƒ4¼ €]z6S8Ô ¡kÖ…q³š^5wAV©Ã¾oëWä:¬ñ!LÜ×/èBêÌ+?" É·¤Ç Â¦6%ÌîP/\ àïÌC– „4¦múìí¯ 5ã± APb«Ô"´íž;„J°góä ¬¿Y…"K}&Úh«Mæö‡|†•%Eý˜1k³ŸH£VwîfÉ|Ÿs¡‡'å½ß‘æÓ:ŒøT
-µ`=줃;+R <HTÔ»;]@©©2N‘J|õá´¼2ËÅ’›íí1ˆ c¬½}˜mÐå´ æÇŠŠÈüûK eŒÆ›Ä¬?2.Ú¹ü‰Jòß¿¾TI\fZÄÝxÜ]Î5æH-øù„x¥*Àò›У)M–ãèíú•R'„–$1Œ±7G‚¿Ï£:Î6ijÛz ÓíƒXŽ ß/T¹­Éç'XÝ–ä»ÉK Œ™–F¼#tÔ0í]ì.ÀÿJ®,/ö0dîU:#®á&ŸŽÓûÛ“ 3;—Ž!#º¥é“€ª7ºå؃|jÔ:êbÿøT´‡ßüÛ4èÆëš¼Ó‹W‰¤¬¹Ø¼ºVç2ö^‰û,±3vý®úŒXqm÷õ+÷™¹]Å›½Û“¼¾”ÆcÂ¥À¿dÔW(Þ# _*6"®lîýGV€‰£°³¤ŠÁä•>–‡BȉQÅP$04ØIz£ÌxD=%ÜÅôÍn…_Šø®.ápŽ»‚~<¹“$(¼ýùŸ/üýX‡,È“³…˜IS<L…Ÿ`!°LCfB:ƒûçì ῾½
-Ü?-þéaðœTƈ†¬+{‹pÑ@J9©õ t9íǃ­{ß>uÝIºø`¬èµ¦Èrt@ß^€>qL Š8Wæ&2¿ºw}Þ#ÌÝÓp⬲80û¿ºú,§”Ð'õV[âÛ¿€æwN„×–c ”Nd¥ÚX­ñ@²R„´KËC0p®]„tAÄ"÷ñ³ ‰8lƒg!†A‹ƒoǵÊ‚€Õ)D¿!!‘͙ߑ®±líf ‚*w­É¬LãÆw•GÔ/ã­çQö>¥ÑB$PîÎI˜ÞÒpTo‚ðUæTÖÃ¥QжåùÑ„P%)5bSuYÞ™õ\lŹ di V…Ga…Æü1 „ÈÂÁ aETS#G›¢ë* àZÈ:ŠÚÑ Š?Žº~‡“ðšô
-ÚÌ’ìê˜üö3!tP~ œšÙ!-)„À ä¹c…ÈÃ{´7&›ß‰JhœCÉvÙ «ŒÎäu–(ªÊ¿ëûÁ~W¶ã!§W¡ÐòåŽ{,‚$ OÓ§ßOrÂø-öfoCà“B³XL €°ç1oKf™ÀŒ‰l–—ï(2¦Ñ^šIÆ»§Œ­fñÍïtVæ…‚äºùPz€[,/4݇h¸"V8¥Ý«;gd¼«4µ®\äz5¹ìä€/ï™e‘5Û^YS¨‹*D<ÌG¯"ë ™h+\È 2õÐ/Íú¿Æ×›À d…A,A=ÜQÐùq#`Ã>N*7S¤ ÑÚì'S<ê C‰ä4Ë}Ÿ„q ~V×Çg«VFc¤°ðJr ˜N\ÆͲ+3HyÞ"¾té*:i¶üÊË%·Î†Â+ȼ‚@oJcw˜]èÈÙÿ´ß)¹Wq€¶H\ú—Dž ˜
-*ø*6ÛÄÀo7BÆ
-ÓuÆÉð@ÿˆý H[d/ŽF¤¦Ò®u[Æ*gÔdk
-p3gsÊ!ÓŠyÅz—’ z”€ ¬8^|‰Ë ‹(ÑÏQt93ã¶#Šè„?&EL³Û…Ã5ð$0\”Ù¢óÆ°€qö£àY
-Þ ÈY—ÖÏAOE
-œJ|ð²h€¿s‹§±â“ѳÚã$Ô·³s˜"QB¡ˆÄ?}l!['7Ùã(¸ñ AvŒ‹ö
-
-ˆ/t{úeš‹ÞÙâ2ø"’Uâ¥ƻ4<Wj-^relyœþñt4åuáùóî‡Ø}J6--–UE÷ËŽh8a õÏóVò¯ÃZàA=2ÏÓg¨`h\á Ɔ7‰êTÞî8_Î1^Æ+â *öœÀZ9¯RÔN`Ìû;m ­øüW t¢Ë<‘Ìu—tðC!´HGoL`è3Ž‚ P˱Fõ<C>˪VjƒÂ¾Ëù¬Y\†=¡QtyöÐ„&x¼V¡)ùI„[ûEX MWõv'Š*ǽ[g?—ìÕFkèç9é„#nJ››@\
-V$ ´H  ªÖh˜X|¦hêðc8í´gÞaq®3n†ó îäNŤ5µZntŸÂ€@‡,“ÂḀk€Š„׸ úf=ͱiB„¦e3Žy-å]ŽØðeb_ŸÅ‹hmÎlñt[Å"Vz#³a—o
-<3ï‘£kœe¸‘jv©ýÄ@@Xд^|F¦ŠH?z¼ ŠÀ¬åNçú¦D*ƒîŒÓc@Ò·µ È:F»|a"é´.„¤é¾œ" 6„•ølZƒáRý˜ªGsÁ8zÄáœù§ð"•£0Jº¡ÝKŸW«²@ܱ§ãJMN­“ÃŒ"QÎßÝÝyvCÀµvêX~*–´ùÅþªqH”ƒ¿;»1+Ö._ù²0W á>c¿;™O‹’¥ëe†s¦5ÿ§¼\’½m(¼ï¡7ß Ç=í]¸Ê£xÿS‡
-s‰ùÄ^"rA’ù‘…£Äâó a_—’»%úøÎ|8ÉÓ,]ÐoÃ>&õi»DG-E ±â+èÍ©há+æ£C\¸“*+VÔbÁ*d¹?ÃF6¹L!_–ýVòFü?»a;QÒ&'hsïè­†­4…[÷³°À]cÂXÖѾ”€Á©n•6‡¢Š…ÀÒ ;–œè´@þ–k$ö‡]ýÜ^Z‹aí¸ö€@ÑD
-äXFŸˆ›ÒQ,‚ù•‘uà °µ­_Ó
-%ø¬]1þ%
-Ì%¶”<Øå²R¾TÄ’¾-ûG&š;}Nâ “ø0¬ˆW¡ŠX.ÜÕjzóss^Jü(ˆ–† ËÉMßÙ‡JªËzÆ/LÿNcý6h0|n”Ç>£•3©ìÆ *,qöÓdÔÌ7ÐPwœÆÄÿ†ïÿÈM¶'…1Ç"䳤 ÜSÒxÝ!OÉ°çr½…ûmš¼óÜä¼c‡@²{R¸ëF'ãĈԆîe7U¨:ùH?²ØQ¾GÃp:â“»'¥ˆ@ àɹÜp˜Y\©ŒäI áq²¿üÝn^›,ßÝ
-ëWÎËÁJ™hÚðï(Ðð8óT[:iŸxsÖ–¿ ‹‡Á@؃uÝ›OG ç`±Yï(Á‘ász‰·’Ÿ¿ýÁYåQ †k¹xú?)"Ù1&è.·ìRôëKQ–k
-`’ô»8òÕŒTƧè`v$ç¥ÀZIü¬Co_i:?…Ü×ú,Á·¡Š¨iÙ% ÿMBâ_.×ý}ï ôL3°íÜ›ÁÒš²¡t oÃD‡M?$ÞØ.Qš¤Wð¦–
-·¢_ÚfùÏ¢7®û¯cbÉß³ééWð˘f¿,¿ââÖæ·Â«è®ÐŽ”¾;‘ö§öölÜÄðWÌó>ÌúêDš<¢Üóù2,8(2ŒqîójE¹¢WVxM§äÕŠTÜ'6XÑ¡u)ñÕ¡5J]5zõ"úUåp³=ÝÓ«ÐP†` 
-³y³¼7X]¾“—UÙ"¤çË£ wÖ±H‘ŸS°ÅºÓáê*¹³äB”)Ç s4ÚηÓÒ£6yÀ@ÈèsT}ç[|ÅÜ
-Â5ÓþÏX-†
-÷»)aø0@ÇD‹q@ZJÞ(‡¢ù2ºaØ’,êªi'U*Œƒ´ÖÓ¾ \D¿íÜ¥šÒ,²ÝÏG>’ Ep MàE_
-ZcØÑyuè¦Ú—
-؉¹ñihþœôÏ&ã×ö"ü‘7e•ò÷8-óF‚]¥±Û‹ÜŠL¾5‘+1Û?v abÂü8à~ ´‰Õ),›­QëðŠœYÌ!—øû>
-Rx$_Ö%fº°n˜X~éG‰öÙf?ÚY–2_ÎoéQ‹Lu/Ϩ RÅ9Ý8 ËÝeÌëAù˶«‚u„”0Ï…ûP:dùS?€ ö¥ÑgYð+“ªÚÅ»êçQƒ”Î@#^R%ò>¢l xhòïÎQ%êSÓª/»Tè$Ò#»™Ñ“IÞ>C¦ãú°+NuÜØM%}2#ŠøÇ{|T˜QE³]^®^gÂx†W®ý#ŒéUܘá¬+çôEÒÒú&.tFż z·ÚL9D©'¿½Ð‰Jp/
-ªFºÁ·m­¶’ü¾Ä²—`õ“œg­Ao2õVáÐÕ®Ò'|ùL‡v+¤eç2Ú{Ýe-§GÜ"ÿJŠ–½D—oX®sîraÒ¬y¾ƒ\gÅ͉áÝ]Ó¾‚ò”cì¼ 犽£{$Øl°Xžaã·ö‚ßú¼L(¨îÀâi
-‹84¬BYjc -<G²;ê^*Ž eÉi(">®ŸA õ„¿(/—Ü8o Ÿ@wð |6ɵ²ô- d¥Ü›¯Èæ$óX9’jØd?ªªá¨RŽ5I"¨gôô=Poéƒndy§mïžhEúîßíÊÜ1¤ŠæhòÉ #‚¾*êXÎIÿEziÚš(kXwîo]]ãý))ç£Uï F‚Jö.§f<2Lm³£¡a(qcpÒp’™ìÏa£@Ãà0|l9Ã÷Haže¾W ëNˆF &B+yS»³Lz4Te&ÊÄ·å¡ S˜N)nÍÕ1±2 }[¨¡ôõÀÓ=38(©.P÷ ôkW©ãs¸‹Fƒä!Z«÷PÉJ/âÂe <lž¬ŒG2~±DÙrÇ@‚4šôx1
-ƒ2<‰Þ“j0º«áPhQ­]Qgå‘‘GVÝi7k„ ÓÁOªÖˆÊA¥´XàÂoÌs¤bøD(»× !ËUcˆF<5Æ‘Æâ"ø§IÁÿÜyv£{GÚ¹ÇÒóœ&³¡Þ/Ã7@§±•au΃¼(͇}~üM©*ãL'Ñ<"‹µ“›½
-MÓ2^ñY‡§»€.‘%)Γ"Qt£oc\wáAÈlSš}®ä«›]Ù” `ØkíÌ'åÁ£á Àüõé³ÇÞ@Tƒ1"×eB>?N K#ÿ”yWS‡vÛoƒÈrÊÀ5øºum™(2ͪkŸ ¡÷Øž1î WÏp©ñÌ`Þ¡b¤4S~ÜGÊŽÒýè•-ˆØÍ“Ñp7jœ™”·n;Ô;j2Ì4ÝÍ9—=æ7ˆ—æ.’˜€Šàîbº9çÅÌß@þ¿xg0ƒ¥ª× ¯Ês»˜¾Óæ0!(„Ádï9¿\ù¹>ýzÍà q)Ãr-§@ìh4sì
-X\¸µ ž@Ruî2ßAZF[dcÛ‘LI®HþÓü¼®ÜQ)ž¼ Þ?ÿtÙ¢v(Q_7šôrò&²'kå
-5«~͈eõ ýK÷ \ÖšDMã²BÑ  µd›õæœÁ£a4^ºk…˃fÞ WÙCr€•¤6Û®¿´ºB¶)©‚)óP“1ÿ6zŸçdþ ‘´à¡ä€Q9Ô¨Mÿ;¦‹f¼IåJõ¥…wE’Ç{7ò:`q¦¢<[‘´ŠÑ)ºµÐÖÄ£™h/Mˆ¬.3-<w+k[µ¨y(£°F"»+N$Õ£ºŸz…€BÜ@
-í1VkøùqÂ\„æì˜ÞÔHMv°í\^ VØF¹ÚœûÜ´hï  Y{V£SÙd 5²NˆßÅ\‚}}çFëâ×£x^ˆìž5K°˜î¤ä­hµ:b~ž1WÑîZK ¨¸R¹Qö#è-ÚÛ㾺ØÂŽµMŠBG†ö ú8å¤`¿Ëö¬I×F‚$(âI!/w¢(~ÆÃL*o'ïüóŒ¹^[ÁøúÄÎl3
-Ÿ ¯4d?ÔÓ&½(”2ÖZ¯9ˆ}OYéƺ –J’‹ò¢É ¸Æ¡Fˆ;b1tšŽ˜MjG¯DÏ1Ÿ·ÂÖéÉå¤gK O`­h9T¶ËÉúƒ­ •xÅ*ù5|NèûUVdø:®0 ¥:˜Z'>C1U†[ÏsÈU1£{9qE¡á¹˜£8!,³‹9 +V1ƒ òò9€è’ÐæMÊÐA‡4JÙFÉÝã
-żTyø†Ã8@V¨ëX½Ã¼¢]G«ùø*Ö¬Óê¤ñ ©kÈ £™eÝÜ'ªæ ¥(ŒÅ'¤'ÄÇÂFPIQR¤¿'‚†.‰þZK&DôdŒ]š=ÒE'¢óðÔ9vùD Þ k{~¾[.¿¹…b‰Ý…ÕÀ!Qš!Ir@ü Óʯˆ¶Žâ®Ú"[¶#쩣ꯂ¡‚<gÙ·ÁÐ÷¼ÃïB#Bš…¬›y €ðˆY³Åãø‚`<ƬBÙŠÆšÊ$‡\$ýÂ׿¦\O¿äÝp´Æb„š8]Ì;§Žõæ4«y!3 òXRÇ1}sþoì…\Hüñ×k8p UÝòiZ!™%­—r"¡3°P±ÑN A ­ye¤½†¼ì§‚<6YÛû‹[1ñÀ(È@teÔ UtC3›uçÄTåï8{c0Ž”mA(ÔÜ®¸¡ï!=Ù‡äÖˆfëd_‹ˆ¯<Ê—¢ÃÄižC¦+2ÑÁì«
-Y-9ĘŠC´ÓA‹Y[¤€ºq&ÎCqÔœk§îçÀ˜¼«°+;4.c„‚…Å:µÝ)*8B
-Ã9w †D¤ ’L•äøPÃwÌ× WßæÖ(>›úâW|¿/ ÀﳚìÆÈ#Š¼Ý/ƒ¢¹”tÒº ‘mL[c:-z@f-¥y¶4 î⛈¬)¬¼³^)® žPŠ7TH¶ZÔ×<†åŠ¸¼rH¡ƒ`Ó„ÄÆÕTÑí=²”hZ‘dó@AÎFÏÕËz€+`m‰ë,!éÍýfV~3sŸŒg¸OØŸ¦0ÆœDO½ƒ—!Î〙óÀü6Òž|û*°êcV¥><ÆBÊ͹L@ò>¢J9ÐRb09§7ÉLkžDŠh'{3ûÐ4£–I&ˆÉ Ñò$›×«¤ {ÖW¤†˜kè ½ž¶}Ã)…ŠusÈÛzé—¥Û¤ +ËD íBà‹ø3%ÏÑR`Æ[ÆÊ‘¦XYþ ÷½ h°׋+R”
-Y-óÜ9JN6!oD« 4<£ìPo -øaþƒ
-]ä‰rÍçIÂ"Uï
-2ñ-†Â˜V1œç­ÖàYGõR VŒƒuG1aTEè Ç.´Œ–o¸g;ùaÍLœÀd„½F‘0 $)(‰¦OHLÿ,Œ.AÙSòæ°tÊ®@µÃÞP€÷KáN–<ØFá³
-]åÙCÞÇ–œsàòŽ…P&ÏÁÖA\‡Äm Àšô
-{HñÐì’{‹ø9H’
-£óÛ6*…“©0‚ãz1RÿãÇþ|’Ug·xàâÝýc *äëù¥ëv+â•8¶?âé_¬5t€iðA§p°qr®VRh«œ×Ø‘4ñ>OúW•GÐòÀknØ5ŽÇ"Ù9x'º-®Éûb-Tr^Ve–†‹È/òi\Þü*Lþ€åèÚų«$WH#ÉŒHh? JgkE¿Ì‡—»^1ÓÆ/
-–ôk9Q‚ÎÊÈ'Ü3§Ô/]€o0sXÉ’ÒÔS ïQåEË
-&ýco²tó܃ b»È›ý"|#>÷ÌsŽ7/%Ôm’Nô¿Lù¸Îz|=zÊ^•n²Õg«â¢ÆÎð:ÔÀJ˜ªLó ¢ø u•$‡ìø÷”,ƒÛ•^¶•Ð¶*³–ŠU$" b5åÎÔ\
-šºÊ}*Oí’×å³À#ÔêÝ«r¤|¶­å(a½1Þ„ˆm7ë$FK£™¡ºK‰«+ˆX ŸÐs¾ž\ñ!Úè#JxaEÌ^¬d‰Øšm\ì”3¤M¢ˆT”"%¸‡Oè-R
-Ïøp¢˜Õ ÍV1ñrž
-Ùq)ÞHîà“Þpœ`{ŒyGÕì¶<æ)á IeHFòÙdlßз^)§®å'Ø_º.)‡¦º~ªáü¤Á‚ðˆŒÃÏ©^]ç­¾æ"VׇÝ~Át èƒå\^ΩK–P®×«PM¨¶
-Ùíõª"GCÿÐûéç°S97{ š„æ gõ'Vùoì9-ûM¿‹° ¨;ôÀÑ/çüH¨wVÿ!‹®õ(ú¾šèG2ÙW˜•µêWèÞVÎ)üîÕØVm*0u_l9 mzuUìaÉøî2mËù‹É@½#’ÑÒA@ç¡h[@nÑ'ü.qøPË9,Œ‚-­-Øf’—„¿ŒÔ‰FXP숻D9ãì©XýËI]BáÑân§}¯Š(ßMnWy`
-r,H~¢g!°1Ã……ÏIØüÈ4½ã[¸–ßÍK¦(qáØ)OàGÔ‹¿ÝzŒÍ,ôy‡É!gº“\‹Âf’…ÇøYsè?ÿ*b·
-pðÀ²Ã·’‹³½áÈrÓfõaÍy¾Ff¼Ë¯Ã“®zϯ"
-¹8eûEP]¦’HìbmK±Ö(Ú`'HiGò‚l'#H޽΢TÝT#2¡$À‰9¥ð Y:6ÚÏC‘;¨uÔDúƒh¬ ?äƒÍð.¬]‘ K~SaŸ`}±ó
-„âI6÷0Ø$G˜W¨ó|F[‰±CÞó!•ÿÞò£á “†û‚©n%®Ñ
-b›ï_i½œŽøCœÄìþÝÒt=¨7·óólE”‘ò4'¹6>,¿ÄŠØî¦ÍÓ´*Þ’2ãÉìÓFËø“. D£ª•›Ü°?¹(åÀAŠFh%„‡›Wh
-H‰”—OÎ\7ÄOà;ô¦!R”H­¥oa`Vöý·ó£Ä׃ô÷:pÀIª%ñ_Uq„Ž™ÿèhOÕ¡>§X ŸÏ¾Z³VˆÞGæ}
-ýd 5‹nc.{|¿½ª?ùßÃlÉX_@N„êÝú\u™ Ž0 9µÖÙÔCÔ'hû{JLçkˆ{¯ÐUZÞ.Í—P÷&£õ¾bÊ>GÚ\œ9áH†Õu¹ñÈx.ªÐÃeö™¦W­1–î«Æ3ºðEÛèÍȧ •%ÝçLþô¡kõ.S…ÄÑdCÌeõ¦3c;¥b”««¸ÔU;UcšˆÔ{V¸F£Qd'·¡]ȳ|Bø¢8Ú’©™@î–ÆüÓKvùþí¿ß¨ì“cçl±úÔ}vžhø¢õÇï[ÄÙyx¬üòƒgË“0›Uçσޮûõ'oú±Ÿ>(
-.e´Hc— ¡«³*»±>h~
-&Š{éZŽ¾xø#!ÒrŠÑó©•@ìqJ(Ù Sñ`
-v9›å¹"uUR"2ŒÕ«æ-²!yeØ>'Ó,>y|‚’¬¶Ö¦ Š¦MŒ|]µw;Be’ºŠ)AåÒRã•6![‹¸Î98Õ`‘…Ïg½†ÞËíŒÖÝäô"س…t’a8þºê Èré G§äÊyódyÊÊõ‰bÏC²9%gX¢yF€ælË×Ut:–RÓàøa[’øÒOØ©9õ„>Ù çE¾g«“¡ŒìBzeÝ@N‘3 ¦Îɾ¢ÑY!´žì¹JÀi¦Vs…»à&~wFøÀÎUÐ(Ãä·ö)ªž¼…EéâuN*„âªüt ¦²¤lU dΘk\ɺ¢âçú&¥Q»$F[ÒYXj„ß©‹Zí—¨±@Œ[
-Úí8?Ü–ÖUïTJ[`¡$U<Š¿p6éÍ.á1÷ˆ¿±úwø¿mþ—=´“¹¢Eôfû}@Ô&EW“!¶´.NŠ,<j‚”Ó±d1¯-µ}­µÝ½’KÆPPdMõ°bò=)¤qÎaãÚZ¨sH0Fîúü„À‘ ö>ªµ®›’·ykW§Bœø,íœv—F¿ææé1 [&„yŸqUô“­,Y¯ÕoËb—d"4kÜ#<[wÈœŸ%";' Ârúu@p3
-ë\CL!gú}ÕRj^‡!6öÑVA’H¡»Ê­Ä’ÝæšÚk>U‘äO­ùd?Ä<Jx¾ðŒðÊèܯjã-Òk Ók#žÙÕ5(<ÀxÆ•bLÊÒ! ¯¨ 8ˆ®åûa¯‘»%)HŸ9)™g®XwÈÃß_=Ìü¶ÁS¢_Æ!¤ÑØÑ°âq¬€|cº—ÒksËì¬ìàÎ:G!J!ÞÕó RºGR‘j&ìÃ9i‹s Œ{AóÙü™ Ù\Wr'Š^ ÏAàur]åÉN÷_öÓœ¨@UìEîh"ÿ¨Ç@,:X¾ŽAê¼j¡ú7½•7$HMX…hŸKh8Cö²÷F£©6w΢ä4õiôtÇ $BF.‹%³àzÙ-p®Â@Ç°;ò\|ËêA«qÕ&J 1’o"—¥C¥\ÇIðŸû=â‹”Áä‘Ø‘»NHïOÙ­$§,j܆”ZJ¯ Œ]7½§&û±!4²{îq—àô¤ˆÓj¼Èí¶P؆9×DnVK¼|;ÜpdïœÖBvÒÚ¶Ë!Ó<¥·åÉ»ûÒ rJÒCmŸÛ '3Í«ûhMÞÏøÚˆZuM‘ *…¼+$+÷X\µ—Cf¿`@ÒÉy ÉÄ£g~9㛫;VÑåöœt „~L|Žöó;r\\B¡ U’ÃÌ‚§yÒVõå„riÄ:úº^L_™<g`!LBLú¸^ÜxrÛiœô¨ðZPOŠ÷!ô•mÁ„T=ÃÎR›2t›ÂÒ2„m•a,&‡oXCûÐð0ééªÞ;È$›ÿ/hHÞ¬±ñ8Bæ’©òFz,Iª2L³!Küôò/oBõ¶¥|¿SÍ7̯{ |”+®Z~Eà_©¾Òo¼o¯Ç–Lyy2Æ.Ùþ?ÆË$I®#¢'àxYÌÚZêmÖ+òþ[=)Vfün™L’±ˆú8|8À*²·
-$ýéE|ƒ £]8¾‡$¤ªKhA{™¿"PIê"Íþð4`aRŸJ„Um[s?…5¢Žýݳ<|§o“ÓÓI_áîK֋胟#tìï™ã•P*̺]žÿUQr_«ü6 ·¢©t„¯ƒ{‹ùC0m7¤è%TÀ‚ôÀE»•é:em•#¬X :Ü6ca!?‹À|ǘäáÖîVR`í©"%_,øþOÿ KŸeéûÂg+þ!çÉÍ™ð›ÐrüNÂØü²" °a={FÁ„^nyµ’")„a'R^ŠTB’Úø5da¯(©Njš_§DŽ*ç[åU¢áv1o×û(ÊÚ%ÔQ„Ed
-CIMÇñNM¶À }’
-ÜpÏ0óXW«´°0?´žŽ+å/Y!~m­xºq»R½;ï~#Ö,ëG‰Þ`)
-›èY‡/%w?ôñý‡^n¾`œ7‹
-LqFÍJðm
-¸øÀ³œÍ”؆§ØДR, Î$bá­ ¼ªePJ–t«C(«Ö Ôo%oÄÿãÛ­ÏÉ¢6Ù@TðçC  `ÕX>÷·’Ù5&\eí¡ÇÈ,Ih%,E8ü$Ž¹Ž!':± Â}‡ÖðÜ_Œuµõ”T¹óNb8žý#P$æWf¬ù$¶ˆ£ÈEÓ¯,Žà›ìZº†•Pq‘ Þ!k"00lÒÞ0C¥"þ9cS$#f$ãWÊùRÂßL ËóO.â.µÔ-c?¼dh­Ð‡–o%~T!ì´Ìš¿BØÇwªpå`Ïe¶
-?g2V4€‚±_ùÝŒþøv­éK.‘õ¥ßŽj°|M†•
-y™ÞaÑÂføzœ„þRU4‹gçaqØÆI¨~#(ð:o_Áoaød¢†Äu1âÃÜeÚ@{;ñ¯‚0@¦i¿† `A
-·ž§h ×!ôÃED%`$OJúäjÐ_.Ñ‘ˆºñJ:¿—Dß þ‡X¨éHîŸ)@·`^h"ûAjë1à¨y)ñƒ0Îm2»Lƒ¾SEI3Éiœ71<[Æ>û]6ä!Ÿv¦ý{¢ò“²ŽÙژɌ¡Ly·ièSIVJ›ý(ÃG\Ú>(.ƒDÆ}é7
-ikñT(¹©AÙK’<XQjOª“øQ“``éÆ86™š—r:üÒ¤ïHɉV|Ç
-<«„-„; I¢<¹qÜnCYΊl­!WsŒ£Ô&<n~S%Íd2O
-ĆacÐRo5‘²ˆÂ^ò(R„(V÷02VFë륡¿ ¤!ž+KË?î«öݶïKI%²\ä“YæÛwDÈ'§ëŽùvJH;;-Ø÷WQ†¨½Ï[o( gu™ŸýšÔ×S’®@šñ8)ŠÈ[\Y^„òeà ë…¨ål(!R^
-ãíŠ>j¦\òвµ|±JôÙ.ÒÌó¶
-—’ ÷ߊ†ÒVå½}Nÿ¦ToNm[ƒ Òiš7Ñ£Ô)¶3ßܱßÞq”¹BW3^&¹uä@=ïàdr^kë[xë¾ÿ¶_pøò¯Ê‚…†–"‹9ÄpÔ~d9€ÌRŠ0Tá ?K|Ôž¯ˆ¹rUYÚI4Ãïë+ó@ôòÐ2ž³ïNñµò¡üõÒ†VÕä,èc)#$‚ÿTNËÛ¤ÀÇÊbÃÝéS¶kš&9žé»Nñ
-nòG
-KÑøä&ÇÂþdµ¢§m MΆ?céæ@ÖN5-&UD²{ô§h#ÔVݯÁï!ä0S›‹ÿ*‰Ää¦î5¯:šz‚@ÐÂX¼‹ÿh6£ƒs·è÷j¥âkg•ªÛs±q#ñÀ „
-wrDê)`X‘i^ïOàd— î$»:ô¾ÿ–ª—÷ÏQ'm
-£ø^æOÂ0ÍËçÊ°)“]=sØ n/x›´\é2Y‘]Ç›tϵ †È‡Kæ»@P% ›1FFÍæ ³E€dø}šË‰"—D“‹æ[íÿ*ñ{0ÑEÉ”9õÒ•T–6óC 6­‡i•s÷ž 3:qÒQˆ÷ÄBÍŠ¯¹ºO(_ËàæääW! œªßkÎ"ðm¼H*û€ÀƒD¹ÙLmÎEÞ•M¡èØØç >ˆÌ³m2ÔÖ Ö¸L¦zR™RD¶ýx£ñ8#è·ž6ÁÚ«±ëOx€_
-Í«ÝD«!ÉÇ%¾¥MÕ¿£±?Íh>ç80å¸ÄÛ9t÷e»œTô–g´P²«IÌy à5Ïh1•ì¸CZ…Uv“ðÏ»áÈ€? Š/K`…h¶HœÈX!]؆"§éƒ¸®ºr~ !¥y°Gö¹Ï;ò€²í«®ÊTÀ"$!9³}Î…ˆ¡zXXÛ‹‰k.ä)ÑäÆž“èX.yÊmoT
-7ÊSþ[ äq
-O
-³¯„Ê.x‹ÞŒ£}+ ¢??˜ÿv‚#sÔEnÇÓ_ Nq*› »7¤Ô±£n½çó
-ÿ…ú¢ZH–åñ„²céȬÍ6eG@Qi7÷3[EÊ98]Vw-ýñ¢VòñB„ YÙ2ÞòAÁYÅ™þx•˜•A*ô
-¥«]›—ò„Ê\òÖëãU9tZɶZz8†Í©SŸ>›FOÂd‡Ç›È«³ÎÁWWÍðxk[ÍÈߣþé]•û‡–Š4 ÀÏ_ÓPõ
-M æŸõ]È¿&åU öŸ\"Ñ2oÌo¯ÓšMoÊÄA²[§ã „?~Ó¤‹ÿld+Žú½n‚í¨âó¥ŒtŠ A­S˜m6«×ŽÁ«2]”°Œü
-v‰Gõ=²'aíñØ7µÒabìj/„¾ªäDÊ°nês¶Pbîž›,?É‹êQ]5Œ|¶€iÔ¶€–ÏUø£Ê`°üåŒú{À¢Ð*Egâ]'èAè‚"Áˆïûüá.û)’K= <&í»ÍqW?±›Œ¤w(¸Ú”t1X_ö“®7ÁhQ=2Q—f‚d7˜‚“Ó”:*Íè“ÓlG!š'e£3AÕ0Aç’lWH›n=LyŠïgâq¹ Š,;Còp€¤íAíu¬/wžJtIc×£G@ø$?3yˆ7Æ^ó€n3ªø®–ªú³@Ð]ÓÍ» DNJH0ñð?HÒrqU||¸ºÔσ\šàB®½ô@üÑ'iÈÛ:‡R $/oOªÄhÒñÒây¸d .vJCZLÄô¥ÔsÕ ‘`àD¤Ç=‡¿¡-­¨©~‚¤ø ~÷IB«X™áV?åçá¾ÊˆmÞgH˜Ç.ÅM¢I9Þ…w ©†ZÚ8lñ5
-‘¢Ð¡¬³t¹ÎsÐ'™<ÚËcàG}ž-€LólvÝ2E½qTµ.jÃ…s<‡Ð„gW ™A,ò¨[î`iŠS’ò
-&7b²1sT(Êoº F4âðYB M
-¢¶/³”è'†ÔDiBYÑn(ïPe¨‹«°£Êˆ!¤¶äÚÑ\_„?ººÊžvŠô¨dÍË„@Uè &4Öc뉷†œÇ}•µ¢e—û?#6˜‰Q1#Ísè±åE
-‰ìð!ˆœË-´1‘Oñ)Ð_ÄÓ¶ý[°‡éAQG‡³uQe³Œ)å]5FÇ-MÉ/ð¦â „ ¼©&†äãÕß‚Ìç*ߢtŠèžÅ£Æð9T9uF¬0ç íËg›â*t&Ó
-„›¢¬­fBMTTùÈŒ©žˆ«ˆ²ìÙÒzLC.s¼*Œœ˜X1°î«
-]„m=FÚ‘.€] ·Ìî±3G§/aG
-ÑÒÇGÍvp\ht+ó±9Ð #gaâ¿`üÚbJ8–H'§ó]ã¨Í,·‚ÁëqäÐŒSb¼Ø]l7\ ·E 4ÀïpËu1ú&Ÿ*â\>Š)ëæ¡!ÿ6”áâ;^ëkAUw­^Uè±ÖȆ¬ÉºG}+b㈡T"—ñLÖÀÂz7³µe
-Q•ùááúìüTf«Ø!—ücçqFqÈÿ¬x¿•!xv7øÅ$,
-]?ò—W€YUÉ1‚Ûw ðØ6ÛׯEÔùøR‹£¤‰}ïïWhDÕPÊ=ÊÄc"`›™:A>üq˜G Vþª—ÙÏ
-XŠMÀeõ .ɉhl\6©JDôBI%©ÌWÈ8Ù>ˆ¹FÀv ÊñÞˆÎÀS–°>ì ßþÄ †fö¢7]1ãÂeæ‹
-¤jáá.áOUm((ÜcÞJ0ÝKúˆƒh©ˆ[Nµ›ÉÖÅÿ†W,¹y•Ð"So..´sQ0’x5<®­DÀF9ئÓf‘ø0¶¯î´½r •þAçqL…u¾!6dªœ£ÞÁSî h@;an”#y7ÎòÆœŒûAêÛLÉì°ɨ˜5\c’@ãÉ.ȹ:ÅN–ëæáYJö4HZ.ú,ž(*ϲüMRÄ»H½•ÄÞb˜A´EÆüð¨kj½IY­ðŠÜåœàÆ]<—áˆÛxɱS»Ž£œë~‡ò*F=™Þ½5ý30@|ƒ¦—Фʫ—¨.'U0y»ˆvÚxI/8Yëë>_À%‘ ½Äþ­ ¦¥]P,5#Æ¡u»"R7.É-4ÑÄ NPŽ"=ÞA "¤pÜÎz 9EÆ`°»#² x%öü·’K°qH&^ÏÝ!ý“>o‚¹²èä°JÆ›ÛCŠùÉ×5¯û%ˆ:2®þROþÈ&‹µ€?î°GÅ´býU£h„I`j¯W1•KPé_@æ?·ägÆâ¡c´B‰ìÞ‡ã]÷ÒÚ§dzo0¿œÔ‚òy)h|é®æ‡%r$±È.”^C2k?q;Óî˜ÎÔÂSpø…½êøD'ìCW£{¨TAMd·I,œëá—M9û'Ð@\˜Ž²>¬ÞKÉu¢ôa!êûŒÇï,™"-&½ø
-Y¬[‹¨‡7e´r^’y>\¨â(œÀd§œ<‡³HG Ga å¦Ùþ\±&%\pdz±‚ºÌûÚkuOˆtò ¦ y¶Ì yëÓÿ ±!U&]ëÚtÚÝÄÈ'5‰¨ Ç_%–Q©ÃÊ4qïï¿=]¯C†Ÿ—.òâKlòeŒB‘ö
-G
-!€äªF{…¸¥i>)Kƒ¦Z„&”"=Õ ¡hÐ5`/`Uû…<^ =€‰A(A…¶Ž™×å¼Xè8¨I÷XqÞzM4ð<Zô£Tê%Ю‡¼QÁ0ö¹JÞÑcÍk°R‰˜”'—sM¿È—­geW>JAÒí׫ Ûtíl_ÍãOYñ“îD.åQÚ<Š
-TXH¤§J¸Ÿ<­ ‰R¹}Ý7ÙvÞ$òë÷¤u´,Î5š"%–{,_^m
-¡¤qmÛÁ³±h¨LlÁÛ6ɶù°¤r›÷+÷'›YRh¸%D‰— Zäã6•µŽ\Õ¯EôDb ØAjƒC¤
-É(•mb•q¼*ZkY²ùfC á‡ªxˆ_„“ÛÛO_
-žý P“6Â`¸:®ÎÒëàw1PÐb}^[„¼€Ò<·4Ž|’ÕdxO¢Ì¸¯|1y{÷f\N1'‡t!"ŠYÂàЋíå—"/‘±g÷t|†µ³5GÆÝcÉT³ÊùíëÚé$/ÕüÖ}úöŽ’|µßCŸ*¦pJq¸YÁ2td½ÛŠËleè Ÿ%q‡Ÿ#åÀÿgŠ…¾±-ŽÂpÔù¬g&PHžyšX¦?šJz9:ÎøÅ÷U®˜¼ü—»€=jñgdXá+h5M-î à¤.Ã
- ­{™¦A¹µ^“XA Äzâq£ÈbÅØàáß¡» >áJQRð\
-’Z9Yd¼ŠÑó†
-BÇ"ä;-DÞÔЬéƒ …´kâjdŒ‡
-y `ÚH<G7ñQ¶ó´KócÇìñþ|Ú i‚Ì[ÆM\»ÇhÙt#²rX2- ÜÝð…œ£P\¬ÐJ{…ÁÀ$U,©¸û a@¥]2½\>•^ªÍئäl²±·%©ÝoÛIÞêåì µarz{!oÉp±ô $zÍŠKÏ,É®¤¿y 캡®—!•Š-)Ùvº*”½+Fìÿe¾ŸÓeƒø¤­ ¸a˜$'ΡªîÛlÄ3ï²kí2˜7AgÏ?Ù<9´C pIl ³—D´ml:¢Iô€¥Ä‡†2ÿhX´º*•kkP–>hcØEG]Ð.Ž9•<ækmjdÔÁ`”Yöõ¢†¥>YŠÍ{h~öŽÀ}p
-NKÔJƒ³Ý.{úz#£Ož™ÿüãÇoÿåÿñ/i- É¢j ½‹ËEüT ˜žr ™J°ïí¡`Ê¥dÕô{îZL ~ô­t¾æô¥VdKDaÿᦫAÔ‹‹ä›£Þ%Ir&æ¡<(ª¡BOiÓÐïÿ š‡$t/ýÍ™Z!Lm´3Õoªò}ìkÂÌí Är²ˆÅP7«Lë, «z:.£âRð7@é!(ìQVŠ_…‚£1= 5ý*EŒÈëÒä¬ÄÃý¸ ÓÄÓZ„`¥4ºÇL¦tڜº¸ç9d|ÈÒàÎúc;­",}¨øi˜0[R,zõV ȶ¡µäY1p~U?7Ëñ/‚’„#Лš7ª~ ¹ÐP 4>!c¤ÝT5ŠB'T>ç–CÄžˆ—ÎBÞo‡c”ŒÍëäÚ"øì‡¬^ѱÌfï=ò52§•]XäW
-Z˜¥dØ~yå_U܃º0 à93Ô1}†‰@óø—˜
-D¥^™‡º‹½œ¥Öu‰±áKf}YçTæý §JªD2“EHË!‘ ]Š®…BæQ  n• $°ßI cÛ“O”ÂòVU$‡\ €k­(1wt),ÌzR…`YmXû¦{ ÁöjyQ¹ž Oà…ìo›‚æd‚Ç,ˆîx”ºÏÆw¥‚VB Á­:¢HÐpLh²Ä½K¶P'«Â
- háÏ(B©‹ÁXÌ}ÓsPaÁ¥L‹Ÿc¨M~ÊñîŠ[’ø2VhUTÈzñ…±"Bà]Ô_xlCVêBáŽvjÀ ©{p.›™üIŽ,°ËZ6Aà0[XŠ€+ÍCÈ TS’H#­ã9 h’ƒ §f;ú²ô¤R}  AIMœ ‹6µ*û™ò˜›]ŠxWÊy­O—Ed5…€Ù‰ UìæV
-Œ>«"Ögh«‡€=ˆ6ZÞÊî‚jÉÒöü¡yò3‹ š b@ÍàL„4žé\ãá\.ZDLk½ñ æú÷PV”¡i–A_/‚æpGCK@—á0 uŒ”õNB茺a@Ä
-å¡ÁÖáUÑPi/U#ó'‚˜+aqb&+RM¢ê’d úsï±ã4&Ó
-qÎá”»À$_ì^8Psbø¥P•——ërNY½\˜Èö0$x½å·£g«X\üŠZœõôy ¢<6ªÊõ5ÉC1?( ¨{¾ÃR@œšÖ¸¬±\j7­4Þ ’Îa „—ˆuÝÆxp#àç°ñ^ÜÇ;eª<Ú±
-€Ã÷-¾J DȘîXcÌ}_nY¿³>`L[Âw¦lßõTÆç ¯wjí-É,¢e!i^¶)‹£Pp*j AÔ ¯Y%+ru±ÝÔ{!̤¢;r‡é‚ˆ`ÁZªIÆ!BrZäe;ÄJžØ6ÑËt9³Æˆb Yò–(U¨HÒ)ë$C3d–ÎNB$óL©<¾2³BtSÂGPv>…ê铢텉æï+7a&¤p…— }Ý1§ËÌ%D²Ô(î¨Mg@sAØ9ynGª%$5^ÎË(×–XÏN£!K\•*L#£Ð«S$9+R÷ £!IyºÊ8Íȹ$Ù€ºó)p/¨€-˜1¨Mª©Ì4P
-˜Äà °|;„ Ð**âƒÒÚÙ0œ’,dUF¬QCXì OG¯Åj y§­P(o'ᴿγ÷ƒÃü¢{1›ÍµÊýœÂb¡“ í®OɆÌØŽË”˜ÐÒÞ&¿!´±à$XôW± ]jŸQ.â8²›|á©š@† Kq¡¿F¾\auaÎ>¶þ8¬{5®F·‘xV;yÕ?Å#Ô9íô;#³Ë®á8·1,Ú1¾iˆ__š&`y]ðJÅ&
-‚ u Äxßòi <¥ÊÝÏa-»©ãr ù;ÔMJ¬™üG>„è*ãU“Þ
-¤˜ÏªïtPO÷Œ1ߟ…h™!_˜æ=àtÂsñJö—ö6¤ùÁb'šˆH+'g@Rç#fðò²W5¼¿_wÈü×9)u{ü‹PvÚ”®pœBKY9|aGŒ)} 
-ræC.¥ Å$`œPâOA
-á—•X[&MÐD1_=¹F&¨€M©à`–R`
-ŒYöþûÜ °2C(Á€-W…Hf|î=AЀ%ŠÆ¯·CƸΓ—xÆÏjî, >û(BŠr?l†Ü,u_uÂ:?ª½ðH?‡qIIÈQvEn,ïùs †ì†µ ä#ªÄ=èó'åRe“WVPHVHu_[³ IÇà©^×çi· _aУ™X7øB‘¶è±ÄÃE Îüc!K±Âñݽ†hbÆ@¹–Žg;Ó Æc?˜‰žì91³•i-¡µB€ Yéí|6¾ñÂä0wzIp¦€à`VªË¿Ü) ÚÌb I\@u%Õ È­ù‚<,ÏœyZb/ÿh©Éõ\u¢ù鵤í€-ÁÏ!4dÉe¶S*¦e„Áó×ðá$@µòÙöÜcôMîÍÆJyV¹lÉN½´(A™lC^‰0æ.Z奂ÁŽ}þ¾/5Ê‹ßåÅBÚIÎÖbI»xBÏüýMPâBAÉjï
-IÖ3@Ä5È`êW`ST‚ú 9à]Úí±^*<NþR©î‚Ók;#ÆÔYX ÀÀ )°ît±©ˆ3'! KÑ&¥-â‚é/!º¨ª¨š0>²Çç
-‚ž_÷X2ƒ è¤G2Ÿ8ûƒŒïÂ0FüeTá·8Ð2ICÛ ¯K’û1œ†d•±ƒF¡Þà´P.|‡¸À¼üÎ+ÞntÞÜ´Ç’kÁéy?'3¨Y—«—¦Þ ¾Ñþ5ÙÚAU0ËÃu:GkèäÈ”‰4qÒêUŠ ,™±¶ÎñbgÄLŸƒÒCbX*õèç5‚b™H8=HÂø4¯ôq
-¹
-#ìŽ1ù£†v‰uR;81¥´E .[%„q§YÖ8Î+eÃf;:8wå³Ò9f­ÀV?Þ‚ M,`FþåW"ç(ˆÉ' “†ùeX3ÔR1º 1¡#äФþ±Ds &82T}ZmÌ]…ôP¾K»Ç¶ð,®ÑÔ &œ¿DšH=ù•!Ñ+½ÌX[é r
-éâV™ðžßÞ(ä* #ÏÁ#Í<¥ñn÷J̓™Ä´Š"ƒ ÏTµrº¿þv öô¡!1²WD¬žó’!aúk‡´Ç1´ÿ©ø0b¹XÖ•dD.Wšwž÷Pæ{ÉšWßÅÂê±´`]+ÏÓá}Œ¾Ë‰UÕQÑ“5ž{:ùK€{Àc­G§ ñ
-ñš×Ìh„Á0žtÎa_­ZX rÐ (£+ê`Ú<ˆFÕÖƒ¬UíÇA°+¢^‘þÞÜ°&{‹ùü»]Ïâ) ©*¥û†£&GÍdZÉï7õ
-Hãy]@¿“?}Pȃ oƵ‡ ô‰êéaæ
-Î0 ™Pˆn[r>´ûôRå=t`ä<ĦÞXE¦§'Y_ˆô íÔ“ƒƒŠ‰+_+ž4šF«f̉!À(«sØØ Ð8B  YB”J²¯ÂIqFÔV ™aO¨Ú¾ò%ès~óUX.-Š4¡Ê=‡Ùk·²0
-ÀËM½öËÀ*¶ÖÆß‚ ]ú*x`‘HAžmà
-‚Óœ(TÚ£ ¤ìš%)*1É[J-fˆ|ýÔž"'¾¥\P‘µN 14ÊŽ|=ªPåPÕW»ù›¡
-Š·Ò^÷Á?0C÷ú|ÕÉ)’˜£YREX¿Â~)±H6k‘±Yr·³Ê ’;4ÓŒ¬ž#º*R“þWëÐöÑ“UÂÀ£Ç¸§ëz-9lÔf ጠfz °éœ-s…·¢Ÿ¯Eƒº õî2ª’˜|$?s®rÒ—8ðDJX9lŒ$?gžwš!*á›EƒâtµhõÇt´Ì<)V’"ö?®}Â5(\Œâ¸Mè’
-}'¡\èBwÑëðj¸ÙAt°ÞD€Jß$(Š‘¯ Ÿ}
-"x[™?¯Þ–Iy+Eq•=Ð&¬Wæ–vH.64ð½^Š²:nx%%ÖéSÂOÁXa »klü gCË•„tv”ß&žeF Œ<j›E[C§LÃ!Zä;[æiÆl×> 9Öbž¡•;½Ü‡ññæ¡ÂJºm:"yê?õiÜè…Yd@±´Œ Ø)¯rTל%畽ñ/î’Šúµ^Û*)\~râ|ΣfÎE˜g[G¹Ý]â=];ßÝÉÓ’cn—ð.÷Åß”ð82Å5|À<ê¥
-ð¡Ãã6æVr§{_²º ]þc¼ŠO4y¯ìkG¯­Ê©ÅØŸ£Ò8˜f¢ïg×Ø“ñÖý|ŒÉôD…y¾y‹:#ÞJÂïNÙ¯äY§~ˆs–,6»w£ÙqðÚós‡…8Π/pgGrÉDW¼#¯¹“S¡¢ÿŠ$&³Äý Fr°¹ó¤«‘¾à ™uÉ\2ÔSmð…Üîý^_±¬1’QÄÁŸ½vÐq¿TŒEÅ­Å4ÓÎóý3
-³ñ¸н·³|¯ùù›š$F+Vïw™>bµLAü
-Ò¢ix¿~ÄôÀ¯mÜöþªeŠºÉ'Õ‹¤MÕ–c¶~ç;=6«Ý{ˆôZr‡`b·£$ɤµ»Ýš%
-çI Í3Ã{_E!Ò¼ÄÆQWœéÉìAÐrµà@ivo>êò¿\~êoCéùë³·‰Œ¹°zqü/5?G¸)õáÍvŸSOh ãµÔ·)ÓýÅî§"¿·£-îWý ^Dxn0ˆ="€}Û_š“’åñݸóUr×d¶Srß\ZœÙÑ·aDl§¹äyTœœ˜çÐwY=$~K¶“/ÿÕëÆ(¶ö üKZºf‹5On¸Vv+Â-WQu+wA9 é•Fr ¼Ì7ø"ÜB]m†«_£`s¨£ÃWP²4O*u5%cžÓ¼†0P-;t¾q6æXïxßç:éOl>÷ñF_ž%3ÚFm<ܵnh¼˜ÒöÒ½ñnâBüÿ,£€;ßý’÷(Ó)^Úúkñ:¹(¬NŒË+nȃÉÛ*¯÷
-g¶’ØŠ$u
-žÚV-½jy0ÌelEHÕÔ¡D¥¿-–¾½ìÂ8
-Ô¨}2Ñ]Ÿ ØJ˜¡„ ò1oLåÊeÉ’Wݼ ¤¿fÒ¡ÑçöÙû¾|çEé•X¢=†J°zu 1º„ýÆ(e[ŽÁŒ`E±åy•‡‹ƒíâ_nfp軟ïø)Ëäœo>è{ÿl–þæ©öÿþÕ¥6£*–”ÞÍE>j{H;á-¾êµ¨Dαê^JŽDXÙFVhÜ®\ìˆy¹F ÁÚÄûs‘¹B’`kë5rÄrTlµ>MÓà\¶Ê-ß‘“î3Æ|®ïw&÷
-ÔÄj—áðŽç+.Ÿ_É›}gø$`ÛýÜ–Û=¾m[è;мßÜB?÷UTpghãò/Ù3;:áw—õ7k×æJ5[`ÉH/ïÍËjZ_°>GE¥ÆžðLG@ÿ¶àæÄ‘@,ëz´W¢8ˆØ•0Ò³õó¨ á渽.NúN[YÀÊ^(j¿)ù‚¾¤Ï-LyŽ[ ïz-RýΔ¯E´Z
-·ˆô#ƦH 9»¾§gþš¬hëFÜ4¥ÇÎ=\¸F–XòG½G+ò!>K¾œ’è³}Œ/Ù&.D‰M:¢óDþ¿^ù/ÓŽâ1c1\i{,Ú±*)±éñDçq>œq.ñ܇
-þT.öv˜ýK‹·¯ÖÚÅAþ¤¤eÑyÛgÏùwŽð(ËŒ–çQ?èt‹)æ­ !ÙâqÌî’WúIƒ~tš~¨[®¥‡,/k–Ïà¤Z4/–p”øÑ‚Œ‡¶¥YØ„!—#žI¡…ãŒ)w?
-g‰¨vŸô‰‡œì²Ê;ßY­ÄÚÃØcAÌÌZñõo%~dóŸ5¶C¶ˆqòô~T´‹òž ¹fÁä|(­9Üm‰õ/è`8ÆôEAR\뇒@K«2ï1ªIQ°_C<KÍàB+zž8ƒ‚#-.óþùzË»Ë@ºQ퀗Èwž}â[ k }fÚAṨy‰q”›ÁìÎñ÷RÒŽ2%a%äã?óïàz·‘râ^FII«žo]³T[â ÞǨ¶¸äÅŽ»áUûþ–,5 nµŽ¢=€8kRʯي“Ťâ?ÐéŒ*””›](=¨M('³)1%x4x#.^Z«Ò±:%ÀúuÃ9!‡s¼jB¤W!Q…9ÛÎÆnï\ì®vúÓå˜Wü`ô¿qÿîßòmz™ç•þ²ƒlÅÜÚrn!ã¹¹ô$7¬×¤([Â!\yÁõd¸pIß¿z2F(Âtž£Œ5â ¸lø±8 5š4Ž"XhƼùNM¦°ÜqÕQRÒ±ƒý2æ3³Fõ*e\¦ÆL[œ¦éNªI¥Ø×—-öÙ‹Ôp[NkäTû»-â.¥—”Èg[]+aªts=@_x¨éÚx·£0ÌzeÏËðƒ;æ1dð†#ßiTÉ)”2ôw3A+wmí(ÊSNh¹{‰…½«†ómkìÖàì6„KjëE»ù_ñÜæo°E|jœPÛøÒeO¢
-뱦GÖò ”²„šî¨Ïý\í‡R4±QŠ+ªh(u^îÚYG{ókü4†ædPu+ JÑü‚(—a^õE§íFñÄîOlã‡ÓÎÇÁ¹Çq1¼î Ò‘ –¨—@5®Ã¸>ÕºÎö([ËPý¬ ÔX:s‚üºÝSÒÙÛÖ]ƒrèω¤¥•{.w´;j|ûJ&g'F‰« M=ôË%@¤ŸÎGMŠh"¾òˆ²O¿cº° †ù³ãCI– ùÀåþpTÈNuu'y­¸â5«[$þ=ù®—¼©Š%)èÚ~Ð{Md¯$¾ùW H ˆ¥YÎJâßô£è÷Ô?»±t£Ãžy5¥ZQF³Êdp4xÙ‰öl3S›õaöàac†ÒkÝFX«xz Rá*Ž,”>˜7¢SØd”`WU.y7Qà†â€\¢LKºÿ{UŽ÷ïhÌŽës›xLÜŒà›_7݇3öý|E´®xÚØËNÕgˆwnñê£9³ÓzP¤G¼uâ •¦‚—áyÒ½^SUÐ Y¬¶Gôµ«-1òvˆ©<þs"…f<šÔyî#ïÊûpe®]½¼KÔŠ0<:¹Ž“`o lµeÓÅŸ¸ñÚ:“DD—à_Öö”¬tÀ ’SqíHÍ÷V>”¼šÚiÝ»xy,¶ô£^o¾Ä]ÏôUkäÚ0×±U¥V±ËM°ëHÀ±/q}MUëÎ>Ãd„ßX<›u¬]ããi ¾yˆ<ƒ ýaø¼{€ÛD‡n(Ê×}óš9‡·Îwd¸º÷©W/ »oaÈ­k¼Øè6zFúk/+ože(™ÕÔv8ÖQ´ØO¿z3R¾¶nS»À›¶!$(]»×
-ŸØˆ¸èkVÒµÙ>è©a$¯M¿cwöt+3®S΀Ɋµ…” uñïQž¯h¯ r®Aÿ<x\䆷Z,8Ù;“Å{J,7Uóô-½÷/Äeî,Û˜C@v¬ž]Ÿ×yy‰?ÝÇ4K†Y»Õšè³Š+aø(åÐç“ÑcÍ]ê(9Ù:ñ±ÖæCQ6£X0»&—QRŽä0?¹Ï2Õ²5Ž÷ŠÍ”vÿžIÌKÍï5ìz"äuõTõ^ÁéHb"i}¨à>äÉòë#wQŠÂAÎóìÿÐ]9
-ùú(ÂëW„.ŸÅd
-–¥O
-H‰”—KŽ7DO0wè ¸@&?™\—º…¯¤ûoý‚d R7j/dÈ­(2¿ÁnÅÞ®ÖSŽµ—aõñWmùò4RËQj |~x¿j.µTs+ÍËô}‚’åZ«•È}lPŒÑjªÆUý*#EÏÞ¬µ´O)%«=¬¥6!QJ1•ë„°+ÕîÑZéVëãŸ#&I$kµz>¥Ü°ˆ‘Ýψ–=·f–¢Œ•ô3¦]‰ïKj}DÔ•ó+†BQ,Ë%æMµ÷j-Ò±!­ë™Z ,’œ³Yu[
-˜æÎÍ#îa-+”Z ‚úXçÇZûaœçM RПøk'Rá¿’çF4Ðo•é)(ý÷fhÇÇ¿BþÑHä m(cù℃x ^9nˆÊ0P‚Þé$¢Ñ¡Ý×xçMÞ{Æ×$È*võÚ$‰Ö‘¼yL@·hj§yw+qD¬Yí ¶W2䎾Â÷M¥N,(eA_N XSóaM29çÓ¯!²à³¡à7¨Êy5mÈ,2ëÛK` ‚û”O1gŒ„ ¸xœŽVdgCh5i#¯ÑwêZé&±…W7((pÆêY+«‚µ2)X°šêMô´¤ª8fVÏÐÔ0D†Áá,ÉžWU'Eò§ô·`˜¨¤:ã¡sJ°©Ì+^À7Âð3°6¡ÏÉa²ØyÖN#ð
-™71|Mþ²3¾qƒ†¦[uªe(èTï`˜¢¡>m. {¢f?™Ád®ÃËV½žÃÌ4,‰÷ÑOYáC8d0J=/-WAé–{f”ªßSÑÚ0›ÀÉ&ø3PÍ5·÷90›ªÎÝ‚¯.Ô»ÉÄn·Š¬Rq6¨ì¤žÄHÆm jÞÆ$Š” ÓW²‰[±©Qïs¶)á!éÀ‡ï{ð¸U“¡Ñ5Mœ?0íʼnz›¸…•f
-í¾.òRa]| Üç`Zd duŽúƒuÇ=¦ÉLòuªpпïJ€Xd^U#Á4MR\ÏÇH˜±j”&ßÕ£bKY§>!ô±bLjå6ç"‡êþºGÏ33¼égùÉ<Dæ¡SPvÖ­Ó'»I ‚®X¯!!$ ü/asî#2T×ð>y· FÖ$ºLÌ>8–Ȩ¡Gsé»<ÓUâš.»Î$ó/ˆš>a~l_5ß?U~|º ´’h#r¸|CÌ¥ÿËŸ>ÏAÅ8JG¯Å*Œ>b=£C|gˆK^‡n—}Õ+¿¯õÀ÷¯¤œI
-yÜn‰Jðjí*q>×…Òk†CóÏ1G9™‰Ax?_ ¿½:Ôpj•5Làm‰õ»§é{‚Ì«szEñó9¼äâIsÜþ³,Š`Fm"ØÉnaØîxÃBì›B„¯˜Ü[›«ô
-@ª'†X=ë7ԡø©ÎsºO›‘Èð M‚³šJŠNÐ[ƒ VþŠbo:kŸ¥dï;)“5•Mr⣿fõ«¯ ÅqË@˜˜›Ë˜s7]E c×/éA†¨ñ"ØI¯êýf€ºŒzj@&§dÌ*¯ ô~‘@)*DÔyÑlP=$Ûµ®D£€PÞç$Jcê]F<í'Õ,šÿ@05VDD#WºO
-ÙeH1»IN¤ÙõÖÈw<RÇžØR1ÿËÀ‚¨Ñ+ ïÚÑ¢±ÔC1JÚç°Zr ÿ4Ï™m'§Ñvö„'+·/Þ¡”õB ï†ÿŠX´£•† i>`Ä)ücÐOö=îP }q
-elSÉ+ÛÈÄŠüí² H™A¯¨ÓýæÂ_©UH<oA†XÖƒäê.  ±f=Ä&ï4µŠeãxN±Q±Ð|ÃЉÄúm.vÌÐá"–‚g¬ÃØ>Wy҇ȥŽ#ï´¹vt†x³ŽŒœü
-»/*hΓ¥ ,‚Ôƒ
-Õ}¡ð£ˆdú„ €aEä¶s:û¦§9žóô=Cž^¤_€p+ “^å"‡MììÒà…‘JÛg*Â\aÑ‚±â
-"+b`oöâ™Ì2=æ˱ZèSùãõ’$6nôºƒN  ×ã¥ná¯Æ÷ßú%
-ê—Šø–re­‚´øŽÚž"`<¸ÅfèÃù[8C×öY" ¥Øâm”€•)ÄyûòKÉÔhf ŽX¦úþ–c¢î1,«„yÁBcšwÈcT^ë᳉+××ó¼
-.Zˆ'Ö:2ME±«e]³RÒ’9ô5]ã¥Ï ÄoJŠ«kÇzÂį\Y½¦Lߊ³ô´5Î’iÖé¹^TZueç×EþcÇÎ Nèdíìêð£‘àÛ!wòÀärngF åUÑ`Ô l}‘ÿG…øPô÷WE•]±í×þª4îÃ~`2«Ò¿,6–,åI+'˜ã· Pîçéet™3úiu¬’)«¤Ä뱆H÷µD—9øB\'Y_ËLîÛ³z ^4 æIŒHhÿ
-Ǭ‰J ;Üð%Å$ÄQ\p¬£îr#NŒx­š+¶·ŽT2fÅ<'ØÐÉò £’—…!au´ÏÅá7Æ¢<oúmÿúvn0À>»#ÛÙî—¢¿G¿rÅew×XEí ÿ}ÿž=ͨn»^Z“b…C‹û¦ÿä÷Ø*§{÷{Ql!í!îöÅw˜67.F·ÞKŽ)q»p¯‡,¢Á¾PÃ~=üs‘lY“álJ¶¡':}–å:ÏBxîlÉsi¥·ÉÅ èÏô÷[\±»î}ñµñAˆfb+Ö„‚8[yrÜ×Ä“©
-|^ñeë¤CgjŒ˜¤™Ïo ‚8ï8W‡ß1,+/ )‘R :[ÛŸkÖƒì—þúöV„:0fKB+çÀ( _oتÁÀÑž$Úüô°"™•û ñTn]¢bAÏܙ췔Dbø²auž¯˜µg#ó~®§S«O|>‰¶kpI<=êì ‰.@ Ÿ+si%ƒsˆ(!-Z·‰:ñ q¼mUN®”E½¾˜uŸÄ/õ«ç;fM®¼ûX†X‰Úãª9Ñd:Êr=tñ¡d€´óVmĸm?Ÿ"ÑŽÒ9alZØx§ŠBææ) רL ç{q¤þÞK{)G}Ú«Ïß1]Nã‚¿úßÛüþ*ÝÚug
-ã`£w_p¡‡Qm¯EA¨î^!•†3Ömà)öÈ÷7 +1 p£|¥Ï£(,ÒÞlS/¿|e‰cò–|Ç ì~çêë¨ÆˆY]Ð9FÉQæàN ¾†€Óv¢Á¥ÕyÔÞ1+Nd{(Cº2ÎF~K¾CˆzRG¨»<¾£fx:6Jú`ÉözFµÅv-Cºó¨‹0
-¶†î°…?ˆgB|íû;WØ!NK[î/J®AìŽ)®£þç„ž¶ÐùCîj_룒ÃHÞ1Ù{è©ä—?œ ™×K‘’x½8_p«¿ ÂÿjÁÅî³ÅÜÛcž>¨maW’ ó;÷u¿™°ò#RÖaÈ¿Ÿï$ôš4o¾s4MLŸm;ÚZòÆ{qjæÀ8J¸:í£=t¥¾Ýy¤Ãü-û™ï 
-G™Ù-$xÊâð·Ù@G9míWN&È×<ê¼C4›ìc>b§ÊÎxˆmpךl°¯ÛÔ‹g3Ë«]ý‹»~ŽŽ…ÁæQŸ‹6$É£Ï+o‘í»‘Æ³ÁEèÝp±Ù¥‹,íˆT×î÷j à‚¿Áš+^0kaJçˆàD 91¾º¸È˜5š Ö0NÀÜb4,ë"o7«Ði« —ÑÔôô:—Þ„ï-%î.ʧ±¢×’’Ý`îí¦nyU k°j-¾ìZ+È%QÔšr/òþÀÌj”ƒÍžà6(un fnc©u[–HžÙ_)µF8rÞ-©äuMùNò«1?_‹v(½Ñ©Ea¦7x)" h®à>‰ƒº"Æ-À%äø¶æqƒÞÀ´­Ï’á0< µÝ‹15å½W‘ݳ›ÔxÌË"â ÚgŽY’¡Û:µ¦|"øß_ªkjD»Kr¨ÀÍÝœQôƒËJI¯£§n¯‡£™ñ+S*ŒŠ)j|®ÐÉÉ™GrJ®,¢­Šv[ÜMc†ní‡æ‰¥=­q äópŽ«°èNö3\u¿”L½i<?1~üþ¾€êŽ­qÊ"ÄG™ïWO"*œ”?—ÿRt1Á×äl‘pOŽ
-­Š:ì6¾ÚpD¹‡{Än•´øK5¿¹1Ÿ,†"Ñ+²%M3ˆÂx3+píëÆ”Xd‰~ßï~1*//žé×Rë¿ÁÙÞŸ‡qd 3—ó“%‚Gu=§¯ºÂ…—ðÆË%GŒ‰‚'ÐtƒÅ?ך¥oa`Vöý·‘E6Üj
-@6¬vv+™ù^¼´OB´3r"7ˆóP6t–Õ™Oѧeùûê222é²ì…ú¥¡™e„ÆÈ0kÔëTݘFì;tñõ*‘H´Í ú´ãøÒ6»9ýªÇŽté‘ÑKH5ÚÄS¨¢5¸…n£y’>Å»Ôï«HnÜ“ºE„Qo)¯Š²îç‘m¢„ž.R:þNÖ ¢É]á˜ukú—™ð÷2 Î0h8Äö®ïL -öWƒ(Ywš€¹Ž§”KɈ~~ÊkÊ”±
-}A²ûþô\k×»þ¹‹”ó‡K%¥Ë(m`0ò~²ÊYJç6Þ‹¨L}6"|;ðŒ,ÒTê¾PƒÝ£Ö)BJqÌrÄ‘‡Í!±6ì«œ$ÃÊ«€¹‡VD”ãB1Óu©x÷áçiÿ9•Ÿ°[ôqàÂõwæ®k¦’”q©ˆè–\‡–µz+¢æÃH$òÜåtŠaz.4äÆ@³|.êS¨
-Åö¹XsA«'VÑɬ™»‡L±ÅUsnn‰)¿º]àÚ÷þ’¢ÄÞ/xÙxFðêZÍëRôb¯W…›
-g‡§”„4aÌÁ¢ÄœŠLˆÝçÁ¦@|žò:Ž®cÃSë#v\ o'¤üEùòêÞ9¥%–åáÀ8¥H³;H˜¯*àÛ¾¡Ì[‡ a&nåL wVª.´£Ȇ›Zjº­”¶¹&^Á‹ÊÖ믫€u-¦Q
-LTŸc´Äarö:ö•Ó²"GBJ)ñ—ɳAvðš‹_ÔÒñm‚½ êÞV”¥ˆjFúN Òü ß°òœÇ;‘Ä<Ä9o‰ÈÔáþm—d$$B¥ú¾ª£ÏR´ÞÉÐU
-°F/!Áž¶ äÕO½öz»¨|SÅbÆ>ÿ98ÉÞ¶7r¡x à¤þ‹ƒÃGûÖ|_õ¥¨¾Þº£±Â^&sˆËó{‡öÉ!`¯ÚwÝîÏÑ<>Á4
-e<—’¸HþVÈÚõv¢Æ `uåºýU¹ZÈbk¿Ïcu¹ÔÞ0@
-F
-|®¾ áfÎ¥Þ´˜£F8 .6ÿá¶ÈR:̹ZF42L\¸GßÓ(G`3\_™Hú×Áª€_¢)OJ~;žr^,ºÇ†rªuЙ
-na‹:²C¶ßÑuú˜Ë¦¶&w ‹ªšÏ‰{Àÿ‘ʾ_…ÿpö¶—(©\
-;ÃOW߯j„ ½”À‹¼54И‡!ËC”$<+Ž\i¨k8œ» CZBŸ»)Gc¼2dV*F~”ú…!£„뮲~= ü7ƒß+xêÕ?¬H;oú©ˆ|N:Šµ½oBY{f!§MeHäZ¬bRã»9*þõÆŠ
-#'e«­Ó>¸˜í¬óÐê'µðvç{!
-™@𙥮÷w ËérÌPk0䇔ÞÍ۬ƒ̉QÛ£ÙQ˜­‚(Ï£vaIÁ&QŸ|Gc’ ¯\{Ê5ºÓ­¥QÆAJqß4cÉ•GIÆ!q]ÿAFÐM1¯QdWЊ£ )eé¥ô·MG¿„‰Í²”˜’t¹OÓ_Dˆ<`‰^Ž£l“µu:ŒÊG£:›d<‹ ÞïÏ0x¬W¶·\%Ì¢}(™
-˜'½{Ô=Ú j>]†“¾BH5‰´<>ê“õŒbM·£¨=è=–Þ>| V ÖsT„à}¡E2ú¤Êšàyyæ9/çWµ\넺u©ÿµ„{ÉSw&a{wÛJ½Ø:ë0n¬ÄZ¡7"8Üâ‹If.©Í©# Ç™ôAf•Nßp<ˆëDiæ“üÒæm(¢îQÎUd}b
-9’()kñ•oè„8ÃÎa<’òãÑYüfч㞳î§k'ëZ+JÍ$­cm>=>¦êJSíkÙîKjbì™ÔJ݈ò2(Î0´Õqjé¾”LQûxûéP’n9 }纻Ÿ$KÜüÆ=CØD%'§ùÔ:Žâu[[+¢»±Lwv(tÉuÍg²ǏָÅÂÀDMëæoyƒô³Y›G¸Çk®•±MK»Ö&>Ú`jêù ÌltˆßõhpJŒˆãÈ—òøº4êC©kiwœÛ³ãTÇyFQ#U¥ w=â¢;fXµ÷n£*óÊi •M€¬öVÉ–ÛBsoÜ-ŠsD=7!
-úu’´_û¯dø¡(%>˜ø(ç›ý¶%Ùo{(éÆ>&%4‡‰Ëñæ;¢”Š`yùu›Ë_á &%%è ôÆýÿ:Êj'®äf•,Y´«ÝZâxÃ…aËXš4(At«š›ëHéM~˜'ÂïÔ‰siªZØû9ó.êä–hP¾œÀ^áo4ÿ–5®æò²ÂºÍéfAoqôï"åÞg£$MÁ¯§È&LØ?Ñ£e £™*Ö»„Oˆ1,#¥Å¾Æ£ÂÒô9L"n]Ó繡þX6È>fO^<’T®a?‡ÜòÍÿL² ǵ7%ɳ&,m1ÚÿùòÇ¿¾,_ÿñï/ü÷ ?ÁÐ4mîfzVµ›ƒ<gûú×(²¶Äª;jP‘lhHŸD§
-ö¶€wÁagäÿ¥äg Æ:¶üýÍwê•ã¾Ë6¯ (´ÞˆyÐ^’W»ÐG<_UmÍþ·6Úi¤à’$°Ž¢ÎÎU]ø¶‡X{)óF‰Å½"¶lV¯@K:¶øÃ9Ïc§0Î1pñZô0r_(ñb‹Iúí¢OÛ÷çï¬èK …ÙÇèQ²F/{r¡Øø×›¢zÄùïY¡ëkJr§°`üý(9i25²D­Ž*G Jþ%À²àÄr¥‘?ûQf¶Bž·ù«E|V2RÇQ"#*ÝÛ5^#zñŠÇ6
-6™ƒbF§?VŒs0/kïu9Ÿ¿¤{R$ó³>ÞÄOü|ÍJ¬×›E›Æ
-½‡G½BØÂã6¢p H¼îb^*{]ÞT|˜Ó÷¹uÇÉWkÄãiÍÿÈÁÑK@ÐÞ0Áç’—:ê,þö>,êñmÝøjvŽåî*J[´†ñ3kïýëMÑÎ¥tWÙÛ”¸r¹µQ§à‡5®Û|Ä«ƒN¬£díq†BÏ™˜"œ¼$¢.ˬY@ï‚齆ÇÊ
-íÝg²ä(Ùêd?M%[2ðï×(!Y<Bѣͣ¬L™{hSûZ+À”—սǙܠ¬·¢SØ¿á ¬þsI%ÿ&!4Ö}õZÄ]dV¥óCÕbÒT) £eŒÌzõ’CÌ †õX怫æÖe%`K\ó6­^L‹4]}æ(Kžëÿ­ÞG7XãˆHƒÄ…%ÙýåVŸŠú6„N¬Ä—y›²H:Û\Z1®œ´Í-Ž%¯J‘ý rvæ_ŲM ²È¸ÿev[ÿLL4vÃç4D–
-s;’ Ö8Žd~å"Çä„eÐã'Yuö~ÆHRѱNv]·¡j°Ñ‡‚ ­éV¶r<|KǶ4T¹Üw=b8¬è~CX4$´ÞN³%›µw&r?~ !7ñ5& QË2
-â¾_ƒ6#.3Lý¬9€ÆÜ üž "a^ĹmoùÃ8,¹®ÊJú’ßèâG ÙD¶†­Çˆ}^AHd’5z,:‡¨oŒ#‘†ý%Ÿ±¹›)ÁWÂÁº„`MLÔwõ˜
-–ƒE{=ËÀFQ,´?/ÿ\ŠSÚ]þòëà 'Ž¾Ü”m¦ cŦŽ~—?æF$%Ô§J-ñÇl$õ‰Ø‘Úð’ÌbJT‚½‹“˜^„ ·SWl/dΡäíÖ%±jÆDÏ~äþ•ü˜ì6}ÊGÒ”$–²˜
-ü|#ûµ¾äÚ$™{Û¼™|R¢–yZŠGáð厇”t?Ši›ŠˆÒ…ú¾¡Oâ6ýG2M=ŸÛ°*K¯côIJ€’þ}ŽëúuÁ²ð‹Œ4£“FÐßÇ=@Ÿ?¹Ó/¿zuZ#9 àýÍÕ;ŠDb…äl¬Ë͈ËÈ<àPÍ_×Ã^@Ÿ?¹Ñ¾8²PfÊÃÔÞñæâOj‹ùå'?¸oU}"!MÂÞ±,?
-qc¼·†vú!C]LÙ¬Ž|áVaú€p1]‹²X‡Q&„°-¦ &ba*Àwš8w@ ÜjC”rñ ¶QbmUµ B'5~„_&’q+{óͽRÜbéÍV ©ôš,qèÌ;ã÷E×uòÈ6 ã¤ne—ÃtHcóI;ÃýÜÂ4…±lQ`Ò#ïCÌé,÷ôrSÀ€@ ð ŸÁwr+®Üˆn
-´(–Œy.ô#7õ)ÅIX¢«„§ÎË«/­l2¤˜†¬¡)È.°¬ Sjo>IÈîÀœfç2Ì'Ž†ßsDa¨Q©|$Žd<°@½ÇAHRu Ñ’]ÇSã0¨LTo!‘x‘š-+DÖ‡1I"¨¥øzìÕQˆøü–ÛA—=÷#Ð ÷|þ„ œÇlb­ðœ†7°ñ†€©m,Šœéíx€nÚñ8î¦ßßi_}Ð-4—/wöæês-ô0}onþ‚¹^üõ°ëÅ¿½‘_\¹Èìƒ}„ JQ¼8Ž[ 7.¥À?*ô™_ÄÑÔ| B\²6¾œH†UÈ}اî¦TA¤«Á5pn1ã’¦ùJ2Œp)ìÕ„¯š l¢,‚`ZØf61­pŒì6Ž•È»fuÈ"‚±‰r+uC`±¥ h¿ÿý熩°Á «Þ¹¦—›_«èOk^@Ÿ»<¥Â/ø¹Qn l1KÏå:O–ÚgMñ&uÈÄð©xÆ€¨¯ ¾Iº¡ÊÇa1r@ÒþnÐâ¤Aqȭ˿ÕyªF ï.³Êªvçç;Ä°|
-qþðÄïÐÖþµçb;ýÚýšsíØÌÁÊr\¬ÖžRLÉXœõ$€1ÃðpÏ›'! vJœŸˆwÌôÿ˜_WL‘®Cú8–²,ˆé â5&‰a%öÔ裦͈™dÊJg«|ÖØ|;L®œÑÉÇ0o®°Î3À•íÄ”]aì»´†Ü’?œZËüQภ$ÆÉô“et©µ)Îj5/}R"ÉQŠ¡¥»~‡.`®—Á2,ZܦV¯àÀ9„ú'ˆ¡‹ºâM-‹‚PŸÚϺ°¶ü
-Â3-j#óY&o›Á¤˜v6·ˆ+¢Â8£î´·yB:–‚e©£-FŇ…ÖóyÇØÒ›áÌ6öm`ÍÂA´% 3„]joxÖÌ¢9¦b=Ý~xÑþœD:)^¢TLÂëß!N™èyZþ /@×Z !ê":L˜$cC:’‡ÁÇGcÍöQwYü–•Ùê] ®MlÆ+ùnÓ¢‚Ú^ÏMŽZ_}ÄÎmþ‚„µ@`Ø‘†]×ïHvùœ†Â@3m dJru„,:‡ŸsCÈ€âŽj2½hgǹô¨2~?Í®9õ¯4¬¿";‰ppëilDS:bŽc-•,é'#þûÏ"D…2ÍCM|f^!<Pj<äªÌ%
-+K9Ô~•²bÞ»h™õúõ$Š«CŠK#?7ˆ>óã5ÎÃDz챑?Q#H{NÒ%*ˆqe‰ðŠÚGAøƒ(…™vÕßÞ tß¡FVN¦”c
-º bÖÞe2I?#J^ˆ,{š­PY8,åù °ýì×a†+q}$OX~Ž½}QÊì'ÂqcÜKÏŸÌ­ñÂ|ˆd ¯ßü*Ê¥Ò¹ Œ)¹ÊÜÛ!tˆ„Ê@Í@`NfÌ¡t7®`ƔՂ2r‹$¢Râ¬\þæzM
-gã8&Š©˜D³ö]…ð
-æX¡b3;žãôVu™|SŠ Û‰aÆó’õ¾£Pq-e”I†ìY¸í"¿À ùq¦„,®e¾‚ýçR
-I`r6Ä·J‰wRú ¢6`í‘aX96_¿Ã†À'ƒ¾XJõ®·âàØa‡ÈÊí#`vVX‚…šó7â z¸ö áÃ*›h®Ý|Ï}M%*žÁR¸†Ò˜æç=èqqEÖ¨I}8niX6¶òê»Uk‚ÊHžÃ ^ z`zª~Ú®ÜýÛ;o²V #0×»ï`ùh舭óø:³ìf®²Ï!Sn3ÆJ‚¿2‰_æ±,t¨Ìé•ÖüsC‹Ü'mš'ˆ,‹i©¢štmµ•çp­UÓ ÔÁjAäãþ~ó%±Ë,#Ø‚:pd‹ 4¤&\†»–CRóX¢$ B--}YùW:Ì”I#!ö7´úãe’WÄÐø>Aça­­oá­|ÿm?p°õ?ó·ÊÑ·J(’9HOŔǤ¥om ò24Kn0ý„PN§¶ºå-yZ”!F«ætX |&KÂ}š&AÁlÂÙó®¨î®ÒèíÏ1ÐQ›%zóËŽ {ÿµÞð!R Û¼#œX?šsi]E Ø—hAòÄvÂrÇ,ÚË)."Z\LíÞ€Ìjú80_±»§sî¿=Æè›3&£ýî¹1šøžas¾ê÷;óko ‰<ù±öÇý11P~àlÔ1„]
-r#eû¬«B/#ƒÐvóŲ Ê4&jc5-¨{yçee[v¶s<«nýÅK6±*óZØ4hq?&ÓŽ?u J!Ñ8Iæ~÷b&_ÎÛ×M”œ„yaXàX×`DüÉOɉëÅÉ7®îª#“(ŽëíÆÜ=+ñ`@-Ð¥èŸ&]€¡!Z<öU/ 6«Ú‰Êö„™ñpª¶G¡/8/-zóIŸ±6“+pŒ;_BÿÒ&/JšÖy•C5\$µžÆ É/¿Ÿã;4ÏÑédõ<B=…“êJï·³j™ÿÊ°r³1 ëJ”œV¿¢)Ãÿª¸aµ&À
-šFÖ£WT¥ð}/míë*êÄO{߶½g`[t$Ð%ôA ´Å¡jƦrcÏccµnHëÇ d”œ+MUlµ¼ ºßç#úÏßpBÏ(½s{ä{‚X°èŒ&¤!Ÿó!ƒ^åÅQ4'¾¿ ¼z#do‘”–8ªªh¦
-“:” Ó²{–¿Ò4o¼Ð±¾,cŠ
-BY"Z=&2Íl6‹ß{6 ºŠýÇËœΩ4 –¨êŠ»»
-C9:a„³ïQñm‚F#3ùñÃÀ„Q VH¶!ú÷s`jTä¨ iô« 4+Bˆ©qÉ°3pcÀH ’Äd—oæ9ê`±½¥¤ü¼›Ù 2aëš{Gpª‡´/ø”Z}¥õ–°1 Pk2!HR ´T Yb÷û&þç9%2p~dìíÁsž¹"8 ï…gPü«â£ªFªîZH«X˜ø`t‚`ZžÊ1Ûs:â¢Ñœèf¾œœ‘ ­,a»N¬¾“! f®›6º¢ºZ§²ËQ’YÒ,g:û׸¢a¬Þ´jBŠ­%B߶³kB²Þ°ú]–
-oYlçxÿð+4ýnxì/rJW¥nòZW®wÀI=½ Âbñ~Œ6…ý4Að‹"c“Æ›a®½¦9†&„F̲àÎñJcvô÷['„R¶Nê«26“H_j9ª ò©Øn €V†ä®¡ ø1Æ ¡ÂʦÏÏ<CeÐn£McxƒÌÖ(ãÝÇ ™çЖIªØ¦Ëå1Vcዳyë¤qòan˜hpç~s,» ½~ L’¶@n¬8èg3GVLV‚LG¯äT@d] c$˜7Þƒåm" Q4A}Fc„ádÙY2M·+E§$7šrR!o¦)±}H‹ßµÊǬÀ)¥¶¬€I›8ϸ✠üA•ϱYN 5qÐa¶@‚°X°Pñž¸_ÃL“Y‘‚¥™ºàBAHbµ5
-ÿK±hÍq¢ûœº±r6žšUÈA£ÕZ[D(Z°<•ý+ —3èí-Ã.‡²ßT¡M$%™ýG!!‰ˆt{ü«1…ÝI¯¦çam!2'gֆΈ^ÆÚ¢*MDRosMïq!¾>ö–ïH}î-îÕ™Q…9¦Ä²â¡zê5\lÜoh_r™ÊX„ë!>Ús²¤S;rwèZܤæNßàü\ÈøR~´(~¯Ä­™T°=n§.ë6¯*£‘˜à„À
-䲩‘šÃ@üyNÂ1/ŠXØ®%ÈϦ9OQÏQL\o}zŠœ~Gö[ ±²âéŸúøh±hÀèßôßr©Óºê
-“¼‰Eocù˜7¹Ag‹*l7LŠ•`þ§àÁøúP§ d^u–û8çlšã5góQMŒ°K´™ôÕæÇ$ÀƒP·¾—B}ì¹#/N[êÚÖnkÍœ;'„[Â@=ì>'È° çuÆ‚ôí›ex+ˆL!£Ú¬µíÏ
-£À0Ä*†ý§¸íA©JDܦ>Ø’àåá[Åm³2Õä‚c“#Jx}ö«GPeÁdhËm'%·V ¬¢±¡vR)¦ûñ¶úÒ¨ÅÐÆYv|_ÞÙòŸÇ¢Òýb¬˜˜¶ZX/FãI2O vdzÂc œ [FrH|ˆt»íLÒúÉlGªiA a*­%°@Bà†r`uŒ»­Dú˜Ÿ»Ÿ ÅØ€6P!sJtÈFX1ÄBÛj4ˆ†%09ÉqLÄZ&þö°Ò!+ØkIƒ}à–¸)â™W;(½ö‚yœUBbõËmAÔäÌ&ÛdþiU!k4±³0mÁt|˜¥ºÆÌqaXñ*ðlŠuwrîó0ã·çÒ[
-Ûäˆ-cxgn ©š(TÙ¹ù˜aãë+IÇ×v@ðL¥óˆJJ±ìYÇ|u­’> UR“E:&¬"Dj‘¬ß?
-ò¯ÝùñÃÂ]ÞÛ«CªTEïñímÐ1xÖuo®T`NÕ"JáIØ×RRÂW0)¦µA«$ˆ#÷x$¡X† HHYóˆAvu{»«q„ï²Óíïêwñ \w­ËY•°W¿¯&²Ã¸%.<1zˉa«Ãà0 ükO„èaœær´^R_
-bV‰Šæµ$=î¸
-+1õ•iÙÔ
-bË•VzMÈ͉ڠ‹µ_sq¢vT7×fgçâþì_,¤Y¨›µË}=Æê™ë[ÌÖ»Çd¶ðW'jÏÁW'úÆ8}Ì© '¯GÁ2¶U!Òc@§!šŽÇla\wx7Þ4£¼¾ç±3’¨IªJÛöe<«Æ) )‹¼eë«ø}
-ä=ËaÖ(Ârt|Oª½.…’¿$2)Ω&\M÷t),ºo)ˆ<¡ÜÞ©j=¾0Œ(‘Ù.û2{ê‘Ad²Ð'bD<Ësæ…1'rtQd*4ãD7Ô™ô*)äšS×9ÿ1^7É‘ãF€Oà;è
-Ip=^ö-f«û¯ý=51­B‡å‡=š,ÈÌ÷gKq¯ÖhÕ”›Ò887%[åÌIÝõhÄãkwKn ÿúϪ¨ŠQNFïlOEÅÉfpRËž”Ën}Ã
-31¸F¯éà®ÆÓ›¢ÕK&m݇˜+‹þ<Îl›_Ž­´OŠŸ¯Ô®À®„£®;út¬ƒ©•€¤=Ö†ž«"%Á˜ã¨ó6õ1³ð\å‡Ýs}²3:ðÂ)uúÁåùÔÉ †Þø‹òO¬Ì.áMB‚éµ@ðl~@ TÓÀ`Š
-@LÎ^ü诼j<ݶñ'½/Š¾F@¹ {ú}hV™–vjO¿ºÉ9ªß×üXÂÉÕ‘ÐÍÐSVzm®7íÅl\çù¬òØlp•Ë¼„ áßw¸¼äÈ=‚ kÿè}f›‡hØÀ&4Iòè‹ŠN‹áhc–õ1t&æö˜™y?Ú¤8¿ë)ÙKeP&Zæ<FԎ󵣚‹ÞíúþzøŽ9@‹·½+ñ+lC<fV#;1”ÔÃ9)‰^Y8^¡y¾uG8Üûç[Ñ>àÙa¢ñb_¨¹÷ëN¤Ðò±ºñ·š—Ã;%ãhmÊääFïë‘uM®¹Ý”ôž”½7<3Äs6)¦¡õz%šóÛši¿S ›^/¤Óø›ã*«s¬•­ Ü„çeðaÞ8¼Ž5÷¿rB¾ûäÑÎÈce8¦5`dƼhìŽþµ,Â¥ýlÙ¸Í;¥9þ]§B?¬©4Ïfá´’ÑüZ
-ã·¢¯Ÿ¨gD¶|ü÷?ý¤”ሾoOª^ºÔñ’¡UÔŠ>ÑèãžøùV¤„?è!ëÊL®l?‚S¡µþ d
-s§(E<ö µævEoO‘OÞ$þ6Þý£§Ý@—ðÂó2rÔI¹<3IÉ%û™bcYö§Û5]Åq²ifÛ¯ÏáŸî ðx,ß·¢_(²1ú÷´;EäD´dÀ®gó+çêR‘ðT>”ì<=fáÉkýÒ"žÒŠ=%Õkò&m˜OÏ=âó'§?×':²m¹`}M¢ ðª&Ë“>÷Ín ûj¢?züãöì¿ËlÔü±´¿Ùš±Ôÿº¼Mªÿ­$ÓБa7ûëåÀìå}nè)ø¼Ê>ˆ³O‰¹qÍ´¡Ög74f³/%¼}/¶ºG/°<àÖÇÄ«—zíã9—%Š•¶#„j]5™†c$É5ÉwUô¾ˆa›ƒ¬ó,×l4óóDÑòt{=ãfç,ð¨xdÏÃßÖ™ÅÒÔ#}í˜!À ûZBçôÞ%¹îŒ
-\W9VçØvƒ³q’åQæe®øÞj÷žŠ«æuÅ{iOIÌa5Àj[Ÿ/Y€½°Û|w<ÍUbÍ· eáèìMÔÄU5ò{‹œŠÛW°Îp4%v!V(9ЗEvâænz<M€¾¤ŒQÑø½vëѳoEô둈ìû@ƒC%@wœkJ¤wíç•i /Ú¤ý^ÈÓßz:ÍÒëa?¦.ß™N2§¿æwô;Ù_±VðC\ë5¾Ä1„vÚ¸(_Ò ¦¢àÀqqŽÕ9‡ÉBŒ[{©ò
-ì¸XÑ –@—C¦ U{Ñ@!a»{‹w…\E'~I Š¼Nô9UÙF2Oè±-7Pƒ™þQР6÷‚§¾hRÂàä6ÊR/›¼E7·2&jÙë‹
-•]í3LG¢t—R>’w
-ó®´ÛÔéÑêžxB‚öþì¨\þ5 Í™kŽ` öÿ°Ën~„RËäÿvÆ;s85k¼,9ÅRÂàn/8¼a]LâËI:¹Íž|âJZ™Çø|°õ>Tx ¡Þ3Qùik&ôî“CßTéÔ™Z7Øê¶CgŽ©¸
-YúyŸôh*Ú-JtcLŸ¨Q“ˆkhÈ®{°
-Lø‘ß~*ö©ˆQcŸ/Uj—f†m
-}£ZÛǸßTõ·(™1`¸¤”úV0Ö!ÿï>pM­¯T÷ï3²„ë¨}¥Ìø ·CWhk¶ŠyJ*Ô£4
-{¼„%“ôî÷œï1bä±ÜÇ~k¿‘ÅŒ§¹fJ¼¤€ë‘°E À$VÔHl¨Ñ•ãzú}µEÍר!_ømÛ®¤–QtFný–Xﶖ&û|<€ëôØ‘'Ý Dy«h&Ûÿ”Ü?§²õ~¼ZlÍ­0Nºf‹ å°¹u{ðävnŽ¼šì÷Ìr ÊŽ?Ìò·’ñ)sD¯Öãn«šì̉£éXøu™¶F¶ÆraÛÌ0óQ9÷@˜ýñ>1†äü°ç½îs=
-ŠÀLècí.Q/}Ú9ÿÀ¥þ3˼ã”Ìó8_A' µá0Ó‰•]”0 I‹ÈÃJ¾¦Äúï,/¯Ž*ÿåŒ×KrܺÐxZƒ$
-ª¦\õ˜½ØÃg°B! |îÅî!TTmjƒù–;íl[Nƒ|¹ ]©{F맓Sd(_¼‡vZ.’Qj–qvÜ™uæ²wÖóîvÊ´å¬p„ ÍG]ó1¹$±ÕNt½÷Ûa´yÞiÀ¾÷Ú 8ü^àa/üùNÿ}§_ÒZSZkåOL—Biï™ôºÜ¯!fGç¸Ýicà>@HÆ*,ÉwË]
-OkòWñ<Sc?å
-›A0½<ûçT­ÄÌ-ùƒCçÈÎçpKÁ ÛÉ ¨(€ yoWonP2Óç.oJ±'ƒÅæ_%&~{œ‚¥·>¥ÞmÞ2ô-œ6Ÿí¥¢iÛcEòe ‡¼•0ªníx.Tz·¤=¹‰ã>Fó5z¶‹še-çÐ=ÊÖmŽáe*‰“s=¯ƒâˆÇÞG'j/œ*2m³ù·}œ¢ŸÍÂc+G/\‘Q-Î?ÝG¿í|Ý1S;^[ý¥)Ó¾çï*KîàÇÐm0aÝb"rnS¾ zˆÑvß½ûí1æÅo²Mj‚KÊ4òÛ-fo‰ààòq[‚7ÃÝNN2 ¦w`¸AP¥n5,[oŽ½8eDYãV³÷CÇ „<h ÁÐñ:® Ð}©S8îÑK<,÷ôæ¹³n¶#&MèxîÜ ùÈŒ ±ÝÞýÏöR¾ÃÁ"Ø9lQ–Ú•¶•L*êh l•Ê®¦å<°ÜͳMûLðHÿ~?Ò›åÚ27êÌÀ×åÄÓÎ3R¨KXî1äÕr0OžsŸN¢ý]cúmþzöÞ`»oÞ-÷ß%#ÂRw¦Š)òwƒ¶8zÉ©–(Ë„¦.™Zý$d3?'N¨” âÕ5’6¡Ùà•ñlEn릒fƒ¾ä]rÜ⪞¾tЄu7â2 ,¼1Ç$i^Š©Ñd[“Ùœü¨[,:V“W¯Cå2ÎZÙ㥻`«N=[nÉ:îìNÈ(cn¤YZi¼àvB´ÑS×–Ä›ëGηM}+¦`%ú<)—eÒ÷sæI]s…µ.…¥˜×1n*Ìä½ 3ÃDytë|²ÅÜЖlµþtræSÑç®;±•EïçfV„
-(è®n¢u¼œŠÝ/ kõtÝ«kí[=AŒCËõ§ëÈz§ßW½k,o)_®·ƒÈpw^ìr­9s¹Êg zt&†“ê14Þme:lÍ:hH1̲8ðxhc¢Çª­Õ:#7yÑŸ›–}_v?Œ×‰[“¤£Þ Þ…(ÏÕ G
-~TW½ú”—‰öN±íõ8Bá3éûô${¡‰ÇT,s¬ÞRß\oŸ--{Òfûm;¦è|IÚË'!R7d÷}
-|£ç|>¬Ø·ö
-H‰Œ—AŽd7DOPwȵ'$Q¢Èå gÙ[Ÿ 1³ª^Îýç…¾pU*á´ £«:¾$’Á`°º×î#[»ý9J»—9¬Œ>=G»õyŸÍf™Ó£ûR[†Ï’³º âuö2jŽu\>ª%#›ÅíטQ¦YÔÞkØƘà‡â1»Žéc ÎÌ:cÖ Ò=ŸõÞF¼€¸Y\4G±ëªhz+½V~¹Î!ÜУ[k󂄇u#ìuјÔ‰Ô¼_€>gO¾ïqn´’V8#…±{á€9k7ë+3Ñ«•¢“ÈÖ©½´ÑÆ0òü<yZ+ÍÚu“Ý›UúÌ•½¸{ãboÃ{©vúh£÷$åÍtNŽQm$QmhÌŠsëy¯V“˜øÌÚ†Dã…sæèº*ïVfBˆÙCÔ量k…o]çXºõÖ/ôqAH§ósÚÌWQH7¹Éaû¦gŒª]àH˹ŽßZï0v 2¢Í½9)¤4RÐÉsÞ1›ºV˶ó7Ó¬e‡ƒ½äÝ¢D#´Ê_Ÿ0=à¹§í«¼Ï–¥–1(d‰¬ï‹ù¸AႦȚåpƼóv§Nš¶ßÑÒSí5T¤Iÿ™Ú ZÙŽ‡—SåP®V‘üÎ%bë€eŸCgfQAq¿óúsðo«ýÊîì^(a¥›ë ˆŒçÉA·Š v˜8‹ÛŒèsx½¨GÕ äÄœÔ!Ãlµ\%n'‰ÉÇû=p¦¶Ùô¤ÕtÖ£<onêe­¤–19=k‡¹×{½ÑÎЯ[’´F–ÂëF©Ñ‰Ç‹b~,ÖæY²ŸÏénT¨ ¡ €ÉUI œçץ玪×icLî÷ÝàYP«ÙоC‡3š[««¿‘žZɼ´pCñ&âÐû È@b\™HõüïGïTš”ƒô­[ˆç„J¾ß~ ÄPB;üòÍ ”Š"(b»ý<‚ óŸ;”¢=ÙºNÈ…oƒzæŸPô‰§¯{ ¤èi~‡ö‘c†~£vW æj²zg†P
-#n ö0ô&®søƒôÉ!/M[î$Ò]ë<b_…¨ éjIš¤Þ1L@¦ýÈ<Aè
-6tf9õ&%ëòoÛ«Aáʘ«¥µc-€ ‚ÔÓ°1Uê¼­acùõ
-FC]w-*º,¢¶N
-Lnô$CºÔÇ°Šà¥ØyŒÏFž–0#q
-ªMˆ>Ø}¬cæ]óo±½RÛ‚‡tß ncáÐŽÁü‹¥šPôµxøµ*Þ²34OeT|8ÿ)'öŒx%LÇü<bÚõušŒ ™2XgzuÐç`.-uxÒ"ÙóùMA‹¼žLµ™Ö|Ö¢lÿÐV•Ð_‹‹ÀAµåh‰íbÓ˜AÀáÉ·Kü9Ž}‚Jdo{Jâ¦å™Æc5yŸH$‰É€ ë* ÚO¡[kã|žÇay ÿaX¡”‰«â©iˆ}‘(oû°œ5ý®1¶ûeâ6èã°m­0z¡,%]ÐæJÓWÑÖ`0¿Ôc£½€0Pú:´Ô5Š|ñ†S‹§0Ÿg 9'bLƘë5ä#u ¡Ú†@â©<ñ¨ÕàZ%T[$¼mF »P‘–iÖ®°iUHÁ<aR?œ°Iøv¶ÕSrñ%[f+—6b3yíd1Ñ+VàжS·½àà\0c¥W™ðUÌ¢±0eõ´e^>ÑϸSZQõv^‡úÃÁºË¨}e)‹Tê´ˆÆô÷b1~/Nç„HÓ+ñÙ·µr”„
-eD2!Ɖ`ôý[´*·¢E,`Ö
-œ÷
-:cˆYŠ´:–ñ'±þ(0,†<t½ï©Ó¯Ët9\o#ƒ/J¾(œ}êYô¥Åví>‰¯m¿ÍˆH’•¬„¸† ‰ì§n!­ÏÉ‘§9p6ðí Ì…‹Yºs“(Ÿ)4¹xO©ñì?æšþÔ-·YBWüQDáÁßB°¬%°÷Q­n.öŦ®N]~Ü çM…p+\m%´|i¶Üfœ¾$ÇUZ÷ËX™é» à™;ª6muaЄ i‡@s„tˆºk$B~W4z
-â
-Ÿå„˜Ëõ0ÊƺU.¿2ØYÀÜæ* œ­güÐ
-kbFs«È¿Û¸ïø¾üö_æ9ðBd%ò ÄUø5¹œ8 ©J4~\ASʱaa¨qsòj²ó]~`ÈcÞkT[’ÀüL(bƒ‰ð<nߧ%ã–ç„ ë9‡üU7kã,!«†zütLü¼.±ÏQ‰}‰¯ÈÆHøû‹sÐ9öÆò—°u‹­euXáµÌ¢ÔX¯hÉ£à nO-9¨A¤6vË ãø>ÎuØÔ!K5¤[¦‡ð
-J
-öp]žñ€Ã‹áQU¢W©ø}¤ €/9Ô­Žý£x%ƒÏL¦y"d¬møÊ.£ 3®m AÒkûò¹ŒK¦µwWllTU¨$>­²¦Ðª\T¸{d·Mr/¹çœð$Ú›“Ž»+A­±Ç9Ú?ƒÒ€3d\&¦Ò Û©/iøOº)ùòB©viT=cŒTh‚Ì¡MF?Η~)U?>m\}7"`t£½pq˜˜D~ÂxSEå?9‚_~ç«%â\û€‰­ë…µ"ü…?ÎÏ¡#æ.ã}yA b\cY~¢0­åt\ßé/¸ÇÇ_Tô¥E/Š’DÜ?+zwQ».ÇÒT@/Ê°˜“‰’…r}áxšxª7Pµ»@ÈoP’ó¬únyoLÙ=÷  ÖGnb…=¾•üy¦©ìÈâñæ|qÿ^j#¬2ãË°¶NÅÏZÖÞn¤ PxýaoøÝT<\ܯ@ü‰+ïYï€RÈuý…‰{qo€6ñmLY€§e8*hX-Ÿi%¤ÂåKþá”è´˜ýn> ÖXĺ5ˆca ÇÔ>¹iÂ1>œÜ‰ < }£g ¶Cëõœz`á
-:b%à|I•UN‰D‰™"<£%¾£3‹=É!©…ç°£üm‘ ’ºü6z"mGÄ :Ü'SkuìˆÓØþ™(2.
-­›1\O—á¾N|º¹.ã‚J¢
-P|žs3B)ÈlÇ"1çP)@gC´gïXžL.."ªM–`5°0ãð£ôj‰Hù`‡­5×sàY,(}Ô²_(bÚà4ï’ Y3 Žê¬÷Xý?Ÿ‹÷é „ÍqÆp]rçkñf^ä›n¹âe%ô¬Aû"⤕
-
-"¦jÔ´…#Ié8`—aá\žY0îEÎÌ P „ÂÚ<áâVsY¿×Ovt­2©©
-<½- ô8ùBUÙ¹9Œ‚#1û¾ÍsçxúY­tym67áŠ<ÓËL•à`Ë›ož)ªâN„J-ß¡ úKò¹MA‡bÕšxh¾ØkòeNSåL‡"vÏønjöK-üa‘Ëœ
-rç΀„CA\ß½9²ðMüËZ†•4¹ƒM´øÓJ*ðIqå$DòÛÄΧ¹t&é&häPæÚ¸£Q¥Â¯°aßÉ
-7 ‚þšgó#Ä™òªµVú ‰‹oîŠÙÎÝjî\.& nÉ?.â4Ø–Q#ÔHù롈OÀ
-D´vÀKmRMÙRJ¶®Ôpý QÛZü^òZ%ø¦Z•™fù!bf8ªh’rd ¾­м¦œuú$¥G÷©Ä@ÕiÞ;Ù©¿è0ÝjAº¦;ÈwÒ¥$èÌ©ëNç8\TMa3Ë·îq£!¥ÉÅJrc\€Ÿcö7¢<V˜ØLKÔà¤{O±„¸ÙR>$`ùúÖ°,ÊÈL{@¼“™!XtË-ÁQŠó°©-kïåšA¤`lŒ÷"´EâÒÖ*çÆFæ³Aœ¤,ÿÝÛµ~íߎÝ'pu€ÎïNR`˜ $’3ªïHmKêd+ÀwÜß‘`²è}A“|wŽ”ãö£üE‘øCžyC „ýCFÊZHâ
-æ ƒlöB^÷eŽÄ6.DÓvÉû¶¡_ìs笊`¬…¼.í{ÍÚÈ„ñ=tŸÄcRÓ<Ù ;)f> SŒp'#<y…ÕêòñŠ™Áž@"Žï'V£cüã‰ie ´¤e­d§âŒœêŽ Ô++àíÝ÷i^JÖQ|F‹^à°ê~§¶J{£\ß – eMEB+AÉC4¯öQ™Aȸ„Q7B{À&,v<ÓdP×Kqq@æÉ°We#WÅ`ºì Ô‡KÙú‡q©¯â½¹Ö—[TŒ‰B[‡a¢sÁâÎosF§øu@µûåY±’–—,võ,ü<¤$@BbçÀU4™ÍãËazspTîjùËDU*Ðd—!×¼/Ke’7ÕúI°¡o™Àz’çÕÊ@^¥ašÄ Ƈ¢ú‰‡ËŽZ䄱«³«*H†ö—x+ŒÊä‡$§;áÉ ´ØB{¬‘u¯R#¾:i=葹«‘•kì8Kýé0.9`+9†ZŸNcÚäØåæÒÃÓ2ˆ¨Ç(~{h’ü^Õ‡YòèÙË×O'Ó?þ¦4²J<=‰Ý{r¶öËŠ
-^&´€VsW;b(é›zvù5¢NØTm6ÃÛ›Í?¡v
-Kú#Æ#Ì´ Ë`‰Â×<ýhw‘Ú(% ÏVÂ>v%ÑÙ¾»Ã5TÃ;–ó¡§$•@ÇÀéVxÅF«òçź ÏtéUu>Œê#×ö‡ƒŽŽˆB/üA¼y­…$*‚Œ‘$ÏŽSyžI(ýØ1<RM©ŠN“k'nw©᧲mI ‰`#뤺ùqòÑLX­·ï0*´¨”¸KŠ2î%Ž$›{çÜÀH¢AÃ+‚”‘(î Îmî÷"‡p¢tŠÈæ3^‡ŽãšÉI2LÕÌQ”yì‡_ÑŒ@ DëûÚ>Ú½>yòÝIݧî82àÔäÔ oüî~‡} \…ga²Úq‡Á ETDS‰”ŽN5þn¬&1ì²sû(1$­©·ýðzŒ‚¡” Ò‚Ù¢8«,¬0¯jüÈ¡´7uÇ8ÿúË­ah ï„­µ=÷ãGEÈ7âE(×¢"Ž]ý¶µ€"œXŸ”\/
-Q JÍç"Mí!/ú¸/õF3™îÝÛYJºG=K¿Ü%žU.‹1 1 Þó
-øïjV«L-ö›™ÚÇE1Éì–PqGL`¸„„ÑÑvQšB0ƒW6èË5ØO¤HP
-4Q„Ü2Ìãì\‡ÞñwilìáÈ’$ƒ´¡7{ø+H¬ÕѶ&ê<£¥LËÎóª~÷ehØpõŽ`™+‘RºF˜=Ī%Åøh9 )vGhNT6̘Pí”BïdåÅÏT<wS¾ÊàQ?þzËŸç²àQS¾</κ-—%NlU:T1©!#ÉÎc6¦–xrG6aíyÛ)™Ì³ §¼¬Ã­ÉÀÞ#üôR¼{:Ž‚Âé‹C‰ÜM—‘eÇ¢ý†µ€7 &&„<ÓÄ!ÙƒŠ7Á¥äÄGšt‘Î,c¦))nší yŽÜ4…òÉŸ|’‚˜;—ZçõøÔI9P<<ûÃ@S9ŠÊî1¼Dm2tS–@|‘•ˆ¨1–˜Hv6>ÚÐz•ÙÞb²zggg¢AÑç3`Hç–9’½ìÞPX¿ Ñ–üII’IŠ.¶Û{Î4m®Ÿðéá^êY³F¥ÕoEQ¦üÍwèy“DŠNÒ5’ ÞkVèN‹ó¾ê­š³%Ýfù4,dÒ
-5V׌ԬE‰˜!2lUdBðÌE$e$5,kêXÌ¥±Ó <̦‰#›Æ‡a»ðÓûvÖèP˜§õMÖÞª¼3ûQCMk~û(f{Œ&]’… ‚ÐïÔÙÖp+ÛL0〗6"GºÛxª "®pðÇ0.oÝ-\Füƒ?µ ºy—!Ãc“ŽV¿ZÞ¬–pØwºq Ë
-5FÑÈ"mQFš-Ž8þ¢Ò˜'v$Â1‘q.#7àÏVd¶¿q ”¡S½xDTV!ÁÎrD Ï"þ1Ñâ|œŠøÉÎzCÎo97Va[ÆjÌ›èÇ›¦í#oÞÝ<Â^«Lâ›vuZÐþk •Û@Д…ï2ï¾9ø×$Âc¬N‰¥Ì¹‰tk
-‚Mô'½Âc1×Ò«s ÁR’ŽÎmß©x´ñ:·!~4Ô6eÙä˜$?ÎÌÀðØ;¤¶–~CwÀòcÄF¹÷`ÈänÊôÑÔ+šVŠßƒÅYÔ‰9oÅ—ª›:®Zwõ@ƒ'ÔŒµÞÓ¾S Í yQñê"Òˆ©¼­C^ö ³“2'úQÿ½”ÇÈUL;…ch§5
-ï!ù*ý1 aL0РŒƒŠ¯Àû)½ƒ¾÷#P“Ù‡©?™êñ f6ÅÂÒÁiÑ"ê6ë¶C®…)«nNуîçáBÍd=a“tj H«Àv ½÷
-…ú-úÒì;p4³*‡¸p 2þôeB$´Ä'ð»ä%æ‡ Ai¶ö &õaµHˆ#“y‹!Úì’SŒÙ<Tžlì)òmc?yÖÝ®’¤ƒ,q:%l’ÉãØÁvQ›$ÍÌæá†V^°HÐAm¯K\r‘A=Øó|…Qõ´!E[
-…ᬙëºÁÛ˜yòžòBþòy<ýa‚9ÏoÞƒ(rÁÿìÞëq?=ÓA¼VϘC,DR$,KÖ®Àvþ6›„,´²çmüoštI<½È¹­»ZŒÛ’4×eGb´ˆ.GP)'Û¦œµIŒ~¶ÎÍ´^SN´¢†Ì{)ö™]$˜H]iÞ2Ö¬2Qk¦vl3u'8[ C¡§`M¥¦
-6|e®ö
-y¾”!„÷‡[ÿ‰ô„,Øôdˆš;T _íá›3ZÙøV€ñ€@¤þhÝ…‰q"`M7÷Ñ>îSÞÙU;œê.Á^E}|ÞͤÀGøYºnô
-~XÈ+\NÖ<4mþ“‰]!šƒ­àÆ¢Àª.† '§ôAŒÅ¥¡ÐùÜ׆ª‹1Ù²øÝ,3,‡…Óp/ð×úeÙJìl#Ï´àʼn¾62p´lrjüg%y®üÍwpÜÅYÙ…^†‚.à°ë<Ã)Ç ß'nåâ½NaZ«•ñ\E,«|se^ò)ÕH¶‘¯›"~’/–qïyÞ7² `Ó¦“J_¶öò8¹s—;óÈÄ[ðar´û,Êj¤7zÂíZÎ*ضà&ж'ÊÙ´rÛ_M(c€)p;'5­}" õ›m¿„É×^¾†RfUØ<ÿÒÃP
-dlœOâÒLÖí±‰ßTˆ2F§˜Abo([K)ŒÖý(ñ¸¢žÃŸN_&–VæCMZK3ñDÿFÓº0
-ÃcúØåÁ€g
-~Eÿw™A³—Ó߉Õ#ï›a¨LiæêýåÔç]RgÝ PÍ-ÆÇ3¼E}Dîbù MÍoÿp ‰¨ BãsAWˆµaÛ`´›¿t~M–ê
-UÝ zÞ> ‰zt5gëç ðTÖcìýÍéؘÚWÎSùdç7‘¿Z)([|- í‚d‘:ÆL
-ER¡ƒ¦#TÐÄ?`µ†c©–ﺈ‰%gÉz±÷Èâ¥"ˉA±lX<ù3žRõµ $Až§•”]€'ù[Ôo”üD&´s̳«…'1Þ«D{/¦˜0H¬nÒnã³À[ïK‰*ÖA¯_ôQ´÷›ªd‚vVƒŒ’Ì”vÆ›Å|@,låÃéÀÏÇ…L Ë"øíÞ±
-†G`ÃX˸…aÁ”m\†"FáB(|Mß!"µ#e•À‰Øû¢±€‰[F苾ÊÜ @”ˆ,˜0™“·ÜˆYâËF­5_ýšÊZ@ B¬*)¥ØÎÁr5ØC’$!”` Ó€H“약ià¦ò at““5ÁÏ``OkpÅl’c¼AQ*
-â,®B¯ëÚE6,ˆƒUEŠmA"à âÿ
-DÎŽ½‰3¢çy• èY–ÙÐÛÉ‚ %ÒDF\Òª¡?!q>bõ™Œ Š|ô8;‰ý
- äUІîÙ¶#—“ì*ß7öwŠ‚„LR³£&Á*‰z˜ÇpJ X
-yqäªÇæ}ìhìÂ{‰14à”ý`UŒñøh=Fµä}ž(R+Àv¬£ªû»Ï~
-œbe99fνì”O®W…p{¤Ç
-N ;ÄäôCD4kõ `<‚¸’}˜íå"N[ÑŽ5Å_ü|R„öÈ.±•ŒX%²]ä=T©l'ëñÒ|R –Ô‡ahZÜÎ
-á[dVšZ˜”?ñëØ/ÂÜÑë¿‘3 E˜…€ ì2üîÀ3!ós8vôTzÀgS÷>5;
-þv=‰`¾|#¡ý÷ãíËï·HRk†C$§e)ußyEîl¥‚ßøE^Í¥›J‚à³0[#¾‡"le³È•¸$ØN‰B.}‹8Z©E¬+Ö4ÉæÍÝü2YA~
-¨’}K}; W/yä2$7H5Ë vòÔÿŒ—Kn$9 DOà;Ì
-úRÒÚ³ô-zkß;/ôiLe²àènOXJ‘ÁˆàÁE™ñÇK“ÏP¹§ð8nda@¡‚kÙ=‘’:!%q ÿ'Xí"ÐpÓž¡¨ýùá ]&$©ži%Ôe $_Vr鉥À¡pÔe3bÐRéÌv«8£!Ì © ÂDàÜTåëd–˜Ï ž89ª–¼sè"Œ`Éœ‚û5­" Ét^5¯*1êTEöÖ÷>#ea(Å÷¸EÁ4ì±+QÄÞ€‚q8ñh_õ ‘Eÿ ÎWEO¾›—E缟 &IåÓ0ÍÕù Ôoœv$ö~0r]
-Å“X“;aDˆÐ™r’»’
-\S·ÈŇ ¹4Ïè÷êHÌ@2Ž qêgE@Iy-­R9xŽÞjK ”-a$n ~oÒ”ÊÖx§BÙŸw†Jó'Ï©ÄèÇb±â
-y¬Dpv…ÎB¨ù D
-ÙŽñTi±:‰ÅáÒŒ*ŒAk÷9M±´±þaE‚`kLê eÅļ‰v‰j îé€(óÐdøxV2¶º«àt¤³wöKRåq[MOŸûT‘ˆ«]0Ÿ–W®GÁ
-ƒh 9t©ÍìvZÀ&$3$´žåù5¿5ýóès=Y»öiúÑWasèpŠY“쀀P¾$AcnÃÞ:ï¥øºv~8œ§‡Y½=+IeÄ"Æ•É¥*
-³«Š…ažc‹V[SôÚìÃ$FÐØÆ9謃Œ]žÉc‡5L5ðï®}e¶€h‰ÇóE­Û—˜h6½&Ö/ebX¤m d/:JßrAJbðR꼊ÑÉüHÂÓÝJ·ÃŒRœÃË„²ÃZ[f˜[Þ£ÀÞwaÔ„ÒX9‰~« 8¼XÃcCë>¬‘—
-ÑmÇlD%]-: ‚9f ;ג“{h®Ùz ›ÙR¾,íUSb­®Ùjºx&¶7ä<žÛ2 u‹Ìi2‹žÝ"ˆ•œdK®ßJV€3?H]éÅñ[u“»˜Y
-¶W—‹OJäp3V.ÖÖn~K«8éÂ(͆gÊ@Ø3©8Äêã·@ˆÈ‘µ6P¢vþl¸jhQîìZFt WÄ@¡EîDÇpÅ.*ˆŠ•@SÍ1\q´ko£=h¹† ˆ‹MÄRÒÍpå6l.܉ÙêÕUÜ~IéiM´Ø’~N;ÛæªIâ+j$9*˜‡èqh…ÙSÝ™Yä‹WdeÉ?|9þUÊ» 0›†Gâ_÷H¾C`Ó61°ŒÕG÷4G]¡]³yPÆjÚ—±Õ‡1aÏऽÆmMƒÑ|“Éø*ÇÎJÉaj“¶’"ÀQ–@ôÁ¯Ržo‹˜ŒKèûö~‰å„ &åmoDR͆’T¢Xà‚®Ï“ü#  (§·A—pòå^÷èÂÌï †)‘ù¨Ã‚¡àG9Ÿœƒà3ˆ¯!mUêˆA ÂBtüàÁŠæ ÓȹÍR9ŠEV`¥bêÊ<¥ó°ÓEGù¨G2²$ŠMÖfyeGÍdÞ$ î
-8xòΡÈ&eç¶Ó0H€ 4]ˆ(ƒùµ¤¿ÿïç‡2›(ÙJuU˜ AJ©mc™|•\búy
-«ûò«d ¶Ö›Ábs >
-{#mc,£2©ƒQ>±k­=»6$ΔEc‚ÄƦB8Lõïö)&­'Ü燺âžRü.æ6Þeo‚žÆÔgû¤‘/x'þ"À®ŽÈ
-ä >jËòADÚ^ÙAˆ@jPº"©3>uA/îÊP iü.²(v¥± ÿ3í0ôJ}Ũ£È„Ÿo)L™ŠAàr ½H—cGÚ’)q8…¯D&Ýá7€7ÂUÊo„zN*¨/ÎáëÉZ“uïk:¿‚Ù°«Õü×¥®¯ê\¤j­!7L.ÞªdDI8'+Ð95v!O½ZW]@ô=2ÆL
-:Ekœ¯‚§ (¬ì½
-ƒ¥$%«}Õµ:€JÓ
-ßÊw9ÅéÁåCî¼<gÞs#Dz`挣Ë3ÿñh•X熣És>¤£2cБbûªß8,ºÑÚ²2£Æ!fç¸C±XCIK…„ÑáŽEH¨N¢åUìg©Q#A:Tbeå,š± ìŽ9N!›_1»‰‚éD„ŽQ$‰W›(Ú]˜dqœÀAaû $XÍÒ= Wâ@&Õ¥:³wì# "¦x±©[¾—Òç44%ih(õÉ,SèºteS½1©8+ôñ"#ÙCÁ¸ë`-uoƒnk‘ª¢ãk8 ²c 1ê¡_ yzcA XÙJ€¹iÂÝ’›ðLDZ÷Ì
-°*8ºjÈÍÐ3.ŒàïÐŒøªr*ÝüòrGÒã†ð |‡l‘Ÿ¡K©RŸ@åL
-}MbTÞüÖÚ.Ë% Ë!F?à^Æ©hÍŠü,]Ý=NUÞšCP–”Ä x?§ÊXåOÁu}JIŒ/[ÚkC2íŠ<X÷ì‡ð$€)œ
-îêB1€EØÕôÑOEÉq&’ÀdÂyVRè²²ÝK t
-gŒ2–+yÿŠô‚†RŠ÷cpp6 ãE Y
-/ÁÁK/ô ºo$øŠ¦¸ž‰ )” +Ù÷·”T`j‚)zµàcäÉyôž™JP\èKÒæžg%"™b©2o|΃më Šl"Î!eƒ¦¾4©Á¥õ%1?#á‘,›õSCû24š½×1$»Æ˸;!à_÷KÊ[ 0ÈU㇡È¿œýB¨vöËܯ¡³t“Ù¹N•ç´Œ~›Ï°¨È"LÖ {ýF >·i.¹ C¡ŒO,‰ÀÄÖYÜÃKØ"æï­“’ð §Wô‘\ϘÑa¦sèÓ°Q¥œˆASáCðP-ÐÅ f±ÈJøTUQÒ³u˜0>§Þ-è.X÷Û”w11¢£5¾@zUy—Õ©«ìu¬Qw(IOîF&ÌQÃ’³:ŸzÁâˆ,lE¼Å·Wô Ù^¼jBuœ]¡ó©Gwä mì(·dꃳW¥²F˜.‹ÌêV²a±V†æ3)®\ÔôñS«­ìµE— xTäÍ ×ác‹½VŠ~¿ÿ‰§üã¯ß~ÿ{G)î-–:ÑôÙÝòMÝ-£$ƒ]T ;^DOSíY£
-ȃlHÞpÞdÍqrx\ô]ΖÖ@£3»ûìJQP=^F¨h½¦ûÔåþsÉ\óƒ—÷9øÆ!^ÕxÝè* …žy>5­d=ÆuJ¨¥$
-ID~ÞÌ‹hB•6ñÔ¼‡@Ž‘vÐвâ1ý÷°¿xäP%² S€õ9#‘;¸Èü(Û¶´ÕAÑžWZ6 äÐÆ8,uk6¦£Ä|€ZP:/hg\"1bZu`B®jL7úØ*eN|`™é
-1LSWÚ5U¥Wh2³éçåX[>ÏÍã ûŽ?&WX¾vâŽf2SlÅšTélC¨Z¯vHæ–”¢É?×ƘZL\ÔƒÃsÀû⺠K‹á·a«Kö]Ò‹\ªU@î%
-Æ‘S3G"#
-ðËå”
-Qæïó©.qÏ䪔œO‘*
-¬L²Ê¹D5)ŽO)÷<5´°¨Ò†,aQ.äÆ ß5PÙk8´—5 ä\o’HÃb4=»ôL=
-(ãzËy88`…–¦ºõãÆš:RÈ2R¢¡ñµe2ºOÛ¡‹ˆ;(س$'‰ù« ]‚C‚ißo æù¢
-P,J }‰º´}a{n/Ñ@ ·!ÙE„;ÌýáJ0&ÓÓ|\æóòjŠIcóº‹A¶êšS›Œùq‚ã?áSPŵåÆØÀ‰N¹ÙB<üéÙ väAΤ뜮^¼
-÷gÀcR–t—(ë‘ÄäVkèJ¢¢Ûä¿¿(’ßH° lèchœiÀLárÆÁNêmûå]ÑÙÊ,œŠFBà•ôÖi²,æBÝ(Δ¨YÎÙ´»›/X^e·•ä: ‹˜òVrHYí¢§HH‹Š„­‚ŸÝ­°êW†aHl&Z´1J·‘üf2Vþª¾vÌÒ~Ó6Œ®l4ÒÈér6
-ÿ³ŒC;ñ]^ŠM_méÖiJØøgài\LÁ‡Ó6K*{¡=±ÅçÀøC¬<:¦2bv3‹Dä\NQèD–ÖpTðטð=—J¸ ÎlYÊÈAÉþ#çMžg|NI›™ fק`­½²Y%,ˆEìJÉAæú&ˆ2_þi8^³‹€þ±-K½Âæ¦ ¸!ä§Øʵ”@åΠß$ôK¸ Ï™qÈH8V þÙ¢Àì>?˜Ý_l¨¶x.ø> :CÎÉE{.iÈÆòS?T§(ü°Ë¬Œ¯f Ú*])¡ªD/d©°Î+,â$N^É$^­Æû3'cK¶S.¦o¼*ÊÐÔ„2'0×®¢‡ñW*˜µŒ$Ë«"íñIm@Wy/Ð~±Ó³A'C,fʃ/^ב"ºK@Æ?ièV4ȹdÀ•."²­¨h m¬S$µb¨MÒøâsÖkâ¼M2 Š¾fÀ îQVDîôwq>Nj m8Hïĉa¡†?lµé·¢Z}ŠO…=dÇ‹_§Úñ ¾ßô1¢+=gx²»mÆ×â®Ö©ñ2uF²?„áÅÊaM†¨•¦B-bðÈ L–fþEC¦tÑ”rž±çÈœh¶J’…#Ÿ« á‰ÔS¤’®¦¢ü¤ ì/篆ɫ éïTCø“âÇp]†€Ö)á^Iv[<éƒà£´"ƒ*”âý¢¹'\ì
-Ò7èÌýQD„µ-²ÞÞÆ"ÒViÔH½»åbÏEðjPVŠâõ,¥[%n5ÉWæí ôrGpëñSø0ô Ksû|¡ÂGñÀrJø¯©ñÁP D˜ñd€>ýí,JYäÄØU¾9ÒH¹°]Tibtˆ©Sć» .4siÐ^åÆ;ŸÓ»0¤X²”õ«ã½É®ÖÉiÐ%%E¬Ë“˜ÍeHÕ?|\Ð×y:™‹6ú5²‘m ‘ë˜À¥s°™²‰UCvêà·Påî³…%Èÿ?Œ×=’ä6àôÚ–1A$š³æ¸{‚ y#S÷ßï(E¨
-Ó–T9 ùòý”¶l^yFë¿Ì‹þåð~M‹Ö´&™Ô>t†6z '@? ÞodIUöî šOe³Fà1H …ÄD÷‰¢;|!àv¨.“ÉTlÙU`]¤ZâáºW‡Oßü»cûœŒ3Š˜4β÷ÌŸ± jßå¾é¹Nú]l!°Œeü1Q­,¿ÙîX[|84šy@èMæHo"†ªn
-È”šê3o v{$qÝÝñTJý·¤³ÝC"üŒ$‰rK_Øá¬úúùßjS´° `Ll÷0n(ßµíjÊâ)ÌbÈ~­Q±.Îÿ­ž×«U¬v$r` ë‡ã<ñ"{;ÆÒ½54…!Ö 2ÜB_¥¤F¶Öðs¼lCÜ{µ]FÐK8Š5£ @# žÊQc¥;à« ¦åÞdÃZ›ýxSÄ6HÁrÄ-5KüRpùQ³â¾gw>•¸ ™[ §Œî˜Äb ù’’
-¢¢ò\‰–ÝÝô˪qñ®Š
-Î!`D:±ÀÆ€nm2ËßO;¸Xn\œz‰Ž0ß:ɱ+f\’³û>)Ê4ÎØ( FvÛCN”ž²)¡¡É`ä«Žptï±Ve¿‘aiŠéq({º°U‡¶¥fÎüƪm(Rk‘kÏ(g}S}FÒD‹‡ûþ1+Úº;*­£îÈЧEÏ(ÜÜ«áƒ,åD?PX|—’DÆZ!Òµ*-Iä2ý±/hƨ¶†´<éÞ—Æo˜æ,C"Ÿ²îlîO%7À ’¾Èòüh¯q $ÓC÷@sT%çR £cÐåÌžmÂuµÞŸJ` -3Uû> kJ¸+Z‹ñõ$$í?Õ–d 5¤b«H­%Ž?ÆÙc9~æ©oúKQùÆbðMG…ÚÄ‚Y—¿Xd=ë~bõýæƒiQ<Ãè­ã³#fàK àý¿·H`£C—ÝÒóDŒá-žpú^ûRdûX·S±ÈqY“ÓFŠ¡¥ï{ü×iC¨cû¢ +Á’®1í‘özLJú§²näï³s '‡x%G¾<>•Œ¸XÐ=†Í™­÷¬É×Xc(Oµ>í†FÙ‘W,1+ÿÏ®#Á+ÌL»”ìÉö$vsÄA2ìþ,|NQ¨Ç åoþº74öÊŽ€üq7=c’7Vì&xN†ˆ_ºÊ(ÒLʆ2£üfw ¤Ìhð÷tæ­rLc¬k¹fñ묿çË褭mO'Eq?y*Ï·Å„þ˜}î¹è×WX· [±édv+W§{«dŠßÈßGÏWŸ½DÝÙç^¢îŸ¼%±2–„‹Ÿ^}VD~5*†>¥&À\Ò¾s¬ÛWj^^7ûØ‹,¹;]:|®×JÜúè“Ÿ,ü…0›’Xm\«¼_Øž ,H4ä’’Ò©~Ïm%§e3©vD…~æSBU8YØö
-Œé›r§ž…Br±n|<Lô+H£…YÖc€­&©xÞßß”Øûƒ‡Ø’ÕÒåiÑ3¹èO$+2½–òÕšçUŸ}ë+5OÜóë+ûã¬ûþüøãïíXÓozZs,á\')ð¯7E x ¢ÛgJD­ƒÉ8ïe‹ãÝi9œŠ¶©°‹¦*·ŽÀ•ðã©ÜÝz±{ƒ»³FDoô¢1Ñgß›r~¦¤Ea궦PD*ጺn½â¤ú†‰bŽIÅý!‹_ØÑRù)\°Ëc&‡=ò!nðo’5;æ²®3^„“ΘÏدï“šûö=¡Vÿ îþ”…µöäáT<ŽãâGõ»ß—°&ðêËÄXOÖPÙ›þl¼^M§¬“’ûÝ 8™ÏHË6='’‰3ˆr¾¹ûÆtï¼öìU??n@˜œT„—3…#"S¯Ï¬
-ÆãÚV­ðÅ7%ëZ‰DÛøÔo0üc$ÖumB"ÏÀšø˜œ÷×›¢jA0»071C‹¶ÐÓ1LÃƤÊ9W6¾_]“ 1£äeôšö1JÜär]ãêu]ÃQQÝ8Ç7-¿­å;û9B〼÷‰+ì{ƒvÌÿ\gÞòžýó^LΡżþ‡AÐâŽuå£6ÃüŽ›Hþn))Îó’å’må³òCÉñM»KÒ¦<¿ZóB°ý[œK]â®÷59ˆÔl÷b å3)A©ÛXA–È‘àôH¬¡5ØQê½^ëên4]LäÞ>~Ú=š7©¸çMãs('î{-ú¿
-H‰Œ—Knd¹EW{Èq~ #‚¿¡!5õ
-ö¨<ôþ}.É'T§˜°ª&UÒ}üEÜO<snW1ªuϹÔçßJÎWêyDîáý)ÈÈfu¤>"Å‚ø«=%ç>rîW¶è=ÿeaê©KQ²=1µxægÖ±+³¹óÝÈ©-HŒ1JÍÎϤ§â­¥R»õ½Õ+ȯœ}xÉÑ›Ùóóño`é*ÎbôQS,]c4k\³§°ç¨r˜jc‰«U µEköü51m´¨9iñû…7˃—Kƒsç‹/’U/Õ‡í½ÌûàU{„Mˆ®™Jí]-_`*§1ýð¸ŽÞ¬ç<’·¯zñxf©{ø„¸Õ\«åˆÚjd+:âÜÉ.½_4
-e¼Y¦w®N‘s>Æ/^XoÏ^îo.WJ•Ñ,½Öã:qy鹔γûî°Hƒß·û÷4J®<š¯¾ð6,¯Ôáùñ8aâ=yuÚ"s£ÏÇ<p$ëÆvföc]á­Pì‘ÇìŠȲר½;—[¯“¼pʈÖû‚¤ÂrŒ² FsíV®‹â‰EŠG]µ¢½|L~ÝMÚ¹§rÐ…s> ê—àÆFÀ›Úø“WÛ ¸ÉÆìœêwÄê µ”S§‘ÂÏ«”F‡ë¥Âò>®Ë£[›8H ÓåeäMrj%…8<Kõt¨<&ïWíÇV.V ù ³Nˆåè}Øób&­§šHàŽeB S¥Ýâõ¦Lù2íkT E9– Žõ:¬Èxª‚ ª@I>¹_øµN‰ekƒAHkm§U¬ì @F`w%GÊn–ç ©©"Ih²­£pëŽèÑkhÔâÔwÐ÷"¤”¸±jo’蟂^Ôø×O${*{êÈYªþ±â†%kÞf‚¿HÙ —µb+¯F¶üSLÆÒ†¢5ôìó¸Ù@~µJ…Z®´Ì”•#hd¸¥RÓÒÑÔu=ÑÛzîd ^ð^Ahß1< ªlHw:zh:¶@0°"–Ðs¯Cµ²Xêj`A×ÊÝi»!2Aš
-± i4´uõc‹dmÕ[¡0rÙîoÖ™"‚®
-KZ§]½&}`iÜ%ôõ’)‚-Haeò¶ÂÒ> Tz‰Nüœ´Dž¨EwM7HÉ€$…lË­:åky†z®¾=OVëŠy! ÇnM¤Ü9»AR¢Ýìs§zÕ¦|F%Æ×ÉÄ„ú´Ëg€%6®±«kÐ&úä:Ál!hÿFR†îeAäÐ$Ô¨µ½4†ÿ$„žwPŠ”´,—êk'gšà°µrû8¥ËlÅjý $žßébzpoõ
-¢ÿ]I^ü´}äL7"²¹ºó3­#ˆ7!M MO$h¼ ü,(lbm…>`¯tDœj5l±•Yq›Ëÿz;ågA4DE^‹½™ÔxzÐÏcÄ
-?\ÜɃB"Œ's!
-¿§˜-îÉbÎ!ãXàγ‹
-Ø—”(kâÎ÷"™ál*潊Áñ dý.8l&éæ™®æ:³±ÖØî‰
-¬˜–š©@ÓPWAøÝxĉÞÐñv;˜¶¸ámëZ-HB--ã`XÄzÒP]¶PC¾NN£Ž i”©uÌŽKlÁ÷™èÌ-#0Ž¤š$ËÒjG4t õÛ|êÚ¤Éonsô”,ƒÅd‡6Y(nr¿‚â’áI$ŸëLKxPºG7ˆƒ‹‰C±NC®1œÛÄÍQŽkPƒî»ßÏç‰
-µÜãÝï9ídª¯ÑI|Â×óExÁÔ¤ãÔ¤6ë•¿­ƒTÓv‘¸+’¸O£üAkÔe™xÚш±35ñ‹øŠÐfo##Â’Ó©™åští<×Á´`ÄewŠe <“NiãaP@”•U–>å‘#CTŽç†i@¿Èå¶Üž ‹”0™aW‹yÔáÀë¾üŒå|T|"ëô¡´ó)ŽIÓ6é~þzd•ºcÊ{¬ˆ À“±VáW|§¯ì1‘¥äŽËùY;I44» Zv\‡Î)Yµ£³Ó}˜àu$ts˜æ£&©p˜½•A˜WÅÊâ&y'QR^”h¯Ã`‘õè,¼Öy ™<9hîoGÈKXýÐTûü²<O”5Áä[‘×~ÅZ>F[Mú“Oþà¢9±ù—?4T]Ü1ÕÐÀ¡k”Û£©R•Ê­È *ª¶h_ù….AÆ¥*-Ïuðqx‹·ºÅ”Y†ÿ!ŒÖ×V®Á€ )²m5%r“€L9k63lkL3]3®0ŸgL .ÁÙ8æl÷%!rŒ”ïÄÊøH¿É’ªê—’2wDåvpÃ3“«ÎÅ' ©R¦,`§€øç܈ ñän_,š•åQùŽ’;)‡h2Ž6þÿŠ­¶Hw[èI žì$s«/®Rg¤Ýq”9•«(W—¡ ¶dNò®¿ešŸó`’]"H”{E=døÝ-p:ÒUw^żAùïšwµ|~Z´7†™:È >'›#–ìžéÍ2Ë~½t¡ÆZ‡$„;”"V¥’¥úêeôŽ±·™›mN0Ú LµžoN¼v31Ö(ËŽžVÃÃMÓø(r³ø÷Ê2=ïÞÑ*|6öàùm
-¬nç¸7!')[xšhA°Lq ¶§Ýð+éˆ{þ*ôAK¦né€!vABrS˱nÃôWA º¸u—sîy‘%„ ºxËÇãâÝ™}r)H>‰âóøÊ?)2¢$š­'ûù†À×WÇ3Ðf"F._fiÁu"5 µä’a%·g¡s»TsìÖè(c.zĺÉEj«$ò‘³îø3vÈL›oâ¼XLb°"F2†ÅÉ%Wkàbätæ5úáÍ:u¯õÒ팗I’[GCOà;茚‡µ¶} o©ûoý•Õÿ_ßMEH"Á²
-ªYòˆZ'P.;¢3p…ÒvÿßÔø9ý ¯(LRA•‡d•ßA—í® ÷'gú²£‡—/Hù|ô>¡D “F˜G?€Ð!^ª£¹áë¸ÝôþäLvôN
-ÌF9"–‡£ßA80…BUÕÉvò.bf=+9k~Š¹ßî°Ù‡ »«Ö1ú
-T”8¨V};²qÿé<¹FM‹£Uz>3gDíc‘‡ÐèøXU.DçvÂkòrtµ³i¨-ͽ4€ Ñ˜&3àA«y½¥v  Ä_˜Rg?@þ6Š0-`“·ñ¸„œ§™ðšCHxIŽ“dœ@èjâ —(qDhÉ€¹ûV\ Óã-øyˆÙ©¡×Ü6Û:r6-W(Â
-<päó0 Ò™0à¬Ã!ƒuð™WöÐ:hc$RÒpnäô]åLü˜ñ^çÁ8³…Òä›1V Y<ÆÓÕ/J•éç`“ÇœÈzPøF“ÐÇø°‘˜(W5±Ä}þ7”Ä3ƒp`q{˜Î@ÙÖ Q«gß*[ô&ÐÅ4…^ OM| BfD&P9—¬¯XA
-]«ò të-êSÐk]6.Ñûto÷ûnŸ`.úóþD¤––‘;q\Š;”°´Œ´J”²¹³7ü:rßîà ?Ÿi=¾`1V¹”æáèv¤ÁIwôþ¹ Ðéè·íNGÿñLvtÍLm¼”cá^bºP#ÒñÚ$BC9Ú( ²B¿ç=ÇI‰ãÑEU‚„Qg©R _… ‰×ŒYK"¨—Ή8’?2©]ó£ò^´uo¤ÜH¬,ž’˜I4δÅ
-Ó_Ôr’ÃÐðîc QƒHN
-®úçŠoS;>Æ )i~€ C6Ê‘÷NW)”À 3FÚXë`-òëÄø³“>:#•áŠvܪù"%Ëy ´¾S“â…Õ4Q±”D0æ´uT[“PŒÔûÂJ©ÁÙ>4—cÚ÷†×fˆÀˤ:§ðìÌÒ„Is.
-Ò d®O׆^d Ô*,H(¦ôüÔ!UCùŸn¶×¦¸Ë…çð:*vTÊHc$[Aè$/j´þÓ©ƒª4Cüžˆó§Bcî®öamUH=¥ô-µ×˜µžU¬$ŒÐKÓL P¡”,|´F•éΞ§B£_*©%Dâ_‚(àóåHþf‰ìp“Ðâ‘×+¨„eðļ Ë+³’­3¥¶öþ$ª®‰×°×.Å‹¤Z
-yªØS%âÀàŽ¢PþîŠÊ}f‘ "cä ØUÓê.biŽe¢%* •óNNXèž%“ t°™†[sµé‚ù:cb)$,ZB»4]0ñ%7“ˆCãÕ:–ž£â]h 7©^Ô<»ø×4‘²{g]VJ ô½Þ7Å,R2º¼óBFÛw¶,ëæU j 2
-áfj «4ÈŒÐiwÄz&¢fžr‚˜\ Ž+*Ák?HQÓ±¨®h¢ƒ*&‰ D¿PE€Tzw Ý„-R ‡¤Î¯
-ái¢(çå¥h/”¡éýayE9È~¿W³dÚ­ÓÜÝ&‡+è}é)É¡CÎ4ÏÕDw=Š?AW ÐIW¯æ•P6â rOuëâ²RîÙxM¯s ´c»VÖÅÙ!cí#Öâ;ÿ;Tê¦Qvs„Mb¿èåCD:òßzò­ 5ÊR¤IÙÓj´Íǹ²ÑqÈx¬}CB R‹ŸL ™6”õÄù‰p`Ç°¢Õ‡uìh/MPø‘‰4Ð
-3ŠºUîë,UÃÄÛ¶-0šÀ$
-ν b7QC£FY<Z„Ä)ÊO«3'B"].õúÁ`µ–V ;ù‡àDÓï¬Ú%Èâªv€ÈBˆ «—íNä¼GñóøWk¹h›
-º@U4s…–ηèf+Mz1 ¨ª¼ hG£OG×*ÉΫÏÈ(cAjopQ¥„Éþ˜6î® = ì!ÙtáZG©îØ1?îQô2[â´P!ËÞ¶»ý'ÿm¥SnÜ;çÓ‹éÌ0Wé˜2†€û?Pï
-ÿþŽ:ƒtdJÖO}øgQ£É¦†y¹[wÂÆÉÝ–j…@›Z{7K‘Åh…¥-¥·›Ÿ»‚&†ë‚ßd'²TT"Œ¾#‹Ü¾H¼Òj+¤ZŽÈöý5²?A0nœ#‹^ƒî aÈ]Óqd[ [Ú3žÆ@ZZk¯7­f˜§W¦·@qQèï;eJ+ÃE,ÿa¼\’3Éq|‚ºƒOàГ’ÖžeÝ¢·®ûoçÅô´3õO¹;¢.X)‘ ŒƒY„œQbXu™%
-rôÀ Ž˜™<*”`nÝ3ƒµ”S«èsä:Jê×@¬ s‘tð±;ÈAPµ—­nÄ—\aêŒeL`š± În&î€ß‘¿iÈY˜n ß/@Êx„JíÂô±¼¨câsßZŠ³B¥ùW ÈPšÅ—BøâDÄA¿
-H
-D{azY#yq¹¥k³ã‹PrÖôlûñt­nüŽP9–h4C$•mUwÔ³>û;ØÑ‚åâg«œO)Ü™E0¬Øu“¦±“%J[k“tˆõˆøÆU¬ä€%#^ÅÀp}9SÄ?@ƒ3Dn“Ká±K|W ÿJ—lŠç "ðœÈ^$&UO\¢1Äá>dŽ™ Ï#H½D£99·\gĤ[¨Ôåf´iù>ž¬9¥DX¹ýòVTΡ€=ÞùAj‰%s½ªB†Ó©»•£Ç¸Ž~yʬ]Q+Ê=âá”’¶A¿Â¨º hŽÍÄPÈ@#ír)¸ªÎ«§ì–÷Þµ…ø·~¹ïνúüÊo£ ýE€Ät£‘G/çsX E‚YÂÀpåÓyb²eŸ÷6y¿ˆ‘ww’)èŒ/‰X~ÌÀ<$A¦Ôœ3ê‹ZìÆ¥ñîeÏ¥\¦—®k¾y ÒÏW ¥¸ƒgv+Ål:†<A øTHasïûÀ$ ƒ™]+VS«c_gMh‡1‡IW®‘Û¦0Ú娠ïÖÏŸ,`w¦ gù&Ñ°ÄY7ýgO·Áâ#>rÈhG—Ë¡Ö´³÷HIí"—Ô¯Ú¥1ÕÇ_7וz„úïÆbÅ'rÀˆ1^²)õ2-[w’2T¹hº¦:D,+l9¼JßXÇ\¬‘ê#Øô[8ŒVæáDO—tÌ$Y´/È•Îx$Ûp¥¯ü¸o’.%\o}ªShv¦ãÏ_œWÜbâoV@LNalþªŽ•—0©K H‘ô0¾‰®~ü:º·~°±<KývFŒ¿:_´T1ERçƒèÜ`ï—ÝÓHö4÷ÓÅËõ1¦¥ã]uC¤ðÈJ[1ðþKcjÞÙ(Ñ
-m0ü "ˆ1Äo¶(N`yGÙ,¸(~”-x!O‹|f‘Ó!X æ_N~ÛEj±ŠTƒ¥žvyÌÙŒq#ë—ýbfŸ¦ïòdl #¶ú²W”ï²æ
-­¥Ìæó'¶çõ@#8Ú—X&£!Ö¡ö>‡M¶½£v_ÊÉõdZ ú(!(H:¥Í5¼%)Æ«vòMâJ™XæŒA9@þñO±³‰†a.v<+b°ƒ£÷„º'ÞpüpÈÔj¯dJô#Ôµh°!˜ïÇôP*²·ÍCö :4M)ŒÝ™²ž÷J§žwb¹$b¢³ûªDK¨ ƘvX¼‚°²0ŽX_Šømª¦ÙÅâ®ÍŽçNUOéh“œ¥½8‡¢c\I@‰°”,—ÍŒ;Àà}ŠþžÇ§þBCg«^]X.Æ&%Û‚FùÙ›YjÅx‰±G†î 7loY•$oVZ¢ûp¯Æ—%÷é]òŒ £±W
-ä·sêŠUm lzWþ£kÐ:–",ãiø®Ô²Ó‰¸gÙãkC¼
-âQç ™O>ž@”Ú† :¬µÕ"“*Ø$ƒ¾’/'†|„ÞA_žÎÐ}¾
-Yn†÷ijL‹Oýe>}MÖùŽ+†‡뺶2d’aalæãèîG
-jM>Œs ;ç&pˆØÔÖw†±±pñF9’Û”;B º,î‚'ð¢rÚä¿N ›ƒú|Êô[ë\ýx;]?‡—ê¥âUO'Ì-² ¹°Ær¿×s©We‘©íß{p·¨‡^>­®8©À÷@¤Q^œ3q¤ÀÚ¸" CG3Gþ"“Vü˜ËÖÂÄ2M„$ÜqÞ½„æ ¶GNñ’AÜ Öh!o§YÁGÒ+1wƨÜG»J(`Ø;mÏåsxo Ï ÒBåÝ,£0ÌdF3n‡8n÷ë,¾õÕÉoÑí¤H4›*(ÚVµ¯
-3òìkVT€:æ™ß£Â¶ë‡åÏ8‡~H£§^>ò*”˜<à1¹œN4 ™cåä÷M¦Š9f­¶¹‰R.º‰±´‹¾,J þ¾Æ‡$甓Jä«QV¯L|9柪%í`„!r!R?¬³_W?HDñÒÕ.«Fú8Ls›­ñiìfÿó‘2â•y¢2¡.Ë&õƒóµX¸%†€å£qHÃéSZˆ™Öhäó0G"CˆqÅh$<C§± 2 ¿]Þ{kî/ëòC[õí?|Þ°¸á>ß°)þ8†À,.n‘Ö©å™u³äY˜Ýr;╺كYj8cÛV|R–!_ð¼x¢ã0›CnÙQ~ÂIö¶‹ŽW¶9<g<ö—+Š}`®7„Ît1m0ï¹(¹¦LlØ<`~Ÿ1TñÄ>ϱ‚”FPpKq,²wÙTG¹ŸÎÄ|/$˜Uzu€ø€™“.EeÐýÕX@¼2Ȇ‚.åå+ï˜á´É
-
-n˜-. JÎQ2\‹%à
-‘šz0Â3éÄ•«†LëÙÌŠ³"Y¶€Í.Û•­îyy¬C£leùym:,¸ÅËiØwÚÆá$¼u¹ò™%¤s†(¤Ç@‹cçñ’ ñ¯y=îŸââ«óû@wp$s§îïZ¼p‰2Çy¿œ5¯Òà/éÔä¸lÊ2à€ÓY'ß è x¤_ëRÔ•nÀ
-Øó"tAŒPJÕR"%a]R.ýò_Jl´hŠ¨ ì{“ÉØAÉ7;I÷ØR›áWÖç8Yói_ŸAD£ŠÔT¢'A=¥õËJó·´
-E×f3‰ • ç
-NHiÕþQÃhAƼÿv‘lÆTB—Å‹p‡™¤¨½×Ü®¤eÂá,5ý»U,芭5û¾ÂSÇ\¢SK¾] ÄãZÏØŸˆR5ª4!GŒ£»ƒ'5käp<^"Ýat¸lìD=KA ©–ÉóG„.JpZ¨" ô£~Á¿ ©ø*²ÀãÛ<íO4€6Ž]!\C꣈Ó…æJ öÃJ˜!ëu* ]ho‹®!–2ØRÌ Ùf²o§„~ÒPå\öM·¦(M=4Må +‚ Nrᔇ}G.ŽsÔr• ¢U,Œ!±0ÛÈtT£ºì 6^Û/ßÁªð, Kp›&'­éÍòú(BªúY©­/ÍÁᘪX$êð£ä>)?êQ$l˵)´}·¡d‚= ‰³
-(|ØNËöîÂWØoßmÂbŒ8«Uà2°¦‰$»Ë³Baà¡VŒÝâ¯4Ò
-–U%,!6š–aœŠðSÈŠ®W@üh–¸i°
-3惾ŽÙ ÔÀ§"ó kÛÛž
-@‹-¢xÛ­%M®v°`†Ø‰¡ÝÌ EÜ]!_j3H*AHg4ÒqJØ©ÁK<ÏQˆŽ à}#™—QV4‹»¡"BÎ"¶ˆŠ²XÃVaüB´P‰¦Þ`Xzáö…àŸ¤ÿR‚ã»s‘®²u/ÊZÄ B¨­ÚwP/RM¥Ù3¨…¾HCîyx¥SR¹ÝÜ÷ö‰Æ0Õþ”a'’öêaf4Ûˆ[nš’…Câ’º ¨?ó+ãlBI…cGyáià…<XÖ()þgnƒßQžóÛ@Œ¨ÄÌ˼o A$[»¨·‹Q£aû°'E GÓj»Vº²@b¿²}FÛ@[F7§Å
-6¯íÄÍ•l¹1û¤’êÜÍW\$‰ƒHìÕ%}EÝXªåDÁdÙŽg·ám夶¸Ý(Ÿ˜zÈ…Þ­~–¡t “Sö’M4ìxS.Ó¬¤™“›íNêb“ ‚¯~-~´Èê(B"Í"¥ÕøB¨ÃØ €“èzm/% RꂱLò9ê^ÔL®ª
-É(›;'Ò$¡¯ 爭[ªsΙ¶SÉW*áèñ¹ _êí¹ê™Ü§e¨åÏühxhýãeŽÈDÑð´et`_̉–IW'èGšºÿ¼ŸHp¦«P"¥…ÈÎF™?ÿÂVk F[a"g8ò§Ñ£B'\vOAßbGðÝNNà|)Ö‡’^”H1¿!Š!uc¾MÈåd¾y(z(9‰Í–âQ‚&ó-ö z±}*' ɤ:¸Ò_ ñaš<½TìfæµÁah FOeÒhþ¸…*- ³³JÖ’C¢²\lÞlç\\7æ*L«‚‹qª¸x»Ÿ8@f)ÃRK©=ôáŸâp"‚Ä!|<.-#âQJðE Q{ß-Ô $a-ZÉðÛ õ8Jé9°Ô~Öd]î´p`ÝijXý¹ ´ƒv–WÃ9E%äÕñ'iŒ3騨¡yTIÑÃ9]_ÆHÃäéá6ƒ`Õ‰i9íI^…[ÎÚbî5ÝðREA°’£ÕcO%¿Íjm轊V(Z{=ß//—-ñ®¯bGðØ(9Ò篺vòêÚDFC–{=õ¸ŠÁ(
-Ê»Ž³º”¬O!Œ„Z
-µç`ÆÑ.˜u†~¼Í ·W|éÎi.=þr¯ÖúØÝ%Á$w:òO§0¢aëGî€Q²œ9oEÏ7¥oV„“ŪM”=·å’y„D ë@+*?01 làÐWìÁO°pP¼6vž‚®²„Z¯€HA÷#2EŒU™}\A›ßsýoôºFàüc˜Y2
-Ò¾Y·!ËÜá*üÚ%v›·µâE°3/¥)ºeä mÄV–èW¢'S–fôÏVÍ•;î5P/öJ.±¸•WØ)ðÉE½î%!Ál¹§:ñB;JÙßÆs*—tË)x <hò‘
-¯QéK5\7Õ
-›LøˆÀ‹ÙvXOÉ9<}ăõZäÎÏ—ƒìúA£ÂkbK©=«@]4ž~lëú;~ɤ"ÝT™1+ͦaÆÖöA”ƒ‘"½ÈI6ÂÍUè»<Æ¡æíPƒéÊpEÒˆ„ÕÜ>v-zÿÎÞìâ8–@°ë»Û·{#xìcçG Ð.~/‚8miêŸݾv©yÿÆÖ½kVÅÖ<ñ3˜\/~/BuéRŒ‘ºª+•)H¶Öà‚TÛwko»ì›E¬WÒ²€KQTbÁ‹±U„Ÿàï‘ï«J"ÊMZÀÚwðdA,ãV|R‰Ä‹dV‹ÌÁÝ¿ÿ²OÕÖa¢a»ãPZH‰/~G%Hƒ«ø‡ ÄjêÎʾjòiˆþ2Ë4¿ 0CÁA5å݇cRM¬ë~’<eAÄJ¸$.Z¢3~[âôåÐüSC¼OP¼6/jp ,DŠñS€°‚9ìÖpœÈ{V‰ýd{¦ï˜˜‚ah7œƒíÑÃÚÜÉÛˆ“Ž0J™6MMù²ø}pù8Fl˨OO¿L†Ç2qäv¨X/@¿i¸PÞ(Ø+DƒI1÷e0:üTûš7÷…Leh÷£º²ÚLsÜ°é
-D6k[c›õ^¡Iü‰R$0˜ Nág„¶‚G,á¾ÊoÉ£U’¡þêÙ°3œ¬ßü|9‘M
-‰ƒ<M#ÓÇh›8è©ÏžÆ!‰±q&ûƒ!ðhå„!µ’ð…óøðKÉjñµ‡s®Sà6„!ü&
-tpÅšJ”.97¤Ý?õÅnýOzdi=Þd!­Â;•‘øŇ•„
-kæ´žî5ä?W¥PÏ[3{ïð^£X¯¨G Ò ÖdLÚ]lahù%"Sº'{™ƒ mvNFŠ®C§ü¿#¥ëS¬®²¡É/ŒE)´™§(Z(¨ çÛë¡äíXR‹“"*¾¯Š†[Lغ¹‰5B™ÚV£_Õ;sÓ7™`ƒç‘6OÌV×G³Ö}7æÿéë—M CyUÚöþò¿¨¤ÍØÎaÉ_'œëaH_Múç'3Ö_ÅκÍÓn}ج°?¹v­WͧűYá´&SƳ:!ïú—m²6 ¢^J*n¤ZÌL_±ÀJ´é' ׊7@ Y‘ŽÉž¾7ørÖåiý¡Dˆ 2á}ÙùC{“‘`¸¡­šú±èA®<ð}2µí¡òÇ2ÌÐdh•6‡8Â.&´ ךã^ˆ+”À¯ †V‚³ÕC)`eX9ËÉmðUacŽÅg'éÚ ®lhšŽ0“ûcÏ‚ - Âþ 1ð  >Þ-žQ–Yj S7Y0à<2º¾ÎéQ­ŒŠ[ö!ñÀ³ÍS%¢ÜÖ¡¹TÜŽ -U¹•2ßòkÑÍŽœšüÍ"öYè%–ÅÇ"ò*ªŒ¾I¬½áN•Ó]LÐ1V—ùE ®QeáO³”-ùNˆá‡”ßãȘ6ÞQª¹Œ3ßÆ"yí;CZµ%ŸÞzÚŒK—˱MÏ  'BÛê¡dA£1¬‘¿´ïó_ÆË$»Ž†¢+Èþ
-|Ø7cgè]d*íšû@ðÛªb9É ²! <¼æv:¯…ã{m—46S&絈¸¦ô®È“?FûxÍpd°?Źy?Š1@bÈÐlìDÇ>€4½ã‹hyÉÐÄ„´dÑaýbÚÈ€…§–[<³nÌ™Œ«¦³ó{ñu ¸}ˆ$L” 6Ö³X&ƒ
-;â'x¨_F¼#“¬¤".PM5¿é¼dKhèµ¹ŠÈŠ¹Ckð*„n{|ÿ8 ̘Ÿ™{z­+ƒRh
-½Ýˆÿ3¸êå`0³“qÜ+ÖÃù¨âDb/æéfÐ[o@<ù†‚†‡I"çYIÖT A.³®>Œ*µ=Ë’å:fCù»u$¿:³ |Àn W˜<T\½ç÷~G@d’X
-Ø[¦²)«„ášõ¸˜WI…Ég$å4§ vgˆ‹!$9ÿÒω¯²c0íø@>+,Ëc‘-(Ù’œ·}(ѧD"MØhQy8‡
-Ö«ÎÓ«(irTYXÅ?uéE5b+-Äs¾=VIÅxÉ Oc°Û¬®% —™ßϹ!ç~›+
-=*ÑÔ2vÊû3º~ZQn¼-à§YÙS¾¥DYRL‡â»Ï*ü 4JÌ­ÃJÈ£6™Ù™¡°Iܱ”¦kS¤0Éõùgˆ(YáÞB°c—åÍ®ËîÓÁ)Î6¡ãV†òSÇŒx„AÖñ@™'T ˜©²ÐýPô±Šº‚ùµVw˜Øá‰U—&íŠW¢ØŒuʧ‡SA&â™A,è´ÑdT*¾5- Ôù87Âäô½9èdÖ»ƒXS=µZYîrtÖ‡qÞu„>Ruã‡sé`ûZl›VÙü¦ˆ&Z [ÅR L©;r°8@ô,cŸêh±&,Ó_…¬êÚì
-¥”à¿0ë [ò»Ò 
-~ ¾:—$"Ic(üüçTĶÉôÁ0¸áÇCÑWëx¸2TH$¬AÅÈãÓo>öÐÁ«>ÌáʇyÞYE¸uK˜Z>º€ÞäÚ£Å}›Ê 84%CiD;9(ÌÅM<
-J!7ÐF§a½ô\$}+‰nµÂ¯ÓÂDî’DÁjÖë´w°«„‰PÐy¥ ó¾Á—¢UÔdDe…ŽÊE¦×Ù»é
-
-‹²æêÜ>D] €µžŽ´Ä¼É I™ëón1_³žxw…“ÆÙÖrfPÂÈ1Ñ1Q8dN.=úq–_+jFE•Ñ´¯ûõ0뤜¶–s°¼+¿e%ÌÓ™
- ”ýC¢tTfÀM>Iz„æ@óÈúâ
-¹ûF6ÍÁ¦F Æ—Ó¶TÉíC#Sxü<×\èŠ-WŒP‰®Tä/ÕcêJ±­`ÉZ²U jv…KÕÅíGÐ2ó"x×O©ù&ÅëpÅ“"kè—U’•rBâ3u•Tìùª_ž”a2¤QÕeç¾JxƒÚÔ Ôü†=Àyu¨„œDŽ¸br"6Gy¾UtFÀUáÔMÕBJH Æ)‘½ÅNá
-Ž”8™Mhèq[%XZ–9]Ê0+SB’»S‹A{¯ëS´sòðÁ(à>#§‡’ *A–FiêReMä `¿äW¦çØSŒêf-~aÈF£ÒÙJHS]én„ÚW ñ¨æ¤öOM|δWçî‚Yîb•j#ïœF⃼TbT†uY=ÈTŤ2¹È6Ûñ>1E‘¥Þä°ü_Ù’
-DxÊÓš(­G±&„F•†C½ÃélwqnÚ3,Ú1·#Ë*ÃwàÈSÉ=ïè¹U:ÇÎ×x(ú8EÅ]¢,†@ö—~ÓÖ¡ù8Gà Ô :ÃJðÀü+ü%o¾…L74®º{, žiáØÎÄ°.ÏßR¶Yaˆ@S¢¯ï@ôEcîÓ¼ UûÊ<kîxq=ª±±ÁÜȯ‘œ•D™xe³òÎ( ¤iî/±ÿˆ ã†{é×\{'de‰ß÷î±,K–¶KØ;iàÁ“ͽ ·"Æ!nhézncbÚ‰
-ë-N1)* , b˜Øa]b\ ~;§ü½!½
-ÁmÒ¶¾©TôA Ʊ–1¨üÜ똇¢_E"žIËÀÀ3S…ÉÛ´F…¸*Ejš%I‰•ØÑDƒ$×
-º‚+„6ŃEüÏ>Tå¥8“WýÏxÙ+grë@ô ü"Tÿºœ*õlÝLÞ÷÷i£²fð•d¶v¡™!tŸ¾Â"£–…óˆ¡?§&9)kÓZèãßµ[ƒ‘Î`°4eÁ'LplO†͆*ü­Påè¾
-é$0x-êòôÚk@À*u! EË2ÎjßÐ.*ã -’â"K9둃!´R] ùï?¢"¾PÔŒ_âeæ»þ¼å ±3€æ(BT„<@˜Ü›{â¡Ô$Íϧ_˜$÷CKÿ)[0a:Îγ7j1¡•cõŒÆ¨
-L\"sL‡Ð’³reK33ˆÑšr-Îͺ˜Ü` t3_Xô°À¬Dš¥jÑ‹ç rÄ^ö‚A;%¨Ù 4k[¡x†Á~b.–«Yß·_…i !…~årí::¸¤ÍüšZ*¢§ûE„,RÖ?Â)äŽ-®Xð›¯ÑŠ`ݘðåÚ‘~a•Xý‡ex*£!âè]4áð)Ñd8¶Ä›œlÌÄj†Bø­ ~š² ìÛùv‘Ê^à gá„Ü¿ü;,Rï7ó²%>°M£+Ü­¨ˆóÙ|jèBi¤E*k÷­s†ÃgdŠ×+D³´™éØ>s@‹MŒ–‡wÖÖÕŽc0n=«Œ±ÌÄW”Œ
-’T"» µé,œ°±ŠX„…%yc(²J„*jlP„éj^I€S õñ¢ífÀ¨!õ/&0Paع[1¡sÊ0²®=@æz´·«Ç \û#ŸT¨ÞR;Â
-n#€lfèÏ)Ù Â:ƒž{3™vÒ©V9(ùõ“Ùy¿,ÞH‚ »;p¬y"E¬N¬ú¥Åš/Ì~“ûœ1ûúe÷¢=ft
-/ä9xLP¤|ÊPr9%ŒlÄ'u)> )•¼ÛëÎñÀÊ!ÕgÊ3dĪ×Uº'dÀŒËñ§
-J‘_°cⶉ³Xvgó_°ã³(`GŠøž20Ç|íÆWt¤‚p_ÆÂXˆŽ ë„P-ÇèÈ5Ó
-TMïFê tLÜyó!3{ØèÈ©ó·‚´+Ô¿oeÔÑÑšø
-u¼+—4áéÙ½ûCÆm±‚ö³lgÉ'"Úeê0/a¼õ9@;¼Si¦
-$µÏ¢ò14Æ&—˜›?¬áe0 KC›{óÝŒŠ*~[Љ´_Nƒ8Rõêè©(!Õ´²¼„ÁûæCrˆºé9ÔëÜŸ˜’#hZ!EmбF†Vvo%34( a J~ùHP²ôŒj{ñ>»æ>VÍ!8ù{rd)òÒ§ïW$J@Z»ŽÎ«Ñ.¢iþvo[Üé© ÅpÇ‹]§ ќӄ%[×ÞM_Ï èÙò
-g±|Ý áÅX<j ‹‡¸ºˆƒïÑËîE?YÏwßb«$:1ëB„±šf¦of*©L7`Ønqz¡h"r|>UõEâuÈ6! õÎÃâ; ñ5#9²Ö¸tI¹ÆÈ›O5œåÉø‹ò¢'Èý‡š«¬)¬IxÁ•ydÒ«Ó‹DœŠþe¼NŽìˆ €Z@hK¯gê(/t¥ü¿ê%€&Å™ž.ŒàšP••Ëž3¿,²Þqìwii­ôÞ÷zZç´ûþ³ŠŸ¾T©UˆÈs³ÂŸ‹~ý?³(Ç|Š^ƒx¦{dÉ9òDȼÉmëÄâh„´(q›¦Õ°°ÿöÍ |ñŒ¦ac\ÆzMaÞTÿ\&Í‘ÝÙZEgK'‘ÇŒLø@Ô
-VÚ-çkɇõv­ g3Éx]zÈÐù&g˜|[þV”bêbEÏÈaò²wtÖž-Æ&tü'b
-é)‘aÚ“(ܧbÙgÉ;Ó[Ãa‡•r`ø´~iä=¾ÓÑþ–§ÎYq&Ò²(FÑFE‰v7_êÝâL²Zá6»ì¯¸ø=ÎfÓJTBÔ'·P³¯)Ùò:‹V¯s]Æìîò¸QB( ÉÈóé2qå…2ÀºŽŠYCñÐÔ×Q0ðãv{ß1ÝÓþW¶£Ï’‹œ8³m µ7›ÊcØ„’~pðqàã¨ü´Gÿ„‹s)`²Êž´)%"Hóñ¶ø˜jZÓâ(Ö{û¢„a¿£¾ƒ×QŸŠ° kÅCZôyåV8ÕDÝÛˆïù.až:JH£‘ÅM–eûX(¤äï<k5Ð>ì µlŸ
-H‰”—Ar\9DO ;Ô¦‚
-’` ž¯ šÅ‹a•ƒú¦2![Ò *“?ª™'Eqê«“<í©¤ŠŸS,_|¯îô
-s+íÌé¾yuoµ&ùE—}ùg™®®C
-u8»éò{^U™L9Ö€É7çÐDetƒ<ÖV4°¼8 `«…ðé¯=h¶=ókOe Oá>îÕhYèF3³òSÌ¡dWT^ÑLSˆÎ {DÌ é< £Œ³®<?Û Tî¯mŸ4* iô > !|i0úùäâ,u±1‰[UO.n–”ih¸'ÆoœO•R)ªÇ$ÝŒáR´$î•_@.¦ ZßÊóN®>þšÓ–_ÇD]$z1XŸß€RLH?ϵŒkR‹SÓI´5µÓ1ÎB®¶^ÛÐÑ@;Úöf¥QH×_…ܵ‹m4"é‘ñw™çà!sìSÈ"'ï$DGï4GÏÞIÏć8ã…ï§(õ"xÔ'¤Û­0°
-»IA0
-ß|bù—BýþI¿dk•ÙZȈála7ä‡ó> yâÔ¹ªYÍ$±Ûª0‹6äÒçÑ®”iÄ„DÚ\¨Œ^_õ`Û€*1›+KÔÞ2·Øuµ‚ùg¬1yt¦ÀRù5Wœóºzªü«ÐÁ±: ñ‰VÚIwvUÃŒ »z…‚¥0ÒŠÕRqÐý§KlÊgŠ©Q_OBcX`¹Ší%vO»M;Tç9ÆÍ4„¤Ú .XÏ ·Ú_L$‘·Õ3èKÝ?Ž vL\%Z‰fL:×9±Lž•¸È"øÊŠ˜úz99f°¹]‹ÊÇ^ƒ:Ñ;Çd¢ñŽ,ݤ¸?+™Fúi&ol9Oúß;ÒËtÊÈâ ‹mG,i¸k®ßÎú/_ŠéÜç0OQ¸Nc.Š:ÓTsøî7Ay,¾Ã×Pfa¬g+´½¬â¨_N¶Z«]òŒ%Ê ‚O" …–¬ú8·{* ­8©×}ÕzsNÈÀºŽt®=ôÚ9Ø6ðó(Ò2¡wÐÁŠ
-kXga;q>”±¥WN¯XVÍŸ¥S$f2ÓkwF…3š>‘]TgBk\æ[Àb¸ÁYX²’9+ü@ „:«$ãR(š‰Pé„XŽ˜Ê°)ÒO÷'©âM…î)»3ÊHÍBé‘üùt‚–\hhnÄk÷FãèkG[Y&5¤ZúiVžÊyèTÖ@ìömjÝñöMŠIþ°Q×Ä¥T$]eO˜-”)톖}
-/ ‰ÜSÇ´GÑž#;ÙÔ‡¯§£ß´FZcÉO‚¨è
-\è›J5aIË™{€0Pñõ½¤Õð¥†'Ðõqá-ðL|ä·èã2ÞB|Nå6‡ÒýåX ŠCíÒ¨{éd
-F²¯öuÎk^\ê¡œ7¯›¬à8Ò
-¡äŠÓÙC«5²´
-£Ã×´ËïìGw”ε‘`%×À¡x¤ë…0$Ð)˜sQ£„¼PÖ~÷÷ÅRmßõ¨é8(}KË7=¢ŒoÙÌrWþ¬ƒŠ×"l;wÂ;£Z)û R•£c¿G¡Pð x:;ƒçüF*Šs£É¶qCÍ¿RÁ+&MÅ© \¡T°äø”ˆÝùwÅFE2Ì£¤D§€›&¢RÀé§ý”â(Çæ¦
-ÀƒœµN‰‘›è2Ú’/þ ö£Õf¿+^d– åÒüunðíÌ“Ÿ$ý
-Ð"=†
-=$°ðWÚ
-ã@=Žˆ{Ob€TCLP·Ã‚Q…€Òî)3×M´¨þÁ‹ìkÀ;—/}Á_‚ªMtÂàƒ,‹¢ åõƒ¤3˜_÷óMM3¾†ZÓ1®¤˜xÉzìŠ.´ …/f£
-Ä] ‰,6Î!¤I€@»Šph¨ l´'J›,º¸M04 Ûä³lÆ)a”E´Ìâz Ô€m†¶‡oÖk‰>e?Ð(möDY.ÇzsF¾ÚÊÒëùæQ
-³(ºÜrÛýl%LÛŠ&6ãG%ê|éQ#‡Ån£¿¾èÑe2½6`ÒÆ›G!è° ™†:Ÿz6K5ed¸ùAƒ'AÑ' &X4œÓKÉþÐë¼çD¨ù÷.øO
-0œ¥)ÚsDD‹Àã²þAß•ü=¦Ÿgë0örnŒ8 ÀÏ=̆„¨¤Q1M>k|~ì¥è÷7nôëM“nNع ³më3,ªžÊä‡çJขLc ÒÜ%U¸ìPz–é¡a‡Êð=×ó0‹"@Í{¹ßƳzô<&ͦ.-ªÙQ°B»1$õ|gjAñ)+µYÿ‘Id8 ä¯úPÇx0e¹“hƒc@h’_e7®1ú;ÖPA*Íê ¼~†·5¬üâ×\CŸEÙéÛãÿ|Z|É$CL°ü!wCŸ°Y>N×­p?Nn¦#|@`U|Ñ£_*vw_{÷8æ1€™ ¦˜±#†Õº¥|>ô
-†¸*Ç4Å«
->Ù—Bêè‹ÙH¯òéPj9¾üõà‡ÌÀxêRotäÔÞ+–ÐB¤ó¤”Ùï!æ¶ép»‹0^^úãô5~¨Û M
-ã»EYòµåѦ‚¼ò¶ûFÆ­ÆmO@âÎ0NQì¸ÛGþÃ+±è¸³³M„ŽÜüù•˜ÀX˜Ð½Ï¿Y"ÅKÉ¡7¢†Ù‹œƒé› Á*_ËMêâ·xj³/C¥—ÞŸON…o
-~äœÔÌÈžÒVFIe”¨® ž
-ƒðõ ³xo¸ ­$V¶í ·ÃOt%N´$X
-/i)“¹
-Jö§š¬O¾9§t”¡ó6Ìü)±*E„ÛÙ•ð$å¹ÄbnÇWpÙH™jjפ€´õ
-`^ð«ÅöÐ@J°ð6èítG$Lã1æ2–*¡
-°Cº”°ôoîÀ¶ŠHðgz‰ô$9ÿ´˜‘ÿÿ“â%ÎÆ?€?Øoä˜ê]ŸÇ¬¾˜ùÏk´8 -Dz@=TË €Æob“±&‘úÐlÊç8ÂÌ5e#ùì)¨fËIîÛOã$‡’úJw§E m5 Øx
-ˆuXµåfì(á*V®¯ø,ž%…ù•š4ÃÑÇâ‘ "©a9|îÏ¢¹°l¼Æ.EƒKÀ$³#û¬w§Ì#ïXRî­xôC)cŸ¦œE ”ÑÔ_„RøBê±F\à:ÙOë S`rÙ®Á$fèÝKžyØìX*üàRRwG ÿ’±çP
-óFýzVÊEWª,ÔÙªŸV;®fWànØü_:kÎ;ò¢¨·×<*zI1a|«ˆX 7àyQÇij¨¢DØ4ä¬áM}¥žÆØW¹QZh2¸:/ðaAh÷x,ŸñCx‾%I<s¶a¢ÜB Ú37RÓ«ëkìeÂ0«­J£Zp<E³íY°AÁâ,æg]?
-QŽÄWÛemnb)¬ulZâu\‹žÎyL¬¡ 4¹Bƒ~&klx}»û­È#J.ÍÏá×ÓîD>/b à5­‡ø£¿MAë—Æb"Ô³Ÿ+w¡ sO&'éá´r<ì'w<E”Ãê~W‘ƒL~rß—úÓ}5týÁ})¥­ ¬É½–o¨NµÊ Ü«:lÎS”„58°(Õµ¡.bãqö±àè–v‰ v±¨+3¨øð/ñ(º!~ÎïŽÕJ@ صKnìÙHÍKx”Æ Ì£ç<¹òvVôÌâYôô=åsw)(Ûwk¶Ç?¦¶C"Ð\_ôr#H™³3{B³7:ªœ´L*ðÇŠ¡ñ¸Vy˜åÏK£Ö©º">Õ@ì0@ *ö(Ð;䉘”®{=e‘f•Fç$¹¸m¢C[]_ÑE Ê…©#¤Ñ>¾Á?¾±ã¯±wÔ®©ŒùU·X€d ÷"”àú„&–.ê%®É¾e‘%\Tk‰Á±C]íÒe—j
-ê°oÆå¡w¡iÕþ§ÿHê[H+'R
-~$@4‡®Ï¨
-2œÚ—½ñÃì¯5FªÐ.—ƒÏ²S¢&Ó%ìÙu–ßi ²ƒ(r÷|
-ŠØ ø­²?½:–HÍf{qE›BÀO†AN‚œºø`[/&Ö;Þ’LjÜÌui¤àR
-
-„
-$D@ì—÷QwsÖ®¥¯7=;<„’,F £&wR’uÒsâÎw.Ø<ïrƒÏyÒ b\-Zƒö ‰{d1ôIòUÉ¿çôyöŽMðnèÙ¡÷µw9$WºúBœš;.8‡=Š¾Þ¸Ñâ‹dÞ§ÂMĨìhÿ·¡7$^~!¢¸ÚŸ>F& Úâ;OüE׉Ä*BÙ®øSÃßx@ æů u¨>M™°:Ên%ƒw¢ f—Y¢éãø;E÷,РÂ5Xëµï”pT—Âo²G6§ß‹f²¤|ÎZÖOà­ym#KÖ‹Xmš§•”.û0,‡lG‚¨y·/ƒtt6|ÿöÌÄE<$â/¦ð°Õd&F¹ŠtÝsÞ? |—æA!÷;éKÄþ²å#ì¨ ) ¤La¡FžÀlm?¸//â"eU¸0K!ìî`£ø[ìQyG%9“ñ¨átc@—ÉLÝÖø:cà{­*5áOwî‘ã°¡†ñ eaôOõ¯Ã<Õÿã~Ú²š4ig›¬€kÄSÑ*m15ؾ^!ç|—¨`L±pi[¬!S[Së-¢°™= S±•4cRjŠ6°
-¤On7hA?Ogïg`{ÇqÞˆGWtÂÊ–Õeþ© ª)»æÜ™æmÎ)
-llļîw°Õ$¼‚M΄…}–qH<sZIfe Ûùo~fdÃ̆P±?yÀE%íi5DQë##Ïw:*)P’
-d}b5gêÌ49¿Äî"ÐŒåM¢j‹5: ÀAFJÛ2ö.C‹õŒvØkP) ®Åuž}[\§}ÎwžCà2ê?Ó²\áÍòJNN2«qõÄ$ˆ?Éö¿ªÁ7°àÒJ÷âr_n K<i D.ü#Šå'Ã<4-Ûe¥W)ž #øRѺÿ,‚\ e",v°$»èAØØ@g󤂒­„&K‚ð|rßo.w]á¥ñ•¯yû=…j¼/í{J¬(–¸ €ÚŠt+1þG#‰ÍK²‚ añHÉõ7ŽÞ»J…òÁ²¤ª{·èŽ$: H& „Ù_ÖTSkun€JD; Žüµ€¬¡Šiׇèhe.ðw,ö|^Ålñ­ø÷ž„cq³yÀôî~<kû!¦¹¹‰û4¿¸è™Iúá8(K%ËÆVq‘ Šž°Ó4Å¥
-1Ò¹^”On¨MnÉC!¾³V–èòdk
-­'ÇŒe`A™ÌKz‚Ð÷*ʘp¨†ö3‚üõ¬•ÍaQÔ`J¾ÌÓ6×!®¹Å:š"cŸð8N£=÷Yt6r%á3ù‹#ËÅý‹þúÉÙ¹JIð\uÖÂJFªAÄ»GÏ™‡4p Ûœ»èÆ2_Î(êÄ!KïÖÜÕ-"_á"Õ»u‡p‡
-0zµóN•tx‡·Óš¼U) î+§)óþsáÏ<,þgþò±¼!ÉôÜí;5CÛl0»²E]Û1¥™Ø;+)zÑ@Ö¹âƒh öÿüË+º†žñ–C •PF}·æ±|_ïlè?Ç;æföHQÄÛªsEµ–ðcËÜ>dA55~¯N‘JÚ$–-p¶iŠaX³z»J(†N0à,üvbl›d‡ù ŠçÁà`Ʊ)±iŒ®Ã¶|§g9téÌÖ‚
-aÓ¨YxŒ•ðzX/!ú–Î)JÊ­t³B¶~·>Ía‚À–œ¢/+*ìE"õS¯H%p~dt|ëp+ZFáCíJd±
-" ùÞ²ïUC`€k±ŠåÐ8鶃:¦¸!6Pª¡-«[oq®ãøW ÂIÚ¨lË{AÉ3éõà=ëU
-3*ÇÆÞìՔ׫
-½µÄjÂ:DWcψ~›,ÞA¸!¬5 䔃ž Ô^gA˜ÿý1\F–0sAìØ{ŽÄEÇtˆÑmˆ^¢x”³`šþYŽ«º€þ!¯Ÿ Á;gÂäÐ<@×Û-Žþ}Q#7cÙ¢Jc2“Ç3¶äš*Ù@I´‹¼/~Y=Å# ñ«Œ‹;Ülò?•‹C<nˆª6“JIR5éüíìÑy•ÐæŽyýÐü1Øø¹¥¦áˆ`QHw8O‚Aûá.ì%„ˆ€5¦?>`@0k(Žš[/•Ô}Ä‚q׆T<V æÞ©¤A·H®¼f'ÿ¬|Á¥“FˆIùtP)ÉóW3nÅ5™Ã¦îúaY‹òVQ¶r -[ö9€š¡0–bõ` Ãód2* 'ÉIìïÕj f·¶¨pKÚÄ;™æ³µPÌêÓ!”¦ý³ÄçâÙ1¿øÄl±Ïª$²mýTáRêÎ-x»Cb²Šë¸×%ÙCf@˜³&ç¸Úv,Žf½J?Oǹ4î’IÚÔÔ‘X¢ƒuƒ"vÇõÎ
-9A
-ôÞx'‘"i¼Aô¥éef<0ù&ÇRŠiåLCHgU2Ö];¸ÎÄË…f9ÖBã|IJH-LóÞˆùc‡®J¼q/Ô¡ƒPgÙàfòm¢í¤òpXÝ‹~$ñnk‘u!¶nSA<ˆõÿF›â ؽÅv)êr+íêð÷`@#æw|ÀT‘2Šs´.³Œá¶³8°+£“ (ìÃ?…øpx–+§ Ÿª œDk”‡°Iynµùí0ãáZÆ3ò¯ æóOÖË…ï%þ‹euJë £óØöʬuõ–w¥bp3~e‚‚€ÀaîË/?§ùQe;6DŸ%A½_ ?ýS’6M_üî=Y¾q‰ëΑ±´Øy=“šCt+¶íÇåÓb Õœy8û^@ïÎ'k¨2,•ÒçB. ó€£GÍRÿôvŒ*MÉŠˆ–÷f 
-Å—ë{Í~æ93Ï+=GïQ™÷ñ}T÷9ß_zôó÷[¢uJ¾N|wS”lòv–ÏPwe¶<Áª:ü€s±Â¥d~ƒáÖá+‚C”&%<©n1D²£hƯƒ“dÐoæ6E#ȤX­Ô‘š²Á@ÀüZ£|¡¥[Ëß¹ý˜šPX“¥º¿W1äΡè|Ž’]¸V_ž¹s+„¯yf‹u.¤ÇD|õ/áŸÂ#ç9cœ5õø„%Î;ð&΃ôE±k”G_6“ ]ææ»M2BÀ73ƒôñ×ó¥ëŸ7L•ÅħLáSÌq5E:_ƒåE°Ø:o6׆'ñ&U,|„›JÊ6,C˜ü§!2ÉôÖÍb1Õ°åænè%™o:Ñ7¾¥Ç¬ŸV¾Ñã$x˜mBÙÏn×÷P.ãüšˆVÃÉ
-1%¸¨´ç-ÔŒ!¬vnÅb9x+Wøé«ÀDÈFtQ?³Zý=X‘*_K+ H
-n¾yS¯äÒ]Ò¡˜QRñºµBº‹Ç¬¢–¼Iá új_w‘'7ÆÉa¹ËˆýA;³T6r-¢fmùºbÔoROløÌë›MML0Ößç¸a„Àøi#ÙÁÐÕ1Àe±<Œ·$^#"ä` D/CC5¦|sÄk1¿–0FïØݬÀD¤j‘»jô›ž
-ÆõÎo _Fôã¯è9ì€ÒhãÐÄõz_Àëç~z'…ën½ƒœ`òü`Ãá‰[×útŸ;)£c>‹£‘f1†ÏÏÎÕ…´8DÅ8&^s¶ ÈÒhôÆ.æ#dŒÊ„ÀVþ˜¬®®ñŒ‰cî3¼;j… rBXÖ!"cȵ@GÁ°Ø(tðÃ?5K“Ò‘×ó¹1ÜÁX¸Ì@Æq
-ɳa‘ý[|66#ÏûÍñ£’šÂXL}24Øš2Þ<7Çøp”‰ž
-GpFE¹¶‹Œ°7My®7µ¼u󹦙à7­VïÞ]Pțà I®)NÃè²;°î0‡”Šxɺ­ÃÉÿŒeSýSý‡¶2ÃÓãX‰aÕ-1U;»ŒÄ0J8QÑÐSzIšÃ×Hr/ô4!ÞI^c:^A_<Ô甯ʆ…X²×åÄعìN§5 ÒåÞ9¼‰C"A=ëÇÓ·Ú‰\ìuë›E½4óat5³`Ê­ÖnvÙ÷%¿/þ:ŒÂ7±Ø¼y–= Ž 3ü9T!äøâݵb@v½Š2‡æ¿3c 9ôõº­Kæ0‰cóÚ«ù¶u™ °Êð
-c2^ÆëX\iu'èà §eøS$.Ôø¹‚JBšƒä)îŒ ÕŒšu £ôÙ;ÎÌ£
-Z°Ñ©"PäÐ×h||Êö"敲vË°k@óãl:<.µ øØ9ÕPiüðwý§–k8Â9aÇX~óÂÄk:”$ÄË\ùp¡kz&pjÂÖvl@,$H½{ëQ…#Bloº†ñÕ…ñÉÊÖ²Au{Ž. %zé«õY<ÈQ±–­¼I«Ø ëÅ=$™Ðƒ#Á)nzÿÇ"ù‰~ Eûýé9£hK
-Ø„Å\t•u§±)§9Öò{JùþÓ®ÓQc®ûá×‰Æ ¢ðÄò±þІ*Í`.];m¿²5ó%–d/Bò)4¿RƒÃÄò]¯ÆíXÄÀ½±Å ðÜ÷0B-ª
-ó·îÒ¤¡«ˆ¶W†!Y*ômìX”:"ÄRŠGé0ò &©+„ûøÇØ,m{ÑTKx݃ÌÀ¡È{Eĸõ}1HO€ (ûO7ÝNRq2éùÚ††G×¥2]¢0‰I4
-C¢Î'
-N#p#Ò½>QØ·GPÛâ¿GüÛLq¨dMÏby¦¸w
-sÃþÑoÎÊ;_¸"ƒšL[[¸Ä\±½Ì;[ÐÊn û&\š6Ñ„çÙï$½%Ý윮V‚pÊg—& (³Å
-¹HõÎ
-ŽŒ%νGÉÎ6Fp¢
-ÌÞ‹CHÆQ"|d"Ý{!ß;µoºÅÐ:Î Û¢»É€1ì “ÉÆûo‚Ðq µoº—95¤bHüÍ«/mð‘4U$æöé²FâÚïÛ9ÞÔüŒ7|·7yCŒfaØ™ná­~!ê/g? ùÞ§÷³wPùÃñùÈèoøµº9À…&–ì>N:1wt.»}¾ÑÇñ™¡‚„+z …õåeódŒØlf^ÒŒ2ó¹ÕŸ@è0s”ê!„.kœŠ"X!4£ÁÙ€óZ¯úÐÿ™WJpbúPÚ‚»íI8AÑQ£E%„(Ó[бPõtBtUC!ãg90ä%ds:£›H³TÇ×\f4)u©ûÖ¤X±.áEÃx”c«aÜOš¼)Ñ;fê–SºØ‘yZló~œXH(4÷Ù—UákùnçÜ›p¡¯—è’ÔGäf÷U×™ˆ¨M¹Kä¥L–3X*®\èçé†`&fצ‡‰¬=7ýûkàƒ <N©²ÓEÛwPÕÞº›màïAQj–g`W³ô!è´MÒǶEþ‘ BwÉr2õΘåq<µ²R7‹‹ ÂG­‚“ÃcÑ3zj…;ÞB«Ù—+LÈ5¸œºr…ˆ¦!Ua²#Á„³-ž[wç=Hú’~†wÞAycã
-Ž§£½ƒ$eÊBh~ŽÁªûQ`rj€ó~Ù ëL°Šòƒ[±³ )ÛúæÍ:67F®5oÝ´|oàõ¾ê‡ÅúC:áÅ)à‚¨õ,U2p‚œ/ ‚¸¸¸yÐì¯ …¸€Û
-‚ þ I’;•’¦ßÕùb¿ì*À¨*†ÊçJM#fnŸVeëEJéi¯~èùûoˆ-0E¨ÕY5ì2ÿ€ž^¢d=‹`*
-KÁš£71!)r‚õòi|K&6‡^ñô
--CÕÌ*m¼obqK\è{äY<2ý±LœÃJ2 ZÇ‘ËÙ-L
-,ÀF]!MÇXŒv4’¯UNk×½ ‹*ñQ㥠ÄNäƒÌŸ¹æâ”hº!µW*k) ƒì)Â%[­¦•#Ó^Š$`ƒ…Ü„!¨Ÿƒ}ÈËÆi÷4üªÂn錒ÖüHÙ9‘—$FC>äY°HŸu“ô-W`'Ýïë"’¥ODR\ï§H(IÍÍ^ðRf eç¹.Ae9îÝ„¢ÉŽõÌñÌ_!  }üñ&Ì7G
-—S±c²Â0užÊ  Z˜úNuú ~€)g*ð©3ÁâÉœ©2®.¾Eù6¼wñŠ 5¶q #¥ò6Ú‚÷D_ å²+"~RaîDÔ ñ@e¦£S¿¤7
-àù™<JÈ b\¹/ñìt‚s(¤^œ5sº‰fRé9§Œ‡9“&]Ç®ï"T!!úyÙÙòÎœq„¤œ¡­tUŽdÓ#+¥ÑÎ=¶Wc¸ŒÏØXQÿù$¨èîñ½«:’ßÀ1»ùšúƒé0;KD¯¥™t'liÀÞAÖà
-q9QAÉ:ªÈïÃ_&˜©AúmºfR" GÒ}xç`l;ˆØ”£R/êQ)øË,”$ÛUô=ŒLÓ[öÓÁ
- Œ}ªR´,?žgÖ‹ÌoZvq à[2ªvu¥âô˳Š¼%[#GoýŽSb
-rŠvŒñ KÄ„truÑ×áåÂ"| dTþ¾çò„ $2°ˆìR uáow °¼d¦Á;ÄͤvG5€|è(&Zÿà_mÖø;<ÈH6Tç C؇Œ[©=æÒ«\$ TÛºÊÒÖ=»q‹@Wʃä'´‹?]-´æÖ36¤ì*[4^‚®7ºÈ§*M1Ã<ö;ðlÜ("ÃQd›Iv‘å¢]t’~¡Æ}†N]—òӱɼYøæ3¬Íµö£ØZ…Æ
-F¯¾^€(«$C&¨>æxOPÑ'ÙâØ}y®…4c-@”T¸Öý([3Øf17oW@ÜX”,¯ZÏœ15ºþÈú7¡›I^Ö‚ä‚i'ÓŠ{ “ÓÄÂ&u’åòš9ø
-†sÙH3ÊE[+e8xï¨Ä .×3[ÒvêTÅál\¬Lt BÍL¶“ù@™Ae.Ðk˜Ü¯CIda÷”,pfz áçNÈPcQY~b¨?›âò,‰#sOœ3´™L„s‰†Ë3÷úMÙ*E+ƒéU`<ìC±à¬
-Ìö˜î…|BÆ“ŸŸ³ì¼&6 ò[S£WÈeÎg܃†´ýdß5‚ãfª™O!ìÎgøAŠçÝ€S¹HOºçŸâ¾?³œ&ŒÍ3§…ÞFð&b§åèf?Y¹CþEŽŽÁdi°ø¬^>ý|MSMæþ¤‰N4Ýdt á® z(GÇüÀJ$XÍ#¯ÜºÅw)åR¶t󘓿ë°bå=u7øZÆ0=µý3U¾$ƒÇc›†™K¬ešp,§ý¦.9Ë”Ñôr¢)
-†øµ¶=1¼7°’Å“£Æ”?é–’¹U{Þ“Ê(/ 6 ¢L*ÍÅÓî1¢É› Ä"â)wŒ@-Îf„2}/gÔK´ Ñâ€cB1ñU†
-K«_‡+â¾´Ž‡ó“G¼óÀe ä÷eKT—)êÍÄßMÀÒ†J<küY×ëEr²ûÍn  ¸"‚0\IÍåì|v€¹ ¯’F:aÕ3šüt]Šð¸€ž÷4÷[òø÷ÍÔf6€/ÁG¨„é˜UÉÁ—@ ê»ÞjÙvXòeEIWwŠ@×óÌŽÓ"|æ
-ÓP€Ñ,_Pµ";ö#¤Î“sµ²R-ô¨#¹²Ü˜£¸sþ'j×µ½ˆ/±…Z<nÑm—ðqxÄÂö—(.Ï+eðÞ¸K‘ ¥E5g-æó'}óöÚ;¢êÒUJ#Ú;ˆ6U"°4õ§+Å^AVÙ?Gþ²Ÿ|Ž@ó¤i1i™ÉŠ :Šx¤/Æ«çø;%<SW`ýô8hk‡˜qc4”ÅfÙª…_ þz‹@·J£ÀxO,ÅàÀw#ÀÜ{Ïa”N/y¼]o”Ôj;fBú¨ˆôàK áYF”,ñstrÒ*x4>ð”Ä?§ÚÅСG Äê'õV,Z+JIëà+ > ¿Ìì×q":
-ž ¹ÊòØÌ}lz9Nƒ‚±Öü&âjŽÀÀi¼•y€¿CÓ?°ª‰—qĨyÌÀ­2:‚0£¬k cqÇby!ÛøBLB–±Ü byñ2{—K¥>¸¤c#Œå©·s›ßB‹ˆ]â¼µŽ§5ç æˆm 5hc®8ê5äó'­õ `Ñ[μÃ3ð«_Âd¨…d“êˆ+yÇÜãSpØôùƒù½ÉAr§ßâòðÚh¤gˆˆ}³ðÚwLpíÛYÁ­¿»_Z]¢=Ì£uŒª¾´Þë 䱦¨®nbšeñjC•êcȧ¦Í.…3H'ð$‘.«êŒ|Ô™«y ˜pµmÇN"$I. Çåˆÿç¾²žÄ" âq¹²çîËøÓ×¢C°7®"«øA׺+äã­/%î¢=«=À€À!Q–\·ëõ2@T[ŠL¥ÍÃÎýQñ3üáZ+( íN_xvH½Ž!öÉ
-0è0Æ…\¥ÜÞ…žtq=z8^<‰ð´p6R€zœ”FfHƆ‹?‚òŠ!ð˜¾\Â.] >·nß¿ÌÌŸw 'ïò¢x€ó•eäí«` ¤õúåyëûmúuìœ:4ÕP¿1…Ú
-%…·T€èÃÜ%ŠS¼?%™J¤Â/É6¹%Ðq¯Ú@7Äæ5:Ç`52ã»ÒIO”lŒ¡ªD¾ ؃ÃÙOÚà˧¹KDE¶†Æ÷ñNôâ]EtƒO”ðBMÌÆõšv¹ê]j#%=_³Ÿ'¢0_þT²^n40“4jߪð\¤9=øPÒoÏš%€!%'ïd,“Pèàžç ²D\‘s*3°eÞ4™ €1Fi¤ø>}ÊþÒO@æ“0/ªyr/çù-/aD3É•açѺú
-ÌH¡‘@iìuG‘`93;r²ö”{¹æÌ‚’5.¦¥%tzQ’þ@“8ô”$¹!ä…M\ÌìJjIÀ<‡°²Œ<k ~(*Ÿö£ï"|’$„Di XF,/dÐœ¹ìÆe­ìFÙ5˜¢ì
->DF2ª
-p(¶êárl °óp¾1¤ª8ˆ¥ì\ž`·Zó bµœÃ4ÐQK×—¾ÃJOø—N`«Î‡,!TLe‹€Þë,W)9—Îßh@ÁÑË>ähãô8[ÄüMaXøÖ…-ŸËA)þ¹ž‘Š»=L:ãÕu³õ dMœÿ ññ¶lôs0!©K’„ê\uÐ&0­u “†Â§³í/Aâ\–µ*­uÉ{f}ùóWq-Tˆ;¢©i³ä“_‰9Öð†¬Ýü±Kª#«ìò‚rOÀ;*‚;ÚG{ú'Íi¡áÌ@Pý!kh|Òœù¢Ë"Ô³QZ?8óE‚x*4qçÜÚøkÇÏ¢¸¹xÄÜÔàäY*¹ÈOùrÊ@yVèqç‘ÀˆÉŠ´Õe’ »åwýhq¯´¡Vž·—¨èÙs™
-NÕVåÐÐ:G5| JÁ´1W_í ‹h8]0µ½«9L “À\ªt46£œi­ þü–™)£ÿãÈ0ì™ÒfÙ ³°!kú< D´Ùá6*»þ;Ú"Gg`S\5T:§?R fp!Èâs衉A€Žòi¯%X¾ø–4‰´ ’·µËýkק@;rf$0»Œ¥A™­` »ÎGeag¡§;Œ–.ƒ%‰¥JØ!¯ü„´'·Ö³U ‹ÿx{‰ŠnC‡:™0Û‚½QûeÍ-ÀübC×"ò ËA¥Ð JÂz¡Œtù¸°†+TÞ¦xˆ“­ûJzRÜ% ˆz'ˆ[%2t8VU»„hÐe·r]bBQ!aEHt§†SëbD
- ±²(ä‚ æ¶æÑÇî„ñã_4‡á4')§©v]3xò
-eWQ¢¿ÌZ¼Ö,×X}ʱ|ªñ$ôe ÈBjæi°½œœA 3ËÌ̳À0½çoÎÁaç@"Fè<€=[[[œyTÓRÔ4vH §""Õ.†}{ jn³ð’~,ä'Åó
-jîóÊü?ÃVŒ–òwEÏ­
-Ç ¸Á
-ƒS^)I$Up€h÷m¬å¸WYOIÅÔ³ÛYçÌ]ÒC·ÔÜTŠš"h…äÄvQ‚†îï¦s4?Ø^Ñ`\ù&~$§1ãgM‹ôEÏ{B-èFZòN·S&ïD
-Š€«á?~TS 5
-C@ä¬üNƒ[Ûm=Ènr#Òä„AB
-œ@cJZ¬Ü•µ&Z!x nIy«äD!>:Î{‹¬l„šXÆZ¢QH‘îœÌñr¯z2<ê“
-`¦!U0ëôÞ(+„ÿl¾Æª¾šR›hDc´k "Ö–Lã`Km¦#>æ k$¶–3Dû—e™ý᪌x
-¬Iºåï:Wål»ÿ°d€”´ý60F.†F¸“ÒèÚ(¸jÝ!<,- ¸eŸ-³ÔDÚÔö­p\HÞÉ!¶tPwþÌšB9bU“”5tmbzÈÞ.•èÞ(駊m
-Ë|°Ž’ú€Jÿ>„Ô çwü $…ÐO È,ž¼+缦%³½† Í‚õ)c.‘^¹Õç`9ÒÛÏl€Vp•;uÁ0Pœ*ìÁRµ>…B7¸w¯;Ÿjà9ìEdós¸¢,’_–Êb` ªÈý×Å(øÇÞ-ʧ±tžÎN×üf¬_Ä<²ºHìZdÑ<¬òŠÂ°s Y@!  ƒ~劺?°Â¤ƒå¸`nÛ|¡S¦f•c`eøoâ´HÉØîËh±÷¡
-à{‚û&A83"­ùx‹ƒ H¦kŠ>«wó5ˆvîìSâ=«_‹­¯Ñ '.¨928õð{¨¨à÷y® M¥+§Ö£usšG\!Yû'À
-H‰´—ÍŽ–Ç…¯ ÷ЛH…¦«ú§º“ƒ¥È‹da'Y! c„b@B)¾û<§û'1È(–bÐ|Ó_ýž:u*b̹Z­ÕRµ‘×è±l-Hoõëç­z¶>m®2=Æà‘ç:çXneÖ5SóÈÅ¢O>ñá3ÕÒr/Ÿk‰Þ/Föʯø„{òÕ²Ž¼h³¥§òä=Û(xò¾zßfZ.3«4¬Ô\j”¹ªUãK;’6»"YÍ,5›¹x¯ÊgÅâÁÌCù ·˜—›–k7…k‘eµžËÄ„—VêôîhE/œ(HvkÅѪÍ<}³í¬L´¼²ÄI…^•QbŽÔjä?Sß¿aæ;™êv=ÄÚ8‘§2+Q¢Žz:ÑKn£Lj¯H17,ÏXê j=µÖs Ú2)*©D‚²Ƀ:3ÁÄ¢Ò‹ö–ͦ-+½‘í©P3µàY£ãÇ‘Y©8
-úL+¡ÐXʼn%ìŽS‹¹¢t>¨Q3ÁÛ*½72ßf)]#[3¥&Œ(&Ú^=ˆ²mâEɃ†-¥Z”V-yš“’ÙÅÓ{žcGm¥X½ÌÔ¨±ZÃ?eÇ3iŽ]°Jy†<÷A(B/iÐÒØ85
-ÀÁÄÅ.oJ)µée›`ºËÈU]᎙àsî!ƒêöPÐ?pÒJ ¯:s&C@|ž©åÐ ù öÞn09d®âY
-+8úbØÿÏÞþÔå²ôˆ,»`%z+øÿì©Q¥Né”zÕÒÍËO$…+x<W1š¹_à*ºØß;$;éÏJ7ÿ·¬4Ÿ™• \bïd%Š-éæ†?ùp÷Å›—woÞ¿{ñá‡ô;}ôŸ?§Çz÷ÕíË÷^—ßnôü,uûâû?¾¸ûðæŸ<Nž>ùòÈþüÝûoϯnS¿Ož¼zÿííó'_®çòõÝßß>ÿ·ûëvÀ–ž½ºÇ°ÿ" ßÿ}
-Gm=ÊàÛ‰Še¬-loyè‚×QÑp–Q'º÷Ós+®xcbëÜ],;\3véxÎæ‘ßìoî VÌŠIª6=í®Ï–ó^>³K¯—2~“¡ã Q”èÜÎ!‹fm+1žvWBú1-4FœZ ºJ¨û¾Jª³k`ÙìcÓIÄHLÔ¨iEiaIé÷±kà,MÓ¨š&‚•ñ½2BŒq¹×vDZ"~NksQ{MõªRŠ-à <ÜÊQ·§ʼë6©"9y‰+´ 4¹±ï¦¢2D¹s2²ËÁD…Ú>cÔ>R1M¿‹.‡Èéé=@Ù=Ÿøz]ãêògú\('ZÃIó´qicJŽšK5B]¤ƒæZ—ƒuµKˆPžRQ³7FÀhl\‚á›JUÅBë—bi£vénÅQö{åRመ®p~Õ¾Õ'úõ´œß‚Fì è€ ¥ú&O4S2|¡ÎP†–§Ü Xؾ.L˜OÑ#(¤ýq6±$oÛ²™FÄþ6‚€k©"‹>l(4OG+°ˆyË<)˜¥hU²8§å–Zæ¤ uJŒë"2Cqó‡Ë@¯8À)É)(þO>rc$ …­ÎNŸŽ§?rü“[þùÍ?6m±?y½õ›ÎÄ
-\lJTuäÞáµ}ÆuÝNEŠÄ vÔ.‚ˆs«mAõ˜=Qzr'‰à=¦¹¼ Ø#ôBZ“‰”Ûæ5pµlýCîˆ8)ud-U‡ÊØZµ¦YFþŸzÆÙ‡ê,z°¶]Þ4#— íÁ–ò7
-À@1-9ãããè#; ×xÌr¯}¨ii
-GÑT…”‡!b%áÄ”úÞüuÖÎÁþ
-²zS­òJ¦†Œ~¡j#e³hÝ"ŸåÑåøtKu)ò¶’=ÿ!À…¾ï:~ÕîAÕ9&}µ~ž(Î,»ç4RAüë&êÇ©þ##ÂWؼtE#–Ú“°^NP›ËvÈ?Á²ã¶Ë櫓âNcL@è{4ÙÕK@¦‰†É±TsþƒµöÌ3 "{G%Ç)TLÕ½Âèò³(Û±¯îY&§i[‚qšX¹[_¾J7Ð`º¬Âl"ìÐ1<“¤ÌlÑñðý_œØ’Îݨ2'–1¦)lÀqYËmP"¦ê V¶ŒMã¯@¨jaÀ«
-ÔÀàâû0
-ôÓñ¤øÔx°ä4åô"æ¹úÒUöƒj¥dtjòÓ¼J·¦eOk̤IÝ’¸°í´^WSñ2 LQªˆ‰LìòW®%àBtÇN¨t4ïÜàæ@þ.Ã÷3¾3¦ÒÌËb`gê¦ÀÍá%}Ñån籫
-n{™’ЖdäôN7N¹ûžð<f¶e-ârQ0Ðå~Ü=Ä;©‹a²ã½æ
-Ç]aíï‘Á2w­ O‘þŒ<qÓ "ªæ3¾È‹ *É‹Ílù¿é‡„Í/Á:Áçõžä0ýLžN¯ÿæ®óÞbÛqê›úp—?
-ã²tAÏÀX/}åªtð‹õž;©nM·eéñ™g|eÄaNØ:~=þ¯PFæZü
-úë†Ê§¬Þ ñÀ*€…ï€&p!MÊ°‡ªùCLVz7U Ë‰ÍóD܉€F@Y ^_¾¡ ÷:)¢/άCÞâ1$yAÅ‚}°Aì7ÜCÐSï¦á@GH%½kì"$§‚Ñ+¨zÞ¨Ç/i!û(ÔÄ *æ ;)ˆ?Âêra1Hë‹.mÛ&| ã)– oíði¢Ã/Y¢*lYe3 U|OW@À‘:ìÜ0`2e´i÷Ôlg²|×JPŠRá³#H
-QŒà‘pã»ÀKŒ>ÑQìH»¥BåbJ¼ƒŒDEô/k!ضÂI•}áN¤FY­OüF¡gä@‡oð
-X6ëÅ8D«h
- †PHÏmþšP=²&Ôø4â^•¼{îÞ㿈}¬%üÐÛžQ.†œ‚p<°íO6§Bž²]ToXþÃ÷b’—æÖÌÃòœ¾¦²h­o–ÆÿܱÈÞ¡ôXŒÎ÷{Ïø.y¿j ÷x
-ªÈù‰²éOŽ’
-dq‚Œ6×Í#Îzj§`ä]Ï/ nð€p® DÎÏâ+1‘Z“f09úÛsÒ]"°êº–±åDŒ±ƒÄ—îµ~¯KàVMQ 'ybwh õ
-è}ÕH;
-)å¥ Éßxè—n
-
-ð”y,2(™ºÊ÷κӇeàÛ8‚åpÓ.´K¡I)®E3‚y3n,¯R4Äáñ‰\ €ÊbLðœåÛ „?áwQî¡ò
-À Ö<cY#i›“¹âôó½*Q
-Ÿ@8ã¬gÌ´q–¯¥L?zÝ~T©a"ç
-J.aÔ±HΩàmœ
-fúJ;¹Òòz‹'«VX™¯ÃX0ôrý×/^£ûúå‘Ü
-­ Ç9üsÞ×À§¬A'} 9 ïŒ@o¿‘w~`G†œÑ@ÁNªªÒóè03Õ¨šÌ'Ýᣣ˜Ö/ÉÆo¬YÑ+é>ÀÓBÝ6éòÖG+NÙ±Ž»MSŒ#b²„À•ßé>Òä5Ó„­Ѩ,E¨jTÛÅáSwxbwæM¶€Mp Iæ†æ="ü`‹¸…•ªœzIº8Íi
-v’ Ô½õÈ0$ Ã[~ßÑañh2–ÿœkCe!¤Š„9oãq¬xžüµÒßWèþ¤x‰¸ÂÎ?V¡š{ü@–ÈCó÷\§Ž¯kÙyê¹ÝiêQz:¨n/ "Ô=™](‘áHÞM$`èCžLž «(¨´’†@Dãeé=O\-:à†i*7uœ§àðØè œ ÇÐS3Ä/¼GÿÂy=ñóΠè!°uÌÔËçŒì' ÿ$…T3à!¤
-¸Fwae¯XTÑå4r3 qrj­ÛJãøù‘r©îpj
-êÁ?DfXl70È,@#€“´˜á܇ŪŒ!¶ -¶4’.»hPç­hèQ•°Ða‡PQâåÇj§þ‹®»qQÍ=ÕF@()gÕ›FAŸú‚ïaÈf,Eœ^·¸];PÆÅÄ2R*V¡„H{ÐEP37N»¾l-RÅæИZûBuHj'‚/O²þ,¶¼…0€?ïz'te¢™ õäV¬$'2<ÝB]÷d`,ᔂ [;jäªoå…)Á~€Þ¨‘}e>‘<¢“Øz¸§8p¹ík|¹ ¾„¨ñÜŠÄ(Â7|Øqtãè7㊳$¥Þ˜:QiuÖG…ئ*äVÜ3XB½¯Éõ?‹U`Šávƒ
-¥W C©>i(q“p=/a(ãš‘)Ma„»u4 \ãÛù}Ô9L
-ýr'ÒfVXÖÜñ£eþB¹bB"Õ0ÕÁðÜ:nq£ÃÁph”@ë £Ô‡›Í)|ø‘ÃOGKx¬ôÍ*ÏÊ
-?ýÀæÅç϶@„Î=Sÿ?ÎÖò
-ÇûŽX1c€?þž¿~ûÙãª;Ëþ
-†žºÉP5>Ç{çߣŽëC§¶ÒÀÛÐsÖ›‡uÁ<0 œ@‡»«âWˆ2M&ôœáŠ­ÊþŽÊá ~{ûúY·#‚?•ÿçïÝJ †Ï`÷ò:l.6(f¥ÁLÚì'F”þä†(Š¯eîqÔšÆ`D^phXÿD¬ÿ%=œ÷À¼«y¨k]縨ƒ˜-¥˜3}¼‚õ¼å1ºg Ïé?z#‘gYŽ[ÎÂ>Xìýy ß¡hæŠTÙMdîé;Nu—I@£’±h}£4ƒ¦°„Þû¯_
-ažeß7³
-N­¾´À¦+H&¶|n‚ŠÀŸ‹ÿºƒAÄS5šÃ T—6wæ"·A´`gúg–»Ð„‚hw¶+,/Yt ù¸—S²G[ V Îq(š÷r€ ‰˜È ä¼?€ÜC·D$²Æ̧Ëo™A¶È¢¨=`k?ÈGÒLj«ÃˆlÛ—Cò‡ZqOÑR¸¹¤XŽÆLr‚NÛKûÖ­¹Å¨à5ÆYnžàrdó ¢ƒi#"•e ÙÇiûmâIˆÜ<ð)°Q²¢Òñõyq°h¥9ù
-«ÎÝîJ¢<à5³`™ú¢Ëúåý‡§FýªíE44À –’|,¸buWïÅþÕ?þðšÿ¼xyÿðÕ»ŸÞÝ}¸¾ÿÅýI}úo÷âÛ»‡ïnº»¿!?ZV¿õ‹ïn¯þËõÃý»ÿpØ={õò›¯·äøÇÝýûõWÏíª?»g/oî~¼}ûò›ñ–@¾øåçÛ·ŸßNñ×¢îÍÍa¡ã“
-}þ¯Uu«AuÏž»7ÓK+ë¡%ºK;§†w¢r0;…[4k `Å[AIyUØ)š:ï‚¿V« ]0†•„GcÔsl,Y“cübwA
-+éž ýeú"(ÞsB ÅÆùˆ¹àz
-7(”
-3Å}a’2blȈµ¬¡’QÏçW2-$£$õù–„)R°Uÿ;€¶Pð8,û
-V< “˜^B¢¬¨7lé’„5?eŽÀåÆ1¤W]¢Óž‡Xª0xˆP€‹3F‰<öBmeÿ¬ﱩœPƒ
-e<RKƒèªÍ'5¸3Yêlx+”\ÑU+Ê"†¼&¶g%M)>w Õ9c@K»×Þƒ{Àw]
-QÒZ)7^‚eÄ,IÃ/༠¨"ƒ¾™äH$œ÷1‹BC£÷m3#£oómAÒ·«±äæaoؕذìÃÄäH…%i‚¡hU2õÅ*F)<NˆÇy°z
-‹P°DÈŽvEF”žÝÃ(E6œ¡&2VšÌ˜êÀO€áòr¼úd²—ºÅ„‹ÊŽØaÖÇy‹HlÐf»{iÌ€nõ:QTO)ÝlRW;„f¤³s¨l’¥:±†”Cd1À%ä‚”o–Db-Õ"…@ï;<-S&Ô`)¨)äÏÆ8–ŒL´gÀ(NÀ€g¨
-¡Æl!p+É2G”di÷&[2:²H}Ò4T~2Önª‡{Š¨ X5%G–ZøKÀUÖ©u Ú'‹mÅp| mT¢Û†­S
-¦UPm«)v/rq•<o÷4@X¥¼ TinFEDA—¬x|
-NIïJå«xBÞ3¼!êc·ÚW~ÄÕ µ_rKàÆ”"úI"$ÅËÇÜ’5ßÝ]ÜÈWgms¤SyîN~ñP8“à ј/f ü`-x¦
-¢Ißn4gïa5 Ä•ù˜æ€Œd˜iŽº.<!ÚòâÌrˆJâmò¡ÝK“²œ’ë’hXÄÞÝEÉÌx*ÉøHwúªµ8á¤~Èv|oAê9œ,õ=±}†ÌØ7”[–žØ³ÚpQ"4•PÙ."ÚŠtªH3Ûé!
-„%Š*­Â|y™ÖÀ2Á¡)€œ«@vò]XÄ
-Ê)w…½’^J°¦ª’~¥¾\v,9ª(ú+wh:‰wd mø†ÈB Ì„þÖ:‘ÕåºYM·ZX[n«º"#ÎcŸ½÷)´™r³÷'z‘ë~ Ö‹:±½FJ­X`p@W® ï T€Ó…†9hMÇR“tEþ©·Ûêe_Ñkm1oòËCÄ—E)¬„©Ú÷(¥Þ¬:göe<T9J³çÚì'mzoH¾Jz
-qUÆo1ƒtÁ¬/ÛÕ‡7>ºúóh¬&Ÿä†ÏßüS
-Š —NFV¢Ø€Æ›Ixþˆç&žï ¦°)Ôu"9@â`"]"ËVœ7_’çéåÈ:~fX)ý›žšÄãlN|G¶/ÑyþÔª ëºÍ~ã{ZQTžÂ™cv.áùÕòs^QY½â¨°ÿµMë³ùŸ÷ý5‚ãqÖCw<1$¸C¦:»ñ`Íq° ÀÎ]h«”£…¶sØa$zñc0•f½VJ˜+œtÃߺŸÖcÑ\x…6A¹~:0ñœX® ›$ ¨à X
-„0,îuë3ˆÂ•ñ¨–:Ïw© ¡
-vy‡²ô6¤ÙèDQ(‰„‚~÷¶·oNÂï}p¥"º†‹Ua…Lú
-|×¢€‚íü±*¼Ž¯á]ÈK:*R‘£`&5»‰”+“¶W/L3•‰k&¥àú©êóî²~0×
-¸ÙÚa¿­¦Œk¯×Ks·ï[Ëe0ûF|&+L?RëPö²–’ÂJ2<_”—iÂÛCLs$€ ‘žš>¯+§S“›È ²žòœ÷„λPŠ¼ .b~a¤¸§^ƒQ­0ûâè|ózôb«%&Sw§¢±³²•·Ýh¯F™Ž.³Ôl'ŸàIÔb”ÇmßÐÊ3”‡dÏ$ÞÊß¡Þ6·<à«Ñ›/K“=WÉ™¡*‰Y/ßöÚ˜„kàʳdûº7‡ûb{ѹ–²Ðußš}n2Ux\{ѯ•Ü¤GŸ˜ô Çó5[Ñw¨~Sè~óøÝŸXa~þéñÝ?|ÿãÿñÇþ믞ÝëÊö§ÿŒ¡ÿëí)Ôë·#É?Äßü3]¨¾ZD÷JYáòÑ›lÚ{”}=¡²=Ü´†
-ÔPém!¾v“=Jh9Ö‚ÞrfÕ²àP4“´É«(ÄQ º…ÅywðKÌàåªíÐà@iH'4‘a¨(ZÃ?i¦¹¾. !h"er9ì‡ðçPÓyÉ×ýÛzn Ê=þˆÛû^)š¡ÀÅhÈá
-²°QݤŠks?TîQ‚æ²ÒÜ› ©–À->ýs'ÂgI÷ d069ꜹ:#`Å£¾3 `¹8­síÎwšEî »`ièH:›æj+ŸV.].”|äs9 kSËhç ruî¯ÒǪ,Yk UZ4¶²½Ñ²¤C"ÂÜ+@¡®`Š
-ÄÂÅpªº‹Ê ­“`¹Ÿø1(2í‚1Ìó~ Ý¢ö¤ÊbH4'
->h½s‚E‚’BÒx½s;4õÅ¥k·àCÒ¢‹:ê|?€kÛf›Ò#ØÔäÜ6™Òêÿ?a¨ˆ“6Ì:kj0Ã*-×M¿•KÛë/¤d0!°ßá¿ü2»Mu'795º0u²ŸmÀ¿ GÒ3ò1N"ApÜÝ '  pwŸŸµqÇ^1¥8µh.˜»¦3Ó—Üù¬Å‰ˆ=q:MÚRÖPNÆH-è}DʧâµGœ‰À‘p¦`iAnÆ— €ƒôÅÃŽ…è0ÊÐ&ˆƒT˜õÉ;èâØ3²Ñ_ÂS>ƒT¶«áê·ûÌ–¶Îè3KõHø$¬ã’¹I3V¨vº +^bwM¾TqJ¿\xוnE °iÈÃ
-‹êi…edµ)R Jçwœ€9Úf}ÝVTY¨Kí`éæ¬8xJjöVÑL gÜ kèÅ]¡>|Ž’²Bé{b%åg}ÄË%š$~Ö%zá}XbÂûô÷œè—øí¿š9&7"Iƒüv èJÀ¡†*1:Š‚9®¼C™VH˵®ºyæ“dR½`g€5Sˆ®–÷@ím—&ꊜS‚} 7”4lfÀgvFºíú0ã”+(ã8éSù¹‚Íö9l<s3‚›á˜y‚(Ç™eVÑŒ„ÇNHâ´¾A¢åÑû .lÔ²_ŠîiK¦†‚Ö -¯ú™ô Ð ¼K'ô†Ôƒbf¸nç©¢TWÚ>‘küêJÈjßÏ\A¹+
-?}­æª(R –yp(NšnÌÞŧÌW¾Œ6ƒRWl,i†ÃÌ‘ DA‹¹®q´]^„ǖD®·gÃ`× ªBSwÍþMx™IŽ#QT• ؉óH1çÑ¡åŸ÷dT‰²¾´Ug€XÜ¿ÿåµêù^»Çd°ô5«: jq틘=V¨·TÐ2±¼ºÍå3±9€ÿFA]®}U¹6û Û¸jV@ð=V<ïòZ±}ÓkÕ«6Ú¯ì«=;ˆùYߪós(+Úsοõé"«N÷‡ÆüÕo\щM˜…S¦¾¡Â%ñ‚|ʬK#[œ1(kÿÁK%í^‰TkÅ<¨uÚ`i+Oú+†°íè8‘d@2vlFö5‘ø˜]\Òª$ÖZªù ¤Ü²!”m}Ž5£Bzµ 3Rï{.C5‰%íÍ„ƒëµùæP°‡úÏ=ŸEÿ;Þ žÔï“t0*C¬Z]äŸc=‘#ŒÉ™Ûü‹vøAå[ÎñVòžß¢Å¸GßK]s¡¥¥$³1oíéç(=mºùäQÞúuŽ¹1ÃŒÖöv¢k›Êùv#HOÍ×cfój;ÄWtic£ôîÃ!}:0ê6¨ëÖ¿áµõ/óÇ©?¤Pöɤ²\7|&3×A­@ÙˈF·ñÛ%V%]íÜÚƒõL¨Ã™{Úâ¼%)ä¾]µ&6Õ!w­™§nø.+DP+e {ƘaÿÞ;V@8ÌÐp°¶uŸNu?æ¯H½?s oÒÐkÅ6L½V½²˜·1E¨h8ÌMŒƒ‘aÜCFîêÙ6 òÊn&{FIÊö`˜f ;ÿ¾`i_‹4ø©SAÇ:Íàt¦±;Ùì&óP ¦CÛáA *=Ä n^ëõ\±x½@þ`()#oö)„ªSæoÑfÊAP`òaÛR§w¡UøvÐ:17”[T_…ª?Y.é`6JKÅSÎãÔ.Ø;f²(¾•Ìƒ2á”ñ³ÌÅ]ÚŽqÕw,èô'SP,ÁKðH¹yOÆ©izˆ=Z°oÃP&v¦ÕH ÞBr¥"U¿ó23)`Ô×9\ïÐÊt¢«hÈÓ4MÚö™&©&pæÚŸOˆõgeIYì’¨Á ˆíˆÕq­vÖÎé¸RUëÄìR^v‚ qÞƒP‡éð±bY$G ‡²’m—Yi·Æ-Ùg
-·¢Wo˃%îÞ¸õ™~dž½®@Ù<p2Êu Î\ÂÃ='´C )ºBÇÁ…¸
-SÕ£Àðw',~¦ vTOÖ¨0µ¨#”l8%âÃñˆ5À1»’±
-O9ÓØðH³®@ÆŠ+´ŸÙÌ–µHÿ 8ïg¨Öþü–“Ó‹‰ K{iá`dÝœ»å¨Ρ °QþŸªmÊß¾’uÁŽ©†¸ ?ÀÊ*63uÒ‡3VàðzÄuzNÃx„`§!ª<á,˜w ¢©¸…õ$¿öÖ’( §Ó8©µ¯A6nß·]·Ã"Hñcˆóª2#pösJ # Íà-|'CA]2ùŠaÖ;4NŽM(Rgìû€ä®°^˜¦/¦óïYÞâïÅÍc7®«gà ¤²ž|Y—e€Š?];Û˜*ÿ_¼Ð˜œÎK‡?õKÏ´9~T"ÍaÆ¢ÕŸ>x%EäG(NB‰q°«Lå¬KÐüÛ‚?ZÖ 0 àÙ‡…öàÀ@@ÁXX¿~«.Ü "ò±Î VRk À.-8Ö¬îVÀíK$îÒl;M,S(J;ÆÆ1g÷Ì "¸l€ò>ã£|:Z<>×H Ìá*:’V¢K5¯»g(0²Æ¸Ž«9Žã5 ÅÎyPÉùÅ€ˆ Ö¥z,ßF†la† 9}s}Zõ·iy!§òA8/Ép@ÏŽ趨D¶rÙX$×s¿ê”­o‘3¦
-áhÐ_¢q5š^ÑV<%;¤ë(æ¡àLT_ý‚DNxÏ­#c€€.ž3¶êx'T¶A·<Ë,ˆ8 ÎÌͶ|„·ÉéÔã2CÎÃZ¯ý‹Õ£Î-Pž¼
-=Ìþ—yçø¦G œMVzÑ%Šm`¦¢l‡l¥w™­,^ÙñÖD’¡Æ‰£µóÅ~ýðȽ"=y3“ÿ¢¶¸$úØ÷¬ 0¸?cMäáíMÚø'>ü1:œ]¾4K`ßÊ’ÀÓ&ÅŠ§‘Å6‚Bôˆ`ù”"/2p'^$…ì”,ç‹Œ0ŒD aÆè
-ÃMÿ©¡¹dl^LGÁ”Խ㾖Ózêv†o ¡áظòV|ï@XP
-ˆG
-È“w ”~S(ÀV:T¤£ì°–˜~a$tä:ˆf³ê­c¤ulƒ »þÑ=^ùžÌ]tMp'áÙ;z–.áN‹èPòL¡¡
-t Ñ´ôy2å„3bwlaÀ ¿«Æ
-@ ïò¯ä\Þ¹±€bÓsò1ðñ
-xÖuêú•·}k¿ß*+I¾ H*Ó¹ü­LnL
-q"ÙÍ„¹ j²Y­È¶ÕÌìWlÇŽËAâu¹¼>¹yúâo¿à¼ªhH¤(ÕañžÑ-[QjÐ Æè4Dar‘ˆ}ñR *5±¥¹{K†»"åÍ®HËsFîæžÉø»Ï
-S„©¶¯;ˆ3Ñy?—Ÿ3KH ¸xD¿^fJ¿„¦
-ör†<I’‡Z£ëqWﲇãG;>Äò¤wŸ=¾ðD ÏæåŒë0ADá®Ï_6…´(>ƒ©-z™Ç²ZÑlëà‹í½øŽ¿Gtïžt]¨hiE£³TpL=gÐa#l>‘­‹æ $¥Pb•cÐ=µÀtÊ”¹)Žgr{ •ºä°K>×a¯a'H‘yý€ø!F‰‘(㸡]€©¹"^¡ߪÑ(;YëΔ]¿"“V=fZ(M?I3«óvŽ·1+bdÈ>bÍ`X y¢™,¢›ÌdâÒ³!¹—¢–%Ïôón‹ø‘=ñÀ•c‚èò#0~Ù
-‘+‚Ü+ö>¸e¢Ã¯™gK^>=ö#ü鑤••hØ¥Uº(h,ã":JöŽùÂóöÅúT+0&‘>qµùá–È{S îyÜ„uÈÚ®—PF`Áâ$ñ *ü dŠUŒ„>g4Ë …×côÍWv"b’q­c¡ ù šÀœl‡Æ€²Æ!–1”LSÕà@’|6“ÕJN>%Kß"ì2FcœÄ]îcÍé\¥%ËDzUø1$•^~ð™÷ìr»¸ÓLUAÑ ,)ÈåúD‘Å{SmpU":'î_VU4C1¢˜‘AÖ¢L)ú"³ö­iÈjkPE‘ñ‘ØI=€,f?GuóVx´>Q¬›ƒyqÏ8ï¬.“@‘AyU
-Äê<÷âùqËŽ¼¨`B3̕゘3÷¦¿¯ÈÅÆ=žQöÈça^aüåsΡB©ÒNÆ[Äx~‚ÅŠ‚õ|ÓbvÅ㘚¢Š~ÎhÁ–U=V“Æ\W)mÄÕ»\ùt;
-ð—cÂå4š`€Vë"=6_dÒ;qÀr\@w3µoW»µÑnÂ+Ç÷›+=ÅÍ-bJÏIøš
-^€-ÁR(.¥Ÿ†UÓùü?áñ¬P -Nˆ?á;† =
-—X)Ìí‹ùüyÀ3„:!Cc‚tœaÒË,ó¡h}ÇK5[€^øšÙŠL@œ[P¦’#Cј€L†Ù±‚é ’%¤D!©{‚°nÙåðÈN´SSð•›HÛ¾W%—sØA´¨´%&#hbæV·ˆ8Eœ«ÝGz0 P+T² ¨ü«Ì@'º
-¥7Vh0Ò¤ƒ&l²PÃdQ÷¦7aƒJãè%=³Q G‡2 ªÕ©bê*=Ð$¸\öéîÂAððVµKõà+nü=
-ÕCeh ËYb}Ùma8ŒwݱØ?ß]?
-ä,É);͈ì2’hÃ>-’ZãpÉŽ–á—+µÁ—³w-¸¦”okóÓ³uA4•ù4-a‚]ö¶Ž¡YÄ)Üx3X$ÿp¶?þZK„%î*¹[
-RéNîÙË‚÷–4-"%ZÄÑÄt»¨:¹h!CÊZHœ-0G[HÁ¾`6šÎm7¬_÷N²tìeH ëê%ây¢„¹bp²h!cê¤~ õC‹RôjƒÕa— ‰!bûv†ç‚óA8çJP”9Féê ¨(ɱ ĤZĹÂÌӈৱz£8öçH—ÖjJXK-â´T¹¸"Ž³I¨5‰Y„© ÷Qß*¢úª`tÜ‘’íu PçÄt‰×b&-f±ÂfâHŠrÆ]Bb¼ü‹ʸLj4݈“\Æoí¶AÎ…áE®™Öáâ$ålËmt•R‰æJˆ4fÃá_úp¹Ã\ÔCÅ; 90ÿ䊯)³›1ËÎYöœÚ<›p+Ù˜}^XÁ %
-vDQ
-Š-`<ú;Á‡þqt‘MÅ¡ªŽÞ©êˆ1jÍˈñÎ>riàÛš~±ipÅú¨ÞóÒðn EäÛ´…£>Í\i`nÂsrÅ#šŲ¢â0ËžY‰ PÖÆ6<Ë‚RŠëôã ¥ÃÜ•¹uýš‰åö˜è½-5Yå"ÒäYH±¹ñ‹0"@¥EÀƒÈd£?°0"°íŠ;Ÿ`Fm—-Ù,üƒ|
-¶ãø¨E1XÉ#¢ÐþŠp2Š
-âÂ6±bñswE¥Søôäà>êÑ…œ,Í·ã’ÈbV²›–b%Ãz#¶¯gêÞ“îÎùÈ2vÒ“Ö3EDÙzƒYj½ì©¿q©Eí¥÷,U]Ö,V4y·ȳû·`\À…» B{%.8V†ƒ’Þßá–±ˆˆò¸FÙi‹YU³åÊ
-ÔX[ÌgE”+ø-Vpb¬‚Sò¥¬OãKsµëK܃DóˆzvnÐè#£‹b#þϱF:yBŸËDÿO#üsõ 6"†k’9ÞRðyXÕÓ)€8Ù%ȧ îŽè»Ë’ cE€ò… Ì6
-êF õÙEE'$©
-Äôqã ®¬v‡…#è]Þe!05M­!±qüiýXy‚Ý©<@œ‚}§Èu9Ÿï]Xx&ÿfPƒ=Œ tìMq–˜0v3cJ¯¾ív:eF$œ;+Çïö¿³Ë£>A”ÌϽõ{Û->¿N›P‡s"1èê´.%Ÿ]KÌÃ6vû
-€'×qð›`u0„:Ï%hÃø›»Çß°ßÅðz}y<•«8vÔ
-Œ‹õþ ðÆw­}€Jâ<e9ìñ”ZƒŽ^JS¦½“Ö¥½€xaAÐv…!IâkWAäO§Å
-å¦AÊÿÀ'£ù—À}‚d3A‹ìÂ¥dï†Ý®òkE?5X4°æ™*Ð/5F áÈDZ³xœúí®][4#‡Ë߯ÄÔDpô9X:õ ŒÈÅqHd7ó2äÕ±Væ -VA'›U•}b|¹¯Ö^/Ǿ×Ö%Åq€Ž²€mø¤}wÂï’ª¨s²—ìØ"³i«•7bNZ÷¹õ!]Þ:g€(t$]g5Å¥Y[ ø¾Ú€ï5æJ{\u€…ðÆ·pe±kIË
-GF|`M”¬¥6k<«ìø]߶^‚GÚƒtG´
-F«r Ò"Ø0^gWôKÌeS æ¨†­$™Š¹«:_ÀÍ„nbW! KRoÞ .“÷1
-H‰Œ—Mr%7„O ;èSAâ亽ì[tĬÔ÷ßÎ’5¶^Qn…ívØ/‹$€D"1ÞÿãR./jÅky«x1µ¨aZDµÊR‹ÆDxTq·b½ÇñëM¼]%Jê"%Æé”vq¼y¸E×°¡e„ñc­ 1Ž²â Òk´*¦:jß7 ­£ªºñ[‚êUuhïR‡™rNç1Z‚«Â$·è„ Ò,O©½®¨å«C¥pwèû·3¨Yµa:š¿ÿ|›ù+BöšrÃ8€>HH{Ë€}ž¤WQµÅˆÖÛªCW^=”(lA„ú6“1!<Ryœ´ ÄÃFQù‰Kk-ÒJ)}´rB¯y‘wŸçØ(­òW »!ÃZínMªMHSþÛbT©r€ì¢·TŒ‡=žÓ. Xѹ_t_eŠÂ¨(á«êÅÜ]]}N)¬fìw)j8Ïu¾ßÓIsu4êÌr»zo­T…Ý:ShIî¢E«{kó2c}X¡< ANI^å|Y4Ù"¶á ¡T¸)\¨åæ Tá!‹vÁoåHëLà yQü1ÝÒ·ûî«íÅ„Æ;B~¼ý—ËŒœV+{c“Ùj§–Å£Ôñþ{b„*ç_ íƒ×õRÚLŽ^#‚à³wSü’€Öœ&ñJ¤º
-’`rdý}=¸ziP>noúÂÕgàÎ?x8çµ ×<ËyðƒV¤ÍYÖ÷³ßl]ìMÇý„xšÁ?Qøo/HlJ¼‘OåpÚï#&•Îzéa–lGZ@o¯6Ú†Ðp¨„³ßÀ/R†Ø5»E>ØJ Ѫëᩳ¨úHѶIÃ^–ÁM´Åj,úhþ,ÑiœÈ¼)Ð:Ž> V†85§¬½ŸePAg_Œ{øñ…ð@>-«ˆ&G—æ \šÁx« ²¾Én­ç %ÊÛ™¾(öv1~‹Öoƒ>‹áÇÖ³Lô÷„Lj3êC-!ÎnCásáðôƒ¼™n¦cèfÊ‚x:‡‚7`oÙzÑði#g¿¬Þò‹rÃT\Nk‰AòZ¬éæä½ä[FˆÌB ݽ„ų
-ÎÑZ8„ê©ì¨ÐÊ«pr¬Í/h&ìÌ*W>¸'±™¸¥Ý T–<ÌnÛÄð«QKHš?Øb²GíA*Ü7$Xos5$Ú6! o(]`i ‚ eŸWhÖ&3¸Š·ó}âÛ #¯‘k»ætï–î=7Fi²U™‚æ^Ÿ0ð+tÞ+˜'ħïsØM£tÚó§üWHßô]ˆB“±…²izÛYΛ¡LXšÁPg¼×ÕZÐBràÆ‚TI‰f¬KXøœüZíË{~FìæC&r݃¬z:EgHÑ%µo³‚Ä öH~èâÕ(ð¶­j5 í$‡÷ÍQì?mŒ"Ó´;{šÖ†]Ò¼–QÞä¨Y~FÙâý<ÒŒ÷zAÿ4¹¶&ZÅáòHl»’Jp-ü)+½i•¢zvÜk¨@J"ZÚ}Êc?JÄDZöá¬äxÎSiy ù§A°I¥]hhRË°ÝŠƒ+—[¦Ú^"V$87Ï‘ ;X.a°ß^ˆQÁOx™Õ/Ï1äÔ2[• R÷Uÿ>«æ†¤,~„ˆËU6_]GÖæ`nr¾ÿþõ¸Š>N‰IH®±%ˆ-Y£ËˆkdЫHN(¢“9¬ì‹ƒŠT箕¯ÄJ‰1|c@¤Br ϵ !HM£¥(ýi ™NÄÈ!A…U‚²àÆLá+"óS˜Xø%…dåËcˆÇ4÷Wôìô 4‘ e­ë¬ú!(@žzDñ0wõ” OL_Èà9¦øùTªuÕ䨚"ylZëÉÏ×°Âä£ùû1(ÊÒ›§H!ˆ¾ozMN&¹3¬˜^3<®n Ï/Ž…zA,J¼Öûõ˜k^Þr ß3¤#‰?eæØ ŸÓûçŽú‘—U -iÇ9Ažödõ[.}˘ëí`a~1/ô¼ì°ôýéEK0ú¥¸•ÿ1^î8šäF>ÁÜ¡í5~ðý0…Ys\` oÇÔýõE’ÕÀ_ÌR÷BíöDÉÌȈȦ(3/n5¦àð´Ñ.~€œKš¤(Ä÷7w@De<¾“Ö¾_îqß¡«mTŒŸ®=Ê¡—MfJÆv+¶]
-¿¹ ò$ÒbW^*#Á΂ý40iÉ0“ßá_zþ\2Ùv\*n¬4„ᙃ•m^â4¾IÆ_wé„Í#þp"ÖA三ù#KþW°>À4´ø‰ zks5Ë
-¥¢9Œ†sÛŸ?<ª»Z`ÖšUalµñ¦œiõ6["TQZ.³¹ï¾û±ú¤HA2 [>øzî/)!’„N÷; RBþ›Èv%ꀬ!Ÿ=-­@óÓŸ\E\ Ùž~‚6êL(ž$Œ'šž g*Î㾺OªKø;hM=;ÏTƤ&DÙ‡˜àn1¡¾´½¦¢rÝéˆþ¯ L僣æj+N‰Ø
-ê1RAìȆè‘'UH›sÍê -è’Ôi]œ×’f˜WÚ‘úè)°+1Böþ)¤žÃµAÐœ4SšB'á.,X¹œˆEx¶«Ééýð>¢y„¢hI.ñÊ,ø'ÑpJ• R9
-ÄÙ< ™¥¥€P›½Û
-Æž?ÁÔÊ F£ìsA¸j“”Ö>Z“Êf 1rl„F—§x§dseå Áú²â_O²]õ>ˆ«fÜ„_ÞŽè°–ô=áþ£5t©Xî;‰iGl#þFÿüÏy5ô/ÃÊRm›¹§GõžÙ 8Ècô‹£„– ‰_î•Ø…¼µÊŽr@•?d,ðo=´Þ4I.þ«ð)ý"?0ó«Ó§v¦#`~!,%eÕoÕÂNr:~ÿŒÃ›ûeþÝåòø½8î4¼—øë©ÒF–ºFLƒJÒ"-{Ö rd §Y-lüy
-Z*!=y§-LA}ùÖ"ÄS7nXŽ(µdF òjL±?÷á7ˆ=ü(àù£ òƥ摅Ñm'&œ™8¾; ¤Žrh^C› ‚ýøðÈ_zCQj¦jÔî™w;¿f²’_X¤g=T:’–tð½d–Xéq‘Þ5ŸE;‰î‘„>úäÙ¶6XÈh'a2Ò³xŽ¬Ÿõ°›J¹bÀ¾Å»}sV6XÇZ£ü…møWJ<ÐF ümž,6Tv-(ó%áT–£Œˆ»†bÍXë{m„…AâJ/÷ï`ꞦbF½öá¹è¬Þ$+péLß]çS½úœOã…"Ùüý%(U̲V±o‚L\Hµb(‹ŒY<)=ºYëaUs·ÍÑL*ˈAGD†€´‹i\l)¨bê©2öªÅˆÐ>/-ço ÔÀ
-AG‘7
-À+¸{ð
-Q$õgê¥tö?½ß¡(#ÝM#F
-Od“ë+ƒ_Ïi‚DìŸ1÷7æò] 0A© "Ü3$gËß\Àm˜ºŽÔIsáé³ß8öך;s£ ÂJÎÁ5#Dó滷Тwñæ+jqH€ñù
-—äþÝ­ÈŸSÝ"çlÔÁ»iíýà ­^½ññ›’­œ%“üÝ™ç¢è 3,‹ìöe…ŠFB7&¡\sa8—/ÿ‡ÆË¿vðk¬ZÌá«ô-æù]Bƒ Íme€¾Râ±3]Æi¾_SdåZ>
-b2àòºeŒ[Ï“Ñ‚%1™x9â/Nõí1ÈlÛñ&q1hgâ3«áž[¬ºŠ-‹õüR2>eËoó<báÛúœ 7·õì7·T Õœ {€ô–ÈšÖD÷ç zZUõ¨×Ò0{Pm‚óƱ6qwƒX"n D}šÎë8‡éé’+ÊèŸC°écpE_‚äÇoŠB”‰l¢ÊE¯èô•ÙON¦[³„z^æ•¿;¬œ4CÍÖ½&䳓YÌá»ìý—|Fe‹lÓi”Yõ£$Sý²Nfã¦ñZÒ‚_÷'qõ{M÷Í î½½Ô-‰Eí 2ê18u„2WÚ'/Çr –ªç»¥ßÂÄ-óërö(rNëþ,iÚ>=ãínfóˆ’®9 ʤå+æÆò¯ þ{MÁ<X8VÆ庈ÝN|e]}¤9Æ…6]´¨QqÄ´á¼7+FÀpbÜ‘ŠÏÆåÇlžÈãNÇû€Æù6ª´ÑSŸ¢= ·¬>çœqᶅØúSáÉø6é( \U|µñ¡ï5š'5©9%—pu_>ÊkÊ÷Áy5n²CyÍÎË
-;~=èj ^„ö¸_Àvp«<%¼—{DNæþõ(þ …­N¬C¶3‚Êë~?•§_ÿuµ§haã»WŽÈø:ˆ\ÐwÏløÝYe^T²"Ôb}Îø”qÄJ½Ý9m,SwäG®7“ ¨öî½°Mݘ[žO`§<ȳ·ÚçÄŒW{9
-w‡…cˆc< lm Ù"ÆËŠ}LÁpÚ2¿´(ªÑÌzF {Îê†nÐýð Õª" mçx”ÿ¶…%!ëš*ÁM­=Ï Tÿ-³[¼æñJ‰P‘€T¾Eª!ºç[R™ö3¿¬Ç`@jå5pZUü†–>Õü\ÕðŠ¶
-Ýh=3ñ±®‰Íg BžƒF¥›ÝÏÄÔÞ§w¯»Xò—’è—…áûõ(]j­ªîŠ¡¦R"Î_:™’¤Z" Õï&š«¡Ç¾4&щ>ÖX…µõ84Úb#×çôLŠRÇ"íïm<ë5Ã’Ó°P{½Ž±¬´ëåZ;uIEÆÛV.%%ò ö96nå(—%|£pøßƲܷÉý_Š>~S”¨7hFc«0<ì|ÑxV¨cAî”$¸éDvöõ¥5Š7ÍÏZI‘H·¡³>ï§ÆˆÖômP…Azèã˜ÇXÞîŽ,æù¼\ìdCåœóž)?5ÌŽGñÔh2§‹„Ú®7 xb66+;Ø óöØ¡ó\ÅŒxûûøˆòFˆ¯I’wÄ‘LeîÕ9ÔŠŽ˜òödˆD,ΟÝ>ˆÿâÊ`tãѶ÷ÝÔ'pD9Íߨ«å’{º1ÄU4QŽšÝ1«õ˜öÖ
-ãèò¤:´E÷ó6X[ÕP^BHç \}ŠÕß¾ë|NZ]øKNZ=üKÉx8ÜEOnÀ´Vç…bNÈíý+CýÝÃKcœ¾r¶çë‹L†wÔÙŸqŽ$U'MÇ´FŒ%‰e°ˆâi>ÞgZMºépýÇ
-~ñ'z"uhà
-¯^)eÊ—YÝe–´âŸÃ¡ç ©„RöÙ+ñÇYf4+ñž2SËÐCI>Æ:k§LùÅD™k”°$—Žûøþ8
-o·´‡w”D>ŸJ(Etqh¼ðÌoŒs¨‹vÞ&‘¦RHȵ̈çIfR™D/H¨aŒ{›\ç÷ع>Ô[þ‚lu¦£c÷œèV±Î\9'VÙÀã‹®™ß•ðÇø¨‰Êoš>3àµ-2UÒ¿çCÛn¯<0ïɼÌÚã‹å³ ”6ßqJÏÞôAh(¹Í²„ Hwøò©eÑ'/š7Q
-Z«-‡‰½ãëØ“‘ÖD0P]]Œ´>'NYs7nà ö½CŽ #K¶CÆÔ¸g>*ƒº°Ky”ÿaê
-w¶hZž-i´”@=çø;¸c¶¬ÿÌþ%×%~|&`ÝÙÌ¿ó*TÒ[e9ý².Š>~St§§è%zèWœÈñœÿ€‹æʼnØqµà
- 9TêΨÐû÷¹ÕýhðM4–Ah¨šþÕ­û cØ_7‡zI‰P•Å2dJnøyÇE´ DêÇvÞKb§¤L›e•ÎE G1—ß³óœ×a=†5M%ùê
-ý÷Ê趦Ú·µË4¢d” yÐ\Á.Å_]%³#MUZ
-Üj˜çÁ\~clæG×3´%ÄíÑ›
-H®éË»xÂ7&¿¸æŠÙes$D_V˜QÓæYŠw,!Œ¤ ØzÀCΡà8Èœ ­zæÃ
-4‚6iò,œ¤Á2c_
-
-óERS¾ÞîÍ2>Ãv¯L
-\O“‡ÒŠ»˜®ÙOÙñØÎ{Øì
-dÅʼîë0™#éx \„O.…2ö9‚ù› ÉûDÚ@K!‡æ{ÈõJ$æ~_\œƒè.}}ôš<Œö§?©øbY¿ËÙ"¹Y™p¥ƒêù®³‚Ñé¢í_OŠ(™Ð4ߊËæ8Ÿ8a‰¦
-nkH:JÖ2 Öd>xm,2"p$u¥€Jƒr Ρ$¶Rš1FOVAú»8§¸ìÔý,•npxŸýÙJ6$‘œŸ„Ã"°ö~zÞCÁ—&ÅF‡"éÚtaÏÂg×y2Äx¼¡Žw9‚©¯­Þ†¢LoE­Ây|ß©…¹V8véV=tûqÌ<žå½Ó•–r,ŒðÛy
- ÌSÐñxRò¥Q:m†]f¶-çÍ¢?Â…­,<èdèÔ n×À%-CÑS‘|v¶$a‡–mÝ·»}¼r¦=¿ýõ­4Z€þ›h8™ ã/%äˆ(‚©Í¹ŠJ}ÇG)õâ• Éí*!8÷Ñy• $¬“ø‘¶Ç—u$;ìEð.ë LýÓUF˜Y¤k4 Å·†\ÛÎsüXà4,JtU|}&?¶í¿”å”`$8ß¿•þ²Ò2”uüPôãIQaÎ2B&ö5ÈÝ@+`“+lÈ
-Mƒ½Eµw¶¨¨ (%ßÂåOõˆ†!c>¯”¯’š!µ”
-KdŸ%\»°q(›WZÚ¨ó©¶kî8¤UFC¯se$\°B o–U‚7%-œGÝ=5îˆ‹í©¸ã™©÷Œ9§mI×:¨
-°Y–¤0ºh%äDŸ®šKù€÷Rªé©çv— Í¥zÀ?pÁ4ÄgiæÖ•à”iÉaj:CÈíÁ­°ƒ×Õ”Ys^¨µ+sÜ<³ˆ…^5 5 åd¬èNP‘renÀg<qšÃÅ"V5N9wÌ4I_vx^A©$÷Ë僵Ä/x0I‰"Á´±½]!3›œ8ba~D O,ʆ€ñظàÀC{É__.ŸóC¯äˆ¹èÃà°Y^“E‘ŠgôZà”ñ’VmÐNø{* ;¡ä„ã.B\9Û { âp(©øÙN<á_䋱³¼+oôã´Ý½èã•3ÉNå[5&_Ó©8zBŸXg ŽóZ‡¢ƒzÜîà„~&]ƶ ÃpZ=?ú¡í%âÆ«~°5Â%£„®n¯=Þîq·k`ƒ–¡„.*R ÿ¯qe5upÀ?õM&ÁÞ©0&¶Ýr2³Ž©PXÒtrbæk^¾^î,¬`l)bŠ '¦®Í+³ðò)–Û¬jL<PÏCfgC†C>a,èòçBÝi<sÅBv(ù)|À¤ƒH‚„.Í<¬Ãù±¤%þß·JîlŒ™èbF´Æŧ†æ¹¡/FƤ:öNܽt‘AÝË`[R«ÎÎ"Œ>€…y÷¶V÷fzŒÆU§J€ ¡ «²K|ÂEœ¿•à¢ô.ã‡KÔ½z»’#Î…Eä_„g܃#{\­bDöy9“ïHÝŸ\üK;¥Äü7xèHá$ÚI,c
-Iyð„QÛ…OX¿¬(뀋Spñs †"OY±G>Ý™ ÂJ•1iíŚà?nöZÑ{>^à'±ØcÚÿüçÛÿ~kÄ1°—§{ÅEr>Þéy5ýa!´†¢÷V1°j‡FM5t–é˜J—ßiŠ i+3<šŠ:㑤DÉ{&’«Ëaa £hjp”“°\k¥pd&·ŒÁS‘a©‡‚É ¬ltI—fR5ì 
-óhsá íÔR?}¼
-~W ÞŒñ%š
-ÕQ45Þ\JÔæ*rQ~Ö!?J¿¼ðk®›AÜ 3$.NÓ@û»ÅÝÌU—±žôºµ¹¶ø)ò¶Š€Ñ”q†Â§Ö1…ÏSw»„zš±»E%¬‹°LIyo…$Õ¢‡Òh«.}CÆ´ÝÜECm•:xª’
-%_©‹úE D‹a…ÖÆ¡"v*""A›æœŠjGh1«LÎ.aî‚LSß*!DòÄ9aáZ¤i, :g§¦ÑÀö’^Fd¸‡‹×ˆDI$ƒL÷y=Ÿ¬R.dN
-%QÔód-yJöÿšsIÊ@û£1@cº]&ŪºÑ¢kŽÁyŒ½ªÁfÍD$cß·g=Îú§4i§Î—3\íÁüɦ9ç4“{éõ,Ñ0kpø¤¶ÞŠ~SÍü ÅÖ&U|“•¹îtp?¿?†x¡Á÷H º¬rBè½¼­±`t…„&›dýî˜Êë>Öi÷£€Ö»æ9}eunó ܪ¥,×\¿(´
- §P=¯ú,²25Žbc…û9š¹QÏ;x%|LÀ{€V/Ù般Û(AæW"—7쳨 5Ä,ÌšD%4à­#dДlNs'¶è·ŸÍí³lÉÈ‚~O±àlmÞä_
-žWxq¼&œ±—^R÷ÞÕýÙçט Žµ”“”’wð+0_ãÙ®feƒú`ü’›Ìzß¿”}œ*¾žyÕg‘v“7
--ù½ó|ûH/n¶¢/ÔÚµ¡ø·Â
-Á}Ej‡ÌHæ-W]1¼Q üí.¸B.WwÎt¬‘fÎì§èð6˜Ï¡wzàsFóŒ±VâªyŽéã™èrtÃ14ªXjùÊ7Ñ’NÖüÚ™ù3=×üº¶½µS–d, _ÛL©~ˆz•sÿé|Î8 “vd bvw9YÁ*¸ÅH)bìM’Í>?š©)‚ìaêRÊŠhéndŽA$.v槛ó“æÊúïèOJWÄôvt„†øKzåí ‹‰\øÌþp»g­Ä-«5/:x– 8nÙsú€–½úò̇‡Öv.ÙWwË‘XV²ìúóBÎ@
-ç,¼«Å…í‘WmÉ",s¿¯±§(n•¡—#è”ÑET{$(a[\š–ì¯6¿­Ä¹éD¼LM°³59cÕrU¸!.Hk¶o‚;ù/ìÃG?'ªèdìÑî—úQøS,¼ª¨aþÖïk:"¸½ÇMhØ»›…ÛÚË’5^z‚
-¼QGvzîkÅ£¹Yà °R‡UI¿©$ÆCu[Ÿ³…{Ù³߸ø˜=Ý;I±]jå—7Åõ ‚äBlRW½ÙuÏ1Nlo[5X Äw…î׃ÚYy^wàŒRWW"Z-ÒXVk³ÿ žŸø%ÿ…úì÷e1HqYl±
-gÞé+ïºB²ä/D›>‹þN]‹Á(ÝÝ,…
-p´®L:^´æÌ ¶¾÷ìÝ»®üRBá(±ò+UZú öŠ§Zç)T‚ðnW˜}\u³ßvˆ›²£èÞºŠ\QkC‚ÈâÓÌï-ñ vD»®åúd›²ûÅý±b±ÅŠNÚNd|wË¢3Aø¯…¡GTRÓ áìIûlìÙ´ûè¾õY”ô«ˆ uæÃβ>çàŸ_óA«WýäÍ1=Ùf+‘bfÓð™ê öLdõO'¿š\X‚ä|Ôåbø'Ÿ¥ž5ŽÀ..ì8åäÿƒ¾ÎçBÆ“Í~%–·ì-9ì%ðo7^¾ÌSü,A+†ú7é¿ÉÒÏ'yoꙀtf/Ó›¥º
-$;ÜÛŒGÏ…ñ&‰D½WíG›èð¿v1QûxOÿ Ŷ£Ž¢»vÕŽ»Ì‹NT;ðtæ©åÙüôÉfÌ>ã56
-í~ˆêÄ&™øs¬×¼áX”#Øþ`9Ìr`Iœ¼•®RtFD³âäé LIôFI)É«æözlË–¥Þk|ϲ™Yú[ë¼è£FwÝk]áûkõ)°qÆ·YÀ;pZ<ÉâÓØC´ÁIsN­±Õ„ºøS¿V ¶°œÁyçÕµ.çD(X»,#K=½ÂǼí¬hÖùsQçCã9Ÿº
-íé[CŸœÙ ÐP…¾ÔºßèþýL[bóŽx|«ûŒ"¦|r!¯-õPÉN‘n[½u"ùÈ›W ä‚Ðêó¯ö,Oùàˆ¨5Nšd';
-× ‚oœOJ,³4~íe>ŒŸLå£ö9(|Y«ïù±Ô–XAÐlÚ¬KÂÏ’5}#†™„O b¹ËÄ÷šÿ®kŽÿ3^/»vÛf€ŸÀïàq)QÒ°H‡™öÚQ:ìû÷[åÀ{s#>^G$ÿ˺Ä="é{‚
-ùúóªý‡ž|¹—˜cCp-û„è4e5k§z'zmw†|¿Ôjå£RÅaõ-o bj] s˜¶G~:íÏ_¹RnþÛ¿Èî?þýí·ÿõDyâ›g˜Î³[É£°$;§´Góȵñ±Y6SªÈAB"eµÛÖZ Þ¯#èFö¶åùˆŠªL;±Åã«4 ·´T™¥sËÿ¨ädÐÓºã;áÈXvtˆ¢ß„üêVdQãȱƶû(ÚªZ¥vóv,äDáK[²ù¤¤.3†rCtud“A¹4ÊÍÚMK ²âô×VË}’<ráI÷±ðÄG"4iáêÅ©EcuøùÎReÕä…¥¿ÛÌǪ-Ê~nH?Šöql⦠³ï”Ѐ.®P÷Іcg„R
-wçЂêMZ­Ô9ŽBß>AhÅ™qŸbéö¤×¥íá»ö€Ù,ϳcáÊv¡lè™´Ö}ôÀ8ã E Žûœ³õ¾†èÏuŒ„J‰;Wt¾ö Ë1ï ±ÍXàA—)¥—¤£8û­[î›Ò_”Á$µþ ]{ñ&TŽâ/LõÙŽŸdê ”çöÅè©@Êû\Ѧ ‘Õz,öÈÌ¢ãLcھȺR°…Ëè7$1òÞõÜÊøåÖº¾tJÙ¾¶¤3SG¿L\s½Îfm¡!$xù¬å›uE?\.Ž¤f=,U=ÿÚÒciÕvÜ'• ŽqJt¹1{qCµß®½_ûèbLë6F£7 Óhü6m»ª¬G8ºî?´“…ŒŽ,dzúÒ }•©2fèbõÌåÙÊ-zjÉðÈd×1ô£HGW¯èû6ÿÎ’ðeæÈÁ3ðš(¥ÇvÑS]
-ìÞûó*Ã
-&Înå¡4ÄvÙ¶ë‰UòDYb²2†É‡Ú¸1›hPL‰—tzówª(…°óú¤KÏj[ÐFq¤o\p×Þ5oQ/’qºhÜR””JôG‘2Üxne\&78­h'ÕVZb“YÏwÑ[üÑ5Djá{½Fù¬Ô˜¡Ò¦‚¦/‡¹ßâÖÝú´……01)ПŸ@v<L’
-ÁN¤øüáßi®Ï`¬~dÅÍu‚¹×|ÕÜxÚ?ÞM/®HÔu›d&ß)‘Æã9‹v„„zÞú
-Š|œH=°ÇÂŒñç¼Çá“]ÀÅÅëtVýÃp̵[l|.yÀw4˜¨‚âé8³~ Æ`Y|š]Î í'#¤|V³--·+«hí !œ =Ø%ÊzÒér¸Ú°EMîûQ¨%Ü%Ú^.ì ©gc­ëërvÙ´´õ5aØ3-Rê|y˜dz#ڣ̵‹H¸,ß»Üvñh±Ìk£ YMyçÐ.=Jüª—ízŸó2oOŽL Ø…‘õ²›/3©9L=©¾{è§#}.L`lA–„FªË¶ÐOƒŒ6$,<‘”U÷sž.‰Y&‰¦ÏÒÅÀ¬g:
-Èñ(x »nz™þüÁ\WWü¨2¶AtÈìÜ
-1CèvƒAœt?%Vx2qÞSÂüB2L¼Îë¦Þô#XÎ8
-B‡¡^p6ý˜¦ÝàŠ>{Ã
-Hzˆq7%ê7é¥+Í´(*¨ju®?ÚÉðÉD]=¦„½›ÈËŇ»ò÷Óz&­'sÅìlÝk“3f.gH\þç›"(°°ƒ/¹Fù {¶ó'2†!Öâ½âS*á5Ø2غn,Û¬žw^„ŠDÁ<´¬fÁE[“Ar ¶kdHÁÐ8$«‡@ñ˜Š>rÙuQrç8àÒ®šŒºòA˜‰ä§ð%ð6\ò‰e’%+Ÿ­)‹L>Þ@¯sŸKN)²o×Ux¬ÊÿË.ð'„!t:ÀŠ:¹iËå»hÐ>‡U¥¡•ƒ³ùL3Ì
-j³i‚ï‡X^¬=”Rk‰Ï¡4âjkŸçH©é•4,*ZU
-er*×M/À?Âg´6Ê°8š*õI#Ú>: w!'íå‡ –ÙFDÕøZè‚“|Í-qíÄÚpڞ夦HPÍ7BDW ðÁíûÕ,ØТLóؤ"ª@„퇋Ï(DZ™¡”¦<T>1 >b¨Ÿsœ’$½1ÄàaJñÂG+‘žW%ÈU–§s©Šø­`ýYœýÑ°&f!#Y¸åP^–:<÷ÀKÈÕÀ ”ñó§ú9©*âá­—S¤&Óï¼l›I¡†ÓIA:ÄI‡³šúþöIQ@JS‰“[…C·=ÚÆa
-Z¿[Œ& ` ë*'`©½ú­ãÔtr> Ml,BóaÒ·Ò‡–|W,t
-— D.ÃÑ@üμIôW¹´L• ÀÀÒp—}¼)€‹ÆÇ(Sƒ1Ø'ù±(Ò'ÜíÐ)äI÷«”žÀd(³M4JÀ6g}ù¤›ûMl¤¤´¶¸à+EðÈÜð'±,¬³;Û”O{!
-xXŽKq
-GL/ïa`øÜ’ä5²·Fæ
-^“ PD~ZtØbÙCPÚ>Ïùˆ¾c
-–WœéßKÂÄCLQ^dÜ8¹$S°}»v.± `Äy|Ž~ñ€ü7Gy1Ü„{Î —î™›¨ÃøΟ£h†ðWqja,9F(€PÒÏ£qQÔˆËæEòÿ%Š‹Ð4¸º¶až½¼ÇE5ËÊr?¼ÍÖ+/r,ç’*¥×ŸÔwË‹:¶uœJ™yFy‘c)Dz ©Æ‘¢¬4Ã
-ÞÒb`üÞiQ”^õRr•Õ(.Šü,‚àè6N¬¸ÅEQ(Œ<™’íUx¥EQqC7`ÐéÁïÅùÄ
-1$“©¤Å@:^a‘ Œ&>‚°¨l¢kúÄ„Ũä¿)z„Å¿ÚKeEÝšó.cæõX^¥µ¥âBi<eíM;½í¡/_Áæ´ÂQ‚
-!å&êÀÁÛ‡rY¿J”ã¢Çm¿þ±Åm ½¢;,rûiÂ%ÀbêL|ÝŠÄaY '
-˜þ¥6ažô^ ýÆ+!¥+,À±ú$~…Ë1çê<Oy‚Š¶]Ål”ä±jÍ×I<¢Fp•%èÀïŸLN6VJ2&
-ÿGÑ­ß]÷ƒ"”uè­pI’¹DEGK FÈe×q¯e ,cx(€Eà#|ÁøtßætÈ:‰BU‚Sãç™èÇçóï2¼¦Në³î0è8.ô”—I’\9DOPwÈÈ8ƒ\W/ë½UßÛÏA0-õ?Ó,k!™à
-%’WHíšlÄ“GÃ
-£·eТݰ‚%e©Kò=4·+|Æ,˜A&†Q(mïÄœˆË¡™~Šš›=Òm‚UDú¼$\
-bj­oìÝ*
-ËÌf(­ž—¢½þþ‰T¹¢¡Ž$C–‡…²…|À
-ß3Ø4ùêë*¯Ù~ŸäÅï]¸¦J¢¸‚“¡ÓQƺñŽyá¡âÒY&‘×/½97âW•F²3îÄlá¨ÉT2›¾UY BC-X‚÷n+áÏÆëŠc9ª\"|³Z€FÖËg>gs—R
-/:|òYlEè){+PU§ 2ÕVÔ¤¬ïG¾èsËI–U@ðMÉ×ú1K3Hr™Î`¸ö0»fR>Ìz°ÿ9KŠôÉ®uîˆó¨¼`hÌÕv‡((4ÆÁ§#Þb0y6Fg—HY!¬å8¡m &NC¯ŠêðÂããÆmí×rMo.'.cÜQq@
-ãF Ã"á/{Ê9*£Iâši;ÈÆàN"vÝ3<T`Ü°,»„׈`0ï­$ÍxWr" l—`Š!.Ñ4ßJ—¡œXCíEŒðÕk†)ÀÐñ¥A¶ˆ­<.ÁÇKR]ä¦:-¸UMòã:m¼©š³ò´©Ì8ÊÚ5\±,Iwú}%™DXI
-27£0ž\ÀÄÅÉ€çÊ­ éPÂîU¢5!y<&ŠA/˜°Ó-ÁäË›Sø $Ý9ôŒuLºžTýãF)’p l>øxrÂû:<–™zÔ¸8™™j†y–í_€hÚM߶ÒSdÐレBʘX0¬Â,&›ŽÆ:ZäÜìlÀ+À¦@1Š[_ÆŸ€9 o§ê¼_þ
-Ò†Ü!2Ùíó«¿D!€*y„sòí™HTr‘uh<Ú÷zí$‹*œs˜á;½T>¡Æó.;-?ÑHeUS«‚¾ãÓ›²ÊZWœWn¿([À8ßDÀ¢
-H‰Œ—MŽd7„OPw¨ LB¤DRZ·—¾…¯Ê÷ßÎzz t×K =°§*+R?d0"4>ÿ7ª½¼ª—Uõóµ¬"kÔÈe~Az\Ã-ú²ÏX¯¶ú˜±V˜¹]ÝgfÏöùÏ ¯ÖǨ>MßÚ Èá«ÆZ#\댳ÍÈlYg«²ÉgÖGë!H´_|4zÕYÎ.ÙݬÏÏÚ*\ u[}Íx
-ñ½S‚½ ó@œ¿çÍö>leãÜ~¦&$îÁÇiU6:^e>gœ@±º5Îþf¶]î1=W½üÂãw;ÍÉ̱Zôf•Ãà…kˆ!öjToL0>O;¿ú«šÁÙBÐà¯GÐxœä³1!¼¸ÃæÙÖ°Ë$èBqû›ì5ZÙ`ïê#.Úá-Åb&[ççÅlS08s2›ÍÖÈ©eŒE `NƱ×Á@ “”jÐþ²ŽB=@~|üûãåÁ a¤Ç2»î>¼æ»êÙç Ñ„Î Ðy¤ñïàŒ™´Ií[ó?ý¶ÝןœéoŽ>p‚@²fo6â^°dö“m'´çè…ÇžÁìµU*±MA1}¥N唓ZÎ`‚ Ç#hH0Ž¹?l÷õ'gÚG¯$iƤ3ƒq”¢ ꨎþ ¢§œ‚:p¶OAš~^¢NŽk;÷ù‡œ‚Ì>G±¨½¸ žxž8X áÀT-74ÂÅ
-nZØØø}zVaVôwchûµÕ6¦¢ÅísÅà8ŸYh*ÇÈØÔêŒãS¢y¾w<Õ›R¡b¡UÁòÔ¤|3zi±È›E]úÇ•–Ê—¯bEÍcW}ºw_Ê
- v
-ÈIaÒRÚ5^ûûøƒ<ã@†I· àµÕR¼K>ªyKů3žTpÅrFæô(¤H—dª¾yÌaÙ~M³¶Û™/5Ÿn…è}nŽJÑbWdß;Fb€¢$Ûq³‚S—NÍçÁû±wÊ€w8}›?•â÷eD™(UÐî©RÈŸ<*æÖ
-ýá`bÓ!cê¢6° !ˆîÄE ¨^Š2& ¥™¨§’9Î*ƒG'|„*÷N É­é¼RÔß Ä\rw0tFäbÖø…Ô~.%oCðëºÌ­Ë•ÎðA½9
-£¸c·ˆÎy[Kl¯]±¡QÞÀˆÌ=Rü€õb¦u.O”H‡$Qˆ.ÊÒq43Î"Œ.R‡êu¶w2~h@\ïç8„Ʀ,\G%('÷ È=±Ñ$‡µ¶ yNŒ ð†ÙÈmêÓíhr®š¢Pㇹ£ìŒßÛ2Kü2ø©HqÖá¡]óh¡§ÛÊ0>R\Fñ®€Ï¸!5[:Ö±2†’ò1­u¿ö[ûWS·•Æp8Á¹·a¬ ¡ârÔÞÊñ9Óc›¬ ‚¸ð¼ä©#®­¾ù‚¨8ë"ˆÛ 4,—gŸ­ÆPF%<ZƒpRE‡9sœ~ýöúÑ¥HüK½T?Î[Œs 2ÀxŒ< Q 1 øiS0Ñ•Æ5¼S™'JQÎÚ¬`jð×ÈR¢¡d¡F:¨'Eÿ ±é§õ¼èªù¼Ê7½‚¶ã
-*4€í!ưĶ«°Ž&r}‹Ìcæhnl;[]UüyšüeŠÃ5¾òáVrÁ²zÊ¥ýLúóu~ éÈ÷®è‰):n^Xq« 3è8*“VFÔrJÐ[)œÄ±DÀ¨í–]¢çÈ_4Žÿº¸ÑV" ófxÒKä~Žh‚’ŸCuvz×üL]Áa
-Ÿ$9‰í;=/&™ ÈŠºoõzœ"žVï`ó}Þ(8±T…/y ݨ¹Š¡¢“WæÜã`YDRŠæÝ;[ñNœmb¨
-iWÎ;$JHlÀ[vÛµœÐ22XüÚC+TÅ d¸ rÕ w¼b“ÈÁ2pUëýwD(’ãDâ4N y¯0!zœ’~xIR6i
-O¦ö<̆5+£úyI% zÉì»zr
-EjmV(Î) Mï7s¹í¦‹<9=ÌFIŽB$úâ÷»C¹ê_îïÔÞizÛ}+¢=æÔ­`˜IIZzáG¿ šARŠ Ä8|`-ÇDFU°8L'8ª+ô
-‚ߨì^‰çd>Fª"eçí^/ÃGx(ty9²ñz^r\ÆËÑõ’Ã6‘§äAѦÿg«W»ˆ¨Â¹‚mõÒ÷„•B’žkX'‡Ú0ïS}§ª©Õ@w$àŽmá•qw’Ó/Æ96à GôÁ;QóGÉ™\e|–œÃŽ×y‘§AÒ =hpI`ù„Š–¼WPtq¼nvâƒñ•§8Vö"&¾ˆÄÎi¡Ðò"Ebdb+*´± ŠÀù–>º Ϩã9¨ù;®Á
-Ñ'œX×|‡pÖzËüÅOØD5øfD’Üþ°Ê€œ¶Rˆ+:½Å:53g%©Á¶5] £Ì?ÝgôlØi`£ÁR¾ðl2¿$%óXq ÖXéµ”“·(’mÀVÉ;úy€7ÆM…òQ‚‚³J±œÛ.hàßZ‹4êS ÂEân«K·”N`
-J~`øÓNØ6žhËt~XGœ.Š¦7,É& ¸l³n;ŸEˆsBZ˜çFǼÏ"Ü#é Åhvm+À€H:ééFº@”+ìÐc¶¨™»ç (³¤y§ÞÈÄÅeîGáÑO Æd¢)ËÜX‘GDJØý¦ÌGýS ýë×åßÿùU·f Î$åÁ½¹z¢r
-AK¹çŸ°EØÙ?)Ì©„_ä–É,ÓåsÆUãÊ(aªÀk,rüu–Ò¤ÒøHpVïÑeÿa`—a|01—6ZGw°;J1¼„lÅø1
-KH F´Œ¡Œwù­-ƒ ÌêúâWiÈæŽÿ£lÒyxyãa¨@H-ì¦oÂ…Î 4g¨Iꊽ
-
-W 
-¡ž"Sg§¡¼Ò‰L6o®"Š9IÊ›µNçö’¿h£\VFň:¼áV‰ü ’Ï{®TØNœ„ï9Ž+iÏeĵŒiÎñY°ã\ªBùZ‚ç&ŽÝäyq9­Do3I’úšžõ‚ž_ã FÁ2͸O±sŸ7ty¿7îI©Vć†óa«Ãý]ná78ùlÅHHCðУú*¦#|À€µ³USúÉ ½¸y#´‚,Æ+¨¢jä:Zèº6|̤ϰâ1Qg£wC†gäcéwtE¥‚™˜îÞ‰Œ…Äð`$óØÑÛ@!"!ËOÙ¶z½pÕHÔºöv
-oD,ÌzfÜåÙêÕpïRe™¦­
-wR oºoþÐMÚ`³7™×Üø£[.QãöÙ…Ð<°†xx4CÑšü\™g29Y×y0yý†!fËL/²•ÔAæe¸f Ä¶’;@>Ù)Œ×²ð:<2Ìø4“Ž£¸æw¢')©£ï= ”…jšqÒeô¾ó½û0è³ß?Qðù}.<QJÐÏYø³JIÐÒ4M\à”ù“ EÉÿEø‹=
-jEÔðÎjçeHV„JÀfïL›P£oXñ”ÞîÜpx¢Üž£ˆR(ÉS•Îf0ÒU?U<-(B^9®žbêµtb¢ÍÊ
-*û*0Ô–,Ä>‚†ŠÂÉâU¹ænÈ´d¹ÒT/ E$ÀWn®Ä±'šÇËîß±9‘§( ¼ÍÝb7õ£â8Dä¥á‹² -ÃLɃԥëÏè, oÏ2e¼y:è{ßi+ h.¡yLuô6g=_øÏÜ'š¬í3BDš«¬+4XõžYˆ±‡";kę<Áš5(úåõã¹nøï;0ôN_êÎÖ¡ïï¯(j°3Cû’ÁbQ?‘ì®®ªþó$²¬6§=[_@L!."øƒëü  ¯ÇYºvs¿¥{™]|
-:Ûßé9KA­@<±Å›ýQóö@‹mÛ8îk1¿‚~þNÅÿÔ˜Mÿ`3hZ›•ó¿/ OïV ]¢ŠXjm\¿
-çHáÔ‚ÒU¸ë‚½Ï@ÎLkŒØ.ì,ô¾¹ikÒߥ}Çüüåâû—Øðÿüñ·ÿý±ŠGR±ßNEYú@Wbú„I`ºö¥‘@‰`ÿˆ Aª/Ý•µð²xÓÙ!,’p†vü¼½­Ù8…
-ºŒC—uKDÀãçfÎ&I€2¤’í2 Ñx¹ƒÁ‰aPL»¨Vë8É£èq]üf¿âè»»mB_¯)ψE*ÆQóëß™šr¡c½!r°t,OºÆCH” ½BìIìá8 ©+”þ*FEø(‡”›S")b˜2ʵöï0?&OQseVˆ]q) íHŽ$ åº#éÒ’o­7 ¾†)m]iÏá\¹ £"ÙüIý,HEŠ¨Ï£¶x«¿G—p ˤ.8žÐzƒ„sŒËÌ­?Ž•­—"Ò¢ösa9KœlQñ«#¬XRšŽw´Ò„Ãåɸu"H76¨µ”vï”LÎS“©AÒ'j³—4$ÙÄ×[‡ˆT13qžã¾õrÛ•vaî}Ô™Ha¦–õì÷Ac¯6>"Å’NÌá(t¦[– 9¦‹‰/ýPÁ„ÕµŒ£¾ƒ☦`n!ê·g1Û_x\¹$Iõ‘ZÉiÕâ{âÁÙ—(­Ûwí²ŸtYÌ„e>±tnÁ„ãK¢µôG]-ëÝêZoHzöbÔþ( W‹•=Mƒ˜yÅ<ýé "ýŒþÂq¶sY0¬¥gF2ÜrˆÐ÷ÈSûáîk=2¸“nV$6Þš¸`_[χ~ÛE6d |<ÇQÈÔ(ô‹™…%Rá¢ó(_‹
-[7D}٥嶞]·éè©Á
-£î"þD; ú°Ùü¡‡ô´#y¡FëG¹q¥rv¦Ëu8ŽÃWÞÄ®ò]G™
-"1vÆÚópÍV$z×X¨°·­¿ J„[,3|Ì bL@‚W†ŸLoýeˆí
-ˆqŠE®ë¬z½ÿ ¤ú'çV[»gfÍÚ¦?$¿½@º{’Î3qòŸÌ@_ôÏ?öS×uÂÁXØ©ó[ ÔÇÄd‘MZÉOA‡b\ñÝ–¾O!{rŠm¢$S¾@ìµ¾bQÿ~9Ê‚¢IëÕ¿³óíŒq]Ï17+c ÔÆFˆÁÃ&º¿8ú (ŠÅ:¯2ýN…‰†¿A>Çà̯1øòk žC¾Ä`Ì0î¶VŒY'˜Ÿ/˜_Cðñ)€ÌŸsLXº¤G:§›û¨^b²é€Jg;7Š”ú‘R”«†Õ)D›t(S-´“&˜_û=‡XÉ…œ.o'}’·û(±Â Ó)ý\‡(9[[’¡&øòÅf€ÊÕË£˜¬]s¤xûÉΞÐnÃÐGz÷Èô
-Óº kc’
-}„îkÙ÷×û%Fz˜Q2•¬2br÷?t.cØȆWÁ½}+Þš[CÍfW¤œŠ…x˜¡iÙJõ(L¾ªP”ù %6A:€oQa®r'ô%âP³¢åòv WáéuQßIlÅoè ˜î"bØHöjp¶˜;fÞ¸v¤;Ô®S¾CÁJ)ªÃðÔÇñnìÆfp‰ …êÒEØÚq9D¾„ð¹8ŸÄµ Éíþz 0!〠D‡ù¥?½f¯WÐKö$Écs°kð¾G/ù<“´™ÜøCôZnÖ)²†ø+ã~‹^ÊYœûÏ"È÷è¥Ò@+‚}ÕáNJ|B+UäVâÊLß’c1¼åˆ‚§%™¬#^[ðâqSO®«ÿ¼œê 6ÆŠ·
-ƒ—X
-r¨c&lekúCYI€L£Hµ14 î*É÷a× dù™ƒ Ép•0’ù6°A.Ó´äSv‡øF’ê]© 7‹×A0™'¶’/”E{RÑ"Ç@QN\Ä°²T¦ôá$Õ0/¦âA®ÃÎÅ)'2Ã3OÄ
-óSR’ØÃ4ç—-È"¯Rµ Æ_ÚʽR¾ª@ I>O
-:â×[*YÙñ&¹ú“ÍxL|~‘g= •¦§šb¾YsrVbàò‡[ç"ÓìOŒR¥˜Q/­-l#?sj dïúU<î ‚ ‘匔è•Îµ1#M¶ë@\’¸V9µä]ð ‹[$ê»m8ă4íá %Tù÷ö㱸ŠÝ¿NÃ¥‡<Œr…šP¿"ã\›£v´néë ƒX0#ìœá¡-ˆ·Tß0T yÆà¥ò¡"EŽ»1f@šÂA&3¢Ó+€øVY³±‡&JŽÖ±îX9?íÕœ¹ý™&ÎF— ¼/=¢Ã™'5Õ/;2:Û0ä>ä¶é9 îöZ¯ƒõ ¾u­SY2a˜Iœ«Cp&´Š: ¿ðë-
-fg̺)î…Õ¢iîàRKBÂÔïÐ.gÉh?)V€E8æ«i^®ï6èœ@`Óšü‚’‘ À,ÜØì ¡• JSdT;ö]mÈ,QÙ³L‡Wè qª²´å8Ë°'í0»~)D×Iõ~6W€ðZbö’UÔ§á2%3þ*L²áD“¤0³x¨j{ ™I¢”¾7b žcÙûy9i_3¤Nˆ+9ÞÆZœ£ ‰ÔƒÒ1…ïµÉ@ËHÊh׳
->Wá•ÖK~¥†9C)Y7ÚÖ.5Oýc-ØBë07²#â“O7 ÆU°R2\‚½°ó“à44—òî­`™Ç ¿ÏÓU\4u«~dpî#n°Óã:¼~"3…õ¡f5¹«SŒQGwŽ$SægQÓÑ®ôHÝ9ž†Ëæ’¬^
-ŽÜΈP0}ØW57
-ÂGø™‰AšÁ4ݾÓm&ƒU(:bJRæ¹}ÊÛ¢”ÔÄô ²EÏ­´skµ uæòs3A’„ð¸Ã¹O<|!»ú:™oYï9<ÜèyÑT–ÎNE°dÃçJÙ¯Óà™m÷§å°k#à2æñ•K·(²<x,svåÙyít·Ðq£kPÓe5$rÚstyJ\p­{«A ÚBP\`ú #UAç`Ž…Ò-œM¹©Ó/4-IÈ ú„ ø6²
-0Rˆ)Ga–i0ŽÂ`‚§Ÿ ™–C¾¡Æç­ÄtˆÊ0kgÌ´ƒyÝâ¢:ec“HQD7A0¢ñcÄ ²Õ*îˆV<[ \Æ_ºû=€¸Íð…®f1BÄ€eI§§7]¶µ
-=)õÈGð fɤnõê@Ø‹3NþÓ:£¨ÄðTïA³ËZH X‡µ®y@:¹7ÒßÛÞŠú*C¤Ì¼PFh´=çÞQDÊ' ]êâÙi®Ù¥;ÄÙÍu½,ójÝ¿+’êÕöNw+©JqÁÚ‰°ù:wCú20w[«®aëÆ(â׎¾›cu¨q!.°äª"‹{‡«1¶®ÌЪOJiªÒ´U`ù'4ud¶²þ§ ‘A´LÆíò’Uªa/I~œq ó«ÿ_“<”ºJ
-Åau%g8œLF{&ö8öo±]#¤ Ì¸ü°?X²;åz/≹4&ÅÔB~N*¸
-¡>Pê7%˜œ¯¬DŸWy ß`„ÛzÏÐ"_…lú8ç†/¿ê1Q¨û…]I]íàj®-›>?;Äíè8‰ç&úFðc›¨Ä,Š>…]÷2Ž±õ%./ÁcÎ2Žb6|Óm؃³ï¾x´²tãÌ0çM÷¦ÎS˜„9Jdó}|'…)ᯖ?NŸøt,hMô]
-.ìjéo<³æ™È†¯ÈF% K Ñþ,êU±%õ¹Æ«Œß …)æ\Ĥ%gÄ”9”ñ=¨É™¬MH‰ÅôPí:Îw ¿}\%<î#«î¯k§$Ùb/á©B^Ö7E½“Òþ×Pz±]>ëoT¢ƒCû¿ÏŒ”"‚ÑF<èßàåŸqÑ,N;ßøQÉN€9êg! à.Å“¯Ñü@#{8Ρä6¦Å°/iàð€€öC)‘.¬ 蓆õøk<W3Ðèä(+|Ò¡sÌ*ÊþOšùPôów¬âßå¡÷•Q$óÍV«:ÙYè`(_k> ]%w îEíC*g’â“(áÑã[¾‚ð?¹‰ÍÙPb8y­„ q±¦ ¨Jà1I®êv™W‰!W4^*þ°Tlø”\6ˆÏáVú\…IgMÚ]ÔÎìçrÄë
-\LSAOó5°m€1å$ã`¢ú® ÄÛ²­.ïÇpXïÎUÌðröºö©F^‹AJŒús0ƒþíGÂÜ\.F•MmK‰ÎTã;cìêKɸ
-ÔÉLüo¿Ž÷s’ŒÜâ¾ãXWEüÍÝúpYIæ !ú¦_ ‚¹£tÛµ#©K
-TÛj_œ©•µê¼õq£qîÀrÎs
-ÏBxÀåä„;ð õ—²˜ô?Nÿ°èùnd@ïïa9' ê…&{áÍK‘Ö@ ,ŸËm‹
-8Ì;;~H‹Eï1Îum6²»ÃF‰ý…ênÞemÞœÝÁÛ5§i{aIúXÛ©½ð´óþ
-ê–Ï‘sû=!aÎ×6Ôݦ¾É ^­SC¢~«ÃZ{îq Oà#óeÁë
-C?&_±®
-›Êâr™.“0½dÚj,õ*²²9uŽ¯ìIRÑ“:L¢ ëŽISvœÓç!Ì-ŒUî÷sÓgS„¹v=ž«tÑòUúØÖclD£@ø¦äCn{Ôòs‘®ÇÊfmÏ©ºÂƒègIÏ>­*žn±kýœýûè
-…Ç4¼X(FÆ“GoТñ’ŸëI‡*ü…ÕÏp_™üsÉÃä-' íïç|¢éTìjNW§¢u“§Û–góç¿ÒÚè9}8Ç9õ251á~ü'\nñszö”H¦wÅìo´§yî>©ÊЙÇéʱØÇž×µ:œy]wžDñŠCEèó.ÛÏXT¿†ë¾Séø|ž‘ï£HXxyÜ{4îöÏ“8ÔìõVÍ1^) ­Í~LÄ´èã!*èBOÊPÓ‰_ÿ™dág¯˜§þW‰ω΢O69lÚcž¢=90S¢Ä\ݤ[>οD›k!4Ç€ÂFIiãF±«7Z€$b-fƒ¿p¹Ä
-5pèàÆ"Á¿·muµÆx¡ zØ>jìy¢êzKRžv‡ 'Ûã2„å–_é7ÜlûÖ‡MƒÎFµÑoZ(§;\pI>ã6°ä^?¶¶éó,-ý ó¨ðº×ÀÇ{©÷sâÔZœ½-púÖÞ#÷ë5±|.y !'M¦=¿µþvN}ä ¶ÕòÙ¾ñŒ¡~+ˆn爥“E¾Ér8A¶Ž8ò™hTøÆJé× r£ÿ¶®Mxæý¼õv/›@[bÊœ:ïáñì‚“¶Ç¶3²Ñ°Ÿ+מTÔÛ1x1öÝ_ã¾Eä#:Å•ÏU‘_Ý*q’u]ñ±åWl;õª‘‰²Ï
-`rðoü Né2=@¸Õw]i a;ŒÎßñ²[X® 7}Fèíu’Ð*i[%W˜=hƒFø½SãJνB õ¹¢a–R°ù`|‘ð&Ú¸)ùô
-oO LI§8­î5¾IÂ+ [ú¼jä+Ï3Í}ù4áÐ4ù.KºƒÖ´Ãg¾ì0ØD/T¾†øB¯ñôð>Ózš¶áD)ËŒ
-ÐÆEFfÑç9Á^r:dÄê…9{Œæ‹ƒ}­¨Gƒñøš
-j5àÿ …Ö°v!häì¡÷¯sIfý‰z2lµ»nñ‘ñ¹ž“þHôøRýæ×þû‘zk¡‹Œ†|ÜàZXL$©GÉã' úPPÁ•!,µ9 /„Ÿx¨¡ÄZìZ_ ëçÐóÎôÒðùç?ü¯ÿð˜*첶RVýâ("%'»Ëc*H.@ØèÄ=kÁü-å‡qi[”¸*ì*:û僼“Òc.æ Ç÷îsˆ
-¹|’?¿¹Ò‰9ßw l=EiÙ9•¼`žwª­6ÅÏ¿>RÊ
- )iv£TunÄüMUcÐLz¦8«U‚…CoGWØ¢+&i¿Y0”ÏŠÜòm,,æ¤,HäÞÔW¦]Ò$P×xJx¨
-ÔøéÀTl† puuË‚(ë@#Ú÷D¾¨ãEO¶ì@ô)rt„÷7ç`ÉK‚8L–lߦȼô¹
-IƒÚ®ÿW\Ž‘Xç9¥€PW‰áå6®Ö É#‰2°B©-U ê";$×!nÞtÉ_Ô|8 4Š«@ÛhjócUÝÓ3¬ÎHfbTùoÁa9ORäD½¹Õ]åK ©Û4±ƒA# bþC–1yð zAßsŒ«ŸpÎIbŸNÄšœljáøúða´ðíÀÞµ×Mðù$0E£5¢Ø/„ܪ…¼_„©“P׋$A0;eÀûîs0¸Jo dhsè<NW&¬¥]ßÞqÎLPÞˆß7Jm‚BdÑãŒ"7Vs‘-[\á’ªA@QÆâ»K׺ ˆ“UÍ”+-­á!W-s ÃÇ]#ÄŸK »‚èV«ÐCؽÀ®ѯv_½7 j;l,JÚ{zĈ•Uë,;N.¥/ª†2æI*gÛ/µ[¸ ="•{sÏiL‰%)#Æ}›
-ç"£TÖGaкú¼^%«€™cVç ¢ ÊÀ–ì71¯~—
-|
-RÕe1O›æILrÐ`ïB¸Á*h"»W¹ë0@Ìs‹ŒZ-Ñ%F:•¹Å'ˆÈhYmìËüT$ÌÈx$7uÈ&3™c>œ.tYœ-¤@©ÔöÕM,)F1ˆ£n}ËTšCöiqC
-q³
-hÄ„bSÿ7ó ëÌ®u(¸;ÅÿZÅ‚Ê«Ô•=ô1™aا¿ë˜+6y*¦Ë=ïTéÿ­
-[À¢xÙ¶ØBJ(]Xª"Œ ½Õ æê€ÔÄ„çìŠcÆ’w’ Ê\ïqA2«ÿñM '–” §Mfƒ)@!©€P7”#ßÿœØ³@‘m}‰C˜á½½lˆœ/*$ïßß@;Æm2¾¸ìO]AXk" Um8Î4Ï©rœð=7òÖJõãÅ45þª:^#.˜çfýÚ>I Êá¡j\& à%‚ÍtÑg_¯Ç]1_æœÉHùS€›i¢ß BQ{¬Æ®ø4F½»áåñ!=眔²r$vÈwÇSR k2;^!$’7…åµ€`j¸3k“¦<ƒ¡± gjÙ^É4"¦FtƒGŸnF¶z‡~¡ÉºàÍß@•.|h ûSWÐ —V ®µž²Ís²ì"ίmÏf³TcÇz7Ã2Æíª ‚aM¥sÌ(Äš²3ÝÒ+ ÇRNœø¦½tÐá†GÂ4#¿a¢ïçp*xT`m5FÈ¡Ç|6õ§‡á¨ÚGÅØpy,ôsJ…’‡’\q˜g$å$1 eùìÄÚ#àÙ&„1QµWÀ0õ†)2ÄKM‹U~³Ëz`qw%É,Eª•¡ ©ÚŒˆ…áå‚È ¶<ò]´ÈÏ1/P…+ƒùç¤G&EÁÐe`’½ËˆÄÕ‹Ž;®ož4íf§kÕ³ª4ØSD¦1t ÊlXaŠÎ1¯‹³EêV}Êܾe¢9<A'ð(“ŽQg71×=]Pz„NZSz(L¸ Zk¤! âû]ì:£DæÁ¨ :ÑA£îC0¹‘þóÚw«2DLPa(—a„ Ô‚„kZS ƒ¢§±Ø’þF2_Ãé»Cñ;Bb¢f¼iS£Š!¢ì.,g÷*›QÅ(ŒHožT¡"Ò$
-8•©ŒÍhÄ%\Uص DÎ.Â…6¤Ža¨¯µE—åýñá€Núÿ–)&Ÿt‘ÁÊ3Zí9.¸A¤EÔ;ý+(Æf Jio7
-D4k¬tø` XíÍØFÁž`,Å% äYå³`m"Ó2¸pbn*`Àñêº| 2}å~<–Úÿë•6Ö·VoÃC{À´(Q†Ï_"{eŠ€ÐåX`Ö‚Ìî9óÛè:öRÞW–%g’B¥Áüè!þÌ\†×ÙªLÈŠ$!”ÉA¤i°$³#%ã•Œ%ÂœWà/¨Ñ^ìÞ&*@ÆåŽY.LÔe›µØÁÔd“‰ –4'§¦'¨ºÏ¹p@”]%6¼9²9Ÿ• Ob(òt¤¶Hcö›w‹’•G-
-Zaü3»É€°P8¾âᲇMnQ†+ºçàYYè óÛâ¦H<R(rœ Ñ]“núŽ= <M±>=µ–!H©]_O׆S<Y-œŒv*ˆIZ–_x™é5Òúç¹vWKýcm¢ÄÀ }8 çQNâÚPÑú–~ØeÛ0+seJç ¦°É‚ë°ád[íøÚ*„‰ Nìç°õ(cÌy&²²‹Ì×> !Ì/sÎ冷†Õ,T¼á;º->y"">R· á²Ø.¶<±–SžÆÆÞš¹ÇTÅôaµ±}N×å?i«F+×"¤Ðu¿Z.6uÝ7íIÄŠ
-/îÔBs¹~³ÅÉh: #”öu]hlö`NÒ„ðG„³–åﳺȃ㠳›Hž³KT`+…¼§ Š¢õhT+(°W–„(ObÚ"¸õt&Gš¶n*O¶Y Éšëé&·ôÒ_ÔŽ¿"€…‘æ9 1ö›R”Ü夙H8|Éöáh«>Ä$YEMØÅ;¥BabS*ÝIn¨¸4t}Aà ®…LŽuÒ Í‡ŽøAˆ{a&×d-HkŽH¹ _©òÈéµYAj£<kwAd¥ˆ.Û0Rœ cÑ/˜ç ^JÍ$$9[ì˜vM??(2“*S* €úò@§[<¿v:Œïo¤‹#æØgŠ'Ñdƒ·rIj‹6Ì‹3ù]»°99 /ä¼Nú{¨ë¤”» £L胅Ƀ¨ºÆÛÃÀ‰³+ÛŠbú×¾ð ž *@!Ë¥¼‚žwê½ÚB„V¼7óÄñÐ'¡ $*¿˜"gÞ_NÓ*R–9R˜uAÞIY±‰)É#ß}q®tbη)ÕñÓ,_Ö²r†à¨ä±+7ª=›òùŸþe¼Lrãº0|ÝAë
-š\!<²€NÒ¼Å1(©‚÷GD)“ì)¬ éÊÂzßö9Åh ‡"Tæ®0jip:ã
-´JÉÊ~:œ%Ñ4DAü
-ƒÕ†Ð¦½ž‹0( ' (£*C'¶0Ž l‡,äæ6\‚¯ÈÖliCiPB’ý¼B4úÐ4” †®„×ånã¡V:µ9l”ú$GÙAIó«~¹›ÎÅ£=²{’VêOL®rBÀ&?œ‡ "g› Qíù‚\æ/z€e¶‡D( n·XOŠ‰—ð18¢îã.*?Ãh 蔵6eàM¯ %IVU»ô½4UøÊ)ôZM/òª(Ȧý;ígY!K»6J:-¹®êfÍ2Å_ãxN†²D‰.®ëªÏxÒ±5t’‡’ܵÁO°Ô!£Á½çvQÀ'x#¤-C㶠¼¡M&‰š0ý§˜¥7cL`G$â··C¸ZCËØ-Wi‡ ñ@³%˜Qºûe@œ®°DV+Lâ~vg%¨ Ã…àR†…þ |ØÀ5)F·ðÀ/ft–Ï Mè¬ׂDí¸Á‚2&‹-•¹/03Áî"cÈ8í›nÇTc¯öpB²ôUŒêJ‡æ²Ý¨nï@¦Z^ÝÄ 
-[Û}´x¸|, ªqÔ1l òdGÇ8S_TB¦jôrtÉu1cªØj!lB&ÂØìpÌIã î)k=}ì ŽFòÂ1ÛæÒL€7®I¸’åÑKA”·K
-NÊAõó=EÎ ¼
-æk—`’ojU3ªÙR«—‰eê~7îþ­ðÅ*1£½ð†
-Ä„Ù@j©%ïåç€$‚7®ßŒ7™uÒ)èqõA! Ìj1B#+]Ê ,€vßÞAÚà±
-ú†Zm!$˜ûél"5f;¯i#ãžÚÚ¢Èà·ÜA—¸P ” Ç«^dz€Î·XΛB¾íM"3U®¥ ÇKn§qôÔ¬Áb!ÿÕçI­Øš„aI- _€|“5&à"TC®tѧ4)×V|H$ë ú¡4¥~+ï-™I²÷~ Ä¿_aM'×Xà(ÁEÐö2„@t+œŠ\»´~å_†;­‡˜ï‡x½’Yzæ‹Ž+†±`$´ŒyoÖKA‡Û0ƒÁ¡2‡öz¸·¤KålwÚ÷÷Žùx¥F^ÊdÑ!Fœm¯ãð:JÙ@tÌÖ‚nç܃î‰ßo»'þëŒvâðË\}ÑÇÚã/Â
-V`0óä2è{ƒõ!VDþ8MȦkp[¦ÚÔšÍàÿ8F€oV‰Ãw… h»1+èû~ÒE)’%à!×Y_aH°ÁmØéC¿K%¸ëçU )RaÝ‹‡ Qi&\
-Õˆ;I”–ÌAÜ€l)q¤¸ýX$'™cØêGˆƒ(ÿ!PC`É:˜Iµ±CŠä@Öl>Ãp4]`Ýcëô,°”1ÔG1ë]`°ºFÇ œÅax'ʼÎzXt¡J«H×ðùIÑM—H’&|¡°˜
-^ç§(¿Ó1Ì_IYÈŽœZ!°øÈ$N¦í•Nr‘u9:YVH›­ÚvW«€³d ±ß-@¦r88iåVÃ*ü¡9 ^'CÍ8õñ~X:Q6š”¢1õR»°(/ÎRŸ‚>vÉÓ$l 1§_B’ð ģ߰O][¿Óa½E2,ø^)CK_xGèVùÀ.0QabXnÈ}ï‹€Pß*_ÚBdRïZüƒƒ.R3i"Uæ³¾b(Cƒ¥Ô<D˜BÁèi^°J(B¼
-ëÊŒ=X”¯3÷ll'EÎL —¸ˆwYb.€©h•ñëAú^O…°þªºL]l2•¨ož;„;
-ÏYÎÁ‘ÜÀ$:Ã:GJÒZ<aÊŸB-—¼¢w]ÐÀx¯¤¿³‚\·ƒ2"ìDd dÖ6}7}ÅÜ$vˆÐ`Š¨µ. çl
-ú7¶¾ØÁäÄ0¬‘­2gÙ”¯…‘Í‘qìéaˆ-Tº­U§Î{SË-M£b³{Pò
-2Å ë¾î• ¹˜RŠ‰°…B²Ý7ý)èãvª¶„!d/"2×Pª
-M5a`VŠ–&a@J—öö$ —öÍ ±«ÜÔBFfŽcè½”“ £ZÓt9^zÌ‚h¡å¢›„ç|´êç€ëÒòõ˜M‘½’{@=|õ&X±H¢¨cmd TÚY–c…O!Ÿ:µ¯ºá¢JÉòI8¹S6¨ª %#‰¬ÄUO’Dah’}Eùžkƒª¼Šðe4N6Ïpª’ÇN=…ì«’– õceajš{Sæ>Ï+!Ê!÷óôñ¨Öaì|ë1}ÏSLmÐ(ð9À›ö ßwA‡sB›ÚŸõM›WÇ£(]
--grV÷mC_ʘÖÑ‹gu‚qªÐ|e˜my p‚©S¥VwŒD\MtýõEP‡º&
-äÇcz”W¤:D Þ2ù„)cȬ²ôô¸ç W* ˆúí¯·ôà#š ''’êõ×%7Â_ßÿ}+²PÌ":ÅÍæý^ÒbÔjŽÂC
-
-y ̿a³Ü Þ‚¾Ÿ‚Jy`1è0ŸÀ)t»î9èã•œôÄôþÇ?o¿ýÇ;þ2oۥȮEúÉK6›b21dÉgVxÌ„C“³–>‚½é[Yíô݃€
-ø€dD Xz€Db7Ý¡&2¥yúx!%½“‰dOq:’T]ÈrÈ\Adm á½Ûñ,Ý·¤"Y9 ¡|‘95‡Ðµ[Ú™ÿ2''Ê÷?)íœì‡Zšw AÓ ¬g×wÙ»üÞ\¸ÚŠ%=yH’µk²oQ+À/aÓ܉Eàv€!k›»CAŒh—r¯½]냠pû¢bt­ùŸñrKÒãÖað
-¼‡YAJ÷Ës²–óäìÿõ| ©‰Ý¿:•TR1R‹1ÞÒ,òÉ‹Rð$Ro°„¢ó]T?¥sºÉ¶Ê¬¶"Ô+°RµnÇ$XÔ•·öùÞGÖ@øo‡$âk•Pרý%>/ea¿©Cò¦ƒ6ãsdò*4K‚ÄDqÛŒn!,ø*ÏìM7‰v²h®fKížVcýžTòúùbs뼩˾A{±ÊRøx¹~†Õ ¹dcFút› Ÿ=e+öné5|¯Kµ‰ŽOZǽXévÍÔE,néL£ W®Q3)ù WF‰Ù¸hnf\ÅÀtÒ
-ÏXâ³ÔtùÐØ«&¿‡ð8„ÿÃ÷«ëêa Ä4¶ì‘ÔÌ™U*®""–“¯,ñ=¤å£ÉRª1oVä2ìì#ƒ ’5-Uw9nW9ü±«n vÑÓ>9UEd¦„½&¤€o…ÄhŠ·*['·~ä„ç’}[»Îx-Bñ(t/1{’Њç÷q¶)R ë˜d«’¨G1ˆD 9 Ì*Lš|ÑÊqLÅ·….±765&Õ½ì¾bH»•¸ÒrF䶪+)l¤0ä±B×
- f»-1|º|ˆÓüéÄÔò3¯»ùí2-VÖ©€yœÄwÏ!ÑÂcþâ7Ñ·ì¥_Ïû©´­…b•{Lºƒc† œ¸ ÜŽGÑmÔ‚dæÐ.F†Í‰ÛêI4 gâ‹¢¥£Õïè[”˜ŸN=5-ÙŒF‘⮣)Õbk ;‚]µ úK2ùš‡L.ÆÞC(Q,Øe¯d&ºMŠ=˜(lH º92¥¢ëqݧ.ɈT§{OŠfÇÐÛ—Y^vø 2ñ‡¸ž_ jýfä©×2Ó»‚Q&Ñ1Ë÷Ò7&
-ª‰5n‘Ô
-÷N&‚2ë9ÌnJ>è,¹×spû¼Qüë‰/¦6è/:Z|¨¬~L·<]Ž’žSÑÔ:ÈîCëN‰¡\ #ІHB[¯õ1š
-Õ/]«
-€«<”Aa’<pZPÎMb ¾€¤k)ŸKòDÑvÿrHR–Ÿ-”T5›¶»Ì ó\R‘>AáTbHÌK%€ÚsþÏ &{…¢…röϯ’u6†MºA“šÐ*…ø7È“ƒ71|@uÕ¼œ£KYÿÊ„>± p'Á\Aä
-„Z3ìÇÔj2ÉLœÅ ™¥ñy‹ªÏì’óX â¦OæQš+¿ƒ(W9„E˜bá`X»rl9Ä€p ‚ëîù
-©‡Rû“`dÕvПeçøòˆ ãgvÏèQoû úH&×"“Z¹S û†¿½^0žÿ¨º>‡…gÄ×T  Ý_Ebk~á „cÄAXðiu58ª°§Øùk{x™dg?<¯‚J#“ó15‘¿ÃU|÷á(1c+ýv›ÞJÈ
-?X\<ÚÊ”bqk4¹X›øiˆêIXë9¬å zðؽåé¼dÿßüõ×"ÈòÞ^j¯+Å¥ÞÒ° âëouNƒäFE©e«æ¶uËëV¦©c\0BÈÎê@z’ÇAˆ!KL«aQeBøÉÎ`_Ú… «Um0—BWH3{h<Cú9ý¦$>e­?gF¹YDªI¤! (B˜59×QŠX¡þkÒX&"Óý±B}0Ìή1¹]ç
-H‰Œ—MŽ¹„OÐwè LA$¥u¿¥o1À¬Ú÷ß¾/$f ¦+ 0¼±Ë‘¢D2‚A³ùùW«þˆµ¦­Ù£ ÿ¬s>F‹Åc¬¶ÑÜbš·±!V-Ê*u–ÞÒÌz+µØçß‚x-ÑjŒVK=ç€âÖÌÃö)¾ª·¾Æš5RmxíQê:w +sõéÄÉS¬3}8fÍP³zôY­Îš a1jÌÁOkŸ3}ŽémÖù¦îkÊe¬Ä¬ðQº-ã‘BZ±9ÃÖÈP«ù,3V«Õ¨z_Üe8yÜçpê´Ö­Ï’ç+eñ
-'(³3²+êZ*ó åÊß\5Ý’“äp;jÆÃ
-PqZ~Qþ~1§Ð1T„OcŸ3gW{wn´0‹
-/ꨥ¿ôý¨êhêDkǤ™)ñ8WæfÜšFË.«ö­¥ñÝÌ(%l; 4ƒ«8yW­MX©"A†Q®Úæ)Ęk™ºñ@œàµÏÁËë)§Û ƒ?~ Ö©'Ü Õój‹™P ï=z ~/°§½º(k<Û…vSú)§/2Ó
- 6gBÆ€$¡
-® 5I;|„¸žWîôÅàg(pćD–Ñø™v:©ÃÒíŽÐÐÍ/ky•~v$«~~½¡(wƒSeQôEïAý@¯êPæû4KI&§ôûÑ\RÀ?!þ¼’~ôÙùè¨%å`äªr8F³Ç¥–è6Áþ ' ·RB?©Qö&i6B¤r)÷¼Ì„bª.ñý@ôy¡cmTÏHá3HŸC¬<â‹ÙÌ}o%b–ÆmÚ ÞØVç©9kèWúÑ*
-“§@yž@òš_¡Í›D‡ÚÔè%‹ßÎÌB褤9S¬AëÁ«3÷‚NçÈ…¸½
-žhµ¯ŠbòU†¢’ݦ<=Ï1c T4Ÿ¢®0
-"ÎA½öý©&ò8:³NÔ=J<ˆ ¿Â´m Ǿ$PL¤‘¹á?§\Ü<³‰î¨}#5ù(¨ÒÔ5#™fñ¢œ3{‹²0cyê'Ã4ye¨»(.HgúYšÎ%‡ü?ˆ ý6"ÿ%øמüì‰þ=$.}™NHSöæ£4ÊÛ UìtÜS¢ Õórïƒ^ÎY(3Û
-ƒ3½ÉÜ×
-«!õÌ ¥ëò>H6„z3cax½Î1íê.)Ôÿ_øÕn'R•B®ûóQ/Ç°5(¸i{žu‰Ìtð Áv¬½²¬kmøýú¸ÉYOD¸úö
-Æ£òÇäµuU›y¼¯º©zA0ëlÔ0_ŽÄQ²D» rÐU>0ŸNñC(]MûÝ)î" ;ÉíŠÎ5„óÚ =òBÃÅÈZVíHíº '4d
-¢×«žè
- X”+”vï4\r|±ÒG\iôk©èÞVðÓÆÚß8ñ«ë’løÑë/{œ
-CmŽV
-RÑàvQæ? ´»Hµ(¢bd³»v0ΆµÇËÃÊèâ‘‚³œºa€èïã¤XÄp L!âåòǘ£³‡úò ÕÓ Zs9î8Lr@1Í®.Æ£r¨/Óêtç/o²Ì8ãVDú«_Å‚AKc‰›tN?¶î©¶ƒÄ¦l¿óž ¬LXbw}×7¯¦«!IÆ­ãmXzœÓh¿ƒ|}üC,ŒÓªK;’ö‘‹¿M.'Â<û ¨?°)ÑЬñ|µ&ß+Ë6Ÿ––ÅFì«ê¥‚Š¹–Q*rëžû#te™¶¹Þì7U— –éSæý)»÷XN‚yu€.L{$q<ãÀJæf\‹ 4¤–·­x”†¶Ô–Æâ'L;+ï„ágP /`ýŠ„ÿAÜäkš
-‰¦zÛvg¡x”´ÐĹÏÊ[áõèýRß@°.U}=…<£¢Änž 0þSx– òHL¼d®½SŒUÂúÅ;±Ô
-ÂÔ>Õ³€b¥¥…ˆR¾Tm]\!pêþ
-º-샨;-úÇ Íñý'
-öKBl=° Ù,²£)
-”±EÙro×VY‡Œå»j/£ý>Á׸ŠáÏ-×Iã^s´Ÿ
-‘v÷ëöW׈Ôú{‡˜CdžJÇõ4ÁµsícضxÚ¶[—²‹2³Ù,‘$A*þ¼0
-ÂH¡0FÇ`@¿ÂØÇ È†ìsPb#¢ÛñhöÍtŠY4ï!jW:¤ªEœЫUƒÀ~Éøƒ~Œ‚ï[2=Ù+ÖÆ°;i³ × à/8Ü´ÉÆ še¹ós
-Ôæÿ/“äºnŠ® {ð
-T$Ávœ ³ O•ýOs.ª¬ÿùÊ®$eGÂ#H4·‘lÌb¸ëV©}Ú©©öœ)%\Îä!CÎÂÓ 7Ôs&çÚ#R©[&<?
-a˜»ÖHfM!š\,‡å³Y¸SöÖvQ!X;ƒ ³j03¦ÆN*Ƙe0Î9 tAd>âʪ×+r]äDþ7Hz¸JÎÿ¦C#†€`ˆ¥“1U{,šŠÎ…¨`sÍøäÍœSÝbÍÀÊ“
-#qjÍÎG€Ð¤¢Ö"„Í2™íäÕ”^ë%P ™ÎLfšzº)2–¯á´|)ÎA·OHV:B$2&¢KÁ*~“ùÌèûh”©w6î©ä>+Z÷HJÁ¥\Ù¶,
-
-’7ó»´ gJ€’
-€
-Mv×Ù"É^‡Dé.`ù¾ð3Äb—OU˜¸r_Õy;Ç1¬ ÔÇÃmಥ‰¢©jZ#$ xU®Å)
-^C¾÷áòÖÏ÷ Q·œÀ
-¥qP&p7©Åe'»@ï¸ütáÎÓ‘˜äçkìsÐ5KFs¤G›ÐSÛfü„£Ñ!r,5–†Xê°­®\¢ë fc±òéú2¾º’3!L5‹Gõ×áØ¥nÓÔ¹u{ j¯b¿|«kü {F*,
-+üQû>á&É ê{ ©3ÁÑËà!è@EšÑÖ%D©ÆÌtÛªÙ®çŒÍo ËUlÄ9¨)œ`'›¦ô+½•¹+Âì´T‘ï±ðT =‘Mñ(†
-™ „u›_fâí´z˜¸£Ñ¾ã“ÆLãz`î¸9ÏÔ%1YWÔQÜÈånÌ$ à“$EOæÿàœæœïLúA!¼cƒéù¡~,'ÛÁ€9" ³ìÞù1¯N§2s%@›Ã®Hñî.ˆÃLÐ#Žž¶á·˜fÔ¶ãyù6~•iCåÚ·â­ÝÔ;TÞ‚ø â_Qð½ÙôŠhŠÃÝ2.MâÃC`8ÓÚÔÊz€;F¼"mm` Ò¨6ËéÇJüzB®eîs¸à`6øëÑ+Ô^<etvR¶À£å Iz"£½µ²Öãˆ|ð_…tûHêGJ¢fƒÖa]~¯•Œ^°5ôÅè'©ÇRc)íô+n02Ùd!É$ñä\N£$†ÙnZå²|ïšGK¬ª‰Ó®ç€XÐL\ãz¾¡ , új<=Jâýl˜Ê2®µQ=-‚²k%3ë–(˧>H6ñ4îÝÖÞobâÊm]gF{“m¿iõaöø
-[:œÁp]gXà€^_A<×M¸…¼aÿ-È$gÁ²R6Lê6…´YlKŒ°‚rQžKâJ¯bdlRtYUžF9—ÜA¤B­ hK
-îì܆B—áà/
-²d¦º:ŸéíS}¥ÑSAd¶£$¬­9›S¾„øò6‘G!úJõzô%—‡y¸Íú`@PþxxÔb(eåë×Ú
-€Ò…(ÌK r -ŠˆrW>k#3œGÎt RºCÒ$¡1A¦
-Jº–<#âv@R9p?íÜ Ì©Ø‰UìQXŨP§ö&CK*mHïÜÜŽÉkššOC+„¿uAx=Øõm™<UÍ!_N?Ń“`¾Êy#U:Z âK‚"•lT<ê=„EjS€.õ’ #Äíª]‚>‚2üÛ`ä¦VÂ"‘‹§Œc]ùž³Àê°(t;%Qñª$qºß]d«jE×A>qÊÿŒ—I’¹DOÀ;ð4ÌúµÔ9´jÝ«ç/v~¤usE«ò1ø@DbŸ ~ ”£^²›y#‹@ ñ†CÒà Æh¶¥
-pPT\Õè/@Tgœ©h51ê‹)mvý®L¿kÑpÒÅL¸Ú± Bbâ’2Õ½€€ÇÖƒZqîÌš"ÑÁ°˜d¥ù£ZÖ
-VÌ–pÞÈ;ŸC×ÃÐgÙî&·“‡AïXPd/\öFFðF8äav –ó.'ä\;V—>¯lÇЄNÉ.Š8ÔFÇ6^§`ÄG†}Ò£pëSÆ—ûk«*Ryh[q‰çÐ?*jǨ2Œ¥=Õwý€@óžò äiÖ¯ BR›ÐŽ<Ÿ3ä¡àÚ1ì'>•)†T¶¿©Éa!^¥ÆòñZ´ªÙÄMÌ?¢[ØÆtH°'/Ä,Îù gÖ³Œ€X°]Š Ýß-R‡=(ÃaI&ŒcU.šàW©8ß:r‰%N;Ëœ¶s?†®¥‚sä3öâ̪HDE·ácÁ19‰g…›7.¤ºKŒŸLkSû(@ä÷ãs1¡.CÐB Ýzrxºlm-N«}»»uq3^tyÑ—sX9à$¯([UÅ©9£`öãµðë'ƒÐmvYÉ&ÇU»*?ðì]ÔŽŠQZ^ŒL&–æÇQbxhŠã Ób#ï× §cØ!%NXrñvU¥Áü‚‹úG¯<Y¡<öV’ÌÓÕê؉žüªŽ `C’ÜXȃ|vV¾­%®BA¤ÚÔ¯äu…˜b¥jǨo:›?‹I7F† *oL\Î.¢Èõ/ X”§&:¶Ìñ¡Ÿì„0Ö¼€þ|ñÁ°ÒH-¯:<~A³”¯+Õú°« ŒcÖš:ê•`°}éL²ø†4Ûº)ü„’w94'lȃ1‚{ƒj¡.Y“¡Ü6üc$VJÞ7!C˪;;£1å QIâM Ä œÙ€`¤s¼xÓLL)V›¶ºéšÔ»)âÆT
-º‰Ñ·sÈ
-ˆ7¡‘ÃÂJªføzâߤþb $ÖæøzyE™‹Ê­ãeÃÙëâž@³ke¼PÔ†å5“›ØS¼1âIÌÀK§ î…Ø&)\?gtȘC0¶©^Yà!B>ÅTõ'ÚЮ
-¦žsÜÚÕKý­'“}C
-O›Z¾g0x 'W D¹e9AJ“ÇC®ç5¡í[ƒè×}Ï•a„Èžäš}ÜÿoéT
-Mò‘# (ÁRsÛIWì
-û¡ÊÝLcña8‰ÕÞçå4båú™uŒ9ß"O_Ã{$®‰s.F‡_?¾–¿›è@ùÜT˜kî#D6ås;}kÌ“Ÿ“¹“R@•Å!XK>Ò™67™2(I "¾½€Ëùoe¨žjÊ×­ j¢"&”,Æ6Úß@¼JꉟÝ^¡oHÃ줌ÈO9¯;ä9ƒ7V|0é°7Â|‡Ñ
-›§öcúfñÕ…sÛLÕø'92[•Í]óÿ=ÄMß †…ÒÍ•ßÎa“ª4bÎ"˜‰ðÁ@Kén¹– èÏtGÌö¬Ÿ/Y%\
-¯Ïj‰ÌHÜôÍÅ9^Ƥ®Îâœ9ÞZ_‚ß©î7¤Á}°(–­ç˜'è1Åþ¸éïרÿçGþù/ ¬ÿ /h,³<ñü…QY æÏÿªz "5p¥3µ‚ôˆºØ•¹”¦èÕ®± C!²-ÅÑy 0ù’ ·lF@3(s“¢Qà+ááe宺Åî0xó\… `æØ’éW5 j"#ŸÌE ㌜´bv_÷µH§«Ó{ Ý:Pi,ÞB|ßÆ99œ–:²S L0f@¶&é“ÉsHêtB›ÔL&Æ/h2i«0ý窌]÷×5Äï„°òùbL'ÿ&»î¤,||Þ_ ò±,›5ë¹ê Ô”ªŠö ú'SÛ®šR­æŠ
- n¶ž×¶s²ìEù€ ÔP\‘Yœ!*"îQ`%‹¡Ý-®R7ycEJÏlabù–Æ\ûUOª&Å*ƒR¯–¡&p­í¸¿¥±S2vbÆPT‰Êøþ>j–‘$ÔñéÎNðÜVŠXRÖoÂÃJnɭІ‰ÒÒx#èò?ÆË$W®c¢+ð¼!ûfì©wñäýO}"ITu³ðeÀ€ôÄ—™— F?TÌÜÖ#Ú…3õôòMÏŠªÓŸSܘ?ËTÎ1xeÐÃÙyùcÀ|1"§„5ç×
-(Ì^’e5Q"å.¿©nœ^Ò›ºa/*!Aß4Ï9r
-,#åÛ°’"b‹›Nû´\-ùÞàód
-뉨v9¤Ë-êb¹ÒU#…Ónq±¨Æ±*DŸ[>þþR‹á ªºYâ¢ÏrD€Sµ1•ª y=
-ÀTóÊ£LáYtgã¶oøï/Eà‡ée‰¹gXMf•z3¾@
-!£ŒÞŠCgëø˜y¿Œ’­¾c#Óñò·-7?¤¦-ÿt²¥‚ÿß‘QØq!.ŸlF…"k<qÝÝ<ú'§¦-Ë52Ì{& CHS‹`1”<h¬o§ [{‡œ\ãÉÑsÍŽÛ~˜HÚª†_…3 ¤cJx:žKwùÊ]ízÎ7ä(YY>¦ß§7Œû
-ÇD’ÊCöœ€¶N…b+v“Žîö¬0jÃCJšÄôvÜ2Y¥Ÿ/¿éU‡Š°2„0¬KŒ²‹”tþÅ
-—’¿þø‡»û]Ïm8‘ØïY¦¸ jþ{-ÒB¯Ù™Çï3õ[·a§Ðìrö7iËp&SûàÞxáC
-´Gø
-cÈ3ü™¸Ú»¿s=& bÓJ`kvZT/ﵫXË— @䶧@ZËÔsŒd¨HÐ"·q
-S
-€*€nDÎÌÓ‡@òPµâ‹@ï±"4·Il=H²k2PD<Š{L`%ƒÔ´˜,õ¢£C2b¤gÍ‚ÿ¦fa9ª †Ã¦ý[EÖïç·¢_ÃÒµB¤&¿]ŽÕº–|¦ŠkÑ»YU Ù,1¬éÀ"¡9Y,9¬ ‘«Z.Éïz±‘Kb_ßÎÁk£x 9§/%%É™"1³}¹
-ö‡ž;pi×s(âh-L¿•ðÛòÌ'Ñ0°cÐx£ùõRôÓ‹”AñXðéõ2Jr§ñ
-•-‰Åd q•§žÁ °>µÔûü)¢Ó ØÁZÃ×ëÏÝ{Óp)aß?€ ^VñÍMRÒd©¸)aU¿¸òCn›(Ä÷öoçˆèˆ{˜çž¿|U‚¹Îô°Èo&OWeÖ›tÃÑÐغ¡š¸€hŠ&i.V›
-®è¼„Íh¾ƒ[6*ÞE¿ £ˆŠbòmê
-TÅ…
-óÜ6ÌU0É˲‡ÿ^'I–ÜF†O ;ô h™
-·CÛ®uŽåÆT÷s /æçkýtFüöÉ|¼‘ÐKÿ—:Uýú÷¿²?ÈÒ§^׋ßdù?=ȺKuÈàþ¼%„l!׫T~lu ³’¢ñç¥ÿÍš
-q=«/@‚J¿%ö´f
-zj$$p./i3¢yÝû¼J™€©®¸îÅØ̮ǚŸ»ŸCÊH+­½–Ëþ®ÛÒ·X²ùÌÂ\:Ž=e¹ÕŽh¿Î ,Ÿ…šIìp!Šäñ[i×rÇßì<3¥9Ó5ZíD 4 ÂÒíz=‡2iĽv©šF -Ýo¡x†NÝ$’wÌo
-Øì¨$ÅÚ°’p}°ÔÀO˜¥îÓ~ Žä‚~Ü·ã çèÒC¸Ž¹+ÙCfˆá×1ÇͲÖUà\‡íY±–/þ®“O|‡×²´º
-n5U}qôYxLþ¼¥p[RšZžöPרÔcSñݾÉܳÑ5NHõÎ┈#óe¤hDtEÎ"óÑaÁOÓ;pü=ˆŒÒì†:½ÿŒ
-@&w{ úûCSÎ(—o.œY4d5ȾN÷|zdï¼Ï©IŒÓÁ–Ñ$põÔZ´é©©8~ËÈ7«g›Ó +èØ=°Â$†JÈ”<G„]BmÎøÑIÇR¾’›m ν…–Ô}*-:ëc¿/, ½ÜФµc>Ø {]QŽkG£8¼‚Ï㧶Àý¼ªA #Apž:õ:ž›tþ¯A‘šëʼîó ð:ã®ã«´,YpÛñ±L˜-¤,DåÃ1ò 5wš/–ðMEË$%Ò cå¨v»íX“uÓœS)dϘÑ>6s“„‚&þ¾f„n4 ¦bßê›|s Ñþ&¸h^îùCWÓgz€› ?@Q¿»Œ4Iú]Ò'c4};T°ò´yÙo®GDóNú”€Î+y{geŒ¦P팻‘¶Ù~ÎDé ílSpJ´Dnî}Øü–ýLõïóêw™fb#ÃcÕÓŽ¥ä×|HYè¦*öŸ°q„Sò;Y®leý«¢¸ï{¦0[B«Ù¾$3’Q¡º Ú;Z¯±½T\Ïê#ƒÀ‘çØÝ^VsTk+ä;Jý’…ÞbãQp}nŽ·™ç¿Ê
-Âè‰Ô9á%_uzö3:ô ¿>unfŠŒPú¸Žq¡è"™š/-ùî¿™…ÇúBæYÔ ²ÀFµ÷az XÂû_+Å6²þu¶çuì¾…Œ«è»î²n_PñýœÔ[d„Ž¯Iò¿>~ÕSúª!…÷þšzcG|Bêzð5ÅB.âL0]ù©Tè]Còóª—‚ï-'
- ÖÑ´äÙ_Èn\d¥ˆÐ¶ìo¯È KÉhí–üæAo!𧷛µaÌÏ ì%w0µnSÓùgÔ"œh|á4@«¨Ï‡G OøŠx´écJÖÇM¥öò¡ ;Ù‹s»1TF—ŽÞìx ¯×Æ™Xû×P¡ x?}ÀÏLˆŸ½jô{Ξ£ÆuÖA+ª‚æ
-<õ&>-j”J×Î÷ê+™lë&Ì|ÏøÌ=—'ÙC¹Æ •o€œaäOáh¬AwÍù=m
-ö½ªt¦CK!X­~!ÌW7ð ˼êG'fðqãá— =³C ¯ÀÚ¶Ì'6´5jR꜖'Å)Èå’¬-Os[vZTfÅ¢jׯ·•".–žÿ/ãe’ç’áø:ó°v/}‹z%ßÛ_$Iáù¯,<{aH¥¨˜d Œ7&î)@ ±XGš$ ?CE—€6AÒ” #i
--0#Ъi˜.ÅÔÃ…™ÑAvUe{ozY#&
-HѬC.‘x
-Iµj:vØF€ð`8 ±<
-«b1|•¡"aJæNÛw¢ôÜ)Ó@[èUŸðIžâA¶’'=7"Óò =¢±vòÜä•+nÛ
-e¬f•³³–™†ƒšGšoNsl6Gæ··’î.r-?ÞTg%ÒVGVZvŽ>BÁ§¸MudKý4$ˆ5UR<•èƒÍðb »$¥7ÛŠpˆSÙܤùÅÅJ42>m«­ä)¹žcÅ`ñ£â=y4}bÐ1“F‰}„Z JŒ™éÓY ëP)Å(Þˆž¶ )iãŸ?n Ç|þ: œ×PM£¢ÎÌ ˆÇÆ(}½‘„ap÷ú¸CHvJ©Lñ~ƒÀí'UF^í0
-LL#œñ_ûÞé bÔP3œ<öQ„QÜôîý4ÙC%v¦¿ÇVxÓĈ`ͦ*­ž5k8|[‡V£•yéZ¢)c”xõò¢Ø£ý™o .Ù¦Ä[ÿdÏy fVÈ%o6#JRMJú^çydºè˜¨€)õõꯠ—^ χx…\ô ¢1 ñŸRíV0_Ã
-,o‚Þ“ú‚®cK‡”¤[Ñýj“ŽK÷êð2°Ê”aœglÂÞ}äºVÁP­
-º7›KŸ’hÍMd‡Ó2™‹ÖžW603êSÑÌ,çwQve¨g|ðqP7PRbZY’ÓÜ<Aís«ÊH3 oœ+Úúæ6hRbªµ¾Œ-ÂVç™-Ûqh,Úfp  wÀõ† [5Â0^ÀíѨZ!–“?K—µ€©Âf};‰ó¶ å–id –O æ,ˈÕnd Šá‡\ÂA4¼¤À½]i°zÅ´ÈH MOír+#v"Ñl ,:›Äe˜l£w&#«Ñà¤Ø
-
-HÜy¯VÞÞ'%¸ãà«b#X ÷eí‰âñ öõ@„ÐMúâ0ü6ôÕZœúã¨éyËá£òô€ oŽµU#ýU \¹ùªwáàUc”þ´ˆ Æʺ¢,^X¦ ë­ éI_3+]üq3Aô7tÀ(wêmü0Qã®Õä;AˆP'Ž•©;C ¥A–X_./ýÇœ|]…ƒópbNt£XýÄ;ˆ¤üâÐdÅAlÞäaÒ]–wo)^fàŠÆvúN”sa|s)ÇÀŒÇ‘/F5ÚF©GŽ‹¹tá•{^j¦í‡‘>¥¢¶È¾S•È¢˜<Ž×q ‹xÞ­Æmá`ŠÊ>-^Ѽ©Iš“+üÓ…×Sâ¬ñoòì¢,ÆdÑV+¹ ‚ $#Xš8ÛÄ»‘ —gT*š0×r7A/ë¬Ozwj®©¹oEo’)¤>‡eÖÙŠ&¢ìÑ ÐsoÔâ1»¿à¦E_±IË߉¡*ÃWó¬3P‹ª¬·>¿ TÿóÇ£wãסBšûºc¯Í¼¡góºˆM°”ƒLÇÆ_i¼¶üÒ‡¨ùmzÕ«è>¬Ù*MËfˆÝÄàÅÆ/sÎS‰çž@Px; ñF‰ƒ²Àôg @ª“1›÷x„w®Œ:".­Ð•4Ú^Ng€Ð->å[ó€ËgŒË®g¼ºÌ?fnÌ€†¦úªZÃàt˜ÜÃNë±­Ð(c9âÞuö§ºPga¿×aj'.¯
-B—–Rž‹x²%@¬ññ…Ú þ†Ö–`«L1a_Xü7Û@/ Ã$—êÔõŠœ§“.„¦Éâ…ïÛƒ’_ýû¯üñ/î+ˆ"l@”òè—LPˆëãŸ75CöŠ®Ø+-”B1úÎÜôý…ºÕ3+!ª’«øâðÁúà››òëétáåBÈ
-W’¹´Ö ƒ€ñwo„±zK§O#}=™D•ÿªÊ`óbݯ¨eèÛ¶ÞGü?`—v°º©ÊŠð ¸¶þµ8"+è“ïov‘IÂÜ|o,Ë°¦ÉH°9Ig¡m%ç*0‘Š€ÖË~s
-f ÏKÔ%8·¶ƒ6EÁ ^ÞõYq.bÀ<¶Csŧd} ïCŽ¾R/‘½/õ 2oµs LzÉÎ…5…¿l¦l*’ó¼Á È”©˜e3 Dj±ÍeyF¿G²³hKHYYWáÞ'°ô6F×Ç!‘)“H½f±X{@¯Ú¹é•³
-×éHçQÎÓ
-rÄNW8my ´M×¾R®uÉ”¾½¨a÷iy®ê
-•²°nÿ¥¹d^d…xÒCi|)q-'CÒN@Ïi¢aä¹o½û«’¢×7Ýú»‚"ocî{´;*)<Š’4;à öíÁö’V–t%œªiׯ+àã0×4à1èË6þ—<µ%áÁêû1ê¶B""{ž¢UfxlBq˜oÂm€KœI(šuœ·»ŽH׫´Ž_<çl0,ÈÞËÕˆ_šäMTö]ÉÃÞEE(Ï2Vûœ3ºÙˆäÚ ×à±r+~Sfƒ#¶jÜä@âY]Óó‹0òH‰¯\…é“Ø Î†\˜uWÔšœÅM§“E…²Ð5šJûºZ$Ž¶Yo¿ŠÉ±X9Œ+ÞRœØµsäÓ UÜæö WdÑ:à"JZ‰í%âV1U^ ·& 3ùU‰ü”8w¹‚\yÖGfd£°•àosŒÎK‰Ç þë“F¹ÒÖ
-ƒDXû~ó+-"D‡&Š¬É«ŸYRÂd3¿ÔÖ—/u Ì}?*qtfCÓ §UäI½„Y¢ìáŒôj&ƒþA¢³Q5ê¸MæA¹’-ªùèÖ
-Ǭ
-a"t›öoeÒ%-‹SÐP¼»•TÝ3Ù%˜Øƒ2H¶EÆ:W ĉË*×]Ç4ª ®ç*¾®“ûdo¾äùž 6á0JôŒÌôT¯9gÃPM¬p®aH¿ƒãñ÷ Ž•åàÿX0Jª²àýt­"­„Y$ZÃJè7”5dúÒ
-J¸jVîòDðÚˆÎY§;üAÞÀŽˆ)©6¹qJØÖ®×%–ÀÇ0 `‰Ã¹ªÛRJ¡Hÿ*ng)+fL \\M®[Þ§ÿ Y>Ai¼)ù@»êQ4>ëÀFÏÑk¤éÊ_dˆ!ü*$*EhGeÏUî@††À¨ly"õXÞ‹«ÐÚ[ÂÛ€%ÖÃe³bÖE­‚ÂwPb°€f8hÉ蟹 Œ@¿ÿš‡L=¨-†À¶ð†ö§ûàÏMát8»æ2.Ý‹”øp$c؇†W¶Ò_>%£
-꬞ÔD{}ðdPÛÎÊ<HauɆJ_OkÃÕ|ÛG´åÌŠ•Æ.0¿YC¶ÀÄAÈTfù bq„‚çUöä#æ.2nÁ1úkþþ‚.t‰OáYÄI>$­ ôŸ7E˜V¼&ÿÛÆô”à‹äö=îUa-Ê)Ïà&š y qÚBÜèÇã'¦üÒ–ÏöyìÄOÉTÉä+!¸»Dçe—Îà9PG7+‘V†“Æ-yxÔôY“…:D¤]ÅýéQÓ§|ZÕÀîõFß=*­ÞZa4›Ýš±ÇÑ©*oDGàQ…y½tÐÆxËh•EŠC¹-9:Î(r÷ôaã ¢Ç@N¹Š ¤P³Åµ eYø•õf}&¥9Ñ0ÌA‡÷R•eAK8(jH$ܼ8‚SŸñ‘èU5@ üôNÅÒ~^À§"îLPÓ¾Ùæˆ)Ážò‘YV!.yåÿ°¨ÚEÅ3½CÝF“ö­dP•àL¹f;
-lÌ “ü^¾€ø9&£Ø$ªÁs:G¼LÛ¨:á¸åDÚ.d¬„¢¬˜¼2Bè™*¶xÜãøöÇÚòcþ@£$g›c˜Ã¼F«—'¾Ûœ?vçC $À­œƒ¢ßaÑ#nìú©¦J“™õŠ‚K\ô¼#:ewZSÝ/“äJrˆž ï ¤3¹Î^Ö9z¥ºÿ¶Ÿˆj“>¿•V9"€Ã‡öã¢ߊގì}ܦ>™ìòî?«P†Ëd*™ŠJ.müVôù“^ÿȈnî­6‰èÔ R°ÈRädÇ=]‹ðÇ
-—BC¬Ãº‚ï[‰Ã¼Rùuõ[‘6U›`oÏcoci­½äTI­xcå)Ï|†FYã&E'ƒL еŸì› ¢òÛzã:é
-I(`!ëZ^õB7ÓŽ-Ek}u_8‹AáJ—x¼i–¯Ô7Õ+ ¶w…—¹2(?ßr@\îßtáa9b^²EUoJ¾ðù.5S°YP€à£Ø˜$O(©b~ é¤m¥CøVãk®^ *8–%|¨É! ˆŽäÝåiLÇäM¨S—Õ`±kÀÔ-%T_·Ž"í‹lâÀaSRP}²†È«ç9ƒ .xÂR…R%HHê³6™E>Î5fc÷0'4v`DQÔkC-":Oïì‹~¼¿ó.´Œ§¡ *ÁÚË;‘=“÷·,š¶¼ =â·€)µù`ÃœÒLžÉ7©DËGî$|
-9© ¦ìš—ÀQ4}KêÂï³dK
-´AŽäðŒÃãY¨uíz) Æ"
-?×ó¼]X’vÌ…SÐåËAÏÊæ ª‡Y Ê…‚}¦-˜uc‹·0M;]¤Ê-\«L&øDÚº”.ì)a†gA¥ðкQÎr¢…žð8I9|îl©Y^Äc°²äH 6†×`uRŠh&JØ|†3Újd£{ MC€ g”W½¶Bΰð‡·B› +ŠG÷͈½ä«ZsÕ„Há–%“Ðjœ³hKÏ+S†Ä BI±q'R‚3j\é$(nEU<«eýÍ9_¼ø½ä‹(þyóU_Š>¯ö™ïp Mœþ÷J5o¸‚láF¨ønýêiÝÆpzÎÕS’%‚¬QBRÒ‡VƒN=>X.™€$.Ñ(KÆ“›K[Èh<„S.%a–¾ëÇë9BŽÂ€¢=_#Žé¡|²2£ùñ5¦ èï™Êp„ë
-»–á‹x¶‹Íwi`×e°ˆù^ƒ
-» i¤©%¡‰>¨ƒSÌû)ø$ZNد‚žéK>Xg¹ù;)‘9©BN“•Fmí¤­€}—}SòÕÓÞk€#BÇpj÷î½¼E.\"ÁÍP»—oÂîÓEZ¤2¿ ÁÄÄK;53
- ÉÒ  JpÁ¾ï[I‡ÉÁwLgøk”tØÁñ§G «CŠ`R~¿
-thùî¾3[HBÑyÜ÷p53*‰æ´šO6¥!qäc™x÷"™Ším¿LÕ’Ã/iðÄ †Åcû¢ˆkÀß_Âmhˆ•²Æ±QT jbm
-Ëp+1CLÊü¿ŽA@Å-1ý|y9ˆ8ë9Â2LÏÁŨ‹ÙA˜¡A¤8ãù®V8¼fDóªÑÁÖ[¦6gŇËÌsYˆôZ¢IÖ¦<´Vµœg´~­
-î'í<¬pPOÚîçˆüÀéQͨ.±T‰ApöVâ°‘á¢mØâ
-.n+Ø tøÂ!_‹S‡¢ùöÊWüõk3›Z1KXGš?~Zóí²ÏŸ¼è/=¼hýMöcʹÞ~)zy”ä}bH›ý]?­y}ø¿¿H/ÿùµÆoÈW¦‹á”øÂm%(uðök ù³`s›öñƒŠ‹Ã‹ÔóåbèAUG¼áĸ™ô §bB06»ì*cN†q`,ÈlÒ¯¸–_’ÞOÓDûG;DVf%Ί׀ahEFbë…?ü*,¢6•'õžvÎ ¨RÍÕ98¥‹” ²¢À1JÈ?*1 ™‘÷BfÜÄÐP(-b©¥r÷ejõë‡JØ[~Š!ãf „„º³ [ÞYÓ1™¯~ÑâÃaÿÅwöu=…$)ðs¦RP d Iar®ùI—„€V¸©Ó&úÊ«¹•?åÃX¬&%Mž·Ê1Ì’%øÄ—¥G«½¤Kp48%GÙË0Q&;WU¾K-¥IþŸ‰9 Sñ?pÖt'j@$ˆã*ÀÒdq»áO•däæšr\~­…~Q2ܳ£ò³"M’œÎfF‰’.K8ü°÷’¯Éæ^#žÅÖ‹8×"øYÐ;Œx
-vä<£bø²ÿð…%ÓinƒÍ'Î|°ÊÊ2úȈŽHÁ±³늾o%~ÓVüÃâW)êýl
-ѾÛzs&dƒ‹BûÈî}ò*¶{¬QÖØ]„¦Ó<4¥eM²¬|ÙA/ëMØ]Ò-dÿ”;MÐ>؆~£µ–W½ÐÍôÓK\ý¸qƒ"à‰ nÍòÂ}SÜ‚*sÆMåç[q¶ÀW"Þ&Ýeš°{Å:—ÔšˆŸiO[ÕíÒE•ÿVîÓ:Ì„M­ûR$|±…J;|ã?êÞLärº¬zj%ðÿÿ`
-H‰Œ—An];DWà=¼ ´!‘¢$Ž3Í.>Ð#gÿÓ>%éø¶Œ¶ƒŽ]O¤¨b±Ø^ÿ±:ß{Fó6|´f¯ÞF{/}ÖÑb¶É×EËéÝ=f¼†¿§ÍlÖgò×7$Ò²ò©Q†³V¯kÍ(­õ:õÁ¦@Nh1fëÙslP3H%PuJdãS¥äµn„ÛŒ^½ò½/HíIœ´Ù7Äjሙµø‰ÔÚ°éU´Ø ’î£{î+y¦×b£6/ëJã=»>×¹â\Ùø(µvÎVrC¦ÍÂ2ª½~©xÀ;ÉTnæ}c†E Gï¯aàÜŒXs´sN¯¥D­“_‚ Ïj¥Ìì}<ÙLëf}ÌB™ñ ¥ ÷SšÒ²*åè%öSFŸ½Åh£•qŠS½÷VKoÆãÑ!œTZéyΩ³ÌðÂ[× +³xmÀ
-¤L*¬éÞǸïºLuØVþ>Tår¤˜ü 2sÖÎ
-j—t úPêJYfB•¡rx€Õ§žĉÄ`gñ ‘1=G›ƒœO} ?âáV$¨#Ú´R‡ÁÍj >
-’"”I¨už’KrCw/+™sÙÎÙcC ¼Ïap8r‡j=ê€Ôæö°lFrM.’ëœÙg‰V)ͪÁXYÚ7¸WRÂ8¡¾‚ø> Å‹’ñÍ9Õ$Ò¿è‘hLnµÛîêï™âbéÝDt TtxS5¢ˆ'Š^b…ŠR§ÊãALÞȉ†æR\0VÛà+¡öýH×OnôØ¡wêü®¥Úûz£>o¦z\±9ά!Rö•¡jˆóP‹nA¢8œ'_ÍЋd—ªŽÃPÔCÑ@ßmGí”Rû9†FÔµÒm+ -†RrK6DŠö‘1%)iˆcã^WÈ
-¥ž¢s „¼ŸCîdËø·'›¬õA„ÖPàõÕ-bQ=
-¯̹%Ih>zJ0uXÌ !?t® /=?ƒ;3 ›ŸP(e«cò^Ãw(k°aÀR´ ¢±Å€\’Âh12¤Ð¶îL…è<.$°ï hœH«ù|}ÅÐ+L9K\åû’ d“°•VïQ÷åNâZ£¦µP‡s'&<ç­IÑ7Eb)P¶5a–
-ÎŒÌM- ®¾3õg¬l <WíRmCø
-¤èUþd.õ“‘)t´ÛˆI5™A¨œ×̓cf¸癚PÃPDº^7È^ 1¡ö{NyǘàJ©â  @é‚yeRDÙjˆfoáÿ<>a>¾Á`Aƒ“¹zB$\…Ž±ÝÂQ
-†±ö¿œ)í¯Èµ‹=·®Éô¦7c½3?‰Ë…¨Î©"‚ùÅ^´þÄ‘’ 3;¡Ì©g‡5ÑŸžâÖ²ñÛÓY®¹Â0üdC ª33¼]°FÓ#[ÛÖx2¦aå7µÃ…Kñšk îDâBþš´ËBtuÒâ¹µïSëò’7qF-GýúX ØÙ­˜»žÓyîÔ¬5
-ˆÆ‹æˆ«ø­6@&/ij^?iIˆëNÿ¼]1Xh†¢ñÞ˜à+BDÕ`eÇêwFëe…ÊüºÅaôb²L¤§9÷­¿bB-
-Éy™X‘Z—ï’ôÌA”³…˜ëÒÚˆR•´ö×5»<(=ÆËí[Ã:æ#Sù; $½Du9*vñ  ‡Ê;gwQñÇ6ª-sI¦VÑ£žSœfffbÆiœ²•’›vÖYšGT2:gy$6%š,Îzˆ€­rVK$´n¡l4b;[‹ž,‡ÄÆ1Rs­gU‚òUšÄ¨ß[Ý€o…÷ñlAèÙ¬ˆãdM eMõjíùõöß·QౚŠŒ˜÷±)
-©‰ƒ²Ž1_® c脘Ìø‚þ¿ßFÅDZ¿hÆpýü1èS¸Ÿäô[©_ÎúdÆIÝÞÑ22 _Æôû
-
-ƒy5XW¿õd"©¤Œ¶RÃ~ úîr¿äXNUR^}‡kÇí ÜAŸ¤ê»‡ù¬gÿ¿âz˜ŽEÖdäíi×>.Yý¹‚¾–3¤ÌØI—š?Å|-ý2‘ UVô›:]@_êt‰ö3 «€ê!g”òŠA·p˜
-ó—
-mAð2[ÑÑb&̵øl/HjAÄ i¨o<4\Ð|ñ¥WÙ>…Âì¾]#]R«ß#g.¡Eo¶³6Œ!îA[S Í@&c x©ijΦ] è\ \ér›†öŽcb“µå»@`ÂåÎ}|«#ŪÂZì
-‚Ýg›ê÷ySà_o7¿3ß™@4&^ìü ÕÂC2jÁ(a™²c‰é‡X#VªG¬‹ÔÂÜÞÂp4ƒØÐØv1ÉaÚ§= \&GÉÉ2aIqŒ' %ÆÚ÷UãfMÌb ·GâþY¡x€¡ðøËû9{`â"á¥]R¨l S½=¡à=}Æs¶J„Á,T\EžÞ¬'ë+;¡/ŽrqŠL­8þt¯ól E[¹`Jðì/D˙ÞXË‹d”Ò¥ îú‘ ‡|ƒ¼G] L6TG>Ÿ7jKûã­!  H9:™ðX2øx'Á^æ …Q,°ûú0‡å5ÒI¾:’¾;#æRŒ‘læôYfñq˜J¹[îšßèõôIù?~2°Ö\[Õ‡…éÎvuG® Ì)ÁDíÛx±Àž} ç5¶};9MD¶j{¥ãºúo|èƒÀ^2›Q,¯ µgCjèyù‹¡ zò%|uÄžÝGPg»]ü‚ôIYÃó!RMë ¬$VïÇÄjiòv–<Èõ4\¤§81‡¬iœuä%ßIé²MIÐùjð^ë˜ëD›ÅVËDvYf€BÝDÛÌ< ¦^•„P“ª2Ÿ.ÒQB^zõ”Ë›+Táuµô~ÊÆ
-öŠ
-tý9ÔjØL‹ÕÏΙ­‹ ëÞá°Q£)áU’F.îy^ê7½,ÑôQ±ôžºŽkZ7¤xå‘‘«?ÆQ{ð;q¼¶‹¹bpùƒCQbßïÝÄJÝ^¹º‚É.jhÎ(áfÈóÆ¢- ž¢ ŠË0æ»0Cç… Üð¨YñsâßeôV£¤dKØؾ¹â+ÂiB¨¡f‰ñ0ʺ¯X÷‰³Ä­ø?aHIßä× ™yÖ±Pj%> ‘ÞÛy-Å\QÚ¤Ç^kU¤dt½bñ׶¢­Ný™¯ž
-qÕ ª~í÷ èÃÄ´ÐN’RÑVôOß^û”6=Vÿ”X7Y÷Ø8›öš3;,…ŠÖ%¿
-ïSq4?±ýÃÊø¥d¬Eq—„¹ðtYg#4{t¤Ü÷ê2ÝBÞY¯6˜|ý¨n,™¯ÓÎesœ\¢¨¾¡Ë÷!ë,ÆÞÏöø¦ÏIõ¸øÝ/¤Ë[[MÜwc‡ˆ³¿ºW°ñY»V,a´ïZÂ/Eä—†¶8”¶€±’DÈ‹%ó­sµ ë’¯ü¿,‚íJÔ Wæ6È`!ò‹Ó=lEC´’†2H #|M©Ž9å·oPš£Ú²LHd˜Œé
-’.}€Wº’´„Ħ~<nÔIµIñ¿E¹¢5Óx±´¦u×ç ãÁfþ‰NÁOä9hüýH£-9]=1l]0igáˆÞ±ß—À8`þÃ5íäÆ6ŸAy˜”ñýgÈý«÷ÏB‘veßß |Dˆ!F]AOœÙVEч*ç…Úëý3Ïür›[§` Bøˆï…mø?;#Mà/½¹É¶%~Ú }Ñ_̧Á8ô¹g9%z×áŒ2³ Û4ˆ‹®7‰ü˜°y2*HVy ¼¨Â0+*½ê^
- ‘ø­ŽxÙÚ> ý*àŒ¶ñ « ´’¬;©8ºÇ¶°k¿çIWG új婢*|FØÊ?G‘}æ¼Âu}6ÅÛ,W¸¤åMV…¾
-š$u0ÌÂ †
-„‚—sÉ5F&K„  VU Ñ6Òo{nbàYTP?›*Y­-³ ñ³tšg¼ ÐÇr(dëñk¬šŸç43?Š€‚9¡S›ƒÄÅnbÿ `cÕ/»+kÆÏ€,¾ê`Ö¿uàÉŸ Ú/2`lRŠ9ð bG»tÔ´sàoÙZ²?x®fƒ_Ú¯ú&¤HN-½fæ¸êÿ(‹¿%@2…¨À „‚ [Z„AüEO, KPî8 `zªèµ°Söb…rûúGAO×}ÿÉ›ìé—³žøÈ´S*Ú-´$ž#_‚þ¾=-A ¬f¤Ž‚ê]ôzÝ%¿?
-z•4KÛä
-Kí¨ l¸%ðÐ9  œ.úPdÖ¾nÍÈø}z·–]äãæô«>$¥Úâ*†l¥H¦Î†5NÔÑ«P$š Èà…p¸¥ÈR#„®¯…È~Ü’TQ̈÷PÒ) ‘cDù¤ôâœa%3F”Î
-ØÉTÄ1ð ï™ÈŸðSPjÌU]]ë'ú-}V4v´
-¹Çm’Hc½:ÍWÑð<aò›â½ ßSˆMêA
-„Á(¿ÍÉã94¶˜t]?üŒÜ´(‹Ø5ƒË`#+!Tìêdñ‹è”‰„D:‡Z€˜¾»%^¶[ƈ —BÚùŽT°id‰JŠ«^ÐfX¿áø NÞ ë‰æoÐ7Z8f“
-²E'­ã†"¤±¯xR6Ñ0ÁÊZ´7 †ŸR×)ÿds* (»B¤¸ÉšXµ8«ëifé+RÎq~Ž¢u NEXNZ/á„Ð’sKî1Ö<KÓTAyõ & ùîYÖ…ï
-ø?…FÀ¢v™ ή§0¬G°DÉ´q•Á½q•HÐcÒfäX—R"BÂr Wh};˜»ii¶ȆAU8‘áÔ
-MÁ‰¢ÀO®Æ ‹ èꢰ\B\+=‘Çë1f#àva@d‘‡Ošÿa@¨0ÿD
-Árî IkÐBR÷¨)(‰¤ ²n¼@/PRÐÿ8èæ™C®èr…ìy
-zþ„Àñ G·fõ«¨ ò¡Jì¶Ôý6Ô®3e>Z÷‰èñ>¦2•w!OŠöö@s(‡B–··Hƒ'ÉkàÚÉî%'Ä>–€Çr–M4PÚ›bê™{ê³›‘óB±(AnLašXt‹n»=F6§Jtºç!€'Ƈ_€‹1*Õ’ºbN=(ƒ¬p<6¦›!`ØéïMàI²BBÈî¢hÁYh$²O_ý%¡Sd‰àpùÓšÔöÄ5ŒégZ2‘"Û-»!üĘ0*>è %JUÇ6_˧ghdQÌ?ìvŽ(š¢#EÉ5súР룆€Ñª*ì8§L!S6ö% ˆÇAÿE
-ß(º(¯
-êä![иô¦±¯ˆôZ@)AªqÒ ½’1ÃJH£˜ð‹®n¥ƒ#ÅÍõæ&n M¿‡Ô?(‹d†–LB ,Áƒ=bƸ%c¦~€»€¶%† êr$så2F´1fY*¼üºÌSÐ÷» !|•uéwâ=Ô‹~!˜]1ÜBäEÐ7¿Y\h/t³%ŠÌMð·!Ÿí‰C% #‚jkG½ãMæX
-˜LÛ9ÝÌ'kîŽ
-‘°»7‚ … R;Bê,¶†ev¿ª˜(ÏB¡a.SKn[W'­˜9l/:Cîb­å£žcnçuÇö¢
-ÄàXA&ÅU©)s:ãáª)ÉñŒ"“ÐÔùD€²äÒŽ¦ÃÝhÌÒ]zùúøïGþüë£fl›&¥Ñjè–RÚôùÏ=FðÝ•Â×d«ÅXÂ(º" Uyˆ¬4 é›<`‚Þ½‚È%¦]Zî bc¦üQ©3bÒ¬JFÛ¢cØ+& cà⹚ƒBé‚è ªèö!BÚÂÐ5—n‰/U]„ÐÌNhH!ùÀ"ÖìÅÏ‚<N–8gÈÇ Ì ¦­YéD<h=!‚ŠZÄ•1$áJF¨¡é—¨Jʇ”z‰*•Ì~dETIQ:’{Ýñ\¼ì€÷×Ç-æÕZðø¿´p´#z9TL4Õ?¨4-Å©s§0J›¶Ù«0bw[ôµzo‘â›%z P<¦bÖ8§!©ÊBŽé6WUVs
-mÄUŽs_Üfˆ²Ù®aÔJ¯:œz®RE6~ƇuËMŸ?¼šb-jRQkß!C¿SqŒ0µ!Ôk3A´rÝÔ3j¼ÆíéÐn_ÔÛ¡Ýl¼=
-ÝÅ,¹ ü“®!UU Úu_õÄ]€º$ºŸ,Fs3?,)$Ã
-  ÓÈ'q}CÇ™Œgg°ë7”
-=­Ò'N£‚tGwB4¤„ ç;„9¨ô¥W®8ȆÀùXF\UAöÅŽ20ÇE„!åÙƒnz‹GmiÎ&ŒŽFéI\kC!ÞÏ€xTC}õ®&ê9”=Ȭ>â,6Ç9ÒÂÅd‚d›Ö`K1)œÜ–Ë_lcš‰2³LõÝ ÑȇAT]´þi>þb
-ª1@ÞJ ®Ríymǵ˜ð¡†ÙW)¯Ë:_߃
-'vž
-2„.èÿúêw
-—²$¦·£žtÅ_ úqݳ×}y¶^—­‚¥‘fùlÍKòJ*´,Â+·Ä})¢â¬ƒ@=©­h*ŠK q3¶T„£`zµ}¨B.˜ 1„˜ÜºU˜:*ÕŽö­ê‡Í2JN„
-E”C±ÕþáœÑ(zr–Ó÷k.Ñ4­ „76åû* P©x8WQQ攪å ‚ [”ºý. ¬î¤²+ºµ »Âñã빡豊 uCF, ®5åM§3üî¥%êì
-ioƒ ó/?XMÆG Ø´mÁø  #”›é ¾lÃõ¹ªSðM/PjP,ܬ„R¶:ìŒNÏHÿ‘ïˆ
-Õ,çe7g¢ñ誑!ÛXÎE"?“³ ÙP1ì&—B£¿ž,nGÖPJã6CP¾i¡A•ÇHÔ?~ýû×oÿü•¾þþ¯_¿ýï©c2fˆæ:æC SoÊkØدÿ~rS“å,LÑ™ …Ú“yBP,rjáP :Lø¥Ý#$g3Iz’JWFð`ž®Ô­SÅ`X÷9‹Q½Hÿ„x.ôװ6ì;Œyö5Ä«°€®pmÄy:®Lû¹J„òøB˜ uD>Êè)+&OÁŸ6+¿W‡<€¼ýcŸB~ô*®z *¿óø¦k0ò×Ók
-œStY¦<fEˆ¢¦G§¶¸êµ:…µûY¹V”a5.¸ª¡úÀäÖöØ«—3¯=8çurÞ^ó>Y½Oò[uÞ÷á­ÆºWn"mE4¥7‚cDKeSj:ðRu¯ßSPe¹–?›× ŠˆV—ƒÇÖt")*W…]TʲPAJøª^'|À)ê{'?€~@³¾µDï†4+ç*Ápeq™'€*'Rfž”#@;Pü¢Àéxš«¤mz;à¥@rIÒæ÷Í3Ü16Lá†%ý'€‰‚7Ûu];¢©hÔ¶¹DÚ±‹ZaMÛ}Þ
-Ä1PK²Cº…ÀEÄ~ƒ¦ Žq¸NVu¬ skÎ@ Nw¢~'7³j‡„ˆ<QuñàÓpÀ& 8à݈$ÀÚzÒ–{5,P³œ ¬9õ»Q‹WÐȪé e—p–®Ãt²ARušÄŽ>!sj;›)‰ZƒÚRðÑëœý±vºZF’G—mÆE™çÙ©,\m£,
-=FäÃádšYê¸é=–c}g‹6‹Q yVNñ\öPpL['mŒ&–o­ß,?`4·úáÜ«%!ûq«Žª@t¨òק7È#@óZ¬«Š_Õi”‡‰¢`oF~<[òiñš óº«ÇÖUúÜ•IŠ™#Lß–&ìóÓ¼
-ëY¤%þ„»"múu:ï†<s]{º[¿GÞ¤™^úZ;þ#H™è uv>²yïŽC6€c=~@> B@mý8Η’µx•õÑQ5‡»se‹ÓHIF¿ìæ"c#ÄÜñƒó$È¿
-éÆóú8¾B •X<Îûuö˜ ¼I‹Õ²›’'¯*KýËÙ%ÜgÑÆ]¬5. Ú7`BNŸ7E¨Ü„Sp’Ihê%R €¸?‰ýЦ™Dv’+j‘-ŸÒ$Máj¼V Ð31¼Å{MêœÇaçЉ")Áì™á>@nÕ?VÂâ
-)f¡º/”KÅ0÷{™§´+R<(É>uÁ…ÔÊJü]¶½¸€K"K•"ÀíT¢\@‡³SvKÿ-’?
-Aír3 Å5[Á«H|3¤F ¨ð\ö
-v©·èÃ9I>(HœÆ¾ÌPüµÏ²¨P© eâ¯s\%'Éä³Á†2ñS«¨y*âe kMù `Ã)ÜÚ›ƒ’ó€6£!ü+ô³’ %0ô _†t‘*Ÿ˜«{5˜qÊœ%Ùã‡==„
-Û-âu“í¥Ó´5E°èç «š”P-*Šž´Bd³[¬Ô¹=B!K@<% âá™VC,ÂsbÎ0´×š‡Õðθi-]kÔd<œâfdøÓ%™¬Àï ‰ %¸hžŽA€õ}ªÊØ8kÎ`WgârjÄÑ®<ÑPHô_%°‰ÓÀºJØ,6‡GP<–
-xcPÌš½/71 ,B‡¢ÇMÜ.Ò5]X`Ç`àÖ1tÅç0!nÀå!¬Dd‰µâqæÌÕxnÈ]a¾üéØÿ$1½9,ÖÏã²$J°­,QKjg
-D‚OÕrÊk²(ÀJe8;Œ½æ>á8âX«âii7çÈêÉ5ѱ}eo!7ð3üVŠØÒàc6ÐÙú‚§fÀ ‚×—ñuCÞà-òØ9ÒÒÂÊý:¶ÐFb³¥UÌ‚Œ¯_X&JýÂ*“)ÍP_ŠÌÅø8,C}*bCdE›–Ô>†˜“²0ôi«ìĸHöštÑJèí“%q#œÐz¬Lè½E¿Ï¡èw}}üD„eQ™wbmJÆ^­ýëØ6„‰}‹+’Àùðoû°Í‘j¥È6ÿ¢èi1>n>÷}Ñ«}Üa1È’™s†¶Œt÷[ñ’ÝE²ja`祣”Èe°Ëœîî¼eå& Í¥ úíM)CÖ,—í x8;'ž,v Š®®²Âýä TÂ.Éî­JÖ—Ä?xB@§"•£äD€Ù%¸¤É»á¥öë0‰×<ñ~× iÜGóá¤mW²Ä *ÖYïÒÏl±/¾ˆþ)rÐ@ðrç¯Ú["Ê4ÙÜýÍ9"ÞIøòW4cp,úNI}ÃÄœñ3žû«ŠFÃó…±OUi+k€ÿØßàiH+ÉŽéÂLƒÌà—· tö[0¸)¹Ä¤KÑ îõ 
-H2À‹ñ/Š.+xúÜŠ^há¸]¯E¢˜h‘€…M`¸£‡šà¥Î\’¾c4s*"÷M–À%õ\qŒ_,lØÑTî9k©ÉVBo£r]ÀöûÎ [ ±ÉµýgŸšÄ¯Á"¥¹‰MpL[(ÁÓ"O“÷
-¡dMñ¬[øàÜ\Ìø}­Ðï%ú5$&øãy>F¡†FöØ›3õs†S©Œ×°DK{O0ºÉ&IÏÁ/â¿Ü*ߡ̇˜œ§<:„CêöªÛuÀ//Ú'>£u¥¥xzøkÉzøsÿ®Ç\† LOØ)Àgå4LÙ1œr•«@ÿ|˜/ ˆË8AB¹¬c^EÍM@[æKNàƒRº^È:¥ý¥?ÃXˆB|&¹ ûX,ÂSóL$K‡ÎÅ?O5
-C¯Å;bhíZA®ßÏc¶?~ò0”`?QbT·K؆^3tPýæü¡£H¼·þÉ)Z¯1¿Þ6w<[7@‡µ ¸7\ÌÉÝ­±“vèI࿦»sØ1IK_®UC¯7i?À© ß ‰#Ã@eèœ+i€ \}[ûIÑÕ,©ˆe4¢!»ý¶(Êбۊo®Ò«Ž‡xX˜(AÆë$怆ÑàaâBI½Ðq®´£Ò]ÆqRÌ ÕBÑéþôxÐÐêDú Ëúmäc%-$¬1ÙÈF‘¿J¦šC¼½†`Á—Ì/'E}Ý7sÚ‰ÈNðÐ jùX†q;þWè¢y­owˬmƼ _@úB÷¹Š \@Vå#V„Êá@Ë°²ù »ÂžR‚¶`Ôñ{eaŸÉ{UäËîö™ÏëCø‚I}mÌã9JbŒ°Š÷*?톕ðƒ–dPmêâ;ÅŒÜYöQµ>×¢ž³"'¿ Àƛ͸ésý?åe’]WnÑÔ´ôHŒ9Õ.jJíê‰mþw$×ÀEƒÀC6ÑÀZ“ÁÛE¼ª&FÒ79/.Ú†ôã³yk–ñjJc‚@ÛqŒE‰€,Ûàe§†°ÿ$)O‡q ^Õë‡^|W':jMCÁª&» Ø¿>pAQiÇÃ1½%RØà!í7¢#n\Ÿ´! ’¸†øe‚òΫKÜD¥(̺Vhó-K‹2RcA2ü…òÁã)TN#ËÍEBëV­A} —/²š0Üz”E>ðÁxÝzŽùSÁCÏu8ìÏ ×üü›=ý²‘µa•äÈI%,É%úüvP6ˆ©®d_¦û{>Bùû„‡ÙÔù~Á6ˆ~æÔÆq÷´„ŠêMiDº!_‰‚Z8À^p!¸"äôsÞB;ñ3¥’|E¯þk"\Ã,`ÒîÖî‚QJƒ”à[/uS°…hç¼c>we²Ñ¦„¤óŽÁ"<‰E]é‹~ù‰Úpla;áBœš¹!¿gKZ²µºRÉ{=|“«LZÁƒkMqS‚ ø¸EÂÚƲ#î‹ñÁTRfco
-.w 9§±Ï¡€NÏå(SSÔDƒáìî(ef)Åx7áû&Ìtæ‘|êIÔϤœû&Üëp~Ê£=ÌÞføãËCÒwåÔ¶ðë¾Ð¯;¶Ç€O0
-¹Íc&† ùR‡=dX~ÞÒ±Yáø`ÏÚõ^KÕ#b`Çú¬´¾Šqïø‚Rô§îu:…èˆî–Ÿƒ¥¡7ôˆ÷Ýü5’í¯¸Õín[ÔŽÉkÈ
-mÇè¦D¼a¿Ž2Qœfyín$ƒú`—ºEYïnEýáûê¾
-ïg £ÏjEÊoŽMÉÒðtškù8æÍ4Þ
-*Wõ'WéÜ7½bY ‘Ó̹Y¥3
-™O±ØP:Çî™RÚ^QÖˆ’“àF M
-­ð¸³ì¸-
-'ðY<]ºèâ½gøs$™52¾Èü­ã/ŸíÔtb¥ ®(1¤N¢Þ»TJïèš5ã¦ÉÔ0o,EŽFà
-‚yœFG%·!IGçðÒñ=ÐÿJìçßè°N=rÑטBI\¿ØË©˜ñûôÍÓÂË”I 9aŒ›4›Äÿ:¢Ya (PîáÁLkÁ,XL]UõÕtDjÐñŠ†Œâ>Ë>GËÄÃ4¹…"IÏ•ka'AD¹Ó¾ì—«Q­ävÏg
-ãHyôåa,;xkgu¶¥ü‘Y™Gµ¸ÙyÑ x–<•î*ýTva×;öb_4©„\Œ¬Íˆ‹ 06–bÊÁ‚ÀÞ6½zõ´#½ iâÐG‡PMcûñûG²ä^©EÒ훦ØÔ±VL3î[•í¤‚@ÏuU‰j@HŒøA8¢É\!üŒ+à&œÌ¹ê ô}·ôÉÒáÙ‹&džJóØó5뮡waǶd@£– ¹¡9¢QDÆ­mÖÛŒÁ#@e‚3â·p#Q4éÆæÆK1{®#ìÎœ÷s(ggí0¯uûv}ŠJ7dgdñÔq8½¸¸x¼Ê\™œ‹“SBg‡lU?ï–“ÇRÑrO5ÌÌE7]+Wi¼Ad¨³Ò‹.²P{Ñà¢pÙJ»€>@RsÆ«):B2„l°Bñ5&A²l’+wGEOùHlÈH qk•S⤽åO¶¹ÕªV¦Aôfs—8KÓlhÖnåÞÍWãÿ‰%e1yÙÕ Ipð,²r³TN|m™…–Ï»5“,'‚ ä†û¾Z<IÓ€,¥»X*jeQƺBàWèã(êÛW½ƒ<6pkŠ û­²ƒ<E«°Ô¸ ÆšérHsá$Ï°wÁÍ·º~P„ÐÑÒªDê ø³':ÊïsÄ7ÈÄ‘Ž'g2–• õn24ûPÓã5[ˆi1bâ‰zð3X”Gr­b“>Z8[(¾ k·SDVÍ·š³wCbaAúp µ`ÖÉ”{ñØVòÙ ¥àôá|ƒeœ€,08¤º¶J#eâî6yú"C†bP­ç¦7B—uÎÚ!d¬´”jÜâ« …ÅJƒBÄ“’, C¹2Ê7˜ð1ļ%Â)–Nqƒ í[_eõ5šj® éb3eîW3!®U¦óßíéò’Ãé嘂‹0°o[`Ü%`kŸa'úÏ>—`}&3â4om·€’ß“³Í>èËA
-[ôªµÍûIéCJ~EíSä9+nrôE:/ïÊPòØÂùn2iø+BsÖä›YýpO;4“6•·>LȈ°ó‘Ã=í;Hv+áwü5þX ”¨*¨å½¿}‹{¿®û3Hïc÷ùö”€ú$Þ@/cD®•/c†¨fÁÑ"¢ÑàÕæC׆ZK€(ylƒá³ÈÄÐ{ÙE?‡:ð|ê:í ZCEkC~æþ>mÉ¢ëýÙW¡E0(I#÷p¾ËTjøk›¨ˆ•°Þ[!,õCLÌ÷ýôŸô=‹™‡œ•Y‚é$è–äöeÛ>Efv%C
-(=Äòbaû©“Õ YTèäáΠ“ÿ&>åM'KíøÍO…b)­‰C “Ué¨óVŠþsÊ Ðgä$ú‰ׄU0—3ÜÒ)”Žè<ªcq°‡oSúñÏt›÷Ž‡„]jŠGÿèmo×ýè…®ëõ
-úåÓä-2ÄMqJÔ4›²Š¿@l!ÖƒŠÒì‚0!~_}€ ò›=6„oD‘B!6'åñ]båý*÷P5†!Îr™Uœtò<Ö¨_†}´bñ2f‡×v|C2±%³ 2DȾ*ñ÷xfåÎ|=§²b?™Œ•©×¯©?y€Iü˜Z{x ÜRcˆÙ„y­NE²LfI4»ÖøùÖ«}Õ;ã(¥ÝœVo_ƒ€)‰Â¾Ö¯¯‚m¹)ŸÚFÜôZ˜m*5V¹fûq+1æÃ"Xs¾¶ê²[õÚòË9¯ƒsùš×|ÔmŽS…TÔó<÷¿oC/òÿ“ñ
-é*DÅW‘ÎPt†Z1àÓAˆ"‘‡ÙÏIµCìL~aú~p „âó¹ƒã[×r¾#Æ–løAÔYb
-
-‘çdóv ŠS3]mCH„Q¨‡ÀMú~^äC)wÁßÆ=6=8¨÷SÐ6"+8XÊ×oA­ w~OY’=< }]XíÌßõœd%Û*ñ‹&(Gà=PÞ¹!ˆ‰ÿãer^×­áœ#¸æa-g¢-•ÿöýÕ
-Å&arëEYÓ„_,ûœŽ¡ŒÐšVb×XÁŠ$œÌb‹h†Û½
-Òµ¢
-;ˆ/Mÿô0Ó:Ôï¦1´ïPíM›$±,³ ¯¯G£,™ÎâÍ6å 8T ;Ì5"€ð鸔‚á4°TÉê[3Õe$b®cAl§+¨.>vHò ²fÆ~€Ó÷U)ÔÆRc» å#ªqË5Á,|ÏZóÇ~NR™­ñḏܰ<le*F1’¢·
-ÒíÛ%î3'‘tÝ›pï\ÕÄ(qÙý©ÿ^LË@¡áàÑL<{øe Î¹,l­a¹žwBÙ43¡‰òQ uÏ3(®f·IÏ”•Þ”uëNæÀX±^9ªea=´vN‚åF؈$îeFT
-g¯5[Ã6ð°qâe€ieV»·E1¿vÿp¶NYÇë½úYÍ·ý}­ÕT)2ñHÊ–¡Ýx²Û×ɘ¥æì˜*‡“ÔñPujø»ÆIY—WÃ0ÌN |£ëîŠí]gé® ôÚy™ÉöÒkxjƒ<œc¶Ýiá˜
-HåáÜÇf
-Îô‰áÇJ ’<Ëî5J¯rKu»hå< ÕÉkÔåDt˜ ©hÓ`Ç5NM
-äq¯æ;—°¿Ê›²Î½œ7HYeiR\Ã/ÊBCÒs ##­fÒ«ÔÖËYz\CfÈú1¸°¤R¬LdŒA>¢Ö±9UV
-”3…MÍÆd{v•g`²cÿ„Ñm“_åÏì8 Ó<CHáÁ¨#O”¹2Ïsïpâk’€pDYÿvl“ ÜžË!CÚKÏ~ d×Ñ+e^n'Hűâxúß^/ÁT(ÄÆ aŒÈuùÎ`ž¿FÃjc/nÌ=§zx„Š³3À·@úZJÜ™bÕfôæ§Aô»×½ƒ ;Â…»R^5„Ž²ŽTë1{_ ?m.¢ÒÎȪìtÏat tY)ù%'Ø‚Á•Û¾MRÓÉŒ-†l5¼@Þ²¨.Ä% _~ÐM@ö99 H ¹: Ïï쎭ØÇ¿@‹~»q<Î<ŠØà[„*‹»=€Ðt¸ ç„kü/J±™¦¼ .vŸX­8l=
-ò"ì!Í,Òyù:tÕW^­Ñ$¹¥²K.bb¥Q7²¬ ˜äŠijMï½Õ.N¼s%|‚É!z‚¨O¡á!-bÓ=yŽ¬ f¤Œ­½8Q¦c9K\%0^÷F‡µ!Œ‚NM›¤ª¿0¬gFFsƒÐ09Ú³&ͧ\¿R·ÍDÐL|F˜jòPª@‚Ÿ¹^ŽpCœ0ûÿíó`ˆ5C0±Ãe¦LyÊÃs‘Vdm/Ý‘7w]¤5‹‘&lmrϹZ~ßæïUïxçã»ÄÞ¤ÿÙ©ŸßYmW°íÊPyEúpp#Ïû¸_FÞÁÇ<M‘ù‡ ]|?l êñAXïÀwG\o£Æe³F›Ëq„d Ù´=§D1Ș¤ÓvÂnÆD]½¶¶ÂxYÐoû››° Ó4C°ìÂÓ9ŒW¨dP,G:·)ü·Þ5³íxá‰ù˜-å
-.¢½1Ë©”ûгeÅɹçÐY¤S éôë6$sH}VoA'.âL
-ôªª5ºæ¸:”N§âü±)ƒ{+c¦0W)×= MN‘e‡QØ!Ð/<šWo쪚¦“ ^±?õõl. 7°1´íå
-"!ƒµ–èíºQAcýÁ†aVë0.ÄÄÓÊÉìA!3 eå¾)DCHK¼ !} Iÿ×l!…êqNiLú
-i!Ô
-êòLH´S‚²ÃƒPæ¹i*ƒÊÐÁ Œ72¤ÙÏ}&¬#ÛmÃÚy
-ÙN¥pA\èŽ`0³F/„l!šƒd-Ú¾+3‡H>Z¨¿ùA‚§¹–T´"ð±&Úf^{Ý×a}I|¡ä¸ªÀ»bž„¼åì)Dû m+⤂Œ#H\-ÚŒ0û€¥v)qÔÉ®"`øƒà>&ð  
-šÅŽIÌPo!1rÛx@~È+ Î\[blôÚÕZ²qYúšëR8š‚m
-zfœ‹©
-‰j²Ó:Þ!Õ ¹Cªt‡T]¸ëë²£1y”ª‡ƒƒ|¡ŸÃ§T¥O6 ñõ±ôëN©ªÚ”á#‡Å£KG*OJUO$‰‡Ä]ÚUgñ_ì쨇x”ª%çøÞQvÈI©êtú•lñ¨æAªÆ…(Ÿ´Fñ Õº;¤~;š¶$¨3ô9)/c‹
-“q€ϵ Ï sqtüÝÀÜý8dh<pf ñ>õ}Po×PjçóEõBg3ç én~§¼Ð!ÂìjÔ\XÈ’‡¾BÐmý*Â_{aK†¢J˜Vªñ'Qˆ,Ðâ{ÕònÌJ—QxSŽUÔœ ”]xdºœf’4hØ:Ï YŸR2¸Y
-ðâ°„(#q_i“‡ç(*¾BŒÈÀ2’Kî!Ép·K\³ö¹îb&
-×lIŠF@ãêúÓU€K2‘ÜÁ"w9áýŸÏýÅ€Ê<°ÄHßhÙµ‘„Ô¥š)°x÷ÑCS½Ê]
-–ü0÷mÄÃ*0¼P÷§˜EÊ\?ÆO0ˆˆ£ë&;‚q”‚¯Ñ;ȔȆÚÌü"ä©Cÿr‚¼^¶scn§ÅýEÐ1}Þç~tÓw´îA
-¼)„™XãÎg‰1k Y†aH5¤ýÚ;•…K3¢É6>ÛÒHî¼Dᙿ 1~cþã¼f™_`f«þµF”x’KrBô¥É¼ÈÄe6ÂcȞσL4˜˜Å©ºLÐFnxb­HŸO¬FôÛè Jú6†éÃþ~$ÏÙ°žl§m«èrúZÏ´ò+›$‹qÝ8×¢}Sƒã½ü²rüœ@ï˜[ÔÓ °¼
-]P¼j
-‰Ùüfq[¸ªùÜ"bVeBƒrY§ÜK@œ# N¢4·÷øb—Ì6¹¢Ÿtñƒˆ»<üä¾úç â3FÀ6䩘<!§Bè~Ãú4«5¦ŒÄh"²$–_nÓà ?À×õºyœ¤¾ Uwªå2Ë¢Æ6Uw£‡²]¦†ù•Ã“G»«ãI,&'v‰‡ÍÖ…´á¤}@áy݆2X\Ñky½
-´œ ¼lÔ‹–o(ðÈH[+,Q ,£ øi›ÖÆÜ×ÜûÙà ö^áK´ Ô‘üýi÷‹L}‡‡´J¢­â. u7æY gcª¨†·9Í[«Ö¸<8œ[ox¦-ø2‹%ÊX¨Ã¡ËLl¡CKûà ÞB:µËaˆÒÊïA~öÍ ˆcDBQ –Ý oÀ?…$Îý¥¯Gë¿­ŠãÞøÒ—­vÝT ÒãE6… 8Ì,IBI‡DíÞÉObèZö9ƒ—‚7Ì¢$yKŒœ#7 ¥…¦ ìì0ÓV3nOH—’®sÔÌpä>·Ï« *Á1õi…€8Qˆ—jhK¦F‰`5› ¬ŒªÎÄi©;A^!ü/KAð.Ÿ+(Ó¥¦y_‘,™è¾)•§Y²&“HÓ*ˆ=m
-©l Ö[€VKñtìÃ*Af@š@³î$—1€K¥:Ú)쳌ˆ csKõmÉ?$ZFýºzР¬dìKÊò 5î
-H‰”—Ar9DOÐwÐæ$±ö,u GÌJ¾ÿvHVǸŠ¬îÞXvªH‰ÌDýø—š¼j‹^£¨•Ò>>ÿ*½¾|ˆ›ÕR¢.Œû(@iÝ?¾Î˜ ñ24ÚGš÷Ök×àˉ(/“ZúèU«.È(Þù¯jcAj ®R‡ŒÖ?~΃bæM$¦¤Ú¨­òiÑ.ݹJ« Ò{·V‚ä3 qiZêhuÄ8@ò$u)#8Ç”Jœ¿ÃíÅEjõ~}§rõ¨î¤½D¥Gójüî¾p¯£˜PCžGµWiÃ¥öè¶åAµx®Pèù ^ªnåªÍ¾l¼²-çŽ)´ßmªbÞ£¶¦?æI½‹÷^iSì6€æ­Ífò¥Q=ʨœ¯ ÒW±ÞšD+Ãc=Ëkã—ÿÙ‚¥áÑ!]m§rV“>x› ?þú‡•—´>¤šÅ¬²ŽWãß¡Žyÿø51¦B©£jeŒòP=ùzªZùªŽ±»D¥™Ö6F›TZ¡4BùÉ;$[¡¯®#óÒÄŽß±—P85þ¾2Õ jo¶ §Ý¡% ‰W£›fÉöá³Ò¦=¶áuŸ¾j*õï‚ò8z.J¤×ÙÕˆÕÞ¤xÞ)!F‰ù瀠º ¥@¸0"&DGðµûz|Ð_g֨Ѯ! £íÁ´/ÌàÔÂàÑxÓ hªŒy0@ev”ö:ŸfNçpÝ!?'3šsÆ'F/o¾ƒ ` Ïn× °>ï´ °Ûè®Àž}T¸4Ex¶î£¸+ôÂhìâHk%GBèíüN©‰hÞªÛ‚(¡†jhæÇî1™ }(:•øq‰SËÑiEA}çÛ mÐZ Ü¡÷çi
-&¸$,+1dk]u ÈZægè ^°ÏزÊ©¨L@
-KB*óhí†H1h éivv Pë‚rN×èkxO7„ÞµožäU-Ð%Žuñ#Ú¯ç‡GÞ/eLÝ®Ä3ѬÂ8!Å?çI(STg¬ƒà?0ré/³~óIÝÛ8É÷¡™7HÔ_äÍ\øü™NÉQÒÞy]^2¼YÚµ·2! eb\µnF ?3 ¬ó¤öBK¨#\çôeÇQŒ!“Ó$
-‡-ØX¨GòÇÔ‚„\ÅQ`˜Í<ø ¦> v¶òaŒQW¼n࿺ns»pj
-žŠìhªîéáw#Y%¾pzbFÇ-çóÙ…‡e=›y°¾»™êЫÚßX0aË×ø2"É͸Ÿ¯yQR^ÃHlìË@VkÉNç•‹Ÿ<É©Ÿ¦pŸ â9,SJùfň€‡¡»»ÞšÌÛø¬q>Ki*±uÛ¸œ²GQfé|ÉÖĤ5’½"ìt‘‡&=q–¿‚JHì¶+ƒÕP¬QëüŠ§}1¹‘¦¼
-õ _Ñë›nþYG ¤ÂîÖãwà ñ²:2O„½Ú`h(ç>’æd$kå—¶éQˆ*-Ýe V&mÔ«W|VͨŽõ-¸&¡“íb—Ï=)2O÷“R
-«y‰1-–]+Ykä"r
-‘.å: s'§è·åŽ¤¶ŠØeŽ‹ÌÄŠ”©r„lŽQ åíøD›Î’œ*WØÌ®,c™cÇ„8¬á•Eìb:%§.D6ʾ‚1iç8x\$¥6>Òó£ÎïDÔIýíêfšc¤%''·‚Û žíñ…®Y zÄV‹h"áBwßBð±:(ÓrJ×aŒ<ܦqÛ®²àé{-1WPÁ-ˆ(ˆÞØö€Õç<§Eíe÷‰ù_{ýúŽf<m%Æäz›¦® b” @Ó©:J(Î%ÚTJžUS¨½è?
-F½I&Ð*‚¹:ÚÕv„)ÝŸû!vÜ‚\Éý÷pENÈ´¹bó×:)…‡@ôŠåï0D!ƒHA¬JôœÿÉÁGî{ÄS«Nã0E5Ж°+¨XšÚÈßôu˜¦aÅÄ’zLD'ë“y
-M?g7¡:ÛQ„htü­¡Ó #Ø^cA¼£¢eNBø@ϲî(£Ÿ;‚Ó!îë¨Üp)"ãsÕ‡„ÊNË’È0Íï`÷Ìlú†Ûµg)¢,¼%ì ä±=@'²KŠÆî'þn"N ÇüŽûè& §áºc¦¸x$;‡ AÏêr
-ü:óg"4جJä&#,ÎHµTcÍ
-c]wÉPëÈ?Ê-‰à)bÄ?¢Gë¨{qRÖô þv›¤ŸyeÍ»¤L%=ö½(êñª 1Q‘ÂÜch
-0`LCôrª£ñÖ<–+LÁ¿bŸá`‚\=æý Â@=ÔÙ ŽÔ²ç˾.æÀaËhì*’¤+“µuá D0œª€°YŠnL$E„·J LEX1ôæ¨$«ÆFí\zÖ<ÖsTkðFžPåÂN—ƒžlm.®¼v5¡9czÌ»úÌŒÑ/EŸ+'Šd~ëoA)r—úò\3¯6Žò‰G°øÄÕ
-~rÞØÉÌ»5¸i– Œ‘›bO1¸×÷Ä‚ óä‚~¶œ»M¬#_/%ô?Ú']k0rvH–ì3¹' ÌvI©B#7žVÒ
-¢l
-‰Q’¯C8’uP 6}Îß!Uƒ1ï»$ȃ'øë.0SÂ7ÙjêMøL Œ³.,&^„õ5RWgпBX9-Ü°¸À*Ó ”඲ÖEÂ÷P®¦2”H˜ Åà!€bÂtŠ¾Š`uÑ­«.¨óâÂ.¢çY $G˜|]¹p;Ëv/ -¨cÔgS½U„èR7‹)ª.Èž¥Ýb!sŠêËé ¸âº•dý‚QéÏõƒŒ¼×qòÍ"Š!}mÉ"AŠ^¢Àiœà¤´màô–8hh-ñß­9›faÐÈväì~a ½t2²/e_XÈ/è@hÃJ*.$iÈ*©ä
-¶¿ê×û(ºÆ¿ðÊyšuHëg±ïp¨ú0¡”³tˆâúgK«„^Ö¬ªåÄäúH/››(.EæƒðõÌ;p/"ô$–¦iCí0„Žó¡Ñy¬Û¤]Ò¼&Q”wEÈYo%Ö´Õ#É£ÔÛ}Ü¢K ùQ€ÿ¸RÃÇñ‰×x„ðmEŽëˆ„]Bðò
-—Ã[{-ð±Q”³¹Tƒýœ¦„u¯)Æ÷9Dš,^ ´à yÙŒ@›)!4ò;ûÚ)Uö]ý‘«0<L{• Eø
-Þ ­Q¤0G%ð³%É2òÁ‹„ÜLvûËF1F,ë[7ò‡"V—nGûŽŒ*NÚL‘;­§þÇËQJ;Ø
-Úºci¾mjSW’› ÅO·š`$—Ê„ 90Ùñ±0”!ª¤TÒNtüAÕÖÀ 4rÒ47ö»Ûe\lZàtèuÚž±ž˜]MÃ)áz|³àe´„·<“ðú­Y,¹y` Øj,çL‡‰jl1·èÂË#3àä0{røl½ü
-jȳƒ(’ŠyI›WÉiÕ§`oô7*Š3»2°sþwDM1 äŠX™Žö
-¥,ò$[ሢ7î‡ûþ²Õià.tê¦9ãB†œ«‰Ð[Åü>íƒNŒ¹™ï¡DÂsƒ°¸F%j™ÂÅØÛ~/¡ÿ8¤“ÙضßZüjš!:ÑÝ¢¯h²é¡Fl@³Y5ÄŸV
-ÒÂë ƒËüD; 1I´p-öKCúà–,pØÌ!ÔŽWà2e—ôn$‚Ù7@2À²Ií@vJ,è×…¸êôŠ 9¼Iù¡;%EÙ5Z™ *䑸w¢dûÂJ’„dn\Ħ%bÑÚÎ.ŠQälžŠ±è@ˆ¨}¿Š¾ SYšÛ=ªÇ„^.¿…R72š ±¨Ÿ$i'³k›âùtãëb’C_YgŠÑçz”‹Heyl—$Ó#Ì×#
-fj1Ö¤1F!öíÞkØ 3YÂÊ©^2g‡ÜJ¨ËK\¶JhƒhûV&’âNöÛd‡³Ò”rB²ó•ÆÑÊwE¾ãò<4™³ºd--¸6¼÷‰³:%: ë¾ p,üãw¢90V#¶d/†Pƒ/ÊJØôQe—Û‡R`Ç VÁߊ<‘jj¦ËFð·ÃD˜³ÓuÑ·ue¶§3[èx²´Ú…y=¸
-ˆŽ¡ž­€hXáû$ÉðԖβ¹'éßk¼ó›?"‚ìöñP;éìVœû¤Ãøó¢X‡øÔrs¸÷Û-Š|Ž†‰kÙ´=˜ÇÄÆ·´[Í» “^”{í棧
-9g.OD xCwƒx•`*‹BÂÌ}•à·GãßÍfþ²£RÚa“QŒKT4€ëÅ—°å™äS¡ùÌc$Jô|pŒÃ­«ÿ HÛxËpJ8Š"˜NТãÃwø] ©=ÝŽ‡‰pÔééUa>4T|B›^wTÒJ‹üej}z=vKþšÕ>êVåí 4u¼ù· D@ÌfGîÍyUS×Ùí¦ô¸Oº6§9fsƾ®“®-¦„p@t”1º£º”¬£®#¿~ÇÎõ6
-œÜqú¼¡Q„1pÉ(R}ÐÄ{‘”iG8¢Y~¼w-úzåNÆãÛ‘Ø…º-,\Žg,R&]}Д ä{~ZQÇ/D+Ž‡"l,éÅ`‚Ïf*ÂÆ ¿MâàG›°ëü\¶ªq|ìh/¥VTqÍì(àAªXvìNÃæ„ñÀç¹ð+¥5FÍùáqE‰F–Š>„ôPTar ¿¡Ûd…’š|
-Êé£¿Ô ÍÃÉcPŠ{|†Ur>Ù6Äw9†u™Ágaÿ™zKÈ: Îv} ‘*/¾3¹— ’ç).ûÊôâÒ Ap÷²Öæç¿€Vdy*@&M;ƒ$ãJÇ*:4:ånKý–RTŠEHáâWÈz9½#HföÆË‹ïp³š1Ü,ÕN;¨qéhiÇè )†$ã{ï Ö©8gO¾ßÞHLxvö¾±0ŒuŠþB‚G>SÔ;‚””;âÓˆþóãs›uƒ©H¤/^ð7 §ý»œö5残õ
-vùùïx)5¨jR¸t›é?R`’†@Û×™RM „Æ´™þÿÀ
-"çÄ•hÑn‰¼²[
-ƒ „8‰žöujÒK&éb"ø¦ÁˆìÕp¢dJ0¢ÜáˆÔ›sÝÇÎ>cŒaí0½cx¦J­ ó²*:0ýóä—Ûµ¹ýàFó‚{€žæùŠ[Sqˆ¢0ºçIShZZˆÊ?7¾bÐ_ó<OzM›,ØIÅ´eG×byˆw¨`[Š”äÓL˃°’¨[ÆžÎQO ’­\ãcm}Ç;G#sÉ7ÝJü7© œŸªæ»M”ÓË¢t»øƒ†}¬l¦áÿ})ú(¨;/x1y_L°Ì Å°O˜d°J“*‡~ ¡@ €•¶@ˆOa {¥
-k¾¦ì +ME6Ged=Ý-ˆ@Ö!ý|=e’ÇvŠLIÀŒí¨à» !¾¦‡’d»1"õFª*€ÉÜÃ5Õ^stƒï²YÔ*_¿Óã(‚ŠÍìÇ–¹Q&]ÌÕE*¹ÍùÁÍ,'3Aåœd1¢Mvf÷ƒÔG—øó®\P5cäÛÅ©N ǨÊV/ ÔŸÐaØšÓgŒÉìâ¬xbW˜Ðe&Üâ觽æp"‹'õ-3 …?òÑ,™YëúwlW>+A|C63—ËÖή4‡²jEcÏ
-È1ôæ}A8º'Òö‘V3ÉGÐAÓñ ¹Ó#æ×ãYs↛™ž0IŠjòóÑD–Ë’¥±ocd<™vtq-[À¨“daö¥HèòìòIneO1ç
-™›Ç2/ õccÖÃkiP/<ÙÚV¶ÞdÛØþBcðs¢,Ú²Ž‚:@ºûá­¾c´Œ±
-ù\ŸUy4”»8Í„ó¤«m‡†I4 ÜA㬋l Ÿàݧ6¬‡c•òšfZ ÍTÛ.0#T´-Ò½¶ç/ -ú͈F:ƒ\S°ÿ#èý^áj±ßú7ø¬íg± LrR¨ˆ¨™X½8•õô"GøB{ÔèLIúWcE—MÆd—Scæ¤î§8#ÍbÑöà°fø¼.wØýÉNƒMü¤·†Aàzs¬`&ܱ!:éËڜƗyŠZ/ʹȸ¬)4ïÓºÖ¢ëûÝÒmÌ|a(G@r—ï‚ÎæÜ%®ôE¥3q«8%÷XeæpÏ(µ©rò‚4¸†Màb§›’Æ9•[^ñ'gìn2³1Èì[£ó
-+Äi74¶xà"ôdÖ¦iK×a¬ž„mÛ
-Ï.a¦ ÒEA°×ôc6m›{ª “šu¥¡uŸ è!|-ÂaN³¿/@Ö:µõ=†/V "®¡ÕŽûRshÑÊuc&ÄCt iµ3¬w´ºÊÊ'rz1AõMíÂhIî“ØÃ.û*ÙØFËé9•9‘ÞVïiYÊhe.˜Lf3Êøz®îã2b6/·ðwé8©¥d š†Ü@…dÚ™šª; Rpc„·M?È‚2—8; Xƒ)7#ßôƒp1ϼìÔfħñ¿n»§C.¡Á\%ÜÜ­³A–%JÁS2ÓxÑ“’>!~Ç`´Œ”z°õÅg<Ü2ŽåÚ—au
-\Õ‹ À¨ä³Ÿ„ʺ„lμO"Ž±M,t9¥1h_‚‘ôø ’:;$€E­G)@$îWëzöã´Ïdî–¹ÁZ÷'ЭåñÀ×Á+˜“ñ]3Ç ‘§ZDÖË@ïßYÓµÍøD†$?ÖK ýsð`=T¶h-î”ߤó$Û,Âý Ð'™ûu?íKÌcŽ|¿c\fœÙƒqÕ[øBÂû•7»Öʺ!—mb (.ëÆÂä•ŠÆ‚áF1hDDXy‹m‡ÇÆ"÷°“‚d|≛ùš–pý`ݪQ.¿@ÖQÐ%©‘uX«qûNee%šÂêLí\
-UyjCÄ;Y#¯3ý ºH÷éd^Š<¦^dS‡ô¼®Ãp¬pïNåo­Šœ?ñÅoIJ/G÷X^Š“øô=nEÕ'=G ­ž˜„ÉûÎP…õ™““ðálIõÄw×Q.Ebæ…Ý,ñ)¡=é9¾SàI<C{r¾ÉÅIu–O3úÏ è6ì Ÿ {‘þô´·ã¾z „Ûr=b‚\~þûƒÄÀÔà!g~ L"/N¹MÂ];¼ð9=
-Á‡­^Ìíï8
-gÃðmé„•Ïâ Dã‚u}îÚ­¯šþãa{<04I\ _Öz´É<Š}æu÷£gÖ1¸Í&+.ˆGè$‚±ˆqÖ^}ó+OP Á§>©REè‹-¢‡ïU#:¤þ‚†+6ê=›E9nÃp+ÄÞ ΕÙm.¯ .9±Èô‚½{¿ž'‘ÓäAìÈÏnªÌ¡9Os½œ©"&M;Îíÿ¹gíÅãDcØù&¶‘f£ &ÓHý(þÍhßúþè×Á`XQÝÀîŸa)Ð#&6锆åˆ<ce¡î¶òv$;˺îïØ­ZÔ=»å‹M„¹¢Ûp) ¿7+&ØrZêb0Ï €®N‰V¦ÆbìM†PþŽö0)xõ¹ÂßaD$'ª[tp‘ëDh¼£E«°+üF϶öcÿ†ÂL^ˆ††x±B88 u%)~ßú
- @’Zætdn tN ù›è8Ü9´hœtlKgëPbµ' ²"S.5~„¬©à'Ël[õhãÎìpü1?\…(CDª‹âXŸ,ƒ¿s.–A*Š¶6÷XìxÒ-ïÛö6 Æ6õè9«hS¤Çé»:èv‡ØÎ~›@Õ8gêI!œÁàÏƯ8v1cïâïH”pSn›‘4ÂàTV™‹Ýµ XŸ¾}è~E¤¢Ü” 'Sf§i\ÀŸ‚`4¢gß Â)õª(¯!„öxLå’ý½£µ,3Ízüÿ]aWµ)·M‡ƒ‘+µ˜_06‰$ìa6ìF+‚Ô 36(ÅΕÝDìL 6 #Ãñ4•7Ñ"QåƯß!¢uIÞXsy»MAiùbže'ÏË£œ½6kÔN¬zýŒ/n׈ÍÓLRgÞù}_OY…ï[ šs!7†ð t ž€òœ8^Ù¥Å)ßqƒÁ<±%ZÛ÷ Bo0ÐÍ׃ànÙ¾!üÈàp )1”I1˜Œ²‹ e¸Ð\»JHh¯ˆ-ˆÃñ„… ÀYCO@”÷àžviº -Ü”)â•—sÁPËò™:^|G&Á“±Þû3A·P^í?ÊË$KŽ ¢'àú|˜‡5·u n“÷ßê›ÈfFx¾JJ ±JÆ
-¬+¶æâòZίºœ }˜åcŽƒMsVÆ" DÚÄgA»ð¯];Î’„œ5v«¬œÅŠ9×7ÝRÒby#ãw+¢áAb2zËÓõˆ*gù‘‰“'h$ Ü Áj5¼a¼ò„Ÿ©öB~)Û›º2óãú~殀fåˆH‡C=j‰gÈe 7CL,PA a®; ÂÂ6%˜žmxðÔÖѾAÝ+̤mÜ¢K
-'ɼÄv¥³°!&ÄdQžW؆¦µAUvÀ”„dØO(Qqñ$4
-ç)1uâRÓôõTÚ”å@`«Ç2‡YÓ%E`ö‹ Çqøè`Þb1.ƒˆ-IJ3™[i7½ Ä!ŸAÎS„5ãÓB ¥ *ÊÎì·ƒŸCò)Ê*ƒÌ´fA¦­ ivî±9Õ ¶ié2 éÍwÚGèÀG¤}ôOñpµA˜ì¹õxµ)_Ƨðþge(:Î;Ìpœ9ØdŠÅƒ3ÑlõUQ6JýÞ@!.?ãѬåÍF‡¢28±9 ÇÔ.ÎÕnÕ5í,ô¬cŠÔŽ#æ7ÆÆ'ÍȲˆ·£æ9kÒ©zö—Ø‹å£8ŠŸ+Sà,‹fXŒ ðÿй:w5šhë”Ffs ßN~å OÈUßf÷’Ó?)©)ä¯-iìšibmn
-.DA¹» bFp§âçÖÖa7s6WÎÁ̚˹%r”$¸´…Í¢ÿ¡÷÷uÐßÒúøDÍ›Å-Ʋ˜et쟅Á"eÎj5y•~hˆš0úQvèõfsx\ÙÓ,óœþˆx43¶#ÁÿùÍŒUžmQ.+sÿNÅ°1ÍU„Ò6„»rYø•m[F‰QÆ[„椤_?“
-êÝI'ø# GF"dL&¦cYÁÝcŽîÑDÓ @$²?ÃbŠ‰"A½p á'AVÓR™4.ˆiž]ZB}Õø;è6ŠºqÔËø³
-9‡ÂÃá[½œiZ°Yн¦-Æm¤/‚©>@Ú1Q`HÍSC¿õÁÔ”Q­uB宪N-
-JÇL£ GSù.û/&Ñ"Õ*E]âo•ÍÀâVÁ¨p_1pà TJâ™Ñ¡iAàb|„ÀÛönÙèÀÁÍ ^M¶Jb¸Õ*ËÔ\ ã_Bý‰=üZ¦ýË+ñ§ „ Bs";#4Y!ÎJ©Z¢
-Á­ª¢{QÏ؇ìD2HM]Y…ÐÏ$+£1çp{ëk,¢Òƒ
-¸$#Ê‚Dùv͆>Ãhê øÊpöŠK±Ÿlä«n&6ªà¶
-ƒ+•Hž¹¶£2é•ÑÑg<ã "%M7Þ£|óÌeŸ‰¢¹ùΙ)E¨¢V›;ì8g $Æ…È;1\œ³7ë7ç쀜Ž“ØlH&A—ÁwÎ(5†pà.&Ë„Ð}¹ûw=>YRùë™`Ä~"Ì,ÛÜa ¾”‹ˆ­i—ÐÍ«ÏLYPļ¯>Ç ü†ñ#‘
-ãö=N¤”|‚ª¸ $—Yƒí “ÿd¨Lš¸z¸µÖŒ9êü† ¢½Áé)[ ²&‚áJ5 5@¶;ºÖ6CóìÀlɯé+s4ékÄVÝÁ[A’hwÉ,s YcÕžùñ[DÉj
-œß’ÿjN¼a$J5+w‹{„PJeìž&úŽ¹ÌêC쎠{ê3“èÙQZ13ÿó@^4‡Â «-Ó
-‹gßqéÑS¢‡Ð¢ççRÃÛ*AºÅž÷÷áRŒ¢‡Anë.i]Æ1 }@\
-ÚÜj?d_ö㱤üŠ_ô_OKöÛ·ç¢ ¹™†!*z€aÇΈ_(Q<ÇšøIp@á/ÇÈÐÎ{´ã^-XXYP믗3®Ü¾õæwÁ0s°YNòÿ‰BäA±¥e³òÏ£ÿ¡ä™)$®–uùdªÎwobµ‰K»ÓQc¡JDlp>m•3=똇$=ú±,¹ïŸáD6|ãم̺÷‡ ª¤&?ôÚ ªÜ«5 #enK%He<â»~*¤rÖÑòß¾=—èÿna¤^ýÚâŸ-u«ù‡èÖ E6@v¬4a BoÑÅë>%¾;ˆu¿”’têlAÿ§Êù —ÁGlÒÅ•¦¬ÉFÌûíJ—°9ÇT¤¨Õå;ÒÀ«]Qï)9³:sú¥õ¡dÀ=t°³èÚÓ9ãÛ¦»°)ëgÀr_ï ˆáA(ç~c»Ö‡ÔŠ.–óúÔÊÃí¡uKãpz…—ëø”íA 8ëø,ÑÛðÃu›W¦ÇK4jOF\&2(i_ˆ¯=¾AïR.ú²ZX­NújÔ7ŒiµÇ»Äž^á€SÙžHðŸÉ4¼{Ht R³ d=&xt†]Ý#úáÜÇ"óe¿ö’~¤DJ[7¿Z–!\sgxWüÐm’X.ضOc\ p¼õŒrgÂc]º5él“ iKŒ'?sßnäCÃ/hØ@š ‰¬|5&t13ú4e4xgH>5¸ÜÉ&hí*âõÈ:—4Ñ+p˜¿LÊ’”@GÙS¢Y&ÓšpU&åBºâ÷á.ŸJKý/[ÙgQžnéŒ_sJ41z…¬5qj61*`!l)Ù¶£{=âÅ/™=®±Ç7WžP2Œ%çÄwà nç„ÆmÓŽ5®Û<”x³í¹ÒÇCÑtüŸ:i^™³A‡¾~éÈóRãc$RB•Éâr¬³„ßá8„TrÊŒ= àÐÁxÕfÄÇÖ8‚·fktÏ_H¥^%@7åæ1+ñöE2Úyâ­­%€x>_Ôöçsô¶dþ:\ú¼M¥`x†c8R"UP¨Jl·ÛÇImq`û%}ÍV/:®ïWQ•hàÑÉ>J4—.êªÞßîûléNõK=%Ô•3}d@¦Âð@LÒõ¥õÍ€mQÖ樨ڙ4W3ªö+ÕÛî‰ç Rë‚Bz}W¨{5@چߞ¸âµèû›"öz8õ’³ÓÁsMo°2H†²$à2ø=»ÑÙ/ÈÉCçæùŽ9Í<\$Ýâof‹×±s>¶ï›Tk‡v²U$é!_¤ÜÛ#n^JDÁ÷¡‚Ò×ýéå:ÉBdsTDЛ³ÁÁMÛÈÂ/ñáÏÃLn”EÑ3á+ÁÐÓYãcf†V×þ4UÝímoJ~ãSEiŸlѾq›Ø)ƒ¡v[r[âʵ™Y¯Ï˜†;̙ۻ]ÖÖ¯/}Y_ä&p;þã>uØ‚øÍÄ·çj;ƒš}»°ä¾|LKl,3>a„)ŒÔŽ ˆ0tÎ7a‡hW/émlža†UûÌ„áS¥a3ÓÂÈÖg:EˆÅi¨}®•LNÙϦ˜aÇØË^â,ìÔåG:ÜNã8¸CÇc=VäC;ÿÒ¡ëúÐk åâõÒæIãñÑmâï°ÔmÝ΃ªjù1Ö{éñ×]‘íU’îÚ&ã>ö«y‰H¡^LP¦ó@¦¡¼eèóªÁlqëç“óÈFA)´©\èCɵQ"\Ëà݇sbQÍp¶hò¼Í*Ùïmàzôšm]ʧ›*€cÓ„¹©Ï|e9(S½íÝ×VÂSŸ½[ÃtÙfÿÄ+ ­^º
-ÏHÙ–6K%if¦x"_Ù`Úo—ÈVphÃkòDFà¹J(MÞC÷å±ÄýÒláKôq¬Õ ÐRŠ¾?ùO™$äìq­á€N ‰K[âgxéa]ü{ؤEpAªÜyÛc(¦6årÙZÁiɽlOnkXñZb"öí£²Æ´&:Qïx±³_[¶n¡
-Ù<†÷P’–^œ•ØGɆwbŽ»¢'Àå¡Ñƒ?Ç—ì¡ÇeÀƒ›QAûEí’:G‰
-÷nËRí¨÷9¼_:Øâ…RÂK'€øÒ¼LX
-NåúgÆÊûgY‡’ëK¨I[˜û|sf×u]DŸ³$õäЭ¯I-;:Ó¨»o£3ÇH EÂœPµô¾ÌûH·Ãg‰•ã˜ÒJ>‡ÞgRaäÆ0WÉÆ7wÐœ· Q´Êa÷—¨mÒ„ß¹#_¹c~^Ýó£ïDîgSésÕ æcT ±ò%D>_½%Khw‹ ^*¡-ërãÜlW*¼ *%#ÚѣΠ7ë!c– ‰××+aÕ†l¯§¢w3|Ñ¢Ô¬§ ”‘™~ªFíÂ’îÅü~S”´˜”ŠúÛÇsÉ â#¾ú¨ïJ^øµˆbò+'¶(Ûã9â# ÿzQÞ•ì1(þ){ÿ)©ï8^!vžcº+ŒÕU"û@*bì³D?—Xç½W‰'XiÍpoŠo¼À¼,Û»s¸jÖâjS⯱$2iç2€N–ÃfñÊ×î½}SÄŸä]‡üt~¼)á lß–ˆkQ ]Χ-ÂÐ=GI{Ç›sÐKO¤<%Å7%n¡ ‰hÇùù©¤ÊF•×þ0õ±6€ùÇöLìt«W¶£oJ¼'šÛ«FÞ›þµhM€tßóØÏ iË´ ów% ²9;^¼7¯ö ©¢Õ‡¢KamZ†Œåê} ÃA!žíâ8' ™F5ö‰åìªKž±h<€Ý›…ãœk`:Ù´Û}OÐ’‰Â=•÷›ÿ5ªï CëÅÊ*ˆ.ûnK/eÌG$ˆÆ]±P8VEü8n1Â\
-í›5,¢$Ôúµ3
-¶ ¨-ÅäÛìŒ`ÚìïE:TÏŤù\ÃË:Üúš­¦ÍË<¦¯K¤àÖëKR)ÀûyCh:œ­{µ8?\_9ò÷u]ÜÎX ‘ÐÓ*!£ÝwõAÏÅTÿg¼Lr#Íq(|‚¼ƒO`ˆšµ®ZÖ-èUÖý·ý=Š2(‹„fh"ß´¼êrÛŠiئ}Ë)pCòC6’ZàF@w/E <G[iÛi"j¢y
-h‰¹b>Ê;ÀgòqÖ÷aø#V|(ÌÍ‚@âÙ$ßé°âÄNñ¸\+íuh*¬=±¥õÌf“bLSûw Å0D'-¹£O ®ÇVRp 3–yM”·–æuåX‡Ö1óCÉ‹Ëüë×­èÝÖÑoÎCBXظKt»×\¢Û­èÝT‚l@~s@õˆn” ç}ˆ¦Ï*oÙ" _i2ù×ìF /«èÃ#'‘!0Ò´{tã- iÙªöSóšÜ¨`]¾Uœ oÉí¢é)g•·äÀe|>$úšÜ(©²Vó™®GâjÞpé`ɹ~0Îï„tYGq4ã»N†y‰e^BÒ,0 |—"º ˜(û᾿ÍqÛY.(ÕÖ™šªÍéÝ°k e̺
- ó
-þÍê%’‚ Œ¶bä¹ wÌ2^5¶ÒdcÕ!žzZÅùàeÌóš¾Nž²¦èXH,SÁP
-|*ÞK¸·z/Ú‡S´(_·ÃTèÊ\ü`¤v½Î4 ‘ŠGçýžÓ<ï‚ëå†ÚŸKˆ%E±7I8íÓ¬¹ÁÂP=JöT`p2Ü1H뺎É
-˼$+ô4½SH’¬=b+lÎ$k%ÛEÐ ¹ˆï¶Íÿ
-
-&'ÙZ€ æGrpjÖö¤
-7¦w.%&Œ5FÁy²j>¤,uf1y÷P.‚ˆÞ£å±É]d€õº²@„"’XšWü=J‚*¡h-Ú¶µº,W𚘑Þíz˜äf‹†&àÃ¥Ò¦à%ozäøõqlí8l¶F¾¼0â2 5üÙç½Qu¼±’†Ú¼5œ’Ê•BœÐá¦×±QIQÆò‘ó>~Éî,æv¬Vnc¬ÎÖ%@^Àp-yÒÿ¥¨pž¤1€›l/á©
-n„! ý¤ iiøpß
-wàÎsD…
-3‘Öx`zU4‡>\I.^VuåH—Š>ô7C`×ñËNÒËô#iÏ)†hm“ ožQÓΉ­L¹¬KÎ5÷{´xŒüV°‘‹¸0™ÚŸm^×h;3q¼~= øÈX½ß&sž`=íö&ƒ`'h\6ƒ½ÁWÔ$»7HäYY&uE†vk´(¸Â÷5ãwÒu\ÄöC«\ ¾ŠºG?2]·é½Ë(i ‡±=/ÏëB|ÿz¬Â æ oü$G*x0D{ñ²=˜†‘––{EÖa²ˆ¯…ú ó3‰ÈˆeÖEéqf@·F”Wô°K ƒ+ïNæ ú”»w : S‚æ¬hF‡YNPÈôˆK¶¨Wúkv“ÈÀ|fÑË^§â‡Ts• ÇŒCb‘AŒi»„‰Dxk]v´Qèú’¥[1}1:“ŽCJÁܯä¯#_©ƒ9Z‡dÙÓÔ`p%ÏkI SI}âRÄ`ÀËY§ô¯Ûi/¹„õë­Uƒ£tùÆ^Î&æ”ß¡ŒÈ1 •ÇáÝåaUB¦gø?ª¦ ê·áæN½jBùgôàƒLÑ݈­àÍ1£
-:‡Í¾ÛPOr´ñ1MdÖ.@]Öˆ®ç<óa$Åæuº!WIcÀ°Æv‡•` .\ÆF"y8«™lÃ.b¨„SÓSªdÁ}ÒA2Íy9¦‰§Oú %ó[9Š yŒuž:4Ôßj~‹‹ÕZLj;Í>n™Îîë dUzyZ=…-Ž\—J€:ZËc×tä´te“ ¢Jl¥ÇB;F#3x£ÃP´n¹,SÂ昊Îà·†
-Ì°©€>ùÒ*Ù×a8ðyœÒ¥êéñZd‚µ·¢1e_4ÙE¶öVx9Ùá„”†
-/eÛÕŽý8&=äEå‹B#YF‚8ê°%/ì µ¤å,„gxàRôûCàG¦pe‚Jcê»þ ܤ#¨d3v LS\9Šýð·É jkÐMÇŠ0n¨6úïëÐOs''ãNd1“ îÊÙK¼¡ò¼¡ï²®"„)ð¬'jÞ°³Hy÷e0v–b[,ó?ÆË$¹’¢'ðú
-à´ö¶oá­î¿öK­ÿY¶¢ÃÝ2DD±‰˜À¶KÀ8| Í‚ýo³}nJjãèXHyËpP{X B…'ô‰óaeþ{óD,é¾£ïéroXF©0?åFeZ‹©Má«g‰t QÉV$¥‚ØÜ»:©ÞX…ŽÍ«
-×Û»áö~ë]>!éñ081h›¬4‚ä+?C§ð u—tr}–Ývoñ.Avü&ÖfêU
-0;Ԣøø€ÆŽ2 ¯`ƒ
-šÃÛÏ?p:€˜½Ä¤¤è Ö`ÕÓŒ!î\‰êŒ~ümÚf'/å³ ?RQåòh7¨q¸
-°±²œ˜–å”tÅSòظ8{·K€Æ€'7y–«àÆüöà7ù .Ç✥œ˜öÖ¹É)€­7°e+òÊyÂUL¿ªB à‚žƒ¢IUüM˜<ŸŒçiV¤u/áë™ef5ݹ5·›ŒP^ò&†Ï çÆâ³ÿ²T)âˆ5á´±ÏÁF¢>üjË
-¿å é&4%dÐ.%®¿&A° ×¼"©ÇuV¶àF(¤›0jÖLÏþªðîîè))xAY»a!õ†²ˆ;úx¡N:ț윣$Éå ÁÅŽÜ«k÷ë•^È¡ÌÏ‘_AÌÏÑJU2Û(Õúñw´´BM> ü쎌×ÕΆ"úLªZÞœ"K‹’¬¼ãLÐÅÔc¡û1&‰¬³ÜG;(Êr˜svß_Þ oǪ¥qhg(aa'z\ÕåËáD8~9sá
-ØW8ÅK†‡£pÞcXºk·¸(ëµ¹r‡L™\½¿{ÎFS™©zº'Å•|S¨™ð2ó×L(Þ×Bñ32ßÍmý¿Û‘0&“½‡šúº,\[gù†L)ËÖn›õû¡è{˜ãI˜ŠÔNà¦üóš·Ë FÚ×’dÎÚ‹ò‡â! åsN`5Úë‹`GéÒQÝEo|©ùüA·ÿI¼ VáRÔ>-L+l
-Bš|g³ë'ØḞ‚Í8Ý°L'x<–\*12úU,EpƒÃ!êÕÂì1 á>˜€† |˜ýkdp ÉëÇ¿?â(°(I\Jü„ò®
-
-ΑÞº‹Tå_“:>§ é,UKh-¢ÌGù“¥&S ÅU†%$Šé®ùð*]/@ É :J J†F9%E êD½D–‹q/D&X ì/ý ü–/oÄŬí%§X Û·¯.rç¦WUZ¨m;Îé¤ôÎÆ;ý ¶XñùPòÕ%Ê)€Ö°ÕìVÉÜ <Y+!
-™¿ˆ¼ÈC“Ýf*ø‡R"mìŸ4;RíI’5b €G½¶±|LcÆœÝÁïC úÝ3Yê ¥¹a£¡1\ÚÃPY
-X
-U#¡¦è½ÅõZ*!â³HÒYc ëíÇí°™lîQ3¾C)ŠÓ}ÎZiú&£OEâ×^bv¹
-¡ž–5r–Å#Œñ¸qJúBd°/!F(äc0»…aT6s
-ÙäwŒ Ñæ7–º¿ÏAv IÊÚ9vHFúÜO —P>¨Y—t{®J?N¸¨V~µPYtŸ“6YQö•òx ¢ë"é«øÁÂ7!ïR¢«´“ 'J{^×s¤
- ¬Eñ¼Ä.<*™à”à,³máZ3—0‘ͯ’çSÄŒì‘M_Ç@ó¹g§Ã¹8¢úÀ!Ú‘äs §¤B0Ø rVŒ;ú„û°÷ ©Å
- $˜b8ž °ãyaÄêó§ð¦81MXkë„›³ ’#1uŒÿÅ<Y@ä5óE´MÈ“]X¥ÉŸ:€*-ÇjžÎÓÿS×Ègû` ºd—Db'bÿý
-‰âu!F]D°eìÄDÅ«ŽjþÃ9lÒèû´·`ùÑ\ îþŒÝ uhãÐtG¨æÈÎ,[…• •>Ê|€ð\>®Š:¾¾tqY6lš õ"ÊÆpRŸŒ ~‚tˆÅ±‚ŸŒ~™HÁÀ#§Èû‰—z!ªyo û2û€wzPbÚD Q<VÁ0ÝÚa± °ƫD‘]¤›MSºÉtH^‡JUÖ€ m“¿|>,Œ‹¬a‡`/6I©É冖%6°‚€Fñˆ4¶<˜XU÷âQØ2.F.{;©[’Ñêd‘½3ü™¨9été$×€=ê¶ffÈå•™lDD{-ÖJ/ÔÔžv…+”nC”Uñx«x7‹óö»…?ps岧#úe,šÃ ö]±3<™™™X„^-lÓÄ(TE™QÝÉò(‹õðRØ=½¨u/ºEòÓ&,c_ueýð0€P¼ ¾b·é„âÙθ„ËÑÅ0Pî·¦Hž‘‚ð¢K<gk]Çd1øÂyÄÜÑcéÈtn½ÐH
-ýÍm³ÄÅ\²?î]웟=dÚ& v ›‚¹Ãx8„Èד&ÁqˆÌi¬j|H<³T°}:¯a‚ˆ_cSóbuÊ^[;NUî!‘¡˜Çq®Ì€W ÷î7Uã™Èm~]G¶Ÿ‡‡Ly#ÏÄŠ²§¥&ËàÓ&Lñì<†KV¸a{%?ÎP«9ÇjÛßàOÕc¢á’sYLÈtSÃÛ‹õ@SΊù£êb!Èiù¾k†w`vMÍføLÙ
- ä,ó…)€ZÂüÈŽÑ'–®Ç§
-»4°DI-9e
- v 9;ç`[GêkaÆäÍdþüqÝ]éß2‰Š!õÜñ7˜Cp;>’›ÉA/ïØià#¹Ážqaædç¿[rDz èrrjÇäfNH<UUfà/'„ßçCr3]&ÄÏ0!Çä$‹!!þŠeïÉÍ$$USL2kÉ øÙ*MÎÇà‚Êao0*}ó¸ y䨠@ÎùNI‡s´XŒ© zHe‹Aq10r¦ññî,.„œiËf¿O.¾2«H`hy›{pö5OGH¥~F1YjäjMûô>É®/Òû9ìÿþH_¿
-©pÁÀÚ†ÈoI…óB°×MÉ5iOÃ]jºj ˆ˜·nÉÈhÊŒòž¹ÜTþ†PÍØGN†õ»ji©år ™¦^
-˜MŽDÉX²ôQ‹]Ø`LŽØ.ÚƒdÙ‘j~æœô=±tÈ8êÔ»C…\19„IÐÈJ:„Ûsw µXŸÄge†Åâ>ŒÒ,3hëv¢*vac£ ÒQv¯ª…†˜X—õð/}b¡&yX¡úŠ§ëÌ"»†nñÔx÷²í›R@Pvjä›íúqX.öÉA…§_ðå‰F1‘En_° &SŽ hËÒfLUÊ@üÿR²Æøë¶wâvL•‡€wôθ æ“­íxZ¿Ìçœ7)œ± åñ)¶–£/Xõx9vJŒÏBÖuŽáìù6þ-…¡ÿJTBª˜ä9ÜÈ=O¨ÌÊëQvpÐã7& j3ãçÀS$<žÚý24Üð‡𰕺¤Þ\ÃÈÆø ™廹¿¤n~Ï)ųtDQÁÄ^'¢è²F—<^ËV²¼FÇszùþH8â¦kqã#dzXïÚFˆo$¶~,bb–i*ù1!&Œt…r@—O &ïG­“ïUƒ’à mÑ,}i`(ÈEôåqL¦™b†±¬^ú†mÙ,Ñ/1[.‰)¾Ò¢)S7â Z€d­Åw˜üdn;v‘@Y‘_KÓé;@rÔpY|ˆ€e±lûC$€«CýWÏ{ª&‹QÓÝíEâèEÙ›¼‡ýÂñf™‰5¥@ˆ$ú 'Eeàå
-U©¼åa
-ÿv’ê5X 1ÑlýEy2C ­Äì‰)˜NŠµM2µ¢RÈdw§c@¤:òd¥~5䌂gsžqŽ¼'C¢Á®'aŠHNs}ßÍÿûϨ‹vSÁ“„ÿ8³ˆ¯¢e—+0B*¼ro&V4¢®ÅÆkäu†\Ìÿ
-H‰Œ—Kn¤9„OPwðÆEŠ’Ö=˺E³rßÛ_è‘Ó°ÿÄL
-(§#õ ƒ¡þéÝæH«Ó>þüe³~ÎV<¢Î1Šü«ªÃ›{Ô1">Ä:
-—ÁÎå\¼9«=8òdoY­x-Ôh¼Y'Já³QÒû›Ãxðý9fm¾½T“uz¦»S›”yfβ‹SÃfÏ:̳È Á£Sı!6JT³³ŠÑÎÊ
-v·2ªânÕ»Žµ2fÈRv«¬–¬uævXQjºUÞ—*³´ÒÍ»×Ë›1``·vËWrŒ#ŠÕÓ)¯½wŠ£…ö:͇å„ó&
-k¤ûœ¬¼ ÑkÔMë9 ·Î½Ìhþñ[™ØƧÖ9uàhVNÇ_ä-[¯|ÒOy¸R/ÆØ„«@:Óâ*D¹Åé|ƒóÒBt-ifõÕñïí´OèA}¢°
-Ä U¯Û¢µºÖYÄ)­&|Þ:kЈ‰± ”cL&Æ|C¨DwÈÝr̳Uzc®œò€²NÕ˜[¥¯uºÖ,eP›i­hã\Î^é:ÔU¾b\æ|£ìo™•e
-„Úd¯-‘Ž>³ž[5Žì­ŸÑLΑ£òûÐ6Ô³Ô2ùÍà®kÐ5‡@*1âu†¦A·fmA´ (–õ4 7Ÿe0^µÏ³§,b‘ÏMb)&´ƒ9° ¯u&Ó!Wž?C®4ó ÛÆâçOPPq–a¿ÖÑÙ¯GPCL VJÏ›™È¥Ê±Eô ‚^3‚–Þ8WŸ’ˆf\Õ汪ÚE9W÷†”ÑߺHÇ7\í¿Woùô&膸ÊÃ÷èLÜ­èówî:L/,R}–´gzj›(äتöR°‡Ü@¼S–‚o1r»=v€†—âÓÚ8—
-ÍÞ…,ôµŒ¹–b‘»²Ìg’“½GÖðÃœf½Qe¨=o¬ã•pD˜ùZ'Ð’9`¶oÈÄT‹d¾ÜUøã½C湕í 4e^§|_„îcU ŽLHÖ`ã¸öbš¢¢ž^íG5Àù>1‚V1Ï üOA‡Æ¹¹M /óY^ ¤ýå(û®`KH‚ŽV; Ç·zîVJlË =t°žn7Èh ͹ÝìÂâãóÒ´0´‹lV8ÌNü‚ÅI¨„ÎJü¸Åæ(ù…šÂó¨ÃÑo\S‡¸ØC®u¸ÀD@¢:g¯@³2T§¨?{£6°Ÿá*N^%° ÊD“Ûíwª×P§û†¸ÜNÇÉÛî ëN¨O=;U Uç
-Œõu¹>¦m›X›KÊ\'8Å5S¥iQ¿±ð™wÀ›Æ”+rö£mâA
-QÎö
-S ¯7 |9äš]Ò ÚXô¬÷^ Æá1ÌLD¶ŽIz´×Õ;ÿçîI××Õá}šÀw›ÎˤêÅös­³ú EÛ‹cY ÖÕòÉËÎXDIò@ˆòˆ5·Êz¨CúSšçkóœ‡W¢@m3‡
-„Ÿù#O!qô¦èa¢3›ÌyòV8f9S¿w^wG%îÌ54Ø…ª¡f±šg+R¡æ Z´A,ÍQÙûZ†ò"¿û@DªÆ-T¡M?´²%›·¡€0Ã4€éßág¬g@«N´ÁK“f©yÝÙL$Xï&„í@xî
-½Ï5Rq”²@Pö¾–¤SÖ#?”®Ý‚çR5F²xq6åð?WÃÜÐ
-Ú $¬HunwÌCÖL(éDjH+3ßùN‹âöøtÛN´‘¡É',¸y!Ý5M(/|â£é"4ŒR–z¶i.ªM„
-ó+õ?–ì×wÄJhy?´\ÜèÑL ¯{»q¤É
-$`ŒÚ‹ ¦âB4Šs/«àTžÈ•ùr”,MïR_o»áš±ìõò2š¬33"ÏDÈKc…Q§>d%¿•/ µ¥YU4‚yhnd{PC‰7ÇQƒE²¾ó
-2$%ÈnR‚U 6mË׬0e?Bší´h?¼#È×G¥- ®À×Áx€­¶ðšd³.6—ë¾Vü=ßè£flˆ+¼¯2”×NJè/ûhú3ñµ"2±Òf¯n×<¬=â
-¿â9œ³;ùG‰ƒœl;÷ ˆãeî£9À›”—Ã@åý¤L²_¯D°½LÎ\ñ4©Ï#&å˜Mæ Ò¶­Þ‹ïaÃM¶’ oZÜm‚s] ß Ä“
-_•Ã Žœ!á&¥Â}×',EC[Sq.â¹'ŠÄ¥z0,Ï&oÇc䈑D'Ü3HÛûE3ô( Qebæ[IEXwï˜ÂØ ¼
-Ò'ˆqR‡»Ä£h»më$Fœ+tÆÐh€˜ÆVÓäê›ñËî…SÞ4Ëž­²˜uhÊÓ•ò—Ȇ—úZaùJ°¶g ²F™Â>-gn<D´SP·}èoÿ•ÙŠ{H´gïRÎ2ì£ö±qØçAîY:¿<®J¡µ!k¾_Jl+­ü6²µÇË:N²9ž©Á`6PùS¢¹?š“تÀ&È J[A¡HÜ&º³"†ž¤iúìÉs^þ}q¸…ˆ‚9uÁ/"‚ÆhùÅ{N±ÄDpï*n誾P7 îC¹‚ÏðŠ^ÂÚÍìz=5³+¯€öúF(òÜûp^'r~“pƒH:±/%š¨“•ÿ¶ú(* >¦ †«oëüPè{ÉŸJõ¶2°tOtãm‡þ¬Ò^Kž3u-ÒpC§ðä|[ç©œ—’?£â½WÈëÆÍbŒÑí;³S²dB‹üókÉŸnê—+0Æ âs.5¿ÿº%ÇóÜ4˜f!õÈî9÷›”®RkÓ˜µ`‘dy‚ƒ”!_™ŒO°
-½q¢î¼Ä“hε~¾˜ÇÀØF˜Y¬Óq%ŒÓ”²À v^ù߆MïX/éLƱù¼<#(â`ù…G]€eÂMý`œãþ üy¥OwŠÄhr~L92³_(ò8c:Õáä2æmJ0uš,7f£b,i Hí…¶("¤€z½N¸È6FÒ ðs–‘C¤CàªÜºDNoÁQhyŸ86¹ŽÁßA‰`êkçõ¾qu"›ÕuÖ©„³,Ÿg^&ê”4iê»oY…K
-âøŽS•|)ú篛Û}¼±‘Ø2±Ý¥èé¿ç·!%ÒCäÄ9ŸªF ušÏ/„V‚~JÄ
-†àö b" 6³ç$E2¤Xi¯GÚ°A'«ºý¦ˆ÷a3¦}9éÃN€EX˜*¦ðRsíH†âGÌa~vâC^T#½_Âw 3V°ºmšrò7,ýêè>K:xFçõŒ²îE4[£¶o‡‘AWÔc²v[/Yê‡ðúV·¡ˆU8uå?†÷ç £ò >ó¨pÚ¯º8ÃOL|dà— Ð7åæF€?0™T«Ù—²Äð›Åi`78–fÄ?øPƒ4²ç¥è” F•Òèù­  ÅPZo¯[ÕÑØÑÃ-¿¬ÓôÀR…¨ä11¯|cÐf¦Ý°`\ê#“eƒŠp2Ÿ‘^&¾Ÿ…ÒÜgÜÒ‡‰OµÜ!:ô[Z+°Ù´¬š@• pÀoÊ
- "™øÜ{ ÇqÍbz¥L?S€BP…£Ÿ«fa€ŒY„éãÓ™Õ[m+
-" ÈYŽkƒ(E××|]žùÛRŒm¢ù²®¨¹¬ÈΨ#ºž!²Ÿ-BÄZF[´î!–T=F.¹Ëw¼ƒÿà (ñ)žŽ*á^'‚’ú¨‰hÜ‚Ð ô?7:8¾>#|¬)}Þ¯Ñ眉˚´{Æ*ô <˜‚P_ªúnÒHYz8_òפ÷`.§–fhû¶¦ÍUâˆa‚uóuMˆým™ƒ¶Xg¢ ì¼° 5n¥_-³#YºAÔ+ZA;ge.÷sÓ³à 4Z4¨v6 Oºh,‰…óþDðépô²Dò @ÂÌÄ{v1?ûaëý1¶hpåÆöuŸñª5¯"|¹Ú¦¬Kˆ_ÅK¹é v·sä™ðû•T#}jW•–q]û´Ãgþ$mx7LÂœ¥r*…"±µeô–Ð{áÈdT\…1`«Z¹¹ MŽž‚6]¦’PX¾´F‹/ùË"„SßK ð²nAùJ$²,Λ;„FÈI¡Y- y‡Zͯêà-NûÅM°på#˜‡æ75üthùdŠ‚ÐçRIUü%äâcŸA¦ÏL”…[Köo|g—cb=DOea¸aþݬEHÔ|ç
-F.8^³;ïþˆwéU&ÀGô|=æFè"¯¥l ?Ë{Uåµz p`áôñY!K‘øñⳠС@<#•CDág’« ¶ÄJA¿ÒÔJœ²W)£VEî}ñÊXô^>%®Z¬tPÈ8›µâ‚@cl(¢¡a0·ž "›¦°“ò9¢³d„‹áþMP2˜"õXÔ%HQ•ÂRû~>î¿ŠÍ]ŒÎg­/?Èßý›–€½€7ü%kS ü¦ú EÃË×®Aõá"(¤¯^‚p7ÉýôK!(yª¢¤»RXG;íŒCÄ ‚ç˨bXBº’N¿«š¸x2‹ AôI|ë¢Ä4Ql¼÷2Eä# š)tô£|_4ufZÖR:È«‘œhÿÚbÒt3¦€Vh/Ú!h9f쫶Þ`P·)ͯ9ÞRx:ÐDÁû*‚F¡v].ïa]wË*9!ôpaî$+BÈÉTã»!úAÖr2Ê%į2ÕnrvÑË9Ì kÈ¢wçzy ÄÌܾý$ðòU’Þ*ÁÉÇÙ!7”†ÖMöcV#­XôÎøOÛ Üã5`BÇvX/k‹«g0œÂÞè‰Õô:¬ù1»à<²U'Šº×
-ÜÌ6íH¢¢®%4¨ž‡[Hã&æAÁ<!ÛTÇè=“%γ
-¿ÜÔÉÆP´« Å'š³è5,¶Ðxr`=ÛyG{.½Üµ=e?‡d‘=ŽýΟÌ
-‚n‹,vO<">ºÏ/zÄh£Er¥}_·—0ûM -¦×·b<¿‘AC±ÔºÇEŸ™AXz©UÊvÏ¢¾Ÿ‹Vc£ Å`£*}KgòJ"lc¨s;êÿ#ÄË„°Ypü Áã–³„³ôü'újÑ/˜•õoü\2èPv§ÍÑþ'ªæ^ÓŽê}Ôêïh‘cŽÈ+ÃÌX´ü-­d½¼$ ™Ñ¬ù–Ï‚0,‡_õ9ßÔJ†ª=´Ô«L\Èÿ)7UƒHß9õà›fUnGÐäͬÿ¨}¿‘É2©G±ªÁœÓ^eòTIò§-ϯ¤“èMÐa‰§|™¥uØF+Æäq„&ìÕŒüïÏ7¤‹q¦|lvvˆ¤U’nYþýFN8S{¼mä¬ÑÙй•Çiï‹CúUrÑ‘’>#
-ߧœŸ÷m‘jòÓ–YØf¸¢§dXª™g:Ã¥g"áŒEÉ
-å:ÞI‡PtìÊ‚Ï ¦T¦6Üç4N×–‡à«
-êÌæóxÁççÚ“jrÿêÁt+?»æ±¢ÿ©4k]óJÝÉ-Nñ½.å¡Ð!gèy^ËŒLÃn 2RïÍBÈ
-.·ØKÓÑÍH»’¾¡Íû´•Çü£=ÉÉrŸLJJ3…±æeM%Bˆ n#¨|OÑÇæAB+Açâß—B”±Dms¢óG( 1ƒ}‡àZ]ÈQ‰SúŃÕóLÛ!¿oü({ ëÄ’¼ª›ö1T›D
-Aùir|*­8§d€˜¶¦«m‡ n@zÞ\÷A\M³Î„ÅU= šn˃L}Íô(AûfZÐ:â‚YKLªä¶`Ô´_"ü&Š $Ò;Ós|9†t³­
-4ÿKy™$ÉyãPøºƒNPÁ$×êeÝÂÛºÿº¿G€j;“¿UŠ°¥L$ bxƒð-ÉPÌ%H!°Õh{YG½>Ûd÷“&º‹ÜÂ`e„•&ƒ{ â“&ág¦.ƒ«ËXÐRY&.‚@˜²eyõth ^ŽR0=©üÊC aIÇ?_"üáq8mëî[Ю ²½³4ü·>…ÈêQõÕc¯WM*LÂÛƒœ(øzØ[…x̽F;_vj‡
-Þ¸†øM¯-;‡¹`à*çz
-aWA3–Ñž®bDá8¤¾ Ÿ=œ£—!ù<Û&C:%9}3‹± Tl®¾.#á7ñÙ¶jžN¾®Â ©BÄ”¯·ðè"’ûP}_&ŸˆK' /°N®qÀ‹÷hKÐArxÄö9(10¾ 9Z„´&ñkx
-ýgÑupw ÷ÓÄóô—.÷ÂïV5mfT6€=N,®"CĘv*h£t^g‚ [#Œý–[‚ÃtÜ$â\˜cˆç!Ø¤Ò ±«‡ˆ áä¦Îã1õð•áÉJ¤C  AÞ”œ8ÑÚtŒÛñ 7„Áí\Þ õMÍa)Æ¿”¸H‹7
-¤×Wi㛈*¿‰eà*€½"Ø@dàán|$Ç8…zÊšð' ²¥ÃÔÜÕ@ÿHò&].ÍìJã]ÀC´¶õÓÖPÖ²¤¡kˆ0• lG/+ÖnÐ÷*T]é%‡ZBšÒa=£ß„Ô)}˦/_S…JMGØ6Ž¡é%µ?W½½Ÿ# `#zyJÆè :‘åËÏâŸu°ž­=ÕFÐÂLC–f¦h_–¶¬õØ)v£Æœí8C±qÐ yÅUÀ
-*P®“’†MùfÐ?®ûúNNžúûY—‰ªàžp ¸ÿôùô:- Å
-IVpZßy»ìýuß
- ™ ¤P,®’F”m^¿ôŽ®—R¾ÃëŸë½Ûòó??pqð‰dR‚^í"p¨ìi¨Ì„ÞFÒ–A\  x¯ëN‚&ŸËrKõ¤:d×yBæÖhEÊ„€ùØòzù;%þµoÂv€aÛ3Þ\øA¯Ó>!†©…ÛR;ìËɆÈ
-)ûá6ëô‰7´…q´ Œo–…X½ø»- Ü+r·7»„øUÂÀ¬<œ„±p)“Ù
-“eb"›×9ï[m5Fx
-È5Ybç­‘:(\îfä~j§Ò˜íê±óF~äY— Ù0sA9 g<JÖƒ2£3‰‰›ð”B24uõsào¦Ñh§ÅœófòieJG팒LÐœG83Z#fí\Äîð1IäÆhÙF4ÐqÌŸW˜°®S›{Ükè3e:°{í\ô¯`#XJ–˜†ô¤¦‹*º@ë’0p—ò@.Â4tÕ.A
-”ZÇkHZF>‰0ºYƒa¤v€\ã.”¸}p
-,—Pßôë}Œ1'H9°+¸BÈVTZàmG
-ÿèT€$*ŒõƧ™r» à °åC- ?Zц"‰c¾9“¼Ä=²)²Ñ‚Á‹Ôlõ¸
-H`RÔÌÚ."n‡Ð–Ýa‘ -` âzäÀ!P=jÃ'(ˆ>M ’a*€ÖŒ*§Ff]5®NV…õ`?Ð&af Tö†3 \%‰Uû%$˜sÏ Õ±ZÎ¥ )(ÑêɈDsaH{¶ÇG™ZËl÷zŠŒÆ¡ÌÜ XìsºØ’ûmPi=h#!1#‚ìïpÕQÒt³p@EÓÅM¯²‚ †ˆék¦1Ù!hÙ@4ß
-8(¢ä›D$‚Oý-Ù^úÀŸÇ°ßP=°ÏA?o2ˆI‡Ô‘
-Ÿ°ù{7…l,ãN‘í²1_Wþ Ÿ àP±ìš
-‡ÞÑYïõÊ„ƒFz÷l®DÊו²¯É!0T«>{¤e‚èÏVvˆ "ï],£_1ùqÍ‹S9SÎ^!GJ²ˆé¨&#ºÐ„=tFbTÏ„©…MPicKcš pö ÆX&R&H”üQ0Œ@ :·YH‚{)2÷ÉçpÁ™ÅâlãKð_݇Þ@&ÒÙ©Xv˜ul–
-¼D¢·'¸„X*¨@m‘VŽçM¤Öo»~YÅ:Tâ>ø‰7
-V§/šˆX<‘t*‰Pq—©ìèȺ€†"BE‚[¥ i»±ø'¤“ŽW&‚"ËÈOfÙÞ NĆ0²º
-¡’¼E4OÀ1™%N¡ï¸~{j¸§ì*-hÓ3 šû1]TdàDE—êÕΩÀ[ÆñL(oê 4„ÜŽ!ÙŽÇBZ#lûÂÚ÷ ënþZ1œ([ ù¿äÛ˜,ÝÈîP> yíï)(2kƒ*Š‹~œCnžôrŸ¿÷ ù%ê
-”ç¬bÐp°"†§Œ'ÊV÷òœJ˃/` ªu Ý œõ‚(v¿™Œ,´ÞP¶P‚8žnð$Èê*Mêžê„þBñÏÓ9 RM¢½<„ð5( ˜Àº>Ð &BùôõTQ¼kQÂCj$
-»‹÷ºŒ.ïZ o
-õf ÕDÆVàdµ(r^Sƒ
-Ÿr8|Ôöð÷ ÙµåÄ6pŽ4 ï~M‚b«½ˆIb~M‚jF¡ÊQ_>›€©Ü³Ÿ,™„¬ÚÒ¾”™¤•Y
-|TbãE:œàøÛ®‡ƒK‚ ¥oöæK‘3ÕTKAJÓcD^„=šÅݪ…n8(Ü!Ð2+’%-O†­fa\ÇFrƒŠgBÆ:¦TR㮥!áÙÃf!ìH7:{Óp8]‹¼èûQx—(%«÷ "‰Ê"_Ö9ØRZ
-þÆûè)M…„“ aé.³ngÔÕj^Ü%ö’ "y!’d®@,ˆÎÐgíðdK„:fÔzÛóË2FIJôžÌ"RUÞr}!mòŠÍ®ÂS¤>ù >°€ì$òKœÓF2·êIÁN©°0&
-Ý!réì$é¢ ÁèpZ~ܤ–e<„\”åÏSл”£×ÜH¨¬Öøטƒ];Ýì!l1x>•£[#"w•
-H˜íÁ­„
-'ï⯣[+†:…®‹Ìô¾à‚âä»F Âõ3`ŽvV¾ºïj׊
-±¬ÍÈu[›»]#ˆñŠúOäd׉B«„{ég»ŒÐБ¥ §3ÎÑZsÒïÛüß-ø”aI軶M†ºdãã ùn8ü6ÉD„"n¡Y}O27c÷`Š!RaUË Á°¿qË=è:È_'Ö½ûïøã¿ÀœƒwY&žß%ú³‚º¨•M€[Žu$ ˜F§ƒã%Æ.]%D0ØBf!Ÿ§ƒ  )–û.õuÆÀ4þÞjÞw¹NªB9 ‹<·z¼O<A‰Oè³T}Ú]-ÚsXCìKè™ms×&ËW‚=ü±T4⤩ø›P Û¹uöTu
-a*ˤÒ36/ ³
- ‰šÑ'AŒ)—n:ÏKˆtJUâyi·@Cù–(„—0ÁûÜ/sõd!@‚ 2›J"‡»ptòTx&’/{ï:š`ƒ0Ú:1;Y\û¶ë„`¼Twõë Ü,SÀz&‰Þº‹pVð­YS®h=2¶‡ùfó~²¤áaIÛgȈ@”•¾¤(Ô8º.š¹­Å
-ˆ€k›£œ Ÿå‚~CöTÀ=É€ïK$›²!´uN¨'yWüÒɆ¨U,gR'^²žòiº9ÌôAÂvªÁúÅ“»ÒØLÕœöÕP.m¡r@ÜȈ¼ X•5AXPã¸9‚A#XÇÖä¸4k=ž6íº´Hj_ª•Â €S·¶å
-* ÿ"XŒ_kbÀØ—ËÀ ‡ ¯‡ à–I£Bsœ9©ÊöP Õk
--µŒZBÊŽ=Áˆº<kDùÔ°"
-*”=òOþ®(ÓÅd°¦Õv˜±A™À‚Ù¹7IÔ6,•üÊ
-Ù³Ä8û)…N2°”q‡Ðˆ$Yk.[!hD#‡ ÝPGà\9e{äÈB
-Aö}·Uâ­é¨$ɤ(î,†¶(>Ž–>6&;©o™´[ÌkT•¡¸6ìÏ1(HTZŠ>š ¿ʵ‡å&û?ǼÙÂoï³la–BÀMÅ!Ííwÿ2^'É‘#G@O ;Ô d
-ò<Jîø¨<Á^ã ±á5@ª$ân?¾:ˆ‡Ïß·žw§¾/˜~+%6É×|äÄèž¿9LÚ< 1—¾˜Ðö–=çF8QG³Ý²ôw4³·ß}ÜIA@âie¹Næë&‰9p/Ì̯W}¦¿52KzYþKìø4¸âÛžÔYÖV2ÜÎЋ`ó4gÜ!¾3Ò½dç‡N{º‹¸ín¼ 5ž°€“8~f­ó­è÷,Š’ÜÙïk3Rx'˜ìgÇ (ÆR®m_1ä{RQˆ3¶óV‚‚2+­É<wÏŒKïãåyz ÖJH g–D¡ÊÉíu”´ü?®Ù*6!Çh=k+‘Oö{Lÿïì{&ø~Æ¥Á3iTšxÍy{ÞøvKŠxOleÈ7³[ô±œiåQ—)·#~HBÝƉ d·+*r-²…¾°Ê›‡©âš[Æš,eDÛ-%XwNùÕùÃø]í¥è÷¤‚;¹o S¯ó\¸ÞcH¯ä•‰ðÛɶßuÙ÷-†[×ßÞo2©¨–9â3g³<WdØ@ÆT¾0²~"ä–áÊðu^7 þdÎBŽŽ”pðó•_ÏÐ'ØŽž$³X t>KJ,¨ÃíC‰6–Î̶—iš·oˆ.ÎÓÐ1?_ᇫ/Sðæ4ij¤H¤—œâŠ'œÍ,´ë‚±õAȌս¾®ñ)ó)hñYòÝu½Ú%<_
-œÿSƒmVl`“¿ „¡8ì¡ÿªÚ1…b\pÔ‰›»¶Ò—Ìl ÎݹhøãPÙ¢;TþøüÍØ%§m?LèG¤Jñ[lËåïߢa†âÄ?ÐtÖ¯ú€aÜÎÄ`’Za²k•x­„¶}‚9>ÑÝ¥û™Ô¯à6êÑɆ³èâ¨h® $/;v"M%#C¦Mf×Vh­s'–†¢ví™Ç©àCVXœkl¦ËñˆÝ,ñŸvZÜt÷¤zæ$ :*@Ǫà~'x¸&XPb–nx¦ÊQâÙ„QN•€iŒ3gà
-ݶ%´ß­køöè)¶ÜÛ³ŒCq‡Ò¶/@µìdžÂf­~6^kŒq(‰'aÛÒÈÿ‘ôŒp5Çu¾Ú‚P¸0Cüpm/k % †V1dý²ýæH_¨Y§HHdÖhÏ9¯ãàú±E&mÑã#ö7T4Ž 2†óLËB‚ÊÙ׳
-\ÿéuõš–Q”Æ3­P1(¤r±BÜñL²‘@€ž
-ÇŒA€Š;feŸœmëS7$fÃÝZ|EŠFÉ>¾ÅæO''pa¼ø>Y–y×Oe{†*Ä»˜f¤{NX4Od:—o#ë-rBƒg ÜÝ'8¾|›8‚¨·èE™\42s¿†‹„.B±L…óÅû!¿}Êâ]ðƒÝηŠ¥¿Îç1€¶ü°LüóëZû,lôÚ(îÛß@ÜPÝZSáI¾®Õ51píUs®÷Ãœ%™ò®eÚ ø’rÏ´¨ [€BvË |èÏ€±û¸º‰>Ž"ãÀ<Q±:ªˆ$hŒI_OlÝš§0£ç˜N·çž:7KŒ%ÎЦ×<M€·s=Ÿ>ò 4j[¾íAaÍ · @ò ÛFýÚÚ¤œ#lâmîYÂúŸæ=m°Zߺë¾FÌã‚¿
-˵Í@F5.³å!Õ=ó€jú2õL
-½ïûë%6Ïð?ÓDf(uî*ËqP›˜N/‡øÑr*TïQÎ:HÎõ¥j]%Ÿ6êoìXœ[4\ä䱉æ9xÒóš†Ö?Tõ×k‘O
-g»ì{D ¯±‘êC¿f·8ù=â8 Ã8mPkÂOB?KÎèfI“ï¹QtT1Û¹š™¡yg>ºC4#y½7”~]pœ=Gø£$[ÑÁrpØp»Þºž’Ýmø¯Èá:xÄoß¡%šŒâ¶}´î}C¹Ëûl ”¶û¤ÆÑÆêýyó” PÖ+pqöÇûÅ‹CúvÀüŸM;ãÜÉ›ÇIÿÖ™Ûöe~í mË3',7ÌH+½D+ËÉÒí_ÀNï]Ø«¹•¶Æ ò²wæÄÔ—èÕb@²¤3æ¾t¹g¤ Qa–W 7ûÙ|пÆó¡¤p^™'®ý%¿'TÔ™TX×Xþ¯×Ù$¾¶eÐÊèUóÝîiŽ/^Æèâ%~ŒÇ¡¤ü•¸Tž9/È£k½jóæâÊ]CB‚Öë½À‚务
-Z^¤(ØJ’FhÄ¢?$X?Hq°Ç,Ò_©AŸû­`Tœmäã+˜iÛÙìî§0T4ò u|‘ɧgGžo+«¨ò4aî¡zÅÇÝâög¢J Red»Cx¼’±ÕÅ5ˆC­œ_¾âs´¼`±ôüá4iUΆíÇ[=Ù¥`³¶íãu0N9f _ŸXI;Œ”ç§VUCc:¯XÝÅ‘-W’tÂ&¿/)ßwí4s`a¸E'ÏþâîÆNbE¸¶&¾½š%ü”l£S«U*ôVB1³
->Ã8s«¢HÞ^›•BçV§ÐêX é›°kâÃõzï®K‡IÚy¿j¤ Ìyé÷>()<9­žŽ
-ã‹J™‰cúxGÖÐ홨°"Èl´2×Á
-Èö¨$½ÉÙòS(çdê¡Š¾în¢‘å+£†n¾cp;|G6Í…>+ß¡ðÇ4 =2Ö©‚ª
-–žâ•{¼©
-T…îöî!©ˆ”ÐûmϦ¯ðäbÈ Æ|œ!åã•,ËÉ…¾pÖs£ã ñ| ÝkÃOèû4’g $ëÈÎÏ]­”hÍrˆ3sNLôûÐ;<ÓdÆ[T™)-ܬ{÷ÍU²dð“í\“mÆqT¹N?G~Õ…a].U86jÎD §¬Bmÿs6òµð.×Pª[˜Üí¾oÉÍ¥†¸r꛵ïf`¨æ£–&a˜#¦‰‘Ì#@ÓAq0ݦ…MŠ¯Nq™J`ìÇ’ÏëÖ½AÜ„jµQ9t¸<œÃ(V]‘ŠîëtÕc¤ÿ<ÿ¡|Ì-µ…¹å_‹Bd]ϳ
-‰ĪA·<€ÕÄôkñ¡÷D¡á—ðæ ¥SáB
-™¼LŒó@}X4vÈU™¼Ä‚ӧ$"Ø
-ªålÄâj©ú”ó8&¯@p.o
-=÷gêÃ9”!i¸öùp›cÑèl®QâË«¤¾Ìš›c¸TgiŠzÇ[ä5¦/òÜI&]MtKý6\Žjû[÷Oáôe±!Éá£#Ém²nçŒÍ6ß F‰©@Ïf ²e;´ÅcÅfÑ6¨u+£iCRÊãqθºr´@:Ù/³~#f=„6Ñåyà B2`’Y@vèø²OÐÛ~þu@›ÊHª¦ÇÑßQgÚGKårÖqx7ZKÇ2ú×¢í¥b)Êy¡`Ù} eè‰^øVôóÌc'¶C¿0×¼an‡@ÀH·æ¡<@”Ĺ P®¯O½ƒ¦ ßÁ</”ãaj{@ –8_y’ZâC¤Ë´ «1|P¥;t5IõíxR¡MòåÛÇtóoÈÀdVùy*¼|.2d”À+ó‚±fÓ" åáS8j|^Ǽ_˜¦ðHìÚîýñ០÷ú]o=øD\Zù ‚¹àC¦´ÚÐ0‹øÜ/’êˆCÓ–œ|®ØTIJÂA€d/X€áBbÉ?@ôž-Ä“Ž•Î!n’$TÂõô)XæR<œ3–œÖAÉ”£Ž è‡ñUÇaLW, Ü!ÏzVóPi&PN8/µ¨ñÜ’OèÓY;¥g@ óÞM  %Æ6µü9\GŠ¨ÛÛˆçÆN,õ0ɨI¨qÁ3Òx¸”K€!S¥•ë9ë{Te#NªÍß-Ã`ôS=ž4
-ˆÍù/ÇÜS¯j¤ ¨*"Ò Úó—* áéÓ,Ú$ÍÈuE‰Eþ¨¤m†©êægX¼2CUhÐÑx})É™ðÜmtªÊ}@ü&z@JQ¤è;†‹"0³Œª5aÀ“F™a,4ãxºcõfiVv÷ÉaöŽi_&å@dúÛìˆè±=EáÐôõùŘýùÇ ô&2wø¡Dr¿†#•Ÿ‹‘éT]ÌJ!÷ó×óï9’p ª»ÂÔ¢|Â||+Ó2&Ž—µ”oÖêÊßKT„a”=8 1<ܵð6®¿ ¢¨©A æêŸ{«ãæÇoÔútäë?”a~OUÌ9 q1$?ˆÉbÝÒ’_s>»*šÈÖÿ8 Ü7¼Ä9©• H¬+¿æº#-MQ,$/DÒ.pHqK„_!ôCUihÑI=ØâÕܯi‘8–frAA¸Ô!MÛî³ZM˜¶¹±õ}ùø“츈½µù‡0¬D'vb·È@ýâc»œs†Øfdµ[¾¾TK2í´« $^Ç™q¬W±ŽP“ ŠáÔ% ”G F†çœ~è^é„}eÉ¿Ì'dsyö“Ä›Þ1°"ÄäuQ©Ý­Å^.?¡;Pff¤„°ÑY{býE½¼|>—[Ï-OOƒº§}‚þø5¾®ãÉé[±w³°>¿öºð/ÿÚð¡‚”‹èâ톘 žê îÚo3¹?™bgt™s ¶‘—P`´OAÈ>ÄÕ¯P÷¹0´cCƒíœƒ¶1nô&‡à–<&‘JõåàM‹ª#2÷šçç×£ðŠmüœw
-<V$Òç˜M<C7½áè&{Q¥i‰Þ±á8T?" CÊíø`"4ø±—ì+I j_wž¢¥4¼—ˆ$$!Õû?|#jJ‡š)åõ_ýâ~Ú8Ã}ˆA%gܼ)§ Iv?D2D Ø€Í=‚«fý°Þýâ}l˜³l)‡YSh'K ï§$†iòïÊ=ŸAÌb7qqú¿„‡âéz•˜6FÈçó9†)nÆÚ¸Û˜Ea+õø¿>¨ {µb#š¦‹$°võOá™êÕ^¹.ÉPâ¶û™Ô~è‹g!·!¸¡†ÑRë¢kÌ憥w|ê1%í}*§~@ÀKAø'AlÙöì¼ìUЄ˜”Êœ‘§ö“Uc/¢€{ ö5c¬1+¨‹wë?Ábsçmm(a4ÏìԤ؇´à.EZQ
-¥°—‹]E‹` Ä…Š\°]yPÑ©ì’¶XH•ËƒKÓèÕçþ# YÆk:ÀýS·C"ÞX¦sñ&êÕ\Ô •©ðaö±~/ù¢‹Ý®l
-„•D¾ª¾ôçuGÁ`9>,æÞÇ?Ý@ 2Z)º¥Ñ+]ßðMKÛXCan–Ö !椣YÂfR6"W/Úʈwã`uÃo¨Ç.ç\
-¯ öpW€¢oÆÅ] ½Q±ÿéûŽíH¸™ñ ª‚Lg4Ÿ®¸9)QÒ¤(}âCËè6Ü_št>ŠhÞƒãUoMebéx‡”ÎV8“´<渨5õ
-]ff‹LÔÙŠAïпðïCŠìñ~¼¾Æ™[Ìî%Àgè!êuX Å -€Ì»» ˆwÛÚYcb%µ`Gc&€<=ǬիO¤Œ!Id©þò‰ ]‡ù ‘1ŸtiÒ­óu³BLyb Ž¿µ—àøBI±WfZ‰e cÿÓ© ƒƒÓâB罿¡å×U@8â'nÍn(ÙYi µÈ¢t”jBW
-†ì ­@ôÊÓSB‘˜'vâÁgÄCþðÔ¥ßÙ­8gçfb»ì%–{ u±¤«¯´Áóz |1Y“±^‡ý*¼&×Z¶mœÕb.5ü©žSͨL¯P²ÈJ>-xöÝŠS’¬y8àq„þûDfÚ‹âMg,…-èŸ8O‰P*ü8
-Ž¬mÚçú(¸Û ·5ÝîS¸ÆaÄ&Üã6zîV¢mxŽÂ§Ñ}Ò•iÂ’¢j£Å—Ü"Ý_%ž¨±­ttÚ:½¨¾z›ðkÅ7ªÿùãRÓLÂ,ULØõ×­CË 0„nßîH;Ó\“3祊–cÁd–—6V
-™®SÁ·ß1Ç<q ¯%š¼‘`Mè˛̢ … ¬'+ŒE^bŒ“Ž¤ëûz,³üpÇ£v¸æõž8_bÉ'ŽnA£Øåm­¤Áœ¸“¹Ý«)¹TÅ p‹1Vrƒ«:º|)‰!}›õ´,jBE2x#JÐl¤~ꥈ^¸GŸ¾ºd6jl÷Uàï^ŒÕ|ÑVޚљñN ‘Ÿ&#µKŠrþäÊ4“)¨%º™‰Þ,gaxäJ O¶yËHÓJ30R –oI9|¸á¥HÀÔ
-£ÛLähâAÛƱw7Ÿ1%#%'Œ·éoî ±pÀ¾³5Ñ~™Üݧ=¼woxñ–Ì"ƃqÛq dÁäc7ÜʽËk‹‘4.!–í (´$ÌÚÛ,áÂUòL³\0eb¹ x‘"úö€ÌܪC1í¸ÌÖÍÉ)ža;GÅP÷Oø4ÔŠÕ/%?üïGþúýd²ô™P‘g¤?¦VF†¯¿ŠÄ_¸RÎÔô¨”@J¢Xýš£‰YQ<^ÈKY5vÒÞˆ½[“`¢<ø§mÅð3Lãâ©çÀÐL%B+1 µiJw'“ ƒXŒaXÒÆ”ÂÛ=H£ .IHã(V!ú ¶B¥š­#Ñ&V?Uh
-úä3³³U{ãCQ¹ÒöÚJ^›’Zé/àl0ÄC²|µuè ˜AÛ±–Vh@ªQ‡"…¶u)ñ­˜ŠT4jýðöÇ:4ÿlš¼òp+š§ÐvÎ3‹¢ÖÓ\§oµ”ädîèx«¢nb²ºy‹*h˜z-1X^ªª(í^A3µ
-€q\ìp›ëa¬ 1oèÑ+ó"¹éG©aýv<ü@ΘÛAï²f¡róĶ*ú9OÀ>jV º¥
-#ÿkMšL7ÿîö¦·’¥/yõiè¼UІ— @»~¶|Ðä÷Wêê6)pXöu`YäÍ`ɪX•NÌ4ÝJtý^
-)+Oxá, Úè ’H¨'ÀÆ3Ì‘c°+"f¼£DËpÁçÇJò`?;÷¹Tg¸³Vœj2! ‹%K}J`¬!Ét3ði%/ý+šZªHÖ"Â-Ì«rå€`+c‘@}ìÌŒçóJæ<7fN¸š)™ø]ÑÈo9‡;B‚´PÇ1i­[Üð
-û²<]ãt³_Å™ˆ'l°ó4ŽŽ½‰Ý[ѯ§"°Ò7Îz7œœ݃šèsØèK ½!pdËÞ5pUXu¾Ù@è]çZß<¢U$ºÇLãv£9s×$°®ÓäKÑ"ë@$²eët$Ó¼x¯yPÍ -Š’"ƒa%«3äâø}Äù³bÑè@oá¤ð KÓMÞ9ö™ÀѦ\Ã%ñŒd8$¨Ö³Ê?\øŸÿÁ©ÿ§Ïxú½Õ•ÄO´ûšQø‚õÿz(%E÷C~Ö—J4.©§o‘X0áH6…`Z ¬9qŒÑ
-9bz‰qè:¸àä*"òba†ÀsÔ¦Y”L&Q”L:’AE¦G¡Y´ËKùÌJ¥UK¢"…ºhFü}«a.<8  VQJdkÛ ~éd>TmŸhI̼z¦AU%:š
-×Óº”°Õb –^ªÙ'~_gys˜9ä|DÿPÏ Kð¡dÕXؤFÿ`ÜZ]šo%:%qäµç¹U‡ÌÙXFpiÄÙF¤œ8 ¶¦ š3¯%oh[]ŠCBTaïúu;L3v‡**Dx»j0?¸ŸýûhzŽDu˜¸”jÍ1çÅVèì)ÁÂÿò?É^“û—" þûRbSÁ±H´ãÿBV`
-H‰Œ—1n¬9„Oà;øÛHŠ’â·áÜb‰ÞÜ?¯$ý Ø-/pÐîj‰"‹Å¢âÅ?ç|ùèæÍ£y«ýó?íå3óÖY7$FΘuð]±imŽVj³ÈÏÿ}
-*É훟ίл¡ÇÉ_†ÕD:Jz@6c /üt®W<—; ܺä/µ—I†è×U(j
-òÕ¶ªm/TjØjSÿÅ8…â
-•ÌÉ`™ñì»ðÏÇL2Ø
-¤­‚ ìsû<5˜FãÔöUÇ|áª1Ú‰ËRå‘Èžé_Ƀ4­O/"õüŒR—\¢—ÓlaåLßvl Žµæ¾Ê$ôç’˜ b`P4 c_ç`j— F\Ï9%I¸¾¼i}qãZ®Áj^ \U`¹¹²&I½C¿Ê3–GÏù£Hðé¡ü!“€y&ºÏ»=õ³’®u9éT&±
-Ïdã†×悦c2‚¢ÉcåO†%8ˆ8 Ñ$5~´ô§–A`žìþ¾Ö`£ÙOj$µ3ðm¬€¬ÌwòLY|½4Ýyö‚¨Ü¸³!…>ô› o »ê¾*0Bu,Ô|ƒ·³.`^ÚÊ^ð5š0»]0.üË–û¹C˜ƒ cÜíÍè
-¢í¡Êr¯s¨¿RßÄéM¢\žÊåײôЬ€£ú<•*ÔŸa4ů³aa%HŒÀF‰™T׌»íYæ¨owMðÌ+ý¾AÓ«“õŽQ±HÍPeQa4ß ©`Íj˹‚£“qdšös
-?a
-¼7)þòEÒŸÍR5E"ø¾-wÇ·¯.—§]3jà9É–÷c¾aVŸ“õFyÇÜ<í2C]^‚}d5:îD¶¦è˜sÓ"6š2rœ–X~Š½¨v@rbŒ³@dt6 —ì¯8ç HЖÄWÓ¬'A(èºÝˆÂÏ»(7Õçˇód:…ó(ZKE‘ÍO œtŒ
-:Ó®òœJ5´‰akjK Ö€åhð@4*p•Ltò¢:¹úŽÁoùÍVJg JDZ't w:•ø­)ΞÆ( B:m5r/Œ¤q…4ül#Y°’‘®zQÃý(_?Óå¤hj¸ð‚¦áxxSõ/Â
-¹÷Àpf¬ä.ä›6jKž$.µ?]@Ve)hÿá˜/nüù2ýð¤/ ßWÍ« •Â¥–Ï2KA‹k„ü±ò™·ûÝÕ¶ÕP°bå©eÕ2ËŠ8Ï3€Ùfè…‚[ëËV@".f@³t¶³†™ØÊû½, `hP
-ÅÀ„ÆÅAœ%ŘØhU†d?`- ˜Pùl:˳1j™¿«RŒ öˆ¹XcÄ+VWH0Ǿ zOù/*ºÇ‹½º–GŒrËuà ×sÎöφæÓѬ’ø¢eL ƳjDíö5DñƒÆ ÜCt^M.(8—DwQ~F¬–å_„•5Þ-Ÿ‹àQu!Ð6
-äcc–ôÝ|"ÚÀš ·KØI”*¢ê
-G ˆë­•ÂzYéK×Öb¿A=L¼,5—ñ~¶—n
-Ä¿Ì$Ÿ­CзA  •(½]Þ.Ì ƒB †2Q×-ðïV›| ‹a®¿{G:luPNÿ|œƒdÌÐÜ,-²íR¡!Qˆ2{Â/Cf ÔË‘ù=þ€†p€#ó{bT ÃuH|{Í+¹‹~=Œ6¨0Æ«Hs¢ÊÁêìÈ¥WÁÍ-¾Â²Dê€ÙJæQÒ
-¡>¼´gV¶Îú1§äP.ýs65@B%–¼y¤0Š ä@‡[ö«$ÀŸ9€…+Í2k½ƒ6^[Α‚"$jX[˜O(œP’Ø4(0{5l+‡2îˆpøܹÅUÂsŒMi¼ †¡­` Hsâ1h«,ùŒ`·Ç¨qT®éûñùñïÇŠÒIŠs¸$ Gf‹}cÉŽ1õ/‰MGRíÇ×Çšh9>E×Ècöwcþ¼ëû÷|éÕzãwÐC«{|õ!æéEüÐ)UY™U}7æéÕÿù½:?þþ˜(ù$·aO¢†¨GBõ“1ÿ9Å À8­HyˆŠš¿Áy %ÞmØ €ãº…ÐéU¤ÊÖ¥œÐùŒŽ0TAFH;ÉxÅ9ÿ ‰K‹ªÎáÈ®aƒ¸W¼"Æ`ªX…h€§v p+ä°«0*ÚQîo×€”lUƒÈ˜ºá;#”[[PFB¥Ø>Ч{€1nB<£(
-ò"äæjÎAì5cz·lõ+Àœ¥?—‡°†›<Õ®z, ‰ÜÊŒèH¦•Õ)Ô£4"íIá
-™iˆ"‰ ¦ —¨33‘a‘2“:ËlçïbWÑ&u®m=žƒDá5yéêë50ËÕY• KM¥{â*(•4ÞÓ÷—$(ŒR#ˆ™ò—Láã´â|%{J§fG¤àòL숾qPº#A”Î}ßÞnQŠÅƒqBIý=áÛÊg‹ÏàŸÀ¿'e*¶(¶Ê,>ŽxM‘J‰Ï ºx6 ûyb6¯EvyHûGA(ÏÔ†”Eret Ò€!'X3Úº~©½AÛ,s7Ùeãª"M¸ôØÓƒ,ÇCYâ*u dÊ*ÝcB< $ȹèQb«]KN–AY¿R…,Ùi†ŸíÖEÚ|•‚uãèéA©€äC&SÇXÚl¨sH0·!KY,ÁE|K„ËR\@nÍͯ’ˆ\ÚrM¥évð”%MçNB͹‰¿\XÌ=^BÅF楥„èÅŠOH½FSUã!Ù‹ÔVâ=ÜI©¨*Ç£ „€:¹qÛr¡ÆI£0„zÅ´vÊ_b™ :–ãz†´™Ó²ŽOåÍX±{QJÁÖ v»·“Fº2¡ñžYåxØ6€Ïp‡CŠ=ŽE]( Ìh!dÌdk½Ú!À –—€2ø‹1çé-¬ ‰»Óo¯äå¶.NÕQ‡æŠÙiGÛsu¨°Rb¯Ú€8SØ%F2L¡þÙnÄM@”35S{PÕÚùëG€è¬=G\¨À«Póxö¤Ó¿]G7, ;I†
-´æx¿fy¶PgØÞÁlŒq]:@²”)×
-“¤{v½½•Ñ8]K(V@6iUhða"¬Î&º{u¬žÀ³I©Gê0+§ Œ†„u×âîKQP-Æ>”â9±Íë¼ Ñ†~Á
-ø „]’X‰v"µ¡1T{hß$äÅãó/ÂAÁÁvVÐ&“´ôñåMaʹÀñpÕ¥±Hb5‡dGâj¦n5þ‘º {°
-©`n6Êö Ét`îI ýÛ–šfX<dt6 ƒš(VxK™ÕC:34™cV:&Å$G]¹Ä{ð=ácH¶»49òšêäBHc`Ë&«l!BöA
-zBœš·V5Ñ „Òù´Q·9×õÒ4ÖÉk!· ŒÐ<õ/_§€a|†p¿ÜÇ“% H
-‘¶RÝP‰ÎÊhí"„êŠB™õ¶O ô\?Ö£‰•++ëã}`ÌÞÇäþŠT<ÛZ‹›Bv–†¡ç<’3 Go29ôx„NgÂa¾„Q
-6µ–—^Já‹`ÒB•ë!èÛ‚˜Ï»BLc_³ÎÍ3{Á©t,Ù¦z(‹Vmo×NÑHÊ)ñSŒ™Ja¬~ˆ¨Pè'e)²s‹1@v…uÿ<Ýõ‚¹ò*ã<é{
-TÔÂ]¬¡¿…Ñ€!WBsFˆ(²ÊŠ¤ÊvÉâ1ñ¥ýJfD¬ˆjÌYSÄ<Åòà_(Ù <@ªsÐo™k¼Œ?€Ž(Ìm3 {2÷©ÈàÆ)ì}ejb6YTÜÚ›~–Çi® .¶L%¡)35ëayßµ„¶qi^ h«2WBñXºE‰
-ÇÎe!›QP>Hg‚¥T ðè.L¦ÙJ‰fdº±€0ƒÓ]öòùñïÇLŒ±–ŠÁ÷öèLG™Ÿ&©ÖçãçE~"ñ"º„âúú˜ŠyÉþþ?‚þ¸îû7}é釳nrœ§‹çº
-ÉÆѪCÐ׋ -¸¥PÁöõ16Œ¤ŠBmúðý˜ûe‡ìÞ
-b]á'Ð ò*ïq€ŠÔ$¥ñvÐ §Îmy³ÿ®·Ú2X¯$ZÜ’ c^õs zª&?ärW  õfÈsج (˜$C_TéôT¥ÃmïÅV0ɪö$owŒá^€Ì@ÿ(
- mI›Y›
-›³¼~oÇ:jL¶FÎLÑâ :âBÅw™¼tÜFvÈ¢ü¼ÚcˆsÅÓâO«%\e|%TŽÀ"˽Äç0š’ŒV¤[’ù‰Ë*ák‘è|}OŠ/6)B“ßäªù¥h&²&Ýöá«0†XÌšÃüBç¨%Í¿ßmSÉ“±+ª‚™4¡«ŸïüûóG\dعDÙÀ ŸÑ]8üÜ$BtNw%9ŸÄ®Ì>NHCvÖ?Ü÷‰È“’Ú)Á‹cGp—:ŠL$€áØg¹EEhÊt©è‘2ÝB$ÍîU@d ¤,JšZ¹PÄÑ.´žJü*
-¤”~Ýhâ‰RT“U‘·?Wñ°„“ÊÌõhDBEüyD¬þÂ~qI…ë ”
- ¤aÍ+ÑÎ/žÑq7˜ýŒ½pÿï¿,×5Ì°(±àÌfí]þ„5:Âà#&é¾°h =Út‘ÍC%@^ª —ó$AïÆFkÝy"AJÎðð-ácqØŒÚÔ̈ŽVAŒmÿ¹¿ ‡BÓ%µ b¹’$ÄW‹>žà(1ø°ð
-J¸iǵơS1 <—ŽÑEuã™’ªÝ«¼ÁTA^H|&³š}Ïõ‹ôZbŠŽæ:GFéÎ@,D·jž%2”p¡k²3sçB€, 9×½oÊÐo#tdlQB˜#Ô9‰Tœã„ÉŠŠïÐ>”Ì?Š9³‰´Ò8Ó¶„B@#+o N‚?–áøÎ9ðfqPýÅr ‹ ™ðÅ1„t"⥎°¤í$H…wj·‚¢7W•¿x­“¦‹­nPC“³h4ÌN\„ÖÁÔ ”†}¥áK¨ûP’>’0hÃáoL42?‡öVT¥™ÇvAˆø0ôÁÞ%bö^¦„ì”d²KÔûöUïE& «¾ÂùÃ9Œ¡+‚æö±¢Hd†¢Ýç›drLSùôàž•]Ù’5?ÝôÄ“?u+)ú«ò25ôÿ*BfP=„m®_†`°{¸8‚Ë
-_T¼xTôÜ¿ âuAÉû0åÊЇ$$åKN6‘‘îZ…ïA@±&a Í W Mвs•¡ö°,ö{vsú€ D‚~!¤¶%ûQëÙ„ÑøŽžÇ§ŠÿSäž&¾¬u 5§E¿ÝHªXoX};Ÿ0QðE²M¤YqÕÇWœ&—&K„“—g% $¹³(·9 i¼ –†lQÇhpjyžCZ•?¶n.‡þVÈ®v8ú­À•AÝ“kGŽ íC™iäÑnÁp×;ÓļS‚@°J¸L~è"õ 4€õ"ÜŒ±°Ké æÖ.áôøûvZqV Jrí^•ôŒoÁ¥ SøJg´&I`ÑRW*<mã
-=¿ùþ©„é)¨¡7uY€ÄÁ§«‚ÿuî¬è^¹b „\Ø ì›hÔ‰׫,$9ù¶*õc
-¶f«:Ãõ{)ñ(¼Eé'îÌù~î –®è1ö…Th·†ì\‹?Ê0D±nKk…ͱ/i;ß ÅÖ5Ø\ÏaÏlnÃ9,Ž 'Ðä4¢yRPeþ1D÷˜gÐ &ÛÒ²do†àS›œÜ
-Î4°ˆÇ»2JdžƠ“È'þžïZx#UyY¿P' YopMV—Ñ XïŠ4· ×Ì+"jÄücVeÿ±+í(‹¨¿M…V*ªÀ‰d Àï¡F”F‹ ›L'aeEbL‘¹?¡jdVØT.£A”h¯g“kKvtÃ0+àzNgae
-*K¯QøfX‚íŸPkàNx˜¶ªæ•”ŠŸb/u€¦]éjÕ|‹ø¤èq2%néé‹„úô 4‰ûñ] 1aŠsmëv_ÌJÀ¾É²ÿ©ÿíܦÝãÐa—Ç‘©˜GÙh`Ô<„$‚U$P¢R!Š_= šåzá0ªî›cdÍÔÜÙH9K•–; ‘Sž¾<
-ö ÇþCíÂSyÿÓ.ÊÎ|Ìp…»p
- ÑÜF¿C*~ˆü­”=T
-‘ü¤«lhÛ* ”Ív*t‹_ÕŸß+m,ˆÈ­‹ÎéìwB!ŒCÚ/ÒrS4˜=„ù¡ÙhzdE„tp’ õâÔE…(â¨lü;‚€P e‹Wñ'²jIT°ÙØ'Ä O(²2µS©F»„ü¥É€‹œã˜ÝÎ1°ÕWQ¥>„Qa<l%ðBI ¡/@Gé H.— {*à€oPe ÃoÆÀÙŽŠ™£5§è‘4¹GÔ˜7ây°ûmÔXü­hí¤¤Lb€Â ÷ ›öKAÃÑ„!+ëTÅÌêR²É
-ê>¨8EQúðèåÀ® ·™øeqª ïQÁŠô3žˆQ²ÁdŽ(¡„-®Ï]BZJöf¡i$a7^@CšBp&Ò«ç6r%4ºË4z*<!Ó€Ëae‘„ΡÙÂtú•j¾ ´fC£é¶ƒo!>¦(%kšÛ‘6u+h‰]irÞc*)*ÁTê^>BP”EŽfzdƒrÆá±öŒðD½zœw™#P©ÿ\åõIè3fMÈ<Ž`YÆè@“÷N$1Â'òŸ=€`IáÊ]¡J¾¼oD;TÏ#:—ÖË-*5ÓÕÈ;Ú„òg¬X*—Á7Žà'Ö™Dô¼êb:Tq8#_GW™mOƒèMh£ž<zïܬ5W§b¬ÉŸãd%ÔãÕ(XžA¸urƒÉtŠ¹ŽD9éß²<DÆÅʱ‹_”Š§BJÈXh$[¿-¯|Rœ¥yµ^áÑßàz§rllÒŒ9Šƒ&ëØo˜ÎÏÇeo)ÀÆtW&I¢GÙ‡hv¯5Á‘ê?ÆO ‘ÌÂ@V ý‹”+›Ï% g‹0¥b¨™Í!¢Ø¢iJ|©Jm3ûÍ —t¿¾s'¿úå¬7Jr •Š¶+¡ìО— Ÿ‚þ½bĤ¦™9
-‹9¿óžìòºo=EMÆÛ6–dC¹·øôÔY—R¾ýúN½Õ–üõ¿?ê„lpR@EÛ*§CU
-Eä§/…
-bW{ÑúŠ 8d¤µØr²ÂÙ±ÕBý! ¦ü8Ÿ´C²lÉœõ¹C
-ŸˆQñ-y§[„H²b-R•,…ŠŒWáF'ê(Vx‚5oƒ"yˆS]"K ƒÌY`ºSÁàHÅŒ¸O¢ðÀ’BÐ9>A”¯öÒãÑPÜùÖkÌ!ú$£ ª]B<ÀG*=<*¿Ÿ#v.4ì³"-Ce–èâ«|γ3¿ iý¨
-°I¡;”ÉÜÏ Ù¦J}^nV:J9Ö1X¹…c…Ú
-R¢n±]”œ›RÛ\f˜õè¥'$mÚO"ˆµE~ñCh¿ú£UEW–:b !Hê*æžCœtVífk‘ˆñ[ì<Ìtåjp Ìć¹Fõ˜HžÃ•¹³Ÿ“IôµIé¨'$ëÐiø=éXTsZ1"Õ3¨O•4ZöúqûÄ…Œ­%èCšÒ|pêµ€ð¬¼æ([Ñ)„Ù´kc^܇fB‚ŠL›ßDïmüÞB|ü*Í_•Y³y?{‚”ò‡¡Ñ¡¨df÷mx9 9£ÑWdâ}°c’r¶‰FÁY€ Å
-Ö¸‚Îð­ƒ×˜á:t€â$›Â‚D*pMF ÷37¤°Ío£@Å«Ä Œ4¯!˜RšËlA2µDªgèS¸"õlŽù·+½G¼¹Ò{X2.Ä“p‘ˆ²Uì0TÒ¤hÊîäGå@ñ‘Ô’e<‰.AŒ3çÐQûpÌ‹¿‡¼p⟞ôô몟y“G§
-¨ä÷Q
-³>jÔOZîâéŽÃ(LäÞ¨Þ”†fW°6ÇÓš5æÃmN¥Ù°ØôÂu“„&@»fLDÀ/èXØìA€ãU yvKPD³”jYœ38’é’æuQR×ï‰Üâ”n@ŸÆŸ ùƒê¤¿Ssì ¾3{Ìñr# Í¢k‘°Ò0>“…«svfTËpqµ÷ò-d³3"¡©bŒj½#z–«‘~›éœÓ¯èlž9†‰_ð$B #Úé¶>X‚¡ƒù/o
-bpD•)u@ƒüŽ~‹®n¥™<56h½³3ýt!X6âMÿg¼Lr,¹­(º‚ÚC5(° ’C£<¬©W`X#ièýûœGFÚù$,À¶ ôýAò5· „€Ë9h¶È"(ùŒƒ&a 7çÎpá .ë3v>yctF´™7¡¬ÎNý|˜Ð_˜“ÔÓÎ7÷aaIóY©€`ꜷLŽàÉ÷Ò¤<O²/ßÒz±ò¥k b¯ðgñÃ/z5}e»£$åMÚTüíG3q6˜J¨$\ÝÒxé.PÚ»™¬boSs7¾€¨¸"#ω’4ŽNÅœ–Ó$Ä »ŸNì¢=y½÷ÇÆz!dE&„^f$Ðò°¼4sÁú 5#I}Ë|
-^ f¦jHâÏÇ£P_ÜÄ% ðÁóòWNT}á¸1ZÜg°D†Aˆb'ªÙATh—† H‹íLµ¦cö1ðKµº˜¦ýô«kT2n¡Ü¦—¨Ay`4 ~G÷Úd¶=éîbмi¨Â^À,Mßq߆]‚§j˜÷Qe¬ˆƒä°½Vˆ
-Ï"1uH)JˆQ24v“îɽÐV
-¦bn£„M£Î7EÔ:ëä‚Ô»|@ÁËÉJ/Ÿß~ÿ–¿ÿý[ÍpÌäÝS»[Ž³àhTgËq>c.è9ØIÇŸbµè\µŽ³€ãÕ[¸:mÝ¥ìZßláÊB«Ž¤%¥Ûašê86’ûÈgËÏL§š˜
-ûÇŸŸÆÓA. ÆKzOnµn¿”ýFˆeÉLq‘“õvüuµ[ð᪸$n ø†ÚäۚÙÅÈI…°°ôÑ_äÛ(Ò"¶‹_¤åx‚Baéh=Á6t?R‘ ¿mà/¨ÑuŽÂ±?D¼'a$é«/ÄàYŒm1ÞÆIÚÈvñCnxûM¨rÖ1¾ƒ,6½$_¿!Œ:aMŸ—AÕ'I’¯Ï²ni”w˜fÅ<0(f´C·/ö- tÛëÕv×˜s²ìè_@4 Hò‚ñÆ}Ô;(¼…dßãUÜfoHZ9
- aJb„9npèÉ%yŒQ?±ê7Öi- J7·1‘dKÈŽäÛ¼áë‘N/1ˆl=r±Wü%§œ™`h©$t¾ƒƒag`õµöl±xÇúên’ð–ÔÜ eØ -|ÛÚ „uÈ•ßâ(Sg­|Ù: ¸ÜÐ|Ä•i.K€ECÛ”ÝÐeÞrE§Þ–Ê|6-Ô5d“þ•ÍûÅ‚¦­4³<.Ïwˆe戸õµ¥æÄJPZ¯žº”0 ndž¤X
-ÖtªY·¯áç3mÏsb†Ýñ+Ûçû+Ü•Jc0’4àw.öˆÒ3 L̆௧¹ÎA9ØhÖZÓ±p-ƒG‡º8 ¾kH¼:¾sDÿ¡ãýØž<Çæ1 thå›QY,˜2mA…©âîî R=öKëÙ1H—¡”¨¿6=@+û+xŽ‹‡j ¶–åÓyÔ²”îñÔË<
- úÍ4ËzÄ»gµÁ£Ñf
-?Mý~=ÎÇ_qœ¡‡×Õ>‘-gSŒÍ¬„Ò‡á%L¥EG„‰23èjRx•]ušd¬•b™ÚÇW>Yؘi”¯kÒÕmfNæ¿“Ç~/Æ ÉšÿŒyÆÐKß ’A¶3\4Ës>rÉ÷Ù Rb{4{~ƒ¦Î` Ë úT—ß¹°ˆD<>³î)%×ÒÞÄø–8Jg ^©Þ²ÏJ]ŽÎç¨fѹ/6-ß[ƒ÷Âî8ºÙï°„P0}Ž‹“‚“Ž-Í.bö6ªk>ê±õ[MÊ2Ô½ÃÌ\’›źûIm.ÖK»+¥e4Úų üb\åà r(î`¹¸ÑNÝ4v-«Uç#0
- q^ëh šEb;ûMLðWkͺ=*>à‡ ù"€¼¢iüsš©3ÆÔãè#ó­™Å–䀹¨ÌK°7"ÃÕ ‡qÔú³Í{ÞºOnñçãj6Ô;ñ—³›‹(5¼?Ùê $„.{ŸýT¢n[û¸í09)ë@ ÌÂXˆ¾ßm¦¹ª¤Mš8 ²½$tíò1ó4@¢_ã _¸ÊÃÎÆ]¦Ï8\8
-*a€ñÖäÈ5¦ÀöÍ}e£%ߢâyóMÑê ´“þèvê)ù!òÕã ÞV¡ªqFÂc´ŠºøïÓ[µ6‘¹kΖ‘ ¼ÍæÆru ãWÓžPH‰Ó^²íÚ 8Öø1[Ø<K¸j¬k9—i2žª°žAI¸]‹Œ[È·½ÐÝ”üå>Š7"JH7;s<Ã9#„¢#Á[†)èƒîï3Cã\ŒJû
-Â:)fÄØy^õ
-󮦸ì _Ow>ú´7Úh´õ2£Ž3ÌEb,êQwÛqÚU8jS2_ØI
-Ñ¥ñª*œ@çà³6}÷šZ©iHPГeÙC!®oÙ¬+j×tTõ\¹tS¡¬ ?N‰|Ô±ÉlKûÂÞÖòó .îSÕêÅAí#~ áCLÔÝëøÒŠ÷«Æ¿ò
-Zâ8Š
-ÈpÅQ:¬á8Vò /°Œ~%Ž’ü›blL(ã4ªPŠç˜ GÀRdGåçžÆ'ðV†ô÷o¿ýã[úþ·}ûíßßx;A È„Ë'«pÑIÒ$†À@~b@½‡™)^@½D± cCœ_¤¡q2W,^?R]sÐ`ZU¥k%4:sƒä Lâ™öI“QåMø‚zmH’ýäUÖ†}G2÷À¾B<ŠÈ‘’Épö#òþÄ2Åuu åñ6@†¼·mwôô*ÓBeø*¹2dù­8 `µ
-e–UÇc…Ÿ Ÿ:uNzaŽM¨e¾Œn w]–çGiÕ¹
-‹Ûó9ê½8ÆörЉ=–x%˜ˆÌ¹úúÀžˆ÷v¿|ã}d^îñ4zoïyšà—º<íÁKuÿï>¹¤zZ
-ˆÕA­&zY2ó—¯Øº' ÄÍy8gÑ)ßdÇ/ÓDÙôˆò$Y*“Ó3ñg¬ `1Þˆä\aå
-ÊqL“ÄäÕHXï2­/°+qªÔ–&zíÚΧO…k%åë9L„¶7õË#
-Ù X+ Õ9ÂΣØw°ƒ^µ³ Ð#^þí :@ˆ\Cµ³
-?-[„YVñ™ÿm’rå(ã*ÝÄxU»‡ð@‡EÙñh
-´ryÓÏßB|÷Fé2ôozwä¼¥”ö÷V¹äU2ì(08xÌ7Ö¼#Þk¤‚Á›ØB»|L ¼QÉðØÇEiª€IÐ
-ÖLÊÐþ(µàᮄ[vøÙÄ&‚­(õ Î¬:ðã©X¦¢ÁZ¥]B”ª’ Ád
-
-"q
-UðÞùFº—OlFA—¡´Û-ÈFpj!$v¤R“!^™bÞW—–Fwî£<Ñ$Ü™N÷ó¾óµÍ̬ÈÄ7DÛˆ£A7Ä9(ŠRd™ˆŸ‰I“äWRW×z³Y¤n,ÓíÎÀ4õ‘ KÓC~¸ Ù…±²íÍÔâ.3²ƒ ‡KÐ_(õ€A‰»L+R²y EA/S®6=ËàlyÅ8¦‰Z—¿ñ^¡üw3mçLñ+J @OcÜåJÏ ÅKë܆ãjñY¦öxvRZÌqö"ëV‡vû,)×ÉU0C=Hž´jvyŠOòâÆÚnÅáKB8,‡P^ˆèqcC‰™u ð
-ˆùX
-Ý!QI±»T );€ß°~rt‚x ýœÀ§0CÒŸ¾%²Ñ®XÖ’à³î/B.ëÕ˜—ïg–ÀOε/çÐòÖ: ¹¥Ö<² îìäJýF
-ËUܱÔ…°¼ÄEÔˆ­Î ¥?Eý„ í FQôê) ÕÐV=Õ”š ÿȶî’"“IÅ8’}· ™D
-ÍÇqln— ²]¹‡h膸¤•Èô`J³ôÁªú1(9N³À„*ÄXHÓÔ°Ȫz70õ‰Ú£¼ä
-”&%ê7,SÐI@¨|²Ÿ ž§Êz­þæbƒÿ“ûI“8"̓Á*¤¾k°Â
-ö˜DÐóZîi!ÒOkd´m
-;ŽkF˜ÿvÐmNËAg!ÜUe(ݵüñK‚Ô@‡jFÿAÔ={£Nfv¹¤u ñN`A`]XÑ~=‡Nd)%&jçynS¡l.Ws¶-Æùfë©WAÏðTIíráù…ˆžîºçv y&¾#%ŽW;Åap&ÂH
-à]ˆ Å2¯4œ’¦ÍNÍÒ s]‚o‚&ÿ:ÀC]²£2$,d âYÔ
-ö¥4\¢¯xœésÛ¸jûP$$v<¼ ˜¶y½`a£¢£­Mš·0A¤†¢ýáEÔ½@?åÉ×y"u‘V¤
-t†’
- 5|×÷ŠÕDVR™çx1mÒ)èuzGÁöº„Ø"¤jÛå­îçHðI;çÊI†•ZŸwˆ®b‰SêG)ïæj.຦-ã¡Ð]ÌhÉl ÏÙ¢B€šÖñ@§™Ej§–pþlÆ…éíæHõë¯K‰"@R„Å蚬¾±šƒ¢›ÌP€Ñ‰«‡h¹ ßB¹$!B(/åcgv
-ª‰ÿ*%º„x&áÏÎ[
-y„“5KÁÐÀwá°ØCø§È{ê$c}¦hÓ‚†qjHÿúJdT»ìÄ% ;, +9%¥{ÑíæÖ E†NRúvÑaïÇ}«èŽËõ^$†Iž è/.ÙŽ~í¸ƒÓ‘dï¦9ËœŠÀ×hï/!ôvnìéT •}&ÿ a•ð¼å8ÂŒâCñ 5ì!{„Þƶbà`t0Ê«ùN¢™°;_ËÞ €§èõ®^¯Ëø=7èk‰NJ¸63±{óü™Œ©¤‘=qð&ê—§rÏa‰Bz8ºaTà 0Žñ„Ú^tI!¡-’hð/›A….0ðþ¬ÛuÀ§-ô7+/õ|zø[Åz÷kûn¹@ˆÆ´Šd›;ÌÛ$eÅ FÌ$²>FLòÝÝǘXˆxÇ•ŒU&†a¿íS«Ž" 6mî“þÂû%¸—‰C&Y¢·È PTrõWôúý¡ˆq²Îh½Ü1*+lsüâ_ªHû2q28 «”e¦ˆ©¸¾}uÃèuï—èÍF;p—¥mæxµm‰hQ!ùÆýçÉÙ­© IxÈ$ú΄QMù¶ç§c…úÑ\ôªáΛºFo„(q†»A¿Ì¦™f§±ŒRâãP–¿Ys÷I*¢C:[âEHP꺡í]¯xBô‚&³JïóD˜y¿ ìE\”‡.¥Õ¡†Ç‡óÄlí(r·aœÄ’+v¦q‹ãw
-¼vú p0»S<±’ÙˆWuQ_XmÓ‡ Ùb–óöPÀ`?_óø…0Bš‰·YxY /Qšåím]t—”*§¨Ã#Ľè
-“ºªPB y- µ¥ÉA®·ö¼Þ ¥t Q…é|ÕxM%"@ci'ap$[or²?¥+oèûŠ==$“WFÅ£AvزxÂZîÒŽ©].”5EY/I”ldÝ@3Ÿ©BȺãTÁQY,´VP6œð6ø=ÃoãýâMâ;)”ð7Üöó¾“á GrýÊbsŸôî[4ˆŸõuÍ>|F']0%¶•I9°ºì4/¹F‡šz÷m¬/Ú$<~æoÈ]@á+=¼[6• ö§3Üß!£ØTŽC‰ÊÚ8ã¨{Z5nžü;P5-'‡Ön/!€`Ê2z87͘ºÚb‰qÁCûØ^
-–|Lœ(ÖvYJB¹–‚g3:z-ŸŽüò ,ÒÓÒ"ÊÄõ8ØÛ¡ä=½ýý¡ÈñÏÒ=½!ÿ¸äJ?Ðƺøúä÷¨…EÔs¦nÈq;+³¸‚ocË@‚ ¹èÙ´0µpp»<»4Æz<.,õ„¤néÆu1¨2§U’è æ‘q(Y£À¨&%ÍwûŒJ|lÑ$··)(ö„¿óæ”&|Æ·K ”ä«>9—¯ l ¸o–¨Ä¾ TöT”møO A‡?•L‘ .¿èCgi Tƒ¹T>=>uð2 ÀN»ÀûÊÂ+1¸ñÆÞ_sáô
-?•çÓÌ]Ô`³P©ÝdŸ˜¸ïGAøüž·ÖÅZ*R•ÌV̳DÇ€^k‰
-¯à¯â$xS<Ɇ
-î”ào«Þ ƒD•Û¨Rã<¢„ëãÙ¦ká’,Bi[„2¯£ºÈÁL+%(Ôò” ’Ó¿ÓQ ì}Q’ˆŒz™é;§’î–“hû¨[ÑëféÊDäØ0&[E ZÓâ0o Œ]n%8 Çîvyi 1[Ï?‹o¡ èkˆ›þƒ=X¾‚ËK'ΡD¡ÆV͉–~®#ìNïçï° Ö58_öeVK™˜Ñâ%Bfâ©ø¸xb`Req—§®Òä«l?¼@¦d¦«<'Â1òQï%44ÑpÁšÎŠ,´šhpVÀ¬¹ŠÇ"¦‡yÃŒ ]u­¸dˆ“±áq,Ž hôØq: ©·$$Œ
-Áþ£Ç£DàÊ‚ÁÕâÊøHRlKt¤|(Á::FCç>ê½HK”³ÈMaq}Ò¤£ò3vœYB¼8«—TN±G
-:ÁMÏ!å?Ž¬5YçÇœµŠè7‰ÅtøꎧóÑT7â#
-!$¡2kœ f´g·í£M…*¢ãŽ‚@E=˜”¦S“Më;Ljb
-±z8y—Ww)Q9LB@-¿Š6þ¤1*zß¡8K|ªÿã ®·€š—j9g+§’€…øÖĉΧïHž§LŽm+$érÁ¾zý§{®‡îÔm…ªœí56,X‘Ê1ƒÓMƒÑjÈÜB:þ€mú³n¾žrf(,ÎÌN%Œ
-ùH*H짳$7i³"e.ßúVôˆ"ÜÕæ+ŠP~Ž¹`ˆ;ÌŠI“'T]‡ze)‚åÚN4šÏjuLJˆœúvi÷ÕFMñ-m/Éz‚®²ž¥Á`€ä¶›| dÄqÔ}œ/% 94¾Ã·§qþȱ&Âaè)X„rvŸ§/Õ¡ ‡Òóý*n,¸.`où«‡0®ýtÆϳ°,6ÖQoVS ÄFâ… ‚ÖN%oŽõ—ûÚÆ ÿe¼\’+Éuº‚ÚƒWpCÿϸްvÑS{ÿÓ> ”îç3ê:¢Ë†• ‚
-2%ªõ¥ÁØœûæ*`LØé+cU\G…HÈÔH»¬|ºÃCqóv
-¾ E#²”¶ŸK€~(äèÙƒÜIúû—rè^_˜ˆP•[|äŒàù¹·@7Yp§ëúcS0È:öÞï³p$ZŒ'FØ$ÆMÚ*·5‹u­ˆ ˜~Ÿm|ªZÍ Ð"Ì×B€gß·DWÄÒ`p!u¶àn[–1Ä.ìc`qVk_ ¬g¦9q¿­wI£ÌdâA“A"Á…M”"ÈúTàï±’ÿèž“¡o"ØÁ‡Ð³{›ÌÄ5\Á^–ñð*@AYeÈ]u¯8ùÕ-‚Öán…=ÈN­/ í~ÜZÁ×åï2U>ŸqDÙØQî£*êس¢ ±îOÝ‹Sá
-¶êY­º·Ü9çNç6w:¯:yLuX8¸ˆL@XT?§¡§‰ˆIüÌIüuª~ïá3mÕQqGÀ¿yù1KYíºcþ8O5ŽÝAŸïÜÈT#âÛ’8•¥•É9ëk2JÃ’Ë9îÔ™J'àqY<â§aضH{éæì ôQ²!,dŒJ6ƒ_²øêeoðÓÔZ潂=>´ÒˆD•KË,JìçèÞ1 ,)vq:uß@l­ŒÒ„_´Ý¯A
-­ûÖzÚŸÝRƒ:á_JºQ©a„è^%¾øó:´ùÆËo… ˜äaÜsr•l±PÔ–~]zê º¦Ïì÷8W$%&Òsdc/Áãq0½¬cŒ3ƒ8Þñ5i#ǯku n¤`ÙQDS¨ô
-Øä¬ñ®e·o†¦á¡²Í`|)`±iNÛF•Î’{Èf$Q«a„¶Œ-áã°?¥D"åËÑ,KD@ù6Ãõ¥³ëB”pöAñvú¼ éñâ=c¦æŸ©T‘ò,¦«hiÍs£Ÿ=©kBÝOb:X#ì’8/¶®Zò‚ºAZKÓ\‡CR‹±JÓÂU`äw€–÷õ©nê cÚ´@Èá 'óXãÅòZÎà± ñµ2+Ov€ô9ÊÙi³Jo¼8A<_qDw–\ÑŠÊîí^³@”J!(%ñ‡L„70n˜pN/©dJqyù¡T]Óg®jb¾(ívŽÒÈVqÝPI<ANq
-FÒh×\üTf SK´ò7ùAàc…—Ä0ihêî)¸ŠFÜ©Ê&³¸wÁþ:§Q/)=¼‰ä–)h€+}øçt&‚ð1âêÂ}$›¡©èeqõýÄx SÔ©™
-Öô.ÈÑwt×wA2ì Ýr¥äé;ÌéÌ_œ´Ý×÷¨HÚߘäé»zA®Ä›™À{ÃŽw‹Z׊úÄ
-~ÝÕ(æ`„`
-&RFÅ“w ð¼c§e0†/ïâCù¯4OÞÈ9ð29ƒìÉ» L)®¼×¾N9åýygò˜9‰AŽOvÇ8â~bm'@ˆœ ÎÈÙ²Ô/°!Z ΊýÇ$ ’I’‚å™ÎC’DTN2L_ÙѾIeaЈ—³8”ý
-±˜´>„ëƒ ÇÿáP¬
-\Ýž=À.ˆ*„˜f =†Yk¦¼p"æ:„Y$¨ €fw<üY¤A *µcÛ÷ñªèèôZÇvn²":ÍÅOÌMÖ ÷¸OáöGv¥½J<?¨¼¶ìÉDÍF9ÆLvN-Y»ï1’Óº-ˆsž”Ḳ„QÙŸúËdZþ ÿN4äLVt–Ä—zŸT“2…Ë÷üÜ$Aa'ò3óªÝå]³žum²Ã€lµ,Ý[#”’®kcé™ òEG ®%Ze7;ZXª“B¹„6•a0’ Ð Ágó;È˨Çø)¸J¢ègIü‘œÆè€> 4HIHK'o)Dé;#Sìë: u‰cÞB{x9­°Òû+MÈÃJí䯗´ºrUû¶GpŸ¢óºÙV‘Ù5°!C»ä2ÕëçÁxR@ç&œ×Ÿî9x|n‚»IJ&›ñì” ǘ†AxºÕKO×ë<
-¥ÊÚ—pÕL-]±µZÎW %uÙNa΃hÉŠÚd†Iof¹= È‘Ö5œuóý¸Ï cWä’F™çue‡‰ŠZ†•øå<Z
-Óð´¥ýè[í¤ü 4â ‘?œûã줳‡Ä†…ïÙÂpÏá‚H8BNÖ){Ÿ)¢&-ØÒâ'‰‘Vïöúeß4ÈÈãæ¦g—ex׸Â%åSVì{0ïÃÂOBe1<>¼¡Ã¢i.Jc{2ïã{­ÉL}ô"¯ü¨¯yd¯Êz9!dÊh9¶Ê‘$5 ÃóÖ¶©P“Â.e^–—gHÌc=®©ë<V ¥^מítüd{é9ÌÔ'ßOÂþ+Bu®àW´QÖÿš]$8Ó(ŒÇ¸Ì1›Å’ÅQ“ô*¿T·‘Æ81–Q^£Ú10vè0iÛ6œUå#÷è©%B,w7öhÞAÌ/á(…϶góI"ٻą±t ›k&s•¹7£YÛÊŠë2z9¢‹mÈ°¬_îc"¬li@—úq Ì6Ó+‚©›ˆmÀ`~üþ`
-H‰Œ—M’›9DOPwÐFA @®ÝKߢ"få¾ÿvHJ1ÒG…Ëá.•Sü2ÉÚÄoÿ/wîÑêè½ÊMŠß›7:ÜÌëòëë¿_RäÞkDëņvÖân#jH¯ýöïÄ„ U+^º<01´¶Ön q-Í {©Ö ñ^ŠéÐ6&¢ ÿÞj­~E|ÏjjÖuD?-Rï£YmcŒ°n Á‚Öšy · É ¹V1IH¿—Z£Y+ü׸÷Dq:­k"õö{‚jTsöSþSPó{Ï#‹ôèæÔ‹:*4 }½<î2¤íÕÕÆíÏA;k-Um-4¼Û°Ñ› ™u U)1ŠÄÞ«¸ÓL/#|µ¢‰eGÔx‡¬^xƒÜÔ4üÃ:t¡6TÖ7Bº–ÞªÄ:Ë;¹@¸ÑrÑ‹ï0ð7<­cpfSíÞµ\ÍhÔÆá4_7ˆš Õ¬=I²@ùÖŽn )b>F¡Œc¯34 YO­~÷
-Ý5|çñý•±Ñ eo}´ã2q¨£(äåÿ›>Ô›{{Ñy˜àtÉ% *ûR>¼¢6î¤s«XÇ-ðrmè ]ðg®ÓjO1Vï‹¡Hƒõr´ ©Ð¿åͺT jÓùͯ¯æÂÒ¼xm49`ú1ˆÝ
-Œ¡À*]ç:½k ìXàaÎÕÑ`ÚÀ+Û×Ó(Ì­C.©ˆKÇuœA‚“#Ö}Ë,Qù¶· V»‰º ¤äðÀÔ}qä
-ÂrØÃJºN³i'ìÐ4Œ*\#<è¾A’Þ{[Ή÷4Cù°MHŒÊ
-"ÛœL‰¦Ä¾b»Æ\š q켤
-š—]5¦àS‰WHû[Nfy‰?Ðb@5pt´×ZŒuF‘Þ ÓpF»§"'E-={*ºS8S«ˆ“KÛX·‚ꞟé(܃Y¨ˆÊTü¥D ‘=mx68žÒ0½$…/ó¨‰ùhiº·ú‹8W­œÈè39\·ÚóbÆTBFK‚e‘#Z%Ÿ²”òv £Ñ¯VýˆgÔvAm’£¥ø.ùÇ8Q§sTA¢ÔŠi¢:óÜ-!NÎÒÆ2p—LÂÃ3 c,Â;ŠiÇ[Šë,ˆ$›i(:YŽQï’o~æmȪ´^ahm•O1t;ðç± È¶¢l2wÉ´EHAäcä3$â
-g6ˆs\=‚^ã*’¾kêg?eßó*ôþh¥´vΫÐƳqhzÕ#³¿æU ¤sj>º­2]r&|îmÈ”Ï7Í[^íO7ˆO
-„<ØðæÚú9°f‘Ø™o¥½×Sd¥5k—6í§<zjý5²&Ëi±r 9.CŸ Ÿ0÷·.y€Ó8‚oÓgßßójÏ.—\¶—5v/yµSÍ’Ó AÛ)¯&„¥ƒ$èe¬—¼zÀ\óêôšWóÄ‘))ߦUN5oN2tÁžp£s`Íúå“€¢ýaa¯5›<E~ÑNAóè–ï5I!Qç,÷z ¾I-âs›1]Ÿ§ùÿÀšen“M»=!ï5©Î‚P…Kù)¯¦\ ˆä†òêAQ×¼úwmÎAÙ• ›û‘“t=OÓ,“`Ë?%|]§w7ŒÁ a¼ý’!dºPlÖý}ÜêG AŽ‚„V\fP¸‚’ˆ¤UÉâ&õÎ/é Î\ÛíÀ’œ1CdB°î†Afö*¢ž9ØJ¬ZóV©¹u%h—MDMçâuÃ<Këµ{†mâ—4Æò†ð+iØú„+ш6íY[%é_füOëhzˆ1*±‚9¤?ð‚i·K#P8©¥À(įk¯2Ôæ,‡CxV˜f#1ðõ­.Às@Hzë,T' -ä¨,j§ù€(£Ó¿
-Õ0záz|RáAÝ™!uìuPâ|Bê|Ã
-|œÐ®çêIãûSÛðî<èõþ0YÿI>›ÇŠ^œé`Bx/,Ä°!ćCò¸½q(Š½ i•ôˆ®Å×)øk±î Z úÙˆŠ™]ÁIœ‹ÜÅ;zRèèH¢'g³Á˜Ix
-ÐoüT¥œhì_ë/ƒo"ˆîGF‘0°È{¶J+˜>ͲxlÕ[þ÷E+¥¡N¡üÍi‚~YËÐJÚ@5Ç RË`¤6ñ†yO< <Pj.MG KØ)Û†QçzͱÁ×G§´•£ €d®1Œ8×t ãQA#š™?U0£¤LZhиÕÀ$QJ$ӫ釚1†¨ çÞP\DÔ`BôëÖPó²(u[„ÄÀ$Ŭe²ï`F˜4ž “=ÖDL Ù…RóIsNM?ÈèÂ$T¤›Çu/^9qc«·,…Y—êª(fx±žÝÓ@0µ€;–ïi¨Ò—ÂvOUôgF¼º­#»B&£1a+œ©³q!Z‰…·€{ãæ9\6:Ï€ ókÍÍžøg5åˆÜ"KÞ皊Í`oÒl\oÌA‡­q_îQ'j8™à°JžRPÓ¸7‡âe%ÓÍ“$@vÖNl¬”‡¼øD@
-çž<bム%+A¾R,üplƒÿ­d¢ƒ‡iŠíaøUÒ Üëð_±×±è/Aò X~\P‡a½ê˜@æ*üKø•ØAÞRT_lT
-6vŠÒ37 ‡(4ReÒó(»Y˜Š!‰E~œÐLÌZ›Ýû
-J4—tFþܼë¡hZ:`)Ø„Tù~(E& ZUfÔ‘IØVÀ²× ¢«ÓÝd?)[>.AÄž–Ù5§$roÄIðþ œf“?þaÃ"/CF€9ö¡ I‚ @LiI,) ûÏÑÌ:E*aX€¬Ls`„±ëèF¶
-ø;¸•¨à;i^ñ]£bׯ/¨‹–sá—‘EÝÃ*a&RŒ2Ê´ÈõŠDÅø!ÁÅ$’˜&¬Kìž
-1˜13ßxÎf¿1“(,PŒB¬¬ŒýŸ’Ã2ӡ轞GFKL—Wï/E*aT`-$·í1Ÿb$u¬Œ´f(ƒ’nWI$CÉs"9ë}
-WM|$Cy%”Š
-¸‹ºÅ–h"”ûåÔ‚tN>‡Ã;#¤ÈÂùÕ“Ð/Ž C‹/È+ÌI‡¬¼ãÃØïzXC¬dFRÿå ÛÔâ$Xäéì©/"ær$¨ç5Y%ãäŒÚ,Ç4t†4o%R|ŠT¬¶ã:ð¶"dOƒ½dÂ×80pa‚^yQä† yCy‚7i²od$èHýÎb t~r™Úˆ_ÉÁ;¼0ƒMðÏÉK@-óÊäívŠl™p°^²óÅ¥È\<)É‚œ
-îEÌ&‚À­²['îÁçŠE B­Ö`LÐD°ÄW]Š1ü¥
-‘_#x®ÊVw`ÌAc•ˆÅ0ß4£­öÈþ²\|´cDŠ°ëÐ ÿlöj7&#’]ê.)Š˜™G o%+‰?*iŸt×eÀ«m-
-Oì@ô Ú>Ã&'GÐëQïO ~ìÁÀNÂÉ Y9-{¾ìs!ƒ\ íßãrr=„å"•
-M†<ã†TÔwEüMJÛèš}Ð@HŽØH¿0güòötÈL„Ü·’‚¶2”R\b ~»åᔬƒJÀ&ʼn«éùá;üµIzÁÛmpyM’Öƒ ̘°Nu7¦–ß1÷¯'ávXÕÁ‡}/†ÕÍ‹IY]þ
-b{Û754
-"Ìå©v‘–J3–UNÇæ¦SôñP„êê¹ã[°Î‹Kƒ.áóý,Œ²ÎÅÚ€aÛîå¡…u~K}6á[E)AÒ\½ÉÛ£às»Ç@š^=¬°¢ä
-½ÇðiþØ`Ñ:äa M–=Ø!k“á4•}§*ÅQeß^Qc ¸õ%l”ȖЭ¸ ¬„$â#’ÙÞ¥ óǶWütÍÉ)z(™¬B€Þ9ìcÉ…`Õõ–Ž ÿÍŸþâ¸ZØDŠ›Yäo†Y2¡1MÃÏd°ÿ³QÐQÌa‹ò›»ÏeFìà2ïeØ‚j¶ÈÖSÿçæ(í"/ srLͧMmêJòs¡øWSƒ¶É%‚²a, †€dQ£•dxʺßN|ÁL!·¼v§— >N€æÆîØ]ÆõW`%›Ôi»>á–DH®G?‹)†S4þB]K$—whônÑF¼Æ:¶6n#Ò3ž 5®—GÖ‡gCÉ¡³õôWP›#`'ùÛJ8êzƒfæ¹wø½Ãä ¬êÓÐ[Hþw’ÚžF†™Òò|’ž ƒÌUQP6”²È“l…c’¬-Þc,qJì;b`Щ›Zøõ‚ ›Ò(û¢'6à»i·Ÿ°[Ü2ÄUÊE¢ÜÜ Øø¬$‹;öº¿Ö`R;ù¢Ióç
-£wYÄ?ðÖI¯(Æ ^M'=`MÁ‚M ¬u~k"b»Œ &«V ¸¥óPN;y! h¬bSgbàû0J8Ê’d£V¶,nR•¸MÙ%
-#Þƒ$rwÀI²JB:lã -6Íl§` Ÿ"`)’",²È.Ö¾ßD `ÃAfÈÅ…à”NÑ&¾ªÃ70Ä0Laô“¥`dúP¤3uS<2ÜPa~³úÊ}3†uXãCcÌ”K‚?’éÛæ‚Ɇ’¡jI; Q±Œ8lˆåó¡(E9H!¨q+J &sv8Àm§dâÐOþ(0Q‚a<÷Tð–]¥~Âo£è_1§ÈÐs”™ì3l%¹­3ÆS’Õü¬!‚äaø5€8ë]¡ƒôˆF¾bFfD¡á8pRb¿LD1Bã¬$vî˜}º@óÉ„cñû]4Ù6„$)Du£÷ë,Á%GH²âŸuaNîL¶Ÿ Øa0Ô»‹þ9[ªS²:¬ë+α†ÑýÎPê‚$6s•$»‰‘·–×,g: éì9ꣵË[ß'I„§6t–Í;d†€àà$ÚW„yOõT"f‚ÑðB£í“~
-Ž?µ½» ö›šç³·pž¡A°Õs>j"âšBNžc¹‡á8Ÿ{¨÷w.h˜óA°YÅÚx“õ•‰„$·ÍtTÅcCfxJS–•}Å»‚ÅÀc‘Ë|¨hò¨];ßæ>é‡Ý²<X²+U ì¡C+˜H)ù—_mãW‘3ùë´—šßÜh]\–ò•Ê§ãJ®‹G) !Æò±‡‹_EÎůӜ‹ÿx£uqyš)¯Q °¸>52KŽ
-\(Á‰¼ l 'Ò
-P‹÷W»8³ø3þ©² ¦*}ïç&ØÚ”“•`îdÑì:œŽ¢ÆÃÖÓ¡ãÃwX:ô<¤öt›Z±1rÑééUá84Q,Z›NsT!·Ì…ÈšÓë°[òmRû¤«
-'xâ¿"fØ»LýKÂ…YPä Çæ<ªò9‡ +„ºzmN•CUßɸqõïµÅ”dÙ3’JÅ{£z)YG½Žüõ;p^oã
-oåâsˆ1”þ ›[•;–õÍrIoW¿Ȇ£¦©¼1«¸™3Ac•0ž,Ÿ2,ÕŒÇ!±R+:1ÞŒ š±DcˆþísߟôwqH“I©5Öï
-^•7¬j2ûWÐ+²‹¼
-)sò¨•ãÒü!Cj…4·ï­Ñê>Ç-ž¨8™56ïýräAa¨ª½9'wãj•°š"æP*ƺLÌötH¢“üDI3ú 4ôeXYÿ¿ÄÐN­}?SQ`ŠL¦c€'0©e–3ü”çC
-’Äë„þý×suLî u¡OŸƒ.ë÷øÚ'˜B¸îÕ+ÈÉå?ÿý GIÓÐeÛHÿã E%I¬}i üýAbúÏHÿÿ¼
-"ëÄf¨œ–pÉ’F-ËÓ ±H›â:ü°*Õ`%†³P Œ¾â =_EšõZÛ_âA°)Zå×½tö‰áFÚåº ¯Ë”nÌÉLnÅ¿Õ èÛAèïT¿%| ’ªÉ‹¢°ûÒ
- ¥öï2>@Ï
-é>•8£˜‹ñ½å¿+HŸ«ä=Iºöéû
-bÒLŠŽwÑaËÄi+¿ýàEdÝ‹ë_“9Xò3¬kpK›´Y9vv„Fòþ5RœSQ¤‹ý¨íÚ ¶g±¹rEcwå廃พ€ß>x?¤X*ç2¯‡Tw_t ›Ô• ¼ƒ›åúeü.FÙ'„iêb"¡\¶ÙNa8CT‰$~ ¢@ ‹ÚŽNdIIbD÷›Ÿ³Ž+kÒÔ›ûT<@·†Û郑d¦f›Ÿ‚ˆˆì½\/œ0ó¼ÒŸ˜ïOVtor’(:< öHÿ¹aX._£‚È¡É¿Ó©š|Ö« z‘¸_·¯}‚yɑߌؖ1+¢Ru»FÞc·Ê:^×DÐ$·Ã@P[rb®I\J€x˜-)…@H¹X96u
-‡yV–MÍ~ —˽бø/Y©°ÅµÖÔ’æøÙŸ‚*©'nh/ÆíœfY›eÒË€
-Îñýî—6x¶ã®U‹êu=ä‚û ’K²ÒÛÉ€¼X)I¡4Þ…6Qs¶k¸¡~ ¤|þØê IµïøƆ ]A‚ÈgÐsgj'$5FšbÌ5Â7TasRZʶ[ ÌŠDJ‡T­ŽìP2Ühû&­ÊÛòé^ÇðAÂsØ ò:¢ÿu]f=¹9Â!ˆþòÇ Ëú=?÷è…n»õŠqnÉâÉDl ?b£Ø/ì?ìâ–+f@Ï]v‘ ë”›hO£’²?‰Jú!vŽÝQ>­@µ¤Åd“û‡
-†ÿïõRüìP›«l1~‹EFà–Å]X
-Þ䀆o]F›“q©@(xr
-çÕDÀô°'Ò+ÛÃGëª8Ù>£0°M(U¸É×b3ƒt¸,’æ2éI=»>‰¼tã,÷žå¹æô} miti´ª¿KI³±¾íØAR‚MÖ×ä¯|ÁU…ªá³yw{*rHÌõ1HaV"Qíç;
-jküŒMwUfJò¼öó²?ÅX`ÒdªÏ}^Îérép*/IõP{QãñsnY•~"—41^¥x‹Åüže”ÓRùâ £°#}ÉÐÔðs˜$M-ðœÃ  ²Šì¯½,ÕÏøáó©WÐÔÒqÛ¤Î~uC.††£ÅŠÓ5\“*V7„æÁèŠó’j‚"Ùh×4ËQ‰žìÛn„‡¶'iZ°’¡
-dZty·SÁÇ:´ÚGnÓÄ#È"G¯ÄƦÔÉH’
-‡A´q{«>ã©+ ³&,æŸSe^H2ýE_¬ÛÄAaHD_“7'é
-É{HÞQS „"éY¡sõBÄú¿Éµ™&è;rV}®õbî\›Ù*†ÀMîÝ=®Í$ ¡å&†À½pmþh
-³þg5»\›‘R­FX¦us¹ÖèÆÝ.v½¶ö#»¤4„°uò¶†”RX-€e«ÿlÑ‹¬S™k§ø¶‰&½V®mŸÙ&~‹&A§ˆì’-;,b\ð‹¼¶"‡l bªÔþÀvsÉ6ëܯB¥¡u—lχl½ Ù&-±”o4y–K¶é32+y¶zñúɶԡ#;+QñØ–b‚+7sגˤ™‰Aµ’¢²ú×æv2]€ç,ðàÚÉG(ÃeÛÌŒ#£´º ì…m ÃjÊ•RÝ‹Án ™àˆ¨°°w‡;Üž!Ü2œ À1Ñú·gз„0S˜¢‡]ñ;Ü2åRt¹g«/l›?4DRɲ¹l˃GÈM|&=ëé°­Aa¶Z_Î{™XL¬ÕMÚw¶¥»‚èyÀ¼_ØÖð“³?õ`[›Ý¥'*#.Ûz!ÛžAÛBÑhHìro¸¶5€S6)Þ[*žlËÓE Å芽=ØÖDY ^)Ô´¹lk¨)åÛ4Ëxa[º ÏUd.Ú2WhvŽ˜nhÍEÛ,a@ëš‚â Ú2zLoä‚XrѶLÉÁ³•°â¢­r ít¢m™†&Z¢zÝEÛ f•œ_jåm¦F« «â!—m{=™Ô.¯¢µjžËŒÇ¶t &L´+ËÞ9Qm=¬Ãe[laáARFza[ íb>¼:n4»³m‚=@
-røF?ØöñØ–+'9']k^̯+FÙc1b…Ê.Úš(5¨·¹È¾Îm= δy¦>^ÐVIÖ)ŒcÚˆü@[FÏÄj]Žá#©WÏm‘[¤]蘋t9ãD,Ö§°osG[´èHÀ$ùmó¬eÇ$ªK¶lždû'fdûã/>Ç(у`sÝÍ1€ß3ˆ+
-µ"BÖ<—T9ã´²ÆØ–Û°n‘R*Ú€…ðCö0(nï«3Œ¡ þÑó Òv ÐU1o—MR tEî•2ñvÞ|†ŒýL€KHÁ²lrÔ†Eš|9i…ÙÍñ#—;ÂÛœ Ÿ/Ag9¾õë
-Ê3ùðiYnƒT'uÕÓ‰˜äPàR$tþˆ47ÆPnƒ@0é
-"eÿž…èÐ-jOÇöbýhP‹Â<ti‘´¸ŽþÇš«=ÂnòÁõÒŠ'd¿g͘U<`Œ<µ›5ƒtá²±ÖÆVáFã\p-u€øÖø@4=¦®Ö‡rMFf‹óM(6]Ø©íQÖ’Å¥bœV;›Ð‰àZµuùhÖd81-´Å—ó¬¹sô``àMc±áT /žüªGUºœ­N¦IC†–0òëÙ^§uãh| r‘³Ô2‡ìBùYrîé.-Ÿ4°ÞÝsâŠjRXvǵG ~˜ID)W#M†„xõŸ|Nâiºïßsb´Aš,=s0X!]s—hëÖ¾˜˜E‡i”x…@ ˆIcsÝk#[„Œ;\SþŒQ]‚ä|pÉ¢)?Sü½˜É‹à7!y6…ÃF:½”Iha:fj­k µmÀBAÆK&aý„èóŸ-ï$‚qàoò–I¦B+ ¬Ë’Pù¥í.AÁ;§£òìz8±z6NÀõ¬IÕ^É(Þðr ¶8/g¹õ P)½_ú%ØG¹^û©nËMMžt¢¢]÷਴,Ÿ/ úÈ1?™Ç0  *’6ê « ¶€Â²Û}dŠi
-,SU›ÒÕb_¶SÄgÓ"ÌíibÉÄ%êê¾’Ñçº]–IM" d_Ï>¬
-Ÿ·h=(ïú95aâh•&ïY²>ôPÙçô`…hÅa§ kE ¦‰ëií±´ Þ
-\‰·ó6R ¸¨ë˜cOGUNVݸròõXõ„183`-^Ðì
-NÂi̶CûÐ'«ýpZ‹€* ÑÚSÊúжßÏM‹A«,ÐoÌŽPþöc„Uü)ËÌ–I¶5w”M§0 -…bå¢õ“Y'mI#5@Š®-‹ ¡ž“™ÂñKV$wI–QAî?tK[DÎ[â*HNöû” Bàv“¾Ñ ѧ²Üˆ‡rÇPÜcØR‘´
-Ô•Õí0D‹55:\¯ùš |ÎŽî\ç‘|…·°(¸ºC¢{b¥˜­âr õ4Ä«©¦”ãEw2ï¬l’¡5–Î@4iÇDÑ7•²…bÐY7·ÛyUSá±BïøÝÎß
-‘'¿™Î䘻ŸˆŸÙà‹Ã5®Ìï3-ò Ï-Ž‡;žsäÏ9åQ„ÃsŽZžžãõÄÃs¼Îº›Žñpotñ¶B®´Šp·äÚŽt³Bxg˜ Û¾–›ïÂþŠj¥¡¢®ïèêBÌ]]f¾ïH&z¢øtõ}‡M³iÿC%ð–ßAÙ¦ öRYáÜsèAAR<¾ÎyøŽ×ˇïœA§§¤OŒ,…P CýfŒç)ñóðn¶†noÆÃÐ좀{1ž¯jò)ŽŠ®ñD¾d-B•\Ã8ŠáE…ûw)Ž9Aj ú±–"0Éû6ÿ6BªÖMtÌÄ‘®ñ¨U«“̲‘Çx¼†¿ñ0žo ×—ñÐVeš3§÷½8@¦AøØ’Ãö‰)
-Ý\J‹ÌŠŒÚ¯¡C˜EŚΡ伎Tóºå;!v£8ÉŸjÒ¶ÄM ßí‚w3ð‚:•§s¹qâ'$‰ $\J"ü+à ú¥ ò’¥‚´Ú5Р¡gq5 8ŠºÊ:F©ÀY…Ðɼ?à[ëÒj™AÂ~”Ÿúá‰CúŠ¿¤Ä>k$(Ò³órŒ‹àö%…Õ!ܽPbÂaýø{RÉéú’ÃÝd…–43+šù­øEdJœæ»Q0$$ É]秘‰Ò©:ÿN{í ±˜É‡ç›þÏx™äÆrÄ@ô¾ƒOÐÈyXk«[ümÿûoý‚ɤ.6,À€m‰ÊÊ$ƒ1€N‹MyB%ÿÈ—ô ùÐœƒüÚÃ<e˜ŸkÕY ËJr:Á…ç£e†2`ŠŽ0¾2ýÞMº)ò.¶³)?^“³ß»•bÜ‚vÇ|®Ì…k3ÃËØÂ[YF@=Òze)Éh爤
-îÍ#Ù—x oÙÝ[‚…Á\\Ap q‰S†iQ7àÀwÅh0(z¾)¢SÜŽÔ›D·@½âLàœ®ImÈ—UíÌW% óÌ2°Wk5.¤×;,裖•.^ǵ^Ž/l‡(šdGŒÙ‹S­bdzœ½œMÅV‰ºç—‹ýæ©íSèüÆ"Hز›á‘¹ ®kVÛ*Ѐ[$ƒ±¢=ðËr(•]V$K'nÝl·P ¶ÜH;²ÝR,¦ŸÕ/£¤À„„œkŠ
-$FKæ¨ê{ÃÏIÜ¥ŠïgÚör :êÄe7ðÍ—îm»Ô¬%é0Šïx¾‹ó…iŽ¢Ã‡Œ†ƒ±Ëöàñj(‹xiÙÏ%\¯µƒ’ƒQî…ŠðòZ£c¶µÇ‰/¯ØpufÉ´Á]²##³†w&#TŒ$ñÀ âƒÏaiÛòɱüÿ–~lVûTà`/áæàO¸À))æ€ðÎųl78çKÿEæ‡àH©¢ Ü„Eì%ΆGUµ˜’Îk©,·C©&Ï l©y88Ð| :Ê?âŽv®Õ|—×ço4XueÈ Pb· ¦Â¯f÷¯m†³„Ô¶œvè dŽL
-ðÄYM¾Å¥³Ÿ3a'᣹t• ÀJ÷óÊ7°&ö©Tå Åõ(>ƒb7Š¦D4.îEÁÈÙ½Éf¢úöþu‘>—%j[äÛ„‹ HJ&ˆËž-Îr“¥éym.ó”L](¨ø#b’x¢˜˜¶œ‚E§Â¤<!|Š ®çìx×…‘H•€µŒ9¬=çìMMrp›LÜ‹‚æ䬿 ©~{³~÷¢WV~þ†ºá‰[BTÁƒs ,ñä~î‡yž¬ðR-”¼}¾)ªôÛÅ5³]=üÜ¢çog²ä”IÂ0¥Ê׈üì_I\¯·ƒ¢IkðÅì¶{~¹U¸`Jt• SM¶Ÿ7³C²5¼LRE2uvvËê ¨Ž„* ØeÓÙZ9.¼dçEþ »•\¶J 6ðÇ·Ñ=¢€™NÑ&ð4‰`@qܼµ èóM.|h’=­¾dÓM‹<|A¤`c4ôx8‰’|#@`Á¡£)Bh*1ÇX0ÖÕžïnê&1!ÆÌ8œ·™ &¼’çÒ1]6À¿j4Ñ_ ý|$Ç0ª¬îªžry>bͬ(ðWC[êb‰<õ F3ûñ:I²ÇÁ
-òÓ“ü…eïšÚoÅ<PØôÐüoN®ý„°ö¥,%²x„qçì÷î4íI£Ûj”t¶<¹’’ŒÐ# ™¸þxëë18¤ërÅyeŠ(1Nk\Ä©ÐAi´D6 ü·V0¼qðtø‹í( ï KF¹Š|‚PfÒ3_‰‡0·±wkì+LÞêØzŠ@ F© ’âŠ.ä›`ý´Æ™qì¹XúÞN/jàîV/yz†^
-ë]ÚÀƒƒýGÉ4ðÏRúëqeQGRôŠj®ó ^/®\>fôr¢»'§B_æúà”¤e®\üÝ~¥u­ŽÇ¸_]Y`âxæÅ„ºÌ• r÷ÐÙXfϤP‰ »-—¥î¹+×#6*v¶–{rRòêÈ’+Ù ï=Ã9CVÑ6“ŸG¤¢Ì+´Û;Û”¡?-ûÕ+¢S:Û‹XfÈ2±älú·mÙ0¿1ïOCŽ4­N‚2ÐÒrC.AèÍì˜c^î4ùúÕÌ‘ýÈ¢.5žUöÅ‘ƒµ c ZÍy û~´8,sä´äÕ‘“¢wGN‹¾Âp‹4DjT™#{ùêiüÀñPëÅ‘8¿:²9øÊXgoýÌœ4ý»#×QÃ{€ìÈŠ‚<£„›zUK¹±Û éõ®cæŽlo~owô®Ì‘Û)¤ö±©hFæÈJ\m‹m t=uä¤æÝl“³èÕ‘Ó¢¯ŽLå*0qd9ÎÌ‘©%Üöo!õ¹#ûvÆ£‡“ãfŽ\L‹ÅIP2Íl™•"úÔ6’+n#wdÚ"!Ò®óå_Îa¬-RÄX6ñbÉt.X¦©bãzvbÉà%ÏÔøŽø83K®àæbWòëÈ,9à»%žŠOåmgnÉÍ€7®“rMÉ,™Â‹4çÞøT›=Á?‹ièîδzÅ E&bÿEˆD
-… æÙ2EÓêÏ]Ž@Q0äÇ‘ÉÁyÄ\€Œm5•ƒý”$ ÐŒ£f)^‰®X£ìÔîV0­¢”£Ë‚u•¸ ·¦—k—w¨Úí–ƒ_?ÞkôG„Á
-J—ÿ¥NxzC<ò§Š#,mxÞo>(°ÄÃêø™#=’-{"]´àWF‡dàõ÷Ø(8ëg@ÿsÑ0ÈÉVcçUóv¥¯5‡ ¤œd[8ÀörE»©\K)‚ÇIrâ[­D[q©ÝTk,Uc¹„ì[E&K‘XøJ¥ŸûVÑÉA(þ´)ÅöøwVúk· 4BãUÒés Üî¡Ø¥#.ÌêV Æ ­†ÜnÀbB)á³ÖÆsuâêù¤¾H¹{ìk.眑UÂU¢íœÃUöÈò?õ'üÛ
-⟔üŽ&"·@Cc÷ÈÏñÄÝ1{ì^Ù—Œ"JlEüM×ÈƯl^¯ý{ÝÇž7‹|>˃‹•¶Ê׳jä0êLqÎÄT¢;ÛGh]æL«Ç¤žÄjq§æLjt°')÷…]5žÀ (1ÆCÔ¬^nPø.Wبîy}IV!EÍ<Ÿ:)XŒÀÒ:E=bZ6'"È/ÂERò
-Ñ_?²¢w°w:rºõµZ}»è€Éç¾Uô"
-)·^‹–ÀÔŒdºkf‰À$Eï·ì`?ÊI¯÷o½w*ùÜ·ŠÞæ½èM`ÊÇ¢N+í©¾¨¡Ë-ö=×—”:›”ØÃ3}±7m¾ïÛOtAºãšl¿²¸–IÇïè¡»Ci!Âl~™8ââƘéËû$}I‹^õÅÇZ,Œh_j=3ñtOð6­<L4Pp5²g´º,ô‡HyÇ•¥’säƒr]•-S[Sx‰€õT`ŠMᜑgD˜G>¾*Œ’¶tNPûô‚¯
-ó^’(LRôŽöÍJ´#ÛΣú·‹Þ˜|î[Eï
-ógé…)?ÿóCpŽíN3‘a?ol{´x •QDòíQÕ?sÅ—¢àÓ«ÏùY$+)Ý”«à@†;Uv7”4p¤( ¯sú38tçJšp6ŒÛŸ"ÚƒGŸçÿ‹[ˆ•}¸æ*©œŠ¢Ó†½^%v1.hH~ý0𱕹ˢ%¶Ü¤è¯)’S€dkÈuê·"ŸŠŸcã½ÞEaú±Çã•”B0ú~cIVf;~'
-Õ›ÉN;ɬnË1y~tù€S’m4LߢbŒ~“«œuîvS‹î*Ñ%Ԫ綕«b‡¶ê²c 0'%§¬FHw¤cmÁõ¤Áß,*ÔØÜçÑ/T$EºPà}˜ùšÃ¶M“£\s8?Ba  ï*)ì¢9)²ý‘(J Fë%aˆ!Øì°7Ž½ïe7Ap QóG b?q"ö18 ½ 6ǼJÇ^“’… ½¤Íž”ì°©•Å_÷~>ù‡¨cŽ#
-ìVØAªÄßqßÖ3@.\[COÚç&RB}LÜ–TÒDí:’r¿ixªW¶KMß৿èp´£>¨°å™`õš¥±¥î>tn;q=G–¦À2C,™ÕR÷>FÞgò÷g Å]6}Ò6¤ÖûÖáIú×)H µM‹¨&¥<×LÂRˆDR­æóÁ;y‘Få£Q‚bfe"’å푧da”¯<ôw|J‡}Ø«¨×íµ¦K¼¶pÉ#Î.r„Ù•ûÿ¥32¯ìòst/Ýè>o“ƒn‘ŒÌdcSZøêxï”àŒ›ßE­eŸ!C3Α?Ûä†*wIƒ¼ÈÁ³G €¶Ë0·K—0@ØhVO5I¹ƒ<áÖƒ[‘YjmøªEÎi”^.°ñm»·Ë¹®”+Ï´x%?ÙBižS¾h×úÔàîÜì~RØl Ã7Žæÿ¡>2¯gÆURz°Ì>‚fY-ÆùËXAj}&)òOt‚\hϺ®äEˆÂö˜aD,tUBNÁ”d{3åkl¡óìלPP¼àsÞ+®.Y ŽèÏ÷kÑŠ£ÜU“¦*f14[ä£ycÛjR²À×Ȉ—HZYQ|Úþãì—Þ·‘QûÒ‡¶ðÉÆ,a+žK!ý,c4°o—æìÔ£Óc¨ò°ûS¢7LŒÿ2^.¹qÝ@]Aï¡Ç4H>ò‘ÈPÓ,Á#kêýçœ";€‰ A’Uâ§xë~tE¬sCT´ ½¥Ó}lSm˜cì éi —¡ÉaÚ¯
-¼¯­`Z}bB7—càï0GDXL¦và~iŠø‰;îà &Pày*è`œG““R w{ ‰/EŸÇ"¶*r­rEû¸²œˆ]Ç¥×\2Q§h§Æ…˜i
-„98_lu(Rëé4V6/¦0üu­`ZF/ ¶%f|Ù$XÑß6Þ`8 ?íZ äM‹‰ð·¾í^L»çT½Â?™'sÒ´®P¥“Ùs…ÞÑø8-S_ÞåI¹Ü>Œ°É¦+°>Ì´†ÿùÇKIצ¾6—˜™MtÇçÜnöý€IQ$˜ ”º}$cšòœM 
-¯ºÖ‹œ×¶§¥G4H^e«3–ŠQ˜rÿU÷KñÞX
-ö»c'¸Kß!Ím+OòXIY:—@fèÑn”kpðÃÊ ‡¢Ïßa9FBI±¸õP®ñ>qâÚÔ£Ç|©MTyÔ·9Fpˆgtz¿¦
-~<i뢈%)3Ë*b`kX2]ëÐÐQ+)"ÏUÂ(¥0‚èm” ¡ ˜k—°u=s> •÷{+½º3홫ˆ0úÆÒšcôÂ"…âzV SlG’h “pwaµÌ¡%Yë’ F{'Óª­(I ow)UŸË0`HämØk»ÄL‹Éìœ!JÊ5HµA¼æ¡Ä­ˆE#”3Ç\Mί¿
-H‰”—K’œ7„O ;ô¦‚$€XÛKß³²ï¿|(ÔUüg<rX¡®ÎI<2Ö{¨¨{úUÍ_>šk³ÑÄãë_ÍëË{·1¢[/:!fZ­4«­mHÈüÏÕu|ýù#AÚ]ÍG/e$¦½j3+"¢}†éc´ðhnAz«Åµôâ% £•áîÜçôŽ‘Wë½µcð¯Ë]„‚û‹ñj»>I^.„ÞTGÛ'½§F^QƒGÙêcÆ fnµW“„ôW©utUkÕ2ÁãUC†¶®Öùà’G—ÔAdÓüü!N—æ1ÀÕý¨)½ÖZJ¡RÕë(¼S7D›F)Åjœ“Œ7IæÖdƒ
-ÇtmUÌf/£K¯¢";ÃC·)ÑWþ€ðj5¾^ò7ø¥ç/—}’‰w-¢ôÅ
-“¥uºÍ*•[•ªM„{!¡Á¿#cí(B&IÏîºOŠ6hÅ^5ú~y£Bæ¥ó¿Ï8Ñ ;ÂÝdCŠÐ\ªDêr…|ï¾ß~üûGùúób^ªEƒ"ÿ¾b80è:²Á_9X@¬òëA_î·qa¦B‚4Lˆ#Ô…¤Rœ•!/Ö»ÔB’æóqJ탵SááLW¡}fªítÿ,}—ݵªJÖlAø—ðklu`m$Ä3óLç:tålrº»´ ç#-LÄzRõÚÈ…g,Hç_ù½œÏ•ffÆm0v Ü•á­t¦ìŠ:ýgÒuÈ>‰ÑpëµØzÑHâ­ÐÊ{ô¬Q<Ëy}½o5å‘Y£0…h×8°…W§2&üzXI#óþô(5&¯
-Òüš•Q|î[äš`£I;ôÐ
-
-Õ–TœS¯%‡ˆédc\ÎçwŒD¨?4`
-C@è>rHn}|S ·aø_"•r†iy!·"°YÒÝyUgH*u€5SËiëÐ NÃàáR`ƒ â8œLk)ð U þPþ1'§¼Ò1þ´gë4iü`cÅÿ9èrœ¦¡`Õ`Íú€>Rp;î€dÉ@Pº$ç¿ž@ J¶6ëëŽP\@Ë÷Ë´Ó7ˆµX^©ÕeÁÃ7˜6vƒèM&¯4õ&)ŠïIØëR™_—(µ7Õdö`€eŸÔÓ;¦,m –jƒ¢]ºÕ˜7œ¤ UõXnz:ý¾ÏêÈ ­ÑÜðãÊß].ÂÊÉBZî+ÓJ^°“=ãШßáÏ1ÔT·¨¯w§ ÀDþ‰X1ýéX{>ê%p»d¼œ«|7îŠ"Ïp//—Ûþ9Z©|F7Á¦Û38h]qPa<?u;qí”Zš¢NHO¡Š¡'Á""_1Ì+Ü@$ ß2®Tç90­SÔ0©Ô“BȺ÷+JcÑ4½Â°tÁFײpèšôž³¯¹Ú‰5Ý/‡„ ÛÜ1Œ˜Ž`i„hÖÃ1o$&ÕØÏ]ØbÛ4WMWŽé4˜Ï0w7G¹ªé­r Ó&xÜYYÍÇ/(fç˜/ˆj”܆ÐÉ`’P9E¿AÖ9ù¼’ èã9¡MÝÍOf{’§A ãA
-=¦m^CÇo¸)&Ë}ì¡{›¨K6Mx­K>^5û‘»e6─”ð{Ô¦¬£˜fD“™«¤r b‘23Žƒf‘d‰8[FÒšñXã‚Áëlf,ŠcGáÇR’Ø»û>ê]! 
-—p¡m¸ÂLñz™q®£?•Wî¢ä³ rºŽbþ¾ÀÈÉŽÂ1ÁÌ c^Åé=˜Ev´¸ÎoÊ5þ¬eÕ±q¯dšAöQoŠþF×û(<2¯êZã°>êÈé¶â°ÑL„׋ý¿CÈ:‘…>ˆ~Žúïã4"ÊúÉ‚BöY™ÆE„ÿ¾aX$z ãÂA–’—nL^MÃ'© Áv*Y¬¶„!!ÁI"f Bû§w"’ï‡áT¡“tósŠ„NÂvôÔ8
-L¿O]AfœŽ›ÙŽS ®Ó“n'„5Œ¾Èœìj‘>´=Ù'ak˜Ñ l§¤\?‚—$Ϩd’!8
-Ü-ã¤+˜‡rh<¸u­> pJиÜ
-&m'‡!äp´U§gø„´W65¦Ý§.Cð º8dV&hËÈßöäµ?Aää¾µLgqÃŒ¤[ÀSî7¦ü„\cÆ­Å®Ì]g¹XÇZû•ÿo¹Þôè
-áªð=Ìþ
-¥=}‡äQZCԃ݂ä4š“­ªw»#FjEÐÃÐΙòÁû²Ú:n UKÖ·ô0øR9OJ•ö5œ%„4x¨œGçE¶¡¥Áœ¤ 'D¥¤ƒ5GýõÒZS­øB®_zö H;™N½²ØRåq9HƲ…¼µìh ¤pp6 Œs—_7¹ %e³ÈÝŒ5”ý°¬–Ññb¢Ø赺1ZG2$+àW"CQ¡³LæÇaÐ>!îšvŽÆ“Ã6hbÆè}m‹€,EŽ@ýtÁ<KŽó„Òäe
-ðm1‚ÉÆ¿°~ÅÑ,P.« %veEUèg'egÁ圔ۃí81¥{uìTàœ`±Æ2ø
-·µcå| R€.W†vËTH"*³n!¢j0U™Á½–P¿°tw83ðcãtÚÀ,;ovð¾åå0‹RU+‚~Ù´ Ùœ‡Ð`À)ó4W\£.ئcvçÁû¤ŒÖÎS J<é_Âèè ›®´
-éK\)fôñ2\AøŒ«èU)A±ŸåGA´)ž'ðŒ ¸ÛÁöÝfÓv«“ï!]ò0ØW`ÖsÕKÐí3êIóc!£äGˇ@˜C‰$´Ò‡¸‚`q^ÄÒ¯Bº*£Á¹7Î:‚lT¯ÓÎf¨½5ç3…C·1„Þ8³ì‹ ïá­ªÆE_SZ÷S¶o*¥Õ@÷Ñ°ôMÑK^½ª«™Ä•GÛE™“æ’ð~ú†¾ã&a„li2¡¹õV½žpÅb³0€vð]ûÌœÑ5±é)|h‰«ø…᜴WCÍ0‰¦¾Ív “RØX«ì4ÊD#Q HõÍ„þg4ŸôŒ»;¢Ö㦦EaáÿëÁmÀ¦1Å9ORQ]t²}>ê5D’Û˜Ÿ%BÿÏw$Gê”Lè°Á E)X7wûmAø‘ô¢)¿WïêògvG¤¼¶@+ÛËèï)“Q]ÃC+DÓÊÅjõôöX0%ý\ZÇà¨0Zž¦ñkmLKî_æ¼ØºBÌþZ¢ áþio~-Pi\\=N1Ö¡®Ó}©iª©"-ÆjîÆ~‚¡!cXˆeÇéÁÀIa¥9g‹àYÔœDÇ'dZã/jƒéž}¥Ëû&âšú›~Зüæ w 2‡´çÕxqÑò®¯)jJ쯻I²Ù-7íN=C‘ òOŽuÒ‡Ž³£.²| ‚t37úÌéUà+=ÂaB‹²Ä2[éÔ’‰ä;
-ÿ6Üh # ä>WAç`HZ=Z´< VÞˆµÛú¤ÖÂßø7„°O‘8?ñ#[]QÀ Ÿ„íu5SZN÷½J2AHÛ¦“×®ÚüTÊc !
-Ôé–·š÷Ž2|h4|»ØŠªñ
-‡
-ó&–‡fÇH1ð'Üì´ÄÓ²4Lò©w±mχ’ºlf’´æÀbî-È3Ô“Ë%(ˆ—â3¨Eö­@?kàlIñKú-Þ#“¥/º‹ J9e™ÇYÙæjB„¤#wåÓ‘9Œ }Œ«°C<ì-ŸÙABv.ÚA®Ÿóšäõe~:Åd—L¨6²-õÞ‚“œ/ce
->‡To¯Bhô†ÙÕ¨7BŽ‘n ã-¤< %ÁC†fËÂ/A1èÚ=QZ c—ñí ’ ©T-¾ã\cÖÈL&NZÊà-ŸÓÖK˜5ÎkÈë:`AüB:àÜ
-,F°OƒJý™xZcZ}ÖÙ ¶=ï‹ArÈÚ€¯q`ž ª1 T8ùUègSß<>[‹Sl¹iËCøs9l:ZBAº:ÂWU-:ZQ˜âpFž3Á -4²¾™qX|YPîÕ) õåMÈ,ûùãtaÎÿ “ÆœuóìŒþÃxyIrQÔú0t@‹óòH/xåúåû@¢c»*+fbuo6DâçÏ ¾~»ErH´´³ nléZPûA/!RVá§Ew²üþLûè :A‰ö ïÜj]1†q‚$ⶹÔÀM5 $R¥$°%Ú‡ &Ú ‹Ô—+ŠÊí¥0†ááÍçY…O`ì)
-V*'âÜy•3€‹mÅütÂ%¹c‹Šx¯zç­Ó.’Œ– G„fë ¥¾]BN| ž‡«!ûü<P†‡pe¹œ­p*ñâÑìȉy™HN¾Ö¡å£êH!ØGݘ£=VüÚ°±¿3ï†ÎÆ€§Ïá«hÉ i¯ØG-žŽ¶`˜4ˆF„h±¿ˆNq&Øw—ðGÉX%»Îä`[±™XjL ÍéÎ*QÍ‚X¶³¨£Ò£î’,ŸA¾LÙž³@gƒ×!Ež -e?ìŸíT œ sWÜP åŒ/|
-‹h=ËÀu†T{¹Û‡õH01ðá
-2i¼ðGOÛ*J5qüèˆ+h¬‹Ú*K”·yÃ£î ‰}W
-)€£ÑLˆÞ»Q~uÁltFa$ëݵ1YïÖ¶Žö±–; ¨ðs˜¹ƒÅ†B+P´Wa[q8%{«.¸TnúN;·uxgø”LPÃ9ÍGF¬½‚®fÐ.ÁÈ¡ØQC„¼h%+Èû[Q`ŒÃÚ„-îÅg}Ô“u3 tÙýcœ¢¬X¡áó©K ‰¯äﶲ_j=×½Îu¸yª(ŠÇLmcw㈌7 iÐ)åሠՀ ž¨!¯üÚsyå« _®ºòFvK>Ñ÷ ‚ ‹ ³ÎÄîL_ Ó'È{MyTE~Ó\Q
-ˆ0 Ÿ¶n#aÀu`öâ:p–cíÛ$EHœ‰&bÖ‡éû(ÙÓ‡£Àc­™ÖÁ(ÑqÒNMÅ=MÐu­ÓÞí»Ý*È}ŠZ#£»Ý /%šÚEÒn@…¾šÆ¯Æ‡—
-¯$5‘ä§7|¾x@H§üS¢EÅÅMÀG$ú0ûȇ nø£ˆß¸=Îp$Çi¾HŸÄMÜo9cü9 NÉüÝ™ý,c½S‡Á_
-¸ß§[Á9$?DBŠïw'Éê&l%$X›Ûcø¿3ÇäžÞJ¨ˆ2O\܇‹'¤EcdI]ÜÀédÔáÛjïà Šm(ˆÎm#¯(ö4è2
-ßÉ”-¦Ó²2ä’‰°Žmø½/ÃÄ ÌZöŠþq‹Ê" ÂT‘ʯ¢Æ|2½uÆâçEÎv",Á“Åùã¢ði«%òì¶].ô&†W\Ô&bEòb%éþã5óZôßO:þŽb îÇp&¦"Žž\§áÖ|D1U
-nKJ«ä#šÏÜ'á”1†rOµø9æ³V«ûäK)ù!£?}à@õÏ:p¨ ì€H%2#F€ëâ˜
-8ê³™²; ÷’;÷{5ŸtErÂWgóÒ˜®T¤ÈøyžÁwÃj ö¢ìÈSó\µ,…ƒ°©©ž7×CÁÙP
-N„áEzc¦ dU;³a±kì
-T!ÙK”è'ÕL*Š}‡ „t…•@C‚;ÂÁˆ@ÇKÕv‰œ$Ì nèw>ë eÈBX^W^Ò:´$Ûñ_W–¼¬Õ+KRD°`.lè~óˆ‚Þõiá)i cÙ†ž0aeX#r”hêP?Ì 91`øºÉ¸2ßÄzyn““þBÖm‡¯Ê!R`Ruš(P% ï0³ÄÆ׊1à/  e%ŽêK‹Ži5Žªà¯£º0ÑþÌL©p8¬™‚$›±$3/™ÚNÞ>,Z3dMÇö¹qÐÚ÷Ço¦ÀŒ
-l¡â™m‹=FSŽ€겸MP¤É€ÇK¸Û±ó`°1†&ñÕ)èß'áWqêÐ k S²fD4Ÿ^„> “Üâ0F5{Ùܵ_EQŒÁ;bR æ)1•UÒ¼åCzfgãQ©#ê$%,Ià†½dÁ´TéªC”p3"%Yi!Ƕ-ä ]^¶K±z<ª]*ü¤ÜdÃ=´ñæ3@fɯ~¾ƒòS¤ dß»%Òîƒ}‚>Óö6cÅ'ƒEì„‚cÌÐ
-+¼ e»î/nY
-`Ú2".‚,K½Qx%ù+n@v„9[mâÊ!p ;O(àS©­âð{†±¤
-H±(¾á"n“ãúPÕE `m¯Ã&Dy‹¥}ó¢cÞCáâóÛm±”¦±¾ÈÃZû0>Ðèxý%ºbù”PZ›~ E"2xýÜG®U’•xºL?KVûìšèŠí<OßT«Áóµ0poåG܆VMXCprà¶<l@öq\Ý wR&³ãÝ´ÂoLLCë¤f'+Òó.‡AÛu!& Êv9â
-ÀèL/?ÅQ
-âÈ6­C2I!…€ÖäbTÂê%“¥oqæe°HI'zÔOèßу­îhœ6â$„`*ÒÎÜbh
-|ºÖscú¨+bºRÀ‘FŠ„õµò¦ÆÁEÐKõZ„Åá‘@×äWÆg`pìÙn¹D­IÒSV=¦ùÊœ*R8[ŠFîàŸÅgŠ<ÆÁ«ÙA+Èá4dìŠ%}bUú㾿VüãðKøiµkžÿþPÌÿ"WlË<_}Ä:éAÿ¸`DºÀ
-†âã—ĸŠQnvÑ ³Ñfr›Øõeœrg²=ö/aù
-Fì0*ûq³B€\+'zA†¼¤AÔÔ‰†bU ¾–Ô‡½™P2‰Xð"Ë—eù¼ê‡)ècÎóIQ²¬1nÎËbyÛò¥ƒ"É}Cª—ßÍŽDl8Š‰8©Ñ¹)
-(Ñ@.Úx‚z`#–Cd¤üåYZ®†î{ Sá«â;GˆM¶OMÎrë4Œ5÷&cÃƺK€E÷ýÖ®^Üv‹a}Fš¨y‚ ÎÛÄðÃQN£H¬âÙ]$ €Áb&šUІ1/%w/ôò‰b3¶žŠ£`À¹Ä—Õ+t’Ô‘ ÐWÎ¥álÐ>i"ÐWQ7gÌ’”á™ý´ˆ Ë æ—Š'ºÿþíRS¶ŽiúCïó^Ãåy”똷“¨X‚.Îê›
-üÊHŠ²QâÑ›€ÇxX_È‹MÛi¦‚UV
-ñÍW7?Ý@ã’R
-¨¡÷ ‚ÿNú`ÙQa6¥ù}¹ì†_[ãs¨PršLï"—ÈAŽƒ4õ¼p¼üÓ±ts¯dkÛîNvaE®œ%íc
-0·8Qfg?w_.¢¸\OQ]É9ú”ÔÍ U‘¢{ û$gt0k¬$kÖ⺭©gòë¹W#ÈK,^r´]…a€å_ M¼ œ¤°å’c
-„—µÚj91vü ŽèÝ>àæmåR¬õW3G €…÷¡Ðåò>0=t4Í5Û¥äû·¿ÙÇßHJãQKjDþK‡¥ÅŠ|ü¼W;<¬#)Qk³Ìá~PI HKÄí%ÖL¸47‚/ô€™¥À|wˆ–Yø
-šm)!mš1¡88R’êP¡«*NAÅ$ôt¶5eçÐP“
-'Š`*(;g‹Íwé6ö­`* °¸–0=9lÎÞ¯zÉ+Ash¬‰,%<¸É"â NIã­•<ŠQn¿¢ãܸhj|ÅuBƇ˜£”¸Æ9Mü‡×,¢ìvMBŸýÌ3‡œÎN±ñXœÂšA:W°Nô +º§ee+¹–k>*š0”"Ç TbΩ]Frô\À},o %pänºýk˜öšÄûæÈ÷¨),B
-f|ƒ—TÑìôÅ´i ç]ƒ’sU‘ºïˆ)ëÃ9Y_T!¼^Á
-Æ¿\Vð€‡Nõ|i8n={ØK9‰%É7~À{àu9c $ɼ•æ”«X[ O'[¸cÙ¤¯â{
-©OÿòTÑ-úŽ·=Ø1åf=
-PRdNTè^å©‘o%®êƒd€óßÎ*sðI¬ãâ«\0¬ŒÍa£ZÿÔ@2Q[;öhwTÐüд¦!̈”q9 ½g2ü‰è²²U°@°¯æ]Ë<`ê÷„õØv +0?ØÙÎÁ•2Š™l—7N&âký»åfÖ’׊ Iã)˜àš~ÕRŽáêÞ¶U
-À8#ìçÌÕ •½—« ‰<Ð懊‡Ó{±µ²¥eß\Ï9“@IZ%ºå®U¦ƒ5jõ4xé¤%\O
-ÃQà$ln÷sæ”Zni0*ßšF¹N™%Ã`N±òÀ°„°“6–ŒvoY†í7a‡€BÉÓaaÍ
-Rfd_L™™°¹Œ Ä£Š‚ËmG!Ó
-eRlD÷Ö@–€›Ÿ‚{Ó³f¡«v?žœ·osä½^رM|šP\—M†¼Dk&!˜ýf‘gQ/$!nËgšàPÜ]G^×Cw’¶òÎÜS¾zñ¿bØÿàí3Þ~o6ÓËõUæßWœ>……µk°oKUÜòKR&©=Êâ¹L(ol#J•tZŠ4±2k{´‘ß”Ù(†bÕB´CȹBÃú× 9[Κ–€ ÖûØ%R”Bh×¢YIÕ=8YHÙ£ì–_I Áû\?C0©rݵKÀÌ“
-
-î­j£[CÜÁö’Ém;\>ñMg"nM3XbJ¸’¿! å
- •<È?¬éäE†'/³ìÅYoÒ½ÕŸÁSxÒ,Ýn»†ùU­‘eÆ"O'ó` {Zƒâvë T3ù!í;´$£!Á¾^±1)ÉBQ2F®õ¯ˆ‰Î2vg!X)øX˜’ST±Ð»¸L¥™@…ó˜îBñ262 î^&ý! Wù“sÕc‡óo…?èRm‡Å£uà&õu^B"–1ËCÙÐ*ÿ$­%ÇænÁ$ÄÏ`âsŒ×ª©Ï^MðC%ÿðUF7!»8›tÇH«‰¶¤)걑ß̼Í»†³2šM¢<§óÄ·™]ËÍ”N‚Ø%X+ᇠz¹6çÛš2Àøã¸ö÷=Ž%è ÿ­RÒ³ÝËDŒôÞ­^¦øj°ýƒß+ì5pmŠþ„E¨±¥ï ^&
-N‹BK\ô¼®ýFí°;øU9²1j}/»)ã~®SŸ’ìòj?+ÊD|BFUòlä÷¢~ÒíW“—»Z¨Ð.ÎTs
-å|ÒL6˜°3¢[<”eÖÐ@Ü]Âàm³±E°5€R’½gBdTIj¤Å€5ñ/'_D€‰K.ø:Jä¤À¬´¡8QqÉ ÝJPFhê¼ø Öò¨kŸ«
-w0áÞv?»Š®»ÒÖ¹ˆŽL¢\P.•A˜HÌ€(å…“åÀ&b®¼1}ˆ Ó­¼†_¤Vb£ÞY~Ë}US8&1¦ï„hC¯@cç ä‰Ö$¸Wn[o•þ¢Ò§DãÆ¥-´¯ßƾ³*ÿg¼\rô¸u(¼ï¡WÐÐ[Ô8fwäìšïP”WéÇ5‚ q7-©ÈÃóXå|dlÙ• 2üˆÚåT‘4\¯Jø5^º6¾?Î ÆrN¼ï^"d1r>pÄW½Šê7ÊRŒZâ"6D{Ó‚z`Öƒã;ný«êºS•mˆQ%°‰£YÂW$-4ñƒ… Ë–•ŽˆœP—VEÍx‘­+ü%Žt¼(ÆéíV¤e@ÖÆDÀؽóšÕJ÷6gGºæŠð3ب(A”²zÕS\¥ø”à“ŒoµóUÖ€?›¿™âµáxO˜hŒ<¯LA 1T÷U/ÆA:Ÿ\ä›_õâ-F…PÑ2„tµýa`Ù~ 2z0Å‹D
-cÚƒîäͳO*Æå"×s`ä!þ€ÒOÄÔT» |ó¶Þý{ §)>,W‘?àÀ}‚Û:Ã$<j|Ó ûÎO™d™\ÄáX¶&[“tLÜĪ<M‚f6RÝXâÌ
-¢Q¢¨3_ìg“‘~"‡è«Å9L‡¸‰×a™UâßTz`”° ` t¡±µi†›™«ÅW±¤D0¤„$"²`ÿN
-Áò×6áË©’)ÙÙ@Šó›•1P@zî«
-ÉlD¯çÓË‚Q Ð0"C–€Ž®7ïÈÂé‹}÷
-È/+
-¦ ¯ ÒrþÎ4SÑ=¯Bψ9´o@8ÐþwYjú¦°ÈâÄ9£&ú§Ô§‰‘Øcg/ç1Ð ²ú4Ñu†Û®¹Æ{q’xtÂvZ±4öfóEïl$Ip*õ`7É+N?X*…ÝáhOBþ
-€cd‹Fj‘fê¬ÒU·»žÁψ13¶Z"ÄIw´ÓrŽ?[ƒqK¨zDA©—i–@7l‚ ³aâ)R„¦±ªe;.6?,ƒÜâ£ø¸B»Š+¨‚é¤í[—’­ÑMwáÝ°¢å~ªJÂbÕ/¦× eói.Ò¨tß9ÅÓBÒLJh@Ѫ¸Òg$\º‹+jÍÍe4Uc I¿‘Ò»}-7/,~k1N? l³ó¨B r[µGsR¼Q®͹ì  nrH§;%>
-ø”qUž†¦dOÛz/a“1|³T­y]v[?M# ÑB4öMi ì}´o˜pøVûTRÝARSŽ=™,dm2µ1*ÀÆÊv9¿M*Ô‚O­¦È«|(ñU<Œ+€ƒrAބLjyÔ´ Ø”'lë¸Ï›¾¤q@Œ*Ll?žþñaWæ“þ½w—i–ïÑ¥¿dSŒš]Š~zQãÑ3Kãz|8»‚UîYÃøRIUí2a‡þ~ï %°< \ÿZ;€­9,]}øµ¨ 2²C¼áÃ9ìûÍåRßk+™%¬—_þ,BµabZ_þ.š²XsVÛ/C=Jƒø¾ÆC‰3±è Ãë%ꎾƒã²Q}¼¹Ôa8£E'S°uaç3¼ šŸ»¢¾¡¤… —­·™J8Д†8¬G¸
-댃FŠ˜SKƒx Ý©c‚ãŒ0ÓN×9ÄÎ.ÔI
-cܬYÎδO.®ßÒYàÁm·Š£Kq“¸Ÿye\|^¶›|ÿ«"^;d%» b‰@Uå“~¹¨¢
-×lF,á\vIÏçÁ9CŠ´2ÏxTˆÃZ:J°!&Äàò4 <¡i‚E¾rNÛK'ðW z“”³aEÔY#%M©ÌRrÚÜeÄHœÎä(ìádâèOÿP¢æ‰ÏÄÿqÕ»±w߆9›Îb.%¸…“|—¨w,"M®ããUú Í×Wo ¶Ïüñ2IŽ#W‚è xž€†ˆµþRçèUéþÛÿˆ¤µ2£¬iê…Lí cð6ÀÑÍ!UiùÄAET
-EAH,Þbï}& œjCsk5¦l“ÁHLI¶ðž›(þ
-¿èz…šob8a¦iwÜ”’*g~Ê'ë"‡°Îƒï®Vœ
-“äƒæãzt»%´d‹Mg_*¡%;„Í`
-È–XȪG8±a§Ý*¹ZŒ%sEÜõC°k+î:‡0Ì„‡+Ê ’Uضï–ówæ
-]§ë@0 ììÖ‚ Á ñ8‡çÞnG½$Ÿº2òëÇ@™ÚÔÊq[˜¬¶°¢|üðÐÉÿã„-Ï[ÂÅ' €|ôŠ G MÅLIÒ³âs°G}:eõ'#w8Aøº–ý kÄ#_§@&Uñ±]ü€Œ `nºS›„>vF‹ç$:šÔò€•žåC$›¤™ÐïT) åÍEN^S]NÉgþ¤v£Ä
-M¿GgyY>âHôd‰¤ÈüçVˆ’ç]¬ÄV˜:`fÄ?¥ìtw´ªçP˲-è\mÎüwu¸a^o0 oh "á-²2¼•,Fà\²1p¹ÔÎ*=Ã18ªÒLŠ3Î=$Dq¼xKÓ ‡b®ßA궎`Š×-ç#3Ó¯ñ, ,mD¿érÍD(­‡?†Æk/Å\å $cl¡dDgùÔДŽ}œYäá (Uçh8¥Ðx(œ^ç°˜X:œó<¯Ú:2EµÒ‚Õ¥—Úg+$]T¹ ×%eæ‘ñ)fSˆ"Þ4ZßÄœC>;‘DÕ²èeÑòÖ«p%0e\}y„éù 9g|
-ÑÕ†5%½€mÌU¤ËÎWß1Hï@Ê´þlÏùè'fÊó%Sn=7µêw¦Õ–C3Œ6AˆÊ_|dûöÍðe¦¶óhþÿ”ÈC~nœ±¿˜P)Ò)ý€údžç•]ô`âÓTö Û”Ö%1Ýe¿é=j Qšó Ó,öÛ´ueQT‚¸P¤éŠ2Ip_Ú="_øÄÆÖñÖJ[MC}áìÜœ©ùbR".W„ô¨dìVgå‡eÀw¶…,úW)â%ÎÇgl6‡Ð #{É«_ÿ|ÌÄk§xj¿Í?ÉòÀé´"þ‰@à ®FI3ÌóùûC{Ïš†Ï·Ÿ‚î×½~ò¦ßzzpÖÍóôBté*¤L‹õ
-QDÞüŸâÏIbt¬UÞ¿ÚœŽ¼V?¶%Y˜È„ ™bŠˆ¦Òw EtB; ‡ ̘ô¶Jó•Ì
-'2îä A`´*®¥ÕÇZ§í [B8iŠn‚ŒáT|^@;º÷ߔڠU,XÓ9D¬×ïØ“Do#Ÿ ÎuC:|=yöé(s¥E˜çª)oS­OÅ §XTÑ Ã_t]d&¹q{A¤†xSD}}ŽÉƒÅÖdKæ ®š06üLD›÷Bç y·¢X3ÓÉòuô‰ˆ ßK¡ u;­÷°ƒnÏû«Ö·LQ6Qñ*àĶ ÏxtŠ³èËB¥ž®ÏÆ÷aòˆ\8`‰N˜V~E$üë#
-ò3æ‹É°jÔX»º7Š¡S…žä»[•0¡£)‚hÿÙd–oŠ™'rX>›À¼+ÞЪbIhß"íÐ9ü†‘M^W‰»*Üø‡Æì R°Èƒ§†^â1{’+oͯÊ|N*›]S£" Y‘L0‰8ýÆ|1*,IlñÒ€†rgÙõ¥ÔG”£ŽÙÞÐuú‹ø_?Ñ«-kÞ„§JBÜ Wý AJc‹)
-i£-a
->iJPìõ`
-PæïU*¬Údî\EùâÊ"9 ÒXžzÚÔ9iÁrü58ŒÁ¯´Övþ}m†É¨¬áÍfÚõå¨kò« %di/«Ÿ£Ð¸Ö6úmŸ ñ#ªAròÉ‚zq‰¼ÓêÁ†fŠ(†–+
-?Ödœd¿ÞœƒP•†™X‘7¿Øò—®b3E‚Uf¦†!@ ¦U×à {|— ÄÇQY‹Ÿ@žŸn% ÷FgCeÌÐ ©øÈñ`0]C³$3íÞ›™~5m´7ŽeŒ3Ú|Lm2ùÐmï¢éZ]Ì·rmçÉ$‘Ê/Ø’êÀ.£ACUùWž~âÎDŠ¯|úÚ$G^­Y‡´®¥ÉØ1¾ ¹9tª¬0DZÍK#ãd%#@y3._§Ø»4dþÝ Éà^ÜÔ1`‘Dü5\ XwÄ€Jä+ò2S s@Cå0êy-/£/i-z°ïZX'ŠUãc¨ýPxB}Úá_ yPò?°†ä7—p§öMÌså¿É0®kÐe´ª|±úT±_¬IEDå•¡”p0ZÔ7‚4ÆU×o*Á2¥„}亨IØ·›ÕïñDÍ°‚çÏF¡‡ c‰¹FO&©œš3­èÊ-è%Pe[¶sSVËðí?Æäoµ;0‚`šª\ªÞäšÇ0»SNë ¤bÃ:b?`!Mg
-æÜóº×“ꔊТ.oçjâýWDÉÈY¢ç˜ïksþŠÅßA0ûv-×/E¤×Ïø’üÖç+ñ€ýbSÕV`X•|ÿ²F¸¸Ðt¬Ì5n&ÐÌž¹OÛÄ‹‘AÍb݈>¡§cjUá×âØ|ïéÞ(ݽ{1ý
-µŒÌøñã£Ð ówžw†Þ÷Usî_À¯íD¦Ü_éë·#?=F£u¤žõ¨î(.6æÖįÅÄÃÄÐ&„à£ëíßokF§Ñ$ZZmûzý¢ VKT!xôs‹×ôþ^¥¢g šœ.Ó˜¾ ¿ÿ¤h‡çëû½¢Q%þ™@+_/E^ÃgðpdI·¬ÜxNŠd¸¡Ðá#MNhŒqïáô}’:{w
-¤Ú’mýéß8¦+ ýÏm¯0l§-KÿJƤ_“G¹Ýü"ôŒJû±ºÍ5Î =f挩nÇó%£‹;Û¶$¬‰`›ŽPfs”œ{š@Ò’1_°\ÚQKɵ_åÄ&N¹î5ŸØc»ú™”×V´ ˆÖH<¼•kEn P}’d•-šSÒç%IVþÎ]b¾È¶œ•¯÷¼»áQ–iµGu²R)Ñgõ2>Õ$Aä!Í
-/uù}œw±ƒÁoûU[}— æ}î},¨ÂnrÍÚÎö'Kêc?Ÿ/¹WþèyûWmŸ8aº5ÇTyï
-ã½+ѮӪQK’š’;‘ÅZqð“Eeèn‰”Ïwh³ÿ´!‘½¹{´VjMè(z׿Sæ’£CÁE‡-Î(Ц©íñ*“Š¹°ømM91dúËwÕLÚ_°{”'œÿüsq>WõÊćù1·ãÓmåMÀ2’c‹Ú?ŽRÄËñ3ǘv´¤‘K¼x"7æk§ËýlÍÅq
-žß÷@v±]¸Q%¹î1‘眂^)£µ½,»ÿ¢Ô÷j€½þPòÍ>.j°F,?áhëxi´˜¨}öÎJÉÄÜ–%¶¿•ŒÞcd[WŽõ9öe@Ž™ìîsËàÆ.Ñ„ïI×ÙSb¯ ƒá°(8sºx¾ÉQ"Ö1Vïc…#QåÆc ¼ló+0ç(wÜ_’9 ªÞ´@^lý%Àp&Ï–OzIxJ¤øó+P%2èûYà;S²Iu¦Ã˜Ô7x4É%­]ã>º×Y4gßÇTC,nÞÀ è>Oç«Z㢑3*m{#dΧ‡cµ9Ð,sžÞpÒ+ÿ“Û4½Žy­Âp
-ˆõf0Å8õ³âlvØ“¯Ùâ”n%
-ÓæÚߊ# ^)a"Ì^,ÙgªüvÛñ%LpÄ!¡ú%GØcãrNÜ™#Mß&ÌÍÖ ü¤5J(ì•ÕÆ~/É'/ùvTçÆ «¢o!íÏñ5V+¹Û›äöÝàøährt“*4u¼\‡=Ú¼*¨«’Öþâ÷ïM›/×IîÀtY‘YtÆSŊΚfK
-Ë,s ñ>’›ñ @¡ëc¬_÷;úi`–°*=i†‹LI„®œø;éoQ2>õ©ÏsÈÃA¢÷ã½Í÷Wqf»æ ³óÕ£Ëß[Çm~*F¤#~¶öüˆO·“ä³ÛÙvYå-anJd4‰'†´QâV-ƒ Ü󾜞ÚãÊîAŒQ€N%vÖãvƒ¦ðË1×æoþ+À
-H‰Œ—Knœ9„O ;èS`>øZ»—}‹zå¹ÿv¾ ù hØnØîR“ÌGD¤»›µáŸY_-{ÎêÓZôñùïùòæV¼õêÑ>ÿû¨~>mòAæÙÈÙ,jŸ:§&Çt›£ŒæRúðR²´ºBUíQÓÂæ†fZá3ú•£µ°2Ç°¬ÅkÆÈV‰Å-uN¶,Õ²XÚ6dTâ˜eë±Be%f+á^›mHoÖ¬[|í„J>à¬n}ƒ¿lô1Z¶uNzZåâcÎs›Ú IàŠVóHw'¸Õ™'Ô÷ûØ«—ô2-‚[|þýñÏGÚ‹ì%ù¬Å8A°Âcg!;­•bŸÿ»Ú|õu–ÆëzrVúkL/ÝW¦jÿSÐ÷p¿ÿäNëê—³¨[u–Òl®««Ü4ÅõÅ. ¿¯ \9otZf Ê«S̳ûheü1è=Üå}z« RsÍ
-—ÎÎâÃNkÑ Ó‡ë¤‚–ÔSOƒ¢Ä.3ë¥rÓÍni ý&ìn”ÖŸW5GˆC{Åi?ø<­„1¬sìÕÉa­–º!¹ ¼Ñýˆ:‹’óÀv^õ
-„Ó2RêçœNÓóv«>ÿ$ V›£^ó‡NArÌUt¦è”ªÀ'…Þ×Q‚ѹL­ž gT§=LW&¹B9ùìÚ~ß «ý"Æ@¯¹¡Û¸Ÿ“šfhÈÆ—BϤé•e[
-¥Äl“î;‘"OwZ¯åD¢Nˆ&iJþ<j¤U6Q¼ ¸”~Šöé ëW¢ Cßèa<w‡z#”~Â$ðÿ­Po´õMéoôd«jDèŒz˜âEÕ£­èdìóÆÅñ*¸ÓºrWÈ7Nÿý—MÿÎg z§|¥±¾&sU’0c›þñOt™L•º€Ö¬ó¬!!ÂHjØ(.Ô±º'Æ-¬ä8‘(Dx×ÏÜ­*9|ZN¤AóS Ž¦c¢£i<V°s4ŠÚMõ(‡Šy c»úu²L' M_ÄÑ´’"ÊÖ9ëÝΕç¡Œ*W+‘¤y ätfÒcçÂüdšñ&®¡PM >HÄPµ7†~ -dgu d†µ)s͙؋q_
-0kÅõ®
-ðSy?Íò€õ¯.‡$T r_Ükˆ:GŽË…·eУÑRæ¥=¯¢}ÄÑs½ª * |ϯ¶rhH+&ggG ¡Ð ; Öøq
-]~l6˜”†u°4H.–}bQ¶Ôµê  O%eM²v¥œÜ#C×x
-E¯S;¬¼Ah Ž6­Ž
-EbdYìhÇ-9ÿ«3}³Ì¦Âgí"›Î¶C÷Ð7È»¯½‚0æ³PÌfý¼Ý+>”<
-ÑG\_…çïÆ/¦|”GW™ù¦U«>kz´¦h”?j[eùˆ¸µe$íhÚ¥JMI. <ªÕƬ®Ú힀h™Œ¢Ê B/Ôûðm]{xŽ6‚Pd?¯ Ù¡/Ë‚ èM oÌë9…bÖ¡R¢ÇaA(8¿éÝ *òU„[-×bC­¡äô@R',…^"ÎÊ%œ ƒ6/­ÑPj¶·s$Òx ì(ò_žsĘ1H¤S‚â
-<¨„–Ò<|ü¶
-ªê‘&þ‡sh{oÑ€ß ¤2ŠÇB~]#¡¾ØI”ÜÎËßA]lW¦–׌°¨±4ù¬9ÈzaÌØ\>$ •cø™—ßë[¨æ A‚W ³àåxlZ£Òä
-n™ÏBÊöÁÚàY×9ø$d¢±Òͳ aÄ àc[lL%·AŒ¿_¨Ó ”<£Ù5bÔ—6íçœÉ<@ˆݳéÈ'aVHóƒ`­À‚³½Z°¸¢ÎTß¿Ö¥A~}üóaŸ}­Ë9 ·ߦAÎcy Oýßãò«¶žVÖh±â‘B%°
-1dÑbE~yó~°¶jÊ*A«ŒY–kíÄ¿Ü«—ža…ˆpš®6/ż’µ‚<™ö:¸‘kJ\“/Z•†>O’ï’CEÉwªÙn?ðe Â\G­j¾8hJ»¤ Snã¼xÖŒ¢Ô‘+ì;Ãèf"ŠL¡9=ç ΃ó!4 ÓÔî'#ÀÄdTAúçu°é¼aåÎl(ÁáC·"ÕGN˜·«Ö9ëÛØ25&&¥ínBd<¸èy/Ó**ÍxTœ …GÀd#{Vý B9]À;pu­ÙâWR ÀúÓ"ù¶ûÎ×n(×ø0€27%øDYKÖøyÓ8&á+|”Ð9úˆÎ ³e—0Ð 1¤quŠ )±¼V»h
-ýc>œ…ÎÓbÑý6“ÜàñZ絟FŠŠ&E©.S¿1w?Ï°”fTi<Aù&@Ìyð
-ÄÀ%5‡¢rÁ·‰“cÊ%„¡ÎðIgÚÍ*3p‹dfK°üÇ7Ãæ/”H^œû·[­U8?µ Âb¥ &E×iÐ6ð`ŒÕiT7ðW`ŽŒ4@n˜‚à@Ž˜WI4„®ñçZ[A¬F
-zRVŒ(öRÆÚ\ðƒfð|í VÄ7n¡¹ê¼wª0<|Óv_=–ɵ,Ê嚢… ø³Ç Z™mìþÔ,Nwe­áö¥ªë:Ä}¥¦h¤ªã1ÕRSµ@,Â6 ?Áã[El×ýÆ-AC-¤Q0Mb¬¿.F(”~àÅ–šb8åê»D<w(äÉr:kàËç*_ìÄt4(aÂ-mE}F
-8£:’¨[¾Eq·œÖND`~qDÙ|M º‡ {Êá:p ¸‰,{jªÞUä\an+{“XG5öý`<$M~ºg8œ*s÷ÕO6…e³ê÷JI[23T™ê—Š“ˆùû4ƒæH¬8w+“.uÓæ!&.íE r æ8Ô­$¡B‡„ÊÛ™Ò«rY?©zÑ£xìv? ã
-ƒÅ‚úVêw»¯øçq6ÓGÓeHðÒì%O;‹ÉºNE–Ð…Æ\·»À®5¢ìP|&Ý 0Ò
-8°rgŸÌ•,ÕŒ û,Õ1™ùl…jÁëû™¶ÏyšŠ¸®0 $×áY€7Ÿqêy¤Ï¢gõmä£âx¼J°nD.ðw¥º(
-f0‚X‚U”±ŸRøž H‘t‹ßaî#gs&oìÝÉ Äà·8åö¤¸ŸÎ4ÁÞý®Aièb¥É}:›T¨Ø¯’èÊè¬cr¤JèA@LH™åL%Í´%q w$I¼ÀÁU|«èq»sÊ}8¶)—©Bý
-ÎœGæØ%ÞVUÇfñ?{ÕæÛ­TÞGƂǦeCGg«c&ÜšÅ$¼p¶‘©º†i'+ÓW‘öîPø¥ÈŠÆŒ[QR˜ßË”LJ¦§×ŸÈr‘¨/ÖÁæR!–Ã}\| Ác à—Þ0þŸ[Õ¬U‚Ýï­
-ì>¦A‡Ð[³ÞB'ÓwÒ«|¿Ñ2ØÖXny†¤ð w°cPÒ‘ì’ê—‰kMVwÆu… ºJÀvN€ûr•¹•Üvïºm &'ûU(t.sH¸xÆhæï/Jð×Éhˆí¥ÿ¼ýñß·ðþŸÿ½ýñï—G;‘rÛ‹ð G>`2F?Œ÷ŸÇ"ÔHåY°;DnIÇZk`òä)Jð„Ìx’}ë,ÑÚ ² îïV—©©úˆÀèeø°UC
-𤓹_ø¹ä¡S{«§¢¤ç
-+É‘KCyw‰ MÎ#­’„q™”î¹øR²îmÀ*D¬@>®Óè N¿QØ 'VŒ¦r’fIC󢎱Æ}à$áÇ¿ÌdA‘qà¦{a¢äKà`ç2¬G^ xÁkó2Ù
- ¦gòË>?+œ£Ù8nŽ{«_H,¾‡ÍwnÆ ð·¶\ëñ ¾o¾ßAÞµ!GOóX|GÒ†2÷]
-õsŠÜ¸ÄurÚ¸¡oH^·chA,·³}rzT&2çgO¬Õh‹Ì}ôåÉjŠîä ^ü*Þ1oo&X`<¥,r+—y눂MÿÌ{7ç0“owré> K§¨‹‰’Ž•9ÓhtþhSÇ>9²©íB¤¤>[óA
-¼à tÄp„©]äÃ-äÅ.Òˆ@@B¤c3Y¦©6»*$M ×b[œ"î„&)…›Ëð¼.)¬’ctã‘ÓµùƒŒËæñÃÍ®_ÛjÚº‚íçp’vœµgÿ¸ § …ÆO VÇ»l逞ØÙî#Ð36º kl„¹•áì¶Ð¬c$‡â¦FA˜™ð´%쌗´ªŸ2{;KÚ¢S¥Ü:þ׃¬­ü¥G<!ö¶Næ ‡aÅËü75:u¸§Fòô5Ú‰Áy&ϱê—Ô¨K‘£2u£<-œ¯G?«¹Jˆž¢®{—9…šNåEKA8 ¥ ´`vS#nHñ)`ªÅO¥2ÖI¨ÜÉ—ÔaŸÞ½Û±¼×ÔèBî©Ñ9T¯u¼)´Œ)~ rÚï¹ÝG gjü]7–¼ØKbÈ( t%ù©±”âdX«—äF!^«nñË´.at)ìxC"¢eSë"ã´™»£®)·Ë=4‚ ‹™ý|4äé8´b>¼Ì_ÂKÐ’›Ð÷Ì(6Œè€(äègFä5ãÑè]£½“•AÏÌè‚®™ÈŠ4Tô¡ªE1é.´¤D?29¶Y¬¾Y…MÉ=èå4_#£ˆL#b¨‘E?2: çuìáõÆYâú1èµ”µL;–ßH믭ó36 ²>Ç™¾±Ð¨OQ£«0Z˜AÄÅ‚Ê!.›‘™á›ìωݒ÷¤;ã™P"~Ãhn×0 /”CÃP~ä L› ’¥Ó\¥FpD ±6NâQ;ÿÕ—Ô
-^n*X2"õeu0Bà€²‰=m"„£Y R^H&7ÁNëéT˜8ø9Ô›ôð@—4ó킪Æ9nBb%çfœ7cà›ÜÞ‚Bw!~c˜TM8Þ|,'~‘·ãï}ñhš•|†£»‰‰¡Žù|x< ª–Çn÷Á”†ã˜ÝV× C÷¦LY«ƒX•Ä½F=^"ˆ¼Yæ^lç07Î<¯äPïþ4ïì6Â¥Pÿû¤[~²)PÂ$Šó‡³ÞTi$R%Ú Â¥b—DZóÉRcXptzY£©ã úÔnNÚ¯”°¤ÁÌú^â±5Ä g0Ž’ý7Èxu¿¥!ñ õ¤C"ZÖ½E`ò(™ã"NÉÎAðG2¡d¿ Á;n
-+gx?›Mì.eÿvAA
-|Ïs3Î ³û(š$ô«1…Ǻ:•F¶K{0 -ÄEÖ‹Ü´Ìh=nÁ•ýnëcQ2Tîkž£ñdÒ1=P•%U"kgÜ\×±¸ Û®˜(ÃWéë ù&?«2Ö'”íуâD¡)3,~òqr#½Ÿ05 kmÏô |:®máýqìuõð³çĬ ˆO{Ÿ_úrºÏ\Ѧ<8.a©v?Ü: çX„f0¡"›| zútg»@Ïpë‚®áZ ¾+þ¸áVDŠ´&:d7݂ɱš‰/Ѽp : ±>·cç.™„1¦1G„Fdm„è„ 9\Є ‰b×ÌN¶uÊp϶äiÀ´q”å'ádŽK¶Õµ9 '‹X4¯ýæÛá6ôªû
-HV upcI¶WÇë ÈÈ I×l ¤Ñyh7Õ϶€ÈZì¤+„ád[Fº‰Lbš¬zÙօܳ­r˜ŽƒG‰uÔ/´AN÷=·ûô̶¿ËÆR—ò’ÇçPeô%ó…d¡™”.–ëö@FLƒ¬ZfÙ€¤”0+BV5!&$µœx^Ž7„š5üE¯-.s
-HgU%¸¼†¼ƒ›i[ˆ¶"à5ä3BmoÖa®%< ábT÷4@¢)ñfKWœ[7õ
-·¸ ÷u€ðz-Íš%÷=È¥V{«ˆÞ…C•._þaH=F’±°|œw)^ל¢Ž½wz>Ž§=t†/ÿ‰ÝÅ%\éM©.ÅŠgÉoëxĹÆ#àãV‘ù´Wj ²~ùíÀºÄZT?OMýµ­þ>Ý'9âs¶÷$üϪ(Ò<ðƒ*9 \#Ïín ïOδ„#½hu:ê=-±»Ùô¾s=1ZTVâÏ\¾ŒÂï ’™‚~Æ{þøòš]Ï™bƒcÃk2w´qgªn`ª¾QDÁHv©Ðfî:i¼!AC ¿-" 5ÐQÁ”W¡•¸bì[銤€®ÍÙ
-xˆ•ä)öûXÓùù…¹œë@»>Lí·”ÅÆ»s÷Ö[›Úòˆnjx!Þæï¿<~HÖ‚j`©§Ñr@#ô Af®{æ”í¨LØÒú¤Ò䟓žÏµÌ<"5 %,X«Ú÷Íq)f‘{‡œ]} \»C £ƒ³ÛÏÔ“/0Eý.àxK¸RpÅCÞ<s èZ¶tÄNЫê)*‹+™û4b¤< 3|é*T˜ŸJ¨gd­0*PQKsž
-mÇVé î
-êÆ/¯iLÙ3†ÝE*¦åˆÜ\N YÌÖÐ÷!æLvj]WgÙ‹ðDW©¡[^7'Ô ”žÌ·7ck½‘w[ñp´;ìÞ*¥t›”cZ¶óÆJO]¼ÝÓÐÔ!Ñçñç2싱PÜÍgºÅ@É›œ”­jæªÜ˜ xv «;x‰.`çñfšl8½ŸiKéꌺ} A %¢]3˜îKñ¢”“ Û¥Ä*K9Ÿ†;àÉiÄÓ ·Ô#bmK•L"ÄÃäjŒƒáµZ[mÛFFo±LZÞÍyÝRÞ÷PO¦G‡šG—®'&r5+¦.ê8\œÃÒUºçÖ¤ñ,Žý#éf;w°Ÿœ$[Ü¥ÊkøDpaäšqó¤ö©‚‘’ŒTtErÒ/SqŠ;ô: ëò-t3.
-ÏIÀ~HíN‡êeõ`@Vý~Ĉ¡Ñˆ{a¾'!mY3š©‚“ûg>Ϙé‡`§ €*ÕãÕÑ—Œ×˜ g£ß@ߟŒÐ9i“;&Þ˜ôŒ Ë0æäIóïcÐÓI8Û} 0t¢Üñ¢þDÓ³5ñ/4i ¨l–®Kñ¶ßR3Qím ’𞔟‘÷Çtv`:É7é¹ûdîÔ˜/=ÓQƒ˜hßL»ù¨Ô i‚¦D5QAŠ&æ[€níT_RæIÅ6Ä7ëÐ(oâÌé¬ÃFQ;ô‰èaÈÈײéˆ5#
-–LKõŽJ¶>çÙ6ÙJÏÀÊ¢SÎ1`À#Ík‘Ô£Y¡nB C4-1Gå×1ÕHô(?Þ 㪴Ø;$DAK<?÷-Ñ­MãjàÚ~üÔð*ˆ]NJÆ‹ÁN(ñl›¯Ÿ
-ûö9¦­©*b׈£3ÛZ™nÆw¼INÃô‰š&›…ç˜Ø$ê©æz݆SY‹Ö¹S¢C(¤¯]²Í®¸ˆH™^¢yáò‚ð´|c0:âê#Æàq$}ðËcÌ™¦-²Ÿ.~öŠ«ÐÜ?ôEon6<„ý¡ TZÉÁPÿ}Dð›i#ÓAó}l‘J’+.0²DÍgãe¤a2M[_+èÍú4lQPvŸ ² _Ùš+jaZ·¨lÅÜ,¦v^¢
-‰#™ Ñ•Ý)CãsRC<$²Ðu1Wì†(ù»>xq½NoŒ‰4dƒÂçmžÐQá¸#sƒgùˆ0£ç(8ÍJI‰ÖU7n‘Èœ“AîTÆ==Tyðª>Ód,rª& sÀ,¢E–سm å;4X¨›HΧà—Á$ã,û~Ž&,K«µk6Ö.J HÔ ”•:ƒ«0ÉÝ
-×ê
-…o–ˆsM EÇZ=NßOÎÕÕ!ã¶4OG- ARQÆ3µQæ`Ø0d)šB5“j•É•jºHt³2ô™kVÜ8Í2åp“cȹ¦\ ÉüçJ"¶šúc¯1熢;ç¢;çêÊœÛr—©×ˆsõòÆjH}ãQ+æ\E.Ñ
-#QÙåŒÇH¤µ”VƒPª®„¤^æå–PÞ1Nä¶%‰Lp@?„Py8Ôèûa'çH˜-µyv?Dpñhz×.¯ôbØ2~èÑyvÙ
-¢b<­‹%b'Â_r ѧҋU&¡¸ª¼9Ä:Å“ê›ÛÐï´¹Îg© ^• ÅOñ½Æ \dz4‘,Œp$ù”)ÿÔCTLXÙ¹âú_FK ˜;¯eڻ؞tmÿÒ38¢n@a?Ÿz†8iÛXC9ÌoRõIr>õLù휨pn·y–ßãMQçBk’%õGÜ
-Ü‹£WëɧDý¼:'gv<3€áß'8Û^”Ëb~Š0|- ê¯n´#aj<£u ®á¡fç$¶X:)ÑÅÑóNˆðdUþ?D]®"S¤dÎE÷Ï}K49L—Zª Ü7¢ÎfQ¦¸Ó–àØxhÖ~àμ­ÌöEKl‰ÑRÌÅ5¬^O 
-:n 0g¯Ò
-çÃ6iÙ,²:HjFÍ6é®ØaŒ¶çï5ïS=é
-Û= í S~C“:”
-öë2ÛG¸1¶˜ë{ÉÉy¼IíS4T¯Ô iǺã¼»kñÌ5}ìØLùÏo)ºPõ ¨;ìÓTGÑnIÕr9ú¹á̪%ƒQÌkwxÅVÀ&a>¿)+ÖH
-Ú Ñ W!òŽ³‰§óTv1I(ÉüA›c¾ù§ž"vDÂÕâ.û%T³–ª°hõ@"rG²ö%ÏçâÙ *®ùzI
- Á¤¢¹mkǤݹV2ÝkŠ¶NI
-B\L2F~K—ukFÑH]~~Ö¦þj¤3!Œ «s½ê謔èóMD°çL"“ü3f:ÉÉÂÀðIæàÌoÎ!«IÃN%é·É{Úà²%Ç¥Á˜Pp—ylØ4ç(¬iW¿ ÇSfà¨KÕUw9.ˆËË…Á0;ŠªHÙŒèüFÒ0¼…+V­óºk‡ñ:AЈ>ÞˆÔ•”(Qß–K¥“sP‰ýh^ÏÒïëåÛ§ÔõT饼rzŠ”«ðÙ®<U”Ð*´ÏÃoù”‰jìH(~b‘ƒv¬dH• Âõ#!xb5fÂ5h¸…âk–åÌhtkê¬3;G²_N/¿v"Ü'>VëV«<+
-7Y­ à
-¬ŠÕÏd$ï+¸\Ì0£TcWTå\À×›©àñƒ‰ºÚî]‡@E69Œ±–Â+‚óz©< =]
-£ :Ä:÷ÉQk ‚’%¥D'‚"Àœöð<îøA™¶ì¸x¸µ K›êC\É{¡ˆê9(µx(~ð).íÅÚ=KšKC§bá|óë¸o·¹ÃÆyÕ~·îÜA|ë±· §Yý|²1Z®°–+?r#ÓÁÏxæê|ïŸ[Ô5 ä‡u$]=?VmV´Á²Ëh8»³m ®·¯ý–¬ 'ÙÕ[(°>ÚÔØ­ŒÒsûhat6—|È剢¼É_‰ŒñÉøI©Éû
-hfé9’Í㸠 +¬uY%sö<=ºk\H׺:Ålº D?fÁ³ŽÌ˜ iÚ@’kúNƒAI¦à¯bBÚ$ˆä$‘•d„ƒnCÇœŠH¸ÎR]‹ìæþt‹ÐßLu >¯Ãø7ô'±% "üRi0WI hÁoùPÈ DSÓµ#LðkÔ×]$ЧþôÝÀÕ¨R¤I»½¤.¦gŒ|%ÊK‰12–>ck{|óÌKihM0âá2})8™mãs 1MËö(¼#fß5ƒÎÅ<P(2lÄ åêXîŹlKÏ*)
-i~öÄ”þY;È$‹§Û*t¥VŒNÉ>
-Ùè ¸qõß÷í6wØ8¯ºÃïÚÄ×»Ëp•öß7æ%íüÃÛâ¦17Å—v§è*íÚ6hZH²/ž´‹áĽäúJ'Wi_
-ú7%§7/ç¢Ð8p(݃ƶS b/—'JÄÄ9 ;à¶M A&Ì»É=¨ƒÌoºÔ™¦ƒu1U«µëÊþÊTv‘›à°x§mÝf080ÈŒ;=h ¤@'`ƒzÔ`- [ë Â’°Váßn-æ×0C·È¸<t‰HwùÙ :!V·V‘]`[hÿþãøíéÖ¶gˆ1}yWü’&e4pé>®cƹ-ÿÅn=¾vö‡æ#ô=´/g Wºó®CJQS&†ÞGx!f­Ëã[ã"4E>«À2Ÿ
->²‚âŸý @Óma?ŒNé)`BÕ&n.cø³6ó¶,mßþAí7o]wŽ³1t\0©ä÷o{/EÏ]#©VC L"Bc¿[`^ûÒƒç©<FÒ¬“¼óåÕà*4@8ÕŒ &vM:\êúNLìãá.&ÐåÍLÖÕÁÆ7“U‰£çE0Ù®ŒWï³b×£ªlSBmàˆÐ#t±ÂŽ$>
-}í0[Ø`Œ=¸Ë ¿€ÿ“í.X6}xDrkè.ItµtfPʦW$cÎßÀëót‹Ù¥.³ä¸N9íÃ=äd4ËE¢C]4ÁÑ㌯N)¶Ãt°çÀ­HŽ÷Ë%èj‰åÈDˆ~À_€ûÎu
-W±ûM2¿_Ñ3 U‘;ÈWÄáLôß*b#²4m´-÷·±‡.ˆOc= wù²¨WKãX-½¯Œí­kð·ÄDÂHÐ
-ìÁó?š
-[ÀB«$.'‡|sשrnaRþk
-h&™p¨«ÖúCƒl‚«úkf€g*½¬)ÛõWXs•TrRS^J‡¢ãâY7¥¼8 
-Š0/öfz¼2ñæ?JbU.Ë“é5ª§e­¹%˜SÜ!¯Ä*¯ýð‹pùD4Ö·÷Å N‘F2"s•Ñ=xêœûjWA¾ù•ÑýÜè€ú–D{¦-w´ÖýU°¿ÏuøL©ÞW"+‰4s4„dÆ
-Ý ºéÇÒœõ"Í°/9ã#³£(û r'È úu#VÔ¾x‰ÇW@
-jPkÛ<˜•ƒ”«‰äè˜ b$‚o¨È£â8,Ùûðãe’YŽÑ«Ô Ò8ëÚê¹UÞ[ÏAPe²T÷¦;ú$‡~ÑÅùL´¦”¾ßÎÐ&î³eB
-;^½…UŽHœ2ïI/)€
-„ˆunÈîŸ/#×4A_GÝÊ.ßbCžäs¡ÊþÍWÇY©tãÃ×*²{V¡álñ]7”…Ñ)Þø ŽÊ›¡³kà'%ʶÏÈ8J)zÍ~¬ÔKíi%üh©e¿éRy†¦Ã½fLƒ¢`Þ@þC Õò(žE‡ ‚%“¬¦"*ÔÙ{VɶÁÀÈÌï½âY59Ht ßÓjTòÛH kÛÙ’Í=£‘ª’TÔêÿ»ûWK þ“Mj±àD’ÅLX¶&>‹‚þT Ámà[ èÇEoœüùâþ¸‰k*L¡|‘ÌÀdü ‹ Å ¦€Um@ÕñÉ4|Ìå8jž
-äˆ(£…ËœÍÀ%„÷ç%>çl$wÞM~d— (¢•³Š<…Œ4¶}ÓV•|—»:/‰M fgðL¸¾•œIBVÒ$çºÿ·ï<‡ý¸Í4Á«Ø{4ç àG‹£ExÕïŸlËÇͪÏM˜,yÔ–÷
-¾÷',BBP2¢Wçá\’Uù>Œˆ7ja`ÃtkñØë:§G^ãæÑd`üí I/yMã:taÉÒˆŒF4øw»‚ÓÅ€‰A9,´+€™ñ@ŸLl]¥ ­‰¸›•ˆuùè£_„‘ÕPg~[‡+
-T(“«¨W¡TÅTétÝyùÅsò‚AöÌ‚LZj¥Çq-,zûgX„ŸúªK²øvc¤Ÿ’:sþŠPD,½rày9“žÆ$.©6‰z£GÃ.G !°9½y ~òš´Û&5“}tµÜkž4ùVát¼à².wZ£"[>t _ÅOù^>o {‚9øÔ>O˜‹%)ÒdøJ¦ç·­øh¯ õxûf–˜D¹¶-¨ÉPÊžŠœóšjÚ?ñÒ YØ e<?è/‹iâ8Ð/Ј3…kšFªÁtÑõ½²íoTT¶Ш²C?Ȫ5öºzÆÔrvÅARI¦º&Eü%¯p"Ü&YC?2p–ø9—6×q£¢öL 1S¹ƒãrù&Á¬LW¶’.¼‘\‘æ÷‡nÀ¸z*×Û§¦k—û6$ð¬ðÊÌ 9Òø¬xò>‚Œýûª­M˜|‚Çóïµó'
-Hù˜rŠ °©W¯¯ë¢À {<fÙÙ¾#Áü@õgঊ³ª«i÷OIN¬!
-çønÈ(Â@BËI„;J0lñ¨™ýÂllg{O{ ÊÊ6KìîžMT
-rø¢Nj;(úø¦ö‡ˆçÜ)¢­¹ÈóLW4ˆ‹ŽÝK—®L¾á"Жv…œ–raþj%$߆»C5søÛæÀV/1âÊÛbò¬8ìP,4aؤæõͬþ2r¡#]t¬\k™/A½pØA
-›„<§‘ÁÔJxix "À [2º*+É›zFrÒ%ˆ±°#<âè ‹h7Ò°û
-A%Ø©¢„bl~ô†ÛM¸“1ÂÄouZ-ýÇ FE•]'Yà‚¤Ï°(€"ÜÑhLÉ__
-/‘]:Wnüb¿O“™‡R º‚‡?ýÒ]ù§Êcp)ßAí?äAž‘&ÿnéÁ˜àñBf-úJU#0HÐÌn(;ìÄíÁAªVÂr`Q¤AÅQ(äC4#]¯¿H'ýÜ7½8`•@ij…ôŠ£æ‰4°5«ØR+¸¯·›±n°X+Ý7ýQ3†Ö
-Ö/@ë#ìï‹X7,ö
-ì x/‚ö1N[+”ÆÁaŠF&LJ:ø ?Àýe à™ò¥YŠ;Z|äÎ>*sl[ \~bŽ°Jgí;ÓžeŠ¨è¡luH`‡æÔñ´ž¹®+(¨Y̬Sà±”ŠFqÜ佌 —àÿÐO—6Œ Ì<— o‘˜TwÁ{ß
-&øAûLãÀÍËng&,0ûÎËOzGíÍ[†ç:ªƒ‚‘@›Ia¥_Ï„¼ Åu;±K¨eÏôAç-ER˜²m%¯âoÕ°ß_IÔÔx$ìN_JÈ›JMàD¸¶ó“¬24*AÑGXÄc¹‡*Ã2†åçqoEŸ?¹ÓÇ5ƒÔ…zÉý‘6qñbM6±ë?‹S03³SÌ »B^*Û¬ƒ;
-… –÷¹"Å!Ðî­°¥^bãð®KlwÖ™¶"3›Ë9ˆmf9ëÚ¸¥ÀÏF“ë2v(?;„p=Œ9J‹1uúõ?.sÔe»!¥9”lv † åߣ#¹†ƒ·¬MhèÐâUGµ³mUEDÍàš]Ò}܆
-ÑÐÿ¶«@Ⱥ¤Œ¹ØŠ1Š„»y±Ù ¹rDV@äg0,zl‰£-q'í N Œ¶ÃNQá<ñº `SÜ®h˜IŒDŠŠU¾òÒN…7"d¹3ñ|LÇÒt×y•øã°þèß÷ëæŬäY“$(;™5•¹DÖ2›tâͬ }ýÊûPp2BÇL–fM«E(cç®×!ƒ#gfÕ‡ôuÔqk­£Ì<²æBx%LŽud)ÜÖüz¯þüÂ*-KlÇv¨l>í°Ä1`Ƨ‚׺ìÀO AΆvTøä ˆ\œy¶¿—Û¡Jøô|ñŠ—ý,…¼ª •o«ÎÂЀÑMqÚWJÝ’Vèò.¹Á„4‘ÔàŽÂÃñÇ‹™™•Ú2‹E•I£Œ»¸™XÕ€žÒ«ÉO8æ`„Ð’’ÊõB¬Ä…·ê(2”MÀÞy¬`.ùsg(xYvÄvÌa²íj «ã”ÛXªI·ï˜šðÙE#üíج>‹=ù
-§¿ïs,8#ØZðRÉ´Ð9¶cÍ
-+í<ÍìòôͺßIaÏ‹VìP9”Â!™½F
-,\ÊaÜ0çì9yà°|Âp­«²°“
-ébêˆJOüwÌ€9$ëtߪv*o`¹p)ä»>K¢D~ØõÃw0…Ódÿʹ BÏê›)4ˆÌ±œûr YQˊѮ稊ÝÃó÷~|+Ë©$‰2w°ïdéËF¼ÚU‘gãȇÏh–#
-p ôbHšòèy§sjðoÿùõ±EÜ»ÿ+áÉ TƒDPH}öÌ’þáo‹:”Å䲋t‚õbرÈ* R˜xô ‹=e@†É;èŠbVN]2?è¸WÐóÎÿýßo¿ýÿïÿ§Çð^m6Ñ¿Å(ñ¶B!•Ò!zL_tDRÅ:C”è‚&ƒ‹$Á}x ÃpOXm˜Y’Ϲ‡ ÃÈÉ»E…Û ÄÙ¶à7ÄÀÊûV€WÐóN•TÞb —`B´ƒ0…š %N’
-h$ü‚Gy‘™-l?Ø‹ %'oÖ"àTEÓåýÜ_› £>y¯¶óg„¯¦¾ÒúfjÁWä
-Ø ²ïhîªf¶ûQxx$u
-¿Ê‰ö¢±¡¤0OV+všáw”­ðÿXÅÒú‘Ž*³^dûçô åZè‹ÖÎQ>µ‚Οí+KaÚy¸vèÝOûÊöñªe™S–ôÁÜdß–¡Ð
-“¥sÝ9ü~C2MX›¾ ;“áÅ,Ú´É‚ÓUì-:Ša[µì
-,Qðü[ Ì$R>ÑŸã^[òzÞ雵·¢£P&ë
-rÏà}´·ƒ6¨#4˜¸ï Æ2iõæ6Ù­Bò
-#v(
-MAdþÔëŽ%ÇùÆË%¹¢Wñ TÃ/Èu²Ì-¼•ï¿Íkr*\öÆU² hô‡DeãÊ·"Ó([±œNá/¬áq¦Gidž‡<['JŠOGNid.M¯rr4-²ÒÒç´@¯,z¯ŸÓLQ¢!!Å+
-ÏÐê‰,N…¸fˆzñ§þ¦v3&jè"Ä'5Q¢„¹È‡ä
-‚‘Ó„‰AæJKƉ#{mVD¯K{‘É9JiIÑ=-š>ð!§1·Î3ñ ™íhÁ3m&M~¥_Š°\L˜«öqtdW øl°ã:-韘tbîv@ç›…ÐÞ”·ß”"Æ Vçîf±¬Ýø­kÍýH‹ çÆm@ttH~CƒeÃþ›°ÕH:k¢tÙž„ö‡`ý6(×Ñ+b‡Ë1­†Y(è"ØE9T4 ƒ÷ÊháI@"׃óV¡¢Þq°µIOJô"<1ÀØÖò«ç`© €åŸ¹1‰ p6°Âȃ·Ðå/FFŽ$¢×±ßÉ35VëÚáB·Õ1&€–ú©¢oÌ-˜Ô‘dáeS«{Y•hKJé¨d ÂTp©2õ» óIæ¦/2ÛØ„ù´Yê¿Cà;癨îèŒóò w±p³ÖôÞHüÐ4qÅÇÔ%íÃÚD NÁÜŽ·3üc“¨©µÑ0—f_öÕí k#Pð‚§¥;*`a£IqX %îJùjÊÖ;@%§(h…%—gØáJ€^dvE#h…~â2Qą?G/-Ê™{†+q')ª¿ì¬ËóFAŸÊ¢9ÚŒW}³›ZãË×,Œ7w¦VV2ø´ú#JÒ‘îáB%ì,A‡ß•=vX
-iì2%Øn¹2²â3Û²å3EöâèK´¯Ìyj@”ÁbHVÒ{ÝÄ¥˜KW2ùWéˆb—Š2§’>aå‚Úi–݇!F€:EAJæ$5Û
-v9Ü£:Xm¦=ÂWE~štš êW‡¨†ö²aüvT}5qB0Ø¥f‰k÷#(¼þa½[0!2dúk%(pfû±º)/?•äà1`XŽ ŽHž#p5yE¦y¼Šä…ص-j; …̘
-ÄâÕ­&ü`
-c¤¨wß"(
-råJZȤŸçñ28”®ÐmreÐrCu‹ ,)º{Ñ
-ÓE~¾;ª€¼ÿìâŸêëóžŠþ¤E/©
-Ä]ðí` Jž_k’<¤^á>qy8½Ç¦ýWt?Ó‡"eÖY£ç"•l$Œ!›î'´±ú ¶Ïþ
-0
-H‰l—M’$9
-…O0wðÍlÝ„„Z÷AzÑw˜óÏ÷GduDZY™E:!~ÙÚmm]‘÷œ¹.ßívÈXÖº#h÷üþ:ç=û×?ÿùïß_BowÚòkbÛ{ZƘiýêãÞ}æ5mÝö\{Æèû-µÙ1íFkΟScÜÞ<r¡Ò–]=ï†ûö±®1ïÖú1Â'ni¹F´Q²mYºË3,®î˜Í^‚à^ |Ísbz¼ÍåÜuÊöæ”ß{»Õ©ÝÖ’ ¥é»ü®ïü¨ï{JóåÛÄ]Ç7;®nO¸FÜÛxêr3Ëyáj Çšû½2ß—O½m®¾ÿTæWÊW³±Ö¼Ìî¿œÌ}
-ã¶Ñ6§âŽm¤Ãø×Çeûî9SÑñ“[Þ" ÒOÀäqk¼±{ïî%$ãuŠäu |Y búî;½¾§™¾s«½­ùî«„Êxow3ZÔ5œ–ÀÈÞ1=çv¬ī¦áƒRMid¯ìAi
-â}•Í#÷Üš :¡¾[ÄcóZû )6€&š’Ì<Єo¶–H˜¥d„MJ“ãeHkÒ
-b0‚Ò5ˆÛ.…ÝÚmý\„VBt¤B¼´F™«.÷âHÝc•ñ)“'N*Óä,­J+W€ii¤º³nš5¥gi™†&Z§d0¢¡_7í¦›‚q%ªb9)Ø•“kœ Eu”àþ$»HÒÙÆ
-hˆäÃU) WP¬¢\67ZcW±~j4†¢¢Ä
-8áÁð­!;ë0KZoˆÝ*Wpº
-.T½2jBt2º9ü“‚„x¡è¥Õ;†Vˆ“xÍåaÒ°XãhPÅÒ`˜yix%_øöÜԩвßßtx
-lB?UÕ´/á0DóɩT)k )MÀ£«HS³ƺ4_‚ƒÜæ}
-ü¡ÒÔmLÛˆq‘OÁɬ?™}5ë—–6Œ­Ç€Pòû¸[[
-
-¯:iƒ6£Ó¡Í
-¬/<î€üð_4–QžÈÜ ÍëM_Z¬ô*;(ARø9Ä4á³Fã²1
-*§†ÌøÒ@/Pþ%øç¡E=ä:KývšÒ]Z¶ªEeACT$f†ü¢!<8æ¿dÌø0+ WKÖ€ZB¦Ð`øÁwMÁŠh׉%Ä$„.¤Aƒú[ã
-ø€@SðPá‹Ëã<ä™:Ñ.¸™±…»¦V’4‡p×Ę`¼ƒq¦³,!CEºÊbZ²Óà¯ÂbxI_»F[‚˜bÍÏã©-@šeŸÎŽÚKŠƒsš
-Òr`‰ž¹zá³Ç4 õ¥ S5µ¾5©Á„ÁÎû®›>µ3…%¡k_
-¥Z¸ÏÕš§j©ù›†ö– ´ÃÌü+ßZC„ȼ¶¨º ŒEº%Žö°n1¢ê)^ëøÇÔ- {5<Â%ºµU2ûš– vV*´ŽŸj ù\Éže9¥‘àþÑ NJþT¹
-R°nÙÐ{ç/þüä¥yÇXÖ~Oõg_#•£±1×A²‘¨,ô3î7J‹‡ÞÅã
-8·¢~[ªÚ tˆÃ]Êñ¥»Ú¼‹¼V!•··¢ïcŠü@gžú눧¡Ê¬j¨„ã/ì³8ÉÜÐU{“ýBwzm(Þ_E|νG«~`A26ˆ¶Ž
-ÄÍF1neéìh)¤a[ƒô6ÅÔgæ›±ãõj†Ä£@¿W» ‡øƒ¼bˆunDÓ•^œ¦WÚ~»œW‹2?Ç ]öäy ÞkŽ¹ÏòÝ84Îà™UÞ;tÄÔAŸ¸ºÎd±z©b1nì]#Ømà@@sØøEÐ4_({.48st û_üþÃßù#]o~ôï¿Äßßòg¾Ò£\)~ýã·»/ N_Ê´voš»S ØìëÔ à7ýÖ"ˆ³³A¸¼C`ë1GP.Ø—°y=ƒ„4IF4$Ò‰H[jEž;æäaƒÐdeÆ” Û†$> ×ÃÝç:”ïzâõ¥D›g'Í-v£wYj¡#]GgFTX»$Ÿþ¬"
-Óê:‡O×ѧ AÄÞE‘B'K|·û,#"ô–ÏsªJˆ(ŒX?Qâ‡QÊN#ÐÇ݈jÇÄMp_.¨ãb!Ÿgðw/ˆîœ÷ö™p{v7È5 …ú
-×bRÜ´W8#lŸ¢$ƒ >yJd ˆã&Á¨_Ësî³R
-z„"µïòDa~™
-,,,ÇŒWY—­@¬{S©²m&“/⚯ºi ÐŒÃU‹Ü‚Áçnëÿ,eØ4
- wN¢»QT✄,*rNj` ÜAÄ
-p“¸±>)_º¾ñĸ,ÐÄZ­pµkü;>Bÿ,’/¬b  *&ÔÄ–cYH/Óï"€¨^ñ<ü÷èæŠcWmÇ‚}tš "q×®$¢ÂåŒ
-Ú¼ò €Bðƒ
-ùUÆnIlGc¢¥² ôøt¡Z³X``\ÐO@õˆ©{3Œâ¬J»©EqQnŠoV¨Ñ20q
-ü:Ïf«ÅÝ q·ù°8#J-É<ŽHl!2W‰ü(“Ú„«¹¯ÿÚ`ßÿ{5ˆ²`×­&3Î/ÝÓÿÑ!£
-Qt¢¬™QÖ‰ˆx€H;û ¢wˆí¦Æ€…]
- 6j[o£Ha5*6g˜&ö’,EZbù\eœ“ ¨@¶{Ðbó(YàTÍ°ªhVœ8í1àLgдKSÄ#–&© Y —ÆvÍž‘S»®
-8È)Ï-$UÝ¡W¢ ËHÞ#Qp=y„¤°môbñ! Y²/jqÄ1 v¼ÍªªV¬V)Ïz Ng0wQdsá9À¥Ê °Å>Œ#½Ø«™±¡d‡}€<
-
-xúÄ»0%vÙ÷‹ºç|çùHÆóR
-äKÁ统É®— tyi6œÞ¦ý Ëè™……èVÑݲv/FYiÈŸ®–L6|ñ¼~•¸2>+5®¡{ Š8 ²%m a7#øD@ëTÂÉ,³ÌÊü¾mÖ.àiÆ *©æOÓ2V¶$z³dšœBj
-Ï°òýu ï€ªW`Ò6'±ç¡,æ[lÄOŒ9Ä,i` È¡7ëí
-f³c§’§FI×Ê©ÎÈY„ï &¨¾j ž=<Dx'†õ‹u.pyÞÌ:õeõ·Ìz¿#`ý}±a)~)ñfÂÞ ”äßõg³¡u"éTuîãÞ·þ•Ù™/@/3ðf0‘‘Ñ+’±ÎÊÎÊ#Žý£P‡’PºÛÈ0fäbæÿX²ý4,}UöŽ Ž¾Ì€Ï{d uó°„K3fE2/±Q…=õ:ëªW:Ò0´°½RJ_C«
-fóãCxíÈÚ(/³±N¯ º•×2Îßéf¡MV_`ïßecU‚\.b·)Ñ·5·ÞïaFüý®ôAçx‡Åe3£(“éÁŒÐz„Ž9ZC
-u"Ý”TMélê¨kNè:ê,aƒ>WÎ)6×Rðky:îÖ³0ÀœwF ‹| ÉŠ­X‡Á„ó̺Þ
-j¢CÉéÕ…ì±½Óœ™TõÄ¢ ÄT+Q/ ­tÂ(.þ¿×Sfj» Éûu24½f\‘„Œ„ãB‘
-ÂfÄÏ2¢?SºüuØ 6ru8@¤µ5Lõ€ÎÐm܃j#TpD´`¢Œ\yÁK‘·zX2š%Ü%𦒼÷¨bB;AÁ]hÖ‰ÛVUž†ø7ÍP‘°›Á
-ŒIm@“J©©Ž„’†ðŽ Æy¥‘fgÍ¡ÏAj‘”&—•@Zt—ëz*ËÓ9î4Xw⸈/ÕeqsSÝšQÁ§â 7¥ºóݨlð4”€&©ßÝé6Ça
-ȵŽ­ Í§teÕK*_vŽzÁ,m'Oª‚¦‘|¶Ò¢éýã:hÖ¡€Ø`§–•G £Ë}þ2A´Ul `<*æa‡»ŒŒM {·ý_ÖåÊÊ$jyÇïÁ$d1Î5²¸Ö4k0ֱΤ!Ìà1Nf¤ÜbXlì­<ýÉ8õíÄ-Ö eßNÌ/N%Pae‡Ú¬0²­é…ÆJÈ"h4¥RŠÎã)“Nâ,GÕþ ­nmmAŒ”ŸW‘ ¡AôÍRÐæ¼vU§#²2e옌€ô•«,hj…Aé´ƒ„£þd :Èc…dIšêHnnÒf’~Óå‰%ü¿ék\•â…°b$<ŧà(í~‘{ßûû/ûÅ !²dj@k*l ÚUù¼*¹'pþÖËdW¯ê£¯r†€’Ëîf”(R2DVY Y&oŸµjŸÿ·“«4Œm|OÕF…¹¢BZ×R3ÛC$ujE‘TìÍ©u ?¹ÂAÐç‘-0G4í°oCŠÍó##³Ý*{¿dÞàZš aé r¥Y…v“AYó±Ÿh`Y#|œ—! ‘Ûbž‚–3ƒ<Q‰ê“•sdTÙªöOdôcsjžÏ…ÚŽ…xgKÀ$5ˆrB7iâ<2²'‹Œ\büA?g³¼gÏ‘Ò€Œ™o0c0TŠÂ¤*
-¦Y³M]iiŠÉmJê\ ÷Yê8}9Õñô%5ÕÏ >PƒW‚oN5ŽäÙ©“$ñî€Ñº•M)=bž”ÀÃ6Ÿ}ÇÞ¸/™f0Y¸=®Šßº´äÜmvÄÝŠBIÖX£i§í®jÇѱÕÂõæÈ
-à=ævÀu“(i-µ5â©*Qì$œh·“¼ÓsÌÁ! ôÚ!öƒ:ÍVK«HIqÎCÿ´øå !’­Ï»¡ö:‚vØÖà÷îR ªMw/À£5 o–$N"âù4HêžcÆÇök€¦…£!ã[
-u·óƒ_L&vwáõ®I?ØFðÃm*Së[ä?äPhÇ*®üRRU7 !eB‹³9Î_/•%:ÍD5e&РVßôE/vˆ¾c9Ì4ÊÒ¥< ¥Ë¸”"ò‡@Ja‡@½PTżþ|»?Ž!Ç¢†•C/2 +€PKÍ)©c…BÍüèXò¹Ïr'»á¨y«!n FX’ب£ÃÐ+ À
-V"–:
-ËA'ƳklìÎ4Šzˆ
-}S”¨·ýÙb
-¥v‡c"8Âo˜”©&¢_ºú:ði!¼
-BÖèOÞh
-M@þ“QJèêò }*ÚiB]—,‡$-r!×—WQoÁU€à­À“L³"k¯Ãhká2ÈJ°aÌS¨-3Ú؇ SÁ–qÇÿ“uÿ«È@˜ €öÿ« rˆ
-.Ù§º ŽL\ß`F1HöEY”l¯xµÓ)ŸƒˆzLg#<§£’A„C `(â%îøž‘ÈÖë »)xÙ K‚UòH¥ïŠôµ‹ÿðÎd«ªk9‘NE²]c7+³Ü2[ô$
-7+a7B~ŠE8³ê&vÊNǦ°¦­Æ*À…áà”ú}u5 Kóeõ£Q’¸h l×V=E
-á'cI&€]³tòŸ*ëÛ_±ˆ`Æqü]Æ™æ¯ìdwìàvêÜÚ²xûYÍÖ#«)9OT àBd €°§ø‡­6!#kAÈèŠÁÈ ͘«È‹,d YUü4‹#‹ÊÍ1O­ÜÈbù]ÚÑsd Y‰ŒP–dLZéd¤‘b%àå6Q˜‚îBm^YÕ:·TfaÔaMSÇñ襶atvÕ&Þ4Ó*mB÷«Œ#Lq~(9›Ÿ8_g)=©ê¥ô´®Ùï’òצÇ#b+ª ¯lÛ2‡¥';OBÁ½’Y[°ñþÆŒ,¦if†`7#z”Œ¡$6ƒæ«f,‘A/*Ô&³´“¡m$ƒ´ü\©‡q©ì!é *›…ºŽyB
-¾©S›l`Ã[G`y€¢:
-wD£¶g{4û¸x§@Ø!¶Öù³¡#„£­ò¤â·ÔãþÈ™Î9àïOD¼û„\oV<Ø”ýU'þæiQ§ qÞÁ¹Ÿó¾?Ný
-1o¡Æ)¿–‘ùµŒŽYÅ£3ªÐ)i»† \¼9Ã@+ƒè)ôÉÚï @u¼ªy[¢h‚&ÊÆËuŒ;"$r 7ª%ÅxJÇrr
-ïÊŠð‡áxãˆV…uXºÊ’ã%§ŽßT£ÁIŒÝòLöŠW¢s¹
-uÚOíù¿Ý’ðbtA×›[³`ÉýÆÆt8ýdeá©èIxý~Y¦hHx¾]á*Ás¥ûå†lñú&«™*ø‰Ò„´åÛrsæŽ4‹3ÂÉÜœ7Z›Ú—]{'Þ]ÉÆÈÈe ÎÏ…~Uø³¦Bºåiî„yöuÖóü0;rbx@Ú•FïߤPæ­j·ÖÅG|?VåRÙÝâqy£é…Kd»ƒ¤ ø›ÁköøùRcø¹¦ÇC"VbQ1%q„™ÂÊ
-X‰gP2rY s0Í–‚šfXd
-½W"¦”
-Q§†M=áEŒ^u¢—ˆ©Æäeæ7Ï¢ÙფÌ7\yZÏ# ) ¹(Jà0íðĬRQ‡ÄÏe‘#8ÿyýoôÿŒ(3,J³¸çJn˜/J„2*·TøߢåqÅjlUdpnQ){˜Ÿc™‚<õ9t‡EÞhÙnŠ„+ T¼¢ÛÔ ÊlQ¬¨bb”²'ŠþˆuhÉš6üæFIlD €á#
-•‰¹ë)ºà3‚ª&¸šÅWÄ*Î ßámÛ ¡< ’´ûHD70Úíå‘ç@]ÞH´(†IYÉãÂwRít—ê?Ý™¡cãˆAÜ
- f@² ›y䯯S?|³ô”°QÁˆÍ@M¢Ž>²O`õxÅpÇÏ™@)¢Ôõ¸@íÝñúk$¢–Ø
-D„0y
-P\EáÅ…‰uXĸz‹mX²ðX|nœˆÛK °Õ k¶ˆíˆ¼wâ]N ¦n ”êlã”|›ö¶ºÍ³THLÞ®>c5Ôö–w¢J  ç§fðQ„"ƒ]€íŽ. Ç81‰æ„cÚ)v:¤f•up·CèìQŽIûcÃs§&fŸ,rÎ
-‰/ÓB<*f5p( aYG£ÁØôOÄog·¥Á¤ê<o¢fP„È~Ì&pÖhlj éÅÓîèKѲ»wîD]N¼
-Ñ+~´kT–±’|˜×ø¹àœã²®Å¿·i…)Ÿr5œ•éåô–1¨ª¼'ÇZ/Z3--ÿ°{˜%œJcÃ@A/F‘à„ .5Q ×ÐáK °¬iß‹"Qä£(ÊRD‘·N¬ã;‚€ç|Ö¹GM²¤b©"Hc¿ÈØ~Ëâñ‘ˆcà êë+¢GÚNãÈ ¼…h–
-Ó9yMV±œ¯uiy©¶(Gës|A ·å£›Ì–¨(ØíÅwø0úF ´oH‚í…|qœ'læ•°EõçËI7pf÷5môkcOsiØøh8|
-ÍÆ›UNˆ Nà—¿oßÍG,\ó#ìÆGboüŠ&-$V÷Cu´ÿËz¹õØuQø¯ìG'‚q_vwï†'›  Jaž,+qñDf‚äÏ÷UïsÆÌ1o(±=³«úV—µVíŠGÎÕqOåÜÊ •q.Œ-uᜦTd¹†ð×€Ë2DhÕ1ÝSLón`¯ønF¶3”É.‘×ÑI2_ãäq
-NIÖ#*Ê·µFJ i„Ç2¶µjOv¹ „’À F C=¼
- )ž‰ 5úן+ÓÒ¢6&¥ð¥Äã<‹-~/Å‹(˜ª†j§]n
-è<sGÛo=VŸÊâf¹ÅYd!A0êÑIDeD¶w‹é©Gäãºï#óM¶×µöóZ@-¥ƒ‚& I~Ž_ ŒìÀ'*ïD`ó«arÇ»A\€L¢ fÌméA
-RLñ,8=Ë
-%`ßJQhQ.7x…ö>·{jd{M\#%\àˆfºCQx»v10ßÌv5¬íÊbð¬*W!Yd½Þ`P¹ž2`1ä5fí NÞAŽ"ÓHO„±2±hDÔm<Ï‚ö¸{ 
-£¤ÀÅôñãï…0÷ú8nò lÒHd È4škC0¡¶XmþÅêÉÝ·t•vt"œ.µw®CçgE˜ð†yR¾Bo¬j¤ëš BzÂÍZv&a;©ÐØ¢âí~Û~·ýC  eJ¢É:
-ÔÝ2õ2;œM=Mº~ƒ˜©‘`W”N¦sˆ@G—ðT:ØP1¦ÜÑÅcªz]”1ò¢Ã‰ôÂ@<­Ú†r„RæºRE¥áRÆ$<H1•Sí.î·:þGþ<ñáá«wß?¼»ÿæÃÇí7|zökÀžÏòÅöüÛ‡ïÞÿ}{öòå‹ï¿ÿå§oîÞèûÅö+<Ëþÿò;þúîÿ´Y¢AˆjŠÿ^}\_¶W?ðCßž}±½úëÿ>,oÏ_Þßÿs{öâ뿼yxxûáýë¯ÿõúOoÞ½ý»ûŸ?¾¾ÿñõïx÷ð‡÷¿ü¼ýüŠoÞþüöÍÃÛ^sÄ]n^o¶oùç—Ç¿\?ÿÙ¿);Óùs¬Gý#lùÓÇx¢ ’f²ëÛdN`ÎO§Q
-¶ðàz $JxdÔ”ˆâ}yðSì±¾z”yîÏ-ÐkÚzŒsØè„Âj´ý£‡L§ß\»xÔT—Ç@;áAoÓ &¨uhçL5k¢
-b¢ÂYÙbHª 埭Ží%$ ƒ
-ÞØ:lüc%Ž~ùq5#ס óu ðÏ Hˆê¤Ä÷
-^Ò¯Ç(ë4Qµ '•cP‘¹¸:Þä%‘bû DaÓ#)AÂã rð
-
-˜š$¡Rz(ð
-Ød“AcŸ"^€m×k]D|ôÚëî€ã&N¡ñwÊXÇÛ‡ý"¾ÂÉü┓ˆš8¼Ä÷Ø<ÐÐ1úzP†z8Zè@¥'ÄéuÃglAÆ΃:=Æ´Íå
-+*SqÌÌò¢]5[P!¤ÎÝ%ã^šF!Ï>1xfâSÖ`~ny!Kè1áh®+%äJZr…ö®K­¤“zµÁTa(Bã8YiÈ°­ñ(TÛþCx™$9’ä@ð+|AŠïîqž?ÍûGˆ «™Õ2u©d˜ï
-ò`É#j¬ãô¨6¥\ m¡™ô |žŽ xËá( ÛO6…„Ì!ΰAf}Is<3V½ºtzPžðXÕÃ~»±ÑhDˆL×F"‘*yp¿)«¤Ì
-} ˵+
-Ûò|O'Pá0XŽðRí3I¶›Ô>¹s¥bÅÉÀß$•†Då!AØŸz} Z@äî´
-±³i{ün]Qó5ˆÁ%Uöòs]œ`¨
-´gÉ7F9),â}Lwßg¡d)Ð`ôàF
-˜)üžÐ¯pyaûg͆S³OE§&“_C¹Š…[v%Ò»q×I}Ì'SÅ,Óê[й‡[`±8‰ZÀ™Œ
-ªVÚÔWp‹N —Ü'¤ƒn®Æá¢cæjdc3¥È:MÔ^…iéä¼ñ®zðÔt’àĨ‹™u1p/§Žk<§·Å}fÙ„!±j‘öPCƒËþ ½ Œîå¾Aøx.Þ{È3KzÉ®e6 ”!]y‘—o ï8õ,€4¨ûY¨0H"ài|ÊNiê#¾$ Dó<Ù¸mR¶s›+ŒÃgŠœ»íÇ¿ ÐâH>ßÀ“»¦Ò{pãÈ47EÕbùùû«jI•K|ƒC%`"±vF—þ“® m0­EzÕeÁPrØä9ŠÕTtBíúÌZúÝ!³  úÊ®«Ø-¤4R ”§ÿ4ú
-¡/¤Êˆ×I!€—Ÿpè‡|>€ý
-Å¢ZÁY¢ äo£Óÿà×op©ž³PÆSãe£E¿ŽÖÆhT\q£Ë‘*¨+´Ãì·›âö?Ukà 'ˆ´î^º4o…gÁà’
-›'«iaT°8à ‚A†ß¾aÄËo-Ø6±è%ªÛ¦c`w מïÿ wØ“u Ç(o¬-ÚÚ梔×QC–P‹zPb}ž|E È+ç6®-ÙSŒÂIlÕœŽV€äZ7%0Ð/À1žå”“‚”4M…ÇïD"
-ÕÊykR9×R˜£d%JåØs.»3]2¥Cß<1 p‘Ä˺u õ»ÙU‹®
-‚[îDpÇ,`÷\‘¶K;
-5€§j[/õ,Vtíî•@I€;  ÎX<‹
-3â0iP”¼"?çÛaÏHerý@Æ nÒ-ĺh)4¼³ÓÐþà®e4ãPß š‹iè/îSíÆ/ˆØçƒà4ô!mCƒ']v %ACÃq¥¥~+ûN”¥AprØ©bWcƒµQÆ®O%“Ý ì¶Xô?a?$1ÏÀ+§vvà‰ÁÐÆE?GäE„lb¥ƒÐ<ËA“é±L*ä—öË“h1‚<1BÖv‘k” y͈…}ï4 ¿£ ÿ±]æ:ŽW}Æ
-µ/¡‡N ȱag
-mÀoïsn9IHõtÝ¿–»|˾×Éñ¹â0#þUh›Xhyhjˆ³YÒr·C4Ñ/D9Ûí(ìØm¡òý1KúA-&)¤a:¸E
-7½ÏÞj Ðly^‹
-®p·#•É~Ý ‡„¢ÇF›nË3QXüÞ~ Q¨ýsAnåf¼½Œþr˜QäTñ"rÉÖ£f‰³Ñl[ îG‹£X^YJ¥ÕÔI  t
-ÚI«ÝŒ‚ÉN”þƒ¨¼T1D
-¨™^¾Ep뛪5Ì„¯r—<ˆ¶lÊ.š>‰Bx‘Ю€·l7«.ÀΑß#^ÀKÚaÍèÛÏ}xàu®‡4¦‚k“KQ]@-¢ó#Ëídä¿‚
-A[‹oåÍè…wÈH¥—p©}@XÌ;쟋4‹E9R¢|ÁiºØÐÝÚ×ߟÍæÑv G)ûÛÇ oëqƒ¤e¤qʺ£¾ç‘Y¼ó–.¼Ì™¢xR5
-?W>£þvo&1±ŒØ:ܱÛQ×jøìµ8¨%Gv(Ò»ü3…oy/–NæçœÏ( S½O¢@lŠŽ¿Ið.jK›`¯ãƒ8ýËV*´Ïõ§‘ÊØ?Ô¿ôU5>f¦ %«´^H0óÞIÂ@t}¼3nœóNÁ,¶@¶Žêk!îr=$øu —tŽóAÁŒ+ïùe‰ùÇ’"~ŽF?z4*Ò´¶
-L1Õ¾Dî8¬%ÚܾOî¿léTž‰#—Ü­uN2*,J̇0EÔZ± ‡O×ÚòxÊ*ô“ôYJDµ +h˜}]'8k„žòyNU
-)t2CŠ€øéÿ`õ¡K XH´¼‹ÞØüKò14äPCC Æ9%\|À
-&¾ÍÅ:Q´Û<û Ï] æºRf“•\§
-2Héb,Ú£­ÎÐ9³à[-qÇ`c«ìƒ†á%ȸòG··°9ŒÂ6D$@È!CÑm×Èò š#½3† „ç„Í©äº`Í
-«T‡€>’àäá2»r9éw—ó…EÑhmàOþû òksÙ‹I0ŠþÊF5Ò¨Ì
-5ÌÊÿY/“\Kn#Šn%‡`%›$™öHÍ
-ì504ÊïÞç\æ{å‰í‰€„ÿ"’M0â6Wßpo2ŽK$ úìö=irn±«AÖ–‹\¯ÃÀ‚fìeF÷ÒHž¥G-âÕï´Õ6ƒÔdÀÉÀ•yÞ£=³0ôº˜˜³íAé _ëpQÖñsÑIBƒ’tyïõË)ø3›\/ãÏd:köÚƒn׹ȽÛY¡Ì€)ܽ ªxèìÉ"Íàlð—윯k‹œncføPýÐ%ë-ïÔK¼ ÁòŸ°c¤Ñµ¿žL€V·{ø_
-ì¥è¾ûþó—Ÿ~ùôå—ßûùó¿Ž¿ðÓ7fÚÀýZ¿=¾ûû—Ï¿üöã›~øþÓ§þú·ß¿ülî·ÇŸÈü+ÿEþýôh’0RA¬Ü¼[è-õ`û9¯Â‰zï‡Ö,ÍÍa:|††8†nÀëÍîƒÉÚM:9lßñÔ„(“7¼ãï|„úY¹&¢'"œhwËbà|Í~‚ µËô=Éÿ!ô™¿iæîv€ZOÀÚ †™²D9ÄëÖÌ r†ÎŒ²;™èãZ¢r‹+ÂWZ¥N3/Ï¢_{ÜPSLDÐ ÔBž½=ú´«÷ 8šØ}@ѵ8/ÕVY¸F
-ÚÞŒŒ
-¦Ü®’œãÙ‰7}Ò_U[
-({£ªrd W½ÚÇÈÈímÐaŒŠºi
-õ±žVO™Sïþ˜tÞª3˜Ýë½oš…¦Û6˜§SlY…Að$Xµo¤ÐÍþŽ´û}QÞÇ‹^å‘–¥ÈèÁ.lhŽ¦Ó ¶û€¶ TCž AM¯JE>êå±xT-®~Zés´×Ùq 032h.5~¡u ‹<< c’€48: dˆ)ža:cç<ß°¹™ÆÿX·pGŽøA+?Õò»eÛØ2lµ¢ž;?Tˆ7ãµ( M­½Í.43\èNF;ÏóUGMñNEv)U—Y8/ >ã)ü6-‚ˆ†ØTUþ©ê¸´œ’’©S9N]ànªw;¡Ü±åTÊѢøºÏwníß”uŸEšsòú‡g 7‰¦Ï] Ö;Fp=;)œš÷E9
-­‚hat
-dz¨åÙ‰
- 4•¦¨aBti3ÀQÜNW2‚ʧÅÈó¯¾î„³‚–¹8oF©å(„çA„4üö`´!ÀE[Ì°°™¸ŠèÈ!;=NÓî])¾óz¿ é›t$Iתûc'•ßÁð–@·ÉøZXJoßÍp¦“ÑÞ“Üž–ñ-ê^Wç¶{
-ƒÝ-FSMD™¶|u9pW÷Ñ•«'€W3@SÑÞÄR´³5Á.é|"’—
-”eÊŽNW} Mĸ—·|^ƒ¿
-E#ðzïÀò5 Ü5–À_WA»)j¹ÌÜÁ«•|…&=  Yîì}¯}($JIàÙâ|§‰—‰¬R“bgb_«ÅÓiwG¥7Àà[J¼*ÆTk^ÿT¥¶^ßÜ}2oPÑ4Tl,áÞ>¢|i††õYþ¶
-
-+ÕÄGÉó#û÷j÷ÜðÉ\bEûqi_ðüB½C8¿9õ‹œž»®ÎÐYÞÅáy±¡ÀxœŸ4LõZ¯Å»zÆ›’r~oŠËƒYG>®Ík(6y ÅKåX ”yèË
-fàãÀX)˜Þ4.-ÈÐ)µ1¤ÏL¿„´ŠÉ6¨9šz`·2ræŽã8 àµ”Í+C >£ý’Ôƒ}ˆá
-7X•ìrÎÃj ¥\hv)¡žGFñRœÂ@á$÷{µÍ
-ƒ©â[Î"Q«p@£ÐVÓ(¦ø‰udr# ¶[kñèC·Ê¼6uj¼Xë}Ýм,­åWOc
-![±ËÌŽiŒ(*‡áj _ Çêî^8“þ ;< /
-|™Þ˜Ž#àHwIÊÀç=Ü´Ó°0í…®FBLŽsÉÔñ‡Ô0œàÁ£ «S $‚Eñ»t©x'€ Šƒ ÃVB"ìÔ¦àÎNˆž
-
-w‰W,§xƒëÐ:M [âÉ5—¯`Î(™èDÒîhµêÑFm.h]‡%‡Ë”‘ˆŒ˜ÒOÆNhÔ؉ÁìN#¨P;;1”Àå£ôå*ES6ˆp)DÌ.foøËÇLëÌÇx?vG.Oã¡M²íú$¤2RÕ‹0eHÞŽ)|æ4©ô¹mø˜‚oõ´DLsHÊfsè‰ç½”]V
-£ðrݨuÇu«:O{J8!Ä5HÝŒUŸÜmFDçŤj¾(Gªø²´Ü`¨¾D¬lž¦áÏaöØyJCAÔ€Š€yÖïg¨{·ÓO© ÈMôà¸ú]¸E¢ïú8ÔMLPò®‚†î9Š1&B·•Ë†NcOø:&=Ü!LÀ!À˜Õ¨Q(cÞÁip"`ÈT9ã
-JÁÑï pOñ˜¸~ÐÅã`‚«CΩýM¾æúàl˦ *ìíMŠŠI*·ƒ=VŒ
-7¡ð$õ®^—뼄/aÈØ` ¬eeEqK™ù⎆;ÛúËB
-%ùŒ÷õ“Fè¸*LKAK„ôXgÚsM뀆Žˆ\ÌŠm]È¢SåN<h±­}v¡·eƒXàðœïªpkš¡^Ž”ë®Ñv!¥h»{¤“< º}h«ìbº ¯¢ îLä:£É)6×£qÆÎÔÌ!b„“zç2(VøtÄ‚8K¬
-kXö’p—R®‹\85R\vss9lxÜÁó•Z&Ù 1sz£2DY#–iø"œÓŒˆV$¢›(#zÐ*BÐLÀë°Ä`݇‹) RLÔô“F ÎÐÂõŒ¨-–Á!̌ȳÊôy£D¬úB2Ô¾® Îðiu”ЉqU WU,«^ûI_Ú±ÑåÑM)¯}ü^,G©CK1H§°w¯ˆ""<Ǽo©Dg!:ë[fµˆ•)Âl2ž! ÏºÊH1hsŽ¤R¨U²w9 ·% íÁ²¢È.É„4ë
-[B‹3ÚM¶é&X05ðɱÓÃ*’pµ§Œd—Æ*¦ŸuÂØáaÃÖ’eÚ`CR <»Þ°x½3÷¤Ú@ ìUZMCJ è‡}H [6/†/Å/ô¸ÈÔc!Í“Å‘Eµàº¹<QK´¶×Vø]Ôžr˧3ÖÙJj²±¤¹Î#ŒùÝ>)ODp°š¨e"È9p¸«ƒQÀ_îÔº ÙM8d„ JDßÂ\ Ö×VîÄô´Ìˆ:±v9ϼ#Qº€
-<H|êÄÄö#þï™6”ŒÁd®¶@
-•ïÄ2ß!Y®?Æ»É=VÞ8{ìG”Q<÷ˆ7ãx€­<ã2 Ä2ò
-h¿%ÑAôὤÕ<?,sƒ3ŠÂI„›Ãº> †ø€’¼/žûÓ`mª»µ¤ X_°Oos9gðè š—úºe
-˜ªM¯ˆ×*8Š]s<Šæ
-£–®
-;.:Péá…ÀŽ‹cÐñ+Q@x“†Q…,. xKn=„TU\ƒ¥´ùˆëúë1~…2ðU½-(=¸CNâ¿°CÚ-d*•å=„_ÄòEOÕÊr/8Âh”¶ Po „HÓ7ïË)
-H‰Œ—AŽ\9DOà;ä惔(Š\»—¾E³*ß;Ò/c_F•m4º²"%‘ ƒÚõÕZ¿lÄh9Äeô׺äÕ†ûÔ–üõ׿?
-”Óc6™£‚¦…È&:ƒsìj}š› @T.³“Ÿ†‡!zu3u>RÑXW=AíâšY€H.¯×Ìà£lmön!—è"M=H»"†«¤kòÁ‚¤K÷Ðüêõs]5Ôà Ô{ŽÍk&¡sl7Nþõ(—b,L»,›N1žôÄ|€ÑKæÚ|ˆÅ:Ç®Š‘Í3ê²ÿþÐ×??[Ÿ“¿ãMo1==ûë7 ’@jHïìSúÄ¥\!©#<ufž@áûgŒÙv¾S©ê¼Ó6dxÚŒdelˆ» ¤i6«n€¦oç/‡oujËŸJ\!ÈQƘí¹’ÐZ)ô:Bôò>}¤õ4‰û¦'H}6H2,´½öcÄÈ6Y¶ÉX•”zÇ4 §U³±£A²4h?Ç}S#Û¨È{lPãŠ$ãܾƒzÏ°\*£ Ó¨ôkUÊa]vˆÔ|C$y‡™´­¸x¨ùèã;Ä(É_8DÄ„b´O$™ü}=¸]i¡¬>½WŸ "Q©L‹j#[mô¤ë;hÓÕsH—çȨé¸LDm*µm÷9¡t¨ !&¹ 9Ô4EÌ{ÛbEÓ÷j¶Aó¯ÒúeIIDĹaƒr„uop_QF jÀ½ÑxÓM"®1%~ñ3¾¶æ0¢ò:ï«ÞA(ZçĈÉ×á5ä«yëˆm¶è~ŠªRJôA:еuÙQ±ôÙ£[dz›Ôw8é±×!ÇïÄXµBHI»©ê‰;ÿ~‡`ôLª‡e -1hŸ¯
-7D_ê(.JG‡’µy
-‹ÜÚªä„--å|·UʈuÉA즾NÆ:FZðJ¹ (÷ Ÿ±ŸŸ¨U~JÍ‹8nbKÐÜnÂÙÑÌƾ+òZ|P¶ÒtCpÞ5¼ û½ÓG)„—5±d“…²VÆ»yÏi¥o~zm7•_ìùMáZF.Ö‡Ï×@F¼kÔúâŸíBØJ?°ÎÝW•ãc ê•kš?A›±XJ{©âî»ï`ÚZUI…ÕÛÖáÙäo o á5ªÃiÙ²P MÕÃÔgT')œ¤»ÚñäfB¯`(Ã1²²§š^(kùd„Ï¿€Í2ÞÔ‚õ“V<®ÌÓò.;ž¡•#.¥©!:ó :ôHäs¥ù:Û«&3ÊÑŒ´Lžœ!5™PÙQÞôè˜Ã»Ÿ—Þýå‹ö»íJLq ##;k=›™áÅ(1 _GÐ366.¿\Œü1~_cž—9¦„X»dþž}2ùþ)_dèsIb¬Öâˆ×Æ·v»e jöÚ2T³’éð²¦ËŠß ®ôàö9³VΨ ñ@JKtlC&ŒD‚sC°Æ´Ûü"¸õ¬u¬%°@“-ƒpËÞ«mÙùÙÐ8Ñu
-”eŽØBï¹·ÌT]Wž!ÿoNöEï¦0‚ºlË:¦„]&±G¢UúPÇÚ[¨¬?ux}|§XŸ+fÝIœ¥]Õ‘÷,ÆØ°q±Ae¬ÕèpÞè×ôh
-‰ŸÛýz*çM÷µ},Ó¶! žûrŒé¦$ukòÁSZÖ¥ü*:Ú˜Ú.}–ý( ÏGr¤ÿâ“ç9çüÖóÌg\ìò°Å­X½,Ðw~87¸îtWM3â×kžÌ”¹ê[{ñ ¦p+íÒGS 
-ýÝDͱcG¶ìãžgØè“u®ÌÝNÃ9÷±•sRÎÿc~Ä´1]Xso]ʇ!Kòà1Ÿ¹`¶¤«.m:Óîï2Í…;ï™fq3â¾ôd”cBø¥Cw°—‘OòÑ€+
-¾"\
-cånʼK V¥hH·,«í¡6jà1¼E kÉò1ǼŒ­t/% m?Br§ÈŠnY;½c¶ø„MóöPÍXƾ±º¬õ¹òC~Š-Ô½×¼T,~2hmËõk‰ž´{e•?Fýø~ý–ºœkl©;õ§±£k£–¦œV{Û3[n§Â(xyo
-õ;dnå,ÊÌDO­þº_#Mšùfïþ²ìyugíD—0 N»Ÿ  o|6Ü-ºs×=Ê»®î,}ö‹ìÔ8¬˜â\s@Z×#W²ŒsĸøÛ¾NŽšîƒ¬ŽÌç#Æs²¿=Ý÷c Ë]‹¯÷:°¬j5«Ä·BHõ椵íõM‰#§¥$D¤\¤L‚q 9b¾Ñ³É2iâßyX€8…åD—ä-†¤ÖUa‰£[ÏÜLŒÇu¶Zc¦GùÜFC:LŒb
-{(²~P$®ö„ˆ^<§á¬k£/˜œ_’S¿alµˆdë­<ÛñJ_±üf<!l@âkÝ’CqQ°:±rFo×ÚI©ZÍï' ˆVzOÈ<÷Y½k«g6[
-¼;P°ØX¢ð¼–ØE—Œ7AA³¹Pç—“”vpYôoølA¶ÔÃw5ïŒþÝ\(6ß5e.Óx¥»d¬ÉÑ:?8~?¸ez`ƒWÎÀ5ÓÎ’_ Ôå ™žÒWøwW
-R,ï%d«¢A
-Ù-¼Y‹‰áÇÉm¤UuÖ½ƒ£ñ³% ·ÀÊ>hâ\->†Ùáiˆ‘3å8œ|§Ø ºëSàä¿ç‹‹4ʸªEžþ”í‘»×*Ÿ꿃˜"—ˆ÷NÍqÕTŠ˜97oU{U^{‚¤¨ ÇÝL‹êWÏ@#¡<(i At«rùzEåXIñ¡É} B,æWšG$åF…Ûà>« ߘw^x® ŽŸ6ìÖÖalyÈNÌ8uˆ¬¸%†£ÄV‰:€š$kóˆaTr/¯þs}Ëi²A”¦È}适tþ#ƧyÒþg—¢A-e£['Â?ZºQn9]*Ê@vϲŸߊZKSTj<aà±U´ájÎNCé¶Jõ
-èÌë±
-¿.}^ðUpüeBÓk\ùþL=‰{ăü
-³\6q’û%öi,IÜ)¼UðŠm°
-íL½s{%âûGnæJ¦)fÚ_ B±
-®^ÆäÉâèMôbUæÆë¨õ§Âs2 ûPèŠ'ܺØ:%ÉOÓxIgô.; äGÞ*¤qX
-G§j J¡oUùƒŸ‘,Z(öÂP¢äê¶o ‡;…åÊAAˆœ”˜ª:’ï4-j,M÷HûË:ÈIgdLÏÌHÎT‘tÇ@šÒ¨¼/÷­¶Þ’2ÇwÐRÖ£³(Ódçj$I%.°é²–&¹«'fåôDCà›M?PN™¦½2öPó ÜuÔÇÖ!$BírŸØ3Ã9úmnpåB⭔˚
- œ­–â½Éëé oÕˆä¯ëBi¯‘G!–@˜ðúyK›¿ýr]Ò^ëQU¤”–ÿ º4¸+è­Á Á3éôÊÔn Î î*pÌ+ȳÁ dT–º—vkp‚4zË*_¯JÀ{ÃŒ’ï NsƒmË»ó¿·'@ßâNV^»58AðQ´•‚plï³ÁiÐQæ¶Ï“}ßœ ›hš¥|«gÑ“7õ”Vî úªL n{/åuŸÁz+ha<•>J‡È$QÜÀTFèí§(RY:Mpw­Q­˜OŽˆã–V¾@”®—ôb§ùÀ|òØæÉŸdÿó—üãw õ˜æ:½²'¿ÌåÓ4h¾¤¸¿ „!c‘IYjˆ.ÃèÈÓ6í¨³"¿ú
- |´zŠStɇ¬T‡pSUòÅfóÈö›& #ÓYú? b³,†0FÄElÓ$`­ºnRª€K–æå'rYÄxèG
-þã ÈJ+Qn´²#<A¸tã9jÿ Õ»Y™Tn5‚Ìg8›¦Â!X2z¬•#oC W"¸úQJµy~ƒÁ) ZÌäŠk×8il¥÷×è.ÿ@ù’¦U £ó¦†¼ýŠôÕ5r¾Ôƒð×µú}Úã"îby¼èð¯a¸‡ê#ÍïKX–1Í›»ÀÉC²H˜7#âÚÞª^”çK¯Þâ´lBly ö ûÜøf³•¿¬£g£wˆqíË×äI’“ØŸ…ë¡r)²ž³W9yde['ÍžKgÄ:›U+>!—3!.õ•Gj7¢†^uY>0ÙB !üAtÑóØ8Ä>é5ag´Ã‚û#'^ò?4D‘Š xèG­úÙ^ž¨>¢˜™Ot½ä€ÀØÑEËØJÞ©‘¡±U›N” ¯ú‡ò2É#¢è tÀàLÆZ[ßÂ@¯äûoû}2Xpe2nÀ2 Õ/Áˆ?À¡Èn®‡‰ù>é‡ÎƒÿÃÌšJ´è+Sç†î;!è*ÅØ/ð˜]OÚâÓs‘™SM°cx;HÆËiíDãÉ9ô‚èë:œ¢éÒ_"A×3Esåc4ƒLLòx'®Ð¥ÒAiØ·Eqý\§µ´có€}a ²É8šq hóâÞ²·º¶EÍ“ÕàÀ´©”=ØWÕ7¤ÒXY#d‹NàµQYILu€œíÐm† Qq^¼íʇXÍ.¾«1w’ËxÑ
-Rw,ª²’ØÌ·2…6Þ‘HÛß Y·$¿9סGaV}ÑöV˜ |bÀ¾éÍ;T*®ÃŠ4눶DUä-Ôö°´PÃ<eÞjάÕ546 Œ)£ÌáäG¿>Î HŠ¢³=5œ­Ã^¼ŠÉ´nc £7íƒz¯Ã(íhî KG°ïÏwlAè, FoïEæ´â# Ê}oø^¥Wö2P+ )YŒ«ÂCóÞ©½¢ƒ,ƒˆ³¯„M_„íøå+V³â_o©má.ºÇAÈYj¢[Éý§Útw³[ÿq%oØ&«PZ9@|n~ÉCMÁS\òÄ}äR”#•’Ö½ +qF¿ÖˆµÅ.Ö”iÇÃ*´Œô•1ªc†"d>YìGvM°·ÌÅ!S­¤ ’&tÇC…y|.ê2†$1f(Z·c`ª“ö¥ˆ1ìÁT4픽Ò)n™Ñªï1hã
-¥Ã&9f^ƒÅƒTq@P¡KŒ¶š$v†Gç"°!—¦Zal{üžQâ5¨lm»©7ÈÚ*c4¹BÓÃ::9Ám~õKEFW5ôîøvÞµ9"éy¢9¨Ât2ü¨â\Jfh¢.¿wTÅÉ/Íé0Y¢´ÍIÂ7ßà±€÷UÈžIv›d!É>gS¬)gL[ÆâÂ0ñSúŠCâ)ì…,<ÆÆ_›jAAzqó­¤û²!òw Ôªd÷‹}-Ãád‡ûõeº</Ê“N½&‰ãˆ_е‹~ÐÐ<£™i‰¹ÀïÌ[fº#h
-ì>Ì¡ÓpM'Ì»]BÏDªH‹õ‰ÄFÚ:Ò'¡m° ÅãÛ%|øN7Îã¿—Î
-9§ŠòkĪZd&¼×ic×Ö­èNÌ –þ9ùÅA=–‹¼C.éCC‘6 ™ž õ ïÌ_àõä›1x2÷Y
-ºX’cÛ¨Ú>"½1s6F‡XŸ¬¢¾à[5Çø¨o &H5Ù7*keÓm\FTÄÚȯ¥­Ø™2èyÛdpY')f1r6uoÓSQä¢MD&Î&P¡éÐëk§"#ŒƒÂòûÅqÆ4¤ 7EÞê2ÚÙG†p?…¾)U‰©’2àøy.oR¬
-^/¾Qgv¹4‡JÞÈÒI~Å‹¯ ?$ÒLûFüÓ º ’;ºOðâb%¤(Sê;a€hb|o® *ãàG#:סºbX± É
-P«ð׈„ÁÓãâœèª1G£t"œY๢<3šÖw'¿™œYˆ
-38N=Õ“Óùù
-D‹ý>ás¾hÊî5FüiÙœ¼ d[¢Sƒ!YÖD69зº(…@I›Pü6 ˆ‘hŒÊ„øCÐz¦›éoA‚V I¹wAä–渢h¾Uº$×ÔÏ×ٱɔhX™ëhÈ1›(àð øI¡M
-Ru….ù‚ÑÜrâ"PMÊ•ÓÚŠ9Õ.l×v<ÔÕ»‘×:òQ C¡ÂýëuO~€¸&Wä©}=¯Ó4LŽcØ=ù™z )£¼bªííß“ Íé iíSô r#4Ï0·ýĬ*
-'óäD2ú¥¨ ÍÎÃ…<¨¤<Ý°tHùP§-ø2ž}®ƒC#0â~I`íYîdA¨lX£Ÿœ¸¨„ë&RNŽ¥X,zøÃa>ÅŒq® ˆTmYTóÔdˆ1-÷Ñ6øf_¥!5].ìKäí©&"mKCB—° ™ɘ™‚
-cƪ²@ñ(5F+Œ@,±* íc*™«N ÿ\£âIYª€öz>ŸãÂðY¨½ @Šúì'øl=â&´‹C©uû
-ȾfýØŒ·ÓË`α(J Fpcù﹕Š½fƒ§yöW vbåHD¹,Í(PDLA䔯ÀÒÄDšm>%°7n%8Îp©€ÂZ¾®3Þ¬Þd:¢XBȃ-øéÌæ¾gõÑáçTe‰S®Õ Sá¹s}èm’ª`ŒÖ²]Û&Žø¬uU±`‘¡§eO2.Á=Æ9IMžzŸ¶óYjz_­Ò<ÍÁd³‰Æ°¾ÎÆ&cÒž¾îK0P@Z‰5evºøhÉþhì~aÿòÛ??f—†ªl4Ø\ÀEú‚‚{ÖvpÄÝšµ6æ¡h66Ž§"Ëàü^ôO>2e§%œ@I~ÎèL; .…Õ 9 a1§  ŒªM\ŠçÀ#¨¼2°UB6lšÌÅ
->óz}.ÝQ¿ž{tÆ ¬`^!CÎ. KÍC#xn¶Ñ7u%†^tqOSc†ž%mÎ~!þ¸©1μø¿¶¨ ¸óý.ˆÞ± ð¤T7rÛÆLš°é­|Sò¿S4˜±'¿çPôû›"ÖAÆüš,éÞuã«ê
-e„MÀÙ³ìZLêYæÙ(vÈuƒ÷íôÖi&õóYÏ9šyÌGcKùeÞ ©Èë=†ÙÕ8
-Y#Í
-êL5^åO:n¬mäŸl¼Þ¿†Ÿ„”/qzü¸G[šd%p©Mšô»˜õ¨`k±ÄA«;¤õ%…ôý›’ÏöãP„ß`û†VnŠÆS•.{ÏÍ)MôÌR/Ï›¦ë—ïÅ:Ú$ÊüÜ4ŒV, ‹ÚŽÞ¬â
-4¾ÄÊp"6­äøVL3Cèà÷ÑxK}Àý¤em}›…~–XaþkBˆ¦sä×hœX‚z, 7(1u;ÂrŸÏj ƒñÛ{`¤XTîaÉ1Œ¸ààO^âW ÷5‘=‰.éÚ–àÃP ºN "Ô™þȬ1Ø.ZÏLK@)¼…¹Vp'¸)H¹×þ\ŃÀÁ躟~bÉíb¬HÅ[lΆÇ;
-Íÿ¢º³mü8䦸
-‡1}ÄÕGŠDpHùòzÙµ ƒ“—Ë ³„lßÇ’‹~ž]½sÝæ_ñO|à¿nµ»bŠð}(úýM~ê)ŠèY©5ñ¸,èƒy„ˬˆØe<÷Á"?žàbvÜ솭¦çÈס±É<‘­WŸ°zxC¾`¦À•³bÓõwÞÆDÂ3󷄶@XRõKXõ¦nÀIè̲ÚЉ›Ù§°n0„õ©sÑ¬Ú AóŠ´Œ+ _§7²5qvÐ- ‡xHZå!Ù¶¼3ÑG¿.:uည¤°eê¥ä‘`Zž!ùÿǯO§
->\§‰:,±ÃÏðý¤¯‘CÈï,,/ƵF æ§(WPŽ4ðªAÏ# ¨y­p(ö˜¿vCÁ
-Èþ}ÍËe¿ÿæ‹þõÿåëÜT K)ÿjòO!üÅjÒE
-Ò0½NEô)À‚"ÜõT„ùc™ûµ('Û¸-U¹:¯Ì\ ¦Ÿîr{Š°<Äeå>C’¬l×5\!3”0O"% cÀÈ:ó-°Y[‡ ¥¦zù¨=Ÿ‡‡#€­¶Œ¢9Œ`­a›ç(LT3£¢üÄ›â^®°­ov¸4~8³ê±K&ÌŠ·£ÓqSòëÌb É-«ÈXÂþ±©ú
-­²^jÂoÒüSµ—;zÇMÕŽ` ”˜òµ".BÇø;,^*§+RfЩ:¬
-Í
-ñ'ŒTì«P>zÁ¯nÅŒ¢ëJ,ŽÛ*ʼtúR+%<gp-ä;®º§
-j‘6²ë*,½ä§½>´îÓ±°Òö-óL³)ZËæ”ùµÅVЃjÎá#×  l
-ŒAwº¡3I ïš.VzÖ‘Ÿ«¾ [Áœ_ç¾·3¯!ã„©0Rí›’—ý3¬$YòŽ¯b¿ IýÌ’Ç"(À¸g”€0¨næôLÞ×aÍa3Ô~XA‚dß0š£]+èêdPW›|ÿ sa³è
-FÔT.À½KôªXMôZ¡ÚCµ^›ÕJƒ7¹÷B^Ç<ý$<ô꣪‚‘„»lÑÂÇÁ-¬ˆYºBÕ’VÙ–ÕîDoHY=ý;A
-ÇBÞZ3nËüšÀx)YCë±~>B^‚Àt­û(‹ÌôúeO$¨µu÷ÚJ¾mÞ¢zíÑ kºOKz˜W°’{[ÎØÝ
-¤¯5‘àe©.Oyìô_œ«G1Ãå²çuù×EiNíÙpsàúñëMÑŽ|–‡h’=®ß.d$c‹Ñ×u•5[×KŒ­hk¸À²,:‘O­ àƒÕ¶Ù^)áÙI!Õí+S:Ù aý(œYQÐb]1yK¤ H‡õ>©ÏÊRðqû Þ6$è )ñwH"ësÒ±Ú:£äÊk/IŠÈbÝ%<˽Ü%˜q!˜&?Þ„Ìæ9Þ ŒW¾é¬gŸ{Ù•ï‘Ýd¼ÈØ`Ó†£¢G«H ñØCW7*ð·õ i˜|›ýº‹ÎÐ"š>¶GÉʉ¨Ð` £ŠGl×¾Œ³ö¾œT¦ç¤5º¦ó•éÛÀ`yS TÎ:éMJÜÌqFçº>RÄœë¼Ð
-Zxk¾–Çp°WD…áGÔTÚ²<Wv81Î{«\ŸµÝ²éÏI-¡Éò½DƒwJ½6VœŸá7Ê8ˆp‚0GÀ&Ï4o»§‰hAkŸ±2¦ “e}—s[bbi”wc«Ãû1v•$Ê™õ˜ýº‰
-?q£ÆflœÈôU´FE)LËf’Ë«lÈ>o²£H²»kJR‹˜ì®xM–¡•5hÑQÈßéÜÇV-më2”‰‹.¼öþÉwïF\«…fLÜeæûIÔš¿ÙQ›æEééj6èpŸ6u JLÊ]y³3ãõŠµò™å±¤Ú
-ñØRÑmÅŠ˜ü÷¸+âu78¨¡×¿sRÉ^‡z0À9‰r-FBñ:®¹Óßq5-ëGy&:ÁÛÚ³^2£X%/¸®û(é+ý0XÛ>Š®º˜Qͯç;ñã.½TSÚï,yöE~½Ä{ Æ­u|%á
-cnöÞŒ¢(†… ‹uMBH"dÀ±ðÕd,@¬7gI¡~çWða Þ"/£Ë§fÅa1Ont_ð;üS;..®½g‘¤’Qb³Ãó-²g̲(æÿ?žÏ´(â1•ŒGã…’òØiRl»Á6„Ù£³I‹ÕûÝUNôóÕ†à‘ÜZƒÊ¯öó;GŸàSŽúõ¨Üê›QJΨ»Cí×»9×ë:uG]ˆÝI¡«òìçïà¤ï‰3ºç_¨``Ø¢Eü”Ø‚TZòš`‹=]PŒ—ð%î…5%¤+Žn?Ô‰™“³–q¨ r@B¡Føx±•ül÷Q 0B—°1D4à’cBýUÕè¯ì º®wI‹ i4¢¼)y‘ôyQa“]-Óñ1»ÍÕoƒK ž½êŠdÞ†Ft§\–dÏ=IìµÇݘî±tŽ2½É¬”øÁ‹:»ú9sEwØ],²Õºc#á’ ¶/wÉS…=Únf9-HKˆºKZL‰%kqÒð˜gÎÛq^QE’»ýò ¶¬üÁ°·B«þp{ß¼øwK}˜ÜV_+úA+Î#ÎéGH¥™±V¹Ë¨  5©c¹ÍEºÂ Áîó ˜ìðY)W7¬xÜ/Eîí÷¤Ò[[Ìã’,b,£1T¨í¸ºGñËþXÅ”åùÊÏÞ5bFµ'vŒÞuù;ÈA»U±bÇ>½³NÆX7ðë‚=°3¸ëËÓ[Ü^Ïú•ÑœÚîÎú܇`»%jz[C¯4L÷FƒK¼:ßU:k½
-ÕÏœòçL8ýzW”-8ö
-î¾všJt8’Õ7(A%<_àÄýz” §!Ê 1×ÃGG†OFâ˜Lù£¦È ee§,Ó篃ÉP©¨Æ<lXB0¹UH–ŒDqºÑ9°mYÓ‹ØìÁ§k-JyÈèìØGŽM/N¹`œGC@ÓOC<­8X¢ ,Â"`>HV²Qš³¥±Å¸³©ÓoÌÄM¸¬­ó²ÙlÙ†áaT²˜‹*Èœhж¥0cdܶš4Œ— 8Ãgu/ˆGÈ»‚x:T…ºÿoAñxA‡&
-0eƒ`$¸[«j‚ŠèO·–~Ò
-4-Ÿ»UREea ,iÈ{#ø| àp:ÁE&n£ÛÒQ\"@C ëp¬ƒHtÐoáˆCd˜7éÞìo5˜}£ÀÓ#·P]›OÈOd½¶ªºµ¾ZJ&“ vd‚¦—ÄgÖ ¡øLrUxxÊq‹¹‹ü÷Vß óéÉœ04tqUnZ¾IJÑ…>߀N6­e(q ø"À FìwA/Û}Ü9“ýºÖY‘8z¡BEd¡´’úýô2`€"—Az‹#R€ÎÛ]ïw äšHèÅ+`^ »ÎËy˜èãNÅõ0u"²´¦äEvèZ¨OCÀŠ  sðSñÒPQPº|€P!Œaè;§á¡°Bˆ%$!‡-ÌÖT‹ ¢!B¢š™ "lÅe‡¦fç=œ29Ž¯·ö¨<J”ƒQ‚)ó¹Ô@ ’ D—38¶â
-6Êa<ÒÈi¹1¹ü»!É.D[xSYG\ƒ‰uql[Á)Øf™œ[åáð¢˜$­ƒ¾¡4ˆSã@»: Q$–$š€Æxó±k,+ŒI˜¡ï­`ìp\aWËÌÐfÙG;rà8¯AŠs¯S°üE3oÅ-M9œÞf¿¸äáàÕE×ÉÁòXŽÔˆe1½`·eŠôL>€•‚"”fê“ß ô=‹hx1tx@wÂPð_Êð=H!߀/輇ºÝQCYÔ<<‡¬¿Kß F¯Òfú$´UA„ï‘WHÛ:<V•Š_êÑqgT$*,H x?´mƒ6à4lfäAÈ£2½ƒpä®Q%«jµ8’  q «Ì7›`V2F˜óf "}†éAŽ}À¿Ìg½0pá´v:#y¢G†–À#ÄanÏÙj0Ù³Ñä×\/í€Î¥ó §ò;ë#ʇá±x¢'·¦ÊÇÍÓ.„œz²ºÅGȈ¦ªÉÏÇ`#,=+eÅt8úÚÖšÝ €cÄâ`÷Y&îŠúqHVö 'f\£­±†Ó`ýêñý‡qÞ…0YàڲߜQ‹ø=Ýe.ú ÒêÞÂ&s©QH|³˜šŒ@ŒE Ãýœê
-ÜrÍ1¾…—öÒõ3L€
-fFš&TëDK,è)5ÜÒÌÀ)@ñ€‡‘L5Уè¬,žEºª†¬<å¬Pæ&K]“ïƒNþ½Vt¾ÓÊJÂøÐÉäß8“ýºÖÕäW‚-ä„'àY‚oK]ÌY§ÓSDŸðÅ^Ú@çÝ®·»ºº÷šŸ©ÀB¼/ÝÞîcNß{”«‚}_m=J©Ï‚‘ƒñ0ŸP­s¨Ï_¥@Ä ¨a–Tü“û ÓÑٮ²Š»5bÁß8c,b^œýXýį0VE ò¨=³ñʈðKœ·A×í y"{Õ8æ0縛Ý
-&ÚÆ$ô¹¶‚Ö—`âŠ%3udHRvvd‚‘¾6dlÆdÈÄ> Ò3"Á‚äèôµmE>H
-((|ÝdšøÖP„²#ó?Ê“ôX­{>pH¡ÔŠ0 dFj‡L" ½8?ê LÖ#sjdÍ[§ë|§¨R—~@òÙ“Ö¢ ÍÁààXÇ9°mU0F:H!÷VQÉFV#«:ô)œÈ‰”ÚQã¦'§‚U$§J ‘§(eo9 Öˆ¡Ì
-L>ÛœzDŒ9–Ú´«qi/ž.Í£Ê]d"òoeÚyZ’¥=Pè i*=lƒëR—-÷Æ‹ð$4‚¸ºTf—†~G¹ë ÂGk³Ì¢Ue+}JácÏăx"AÔ³%lÀ؇Qü‡èòzk«Ø¦=ÈÝ6A;e…7­Ã[d¹v]æÌ ³Sv¾\Vë d¼cÐ7aœ!Ö¥ƒTVd&Z8(ZB­×V—N“Ü6°¦û=‡+þÌü·z1D~ø“bq ¶•3Xçu2n—Dÿ} ÆùVpÜRyŶRÁ906¸×z<¹)Ë~~ÂPQV4Ý·ÂJ¶®Ö
-h$½oah©ƒ«u*üV¹ɱíDzÖ'Í
-Ñl£‰‰x&EÜ|,Vé¼_"HÆâ[^¬cys¾/ðûZ2à·ÇÍDÚ9®ûý…›: –D'´ø£‘ Faæ¨÷õ%¦]+v >Љj2“<tŒñ¹ñŒo ©G]dÅ„¯D¡„©¬áÊZÖ£¾NÏÀ EÇxÔ7Úú"õoô×ù-7óë`g~êH4’Wæ•_ÿ@„~õûCÅœþýo“þktñŠÍºêèbýGœp;B„G™ô 3Y­úR46Ý«žX´J®¹öŸ÷\‘‡-Æó¥Øiâie"5>°ñ}èt[_2?HÅ$-ÇÄ:‹-[µÎÙ¨0ð¿u\f<ª’öºÂ•æ¯º%(É~ãS%ÞØT-߾Ϣûˆ'€ßÛ˜÷k¾;I«OöWrùû›²çw$¯fÐüâ>[SD? íxàó©„IÎÁGÀ;j죠à¡4-ÇÜmõàç^wÉÒ„†’ØR@qLT®;Çž«Ð$FÓ`Q„‘† J gã¶Ûó$†ÔÒ:kI~¢c³^D£®ƒîØÛ͵Y’®ìä¶ç2’«­Þ2ÿJëCa™{–4ÄßóŠ 䔓Þhd–p]ïÌ"Ï64/#èÇÁ÷.²Ð<Žá¦›¶k¬p]ìΨ/%“t®à%J
-ðïçpÙâºÎݦ·pëÂBŽ¤XÄ­¶™¾\xz†¼ºóhö¼Š©4©¶ß“ßD’D/ãü ,¾Îå}¬ÓЕO¡‡²*èCø…ºË%Ä´¨øo︪1mAÔõÈ*ŸQº.ª
-Ž7Î "Hñ³¯öuT¼%§\iÖ(²Å„ •6ÞĬéÏéË}ÆÂFò^+’߈‘ õtï­ˆ á%-pùtΩô½äK*ýP³-–{=J¬‘§ëѪˆ4J
-­oLš’\oK®K^Š˜ú=ÁÓo>ó‡!ÿPòߺøóëþ(úõf¡sé4³o£…qK Oœ4u¹x|ØnmÃ[›QmhàT”²¯¢Ÿ;¼•u ؃JÛ4¾øõ#’êèU‚CM¡‡ºß n¶ï9[})™né‹z|?ÆG 9ÂýÇ*!Sqê×БYk±ëQØú’o[ÂÐc{­}ßW÷Žc‹­@1ç Màp ‹ ¬zÀÌmGixÓ˜°1}p«ÑM]ˆ½¶B¦Ò~;*²‰)¶AJ§˜U»ÀvN“Ý”Úãñmú( Û»
-Oÿ”XoÁÖ[)óS:“¯{ê>=ó[7v(ž9ç ·™BjW‰ïˆ#ñjK¾úÚ—"|‡|PŒ»Gw¾ÝÞb0\Çv¾>
-Ø`¬Gº®ZWÿ0#0J¹ç
-yÈÜ$Zѱ)›…u_™Ê0Ì0Sh2^~IÉ:¸÷¦d÷*IÜ £xûrÐlMôùÞC”³(æSâÈ øñ2lŒù[üu@ïW(òˆY
-#:3ã6¡õ½‹T¶ê˜Ö‡ˆTœ*â}fyL]µh÷”Ö‘tÃÄõé_ƒXûb¯ûSIÂå °ç$Eø ".Ⱦ×Ƚø¦áZ¹Êzgä÷u¸F¬Þ`“‘³ôY„€¾/¯aÊŽç°WÀ'½ýEíNìÜ i¶J‡+d—8÷‘A‘ÝÖ6Ïmý­9#¦¥¬oÝ™°´ ‹ôÇÃ_k.ô±g§pç‡cTÔjèÞùZ‚;êÕ÷„‘9_Š¢¿ÂÜ{Y/ÿ^Ä@ˆn§¥-ãYî§RÙ^V[çkö1HjuGÆ<ó2ü;ǿņ`ˆùtôíô
-Ø—ó5p´Wz§37ÜsB‚‘®lT‚[ÝR¢O¢E‹óxnÃXbóŽ•œŸ²;¤Šßô¿Ú“I#D(¢mcž¬’<çvç´m‚­] ag^5
-îïÇ*‘’˜‚—ù¡+þ62I‰ïU´UX¡`¥7™þÎ ‡&ë:ÇpBéC&ÎX¢ÝøÄÓqOÉ?¥OÅ#[ý%Nfû%£œ©‚aƒ·Ëç á©2ÒãžØ²GìÉÁÞ—YŠ‘<‰%)ñâ{ÑK¼pŸ=ÛjÉÚ²¶ÜêÞ¶á²ÒsÑŸüÙòÇy¹âq"JclúòµÑ­qce S7µ,®)¸Áö@uRšcÞpEÌT0øHù½âtÇÕ·uo¥~ì¦Èò5çœ@\Cɱv*{{ô~ ÿSXWª?jŒ·l4Áö8³-ü‘Ôéa)aäÍ‘ÊÙ¥¯ÌƬÓOW„†Âšè¾$¢¥ ªÓÁ”d @`ÈçúT¤>rÁ³ŒÛ0’5‹Ù=קJ–.¶•6?‰ï˜YOYo7GoÜz*¨b‹•ôë§Â]=¬9î2®Ž-Š}Xíã è”è¥ÕóCÐ@ó’Ñ&Ù~5o£Ä°#,œØzSR”Ó}ŽU{/É*žÚÜ®«<ŸúVÄ
-H‰Œ—KŽœ9„OPwÈu“ERåÀ[oçF÷Ê^Îýç IiÀùÿ…)ÃÝ®G¤D‘Á`У<Û%gwŸÃ?>ê|š÷¬¥ŒR²øã_.Þ3Ú˜5u<çðê“¿}øÜlÖ<,ù¿ 2rXµˆiéç”huôÓÚ]5ž½êë3ZÆyrRïaüFç´ÚÚœ•cfžsjím–ÓÇ‚dÌÌ>{xñ±!¥OÞÓg‚ÜW|KæÃÖ
-HÉ Š:‡ Þ«¢q#„±!™|“5rÎ||[ œ9‚GL¯Å6(Jd¸ó¨Ÿ‘›ÖŒ€HÚë¤â^ª7#+A¢Žiµz?J"xy³…h³Ö< ×sHŠ~zŸ6w=úõ*óõ(Ê9£Göl:Å³ð„¢°ÛIÍðQkÍ^³„ QÈ)¶9ê9e–(ÉïgÄ!N4ΈҭB•j•»¼“Ž©sÒ#õ¼fyJea$”DǺŠç–RKO·C-x8Ìbõó¤®Ò¶!®ýMãÔh½¬ªX§âY{-mCÌZã»2ë~Ôl…”:Ê|bâ‘;±kóäP:Àb¨>w-U>(åhó#EhôUŽ|ýÞ¬ŽJ­ÛªÁ$ ¥ôÒàE=‹ëЯïg*РHSÇP:„®eÂõì|KŸŠu š|ÚÉN1é:që²®jƒË¼7ÞÞ^çèj‘­åª%ìã,ÔìDÓdiF-fuxpÔãM7/#ºëcûªK'ÐôFÅÖ1ä~ûPÔ±Éïxéê])4¡ÖD¼!1Pº¡Õ­(BkºuêÏI=í¾Îé°qŒ€Ú¥ž`hƒNgÀÀ\êX”d¯”pCÌŒª 1°o_• 9ª³©eVÉ;Lr·Q0û’-zw9ÿîsú³÷I›Yt½ó£¡o¡Î¯WÝ€<{JŒR—ßDcЙGF] ½yU§ï¨05h½£×,e0èR¨Iˆ9*z²²Ã•ð
-í/tç†ôÑ](.ÖªVêöAå`In}!Ã4.6+D3£àÀ°B˜£¢}Q«5-TìDCP:ôoöMÀJš¦œh46˜“ÖÛ7ј­Zãý/L$ÔA£ÄHé ‚IŠ¹þÖº‹H<äNL)1)£T÷b’Ï©—ÌCÁÇ÷g2$B1®Æ—Ao×ý(]s½Ž¬jkØ@ÔWÌi‡š»oÞ„¶ÓPNfþï—ý‘C7ªÅ¼¸9Ê8%Í ±AýÜ눉½Û¹‰¡ Þƒ¼ÌI ˆ¥«´";ÜA :7 ¸uCC›ç&(hkãö¡cÔ áPŒ¦>Õâp¹ø%ã›9JÁ˜[¶’_ cð
-çä‹´·kNO.’ë» ÂAÝNïŸ@‚öåá©1qù±®J9'òÎÈOΑ!ÚP¹¼¢Q‘mÑb!ЉÒðû&)=®ûX÷Mô4ÅÚïQ#‡…½¤%NËøL•v~ j£ÂÜ0_I¾”s(Ì8”›axz†#‹æzæ°
-Ã3 T~á ˜D0^ÄÑ>þúÏGyüûï¿þûAÉŸJ#](1A2q0 D¤k<~Ý‚ê“q‡®Wæ.ýüP}ʈNÆò6¿ 2FÊ„ t½î‹ è¾9¦Î¿I `†CíR‚`úpŽYe6$Q"tŽ¡ ‚аLyü‡/‹ „aѤ0¥‰) ‚L(¸Ÿ‹¸`ˆ©Ä³å¬cØ1|.¿v65rщ:c
-½ÊKPKé;Û0ĵ`tèdÔ¯O@XÚj ûêG LJ1Ûžˆi¥ªêm\ú‚0+9rÕƒÍÖB5¤Ü9æˆÅõm+HhcÁ¦^Ó×9œÚ
-êÝÚ d_…xæ`:"HöÉ9\KùC×~ ã 祖‰þÉ«ÆÒ4ÕxZ»ÍÐìÆiÎ%h×ßAþ¨Õ¹êŠÍr\Šäê6›Ë0æÄDÝ¿ŠÕ3dcØ.í$ð=;€ñ„Çuîš¿ç81.&/ÄŽ™·¥ú±/z¯øõ”wÚÜ„r¥ßÍ“®4¾¤æÚ o þ¿MõmõGSCÞ‡€ë9Й:õ^#¢‚(«¢õ“ù]µYÈÖ±b¡ÝŸ€ô\‚bøHÁpth]ImKð¡ó,¬Dv
-›—«Õ ÏM/Yƒ~u©&A±œ_V*HüØ8[R&»Z⻈¤‚ÉdÈ
-4¦Û°Q!Ùg€ð`”꼨wae v¼ß)‘Bô3Rs ÙA÷°Ýd.&Ñ% Û1Ï^CúX)ðCy¹žSÂ3z‡¡v¨ÅeŸèQz:ùÔ²Iµ1 OÏz69*z™üWXÔ”7v›2Oš•nÌÁ°ÚÐl<æM¦éìvö—K
-Q§8ärª«Õ› áãÉÚæaž.¶ô^ +å#ÝßËìQJÓnÔý†+_Jl‘¡qlUÇ‘¯ž¶ƒ—÷ë20 ãðf
-ZÃÇü2E\Õ¦ty:DÜØðU\Gˆƒˆ‹ƒ«GÚb:½Á'núÀŸxÉc鸞·€ÁÝþ¥?,çÉLBjpØXyë2³áþSpEú‹ž†$ÏÏÎÓ'÷NéaÚñŽAžJZ‡ŸûQú“bŠ0Îû 5,Zš;Ž-T3)Ùj7q®ô‰LýàÃ\}èÒð;ÄËczr ±žƒ×áìœ|ˆ±º$CÖ²K.y¬óÿ™[ßçŒNkTy‰$O”ÀN ê
-9Á^ÌÈ?Å¢Ð
-8’>û>sÊdÊt`sªZÞa΂7ò%…ÁgÅ ¤¿5Úyen3Ž²øøÚOjnœ¯Ö­ÈøE°+¹eMV…r±|äLüÍ¡— †&¥F@ÜÚ@!GNŒ$Øe+‘
-ñï\ôŒ½Ÿ8ÈŽžß¬dK“ú@/«ùoŠ°Q¸ƒźþ3܆ÑSYØ`ûù¡ å4†!Çœõžò1uÌpI¥PwNJô)ò‹?éR¾7çt™é¥ØTßÝñÇ)r£i¢¼
-nCAƒ,/>ºC !¿Â)m‡=ŽJ^FåŸzuÅ}k^‰nÓPòÝ:A£7¯ª þ¤3üoû§îÝ¡ˆ×T£Øõõ˜ÔC‚·÷¨#‡³º•Ø§î3œóDÎã6¯ŠŒ?g
-bSúG¸tNÄÝ=jþi©~_«—æ.´œ¿ ¨ûÛæ q3>_"~ÿ;,
-8ãñµ[Í×nd”{Å8ó V¥x2%¢%°xOvñ¨ˆ9C¼Y!VëUX0ÈŒV¶6ñ„CÂŒ-@|J&=äŸðöSðQš193™”OlUÊØpÁÁŠŠ„Œ?cŽùœÓd¤‘œ²–ŸÃ3hlrîö)ÒæfqVö<˜6E
-ðÈU3W÷ 4Ösa"öù…]Ä]a+f‹+æ`yIÕ­wAM#<`ÜeÙuOßø›KC!˜Š–Ï}8µ*ÞàÚæÅì i¯%HR±umÛ`ÿCŽƒòè´ P.à—‘Ss&úM¼#TÚž9SÐc¬8¸$ê|sÎóâcf¹B/™ƒAƒò%4œFó g\»¹É [Ù ôŸO1}8‚Ïå¦+¤6KjìœNø#ˆðWÕÈK BSyS²
-l°—‹¿x3 6W¬aš-³9•¯×m A”Òe“¼XbÏ©ܲ­7¨îð Fï¯h.<ƒ½êÍÏ!ŒAÈ"×:%U)èìKqÂb™€lâQcûøë ôju†eã[IJ]ÇÖómt…±~†Ž¬¡ôu[©ažœr1ãòP›ÖýC"\’
-,â >?¿)a!š\Éñ ö©gÑ&ÒâÛPŠ¼Ï9GÃð"qâFà˜½ìÕ‡d`GÖÇcS'" aµø—ï(3"ñóؤSvjÌÆWå.¨§ „âRI:æMµ‰Òµ-sB.W€5’Jÿ¿ž«(˜`‡Z<ÄqÓÆhØ”]/mÁ®&¢ð"Þ8!–y•#Q|C×Z;ÛçR9˜Âö¦¤"f.Ø›CŽ¨ ¢Çª"(Æj·¢/+bw°ï£Ð[Ï•…;mÉtŸÀ6V­ú9âû5åE‡©(Z 1Ç¢øÈ“˜Ȥý×dö §¹¼ƒú¶¼{ÃìÚâ8›’Æåë\¥Ñèo^oæùRbÐá#HtŸ¥ø˜Qá˽¼ã%I½ˆNÌÒÁ&Ð16çQ4
-æÂ-¶ËÒ1Ö;i=¯æ€Å®4Ñœ*žV¦Ÿ¬oêóMÉ‹Q=>üã¯_øZ­eÒûeìDÐS’n‡Eͽ ,Æ´CTÂ7îµ1oÁ²«ó´À¸Òý⨠‰ 0æ¥Ñt<Óô©ÂLS&f1(©üŠ¢a-s‰ÆAÉÍ
-ð#u±‡pÅ®¨
-HJæKóðA¶°áðìK?¬çÇK+ylpðÛŽÌÙd¯è[hP Áuê£ù‹§þN0* å¸f9,Ž}¨a1û&¡JDP6Düë¡zö–ˆY‚ÜÖ:GÑøbìê‰QîˆqEJ$Âäž®% É)ѧèmNb‘"6¿9Þ!=u¥*+*Êaòî}•h÷΢ï’ÖeаuØÈ¥•×"4WäL«¡­¾´òú1™)™À”ä‡w勼_Ÿîص05?¹± ¢VKLSmy¹\‡/[%k•œÖaÆXL0eÜ™«Ø‘Œª%<5 :­¤#tÁ–Sœ”G=±k¢Ÿ }ø
-&YN²÷sõEy@º™‘Ø„ØFê»KE˜ŠúQóùnyo‚‰.½ˆ¶Qgv]Q枣öƒK6ܽÍÐo¯òQ/
-T.˜ `wÂsže€èåzöÂÿªIEt[
-3ÜäP¨Mw`•^pÿ‚Ï0»™9Ý%'ö²Îáp–¾cTCó¥N0a b}ø›#
-`‰®†±×ëK"°!­q?óøÛJÿYE=À×Ì–«k·Ã“„Á)C<š€·fóBo ÕA`Ȭ:\.#”¹'|´çžm´<Ô<L8ä]©L†eSÙh\^à$´Ÿ¶ÁW=ìQ0e$¼jïx#¦\y¿¶ƒÕ
-Ɔ$Ç+ú¸)B+«„cB) ®,p 0ˆ=lÈ HYæÔ`£â[“ ­/Ô³_XÉÚ°#c•ŒÊ¢°ùÕÌð!¿¹»ðh ‚"§#«°¡;²c똪€òa‹âÎêÇ‘ÿûâiJ™°oÈŠGzÖÌFÇ@4™Èí.ŒÆ@°ºðâÐßÆhô«1ç°V ‹2uùlªÉ¼±+=à\¥esK7hÑRSÄT3Æ•ÊxDm.ôÕ‹é<Nœfq.1æ¦$DA›ÑÐq^ïeY%Á”¿Kbì^Ñ×q¸4OÍÍW¼››iM`Šy“¯®€¾"S@d±wŠx.‘]çî"k1š;²÷ƒè£8ÓÞ}!ĤMbv5P/„È
-p{<O°(ŠÆèä’Ö1úv‚±·¢þ’Ø>÷—H!ò¸¨{öÓ•WóƆ>eüª/Æ3K2Âbƒk1-Ö‰¡fÁŸ*I«Ù"Y"a妱eìL~àåÌÙ(¸@2…‹QWféνì¾@B[CÕE®
-è»ÉÊU3ÀH•Ë€?2©HÂÈ’~¨ÿó‰_pj‚\ˆp)ÂdÑt2„yŠPèPFUâ¡"N!°iOƒ¥ÁÃók2
-‹y-ä”À¸ãÉz‚J¾“òpÏOÉ#®]<‡¤vW%ëQ3 ËÙ§h]á–´,ÊuŠˆ¡èªÃ!žfGÿØ °”{=&üEªÏ->«â±o‹®gè2\&þTO—k
-.Ÿ
-V§r[À™frëúÒú# äx°C3$ö|Bçhºœ‰=H!züÉÇÔ3UÀÅ8WÖßY9/±‹æ_Òˆ3a,¸Cöaá ²…ÅJ0—pj+jø*áû©Ã³ùØ~Líágl‡aS%xm¾¾…FäÕreõ‘¯1CG9…/|Ƈ
-þ]²æ
-Ô}zq?ˆœ™cÌŠÒf¿)á@ú24Ñ%GaAÒd§èó¦HB1 µœ-´³­‚7Á£7šÀ?ñ*¬u@m»Zˆ(œH CK|Àl›{«äJyÿÎÇÓšN`2£
-±<XCˆª™(Ú/\0¬7Peã÷
-߆ԳD¹£–<´[˜‚’JˆV'TÂ{,Žf&’b^Öï6Ç)ÂÁ‰E¼ü§q̻ɀa\} N
-Š’T¸oþ¯Öi%Ÿ"@°Cá£ôŒ!àRGxÁû…«SEÞÁÒ´õ+Œ]
-"¦ "Šh`¬QñÖ®óVô¹Š`®¨™õ¬§²XnJðë‘à&ö¹y8·
-ê;{|¼Åª€üñÝÞé¦D世†¨Øv‡ñµ8P|_rœ…?Ì7‡Ba ḧŒ…êC¶%DJº¹`<·AVØØ&£¥’";x7Zh%Ò/À<ëM°À´
-s÷²,0ìɨ”ˆ‘Öâ3eÇ%;XvÙ|x‘X³ôj
-© ÐHBÖ(¯5ìy'Œâ´3hzx×…-xq^^­w÷Ùpd5K€ôö³/í»â›Q&>^ÞÞXÒæ…m
-E$pAªÞ9Z²KGßãˆE ˜¼Ã(zpTœr$8€÷†Þ!‹e”'Èþãæ^OO
-…äËÞöf^¶åM§½­ËOÙŒPIŠk5/ûûV´V¸±!Mi›<8O-+÷õ-d»œê®€új€H±'1ò@ü+Ú´­ÉC
- 0JýŸñrIŽc¢è
-¼¯ H`¬7ô.<•ö?}çR”¬®J…zâ+²)ÈϽ'÷1l<M«'?®ªÕÈ *ꈨ+ªæºZ Sø¯».çàáuÔRØ ç8« Z± Êdõ( 'Šü1-
-
->w zåNºz*Xt|k¶NÀdYs su‚ÔFFvÉæžC&Uû°¬;u±zCð„i5—8h<˜AfŽž Q<¼S‡ï²LS ùö]=ÂvÉtÒ<{¦Y€jš&K®‚˜"è—GpáQxM*¹aIÒÐ|Äð½"à†å-~ÐŽ åù#!1ÜVÖÎÙçDLèŠ<FƒìØdÆ7¹ìknÙ6†RЃ ÷WªûgÃ^7ñ&gð]êyñ‡‚h¦ŽvÁ>"ã'„Äá9áa3X¶º ž‰Ëq÷-ÈH)ºc-ƒ (³’@sX’,õ–q"…Ð)XÍàó'† ŠÀB‚Ó
-IZ3+ ¿{€ñ;¦:i«œ¨v/Þ‰æÊ‘zôç› £kJÓöÊ7A0+œßT—D »IÇ êoBÐÁP¶ÔM+˜Š ÝÛPAõ§›,|ç‡}GmÉ
-°òà éOö‡še@;ÏÚãJ™Ð9™}ÂÐVL.Ä«ªþ¶YE¡³uE|Žå“¾¯þ¨Ë{p<Ð'
-ZE“#SØÄ)ƒ Ãa ýü»Ã,aRS£!”|’ Vª`$]ÓIúø%ÎÀÕ9,½ U‚D¸Ñî~ð†ß mMß„0¼…‚à7EÛPTŽ)‚I
-S郠k3rå¥îpðs®·_)MO/°&±™ç€=SZÔÔLS!ÖW)¡}’Ü^E¥¿ašºŒŽGA1°":G–MƒA•4o?eÚ8f‚‹B ÒÆà2eî‡'ð]l…ók»ëÂxŠ‹vJ<NÒG±_ÒF– ‘­›V,6ßãE¾'Ö—”
-…äAi2T‡…˜]=–Ž—‚& †¼Ãšu©p„èKE®”âIÌ
-¢¶º$|;J ï
-,~T=å¶Ýà¢>ú4ãbÁ´¢•lÏxz‰U#=8—L<¨FB¾G†K¨Iö•A5øœ¼¡ñ
-Á\”÷2µJÊõ8ÈU° è†o\š­‚” Œ—ƒø¸×:*eGƒ @’6º•Ç)CÌ(Ó%còÃ1xy2ì(P»KëÍ¥¾v<{œl
-KûpH ßÕƒìd9‹Ž˜³}tÑD“VÕ1¬,Ìm‚£ìg3å$ÃÙµ;%ar|ÐÒ}º¦†Õ–…PÝkÞPÚ±'†ÿ(èFÚ/ÌéIÚŽ|Àt- S¯-$mÇUQŒpR¾6ƒ B((É*øDý¬ÉSƒ`}&²œˆù'p<ƒ¶kÇ…© m
-Ó-
-’6ùæ(¼ ÔBûXU#gxÖÚz@ÚNñ-’@ŠzI› —}g‹ýÄñ'Ò&¤añÒ+š5{@ÚqÈ…´£ iGA×näÊSvÜŒ ¤­§WÀˆÄÈcÒŽºúê™Ü303j¹‰ëê™Aíož©6Pt¤&ŠŒ•˜„\±?4Òv
-RÛÜ{!m‚èî
-”RéH5!UØߨ#VÒV=0‡h"yÚaÌ¡cåx)èÂÙQÐ…³¡Éy+é„À¯œ-Íä7‰£§c&nœ½ÆÏ ¬Ÿâ% 8›TÌÙæè)ëhkÒ‹%qÄÓ-m‚
-]A ú˜¾9¦Î1«$t¨œ-1¤M–aè5äl‰*¶’š‘#Îve‚p‘$Ý\ÎŽZðÆÙI¸‹Kvhû³ ¸Š©ü[fž8[ïb-P&«l$•/¨éâìüÁ±‚e-
-|]¦Û‘œÝP!¯ƒ–ÉÌk|ÜÉ_ÑÊòü9‹P†)Òœ|o‡`É°,;žÄéÃÖqf@ ®Ž_CÖ§¸*ýI£Ÿ3pIò ÔdAŸE¥ „<a›4r]ý=âʲ8Š‰Â†ì³ „Æ¥PÒ•eæ€gá–’>“Ê ÊƒõtLZ¸ÍäKµÂsRbüÔ|ò¯Hâ…1 8œä[7ä×¾Ì~®z2&]Y÷u F™~®uŽ‹»DíHí©…É\›{réÒ·_QнßÓ#9
-+ÒÉ_¹O`ð±—‚.ª×%èDÿ6H —¥lôĘAÇ~((ó,ÑJ§ ?"DP»ÆÊ‚ž%¤’z˜b–ÙÊ®3 ;Ï©âÚÌE“ëãQµá2¯ƒoÙÔ9m"¡
-™†ÜÊA0íPyŒ+Bpè €k·°¶Q+ƺ¸$†$éεԂÉ_<z_é¡<"}aa‚Z€NS`Ò›¥äƹ'üXp¯½)‹êÇÎ @ñ?ãõŽœGŽøºí1F¿`nÌšr÷Šõ$sï¿_¢Ñ‘CŒgþ)¢ª¬|~YJŽÞÒžó+ßb½K;Ë1ÌÂ"«HéìÇäƫϳw×;âDt÷¶~P‚¬†Ì¥÷—&E,
-Qåq³B)É@W®Ï¬JË(Ü…îç¾à{Úo~ñ•SïŸÂùùeÛ“ìØŸX Ýû)XêV9
-œë­Zùt}¯2)éŸjlü.>:¯ÍŽñå᤽üxÔ𸲡æ—ØæOO,ËÂnùe‰¾„"0ä ŒÍÈ¥%—¢õϦ %ü\;«Fr0Hçì:šǾœÆ6Å wºi<ô<ÁÔñKŒÐ1®¬ûz3ëÍòmãÅ1J „ÐwåaR%aʃæÓP/€3§ ÄÇ­fÂÛÄÅN»”ñ8jrÁ.Yš¥"#ù EbØ ÚQ×c»3ŠæפÍüÒ%˜įe[ÖcRò=rjj®}v&JT©éìùĆDBŠXËš’D¡’&ȳÇÉŽºÜ’ðŒbRôλ(*p„0?]äp&_bÚÚ^¬°$Yž½¿8™Ðed›òãKw©
-­¡›eð†’•;¢0ÚOøǧDOÉÏPÛâÏÊ„É”\XáA.ƒìlèš½ÈbLK(eüŒáüj gE@g½=ªÈ>áÃY X¾ûº—~eL¼¦EDå.A6d[zÙse9wÉìÌw½‘³°Î¬G“Çåå:¨VÔžÖ… Ú"û’™Ö ¨=Á+—[
-¸D¦´œ±Yã2«QŹUÚ•Žíwgõ¡„­ÊfÁz‰K'ˆÞ164P9ä?ü~a
-FE9§)¸àËlï¬´é £ª¿ó¦c‰ôûCï¿&E?úÊœ™U¢åv <ÐGL½—÷Õ³–§¿)ZóÌ»ËM_ÝRÒͻމç Ü ºùp×Ñc;ØT «s´Çº _v­U뎧ÿ8Æ}qØË+ËñÁ0_•ôÝ\#ü•+ÚÎ:+‚¬–P¦É®<¾Ô˜Ñ-‘5Ó>y"\ÏZ½h=³ávWÝøܳc1qà ^÷ð3Ð!
-vœCŠ£½šâ#H€½œ–عUO@<!áï/³šÚ÷’›GœHáÇ´ˆ‰t5%ñ§_˜ 5ãßžô³ô ïÝßMðB²<d%þ¾DgÖg-Å-ÚæËþ}¢4ã7˜1[]bž ûñ‚w]"ún7§ÙW%}”â›—
-RLŠ >÷¦èÇgú”Ζ—+å°¼÷3²\,½ÜPÇÝÒã+ßfÜg\ï1)úöAQò
-‹ ’lk¿Ùû¢µÏš¢­¾ô°àg#!ƒ°)f<œ•KɺÆÊTRú¸ö˜7Ìæ>YÏÔ”ˆª¸VG®–Zö„AêÇăXè³ Ä€ž!<ÄØÊKÚsÅ<øߥ]mRò½÷“ï
-÷óž-Ù‚àv²PCsL
-ãYY,ìß
-w8} $øýž5²7\@‚ÞPe¡ðrê'oé^Ò ’’E+VÑë’ÀŒvW-þ_„W›ß*©„çЉ =£R
-8zGpfLªœ
-ÂÅ2ü!â/+Q|²˜x°ŒÐ’O“2‹¶üÇ_QK͸ ”«Ä;<‘c1y~»¨J$´m¹au Ï"觘h³Úé\Š+ãË–“.&”pÀF Û.XX¦ëÂVt÷W}wm:èµ–eÐ%]×
-ýUA¿•Øõ´üå5ivôŒ‹ æL Ðo›¿”dqà 8vÔžx–dÞmÙ·fÌø^Ûô(Ü9 b+~
-ò6ŠbÍÞ‡ŸžEÁ$XœÞå+ñ
-­»ˆq‡–|? Ç÷øµH㪠:ÁŒ¥y¶´°ü†²Ž+™•¬"ÕÑr<®$¢K’…mF8.(ckžŒ|¦¶™¬tv'çëÍã‚œÐnø‰5ÜQ‘Hnt(a½.GÒøøÆ,T²Ð"Qºê­™¢S>ŒM²í
-Šž“ËuËÿÖñÝšfþü}ÿJUYÉ8 ,1Êìê.Ðz0ŒéÑT
-ïS±¾¨
-KuK°¹DÏR f›È³¨ÚÝè'üÙþ´"ÜãÆ„ò?©EŸ§‡/B'JŠTÂß$„ø¡æ—m‰ˆfŸG£@Dû\ýËA ˜º™‡·‡ŽŠ[°äÛýO]¹ÛÄå*1 fª8‘ëú@# lèô|S‚‡çŸ=ZéW=‹¦,
-Ž©žs
-Î…q&LÝ;\ü_¿ÜÀL!¢ä®±v¤?ÿY
-v¢ò17!E´´ñ÷VB6”ãÅâû¦õÂ¥v¹åS‚!éâ•}Ñ0 E¹
-eIŒä`*˜Õ™ûYñŽ3~¯ùÖ[uôƒýÕ)ãY¤²ñ °“œ¦À¹ò9F;é%÷¥ƒ¿W²D¿ès
-!ÀàU ‰üáþ¼„5ƒ(‹ê”ÅŠl:¡i1ÅÛÖÏňéꤸtͼ„MÈŸº}W‘OolHü¾u™3³H¯¾Ë9>Ι–íˆ¤¿¦MÍÈ“IÀ<hG• I?…„Qíêj3é)ª¦Iôâ-¬PÆ-¥iW-¨”‡¼´ÛcŒš\ùP, Kv¯ìôä°}üѳ¨p¡~zÑÌ„Eý¨kK”sS€èó¾·/ÆÌ4¬‚9i}_ü¢ ç5Ϛߥèórek° ¡O¼`Y‘ûÏŠ: '—éÁ´X˜å=„–Ñí¾b#¤û–öü¤[VøQ?˃TÇWÓ0fº{
-4°õms¾<Mk¡Ï ÏÁ0Èž›å¹¾âÁ꣆¸éS‚ï/< pBE‚Á]<»uúYx^ ;Ð>´¾3ÏÏ¢gê Š^S§Jh0+PÄ›QŒ¡¤Òâ)³»o¸x‰1CÂ
-‚Ì·Ç–¬¯¡…çMÉ{4¨lÒ¼®% Šg±îFÒø>ä<E¯Š‹$©SÊŒªãc~†×}«H{5¦.YM‹`î‰P°îȼJ”¾$.LØ8Þ[Kj±@%\?
-‘@éÄ 7|Á$PN‘ºÙ1P)à?m— Ä©=Ü™ G¸ýæ3çQ$ˆÓB‡çzsDSÉ$åqKðÕ•ŸµIÀ‘i réÍ(_ü㯨¨›øm:{1C¦Gƒ'ctÝ‚3`åD°…ŸþêÒ5ª9Å­›}jÔ HÙÐ{xŒÄ¹ù¯zK°ö]<zN£Dåíæ062§œŒ>üY@ƒÃXEÍüNŸEÁZ<¯ûVÑ˪ƈ):k´CŒ8‘¾v½"\2° Œlëé-NXfg]ž5ªÀ-ó0¨q;æÁ\®fÓ+˜Ìf³Àº&„¶@ÍÆg£h*Á¤GEŸoŠÔiþ‘+Q¢oúÅ›ˆÄ‚'óØJ”(G´ÆVŒkrp7Ø– °ÚYeÙM\l»€þâsô]z ü¯o‹‘H‹™V]4\½A4ñ«1#„´ž:Ñaê÷1|P“Í&ÏX®¤jêÕŠp京8.Ço‚  ^®Úyz4åÒ‰"1.ÝD€äOkã4úð’¶É^ˆ5}o§„‡†0‹gJqOcwZê–0Â"Ä‹cÙoê3,RÖ£Ð2˘í»RìÛ¢P¤O‡1ºí|óˆ–AZ&£U½ç|:
-3ÎèÆL•S¿°z8¢ë›:?™ôŽU¬Þb~Ó4ù« ë OI_öVpÏÎêWŒ“ðc¼oú°”™Wß›Vbz*âyŸ%¸Gœä’®Cƒ1!7êÊ9… Ôˆg_*þY7H]ÿþ‡ëò‡:Lj{Ö§Z›é-e±1b&±¬ìO
-É è盢"º•p2سHù[¼ Sú·•tÀ„oì%Ípý
-tÊOzåW¹ÅP¥ÆwuвCÄCW&Þ„†îM†(É—xT½ðÍúeùH¦Nê¿àõˆVOœâÜûš)Žÿ¬ë” !lgmù¾nàCµ:cøUjmtl´ÿ/w$;ŽŠ®€{ -ãEþ?æ]º³ÅxMsö?çY’X…7Ý!J¡h¢+3‹û©ç>Ëø´a›Êøî]
-©†?4µÏ"<ó»ß¿0tá#>èZ˧0û%Rþ_~+x‘¢·#öÍ™å`yqû’½Ðà
-è¯ü¢æO‡ÿDSc^RÊx0]R=ÖgÞTþí˜ëã¾âQE¥:ÌX7‰X%v­ðG:Qº}ã¸`n«vS°~p2¬Åt™O¿Ü
-[IäÊþpá.ﮌ—®tPµxÅâ…$¤´Ä¾ã<]b
-¾ÓÄ„4Bd /³_]*¦ÓV/oµ_(&Î ªÊθæP‚!D~:ÒÂG%¿Mêõ()‰˜ô8¼ #72Vü(¸ž=ƒIZÓeü¤{s2Ía¹zT¢ç[±±‘êVâ ØUy–-µ„ßY=‹V6\z…ÕÛmžø ^ÀøÖœh~ïð§+å›Ç :“"ÞÀGÔ&š†¦Ë›• ŠHŒJV¼¦55ÑÀÜÈÄj÷m¢ºR6[o0ö4ݲ¿G(д0{dô|ˆ€p›eŸ‰cã8# á¡h“Yƒ ‹çétW3   h¬+ÊÔ­¤Áx”b¢£Cú,¬î»ï \E^<sn#iÛÚ˜š’‰—ç$ éHîN)©ÄÊ*)7òWÍDöÐ@$à¼zá0Ù ÿ‡]eK¸_\J=EøŠÖÊ2ºèðqûkh/Œ·?VR˜
-‹vov+ñ—7Y³¥êo¿3’Œá"ºx"¼?Ë¥ÊaIk&9bä/ÛÓŸE7
-¶vÊ?b_ÏWLŠáE²jõðTy|O®ùx/À†ëD›Yíߢ"¬žÜ¶ˆ{AoŠJÚ,ñRê˜~üaén×ãNù¶dñá÷™
-ƒÀs_/'ŒÉ¤1¼“Wñ@²˜èìOgU‚È:æïñÙâgΤrÈbƺ¢,j£„uĸiïÞ¥¿H¡CKÿJ#7vŸ†á½ÃÞDà»u8*ùmR~Ä?¯(Ú0ÇìM’¾ÁÁç~…EÜ\ªÏê”:„w€‰Ô2YuéJ¿å1.…e#hAÈfœÇ(Ò_ÒEÅêQÓã¶ÔN6gÍ(G=ÿŒc‚*›EÜšHøˆÛÂÔžj†—™Æt£aFê~2)P˜^v¹^h¾5g*|‘Øô<Ã?*nƒ::p¯ùçØ?¢’FD!=¡1C¿Êý¶ µVv˜ÐÂWw’Åè`^^çÕ÷î)&@J˜­³Á÷ Üýÿs·Šx¯Ÿ!å`m|… µƒ«€Mõq2×uåŒÇƒ„ql³Üؘ5lÌsSÔÞ¤1‘|FKbÌ2åûõÉZš`Q†åƒ¹2/¯}l¡¸HÿÙg{É’b4¼Q9ä„¿œ°ÅQQ™9f§Ìëú³FoÊ—ãB,ƒÁàóöTd…;<£ …ÉÞlÚk}uNø1ó×zööÕĈŒU¿\ôu;Î4Hkãÿiô˜¬ÞÓ
-–Ø[$Á¢;8¿ÔB2`´ko ÈÜ!¥4 ßæÏÂç´õ†š „ñQRELM ¯Ë”‘Xð¢8ÌG&Î`·•èéd8Æ8®£˜©xaç¨Oô·3Jâ ôÜóÁdÇ}áèP™j`‹Š$öNãJ9”(UÊ©Îrq]êiâÜe?­„à×±„ÈÀ%8³qP…¥”iþ´£ºbNÕúõ£'}e%à5²}§‰ƒ0Ê+§«a‚ì|[VRÜ®WÏA‰\H’%OT÷ïÔýfb»Î¯-ƒº°Ê°H·ŠÙÉ;8y
-ÎeÀI†#˜åÔv50^|¦ÁI
-;ßA/J’÷€D%xfºˆbV® bS1˜Q",ÀìéÖ8ß‘È­BÓ2f%Ù÷Ûœ‰2¼Ãõ’—,̤ a³“´ymHkÅé¬2æ'W‚¢ŸoŠJ›p KNþËð‡âVôÚ&SxWlßU¢Å`Å°Í­\.«6ºbÙ²ê '9íô‡<!Ç; eÖÀÈä™ûî©QàŸH=ׄRŸÁRÊFp3¿™Ö'SÿqÄÏJ‘ÑO‹ÄÄR€*ŽúçHN|j̵_4åH4#‡‡d+¡A‹¬‹ÝXç(f®DšÌ<9@x((TVÍG”°ßæì…RûçbÌGhó¸ÎBÛ›ÔË\iºäY‡µ,¬ª#Åfÿ,
-ÐX§ùØ=ö8æ†siZâOK#¶\0Šþô;ªoÑÃACDSÚaôˆfÿPƒÙ„©³¢f¢‡JðŒ+kéȺä¦Éx u½Z >F5J;¢M¨ ¢ZH}~ÒÆ#!€\gžÀªÐ™,?YøÌD£:ñ®çQ/oNûY,Ο»zIî´¡YœðQ‰[€¤™›gTÄx’^ÎÂGÔñ¥¢ ¾`6)î>ȸ)ŠA#„GÙr_Š)g)ìyL#C)µ’ônÆš•5a;ùç¸|l†»LæÔ|ÿDS4q¹²‰l“ÀÎéuØw€dE ئko ]¬X‘“tdðÜ –êÜæVâóâ³Ð_Ù¦ÐÑw†¸DS§onD¸Íøãå’×ÃÐxYQÿÏØÓì"S{ÿÓJºm»»6ð
-9¥°Ç¤1L]” VÁLéQ߈¨ô˜ù*[ÉZ{ÛššÙY<iÎæt=”H„KÔ‹ãB$$åøt c­\
-ô#Þr%è[Æ‘®”CÎRùÜêqQ,’ã…õ*¹|~êû9¤¸Í·“l{ħE¸¬ejgƒ°ÅV펄ȀȰGÖ¶{|
-Õ!1>´#ä‡Sð
-Fx-;9®< «¹by]ÙÚÛÆrGÒ·—è@wf©Ó:ª)ë¯A‡|üܯ@w²pž®;­UJwìSFÎI'òˆ½G¾¯
-(œG+Baà;ɾ̸x0˜&UU}
-…”óÏò¢‡ô‰åŸzñ†¡%/Û BK›üvܺ•·z!"Lƒ”¡¦Ö\ó-®û§øe!ÄJíÛÅFHS„°D‰4¤èÁ¾qðg..5ôžúµ­u£·ƒ€~8ˆ5Dé´Qšð{<ªë²pωV¸PÒjQBj1•v´êIHf¡T(é+.^اÖ3$hÏ Ž,;e­ëSY !AÚÛ˜D‡Jù¨°@àmë.7¼WjµÃvYÒÛhëxÎâS„¥Éü¶/¥fK^ÔÂ!0}‚QW»
-eÇ F8±Ÿ¡+±ÈñÅ@-fÍ
-ØMÊê†Çò—ö/ž5¯‰`¡Ëk( Ä7ÒðB÷HËiÊ¡ÅØ(‚C
-Ã2y>ŒwÎ0П,­
-Ò‘2 zFØX|·LùÃyA“ŸM—É¢E
-Ã8-3\"/9£Å¤¢ ƒ  Î"@€y4â³Kˆ‹ÏÂ"•íÆËgSMqR VH!±G´¥HÊ„ÔéϵŒš…Ò˜&LRPâ΋Ç@Ÿ€¤uè9²ÃD½()ÈLÈv´±ð²©ÈeEoFZ„cSÄÆRtçA¸#'t©Â­:_ ûÏ¡%ƒTÄûwP¶LßoY¦ƒ2±äñ~Ê|ìÕ=¿e9 pYTšì‡Dóa-£üø^ÝŽ oYa®ØEGaXÑÙÔÑÒl4k0ó¸ ýæ³D*ü2È!vÕ‰ .‡»¼‹ë#“‰·¸©ãj²2$´fœ *ýÈš}cÇ#¨B*¯­ñ ¹ mÅY d´u2+Šõi:¤,¹)ÃUjæO¿§tF)‰z¨–ãD6+C:ŽBþØùG!´*'“•K>ÃTG›þC„CÇiþ ¥¤fñs²pá2 Ÿž—$ žFÀ/ö¥ÉÁÈ(¡z¥(Ÿx«äÈ0;F±·ñÙ}3\ªÏÑÔ}nÿÒÔâ‡Ü}b‹”¬W÷fZbØAr4Ô‰ÖÅ°ŸdãW  ½”Äñb †ËÖèq
-b 2Rê D¨uÊ
-H‰”—Anœ¹„O;ô¦A‘)­½Í-¼•sÿíû(©ðÿ«aÉ8íjI$‹Åâ?ÖÚSEÍ«öê¥?´ú³†E©¡]m<þ¹AþüJ{¯•øÿ“ˆ^KãÍ,|AŠ÷&e×(2z×áU¢”¶ ÂGÜ£k›7ųX“êÒ[Ý -Q‹¸6«„p^mµX-e^UŸCj©Ýù¬/ˆÁWxß\à¥Òø†E<>æUaS‘÷yi½4Õ!fýñ9A•ïÔjEú+ôæ%L´s¸ÏËx jã³¢.ªu­ät&¹òbîjÞˆ_ÿã®úLP´b^J$LŸ¦ÒÃÕ½éxü ®Í8
-Ã[KJÍjpP0©«/?³îÚƒwCÌìù‹F.Ú/HSJ1š‰Ç‰b@z„bâûªoxø{ÒUž>Ü > äI9þNÐ(BxÁ÷ÅŽÒQžÒM=
-†"ùÓ16híÉ$ãuâ2è-FFŸæd…OLê†ð‰@d%fD€ ¶02ðá‘5ó‘S(æ9…Y’
-¤oAš¢€$9?BŒ9v‚6bóª^ 2²˜"ªôˆu}œžŒµqŽÔˆcè(ŠEˆª·ú5…(
-oVƒ“}êû­7!¸—ó (°‚øF6¡Ï¡ÐûÊèÝê~ŒÓÉ$ÖÅP:E™m4¤® õävu_Õ™Òœñš7üL2‘ÍÉÀ{¿(Ú
-ëÓTøTÒ{ßÙS˜P 7
-†Æ¦Ù 0PÊc=/Õžjeq4ÂÞœSÈœ (¡­¾ê@Á™U8¡2!’ÓŠ¶¦[û+>e@è&iŠ:Åbý§7!“ bÛRàÔ€¿"öU4gmA Ò:Gµ õ4™ñÝžwÌÀ: dô–ùnÏ+¨N•Ô4@dÝ5¨Â_£ê6„éx„晑óÈ‘]ŸÊºD‡«<ùWQº¯®ßòU2õuóÇ©·‰÷íäœ~Ð{%}d5 þÁñ0`­=`–ѽí î¶è
-±Œ±GÉÆCT©*³gY‹³£¹z±Ö žCõ˜ãäK­öU7‡ôy{œ_S±Ã˜Gbiþ&*œž•îÇQî«®Ù‘\ÎrXJÚÌÇ)ÇÌsÇò1Sr¬Õ²®ºÖüvÎ9·×œx‹êÄddjKéhs?:ä“ïàEß@¾ÔêãÕ~Ìü6r¸¬àÊA½FÓ¨ü‰úN9î ûšw¸îúüÉ›–rrIw×sÌmKÊ„$Ó-­Î|ya\˜±åGíÍ£øˆ"ÊôÝ߀²pt îù¬Ä b"²¥5.í Ò‘žÁÛ˜Ëm;þÅ2“ã°.P†i®¨°âµEÜNê9Æœw¥ƒo@ñÔÊÎ)¹îÖ7)
-YJ=Æ;¾<få%*Ë r(~¤=(üq¬Ö¥=VŽ1×X,ì¬ÝCH4v“(HÛŠª¥ÅÎù† ÐDZ´ÚÎð>þÁÌ-ÈŠ_BJq÷öæFÌmÅÉû~2Ë]˜äNS&D(ŒÓ$§-Ô i¬rý\-gžTÛOVNa g÷f
-0wjËÆ}KG®hœë~„\Húñë:ÐÝP*¨ “X.ûA‡¼_÷#ÐEÎÝu-‰Ád ­0%Îþô„ùj!„‹¦·“ûâ÷­"œø5ÈùÆ›jú&<QŠk¯Go
-ÅBózåä)à`XSáÏ&ÐÝ›*iS
-’àÖßœ#­ÞR•ÛŽ¯)ÏÑÓ–äþåo¼i‚”e‘Ûp€~ÌNÉ}’îfÖñc‚O«7=‚¾zÓãk¾zÓcTWwÈÎÕ r|õ”‡Zݽé¡æ‡s®Ì9¼æÎÀCT5¦§FøêK¿m§Ýtô.éæAá~¶¥Y‡
-ÏR˜‰êý¹ƒzq¿îîH¾ÓÒ‹$o àDf¯!()ùh³&þNP¦µêà?ñÃüœ ,)¶­°JÅ*ÍӢ𦴖Áô‚™#MRÔÓH¢Î·,_YÇB]K'’¦Õ39üË9˜MüiÎìD¼^ƒí €Ê ‚‹¤·dÆ&¼f;9SIo‹•Ï«âÙ¢Aü–ÛÍËÔHîg2;%ôò.c$BsŠó˜´¨Bx“NÞ$Ä šKzzÓr2@”žÌ"ýsþ@¹tã7Ìû¶Âb” ¦/U[S nJ…Ìó¾"Ÿë*ö‰ìl #ŸÈ
-šÙm'y6»¡Ÿ;ò«´
-î*a|d·r *ƒ
-‡,©}/›AOCÁ:gÿn+ü&ùÿ”—Ir$·DOÐwà Ê0ëÖ²oÁ-yÿ­že]™‘bÉLÿ›H9d >”qsÄR⨻ÆÌ(¿šÙÒÏ·ñ,ZXëYLØÔtï±`ÃX颼¹Ö3P„0³̬ÉÁ‰~8 wÏartöç¿É™«­AFÙAäuFº—äÅø#Îp0lÅÙîY \RPM©Iµs`ŤbÂãûÖ~òĤ(² d<¥E u­bÙy‹¶ŸWP¶ý¬Ú¥Äê}¹ "eeñ†ßæ=ùLíÓ‡öpŠ âv²8f–1§½3TpˆÎ朇¦û'J;d Í éªFÞ|²½0 ËÉ’&ñ@6€6l0ÏÞ¯™kŘŒ´¦8BvpsÄ»üø{BZ1Ûä¯ d›!?þ_ES¿+(#ób¡¬£ ¤/#÷'Æç€XE6±OŒPÞ×wýúzGEMl#Â
-è1º_óˆëX6XÂ5>TƒL{ö¬‹Ö§_¦ K
-¢ÚüF~©1~Ë©RÚù²'mñaÁÐÜÜ¿Kˆ¶ŠMíº
-Á_ ÕMšÇUÿ=Ãb¹`㎣¼šEè‡ãý[,¿]P’ YpýZAE6¨;e;·2£#J2Ý|úUdÇñŠBËu#æ¤Õ yx­Æ`m^¾YF
-Š0¢•
-³ÃD˾‰‘Ñtå-¤J›ˆŽa‹0Ö;ë@°µüC¥„¥>¹(ñéÌ^DuÂ.‘x‰h+£±«„­ÌoÙNÛ0U\FOeÙ$]‰<tœ ;†’ÈÍ$ùƒM l?vÞ B÷øhØt75?d §ÖJrÎv„É"bìh=ÌPПP¢Í)>ùZ ¢@Ê•ƒcñYìû;åê©à„¨ÕdÌó¦j%š¦…Jà p’lY‡W“ÃeŸÖ ¾ˆáã{Û!
-ŒÜ$ÿÁ‰’K Ô çšK†æÜfýØôßS *£>´vÁ[¢oë<Hëõé_—H]£’Q~ó¹¯7ûàAÅ L?é‡_ çH<LЗ/ BBŠ´w¶ãÕ €нÉBXöŽ%bn“‚a·nxÒg¦!H¿ùý˱DÊ­¨FÓå_.è2Œz1^$“»B>úÚF’…c}9d‹™ò»üÔd`ž½ç¡Æhðítö”WGiLpò´ÅiýU£4eÜš$ôÏ=g"¢MK©ó©QÅD€ Â2¸6²±¾*À—D±Ü±ƒ)ž.‡j–;ú“ìœN4ã“èt¬WA¡D¥¬¡qs˜ÏHÛŸÀ-¥É³÷¼þ
-:ùŸ:ÞdÙã ž6WÜã6OQ Ø?Š;ߪš{ÀØmÒ”I©N’×V j܈F#,Sß1+ wbŠ·‡GR¡Š&[ÛáÏšØOþn﬛!7š×dðR}F¼z5˜SÂûyùÍ9ˆâÐ=¤¥Ãö·¡¥=.6ÄþÐñÃÝ0Å3Y/¨{2Ô\––²·q¬ºŠ)~ÎÅÚžn˜¥ŒÉÝzÉôA{P á!%æ¥"pÑóž vC<¸­l…|CM‹Y7ËãZŠT4ý"bÏ<µ]Ef?p`IYÒõ$?Óé3†Ì;™‹,›:ª Ð90/Ý‘Šz‰{‡2Cò#a€!á3†¨gš{„@8³Mû{w3aœéæΙ:ˆeƒWs¯î9Öâ‘xwº¡0H<~ĸê
-Ð%ê®"+̨Ja¯¡P†Šd!™j7Í9~ …NsÎm8§B§—XxŠs*tÇï5ºs*üyŒŸ©hÉMŒ] 7©ÐS!›ÙÈÔÜT„G±‰*t<òÓ)¢†¡C AòR¡jM;« ápåTƒþùSŸr“
-Q0…‰¢‡»çT<bú:½TèNó9: kà4ñ»"pFm¼ º>]߆tåM*³Šgá¤|“
-U
-Eó6|¾¶ãš
-µe TÓÅ8î9 f+˦r|üK*Ô¡ÔÝò® 5¬Ð ëÍ?Õ…ÎÈŸc¡»:çXøó~i9ô¡øÓ
-§db½o¦¯\7l =†­2#„ ©f
-½?ÀúC^%ÆhçY^$>‡±×ÇÜ«¼V´ÌƒYž¢ð(îDW±Q )“ÊAsÞœƒT•0æÔÝ×
-¢öhŠÜ{êy‘øõºèë7‰9✲ 2OÁŸ‘çÅrééŠï`§s½y»Àü ­xýÐ]®kÜÝ!IjèK‹@±'–™êíÔ‰o¦?¨Ìðß„h<H9Ýæ6äpªÔ%ø³ >Fÿ\¶µ/®¿w0²ˆ#Ç !̸l™.|ʶ¹`‹æÛOœzâÌ(k|ÑÉ‚6ôXiñ‘@¤&r nóÉþ¶÷BtbVòIs8ÙO)oJ×XÉè¦ù`œàêƒAÉ‹IûuT‘(Æäþj_ÌR"‰•¤òÒM±‚Šõû—zQ¼¯D骂b¶Ëð£Ã³×{ð˲U6"5ƒp)Ƨc¶ë®xD÷§—j¶›Ìz$‰H^Ó,b'ìÈ“2Te‘ vtƒ±È«È­Óò¨Àê V7é-âÃ\Üsjøå-×¹q>é:—Ò8ƒ~ª¯ƒxiÓçëräØ
-^âVÖ1‚&"7ß
-¤¯”ð6¥ ¡÷ÝÃmÙË
-s¶…½ÈÜÁ›³³öCh• eÊ׈c*!E’,ì%(¸
-†,õ¡äo߈AÓ``¤õb‚ #Ô2øÎU pÄsJŠ_ évclBSÂ\rUû½èàV¸gg‚ 0U&ùnÑÁÒ°ŒÉÅÂ×E·ƒ :}I(€ü‡¿v™ô•ó¸ÌXš-±ÿ2#r0k âiGr¢‚”)\ŽõFr´w3•\¸à‹uØÃJ–żì#¸¡¤»™¨˜îˆ@X±ÓÿGáo/§ìFFdª »òBrNEÉäg  „ç¡n¨Qœm¨i3 š¼|ó’%p¬hvô&¦€„j?9á£à®Io“rxÊ],§;E! –q·6Â"Ð/Ä >ÙD²Å»Âfú}(a«‰ § ÿÔr=©.¤²vMG…ˆÅbŠQ^‚ݧ{¢è8 <=¤( ǽS(ÁC
-·}¼¶Â7ã8Ø”ñ9øæ?ï?øXâ&â¢À€àž},mH†ÃË1qš51O • ºÛÙ°„°FßHm’7ÜœþPLà Ã1ä dÅZT¦ÆÕ/¬èăõü8£oáãð‡|ÇVlõŽ»,ÒeÆô˜ Šú"¿Ü‹ \=äÉu–Εßš†'.-2ÖƒcÃM(•ÈUcÒ§ˆg¬ð\ËÛšÅÑž «Q%ÁŠj3†2Û¯„Òó¡w;
-*=%qæÆÃÔu*ÙˆŸ„Œ)®+ó(Ì‚¡_“ÃÍõt˜;šŸîtD¼1Z\TèyKke”Ùx’ïÔÜi^{A˜C€×]4,ŒÖ©ünÌ qIv²µk¥Ï~—ƒà•plg£šÞ³ð BÉ'šßM‡¾ ´ÈòY ÀEŸ2mÖ.IÁâ Fv%ë†TEÇyä‹ÁÈC.å4'˜"´Nw3QYÅIZÖ|Î-¶ˆ± šc'Ôl¡¹?ÎCƒÃêòÕÂø}9Y®;“
-}%Žãdͪa_âÞntÊ5DQéâ;,¹kO8/ÃÂLæ
-.…îi5ošJ=vó©d ƒ}9ôìöbh…á¢^¾³1„šÛgd E©\ ‘™$É綋£ˆVÈžÕòkàk™òŠ¹òe,(
-5°-ÒÏSˆ~,«‰<°2=¸„ï S¸ú¾•è†>HY‚Ø/hŠpƱ¼ÄficíW ã$ p«±¢bîPq±UGÚ ºIq}¦*gã­Àl0¢"åÖÖ.™Y
-LÌ)èZŠÇ§Iᵄ…mĤÔð¸˜+|e|Ø3¥ìXpªûÚrÁ¼T]%\ÇŠ!Ã
-U
--aY…)ãe«ó³ªÞÌ&5è‡üÂ('?hôíG¬ìÅ:I*‚!#RÅV4r¸¡.Ë)_£ËÓ \qmÚˆŒÊª—¸,-!a˱7da3Ï­ä&ñ2œT"ÌÎàÆrj/Jš±éÍé‘£I Gf¦Š>v‘;ŽªÌ+)“™|àÞÝsÍ•W$Kñý4hmmK
-½ÏyµßWOâ> R„막Ùf«CÃK´”ÓßÄ9Ö¥Ãç±ÏáS<+?˜¤fv^G{3uÌ ('NÓê›lÖ‡Ld’°²Ñ+¸iÀ\³GüÔ„ctæžúõ:À˜ãqSÛêqw™X4‰ÏÜãEÉ'·ú§›Z¨•Ë-™ì¶½8Ÿ\‹­ƒœæ6µ§"TJ‚ÁÜr·8†9ÅJÚ.Áá2õÌäp—çIŽ–#*»D\Èñmû)1þXÀ+:áꚤ8g_§nÐãbâwb´«'®AرÞ%{+ô‚ä Á·uð"•1©O?Ÿ†¨eã€ëæãí(b $âߎ£Th_ž)m~{âSɧVíîE,2}/Îõ8ª8Â.ù|q'4Šdþ™ÐØéùm(â2•ŠÞ§NÍlWÞÈÇN=•ìN=wü°Î3n§¹ãïv«Ž™ïÅ4jtûã< |P¾í®iߘªkø䎽_„§àÿ)ÿÒ¦"ˆÏ½(à€°†ÐÙ¡èDZàÊFJüG]^tÛí©æã'úÁ¹ÿøë-=þóÏÛÿ¾åÇß–è\"È˔𭚤¬GcNhüÏEl5&,F%ß\Hr2‘*QœQ9#mU Â(WÇéf*»¤0JMÑrxÜZP* ubVfŠuXQäP|P‚Kj᫤/úÓpp˜•teAì¡ÏΡķ⹱pŒÀ¯^f`BÁÖ•·v­Óa{&GEJ()ZÓ‰x8¼)Q‚ãáɃø”?ßNEL™Ž®bƇŠ°Lõî†ø€¼Ç1g¯¦kM&$ÁÒ%DJ|½’T=^üs…ßûö~·UnMà(E‘lᾚ›)NÑ2lH v:€ÊÀÀ˸—¸NÐƃÄVðXsw‘‡lPìôŒþ´·òµå†&ÇzʸxõÁ’ñ‡¢ªañ»¥sÁIƇõ-^
-i«ñУ”àTþ§ t-f#ëaNä2M ›g€Kõnp'R,p¿„0¦ù\ÂÙQ"\6µ|=[CÙ‹4 5þŒ•QV¯é]ÖÂ:²s¦¾¥1E”Ъ2¬Ó¯ã
- µĨçÓGÒ‘Úê±Öï‡þ×KÓ„BdcŒØƒÇ~Ü~©iúy·Õej6Bj¬õ\"p¼’Wþ:Ï5ò‘'×z= ‚îhÿa‡Ú€6øHQ¼Ëµòœd…§+É£Ï-ê1/ؤe‰í½-9&¸†]XÙ"–DÊUʯÿø¢èßhte¾¡G Ýs²yCe%¶blµ§ŸÇ9*çñ®†…rHºæj|Du~äa7ÌšÏØÂ
-ˆW–|_
-Ðzö5*¾Qm©uå;O‘¯$§?So®Þ›ß7ÿËcH@¨ñ©8»mÏ"ïãC‡u¿¶(ÍuÆ€M·uëçõ9†ÁÐÕSs€gnL4ב GE ²¬OEˆ…/ðƒ8¯Š>Y“U‹ÿ´ˆXû‹-¬5¸Xé‹Ã
-ÏT"kg=[ìÛ~LÑàtk¹ãX®;G’@þuoíaûX¸“Uú¸jz8õô—÷±!²øHh¿¦Lé9ýsÍ¿ÒÐÀ Ót‹|Û¢_«Š
-ðÅFƉÀ¿8†LXd`—ßËXÛ‰…¶0!±Æ¥ž?eP£âƒÉÿy<ŸÂxLrtÒ´ó§ÁAßuž×à0Hâ-‚æþl•Öì;”Pæƒ^Pƒ¯ƒ·AÖ€÷àâßû§›Â¾÷sÎàX[3Íãûîdž?
-·Í¢¸³2~¹Ú5ë*«Š.<úŠÏ¥¡Ý&.:žÏ1ÅZçNì¹€<ë Ü‘Ùî’ä¤O–?“Qü¨Ç±ÿHQK‡Lßûßÿzd«/ l,¢$pÕýÜ­-6]‰Ë©,bH÷’1Ú¬‚±ºý'«sn¼·rÊ&/ÙÕüX„”\R•_1ê½´UnRsk/ê;u;WÇ´¬‘LÂmý Nÿ¾LKë2Jøª·@Ù+ï½:§{˜Ji/sÓý²‹
-×ÑR‚èú…D¶×à€;®Ž‘8}UôÉ;+¢”ÕßÀèlk¾**A†ÙŽPi±,
-24Þn?/ó
-ÛÃñïãÙ F˜µ ai"[ÜîXJˆ¦²Å¬íiÊV) árÇžõu†;†TsdaŒ#óÓÕü2vÖÁ?ú<€/*Ƈ|6zèq[Ÿ߸r\4aqoänÐr
-Ä-âþ‚ÇoD‡ÊYrn$tX)WX"ð78~£¤™ø)ï°ØköÏ(*¦“­½úñm5žkA8èx­îÆH/BÊfšÖú(añ"ÓÓ6ýZM#8[¤üÁ<IñN’G¦©§Jæž1{œÕ¦Ž §úàØò~öÉ®R¦ýP2:ÍÏunÅÊùµ=O8Xåìéük‡»¼$ÎB…ˆ–̆±¿ï¾O0a5$Ç|‰ d¿x›¢Ëûrt­ íÞÇ1zÒQX„ýœ±Ãö\†º~U’!H¤Fý|çS ¸ÇosÁBN  ©a]ÜZ>‡ó9%%ÜN—IPÄþÈdLûÖ“{cñæFx ª8ÇBÎx—dÇÔêV{Ω¸¥ÞÁ÷SRÛéʈ©ÝÉÜC£Ùc}%knúPôß/ŠhWϵëQ‚eÑfvV2ój¤VÓßavÛ§NÝž…‚”;%د À›¿^WÞr—Øñâد³é‰ÓÖH ÐŒtÈÄÑYVB¢cÓ¤fEo"‹ÑRkw\©ÚÎEɘ„…‰]¸íèq¬Ï9¨Dg'Î÷.D3‘™„+iîg‘ZÏ7é ÃÀ÷¹0…AØÝß
-¼Î2ÞÌÚÃL`vF0p›¨ØBÙº__””ýÐ’ËOïä­ ÜUŠª×¢æǺƉ.Ü’®êÀº•‹„ÞåþécjVàK•¹"`í-e>‰dºÑ’w=kuï¼&ýÙÆt”Öñø÷JKq›¯ÍaZKàÇ.×ÓêNÏ ¯½ÍÛaApáÚö¹U¬iø„)Vf¶é…áê’Tzu”éKg¹Vñ§dãÏŽEWIë¨pcïî8üeŒBûú]u,T5AÁ2@ß])a"®ždÁÎSŽ“C¬ä‰çSì:I,`"m…P¢–ßZ˜Ì“á­¯Gk!ˆKJ%¼žÍÛc
-¦W†ª°(`C>à,Šâ‡üÌÇ.9Ë"v
-Jö
-‹«¢Ïó¾#tžqä÷ X}Jš°¡c‘Cv&O
->;¹R¨Fg¦Ò–'Ý[ÎÞdå®mu§ÿ椽è€ÅÌMâY¹Ä"ÍYÁãFT•!bÇ´ËT ƒË#D7oÞÍÞ'@Œc*UsPJJntbÎY”º?%çaE²”çÈ´Š˜+¶ØYç3Ê¡ÚäNÞµ Ç®{Б<OWBÖËFA‰}JôWuaº%ãK£Ëä>æ»®Îa?Aâöù(P¡CטÑRo^ã¬÷Â4‰©Ñ³eQt†
-hMÁîY“-ÁÀœúSd¸lYÏ’µ "/òKhÔÔcQ¤$^ÐðÁ1ï¼UèNAFqà–ÖHÞ3Λá—P£1O{ÒôŸÒfQ(õ@kP?ι¤ÓTë¾MJÍ,tñ¶qIƒe ùÜSrmÕϤ>"í9˜OdcÞ-tå
-sѬƒœ°)P×Xöt¾TvÆn¹?~¿]c9†Ù¯H/ï×ì7£Û“-‡”¢ÆÃLÖg‘錑[бn>ÔœÇK½\מ€hw¿Ý(Ÿ„†åËu”{Qb"ú#jÖëXŸÃSíæjèõ§C"ÎWQ·#ñ¶t‹5Œ(&×Å¡Y,Š>“Ýö=Bbû¡¹}AˆŸk>ÏËOâèêéyͯŠ>ÝH;ä«+x·äª×ßCX°oy…å_îùŽZqÆ®“ÃVÆ8³ˆ‰ãÉúÒ²d¦Ž`rk(reŒƒ ßD`v´¿3ÝFB¬qpõÛ`‥lW¢Æó¥ß€0Pýåõ’›7®DxÙƒW`ˆ’¨Ç8=Ì.2Mö?½ß¡(ÖO#¾4v™"«ê¼ÊÛ?¶ýÝwt©ö|ã’3D5£Ö¿_éêzÕþãM ¯1ùI²pÇÕŸ)aí›3^C±ÝA×`‰ÏaÒÝ\ÑæÝGúq®Ý¯çÃ(¾x¿Š3@µÏᇫÂë÷ð˜ WqXŽ„Ÿ[×Ë„>J|ˆ¡ÈxS\Ö<:‡qY <æ&O»JÒ˜˜uþ¥¶’}jÌO«jííC6x?îf†ŒQÊæ5ê<µ0cÇEQÑ$
-Ÿ+yWLgÍÎû10&J2±ÊÓ·­›k§†‘§xœëéÛ\´þÁ>þl 7ÃS`éú„‹DÜŽ拃œãzZ“uwͪ`ÛcPÒ¦É\z ^?hõó9¯^f°7¯oìß³7ƒ-~vxXòiR¿¿™ k
-º:™^±’¶¯ƒóþ~QÔâ
-ã—x6.b«­§|ÜÄ庅
-WŠ¸ŒP¥q¶œ‘BC,Å•çXr“©™ˆñ9¼›eMt¦G®‰Åeù÷üUJÔb’Çz“R¼OâÆmd»JB ´´%à]E¸¹ÂÙjŸ?Zr°êZé [N›¥cë%Ÿ–óçQÑëš[Wt#Q¹ºœÿGÑxÃÏ}£èAcT=Š­pKÔ˜¸¡¶‘ý›¢Ys‘säSCY¸⪺{£mÔL&H£Ñ.FØ 9nûÆhii¥á/£]Á”°á¿¨´“ˆÙÃàžs„§•í
-îÇÍÆôGD‰¦…SxU¼)çO[ÞþûQwJö[|£”m0Ó¿)ÚN# ñ-ݪ=Š”Èe%ZŒ÷–
-ÏøÃx %¶Ä#“ô–síý¾,sÜÒŸ3
-EyxÅÒ×L› üIùä5çx7>5T<3û7fžõ˜²gT~åŒpêq[„Æà\r·AQ›š‡ÍˆÎ·"¡Q|Q뎢໩NwL‹ ±´M¼mÄÑbÚ}šc%"HQ•T.~Öðm·Nd]n*Z„Ç%q{æ׸ëQª…öØH{{dôâÏËèÊ ’¥Fe|EŸ+&óSƒ=¯§r ªn)€³p µh q´ÔåÝ´Ø/+[Pæˆj Õw<ú‡pº–:±Ä‘oÃsì|ˆ¬v à6Z“¸ÛÉz—¸àÕoB`ÜwK3&ƒbÓfʦ~
-ïB¬P¥Ï1ÖGNX“éز‡ÛÌQxf^“§© ÌÕÏ£"4?‰ž3Ïèè×°Ãß-Òm·DÛq‘¾8ln1/ƒ°!˜-;Áaz9)÷ˆm:†‚Ñ°g¤\‚ßîë@0”dÿ &Ü=ƒ œ{’/ÏdÂePҶ…±˜uóù2>gåÌX Fkêoª H¨Ãrg<º¤«dë%²Ùž¼×Ó¾d·Nt²rOµ¿ielÁ­P˘³íûÚÏ¡ûG^G¨Ã¬5îÆÄgí‹¡•Aè±8ªß'1&‹<׌3'Õ´¿mW+«f¡–hÅÙXM“cŸ¬¿?ðßLÒŤf —Ú¨ÒaN1ãñhÃÚw{÷ÿ1xE3·8Ìæ‰ñmŒFoïGÅBg8ùÃ|75²*°QR²‡©ä‚96uPò;ŸBm'êd]ÊôÅ9¼;¶ãóMඩ>Zi›¾¥"Â:¨“Cè(^ù9aÌûãGFE4âŒ"ƒÖz4øÕwŸ´K%³Ý–oa'ÿªk®[mÒîs2QI²¸ï<(yÞ/£öøYûwë ¯3KÃïn7é–ÀSKÐhÍó×<ô@¡Ð1
-B™E“½ÁYÆ´l¤Çy`D{Ž‰TºPÉ,îè}Īoã›ÀÄJY°y¾tö_[ø+Ëíåyⓧ«
-T(xðÆ×ìê¨Æ¨@ÉàE¾˜MçÔ50@—ýJ·”p±{Ô#®¸\%K$S?ZÔýñc+`GÇõ*Ÿœ«Ä"園4ET-ýÑÏI_¼‘®¯í6H™‚{¾ X%>ÅPHy¡Aóè|¿fâàhŸŽÑm„V>-Fž XŽñ«’lý}ÝYDzͣî,IX5ÛÃã,û ÅÊOƒj_zᬓÙÛz\_z^&D\£à3N‹ýz}Tè<þæ؃ÓýúÔ³9)¢j¾Å¨È ÅáXÉ—«J€<G£z–´­xŽ|pÎsq^n󺀃W½.rºƒ>”ña~{CZÌõñGòŸúyoI<]=nË€ÿ¶ÕYZNÚ®³‡\9(z%ÂÁçE¾s§_w脼BßÉÅv™Ÿ‡ÓúûEQÚy²!sŒü„©‘KÖª—0O;ÙÙÒ+ãVš”g“ý£{ Â{»
-<mI¦Ì’³GyæÈPý[B›8ÒìË+Z·ÛÛœ‰…ÈöH‚+ s‚œýEÝ%>E<õƒïåS¶2>戓œÉé^jeÙQ´Á*:)Øóx 2ö1z:(šCôT¼ä
-mh>f|Ç’Ÿ3q·7Öæoîíù‰ö¯¼Kw
-y3y†_âaçÕ9ˆjÈl{ëK‚§eίM¸3ë$I ÐVÚË"LpJ8ƒ78ô%†QâKh¿%z²ãÁ:ìžÖÒ!4» unÇ9 “a|(¹™n;E“V¦ç@õ²d…¶‡ÇW©
-¼ {ï;ó@}æž¼ØâYZnèKAjqÓÂz–ö&Kiãå8hý6Ã;Ù&äËn˜_”¸ÜFl:·|a¹²‡ûi7mè™e:Çç®EZAüïÙrÇÀÙ¦z¸_oba€M=æE§éfÊF¿È3ŠbpxŒÅO–yžÙ7NDde!0eÄ'EdxÃÁÛ±ï×ü$ïm"¨‘4®w*¶5HwÛöùë¸El®cþd‡EQÚ(M ï~«ë'¶Z5ØPúëL…“:Î(Ø9?é€Ú_£þáù™ù€²ûe@Ü/P'†ã<ø&MT£ ‹Àå–´Í÷2)RÂBì:ozgpáι°©{)aÝJ×Nÿ§Tôl¤ë¶v’T$`ºbèx¿Sä{»^H´ž9§Äú¸Hv =g½k»Â
-½Äj-Ëú,B,1'³Ë…$=½-§¶½ÕIÑ÷Eˆ£^Bn¤ˆ€í£–×Ù¥‘«ö„Øy, 0\ã¨iŠŽ°”\\3ú¤3ç³Kïí¯|é¨vdômÃâÐÍÒ'¦î9f_¨="+ÉF³Yý~æÿ~äz}Û
-KNUY'4ÙááÖ0¥†×cR”쪪nGï}ÃJtöÀæ5%èºÄ@WGˆX<—1g¼¼¿„á8´ÞøÒK¨‚T6œŽÛý{`?~Æ;pËó’}MêÁåˆkœm}‡h¸Ò£ü¼èû½³e–2\HüÝwÙ¹=Á{êÔ),ŽÉK n"®g¹ã¤ Çné±Ù[ßA+˜u2ÇÇ8¾3óÑ0*Š0£,2lÇ‹s˜w?÷2-FEo0D×4VÓŒb"/l–àX³Åkÿ¯¹­îJ_ˆuyL÷E(- Ìç}YŽSräÏÊü]¡öŠ#âê3Ð3v=´bl@ šgEŸê¬Å_-ªÓš´‚m¼(Ò—DYÖyë,Æ-Ǥ]DѶ+Áå&ºãl¥‚F<Úp4‡”XÔæÙ§.µ.OCX”1JÄÀÎN›Í:ó§—Å:xøìy¢„3¢ù礤ãÂ{bMû<÷ù9îOÑØëŸXg[,(–÷Îð¢J«X½§bñkláJî/ÙWZPÁ²?{Naá„}ì!9ýêÎô±UtûkÙ¦Ôb8ðR.¢Þ‚LzÜGÞ݃äôâGŠ¶ÐMàÉÎQDå×hE뼫û¡^|½îeF‚¿'Óðn9ßm– P—vM$þï^¤—´p– g §‹åÎ/10­Î(CE±h}:ûp
-V] "n¿%šSÊ(UÌ­wœS-À^Ö½;žÇ¹¼ .)Á&ì¬0ñ“Nñ:–¸’mfEŸ¬›"X++Uµ°~¹ÈçòHJ$ÞöN‹VSØòÒÜ)%$ˆzs ¾p¿ “j!Ž®¦ÄTŽŒÚìËWÍÞ—¼lOÕéæ`âMñÏ'Ó¾óPóaÐ*iÒ–½Ä’'µ­íåɇ¿Vô!ØxÁeĦ§kØö¡*£¡„! t¨ë„¼ÿ
-LýϺš2þ¾FÅâ1¹Î9©¡5†æ“~ìÃÙà¸DŽyë%K)ÚOëÇ ’
-Cæ\LŠ>ü4º%©j¥ZË<ÌŠ>yì/lé㱋ç ^Rú¸ kH1†kO{²ÏÞc)®m“HÏŸ4þKŠP¿PFsëþT–+ >.A/N—‘ÙÐf<…›BX\QŒP¢'Úâ<™jû›sh?ÀW Ó–Aô<w¶¸—øO»X¹ÜÁ­Fjök–5#™½eu h·ÔéöÖÿ~Æ!µ'½+úÑÛ³rÊê0H½&E®Nà{Ýú^‚pán #²¥oS”ÆEG¸ Ý¶ø¤²¿¥?HiucÍíû]Äpøs«ÊÁäœ\9ì»<äýl˜ø £tøE ‹ ÑØlÃþýSŸŠ4ñìÑÇòÖûS)~±gmŒ¢ä=,^æš’Œ¼’Åè™)îŸâ-wN”¨–GQk2çá[ÎmÍ:.e
-Áß
-`_¸£+„»ÔœA¤XÖp8Á«WA°vupQ€õ0§ö
-+ÚÈ\ë‚uŠsÈ$f6?Èqñ†ÊÈJó$
-ù\$îЬƸæ˜öÁÚa²×ÞK|¥e!ávø_ÆÆZŠëìÏ¿0Ú±¯Q¥¯hSgn¼Ü¢p¤dÝË0¥BÍJ ­;_”Üi³ÄDˆçE õNnÕûΟ‹gîc¹úàúÇ/’„…·ëq‰wŒ¥Üïv
-M0Œbï$â~øU“ '»‹|Üؼï¡bLo ÃϤ¯£Ùú_2àÿ)/“ì8r$ˆž îÀðaÖª%o¡mêþÛú8²È GjÕÕ”%ðÁ~Ô\u\ ˆÆ!楅9Ýs&d«x%C}Ôñ³  BL Ž²ƒ|Ë^•4I Ékq`)¢\p1£xÒ's…)Ñë“M3>´óy>86Îä’b³•5Lô“=ÔN$)쳈ÉKˆ‹Â¨ d±’ZßE~=Œ/+æµi`êÑ8¦›Ô*M]ûT© vfPvƒ¿À¿{Ii·¾£ÊNË4ì–„éh‡V²6_ä˜Lˆ&.Â×ÃÞc9z"ìóÌN>p²Žwqö“ç
-/O¼ ˆ NŒ •â†tù;(C¬.jC”µÆmœ6`™vá±]¦]úMºä'{/£¹1:Rü‚ãJ{¸–`è2ÝŽŒCЧBÙQá-ô¯ŸŽ±€€Ù]Ú„ÁÜ/‡€º!«¸’
-'T,­¡¾#Ãœ>þ€#E§Q¶ÒBM°{'ŒÄ¸ÎídM¥hfºu‹ýì9ÛTÀ¬bÎÇ­\¡§†jk©“§ÇáNKæwK*é.1MüÒÅŽ'ù\È€ÂRC*YÂpÏa(I{ÒÀ\ØmÒj %ÔƒP‰)šÇ¥¾,{¢/1ÊA?þ)º
-3K6Ÿ—*æŒäB—“ñ±ó¤öNW"oBŠýcðxSÓæäæp— …xx3ñɘŸÁºÊÑÕ¼4ä
-º˜Ûuç.kM¿Cý9ˆiBvöŒ5(³Ò˜²jHV (ƒoXŽˆŒÕZ*ºü‚Gfê4ZÃ3¡sŒø*! Ñ11°†qŒÓWoÅ
-h†E#(‚A ¨”·=8Ë4ðHÔp {,zEîÅÉ£ç›s•Ðt¡5&
-r:"À=²¢!G/Õø Ú¥ ÈŸ“ÂÐã”s„DLx­hÑ’hÃôñÒ/¬ËD`Ôžb¼é )QWžÝíWfÛJ›°óš!Hè0 k¹z­ø½¹‰òq¬r¶ôå¼&Ú”è’Iºx+à} ¤Ñ<-°l?Â.yÊõcsýãœVD*&-âîÚuÁ¼óã'ìýLTIªÒZ€ŽqCG•q¸%ÜYäÏ¡Uhg!zÌä€p"<žc0Ì06›L@Èu!¤ÿü"§r#Ȧªß—ÉD×p ¨{Žå؈!«Ñd<×9Œ“ƚ壧±O,;lÖžI~N, 'ɬ7ц¯-k¤Ìàòº„¡J©?H>œS;ÚXÐc×0…+§á;/½€Á¸ãqñ„5²©³BÐ[<‹“ù¹–) E.VÖ1ÂT" ÄjAÜ+ª@öIQÁ…
-ŽÒ,ãÈ´`ëW'<òÌj³ ­,‰s@ÔPsÇ*¤jPŽCPŸ\nÆâ›ñz¦7 <€$˜)£Gh{1RÚÕÜÓõˆeÄÎFZˆ»÷ƒ?UÔ:îïÁéŒ%dÁ _bA‡<™Y6% ¤gädu&ËŠT¿ÙwÈMä72÷ã'¶ ¦Dê=¯åÔç²ë, ÀåùRÝsðÖ¼‰™GŸö:sQaVz“¡‚ÀÜ ¼™m¹ÝTçUƒ74ñæådV
-APdKõ¡Ž †ˆÒ£9gbôÁ,ÏêC˜NrÉŠ º>ä0ÅU<ŸêAÜ:o®Eo·•)"cž)%„¦U…U¢Y¨MvŠ!¬ö$('‰jÓlˆ& ˆuwÚáb¬…Bqón²Ž®ñ³T„O/ ÐÚóÀÃúˆFWÜAÿ•,l¸:•šrÄø SÂU–¯CFÞ<¦”Lj´Ù-þã̱,ÃÒF8ƆÑïêg3Þye8b-\+…#•Ì]ž%ë¸ß’šÙŸŠ#Ñ1bK=¾ùrN“Vûf.ž–ºˆU“Î|Ïå}4<ÜŸÁ€*Jw@ÄÓq0#K(ÚÂH
-Ö™ hZªµ‡:ÈT6<Tò„+æ1à…-b#°žcœ!¤àRwöñÈmKœ€9U××»X=~ %ÏÈ«Ê _›Lõó€C€—@X$Ø>46ò\F«G—ÇÌQÆÚ-^uZN>«5èYд¼QxïHî`…˹0œ”Xþ®ÉÁc`¤ŒÏˆÇX³cÌ(\’ ¡SðZesˆÛ]Ah>ßè3a)Z[–ÆIùŠ.
-¥µGØoóþ‹vì»8 Ï*ôøR-w•ˆ/Ìpú?übÂþlP’y2Ãq Ä|ìÇ2߀x)3Š£ƒÚì$–Š¥î‰*½ "SEþ¤¶7óÕÞé $’QñÛùj< }h:jþ9]ÞFÿŸU² $Iõ‡­<K¡ÿj|Êí•¿²Dj-ñt5»ºs«¶Ê·Ý8btÍ›.èkÞ„QÁ¡Â†ÇÆÉ/ ¢<,#"ðó ‘^($³ÜüB·&F‚Uƒs«›_ÔРᆩ¹„Ÿ_
-븒5…/ú^Íž5„cžl ç‰Tn×jŒ
-ÓÛˆJ×)™U
-É£óxæË›
-ùW%“Ÿy
-¦:¬N.Ê<‰tËìá8o\bt ᔸ€¹×LîBuM¬¾oñW~2ôÁY­ Ì<Yus2Ô–h…:Í„ ìC›ÇÑEÈ'SÖPP†¶Mý9ç¢yßhç/IìÛ¿|pYD,$ɧŠC†6é|]*[ßUg”#ŸÆóqƒ!¥2ÞyÉÀê™ÊÔ-ª,Ý› t9VÂôö¯ŠN'5%…Ž›Q•ê
-ÕCZX¹g²•%àk!îá
-É 9ã yµÿ/“ã8bŠFàŠ¸œ}U¾Jù_ý>‰v•º1%ë¦ 7|ü%¿ýÜqa#96&úÎütÎù‡¯]½N9mÆ*4 Ý‚ƒá\j.§òÝ0ºèÑP˜Y—I»›ƒ
-„6a¸&ìæ ªFì4úQ<k)kèCÓéâ’Š}C˜[•ûúý+.bkn•†dhcùYôÙŽÕPQXuùca•.v¿8|
-er“éÜÌ„T0E„p«Ç2ü¢¦köa8qnaøТ¼J:`
-:JÉ/.Àã".«okU˜OÞrÎÅ_˜¯ûÔ†óT ‹«˜œ¥Wðà’K4À¦;½{Qe$˜Dd HæM_ Å”–­jÝ‚šÏ3~ 4ÁAÌ}%c]Y|ø!š=K¨ÎÄ€@´_à+ìL(_$r¹.&‹HÔ±n½û 7¸JB«
-×±wƒœi
-g4? é®á©±z»dà(-(¾æŽ6ÐærnE—.9†«Î:6¤˜ˆd¿ü6| ÅñY»öÔ€
-ž˜ð1$É)Yت{ÉAS…kHqɆ ¡/$CbáYð‹îô€ñóm¢¹½ðO3u&Oñš¹È“¹\É ¡j­»…yÁ”äbbö¹¹)*Bò²,=<âê÷¶ûH^";È£}§YÈ—BÖp6íÀ€/yF›­û-I=7›ë6þÃòn¢>áyëSâÖ’¶5>ðs j©%g'¼G¥ÃZz…ë¤s.Á[L/áí¦f³Käq8íI×*R Xxv—aŠ8 ޣМ•™!ˆSéõ¹‹`]‘„°¼ˆIhaÏmß }‚ÎQšä¤ŒkÄg;Îy*¤rîí8Å[ɹ9žêm/ÖAÅ!*ìÃj¾¯ždá¸~QR5©Ê)¯}ógÑ ƒ1¼nEWdKϨ¨ÉóΓ\0š
-ÈäÚ“ 1`x8)ì)•DEؽ±½ó¢/BaQ' ’
-C‚>™ÞQC÷Z£ öýžÇ„ÔÊÑ\„… Õƒ¶²-]*‡é0)âò`£¯þ"dJË`xu֞ðšþ
-0
-H‰”—AŽd¹ DOPwÈõ
-I@·Ñx§^µóî!ÐÐüÛ ¹„?¬QùÏy\5¯¨Œ¢úD¤Áª. äÀIGkPfeÈ4‚ܶ¨¥.P-¼­+ùµ˜ïo]´ÃiJÓ$yÙrõát[P$Éþ~…¬êg±xÍ¡rŒÓ/T¢Aš|´ ñ°âÍ,ød’ÃhøQ_‰ $2£.uõƒ&Ñ
-ê7Š‹ÉÙib¹2XÉ”ž1t̘Æý|LHj4c,
-6|# ¡Oó­øÊåó킂Ȇç4Hg IoçW˶ߚÆyÎÏgT~ëÌr3©ŸL7‘´e}Bȱ“Èt~€¬£°´h,E•QßÄiô úÉ›š½¹Mãý¤¼4—úöU”}È·='‡
-ã±-ˆV×rïê ‚çTʨx¿¥©ØçžÎ´Ð–±Að”|aYXfü4ìÕm
- ´ÔÀ>Ûº #KaNgIJŽª HQ3_ËÜ!à zøö½‡Û ¬ja!òöQ©åü
-W…u¾6ÇBïtVYi3N¥ŠQ-?˜>rX±”jB¼2©aZY†—jæû¡:²çLàéÔwHÜçŽú æóŒ!¥ƒi€À Íl'†‘‡GXßW®½’8˜½—®]TÛ¾1÷
-0Lôt ÒZ Ÿ¹“C+³`acºb@ø_PŠ{i;ƒXXC«ÃõGI%æ{ºDó¥T_–<‰]6;P!8SœZ¶ƒXìÈL“·ôÙq
-ËGI˜UØ‘*6¨lŒ OxXË8»§~nÂ2Ñ–ó=PZ.ʤ[e1Sؤ¦ê!±ãt#ŽªSû_ ›fŠ¹!¹Œ?}gtŠÝðaú?‚ÏžæW³ä 3˜‹Þ÷å䲠׳‹e4;~”~/oaX»ÏÅ ñ˜aP±œçLìå7h.8ATØ! Ñ“4ˆH,Y§¬1i™Õ|é¥EŒý*S€)þ.h iÙ&¹™þ|"/«Ó»Îba/R )a<÷*|]íiZ·ÐQËÔBÚ¦ÈÞ™þËx™äV’Ã@ôuŸàC5¬ÿ¶bßÛ/DÉ€3•° h ]E§$2™ª¢‰j[¸¨ˆ/m¦ÄòÊÐ%¨ƒÈø›Iß$!ÆÂmÒJDUÿÊ`øå:ççIP›;”8.€ÃàÒ,@®ß1©„YjI;6™”ÞKWÅt¼˜ÙIMV«@ñë¤^”
-6FÈbÒYRé3œ W BCuª,L³ÇÓš•5ú4B™ª»7Š:Ííü(Z©r×èù0§ `rÖˆ("ûáM›%\þŒŒÑÆ¡DGIZejØÅX¾ƒsÇC—1Ÿe@´±‰mÙ@¼¦ÂCº<0|¸á.ùœ÷¸ìÄÞ‰•6IA‡…n“븲ÀÁÊ51±ërbAQž+xùÏ
-øµ×¯Ü§ÀUR¾ÃðÖí8MÒD†?˜:u}MóŠ
-‚@ASñ(‰Åû8a úYÝH y¨$.÷Y”ñ+Žÿûö°¶i}è~r”4fn¨×Ô1!*R* ¨{•bð[Æf±œ”n|bƒš”Ü}¦ÍÀ'oÈ— !ÃlJÛGsLNÑæwà>ÀJ²àB êºl…NËãApÅ8¶Ã'§úôH§õ¨ºoÓ|0Õéy^ë2|à‹÷8BÞD€C–ew½ª2F"²˜ýµèi(¢…ìM +?)˜é &-]z`qoa×ä1MÙ§á|qR…·Ù"ë5îgzŸÆ¥ÄÏ)¡ Ë4ïø°!­ Jq
-
-‚&!‹Cæýz(b|¬<'fI
-”3@ªâNïÝ+(Eÿƒ6¨z sbçhWXÉ…Åà‹&Í[+"Á
-E­x ä;ruz;?Öàå8œ_ÂD*é §^ü2•äKÀà¡ÄO’åUÛä¤¾к¶ :·Á õî±ÇGÉx“d<4'uúÍo2ãzîð½âÇ ü¤KkŒ½#1ðª¾Nº\†¶'G Ì äÛ£(iJˆG›ÜÖQ—æ¨Hý†Mðqh1%DÎÞ(ì4ªk‰uùé;?qsºÌ~çG]`¬æHèEWbÏÃ.¨ÅWò©°÷SÉuTï¹zqúÙ,—;F<0å—c‡«È_3Åò@§÷"¤‚?x•VªµUt=îRôù—;MÖÈj]Už$õÅß7N…B̵®~(‚É`ÌðS¨U’eØAy;5ÅàsI̘%ÀPüC/®“gA<Sš\G‘¡^\›­"Ôž]à/RôÏD9€€8º—”¡8[ ãæ— ¡F‚Çs5…VY&ôe>E–!ƒÀ¦Ï{Æ›mB^*ÁñMÖ#ä%à§èãÀ8ÎÒP‰(¡uÙPŒVÕõiÈ:‰e;0{µî” 
-^D?¥ÎxW)ŽJȤøØX»e”š åˆ%È ¬ƒE‡åöQ—¢«SÓ«ÇXR^vv:0Ö»£ÙŒIÎ2oy¹fþËôÀ•Ý½BE”=諆'u†ëŽù•F“
-cx2`Ya’Íf˜}=9ŠHM¦€)À=|§Vâœåº
-–NV§ÛÌlÐÎ|ð‡Ñ®¶dÅLèƒÞ9 ¢xA¯½¾ÃªòÕF‡gZ@{x]ÃRÆ°_ÝÕê.°¦cEzAX2,è6óí‹ b×Å…ýPôùPŠ`fD_ݎ߀„µ+™Ð,駌Õ,:À«`wÔÙ“¼@Äî1‹$³¼«ÇµJ6Ø Ta~Åå\…§°L7x"ÍBţćqþ(qØ (1ˆ‘Òçå;
-ÏÁvm±>V*T ëÚ=eƒÅSªK`°Õþàôæ›Å4øüŽ*–» ¼KPMZ5¯º×Q÷¢KDà6(vú«;hÈÁœVQ€ ê@Â\9£ÛÐ/(%ìµêø¹†¼eú­Ðyû(å㤫×\¤I¡R•äS×]îùJ+£¬¤Þ­œzûN‡Â5´!÷¼GQ¦‡ÎûÀu%Çõ¨(¥ÈÜ8Æ­0–šþhÀ^$N¨­MM–•7£&œä©6¹ÔŒ©OÇŒ °GU˨<à=ßÄTÀµÁáÃEŸ^Ôå¶!)-È<,fq¨BàXnHFïpŒ.‰EãeCXâîïÆIðI““_ˆsÀ6¥È±ï›žŒÌÔ´ÞmAKÏ–$ß_LV÷‡ 0çë øÔã4/%Že›Šß†øÛÃw@>‡`Èqië6,ó\!æéâ S„‘Ùë(,sÐåð£ÛØé ”T±fM‰’þEw+:í*Þ[—z(ùáV§ÏBt«o^ºä//Žl‰Æ¼ʤ×òiyŽèr`EÂòb&‚K…¢aEöÃ^î*ü3$;Ž¾Á^ʇ<bÛ®þæ?ê‹ÔâÝ>~§a0Ÿf¼n» ¶< Ÿœ')iÊjØpþrQ;ØYQwLìûß©èE(‚¼b”
-þô?]”äó¡(VÉUt8¯'¥2Êåw?uaÕž%AHÅvÔ%Z¨lTzÌA¾m6Ñ^ì„+6·Õ¡:¦£é“ŸNèrœže¾¨À(Ì SĸWøAȆwhì_‘°Ãô#mwVÂìØøÉÊp'¤Þ$Õ¹ŒÏD×ÙœâbŒ¾­ ”+–€>e9¨ŠïÇíààA|
-m¤YÒy¥mê9†æ‚nóþw*:ŒÞ#w 
-Èÿ½èQ_S¨Ä2 YG5yßdMi"DÀ˜!›Û|*â>˜XE*‘&xL.¿U¼
-€@3+ÐHd ¾Žþ|¹rÚM–>ÇA„7²´¶¸Fç#pÁ
-ÃübÌK—î0s‘¤„`ABU¦õ$
-i¥åt.â0äûh
-HÅïT”°A(šéâºmfcJD‹½{n7•±£ÄÀ;žn• Võ ì“,-%Ø æ­Qµî%˜h|)±s ŒP”ð¦XHäÓ][ŤDÚÚüNÈA 1@»J´
-¸ƒ¼”9-.¯%;–É>ÀÕ¿“Ìèÿ”—IŽd·EWà=ä
-ê›qyøwQÓ¬ýO}.Eˆ'œß€a¸Šñ$‘—· µ{ A‡™³-¸+ÉÚ¹
-·“»Ò¬?ÃðÌi¼­3®öÀRúû¨o+¶Š&ŠÌ_qv[Œïÿ^°µ…$E‡à+¨Ï X'GÑÛbFœPÐy)Z“Üô² EsõüƯ"ôˆ3ÛÖÉ^!PZ&•4œ!>ªËb]J~ÛQƒ‚yÊû]Çg¶Xtb®»6¦E0 Ρ™Ç07EóZN*I­*_"Ú(΢“)b§ùi‚%üqÑe`@jjýÑøi¨ç• ³
-ðh µYÞZ¡ŸáŽT€ÂJÇj"±ÊÉ#›ßsŠfAæ^*6ÝóŽf*ýÆÕ.ñá;#³ï ¢õ±Käå‰
-jJPV‘DE»dU²ÿd{?'ádÛb²ÛB›0Û°JLƒ"ÄØ—y+ÑQn…8‚ò@ï×ïðʪÀFìMÃKìrTS{]%}tX“1¼ü¾V.J¶gAŽÛâ­HJJ;ò&–ù%Ûƒ2²š.‘F%•ä™%52±+V¶\
-x#‰Ó¨>4ÅAà —-þ €\>˧²¢ZX 9{ÍD%ø–‚/ãy¼¤K3䀢U@òhF³±ë € q`Qûý8<RàÙo ƒT=wÖ¾nC ulžÐb|p=,íê/C6®MO¬N‘…å{^ý-3‹ÕÀy»­ õNÓÀ¹ã½æ‡- /Q ¡f.ãö8¥„J¢U›3p»­‘µz˜V‚hTcÊj¬§k`(nä’ƺ5„uãO¼¦£.úF`7í3ô3 ?Ì6yI)È à
-MQðZò†Ï_ÝŠN¤ÇA~MEnÚçÿ£è¹}×ã~Pô`„ûb=ŠŒ]¸ªS xU¹ áE¨b—kQ™j¶$7«ÈŠ.sX˜þbiš•(â½–îÁZåøp ÃK²Ñ*Ó¿PÑ|˜1HN)á& ’ W^ÂnEY”PÖmXÑdøp¦”訬xÖ@!¶ëwú«ƒ×!8óòëmº© _{ªíë:âÉ€áæ&áè%Ä· 5dØ·ß*Þ&å'½Õù"­ÊJs™}Òûe(X•¨
-‘©ÜE µÁt?êÑň/Ì(¡lÄÙbJš|”;RŸ·Q=K*#¿}çœó6
- X)xZ$Ö×D-Ð*\%ĵğ!ÄÉÔ"=¨GšîG‘ÿ@ñÈX­õ¾0iÉfŒòÁЩDì[´VtP÷ÍwßFQ@ t´w›»„ð¡²Ø” BŽ(àÖ¦«$¨©Muöp¼'?· j!»ûC2É—Ðh'!YË`jCO½p>9š¢b…š*‡ñØUÒA4þ [ Ø©„>úA'Ë4“ŸÄ7ñü¬üØé”´¦¨ŠxDšÛ4·¾L!Ï5;q7ó¡$JÆ«¼Ï¬~гˆ¼Ä¡Ì±OY*{R X<L¹ %Ye'Žl¬ÑÀNÑ‹ dþÅME>ZvóˆE‘´vŽöÒåÌàÝ" bu9ñ)án@ˆŒUCºÇMa¯D^+X÷ûwØ„¢¨«£óôË`·”§¤âVBÒD|†¬¯?;Ëï¡üv1a5Aóì Å_ÎlvB(0µï
-¯1Ö‚³ª¬ùqz—››z~^ .°eéMñ’>ØMPx“Y(YTjf9‘Pp`kkÁuA†‹¦8nd¼Åù³Äã|+Y'hTêj{VÇw0Šè'(}>†WDAìÄ—æÂt¹¯G¤ÎûòI0»…QŽAÇ’~é÷Òf {…‚ ëWÍâ–æEZ~㵄Ń›`‰"ÜGE`-G” ™_¬ *Ú6Sä1á,!´uÔ¬cj_yœ3ÀŒŽŒ3Ú\Ìûx„Ù¦~Ft*qôÕö_«Çø’§5|q—-™ %Rä4Ù
-ZJÏÇ’Öã306Pë ©A'~
-Ã0ð.¸…8.Eß«ï=Œú÷,‘|€L; ‘µw 8ˆ%)õqóF^Ÿ­gOžÂ«ÑðäO*9±R¨<ûî0q½fêÞœŠcˆ[kÇRð×SÄê¨ÑÁ­ §Ýfù¨X'¡¼ ¿!ÑûÂÇgpý“…«b<¿ †Œ…žšæ¢}”C³ <Ô…¼5›¯sI³AàBZŒþpQYžk¿O'jnµ%»Ó‡’7³*;¿þæ¼€A…Çjdö–cãðW¬$w3_{+âN]JsãH
-*…¼’÷ËÙz„¸ŽºU¸3È2LÁ’}Fä BlWO@“Ùkx• µ}×á-ø#I2k QúÎsâÇmNä\^u"ðèΉã£Ç·’·YýþÉÒ(3߯$Ò@Dqµíò½?ŠÌ^Le7 …áU¤ª çÎIÑùP±’fPE=ïÙ¦`EõGÎ/\$G…­‚„bÕq>xö5~ÑEóLäjïo³?b~KNn§ïßù‡ñ2IŽ3×ð t@ÁyXkë[¼­|ÿíûíV*äŽèè– ñ'D ºIï”×Ú¾·¡/(\â)Á=Óå)•¾ªœE󘽪IÃE IIþ)tv+;HßU^úBš0>XYQlÇÒ…NIWÄâWº{+üYâ†P8‘ïó-¨y˜üW\ 2PX,òÕþ]R~,S!ò"HF­þn4‘¨&à_éÂë/E¨<½ÃÐ"E•OŸ%^zóÝvŒ=˜D…/*¡ yfËÀÎ(pvK,¸ÓØÎ
-@”TåEh¼ûe²ôƒ*šÐÏ]Ø©"Ç ®Æs…>4eè³tœ˜Ò£S&Šk,¨¨ûe¥Ù$“¸È(ÝJ¸=TÆ•âÔÌ.$ÁIJϷ¨µ%¿±Øøu¾ýõ}Lyád ZIzÜøQ؃‡?ûõç"!­‘3´)hŠ˜PÐz7+ ±¢íôxÂT„Ê¢^¯ a@h³ŽåŸ’yD¾Ð·}Í“d³YN;Ÿܬ)ˆonÁØÆú€¼ö:‹ öôOý€ã?Ò•6¯[BkI©·Ø†ExwBÂfI÷Úxî­\»Ó]hl­ôøS•ÐFžÏÆ;µžùÐþÝîÕeõ%ï¹{0 ¸&8(ïÓ¥±+Ô¸²%ņ*×_„70„°S€Zíf@!5iò
-‘³!ÆÓÉœÇOÖA½´s,xò‡mæëg;•`Ù:JLd)µöSBœO±¼iÚntvµdr_ÕrE¿^ÁœØNÔog`¥¨K†‡ƒ_š_£9ljñ®’ ‰C ÖwfL©ÊCºZ·Z— ñnŠrOÈ©Ùg´ µ^D?ùSŸ_sðýT ¡bqãVݾÃúaèŸhšÒMmK¸Ž¸êà#™e:_sHh£7e_Bc÷`J4-/+]8%±»û·É¾ëç©Õ<øÈ‹§Ëvçå\NlYè1ð›ÍÎI f—ç'¡€<z”Ë‹ЂJê½>ž‹ŠšOR"ÕG}TôÆŒcáù¬GÕž^iñòóRÃc¸
-@ýD‰ ‚q±rPÙ¥¡.‹fÿD‰ lá¸%¶Ãs:‘‚cÄšûæ¯ïœØy›Cß ;æÄŽ™L%é˜qíÌ)Ë´•M)ÙÄ’­RŽ\ˆI$\±=øukÃËÅÉê¹æ‰£ÿk‘2“掊ç"Y‡ÄzÓ$g±90ÓXI†”dW&ºØèÌ—™›ä Áô(ÓP7Ú=¡›Ò6w‰Ðå¬r“æ¡õ[>å’£¬Ðk6Ùn<îTZÈ/<kã D€†Œ­U^œ#<vÅ‚ÒÜACZOX~­Ã„ìwÒª·ë|¿ÙÚƒ‹"ž_h¥ßâÀkÂEØ";·6Ôtç%P C«©„|0ý| Q9òmàÉÈØgø
-2*èùJZÝÌÌPë’u&¬Ôö✮ø‡Öò”Ëð2b’Hxõ=†Žk@‚X+ÿÔ8¼.’<ò± ~(žÞ㮽…>(©š @ed› Æ÷hö(Tሒó]åu¬ØÍJ
-*NÒƒý®²¬˜ÄS*j
-»d,ò‹¯=‘ˆÿï;=ì"Ávu§-˽ œR !+á•U¬‰Kqò`ç¦,Š²Qj?äoÍ 7zd—ÎZ{ 3Š¾N{ Až+(RÉ€£õí.b%]—KHÕJôéUûªÓÄRVNÂ6Z[o7F¹Vؤò÷
-mçèÊlì— Y{­4¾àEɆy1çÊšÙ?õXD<E¯«<•0RèG{v§¥÷$ÂC­ˆ6àGôÀôOµŠþÊü‹ÎæÏÐâbç0_“¸×®ÃüÁŸ€|±†:¦a¤cÙxè÷)ªæ£­¾½(n´Sˆ±Á ÝK)3’º]19–ŸÔ1^k C,§$µûÃ[ä׆óü1/Ò,o´lAÑØuA•à±$„”Eê£×#^H±:¶£GO—€g‰mqO„ˆü8Ûų§¬Ë°S‚ê)×à>ÉU—IB¿\Ÿ`ŸBuÇÿaµÛ5Ä^3Ÿc:Ž¾KI®‰b
-i‰O E çú ”âÜ·tÛ;¼Ä#
-ÜBô‚×{öûEÿUÖ¯‘ß¿æÔÒ ísý|ØõßV>
-WåÕúý²Èk Æµ}ƒ±œñ±•°éZ'´¡ß‘àmðüX[IÂ3ÝÚÇŸ³„Øb`GóæF~)[âÓŠÓá
-ÄH•i ˆçÀda4ªK¾^ßgÄ&j5±”1ú$žH¬
-t|ƒ
-IpvÐ`é˜6œ®,Kv‹æäõªµ5[ršþU§f;jÈŸQ™‘Š±V1ÜדD,îwè »ŽFÃF5_É°j1!÷1ŒiAÆÜ°…„8…×BTJÞG‘$ûd°Âh;ÓðR)œ\ª1iÓ‡´1­í+«0w–òÆ“óäp ³zÞŽÃØe÷ŸZe„’˜;áƒ_aÂFßEÆMqiÄ,ö,Í'ã†{ê.ûýH¢â[H…õ¬C+/÷¸oÄuÅŵc.š„Ê ü+î¾€~¹ Cþu\`Â#ýš¥zFÂqF$£0È–@ƒ‡sæÌ©]¼¢8Å|@Ó­__b÷›x0–ø Ž§y\©Õ¾_W‡¼
-÷õN½—I^1ØT îì0$(5³ÒB¨«-ˆ2±ø7¢êBdI´dÁÒ­ÄšÂu+À-¬€¥M•€`9_d5wmçë Uu þyƒ(%`ø Ù"‰)$x­oÃ@³Vr
-¹?¾ªâ/‡;bñâ(…+§[añÒ¨}Ò+¨Îz†Žòªqôz £*aâî—É8¤+RªÕ÷Q·âDc8‹Ñ<§Ä@Úâš4+½VÝ!vÔ­åçwŽÁ9osŸ?ïQÇ«8äK ±Ëp:» SM<þFZðóN}^«‡@ óÕ7ŠúmeŽH_ÐQ|"»äÆyÜ ôõÎŒ5Ð$\g—†øtõü
-£5±—x°ÜÇPF$ ¢ù
-[³m}£V®p˜Å yæ/™½Â <L!e2³×íab Ó²ä2^ò—Ðø/¾°Ë«Ø;q1®usÕ ôµ@€Ø³%ø$e)(´bb6¾"† ‚]¯ˆQo½Óú¾!²kì>…À¡úÌš$Z·¿Å%óïØN\÷úŽ®ŒÙ™ú™A/hxÐÖFzšÄPù}ÔTV ÅZ•¬Œ¶n“=Fƒ mHÖ{ ©‹f¦JQ±ܲâì(ù)”tÚ5=,—žiñ ¹DQL«Y«3¥?ÏñwÎ¥óòàÜnŒóa],¦¢mÛÇæ
-#‰uÛ©+fȧ{«3g¢„ð³à~'¬“rQÖ©qô{MƒA蟘53.»ëtîÔü§«¥´&Ï —ngžp׌¯}%PZ¢ZŸD‚=;C‘…¡Êµ
-‰­×êÅ®“ÒÖ?=±ÇD3£&H†âðì³Ad{kB’µ9&ý5Y•[ˆOM7ЯP¢ûº¶viQ“
-h3VEíƧS«6ˆ]e !^¢Ç¯—`Ã5°]‘U 3»ˆÂò5Æ]>!ô©À»=ÅÚÛØwÅÊ)(äyN}) ž|ˆÅ'h;Ñ0ùß¡ç
-/ìµÅXݦ0Ž<…e4Â¥Û8;©Ô>ªS™©§Ò£«ë$É{·Ò¯êhhÃ(6<˜*dí›æÀ)±²RgôòÕ‰<à·ÞWÓee*¶d2NèëD²åÊ#…‘›Í»´ŠâÐèý,ÙBƒ+ïÝ[~[É+_b
-·ã±WdJÇ)xŠV „&\Rl'AÅHĉ57›ÙÈŠ×ÛÃåñಔ¶Åb:ƒ’S¼Öjª(“Âþ†–•iÜyljp#Æ“çn=Cr
-ö¦ÚÔ@HpË×ĦYö”ZŽ¢ût¡©1´P÷“ñ LÃÀ•£|”ÆìlxÛ_QÀÁßƆ䭓҇âÆÔžCâ{<!­ºÜO3‡Â€`ȹ¶XÊš$aUƒÌRb`S­xŒCê¢ÐŽ'È›(nY¡ˆA—p͹)àÀГžØŠa*E ŠâGÔõ2þ
-³Xã¾úSW¿ÞßåLûD?P~L%Tåd†ß>æ%$ж@T±Ž^ÒA¾&¿k~bíËÉC‹–#ïï/ø¦ô@É;€Î ÑDÞ~
-ˆL7¢´$›¬g-éeêX:þi\j–ñ_¬”}‡k`5ØJB“Ä@ küH.iÄai8B•Ô6#±*\ˆ²ëFhXQð´ ˆÓåÆ&?‡}Àµ|º:UIס¤«,ýÚɨ$e0R¶
-cº¬N-¥záIÕ#é4ö´ø!¬7ü#þ@æ îs¿Ó>:á
-3â|¸Ö’§)->¼ŠÁ£X<«òß­i6×RtÙG¯Ââð#èô#ÇeN?r<ÊSî£8§8J|úˆ£Už9Z~~çœó6Ç
-:7ÏGðö•Ôó^&­$FNSï´–ŽõA2úŠ¯ÈéšR%Z®éëá}Çõ¸vgÑEÚJëEw„máYb†™íeDíæ̺£ /ZŽ¢ï:ó]ŠžyY±]L¸&ª…³ïï@eÈM«Kä½f4<~Æá° _Iß6Ò‰°ƒ˜t²´Ùzõ¾SZÃTÕyM}ð2. óÌéEñ‚{DË·üetvŸÕžÄ¯\þ_b({˜yÇp‡õ™æ„ÊÖfÆ¢¾ž;–bA
-ÄÙÄ1M“y%ÇPܲÌÎç?ÈiyX´ QçÛ g›\ÓµÍ Ž‹ ü–à‚^ª-:•ÅNiôáÉœ øPX[öå²¹ÃØûtÉ÷‹ì©|dÊ·®hyh7ˆRõ†±bªï
-)Ÿéöô\­
-µÀhº‚·—»×›?&õ3niœYe@¡+<Û Ñ˨šHrüÃI’“á*ÓòDƒoû;iðó¿œ'¨Ô€•VÝñ.#ð„ÉbD"Èc„\˜ÛŸ‚â Û™Ï*/ž¨¿`bzœÆ¡hŒ}ØZˈ¥¶¥€Øÿ·1t+¥>˜úr¿~wžÃ­Áš6Üë*¼–ù ‰VÔe^ûñ„èªübÇ+P µ´öIçT«d‚&1¤í×äÄ¢ˆNM­2È̦…„²óa æhËs@l‹Cûd„pi6M—ÕÁ‚¢]«)meõD`m^V”!²†Òvó›¶Y²t†|Þ—ÿŽX5¾ð~ÊÙžÝÔÃ3ÌífD6‹Òt×÷M7R¤EAOPöV3ïÌâwZƒÃ=“øäÀ_÷Eß°X„“ð|‰ÚÃϨQÙç¡óT2²´|=€dÁx’e$î@HÐXµº
-
-LJu¡Â×*`à{•ÖŠ„¸Â·ùýH€‘ÏáÂõ |KAoj…ÛdK}†!XZî9
-rD¯ŒqÄr¥‡Hüƒ_P»,Žµ„Â~¯n5lú¥N1lMÄLôFazya .‘ï©,'á©Vì
-¨‡Ás•Lˆ¢ØÈ]!wx€¥’”Y½,üR ü¦éxh1wxHLu(ó7ùš3B`†Î²ç`°…wÌÂÖ𜠇Íx<z¤\«¿{ÄuÖ¯âìUC„¤Á¡6I2Ÿ­5T`ˆìVûRkWX!™ÂÌp]íB6Èùq-S슶†{`¹ô[¦GÈ
-dÍøÍ@Tˆ¦"ù§®gÞαɮ×ÜO‘Gó5$åËÀ. ¥L„.ËeÔ/ìV3r@¸>) ès´«4ÒXÌË›Î顲ck¶íŸÑ1&Û´bL²“c3GÚîTg EðW¼p@gË1åLzз<è¥:Sä·Cúwˆ,U9 …VÂ-W$c*‰IC“ð51Š¡Mò‰‰¥1ËY"P°wn*c}Ú¬dƒªüiÌìC˜Fâc˜r›Ì˜%_ûrÇÕ SM¤–y¿d¡êºÕ4²hÑ}d†!O·æ„ºQíê;”™ÖT˜éYìöŠüNQœÐç,”—°#¶¥9 ApEϘª}Žö¼ «}WÂÐòãR±Œ­Ñ qË]ÄO³>õ•˜Ê:m¾îG£müœI-c£'£ãhÀblfNCk•H/Kó!ä!˜!ûª;ˆ"2™Zgup¾F-eÆè×Õ-}äš¾NHŽòd4Q9øŒáë*&z1vÖâÅt‚GÞ0Ï©²c÷ø]!’–Š–ä BQóòÆ×"FLœA,Â¥Ðé5â
-¸HF½F@?ìº UϤ©V&rî„àˆB`ö¢|’]ìëUg˜„0ÑÕmMFªjAðâ†Ö[:*^üÔ2{ѹ(ÄEBç^¡Õ‚(p©”a¿µ£6]>2QVEfg¶á­úß’VCùÌŒÚÀù”ûõáÿŠkB ¸«Ü,îŽÒ¨Ç +Oõ€FÜ÷Ü!p©î6¼ìó”Fàÿ²£,^2¤O«c+ÓHÿ•UÐëzÍ]Ð<óÆœ—Æw^žhoh‹¡=«
-œu[±v¹¦£»-Ê𪮘|Mï âëÒ ôñ
-¼§ÎLµe`×]&¡h)á»öPqúÍ‚rµR“/ª‡¹€ Rv+™Iq[º¾›„‰SqÊõrT%s·œâ5TÚ|TõH½v,lüÍÅeÊŠß'm»»Ô9½H´ Íl‘-dxÃ<Ðô…J|A˜»î^Oæ{\
-Öü2ÝZ Vi3+¬îG;¾Š ï‰CÔ§:» Zøè¥ÂØŽp]:ÂBG6m ©9†Ö,šCŠd’PcXç²á€…")ƒðË@Oæx ’”æCó2ŠÎ?('J°5LÖg™²oxG‰Yf‡'ng€k´a¯q¿ÇýÛZ?ßñ_eÓ?þ‡[ÿçÏüõ#C¿ÙºÔk
-•GÍP¦©ˆïØãŒsä› çº7Aþ3ÝÄ‚¦Év@mà•S£s:„"ãHLzN+ R1¯ªÉ¡–]¥®=-D$ “ L¦3Á:Öås²û\w C¥ÝñgN3Ib9œ“Ä:­‘¤¡ø‚4†‘ýÀºé†à¦ôâOH+´·šýSºi®ŽŠì·P›Q|…€D)ˆ‚ÂÑR7‚…
-²eëLè/]¤O‚´_YsMeú”`¬aûüá݈4‰ LvÓ]&Ïcþ-þsN5q›„dë»<Y C³™N '¹Q":šüsXHéµ}JK ›!M@Â
-„`C5ñ+÷y}¤qñ’Ï:W'äN’R‘<
-D¥ém®Æfÿ/÷i!倶±a¤†C„ÙÕ-ÅÊ1-–ÔŸb^ÇEP ŠÙÚå N¾ñ%¦7J Œñ¹:gÿ1/ùGEí¹*¡Iˆ@_ áPìJ2ö:!½ÄqBMú•v‘“=~ç*Ãr¤6þV.»å°’cNÅqtä଄'Šé4êøzþÓxl%ògû¾xmh¼²ø4(ãáR,¾‘5fçs«O &Œ4jNZ÷@d§3AÃO·ˆ·åªerOo41Ÿ÷SAâJ`Ü®çS^ãÿÈ
-džc¬›Ž ù]eºMZ÷ë³õ[<…šÅSäéUìd’èîGRŒ¶E8 Ëõt>9Ò*±Àû6µéPs›q±ççè+Y7ˆbåÞêi45$gÇö̳ßå?¨sögó,U÷ÎÂlÇòœþƒÃnqâßæ”fLtÞÝÓ_Öý¶&>J¿-¡ê£ŸRÈÙ29\¡{Š…'ô±Ú-çØñ 7fœf‰w#!¤•vŸ¢ÂzgÄŽaTÓÉ$$òóÛ$Fí’AÖ˜¢¥l“)<˜ß#&œÙ/Û|=–‹às3ø¬²Ø
-^ÙÎ{"œW:BóÌÑràDý·?‰Ç쵸iÂy=غRe§éB!§\æà:Ø©Ÿ-©À÷æ´KZ"yá ÍIyúÂ%žg_@žž×râX­èçê˜>Xî¶Æh¹îóÆ÷¦RwœïÈöòjÍ,óÙI«ÃÒî÷Ó—Ôçã)¸…(7C1Jl,¤CT]c}®É®RµÊcºz5æsŸ„‚ÞØײo†,ÖïJÀLy^œ#F5z© ÷ón[¹ÇÇØ›?¤&ž™›mH€Cý“uð’»ý7K†Pip¹2LÄ°M²øäÿ ¨2?"­YP& µVÍ)Ñw˜fÍ÷›p„=çA2¨«$1±@ÒÙf~±/v8~ ´…õ½ä î'ŒåQ¨iYŸs 7U?s‡É<u /‘†@!ö3Ä2Ǥ™¡dÇË`‚Í»ÏìÏÑ’œ§äêægm3ÇŠ—Ž¿Ìr^k~#™ÚXô’$µ:‡s)ùûKÕhA^0.¢fãᥫ_¤éÄgˆ¼ÞnN¦_D.¿ë—A>gËÆe¸Söf ¢ŒED²~tųjõeÀzè”99⊌Á.%Isê• Ý÷§õãéò»Ú‹C§Vîj£¨ídïjÝ^Ö©FÁ&«¦¡Ù{Kì´ý\@Ƨ¢1[(­@™}Üÿ
-?ÌG5Á¼4Þ>ÊI±×Û|ÕHK,wøç·è­Y›m€Ž¤ v¤[ “—6ÒÏ3 RI€ÇÚkƒáùµ÷÷na¶Ði›:òÖ-dpG¶óÂí­-ºråwØ c¿ï‹*ƒ Bã:<¶ºìP/5k…Tέ¬Ï‘YÊðbÆg6´…Ž£Ö½ŽÛ Scèõœ“Ä»Øk\¤[+Ð{#·N%*ÞöáÜ/>óﯰ÷+T륺º½½·ç¶Æ¬†èû¢Ô“0ù¾/@
-]®´Q @ùã#zÌFOÀÉ9{&SVb!§¶Gæ÷p™×±st‚‡`BçU0&%ï[t8yÇÔq—=ÀîSë8Gʦñrϱý´íÔ­‰#ÏÎhFvIÃÊts,çªê:$±˜EÆÈE`æBñ~ A%¥¡î}c j¸ÿš×!âiiSœcÚ©ƒƒx±i±vi^Èô_ ¶´ÇK%÷üÔ;ˆ¯eÛ¤’vsBu$¹&«™øïÙz…7¥æ½jh:¢´ý1…jVX s}?©“› ¨6·zγ¤'ÛL8^ɲVlH´:CÛÃ6arb&cÜ·ºŸÏ&'ÅÖÄŽMvå³.…Úïçì„I=ò1-[y­U‰>AF©Ç4++Ix†ìý#êou§ŸSs[òëAÃyóï™QÃ} ª³~5VñPùçCx
-£nmû
-âͦš~ô«üIš6ÊHgzÄs÷÷ôæ¼hX ^©òóîsó[wœç}œ‰7˜¹Äü;eåàYÚ^dú!·øT‘IAe׋‘?å „N|å†? écnq, ¤^…r÷c•7‰NDƒla]E’ñ©Úl£WúÛs•2A6}Áë=n|ŶG4Qße?Ž²Ž- Ð[úýã¦Ë'ËxŽóË ÷ØòßK“ÝêçÂ>1;h*·-‘òîfp¬Öó~PèâŒòÚ‹/€T»Ôè±²àÐÿ-?÷%ÐÎgš–žÞí™×5¨ÉûÑÊ÷@lNì Q™Æ[Ÿ3Ϻo°‚PB~†S”öýW¾Tá‘Bú+h>Ê:¡þ3Ç쉬òYôâZ6jf±þíJËL„¦ÑˆxÁhÜësŽ$¦3êÔÏ×/Þ-Dg‚`u‘ó0ÆmqߟßV ,Ly˜­]O‰»µ‰Ýü;AÒ­zQ wùòO¦<5¶íü+Fn—澓®ÿïáìÈÊ܃„ÜMVœÆ+Ž0£|ןø ÜsmjÓ„5¼µ•èßÏo+ÐûvUFØ­ßÿ2¦ ÐûV,>÷ЧE]Îû'ÌXyzÏ‚ªe<ò>Çl˜9¸»²·v>1®Çñ‰eo H†]s¥özáà.þ D“`ŽJÛæ¬ê4q¨™ØÔºéˆùwêy½c~ÿÓ3â.gF¯ï ¹ï¡÷%»;}xö^Èm ÂYôÚ¯ns¡1†,1ú•w'ØÕ>,øË’|°6y•½¯ØÚWÚó>‚øï^‡U –N27ÎèësümÒ§6ÎÛX•g­ß{¥À´@®kÛ¤ÔD܇"öœqÖ@ÍB\!(1[•:1®ê‘säÛ"a]ŽšºÝïsìˆJÁÎVôx;gмC5ÔQTJ;— =ƒƒ5jZõ{ "ù´]èQº|Œ#åÕÈnÛê*Nåå5ŽÔ²8|:¨Öü’â»Îx¸òóÝa­öʈ\ËKÞžÛÔ—\gåùVí|ó|«uø|Žá²½Zºaêg,úE‘dGk= ¹LMjcÓ§-¤CÉõÆëæ8lˆpéÁh@ÀsrL)Nÿ×|$=‘ s²l¯`÷ým¾== `)’¼ÁÝœ-«UÖZómE‘i“ \ÎPDz¤~”²gùÊòV3Ï…¿}_%ç]Î2<Þ9I³9jôZëx#-'jÒ‡M‰…ѤµëÙí\¹Pcì¥çÝe°o,PŽÚÞüø)*AúAAZ`ð³0hìŸ ‚öñcãúoÉä'ÅÇ*«¶mU¤Ä-ÚÅyæ~®n£Ä]¡ !¹lëW‘‚šÀé:¥½¯’ùŽt¬#É„©År³&ä¼Ë€Mm¿wˆ»rv{˜GŸ¸ÏN•·éé‹’Ø>ÜFɾ/ ð-weä%’(I(½‰)x…àY§”ÄP‘×ÛÚ}Q¿s$eeæÞ>©r‚Œ=ŠÎ@¤àv÷–,ûSÞ_ÍŠT ã%¨š%¢<¥èxcLnVã[õémàÒ®n,v™§¨‡—¯´ù&v{‹×µµ¶2»ß›æŸ¼uûö×Çõ‘šÀÁôû~71’CµMœòW¤>;N{S¿añ¥èï_e_Mx&Õ=[!Ÿó™ß¨“éJÂ×dF•uE¾BL£p‰IõÕÛ¯0%FºïP
-mwzæ'“%ˆ_‘¦@K³µ–¨Áš|å#ÞE V{›ìÏßñ¨Àëå'Y ÝF:dS2ÚÞ­iÈóª`oÜœC–X~æÕñOØ›žîÙÿúSÌwF­9^×ëx>Ü…aÒB©àL=
-<þ ˆêSšô è˜è&ÆqÚKõÞûú©e++6…¥UgÝ’OKz Z–$ »ÉMÂ@½´
-ãϘM å\”Ì£2Gj·Û®U‘`›ñÊ_ÜF7[vYSÛúUã£ä9¾CË÷UsÆÇønǃŸZ¼,ù4ªyÒ¢¨E_Kôýš^ôóeðw.ÉGýÕ›fÚ—ÕGÝÿ`
-H‰Œ—A’\7DOÐw¨µ#æ €
-a_ººxãñT"And º²·´‘® BÍs™×d29²$ü2Ó.C%/srM™‡ö•bÛ3f˜œ!;eà:…‰d¿|©™P(^ѵ:ži}÷àe'„xm‚Öq äûéè‚5»@@ç~ûï›ÙÁÇc®¶œ†Ý)š£ k3?ù(Az(Ÿ´‡¦R7;è•FNäû„D›ÑÉ FB(‡™çWb®B*I
-Lvu!åR€Èœ]÷_°é„²@Ä ¹˜ Ñ‚ÐÀX?¯’c
-½¥s ÍT– ´ H?l• K" \ÝñøÙ¦ÙE;;ºIªb»v<ôö ¿¼u?µ#œÂ ÍÛíz:mš DW´Ô»!;ƒ(ÂDÕ` Wˆ$³ º»‰—I~€¼g=‰–
-ý›7m ƒôDküG•›’_3\B¾Têý&'é[’^Ø¢Uî­ªüG "ô€ñ( £
-;J§ƒšµëm9QšÑ¡ÈxBv¢;/xv6â+Œé§3n=æh>UÈ®Ä5 ½3Ó:ºØè¥Ì¢!€Ý™tz!Œ±éÑÐý¦eÙ ›`2: Êé@@˜¢´,z0fÌ8ÅŽûg0OòCzN®µš7Uf½H9‡|bÏÙ-
-ƾÑ+ ¼S t¹ ö”,W€ É8iêx÷ë* Ι-÷ã­áæ’0Ô)ux¸/K¯Ì@ ?A4”sÕ"ļ+¹²(ŸÓÔ£ðùp¡Ã•Y ö»ÑÜÉ( `Ëzu UÈÒ»´* þóºIñ¤]L–1ÞÄ r‰Ë0“æG¦
-TÌR(°òÚ–ì*!OÊú?QÃ˦Åòââ¸
-CàéØóò{‘<`<9)¹×" ÅðAÜWƽ8ºï`7ÓkòD
-Tçeóâ;^¹# ¿&å¤v;Õ¹6ÒGƒUÎSJŠ§ìaèh9O«¦x>UÁÊ1Šr‡¸¢ÁŸ¶•“š“+.ãJâÈ#]ƒï© φË<áÇYʼ„>ƒ¯‘•W1O"Ïeˆ¤ƒ™Bû~ SðX]—„ãÎaV†ž;[1¸²ÉdL»¬ìnfÞ—Aíâ! 6€ðB³¨sC ™«VM‹]÷¬%%ëIZ©ÎL&JÁ†pAa,Á9l W¾b«F\ÂöįG^üž<Æbq r‰d\òÄÒ‘kÞ˜T§•ì3òì’SF %‡9QvL*¥Á¸‰[<oúEWeÿ©óÕdh§p$Q=•D ;âä´Á©"€”í¨mýQb¯ŽÉÄ‘$>A×½ìoP—QßüÁÔ2µHTËWË« §'Ê´h³¾îôó•<e:ûEûý¯·ßþ÷†,C`Eèó¼{1\%û;]@ÙôÜ*ÐúHëŶ…^÷SêGVZYM;QnÐóu/ðìÝkÝh#5( %-`·@"-=îíd2Æ4Hllˆ·Ž Éa×!i;¡1Š˜z¼1Ž1¦”~b(¨²7å,;oÊùO»¸Üg,ŠI´ÌL¢ÜˆtÆ0ŒõD*ÈyÓ{XÁÃYŸd 5fcCßîEþrˆè­ªü–ÆRòã
-ôàºÏ¯Ü¦P»ÔÄ2¥¹KÑãã|wûBQð¹Å
-¥=EÕÞ7w°¹Þ‘+9´rË6I™H>½¥CÓÏ}×Ø[iyêA¬xEï”áîšØY¶}E47-žAEÅåàÌÀÐ3ú-žAÝ÷ó•ÍNîì@8¾#?–…+ú•Kš‚e…U—NýØ hÖ`CìsÆÿ”4™îbb^öÈ 2zn9Ì#½N‘É&e|«Ÿ
-‚MËØïÕ7ZŠ÷6úT÷1Xó©–+ß´ Ô]™” Á?#7‘uN]9þÏx™$ÉqÃPôºƒNÐÁyX·—¾…¶­ûoý>HÊQ™Huya‡+ÐIøøÈE„™
-&¬­—#08èµÜur­ÄÎWÔöMD›oÔäeHoìŽLØ5VkW&9M 2¥ï,1K‚,U2èæëç6RerÈL[Ü ã0îÐÊÑ‚‚V vHÉ*åjÊ™‘õl抵#„¢ðmï¹­çaØž{E?c¥¸öÜeŒ÷ŠhK¬²¢Ã¨×)’‡a‡ô´Q28ñ`)Yr`žnÞT) ÿ°Ü6óÕé3çºqQr’rÑÂ~B?ó—ÔEûŽÄ˜ã6Çi|¢™ÖR0°ñI5c1Ü¥báÀäŸöè}FÐá_
- ðÄŠí´Î[I¨a‚ŽÊî’ÈÝfÇb·} ¸eËÞ` #´Ž¢E§eg0]8½a 3]è÷
-ˆdøÛŠ ž×¥0Ó3‘”€¼Ö ‘Ëg^áJIDZ¥•3p§×¿ì( Ï)øå«JðÉM dmØ5^Ð'†®’Þ¦
-[¸¿‚ÃÌIšB¤ÕÌòdYà9ÖÙ¼¢¯UÔÕüý{úModãˆpo–™Hhlûtr`<©‡Pü×¥%r+¥xÌ¡.“ò
-.=Žòz¥±Œ)Þ!5V÷;Ø„
-Å"Ò••)VlWí`ha¯)ÉV ×£ÞŠB¨ãŸ84d*èCýk= îÁ˜cØ;ÈzÁk,uKÈoüŒHaG¢ñ˜[ô’)¿Ü"œ‚ÖEï‰Eñ®¬8+{¦Ü‚1÷ž­E15`ɻŗþ‰õsR±€çÌà*µÎ,ï’-L@æDÀ×âÃw˜*ñ }ž‡à»^ÍJƒìPLuI¼)å-Ùð Û$iHæÕ èTEÖ¸žôè‰4ÚnÞ×Y•¢Ý\q­Ëuígh‰;'ù»ÏÞþ¾Ö|­ÎõOZ5•S8 Üïâ ~ð­UÂËÔ)Š.))]–"2ZV´U‹3~¯TÀŸwQèh@Œ´xD­z€Ö”íuýÇŒqxî0/% 5³H,ÿîg€MŽÚĪPz 3щ'bØ»•¨ÃÃLsöœ4Fv!…œÏIâtšJÝ1Þô¥ ’šuTæO«ÓrÞßé3ë ²%Åc VN»‚@a*š Ó©éZ% ±aÞj²ñc„ŽQêf'UQ4@>Àa%ç *¯ËT‰@’0ÍýTTÆÿÔÇrÃŒ;o¶Á#")júÞÌ˵ûF5?M\1¦wø‰ã³j¯"¦‡!’íÞ«Ç*ÓŽ.³öHñcÑš÷p¼;Z’—ù©ÒAä™ÄÑâqSe[-ÖA‚ò@'¢gô—Q"ŸN yòª¹éïìgÍM€ûìõ…J0~<sFƒÅ½ènu¸ @t
-çÛEw¶ðj*›Ä`Z+Óºø'.°Õ6ueÞ! ü|±¢¼4…ø@2Q´9Ê&x%Éû(É2ñºb‚—°AÑö¨ÖYœ’_†
-¾’†“4öôÊ{©
-¦Ú
-CB€¼¶–¬„éÒ|ØL›$!Mâ\¥y½ï£Ðj
-_fupË´ÖGƒô°„­¬";2f?ÚW’Ì(î|ïï þ˜l>=ëºKÄï}ş䔬£¯JÝБ÷4¡JuRÞt.C ˆâ¤Bô¥"ù~P.ôZC †¡Aȸß½»%/ƒZGÝ‹˜‰bÀqs÷6ô“™Y[üð* Îhè%Y²ì£nÍÑkDÚ%˜Žx]vD>kö‡I½”¬IÝ'~ûÎ7·Û\Ñw}’‹ah½7R%mýé/Õ,(úÕK^æô¹÷ŽŽ‹ÉPsO~/à
-$¿=DÀþôW ïaã=Ê=cçB]î\Žg•(?lÀ_‹ÈllŒÝn¥áÉÅ·t _€j,VQ“${*óɈ Þ3°©ûâ`-ã唳X~9(80ô¨ªNOKU(Úpý2%Ôb+ÉÕ÷Ë ÂVQ‹ž§Â¥|¨ÖÔÏeäÝk³Àá`ùÅP»poCZ A#L„1#ºþA@åUxµ’Þ.ò(“ãXFü³ÖîÁd©(ÉÞq­trRcF$vŒ³ü [I4;§Ñ¬LÌ„k·6ÃÍ 
-’&»ì³:§ÁÜd†êNâR²i.À2° ’;Üï€ †=švnÃÁv
-X.#Ÿ¢T‰©…FÆrÌÀ[þ£¼LŽ#É• *Áè@ Ê°#qæ•Zô•Ôÿ:ÏÈš®D¤±æÛüCÓ¼€D,¾ð„5_8a}¯c…HüÀP±Z¬óªë°“Rí2ÞÐ\s!Éò*3JáùËŸw6ë?Ñ‘yfÂ!
-(e™tÊ<šÍ9~MK("ˆðhMòüHÖ˜X¦éK^„I"(€LZpikQåüŠíÂ\ LxÄ7RT*ëÜGm, «‘íØíly_DEJÌ”TY$“$5ž I¦“"CW¦(/)Ô ³eèë¤áårÖÑÆH§ýGÒ‚¬êhbîÐb’äŒÃ[ÖÓ cIÀ"G™Ä%4XÑ)QÄguþ¦±?vù3AÆ(K^4’!øŸ²Û«_{þùäh3Ćj°³³s<ð÷¬b‡@Sr—ˆ†š‚‰m籺L¯l¡|½FZΫð_8¾ÀÝaNv #KŽ
-Nl8faÜ<ª*rJjOóã{q€0l vÛö~/±yiÕºjA(ã!Ïž?ü¯IÄ"\{îæ6ÜW‘Ž†Aý”uÕ^=GT‚xÓ­qà=m ìÃè7½zÌ^í=ßÎÙgû˜}þ¶Gysœd†JÓS>üe ^Â.˜¾~ yéÔç¹{YJJ“i´ÃR?³¡xlì§õ;¾ÛA;m8×]@ßï|Ó¤òàa2ºÛÛͧãt›ä—ÚOm¸~új‡ÖÆ0’‰
-c×U#ZöäYqž#‰ éLÑòd#"ˆ²h¨7\”1~Är]µƒ¨2Ïl²ïóªˆM¢€ª˜OÿŠ/μ½Ôùð¤ò‰sã4N—@7¯Ê2ÊÞÑÏá‘ŸÌXÍfÇPƒˆñ+O/½ à/ƒü ½ô”càGÒ¶þfe…C´•äIW¢U´bš\¢ ýˆ!^ K/³ìdŸn1C]×)JÈCRùœyv¦%óÌ‹Ø”h£Œ=׫hž8dôâ?5b·Ì Æô\ú¿!³Ò<R‡k‹î9Á®BÇ¢3L”>ô
-lÌ@YKuÀIVN¤jaæõ“Fcx#°>!=r*ÿ¬eÕXªáþ4&ifcgέb¼q+,ZŠËŽêMw*˜ç°ðü²ÆtB”*;mçÿsrj׆£4­8EµÒbmÉÑ?âo²üDSÆw™ÃcÆ*š1Do‡ˆ„QoËc*é Á²Æ¼iˆÑeFj(AŸÌ•,sÜ¿׈ª˜Uc\c1_J{kešW§øg‚˜[§€69;?¤è†-Èr ß7 šÙ`N2^"ÔG]Š±‰a~Obî±(ä¾¾dˆ:e±K>Ö÷ì yý~GƒÍ]¢_.ˆ%œa_}?>æ5/
-ÁÚ°²CŽÞK@PiÜÃ8ä1üô
-Hnh„
-xüG‚n§O\ŠÙ“v·ï@oΔüN$ëÔUµÈÞÒ'ÒTÙWkÖl2ÑEX3Ë4Õö$Qz*Á@¹^ÏDŠ’ôÓê+€üüK a ¦p…™# ½q¹9YÑ,ò~AÚÄáD ‚gø*•–ɪ|>× :‚¾S›ÊœAcÈ›ýÇ ÿoóâÿñ«Þ¬2®Î‹åÆ5~1î¸Wo îù[
-¾xÚN8Z¡²HæÔzuúhfù¤ó“-“©Yû$2-‘fQzÛ ®ä…Éð¥Âw”ÆCˆ±Ð !Ý †•ßôg.2m¢Ö<_±”æG¡Œ$Ä ŽÄ×Í6ˆ'“N'i4ÿ‹jÕF‹Ðç !óî³ÊpˆA.ü¬/ª³!ÚLmRå–ÏI 0Õ¡ƒk;]ܯÚàÏæU¦Æá8ø†@
-²=‘“ˆÿ
-:‡)®cûÆ$.ØBoò•Â&±”8†íGõ9‰Ýó |:‰’dˆ}Ô¢Ê+R²3ï¼j(IøÞò‚¹sl2[A$¢3Zh bw]æ-Z
-Y˜Å¤Õ«„ßaЙ
-$cÈCÑ<6˜lGër22ò|Þ„žÑ]¨—ûtuw*Ä¢†'øp¨i°øÁ¿ƒeÀ9†oõ“øŠR7„a*æDbÎO|„Pøc³W!µdæ+Æ &¼‘g[뛽‚b7l;‰¯bhC W8rò"U¹q•8©y‰+fŒ±±rÞŨÚ4
-›á³²k° ‘ „›h²Êl3ìæd¥ì‰«Uñïá;ô¨ÒNÿû@ä×ø, jq^tÞë+ =+[Èj—š$q)H¦|¢c½kZ,A› ,eñ$4ñ
-𸠵aÕ-óÒd_˜,p‘á†Q\Îø¨VU¿±?Üàù×eЃäNˆµîGAœ)…„|÷•ä($ËHQ`îÃù?6 a,óϸްÔ|„-‰Ð¹Tâú¾ hf”<2çÑPZ½(’.Õw-V’aÂ6ˆ!‘ñØ´g ž0Cг¯#´ˆ,uCHbƒ©z;¼š]ˆŒo¿šüˆìr¿Kh1\Yd;/ÿ ë-‚Ûq²¬]Œ)@zûÄ|‘Ñ
-™Æ9éRzb²‡Öü;’iÈR`ÞÚM“*6Àw꾉ÂK+RX ñ²¢žŸ£`Jb̲ ’3 ÅÀÚ¶R¼+–3 O)Ìà؃.šp2•oâÌ£W;ò~Æ>5GÜ®Zéç;¦œ°<VlH›ëuÔáMµˆ Ç_P5-ÿ:ih=Ë4ó¦ ,`ª¹¥¸2mz8>¿ì¡»ÔüÖ–ë#f×$ºp©1Ð× “BÙORT£ –O\pSxó¬†3ؼÿ];™0óò7ŽKç(ÀLÙ¯c(¢‚y¼ÕËâKÄ«µy[¤ûŒÜ© º#1ê­ÆÝ|A쓦²&jLVZŸ!NÐ8ÞÅ•Îep1Äfúºà£µÖ2$±”t:¥ŒIꃠóL(!‰€Ã‚PÛÉut…÷%-qÆ”€R)8¼Êä%«þðHK÷:oG(ȺQhÿõ
-‹J!…•x
-¢-WG4\š™Ó!«b©ò®Þ½.’M”ñáU„åž \®W½U¢i’rEXâòÒªsÔ TÉ£Ì(ÁlÔø6ˆ)UH^õ¶4ÆÕyY>㿬°q¯^ {,î=ûN49o·‰&ðöª`!ÒÐ~´RÿˆÉ€±+Û3—NýæžßY± ]&òß­ó×n(*Mx#kØ WÓô¶äþ÷úúÎþÑÕç„*X–"e¹^rO•æ¸WŸL0 39mÝknp«äѯÊò0´Äqø æ1Ô]?sèlè-¿QuuÝ ×±©Ø6H™¶$_é µŸ{vü(¤I:t*~Ì)IÁwnĬ gs#ÂkF
-Ûû²žÙm1äAÂóï@~ÈÃgÓ6/r["B1–GäÚæúŽ<¯4˜%ã?yÅ_ѲŠ®‹¿v®2‹²È²ÂåáÏ(ý¤J ”œ% †üø+5ï»ålÐ7{8¬)·™z¹@Ä=Y öÙ¼ ¼«j)‹[
-"˜g{@ µB-þÞ~_‹
-ËÂœ§€.oü"çFBE»v ¬¸û ÞA™im^ÁµÜ,¹"S0e­"⺕¿L,ˆjÊ<ñôÖ7„ºOƒÌœ˜¯§Ë.@Uk‡óYû˜hØŠ ˜ËtT:¡ Îjà.rVÔ«J#€ì~½qæ*Öð;÷–¿_æ>9Á›îx«Í}ŽoŽøðÒ©Ÿß!ø•œ_™ oUÖM|Ô‚ÏýŠ0ù“Í”‹Ók‚î‡rPÖ(ÞO0s€‹çêEϼ>c#GëX)°çüo3èÏíúìÑŸ.í'ã
-›¤ Õ#Í,Ù|(Q÷¾Rû‡ü ó%"<|WZz3Ö›¯Û¨°„Eå/&˜A@–+•êëñðêìb­“p}âàU§zH~Õ ¯÷¯P6²Ì¢a§À™}‘›ÎÛ†P², i[ãÄ÷*öÆ4Åè¥í_!hï8ä]ºøaôIì”úUL ñÓÚ†`û}qkÚ‰ mr·LšóÔ˜³y{W-Ž€¯"CÛ6¼ÆT˜¸H)°üÿ1^&ÉqÜ@=îÀ(0ky©[hKÞë÷ Ú]…²[¦¬f6Èáη(FfÜëõ+_B–›˜¨Lé|Ã5Q鼺8ð”%;JÖkF‡®cüU03âcòcM³žMCöÿ½²›ÀÅ ¾ EºC2—.Æ!ñ1SÞÓ–fÌ ”8‹_óß‹¹ä\àCº+cEh¼y†8ú:´ƒK+S!JväÝ ÐµÂc¿ÝA×ëÞ
-óElP-å\³z
-’kEeÕÉ" fV€âïZ£S3.¤âº…SŽfyœù%æ(d¦þ±‹É´¾è)RçÔ`®›°KUkÑ%:WˆT¹Ð
-Æ.}Ë]‘Öfðð¦4 æ%n§í³â¡ô'Šš `?Dõƒ)ÚÃ9!iØ9el^”ž‰dÀž%5J[ê1¯¾¯ÎPBÛOb˜ 2ŠÍO‰qùµD=ì”&37ÒÉ!pðÐA¢#=„¼Œç¯§ û ¤\°+a;Þº/ßáºw‚®€pÜ«kKÇÁ2A ¼Û
-£Õت”µd—cQÚ
-Š_u¯Žž#)‡žÊç³Pø”|ë½z Y½º÷üvÎ}rnÙÜ'ðöªÓ$#U{¢‡öq^ù ð‡Ñx yiÕ/߾ j3ÇÖ+/
-¡0äÑCÀ6´¬:Þ»…°l ´Úß–¹†®A™uu­þœ˜V †ÅÀw(.ñcVO*cŸ)Ò WÍ¥3rŒA[f!’ª¡du<«6‚bA6“M;¨¥ ¤…“¨¥p0ïK‚Š9Vˆ0ÓÊÓìÝ”èR˜EÛCÝ@Q÷ˆÎÄBL%¸,K*éSƒUü9'Íá[i™%D°˜VÁ†}…à!zªè†à ‹ž8éý&X €€ŠÓÛ–&¶BIÆfÇdaZh,Yð¶"L¸ˆ¥›!`Oh÷XöU· ¸žˆÀÊŲ2¦¾ŒL/î–:ÃøŽ ²E¬è$VˆnêUR ³®šq¦@ÅíÞ’d]Ñ”Öò”hÆ"-'“Hnr|)ͦP€^€Ã2ëñF}ÐO œš;µ¶öPVDÅÑ¥Æú‚‚rŒZfùâ"“Æä
-¹ª0“ÛšSP2Ñø ·­¹I’V«àœ&b¤Î¡R˜²AC<¡ e¼
-`ƒ—yú‚êNC XÏÑŸ^ò
-Õ5Ù)ha<—ÅØŽr€ä8‘MC^nAu“ê™2zÌÿÓ9׎_“¹ÎáI÷¼•æ6Å·úvá¥MÞØÙÅ`›… F•Ö´¾§ã¾ŽA‚¤ƒv™Ú-©fT_–Úí’+ÂH’xÌM7 Hè3»¨RÀõw/ÀiVx,ÁÅvëF-kEÅFEèÞr>Šú{Ûæ@ÖìAŒ±*gs@Õ䈪*sg#õ±Jæp´5¢ËÄÛ‡L‘¹ŒÑ˜vìC{BI’·˜äKˆ!*:ì˜":à[|àzG)x„8Z]!¤ `°.©àV¹È‘é”íð!æ¥ïŸ§˜ ÷¥©ÌÉn‚¸1,zZ º3JÀ}aºWH¢Æßh—ºvBcx…»ÜÀˆ•tð*< ‰Ÿžn. Ý1€“Îòã„“7ƒ®FERŽO§ -&vŸ›†•M1•}® •F7"‚ýQ3ȕ̪cÿØ. Y9ƒa„û½8X6†8!Û×.`ßXvÙúchÈû¢™ÓÖAƒ¹áöYü¦ÿYÍߛ۔Jï*¯ç->½z8Ä4eêK’~EƒrF©m‹X‡Ž} ¦ÁÀ‡˜NOg²ØÈ]d;ÖMœE†•QAP¶ä ‘¤\…„ÖMø:€ûÌÛ­¼„誮˜Øïi{¹Ë9ÙÇÑ¿]'GIÞ…i³…”´é QòýD1
-M*ð"cÅ Ÿe„ºšÉ–ý¬F4(:«ôýô)mŽE¥¬ Ù31]‹LQð`ì•ï1t ;…ád<\FÐ-„ÄhÀ”Í»F;ÕTÚrèË©¥tYý8¯M~S¦®
-ÿyg·þ!žòø¨ð´l ÿ·vþ²  &1ï7k¼
-lB"ï¬i)zA2A˜v«…ö†aø›ñrI®#×è
-¼¯@A‚ÿ±§Þ…§òþ§}’D©­[¨^G¼°eˆE‰üà½êõü)‚a§²O†c‘“S9f “…m²b¿iû…ì]{àÁUÕK)¾p‘Ûi
- ãëaR_Lü×GW\#7ÖMëˆÎÈK<B¸'ÆÈk‡Ö›sÒoì»
-Ž {t•s¼9l#~
-e°0Ñ¢ø$X Ög#8ýØb#¦´¢~5kW@Ø-™/&ýS%ÈcoM¬<]q
-¬•ôQ©Í®%¦óK6~9¾ѠĦ`Ž0LÇ…JïxÕ]¶úí¢À…fÁeÔÑ
-Â¥ú—¾Àᶠ//îFþ ò€&…a¥yé\ÛÜÎÓhAîq«)ê-ºR‰‡yð9ú ¨ !ø$?E™‡Þ׫ÙAQÇ^Oàî$UÔÔK"!±y8 ÎcdƒÝži>Ô Íè?Zvç!Q$ÍEõÊÌE¢Æ ië¥:«b¸öhÁy¥ÉÎ=µ²¿‰ËÉ
-€9ECyÿÎx?‚DCt!NHsQ#çùwÁ¼ü„~ñÒÈž6Ø¡¢‹³Â«Q „Îr!“_Êq úÓ a´ JêÂw ´oÎ0H¨Ò_äCqh|ƒÇ55܉°èsP‰G¦Ëcj$hà‚ßa–©¤ J°Äk`«¸ñÕ— Aì­Ø‚æ[˜$(aõ“Ôò‹gõåÌ?¢¥E‰óíb%4{ ì¤×oɨ2§%¤Ýj·(JP6f¶ëS¯Q¢m‹(Ʋõ(JP2õo<oÍ:£(”Ü£DXô%‚¢ueȈͳZ%ôt¦LœÃ(@ú5Jhì΄¤YŽd&ý]®„²Ö÷¸g Ïó<)Ëã(J4¥>ÌÌ2,ê¥Ô¯Q¢mo×a«T‹EI‚Špd“(éQ’PÉ*ÆDZ~Éâ(½Æ„7¾Wô’%‚¢×,!ªÃÅ°Y˜•5¢,AÉH\Èkœ%öúÜ¥Že‰&;È&¦ª"€}-Ü‘ߣ„¸Cy(Û]Îá=äÜûC”f4^’‰a£„ð…³Ç
-¡&cEQ‚’,‰@9éêÍ¿Q"@à=JÑb—#ù%t’Œy墄…»Ä³3¼å„opéŽuÐ .Ìš¬<ÿ{j…EoŽ‹Ï„Áë|ãx×Úd¨" Q¥À¶¢=§bi÷Š¤aFΕaÕ%ßÌã!/®ž³ÞXC¡˜ùÅ; [i[õ‚ÁMáßeçÙÀºjz¯YEwÓFQ±í*.x}»ˆÏÑd® N£šÆ ³ö¥m08T±uÓƒ}cà bî.Á±æÈ
-àuö'N¦Œ³¯íA¤ì&?g{"ó ‚’(àÚs— 9¨*ã´ýRòg£¢A‰8ñ,ýpB.†)%2”°X,8«ˆl¼}>ųג Îî$V¯ŠÏç9‡Å¬Š&,¥w½'R%.Ä^ é|Å$—½xk@WFêV?¸¸#H‰öoe<áâ^t·×_n臻®p”dÊÇv±!‡3þ$<üÝE
-+h?õ8¿—"•`B…4Ó¼(^l&‘Ál—°)Œ´á21&¬ÔДí)BÙ™˜¤j¸}‚–r‰Lï>g"Z,n€~Æ.*á[=ï’%ÄàÒ{)î°¶p妀ûëGTdb»%Û+°Û->æ…aì-*zßEˆÁ
-CœA‘JRBnL°ðc0àQthº3ìm™æg.Ú´œƒ(d›Õ~‹¿ñ‘ÎrºG@VgÕßk>çhèJïjÁ¦¦6eäS‹+Ä‹ÌE†|ú‡n5´˜Õ•_Hç;]zÎÏrΗð#ÑÌ…EµS!‘eŽÔ\ÿ×
-Ÿ Î$+ÑžkTÊ…Ä-t¼ïcPL¬~Žþ< ï ä…Z•µ HÑšÁ’À/É$«Ê³‡ÌxjˆÉd4 \+¾¬ÈGÝk CµKù-nå§`Š<„‰¸ðPÛÀüžk®Â@ÝÁVg·ò6çI|)·àÅbw$./(ñVóÐÅm¸ø Ï1>…M »Ééømø+9ÌRÝ%ð˜µ5~a˜»Å¾+œO%DÅ(¨¬w' µî%¹ïšî”!Ç£‡„…_Dzl%{ ]øÈ©QQÊÜ `낤^‰È0Ý
-šEímâÈ]$Q•î|Jj›E~¥!æ×ö‰õ™rbÔnãQÏÑ2çÎrÀ:p0/ÝN ª2 ÍSµ¾MOMó^ñDMÿÖükГ«j´3Ó½¸u¤üÐéÀC®Ðç¥ÿ ‰“/9Œ #iÈ‚º˜v>¡çq17 åŽGþ\”+ ír¾YƒDóp¿’ rY“+ÜTÊä)&0(9ŸB`P.eõðæ€ûÒ1é—E€Ð0äØŠ2áRþ¹/6Ð_5`,Á6¸FNBƒZØ‚«9r±¶©ü|©Û¶|`ü²F¼Ñ 9È»ØCIWˆB1HNGŽÀñ˜4~Ûß½?AÑE”;`'†L®YY¿2XŸ[7ÊÙrÑå eؼÌ*L{–ç:7ÂORܪÉ= ’ía÷Ça–Žþágñ\›Ü“,Õéq×Xç«€¿à!€W.×RMKvrCLpëo–‘l$=|蘹›}GŠ4©,a‰sm¡mƒà„{
-Ϧ8vLmon*êDÇêv–°.]ƒ¨’Wò¸ gÃûK°f#â¡(=]Ñæßø£
-b!ÿŒéÞÓ¤_1.é”
-¸~1¥´%MJ ÑŽ{$G¤'MŠŠÄ2q*QÒ ñš)AmáOyJþlXLX\¤õ¿b}>g`™øK £^‰õSÒ¤cœ$ 3=%M!ÕCŒ@³å(iR‚+Ö@~\rô)i
-étø?ÆË$IŽ†¢'ð|‚
-ÎÃZ^êÚÊ÷ßú}ìPe"ÝåpØVM2?@Óø¯§¤é9#oÀ?ÓúY’¨æÓ¢{Òü~E¿¢f†,à(¿Û‘ä?Uû_+Šr,õàJ{u‘2&5£w!x°Ç(Ñ¥}H’d\jÜ›Š„¦eux÷]
-8"ð‘ÞûËöF¹—
-ˆÐXíÆ·*2÷“Ñ/¿©„—e€’άnk çKk,tþ@"4˜Úf}ZA4¥çdYúpøëOßL_Ð`=BLzðÍ÷"Çú šC Äoö?.ºûf¯æÝ7Sw¬RhÓµÍü
-² 5Ê«rQÐ/y迼"êí%s¶Ðë:?.rÖï~Ý'EWJp7ëZ´èÓ…ÃV»¯ÚÌÐ"üô&va%Ë3l5™¶xƒ]Gw‡²%y±xY°Ç6ÂÚ>Wé.ÅZ »JpamGë[[%\¬íÆÛï]U•CðK6’{‘ì/&& ™¸f=âh–% 5eö‹Àe€†ª™º»E¥OÉZO){v~½ñ§¯ Âj–&}G&¬‹…Á,–¯þtþ¨”V ¥¡¨¤½…™«Ó8d®©ðÝX礤p²|E\%%âÖ„ÚiÜñÝHÍþý÷áȉ½ÀžD'£üëå!ð‰Êœª Ih™øæ3ëêLxÀ
-Œ½ {‡Ò¬<×Ù(¨ñ\õÿPÝ…z„y$Y÷y §Ž_`³ÚFýµˆð aBüƒÙ|kWÐÍ"â- ,jÂÚ*Æ+¡_0p"ä„êx¼õtt,-5ðò˜º ›(aàg½t¥’‚KMÁÃ`á &¾É=‡è¤¨EÒK[Åõ ¹¢tõoÍż㑑 ÞÁFMPgù¨Èsä‰HÀ¼°|E™ñUÒ(‡º”•ØÆØ{a%^ òÏuh-ª†U$¿Y£W!>øÍ麜û(·u9^²9/÷€QÑ¢Aûû)!uE[6-.€ñ–¬}™%Y\Œ%ÛоÈWš:¸ËÇAóZEY]7]ÑžY‰Ú•ä ºæ–°`R0
-qõ¸¯úfµ~퉘vÂlÏÊy›†@¡–‡56ç;ŒÛ˜ºÙªW¤nd󣸨í’9 œn»o%ïͦ"a3'ò^ØÊ áêé‰òØmº{ë"5lF¶sPaÒZb¶q/<Ö“5©*«$qwÄñó¶ ±QšŠ)ŸÃ"¬ qŠ~>ȃË6
-¬*)’Fø(zE™JB%œª~ÍYÒn`¡ëÆÿA:G Îrhf#õÓ?iì—]…g^`"®ƒ¯È ¤µdçd¬&ä[Œÿ½Y};ó‡¤Uª–¢xXsÖcÁƒõæCrà­™e<ú–çYè¤Â ,+ ð¢Ä–ÀßëE~¶-kD²
-!móî(£E'íX^:f°rKÒKK¨Ø‰1òt‹rÅ2A™›ý½è†EžŒ÷´…²áAÈ”ÁHsÆWÍrZ(wS¹ràèQóX‹q…4‚
-êC ´‰2¥
-üɘÓ+YÈÀLÉä#s}8GÍÂSãNâÃhCÑòÐæœÏúï(3%8k‰ÇºiÐõ¬1·pß‹ž©Ú´©2bak g»5q¨™©¦ä"þrš¸[Av×
-ÿOÀ „Ì®¥ä·Ža{r”ÀÓâvHv4?RD„ÙŠëÃ9(õ°ËÖºP_jê¿`×@èÝ¡.C
--!˜¹POf,àšà¾9çÓïÐiáíœû ®Ðè=:À¸B]×@è¢ô¿‡òW Œ yµag„NÑ5r%²!©w/R’
-Ü€[Ñé~ ŒZÞð½Å} „†9!~72Ö$çÈÆMšý ¸…ƒ‡ràoõáœ)ÓÃŒl¸@_á½ÄÉza(y3Š›ÒC ¼9YO×188Ö\ësQ–=
-…=B}}N!t›jñ¡z˜ÄÁ¼´ëRð}÷D¨™F…\èäÜt9`L…½¨•é^ Àè±1Ôr²çŒ—InÄ0 ¿’Ú—s®ó”øÿ×);ˆM
-“ã âb²Ùýt„2¨\!. IÑs„θ?¡»6OGø~·ÔFñ6•¿8
-%þâÛarûPg(bYã%#˜?ül[Î2-:É^UPTU ÙRÎP¦9RÜmlÄŠd¨¦M؈‘Ü|§d²ßÛ¼c§Æ$c§ÏÔäMqBA£8kóÌ&À•ðè;Äí3}]['<
-š ‰A¡n²âšå å#Rœ>ˆ—àJu‡é÷ `M¹1‹î›F…þ)643çÜ•MJ¼„Ÿ¥"†ŠüF½ïÀë’õ¡ š¹Äð{Y-µªþó#À
-H‰Œ—AŽd7DOPwÈ LB)‰\·—¾E³ê¾ÿv^èë{P™*¸à¦ÝŽü’Ȉ`p xüǦ=kµZZ¯mäxÔâÏÙ£d´:í‚xËÙG›eéÏÚæhÞˬ3/ÈnÓ½ôäóC –VùV+íEfïÙ|Zñõ^Í8=mØÄŸ¥ÎÚëáÝdFä˜År¦ :j<­÷&öãwÆ“Ïœ¥Yæ~ø(çzò¿ ™Õ昭–9i^³ÏîÌã×ÇdÇ÷9£Äxü>‚ê3[_Ì´X‡õh4ª”d”Q(‡yŽº ÞjuÚ“Q÷Wl–ððäĺŸÞ†•œ£zÔvj ~t±­Ïç&´†Æ…(”sм=®"O>z3¿úð¹úÙ  —Š}ó×–¿^æ9‡7½3ð­6•šsøMã·¿!^útô†á.=«O¯Íü÷£<þZHîÜÊHÇŸûsÕçtja§ÌK\uÔ@m¿ŸšA”ÎÅ«-Èè³uƃÖëË3{Ò Yï^P!/^s¶Ý/Ì Vð-èø¥Q«ü1Ð wAÜQÄ’R±cÛ_ ›`fÒ']O;~º—Í!jËqßÆú(5ÑãÑ‹ë”h?Ê}¢À>"×IóY{ ޵ÛÎûLü×E‚X6c@•¬»ÂÔSWémô R'²ï4Ñ®F5îfüÊèÔñó¥ï¿O{¶9§ùT™Û:©N”E³bĸ “Z¡g¯¾µ‰ ©8TgvÂ13KÄ®ð¨=Ôß ãÈyR .¼g®ï4d³#” Â*÷À”û7FùriÒVJg£ø ´¨E‹¯óÌz߆
-•fCiPé{ûm·Yº5 šmŠJWŒ”Ú-öŒ˜mâY¶ZoÓÚ¦ Äjˆåó4'Ùa«q¬”ô}Ò¿hS2¦žO*˜.æ´[")“§clüY è'©ÀíʵÎÉ/Üz¨>&¡A¾3ÚöJ$o¤(5Ds…‰Éj=@>×IЋS¨ëhÇÏ4RMö˜ >$ð¹ z“‰uý|‡F7”i±ýDÓK&Wvü÷ÁAœ@‡[üTxjˆÏÓò µ. Ñ¾½Þ ?€ƒÎ ¢
-sI0øRc}‹¢9uÚ*uÓ0Áõ¡k;ºÝ€‰Ý*äÅ7.GW}hj%3w~ói°£Àú†ŒÁýÌø©?Nãé…’zø¿}Ò¿Ðp±u ^‹.†5'1fØŸ#¨>ƒjsû6ŠLSE3<R:ËMj¤Ëp…|ãB`-UUê~#L´#01ð¯aY8›wUß7«CÕœ‡Øú®|´ÖVîA¾#=ò<“×
-€zE¥äóC“|Ð  ÿ5^¾C`Eñ¼
-“ï—9ÑùåQgγ"Ø•®á‚¬>ãI,†Òrc¿Øú#ЛÕë¸F`K&¦e?ÏæZu*"™‡Ð{É0ðh(Î\é‡Ì ‚|!­ÂQòàâ@¨áħËi`\mw2‹œŒéœyaÆè^ÙcèûýôÔ* Ù[\®ªÔÞ³oHÂRrZÑ3×Q¸™‰ B Û7 Þ¨‹ËðB¡$ŸöŒWòj,½¥?Ϊiro­˜ªðçO¤%&±ÓNv6î½ÆÓ ª" • C@‡–vú§ñï½ç7ä8€pzB€²#\Ø ·ã~R Ã5 E‚}¢ÐD¿Ä`þ‡lläðÂX¯Aüƒrʘ1ñ¦üK ³­Cƒ” 힟:ˆØFµYdÈ4û3)SýöI}-xùLß6Æ¢Ãu«¨‚Œ„Ù”bÙ8@ÖQ¸h‡Bìyå’÷ï@-|H:ÿ¹±®f"+zœÄû±×õXÎq
-²`ëà?ôõ,Ä”#Pæ;k~ñ:ŠSÊrCRÒqáY/g¢ðnݽ£½žŒBÚ¡ÌeCœ)ÁúÃt@¸É¾S•„Gpi\~ßÕÁ¾  uÐjJ«úíÎŒHõC)}f*ö ³ll¹›]£Þ8‡Ÿ!_(úëãz';‡‹¯„czz§Ÿ€Þx8î' WS8jëtÛÄápqžÍ8´¬Ç1?ª±túQ*h±–MZ'$l8˜ ˆk€(8&âÛŠ§m…ª™0 Á¿7Ö:q'¾ ÉI,F90…œ^;ÒÏcÀc92W’Ÿ¼s¾Ã衼¤äh÷.öú™”.»42ê~7f£t öÔ üsf?Šúƒdr?0"Òô%vý>‚*{X_L™™î³¶"¸„‡ìm±\Q
-njð÷Mùö”ÊN n€:2X>7ÿæ3ÌéT\‡c‘÷eP­¦%¾ u‘ãµ÷àÝì{ûMîLT´Âo>¥›®‡ÖÄ™ÊØ# £wjCE´à]€¡y¸Žª«ô¦A('b/ Zä÷î;¸Es¶™€Wqéø
-9ƒßµá¡u¬\b€ÕÊS´±ì{Dò¹&ÍQuaŠ|Ÿ?‘¦T“1½0N8ì?Ál„êÔqÚ™ÀP¨H¨Ê£íEÀ8rÛáÜöþ¢cæ$Å`‡á§µêó#òirK¾
-wâ‚ë ÒWrõ Ðõk¨­ØrI&4ÊÙæL?ùõq½„пªyKi£Ü¹ï Ž£È\›9µ
-xÄ Uì˜b€PJ¤S,Ða
-J1%ÒW±Í‚•ÛHÉÕxŽR° P`¡UÍbñÛC+Cv²”~ìcMÀ­CßT<
-+—8_ ë$Cs¬SVïÿc¼Ìq3IŽ(|ÞöÜSh™íêylS÷×÷"£øÿŠÂPf@ÎcVf,o‰Ïa¤h §y'H?CËÀßAà
-")*4»1¬Ã0%ÚU/㥼©°)®Êð÷l#@‡D_¢uxvØÊ×FÈŒ+þñC½KæX@©.Efud'"fgÖö$ B «Ö+Dª48¼È÷sPr¯à[(éuÜõê3I"µ¥ÌÍ sXöC&¢²Fe‰³Qicp`ÊɈHé½ rq s™u¾‚3+uDz]Þ–±-Š:¼!† ”¥‹ñ7æɌɷ—€¾@pE­zxë¶yš<'•o—¯ªž‹ä´¿ì)ÿY[¾jL¸™©`Ç2{I„r,°Èx¶ãdý*G!+êæ-d-ÅT ò_Ñ9 J.pRÒë2<å¤ÍÙvSÆ‹gÉ•{aØ\C°»“‰bœœ\–/õÔz“K‘0Û{&ý¼d«ha(GYŽiÖC‹¾ wŒ$nåÂ-ëî-ù‡r _q¦7é¨=íKd‹6±.-p‡‘iÄB 4£?‚ŒñþÛž´É1üŸ¦õêÊ=Š#[jQX
-d&«Óh¤å?Ð!M×aüœÒqŒ’ ™ÛžGÖæ:2‚1$XbAøk´V¶Y<¬ ¡¼cµó)zï$–w;h+HÀêè˜Îh©¶ò›ËeJõ„‡\D QãùF0Íó¥
-ÆîľÄÂ7ènÐÁöp¬J)2ó¸÷ˆ/£àUª(¦zà åcJ-9® (o1ŽýUXá
-¦¸°ñ£aŒÐÚp`耳çâ¥M×Öñ*Lé¥ÉÕÖ®ˆS3îá›q¼ @·è}î ôõ;ýâêýç#}þë¿ýïvù!g‚ÈIa5b@F§™sBà~?€†A  ´¤5ƒÐr¥oQ¥AURø3²øLìÿÀ^K8 BjÄl’
-Ë6iËLHãÚ`zçŒüôWxCˆ•GÈzœOÝ;~;ç>6·ÛÜÇïöª`ŠßŠ­Âk…ÿq£DXw·O¢âÏíÊd3Ü> ¯YÏâ5î%f<CiæWöy%Ø¢dHÙ¥14iSåd5Œ0M\/'1±ä"`%ƒ£ÁkRWÈÃn´(™Òß4~³ÒƳB…÷&H–äòñ‚tx<-|¡*)ˆzÓ[ž€šñ8îÎ_dœt³2Ë
-mJog#<0hÙ€óÖuÁM!o˜ÀåB¨²k+ ¡0„*É2Ô;â|ˆPºvñëåát'¡‚ÅôûŠ?ù +d«WñˆV¬L8«锊¢@4É!ë6¼ÿ²6ð1¬wÅM–“C*ŠZH¼Ï—ð{¨×®É§ð $HSÅ·YR?gáÃY#Ô²žKãOùÁLmÞ@ªd²¯Fð‚àéÇL¹û¥ÔH:4Äž|$k€×(vN••;„ïîL®m@AÙfÏè›Êc“<èWZ×úqc”o¡ØÃÊ£ @×äÎË1ÖÁ(3E¿ÜÄ•`¾¾³\¿l•Ý:c(85BS[…(°Vºùoaø
-‘†:¨Hz9ˆ
-3²ÆhÙüŒ–ŠNM¼5²¨æg=ÍÓµþÆËI²Ûˆ¢+è=”M£ÿ©™ãj Yì1µ›
-v‹ÅZøÂl%øÔŽ˜D‘ˆUt-ãm³œaY±-=¸!ñVÅLúí˜`Nƒþìh
-(* Ê£q¦Ó-ùŽÐ^õ;N ql³¿[ä­ßísï](Á]­kÑ¢¸‹L 7
-û>E–]™sÚÇ@ ‡
-]QÂÂTï’ŠÜÛªŽ´…Ëe-¹nƒZÎÐq|¼”só´sä0ŽTµ‡EBÀÙ$¸°µ%˜"^£ç5Ï{ÑÅD}¾(
-š¾î¯ïÊX:úIa ¤>ïéXC@“ Lñ~ú¥ƒÌÈ«ù猇3†»M½Ó³»ÀB–¬7߯¥)eìé8†Ù$¿Ò<'yIøßTÛׂMÁl÷ý)Š9J9嶥¿JŸc!
-rî+žò¨)Ñ­RÞæEu‚MH±ó5ç}‡/EŸkgXX‚…Ûij”YúËÞ¬‡“̸M1;Î#& ÇÐÊWQ¶†5‡âåÙHr·c”ʸ
-Ý‹›7ïËéäÖÄ›­0QÍÏ­
-ÉSÇãÐcå¬@Út.5˪]Š~¾(*üòÇe¢íºŠjÁ:ádçâ'¨`
-6äM ª9{b{½#ÚÙÀdÖ°E÷œ¢oƒ”<»6œ¡^¦‚ö¦P­„_€~(1[¯R$D¹ÉEóB/D
-»ÒùMór_ÈxWÚ9 Ή<µ—#Éêb¤j™•~Â͈©#:þêLJW!³E2
-4”- ‹uïE4(ˆq+\”ÖVT2U–«¹½[¤\q£t8”¹ä½=AR–EOõuÍõJ`!ãX «\lÝy?h ©iJýd*‰ÛÖó» Àsw“f!w›´IÙ+Y
-¨•ñ¨X_œ“²
-`‰ýð7^{J$GJ;Àôî7ÁUXð¾¿ôÏ üiP-OEH ·SMQ #PPID’¥_/j ƒ® ¼TÂì*>"õ°'X/êƒJ*›‹Õ
-žØàØ2{0É)Ó±Z¿^)£q<Í13O‰…Ý6¥ÌÛï‹Ô3­ÂY Ê”CF ÓÜMˆAŠOGë b„„A®]ÓÛ. pª ¨kd¿‰®ØÑÆ·û ,L$´aÈ(ÐØx/Xß!(¥*Kבø~}È1¼Öf¸!ÃÉ)E~®ek°byÌ£Ié½&É34ÜV€QÏñYìnO'žhÚ$¡² °‹ß+û¬.ée R&ì·G_*Ö«¯­sŽ¹à"8Þ ™~™—”5/²¼‚ŸÕ
-Ù€,yqVܯó³€äu»WB&¾ ¦Øvø·ÜÆ;X
-Ê$#¤´ÏËÐ÷Ä„P6ÜïEQYhˆºB±{|¸‚¶zŒV ­LÍ9¯×‘6n0FÇ°¬«cÝ&é’©…“ྺÖe‚§ÌstFÄÙ'µ`Œ:^9ÞÙ‹Rá(Ë¥ßÏIO¼5šˆ†¥Ïeh›_ñ<
-ˆ&9dø‡8%ÉØ2¾Ý‘±)¨…p7Wæ|«ÈãÍôÌÅ¢N°_뀞ϞúÞw>:$ÔöÚÔ-Aö½ò#‚HV°·¾Ö÷YPÕ "Û8®%kðäM¸¤¢æ­»ç€:È8Z@²oƒ2¢ÊysaL; ‚¤Z«¤BZ¹1EüÃþT¤yLjNqõâ]ÚŒ™´­O]ŸX‹lb8‘õ%ò®œvìOýf½´‰üçƒ+1žRüdpáóGÔ‚ò¿>§ …Až’YíÐ{A„¶µU¶J!VÁÕÒõè§STœ‚¶8®¢ëçnEŸïÜi‘Í¿þûñÇÿ>Ä”Í^†ĺþºˆþ„“áÿÿúˆ[°B¢‚Q V“Œ
-G£
-Ýüç/·ÏRø;q̧åSºåtš1Ê{E@‹-Â{õ,UxŸ{³ˆ¼#ʤaEã™; 57w¾]tiÁç;}2g“Šô”צ”Ú*#FÉB&e:NW;ÿOy¹d·ë@t½‡¬@‡_gÚ»ÈÔoÿÓw‹
-џ룀ˆëZ6žs›Jâaa¾¶é^ d…mÑðµE  ­ªö}rIùwWWc•Í±3äÆë«#Ó¡ T ‘à÷Aªê¹¯ŠÒè©*AØ
-é,i‰ 18;éÂFȳø6
-Ü8ÁÚg_ðšY5›;‰²WX‹Fò{»Î• ]®
-î3BåÚù Ø­;„_L8qôZ’dgùO*v"¾Á›xê~TC93w%¨ú1ê üCJÛÕ÷•ûŽßõGeY#Æ»§ðÖ’åŠ/F¨,ÃÁ+ ¶î ÌÒd¥dYÙÏÁQur®‹™Œ^ HÅzÕÍa€5¬`êgcàËù¦É—žgЇƒèˆ°–|2- I9ö>å9x>Œnú¼°¶$˜
-˜D’Ú0Ó¦ÆuÈ (ÎCâ#Á‹©0±!ÓKv6„Õä«%Ρ‘X, ‡6œP´´-v'º²F ŠgiksorI$ð,³ÁqQN1=B'Í}–õ«ºRäxMzF[å¤-6„#ƒV²¥±Ñ8Éy¨ %z µBøcÐÅe>Ù6›U‚Qb^d¦¸¬QTG˜fP„}Æ…3hYÑÿ©%ÆÊ>4JÅx)™i{žås™Y+z¿Ü¹K³1ÌrñÕƒü1Š¬tù”é[î¬" e*°o6ä × ·':¦”¤iÒ}´Sp:û)µ†Â×Û¦±†¶6B{‘ƒ49´H0?tFœ%ãT‘¤E±åìt®B6”
-ÐÇe<ÔR…h}Ú3NÏQ}Fœ…w 'cü5á3®L±w*¨BÙê%DÑVíˆk«|ódµ¼9åIæ…X°×So^Ì31ÚÀV³0䓘/\á</šä.¡Ï÷9L¬G,/ \„q£ñì€^s÷ï6i»©L h5±õsëogýï
-2=6Eûñ#»×o „¾4&‰ýOÜ´ÁHfò- ÈÀu˜~diÛm´Kl=}|íÉ¢$.W'luv”bbmBÊÙžÒfM®äçHéÐ)u¸º’QM †Ïp>I]ˆ[K ‚Hâ$i!K¸fÊ‹1Ȉ~Wz9‡qÍP
-e§UÅï$‡õ†ÐZÆÊ8/0}r,6«ïÜÈ|2†|±w›ƒ,NŠ)<wº@<RC¨²„a®òæ:'75
-¯ŠS
-¹ŽÚGI¯Ù³DõquÅVã«7W
-Q ~hŠ&þý× ô4ž2‰LÈ’ubòú9ˆ<“`耿àöw ÙyÞN•Ä¤šÆ•ÎÜìC4y=DO{ÁŸhéC¦M¼í˜^%ÂZ$KûåR e‡;„è[ÈßA¦”ÛÔáã3Ô3ÀÀæA ß…b)™&™YÛk^!Q<¾Pô@š“3X.½%wî¹aÈ4½ü•#7KŸ!jÓð
-ùºüÞ‘D‚\¸»{Âx1qÐâÐzò.$jâ[ĦÞ/Ìë’*¹ºå·ï¾€žó÷
-y©Â+äRÍ ói¬
-™Çø9(9$E;&Eò‰Kqhˆ!7™¬hQÅZÖòè’› ýÍ)U
-–¥NlåÇ K
-^ÃýdÊöYmËÅ?Þ€ odúÅ–þzñu$pÈx“úÊH×¹ûV Ý«7ØñÞL& Šûy®,Ú„»óæ¥1×4
-[gæ¤Ú§[!4|™¥¡øñhZ7#”6Z (ÄCq3*tRkP µð£DgsÛÕ:f˜@7Çì‘:zcì:M€û dÂÕíS l\¤j7Ñ›š{%{úd¡Ñ$-õ Ä#-„‘|¶–{z:gÂTÜBÄ
-„¦ÓÕµÛú#a3|EÍ"«q[¢Áü/~÷i"žV1A´Ö@˜iñ}~ÑëÙô5Êuî[H
- c|0Ý$ý‰­=¦ˆÄQ‚u,_Dqü“m§¾ÕéÏv½s5=ì‚*Q4í-v"ý³Ãp#RiÀ1&$I«œ^ÿê>eDÊC¶A,™ùçfQ°ï‘½9R8G 0äJ÷6¤WÍf™pÞÙؾÒÛŸŠFâà‰QÐÙ†8§k‹ÛçdU†Â³Æψ0fx3ë’`<¿<ýºl
-
-•±ý ÙF ¤·—õÈq5™ÙC¶ØF†!J²Ž‚0¿™§iH¢¢dxè’Ü$B‰Ùqï¬
-vü%ÉÂÒ#E£ìs ÿ6†`–á
-‡†³ð`œß@
-Îú@ÝC_Aý!_•2Ìüëv¶&Tœºá`òõMñG«|^ˆJZ¥0ÊáN÷!æDr÷9ž5·Ö’&³F“Â÷Ã+U}~ë cJN䟬ȟ¨‹C
-!Çeó>uä>†«jGé9æª=¸: Õâ¼ý轚`&&#üæT C‘Ìz„B2%i… †}×Ë·¶ç®BÕÿS^/É•ÛJ@W =h’ bÜzžjÿãw
-ÿ-%ìWöí1œ… ZD9
-âŸ×™3íîð›Gf“÷%‘sï<ªuGMfÚ®»â÷ؽ_L‹`¶$¹ÜéL¦ÓÕ²vß»È5`”‡0DóÒö*ùhR/ÁÍ(ùˆš-¶S¬‘)unE<hÕ‘;ݱêw’L‰+eœ›n½£¿‘î°o*Ìè–þ­Ÿúñ%0˜¿„Ý·e‚8¸i±6h©¯suËÊêÌŸŽwÈ MýP‚Âñ[†¤;ÒÇ"~nñ€ëýŸ.¿GÌP
-Û¸Öךjôéˆ;Ñ›ýIÏøŒðnìyé0^Öæûèæ½È{ÜaŒà< A•Û(2̤TS“çú8pš8ñßÔGL¼1<0GÜ Z‹©6Z×íù+¸±<èbº©`ÔeŒ? ö|¡ýÖ‡ȉ Cg›[a¢“ÏvCu1%qâœW‚‹ CͯŽ‰Y°§ãñ¥s+ HÜ(ú‹‰Ü6Þw –úÝ­g4ñ㹪p”ý{ŘLHóF\˜§x\å`%jlz»÷I°S+LIGùº%ñ\SéJh>ù¹kì ³£–¯ÓÑA‹>d¶nƒWb=Z)Ÿ1ïñ3ø¼ž$ðU€†ë)Ñp°ž½ãKf
-?¶žª±¡°C¯×yæL"]àÛÚ^Y‰3A½ó0îR6Þl>*0›|Æxÿ[Ñ„´ƒ˜k&"-ÕŠ#ùgtÃ<àï˜Ú©ß(SPľµLÒ¢6ô[®–"‡`¿ÉO§Ž„™roåÀXÌä>Žrò¹Çœ–$L¸‡ÃjnãÖ ƒ¹]Ë×Tõôà/©*À⼬q67{2ZàÅbÛâäS™OOÏ!¬’K奰S±lE[Ð^x£+Äs®5êBËù}ÙîãOÎôÏ8ú·µ®ŽÖM€qô‡"YUFt¤5%±Cg™¨¯³$™jMŒƒ€”„nA#=§íéUÒ•w#-`'±7×ôµ„ðÇM¾ •ÈÁSÑQ"â´˜G¤×ã³+hIãRÑú«ñæfkx@2gH×®Ëë5‹H¥Ñµ„þ£•«…™ ›Ÿ£„z¸#ÒÞ»¢À\
-V 8¬åÑœ˜«Ä˜×k >GÑÅì})SŽ¢´RðE{ûjí/ Õrðv{uš-Îyoak--ë[mü¿ç% ½=0ýÒœ~j³e²z¹¿wXE¡Dv ›¶|(E-Áh£¶zp%uˆÕøþ5*ÎOœ³2%+쩱jÀ[zÆ|ᔤM.Ézœ«AX—|æýU W]s@®a¬Â ‚°÷Þ)š^Ùˆ:/»+ᇠãÓ¶w1î¿é|{v¢jBÔ`Ï)e‚¯/ž{¹®±S*Õ†ôïûþ3ûñu¼‰lÉ7uª<g˜+Øî–^ž­Ì¶£•Ôõã)ê'YÀâcÜ·ÉnçS"ÝXªu#V–Øc{ðÛnÖú|°÷ Ã2ØéWœñXgÐ(Vuû×JºS‡y=Å}õ€ÇYT<þ¦Ýæ2"$·®—´FX¡çXe75Y4R_Îõ° oC`€òõÇŸ[SDÈ=ÚvXü½õçc>ÙЈ6_}ùPaÐ>ò"—z/<4ܱ,L–—ù'lÂæà
-ûÍ:“¦c4F’4Ê|ìê—Ö[ê€; óŠÝ#¿ÇCnßøØSžEÜÒ&©Ç‹f öÊœ<âP=7/Ê;Üó< ;z—Û‡5ëXn÷0³~¡˜gðÁ1tèêíN‚qšk1
-c«
-Rü=Skéé¹.ú•‡È¬3žÛÄ;sÙÆ-âª÷
-ì¢Ö=/=Bç·Gh|^¯7¹¶Òc0Û³*äÒ|\ö§î€ÂË@·’{7™5£ÆmÍ’º UžªÄ2Ó$ÄÏfß+ltüG=Ø€¿«`ʈRcÓ¦=b”Óu¤¢D3I<Žßæ>h¹FOÜó~6‚G"ÉåD;g²] "%g|Âé[­³y²HþWA+%3»½žÕK^{4œ9ʳUõÎ=Ps¹yM`ÉœZ/²Ò·l„qÊÈ0 ´÷%nˆª(Ù|'Ðcg¸Ï]gûó´‹Ç¸÷¹¤10Ô¿g°Z¦qOO›hò`φf]òg˜yvúZæé;#‡}Ÿe¾¸/À$êiQsÅ+]žŽ,¦NGµxïó©d<*í™BD¿ÎÜ1³'7?’'Ëx¿Zeã™36%àž$¡l_T ˜k5 øº\¦dÜws€K·7Wé7Õñä‘ñL”€bjÏAÛ á|f× r´!·ÞV—RÛ"À|£×Ÿ.4vñΦ¡ë@„m€Ïy-¾Í ±¿¯Ë¯cÕ¹x",tïKæ‹õ¼‚èX•óÙéÅ™ÃéþÒ‚†5’çb«R~(ùDçÿÄüÛÃü-ûoc(JòŸ§¨'½rç+lnGƒAÏ’ÙÒËá&êþâ3ÕBîû‡’O¾u4ÀC! ïÅ•Ïó
-CÁzHydæ®?•0 ¹¾áJK»×XíªŸŠ~¢¡!\ô~öéd˜¼3èöíÏ5aÇäÞn‘YÓ«ca]
-l²·£Qá°9¤{$š·õ›évàŠ´(m×
-Ž¸.%Wxðgî5yl‰*>ù‘Ï`ó÷±²’ éünI‘¿S°*Å ëÒ’òÅX#ˆöûµ¤néhüv%zÖãiÎ;—=T¬¿¥ŽQ8]ܺ›ñÞV¶_7s¡.Àk¯‡Æ¾pÑ*G‰Ííí¿Çû
-£¦2À¸¹¨EæƒaôñAð»%Þ–í±éJ>0fFž‘BBìl7Àã)[i
-¯¥ÀÏõ:‘>|%ýY’a‘8[y¬Ò¦Àh{™ëh³„Î]a,ºù!lÌ)|Ü
-âpiy^ZŒéG”`v‡»I,`Ÿe™žÎ&"¹»®û‡?C‚¼ûl7ßÁXº$Ó°dQ£ð=/ xJø½Ë[щ”lºÓHyçaô<«°"}Æ¥õh ß]g cF Ùñø\êÑ š/^!Ù'€\IÔç€òÏ¥`~®ùýSÍþ_ÊëäÆŽ °ò¡,r%™gÍQ^40'ÿ×ù‚ɺ^ñ¡Õ€h‰J’ÿ ܾέ’ÛX²²EØÞA¢ðž>úm<dŸ"û<£nô
-ÁO e»µ”G«bxñé0/äa\Zb•OÙâ¾äSgóv"k4‡HP±3õz ø»ÿëO\úO†¾*<sÖ ¡pRÂÿMAáÅšzøÞVçå;×{·üÛú/@½FÅŠ%þÌqW¸ìÌŽ­åøcPC}G ˜ÁóÍû#ÐK ~ýIRÎU>ª‹(z¹-c·*ú0ÔÛ™”I+K*ºèùJs«Ï¬çöIJ璄œÒ>öþjöˆËb @¶xiûýþ›¶Ñ's
-âÇ·ºÞEÞéßܾb~½ÁT­‹±Òc´³Ñ’»<ósêp¡¦iq¹!B×%•vû3Îv°§ÆóìÏî£J/¥uTgOÊ1ƒòëšï¤" G
-Mé¯r”ñ:Çw¬¼
-½ŠýÂlèK¬c€Ê]äϘ_o0]-øÅ9¦
-\´¯%´y.[F»T³lI7“ì{f-~ð¸§8ui3Û2¾C:kËæ{¨Ë‰»ÍÐ1X‹zñOjÙºÊl»‚£ŽøA³†_¡‹a¨úŒ–XÛa¬äyu›åû6h&3µçÓud L¤Ù¬ý
-ÝÓA¼4â*² 5u¿OBÊà&«ml½¹-Áøt“è¢ø²Å~_Co„3oRt‘uÝ¿"†þ*”Å'Ç6ù
-¥×Y~"c½ Q™x½#Ôp[ŠÔÎAë# {8ØtÒõv/fFw/aËGZâÞ Flûy{ îC9û±àé
-DIóó<Ê–(ÙŠ)ûwÂt&¥u72Š³&L&¬aL1 x´ ¼æf È쨮´rÍâˆ)åûÖÌå>ÉTAPïÚû5¤•:qù¹û¤%'d”ë6Ö
-ÖjëQzZü[kæx†y™âŸßJìNô2}íAº ;³å¿Þ64ï™W¤~1õéUrÅö²DøÌS¶4œ€bzÍ×\량Æ­GË
-WÞAÖ5Îœ¡ç®~䨋„Ù¯ÌÇô«Ï™<BTeŸ¾ 'oVöÜÎÙ•§×§OAŸK8‡|jÄòÚP ˆ^ÂÚ¹fƒ.i2nh@**ibƒ)Ä”ÄPø:ŽrÿÐÝÎa=TÊ6ªʘ‚vçòÌ3??‡|¢É{ÕE¦D"_ßêÔºÆZP“¾÷˜ŸUµo*=G1ÚqF‘ùe*íÝÄ;¼ŽVݯš:ŠCËkü^ˆù>¼ÌÈÅÉÄ!S«MÂY-,7ÜG’ùòºÀ
-²ñÝ ÷Í¿£ %-Wó'|ÒWØÔá5nÕ)ôqí]|šõ~T%í¨ªdÎê$ ‚pËçË&·I äª, ÑU á IÏw;×Ò¢Î*Ù¢q~ÜJ4ʧ?@ð®¹Æ¯4¶<DÉòŸü»í› –bÁã± LiÛ”TWÏû(…"{bå±>Sª–.ÝËÖ|‡Ñ½6nP1ÚàdóÆR¾8Ì9¤Æ˜™ƒ¹fJ' ­™;¦/‚ôßoëǾ•ê!M²9ï!âÂIªñŒK›b²©eÏ`Gr@Dû}ÄŒ»ûIÕIJ ògÒïÅë£ê¦9òsòWNòÿÔ7m^Êð3'Ò¯5ú’x˜4%ŸŽZ3. vlôÙ!ü¾•ÝqÄþ¬û«ÕÊÑK|Ó¶?ýäŠvŒà¼Ø² ûpmõ¨§|”Á¶Ò2Œq>Ôcݸ_è¼¼}·×|=âÛÊ8¸û!?Ö¿R‹íZq'¾Z'r RÁZ¾Êãw^]8ªÌÐA×÷ã1_¯ß±áß5|ú˜WË…»³ý6ÖJ‹²ëíyvn[käæÞ-Ñç¸8Jœf¿ÇÃOæ²?5’|®äݺ'-üvh!>iñ_ÈçÑëM0EÏDÏÚöÙ]#ßÒ<2”0}b<UiÔz÷ò}©=Š™ì%4“
-—äL¤c÷Ê$9‚°ýöD¯YÓc.Óñ-¾/:צ 4cc@,YDs¬ù‘ë¦Ëu_'ánÍÝ÷­5U©Äòº§\Ü!X5È6NŠ×g ’8¯¾-k´›ð©ú8j³ï‘óµ„'÷>#È5”÷¸à×úíÉ–§ÙÛb¡ÈP©Û­Ùzk•áÂJ‚ã~Ni¢t$楊÷Q_ØÆTXï=ëxl}w'œÅÕm³Îå äïó—»„$ûR
-ÈÀl×”$§˜SÌI–Iôü
-å6D´ Eùlp±¤>³Ó}në9•¯lƒì¶]±•«y—¯2rˆ–o^úmi
-I?#8ÏJ,Wo#xSã7_žý}ƒ•ì¡ùÉ8c…ƒeÉñ/j’¸xR®Žk_1gߥûÇ>eÓ¿zφ êP“¶åI÷ù˜.–4ôvg_Gó¶€à Çxkíq±[xèßa¹4Êù”ò‘M7¬D<‡9ù‰æò©>-é…i1¿mÊfcYI2¸¯òøÖÍ›"*Ëw.¼:{Üt¿86Rq„»÷Ç–¬0¿në0½¥ìcËsc¼RêÊõ³Üt?T³Nu LÊÙßm™ÀûÖ:sï÷“‰~¿Íþ•>‰~®}\ëGí_<`»ísIäYõcÝ[Oœíºw®:¼Ëv÷âÚÞ֓ í6G?WGÄ•ŽÇÖÕÚ´
-T¤¬ß_ÂÉèf eáþàé¸þa8E¿þPô0:ö°~!2Öâa¥½×…žÐT¬ö9§ú£¢=&Šo-¡¨š"¿¶ÅC]œbÝÿMQ-çaɹ3òkÙÌ·¢¿Òñ±nÕw«„$Ϫ…&ý7E5ìq„±ü¢H‰{{„õ2ž§DÎÑ[ÆŠz
-³Ü²‘—>ÏöEñèánxt–ñ·ëOÿâö͉uîG¾C¯(™}/…O°‡b!ñR‚&Ž,>=¦
-^6=üœ/Ù5”RÜǼ]°’^g=%ý”ÉÝûko.àaVDŸ~-ÜA6‹Û‹š¶NËÈùÅÔµ¬ûØЊƒ!3­‹’q’¡•›ËÍv¯¿³EC w™vn(ÉöÝwP‡^1
-ŠKRZ`úØ߈èÃ'˜–ÅÎ0w}ä)’!ú €åÎD.-íçLNîžgÄÀ´à`¨&òö8ÓòB¥*V¦Ðè93r?ý¬÷ Ít½Bu1Co…œû‹?³
-\’³‰€)ê>>f+Kßõ¾½Nj8yÇ4²ÍY™“÷®Íw ±Æû¥ûq-czçøãs¸Y–•Nù‰òÿÝ^Œ‹ª{¾ju@Ncî t¿6çÓ‹ý“§‹'oÞ?ÊC% jcaýš%RÜË+‹¢_Ë¢0L’0®3E@ e Šw>‚÷YäÊ,/i³®—µ=B~mPDKÑñµç1b,OPî}—}e¹ºûãšÏ,ûQÑ‚ÖE8ľi-œüõ‡+^–JÜË’3plj[§ (EtîÌBÂËÜëªÄˆ½>%, 7Úm"1ÊQî^‘[M d“8ºÚ¶{¢¬r²K²•×Qña(ª{íƒèÊ‚Þ Ü{GQ !8^}‹ãã"qÎ(±?º
-ë¢ß2Úß)2Z»J¾ŸcæsïÌ¢×áÞR5|ÝÃvå¼³^~–’D Úà‘íé±¼*°œÑ|ù–ðgšk6ÕM$dq4Ð@»­8§—I öð2¿5zÌ’`ä£CO8Õ~gYœá(3«#ÇIȶ< ÖÎ’‡øÎ|Ǩ‘¾wwÚ¹ çlw“Tv>tñV2vTø9a#ìûRmE<^á¶{Ä+KzçúÏîO +@sõRò#q*Ö%ã¨X}~‡vY@þ¾ÍÛ«jïf>»ÂdŸñ71´¯£âEB›àØ'ô% µ¤„];/»ã<—t<1iE„M /Ó3*=÷FLÙ˜Jß¾ÇA ‘ˆ  £Hæ3g d˜h{Ÿ{ãR2C9-à¸L¤ÝfüÅIyÎj·óuT¿üü.IeòŽ-´%½X–|§‡íÎb^n:m Fï(Ç(ñÕ{¸ o:þ¯2NjxU“·¾
-H‰Œ—Mr¤¹ DO ;è®
-?Û>ª·JíÒ£G=Gñ†ôV{4ÅiÙ¢sý–ÊÚ.ÛðV¨SÌ9„ox4!=¤Fta×I•˜nP„¤žëXáÍÝÚ˜£+ÌâÉ ^{”¬ Tr®w¤PaJ1.u”à(½»<Iþ‡[
-äU¡ôל¼ÚrÌÞúóìFú{æ½ë$@Æ…ªL?Ÿƒ3æ'k›µÆ´YNx‡ð*Ë0AFŽnj„?O¥¨ÇX\³ÜGh®Ø‰S›Mh
-ÁǺrçÐÞ‚ç< åî4féªØ‚Poo<kC”L>µVŸWñÿ4Î_qò—­AÆAõV+´_ë­´Ý1ÅÕ¹…¿ˆZÑÉGlV\A½4+ æ~Õ(… SlH&mM㯸&p¼`~A TÓ8µ".§!¾ 8^^ël=&([¬à,JnTЭãDç“nW~ƒ,òÿœˆMt·¼Ç©è .–» ,Ãy¹_ý[gPµ¤U‹s_îÕ3x}ž“(T§ i<µâ‘¾‘6Ìëêß->àh8ŸtrW©
-ÏCÔ¢¾~ª€}É>‘À(«‰ƒ@“™©`O†¹XBÜr.Ëâ3µ;$ƒ®£xFßž
-‚4Å
-HpcÆOún ¦z+çoâ¨åEÿ¤…Þ@º„f0ko¢þšÂM´ã¤©Q'‰=&¢Ÿéý¸j)´™Ò¢õ˜É ˆÄ¥0Cž7q~3åo ÿ=½yÕo ¯«æÒp/761d™Pëjë“eÄ&“‰¯»š[jÅ`ôj§ !¦¤z¸Ø‰ƒV4†îÐj´º’sFZz ˆ(jÁ˜ŸK±Ú‹ØtIõ d[¦oäg] úOÉÿ±CS¶{Ù—¦“*K ‹ý( 6©§µåd Ã%-'}øߪ •F£AÉ
-\H÷å©ô6 !ð?áÏ`ÅF,‘³À ¦DñZ†“’˜ø~Š`‹ä\eîÑ0¤ö\„Q¼!œç¡«éÌhû(òB‚¹;Í<öƒHfwµü¦fÛ°ýtÉb¤(z…|·¶ûb“ýÃà¼>o·‘wm‘9¯¯ÂöÃäæ¸ôI Úˆ7gxV+FEk
-y`Ö+õðœßO
-žZÙú™i­’‡Ë÷£Ìì?øÛ6lCèxÚkÛniýñNòFÝù ²G4‰“êˆ[ÍhÆ FVž8SÍÐK˜±f´ èpH‚ È\:ÊLiþf5Ы’YÉvâ±W×»ݱþ@˜©xt\k«&ýL f)Yat2,ûÉ26/ÖÆ6.ùÓ°UµJ='©U€h\G´ê]6³h<3ZF  È~®Tml `¶ ,bÐì!WW!ÅEŠ‹¤7-q‡ªÀ£û߇Ã7Ð×;y
-”‰j×!Ã}XeÂ*ß!´É¸¦}?ÞnJï•2E>/Gr8QvONã.ý Hƒ«SÆ1ºD—TŽ³#¹EN5Ø¢ž¶+∼Ý&èdüJtØG>Õ®êLµêx‘$t™¸ÇpÑKh§‡Z½‰ÖS³iÅ¡Œl'ˆ&Ô>Äâu‰Çg°C0ð¢8ËôKïRËI¦˜S´&ùõ¼€¾íM-‚l¸ÿa:&|Ïtp¶ˆ\©]sö’ApäM½‹œ@3í{ ºBè’"Ñç¥ý¥!
-$\·7ÅÒEÄ:¯þÒØwŒ(ÀãÏ«¿ƒ$@4?ÕoÜH‡‘n-|ŽFÌcEµj²&¤­°ËV…³£«Ï^'žR¹õl
-›ly ,ïX„ÀÄOD Âmf©Õf{–
-Ú˜Z%ÁLa+ª ǾŠêO³R@¬¶réíÎ>²û‰m”¹ÂT*übå‡Tzaˆöm×ø’30õ½~˜‡så6 ô¿·^¤…0pÈŽÄ/r‚xÊ' Ægk¶­Ÿ¨y"Ébí˜PÈöÄød0k9‹Ò7ȯ??ìó0<ì"lJmÛR $U2Þ?ÿºcäLJj¶c³¬¦‚ùLeÒ4À% &I‚dо˜²¶Sˆ3ÁQ² ¶¹J
-ˆV‘‰€9ã`K´<³ª¬“h(øEިР£•qƒ¦²ûE… ë ßv üA…&|û¤!¶q8¸G.höN×£®0üÕ-H?a4 Öp q§¨™S±í|³R€:Z‡= bE3GC
-î°bÑ'‚07ì"u÷•¾ %Èü<÷…Ž!“¼’õëãú¹XpyA.Þx¯? œJáF¹Ÿ>4÷yøÚdb½œQå¼båرm7jôci¹1sžÙ;©JîÊŸ:é1Øx^<$N”éÿy¥–z„“FUóTTöÉBÿÍxýäøQ
-¢©ƒuÛ’ð‰g,óüÎ؆œ_»n¹ŸŸ¿—ù*3e·¡ú¨7)Ajû•x°~¡7ÌI‰A ï&ÿ_©q˜7š˜m¡ÒŒêµ'–ýÿ]0¼Pý%6§óeµšA¼ÎYb\„ß]ƒŸÖ$5æ}ÿÊÛ!½&¬.ÑÄwu£¢—I\5¸ß’4Îvƒ•ÑÑõ £§„‘X{CµçFpŽ‘bßrTü^>bèÜñFâèŽHà®ä;u«dº|Ý0å¤óú¥Ä¯8ܯ٦9-z%?zæQþγ¼ËÔìнèH?*‚aq¼ú*ÓÇq2ñŒ8öìG!æÜ&1¬¶GAN‰U CÝ;,™bšŒðlc zSíWî¶`Õö®‰kçïm§6rìöîOžt0ü Þ꘭íÜæG²ü4ߦ–žÕ¸–Û›ºôíñý#åXâRrëzó ¶ÑˬMyÔG%¦¨í…!˜¬kbÉmŽ?n^ââŽÌÊœ¯G¡0)¼\óJºÕ5€º¦ÝG¹—Av’5HǾL)3?a!™Þ»ìØ›x›~B<µüàü–úàóž÷îƒ_üãq9+õ³b–&YjÌòگ⟜x½žŠRb âæç7 DÏÞOëÀl÷IZ9ÛY¼b6ó¾ÆÃãW:
-Jeë:íE·· Ä…ûQ‡%Åš5K3=îf·ôÕ%:oÙÏ*‘”m´Ø,ÖùXËW%’ÓôÜø\$Wêhˆ|ïÔör›=2Æ
-¯õñUŸÌÿ ì%®¹Å‹,³(NoMGIÓcð„û5¶¬v!«0HŒAŸzÁ$ rÏc”4Ìt¥‘öEZÐSܳŽ¢ór„¬ºú[wÆ<Û,a+2oï¼mr ²M#ÒÂiMkÄÄje™f‘eô ¿¾w̦Vñ”• E³Äég(šx>òIéù ^ë—/ø¤°¸.âI°Q9‚'gñ‹EŽ{Ž»Ÿ®¸k¯ès¶ŽÅùôø˜*Üp räx_úScÏlÉ&Âm™ÑF âœ\µ›<÷l›ÅÜYædcΔ°©¬¾³u{–à”ÈØìKGíÌÀµóyÍ“`”ª1¯€˜Ïd-r™*~ ÊX¶qâ‚%ýtöþˆ÷8`ͽ:Ñ,W{Ø›øhâZ“QÏ ædGΖ.K*½Â`8†üŽj"_w“æhgMÒÝy ê®äÇDPV‹?šAölÄ›s&U{ãöØ©2ïKË8“P2¡~›—ßð¬ö…·Eq¡eöºû”(5‡Ôö÷dø¡(%>hû(ç%{‚W’™x(é¶>%,g0åøâ;¶^E¼Ü·!‚¬4Áªê!ƒ°ïÿ~T&øŸË<Jú‚R.p}—Šp%(©¯Œ§Ö¡•YRÃAk½wùeœ”f³ô‰Ltåvè_îçÌ»v ¼Í2°£7gvíŒäOY3a_i±¼=‚ɤ¬ë–õ¼µÑ7Øæò>ŽbÔvìv$%Îû@ÿã¿o¥çÊ`çX“#׻䂿- Àøu$gÁ­¼Å?§Ñ±š ²±ue¾*Ô;-®dÔ_û¾–³ÞžC.%×Þ$ÚV¾(šô¦$DìPúŸo¿ýëÛòöû¿¿ýößoZ›´
-ikä\ìú÷xÈ(å³þ÷E¢Ä%M¤Ä(5‘ŠN [È"KBÐî"É´Wh!—
-iQ‡¿úI8˜.£6Š"ɸŒö]ã;Z„6“kç,a‡I몈ìåûÂÏZÆï^%9*â`Éãç}þ‹ï˜}=<*òõp›bs„¾_øåUEöª:
-$çz=5G…&'œçc‡ŸJ>LjžôR¤“‹`·ÁÕüÎËe¨$£Qñ¤°øü¨ëÔ}4ã=Žzmâ¥$Ûe}ëÛs‹ÁÈdâЯý‹Q}(¨xù§ï<çÓmž
-{¬š,šÿc\)ª”öŠUMÎ\XeÅ<‘³ñ¥†ÒÇÍî6ÅÔQâ_}“³m”ø*áYðRéþQ ¼x[ôvÍ¢}`u êìßÙLuÄŠ¥Ž’=Öô¸ˆÚ9Jˆï.%}(qÔÎ@Æ×D"zVzýŽ‘‘†Kœ• vÂÚ®½„Éll„ÏÆ™v¹7ŽþãÛS·Öv9‚žZ¹Œ"‡ ¹à€
-«vÀ>Ñõ-€©5B•ýqK•s="‰ vÙéQº&$Ôë³_zPÂCW7ß¿ƒ¡ãD…¸é‚¨Ÿ[þ¨¯’\¨4?=P_^ËP:¤à€Ëz’òåz(ÉQ1òäkK ]×/¾sÙA“"´ùn¼ qËðŽD,4ÐDµ2J¤½åÜó™ÚW㵆ò%x'š+†OEˆ™5Öc9ÆY‹]¯Ãð±v¤^(f %>¸ù=//sòBGâ”'ûãå,88ºl× •'Ê€û83 ËSÅ®cò†ž#hý¼Æ˹ˆ °7ÛCÅg3´Ã6¯gy*z˜øëe^óô¨Ï
-¶Îƒs@š^Åõn®ÖðkÐjrêBÐ r™!ƶ:Ì¿!tzgw
-ì“éêFmá—ûøIÞ©*mª%>äK‰ó±2—f³ŽÇ°Um4¤
-ÆjÆæ·!=52§¶gK.KúþëPtZwññ(;Õ xÿÜŠ.´pD×µhQ A·Ce‚
-€ZeÀ `e€U]qñT4!†«aÕLJŠiÈhÁï‘„Ük´áA˜QžË!Ž2¢Âî«øa_âËU>J i±•…*üú´s@.;›îœÃÑIÌ>´lòæŽÍùP²¾$ù%“Â$ãT„ ¿‰CÐKLú8^F%ÒÄÌ(EW˜Å-ùÔ•`¼ÑÌ÷l§K^&基u+A"§nÓ‘XižŒ€êúªÎŒ£v·wÿÔµ;ÜlH€s¬A\{Üß
- ‘íÙigu)Y³ºŒüpÌuo—¹îßýQ÷5¦7Ø
-zUð;é÷ À‘™R“þPò2©÷ =¢RÇ8r>ø×(?êrt¨Õ¡èÏ©èÄ·Ï]‹>r'c<äí1Ø0w^šu²^xvðS×ÕOE]¹–¥â_„0ðD“ ü¢¡¸_ 
-OøïíT‚
-NlØK…ûS·¢†ï$@…–ue¦‚{'LfWS£TBaÌJè觷ž=œ1)ô4 ø§&üÚI¥3ì}Ϙwè`¦^màl@"}²6{¿äD*Ä €(:¦M-_ð}žq:e˜Áë
-:5o÷]p¹ì#ii•T™ƒh ØýED·bÓþ§–BìÂ?yóh?WœC<gçLº” …½¿¤“Q˜Ð:•(‘f¥Z\u0s)`Nq?^m†r¯ù<Õð©GÏYeïÆÂ7 µƒÊáå×°t)µ…ožŒZ±{~HíݨŒ¸ À8V-vwUé Ä=âšã(¢2Å°à̓g±†|åa—’…í¢ŒE===œ´Èz¨š˜|]¦(âÊÈŽ´¶ŠMÐ6ÒŸTŒ°ÚÆvG§¢%æ}_§)Ž Ls}IkÅz&˜ÅÕ9xGþ¿>”0[ 2eî/½Öh’L#êïÓ%^ÙEêðé¦ÔE# ¼š×ðd³Jd“Õ/‰Î¦Æ"¡'“¸-‡F@cJ<m=JLÍFVÛ KÑBgZ%Ú•Â6GümDŒÐªÂÏZ ±0&«‰Á@Ć³íµ­Ý£é|%ºê×
-im*„i%Ò#t;(F9á3³øÆÆ[¡Üà|ŸMI9¥®c&“§3À»y ôTäFd€JˆF Sº‘§êZDÚ5rÃXç Ã~cKv¬KfI ÿY ¢sØð
-(9‚ýS™îeæ$<A±Ï<iJÆ—6_5õšç*ÉiœÝ9j+x˜×üðéˆ:r?& ÇW¿ 66ÑcLÞ"|Á—ˆ0t?E‚‘•dAÛ·¶ Ü.­~a¥Mø
-“ºdW{wd7SŒ‘éÂÅ)´c Ž@a©¡:îò¾”:
-s7ãPô¹ŠpÐ.OØög"6¸! G xØcô(±²ÝïòM˜'µ°©ñÓ 4 GϱYÞÄ Âf”ƒ^uìÍ^J¦…Ä,àÉHÄb ò’9‘>lJíaš/%ëS¸á”Ó÷•/ç(ÜÀl9™ùö†9ÂlJ¬‹ôñÊ›hÊþ*ºP¥é­ì5mBë~zÄYCÍ Ï¸vôj1i ¾‚­À­Öy,¹XU™ñøû>˜é5 + «¹µcH›†~}=.Q%9Ga„š-d_Óì*as‰eAÈöØUP¦ÁÃa((|f‰ý—KŒ,’ƒ!„»„ÿxGA¸¡åˆ[:·±Ðd"‡<ÈÃ9°r41¯Õ½ºøJÐá!ÑJè×£ù›ä$|˜SšAçVo‡)[ÉðÈÏs LE+Ù (aÝ…«q4qºPËìÉ)ã ‡•@‡x‘®„]>ae~ Õ“?¶-rýXP—a9㪸“m˜å͘ŒC9ùk0Ö$K¥NîcÍRÌ
-Ìé.BÝ ¿ŽÈ> îÅBñaœLý}ì÷hPÞx_]†¶´ó)ƒ…9«æòW4”+|!1”Ô791iX3«£)~vÙñºð[‘>E ˜1l/ÃE×b¶c0—MAør—'ʸeR¼D S`v¼Dº+’UòþëTt™ùçCii…*Ë°ošmbó²3WŒŒ±)˜F8¹¯IÍÓ–ë‚Cà¶1±¬Þb¡(g9Ñmwè¹ÀÛ.ãA/ËŸú<:GÞŒ +ÁmeTѨz<èaÔ>ŒqÙwÁ°ùTK®üJ4ïÖåUýM,á
-Z÷"IlÑLZ0´nß’)ÀÕ± $C9÷û…ïb~{øÉÐ@ÒAPûâƒ)` ›ÖyCûØq[¬Fóq¶CZ7(D8¸T-.«ÃVTc0^5ãviƒ}ÍzÚ°Åa»³¨º÷}VÂã±™5ÿ>­?¡-Ä¡¦MõOýe‘ÿÓ, Û¼…º³!<!145a®{áç±Àlc_WÏ30xPÇ‚EAxÙLÅ›„¦ÓçÎÚ÷é7‡« |¯&'2d
-BüÃ~yö DÁÀûÛN‚Rp(HA?Ƀ¡pE)|Z]&‘±K-‰“Fõÿ'þëð3•´bÔ(+\<¶[àÈŠO,‡¨É¥2Í,0#rS?‚I½¢)ö©Ó†cÓKÎQðÖÄ0Œœ7<2,Áô#Ýß់x
-nÖ1c
-™·2Iß4Æ®ÀËÄÕ4#Ä›i¤„n0 IVó<£Wq±Œ÷’»côj.ä¶Q Hwz†Qoî%OÑÊߥºÆ;’o†Q›¹L-Ù ¾ÎÌoÜDM§­&µÝå&á:s_ MIÙµŒ/²&¾ê–‘=K¤ÒÀqy–÷xФ&OáZFJd "î Öñ`ïEw7èpŇEËèÖ¼[F±ô”˜PïžQ WÚ¾å‘|Ïh+7µæ<ÏÈ4ƒ`6éj ®ÙÓvóÀn˜Ùƒg¡4}s™ÛÃgw’Ã’çÅnŽ¤7Û^xž1˜;å?à0¦ëÙ1(p›¥ÁwËxßgAEâ_!JsÚwµŒULÐH¬y–Q¼}”ÂBs™ï[5ËqøêolQ6ú °†ƒŒïŒhïEw»ëDBÅ ÚR>.BH¢"o€Ë°¢ûqŸÑo >´1,W~¹Eég¨ªIŸ@D ÏbЬ²ö,2—1×b%²Ã³cá“MÎàw ­Ôà1ÕÔqèxÔÒ®}†jŸAr $œ-/Ú%,WUÔës• ³Ø^À¸YãR²Žšl1†²ŒÍýy‹´¡‰2$gÎ$T’Ä|ÐT±õè^ôæ˜W“•ÜüÎ-N~«
-‹I@P Ôuäöé0[E®„]1v’~‹§$êÉîw¦Ü/}n²ðÝ» ))í„R}> xÜ/–#ï5†
-œLUàœ¹E/ɃwLŠ«¤(¦õÌ·6p¼rYmýõÃ+º˜ê­MÔ³âÀŒ}\ È^€–I»I³$ᄄ†fJ
-Ž˜ ‚ûÙàê-’nD…q•D1’I[Í Q9bwÅ¥«…´‡^
-yÉó©âyₘ*Ã$ÏÌR‚M+–fj›gÍ’™LÖuZ ºItcšµŸÉâ6ðvÀ}q8Â\VpEû38‹ÿ1^.É‘ä8=AÝ¡O ãÿ³®Yö-z+Ý;ÏAR¦L"M¹)3•\Ap<Ç!Ù``’=†§€×BÅ€Ž¬u©:š„ÇF®
-MR³b*ßT«I~Ã"C¤åhþõ5p$7 âa=vÙhh ¦Œë±µ#Ëa¾AR†šôáÔ£3|-¥3¬EͺOÃ$ü&
-øªÕ¯Å@ŸI, þ1nw&6á0UàlÄéVê׊ÿ=ÄZ\s…¥º<
-Ð1‰Ô"/Óƒ­J rÆdüº˜3µ Ó#0 xÜGÝ…{牷%­ÃÁ—jÛÐÑ
-‘/ÎäÑ2¹¢âåx2+EH^ªŸ_î~¾ò‹Ê ¥ñ½äáÔýF(: v£T {v©…nç>ùf4nÅ|^ûjU-뻣öÚ°ÐZ“ÞÌö‡’-À â‡NsGõ¸g¬õ“#wœÏ\ñ:2EÑÒ_ö€Î­„áçGtÅVÏ1Þ±~a­FŪ5…§a¶d_dÔ¾ ,sÕ£@ÄiI¸ÑH5ÙqË(Á\fƒ‚…=wtÈ€s
-ê» NîVé¢\vüK³ue«®W¯Â@·^©Ô¦ˆi5˜E±Ñž3ù‹)ŸÄEÓ€ °2/½úO÷Ë`0bY
-gå)BâœN&#ÁºªU+²R!®óšŽDµˆëzØR½¼zë’ôY»vâq7¾NF/ž“ÄN5Õ¹gƒâX¹± J+Å­q¸‡åÌ©™Öê‹xrinê±—‘¶ ¾Ì×¢Ç/’)3ÓE‰ÌgÍYµS«†|œ–gMÐN_†ŸÞt)•`VÁÖZò3 
-Ê3ø°ñBSPMf€Žn'$”€=Ö¼æòY UÆ^¯¿tà¡F&OÓÉAòv°ø‰%b FƒiO"¿S£0>'>0£$ t/DÈá´Ø3b¼¬¤©gà†§ã˜Ñ$ANÈÛ‰¢Îª–„‰"R
-~ Ñ¤ê©Èá .5ZéùC€—ÓeÏWÍ(sfÌO üÉŒ
-úÞSd¡†£ò´°‹Bw)DV‰
-ji «NÑ…ý×WƒÞn=Ló`œ«+.‘Wp|•½@iø†“÷~f–ßW—É&º¿éIôù΄KO5|Û*õˆëQ“[kŠ®“ûò4W`‘†abTpPüèã‰(+U„÷…-zzÛLS}:4@œÎ.àÒRª$–T´‚Ö|Ö8UÖжçŽÉñ•ôx1IæÍU«¢ìš%soÚŒ¥h†f"üœ]A¾ÄB+ìª=¥ 3tM÷6Uv!a‡%Ôç’T|§Åi’'Yojƒ_äji¼x»‘öIì€qVäÏUáTA’Dp Úgqå OôЭëŠ{$¿cyýÞKST
-À¹åäaŠ¦eG’#&#F‘AZèÚ€"´BË}ï%®|ˆd1Úi’Z@vv«ÞŽ\/‹h8%RÜÇ(ªÑÍ÷Àœ¼o!ˆÑÛlþ¦䟨1ØQ——صÝ{
-¼7åv4}ÿ?ng#jM„L}MŸá
-ãÀžÂ³ÅOGto7Dt,Ï Ëz±Ñ F·Hk¹ó/ó*éÁ$Q¿eTJÞ,ÒÕl:j–9q…3LîwŠzÒnŠxb”ŒòÑÐÐ
-,F÷1H0æ•¶Ë çâ‡bœØ›KRH ØÂ’Äå=fÕþÖ€\ìŸÂ€ÖzôDÙr› E
-¥UNÄyŒ[žQ>§6µ^B,
-BîSíei,<ƒzÁäÛ>8ÙöªðüÔë9 –—>&Ý Am± ZøèPƤ):Vfj?E‰,Z æ½jܘkÄŸ²ïQ?vV}ŽÄB+Þ›½öz%)Õ‚+Q„õüZµGòÇ´¶%s$bjd¬ˆ,eÊw¡Ÿö)u‹“~–ͣƩé HVFmG¥dvˆ«\9q· {ô©Ãd¿Éûx¿ÉÆúÒ_fÐG5? ù&%<µâÏ£éÉz(q%«ræñ”*Šq~ :ôëòµÏ0üñÄüš5ô€¥Êà +݉] C Ñ.—±Ð]á˜Æ‰¢-#ä1ÈÃÍUÑSK!±2}8hF‹ŒÃ@Il%†`vÑŽÁŠ°-íWî}]ñeff 9Ñ]Xî˜;¶9Ø}©>S‹'ñ“vwL¦
-•÷ÍÀ€ ¶\1‰Ê èg’`I£ß7)$ 8´±u¡ZGç* KíÒPrÿùuþ˜.ÇÉ:±ÛÇ©€…ïc—x’°šAYÜ„šNo/rW¾eúéÆñ˜ò`cQžI_ý†Í‰IN7Y0&´ÙËO Ëôñ,Rf ¦Þèt ÄõsŸ€Þ9zš÷«¤Âö6ù!ÌRÚ•+ܧþŒñ“ìî¤nÐj¹ÆÍó";ÅÄD|öÔƒ®Ø™3£
-øÃkyÉ1%,(1}Û—ôû˜3Æ¢6…^;&m³œ‘(íÂ25jœ„w2߬8Ä”Ò}jX¡ Œ¶rwN‡N“l­€BÀ›¡`˜Ð!šÄ§T.Ot@’ñk—¤‰=€²wžEh$Ô} Êë* Y ~¡¤ÖÖ©f ;@*Í$ K<lñ¤’ÏÈÿ4Ä! ¦b`(¥'LÚiÔÅù§Õ rCŒJ‘R»êø a¢5;§¤XIuða
-ïlÊöŒFvñˆ9¤ó)9¥ ´^áõË>%?MÊ«Üb1£*ÖO¤#ÕU^ˆN²1–ØÏÓ¬ÇW˜öN¼øù„aNDÔi èÝs;'ÄÖ²}š’•7O È@Ý00F+oÛ}Iv@ÔûÖbgØò9!¢¢=q7§›sP³å;¦ð\'ÿŸèUŒHa3<Ä+äýZC)_4³ÌOA§–ñµÆ¤!i½Üƒ^®tȇz<!½k­l3Ÿò¡JÝ! ¡>Ä?k(i•<_Æ1 ªç‰¸Ñµ^¥y:…шš:¿/ñ0]×€ø÷´IýýÐüˆÒQ‘–Ø?7 1»
-«Ð Š\˜«á_WXW‰ï-;B™Œ+ÅɽõŠ\˜ßÉ~s„ ÃTxŽÁ®”!ìÐkè÷윎4hfÌÅz,HR¶yÆB0eJð}ª ®í*4»Ï›sf"ËC2<$û«PÍ”¢øŽ¤Hp 6¾µ[2t™cšãŠy[-n@è(R6èc¨ö-ÉjW*Eм­6©dZöŠa²\ `BqH—uV.SXüå•Ÿ³<@‚9÷xĤŒµL;'“ïÚ;GÜÌ ²aÊÔß‹¬ QOˆ÷é/”“×~<çÒòëm.£szÕû^‹sãK‰O—V}ÂÑ+½ÒC«'v‰K>œ÷ç„TÃâ®õ[ÄN)ƒ°ËVhf<sšÙEz̬P<Rï»ÐEч&RÎ]"Š<­¼Z˜“”ú˜W7TAX]Æs}©k߯RWÔA¼Í)ˆrŸr[j¸¡hü@„¶"ÍÈT¢ì $Q….שÎa¶[úØ‚XEVYªÖ<äVK› Œ1.…Ä—sIüƒÅ–!_&Kô}A =Wäë× ôÖôŸPSº'¹+3Ø鿃[„¥^”
-:FíëåÊèÌ\Ú%&r׈)ÌUßávTÖNÐáGÑ…šXÅ«U¾$G`a1’†ªÏÔI%_ >2LAMSšÇs˜*’
-’ ɵŸ¦Áua¦Qóy#SÔ4¶…|BKrñ‘–-)å!¾ò
-# *&ÚJYÈ%cí§Q’Dê“<×þ’öIÚå¦ôªx½ˆxÊØy®lÈÈò›”)o„§ÈþKÔÚ¾[% ´Å ]=Sn傈
-æ°L¶Y8îæ®k»íe©6m>\0߇NŸ‘¦>zÞ=^²¬_+Z=ØS6бÄÐr/r³-kH”Æ‘bÍâÔڵל©Uw²#ª{ÄA ‰§³îô´¤ ˜ ©Ì š¹Ó•Ö7¶ÈÛÜ
- “C^U‰)õÖ” fÓ3Ž·!ýúu
-˼`ñx›ARa5˜
-÷!žE¸vU–ÀR¤è ‚4
-üŽü¹Þ@˜fÅp¦q3î £VvêFðBg®ª+±¤s‘{Håºt¤û›”…B×—Éð( o,OiL„^¬&‡¶>Eѵݢ»Íˇî‰qšäuŽ&Q#¡`$D­Ó†h"˜ÈëêÔ7øO[ÝRІ²MÝOF-Je‚8A Š­FQ”}¿V ‚IH둱°lƒ€H´S/ž¤CëõÊ‚ ;, µT?sdS‹ÁnË¡ò”Â-k7ÈC/ey®/½ƒˆ­D-t轟#£<$´B‹ÊÙµ‡6ƒ°†Ð<Ûmvº›ÂâŒûQE®6!Ì
-“ø
-Ošrq§Ô»¥¾3QŠ¶HÊh7ñN3;a”b71 5ÿ’äóQã’§SŠ9’d2r;´Ê0²).º½E)^wûŠ¿Ì<‚5†ñ¥7xŸ’ÀÓîp€H sͶÀe¾ÜZ˜,Œ¥h8€~„X‚&W;QàF™ÀÑÝ¿›6¹Fèm= qO$lâíâ&£–ÍŸÑÞ•HQSÞÄ5Cz™Ë©VÚ»±£ð'û&4â—wø%6`&:vnç ÂyG–WäšûÆ—cP—BŸþe¼\r#Éa zßÁ'(èÿY»—¾…·îûoç¥tOe2áÂ` ;:%‘Á`vý GÊfÓŠ¸E€ÚYÛ‰Îé˼acc2#}_'*±© ÕÖ÷Õ`R>ö £âuº“Qý0?Û%:™dzm®°½(]Á‘Kj5?ë Ä„¼Ü×؃ªÕ™'<ÍÛP © _ÇXÛ@ɤ†´-E4C ᓽ½òa¶ìÇg '£Ë«èa•g$Â_ e»>šy· ®ü1‹ ©ݬ“hŠ0§õqóL¼=ß\†ˆT>êí›`$áF [›Ê¶ÅKKsįÂä©Së¨+ˆB”_nsu½ Ã(ÖÂVÚp_…mgEf-Ôju*Ě̈́!«|ç
-c_[@Ùôê4ÝN ë¤sÇïœhs¹Ì•}Λ®,¶HÃ’¤XÓÙ›Òןø—Øo O:F/ÈB4ù®°n ¸Å
-`ŠW”¤©(ÒÁTЧ’ÍZr­¨¯ºw}¿r§O»z͈88‘¶½%ÄÁW RoWgQ±»XCdÏ–ö0^-Àš¨)Úˆx]†6u/AäÞ_“ÇŠŸC
-)cHD=9YEf
-6Q¼,/ ‘8¢@=Ø1Gö$‰2Bø"Í”×
- ‘á‡û¥Çb쮢\’Yw _Æ ­¤QFµývýKŒ!Ž‚Üzäî1åʦM<욡ȦÇò“5Nñ)=jC<‰ü«zdBøFãµí3Ÿ<šã{†j‰îÉK½ûT7ËÈ»|xóàµ<ÒÚ[0 !õWAh‡¶[` îm ëN ïWfÔFùýÏSó™‰lDÑq0ä)ýý5Pµ€I^Vë0èø¬ÊbñH„¥CWgQðÙ-QøÃ÷¡²jÍ2O©=·ÝýFs•×Ü–î„ü±jȤ‚ÁáépgùHS9q—)Ç&ŽW7¬EÙÌ}Þ€0… g+·@د
-\Ð<_áÆ-ÅÐب'¬WÂ…ˆ,¡XÚN+1a ÓÜ÷a´(­lû>…MËz`^븑¿_dÔbA!ÊHÜ*SšbÛ#¡Q Q©¦¶UÉmÛ╸QF^MPHV‰ÁAÛÏ.MhšAôÈCñ\Öÿ!_vRÂ3Ó
-¶Ë¼ùL¨2}Ü1þ7…Á(KáM…
-sÛ¼ÊgìdㇵŠ¯˜«=„¬±Û¦/bœ0ýNê3ù¯Ü‚N7:;¨o«|Ji@×-sç”$gURê(®uú°F0=N Z}õfSòecœ(´Ÿ3ûR8!`EÔZìqÝäÌ- £¡‹G—±Oú…€fKfnY!œÀC““rÿÞ€˜vn0«Æ¬ÜÃäâÙZëNÉ!ˆ69@x3K8æ‚`~Φµk“=*«æû) 2n£OûÁ wÃkRØÏ—o¦:2ª#‰c•GJ2ˆŽ’mIPLM-7ŸQ2AvÙï3º—!À°\àéÆÍ£p?2ÄœÃ-ŽBN*Zwí' œJìAžZµº€ÐXÛØØ’öîÝÆv‹†‡î£Î¯"7@ÆŒ”Úû>ê\.o̼¤ØñïN‰YtšV{ušn§NEŠsÇ/ß¹òær™+ÿœG]yLq`=£„Á™éÝŸ†®eÊq&ýòÔªcøX÷
-Ñg¸K?ÞÃ÷<©) Hã¨ñe3ƒ×ã^tÁ¯3È4&wå×)Åîizð¯Ðo< Ó‰ßög‡i®J^:PEÕamh»t©ÒÈ(™æŠˆØ#:á³ÌêGÏé!j‚æƒa_Z ÄõˆY—cä`á^SD,¥d‚9ÛLo†×³.—ཇç|õãÍ]—·ÁÊ@EºF|´+ë–Y(Ö°+ˆkOŒãB¬«<­^SÁ8´-¾=×XÌ9ä[TYˆq¤9–ó® [R Jù_RaqC„Àø¹
-™Š|´5o~i¢ì<ò´Õ•_ì ¦˜X v§PÝ„WËkA3*Ô1ãîd”\bÃZda?Þ<ŒL†6Pm뼺páª3‹ùPD!áïf\·a)mDVÉtöäzø‰Ò×=I0ZÈb&ÇtoÅ]]”PŒ6ÿŒ)ó¾RØ,î+u ‡ÛÀ V9ÑZ«A0kÄÔέž,éÊÝôf'Uf Š#—š^õY2ZÓÎË"÷,ŽCBxä\'±ž%ªTjn5¨d©³Gý ÂvÊS E™Ù¨_EãEŽ)jÉ@îMŠ+†á’‚¡$}kØŒ—Ar! DO;ø.ÃÖÙæÙÚ÷ßæ50Uùƒ¦ü³I*n3 u·Zg–¯~Æ
-„—¢4%‰é•T›l…ÚÒ]ÖLtM虇îpûÇ•÷‘"g2wÓe0œ‹\O¤“å“<®rf®Šñiÿ óSÄB 5ÅÎéîJq<ú^…_`:Ķiƒ¸:s‰d©·ÔOY¢Ÿ´`g¬¨üµ@ØÖB¡}z%$ ¿jº¯Wiû\Zvzc *Œ<È/¸…]¼h>,ŠPqÕïÿ•jš;ÖÒ˜|.~OFT–Yžë:¹:çÒ°ãw˜Ÿ}T– G>ù1ŽÂªå2ï¬Ýv1Xe·€#ÿÍ&šÚ¥?ÊŒ ’^Q…á †zá)¦"¡Èè†*{”‡Õ ¼Œo› ¹E‡
-±âg̘7Ì–—A Rt×µó•(/›,<ÓH2C>Ì€ªÅ.¥í1ŠDAîAˆ%)^Εj˜Õo.ÒÁäá)t?¬Úá˜LQp­*¿ûúÙ{—Á,aÈÒL:[\"GbJf2ÚÅåå÷¼¼ƒ¢†³RòÒ™=²b±Ó?Ï&yDÿ„Ê»¾Þ‘çHÕv’dœu‹ÿaÙœgub7v¡øPñÚº®žÔJ“üxDo‰•°øíŸ{„iŠ­M*â…£;Ȉ®Â˜<˜Q HU"&¹|>»ä-pö©°†L¦°z¹áß ;tDlìÀR¾‚%âÅ÷øåžê8ç¬1d¬%é‚0$YéNô0!Ú)4¼h›ù)îF¿È›=œÓ«ª¥åµÁ¸Z!郱ù<ôBÚYeŽŠÔˆki•°+ÀB|}V r=äׯF¼Ž…‚²¯W½@æÓ97Ë–áø"+©Ì—V¯OAgæ6±§i©02VÇ70Ô²ªÌxôñiΟbà’x`RE[«[ÜÔÀ)ÅÆ9ŒÒ®6(_.bö‚6øÓBȦ¿ ˆðLnªYeû“(6L Áýcon¶ªëš£Ð†‘CùƒâNä>$´’!úý
-H‰Œ—A®9DOà;Ô&!Q¤(®=KßÂÀ¬ìûoçQR¹áLúwv9RÉ`0è¥Öúú–qE©]£« ­¯ߪԫºy‘QšÉ8€~MP´0þ\,
-$u¯‡p´ŸêyC,Þ ¸)èž9`&³M+¦ËÛ0ÖS…'A““eÉ{†D´B[ÖÖeÞ”DïÌP$v´-qƒöå$¼ZáÖ-@Hd#Æ°m¯Sו+Õ6kBÁW1í{ÃüZå¢5̱ue)QÖVTˆã@º•² «ˆ“Ù¡.'EÊr£6éxxû“➥¤–s^gäüq8òºÎ©Œs/ZJ— Ä^ðê86ç²hƒªpó ííÃ1š²¯='ËÛ~ c€”Š!ÇaiœÆxsxÀi½È¾)Aèdq?'».Yà9û‡óœÄËî”+‡0ƒï¤…‚®#!Ög1ŸÚÚ`H“1‹y¤B¶ê”Üm^Eë0ºrºÄvÌÌz0°z5 ì Wƒ Ü:œ÷P\zöñ«dyvLÈkfX§—‡Oëu/ÁsÒýëÄüžƒõõßo5ËG~QŒå¨‡‚þž ™1^gòdO3 5ƒkLÈ_Í„¹€ô9zvÕ)&ÅÌ£ LÇe`ô]tl·i¾acŒ¥n@WßUçj´ ´fmA4‡³uo÷§‘øˆÈ¬ñZr,Òv v9n @Ê?tÒØ–j£ÑXyœŒ×}]v0°×Dð4,5ú&;te>Ôô£T5Å¡Â6UKÞÙiÜ‚àY:Ó“_‚×­ïB(ù¥Üªügž“»ˆŽJ
-ßWÝjõ¯5Oz”MÔs¢'³³ø÷,ZhÇ%¡éàN{ ú¡têæ>
-ÕXJv ÎrÛð×جá%•£¦‡d‘ ýÐÆß›+ƒÛU ’Se¥¿“L¹<5?…Ÿlgå ¡rðu3š4!O4S+pr—ø8 æ[­;ð¥³)KQÔ¥sÕÊ1
-ÿ×ÙoèŠàs°žÆuŠ,>jDùÇ9HÒ7c6!Ì™)¡ñv …HËćSêJºÙnéöý=µÌÓ§öäï<&'Í…>ôwcq¶“Bƺ)s™|›lÕjõ;¨Ò²p«uˆ…)ùqÊðWAsÄØ¡bÓ’14W*ãË—†1‚`õÀpµç¨H©dO@!h‘öaT̶ÃÐøú6¸O
-òÉÌJ!å%ý8*¦~hŽ¦Í{ ý ²8‘‹@¦‚iwš'“6J<²ä†`’r©Èi¶nLÅðÔ?ËU0»¤]M
-X‡¯²4{þIeµ„Gì5c–œ,aà|$•wrŠä@·(2NüË+¿Qtñ+x,'’úÝ:Î
-§P,mWɽ­Ž·p9ܪ©•}¿¥M?Imì¸÷ü»ŒÎŒœ y(;¯ô}´ŽgJ¦Úž@dQ)Â0gÝûÅp
-ܧ”OÙ‘¡Þr “arü„üU«uÕé¦bÆûëôÇ1ál®yǨ¡Ä“`ésðì«îÙ„s‰Üeb¬Þs샛ï2l‰c­nuÕ½æ‡sîÌ9¼æÎÀcTw&“<~Q% ò¹Ü’5X &ÝÈ_µZíwj
-ÎrŠëÛì<@¹}¥XKåa6w¿ˆÝ4%ÇÊÐÕ8c7ýOè‚èè£&5Ô}Bjªkn;5ˆL!ªð+©!k”<Ž1Ö¦´H8¦ö>†ÄŒœk2Ç‘‘0\³E«sDçd¢'¨]v+nƒ'¬À¹kÒ§ ‘ÖˆL ðÔ4/‹Šç-ÍèLÝšÜñŽÅ_g½h
-¼Tø²¨QssÀŽ~ÿpžk2•¸¯b!‚—)Ä›…L 㘹T,ˆçÐdùd>·³b$¨A¤ô­<Ùø ´fŸƒâ×Æà‚Ÿ ¹4ÔôRÌ‚™åèÎÁ#½î ö»Æ&ÂÖš²ÐÖ°¼¹šß@šZ’ oŸ ÝÒ×ö4_,‚{¢¦ÏðsÌOHË78Q“½5ä0ˆÆfÄEÌÓŸóª<  _ÚÛÀ4”T[ZŸç¤a*2ñýìZ¨4Ï"dU‘O®E/Kb¦9çúã9
-]S~ÅÛ²„0ðé¢Y& ã¡$‡·ãƒá®yLŸE{bðSƒ¯õ\~}
-ÿÜ¡þåÿŒ×KŽØ¶Эx†DŠ”4Î4»ÈÔoÿÓw.Eén6œw5)VÕýe¿¼ãXb—σ<»X§[»Q)¿Û=”`³é^uÁÜ»aœ6ÔË
-4Š~v£?ódèIP±-¯õŽ>¶ðº~nÒ±‡…°Õuú|ãEÑyÙ•s8>á®øš~MÓÌÈH³G±«õÇjÿ€VW6óʪ>Wýi“_—u‡mMç
-Äqè2Ŭ‹Ð±¸”&P%öâá8§©?w2¢D£”À²·\gô”1ŽJ£ƒèsn}ئ¦-14“74a
--å*¿dÀ=‚Ñêõª)Âb<iKΑ%¸&ùì(÷jOÿÃ*ÿõÊNåkmg}ãÉcá~ÿ7öãNö`wüø\D£”Hl[fÜö7a:â™ïýYÅ®7Ћ³Unµ8Ë?së-¦!žg=ß­?™T`ýhH
-~<Æ*öÝßÔWà®<;Ie8¶ øYlËékæ»;;I[ñóÜÕšä7Þ½Ï&£ôŸY 1ç óü/­Ø_ùÚýðZ–%IdüEÇ>W-Š*Á¹¯mà.ç„}M­&t” À“cIâ`SÒÃEd“®ë±òm»²ˆ÷DàÞ]c…û[Óî8kÌ—U½]C;Êô!SCdí!KA2ñ+­´EÉwôô¡èïoŠ0ã`Ží =}-Š36(™ÒÓM+œšÈ™Å~å¸Ç;sçdRÀr
-cÔ¬ÝYýzJÐã4aÖ¼œIÂìG¶ï|ÝSlv³Þ¦
-5Ê»ûO<w*:_ÏÉ9.^
-lÐc¿¡wQSyÿÓÿ; ©(Ý EyP%9™'OC®pE.^î¡ŸŸ f7úoÕKÑø\à¹*7Ûxï&ß f2õ~Tò­7Õ²=MF™Y®HÉõp='!ϱy¶ œDã'm‰ÇCöÍ8¿”Œ/Ak¬?¬NŸãàšÍßž/™¥HVбf­k½¿þßÖ´rct2e&†»×¡j˜áW—w|q—[þÈôüNf™U¼xÔ_œìúÿÿã
-!P±³Ó¢šÓ鱕÷6%B¤riµÜ%4—A¢Kí’-ßzuøvßvbÐŒ}ìÍ®!À_V¤ði·C°9BÝDNI6ȱ¾÷9–5Pö>†A‰ÄþmVâS…7ÙcÑ´ÅÏÎ)?CM›Æ’gÿ¾ P چў”Rïwí•ÀðÙ›·šX² /vxkãSÌ÷‹³î#ˆÓ?JRŸ
-Å:ên¼Ô}LI¶4èë4y÷kÉhñkÿ&ç¼N!—‰!¶l%æi2ÍÈ´¿?ÉøCðÏ *"Ô\Â%çõÎ+¶(,õ:| zË7%ayF Á·ýþÔ
-bfåR’ƒ<[wW
-(­ýPz¯Œ ½…Èïî1ëˆAT …(¢@p¬÷9ÎŒ#¨q³’ j¡þyÁYF:1Üø LŠ>fEù‹Q£>ËØ™!5Ê_êc…m¯i›Òé—¥ílnÌÉÓœx&RXÐëåhaËŽÏP×R¦ý-7WôŒ*¼AkÖa„•<Ü“mV#ÝGøéKÐ!]ÑæíDÖz/Gl}¹èMCõ3Î|›øå% Œ¥Ð ÙLM·]ma Ô23æ¡}“®mÜv®Í“›“<.Þ8Æ#/IË›w=*”ÕåC$ù­¶Ý´ëroÂ>,œ¹Tº­$þzmúIa§E‰¸õ(å¶BŸ9á2 ž˜Å ‘b¿U ùñM¯†%ŠíˆcR¢{gë³·9¥tµ7<…@RR¹?ÃÓ½OÕ<dê`‰ãºÏ¬èßêúñ7üéO+–9Àioúw–üóMQ =°×T•ØT.u‡òzy$€ð1m8”˜Ž\ÂZ‘õ[Bí]`ç­¢Î8mÛKÃmCk6Óv5"¶0yÈSGÃúo±qh*%Æ`ØHtÎI‰OuÃ^°xììœÎu#8Â/±ŽÍ‰M³:^‘õYG‰‚†
-gÇñî*ý˜Õ¼ä…oŠ¬F\5›¶Ô| î"4ÜÞºÞ¼<¶ñ=®Ñ£tyïƒÛkWIôÛ@©KØÐû"èãþÂÌ\W >ö̳¹FÁõ[¸d&š¼¯2ìaŸ¯H2Qòƒ5&H˜œJÉûÈßnóÉ«Þ!øÖ _{<-ù2«þfk~ßv¸̺%„/Ã÷rÞŸoŠÖ˜+¢Ö‡q¬‰`ø‚­ØÇCx>Y¢y*v²²Ez}– +^7?Ó ÚZn^\œ¨ùM·¯y´ûÍ*Nh|6ùW1PCö3¿*­Næj‘–„¾>ZÛžHA8S’fÖ¸òaF¯%ï0v-¾r¬1v€ f Öân /-‘µžŒ«„ÝÖǤžv9XL¯ØÄ—ß(á¹³¶Ë~=IIò"a””Œ=~+zûÇ7E­‘Z{ÀXç[i2G¬õ˜%;//GnÖÃõw?Ρ`RD?3ÔšnÔÆsü i•­öY™2åk®ˆc×x+ñozŽå[פ)nýè“<x²ÄÍð)ay ÷²Ç ¬×—ˆ³Í‡‰4þnËcè¶ád»Â†@*œxçYD¡ƒklû~•¼®N®L…Ž(ŸúïÅÌ+ƒ-!ÇX›ÆÙ¾ÿä<A6ŽK£¦‚;)ZBèhÖFÊïÙç^‹>þæNãê B= äïŸ=F!6»é·©ýI  ‡ÙŒóñ˜_Hã#Eµf½ZTzŸqFŒ]œ,þõ7}²î<[ßd’¥Ä:å ÚÚ}{e˜œ[U,Z^Þûíü™ö°MmW T?.}]î¹nùYf G6yRô>0kK¤ <—šY­iµCîéK2DÚ÷V]ªMõÛ4‡%¶`G‘ïÜæ|¾­':O‰m‘ÿánšãƒÏÚ÷«%œmùyÃçùk(69§sP2–‰«Å&)2“¯Üw/û¤äŸ`BøsNK_gçX§f·…a¶[äÅ&Ÿv» ²,q¬ö÷Žï£ ëõ¥röL Yz"âÁ °ÅÊ11; šBëÞŸˆ¸W€x{%qe8˜Â<Aó‹;øõcRô>òÙÞ¬ta9Ž¿-z]¾¿XЬqë?»,´• ë-(Q†~ ¿³Ùãv
-á®Ïšg¹cu‘vdŽçš{Æ0}x <éêÔ
-4%í“dp™Ä9!Ÿ-ç’Æÿo’¥gÐG"Jà"«Í "¡„ô¾'Ìä{˜i8 ŠDÉ/…ïz £ÍÅAc©!âv@,$“€akbS5ÊQm·)¦‰!*`þâm ä,% æi!Â!ç ]Ûâ'’OÖ´ZöË )-g`Äœ/Jd8»"ߊþ÷ô|§µ/'¥2õü
-¶ä}²†« Nt]ÿ ¨c/˜©J0±ž€Ò õ‘˜Œ€1NÑLÀÖ7„Z£Ò?Óð©òfV6‚d9agW6–[ ~rGxìÖÍVXl‘ø“PÃÚªDdS²Ñ†ÐsL.7ó„Lº8MmÓš¿êX/ÍÍèˆyñ#£Ø§-UÒYI8ŠÒ)ì»ê·JE;™¬™r
-ô>Š"hóæQ„,˜ù”E9œ0‘“àæ ø„¹æ08ÖSâK©Õˆîl>ÞFˆ%€Ü¤T–yñì‰ÉÏ»™ƒ
-9‚®ÿ AN—õ¡#¤ˆï‚HÏû\õujdl+*Ç´ˆX³ŸªK Çn{}(L Y½ž£ObÂt¹nÇxRô&‘ѸìZg ü;û@y (¢üEÔõ do‹ÊµXZ>iPᆬÉyŽ\4C×kÒr¤Š-ôyœ;é3ÉáÜ£lÊ2Uã/ƒpj#ý“V-) P7Á•HÇ·³Ð„,*ÑÇ8ˆ{À:;§¨QLäh"´ùç·
-z ^ó¾ƒpqÌ›x¦§æ¯šh½ª¶/%îb–2_Ìê®ß€Eñ˜µlÃ?$£°×©pB³¦ÐJ=ªNñм^½•"9|†
-døÆŸÓ[–Ê#]é˜>™Ì€t|CXN ¹¯~ó$wÌÕ‹>CÐô|G(U¡ÐO,“8ç B$Æ¥Œ“öyËÄ&"Ÿ‚lvÕãrVó¹w‚@ðtø¡z$ž4“f–…-^â.
-àêkä#ð.d]Ë·  i\Á\üxgx>÷Öðë˜ûÚñ=’ÕŸæ¾#2F…ÙÇxäXTT€ª ‚ãFìï!Îy,Î:^:Р8câØ°mfZ˜2&ö®ÏsÿÜE *ÅïßE¡ÞeÄ씚"RÔ1T|A¬âÝeÏ—Åbpó΢n„ÞÄ‘mz8“O ÄyMO®wcH'œùô‹ßA7˘;¬Wö—±IèûÀמ3´®IkÙʾ8Ä3Y€q²b“ §‰Ý83†%f]±Õòn'¡[%suj|éµãj¦ŒkW>²òãÁq‹Ð&þç‰gS$ÝWÇÁéN¶å‚Õ¸–V¥è$¸
-©fg—°VäÖp$Œ8x:%x\ ·©‡§ï-”ê2mÍ®`h×@P9ü¬=IŠ(‹Wæwlžü>ŠºõÔ{ÅAŽ‚ ï¹ÂSx#~*˜Úu]à7Ðëb%P …ßæERÚ NÅÓõî_‚ÏQÎ\öv“€à
-›Ì³`Qkï´È¦©)f¬cÑi\'‘£HiCR~)9»5?|ÌØ8÷s´‘ÐL 9Öë6ëâàåƒQ`E#`”ìïfbc‚F$ñF
-"îûéU—¬dyžxŒyA~dÚ!Yþä[’+X{i½kDdÏï4écÒi¼¨Œ–“2cŠ½mK‹YíK$MÝ,I+s†ù7(âfi¾É'uµª~˜ß©d)Ì`‘¹½›RX+ƒdC”,Œzã>ËO©²X2øÔ¼ EµÊ¸Ñ––ü>©ÏÆZáÃF¶s
-‹ˆƒWæª~í^±ÆZž½DeqQQè²UŽC%¼ª —Qô<Ç®o: ¥’|TB¸špR€Å V.–ÑR…UÕÌ©ÉôZµ™V4äY¼8`ªºøCÓãôÅñÙ*ÐMÄRë"Õ?Jô%Òˆ<|)ï“sÀèÆDLÞÂËÀY[^ž7Ö,÷ú(9ØŠ?K^>êÐ!ñmú^ÃG%Lê|ê^´Ä謼¶ÑmÊбÓB²êõU ‰n
-B 7ðµ;ÍÈ€„"€ÏGÔãfWÖðH.-œÕKÉùTÂö¢’iñÜðñÞ¢yÈè’x<§„aåâGÒ¨B5ûpü½Â˜æLÌ%¿ZF:H¿/ÃRªdm·ßå‹úi«—Ùô‚ý.D¶œÁ¤w5ɈœÕ+
-“Û<q9QÑ“"à„Dó4À4sP¤’Zri¹ˆü‚Å,Î@>­„Ö¶oΨ`‰¥—3uâ.«‰Ðt˜"¥Z
-íV;†
- ÂV¬eVû:´±¹Ò€Sê—ãšØ9|cj6'ÂLlò19„ºµp\q¦Íà¦| 4•Äûv;§qAÅÑ Ú«¿©ˆ•U‡VZ‰zÀ«±ªîÛØ+_ì°ÏÆñK¸[Á®[´“uÃò éX–rÐ*˜|Ó,ô±‡c•ãiê KØm±s¤¨Å¿ôZE ¬°Á=Ëλɾ*NW$ÛZ:ÓÇÈ[ \*u!Ðì‹Ñ2­šøÉ–>E³Äþlœ`|RFF *
-ByÅ-Å™-L"ø1ûŠF¢5Ÿ'÷Òˆ} Ê°pMd@ã5n½ªAt;ºÍëÓšÅ;™Q©•ã,b ƒ†/hÞO:‚&ì7æjlU×x;Ñòv­¸¾JqF½ÞHf 0ü”3IˆíçüÂĪ€@†0ÆfŒ8§jSà+³Ä†á7xì6¶}tâ9¸ëÝOºÆØZÀ ÑnL Ù¥·K—ü$láµòg> ^˜E˜EûkÐLXj–¡m?¨êméÞ~Òf5&Ó×Wi×ÏL5{.’¼ßeZ“x9•ùx ªßôK&——Ú°?¬¥&m­~-0KˆSË8WåkŸDPà×–^–K·ðZÙÒj?³ðn0fYrNYá6^=êJ²xíÁU\GÚæ™_TcFVQ¸D{
-coûUn&›Xú”?G}€*¼ŒNÀ
-Ékc^’ù…`ªCˆ
-–Øf‡È£S‹F»šCø;Or3à¯Bq)9ËPâ+Må¤\
-´qTw'“ðíËAÌ€¬j¥…®¼"}fgÉy:jžšs·^ÁÈTé5šG`§$³»ƒ8•±€¦Òt…n#
-ÅK¶ÛÙÙ]|]
-ñ]ã%àfÿ
-¤@
-Èbñiï ³æêå}¨M‹“¨¿tWUö†K»QŠ‡'aÙÐøÊÆ…£ãIKg[ѦMûq¶‰yÀ¤²º;üZ™‹hrñmj #â¾Ö1ÃÁÂÁÍîˆá3Ñ —á5h\G.WŽ£fîx|«­øŽ &åÚ´Ôé{†Jo4lÆmeeᪿ*ŸÊjw %é yšÁÁz¸ÖÂŒ­Öeü(§é
-TŽäRÑÓ:ŽŽQùø!á7žFïñ¬ 5ÎQUiI“5 O,å—U¥1"áÝŽ…R¯%_· Âi¡ Ðý?œUp  NÉåÇ?5õß+¨›*ˆ]T7S…F`ùè³
-o¬XíçÝ/©Â µ²Í>O
-z8`˜
-2í„x"¸Uñ?6ß]þ.(×<”=•:`õ9ƒÀ‹Y–Cö4²Ê¡
-IäÇòNw/oseÓA-•Ý&µ*ŸÊ[ëvH¡­U7ˆe”¿ðes\?“E˜™ËB$=nÌO*Ô] õm9úÜfiöÀçòhü³Ÿ”¿ØAFî5Á8L*%‡8í;=K’°aõ|/Âß
-u$,­éÕш🬵±Û]A¢lWÕä›ûùãz˜»õûP!¼&EÃ2eLÔ´Z$Å4*l1ÙÙ-¯©þ(¬mÍÐIpß@¿® OÙ´T£LЃ-@Øz´§ÌžÚ•°5[^å=ˆ£còñûO!—“öréwH3ýA—×÷G 
- aFˆ˜Ùf=úN!‹ÑïÛÈT4íFþ8O¯úf)ë>—z&i‚6ý{Ðup{5¹Í~©</&Q¸9åMUãÌjY )r±ö¿ÝüñÃ
-£vFTk¥\Þ,Ó4JÂ^ fWu!íCÃÀq ïr^ßJYà-ŸáKH­rœ›ÔÎË”}F˳Î'LL½èÈPÉôÙïÑP4ÊÄå5 ϼF3”a/tŸÂfÜÿŽÎ³­¡€PFÇáø´ +¯°Àje”úå-dÒk<)P²Ÿ1¨`Йɤž›£¸å}ÈŠ§cM†ží;QUœŒÿIjôC‘,­Î‰‘ò:‡aòÒdȱ#–=éÙuõ7½ø²[RÆ%üm¦;)t”Í gáìšöFÞ—ߊN¤,xÌÕó Ò^ø/>nëP›¬Hòc+ðmËÉ»÷ݦ/иZ+¯Þ ÏMõº
-EFbÖBðÖõJ Q `©¡¯.â;U¦8’Å<uÈìC|:/ìRFQTJaŽIØh Ñ\³²L®@¼éœ%ëÁ5×ý¸™ƒÈ¶¦ÅÔÙº¯"‘ƒ—˜Mg¾-_lœé¯žœ<c­ŒŠb1`ê÷qG!èŒ „úâufRg[´qÀ÷yô’ ?ïDá_úÖ<ZõLúz9üÉ‹,R¿Þ\üI¥c#4òâ…Ò!Ú>%ÁVŸ¾Nã™òR®—¦vL\ß„@x…vä43Ÿ­þL‚üõBû¥hÖµˆ„vÓtF·´„[ö1ÄÛ©² 7AèÄFú¹`7Qb ¦/mØå¤VE‘;©>ˆ
-Z
-z‡Ú#Uq)¦‰ÍQP±­­^…‚*¦‘y4Þ{Ök½€Í&Š ±ÖÙêÏ‚#mJ¦MTÔÊaj ëgºÅ‚8ú/«fÚ† ¢ùàǧ …
-ÕŒôW‡ÕZòk²ðDʯ9ÒÍ gˆLK'êaáø|˜ åØê_GÈ
-]2_Æ2@#϶ZÓ7öšƒ¯», ÖèµË}0„8Šb™a‘ŠÑäÖ”7/3dFð u¾<„M`:bRõÇD¡ÅùIä!œN”¼Åø!ÜOªLU!í¤yÃùÈA¢e‹ÈB(}¸‹¢œW-%€)D(S0ÂooZ=¡¥$VˆÞ÷7Aì[ÀPŽ*¯AR,áÎ@FsÑà]+Ü0‡—_“ðKÔ8<$éM`[$ÒCD8,ÚæKè4¤H²Ç°j+%ž¥¯£ÉœsEˆTNN<†ë?ƒ"žÆè’|$Â3ø¹4Xóaì´¸
-ŠV±å aXΗUé­]øÂw"…ú¥¢ç8ˆÑfë@*jË ¹Ê:Z‰e0)òÇy
-ÒÙ½¢ˆÙ¦¶2òYè·Lñ½ÉcÒÈaÉzò 1Z¹†ÖM·C¾Hh7¶J8Sdû¼ ¯iüBHK××ãàLs‹qciàØ›
-~y
-=•ã
-±ü5ñ¡¤Ñ= r =ƒBÐ/¼Kºð‡§ç„øš<('æ‹¥šâ±é
-]ýºJ„ôl²æb/N}"[&œµK
-U«gq¡ßÍ‚CbêøÔ6 JšÜ®*"ë U‚ùÙ†×+R1¹
-üR7Z®‡B2éÆá#æ³M³Í dQ‹û:íýN…Ò^U
-ÐÉý
-Y*!²‘
-ýî€Vp>Ü}˦錖ïwLsð€$ïOE ?ŽT6Þ^Þ[–*VN:À«€’ˆFQœnY§@ó¤~ž±ÝŠwcYù4ŠFïð)§ßßÁ~÷±»y  [ HÄ6D½Nº| ÒLÌ6ɯ¦¤…³-<ê % gÄ/!7¼›CCX–9Š]¯/)_à¡r¹¿BFŒrâêÜ"‡â ±3ldMK!ÿþDÞ1$nOp„µà=¡«*3MÀÏñ´T O€°rÍ»5HuÑœ±Y4µ ;„—ÎJ#²!‚S¿tu }´¿³.M—æÐG žM7C˜‘s\•žE\:¢ÄÈ¢ÿ®rBŒfk,Ç]ó"`r*;²Zl» ÀGN 5G:JP'ˆAÿhNý°=
-rÕ¸©©êø=Ïc‹^:æ.â¡yü¹'H1Y¦>›K”$žš)‘Õ<}pI_sXíyx
-9§iéb|ôÙQ÷„RSÞhÍ=¢m 7JÊbD«¡ÌÜFÊŠbŒ‰ aœ›
-`¬*!tÎ@ËAj`“ßN&²8Õ4)ù"È%޵țq㎙ Êõ©(áO +ÖHK5„ž dÍl^„y£
-#˜†¿U3“™ƒ P,HÅÀæßVÍ7²K‹
-Å"Øÿ….Ð' Ëy´åÉQ¸ß
-ÏB`ñb- :Ã&ÞCê­Ä—’MÙOqDº|Õ7‚lœš‡ÑI·Y"Ž>C¨
-6/i²A<çåèÖ9@BÇÉ3i¤ǹ‚5%˜ù$´¸wY]€BÀk<FƒÒ¨ uÝXZ§³¯ ÐeÑÍ >Ç‘ Ï™4^<¸86áø ŒŸ .do
-Š%Viþ©¯a Ë<§¨¯„D;fN{3Ç]Ç›ú OIúc^B'`é-irõn!*Ñ~¥AÆæBÒe5,õÙ<}W™`dš¬o.¤h 0Е±¯Æ—ð-TÞ*ïë)%yâëÊ (áñè)Lµø~Ø¿H|(±s–^‹¼âYﲎ*âŽþ] _¦Gº‹wá¿šP%J¼Þe+ ÃdØKtoãÕÑEìŸ1‰l$†¤œãØ5á‚CïÉNÔ„eós±—á€ôÍž^4I­ýÿxòà&U@ž,³§Hø† 0y(‚YP»æ J’qÚw8üYá  Så s­ûWØ NËÔqSVwNàyë8Ÿø¸;òq¨JouÕc³ô%SÈ垥чûçBO·tI´ 
-c"¾‰à»/µÃEsf/±áL[EeãØp+{0¡9ÿpýJ^]²¿wgp`bkD8 Ïh%z,Ž{›ì£­Ç. µ0«±';Ýd$Ƈ»qÙ¹¼&— ÐÕvbªN´ms@|ð0-€Uä=6Ãix8à‚³†GTð Ó ra¡*žËc‰pæiA.šdÉ#ÎÚ˨m£—#oBg}!|ÈIJŠwüTï@3øBÊÉDƒ`$qÁ`,Á!Š;>üfÕ’´‰©Ù^÷¥&]‡"@ÄôD +d€–¢[ üÆ8’"»õPÂËéUxŠŠãÿ󾊇ޤ§:Œm bPÕþK‘ܦÖÉ…5ß·š·tþöÅÖý OÇc¸‹I‘M%m…`êR¼dr¤ª4’£À”\–Z¿$Q¦Ši#?mú³èrúÏåþ¨¨o:†Õ’…|}(Z{’@Ã$Ú½Äd‚:¾âà^‚÷ã)à¦xïïXjO¨k Ñ˜m•x•–¥ø]YÝâ;j æ5f¦:w ½–…K§—€*K6ã&·kˆÅd4Wï±ß0®‰òögXZ=@s§ø ÷Íý±ÄK4ìFâ·[e•1 ¬¯*¢s’šŒýÅÌÉïô_“Ëú¡°_‡aQ¢Æ×3Dîñ
-H‰Œ—Mr\7 „Oà;è™"@$ÖÎ2·HUVÊý·ù@â©¢™7UZX¶G=$ˆŸîƱúTó¿iÄ£Ùh¶¦«Ïþñ‡Š?fÄú%DVêaCl\o±Â|©mH×æËf[ë:„ÿ­9ÜÍ£n²áâºB.ˆç-"Öǹg¬5ƒ?&VkcŽ1Ub¦L¢ ÷Á7b}Ùò5?~ÿºÍG—naÂåfŸäÝ'@n4-Úä‹Ä,z¢á½™É…è±,ÚX¼a#Œ×ó5³ cÎæ"ä«_¯n2–‡ø°ë_ùÊ%3´’gf\:®`È ‡P”>7„àˆE—Äõ& -Æ/¥n’Ý´M˺P‰èÚcœˆÛœ1W[#Óµ!„²„hYÉõˆ¥od¥ô’W­¥:›¬qJ• ¼kq²Å>g†åI¼}U4&Ñ:]á ¥9=ÓÆ+â\4šðÉжîO¡*WÉü’7O"Œ³»ú¨ò«Ó§ª\OjžGNô«ÞÞ]$sæƒ_öhôå9å"›æ”6Úé,oÓë %É‚ð¾h>è²èûîV ‰N”I<ÇLÒ6Bmô^%ÞwçSû†p£ªò¡Œ:¤¹©0Mü°ºi0Æž#Jθ̶§4¦ûœa …"¥¤á0  ©§†üI!@7šÃ^¯›lu
-·©~7º H,$BÂC‡Ê`6ÈØAð\ò`Ä?‚^rÊ”õ]×E4<Oâ0_ÍÖ†‘yÎé¡Ôm2ºKV{P¦ÙFQ‚£ˆfÊuÕS<F3z—Yžøøë×?À:)Íi_¥îJô‡Nš•?:çúø÷¤‘ç@´Oç, c¨È%%»þcÐÓuŸ?‰é„þzUƒ3áíäº?šZB"ï@Ý‚ž&,A
-1;ç£>ûA7×½¾ïG —ú%¨s0;¡òcP,R'¡bÞÞæèó'ÏÂÈÇŸ@Û#Rj’Z˜×„ŽÇ€»Éo†sçûÈ@ÿdmå
-Ã-žB1÷)ÉkèRƒÑ–ä‹B·ÓZ±]u¥$ÉÖIÇu“1òDC±WM¸¥‡áh²¡û¾O.ÉŒáâ*hÅ$ªÐI£.Ê^ç"™c„pÐý)m!kpR}݃5IÅZ’kÅD(HkAH¨Öè¬í±$Mâ Ø’MªÆGNuö9;R’D_ Fxàxëšüd.RMù„U%±Aé…ÔǬ«T³Ž*}U!e„‚ r{ÎqÚ®Kêš$ &jeuUVÛÚÂ?žÔÐ|‘>ǧ˱ JDjÐ8 íô#VgáUÏ9ÔUIòu
-Nˆ‡n›"·€ÝUœb±®[žè[Ò q€,Ûò%DFKµ”©ÛÌ¡OéŠ1ˆ[}‰™õœËv‰ÍœVxÈv,´ƒÓ:YÌ£{×wOÓxiŽ,5ŸóßœCM©"Wí@0XFO'‹8^œ:{± >áÈ,¢ÖM¸bŒ2Œ@¡
-Ó¡¾*«øái°Ñ÷Io§3
-¹¥’ÇÃmx˜v]ôÌ2¾KMefŒ3³ÏTõ¤î7Œç,>ÁYÚžsÑ+qòû¤î‘óõqO¿ º ’Õé“7o4þÆoÅøø¬aûmgZðÐXdIkÓIüaüF½°28º¾n@{À2jewåi¾ìp‰ãÓ•„ãðâ1ÀФ¬êRŽì´>ÅY(‡¥çж„0tsãP–´ÌmnD¾ “G
-Îì@Jðû°#åeŽ g«cf#¡„ƒ'| …&àÆÏ2D Ò£l Z¯Z*tÊ;çµ”ð¢ÕC8Y¦’–š£2Ã…’¶—jå\AYÎØJ¦‘{òy8´k@“Pßj>É=‘&ÏÅ8H*„ÔÉk¿ãЛÓÜï@›NhMdX™ÆêOªJ¸ '8Ž#ü
-G CÆM¼åP¤Ô2V£+bB±»Æ¹ÉSΙvÚ:G¨I×¢ú—M€–­üRÆeìŽóË&¬¦éÎè¦y8&ûãR|BØ >¾Î¡‚‘ @¯Í;Ê™›fa;:xÄE91Ð'™›Jk‚fÒÃÅÅѳ°Û’º‰¹o¹x²—ÚˆîäÜæ_ìö‚Ð#Ãhe o ß×Ð;ÈËú
-bÇ$á CÖ:g1¹•Zm‡\B›œí•HÙC©ÝÊÉzõÄ H“gѲ(i}…|³à÷o’øûÍ«¾>o]3ïRäŠÙˆœ³Ý£(Œæ.곃qÁ ´‘e¿5³‚Ks+éÙ(5xŒäM¥¥H NʇeeY$ Ÿî—ã*æfQ&–û†EÖY’ï e”¾«ÇÍ1Ê$p ^¯‚Iï9-å€q3ïZ>un¶Æ­q÷òºG±¶T¯aj„T11p }iX,³xÑÙƒÿ ¾6ýV艑þ2(KKH‹¦ eò«+ä_Y›“€PÈM,£„eáh˜0Álñ¥…+,*o’¦^­«htv¯ÅVx¹†›)÷8¤¿ŽÏ s岎;a<ØÜÞAžýì†qAçpéXˆ»XÒ}·4ÖT¸ÄîùMØ|ìÁbë×õ&XÊzfµIÁ°p,
-;úLIÐ)ÏÍ­62æ’TBl‰§R¹ádxæµ.¤RCßD)—KOl©ªýº
-’~‚ÇÙX„äÚëZnAÉ‘£| ‘deç±HÞÇË(Îö2@6r¤ûNãtÞ´Ï—²Z³g/¦(ÎBŽ=Y~V£Ã%ì­Š/>õ)}¶A ô¶Îò÷|Ì–gKí¥‡×u Ó9]éÛ·<ã±htF¯p‰t¿¶x³
-.Ù~2 C‘£r–ÛéQßš; $•VpX´ÜA8òi41¾^Å/zžåvbþÊpÁä#l4ÇYéL<ͯ´ß„ÐpU˜R¨Ö×M/AÜ…´k“úWRa¹a„2—!Øÿ†O“”Ü’/î€ jË+–1.nÚZ(q̪H2‰åø†nSX´D1;­¤µÑúŪœ¦¨ªTÅ.ÎS ÚåI½¹˜3èL.pt?õzþ¦P‰KsÄ£ºœ ¿¦ÊëWÁMF&ÐÙéR&VµÀÃÎÑ%„)IaIS.Ÿ†ç©’G“3q­óª¿½ŸLhŠ}#‹Xä×jëÇÇ
-§¨ûæ5e¶ì9\–\¡DŽiYÂ\h!S>•¯÷‡Š%íì­;Å õü\aB¡8zV–B¡èýŒÌu!ägi*:ÿÔ“‡ÐÚîTuÇ)ÌÐ’Ëëeœ«ê`þÚ4&q¨án€y°•W±s² FM±„ð­
-òq (Â~¤M{à¶å’òJ!e¶iä”ëB¶ôáDFöRÚQJ§œü3tËÏ!Æ–Gê½5Ò0\,IF'žÇ”¢òðP^„YeÈôf ºfbÈ°ÂÛg$õÖ¢? Q‘k€„Á\Þ$N‚æÖIoªK[óº# a%t©ÊyÖ :ÃÂa$Vä3K:5}+_—! .›>Mh0Gl¸+£EAn;Û˜š`E’#9,2¶-w¯Ô¦j!¶qŽ×É{ÂÆ×ñìl@ìÎ’ j^OÚHl€:¹ª<Y¥®r4c}ƒè,XÄ5Žzfð‡I-"¤i"31r<} ÄÑNR<¬W«yÕÍþtúßV%ü!|ó‘UPᔉu—Ë%įâ@R»Õç@Ô"aÿ²_ÅE°><Å«h+h°HÑçz:¶1APäLâªç ¨ÈŒV¬ˆÏÓË”%ùÞ°Q MÂo`Èe‰œk?‡ÙàÿÐפ{•#8ú3mÁj\!Bì©Â 9vˆ)m·‡cè1íH5¹¶ šßKZœ"Â¥tômì"T ¥“{M}œamS=¹ÁíÂ¥a`£Î¯¯}¨šZiŽ7!´ȶµ|nzŠMµÄ%½{ÄMO#Hh8ÒUÓ›7=Ñèu2@Å{#Ô£¸ðkò˜M¤øEÍh!{’æ
-e±'I6hçô*<€ÖÑæщ|A\MaWà9pÍ?€V²Œ2°V€½@€QåÍe\1Š€ ¦` :dŠ[([¤Sビ‹If`g§,YÌëÌ…Á“šÓnÔi^¥¤˜?à ¶])o¤éd%µ$ˆ1x‹oývÝÝð¾|6†—µ$9ä×¼>¦Züƒ¸îMù'†¢¦_r$äZ*ârÏÇ?À }ª-}9ˆúp"M}9\QÃm;f¯Óè„mK†Ž“ô±nó1²¬_¾W›£"­¯ JÃØAûà+há!©!­=ŒÄ¥ÛÍÛö!ó‘ú¾ (šÞRk¤c.7“)Ãn¡ SòÏ~²|“lÈ$¯ÆŽ ?"õïð+G9W³o&R'Ëäi¥Qv¯€r¨¥3—žÀÞfËP«ve[B é°Cæ¶mÙ²ào¦Oüs4Å›±5É{ ²q¸›ß…4ú£~¬Kˆc½ô ž¤UZyw^"' I«'dkM¡¥©xj È€T#‚/WC
-â&MµÙ¬ EñGcR4ÂGÆ\Š<Îq²è,?ƒ6ekõ[9Á±ªÕµDFÞ]YŽ¦T1i\µåˆ:ê_Fóy†ÕŒMªHÚõÀ‰jæ ‰±Ãœ¥ˆ«Ý¸‹TW›:…¯nÌ[ìz®E†ÆÈ­žú† yÏ9­ì:½{ g*;Ö+šÈ6 0œý¨5Àð®ä-Ñ8NŤ´â*ðìpûƒª
-Š866Ø:îkPTƒèX‘æWbr¹€†áåƒ|wvý²úC6Àrb>»xØ='=”²ðò%5×TS®5Ü2î¼ß˜êK‘çŠhlÓ|ÑO‹<ÎðŠÞLµQ:äšjИ”ü>Ôç ÁàÕIÃÒך¾¥7‹73Œ¢2CÄÓ:¦š©s[¼ò››{a±!‚ç~nójªŠ6”WÁÙ©&$‚öŠ°M‡Y^M5«Ý¤´ê›jà.åf±Ô~cª/Eס3âÍhª@eâO‹ÞWðù“=•_Žp^dI\µm?ŒùTûø×ÁJ«Hê„Ѧ=µ;E*Ñs;m’Þ%A:Yä‰WIo( %×±yˆnÃ>3¨© EEXDÎarÚŸÂæ&–ëœ3r’ô8’]R¢îÇOee­DÛ•€™}‰ jÙûüåÑ7¸ ĺNk7wFG‚¨3/î|­y®îðw2 cÚýV£
-Y“ˆ kºßÒ ¥?ðLÖ£š4WRE¯ŽbHÄEÊaÌiÍ!QE.dyúþW 0»’£
-fª‹gÆÙEK0u£9ÙÃP!ÒFŽ°ÝI‰~ „mœ ˜s?×Æ`%ÙKìý,NÑó¦fåjµãFœ6ゼûžÞ»æ(²ØR-”C;vs
-ŒÃ°êÙ`¼RUôâøm ÓÅ;¥UÀµØÝ„ê•í±N²eQŠ]/g™'¾:ìIÉ f…`õ=NŽáHºÚÓ1+¢)BYÃE1Ž‡7ä FÂí:]v³€tj£¹`*Ý=ÊžeNÜißFQ”x¥X:¬„ùƒP
-P6¸ †9áÙÒªÙcUÅ™ ³e’(÷¾¸âµÆÌPà6°—,ËÓ¯éÚŸlXÑõ%ÖY~~¬IQ2qs’¼&MT ÄLƒgi5‹ÎccBïí0—Sôom}þD€eOq¬옞¸§E÷¸ºˆ¯4® ú
-[lšG°“h+¶¹*2GNÈ\mSêŒ bÊ˱ȱò!è ¥ôuq\f 0«š%‡Ô¹?=rK€µ¬g´
-¬(º
-£ùÝl½HƒAhº“ÚMÐ
- 8ŒÏÃÖ,ÖRìV³"Ãlâ8|  Õî¾.«E>Ž,åᔬO5uÇÊQ¨Ë9(ÊøXäï” ³“wãÔÛ‡3 •„lhÄ ±‡Stµäú˜â—¾’®Ø,”Ää×ÓYö¢‚ŠGxj ¬)FLZ×ËI»AèÃ=¦=B ×JŽÝÔšððŒÐK1)Á ‰n’¾ÙŽ.Áƽ§&ÎC •îéî?ì0K”ì²­°Tw2BL8[~oæ›’Œ~þrŠ<´W´¸2‚”Òÿ(ºl ÷¹½±Âߌ—KŽ$9DO0wÈô—¸®íÜ¢¶Õ÷ßö3Jrg ˜ºs,äi43†Ãum…©ÄÍ&Ã&HŽHþÙ lK™¸ÚµGÜ-PÇŒq}|`Yä @øÁHâhÏ‘à3"äa[ÄÚÕgíDío,?ŠT ý÷U»0Bß^3|‡hS!ÔñÏâú¯ÿ À|¹*b݈~ïÄð=HŸk*<g½ˆ¨*œ¡gÝW üsã/ʘÉrc
-ý/†J;/ ¨å…EcN
-ÌÜ|¢ÅsŸ¿??Ò÷žº%Àêä†e^éÊO)¦éóLXD—ñOŠ[j
-Â4Þšÿ~hñ‘ÞÉï„9ÕOó0:“,]-‡ì¨6º§4Q6„K ¡e=«
-Ë%—¡C¸áiUbFXA©à:Ë© 5„ÞòZÈuK|×63»ŒÌ¢maX ΢Rˆý¥Å²Cï(ìüt kŠTDñ¢_Ë 7!J4Ä` a1q½IgSZxðWηC Œ<–nµrÖ82ÎÔìSj?§e^CË{ãáišÌzÌ€€ªpA6(;9ª^À
-ÆÉd9
-v«­ïg@ÌM?;¦6v<ﶟ%§¶iFÃeæ[%•è¶¹€ñô¤h’Ï`!šFuvGx;M> œA]C„Ñ]rÖ™Þ;O°æ($­ÅŠEÚ²
-
-Ö"}N›¤ç}|Ý.ŽŠñ&™…!íi§
-B:>öŠ¸Èþ…Õ<…Í?E\ìú×CEzûDØçÅÂR
-ª¾`G½r]QÓ¹sª^Â(ªNEëÔ™J~Š‰ä‡5d>¯vÜéúó“ÉÙ–¼UÞ;£xüÏÆ +c0W”Ìô¾`sS nJ¿#  _Úl¿h+%¼s9¹VAQQ_£‹¾5 Év5B?–hï½æ(“¾9‡•Ãúîa/áö
-„ŽD-x–Q©þ
-e¬ñ1¤ hÊŽIb/%
-’@²Æœî?gHõ¥ÉX:U°HoÑVbx™]v1wÄTæ±À«#zv
-æ…£ äV¸4úúzŽlŸg.ncétÓ ”ëƒ(Ð{
-ebPyÂ\çI˜eÛò.ñDa{-çÙêZ“‘Ìé’½CÁqÚÍxUØÉ0´öòч¸?9oò
-ÏaÐ4Ò0ä²vn¢Êâ À!‹ñÂÉ/»’ů\ÏüS k%Ã@=ØTNe¦’1)a‰@(,É“!Ìíª/ÿù/åe’$בÑôxYÌÃZ½¬[p[¼ÿ¶Ÿˆj)¤X’µÉš)0~àð¡±äÛß}+i\žE©J¹f©¸rÀLã5óZôù¦¨h-qÈŸõÆS%E¼âÉL4G!–¯wÅÔb÷D¦þ¨ äi¦h§œ&Ãæ¬&ªEßScMo2ï,Bq ƒLs 0¹Ö°½™çßJ6XŒŠ‡ÌÎ<çt%3Ñs=ΖöÃÙ¬a×¾\ÙH!Üí£'ZŸ"ÿ`w2gŸaÁ+9ÞKðJ<+h ’¤}Á±Íõ¦‚…Y{QŸêYÔdŹmXN¡„hVœΊƒl´ðe%øÑŠVn‰ó˜%O Þi ëUpIZ^â+*+½üÈ–/<Àaœ@¢WVÔ*ø*©
-Á[BEe‚Ш€rù ų (e$€Ráœ?™ÉØð%›d‹IŽZ SLX¾Å)Ê°Á$d›‡SNMr±F ãΦ©¾Vl8EÉËQ²¬ ÅÒ¾VdWñ-_êùÒ£œ‘èÚüCÒ±NßáŽðmŒC à˜æ;µ4œÁ(ëËJMå‰"=‰î!rìiJuŸ¢Råá‘óMUq/’P‹ƒÅQc"•´æ»\J,‡ù²¼Ç›s2ß¹ÈwKÆ
-±ât!—bC`ÄA‚'FÁHÅI_ú¦6<,Ë~•}S¿fᜒFºhêÎÞaF[ŠUø¼–àÀDx2ŠLJ³’.‘÷¥èÓ‹x:dÈÛGœСEØälÂ.)ÑòýŽ«â˜%+Þºï;5ä\èåÂ%›H4¦ÿôx2ãÆšsº Ÿ¤^êY;1=msGçäjY@ó:ΗGŽ(¿(ஓ˜^Î9°J¥;%HIÅÁâ4¸dsâ™p!fîpàSF=WðV6 írñ:OŽ‘—ýœ÷ãî2™8¾xA{¿)ù›[•©Í?þ €&X1êü/ý+ýÿ²"Üûbe¹z7èºB©1õКÅÛ°87%«fšÇ¤c» É®+ÑW÷fãÉ22vÀRóÑX)!ù9´Æ3êŽ7ËÀ˜HA­ï‰ýàç£ÃLY^v@÷õ‡ ·lÅF¿}¼)Z„ Ñ m5c "ÖÎÅÑœK+puHv˜jQ‚¤!8½œâ<
-³=™¡õŽWî¦ð@T
-iLõ”zç°¾ƒ¸ã)Úœíæ̯suø‚ØÖ0Ë2“};‡¨\õy ? ´€É:Þñ (ð/-Þ4°ø]÷§íXkHÚ{+/¬’UX6p—cÌ…º1,«™5îèöKEp„W$VÜÅWýYÂG1M|àÀ>nþn‘\#,'®s>¸mÖ<©õÖ@*Öí–NJ&±ž
-F—à@à·ZH;
-Íe›ïÒ¤ÍËD…¬îPÁ![AÐ6læ…f4™ªvVæïꥯòɸ‘Ýö¥Ä?ÅIm2·#02n™ °Æ1#Ü„ ÐdÃŒö& »¾”}Š6Ü°ÀË4iÐ[¢„L +'P‚Øb;ÿ>çðgòGU0™7ªÅ¥ .d*¤ê
-œÞ$kbñç
-òKCl ø» Ð;V]Wü‘ŠrÅ(̪Drd‘ÝEPp@Â2¾mÀ%e]{_Š>nEE°Ä@2cܵ¢Çç^‹>¿s§»zý|àN»’ÚíVºzaÜ
-ä­¬Go`¸/©‘cyl®ñ%þïP
--]§q.3%@âçj%v_¼Aîç”ÊÔÈ|Íø€’
-&„e %Ætž®ÿY _%Š%nÏK‰Š-ÅÎðïõ¡XR†</!‚
-ðÙ‹ŒÊqôñÃb09áèQ£ :äà•ñ
-
-p<Äük·kñ)YgŒv¼!hl"¹Ï—‚𙚸sœ¡J±÷¢ÿ7GgŠœoá÷“yÒ³9KÄÊ…àÏ[ÎbbâyðÁ¿hè%¯QDë×
-r˜ vŸŠI쬭 ^j¬
-ísÜ*—"• °ô¢è‡î–\ÓP–‘m£¤IÖ{‘3 ~ÁC'ïN4æ`XÂ4Åí)ÁW¢
-ð?ÊË&¹–[‡Á+ȼ‚Sú¥¤q²“LíýOßJrùv«ãó’T*±qÕ  D
-»`<yŸê€þr’æ^è}Ð2ƒÈãƒÞOÒ^Gè¹@<’RЪ$ó9¼üÖO ?
-±ÑŤ "22q¸ùÜVæ–Â,±Ò’T=­6há
-Â7°qŠÕÞ:²;AšÕ"ÔÌM‰zdÜW`§PF¡vCˆeVýãÛpqØèˆ>Uhçð¥&Ô‡sÈÜŒ«$¡­`nm,GŸøò²,• ‘ìUdO¬…¬­žÜoöB–)«JªÚm?S¬±Y0Ï!´½_¦œƒ¯÷MJQf¼VPÜ51î \\nï¾Bf‰/õ;sé‚ Œÿ ´‹.§nò*\³‚+v7/¬
-D ëXa!³ ¡TT`M⇠2ÃÖ÷zäžcps‰D¤Ôñ}‡—ŸÉxúŽ­šË&Ùåm™±eÊÁöm”NtlÊntîžÉ’IŒÎgÊ›»2…pñt)«/~‰´Säì]ÐI9ùšäwÉåAïWqAâUÆÉ0zŒž¯1dØíÜ¡åy}€T AmÉŸ½ÇÎá‰ÈÊPKùÔ‹+d «TS±Y=ÎAÙX‚§h]FñY1’KL†Ù àvm,b-Æ@[ÒdûW 6Qæ:Ax#æF=Rû8Dd$0Ù ²|„0`Ø 1Ûq¬/ý÷h}ûŽ$Œ­®:¾sõFHl]‰Az‚cÒ®<+©[Ñ€Í5;
-/¥Ó1E•/¬Œ):U'š¢dàò „Û*–@4ëRù1òTÈŒÃGðúÙ‹ÏÆ+ß•*µ<éÂì9ƒ¸¬uÊ–„›šBAa•C°d#È,$b[C‰5®ô((R‰³rú^œ´®í`
-w ÙL×|^¢‡´žw/¨Õ0MÎ.ª6(7†¯d÷F?££á•ØßúÑ•Nm¿¹ ãîH*½¨Çp»@\&6ô¶/CÍz×È>ZI[TÄ×õ(ì€.óï>ÃòI@ ô¸–•Yô?Ê„¸áÇkÙ@‹6žXY¤èZœ_j¸š¦/”ºc uŠ—}ðòG×? ¦:wu\¶œüSUÙNþË’wô'ò7zVê|w'ëêOÅr0Çùl”h†E/ßÝéKW%'Rã“õTònŽ¢ÆÈVðµx:FÄâ›øš}ß„âETwœä4ÄƲ$eɨ¦› VxÊdg÷•Tq™=Ô–3’ˆ?¬zkЉ€Yf)Ǭn#¥s3ê7>ÎWE2*¡e¬/ý÷Tj~ùæ owDnw@û¹Ý}M2Š¢9¿X¬¸é£þ\úÓAƒ@lëý;Æñ¬ŽB§¢üš
-IœtThå</I¹
-ÉDôÈ1¡2ÕWä³Q¹©‡ó9•T%…d@F[‚LÑ‘QªH²tÙ6%éM?o.€:ÂÉŠû1æ;ÛÑ&Ûñ2„L÷_;ei}¨q.5¤x 6iè#R ˜¥98¢ž(‡b;†‰Ÿ+/Öå®ÎÆ6°júû÷_Ð!»Šô6ʵY¾ ’ÕÍD^&¿8/N ˜Iü¸¡ó¹½ÈoäÜ*YܾǦH½˜â%$
-?‘›?4Kë“ŒJ ˆ@Ò.´M6ŒwÚúb‡/B&®ä†·Ìâca]—>"þ†U¯à s*N†<œ2T)È› «,¾£Ý.ñ‘pŠ¤dÉϘ֖ÝÚ6HÄì|9ó!K›Õä V»`“_PzÉͧƒY0Gmµe];2í1ªo‚H…/˜1/²S'„ÔÈa+ )¡CGâsöJÞ1ćJÞ`æŒ{ð<~„®ñ®QþÐ N ‘6 yÑ’B[J¼LâK BB*IÏÆÎ|ËhV/aom™¢ª«ûZ :RÌyÌÔIÈ`É XS5‰Õ™†MíŠ9â0[ÁtÇìë™ÍþÒÒ¿÷Ú1¶Œ€/“Íúyí=‚p ¢+™¯ø„ÿÊD5xg+ݨF9#CîëW¢ÏS;4„D´žt¯rË·N‹/$ýrçÛù’X•Uÿ8¤…!,î óSüù¨­g•úvLÅ
-$*™Káø2(¸kCX›Cᓉ³¾ºÎÑdþD u_<Ê«™Þø½ÒžŽñbNsp†²åÐu
-4,C(í]´ ŸCäÿ(/“ìÊnˆ® öàè°oÆ9Õ.<UíZ7@PÇù¾SU5±¿!>DCÑ„ÁóÀÜÔ5ߧ«¨LW1d¤Òñz^ƒ6áñúñz&¼º6‰s>­hË‘Œ œÓþiQ ‡ÕBÆòHx\Ÿø“a¬$Jß Íw~Å£F‰R]ò
-¬ø±n(øœF)5U`ÀØ™Há9ôCŠ·'WB`Á-6÷Ã
-Ʀòé$ÞR W%O –uõ7ÓúÃÔ}“tÅ'\Ø^‡_·ã
-jè6AøÝ,;s@ñIrä9T–hôeD>ü&gÆç4Ò,ƒž’1¾å2)w0Z5¹°$Xoþ v‚cñêðR>ªÛÙ÷J"Y”:*à÷Q,Œ‘3B3ä`jÁÊ)û""˜|g;ˆe ËfT¼˜’ ¿?-ê@…Za ˆŠ°Qà?¯âS(Rüs?[¡l À.§¢Ñ”–¤qûšô½¸K[HÂtHtDGMÏõžƒñÊZÃÎÁDÌʬ*™ÃÝ5?°ç\rL%1—“j^K$,ÒJ†YÞœÓäªÈ§äCOƒ³iO;”oFTx„­$„~áiÂJÓöOñ(‹Ÿ“?]ÉC‰ 9ŸœÛ
-ƒ…ˆ¿rü¢‘øŽ(2Å;÷7Z‹~À\\†>¨ÈpØìñ®t•¿) áGÇ<ûŠàpá|-z%<R³ÙÇ|F°ÙTž²o~ÅY£K|~…c¹!’1ØeŒ×O‹Dg
-{ù9üþ)gˆþlj¶Ð9+‚åW&ðÂKZX­$µ†RÓgõ”T-ȾnC†>ÅÆ`µéëôQAú\*ˆ™×Õ¥‘sèÙþt¸O`E úù˜±sW»%Ю¹ø½ó!pþ
-(UœPÞœ+Ö…îVFj]!( kjŸÊÍ.yÍ"¨ÔƒPÔÉ`kÇ
-3•«_†•£Üg¤ƒåƒ3½YÉ‹ ^(J“ÖÃï\xãFñ'å G2¶ÙZÎa‰*oE hÎ(,¢áòƒ¬@çd–tĸJ½Y‰ˆIXüº½*Iª>¾îÈ“",Í¥üƒXìÁuŸÚx§Ø ØRLå øþ€á_ߦg*ÚâÆ—úëVðàœj3¸Sa‘á€g¿äƒD"ǘÕÝ d
-àŽi•#Eá‡ÇCô¼¬„X³Ø¸ë¾qI}2hXt9âa8TCVéê5!ˆÈZåA~&Øê|OÕB‚07£1/1¡ãGÑǤžÓùT)–ò]¢øµÀûÌa1
-7îb}½VÇO•ú¼º¿Ù°"S,jï¬ÖbóÁJñ‘u óƒQ £ú_É ¥‹Ô×dlòÏmŠüÎ1ðÄÅöÌ»~.
-NU`E=V>,ÉÛšaé=( ©éµèóMžGÖxÃ2 ‹²º”ööáÊ–µÒb¿W›YÞ¯æøœ™![¥ â‰Œi3 œêÅq‘å^4,»]fÿòÈRûÀ>wõØ+&Yv&¼Ã¶IÁ¥  Ê¦­²‚’crD%~½ûãÒÐf?{~VÛ‡øÕsì&nï÷2™]ã$ðt÷¥ 媢õÖ`ÖˆVCžö ŠO§f>z¥@Ë7µ.R¿7%ʨ ÂŒý:û"à`üÃ}½)‚ÙE¹Z¬~ ŽÂA®xÚ›hkÊYþáìo¶
-•Û)8 öPQ|Bæ¦ÿ$³ J ,×É5Hs§ÅЧ( Öòï@-ØYÆq”‘€DõGó&£ß’šPƒZ• õ×<âÄ'|n%0}k´ðœi.o1<áõ\8)j#ˆ³V1´I;vAmÓ”yÍ¿€°•
-Á °„gäJ4s€½üU©Ù!øFôOa§(¡]Éç©À™°2ƒteÇ`®·Sîç¦,ùÏÄàw}SòHG¢ìåc¢PFÂÐÿ¼æ±}ÑÇ~PôBÑj½ÖjѪLý_ßð@Qä‘0 üö?ÊË$GŽˆ¢'Ðê ÎúµÔ-z[ºÿVïƒ U'jÁ†!—ÃL2âDzqË©è%'©¤Bõ}ʘ‰À6’‡jSáŸV¢/3üæò¥@¦&á@…a+ÙªaÙL¹ûö°x=@D¤M릇)âË©yôC¿Kõt„
-=ðŒ6¡HÝ#$nËJÇÂb~Šò<¸¿ºn|‚ë¡Vv ]®\†L<ÎâõD8ˆ¹¾Ät+Þš¿ G&/o§/¡dòÆuÂÐL~ŒÑLFA;U1ÌÁµÛ6FS ‚È2Ý*éS$£ÁÁEæ!ù¬V É¿Ô8몛î61Q{LŒpdí¹_q¹•Ò,X¡:—d"7>Äû—®E/²mbBP\ÀÉ:”ÍHc! ºÕ>ÌÚ qA7øU$SÉ¢ù Ò(°9
-r3¿ÍºŒ'ƒÄ<`8"ží Xd[†bNÞW¹Ø" QÛ¸v>Û+Dq½*yñ«¨uMÉø ‚ÒÓLcK#C W>îØ &EØ @§Û´Þ#Þ bD)*It Qaövtܧ’¢„¥Æ^,&œÎö éPó<×(!€-¶£¯íÎ2~üâ¤_ìE,0Qg¬íŽš­ v2"‚~Á£%oqb
-älmu¯L¹,mèŒgm7¶™P¹AóšhNü$#XÃ\: T·‹¹œ#”õ­às1 h¡›Œ„ßó¾Ä=hƒ)tQaþt°¯±1,h¢£wö¬]Û"_3nJ W؈Óæ¬k $aN¡‹uDWºâÈtž€Ã¢t[/±’‚%-"Šý>ÓB‚ÆÂg1`¬;Þ”¬"è“?#j}¬sŒm†ì)ajš ´Ä5Ìe›£˜¶:¯
-ÆË£jqPˆˆ+±8=Š8Ø1íâü¡œd«çDœMYYDA_»€Á5H ¦À)Ÿy0b >ë^»Y%Á½ÞÒalCiæ%Ù)¨ÓÚ¶ºLÚÂ׫ŒÆ©È"«k¦ˆç_º±[Q/$|Ø1ÚâoÄ6»I† N)k£¦JÐ jÜqNœxV9*o^¼¥³uÑk’¼§(‡?NŠzñd<íŒ uNFG'oG?«¼2}òÏç$(¿VüxˆÐàÚ—¸hy™+hÛ¶–¬š;2E»Ú–± D–»š¶ƒÆÞGýÌURûd7¡¨xLç’ÐÉ£]TÆmÞ—¸àDžyI‡¢ç*ʉ£ÔÜöƒs¹+\FXdB®àŠ¬G
-þ.9nfɆã/lí`X Ïž,›4}Žésëhoo´Ì³c
-$[CMyo]V!®¹ŸÅæ0 á´õã<¿”,äà&šö"=Ã#YwÖÞßî¸gEîÜ-3ñÈÆÍä‘i7Ù èwÛ x6{QͬöªpÞãì0é&9gðÔ9oJ^œê;†–…‡²¡²
-§t3
-_šUÁÄ‹€5?!Í›“Ê›ÈC†’0EÏïŒWy6>~þàûoCŠ°è'ï÷ÛŠàþGV‘xr(RI‘™á„šmù¢à) +A£BaÏn¶P€*B‚J,”Q ¨ hѬŸö:ˆÇ*䱎aáâÆJ¸SY,ìHÙ¯r.]·­S"Câ¿MÌènt‡ïÀ퇢_7EPs•µ'Y·)"¡"z…åÌÊÂ
-2”&ê%Ü^Ô¬èé#v`Jî ’I•`yÆÀõ´´»ówFü°/)àâŸÐ™ès€B†‰)ó¶cø/ë6e?nFõ‘‹#‚£ƒ‡3³05ǃYèÀV‹qpqGGdij.«¬óòÞS$9xIoDÞ{ß&O'_*R<µÉØBü·-PE-x<9q×aîNE¯%Œ~ÒnÑüûs`¦«}´V“¿]¡ÈAÜPeÇv4…ÃÑ‚©ôª’>8WË!*Xó`ˆu°å¨¾/ÆH7z úB
-$žIÁ+lºÆY$<ËÐ`Γ)q!âÑ,\Ž§s„x(ÚÝî B5| ¼Ÿ`!{Ùèæ,ÅàñFP›®ûaì*áÀYÈ®ú…xM°·)^'O eUbs¾p¢Üa\%¶Wœ4-v2(ÑÊ*†­ú©„î—H³ U«~ið7ka8ñœ±Á©¦†«ñt>„(óÒdkÚYþ˜È þSbå*ª2 #·/ÁÃñcwDàhΟ·E'ùF<ƒU²€açðƒHÙH÷à[mÃÉDƒ›ðét(YàÏ Kòé¡F Ž˜—üé´qï$ŒYÀŒáàt0
-L>àá¼ã ,¦`]J9‰ËEytúïÌÅÉMd ,rOlrämpå ÿýƒGÍ–.&…™a\×þbJD·ç7~Àh·ý¹¯Îe„kê–œ3\)Øf\"™õZóG€
-H‰Œ—A’\7DOà;ôæ$¸Ö,} E̪uÿí<ü
-u}–Ý
-Ëí.g‘ H$ÆÇ´ê¥M{wi5Ü>þþ«F½†›ŽhRKoßi»†h”(ÞŠÇÙÕtôÖŠ4ñÔ®>J3ñ!îy›\Å{Q Ž?bNçôË\F˜¨qÝôy=ßö?`åÒâF५¬˜FcE±Ò?~1}¨ñ?¼L‰^kQ]ˆ6šùèeä]‰¨%F­î7„ÀŠ¢díã缨ö<SKµØçxµUëêó뽚òm a#x½ñü¶biÒù,´5õdÝÔ›©…Óßœ|ãMfo‚&+xTÔ7¢È;xZ÷crB¨;føùR¨}Õ H/)k
-<û8E£WÐÉéhC¯Bí†õÚ`ÔNàkv’^Í+4¥ON9VHÀ ]œíX«Ⱥê¥ä‡c^ysæ•ÇG½Ðø›—Vx$øßêG¶]ïä†ö¬>¼µ¯¤ÞÁÊëì;@O´¦èE%Sê†gý}=5¬£*­‰ðTAɾ BVšD­1Œb×óuß‹Ô]Âu*]‹—´:¸³ö ŠK;Má‚ôµõºAV„’5q©þ—ôN éÝ}•2œÇX³}R+•¥BÛú&q…çó½Œã
-$4ºRÚõ(4ÕÐ^ T÷kTiÑ;$ŒØF©x²TY€¤½¡ôí¹Ù”(ýÎ÷ãõ–]Ä@ëu%’/Ð8Þ)eŸ! %­ÔqCP #Ó5ó¿ S®¶ÖW4í[N>@§ús]±|}©®ï˜ô Ž!¼òDŸ¥%𱋙Ö* Tù=¤S[ p²ãÙÚ]V-­*¿º¾Êá†ðüà Yåh
-›25Žç@X 8²Ëª<Ì4?ðúq&À1aÖ¡ðÏï01 +ÿ* "èjŸLJn7†} GÚ$í Ô_ZR•L§¤{ÜO¹üª0!f®„Õ;ʸG°6ǵ,Òæ<-áà4¼íáÉä$rF¨Ä<'*Ûèjk{¾öž*6¤{ŽòŽŒ—FNhk<@ò*½è„¢´Þ³üq äÈ’v)£/HÊ1Ü#½& ¼»(À–l·*¥„ÑFc¶Ç T²ë+²Y¦}{bè³–#—.#û®b¼§hs0I²ÒÒ Ê2&¤× Î‡ÛîVz}ð$Æç½h¯Þ˜ð昀xÙˆÐdžS3»hj¾wAît …R$óÀ È*gÞJ:k19žó¨ø3šsN¯z0ð™Ÿ9>QýÏRýüNÏd{•Ù^¡áõ1+ŠV?ûuÂEàžÜÄw¡•á%Á
-Ü:mñÄËȘ `òùw¢%ûöÒ<wàYyf&d©ÎªtwñU Òˆ÷2“[~¿ŠÔ©î±ƒbœ7R{‹½;gHÐÔ=(³ßÁÑšï©õ"P¡8t²ßb6"ÿÆøåU5Ý¢ÒŒgß©¡àöÀº1ii­a *¹ËžßÉI3º¬›pùµVŒ¡/Ù¡NÆÄã;³‰O/Uÿ<‚ðßt$9ÏÉ«ó*ÊT«½½á\2_dÝ'DÉqOÞêÊ´8çÎé·z¥¹µÌV‰í’i+΀'4ÂÌ°cée0#ÉÇ6Òè›;¨>5ù)”/­É6i’©Çs`®‚«ÓnÅ Ä^ºŽÅaì!U¢.µì ‘=ž› ‚¹Ê
-AWl fk;rÔÙ½àÌf Œåz§·¢#¿³{áÙužœé SR»¯úçÖœ¦®¥\¨)b²'
- þF×›h”¯dšÐõ IIsêZÖ•¯jø"T®ÝW!ä öÈ>Ú㕹@&Ç ƒ’Î-Òã´zÛzœŠ¦ßZW ÜbÅd¯[ËòC‹S2&û¿ Y±ó*ƒ…)oýåu
-ŸhŸÜs’ÑÆ!Ò@e¿,Û›ã Øo‡@¸
-Rn­Eœ6D Ô—”òë2—‡M#œkP•ÓÆ
-¤Pß–‚ÆBzÚ{3É ý w9½ «žÔ oKOqÔ›s^JþŒæAÓ«|fçAägŽO\ÿ³T?¿Ó4Ù_e÷J=($~÷ë„!*l
-8°”U–H‚‘©Â3ú R'{Ëáótž¡ÜLZÙó€x#ƒ D”‰BoM2ÝŒy
-„šŽÍ ö½®!»åS EÞz´RÐÑ–{>BÁÑöAF,3ʧ‚ |[ cê¹çÓrϧèžO`kà‰–Q>ÕÃ9€ÿ¯‰ ó©
-Ão¥7È÷|ª607ð•6hF¹2`Ëg>ÕXQ  ø†‹|OW”OLô~m3Χvv{ V¼¤EùÔVFsÝéßQ> 7ïžO¿\Ïãƒ+®a”Ç%'…¡îñâVÛâÄ–Ðä¢>‹[ÒQ7ð9×sÛæ‹¿‡KÚIð$dËŸpŠÔÊ°E…ü¢¯®›t
- d¦\TòñrgC@y„A`XF†<Å¡\,HÃ4hºÎ«ª®FƒÑç bGNËU?Ü'õeçÚpë}bˈmssôTNœ>43iÙPCàJpüB)þ1š ôºªð¾ FÄ(+opÎÏÒÃd qF =ãMÓmiµð8º£A°3 ªƒŠ/ÃE4flýª)Y£æˆ‡Sñ0¾a!qlg«´Î|5+|)™TŠi‡ˆ[ <7=Aè\fÐ9ë\„¢áþÄmn”V±¡à”¶Î«eÝ›ŠWݘ€‡„I8¬_T”1·î¯nM
-ö¥Šu(òÏHTïG+…FÁ} Vk±QÒH ( Ÿ3rx;&¯J˜Kã$X¾†EeèÊ<úbÛKoÙC÷@˜dˆB*/Òç'©é¥`a#"’ésnžwÊ\¸ßÂ!9µ`R×Hš™dˆáÒDúâ-²˜“;èÏÑ ¾Q‚Š›2]É¥‹‚Y 3H1»7¼ámòn<ª´éì]Ò¡Ãvæ@†T³(µ¼Ö®lyŽÌÎø1dø$õR¯µ£ˆ1£t9͉¡¦œÌé˜a;os•í–ÃçýoΡ×[,Å\_}@lª<%¾öغŠØè[÷›NèD±}FÙ^ò®i\ïp%.7•Žn>=& GPö¹÷È'¯úK–¶K²$/ ÐÜ4
-ûò×0Œ
-¿„X ã%ùyåOœ+«§“¼X£®lÄÃÞé T,9ò›tˆÈÇÚ3üÎKÁ9üÐe!寥‘¿ååÙV˜ Ã5Œ%;1¯¥a…`ŒÑa.»ªñ=¨]!0bZ®Ù‘àIÑ5;ª3/Ò
-•¬²_õ)B£ PvŽœºQDo'¬gA
-b4˜¼¿æ’¶~À@D(y×›ul+|¿<è&é(V†oçj#d†ª ëâÃu€(¯­ À¢N‹•÷L #HeSoJ›8;zŸòÎ*e*ˆT0QnJh€ž³†}§÷=;ù¢ ÄücËð¶L¹î¢ÏdżмF4?f«zRdƒ™°´ |š³ùÞ½›¦Ôú@‚LÊqèê*aX˜¬ «gÝì‰ê@¢éíPr$§÷¢ß7E4¶Â”,Nø}SRL?ÿ/˜¢¸¼+ˆ‹~ .Ñåd¼­¤Ê$t8º” W¦Wç‰Cv$“Až¤{ÍPK ü¶L–—ÇØá“܉ƒ
-ÌÐÞ§÷f0qZ@›CÙ”QÄ “Rë;TFK¢  [¦Æ¥ÊC‡£É§RF»èÛ"Õ÷’µÓ-”© ñnIÚD…hçØëäÂxÓÛ(0^;ñ(>Oí: MçÁ
-+t~æ›’÷ t-:á½!D t1OµÞ Å©è2ƒ§íþ¢èŽãõ^´8¦>žà½7ïñ Œú ”Æ1§¢—Ød%è^5Ÿ´BCxÌa‰„“7 byRÂæÒ󙞩ÈnWS)Š¬ñLhÛŽßδÖ!É«`÷‡'AI,(«"Ç9d:°Ó^Âÿ#/‹òC,R`pZ´ã-R<ùü}¨‚-'`ä’1»/fRm󲼙ɨr¢îwÉ‘ÞWnïÄÙŠ¦ðp6
-¸w[††!‡˜PîæšØ”!œ,® 0ïÛY9º`òxEªXÚwŠ3Êêb™¯Ó†"gë暬„0ËŸ¹I¯Š`AThÉãTܘk}}ou)zp¹ã1'>i¥DË+¸jÌlçïGª¤™¼ypÍ¡SS&D^Á·âW'6Úr[ÉAˆ !ÅM€­n/Ά|.R®ä8ÎIØ£-°#@*å¸N}¨õp)>!º³Ézº¦Àd$WY,mÒÝýJÐÀQ–îË&Š(“Ðîú|šÛ †a¢BùÂ:–‰¿¸ïS 9, žAê>×ðV!K”K>}ß)0
-ŒÐf"I^ë@k@¯¼3m­2Å,̺ßLxöUئaL÷ûDlû(ÉAƒÖ ÜÇj9„£ÑÃ'%;1 ˜¬Fñ|$OH¢;m  wª{#è
-ºcbž³éýª+\æA,šØ5ëL`A9̘WñÒŒó<´œôø4o"(Z¡»b(*ݬCZêj”4l›Ž’”-j]$‡3ÇÑTÝÝŒ
-¸Ú2˜S!™tµ‚Ž¶D™½›
-aÛ­T¤Žµ]˜÷€WÈr™6g™fÊð Ê_õ©ÌˆÏJ^B˜)!' Ç.ÿmN)Â`²B²)Lƒ'èÒ´_ë>mt&›cÙÆÁðavÈT]8Y.¢¸k?$ŒR 0¥4'ä?VС…‡ì1d÷œk^(Z;W.E€5üRP1îšö&HkO`b
-aIá o[!\
-È€T‡÷Í.e(¦ª(R;¢5Ó9‡¼#ÃÙTŠ­VYgØNcÐÕ) ýÎyù¿YìË‚h|‚ðaäkKåmRKåÂÔ±
-f°¡ºø£þöíÈ…<
-ã$!>±äò¡þÇ*éô4\!ìªÛY×=¹°_…=«zâÉùê”÷sßâZrþ`Å‘i×£+ƒ„`A\GåžX2 &œagþŸŸX²t³d‚øLמ t¹–̪ª©Ì]\[]KfQÅjûE‰çé7KfUå‘a¨öÑ·ä?Ñ;ô~%=)ÖEÿÇ“‹¶îÄš[ûKf[5ÎåÀ<ŠÛ‘T5*ÖÍÅ·dvŒýCïÚWKfÇ!P€®z–ÌvÕ‰bßÒ]K¾‡8–ìÝ,ùäõ"FP¥eæáZ2/¯Ò–I—Ÿéº:ò½¥oŽÌb ¨ò{¨ÿÑI½ºß™£!Y(ÈWò¹Î<*Ê#¦ëÈn¸båÊõ™%Wf©U
-Ãõä‚Ñþƒ¨v&æâ¥Ì8ëMDèÒ¬NÄúó
-“ rᘔ5»kÉÈ ­OºJÄ žX2ÝEðL¡×’+^ªí–'…|’óhÉ·ô<™Æ` ˜À¿иzreA9S¯æz2ïZ¯æuÙ“ÉŸ…T’‹¦Ó:µf@@ð³[‡ÄT¨Kljzë5ZD ¼ï]!4†Ý¨y=€Y:¿¥Y,„zRKzµÆ ª8-äÆL£©V Ò*‚Ç̳U°Åˆ>ð»eÚ9§btÁê æOcݹ؄,\cÉÐvÑ¡nÇÄ
-bD´¨dᎃB³¨X.›ÐÛÚehŽÐß1Ùn%%£ä#\-äر„GA½¢VÈgísôtĉƒ‹Ã?cŸ|zl]ç .CN÷X©ˉhš#^ëCôSÑ”ŒyŒ–A§U£G!\?f&
-=1&Ã’Fo);!«ý°*!C­üs4ø±Êªø|Ú—‰’Cà UYÀ¨­¶š@ó·aÒö§¦ü¸jŠãŠ¡¯Ï„ÈuSѱû€
-¡­,êá—S(ÅB-LM¼º ô€j—õ¦Ä"Êí§`gìËÐ`à¤+Ú1Ȭþƒòªw€' 8ô#Ôå<yòônâv“‰kÐד þÀI²îgéËìcÒut_2Ñl
-
-±EáÀÊ»gÄváƒ-÷ˆ:bÍöÄ!¾¹‹Œ×lËÄŬWŠô!C(Ú¢ì« ‡A¶¦¡±Ñ
-rh÷Œ)Íð€þ×Ô ¡É&€ÁìðóéÅTº‡MyhåZŸÞÇ®A_/Üè“÷…÷_ÿûöËÿx$6cÏâ÷a+û#"  ‘?ͦÿÿùFAE:Ó8º@D…Œ•âm+NPƒÇ¨p
-½¨> Èè2v¨èå • «jÄÑ-èþ¹ƒX™9j¹>Ççë”ïÊb_ º¤àë•<)ûñýwB3­ÄDjÔ§©­~"YÇ$AÛf)MÈ"—@ù ?/ÈBXfFB'›IŠB ’ g1›&øÉiNŠQPE´É, Qïd+'ídÝ‚>óúTÓ(iç61aÝÁP(ZŸ½´ ™6)„QÓ‚#UÝŸâT € EK¬  ÞÄÜYæ"bC"´€þMy™äF’+Aôu‡‚'\׶"ÝûŸqL(kÑ@WÊ‚Nú`fÞ&³Âô;=C±]e•$× 1ÙIV
-„ÖFùú®d¯sLsæZiǨÇñ&úÉ Ž<!üG5™k-«‚ l˜8fÀ÷m¸>¬Ê—Ôh…2£Wf,HÕÍdyY(eîFŸÆ™(”‡.$
-F曄À.K!Ÿ¡Ç
-‡Ge÷v7Ç‚y`®kuœ#gc›‘.A òª¿g>,'·óDìKœ²§æ°´‰›97ŠãóÕá¶ÉkuMÁ¢Êv
-ƒDE³…µI}#=š nxýá‘¡ºÑnhÊûb­Âø‡1xËæ˜h¬•É$…rŽ’m›{Z‚|­|µ­s8”ŠâRB_º
-]æ>ÄIMÕ#çŒw/VhÚ æh²%­{<@–k¥m©„½9‚ èç’×m`^Ê£j:}q„ÅeÞ€$þ)sç¶Õ^­Œ_áîžd7Ù<GTÿA;Ç´€*.éÍG&¸‰Ðìe® ýáK\÷ÑLT4Öu¶) 8'f¨·ï,K&"­Ñå6ÆSt- «‘¹±L-¹êqøMÚŸz£C2…»TÚj92lùÐŒ \
-ûÌ*VI2Œ{ “˜,ŒmVÆVdÈ·ñ¾¸K:…›ö/ „V»ùf@ˆÁâ–¾Dœ!ÊQËÌ_¢6±æ.Uk…ìRR”`V?Á<!®ã
-Rd<&Dä€ç×^63â,ùÈ}!¢î (y’1%eƒ¸0ÑÆz*g§cø÷
-ƒ¶Ú†p Ëž ×ÁDÐÑò•–…"YEúM4ïõÍ9­ ïº]ÝÚˆ!ÁUÕ‰uKck%‰›Q
-¨‚¹©3{4 ’‹Ã>§ÈŠ†J×û8³‹„GTý‡öqÑrÔ­,ˆì$Æ…Ë´ràà¿Î 8í‡ì³ýõçŒÕS «iþVf«—¥U®}Špï2ŸÎã£_·žÎ'›qá+Érl,V´”Ç J‰½~ð4’ÌåñR\É6"ž@“Z(!ÃŽ;¥E= 3kF׊ÀŸÊ›sÐ|2&¯:ÜX ;Å£44ÜN mÏ̘2:CMóÏžç}_ „CpŸ¡˜BΡtq7)Qp×®‡Ïw‹’öK6Îiz#.Û¸B±;¥.ªPÅi:,í<'(Ÿ„cf'݆N–˜­!NDûd#K]ÁqVI{ò¨R§ÀÑçäA[êPü Rú߉Úoôw†`9±PH1”ô÷¨ªÕæ¨%oÃ[>~‚nôÿõ‰j qKÃØRtùù:’„‡dpö4fûûzú ä¯Î¢c,–¹æø »c$Ö?aá-mÂüSi{6¸ØG„s°@·|}’¥‘ÌØØUqCvÓI—¿ ‡ ˆ\ŠN ,˜£?Ä<M
-«Ñ~úÕ'è銑õ†ºO¹ù@®Îb›Iyû¾«OˆZz0¤öÛ~ã"ðªUŠ¤³Ó¢?§ÜŒ‚ŠŽ=¢ý™Æ³á
-‚ä¢ò“S„y‚ŽÝT÷îoÃZƒ¬ûÉ)¨ýS8bîTK &:ÙåÃÛ;>>€žNáwÕšâf/ø9º WO†âûz
-W~ImŠ8Êç|}‚9èV†8ráq|«€OÐA·žá>=ÄíºŠˆ
-mÒ¤HJ=ŠŒN… ¦í‘ïò–™×Òˆ¬Ô~”7 8[‡ÆÙü(oö’£qÖ Ýwúflrô n«×dG}³—(¦hisøUÞìÅpËcñ¦zV7ãþ¨G©èEÛ‚rU7ãÑœH‚e⎲T`±.:âõ¼,´xæ鬒åÅêÀãÒ¾õäªníðŒ£ÉaÛ⛺O)h Ûµ¼ª[¬œ[fá e{ƒ«º¡‘¤.ÚÒö}oêvÝÕíìªnº²ãI¹§­8Wq+&«—”¢þr7X˜ É
-néGßP¦­wq³‘?ˆõâDóÎ 0ñí(n 0ÉŒUÞ~7@ .Ä~ÒÒQÜà[Î êɺWÜ«¶ ƒ¹«h°¼Ñ6Ѷ(©àjf’Úödö‡¶ wm;aLKr^YÔ—ƒÚö«hMm“Nª6"›¾½†Ö²Ã=>´íº/¸Q ðÊË&I΢Wé8øOpm/u‹Ùjî¿—Øá®5Q
-‡,uU6‚@fŠ^
-Ÿ
-Òç"8Ø1%À³;z‹ÊZÚ«é(OfAŠcª¹cMAE }屚‡¢†D¨Ùa¦™ïÊîíWÔµ¸ &\æ³Ó(ŽØÛ/Ó×!‡¿~x( vQƒ­CÏsØõ˜øÉ1Þd³ä;¹jˆ< sÅ9åÆ»JíÈŒcŽs{s+ÃPÎÑpC)Ô‰2¨íÊçΙcâl)½0. ïbb<–’¯oñT˜O\WúC÷õ¶L…Øç¢ô„ÌžM„99Ñ> ®Ã¬s÷õòƒÓÿ†þÓ¡v:ìg£½×S+ƒý›
-Â6e-j¤»©$?<bA•‘‚UGTzNÆHc#©Bc°‡ÈÐmŒˆ/ãím­¸þƒüœr¥É:êir¤zÓ7RçâˆÜê‰ô
-„¢ÉBô5¯ÝWAè-Ó¡ð„Ä6“Dk/Æ¡6îÝÔ³`šo‚hšÞpn|Ÿq+\Ô
-­Æ8c±uíò&%Š;™m^¿i-û¦XNKã̸h\ªùŠ]#![íôUIòžŒe¹²ùÅË_AÅ3TõÝ9ŒO‰ jw"*J,ìÀ|
-PV}iñòF£¸8 ooa.È“z¶VÂŒÞ@“âѵƈ¯7çàâávNKõ^¿²wI~bÁ+o#ñ/,šÖ“rUõŸ 7f~ùÑê_CevI|<\‚o«_¿6MFÑ»©| ‚€p‡fÕê÷õû ²C šFÀßB~´«WÊ1d1§¡¼¦Ú_j”Lgæã¤~8 Õ ÏIn︦Tà†ê§ÀÎ ›´â˜Cø¿«„,Vï ÿò˜ÿùÀ‡þ±2и"‹[3ó:*ÖEј ÿÒ#‚ä
-<Ã}BÁáÆ*Þgߥ߀‚#Ø´ì‚ù ¨ãéÛå¡—’D‘¯ƒdåñm±e¡áÈ
-< 1 ‡i¥µ°ý#NAšè*æi”é)RUEÚvq#’8¡ˆ´¢fmXLêigP~(
-^éqo/¶íB=¬¯u9RIi\pl?»!à0Ô‘Z`Ë!©gL©X@0þp4.ç¡dU3f¡I)n³ „Òv™Cy §Ï®½ÏHV_71aêExnÅi#86!CrU?åƒ?„¶÷Îa”‡¯ß@hÆA5±m=ŸPÿß\¸a©eiè{Ó-¡øûß ×ÍDlr½x=dBý4ôª¬¼ã@?Âýþ$'OýyÖ‹¹}ÂÛÕ:’7Я7 Ÿv­,L;™Ø+Qñú9æìy»@?Ãr¤Ø '{KþtñXÏR¾€~Ro=KþúhBm˜ÉÉ€ SÞ¡è°Ørosûiž ºmT)ƒ-m+„uU6¾8dò;, èÂߨ¡\w„V'“8§áF LåXýG9K‰÷@_“} ¢H0WsÄÁÆèZMáÜ)hqˆÈ]zÊž‘#ÒØýÀK L–}Â=ŠC…±¡OHÝ
-Hƈ1ãpLI6§ ¥ k ßd1iDje*DÒ¢zIFÙd(-ïsdBe]­¹ð58TÈ \&k&q³*þ„x(D‹* %õæ6^(ž*×ïPò"¸Ö Êg =o¸ ª7J@r…Ö2´Ïç
-%o1ã°EÆ"á,êÖY!¬éùÅ´Âés"®ºdô`#&î9®Ÿ…²±qÒÃÉï$ÕxÙõý ü–íæ ú®f<føºᶡf“g„çF”è×S¬& Í®ØÜÚTF…¸¿EÆ“ë29û98xušŸÒp<tbº É€g,EÓQÝw_ ÝÔQJ>{åHœÏ¶8› ‹é¡êµtèSÃÒÒ¸‚uÞHVI±Ó¸-»#€ÎrÐÙþíuo÷ñΓ?BaYmËzsNËÆ,Éê‡ Ð˜uoÎÆ•«fÇòY~ÈoÈ,ÈJz¨nt$”·
-òÉV@U»îËp£ð´&¯Ûg7† zŒ:N÷?ÆË$Ç †¢'Èr‚@#%­«—}‹
-d“ûTžs¯Cü‘@ub1«k6..a˜dì¢e+Û†L&š§¶Z³Ó–² ,—êŽSÂÓv¸ýlm¯C”å¹xÏ°³ö£ãRÉ´MÒ!y¢ðy®‘-žKΟU¾œ!sËxÛrOƒ€!¨<@Ôš#3f•ðyò¨
-»œEâ‡v¬zŽ£.%ò"® HI¦œÌ@‡.BûLt{æFI´.‚%×uÐ`ÉÞ0½úPì:ÐÁS—p›ã®ù^v–Š{Qäœê¬C[ðEÆüÃ:jÏ–é[Γ›¯Î:d¢…­„&×å¼a¤ýZ­óœÎuIŠœt¨'[Íiüqh4â`ŘL§z˜8@’‹æüttô¼ñAÉ#%.‘þÁÒN:G’¡)g"PÍ(m'zÝXÇöØ!h4q‡u2´/êm¯Ñi´µvN©ª
-?ÐYhL-g«7=T¤95¸ žÂè ñFo |/DÂi빿£ê¤”ˆéªrQÇW"%Šâ%8kâƒÇFï iT*WƇežLøò¤ˆ_®ôúuõÍÜŠ¾ÓoÐ’ŸG&©(‹Ú9ƒ¿rÛyªÞílßã„¥±ìÔîÄÁ™9G¸ÀŠ0
- &¾•Â–fÅò1‘–å„É™DË‹
-é)ùª ô¢c(¿ØÑ‘‚lêmD0„°lq}a
-—B´F ë…–+Y„.ðÖ¸îXŽCD,¡Sæ©¢Íi.›[¸
-ä /º‡‡wÚF<Õ$n+øHN
-Ç5>@Þí;ˆ€ˆ‘C
-œ÷ÑÆ÷u }¶7¼q
-Œ£®_j9Ï/äÓ,ò®hdG§ m®ÍM¼Œ®ÞX/ÐfÞ3IŽ<ü½.³¥¹Iwéáy–醈¤ [šñX4:âRÎqWà–ø¯õ!
-ÒcZ¦ŒÝø
-Xù‡ÆIt™ì1/ήª™!}XL/QÏ:O _ÓôÁœ›ËºBÛ–ïÍ<˜ÄîÅóã‘©­Æ÷Œ÷aàpºÔÏowBYðӾåºNEƒ¤?\[ö"ñKÝø Eüºn…ú¢&`ÁsóNTòÂo ¿Ÿ‡>¶Ž—Ž¶BTò3³lë@‡âÂŽqæµ¥U ÿ¹ù
-Lþ;ê›Ø è^÷ŠÄ…3Ô‘îŒÆEñT  i[ŸEÆ9Â
-H‹¡IÔÆwBÐ) ‡›ö“´B—µ;Ñ’\½,M"„0,´–¯Mâ‘x¢r´nŸÖ¦ZÌ!‰IXk¥ãᲸŽG©b+L/U´í`þ4qŽ@ÂML¦ë ¸Àþ»’‘ã±Óh;Œ<å`}9ª f. s¨Øܺ•é—‚KxmËýØä·x
-ã4—\å Qƒçñ#O -Õ¡"ɉá°EÔܼV¯S¥&j˜6Ä(?ÿfôþeBS¶r‘Øjë'Ê2(ÄÆ{…༃˜‰E/d%¹M
-S¹°ŠMzPTÚSÁœNÉ ¡ jœ¶ûtõMÎ0<2ínX V4Dâ
-Šª´C
-¹4_GŽ žë,^—O…C~ÞCòNUW,ßf“-í­ÅNÕ@î)Sâ ‰rCÆlÎtY®“šÂÇáâØw5*÷™‚UŽU&+ˆŸÚJ^h›|Žƒ0Ñ>­ÇÁ]¹†x‰SV ¸Ó$O™š«˜8èfèEù 8x5*`øBÈÒ(ý­?þ
-Äv
-?Ü®ä~yO«QÐZ‚N”ÿÎL¡2£Z0&ó—ǘ½œeŠ|—`)(*·$®Æ
-c²ÚU# ™›<&Ýsä„z{F[ ÅPmÃ"»jÐB}uÀu`j˜|<˜´X O|8^¤¹rôEÁ¦Ð¸œ pb ‚ºY³›Û» Þ“iüºNgC
-D²εýèW_4jùWÕ³¯ï@çVˆòÕåö`r;h`ÙÊ+‘¬8„uoÉ2ÊôCŒi»}xXŒ&ŽÀW‘.þFæXʉ¬…5Á…Äwq_Ÿ`2û¾Ü ö×Ò(JâÌ¥e@)g¼Ær›&«Òž•L¥.‰?Ó¹®ºáä3ÅΣï_ƒ~±ÚÍ´`ÏãW½³ÿAÙÉB‚Ü|œÃ:Á Û‹S?ã2 µí­‰bÂ(Óbƒª%‰¶É¯^!’ EL´_Îÿ€46®:o±óSLFÎÝy«äŒâIR<eQ’´¼IdßNÙ" Ÿ½}›`´euj¼xdò‹Ú5ZÏ®V€¥ê®‹á1u–Œð‘M²EÒ£Ñ3› RD¶~ÈÀ¾­Å‹þ¹îœxoÏžàÿyüø¢}ÅF±Ò\÷¤‰ø3 ‹§æ‰9šGgÅQ¡»<,Cǹ3®%&ØIvÇJ
-Ädf¯ ˆ¸¬ ËwÊf!Îñœê!ӜݗŠäym’§˜r):qÝÂã
-EiÀ++Ô”*_W!”»+óªí¶±áê%
-à¶Ù¶¶`R±âпéÞ)åÂX(˜@ú¤„Æ™4E¦?Ÿ¾>ÒËçïO¿t@fŽÞZXý¢9¥±/ ÔË//"âá•JoC}èc;è$VG¤©"Hs°+Ün‚“d³1¼‰«€ñAPa¸ŒFBœ|ú”hí˜!ÈFÇ¡äÛCE(c²´ëñ°×mêÜþâ‚”‚ªf‹—ðéúHcé‹}žÁÙ(&½: tz³
-stˆÒ´{2N³`ì¨L© Üzˆ<4AtóÞ2ïß Ø\¸¿.¿œNAÎpôúâí;¤§4Üœ••âTBD*J<ÕIŸ„ýèšD7!¤Ux£¯Ñ .Ù  öfçà•ˆoòj¶õ”à-7KFš(ÝJŠ¨r›¹Ç){HŠXbÌ¿áâVt9ÖPª‰ÐÍöG‹Þ/àÏlé{_¾<ê^¯k2Ÿ,Ã5äxÉ'ÊÌý²"A É{·CÌýÊîˆ.yn=áC%,:ï–ͯ5úÝÚ’˜°0ŠŠ(&× •=ˆ
-€ô†ÊTTºY·‡rÅlp4׌
-1ä2‚É/bT¸îª“íó÷«Αï%0&†ž,<îEj,‰˜‘t›ü©è†EèË»äÓ/ša9YІSUI…ôvHôs æ
-H‰¬—_Žg7…WÀî R"ÁËUvÙð”LV
-§€LƒÜé
-¹»pErâ| EÃ¥lcèyã:΢1{-Òhº(ƒ)>©Ë¬} ×8ŒŒýÙjÐtmß›‘“ÁS‡Â@ç—aðÁN”–÷l•lýÝæÝØB`B¹ëfËãïôÆüù…Ñ5 É‘Ìnæãê$͇*±ÁšähŒæZÁûS·u ÏֶŅƫ‘ZÝŒ­¼i5Ão®ìo ÿÕ¿4ŽyO§o9"ˆÕÙŠÌxÚUCÚ «>°Ì}M¯ïžž²P]}M&¸
-rÑZw1í½Mh*ú
-Úd £Úè‡{B* ÷&ÙR4ª9x# ¼:Ý 3¤Í~14 šZ| q–عµñ¤NFŒ*ˆŒÖ2Î*°¾VéØât´ ‰~sð—;mž¾¡"ôÓ0é§A¿;HC,¨Ö–¡¿d;!GåiÔ'Æíê„lƒŠ‹#—Ú‡"ª¦ÿ£¯>üŠ- C’rµ
-ãë‚u{?ÃÊc’ky”ÌÄcҦǣÍV;ÍöH¢F{IüÄ!´5IÅäðC¤ ’h¤ÖëMÑ™µiH2$áØFA@#\x.æB¼ãQ¡k
-h–—Áþ¥*—Æå&¤)ŸÔóOWF€cšÀ¥Ô•²©§Ý¬vcãÔe¼õ8ÝÊ£„`€‰Êx'N Êǣǜ8Å@Ÿ¼5„^ȓɑγÁ/XðTm¹H*HQÊ£æmð?æ-ÍëHy16,IÝcÝ»^{‡!µùéÚ‰µê×ù”bGâÀÞB „²é9ô¶Ax÷ð<(Pp’ñ¥jÃÇì½ÏNh7½ÓTÝfkè #5á8ÈkUðU˧8†åKO%€–WI“äÖ².[ÄJ”ij^ †ëí쳃4)ê½-PÀÍd‡E]€Ì£êçÕ ¹„0@ ßj¦NC€b3žêÈÉ$>Q×zÏȉygÆÉóÖI¸/@¢û8‚à•å°E›8€YMŵ-Áìlùº<«ÓpA…¼–&,Æ’6,°òà÷.qyŒ¢˜Š!žRŒ´òà9²ä¡zœÈ§Þ*¼ü\ÏK)i()±)a
-^…'ÐCkßÉçwU=‹ÜIDB‡€Ú¤‡4ÂaÁ‚¬àZðLAÑͤœå´•ˆ ÀAârçïI›2U”fDqµfRÏ>ý|žU˜j€ªõ)@H\2šÂˆª°µ¬ç
-èŽCíNõ"èFkW+J'}µî¾Y¥Nã3×±>ÕõYˆ+"º²nQký~UÈÝ+´“#òôGÆ—„Œ1"0Á­×ý¤H°JY‚ ÔÈã±}Ô^ß.J©Xá°hAFÀ‘'/€vX—ˆH7âj)pèhµ
-YÕ'ª­Å~¯"æ6êO/á<j~ÊY¦d˜ÎÏ2´KRz;ï3(YLé©åè`} ­B0bKœÜVK@.J©LÖÕÛ:Ù¿ï&™â'y Ôþ²M]àöªfTjm­—71®¦ß: ŸKÑ rw_͉,QtŒ¿$úó¹£H„
-;µ,j©hécŒ´tâõo¨A+¯é“¨#GòhÌ üñ5U·È-ï¯üe^0®ëª-
-àMŸ…Ê€WОvÛö½¨¦-ÞêíuƵšb6›2€¹HôKä*£…Üø†Ïˆ÷Ü•x6ƒ“¾E}?ÁˆØE›
-†iUDsmT)û,@]|N{ÕAí³ÌÈýt)©<ùyÀïÆ>˜Ù³OÕ»y ñ؈/Á¦5Aˆ0*D€æ2Ú-ø2òË
-ƒË(Nb¯ó7JY6,„xlù%Éiʘ)”ÁGÏê„ð£^?‚j:|PJªÚ©äwXÚa*|òª>d3Ò¹c¨Žé&Úüîßß‚
-¦“a"w…ˆ‰}‚؈:ÓŠ”Ë2é²OÄ®)"Ú9ˆ®™@cë9híµ"¨
-]DÉÐDqËu:Ô œ«äø¯Íª;µ1ÖF·e„ôfg_MÆ`³qk§ ZJÑöØKw³BµñÒî£TñO¨„oÈ¡„Xî´?‚üžô7jÓµË
-’ðEÎÕ‡L»úP-A_ï}°IÑŒf°*¤×gÄÓÙh@;›þyï£Ð"ª:ê¤QçHWÜ8ád¼1ŒÍIL×Î
-'ëâ-™.ÔN
-‚|‘Qæàd¢è[ù-Œí¡lbîÜ¿¦Éþ&U¨YG€3z¥döacJÿ¹ð¯Ÿóî@zœ¦ªíËçP
-ØCY82Ü$²1 Í@Üð¤–zãgP¸Qy
-æ¼yÐ/x¸gÕÔn ÕŽ¨ë@’4£^J0"ñɘ7¢½#wFŒ÷AÊÈAtýD჌W¼/vMCe„œfÄJq"@Q#h“u"ÐSFlü}PUÌR’Íi ³L% b(þr[,e‰ßQˆþNrK¿»Ímæ¦hŸyìPN¤y2v “s´m‚^’•¦° cdÇ
-^_#jX¢ Á2Zq
-D‚¶Éõ(ªnU÷ñ5Âñåž¾¯øv-Ó,®Ñé-“%b+&,TTÑrÁܱÀ žÿá—[qÕ"³L0d™Ï"ï‰àÉ
-
-¼í7y:#Ö ×€—Q‰êÎ+’—NxC
-cÜu_þœŒVÌjF×xiÄ®±œ_ÏÿäÎ@y¹Àã¹I cqŽöðú€zwõùc8µ ™iN?‘:À¹)Q~ìψ“¸«+>>gNCŽp}` HM:… Ól¥¿Qgß?‹øó^«k¯ <n¯JÎñïº R4E 5‚¦Ü¸Ïg±8Ÿl !uIÑœQcÔˆ‡ ä™N@åâà ]5Çœ.ç†3³Ÿtè"Þ¥ñb{}Cnæ`àRÑÇ"úÚ|Dl¾¸pQN±HÉÚ !á~¦ºÀ1˜×•§Ñ¥óhæ¼WÒDEÇf²¼¼„F,.Š‰E˜rÆW3ÇWTM<¯¦öü>»83K%çüŽõÏnçÉÉB·°X!Žøj¥
-¿Rö^Ú‹~ÉOË›•zH
-þ,ÔDÙ&ª² D{„LCÀ‘˜YBVLûúã÷}x.6û»?§n”ËMv“O‘SüOŽr°ûèò­ú,<Ã…ƒBý~r#x¢â«í Ø‘~­-FѾŠä¼¥ÿÈ5.ZôXÌ1«ÒHd9wþ_Á}Ô…Æv¡®5Ÿ]€…GÈãáTgŽ¯K!vðX Sb¡;U™æDçÇ’â6À¾ÛEÀ>ò‡,P†ÒB<
-ãGÁ±Z¾ü>ÏÎVýˆGJÍæaÆÌ
-Z‘No=3ª1Ô øœó> §†t õ|‚ñµdEmÈ™Â>.5ðÙä½8Î$tƤpÌQ”öœ‰Nfü…ø<h~5çLê
-Š5ÝÇAP©Ê(ž¹p?<kíP Î AQÖîX‘Š?+‡6È´»ã-Š`vM4Þõe%.&C +ÐÕÊj'@
-Ì0Ñ/à]2à£`D.X7x PF©EdšíTG•ë°P›‰ª\ô߀l û:ô†MXøä
-éÎÔ˜1EÖt˜ª‰úòTmÃr
-}Óºx¸|±-æK•²õÁ;„IÚÍ!{+<¼ýÍÎÒ#v¾R| ÜžÁ¿Ä¥\(›g©x
-ÀBè%5‡º 0j3ÀœDG2Œx4PCËÚØ)[;Që:hEŽqP@²x Õe7#B@.!r%ú†‘qjÙ»ž%£¨»‘^µs¦)/Žzˆ*FàOE¤jÁÔ¦Ù¦Od­:NÞ/(bA ÅÙPѤ`•ƒuÏv²-¯‚E¤r" †&0)MItô®q•h(Vìð&³ýÛAÀÐIi žN!"]ȃ4,®„<©UŒRÞE{2×h/éÃ"E°‹ zÌAÅ
-ðÎÔŽ´gpk͆üŠ\ÚšM5z bBÄŠŠ$ÑáóÍsÁ;é$P·¤B Eº}p:ò¹_‚<ŽŒGåu-£î /
-Ú×ÉlËH@iJñË7o³hŒnSÝ%AŽàL!t"̈́ДĖ!¶²…„|h3˜1¢ˆ;™Ó„
-ÛÅ+ ÒiÖBÞŒZjˆ-K B‰:±Ç¾pÓ’OgÉïk~¬+)^]§11ve!ˆ>¬•`Ãa/.)Ÿ€£XppeÑ#Ý=‚
-pg½Êë;¶€q™·6¶’p°ÎmŽ‡oø4­‹¾šÈ:¹ÑÍ“dña½5v’´hß'ÐÖáoÛJÜßp¼ßYì7z¹·kLU‘цTŒy $¾;ÏÈwÖ?8c±ÆÔu¯î¥»5%êæ}òÛ7{»½ÍÙÆ¿àKìe”óc,šÆb]Ìù©»Ô’omÓGá|¼sËiܾ!ƒ°láƒÎ6n-´ÏÄ¢AŒ>è
-`nô
-Û‡^Iê
-g
-C!gòpSj`G#½‡ù„¬Ìr‡G‰ÒÀ6LN€4£¸ü¢Ü^ÓÍ€š,Æxß
-ø Ê—Jîㆊ §HÂÑúŽœ"É)‘qª!ƒµÃ¼«BpX8Ü-¸#E Ld€;‹@¶X›7W¦j@ö²ºf^‡®MÁ.ÕkòÉ•ºªÏ@ ío7æNÌìk‘zAµ˜n¦w?…çPÍý?t—Ù•äHU) æÅ}è°Z¬+ÿ˜!Hfw²öu}tˆ ‡Ã=¯½£ô—mí£Jâ=HS®0[¥ ÇŒõöˆL…õ¼ìŸ·GtÊÊðÁƒÌÔúÛ>Óª> vîGwmëP‘d. ¯„üŒ½Xö³ó©Ê@–·å5 £Ê“íÅû®t‘/Þ6¤»ÉQin7iz,1ŸÑC‡–ú‹ÇJ²h=7¤³úÛËt¥“ǼÕ-ì Èí·‡ ÖS »ÄA:º)ƒ
-™ê©$àRj©Ä@,™uA“šó6Ä5™þ¡?嶰ÀÏ*HM"MP_ŸßÔMË·´¼¿Ñ¨¡gv1±£*Ta¨=]£­s81;Ãë¡tèn<òg<kŒà0¼–X`›§+1²H/6¼Z£ý¨1Q
-µ*·Ç]îwg‹ïMhæ{£ç4€1ëÙ­"¢42vV“Õ€x™6qCMç˜lúzeÏs¹˜†g;ª­X2µ‰åÑdYi²À[Ä‹4“Zóç4@? €Çc8I
-×.ßFå¨Gj†Â¢¾Á4qäL#nÛ€So Ä–ÇpÞ(E‰r§aÓǘá
-96®ŽKnvTpzÐC:pÆìîи]½¡ú`…š.é1’,ÞSv´êbÂïç%§^ˆÔqÝ%Çòq¢ß“¬NàX!Š»"@YIfØ”åÚ5VU3•!#©´â –•y
-ä“ßÓÛÓ+™¹TìæóØ-9IKºß(ÎæCáú´|‡D¢GFde'ÊvdÞ¨°°ÅûóŒ|Þ¿ãìi„"<>€«ØMÿù¹CËœ¨Ô@cäß‚ê62´C M†S‘vEø&S¼ƒW𠨫éIÔR<oŠx9,ÚÛãDÞÑÒÈ7~ Ô/û˜øADŸAÇZnXojoý4A>¦ëô9krü·
-'5 òć43öyHŸ¨:˜»¡¥iŸÛpâþ5–ŸU`ÜÖT§F3PbÞ/ÃÉg»òù´Ô·—xûÂR£à¼Ö¸®ÕM0ÝÑà5¹¥mNå#¡<¿ŽP"¼¹‹:½va4÷J}
-
-$·pË• ÷( >Šƒ‰²ƒä®Bøè¤3^Cu@]tBšî'½¼`E0yxt_´p ¨Œý€è½LÊŽ3Õ}CŠy‰aþöøïER
-¹;¥µß^¨a¡ÎyB×eLÛç;tìDåþ‹-H?*¥óßµw]ý/²Ãœ
-d¨§HŒ"%e
-h8ÛHGñnÐÑ– ëM5Áó@ÃwnÃû@#÷ ln:õ$pø¢SþëìwM™áKƒEÝûª¯j£h®ß0H£"EJIútµ «‘Öz1ù?ßMwåTáuA2Ö~9™—&è7úAy‚ÐDRn•vtÃ/"¨µ2Ž.ÿÅ ŒtU cˆÝ%n(Cƒ\'DUç…;F§ù Òt!<,w™d\*0̳@MÍe×Z yoÃ&rôã ð‘³rz&ñŸüû»¿ñŸûúú{ÿþSüý½I¿ œëŽþþó©J4œU9Fò%m#•Ò­dïúx‚D4ƒè½ATl1hW=ˆËð×X¦ìŒ ¥Œ ý-Û(Ëšì6È/"(6#ªT‘ºPX¢7e;&±t%«–Ô²¨à6쉮¿Ý
-ÚZ³Êm´¡üž|y·äå÷@OäNFõƒC î“Ù³Z•–NÚ &<cƒ¢«ˆ¨kEµŽQÒ5¡ z-´$0iëD…%*Ô0¾Ûˆ;l'‘wø>lNO½—£ßÆñ=ò¹î­¯Íª°0
-¨ÜÉru'þ¼í$ŽE«¬Ü Õ>ŒzvÉB)ÑÊÌ:A@·NŽ+Ö(+ï&#8n{ÛéÉ꣕¼¹IÔ:xWÖQ¹ZWà=í
-}lÂÀndbùHš^wP»Rœ¨q²aõ&¢œtq¬ ³«‡½c¯Cº3ÙªC†Ì§âØ©;ƒ'­-vâyb'Àöä*ïøÔLÜ::tÔ"•Œ·IÑœÔÕw2îk<O$¢Q?&Bká¾¥m_z»/Wô¶˜2l*EŸ3"Ey‹–‹È$H‘ÙÅžìð-"ël%ø#µàðÏÖ¢‡É.Ë ÅxÔë߱̄›HAÁ–F‘Àbh’Y|néìFcõ\º‘IF’E’©œÜ&îIÑsÿ$¢Bl…=gyî8ËÌUÔÊŽsçѸ“€nÄÌåïÇk¢ñzÛgy½¨˜uÃ9lÙ7I~—Éxä¶GÃÈ\"Éh®[BCÜ«”šøw·iË=O=®¼MŽ¤†yƒü’ÉÅCnc/¦.
-ê%Ð õÂÍxûšÍs›MÙÍÆ Çº[ÐïXÛ|Mˆ-Τ‘;þh¦ðØ*”ÐŽpí*B²T¹ÛXO
-3Äu7¼9q¸ç>
-:žfY|t´FɦH€÷¨5Zˆ`x(îØ0,G_³éj~Qlþ™ºÜ%–Ÿm¯\ls`-šË/kGï*lÅÒðþ\­‡øÜ*¼1t3$†RÐ1ýj…ýù7,fTéRîË{˜Ògù‡×ù˜c?ƒ[¥Ã Âó ®b>%$‡ân~ïf
-o
-«Ä´›žc"…G,£E• -/Jƒ×ºe5’¦¸˜Å°P7g£¢Ôoï¹Ô~4ãR¥À#\•¦
-ålÄS±'#jÙñãø$lx¬ñ¶<î€ëjBJN„Іµ˜Lÿº=I8׸{.ŠÍMû¹¯âõF9TlvˆgUºíLûZ–O4K´ ã<áˆó0§ûòLÝ]ÖïÙ^§.4ÿs !÷DhÅîO L…àhÕ„µ.ÊRÔê$qD÷¥£lŸ´Ó­[Ô¿ð £Ö¡âÁ"JÆ¢ÈJ¥Þ- M!‰7æ
-üR‚`(}:`úýÞNïð‰·*ñM{Ùß-oÀh4Š7%é”WNV£2@-§Úvv`XJ)qî¦Qi®¶ãd¿F±¿¥&írÓH+ë&¥ïÏ’¯«qvÐëêMy7®'ÐœãFô;-—wòر›ŒðŒ_W—ÙÀ¸®$  {ÄùšRæ·³.¤—kXº];õä>[Ì™ZÖEÿ"%.~ãé8+å hhÈ•GíÙ)ƒw%oW¹µrlиØÛ§t«ÕÔ¹í>Ö‚oà·h"~Ó=~o2âo@*~Ïù6g-oeTŒÙf¬ë­ü gÄoLWÎÁŒ ²ÖVêL ¥¸O»³!7Z}%¿Hâ  ¥¿$<_…sW´ E³W_Õæg6o†×8k°v8‰)üRËC9i©VÛ\¡ñJ¡ÚSQ¦Ã H[/ÝÍÖv.½*LD[OÂNäÐéõ?t—Ç‘,GUi ¾%'ò¬îÙ °—모$AQDMA„CŸ_ ¤Ñ{àh%ÚôÉÐ4 d¡eVI3Pä§×?ªÁµâó(œS–j®Æ¨ Sá2Œ Bå3w´ƒªßš"€ñ…O%…ÿ8!ï¬-šºÈ5±Šeð‘&k9±ÔG°æ›Î°*MÚ³ø)—„1£=¦â“€™¥hån,·C££+?‡5”øö¶‘çþ=“ƒ”M~³•þ^~DÂÁgÏbXã›99%;ÊßxÁܸ¶KÉX2b^íP?¡dS·¨V{g2lá Q^‘­Ÿé_¹k”„.V0NX:Þ<‹q¦ Eè7!SyLm˨O›—t”KÔäÔ$¸/]ÕÊç jÄ´D¤ÿ%yÅ‘sd‚„Z-º!NU¦*%$šYÛ Do_1´¢8kisÄÇ µÒ§Ë3¶Ü0åGl–-Ø ÙðuáÒ®ö£v'IÉ­"ü´®ÊÔ)o~1v"?Mqœ=Ñ·ÓŸ´kT`æ ‡sQ²Á}ÄølLÍß+c:’Âß5–ìe~¿Á ÝXÞÞã`WHúm NèÐoÊ#%` -™vb@‰ªqØ z[3_ëøØ@Ç¥/:½ùÌ |ÍÐ
-:CØ}—é:ò' X %;`%‚a¨MÀ¸,ßèD̤hZùÝdüf¾ª¿ÃÅø[{ß ÕgU&ãÛ6F¬ÿÊß5ÞãBöïDPÒcÐ: NÚ
-j:qò!‹ÁÙ4mUÿ{4[ðOT`™1U­ØœÒ50 Î!óôì,Š~Dت0A‹a7\=ššIVë“màÿ°iJE¹®¨wèÎø_\F¼
-8#uUZŒ2Ò‚°ÏDÜê-H™€J+Døúüõ¼EcW©uu‘–`%æ^gK´è|'çTáÒÈCÛ‚È[5Åb^ÇyõJLÇSŠÍÝe&â¿¢N}Qý-Õ!@ßliÀÒuD„ q}Öƒéú·‘õ&
-Ö#ê0×F1Mo§{C¹NØ.Èt
-ZÚ(ÞeÐ*B¦Á¬F£P-0ï(SZaÇÍ€²ZtRÏmúw‚•ÁóxÊÛdP-M³4¸‚+@MWéÖßöFš€ ÞcxÏáå®â~óª¬Y •“©ÑBPù³bÑ,à-7-7¤e÷±>,„¶ñE"Ž­ü˶$)ý d5‡‡ Û Å¾˜ oËrnöÞË›‹ÌŒ³ÐçVˆÀḺ‘PžrtQ•”¿›:Þ^C
-èò[$æ5MÛÑšCP«|`Ó0Îwu$•È#‘RÛ‹ú˜ hª#,£ÿnr Xòƒ*Âêàãef–= óC묣yŸLfn´3lÿþÓ?tPSÿ
-ä_5<ùk¬sÐC¬Ì
-t͈NAï·@>p¦C/Ó¢E©€ùž ,h=ò7D£&’ˆÀÁq•§ÉÓkø³RLÚ1Ä4\}âvcrËâ5´é$oÃáã"AŠL͈¨nfƒI+)VŒÆjÿìä¹Ý)¨]=¶t B3µCâ/"‡ÊópÇ3
-Å&Ÿbûú÷¤Á¤wwWv ¨dⶭÞ–VFD y–UkÈ~ >C¶|ÁÍʃ^Z®©´ ×2
-qbTÛö,Ój¶¦5KWÓTy¤PqbY’¼ƒª<˜x&äµø{AÁ7 4D8VçÖ^\Î~WjB5J¸{’:‡ˆ
-–Z0ŽpÔDB{×þæé(¸zpÔ)
-E€±–ïxËdtü
-£åNuô„„j+2»”
-¤©#®ÞãÔè ãBgëÒþh»á ¤0¨ $¡Q ˆN§(¨(6¸ÒÛñÛ«5²ü¢nZGW\‹å !åVDO1÷ÐÜB‡Ç.ƒr,¯˜³óP"±C€ þ©î¾ë{
-I„"¸hW¹°F´L¡\Û
-<´ Y7WC˜ r‡œàd$>ŒJ#¡ œHÛË¡Æ6
-ÕšoÚí]Ç[m7VŠZ·#
-"ñÆõOȸ•#ð‡s OÕ';èÏgÛE9 Ty‹@Ro‹á±X*‰íù¼*Yx‰
-DgÒi£ª¡¤ï
-ªËíUl!ïrÖjrÉyVm<u 4DeV”eiþ£”#Ø›BøI¡É=ÍÉ”Ë@H«X…{7
-“Ñœ·³x ú±m»ÁøÅN¤åûN]÷Ò
-^‰ƒæ½Ž#AÊeìŒR5_¬{§aUºo”K&&€<ĉü-'¨r¦¶èL‹ºt ¬³f‡¾àƒ¥¦ÉêQpØŽ
-Ã8$j'JGÛÑŸÙõåkË‘¥rtµã)ZÚë–3ÃJž…±F;ÒBiÔp2àXU–䳿wzÈÒ&E§Q<4 ÖEkÀY8æ) Bœ‡320³^„7Öc`opî[Õ•ó|̲å²°iGÖˆ#„ Š@Ý&E¨‹ô H6¾äv+ogIˆ)ÌNK¦¶æÝ!§æ@…åšgªVf±@m5”5$"+$`£†Þ‘dõI¢–;+¬ YÜàØË„Q"C0cCT–z#!jÙÐÍŒ?  9¬`*hÜ7z"kLG™,ÎY©-nN|¡èù3Æn¯¤}%ÀŽe’øÃÚ©½A»Ú”žbÎwA¸ ÂÕ tUüA4®…òÒ'Ö´ôt÷»2ä9D‚5‚Ô®ÞÎBÃÑå|JçÑUúÞ€cjFÛž˜#úc ½-" ÈÆ hHc$<Í5s²]^Ÿ]µÃõj‡eÁvºÞC
-hür;= ˆ™YÄÁ½îÂX¶Mñ =h‘åòÎåºwPeT¿»­²—IÖߌÓWª<„´(½Ul”—xaçyß©;>—ãà„n4ÐöΛ1²Á¤ñFòl³…„"£ªfÀáײ õ´ ßD'”¤¹b,ðB|U>T*
- TkÏ»ûÿZ½OWÁEª¡8@X Sˆ(¼¸²3ê‚a9#dꑺW¦žùÉÆáhSIzDG·¨¶%ÕAœ™ pe0ƒºÅ° J—ðc9<¸£D —ýÆÌ×Õ¬yD}l$WËâwzÙYίJŸÃç>oµì‹bÀŠ8˜Ãör”òdíã“'
->±,tãr=÷ò|Óœ{²UÎj¥Ÿ3t›ÚIªVÑŸYÿPÈ¢¾®lm劷8–Šàtu
-2
-CÚdo ÿ%u¡H\ó øTlVa$Š½Ùl)d3_H9cD-¼\_°Ýap@{X0‰¢d¿•¿¡sÆ"fÕ€ª9
-U—öý•ô¬ô62ƒu#sÉüÿ
-¦pÏa¯²u€WIwá0WT/ò“X]z:ãpõ(¶Bš,#ªÃG¥ŠV)Uj@.hR>¶¶“½(úf}熰
-<`Çn„FRWåˆUóÈaúÊ‹
-Tñ51+8ªY¾#þ=éÖö™!Ò¸Š)eJi1v–‹4EˆkË4Óør]UüEŸ¬y>ÙÖƒÊTîAþ:¹UjйF<f H»œã ð÷‹d8âôHC:¬¼& :ð%òBõŽÛ#Vò1‡‚R*r½#kÄfƽ>¨7¢eõy°-y)€™u TbÓ ú–Õ'¦æR“tåØ3òàð|ªFT-:Ê,¸’øDµ…ãÅRIlLJHS¿‰Å–®œÒaÁ¢Òaž[
-uu¡­0!P/1;—-À(ç$õÎtNI@Ò¨º[PزŒ°×ÙK# Öé怾~Ö…2«f¡FÕ õë·ÓûÁKŸÑ®Óº2N
-¤ÃdkpÎF`:~'ùj îö{!S²–Ƶt®^>ˆëóÂk9¯šMΘChq
-‚º»Í¨¨©:EªÅbÐzâR<ÀÖî½Ê{VN”.µ€NAb4;ÇäGÛù¶ŒRþ]‰eëLpZåyîU1ãetÇ®´Ü12¤
-k…1HgSAœœâ¶'g ¸dUD4}cóbFá’ÖÄ .¹f)C@“Ϭås’#dËnn'ÍB‰(¯R´(ÍC'©Ú#öÑ؆u!UAâØuH‘]ߢ9tmØIíA²ÃØ•¼¡èEËÆr;…^vç‘}ññ­OO«ñÉ“rº
-ì³’r ÆG¯30£¡ äecªïÚ¹þÌÂÂrÊØD¤¹[V?Ïù†%#áÅÞŒB½²<zãTkì°]$R6Übk"X¶Öð¯ú>Êp­•?Š¡Â
- Qb7E{¡7HWBbÒa,¶åMOÔ¦dÙb½a«fè3f»p5a ìÿX/·9*Šþ•~t"×½êƒ';A(”("<Y–í â‰Ì)ÿžµN}=ô@^H2»kw]Îeï}º\€Y[jŒJ¤õš‰Ô_F9<š“Ñ8tþÜ~'
-÷² (&Õ%åÐ
-ÎŽbÛ’î¨X[L„J]\ç[~ž¿øøðùû7ïï?¼þøãå7|ôì×Ø7–O.Ï¿zøøþÃ_/Ï^¾|ñæÍß}yÿðZì'—_ü-?ü÷é×üúúÿ´Y¢H‘Åÿ~óãþäòÍ[þ0.Ï>¹|óçÿ~X¾<yÿ÷˳_üéõÃû^}ñWxýþëÏî¿ÿñÕý·¯~÷öýÃï?Þÿðý>ôéo|ùîûw¯Þ½}Åÿq¹ãñéòâÿûá§?~ºÿüyüþ£¿©3øYûQ‹µüïkÒûЮcœÓKÑNT•ÄÆå»Uq K?Þ5?G‰€¤†r|)Y"šžUDw8ÑÊÞƒrÝÅœÔø¬iiÎðý
-;”£:àá0ÔfJN„æè.Øfä¢f¼Tqâ[Žxæ&f.jz‹\ƒ¶ È"Š©€ò¶sE2’:Eð=Œˆ¬.ÀäãÝ{ôˆrœûs DÒ5f¶kIƒo¯à¸|¿ { DŽæ:o€›M'¢µØC°O‚à f‚~4m!$Œ¡a®–ðVŠ9¬•Ä^B(‰79㘔“’ƒè1¸ƒ˜ø|®©hp¢g÷ÃwwÆ”´*…N×ïàŒ¶Uª&ÞpOùãp”˜ˆ Ë’d‚)È«lUa¶É?GÒøÃû°ÔŠ.ÈSKxDA²?v-R7уV¨
-š¢´ˆUœ!çÐKÆ>ZM9ûw
-‚>êãAP¡å(ç$
-4\L4&‚6"Õ"¢®Ò¢yb‘¾I.ö¹¯‰‚Áñ°²f
- ëRñ^¬ÇEÎ<1'òl3ò˜F¶1Â"†RJW%Šq9²ŒvÖZŸŠHÑA­ý¥Uek
-ªoÄ8ÌmÁ¢´ˆÃ³AÐG æXQg¼f'(>Q©Gó‘_ˆY|êITRîž„ÀŒÝ4ì›A#‚lm¢m¡ÑR»úA/bÌ} p ZšÑ.dG+-ÒEjØÚ¹Å,è­9—’^ŽI¸ª”8›¯wÇ´M‘` ÃNÙ*;vGËÆ¢œÍ\Š¿JÝ{B9oõ¦=z0øÈæ… ¶gЫ×ÙïðsQ;X¶‹‘f #VÛþ5
-‚Hîo‡ZáÆp0±Î}»ë[è!a˜Øu¼Äã)Ti`ˆ§O£stÏ€š¦SÉSdÞ+LlnA„UyùÔƒPÕtŸ„‡ÁEDé:‚À½CÆV²;›À2'ëQæêùåûà³³m°¡B\“tò,¡èÐ:âµ;Îw‰â÷ Ô¢3@IפÛ}¬q=v­%4DÑ¡/´DP c
-€Fܤ$Šý¦¨A8E6u(p"øB®'¢@NŒ@ÔÐ2Á©î=ÈýŒ“¤ä8iHËP—sÌ€›Ýoiw)žÎÅaâ¡- ³[4† Zߧa¸û-"ÀdÐ;š¢©Üî#áv ’Ò f*È®3„ᢠJÌ<G³8.èæø ÊñÕ§Eߌ@™B@´Z
-…ëv3ëEBª¢áû»ãЗê¨0.èi€ËœÇLhÌëñ? T¥£E-ù„S ­ÅyÐáÜ©Ó}°HŸXöASé³kçÕè‘/©ã@qº”Š3ÍWåÁ½œpä,#Úd*鲈..BÚĬ2"xí¦¤“IpX¤‹îH¹—¾U¼\´ãˆ~‚¾¥k阡Rô§”K¡³˜g»Î»7(ÇÒÕõ›$bpÑlŽ’ù)#ÑÂ…I
-ç³ó$öR¬“^+ö9«€²ÕXË$Ŭ£êÞÖI…µô‡äùÐœ”<Î$AD­oy%úw2ÛrÔ¬N*B‘ztf&6*rŒY̱Ë4±Ï–#èär9Æ«åPÊ}ö«uȼš‰`í“@¡áÈn.B3¶†7?ƒš®9IÉ̉¬XUi°3³>
-õ=w'â>A)ÐF±°™á}9F­˜EoŠ¡SŒ~Ù9]GFxYì†ÀB¯°±ÏôðX¬à<‘'GNˆýŒA8(NDü±Qwa®Iܳ=V¦"@”2.ÝáSªD¨¹ˆdaþ‹í2±‘É¡ +mA#ïLÙ3>¬ýAªj0-a1ÀþÖ«¼H¾D¿í« ùIÐÙW¼(r‚èÔX¦8Œxå‰/Û±2°H8 <±KHCçÞh¥´FZ>¼ ¦ÂµíQÌ(¹Æïˆ?¡!ŽÃB i÷pu"*zï„›†ê@1Ú—÷¦©æv§Ñ¸,oÇÜ8",:Û©ÕJú¸•Ñƒ¨W ëU Uo€B#"¹@ûx˜b“‡¥‹\À@Ó\#¶AÚ˜?ÎÓ@ t©U¨)Wtæ;–ž…aûM¼¢æÆøƒ¢éW NpÍØ1ðhù÷+EW®Œ4? ‰ D¬ºcR€(0 ]JKé¶p‚„Ë` b5¥læþXÞ“÷(<ÞRhË
-7ü¶ØÑã.¤¢–œ®HL×åøú’´°õð½vø–¶Bç ±ý†èº’ý-Ä?Ns퉸E¹q¤3Çá·ø«“‚âpøAìgš
-=R‘zÿ"b›ÈUd8Þrmîs¢·æ}$¾«Ã¡“–áƒ÷¡Û¸6è OÎI„ÌÌíÏ)sˆÌò¤¬C=]–ê­ú™>kDÉ"bð–Ž–žBJG¯¢[.V³ó@ÄUº D×’½¸íe*Z²ær*­3¡<cEŸ„ζ_ÝH€Øc}ÈVÿv×Q¸ˆ+l6³ðÿÌŽ29
->F„0X;B¾ýÇwoqš=üË@ìƒG ‰$8§ò¶
-'
-“D-`˜îÞžã MñîE;¦ÎÝûüE!(cÇ<•èr¥O%»Ñ&žšujÐâƛٖ¨¼ >í&qØn#Dç¹îj‘Ô¨
-R–ªÇu˜Kš uÔu¨”'ŒòT_3î®›…8óÔþv.(…)׉ùf­õÑ+ â0Àš,4U \¸E`Múw§njEèX‰²ïpÚ»ëp0ºVq'u.Ì ^¢åNaVA0­y§tRœ+zïÄ,Ùr‘5KKJaô¤b‡³„<;Ó1ÎÄ(7£“D³ï|¤œ÷öøžÛb퀜Dx,¢g£ZÔÙN Ï7ûEO3ß8„ªS¥ŒçÃ=AœÁ‹¤É ±Š œÄ›Î„ \qIø‚AÇ6¶ö÷s,ÍVÈ%¹G,ASáV¦lBºXq¾"BË“ñÞاbEPíý©ÈÕµºAÈìZyØkŠ`d±?‚n•Ça:šÙ¢öÍg¨&­'à3¢µ¼|ÇßÑ¡ˆâÈÌ—?›²PðHYü—ñ*:JG
-ÍmiM³B&V
-"bO½ –6’k`íDÌõU— ÙºbœS .N·¨rŸ«P¾—Sã3·eÜÄ r±
-3ßãœ[[‘l-G`½@ЬCDƒœî¢ø\ÊMĶñ›Žè®Ö|F¡‰qQ~,‡ë k‡òã­$E³ÙÒ'A‘y ^µ™|^Ô¯v¬ ¹\ãŸ;ƒýAѧ
-âĪ̕¬öÆ“i` ×Žy3ìÀ¾w‘$¿¾ ÌèFÓ°ÿþ
-ï(0sÄ©¸ùðTÌ%oØ¡êÈ?SîqwºÝZp $l$ìK#é- |ק÷(Nµ÷¬Šö„È®åKoÌ$F‡S{ª‘ä¹úyžˆàÄCœh¦Ðm‘Û…ùu”HUhÉîA´A3íß/ò÷u#çq*BÛX†4i|ÃN×%=39#ìOÛb¹‘,l$—¦kusZˆ†Þä1ù?ñv8¹_Ò Y¡Ð\ÇbÈêKb™M˜à­Ï©R0G…Ö¸g¬ÚløÛ‘'8’0ÆX˜­-C–®,ÒÀÚóLÛ;m:¾wûƒÄ`ˆãúûûáþˆ Î×júùþªcnh©W(p$ a𥷘¹_;‘ Æ
-’n—“OÆ*—wÿ|\ZÍŽqXùó=‚NOÄHþþFŒDø,(5
-½0Û"²ç>¨*sv¸(Ž&íYñzøàcbž…lÃåÐCLp)ü³oø°ØÕÐqÌ kqYÖûaÓ´–õ)LB‹¹=&Y >N‘¹5ˆô}–6wŽ_}‹®P¾ Ž Œþ<ì¾}àóPþV°c;Ú'¤ö™Ýc"˜$ø‘{t€ ƒzÁH•ó·E÷»ÁåËevhQ+×o\Au¦ßyñ“s]%þéÚ+‰D @\©K,V¬a35%ú6þ¢ˆMrrUyZQ´Z‹u ÿ"‚…{"0·"¦î@E…®¨¾Î3vò\ èªñÝiÒD¢PÎqŸ§ÆÏM-<žâÄ¿£Ù’Hãý½M C³—Ëá¼Ét6\Ž¢ãA¯†æ аh#…õ »’G¤·x?±+O t²JÊê¼Üìg÷™YèÞÉ.ÂðŠ‚Õ>¨Þub'¼,*‚†]ðDÆ,ÔÏÓÂð@ž•ò,åΑêsˆ;(›·‹æF”76Ú ¯ˆa¿yF…Ä3®žëC”ñS«û-AøÄ|Çt]õ·Év’[qôICÁ9w@¥oáú7>høÐ0~åÓMQ“sp™æ§f±!Næ‘£š/$›ù,«P”iÊ•Ûù×îý‰ˆù®YˆW~Ynåÿ
-H‰Œ—=r$;„O ;ô¶ƒ?
-GOíSi† ªJ¥9yü}ÒÙªOS­5ÒcOëEH¦ ÛYD«N²Q6ÄÝUjµî]€Œò,s6™œè¨URFdБ˨£Y5'WÊm¼flD7¦Ãë&ŽÚœV¼Íý˜+dßdÆË„4¶á/ΙB’ÛRíxL§˜IÔW­Êì¤Å+åìÇk9À‚æbz¢Iíµ÷ÑDW”NÑÉ¡¬sø#º-ZDj¼ˆh+µtIùG‚i¨  X'/¤ <î³øxçÖ 1§­jr!”"µ‰QQ’iÒHiÙ—ÕfâÕ{µz@f7’áVç°c!OÚŠxyûï[}üÃ…Bzеøî
-úZ<.$Ï@È÷ô©#„zÁJ’=l#d¡|ñZ]ˆ.ƒfpgè†ÄóîLþ­zȳU³áJÞä8Ç{£’”„>[çT’Æ×(‡ï¬¼¡ÑÙ4À܈¦ê}@³ýR+CQ©÷*‡>‰†¦¨ƒön èãH””ÙZ5/.ëÇuE
- çcŤ–bT̬É‹O¬õÅ!}
-íæÅt¨õ#=5´ÉbÕŸuU¤S¹\Îs‚–sNëëœJWw£ošöµú¡æA²è¡ÏBTJT©Q¤Mmœr¡ =ed­ ¦Ltç! 4"UF軆¶vtDÉÇURm(ùÜÓ¢“Iã9Q=]à¢Èg[ÇðˆæBª´Ý‹”§V¯ÊªF©\n<—4ŒÅ;QªÑ¥×)»ôèBFžŒHxaÂô“ÑÌÍVa3ävät ¢Iªí_ÔáûL¾“ú6“éA×x$Mg:Kï¥Of2T,†lE±ò™¬OSB*A»2³™¬¼Ž
-£e1=_ÌäA»wîòFžÎä±E²1OèŸt*‘˜IÖϧò“ Ü{Ž ºMå t™ÊH]‰†(t«z:•‘LH¶À‘%™ÙTŽîcÌurH’Ò©,TËâ?¯™-§4:_Ÿ´•nîdcY™–cBÿÞ©â‹s„Îdʵˆ<ËúDàà;m/Ò^Œeè…a!ÞÑj:–•qJù˾&÷e,ß)˜Œeˆµšá6F=cºŽå Î
-M×B–ù=;µš
-³±èêÇQ(€/=? Æ C®gó •B´9ù°
-÷à8©ô˜µ— F.EÚrjCèWÑx<`G·Ì Ö¥¹Ï¹¤žf܆& ¿¿©ïGÐÀ-hw–aŸ›€ÆíÏу (‰Ï‚exüŽú·ŒE™Üƒ
-ËzSvÙ¯@±áÀ±‡5¯¿(šNK¨² „©ñó
-§ùmí–í~@‚"Ô(Ìñ¹#\v?@1"¸yp\¶ú .è
-!z·lí£šøÞÌà&ÉÖ5 1°Bet'Yû
-2…J˜^×ó¹—µ/Ä”úk˜µ©ÙÚ7Òã˜úuÎ÷µ/!à}í v…B¦Çæq²öÅI nÎ þŸÚõm틸4vU¬˜çú÷£Ž¾Md¶¬AÈ“5=DX•Ân¢òùÔ*éëÄÌy,H¡UÂøú9H} Átdw!{Êd ·½¥).R<p¬ ÖE5ŠŽ_ÔÙŽ4A%^؈„pFØb;måÄÿLt±-¾”ŸébÜÞÁÄ…Žud"?„ OB[;eÝ@ÍÈ)®ñA(DŒ`ïêzÄ̼!Ï·èKÙ¿!\Lh sö÷-¹+8HSǶëzÞŠ4XˆåÙ8inȸì°eÄë£û%ì¸c3=ä´§çPa2 ‡·ÓÏÒàŽåàö¾KÉ0 LáUæѬ»4’Q;jIñhú“Y{D.³0kðã‘Ñ
-éÂ{Pï ±^AB—”±Œ¸ó¦ÿÏá/‡ÑЧPg±%ºûùÄ@eŠbù—¡oÏRZTºÞeS¬È\˜ÑíÜè"c) ¨ûå~cÆýr•†áã›Zvø©“5åø|Ïa­aý³Ø%¹êžD™ŠnbÙNµXÈ»
-!¢s_%Ž0iŠb©caø‰>…d'yH²éè‘a,HqÄÕ¿©µl¼©ég^*áuw¸ØJØÌ•¥ óäLò
-ö>)D®ø”åš¡Ö(R¨4[Ñí.©Ö(äƧº²#ûÞÊò´œrŒ1ôF|lòE¨[|
-f§Ë­J¿ÂðFΆ¬mç0–1’üáñËàëe]çÜJdÔ?õ\ôW\µW)Ðò‡ž5G»¤ kb%r[<6sEIfà “‰‰Æ—ˆft³düÜŒÝc¡ké)Óc&£^rý5ïÛþ
-˜ ô“úmÃ~X€F'Ú¼Ã*°Ì
- %¦À]JÂÕ­u³tºÃv§!yJxTuø €ƒ0/,S=™ÐªØÅR!Ô/ÀjãäFVyR z©P4ʶQ¨êÆý,&ò±ð½³×v)ú¼aQ—” Ú¾àȨ-÷q®CáVp1cÃñÞrϼ}]Òœ·xp¾€áŽ°yðžtf¥Ü}Rp*ëkZ·©£Ã€0$JræC…‰ã::vÚ~qL’ß´ÒÕ`llèrd±ì¸.˜w¤p®pFÁSuå¬
-´tOýê1eHr‡G«¹ÚÌFðOÙÌZiÆ×Êhâ Ë˪hÆoÎÙ/E/Š°¸ôùf3 ðkqE:t›pàE>zØÓË;0¦ØÒ’ãY¸âÿ…‡­D6>ÖžîüéÛ—Xl<4Ú F—èVO±vO,jÐÝüsäBG:è`Ì~)^HÌÑAÅÀm­ü/¯Ýd³Ï'D¬@'Ö…ûÄçh"F/ø}q#ÏsEOj#–`æU/¤ >€…×>·ˆEBe6µaÜJ2¤‹W@DÛ0t<!³YÁ‘ÅÚÍ+z€¢®l`À¨Õoo
-uc²»WNÊeøÄ·˜)SÀ8•f´ækñˆh¼ôáó·µ|/¸Ë’_Ep®†üyîcÄ&È™¯×c
-õ!Æ)¦¥
-c :cˆÑH\½Æß»¥h¢¶¸jM:ü‘‚˜ËVíœ-¾¢ßåØl¯°€ÂiƒÈÄO-dÍoög‰¾„ü‚n6 A)/ŽÑ}içÓÝÀA ïK+ëÌËhŒ¤É_Šp°ÜXä54y} -Æ°1·£Ù”nL6’ˆË6ust!\
-3 ÉÉ„Ô7ÁõÂi:xÝ&ÙmlpŽ2'?ñï<"‚/ÃU|Õ[ŽˆG\ñ€*QΫ÷WC²85…±ãKÿÀðÇ1cÀO0!;ƦÎ8Fi©ÃHè׋"òEâ+3e±%fzãûvO ꃽߜùÂøÓ¢‹Ew”›#jÆÍËÚ¬uʵq[j,}Û> &CZaÈ7…dêà…à[ÅHì"´µÑ%M÷â>ƒýÅ#ºÛã2PÖÎ@MwyªÍ}×<Ø©p'«Nâ2§;h~ÜYšt̃à.»52>¬œbñµÄ?+‡‘Z:Ö|Y> bÈ
-¶ä’ÞT
-³sËA´äí-òcR´‚ f°BýàrC¯I˜æW¶ïª¼GÒ9hÕŒ" µ¼pÀÓì{–‹ÆÂ`ÖH‘2
-8I­ú§
-M-¯,ÌIÉz•&õѧ(b1¹Öí¼÷á–©D [‰[›é\9Â[à›(y-Ѫ2†Â¶ÐÇiŸºñ¨!*áæqӰɸg‰á†×ãEëØ—SIuÜ°-› ŠegÕ (¨Tp3€Êh² ‘&µÜ¨ ³u^
-Ï­)6Ί{˜¬º>ÌÞW§äŽž^Š~Ý\%¶‰€™·K¸aV'QöšF…2<7ƒ¡…LC¹PíBƒ Ь?Å*³pLÝ6™ ²ît§×£ÍðÞ2ÆV
-p]çœí6x"ÉÇ%nzš\†pÉõî”ìIô$ÒËÊùæn`6¼iÔs›Ì’dLmŒ›t?§ÈˆÛ)µ ±E"{87+åÖÒ,o– (¸#Tþ
-Ò£BÚ~:.ž95]Ò¼>ÂÉ ÅÒ#X”¤´SÛqûMnm@"9ÃÁ‹"¢°HðjäYX+ñD܇Wb|KðèJ¸g÷Ø6åPÄóÊ´êd/–¤+îRåyή|!ňx•«P‡Y#Ý`óœ,¤–ÖÄ:Ï=%Ššð¯É*dú@>\f£Õ‚pV/}}8EËA4’¬
-ô¾oŠÀfӞ会L Ê!µ¡ˆ-΄LþÑWE–V’—ÒÞ I È¥…b·qjþ–ØïŸèð
-t¾%F^6eëPÒ(2BaI®—Ã=jÇüËŽeý*è­è·„Ãû
->ÄÉsºY1) ñdžäúvÌ@ú ž(×3½4©
-ÅÜ¢èQ»Ÿ&¯EN"áÙx¯•üÓ"'M:EïiR¨´' è¬µ—&E|2ŠQËÐü4©_s¼à9zM“Î(Þ‚ þ%@ Ú›nš\t4©0ʉgï§
-°Ê•íå YÀŸÊ€ûU,E¡_TÎá%wœï‰ƒ¢ŒŸFï¸àôŠT‚ãÇ¢A«[W˜«Š\2 ‚éÇKIX£Ý¦@2rWHpYŸJrEÖA¤6;'òœÈ˜u¹ž´¤?lñ86+Þ˜ôj@vSÆ–ú¾ÄÖ)峬 °†éÕ€JZæ§sßåÒ0¦¼½îPry÷»”ì¿õoi³«™“Fþt¦p­Ë4=íc+ðµø1–g¸Ç0‚\FlãqNèŒK¾Ýð…Ù«<ÚHy³ôàm[!´ç|…·/9ô⊖wÓí îM÷¾><ü:âb˜.÷fÈí8s¾R 7l}YϪr×Ì/Y%sðM—¦.%¹°’'ŽôâÌ!ódOçG„,<éèë¨Ú’Ý?Úø’}œi^3EUF½¡[éØûË9Ç-nÇžË4ýw½Ôà‹Bãá`^áä#ÛQ¥Mt®™k’Q`o¤´ð•Ñ
-.ˆg¶%’>%ÖvïÚÁ*Î8÷v÷¹¡¬ÈJ@‹›ñÞj¾2^­øù¥ OF
-¡ó]ˆ0;úR’Ú$½^*˜t*?Ì)úDDo7v Ö=‹Í{±N#ÂE±¿ÐD5N»>p/¹Î53¯ˆ‘æÅ% \%œÝ¥f-tÇö«¨92¬juÔe÷˜/iìY1•’<Uí>ô»(8ä«ÏùêqP"þf_:4*2‘,eŠµÜó6ðëe.‹ã=꺀—æ\×øÒb¯äeT¿‚Á+,xÅÇ”Ó HBœóþÜE«"bž:QéCÏËí)ž„±–y.b¥’<dr3”CLì!åçÍÛn#a®«ãWdÆØÈ!ñU- ×^u€Z±†&ÐÄ?ÜcØfà5EÚv.7á<ï¼ 2dÏìI’ô_9Ä`LD`9°Âœn­!‹À’󈃆ÆñÏ2Ox‘ý¦!ߎ£vÃJ´ml"¢Ñ®Výëëyû÷Má ×(ö«0¸Y³ÑµŽ
-ó"þoÈÊ qjª™èªÒ½XåQå{:ÓRT†:Ƭ»éL›Å”aà<Ïe¸+‹Ë™{C™\SKçM5…Dðju[Ð(fP* Õ¬}‚rÓý\h+ä[ N1¥á«r›5õ¥W@Áʘ{ÎlÏúÔ?¡)#oü2QsŠv ™d
-°ß4¿?«(w ›çc•hEá‚Ø]›’ÆÃ3ªÝH­."‚¶2‰ú °”y»E3z,î1ñóšÛ1’“WI C2ÇD§(¡“i…a¾>œ"Ï"È€YN6ß¹¶K‘“œ"%¥£ëN*Á³q:Ìýd'RY€ðäy•pñ&/Þ{h~v¢Hþ¸ÉÀ”½ØxEW(k¸5Iûš'»¯¸Êuc¾Vü^kÿÁàéâ¹Ìû)‚hëÍ$ë*Š+q¥AJU¬7Ñ3>Ó .¯añLû— ~w:ÃRhoá¤w-²š8'Ù}¼Ä+AµXÇ]õ ýòðà <ì!ÐÖ\BÌ?-ªUA ’Að7¿\ô½Ö|ÿ¡ȤýªJëëÉr¸-ŒR‘í^@öŠ´©RRªF²yÁˆ…æ
-ùÒ'ü#¦£DVœ ²‚Å\„rn¡O¹¬¡ $¨íÛš„¨C‰¸ùu_éB^éP‰ebÝÓ¾M@‰QZÖ¦ÚJbI%ÊDí=¬Ñ'4‹ö©åQQ þ¦AQ Ö¬FÈ‘ðIœZ%± Ayf/!Kk–ó"ðŒ¸ÉÇîý49žxI-Ò9…`@ÙÓ8·Ôú³š¸¡Ì\\Ë[ë¸Ùùò¨s‚ÆÇc.£ü&ƒ@WI E{
-Ÿ@wÐÚ #æaÙ—Þö
-½S-ûþý=SîÊŸ‰’a ìA>¾îDÕÛ¶ø¹oØHfà`ya.XZ°|&ƒ§É‹ÈxµŸ¢N’+£GÅæ€M ù4E…rJàMYuzÑûAÝ…eZulÝJ
-
->®8|žþ-…!V\CWu"ÚRçKýò‚4¿$µ›ü
-#Ãì"#‚rMeùâ5šhQ0׳.Ë©Æü<Ær¥»rb-AÒd4Tܸ>Z¼ê~¯‘Ýmæùò!
-`ÇóÝÜÜ~‰ ±5+Jª„4à HÞ®4€"{‰×L'"h1Û’h³½ncДlAÛaHI†¾Fª„@1nÐ<ãý bià<‡3÷©¤+1"J(—©
-¹$>¹_S~F¤êóò]ÓèTÒ¨K¢I\lüQ®§oüÌÐCóQÅ ¦y®r^YÐÕÑèl1L‚WPDÄ šZžÔhŒÅ”K¢›hÒæ}Œ³Úfáƒã|Š3A"4‘¼Ë}|SŒ+jBá±Ý¢eJ×!™Uƒ¢Ï‡"\G–¯m<‹Ç‘eßÒày £ivÉ;$
-hs‹ƒé)òg¸X"­µ¨*Ê|B§——ßsáÑ‹DP{Ö”úØ* 7® a¾FfÑ8Ý*hÉÆ®½ƒ’6 ,Ó–«$x·sèÍ€™ z/A¢ä¨d+UaGªÒñ&ªÐDÈνû—~ á,¿ÿõ†ñí|Ѹcï°
-ĺöó¡h*!Ý©ÿÄ8¨Zòè
-*7†sa)º•@·Xmíð%j¿”èê
-¦q$ã”è¿´ ÅrD7.<~_:ýNd>>}ÎKvùðVŒÁ Ú9>Bפï×nÙ'lÆ8·1²›Œ±”œOUivœcÚÃ98vð?•*½¢áÏ;£H¤MÂb-cj=¸îÇ[X³Ho²I€X‹¹ é
-8èq…èÀÍnóÛEÁV¼~î[E·M+:[nJläQÓ«GÔÖw S‰>Øœ>C?J ä†àÂöÓ{¹f—>p‡Ô¬‚?wçí[°ßZÿ}µ«Ê|
-;¸rPôùPD”
-öÆkñPú
->ƒöokËÎ{²d–G³`~ø ]H};-‘Aa!!èæ`ÉáV3Oï,ù‚W)ô,% Ü̬šœ5D;‰¬D~‘g°!VîO„eé#R?[Ù±‚ ”­²žÎaeÁ4>Ûøp›JBƒx±òc<¼
-ÜͬOÖî€
-$;h‘…Š‚‰#ÔYN‹
-
-DAY¾¥¡W GõYÖ`d~ØOÿð¦U¯–½T‘Ì‚=€SÚ Ä‰àÝ€­Ùê1Œ’BA>~@’âSA2"6‚M?>w`?’v?L.µÎÿ6½°ìˆÛÏ,b¢2øÐhN‘J23‡Ø“‘]#û°8|•0‚œ´½8Œ¿cÙz)3 ÝkÔ ŠâÓEÎâ‹ÝÅòhöq‘XE!•Æ7 è×üˆŠ‡¡¤ç&„\uU®þ°5+ÛŒ“‘Þ©R-”h5ÁתGr”@]ü±¶?<Ä(†ª€ì±Åc”D”6€4^œ‹ÇÓpïY¡g‘g=­Ñ8Å"¸†ý¡¿ ç×Yaß¡"D‘œs/@œÔBsˆny‚Ì+ªiÃvI¡¿T=ÉÙKMú*JV£U²j¦|ˆYò¬‹èøQå;Ø« cÏks°\ÆHŶóáãúƾ­uSà"1á`ö§L’Ê&ö* aLÍ
-—‰qañ†WÄV(¤@yA££¤“=Ð=6ËŽû{X]LÍY(Š°³OÁŸq-¿x5É5“ uý±-út#P ,šæ90/hÅfVkžk1Ã`»¸Ÿp໊¤ÝIÁ=œƒëž8cÙ·¡7'Kö«³„“Ú¶º…
-Géõ©ÿÆò¯“o w«gì;X;áö7ýK&ñÏC’!Âà£È_*‘Çú¸ä½ C ¢Ïïû€A›ˆ¸:.ÝÊÀgçÔ¼`E‰µ*¯0øÑÙüwÇÁÌF—¢ã½=8
-!Ù3z¢¢˜DŸ:_w(â»äV0œÁ_Îéjá"ç€Ë÷T0‰Š0m\hÄè©)èÁÐxx†Ü±ŸI<¨tï/Ýi©sN“ôÌwõ¬ËDØÉͽéÅýéŽîÜ[èsƒs™ë0/Z_º‚B½ÐI£Û´’´,jÌü°=U¼ù÷'0~©NÂ&V
-ŠänÕW·è]un–·ÀasÚ<Õ¡„ýÀ†0øÞÍWŠx-
-uÿI î1żŒó¤kkô VŒ} {ƒ+$ÍJð¿¡XwN—Š…ˆë¸oÇÜAs»Ì|Î£î ¾öæ¾ ·þþu£þ‹ÇØL¤:šYuÖ|/^•(ðÓ>ÊÜŠ¼¬qûÜÿ/s,Éj Š® ÷Pvy4&§1qYA¼j“ýs_H*Èüñ©H^ëK1¼Á£ŒOïdœ%C= AhåúàDk+ÁåêÑÈO×ÞãέM¥ãÆu«+Èy_D¤Ñ
-â!ôÜnŠpQu/–…ªwÿk_Â Í ¡©,ëchj23c‰7¿tô™6h°ÿS2×] 2´±+ÄŒ0}N‚O˜L#žõ9>O‹pÆÔrŸ„àvVÝÉ«Òàu<-áVÀuççí]SÀŠuökòÀ±5sL~ædU·!`9¤ŸÐ
-´ÐYã±4dR’C=æ‚нB§úß}ut0,léÿçGSß~)ÅBG’"Åe‰á|Â#|e£æØ`tX——‡ÒYöHŠ=ý„!Bö™²
-Ùˆ<Z8·éâ•sAp“ĹÎu62jÜAd<~|ó@/ éýEþ qÑjACðÒ¨›±˜Ö²‹”“AêÀäá«r|ûÈÚK9¢ýô‚–óìB²Ù±¥Ë\gIô~:\a±”Õ;fšC0Qåðªü
-ùi C¼€Ë7çÄÇ …iá±Í½ =¯Ø„ÈìÕ˜n^%×ÌœU·:×ñºÔ؃<õêçWfYclìÑuÚA~ÀÏåäœ÷ëDÀ•mTpÒÕ±><˜ã#±¬c€dj1ˆjÍôDFÔc¡uu6µáJKjÕ%!OL8Ž|ã“ǵõ 1­´}J6bî9ùÌCœ æ™Å½ ¨¦ØREÓ›GýȦR’†[œ,w)¢G:_JìAžZõã›ziýû ¨¡VHdÔ,¾9WýŒ
-ÏÝïŒ,—cOÌ@9 kÑÇ*C»ÆÁTRnƒùá »q¤$ÆZ>´„'±“$àúðÄ*ñKý.§\š
-åÌ”už½<êÅC\›áx5•XØ¡g¦´ÜœEž¸7?uÌsfTˆmMÌÄÜ*{/‚?˜“BæíSLjbŸJi2 „W*ö,èçÍ›wJ1zÂnQ÷;„’& Ã¶¿ôÉn™i…Õ ‰>«²žzþZ Ä* ô³Küä›ß 4YAx óŽ3¯Oþ»ÕýBI*¸i
-R6eM²˜»»6/ežªÚ&ò sÉ®0[VC&±*îbcv¼«P8\ÆËVÌ$bc~Qž¹n,R•ÔKõzñªM‡ºN,ãb}'KÞ
-úTGõO‰hŒ,<³Ù÷MÐÙ‰_á¾Ã \lз?©Óªf1sö%?3’Bë©ÌspÂsùÓ÷}効€ß«!d¢8¨¤Y—c+”€Å®6×ðÂNÂø5ä¸ÉÏwT«¼,d4“Äcsu¢¸84yç—`®¥è^A‚ÀÆ“Ì„×m›ìs¨p©ÈͦŒ˜—°K9èûqTIzÎ\›šX:.ûÊImºÃQEèfîvLæH¤ŽçõÍÐP,KQôŒõ%ø¹È¼ÕÈ׳uWÜŸ‡†3²æðá~¨YÂ7ôä€Þ­<@Á\˜«; A;An£KŠ“)£qÎXDr‰f°-C¹#
-yø¬-)‚¤ Å]ùäm <v0§·yòùc7¬d·2
-›…t2„T¨xŽÄ¦‹'\!³Þ˜µ£‰vYÔî£r„ú°cg³,Óœf=84iGÛΧ±½•êØ—Ã>°\%o–µkÅ~ k(KıoLƒÔ¬Ël8)M(„,ª8÷§® Eê#yÑT;§6þ“ŒÑÚÚΩä
-ÉGû£Áêr?´lĽå#±žðìSÏêEÈrÓ¥,á¦j’ɵ<R ý=o"`ªX>Ì%[ݤL
-k¹È5=þ¸MjT‰Ãš® ĵC…Ìè->e^C)zÉv>pd(àÈ ‹r¡àÙñü´5®²å¸¥:èûžd”r*›Bh;[ÀírPa(U›bL¬ÍÙÒŽ±E˜•¸¸I:E=)Ò¬dµ¢iŒµó#§›sx¶¯˧ÛdNÜl\­ÐÕè£Ϋø®Æ ”¾¥])úîâÔ!P¤A‹Y_èj óxeˆË£vØcÞšÎ(c LZÓŠz¿uô©*g£]æ±ÂÉ‹7DCúäñ²AÙN3‰‡ã‡€:1YôpìÕ¢X–!¤Ý¬„«Ÿr¼¥l B49ª­jÝÀþò“‚Ìzºx”ÌC!ç ¥r’È@™GmXyq¬2Ž_iòi#SȵZ""AÅ<] ×S‡>{v ›o!qDÏÈ$‚2þ4¯íÛ°Öè·\ŸÉy"-ÈásHûá8ͤ ÄëS< åV9{!]x@fˆEÂí©›Â7ì9mX¼;ÿšÏXpQVœjð)ÍÎdžˆ³¥Y•Ý{¿±ˆ¯ÊVåÌ e/öþ¸8&IŽ3.ÈyjXœ­G$ØØ ʾŽƒù¯È¾E‰eR¿ÿ‰nÿö×·ï›_…IŠ6Z¬–Ç–fSš¨ÍNý(eVŸ äÍ ’3¬H%+3íøAJŒh9,‚oÈ?Œ—Ir¹D¯¢”aÖÚò½-ÝÛÏ’*ed·Yÿ/ʉbðÑÈ*þ0U5Ò Gàdz Y3°7¿&ˆQa ífª ù J†«¤É€q¶ŒïÑ°žAoBöe ©Ã»Ìz
-
-7Qœ¥tô’’žq¤™ïûb}•­©H"”èNEF{>ˆ¢‚ÖSóUá‰ç¼'N ±TzGL(´"²$vL
-8!Ø&õ=Ðoð\ ‹“ˆîS>wìOÝÎIr¾¢Èýæ kê„JÀ82þ!: SäYß™‹"ŒŸ6Fu¤¼”"hq-@QþçChÓä™é "©r³û‡î(Û‹ÝJ#Û)L"bEžQê{X4Ô“˜œÉýáøÔ–!£JmLQðkHqöò¢l@¬î"ù®Ä]23§9¦µ–/ðì|A’kÊ8æv€œùâúú
-²!sUÆæB"] OÜÐ
-ÃË©hûkl±õ4-Åʉ­UoC‰µgœ„¯jåˆÙåê '¼÷¨ˆ÷½C˜äÅòñœ
-ÃQš6ݵ` ¨‰bv 1‰²Ù³°}7ÈIÃ3Çn„š‰ùE¼òVIt´Q¦Å­Q@ýD¡ùñøÃõ`Qæ¥Ê|½Á ~N£U@‚© ) á ”¸ymÐj6ŒR}©êc­Œn½ÆXwy ÉÍó’D¥É†t?ßr¤è”‘‚ñ‚ì¦lÊ-JF=†„̨4á‡E¦|tÖqP¶§"·žÖí¬ß@5ćQÕžÔí¡{ AmAh§èDAÍ7Ç€»ÃAÕå6n˜»‘`H#a ÍSµøSxE®†àÛeÚ¿ìs}=&î0½ì㤓HOŒcÚÎï_º|ˆ;ó)ºS_.ó0ÓCãE/ر:ŽL—ØmæRc6Vî:0fzÀhò×,B?ck=”se<ˆ4¥:+L¦õr0”° ¸Z:øM²‘é› Ú¶"&Ÿ±Ô,NÜ‘JîÉ(Û±3SB5¡”H¼&:GÁ&TÅææÕ …öŒ2Eß@ÂÍù–ó‚JðH™µÇ°¤l)¦Î pë™ì·Ç”¡ÅþR%ªñ6È*·ìüdYð^fö
-ògL¿¬U²w©Z¡V˜ç*OhSlŸs:`„À¬Í&/J„BÆi°ø«:èm³¬—wxÀ¿C_D\­WG¶1$ )<@“—iç$Y¡ÉˆÕéuÆæR¯3„u‹PnW ÷§n ©aÍx-ù#»2#qå [ncñÍxm©vDšÌˆðº­@oìðg(f€˜íž| Á°à  äà³*ë
-³ÈbxžÃÔãù4RÏ9Es"
-õ;„
-L†[Ù¡Hâ¿·%»ÜΧ2íÇ DwœW¡¸¹0àÓ6wÃJ§ãTGZKð—óL;?ð#ÙÅÖ.1ŽQæGf×'ƒƒ ‡\‘ÅÚ˜_rnEÿóàý䊘—Ú@Îst[rËŒ™m†Bµ‹˜øu:Ž×…ù²ô^l9]‡ s;Œ0§09õzùPúÔÎX`êyA3†ZRÁê¶^Χڂ0¡t,yÞ’ÄܲåEþ.€œísŸ-±ËãÍ9PêdšÍ•„=2½²ÙÖ¤6å¢6Èó*)#‘•¼´ ÕŸ³Âå”/³ã¢fÆ7’- [É­VB‹G€£ŸŒÒ±²)ªò®˜«Õ#lN^ȳeOSãªÅÖ±Ôìb™aÀ¤ "déporª©V„ÊWÖ»cn\ †îHÐÅýg©Š|LmW>ûóks?ì<Y"Û4 o—!vk:O¢ Å æÄb¯qù¡Ôø'[ã#DKicÌŽØöó©oäJÊÆ7_p
- %… ÑkÞRò‘ÿ(u‰‰’éªXwq®<±X¨Qã{õtµI#w…üDw'm+ÒôtÄ~iVaXGä­C‹QCæ†j_E|‚HDHPÒv…¬ùKºôŸƒ"íwfÕ!Ô1ƒÝ¸K©Ô‚c³Ï" ÁhpLíýʵtg’X-Ûý"îàîÐô–fdùÔR8Œ?9µ7ÆLÑŒ³/†}s "çk >¸"×ÔLK²Ò¾ ævwôYÙNHBA±üý+
-’o˜"#HI,¼ëÙ.c{ÁcL“1Um·£¿x(¿©œnsƒJ7ü'dl}ŸÃb/µ ù P
-êKoùžXаO7ÈîÓ­ÝÁ1÷™ .sŸ½àQϾ×æ±ú~·M¿}çèB嶽ÀÞ-Kþy®#/-&Š0ÿ˜ m<?‘Å·7Yde͉³-ÉNS ÄÒÏ7 2»ÜvÅL©mJn­&„¯·ËLT.%ÎÌÂ%!Yl–lCpËè]jîÀà  ™ÍÝz‚aW’ök?EÓ‚fWIÎ~[)§µˆ9˜fA¦ÂA
-ñú1‰A†Rå# &û¾|ò?òßòrÛRª
-Åà¯WyRÁÅiJ(„+Å$Å
-ËíÂNÞ2>Æ v¹ˆžÖòf䎿)™Œâ¶…¶X#ï/4òQÀè˜{—y6óö¨ý©ûPÌ—ó†Ið]~Ž^e6ä'Ç;Ä{ùç'c¬‰O>ñ8lÏ•ÐyZºŸ÷ùDðÀ)2ê‡ 4:AÎÌÑåûø ¥à’ƒß÷¤ çp·c —É(ÂK‡MK@2äÞkÌËÍòù÷êF¬ÀCIÏ£õóZú¯n¶ø§x„RU‰Ý, æ9)áÁ+<‡9Ä@¥¤ f—·Fƒ€˜­Cè1Öš”2çåÑ‘,q³UÎÐWå¡ =25"3xQÞÎâ!?ÝÉìïúW€
-H‰Œ—Mrž7„Oà;èóA€?X{–¹Eªf¥Ü;O“|=É'ªÆq$ËR‹F£áÑË(ÞÚÇ¿j·—RKÉðÚì#f{Õ˜žs”aÝ7dôÒ­M`BÄ+{·9}–ÔW©‘=9dæüøó‡0}dí9:¿?6¨fŸÖ"øðuL1Ú5JHx/-š_
-”œhÞ’#s˜.M H¸!È+eR…mðM,ðÒ(&îÿOQ jÃɹAòRÈömì«ÞE-ˆc*#w~Õ5mYµwÈ.Æ(g€ï4¿£~À*%àçQcj|Éž¿B&&§p4£©â¾¤È0w/ Ï+ˆË°rpŠ!›„ ^ÇËfÑôì•ZäÖ8“¡f¶pÐISµ…Ì–ÏË1iJ¨så
-ºSO‰±Å¯)€Í1_®óZC‹_=u¨®
-­Ç|<œ-kß°$¾_ÕÄQ%« »Ç/º¾ÅÁ± . ­h¢Ôœ¸tú 2¥ÉŒ‰HyÉÊ—~yÃ|Þ0PUËIŸôÅJ`—â˜Tû©»Š^Š»Ž\¨G±i æ~ì3‚©ß(c/s·s°.M£Oce¿tȾÐ$A˜3fB´KjöM¥³rl·œûGÆŠ†I´uÎb1m„=WMÚŽF+h`ý’ÒD$§È~«Þ@o9ÞшÀAöêY 峓ÓñëÝ®&FøVzS«Þ`6ÊëŸüI(ý¬O²ŠËsý溺YÎ
-n¥$ÀœÖ»š¬|;’Çw†Ú îa$êá(Šà-Hu;:Ð%̃%aÕ©‘«žáç&í`(§nw½žL‚*+ó¬±6¤Õ¨~<Ý€£ä¥â€L=mk+«Wª£ØÒGyébß 0¬ ßµgœ›Þ@Œj#2.,ŸñqiÍ®±àÊQý·_nÞ1<qOòþ)ËÅ }ïÉÅÇEn¾:‹/²us(ðu–ÿÀt·ë9γ‡ö:ú%3c.$‹Ý„)oš²Ìû‘E‘eí ª#ÆQH(FH>/o“>$Yž{PÕÙ²¦éú“½”É¢ óÌf!™Ãå Wû,*ïæ­HºleÕC£8µŽˆ»<4J&ÝÚúñЂ¢¬«£nºB2ØUÜŸëMŒÉ :î7Ðç7 Íx†¶4vŽ34Ë
-ZîW†½!£)œ«ÞèUžI6™oãûrÒÊZÄ(¢oZ ëcg<)„WÈ]ù/åuŽÉ‘Dô¸d
-°ÌŒ5Å1RluŽ0Aqî?Ï#"ÛȪ,ë®@õ¯X<ÜÿY` žƒU*¤ÈܪӔ˜ÍãÅ:~ìÙÓÿÒ×ýÎþýöïú›–®‘$ÖPø4Å1]?s€÷ £‰uRݨãç€4Ù]Q§ãj! „'@зº'G£^M¦%C3²¬äúÂ&Øþº=iðÊ1,s£ )­?Û2ÿhôÐÑ,–g_ºG6¢~é;ízž¢°y­]´ó°Îþ ‰WÜél·§¡&Í¥®·xºÔþ“HLÔ•ÓþYˆðXuãÏ®K=øò‡Z;=h[ê;%‰Ö½?ŒVC k—óÅ¥»ç({Oe_[=§ó*›…J“ûkÂÎpÙ÷õ7Àlˆçç~Xã©cŽq×xO×¹ë߇²ÜMÁCq9M1w!o‰±c”ƒA±×õã)oð/ÛçŸG#íxStSÖÌæPMÔ*nˆÉd×"­ÒÃÃ<‚~ÜÄC‚ 2¥NºÙîôýΙ"VnŸÿúÏÇoÿýˆ‡ªãf s–ù£8ÁÔO¨ÜÿÿüHýø'Ræ Jîñ@A•)LŸ5Q·›ÞRâ.U[§žX& zÝ2âË[ ÚGKáw]_Ò
-WÓ›`ˆ¨ÄY¹õ¡cB2³M!CÄ[;yø$|Lª W]³‰[±kš‹=»ÊWM:gvû˜ë bZv"MˆŠ÷Ö¨° êJáe¸”‘ú5ö$þ–Go@ß/@áܤ)ZþÏh²Y÷–¿Æsö!M‚ÓÛWu¼çoÉ«‡  Lñæ§<–ÒZÆu•©Ê€8ØF¬¿ŠÃ72[gÆ<Œ(ƒ\"xÖusñƒ h¸ž¹UDº¤•Ò×VÎïWÎ?xs@LŽšó‡“Þ¬¬¹ýžq<¹nˆÓD­×V©ùžwØÕ:: x9J¶Ð/V+(áX§©î`ZîÅÄübò†¼RF<¨$Ô" Í!Õ#†Ð 率™þs"<Ÿ¸D]¹þÙd’™‡@y}_ªª9BK€Ðé_, f=&ØKûp6k ÿŸ¢«F
-ˆaàXY(!dB˜vV'”áˆtÔÓCeÊ=AØAŒlÆ:D‡´šÛõª‡æÕSò ó4„ÖÜ
-[T?|+ÄVMlÁW‘vê<ò.gùeó´5z5 Yb2Û®²Oˆ5Œ(Vi¹½€ %¤»ªýµÕÈ”öôè‰ç*§Ò¡ÅH˜‹˜hp÷œŒ›2APм ¹‡EÀÁ4c•o7UÊë¥ E.»Sì6_<EaqÚ¶¸`üœ{ÂÒy>^b± -7%G=Õ˜ÁµÙÛ™úiÖÏÑmáÐ<¹ª'¤v•MÅìe2®Öh›/Ä¡Pµ4e)!ka(ßñEív/8‚ÚmEŒ¶ž÷ö‹—ì}N_Ù2R:œ¸Ü@æV¨=߶ónà¦ðƒÊ.ÖÕiuè“í“Kõ3*g°êZ¥zÄÔxvŒ´èK7Š
-êã]WýŠ'Š¶­}Ò`smãÀµ¦‰ÀÍÈÖîQ®@0Åv)_”¢7±€¢çÚ)•J/5z Êía„©}¾hÛèáŽu@vc—Zû±ˆ2Ýëó9R@Ú¤Ðó¥F>ʈBóc똯m
-¨•{A,n²×ôNÖZÄ—!|· Ýhö4ØpaÑ€½Ú¼Gâ½Á|¿ÀD—ã…ÞÔòVˆw­N¢¶ÌÛ”%ç²Lá¢<Âãê“Q♳bê¼)ó¾¸mKü€ÁÞO#|ÿðzm1­ùûÈ A>QeT²¸MOêS¶kfX99Š=-:Öû•˜½9yGÄ/ïREÆîÏ`ÑE;Mûæ·êW‘ê‚$–(þñÓ¾åH0(üÎâk¹èXz$a&¹iCÄ ­+±m„Ôäok4g4FÊ bI°<ËÚÿ¼_…gÛP–ãNëá¸Þ
-1œc@ºáäˆTÄÞ;xT ÙÃXyç•êΞ-YˆŒêõöaÞ€08d¥U#ÌQHJ¨Û€l
-Qb„ëudÊÌ£nÑ'sÂSP'¤Wc±e|‡M¾˜ÂΧšu ´àv#Ø-¡O¸DqÎu-ÌÕˆç²XË{ ¯¸VIKî¬p†:ï¡ tz¹Ìž€Î"Ó­3´‚Ï[Åa@Ð w¢²ÓJbJ7$Ûe^Ì …šzíã£)“žMeOs4½‘coÛ~¾pR¿pdaÞªGƒUùžofæ¯á4‹™„îA?nAŽ]‰»ÏŽ¬
-ŒýÉbmRØ» pf:ñO”¢½x˜Ð÷;SÛYØÅ
-=>è&ŸQÄèð:€!¸¼oþ¼EÖVSP\>ÒqBYYIA*u"D°¬Ýã]·j{ŽÄApc+m’ÃýûÖ¹]þ;ÿþqrv)ö[mtéÝfÚM+*.ŸóÄžhÝ0ŒN³6áfÔ®sp×SèR¾Õ9
-¨6Íå«€ì_>õ¹V˜ëýpÏÃ.ÈÞ™[¦&Ÿ³6;Ëq$cÆžß@æV£”=”{¥Ûu´…ÆáÞ£ÇÍ‘"wðÕš?Vçx_®°´af“6Ž)㣮#³n“Ë˳G=er|´8q,ºh‚qÀyßk8O~»…Ÿ;U^3,aš¶:Þ7éiŽÔâsÞÍ‚lPû‚°H>qÄ ‰Ûô™&)µÝ×(ã™×Nc¾°@=[›-îæ­É†óRÔþH€÷8M_F”½=±mXƒè¿ðÃiôÈÿßïÈÖT7ù
-0BE–õrÔ rØy¨ÛèÆ ÕüU‹·Üµùù€mcM‘6±] ÏÝßÓ@<x
-»Ý{ ‡|¿S§(çþùÇñú
-çeà0Øô_»†Aæ»ÎÔ×QÒ[™KŸÈr~:®:ÍÛŸóå¢È3¦²Ò*Ãcx§?Ë{I¡Ñâ
-á“F©ïê–rF€ª¾¸Ö©q1q[– ɵDìj²&d3{´ö QÿvîaêŒöÜŠj9§²Ž|E@ &cR‰„Õíüé !]£Ì!ßѦʬZÇ]wÏ’ß/¬éºyXV®·C-›x#ßÚ×¥vêåÙÌÏK0í…?ò dnÅ£mA•Yn×É"«€êq8¹t¦éW4RÛ„¨¶:rEÍëV;Ÿ \änn$Ô2äùç`c3NàŒ—I’\7 D¯¢tp&±ÖV·ð¶}ÿ­_`[]Å’¶£‘Ÿ@"8t7°}°£µjt-ó³bM«æ%l † Úà?1M<ˆ~ËyŽ¸J¡rïüq|²Òç¥ÒxJ€<ŽNÉ´„¥Å™>wÑ¥—´%2oô=®Bjx5êÖj«:ž„e´,P!Ê•}Hyú'÷ÝL?³/CÖCzZñ{3“cò¹èµ,`à&,œâžÌù›jqËÏø¾ðé÷ÍPR{èÌII¡ž[paKŸÏÎœP¤½áP`ë×v˜]Oò2^Ò“œ$MgzZZ>,ƒüK‰CO–SW÷úÜÏ©’@œÛyBŒ±'è?sñ«r9H) ¹Ä¿ “Ä>ÉŽ—r}Ë ÷
-ÍSyl”+IÐ<¼üÄtm·_õJ6Y&Ì!¸À¯ý¸QcjH.úŽ)¼S_†ÙK˜p¨ï•BA¼_—§•wîºFTÝz{(ùÆç?¡þt¨_[ªsÐÒK êǃ
-w"À¼”ó'ùf4çòp¶ÚÄßxº{ÿšöÀ¾,.zñðªö‘Eú
--<ñQHÀ9U¨íòú,mðçó‘¼¾ˆeCp_$ª„E3=2lß>žÐ֤¨Ó!e†»Ët°JþH˜³óÔÙû· ȭĬøõ© (;1úM[•‘Ÿ ÞM
-<J\õ2q"ÎZp¯LÇ,½à†’Ia6ìÆj7üQƒdwª?Dn‰ñk‘
-¿=Þ4'ø+"ª‡sX9P%¹†˜½—|CúÏëU룘¸j›yýøEÑ"‰ f0ým‘¼k’ÁÂâN>jí[5ÃîI`WÉlµ81†UFÁæä•–— 0ÞìG=žáw#ô_
-5¢{}2M&Fé1З¢Ï‡¢% ™ÍÉ4ö<¡í&Ñ„Ü¢;XøÅž¢f{žX %NÔ:Íx”¶Y‹ç:³ŒIJ þ$Ža ÈX¶€NÝÇhœHu)_d½d·!ªé3çâ±{Mñr6 Þ€žSYqÕhäà–rÜĶ‰¾²Í»2/Éz|qð-!Óa,+›Ôª¢k ¸C.qS_`°èÄ)ÂÙà¯@Ûõ¬ï“Õðåaaþ°xÿÌ÷ÒóþïƘu0fjݼ;|UŠàÌ¢Öcð—Éâù}µðœ 
-Zlà"µ Ÿ&=}@³¸‹uÜ®
-®ô¡¤rÞ¶f8¼sÕKQR3ø65.’_`T¨}Ð`¢3™mS§“É£L,Ö8ŒdʘûEôD¢Xƒb'š`BºE'÷9k'‹ÌZä8³þWÅε=ÌMí8>fÞÓ°¬€hh4˜×Ë=øn .ƒoIó¸Ïï&ü!¾—5ºy¿IœlÈð˜w² Í˶Jv1¢+Ðp[«Üý}–d`ÜùJOþ6` ÷pÖÝàCMh* ,“v\ÓTJ˜bø]üÿàºA$|,¤<vM?$W3DNòØ=c{ø•à%ìHòµÇ-ƒNx
-ÞȯÂþ É¿9ÄšfÇ1öW!VŠÚ@:ÐiPí*ûœ%ÙŠI±0ìËFµÞ+„t¾«²»Æ[É$,Ù­myHk[õVÞk>j„qc‰HUvUa @z"&ˆì7Š,Ý¥›qˆ%‰RóÅ8EEKºÓƒÙð¦dNÆ
-;íåùPwVN]7x ‡0>2‚E\± dú“|z´¬ÖäÆ‚ËVÓÜ‘}w#ëÆAGž+¬Úá]¸Áwõ¡ä”\ΠôNìùÐs
-1aÈÉV䃶bwT”›T§qÛŵ«„[I·ü]dìjPæ€ÇZ'.tG IÛBç*ö Œ- ·œÔ(3W
-xȶ޿{UkˆDø‚Ùíîý)‚¥å§F™¥\ϸá¬ØDsÚI¬«8BÚ8¦5Ž
-‹Ò¶¥£óà&¬šõ+ÿk§x8ŸAH,HP@Ÿ~Žjz¸Lÿˆ"„æñÊ Šç†C÷¨¥+S<T-8égÂ){ât“•î~ã'k1©±C“8±^ÙAÀòQ¸%RÞ'‹æ:é£jÎIŸ\Œ‹á`còlôÿàtÑ
-úG¿
-jw‚`ty °Ê×zK±Bd›e­°=Ƹ4Ù¥(+гr„PÚ†&ʪ´y) ‘Å|q<ŸÊãå;ä¯2ÔÓUÏQ†­¤ªß¦"ìÆøŽË…ƒ{xéN›«žû‚˜œPü¨}2l”ói – o•¯~ÊXUbd?-– þPÉ€ÀÔ½Fÿè'³oˆŽ ÈVp@ÂcärËœÅAu]¹§nÎ…kîùP]„Äœ½†_”¡£5x™}Ϭ”íxqž—|0V § ×;ÎQE ª¼Jlj¼|‡ÛV „ /öRB ÊJÃÖëQ¹h­}½
-`%ðÏ¿¢G(ðîóN¨¤2¦
-±±£—"éQ–ùgÉO1õ^ò“<þúòªŸŠ~\ô3 ¤(¤U„£œb‘©´·]ímQžÄh7qÎ) 3E§ð£·ã´ B7 ‘M6z𛨔Iqcsb‡ÝæÆùøŠ>ÿ. /ø‘Ëw¶rß+.ƒ&!N vË.! N…7eÚ.y.ô¡“óæi»$í|Ëvh-佃-®êPdT•lÄÈGŠ ÇÊ×õ5LI’åUtõ‹8x…Òn¤ ’¯.T´:o:K\€'˜ æO=ΑG†
-D]GËí’Tä T;ý[&ߺrrýµõ]š‡£/æ’ˆq“7¡YÕ+è.¼?"*½ÎV@t`dx‰‘ÔXc´ÅŽh°y%ÉŠx ­SŽ“åp/µ`C6 ·(©Ê¬n
-»µ‰ÝÚzü¾®«á
-L¢OËñ*ÌNRBïW†LT‚L%ˆ5F߇~?ÔYÓ66™Gê¿‚ÁDl°À˼—€„²¨#(ŸÕZ`¢´H¦ t4~ÐB\žd<a4Rkh}0þSE?ÞŠ`±¼šõ«¼ppú›äâV¢GqW|¨,Ãi2{K?µ iF(À1–>#ð¨/¬&M<ß7¨8Ìec½•T E&áF'èM¸7‚œ¯aÉJ¡0k¼ªNI]—4œ‘›6ß;êK‰1PpPäúÏQ4Sã‘g‰"ÏÄñÜË¡ƒ³’Š²y¸`QY©hŠD®»§½¬¯æ9¹_âGx-³~)úáEhzÊZ”¯ë
-`hÜÜ%Âø cRVEζ.:K#Žâ9ŽB·FàJ½¼g²@Ž\Òª¯â"’ížãx§.Ö‘ÿ.Q‚j±xlãlã® ›
-`Iqù¬
-)Ì‘Nkð
- ü_Ú"qþ¬QÅRXA‚@X €ºyá.Á`e±7ç´(OC
-¨ìŸalº]K.nòV”– yw‹ïÐ'ˆfÑõp¿˜#Ì=÷ÎÕ[¬Á£Ù 6¨C¼Ì¢Ë2ûQò Ýþ1ÚŠ»4åŠþ H{$&3JPb<=ÝÓQÁÒpÃ"‚½”øQX{¢*Üž³½|ÏŒ"~«ÛH ÿ¾v?‘N‰ë—D„ìuP¸lËœûy:¸Hæì.Ò(xÙ<ñ¬ßVøÚ%C|†+Nq™Bs•'´qRm %óÄ<ºÉ<Á­ÝŸ‘Éc}Y™'±ƒ]P³Íÿlxá·­€ðo'm$'íq%Cx>@ÀS‹ï|0Åàv8/&žúK‰!&KGÏÏQÿÉ8¿ÃMis½ß>
-ÉèIºæŒ£ K²º<a¥RxÉðNãý…_›è¢,a@^ì–q}+2ÆX=„4
-Vöº÷ãh¶é@š”í
-ñœŠó66žTñðrG:I
- "Ùõµ2Ò[—û·Ñ/±&¼âÃ]PÔ0C$ XÙ™"Ƀ­"+Æ/dl‚N½zEpcú.ŸöÁ­‰m&7NâÏg;n ­.x*î‘›ì$ % :”Ý
-º<PçÞ”[‰y]&#/?
-wyà4•Ut¹u@°3tê“bülÓëùŒ\˜€³?¡~-xcý_?.5h ¥ÃÞöÐK ¡.&™öí$*Æ»žô¥‚±r%L# ÷'Wðªu +®H0Õ{3Ÿ°>†~Ü =%RZxBü’ ¨ÁI1þ¤DÑоÓ VM‰·É5ÑÏkHi0
-=Í3™š¬©t¡îH0oyÊ$em‰2”'ªZò
-{`fÚÒ@›—’_?þýƒŸ³Õ8'Zœ´^þ¿MQ0¨HEŽóRô×­H2Îs¹…¢Ö<EK/ÁNq“šò×¢º“ ®á l¬ŸƒØ°p\ýâE{àÝð$Ø–òÇEŸÇ5,Ý£êºÿ¸èÖ‚ãþ¬ëfdÇðÛM;t/ZpIGóºVúR‚ËÀ€N5@^ù^" $y¿jžRE(8î‹^ÇⳜ²ÎCgßç-á͛рÜѪrÈ¿ìT.6CGmÑ›†¤Tg³*O^xV Q<Ö¦ŒØêÔ ÃÐeXH+YMÄ½Ô ÙI¸(Q//‚Æ,ñŽ=jãqè$DI‚ðÞÌH•UdͤŸ Ö·;jtë‹vùÛN–Mëué<ºqÛ£`)Z¹·üþåÂò–WNrŽ«ÃàŠÜ•´4¾ƒ
-}§¤ˆâiÐ:ydé1Tì×íUÁĽ€Ç²^a ¦ÁÏ`V†½ú©éŸ¹PEýä 1ihq êàk\ÏJ
-SâÒù%0¸(æÊ•[*5¥S“A¤ý‡ñ×1"ƒeè|eÉý4X¿H½èú1"·"˜¥³øzÐ<ŒxœÖ"òî[˜¥„¹‘ÖháÛ:Ù:6¶nëEÐþÒ’·é}˜7’XÑÿ8ß)š9;ÂÄf@Î$ƒ–Ãn”¤¹5—&±q
-¢…WÕrJº¸wàXÛ+L¼ó(50=;Õ„Éà1¿œbïv ËH{ƺZËÚ0º
-
-(
-Éý|‡ÀKkP†úÿà•
-lQŽÿä
-U°e 8>Á*•Ô‡PY† IÖŸípv[>– Ç¿¬{ÕgÞÆÞA·þ¢ÇŽRÄPÄ‘¢ ÿV†ußkg¾ËjËa`±±«âµ!ÜßÓ"RÓÅ„•ë³Àðìr«ãe
-â%»"³O
-5Ô2pªz‘`ÍZqº}†‚(ôÅX†— 6¼3Ioõ,1ª
-c„ÿû„Ÿ:jî\%eEéÚhç¨Ø€0§íÓ銑Ž-“§cðÈyY G¨Y dnJ+-%Fªò!c½¼c.9ì¸2 Ô«‰h›Œ 0ÈjЦæí±‰ËP3¹|G„¡\reLcÓâ ÏŠv5‰CÛqŸqÀR”5ôãælLzQ\«‡X—¶”£†÷ÿ÷ƒËŽˆ!äië–fÂΡ¦¯¿]ÅukêQïôúMØ|§‘F5Ø¿>Å\.ûþ$¢ß+pJ©/¢ÏZâ¾aî!¥®å„ѪJwþäþo­¸ãÀþѱlfp—Ý·ö29†Æ„ÿí‚2Í ÆÑ0¢MAÅþ¥®fÓb`¶²º\·Aaù©°ØáSÐÕ‰¹×}
-‚¸qgZË‘ï”&v"Ù$EÙæäx:%¸3· õ¨Ú'Àà“´ì¦Ö›¿ö=2 -¦$µÁïAÁìREÆj0ÀYVµîE
- Zc`Oˆ¥ÚU}™µBHÅ@<Q%@&¦6èÞ q˜R¾ªøš8EƒÔ  ÙA覉?Ïòº]ŽAb%—Ú©BŠ”UÊ[DÒ@äÄa\Y”Ÿx£ž ’^¼˜‚OæŽy®B„±çÒ,•äÞ´øå*;i¹¡Ð¤a:Ь^1Ó ÒZ˜—7ä‡]“,ÀFÖòšwﲡµŽ¥ÝYwѽ:n?/§p\EÚòNÎÐYƒÛÎ!¶LÞ™-É]­5Ys=á$­Hl¶s¸5¥ŽÎ"H!O²âsÙ•
-=iMÛÕÏ)ÿ„ì«’vSf,…ÓÉ·s0YlAð#­è„¼ (\áýiõÑhº&£ÓÏUd‡µûAu 4%æe-N«GqçC:‡µ
-NÅ nÆ ÙDpé –Æîq*‘É2¢€°1Å—ìs†¬&{ «š-ØüÉæ ¡¯Ûúèìu°Q¯QÖ¢œ›¤Å)øs;&iU@ö%'/‡Û¯ìçCø;Ë`£.„÷ËÓ‡jé@Ö,ú¬Ž'>¾ƒ®ôÿý‰nmy»pÇfÞäír”+)È*Šê[O?9ÊÅw¼•çqå£Þ@žrÝ®ût“7t‘7 ˆÙÌò¼¥¹òdöÜ#ž×¸Ì/½V1iiÓ8 P_WNp®À¦Ê
-<)\!­tÊ`ch©¸
-ÇþÅ ýr8ü"p,Nðlµ…ö oìM¬.øÙŸŽ¤¼ëû“á`¾Â¼ S%ã܉e+\÷ põ‹•ÿ‡|còu’UšÈ’Òyå]ß*×bˆRÄ0|}ŸS £œb¾ë[lð*Ù¬ì3õøƒw}Â]»buâ½è› ºê›{Ù›¾)buZÕ²u4ç]ÞðÄ‘ž—V´Ÿ3®òFþ*Û¡„ ÍäÊ c@ÚzgÊ’§]‚ä¦=jpÑô”k_•2G0ãÒ¡‡s"r¥“ c/òV1„h?i¥m^å­¬äàçP¯tây“7aè˜ÒÐWÞ
-ç‰3Ï€_å ƒ[Ë콌äÊŒÛiÒ¦”|W·¢e%%q %÷ÕM¼-Bª´îŒ®ºÝ¨ý®nä¦nèÆ´th[­-– ¼ƒ<uûWÙÚê&¥$±”æq¸Oåd©›z›@E¿˜-±ø€Áû
-Bü9õ±6C{UÄ'õ"Á?WѲžŸŽ³…СhTĈ@ñ —¦•`àt± È8šØ#XÉ dK9蔾›%ŸE.ƒu+˜Ó&Á‘E¹A0ÐMv % ™Ól8IÉÿ‚¨Þx©B…­ÿP[D3vµ«V« uˆöÀêEüSß!c_6cܳq“±hî
-ÿjâ¹ê¢=Œ…}Õà p2ûãîÑĪ€¾µè¾i.·'³\6€J…*KpÊD'´°´ö0NK%šLÑîä?Ë=Ñ ´FeÓdvóEhöÛ]_!ûª¢Aí5ƒßÎa׃x;?íŽ È|•7Ö SÅ9ÉãÜ}k®cËë3:ac…6¾¢…1Èì.M=.ª7FºÐMÂœˆì
-ßq„}Ö‡cX$Iæw¤'(•‘öqú”M‚ä5ÍŸEœfÓòJ†Ûîwnª²%KÏØq—+hIÍ=Eµõö3è8ö,¹<åª5-ÀŠ³)…Càò¾v Ð< C¾I‘ÂóQMï@Œù[-A’œ·ßÎaƒCZY¿ø3« \fç’˜Å×e XKÚ±LlŸÜŽD EëœDÒeÕùý¤˜¡à”®Z,~Hy‰t±‚„9 œ\ì&^]µî2³‡’+Xm:†õ¬1qˆ
-œfŠŒqï˜Z‚åUÇ^ЂŒš­flglbD3áÅl´Ã»G'›ü¶ÎaTÂëÆ9•%6±Ö‘çæ#nZæ`³ÓËË ˆ,$ò‡òg÷Ih¸˜¥ÑǪí¾éš<^+«bxyùÅá ¢7'ßá–)ð2¤½í4ߥÜ8í1˜ ¼AØNéÖ4@R(ŠùÁzÍ„Éó
-lþ¾Šµfà†,µ™z9™ÄÓjŒÛ LÉ/¥#ƒ$ˆBÃˇ۷ ‘߇ÙË@yŸŸõázÌexÉ÷--íÛ¯¢¬Ô³!Þ˘B[IHÖk4áì`ë 4#…£×¹ßü
-Dh‹”_p“£JIÈð É ‡ƒ(’T*
-¹=ÞÔ('ý—xØÓ£9Ì«DOùòÖé¿Ü«3$®Úz¯ß Dù+NW´”>ɵ†¬
-l¯ïL!}t%Ô¶Q’#­jÑÔÌ(ÑÕtî? dP`ú|âA•zó@J!˜Õ×Ôÿ{4‘,OÌQ[öEÜEÒÆ™= p–RØVºÚÌ¿>ñ¢¿±­ä‰]€
-òðÈ>`[gø?åe’iŽCáä|‚„DÍë¬e£W®ûoû{"e´ÿPÜ 8°_h È7`HLĈŒeÅópHzSS=çó÷£g}YoØgcÆö9PeQ®| ‚Øe&à¤TüY雌qG7hþF#„Ó€¯ƒ.ÛéWøîA1Õ3?Ý*ð²ÝÏ@™ÂAûäÌ{Òo@Œá‚n—¸áÁ®@wCÀH¼Èë%fŠ^–wr™ˆþ_Q‹®7µˆœ¬¯ÃßÕ&ÍuIu‚ÈSÂ9¼Ù
-˜šÇ¯ ðXgý†"04ÔÄs IŸ.ªmH1”³lB¹œ×w#wù_“ë]:éQ‘é¹Þ`lº±¼P*Ç„lÚWñh›„£Xò¯~Ý@b %rÃK5oQx½ô!‚žÁ™ˆºC2ƒýªî舢Øa´{#àáÊ}p(-RMa è`?׆þ&Dr9ëôÒ¦¸ùŽêU•|-kç0d wÁLþF$¸‡Š^Bï”;ªh’ØúšK^¹âçö2L~E§›çÄ0Žšœÿ¼A*Κz*»@¼Aé©Æe\|D>œ:Íѯ˜©íÐø§É˜Ñ¦Š|mˆ¢×䔩] ¾Õs¦.ë0Û4­ønæ7·2å^üîï&'¾UrQà<yêVèA·BH;h/œ~(àì•XÃm‹C8k¡½ ³¾˜î¤tÁ€ì­^Tß'3S'ußÕs™¨+ø†¬ÑƒEýâžÀ:[aÆZ¬¢¬4‡`½Ø
-ògÔ.G´;ÁÇž¹èØë4µÏ…±>ŸzÁÛ«9¢Ã.-eE‡ÐêpT†„Î¥(R`¯dƒëaOE*ã{A¢0 _ #u¿÷SÒ|[ÑÒ\ŠÕz0-WâW ù KlHY‹ÊC÷#1\qðÏÎVB5$UƒÇHålõïÃH¡2Ó¯Øk¡û°ëÉŠ,Ì?o@Ïg«2\œGÕ_þзí>r&?úËZOMr¥_±„¼þ¾‚^\›-z”Øšx'űƒ.Û½Üïg ‹¯q7èCVÆòOA7¯õú0ÐçO*®‡ÉM¤I†r ]È•÷¨ Œ3 ä}uÉN1¡D¤­ @øP‘üŠù Ñ>ø—£1]2 »ƒÆN‰ű'‡œ!/™<K9HŠ¨œ:ݸñ­©‘I¸°C°3,‡þ ÔX¤`ŠœHZ±Ä«rÃô50cÁ÷UÄlè’·[fSŒaRÅ Šƒ™<ï*‰‚qXèìTmè4KŽÏA°Ãf2|e¯#3Z²ÞѵJò=ù†ÐÈmÑ.\´^ ¾U&TÁ’IK½Y'ÁθLxýk«YR›¹N¬ÒŠ8Wq+T¯[@°i";%(R L/åÄb9ŠÌOS‹©ú{º…„YÒ
-Ë_¸²ÆQ *ÄO±ù:Ñ¡âõSÂŒ;c+„Uˆ:œ‡h¼„árü Òé<H›“ÒÉšY
-ÖåžáÁqNÔâÔ†Íy>4¸ºóÈH®”½#óR8*Œ ßóuðò6gT˜QXô1
-bZ”Ýz;[µÉ”!›šø
-¹Ê ²£CPÝ:3,Ó(ˆ.EFàÎ- Yžß½†K ypöi%¼1 º­I‡¸ï^öÁWf:¡Çiì‚3fÎ÷Vr:sNÒ‰pÁFM|ãùVÊ1X_8^ÑÊAŒÄO¯"œ{bm-H S[hݵ$º8$cÈéLæ" ´\Gað3mÇRÑA®Xã"‘‹RhcŒ ó'_ Í‘ÿ‡5âÈ8s}®NÈŒ–¢!þ>½ï¡%£”PÆ5‹ŠTR¿7`Q¬nÑÏJ¥²÷0gd&ˆ—‚d$q[«ô2¦óBJà|S±Ò‰z†—øf*H}Qp<©÷h³
-ýÉTcLGgòf
-™ÓOÓøæ¦\—ó†eP¯¡i¥Ìsâdz+Á|§Î{²loë£áõâQ,Ú‘‰Ž<órC~LP2Å<ôo¨šã$ªOºŽÁÑqžg>ÒèÌ s£²És^­žÒ!ÝL!=m§øFû— d±TÁÍe£%ˆ‰<ùbâ!Ž‚@!Ùg«U+Ñ cÞÞ¬óH¤7ÈK"½À÷C·_·š˜j9oƒ…Iô¶7.%‘N¹"©L?q{‡8Òâ½_!ß¼øòMÿ¼¹Õ7ÐçÕ>s/Õ ‹yy‡"2¦PÚGhõ«¼)fÝêÕÕòd<|sšt{J(¨á²âÕ‡.O ‚}³8_
-åÖ¢lÝqþrºAÚá(1È n黀\–á ¦çáÔq)¨YžWœÓ±œ…Öq"l !<›ÏN&bf‚ÑœH|SBÐåÞšû®-c±Z­ŸîZˆj[\µ®€i˜LM[>Ú@aLf”TrÞ“ÄĈ.ʿ׋¨Ax@Ã/á{ð…}_i*?Áq|¶§ÇÑ ’6}èó,Š'Ú„³ ’pô&Gµ!2›H:|rœ³ ­¾¼¸ÚH6IùÇí4òXê ”6…Ü=oE?RH†ƒÈ_ÊŠÃüA!‘©J“Êk
-³—H*ô:ó u–&õÍ_–Ù⬻(ü<ËPôÎT÷IœqYt '´s\à
-x(ñ¸§0t(<5Cœépö^Š%Q‰ t)Ÿ@ §’dzF€rI(DÒ¬àÉeñI@¦¢Ñf¡õ*Ïzì.÷ÉB Gže‘0I°KlÄq5+H¹öÎÝ pïI¬œþe:Ž¼<è\%·.6¨ˆýáü‡0<@Ÿï@IMϘð«ÀpŒi«âÄVn]Š³âàdN‰éhyò
-ž›“¡wÈ7«âX¯ iqx«õA ¬júú&×Ȩ֔6Ôx(ù(?wòmŠ1ÏswM‹ä¤¼@Mè­°MuðMA€Êb4È'kyÛ,ÔR%¶õcÂsÝL² :…²Ýà¼Ì®ž“ÜG¯á¿ää×ôé 1 íÄÕ{¥2Diì½&nYR>j×â’Õ!|éŒÝÚ}Õ†y÷Í_@ꊞ%G…KÔÛ:@X†¦9ôõ×MåN¼ÎÍ SL…)‚V;7€p£™ùäDüøÕñèc˸­0µ¤MŒÁ`æ—9§@‹âÝÁ6‰µŒù\qs½
-CÄèE#‹L–Æs$ŽûÇŽò¦5™X)²uB+\10ÈAZÁ£Ø$r®q„€tyÕ!ô­˜dl"ÒÎ¥¾Aþüúϯüñz… ËT>eþìé,+©¦
-ûW á?o@²[âj¤A‚O+àMEÜh:·‡YW>kÝ!ò#•ªBYÿe¼Ì‘ã0b(zÞ±VïKè’C¥>ÊŽ¨Ð÷÷û
-ËEXߺª"^OITiwì'ìÒlè 7‚;ž9¶j\K¦»1½ÿD˜àk1Jh1U/v‚ª-ìÆ,QSel°xh›Ÿ)]ü}*•E á=ñræ>0…òé_“ÖY峧¢(I…¹¾Æ‹Xþà¢Ëì&yÓ€˜ï÷†¡U Vß*dFàî*lF‡ÐÈÝÆ¥è1`è8ð.+ñ>§ú®J¦Êzö8äV¼¥áQÂÍ!'f½û Õ•µÜ×61Ìf7D7¹03Ê7Wøã,Æ>“rÓ[ò¿ÍoÔkÉ'Œ
-ΈøÊhV!aÃTâÍ lƒ²˜ß ŒiŠùÀN³¹z£7 ¥UàVhŽ’9b´¡ÐìSƒöÀ?²m—¸
-”ÿÜx㊘zàæJ¬³X9çÊ“E _§ÿUyÅKÄ<ù@ñÆ=}01.û S³€;Ð%d_F ÞX†?ÃÇÒ%ÞÐâ«zÉ[cí~‰*Uj2`G‹‹"Ò×ZS^ƒ,’1´±(G(”‰ª'.Ŧt
-j’©ó­ðM<X–+:šždq…äâ[-é,
-®Qwø" \ÓwUJ:I @#tã‰Úè¹b —È4þ† /%å¼.ÅåßÑ™d{]úœI(‘ÿL9Ø’é#†¬^Î:EzŽ<—˜SŒT…¡Íë†S(i¢Šãus™Ö’óaedTÑ
-ÔE»è‘Þƒ3 +Yç«ìÒÚi:G×éÈå#âp%ÜQ`'‰hdµÑ·bâ8‰Þyœ
-q‰aY‰§‰0Ìcr!ú$?9Jl·Ý<{ôÓØ
-T0ÀÙßçüQ(Šòs‡FŒ]ˆ,PÙJ´"º™ÕjÇû‚‡…²"äÎ
-t6e%öt‚¯pheyÒçÕé=NÞ'Çøý:žt¸‹&¬cÒ¼Ÿ[ÚܙĹǥÈJh5ÑEnø¬#/J;ws»#È ~ ;”¨@Ôp6i}¸¢Ó!\¶}j0CcR|™Eð0•ÄyF Û’¶ˆŒÛÏ"û*ÍÏåRâ[ Yåñk‰upÍSÏSá!o'ç#¿rîwât2 òÜ7¿ƒˆn¹(ˆ¾‰’^Ç">ÂRC4Ã]³‹$eÞpLl&‡¤„¤ì’·ÈÚ(,æ~è†i…^”EV¬APr?Xnç
-‰?ú¥H%¦„«¯vÃb98 Òi繑M[ùÀºO‘H#¢\^´T±ãJ ¶dÅ3ÝìN¨QhAï±±V¢×VJE–½dØIr4Òz2ß8ª«{¦ç·¢OŠdo˜zŒX{÷"ÆÂØ^”%íJ©Í«•¡D1CÓë@‚(&l‘˜+A@…kÅÇûà÷Du{Ÿ‰Tq­yÄx€þ|Kè3OÅ™j{Ò«õŸ
-H‰Œ—Qr7 DO ;èÙ" ¿•OÝÂUù²ïÿ›rfí`J²ËIiÕ;CF·N-½K“Qßÿ’Ñ­÷Ùµ–êVß?Þþy+ï¿i³Ç¬bƒßÕÚf@Ç£ˆÍYT‹©¾ÿY VEdÖ¦Õ[
-HÑ"C[óªŒQøRs³é·Î±ª‹ôº!}˜«5½´÷_oê¥öø
-ŸëÉæœp¬çh<±pœ. bÑùëcÎ9î â£6ïÞËp
-úcçϘ¥Myÿ}’×*E¹ÿzYã§N­×±«í­ST)ÓeŸ'^;Ìjévô£RÊZ‹7:ôk™‹‹rÞÚñ˜bS欵7é«Èê½ëàÃÝ}P§Ú'm¶b 1ôkç_ ñ¦¨(0é\È㋃xåEó8J¯­ªöV‹,ëô
-ú´P^Ê­›Äaã=ãֵÒ®Çc¬q%Þ4D¤QJT«ìòVªÆ?º!|Ýa®©û†¸6djôäã-Ù£uè•WóòÏ´Â?I›¥ÀÑ
-]+2 æÈU„sí˜JóÆä`1'õ⬢LH ÖKsqoÇÈTÁ4<XÑh ¯§†Ó6ˆ¶Ñã(äج`€èÍä0~Œ ¿¤€¥Sý ™­òkº‰ó‚ج¨j} È]wÓ/áÕeÒv¡c~œ¸Ñv†“Á·Í8ЉÕ~œ×øˆ~Ør¼ÊŠÖÉà BCN-‹5Pös\'jÁ,Z= Õc Zå#£ Óþ[:lòzò‚“é\|ŒãÄ´SùX™½ÕMG©¥NƒP§vAVÞƒXù¾}4F¯›ø
-äñÓØòÇ\££˜ŸD+á¡úÍ“0Z –C:o@FtÃ!°˜Çv×Ëñ V HÃpÌÑn@4!\ET—(¹ leë4XKq» _Ÿró¤ù ›pÌÐï´÷3H ˜äÁa*6)1_Œ …ïLÖŸÐåPhÓdàX*¸¶»“_Al>©Qcñ]_÷#ªfßqx{e& F(Œ\'¾ÄcòåÙì€Æ˜n¬¡ Â=£ÙBu·HEn4Ñ%$€Sö£Äf=§»ÀI*^[—õšÆÿ„Ò<µ&Sk6v¸êS4„ÑGn ä×*"oAb©*è›ç WèI„ý–hMÖ
-n…Ì0ð(:rþ‘öëeB~ïótay6ùN#Pž |F»ï«Ï¥|µÕL´¢€\͇~=S­]e¼UÜž;Ôvó˜»Ùc†N QÌ–ÄÖ”Ýs†{×­ïqH:Ôèxf ƒh´ëäN߉ƒõ:vC1g´;¬J9ª¬D—^"ÛVO!/4ýxË@ áùsÊYÒ}ü” áõu?}†|¾^@ŸgðSy°‹ÈT riσ ʯ„ 9‹@ȼÅÈ:mΖ? L7ßÊyêS|²"¹(oUoYìÂøSW~ê¥gn; 0µ†ÛÖ3¾æ> ¿3Â{1¯% ‡Ÿ7 ×ÜH£Ñ,¢Y¼eÁ/ ðo#<³à„[à^ØŽ3}@¢œ•r²ùkû¨0Jg†_e°ü¦Oßôûû€†1`cîv©¯¹P˜4¾Ê¦­™<ì–•ÑQY³Ü„täÞCòóàˆBÁåêYðR9e>²à—B^ƒ_º¿t¡"SCWKœR²àWçå˜
-šú™—à—Pú5ùE#ˆü(48lIï¯É–1®D‚•[š c,¼pdÒ·,û1ҥĦ©{7_³ T…•±›fÙOãÁĆÂËK·,ûÈE(Tóì—€®¹.©òA¯é/}¡uP¥‡ÞÙÐ,þ…`²â‘C‰”•Ç¿5€†‚m§_øÿ€¬lÅr[Û/Ém1ë´¸„WOcò’ÿB^ '!8Õž>öĦZ=#â—üJz×~:²×üÓ¸E¯*gÞúšÿ€t.ØäžÅ¿„„×øÌ`%ózNtf›×øÇ“EvS,IÒ_(<±·2‘øÿÜH}+§çR–ùdDF€¶#J!=˜
-a°ÙÑýØÈpå™j¡ºoˆùã¥î’¼}O^ ½ñ¡2ˆµ­—›œCÓT9‡éÁ©y34°Ï€ñÈ®±–Ðs‚>'ðõ9T‚•Ù—Ê“ƒèDä Ï¶ÛÉWè¯:™J+™›^ÿë¦#3ʯŽ›óNø‹ª„|'ÜB¿p#˜˜C›#B›„a²°ó¿~ÂãϧÙ(hE¢Q‰öþ¹¡ƒT%ŸJh 6# Z?MÂ×ÜX¨^¥:¥>ÛÑ»E›µãè‘V˜&˜øyÇ¡…­g|W©q]®‘Âfšy€ H#Çí=ƒlÎ#資µ¶íŒ/Ï¡¡°,Xxf§ÑÎÆ!÷X°MŒ„O¶“>äY 6ÆÜüä<ƒN‚EÏû%6²à„bÌ ¸ó$?‘Û@<–}NFìG ÿsÌa§ø4•!™ÿ‰2šE.
-Ÿ–úŸ¤Wÿ“´5yÎ+7¦`éB¬JÊ1ü›‘Ͳ]Ý•«HT`9Gœïã#\ðI|Äê‚¥êÌø4©z¼ê›ñŠI„-ôˆ%˜qßÇþ—ñ2I®ëØè
-þ´FõÍØSîÂSqÿSŸPïK÷C²ÃÖ­Ù<¨á뛢¹ËÄ‹+Ž°”XÑCº8sðÇ$Ô©‹rD*)ÓcL¡ðãƒóÐ%Œ kÃh˜Q½È½ï *Tfð ,¶é&RK€òP·©].]M46Ãä†~$%°x<[ït®>…-a»ÜÏ…eƒIáÑ<8ߎa-Á…µ5Ø Ã¦PÐõcJ
-ÁßJMÛ‰ ˆ©b]=ÆQ3ñ
-MÜGð³3Qƒiv _XCVa´øÈæ&š_ÙVe¹À–ÌKÚHE3wƒM¤W·)š{$,Im/R&ÔÎAèÜÞ¾~B ÈÀï´j›u+ùMNãS¢G‚µ+OíøÄ æ³éŠn̽ßf%Α‰¬D^H€œÑbR©eLÏX¬£Â:÷õ±QU
-–„Óòu‰±t™4”euÜ]È€ƒñ߸k,Õ-0©B¡–ýcË`°vŠ¼Ñ­d@ßP9”™Ã±ÐÉãš=¾DFÅKC"鼜ËwTmKŠ”à™¹‚ž4ŽUÓµ‘“Ñ­Dq ÃU«>¿MXN–Êååm^Š~^‹8»Hƒ¤ß}ú#GüÇ']Ýe±kßßVÙç:ÌRíK‹&ÃCò†À?ÌeÁõÔÄZïé;Žo‡@íŠL l›ñß#_Çù(qäôÌÖC±¥Ÿ¾¦a¶(ŒwP›0³U/)Â'6žÝŽ‘s·Åzm‰OÉ]A òÌ“bÕà žó àç0~|ɬ{CÙòZ·
-/+1B¤éµ Ï’,yJ·C@ÏãË‚)À3@“¹¿ˆÿ%‹2„¼UE«°¼ÿ'H°Æ‹x|‰OyZ×ø€7†ákëÄÇ Š(zš|äïµ¹qîFÄm¼hÒ'Ã`i'ª5XÊÇ/£;®À)×áI­†.`tœ«¯ÂDnK•ñ}‘>ÊŠ Ñä| ·¹ sÎV ñ€‚ ¢Üb¡åâjðBw¢/„5£1k~W‚+Cþ‘¨€Þ{ ¾ëÔ¥ý)öÉ” ãÀ2„ñê¹¢äI¿9•L ¹­'ÌÌ$5•6iÁªŠ³€6…¿%áÖÚBÜtõÍsV“)ä™UÎ7[ê˜
-ù™¯n×g¸,½‰Ûðœ®@”Ïb‚èRº¾äúÄœÚ:Ï IKçHÀÙJ·³DÛ,›Š9Ž‡Ã±ð6¸ªñ©ç0%þ©-̳Ë"ìë9àÆt wG3¢ "±•ãtU
-uïVOAÌ2¦×+1
-’¦†‰Ý>Wd* -Š·Nó‹¥D´õ¼d¤ ÓK'è7¨„}gb<¶@ÿêü;Åêë» ¬v
-Ó÷˜oa¤ùs§‹ýÆPº1â+CË¢„ÈG–
-ÃÊQŠ×5ì²x“fG¯õFÈus«ö•ö鶎Êñ¶êLàÝ–·Øø¼=¯šËÌZZ ÎõÝy×\ŠÐ€¿`»z+r$fÆŽ‚§u4wJ
-ŒMÁÕ)êý$éÀ«gß/åœ,1zväÐf‹\¬R⶙—.í
-^É^ 2Bn“ƒÂÀö-}/‚^Yí$t(C|Úu@-T:$;õ¯‹º´£ñE)œïû­ˆ-P Óˆ ž"wØ›¿ ô°¥FwÝJ°²OyF°hÂ/ö’P"ÞV¾Î Àk†ÔbA7¹Ù^û:‹7{T
-ï%Vä‘«Ë„ÀàuÈÉ0Þ‹.3ÏÞÄ, èokû÷óo–ôóĘ$-b/ðÅé Ÿ
-Š×øm­35ž}q¼¨õ·"•4ÉW)
-%iø¤uM(£dXWj£E öˆ©AëNx9•‡ù{'<͸²«v
-ÿ1^&ÉuÜJ]ö 0Ð7cz¨]hJíêsÄs¼ª,‹v„ÿ—˜D™7oÃï¨DV*€˜ÀbÑùC“‹b€â‘/É+Ì(ªÕ”( ÀŠüNë·’¯U’Š›î†Ro%*Ì.Ê\Ï`æÇ
-0E…¸(Dε-ÐÑ3mɘˆÀ¿«1c9ݬ•(ªxüt ÚQ;§ÊšðÍ2¦•°¡ˆ&žz¨@éÐì¤åÉö¥k‘¤>(cÑ«ØÖ9 ¿‹gx¦•Dí= jÕ*5È ö|9¹J§ì¥}
-gÕÈ
-
-œ‹;Á´ÐÒa„’àÚƒW“ô;%mM!ð
-p*|`¾¨‰^P¤x3³èrÀ±Èð´NYŒO|‰
-)¾íî1@PNüˆõ÷c
-ãU¥¶ÑÎm¼¥c•$Øšæác °/¤á2–H2¢Œ@…N
-œ³w¥kï÷}îEoûõ!^a3zOKØwi½V…©{e—^W¤ƒ6v‘TÊT"^$OÄ ,çÊXvœ\ò°!
-㊮ËÀßà h&!2y`á«£ÄnÓǬkú¤5즊äÕšB'¦tƇ“
-ÑÍ:b²^é èQ ŠÎƒ™u¶€?5~G(c T”GROØÂa£Ã€si& ª’¦w ä©Oâ*}¸Rö=;%úôXØIl!ºçÀÄ€¨ÃO/ñ³°™x°+@L3ýl°ÈõYyþeß¼"œ@‡¥Yfør®‰yEìÔÀœ,n^˜²na¸Ø~•ˆð—¶áOyÙ/Ï:$³f¥š0¬cýÑÇ:‡3¤Ìæqþj2?ÇC}%»Ú±‡[…HÕ§s®#¿ÝæçUwÞºsƒñ­ÅNÅÛ¤~ca´ZÁV+kX¬<Jí þÏC\¡{£h°ŽJ
-8̇öÒNÁ€˜‚\%ØJ;KøÖèÈdÐ&XîÕ"2jÅâ%Û lê2ñ‰î^¢T€E/:æÍüÍ.Œ¡ã¸.¤¼{&pÁ®ãïЄ0Îm*®,(Ð •Ì¼íÜìÂÈ~#RâoÃ^äü¡òd›=v):tV[ÝÉú-– Š&4 ëFjJyàäl8´8fýó‡Wt™ü×CQ×+ñù½ö´>ÆfÁÏÈOjéø–‚펩õýp0Æõ &Õ ¬ËçpvéÖãΉvSnÂB—eº˜Çº÷˜hS…V”K²ò¸ò–Ï*¸nƒ|ÆŽ Î1dM6¡ÇÏ]H‡¸'Ì\Üm8©*@œ¡Ž¬0
-#·åB’Au… ›¹€¤–”\×9ê.%ôgÓ&“6Üe,¶ ׂ–é1VÍó©¿l§y©î&ÄÔNYPz‘ðôDŠ?«ˆ¤‚$^^[¹€ÃÐ-±ZV•ò†¢Gó6‚…É:Nÿa³Æü@¢À7οíìt;g~p1f¥5«“W @•´“g؈6d[ç¼St÷H\¿Ìܱ²¡<ø6§èŸü¢ÀnSÃZ‡†ø —žÒ´]¸¡6%T¸d•ðÛØQÞQNºÄ'AúàŽLøÊXoÁÑŒÊ.ÉXĸJ”Uv§d
-¬$D}hîr cŠšªå.#šM‹/*0¥¾ÎhÊ }òùõ¡N4ÉPy©Ã¬uÎ!™­s*­Î› rB˜ˆDÌãÀý"£ŸîN83Ç
-v?e˜°Ø9€²@ÝÞ@œ¯ºÃVôf% O[ƒj÷@Í~J&FOm:.¨ó”(êh›<5¡UWXb›(ñ!•F.^Kš½ñë.Œ ŸÉâ¡èãZÄÇ §"ÞYÉßÅIžm¡\a@ ²¦;Ï ”
-›È¬®šMì H$v0Šì·Ä®¯H’ìºP”BCœRZßÜG{ä% §VŠWì<”ø§qü5Ë6W¾žLG£ƒ­ˆ¢íMñÄ×yÒE`¼ãzžæÉB` Õ™*ø[Q‹Î­õóÅÂNÛÄT£„ÍR©ÿ‹X‰00"O|걈g²¯´Œ_6ÿZ¼Ú6Ÿ?ŽÖ ½œÕqòþª¢4 á#µD3ÚþàCÉ;ÜŠX£Íí¨Jyu¹vx’‹ñfµ[‰]˜ e»â6»
-ôãG,Df‹ºÈ³‚·¹á¤}2"†.¶LbŒ±üô„üÐ&åXOPÃjNô(„sˆoSÉg÷¸|òÊñ)l0ùllcÿ!O‘›Bö`‡|bVô†6ó«’΂ ®r0NÉÏEË8™„’ÝðÙ¸<J0iÇŸB´¹’ ’“×
-05ä×4ì愼U‰dG à~|Š™ª[IÕe±(Ö4F®â.€Ï4Š/ÄCÑÇ‹¢IÀWš}£ ÿ2}â7/‘²6X”â‚ác}¦œ]
-D…‹î5b×ÌZð¹®°y( %‡IfïÀÒ—ór-Pà饾X†GÛÊ,±,ààCg,Ãûe–ú6¬˜S<[h­){¹D1/J¾Xñï8ö¿þó–Þÿõß·¿þ÷–ßÿý‚¾±«U Ïãì3–Bڼѿ_VÄí ®ÙТ})ªnMZI ùLî–Ë–åôMµiØ%Šûï¨ 3Ù©€ÃtWºc2 –
-\©£* \‡vœ(Ñm˜æ°’¥þ­k ¤q0bÒ’’î÷·{‘®C·8¬mŽÝ¹nYM\j—¢ïáÀh
-2©|qU(ƒ"^R.2â…²×aÇ&¹pù„åÖ¢'R«…h K qÿótÎúÖd¾1¶%îR»ßE¯>SF*Í•rìè”g&`ˆJ|)I/ʈwpÚÀ©›M½ÑÁReheÂ’ÑÝ<v-Œˆ7ÜUð7Ýj4\ÚÁÊ´3à ™cmdJi·òŠ•> {ðôÞg±W¨5›ãQݾ.q™á¢ ™ àÜÀ¬ð„€’F
-€Îç°ÅsH•å)’/Ä#ÍQž&é‰×5@:+9IóRâŸÊ£Ë§°£¿8²†àr—ý‹+½Aû߯%Ýì,4€úi£
-ÓG认YQK† jÓ*W®«JªŒ•–¥õŠ3ù• JÀÅÚÞü±>C@±Šs[iíh^ÂËÙ%[Å(a¦r{mDbú-„>ÍÝTH£MÊ5¹L²¤t™žm-&Ò,¢®v)RÉFÄ*
-”Ât¢¥¬8JR†d7v[·VT4RÉ0ⱋ'hˆ§AåKi+ÈlÊ6U9;EJªÇ2ùÃ0U¡ÌZ[I.6Æyí¼9_:¾'ÈþV¤ë0vCi~ØÃA¦÷§ øgч·p·Š“ƒÞ×­H%ºmem`àP–’̲·¥Q«¤£bÅÁ ù°5£…; üiŸjä@pzð–!ª 'ÿ¯fŽËJ1ñ©ŽoÚ9i|¯J&öÛ’„[ãKÔz²<dÌoœÛV¬„mû TüŸñ2I’ãØè þêm1kmy n»ï¿ýÏHÒ˜‰²n3I&Q¨ÈÀáÃ7èúë">‰Äɘ
-K$¢øUõÜßÕ(n&ÍŽ¶Ù1è.£UuG<Ë>Tù‰ónáæÁ&ºôð胫#{÷h2$ÎÀƒ
-]
-Ö•p(e){XÒ-yA8uxð¿ƒã"ãLƒÒû­è3,âc˜ýÞ‰ºì˜éÍš B~Ÿ¶_eÎ<™ƒÚîқȣÇ2¢(×þfÈ£%bM½¢NÑʤ7ÁéºÈ ¥_ÆBãcEÄù…xÒßÃB¤DpÊ©àE.?“Y„!mVˆ`ͦ&¿.3zìP¶OåœÈX’ŸÞ=LÒ.¨—fá/Ó‰jP›ýšeÊÚ1ø]½{V° ¬Ü_šòYƒÎ,0ó²øǤ5R½.!ÙÅ>TÙ"v¸—‹ücKX©s´Ô& ”ãÜåYô}þD¨þš+¦ÃúNV§ÿ ”d°‰8w”öëM‘¬ é _cÜŽŸZ
-gg(C"»y‰`Y*ŸÚgwØO†»%xûYSáýf‡5 _<4Ÿ$ËœNûÿØÉ‚Û`ÏÇuÕݘKæàÃ;d%i‘¥‚iÍ°sŠžÆ·°ÇÞ8nnåÝzPN–—>¤íWá8dVW5D
-Š¡:ë‚G$qEá Bn‚´¯H^«š›èO2üSß•4­Nb³ƒ±ñÃm4úeEE±¬ÎÉÍ/)ºpbßfc)Rà˜L/oÞ»h„]¶Hà- ;ü)gŽPJZgeë'‘ev|N!1%>üý•}ªœJC»‘zÑÓ¡mì\§CdSº`·»aõYôðÃviÆÉÀõçE˜t`™9Âá|¾)Ê$î=ˆÓ!z‹
-S½ÌS×­›'²ŒìÂü8MxÖ³*R‹ÔJÙê·Í oƒ¢gi³[9~Tõ˩𧦠™|º=ÜŠmA®tøp ãrrÈþ›shŒFÛæ×H¾R©ävnÕð‚ígùµ?›_Ú¼žEÏQŒ­¥«((lòã¢Ûf|þd}lËÆü`»‰kŒûÈDÐ2bjÓ·¤Õ
- *%BZ ˜'Ö…¸S…BãIIê·}w·áÏò‘þ‚ñGJòŒ¨Ù!A6QìÓKÔ~È›R‚q'TM‰× Jô©¥üEH›èýñ¸sÐ>câ?ë oƒÒ3ì™aÄoB¨PYZ€%kqc–R'Ä8ÃöF%ÿLÉ?u+‚÷ñÖÄ Ö6¿¢Ë`‚ØÞ®´ZWŸ„•Â&’½Äæºw Ò0çLþ¥{±@’©,²Øñœn%÷yçÜQó¸ÍzÏ7=ühÍc îíýn•þ³…cëLs6Ü7Ž<ºõ¢=£¢_aÑ3gŸ{rÅ÷wWd¥Ì³‘»ë¼kŸáßé×›"E¦&òÃŽTÂ’r
-¾ãoå«ØО&Âo@,šBà är- 8Ë7å*Ð][9õ@qb‡’dl)‡PY3z6M^%(Ñ—ˆHüw7Ò?&"8‡ùƒûU€•·ñk[zÇC­ÂþsÇüçQEé`ã´M(‚É(!Pvw–e#ã[¥kŠTNW7“k8 q¥×¹q&%éikGÚ¼ü©‘Aç<Æð¸Ìsš·G/ÝAÇØrTK̵_´èÄÐÑäºß•üã/ÿÇ‚|2ÈÃ'yí¬ô†ý ÎûzS˃Dˆ¾È% ¥À©÷Ò´Ú¼IIY&:ø}ràâsoccÖ^î~už
-ÿbÖS½Üì¢c«‘›šu
-$‡^c ëÁ9V>%„MÿQFÝT’¬ Á sAlüé¥YÉbì<ÊÕ>pj%“Ò|Ž€3³c¸ÿCÜýÏsV¯`›ÌS Óý43ÝÇLìâôìøLÖç¦E³˜S:584U¬œ•ÂYÑ©-y ú¼°RPÍYL’C‘V^”øÖ%ÌXa„LjÙù*îs£¶ô ~Ç<{9õ@yú‰k¼I($d€í_Q‰Ï°˜ÅÏaüµŠ”™F(XØ?‚Œ’àn{„%,ûÎÄë(õ¦Mžg2Ö©¹¦‰¶¸…ÉÃi—Õb\ìÐ,úЙ,ê7¦/ZmPXàc"€ùR [Pr¦É>Mÿ(ïιÑìÔ&çZ…[s„O¶ÆŒêÀƳh’/L-s—Ù–ÓQQ0<øÅ# BQ¬ë_/_õ6µ¯H^àœ±È>üSßÕ_—?xq.8g|¯·ZÁ”EXEFäËŠXÿ&Ã&B ŠTÒhJ‘7˜sº+Bå¶Â˜?˜LD¤hÛ]LÑp.‹‘Ù%~$KýrNä1–­Š4ì˜IìµÑýƘIa}Êã”üŸñ2G®ä‚è xÚ2ØSA™ruyS÷×ËÀ»«EÎ0úÃúX
-Y¹0Ôä’2ê ÌUxÁj¤fHôŠtx›ÅÊ4 áÌA..¢DrŠ>V{²Ä»+ÏyE*‰²8(D k–40üq•°xÈ 'ì—…7‰+Ä8Èú4P•áÌÇO©¬¤¹ƒ
-2M5H·½ŒqÌÀ,>•ðþÕF¬´³Ñ¥†.×Î+€1çÎÉI¾j»ŠoÐõþi®"Îíñ§«¾¥!jZÔÓËÚ—(Éqô‰ZƒÕUÂíG€©è\]%'%ù¦SÑP1à”Ñ­zp¨Ù™ÂÆÜM*‚÷¹~Ý ct .šË÷9  ÏØ„&wð¦ácvzî‡'›òµz]o
-uw&´}`je®¦ò®¶ª͆™˜j_M燺.oJ‰ž¡ˆ¢iÒ™ãI1&šl¯¤»°díëRnMQ
- ¼Ò–9¡Ú¨ÀÕ-ÁuUà>É z !ògdçh£9En›¡=!xÕí¤ U»„gI 
-ÿIéÇEöÂË#$+ºo÷£"<V@O¼°ùt·ˆ®`M’º­ß UCh«
-$BìHŸ¢Ät²è„—–(Y 99Oÿ_s©
-ì0Fü#ÿ¸ö“š,l* æù°
-RÃ'e|L,¤3Ô™Ú–„EAh8ìPv9í"°{Íëð'ⶠ,‰Ù™ë‚Æì"ðE´$ïMïÞW÷@‹‡ÌÂä‰à1ß…P¤î ¬%zãæ Ê¤à(°÷ àxóVb’£(:²•?C¸Ž••še%ƘCf‹€N‘ƒ?F[ve\äÌÄ}»}™Sî—¢5óí-ÈŽ¤Z9q@úÂ\Vׯ‡¡ÕÃIˆ8kå©[é²—iÇh¾N!)®Š€ž±L>JÆ53Çeù0LÃÀQáÒ½ï õ³]H¶JS( Ëy¬c‘SÅJrÑÁÈ»¨çŽ&¼:N»©¶vÂp<¦€æãçàbrWÊö‚«iÊ2—¼s©ÐËhoV‚é©2¤HÈ*±q4+ÒÞ
-W͵ÑTd[>¡‚GÞÑÖAÃI{œ…ß®’Üý™-O>”D‰¶Â&m<[]Š®ö‰é>ú+37<¤„è‰fÈô^¾êm•wCÉxLìböt»Êä€ýêš*ªR /ÁiŠo"„>‹À¹)»ëðÀè3º—~%LŒE¡-‰ Æ‘@.…­h«½ï­ £°§F`7aOüC2£Ëì…ÌýðmH~tFÝ+¡¨\=Ž`¯ÜæRóáÕÐt†#)Éa@­*ظQÓ¾¸Œz,â\Ã3"aøÄ>«S²wÃ0Ðâ2–ÉÀ±ms?7ÍÄ=gµx=&Ô¢çŽ]ºqïÌÚˆr~9j=ñT#cËÃ𗎽K”øxqΗª[B!\âp ¶8ÏN·¢/^‡‘PÓæíöÌÈWE•Õ`èÕPïæ^%iFkßÓ=^¨©bŒÔI džt#F•s «¤˜±¥á€×[ò |B9'öÁ-S‹IÚ
-ÈàþÄäηܴñ0CTÓiß…'äc6¡G6Ác››µ¸³–cQ@
-ôÒÛ­D 'ðLyÛLà[ÐIøK õÃÝyéíDó¤‹øk ©!2}ì"|õˆAsjëäu\BMù—ñrÇÍã‚ð tÅ
-~ÌûJ•ú‚3*ôýýÕLaîö‚4 ?ÄæÎLwUuÞm—ÀRšÕ¤U “ÄqI'Ý‹
-KÕ+6rÝxLÉÚ FÕ¼SL‹ÄF6ñ€ØÇ3Èÿðý¨Ù>k_¥zPƒabuÜòúNÖ€˜‚Ôö>ÁðOóz)RmêpÇþì"iìड़Ý<¾Fôe
-aŠÁò–N6\“HÇ „]§Ãûr2SR HTܳ<5ž=¦s‹9JíX#›Y[§È†V9vca ÏdˆÐ~׶ìPU0¸ ÑýNÞGÁ(kÔZI0'Yá±J +K9’x›
-—&¯EØ3ÁU¤Á
-•KN…œ ²æÀ¤øRo»„3q»x–“S²GQeuø,ãá;¤šÕ‘ü8ÏmPrD "mÒàDðwÌ´&ËK Wô)a¤A¬*=ãÁæŽÀ Rà)ýCyL9AFž åî%t g:"s
-O2`nu‚JP]M6M¦D/ ù’¶üvN¬0P Rrõq†±s«‘!BìõƘ·OqjJ`í pƒxI^wؾj]KXh5ª$2K¼Ym'Ô‚q8W¨ˆv—kɇõúö•,wúão6ö_ÿ|ûñï·’Â+5­*®ßßµ®¡’l¡þÏ*R€•Ñœ¹}4½$y~ OÍ,OEÂLšÚ·×éVÅó¥&BÓ|ÖûåëNè/-Ue~,ãÔhrWÛ”1 É2~µ¨(Î×rós–`wº)’Á¸ ØÕ*"¥.ÏÁ’!û¯ãK`¬èÚ(XôûÄ—
-g{˜pS%Ϩ1G " Ä&œë(úõPTF‘8¡eYZêá!½fŠ÷RIR¤ìÒÆwúý_“W »
-Q„ÓÕ8<k-“ĺÒ×ïuTÔîf· K5È6Z&c‚«Ýß âߺѴȊ.TÀ*=ßÕŸ‘øÏ€!ßNÉïÕDtŸ/àÌæ9ßÁ˜.øÿVÏeBËP¤Ræç×S4-åQÈŠ7œ„Ï MÉÓv¬‚ÍoÖï{ \•àH“­ý.Ü_•ï_˜ùñî*%…é4©qs ìŸUT¸DÀ¡É)·¢º8LY¿yò bÛƒ¶_¨«¢ úÌ5"Ü1ÿŠ ±ÓKÃϬ÷ó¶#›¯ÿÚð”2'}}†€ž*„E#6žEŠÏH%ô‹PQ—Æó½"vK“šc¸AÚB³W„ Ð8
-N™¶cúß!~°ØÔ82;C%)Í
-2PÕœÌ ¹á‰I]G xÌ„E°ÐwÙÅ*É™õýhõ‘2œ fG+)S_AO«™8Ã_Cö9­yÞ‹è²ØÀ`ßâ
-1ðß¼ I¯É)z3ŬSÛ¥©»ˆéãpCÜ£ÀM£Y<µÙvA=¢\nÓ*YœÁÌójFÚwÅÄ%è:žÆv|SÏüÑÀ"K´w!•W®Ï@[¼ŽðÓ’ù…”^-rZg­ÿÜ:i'ô("{E*Aäp–8Âa6CžTC‹¼+ˆ!p¨ö(¾6dÚ p¶A$dzTü}íÇeÄa0ùÕ·UR
-Qy‚W¨@ iørc”?£äŒ¶¹Ü¡–ÖÔ¤Ü /" gÕ¢ÏÁð’$ËÐÅf·É’V”ŒD—w ÀA¿ÁÅNU à¹Iœ¯‹;÷¢;˜¹4?Cgz(g¨Ÿ× ®xx¸¥Æ7ká­&Šû
-a§7W"\ü)Ÿ~.Ú)¬àC‡däd“<7Ú•†p"ŽyÆ1¸Ýxîç(Ƨw’büøwü×?ß~üû­²PX,– S+Vú
-½ïËà˜Lg¹8%:)[€+ôã§.߉/þ+V@Æ#º{Jz!/ÁŠ*’3ÉÙm%¯ÞH
-ñ¼êÒb¯äèì¨[QÇèù
-†Q ˜QÖ#Z9Sq?f ¼ÄY(ˆþî˜0ëð
-¥Ë"ò„ x»jx§¦.»Ç+‡¶”×à2}‹)™º!v«ÂÎK—ÂÖ¾æ W„³ž•èÈXU{E )ý% ázHÆBH /Gu˜°¢á×~DŠ˜ýåˆØD‡éc€uùŽÉY®[E÷A€ÚfÿZ"§Š0™­¹âÙ¬jã¹`["º?Ä‹q `®Ž˜-boÞ˜e`˜ž"¨¡ƒY›S+”ãÕ”1ˆ"1vÔ°-¿óo
-;pUÎw ‹jè×ùÒ«&7©8ž‚×ù1Ä«%•É-@Qdƒ¤{ ÝÕÄ£tyZœRE³¸^ø§l0Fa2 ÎÁÅÁ1¹Fûèmã~Ɖ/u¬%z6\©`UZi7ŒÙax’Úç¶%AýÈy0Ž<›Ýwh)ïV¬‡.| ó5¾N‹|kÁõ`ãqxt D´9¯³vLçF2Hú&æHz†ï7Õ ÔBH¨ónÇw%x¼ŒÍ“¿‹/=kÎP1H›Îù1[ËxzI‘Pzb!úßôl<%wûW\š²D½ÖB-»R}E(¡±®‚èÇMWqN1¡€gU§P˜«‚sÕ.%ð“ôÒ¸Î圬.ñõíyÞ†v+¢2 E#<¯ÉÓqÆP
-™"Ô…s®qh £’M×) >…‰Öè rˆkѲ®y-1% !þ¶ÍŽìFÒ«I\é]óËkXC¶É @çB¡bÃ2Ü.
-ir|*+D½Ük4ˆžícØ'¤ ee‘¢Ç¸:,Ïô’,JGÛ¼˜ô]jê'Ž©ç,¿ƒíü{טW¯þÇE¶ù¯*ÓÖ^ï"öŠÿoEfd_Znœ0};(EKhÄDv|šŠSS’Ü]>%?7*4%‘µ/ù›s€1ÛtæáZ, fÓê^
-H‰Œ—KŽ8DOà;Ô&AJ¤D­=˾…Y•ï¿G}Üp¦H4PíÊŠ¤$~"‚Ú¿þS¢?†×&cHí­|ýóÃ¥>¤»-µÐ è{¿õÖ½Œ²@M$ji&U‘þ÷ÃÆx´æÅTÖ&Œ/ªõEÝ¥ý~]\U­ÕèóVò(­×"R¥ ²ñ‹ö6š¶
-èvÜG ö-š‡›ä‹¿¯ þPn Eø|ÄׄD‹È<™ìŒ³2Ì¢™õ é5ZQsñºó]ùµzá:¾~Í£úhãª÷ᵆð~/3L„×(U¬ìƒ¬!ÓÅ"â+³#\½“}7ȯ™BZGt~ôxGûàWÞéõUlTžMÚíëVÞ4¼·
-¿~^«ui4+â­Se~&(x†z”Ágóåƒô‡Ñ #lCJË(•Õ•ˆF'¡ãY9vúÞµòïQÏqª‹Q(VÝÙÕ‚påÇ„(!y]›Û‚t˶‰QÉÑ>ŠQ‰àJ}ôÝ9ÞLIc¡]V=¹n–¸é°“B©L 6íWÈS“þüq]Ú=¦.ùY¬ƒ^Fðv܇ ¿há>]O ¤ýú/Ðö`‚zĽ4íï r/•[ŒÁ÷/ „ÐÓäRRÂKÛ&$¬J)C›D;eéµÊ7J›å¥ ÁôÐÄÌÉ>ª(g:›]Ò³&͸r;³¨A®³wÚ„Ð@Œ!ݯ^ßT÷’Ò‡íª3Ù<jX¨fH{|Oˆ1O…ò0ÙöI
-3ðÿÍÄ8$Å9c„ÙUf—,À3Ž¯ëú`¨m_7›¾R3'ã†èœKNœ2Ô}Ò3ˆ”rK @mÆ™¥ì 8½kžõ.Iã2è×AZbC8&y‹ÄXìj ÄÓâˆÙéf»t’ÖêLŽvƶ¥¬^ôƒþI»ËlwîÀ* ^¼çïÒJoð^Úp¢5­•Hèê°H…î!MUp Mim7a`ø^'Y›¨ˆá‘nÕN»›Ó…½C »ÝÃé :Á˜Þù:fY(#9j7ž=6¢ò0­±tðÂÑY$ï1Æë}åé?­4Fás 1þcKåöÃk5¦+ÛÃ÷QÅPmÈxï~:%õBb—tû¦pM!ìEº#ã¨DãÃ+¤Í2HvKüyÕ+m#
-£ÔbÁ³—a/ñ¡3áU§mLˆ'Qñ‰U›¯"[*Dè|ë<*RBhp‘ i-<m\þ•"²¤"º`A2 *pgYÅDNÊéqÜ™é ôÏB3ƒ—Xí>ÙédÐHQ¨‡)ë‹NÑ—D ÙsjÔ_e¢ÒÉ,Æeúál|Øâd{ mÌV-»“i”YRd·7t;­$±.*„©è6’z¤Ò³RšÚ¸ 0b.°\È:Š00¬eÑÚ›8—rŠ ÖáÜQú³·X·B2é&†íÛÐü±‘ )gh”g®aÓ;Ù1¤ˆ6ÄJ-Ne`ê¦tg'FÃÑq¡ˆq…8›œ\‰-ÃgÕ}v_S¥\@ßW‡AC$T(Úì%CÂc›þÁÂÁpµºfùuÉÍů‡»–läÎ;wvÒA·ô‹c=*©\Rö¶°ÝFæ2c$×»Jä½TúiAÄIN Ã%
-¤!w&º”ãr¢’_ú,:™ PŒÛ‚à(1–€Y[C3î;\ƲٖÍAðÛ´ä=,ÔFª½´íc¸ JHØžÆdB á&éhfÙO£=Ù„çQ=“9G\|7üÜ-g϶†°‚`a*ÓzRL‘J…7ùRYT“„†´M2­_MŠ^tñ JCÄG–¦­êf‚WñJÜVz{[‡Yö-Œ_…c##
-‘Ú˜B̨|ëÈmNÝ÷y=-'qZT
-•FJ‹Œvs²¿ß€^Œ³¥pñ<Ìx”ñ1èbæ_ûôdA¿¯ *‡æà¶â‘ÍVSòR7Ù¾ÎrZpÂŒ7|<¥”wð×
-5Gi[JiLƒgI%ì÷k…5Fï¬åÔ—I#!†Y\f³±¤$)ô7N‹ œqO'tƒüšILÒÙ72ÞÄár°QŽÃ ³ãáDdvãk)žŠŸ×z]ZàsÆæ¹¼ƇÎLÿp×zDª4Ùàê’rzz] ¼x¬š^Àýÿ{Ôsœ6Ydò{mÇc9”¹<­šS !š\c×ΠqXr´ÂÕê8Ç^²H‘F|Ïtûõ¡Yt^ìÌ<“+(íWÈeSz]¾<<…
-)û¨\p5žãLA¤7Ü!f‡<9b¼ÏaoÅÅaR¶UÀí°L,J«3K™¥¦qémÓ NÇ-`®Wü•iÂ:”8G=žõ;ïF¿°²5¡¢Êþ•Ž|åNÓÉÒntÖö8sº!'Åv•r/é”Ví˜P¡L3,G©³Li†y"%~u6ÂþBàôQ}¼sH´žnÈÒ‹^â0‰áa*Ç>¦ßl¥¸ó aïµ\ ½ãê¬üªï£FzkØ
->àXxœEE¤ÆOfG#¥;
-£Ã.
-áÚÖHÁÊ Ö_·üYÀ"SuiKäZ˜+šÚ– È=}9)ÖÕzeš<,‰Ó} ë‹Ê4ý$#…D‘7¼l-!-ÑßA‚«‡"O»ó^18׊~ÁØ.¾ÂH®}ì‘cÛ<ŒÖêñT­ùnܶQÚ±0P“Q\Ùi¹g?äb‡¨)iïÙŸ_7I}1f2ŠëÒ1Þ< gQ+½<aC3†Âa–cÇ) ]ÄOã~S ³–cÚµq6-z“„ý£dä¹ö¶•7m4[S1—º° Ès»-/
-É7b-ºže5Ò¾5ò ‚Òi÷B"œ¼At²rá
-ŸÉ=Ù,š^ÜŸ Ìáa1Ù ¥hòNü¾îDwŒ^©˜œ¢²ˆGW¤•wC9Þ‹Dig«Ó…B0e¥ÇXù)§ YQßyø²~-àíœ{°ùÑ¡%Y„r¸Ý,ú¾fä$°Úye'“šà >”Ú—Ç-¼½@CH€á Òm¬˜:Wý"k ÆyVDÊ“µíÔ¶¿+¸¨•aqÞE³“èfµï"¼Y¬jã¼îêË g潊ÈiG<]£èJêþtØ
-#kSµÄ#¸y\]•¶ Bä³é¥úÕzfq(c‘ëÃ9$ô„°s:OÑ6T¾ÅäQž'±×à ô”`ãR>ñyáoBeš!ÌЦÊ$QÔò1‡äK‚l´‰ˆÈLåƒ<m>ƒ¢H óKØÒ¢‚Ñ¢ÑCèË…l½A£Aƒ$%¯K\:A)È¥ÕÇÖ^ÜãZ:Á®xíÇ £i=ÆýxxÈ`aQ0“‡¯Á’³
-I*‘¶ÜöMØâHò¸Ýtå°oWÄäOßò
-û[žæÛÇTµ™’ÈÈFV0MÞ¨c%)$*óÿyD³ HUÞ ïÖ¼5O"ÅBh£ãûÉ”g•}±í&ô8F)Pè{CŒˆÙð.$;&*vÈ?Üóƒ†ÿúQhÂ>b’¹ZjÎl,n`<z)Ù½ní lU-6%œÂö’fïB
-†°_E*×ÓÑðT·N)­kýA9âÏâ.¼ošÞeR^1П3]”®pÿä‘ú’Ï }ÙjG†¤¸º¦ýº¯Ê‚ˆƒ!ˆ½pÖ¨áT¬ÁÒ…¯fD\…Jaס% ÷ÌúYîK2¡ BRÕÕé…Ÿȸ©!õAÛÙh°&mƒXÛ¢Wb XT/Þâ¤Qç!)dÇê@3˜<]Ì…ýá5
-Tá'ÍkëTÿXZˆV*RÑÆ !¯2çdf´oê
-ÕË
-§:b㨄4;¥±òtö¯w}«"1¢šã¢:1•^ç1BݬÐ_Iô™YcÅ ãô›Á ”–ÈÂ{QÕA
-ÁŽDô3RÜAê|`Jð´jR ý‘%—‡A¹Ô8Á6ÇŒ>=õŠ%1FÕz¹{Væ¾Ï}UãwÃGo¦AÝdÊ&¼!³Ùå쯫„wŒSžðâQȆ¦þ}
-rþ¯Òm
-ßêkJ µ•“Ä®
-/“@¢,ÍWøÖHD i´èèϻĩIì&øÏîªaS–`“ј3_ ›Ü‹Ï•ª¦áJ<­‹ÈŒ¾:yÚ î@ ÈÎå1H7±ÜX“Ë qF÷˜ñ"j0Í£!?þÇŒ×à`8ÄÓR|xKñ"Â:ìg¢5­ªã´o0?ÂR'ò•$þº“Œ»2ZhrÔñ)è.ñ.è]âÎ’¤zøõ®ñ R@{`ôÎ]%¾i7¥ßØD#ƒyO'` ã/r©Þ¸Á’%rýÈ‹k’œ2gWâdþ*)Îx çMâØ£¦æ!6_â‚Q‘G¾4ï/
-€­Bñäj%QÒ’iBï;&ˆb_‚Äa"y–‡/%£JBdä†?ªsÛè`—",
-ð¯ÝÄ×Wø³M6:Á×
-ìmCÙ:F”j×’ŽD |ϵ„eÍð4­8]E”gP QÏî9(-ƒ0gJ”q+" ek’t/È/“#;n%ŠZ@Ú˜×Ôò{¡mÓÿí?Èb¨«²‚½`H|ÌÓÀa*ÍQ¹ž¼ç€ åÍÝþgPC§À ô­²vÓ¢ 2´(S©A…ŒhÓDàj†+MVÜ °uÊæÓ8¥t:Ùž:ã]YiÀ"_ˆ¨c4ijŽBL½# ®¾±±‘…û‡7tÉuΖ`§„œ†"I—¥};çÞóÇkž³dõÁGužƒü¨qò¥Wÿ~gk´`i/XþY•'¯ÄVöà¼ß/A~ñôB—D
-Yœ•2›’ò¥%ÁvÁ6·íi‹Ÿ<pº>®¬ PóO•ø^x
-\î@CcÈžœõQnàÒ EÖ3ê} ]36Р5¤m|-!. l‹%¦Çjp€"¹8¡n>ÑóŽºY½S{&e–ð„–© â÷²ÿ¥L…ÔÁð$HÒ‘³Ñ³)M’ ¼rB(/›všó!ä€ë«‚Ÿ²—ùtëýçKÃ=¼ô'/Õ˜!‰ãx(Îê3*㤎åLÚœÇø*¹Xj^å(îKR´9Jøa3Å:ËL*/Âð¡)q OŠ*TBȼ…8:c¾Ø20¿¾ÃÛM¯5O»^ÃÑ)—f>cZ…`5Aàž¸&o(–†2îhQ‰i`ȳ2m²˜
-™á%Dƒ³õ²2Û4q ,XW,úÜAœI]µ’—ÀIÒÛ¬Ùç}û[ÙFÞz”8!øBWæå2Hã,[ÒÊ(žx.8Ș„k|øg]êJŒ¢g/ñ¸%šÓ ÏyoØ‚Æ=yFA
-
-‡`öQ‡c¦´¡Â¬xLd- „pÑ(…(UäÜ6âAlñÔ¼)Ôp/hVBFVv.²îþ–†¤Ôi¥œ'3y[¹Œû"pK;;.
-Gõ1Ö ÀÊ2Tgƒq.[3SFáM ‚>¿±aGíJéóì.Œ)Ž¾Mº† ö"”^…µ‡<–¦I€©Í0n›ò!”»¬ }9¢ ’óVPFë©3ñe´(DýÀ3À­ÜK ÏÉ?¹U|+ªiŠÓ­Z¨ÈÖHýEù!oÝ\ÔÐÎíÒœ»Ï ±ç5Iöÿ»Ôðr± `÷úvPÐ4®›h]’$
-º½‰6‚?$wçÍð*
-jkêG4dE:¯
-“à†éWýe5°ùãŸÜÃ?0‹L?v©ßž ±ã÷û%¨u„žM¾öC!½“¾ f:mÎ ûeAxÞÓ6Tѵ~™/©Ì5ió&AKÚ¹T%줈âi2°â
-ΙŒ>஀-âMBàjFiHºi!ä¨H‡qêXá1ë'sÈﳓÄåÏÚ@!¢'˜¼‚Ì>éØrŸG™€ ij9‚ &Û5Œtl3fTˆÒÀ,°{_fSv )UZw5Ú$± ÊæUˆ6€N©¥¨Q¥.*Ù£A /é¶Ñ’î® ¨i)IAçiDÍonm¬Xkîfá‘Lºâsž-¼æ9:AV|ç9ÅG!_ZõïwVFÛ•öv¡q™ )ùל÷û%f×Óá$aW"’@ÝFr¿pg…¡¼§Hæ
-Ѷ!
-*ä)›åžA·Æ¾¡¶ä_éá8yaz AÐåËB° 0?Nêð D8³uÙ"äWž8c‹2–¬®„ˆÎŸ¡ÚYcê͘H€^Z=amØ,Õ§DXy‹8Ív:#ƒp´ø& ¥\ˆÈ~½¥ËkäÆâžùìmÌoÍW3‡jcH¬ù€&ð­JÎäŽÇ´Â"
-"c)¡‰'3(æ3 b™À$ë†YüPdAC9WÛh™i4»FqG0îVq»#»ÇNPÙ¹ýÒ.wCÈ$5–7&€o“IÓ³}Ž³€7@—{7SjmžÎ ’¾' BNgE:jÀL¾CtÐg—B0t'iàò#jIiCQ½lJÛÌ}Q´Ÿç98À®zm²‰¿“l?3€Ý)ùÜcÁ(tÃÓ¿ÌÁ¢68pHɼϪ»Étið‚cüA¤ÓpéTáêõƒA˜-x1¿)/‘ Íä3ßfô%Ÿ!Ýçi'Ñгx ó«°Q$‘ˆÊ# ¹Íè¯QP0íhòò¾ú·ƒ‚ |^÷Í /¨/×-è ÌÖï¨þIï7䙸Ó@<* .þŽb8‰&ãÂúÐv¼¥Û~ŒƒÔò‘eG`3/ªØËa’³[NZÝm%ÍWÑc%çmcÑèìf=‰Ê n<ê'„QÒ8 ɶ¤+2c戤„œ«*w#0!°V_ΡS¸‡–º`$~ É0‡™)·úš•…¿ŽÚ_Šc$ÄBzÓ_*|¹5ʯzMDzß7ÚGô£¤ƒyéLëÖFϬ ~E©bUäîWÝ«cÒK…
-/Àî³w&›‹ºäQ=ú_ Æóºÿ3^.ÙuÜH]÷À¼ƒ?cy¨]hJïê@âY¬B™r©Ûì$
-ÈOäKÐçŸÜi)F$'äUnÑU¶‘3$ë懘®,°EÀµ|dYÐZ¨©¹w¥>4ИGš!òj¨:Ë|ŸÂ"¨$˜%‹/ˆŽ>ÓVîm¡wÒ®qžgö’ä:Ÿë4“ÅúT˜¨
-Ç3¥?0[xU™Áv)Î4Aïä`ð<†FMȃ3Ý@ieò´©g@â–Ö¿Ñ<„$
-0;Èó8‘Ïųό¯eº¡=øLšÀ!¬ãr6šLOîr8=8?0)°?: åÌFïÉ1!8u“.åê«ù’ ÍôÒ~:ëC¾ ”›è”à^°7Ò׌‡ç˜áÀ­ˆøÒ1–¬™ Xʤý˜¯ãH´ñôŧ— ÏcP‘x²²äbj_#)UãuÙëÙ…rT&å8Ö„ZEPY¼R­€ÅäOJî9æ ¯Ê¨..HÅøfãì5àü”ée'ôm[¤ƒÛ[<–ó²:¤„‰ÙÞ\ñxÃ)¬¼›‰p^A«—¼"ª!qºrÛí‡d±ã"³÷ˆ³vjK”!m`ìQ>³+«cžSHe’`lVˆQëIóÑìÂä!¡R`}é'sÛŸZ×1­ BdÐg¾™`nœÛzÊàk­ W
-I…©+ßú¨¦æQ˜µåÄýBÀœyöŒ!¤;¨höËh­Ã'
-ê·}#rÀžíêÑÓV½y¹¸¶Ä8–KHKdQ%ãœ×0ÜÎa%¢æÈ'©¯þn¨ŽEÇßÅVÎÓPFh§†æ¥œÀ'UoÓzˆÍsC3o™4ÁÿONBqJžF´ËŽÖ$Š<„€-ˆ™Òh‘k» …”Šg¥tùô˜ÞQµŠ›ô¦#ÒŒxSÔz‘‚õÌNÔžuÖbøÙPwô±3Vµu÷ÁOÜX;±ØÎoAØÐÁ6–Æòlö7CèX"AÐÊöw£±ì}š*×z,å%du k†’ W{8GíIXLïî£JÈ YÛ
- ^Ø×áïΉ|W“áÙ’ßZi™`Û“
-ùR§_212Ša‹Y·Î,ÖQÇýsŽÖuq¶¹ÖÀÓò쬘6Ù¢®ÀØðKˆŒÈÅŠlÝ3Í6ã ÑÞ9cUqÎEvyBœøéf$ìé;$uBúCÙïÖ@ V6$÷PÔñ“ª$3o²•`j“¸x†TQ‹°´nk7ËÂÌOÙKrÊä°8¶Åu Ú½­Ø<Gé¥
-­èÍ“
-ßdEÖd kY»ÂP·€?(žìc| ºTþó!¨k·€R½öõ.œÕ
-–ÔˆmöñâÓ8ɪ$Æ¢”Ò•­X<DèK™ Ø@WîÇ0DM/JaË
-…àA8›˜@“¶B­ºQŠ"‘˜ÓubÙ254 $ƒ{ûüëô±.ÜD³FTŸ}œ®|Ûë·—ð€2m*&ÕÎÇP,Ž´ñ ?‡*q=îæÒ)êxýÛ—7ôLý¯Û.'¤Va¶æÂ5üôeÈf©· 7$ TÜK§ñu6={¼¬Î¹¶êÔÙÞ4Ö¦ù§¾iäß—
-–³58½>‘á)ˆ—&[ËDø
-Mµ¥ÏŒ3åÁG’ü¼Ç3jÓÐ7O#õ¦ÌÔêÞ§—†vE¬. ¬CBÊ”Ur-¤a|2U:j[‘EŒQÒ8´.)ø”Kkîá¾Ð$v¬Êq¼Í©¿¼êÜóƒñJ™GÐ!C!4W·¬1ùCh^þ%Æ)ì;Á³….ŃãXUÌœ6ÓýÎk£p Iz/Ü FAŠÿ- ³ãúç…ýŸ!^\áFPQËL
-fÑãlÇYRˆÚ£:4§"ø!(;œÆÚ¼iA‘m¡V˜
-Œ?Ü%—#e¹ŠG}㨭†N2àùøÑÓ1x% =OÅŠe¤ñDæÛjœ"Řkž]_"Oð6]×¢`ÌÁÔФ̩͢‡0b¥5óØè;?â6‚‹c^`õ…¦¾EJAû•)gV²˜¾©ïqæ½q>_ܶ“fåCf_Ï’ÉQ–ÁŽ<÷”Jt%Ñ0{$ª°/¡ÂOÅå7N¬)%Ÿ>пÊJ¡Ç)zW7iû Ê#íuÌ/äTSœ¢, ¨
-(n?dHmq5߬
-ßoC„?“β—qÕ/&ñÝVU)1ýµ\ÒÞ/@˜(Vœ;›¸»¡åD?ö b ö€÷”rëê_vSçßÐÒ\GNH #ëQª©?Æ i€*¨Ù²:“Hx†‡LH»=·s1:Ô‚Ô‘EªôØH
-N ‹
-o¿ŠŒÄó¸£Q³Ó PI¡ oåT¶Èj¯~ÕÌ’@d|y0Ít«d™I)µmÎCR&î.ì…‘[˜Føa dJ”O‹ÎeƒùÛ3°J³ËäðZÒ?Ϙ„[™=ñäL¤šºšHâHe¥μ¢ÈJ…t[Ž/J]Si#¦*³4äv, KVvg §Ò$æ}ìº-BG‚h|nöé74Š°Ð§}ú3h˜,"¥øp+{r“Ä ;È¥õdÆžOóê
-†(ÏÐ@w3+ËÙ9‰U¨)5cƒ°‰÷AªÓÆÐHf#Zp„ jîv)Vqb2ãi”„fþ}dYœ¥~ËÞB:mò؈Sî~+ÀŠÆ¶@ðéÈ÷êLÀŽ›D¶pŽÙ,†ƒšì´jã|ÌHD\Íl2º#ºÏ®eúU@*
-_²½“EÐÇ
-5õ¡\©úI¼).Î?Í—áñš
-ƒ)Q £
- ÆÚð[©šèµØ‡ªîHi;
-H¡/”zg;GÍÔ‹ð>172-”kj0¢|;‡²Á
-ˆÄaâ¬ikÌÍ6³8Go=º©©Á‰³ŠmÙT`)Ù%µ¯8GwàH*ÕG‹Ñ5LßbŒ#¡—6X
-0 †–`ŠÔÍ3è`g!±ÙvÊÈšF\Çêã‹uùÅÚýiÄxÛКxAáÉøÓÝ΂2$I²›
-ýˆ±•(œÏ>@eÝ´[<‹7jm–‹¦»#jšeƒ@<Kê-§î³Ì0Uy pŽéÄZ¶c;†5Ó PYSAdfÕ˜,ë oÁƒk¼VœR´Â´Ž1hqEFe,,I”Ñû’ùŠ5í$œ°\ ‚® ÒÆÃßëØ,9†n$üt ž4ÉÀÒyÛO@x
-yÃ:zq NÄÑŠ— Q_à®´âÞÁ=[ÂpAhÔ7L$öjA\ôR‡(;|PüÁ>4ŠîÕ„RaÍ‚Ù&ÃTÿ&¶•e•JœB!qßXÕE!gÜIÂŽLD˜½ß°!åÁ‚ïÏ1Å®aÔÜæôƲ0Ôž¢;—› ¸«"Eíz×ή[Se}álÆÒgBσ/ÆçcdnõøÏ{‰ßÂû`ºrŽµ‚”5-²IˆCÒ$±)©Æ‹39Œ•…ð{èG22|Ø¡~ø…b`­ÄZ(åA†Å*ˆ_%¶¥tjÞÏ)2Š èžHk|•2",/²hN¤xšƒ€Ÿ|k®DÇ5‚$ #y°vNá1¼v $K{ÙÞuD±-ÍÃV–AfUfŽ@¨fÒMêÅ·Z hI¹ê¦ª»^I²ˆ}OÐãŒi^*E¦ˆþ
-*ÞS¼çÉzLÉÚŒ D[gƒŽ„WLŽiÞ¤`%£fšXú¡foŠ3çôñ¯_²‰ä g‚œ³;ü§°ës “Ðâ9J
-x`BÑñ$zl·p칊z!*ÉÙ²0Û¯
-Þ¢»S†ÍrÈ$’±
-|GpQˆ‡¢cl3J{ywŠ,ú@P)¹Ybœé.ž7Ÿ’Öx"Ã"26y‘ÐSøžý*Îå÷Y‰~ÅU "iòj -SfÌ7Me`¥ù“ÒÙ ­š‹Ë)RÈ,ͬõ V:á2<Õø✒sR Ñd‘ËD—©l5„Mºô“¬ûg9mI5ìI´
-%výÅ—Aä±0Þ>%^Ë‚ Q.4ð¤B>Èò<h<0W€X%¨ÄúÙŒVP‰ÕâEÑ,ñ —[sÎá—85¾bµ3þ¥kVXáˆÙ•{O í9Ûy¼Ûâ/y©*Òô¾mIœsp…ЉœOT°2 0 þg­`®‚%a°…`ÒZ5ísU£`P'½:=×ÎìªzT¿
-³@#à¿q¼IDzN¦›òøUTBÃC1øqñ"j}hý¹éR“1¤öÝmâäd¾7°ÛÝKýG&ï† ÑÁß4¾ÔOKóÃCÀf³~Ðû 1ð­TÙ4LÇZ(3`Ç«ˆ§‹&;‚aXúöSå_‚nqw Â
-ó<|E%–ðuÌÓe_÷È"ýSN²HLÌÿ`}=ÿ7@ˆçb ¹û‹¶<€>^©·µ¥oØ ŠbGÇÜóòªÐ¥š_Äb5+Ì|ßà'Ì­}Âg³êûE˜¿z¬Óõº@ìbf*°õldU1¯  E]³¸‚ ‘Uq®Øø=è|Ÿ˜‚‘ê¬a˨”j‚ ˆÈ 9"]Ä6Iº·i…<œ2Él:Dã‡1&„Éï
-xaÊa›ÊÆà TÝÎÑ7Ê®Ê|:„ªl'þÐüZѧöŒP@Mâv¦…O(}]N«à5[ç<%Y‚ ¦!):»eJ‚ÀÀGã“W‹˜Ʊöæ P·Ä…ç(~Ó´€HÏg9êÀVãâ4†P™šÌmõ)~ á?¿Ý@ó­Mýö¬%'áç»
-øb²ËFÓoI£Ädáú·Œ Î!¸Z]õOç¬?&Zf|y­EF†ªç=X$Ö‹6ì’ÒBª±P³‚§m&…õk4ö—®ˆO v/¯[›¹ßÎÑL°©Ø>ÙÕ}y± Ð ÃŒŽ9éeŠš ’_ÅÏü~2´ý<Y­ZJNÛÏÑ︎Ñ?W ¢I³µÛÆ<¶<›ÉzÕ*³=ÛÙzGЬÔWa³5GØ<_©FíFU.ÊÑ©A2å/ôìê³k¤Xv: ÜŽážç£ô|ZâÅ¢8™'r÷þØﮘ°&HXCz=é–bq‡-Ç-}ÁÇWÐOôÿñŠj¹¸55ºü—ñrÉ‘cWbè
-¼¯  …þc¿4pGöþ§ï0$5\™J¸&îî2KRüHF&)Œ¿$ ¡N^<ûÏsòA¥BÁŒ,³ ç?8ªèîKa¿0í]Øþj‚¸…x¡Ô[ÛÔñºA— üþ KžËŒ×E-P‚ÀZæV¦5„¿úÌÌŸ²AóÐÀ` .ui J祩~†¹]öû“͇³VqJÈ&Ú‹¿‚ŽÂRA3(–f
-РãÓÿù&zÊ Z‰âÙœ¥DùÔ*#«ƒÎ~麎ž®£F"Öd Å‹ä÷n›œ`ߎ•†éúX DÄð"‰ÛÇ Ãu9µÜ$b#¼îè–‚Óuÿ©0% (2u¨xgLOø¢^":øó ©*¢â§Y X3Ã`líM y1œª³úÞÃqô*‘›çÐnÊmF &¤—B\²l24‚ȺUÈy Š‡Œæ`sò¾jÀü8QŒâX $3¶‚ÛÈ‘sX¼Š|œ<¯-‹ÑŠ†úé$‡D9^ *Ô‘[‡®*/7™¼¢æ D0¼8R^(HŠ(‚ËœìÝŒ\ÀKyä4!´tЇ%Ÿó&L%ÆÄ4Wñá˜ÆˆÖ!‰e¿˜o4\>69„Xˆ ÉvÃ}{ï—÷ oaKP½ÂX Òñ¡ä
-ôÓÛ4s Þ“.Ýç$£êptÊÂÅhs&ïßù Zã0"ã_?ΠJ•AèÕ»”Ë:žg”CYï©‹€“Äv—ù_<FEnû‚°á`ùáÕ6XÞŒ‚#«TnÀÈ9†+®,Ó
-¶ú‹¬Öž ¸f“æN °vu” A³ðÿZ
-¼Ó3û’»#æE÷©z?%¿h^¦Üýa?†”_­h•Âm–}H­¸z
-@ׄWü!ÐkÜQÓ|,ŽÊ/~Jq",²}$f£¼pK™´E‘ _¸­B*pqˆ¢‰¯ƒF”;Ñѵ•ö÷s ¿=PWO„‚a™d-˜!A¬µCéY‡$#Å,®›b"3Ì%fy%XKÑû\ôs˜K5:f?n °æØ U§z:­â ° kŒÚj^¥½ˆ,Ó’9§»JÀ
-J†‘â¢Lƒf-³ÉC j¸uè;‰ü
-»²+òxMã{ÅáŒÖJ‘ñ–Ôs©=û9 Š†3kfßòœR+ R-Ú˜cl+p£4l»aq¿H„X@:|•ý)ËÕs·#*_‰½‘vg`´ä¶¦! 
-UÐõë †ÎeL‰uQ• Gù~0ÇÌ›+0N¢Óùù®À‚`ŠüZiEÀ
-†e +7‡s PLÒñ5¼0S„<µ‡¨4l1ÃÉ`{9&È ²Ë<bg)—Rt‡ @ Z–Ë\§ˆ 4ÊÙº*E²ÌÊ…ñÙM€ÃǨÍs’¦§Ù%·¹qD¯Û˜Ù=YòÕÅe2ÆuSÆ/ L<a¬6f(é,z}òs¨¢lºWoaÇx°âîîAš[3¤‹¹¸‚ŽÙ^z ŒGÒÊ“‘¾‚<Í.Έ¶´æ3|¡`Hª¨ìwÈ+Oç
-EqîGî¶Y®$’Íå¨
-Øþí `©(šGÆöU7PèjÐEÁÓ²ÐåâûÂPAór7(TÛƒÎÍHÖ`Œì
-:^2¦ šJÿ焪Ð
-Ü æuHäpT*z
-R„†#H‡àž“R¼Lž ³Æ |s)¨–¦¶ùæ(7È(e8Ýæ9¦LŒT&$ÆqâW©ˆ”¹µÎ?½¯÷ÂEv,aÖMÄC+t—’™$êZ}Ø«Ísu¨§ÔÓ‚° @M8¾èH â&貶!,|DøSdqˆA¦YK
-ÐŽ²zÃË*„·íòÖ~óªwÐ4zM.­É?ïqÓ‰4‘ Tºw Ê—ÕÚ4"(Ôºé=7N‘×r•:ÐϤ«hž-n+å Îôq^%mgpèÙy:ùeÜ®àrmcŠœe 8ÒS“£ƒç´Qöq^4ÔÆAÞþ-jìàËEžNÄ&†ï-Bþ²L¥OH›BÛuìUî–@Í&å³ÜxÉ¢K~ÍáÅò<ç}½VZ^ºt?Ÿ˜âdÿoŒã]A6d¤PÄ™ÀwÞrûO6ëa‘Ò?øïTœ*»¿ªÖ
-6G8¨ïi$ÄÀX#¢š¬
-u²2L”Èòô~›0ž1yt…­Ÿa0-ð%Ç×q¼ìC™Ä;þŸñ2ÉŽ¬ˆ¡è
-؃WÀ‰¾CvÁÔìÊ}
-ÉÎøE ]úÑI¯ËÍ,E·¢ª‰!$Å”˜Ö×ÅyÄ|ÅšM.y(ªl—5v<¸Ó–©¬1IPiûB£Nà±Ü`½>Àç/´MÁ®fF4CÖ4 >«ïêö·ÕF¤f)]URD%–‰ØÆ^ˆT—ß#ˆPÈÈL6Ñj…HÊË)êÔcÔ(š³Ë‡´U§ñ[ŸÁë ¿JXO®VáÅå˜K­ª+±Ír 52<|:JÕ¯‘dÆ}'K9ܨ÷Ðl%’2Yüì$yO]vØpC@Kp0*ÁÒË®°à87o‚5!·øNÌ7¤Ð¬”áv™ÏN÷¶-“ bôë¸ä'bÚëû¿N[“õÁ*×Û|¯Vè
-kD5BÛŸVó&ÚF9XÙÌ͹Q[²úºqB…›ŒF'ãå˜)
-&(Õ‘t¬„•6Ô
-/
-|è
-Å•eB›þò>ÅG¢x<vc|Ú)²bð°eÆOŸÚ²¡A™Ê3„ä5ʦŠ•ˆŽï¨:[%š#ñz—’!¾» æ*ch˜¨:ØÄüì),PÝ-U °BÓY€+Á#UOÌãòt‹ÿt»•ˆÍuvï&ï$Ÿ
-Â!Þ³ s\Û€ûhq,À#eß*wøGŽög/RNÁÚ
-i½Šx·­ƒÉ&5¦0çÄüòÒté-Ÿ ]Lb‘wýF
- ƒÑSs„¯Å¨Ó qø’cäp·k¸–PB~Zˆ *¹|šÉ,ð^¡«Á˜n«®<÷°uT±í£áÑ”³3 ¼Z–¤„O:˜ÒtjŒe,‘ßJž‡eäƒà=”3m] '+Gæj³+\¾
-Kùg‚{M}í,Yb‹Ÿ­¸Œ Œšï0Ü›,0ôÐÛ±o”p¡$ŠÒ7Š£g+vÐnÅaIŠ¶œ™ÜÆ:Ðë2†[Ùç+>½ÚvÐI|Á8´ÁÛ_J\…1$‚1,ëlä/Á‘{œfMÅ'šœëA0Vš!R"„± ¤‰WO1‰<Ëœ;Y†=rðY‰8¸vÄ4Þ˜$åñYÙåÂoJ䣜é&{§Ó%H Œ
-8ú´"ì\Ï`_"AAItJNí@´,A¢þëG†l¢<N yLy—¼ÛCŽí2c0j_\È3šÈý›ßœ9¥àŠ÷‚•Yºµœ¼ª”À´Åí@F+’èiÇNÀ‰ß˜äK !òñêõl5æMóÎß:ؘïc'Ùš/ïñé{ƺ5ý[ÆbºP=l =¸©Ÿ{2¹7áæ¼iûˆ—$"ë‘w8%îc:¹óÄš’"°}¨„¸QäHÛáüè0
-Ž„%¹ÂǼ£ðòL/ò:¨‘Ä*¡å ‚-w +ʱÐE
-¾¢’™àœëav¤D8¥¹YTn’È6»’£ó€‹Nû
-kžU
-)vm­B¯ðãÈÏ‹Õ>Òaå™Õ%èE
-Îßå&ä;¢Ü%õôe¸Ó~r0¶‚¦B®PôÇb0x .ÿ=×t@+"%¶Ï‘‚£ˆÉX0Ú !UB„]O:#™cy)2!Mï3¤â°H
-h†lN´¯”DF]6fû ­)i´"·R©Ÿ”äöû?®EM«c˜ÛI ™ÙÕHû\AóJGwÛ4äaòx„© x '7Ù+Óý J…"l®Þ*²§µÂ9F·ʘH2‚6í;4“¼ætðçÁd$¤(Ô‘ç…ô)‰t zS¦÷»($‹K8åtÑÚõz:•s`ï¼7gÑü¼dYÕ°Xi¨ (èÃÀU*èKëäU(|ÍÄÁJõf4©w'm1ß2ƒJ‚oþªÄ¾ÀúÅÁÁð$-0š&pÙª4ƒü¤&Br§¥O߯üdR  ëòÔ¦8š›'ˆ¾ŽÓ‰³ w†:H7ß™T’Á <3nÎ&Hq=*¤³;›êÝy{¿0H—Aïü„D$ð„Í™Ÿ‚Í)B¸A¿Ú&@Z½˜B€p›ÝBª¦âãBÏ"L”ºÐÂ}Ÿ„÷8q71øIUmÄÄC“ɾƒÔ%I"×Ù:‹ d´;k¬XŽŸp¯i<éÝëô/ïGq6Wá³u»¯ Ÿ’¿’3ê©nÒ£yG˜rè9úŠ ¸]Æ ïaàHD³È¹D[Ó]¯„"ûéÝÃ+™B¬¥ØU¼”ѹQ÷QU>þ[-+¯A­=…¾1‡/VÑTôÞš ;ˆ÷ Ói<.$¢^m3ä7É4é±î„Ö¥I«mº8Ê Ö½ƒDXlqÄdIµœ0Ò£BÖQˆ^×ìöºÉ÷ò <äºqwž‹IRÐ5uÌwPż/ˆ­ ¾[‰UÅ,W—¢£:fQ4o>á8½`7ˆ4®rŸB¼ÈÅôÝû$•Š Z›KΕ > ̧»*ƒ%Ê|0{‡ ¿„¬÷ƒÇ(.ÍÝöº»|ghõ ›™è;ˆ¶bi1Ôá$º°é~< /z«C*(&èëÛc´h¹ÊãÚÅkQñ|7å]-d„ÚµçÛœ{M +>®i`d ]1äR·œâÏi£ð>Të¤$gÁ]lƒhv1õ.~ß$o#V(KoH˜ñ¥GG÷“f7c‘TBÏ›ºéí€Ôü‰“d,Jeª}Çt6°‰fÛ(P“`¡ÉlYHKÈf£à!¨;•aQ†e@$‘ð¬è…ónÈ€=+¿×•Ñ Ž™2Ý2tic&ÑóèíX¥×pºa¯^¯"%âÌ$ †o˜š¥$²Î…í~CcÿÎtA~Té§<·ÊÖŠï^ñÏ -¶½}‰ù:ÇÐLYoÎç£Åè µÿÑ~ˆù6¨“ZžZÝÁd²ÿÔˆh¿ó×´ m§ ¸@™æÇA‡ãP‘A“Oîñîâ§ Ë œŽûÏ ëüÜÄ à—YUï<Î!¸\Àœüñ7!ª?mÇ(2Þ¿ü(ú^+>ÜuÖ:Cœ×w„³GÚÑGµÒDú²œÇ2n3òoJ–\},e–mb8ý¨B¿:ºÊm® 6Y4€ø+„È_ØJhÅÕ0êWµèK+µF˜§ê/i¬kõ£˜l¾’xqÀ 1£vi},WÆ@Ã
-l>œĠ_?Ö2ãn“Z? m~ÞdØ>£KÀ±„1?OàXÙâc[ž—û®“X¹±¡=ÏË kZ6”õ±š”5ÊŸwF`
-L"œYЙˆ_û|<PAm¤Oý8½˜´ßt¢îZ¢Åå‡ËÑYZvm¥ øa:dÀ¶×ËÜh­Z^x„’ŒS,¤L Ó%æiC|£Í(Œó F³ÁŒi–ê¯Wh.¨(mgÚt;àPØñX8Þ’Aœ;§ÎjÉRëáúÚÌx—²cTÿ*¾Në ^
-ê¤pmûÎ]¶¦añä”U©tYýIKÁùÁÚ¥YY­JëáP§/‘úh;g"?Ó×ÐAð¬*7öÒú±ºÔûW˜k:•.é#Þ¤Ä5¨ZbâÞFH‹E¶È¢_Ñ&PeLoO$žÖÂ[…ªÇëâ°ŠÎÊÝ3’ªM9jk!æKs£#›¥‚€èpˆ’ˆ_‡ý°ö0S
-×ó°Å—!HfdpAt$:à Ÿ™“ÄB™ A®A 3×7Ϫ}¢åZ˜+ž‡šÎÚÇAoÇýþäNëêïߺl£EOj)iˆ,Û!èë&èû)&¡Ì¸<Þ/å½k>‰¹öžÝGAGœÉ,¡Št0U˜‚ÿtA¬kYÞ‚~òÞ*K|üM¨fƒ‰ì…Š}™Áa£‚ßiÞU§ †(…ò
-H‰t—Krd¹CWà=xÏ¡%RãêtDª÷?퉪xvÞœTÙi¤>$@>ÚZŸm•¯Õú´µZ£}þO¿,ªµ(sz؆„é^ºÇ8ˆn­U>iËãóïéƒ%Vï,u@uÙ(ËlõÙö2Κì4Ø1×)>We™hµHíám¶f{‘øZÁ
-Åú½åNsŒÑ‡o–˜RV¸[ Î'Ĉ±*‹_ «Þ[Õç )úÆ*}”šÚÆì>zo#w²æ:Íüw@î#¼Î±ê^‡ï{¯TÆÖLÈ0J9–·~îÔøGœµ{€œ­8^D·¢¥Þ¬S¢ÎT¹ÿÙÊ×ìf½t•/Ö×ZVW§z³%$šOkî[ T{[µ°XÍ"ÇŒ2Bõó¶× ›£v>-äÔ¸;XCmÂ#ªOˆ²jd/{Ÿ£YïQkîä0K§[Ù8Ñjå.œpu&ÄëµØ5!M ¨|oZB¨‚•è´3·êÁßÖ¤4#r+.Ü©ˆu@ƒvšÊéÎ:•‹Sä»Ê\‘¶±Öxд29üd¥»ÍÿAzQo9ÚÁ%ü¬áªdW¹ÖpxÎ^›sí‡Ò BïÛ0ƒqï³Ê`F³ÌÁÜÚk¥6ëLe™Ì
-•¡!$«6dcësŽu·¢P
-A ¿ t¤h kŠÄ·é"&Ä‚¡¾¢½jÄ._@øiÁ©¯}—èv1hÇvñù*X»S>Q¬Âyæ«ì Ò'ž\#7ú®ž›Tj¨šÕ¾šziÓ¼úA VcÄ,p=@D=Ú C0ýó×Ç?å󯽌¶¯Vw}:4( ð)Rþ»A…~™ôpôx
-÷¤ÞÈ@OPU™åó¨ý­^+B6ó0³.ïÒþ… ›œbÅ„Nã@ø¥£€ÚZ ˆÊ[EÎX/¨‡iŠ ²½NPÞîF[n&ìàRë@ÐÒa
-+}+®bý:
-YMQlºìÔxLæéó÷ÑkŽ\ø7¯Nè0ÒZ³WÃ<V¿ÇY¦a,åô{5ìƒnb`y†™Áb”$·Ìx#bI= *€ ÐB<oSu·ÁPbhŸoò(G*ÓïXMBón§¾ARt`Eg–HO ­(´×° Ô6kÃ'‹Òe‚ãâü ÇA%×Ãy3.à}ò3Œ)O '†™Í¡l(̺Åážôº-pEÅÄ$#Ú$ lE$΄­ÁÛZ–'h³{aðΠëE“ßî:P]Ðkù“èÔ=u›_Ñ©¨æ§ÚPLî„÷ôºŽº1ít
-1`áç¿o@˜NïøÌhjW4ŸE«ü™Q¨íg 5CÁd2n˜]´Ì'
-–¤Kdd›'ôŽrP{ËzZH"ªõìÊzdè7D‹£8
-FRäùöò¥"4‚Gõ
-Â96›åšbÔx"ªg¤’™ÿc¼ÌqäLr(|Ý¡ì6
-±/æ@n»s¡Çj™sÿùÉFùG¢K€
-Ii§
-nÓ/þ:U
-iL‹˜\”òã+£÷'šBrðí<Œ][PK“KºVùžŸoŠ`:G—‰P‰baå‡øˆ Ù™1ûPST2TaQN°ìLºln‡UÄÄò‚<@ZîWx, äÒ»­ƒe€B¼âüƒÜ³Ë†Ñ¡Þb%MreâZb`˜R³Òb+òY¢¯fJ¼ñ€†5ýÝo•åzp©ÉŒ¬JšR+˜5OgC¿1P¢« öUÁ‹n%] É„{[¸04td
-ðgÎñüb"ÆÕ=¢¤)rL¿hŽ—ð(H'šßh^ À4'Í oÿȋijøÏdyÔÄ PÃ$É^fÔˆŠz)Á˜Sqp®^Î2²ô¼TÄmMæMÚ¼8Y5¼b~é9v—ö§<ëH8!,, $zØ\\àåJöEQtµv½À!ƒ#§¶•|1‡+!}=à“%ÙKŒ”mH_¾•6ƒÓ É+A´Ú­D"ÉùЮ’Œ—,æ5°Û±ünŒŸ»7™Í™ŠLÁÇ·Âl¿÷ð
-ÄÝ›È`^ÄÂJøžÎCt®£ä VÀšññšYÝÅYÇ ÂÀ>vx½@Ž©{oV…PŤät³{ÏÁ{±ß¯¿Q@ DÔB z<'–7M—"+á
-yâ_ë`U
-Çü>V”±8¨^*ÙÓK’J
-¾ÍK„Ä a¦Qs?•œfä @w@´±$¸
-Îñ”] s€{æa‰R!{Œ">
-Îïl20¹p$Û “‚gæýRÑËv·Ì{96™—†~HöæõòE¦vË:‚˜ú¦‰ø3€ñÅÝäh"³Ê Šº<ófvål§5¢¶éŠ¸+˜Ûdf¯ƒ å£,¸µ[5±ßF…O–]R.mÅ-pOS§•k‰eô®a*hpPéà'¢Äì8`ÅôñÜס‘[‚F:ù’Þq–…ðÕðãG¦žŸ­q‰}n'µ»òZUºõLÇš¬„Õ¯=ž“ «Ã ½)¢ë4e"vßöVˆ¼5Ý*q-Þ£IŒúÊwk%Pú–mÀJ_Ý­HM Á8Åq4Ä«‚7ë—"+ôkqÛü®¤¡gÍȺ”¸±Áa)‘ÙVÞ­Ô2H‚øj” 2Vn˜b/  `¦øìÄW WÍ«¶Ø‰Kó܈+CEÜ`o@Ù|•i1'¸JhH&â
-
-×K·çKElW§ÌœH XoE¯‡6à~f±á]
-c|eôëYáÁð•°J¦8§y]_'i/x¬GÁâU5ºRW¯dsÅ5QÂŽH:Ê }ùáÄû+æáêÑS)Å(5ÖüçÔqºÇÒr¬mf«
-ØÛ@N*5?+|#® µ’•â®«€~´ fçÖ£H‹x{%¹Y,ŒX}Óf Ÿˆ/N»½ið³ä·‡ò­žEü‹Áâî~«çià¥$€{¬on…RAÄ$?
-ßêÙ<9|"œ|Ü[œµ;'ÉèÍKýVâ[=ü±Î6Ó<áw¹ÕÆÍÄcõï6 M’åúÂH}·Éc+d׸(­Û¨ÿt쥇.6ioøàYôõÛvÒøÇ39i$EE°ÉÛ#2*ƒm*b‡t"DÛŽ~+ª»Ê±‘pFEª)ãæAÕ+ÊÌSWD¯xÂÏ…3>ìÕK˜>ÆÂ&1éÑ(šK‚©³Ø "žƒ+ œÜÖáÑGÉ %pADu8¥<|«‚þu@Ò-Y¨5ÉÓp7mÀÚBS*§E0|^„î7ý²´*ê1)^¢,KÜåʸS•tæºÊWt—ÀöipQ6"ÞÄV˜øLá)΃ÅÂû…訒‚ãwVʲBOëS•E*AIáômÅ*…[Ž]b+~¯ EãR*Û!ÿ‰«ø:9c<äÜK(ñEÉìì|¯…„—_"£Ø赆'ë
-Ÿ3šG0è\±Îcªƒjñ“àYà&>3ì_2XtJ!Ì7’f7.•ö‰AJõœý¹¹šŒ̳o®Q%$MÌ̉g½K²eY BnWc Îå:&A¨9rÐ@
-‰5ŠøûÂ}lı €‹1ì.|9ä]Å®ïù{…oD¢ð©ñÂ}•D,bê
-Jûð_µ½}.ÍRZÏW4¦p½R$G@T߃–8,rØNÃÖ1lÛ‘ÏVfO;~×Þ”ð¯Ì59õ:c÷,š@ "kìç”´@JNsVœF!$3i^±ônn\.a$øQ—Wîn@¤†ÔBœœ #Î&"õ=%^YìOù?ÆË;²c¢[éðä<Øú&w!—½W7
-
-r.áoœ†˜Ô+j†´ÒäÚ¾‹"fù3~‚ߤ$×æßEu(À@HP×’éÒ<É:Š‘纔"¦ÄZó±ÚuÓ¢\–W‹#_œ5oNç%]”oc+4¶á;)q¨ ™¤Îé˜%i߶¤2–’ð˜…Ú0%³È1#­½•%0†7ÄYü¨#£Ž´
-XVrÈçé]ò–âýRNÐÖd9fM‚ÌÝšÑMØŠÐÕ_tóK‰OÖx.(¥ó‹u&s±ÁZÉ8‰ÿMKã)‡,Ê• ™Lu¼¾ªÁéíu˜[€ÏaÊÇçÕy߉⧿îsèt
-pBÀœª¼xþõ?öã˜jiÖM~[ÍjÖÎÁK»©S .–²Õ>êÊ”ãLªÒT·xkNËõ¸ ¢‚Ô`«ÛNXzå±µÕæÐÖÂÝ ”’}+ÂýÚÐ:ž¬‚ý"`N/ad˜
-Ü‘Ë/DŠ¥ vŽÂ™ ËÌ㖣܈WÏ—¢÷EDFƒfàX?¼Þ™PZÚ9™?‘r#±§$¡w¢Å½Ž¢1ýMOZš—0W Œp’ÚÅ$þm;Õ±y¥åbe8š-“1ÂX••®­úï† É ¡q‹‘{k7¢sltFPy”æ+Ñ©c´l˜² /sqÃ\EÊ„dwã´¾ÆVb=Y¦Ïµ¯Ù+V&Š)º‚*šœ.
-°ý,à’y¢7åVÁÎSšÂ£¡¾†ŒK œˆ"0áË<à³äAÒ!câ§*”cÀ$ļ»_éïf Ûqý G<e| ¾C=Q0úÂPnŸ½©+B–«¬«¥öübéiŠ€Ñ*
-?·u†üSÕÅÚòœÂixú©;´¬
-UW OšáØ `óa§[íH¢‹<àc ëƒGG¸(®ï¼heVÙ–r ò•µà100ªÌ'7ŸçVЈå3þµvN>q/­Ç½0] ¢©Ùé–ñeå$ßv·ydѵ8ó¸ž$¯T÷‰¿¯ErÝEÀ-g=%P•œþîSþ«žKÙJ "®!RëA¦ÄÑ¥‡åP²ŒŽÁUÌÔQ?ºF ãи†­³ÈX‡íç¾\3Jà4e+oEŠh¾”h«‚ÁçF¢µóÔe `Bê¦Ý}_ÑÓ@À+ÁZå(„Xg„ŠxçŸ58Œ™˜/ *SûaE‹‡œI;ûJOœ€ÃiŒ‡¸ô‚,t¿ö×
-`È@¶]´ßn«Ð‚Á¤š•\Bò—B«D~_;‰ÐHKÕ´ ‘ûFßQù×M„”®ÜxÁA›.rçDåZÒÌþ3öì=?·úo¿ ‚_Ç©cDš±F–O•)–áýY„ \"AÀ¿T²FÅ3‚Vâ‘À#ô–ᯄì¢o€l…¶a›¶n/{'0Ìåæ·ùˆ”«UmÜyk®B+Nq^%²h#ióÂL•R«²(
-¦K·"•(ðbÀ:ŽðÓdƸj†ÁJ6x 9û@Y—~ò_݆w>’LðþØ•êë€wñp1À¼[ƒÏŸ×ùs¸o‰ÁPøq«B!%æ3‹ììÌ]-aÖãá%DP´Ü4«_Kƒ3•€V‹’‰ëkÀ‰4ãêÖd…§èÔ'yBHÑ´p<CŒNÉzÃ%Ãà¹6/!‹àŠdüßJbHÙª ?ÛþX‡)¤(
-Xô|¸Þ dˆü%
-Q J;’дÎÛ %¹,S×3;e‘ú:·¬%{Ñ’±v‘z[‡@Û$Ûˆx®`ÔŸX
-€eS‰†Ö.ùšÿ¤u zžA‰% ûEx„· «Ì¬]Þ{n™Êh
-ÃáF¡k ­YCëjló(!_a¿³ø0¶¡•r¥ŒW¤T˜²y±!c¯³â@†¤íh
-¸@ž±„c÷a¦ÀF
-“­Ø*ÕF€êPL¾"ïþë„ú9„
-%;ËÂdD D©‡o
-·‰È4(Ûç`Äz:gt={YàÍSKOÞ_§ VlÏî9°5î€QáÛã "p{Áü¢$»„Mƒ !Øv—€8$†AÐÇõ)q<áxôc´ÿÌ<*à ú”ÁÆ1Èø8ñ‡eW@öšÅÒØ €%dè&„úñÃ+’ânL6ÖâÜ‹F¨[N@Ô¶?Ö¡ §IìàÒ%'4~UH °Âø—l$ª¤ŸŒêó:÷¢/ºúúŽøîlØ$¹…z’í Ìˆ(G ý½Šˆ]ÈNôV,çH§I\ îÔ#2ÎvqýôC#M¢EÇÖ>3êå…V:duΧ.É‘’!ß>õ¨öïEN
-Ê.e4Ì”eE×Ï]Š^ßéÂrêì8(!ur‰cÍ›\ XéËi¼ËfÉ>Îpœò—"•$™_û½W&£ ¨c‰â°DB­æˆmŠ¸ž¼ ó/':¢ôvÐ8×9MŽR·®'€¢G6?ƒév †ôÑ-µ€ Öå5 -Í÷ÄʤØ?sì—¢×.B7WRR3‹¬“s9å¸)A¤ æ)†ùðr|3¸Âë7ŒÃ›¤+Àíµœ—“=(o«‡Z‚NEd+V“{W!ÌÖ¼ˆàÎó5("ι<ÃŽ]à~0©‰
-ì$÷BsÔäöY%mALÓ>ű¬ðDÕÖ§xCÔËá‘T­Ë£NÅ„áOë‰?܃õqâ®S€í
-
-ÈÂÆ‹¨µF®ºM¼$%¦"Òé.)ݵqõÉgÂlj-0ÿ%Œë˜ˆùÃ݃Þä(g˜·
-á–1Èj–“j•}-$·Ü$| ñÈN8Ú_ÂóÜöл¨ªo ‰5Ø *)‡‹y¦CqñrÎp9¢¬ÞAƃP0Ö(½"Œµ¢?3š½UÍg­’6iÝ8T¦K^ÂëL(²êžûå¥`{
-ô¾€¡YæUQò(hÅ ¥7§D_RìäüÁqÑ=‡ýA]ìêñ2p‰¶¯¶Ò·ªI0b˪*«äMÿ÷"ö!ò¦‰Ë% ÛPëqŒ=Á {®\™yjƒËà˜Sçå7‹{ïßõû x
- Ã΃;ÛÊhÇZø{b̦W‚?Ø-ÀÒ® €Mo€q࿧²*ä‡pEèx\»y$ú%ýâ?-þ3ˆR¢5bc†J\ Mâ#´½ÌÕ“ë=wȇ…J!Ä‘Ιå£ý -»Îà¾Ë‡á/ü=(P„
-ÐÓQh™ü¢{.¡(Iæ3ÐHù!¼èNLçqRµ"Ze bÆr@ˆÅÆA°ËÅŠ
-¡¿Ç¥ò\=⩬J%»öô>Çæ2ÖŠÉnøôCc—cØ ¹xØ
-†ÈíÍ[øºP%ÑØ8Ü’‹Tþúºv® ,¹–ñ´†Ù,`€/L’Õ©éAÁEÜÖוؙ‚RÇ3³*‚ ÏZ¢*Ìs–Ø.%Ü:N’˜€µûÖñÏc¨
-Ø ™ê·‹Ò»V^í´UÄçh³‡vÛsÍåJšz­""
-ƒ{—dŸúÿ5üyl’€GÔ!öä8*„¬ˆˆÚXMI-è  ÃèéÄ3˜…oÄivaÊ3ãˆeNWÉÀ.ó’%-V‚ÖöI%ƨŒ
-øn·tœ É¡&–¡l%,k˜´h[dìy
-œÎ;бÂƾmöãºúH9v–Ñî*vé%²éS ³}æ^ƒ£$×D ¢}‰Y†Ú3&¤ÞÀÖµ\Þ¶¿©øÚ±˜¿~lcÊl¥8Ÿþ›¥Ni/–TÁ‘Ê»÷—þ8&ICŸ2
-†ËR¿w Öª¡¥CÁĤR\SP•÷~±ÔMY® #2ˆ‚,Ë¥{<% n°ï†™È+&**þµ÷cë&7àÉÅL
-¢ŠÅ@^Ymðš#˜>˜@ú‡ìÛè†`dŸ4Ò”nêÞT–ÔŠjŸ¢J,X¬=¨.Îá3£lûôµâ–þ,ùé• ÇÐ@–tI)95xØR:¨Îul%«
-Õ½4ŠS,’Sôz(Âö‚3åsµç€KDFÌ1&°„²&‰÷Æ.ÎÜ`’Ø­;˜¼,×]LJP+©¯Ç4E±hUälëNÕ›{6ËÔá5´«ÊÛlîÇ·Ëo@
-Ÿ@w˜XÁ÷%tÉ¡RŸ@ålRßßßÁ±»É.•dôOxx‹itQ€Ãwòм`z<½¼cEÙfí˜î˜RÖCï’õôa^ u§5M/B(É(%+D96bj½šŠÛ<s"v YQWn·"• ê„ΪYlö.W¡æ4+ÿS„–Ê~±Eô
-q¡lðÛíÆ¢ö<¹
-
-øŒ†^À½†`pÕ¥f)úIôžjú¥¼(i<?ò¬ÛÞ¹³Åçô\8/Ùm¦µd•Ý1„P<ê"P’3J Ù‹yqz28·eÛ`ùkX,½RÂŽð;Mrs–‰ÏÐöúÒ1%ü‰#8óAËtÄ”ì‹
-–ÛèñM
-‘õ©î®7¼g†9§B‡!¤o¹^ ¥§¦>'*ÍI
-E—™÷¸'3AbªFJ\òõ;ÃòOVjÙ9a‹0>‹ñ‘°TÉa±»/ÑXyCá¥óS[†„7/9É•Á±.c jA1ÑÌìn«'ÐÆå@lzQ’iUbƒà€(rÔ•!š>2fa­øSч È3ÿ³vŒ†M(qúþÉ0Aýý>°¬Î622³haúN›“eUjÜ=&Š0
-˜yð‡Gþ ¢Â×®‚ƒ¥G4+Ï›÷»Žó¡dŠäÇ8j¼úôŸ`2;ÌKØST–Fäµw"“*ñó¸„YM²¸r<‹¶Ìré )ww´°#Œ£¬»öît˜4åB//JœªÚÐa¥H‚Oà%•Eö¡“q{ø
-Úk¹¹Ãˆ³[}ÙÏ^{ n•í,ú*—á^ÒÌ\TÙéJh¿´6w!Ãh(Ê.ÂÂM=‘Ñì;üÉ6yA0¾OÌu6‰(VÁ”ù†Øö¬ÐA +ÐÅ8ÈWºÔ¨‚ŠAFtÄûU(1ãœÅ\éÅ“X{*@|¾¶†âS熮 ¾•< Ê:Š p^ ”Y׫ÎÛàqIàÏŒÔõUP$Œ~€I?êìŽ<
-nŽþíÞâˆç²‚Ùð6©‡’…‰sàÇwNØ<Ýæ¿ãU7gT¹€ß¶Î](H‰â€òçVêsóØP¬™/9wáp‡‘ÝÝ6i¡¿²Ó¥èçµ(½ãÐ
-z´`@ã)€§±¥íÅš5¬v Šœ ² ³ã^E gl­¬±t|^Š¬Ù0<žDtY7ÇÂ>/Jmøü£2𹻶œ%a3á
-éo¨Ôý*Ë VZ:•Ð½Ž­Å\õz» ¡ã-A»”üúz„³ïµ?þþöýŸoEQDÉ âû^møPZ!qàV4p[P"VÝ£{"Ü¢*<jÉîÜ/E +×®.K¢U„ØU­(3Pú°¢@£ ªÝË*²½…}o!¾ËsÀ«°Lm1À°œˆ
-ŸÌw¾,âKpoÂÖÅCDиÔ[DŒ¥,tÛüÑè:ú8ÅÔö~Ö’L`»¸>`[pRä]`k%EçQTt)ùeG±Üìè‡m_|‡…‚²ÁÂíÏJS†%“ž8ôrЂ`n«­¨ƒ “ì¨ß"h;Ì" €_³Öò“4‘j4’7ØÎ"D*°ÃÔ^]*òç!È“º®+Ô‰Ôµn%´=Ó¦1ö‡]]ª€Ð ëg*éA"×µ“Ó/ƒ8uÚÒ*PŒ µà öšuø@áæló¯E’t;'ûÝŠPJè.D¼“åÀ6kW«qv²n|Ç
-”Ÿœ¹ì Ã_óÁ¨EÛ¯†ñ€L?f7U§Ê¤ÖbÝÃãÞО´gJPû—ñ2IŽ#Æ¡è | ‚çµz©[h+ßÛïspwe¢Bå…#,CLøøßAmbãÞàKÉ÷œ%¿Ÿ9žŽ¯Î¿çÄGX‘Ò¹ ÿÍ+ðü5–¯’½¨´¡£l=:½ñÀwé¯Wò4§ïw@|Œ.á­T{ÛáërÞ_·ˆ‹SYñ(ç‡*äê ü´ckòKy–T„‡¼
-¡ÃS¿&gŠøñþÔ/Û¹’AºØbÅL‹;úb®‡šfs‰ïEŽG°—zk:Þ.ºPæ—û¹·ŠÊ̈ÒQlPŸ€õŠ0IÖÀ=Dœ6ýoV !©žŒˆŽ8²0ˆ¢
-¬‚TVX½žÏ?^‰¾ ö"â¼
-¼½]ä,Äýso]–ÔÇú¥H Ÿ†¶ 0S ѳŽgÚ1Ý1 N‘J”Š W‹ ›Y`“f‰ì †û”Øx…H»í~àËóo!:E?/Š ÛŠÿ j²aÞ¦Çò”½8ŸÐʱϼn+à%¶±jꙬ¬ä{¾¥ü2„Íô¿Ôy°ž…©â_´á q6y¤š€}Ñ“&}ª?”#·¹øçÑDiÝ·iÌ:`dø5JÚcDÀÂ\ê\t‡.ð
-‰9®ᘱ%ÇÊrH‰yúEY±T®­fž^QB©ñIÖü˜>.#ÃhŽ¹Æ®g…¯§ãl»ö½ØöaƒmO2xÈìîrDY€‹Ù¦Ù‘a¸‚åÕåÒˆ&
-£{~ÎèÍz+ᜣl‰[":Ú.G•©·„¦,˜š ×®Ç]ŽÀú$Ú2ÉPp'©Â\!´ÍRø0òÿdi?¼!¹â¹bÔ»‡_Bh(lvˆ¥±9Ðû_Š~Ü¢$¥gÝ8š—ͧóQ4HݨÛË"©¨¦RÛ%
-¢/Ô¯Ûüÿô<Zs®b™ô/u<<£3¶ñuvß=§?Z‘b"ý¥u÷6sfŒ¦
-¶õÅ«(
-Èf#.ÆÝ ÔV@¿`Šéò»ÄÃU2’b‘ÎΫ"ÞSÓÛ¶‰Ç"@ƒCÁcÌyzESùÁqÿ¸Eå$áħÈÏ×ÇjÇ€å´Ù²UMiq
-%
-°ACùôþÝ€#sý(¡šuÀݤM’ >†òNgðÛÄ…0±Q¦ºø|ÇûwÁÕÒÄÊßÝ5?2 œ[`õcWž @§“'»Þ ˆ<¾@½h²kxmVK!‰vö=5åúÏo»%P‹øý­šøÇ+ÊÊVà²Ñð ç{ÑMOær
-¿Ž/rs¡÷Ók@\ /¢A7غ_^É}¸
-¶z!E¿"L|ÂX“ÇÑ>t3øºžD
-5”Wþ€M\4ÐCvax\¨
-›$·žã¦æŒÝ)¼°öŠµkLø¼X·’ˆï€}ØÓæ\NÔ
-µZvMŸW-µ-JtÏbæ½®ðH’QÙÿé©dO»¨; “ítÏ©QÕ 4;ŸŠ‰«€ØØg «*M•êl½Ñ‘Z’^Å;ø
-‹¼U:"çJ²,õµ¤
-§Ï.8Ͻ‰XœÈâ£Ýõ„Ã7ŠLÒFo‚¨²Î"~Ôå•`™¼ÖÔ-ÒIÌ”B»åê÷…ð>µE—(ù%þмåo '2"? öŠ(Ñp”Ù†RIó“a$1nt·ðKt[™Þ ­‡“K=´]ä9‚º•mêô| d}È"£Oyj?‡8- jdnû–
-€NNgy@ZcêŠ,;
-rŒwħGiuZ%Ch:wŸÂpQ1”2Ö‰’Þd˜±˜þÚn££B p¡î”èì~øØ£gÏB °ã06µùÞ‡""Ñ(X‹Ý^œ`$.*¦ý*Ü(W–ÉoPÒå‚hDÇf厙BÉWÓû8E—XûóÇûC$ì2z#­]¯ŒTa½p-è÷é—’õtSÚÈ«œs‚üüÁuvrÉU)
-ÏKNZ%Q(ÁÒ¼CkååÑpŒg~ªÊYÌL”øöð•ùeŃ”?| ¨|Q¬s^I ¥$ãßï`ùëDÛ®àX°
-©%¶ãç~6GÏu'ìïE\oYå£J(” ±é‡'>e˜®Û³¬ÁµøQˆ"ì>‚¥N¹y‘Š’#TÇì3æI,hÏXq߶¸U¼1þ¦{Eeèi‡Îm¸KÕñ
-R’#2‰2oÞ¯Ú%QLŒî Ì>R«ÂNc’yóÔ€pIZ¢j`†Uó¯qǸ¬xÓ$.%~ø{ÓuwµhîO}±\ÿÈÞ¨Ñ
-¥‡¸5”Ó…ÓÇ~UÊXû„áâ ò•ÁI;UßI@Eæaq*}~»è&*¿Ý"œQýdÙ¥,eí2M…FsÏ«¤ˆmdÉ*‚8S¦q«:‹w@_{Ú-är„#pÏ9«†qÓ
-Ö½Ô´Zó¢—fOQÈå-4-H¤± i¥¬[‰Ë„Î1¼wjv3¯Þ‹¥@s¯)ˆ…¥õÊ}Û)'å¤Ù7
-ˆK²
-ó¢Ä½§`—ýX\GÅ,L+´Šh¬Êt*Ö—F†!Ý\¬á#ãmËúÃ]`¬,cµôÇ7ñ )w.Çèô«M¤ø€×`¯âÓœö—Ž"â \$2”R¸—a?ðU0?«úð¨Éˆ†c–´¿tk .€uPz]º÷
-ò`j^ œ'†*›{™þ…ÐkÙÓî¿©¿&´<q…=]X¾µfÈW™ØPýþž·1ýüá}ûo·ˆÁ‡Ä_”ïÆNOüoï›Sîã! ˆ$bš÷Ëï d2tùp¦ÀZ#Ç!7ˆ³û4y+ñ7ë8h Ô„.÷2j»!ý£Ï‡G 錹XÜæœëB¶à‚³ÑchÂ-)t ¬ö©/wÓ RÃþÅ õ›ßY3*ÉÚ
-ÃX<#
-v±^Zz·?Sš™÷Õä™÷ÛI`l¢°óƒkIÜ âY¡LŒËc{>QÉ Ëo»YZκA1Ü"mAÝ
-顇«¤ È/ÞVê‰ rƘ?hÒ+:à¢û°e|®Á•é»5|,Õàά…N \W
-a‡$kOq°/üñŽ¨dòpЫ¤àÕ¤zó}
-N¡•±;˜SBTd‡WV¬šYæêO‚™Ó»*lÙÆɨ$!ƒž¿ ˜–Ìì\ºŸæqo‰ºº= F×A{²'ÑN˜¦ÀG„€í$fSѯ/e¬-㯲#cÌ0R4bˆ—7£‘öýWEk†FäÜ—†šÃX g‘3o$Dꑳ›~^óŠŽþƆ^‰„…(A6YŠ}‹:Ì’"†_Ù2ŸEõ¾e`ñÈ•ÈŠVûwÇ ùç8Ùf@%øE_‰oi‹,¼¶µ™$,Åu®¿“ͬ
-`¼º@G*™ û\aþÛ°Ç@—Ù'–AHdØV¢¿4œ}*¿´ëA¾Ä/* “6£]ù¨ÕNn(ü˜VX ÂEÅ´IþÌσëÀØÛü½¢ÜÇ„jòdymjg _&51&{vffØY¢æ`M%Dš¬Eó¯uASY"ï&óW|Š2¸¡ÈB¯·sŠ¼DjzæÅßUš”þÏx¹äÈy1ø¹Ãœ` ÷címn1Û™ûoýQU2Ü-5ÜHØØz‹E"@¶Ó'’å#牰jB$E¨Ž”ÄÛ*g½£œ¼¹\éäßñ4'‹Ÿß÷Ö eúz§cvúAR,P'Öp+ûϤØë èø‡8lì\òë:ÅjÄ„Y×ÉÅÜN£ñéš~ÖÁQj^™ŠÄ[úYÕ`NDšÓÝÇäYö˸åí1CUž4v]¶G˜Œ.smNAÑ©R½ ˆ7f.ü Z—’QÞ`å×êæºÖ€®u然d†6æc­‚
-Qå>½ðr¸MoÛ
-Æ„æ^1³n±æwñ z¨ü÷„ïG®gÏlž×^Ø*’/k
-tp0Å3õo¹,ÙǪ»…ÀVŠà’§âG˜z Û:]‘œ!¦.·jÅ{ëwJí—ÜrWʧü³h‘¥i‰\Ðïë@®Fþ`¶ÓÉ;ÿ,‹Afx`†+ ¾óOI° ®Á¦?Æ‚ þÞŠéWýÔPïóÑÆê–•1c,¹ÃHyͶ^øÖw ßH>šËž½ÓœêãRƒý²($­rF¬E¯ƒGóÕÕ ú ²`0‚há hœÆÀ¸hÒ³„°;/% íÉ œ1"§áÚhØThô0BŽêMR€¯Hs­S±ˆM>­Dß
-Q¨â±äSjaQedôDØF‹ýF•û*ÈF×SõÖ^œ„?NJK“™¾Þ(2‚è^n¯s¼Ì²,šCõ¼'ä¡J¶Õ Â5¢vzV»Ôyª2øJ£-nÝn•hJdçšou<Nìò´m=ýÇý¥‡sj®–ºÕéb;å>Ö9Isœæ$ßåR‡³2*û†d¯w´AÁ…,'Fãx¨Ò/ï8~À¾HhºÙ`ë8ÔŠîG)^xåtØàËn?ý¯-¥(+“™É­{@‚¦±òj…ÐÿÜ0ç‰ÊüÔ\djIÜÛ sP®›Jˆ:v{£„A‰ƒ ðuÿ¦+QÂMR
-ÿ§–)vbžŠ.÷÷£J™ˆ„gý$C(l
-”}§ÓÕeßIå$Ð̸+õ:t^z4E ‰WA!…”‹–DŽú©ñ_$-©mÚ$|¶:cV"RaÃáï–ºƒ|ÿ ±l@X|§ê3Ñ•î|åÒ4¨uÌ°uè1z’HÚŠ.UØ<¥ÄÒ!qò Û¢ UÌ$©„—‹Ùïaj{+ö-’J=’ l¡µy¢q×VÂŽÀ@¸‘oqÊÙ£
-Ñ:ºþ½®ƒˆ…Ž„¥ªyëG2ÇbƒPYôÊ;ØÁ´BðŽ¾âõ%s³0þék©¡éÆ“qs¯æ2óS¦·¢Š6™ã ¯]‰VQcêç*ñ ’ Šüf€¬®Ï =N–²ÙføkfXŸîLÄ„ØP˜Ö kÁjuŽ—}(ú%ù[€
-H‰Œ—M’U¹„WÀîú„-ɲ<æ ÙoTìÚŸl:¨ã Á_U^[–R©T£Õ××/f~ >¤GÕ×?Zýj͆hVJ}L ±â>ø; o_þL¯n£E3©C%azÕ
-ÿ4î+»¤hé4—óäk¹2e –׺Èñ ôí ¨Vs‘’œ™3) ]vÌ]¥Ã¼ÞéÞWB觑«pÒ‚˜+G´*b b]ŠÕšDÛÙ¡ýEéœú}^ãÍ’ãwŠ­Àçkó T„:–lö8×é÷Åþ
--JÒ‚³
-ü§:$¾ÙêT—ÐÂ#觾yÑŠ@
-åu> Y‹JƒR$lŸc¤t4m!.@ââ£K÷U|ºtuRá’Aïd¤H%¨]èI…U­öyŽµžÍŒȆ¤vdHå±+:¼Q´Ôàé×/g‘dÓÞkxý€y°ˆÉõ¹…Õa&ŠTF[/׬ou§Kv9ªðhRÑýn‰OdFŸzJJÒÉúì>‚G‹#ùqÒ•CáúÁrDÊÏúT.HÄIŠqGCúÉEÊqLÈhNu»ù¸å{Ðù"LWpóªJ£3–Êš!ëåB ¸ô­–¾  ¹ß}…(ך£§.ÍÃe¶
-¥Jÿò‡ˆÙç'ý<•K–}~TŒ¿Y@úDÃ1ž veGä¤ç«%HFÖ*“¶ ³Ðxóº jˆ`ü%)íê™~‚*ÜZÙ
-Õi¤P—¨´kô.Mž¤óÊÉhe¼ßã¶PÚaÂfµÐ<X8tØžOE ԭѽG¼;&ÓC6Dsf ÝèåRAËä5ˆg ƒ=YIå÷UÌF"¶IŽÝç1rF8óœ {=¿FÉÉÃ-•Ø7}¦`»MÜ9n|C0€A׎Me"FL<«Â¯)îD¦à/]¹Ÿe ŸBHd}©nC¤0Ô\å$‚Ó¯?Çq¿R„Ãö}PºÃƒ¦JŽbÊî£×@›PðìÌÔ92‡üé{X8™A†FŽOßÇ”-itî™”>ƒ«ºÅÇF´NJè:£5<©ÍÂAy:IÄ‚ÜÂ+±e^'BêäŽ<yLÀš„ÎÙé*èÛ%ƒ~k%ØÉ:–¢.È4!d¥x¹Ýƒ¡¦†ô5e?€>qããËé2ķᯪËëñçž8<üÙ[™?ÆSżå×›sz
-!lq¸whœYMÜo’™bÞŠ€áZx¥/Å€ì ž»{”dà{¡Ž“[Äaòðš¢mQ‘ÚÑ2tÒ¿Ž ÅqcÛø¼oú-‹¿Ý>dJ”dö}éÏ'åýq5FSÊRVÓÁµ¥~â¨b·<{ V‰} áŒ?´ÍÛ·Ïèéùøí»#¯ÍI$^£ßzh$(˜üŒ_¹¦ÓhzåÜð:Eá-jñdU¾¤sC)þÇs("Þ€‰Â;¼£yòùӫΤÚK±S¬ 9§r¾1ÍxôTQ¾þô\¼¸‚õgº¶÷ „ÝXÑš>ÍÏêÃ^¨®6ß{4?d‘îA~³aKUVƒ@°â°§¾1?YU(Î ô`FÏ‘+^Îå"'ó“©lq{R>ÍOr{
-Ÿæ{†mòåeOÃÞä)Ã,^±¯úC{ý·VL k
-YêmÒfÛp´•È±ISBêœàùŸŠcØjÅ;KVêÏÐë5R?ŒÉOQ¶êåÀ¦9#—^Y LžÕÏLéöH˜¬²4x.A¸  r<&­û ±TÉÇ~7–ËMˆ2× ¸ÈY‰ßÚöP-]‚ƒX»Å ô‹2~A ø -sXeÞy<Ä"7‰5ß|Pz ›é¤™Õ™¡=ßÓ
-­«;ÇÓ“b¬™roŒ57z?WÓ™ÀžŽšB±Éi©$ŽÑÕ7ȱ.æ––a¬ÇSžå~„ò¤ÍáIOú=Ró$ñçüžzá—2}ÿ›†ùoÊaHÙÛ\gCßغ'ˆ’õ=)ÖWß`F3ËŽ7jÇ•’u']Ì ¡Æy¥$E¨ ú‚Š×£¨J~†Áê$ÒÇQ ŸU?ˆ*üRZ„õ ër>‡°¡Î샷b‚¦æ” g9!é°KQÔöU#G;¾3Ò`¬Á~„#l»iR¹T&›fÇôÜeÇø0}çSûBd#ðŒ$?o”GÐ/uÿ8‚°,Z›Gt¯Š\Þ°Ò-nÇÆc”]-Ü 6+ ©²­]Urø—'ÛïæÛP ãï·Ep:tù¸Yª‘Áwœ‘jÆI&†Vp.”øx<f5ls™´w0­-Xë"(‰gøOÆ@eí…JE7? €Ž¼íZÌ+±sÌæ‚g‰ A·#Ö^±FˆÏôžZ.¤ÔŽ,pûâçû2[˜ŠRYö¼”튡=8ðX4È7 èH*´ ¤D,‚ƇosÝ+„Eç±Ð’U*Ia‚›CÎæÞ1©È)uȵa£ÒÓ$q;r9Ï¡—9šÝ¾­‡¥/‹ô¾¯«JîlTEñ—ç «G#šÜ+ìæ:Ÿ±ürÚó•Ò×+íÚé¨aê H¼;GFB”þ Ÿñ¹ÝÄL§„\û*¶8Ò•Ÿ~Ær{)X"L-F
-!Á} sÒ8•$ç
-ÍzàÖëzÔ=h2Ý
-¢Ð[x3”²Ñý²K@ÂQävóL~”O±O"}PÀç倃5îÓò¼UŸñFu7Ú¨¤EK'wªÛŽßÚ~ªLcÛŽ¸LNÜ5ox6VäÈU ,Ž’¾ ºÖ s±Å½±zµÿ
-&ƒ:åSÌuð( •wsp1ž1qrtIk€”F5Ù´`Q{õÕ|ñ¾á[
-}Ôü@ßeÄQ÷ìÈdˆQÄóïçËaФh•Éß¡P~ҽܷÏÜ›æv™{óuoâ
-
-ÀœcìšíÏã8ê HhiNWûvP‚U±tc ݃îÇ=}~gDm’óFW…ž1 ;6“øeuÐ< rÆÐjŒ—¥‚~ƒîÏËSƒî²°ˆß:Õ«É0‘ü0ÿAlEõ(DÔLOxˆùüF–<—êR™0R¼¯Â~Ü «â1(©Þ•€Î1!EÌS¶m^€“(™…ݬסŸŒ =à7ôm2õ:oà[W½üÂ@¾‡™%5»9®.œ/ÁßÉd‚‰œ"u1Qœ®ŸBü¨É€F,/¾c|Á&`ðÆ‹Û,bèc^õÅÅ÷WaMÅþòjçälÈ*•…Q¼Lâs‚ïuŠƒnA—<`Œ%ñ8ÜσÀÔ Væô&Bho(³+óqÔsn4” ŽïÍSóœ`"ö’ƒ„¯h£S¡žBü¤ç‚¾óÜ6÷Ë<wßñMÏM|ÈÍ}nþÍD‰¤~üõ–ÞÿøûíÇ?o,3Þ’2ªsíƒåùuŽQŸÊÎv쬀]ª1òbJž–ƒ…°=Ù7”¾ô‘ÒòÃβ$TYË6ã¶Ñô`"ƒÁÂCòì;™Ä.+È‹%úùã@Àt”Ú£Êúµ–K÷Va–9È`¥Ee)#0r¿‚¸[Ó¿`œfß)…ÊòÄuԻ،g§^,‚u SÃmî!FÏ}Ú®µ“X#•s¨Ú©y›<ñ«†V<•Ü[Œî!hy£AH²Ì !“‰l U óÐ>°)8‰žÊØ%ŽLvÑ«€u\®ÒzÛ¿3@kHê(A+áL‹ç8‡ÀÀÆ]GÝ‚'®
-Xú¸ñ„Õxíâ£9,šž™[ž?~Àuaœï\þ!ȯfi%*U4J´£žS1ÿŸå)Of_ÁÕ¬D;,Ö׉f Ù˜|ª<܉›½ûT
-AIUiºµXK³I{¢äÌgZ‡ ÏA@ìc\y´¦ˆ·,vˆ+~ýìÃe R”™…P5?1¦’ÌQSèEÚ‚U‹8ˆã!>â´ØÌh¶øžSYh•v,çc„·ÍDÁxÊ•Ëù+
-ŒBô†¢aþJqÖŸ6™\÷bUÌ:†ÏÚ™4ÒÌô•›±iÁ¢öê/ªùâ}ƒ‚VlàUÖñ;4Nâ=ÒtŠ‡ÐCii>«Ï‰ ÖŠôíRD ‹nqTWÃ0e~=½ÑùæxxCÌ¡ÿ¹5¯³#@UdÛFF“Ð ~Hë7wžä Ó¶›æéƳ§ 3
-¬¨^Ý•…7Zá Ñá`ËVóó¶é!ÄÓj)Õ½â+ ]Ê/*o/ÏÞ‚[™vY"8D™Pβí;ˆ‹@™Ü{æi|µÑ,‚×JÆlž¾Ç?ˆÎ‚³H)}xþ
-ÃÓÙÜ­¿ºJB—§DÓ­ÌáE ¡šÖR?&†ˆ& äe–czO!eŠ“nA¼Óœ¸/S¶Ãe4êr‡Ë1êð$´­fs 9Wîn™A¢97š?§7WÑ:ìYMúNUzñ£îž}çÞ2·ÛÜ[ïðª{ W𯄲yGÜç€Qe–M÷oÇékêªÐ
-úüÎ~rñ½¥÷?þ~ûñÏ[~ÿÏ[OóCº%g»{x¬ t­-'ù‹…«!Ñò'5—{ÌÏ1v£ìB¬Í OAœftDÖú¨#Üœ,*F ÁÂüâ#4=‚»é9ÁÔÐ
-êÚ›™Þ\)ÌÆÿ/“ì¸rˆ® öàäaߌ=õ.j*ïúo
-ž»vìE;zú§»TÉL°U—wW3¡Ç©Àec¯!™ÍÚ(<^k0¢uãQ§LÃÇ­7mâÌp³‰d™„ä©ÈD£€&ŒkS@ã)j`œ%¾2•6üÑ+8ç8þôí‹I3O ¸ø‹27±n½¤i£X¬kw3É%Oš_O%Žc&ÎŽ±¬É£ÍË9û‘5íÂ
-Gl¡˜+É¢2(+ÁRV…{+Ñ»VEÇÒ·}j³Â ®ÒZדñdè§û1lFj
-^,BÏ-¦da·•˜Ý'þ0žÈYP  ,Ë[ &cax¬¸Qä`¬4v+úð"öJ—Lk’ØR–‘™-î"X÷IŒJÜ;» Ѐ™Ã×wMÈóñ#Þîc[”h˧/äç#¡„%x©X …:H'PaÎmh3ØýÕögW±§ÿ¶q”s®ëzÎvvãÞðÓé¦áß+Na±¤kKù‚†öòŽ—˜œÀÀÈD»„­n©6ù®bC%åÙZÅ"I±DÅpRgq|Aªú¥}d510?4¼cb Q)aà•H&£`7sܾ™‹S‰!•T/F
- ®Ã:ûzÎë3<e×ÛsBuˆ,Ü\r¯#žó Üœ P–
-ŸÍW ¶É8Œ<ÛåV¶ÇO¼s¤‹42°t{\ØL%üRÞÚÛVî&L¬ÙCV,ü¥Äßb™ü70ÓùÍ9p!ÎusµV¯f®p % göÅÌ9âѬDM#¿áºl^@wóúë¢ !¾¬×ßÔ°J£?Ü>V‹Â3ø>ÆîïƒÃ)äêûEÁ˜I{®Š—˜¿‡…‡ÞX1^4t™7^×sDŸð+Âêœf¾Z1ðÕ$i™á§öÆŠSpK,ã_ÊaË/V °wÖ‰ÿÁÆšiÞƒ]6’»-MÝ vŽ ({|é›Í:’Cı˜8Òñúìt×dÑl–°íý MpUîr)²’½Œð˜\”°¤2/© ƯƃážnѼÞšlÆ¢ÍPQÁ]wmÎíBw*pªÑz;ñdT¼ÀÚrŒV2(Ã:õ #þüçVDDiòöK.µ2%kºàKÄi|þRôáC4}G‡ðŸ—"•€f8p­Þôwª„dÖ 1Ö&*6æ
-ãÉ©µÚxÖCaR¹3çtÈ,äàY4
-åq|";5Ò¤›íƒ„Œ;Ö•P“nd›Ñ‹¨¨²ëø-0¾9‡Þ¶÷7,+
-‡Õ×­HEŠ³0'ô *(Ð1LPìSóQð;$¡¶ÃI³ˆ)-îåç,0H[ÇÛp=ˆrëóZ€Ã¯|¤‡ñ™çh€%š°|m}T½4’6ÏòA¨µ‰x»·±ù»xŒÕa%` BÒƒ4vL Ǥ@MÜÄ‹˜v•'@n8†ˆ‹ ÕVÆsÄÀŸx@Yä:.%ïèâKѯkQîܳkF·ùÔ†5݇ášbôk{I—ÕäÀÔÜx²šÏªHTò|kEXf0ÅËŽc¾‡b(§ÌåLùÌo”&Îàás_°h5Iù¸”ø;È¡6Ù NºžÃ&€W.†w*ùXxö{HÛr}SòE
-ÂÅÙä/E*n4naœ5"ügÕ6©¤ŒM‡CÖ)¨ÇÃÊe[¯×¢—»14´‘ÄÉ‚•£4ß×v2L°ÆP¬†À‚ûA©Ñcã/E¥0Lù=¢mÄB”ÜPÕK³qœÓø,zÆ\¶m·‡\8@^mݬ¾Jx…–{$ôÍNí*x™d¸4®çððÄÏZIn%»Qô\ÝìæŠ ½ž›÷Aˆ€`x´øÔ7
-EìůëSŒ”0qÊËŸ™È [FÝ…Ð%Tx6ž|#W¤Îí%œÈ\­vì> AdWì5o5,´ìó‚܃³ ©µz)úð"Ò§Î/¾¨©–·¹ø;#Xbˆ‘\qMú6ÁXvÜeš S— b¹5ôóââ.ò!èÎubh‰(7Ø3`: ?¼‹ÄERÔÃqO+ÁÊ`§á/öèR/Þ20‰\oÎ1ŽãÚôËõÑ
-‰ÉR$$2¸·*.¤ÝžwH²È;Þȳ‘ × £lO•I½ÅFÌó1do3é(‚Š4 V  K R„Ƴ š—FÓ•pïó!B>?8ÇL<ÉjŠ›klš8ž…aâÀùP+.H˜û ¹v¥·oiRŒÊë>˜çÿ/“ܺ’#Š®€{à¸
-- äû½Ž@Ü·ávŽxœ}.˜>æi_V§çT¾®1&]q À’Ï£i‹G$µý)¢IÉÊjc[ø˜¿Ágµ”wg]~GŒzôpX‡Êp½ìËYÌëö^@ÄõŠ¬4‡g­1•")ý·ÃÌ$…Ó4¡Kxkv1ïS°T/<šÒÙƒÌðÉdÉ>¶±Êr²è;C6Ïé
-‘ÜŽŒèº³¤s¹>[ÖØ8./}äÕ‘Ç@$HªÄP›N•'—‰ü++*e{ú(®!]g(ò~T³¢96~š×„²4©è{ǘÑTŽèFð‘$Y9F›ˆ¹™i]¢ÔñײÏ+ùÜAußص²}ÕA\…Xoµj]z•ób“¤¸¤„y×>%:aÐÌzì‡G8
-cc³úMïþ(›?N*솳ë‘ø¯RS½t±
-;“Ã"6;Øóù£aIÞx¸ 6Š| [,„„´Ó®ª· ²zƒSÀô T"dE ÿî<FN“BŽæ- ®5X0oGÎ2üYªkí\ùrŽáUs—7“=·)8†¬)fi¢Ò® Ú÷ çÊþƒÝà%Éö®·azºx-Ïsh ´ƒ8Ñž½€ìd‘<%¹‚?vüljP*Ò†{!µ˜g=¿æ¥ˆ4VåîÁ5@pZ5²ȱ*ßÌAïÜ€’ ~#ß
-sªèðpAWAÑ•ù[…ãmt7"ééUÔ[5°ÙMZª`ÊøA|¹µê6 ‡(Œ’Rç᩺æ™ÛF˜Š¡zâ´£ ªf¬¨YrŽ!“”–j´+¤C„»Ê´`˜&å™í1ˆf¢»;É.°Ê,
-f{Ž«Ü"î)üîxïÚI<ZIGPv … ,Z—š$90nžЩ„bVÚ—û ß »ã­2ƒª§³ãPL„0àês~« –3´BBPëFeÈö»éC¦â«Ý¡bY}hS²‹<.œ¾=7‡²43xn*H7™²6iMήðz®g áÁí‰mK&àyIgçHðl=¨-î—óëH‘\[˜žº£5|oé*‚Œ3‡n>z%E¨ZóPá<>6Ú±¬ážqiÃå0¤øŽ¾;qѶÇ¡+“œ‚çÔH”µCOcÚØ;F7N Ð,dÛrC½Vzcµ&ÞAMc*ý4MóÜšúåªYØR’½ š…â±e› F ÓS˜1>Å̃(ú@
-î\¹ê‘b`¤OvùΕ”P™ûÈκIJ­â"F¬g\Ù>[´ž§ŽâC׃Ò¨q(·"èØÑŠ²Ñ»™ž˜qC’L¡‰&Ò–¾ŸžÏ9ci®fu0¿^ ¿Èä2p•ÂÈŠ0ÝÚ,!‹¢x@–|<m¥Ö.|dðŒ¤òt¯<¥ç¤½@0hôb¦ÞÅØ1©<±iÑ=‡|€f1›–Ø—A6 ÎA•ÊXH‡2Wlßq=ð—õD6ç8ßAΤJ€ fljiáu^7ÊUèfј’ta~1Ä™)^ÂÛ+øÝÓնƛÂö m`He›F…Á`Zn»ˆ”‡§b2Çñ!·«51¢¶¯×½8åƒ<fɬP|Ãrò?Íü\“Ag²ø¦<9‡£\4d›÷møæ…_‹yB
-œÙ„Á\ï‡W¦RÙ@9ñÇ›rZá}¸[æ.ÕW1—¥x¼²9sÁ‚Qä é4ŽMÅ“¢(üˆÌù5A"hÆ™Ûz€dUšf…ˆ¨m T%{ªÒЋ]<Ï:xÂC7
-¥@ܮѢ£AåÄ•‘}ŸÕJ)[«ˆûä¬#{ OìÙ¡†4†îQ£¸ øa´ ƒi'áP'–Ûñ‹³†w#¦a 3¼‚üx‹áƒî¦ÏÑD–
- = +øîÂÈk}†Û¨ dĵáÎ9—©¹Þå>{Γî#|+·—ÿqŸ”PÈTQÁ ‰$ÊÌqþˆ$½‡÷_oIÙ:Ç ŒIYÿ!PÆ2DF¼6w3˲Á–rO5½‚>=P®2¹¡B«@Îç® Ç+w³„÷¿ÿûö×ÿx'i¾¬Û4§úcCªMoÄ ëÿ½‘IÿOyÝ$É‘*A
-!a9ûœDË‚~\ Ì¬Ÿï‚¾¦àó<EöÓÏ”B%s›Œ9¹[«Ò0³RZ.ÖÝ–HD~±=º6„ô´„Âbå Dç'kçWŽtnáõQ¸ªàÛ
-yB‚8#νsÜõØúðá|yø‹"UÖ)»ÄÎ Ž.Fœ½8ç95%eüñî›*u ˜Ù«Â÷9ã¢;;ÔSºå•Ç¥üžÅo-\Š7YÂÈÔ:§hþG–}/æ»Ì--ˆ»„ôR™QT4Ž;RŽâ
-Æ'Þ{]4aõ3±h(¸ÏðÙã¼üuî¦
-PªBh—sé ¦IÒŽeEsiÄ‘¡fu,ˆYd¹’Þ«Gõjå¹Ô²µ ‰ê²X9ß"aP†â]uz˜Lª'V(v‰3fì‰ a=jØÁ£Õ5’É} 5Òd {Aöy„ÓÍå›sªesË|»^?ˆžÆ"ËHp¬•é÷…¯–æTÅÙ¡ì™aO»y½¨OÇ"…8§!ÝD"Ð]«#då²­"ì É”š3má³v9[X‘+È/"ÁìËVèÙó–Ð?¸Ä¡.‡uF»™;Òu„ŠÆ4€A3ƒ*pî ß¾L¢†Ê;”'&ÔL†ZÞ­®uºú¥ØY&$$·…kABÿ.¤1ßAÂ8¤¦opsˆß3ÈþÔŽj®4à¯Ù:9|oaøž@Ÿß€8Ù wäý9Öéõ˜‰M×âRóK(àq-Bá«õHl énå%6·âm‚ˤ_åŽ!öHPÕP˜5Âzò$ÝvM¸.£X¸h¯²ùí,.b£Ò¬÷|Î6ñ‚¶i27]̧âÛyL8FBŒ„Ç ±q¹‡±¾Ö›$ıÌ}+›líLd%6̵"™LËNxŒû:ÎÄÐŽÉyù ¼æUﶛ×I& 'À¹4T”‘ñtO×bK±'“÷V¿9Fú¥V˜mA¦sAˆ˜â¶ ³×…A<÷}Û­kKÐú¶2á9S Í;9Le˜+"¶B…céØØXlÑD6PL¿\Ü+|Q¢ÕÈA€ôä»âØñ÷ä½Ó⇀\;^Á\§’ÂÝÌᑯ0û:JÁÙy‘ÅÉØH]½“G¤¥â åã¦
-Â.Jèî ‡XãÒUä˜ ÉÀÈû~/ûÆ‘ú16o¯¤±uå¶~EÐ^TúÍ#|>k× akØàeš.mÍ=²Æ·=A[8‰Æù·Šà&”J/ç¾ ê62¡·å6‹V<@èüœ<™Ö9DÛü· Öúè§þêË‘ÑCŸâ-ãz˜™°o-Ø•c*(-=`~=`âÒúÔÂÒC{&¦¨—úÙY#+ï‚ž¢± Të’~íoƒŽK Zd²¤Ž‰”¸Öú@ÕÎvªÚ´ e‚^SùôùN¾Ͳ„|Y COo»’ØgsŠq®U•ÌÃR̸€Ñag~ô%Úç7Z÷~=ê¡òGe6ûQË7Å{=ôJÈQ'Z±4½wAOá^ž÷†<G Þw,&9ö„q ãw1aÉ:ÊB³$èÛšüú|'Û³(áÔp›\¢û‡;ýïò”ÇÆ’’³#|{ô€ú‘~ëšÛÖ›˜×$={D)½³‡‚Ÿ‘ÉGP¹8UFüœ…ÍëFÄ&rŒ‹¨¦ a}y² lHJ±]Õ“é?æG™{̱²”5‘±‰È"!ló˜DªÂÕ´G+\ž>Ç®7–8Ö²î3qõÃä^Ÿ•¶@­Æ+—XÒ"> Ss‡"÷‡ïÅ^± `p -qȸæ&¥Ýî7ùKÖ”±1>"Gƒ~ΕŒ¯¸Â³0_ RÂíù³¡ìRÂù°`C#>@"’‘C¤|•ÔŒoÎ1[Q'O?îḸ‚¹ñĶÚ#}ìxÉ7$‡c± œy…²
-0 vj}Þt~ö0öêEb!2SÀ^ ÅÙ¢7•}©GVÜ€ØwˆðuxŽ~<¢“˜è¾LÁç§X0µÄ
-i=`Äæ…+.ð ó¸)šÙ2ÑØ<[ëú8«J²,¿O›§‘¾Ý8¥³Œ#jÇuÜ mU#ÛC¬[òï~±KíÅó˜Þ.ëŒ]qË«ihÜØQ +Ô†˜ùÖßã›s[…”ˆTn<WHv±¥7ŸÒ¤øšjÖ;’†M'”ïs˜9£Á¼žëœhå—õrË }ƒ»´3Žõîã4
-ü\?ö!É a³Û‘ö0˜wUèsWÙD!Žvv,á@cÅËLΉF~q=UZíÉ'ÝDnBB<:O•S¿C…y ÓYîûøÖ´¥æ‹“¾pÿò{Dx
-+U“Ìíõ ó³±,Ò‚PZß|ô'õþ]®–¦%#œï›8ýf² b€Øyᦪ½€ÜO.׈Å`oƒ^]bαZÎ¥'šæ]‹Ç¶¡Gµë1Ü» ?RðùNž"éç¿?Œ‹6½j°¿¾o¼ôJý2æm…GPV+1Mø7d[OjõEb‹q–Ke­’ªù6KDZ4#+ï(ƒ”Í Þ“#µ¼[g“Ò‚]kžçÈÖF†§úX×åG.WŒ—NÓhų&aæmÚAä1t¦ÍP@å$¯¸­+#¦‹Õk GZçx^µGPîÛØ…éB&îPÇ„ØEKÔý>ôöŠÔ-rH3øl¿Ü4âõHsY‘èfA3Šv¦ ÁRæ…ô>!Òg¬ºÇ×ÄŠäºgÂ/Ä»|sŒ?¡UL!ä†àæÕ39qQ[è 2}_æ”’„nÚ*!.”µÛçK§sº‚ü'$«lzö>«§Øp½ýœEœ
-2H¶CýÈÙT(KäÚ&ÃMº j½¾i‰¨øÙã;UTQ›¤ïråQ‡Ö3!¶)ÛŠu–z¹ ñðF.
-Ç„`€“D-ú÷Þ|… ‰¥n-–-³Ì9üý{•2%{r!™°}Ôûȇg¤W´ýï¸Q”
-áHV¶×ü(öJGÙ³²`ø¶iYÄæó$©Ä¥‘ ¬ë{Ìσ;GÈÄçãWaC²Û¶n"6Lƒ1ÃKÉ^^Ķ k¯>|çÛòª€™%C,qÛ,7
-¢OS–™áI9&
-d0sbˆLd• 9!ÉõYÅ=
-‘šHžÈ·?
-(O¼óÍ\FCh_7ÎRx(P’ÜÃ:ç“ûæ¢ÇåvÇ‹û>9ën@ m
-ýäá6`ˆ¸a¶‡’o|þêOAýL“¾2Ò1úE%6õ³°h ü›OÈ]€Ã
-ÄÇÊœ­G‘+`Zר–!p¨mYÔhŽÑˆ—w³ØŸÝ³Ñ'n[ÝO†Ep„ø¢ì7îS ºF?;oÚÖdv¦ZÅ©#,m⣅…ÂÅÚ‹f§ a¯haz `o¶Æã2ì¡Àt¼›•±;ç_Ìüµ÷ÊíhÅxúŽLcÀ»vP‚FƯÍÇ£rBû4ïù S<Pô›œÇSI’ˆ¹(úù(ÔG™ÌãÞJDõÝ Êr üÜìá pCžëËÏ{o(ÁGA6ìozºË7”ÿ¼Õˆ’òÁ Ðë¯_ež)ƒ‹¤!]½°']2Ižùúç¡HØ1…ºÕ ,KºZÑŽWgâ˜
-q¸:ˆ/€ -Ö)ƒA£%»b™u("˜I££¤*¹%f“é”'ÔHÊàÚÓÅAzF×qJùȈ&3œÖ‘M(¼b1„Yþë8¡™‡Ê²êÜAÖê
-‹op==¶bæð¡’ú¶/¥¤K꣓WßÞnÉ·i¶t«I üLʰסé ž™)d=©Ý=‚Û¢­ä!ð] ÖtÛ{Z³ƒÈ˜ƒ^7DÌů2 Â@ëø ³<Ÿfôç·Æ ö(’!B£7{A«"==G€
-c ;Q¸Öš
-;]i5 u²&ïÎÁ‚^Ï$Ó1©ÇÍ6âæP/[©½w*`43ÿâÛæ< [ÌÃ$qíà
-Îl4 ò);Q}…çU¦òS‰*,&3¢Ø¢äQGŽŠÒ05¸w'Sž”3­TÂtÓTX´þìCuq•.)l›J°’bb‰BѼ0á’¢¸½yÌÓ£f ýfhä$£VrR!ç-âRÄa­ÞÇa¤L6ñ%H&þåUñû(àŽaשmnÎNÿ7…×Òɽ˒{“¯í€øùíŸo,nJ¡QÎ8Ч‹ÿ FáD¾ w2çòë¡*HRS¤Õ¼ÿò­–Ò "õ¼á½ 5OdÜ
-i”‹#9L@P$Ò
-<áÿf&z]Ok!nç=(X9 ßHá+a¯¾Åõ‡ÂÔu
-"ó¶4Úe+#Ô„Ÿ—Ñi! ¡eÌöu"'ß
-½I²0IŠ˜ KàQ"!"µÓ†ãd>‘JbÀærÉ»Cþ¶®Ð +ê1d' ª$IuÛ¶Br’µ`e™JA( ¿1Ƴ>ëÉv8“ì”÷'T*GŸ÷… |¸ »dÿÇ9±ª„èõpÊjø3‚—Xý
-c2.øŽçÀ¬Ø:$b6iŽ¡çêO¿¯Oy®ºsÐ-Á˜&™¥ÿ0»
-œ' ^O _'Ð}Ä*t ˜Ñ%BÔ¯‚NÛ=ï÷%ÐÓÈT‚ÄEûÀØ­¯bÎêT–O ¯¼·Ê’¿ÿ4)uP+Ô„QëºÒÄ$Fèè÷͂Ć¡Äß BAT.“–"¢#© ù£3ð‚0ƒh!¾Ð9žãúúTÝ÷€!ƒ2l4 Ÿ"_·e ímÕX[Ò a²§Ù= ×´XZA¾y€:Wì„jë¹á–æ™íUG/¾ŠH-Ëlò¾aš‰ZäSK Ëh²€)ÊÚrRTp±S+C§YŒÄo|¥n™8¨­#óÉITž"‡~ASyŸä‡á`—e)*ýDøFø4
-ÆÇcaèu7·Ô™%$ÌP
-g|¢®Tv®ÎÈüâ|Ð{
-· ¤B°
-?J2ÖÉøÿÂm.Ï ù‡ÂýÔ˜ÕmJÔ„5¤“7©‚siÌåËÈ3¬“ŠCpa®£3§F—bÛÑêæ‡9M«=¶’ïfŸ«†Ä€O)ÐðeH>ydE¸‡áoÒXÏj3 Ä–Î)p®ÌÚåZŸM£¢Á¶“b f
-ÙR’rBÚɉº³Ëeë°'÷$Ž¹Â[“ºHPÝ!y"ÐyÞfÓ¡ŠdkV
-Èqê1R‹ÐÁcQå
-èp¯/“$7lŠžÀwè#p&¸v–¾Eª²jß›÷ PeIT%N%i«¿8ø2”O¥ž A;S“ƩƸ6§p|\mQ2
-͈A…†“AçWxJhr]Î^C+=«Õ"…RrÕ
-Þœà˜6m…å)Qt”)°†+¡‡œÖ£%Œh…$uhã0©!|%+7E0Hx‰Üe.7„sIФ³ÎdÙƒ<˜íB;u;™ŒÄl>>´CƒpÅ®·qPSºÄ(@;N)U€à,ÇF´'ž:ò¡›&ií<–ä-6>¬óCß ·zúöø@9Ö1•Íš>pH‘fÏlï\ÊøàaGÒìÖS© (§Â?’¹þa'~‡<ÉâÏ·z}_3÷bV;å$àøÊ&eÑ1CŽÔŒ[,-Õ›ŸU!àwè®J·ÎÜ1qŠ‹ôTð
-9$³›8¨+Ða¼ñ:âÀwŠœhj§ž8“¤¹ß¤dÊ÷Æ°Kp&>ß3|'”ê%‹”c5ˆí2;2$YÚt—[x‹e89\Yª ‘ÙDÖa”0³^èaÖûy5µ7 ­ÆÓ ²Ÿøõ0Xp²(Py½^hèÄ&«Ÿçã\ÄOƾEœêš^^¾É…/œø±LfznÔfy¥s˜UΙ¡péÆCBÇ/’tµž Ez`xOƒì‰Py¶Œ46H$Ù³{u¾Á/ÕHË´GE‹ùÑÊ1Aø¡™8Àô¾PΔQ¤a·æÆKc£Y±Iy¿d¥Ôª÷Õ $ô¹©[k2€¯ËlynÒÞ!‚ HÓ”A\9;‰â©ÔçL9Ç¥NL‹µþ!
-íU‹3ψöy=(NÆ Kc7Bº¼ž@Ê©3ˆ‡¤¹¼äÜ7 ŸH…ø$ m¼3ë»<«Öd#Ä̘Ó|äY Ѫ £ƒ²®ƒ&Òpþz;úŠkŒW¹~ãæ[]¯RFw"ÅU¤…ÒQ†Ð÷ -wȈÇ_ xÀ,W;ÏyÞ Øy{=t=z×5î"Äñ¸:„¸øO!f£éuÊhÀâñ5+ʦt Û„9áq1凕&§i{+ôˆq–þE‡b5—KnêDyÅÉõp&Ƶ
- K Påu¸“˜É×A.5Pb‹hbåM_‚_dœx Dñ1/ήʙéÚD6yùu};HLC×A;qu¸Ð$µ\ÞöfüŸòJìQ¼¼Ž 2šß$ŠS\¤ƒGÙW¿Ðs£PXóÑ>¬£âÁ¨¹Í¸;!EÆü\ý$…F*º>8W5™t‘f5¿Ï5·—£ô;oŽ¥?Õ!x9=kÇbãÈ^u÷ˆ›®Ióó›zRN†Æ²t¿9?p8)׌ȉµƒ„ªß¼m}çÈ0˜-FšØÆVtqŒvb+ N‚ʽšH!½ŽUï#‡
-Ë6|…ï›, Œ'Iž—ÅGD#ë½×–¡[‡$h‘dÌ‘â“wã€ÐB| R)Þë5üÌâýÜé òóÇ??ò×_èUÅ1ò¬î>X^¶Œ"öòõû
-Bt1 ¼<dÊšŨE±8ì0‡@±¼;ÌŒ•u‚#$è¹…AÁ
-Jt¼L§ŒšÒumC®QÏA ƒ¼ÕK}â\d¤þÞ[aA`½Êqq nMÃ\Ö^‡RPwÉ£î
-[WÕvL×%ÄŒrâ­jöu”*N†òaqd;JX’H}M4œŽ‰ƒåL l<nʼn¦‡ÜæOç<ÆŸæ8¢N#ãȘä¼>A('œ%}kžA˜ CýÐ%î[¤È!(Ðä®ãéª3.•Ü ”î>ù=€iÃç(ûƒÁ«Bž½”ϧi< ,.ŽaÜêhñºÇ0 ­_²ÊiŠªJ59°Ðb\(RH+ï¿!]èx•  P JFšy‹ÇxènÄ¥Ä(˜ù” ÆØ
-@`UõìÈ>;¯"ÑŠþ3é,JÿD’ÓÀBem_·©ÒEftía¸ÿ½_Lh
-Á1ùH¶Ú‚0Eä"Èy†à¼‚ ‰!aÿ]W Š…µëJýP ˳:2T‡í>]PfšÜÂlUTÇ¡¥õ)(Š¤r1Óö:% Owøg*
-áQ­ç±!p¥ô²®X…×á¡üSZiPdƒ)qÐÂ>ñ/*¸œê²\ãÜÈb|p˜1W?MRðcàø¤„ £‚8ß®äÄkt"¶ îmáÂJ„Ûa¦\¹¦ˆ‰H[÷`ÂË0bšäu“A°è£äµÝ5G^-17•´Î¯[ƒü_c‹´RbÜÎV/ºšO´Î“Í
-H‰”—KŽ¤·„OÐw¨µ
-š9äð­FÚ,¹·*$åg¿ì­+% ƒôgø†[À¤æ{+6Â=tðrnE÷º±9îFH3à[;«° hëÝ ñÏ7rPEk+uñúDXÃK݃kGDضT)®¦ï”‹Š9êˆËp†qç¨cª4Pæ¤Iy»
-oµÀ—6unÄèöNŸæ­—
-'íô¼Ða4ƒÄ]M§¡EÄq÷p
-ý¡Á…$è‡I[ø;I`¥b˜¹âb²Q¾Ï‚Ó]e¶•êä]Dç!»$IíK5Œ²¬
-ò“Œ‡ù6/Œ19ô>3›dj9Dö™Ëq¿‚¸gòKoPfþ’ÊA)ɾ Ò‹Nóºò¾uiôD­ädo¤°Ž­ìɨÇìâ8K‘•“ÞF±…@àFœ
-ãÇÁ:}µ]Bž}PŸcÄæ¼KFw@H¯ÂVÒ¤)Çyå´í²wªMse0€®¾¬ÃëÏ!ŒŽ7 ‚‚2ì”ñÝ™òÞ‰QØd0˜Ó5×|é©^‹1™4Sõèm§x0„ÙHè;®û¦±2-ÏÔÅŠ¯ ›†£l×Ãc*£Îï‚bêÁ˳†äÀƒè€^¶{}~G¤?––}¹¦»Rƒ`E¸)(ŠKË_AöDi¤)”N§bÄPHcpB˜ö7@X›ÞvÄжíÝvß
-ßêëAþ~¦_¯´‹:+Xgµ7å;ä‘êã¾Üï ¯ÃÁÕ˜ƒ äY©¦%È’0¡^”Ò4Æ
-3ï:CdÚ®+vœ“wºÓ•÷[Ä­ÎR×chøÀH¹ÙËéî»_ó¾ÆELã=rr×Ë\ø£„;Ïi¸>/ùýO™‰Ì ;pÊvâaÕt‰²²úÒ &"}bêc²ÛAsÒ¬³N¼¾ [§”Hʦm¹þ®qÃcÅ¢ÓÚ
-ïki2¶ÅB…ŠÄÌÉ)‡Ù­ƒ¹¼üÇÛn!I*ûÚ+““â3;l$ºÀCRpmëæš2¸Dþ„à%Ü­wÙÓ.r'eMk±ï’KGhÈõ ÊíLxš@<Cv”òn좢2t&Nô°„¥¥•äç^‡¸ƒäÜFRL#Â.ò<—"ÅU¨aZ$Õ¤³X»Úq/̤4…¯u¨e»Ä“òh<™ÿy]…(GhάˆmìþwZúÎ\”(’L®{nûÛÝ}.4ábvÿ
-±øAæ@dÀê¯ío¯Æ¿dŒÝo“¦Ûé µ¸!4D©y8#þMEÙ#õÍiF«*UÚQ¦øC~aî±uB TPqó3 Ò+\‚P v x4A©)R©cÞø r°†Z´Ú"—ƒq¸¨Æ+¼ù²yZ7§1¸
-"J›IiBøgZf':‘“¤˜ÆÖéÊmȺ±×)x:–E/Y&Åo…± a„¹ä—‘Dшkô¬6õ×)•ìf³Í Qlñ!Å0ž€TP5mÈäÒˆ4ªì­ºZ]«ìeX¤à„ØßH¶Ì€c´êbc |ÜUÕN ­é,ö^°6PfS¬ƒ° ™³.‰@»©$g)²Z{Oæ:„4w&%Ÿ¬äìŒJÅ»ùý=Ñž0,_b×ͬ÷œ¨7v¸xÑQhäk]‰T§á¯xòÝb—L'¬¯Âµ»¨‹àê+N—=°”;VÆY{!hî¬d‚ÿT¸ã†”‹#Xo§¯` R¼•~þèÖëÎnßc.êóñŠD}ŽtêÑ6düê£ÈÂô'¯R3@]‹é»¬HÌ´ª¾|ÛÖ¨&–¼d™^‚ ¤ŠHä”<GX C©šù1XOtcå¤.¶LW%=ˆ¬¾&É’µ³!ÈAoÎÞ‰ø‡c3^æiVî€2ÍSÑ8RÄO»7Þ_‰É+9 ‘j
-¹½Ãôá€ÀÐ“Þ +è
-4+uÞ­ƒ’=7 »)`¼0Uñ¿Õ5<BJ„ˆ”®&5¦2°dæl Z™^'ëÌõRC!IÕ|â@|}º€~>€r¤‚ v¨õ Aú‘d KO‡2Ž/Ó¡e „Jè²T:„¹rͱ ˜uÓ $;‹Åh2Äãº@= JæXµ]ÜØ@;1«õíoD¥©ÉhŽU3<¾…¶ŒýYÏÀ™$mæŠë(Ýè6¤£Fμ7b-ÕÈéÜ
-ê#õuO–zðYÖ™·¶SœÂìY`ûn» NñÏØÅÕ TT'y¿GñÅ0Dg~_üÊÚ´WÅ}<€ˆ”²H·7ɑЩ„‘ê~
-@÷‘Fˆ•Â\
-@ÂÍR+ao•‘ÞĪ’Žuožì:«p,öÚmìòÚ'zLϹ“S¡›f€^—¬,s8ª©ðÿ/s$Én$ˆž`îÐ2…4,M£JuNÐ6[œûÏs
-ˆd•Æ.F¾èëÌ– ÍÍ5ÞŠf8%›cÑb ®X±æ<Gª€ÃÀùE™Íý1¦¡Ÿ¶1K3¶7é+W‰Mà }Ó¯}Õ¤L?$6v“Ñ®ž™*r?ÏA Ђ¡ÝWMwMÑŽµ–’d (£“6*,„“WĸIâ,B¤‡Œ¾pûf€»<*ô±-MßC/0U‚÷ožÕÃÖÔU›%“ 1±¶õ‡xB¥báæ×Ü%—1ýRySì!8¨dÛ*‰©LB%ìMcê¡@xH‘Ù\PÒôf覥md$hHCÛÏ4…ÒñR¶Ÿ/Ö$µA©‹/CýÓøð:È ÉuÊQjF Dí63_Òá®ÊÅÈ©Š¥
-x£º~ž¶T¦~=yèžÀ8° ËJrrÏá(…˜M®ðÜpv„ç*ò4…†e^Éé€ê:]Ež¦È¬²hgõ}šƒ1ã¤Òß:§M×þAõŸ…‡6ŠæÙ]ž›]Á¸Çq Æ
-
-°‰üâ#l@ý¬ÓoÑÓa _Ì–š²;…GPí¬3¢Õï§ð¸%§ð|¹[¿…§¼f|j8ØjÄÈJHFÜkØ^‰¢HRØ}*b®¡¾
-û’ fž=çÊ„èŠÜ5 5ׯ¯ûÍí b™ G[ä‡Ú1, ¤ç—ᇠíµmߢ¿fQ9”€Ö¼ñLA—Ø9˜·÷¦¨BÙŽÎW­ÐÁ¦t¬ÃaŠ¾‹z†¡+ËÌV¿)ê0ÛÌ°…éÍuíÖkP,kæ}Óßßi“:úÇhê¿ÿû¯?þ·ÆÞ`÷Îï2àZf+¿
-5Á@bÇßœS ‹‘jm<d .¡ÀµJìÉõÃa0]ˆw¯’¥@Ëx uXsÓEV©W6ê*š”Ân
-DG\yVásôÑ`°—ÐTÌ4/ãBY‚É„#¾9í ²&<TÛMØýˆ,ô°¬
-yŒ YË“hb—7JáaàŠ¡1É cM«‰$F†E¯‹xŽŸ¯s@=“ð…o\%•GEØŸ®äÍaÝ[}>xèÉØ›ôÁ0BÍÁ¶XŽ"™Í" Ù&še`°˜µ«;}0zÌä(e^RÎ_¥P«„Ä€”WàŒïøs]Õd¬1`Ú©Ë0 •ë§- HsíÓo»WA$LSæêÌwñD^&jÞç¨;‘qA¼cu§à”–jßL†CôѶ_Þçt»G°¥5`š¦­åbˆ ˆëØè‚+®ùØúh[§`s{uJöþ±£ x—Ñ‹{NžÂâã˜òVxØU„‹i–˜ÈŸáKö·¨o3®y_E¿YV†j» R½à2G´
-†5ssoĉèÐYZ-ŸN£<U³õ­úwØ›Éײ]ÿ¶çAÛ.ôñ„1/J
-½Ì?çQ=í 4rDaÊsÊéÛ'M)ž€PÛ›sN²åkH 8s€ŠKÚ „k0(i©äÏà e:ŸeÜÆ Š)y3Ï$šT«ÛØõ@GEO‡rân-œõóZ%Uc¦/ˆŸ…º´’"ýµŠ
-¶”š>ðùt?ôå¾î¢Û\룅Ü ¯h"ÌJ ƒŸ¤u7ñ.Ê,
-õ“Ášçñ±ˆÝôÌžF
-3(¥è¾i¤ˆè•&~àç: RÅÀcáä •€Âž™ÌÚÒvVÓî€h0j^N‘3ŠÆ:±È
-©Ço›ñ÷wÖgmYÕ[
-Jq“X8KdÏaIyŒì”¬«€ŽÉ¶wçÈfÁó%äiyî¯iØ-HEâ7ÝT{á‡Õ)üÑíMC- Bbm4·ÁWÉ9¨uÕ]©•¡$H
-ûá| %üþÆAÂÞ£()ô@_ïÚý;šC‘šÃ{›~8-V ÊZ†(£»£:KÖUÇȽsàx_sàÏÕgßÍñæhñ—;õç\=&Qu \ß]_«‡&'A‡½Ö7„pݙùÎa/¿I¬•8k~Å•ó5º#œþzSDLý6M†*Ä»{³ÇR
-IŽË‹+r÷˱¼;èœsÎáúš{šÇ«ÖU'*”ŒhpØÀ9¡…k©†i`¡g·äpš?¿ƒcA>LÈãUàÕ*æD€ó~¹E2J>f×2U‚¡ffü «º‰IïµCj³¤(]°š}g&¹Du
-”IW' äLÝ_/*³)ðw~pI8Œ©®%2 s?(
-L(½ø©$ÙœXqÚ£Cyâ=äòBÍúC½•ñÆéJÿ4èIÍ>^€š]›”Ž ¢Î§E¦#èH<®Qø Tçd’{#»pˆt%È?Ü] £±G&mÛ Fª‰| ç¶uy¿Í…„°Ùðžµôó^è\‚£®
-^<EòÆ3}bª_d#|Jšu"Ek¾Œî&³8ê»ínFQb‡ÝÃ:ÅW«hÏÍï¸få¨ÊU_G¡ ŽçBÌ·Ù"àTµAb¸CÖ(E€pöœ‰
-K^ã/w
-q(XørH¡1 m1r• @óÊ8 ‹ÍÆ“«“´¨£ÀËÔ‹G
-öLD§7õp™»Þvý}—6È9BÝn©
-ªù´}l„ýB
-ë,æh©Œ:4±,oNä]ò P™Aêè1×3ZèwÕ:1DÊÒaZ\üSÏ ˜Z
-^‡)qˆ³‚+^LY¿Ï ™'Fèb›—F¬]b˜‹Ø¤£ÎÅ̶
-5òÑKŠÂp«$?T“Vë'¯sê–ɾL«0ÒÅ•€õ¤DT²Ö(¡*!QcûJ`°Î.\ZÌ(åÚ _'¡•uŒX•©BØ®ƒxóC„Hˆª$æ6€”‰´Dq]A•°Óó©|¤'&®\åJ™;š‡ïÂ8ð (g×óœÁºƒpI4¬m˜ä™™MÐ?‚Ún›Š‘`8\–‹,ñɵÉÑ
-“´#±ýÜA·þøKËRÄ‚X4§@º§7
-šY›¼ÎxÈÙнÕÂVälQp(kyüˆ:Ødð$‰r@Ñç>R%ÿ"ˆô83vá˜/BŽœ!ÒO¦ˆ 7 qVâÝ«dËËȧ­ä m|?ŸšŠBE–U/oÊNh±£ó!
-3vS¥ô086‰&¡Ç+J \ ½„¾(ýÙÑÜ0ÅK5 ºR¬zŠ’Âá
-*S‚8`«¦aÏ øC
-µEN¯ˆ‰qg<'#ý‚˜¯Í]‘‹F>HἨ^®WKÙ˜P—–LBHˆôª˜dŒà€‰Uãt{(Bás2a3Šc Tkgd¯âÖüQIM0űçIò•¼FªÛ§¨Ô\ŠÕ°Ào1Ðxü®XGR…@œê$?õ£Á…œÉ6‘< ¶ÙàˆNS[5×ÐÝhÙ¼SõO%¤uéžü°‚É•ŠÈ¬Ão5ìtV³•Ò‚E@`ÜIñô¤°we)»À;è9Ei7c*ñv6S#»ÔÁ‘Ž­ªHômPS]ÿ®;²o [q®)»ï…
-›:Æ,bA”2ðRŸ;€Ø§°[å.RJŠóÛSÄÿeÄûJüò×[zÿãï·/ÿ¾å÷?ßHÁ¤RÙT"^W„Áã—Cà$³¥rùòO As†èpaÍ͉­KÝxÉ}p¿ãOì·ù"è7É•“ª‡}?_**xO‡xîY †»­CÎÀ͗†C¤¡¼\¥¢¼É†åè.­Ü“9¢Ù¸
-üÂ#˜*·€¾½e¸ŒPwj'¬•’SjÞüsH ¤E.¸¥÷Éu…†—n„CŽ«L»i[Â…¿÷~*âP 2óh÷Ãì3£ëlír]z¬¤`hÄÎ:*¨„À5Ùæ‹ÇúÅ£‹*éðC‘–›Ÿ'uG²füàëÔæ˜È^ 7F‚æ¬^øÄÎZ«´  cÊf.éšÊŸ4KçgŸ9)ÇåáÀÖàÊÂøžuèüB“ž_„^`à()–A¸üI R-(s~D Ål®ÎËß17.fÙ<£= x¹ž•XBœP-ØvòC“ r¶«_Zƒ¡%ô¦á“ñÌi‚/ôÁ§Èi3H!«Ó~jŸã—Šá‡‰|¥4ú?ÆË$I®ä¢'è;ðe1kiÉ[ô¶úþ[=)òg¤±%S“ªFEü
-n†S—p—Ï'3\ÞézEtض¥””^q”‡¥§^‚lÔ>ò+œUÒžÛôåVóˆ?¯Mþ—E$Lv”DÄc ·"ðMo0T{8‘Wñ%üç('üšð½ài9g©,û}Ä ÚŠêǶ÷Ÿôpí£äÄ¥šŽ ìKWÄi;5„1Tkkãb*øÜCnõRâÈ`ÈäT3(íÃ9ØN¼ê”‘‰¯ࢫA
-*Ñ!) mZñÁd[Á ÙqÞ
-6W6;6}a°‡è¹8©äN¾ñ˜Ä*gYùœ±®à
-Ò^)CPz%?пb#„/–ä%}¿éˆJ0‡8z~P=ß¾é‘á‘ír4õxˇ± J8F±Î׬%»N›•Ô!ý¡ëë”HµY Ù ×£v’‚&
-˜Ž‹Á'œì¬“ &RˆRféí:ÔÅ!%nzVH± èL£±3Æ:즒ªöªûæ=Š¾?1L¹4-Iögn
-S¹–4‹E¨ÇGÇMïE­&Lc(ËŽ‘ŽMðÞúñ[,`¨³|›?{7¬CQ’ óýVð ëæ¸Ë‚ªX„ÕežpÆË•}NOM}8[&>‚ƒÍ\]Jx+l8»™¯Ç ‡@•‹f9ñ1T™ÖµEk«•áýؾ,ƒ“¸ÿh hšš=zÊ&m2‰ŸÃ<‰ºè`Ê)zS Gô§¬v-À³HKÅ;Àf4eIfíq
-5_Š¾½È¶0¹ÞúÅAòÙ_¥|‰ÙÃ<—zì!»Ï^BÌ^²•Ö4 ~M“§Ã½`ëº~/Þ­hĶ2ŸíKg;–² ØÅ߆ùf¯aÙ
-x5Vß aS6šUTéÂ’[[a·±ñ˜k ‡‹‹Ïy/úMZ¿ÿþþ|ÙS4QTPQñeÙÿ±¢ŒÄrñ£ž¯Œð?ÆËIÎä†Â'˜;У#÷Å”OwNÀ×4u}@–Ȫ,5C£è&:3àá-é´|È£ÝÃÕd: ­õGY»Lô˜3wšeWœæ°RӜ֪æ#-
-¸XÝtóáÖEX¯`jowRU Áb7H²÷w›¶ø‚ØA)77l°“Ög¼f|\9$’Õœæ c½‚1ð@qÕ@|˜ÈI‚…ôrœÒ>[©çoéïf)…Ÿ²¢Ô¼Ô¨‚U-4Y‚<0PPÒdšÙ*¯ €w62všŒ)‰vU™g5tL¤±ÓT/êDº‰üÀÆÑ%üN &ƒ©ùƒ“V¾‰$˜óÏ¥‰½™”ocך*ÚZ,
-OÞô;{É‹uf7gìÄÌ ÌEx‰ƒx¸ˆPQý¸ Q <pøæ0bÐÎõuÏ›@ al¦&Q#å=•D§ÍõáJm×s¦®¢7ôúæð`ì*öy+!
-ÆZ“ì‹\>ÖÀ+>jK ª‹H`sŸÐÙèHsû¬”Î0÷—’+==Õ|¿×TeK
-¦¥Û[…²Ã>݉2k_aX$tbg²ƒZYË°P™rYØûðù¸åÍ7'‘Ž#k#£úHl…Þ ©tE¿©öÕ+;’6-ç[¸“nL*ôfnáÖ¯bpÑ8º±Û›sŠd˜MDVŽ7‚ 5¼ÙùJ—…ùÎW1¶‰ù «i³SÎoçÓ\à@½Kl‹˜.kßw‹ô¢¬Ë.oJŠ‘
-ä™·¹'AX¬.¸¥¼.EŸoŠpÄ
-wÎQÀµNÎÄ÷q
-šm´N˽×ýt٢ɉz^£äÃôÙm%É6<Áà 6R ÿN’â½~ Gš€øï19‹Ïàžä;çBøÊ2y²˜t¡‰Kzc%"å¥H°ƒ$ÄÌ('<Ç9I<¡Ò\š ó
-x-"Z)| ½À.cÞIbËÐ>ô^Èš2s %P8§¶Ð…¤¸¨5ÄÂY¸ý¦¬Ÿ ¾r¦ÿóWKãcU2/²S.Ùîç­‚Áí}uÙ¿VÍWä‡S4«?•ã¦•ì xòlõ’3pÍD 7ÜÝ õÀNb?E¤¬Àú¦Á“ýÀa>„Šsa!¹µj%x¶gQj»”øUZŒ®}÷7çL@Ü•G*o^ÃþcƒªÐ›ß~œ„ÚNè*åks𠤾‹¥ûÚâ[ÉosÒU·"YR¸¸hÑ¿Ý_CzÀ«€öj¯yý* (;l’3Ê­;À FšâDDûÛ­Ç”l}ÖÊêàuVO%~•8S·•ðA—s
-<+ùfâyV¬/…ÈKâ_°S^‚c8ý䲆‘ LaÖ/B¹Q­‰HœÅ®i¨o )Q‰t¿ÈçëAH
-M¬^ ô±Uì]”?ÌdÐlg‡$–¦,ïOÕ<£Òµv˜ a}Åf‚¾6ìS¥vÛÛõ)ÖÓJ\$?öºµ {ëÂåfç0ÚÚN´7öÅ„S).˜Ò¢[xy(Ï›s&jšOγÛ(ð0I©—ëiËÅ­Ø97¤p¢xÛ×õ)ä¥.òãív Ù4Œ
-i묡á%1çn}`<˜Ä†–ô¼!ÌjÌ•nmÙ癃DJ[¨J\Ô9A˜4Ô‹K# ÏP ™7P/i… X ýT·¦I­.Œ`ƒkeCä®t¯up*¤½«„úi÷9A_Üõù½_±ÐUƒ2gK;ëÔçU,õAøPÃ=;^VÞ”¹OBå
-ƒI»4‡l Âàt¬Xä ߊ¥‚àõ(F ]/C)ù;”!Rº,Ò
-]#ÂÇ"ËDIŒ½K2ˆ¾¤õ­(GtÜx¸çôE±Ž¸ä–.ûü;Y ‚äàI­¹Ø!ÃH6ñ‡Åo|.ÎlúµÔMt±ƒÀo Vý¸2SPXç%=К"cL®ûòÈ®ñks^Û€ˆ Œ ½JÅm&Ó5!8‰P)fé•<îjóRÖ|ó˜…Ñ% Ä€¥öÂë
-:]™²>õ-ß-›
-š#Ü”¡‹¦òLhEGЛi„?1J‹dÒ
-ï„pƒ ²Ì8yDr oŒÍˆ5 ƒÆ·cìvså›™ùGm>5|ÕS€wZ’#«‚P,ïàF®< „ÓfE߀¸çtNe™52uºn“q$üV‘Ö£3¯âj±Õ{}ÎçI²ëʤgJúh0 G‹?Z¶>GæÆI;×ø ¤xN*)¥:‰Ùæ@n'üëײ ž! 8Ò*
-èÍ ù^;ŽeaMÙšv"[r7ŠEŽ¥PÈD¶/©>œ‹&Í@$*\bGšbi$FRŒcT† }ë­^‹@a1Î{È^ ϺJäa[­šÖòÈM¢–¦h_úïáú4œ6°nÒS€wÆã^ŒHSÉi žk<
-Æü>×*Ñ÷DÎJ«®íãyƒöÇ“ožt"ÒÛ‡çLúJ†Ð²I¡€éæq}d5¸L×v(kj+Ëo~µäØNVjR&Úå\ÛÉKùVDg5rýâ|ºã;g sŽ6¶s´òt“‡ëœ´:\ǃ®ó-‡?]DúYôØ.òð]Çü¸%Ã]*²¢²¸®Cym„<mŽzã:”„è*ožéê؋뤒—¨aľ½Ä/ÈʴЮÔvã:™~°”¨Iž5 ‚bt„Pëcu]çd³ã:È3¦)aoü‘½4ýäJ~ ­ª5ðoé· >SJ¼ >Îס
-I\åc Sp´¾ô\ ¬ê+#Ù^@‚þ
-é|ƒjW}' &CDÒ MP’ÅÙ¹~m/Íã¶ó2í/ ç (ì3G+Wlª4¯±¶Äk'/Aý›4G¥•’~Ö˜p§¨Ë/­Àw
-T ¹èW¼€nb+S&#ÉÊÜô=Ð' <,oÞ·¡àx‰ö¡¹ ˆº”Ÿ¯VãÈ”
-߯+…¼™µŒŸ¹Á®rP¡­øþ:‡g#9ÝLÍ]_€°Ð%áh‡Ñb ß“V _¦¯ ÜîÅ¥“q˜œ ÆŽ9xgß÷á.ÌH@ô ¡û¢ÙÀZYˆ¡×áK¨W4Güå=òo»Î úb°ÏŸ¸ðgJ•³3!Rlg¯üsb2PÚÈâö¶ <†Êò¾`!t,‘Q)oAx-²­¯DrÔ$•å­sYëižAòJŒ
-ÞWò:¯&p‘ìÃå}ؽO¤Ý.²òaeõ9Çâ@ô%Î¥e“}É ÂˆÖÒ­+<aÄ:€n~„ð X©9Ñò×?èëÊð¼Á°›ôNâÃ~í[Aé¡‹äYãGRYñS±¬êö¼<w“0抖P°íåF y3QÃÔ›]aE_Æ:†Áj9³ÚÆâù„Ú cc×"F]šqX‰zE”QPõ›s^þz™WÖ8/:¹wTædðQ_òw›~ÿdZÞ¯$<Ò£ Nh,“ÚEñÏ 5à⊬xÀ5çJ”Dšöa’²¼.=™ 20c¤g ÕC»yÕ¯Ñ5ÄÃÌ‚àI¢%Ÿ¬@H/o”…ééÉõ¯í‡@0^Ó¹ÎÙ=¦(áèì[!^—áõ´^›$I_ÐÊÄ{TeãúdÀ¹å¢>HÖäi&-~Æ+ŠƒsñΩ¼Ûj╸‘[b•ìOÁó:4²Éð†qöX&pB^Úþô1“A%Óƒ¾?”‡vUîRt·:t:°¼R<Q̉ö»À’$´‰ÿì^Öµ E•á[f»aíE¬jõ·šS&­N” #fËlÙ=fˆ¸c¦¿ÃÛæÄPÈËŒË4mW홨0#½û½†A6h${²Õ‡¨‡âvEª}ª€Hãüu'FjŒéRŸU±7o¤Pdm€´&ÙRóÝhjˆÙÀÚ%+/eH–ª„GÒâÕ÷*ë€â.µWì×&1<øE‚-¼Šÿô%8¾ß|î ¢ ö0ZÂ<o@ˆ%Ë!ƒ¢¶7e}™²»Y;Sòñ±ô AˆÙ*•Ëì †ú‹T›@„7Y|ždèÔ¯dÄ–ÇoÅVAôKk{ }$ãÎ]éwŒY? phwr ûSìHxEëHX¾9‡D2¸ ýk$)—55¶¾y}àQ 2|ñ[NÌÂtªÝ†w!"Å ¸¦Ïý,•ÛŠ¦ƒÇtQ?¡Grv3¥Ð Ý]N9¼Q.#<¦4ÁeØmI]4[ëÂh ƒÊ÷/åe’ÝFÑð:æaM/} muÿµ$P|fUÒ¢{×t¨
-¬KÙXÖÕp×"#"$c Ù8Ïjãm È¡{p§q<ê,¢b ,ÐÒhàd7–§GA|=ŠšµhÇêc¿Ûª¡L¨~mœ„&Y?©ð­‘,8úÙÑc#S’‘ö†:«”¦à¢°ÆŒ£8ç(yøßÙ¼[ÒµB0áޥ幹F‡ÓfŠ³¤ËFñÞÆ4§Š7éëܘºÖX&¹ÛhÓ¥¬^­èx7¬•£kˆL_±Àê~‡w@›‘'‚ŠÑ«œŒ‰ªŸ%u
-QùéÀk\®ŽPìî7OtÙJuÂB~iבÇÛ"ŽËôCfðû…ˆe/€3 ±Y,BØ%=À¯iîå"PNjø±$vLÒè‚õtlŸ“1$çS¶Ê;ö)òNÇ’÷ù"˜a ñ¦¸Å$d¶& ‹³#ù²²Ð½»Ú×v¿ƒ&)ØG…m@
-æ""Ù ³“ŒG—‘T‚q0r“Gˆ®äLˆŽÈ)v‘/#š,×P_ìL®èÒ€Þqoˆ®„ø³sÈ`âǯ!ùÔ¶2»Õ£·ú`2m’)¢ƒéƒ Í+l$*bŒ¼/ýZµRм%ñLÅ£®CIì$Dü²“€±¨73©vÏdQdiŸi XÄ;C:ÚC¨B=1öéMIèìÀ‹zóöÓûí*É”+4¡‡­H#ÉhŒÌ¨ºxâ$ú6­U´Û)ÂK"ÄkŽ-ÁÀˆ}4JÒŠXN¹…1Èû˜ð4ê—%ŠŽgº¬^—¦’Ê4Ô!1ÛW Ò<3hæR
-H‰”—Ard¹ DO ;è® AÖ=˾…"¼ÒÜë’¿mÕgYšU·ª²HH$ÝÆcD©£ÕZ{×÷µ.%F“ÒjØûç[?‚Ê0iÑ­Õ÷„xw-ÃL,!õáÞ9Bª¹Æ„„Y-üjŒ¡ b1j¢!Öß?¸Ê%*?Ñ<)Hk35N*!ï mEj©šNH3 é¥ÞbBºò­ZïÅꂈj+y›ï«L‡òNm®ª=4Lt´¡ów.ÑZUdŸSBK÷ˆ:Ê
-(†:Üð}Óÿåp’½l²_8JRÇ’(NS4‰ŸXßt¿ƒèPGŽRqfLômcZ8×î$BZ¢JjÈ
-›ŠçÛé8ÓÉ>v$9´+îQM0újxÔ“
-Yô•iE
-QfC=D¤óvO&öY/x=KÐý
-ºÌÃÅc)Ô@Œ óiª+²º@É”tı½ñ]”“¼ÆjCž
-¨ÁÀ.y à°Æ”ÌU@†mÝyd„nhÓ% 1=ÇzË*DcšNo…™ù˜7õN/ðQ‘¸”¼f=è—ªëz•ZY¾f8n©Þ˜bâM‘yθ¶t…i¥Ÿi6Gy2QHwAŸ ß¯@Œž©©¦“­%íLäÈ…E;f†ˆ $8MÏ–œX9*y»ís°Š¼¡¢Û^'„ÿS#¼‰ÿIÏÿÚ¤y%…˜X\»LdšGMÉ%¬yNvÖ‡zÍú¾æ¿þètIªãTÒ¦ÊIõ=W)XÍN’–±$z_’F†®^‚ŨK!—¢ñ¬ìqø=»UqÈؘâ$üÖûHú)Åð$¡€heó=|s8ŒÁ¬-îGH{0ß‹e‹0«’GP¥°ìûé6˜3âB²>Û¯²vÆÑ ‹Ð„5a}½üIWc<QúY³
-Uè½9*Ù©ð7E„c-k^S®^ÃN…­EqìR篂Ȉ*Ò+,\ý… ²NtrÁQ½0”‡³–ÌìaÃâ2b\­…g³|3~AHCZZXº›Yi¬5HÞ\˜›2ü3 Y ={M·7IqÀÐ $¦g×®‚3S ykÙ.“}“æ)ôBó%–ˆÉè…EÛ¾Î1”;efs‚ÙÖÓ ÒC¾ý!¢KçÏX¤ ŸÝj#˜vv™´xžÉŽKïÉ ·Šª`WÑ«\Ú‹s 'J#(LÞѤÐÌš-ã™ô"%ô“¡]Wåì´3Ü Ì˜Á)ÌÙ1Ô“»z¾¯bqÔ'íÙ‘€OnÓ‚•ºIÕ1H™N™êÎIÈ+vŒ9ÜöW„®O±ô±¤p¢n9¼–î[MÉŹ>P¦h.Þëâß”ñõ,éx±S@ J¥š4d¯»AO×=ƒ>Óï:F*“ ?vŠ*Cg3âïÍùP_„~Ý}äáº'ÐçObZ¡7V„Moò"ò¦¦áQÂŒ·éÀ$Á°áŒöÖÿèöºÃmßc !
-F!¢ôèçÆà&è P}õåj>«9w[Ž‚Úc}–!/¾Ã­ð)ÿN6†õR<ûÑĺ¨l†°Ä Ód[Eæ|ƒh:c¤ ÊsècÃ6ánò›“½Ñ¸´ªÕ&ÄZUpÓ¼<#>&?Ø[™Rr(ÉZÑBwã6$[0çuš
-þE4…œB8bG–QêÍoØA7óÑÒ˜0€ô„qÁ<„NX®™å;èÐY0kçù”ä€nÍ~ºî 'ýùüF-%c£•Áädý…”esAâqü/Dø:ÍÛu§ùñmL3ôî|ntFf^¨0 ôPƒáþbôÝA‡Ðï×Bÿ>¦ºÑºxR![—7B…1€¸!¸>#7<.æ#; Å¡0·!pHeЪ’yÍõ¯6‚Ø?Rˆ³ËNNƒvâ#– úƒú5doç°“àFæ.³ßUÒ¶æÈ¥O;Opšx$áè¡õ(¸Ÿ”¯(¸Ì›z’[€»ŽµŽòIi9X$)ö„ ©ùµiC°Q2!
-ÅX)*{T,ÇŒîåð BŒã¯·èÞ“ùÎYcuê¯fë”#0EV±Ï³òwJ†Å÷åd3‡XÔÂÇ/‹nZƒÇ¢ÿ¶ 0¿áë©s“9}Y‹8ªùñËít £—0bÛÓ™ˆ8:ÂÉ“‚2}tA¬·•Å×"ŵÇÏÞA‡ô öÊpŒ4dÖ
-y
-ÈËØwÕþÂÇA·œ®û¨¤ÝªpªÅêGKIþE•Ñ„°Ð,5cšÔŠ‘‰ ¡Iæøâu­‡l­[‹é–Žv ‹ZdÃ|B
-‚d1ˆ}Ž&•¸[•™žKoá*—‹ûê­@¤µÑlŒV_x´l)ŒÃ@ËühõzºJÉu2—È òÅ£AÚ‚/czœƒG[ÊP e'Ú4`ÏFåóípY‚x§3(˜M6ãq‘4Á ª"R2u¹ZFLÈ4~c”êã
-‡$@î«#¤HŽ—B¹Y‡D‚ü2‹†l[1¨ÎÀ².áC¾Äû·_Èá ÷RYI[èÅÍ8å‚.}ám÷Óöß6ôêû<–i"3µõéž.èzªÌ;“ü#èéþè¹Rîv?
-##á”qv¯ïVš¨¯Vñû]CNGûgŸNßóYTg [Ñ/ »æ9n9Š’zñ_“ )ƒ¼ŠPµ»ux=ÎÚÈ1y¯[’ÝÈ°#û}/ w" aÈÅoûëV—¶WµpfœÎÈäõôº+ CĘžý¶Wqmf5BݸY†„Ae&< ÃëzòÜõÈa ×âOŠò±t# .èÒÞv?
-š™[É–@¸ïštyÞ¶FÀÞHw‘ÁP²ð„Õ¸¿´ ’QAeq¦ÖMkò kpA‚õ¨Tá3s±š888 C+ßZ#¼ÊoP{_ÎçÄõ‰ÇÕh§öš‰Å‘
-{Ïõû'£æ
-Ö\ämì€#©×å>n0 v’@êšÛ:U–Ì””Áv—ˆ^`„ê6Íi‰ñ#–m˜•é<™l;5bTi#°T¶'#«Å1H³D©ý,˜™eÐ|['LÞgMc¡ß<üˆQŒ¢(lÞýu`3}Åy·£‰¨¡8ƒXœdH;hP=Ó†ÔY×"3ÃÜŠÑ_#>ŽI“…ºÉ&êHN<¸ˆALQW”Cì$­«¯#GPÎ_±²0E’¸í©rÊ xܸÚøŠyzù÷¬…$µì{/b´ hh3­Ìƒ´[—£·}ó†™SŽù€`ÕԗÊL%4dòdÞ2¸uT…ÆØLšp§¬Ûü˜ÈøŠš‹+–O“eò æ túëÀ.Ù?¾§^¶Ó´:ùgäP7K™‡Híq„[‘ð$Š˜K þu`iƒJ /*èÔ¼×ao XÇhÖ‚^¯.©ÖÏm….Gx+wM¶ÓßÛóá’‰Tã$ë©ïå?n@˜VSäQ5¤§©¾6²”טH2]Ñ¥Î!ÊŒ ˜„;98k¢ŠsUHÇÈC¬8ý©Ð!òEÁ2ÍÚªˆ€ ÷•Æ‚zø‹¤¦\ˆ
- oÁmô
-…¾Äâ1žKAxB+5 Åe¼¦>9uNšDë
-û°Žz]ª—üSÐ5ì   _ЗsÞ€8ÒÄj™×˜–Ž<6Ý…iî4Ý]Ó¡ˆ¬"9*f^³¸>ÆÕtô¨½jΑOoQ£ª£Ø¯´ÓP n?7„ÌK(h>c"Q!)>oŠAUf²þÐTc2–•/‰¥i¼x|ÇszEo "ÍzÁÕ›òɤ)l§¿÷ÖÓih‡„‰,bgâ§ð°«Ûtš¾B¥qC„Ä ÒW`â8ã L ”]Ónîq!dÝx§ Òl©jÆ Ö°}9u
-[ø0uŸ£ôQ®›"ÑA;lšNDâ—y—Bɬñ ’
-N×PÉV¢ï(óðuÀÊ’ØÊ¡Þ˜‘ÁT·t>Þ¨2E´Õ2'} ¢¡Åë< 2«Ä_ãí\¨âHÙBrf<•§òŠR-9á4ÎI@'=_
-B4üŠ; z@SèÔŒâB°ÛV Y‹æNW’ 4t °ÖQ~â{“1“f<Ô
-v«Žµ£Ñ«6H–+•€å½Äã¿+„Gˆý©Mü!'&CÏV¨!û3òå^·¸¡±¢þ^½¼,ÞÀGâª~—»ÅãÒ»ö¹úë` D-بˆ‘‚–Ç®¢&¡¹ µé¾b‰Q.üï³­H¯¸'«šÉPeÎO ©¤»«ÆÀ(TXfºƒ ^¦ËþJ‘ˆª˜g«TÄ”â„Qü¸T2“+ˆNÃáÎìû<¸Ô@$Rꦵ:¯ÄŒ7.+z"
-ÚJC‡cŠSaDC0|û僾Øëû÷ü'ž"ÂQN¼éÙÓ™5"Œ\!þSnãêA‚‰‰Ê¨G
-·'yl²2ï*¤Ð¸ª‘=GV:Rû-rÈ«ò CHcÊÚ¢Š’RÝëd%´ªÎæì‚xV>äI¨ÁŸÂOŒÅ@‰8ÓªcVõé¯BOÅè€þ½E½ Bâý¾A#î’ðf‡ÎÜ‹\GÇšˆ83£x~TLóMWhqAxSØ¢,ù¨Ïgºþ^[UfV¼-µÇت&–§MkZ…ó£Oc¸oõí›ÿIr@É‘]É™qͦUFž’ÜÔ£7£ã Ú”ÇcÀ£>RÒº¤SfI\ Lë‚ “ ƒ[­ÛsW”U€DÑɺB¨ÛÐôÔNd Hdï
-ý+Æ^L½ifä ùæí—‹ ,æxâî÷ äBBKðZé„JY[®¼/ú˜6•ƒb ŸÓ8¢úEÄvK<“‘‡7ƒÌˆLÖÝ|Uz€ïÎ/ºë½ùE¿aÉšªÃ‚z·þÄƸ~Èv+âX"׊€Œ‚E²–éüÃ@"\Fi›C× £iˆóœ##2Ü=òÃU@M¯b‘N\­ÑèVòç†D=
-´Áã6M!àê'[¾¯:D¯ ¸ñåêók‘BhÎBX›ˆKPM$ͬ#ê“:K±ý© Dk-–´3:H¢žåL~½©!þc¼Ìq#9‚(zÞ¶ "÷Å(“®N0Ç1u½ŸI «³Db AͨÜâÇ_øïpd
-4Ÿ'"Ùã‹h ß0XªmêWõ3‰IPŽ<ßç*J8Ô^a+°êÌ…¹âJ ž]«‹„àƒÑÏü÷-Šq™(|N@¼%?¦6cë0홿ßÇ"”Ô
-Ÿ7E¤t½¥¥K
-†üR>8xcÒšýwï9Õ´yT›qÈËÊpÎM¨õØ·Û
-ÑbZ!²ùåf®ëº:ñ²~š€¡Æò†ã)ïŽòOü·ß
-™âfÇAŠ§žbåñužÉ@ƒw¢Pjk.F?àC.?Â-²fé¦K •í¯®Ýe0’ÅN (=&ç¹x}„•&T‚P)_ Ç&¨ãÔŒ½#¦KÑÞœs¢¼JƒƒçXï·‡U¨ò¸…UÀ ±*P\±5Yg8J*°âø©Ý*ñ1¥1zƒI„0€ðÅ…vQB
-i ¸16³ŠÌЧj³ ‹AùIqo?ÖœYN8È=yp
-£á-¸`Ü]?D¥(…¼­0™ñ
-v¨m“§R_èÑqÎÜ&ñ“†ó9>
-²X¬fœxXAr`l3ÌŠâ–z(úô"Þ»Ná7J¨¡1ÆÒn¥KæäAÛΠu¹0´ÛJäâlùÁc*¨’Y ËuûÚÏS!ÊiÃÇÆ$äÊÓ¦®1] ö(¾ 
- “ÕÞݼ”ØÐñ=LɧoÖÁþàý&Ìæëˆ
-}ù’nDÂÜ…°û%-wHN‘]‰_×–!C±rn ŸŒ(+L²ëÏ·Võ}9Zhc,i :Xèß«ˆìÓ¤^<ŽK«®Íä¢òÁ41Ó=Ì „úô•°AQ÷uY%Ì)4F‘Ž~A¼ 4Á³¶ßÁÔa°Éñ—a†ä:{G§|£ŠoŠœ…™)VÔÅïa7ˆxNhGˆ/¬?]BãÇ: γëîÒ”]äó¦()
-ˆ‘ÄÖISc]§Áà‘c6¯©© iB©Þ/ÉSá¡à—b­ÂŠQ+ .V‚ÐQ€ÂÚNx(ô-Åk‘ÑÞÙJ^—ïè3TE7E"p
-KOE®YEE¯€zo~õ®45 8ÐÕ‹$£+Ù‚QࢋW†³”UÁ÷Q)–GÜjeºr^¯£[ªT'Ê,Úó
-•ôÇ_×2xq€Å¢e å©Mÿßk¡"8*ÛOÉ{rüп$Ï]Ÿ ™Ÿ@/‡MõPd ˜uŽy@¼Jx ‡)
-ÓKPØÐI ŒnY·Çª_º1KIÎì
-èÀg¥v¦Õ>} 6ŠØ+˃’†(xœÿX`
-Û¤™_Œ`3Å–˜ñÿ*a\>Jf]î,û -ƒ{nˆ½Å ªT¹õˆøÕјFûX%jr?Ó?TÍ„ó˜ýHÁï§è2 B\„ÿÞÈÛµzÐÀ(P´¥·wRÿ`»åpØbã×,‡á‰XEJ/ƒ .Ü
-Ô‚}/¨HÌ;tOA×;)à‘ RÐÜ~¨à[¸-ãߎÒÙÉPN"š€¨PCë)œÃ~Hª5£(Å’³«ËÖR-IÄ9úVý$ôù§;ý,RÉ´H*Qß=z‘Ó Ëpaî“~áà¿FÕJ EA¼¬Ù…Š"†'ñØaT½¼:Wƻऽµ½v½âV²2q$²º÷ˆ¥¥gjRÅÒpY±+¸.Û$ãÛIjr(..Ç(#‚Âò+Õ2ꄦÇ)ZÕÕ×J6*”–•o}òä µ·ï`‹C‰
- ,q}ˆ†Œ‚ŸH‘\´3â…%{‘É›ì¢}fÈC–R1é2ÿòŸ•2SA«ã6Cç;L9Ï嬋—IGÿ¡ðW fö#és›`¸*FÛQû@NϺ-’Ê ØD|z¼Ò=êõEc1yóò¨J8 #jýž£~FI5‹4A%`YÌwÄjDçE‘í%÷R­S¡ù¨îCuÈuÏ£¿3PDïÿ
- ^Â:2!x¼„ŠUÎÈzesè,ñ׸ežÊ¢›FJkÈøvÒQ¯†€ÄŠP/ïh‡0wɪÑ.®tÀ-ÉWÍÙ>;†²„´ïT:0÷°Ã ³®<NiŒÀ0×¥:¥))£>Hò„TYÒ~¶¼
-P\ò—AS4Ù©s•oPæLòEÊÖXx  ŠÇS½¶HxE˜*‰Ä-³R-Ìa2pÄ…¼“ D…Ý“€:¢A |f"yzß ‡¦ð"¥ê‘÷Ó³ö*æ ð^/#³5‚è¹}'b EA§$H‰zLOZU†§H-.ͬ†â¶´ÙÄ~<ùεç·Ûܹã¼êNÁ[uî<¾ÕØ›‡‡^ý÷ÊÐh¾Âž/>÷Ô)@ðzÿÇEm"&fP‹Ý«”ÎË¢òÉ.GÍA˜êõºŽjhòñ°Óí@h<Y¤œ*…†¦"­l â"-SÙ ÑIM6;ø>ÈÔ½õw±ƒdÚ½RáS£{_ÎQRH;ª‹%‘k¶P"ݾ÷„HðCˆY
-혆Spyþ¥Ë»t¸>:™Z¥k¼'kgAJOê'^¢÷È86D=Q8b©Ø]Êè?q( òù惺þå‚h.q«o\tÚaH:>Ë
-V¶T’n¹3©säõpâ±*¥kï…H©‡nklw}Ii¡“WHˆ-KÄCÂb¨ÍS-þëíp®T^WA!`ùaáYê|Gk_Tp¬ÇÕ „b°Pø”=³\×RðþJ,¨ y¸ô=W\•£ȼ40È“¡"kö÷5*“»ò»YwËD;r˜xq בIzB Qî}Ô/s¹²\úÀP[L zËÙãŘRQ'oÎgû¢ºož÷Ó^ÁdÛ(ιxê@º*[s¢"*#~®ÂNp*jÀLªXZ5©sô¤PÔw¿&“‰÷!\uU Úÿò²
-„„”$-Pè8»4„¸Òȸ¡mÆŠú=ÊQ9OZÃévT'Cvf[Ëf==oEÂËÙ“Qˆh‘ÃÇ1\“&¾ÊÜ7‚ôA>.MΨÖOôŸ¾\rCä„J£UcòýÊ÷@Rˆ#+;Og¶ûÊ<¹õ±«|-!á²…¢ÐUį—|êôó–rE‹I¬¼"ú_™(»yhsß$c>¨ÑÿŒ—I’$·DO ;Ô ÊÎ\·–} m«î¿Õs©Î¤*;Éúg£ƒ$àðïXDQ$\—9N¹Î‚Àι-ß.¨gA8VÛÁ%A
-=O¿â‰DÞá¼gÞëÇÑI¤Gódö>ú»Xƒ1¶Ãk¼Â•üú™•`Z=r_ãgJ‡µ.¸ÃѤ%Á±};‹š,ý^'±e@G‘ìx9ŠC0/Óép0ŒEî­uëu³-²°œW7aepSµœ×½¨i“bÃÁ›‹î1Æ[E,$%Š‡Õ6,®EI-D–ß †bC„µ„eÐnRW›„°R¡åÝFíØ׋VÆÕ`eÑel®V°ç9F±”œKÉ:J7fªCYÁý$fŒ…¦QÖ*Éâ¦N?S1 ŒÔchŽ¸ÁãØ8vë@qÀÿÊÔš5‡yAÆ]%(/ò@3 ÈÝ&ŒÐÕl.i1~¢Ò-6ù (u Ûec™£ÍAX],zo°N#ºµ7Ãñ>f c¶9Ož5‰¨•&Ðy$ø#™þšy—w˜°=ýpÞS`Û¤ur./!ƒÁ$Þ#€üÙbÈD¯¨‘9céLZ>ö‰o6Q.¬Ug‰ì”r
-]œ’æQHwáp(ºßÑ
-E@œêƒãø‡‚ªÔ1Kô*þ>)ìMÚ’CœÃ¸‰;v
-jr¹‹ÈwÜ@d–_]ï“ñ&E¯€I˜
-¾„‡‘söšÛ™zߣU¦ÁðX‹Ñò«$ÅP¹ªÀÊW—âA«UÅs#
-LF“D>><„Q"¹š1ÆcŸô O´¢TÈ F)2—É"É
-ÆRÅw‹ÞÔqD6XÓ$}¯‹LR8øRÞEÔËŽ±ßaœ5DóñëÀvóSĺ®®-€Nn¾pfq)YSO<&Ž´ñâ;¡¨="ë~»$ ¥Nþ`)]#V¢¶s›âÚ Y#5õX7ïÊý¢µŒi,,_áž>UÁêòíÔÜ6ŒOˆà ÛGý°[ÿéT ñPtŠ¯tç^„}¯<(≤•^¸(;–Û‰¨Ÿ•rd™zÂB—ÑÎÛšÄ+δµ.NNIâÕTK©Ã•(Ÿx#Ÿl@l 2dYÊ,ÑíáÐóŒN‰Ž"ÇA¤À‰?¦ì~GÍ»h NgßS2“OG-gI60/6‚]Wûh4çjúmIWô4Ž/·
-†DéƒѺî àÖØ£MäÜ>°”½w›%†P•Z¹Bi«fáEÐaë<8‘Ì*0ß²³˜ö4g›l²ÛQ\[맊‡AZà͸šŒ_à ËgNÉš'ê‰ÛÃñ¿ß¹Žüv›;tœGÝxkÎÆ·{ëð4ªÞÙ™ÿTNBÃðx¹¾P¹{/‘ÇäÖ²öËb€ÇŽÞ*'’¤ ¸õ:™tŸÆדÃAÏj|\½o2UÜEH ÆŽl¯¯dXÓ˜nÇþ>éÓ}ôw•‹’#òŒ6Ê fî “ÓüÐÎM¡¡4aíVEŒõÂë¶?
-Œò°lLÈPŠnOëå ¹!„TE‰»H®—ós‘] hœ«’Q6GóçNÕ\uó¸ò¦’@¢fº¬Öýï
-Á=Ê"ë(x¼Ìǽ…Ç "Љ ¦ùS+¬vÛëÁú4¼ÊN ¿âO€þúË)q€Þõ¯¸>+¹¾]tß½ûioÔ\ÉÀ]«kÑ"–òÉÀåüƒ §sÞ÷*’oÒ×þe¼L’¹• zÝ¡O@×ú7émõý·z ù›‰H«’Éd"ˉ)"|@¶I׆õÅ1H±)¬z’W$å™ðå¨1ˆ‘ô,k®¾¤—ö’Â<Àœ‹zï«4H•Q'ò0|ÙI¥ª§ Ï4BÙØz=&étð³ò'èL’lƯhàð7PÔÃ7Ø)¢ž«d–A(ʪóf Ž Ol;Pò¶•7O !3#¹ÄònW¬‹1„\,çý„AÖ¼×p™|ì'œ¨|q AÉgÌ,›¤Áp#¤Áu ¿gW`C`™Ì»çö°NF3 ꊬKóY'ÐZÐT¦KG»¦+ÉûtU˜µöŒ b]âå¿à^l+PÆ\%døOƒÓÛ¾A—µêz<½
-D–è&t.ƒ³o0’¼y\ Η†©YÃø¨#ƒbÕh'¬
-Y±!….—ÿ
-Qõ-7íW’lé§Í·:´_ï ¥GÊjŽhkâè îàH¾ôó ¢AÛ¢bsV‘ÐÃò¨8“rù§›ôóRÁG©=Iÿ r*†¯®|• «›ŸÊz‚é÷@7é¸è݉BÉÕ~LüÔH<pOÑ×~Ñã`fØÓxÉíßÚïTâ®Ù¢5^“U9oª¾ö«ä³3îšÐ‡uxà‘˜Ü˜=éWgáäx-˜ì:íMúÁ„ZåèÎàj?]Lfaô±°–/ãô¡ýjtŠ—1å3WûOÌYo08qH…ôü :Çøûù\c\™vî’;Õ²2L–G$lŒÞmŽ1~.6EþrEn˜5*/Þè+µ: gJ“IK|¸^ 9Àôq´V@…æÔâ·{y¶
-Áâw …¤‡r>,”ñé(1‰³¢B {…i%¬›Å¿ y€AwÃCDc;U²\D·Òzp|@#‚‰íËñ<êGªàVxhsnÊgo³¯ŸTWMýhxIî›,{™;¦A·3=•¥ãìƒc/̆Ó7 R0¸%ÈùŒ½_'L5S+a°<ë‰ãBp>8¥jÞâœÉÀhq~ÅMÄ wÔ®% Ò‚q§˜©Ñîʘeta£µd;]¢­âk
-}ã¢õJi·uâ«[4u £ìÓ0}&Qè¼æ‚T(™@6¶^¯Ô?ÁÃkþ=âò¼^]bx‚ üŽs¨è}=7Sƒ%qÏî U~ ŠÆôm>Bç¸|NTÚWÇ6$Ö¬<ÀÅŸÖ¨ÆçÏs„ `:‡ÝQ™:ëVŽ¸^ãAç%Ø&9UÐ*ݘ&)<­s¯ùqš³wœ[-x¼ÎÑÆÇ;ÃðQ©ß?VÐhRFÏ@0ÊÊÎr\­j¨|{ R°Hò™TwW•­ðÀxÊDÀDŠÉ=›Œ¼c¸ö%>64;w×oÉE˜”_„|‰Ç‡á:Ë~.5íQåãðV¡•‡Òƒ1O¥^G‘Zçf[¤)ÏLšª|µW…†Ý Ú¹Ïɹ¶Ú“Ê:]T<
-O
-Lû "±ŠàílÛ’ñ˜’´L„DRÂ%Ctv5<v1JYyp+EUx…b[¯M·tå=­äÈ ¥‡”!#^ZwE LVß‚€öVÔ(6­^$
-öEBïnË‹c'[mÝïyÍ(K|ÙD?P7c€åD¼™ýäDm‡¦rNÚR•@&#€”uð›êì9ÄòËËE©™£:zEì2¬ŸGòäÂ)Æ©:ª)ÒLç’º» Á@q%½U‡›Ò<¥N¢Áh5þܽ¸/Uãgî¹fCÊ}]®z¦_òßX½|owt:DãYs!LK$h¬†÷VßÌ–Æ0@æ…ô”[Þ¼™5\è G/sµ<ìBÊ…¯v½%ESÃÈ©‡`ÊJ0<·PŒyªòŠømȲWöÿZGôC‡O “ ¶Š‘%GÖ_•Lñ£.Œ×b7:kBÎ ÄÕú^¶ED¸[ÊkÞã´”ºv½ ªHÏAÚÄÅÔç:˜"šf±öÁêB¸AjA¨¨¼më[nµK2ˆø#kþ:LoÁ7hä10b¥8­· é“Ã0ë(†jK*¼3 ‘?AeÍ ´†ï³²Ö]Š®ZM_¤—|à®”zVB7Kü‹M² °#Ohø
-»6#rq3Œ<!9@djùheׄ<²½«8?êiç.©i!8è~®ÿQ@JSÚ†pÏ.°Öò‚4>b!e×bñx ¿¤ù>qu3cÑß’ÙÆ,àúý>Õ¸ D·>µ<Í)AуšÐ×O&l bx¥JŽár<fq”þÏÁÆ-Ñ¥¶ DϤ€äb%f‹ÀµŒ;Rþ ©¼<@ÿ1>iP{Œ-£Ã:
-¨bñL¢š=¬Ã_YEfû²Jü&Ñ}*ܘÊr by§N_æ€NÑH’³
-±üsÖL›eš±I€WÆðA·ÝÜÂ×GøG|1Þý·[Ð#"WX,ňk³¿u^µ½©Ê]ŽÚu T]>RšžR÷Ü•¼‘`Z¿‰È /'yöWXæ·Èû–±wú¦ ßa%i<M®8CÁ^Hýã‚Œ&ÂZS¶ª‰ÁÞŸ÷î[3ö*"®êp&ò‚`Gµ¦ÀÃ/ Ê)v€ðmÌt £có’
-¸âgÙx5Óž±4LçÐV¨<~êÂŒÔá@´UUPäŽ KñÎ*Ÿë4$MÝ¥Y½&žhiòexô´ ¼pEع…íèÈ+›É1´5èC¿\ê—Šb2bs3ÜF Ñ0eW•Fµ€+sÍ«÷ÉΤ öœRpn„•D"÷Õ=wÇvâ²£Q3£Ïup2z`ž$^¹GŽ}b|ÒzeÄŸ ZâE>ˆUO|fætô•EnËœ%?s¶Žs©£·9›øxao>*õû'óF)‹$¹Æàþ¹øÁÈÅSäÄà?ÆË$KŽ[‡¢+ðjyØ7ãòP»ð´´ÿ©ïÉ<ʤª<øþNAAÀëªÐU¨£œöé$UŽB‰‡`½^‡õbq¡˜´Ûˆ
-’tîÀƒi+vÉ n`"j!àŠ±ú“æãR~Ô"o•*´äÐa dнy&DÕ¼3†ã)êßAƒ¶Â‹¶ÝûQQ–ÙŸ´d±6Õ«aÙ'¶ËÕKJZÐ'4´'"§‰C׬É]‚Á%¨5à´è#GúŸ…Ä¢ð÷˜ÛÊ#a‚AŠÁX—³¡ê)sÖRÈ1JŒÃ:‰° ŠQŽv`ñR²Nšè:ê4÷;üPåéðF3g@$RÊáÿÏoº/$®Ü¼¢ûeE`‹1;ùyc‡Í!9‚Ò´š
-~çÊ…Ð)t@ÂV‚xPÃFÞ%Ên˜$ñøÒÙDè
-µ!¥µU‚OIP oÛ”@ßeùØ!VüÓN"9$H#’î}­¢$ÿ¢Ø6E5=€?âôi‡ÁM!4•ôæå0š~ ¢›U‚$f8 8•y^Þ)'…>6zPà™,^šw¤ÉL°éqÛjÜ
- Ð`ÎÍŠ1¹Ìu‹ü›“Ù<VÒ¸ùãœÈ5¥œ#ý`“YÖëØ&;Ÿqò6©¡/0rì››1o³t¢jFðhÛîÁù Ý®­ÃÐì ÓsyâF_ûÉŸ";È0&ä5ÆHÀ¢¨îý„Ô™ó´÷¬ø.e â"åR)1r¸#!Òhñy•ã» A)ndÞ‹À¢/2™q#óZ”#%ÙÈÊ¢ˆå›hÑ‘kÎœ²"èº26…îH b;Ù†'²M˜Ž'ÿ‘\€!ÂZc¤\œ7ÿuŸƒ£xÎOä5~üËÓHJ¹ÀJÝ™)‰J1„…Q
-w(a4ØaÞ¶mã~Tà3KÕHŸ'‰I5‹hco †Å@@±&û+°,¸îÊ{Ý>“Ò”E `/!œ®XZY%Qü‘µuæîë “²™$ŠóHº?uŠ~½)Sˆ)-‹¶)jXSùÜö¥1#ÜÐõt"-¡ÓÍÓÇî_Ñ붪X¯ÓÒ¬gs¢Ì(ˆ(Ù|%ExŽâ÷t¬3]kXŸIžÃ‚pŠãïç­Í{3hùPbå“Ž¯Íh\8(>pW­5°jàf ý¨u%oĶj¦ëƒÖ¹³[­'§§œå˜íõ•&J
-Nt$Jì'xEJ2 *ãð/·è¶ˆ\™@‡;fhg3Øÿ)B
-®cßØKÇXy-û`Ÿ’(•:!ÌÕ«z<1-:i<éÆÀ´Ý;XYí'û
-|‰%RØ}éÒêćBh«$›ÑnxòáxªÏü"TSÜ›¨È`îÆŠ0K”(¶%÷¢,ÇÞ•=¬‡3<âêLÉþLæ™ÉH¾NyQ^<æõU'(Rj²÷ÕMFÂ8+Es§4’µ ²óï†|÷FÃýÉ8€t—ÑR…åeD‚5ò_å e_¸ @¬S= ¯ÓñÊ´N|Ø>ÅŒiŸA-ºìÁë4Ò‹P0’Ý ¤Ådç‘Ÿ‹P£PŠ„;!Ô'h“Å_VD‹á.Z-¦ZÜ•1UbËnãäYC‹ÍßÝvæƀߩ(WLÅC#=d!–ž‚Àf|[ÜòN9EŒ&Ñ}š Ù\Ø„ñĘŽãÎÐ-ØoVÂßÆBÊ–—è”hbiÂTå¢Ûó8ߊ£:MéQ-„1qo°½n£WñÔˆŽí6@©¶Å·÷"Ò%«BF¢r¤MëÒRúq Ævñyxš^ÿ²ãØ:Ì8ôÝJ[t½“|6ÉŠF`ûAaŠ…׶zbȇ…&x±TÑçPˆ;Ië•S™óŒ˜Rx7úÌÌPa5Àe"¼¯°™ý§„Ó]`~uÄlx F‰”†íÅÏ­²ßlá/[Vô­‘‡k¨*óW©YÀ6¯]uj¤„=‡¥l9ÒšúY-–™z–‰ÃsqU`»EúbÈU2¢‚iVR]¾Ú£ó ²ä.¢Ùì%@^Ѻѳl³¯
-š…*$³Vmq¦1;%ë¤
-N‚BVÒ놖.mƒÀr3J@Ñm?(XùB¿9í˜îNËY«¢£æC©Â`›ê–í càBì‰Udì>]4¿Wè ¢¼Ü8éú ;ăjon® V9À½_ÝóÄZLÅ4ô^»a6ÙÀtxb|;HEæ)±ë4š’ „O;v ÁÝÌ /)!qÞ})Y¿¶ïöû.Zã ‡1q_üCå=ÌëRć2g5<àZŠëjEµù“\ZÝ(‚^h?_ÎQßc­|°•'*ñ[—5|~È>݈‡¿½ˆþÄ83LÉ:D&VÚée—À+L’dnvqF`©‘ãôœÊºx¡âd³yNE½îß”hGu<3%‘ÛpOÍ”Te[ˆwjTArL23 ìé™Bé?4ÈÝw^Dö
-
- ì…Ö£:¹;\/TÜgq©XCG¶)ˆÄ¶šÝÏ°M‰&‘zææ'@Ø0¥°¸ö+͈™d<s_¯jXf0ØS1š’±p³‰V¶5ĹVù²ìù¡‚ZÆ‘»W‘,÷Êu´0ã>èï°2þg¼\’k aº•¬àc`œíäíš# ièz]™%
-4¶%K
-A #…Ë8ÙMSÛ`ß:ìÁPd£KâeüÄ× ”,À¸€öãêh¿îè¯Ôÿ<`S6eØ1:ç ëÚÍ::FX4/Ò©ÕeˆêZ<Ââ<ʤ3©¢
-˜Möŵ₴ŽÔ¢dƒÄ€¨0¬Á|íI“©ÂqÖ€$ÖP•§«- ó*ÈYº<Ûçáõ·Ð¬°èr ¯L/ºöuê„>
-H‰Œ—M’d· „O0wè ¸‚
-ã)|6lcjÁáÒ"Ö2½Ÿ4“ÞƆ¤„Ob}ô QÓ4Z˵Š>´EóÙø¬Ÿl•9s´6uæô×H€=´÷Ï ŠÑºp—¸68uouuÒ$5œï6 ×½]{ë}b*;›NÿzinâÝl=N>Fô9¹zö®×÷>]oº—éüÈ.:æF´Ñ4sòMD{fo*)ÚŸ?þó£}ü{ígÊ_ì1´??…yúpýøµ*–JÔ5²ÍhW¬ñ ÉmÂ6¤§óEK(±‹J)^ŽÑî­„7 53ö_÷¼býñB¼ì3|ô™-D>
-‘Ÿ¨û¸ }X²[›Þ碄–Ý%ûpYä8(p Öi”eÕýôÂDŽÜxˆ™ÒlÜuå(©)0JöÕÛœÓe^Âi2ZŒ9ý\ºxft+2xªE+2$ÒçTdaáâM»&¤jy,ýïˆÍ±hP1j?®2ÍÑGs¨§bøis@z_"ψ ™Ž„ë‘gÆÚi"uÎÃinQ¨Ã[ÉÖ§®enÑ%trÕKWÓÑQohA '*“¦ûJº<e"4齃'P è©ÈÕ›,¥Ÿ<ã[ tÎ3r£ÀŸG=4£iÑ?sÓ7-+Ì°}w{ŒÆOjÅŒM ¤PN(ü¶Á­àŠ
-b»X‘ÊÕŒ'dñ ‚ZªÈ‡«æÜ;ñ¯hÒr ‹§é1Ö± <¬åÄ^};÷dóy
-+ÃLoÖ 8Ý&&ª¤—5!€ÎK$‡OæÕ
-®WÛ žl~ñ¢ îÁE›Ìy«Ü ¾¬9WÕé¢Ùë /HÄP‘Agér¤ / Ó­!Cœ§Q>¶Ëuš5mEår‹Ï2ÌQÊ™Øàr/3J‰aÆ*'ך¼_C9=NFù /-Û-¿°RÏÅs_­¤Œ¢ÚËrÇCyxå€ö
-,¿Ñ~‡n“ó‰ð
-ãj’284Ž+Ë‚4Åa‚¿ùÕ°ÿ ©bøcp%æy^Æ”À13¿O\§SŽ9悘V@Ý-¯®T€+«Î«¯ þp/VBN~]úãÍ‚¾Y¿[Œoƒ°0Κœ£ê±]Ñi®&-ïAOgÂǸyÆàÖîþþ¨–ÐÔQ²\ Ai'Õ™ûhô…ñO¦J1à)å•ŽÖLMiO䲆ó*œÂÙ·“Q7¨I‹þ8 H5ŒÛš×N`á_‹¬K,î]áëoÈŠÀ»ŠÑÉH?’}w­Í1Ì7dµ
-TÈÉ[²Òê‘(vØòˆ)D9D)n¸ŸÉjëRõéÄ^Èú
-:ðNĽF™¡wd}xÈv‚Ä’~ù O':PÕ*àb£#ÊLTå ±Öʳ45=‘̪-jE%¼ãMŠ ¢øyiV®:¯©¥áãâGª¾Òë@Õ?rpSµqèœÞ«¯RT¿ÆëÙ/æb*«ó–Õ¥o‹îÓàiõÏžÎKõŠ„ÖÆÉèsVO¦5“§Gœò0§ÔÉ6*’{³-'ªÑ|.ò±”ºÀoY
-«„É˯ÃèpK¨áÕýk§\¡Œ®òíÕâ¤F¤B)€@l®…hIW«Äô«_©p‡!…ň~wÃ…/ÏëÃÕM WžrèJ"^IzÞAö [SLÖêGEæ#ˆ¡¬u¼ u¯rïNf!ö«êœÌÐÈÒÝÏ^c•X¾"þ^´€³£EhŽÃ* ðuXO¿N’p˜a’v¿dÿÊAø($¯¤†Q“l“\fº\åt:†5§QA¯‰íÛ ƒõ°s
-ð±DºêPçgIž‡Õ7ëðï×Æœä`ÈàÑy^­àD Ï&©gÃÍÚÑ$êÓ' M”WjT"ïWÝüÅ^$¿KT‰%"žK|Qýôšà82%ó"½(¿ :˜à ôd‚’
-?oXÁOݪÈØãÜË24§äÚ*ô–/$"'q‹YWŠR‚\æÆË¢
-%4k¿ùGæ¦Çý£=0 Yå亖ñ5-1«M½veMŠ+—!cÐàûõvÕ:‹ÄŠEŠÈk¹Q_ç%wÌñmP
-HÙ¡•‘zê¹T8R®ÞɃiã:ù¨-"+ßyÊQ·Ð$¦.
->,NÉÆí*T:šLšÄWÁÔæ®úÏ ã’tJ}QFeqˆS5Ÿþ/ŒVrÇ(y,ÜÔ<š<xÝàüt+zô©¨vÃvðn4?¨‰†ñZÆúìåÅíñ·•Ü¹ñ©á¾—ß °Ñð4{?æ“ÙàÒxr÷¿hå×YÞw%º6/a¦`MÂ~=¦°Þ´¢aê¹±T²bA_^âBÀXÃ`’°Þ·d=‹.V’Â¥a åþÊÔ<‹VÄ?—‘"›½.úp'"oJˆ„(ú²“ V‘¬—E¨
-N}—ðÈ¥zŒÇ]éa€‚‡…ßE}@
-ŽÖÓižâ¦'qÀ®K®€çú¸¡%V?É¢œ%ý[K©ÀÖ(
-t
-*Ñ匭Í49oìðôÜ€6*âòÌÚÑ,“‡/[b¨à‰„Éb{1Ïw%ûK“Û©Ë=×û9@G #÷§¤t:Ea.¥N&x4n®n ¡däé [Ø°µ¦·—3¤¤TÚgȇDŽ<EVâKŸXÕ8Úüí_¾ù’W¶kÞ$B®ÒKÒ7“±îW‰€‚!Qè8Xœ½Ñ¶Ë­G–ÑO&Ë%··ÉŸùL¾ êüõp=‹Õsr©n"ã!Rñ]çPOžZã )0È4ÈvEÃ#{(À*…N “¨q0µžWaþðíßE?_ix€õ4§"h½Éž‡F0™tsÆ-b4ˆ ̃4=»¡ƒf^xL´Ga¿-â/ÿ;V\€·Àƒ«DRp‰ûc«õoÎ/Æô鸅ŒÈÀei›&¤}á° FÊpH/½ßŠ| ÝŒÜc/$ò2Ýž(”cõ…2Å
-æŸÙØbóÞ°ÒQRÁÈ.Œ  ›ú£ç@=–›¾rÇfëZÂp&沑JzÛVðVdbsÎaÉ7Ï=‹8Ô•30\îp5e'q«¬ìOO5¿¨juŒ#wNFáYžXŠxNÒpè
-=3ÛMYq ¾,õæÇŸsºz
-§æz)q¤+K2X(uÅEš$–7hþøU–“ ·qYøŠ¦¯È^Œ»<Qô™êÓÿª
-)Àía‡üV]À¬ä#Z´o]Þ÷<î›ExP=À^yTdJz`Ý=}3–…7Ê“œ %P}EÚ »œ£DÐÁ¯WÄÄ+ø¢¨g°D3*°*&';¤=lnÇØvè]ËQ<¡ NCþ ¦`ý)€= F¢ øöš=­©{Éò¬‰BÑ¢KÉߎ¼Zý×ïÌ-¾’TIyW §[—”ƒ
-Z,ÇÓw‰¼mÅ™ZÛÑ,
-=mµìAî<YvÕü39ÃeUÚ.1._÷¼u@åø?#:眓Ì9LDD |ƒÄÞ±—(’ì0£…¶L$—‘ï¦=Q$Zï2-s\_ý:Ç¡ýÖí!…1Ÿ1FX”‘±rÿ
-LŒjûM¬Ê”c釗xì Ùs5ÍdZœD¸AËI>ÖÇšDdƒÍÏ£ÑMYF9[‰¶ ÊqÅå6ÿZóX'šC3B9mÌo]VüyÜ·Š^hçó;܆¼dñ‰¹¡|½_÷ L8•—+êdQTcyµ]}—™zî!ûä%l3æWe;ŽŒK%øT:
-[«Þˆµ÷CÏð¯ ÷ dÑÞE([}ßç@áúQcrìvf@™HØC¦À.JKŽ» ò¥$ŽâRš ªåÍw2ï _×ìÛ ¬ ¤dQÂ^³HdÏÓæQ¥ˆ¦âÃF'(äÂYÑí
-nÂË@/~Tr\a’¸Á9ªñ
-e4”f¼)Ò6f¾ŽzMHÖ3åßé ‡€”Ït¶›˜‰šB»›¨Cå¸bÞ¯29•¾äÁÎ*d96àˆ-ÚœÅoÃRîˆkú }}WhÞ}ˆkT ©¨üx›²Š ˜ ’±WÁiX41¯Ñ:À8Öd%b¥Â+&}35ÖKÀ8b:T
-oþ+Ú øqÁºeŒ†7Y æ­GÇ0þ¾zÖ°úcNobo0<@”êâ,Ú€øÌŒ»Ù7~öw" t°&)œ '1§¯D‡;­ZFµâ¦©¯SK%[ÆuS±[ÆܘÀ3­sz|%}l¡(sì¯ÈPâ·ùï„ïÛ j%P?‡WmVûÒ–Eﲚ5©–ædÿŒ»|œÞ`Dƒá3†‰î×½ Ï>b¸ Žç2?ü$,Í’†p¿}†þÐIü©œÛþR—dAŽÒ¿0
-ŒŽÝèPæøDú˜7FÊïÃÚ±a]V~ÅÀÁ6gËçs>-®Úy¿²ŸŽŸêYA³57‘†ìð&·“5“$ö7Ãü­$NB¢à(Vœðæ;Æß ZrØÁ ÈRÂÒñxl»Ô"ÞdB§ñÔÙBa{$‘_ð³³ Ìv &c…y|ØK˜“"èqŸóïõN6ÿõßÿ(Aá“ÙØ™WyÀζ 7¼ ‘«ë&” ]SÆZq…ÛhHRŠòŠ†R±½“^o6®R}4„{èíÔˆ:äÛ±à[»ˆxŠN´åMY’”€&£ÁÛ
-@…X÷‘éO‹ö¢MmôÍ[P~’+‚ <¦xŒm¯‰îØ¥èç›".‡7AGJk»ŠØMô­”\öÀ¿ÜAêb[*`UèHˆÜ‚¦‡wu¬y ƒBûjÎÿÛÿý üma­+^âÙ<~ÖS|©…¦7ƒúãÀ…´±Œt‰¨½QX`C¶cô%&7žÓ<Xj¤‘‘„aj.ò2]L5ñê ç¨lŒ\e…üýãC¹'U÷;ãB *AèÁ*˱7¬ |5 BéíZ‚üàƒ‰¨hwx-‚©’¬8¼äDw)z@QWFÓE­³œ¹Ê%à0|7ýé ›o£Bã {A¢ù¥íÅx…4Fzâ>4ø-6µ"LkÇ~ýÃÓ c]Q0¬\ï_ÜY² ®Ò%±²èCx7”ãMÄãnû ñGW“-²ED.â›,IkO ¬
-È@°ç5ÞA:HTG”Xɘ”ÚéÅΊUŠ Î]͇y+¢Õ‹ƒ‡èØWýFß*’]œrd)âÁ¥¨jÜN%Oç9®Äˆ¹V4¨âýXBôd,x‚¨°íYÁñ¼
-hÁ2á04r€'³P[O–8"q£}~˜2$γÁ—7ÝÒš³šKVÕZ½ëŸ˜Å”q˜Í7ßai0¾©Ø^s9Þ®ìÑV "~Cæuå-êF@ã³iëŸð¥V°T qž-‡ñÄ\d(1I>B¯;û@3±ªà%_!X¥PT7žðŒ¡½ã8³órþ! Êb‹O/Âfæœp8}«:„Ì$e}š¼Š kÂíªåJ¤Ò©Èž^'^€øëZTC½ð=tF·â½B ûN{ «’ã‡yy dåá Krl|•ˆDrþ>º¿´·<z=ºù¶é(¸:‘wÝ
-U™án›ÿ{7Y# ¬ûØ5˜ŒÙdÊ”]§O½‰°f“dò•ec'®K‚X!Òsó6Ö}cÞ¥__ýRÏVtt¯åú=’€Ú8JÈ ÝG=* æq$:cz1€¶c’¯ˆPâl:K`
-D¼âJ®¦{VömžøäÇKàÇï£þ
-ŒOêÅq¤sˆ¥œë4”ÁWBpªÍÝ0Y(@ï¦ ¯¥oÅÆ{ÂøôGàÒÖ £¸ÔYä¿oñ'½ÅÖûê<‹:ˆÎ$B3í׆…pÑÄáÎKÚT·X+ËKà"‹k}—LM›ƒ|Ĭx59bFE¦)%41ØR²]q›~i„<Xo±È°˜
-aÙ~$ @9ìQÆfmå'ÞBøæ&/s&ÆðÄf=”&ÀØ'n06
-ŒåŠí´H¹R0L|ìBÓ96=Ãà h2P…D3]i£fU€Nù¸@;3xAœ
-v>A"^1ghÙÓ¯7±Sau¬öSf©`lÝ!*Pçì²›ÖWеäy*²ñ€ÌQëñeÐÃðÝ_™ÐÏ^r3‹N ͸çP-¾31” sîHgîŒ(ÓÓ$­’ À!¿ã 3G©Zê!ØRF\±û'dˆ’Ð>J¼QET%d¼¦‚DT£¨ÞòP@Z§Í$„1ï4IŠäšÇa.å—Àà9=V Q|c59`… ¨Å´çî ª‰þK‰ »°/(®¬CªžŠãüü #¹¿¦ùbÀ=›Að@Ü2Ð_ÕÏùªŠt_ÏÓÌìÂb8…%„É
-È¢#Yº¢#‹„`;fL§'äŸ@0#š[t%5ßê
-ÒY,˜aëXE5Wy«SRFŽþÏ†à—Œ˜<@üJ€½6¤‘[ìKÉOÑNXúÍ#Ê{¥°Öaˆ5@îÇüe'ìCÁèQˆ2ˆ[¾¿MÚjzs)ÉRfs;!WŠ]Å ®6CÎÔ™’ÛÃ!LKòN$Àñè[ã%òµ)¼zÓ'|tfw{Cî›m™¹¯uhÚ—çP;8õØ +˜8Yž³s±‚ _nëqm•ølä¼EŒK1¨Ä˜Uw „6Ô/~í !áÐRëNx`, q€ ³}­RxáM¨u0Ô É:0Í¡„…éŽAò„‹
-“&I¨¾Õ$Ï“pRm$:ËAò¿oÉ@SEµìR’©S÷î£.Ad¬‘Œ¾Çñ5>ÆÉŽÂ`´–éäLBd¥åó‚(ôðžP[DˆÒsãêæñŒ¾> ŒNŠM"=ű÷' ŒN)­qõ¸Ôfbøê¶xN†)›!2ÅŽS_šÅµ’“i‘ÊÛ¸tIpT/¹èR‘ŽÇ•S]ëȉ(ÙÍCš"LÉ'ûV"Ò- åd‚ŸKiêÇu(D r–›1t<ÎàNسŸô I è.ÝLjeQ²KN?tÙ &§}…aõu
-‹û¤'(Ζ
-¯•Û*@×a÷Ü”iåß?n': ÿQ¬Ì!Vã\AE61“¢&Ý6ãy§T¤õmâRÇ8qLP2ˆúcŠÿykÄ„í¨wi~žèg}½¿"–63&(` ¨ ?{¼›9®1«{M«á{T–Þ¦JyzL¬Wæ2#îNý^xÞ õëA„OÚGºŒƒ¬© ù´JA÷(r‘ãéù%!5VþÑ6>&É+æÔäzѸÔ^]ƒäô=H
-B¹$-³s$ø—¿àEFáœ#³,?T2:Ë!GÊð˜ÿ€Ôª£ñðuÜcŽTÁ''ã¼PH}²NbÖHEéè#AȬ Í››ÀKŽ¤CÜ,‚0Ž1R=¬©ƒÔ¦§yhókŒ<€Ç'pºI—â÷ŸµÎT…)EaóñyÚîte>דg5ò·;ïYÖœ¦›Ër™)NE+ÆÞ A"Ö§ÃÆWýÎbaE= µ÷à2(¸,a).8Èœq×_‘C6©`ß%@`£Æ¶%_…þg‘lÅ\M¨Cû"ð§l6·-.¤ÒdQ.V8@w©-¾0¤Ý³~M#@sª‡ÔwdG~ß<d^.N#¨”hÓw«h5ùu@Ä~q.‰ÌÊÕxw ]ɽ¥Ã`*Àû™§=F„S5£FšïÐWF8ñy ugÚ(ÆtMBFH‘B‚h),‡‚7úÚJù‰özwÛjà“8<2f>®Bi•ó´e¤û’¦ä»V?GÞ„Œ K’ÅÞÕÊyÑFˆÊ0«œ¾¼ˆÎ¢,ëºÖÉŕ]Ì#×QŽ’õÆ(áÃbÆ¡no§2<JÖµšWá£)í†å ¡ó*z¬j™/t?Š„-±¢m5(fGf;×à<& X¸"–ÚvR£wÑIW@9)ÄuZ.~û:uª÷q;ÍïAu-\gÇÄåGšôœt@Aè1ìÔ MXôŽò%.ÏÍó‘“ÚÈË' (w ra16¶h:¿ñ²Eí{î¹VóšŸh
-Å_õ8®£¾ÁFWyîý8H%ÔW¢ÈÚÒj69D£µS’¯I ¾Õ&ˆÉdF[&…Àtð›™}'Yp ,Â’Ï<‘x"$;§ÖM ˜±ƒLøä~eãHš Û«.Õyª¬dÒt'cÚ„4E­â:²¸vœz—¶BTÉ`ÿóõD¾éÉÍJX
-=JÉ ²¤P*FMàAù'žML9­ÃHQUªª½ Ål¡nðÌ g(ŠÄ› !sëÖeeüé<Á®IÌ€*5@ÊçNüÍé‡f~>ãÇPÓ}´aV×7jDk™ëzÆïÄ'½Á-ORôâr<´Á›”{²É7 µh!oKÚFU4Õþ$"[ä÷=¬-…?¾eH¢2°<“±·Þ(D!PR^Úwl‘)æšÉIy¤jû\°Šu':¹3õ¤u%FŠ%.2ÐÚ6öU%‰Aø8U<¶ˆ<ת`¤ŸDå¥4<? j%l€çcÇUSKCªã*ñ'DäL'€P¥9»Ž‹yQ P×®²¾€°´!Œ',6×»‚x";NQ$UrÿöÊ(×,Åýóôù„6²Ij=²ú<û0ªņ&õtZ£-Õë¡&U«‚1êá1ÖŸÒPè÷V áÒ$¦“9‰øŸéÜRk1 Úâž­9×GjÒ}¦ÓÕ„°6æ†Þ¨ÿîq}Úø[J
-s`ÈÈù(ÜÐH~1¤¿({ƒæù­WB%§ælÌ¡½ãÌç&™ÎÄ‚`w£±'%,­¡6¨% A¾“C²ù)&­íY|:±ZÊöPç>ÜHØ}}}N“ÿÉŠŠ­©‚зU=vúcmÜCn=–W„€¥vœCæ&ÑçUg¬É†Û-Ÿ‰‚ëD”‚í’ vÅ"ÊM |(˜Ì —ƒŸƒø>NfÛHÊø!ªPdKãY|.ÿ)n¸^XtCùðÓ,ò
-”¤$f2HA£{¿÷ãã´I± 7¯gˆ©qÒBÈÆ™AÜf›Ð¼·Ðö2¢ ìÒ6X€W÷P/ ˆ(;pÔÈÍöY)ÜŒ«p®QHŽcÕˆà’×xÃYQ’©‰w/¢;üâ)uz˜\ú.|’
-ºµ
-1‰hçsÏwaß™ƒ– ;Fg¨(7\ãÔoc™óòAi.‹<\ÆFé 11›™À¼€~½
-H蟀ž®+ F¶9ÚíÃï ŠÒ1(Lf¡èqÝT2 Ttøþ lúǨþºÖò;æózÿR[*B«Yü äèñM˜-Ï-ÙöÞ+èá›êþPˆJ®Õ»òæÛeŸï|‘øóY>¥Ý,ÏVŒ|Ñ»è‘*•AàîA Iþ èñºËûÞ‘O¨c-Êá«Åu‘/*'¿"x1–I+PiûEc@ŸïTÜÃ7°‹2¢‹×._õß+èRΆ9KSðÀ´ëÛ K*Šž´Uh&öÛ K¥ž¯{”my#úTÐ+ˆh„É $*°A†½vÌZ`KÉ¢v¬¡Œ¬IÆÓB“úÞz_“Ð*B—o¯#¥­ßx§£<CŽeÉ;ªÃÅ„£Bš HÓgY ^Ž ÷•X=tn\Äòº•‡›b…h±d`x2´Ü°/®2ã¤SÙRQÓŸ½´¾uvÞº¼Ùäzü˯¢$’ ØcD%PaÛ…æaÃ?)ìs„|”ôˆ2‘•ˆŒz1H×/Ñlp] ~Õä-QS¢á‹s¶„mµ3”j±a²=TååJ¤ß$g"‘5šÀ'­Ê<ËÌPaq$qœ‡@ì6D]º‡: Òˆ¹XžUÏ«ˆ¢,=™[ Ò‰I9÷ê!?ÿºc´³65¬Õ8z» 6-sQΰï°åx·VA¶ÞÝücÀB>ò>ÜHçu:2Í%&eTEMdêœÃPå–»bK9«\$¡@ÒÉ9ЧyÈÙZo¿©KèYmXÇÊ‹s”-{FèòÅ‚°t}\ÏóœÂw±Èd­Eq•GŒ%fYEpê¯bÆtÊÐÙu^Ž,¥>¶Ah-ŸCŠ¥P´ã•Z)ãª,9¢,_21¼ð(‹Ù9MdBZ‘ã*n­ð‚ÙÜÝÊÀV­B I¢õú<¤±ÑðÐ-(ÑÈžÜÔýAÿî¾–4œ™,®úyu‰‹Øjd+¥ôÄìò6èÁ
-Ásx ™ï’žh³9ÉòcÃD‚(þ¶ûü„¥É®ÒIÌ¢$‰‚ì¤=U¹w¶8rVY 1ÒÆ<óK~ÓÊ2Îfº$·ãGŒ_…èëc†f'2._‹²EIÐÔoÓV½Äà¿­]þÉžñÉUÌ$hdi« ¹&H‘:
-kÎÄ™1A:íåG©+%„¿d-‚O\f¯êò6ÒÊXÑ©5‡~9Içéd°Š¿Ñ°Ìѯ¤R’bW”°«ÊˆÏ<_C-è9ÎUæÌTIºœåzKbÁ€áj\cJRð3æ¿äðjéÓZÞÖ$Yл|…¬)Y‡AªxÇÙ‡|ß
-(ØsÞšÜ,ýA®ã&j5Tˆân5qÑá÷‹Ÿƒ
-Î`år…=Ž¶ã·S·§32µÑ7¥¯t†-B1–õS)•Fa¡ÚÉB•‘ˆ6Ã
-×4q!%ó‰S†õˆFÒ*S2&w¡ œ~Ä6ŒB«ç´MR·©øêb\ÉÜ*@ÕaŒ²ÄÒL[ÌÒ˜>¶\ør‘ãÞW>MªEŠq,]bBHGXªM²eÖ›‰¸âOçVFrõ7NÒÆ‘%aó™Ö¹cöAvÊð‡%ïjœ½„‡>¯w×!Æ ‚¨Ïë:†ÿ$?8å: ï÷”a9{I‡»
-mŠ)£çeM1éw¥³Yç™ÓÕ üà¸?<<þìÕ騹f÷U¡/|v„—Þû7Z*¡¸ºhð S±Èem•XÉUøí6™r¢®ŒØh'/]êèÃi0½³ªyšçμòp”bYÅßšÞ²3Žå0†Hà!Ñe Âî/†êŒY<ÝæemìLÉt#íÀ}þºû½Hßiè e†xî¡ù¹üSWm™õ°î^zI, /Ã?×{KS´ïǤîe¾PF$:{0_<îÒ˜ÕQÈPžFàî”´„©y˜› d |e†™âŒŽ8ѶpšãïQëxº”`ÀP.¾_xø|çRelå°ÜCÂS™«<}=ssέE;*^.uu”=ïh™X›(£–s*¯ =JjP³îóR’8†¹áŸÃ¹¾¬cÔNâÛ‚WèãêºÕz ½2ÓÝd.ìàI#*AîmiÄsÞ/7O ¾¯-SÚëû•?¯N lð¾póKÆV8”÷.—ûÏóp…Gì—ºÒ×!~I:@¿@AÑø~úYGE|w Q Yi­!ŠòŒv‚Ç>à³5ô]âR2á.µÏ'Æ
-³ñd¬G )ŠcÌJãZûžd©&•Ž©«gH+ˆ\¢$ ïD¶Z;ùà²B×¾ŠhGât=}hõǵw›I¥z•èÛÝ»™ÀÊù<Vo笸¶ê4{ÏIc'óùêñmVCš!®Á7p¶‡]=Î NÕmt‚x½’ßDÆÇñ]Ôl’_% &œÈlx|#¸%—ôu<B0í}ʼö¡½rÃF…{,ÃÙtà™íÆY…ÞµòEÌx"ÉêêÕÔM
- yp[Ç‘¯c¦æVƒ@å«_cð=±÷õ0c£#Òá„Q™™qôxžôé«ì‚ŒØa;.^Šã&Ï©·’¸›Ý—lþVÄÁú¸3 SèÓ\Mîæa63—¢zN•ênšãâÇú"go¢Pat×¥¶ ¦¹¶rŽ"Òɘþs¼^8?ŸÍÏ3JXÅà$G¼_PƒÔ‚Æ9·2é;ˆ ßgžðÂ-–~h/pè>žÚ(Iœ †Ë°g§ëœØ[”YbN<˜nk¤vÛ°;‰$u•z²!;gT†ÚÆ*‰N³äìQìä–ïW¥ú([±EÀƧ—!¬¿­…¡¬Óu¶µNÍx‡ü÷k°ëWïf¥y+þ„#fí‡Óù+:…‚V¸[êÉ·Þ v˜Ãë\~Ê3ƒ:187×æ _¶Þ˜ ø̺úbóç4w¨÷0áãÀONf¯cuÊ
-S31Óâ¨hèÚKΚíÈ
-1ÃL%[LmXí$ œ@Ònô¸Rx˜þë (Ú"K-$4ÈIû¹Dnhâžž+¬’=Ö÷òeð~)YV4¾¹qÇ—uŽô¤$»µò®s¸ÃaL¾=ß[„ ŸFa×ûµM'q»qµ€ÝOäuu³x=¬_JòpúPÂ_+4ü^d
-9œÒž:ˆkCŽž¸»mÇfÜÔ°Þ÷öƒU﹊ç÷Px~E†I8ç›Ë Æ:½Æ6–ùŒJ0O–~ê{ª½H4×ÎŒþxù\¡†²-þºŽd½¨‘¹¯9Rw€¶ÅÊO…Ñ#ßœâ»Ù&Ûó·“ÒíGûöuíʘw}0×Xq5O¾­ŠîviÊh„;ZìaÚ<Kà Õ{h Ô6¼¸ÎÓ<Ôø*9^4!x
-Ž ðœËRœ1^oúøê îG;+ZHL1Ê‹Ç
-*áZ+Jĸ¿uÙØðR¨Ba([@r‘£°Í{™»"…¨¨÷ò„˜®†Œ]Œ^§âVÕ ÛA2, »F¨š¶Žâ,³†H¦ì\Ã’Í‡Ç Aæ¨J·¼b 4Qb|Õ>v*X!$Xj¯”¾6ÜÑÒ“ÑðÇ[ê6ÝEÄפ%@¸°ržÚ©9òÚ°…,”;¦´(VÒ½he<ƒ Ç@#«¸ ]jyq(òL‡™e.È·’ðý"K BŽûg«ÚÆ-ðä°£±ŽNƒ:n.Y{uXk‰R½€pÒPÄÙâ¡«eRuøÛ4&îå/“¬c•ÄÍŒ…u]‹Ž`’ËpÚ1bgc‘QÄŒAÉ ;±B–IâÓhgLÂdΦhÆÖ™èòßã:#^µ2•òYÖ´–]3þ—ÎgªùS7ðùËêqZx­'–T¯$KWI4$CÏ ÷ƒø;“N'ŸÈNõq}'vhUã²F½®w)TΤF>w“0?ˆ¿Ó£““ài‰²§ì%J,šÔy»ü$JH´0§’yQ
-[®ž² X)v,F£á“ù¦„-˜PÙtï
-Òáh.æ¾~|¹ 3±Ì,Vb¬ èûˆ¢b¥òÁ:JŒCãà_\JóùÄ)m]éŠóh¾AÀ^uÅÔà0y¯ÂÁW˜Æ%Zb@y›0 »@ÓA^3+šY·:è>˜ùœÝ)PÖ€ÿw?CC–Ö ’$}5ó‚ݵö0]æ³á"÷¯¢—Õ§Š‡ÙzÜ=b"ÌŒƒÊéìCpK½ÏP
-Cs¬®| KŒÇÝ5… Áè<áVU‹O'f¤h>g¹ B†ù=œ÷¦úb™]á?îÀ@žÃPËUÝtºµ xLÚÎù(^‚ÍtFLŒÚNL‡(ß”’bYÚ­qbò÷ŠÈ¢è',­\IàA„¼‡!9ön°ÙˆÃpC¬Ÿ®eí)“ši+$:@–ÿáeùÏÇWñž˜0k\
-b ŸÛ2_+Ø´€TˆóFšwT°K¥w¥A8gŽ‹ã@ª“îäe‰·’ìdè¸h ÝF¨{𖮦©‡ù¬ŠÛæá?榨‘Ë0È8†`ò75'®¹ImÝœàUè.J]§?™‹ #š<þe¨‘JŠzŒâÓ“oÌ l2åëÜ#ùLa±¿0S0eòoXBÆw ¶`@òÄI7OW€ TŽ–ëqƒŽH<§ÅÔ*Ñ ˆbkÒ±‡CÆJY–Pø»K¤°‰BÑ?'ñ$¸5¬š™¤¦æCí“ ãHšqŠ!:2ªa¿ |X¤ÍxËû¶ŠhlÉÒÀb¹^/¶²”Jà*”E6q
-7
-«Ò+‹ N(ú/€ðˆÔÿ™šÉ0p hwNƒ´­„¢WÚÇp=¨™@¤×:{ÞJ žšhXäMÔVl†ˆH<Wl…+¦‡óZ|A
-^«‰I á5”}NO¦Iÿärv BëH‹”°zqÖÉ¥+e â‘Y W›ë¤Éϲ½²Ÿ8çš² "U9“nR/ôQ. Ñëoƒ(Osʾ3ß/@;´HÎoÊoÉŒþ~¶r‹•‚:‰E+®8VA›uu¶ „@ÌåPb˜×©Ò¯*Íž7å?þXäÚ ÆVü4è,6åOµ_rZl%‡*6í'ÊË¡°clE0eÚÅ]î--EHÈÁFOÝ;³K±Ž˜Zü2†7Ÿ­ 3È‹”ò1Š”')Äñ;['[t©<銭š  T…1pò!M†ŒŽ'M2i³´­!†æq¶ºæúv•`œ&^e—…çýøÊú­âÉQ óÕøá°•Ž#ùBvs®Š¤oy`ÝýRƒšô—œãĬÒ4{Û$„)»™¬~ÞM&§à$Ü- T”ñâsž÷„‘ËV_‡Ž0h󛆕¸L%Yã]:Ž":sž•¬È~ÌÃñâ4ª‚gŸbÒÂȯR?Tºä:™¨ÇYÜÃÊŒýt::Úe²‰þšr¼ÄxÆêÈ_“##‘ü1ÆÏyÐ[æ­ãɯüŽHdü¶HÁ‚2|Jiú¼”ï°)ÉUî¼ø,•j Îeä+)7ùB'~dÚ‘Q¦hc×ë˾!ëlKMÐ\€ c Ù"üùcMº\K»GÓõ²gEQS#ZN[6ú2 ®{ eÆÑ‹ñOòdÌs‘©ÌÝäSOŽ±!Vöv •RXH²¥…2ïáTBÝ•%:´rM°±× y*Q×Í3
-ë šæd‰_ßêy¤žÖa´<Ã\ùÅ­8 ôZb¿/±Å·âù3LÀv=/ÞD7øœ¤[±ð€’vžÞ‚htÚ°„³*ò¢F¬BWÁ&ÖÓ¶z >•­9š¶Î¤xÝâN‡J³\¢M#Q>à`K”»Ç*fî'9R‰­hifa)¿F•QbhÃgÛ:8?•JY* 6™ÔÊ‚ƒAðY ‘³˜p:RO‘–ØŠ|ÅJ›–q` ÔJ!
-"B-PÚs¶ú‡áF¤²?‹óK±½+:Á½Ý¢i7"7¯N %hÙƒ IéM wã}̯;ß9‘üy­ArÅ• ‘IÈèëè× TèóA½éüzôæ-ÐÓvÏ÷{ t15•XÊ@Ì„]wCÿèb´ž‹ù
-åúÀ:}âd!eJ7ÊtÖÓ3»‘0™Î•*¡þ‘:Š÷L,œvæuåТ¾¸÷Ž#¢»Aþe¼Lrã<b(|‚ÜA'0jÖÎÒ·•sÿm¾G²©»~$†l-vM||Ã\|aà÷‰ tžÈü&¶’a›…Ó%O”¦ðy¶uð\¸ (>¬˜wÀÐÐm« ×@ 9c'Þ÷˪{•<<`–ÍÚ2D3Ö'ÑêzVaN3r“Yª^
-†a
-«¸ðLýlóRÒͼÑ5ÚâkmqŠÒÿ“dLl׺¾Ú$K€Ø|í4‰‰Ë4n‰Ãà
-¹jæ/ñôÎ[Ê/XÞT-Qyƒ?ø‹£,¾i4 wìÄ´ÇžØ.E‰xnÃR¹FIÅ5ˆd;–\iTlŽì¢\^„K"Ph`÷Û‹è5GNü7¯Vš 䳓“Å;d}~Žƒg‚-yV–¶‘ïfÓ€Aô¿ÇMÍ¢3ÅJŽ™ãâìÄÐ6‡ªuׂú·(Ù4¥ÀN¤]§tVBÒO£¾•퀊ºhÆ­È8t¶ ÷p«(µô–vh8¿ÂUòZûrÞ0 ‚?@î9q‘–ÍTDäVB;õœ¤ÛXFâøD !É(“ZDh@<g;þp;œNüÃqöÕÏ«s@Wxγñ å¼`éÆ:˸[.
->fé–bt½±'Væ¢Ø)¥ªÜÊ¡ "®°œ%DÃÁŸ­Þ‹à‘D|å ŸÖy‰¢·’·(z-2ÊüÈ«xÉbØÑ\DDQD,"s^¹”´¬‚‹!”üuõÄS28Ù%éMÖùfÃJ¾êâχ[}+ú}µÎaùºHútŒn9é­öôxe ù–]-½JI9t•3wLkC·9ÒÅÜ ÃÏÎR)¥æeäã,Ä¢|!Õ¦ 3>%bpà­$ÜÒwý¸,Óuz<‡Ž;-9S¨ê‰ÍÎBû #ltžø/:QÞž ¨:¨K¾㬔§é<0ÇÚõuÕ†)’j8µ¬‹màaŠÌhj§¥`4§ˆÓ–aÉ­Ø€,†[J8–ãਇ—ภ÷
-Â&¢OòO,»wìÐ3Ö'K·Ãˆ¬á®›m³››WE¾ÂZpŒM'ÁIy(yóµïEDDl(ÅÛapát‰{3ZÊS—Káö¡rU>¥Ñ°Z‹¸¼/1|+bGÊo9’Жåv÷N)çÀ‡9Õ’…­¼¨<~!%]­¾UûaÔÁ½™3E!˜6²ä%XOÔŸ»¡­Ž¿ìÀé6©AüŒ-#„ˆgÂ}
-dÕ7×DaŽ@Ë$q4ä86²9ÈŠqÊ£*!«me’±²ˆPx„|í«–Ï¡÷gz±‡õ_¤á¥è÷SQYJ‚PEÜ꽄åÕEJí±Ä*=¯ŸÚªà£qìãóêIv9ˆvî¡þ'šs*ˆo­o¾3˽b ˆ8tžŽ Úœ½ÐNø;°cB±òxž
- C
-
-£¥tI/àY/A›-FþÙK˜g$:AÍ-ì R/OÏ„)«¨ñ@h‰­ªœ¥rfRæ¤dM!c3slUÛáý4+WHšAŽ0Jh—Â#†sÇVL=’Åf‰¢¼ikN²fÍÖÁ¢iMQß±Kx·/3¤å‡¹ôÒ¦>{0T%I0Wê%–bæ û:ºøá=JÜg¯+wå´D?Q‚žÂ%ÊH’b+± k>/EïñBÇAëái(«ž"%EZ'ª´ÍXRíÜŠ¬^¢‹‹ñäàýyL"l»Z[NŒKc”ö¹ùæÆÌ(P]Ñ+Ú G…˜—¼KÇ¡Î>x(ùŠQ¡¹¬ ¾2¼Xiŵ,}¥{ 3`P+“;s¡xãE ¦ZG³9‡ŒS
-UV‡Ôœ> Fx (Áǘúe§'uØ\ï1Rð?¥ÀÀ0}X2#>ÐƧ\•-d»ØJ~Ž|µw:Ž§žŠ_«ÅN¢y ¬’¯Î+4°ÈW=~€ 
-RÍC ÁpțɀîôZÄX‚°)¿1|ÁŸKbäNÉ’M’'¿L‚ÓfÊŽE~‹1!Üt+Ù…ñR “Âû: -EÊI!]^>í}E3{â€øËvVùT(ª:Õd¾ŽwbfpuDé¨A”¨ýèa´:DË@ó¨™.”`‘è›0vâkc¢sy7AFÞð%• À'RdL0
- ƒx[<ž ÕTŽ)Nð¤4xi‹"F”H¡Ø;ÕqÕ* òF¨=è Fes…<~]ññ¿ŠØn{8!›rêÌ¢´„œè) 6¥ÑLV&ó—AB/g¦ÙÊð_$“°\YÎÿÝÄ:¦ai"˜ËÇè¬Î#•”´ŒŠIÐd4”=ó¬Ê^ËJð CtµÝêø’"ËÂØ’åÓð6Ù£ÐZ)NEú*9‰žyÀè¥"«­j%ÈD‹7üpŸ†•ŽzÅN»”8Ÿ7FT1;IXñKáCG@ÚÃdYdd—˜Â*DÌ׆!71¶×#ᤅýW€
-H‰Œ—AŽd¹ DOPwÈõ
-ê„25¢w!4Ÿ ÒE»vŸsʹhN¡:ÔÏEÝ%¼ ’^ xÊЩfÍ÷U£îO>6¤ ?#Mk âéc¦ŒvAzS®>ÎUÑr´dµå% Oiº¯JSë¦ÉëO4*Ñ:±ñ¶¾éM[Z¡v ­;×tò¬w Á'ÃB¬Æ8Õ¬ú’ i1ý´ dÓšöéùëœF9[ã­;ËSÚ$”“Û7„šµÞ{Uì<=“¼q|ŸctD39/÷¡¡.|—A~Ŧñýò„%©üYo û&‡4ÚYÜ œs4#ù1t×ScXVÜrƒ4(¤Ýäâ׃”†µë10cö”‹¢_›a<á‘ìÍ÷9ÔN'ÕKåW â;é*ϨG y qõ²ýýð4¯H‡lÚÈ3O¶ž½ºcz˜ ¯&³±"1Æzø©$xíüÐ{o âÍé2:ñœ¢ÒxÍ ±sÕð Y片î [½ »Fðï¦?ù–ÏÌÛ›ï½+RÎ%¹çš‰Ÿ|ê­ÉNË×HúSiI9HMܾ¨ÓsðŽæÒŠf_Å—6g“âÙ³á:-sSÔä2h5û†dDBi§±vLe iÃÚÄÅM³]l¸ìSáÝ,{úì<€FÛ¼ÓÖú( ÈÌQ*àHŸ©± KZ.µȨ"sùDÎUƒ”êl„c'àÁ¨µöbÍ’^X} OÆHðbžmÜêˆ!øPR—ô¾Ñ{¢ºÈuòJ{ü FŸ†rÏä÷1¿]ö¹@E5FƒÐó6h}Ecn«œ_ž®HS•sÜÞ¤ÐJãa\Oïí¤Ð év(ÆÌ{½˜£5÷` ê2™&h©]9×|™y²ƒ:TãÓÎU½TovŠÂÉ©IÖ±Žá•­”Žm" £)‘¹ïAºÈC8o˜Î µ36™ó¶cx@«x![«ïÈ.:Çtë2º¢z4Cž«\™a“jrãb…>gsdÚR¿ *åƒ(¼ÞõT3û
-&8|lâlC1c•
-q"åÎ1 ¯@çSLÍÇo€@K’oBO8_AH£¸U‚3Û §Zx¢CÎœ¾-jŸœi턼{_Î#o ?÷U¨‚éÚõÝ9Lë¹™v P«7)ˆrvÝðu=•—ï›x´•?Ã_]º_"Åð É;ƒÑK· Ö£ûÌLø æ†|-'FŽFù]»èÕDjºÁþæ×â¸Ƚy\G]÷kšñÀj÷Íd‚¡ñ1*×¢4<¿ñ_½IGO¢®¶?á@‘ªI]Ç,â :.[’e8yi¬ùéLLŸÇûÉÒV\Çœ›ðtÝÄœlNøÉÄOâg˜âëœ$>Åì¯aœŒºGF7rõ=º„ôßüóCÿ×Çÿù€<Ï
-ƒ´¡á½jÉ@¡ÞÕ,þkƒÈ®`%—Ƥ;:“‰YR÷¹@^ºÒ‘®ß'a¬-„ÄK
-§xÑôU¸º SŒ”I§§„hGáŒo ??
-5ÀQ<´àþœ,[L–1×U§aª–1LL.ãea|é¾j>‹®AJ ¹®JÀC‘-’ôîþ”5}ÛÅ×h8ÄBÀ±Ñï_ÕäY¢€1•ÄAݤÓ*]„…`ub"—’ Mî?Ó½Üiµ3–¡4
-?
-î.DµzS»äyõ¨e‡é¯¤ëÿP9†×žÇ•$Žæ(«6Ö1P„aÜËžX¨½ÊÁÅÙÁüMÜM_ÚRUª™Eº|B¬7˜›jG}D;”é°ø6ˆÛØìZí hÙâÄ ¨Þ^› \föô¥k« ;y›ã¨gðÌ{zÛÁÎUlº K0nÏqò>ËÙ)8; Ù()[ßãÌzÁuè9‘ÊPÆwåïs—¦Õ§wgõøwA_%ùó;ºý'Jßÿ
-Nh–ÉÍ=JI
-Ju+þ¨_&Q[÷„°˜ ÇŸKäÔ¿"¦Ç‚ÃÆ䣼®LD"Uî—A·®E{D剮RÁ!r@ ùWQ9®M’ ƒ¾õ3"|©@ ZÄ˺أã~ꉂS,¨ù´>Qïº×;·b¥ù{{@bqñ)OÐ9ÊVY솤®u ¤NØzeN€¦ =„.€œGÉÀÃFxÎ~§í”%G'²p7 ö/}¤—Šî”Ž­S
-Þº>;gqAíµw…ZRW®Ì”î3eZB„,\z°~zÉwíQšr­!Øó2D "ÃÆï¶+@0ÔCÛƒ·hç¸'ÞŠ±€Ïs¶Å¼oïèóì N¬lÂÜåXI-ŠW•ÞçæYÛSXje»ÔY[Ö3b$õ›jj¶È=óª1¨V(6Î/Þù;±rs;ÊÐOÓ¤xr€åi{Ûù
-cÒþ1\_xRÞúT{±_Ÿ°;v©%X–§¥-ÑÇ‹]ˆÔîÕüƒ¸æ·ÿóÀÁÞ4vqK±®Ó8š±d º , n–ø,Í´F
-Ô’6öf÷PÞ„5ÓÃß ÆG ·ç`þ'ãÀë[ñ$Æèü• ¡D–•{÷vËŸx8«k}¿ƒLâØN±3÷a¯ƒÉ‡O˜þ @Ÿ¢3ŒÆ˜œ½ ¸¸†%hÛ)ƒâ±7 XÞIt|BÛ„Zi7ŠL¥é•§¿³ê›L³ P¡Rµ.¿õ&ˆ^™Ç¡$ÌäwÑú¤‘¡ÞO ?dí<ê‚ÑTÁD²£Ž2eK™òšèjTÍTTƒl®R#®Ø›Î¼S1¶b4kŪcÓv$­ý×@ «JÉúÀ„(Ç“ üe’5ôɆ~b€Xî²L¤‡úu'µ3ŽÜß Ž‚¡‹Rï8c† _ëôê&ã¨7×ã¸!åÙØÖkq5†b+àìkæ ÅOðß^Fø ÷ˆÍÏVi¶«`Þ¦òa)¡)bÄ(7—1#ÿå•Îì»Å¤…Çtž´Õ‡–g÷'ÁiD
-K€Ï²'ÝÕh çVQbÖì-˜vé L@Ô[„­ÁVÐô.?´üQ¿¬Ö·îÐ"ÒÉtQðÀf~HŒ'¢˜{D^,Ä'45%?‡BAÐÎÐPÏ!f¼̩€âF`XFC™N?
-îËÍ(&*ÉøuŽÁ›.Ušý.çrIBÅß·-¼ ¨Ç”Ää,„«) ²ãpšˆáTBEz¾SÎß ' 
-sÀ $ ¢Åç%Ú““}9_è&¤%võEï»ô»¼ÔàR|DäØ‚Zk+Â|Wço›ô=)Qr••‘ôFT9Š
-LÉ;ÄáL>hOzõKÏÿ\$ §+Èä怪Îtà£0]Èu­çž ™b’.r”K ALd7HmÍ$ó×)+¦~úlÀ$ jÊrþ®†™ #ÞDÑ@X\÷*Ls½X(LÛéÒVc°bØ€d^!
-öp
-ÃÐdÆ/eo:÷‡[¾%QæqEKESn&…[B û(dPì©|¦¿u{H-åŠVŒ•ø.0¶Ìi›!b
-Öª‘ÁÝôËh1óì IsËþfTŠÇ|YߥFᩧì“‚ª1Îþ•súbÁFž¯ÂSºø•%[àQEH—Ûâ74Áìû,8š¡ªúÑÓýVJ%ºŒí“7œ‚Õƒ“â61<Ñ-(u9È»g{‚vìyÜôã;}ó«c¥ä(
-™Á^\Gg‚&j/®þ
-}<›%£ô‚ªôÅE˜ã2Pß è#ñ"|
-G®!!Â5,-þ…ÛV!hvÛ
-‰ÖDç©'¡-Õ ì•'{V·'{nM
-v˜É€²ðs:MõfGA;ƒƒ©:&µ„î¨i)­K¬’m>
-1…*oT®“pj5H‹þ=ÜX`à`â¥öøÆÆoGcER¨ñºúûk†£Áênu=A–ì\׎o'Pú•ôkã­?d¬ÛWÇ^ìè˜ÄQçÂí+î&ª3‘3´8¦N5q?ýFjÄaj{U‘WŒ`¥æ²¥¤‘ÐBmíÃ[ƒ˸ák©(ÇïÀy¼îʬUKÜÆÔcžßd\ µl™Z5=ûUH‚Ø%Á3Žb™Ò™Ì}fP‘¿ÁÒOM5äó`²Ù‚РǦ
-Q²¹!ØV“©¯54AÒ"o‹Z˜7ôâ ©Rc¶só?IÇ ü)‘Ð’b· ÆÄø¹àL]l}äâÎX@ÈŠ²$TuHó(Çž#$„ML¤‰¥)u/¡¦¯/–E½Ü¼J4‡–eÿJ‡XSäíšš²¤Ê<µê‰ò ZUÑò
-7kt•ó9áã03¦šã‰jV–܉)ï‡'å£Ë=ý ´gf 4°žã°Ár«ъ´öË[ûpa5ölSn ¶ðw»8ìíŽÕçg OÐȶÂM£ÈE~™·1Û×Ó‹–,öfZó^!(2Aࢂh­aÖxÿî&·âÝÒ‚y€ìédåÊmi_ÓwàÖZ Œ$Ž38š¼Z‹í¼6µ§) Ïïq_ ªÏ¼–~p”ÿd,†¶á1ôU+›aþÞÔ™áGQÚLGKµ ©ò‹ô—½®‰ù鈰ÇóÒ 3ž“\å¾~Ap»9·  Ru¸òtnSåű¯Œo‡Ê©5 PTËy
-‹¦Ù£}4/)ypè;CñÁ¤o2ƒõ pg¹½k ÔI˜¿ª=œŽBéR̨‡5»'‚**„LÞìÅqh´f)‹ÕÂìµnŸ äb¯7ZÛÉ•_Áb–ôbý fÕÌ{)‹ƒžòúñÎýƶýó_üû?ÿóG&ð@b«‡¨k©Çùzîpá~AÙå»hœ¨ç‡CØ@Kî/ºHµeZ)F±;ĆøCèÐ|9Ä ‹„…å%N 4q'ÔCû.läJÊŒ$ÎêGUšFí!˜Œb@ <˘m7‹C$3ÖèZ™ƒè¨ú)Ie&pô}¾ø–‡0Šà”Q¯Ûà
-ñsûï± <iŠÒ˜ö`šÚ~Ü'†áfo3²ò|Míó£&õ«€µzì^Fœ¶xýØNŠ;ÄÆ\ëùðð;d?üVÀçwmxÞæÑÎû«v;ï´@4XïRäQÏ D€³
-F™/ \ž¶IåÖÅœß0YüONzQSŽ¶túÞÏ ”'‚’ª)Ú
-‚»›ŸÎ®ŽôZ°¶2´qUMˆ<ŠÛ£­ØQ©•žWÇ™‚ßî±= m¢Ú¸å%hŒ2æ;Ѹ~Ȩ‚ wðv…°cÖu‚ȱci–ŒØé;0‘×àS¡ùåÞXâÇ@rñ_ÆËäHŽ\ ¢|(AÖ
-š“JØ|™ñtº9‡GfÔë›m~ •Šóq¥²È@´bò¢¶Kؘ`#ÐÌåÕ<œ`(è´¯ážÅ‚•)ÀƒF1Jì2vxŠm²¹vÞ g2|œÃÔWå‚LòI5 ‰jæRvÞ•ÏÀT±î×徬
-ƒ˜¯/å^öR2 qLÆÊ7 Ê'™ÁÊÔ×Ô \äV+>ì³ãºJjf^>’ œP‡¢âž %9%$¨ƒÿqÐ6ßÌ$+‘w;e ¶C-Ëhç îeÀ×ÓI¡a3’ò@³8‡`j¢k÷éˆ# ÚrÄÉ!6!è/g™Åj,ecPâ,Ož”lw„Êh¯‚)ò Òo'†`‰ÑŸý
-ìy7´øŽ„b`©!¨ 1ݤÃ-£þÙÄŸr¬ŸNÙ!|guJ¹Ýd¼ÒLò(<úºÉã=ã…™
-@$‡cY8U|ÛØÖâYÜä­Iþ¥'ˆÍÁý`^yÛÃeæ‹­48…§öv|Ó|‰\Šª’Ü&*3weˆÀ6 <Ê;_Ø"ù)š›ŽMº!üC÷^Ž¹ÏËá.÷¹;¾é>¿Úœ¶àVà¿nÓϽtôÛe;ìx,]#ÑÓiý<@‡˜ñü܉.þz'ñEVÈ,25cëVyô÷”q¾ i˜Ø*gÊøR,)>‚j‡3»¬:01²X;†‚\Ÿ\€a)¾brµH¿f-»CÅç$Ë8Äœk| gŒUÇÄŒëQDÁ•ãʆÈÑ` P¦1}Š\ÐäYZk©¬ã9D$‡»ŒÔb×m”8e„åï‹rŒ®³äEr¼ªcÝ ksÐ'hë(J‚ˆ²½Þ4¢Ì*½ËDŒ$]t«ËögÅ(]™V\ªÙŽêöxúI%%<skÄó6÷~Þå_ºƒ¹Ü!Î}ÚiI"#mJGÈ›¹üõIÖЧ=ôØk²—)·Õ“Wý}Æ@_¹ð AGÓ¡ôW©‚\4ƒî‘:Œ<m#ºB­Hnþç ec’…z±š|a'ZO¬ÛÉö&éÜ×~NìQM¢¾y´²Õ?Eçûî¼[Y ÇÂÌ)q!-ÇsšR®Ò.p\¾Ú†fàGŸxCzpXüQ ³¢iur[1ñMó”1¸Õ-ÔËú«*0¦ ?äò]Ð˾Ž ¦ïÚsrR ;•'ž0šøøH¤„?cd¼º4Z*‡¬ì5²[Д˜B\Ú‹ú ÊL Ùb7a‰Ì­píıá´A
-i¢,¾ænÂdvpÞ®.ãpÛÌÞ!g2<œSaa'”É’•H†i÷‹LJ¯¦ì%.Ì•l9¸^Cˆ¯Æ\2ˆ5ÎÉÌÉÿØôsôÑÆyW@L¹$áðɆ4ëUüÉE
-ªPCã]C”Tæ‚ÚìЪw×…1áa%6+pÉâÖWf(gVl[å¬\T´þ*œùˆPï o$šû m€tclqÒh^Ú&»@ƒÙ°KŒYÔ ’»¼YZ%
-1^žeÊvR0}`8±lcZˆ9'¾„µ–Ïç<BftöGæÂ/D ³Ò¯¥©²ˆHZ·B ¹hÇw†UhsóC #Ò‡r5†ß/óÐüæTùÌ°¿¾¡WÿÙ9DªSTֲϫDŒÊ1Xgs;—Ø7¨1[ïvÂÐç¡Õ¤›ØYV9™/Ebè*%Kòý— “¦CW,©O|zqy*”ÄE—âÚ F£ø9d(4QŠÓ†ñÏÑ©º_¦ã‹( žÁ†ÊÅíæcø¥}1º¥„WÎCçwÌ—ñ2qnñg½cúÓ…`Vfõë$<{_៶!Ä2vXdé
-„WW3†ÚÂuï¡`
-çPF9B¨
-«Ä°ÈÜgE‘YÎÅŽv|ØÜç°«Xµ!;òg‹åmøÅ=Bò¦‰1ó³âSOJÌú1@­ìs†2S(øµY" ÙìÏÞã#Qµ{5Ò4þù#ÊG×x)›ÜkÓâM¦ÀvãÄÓÞÞ¡ÇMé>6L Q†•í×§Þ Ÿøâ ôÏV½ª5˜¡`Œ螃œãþ¬¼tå?žµÐttqä)•·Ä¿”|j×$S°:2Ü1Äšéï:¾µý8pœ òŒ |9|Ø;½Ä±÷r¥¿7ˆ· )Ï”ã9jÅà ÎЕm,Çn
-Èt7;!T¿Ä$ã€pq›¹5:øloZù
-!OtŨ©AÉhÉÚ:œ5í´Š…%%Ä£ð7Óôöéˆp4Ɔ'ˆ¿¢8Dʶ¥mÎ6&S‘§FœEšàRß{‚¨S2m­±Å[N $?ëã"ì*ûeÂJC\è÷Úðd›Ñƒµ™<ø ‹!-§²vX”q‘ÿ›„ø} {~ü«bÉaµ<HŒè„·m¯2Æk²!M–”¿–°@ÏTË´2–“Â;}Ä"|¸ €ƒžŸûhûÐ$ÏÎ2#:_@lMÚB„N
-Âê(~äHBX ¤€cö{ÙÁýàÚÉlüÚ_„t€w]‚²ZAÈ¥Š[&‡L`&•‘\/ãøÿîRn6=)Ñ8PJÈf@&b u<f¾²²i͆弾„²Zev¦rúP‹O.úvÝ/wÜÈr$Š®@{ÝF‚ þÍÚwVPhO2{ÿs., óñ¡h4ªTWd|îgÑØ+ˆ*¸ñ9ôï4& ðµçNTˆ<áÓJ<>üâ h Fz™Î|ƒb¥:¼° •PÊñ;å"Ø$ˆ/!þ”Ì“YéÞĦ½nñE¥2­
-óÝ/ÓôUJœ%†lÒHoƒñzØ— =ú+hm{~h›d
-ÇýÜ€¨+| ã|
-Òä 7BZôå#ÁBÐÅ ©¨$‚±È‘òÒª_ó¨"R—ô#° ”°KÌ1†%®ï$Þ®²êtwjÃ=àÍÑ'„vs“€ítRD–,s™hGHIÍí#šq“ó)Ï%b†¶²SÈ.Æ)ÈéÁëšL_ÛN­rf]µ%?H¿`™ÏæævnØü,/Ëwì1–óe›ºC°Ð‰)r'ƾˌÐSäDG@Ïæ‰ÛÄPä[±å(“z7É/$Ü^õ,·*²ÆwÁ¥~’m Ì^Äa!fR¸ˆ¿š‰dNŠg¡áâ |›îÅ~üNÁöH1ñFqR²n“zÎð‘°ƒàÏpú˜c½ÞT-eÜ©¨fTQ8É`lciC_2×A˜{™W¶íaŸöü ‘ãÖ SÏ<)å²0¯ ï/”ùcf“o•þÄ•C6ï¸HŠÁ*?ªÆ,J0_?@Vq`Tˆ%_;~úŽüM/%°3[ªÙ_^ÏûgDÊHQSÇ™€`‡ê¬£08%ˆž¸øŽ,bé[“Ó•ñ’r¦§Õé’ðóù1µ‚̇®™ÏèôTäyÓ…-îŠß#RÁ„Üýn0úbŽÝ¼G Gi~Ï(ä“":Ë3Ü7FX~l˜‚æ}àzr eó‰‘rŠÂL‰ë65—¡Í§ç;2¤!j†O)_„¤bdm<±‘ê¢,,¬Ì$BáFØ—²!ìviê‚wÁÔÊúUOCF)éÿy/æH¾h \¡Öá™8 »Ò§ZœtÞÉ™!)l溂ŒŠÀqxJuÝøe;a*æ-Y?,¹ü49)‘¦úI/T!Cé{­Öçp®ÆâB\'ƒÂp‘A{Rˆ'F”bjq—u{©3›yÇD°¸¬Û~6NO)YiÕ'}ÎF‡%Ù/gÉ—Ø7«‹ø% AÙÍ?Å>‰$G›~‰Š».îÏìó·5†«££Êu^¿À‚™ ¦bj•4Gæ’Ä‘ÜUðH ÉýBYÔýHG—ï¢8µŠqØ‘ ïÐœõ¡Äœ,°î „á¤Ý°³; (Ö*Gþ—_`ààÞToû‰Çç÷ä6œO(û¢Ô[6„
-Ê·‰
-5 : fã“-kG~Ïõów0š<öæQ£o¤Ác²ÝÁúÍ£ Hnå¡-¥cqd{qŒ•d÷«^J|‚<µÊº€
-Wö3Ê?ŸoSáKÌMì<¿ª©NÒI‹~Òµ8H!AdVõ®f
-)ôLâºiÔdĵá—ï\¦æé*§Ñ{}Ïi‚_ÊrÚƒ—âþqŸ´Ä¢‡”›a>¥P¶.`¥’Î/ÓŒ|Œ†:ŠãÝú‡zÎ: ã‚~#¦p™ŽC?¤`ü²fà{]IRA(®pJLؤ* ‹ { GµV΂È) µ='Í1Å@|e“Ü
-¢p;ñ”2†xU JF‘øyAÍÁ!²°ŸQŒI êy#8-–Šn΃šdi\Çã¯
-MçJ!¦³¢ýØؼ qȈ"Öy¬âô5Æ2žu›4ô×Ëí/4€8SS‚×íãEÙf¢ŽÓ¬¿±Yÿû×ÐqXºæ„ ô¤…UÄæ'¸ŸÎk+ì„ã?õáAJ<¥‹§$N‚¬«"X‰î1åUË7BßY‘¦èt@üš'q8îˆ~ŒÖn>ŸSTm±ßFÔ\àHlÝ¥È
-Özú¡¦2w]¾ûëã
-¹×uså·ŽF‹«Œíû9ad ’€)Ë
-+°!]N·¢ ¤<v›òí> 뢂V$|Y½ˆd(WKSÑŒ_œ_iH6³GA’K®B.UìÊ(@’6,ïf†'ˆ‚•†rß’o¾Ãx³jÙvûdÀ*Bò&‚¦C}6÷Å:€aKs5® l#´'®1<,H¨Øqòغi ÈHÏVO5Pä5™u›*ë­™o3¯·Ie¿œSPô=ìÙ ¢a }¡-môtf<mUÑì×Ó¥$ö7Ú²º #ËúP”µ\—ï\~½ÍepN¯º àµ:‡I)ññÔ©_oì‹6+ÌÍŠŒM­ø¶&û¾~îç„7ÆçHZƒt¥Á9ôј>ón”†&§ÎÅsž>p¡p2/ÞÝ`¤ c¿ê¾9~„¦ÒùXê ~ΡüûAAPUÒ^GŠº6þ@uH:NÃð‚(zºùÞN$Šü2¨Ž•‰
-1^ãWªtÑ…홟‹è2ÃBÏ˘ËkƒÙ9X§ ‚ÀæxDmÝk3äûé¹|È‚
-¹‚†E¯0ˆW¦_¹n¤ YU8ÅùÃn.?â)ü6nlI6æŸc¸ˆãŽ ƒaV ÊJJö.fèË .i(Žy=ìÔxÀÁ¬D$CÎQ=ð“ÞÁ i-@d‚GPðœË¥f(C¬Üå1ÔOž‘½_Ú™ ‰.q;àç;«M “ùšžjýôùfI>
-2c”¹å„ðwŠ5I- ë(È¡eÔç| Ò™­J>ÁÐÍ0Gl˜}^1ïKñ‚2^Ÿlp€<YÙUa~4oqû]œšBKÍßdMÆ]šQàºX¯!èÄjZn%ãE$˜¥¶XÀêq5”4úQpcÓ ¾lŸ¤ )fRÇ!ƒ…PtÃwÒ“ˆÃÚhGR”®¬%Æ ¢¾ø"l¶ <Xî}`–ü21Ejœ„Ÿ /úõq
-¡è$ðñq˜É­Ì—œ¡9 hœ³`þ8/‹ZŒ ¦Øf˜¢{Nßbš*ŸE…š
-s¡Cc–$åZñ%[–éM²P%ÍOÕ‡€KÔ¬ò]›½iUl⓪öUYú]å÷¬‹À¸%ì­_‚IH‚wXã¼]üÓ·W$&±I ;‘|»²ÜœÆq˜*ïé”DY_ÃÔÝåK e.a0ÇFùræp5¨Î<ïFwâA
-èWî9Ú™”±¯û2À*`ÕFù÷ü€T”Ít˜²ÆÒsƒT7J+þ=‰l~ÛL×e¢£è`}ê²1”ô¤¬§6cË¼Í È
- (è_ëyÝáKÑZO zYß·Á¬Ë<ɯW±MóÜæð’äŒ3´gýô¸±Í¨?îhø3®L¯Ìsø-0Þ>Bs‚¦7Î[`U ü¡ §{ÈÁ&’ÛXÞ\·Ô1ý”¥…Q0¡p£|1N`ƒIKZôƒQˆõÌ
-ŽÏ‚@hi1 ȤÇðÛΆ3öŠãFuÉ‚ÍCù‚"c¡7¼uÐÓ Ñ}@sœ^‘xEz&L)錪Ӏ\·jäcÍ[ÚÚ+ô;cÍs–8ípÃúOõ ‘Ò¨ÛÒ$,áA‹¿ë2Oö>ÈçT6~ýŸ•tmpI^ófÿ3‹µ8°†ñ‰èËìó#³L¦×‘†ÜÌ81XZc%ÛìÙC…È
-‰Ü
-2Í ÆòzTÙpÆ#¯x€Eq•¶çóò*teÆâx„¿øÀ|q¤5Qf]Ÿ‚­rˆoHð™ŠwÑÊÀ(_ã×Í…—r1´MÎ¥(hAšŒÀ\kSo«h.NÏ‹ŒÄ±c¸AzMƒlVT™ت?‰ç¥äŸù%™¦Š¨ô£'·c=謓?× ‹ =@ eëÀ²Ÿ%f}ITŒ*.7v+’H ––x$ 0—/ ‰…ìZ€öÛ"1g¥(hm „¯EѺ“_t»x
-ŠTHt¢ƒÀ`,WTTUÉ
-7U9!÷èÞ†ñÁÈZ²ñæUDÜ&ì°Ì =·æP‘g¸’Æ·Å^É˨ö—nE O/ÿ
-|¾Ü»@b<3+f&÷IU/3•0—ýkgˆ-Öép=e5ïÚ_J8£kü•Ý9]J$®ó¾sGÍí6wôÝå¸Êï JBûòWÄ)¤˜áõç,^,¹q¸‡Ö41$øîH±O–·‡ï»}ÿæFOî:¤' ÿß'c^}Ö[gDËø(Æõ5+ ^²PâiUt4 1ŠØï8KÐfÄ›YåYp ,(v“=L3WPÄëaTðx“UáP`²NÁxÀ°H^µÝÈ$G@Ęj¤—(
-a|'#ßÙŽýM±•Í­óc….à˜¢.½õZÞKrr{ùµbuøÒÀû1·!\Ç&%í“ R‹ö§.  H&:QVZã¼Ã/¬,ÁxSR•á°‰±¦óª0âÃD<‰©vºÙ‡¾ã¾Šå€»¼"Ù$*E…צ«ãz }x/¸jc™­œzL)RÒ,!@p#*:8že]r«™AŠ<ËB|ƒ­ 4%sc %hKÖë[|'G¦ù/x2›{N{,ÿÔõ£Û$ƒ&íb^i’Zåƒüß`¾OAÆÍ‹û¤2™£¨ÊѯÏEq6r(«”hb´ü¶H.ŠÈÂIqeõœ{sÛ´÷r_éÉœä ˜SW‹²Ž†kù«yùâ>kÉš{•®ídÁÛ9©ðOt„0¸YJ¾Pv"ÎìJI`R
-3¹žG)1†þÍ/Ô.3dyw°ðÄ(Dúò– `
-È5ö¦"Ðs <YòþÒ‡Ýz
-´Nyð_‰ŸùwâƤ©o·(?€P"%‰4oM­ÖRÛf¨¬Ä%M²³„ÐardÄœ¾J¬ŠÁ_k}GéÚò?ª¨°.q
-_¢©ë©EäsÕV w /‡ã\ãb©å`¥q^ÉÞT¹š(¯+;ç
-—mÅ«ü`ÿŠˆƒ¿ ú’Z#Ë_ãž`ä.½+-ižÓå)å2¹‡ÕdºyB°´^Ü 1d»„à|²âj2_1¼ |×’5O^ vêÌ=‡‘ãVX‹\í|ª´¾Áv¼Ä‚ô
-2L9Ac!”©À3Uïf@37Å5T¤Q•F6™´j¬3Nñí¹­äyŒ©,X'¸©m ‘ÅY‡ZuJ]4z²#YWÁ0œŒ¯” ¢Žs¢:'1^Cú1+®Q”êÇW B&F]‚C†Õ@±úáSò’©}Õ!¢e)\ÞfíÃÿ}$m-cßt”z¿dæ ¶SöE÷ØÐü°“ ‹/+|÷#1-:DxŒìfê&YWÝ3îœs¯çknåç½é¨a@T Žðù@Ŕ鵹?(^²ôçj» Ò
-
-2 Æ%¬`&>Ä;&­“•5 ñƒ(©S‡¼øÉë:0bŽ”_î“Ô«™U†¡ñ4’ö1šU#sΧ»èûÜÍסŠó ˜JM{f2uµ‰PŠѲ±Pø~‹2°ra!Hp6ȶkølæÈÚ#瞨†D¢Ð²\i(Gò5¯Ê:–nÿÇ…û9A˜&b϶¿Æê\C`\Zízª5ÓÞ³Á;û Oó3ži4¤àƒr{`»Säd_·ÁVYæ^ž%÷æL¦*jÊ*oç&¶ÂÁF·ºÏJ+<Â
-cƨ ~ÂÈúz§;Óñˆ€Qƒ¢uÇäHÄTc³‰aVì`5O
-W^þ‹Kh7ºˆç sq FšÖ¤áã’UZ{È~ºù"IJœé!ÝÅ%I8ƒIžm×Ú‰KŽèÄ%Wô:Ë‘dã±Bš="Ы
-Ç{ÔQ€gp¼Z¿…Ø“Üqé÷žùÁ%¤¸ ®_ø·?à’+zÅ%$¬kuˆ‡ZÉ.!ÁÁxª ,n¸¤(¡f¯+º.)!Í Æv­.æ8©?q ùbƒ«pöÏ¡ ™ÏA“¡÷âáö"½a¯ù‚ÀW\B3‰Sá‚ûW\2؃‡3`¨ ¦_qI’Îfé)ÅÇ%WtÇ%GtÇ%}rî’8ÑÅ%½œ(ðÅ‘þ>.)‚$‚š¯Ãš‹KêvJ5iŠq¼‡9®aÞqIukÒˆ”˜ùçP]Q8bv½â’ª”Gи”÷¨>.©Úµ@5…‹Kj™X»¾År²—œž:qé÷d¼³ôBîøÆ>Mµñʯb.³þëŠVÈŸðÄ\Va“\rDpH¦|tNoïºwDÊÓO²ö:aÁ3lB1u†ømÖòÀÉwZ¡ÔfÄ©)L’@[B3°Ü6s©m‚ŠÚâ
-7":”ð'5﹉Ÿ1a± Üü©IÏÉ®šçQ?£/¦‚SûC»Ù“|Í‚ôtã`\…xœ“k’$:å’˜ “FÈ!}8‰˜ßKðX#‰×4Oó‘ßSDwµ<x¥];Œ*Ph”ÀzEH ƒ€Áo®$ÃÂV˜ýåÂÚ£I¹\“áaªôáÃpájãòüŸºÑ"c+›L`<Ãèݶ%ÖŒA-2Ju_Å_ Gë;›‚Bâ@,Fçpj¤x¥í\EÖDÊ«æL>%·ýó#òŠ]0°/Ú2§ü¶ÈiÀóº·D7Sp{ë.úñÂ_`“À&Èn^Éb2¥c{ h¤tòU&¯uDË?¦Íí,Z)4c„°%Zº²RàJ¦]d†}Í›(J*‚÷9Ù'L
-ã º[»ƒ[y¿V🠋I'ãƒal ŒÖ×\Åì Lý‘<˜GdrÈX7ý
-ƒRN»o*$[‡þÃAJpeþKn ¬›³R ê1…ˆÙ6w¯rU£VùV ئ%5\E‘ û’$Ôdž´Cßa3EÂ¥ q”vð¤'5•&ÉQËÖM.ùÇS„´ $t¶ måiraWÛs‹8ÍÔTAìl%‚Ǫ“yW¹ûPÎT4coEµ$Ý2ÜÕ‚¤’Mùü6>@ÝQxÙ^<‘‡K°;3†C†v…>«Æ*‹¯À~ —~þs)p¸Ç¦ÍœWÞX«ª…ì° 8pf†‚8!ÇþÍ8îf¡RB""!êÉÀ¹mäç¹€¾L$ßðï`Ú8ÅRʧ-ÓM>6ˆØÅ+Á¿«nÁ™xj‚Èg¹y\¸œ1Õm}õmUѽÁ'§Ýɤ´F—êØ,ÖBÇÁ™ÐÈœÔ}ú2œ–Ìp f:$— °ÇUAð@FQ€îø ¯Óá9E!íGibBÓÔ». ·PmxV&;kö|wª@ƒAÒÃ#L3$pï»±¡ãÌŒ­qw†*¡À¸’ôˆšFÛ aí‡PÜJÔ±¶~ÔÝU*û%Fce™ÒæÃc}óæ¿£\C‘ÉM
-ݤÊK¤qz(°Bm+ŸQãKîÑ«¡$]²ÜÉ=èÆLòFð}Tч³“Ѩ7ò:‚”«+3‹8—¼+Z†«àʈ<ÔLªß•Ýw¹A(DgÁÉ-ã”°{“ÿÓÕŒgï 22teÚ
-Ùª¡eö"«BËs!%›“{§H}’–¡ 6þ´Ø…Á‡,Áæo·*ÿˆ°—ÍÜ‚¯ :—OŠâÿ~v„AD8êçX¨3W¥}BïKz9# ¢ä—x.6߆I:ÃÌJ+-ïg—» ižpI™¹œdB d"2ªtøVcuF§ö°&10¨2>§Ä"¾“›kw-ÌÄÐ8f6$PÃÜ
-
-¢©ä2ØWÇa@ŠÍZv
-*%ù°¯ƒ3/=*<w–x¡ * _IG™òBRÉÕjãÈJ¢²Ã5žÈ|PY.ŽƒP®.Å4ß*·¥6¦ðGà¾hà·Z*Ù…ù’>)
-I!-+SªQ¸éÇ¡¥E]™ÖÂVßv W¥rL„“,k™t%´M£&ŸoSÊP±Þ/=UåF¤Ê¤iä¶L&n¤¡m;SN—0@ä}C„>€QÉ(
-¡k¿Ä è5¶Àj¾G}4Vë ’‚‘¶ÔIyPê7ßΤü­3?ƒ^^˜‘^Fƒé € P¹ÁôvÉỆ«–¢CZ;[ý_Qy.|G ìI™e‰‰)²?¬#hÌaj€ð
-&‹äÄÿÞ1U6CŠKlõ ?3deÊ%ýU¥$äå4}õð{úcƒzÇï«~ìd*WIÉN þL.w`ñìB<̪Pb/ÿààuÉ˳B¼\.4Qíü2é„’Ykj¿êØÅÔʃe‡@*œDuAû2Çì}g„ (ÑѬËȆû1H‡VŒ!ÜÒêôî%\“þ"Ú“. A`åëYrÖÄ —¤JÜuCò@)lSÁ‹^rs”Ž¯5iQ¤Ÿ•˜«’Öšƒö…„5n¼j{€`wE^ÊÊÚêš<—äB‘Qëü'À
-H‰l—½’$¹ „Ÿ@ïÐŽ þ
-É;ó ½½¾kFŠéÞÙíéÊ"A ‘H¦3,ö¯é§Ø#—E·°—E¶ÙóÿúbË5òì¯þ῾£önódÏ™éýÖ±¶Îl}NËy¶û˜/cÇÜ Œu_ìø†¨ |µ<¬|µ÷§uzëã°N¬áÄ>Íã,BÂù°f{y®1‡=ýDÅi<í¹€ô`™hÑ»â bQB¢Y&'ìmŒ±ÏY;<ë68™ò¾ŸL:³ egÎBÍIV×°³Ö©uV_Cˆ±c]„»Ö±íõÜú ž ¾ûÌ1ëùñßûøí±Žßh" •±g­ã§»¬{=¦*ëS¯"Ø„®X{£ÈCŸ{}ïÔm™â=kZ%„pÉ+ŸPÊ ëyQ,1›Õ:k“Êb´Ó“h‰Ù|GÔN©ú"âÝ)Ëþ°ŽñE$¹#µÚ)–yBÕƒc¶? ŠvYÀ×ÏN?QÇ|ÐmvruÞOÀI‘ÒZ÷¾s:MáJï&ßJ/﹘ÿQÓ†A’Mž-·u2¯sÜņBP>ª‘4éËÍG ±‘tgæ3UØ„xÑN,ìF6d<ŠÇwãصÁÜJ*+LN«wh°–™}
-ƺP›<Õ2æî…@# q|ŠåÚˆB8«"é!àöúÞéêµI½€Œu—!šùÌ Ô»ˆDÄåbKLÔÈsÜ%6ÜÓ6Ï÷¼‘†]ïIKƨÔ”9³Ï Ø;|äH+ZïÊ©Cr·8|Ó¢î°çHo¨´ÃéÉ
-ÃÑ;zt èÄ´ƒÞÙ—ª<V[†D‰v>ÁHõ¢8Ï€£‡FAC©»þº,ÑJ‘ˆåil2ž$T3‹·áP×Û¦ñÉÄkŽ)ã„® e]Ž
-ü
-ó†©U,ybPŽ‰­uBÃÿ"BQ ÁOEHªN¢¶¹zíIš¼$ÅŒÂBQ¥
-sQ5ÙÏ¡aBIÉ,ûȱÐØù Íx,ÞûCqKò!s2«€ÔËU@l–â¿¿y±ëiIF´zý³¡ãp`0DK¤ûíõÜ^®K½µ;؃ó4(Ç‘ªkªýDýí ¹ <¸ÖñŒ†´­"ÀPy0BóH9¹zHY–¾kþTÕ>!—É©#_—£7ò¹d@p‘!ˆÆJÝ™LFŽ…k]’Ó.¹ß§Æ0sG"‡…Éoˆ¯[Øà©naP,>¬£[“R—פIRÙ‡¾?‡îµ­?Q(ÃK|ÚS%Ä÷™ìòÃùé!ÔÏë¾Fzð– Ös)@û¬¬]"šþ˜ÕEKÓ5tþf–¢"Iˆ 4äžñÂÄ6z¾,>v,Ú”é¬Ö5íw_‡å¨g“Y„6Š}×g_OÈâ4°®“bð˜¬õ%ç tw`à CÉÑCî_´aé–Ãf¾Ù3c<,c­Ç¾cŒã0®xM?eÎ'4ÑUÂqQ°KaÐÞ½!”qúŽà¸{2œíÃ:TŸ:vYe×°—O'(XEæ8Ç„¦+ýŸ,Œ¼½ä
-í( \îØ$з5þÌt5Ë›r®‰Ì–M,¹„×”«Õ=¦ çÞ)Øxd%S‰œRLÔÅ_Z¢9KèÖ
-™ë^ë I6¿´í*†î¥ä»SvêkN>7×÷æÚÿ·Ó’gÅ×~Q¡t‚º«h¥X¸¦éL_=÷ |ÖAhÜõ,ç)íP3@5~ ¹BÌ2_wQªÛÑXÝ¡¸Êcèwå’@Ð0ôJ:ÏÐ\5%¸]Òbù¸½Òuäõl2UˆjÀu¨Âå¡ÇáL$Nz©‹­f8‚/éolJ¢ÝŒ4ÜuÜKЖ[˜(̾îÍqÐKC‚+B§¬£+Ý‹q ‘ºœ6ÃV‚Ç÷XÌ,ÝGÜuW ÅIGWyü.[I-ÖWWƒ¢%%U\Þä¾~ØY¯Wü<à÷zÀY< ˜û¾Á™vŒ/—V(¦‹Pl÷ Žf6žSëø©Û6„æìÔ,‹B°Àâ”bêVÇN_vÊuK“é
-uˆš]"ºsH¦)ÅJ´—Ca¨‚bÁWR{ý>ô…*‹ÇnH²‰ÝOï¹F¬¬Mˆ(tf—k#^pÈœ8
-åBpšó½S»D¼!W¼¹Y ¦¢.³.ÚÈ™ëzø_ÖË%׶«†¢]9Å ÁÍú ”@ ¢P
-I¤èDïÃÞç"Q • ºoû¬—==&ÏWÂcÑÙ;Þ7h÷Eí½Rà jUy6*ãy Fõ#ùf¡MåA®€z_ñ:¼xw^¢&üšb°—N“ CèP9ûbýÆ˱hØ%gKÏfo–!D/Ž;ñZ±Óñm@X„
-fÖ„EAT£æ-4™?¶­ÎT""šã­Ý0—F8„s§¸+Í}2#Dou|¨<åEÔö)#bxs’Vr#,Øq÷r̸ª„e9nF”륡fFncW•e—§U°fpW4ŠŸ ÇÌBÍ%ª»¡®_‹êä9[®z!ÂóiæÖŽx[Ï+Fyîº*–v)p õôðB´˜6“‹íœÈd£çètɧ’¨O7Ћ\W÷ãÔ} '†£X4þÚÔÓrRÊÓnü
-…"¦túýÔc‚¨ xUoÕNWa|“á(ÅR"Ô†šRX«Ïè,çTA³°×»Íªò;“.?!–ÿ ö"âG~¯E¿š´ý”bÌîˆÐq9ËçNN49ŠÄbÀwc?ô6•æÔ-×¥ñ†;7Ê*#Jug\ÑzŠžQϸáTà
--h¹ó$ÖÑãÑ$‹¦X ‚žeåNÌÝŒ!×X­”Ï£©Ç+¤ù0­6eÌpÛ¼ñkh‘Ž6[pb¼Ðü@!ù
-Ü4¢´F•1sýæ ʬ€m÷Yã8"ºsŒÆäΈˋ‹Òç™2£P4ýG+õQ (RÁ„Æ–du”~;ï‘̾Nj×HÜG_Ó®A—]úøƳ‘Ú ÔóL¸<”ÃNv8å‚!‡ºK3§Ë#
-
-Íz&eØ6ºˆ5HLkª aÿÖÃ0à ú;íèf¥·“Ru‘
-,äÍB1i?*å¤o†qsêÍz.[õ(È3-ù5ÿ5KSY‘ð3˜…wù€mI]â1/T5x‚âÍ ÝHíÁ
-3‹Hoo9âNZKx åÂ÷‘Æ›0XXTÛ´»wmtûœŸOÂÞ> ˆH4|~ˆanMáÀü0¬11e@€FPÒãDíïŒP*ßëFÉð>ºñ‘}_Yfj€FÍ×»f9U»“ëNs h1­%ïO'r¤©Iàúšž&óþ`VxQF]Ç:gÆÕ~›w~O烨«wÃ*PøGH2ä@‰µ¤+îXUwS»Ñ‘Ê!5!} ëP˜éŽJ¸„êyùK®ª­Eº¸^«¡-8‡µïD‘ˆ²3ˆ¢ÃjDA»-VÌ!~¢
-D æ$´Jr+Òzm뇙M¥èÃ!óØóLçÏŽw%
-Ã22j¤—ÃfåN’¶ì¿ó,¶ '.W³JÄÍ;•æ j‰ÌňQ9éë•‘Ùëä'5ØAô‰5©zuý¸0ècZÛ0ڤ촠
-CÑ/jëƒ]é€y¾ß„¨Hcñm¼þÖzžøùrðs2™?Çb ¢8pµÜM¡¾“£Ï ñˆšæ5¢ìa£žexIIÙÏ9¯oÎ9Q©Œ€nŒè>qD´x7@çÙht\@˜Ti¢Æãâ˜]Ue'õ5®´£x¨oF7  
-ø«)ý\­<µ&ú5dÂ6ã1ûÇÒ|2næg¦Jˆ)Q„Z6Åim/¼~Ügƒ¬ðÂŒÆl?ÚæÄ)H5BîÖ®ÐÝÒNç)^1sèñò¸¥&DÙ&¨/ºÂ[p¥4¸I‰€_*T2Ÿ’"uµ2¹AYC³ÕÕÇO—†µ ýÜW«sc£N·ÐFN&i®…ÝÛäzŽ' ¥
-UZ¥îJ=@%÷ˆÐñ±iÏg'è.TÒD‡Ux¢ÐSJ±rÌHU"]u‹6ÿ^3 
-¬†&šdªŠÈ’Z® z¡f'{fæ»I
-JÆŒŸgO³þùN@f÷è¥V)
-majßi˜\a× |RÊi—ÛjnTÛ{NõÆwÅu¼³¢žl €è}ç¡V*¢d°æµ'Âò­Š@(wD<T„M £ÀÁ±~Oº‚{¢´cGmÙ‰VE³Î#.¸vDêá¾èªŠXç)¸±.I‚ž^ïƒ Dß
-ì-Ñd`ocd©þÚrNmwÄŠñá6N:NûИ9Ù“@éW<<·×A Q?cHГ¬½«Õdt¯hàeÒ•à[ðfª!ªÒ›ˆU`G­CE\Õ•ù0µGÙÍÔ<Êt"¸ -á§Q¸0„×3ÝÕI3½ØyfVÈIál›TD$=¥Ø¹ÅþÃ’‰ZQÊ›Ž^Q#ƒ*ÊüÎÊ’Í<TÄœ¡´´Nþz76¬¹#JôŒqÿšùܼÕ-zõãt¸‚×NÅV®6oßw}=Õ&ŸÞç_i³)@l–F¾O˜âÍ
-ÓÒÓæ‘n*~§o%Ã)»ˆu–àIOÔ¨õòÎ{–ÖÑŒõ>~¸®a_<Ò
-˜—?6š¤³Íq«Õ
-r!-5 ia1C2¯÷‘©rÛë;y«-ô¿WФ…ÄJ®‹±Ú/
-
-D¶pó:
-ÕÌ8¹0Ö4zòŽ¿Áf/‰|>'EøÀ h‚éRÙ ¡HîŽZå!»UoÅEÊò…;ñ¿&™»öç¿•%ü>Râ10´õ÷jçíÙ#uÉ1Nu_Õ´±“'Ç4ª"û{µ´¦g§Aëwg%‰ò¹¯û£Â{¢HìyòÌóÁ
-ØS˜€lUý}¤cþŽÝó_y@>âÏúHXî¹C57Oô@2¨oçvÄ8‰.;÷?Íÿ²/—"R¢bWÃÂ~äòm_^ýQì5Ž
-…²&oÞd=7° îÖ]Jæåîì¬
-_¬Êc`+B#֎غ‹xߊЖ7òî“ü!: ýœ¬µ]ððõ– µE¿õ/-‰G{ÃŒ¾«šÃ-ª"àÞ"–ºÊŠ/88‡Ó»‰ç î!ΡkæK‘&ïTfPÍYš§à½Ÿ4#¢¶rŽL)¦øš&ø†›6auj<¨7Œú.f©ƒq€«üR®é¥j——2…iÙgh0"m) GÛõ§ÿ!`¶Øh”}h]5|ŒÃ³l¶¶P|+±L\.Á´öæ€çûÜT’žÀ8äªüwÿ*©a1¢¤Œ½ "Âe4,” ..üxJþ»ÎÈ=…­ÛñW­£–” íY?}¼kýë%-ËQ°²(é*X$a†Røx_i„Îp6´–[–Ìt\âáÕDQH5ƒ¢¶ç(ÁùUž›8L„IØœð)}ŸÔC™†1î“Þ ¾«9~Obër’yÉ,%j•Ë,õÊ3¹ÌD´zk"à`0­ˆ}[ƒ1ZE”Úè…§‡šø‡7"Ûf€j½ ®ž =· ÙœD+é(¦øâɘ„wlní­¡œ6lüøÎiîæ!YÓ´µK¨/dmVø)=­Ì¸ÎϬ»“®—4Q3æT«ó=ã,GÀ½¦ÂâyÜOßÛ1¢bï6raó¿¹Öõx\\D0ü%VèÈùÜ1¯ò’‰6o³±žFÂ×bÉrGpð…§7±
-Fõ‘Þ:’ø¼ˆ¿QˆR¤§¢¼$'ELÏʳ¢íU†EZ;Ï µzлJg8ðZŽÐÒ»f*{?­ì]E kRQ68“† a‰'âÚi8¬JSû>(ˆ=WE¿o°ówÎ18PF‹¨Þ¹‡:t«0sD“É€Ò‘óHq×Óqʱß‹ý/Ú£$Ci[ÀAlŸÒÝ×( dÚ²aÕ»™-/­=/ PòÕlH¾G>wŒ}™PB­qí¦…DôxiÖúç¤z““¾,Ñe#º
-ö•WÁ‘®D¼gû
-Ë%OÛvKÞ/_­ÌÚ¶í[G2ô÷3ž ßÓ+jŒIˆ½!þÞr3•æüƒ{¥ÞÑÚÎÌí%¥ÈÙ¾z ‹¬òVV9m™å<YÊ"Q¤áÐEè^DXì†@å˜Dç~ãû/’—‡‚£‚Ö^*´o°á»“¨Ï™Ó "&±Ã”â
-tf
-Ø¡¯¢­:ü,¥¨Ÿ%S"Xñ„Ð`$ ŽÄõAà=j»M…ÍÊ”Mqr›xª §ÇþGd=ú÷÷~¸GÌt¡?Ó'ë\¼ vcœâë¼?j·õ„fǦ´´Õ¢Gh3 w:æíï1 Þ™"Ô¢žJ3e¾ÂAÒ´“@e–Ð%³ §îd±Mt‚ÌLz;Y‚x»v£ÅY†+B^f¿Ç:%\=¥©ßD%‘ê)‡ÕÞÝ©Yei¦ºUs—¹–¶)O¼7µ’R SSˆÈv-—ê劽T1¢˜ÃòLûd”Ë$øØhí 3—s’´
-&Öõ Ñ l‘£¤@±¡æ‚{6¯äiá›
-Šæ™QŠ@,40Â̪µöó K¼è¸Òžroý, ¯]ñƒlE„ñ W:,ú\V”¡ ‚ðNÒ—…Æó@ýÔ!"¦phÏMáջ؀"ˆ4Q&­@ÑÌV¢öŒyú( ‘ êÙ–xNqÖœ‚Ð#¢öt•uÆc!¯ˆÂIÔ`”MHZfyÈKΣ‹i`^WB|FÄŒL«9ÇÒ?€àâ/æGÎjlc„©"
-2YÇwRxõ‚Ü’¿Â6U³Bç"1éšO\}»ìÝÌD‰½7
-zÄñgXà­¦ ¿BÁº„nѤS¦fë°)ñ5¥Ô}À\åZˆG½M9TAÐgÁñÁ.ð
-ù?q~PÒ ƒj¡ƒ³*@à~‹˜@:c€§(Pf-¬v¹·Šƒ5?³Ð˜”ÏÍ@¯œë™€›Ir  À ]d^„brµ8Âóp˜, Ù0vÈV¡Œ=â0¦~2RoYFkf4i4¿¶ ÿ{D¬DJÂ…SrýÚ<.Ý-1¶\m™”lÍ !sEÎä6Vmš!ž¨¦Y1iVÚyÏ“E_±µWZšµj˜!j1O£DŒ¹Ó iÜAxyóöǶëºL,*Æyÿ¿æ°† ÄgC¦L)/”ƒ«ŸMÊ(F·°z A¹¼‡†­Q"óí¶L,ÃRPZI°Ôx:ðjÌÅãò2&)ò²)Ìû=lð«'B
-$™^9%ø§ß•
-¼~]"½ë%bEAì4`ü1 ÚHœç
-¨bYa#Sï €‚#Euƒƒ(* ‰½¦-š$Â@¨"  3\f òîh?®¢x6ç PÍ@Vk>èð-PõHÔY®•öƒÐ$bqXšÊMRÍuç@Sù*©è^1ëª;Ë™Wb‘¾´ XHÚO·Ì,pUÞy¡¼sÔç5×ÑÌTÕ6ºŽò„" LaköuùÜY÷Jp(Æ6 YDÇ”<ˆ?$Q‘éF” ‚Ýû•iÂ}ñ~P:ìEYƒö~À. ]06´€$äϨ…t²eÓY/“$‡r
-^¥NPÁ™ükßÉçw&@U;$Exã^tG×âà 0/âìI8å°Øº7zÛ·ŸØŽP‰9Ê<Ó/“˜¿´)Í
-|w¥TÕ'‡{N”Ý"*d•øÁóñ“Fñù>ù3ß©÷
-œUD„ Ä>õT.ÿÛ‡Lêi ©BÔѳ´þx!£
-³LEv°þªZ 'xŒŸÿéŽþŸÁQ†Ciµ¢W—Ù6Ñ(˜Wx1D{BÇ *ÎÊ0>?¼”ÌÏÉA:U†Í¢NÒì:Ò'ÒA5=ZÓY{Z0Q¬(ìOOTH¨âÖÉ”Á
-KÿäF´@lÔf BÀñ¢¶\RíéÓD­Ò¼íÓ\_¯Ã¸9_A:¸áøƇֆæiÑg &WÌ ç*Õc<ΘbWš©Çy)%-ÁƇð”•Møû}Òqy 0übqäy—ïpE;ÕU¥"UQG»t\\û°£DF²€‰Îu庇æEz¨Y€yÜ)#S¯ÀÐlHé¾T'#PIPõb$0ÈEU¨
->62"Hè3´tÚh›eEtƒ¬OÓKÿgŸ‡2‰v (èmˆ¢O®c©T;½¥`µ¼'´%üŽð;ƒz—?úÆbÕ–ÞÍ\u4QÃ-¬Å•ÍŒpÚ™²CÚï4úu1³=V w´ÄÕÛ¦¼$/ˆ[8ç´ÐNÆš_µÉ-1üx¤ðøh­¿þ\‚< žü¦äŸß4-õ¶ñh}•uq§¡{i©h ¤a±ØÓüèqȈu°<‘€óÚáËb
-H ÁîÃi=QÁ 6×—]‘h­\È#Ò\zæjVùDÄùñ Ÿ}B*ÇøDA›4„^µÃ´Ç»Mx! ƒyùêc¾È"ÿ¦¿ìúe‡\ò¡§yŸc ³E¾¢7èˆÅ´ D*9§£z¿D”‹¸>kô’F÷·àŸD“(" %cPŽ/°dŸ¦»‚¥dz?¼ã¥; Ÿ|wzG!*ÔÜ wnÄñoÇØ…‘#Öä DÇàJ\í8aÍŒ+ïˆW/¡ÜûÄL)éëà‹P vâ‘ô¤¨Ÿ¹L$·Ao¯¶Õ´¢(o'dÓ¿¹¾ß ~=‚¿uC0˜j
-(•ãyÊAÿä¸Î;®Á$oˆ,&Õhû`‹Æ]fŸ Ò‰4-çà/ϽpãÆB÷ æRy r©ãnó"f‹Y †£½ͤqÚ¶8mÈ»ñ^Tp8œðuSXÞù^šqEG°Ëú¶Qâ¦AX¼{L:ý¿>F»{~¸ìÙ·_ïǦ×mž›ùØ„*Óù€ÌmÅÅ‚=¼õ]Þ¸j­¾ ^×¼7î&¦ÏuÆúµ‰Ntø æÁ_ßSÄO@(ZÄv!A†7AOÄÔ(VZgÄd¯Ì ˆ?\b`«aŽ D]¢¡Êcõźû‘/EÛI!Øçõ±£N…“é×;’Þ©sBWäR¬°yDÅ~=xIé³3(Bן@5Í4`EÅmÊ ù¡ÁוŒ1 "¦:î.B±KıM árCÔ4a=ª!:Ç0ÑyŒ b#®òD
-Dæœ ¥
-Døk×Ø¥bžP9©î¶W©\›Î»$qËÃ}Waá‡>cÖ)È&}1!¨L-:íâYuQhqÚŸý_µØÎú‰Ò¯í0ŒM±¡¼Q»Šäc¿ (9Y
-yª¬ôr†ï¨Mà?œ`•¢ãe˜-Î0BéöŒ¥µã&‹«p“SBiÞµtΘ†UÆ-N{¹-D@q…a ÔmÀ„“kEàEz ¢Ü 07#˜@`¿Á[Äáýÿv¢0'PSÏJç
-ˆâ´—7e˜Vž¥Bd"F„³¨Ž¯AufË;!æÞiÎúrxî¡Â…W¶ö<Úà Nò9a솖Ëæ!­ž/ˆ‰9*ˆº½ö+à| {¸‘¾ªá3ãðD)Vç’kå ú
-#<¤3Øc4˜œþ‰økmfÁÖ^LÊEi²¶ãŽ Âc˜aà¬ÑÜqâ²ÌEc†ÄXÝ9{öΆªà
-:mº
-²ÿÖË®7¯£ŠÂå½L*pæûœ)W E¨Ôª"½²¢$E4Ž‚ƒ”Ïóì9v‚¹£­]¿ï¬ùÚ³÷ZkÃÆçeL­ÆK³€¶<yQµg
-•$b/wùµc§m™3HáJçƒ$ð8dÄ~cQ ÐÓ5®Ž
-'-øZµ¶Yñ—Õl+˜F®çÈÞIÇC¯hM„·àÝZÚW.ÈdË$)DZzR[N<MÏ»ñ¶}4‹V¹.‘Ö|W=?_ðtT)šºOA/‹ÐáŶÕ2k'Óœl´(²=Sh$yŠUÑ~jíA Ír&ÂÑ“Yð’?W´1„žær—ièg4ä#Ü\ƱS[6‰6–:vî„:;iNÇ"zYäut[D8ÛòvœÂAœ•×@l q—¬X‘£³À{~dÚ*ü %E`µ î¢ï䙸?‚ ¼ŽÜ…\Þ½Ê1c ÉŽ j¬C
-6ƒQLž8Á‘ª!7„súºÓ\±Âßithú¢n)å-.Lƒ²P6–D”‚^Ó‡=ã@SM¥Ì u@g ±‘À"ð–@…c ¾÷;È’f”ÖN½›iT<ëlj ¸hò+FÊóW»bWËßÐbÇɤ»åÙ“68̽ø¶¤¶T¦É€[1
-éEºMeXÎHuò¡šêgÎ[¢¤”îv:¡H¯@u$¿»„áÄ´}o;m*šU<K¿C ¿³Ÿk§²ÌÞ@ÃŒž×Áë†à~ü"“+E5yÔ_‹Šh_ùz ÆrYÄåxà¬eY%#
-‚½ÚB•}¡øçò§ã<S‘Vl^¢&–®bèšiíHO8FiRðÝ
-âé¹n õ“@¬¶©¨r¿ßH‡ê ¹›Â3oë˜Gg3e[
-!±¤åXpÝõ?„—Ù‘+7 ES™¦š;ùíPœ>hɶZe¸êyúŠ Üå6,W˜äòv‚а
-D3 %bõ)Ê»½ ŠD‰½}Á;ð3óæ±IEŽ"MÊ°VåÅ’Ð!·1%ÜÉVÚGÄæºvX.}ngÓ$¸ÂHRpQ¹ÒêlÍ»1Ä=ÉrxPÈr+^¨0Ó«ešÑlpM/E÷äÁý›Ž‘ÝóñÒh‘¼Œ€íE'®"´
-û…}
-
-ÚHE|w¢éM„<!¢Z êƒõú=‡«ÊHD© ¥
-—6_\ÐOÔ‡n׺8¶ 2¸Œ-7š»†¾ p@ÕÃBPý•w(D‡<©ðJY'Gb"ðÈT|riwó#éÌ„©úiŠá{ú´?y'ä„ú¨Ò˜¶/(KR7sH—Ab-Î ®"@”/î4_ñüÈäãã¢Ôγ¥FŒ°´d—Ãñ¤îÌØéM—?­éúÔÖ¼6€'†®†<„% æit«FA@Ëeºã,
-ÚML£Œ]ÅèC5jU­^ínµ³ðFÝ  •‘SÈk‚R›3km™þ… GèĪZÓ¿ççÿMÓ+™PW8IDÈ:$ÆZX6þíNÅÅÃ^Ò®N
-ÎñúD\eÒ»<ÐaÌ ŸëË:+H”G§9|sÖÅG¢oƒ­ë àŠ¼.Åà>cýÝ\ÿU£…ƒÄèób?ã/jmL'Œü%™˜¿†2BÑ9•ƒ*/ŸæÛ`åI0¼ #¾¿­B¶‚Åü?Ìi¡*—ê˲þò
-] Vi@ŧˆv\"Ôä÷NH–©À”DÙs¸ì‚UŽu8¥)4õÑš`%jî6D ˆG "ä(xÐ{#ƨ:L‰tBJ•Nôî@qê  Ç¸tÿ=ŠM—©³ë¬QŒ:ÙâÈ7B4£…«Gx¬¢_ƒÿyê=[Úw¾Ù.zšñ k*šT^q¿xçDo¢w2™#V‘~g°næoÆ-á
-è„ÆÔ}~ÏZiàí3dy”õ\ƒlÁ#3J”<ECBhyÖý†À?]¾‰Þäý&Ÿ(èÂêmÝ™yZh•nÅúã‘å²8¼c¢Ä¢ãq¢ø_ãÑ'â5£1ŸÛØXÖCNÑÚÇÆ—?›±ÐïÈXü—«>P¤‰C°†¶*$»/`¸C«/ ŒóŸ_ƒ7ÄmP˜"+EëÉ1Wð|Yò¦×%ïnÞ¼=Ù¸=™W]5£+îÒ@˜Tltœ¶Ý6Qäǃ#îÑ]5~51"À¥9Í72°öBPÑ"¸R(>ï¨{¬s­¹‚“õËÜç\SQàR»Çwd¯h¡ÑÍ}¬0r5î{ T]¿Ž½:"ÔäK ÍzW~MÁ
-üƒq¤µ~J¸ú®bL=
-mÚETöýÖ¢½ ‡@,»ƒH9úëa:ÍŠ•Ê‡Çm¸ŽÌÓ›dDr‡ŒËE¨E­¦ž/¯`€dùãÞùëEƒª†cÂ(3óWÑ8`9G<ŽÏI3ç༬wÕ¾?¼[_në²ñ?~…Ïk%0eèC‹«wÅHRÄ OGøÁ0_†.}ð18³r‘¶³Á ­Çë(bÌ1´¥€ò1$vtK½ðuW8Z –†ÑÊCŒ\Asˆ¸J¡PßSŒ)s}Yç‚”t˱]æ:²Gü•±i j_L2é
-lAòh’€þ^Y5ý€¾ A9÷t-Y™gQ Z[ÁôA1ê–Ñ>!>‰ßTÙ™˜ŒÌR<­öD6âÁü´$å…ùÄ@_dÚ€ŽÁ…c 3Û©6f¬ûF'
-θV¯®³¿«ù
-£€„°NÂŽSì]´„‹6À×À<^ 'ƒ ´jŠ10SO–¥«Ø§H)û@èT:lÃ’L™xOˆô Â£¼>üå¯1Aßö@K¿>š5øˆ1'ýDÈD#ý4c¯È¡¤0’L˜žT>^ç4~T¶üØÓÏÇ¡Ñä:Ø@@ ×¢D­?ˆv#õ‹`GÍŸ O¢èlõ—^¬>w¶dgxI<â>ˆh† SpÑ3N`H«ˆÁÈÝâ€H?dnN«žÑ„W3ž+*‚²Y"Óæâƒã$Aò¬+¡<ËF¬Œ®)8æbkçète0baO«Nݧ¥AN+.ÂؼÝ+œî…Ê,Fúæ<N;Ó%
-m¢f (t_”Ì+
-ÇžQÇ:ÆežWNøðbâåŽØkÓ¾¯‚&†âlø÷ ›fÄôP9<¾z%n§Ä”öò ¯ƒl‰B©f hÙ.jF,Ñ55  6š-ºÜÂm³Û
-ÄfNDÐÛõµÑalo9 „ªÔå2¬û¾V¶@tät“áûê4ˆ)Ÿ€@.úYcRc×Àj¾TòìDdhñ°8M¨uòÐZZdN<Oj§ë±¦R|øÁ7
-% újý‡EJ5‡p@ö¨2v6ÃiÔ°O²ä0l~z’ WOž(tŽêAY„U&Žu6âÉC•®±„tæ”vâXœN¦$ ®
-È5ŠÄ9j<¦âûd¯õÚgÚ¢•óTúaPÄë Úþ !bîtŸƒ’Æsì~
-‹f<N„ñÍQIØI××èŸLÆ¿{|´¯tZ“¯W /¼NÇýÚÇ¿ŸÅ求uS«ýéÇÌTëq¦Äá §nϸîœï–Ë{ž—[™8r‡ TÇŠ"æ”'ê÷{Šf¸µb{ÕØmú„̦²BÂ} “ÃJ2Ì9©Úû‚÷ "íX¹‹ž(²j=²U0¶õyI´Ó?ð¾H² €ð43%
-ÌT#Øš‘ç÷Ÿô•,Å~Ãõ@i!’…ÁYñpÐõ¦¾C¥^ T~Þ¥6öyAPÄS;‰Ûo×ÂÓåzô'Û Î>•iaòÆÍñÇ$JÉ®IÅ2Ö#»ÝY“Hq0šG\´× =j>Ö sç…™Ow†ý6Ž[4z=¬QkC 荒N0›B¤æ·­²uÓ†dÂÓÞrÑÅ.n8Üh!´õ¿b™þm¸a³IuŽ”‘t˜×®âÞÈ*Ð*3Æ~kÊ b„àšúoþcfèç|Dž.¿”Ñ×…oã<}ŒWáÎ'©ADïü'‚ž£Ñs­œÁ|‚T}ûmÏ0½ˆ"¹A²€vÃ#q´ePŒ E`dCõZÓíSqÒ!ŠB#kò
-î#2i¾H…KWµ¢„0Š"S"üCĺŽEs.]‚dÚÒi”"¨i¨È€a7ÐìvH ó“’–¡ÙZ¦#zò¨a¥Þ(º˜ìPµ}k'±¦_;U­¨ö’m<ð~]@‰®ò(:>ôÄÁù
-_2´Qà ²C“›&½vÕ…ƒæs:ãx”1XFRF±ÿ.ïW0Ãg¥"
-–ÿ†ð¾=‘2Ÿˆšs‹è7§±ßEV‹ˆK,7¹ÏéBuDø\€
-RV!oßU¼ÿ¨(£iu¥â*Ј)Õ“! wÅbÆâZ€Á\Ÿx
-¦š«›Zw¶]÷uô­EòHÛ/íÚ,ïH Õ 6÷)
-âêÎX-J
-â鶴¡ûº4e×avCéÅ ¤mš²mGb˜·‚\o*£1¡k¾.*00£`ˆar‰@e‚Ô#2S•0d¦„´1\ Ö³é¼ìßNg„âp‚"Þ\Ñ¢xsÅ`·DMMŠÆgõ8§¸ 7I±‹É#àmGŠ0.5)lÜDáW· 2>ÒøÊyßÙòxÉPf[Ï“Êxp¨ `åK•ܹú‹ÂÈ•$ÀP‹É¼ˆN´X4mBûS¦Â´hÕêµuEeYÆ[B‘ÏéRRÞÖ¸D á@ ¸£àfˆm±>ˆœØ@t=³g¾%¸»“a|Í çVJc
-Ÿêëçü¨ÖÆŠ NF`¦{ÏÏS>§¡z|1l15ÊPø.%â"œè@È’¯c³a¬DËs¹ö-; Ãd ßü‚žòܱk"àXÙw2@;Ïf– ¾}X|=SHõ:O›¹ß™0_­‡…RG¿ÙÝñ´ÿ+wþLÛÓêJLŠ ý þÎ
-‡~qˆJëW…3™HZšÂP<šY$¿ØWWK:‡ÂžD¸_T ½óæ/É…€|Šb¡' êÓsþС€RoäqÇEʦ¸gÇ9sƯ,LUJ(Z¡Õ«V«
-À8˜F´ŸD(y@âã&TD FŸÕ'`P³äM!³AÔm'‹HÄ!“Dè`¡¬‰7ÑÕ"Fy‘Iít|Xí`RƒœÄ>ñ3Z`¨ÎçµA‘h{˜2éS×Äjj>„œ²«Höa-¯§…+ ¿U¡ÂdìÒžçR;-Pˆ¹ªâßÈAtM§.ÅÌÎhóÕdö‰ŒR½jjÆíÁy³‹²%~¾JhWXþ>ˆc3€(.S·Âg$Â:‰m|\€¨Tm“„ý œaQÏ1ˆæ" EÂŒóZsâ„£q|"ˆ²2(Ó#r>.t¯ÝÅå!£Ëx<««Ê묟ꓽìµE³@Õ°À‘©Y²ïêZz¼»E@ !ãBO´¯ DЂœÃöXˆB.åjeêÅ€/ŠO=O“C—cœ¿ë1!G@ ÚÔªìEìY6(;$Ï'¬XM'+§6­›ã5ÔüZÞÅZ(ä°Y›¦P/®ã ¢ áHD%6}WQ³ƒxƒo‚Õ‰›,n…(·‡G¬ªÜK4¼›/º²š àYÅ;áÏÿ²]f¹rä0¼ŠO`h)mßs§9ÿD¤ªž? ÛÝl-™ô¸Z{2g(_”3ÿpùÕ7lkSY•ò•ž9ç­á’£p,%GN¬²–´‘A­F\òµÝKOYO‡OÜfüd
-"EM‰:vÛí>ªÓâzú ÐÙ‚z9Ÿ¸=·ÿè›í)H)‰š™nm §[ØçEA‹#u/ AÙ&¨/÷v˜Ä—C‚‡~ôJŒ`™Þç'0ÁOXÈ#é¸g·žŸ)b%ýîM»<Ù©Û.ciM¬G‘¢<|AÊŠhÏñwfÀ[áR;u!&Îë[7¯ú­- ƒtÇÙGâIût̓O¼R R…cÎAˆØ™£T œ‡Ùu¦ì»$b¿y$Öi†ÆJþ/È|œŒ> TNË6+Ý|}>ynUž(™ýíC”KµÚ­ÝkVu×D¹‘u}™-ª$ˆ€&ð¬W–%un„ãËξ;1~®BY`e ­‰bRÒ8¦©{¨’}53’ÆÿçS!"ùÂéN_#õüõ>‰ÇA5¨ñÕ
-ÚQ¸bYêÔç{~0¨ddŽd‰ŠÕu±Ä‘’ÒoÛ'qÖ³9Ø euÍF#?qPd¹õÛ| MÐaƼ/MùF…F ReGÖ%+!2BæùZ*nD¦F¤tŠ–ìÒñW¼ûN¢ô½žÊϪæ‰ÜL/>÷íflÎW·ôÉöö媿ý¥yöÒñ¸
-
-¸½ Áû#ŸäÕw§§J•/:<N™ü”†tü¶ùAN¦åçµ+Œ%¥>ÑFšÐäóžÒj{“¶1ïžü„IF˜‘Ú^ 6ji´ÏkØD=CjQüåv#f0†]wëxEïD8DÑ®¡0qtÛqrxüv*ÊQXȺWˆŠ ›¢&i`–VÉ¥ž\Rêñ’m&bûE+÷\íÝ
-/òL˜—o8öÂ
-Ü;¬`oDa±œ¡ õHRE°î Y
-KÀò~Û³˜sÉôÔ1.aðª."} ŠÂ ?õ.3Ûeb&´‹¤¥{6Îf ´ØAÎþU²QäCp…gžD 딨ž¦&‚9Áuªû%4*F\­&‚RÑÝk¯š€AžÁ
-覿Ÿ?Ë6ÑVz´ø£¤.õ’õ
-U4 ¹"Ïœ2mM’±Ÿ„y‘­Î@Á« Òá-L
-Žû: ˆßPc´+sÒà+
-áaŠ9‚Jë¹ÕTð3†°'¶þ8çRlwÀ<àÒ¼ºY’4}ç"iÜ¢•ÆGd“—lÑᯒpŠg”˜i“‘¼®("P³Ô‘­lçv½SüÃv"üüÔW¯eî±ÉÂy>ÚZíòm§•£k|'d9ÞбFÇb¹‰”•¦±¬;Dð†YŸŸÌ]/ !ÂT€à‹ø^²~.Y ìЛëpK²sñ”ä’$%+XçØŽËÙ#SÜlÏã ç!ùK\Yã·ÒÌU„çw§©»»}·Ôjпð
-nÝ›íÂÖ\IÇ¢DÊ£{Z
-,6¸ä¿YG‡×*ŒQXaâ-7W/—ÉÔïäJ]Ayܨ²u,ö¯ãêcÒ¸dðzªëø¯QQTÞ|×™ïœÙ/¶™/H²?•«nSo"Êù³ôÕàÅ([;QMß4Ân°Üy Ñ=Ê8Ú=²3Œà²w'FÐRþÙij M¯‡¬hxúù®qñå°Æ=ZlhP "h/¯„‘ï»Ä¨ì‘ù–4ÿóRôÙr¬ÌÙ¹€&ÕõLlÝ¡bdŸéN²ÄX¨œnef¤˜ÙhÖðfwr¡¢yƒUÛÇ?FÙ¥D-KÌ(`­±%Kˆ¡Œ€F"¶4Áº_ð6wƒý56_†óø’nº¿:Î(¬Û3ç!§åWûdCž¾æ‹€Ã.Šu
-eG€ò®¿07çQDûèÈÛÁÅ~C{:gþhW+¥Ë:(ÿ«¶(Nœ"°€ãS‰”<•Ô‚$çt^öa•A‚Ÿñp4K{U¡[ª=_x­^8Øc “DÓÔ+ðÂ
-NAg¬w#‹«­y£jÜs‹SY'ó,£+ÁFäc¸Ó:Žûñ|r€IW¾ËSt ‡T»>Q›v²~ð ÒBÞñðâ8NdlEws
-Û´Ø9Âð•:^Ô®ôE)µ)Ö«OXpÜàÇ¢"ìÙOøröÒ©ag„®ÀC1äH2A÷•/Utu§ÌŽ‚M'âlx6HXkÔ‚~Qk¨ ±®g[6z¶"ëÀ{Š'k°%^Q5½–âŒyå„4¦à¶û÷ÐÓmÑc^UÊÀÈt!<‚@]ïé$m™Ñ*qP“ ™Òfd ñâvï#‘OU”g½nóæÒfP(šA.«'†
-$X³ˆ'±Âãš0Ï[ø%n™õ—ôºžûÂ,
-µ_7à~1-jÒþË¢¸ªÄÄóÔó³ú5”Œ3Q2™QØÅÎ:Ã
-lŽ=rº—¼(MEªHÜ•sÞø@PBÔ»Œ»}3žé À8®Na´ û‘sÞr+ç:QŠðB•·b,÷(L;:÷Ÿ
-H‰”—MŽ\9„OPw¨u)þHËA÷²¶s‚Æ̦«—sÿù(éžÊ—ƒjÛ°¬HQ"ƒÁàcúèctïÍäý×>ôѤ[Þ‚Ÿ¼[f1D»I´™iÑ<,ìý·Õ—$£Ïž¤2\fd›ëž>ZZW=›êîÄZo*}pª·qùííßoíýwÎGiÜ¢Åй¡9¤ác¶ïmNnß›ÎìSƒ(æ3ëV@m´Ø燭ó@\!3çŒsñÞçHCà¬P-ÚìÜ>#N‚÷+qé²^—õIr4O¨áfn|ÃÚεq€˜¥O7ëæͳkצýöœ$Tš8¸:Ò„òô¾!Òç¤:]ü<œ'Xö6,W¤$É•@6¿^î6Að|rQ
-‡ÈN»nÜ‚L%yÎé·¡
-Ýa]]xœPÏ
-7U8m¬sx\‡ ÙúÊp{LjÀ»”/
-­¼~T£zÁ:TÛçã # º--Ë×[ƒ¶!f¦|Ço¿8Ì«'eQï'R篜ۘ¯—Ã⯥ÈFèPËÖÈ™oDtË:—+Ç dS…ÑœC†þ✺\:5o~nLN†$rA.†h“v"ѹƈҢ«YJ–,˜¢'7‰XŽj˜EhDâTyÖÀº5Óæ/ äÒ;уx«â¹x#FòšŒÐç PÒÍP<!Ô¦q¯«Í±ºì\U$ëÃJoVó"””›R\Iæ\¤°iµÖa:)V§hóÆðÑù§Ù– Ä’ëx¢‚ŒgP¤Ä=÷ËG"¾YÙ Ac! çÎ#~‚ Ù-Ùé¡Ch»”¦ŽþneSfÌBì@ÔJpè÷¾Å(hGÒŒ=n ‡£¤‰¾œü¾?‡T…•Y¢_7¦™œö1»ˆ>´à…;5ô¥”ä[cÈíHã'êŽ"GL0Î?Ã76Ú§¼ŠéXP[dÄFªÂ~H! 8Š¢ŒÕ£_@ˆŸp}]ºttà+ˆáˆ’/¢Ï=©(M¥°BÎPD¦0ñÒ¡…Ycš—òz“ÍŠš ¤ÊÊ#žuŸ{ÐÏÃõó;øƒaýË?ßÒÓµ4ísah¿þK;òÙÞÿ|SŠÄAþ£öÒetxp‰Æ9;&@¸QƒXðÿôq²Æ(°³eMuôî ôù;},?ò½ýòÞY­T/£Wè¨õß F½‘ÊÔ¿¾uõj “Á¦+q³Ó©¶š[¹6/-%¤½m»}¼
-Á¨1ÜN(x‹ýÄ<"ëë\kݦ,ß’7:U«€ä£lC`MâB$RŠ45|ÀŠf œh3â}®ƒ×á®^k@¬c˜Ã&IÅÃHý°ŽÁeA S05°?ó²CY]è<m¾8W`ÐI9ëĘXødj¾ Kó¬ÌŒêÍ…w(ºÎÁÊʸž>Ü+åeEÞKqeÐ’¤sΨ*á™ I]Š”Ò£Œé¸R ßËd"Øhî(0IP‹¾ešmŽŽòÖ·ºv¯^¾?¿Þ…§gé’Zœü@œ´ãX½4kA¤£@ƒ…Åû0lZŠ/_O/§ì|±fdŠµ@Œ~¥â$Û.¤ “¬º3áÆÅ}Ù k ÜÜ ¬Ké‚;ÓO(/óÊ÷Šš$ËèiÍŸ…h“<^ëe!´Œ>õ­A»X±Ö¬DÜ@v¤j¡à2=ÚcEù¹ÏÁLcÅp¯~žÍä¬D@ ÛoÂqò>øÏ_7Ýy_Ûêét Ëâ1GöÛGfýÁZ »Naƒ4)c¯!'œSi\•rRLJéâ­'Dé|S\¯B14è¤Ê6‚†Ãß’˜¸j‰ðâòc ^—r}€ª FyË Ô‚˜Jê°!J'ßCƒ¶r5~ŒâÑäÓÙm (ßl‡€ØûøfCŸO’kÌ•ç%Š~e»Ã[ðñUtÊk["i±!اŠ~µ8ÚA¢Ê¡mJ,a°šŸµÜö/Ì" ¾«å‘ÈL)5áSy¿é_ôzGå.I8íš TžØ5šísÍgûóKi1ÙÝמÖý¢õ2‹¨RÚèÿŒ²-Ôº:‡§5ÁróŽ¯Á0—ÞËò!Ï y$û*ീ¬ùŠãbÄ°÷¡íú]Ì—`Ÿß¹Ñ¾øÓQ_æQÝÛh`¤­t‡ù¸Ã|i®ÂHÉ2± <ÎÿÛ ›hÏûèÆÎB%©Œñ¿z²XO™ü‚ùüF¶WMc,0® ôc\üœ§¿nAöÀlçݾIp ªA9PÁÌšÝ "8vxÁTØb‰ÊÄ5UG„5-'‡È™Ž¯éªµµŒj@lJåÕÑ«<ïgÏeÃ*h °‚pA¦}5Üé%nÁTcŸÅ°mˆÑŒŠÆÌS²,S\Ž„ü_‘j½Â¶ˆêU2ÎF*ÓJë”=¹¡fÖ7ÄKa¢6¥²…aü±P rÁ/…1y*is–,$õ@H1ÏÄ\ŽÆ v
-¡DXxæÂÈ,WÃÈÚÙ|H}ÝÏgM¦‚¬éÅôvøÉ*ƒïˆ¬¼ŸP¬•ekpùýœSÆ}- ²N©Ñk€È´n
-·,â ÂrÅaIb†à;N«eïeó¢<HAW‚íȼ6Tô„'³[€¹"=Z,óˆ+þâ6=ÆlЈµöÜC~Öó͇VÖ•u»ý{ÔzJ»à.Þ_@è-º…Z§½‚ÀÝYÛ'š{úàDþ’v¦;»¾8‡},I }Ú_݆åŽ@“ö½¤V+4/×Nƒ5¹)ú‚Heí›v´¦v…ÎHF>æ „˜ˆ0ZØûê”Ck”bÆ‹s¼L“r—ô—fÁZ èÍ«Á‘©AB3Þ€vA±õÌ'„wú™R´%¦ªvö³Œ>uœ([bë]Á eÜÅ/“œ¹n$Ÿ@wÐ
-’ÓZ¾‰¯¬ûoý‡‚êU0ÐhtÿŠâãCŒ[ûʘcˆùïÛ±ªÁÅpê‘ë†Ü'…šö§8’±;n>o °v0­8×~P‰5¡Y^¿™*™[§Èl¡<¨â·Ç„`nØ]zT.«úŒí ´„©¼-åvƆ ­îCXvG&gй ÎDlce1DU¿Ì+›ª5>WŽ³ÒŸ¨?¸Y_ôBIÈÈ\záæYŸ’%0ÁxJ¼­Crà³ðÖ³e|5óŸj}Bð:=·ì·^t§¿P7¶¢
-UwLÒlV a…"I À˜Ç÷DK¨}i„•Kø(U¶*§ä M)5}ïXôMºœý¦ A+*³ÓÅ¡’7÷Ï~Ô]1+Îk ÂÌtQl_ XRîŒ9>¸ e'ªqm]>ý‹x0!m^…’î‘n>Ë,âz½Oòmµ7K «ê)í/%À<™%~Õ¹²âS™ËäÂ%wÅê3ÃmD¸ò¼äñ2ÅW& îD +F–NÂí_Æ«D¡¸ 2Ë1w½‹s*¥jš˜0\v òK@tàvXJà°tžÐ²PfK—u70‚ûIù=3ÈZÉiqµFåšÕ9¸
-mP¨ ÊÛL×~*å}²<þ¨X!îÞ%'¹¶“ /ZnLB‚ž2å¨ÿÓ"
-l.C¶g¬px2ÕQöÀ¨¢ÚÜû‚T¤
-Í[ë· r¦Â=¦B )*Ñ¿kåçT˜äªêxÌEºL ,®(ã¦ck©ÐÍ2VÐj&w*Ðâž•MÇËTHlèSM!ü„‡ÇT
-¥³xÒú˜#ì*O
-U‘./
-z #rBŸ0#¹`2à6㘧œ¸?«îíClU Œ£Œý)&,¥Òæ(SO°©‘)¨ xá”z¹ $*)ÀaÑù²Nªm, p!6µE J&r7êÕп7PÄG¦k±Ý÷0Œ+kvƒ@b¼%¡gö¾AÜŸ‚;cšÓeˆ`s1Ìb¾íæ™^¢ÈJ+Y=9¯>!Dtn”ÖÚ©sʪI¦5.SÕŒ3»äó©o¹.Á ´¼_Ö)¿H쥕+äÙåH;1|D´´WÕØþæ©T-ãκäŠy$¥ò~¼ê¡­X_[š-.ïäs9V5¼)=²ÍDð~,OþâDt î˜GZšŒ-7˜À{lH”h3Fòý‘)b©lúL ÅBö­”ý©N
-7–"O•FpŠÇª¿Xj/.ǽž"˨^rº²ŽN¾¸Z §œý`î°¢’/ô …»€oCckûSä f”—Ñ}éè€JÁî;žQö¦“üžƒÛŽ¹N„F j®÷’³p{¼¯÷©ƒ;Í\|ß „íâkûS’cNßÕÙŽ¸7ÝòPæ˜ëåMLP9J™hâ­"ЄäV2¼!cŒ¸iA‹@'þêþ”ÁQhÀóõ¼A gïJwsQ¸xŽeÙ¥WyÉñ¶È㌠M ñŒÌE'‹—uè9\ìr%A ÛC+Ñá<!œ—˜jšÛæ\Ÿª\c‰'Dá RLòÇ.*ž‘¸ôÀ¬E1â;dµ±ݘ8×óqó§CTþÄòs¶x.‰€HÍeR|‡ºfÖ°#\úž'„³U½oßï­|FÀDvÞg"ûF½,Ìm@ø}@~ê÷ÂoÈ#rþú᜔Ǜ'l†,Í–Æÿ9mÎ=ÚHlîä›ý_mN€ðà|c\ÊTšiØÂOÝ2W¦R¢W8Ç»©}^3’÷ê+ñVæ
-T?9zÙ¼€kè+àz‚ƒiÒ"\ØNó=˜¼œæéÄ_tÿçGüùÐøÒ%‘;²¼?
-½ø9iNÐßØ[H8c]‘|
-Ïl#”,eK_¢Fïþ^_"ˆ3cÓÃtÿš®FìÉs™Ø•VUJq<žÃ¡ §>Æ0ì‹Ï1’œý%vG
-KÐ3Ÿ‡-*
-µeH³^]^ïú±Q
-Í\æQæ28VÑÔ¶vôçè!›F…Æv®@€ËU~S³¿Šn†­1[ç;UNY*÷0c€Ë¼lT9Q†p­$À„­ÂÀû:--V÷;©ÙÌƬ#HˆGÊËa„1´L?›ÌÈ÷ö§ ÅDRÝFDòv#)Äø€[Ï`õ}*$˜‹$²ű}ÏÛÁã!R•Ãô¹Ž<¥ªcODB¦e™ë¡r¥þáß:Âb}¶`Ón« ¤¬ ØÔÓF°{"ˆ1‡k+»7ÑâØ»qúZ;Ô•8)±´”7H5( 68§…{#âÊhò¾`|€ðF7ë3]0PïB
-ûÝ‘¬ R[šYˆ¬íD˜K²=ÛéG#+?‚—Ä×X(ñ^ˆ/Ý«®UJ”ÐO«ë ?•LƒÔuB˜v¬µ˜!ÍJÎ0ø°' ¬Ÿ÷:…nô w‰äÜp_?Û0]¥µâß²f‚`Õ†±¬Fç¬CÀãªh Å¼ÍHs Ž¿R>ª(@Ê¥Yá|èón@XR±Ôd­ ü¼a L
-ÛÆÖQJï½,”±Õ´5¡¿$šø&ãt&ëÉ>D¼iÉ£y,‚!(ꊽ{³à@í÷@üT…NÅ?¯-“}yKœ±íÙ$4g$1f RY2«½Í*·Õ%òŠÀºzw‡<œ:B¶&Ÿ-×æòÿ+Ÿ±ÎIOói¨$X¦G¿BÏ$Ýq[½Þ‰Üê°BÔ"Ö}N@µÿ£¼L’äÊq z à̵z©[ôVuÿm='@YÇFUö¢¥Ÿ$àð¡Ul{¯1sÌ€5tƒ«Û¬W
-…d>Ÿ%CAÒT$N
-ÉÈ"`ßò‰+hþ’/è.èII·ðMÃ͸ gz–9¯ï¯T´ÿÉÊÌ R^ºèõ¶âINþ2SÀGáù R4NtæG Åfe”c«@›Rþqó®÷TËG9‰`€[û)‚áñ Üžk©ÔA$“†ó15Ä >J^°#õšS‘¦º?©3jžTƒ$ù#­€©]K˜¦\™Ã$)~Ô{8gÜH²Dåv°•ÕË*#5¯"VáƒAµÔjD÷Ä8œÃ\JlÌ» ~ ùd ›B]Í'§L#8€œÜèÄÂMr5~+vr)+Nª"…’‡ìl,ð@‘À5cP iH9{„\Ñ@V¸ÝÞ5ºÐÉiw:†K™&:kÝhI›ÐWJÖXÚu˜ë…Ü.õN’ õ¢uD6ÕßYLæY%<"%Cqc¥Îc)ðh×¼Z£²„½1(‚Ã\w(‚ÃPs$jôý*ÓÁxS_‡GqÐtË•ò.!¨b–À—>¦£YÞ’ôZâ(>8L ?U¾
-‘±`,ØG?jæ”û<íPv“¡ÉF ÙÀ`Ô„¦:ÕB7|(1 8‰Vp“9äöòðúÏßb¯i&Ùh:pÌÊ£þ~(^Bd^¸ulƒ)GAìÄGî&#x1ŠàÌF°Î2ð¼þÇo/R†k=ÍvÎâ£àRnu¿ŠæuƒrêP¦€„eÚ<ÀÄ!Ô9 —èðà¢Ì‘9­¸á’ ŽðÔ«ó
-Íë`ô
-L‰kë Õ(÷A¨4$ZÌû°H4~p†nâº2ix}L ‡Ð¡.z¤dLnק±žq]Ná›
-`à€v
-kØøhæ³áô½$ â²E,.ÄÅOq°û3¬Þ„ sb”@X°0óƒô&èeà`¢´Lh$JÆA2ßœq¸)–1Í":ÌOó‡¼Y"ã·zÜ¥b6ÍW‘ÕŸ˜Î%H ˆ@ópÕ Ò
-ï£`ð¼ð¥"•Á7t+õFUAsíËq¯tP±C˜m KËÙ‘%ÇÄ8ÚðÓé‘ç#1ö5‚"÷%掴dTÄ ¹pâßáˆèN"ý”ÂZ•8•s‘»ÂFL™ž2ãc´¸0@Ö8YÚ£uŠ¢`–d2,žÍü1…]¢¹qº‡
-ЬÆ#xUÜfêhv ‘ÿ›ñ2Évë†è
-²¯À‡-HŽ¡×‘‘³ÿin ?QÇöÈ_‚Ø¡P _a)!Éu9oXî(5«uƉ ¤•|9üRÀL[1i%ÖEr&™rοD€ï e¢Êr¥Çüh .øîÔ”&yâƒåÔ¦cHŠ{éVy%æ¤@é¹ÞÇ|â`³¥‡
-ÆÉPsª§ñ"[‚"0â3§“ª@n3ÇNŒ×줔Ñ?”@±(U°^[½/×B™XèÃ: z+y ¢×"ÌOâØöˆu@5܃EËDq t>å+R’ôÜýOœ?‹”V™.x-¯~çã‡ÿPòMüv½Õ£èÇÕ7sèVMÌfôÕ!ºä8—(€A4å@`)‡X=í¬í‘j(ž¢Ó™;&ŽÇ€8ò‰` Ó104 ÑŠæRŒ'‰*µ­mÑE7K:a¢À[I8¥_Åã² eئ­¸¬ „¡ïÞB:Øî,VÕœ®l†Œ
-"ůœÈÈ…a}|¥PL_Ày=NÃ6]ÓÚwe
-|<ƒŽÙÅà ö²Ö³—P¨Ø2r`F­:éŽqÉ긮â\Ê„°—‚Šyb\&þx ^º=F¤Zü³üÄD¯Š›~˜•–KVEnH(—@¼>á~hAuh=JB¢[OòMÓóßs™­ÐMò ŠçY†ùB³®í
-Í¢ùÈJéQÂÒ3.oRA•=Ð2<9
-åøŸÕÇy=™^¾oòžWRz>ñÓŒ(ÂêÀY’êJqb¤{§D/¡üRàJ7‰®ò!
-È[¿fŽ âø à”<Äóé5‹xToî%+‹tùm<ŸšŒ*}XŸJ PÒÿìeè½5‚ZZD“è>|¸Gó$¶ˆ<}UÓÁ%ùkÚ¾ðÙœ—ÑU73¬­ðf~]Š~x‘ˆ>„uâêiÛø®„²÷šu3jwhâñ8*É­/Mï™:¦²—íÒÍIàVÔ¦ì*\—º}XE Î4,Tû´£€²·m}ÏÍE诚 à`çæoE¢$Za²j{³¡ð#%/Gê§b#”Ý”$v fˆ’ÞŽ†¤ŠFxY\ÜÈ'þ/B¶{yšÉ$ûû­zï³4~ØGäÄ[ýG]†oÔ¶>‹Šs$‚NìGDjl†ø4¬@ZqNh¹tîePBþRƒ-R|ƒH1‹Úñ§þ.ÉËÉ‘C(ÁõØ BÄS-5'²bâŹm¾RŽl?bÕ%’ÈŠ<ZŒ&“Ì~®ôKÉ·¿þù+ù­‹cÉ°|µy<ëÛ,%´ñl_þýP„™ê2·ånS’aÀŸVL '„ucª=,ÃK •>%-aOdxŸQ< ªdC®[_£>áØp+cÁz/ù"qãô’IûYaÉK8_­×êøj¥È
-ñÎg«Ñ¥X’Q¢HñQÐ`2m¯ci4uöc—
-Ì•z‰ex,$j„ö:-!\À‹÷6L>TŽ¢¯]/ÑP¦¨{¼m{†IiV§ôRô0t¤ž+$Þç%žšÅþνÙ
-‰=«QD´Ârôáæ,oë@\XÛ§zIS¬DP¸Ë.A¼…ôp…gwt
-AßêGöÙ…c_N,,YN’¤’*Ã…Et¢D¨˜¶u}— èt=ÂEÉ’êÛ8ÅVø@úÇfæ}× q0˜yn_§(–0'¥¼œ ¶sÀ|EIâ]Ûþì8¸ÊJ`fçVœ˜g¯²ú çì ëzb•q)بþ©D³P4¥)ÿÜéYƒA×E¡kù:—@w±r§DÞ—iC“üNp‰p©1ø (HhrRÜÑصMe¾. s›„î(Adx1Üc±h&Á9\ç%©PTuªÉ…È©4¥±Ùàê*ŸO,dH³Ò¨CRÄÑc‹[ѵ¢›ËûN¸&ž4Ë…¢EA“Ú-ßiJe(ð -~®@wzÉs¨(:§òBµØê7“÷M!8Xv]Ä·~r,ÇæÜ‹G Áy/†…Í¡À¹K” +…‹fѸlÅ5×]2”Ry2l؃›™¿©ª}ô*¦ãÐ(2m
-2„˜!¿–ðÐ{cª¡¹!Tw+ðn<ñX(ǵ¤îtÕ-ª7Ñl
-8抭*†8¶=‰qG8˜Ëv?q–åÁ¡¦0±ø«ËÐIÈÏï”ù0yäX¤*°Mw®A»SL²Ñï°`Ø\pJ…—6R}^êE ŽljŽ“]‡
-øCÈ‘(¹ > ª$~@ ÷ûTÄv¢Sì‰"oéÊ‚ÕP< æŒ(’æž•A¾dü`áÙËY‡Ôc »³s‹eçîm\l¬cRIBÂs¼nY
-¡øøÝ e†
-.ž#ù!ÚâG˜ZX{œêH{˜&æ^&ßH¼ŒÝB‚»]åx?ù0MÜh^Ç‚uq >bD;‹¦šã-íÆ®C¼»;Å4½ãõF¬Â *Öqí`Ý"Øâ
-Q.çÀ´6»ÛÕç½ÝÃ/~»NfûÊñF©‚9Bâ­¾2ð’óÉ£h—ˆ¡r‘~­L*’Ÿ‡¯à"5ô"J Š,/OX«3©;ÊÒ w0ª}¸œß £Q¶Fb<£„ÿ¢« Ô;.óJ›°¹¼WøFb N¨¾Ä*\’y784_Š2uìw°PŒ¼ÒØÅÆPÂèw¨Ky
-5°Ð”}( ¶.áÚ{ï B¹m´/·Ã ‘L`•à¡f×;=\0uÚÙ€–÷X‡)H2y¾Œ°É^²³± ¦
-Iò°à‰q §Qðl9í„_tV õ+Àòxˆ—ÇVkÖ`åiqŸn¶xΗig/¡©µ pºôÂÔBoøi &‚³ý:ZbÄ
-•±amûV=wA`Œápgº²‚L©ò¢Ç/$”#M¶0ÿ Hø¹Ä>.A+<h±7ã—‘ÁEù/IK,”(ÐO’ßæÖ å¥ô=uí•|ln
-:Ú/g‚BBšƒ—¯æs\䶹]ÙG]i[‚ËF]é:Š ù`,WwéÑR<™þçhÛˆÅRÌs‡LoARÄ Àòãí¿oýû-½ÿë?oýï­íôü ;Ø)í!ã„i/ÄLVo0¿CÐDwD@,1ó±
-´”ˆrŒß„7örsßä~Ô× L° OHwhËb,Z¥ 0Öz7qnËhBYuv¦;+Ì;–" C¦b£† ©y‰öáì(Sa ô„À/õí;MCÁÏȘÈ;³Â× B‡ú”9‚øQŒ!@„¦¹ ¿Ã4hY}­¢AðšM^Žœsëƒþß•aò™‘;Bv c”Qz¦øÔw°ºD .#Iˆ7Á(ÂÀfÚ‹2žå`BÏwà4•P›“×—…âAT‰ þh-†|1mˆ@mmì?â•”Ž´dvåaËŠ»Ç
-£«jZùå<…™|˜DÈQ€oÐ/YmHIª®z¸
-ê,_þ]Ìóâ…‡}ôDáV=ƒþat©ÊTâP™~¾ÅiŒƒ ›ŠVBÒ/`gQµX›‰¢ÙÖ©………¹ña±¸€*ЇCFmìGÕU½­€eìÎIæG üxZ2ãØûŽÒ°5dÏ©,,BŒÜ ƒ°øL»Æ¶E‹Ðñ$$ÏDaÆÖõð§ÛL‰%sÈ:¥D¯š¤LTšx5-SÕ‚¹c`°™c…5Ž ŸzuŽºP`‡+(ó=¾ ‚[¶Ò…ˆß„ãb†d.ŸƒžkÓÙ@økË^ð“¨Â@ðæ˜K~ºkØ©'ˆÅsǃï<ÏÍí6ÑüÝ^Í1hŽ]
->\÷m EX%|hŸ~½U?®å#½nRCR ¹Ó÷oo(©§+qÚÛŸ1ÿ˜ˆ5n‡=ƒ~}çFΘÈmÏÙ²aÁ·~hdô²£zÝAD˜¼(Ìb ´0š)%:ÁÉh;ÃY·êdþ5°8ã˱pIœ-‡§lZD,ëjkD­Å|&Ž—Åm…ßÁ5’
-ÙYúsþUyM¹©‚¬ÌCõ™1#4e´å5nyÁ£•ð;©¤ºÔ?^¦cj;åÇÜùÅ£=´´%5vøøHq Ï£u9}XÌ+<ÿ8‚i-O Ÿ š#XÐòÙLoh Ù'’®›<Ú‘¤ÃÈÄx·úXD Rym[y6¿EZäû9;DÖ£MñÛ2ȲÑ1ðy9„֢ɸy¦Ð*ر‰[±€‰O§WØrv]vŸN¬I·QîuuâSÏóyçÚd€úb,ºx–ñ#h±_áwH
-t²‰Ê<K³ÉnÄÄz”\M¯çQä‚…ewëÇ
-S‹ØhÓ) »25؈j
-íHT{åp—yÔj˜f˜%׋-“©”xþ<œ•‹‘òE X%XXI$ûgJRù±tì‚O!~EcúôWôLSoïo%ÛÜ L¯¾óÔíûmnS½ê6}÷âÜgøVâhÌ?µêçwF»•l·Ê£iöÒ\Æ ¾÷;aQqn'm¯ ¬ €Dòª—ÆQÚÜ[»¿U颿6IPP8Ät^ aÖáOüñ‡=’ÞCy$Q½!héH­*„ž%êý͉5ø+„¿ž=466Ð̾œwë2œËå
-¿¢?’‚PA¶ëó(Th“IaNĮّ™ú*—\ü©•‚ëªÜNìL&x öf‡,ÙP«ž®Bü…'¢EÉu0}jý¯o0…²l —¶+csͪ2ÔÃB7'¼æOï­ÏÑ|@èfáù¬Ë§È0#sçj?^ŒeQµ0‚½Z‘[æ ÎÊÉ è•‹çÓåäÐòÚrÌŠÞ^|‡>‘b°Qšís›Ê{¬Ã>ÈhPÕìáU´¦ñ«í»Ì´ó$Æ$}À wù‘Ùì3M•[CÊx ™J
-º$”ñê‘ %œâüsÒûéQ(ãQ(( n{Ôó-X ƒ]/Ûb0©Êá2Œó\ SÒë´¡™%ÎŒÁÆ—´qÞÅÔmDZÝ «[Øë”ëµÉÍkíÒšƒŠZ9kÜ%0Wl>Í2ªJòÕ–äõ“ŒÂgùkY˜ñh(8 ÿ³Äx1ØçÅgà L=$¼žŽóè.‚gjyÄcæ ›áLI¤²t€*(ÆÙ95‰ A@¦ ®³l:2ж¯ðš‚À Îîä&f\í_ü÷’QËÕeP¶œ
-@J§ÚLÈd*®êÊ9Ÿ9Iæ.åï¸í(4ê\™¥D¡êÙÆ£óMbŠj§Âò§•ÓA¨6WÜ?—U_DZ€OA:íÇ{²ßƒöX·7C‹pÄs,Iì8g½øÎfÀ¹ {æ‘ÛÀÎ0dgd}„™M ‰±ñÄ1p«i¨3ÃdGiÎyê’A¶!D
-Ì° 5í=XJœiAפêG=ï–ËU”·èÖŠÀJJIŠsä
-241!uÿÆ–™¹ôY½Cº‘±Rw·Ó:à˜á€ÆN_îŒ,/Å Ó˜FˆÑWz!šIßmªaµG^ŠTåSÅ¿} ‰„à—˜·‘=cmˆ Õ#„AK²ý8æ÷€^Aw¯|AØç$3Ù1ѲL0/Ù<#HÍ©x­@×ÕC•Íáâ/Ú½F¡ËžP˜úÅ(ŒEŠ´,iÖNâoÄRE§lèqª|ø¬#Ù^«sÈ‹
-¨-‘”°—½Mº7ô6•Áðy6{é-CÓ¬&Ú <%gÀiÏßá9 µ…{%ô;ø0zIâmI)ç¶cQÑÉ"|×2Cî“ [^Ý®NÁoïD‚@&A -ÚpA`ç‚YŒ÷ç×5!Mñjà`á&ð1ˆÓÄ•z
-ÍÙ‰d‹\pÓ¹rß ‘‹D«™¢A0¥È³ŒÚ.HPë(©öQ¼“šH·Càe¬ 0õ:Lí¬Í;.«Ê9zLhH’qö&)Àq+] k+f")h‡Íð}JᎡŸ麦-Å“K Òõ¨?ï³o%=ÎçÑøÐ@"IþcùëtÍkŽË7Á˜#Ð|r#)¤þ
-ú|
-’<ã¿;Ë‚éEùƶÊp+ê!…ä=š¹B“蛄dD–ì]ÖÊ‹™—f„f¶)‹©zF2¢“MÁÙ”[§DåϯH¦H9éþÕ9'ÃimöeÛ ¥¢ž7“]Eı– ®#CѼL.` ]…SaŽØužè_‰ýü ¿o“ZsŠ€’ðS'Jøk —U8|J'J
-dä&Ö°7(Uš‹‚î ÈÂ*¢E°GT¯Ãü‹X}fšfnÇUè-„bõ²SbQ °Ì¹-”Ÿ‘å‚û|zñÅ´†† ûN$ÃÂ0P«ìÁ·ð,hë@¤S~$¿Ö!?J5¶SêiCw£T»-اF…Š±e›ˆ©nm“;"¦ÂpugHž¡Š+Ó: ̨]¦‚Бý¾eQ.ƒ!mñ9tWÃPÙ6&©°$_ÆÍ“E5ðo6~íM9ˇՈ;-pĨ¤9LmŽ…e"N —t€|ØV SZYX†üaiœÂ Ô·ÕaÌ3†C¥¨Ê@ƒêtñÜâ Ùè¸ía|{Ý-‹@DDÚ
-šehóµÕ÷áþ X%ƒhPá¬Q_ÕŠ™Žƒº¯[åRÉMžàà÷ÖV“ÀX²ÜÞj f‘TËýבE˜Ä(Žc~×Çÿ{b"˜¾àÁ8ÐÐßJæ¦ØÚuƒ.([Þúê3|ÖD0¼ît†?!×ñËfՠ˦X6/Ûð úæJÙ›©gè¹{Ì{'„’Ep$Æ@äAê‚bJ‚Nú£ëã'ƒ¨;nþý‚ðöa»L@™õa ‘‹TÃßm’ŒnßT— §êcúµ©;¼‚NTóÒMX뙼`¸â¤¡ÀÆ4[§ªÁq-ysŠ,ü„ 6Kr@¨=°îû|…Ðícê ÝšÕ‘Wyk¼šÏd€¸B½ 1E&*ÿÌî.³¤%Èmx•hö¢h‰¯h}ÇMÍ=²Àœû”'u{£úÕ…R.¿©Œ+ÜPH"uæ!úr¦¦ èýTµ;n¯šN  A§Ö÷ÒêPNÂ0dŠç'b ™ ‘¢A
-¾U òwðãe’›Érá«øBÎÃúm} o»ï¿õ$SvWåµa4$ª2“ Æ œKÌ›²ƒňf¢KÂk¨;ðÊfm]"šr6¯¯zM¶ ½¤¥ÇùüQâ£`1i ˆR¾#C{؃rì‘6¼5;ḣ*¨Õó*ÅYAóÙ—Þ³#ëØ#À2e¨Š3œ<«$;•ˆzªøØ‘ÊüP¢Ní-'½ÌËjaž!XÚV=‹~}(Âî
-X%äQtÌ÷7å
-ŸÀ[džlôW‚HÕ{H.¿à‘
-Úû{´“‹L “f-™É¿T F"H«Ç1PþN
-kS©‹‚Ž„˜QùÖ.%~ÌBaa1¥ŠzýxበÐ{ïÔ*!ÅBXIY“Ÿmð]cîð:C.x”Ù4±w‘xEq* ÕÚÄtk~ûÉ
-9 þlîyUœ‚’açòõ;À%4xK8v›F'lG®¨Hš&‹(Œ£Š~¸P˜p‡Ö®¦—6%£[Yá¡ål¡µ¥vöPY€oÚÖÎvþ‰õü‘Û%0¨»ˆ1
-¯hÓô•³hL‡‡=Ô^顽Ç(6b·h.|~ÅÃUh8˱rݼ.%ÿ1`(žÀWHøÑÑ×wÀ/¼«£D>w«ïFsÁ&"û»ä‹+ô“è:#ÎÓ®G܃ ÜAU(LQCSÇU¨sÔv` ½"J-|Xú‹d\©áâUt¹T³ã]Îëo‹žøëoÖÔ·9 >»Áw£{ðD‰:ŠŒ!Ù6ߊ¯\Õ§‰Z _FÎL{¼„m·øBpó’& bf€Æ+ØÉ&‹@˜óÉSSÅÕrK˜äË>CªÈ$à¾{”3²²©š­’¢ÿ˜‹bôü,ñ£2ƒèj-·þðU$¨Kº®·²+\­¥¥xñ@ÃëxGŸÅ«9”`ÿ Ñqê×ßJþUõ*"Sá`X[ÒÛe²GØÌ1ßÞ„Ø ÉæÔѾgoú—þ‚-Å\˜Éw˜,Ï”é»^'õ(ñ£ž¿|牛Ëm^ð»<êbŒ nÎë‰÷.0¡Ušx&µ% ꟳz,e•§qWýXõß>N&bç¾]Ä“^E·,ð<íÆ?ÝH”‘•ëü"JâÁy¿EÆß·"ŒIu²ËeÈüQ‚±)²p0c÷’Š55oÇvX‰´k®!aöŠ.&&¿rª!¤J‰ c.Ì|ã$2`• Hàê’âϲ=<’,zBòqSÝJý€V' Þ.%:È¢ÌYbÀ÷ïll÷B)g„î’Flì"[§Y,…
-á7^WE¸‰i–÷]$ÝÑÄXdêŠ&¦Ãš7F³î~9»2ÍMR¯1ÇMLßO¿ˆ2E ›5XxÚtSnÚ¬ 
-¶NÜÈ÷LÁ¬R•1=½xèP6U+±Õ¡L+J¸J•þk1¬ƒz<Þº
-Zn^$íêÒ¦è[Š,!¨XgO •$Jp½}KI­M;€¯»”Ä–â:-¤´|øNÒ&k F;G±m
- Ý<‚6PÿÛÚwÏ·\X)“³ûÆ+oJŠ¸%¾Ãïih&,'–x˜þ(A~16h,Ý°–#‰FvÞKèØ4ز
-ãåUö„rã\!Å"1/d%øÝ8[Ôù'–óGbÿŸëià[4>øH‰qår'Ž^¦íK÷Ìà.‘þ.E,#ȳyœ¿Ò¾­äØ]"Þ\`úøÚ†L€w_¿N_MGZ–Ð{‹Ú˜ÂÏü3 Kw±ðÇ;UÓo¥ƒé%Ks˜ÿ·eÉšæ3i’ÁðUD‹HH¸v Ô4ª;Ó@¾Šå>ZúGÑ/ohåYP¾ÑÓ³H%ìHvÑÉšÌ*c± Lc°&·4š”Æ\¼/»¹@6MMÀ~twÅÐ9œÒeî·µqe¿15Û…vc$q/EIÈFõ*Ê´ýÜ@ìG½‹´Kä0lK£@fˆågZ¤;’Íhþ*
-À4­Nó³È, 8Š77Mž•"—•À5¸202™­³—+
-ðzÉæ)/—¹nŠ® {è4ô¥¤±3ô.<íìšs)ÊpU©` ¸Í~’HÞ`Å,ïVsp±e÷è¾XV¯_YªÑ{ÌöÀçC¾/l§yàáfºõûw*Ge¶…Ö”"¾(šÊUf/ßäÂ>ñµx7“ç–¥nI©ŸB) l2Dñr 2°ãöï`£“œ4‘)Q`¬‰4«¿)Ñ°GÔ8驆•Ç êϾ±þeØvH£€0‚Ò뻌àWÍ)œ
-¤íJüfLŠ‡­Ä"EläEx›*ÐÝ€:pEÄ¡¹y†r1FYüÙMÚ0$BÝ¥äÎOOEßßõÖ•:È/c‹é­¨&¼HY槄¦/ÙÆÕ"ÂÈ$2SdÔÓ Ô,zçƸ£ðøI«#_Ë;›ŒŸD8㈗º¹,lËÖ 8?I&êžÄPç±Ù¿ó7„ŠÐë,긔ìQX« KYß|‡‹±×ä²r¾CÂM0kåͺlÚòË<é®sv8¾–h` ×Ýa†t:à©=}·|šCœHJ?–ÊxSâyBÑ¥}è`¦ê²²K?³Ö¯E_oŠ˜IF)ä˜|—õjì:Ï+.œÉš…GáØ7„Å–Åt‹”´HšSÙË"J‚ 0=„ÅDw*§þ
-ÞÃÜÔ}ešÅ“=¶Ð6MCòPƸϥèW‰ýú–M%tr'xHhwS˜ '" a&ôÉÕú¥†™"EðS¦™ËÙ²lÙl4£û‹¢`|¿ŸöÛšgúu¯Á+‚¢ÐUçbjU Ú6†™â&<y æñƼõ9ä*AŽ–ËW‘"@ANÀ‘Î3yà¡×îTHࣖ|ì)y´X]&ï®Þ渔ì“X¯.ÓßR»©Ä´äÉÂè£ÏÔ†9>.SxŠßn“º­G!¬`V| ÃÈ1ð$Cåg5kÀdªõê‰èM¦¡BS—Šýn~›^òSöòú™Ì+å€m0þqcö¯€(•ê%˜Dí¡9a­†j ÐåGeZ\/æsÖc*%øØp=Ü+”Gqš°•q¯†£YóMÉKJz)ºm:‡sÝÂSqƒù/Š^Àw;øà†¬çg–‚OäFIrf'VTÓ‡ñüüPÔr-zˆK*#sCDw®XW±&U´› ¨Ä|8­󒔸)šÁ55XŠè#Ŷ¬Nv¥æj‰ëÚß©`¯6ádç¿É™Mº8÷ߧFµ„iΰ¨\RQJålP&ê
-k°H8#Öa*ŸZ³ú¦¤á‘`yšG½=ʶ^Eý¬t«Ôãbå¸|^Zó~ßd–2,&}–»âm3(n‚Z¸f=ö©*/.ÅFóï S®¾:ÖÓ]À? Yß8#­_ ¼s\–ÀÀO9=q¡sF€
-a{hÎJ<uÓ% ÁÓ“À#Í~sÝ·
-¬14 ËÐ31˜ ‰&ðQº8Ê¥èëM^.3†_+âx<¬ðï%%…ξoÀ
-0
-3Ä&J˪í“ÄH¬c /áÞ Ÿ‚‘eó†î“ª¾83
-¤ó/kUß8<-„|›r`>Ùèé;l,{‡ÖŒã;ü)33å%®$²¬c[3û¯aêû:ú²´Ï)ë¿ÇDC7Ë7¥¹N±ÓY„x_ ×\lÑ0s‚äʈ5–Ã`õRôµ‹
-Qbɪƨh…<Q[}ã›eui`=æMÀ ðz`·A‡_Â.oxÒâ’ŽpMûÙãÎ>C9ýì8kÉ+µºIK•$`8µÈ;ˆ¤Æ­×}š{m°:òc´òý+?ŒëÌ
-SQÌbÖ+¿Œ°Ô]m¿G/¡›‹Šê€jœd3Zy‹òq·˜½È<Ó`û¦äÁª~ÃÑæ9°´PŒ”Èu!þÿ¼V
-],] “Ú]XA%]Êæ+’ƒø¤ ™ËµDÁ(uoÈ(e3Ý­¨ÔN¤Ísã¥æe¹±åeÏPI4Ø
-H‰”—Mr9„Oà;èó‚
-{¸™ëy•ÚKï^ç7¢×lÁa}B¨cÕ0é!}A|¢¹Ò|ïä­ KЪºÏëÒ& Xç:1J‹NyC6¤%ï«r:é'úeá`á
-Ü­{háC=@þúößoU`Rã
-ô˜fìçÏ0P+íý9Aƒ+ µÎ¦—Dw^ ý`»òR(“•§í8ÀP©PMºUN3ž—IZšæŒ×ÈÏD±´k+Í!/iA’l&$Õ5Án½DMªÇêÄD…è-iHÖœ=yëÙO§"ñUPn×›Z¤ªX›]=jc9‚ŽˆY!ä-ë*¶Ä4^ŠÔÒ
-c­ €p4qt«‚f ajÎBÝ^ißI±šõᆈf”À?iÅH]wÖ‚ÂR §¶KK?@ÖV´‰bÀªøµÕ}2P6±!L,c-*bÒ !ÒJCü É?&9<òËèòß¾:Ž"ˆšC…¹R2µ
-uغmZ˜“´«œŠÝií¨œD°ˆ$Ætè9 ÆZ ZÜò¢_•Æ)
-cƒîgºÞ¿2§ßç8ûkªŸCµ:¼t$H7¤ Õæ8?AÌ؃X‚ ¬SA=†…yg—?
-ºÂ›¼.!Æ|A”¦ô84éiàø̺9®Ã?òŸŒí™hÞ@ „ÇZŸ¤‰BQ¯H!x£ð9"4!Ì,Â;A¯çÛÈê%ÂÂ{­åÊõ“uní>æF›Ó­îì{çÁàG…ÿШ_˜•œª²§Š½iFŽüŠ¾·å~Añ"<ÁÌ–¯UŸ§‚J…™éh\ܘ”*zLHë<f‘7^q»Ì6¨Ìå›×ÁÉÜ^n^ÞNRÎt—qÊV/°³L‰õ”èÏm¿‡þdfŒ#ãÀe×ïÂ[‘ È°õë4éÏPŠOQuh*ŸÈÅ0Ò!ÅÂëR žE²0ò¦üŠ‘É&n£)oų“܋̤ îÇCK~ƒaTeAØ9ãªÉ"áxñRâ®åãsÎñ ô¡õï'¢A‡‰´ðµT›ìVtG±)DØûÒžˆQ–¨l£ÊõSÀû®20ïp
-Œ€£Øážwg¤¤dÇmv·¾’ÑŽ{aT×8ÿ+}€SŒsì¿æωÏ÷,ÆãŒyˈTG ¹QËqS¤)»hôX‡°Pwr^û,š—&+S‰ qDƒ 2ô=@ðÁpN„ Aç}‚ §ÊåÊ¡L¿¯™›qˆðÕˆMµÌOC!÷éêwȪñ­„ÏumÈÓ0ÿ„ÀÑ#3˳™Š5ŸQÐNx®­n´ÈXLÜ£Î$A]ëÜÈ´ Ìíq„'£Ck×NÿŸÈ¿‚q!¸äcBÉ’úC0>€2µ1Vü>_l !MÍΤvczÄMCšÈ”AV·>¶¥"‡$\ê[Ã÷ÑÉY{n°³èô œ0>+Pgd$Þ`Ž§D $é‹
-ÃÞb‘>EÒ0W£ZÇeÚ|uB9òlñë0–±Ž‹—#éð`2¢1Œþ éùÄ’
-d†yª²Dà U[ïů€îV÷}néŠôj—OA8lO­É¸~ˆµk[ÀjÃÈèä)Öf‰«Ô‹8¡GÓ|tãä™45CkËV·c°Mjð’©Pˆtyݽàú GXŒ[W&·]‰tª.5D[çN0Õã %zaÒJ”kŠËƒï JkY=$GO´t&OCþî{«ß ×?ÞC$‡Hlç½t G˜sUì½ùœCŠÏ¢A¡±øz
-”¡þ •«þ:éÅàj!¡úHÌ^•Ÿ
-¸É'sO‹ ÕR>nÝâ¶U_ÛÍ
-n ;½·Ž¡–®à.ÛšwºÓ˜ÂÊñëÐZ‹å‚Ⱥ$9ƒ’Ñ÷£bm4ÄG0O8üU˜m&Ñéé…q ˜Ú¼zÅpÁk-ïùÅ ŒÈ÷úFÆvØ)B*h‚œå—(„“si'È@b›ƒ?½/ 7:µQ1Ä&
-ª"1Ý8è=ã úâªÈ äÙU¾ÅA•èq"ÌŸ@˜UÄ“òIËõ°_aP— s‘”œ§’>ù66º 7/jX‘ioûaYµ¶-i:䯒ª¨&w]rsàSt‡AÛ¬ð.8<AÏ ƒväÀ“´Ð(/Ä9W¿Ã ó„Þ:oMxFA§•wt ñŒ‚úQÐè{üˆOTiwqQ槹QÐ+zDA•ðn¨XX&üi TÂû´ÔP£U„DqÈ"þŽN´ÇvÍUQ•ðÞVüŸŠ+´~ãÐå"¢»Î°¬ÑMÊt² ç+ zEWÌcˆ¬DF
-V¿Ys‡<Û âÙ2œ÷Š2³þkæÝ$h×Oðz„'ñN´GL{kkËï=¨ÕiÆmÄ€ïd(ÆË‹;l™“ a‚–©GI^4 rµÁÎNtàþL‚þØ<’à7fëŸ/ÙÉ/bMªÐ]qõeç*ºe‡’ž øÃ’}ÙÉLjŠ%3¡Ç]ª“åò±Ïò¦;Y9Gݱ®\”t íÒÒ/pÉN˜<›\=pü°NãÊ° \V½Ì¡’® ÓUYà²sy²Ãf±(Áee^Wv82;s ,S=!ð].®«{²ó|Á{™« ·î<{éÉΉ[vnô]²ãô);ñ/ÙÁÖáU¡9ÍO²s]²“0ÿ|%W^=EWva"ïŘŒ^?ÈNæ[V@ ±'WvxëVpò<c©Ù•‹ xVv²}ù$;åE3+ˆ¤Ã—ò›Ž‚] ýKßd熳#;w‘#)õUȬ®™*ß-ò4¥¼p†ä>¬yJýcd¤V*ýƒðð
-ËÄxVWx.ÀßÂã Î%<œ®_ÂÃ]kgþ‹Çø ÷± ÆjØ ’Ý0­Ø2¸§M§H%ôŽa¯|ðc„UÀ-E[£|xœ·©•L±ÿkûÐÓRºMê–’ª2%Ï×2ˆn'bˆ^|# ç
-«”؉'O¨¯.ñRhS§î,ÉåaälušÍô!um¥†2 IHßÍŠy Hƒ¶¯[xfŸß04Žv¯­4#Y¦mžva˜,|KÛàBjC (pÌåþþ€ã_ÚáúŽ8
-wLX´ì,ÅtÆCó‘Îëá'_Ü[aZbBãГsóßi^%!7T:1âeBîÈ#/_?”¨ äêT5@~L¥bmš†Û¢ïóøø $¶¯Þž9cåÔ÷ #š ›$p5Ê
-3ÎoÑ¥Å"Y¢$猿bF6ÜEC¹@Pg`m3æ™»ÇN Z´.¦d¡Àubd2b¼hàqÔ4=CîPÅ}§èwyýù –C%8Âä2ä×t qÆhCUˆ*#ú߇¢7Cc%ÐB—ß,uëˆîFêªøЬ‰;—0ù%' f ªE¬‚™Û:!k.H0`ë`Ô eàyÅM†`0¿¼"<»JDÒÑ&§n“Æ9åãøc.â!'A•- 4u/ƒ¦0)Y>QóGHJ« —ù¶h±UXÂi÷.üI­iî
-Í9[QöFðØd!$më…|xĶLDN ©ñÛy°3ã Wk[øTÁ\%<Ú–,žI^ÂÀ¬­òK{sZä ç‘`ú2¼¬KQRƒ™hó-1†Øª´ü¡Äw7æ‰g««è}¸tdjUdZ÷ˆJ‹е÷ ™£¡![®ï*äfc?1Έ çfAx’+"²54[E“_X ‰í
-rÈ/õ‹½4d:Ànë” é!O¹UOd/5š¦yÌ%£¢4ƒ`4§èç‡"Ø–¨A3mxtR ö^7•&!R^Áú¢
-×èrÙÿ1^&¹•Þ0¾ŠO`h¢†u²ô-²µï¿ÍWåÀïéÅ # ¤›–ô“Åp
-ÓöÆ=ÄVg¾Ödââ½õ" #„Z4N²Òñ~Iq.²$¯Í€šx»ês"5éSB••nË‹d˲$>¢ªsi\ÏiïlÀ8ò²8‡äfIä&ê’q
-˜!²¼ÙS†Œh†\<ô|Q[4± §{ Ô‹pÂ~‚¼y)úÜEr?Ñú]„ý†ñ“Åv)³®°»_£D¨ç {)ÙÀ
-Ô¸HY—6ðÌy–›FÂ+$Á\óq°„\R«›²è?;ǽյE% ×\BÀm˜?+6lød91.²~?¥³ø8¾Å,Î=ú…Av,áøœDˆak³§> ¼²€=—|uŠ>ð|Yuãrf#Yx»›K+ŠIô—ð¢ä‡Iý /›ßþæB,ö7„µSºÑþ—5©KAX«6ä÷"aõ“
-£Ûª…›ÌRfa—€ X°Ñ47ýR¬AÓá“ ¶s)™æRAàkÛìUg/ôs}ù©[l8“á„ŠSº‹”‚_D7ÀÎÊ·C€ Ê>e™ì?ÒÔÿåÉùme˜ŠÝ¨5¾ÅÅg%ÙÖ7‘ñ9õQuRö];ìçˆï
-pªÅM¿ ø㸋Aêcxì-Þ©ÍX5³Mw—"4`B“˜Ž.þTI—­`ÔmžeS®™G4/ac‘
-ôÃëF‘ÌÎ4A6Š©Æc¼Í$¢ ÍÌ3@4&û~±0¯a/—tm,‚h†ZåTÿ´HT&Ô‘]ÒV¿k *«tÌ\Õ(–G\`‡ºMWäcaƒaâä©-OU*=JL,Ó(×i!z£nÞܨP„õIºäÞSÖÖ’Èw«^ù‚ìµ÷”+’ ÃÀ‡’ 6T¶W±I÷éœAþ;“›Ái” ÃÌÓÌS€v°3åYœZ<˜Ð*/ "7ì>[Ôú.âßáÃœ¥ŠË•jMÂW™ÄÙ@BÍîS^ºðmdÂ]Òà¬Á¾srqd u‹Y=1ĬÐÏŸ®z³[ ßùðâª@LÑø‡kë «ñQUÛÈ– º¾‚Í\´¹÷f—’=MÈkx´b„×s #$«M>Ê+°â¹·¾‰
-—ƪyåÐ
-Ò¶ÕMnuÁ§Qj»m‹ƒP‡cÚOf—ÑÆ(á«'4‡ôĬJ$EöyŠíÏUÏEq—‚b˜í«dűWØ‘“XÙÒ%ž
-Oy〞ôÒ]*óÜä: VfÙmÄàs˜FÊóê6€2Ž #˜Œòµh&×ÿ¶«ûéKl‹E'„öî‡m2!¤„M›8$[ãlkågB2î )¢15w%Š{ºä«Ù
-M÷sj1ÝïDìP döhÙ½B3€Ê(qÏÏàNÌä!Ã1ç‡ààs~V=Ñ–‰¡Vû®àUb¥RÓŒC´ó+±µ-ÆÄBà-Ö­ßEü ÚÀXø¬R‚k¡'òÊËtM±xðዘyÉ—’;3=}¼("ßfØ™Ûߊ*ª€? *›N‹,N®ñ"6¡2N¼kÉ^Â!š7«×ÃB$¡¦¢³c¶
->qô½Mž×r¿Zw™ ÜédÓÿ¥¼L’ãÈ• zÝ'(Ã<¬õ—} mÉûoÿó
-/ý䞤:†ô=[ŒcCèÐÔ±xÕÀßånöP°]¸y&#&¶8@òC´;®™¶ô@r5 ™ûX”ëÇÄ è[?D¬5?¯G9qŠ×{½¤!I—Ùi4qßÇý[\?ßQ` š­=DÜŠ.ø‹‹ä9ÚÜ%Ô€põò¹YìãLƒN©9<†_dH ªˆJÔøb€š¨¥áy棭%;Niϸç)B6ëáPQ!¨éGÈäDî<Wq)f¾ rb¤ z’‚0*<ƒeÝ ’ x"ö•ñ)¡ùA²‰$VHäV/Hº­xN€@˜H 4÷ Ó¬OQñœšŒfÈî9 K$i&ÚK’¯Ù¤7¡Žp Å-I’Ý© ü¥¢OI ‡Ë¶Ït‘÷S’tÆýL’'Èkz}ðK9°rÃï‚B}¨¨´L¶gè¼Ó ôùΞ®uÎü¦ ‘ïÛæã„0ýQvïË DAøþÄäVVÔ$_6¦Ge@C‰5É„¥]:”©€ˆñZ»\(ˆ<bX’¾yS’©%qÚ9EB/’Ú>±Â
-ó EÁ4ß}.:YÄ£´ïqeÄV,ÉúØäY &>§OoÐ JÄ­Ón|Z挔¶Ÿ^tK‰a\ÓÁ傦‘Ê­*Ó?JcN7'Í<ã˜T´MºððI}"tª±•‰»À 4kRiC %xF¯ïGÏiv×Ì}‚A’WÎÔ¶­(ÁÁ#51þ°c’ £âGsC¯Áá3Õ°\ŽÌY3=2#%ÏüY|z‚†< ªåÇçÊfÕb'‘Úùò»–¬—ßêgꇙÐÚ‡Ó…S¶îÍôÄ‘ÀÀÄFw‚'6WüzSEÞ÷]ª’$>ÂXó9KEúb‰»ÏÆ?2È}‰u#$vüG-®FÛrøîsëîÂ÷û—³¿ž:ê]°9UÌí¢å D4ƒ+Ú³hlѬßþVªü¸IkêôHÉSGÕ˜õ€¸ÿö2³jÑCfÅZ¸BeÍeªŸã×Í{ŠCY4|„—Ç$rÅcxúu™‘äaÓç$L WÄö' ­ 5J'ÁyW«ße9±m“
-Sa¢¸ PæÀ;Ð+e½¼K‚ZÊÙ2‰‡O±´xÛU9BdXã² ;ˆôƒ²Ô*ò­‡àý š¿%­µb«jgßÛßPBâ‰'|¨aÙÏT¿GG‹ô!Av@ˆ¶T‘Ím‰4í)ÊêMÚU=NÊ Šm.T¹Ú;})>£T [œ&§7´ ’e˜Š´ûŠ~LSi¼žý*)Sô ‡ÐQß VÅ×JD`!÷lÉŠô':pÝ=&’câ”ï}ñªùÀ&V¸²>î1 %£Eÿ+Ûtõ @cXºƺm¥1/¢L—fý„8üÈRÁ­dŸwAº g¤:d[‰“‚g½HÕ!/@ïà £2¶P¶à=æ,Ú[mk
-ìS*u,&<01"H¤KÞ—‘”íÚÌÉÝdyr¹zìÁŠ`wøžø-Ø3ÒÛý©”礼äPÕj¬}ôlŠøt`Ø zÚAë&-j »rz}Þæ˜ïUÇìÕ9'ø¨±7äO­úóκh³ÂÞ,¬•æ=i¹ÔÛy_.ŸŠAÞØñÐí^) ÊlRG®.GÌ¿Wœ$toJŒušRØ-MÒô )íýº:J¬Ôr3Ò*ÂKr™«!P,´Áß/ots^ïØ‘MIMŠ&þ9L4•DInK—)dÄB—J_C/Ö…¶ZžWÊägT"À¥%íO!äð}€[Çzÿ­•¢L†!"äкaï§0lk\’jÀ›Ö$’È_üY2èžzÿé  Æ¥—«áÒver&‰÷¼Œ>u§¤£Å,
-6y&}Óí$/àêhûéL{ ôCóô"15Ä !ÏvN`V‡f%›½‚‡é0Ú1ølyƒlV¦äp4šº{ã…É…€P¦<®ÛÈhcí1)kLÙf™å§ý*V‚¡ñZf¨=Oå4<Ñ®Ž¹Êôbç ;ˆ07J}'%æ a—>üåCê[ÕoÐúý©6ôKB|Ÿ_RÞÊ)n‹Éð#(6Å)Ë
-®Š®ß®Ž®dŠ…û)×¹ƒíš— e'U7ùRAòbM¦üZä'×.Ò^Cv¨ÅìV#Rü|]™&S5²F‘µb¯â*ðà¦Ä.ÐRí÷ÐÈŸ Ç’\úˆ;õ…LÞ–Ä>‡$W9¬XËkÐíâÐB„ÈÙCLV×”:Iß¿M/ƒ1œJ}iZ­±´Ôš­ËÑ‹^ÖŽ†}f~‘C/Nþ±Î#ÊM|Hâõц£rYIüwt )BŠ6°çá«°>C–ÛþÔ“h[V†rD1嵊O ùò@š¢Ô'v >ËÕjÆ›a½ÊL-ýÐÑ5ïso€ÈhBšRÃV¬µ)äV8s @`ƒ‘Ô·íÚ#¥ÉƒéŠTq@Å¡.!þLt±[Æ*º"Ô™£¶iise­‘;§õ4¸ÝqAZSî /ÁÄ},$žvJKxo?¶R˜P𬯎Q4ÍYñ¥¼@4a (혡ø;ÉK/û¾)Q/|Tl;=Ö£`94§ìâ ÖòP“%çc€J§z0,~Ä>& Î!üŸ€dVWɇhb§„¥’ãÞgÄ*1,E=Õ¿Ô¼S:ÝÏh]òî·–m("Y¤?$ÛäeÆÅeè˜@Þáoþ+Ôä?€Ž­ð>÷3辩îÀŸüª­ÏJT…äá³°+YÌ.”$k[‚œ÷ùòÁ…zûj¡=Ðñ>ïs?ƒÌ™<¯e$T%g N—ë7þ –TX¸œƒüü,Ñ]ÙMôÂÚ¾ŠIÓⵘ¢: ¦‰$ÄXö§ø(Þ"IP¢ƒúòX†~ÝÆÔEî5×uÙ.&×´ìYŸÂê%J®åTgý¼Æ¬§§ ÁÅàøñ*ýÃé„ü6„8FXÃbœAã6mòfŠŠ_Þ.»&ûLQËzWË¢Íë˜g¨êáIM
-Fö¬âz7ªGd`þ~é~yÏLk»nÌÈ´ÛEØX,¯Š´jûü<®Ê›d–D…“â%œ.' k¡ Ù¬bQàmœÐÅ´{lz¦Þe…Š§ ýýËy³ž Z.ˆÅ™ Þ; cÿ¼Ï½ºq‚»ZwÐâ—HÃ7õhî³dÖF¼ ’Æ/ˆ¿¡4¬!Rôa‘,ʾùœp6Ðg&fC¤¬Èä.Hcˆ¹ â<WgãC¡/=µ@=Ðd›ñRíœÂšdIÔÿ/—äZr†nÅ+¸!‰úŽ«‡½‹šÚûŸö>7úf2¨çG+%
-^‘Jà9|LRs{¸L`Å&G^Úã=
-p³`v ÃmÎL‚Cü®9ºv*>µ?t­ù\»ÞM†0³ ´û ºˆ?Åä÷wï®)ðÓ„Râ—×^Jð˸ Öë0wL—’õ©Ë´c®q.s‡žó¨;„#„Å þY€¸áb ~%Ô?‡wˆüÚŠ{ž›3²¢ÚxJ`—O.nŸº}ÿå>S.¬àZ†b,­ ^–û™ETbÖFØŒŒˆŠ³©@…>h³·¸klx8rHäa³7"ÄQIn,ð8s?Žå#ƒQ‚Äñ-2AëÙ)a°ÆØ>x…„öúç`ø£öO›”\% 1"³Ë³¤ üƒ…Ƶë‰2ÔÆæÉ“é†9Î#d¢þ9rêÄFøe"¶w›Ž3©0ÙÒìáQãÅ߇ ¼,ŽwÌ fuð×¥Y»9>%múQVK–kècEOÝ\#o3XÜKRd<ãÆÎYŽç/EúX¥;°[°ðŠ &Èêã*IÜ” rµ­ C‰ž°¤å., üR]%‘Gƒ?_±ÝAT‘ôkmgž¨Q©dcÏatË¢ÙÝG®ÄH¤úµøˆ
-(ô
-é4{ÐQ ·²IŠ¦»„€€Ob‹¬
-îÚù Ø°b+?ÉìükNÙÞø
-^™(Å5qËÜžHû@ 4û"&1zÌFnbÈö*˜iê(OçÐ㪶Y<»(szEÓeH0ÉÚ<ÝWv)C&ðᜦ¿ÃøTíÞÆ^
-$Þ^ErƒÁè—L¢wNfðñóVÌ“øÌòƒ5s‡ËŸ+ñ ¦X"y‹ÿN#ö§"Oâ½¢‹ÄS½†L šçJ<ùŸ†>Ó\$^‰qNrÚoUýÔx©EŒ6ÜÇ]èNÚdJbvèÏ°À묯H%¼…]b OyRâ‡Ä§ù¦‘¡CéùAâ@ pll
-+®ÄSÂþëÚl£ûO<¨5Î?‹â&ñ·"oæpÜJ€#O-ò$Þ+úx²@”«–4_šñà .ò ÈÞ†XÚ¡ET­ÛÃÌ/,£e&þu%>L¢„F2I+rº“ȘxäéÿZä‰ü¯ê-‘_ÿá<Å &_’–°b)»¢­U[•Ð»ElÇ¡ÄF«
-%èF©Â1WA /SºlZ¡¬UpF ¹*^”URÈB" ™I3¡¨Ñé*Úh«¨üÈMpdž‚mF¨p¢!ìSX‘G®€Š¦­Ä’ˆµÑ¶{…>Ó^€ taû ˆwŠddê)"k}U`£•?y=P% „µˆ÷Y]YÛ>iK1y·Hv¡ä zO-tŠðœ¡Àm'z«„ÐQ;gZæ‘YbÑàÐ9æèF†\áeì—s@€Ì™¼m3–KŽêü<!¬Py= ¢n‹RÖê1á"¡ä’5ËA/¤eäÿœÛ¸ï·¹ÁÆ{Õ}÷æÜ!|k±‡òQýû¾ˆZaR«¼0e¹ó~3ç¼·ˆ,Þ²Í oP“°l<;ŒÎlAÔt
-3DðçÕYl‡‘ǪhÊŽZpìÒvÆÁ ”ÄʶM‚‡(!sð•Çñ_­†;ù«eÈEÃG÷ÏaÎXt ^Íê¹M6d¶ÓØyYÎÊ:á¸#þŽ'†L‚Z‚¡nÑøqÂpv¥*«£l?.¢(?PY×e`:‹‚­Æ*1‹–ØÊfò½ècòß^²30gÜyÞ8G•È¡­Š
-ýe›3ίÐ?œQßêÄ0GÚzÝ×s W ]Û"™ÎOS*6g…*Iv5l•d¦[8žˆé‹å¥d‹²F t,G÷°•¢|\Vì:—ÁÃ
-Ü¢:î*áùaö^CæeÞ/.ƒtv?¬¸»]TµŒ‹Ì>uñe4Ö[ŒvÚÇ
-ç䈮„ôåó®fIQâ?#îOýBΙƒ’½L&
-Ææ%¸­ Ò§žàñqüeSÐÝ`gÉ ì%y~ {>aMµƒ-Ü»ü¬Ïsðz¨Z`Z€Ð…Õæ•ìü¯Œ ‘fMÓ+úзo·¬/ð#9Wži ÔC¤@[½§+ŠÂ_d»±ØÛ~ú¥ƒz5>^öåÌá¾B®ãô6 `§@CÄ)»§ˆ1°™Þ%¹°ðQtb,„b:i§¶ÑÞy¤¤!µ¦í/AƒÖñ6üî>gHâÑ%H²ù…/Š
-¬SC»j8%Ÿ¼SB‚·Ö¥â¶6ÑÁ×¢ïUÄb
-²JM³$æBàsHå±S(K56ÂØ
-‘'ÕÍÍ{rMꔚԺ¹y•œ05“ÓyÆúˆ`ÀMPÝZ‘a4k˜QYZ/GWÄ_|O=ÖCÞà*ÍnLs G¼ÅQì ÕYLñË™Ãmãý²6ÿÑn]ö„5‘綺™.gâÚŒžq¼L»D›u£¬Šð¹ÐëÊš}(êJŽ
-7KðÂ](uÑ:$Åð‡¸‹ûF7…mBš9Eÿu‹@2
-V–Ä÷,JpKVšµ 0 ˆÁ|yžÊ¶yWÜ%ra­ÔUf »¼!sZG‰òƒ «çX¬vÞ8øb.” Ðç:æœ
-­ž#[è€5»BÛzölÛ"¬¬·m#î
-AIIDª&½ÉÏÉ àU;sƒ?1&TO8›Ý@ ùyÇð´©"¡ÚæÙ´Vr7Ò}§„ÉËÞÒZ n‘FˆŠ‰þ·[ã@‘+›‹_Jï…g8uùôÚ×á/k¿½g*OÎ#1 ­í‡_T
-&`äè`ÛŽ'¢Kh#.§¯cÒì˜8tl«GLÅ)
-¢ö\Ü5E1T“ͽ¸ÐG1°Ö3½y¾1ò‡·¦”‰±­,cIÃ÷Ö}M M€,É›øçNðÕ ²OÞš†/Ð¥z>u5×eÖe&GwŸ¼5) ÉLÏZß*gíÕ\Œõ½ÄA¡üi%rAT'K>ùjJXìNOÈÇÈ^µƒæ›P2‚ÈÏÅä-}8wêW¡¼°Ícâ¾Çhî9U6š+£<ËòÝŒ5%Hfnؾ±¦ˆ=Ò»‚Œ«g¬Cû`­€Ç ÏY«„‰ƒbñŽÕ½:k·èjš]Îx«èâ¬ï57g-’“A*뮳YBùÌ“ÍÅwÖ¶yœPÕóÏÎZÔ-XÏÂmNÅŸžX+>ÄËIJ‡ë¬E)]6¹Šž¦wJ•ÇG]ø‹øøΓ³¿M¹Ž ÎÎZèbM@Gòœ5%˜ÍÀ×àÏYßè8k¡¢TˆEãm¾³ÖA,èœ2ÆÙsÖ"ö$7¡¤P]òû–D—³ŽÄHÙ²€w(&KkÀ<Œ‡×Þ‹nÊŽGû¨Ä^ˆ)ÉýE/Δóç‹Ï}_$»8Ù¸QàY­“^V²"›½9Q•ÐŽ©xÜ6ä;¬­„À/ÿÐ¥ ¨>öf6<j
-Ù"¦h¹×‘àðí˜h–¹‡mZá@LÍ°ä3²3U²å”¬/AˆS‘¶¿:¹"š‰Ò¢ƒ2gªà·ÑŒ!2ÿ×ÖÕ~ZQá;&c„Ü36Ÿ™cƒCY¯â?ØbX´úh¥7øª(~Ÿ^RüeÃÄ&—&«ý8II«’)õ<!Ä`[˜NÊV‚6¦Ê} ¨}Kö%µý© AL-O=¸døIC²c2v_€£×l,“ax/Jžúï?N‘‡uŽæ2p˜Y»¿(ºíŸ÷¹7Š.œà®Öµè¸}ÐþѸéÍÁë—Õ0ZVïIrŠT2±
-iS?&h–¨Äjïg¨Ùlì9#e¨(ö窰R•hl×Óu„ ûº¨M âÙçÐb6‰eHa S+œ‘
-f®U;†vÿ% 2i(ú:÷¤Ø¦‘Âa%QÍÓ63Õ‚E„ex#šI½É%‰î
-Ê0C豚†
-d/¯±ïè° y\Ä.¦ˆ•ßA¬$éÔŒ8qï­€
-—øTß÷qŠžƒÉüÛ V¨8 Ø»èìú—Õà.DÂ`¾6—Š2K‰'Û’‹¾ƒç­
-û©
-Å)úéÉ*@YA¶ü\EØÐ&YMeߨBɈ½½*A‘zÈéè„°Áé€-V+]#¢ËáÑž?ñúËÑavü_S@ÛmnÜeÒ€h>­"¾Q³à1-»³únä¿­\E¼2†Q,¶öWKóe3›&˜ìáEÜ54¨}È¥Іar@ÜHV"'‹¿äòçS3ŽõÆì͵÷ùCj —¡Ÿ3:~W%ØZ4¨bg분²{ˆ-Jn‰l>wdÈkZ&Á+‚E›8›ha“¿×Ü°È!³(k„å;§\V4Ʊ^Ž¡!oÁ GÙŸÈl/ÆÓ§L R
-ùcY¨|¯û½xæ¡púò|q¼UÔX8û3 ·@ȶ‹ú µð^Gb·ëØP.*œs¯D·LB«G«'
-(øÑÂ¥ LO7¹ó·0WS<È;=B÷Ud™ÊzÕÐÊ3ÛYýðø-ŠqÅ…*ÌâÔ6WÐzF« ûõãeŽ#ÇDÑôÚ¦1È}1…‘I—'äõ˜º¿ÞÌ°»¢À
-~feÆòeY
-ˆE9œ7–K’§l÷2¦š2°7á°ïìª ·›Œ_aȨ¢<¦Q'ÒC4ñØ =.î9 Ÿ$ÍÒ7»5E°šqÍ ö(¦{^d"ÞâY'N ³_A.?xAño4ßÔ8 ±^j‹³¦?
-‰¥4Ú%èõâÐr ½B‡c >üìï\¨ZGŽ.ÇÇžù”và‰Q;©Ï•»¦«…Ø˱ôyÛl°€YZ«_"êbJHwoÆ€ ˆŸ¢YÛŸúà þ´y ì36âo&üZ˜8‡‰¼bÍ’cÙ%mDüëØPæÚLÙ̦W)ÕÀ ƒ‰çI›æ´àè-%ð+‡nìZ‡QäK¦nœ_Y ªÁïÙÛS ˜(V[qLØ„/ $~(ÄÀlœîžƒ¹cEù L><Òlð†¾+Iœ©G"÷DµÚ@é„BáD¹-íŒÓ¡ñß$Šài:ƒ©ý¼y ž€ì´˜QWÈñ@$R<žIƒÒìcR úÀà CßJ5°8s_yêÑ<"ˆC ‚Š¤½b uÕ˜RT¦%ZîËÑÓÝE¢Ãj,›Û°d¬–ð°6ŸÒÄÔÖM¶j¢ˆ9;}‰©À¾!ÁÛT¼s4Z-‚ð*Çe WH¶Bvk†±& ¬\œ<åSëÆØ#Š]Œ
-Q1ís¸Xª‰¿cîζPâH ˜-¹™õ©×¥ëì¨nÊ^Ÿö)f­¡ ±8 Ç±ê\YʺAYÀžb·Ì9EÌ\å~ZÃàÀ0XZ+òì²
-ü´!¶FFXþIåJph*ÊqÄ<Äà,-œC\‘qÃL„„ $nb³œ Âq&‘Æë YŸÂ¾Àã­£øéâFóˆ#YL%HÓ&:Ö«?\Ìãpîûys0Øû àV‰hT!`7ÒáXâPàSÚ¬îÃ_L ª${¯ßUͤìÆ#’g²!1
-TÚN©¥bF)j‰;oªŽ±Ê€p@žÄ‡„67A;’\yé»v·˜Y* XÚŸ–VkÞ‡^3®TÃÉ‘ÖH¦'ò(Ø£6WYF
-KÖ‡{J¡iüiÊð7Árw\3<$ÄÐͽl¡í™1lz¢”jÓÙk’Ðþ’2~’±UÖ µœœ—“³æ>ÆéLÙ#£”Óª¼`6©Uù:ÔÇ^à1q2fzw: \$Én¨¾ì:TÇ#àœ3b5’:¥‚“¦DÙ?I-!`ûÕ/ÝÎÚÊ¡šµw²SNaÖ—˜»¬°£vî'±¡œÂj¯ÅÖìR>e¸ý%ù{²‰mé Á̺ˆ¤Õv|éú½À†`ÚÑAÅ¢¹­’ÙϤ­µ7‘…à!™ßÝI˜BìDaj=ªI
-(ØÄ@´¢yN|úÙÃ6àe^½ˆy.qÓÅ9É4ªC/æ²tuœ=ijA‚RŽ¸vÌúè3ƒÁ´OÁ½EL0—q÷HÔVç@àÆБǞœF£(=z±µ$ˆõ‘‹ÙŒ¼îÜ5mƒW¥ÃEý$ÛŒ< ]¼Ÿ}\€hn“;è×
-oB’üç~˜ì®”µvS ‘2%±œùÇ&ƒÒ&ºÕ\œ‚¿lÜ®¾vahþMQ´3CÔ&Ÿb?‹#Ÿ7äE¡h³ ¿%”q¼ Òô°8t+E¹~®­`ØáMó…èñÎê(T±±á~.ßœ[}-sW
-a'§mõz ôж> Ä¥£›)Þï+RãØu…vÄ\UAûú<êô»Eæˆ(áItØgw ÚÊÆO˜.¶ðíûOçÈËDe‡Vö»h2ÇNó BÌÚDClû2Pg‡õ'[[Øôò û…±NÞ1mݳTSòƒ
-ÿ*ífiˆ±ËðËüN"PËTh Ó&4ƒÂa¥¶ßNX%t¾P¹ʟij²>{r7NAR/ÎI¡ÇH‘K7µÕ•% –¤$’Šˆ<òû‡û—_LŸ™V»N ¯õƒG!€Ìbø.Hí‚;¿d>¬]ˆ†BŠSmµÅ t§bðQØä¶Kæ #k]´ ‚׬51»íRNÐW˜¢[åòA3¶G‰©_t jâHÔRéWç =ü‡R\˜‰S½#-öÂ$ÊL 1½è>oÈkD†UPrì/v8½ zeæÇ;ô-–ÿñëîý{ûñß-Þÿ¾•†× ú{ÌÑ6 ¼$©ìÚ2š éwÙ&:Ÿ­q@?/@Ùî å(^=.@Aîê…†Ò]>©$Ç·­ø°]0‡«B¶Á¾…`®.-ž…Ÿt£uºËóòï0q ©[ l]­JªSñµ4Kbd‚…é1´B ‘pDB‚W¦yF¬I[hÌw¹8~ðó8ç¸ÊüŸñrIª,†aè
-z¬àU¾Ž3îí¼ýûÈÎí„‚*F r[–%Ù>öŽäš>ìØ5Ši¡j@ð­’¼Á3z…i¡ÉD“v^D)_­£ãl³Ä ̬/u•õg1ùüøEÇå·‹ÈÁ½>nÉž.afý#z bŽ‰­"‡nŽÇé*"ù$Hj>‡a†²Jx?ÖOÉ[a°‡÷>>¬ÅÌÏÑVÀ1ƒÔ@°ê³å ñqP\¤v ¥Ž÷ï—¼˜Âãäww€–{© ݯ~A£Œ\Ò䪮˜BÖƒñêR|ˆŽ7tŽúÕöðA'ìì)Ä«+”Aç;‡[BHzZ‘<gÓvÄ ùn%{X’Ò]Ú‡F¶ãRYïl¼Ã_beî1(ÉdÜŠÓG¹Õ $©ìdQJÞû9•PƒãßЬ&Äej”uç°€ðxÒãWþ¿
-¹uÅØ‘ù Pp†GÁšÒ²™ýö8ÇYrA˜K;%fSö¶ñ× Uœ2ämÂ^U¸J-Ž¿n ê>dî8„çI¾,²¢T-½ý'È;ç¢oiVë šè ÄÓY]áÅv}ÎQÔ3‰S Z(vuõªÈ·&d¹BâÖZo¦0õ+"lmÕ˜yZØžš"‹ò±ç˜aEiðÞGÞ`4Þ.Ór“͈%1¯çÔ8y‘]Îe>l™°9£É­H)Nç<›»×RÕŸ6ùW¹‡~Ô„DV=ÈQÞ‚M®KÂœ >ÅTT(‡^›SÐ3’aMȤ–È+šº’9¸àN*¢ÆæàTœ%®A9 TKؼ£œs\\kP
-A^ŽBã§`Ï>¢oƒªżRùüŽaèD¥uÆ/–
-H‰Œ—Anœ9…Oà;x`
-"ERÒ²‘^z;'0ºWÎrî?%ýF\¥Bìt’våY¢ÈÇÇÇh¯zÞ¢ˆ´Zš¼þÇdÜ|ô6Fáw«¯ï/gPZKXU€œSo¥¹ŒêÃT-·b…¯Ze´1!UJmÝj¸ôäçË¿/åõï—„©µøáuA[ïÏJëœÿk‚ø@GŒ^¼ÙÕâ":št›Wv7Qþh£oHh¡V[Ó Qù8¯c_e½ht¯@gê-À[ot]Õ œpŠî×õÌ@ãÇÊN@*Ö´—¢ò$G_ +׈•sµ÷8ž£7 éZG’üû(fÐû„hm$¶t>ÛÏ\òýˆ}UѪ1¬–ýô¼¨T­š§e°J:ÍLwÁH–GkëÑ÷
-…Ê:V³ˆVÞì^¯GÕÊÿ[q/âÔѳP„#"™5´§&OÿÈetågÂR$$Š[…\LÖÙqÒBè]]F'D-K¾RL7ŠYf/÷“ô=žc7Zcب@eGCü¹)DŸÉuÄ‘ìëU¥;¦F }^e·h'T¢:²³C*Ë@3Hã< -4€AŠ‹~ô²ôñG¥rGÞY/«ž qÊG´/÷Ïr>`Ð$QQo¦Ñº«i¡Ñ*]ö©}(7Ùé¥ ™$wB/Ñÿ2:V8ÐïCèã;“ê¡f>nÕ$%ÍK±ÝçœìA7¢V¿&È9¦Ò/v0Sª›w*‹<áªN ³½ú±ðå&É[1ÈÑŸˆŒ¨u/n̉öäæ!FIxE‚t4„ÎNÈì-f
-Ÿo bÏàˆ¶åŸQEaȪÇî¿J}8—Ìö5fz© #‰[œ…!Ž !² ‘Xj–m=¸=Ö"cæŃørÙwAy]K ™¶¨x}øY‹Ñé7ˆÅ[Þ©(“+õ]ÅG01 àz<sÌp-L·Øå*ÎÄ¢{îaw¢F,¨9>™1jöî*V¹€ŒšŸ0”&Sê(“ê
-™lÌ©P_ ﳚ°.£|ºïûcð*žöµ\¦ø.–À`Ô¬YÿM‡îŸ7ÏŽ¢ƒP8=¦&Ò7år‚™ªí˜àä¡P'Ð]ÁOÑ|eÍéQä;äæŽÃ‡üÞõÁû)×Äor¯Èõ*7¤`¶]¤t9‚Œš~.¿ƒÞVzRÞÂI±dÁ"Hs|ÜÛnªBà2Þ÷óñ€R9„õÖ Þl0–—­ùšeá䆻áeñËYEæÉÄĸá°ÒÚ¦ßç0Y„ Ãf’CÑÅF÷mßœùÍÚ[Ÿëm‚ø~°Ü2Ê–ÈŒa‚FnÖæ9H>S¿½_ÃŽçå^Âé E¤bˆÚ^x  ƒ¡fåRó19"w Ô ·' &‹å
-INlæþ;H¯ôk/¨4Ï@Ì_3…QØV‡•k”ý>§ÑéÜ̻蕛í^°É}¦ÇØ5éI–G½,Œu!âl1Ï¡ué²ô˜£‹õÇ¢'¯ËæiÖ\Ôº~ªPT¬íÈ{'?jÔéÖ¥ú´Š¦-ûo:÷”!¬¾çè>ÿ=mKfþºÇrkˆÂ²ÔCI"®Wr÷#ñ&ÓAfSŽîfß[ßÆ–ê)Ø–cô ‘$
-ñò†:Éñê©:%·µÏ>;î˜Hȹy%]w5¨(ÏäJX¿ž^ò
-ÿ`È'ǼàjX»ˆüx„φ&`‹ÙWåÈqZ&ê„TÍ`¿OwD®®‘¿Ïƨ2p’ºihi›èœ;Î"Ksu¼ÜæÈâWÒ^¦¬
-úsò`åm}Az-JA«l^0ѲܯÝ1õ›oÈðج`#™(T\¶UE%¯Á™.áA=zŽ=Kϸ&.
-^ç ¥-êx=pnžhpõO >Rc“ÍÑ÷U òÛö ¥O±‚h²ç­dI› .¿ŽfÁ€ÏüêHÞŒJÓ¿ôJ¦Ê塪ˆ«Lˆ1:²jxÛÓVÈ£‚ñ8³Œ¥£0õB÷|£Åé°›kàS±­Èy9OÛ’WÁ'D‰Ò=™¶¨
-3=ç"zÆ-È}J3Æ˨ô:™Ù§9/¢Œƒ3l~B)ÚYPýÙWá?Ë@‰ìíE_HÿiLÜýÉŒD§{£§n‡í§.BhœyœËPN~±‰röD ¼SV Bv1SUrú”ŽDÇPîì‹èxo29{/úO< È[øœ¦ÉO9ö
-ÄO‡>æ¯H’—à-5‘.KĹê¿Jûß/î‘Ðh‰d®óê—M"Ë…LÊ?¤š7df[AÍÏ2Æê²’ND<#®³¦‡
-WβÉø2|ž£âø šÔ½%« º¤È_ÌðW`ÌñŒùݹI
-AðtÙjoçªg®Ñ³ïã\Å¡znw Å/¡iËÚW@“@»S¹Ø8{L ¾
-Ó©²Q¢îz‚e0 lÙçHšH]3l¿ÿÙÆ^Ô3|½MdÛì<ŠµÞ"±“ÙýgÇ°bMÞšîÊ„bIJàüµ{LNß:Ég=Ü!
-Š.k§ÝY^VUªI '
-ôÂþ‰ó3)Ò°Ó>¤“"0 Rˆ®Â*p°»²¼ Ý&¬Ñ¿3¥lÈ<Æ߇´.óH¿Š&§ œ»Ï|h}¸›Ÿãx#}÷546BË 7ß“!Z)¨ÃPÌy®z!]ûZ¨äV±ætç×øa ˆ%œåãgü
-HØAï:(maŒŠ62™hr·z "¾)Ó[Ðßa`.Ф竒óû%hh\«ž­-•¤“ÞŸ@ÎYLÌTHx`Ô-Û Ú>Å¢ýì@ÆîIÍ…ˆ·ñx>‰Ï.…³~×yÆ?]¤hkô»,ñÊÇ ž@ñ>ÍOŸÖ(dBž,ãµ’<Î1Áv2úù¾F˜–)UÚµÂ/ük»›Ÿ†Ð¶6ïÈTÖ<Ôbö×j3Fïc†[QàE.²Ýìày8ÆdÝròŒB´JHµÑÏîE7ïÔ•)J#úý4¤cÒÆÜw+ƒ%Â46T»O†~hÄÈýˆÎÄMwŸš« Ôñ&MÜs%,§KØ.×I!¸ÌêcÚ9¶æbïI[šQvˆò¢]ÒØYf=0äM™ìt;˦M´h:›ÝΞ/×zõm©·¸iëc_óÖ¡FŒïÔÍÑÚçM:Á¸
-™E»¡kö‚1»P×w=¸
-6h'õ¤BPŠ{ïg£
-¸ƒ¤tëúÇi/bFæmÒ&¬“ç/3±9­ªmQ¥š¯s¤Ù©’Š€nÑãLÕBœ«›õÚ«Ä3 ª]ŒÄìÍÝ9 ù#2‹É’æºïYÀM]€Ó¢­‚´V<„3&æ r©œ2eÞÂMí<'úOýý?<X|ʼþH:¤¦9í¢b
-¡q@"9ĬO>•juXUû,íyPä±¼Ÿm¨
-â¥ò=štS.§N¿_E¯1oE×÷P)R
-ð¬ L&̉^¯yǼâÍ…ò–ûbþ·.ùØÞâÜ6ÑHªjçªg£¯`жÏY`˜VÇyÕ"MõL¦«xÈÒZ2µöƒÒ™ªÌiÙÍŠOë3å¬PGPø>*ŒÈm±Åb—ب¢9G—Ø¿øÚ¨ì¦0õlÑq"š† <âÍg¤Æ°Gbq:éÚ‚–œ8ïaàZŠI¶dL¢UiFÚ1dHŽOà L¦Ö©<ÏU€3®­5Ùbµ›Btôø @H#^ E ­|i}‰J
-Y&|ÐmeÝ_8LMŽ w(q<FÙù$MèÜâ=èKȱþq°¥åŠÀŸÙJ›°‚>À6I†h)ÖŒ:b°¥u±áçRëÆ`›ä´22]î
-ñ¶*q7éÝÒÕØN’Á±
-‘.ÿX2`È×uùªSç¡W–±LDä|¶µš;QÀŒ¬»½ôóÅÕ².×æSS[–Áo—ÑÒººZº‡úÀ,’˃«•A„3öÉÎÍ¿¸Ú›ÍüâjkWåjóÏðŠã89´ ’.äÿ—U(Ç`‘ýÒ¯1°(`íÝn05[0/cë$G;ñªøÄúî¹&B#z E9:j©YWIªt4/[t›xÙ<ľ¼dŠ´é+*|‹½ÂV=Š9ž¥§l ð„~)úõPÄùÓÀ'iê}QµÜðô¾¥‰âzè·¤FžŽ‹câ‘âxBm•ð0~õ’Ìדh¡ô›WüÓ·âîÜS¶-›ãè
-ºõ›¦ éàCÖ$A¢c\¨lÃ| kšèЕ6Õ‘%+€€µy¸WAÁ.y’‰Vì°3ü°è4«äðÀo°"}µY.Ä ¼!,†ë
-/Àå=„ìÄ£!í7[~iü«½Ɔ’âŸêÕÞSËñ¼s¨“åe&ŠÌžJ†’ÏD…ú‰>Yàcwo¥°V$í6ÇÅ
-«ÏÓeåÑé3\ÔZ[‚„·|%=ºÉ4äðNÝE
-Í>Ób05Ïð}Ö/J&– #ÌG³ßuÐ8”´òö#Ý×Q†[r­pʼn”bàǶ©r7¹Ø•`ƒà+ݶ0ªb‚,é°u4aóÚ´ ŒÎañeŠìøˆÁPÑyFîŠAe†¯¡å¼}è€ìJ•uy¿…ºMñŒ/”
-‹Þ^$GßŘxÎ}/ª1Gm¦~%Áßq©X—ÓÑ>l´ taZÌV’Ÿ‡¾È•N¹“ÿq„ÞÂ
-ˆðAÙf ŒW©4 VR{0"3÷S%Þ.M;p½Î:Áà/ܸâ3²G òÐö°r$3dÀ!ÖYUöôHÉ|hXNMqè
-u_¦`*¤Ê5£‹X˜Ø‰Ó؇ –RxËL2-˜t~ËÖKÑ­çL_Fš2–óÜ·Š´Ì€Ô×ÌY¯EÜ bÝd}ÌçXù­(ëúÌ …Æ*Àít{ëŠáE¦ ß[*8òxWêÕ(ñUe
-Å8‹se#¯äî/øRsyœ©(;+˜ÈšÀï}eæ÷ïÐ÷¯“½f£ibÊÚB¼#ög5è©!Då*¶«‡>©d’û:–³Š& ôáYð#*YºFFs ­„…yÈ,¨{¶˜¸ ùÔ'Ðbj‡j“òPÕV˜ õ”Iå÷pΈ©¾§ÐÒ½„½¡KP\rÍ…à[™Gõ¥ÈB>jûµe*“*o=ìµæÝkºÜ6ËŒ¯Ï5ªÀ¡ðþ•nìqÆÑq<T—5ð¦û™™W‹£$YÁ´…÷™ímIk ])#¬„t“KÁáÀS%®Aš™¢„q]WóVÝJPMÆ‹Kô=×"¢%ä£84÷VÞOÌN_Ö1D’ºÌâØ[¸ŠÈ´Ò/QéO?z;$§ŒÝ`qKn.Á*³äÏ1Óc<
-–"ÒÃêÏÇ£óÑ6”8üµ×¡%PTöÐb8:\ŒìÁ3è%c`‹>ؘ€V«k5”³ÉâkÑҫÚ¼í_‹¤,¸ä•«ï…çâÌU¡ œV™¨È$ïÒFV>H3qæå,¬}¸ëRô¿òúþ –AýãŸ?° œÑð%?÷çW@%ÙM?ÿýj'â’0^\Íï|‘pÄmš ¤÷LTL3»Ö½ýº RÉÃnšŠ.Û}-zÿΙ~¹#ùÛ¿~üñî‰Åô›M“ñ_eºMw|s@rSÚŃˆüH¡NZ߃ÁBü‹\U F×è~vM ”Só
-ÚŒ€¶44þ—{ãõ¹9¤ 0@½÷C‚•;s}»h¨¢#x†ì^$KŽ5ZÞsôÝÃY&µÄm›H{z Þ¹DÆ –¸:Ä©¹ûó"¬qeÌJô
-ˆ8¶å…ö:PŸU¥‚xd=ÁüĦºK“ ×ÓMY™%^Vl “hm"V?Eè’üµö
-BçÛÅÃ[
-ìñšD-¸LövoEFƒ·
-…åÀœ‡ù/ãu’£ÇDø¾ƒN`$™3×î¥oÑ@¯Ü÷ßö÷8VUþ {!CU!’ñâ Jj·ä½„- àLÉ>*ÿ£ Ž¾ë{Ef€<Wlûã·—š—Å,¼µíG<HûÇE{„
-Ò,êÖþå¶R×i,ÌKüg—šP>— d&Æð
- çÑ<r­¸ø¨]'%Ý{Iý˧¢Éã¥$WÝÈXOÝ9†Ü½œc´p[ à\^ÀsÏlfgQ%ÄN*z¢M ÚE’ñ¯"{0‚XÄÿ÷òé)mî't]†Ä|k`!ÒIçËÆUGH!–ì9'þˆ¿¡¥ýœ=&nQà‰
- xÁ^Qcü²ÿ-ScÛ’ŸæM®M+0éÐMäp“4înE•”«¶xû‰tØ64%›.\1ƒ!©±/À
-^P»o+y><“Që܇4ùÁ©W’Ö_£ÉŽ–_±ÝZ+g²/aÀm|9?ؼ Xë1Kb®w ï~ !I÷žW1dnßL¬:-{
-Ñ•æ¿Îê{ôÈÌq"pÖ Æ™–swÔÐÕ;ò„þÝÊJ¦íË´;0’ia¢8_ÒÔ„ú™¤p¢È2ŸsûÝ®¸™¾1TòeÙvͧ”t¯ç«J})Wù}MÚ¥&Ïë9‘—‹A®¶^lÚwÅatÖB~l(Í›Mþ+:vÿ$ôŒœ
-[Gå>ÕØIvÏð&œÜ5Á’ók³¦Ât€óŒ4ú=äÀùØðÀŒAP7H»æ!Én¥ØxíÑ<È·CðÖ&†iJhÆ· o¨èÔ:î ['Ù'¹Æ´¦ô¢oÓe1ÎùáqùÄì
-ÂÆ,ï;Vá*S`¼øŽ¼Ó…r¯aÖ žä´ví/a²—
-Q êK
-ýRñ—Pb½çM”RåÕ^ܪÜ>3…ï·ž
->S„ðÆ]ôj~”.DïÀpõñÓŽVf¬ý*"fGÌŒÿ&(¾†Š“+B¨(#ža^õ5V(Š±»ã®çWEÅE«ÓÙs¼×1ܨax
-S2D?ÕÉÚ S~ÖUT‰çlùãžE~vúxÆ9w ¼oAÿ*9½f¯(A‡úÕ½='yNÛ† wÀ5‹k™^Žü gž¼O£+< +UË -©5ŽéØ—«8KA¬sâ!„^³¼ î6÷9¯:ÑìƒÇ‘ä20çA´½žösZ \ãëôv1SŽ*eŒÍöYwoË'ÒlF3oÂ
-qÒgôtZ®øCÆçÚ2òPvĬFŸë|1ÜìañøýWÊf47ã=Küý=©¿±— S6ßc¾Ìiü¿ ÷’PÀTžùÝ6P¦¸Úóµ$Ñ£ÉvÚ€qÿ~+?þåÛcÈó%*.ÇiÑ8™ê§÷ÿ*"ÌfÅòѲåñ:x(/_ºLòþß1”›^ŠR¢¹m«W|6BÎ^€ŽóõAѬÈ|KÉD‡F>N«‹.2_³HÛÏýŽ*ý˜˜ 3=[¤ñ¾s¿švŽ’šÙ•F®d_Òʼ
-_ô °FFƬ²ÛϧŸ#}>-Ä3Í…'Š@x³[ûï†DT8‡e@‡Ø`¤:˜g1t0WÒö{å/½sQ/€¸§N4‹y(\¸ªÉWJ,™OhÑøk]õ­ÈO·xf˜}Æ9'öàÌ|Ã,9bR™¨¦Óãíyt·N9j
-Mê]ÞG šb]xÆi ¢D@ÁÎòR2®B;;Žu¿œs†q…™‰?Qµû²´gûñô–y‡1õ WŇY/.fªÖÚˆ„ó³ –†™Õ@z87ß²†`Q,c¼Ã¼Èó}óÉŒ0’«<ÉôÆ(ûb™ã~L×ÞÇmŒ{½:K0¡çš:ƒU‚‹x!Ýß(å•'ìyD-²ò¡ÂßcÅÑÖEÿŸmþDL['&Ð!=þkbZÓl·ç8²wbÚïúnŸ2ìΗ¢”ÈAØÎUBcûüb,– N˜„Î{–lѱÓÄŽ{n´˜&N•Q„•ü#ÃÜ÷sö¼•®?G™OÞØ1Ž£Èfw/á5¬CÉnM(‡"1§y<kAÁ½tásáÔ±}`åãú9Å­f꫶9V¹ƒ²náªQ’¶XrT8án¾º08f\å7Úήµ à†xèdˆ²vöâRç1¼â‘Ðâχ’È¥3¸ø6äú­Èg™¥gê1<(ãcaŒñ÷ê°Ü,¹ ŽÄìyÞ«ˆ¦9Ùßf¹Ú)—Òà¥äŠ>s¹
-\lÀnœiv‘ªŒœýOs.*þ_ÊöÄ– ‚Ds›ÛêxŸ€øFÃÑBhè^$[ØÈ“Ë>ô‰"VžÓÊËI œª¼C{«Èkœƒú*ò(ÜÌ0SÊÔ—³|·¿ê25àU–j:îÖSQ;Zœ’h-B&Õà—!
-Pu}Fu¢`Ð5øŽ•ï§Àþ¼QØòp­ëÓ¤òøžZ¤HQëùÔí€ɬ‡9ÿ²>’ ÀŠ÷H'uÙ’rB`P&‘?—ý0§Ÿ¢‚ !±öÀ5¾-ཬŒ…¨g ˜6ú’DÔWØT)ŒÛ`åhDœ« ÊK øèñl\DgÇû÷›
-bÆ+ìT÷s„dÉ¿„' CQN(Ù‹)\ËLØ0{ùÜ•ŸWîà:&gB¿sì“Êì é(1ÜÄFóÌå’X¡O@Çxè&øXésÇ71ˆd sülviLwÕ'À”‡€5 .Ãhf')2 ¥ìc‡hQ«hëÒöuÜ.¿CÆ9³bMzKØ’­qZ‚ÇâOÌÄéìx ì»
-7UXŽ.‹ÒO3߆‚ ãràɼ™U‹!ÑîÕ#„S²j—͵ÓÉ©Ììr3ør—Bç0³œQ€:THgèHt;éçÙ©è6ø·aÌ5Ir=RA/2„`ÀÑí¸ iœ}’0k<yû¸Œú=ä â;w¼¡Hô²Æ§-|ñ >wÍ|O†ê(Ì´Äf®ý)déoVûj<}1´«l|Õa@÷ å
-ÃÓ{rH§šäêl¡°y)%xfõdìæDÎl‹!TÄ°õåORa´”‹gB$Ð b¹Ûy:›\¦¤¹s´Zj í*#f83!à^¾âGáâh<¢Ùöl”°E
-”šß8aû˜6¼_~™ÑhgWAÅ‘5œÚ%$Öáë¬x!"( ¨:2¸!Ô…&T„ºcΤƒ[Ä–—éú5Ä3 Ûhò´öp›È¢¢z×<ÍdŠà_J‘–$;PyI³~qTžJ]Ëò cÅòj¢ƒ »~M‚Q'¡îCña—šCb¶ÓŒ•‘5Xi¥pxã÷
-%‹_ (˜pZFI°ãAòôÆæK¨äªÓ®"ž—Åt 4§Hr8¥½ ÍK• Êøf›á®32(…„žª ™Øb–«\öj IJcï¯ËB@±Ì àžÁx›OG—ë¨0Jæ·Ÿ»”<x ùãÛßß(RlIm¢wÚEÏÿ³c’ú‡2kiÙ%èÏk¥ÇRd” ²ßƒP#‚ãeë1H»^åþÌõò¦ ‡´/Ðú6`釔Õ€C2¿ô™.çÄVýý Ï\ÒýVЀ3Âq²õŒèχ ˜
-L¢©øÝï!K»AD¯ü£Â/°{óa#HSLã@ËØVðF“׊»5B:“×ö¼å‹ÒØ! Ž”–ÙMgx*л€8>ú‘x”©ÜÉ>§‹-
-ˆ@º©‘ŒÄ*l1Ó‡&
-
-P?W-’èq ~)Ìèƒa¸4Ãàa}#Œ(kYázÓ{Ì[|@ËORäs§.瀓Y7\äM<)ï„%‚WÇ‹qàP(Î>©` ¿K§M`‡\)³ëo‚EäÒ§Ý ›¥Z%Åw 5 l–fÄmÐuQ
-.¾×îBâõ¢Toy!+ÉÊÔŽYú²%Y#¡T2SŒœî±¼ò£ º Pdb *DÊä}ÅÜId´*C¹CÔâY@ì”nT…‚c‚yB+Þ¬‚y°sËnÛ«µŽ *@‹`ã–¶ãû…Ñ?}¡bÈ*u
-W»)D…
-£ÎèèÏýp -P„É~U2
-(ÝZUxú›NÌNκP½5ã¼_5S4 å !*4œaÏù€óÎœ=+™(œé½JzƒO´ ª’8
-’
-%÷¹×:ýŽß¹çV
-c£)8ŠoÝu%ò¸«µ÷^Ñ/±2äÜž"çè‰` ñÖ¢B¿(ÞyÕ·LM'¬œmÙ}z–iÿ(™ð„(2o8ŽùT)ºd5f0_ðäZ¶ÂózN£/z3'!~’ZÍr¼”Ì­>'êe“^yûæVNbN÷azŸ3ñ‘hTY[-Ýu(Ý’oÕ‹Sf¶ó´×¯P»_î {ô[x­%§AÆ(qV£qÆ ×*Kä€l ¾¿J„"e+ˆT¢Dó¤ÍW±Màȹ
- †,$¥óAÁ,qòãnk'į€º^5» OgÝkîtH¡©¤ÀYâ‚¢[hÚ,YÙKôÙã\æ€K.NG ¯½¶‚´‘CšY{`%š{Äʯwi:¡j1ƒz±þzÓ󶮭¨ˆ[Yí,žõ)Ád$,=Ç¡°ßê4yrÍDêmû¦$>¯ýñ)ÿÄ_ü5lÈnn"n<¾¯O6œl&0NÆ|-Ú“ ©4î]
-¿¬ãAòÈs¸3ý«œ\€Cp
-î½ü>ˆä6.t{vù(¹,$Àøì=V:"hôÿI?¤Òá´u¿_{FxX\†sÛsÌë™™\ηÀ1pBÿγûº’ ºØ#ßGÛýÍ:±RAb+$(qï¶!(£2K\Ù°kÙ³ÐX7öìx¶â ¸eré©ž[²B5¿^ÆZÁ–ZæÇ9ÿô—cµÑ3²ŸÓÇ[hœzNvø$ªmá»ów,E£ôæü¹ÑWÚäj—|S²™þJ¾±¨ÇËõïJþ ñÿàû¥øžÏ:ڸܜ9ä&‰+x£ø~ñ`f•¥Û¯—¢1ÜÇ2w)Ç«$¾PÔó×IJ`„ ßY…ÿC¬{§ì {ËU¤A^'LÝçXÎíX%#ñö¾I
-òGIËÜŸíYÇó iTÛé\ƒiÉ0ã“"ëtYu{ð€.èAŸ“Q†Âo×Z;qaÄb{ÿ¦DŸ'd”ïëÙêk‘}]˜®óu/Aô­ä3ˆ¾Öp5x¤·çÄN¶‡`Z¥C:j
-,r>‡ù`Òž¤pŒ&ñß­¾iLsïÇÞ¿YçþMÉÿÅÿ|s«?Šþy5Í‘Ĉ
-Ù×%XÎÚ
-Ô×hŽ”µ¸÷ð3/—@–Š>†ö—ÇY
-²«©-*Riº¢ÊÄ“"؃žM\}|iÔ¡”DÙìvT7ܻėà7p,ì.¿ ¬ŠÃ5_0Jš”F¤[Χf—d1žYNfÄZ¤µsXìÅ¿O>ìDJŒMÀg[‰ùôÒ€úêoUÑÁ
-T¢B5Ó
-MB–iäWGœcãmt¨<œ `ƒXðVËK€#÷cOÒqpMÆ´óðø7f0•wüO ç"l?«qôÜpþ› ÁcAq˜/}/Bý
-9 O¡:?Gö+ߎT3Þ-n²÷ìŸ"Á›p@G£°b¼W–eåV\™ùÂÉt ŠIXU¼;¦‰ªÒÌ‚í¼D•³U£j2`QÄýXÇ„Vønõ+bU‚,ºõœ€Ë¦_FæªÜ&%>a# ¦¼ãKÜ ýÉ2E!éb&æ ß&Ÿ¸ƒÝ…—RÄ8õ
-žbó«êS”°öôEã<›þ€÷øL¡7¨/Óâ=µõc¹"i§Ë%þ¼A ÜjKªy£QÂ2ý¥S؈ –m†P1¥XÉTJ%³¶îè‚Ãð 0{ÞüêUDǥ"Ì´Ú9p†å:|…]F`S[Z*•ÒÜ·é^‚&q>-/A $Îi–ÄkveÁ$uÈ—“åyû.ƒÅFʬ
-r¶4ö®7”èñ”þFppjMébt reô·ýø—E*ÙH‰LºXjÙ
-‘;ÇZ4ÆÏDùå pˆœW2¶ÑÆÕì½"ïÉ4þv…çøâ2•³X'lšÏ“¹ÈÀN{\Š¬„Qcjeˆç(žÉ2gºv&bž»D Ç"ls9q¬*¨1Â0ÃÈÇT³:îÍ_>ØJ)%æ3Jpè8Mw Ë”ðD¹\JüS2J­ÖÌÖŸs`ri 0
-éÇsèz™ÿy ÂÃ?H~V¾zž¡ÌHJIÒ¤³¤¯x Pòµ.oêÜ%jÙM^)…€<’`½%§%±W¨^·À0›Ü‚VæÍUdÅ!©ªê ȱCŒi»½<<ÛȈ
-/òÏ 6…gL-1›Xå|ø¦KÚé° f’èŽÕÒ°Ða¼Ç]ØOÌô’îk ~‘l‡oƒq>õRÄŸÐ;tAºÝ¦™Þ£]õÝû_' L¼Ç1"h‚o¿±¶“o±X;ŽÉXdæŠ|7/Ùµ$qv¯á™
-V›Äìu6#wŽYsŽjb>ìp>!BÇÄ}¹kíü‰»âJœÂFB>0¬(A‰Kg}"F¼î:æÛ6ÔÏ}…Œ,4›¥ÅH'Z²(yên|ÝK:¶²*{žG |n% ¾IIliDä—Ä)ˆ{ û©Ë ¥©ŸËÔ¤ 8•¹dûtÇÅ«¦è.Þõîl)¡{K+ÍýÆÙBo™êTvÜFÞXÔ«¿ÖXt±5¿©h(I3ç±^+ÜЋږ‚ÉnåÍ)ŠO“àÖê©à“[á¦v/ðÀ÷|GGò yGH+ük’¦‚†`}¥™ìÍ›Op€ë$X4MòˆáNþ¥×IÊ1bêØü|V8+Ê”*3Ÿšf¾
-±F³˜°ñÓÔy„+Ø9¼†‡A7Ë°L Û 0å²l*aŠJEÐn[—>µÉ#ô& ÷"• f@ÒeT%>Å|¹ž€‹±²°@w`²áÁ˜Uî/TQÔ¥Ç(L :¯Ls­A @G«ª³/Ñ;ŽÒ²W(+)ÓÈXX¦‹µòÍÚرM3á>iz‹g¥ÄF°À
-7¼˜Bn`Ã_‡J±'¸Öe4­V“éø°°¾šÔMá5ƒ3E(IFxŸ1£V%‡çàƒù,dÓcŸ£ÿV(c<R|¤°ÎâsãY±#_·©¼¯¶ZÉâo ’I_XÅ®C–[Ä;íSù]­“A¡8P@¡âlv·=f'ó&8B3ŠgÞcÞ ÀFb^‚WæóU½„zy„ ¤†-ò³è6ûÏE‹ !td·ÚÇ€*Rˆ½ž=xž”‘.ÒM{:¤—eY
-ž/؉ŽfÒMÎ3G—ÁúÍ(ÚÅO²¼”~Å9ˆ!f„Ø Ùªeqä×2~dË[I³.‹l®cÏs€ÏD¹€I3%¬5_F—SÌ'½Ä«êÁêbÀ´É}jš™Gu§á5dI"mi˜ÞT·ÊÚňq9~‹³N{Å`ú¬\_v"¾ôÕ.·5ß¹!¾_4Šz8Ö»âêÁDºïñ³âJ‹Sîàô+’?Ç
-ÿòÂÒvÌP]/ŽLƒ¬™Qêt+¨2øþvƒJä_ѧ¬Tóû4+a~#áÒ/Ø&:Ü¡šÂšškÁ<`¦—ßGÄG˜`<õ¼¦ôÆu 9÷übM±|äMÌ;¤•O»¬ö&Kô”oãÊ –ð˜*â ã7£ ^a–ÄM~uL—ª+Lsdß¼ÈL¡<Êdç4ý/V˜Ó’a[|*¿*ùÑß¿E'°còYÛ©™—Kr~TôXÀÓç~Pt#…ãnÝ‹œ`H,€U£u©>ø׋*‚ ^{½nõMâ?­¨-ôµÔ%ù9J<9!AÓgFô:J|ãg2è(Ê)/$ž"pFº¬Û휑TÉÚ€¶ƒ¤€ÏF €~ö
-öñó00(Ÿ²XØóχ¢Û’}ØuƶB:pVýqŸC–Ñnv¿X O5((Tý¥š­?PìŽ<ÌÊ’69Ô8­e%ümdI#º óALÈÒ¯Aò#¬Ë`“òcbîçQ
- jûÆ'üY†ç?Ô€­•—…OuˆŠ¤(ˆ>$7Dz<´‡•ƒÑª•
-ærÓjøxo’,ÃMmÃrŒ^D+T[žql Æø$¥l(ɱ½§’oSòOÝ‹&[>³èüû9÷ÛL²‡\:Щ_5Ù¥#•í»5‡ö)mBnQ„94ëÁL,è´ã”¾øWî£~œq‡Ëá7Ô_s/]‘gsÈnÞÛÐZÈCIsó<UÜ&ô;¶Mn"¦ô÷°Ü2DlÌçéïÀ
-¸v_ÅiN,L—¼üJcE5.¢SJ
-‘ êNEŸ/ŠÒ¨ì:Ûµ«¿¨Ï¬æ±= @ÿ™VÁ5 C¡.³S{ñZIî¿ô˪µŸê¾Ú CWé¤vÝ!³+ömÇ9~+pÀ¬”ºµg\s|œB\L¸Ns^³i´ìlîø(V/2Sf핶 ÿT«RaÌõ5'¦Ìäa‘êS›çà‹ÇÕ;‰¨G½ò©DëÖ‹¨”I]Kð(*ð %\xn;§á,
-Qd¿ƒˆh0ä†h›£XŒ^a˜FP•ð
-wœ,ÈIËùŒ ™ëíP€Øl€(°§y<e¼c©#0/_ÃK›LÓ®®¶µL‘Ô}YX°¡0˼/I1š4"ñ¢>xP’L×®‘'7î½:uRRH^|žN´},Á¬ ]Ü%Éæ5rcfÐ6Fwx(úô"<(”.ÏêË8ˆ¥(Á‚ûî2%âªñ\Ì;¡w@tkléÈŠMqm[œ¥¤i "
-ÔW“á'öJÝñtˆ‘Í6±¥›ò%±gnÒ°$‘†,ñc˜·G ;;YRityqŠÌ. …#XQb(GßÝëqó!+cæÏ_$ÔÉ%悧pvøìuÁD/í*¯x;;O]knóªä›9•÷Îoÿù%ÄqÇ)úY}(ÿ¯Õ”Õd8$¼'ñ0àÏpfà R²@À×®]XÎ11 ëÃÅ®C«¬]vÜЮ`È"_¢šd.qHuÚ9< Ù?k^l ÎÄíš—à—qs<¾Å)ô¯ ×Hv†äÞ6Ä
-,0Ö1˜6‚ˆ¢!ˆJ½|áÄ^ða.yít9‰ÈÅóß6À]#Bbñó¬þ÷ÈŽà@à¸×î½| 0G‡äfƒúy"CŸ™âŒÌ G†j fæ`kCƒ•^Gï±È°–gŠñ xÐÇ­ÈV(Á€Nì¢ü~«­Ý$]ä%„ &YƒÇ³‘ìÐ’¥øù¢èÅ›± ²6ìb+N¡û•¹AU#Xó˜GÚÉB3ÄäiŠ
-+2†¾‚l¼/Ÿbÿ`
-H‰”—A²6DOà;ü ŒŠ @\;KßÂU³ú¾ÿv^“Tf¢O•=I%eÉ îÆ£xk3KfñÝ|ìÕ[m~ü+r>þñó[ôxÃJ ›6.A
-ñ,^šy”yBlÌÑG¶Yf_!mô™Ãfk­îàï,f/üï\5ª[óâ}Äɇ?E­^½ŒºÎ™­¤Ç ÓˣƨV‚/|îˆÖú˜¥–s‡ŒÎI™óãû·[=êœÅ¼ËôÕG÷l=ÛàñãÿòÑCÿô˜þñù&hTêêI›}(d˜w#'^¬ˆú0wžZú Î+bò÷i”cðÅ
-Q&ÕÍØÝr~•Q%œ%wP£¤ƒ÷RæjºçèÔdºí,ɯ )®ÌZÆ æ±oÓjƼtœ;½šÛè'™Î+/˜¶qÁ“F ~8빪Á¨Çˆ~`Aûy÷¤YYwLÔœ­‡[ÇD–‡鳞ò97g+VJ7ªÂ@¶ZŒVj}â¢rGi<|ΓN:ãEs´ÕÍx¤ µü—ý<k’d¶Z«­Ë*¸îcN_!4&[„Ñ°2öìq®'H»„|ÿöïoöñ×·=pJ›ìg^pøëÓƒgY·2ƒœ1™¶ÀáY€Ò c]{g¼VùÏʸ'Ùï:|fdhºÕ‚<†šÌˆ÷g;%¾,³•¾ÎiÙ<¨ÁœqÎiô—¬Ö24øĬ—u¾<HŽ!Ià“·cˆ
- ÞÀ çl€¾nX¼`«h܆ñM@k÷qk®øù(þÞËÂûx8Oož"ì}œõÒ£g¥M ð· užX ú‡"€$ÄX:ƒiûù€ÉÒkoB‹BzN*pè³£­Â¹Tˆ±Ì•ø hnÙ³Þò¦™(L#¾+Ýà]30tIuGWÁa:Þˆ­@‡*ÒpW±¥öd;¥¬ö¼ŠðÆ[Ö¹Ÿ´Ï¨ÆyÀÓ2
-ÄO0Ùƒg,u£E”¼jZìOƒ¶
-Uø "z}ÍÎ-(ySU¿LEˆ1H¦òG_Z€€ÚË}£Œý2Í ÒdÒ˜Båaf>Âe§ˆˆ’ó~ƒ¶ƒÊ,G?Ö9Ìà‘ôØ!H£#Á-»_¢áÕŒ¾ºþ²1½®¢î¾Yãr ŠT[Î÷xŸCNàɺh›>ÑÑ2O¾ÐÍá/3ž DL)C—Fì ¨hÉ8]îÌ<ÙŸ³ÏRñ 01Ô6Û
-ÁnP®
-÷ÄɆ\I1±U­ ‰ p ‚×Ý*ú†ý#®µÅ…J؈w‘屃ÀVôÞ =Ù‚L3JƒOŒOÌ$zÛ7m0š‰çÁD»„ìvQ¨–ÂÄÝÎ{ób¾bNžÉÀ‚œ½Ðt‡ù> b:óF°4’4,HÜǘÀYtiéÀ–!»±.C 蓬ÜÎøUý˜X¸µÀ—.4ÄFx¯3®.B°hø0<DÝÐQ2x«Ù°–‡_Qµbˆ ÜÎ[T‰d’³ôîÈ(¿d‡ÙÇæ[ħÉQÇ<¯Ny¦ýãÆÈXaü^Ô)A>ý†Ú¥Ôñè!Åæ…u~í!DvzQ55<¢c‹<ôç
-’¨¼¾C,‡,KçlYÔ.‘Ì®SÊåÔèJÝùˆ6qxSÓßPwvµŠC|êÂÅ×s:Ú"o)¨ú i0’¨kší¨A¢-è©åkUyÈñ|ÿv r™`@+ ercqSk9ÆÑp<o]%¼Å ¡XvÃ`º­úH-N•YÏ(ÿˆMÜ„à0$ÿ8‚|j±Aÿ>äзÐæCÛM Ló|Jfm IØë›V¼ø¢„Û}“E.¸ù+ºÎ¡¨ßÞUnç4Þ€ÏÄ)üצ1(( J÷É
-‘ëbíI`gŸ,kÛšÐY¬Ž| Âä0]4–R#¥?ÖËEñRúêû²— Ï]èY2o×KBQÐI PÂã°ÙXH`Äš+Dþø³äÉu‘G§ý¾kkI˜˜
- µçIùÆ´Ð(½/Ô‡_±u[  ÎM²ËÊæûÂáXB4ßϳ1 ;Oëó\…ïV1 ’:S
-åOV¹é\çhãé
-9{ª1N©ÚUž¯êEL(SúäA-£œì÷ ï1lj}£KûúØ5~O€+Š!x¢Æà<œ½h+’-ì°A¨>.AŸo‚Š¥–Fô%}£Ý´|òm”Se ì>¦d0ÚL;‡œØ)¥J-JiÏ—S§Å ¥2™ÚÌÛ§œ­/Lös‘k_€Lç¾N5ñôŸË¡™<íÄÄŠ—`”“ RÈöÿâ'6»µÅãeâæàáÆWBGD^BŽ¿(6†y Rò&Î_µÚ 3(20û{`h É¢6ù:l¹Ú‹:ZÕA#ßÜV … ŠÍ¡×ÉE¶n®õoî¹[^oÒé(‡O”¤È:ùpÅk Ðg™NñYøïkÊ9¨n©â¯i&Nw†d-î¢1ãT
-‡|±Ômp_Íu˜wgs‰ù_mýü^›fÿ¡¼L’äFv z‚¾ƒNó°V/u mK÷ßþç`Dv“»òk!3•P ÀáË›1?]}o¹‘ÿ¤uÒiŠ8ƒŠŒmÚc?L%HJcõxiwcd%zâ¡ð¸ÐCôðÅL):òZ€-ºØa:¸leF¾r“×)E:p ÐÕCŠ¼Ýs@Ñ{Ä2ÍÝR¤[sN‘Uì:Á7 26™žS$% ˈ|Ͻ7×IQ4ª¤gn‰8¥HwçôGI0¢Iù}Ê%EjèMN•ÌïŒx>g@_x–¤@Øv`=ÅH¡Ër¤¬ÄŒ~Œ¤HÏDÿÁÂîÎ9FR’µjLµ-{v‘w´;1Ò)r†Þ_26à ÆŒYó^Ô:@dµXω!·¢û^Š¾>YÓc›ëKXPuYxȯÑZHöøc5p*îRÁh[áS‘JŒ9ðe¾³è‰Éj£µl<ôÛ—u'àqdÇ1´öŠú_!C¿hÕ
-™ýîŦ\‰À ÷¼J™-óXR
-ÿ(ë8S¸«ßu˜žø±wIºÇ_mûòË1Ú~¢ KÏÖ·`¤aƆa@1Í#ÇPŸBÒ­Ø»w/œ°J´ámê>«Ä}[®–ÛÙº³ô›y]ß»<R 
-UÔþ¢SvüõpÝ÷EêuÐs±
-î`K<­«ä4‡ÄÅNE¿GH lLXÞéðrNxa¾«,±c èc•àR#§ð¢· õÞ f‰‰á¿¼®¢|2SúX·mñG È…ÙÎA£Ø‰¤±}bA© 5n|*9Aôç_N‘ö9ÒuùµV?.¹-ŸwÕEBp÷êZd®½tl2CÖvª;Ý÷ç¨aK2ÉH–¨ã> Q~“é¾¢à¦ä…T°h#oö H‹{)1AIJ~az£èg§IL;fߪE?^R±´h˜{ŽR&á,§¢üs·VV‘“ø"  Ëà«Å>òa¢{Ò*ÊxÑøÍüiÍ͇x%±á€B§­9b!ãÂ+c k¬D b +)z2+þô}Eà‰€|ϹshÜ\eUY2›&ža}OáTòÛPÑ sÁ¬Õûªë9X«)3ÿ6¸à ¦:ôÒ*Ðtz 1¾vˆzNç´n’«à7¹k,ü L2;"×íXHa‹]Hy›JÐNþC@äSZâqË­HáYªX¶ŸyEÎÄÛ«â8ºøMÿ´èº~_¬¨9þø›J†¨J}ûøÇŠ"O•½Íž;,ù5±³Ø>¹©â$¿ºL`æ15ív+&åWÄc&u
-}viÂ\;FpãIá¯Û9RF|gby—‹'Í‚+Í®–£D/U>®SX EE·f3©¸¸X9D?›Nѯ‡"^ˆ
-#`š„¥y”À-È "e_£8(já›c.{߯ET‘“’²jû~gŽ‹ef6q˜Ù á1ÚÖèc6¯&Èb¿P½d)ÒœY|VÚO–¶S &¶íûOÉRŽ;Å=ð5{qÎÑR«ßhAjsJh´Nô‘­g¯Û9Ê IÂ…ÜY&“AÒ`QúÁu¬ë¹ìÛ\%
-4q”¾A zE4Ú««^2mØØÑmhYIë’–¶ ã’¦‡Au>K‹RÚÀ(À–¯çÆýÁÿNVÇ‹§…žºzL¢ƒàLÌÞAò8¬êÈy“Ü…¿¥ÓŸf±•Eé*Û'¬]ïˆ]‹"wc]‹
-Ÿ·„Yp×.è »ªØ÷СlÝE¸0Ïÿ¤Õ@½ay{’Ä‘±·’Ú:šgÓ#·ÂÇVãVäa•§Ÿ‰ÿcü êq"ØT˜Š|Ñ—[Q“Úi~!Y‡š<š†Åæ¯Ç‹$ù5ÌË1Rrîšßà”ü6h0ÿ†j.ïçÀaü$ò}}M‰ôCèœñ(Q‰™¶±ƒ´´‘ZÄbM¼yýéðv†lŸy$Äf°K\–JvÕ÷ë“õ9¶ŒêûקgÿX‚‘eŽ¬±ç&3» xʦm8/%>aZilžØ[§ÛšZÆ<"›ð7TS]€P‚y”>¡°kjô1å)ž­Z‰l* J
-ŠËÔˆ-#ê¬Ù‚¾þ¿Z< Ý)ú²¢ H»ÛXÏJòOX
-û~•Ørá,‹YyK®—vÔò?ÊË$9Ž‰¢'Ðr]‹4Ìòu…>­wÔ²ïßï;Te„‡1»´)QŸÀ‡?쬂Âð&Â-µïàØXR)BÝ­âÜ8º¢Óh7,’•QÌ)Z~Ý€¨™…@EÎe9Xü"%ïåRî€RÖ˜ŠýðSM¹™Ú©§‡Ó…«p_ºé·¦‚숃dŠ+Üš-
-:³0ŠF N…Ö³ƒxšŸµ¶ûÄàÉÛC%¥x”¤nG¼-CÀÎÏæ÷Sët¿ž¸ñŤGc”­SSe€ÄÔÑ=“)RêäÊ7Í|¬ÕÔBÚ5çoSxþ„‰a•rù‚YL+òšî1;\O׿m³Z¸@¯Ç„Âé¨Å¾q7ëª1✛&¬»"²lÑÊ´îÒK'cï ’º7ó bÇhk/â’±óŠEb¸a_$0aƒI!Pð­A1S,ó`Ò×»©m®Š+ck‡Nb’ö‡ýXl–•W®,
-ž"#¦c_ó–;_ç¼õóšLU×fߧLÈôó *ËVˆBX/o|˜T,(<{‘Ä5ú@n-7y ‘ø]–âæ;±3$ Ö°{¦)ecfIÇ ˆøæ $mäE6Ž‰KÈ“P®îå-A"“ˆß¹É[W7«åÉ9J™\½Üä‰+ÈÉ[èl§€ç‚tC[çä$ ÚËŽèqzQêÓF#›®7æ·ºyKÓƒ
-™X¼¦öÙ[ŒWÓ±ƒ30ÍímGAœ&«ÄO û駭Ÿ—G;ÅÊ@¯£á‹JÞZgVBR…ñ=ó@\D‘¨Dиú†¥ê,zOÛ€3eWNPq1<Aãýúw˜Bêš:™–UÄÅn
-Ëï`ì°h<’|…Gî…_œ® Á˜¡ý#îÚè(4íNCÔç‚{Ø#µªA\÷žÍZQYN@Z”¯ÏF÷2Jƒ™ß©Ù,¤
-O650j'³.¨FÙKЋ-`9êkæO6S£ÈJ!KÙžÅà´ ¢|˜ÈŸ¹ž>$>DVxqëO‡¦ueìÄ´ï4q¢`Ñ3ªrY„^³6‘Ö-ÜÕJÝ3šN˯—¹ŒŽ÷¨ë^ŠsäK‰=ÈK«>ßÙ-XЂEYx´­J£ó½ß7 Œyj’× Ø DsGÑP»q„ƒAœ „ȼÚÕQU‚µ.¨_g{úø®TUþ6æMù¨>ó¢™ß%àÃ|CÜ0è¶þâ*˜2>L¸¥!ÝÿÝõƒ +Æ9 òs9GApÕx–•ö«(°áÈ»%~c‰Íí‰×/f&Jî]Æ®FÖ"d%²UcÞÌ„5œ×:Šs¹ÏOãHÌ/ X¼síòtêý× ˆz1jʃ)Ûa]Ñ”B‡ÙÆ‘”1&ÆÌ Oç~qK„›¡0•‘¹‹˜®ýôˆ %ÌS‡ñh2LD^R—}‡³$®G4×¼\Ó1ATƒ/“Dà é9%/œ ý¥Æé0AAæke®1-è.*›¿Iµa+ŸPu”ƽ£ß¸}­ü®¼F&‰JG¶ü:‚F\ª«:
-nH“éõÃÛ+ÞY;,!KÖ÷I?,¨ÒØ!œ®?’¸{<Öy©,†öxðø§EÍüUâÀLîU&õX¯ ˆ€0”rbGŸv©"^•µ’4eºG·T1 y›É¾#¸R©‡  Üp FyÊeˆ£“ ¢‰ŠšUÈbA´6
-·wdEêˆ0J¨
-•%ê<(ÁʱH\ .³ñ`E«"‹Aäëð¿¨}ô :ªY¡‡<)·v¿Óž"X‡±…ƒàïF,¼(H–«˜¹Ž áÿbV6dM>~ù y)´ò]}à(l,ÑsXf›˜/˜#HÑVð'*A¬G$R¤ŽB…öYŸñyÜæ‚p9XŒÈ‚ïn"np'>km»óAÌ]q`˜ !T•ì;„ 2¬Š .HWoXK^Z„y‡Y糬¤„½ZyŒÁ«ŸFÍÚdmakÀ8»<ÁÒU²›Yf2(`Í$tDÐÐ×;ûµÖ§@Ugíí[ãÉÿ4 ¢Y—œ^Aέ#³ò“(?ÿ>FReŸÆ¤Æ;ìgŒd áM‚ Ì× †ã/p½z"ëW•õÂ.$Šþããö¿·&R ó°Ïêu…yl„˜*lwBjJ>¨G Ñ@Á8í‡ÞÍ
-`°e¿Ž›ÐF—áP£!{fQq ÃA|Zù©”2»ùLGÇ?‰Óij1¦Ñü¹Bd±¶4à“?œ>9¡H—!HdV©¦½J™t½Ë…z`ï] ´ÚÔ Ã@RH¾Lj(SÍ}ŸtþLAF’FŽ#Å1vƒÐ+7ƒd¼´ÎÞÆálÑõ_Ý´œ)p’šr¥¼ÛmÁ Oˆ!ÊöHPÒªså#å"ÂLGÅ;ÈËp~ür@Þ˜k˜ œ<ÙþÐeó¼ãÞ
-WZv «]¢Ø¤ÈÖ¢²Ù‘ë¥"qö}˜Ö1
-i•s²ß™EÏäûÎ ¤BoSÜm$2D£¨“n ("œ´³û¤+Fj„}g
-Ó)ˆDê›­äÃëùôõÎ`h†Âí ñ±R´ë…)ýí‚®Ó  –›æíML£hŸyÒƒ…¹ ì´–úâ—Óh”ÜYûœAô$#¦ak3C3­âJ†L³4…²õ ~Òtôºæ•ò’WHgŒƒHÂŽMeJö™›Dž=0)Ó .ȃeÑ\ˆ¢+ÞK‹±Ï¹"Æ”¼cø”,ÖUÚÀÂÌÑR_½b'•$2>ÅÃÞÒÚ”A‘R“¿€ø N­ÂŒ­mg%u\*î± õÇi k\»D-dyAgr>ß/Mâ_ÿfÿõŸ_ý÷q aã^ºkõpÃÿ´±¿o@L›µñ!ìÄ#èB_éN €ÉJÒ0Ê'£(ûÒk‡+¡RRXAÅ’ø:YËa0y%ZP;ÆAŽKA`4.ÁŠÁ™óŽ¼úr‚訨ã'h–ÇýÊ7fR'Zjîe¤im@Òyó¨ø”a”ðZuºÅ‚V¥ ÂÈÓ-±yiÕ>êêr«¸ ˆ6=üÛ r _iFÃÿ£¼L’ãÈ• zÞ'(Ã<¬ù—º…¶Ôý·ÿy PÆÊD™ÔÝfmMÑ$bðáü*fšM+«XëªKq` a’M[oº'!Œ€Ñ‡™º@ÖLô ¸XªÞÞœCpTOø–ÜOsš¾Û“NS|)Íi.þëN}±…UKÏ{"–\TäCZ…›6OŠ™ä8{ùi™ø´1!éž “{ÑF¬iqÃ2¿k_¥W1YJz!mŸòáí€Dv²‚üxs©ô4ÁÜš‡X@«•kHhQ#æS˜àŒ+Ç+ØEP1ŒG†·SQ‹@Pé±cÍiÎ䔉$™Y^^ß@^¨÷ë㺩¤UGÎ’Ç1œ|âÄu} ¼v¶3ˆ€’Ùƒ±ZQë€×ñqÁ!̤ 1Æg4ƒ¤Î¤ œö~<Ïî]¦cînÝ‚&%¹¶Ë×±Eöod;Û›‚Ȉ8DäVµü3­Ùa¿Ò0r? ~¯DùIE.üÍ1ÈˈŒÕ•Rb–«¸+,ÈeØõî†ÔbÙ¬]wСíQjeÀÐÂùL²5ênŽ²Ýðúþ‡-ýe»\#•Ä_Sròˆ„L´>x[æ;Á!ÁŽ#jÖûòè°Z•çHÅ!<+ r”à ³&òÃT Ï«ƒ €1¨XÓŠ²AL8àèÙ
-ê´ÞrÀ%*ávÈc_u¡ I0µÍtxoÔ…läÙévQ´t"­+ħ‡V"k Oçd>ä•0^«á@ø&‚ÿFƒ˜vÖw­>˜-3KÞjw*Îp{ãÅ(Þ6ÿòýúGfÍ8Ÿ²à[X¢á2ß“¶rTTÀå¥Ë‡¤Œ‹ö
-#nÅ"»ˆ3g\@¿Þ€lÙ tôoiœ@Htf õ´²X ŠÃcǶûDáÈqŒÅ…º4G­"ãOq±{’Æ ±¡Sá•å„¨Ìv’;¯>ê<»Ö§\« LC¨°GãÝ1¬6+U¸Ÿm;¡ggŒ;$Ó¼5–?ÐP° ¬ ÀV˜ïF¥)øÂÇ€1m¶ˆ°ÆD•ù @üUiŒ˜A†’(É“ …UÀFÐN7³IŠÈäÅ°ó§&±‹qk¿Xír ±LúMË4ùÄïùÝë骼<¯¨û[°¬CmmA(C—¢cÄüªŒ€0rŸnõ—¢Å“«ñÊh›ÐWfdY½Ì¨â0FÏÑ\"©æQ›ÈJ(UÔšÛJÝA(>¿eËù™ ø~ªmM$tæßSÆFŸÁ!ì%#O9°s)tI– =ˆÇúœæ§
-}ÿ‹TýBÕÊ«òîs«DãcÃê &IE;è~³Ñb+"úîÿÄø…È"Èí;è~ÝßAòßX¶§hlÁî \&V_+‡5NŸ¡¼7øi{ôˆÄ1£t–5kª8€/O›ñÛ®ªI*ÌÝOÇËV6žq\ÇpþIa ¼¥] hºÚãÑ~
-D¸nþ Ÿ<ªU™)ìÚå²ëOûmFŠ#H;v¼|î×Ç ÄÁ›Ìô¤%/qŸèWÂæ¼C"[
-“ó×êéÝ7ç@“BäÍ-ž²¨ÞÝWqø<œÀ8žÓ’íÊâŠâÝ4ñy™ "„5‡°ŽSÛ¼ ì_%x°lÓ×ÇtÀF‘Q€ŒU”sùwÐm)N×ý貨Çy¿‚ÖÒ×Ä)¶‡TÊ<„¯?G¬Œƒš äçÓ ¡òIŒDÜñv‘@ù0ƒð0n0ŸÂ5……IÍþmWÁëðBÆEì«h ö˜s–ƒô¦€N²¥mAZàKXÉŒåR¤ä( »+s²ÒIç&ŒÊ=íªò@_3ŠŠgžÛÎÉ.gKŽÙΡ|aqAx¶xº¢ZŸüÀÞQ|kÝânµÁÇÊ-ÙUù1BÆQY“X>~.t„JvNO-³˜‘MM R±Kã ´½T`0:µ‚ÀtõOö58x©¬öA.õpü•Þ@ÅF<©®0<)ÉïqüÓHüoAuR"—·|rÖÍ
-\ŽD…Þ¿ÏE£Yæ›~%‰*‰5ûàÞ ~?ͧò U]VSùè,cAu-#Ð!@õöТám*@‹ ½ÀqB }®ÄtÓÀ¼¨¸¥Žwô5LîÚMÈzM@
-Êœ´³ÌèÇÑÉÇlðn—Ò@›±¤íáÿù8ƤUéC#[\Z'0$Q'm—VsÒG1µÆàþžoÒ©N£CÐøµ¶’Q÷xiôà” ­-e£r’šUÌ%BV‘ÂMñIáóV/ë¼bÛW¬ÿ%ؽÃüõ†lðP7ˆ,ðž÷·shz„Ç7Úþ‰££3(MY†Å'¤ú¨’s8Uxò8РûS<}?Íødˆ€ø™Å`‚Û]ƒ>~çLBÜðøóŸ·?þ}‹oÜ•„Úí¨:aŸ¾%À¬¾ciþÿñ–ó€ ªÀ4rYyT½ eBN&Àûó&(G@4 $»?,÷*íWÅ ¸4qÒ
-)PÕH…V_Ä›†Ü¥ù¤Í£ä¬­xp‘SPFŠ¨¹k'À5zˆŽÊøèj™nªë¸ %>TÎœ|'*LtÍÊÑcxž}©¶J§êY·˜ç[в°€¤ZˆN¡V€(ò
-Q‡Pšvß4f=Šñû](Ð0)…ðɨà‰ß
-aâ©*Xà™(õêSþ=ã!D[‰»b™íf.ŠÎdØöiPÝ……B°|äΟä#»°Äð­
-¥ÈYu;Z‰!h‹…ð L @Gó×a’¥/5÷Ôa!Øœš”­´”L&ð1tË·ªhÀZØ…Cc +Ô\õu¨ð:fŠÅCd—ÅØÜBD> ˜é.¿˜˜«ø(è[pƒ
-#Ñ^Æœ !®uÀ3äm^3ÑJê=ÞD0RêM÷û]ƒŠzœ–cª
-–á99Þ\”¢†¨J#®K¡È3Q8ݸå±*Á
-(õP“J¯0ù­u®*,^ç£Z4+™_ªù»ùÄ·µ!õ4óQ½ë m¢ ¶Ò]ø©ü ×G+ˆtâ4l^!z+šž‹ ý„q¿ y5†&î€F‘_ž¦jq þДË$M ÖL×x}Uu hBý§»\þò£½Ö
- Féâ
-jq‚WЂêåô„ 0`û®¯×
-\4`±sç“÷kš.pfÚ”) ÒÓ˾¦©yFmÓB€]NùPZk'q6†·Ìɵ=IMHÞ\;‘€.q(~bÉr!SQçi+¤)o¬@nÉ¥ˆ¢†Û^|+èŽRÇ4zp±ä™ÓP¦ªc…heöÁû\º!HȈ}êcÈ«•ƒ°°I–šPðq:MµÓ MltÄñV Ì
-‡¹óèœÍæÖ)FE#ïBhR=ù@–¶ó=
-ÙÞÍ2¬€âˆ«ÛÝ#ãØôgVõäÛÈÔ”5 ífÞ3ò3ä•ù&äK;œád<#B"“êñ Î¸ˆz0@´ÔÛoöCC\GXa¼Æà2òÍdÓ€ÞP!è*Œ
-êo³ŠbÝ!D·
-ÈϲHUdTLRjEÙi—&ùpDžÉPC)ÍÚ¨ä8 %j«4€(fÌÒ¦O|¹2pðÒÖæ±m•ðæf!ܪB,?IgÖ¡²ÝnÒúŒ2£5=«€bAC®f [Ne+*¾fOµÈñí48£øÛèðCˆ¶â͇=]EgúÍ:z;Ð(ΓSÔ¢O+zrð‰òf
-Û!Ðc ÖV¼ºxÜUOTˆT˜…CDD–äSªç!õ5䕘ŽAª N¦¹N|9L5w¬ì¢»ïTŸ‚1ÞÜSåëÛÀC”(ÁŒ,­Ù:+ˆÚ'öæ>‚a¡~Lë0d7E´‚”÷CÈ*
-¦º â=í¸ eS° Mìí!re‰Si^~jŠõ ›ßœm v¥g\•¨ÀV~œ¼ dÇ«a4t 5››:YMç…^` xFz÷|tf‘
-Pæ0%ê3ˆô­?æ£þͧ~2a„F‚š·:
-ãìU«º™øz¿„h« N2qjè#_×É/<£SxeM2ÐlK#„à Mt[{¿ód~ \qO5i½òdfà1ÅÓmPŽN7ms‡Tš¾‘a´À‹Bí#‚[ûV¤6Ë-¥¸^ƒp :ëh$•oöfl m½œ$ r4ªÖC`l“)‰ÄûVÈ Ìó(”šU¸%ÎzÖáΦª^Ón@y‹øð´Ï Í’7¹ÇõÄèE_B#f,Ïænx€ô…è¼ÏhäÇËh­º®³)Wà ­äç6VîÜ@`êŽÛpzjs@)Õmµ<¬3æP!Ó´Í ‹LÚÊŸnÀ?¨FµÑCk¶ÍÕÁX߈’RSu`£]ïDƒS­
-©&@j€ŽáÃ+xáb©Bï]*MZÁÿ”¼WXS×€«¤ÙžBøÑuêab+αòf• J‘“îIåú„Pqy|UØg€&T
-ˆÿrøÌ%h.Q?ÞCä¶G—ÇSÈRJñxrARw§õ 4·KÐ?ÇbQn\:|ýÆ;;dUkÊç]ÝdçW‹å2²^éÝpØfÒqЪE„}’]:ñø'Š†‚10¬@8hŒ.4ÍXG ØT3F¯¡^¸'¸?ôÍ(. Ñá _À-´bêaµáú¥¾‚!mŒÉû+áK™i¤¢W=„~äê¬UKXæÏà¤Fm~d¬q"5ŒTã7æ_ñ.>æ•?íóÂÒ¨;é£ ÷½³tÆ48!„)¦½²t~Ñüü¨‘0Èþƒ¥3WG¶×&¶hÏï,mƒlFS_Åw”¶—ØÁ‚b\ù@iãÕiDËèé 7úŽÒ„0ó˜1ëŠÒöªº³æOêí¥íµÉ¢ò]Ê¥ ! æâ³v…éÏ‹ß‚ñE–T*çÈï§iû48&•cåz+0†ª¦DªþŽ|{Ñmã+Ò“_·Í°0*‡j¿fjO8”=ºoÃ÷yË7£ 4ÃbÄã€Î³‚ÌÍl!º¤²z¸b÷eÉÛð£ÀˆÉÒÄGÔ%‡$ua8ýòkôœš\Ž¤`y·!zŒu˜ ;L@2ç ­øžr 9[eø9;|ô´ϤÇlR!sƒ‘ªztbƒÅØ$ã!¤?Iµ í/B(H‰½Ñ
-HŸ)™GÚ+]vUâu¦|
-i«®Z}Š–t-?< A ð§á)¿:_KUÃjrÛ$E¨ªÞש8Òa8’^…9œq¿8‹˜ÈI[m¡ Uø(­oü䜛8êÀž²Õ¯ÓGï.Žã&þfTosÊï«q¾ýó4å/”ZvµÎ¾§WhˆÉoÜžŠ¨c_S“9•QÀƒÉ³ŽÖˆÑ:z{¸¬×VÐÔï²ÊÑs©þµÕ{^Û( ùÞÃ2¬ h ^OÌôH‡ÕOy܉L-y¾ÙÖâsiå!ä[CÜéd¾2B#MLõëÏ_Å3ã µøV>îú£ È~ª*“LB…q‰Áfdœd+ä w0ÂÌE°+4pjØó –IF ê@-²O[=¾1…0–
-‘èbæçXÙÇm3Ë%Ö—ÂÕÉ/sjø°NÏ8„¼ú3Û¸}¶esG@, mæƒçÁWˆc*æ;Š¼®Æµ1À4ÆZ½
-7G~)'ª7Åa!ÈÇ(å„ð<}=ËCy>¸»Ñ»5x½çåÖ{+¨{­(•ùø%½0µU?!Xæ£cðZ|Oe¾ÎÈKñ”Û']lXsÛ‘BÈø’×a¦XZºóÊ<׺Gh. È©¬¢áó#g´J]S¤8쟓ˌ@S_¼êúqP%ˆiÜ¥òV‚[帜9ïœWrU7fóSC5 ö\Náhá=ÉúôUTëtl¢º—EA3©ÁZP©¾eàTÎë¬ÃÀ$&êÚ<2®L³vÈ «õªÅü02T¤tå(@Ä”KÁHN)$”LѼ“ç>—ãuŒ°ú„€­ÇP³žÇ:½öH€¾lW³é%ŠŸ}QÉâ»(žùÁÛ—B渉.¢o싸Ny!“±9 ·W
-zÔÀ:ÖÑ¿ÖŽ˜0–6Æùâ8¢„Òˆx\í~m~€Rs%¾õ\”oþˆ ”SÒ&3õƒ=5Œ¶1" †½j?!byá:Þí¹D,)³rÆ­Œ‡ãl¨ÝðŽeSôcÝŽH~¦°ëµ­t¾MsïäåG‰,¤AO·Ê `C E¥kNY;5g™‚Žª7†—Äž
-„x×å
-5 L.–ç=‚‘ui ¢ÖÓ>h˜v•ì‹dܵܟgCš¨#êÊÓM‘SåÚ>4
-â+k³â4 „m5¨ýL”ÔšQ™ÆãT)
-–¹
-ºß$£™‹çéYIˆY®sæتÊÒÓV>fà Ø¢·J”_¢êˆD€ßIJ—«\;õ™<ÔñRÁCQ\‹ã
-ƒ1DÂn¾K<!Ótà ÞEäè‰GCìð,o)Ê#( ËQ”ítœÇሦk=”À
-IY£å“nõ)Ú¸7Þž7vzÏMn&íhàakn'W*½Æ0àµó^7Å K_à 2‡<ËSŠÒ«³Éï²4ö+¶â‚ÒP‘ƒ·a
-Áä¸mѼÄv<`îÂÖup?[ßWeË©\ £J¯pÁa2Gf®²XtOïPZ•Wjõø ¼ Ðáñ|Àw.žýõzS–ô·Ó(8H ¯ä±.&‘3ùôá·ÈžFÉŽÈ [»Ç×Á#¯~0 =c¶9S¶s+è¾dYu2/¯Ám(Ä×R²"q.3<{@dp‰üÂ׶QÓ‚´ÏR$iªáCâß*ŽšÂ½L‘ú ±‹» 8‘R3òC‰x,¶Í‡?¿ýû-ÿ‡«qú°•ׄ.’œ#Ùâ?j(R Àœ¯\PxWÈBvÜ`Šúyz`_.E*áþm2~©Ÿ 
- b]^ Š
-˜@¤Ã:½1÷lºÈå,ÃQà†{†¦tY•cX:®_Œ…“bÉ)añú u<%SG@زØ
-àï1ç ´‡íÉ
-×°Kú±’fzºèI“ë?%”¨C®d0Ožç›b®)ÁQƒ ‚©P–Ò¢S%,²ÜŸtš¹°(hî‰,åTðr­ÿZáÁ84œ§ìÏULL‹9èQÀ d1z~¡wŒsX.œdËÁÃÀp_ŒÜ9m–ìæÅFÊhSê±ZÜæM j•CØ%b? ø"@ÀvPzÑZlE¸âÊSÆkxÅ$áŽ`¿hvÅ)Ñlž ¿§_x³êIŽ'#ö…±R«“Æ_ÃìFq2~'“+C4´™!à®ûÖ·BÆPä³Õ_™æœ”6'+(?BÝz¼3]5rȳmR’SFmòºëR¤âÔÌ4Äb8)!XL@‹3´]Âô²
-ÆO%¼²8gÛbdȈzC݃ ZÃÞ­>÷:UgEo1qd¾™ºˆ¯»¤˜¼[Ö`Å*Ú\¯¸˜’Ø
-´3ÕˆT;p7ADàÐêÓ™1=•bÆèqÞÎy¡½âD râÐ`à}ì¬ÃºçR; ñÊHÅ™NÆÓUphjkÙÔ9(›ÿIÎ&¦+ÝÜK&rňˆú}nnE²(lÍc,gI^¼€d¨±a>«ì¨y§0Ãàh$&_ÕSO£ñÝÊ|$f1-Óüõ
-‘¿2WŽU4Ÿ¸M=XTÐ5ñ‡ŸÒx’d˜zÚÄ>’)Ü|“8yy”–’ߨK‚{³ã§ :î­ ?Ëoè ;Þc \\f¿ù¢ë7.¦_ŽµÈrg¡eĆ_KÏ%i…A˜¸+‹ŠË”à}þì ø9 _ýݯ‡’+¾ç*ÑþýPÄd`š3ÖÇ‚1
-ã"—ßû ôV²9&/‘ÛÛñ¨Ùgv šœ@¢±ÖŒkañµ
-,˜«
-Ö½]í¡bë !À –ÇÙ
-i…ƒ13 •³LB&þ~³@\¢ÀàX>J²¬_"³D’™“–ÂãMV„Y¤-å2.¿¯ÚÑôÙf ^ÌI´ÈbŠ`†+"Ûc8¨Þ9°n¥€.È;í„!+miŽ¨
- ýÕgê]ÈÈÙÿ4§(ñæݾìÀ ÄÆãkuSdÕ©ýá䜃tn€¤ÕâJïqqb@¬?æŦd÷˜äÆc…O¯È€¤ÒжFSÂCG·~®STÜ¥YÀÆë:ÉwŒgêëôø*Ö<æÄ–“± ØfäW€AÖ$LÇ.!ÀqBKJÎ2Ü'ý–ƒ¨ /LbF>뢘*f¿JÙ<ÆòPx¼¼××’}’„ !‚]j{xNƒëJcý2Y†)w¿ÊÞ;1ñ.iÔƒ4µ"A°zÌòôþ‰yHB–†ì9 L'L÷©¸E¥¾u_ ùÛègØŽxð:â–õkƒ…­+*:ÔËßñ‡8‡±—yòr=H›
-»Vë¾9OÈ=5ŒÞ•€ˆ‹—iÍòz€Q>!°Ý²ˆX‰ÁÀΫî Q›\g@3è2E9+ IYÏ­s
-s‚âw¶éI˜Øb¶«‹eIkh{õØ,þš”6¤¶~·Ùù¤;J†¼ËÊ×F7É<ÿ ô#*ùãÛ_ßhÝ#wž2kpþo«Aè—° »kAÑχ"l%¤=tåK·Ìh^NãA‘v½r]òM•ÍB›ÁÝ[
-Ü’Š€‡ÌÉkµh}U!- fKçˆ=ÀÈ?´RŸŽþ™
-US.}Ó@vÊqܸˆdŒf%ð‚ÞDZ…‹Õ¯š†4®ÀÁVR*c.ü ÿÄ‹Ÿ!ËÀP0¤¼ {* ÄÑÿB¢¢ÕI6X?0Î訄jÂ?”(Š²iò;‹ùR]’¦±È{g(brs -å3‚¬)OÜ =G\ÉÂB³~ÿñ2Ò¡’!*ä‰â×ÉqQxç(ؕĦºp½M»JÄ÷ÐFì|©1'R+T¡|ô`e¨ï2šéG]XˆtöfÙ#ð÷Ò¥k_óªÃ´ÂUé+)A0yå…i8˜¿•ì£ÊÂ
-2
-ÃÉ=Ò+Ñ@‚°ÇôÑb‘xPeì“P |^Qg  sLJÕâ¿RhfJ8‹Î»B‹ÈTXØ B¤ÙÍœ^íËÊŽ]Í… ‹á& ZKN¯"ú™Å‡àýyWƒ#š![B+™áߢJdÙ"µó!%š€Ô”}<î¾O…T˜rÀnz
-95!¾Þw8Ôì±
-¬H>ÒÁÊmaI¦Í Üé0<€öBÌP» ô
-H‰”—]®[G„Wà=h#ôÉ&ŸGïÂÀ<9ûÝ<F,an€$‘JÍn²X,š[W›ÿˆë³éTSËüñóÛlúœÍ€h·n‰‘g,“!S|®x$btïÑu,ký@|ÙjsNiÍ6„oçî]—ÈÒè½E®Q‘šÕù‘ödÒµ»D_}Ó$–K£w?¾kmÆŸ ³qѶÆ+Ò¨KðDmÁ­Î9ËC‡¨¬¶„·ðŠ5¦Ûywç<f÷šÉ»ÉMçGd¤B&$„®“œù\ÒÇ$¶Mr±!-æš:»ˆ%M}!zü£Pó©“›JŒ°ÐŠ”QÉ…ºh]‡Lf•ŒË>Ç"\¦û>Øéb1ÚÚÎeÜWSÎè­¡Œ}
-µ9é3rÓe¨rí1(«Ø©e[’76>&¤Óו›aZòÐÞ׆hÁÓ‰äz9¡Væ”؇®çø¢P®s]È °¢Í¼Ì¢Üî0Ø»IÔ£ºsAƒ:w¤‹§¶¾àIÕ †·ÖyXÛì[ÏiÐ…LP¾:FH7g€òØÉT-’àVoâ#4ˆ_‘,³×C$©ª©<STÕ†ïs 6†:œ¬‚su8 Ó×Xâ’˜®ddk%×êmN¨hd©q,))ŠÆ àôÉINhh–ÃF  éh·¡‚ë5—‚ŒÖ)¿˜ýñ}Gê¡(?…^…á{¾é>~Ђbø®R}‹œÍؽcõä'ÍABJ)ȸ‰˜¶N’;‡ÂY1ªù¤Åšt4ê<œž£…BF¬ëU¤”‡1rHÕ–9mFBNnÂùlöiœ¶©ÖžÅD¨
-¢½u4"[Q4‚@SC¢:9'-»Î£ (…
-¾óê;÷Td€§lÈ22LcR‹ñALìiÉcë©ëQá!\¢lH[†8 R´p›ÃŠNh¼? 'WƒYóˆçtN@b&yË-„í !ë:ä-ú DUhj‘KiÇÒœC½2•ðV­ÉÐОTtð HÊ @v…ºZKÕÑÈs Õì¶xo&Ìk)d³ŸËð¼a´¢Îº.B‚HÒ ðïzÓb$QÉÖ.Œ¦62 ùsR#Œ:—¥U§eBÁ‘õäw0±šùœ×m™?¤¸eGW™:ÍT€E½Æ”*ª$úÒið&Ä5žáíèê:üÜó¥çËGÝ×9EYl––@›$ †´V(›BW#Û‰Mðp–öªÎ´,#nv.“ys.¢±êÙæ©afsün¨IÍèxæPYH‡ôÁ·ÑÝ»\?gfvÃå'°.‡äötŽhäªîâiI%rÕ ½f°Ìü%>£@P~õ6Sö9
-mc†ü,AJ;[ó–GÑÆOê®_T*À¹—"åË—çoÒbЉ¨Æ8†IçÄF{¡&ë@:Ÿ¬à_Ûü]­ÓŸMd‹fˆ3_œ®íK WEBÄ%àcCÖjé0ý@`9}̧dçd!Ì<@ò/ªÿßoˆ+ÄΤâæ¥Ð&©l¿¥DFò?“xƒùqùcFÿ8Á‚' IÓ~¡,¨BÚ½¶)6ž2˜SÌS }ƒœ®n‰£•Ž%øè&\<“¨L|Vÿtñ;Ð[îÂ}¤Û$ÅاÌÙ{Pš_.ÂLÇ[€t¢!ªþШs!ÛѽÁɽ!SaèL©:çð}Ò$ŸR43ɵ!ŒêžÆ ÅÛùAuPdeü…W¨´¸:g9Äuç¶*ÎèHF‹?ÆÑê„#3H
-­™¨|vÔˆ“¿-ªí
-EÆ[vZjò ˆ1ÏbísôJK
-BƒáC©ÄywMk˜…yCüÜÄH“L¯å“&©ˆôòz!Pæ´Àb2S‚¡ŠDÝ\ö’´g#íi=:x?
-‹ZŸCçOïadê9G¤ׂ3݈ÕY먢éïÌá
-‹i`O׳!ø|Šï W¥B„„ÍŸQ¡Po¼õ©BPqŒ+Ž›MªÎáX
-œfùx“î‹G2o BÁ…ÐÔ³Bq[²³»¢"ñà|@¤=-cy ¦ÑÏ£l;AŸ×!ŒKVO¶µœ¢ï
-ÍDgýļڔ««v)Ú.Ühj¸^áw ºëP& 䢻2ÍÓ÷t`Ú39‡”£GŸðØC†6ÒäÂœ%´‹Ü!èøFèQ ·ê]ÄL¤D΀mÉsvÇ}1vZnb&‘º)¯‘ÉÅz i 7Égù]JÈ0€M¡ì^Mô…­WbÝG)Ã`{1„ŠU^áˆ$
-kíïh›ÞÐÃÏζHy
-߯¢DÀR’/‘/Z¤D*2
-ðd@ÁŒÞÈyñ„®€ä2Î(24¹.÷ ¿{—ÆY‹$†~D¥£È %¾ÓÔÞ.h4ßQƽ”žz ‚jôÔÎA¸U%bÆŒ¢
-•a£ šœÂ=È%pùùæ_Üøv³íL_»”ˆd‡t2¬3É«åà!)ƒL¥ËŒRÕúd9äô% ‚$ÙÞ”ÐãA¤MPG½hJR ëw/y
-£·’—0z-â"ÙП°ª2(œÌ–EBÄ£
-<!û~»Œ,8 ¢@`ñë£0òÍ€ªJ;ýK¤ Dn-ŽRÔnÛŸ¸lBe.#Ád†Æ­ ÐËÚ1ªæΑ¨æHIØçÈcRb#’L_d·!K­géì¢}gr'Þ5Ys‘dYžêÂNLµà—…'ÚÃá'Æ(ON…rx´UgwñŠ
-Æ¿Ø»’RÄ0h;˜YÆ£qŠ&ytì
-ÎÐê‡Äå`GÓ‹R«t‚>ÿÚEàj Ök2¿),µé»JäèÆË! P8Ã"tBO»+ 0UW07Ì6€è€ùb-ÇÓT{Ø7y.è‹Ä1Ûþ£XÒ’.[˜ º+sI4ܼic”šHƒqWæqÖHÁî0/Â6¿°TŽ¼K‡ÊâK؉7A“M« ó†Ö …üEŽ“¸/?Wtí¸ã?Ý›WÐpüþ¬Ç±À(³’oJ@âÒÖ¬±úã¤ç"xP9Q)þÌ)jZqqQS0Þˆ€ú›`ÜÜÈý¸ãçPEe, [’-fiBц¿5ÿ W/ÛÝ”|Ü[b˜ìõ™܃þs–œÚkB9ˆ¨šS“óŠ¢ÿð
-£·á¸]Eu&`±uIÇ'“§¾ryIá²|gP´AB§¥ ºHÒ¢wöW™x‚žÈoiÇ=½«øQÏ+¥hðEÆjñ¿³w?YÏjƒ[·íákë'¿â¸Ñ0½)âÅ™=
-¢Íöw >n¢>@XÁJ±9Dº±+$¸
-tk¶€;K‚Öð@FâpPÌÃs¤>4
-É3ÁK‘·yEŸ
-°ØÙºýk’§À½‡ì5Ô‰@ÃæI4x@„XdýºÅGpŒ ùäøý‘Mµ}?<F)× OiZÍI©ÊîBšèš—HIéÒ®ÅQÊ­‹§¾ŽŸ) Ä”ý¾{º‚¢…+b‡<ñæ] â
-]ÂI©Ÿ“^j$ÚØÖñÆË9®c‰¢+À`Ë@Ô<˜ŠÿMºZC²@Sû×¹™U º_½
-'H´‰ª¬Äÿ¬.8¸Q¤k̦t¸4ÐNBfD“`Z/aN§)ÌÄEpËH,òÃpŠ÷˜ú×iFÀ©à¡1CîZ¡B9Hk$‚Œšºì‰—€X‚R©+FŽûEoÐɆpÎãÄÈC,#ìh >pÐ5÷õøG!0­{?>÷’3òRrpà
-|@=`DµÚ9ŠFªRwŽÅžÀ;¡›-ãI‹ø›Æ”µLèzÓ!mÈGk›=1ùŒ_½±¶°cW†l!éÇÑCòI,}(²ø.ƒ9Þ•¤¬˜û‡wõb7ì$
-[ÒÝ:Aax¯¼KðŸ]²™뢂®Ðš÷Nƒh…1“ûÚ‰KÓnA2lêOghRwÁn!8Ò¢~DK}aBC=µÉ´›—ÊeÁ+*Ф,Kº¶Â¤#Mâþº¢IÙsSWI”8ŸNlÓ
-,ô#*~«)¾áòÃc àž¡áÑ¥¯×‹_Jüâx\ç± v˜Ôð~UQ+Ú©’š‘3š‰œNÛê*ÂWð_YürF ùM%IOoJ*#44 4bmõ’€ÿ°@è°c­G·²>+蟋¸1¯"ÿ^Ö±  f«ãoSö
-:N\dW´ßJ°È(cÜv?8cîU¦½µ}r ÔÄsv;y‡F¨]aÆ­èP„G ºš½¤ñ8¸…¤·’R•f¨€á%ÞzL‹°GÙó:Âa†-k×}1p’I¬ÌÛ­Ðô=*Þ`ž¤‰ÙÁKHºh‡j¦~ÎòØfÀ¿Q£ÄÞÂÊ<k†¼¨ Ôä–Ò}M#aF_ãÎà›%'íc7 |º¸¥Aç"<Û’½3<›*’茮ÜýÃAhr¯­¸”x+L ’òŽë
-Ìâ°€ah>ÍhW @#ù:”hj KI:ß7–¿-M¡K­†ûò bÔEgq*A¹Ma}“
-RvdóP¤Þ„ôˆkomsÞ0Ó¯•½ãÉA E‹«xzfÍœ…Š2¶¶âNrªknÁ‡Àˆ‰¶uÝ芚˜¢Å •¹„qå7­jÒÚb!I%n%ë¥4Ü}áJ²æž‹~Ü%Ydò…øExUQdg¼”ˆ\‚³.rÁ’݆“¸I¢nO[{¨ÀùüÍJpo<™8÷ãy>ÙOÛ
-°PÏæe³¨–¿òûÝÖ¤‰™!OÍú²éÿû`éÆ,BT@{B†‡q|4ùR@ Ÿ§HM `y¦:OóÝô˜¤!•æ^¾=†½ ¨9²´ÀÛ¡Ö¢¾}òTð]†byèOYå3nJØ{b$åå»áã¹È†¨4̪„ëù~,zÆ"Æž+C¼DˉrÊ·tY 4%oÓ%@ôÈ‘ÛÓ¦;á‘—€cú2bD(ÅhGY94þ O`ŒAÅ
-3Ïùn11½ŸZl[ž0ŒÌ£7îoQ}ÛüRk@ùŽ˜£­ºäi’ŽbÊ­n»¥Á»ô‘l8›„¡žy­3 [&¢fogý¶PàÉdá’N!žÐ~âÐfþŽ5OÆäÌß*"Iž”Ù„ìßEBX‘¡"P~´vÉçÁ†=A
-˳*0±n|Z ø†áQÞuId_R•$-\À·
-2ë¦LŠÛ=AÐ^"¯‰fÇFÎQ`ù*?Ò- f.gíd%)“\ã&8å<FÇ{f¿‡%<B"59ðK.íŠ1$lE9¤”“íÿeEç`ª4Æ.bð;pev°Œ½
-Äô#j5YÉ %Úó‘T>—¨™DQª¦½ä›urØÆ´î„QÚë2ÏÙJt+ðN—GÚsLãCœsŸ‹N²$y¸½çEÆP(©rÂ
-H™m³Þ¹!øF3Ìds>~ÌZ>õL:L™ëy¬›·DPDÁKß>Ry'i‹Ñ"²kÄdì~Žʺ,=€Ùœ'ÃêýÄ%ec>­siùõ4èœnuàõuŽh|ãcÉC¯~~gj~l#ž•¤eäUêu½_Ç"ì(œC D%B”è;X£Ôr:úQN%4Ñ&Xœý¨^ ºg7öîóàGÕ
-‡œPRS:¤¦éšQ†½Í&“—0ü'gIýlGO5?™‰„¤›<|h{ÑþàÆsÜ,Ƀ3Qy *q‘SSæ d«ë…%U°n¢îpDU €b{á‚
-`ÂVŽ£½9‘åCÉâe\&¢H ÊÇu„,ú”Üç>M›N³Ê†PIqç°o¥ü È%|¶HGqID÷<¸¡º ˜oD†&:#«…¥65L~æKu—\ææ¦Ù\û¹¶úb85Ç8ý·RZEE­ רƒCÔ}†¯EWS†<H€ÔðÒs|»h¼Ywè5ЬèºÝ7ŠL¿àuQ{—5x¿)M’'Tc)¬¤1²PŒêjÉ ‹’‚ÞI%Xluœå•g@/ÆRs7ý½)+òþ-†åa^X°E€T˜Â±gÇ2‰ø€Í¬„†±êÇ
-Ÿ+|ãY¤äãf•‰€G¤ÞØ%ŸÓõ V‚™ä`AQ|p,zð´þÀÓGTad9b ú­bð>‰¢å8^¼ÝLÎâ͘v4°ò~¤¢ß[=¯c9‹?
-EëÈ2¥: ,?!&ßì¼¢`J ´àšadòfr^„²+`Yüè«J
-Œž©‡½ÿ>—Œ|†^F¢Ø€-…’d|î=Ñ·ýõã¶:K?bRþí `üîÇ}+èM¢Éºyi³yh›aÎΤ•–Òž–·¼DA0Uã
-]Ú^ÏX «u÷L¶!ßjû
-UðŸüÓ÷.³AžñSÛÁ‹G놽Ó.æò+/nࢼ¿ÂnŠo”ÑY¯NÄÆF“³RÔ }‚9?¨/‹®Ó
-¯}ËpŒ„©âëL¸¶12ÆX¸µÝÊ,•ñ¨…¶'C©=|&É„) À%Û0£Øã’
-¬ŠháDç]C‹ºb×¢’˜“µ§3äTš§jç\×¢Â*ƒÐ‰XÖ+ËSÜÁÍ׺2Þ)^ö±’sªo‡zé´«ƒ–ê¼
-ú%ä®3e3¡ õá;Ó@¿bTþjA€ £F–Ê<ÊO™h?|`^Ì~[¿š¶B^šípuVàÞòñÎ;fÒÔRl>„|ÁÕ_¢Z°Rkˆ<ßœ;ç›\7Õjô;¯©e>°67`B%°U´q\Û)â€tCc’i)|Pèê Ý Õ¡ƒŒJ÷¤­*‰üºÐ‹›,)°êœgƒ2Ô\j{Âw+*Ø€ÆAV
-¡ÇY{Ѧ?mâ4ßï¦ê|GdH &ɧ95|Æ.zIHP¥¯CM&= â»5
-9GUÀ§K|ê|úŽ‘x:ãoÍCÄTL)#UvHn­¬*‡ÕC
-®ž“ŽïA¶÷]›S’¿·,‚¶è©ÍììF½
-õ÷2+^-D™àñš ã¹H̉a”éNú#É·T,¨¿0Ï›ÁõxÌßKN3¥YA'BÖܵM²ìä¬Ý̤†a=0%g쉣O&Úð°‚êåL ©‡.£ ôó;óµ—KÎ+©h&Âê2¥Š‘tÝki ­tŒ ½ÅÈë ‚þ
-‚´Í¢½K:Y¼ô什Ç|~çFºxþù'¡H â0Ô$%;rÀô8™ÿö壠/(¥~i@#ƒ~1ä°£±~Ñr*ùÁCPUæ'èÙ:ÓU† å‘E‹àÆØ/ä½DèôcQgÉÍ(>!c<"‹öW¢ƒ„‡©åh~G–)<g±æÎ U&FpmÚîF¡¾T ´»Á¢ úõã´]UÅ~Ìf{?lÛ ƒfÂÈ:~Þo|·±ÛË#;Ü „e‡µ?}‡²ð„”\éóžE®ÃK´åaÌüÊ—‹-f\“Rî“h
-Dj¯Bc ‰´xµèîÖJ$TÒÛD[©‚Ò€SÜ}Z`M>ÌOúM«ã“w¼kð&ìÌy^7N!ÝÃ;þkЦ%ƒîÈ}Û•‡kåaÜ÷ó¢rßÜ]¸á¼­¦Qön5®j€AÂll¼¶ëæhפ‹ÓfçTdÆr)×l¨hYMtA¤„¨2E›`_`Kg'g£lé1.,öÖ Wx›{7¿½*ny¬ÎrÆ°±ùz¤ Ûx dGj9¨½ ‹ñ1‹Äü ™We•ÃªÎ¤²£PLŠÄÜùÒR +¥ÅÏ—€;ÐÇ\§Ô@\›±!€Ýx¸¼>ÍS‹ÂµØaAÈ©ÈÁÄCÄä(üNc*×[2rʨ0«œ³}aÒ<æy” —)Ç5…‚Ë.gµj.c"^Å:öw?Í$iuÅd?+BŠzúý>6µ¡
-p‰BŠf¥…È«óLÒŠQ„öt•ŽB¾pHÙùr<°ÑÐ)ô–—ýTˆÜœSáæ<Ãï)Åü(D²HV@ò‚×JsoAQ»‡ZGâÓCÇÝ‚öqHi‚;`¾+A Ô¬äÿÔbÊÆ›œíbBUt±‡¦éåâ¾ì'òþÐÓ)W‚Š8½áAžCv#FYcÈOÔK0J9Kqi—÷ó.8cŸ¤fBþ(!æ<‚¿Oò öÉŠŒÙÃw`ÃÙùŒÓoŒgòôNþûϸÝLÇ$‚>u#á-(,£?Ûæ0VÓ‡™½iø•5ñ(¤aÇܯô5æó;Sª¹Æ,iΚàÆ©h':ˆx Coóæ(¨Ñ  RÃì°g6þíÃCj«dž,ñŽÿ3^îHzA>ÁÞA6ÆF¿&!L¹œ@·2¹?_VW/šz@DBKîtwUVf–l
-E[gˆÑ
-Š
-¶ª–!£»4Q·›û6°™…óm!èÁÓ‘óüQ¦'Ñ\#ˆ¦ýiÊ¢\Ž®ĽØnrŒì*”ø
-ü½BŸFçˆy£Ów*‹É"Êàóɳ
- `±øD°H^1èá ®†?—€Ï-Zô¸4é? ßþ´’ñ¨ÜÚ0–ê³MqaÚ-zBœ€sq¢HD“ì¹ô*\´ ·¶› +UMi× 2˜v²ªT?èš…‹Ñ¹Ùý;×ᔣ#ø8„9†ÜB5ª¯¤;[Ý&s 3UCT”Ú–Y]%ç/^”ëSà ìYd-VçÏàXÊ—-Ñ~9È[ÐÐ T
-‹ƒû18D9… 0r]øe¢´/°¾zÂ/Hv‘v¥°ìŒ¦´©ÄV÷QT'ç.Šàf« °¶ø…#öB³&›å§Çð³ÑDžéÌåÙmúˆ
-©(]¶™:AJ /G>L$ ú‚Ää˜Äz
-öÍØè]ÔTÚÿôŸd
-~ÉHè…ª²|E2£¹ ê ó²õu
- %|#E÷A˜²¢Éã
-“íƒ^\¡A NÅ…¦î¨  ¸%j$잉X_NˆÄPUeÞË#Pnè
-—}lm‹
-ÉÓ«ÈTÂ~¢:59ÕÏÛu9¶§s^[î¼æ>:îWÝ&Ð)Ž7ë·{—Vý÷ÎÎ(o[/1Ÿìâ£×ú/„+!ð6È|J:‚L—½ÆŽRƒâæØ ¥‹¤'ìÅ®4Òïòçñýò
-èÐCÆÛOm;¯Y5b­Š~ïòÖ/öÛkûaãmÂ0$CåîÙxfT1T@i×S*þ
-æ“€4­þ°LÑú5<0娸šÊdè*™ ¼+µ„»]ì1‹ÂÔdçpœ=°¼;'M–µn¸±X<ü†©oÅÿ#VLa)¶Åæ¥ëŸÈD ·Ö°›Ú8»+óf¾ëe~’ ÖìfóÅ¡#£|›™G z5µºK<dá1íœv9ƹ˸·ÅÜË3§#ñ‰òæll$²,?ÿçù›*U3ÑjÖ1-6œ*R¡!%ïS–
-ÅSƒ×ÔàHhKSÑ.Å…†¨UÇìÙ9…h;fÝJ„ìcIÐ÷zAŽ•ƒ³i5)
-DGµ +” ƒÔìm> ýtYQJÜÅ\fƯVÅ¢Ð=Ⱥ‡Ùg6&.?ÃÐ%"ìÜÞDã X׌öÿ>š`ˆ\`œ(ù™F÷È¡X“²Ê»6†\“®xÂ˲r©j•JçLTƒè®•#ûá
-~'?,hBùØz¼*öÚK0…¥ +è ÷ iŠ•0’`5
-Tøƒsá×ebod^èž#êŸj„EØÙMgâ`yDcj«Ž ÂÑ á ¶º>lФ<»wN1µƒš£e¿K²™îT
-{Ú‚ ùôY¦?.ê Χ@xÅfÝ¿ƒŽûûKƈ(½¶ñÍ=?‚ìºÞR’5éq•ðaÚÆ€<˜tA:vyÈD´Í»ÔÌJUCí\§ÈéÛVÓ]܃”õ$3UE<`ûöÄŽI”ÃKR)·@¨ "Ë6Öj„­Ì¼·E²®‚m˜
-¿¯z=gà`˜/˜ƒáØÆÃÏñ¸ÚºAht‡³ˆu;Oœ]O|€&Õ®bS|g’ÛŸŽg@Ä”ë¤Âǵ#ü ¢¡Q1Ö r™¹æA^¾ùóë¹Mï–”2ö¦?MÆtlàç;kº¶¹™ 2è0ÍZú&Î.KÛeÒ©Gì:ⶠÀLÏ ‚«ÍÈÄÛ‚`ÔúÀ‘á¯6»L5+€‘åüÏ®R‹‹H£×½¨AÔŽôaV“SG§_Øâ\7k°…¨«Y2Hi$$u¢Ôd]ÅE4)ÊŒ‡s4)˜×:êL¯QvS©¾áñ«¹¶ìÿCm¨1
-ŒÙÁüõ1©fæ‚‘b¬ÔJ$²ã]k·_ a&5:0È¿U½)ÀžÎËü4ùÏbÞ¢‚H€„±¡Lþ®Má9A÷Ls
-C™à@Xõè=V·á„qѸæévêÇ~Ëþ†k4&E•ˆCpŽ>YdžZÁ³[ËÓqëû-\¾ƒ0QÔR–Hâ;4 t`~fÇ2u¤9+@¡Ž êJx†¼Aš.j†–7|Ѐæ@Ŷ=¤^Y±ƒÅËéõ&µ¬u½ƒÔúŠÏ£PPCõé‚î“È‹1_ØÄA½úÊ_™³C}Ö—³–òP±êHåZ‹ûDߥ’6 ¤J•y“ø]âœÎŸR©!€lC÷Ïéˆ;m‘X¤º!ŒNʲ£qfƒ¬àê„È„]™0£ «™íªÎ®³Ð<KV†@ûÈNµ_ËEŒd%äLÖU=âxö/iépŸ6ey2CG²"çv[v5ÞÑ{ì…üè0 }€4aìGRØŽÕ±• ­Éc‡ËJ²f4”UËsñå'BF˜;È`À BúØsÇŽ¤„í²ýQŽ
-õD"¬ë1Á–3ˆX÷Òðû“ÕÆkÖi¢æ¡Û=²£ANäY[iç0Á¦;߉ˆÓQèo!¨'sŽ¥K›+¢ù;þ̱{,‚ÖŠª³2ÄDfe¨Š‡³ž3|´““™]š
-×zÔCÂ<hk +÷ÍŸÁö3Uÿg¼Ì‘#»±(ºî¶ æÁT°Ír{Œö’fï_ç>
-%bL sãFÌxehÅ¥MÇ~­ñK¨B€öéNÕ î|d$&Áœ$ÉH¢ÚP "w‚¬ÃÍa»óÎÁ|(~¶$pyÄ£(!ÿÔ1^]¶ïöÊŠj“£âYÇü8¯ÅÏšcX¿XÎS&Q*„ôJnÄ
-…ˆ°k‹_[4¦¿EÀk›È™+tMA#£I! ¤#çë^fSmÌÚ9NÁ2£µx&²8 :Î ߌö.þ—>ÎHËÝsH0òÐvıÞåȹLФ£¥²´)/*B£$ÖÚïh úTZ“¹=a)
-7ÜÓº’¦”¹T÷2kö(Þƒåçåyï3Ë/2ó’Ç~yR2›"“´713õI“VäF© †€%TØØK!µÊèÓŽ¶Šœ¢ÔÞô«øòŠÆNtåÙ1÷w/s?9î£'Ð)Ž7ì%ö w­úzei´_aïÝLÚö.9ç}» ñ1ʦÐf.HN¼^|žË!+Ïü!|jÈr |ÅÑÜ}uÌLWºëÑ‘\µƒ
-ÕàûrÂHF8–Ø`öéHáÜædËngA®{qÓn<6š¾?õ‡å\Ž7ˈŸZ…'¡ø66ôWJrÕD›•hV?q²È“¤R2H×Ò(%œ˜Ç OZ4ÈqëÚÄNòZš=bø%¸¯@‡²c@d@Üë™BæåRë6úc‘c+qËq)èª8'¥5ò売[( LW†º-1#JL‰»c#AVÄÌQ§¼`*Gdsõì>„ Qa•Ûv•™’©oU­ízú ò6àÒGbkFS[c¶w1í*!•˜Þ<û ½Œ|¢‘FèÊOÎQ>Ój%ùÞ½L7f4iYºAì5(4[°·ËÌ,‡ ±¬EŽl»q296cN5†OO™^
-'؃*iÜ#ŸAÀ¥UŽö
-±‘§È(8ä’¬Ÿæwš»¹˜ÁÀAžõŠï× ç2(²‡óðKžZ5¾/ UÑÖN<ñ~mƒ#$ít‰åÃgTÈ&§áëš–.˜|»§¼oƒÐÀNˆæžQl â©îÊø¹0§-oËè'¡P…ز–. ³b£ÁÆbÇûuñ.ðóíºÂ^J(“P»ÞÙw#ÈC‚4ë¸"׉0wöêÊK^L´³ãòŒ£m™Eõè?¤>vNaô“²LäúÁk7_™”ÝzŸ¸ËvŠüpƒCÚÃ~€83š ã„ÝçßkFkï³1e掩‚ºÀ¡›sJÄŽ ÉÐоOë,Nô~ñ@C2JàËíø7¦„ÑlDr¨ÂâY™íP­ŸYÆô‹O ú›²06•Å¦Ѿ¥Wlœ-o®`’ðy´;ç¹^Ž£‡lùQP}©ðGôá sžùHç図£œ£ºÖÃïÛàŠÞÄóýë¿Øå¿ÿ÷ö×ÿß°nx\¾a_ÏŽt¿1§øˬBpÞ<ÌqqI‰,žÂZÏ ÝðAUyê@¡A§q!%\{Psa`ü!#Û*/Çm³I¦û]ض@”ÉÔ"Û1²—ÜY±(d¨<4ºƒøzãm.¢¤’žÓÔjÊbn"“ eg –ѹÐ؇¼!ð);ߥÜÔÜ17‘àX¤^XÌ_Âj“&Aš×7Pb’°ƒAî¶.™òyÿžô;ÈÞÎòP?Ò
-Ø ¿Æ/ÄÅ 3/‚¦³»4¡ÉEþºÕ~#&NmhÜ_’-VäQ€±>ÀšP†Üò†+©K „;ðÎXåÛ„bNq™¾få¤æ^­¯Ge
-†é¤n»<AÉ«!F}:`8•’ÎÕÝ^zYQÖì£ãoyo8±Šâ'!cWàZí ".,[™j’‰&E¯ö=‚.Ì`¤çSjC “¶ 7¶¹qpl0ÿUŠ!¨h•Rü¦Q¸°HD‰kµ¯ óH¤ÑŠ8­D¤Ò ¸ÉÜóþAn±I3Æ*ÃÜŸu„;-*—miˆU¶.Y¬B¼Ÿo‰J>Þ„™Ž°(“Öß­†¤?Ê(²-Ž¥°VˆV™jô·&µ¥\&z ë;’É:Àdá@`"[b â‚°Ü°nfã#²V2£ùÂøhÊâû€Bp¼@ê5m§8Šþ†‚`[lÒAæJyN—5FY¶^kE©çŽP2²BŒÅ-¤*‚ñ²‰¿t º:­”÷¦âÙ=§|ˆ*0ågwèáv
--ºsÞ· âæ0ñ‡ Õîä+C“ÉÞE*ÒG¨•MèÁ2¡Œyz´®Þ010 ‰dºD1 ÌÇL=øÔqí¼CAŒ*4$¤÷r îÜ—Q¼Ë”I#2
-e»´úe,ŽmAg‰B? ‡ÚT 6$ÓêWø
-yèÔ盺ëü͉Š0\VÍï×›W“#bÅ”—›ÉEë h€Ý5¾/ @\âHHy¿vÁ<Gk@ ½Nˆñ¸òâ-—s£•¡œÌGËQÜûË0¡jŠ‹›õÉ›’¹-†s pÑ­Í㾬Ó(h?؈5*Õ9ÙôÁ?ö©?.çrHK†/—pÅaX‚,!Ì "súí‚—@A0€Ö¬mÉ^=Pæ/÷s/€¬N.fZK·iõ@ð¶·#n5¿‚ñ\}žô×+"D+[4ˆüÆ$âö)øwÉiƒ´v¹#ž­)õô¼‘‘AñÈnq“ôh¥ædCÇX±¬ë2Ðã*
-Hd}Š‰Ç…p©žSysÜ£þÈ ƒÅ -ò¨”œ ¾y þ†MÐâ¢|q¹ÈŠ“ÕäZöú8˜k½4÷é— £¤&XO65¬úÌ’‡2…wŽ
-„€ÚLN!µñ(¢UO#«ÉÄêøžÏ·+È›ÁÂFÕik|ãlÅõc/6Õø ȶ¾ Eäxt8úβõ5Š#"mô-$â$! ®OÇ­öP‚À21!bTø^±rApfdòd&=)¡œœ4Ðí ¨SÅK”¹šèÚ£È2sL&[o÷R/
-©µçƒÊpÚ˜µQXŒfßSÖX‚ÉÓpfe½Jw6âpQ5Vˆ¬yÎh@2+D6¶9øç¬2./‘Ñúœû6Q쪲'º0lqÀ­[{& ’¡ËûTû`'¹¥ä¢ƒ!˜¦ŠëhÉÎIYÈ?Œ—¹y^9 E+Pª@I€[¬ ÝŤrÿéœË%°þ‘3K†I
-‹†‚$:ôº1ÄaçŽÛ÷]2xE›˜ñE8
-= ƒéù˜ƒ&É€”‹¾[ŒÈ E„Ú|GN2%8ÅQר  3į´€–×4“f Hù8Þ¹f‡•exÌùâ;@­,ì¹å·q¼R‹k#~û;±×,Žñ(ÒÁ®ïýãA³HÄÀÉBꨪãuÊ,§¤ÐÉ ÌãøÜ@²Ê\~¾ÅE’}ÜãäKKEEâÜe †: ՔƲÍC&ø:š0H»cßØLÊæ¯iÒV;8¨¨Ú}89"L;Ò‘Dwp¼k‰Õ>Nžbô+ÀEV†–æ}ýr®ÊÞ»€mÑù„ïI²¾¸h Ƶ;ŠP[²‚j†
-96Ÿ>‹„?bT 9>•ÔÆ¥«Vü9tŠ²à:/ðçôöâ’ÉfŒ?7Œ³š4G‡'ÿ&!‚Ãð#ÝA€8
-ÀPu‚ ¿S?²ËÔ»–ã
-ˆOU=L¶K–}Ã 1«û(„G°'mÛÉ
-‚1TÎõë
-–°ó<+¯ït${ËQý”ð`®øe§dr3hºv?„Ãj×É…Ä
-H"íD’ÁÃ{ÁNmQ-$€æ&Ñ
-‹¾S*ObÁ[;®·"s’í=æÑâ,x½bí šßžxÖ´P”+˜%ƒ®ºüëå”BIAnhÉáoÅÙ"ò2Û#Mp.™„0C€àªèŽŒ…p%g곑àÛ”<üNÝ 'ç¹ ÆÒ6˜að#JºK0uŒHZçã<Ü%‘ ÈõŽ©Íp+sB„äºËáÒÄÕå*°5e9üô‰",HΤ¿ë0ä„›7±Ø!6±)äh«ö¢2oèÂ
-Ãì¬m¬ç¨Vç—6Ì;Ùî&¡/kìäNøá]u9¹°ˆ> !‡‹!¢&ûREÕ·C#á’?¦ÒJ–C3…CÇô›è¨ïUaÿxE^rMXšY6¬Ù9IÌÈÚ²¨z=%$@›aç|*ä] K¹u7–û` †=+tŽBï¡ióåWp@\îžÝ›Ìeßq1:ìŃ“Ïè0ãÈac(Ø8­éaw£’?¦tŽzA½lÇŒ÷Ÿ·Qþã&Q™Ñ£ú™¢HØ°ƒ÷¤ï½éÂϨN÷´ÆAƒÉ](jÍäpLVìuø6ëïyîËã&Ͻ ^¬ï·¾DøÖݱ´H]C@8KCŽáüF¿Ï… Õ±LÀˆ9òQàã¸GÑ×ÿÞé?
-H‰Œ—MŽ;„Oà;ô&!R)®ý–s ³jß;%¥ºR7 îê(ý1ì}Ôÿýñ¿òñÏVûeZÌÚ(%L>þÓ"®Ñ¤´hÞEåã÷ÔK¹´6uM›ö éC½zé2|Az‰êcô!â5Ä{ˆÆ°¤„5­böñkn4Ôl°o1תZ#Ú_«„·jÅ{ײÏ2"*_²Þ¬±K<ZÍ›È8@r+»êè ƨìùf^{„™zŒ{â2´T9!V»—ªÃ‡Ô}+‰p×.&íãç'¨Å¸'ó+|þxn•ãÂ-/i=>žNH§
-Ó¹z1xù^¥Û-Ü\²ñ~ÍÖVÏŽAÔ}ˇսÕ_Úê_Ï)—”1à!ÝÓõ缂¦ç8áYü²zCˆú¾‡îÎëË$4ßèÝ´Sä:nÏixÒàò<ï<x¹*á"‘â¹U^ÐPN®xõÑSw±³£W”ËSÑy8zéd'k+¨ÉcSE:ú¸Ž\>W¤¶ŒÅú‡
-<?@ñî¢~qÒìÂWÐÔg[GçÙ ­¥_F™÷š® £5S ›÷
-
-ÃÀéFÈb¤Ó%<ÍÞèõa<ƒÃbØ1îùºÙÒT×Go5úŠX\x)ôë"O²<Nò$ÝáF'ò¾<Ì©^ž÷¯­ôsvUÈr`Pqhðßû<’éýíã
-¼‚NÓÆËfG¡øËy–Læ¤Á”À —ñÓ.¤½Z½Îc“ä`W%TĪfaØòy æy3!óDÏ>CG›|”¯=LjZf;mö->;MÃ3eÝÆϬ™1rù^Áá Ü‹º!îJZšæø¦s²¢ó™Túx3j†ÖNë—Huwe4/óÍZIÓF 4DT}CÍ«e”#÷èó;…õçµ »¤ úÜ»N3L:§²™Ä
-—`àà@b{À4s-' à $Ùo ’9˜—#×LˆÐc*ú|âa+q\ÓužN73#橶`1'(C·˜^Š§"¹—;`£7\Ó§Ü7g^¬5ÇÓ#”AÊ·6ס;€xšðÎÆÈ ùÖ&÷Oü
-j5fàPß ¦ž²‚
-fßCöϹ)ÉÅÿ/_ØàJKOÙÜ{ÃíæIb¤°õ¶!¾fÆk¾—ôz!Oeúõ&V¿ëwŒ FÞ Yó>Ü ¾9H©41ÐO…`RHþ(Î.j™•B<ìÓÉ4Ãp¦èéÏúô\Bœæ.ÇËžõ‡4"MI
-‰—¹ºñZvG}hÓ‚ Ë.zŽî)bò>…’å“qž?…5•!‚
-Îtó"¶<Ô{p¹‰nf 9frÞ`G7¿×—:ýõÃzªûà 2R√^¿X€-Ý ´²u:/—u%4ÍK<kî—?'PA|.¢3(àáç*(Bèç°®2IW•| ðË9…¶J~©S_é}
-Ý á ²ÌLº{QÖT³ù¢I(“›™×YYé¥LYܺbeâÓ¦¶þÚW}1˜‹`? «›áò亡I ¹Ûø&RXØͪüèÖc^A 2\{”\|´Ôcj7ÄBf1ÛŠF¸cò6jh{m‡}!¾P“‘vî &J4‹R -$—¿Y„úM jœA4–í–þã8HA4 ì0n‚ø$éê(¤’h'á+ŸE‰7@NšrŽ’œr4?ú²¼j‚?þFËÿüçÇÿþ(“ÎG^9¥
-a—”ÐúÌ_¥° bšð²DNê
-MšZÄ°¢©"âóPëêëD£K²X5’…Ìk‚ºsqB~ÙU°wóÐüs@ ›®ü|Ÿƒò ò€ï""Œ=håÚT.]Ã)€u˜×¯¦ªæ”ص»þ½yÕÓmeË4Bs·Û÷ë'™=`}h±á¨*<% ¨OËõìÌ#a€gyX¢ùsdh
-z³çUªE£êØã…¬Z°EŠ6¸;zXnÁ¶‰Œ"º5yÄítØ•¸¿nÃOâº@wÖ
-è¶b&’ÊS‹u§%+#•®m”² ²±ìG[ÿdÙCXM–Ý·™ÑÓä®äÍeùû‚­µ*D‡ªV~éÍ$…­ídÈ?°&©_ºÖ¹O'‡æ’—È„/¼èˆP|òRSh- ªŒ{®€ÃÒ
-?ÈF„'ÑH;:¨ÝmC û
-ÐCe˜oø
-tÀÔñ£](Ò"d­-+D™å¯u·'çÁH¸$w«k^c±4 Íx¸1‚Y‰å~Lv…‚Á4ñsku‘iò&ú©­9fX_r¹l ¢*`W/ûsœ ÿÛêã;Þû›K 
- á6­­MïeÌ?,ˆ!¦…aLÊéjA¶ÄU!ÈûìW*Y!]cTúy˜{U ‘
-›éE¦¯¡]eì«`[`€§pvBÍÕ¤±[!ü7ßÖ*+ëŠ`¬ØÈPž±}†DrFÔ6š,“õMíÂU]“è½ßIâצ6²tÄÞG®SI­6âÿ0Bƒ¸ò6µ \ ‡ @ÂNÚšEð`Þ„Œ™výe…À~E
-Ãâ7èµùb+*hÝÚ)+d¸Œ0®—Ç&©§h¡:Z¶æâµ¥‘dT‡ôI–ך†Â¾cTW}¯…wTœcÁ¹¸­ønPA4ÖÛ.~ÍåøôÍTàÙÙBPº ŸAö²Ô$"h¥²
-²…ôê¹÷‡¥iK‘- ®Å_ƒÀ¬· ÂÍð#ÌñîÜöóøΉ'øóXZÑi âÜÌhÄ¥A×."„"É CÎÇPžqŠĺH¿Ø§HÂyìÀhm³ H¦ ]u5ÉF·*Û£'&!DãÄšŸŒ"ÁÖÑÒ±¾f0Y¹EËžeRƒÑmié ?b¶Y´ì:1ÃBHs°^”º?‡T±ú0 ¦šËãÛrfÈÉ ¬• "d}‡Î©»„ûå#bIø¦&aÕ«¨~œ›d·Ê1xBÑ–âu«[ͧ]¤= øÐ`ÐÔî9
-›2V× ÊûùxƇ=
-ëê
-‹Av¨±dô <¿VÙNăvŽ’‹P°+ä]*
-›ÂÉñs—Ûf~Õ†y-ÃÕ³/åô¼_]‘ƒ:ŸSÒ¼9‡®¢GQÙÖ6f¨ÓðkÞ°;.™–m§@ž Ð
-e&°×æ¾
-ëË$U·?¹u^AŠi¥²„
-X'M*ÈZPÒóÿ²­d¾0½œÉfDÑõ±Bffhæ¾¹åÑ€½´!”¼‘NYƒ¬H6ɉŽQJèe.õ#
-ˆ@*‹FÐD§ª{ó™DÁTª¼ð²qÞðë`ðnï†AJ»H7©Cž^ä%ø±žGAÇV‘—/ž Zůï~Aœw?–/<æ± ö-Íg|ó4Óø‹•™´GtÖøy(Œ«Øª#Heç¹EÕºêñ¦¤È}¸WýóËT&yºI>©¤„äÞic8Ɔ\>Bô‚’*°ç³ìþ­E»ÌKñ~ÜŠL„‰‘cä[û¥UžElàucø—c3I/læã
-òœ]F"™Pl*ˆä@u†BªŒHgPz®4û´ÏÆ„Ûñ+<‡x3O¾mš¡=ˆ¦ùÁfÄ#ÿ&¹ a`¤!ãk˜(™pWCpØÏ•?‰/ú"V–ÜÁIõNÖel Hw ³bßÚÊV÷:˜á)LÇ™|1›H¢X¡G}îEèué)#‡Œ#)Šo6{Î*ȵ_¯›™U| ];–R<Œ|¡?j£©—
-·ø„‰T*îCúãÂC$e¡o{Ôó¸›×Ũ\C&^›¡üõ•Ý²l76•Ç,!N¹ÜAœ*“¹
-eý8 %­V'Šï Æ÷vQÓÄåªaC“ä€!!¶“]8šDA…ÍÙ#”6úô& Þ…¡QÕÓ¨[ŠÁ2–ž£œÁ6‘â.Áf¤ÈÇ0qs8Ýq¶ w‘èhwž0á4K]‰<þù« Ð¬¾‚ iÊ…¥œ¨ã°úðâ‹ao–ó8´O5°ö8uƒh\pG,q¾lølV1Øzi“Ê%²éA+^Ô‰D€å›¢L|x¬rê:ˆÈ´”r$…‚ ˜r‚,ñÑ!Sg˜«‚Å‚þp~ë·¢'%S0ùsUß3Ëåç°8sËX0‡vN…œ¨ë[÷ Ì>L»ô}6íì-/'‹´«•[t]àXÿÇ·WPÔõÁѬ/5§€¥}ô²ï_YÓŸ×GŽ!«Ä¼(®Ü¡ÅfÃdÜM´P°¬ ƒW@‚tîSLªüÇ!”nXŽ”ðó¤Ã×Ý2 6o<~
-_ûfP HÒ+ÍÞÖŽJSpKdMÁü+"°uyÄîEí˜xÜ>µÍá9ý\…Õ,¿!J„DùØeÂ2щq:„™ 
-MŠ^ýª$=•x{²|òmm4¢m—sç“™Ö„WOÆn}Q8 ë»*©ãb÷iy…¯
-yt—ö]ü425åõçáQåXÓ±¾ÛÈ–ú 6¸"ß
-¹8ü¿÷Ef…ɸðÃrF3Œs‚纫7J"%`}¦™
-ŒÓqD©*HŸUñí¼UÆáÅ-- DÌ…¥éÜÔ© uÊLÉ8&cS[Ø…7·zÈq¢ ®È7”ÊŒ°f~æ®dH¶úUøó-ê­ªòQÏL¡]0#rðâG•§'[æ0 h€ e¦q½G m
-v^Á6£NþÅô}e¥}Hˆp)RrÆ0ªX«î41ß7ˆ'³Ç‚HÄ«²U>åxŽ@a®‘Ù#Ëa~îÔ@ |3>œ%1Ç%™Z¸¸ûþ?cPF¿z´rt
-×E7åt¯"6é¦HžD3…L@sÙ5hȉ‘ù“ëªÐß•õý+ò{Òf¶ÈÆU¦)páô.EJäô5- 'ç6ˆóà.4AIòÝ@gRb¨²Êè.“ó-2p™˜b橽=ߤÝ]™NÊO„ÊÓŒÔrG`WšYþñ-Ñ*Înk‚þ­@Ðk/ƒÔf¦0nµj@Oj Ω$™²ÐfƒlM5¶Þ 51 R5SG«ÒM)š´_vun’Â}Žá`&ÕÄ×”lÇ$˜¹”(”Ñ,@V,UòþsOeÒþøŸöŸÿ~ûãß(=ÖfÄQÎDðE’/³Ãh'ÌhæuˆsvÞ$Ç_ã(CHD
-ybbV½jx¼ù¤Ð·] ·"¯Q¯î¢ŸØG®†Ñífß,<Z{!ÄDÞEý&É\˜í¯_g;aƒZ`«zx΄cðÙ,fO·Y+û«ïá°‹O L@[Ö«'LØr«UÆtÔ¯a¨¬×ÉüŒvïòþ…õ•#|oVbìZ)õÚx9hé?[b)UÃéC$Ü4o-™£IPiC,ŠË“\/µšq+(‡Y¯
-öŸ‡I)p‡ÎX¸½n|Œµ”!hù@•¨Ä–evâ@»1ãr>ÓÖyMi'|
-ï Õ¶Fé‡mGBó´ op@ÍO<a/ËÖáw6¶™Îíèc›,Ø{;d–&ùoÆ·IÌ<ljš5Ù+Èx… @Z»˜ßÓ@Ã2ª0B
-W'"LŒªrÁáUþúY–LývŒÖiòn‘D5
-Ô"©£ýÍ5F¬:¼2¼;D7¿Öù¤]ÖPt †{¯~qЋzŽ)eð´<ö¹:ZW”l4U¶¡5t­ë͸2ÊÏqÖBÉ ?ˆË0«ƒH“V$­ÎjëLŠ^rãݯ샬Àé½Ý›â’0W»ÌŠQY§Ûó:僧«2 ´wY'L~$²• ã)Ö%Ìé4 ÉQÍJR³@ž8ãè{ÂWƒ¥üðW˜'…Ê{»xŽ59ãs9aÚžßáÁ§Sêg¶t?=D:œ(å«‘³šG­Üf” ï$BÉ"s"Õ«“:]ß¹B þãW5Ê—ad\$¿Ö!bP‚*ë3 Õª ƒw°&˜ðlD-j
-×ÖXLë=©äFêŠ ®] ‹ÚᬪkFëPeæ„wG¾Òù݆db& †àÀÎd¯ ¬Ö+j ²w>L¦Ú°|þåi&• g!>‰®þâ!¬ÆI4Ç-jlEŒ@®M
-A à(€­Ã$𱽬`Òcv
-·)§³»ÑÊë¸Ü@ Ž_hµb­ªW°ƒéDÀŽÓrHÝ„¤ æêÓ
-+¹\a Àºä œ|îà–H]Zvì7
-‚O¥<3?@&£‰ò&j6¯­n OEöÓ`áÑü9¯‹Ó$0_G°Võ[µÍmªå|8ñ ô™‡
-\”O„¡¹ë8 š‘E¥KÛ‹°åj:¡,C$œˆÂ¶é¯ÉKmÙÎ]ã8à2LpÊW—Š…ÔýŸufâÄæeÎGR ç4Êd\ŠŸÁJ“w튴Ùo™C2T‚ARÒ8NóCÄ-lÜzÐëFÆòS[Ìõ
-¶{}|åLŠ—éý_ÿ}ûëÜs§a7Cl (ûkÁÛè;ŠÿÿóF)H„U—Çþ4­šÑ¶é³=‹Æè3I,HD9ƒ`ÍÐÃMïm‡Ì¤ÔXŒÃ Rhž„"Èp9d© ÉnZY-¨±xW–.Ú&æ'&Ó×!=`8ñxˤ,£"`4W>L“‰F3°LvˆäG­Âb˶šHâb'é¿y
-@(Ÿmô¦.[ûÀÙ¶`Ë!µò
-íE•©hZP^µ•
-
-ì›±§Ú…JûŸúDf²¬zÐÿ€aKñHÞl¢á_ûº|7^ç²eÓ¤Ÿ×êI0ù=
-3DSùÈ ª
-#ÓÅrnĺ~%O0˜·hC‚1*3ÿÏ+¤`(Gӌùê 1S¯ =çêç0Z]ÍJN}b¦yðnŠ›àD¢Àæ}%ÑwWBÜ7aïe
-©h]Bª0€l”¼…•8“C
-0Qm+ÎÁÇR¤WHV§%Y›ñ,$,‚ææ>ŸÒièw …Ûa¢'ëX{±>qdñF ³ MmYÑé„ŽîRVzS§ø¢yDå¯\]Í܈ù‰«ªêõ6¿èŽ·`$h BïWUfȘx·câ7¢Ê†#®û‚/`3ð!yÀùÿr²Ew©±>õŠß…õ×TMø"òyÅȦcñ*ˆ©Z
-7ÖDýy÷·Xa
-t}ökž¢\È--— wWìè»ä;? IR|,æÄÞ0/+ù ›QX&ä ûÛÛ;¨ÉFáùÔ†¼|>ør*Œ$Vð™rk+‰—ž ü<K|× ×,»‘œ.gR‚4V5B
-ž¼«Þ@¬6¾_™Ö2Ù "Û7ÑëeÚ{E¬‚„Ð×¹§ICùøîn–܉žÃWüÉÎ~
-ΚlÀêæ!?9ôí ‚®TšÅüœ©€[á&Èq½C>²”opäýá& ЗYÆöú^ ¨ÜD«!æ}ýê+ä[énˆ—úß o}¼‚Jë¼'kÃãœ$Á.ôXÞ-“ˆ¦SÚåþZÌgq×b­äÂ_^ ЊL¼¯gL×ÚJóHD,±‚-Äj¦‰™\i¿c¼‡Z$ ‘#XŠ¤Ñ îrÞd5azþçV¥ÅÍÐTË…”ráU™ýæÖB¤ ‰òø¾éfåû<™äP  Gsh”^…W†LÞe)$¦¨CžaŠ^ ~“ñ<ïs\ºPP^
-yôxnSZ‘
-5ã—Lµ ¡#‰çr „,gìß”a·Á ÀªãÿÉeæ–ÌŒSFApÿ´bÄ9–ã°Á K1i¯Nò ¸ä5ÇUÕDrˆÏê:Nå“p¨~NYS&n $¬T‹eŒ¹CºþzÓÈ„ˆs.S›‚ôÅUxk(ß‘KX2ZU<2³ %’Å9ÆÔPx™
-¥<A~3_ÿuƒ¼hÊÝç½ ¾2OmGƃ©9-’!n
-‡¡1€xþ\ˆAòoJfIP*ýa¡aÀë¤u ,‡ð`wªècEЦ%Þ-¼“'³y!’(Î.— …4œä“l€JšnÆ.«TD` f%ÅǘÓPÒÕv ˜Ál"” bh É{š’Y^°;Úí®ª[ø+(ì&D^AÚÕ‡'dÉ 3ß3ÎMIôJÈ >­ßx­ŒýÞvNÂ~ÕqEè!KÎb]…ð±Ã`ÑzÁ
-lþx i2¤ÄÕ¾¤¤µíødv¹ñ°Óaš»:§8ÅCVÁ›)% CÌ6¸Á¯ôi€ÅâóØŒl©¢ýl^ná*¤½Õ#†šuâôC•„w©чxˆsÄjÑËœª a€ú‰u ¼8V>´…cEÙ§šÔ»¹=L"½—º/;Üä ´Všý&Èiª±#wš2Î0
-m<"ÉþIVõ*¤Õ”€9©ØSÑrOøÖÄH
-z
-•ä0.d²Î<ÌÉ]×DôGf‡,á­DÛàÓ|rŽ—Ûj yìAPÏÏïž-ÁKÎKBO-ßz"“a HƒË¼ûªÆ ó÷áÉ#D.å°Öz¹éM:d.Ôy]Bîô8¸à »ïåÉ'ËÑY–ô: ±«(¶¬4òG™ K„v’¸Š>#®£§CÑû‰*
-nF…˜°Òkdáµmýà·H×ÔùœÙ®g4!…w÷:udÆ(=T”ü;„ìuI]þØ£üš"g?œóä-ŒŠ¹$ÿ® °,'@÷nx[’º ~b£K+EãªÎ”v»¦ñË
-ÓøgЛØý´ ^P«ÔPÞšW±beU“øÛG¿
-¯RêÐ}
-rHç?ÈÅæYÜ×ç?”B5 „ˆ®ø‘qwºšŠOµÛ]|³ÞÀŒ!áèå?¨ù¨xç
-ã+’¦hKˆ_”ÔÄ(býD4)s óúD ksVY^†|gç@=Î
-QC ù¦qPˆö@ÖÉg„
-5)¶,‰!ì›'}³”@¤°äT‚ɱãß ~äÁ‹ Ï«í‚î'tVýä»PRRæÜŒái_¼÷@Ӏ؂"Ë9à¡›×ÂÁ˜Á&™m×êéd±šj×Ú Âᯠ1š—8d² ÀD/B ÕÔ–mžv#“ ‘`6pã V•å›k}=*Ió­øÕ…)x=SL%Y•È›t=<)1:")Â5±G|Äj!P@¸ ¼Ê—•M!í°€Ñ³JàÂ!岩5ÇÄkÙ0r­ìg †‘à¯j»yCAD¼í1QÎÞ®³®(a*·G1°;CÏ:~æH,ãWA3”ùÊ:ëýà 5zÌ?cÂÎ]m– h66RýÛ¬Á`~)¾(
-¨P1d™o=:[@æ~Ôu|®\íÝßiÒõÁíÖ!ë‰:­¥çr]¸ˆE;äŠhùˆ§ïðK
-ë¬öâ6[¡Ø)øËW1½[¡%œ×Ú°³\:´|¯ï€¨wXåÕï]Âïx.`Þ{ ëm«L;s:[À”f]O"»!xðQ*ŽÁƒÜ†|@®%ŽÂPÞ#<k
-–¿èR†PçÀ4¥XÆ ¶uuÔTXZ5ëÎÂ*÷Àöh&†«Èâ-NÚÞ™”Ò¦Åwp„¼¢iþœbù›
-å m§ã0”!+©;`ªûü„! @EÅ–\$›áÀ$kò{%Ft.d#ÁŽÙ®Á†9¯‚Ëæºj¨*¦*CÛ3Õ\tä×}RƵ!¢ ñŒBù$fcmKê0Hœ·ó¥¦^ÒÞéá'k<au P@ªt¦3)ÆŸ€:”8ª‹>M‘·ë]b¨tv^U
-q‚V–òO=\8@4k×µ{€øQUÔ½Ôóµ^|'ó¸ºR’ëhu· c½îåC I‡ˆÐÚŠÚ˜<-Sy>Ò®Óôl Æ
-ü…Öy±ÉP™Òzܲ'*læ<Ñdé`yÊ~¼ ŒÛ5²@‚ph]µh˜Â»`!a47wù]Bƒ,¡®²2˜ÌzH_O'®àåÎä0š¬ò’õ£$–IÄ0ZÔx(¼@SLK¿ÒuÝö†Î`“Oúdñd®F£¿Çñ¬DˆÔë¨)UJ2¸ŠHcŒŒÀfŽÍI7HÑj˜ƒíÿñ ìJ½ðÞH¯
-à†DW}ûH³ÌB¬#ß07̃Døaè›´E/AÔ f¥¸8o%eQv (Y
-4—$\b8×ÿ
-cØ­!Þý|BD“ò!2¿½€ˆ´T
-7¡ ^6ã$¶'iÑ¥ˆž”xu=“س?ƒ1/I;†‘HüŠ’5Àt’rr½@~ß“!—Ì®Æ $¶ÞŠ ‚bo@ ß…*)= [uä„4T/÷õ“šZ‘?g#eq×óß|H§’–x-²TdŠ¢8+"È5±2öU;8]Cד8á"C*‘h–²ÔçuÎh3L% `‹0Yv£¸®.³@ %I6PÍÝ/Ë{°×nˆ€@W%ƒ6Çy6zEc˜ÚùÎBûÓ·Fõ³ó‡4¶•µ¸í¶!Ð=w)Ð_¼‰"ñÿ.sØâ$„ƒL)vn$Ǥ
-œ¯©ÀdTPˆº(öyn£Z*6øËNb’Tó àÇ<®ÓÓ7Xjv¤le{ñî€éÂ(¯Eý±x8"\œ“ïHØmÙé5MY²ñS òâ*BŠÇ™*QÚ¶)Õ!\”?ëòÀñ–ªhÿŠ;¦›:
-L"ÀÔw½¡ìïùP´)k«Íïö§puË!Ì)gSÂ|¶ß6÷0BfqeG†c»îîÇf1#y…œw
-ÚƧ9[³!DÜAmhäi*Oæ²ùÈJB#†.ƒ’ϳ×t>MhÛŸ‘÷”»á‚Ý!(½Ò>'Û†ìðÄÿ³|æ3ä/ºë$In\ è t@FÀµú,¥ÿm?'€êR&Ód2U¥"1…‡}«Â à”%K}X'¹÷J­s«;ài
-ýצvýâ_q›Ç;ÖYâ'µò\¶JQ©Ñ>‹•ñÆ$ ©e.Ï{T3*k£G"UJNö%yO_Æyý–?æûÓ`‘$Ì.$|–,K”îeŽ¼&/¿
-¾} ÒÆ"vÀ'€ç… nPé¼#os—¿J¤U5FÆžï‚3þýÖþzÀÛLxZïÿôpdÉËrRpøµQFöÈX.ÇS̸Ñp€ªO²æƒÅ}ÞKI^œ_/Юׇu6C
-1ÐyÍL§IëÖ±¹¹²1à ʈ<r€œäË>·Ú›¹ç²ç,Ê5©'wÔ÷e´#ì-65:ŸBg’߸ڹÑ+Ïlq{Ëu“Uí½’Õ‹®?pÞö+¤(Üä“ó^©3˜"˦Q{ùùLÀöÀ5
-i|(ùÎã¿1þ2—zøÜ­ÏËÁ>Ë Suš—Nù~âæj{(º'œ|¹ ¸v³«ÄÏÀ1lËìÛê‹{7>*Ö5yvÏ9v>®.œ«Œ¢#=n™°x/cP‹Ûq”Ħ0“ZÛY+—ò¬çV÷Q²3º®¿²­“Lâ»í³×ᇮ+†,lÉ>-u-á— z ”ÒN]͘\î|?âI{ QnëX·~«„vw©wŽêE%‘ˆQí^G†oaløØõ––þ¾• ;c1JÜ’¼xJ ”Fý„²ÉKãËÿéEšíÈ$§ CäѨ“CIï§w0èõœ¹ÄƒoIYºÕy‡5›RݹÇÑ“.%]_pNM$E¦eÜÜáü…œ>èw6T ÷ã—¶È-%}¹!JWMRüZ}¯¤Þi•›jnBM’å£s
-…Ì3Ò5N‹£pÌrćvÆÑJ;¡éõšïb~q¿¸Ö'X«ÓþmhXbý$˜=MÞGâ’6¸ƒsPPÃ{„s L¶’¶e!&ëX×'ÆÙï‘óÖð{–É8Å¢öÎÓô"Kê3\×~¥«æù‘[+c'GÏì²ôûñ¡Å#ãýGmï%ŒOøúó"/ùó©ä->­9q-×qÍuš4ºE F(ôÚ”7ÝnÇ#‰*)غ$=^Ó:¾µ{´€ÕÀ}Xç»ýþPñ]?^ê¥èÏ£evf] Q;úÀÅ!­  Ç9@Á„uy“è<ZÙ=Óä}è·‘3lÛæ+^d¤*ê"wlŸÔg»„ì÷ŠåÎQ²#8.'„Ùyæb€4ÚþP2lÒßÊñ°ŒƒšÛl׸”^‡˜/fª3š9½ÎÝBÃ¥ºT …¹×±‘éaÑe™Iñ¸`r´¾ÓÂ/€5ìã0K˜ ¿Ã_yÔ˜ œ†{ÅsëÔï²ÆƒF׆M‚™ól·åL Ú¸’â
-Œß#%½¿^ŠáÄç,2ðŒÒF`Ëܳ„Qz ô$ƒt–'uV` Ñ*“²LÖ¿ÝQS @ÄH p~±s:㟈ègVµÇ!]\ÏR¶
-n[(´2YÿE^Šþ|*ª ±uêY„§a]éE:?•°ô&ªl#H¦h±.jºÏ‘Ò74¯37—9qÛ¬(²bÆ×å¹BÕ¨Åôs#Á`ÕM¼1Þ¤*ïŸsÈf|•65a¶ñ
-ö9>•D Cß2N©ò^üH
-ÑÄ—.ýê%Û{ŠʶߛÁ³Úužx{”p+WÆw|³&…ð›8ó¼¯þTd*ñj+ú°Š:Èmùï0¯§w® ã­óæ/Eä ö°
-üÇö•Ec/PÞzƒ´` -AÏ5Ž‘**Df8—\‘—™ ã^±*'Ô&Žx¨VÕŒ«§yH¸Øê6XTßxƒÕ
-Tw-‘ès¤­½qdŸWú«ä÷ÿý(?ÿ!VÕ(±d ün=˜ñ‚#çðåçÿ?9 ÔG.׈;‹¥W<æѺ#¸ö[N"Öz‰Q¤M”»n£ÄÀ8–y꬜¢
-nðê015zºg·ë^§ÝÞÝÏ2¶Š7©±0çÞ·j¥Šw¢ìѦÄÿ7Ĩrn…]5ß<×Yb YmG_çˆYñf"ÒôKñ‘PFuë]rõu̶°T·e1î´¯s4gÔ¡¹_j#ðCÕÖqï=lV%Ãíì;a&µúÞ³m½‡xeú~ÿx*zO9¶Šó@³ˆá,Àk»~ž/:°Ñ¨Ãÿj5°û´„,óÈ«+2¼íamsdÃJ„ŽÙO76£ÀÚ†EÞ¼i2HK0}—Î5Cvß?”üÒàym£iŒVt]ë|ÿ±®7”ÃËUD4ç¨Á•ÒgŹz¹½ƒ¯Q˜édŽÈžmÍÝy—{êÝÉåðL3LH€¥vˆ{Òûµ/ çQÍú²§«÷:ÖÓv 6’“’˜Ô£`‘¥Ý%Þ2i” >fÉÕB^©­c+\ñ©šeHRˈ`(Œ9ÖÁ’"Ž'Z¿œ`¼yº\^B*Y‰ËHN Ç#Ô0ª9¶râóqJ®WpD–©×‚ªc­¶%bSQ9¬¯^‹Öu‹Ç£»kïCEžž1ü*qŠ’w¿Z.…KøPOÚMò{8øW€
-H‰Œ—AŽ$¶ EOÐw¨u€$R¤Èe`/½Í Œx5^æþy”X »:±mS5¿$ŠüüüŒù\Ë]ÝsÍ°ÇßmÊsMË‘¶3×zH
-=ŽMómØ0WàôáŸýöñð?H#npÝ7I¤ÙŒñ‘‹8g'‡CÅ–ûÅI} ¶Q-ïŠ"ኹß׵ƒ<S&£s¨UR晽*ñKÎ –ñ<¶¯sLùSέ(û˜j¦YñûZID^ß^!Þ°÷Ë@væ³3ßvMYh¸UÔ¯ÞÓZFÐg¿nuG?"ZPð‘Vj§5¥¯™Lêe. ÃÝQ‡²t]NX]Á°ÒŒf!jHýŸÕµòr4°u_×ųÎC!ÜXo­í¬µ©@›fÌo¬-4ñ¨ 9;˜êaÌ0®Åí+æ P|<sUf~ƒX°hó_×Ñ—¸á™°K¾9ÅW°•Èà«FÔžjŒ3$ïBЦýûº§d¢\ÿ^»/*ë0j¬Ò-üR6tÕÞh·YÎvRÖòµ¾â¾(, Gï ‰õ*#‰–æÕ¬EF´Ü¨¿¦PÍ5¸¿{ñª°á4Œµ£ KØ“i« õéú¥;ÞêÎCJ†3Äç«+íÔv¬™¯9/0„éÀ‚zW¼ã(ö2&Š[E彘~L§ úÛ£•½Œ “Á×ÖÀRŠ»ÇAãO.ø=H«² ø½êój«XžÓÊy ÁõÖÆ u7äüããoÿüüëãoÿþ@ë™ñÕäåx6‰?o›µÕ ³?ígÖ\ØkШE ÖWh©}ÿ*áq!˜”‘ß9µ.Ⱦ+ ¥Ÿ,|†ü~®ZÕŽµQ—oΙr×£«p²yl¬= ÖÈèý…a©²jâÒþh ixƒÑùÏâKbn6SÁÏt°MÑÚñ1D\rGí³û`¸Ìïü+Ãÿ=èSÔŽ:R—T|ßü8 ©€AU¡OÊÅrDTû>ž¬™|Ö9´!EXË–Ÿj±ÆŒÖÛo ·YŽ²Zøxò¯Ç@žAaئƖ~:}<kÝ”2"ïù…SˆY¾—>7ý_þmçãW µ bŽ1ËrS”Hó†ÈØ2ãÐƳoÒ£|•ó ¨ 4>‘£2ÑZm7ƒÀç [ü-Ûù¿,Ä&zgôû‰œµ áEA˜LÛ.Èê]e’÷:ÇàÂð{¸(;ˈ –¾…Zù…”¿Ó¬1ݪe“}–茔w (Ùì0ëÁ%!OÚ!]nö+æÇMƒ¶„†æY_1¬¶¬?(`I© "ËœÀè¨}_¸;«=™BÌy2s<„BÁdØ9ªT[ ’ïçœ.jeÈð…G¼]žßBò9±«–¨e«¯ú
-Òª$J³‚]æ@jLˆý³NØ™-,¸þ±²Æ<,ï®·TS3ÃaĽÉaåfªÍ®iCÞjˆö½ Ψe[gð¼#ßÿæp‰ôh¶GmtIuìØÝÏúséNÀaem)S¶Ø´Ô¹1jïäµl^È`»É)z!P]Fä^7(Ôz3w½–ŒKv«ùHXaú"h‚Ë-%Û÷"„«¥ o_DNX ¢&z„éU¨Å€ÚoMãV¼ÇyÀûcÎM[ëMÞ¯®†®Aa—¦£l^ߟýèòÎ%±ØÀsþoD…Ëe½Þí¤Š®æУ ä‰.IÙ­˜Þ¨qçôHYºŒŽHé«>ƒ ;Æí-›X| }E”Ýz°ÍPwž~»ól?T\ç•åxr/"ô«ùP?–.ÞÒ-\>¡æP¿ÙaadüãeŽdבCÑp´eTä<˜rËí(Ú+š½ÿ>@RÍÿò‡(j¤P/3ÜI5gƒDÂåÄ#Œ"Là$I[0ÃÐWš—’;/½}¾)¿1 üõ¦HšÀ½‰²½:SBɸ+¸±Åð!` ¢Õi—Àè¹u„lmíqg÷³Ç¹±ë°Œ‡HyŒÆठ×ötÖ§ Ö#Å0k“+nÕY›n[Êki]*|›‚{f¹_?_@¬è=R¼D8JQ\ÛùVI†ûP‚¾1yIæ•ûÈ 8…÷Ž+Âñ0D5™B]‚HnÞšiŠÞqEí'%?Jx^ã&®êΠ̈ÙºÔ|ÝkD·JROÛõ…%Å¿3î¼ãÂ8–Éþó©æVåãJ+ÑÌ,ßrñpvTì²cd÷ðeÉœ+ve3©A^Ò“\»¢^‹Þ˜X¹·§­
-öçXX©ë§ÂËàÖ$3¼põb8I¹ìjššÓÖ¥$Vt1þ=ÝŠŒ±•AøEv:7&gUÑ8úHIÿ
-B)%0å^(øõ’LŠ¸¼š>fýÆÔW™l»,ë_vTB¹s¥¢œ8¶&®Éç–Öäµ×ŠGé
-° ÁËJ›¸!ÆPʹlÊBҒ厫aÞM¶ó Ëä3;çQÖ·Ðt²Éùò¢»uµð¶{´_-ÞèXô³$ûijwŒ à€&úÉž­Ch¿A›'5[~gß—ÓzÜÞãÞ?R¨Ø?%ufñ™{)¹†hûü â:HLeKÑç­¨,@«Lì–»ú¼œöZóõ7ú´{CV³K#q9³^PñË uÅL„k ?äO¸Q‰|£ü0š>böô¶ŠwºR]vþØÔX38ö³uÙY¥÷¹‹)¦)Çöd
-©&Ô¤Ûê$~C<Äìu¬ËF«DAjÄ)­˜)¢)AcëM 1Hò7¥‚?¿ÝŠ°)™/€Z` éR4\ù,&±\Yjº!bxǦTÉ4#/Å_>i—Óx¼„;ÆRœ;š Uâ¢8+¾(5þg[“v >bß9¥Ã?²a6NÞÀ<! ìh)ñÅÁþp‚¹~gˆÊ‰g$WT4nÃx÷†¹I¸VBØeLœTçòŸ¥%•v›à¨ÉSñ*0ãd¾«åï7Ä · $‰Û÷òåúR0–\teÆ»•fý¤—š/¯éZs¬¡øYA¬)ímkà–æÒðÅÐüÂPí¢3Ž)þgÛJ“ÙsjG‹øO„=é§Ã, _¿žw"JŸõs¥ú¤pØf¹çíƒKè(¨‘·¾ ó¥Ä÷†§ ¸%ª×ï4V,þH)¾ÓAÃ
-_æ؈|õ\çñHÓÈ¥OqÛѧ©ºlúƒkp¡}¬9PžYß/ {‘Ä¿~G7%¯ü›ö¯ÿ|ûã¿ß@#çÊE,z½áý‡‘9o¬±²0n@Á³È¨ E¤ìkÏr3øT,Yù¦ˆyXã5(¬ÎŽ¤¢¹H}¯ßPxõ²t]‚ÄðLMË)b³îŸIOðD\f çÚèžò9‰›®Ù•£F>™—y”ËS/S}b SI{:|¸
-&°«;åM †¬(ì Òòa—¢‹Ã¢=[»ií {é8+餰z-âÖ”ÐÈ"©@ èöŠJâtI¦oˆ³ü|º–‡ËyÙZŽZk¯ìB‡‹q¼„‹Š¡
-º¯€ÊQ#zÖ¤ ËÍÄÈAµÝEA¡Ÿ ÔŠ°Eú³qƒ‡ã&ŽC`að¤Òáè]FQ T¶Ò{±§ s·tîŽ\ Úµ®¤Ì$ÅÇè¼Sß;{5ál\ÙòõüN&×&–D.°¥ÁO¤°#bV²¥h˜Ý‘˜>á†Þ¨DGö[A 90ŽâîâûY»my1 Ôû}Z̤ÉMm¤w%ˆÞê)A)øî?¿ÝÐòRôõ¦ÓJ$騽K–§ÁìJ¼‹•6t@i›gKôbßJ| ˜À„*c¬7ß™2Ÿ»A§Áƒ¬Q²’M×€>2+€ÖKsü$^á$,Ý8úU
-]Nš¦Mæj[㙶£Œ
-{¡—vÓßt—1ìF„Q‚:½À§ŽCZϨôˆŽ%@AYÀšºöÁ*½°žßvˆÙ5&fi…´ÆÂ<o5Ô¼
-A Ù¬Šf'Ä—˜_~ ×Gä¤ý¥o͸Ä`h()µÐ~[*×ùã¤é|&¡¿Ò¦~xZI¿qµ¬–Ìid1wDt£k ¯*GˆÔ‹‰‰PâêõÊwø0YÎNÈ:
-PèÔ…Ì·›ÏpuCæX¨ûQL²z¤‹ýCÔA—¤ne sÐ ÔUê}Ü1àäJD¬­½˜çÁ^EkѬÀOâýr]£W¨ ÂÄ}ŽÝ…‰ø‡YLrFXøÊ’æ—Ç…
-¹šÀ¯w1Ó8"Tfi÷«—U’Gëàkb-¶—ßž^¿Ãˆ4MƒÞZÚ¹Mˆˆ;%ž+DÍ‘!eCìåeºP;Š-Y“Ç@c(ƒ˜ã¸¾Ã{îlÄzç87…ÛA¬¢ ‹å ¥i½±öQP´ÐêéÅ@„”Ò–D·³˜(ã÷2ç¿"Xõï™:~ÂÏESFrÈû›óßMôñ“uõ‹ÍFºŸô©eÓmŠëS¤FúZ—T~ºAM¸Bž;û§/©T,Òtæ~£QÇ‚
-"' $^ÅRà%À[T£Í;!\É]vŠ`Ë1Èf®¶LlJ5ÿ­f4Ö2 %– ¼¿Ã¢ ×Íko¡¤ÔZ =³C—
-7ê¼
-çŒÓD¤Ñ¤Ž[àÔÉÚǼÂú‘è³i÷Ãm¬í){ø5ÈiÁLJÑ'D–Ù?r¦âzÜ‚^Õïø— 5ôé‰{Զמõì×çMq*> Qi3g†2Ö|†°Fö}‡*"êBœJ­o[1—óKiŽE²ñ©w±ãäVwL ‡Á,û
-£Í3h’–6‡Ñ/êÌÄg‰•B²"ZÚ¶¢Ñ ©¾»8,ˆºØw©‡ç¦hŽÙÐuPÍÉ"föÓ
-ÈŒº®Å-éÀ0Òá¬Ô™;A6å?q[ÚŽ³¹ä>>™Å‰a®ï
-
-ù§)É"ú¼ ¡Y™ÔèçñPù@ô¼)äål…¨#б©t9†ã7G¡ t/M¬ênÿÓFC? ŒBd» ZÆ~%FR‘:’§€F3D¬ØÙI_#tV"Ñ”®º1Š€˜ñ,¤˜Óg!pD¦*%^yAXx®”Åv¾Äv è»8^]í}EAEðª¤×ígOB7¦$6ÔéÃzwåÍ`é³ôYÎà,šºÓ‡æëÔ‘‡Š ÜÄ+ÃÒ¤æËÅ Y¥d躀•»ï¼Vûr›k×8¯ºvßkr®-üš`¯É¿Ôé÷÷Ã"oöT±mø{|tôúµO7ɈSZÏǾD€ òÔŽæaô‹E(½A5ê äYDcëÂús
-?ÞCX¸5› ÅUö³*ñ(KË^ˆÛ/û ¹[‡áúä¥yän½ÜNl§vî·g»Ïh½À:,ÚÂjÚoÊ9°ÙNmõW}’MäC›¥ôDÑYoHâPn*oBå Î²Ì Ó ëþ;[ý w03=ºÂ¡&¹46ýû›ôŸ²¸!S”&ÿf_'•Âa#ïÈ/ÐmD\ïæòì_m³£J”$›àÜØ .ì.Tž—®Ån.c@yYÎá¡Š#‘Wš±Ž TJX釾J’­e>òÊ*ÖŸÂLk­Ëîñ&àša3µ¼ûS¿ˆ —ž±iHõVŸS…Ô²w$ûô¤µïü¡³…dd{ÚG}3™âRñºtXA›ØÜUX úW}À.›ßK ”òƒˆ“2O¾Ä~ã´~çæûÚ? ‚DLˆˆô—Ú÷1S‡•dWbùáÇ;øC“>,¢KÆ@"Ž ·è&«ª‘ákÀXMf÷ž¥:ËœÇ-Õ!Ç'oÕ·Q/a²¡%™L—Á¹Fv-m´C:"(1;„Ö×FâkwBÖQZ6L‰&¥Þ|ÂÃ7
-áÝx-‘sÛƒ,#…˜£­[Èÿ)/“ÜJr$ˆž ï œ‡µjY·È­tÿm?s2ùƒ%5Õ@J&éƒ XúÆ‡à™œ<±>E ¸±—ܵD
-ß*­s¸„Mwnco;s3Ñt†ýò2¤¿<Ð9í…æÈ苇QÉÿt, ÷¹€nœàn× cìRP*)´¬üê|ïkDþ5ш‘eÿ4-"Tl&OÙàlJºôöU ’WE½åiˆóÈ­Ll¨Ã=FŽÜÕ4o…³¦êó$ÞAJ[4IZx³8·jsY&“ACMÕýt_±í>x$Þ-)?Äèc= Áâí
-:9ùìRäA…P´”èËbáA‹’Ì¡6 ’“JŒ^…Ë‹°`(7íìyOÁõšÂÌ®‹v’’ˆ7`·ÙM†C‹©nõ$®tòÛ¦‚±‚T¥§cˆ¹¼ˆQêñ’6ÂÃÍÑú™¼s¦²Bëgþv(Á <û}•†ÞÓíjÞÛΉ]Œå¶MÙ«Ë¥U9!ƒàù¨žOÿþñËÁxýn–’¸+cÅùè¾|Ÿ?Ùеȕáwñ¦Êºkß“®M‹„¯Œ˜)Ií ̲Ôó¶Äü¤Á«ãĶ$O@Wñ;}Ax3@aeëF•ÆðSD—@´@ ^翘‰ vͬ¶\%o㶊z˜vðÚˆÁÌ Ï2Ù0?)wœpuyà)ü{E6¢!ðá=øaíìbÑ­‹¢…Á!#IÉ­®ù«GûC¥ Uã.%ñïÂï5€]çpßD!FNEK”¯âÝj£Ÿ4YÙO¿yåå`­
-T›z/n“n5 ÷V;çÜæ~™sîœ7yó FB)÷”at·
- آnT
-¶–Õ¦!
-œÖ·¢oS]Rb½¹ TžŸaˆ£Ã1½£AµöKIg@pÐz&
-÷œòŽ
-wx'kåömRž3Ñš8²ÛËþÎó˜….\ÜŸºÏOϬdË"­õ©ûdu¼ÞÀH1[™ð‡/L<󇿸^õŸC¬i6íù]­ašF¤Ú ˆY ©·™BŽ6ï'¨¯ÓPè”õþÌLÖ ÂO×Ó‚ XX>ŒüN/ÚÔ–pÚª"ÿà†—Oí{c!:š\Ëåô'­l¬j_ÓiU qmã²O¢eI ‚‰ÕB`øÆp kÚ!´£ª¯hM¡<-êÒ¯O•0 ö¢í{Ú•$‹†rnæ02» C·~Àa0iž¼ôÆt4S7´ÅñÁ ³º,_ÆVïó4CΈ!õÕ(ð»©2gyRØîaϪADTX+Y† )Mª ‘î(`Ïœ A7S@=+p°™”Uˆ6`r ãÄ-ižª²Z:Y5&G¥œdï©>ÕÙ‚2ÚÃ9\rdMDzð@dgrÇLîÑ@¹ô?Zºd‡ GøNå Š×r$•aƒë>‡ÀÆ"Ô´Þ6ÌÅ•*qCʤp¥$ß ]ë0áG¶ ŽguØh£(ýü²{kP±ÉÀTK‘ºô òìmG8‰m×·È›7Œ˜)„SöÇ“ŠÃ¢ìeU9ŠÕRݦY -•vv.›èCÏÉ“ô‹”v}*Àa´ldNâÆð¼I~ÅQas<ÀYv*„ßß"3dPƒ ÞÖl(¿VåÚ¾6M€“¸ ¼áå1‘û‘P[='Õ‰RÔ6,- å¦Cñ)] ÚŸ~íTŠiÀ÷¬ôìÞHX`lUÑ/š}*˄ÈR­Vˆµ“£òšVŸ
-÷Œ¸Ÿ^lj
-‡w¾Hv~š;ÙzL8Ã%£vë,£!&­¦íšÅDP¬ÒÙ
-.Ë0ƒ|~™Õ%]V-Pþ@¢ö@Þé=kËpךD÷œ„oÄ
-ËYûÊúü€!H 2¢ÚG8¸¬·…ä$ly êòŒj’ØÑHÅý)HŸÃºøÒUD”[T½bÁ;X… 08žë­o¯Á¯Z‚÷J‹,iEÿøѶÈî#„2Z£”ª±×
-C—ó¢oþwùÐŒ›9‚÷~P䞆YŸR ÂøðÅQÎÁUYcÚ¸Gc@ùrQ Ù›æ úÅ0LØsdÇþ^C˜‘l>ⵋÃÐÒrà,¢£­ŠS¨ù‚$„„t©èÕ ‚¨Puªã>E6¤ÙKÕŒ×ó
-ÿgk¯ïE½€æe—ôÚýcCÌX4ú:½Çýʰ碓c0ïá_ V‡­5X{èo†Ô†gvmì
-vüdÍi5¸‰“²LíšÁ
-§Æ¶ƒc²Ç(%Ýk>fM=ƒŠ`ï5ªÈ 8§¹”kÐ+ï³@«Éþsź¯Â<¡Þ‰¬ÎÎØk+²EËû.uLÅb¯¢Þ¸.!VŠ…”­MÇ
-?÷ä–ˆL{”+¹,Ñ÷ŠL“49ŒÖæ•9{=äcòÙÔ–’Ôd!"Ɔ§Øó}Æ$MH%€‡õ¤D˜bŠ ÷Ì Ó‡‹PŠµõ>«4¾åø
-è”Ńu“Ì¢ûa_†dfFÚ]~]Ã(=W&
-m±AP1øH±Üòi¬4N’@µ% ôp”cb„¬LWvÖê|³°· w¡tÄÖa78.ɺYâ$«³¤ñiÀ_Õ┬A@ ­
-¸IJ߄š“–°óõ½3AíB67¯Ó¬ Càµq T1ǽ@°:Œs(˵(Ù+aÛ%<€Gš3O;l¨Ôº9EEb\h 4³àQÐ=è0Ô}erÖ€MŽy–ˆ,q ðt¹Ã¿xQ¤®ØÞ¬J{xCi­l»Ã¡ì= Î]@™œmMÃøȅ熖wwè–DMݦ‰»³{œûV€j"&Î>èbÉ„¥Q—˜Cpp&Ml²‚®=:F£êm6 CA¬6@ þ9Èÿ&AàÏçƸ3l!¸˜I#£öẢ9X‡0GÕ°’}Š¶ Ÿt(GÇߪb°ª±
-ræþœEl ù¯*¹œ¹¥§¡èr”ð9=–}êÑ~yõÉÁË°>€¨°†løP³ñpNªAö›íî‡asìÍR `Á“9Áö~ñ«
-¿Ä™ðBž÷a"èæ8ûü/IPA¦`Öî |²1BöÀf‰¼‚ÛG˜y
-¬ «‚Ô¨eŸnžÞtøwàNô’w¯ÂNÛíã øi¹èѼ
-sŸË…xxò&þé5´…LBkòR’ˆç‡º†$¿ŸÒ9W1ÅY‰0>»èĘ}mn™’œcÞ–ŽÅa:ãúÒп‚Ý°é¼Ü‘_Ehs=¹ûç€ã‚8F¨–;·‰½ËÆg G"î°èûUüß”—=n%7„Oðî x͆†nêΤÐ÷÷W$G^Íô`ŸaÀßÖrÈî®êªˆÂ|×MànRjž9æšUqŠ‚+u­}Ìs°æ|™×³lw‰1‰œxåº þNêcuŠÀDÑ-Ì&/_0¿´ýÃCà$¥=€F[ŸA1hÚû;(`Ž¹VUá×£YÛ1°ëaÉÐ#ÁÎÞ&Ê‘.omÛb=ÙpfRœ?¬\g¤îyaG=§ÃHt ¬L,•wϱéÌs+6N'X‘Aíxú5 l3ÚÈ-óεðäOa»#/`úû£t¿Èž‹E­[X”i,Ú«‡_ X)^ø¬+¥hüÐVªþþ 5Åâ4˜‚Báe‰¶s`©¨Üaƒš„€z©~%[TG3Èå_„ xTÃ(›5‡i(sT=”Âä<ÑJ R>&H½sô°PI-©k8D;DŒ3„Ñ\´®Ë£¤ƒ1Ì01ìÂCæ°_@W¢û0l9X’ë“}¬%!:ZÅÅÐL®Ä|0ì³<ÈãR&¶)L»Pv&%W›’+jÓ`N:„€žÂ\UK»‚†pb½:róFã 7@l<ûiö“RÉÆsßTÈû ÆŸf o¿9«K m¸Ó±Ç«¥õôp" ÃÎ)ùk3Â:S:‚¼ûKP3PLxlÇËúË\|óÃÙv©U)BÅ›4»Z_¼Yÿ¾<ß<>xǺþQ
-Ã#= Š™z•)†JUt½Ò ôñ G•I
-©N;ƒ½sr槇¹sa*̓-IÞû€¤¼¦ð™6èòµßc†>&#@ì6 à`°IÔÖctt"¨û¿hÂV|¤£ mBØtÈ8zˆÂnÃ|¿ÂÌ™ïóK¨~Åsè3˹Ê/Dä}C´¦æäl¾¹i«‡ Iºz¨K9õ%9=œ)tÏHÂ5 õƒ;ûQpMçQüÅkƒ.¬dÆÂ5Ì™¾€®)jÞgD6\E_Ò–ºÄ&²V}¿ —6$ÎVÌY”³~]«‹ÐÂIîÂM£¼jŽ«*ÚRqÏ)zE/±y_™Õ@¢ÅÔ6!„R46ilˆºÂ…UjûSÐ ÀjÚ‘Ä”çPüpXç$j‚­ž=ü„9—zÜA¾ éÛÃ9Óž1ùUN#ŽzØƧ@zŸ{tÒ—]'ÌR—LÈ•í…•´`QÊIâ eŠ‹ažÉ yÍÌ-“Á i_(ãê±ÿý ‘:Vccò„ý"¨H¸BÆ@œ~º/ÜFl §Ì80XUKïD‹ö»¸mᙹ Ð^ 6ñ@ŸI¯ìP†LF?›{%b íxòåç«h1ìæ=€%Álß­KzÍâ![ãÝêz_z´>t…X.ØR6®п N™°±at÷M™¥Ðn<6ͯµ„ñ`A£°ëKçòf’
-§sù¥Oo›pX&¬ÚÏîwTûsÍ y¢§FMwvåò¤âò¹3èã™;-­0bmgw!º¼xgþg°ò:ki^=ò“¡|ɽþœ †3㨆U½S9{ÕÓÈ DÑÖnŠ`ú)æÐŒ‰‹7 Àè&Y 8ï¾".¬4¸Èž¦³` F#Q"ûBPgöKËHx \m+–ÚÃðˆį(Åf'Â"ä$¬µKÁC%‹6Ùx(±‡!‘¯Z“7µ ˜\‹F¾¹kåã™þj ~üõ/üýøñÏ=áÆš®I‚åDÖÏ ê§<Ø}ãI{^‰
-2••æ³NbЕX+5ÙÍV=BÜÍ©G$žEVd /‚ fÔpìclC}ðjH£òʵ‹yDèXQj[nŽáþq*mC{‰5ø1!F†£È2´uC(gE&W&Äq{¬âDuguŒp‘Ï·6ˆÞ4ü^í³8Üš09È_LÈ|·¼«be ›s4nôÚˆ•Á¤3´•DkÛuò­E©êQ™ZµiØFµU!%­cXrŒ•ȶæðHˆHuZšOŸ:fq«`¡ÞT‚Å]ò.³Åõû²t¨-y†XE|È|.Œ»Ñâœ3Ûò»búñ̸‹ úžb‰òcÞ™5!|®3ÝŸÿau•’”lÉ Ûü`‘e¬8Rt¹F$~}45¤nm³¢¹LJR ‚N¡þq,û±…Ž&`g!/ «´QO|7ë,±òÒ³¯Ú¸ ¬iT_ý&ˆƒpAü\vK…•‰BG…êœzÔ6÷ý9–-/ZcÖæóU
-º_˜ê¶ jø’*ÌU3à¨$Á±ò>;F;K&ÖõâÍ9rFH(jÔò†pùÈ/1p¿9–j‘3A‹<²4ÒþÔo&Hƒf/µWy>
-ÓfU¬M’eòêr¥Šª›H0`ð‹.„.ÁÖ>R‹¥î/ý†–bpä,JÌKw
-Ž Ý/2 ìÓ9þ
-kgT倾 µLƒCP1Çñ¼=<3…¿ÇOÈ–&? º0ÃûÜS [ý¡?óÙE
-‘\ ´g?'cH6%ræèÙPAÐ}¼ßúÚ|‰Óñe,O¡?¸R—›‚I%QÎz7~b\3z¿?u}¸ >–¥Üò”&¶¶yeÓ­KßÒdÁo6ñFÄ6)¡õ=øç†?†ñuι.I>sÇöÇ=÷ }M„M[ÒU˜x‹µº£H‰¡#­=}3Ñ…áT·
-4kÞî„‹iÙLú†¨m…uÀSË„h¼£–òáòYÇüT,ƺ¿¸N†7ÔïØ=8¡"Í×9&ó&$”MÄØíÚñA‡i,ò‰±÷Š‡IÇîQV)*2öW½ô@TÕŠ¬Ã\g/¯ ú’’ÖV)­®g8«'ÄlÇô%@V§~âš0É{ë´DÓèvÅýì——&ûÂ[í kð_ÆË$9’[ ¢'è;Ô Ê0ëÖ²oÁ-ûþÛÿФÌÈOši!•‚H ÂÇA{æŒëš‹Q½0yæÝz»p;dq/I­æø²0Ť2‹¶á‰€Í@ ´Ñ}1A,žá³£ôAÁ|vŸ¦e(ß¾¼U!Qz½H%µ‡ØF]
-òek–÷å½}>U†B…0šVÿ†4`à™f4U/aÄŸº°ÕVVah°S´1Ò…¾X»6C &ÛY”ÂmÒ.´«íÕDB
-7& ¸Çä÷Àòô®[LØóTÚà=.†‡C,0ØñëMX}F…'ÛUàÍ‹ÙéÚŽ·
-2¸4F(ëÊpøR7¸Ë ¬ñ$‡í’ÒfK±%‡Ô¥É~ÍZÌëÝ‹è”B)%-þb-:áRÊ_RuŠ>wãk<VŽ–
-X¶‰82i†Q¸2 OÏq¹ûôÆ—vN)J`®ˆá¸oúm8%6rxE?hõáQœ€ 1Ÿ
-à7À:ÞZ«l°äIènæFišCþ,~%’¨½“3;"QY+8¶¶=,Q÷
-óí%ýC¶ªso:Vgûi‘hc}¬:ÑÈŠpcj#oEºÓÚ eªZÊÜ="²¡¨@µs)3ð­dXFv¹ŽqLþ%E”ˆµƒ=L€O¼LPñ0%‹̪Bìéʈ”tixOšª•Lmâ)Û—¾AÐmà-¢ÜÀÎûF$ÐÞiCQ]@s‹b¢…Ì!y­
-¬*ÛÊ[¦8ë¢Ef’Äxiù¬î
-Ä'×ó|?Ö‡rÛA“ÝE8îJ·Ä‚ûgþ?š²ÉŽö’;ÉöU‚uƒ[peëÒ¥d
-6` Ñ>ëÃ9"…&?Kvo3–—‡È0+³<¼
-•AKD®•ôà6Ç€¹Ëru›¾k‡½Šÿ jé^T[0€¥Ù_º^¦BlÈ]ö»ÿ¨ŠÂÀ.ëmý»6§îæÀ ¼¾¼×÷ȵB»ÈŸMó:ªKÉþÔuäÎ9Wà8·¹àÏ}ÔÆ·æx»piñ·;µ8^“€öÈ&„™rTçßLh«W[’ã×ø@—·".oŸ»}þäNNH/DÊoÐtéÛÞ9Œ€å@^×õ½"‚ÿ&’©*¡I¬Q1'bÕ0 .Ž]!¸RÅ<ͧ§&–äúµíÑ•åž;‘|c^ª
-J•(â³<07˜D9O6ÔG<˜#$ мm,*ãh2^ÄòŠúO‹<欋Z ïŽ-¯ÏE(:fŠÖ-<³‰l¡£
-£H @šÖ:ÌI
-Ð È8›,«9M'e[šŽ9Äç’äŽI@\£tf‡ ô줅LÊxÓhìl{X S–9oÖe¨éô¶E
-ª› Cûºr¸éŒKŠ=ÄS¥öM²ñBÆJØ7SШZ^ÒÜŠY’¤Î&´}Õ99u%‡´â'â»—â*z­U2íjžKu‚¬RKîœsnç5çt¢º6ò%;Þ4œrüãT}ØðQ
-(· ”ißÃut1S-7áŒqÇõ2oküø"Û M$u‰ä|1xgÉRUµ­ÑdºØÏ£‰ì-jº+ÿ˜ÍßÈ ¯!ƒjÁëHú—A „[ÑÆä<ÿº×@°/k¼gHJsF”ÀC|£úˆ.™jd|¥ Šæ
-„£ÄqòŸ¾ª 0Ò!‹ºsÄ®eKGŒ^d"°7]:IósˆqñÔg“ΧB#ˈmê­I¢Õ¬÷<EÅw 0êŒ{›$ö,ÍG2Æ4HÄ;Ù¯\«ˆ™Ž‚ –Ãù¹…ÔiñýPŸ§¡E»­FÝFŠR²f»`°±Ø
-žG±ÉÙÄóu„m𙃠z†ôt•Öèá…ŒLHˆ•Å‘—s
-ï‹Ìƒ,H‚mZ˜(Ó™â˜(9äðŠ‰D ÚØã¤ÛÖÁ<¹¥/C™£1ôÚçº)HgŠz]Œ®X*±»Aðuˆ ¦<ÇxÈw®W+Ç7¤‚Z|[ãGíž‚+ ÈÍt˜xÖ­ðÉ#µ,ƒG7Á'ȧ•"÷9d oÎA8LÆ[ “·äGÑÀf­ä6o"¢gxlÖ1ˆs73—¶º¤×iΧ"}¾ÐÀjõ`­Ÿ2åuÀOç¸oÄ»ÛY^—
-¼ B¬”œOGÏG±š31ˆÒœs«³+ãiõ|ÚUÚº
-Ž­îê‘òìÈ-DÈþθ–ÝÙ=EÆ ƒX
-©ºç §Lg€Âjv_SiB„¿¡*2§‘véòSnv¡”Ïèæø
-9ÕêãÍ=ÕþË!˜²¨*Àba¼{Ož|ÄŽá/´§:R…h8²!Gù
-H‰Œ—KŽ]¹DWP{¨q¾ 3I&9l´‡šz {ÒÒÐû÷ ’Wèz–JêÅ$óÙÊ#çÉZTÿüGõtåQRÊ©‹ø,­\>JÎm$« âÍÝKqëæ@üê=R þ£ ~äÑÌ#u«ÅçØ5zÊ­Õ\[ªÇÛØÕF¤Ô£÷–
-W/=ÊÈ­zž‘ì*–=¬+5/LMa-GM%­HütDmä>$¹gç¡Õ{=B:çZ탣kÛ‘Þ19ܸsö‘Úç·ÿ
-^Ö
-_ñM”Có‰ÑK…z¤dù
-Eo56@GBTªNHΕPEZ|@(Ž3_\£q¿ÑëÃ1dÒ*ýØkùyoi”È-ú‚tb‘Íf»LAY4¬ï@°(7¥‹¯„— W2º-É.^S£I|gWDM(ÈeC:™2-ö)¤~vl‘sZ¡ÐӪΓÝY Rß±IŽq"ú@Æ)B¹/¬Dg~NNË„„,NË&o¹[¹Ä;Çý(RTe˜èéÝIݨë¼B©(dÓ1`kxrÁB ½?@pÌ 'øûŽô†±–4ÊI£qº0=„ãã·Ž]IDG” · ADôAß»NTÃðS­N²Sfw<&ļªMc2žÇ*s–¶º“Ñ*µa—*UÑ7¬«…ßÎá rZxLfY¨¿ÝcÏ­j‚XÒES t_§‰Lþøž&bhš”‰q|™ ˆ8T®oH£É¯®EcQåæÉpK+;}V¸2êšiáJ¬¡ÑÅ^ìG! F³¬s^ ‹g: J.ø3ñ‘¬AULny‡z%Pz¢&ǾFÃr~ži¸”Šî1tÇä O!D Å
-»CÑL˨톖 E¼ÄîÕ×DÕijãâ†,I©Èê$Ê 1Gçšé;¹È”§Ûò7Eæ§RÖÕA¤YŽñs¼þú¾ô<\»¡ß÷ùY`QŠ¶ªÅbÓ´~±a 9gˆ£¼Úô,Ž§wîÙáW$Œuö扥 ¬Ýu;ä„$ktý.yÅиöÍÕ]#Ë Qœv3݉nš£ßŒ@qÅ,ry· 4»Ò›æYgc4 Ô†¤Þ'ÿPÖEs¡m$i‹Ý(˜ªã¡€[b%,ZñÇ4y…§<‹Q½FF5ò2åˆ% ý<éç d+_H}Ø*Ããáœ^Ù4‘tzùž=¼
-dDC9Fô–ŠB
-¥‘ÐÑò†—žqqÎm‡ ÷&ÛÄømP…&ý]j6Ĭ±äsŸƒfñ'çÍûŒ#Úuýœ?ÓŠ×6nÓöË!õ ¦u‹bð¼Yp_4)CǴȬH]RÃÅ-KJ¹1ô#õµŸË©‚‡!¯;Ép^å X~{ÌÚQÜÆîó¡dçc->O:õ²¥üqÔÍÐ÷'>ÀØÈâÙ3q¦¿ëCЄ×À²(}?u|Éfh¿Y ÆÒY)WßEv®)j[Çß!ªRÁÂùé_Ax -¼…]ª<œÃ°À9È+¬ý
-Ì'®‹$=†rv?Ê7ÇèAúX)´E>]æË<œÍIc[iPC†`(Õ7@/ù­|;/qý%M‹ SAþm6Æ CÅÞE1éa@°´´1t°uˆ’)kŒX
-ÈàÇMA7 JÛ¾€¶Ä|±¼T¥¤aGKÜÕ–ÉßçåÆidx cÜó>§°!꤂™ÃGæRî›Þ(É‚ T¶îJ|xû„“Çh¢á òÚ‡Þž.®*4åvÝÃïÖ^mfidE7´#k*€YBî9e^»ýÃÙk0˜K¶ÓÃÊÓ‘«÷éì)â»H´xŒñr*Á–ã¤SŠ¿VÊ´ŠÁŠåÃ'ͯÄ!ÄHœú5í?3.¬œ~=K ›;€h•Ëb§G‰‡Dd1(5£QSÁrð³–/ªH|~kÀõ’Àwñ8¦„2ˆ¿*Iüæ mAXòdý¨FD¦É¬Æ9†ååÛF†œÜP0 H€m^þ1„<üžG¥H LówݯBF U¬u»þV‘ßô~îsè #À\«ÀW06“±3'>-ӽч+/ŒÊz5E®Û>ÆL2œS½>1m¯ÀŸºN‰ñyì—€SˆÂ#Z=Ì›ÕlN¤áÊóÁ)ÍQ«‹&ʽ2Õ$# 9Ûc˜õ’”¸À`-´S0rT´—[‚ @••Â¯#x$S™ ¯¿¼
-¦êÍ"Ã4G|…ÏAJ‘"l±hoòÛ•âJ ›+|.ÿ'¹˜í@
-ƒŸl'|Š¤‘C¦gŽ}Žà?ÅL×aOFÀ¯±îM”Ís'ÓÄú4÷&ôšvaW’' 9B°£4KtìT#èžßçÀÏL‹Ÿ~i^E]®;{P`À˜«P‡›î0.–>W¿Ì¸ÌkÔ•iÈ“uöµÏH4.É ûER!ê +/%k24UÁ”FEíëÀÂ’]qŽi26€Öþk ½AØjÒ-ý륞€}ð¤Ö¥ô”°±Ì
-Æ$ä|QlZù¬ŒÙï£d#²H®'
-KJvVO»,G˜gdæl„8
-˜2ˆnA{v‰ò.ëý
- Ë[zÍ–ÍÎÒðµeÉ¢˜ÓI&,á6RQ¤ó›š˜M’uIé$³1.³zŽéüEKn|ó¶ÿì‘‚^;%@‚ŽÓË-)‘œ
-w×;¨AM‰_htê'¢'—â%¢ªJ³‡o9`„ûÐóù tܽ,IÆ~ú–Ë #:XÖqò¹J‰ÝrB–½ÜMi6b/žGËn2¼óòÜCÀ•Ÿ Τ…mÕæÝ›
-STfÍ}Ξ8O˺7äUi•¥Éó”À"Ó“UÀqÔyipÎSì)Á塾¹âÓ4èƒ(2ï>`>`
-?¼I™<U OšÏU"¹¤GWûšh‘èm—èA
-“Ïó˜gËç*]ÄÜÔÛi5§ð³MîiÞÔ1>4¤ŠººBÙ¹
-—ÑjCä{rœghŠØîS;çÀYÛN8º®ÀïÔ¾Ä%j¦U}eºˆxÕ/æS¥­ßs´QˆTs{Q¿
-“áá,q=“’NrL¥ú)8æ.+†q¸Wѧ©PŠäÛ)bŽ@O{Tú°=C@¶uR#º¾é'ܽêAJckÒ›3ñGɹJ#cb/ç(/$¤RHñ’LfZ ƒžœ•âï“àEØõ–õ™¼>ßåE«µQÀÒfø(–ÖÈrƒizÿ:ŽŠ‰–qTø“'d´ð˜`w)éÁ7òPà<²Õ‡ož¬Å¨D
-·­Wý¦Tú€ÁÀïÔTCEcTœ¿Kؾ\£øVª÷€&Ö éHgÑ0©‚m¯~0ç÷HÏl‡u g6´ÉPç Äéô3_n²õr_
-ùžuîù1y}¡SâR,dšá›¨ÁsA0Û{cðŽryš¿gKºOÏ»®Aû
-ë4¶}QþË/yGJORAbûÛ9Å}d™íš’E!d–y¿—¹²’†ËºAŸ°åPuó¸³|ÃùœÅ)¤Lì_[a\ŒÜõGûl;9à@í¡=Šš0\Xª™CÚËìîÐ"°unäs'ËÂc™SÛT¤6–o†í’(…)¿*FæùÃ\7pu4 sw'ÎÚ*(k„\ù°ïÛ®¾È%Õ†ÚK Ý<K ¯WÑIˆ/wiÇË9D¢hÓîèK‰ÜÕ?Œ—IŽ\G DO ;èFÎÃZ^ê¼’ï¿õ ’Y°ªò ¶ÕbÿÌä|1 i_íñ(y%ÀÓû¦#¤À¯X\J‘Bä$y¶Ø¡?%®, ¼*ù~e5à†•š,É=o­þãz3T
-]ŠÑaßDNQþ‹(µþå ””bèyˆöû!YÝ8¿=‹]»8² Øþ!ým…x¼ñ EFŽ}ßè—†
-ƒZUì”HP׸"êÚǶN¹ùÚÁg >Þ9!U( ¶PÐe+˜<f‰£„U¢>Qm¡ÙÖ\nO & ifHZ»Nº!Ÿ‹^Ž”¢÷Ä—;ç}^EQ­"9mÞÉçä!Hƒ§¢¢­Y-ÂÜ’…,Ý#(š¿(µûñíó9—P"û“SiÐ2¿ó¹é?ÏúJ r Ÿ®íÞ¦1dúJ fö—ã,Ö*I>´”Œñ™HÎû^EÜu{ærÌS…÷`š¥ÄÃ{Ë÷¯üÉÆ·ˆÚ
-ÖŒEÌFy:GÖe ö*ñ•ŒºãÕ"4V…§ËÅòGT’„úÏp’× w ¸„üOJî0ÉÛþˆqº‘Çc’¹a§´YkÇäats‹ayâ6ÀÄ´5á„°{Ò0?x8µxaC\в܈P@rV€ é 
-eòßθÒi¸U¤~cÈŒ»Õþæ7`—`HÌ™(j"ÀdYë`&K„*ÌÛ… .ˆ§ÃŠ!<Á™(Í»ð=û¯\¶IR9KSTž´KAõ8Ò¢["#Ä¢‚ž8*­LÔtïräy1Ê,}œ¾péMŒ3ÞDz€%¢»£¾¨ôl—µPcÒØIOóuwù#ÆÊÐlº)Ûèu  éç‚d©‚k¾"-°ƒ&«XÝľÈ9_®‰dl‰uNãš¾IOÒ|IÕ¼Áâ³Ì{Ó"£@&f€§2p„T]òÔþ¦Ø@ü“Ę"ìÛ k4…ZK¿ÆÒÛ¯WQmŽÒÜúÞ¤I‘4äoÀ~e.)´ÒʧÕõrôNšD¨êÒþy¡!'L¸[é>AðÒZk<Æ$s=¤˜Õ#¡U’!k<VƒbØ"VKØÛ HI«–!¤xC? ¨ßg³Éh7zuƒ‡¡þ+‡0©è´z“sÜíYDÐw"«N¾ H= ÉÝ,ú)"( ¶ÇÈÔÏKØÕäŽDߌ$!ÍG­ð ‚'bí£`@g
-'‡ø³J1 äRËàØ‚ D}¹ ñ !¡˜Ckóu—)Ó¡çrº·?ŠŒpWÚ±Ìýð.G§OÑJ}¸zsPn)ýë6 Éut\Êù’´†:3)Ðjª×ünÄZ-ÞE ÷*²ܹPãѯµFùLÉ· 1ÍX$™:)±‡À’xú(BÆ€At¢ÄQ°ŒD–qÈ‘aÔ
-
-EÂgŲiògZz·t A å(ºø/Žú B
-\
-­4O­U¶Ê¶fD°ö¹mbRs{·È­+häsþH>e
-TaaAäÁ¢%H(k…´{
-á €X/Œò˜c=Óz_›çñ
-‰¼ÀPükí,ÖRR§ßx©ƒk‚vÆ 0¹šúÑÛ†QÎÌ<—ëqI#ÙSf U.¨Q¥\b§…,‡D®£ê€!Vjõ
-*l9ê·D]löÚùX½İy« H1î—>•xRÍ–ñ„,ñTòêù±«àœ
-ÑkùpNÛb|øÚ>5J×­™Ï)ç{Ù`”…]Åo"ž2 z/†#!L‰%½rJ!(Pówü,C^ 5»J [áºs4N‡i™§Öüªà²˜Ê1†a{;–«ÑË9Ö/Ú_ñŠ7\î
-s’h„Aè,ôÒp~
-uÒ´Ar>~
-cô Suöa:$wq\“£šr` ýhÅÇŠGŒŸÉl zìnþ2„ ™¡žÓOžO—”—‚F/3‘©0 “†/³é«Zb”¿"•Àåìî3Ìl2!sÁÎë¹» ·s0œ`÷½ÌEòÉRtÂ’^w ç*š-)õúÑfÒmU&ñ«˜3…A8 &¾Ÿ°¦¥˜qÛŒš¦“·ÏË¤ß Ê7ñx‚ÚѲ]–».¼ƒø-MEçûe2ï] •ØÎOˆ-?A…Š‡@(ø–5îÛ=ÇèéÐsžsØ9‡æ¨CYW3bk`Ù³qé- ¬K–kb"¾Ñ'¥7ªsœLjç¡õuÕ#¡
-èuïfzˆ:ô ,zª¯ïý͈þõí’µîêÂñ0gp¸ fmr««»¹¦¼äœ-¤™ÕÄ©¤pBÖ¤0K–Õ^>‰Ò¢Üš!m,E¼8¡„Z·8GŠC½p\ÓŠ -̱þÍCc©1
-ˆÍ Cé­™ÐwcªG¼„|^ýD ˜ÐÔM
-*º›WFbȬ¢~ælžæò­¼@pˆ¬¢”7ZcH} ?:Q{ËCËe“Žo¤.ÂEкl
-BœEít'‰Â 4ÐoÞÚx×þÒjW:5[v™O¢|Æ­;×åô]FjŠ¯%nz^Ç&'¢õÏAï%¸\÷G ü;!-/8ësAt˜Qy¶¤õ¹BàŒ¤0l
-_Â(®»ûÈiþ–at¾@þ>“¡$&a6æ‡sþ-“P¬€È33çò‚ù–.*¨—¶«p—hÒÇﯞJsÚüÁÏ{Ô=‚•}´“éÆ
-À.çWý*!
-7±„ánEµûÿH1aÄ•{·Ûâ
-!*Ð5síËž3AºÏ!_Õü=
-C)å §ˆFXgÿâ ÓŽúaKbž;wD@¤w+Š÷ÿÖâÇ1 ‹-àë™PlUèØ¢‘X³† ýü€éÈo’ÛP𦶠Ï-·¦ù‰`¼T¿áç
-²óβŸžLpVéðnqtZa‘›¬$^Ùí<v†Ãqí3Sâ·ÅªªÏ$G½xHZ~G’ÍT ¬/Ã.ˆ=CÝr  Jµdú`Å›˜·¸îô™o î \~Ëa+Ԥز%R@¦Hpž6úb)HaÉ©“°ã_ väÁ‹ Ï«í‚î'tV=òÝo”””¹&_Æð´ï=h[Pd9'<tóÚ@¸3Ø$³íZ=Ý,VSíZû@8ü$F³ñA&€
-^­cºÒ¸óWý„ ÐÁ”%™'¢çÀ™i;²‡0 @¯ôò þB¤£xèˆ7áo»¼ƒ˜îð×D ×ÊÊ0õ¸CÃú…é†@éóô€’‡¢Pf×ú§:ùòÊxbØ(]Vs¼OiÈZà ‡÷»|ö$Z¥–üQò^TœËuл+{(3™
-û†DƒÒ¼8ÁbL‡y&Áý’Э9´.$Â&Ю©^UHÞ·è©r žÊsžj2lÄR'Õ|àÇö9]B¸n¥½W!3çxFD5²Õ‰pÃ4gd,"ªÈAS1¿Æ\ËŒ{»/Ìü
-¸âh±æëByQµˆ‘çLÑŒ `r%¨—O%$š8JÎçÀDF#˜ƒqBØ lçÆ0,ä
-°G3\E‚Õh‘ikg\J›ç yEÓü9Äò›
-ä@m§ã ”A+©{ÀT÷ù„!Œ€
-‹-©H6+¡ÀDkÒ{%Ft.h#ŽÙ®Æ†9¯
-—ÌuÖPT
-DUD mÏTsá‘?w¦ŒjƒDâ-r fcmIHÐa€8·sRS/iïtó“5ž º(Bªx¦3)!Œ:v(‘ª >M–·ë]d(wv^U0
-ÒÜÄÖ쪥B£ù. Pm?¡övº`¦û¬3<:f-iEyÀØNCܳ " % b£Ðks–‚œ€•%ÿSO* ÀšµëÚ½„xª*è^êùZçdN
-Gv|Â{Ъ
-ZîL£É*/IQO%²L†Ñ¢ÆCæ˜bZú®ë–7t!˜|Ò'‹'q5ý=Š· %Z6¨^©¦X)I  *Â1B ›96&ÝBêŒVCt`ÿ?€®Ô í 5ðªÀ>0$ĸêÇ H"–YˆuÈá[̯[Ì Eÿòdð›¸FAÔ d¥¸(oJò¢ì@‘³TÐd\’âùþEÐ[ºõ©A¥Ó@M~ºø{Ð¥ïé~„=“Cn áîï‡ H4É/`"óÇCˆ@K@ó<„4æšAb²MäAHfQFN‹x¡Ü€¿Â÷“ÕkœÃò/ÀVé~¸:K7a^åD:à›¹B¤jP$³.©Àr&ß´ÐeŸÃøŸ¤qŠsäKY=€:Ù!L5*ò·p¯nA¼lF&¶'iÑ ¥°ž”xu=۳Ș—$ŠCH$~#Æ£$ ¸œ\/!ïÉJfW±ã¤d½ ÙÞ|¬$÷¤ЪC'¸¡z¹¯gjRhEú4ž •Æ]Ïÿð!rZµˆ¤ÂSÙYE@‚\)c_µØ5x= nAxHy Í’—ú½ƒ:y ´¢’ ` 3Yv£¸W—YD@%I2PÍÝ/"–÷ ¯]\– ÚçÙð=ajçœ÷A¦lê5f $æil+k7PÛm‡
-DFõ¨‹ì`Ÿç6ª¥lƒO°ä$ò!‰5ß<Íë:½ÁR³#e3ÛÃ{¸¢ A"¿õGâ¡\°p‘' Þ‘Û(²Ókš²$ã§0¤Å+P3U‚´-Sª‡pQ~֥㖪hÿŠ+¦;D±.@Í^&B¨“(ÈŠð5e`$JñÞ¤XÐsPª‡$ù>f-£e#•i5p)-Ï(0Ž
-í
-錢-Û ÌXH„Ý~K÷ „#Äár–fj“+•]ˆ®2XýÇA/é~ÿäN~õ÷³¾“‘‹§„ö­ˆ;ùÇ÷˜_טïK¦˜.KŠ3ùuԟƼçzÚOb.Rf»"€ˆ]îL~t‘W·–| úýƒZ«#ùã/"Ó'˜–PÂlÓqUÀÃj26ÃçéÄ
-¯·ù¾tä3~ !ªûâÏ_Ø
-L¢NÞDt®V¶k›èúeåX¶Öø:©
-u!w´OòÝÎ"û^a¹%‚Ãåˆ0g6FJÛ/%a“¾+Çå3\”-à˜¶ãQÌZļ1SÎhìéž…KåQU&æ.qÛƒ„.óIŠ¯!˜Œå'%ü°=.“ÄLð;øËWM
-ìžÄLZ\ZõZòbhoEÐ:üiSŽï<ÝûÅQŠˆ–^_…‰çI * Où“ÒYH^™ÔBŠUœçŠ‰r3`E·É [O?ÊLÍ#/ðç’JÙÍp4Û$E­ç¨’äÓ
-Á!‡å¨•‹è'Ù¡è/Gç€$NA·âQzºMZõø¹„€N‡N†s ?6\3u¿_‹<‘ ²Wà^%ÛÒmØ9-vh=•„2ãvAÖÐËgL™›t—®®ó"ñ Ö"¬"zÝBÈů‹?aUÎC`žEÒ¶¤¾; äøž –âMø'†+`ü®”ôÚ=!|'\0O ñ„¬ÈØ2Þ™Å(^ú€$iæ›:SÀBB«˜”tXßÜ‘¦@ÈH@áøEçtŒ¿|"D²*'à8Hû.e…àÖD ˆÁʇõŸ¤á©èó]QÅóK&u!®³`]Ò Yh¾+ÁÒ³Q¹ETQ'bmÔ´Ÿ•bnÐ<“9¸Ù챈c´S‘É3|ï$QjaúsÁ 0Mx#ú¤*žÍMù*Æ´ðgÜ`^}Æ»i¡¨ãKæ‚Á§¨r¯?$
-z<cDb¨8PAdZàX\²%/'Aʽª8¡up ‹j©:qu²
-­¶`Qæ†7(,qT@u;I¢g¤­¾p(H?OúVòñãïù矈Ue•°d ü6fø
-‚WÖåóÏÞq:€P=n!îX,f…ÇËÁî¦F[^Â*¢M(wmQÂÂp-öÉYYE¸ÁÀ
-ùLþ£ƒ²x¹Y gÔÀ•¤Ï
- ëéÙ¼†Â'3${ËÞM+{Jß‘ËðL3Œ
-zš²û,û.Ë>3äœ9J†Ó+6þ¬'—@“Òv¦¸Ã¬—eäoÅIü sc†Ä‹8•.‚é¦|DI–ãÁ ¦ð°Ø+ˆ]Ÿå/³3¡"ßWçø
-“Pc¹-ƒA¸Òmá¿ø"ØF Éo®YSœ„±«¾”À[°¢¼[¾Š %cu¸î]lpiBÄméò×ÿ³ˆ/“¬ÛUKìÙÄŽè枧‡¨S ²œ2ƈP9Ÿé}&Q¿á<È S"Øf²ÎÅÃ:œa”¤ ¢_G<æÖ4æVÞ@¤ ­SŒSÚHŒ[ †c(®ÖbV<®¶Ø3Ÿ–üÞÇÈ7¨&Î)Õ-û?Éù*0
-¡8
-™P“ËÞ2#<î½áþC|Ç>ú2,)S5’W—÷ºvOnñ㺛ccS³‰qa™>ï”òTd%LšÜ"'üøN Bp–ÅTdÿjK”`üyLSZ< ±ÓÚö)âácP’‹>¹·˜Db;£¤ÉXAÿ{D ²À¯pC¹\Jü¨j°$Šzç;˜WK†=ºÌA`]<Å«êPÎ&ØÅ«Û¡„6(›4势®ûPÿPÊt á dy PI7ÚÎò¢áÉŽ‚–hé^¡xÈ…²MAßúƒpŠ.Åþâ+–M™³}Ĉ¶ÛËÃ\(Ë䕘JñxaÛ\ÏK8G
-^ïqT“,\¡jºè{½Q“$aûU9r1¸ƒÅ£ —íΣîíØT.þ!Û›ÇËJ2¢xF}óˆ4[Ç>6³š°Æ“ÑÀ9l#OÅL~;ÕF¶Fd gQà~:µRÛ\f¯xê”âgýR@DHâ·Y÷šaAF»&ÕÞlñ)ëê”±Œš7S};J"Ô5õ#Ä¡Ú¡_ yàxç>všÚRi¤k°´ñ`-ôy8­3î0‡jò\ã0î9Lnò¢9­"„1ËuèŽ<é"TµÃH“ú5Å1X·Á¤B†ˆ†jN]\Ë.JÁ¥vDÛ¬±©@›òÊoЖ2K¿9òŽÃ¨‡a¨eô{ŒE ø0³2“ßD0„BK‚up¢—¸AŒ8l+oVm1•”Ä"BsjÇÎ<Ap ú÷ÚG2!êŸmÆFB‡$[¥Bø‹0´inìÞ,6-¯ñú"±4 5úyN$è%…KÔUÖ Sªht\.$_£ög ^Z §az¯žäÞÔÖô'Jglå~H*ÐpL<_]Ù-·©å}ù|¡Bp¼U}Ä3ÆPú&ZEå‡*Ý+˜NIô%ÖÊ\Æ ó‚×ÔÀP
-ÝCÐð‰×£iU”á[½Ž¶äITš0•cÔ«‰¡joŠó_¿ýã#}Ñú"—þ™¾xl '¾e …~?Óç¿?˜!¾è]¤‹s7ñ1pF"‡ë?ÿø°ÛRì ¸H²•{Ð÷)¨2ÆW›Þd 5I¾o÷ôóäLß\1}þ퟿ý‡{ò2v3F: ˜¾Å R}·5qS€ÚEJyJ¤hë]9ëeHধ ‘¢®¥ô£Ñß-¶D¤âxÆÓ 2P= ´tlŸk}Ÿ¶{„ 7¡Úô ‚ÃCÇÓ ×'øyòNzýüùwB›¬ÓE©qß/yˆ™±§lOÊ,ªæ’a9A
-!w£T5eÒ%à¥jr´z”xŽ.Põô¡ŽÅ¤N“(š:•„í1(Üžtê¸m™}nøµEÇ¢ºÔPÝBùdV^z¬R5™"2ˆeìT7Ó!NSm6PLÒ·üN|Ág*©5BЋœq\ÒBÊBÄ®ÙC8­ÆWt§—تèéaÞ$x´ ξ'šÊ 3}‰íVP¼ÞB¥7â˜ÄÈÇöA‘3Z Éà~þÀ\Š•÷=æçMÌjhžø´“Í¿8.™Å õªÁŠ¢f¨wê”"éË3Ù¿P³:ŠÆ…«àp ä<‚R°Ém×û2¸på!D·e’wH½Å"Ìd@Ûí;Ñ 4hoûª`DsåÍ­*ŸRšSMP¨©D¸z·ˆÒ°¥m
-pEh_]œ–‰0E½×êQyYL=³¼}'ê¥mjz¬S7=h¸ßM½‰HQôž
-jEo2«ˆ ’Ž~²v =D‚¼ÉŠj\CÓ¦¨cD¿é§¥Å*ôem³
- ®:¦‘Gt­[?TÄ™vÆÔèF« Œm9Bª’º‡¬‰ì,Y¢@Å “6†‡L²Y¬R‡çç¥5»àa×0KäfëèVƒT¹–‡Tù"¤ÈüÙ-¤® ±t°5G
-5U€b^[Uª½3£e
-ˆ crAHk,C›m݈çž*‰ú¢Iv7Ñ™”$ éE¹.…Ý¡(ÔJÄ”‹X1™p «.è˜:Ò?] æ/ƒ ÜݵVÀ‡ÑJ{-F¤ÐÄ*ê¯#Ac‡_œ V©rÉT]G¡_ ³ðR'ÍÇ I.[yÎÑ (éöCˆ·ºr?
-+È•´Õ“ YgÙf!ÙEÙÌ‘lª€(2nï^`"+“̼ûQ'‡fN&Ú¬ÿé‰KQd¤ÕC@o* {½¤T©ÎÚ|+f:f&%8ÅVªVÇ«¯ÓMúI×nÙ[©•ómÉoBTçDƒÊ–yÞ1ˆÇ‡È ®òíÌŠ{ Æ!èçM5Ü„'ÙßùæÁ›Ñ‰
-`¦Ùz0‹è}ãìèm-¡ÀÚ: ÈÁH6C#“£ó·RìÝ@j˜av·•pmé%׬AP)|“—xÃC˜uȹ${\C3±á!sÇ:䟄N>X¼ñú`eJ…•‹‡ðÔ¾¼r,7¥ BRBFINˆqí Ü$ª|uÁ[6õ… ßiARÜ#ر H†q{_Ü›ÂQå»í&Œ^¢eÔ4Ï«PG4"°wدˆ ð€«,ïÝ<5Õñ+öÁm ?L°Î +º€Ëï° Êh[ÃzƒW‰.³èN±•€ò@495àÕ‚¢ˆ‹ì³š±“z1w_ÅÊs=õ,FÍqΓVîáJÑĸº˜f(¿V•¼—*µJÍWè”6¼Þ†‹Î
-ARÍ™ÒȬõ<è¾›z¤
-€)žö,ä0éJ3ïŒ0ëÿºMº·g| úyðÖtQCLKœS-un¡)'dgC:”’CÐýP|Ä\âZu>zÙîçÉ™üè·µîÅ$ü£Å8å²ú1w‡˜C¨PgÍIÈëã ûn·Ë=‰4l”:i¯ôÍÄüéfy$[IG–ú¼MÊ/A?^ÛsR2f[8u;êSÐé-3,
-”áSI~tzÉÙ²#
-h=:<Ô}»‡A•¡Á)0ºŸ7AL`AÇãá á™@: åš ²¸‹´ÐeÞ1iªÉ š}å8À€¤í
-Á¨GÍÝC4 8L$šBøoän#Ä„O°ŽF\C!äŸnÀƒ
-_‹WeŠÇ‚€âì})2€ÀC1ÁÕÙ-„/RNçrˆÐN]Ÿ…ì{
-RÈ_ óÝxbñ>N½†…ðÝ0ü…e#d*ºŽ§­ÎŒNVœm¯+hcð#ó<B±É¶S¹]:œÅ5FðˆŠˆêæz½¿jðïÇuB™‘g«ÏÓN›8‚”Žn[%xŽ ¿„S-Uç&£%’ÀÓRKÓ +Bˆ()ÚVâ‰Á´1ø z­Ã.YÙØ:ƒmø=\Ö²„T#£oY’£Í¡Ú:„øV¶#"irã7ë6iU¸9ëáÈ
-ɤ(‘¼ô§'º'iÚX3v‚Ë0^ÕHD½
-hBáF¿’’ŠŸò Td±
-ÖàØMRQ;¹6Ÿ“´ìäÚ|ÆV\Á?*ý#I?¦L|;3ËÊÂpMÚíOã$ M™pýŒc(£‚…ÛÓe" ÚЯ´e+¨¶t£†ƒâß÷ÝômÅ^AH¸’à*bz‡p %ŽDѨé dîJÅif¼™t×Ôbv=gyųyFF4–•0YZ0„vJ³¸à¦äU,d0 M,¾œ6é@ÉCh&_‚ ñ³aêéC´ZDÓ²â¨a†€q1x˜Æ.ÇâÙgø¦nX“GÞ€UYuƒ +UbåS_ŒÌš ð€’â \FÖ4<Jƒ6$:‡mÜ~a¤¹vY ºÍˆPjÖbÍñ!žÃzâþ²qï;èb½ûEjJ² 5}HMï ™ºp'‰yá;ˆ™¬T­Ã€^!˜VØrV¢€¼ à ¤!éâ8l×õ;ÙF¶‘á¾Ä$w›‡EÞx‡ýá¨ùE·a‰sþ¶™ed Ž¼c5˜~v•è/R=GÅ…xêºúxÕ5COq,î‡ï ‰ DÅÆöOïbê£6ñ qPÞ÷¨xUf*¢õ÷™lHQ”÷ÂVSÁTö˜#–â‚B!pØ´~úŽ–­à²ÊþR,&ù„H‘ùû¸ôÜ [ƒ[[áXh.ý¦6}”‚éC2ÔñÌsІ<@W9ß¿‚Þ¬9ù”²ëQiƒˆbžNÊo©JD¸}y'¡a¬{2ÆY‚BÏq¼þ¦î&’ŠæzÅïM-xTAsÕjšQ˜Q0 x‰}h”¬A(‚zŽÿ¤‹xeKÎ]t}†6iW@PÕÅÌâ†}¬&i—Õ¨Ðôr$ŽûõvÄβÐi•ÀF£|Ù…
-ïÄõ(ùqŸ]šÂgóÁCã¹CáñçeB[³<õx܇'á7µeËj†å;šÅa~'tJR؉oóñ“ªj¡|4æ $Hç\º£V· E2Æ "5È ?ñ+£Tón
-Ÿp+1¨»*ès&,&Ú£Š ãÃ$RûŒHH
-ªù5J,úÞ ?#ÜM©ðñ“2Ó†þ#y_¿3¾¶ÔtàÃÚqŠ/D¤²äe!ŸØäVþ*nÅþ³¬r©×LuQ±}§s4öqaÐ] °2®•2ÌÊjªS;º «Ãµ5ŽÂÏ@‹¸ó}¶ÂÖ$kfz±ï°[˜ ô³ù¤n xV0…4ü( „ìNÏ׆1œè8ƒ…*qÓÕa رÄwH¥¹Û®-ÿ 7ãÑ0µ·
-cå\qÕææa
-mÜKö¢¯È¨ 
-ršÓ ,gÚP]¯giè[•€±Œ5b¯
-›ÚÖcRŸ7 ˆž@*úü„§c´qò‚ȔⱨP Ö4ÙŒUyç $½ZÚ}ƒþ ë°Ö8–N“q&TÅm­á¨?¬4¶„)€áçy•Ä•c‹Oy
-5™2œˆÐ8îõÙ/
-‚ Ð
-æv3ø=¯øh¤JŽÎÆÐ?bë"`½„ÉE´²b Í!ê£Ìƒæ[Ž0ˆ8G©Euˆf@f˜´K‘ôëÆ\òöK} ‚à]Û#amÌ<Äeà
-îéßa"h:™åˆèS΂—)}®G¹'®¿ï†Û@kWŒ
-IAõeIÿS«½ÆÒ2MWëìâå“Þªw=–‘”9Y³¦‘Œvf c,ÇäíäÊÈ2ÿãqŸoæóF`¼‹ÈÅ°2ËÌVSöyHù©~‡N7§ÊJE#Ђ¤HðÊʯKÜ>™ŽÁNëþ>8l4„Ásb… ôhù£H4²U¼kÆZ±àJ¨bOït¢@GaJ¾¬ƒ+[IA™Â’û -”Ö›FÜÓ:Î
-ôá;/‚?Í6q;v±­«oxÉ{~zÆà0…ò=1Y>3-h­S>ú¸¹´É½^Üе|ÿc™ä¬ tÞ»É û4¥¿
-sÕ/ˆ¿l,DÞ„+˜`^0Bä%ɦ|ÙŒˆ!äR
-¬@©ÁçÂtfÕ÷»ú9P0€ DêSÊ×ä |>×Tød£&s×Õ‹.æ§H/'-4MÊ& 9E‰í†!Své·ÙÜ_Ä‘i.ÛyE AÞÀTò¿LgR
-ÔÃáÊ”Ò!˜zWC ãàIC©ˆD#Íüq7G;N™yÞ¸:Ø)ç8T 3Í 23y–iÒpHìbÞ'_âJù•iÙ§8³¦,¤®Hé¿ÍÚ{u2dIÒ¸*³¹c.÷‚x(èpÞ~Aø\Òø^ˆ«{Ÿ„ÁÄ×%Cës)eMªç:Wé3cÊ"9+Ú3´Ö#A|‡øI¯‹tùNµ%/ÀÊ÷'q‘´±\¥›ñ¯
-H‰Œ—KŽc·DWÐ{¨ <™L~rÜz<*ïúN¼….é
-(À@[ªÉüEDšYµO«%>þùå9e4‹’½Ì¬ÿ‹j|sÖècûðþX³Œšuô©¥‹QÛÌ™½Õ^{/£¯SÊ#ÇL¯5jº¯«ÆcŒž5ûp/¨Wµ­Å:g”ÚZz´Z}Cæðnµe”دéÑܽÎbíœ2yN™anuœ«ÚlÙûô°Ù6hx›}”ŒcÓÂF‹é™å@zpYc4N^ÓjŽjÒÈŠ×Ösƹ)H•ìÁ;7&FÖÉû¨s$·yw·´ !Ù lWÅPy݆þ·xF¶+® 8­Ï rªG²œôí ”îÒr”ˆó3|ÌÚÞ@ŠÕ6ëh×UßßãóÁ5æÔ2²ô¿ý ¬>rZiNÖÂU beNoÅÉÓÇ· þ -‚ŒqþœEš¥«¨YVzºîó'oÚO9KuËš›$õò®ÄÔÚ‹€7˜¿o1FÆÿ2ü1ŒÖc¢¼ŽúcÐëm/ÁýóZ;
-=ÞFé‘n?1|ÎÜñdžßßåèóÙVMìã/P÷·Ì“­ÎËÑ v²˜¶
-s²B³ôÊ´NÍ.êI<­ù0ù®kÑ2dÆÆ‹#@Œ9'à “Á|ÿ¬›`'Žà;ŽÚ ðŒ3+
-2¦2”ÐV=çh&ÅW´ÅØ«â1’{‰Ú­0½$¼ž›z[ÙnÔmcjÌN
-i²ó^‘šqHy NZøÙPÇ,D™c(õªj/S‹šç"J¤ÇdãŸòJöÒIF[çð{8Äðõ”’Fk–î;j‡ü³X¬Ä d_eP üXtÔ›sÊ4Ø”$ׯ«\,<mš²7ó‘–•äu¿ C}Ói\Œ/EI+f'Ç4 J6¤u3£7cæxBÈl•ÇчuCè
-ví§ö»„¨~õê«B‚ êÄ)ŒSZ‹¸ø¡M7æ–n~ED¯NüJŽ=üß[+0½ÝЃt]†&‘ù2ý\ôÄ2Ê/…°yâªge¿¡<fb"$ôÔ¹é™9Õ¸²ÙZ÷{þmÂøUÖúòÇCùåP>&‹Ÿ+¸5,Õá±ÑØœý0>lJ;ÊÎÕùŠYÓ-äªYn排wâ“õQO _m;5œQNË™§E?(8CÚø€Ôö*é¼HBmÏ8§øTÃZN5\,ˆBj(<=u ØtNýb,Ùn®iõØa˜L„ô‡Ÿ¯c
-Z3̦*½!Œö“Þ·6|Ðy­"ÚÖ‚ÌcÂFû*˜%›È‰Žó¹AðŽIÁxt®s°YQñ‰íøX“—ßDP´bÙ€/í²:¼dR;Iï ¤‹`ÝD…'‚¼A”=a¡HÙš‘Y‚7¨R'ÒÇÖïrº3®Ô_Ï¡´j_fkË‚IcÖ®kÖçrÇÍš¨€$}G>䔡¾çsÕ9™´ýÉ Õ‚/v3㦆øέÔÈáI F§ô~ZŒB{"År'9 c~ØΟp”U!¼¾÷XCè³Zçy1Ÿ 3ŸLÄæ‚N=¹
-ñsÎîò6–9Û¬C/’-Øá
-_ö¤xh•–Õ(´ˆŒµqìsXµš¦¥Û¶¶X4Ç ›m«@›Bwc“¾ËÇÍ1<”9àšÈÓëÔ ‹k[<+÷ÕsHHó2껆mB^ê¹ —ìüHVù¬y¬r‡xã±E¨@+XfH¡JÇÐbån¤ŒâêTBW´KHŒË„–¸ÊÉ‚@ ÚØs¤–ºéX%
-Gœô;3»!2¤ø=:ó2ˆ+þÁHƹŠFG
->eYö)°¬°»]K™Ñøü„†Úµáð€Œ~Ö…Â|h01/—]À4jäI׺i@š|Àìã‰vo9œËó©y ¨#]EÓÇßØ—GÀPçA›@ê—by²¹cµ FÕ—rÙ1ûì ´ òFÐ @p‘ÌøçÐBÆëj«gÈgêJI°ºýÍ!¤¾ó:&É,:%ÅK›å.HÔ@RÎs)|ÀTN»ßª¸ræÖò˜}’O6ÏsC9xA¿ã£›ìå1²åÁ¸@ ´BCô}•Xƒ0ÑɆ»”(7Ú¬RãŽ0˜Ìn^’¹ I;ã±Â±M™™­¼|æK¬âµ¨è«Ëï–v+u@Lk‡8ËÇÅøOVþ;æó†,Ñœ*p¿ÝxMRo‡xDZ
-7u¬O²•_ªÊvËÎèWàÄ¥}êk?¡näÆ{\¾•—Žeït˜«ØÍʵr%åÅSIâ€d¨ØTÓ®-nä7¸Ý<•ÂéÐùl3ËXßCjaÂP9±sÕ$l…@ëé>$´p†íä­Ô8‰*„Á™À*Ïœˆ ¹fNQÄkZ¾M®ª‰Uì…oC6>o@Ÿ$ši<´\¡ãµØU4S>×e”Ž —Ò]4ñ”Að0©é½¦I’S 1};ôWSp~PCo«Iï rt“þC4ó $Ð{R1ä¯Ð¿ƒ$Ï%‹ÔÛ¤uŸo@ÞµiÈ™øŽ ‡>–Šû%ó¡4©Y?ŒBJ
-¬À´+¤?¿ýûË>þBªª¬^“ᩱö29
-ÂèšuØöã¿7 *»¢E±Íÿ3^æH–7]Aí¡l9¦‚2ÛÕ
-’Å6µ +Äÿò[UŸù¸¸Ca·ÆfRŒy¬°SZOow™^2’΄‡k‹¸¶h•  “NŠÈ<xsh¦ÅU<©Úº¬Ú9DT 2Ûœã*8…@dô#+!iÔJ÷‡ÁK%(\éîðm…7H±`ÅYN‘~ãò¿lçÀÑ‹gsû±J8%‘Òá¯2‹^°§iõ»›Ró%À<‰`5H»â–ßÔ´F Ñwãª~h,H…P"éAvT0ž^0ˆKûù,ºD }JOÅÑÕS$wÅÒâ¯üs&‰u‰êK 㫇"zX¼ëXièvµð´ø4¢-n~ä3NEYþƒM oœùf9m£Ü'¸d|›„~ˆCÖ­ä¤Â3ÀˆŽ0  I"hÿ!K~øÓŠ€È q¨aЊÒ~þfÁ ›uà3‰JÇÈTuT¡³ˆº)áó€öbî n@ÀEf|ìpíÜ·¾°Á¤Òl#9•TdW æ©I%¬)Ÿ-ÍÌV„™z„Ãß¡PìÄèq•ì=tJM
-èòZß´,ËPKÊŠÖŽäP~±zé^“3½w:cÁ"gsÞ~_Œé&Lçú çø¡!$ä£×<X´ö~SÂ…].#sž›^‹ [Ü%Ï`ÓýR¥?aw0ž£o>ª™`µ‰aÜ“5à­<^ö%FA‹Øƒl2-5™>UA B–+Ry¬ha¢¸8‡‚ë¼Ä”ŠªI5ù¯(êˆ
-˜L3ûUž
-¶x¨<Q:8dÁEË1†%‘¥YbÇ(™Âuн}¯K…- |>éì{R³y?XЂƒG_¶µ_®ÔÅúò°?oEâ^Û==ã„%Ê ÈDfÙòï;eË„õKV?+ƒt[.‘˜¨™§!>ú*¦ã£QdáÅÉüà%ø´iÇ ™$®‚‚ †b"õ +)%îêJ‚¢M3q“Üảñ±¨&£ïÓ%™ƒã°–=®bz>¡zI2_‡yC^£9¤ˆ?õ#mD ¢ƒ â±i ‹5.ÃukŠ–¶ì߈Q´Ç}ÜGFJ:ðFp ½*m èýqƒÇ¯
- ÏGã¬MºÀt¦®bF‰%E,ò¾dýXZç$ÅEÉþÄY#·”X·ÌŸ/.Ö1ÅÁ 
-¡mŒ Í\2/°« ,Ú'¤À2ú"õ@<äc— ‡KIêó„ |ø”:}’?KU™aè1« ¦B±¨`êÓó'?‰6¼7?íB
-QGy x6Xš\Ìפmâe^‰˜õq•ck›šf4ïpiˆ!£'¥ãäÌðÄeä'Ñqj©MŠm :È!Î8«‡Rðï%t‹5„LÐ s¥Vb¬±üë Pqvµ› ,æ„ïY go‘7 ÃÊ­h ‘€ˆÄ®a#oú¨îe,Úàtäÿh‰ÚEgxk€¢€½!_Â=¼…FU:ÑQ¶g‡X€ÀJŒ"J† Nê²RÁðr‘
-;îÂD6Í
-s†gíñÿBW¯÷\¼Ïøû•á÷W´µ‰à%ÆIße à¦=.EV¤Ñ]ùáïs
-Éв?]!d¥Å(aºmœ %žNƒÛ™]má†q!`Ú]Û‰€õ(&”˜Ï(Á‚ØËSw"ƒeNE${)ñ«8VuäœSH¨d—•[Xúð¯Â\s&¡
-½sÉø*Û8—³Ý<ãî/ýåºkÜ}~6q£Š~HôæõñXª5h=ÊÄuošˆ9cA0ÔK ‹"±8oåp“(
-Ad.“M´P Û…­³’²Tf¯ƒŒ"fMʬ3®jâ¾ÍÆ+7C?€iuû #èkùÀÇ`¶09¼‰Q{‰Ub9â‚vü/æj ©\ß·¥‘‡–‘ûhI=Œ^øe÷ŠÎ_«¢ç—¼ç^—Ô*4y}F‡¸ªœij£‡‚ÏLýÄX6r“+°Q ¼Óî³Å1¢fV†ªÝoÖV%ŠFX VgÞ­­øM[ iO7>G;¼åú˜ó¥ÈJª\¡oÕü®„Éfþc]JÜÔ‹ÞSÐÊ»sÌñ1Ž§#œ°PnÁÄ|H—¼ƒ,`Òºâ&Í°QVv"È¿Zh NÕoš–QðëÄØÎ ¶LëÞž^ljÊ
-·søÇÌÈ
-S±ÐmOñOé1Š/ÂxSe±ÉL\ƒ#щqÏ0vÄ«)¡£ Rà½Æ$ Â(Æ€Ÿæ^«™™Bb)d[©ð$ÂRaîԽѩ+»“êh6/7ë0ç7h·ÔÍœþˆr¬‚„¢
-^éqñ$¹,/ð{U o€NB#*×äÐÚÝ3@‡ Ûeb²ŠË´ Í—y&81e·Þ墟”t{izß®™Vä…ÔT®Œ(-98”ÜU¬È5*æ4•<‰Fgy¤¸çÎ}K¼YŸ‡±×Š @p¶4Bgz~Y=¢óGŒ%k§qökz`J˜w'YɨǷ B‘ÝØ;ú<uz(5¦È4×_€Ž¢YÛ}
-k»@—Aµûý`×ߨwÃáêkÓ?]ö÷
-¤SÓÏÈçÕ‡Q“ìd¥ãÜ ÒE€d0éžmK»Çò/]ëDÄõ©Ç°^çÏ“r‰à„Ħ/+v3@—öe¾ñ§ Ç<+¿•Ñ‰%Gt…Û>g‚S ,=/*§¹U›Í™@ÓĆÑ/Ÿ¨Ð‡›+ ©Âþ^㇑dêÑÞ5[)+Ô^n$Ç“9Å@™À¢PP¾BÀìŽIçÁu¼@®dv•#çà8øýf!Œ­¦é×ijׄâ<Ú@àNðB CÓBÐY2û|)¬ÎCƹR®ê÷ ”Pìœfgè!ÉØ“´Çgü†#õ`6!O,çËt1)ew>…ùÇùU¬
-•PB5 ³ž dÏÃMWTÜ5’« ʤI•yà‰ä⢀ëR’°È%¡ùµ]„p8“yœ£Gð(NÓHHÂfùŽ
-v@pwI¤¥i†¯Á΄\ƒ:ƒ :š( ¹¤‘›ì€PÏù8e;Ö-}‰uªBbKôªy+Žu?S:Œ&QОÝZFýÎuâ ¥h„:
-v¦S͹)ãÂþ±Y™NÜÝÕ!¢Ì=1ïYLCÞØ(ë,Vê›;á„|äÑ
-˜Dä®Z‰N׊r|°r.V\û€GG¢ „R!§æëÌ\Š&WÙV5
- ±á•l»'Ó¥Ùرv*ŒÓFŸÙ±7;_ÒvU±M/o€0IúèxØxw&õ óŸÕÑ:Óóçø߶xÜš ‡9­ß7 â°ßôŸjÉÀ(C%• K-ÃäKPª¾ EHoO¢GÜ Ö5æI›€Øë€4Ä=‰z¸,g€öu2S†Ä¡÷1›“PL«÷Ö­)ÓV»! Â*Þ™£¤zQöqŸØ)³-Ò|!z¿$0ëR—IqHà BKxfˆ|TÌÂ$ zOÓ„±—ŒyeÀìºhÜ1ñPyT´wBãa{O8X槡ÐkÌŒˆÿx=±@X‚RT £ƒçN^©ŽwÑʦ÷a]‹>Sn Ȭ& B« ¬O7ë\ ~œælãRgs¶ññÄäÏJýþdd¾^¶ÏCÔ”œÅ'ù\îû’h9f|ð87ö°tWãâ|üCñUÑdn¼O›U½½@ïÞ‡bˆ#xGþ1M‹Q÷ÓüÐ?pC"%bCƒ½Í\hunPJYŠ±@ÿénn; $Þ.e@–ýÁS5‘À&þœ‚¬<—}ê`9âÒè0<iA˜ö/ë}}`ˆ ÛDˆ‰®ÀÅj›t)ûóDówHÕ’©Óe»Øƒ ÛP7"Œtv^û‚$³ÆË$T_ôb~XoLœã9*ä¸Å»«¹¥ëH¸(#˜zzå²8™"Ä3æ›epW.Y!éuàyp µí¾ájS€ë¯ãf*>Žâæd!(ÿQ^6¹‘åF>îàõ,þ3¹4´ÕvNÐðNZúþþ‚?BW½|îÕ!>2322Bã{IÛ×°ÁØ ‘-cƒRq%Û‚¢¶™ØDwËúÒó@QrŒ[a’mêÿO¦f8Ç&»=â…‡÷ví÷!£
- 8&ÛL†4Œ¡ŒE @ TLK'*r›HÅètdÊAàÇ)HŸ­÷f&v˜Lè º2æÏ ÜÊ—ÙYæŸcŒ=ìr³õAÆÂhóQÞ ÁŽWåHhxä]]}×^Ó§È[SטÀ4âÍ9†Ëb›ÂÉXÝÛ %OCÝ5¯^àR¿‚(W#Üs’ /òϯsÒ–\„"QÄ*%[x U!aÞAˆ1I81²RŸnÖ]­—–ÕfÕ2ÚÇξ
-rêSÙ™¤YîÌLÜ„%tÍAðŸ$Ù§¬ˆ’µ¢â¡õï^õ{‚Xb,î†_ªæ€|£‹ã +6vEDx;!ü‰`Z‡³ò±Qd&x6E#ÎúŒò|»ýCš&3ÅþhàbP
-t`óš~TÌYB?ú‚XàL!{A¸96‹µÏ
-ñ‰ÍNd¢5ÍF@f ©‡)òØ7¨ '»‚’ÒŒ€T;„0EE~5LEÉ0CrØéç6õ) 4òâÎå˜Ã:•8‘ÆÎ]øª‰ìÍ–*.%î)/ЪE¹Áím”\­ËM×ÒÛ™r)a.‹üß„‰Ò£NdŠè/! ³]Rà
-ÿ-“S^;@+‹Aãa'râeø Òµä½Ið™Fäl?ËôèÁ qƒë]Ko+ÛJ\$ðOJúqVrôÒÁXt\1mýÂgçJd«p2ÕÅéæ¥\Pt£â¥: A²x"ÛOÍ÷„¡¹Ha(koúL·F=4fl¡
-"ÓV½1Pƒè‚ܧ•äâ;Ñ ¯3³º»QW|¥è+U Í8»Õ¸ Ájr¢$8âÍ=9-¾!6¢YèæçSq§Öôزێ/ÀLSZpûS8k
-Œ_ÏÇ?æ†`ýcuû, h(ÉeãdžbYiANp ²ÔºsˆŠŽig0ÓÚƒQä쳜îæû…QÅGÉ0ôœCq“z1h¼­9 ¯WX¯ùëofäßÿyûë¿oEZCØöŠ¶i¯W
- +LÎ9)*ù°IcðãM‘7`d¤zºQWŠƒÏ”åX¢ M­Èÿà¤xD™ÊVÖ‚ÍK¹»Ü<Dõ,AÈ\Pi#.Hc(P“ò/fH–€ÕÏ–®ÝAüz¦Ééà¢KÿæÌ%–…ܪÞåQøiBT¿&ʧŸSŠð ˜üã͵w†‘Ž"1hø*üV êZ–Ô
-Z\È4 Û»:ký8zœö_ Š ÏÓÓÉ4Ê•QJµÏúô–Îg¦ò¤:‡b¸Y¡4ôõ
-í5(ú ºÂC;FáÑnþÿætHÖS•UçV«k¬ë1šŽR]3äV’Ø4FáiH?ž‹ê2kqkê‚ c°zAäz9¥+§å"xrgæe2특¨ ‹Cþ“¦hI„þ2èZn>×pÿ¦F˜nA: u4’Ws××aò0úù=q©ˆ" ‰/)ÍfˆgÆ„ nâˆk`ƒ¾oÎiï þ”ÿ@4 Üÿ¸<\µíiÔPãd ÄþÐøó¹M(¯B+§µÊZÜŒ¤|ÌC[Ëï)¾°O¸@äZJ“çÞ1ƒ¡n§N¨BΤ }Bø;î mYDW'@‘ú„@CÊÍ9CjŽˆõP÷mFDq`ëL„­2OEû™nHfP:€lköÞ)$ª†tLvx ^Îì`Q/÷¡XZ,;sì¡ ZÖÌ A/ì‰\@,‹ÂÆ~:Õ‹réÖ6¥æÓWD3µyN€vk\~ü7!‹¿áíæù ²¾„U!1 J³›sY8ö„èörs™ÀW"þW3nE˜ÌJŽÄ¼˜³[œ+».%ö ­úõ
-•MGðߧkmòÅ}8ç}߀ô2¨®¬€aa=;H·R!žá›‡§AëêZm¸[VÄèžQÇ‚"„¤ëkǵõŽAV‰¶®À=§**rýb1—ì]¦âªŽÖ]]ý5'gàla2{wkî…:ø+†Ý²[aòЩ7ôÔù¯1€µ—‘×i`®WF|°¾XË}+ËóÓ+½ãopðµî§?W“å2_Vý±§>p¿Î¿ì›ÄíçÄŸ¯Ë9 Ó”ÕÝò³toCÙkfÿWF'ܽ
-²w-w¼DZQéRëȨÆí½Ü@`wˆò¿¶?õ‡ù\>I»Gšåè–bp²€äœå“® Ç)À_ÔÊrþ Ùü¼ùÜ ‰?>¥wlgœ|õ0xGB®”3J£\°1,œ¾-æÞñß²ô)øXÒó¼1D¢PeWÍ\:A¢BDj·1ìpªÕ§"0ÿ$0H$ë±é1èYõˆÍ&dÊë˸¤Y_b£ÑàZ°›sŠ)ÌÄÞœÛ0%P„¬”ƒjœJ?fÞ½^øãÍÑ»Öð J,³Ä܇rᔂrÞž\høü_vŸ~™/ (Î
-Û¯^ÜÌi¤>ƒñâQµùóÞGšÝ“‡ÚWƹJŠh±AÂÈO#Æx8ñ»õÑÓ¯ ‡¸KµYŠñ€.Sá}îÐÓ¤úŒiêñÙïøuÆ€¢ÔæùÈo@Ô²(Ï‘à ¬nîÄjã_öø]PqÕÊ‚˜L-ɨô½3DÔѨHÙõ†"LÔtîèËiV©lêÕÙ[ÝX¯Åeí ‚™ŠÌ·®ÓÿÇx¹$G’ã@ôu àŸkͲnQ[õý·óœ`äŒ"‘]jk«n+A pøGƸé/ì0¹aáY—?ûå•Ü–ña­×CÓ óPMËþ¬–µ¨Â´
-~È ¹ºR¥ëKôNÍy8ìו=Aá:n “Ør®tqîYe 5@Z‰<]4Îo-ÄË9ë!HË ß{bOÀCw°ì %Zž
-Ö>æ+“b›ÛP?™Ìþ­]Dd¥½4@DC¼°$z2̦½)Ýs^`"Ûã|Ýá[Ñ×›"ÆícwFòåcð>`ò8¶‚-zTÈ nÒ‘éHÕáKàØ1œHƒ]K³x%í@.ž!nT-ò”Ûž–Œ@c!øÏ
-Èyžb{ÀˆHÞ?P\ˆ²Õ¨H%>
-F-Z‘ø6Eª¼¹óÛGÁ\$nƒ=9Í!£ò›Ü ™£àg9^‚¥—àî¦DÍÉ»æ7õe?1oTÔUr,Ûó|-ª[þÏ*œ¶çU¡V¾"z¶†=K
-U:̈`Xö¤¶û«÷ZÄ0N(ò%zFíz9¨!­6˜¯Iî,ìŠ÷»ØPi˜ýv°†ÄÀær>ŒËOš4 pÂÁ¬ó©:4Î¥³³…€”æ¬âçðzHèœ9”½¿Êç'*kÿáƒèª ž±QõÌ£ÓèšÑ#«RZȺÃÞs Ñ«E¿ß!AFåºöТ¢,û:Þéc— \Cr–x •\:®[}‡W¤U–KB’!ì q2œêSñÊwr[ðõ7K˜`EëV™3<X) Bôuž„kGvÆ®€ &*&À\\ˆë#7áëù8žð.†Õ9žÞð]K–òáUÊ0˜mžÌ7¬Ÿ%€WÉ¿Î\ðHà†Y1Â2¸y ÿÿì[éü»
-7Æö ÚðkJ“ýç­­úËÓ–2ŽË]C«"Ôt$ŸÉ£ÎàV sðc@ê*«û)l<÷'ý,ŸÔ‹²+f1fÙ¾s
-$ä#%Ř^Îaº¸­Nˆ—_)â2+#õ]RøYÒÒ²çMˆKÓ¡ËûS5f!cèà<\Z€A(¢Û}ýÍ<‹OƒæœßÆí‚1/Qࣈst Ž%e°Î篨D6 Þ–…Ê›Áh!õÒ7®šƒ¢¯C˜¼‚Ã{qnÕß°äve•}“q€YR¹úåR±ë8Á¬ìét
-yÈ‹ˆ&íË:}e0Ä
-°ø@¯½/â¤*l•+œ|ãJoNvÀøliÉ’$BÄš¢!ÅÑÓÊî
-cm¼£JFØå
-à‚Ó,Ÿ/Ý{c|º& )Å~D¶¼Y¤«ô8žÔ­ÄAqŸxpÎ7÷Ûø{}Õ+Œï½ váÞá¿ï”<ƒàF8h¸4è›'šâëSe1WE ¾|íVóõƒý¾2àDs³2®» VREGÊè-ô¶/!¶£rShR­¢jƒê0Lk]Öw7@þŽ”t9læ=Ö[cEш}­oËÌÎ ±8ò,ÆûŠ3‘I’V:]9à›g™ã¡ 1u;þˆ½Eøvp]–íÍ9€0òŽ>‡bO¸1sxIÛë¯õÉÇ\â< ;Ï­¦AÑ-Ö~ýŠ>†¡að
-8ÃÇÉ’âà¸L:(i(¤=uà| íkòЊWÇÃ'é!v ‡ò«<˜B­t­­7%S à ν¾ôï@þ}Û¹­gâÀhÇ
-)<Š‘jâzhûò¤6*×’Q™VCå!¾Ðç çs΋b˜ªÀ/Í=G <ÀM‡Àa/ŸGpÎè%îo+ï¦.r9æé,|Äú
-‹°" <%Ð4÷­Ñ/–V†5/AmÔd½v…6{°å$ $¦ î=sº34™.ƒ•æEÈ‹ ñêœ`ÛoÌ^"·Å
-Ûn¢¹î$ÍŒ²Í"€]‚BK›d1Ê.QöDºâ¼NºŒ¢¿‘PÁ f6«tŸ˶‘÷Ø°=OŠGYƒŠ\zˇ–a‹´8{'¸H‚f?ç`ÒÁa3Lµo(‡T1?{ i)ÚqÉKr g?a¾vÎgƒ8h¢3.ƒjU’î%ˆ}k±µ«û@ÓÀ‚’³~= ‰fc¬oÎÙ¯¢±
-À+°²#l˜"Ý„Æ”Na!ÒÀTÔvÙ"¬oçüòîI ÒNa‘ÂìçÏ¢%}Ë][  ÙÎâÑî¯"önÛ –
-«Ê‰}M½P‰X¸|%Áªðr2]¼3ˆ!‚†<5éöàåáa~˽ÍxŸmbš¥Ç9ƒh©ØÀLæKGq/pšß¢
-Ò’üÏ*ÃÚÒDuùãÍù„ë(N6¹”‘ÊË ü˜^–“Ù 8kè¤$ì”)W:nŸ¸TÊ墠A´*LDhT™Él}\f¡B "Û%ŒbÙ*™Z›¥c#»BÞyžâÜ›ÏõÑPc–™=Æ>yÏ5­±ÿÔ°]¢}œƒÁ{uFêr¡Z ƒgÃT
-(¼†©'kBšÁJ+?íñ'Nq ~Áª­±Fèrg×[Œ„›"»ä†P²—ãæ5Jí•-Z—™ÉŒ‘Š—‚´¶]{Æð;1Nš{‚žâÒ× ˆ‡³;™lF ›÷iøq
-]Bàܧ\Hæ9É%§í'iR‹H+É=§?¡6}Lì]†AUD³õq÷& JmùwŽü^š>%`ÁÜòzomúxó@OmÿºÑ7Bl†ZG{wnL[bżãÉ}8# U‰GfP×ßëÇ®A½Ú¥‡›¿žºÐXþ½Lòô©ò âïÖqŽ’‚ÚRåÝÛ0¢>1eŽ”o^¥AG'‡ëUOÕ9×E%¨;bÆ n Ìñ#Àö§~ØÍi‘š, oç,XZg‰Xh ¡Û\aŒ a°à
-þø7|þÿ¼ýñßée
-ÎÝÀ¤ÉaÅ=`2T
-Ôo2,ËÃtOV©ÊR¤¯pwlÏR–‚ÎQƒÛ¯^3¢µ5V¶NºˆsaF¢EhÄ+YWöŠçÍsŒ™FeËh½ìí‹Hj–JÈx°™ìÈp úî±U¬ÃðA‚
-r
-–¿íë2ÆýYK®½˜÷&´ÁŽlœã˜f'0§lÒºãtœ–†is?¤©zÉoÎqDž Fº¼rÄËñê2R„NHcиª­o¢D:cT¾72FÉ°PÝ$L Rò
- nâ·MJмžEî»ÄdÒÄssÁ]]¥á>ÕH«ÄhÿŒ™kÅŸŒŽG’‡ašCQ82ÿæŠ ”è
-¹o<£%3@òO3<Þæ7J_X¦Aûœ‹Ð•^"Ìëö I–jhÊx_»"'€C «8åÓæÞå2J~÷Ö‰N¡Õ87]¡íOýõ^jƒ‹²% 6†NQÃvþhЀ3²æp®ï :ä[ß 47Ódß/ù ,¦‡¶æ)ßþç^
-®8ù]ãJ)³´[ÅÌh«H|žC^-‘ŠòáÝÔ¥òÓzù6£oÈ™vÆ–‚óæRÿèØ@ïs/€žXÁ_®'Ðb˜ð08ÈüŠŽ8üµ@QnSn2yâ®r|“ŠÀùV\u' ±~Üǘv_–#¶‚Êñ¿®[òÎÇ5`¨Nµ¹çàÎDüˆ ä±”*FwM^ÌKÌŒ'J±8ã*oMòoèˆkÉ°câªW1|ÌNÑø†Kþò1¬lSR]NŸŠÖ.òiä°íÃÐEŒkDeªM’‚`)ݦœxÖÚÊ¥Pß«íêð]tfŸ¸
-”¤ºê›ŸÂjÖ…‰ü³BØŸÔ³”N™ªfÄ¥µDÍ•L$§n ô­kV bvдj):<e@«Š«RÁj6-,þ2p~|v4žM!|—Sµô¦á„èSƒ‰b©C ¦¤ÖÙ))Za—3W- ˜BŒ‘¨ºdŒ²³€½ªa?~xAïôöç!æ}×SH„3&^Bñ6ƪœ¥s H\Ñ_< Âx‘cò{ ,!ð>µŠ¬§;¢Š$H˜
-¸rÌóðø‰ˆL'd•³f•.ÁI¼ ¯âÇeÎÎquvà‘œ³{!ÿ­ÔïïÌŒÆ+ìñ‚1\¨Êt
-ÿù“JÕÅkÕ.eÀZI8ã´5zL³)(²Bš,v°+Çr÷ÅQ3
-†ÕÅîX®Š‘K5
-õJ§î§åªÃÔªMò[ýshf˜–n‡íæîTÁXø¦8,d],òʺ»§0ûâ×£²ú+ÂÈ¥î—w2œÉ:lò¨‚\ðsìÎ@”˜bFI$l!Ø
-Í\µ]vØ'€M ›â3èV÷?AåE&Éùhö±¤BÖ¢تmGÑæ¹T…Cr:2_.mÝVÔù×N2 $Z0HÒ¼`ƒÁïb&FÅÎgÈ1‹L[Ÿº#¶£•'ª«/jn¨5¾Ûýsh.LYdà/‹‹$8MC«Õ£Œ(!¬±ateŽ*“чݣEÖÚ4ê~TBË Æ´L;aHE¨Ú—|ÞPD Búõ©ûLQ*V ÚV{Íñ߇ӈ·j‘¢š ñ\ðP·*(p̧[ q(sG~Ø6ykÏ}ý¾Ñ±²"Ø6˜+©Ü
-`
-hi´‰æ±ëÚ&ÛÔ“Xê<&Õ´·*"Úꃌ¸¿#éãyòâ‚·Ôº‘²¢/aÝ
-ôtÂE¥-hÖúÔ=5A¾ZKm¼ÏÆ›¡ÂÜéòéê²Zâ^pçœ{×·¹÷žó¦£I Ù‚ÝH«±Ž1@ñVlñßWƒô±Ç rOxRÄüþ\Å,…ê³JˆÓ]Rv‚v¾vÒô—7Z2Á~†@aI?ÞmZQµ”´;E»øäÜ)ÎQ}†YÇü?‚Ø¿
-CíûØAçç¾DëE-½Õ\Ôrà±±IâÆ‹œ¡ec¢®-Ü`ƒ, áÖX kØe| ÕlHÉxeÔ©1¶DGcNu·‰Ï¿ä O‡˜÷’
- Žìn]eBL T¬6Y;„™ë“‰ÅÆ-„­È¬¤æ½— ‰Wl£[ÃŽÃqU8~MyZY[¨v îĆWEyÓ7¿ 0ÝW6RîVeeÀ­av«.)ßXsŽK‡oAÿ<‘z@äš,ÝÁÚ<hLûF´×Iý§2H.†VŠÒâ~VèÚ)˜ÎÜ-‚®NSÎðÚM:b"8°Ýé·fï9î®B°q ‘O7;‡»¸MkX÷jõuÍ?^ûf@OQðÓÏÎXZÑpf<-£ÅÝ#þU´Ä ÊEóü€n†… RabŒ¡_ÊØ´Ê5R·ö–
-ÑQ—âçfÅBAª LyÐß ©/TŸ´F
- #)Œ“_Û9ÂVîÃI±îáªÈê† ¤"èæ{eŒ=RÈ›¡iû=ˆ vG%3µqwrüÝ É]º|¬à¸A=¡Zy +—¸@í‘IØ$ Aoh³5Lºä¶(“{SitŠÖ™ß{ü´¿ðñölÉ謽BYò#W-$nƒ ƒKá´|ÁB86˜¿nó²:Ãöš5´ñtNo˜wnu^·éSÊCÆÒÂÐ|Æ9ip¡³ZÄúÓ^eXÕ:®Œúô„§JËêŒ81~ÛîÒ•œæ ýt&· Iq¥åŸtÈÕ¶ã YL¨ƒdKã3ÚXDÿ<m =šæ­sl/ÒPMAŽ.})§¶³”.mÄK;ì½}äÓ‚ôð:€£r•ý¾´8A\)
-åü Zùj>ShÖ««ËåW¹Š\^+É;RHžž—ÌÔ˜mg2
-žÜB¾rsŠÕé40ýÏ`{@a[ 4š¼(¹…ú²à/ Ðš›X
-rSŒ=Uw™°’)¥`Þê+¨ C’O<Q°ŒtÈ«·]ž :]K%úE"]žðBž8ƒžð‚nHK1vÐ/&®º¾ó/
-¼“rPÛAP ‡Ä4Ü{ñ{L)&†|Ÿl–0€=‚è'Â+ö¦shïYŒ[ÈÖ9m{ü®í<Ρ§cæš~ríp /H ´5¥,P}ŸLÜ(þ82þ„¿­›gÀMäæ²ö>äÚ|ˆò–Í.y
- =ô½üËx¹å6 Ã@ðF…%êy¨Üÿ·C'N`qÕýj@ز¸ÜYÚëU×{ 4wIî‡.q‘*ÿ<6Ewîx ì®Ø)±CÝcÇÂ1͚ƎyÜ Ó/¢pWÜ¡á¸a3 ï0qã…9©Ýù©*üMð}z %fŽCbÇ<@Z)tv¼ÝŠJ*NÇhLî«j숢ˆÏA¾hW.¾aÇ<ÌaÁ£/¯»ã"~y¤Ž¸@ñ˜µ +vD;#v¢*Vêi-Ø‘+w¾Ëø¶¾žŒÅ‹•î(<ªfA}øv[¸Ž9x(é 9e|<Õ x(ò­‡1˜½”kŻǯú¼ì•V`ØE'F–X‚Sž’oüÐ<÷ËÒwâp~ê©À#Õ¼‚GE¨XǸh#ÏflÆ¿‹"Ux]cv³{iOe_Då½`¬èñ1<ŽšØtiÚ±zü €HñäÁŠ ÑŽˆoëà~ÒáBnò9ˆ£2˜,4 äâî =.2 B×PjÝ¡ÇÅ:¦ƒ™Cg‰ž(ù€UÐóm¼>èI|?ŠlŽTÄÈ>tÍ‚6ÿðéÙm[’'J+?5È܇LÏîYGåE9IòKèÅ©+7d… f—Ï'‰’$û=ÌKóF³\¶ís0†´û!7JÜðŽœq ºÙxD‘@ƒ†þ {ï* z82ÞFl…—Í$3⧠öÄ+ ωì‰ ì‰Âð êZÙ#
-z¾ÉøC65hŽ¼Á
-Gú`
-H‰Œ—A’c¹ DOÐw¨ XA‚ ¬{–}‹‰ðªêþ[¿$ùËéËSžq¨”"A ‘HÔâññ/÷þ賎1¬MþóñùË›=ø<-½ÔÖrƒ²Œ>­$ßæ‡ mÔ´^Ìz6AÆ£ÌjÅ[÷ð ¤>rÔ:=¦sÀ äï_uÏêV:GÅ›s̆÷
-ŒO4u¤Uâ±Ñ€”Gfµ1Ë´1|CF)Ñœ¿Y¯ëªò˜}”0k¥] ›Q{q¹ £…GFÑé‚ø#¬F&)òx1²Döj™ÞÎUÏ Æ9mF#µ~ýûWýøë—[<š{Î H¯cåÑÌÍÈKñ¯êµt2BFÜ€Ü?z+$ó”Ì[æh­ž¸ QJ#±DimCZ¯ØkíŠPúÌhY#º$ øͺ)„bÉ;b¶s ß*6[_jœÐ¨j=á–j1­SÇ2>~ÿºÁ8u7øV³·ê¤HÁÌ>K%¯”²Ý€>È4{1j[o@‚Ôä»ÙrŽy.#M#úœ³ä\ÂOFŠ‰ãTnÀ¸1WUm>»«)Üڹɉ­%o g‚¬ˆGõNmHçPêW²Ï||;šM³sÕ3ˆV±Î¾Î ’jQ©òw¥(@üB_lHäèFî{=Óà¾~ÓÛ¸^ýÊT«–y‡‹Èhîr’>
-£ºÖ©¶Ýˆ¼ j+Ò<}^sÀˆÂç*}½…ø®B”ž=/¢¾‚º¨ŽX tsc>Ô‹JüÕ}‘RDul.CÒh$fô­—Ùi6^ ¡ÆÕp¦ŒÖ‰â€È-]‘¹¾ Á\`®Aú±!=&- .
-•³ÑB1híðÈ­8=aþÜcÔ¯)),>–6½`ì‘RS¾'a›¤t4–¸îæ2xÌ A˜;ô_ç°Zb’³¾ÒzŠär£Ö¥I°ÜçAH¦ÚTî÷»!675ìÄÒ5 ú3„fâ †¾m|‚ì›èÓZ¥‹-Û›sÐFssZ£y8˜uëd¦š3lj†FEÁ!.¼:†èÕÏã(»‰f“‹²¹uìC+ÏM©AºbKÓ ¢):Fq3ö,š‹6° )µyú¼©˜†}¡µšmkÆÃþ¤t'J5µ Í;…(䧚Lv\f{pî´3Õ¶@?7Ö£ó…†Ø7Á¢¤ã¡ã<ùCÕ¨\%Â+5´Sʵu?Ù£{‘’^ÕF§šòB]=j‚iSoÓÒrom´áo(í@1Á榖ºñCý¶²=AŽÒZ%†näý9Œ ³HRzŵÀq¯h’ÙdT±i~½Û)ˆ/ZlQϲR$w.Z ïŒa’Ç°°uÎÄñ0™W1§z‡Ñˆo2+Ÿöå‘›ŠDeã©„[(žA˜!î2KéüW 6¨‘ue?œG‡z¼´Ë¼ÑLÒkÑ 6$0PÍ"pZg40ű{ôšÛ‰æô¿Ãõóø¿ÞÔ–Ÿà¼^Çåt ÉoxÁ4}ÝcðxÓüo5  &qá†Ç1qj¡ß”ÙÄ­VY|Äà¼_¢I2êØMakzÓÚZLˆÌ®ak8Ú…tm—U>™Æ˜!OC£H{ 1¬$Sv¶Ý@tUcÈR™Ñi²ñæ9Yn¤ÓãÎY B5/$-â ~!*d!õ‘±*Æe‹L´ü¨œÌ7þšiÂP ùòvšiÕLþBþõîåOäç ¾œóZ“-jÕÛzÚC»C9Œ<W=ó¢©Ûå¾Â¶sx!Ïhˆ:Éíjr¡HBþþ‹ÿ|[SvÑhZj8Ão¶¶¯7t¥ B>a¢#%,¥ßJK]Z¨­ÆX.Ž@§i,^ù©2²²¦ýý^yì‘\TÙ>ùES¡[!צœý²ùNΡ3£ßôrŒüϘÚA‰úD\0Cì’¿å;á­)Š¸Àú7|/L6²‰D2ìærV¾ä±Ðýècý1èEÇÖuò3lz£ŒñT1F×O7nùô`…Ó†m‘×¢ áZ˜ÁW"g<ŽÜm+÷bð_«q³(¶ôŽJÐñæ-Húˆý^  \„-ù¡„ê–F¯y„ŽÍ0šSGö´uU}`‹°à¡au†Ö^D-d?îϺj²v¤Èã„ Ã|Á¦2¨ÏUÿ¿¹Ô†Øò%l,¬iõž'ªªÝrõ ^Ѐ^{3ß?ˆÑŽ–Jƒ\íSÕ;H4N¬ÈÉ:LÂw´"ç†!á½· ¦—AΉ$QŸ5†îÚ§`a1~-q´7½± ÎÆħZê‘ÃÖQ|ªafµÏ+è†Ï…Î Š
-3ñu?qN¹Aþì‹ôw ­+8k„kŒ¶Z$ÎóÛeÊ9Ž¬Ð ÇJ"Lè“ùäã2ÅÔrq°+…@èbòU;ã;Ù+³ËKÆîJñ<™€ÀmbR”°Û #NsÛì؆7çh‘Cï0vƗȲãÖv4´ÝD–~ AÖ"í´4ïê.(ˆ‡©Ì0ñÏÄ¥ÓØLí/Beà`ˆ®FýÀÙÌaÛvE4†ù¹G;>´~CEŒÐkÍI¼"àþcÐS~þ¤M¿MdEuƒÎr‡ñ¸<Y`â ß®íkØÖ<ô“šß€!EÈW`wÛA°FÚ>E´A^0ИêxÔŒ†WžjÅ“®¢Œ‡æiaapí™[ò†
-ŽäcÇó •çÛÌÎUÏ þ‚“AìPOm¹Š†¬‚`d~×
-3Ç4çÂŽ05æ ËßWñPÈíy]ň‘Ö]QþÀ`Gÿ˜ ^ß0ð˜üûr’TµcäˆsÜ5Úצ;âF®Í1M1úìmÓ
-&¯#Øs¤T#ä 7„!7»|ѵˆÈŸó¯i1º8_³Žä×ûå³Ñ+Uv³ƒiÕ$¶†‰¸3UËð0ìæ¶@¯æEõÈF÷tŒÙ^A_Îq=“FÒÎû½¥bPeô]‹©ƒžPÇcÉ´˜
-fhÝU…v¤!Ç÷ÌvãÛq­˜˜s ÜêTëSüz ñ] {O;W½‚ºØNÇÚU ÜUƒ!WR))¬î "ãDŸâécl%OºM¾…"«-—ZÔhÁ"Ž¹Ñú.„+ ÉK9á?Œ—9v¤G„O ‹ÈàË}1çÉ¥«èWmÎýç
-/:|IA*Ý/º”Ü ê©èóM‘äq‹SèÁk2&V¥
-¸C›—Á ’eÐƵÞàâ'ø:6R¥Ê:à ÜÔr°C¯Ä*/ù»zY›ëÔ˜[Ÿ$V/Ác¥Øî—b* &ªÇiclŠ’
-0¹Š9ö±Œk"wö~Š’Y–f:¡>sœÌªx2)Dz{ª
-`vÓ‡g‹•.»Õ+Dj’ÙÎÕjçà:Ùuúœj”ðÍI€”Û‹’Ÿùߦñ°l#î5ß<Ä+ª†Öý/þ
-Ð-Žæ#£¨:¾¯Ô éýª"-ïï…ÂigOfÂ
-^ìzS1Õím»)‡®3“¯§fH—ôìc
-9”8eo¥1V?”Â#l–vÙ™Ø4ÉŠ1–Òê$ùî³
-0 ÷P®˜Án*5¬~)‰‰«Qì)4S¯çà» ⦯ùäY¸m £6”l[³>é윆
-tOø¡x²$:‰WÑêuQµ‡e^n3íÇT+Â.¾ø<„«š!js±Æ).£9ÖƒÍÄÇp¯5/&ˆ~@«,òPÓò/áúè<kLÛ0ìŸö¹¹IdX,v}[¤“òè–W.\ù°"î̧˜N?&ó;[â(£`Á¼Ó/4‡¡ E0[ž¸.tYÍ&s½™7[l“‡|H°Àº8zs—n‰µøÃÙ?̱ßLtåå_ú €Ž£CÂIfì4K¶S‹¹Ùô¡’Lk*bК”Rç¥H%Ø"ü”ƒxGIMÚ{þ¡'*,Z3Ú”w°Çâ7ˆ»CæHEÐ>ö¨âI×)‚. ƒÌ\ýsð^tØNÊoƒçï(!9àÿ\E8%p¶ÃB½5»5XxóÓîóé#4ú¥æáíI¬çÔZ.5ªàf<c…i Á³7ºGó—• ¶Ã‚^u_ÔlÉ–œ~É»#G‡VYtX˜öÀ*XB@6ôÐò.ë,ÉèoJàKäN$\óùÒSsàòt¡«i~cŸ‹¬î—<£â'è:ÞQÓ Yèˆwôç7üð"º„@÷¸„+I€ÝOJeÎøU 6–ÞsͶ.G$ä‹>®|Þ¿(à—ð™í\Ñ.JÌч}XºæòóÄæ·=•èSSxVÆ]
-…×sæ</oR­¸ œ•ï¼Ë*øÛ½±|#ºº„•ÒâKr<‚˜qŠ°þ`:÷°c`9¾•Ôå3SÒ!v’ ¶u->´m@T“U/½‘«ê|lP\6á ìù>kÃyt2UI×™ô\FÛ]uérÄ¿ÙãK¢¥‰³La«‡ä{rÖðrÑ´€,ÞÖfÂ6ð+s_Jî„ñTôù¦H«. uÅãV„)gef¾‚åø²Ì¸JH·RÑR¸ÌŽ®g®$.àà6ö2Xbóå(O˜$#2Öfú"?qúa4‰ÿªÅ‘>ÐÙÁÉ=å×
-ÿNK ×lû2ï§ð‘*Ýâ¨ÐlcÂâô=ÕkIµ°•é¯à@'›]
-Îpê!ÅçTô¬‘òÀEø­Ã2¿,ǽâ¯+ù½³Qƒ&Ä~Ù"ì8Ésm*¼éH3Â):fT aéñ)±%v/±ãÂÇÜü
-í‘oL
-œæ-Š¸jY‹æ%(³Ú"
-z I› ºpD:RŒU‘?öÂ#ºŽcXÅ©¼Àév©Tˬïy"LO'v¶·HeP­) ÍÞä´Î§~Ð+I[ù P ²»#ùƦŸ^TÙƬ}œ‡ßRŒ_g°ìG)K=”y‘7Æš-â’7• ƒ ±Boã]I(ÙòWØbO$6z[²1"Z]cEJïÊtM´\W½4´hqò+¹ëéPj—Hz‡*[†»ƒ¤»KÒ³èáˆíÒìxâ2ô6òÖq{+ ó²Aù4ñY$a7šÂ­wÕ¿$O^Š¿
-õCwT@IY
-¼¡ÛLñ,ÇVBV!ˆ4²î¼Îm+xÀ4¬ƒQyMR v´e0; n=¡ná=Ê…bWô¨‚Žla 2(/¤­¿‹ ø!dD²uiË œ?*”fÅÙt†Õ\fÏ…96‰õä€3‡±eéÀ~/A‰7™þJˆ‰£ÃsžtËmà[⽆´Ýù‰,íðggj°9‹0éþ¡¥Iþæ"² *(欕<¾‰·×ÔÛ[¤3t %ƒPRbΧ~P¬ÿÜ\ÒÊahr^ãê5´¢´–©›¸%8~l¶»Q[Pd%èÚ’Iè×`KMœŠ4$ƒbÒæ¢ì
-uŒ}xñ-ÞݵE*¡ 0ICm˱}òêŬXk‰ 4ûìv ©¢+ÓÁ†WŠæÖ0úvÜ£›SU.ãVÁÿ’RIÕ+#v0™)~Q§Bͤ ±÷ùÒ­ˆIÐÄ=ºú?üÆüÕŸXW°ø^¾lVz­sšUÞמÝCQ‚-ª†›¥R%<¨N¡/Ÿ’Åßð¿ëR¸Õž×† ǵ%É)ZÚ0ÓùPÓ>‰“×ô·Ñ³b^§µˆ;‚=9ˆ"5”s‡\F è.ð&4Ô¯ÛÀ@ÝËVAóªL2­9)8‰Eàö¥•¥]q‰£ÕÓbv‘‚JÏ5ÒÅäøƒ9úµÆx7DÐ\aIsrÙš‰ëdXÔM¤‰ÇjNºLUvŽ¸8È£!;©6z$ƒ8çì<&j`¶0ëì§}uàÜ:W$zyÑØ0ϔޟպcq`=·Ü‹Ûø‹xCg_ŸúVSÆ­èï‹"­ú|AæíãEÑ·4ä<׌
-0iBIó&ßÑ6Íf
-׋˜ÓBWÒN5,¡yÚ¸)#DjúãàšrdI¶¦EaÏE€¤uG2IŒ·ñ.öÈK0‘¸óÉkr²ü4Fí_ÆË9®#¢'À`Ó˜è}1”IW'`È"`êþzYÝ þ/QÀ0ÙKuVf íÊdJÅ6¬>ŽT’Ñÿ”Ùrß …$@ó,ië@ÔˆD—• osÎÊÿ!ÞÈöÓ•¿Û:§‹tlÖ,{£û‘f1#Ž–tSÁÔ{ÛƒhÒ2$m®¾†‰H„fBâ®8MÛÅaþ˜,Bº­Ó"å"›|ðÊ2¯_n€g2‚hT…"ß_îL}@ÚЭڬWîs<ÍadÖµŽ?j›GúÀð=<… ôô·áûdë(è:7þÑ¥­Jïú”$„:PÙõPê Q‹Ødfè>ÍBRM¡]#ÒhÏc ™”BÑ{ÆÛì ´³°…Öhåa$óŒƒè›fHA2é³…TÊɈþ¤l¤ü¼êN\Ž8tÂàïéâ§í•Mëó 2ö#(UlBÇÌ"_Á •*ŽÔ$³nJÇ;¯¹JÀÄ2æ¯ÖAcIB,Éà@¨
-›W9¬Aºæ>M2Þy—xÝ0
-Ö REƒÝÖ.jAFÁÜã™\8dÕwvï}Ë ”˜FJ$JrÃWÙ£[qÈb;Ýu)Ñ€Aþ€¿ýÄ¥Z¦x}/WÂÌñ«²°H$<î`íå€2T’ô1xäõà“ [OxÛ=º´©Oø hµ<)H4ÐÃ¥´ç 9óˆ-‰æÖòˆ„c‘¬ÿj ŒpbÇ"&O~U2PV?áªø]Þ3€ÏÔ ìaù('ª‰Ç~‘†²Vn‹Ú"|ópàBTTá“X2DƇ"ÒÙHÖA‚de£ìAy=Ù8œ¹(¬~¤à#ÐIö²× ‰5ˆDçn„#QÒ¬@´'VêR´ )eo…7"´´µßIO>À”òX[‘å…ƒ.Ýëª5ú Qø | ½Èß´éÞê
-º†&A †¸Ù=ƒ’±„H€È±ù>Ûu6š=âV‡§ŸüßJRvO®ëë5iZº‘¨·âÿ==ˆY…)¨kîl¨t‹_èªFË»©œ$ðAÅ EZJRíã¤8þ1 e(seÁ*ŠRhQë΋$ÁNl'ЗµÓ u¡!1
-§Õ=HÖùZˤ Šhºrë— æÍðÂXt5R›°Á}k÷Å»xO×ÔêñØ™ƒåì@V±à‰†¾‡9g²j•ùq†à]ðAªWVƒGNA>ëüYÒ¬BcNBaZœG*¡ÎÛ¹ÇÚÉXœåQco…lË4&bâ"ÔdI«âéÜrïtý^âuñ¢v;ëÑ+þÆJö¥\e«’—àЙ›[þ>;1 ’`K{,¢èŒt(¸˜Ô«Hª"úêpÅú¤×‹ ¢O+L÷L„˜xŠEKçÍÐÈ}PT„g«
-—šÝ= üYâRç1n—Š|”!e¤Πv)–$%òѹեÄäÓSí­n ¦Zè O±ºWÿ4<
- AòW—’¡ ^Ñí\êZô‹mÉÌq@½W¯Ä@` Ë­»ûTÈ"ÅõÉu.¼¹Æ£ßíR?×Æë…KÿØSê¾ ‘f”a¶àzˆ›êGÚS¹U?r~ýðë¥&f¾ÆÈBÄή ÷“Ë¢ Š¦ï/½Á<ý65µâ€~x :˜‹Òüˆ? g»+èí™3iÄ ¯ýûòí?þ¿¾½ôژ⒆7'­N¤Oˆb‹q Qº ö¦!ÇDSФ\•å˜v6‘JÀTò× ¾< R(ÂfkÇÜHºü
-z{æv*K¯+?Êü² )1ùªcì8˜½(1É1–aÞ,ì€~x ¯RD
-Ó±J)Ò ÒI(”“í‚|i3#<BeD¤ã‚ gM#ØP
-DÓ‘xË|øÄ´š§Zq Z‚vÊ’à8ìÈ£ é@ lAhY£á˜}•’LÌXÄDÛGA)=:£9J³7²«ßAJÊtL¿ËïØ^ö¨Jh¼Âe×Õ‘íÄ=L$²/“3M{* NuO†À¸žtÄLGÌVã¢q‘lOè<¯.·'øÒè«ž“PM…æ[I.Äøù {–ÀŠhø93¦o«×¹ïÈi8­P€PÂäá|Sˆ-d\$d¤R ÙZm‘÷f´ i iúR°"^ŒHOµIëv?…Ü"º¶°ŠPm|˜š_iÄ=ŨQc¦É”zD¥²õlüÌHÄ”ÉÛ.¿Uzk(”P|&°"ïÏî ùPPâxœªZóßAº+ád#úÚ ¡É¸±§îÖ :ò÷ÖÍÑR[SË’*EÓË2€íëê04P]o
-á©DaëŸÛ;\Ÿ]ïÙÀËÚ8dr ?Ÿ¡Ï‡¤åö@&¢f©8Ýøî‚èF$‰«TÞŒGËJ<`Uy[\¯Æ8J{¶Jó‚&#£411ív¤¥ù•Q°)ï
-¤|?ðˆ‘wðfaÒ)”uàK´š^)a†TÕ˜‰Ú4HÖ¬4¥ ³;mUÌA åÍ]ÇF¼.Πx›¬Ê—! ÄváRq ¼öºTäoIV-Ðu¶“M­#¥Ðž£Tä®ds`Ð¥xùÑúœ·›‘÷Ù:ÇF]ˆHMp<Ä+o/SÈÌü³‘Œóh>þ%þÈ»8Áyì8§Æí#ñÛN ž·´ì°í
-‘Vãæ$ o‚ö–ò7¾ym$N0à ±MÞEÝɘ„ï6†Ô87àIC9ZR8sûN]28™Bß …ÂîSöcï—ÓQnë ”¬ÉN;“㔸)
-§dÀÔ…Ý[ý¡7? ƒ¨ÞF²IÊ$çáß=çš1k&å¸AGB‚ŠÆW?/ÆûLy[¶¦èvª¦,8·Ö‰Ì$Cî8×Éaïhƒ>€˜«’Ê¢Êgî«Hhj—Íj6[Æ#-J
-Ù~}ú dq,¡Âˆ>A¡5w8ñH\ä ç4¨QÍðnêRx&Nb”0úÜj6¦"Š˜ÒÚ*=h’‰Ýñg93 ²D,ˆZ|V@²N&xJ Na²LkuËpMÁDòC’âéñL¼Á¤€o.HN‰ü&¨ÞBµ{ÑzdERP°¡Nvíò¸kßWG`}Ú·žÄ­rjÂÝ‘°¢Ø)*v«âñÂä œ­• ]iÐÏòaAP‘Iñpvêãëò²Xÿ?ãe’IŽDÑäòg®³—u‹Üªî¿í÷t5ÚÝŠD•
-›*©éí¦}ˆ ûσâód,
-®i1Ò©ûÂɘÊì"pÈs„1Ñ<y·>·2B |‹ý¦0h=¹xDoÔ“±®Ð)J'A|&cÔ˜K(uŒÓ‘RX-X:ò-
-w±DµveüéxÍ%‚ŸEY¥´£˜"_X‚ò ØÌŽËe<œÑ4>l,RÎþ÷Ì(Sk½R`þüŠ@·Ìó‚h.”PEUò­ë2ߤÒÔº¢j‘w¢¿Ö²¿6ë‰ôòZ³]ÜÉ7j!”Ù6µ”/¡…|R`#„SåIÊ@¦<Ø€‰˜Üd4)äДúÒŠ@Ç£…BÔvrxœÓ|ùdÊzµ£OPZè|ö!ÎDÕ®ÛŒy, œŠÌºìß½ ›tL?Ž_ƒ>#À~üÖNQ‹¹XYϽ^cf,qt5”âw°v²óù醼Š7´‰W9ƒµeèkƒX(bAõöíè@ÍÝš”QüÕqÒŒR:²)Øå³÷V!í$ܦ°S X…µÇ0£•§Ê(ª¾ïÓ-nĤ"µÅÏaÒ0ù}l܉L”†Õ!•ºJŸPÝ©=
-ÒCu}7Yµ7ç`|1¿ògçÆ\W ¾émO½¢É|§ž>`HØC\|*×”âÖEÓÈú:±´aò‰-& ÷sh‚IOô‡£
-óuXˆ_„Ì"Í£µIôð­ptŸHÅç$1©Sv]þ;‚‰„Âcðölv’‚Lh^ ‘òà¯^Š[MjÚÎ,‰TM¶!×Î1ý¥$‰ƒÀcf Ì9§ÁbsͶÆÓäC"dV
-™lˆˆGµðœ®¸‡bãg:W†¢LÌY»Õ=£ü@q 98ïM¿ùGôÔmIÞƒí¼´ª©x¬ Läë@`ë™PbýŠ@°TúùÙ éPûöPÜeñïÒ¹6½Ø4Ö£«L3öPCG!ˆDýÖ½»_T‘FU£ºò
-i±N?—o#âx¨<dzP‡Qý¥q]ŽBÒªAþ~Ò«oáExWIJ®ÐFýÒ&òIúz¿ÅG¬'9¯E¤„Söèðõ8¤_= $ZÅÆœ£Õ\¨­Ü[¦9¥ªÈ·ûªT…7£rë=ü\p²k,¿¼JÃ.ž…dŽ.m©,“Àú…Î
-A 2•íôõ â“‘³^
-çÅÁïÔ®ûí`V¤¯‘i¨Wòµ ÃDèï)–‘€ëš§@}§i•à6¤ÞA‹®UÔ Ë·í¨Á mOË
-™bâùþ7)ÛÙtš'cÔÈØXÔºð¬hÕR¨ƒWD}K‡FkËÛêW â (jDÔJâMžÂï=pQHƒ”ÃxÅQ (ÿÚ3Û2ä<Õ*Æ?%I»óJÁ×Ó̪¹ðGQ) Mi;§ÐÉ•T£^õ³ÏÐØ©øfÝøv…ôäÊD-ñ.2>-߉, ½²ÄFáÌ“Á$™Ÿƒ°ë²O›ÑJlNn'3üq|EÃy³³EZ0Ÿ˜Î;èt},FfÊ„¯bîu(À¢¾¯’³î÷QœÓ¤ÔgÞ¬dÔ¦ÈðÒ>5ïã:ÜüvÚáâßÞÈïÍXN¦’YÝÒ.³Ë’ÑKè§t¿x—vmyX(¢Å€³°Ð—\â›x%|9þ<˜
-ÇÔ¤’®™å×ZTÏ>¥uÑ6'Dߢ;I‘+¼ËHdòW‘]
-R"⥾O–Ú*v€W„éQZ’`/-ÝŸ+¦;T€¦ò¿IQ¶ÚwêÀܲ ÉR#U†¥á7%“´S[Ø7fk®D'‰}ÈY[ËQç“ïàb)ÌÓû5ŸL5Q ¦ÁFÚ`1º¸“ÜJ¿²Y¡|•9JqJñÒίö¨¬‹åË6J‚ ù>~n`³:0RZ~–~™½^¹„McqøÆnÁë
-Ñ4Ç+Å«à•!éèä˜Øfnf
-J E.xXñ„ó¢
-e¼$èÝ@Å‹XÅùU ®šÑ†¾Y5¢ÙÇI[AŸ¯°ét)¼…$лüvËUùs[ͬAä
-èˆ$ˆä“É›EÿF±‰ ¬„om’!å^OülØfZ‰^2Ä°½ ­×ŠS‚–]=³]®y¥ž@”A*¶5àwˆŽ¢÷T±\³üwÿºMÃjléuã‡Û4cÆDı@s|Œ_pÖFè»KÓd{æR¶lí\àä—FùQwÐ’ "xð©òvºŽZ¡c·y|TUØ£TX±ŒÂúQÅ©bÒ)tÏNÆs dçƱS
-ÞÇ—zÇÀŸ@‚µh dº¿‚ÂTð”†a¦ÓÇï@U¥¢ŸË³èaˆ© >‚
-JŠûÛyØØE„ÂþÎòòK§~²yùíèà»ÔhÉúÍ.¶ê£¡zÈ&Û—δÉêq“zÀ|œ0ã}a¾šJ4v¿04NZŽ:0b}~¹0µøþBb¤»d¤Ãšh#´·Ïw/DFXN¤Œ#Ÿ/I\¨ 5ò
-š•î¨T$7¹Å…™†‰íPÚÔŠ\k™å$Èê lš“Œ¾ÍlÖÊ Ä.V@ó4¿ ¬bI$Ÿ ý¬1§˜Ô
-ÊåÂûl¤œ™sém‘$sÇ©øP4¥?c˜u€øQ8”Œâ›W}òÍ-è$Jºã6Ì_¡rozÔ}Ô-\6åKù;*«1Ì-@ó]öp>JÎ Œ ûŒ¢
-¶°¨òQ>žÇYpJó“pÏäQÊ;G¼û¡¡¥@–Qª­’Ü:úåë€Pa7¹v¨ÙgØqšÀðø@°RÄõ}„¦h˸ΎÊÀ)Y‰#‘Bã$urãñJ˜äþvâŠn¢„í¢á©!,“FO&k3®£þŸs.ób3FÐ8)wÊE*991©OÐØ¥eöõ$H¦ÒCZÊz²ZÉ ´“A*¼³k³ÓIØT¸K¾K_û]!M‰¹Ç`“ '<F‚
-Ý…~I-VEKq…EFQ”–/Î~ d0üB!Ã*À¸  étIKÞ0¿´Ãz"ÒfLÀÒÑðFâ9o'6ˆÔ ˆ
-ïÄôéŒL—²ûÐbc“ÊÆ]¯"70ÇÜ
-–)L¿Ú£z˜n¬|îDgŽ@5ÔÞ%êÒZÊ|€ølmQHÏ8˜þì;Ø:2A
-D§Ë€`Бú$*~ò&¦Ág³ÎWYXLJ¶Ï¨…olE”râë|¿úJa¸JÚHy»zÐ1@‰ÉªãË#>Ø
-@”\bÅýÆh3¾±ˆUclÐ •-Xåä¬D™,ìµ™¸…„qN~‹l (<éµ™6ˆnJì"$ž¼p…#îÂ[(ƒ/ÿ´–an®¨‚Þ·åó¨\‡&Â%‡ìd=ÔÞ-aÁÛüÇx¹#GvÃPtÚì`Šÿ±R¯ÃÑÌþSŸK€]R7»,G¶Œ~$Üg²Nó’Ao+ƒÂĬû4U4dã ëÒš´rÊdÓkÿŽö `F¼\Ï„m¶6‹?á`M +Ûî¸â¢ê'Þ⌲aċ |.?ˆ P®ÁiËcØâA  îðìÂÍ[ŒóÊz†ù´Fâš"?ðŠ*@[¸)oˆš¶§0‘2©²ì…§’» º|g()#ßanÌE ì!ŠIŒ£: 9”[¢¿Y¾‚ªÕº§)Í]àNÏŠ9í12e§ QÒfÈzÙô[Éç~ÜŠÚ–2S¶Á/oa¸! UWÔͯ‡a9 k¦Kô{W
-»¨S œˆIîGEã·Ò@à ‘ïÞœö³šo øó“.ífÊÄŒ •‡ÓeCÑÒŒê%5¸¿„ŠpôñÔß.%82íé‚ŠòÅǪæ”ç7&h1„“D>[z¨aø¹(PX6bFÁh”à­D¡<ÉÜæ~3Ž”€iàÌßú1ŽÏT~ ƒ‡IV6½¹T•`,Ê)}Ü0æDŒ³Ÿ¹Ãžê¼šëv¬“V¨[‰ƒ–Ì%О‡CÒJ™š&zã}h¬—"Ò‘VŒ=$C5/aŽôÅ8+—$¡ƒ`.¶ ZâK'ìêpÙP
-@QA¶{3–JÆúI½#V’fÔ€HŽ rÇ ^š`.Ïúu¶æ ä›Žÿ£QUØ<‹#ûj¬Vwã£"É+†jÌi¬!‰ük–K W8`€~”ÈKÑe^a›' >
-B¦ÝJ‚(øjØÕ¼Þ|§Íeë06‰ˆ$a.Í)‰´ÈløØ8ä—±’IFbæ8ŠV¢Z˜Ù1#>öM¡šÏ&
-v ’|XžÝ¡Ã®ZÞ¯râÌdÑÖ·wM›L7ã¤b  ½ÏK‘”˜ægÇ$Žc>ã/È¢¤tÝdb OP…á1&ãGI¦L6i V½ÍdAŸ÷‘#Æzx?².M€ùù»’¦ÛÁé&Êüü¸]ð ™ÑŽ©£«½ñkÑ«\_ŽûQÄ W²Ûü±l½IÀq’X’ÁL¼¤\ zuÖ0ɹʮYϿÁ+Ä%›G÷^‹pÕØkd
-€º”þ¦„„¦iVy{”˜)ìï9
-Ô+‘ôà¶"‹ö 5¯@4@
-ÿ:¢5l:†`H1F/EßéàZò•Vî%_ Ê»7}­q«ƒ·À”"»'ß}õÅwQå~ÎÏ
-z–í¾
-B¯úqVÀ—(
--Rè[
-^ d^•æ¥ÄÑöá\i¶ñæ;;»Âêìʹ ¶Ž8ÅB­Ð^Èp?'A-m7‚®ÅQxóq–¹ÆwD ¤¤=›W oçG†È¸iõ
-W a a)_‹Ox›BQõW±&üIÛ’CªDGpÍù
-ó§?Šç$5
-ì½|‡q*Š²cì{÷–‹ @YSµ+ Düïe ÆZ`1 vª¡2MnÚÀtñ´É<<|¦BÕp&¨È­6²Õ£Uüª6å¥?7ø6@zX諱JCŽIÌþçã†-¿ Äëm6 éTûyzëcKpC•œ
-Šð¶«`‹Ò¸äT•$`Î2ãj9L‰#
-ßë/«JÏпÚa‚È'©kÈB£ 8-è2ýü#
-ªöß•yšq½ aºXWÌ„ĺÙB
-ÍÆ#ílÊ $Y»Ø†î媇'üjp_ °r1Ñ"0ü°«¶2›Æ¥¸€~úô@S¥ÊñÃý¸ Ü™ôõ¸>ùrùôèQÂ+ä÷FÜ vaÏËêYóÇLA`ìÙ(An¸oÊå¦û"×HìÀÚ÷¯›j«²¼£Ùv LSF¬=JÓ«((îá,ÄN&Txë/ßX2Ö.Wá2ÛäÝÌxoô fõ’-JÕº‚ÿdœ¬Ü"®È»@CàÙÐ_ÅxLÑÒÓ_ôá1]‚l³›ð/¢uË{´IE™¾†/¾çFXú‹Ò _ÎmCÚE5¹åF £o)•H&ßs# Ìx‡ïfi©ßr#N±óΚs쮺v‡PqiþcF3‰wáO/àB"x4_$ˆ^¡"ß®î ÖÊDÈL_ù€`‚yÄÛ&«1OF98³óHO€pjä iÖIO-êr™ƒ*±ŠUɭݢȂ¦áûØ2*UÿñízÍÝ1}¨Ñ_ßò÷?jòv«ÿœ~©rÔh¸$ªi6­° ¬†¼®b§Xv$'ŒÀÛ¥…!ânìTq ¢=Dí‹Ä= œL‹*ÃåzC)19k}A&¦£Û²×ï¡™ÆÆÊs1ÃU¬˜øw÷½ôð€t<PV÷«H#ë‹Ñßç«vN’?¦¿ÇU˜&"¦ÌÅŽ¯Â”atÙçlô$‡¨,f2¥Ö·ã¨ü̇aEÀq¨žXì­×k’ì&@ü(±…IÚåÅW†ªÑ7³\p@‰tȬZB"<½ 0ª¬7Ù¯—q.zbºlŒÍì~J%u+ c—Äà8<ÿè"å gî× %ÌÂúÉL0O·jmRs1sî;IYf›§”ÏIµåz{Kå‚ð‹š_ÕÛæ|9¦ã“yßQ$kîª2ý“žSÎs;c¿/Æ8®b\rÖHea²’L¹BÒM0ö!רËÄU°eó‹lvñÑeöu‰¨~Ñ&)²¯йŠé •Õì5¯Rˆ¨e…GÏý«·Ä“&aâ1rñ”înþIP
-keõ°œ×09¨ßZJE)f&¶Ç­ŽBZV%ný\•‡1C³‚â$¦ÓµîkKX‹¯r[.ŸÙ-*}®’ï$ã S ø9âäüº*¡¨LØ"®Æ8óé|4º.ÙJÆ\|ÔµY@ñ&µHý „šè“dÓœFo h ˃Lq›?8KW{°’äÂ1ðˆ#H‘M æň¡,P²œâq*2Lv5&¬oø“bÎåýÆ6ªï‘ú¸Ë11§Óß"ÝÂ’Õrb¡|+2œæhg ÌÐ*”Æ=°v—óy@E >Ø­–<)›ÅظõÏ" Öú’¶yF—Úâ¾]?È ÒFo{uC)%“•®‰©?1YÃØ0”7mFÕ|X3kq[N> ñT½nX†½˜M6
-±Û܇$¡R˜‹jÍ+P~ž¢Q˜Ç)eSbê1pr€ Ê.àÛ|
-þuWßµ#…ë©Y\µ’‚3£ï ¾y( Á8ÎëÜÄ7ã9<áâ¡î!C–€@ˆqŽãܲÌ[õˆ«Ø`•MËqkœ$\’ßÄ[&¥ÁpÕKv2½ãs ý9bj.ñ
-ÝDBD½IŸy?‡*A—[þ`Þß"ÛBà*úú×Oâ½’–ÆùnÔ†à$Þvj¨=è»´ðýò$05­ºâaî ºý544Áf²ê8
-ý°`ð ’*,O˜hÛéŒÒ VEÿ+)¹ZCæ
-…¤JyµXL@IS$¾‰&ˆiðx‘Ø˧b‚Ù¿Åøaÿr@’òÜwzͧP8åLDü‡“šÅC©¨ð¹,?¯²Á{h"T‚ÏÈÛ™/Ãzü„ç0÷¼qbq{@´íÒÂÞÞº =m²¢UÝb»äð'ÕÏû øæX™^¶£ËbD(Ù•óÝÙ´±+„§ŠÄÀODŠr†¾§Ó´&œ5Ú€^Ák!¢jŽýCèÊÕ|¯pâþôå¶#Á.“?†Lr þä|4ÑK'B`~ìÃüùÊmb¹±Ý/»ú8‡Zª«ƒ¿á•ãÁ<¾ÞÈù2ˆ®‚S¸¬Æ"ÀMzŠ;z\ÅfJn‰6ºdMÔ@Îjçà g3
-íc²{¨Â'H¦«ìlU½^†Ý¨2¦Ä ùØ´¿ŠIB
-Ž¦ÿÌð:N~én& "+ÁÒ˜uøUÌ‘,‹¿ÞÎa…ĺI3x^3%Í0Á4Dç[¹ØÏß>!XjH{jwù,ù!…-Vž†ˆG&ÂôæOáo¼C2–ÂÙvlù[Ø~d„óè€l9<‡[8_]â‡7lÿæ
-H‰¬—ÏŽgÅ …Ÿ ïp7‘
-¡Q‚FF·ç;®ÛM¤aõtO÷ïžk—íãcWÞ6ûÚ}îäÇõöOþ֛߫¥íî=»çÅó{˜>ËgËËÛºg†ïÞ[ëm]}ûc'·/¿ÜÆ=2ææyØíÛîf#–·~õq7ÏÜ6‡ó9ŽÖ9/w¿GØ–+ÇWŸã^™±s-úå}óê1Ö\fWýná]¿Ó¶­>=âêa÷Ükr6^ˆÍqæ=V#"θ|òz¬Ílâ ¯~[›D´¦sÆ«§Ý×Û‡¾úõžúwöIœsØØŽ¼»~õÕ‚³Uà‘|ЇO×A“·ÍYöèVÉìw8H'2lýO(¶ô°ÝÔ(l5þöè÷2Ççv·­\à¦Jø6_Ö•9¿c©··q¬
-4" ¤„ U¦²Ä¼ËLÏ ¦RP
-¬l~Q!†­H
-*y™¶… ÃÂzÙbvç°c­'¤Üs±xúxŠ{ÃvÛJüH\wB™ÉS¶›‚‚°„’œ%‰7›À68„ñµ‰`Á d¿£h‡Ñò4ãÞ 2µìc/δ‡ÓADÀC*
-+ÈYîñ`-vòÎ1OTZ€ 7ŽÈy‘b,ú¥èæþtÇî7 ÁJ[–bñ¤ë ãî;1NÐ.®ªòŠ²4É”õvÓx¾áѤ ª­Öè–¶>ûSš™·äå4%¦B±¹`<ÙÃüØ·ø¶­«—Ö\jÑA
-ŽÐ‹:§R–š‹]mJ ykì*’¯¹ˆl3hOþ '9 ö~ïIün/%pfãŸD´Áˆ æT’F¬“|Ui–JJTôî†K“"5°êtß@9ÚªÉÉÑä¤ÎþxªùŠò7hBÊ“…k4#€[4£×93ˆðhQ'VÃðfõ\ÀG%ÛÖY E`4¾ÚÏ~’s×ÃØÊ+‘‹¢ÃAHc@@ÚQˆÇ1yì^‚¸_0í›PÄ*ê톈ésRp>7uo»Ú® sB¸Zcµ ÑâeUA-7£BÐt[§@é~P4´8‹ˆâf2i¦ÍÜZJ!DŠutꌲ±|Ì}RØ^¦
-:ã:â;ìäÂi‰QëG©­3x¤¶PÇÊA(5j‘ñ-Veª<
-Íʧ_Z*f,ÒËì8#Bý½…@Ìh75å‡j¥dl>|«ÝX2RcItµ·hÃd¦1&•â¡íÜY9F¥Y1—Õ:iFè‰m©[h" ‰Vƒ[»,ÇÒ.K¿Ãù* ‹iõ‚:\K½kñ‘á×PËLƒ$ âI7ƒ"µ×¼¥uB*:1kuÙ5Ðʺ™CÛP×ý‚$ $Ãí¨ï¤>R_[Ú%¹”Ú†nãú¦Ì°àCÌØ`äã !«•X ãÄpi¨¦6šFDAwÖ£ý¨„Ø@D-Ž#’Ät!yÏõ‡N©žq´XO˜‘LjHY«[ð-‹ˆVÒ/ÓäZzg6ÝNÄ™š”RŽŒ øÌ ÜÉIÛ³ÕB‹$÷‰ €å6×Ê3´å«Öµ#ÐÊ,zýbˆébÔ4nɱXÅ·O Õ©g>uD[d¨›Ž
-Á)éغpQIc…¥èô[Óƒd…„!¨ƒ¤‡Ý…•µ‡£¿d*5[*‚ÿòýÅ›÷¾~÷öûŸúîý¯×_ùè“ϵN†à§×ÿüðþÝOß_Ÿ|ùå›·oùñ?øNØO¯¿€üßüûì_ÿ'Cízóþûå÷_?;¿]?Ï×õ»=ýû×RGý®æe:koÑê«©Æ0h Êÿø€Ž„. ¤?@é±J¢Ùf¹Æb1ëÁ,û.%¬ç¶DIãå²7¤‚Më ͵­î3´Ý#Xèe-X]sÝL‹ü,†Ôê$[ƒ#8-(RYhÁVïlÊ<˜g/ÓuíiÚ
-E?K6µÂβÜ/D_\S…0mí R$?6¦½
-^ÞÒVÔå}càxãʨ¬^„²zÑu*A`óÕ*Óqêa¦Y=LL©"õó:WŽz½ü‚ K\ˆ
-¡{\­9Y!¸m”þ¢B1ì´«ýÆz¹$In#Aô*u‚2€ør­£ès~½ç`VË:Ó¤Yhꩤ
-|Aƒ€á¶1Tžá½qzs¥Qˆdq®­äÁOÏãAX§aÞ½[u!Ä §W‡«%(çj9É
-o‘³Ô¯ÿePk¹L¡»jOy¿ÔYQÌ ¦yD‹xL<ÕÎí®¨çû]^£ãC{›ßp½ÞFÍzÞ"eCîü
-f@²'Uvjþ øHŠËÓÚ$¢qI.C e)Cò‚ˆ
-EÇá…~B³¢wgèErZƃ˜fß¡I‚¾´œˆFÖI2lLÉr3aÀ¿·ÜGìܱ5–
-8V.k¨0š—t/ÎïŸ=Âhì –ÞDó³kì]Yǯ/?öè^úÛjñæ׿ú°t¼KÓÝÿ¯Y¬q…&@ ŒâM“ÏеyÉ!Å4ï‡ÕÃ:d%[œˆBé·5Á
- ¼¬CyyuJ©ü¬Olð¾ ejæ_áãR/Ï}‰#Qz Œ0 ˆF²•-(£|3ˆcÞ/è^'æNœÊ}v 3‚@µv¢‰%R‚sT9¯“GÝ
-2>(ò {Öã‰æèY¸ƒ€zÒØ5_âÔnU#ˆ{]®A!^Ã
-3(
-{˜Ñ„ÎÇA­òìtj æ8€9ò­Ì”gäÛï~ ]¾ Á= µ°ïp‰ÅXóˆô…õ¤3ñ뛃sóÀ§äE^*¬B¨q&,•åzõï(ì'D ÕB$÷S{JÖ¬wq…gº 3•«¦ßظKó¬2Þ§]‰ ,F)
-ÿ¾N§ù7÷WáT|ì—,Êçx€[@4¡lŠ‹Ë:¼£6ʉo!?Ád|[oßØ < µdÜÈUŸéÎ4U¾^PDro8“
-©[âFDŸË6P{Ý>ýêÀuÛú!!T£è{´ûn§Å1ŸG|{ÙšÍë1@ÍÌEɽ\âÑð{±açÓê4ÐÆäõ}¹ýßά¶^t­{ô²ò­GTI< ÁÙ
-x»®ä’É“%æcÅr™¼ 'XBGì+|R^)sŒGAUÝ];ÊŸ…§f“…wVÁïp¥(Ay:™Ç\÷
-D»ˆÓÞ6D–¥ec÷ó‰ÒºítèŽ#Á½“l0
-èN ÿð…¨´Z+Éæ¥'_¨¡:üåV)ºßmPäwÆÆC.”“,ŽâIžPÆA†\ºhœÃ*—T<oÚ®3¼EñõØ Îé?¡œ@àoŽÜHN$#?Ķ€Cýß:'@]ö¥{x9"Ò¥âu{n¥ú—Ö§ë«ãr,†—c(¡¼˜õå& «\L#Û`”mðl¥œtÂÜqÒ‡&`0F ƒz~ ð­,¾„Ïܯ°ó…‚°8r·Þ§JEØÈØ<Rξimœ\Ì`ÙÃ"r¦ÁÌ<4Þä!‰}!Þ­í,ÐÚS‘(.AÔ4 ÕO®„Ý7ìŽ A‚kÎhhÑØ™æ—$™¼6PjšHXº±(Ì3é·–m9Ì
-üƒGBxÉ!ÍÔœ[@áPrù4 mì·¥öoDœéÐ&+‚ÊÒçÿXçAJµË´¾¦%3íÖm3àEò…ø©œŸ(%#8” >KºÑ¿òà À8‡f\Ú’ÊÇ8¢¨píÚý­ðW%@¾¢z-«Ž`R§.ìü†ë0ô–“ü£{y8 †2QS[§`‰hbÊõзj(Ê1Ù4ƒF¹¾nf}â¤'Áíú`‡†pK®ú~ð¯“Y‚ìõbkŒ¯#+8b³,FÇȉmŒÜÃfOPFL¢¯p]ÓØZäsÏÜŽ37¨~Qã‚Æ
--z—A) '£\YDHžˆ}ã…Ðà`’->„ØÍDA²¢NÓ؉°­@ c—uM„RžhT}r õ2póý¥®£åb4Øþ½k‚ÞŠb¢R¡
-¼U׿æ—@éjÀ1iúÁ@ÍD‡m¡þ•É§Á•Ä—ˆL=Ýbs÷2è0Ëdùúî3Õ}AªûÒÚúÊÐú9òuq‹ ™r ­ØB[·TctÀ¨ïëYëÄõ`)¾¬&ÍÁ¯#,²}÷h,™ö}L¼2$·Ì\óÛL„~Y^2’Ýc9h(ÝÞýÒç:›Ñô
-Ǧ§šI·æíu×È „¸•—ÄØÉwª¾ˆšo±+/pj—¸_íá‹•„FL=ßû ­ir…ÙC‰raðb¯Y¹ãr8€[ØpP¬SçZ›-DPI‹ª¯{¾Yú4l߯7§ÑÛìA¥ZF¼‡ÇDÜíÌ»Õ~æ>QÈc Ág†ñŽŽÜ¨d ÖÚu}PþMÖ€ ÁqÓ…`Ñtú™?Pq$>é‘ö,=ƒA˜iôÒåUž®?H9ü°aÛk¦7ÜñfuH&ÑbÔŒiåæj¹>ŽÏË~à‡ÑÃ}4·ô… B*5X È“
-9 ” <q»°5ö¬ë™è™âêÒwk4çP£úÊŒcÍ4SŸShÖÐ ò¥v®zÍ(”Yý MG ^&P˜€ëìël&òä:Žö”E7¿­x€‘˜¾JƒÿûÓg£;3P]׈°­\甕ͤ@`î]‡Ü¢çEŒ¼~<Ól±´6Þ²"êÔd,
-® ˆ¦ Eò¬8›g`éjø÷û ;÷åüûçu5:‡Vº‚\æ!ˆî`… Üô.ÈzÂà{ ¨ŽÛر¿)*šB—h$ëïe3ì;ÀŽi
-FÍè„»ð%4w-ûN×'ª7n9aËÕô>¸Ñ¡ Ó!鯉TžˆàµÂå­©˜ ƒìû‰xÅ€¾ê óücô_]ˆ4ïØ1ÔÞÜ1—Ï™¥ïR’½Í<d݉aÖ»º_”{Q6b¢¸fQO¤7=¯XàǬù0-l‰Y Fa‰@³æûãŠmÂÅèQ8„\8µ5 f>xjnÁžå¨yÌ£`câKØœ{ýõ¹_‚§Ñ Px@*5ñ½˜îVú|¢ÿðèóÍG‡ÒŸ—:Ì´Í f;z½úy,º·!ŽdEg"ì÷6 q6ÃÒ;;¸£oD6­­&|½>£Þ¦Žóˆè©Óô*„,aF¸:
-WH®€>°1Íù£Sn
-rv¼Þâ=³ÿ•*IŸbáW¤O­=l~Š]̲%=ésP]Êó‡CnÁ2ê`Š"‚Eà!o¬ûNIÎ=± 'Ržg(ÌðmÆ‘¡ b[ݧo©™›c œ–àPb'âݪhBD1ãNåÇ:¤7
-ûth¥\¨»i;ÉLs[²/Õ ee.¶þº“oÄŒ…¢"³â%Û ô4 Û;©rˆ†rfžé™Q+(“—6y`^êæ!ƒ¼=0Û‰2URч#ÅëKÅDýpFYóÞ$fµB÷*b&µê(¸2S¬1Æ‹IDÙ#¢±¼»iŸm%0×Ù=_ç[t?yèäþ‰€q'EWÄóûÛy—GN n¢òPÂç×8H%c0e»i¦–ѧ½jùD£/Þ°Ñ¿X|ˆæ¼ß/}¡h¯@͹ô$] Bƒ°w°ânåq8Ó…½¬óBUä ›iö
-\¿çÏeDÝcJÏp7øC]æ£ø3® =ž°†QõDYîýV=KNŒ¨½ƒ‚UF¢£âß_ÿ¹ûaËŒU®b„‰4^¸füê”_´pM— ÝÔù~P¯XÊz&|Íèë!*ùè-0šÌœ*yn彪jF=·e^D…)ãöÁ;$Ñ™ñ7½ÃÛÊ™Ü
-ÓaT¶rOW­\ žDÐÁß2š–ó+éce%I£F° ¶_-”‡O eæX ÖõíD¶|@ÊlS
-ü÷ZO¤u2 œ¢zy­!cÅí ·½e@â}S»ªXä
-MÒãª0_ÃÂ=Ô*óa*9ééú?Z3¾³jšºÞÃDƒâbGå5«)ÁÓW£g@œ¸<T—“@Ùûºnö¿¬—K^G†ÿÊ·t"wŸ¾ÃÊNÊ@ÞY–“ ì‰ÌÉÿžç©>ß ö8Ê%»êôµê½tnˆçÁ–±j…‹€­´X•ã7E7§À.Ï.t*Z²Äë})#.œ2Éöès^—6¬:º£Äi-7íGË
-(Zumõ’¤E’Á•h¾¹|z
-q] T9”@Í"¦ˆÈŒ/ÊþâتÆIŒÀ-¬_šé“bÜ>k€}÷äpD|±ïòœ Q•
-@| —¯
-æ*›¡ ˆÎ]òÜ?pr "å™BC#{P·—*c{b@èäš½Çnʪ›Ži§òœ{cS
-²+ꑨ}¶zæŸ6MíW8ŒXe>bU 0†‡¤•Yrî¯é_3`ŒHàl‘±¦\›Aì´ç]Š`pÎóMy…ä¿`È^‰}O³p¥Pª®Ô4¼;ã˜)2ŠECFAð™q´€¹3¡¦z2=fñÆ»æÀe¥
-ß‹É6½ºGög%…¦4p
-çGhóSx¼ú•"ª+lÕˆkûA«©W«Ü,ÃÀrƒ
-s‰*¹ô )дç¦Nì¥~N‚|“) B6 c‡¾–â2^„QÆõ³Å‰ }D
-vAŒÉÝ“±Ð‘ד@ý\ÐGÙ]¡ååq–žENšØhB+6É˜Ê ˆ8¨ìW©ùª‹Ýc· Ô±ÙVODz֕èì$.°ñ^z΃.w¾±XK¬8-H_ªÕ•+fJ‚Œ‘&[84( ÁRÎ䵩:Y™d”S)™oFR— "I\7©ÛÓaŽÊ4c…3#H(ñÚyF+„H6£Ë 6 CF‘°W:îY?ÌÁPº±@ÏXÇÞ'ÊwšaãGFˆ;Š´Ø’Â=‘‘5¨{. ½±ï8ŠvN¥ HpÈh…ioÐRE-æ­"mÔFiÎÔ6vé®Ñ;
-‡XÖs”} Ô–s᪱ûöø×wÚãCœ9·±»aŒ±cfÊà9ôއѴ3@ÉoÙn äí®àÞ©Ñ&•¨ëKÄ«¹Y·¹Àúe¬ÊBÀKÜYÊàÏf¥Lª‰‰k=,‡9> À¹ùÓ(¡Æ¨bo5ìJ•äЛSLDíй°'œà™)´Å·Þm#Pý}PG̵¼xDÙR]ÕÅk"‰i‡Kø2¢‡ä@!´<)”üìw?)wAÞ'1&ÍïC®MÜàPqi±p:»ó–þá’LFg³¥ÈQÎ4‘€l)tøiÏo%“@²Ñ)“Y³;(sû%_KõÎ=ƒ : ÏÄl°Ë•š`2ÉÛK¯)8˜®¯˜¯œº²õÌÕI+‚õòˆ©èâ­ÃóRÉ7A´ºööKº¨XXy¿jòˆêj]É ÄmyªíÊ•Q²\‚v®·áĨ]ösá5‰5’q üÖ¾üø"ÖŠ+Ì/Ÿ55u˜þåö(´ú‰)ØS– œÈ®£áÉ`ô1Õ½ü ¦Þÿ² ¢ãÆ·_©-&¡-Ô¯©¬æ­¬œ|t¦ŠQKI‹À_ICT²–3Ãô!®ÅϤÝÔ刈,60¼ÏÔ¾ž²!õÝc*‘èΗ+5Êt_2ÖÔÔ‚°‰äažƒ4T®ØW¬ƒKê“j®ˆÈìÐg"ýž¯‡Ô_çW¼®
-S[7* L kQè @èƒÈJkJiO ´VÚ±`Zψ#Ò÷åç3‡eLÚ¸9ǵ$!Ó#Ôôgħ8xiÐ(BWËvî¾R§íKº½ )¼ù€Ý´ix›x"+éüÀ7§ª'Cwy‰w+õQ>ºç<¡8‘æ‹…¡ àïKE ö }ú{ß
-¿Æ‘Ê%š
-F 3ÞEÄ=q‡ø¶_ß–‚±_ Ì‹ÝYÁsÕ@Ü ýµPj,hïíúqð:Ðß­ u£fþªkab!Š_©
-]åB5…Ý9qzÉ.ävók,ò9© /ocÐÊs(®Óý5Ò ÅÏåóSC\ê*jˆQj?¢?¦jÙ€=ÿùY—ðá]ŽÛƒ…Êdd§³xúÈ55Ï»jÅü¾<ß,@™…`ÏÂV¯’†ƒ}ym6•ª.òÑÝ€ŸK~¦ã3Ê6Vš#|3ãBh]7ÓH»dÜ3~„ ꮀ¹ŒA(âxßXK(4E^󘱒QhU(;Ó¶Dœ]4qnêt½à2“óÐ2 ã™ü-œt!vârïEp¡¡½ ™·èyÎCŒ• QT¸}<R¢a¬°üQ!œ«-`¬ß³C·'ºñòmŸ‚˜±?ƒõÁ–`ëT
-hÀB
-ÿ_˜lvRv¼ùN}©*Rá§ê[Å"ЋgD– ìÄ]Æ]ýú²…D$<
-Wh-WYRЗ
-EÄÎ7 =Pîï“
-–Ñ4¤ÓåU!J¢ÈÄ°` (ïX´{ü\äeþlP©„\3ÇÎÞgDVäS­<öbÐú :SÇ]˜)Ógïí/Qû‘µ¯ïQýŒÒ]‚ÊÁÎûÂë¾ð•àªYÀDÔõÒŒ *$x‰ÞÎÃg@œÃUEö‚,¥ãÇ.KÝH+óh¯™—uÉ<}A¦(À¯&M/Ñ6Z¯‡¤ÞIbËÙ
-½`Ê
-€Pæx¡#ú£Æ@u5Æe—~¼Q¦%º;>wØÇ)lò÷Ìa/@ù£¹"¢&‚ÑbUe•I™D“—ÕD¢8iFRy¥‹}8À«š|G‚9"F62'…2aZ>"h“bD¯œeAwQpÎ’(zþ¾1 ç]Ð^}FDˆ["À…;¸jzî±i0÷í¼I/OåÚqŸ’²{Ρ6¹l¤i9ŽpW\™^TòV="hÔÌ àpæ@|FUùÓ}È"ï¥rg„1[¸3fÐ]!x˜9
-HgíÛ_‘è ˾aa_ÿ±^.½vEý+g˜ púݽaäà!# #+ œH–ƒ”ÏZUû\"® Šâħk÷³ê«õ•¼®©Ž8 Íb€NÌZ,±V¾Æ#ÂÓ^2⃌³SÕ¬s&jÔ~1@«½Ùæå7ŸßlË:oµ ãÜ*€Á¬û? 8 ½›Å¿0¸›ò2cI@À,#Ž~ªмºû¼Z`±ÌÍ­vôëõàr­f õû¼c µr؇¦»ƒÇ«²r«¨È/zúÀ:qj7Ö¿ ¢öÝ6JäŽç謸^¡«EûD7QRÑek¿Žxº…ºlá$ü¬_šg¸‚âC3¬¡¡w´ì70‘¾õUÄ¿÷“XéU…»íl®ÉŽô«hÒgŠl¥…±à2 #:ðus,œ Qø±°e¸Ú¦àº[ÈItb|÷$¼2?Žk`ÓͦyÃ|±tR%Ý¡{D= "Äsµ5ð-÷:ðj€
-1ÑÿÐ-éÆXJþCU¹
-ˆ-(£ë´8ér¡ƒ ¢IyΛ._ðÐ"Jêš@ÂÄÔq&ƾ*†˜:‚N/ѲñLúN¾ð›¹ÌUÒ¨ùxô/|ÎãGŒ29fÆ„&Ñ.îx¯" ]Ú"t ¬¶¬ª×Av6¾‘áA ƒKÃ!44ë²³@«ÁCÆ¡üì”ö~ÅEÓè]‹yp]“ÈDosi<™nèW‡¦j0¯U(·®Ú=œbù&<_·ða¹,­ÁKìû¢þÆ¿¿ú3”ÇÛïýÿŸâÿßùHzÓ£Ä?ùùÎb,¨Y<göÖ„NË»‚óññŽB°—QÔꊨ}¬õ]œbž~ZÌSOFPƒF°ë™u—…Ð0­géiDR-º(N€ø{ãY£¨L<ŠŠä$‡vOIž‹RW†¹£Eª!j¼qT…u‰þЛt‘&.x¹÷²nÖ2Js-œ eÆç$k3Í´´P>‚Š{Žª'"V·Âdµ•&«ük8¤ÅI切h¢‚›‰àáŠÅlr+ô)Ÿ¥å¾é{ޔcëÇ<ZÒ-ä¸XäÙ³‚r6Øcó"»†U÷xuånZ=”£› %(ñaDÕë±VÁ1=(i
-)Î4oÉÆÄT»”kN!öÝÌéy¢ŠFz•¾x€/ÎÛy¢†ÑÑv=ç½jqª÷ kksêbyóZ› ×€'Ÿ”óan±…d'_T"_¬OøðPj!»’ìX¨±2´A³¼Û?¶0:Õ 5òý£Ë²¨)ZW€ +ñ8±’:ûèpJñˆ\,ÜQ#íB7»ä@‡Âã ƹÇñ¼¸ö&$3æ@þúA¶ŽbØìU6]žš_©FˆØNfÏ@¹ÅõL%§çŽ‰®ˆŽni4ôöòhDèè#úçÕ„îŠÃrA_³ðÆž"Cc¯2¼pÿˆi}I}-#[%QÜ`5j´@Ýæ/F
-ê jÙYb;dAû¬œ¢œpî¡hl¤¨±rþryT†fxϯm -BPÆkdéÐê©ÿ¸+î“L)‘äRdL[­/ªŸtKù#«,:Ð3«µÍIWUÙö×K!ŠãAݲ^S2Ñ.œE©iüV”©ðÂ-Ó~Àíj i'Ñ
-oÊ@³HyÒsÈK×a1ÐestP1 .wp§lbW÷ÂœhyNÓTa)èll’´§b ¢Sót§g5DDÌÖmÄ+èyäG´Ÿu mtDo¯`È’ ÉÝ>ŒßÌé$ÏÜ8ÉéWTÕ‰¤è8°`è–3"A ÚËtÒ“ƒÑê$8¦#Eâ÷q$`î 1ô÷p¡1pqíî¹e<(ê£À÷Tn¢°®ºã+|ˆ›ÓjŽ, =!q„,©5&»˜ã²ŽŽ„t‹›vÊ^¹ë­‘¡oDëŠL•Š¦±´m…ñ¼áàÛ¬—²ÒÆT²r?»
-‘*sÆ4d‚@h*¾c˜¹›yöÌ΂È+i0s¡Ê‰[1—g'{±GÒÙÔå\Ëy—ö¬`†¦¬àm1H" ›E¯tr!­õÒÓØj0VKz_£G¸™*x@ûSD ‘—nÌæˆ(©]H‰¹ÒŠžˆà¡®s¯THo*’(
-Q¨xy*i`„¤VÕ«c»ÀsŽßä‹éY÷ev܇ÕTÕü:BW9[~Íß\ŸK¸ÏQFκ¯•«Žû|6RÖ¢ß<ç‡Gu=(¼âk™< ¯Ó[ËŽ4t—>áŒq¦aÍòéA5e¥=ïi+ÓÑX.Î:+¿ìbµa-xLŽ#É\(ÜÇÙÒ.ÚÖŠt…c¾ÌÍv¼,Å®¨Ä™¨]ÃG¢¢•ˆ¶q’´´%
-ê|çر$Q4NUÌì”R,Œòæh„©" à|!\Ù4#! _|QÔˆ;<GÜ}„?\ù¹Å)U*Ud±È˜Šªy'Ý6§ =úL¡Ûég®Š~¾J±8›z–Å7@]~µŠºÆ…ô
-ÈN²vᶷ`õ\@}·ÛÛ6-¯Å]Ì(ØʱæÀ8ƉdYà*. ÞnÌôôËxb,>èªjr:®©ûœ´ÜùAyrÅ]&νq’òŠ@Ÿ²ö©N†LÞšÇè T³ su¯»íú Hìà,wÕ\iø–ìâ´6¥´>jÈ@|$<¡“C­tK40÷ç®ÛsD`;¨ËÓÚT_§½#) „
-á÷H‚ýŠ·'m­¶iºK‡4Èã‡xóʶK?(4•/Ù!øøï*­/~”ׂîX!#¢<И2ÒEy0Àâ {*÷ÁÆù­Æ®%vuX%(3 pJéËâŒèjú“‘<áìC=ƒž&Ÿ<œ£‹'û„é×†í¤ƒè{h‡¯Vh¾`J«±
-Wõ@ß~dé—#OîÎcFÅN*ôn7» ¾•ä.
-¶F¯«»uÙ+(ˆòª6" -W{àWø9õ Âa0ŠT¡ƒpoýµ„‹º§OÏ"¶ü
-‰•_{Å…Àx¡ž AsÐÈ79šN„5Uº»AŽz#O‘ý}îõj~@“[›yèŸÝРA&´1‹8U»¼!µª‚RÁ%>;w .£dÊ¡>¿¸¦¥(’ÓUäÉ¥kˆzÍÕïH¨…,€dâ¼OŸ>&Ü_Ö€ë Œ¡ª¦Œœ
-A²^ …B8S`ò]w‡ULt¯í]PFº¡&æÿèLdÑz…ø·(q™(äìzûð.Á3ggAÓ¿:”ù|Z]#Êý}’-@Ô:˜ £ŽJÁ(P+÷Qê1WÍ
-Þþ„N‚“Žûè\É@Ód‘ÙT7Çñ›Xä!c*ºc1ž–.‘R>¡'bèiˆXv5“cÇþÛös© ³_ïÏ9I!T{D)²Œ‚Nì3UIk0›yÌHI…Ø™†šW¨‡ö÷;(~ ‚—ꯛ7
-Èá67î£[JÊÖe´ÚÃêQšeÝhÂTM7 ¥Ì‘‰€€n”àaß9Èv:œ(&£õèøxèÆÝwy…q¶- HÊÔô·ÏTÄP.1d1kC•}éÉ”ö0‰ÙaLRg߉ÄBè3½ôŒÆTY¬Wu>ÕÛ+a“æ!>-’=ΣÿpÝäWÛVõ…æK‹’,£z[¢eç*©-GáD
-]]—®Ö—¡#‰ QC ƒ ÿÞçyWïÃ`Ÿ D.çë·«ªW­õ^º<&ªA>UþEF²¶4ˆmnX}‹b›¶j'Œ¤6ZU½ø*È“­iD2!ÇNБ„ÂÌ\.ànW9â>1n´dMÒÌ„Ò^ó5%b…µŸ¸{•a*óe–¼Ë›Ó{Üh\YW§'°‹t ËT9º~àÄŽ±/¶û:ÒmBl'éôš“Sëªó´¿?*—Ç‹˜Þü€üœô ûðƒãf`”¼~Hw¯cȈA,ÈAãÎçCâeLÓpÆ»Ñ\TÈš%ùÄv›&é\µNò"‹ Ý®‘á¿Hz-.Qjcð1çãRoèÓð€LêÌ’ï ^;4åT’Ú<ÑÀm.éç#¿|oÐÒ‹_-áÅYåyì.5.ã%êR:@!ô+¨¡‰íLåö[Oe0zµÌ-›2yd“TnD¼ïÉРyu ‚õì3jÈFèþ
-êÔµƒêÑVªºùŠÂÁ]f5$áö˜’ᜅ@‡/¸–ûÙ  C©Îjk Ú]>ÀÚÍ"µ÷zõ8ðŽEÕ*[ÿÐò¸wólX‡˜]¾à²Ë ¯2*“uc÷±;~¢áZ¢ÝÊ@O*:œe~ˆP3¬3Ñ0&–Ãð'„E p)ÒK9ÙÉOr§è/æ+}ˆ@½î„‹{=;"ÍÁ‰)Ū8sè^i &À¹*VÖ#ê_Ç;$ÇCAØ¢
-ªé\ÎÓ¡äÜ»Þ$ïù¹‰]ƒ±+!pÒÆ´õ‡®±¦0bÃz›&x½ u•ö¼U )(o"£IáÈ;WIçJ».Ò8ŠÅ¢ÉDº£?C·ãYO ¥‚@ÏŸ¤Â¹ "ŠŽî£´µSݵ®R #c Tõ–;(¼S„!ÇÂW@ôÎóqcA Æ|D!Ý]÷tfH·É4)]»‚¨0€—uAcÑ¿:EaFw¡FÞf줢訷›#ÆÛTmb×ÑŒ>`’Î÷y7çêâ’·¯“ÜÔmjAãÜá®eOBÆËDÂ-ô™ncR  æ9ìb+w¼ŠHÿTN÷7­yÿýRÜ`Ô~[×»ñµîÈ1+ªz
-Ò¯§<ªfz\^¬Eâ ÔÓ¤°aë“è
-$°PBˆ’l:µè”~²«°:½
-s ØsAT^,楧 •VŠóKœclÇ©ÆcUýXl¬ÊD†´Ú¤@‰/àÓl׶h§…›ZÛ£ÌÄef€áÐБwêô˜&JæÇãÓå*È› ºjƒA¼²" z“Ë>T>¯k@±¾Ü¤±á’ÎA¬b×a²X/ò-äd‰:_|ÆCíÝ¡›7¶Ay»º[;¦òÁ¬ÉçUê¨Þ¹þᜫ¿ÆB&$–},YßɽÜåµøÿú8D5Ö)ºgL©ë¾”? Oo¡j””@ñx)•oïZöˆHºô+*Ï)÷|Â˃dyŒÇÌiÓØœƒó–Ö,RǤ¿˜OîÀ‡MáÙ/Üé³V~H!Ñ6ãAùmÄÃ>?Õ‚œîŸüýÙç?¾ûêÛoÞ}ûÃ÷_ÿøóËøé£ßëÖ ¶óã—ÏþòîÇo¿ÿ×ËG_|ñù7ßüôÝŸx÷µØ_~òüÍÿ?ùëo´Ðñòù?ø×O¿üç'õß_åŸõ׿óßíùÓß~Ž2’‡Nö³«Ø :^f<òÐÁ÷÷ B‡ P¿ù•*ÉHV©Ýlx3¿GÁ­ÞîyP©†²×T¦­I8¸†9Š¶½wÙŸº,:ÿ0Ðt16ÒÎ&Ð"ªp7Ž ?íÊŒg‚
-j"ÂÔKI£~ ·„ ÏG¹ Üxí¤ÄÃEpÒ‘¾¢R+¦ƒµåk£úsôΧ³5Ê”&Á?à4ïTg&9]¥;ƒ&›¼×rêoÌ S ¿_
-†­“ˆæ‘¦¶‰ñÃìƒÎšÄx\Šÿ9IS'D¯äÁ—OóÓѬËEί¢„Üe¦¹Œo|!ô1†Ž q„Û^þ“e@]š×ÉôŒBaJQ«©³"–];ÑÄm÷ò a$šC}¼Î[ËoM Ça_å-ä8ÒP³wŽG¸>†æš”©… E(/ÏÔ‚ùþÄ€hË1%´c_§É4LM9:AÁKŠÙF&>Í#ù’é¼)ñ¶ã-";ÁNšö·¯›íìoürš¼°{çÂÆnåw{Y>(CNÕ´s4-˜ÞÇ´¬²¢æ¨ÞۻűљuøØrK—ôÒ,Uõö¯»®_5™¶óÿzÃØŒ¹’Ⱥ‹ 
-îí–’}–õ=ëÿe½Ls$¶q0zŸ aíòÅæüó©ªíæÏ$@.ÒZ(ò[\iíL ?VÍíCOW²è1ÎMÊdtPWUÈ¢ÿC󒇈¿mÔóBƒÛcøžy׊žyg¤Cà<SÃF"x%)NhÞuS¬õ¡Jƒ1-Æù“%įÌ"Ò˜aEz³jòŒY&È,tFd±#N;¡±N
-Q2ÒO훃–\Ça!c¶Y2c
-QÔ É/‡‚r¡ß
-™!™˜ðD¨1##ŠÉ+ì½ÌÀƒB)dÐÕßÉaaÌ™YsÅC #³Ö}vzÂÅ<(=çÂŒ9â®I“ ˜ÎÀ øð)¨$`°ŒMºµj#+¢i ÙVXDq„F_pÍÚ߬ií§éá©5fÅ™û\åw4ˆ‹Aq;Ï©ý
-ÑÕ¸Ü*C¨vl½W0þ½‚ìøïï`ö¡s˜w–Ô „¥çêÁÇ(Va6åç ÀKÉÊ›Ÿ?ýró’
-Vˆ30Û^°ŠÊÇڌɈÄw°Mô<S9ÂF¤¬8[¨É6ÀÁóá',¯ B”dá8î¼×Þ²8…æCÁà…6´u}/õvýÐXÛžüwÆ^!PmPEÜÝÖ ü(</hQxÓvpðD @â’$jœ?Õ¤²{ÕF4Ï”øº´ñTÐ
-µ§äEÒšB”«Ð*56b­=ŸèÖ«ör£ å;ÂÁþ*À5Æ´1ϱS„™‘ Üf!›{¬3‰ä‘yƒ\G²äCáÏ ÑÁÀ8táo€fó+(½E°‡eà£nÏü•ó(SN§Ìu‘Op$ÍÀx†ñB)øT0×ñ‚°É.êg}pG´QŽ‚l4=ÍHQo¦ú åRË)x;ÎkÞ+fµ3¬Ì*BØà‡éŒ TŸN<ƱjÜè
-Œ!ð‰Kd"z^;Ù£QÕ´"Ɖ £ úDá5ñg_^N¼}x‘9¼x)ÿ:~x$/!m']×ç”QŒ‹é爀ÚýÕkæ6§‚Ïçµ,[!Ä>F‹V†£šá¤5ݤYV1 ƒ 'ŽEàZ)ºë€d+{ªüÅ;¶¸f!‰!뺞ý
-r„Žp¯ntÄêuĪR?´/±¾‡ëî…Ì°8‚=¯_Ð$†ë9õ³Ø.£öDžVÛíìR‰‹‰Î
-0KôY- ®*…T)û2àQ>d#ê¼Ú¡^ƒý^'ò’K¬÷`9®×®‹,ßÿÇaË«<±k\àö›/- ^ÎèÌ|¡KCüi›!ädÍ„5ç¸&)ûQD,§ÏšS}œ`ؼuÐOE埌êm¬qºðHD ‡1‚fÒ&\kQÆŒ€;Öj÷8~\aH®ºŸ3å¸d¢öæ+¶ :¨ÅM°Øó¸|a¦Æ”tŒ‡‹ˆ#Jq#á³÷FuEÊVÚšh Y^Ó¬¨”`‰‚¶¦±R¡M…3ƒæã:b¥ÔXˆYín5š«qF9o€Š=‰8–ˆ”ƒ% øƒ¼7;(gZ åKŒ)’2gïc áqèLÉzr[æY*µ­íèaÈRL»LzÇÓl–~ÄÙrŸ¶£ÅæÃKñx °œÒÎ8ÁG&VÓÜ1“¢óy8ÅŽÝ
-hÐvŽ:ÉMCÕ]B‰ˆ¾"²ÖÉ"•‹õ'ÆÉû©ì-SßåÍtIí2€3 wÕ1
-³FDÙ×õÄ9Êýu<RŽ^³:À‰¼1©Ž±Q§"I^rNNß©y6{H¶Ãeˆ›¼»ÉUÆ@ó JÙmžè dRDz(;£ìí¶ˆ°ˆ¨v
-ˆÃw}`ÿ¾ÃƒøEÍ—¬Ù¯‰Á3"í3È\ݹ¦Ä’ÎPÁˆ–OÛ+hÛŽ~Rö4¨ÖZÃo…1v8ã¤n&’†3NìÄç”YBåTôœ³¤Ä30 ƒåT—˜BA7Ö?SÜÄ¡Žý Ü)ò ÐÃ
-H‰Œ—Ind9DOwÐ:àéä:kY·h WU÷ßösjHú®L ‡ws3£jkùñ/Ïþ
-™ÑTg³ùÑz¼”¨Ûjz:‡È05‹ÿZ µ˜2ŽÙYºY“¾×áoÙæÝÄc´‘žÁÞ Â’ÍÃøÚÊ_³ÏèfÎ1/(̇4.ú± ª:,‡Ïˆ ™SÌæÔè 2¢–³µÈÞªkï#fÏ&þf*U OáŒâTªfÁmăø†&•X|ƒ¯é8[™GNv›ýœXSš4nÚVýœ4›Rí§"1C´õZfAš®<tÚZ¥½rd·žF?ÇÇﵓúÈé­£ ¿ˆf™ðÙ.q{êš„tÎÌVöšsvŠéá2§÷p¥/Ò6ÄùØMÔµŸ“¡‘!2×½íŲ:غžk‡kÞ‡¦ùZ'G>ôÑõ@ŒZN&}Aú£µ)ú®Ä€T”®§D; &°ÄÛÞª)wœBM£ÝnJêàA­ k9ÞŒƒ½\š3úå#qì¥#9wŠ»L§—6D±…€Ñ6{ÞkAüþõ¶’—ĈAñØkÁ`mʤªÁ÷óãï_­Í× Š%‰P; z•F„†PM_ó ­Ô¤‰>‚¿áUïÌy;Ðd
-%§­"ªæ5¨ÇîNæӜѤñk&LÇ Î+ã@H}uè‚8dá³=AöV
-Ñ…–Ÿÿ¾ Kh›É)U/5^0
-ƒò»
-…ªãB_Ó“SC„sšDŨ8ªè¾–éô—yay=å£'!cl¤Ñ&H:û¤äŽ?¡“ÏÞÎVr$dpÉo‡Žt4÷‰aä Y…³ UЃ‘ÖÒ‚„Ú¦Ïy¶‚:áàDyvr#Ìì`:ÊË‹&¹–1¶ï´âB#4i©o ÷À*(ßœLY ¢&fPÐ?å˙ת3¢Òÿ1¨ªÓ©f”KºAëÙž9©CƒÈžeaΡC;ç`¸bCÚ`Ù¡ØÙá:ZÒøU–°›(°3æmxž* n­1 Z{/’κEŸÖ7E€æ¥Ù¹!ÈQÒŽ£ón…³–eqÇ
-ÙÔ²Æ<;ádè,2­ý,ƒGÂí²ï97é+Ú–£mˆÝ/¿·q/e±D³Ìûì„– /'‡q{¬)‚ÀAê‡ÀÈV³¿/…—XÉSÐÄHŽëç!†ÔÐI2![¾þZ Çghq@ÉØ•j×8.á@_9Ã'VUƃÕû†pOÔK€ !-3Èð eBܼw˜ðPŸÌ~¥£Ã‹r4È(õ³úKþ
-xÅtT‚"+È>B„Ñ­Eye(
-ÑK+÷i^zÀ¥˜ö·ÔIŠÉpAe¿ L§r)Õß[!.Ä æ*æš^ßJJä›]lË zøÃ@lÛ“TAO!¢ŸÑB™pJ|ƒà¼|¯ªÂ÷˜¯}äŠYˆPÀ¶<vï¥IY»UçdoÅŠ˜OçˆaoÖùî÷@Rʶ+Xëcn(HV{ x·ÂQˆ+d/‹¸·J1>_ËÐné­’ŒÜâHÉkÑ©W6û™…~Öïÿ¦?ÉUúñ‡ò*lG.éü§G†2Œ6B±²ÕˆŸÎ:}EÚBL)OïB8qZâyÔ°HåÃÆâ´eCÈŠ(ŠTˆ^Ï‘M„ª’ðûÑEb.Q
-ab~¥=³?@öNv¤Ä³x³ÃG­%ùx)z‡ XŒÿ<çE)‚Ö%‘aoÕ0VÏžåK§U±?²µúKu”aîqÚ õ!tdyË$S“)ç%qwú Š–Uwæ鮃ØZq„ t#39Öùæ†|?oÑ$I
-š<úh ”Ÿo’¿ß€¼R:9œYà b•ž¹2Ýéo ˆaòÍäÌ_¥lò©«mâ[Y¼ øº—ô®‘5Ç•í¡‰¶&Õô ¤†Ð ”YIî'H¡F݈٥Rë5Vý@¬à_Ó *×æ’xÁagüG¢4Œ¹úBÀÂø˜9Iò L,NÇ'‰¾ƒJè84êÓÞ­£ƒçâ"qGŒª°Yrõn#rHEì¬{/&N/‡%5_­ô@[É÷ÊŒ?É
-$K¯Ê$ÆÝé'9fÌéá•GD$¥›}Æx‹oÒôû;€N3c · ²gÜyVU‘ôÜ%øÕeGãÊÝGÓÚ|+n…–Y¹6<zpB
-í­ø!‡¥€ðj&ãÊ-§FÁ{Ñ@î“ÿõ
-.J°z )¯¢+ôRlë*·MÞ dný ï²D?¶œD¹u ï
-†ñúVn¤Ö‡–Óæ ¹ Æ“ákŸ~Äc¡‰†^„h¥íÌûö529#„ßù˜ËºãC¾ÇÐI]p ¥‘çw±…IÔæžæËü$²Ì6c’o
-ØÊZfÎFxœöðŠ*HI¹Á,ýdyfñ;: þ€&T¨7ã€(Ò#…ˉ2?¼‚fôzœÅqP¬°"
-T‘±!\39_¥›cZG- ‚m1A£½œ…£Ã'5Á£„QpÀÖ:pBy¹"±ûµVß9¡ò˜]>üùóž@ SÖ# ¤îu0ž+óle§Nép¤âé¾åçù8IÚËì ULH?[ñr-yFJ<Á¸Á¦­F \Y©iÈÉ®eåÌÞzçíVUA9r24ǬzT7OVf¥¦Üç!†L÷ê›Zm`+¢J@ì×9ÿKy™$ǹã@øï>ƒçµßÒ·ðV÷_÷—¨¶þbE«á°TÎâ
-çVÅ”ïPߊ ¼hÊz@ #â‚zvŽ«¼%`Òi0툷Ò)§‰¿Ü,6Z“d#‚i†®¥åÊêzq²)‡#ò窦O [% 9ìŠZ.‹˜É$¢¢„‘öV¥!ð
-½Û¸*4)C¯ïð‚¡gOÑ{€>Þ¦‚äånUhdE
-»Ë+Zš#SèÔÞ97§©ÀÑæËŒ%³‹£«ýb’Žå,Ëÿk¸[í†q=Û|E˜ÜÏæÌæ~¡e”!ß0ô@:d³ ±Ç9ᬮÎå´ÕŽGäÂáÙç´í*¼Æàû:\¢ Ùïô…eX×´§áòDAqßÍ„ÿùŽSÿ©Ç›ý”Tð¾ÈAi—<ˆ¡¯RNÒ òé:¶ì è÷Ĩ£¹©ÄvÜ0˜öÄ”A¦0µùƒ
-Ç d%bÿèe»£R~Ó£ì·@—¼n÷-PÛ>:ÞStóñTd[H
-„š$þf¾ÎäU“¡né@¨NãÔô¸ŸÇÔRÞýÓŒkg€†xÔb+ÔN"€íi±Î»‡$¹ØÜëˆÀ‘‰¦’DçíQÓ„B™˜©ã
-‚êa—Ï5c'ð˜Q‘³]S–CòaBî…é¡&ØäÕ.?»3ØHUÅõ·ë2ŸnÊ´B9ËØ”ÚXÛ¤ìGÙä¤^Ïë;a^‰J ê±*_=†ÚTpÕêóø;Aªš2<@0è˜Hrä<å“ö ñ8 “
-¼bè
-Øqà2÷öIw«Ê½È au©ËqƒV.†ÇwR~ª24}Lªn{†»¯ƒ³>`}²ïß>d÷2—T/ß­
- ¹df`Ã1ŽUÁë`éž-Š‘¥2Ü«Ÿ#C I»oU£óþÒºœÆá;=g게_N
-^ªHm·ªvMl¡>õË…që|'hV§w«|ÿ+"X‡N'L—r¿¯"Z€ÜàžçÅ 1Jet\ÆÉü IÖÛiÃ1°nÇœñ–$¿F[à > ]>Áå©ê)M¥c¸‚5‡ š¨ÓfkBc*¤qȳf≥KDª¹êÄpˆ'Íâ1Ž%žáeYU½²NßC)-Ùü ž‘ësJtESI|”¨áJS²ÒFlTgd
-yµ7Ûyuîx¶z™¢‘ú-õ7ë|Í£WÈ×<z‡mø#5*±Ê òªÌ c¿Ä…øQú­_‰ˆÉèåæi¾WÐTÔE×á ;!?¬øÈߪøëz«èãêž94½ßl1Áßs›%^/Œ%ΓíáÚ%~zZ*ómz?E.t'‚ÒD‚Ehkú|ÆPeÑLjí“
-Î8žÎçö¡O&ÜeHX¥‡v\Ö©H»çd1-›´;07§s¸±»×ëA|êäøðs™Gß
-aŒüaÒ;¼bÝûÏŠVUi‘©àXdŠìÙE“ í …¼$çña3>½º¸âPúÆä ³":îË ¦Lm\‚¯ –܉һ¬"ÏÕÄæºØ=
-ÎÓÜ éR;@«Òt~²B°¡5™Fg>(¾ÊîšÅk«÷vaFöxj³žšAÔÖ¡|$1²^fʸ@zqâƒ_¹ £SÏ[ó—i£çó]节›:ÕeR~]ÅåúxâåRRiâV¯²W ÅI;ï X‡*…ıƒT
-˜÷ 
-F4Yn_§cdiF.Ö1ÍVÛÖZo y X ¶Ìg+\ß`UÝ#@”zÏrI¾Žá5·rÞ»iXp‘k/c’PÈÿ0^îÈu9^÷ÀتßpJ2¸ÆÎþç;
-[šÊ—€®º~Œ˜ñp ^dÍr|<Ÿíæh ûߤàãˆmº±Lm+‘ü-à Ez!#IÛলâ(@¼š®˜}äFñÊrZb‡ÃcQˆdæ Ø3¾p,:Á»OâÂúçBm´Âq ¹Ñ*&4… d%X×îK.—DÓ‘É“ÛPÑÙ¡opãû[ºl°8r¬KÉÏ·?Þòû¿9/ðVÁî¡‹ýØ
-ÖzÑ~ŽÝï¾(âŽl;Pìqɶ
-CÏ LhBUÂ8‹ðJüú,ò*%[L »¬ˆ‰7EM’¬c¹r\™µÏÀ$Й¨rÆ«%È•ÿžÙä5áÊ‹æèF¼ÚVx PÌÏ·[Ñ%[pÞ'ÿÉJöSÄF Ô˜]o1Ïd–Bæ
-ëËËIƒE!ˆŒÁ­\£B7fEÈ¥avA„ŠÚ"aiÀ±o
-7`q
-³P{j/J~¨°Œ*q]—c_9ø‹V0Á¸ˆ”åå
-<=Â/ Ñ,8͘QÂþÂk÷y¼ÛP\’"4%AJ†L™žÐ[èÈPrh«hÌz;E/`/ÀJî^ÄJ‹#zÛ¢\•ØÚS˜ÂáMéÏ—A³
-”‹O`±J¨Ñ’¥ÂracG-ÎYüÏZ
-€Ò*²R̵Ʊ’À–F¬1«TÝ-3ÆÑ=i°’^1Nâq¼»yï‹}ó\:n2¥/ÙÃÛs}ÖžÃï%€„ºqp«õXDr†<Ê_ÅkX¬¦-ŠxÐÁ0÷#-Æɵ+ˆÜSµ?‹t?de![Nu'zƒSd´…€Ø}c5‰”¬Ç™$&óõ~ (€˜ÜÆ:
-œ”sÀ›cHÞ`i`®¶/Ë`
-¤~?–„¨ã6fY{¬j¤¸Ù¦ÓÂ,1
-çá„wø×ÄŠ1N0 EN=‚MÙÄPëÍ@Ð(ç(€Žx‚Þ–BûÚ*èeU¼‚b±ؤ
-’QÙ§Eöˆ±J0*1N–öítvøW¶ö±½
-æ÷ZE¾¼å¸1¾1NнØ
-H¢ÇÃQTB¤›œºái"@W„
-ëÀN+`ñðîZƒµe 2‡%J´C’ =B£U½»ôó.ÖZŠ™gqªcYi1ÒÝk”4yx”ƒ 7®òHû’r/nUœJÒá"ÒÉ\ñòΛ!¢ÝmÑŸd‚AiëâK ')IÖÓF(Åc!™êRl3ÎÁÒã~¤û.Á¶´‰iÙÀ¿:¼ËÚ=8ÅŸ×Ýl(Ÿ '@ÇöÆ0Àè¢s\ò/EV"SÏꬣ„_myúÃ7¬¸²×1ì0—Ú)ÄÃñý0;°W õ¤¾æUÅ_µ†`Ãd"©$‰àê†Ï½D)… ÞãRâG1ÅMæÀî®szÕ’LŒb£fÉ_7íb9»—T…9$ƒä±¯N‡Þ
-b"G§È)%1$¥«]\¼™WƒôÑ"§dé<"µ}5Èåþ²ä—0(Ç–2^h”ÛìSdb#`!w
-FÊæ6µ cVwïPEC¹‚,ÏÓírqìC¨¢Ô«UXºžô%Àzâ[ WÒ¬‹G+WŽÏ­aØ88êl^e_ˆ`©ÇGºTG&GÊî'x@#ÇP¢hf^Q¦ç1ß6l#BQûk®·É¾fÂ1ïçÛo¿ýç-½ÿë¿o¿ýï ‡ôƒ` †¢v¯i·ÅÎÈb¬÷?­Ò×./^¤æq­ÅýÆ»J†ô„ëÂ#Q‚?£‘h'ëûÎ:`äCAëá¾KÉïo*šy -Ì—Öõ; Ÿ:b &€º2˜b1F°¥•LV~˜Æ< }–¤OR<Úð\³ÅŸ ˆ>ðù‰Pè6élaÍß-Òi"KÜFˆm¿×3góŽnÝaœØPaQ5¤í¬¶qVIñ,QâJfÝÑ?îЈb 98ÊÔ…F<Ë9°ér–[mš¼7c™åVò»¡ñaý`çd:qû ˜ÁìQvOÜ!nÀ+4X6•¿Ž8‰ÜcKsœÛO^%–ŠW#ƒMA·©wT`ß‹ü*¨ŒÆb(B‡;Á5Ýp¾ ÂY»Ã ÏE—q7û½¥ßéc¿U´”ÄfÔ-kc>®»÷Pôùý`¥G›?XÍMá”WÙPgqÌ°4ßãç¢ùCßYr4úú‡ rf£¡O߯‘/‚ iDÍóaÿ\´¥,fCµEŸ/ŠÚHhTjï”ßí"f€1¼D)Ê…©qä*á»|oV¦W`ÀÌ¡0¯bP£FÞ\½Æ&y‘´²ñrâ°Ï”ŽÙn«Ñ%ò*H,‘ÔOÂu¢„‚ڥĂà¸-Zé[xûNo„M‰B;—aUøiƒÎ÷ç9¨‚ÿuƒÙÔO5põ7ãÿ)/“äÊm%Š®À{Ð
-^=0.½‹šJûŸúÜLPQ"“–ìÁø¯®@ ›Û°CÙÂAè (€þ)¼
-rriÊŠ §¼°sPÉÁÓgJ¹Œ["LÑcXBÌ“–/¿óbòű!u`B²Fsc@6¡´ÎäôšQ@Þ´ÞÙ†¨Zõ,Ëç žØXB
-ê‚ÆUŒC¥Pµ‹]‚´ƒwIRg1™g©™Î%€èSx0<f™¤3êÃ9½èÚ˜×Óm0*Œb*²5¯t Ú,&çÕ°:•ú¡”
-ÁÔ°ÆäÏVù—î˜DЀwدêÇÜ/Ã_ôÄÇž#|T“r/–;ÜçþÔµ8€(–·;æ[TâF&@ÞÅN5‡úŠð]~=å>5·«Ü§/xR4Å4rÉ!Ë[¼ Iþø~·R¿öâ%‹pA5 ïœ|JÑæÉÉÞAgÜ>w½ÿäNÆe½dã«8ÎÕYøEfŠ\‚+¢#Z‰Œ–q3Õb쪑:G#éVøÕœá*j¼œ9iL #Eì †‡ |g2Z•Ï¾šé "ƒ=mˆw}
-A`­¶; ÀaC³ÒLCÐÌ<Þaú¡[ 4…É=Dõ§´c QAI‘Ó:ø/§uz•):¬›¸ a¼Ðuë½O”ˆwñZcç‰Ös´Ó·ÂÔÂÑËïÂhŒÖr—›ºü3=ÆÐæ’¬:÷3‹¶ÙÖyÙÛ=`YÆqÉóñ9d@ÌÇ|( és)äzžs+îò¥Iþ©+Kٴ°½Ñm˜nTwQOÒf•ŒJ“x•±¿t­yU­6Ö}½EõÅ$3±yŒ…h´°KˆêÚëàœëÄ·¹N^øªëŹîAPâoöÉd±¹žÄ¨aÃ"ÕÐÖÕíT¬Sù/<@i'ã,Øg>€Ê«Â3 +”á¿76©8ëÕ-¢êFŠ¼?+»h2†m4†Å‚#ªÏ”; ¶Ž-Òóm”‹lDã­Crç~UüÌÚ«s~Mn–3''s€ðïì]aøENe
-H9ƆÀvKöŽ2tŒ}+‰W–
-BBl›¬;Œ‹BæµM5€¨Æ¡ê+…ç „ˆŠÙ³±Ÿ“–1á¬e>”ŸŠé„‰p¿21q•iÊê¡Oë8‘Œ³Åˆvع°+?E-ãk /·Ôê3èëµÇKéN8UÖÚÊë!,B)„z1«!L) yAˆp˜/šæí:h<ÒC¥g
-+£‡dyl^ÆEp}&sÔðœ.u…!4ŸAïàÿ%B™Œ• )¬ppŸzRî,ŠUÌzí{HÙí¶d›[ ©=òÆ á>?‡UkHÃP*¡¬º×á¾xM¦G;3?)ã¿·Ó<]®›b«èêß_2ÛEQ#c§?ÈÝŒd²©fÒ:þ†Â4¬+rk˜û§¾ƒH³’íY,šOmUˆ*Œ* ©öµ› Í=”æ2T¿sûvq'®VŽ€é%Än 5Ÿ9.¹G„7å’o‰ºð%-'ÿ_Ä
-Ž‚ jëGûÈo«^&·A1Ð}êçØèòrã„ð†¡?)k¼Ý{ ƒŽ€1Üͼîs±±ï†)¸èe„vz]…ŒÉÂã«ýSlS†~áõ:â|ü—ÕšÜËÃnV*ªÅÄÙ–-° ­2j9“2½”Ì&í3DUBëã ¨îËXrû"ÙûKl7\!šòÚÈr2™ý|²â3rZ<%c<§Ù·òe>ý€¢9//1dÖô”úsÌmí¢ý
-)F•á9ŒkÈ:„å 6É¿tÇ`Ó¸+KÕªs¿ 2‹~×na2xSƒ1IL“­­ú—®¥DÙh?²gñRÝ}#mb£šÃ}EøW®¾Ÿr–àש Þ /=„ß¹_¶a ‘Piüˆ6è—­·™2—²£æ€©?|b Í!¿–W€ù'ÀD qûØôþ“9G :J¼òØu«o&БB£â“>bŒâÎ-ʦ’Zl‰jnªåßÐõ‰”‡tþ†åèåp3¿hi£‘2wÞ‘7åw¸Ž‘›Ås#Ëaºzˆþp/¿ˆømòJkæåõé®ïX|îŽ,­W÷R0ç§#cbsæN 11Ó»Ì
-†ˆä®å^§dœY¦ÂîZ‡éTòi³>”Èñ²¥ˆPÙlV~‹å2J«ùôkðMšWÞðæm¹cOvIÔæ£Lk¶JÐ ,–©Ú0§ %<À I\£=»I
-p«´uœ­Žœ ÝÚ(q…ü Î‚ø>ŒòKÉÞš Y«&{çhkÉl9…t¶X6žÃj‹ØDÒjÞ ³Ù§
-=â²jð½D’ HäÐßï{èà” Ñ/Ãm¸3Ô/É2…lLÁ²íwëª< „™a`‹‹=»Ú'ÙÇ¡u'"âA¡âÆÿ÷GUï©M‚^0Ž|ì¸zO‚KT4¡ã×u¾žCIÖ>ðRH阚
-‹G*ix«‘ìS½àñèߨÖ$£)§kòÝcQóDâKM~ŧ*#?þ¡‡•Fsl…êó¡¶_SfÔLç÷C7d¨HÂŒXå% $Vé*¡=ì×TÆ8k¸€Îߧ=Rr $±08Ÿd-Ââè5JcC¤`bxJ뎔Š2t=º˜êðGûK
-r¨ËîH£¬“R,-׸WyŠ8Qþ*‹­vP8#RšÅ®‹ü…|ïÏ~ˆ<†}ÊËU85²£ú¶w¶õ­„Îbµt¹Øž†3ñWIÄ¢KÏBÚYélø?ÎÅqm;ß^’ñ…®f®ç‚VbñaÒÕÁ.«,×À*¸†€&³¦0%‘Óƒ±`VJ#Ï܆WäLü~›Ûâx¯º-à½;÷5¾õØÛô?Gõ¿ï@Fi1,t•—ž9qÄ›sÜo·Bàâ|EòÇáI¦‹M3ØjE4Qq^æ’,Š™EŒé/ÉE–Ó"üJ5Î6UØ•Ÿavˆkªt,vË=Sïþ=hDz¾…`ÍÜsØø ¼ºDÛì"¿‰ðù½ñLœ¾ô¨ k¯â?×?K9@ˆN¦Ìt9JÚZµ Sñ
-˜´ÕvÚáëà$[Ã6u8°OÃ(Ž¢*‡@×È^Ñ—ÉzE°Fèܱ”!¯wñnÒ}¦Ê8^¯äŒ¦=]Æ™·¤Õè©ÉüÇ%’ötä×Æ(¶Žâ èpTÏæžÕÔQŒqvmÈ,;ÃZ€¢(\CwÏa¹ªRZ;R9—‘U”Ï(}/igc’c5rÇ„6å $C»—”Sñ§Ì´µãšR$/Ö9 †ÕÆf ÜG²cL¨„Ü̃¼Ú~Í0Êø:]*™™XÏ«ÿÙÇñ½ækRX` ãöpâʼn-*¡€WÑxEGÜÿÐÛ¾qœ_ 35E«< ¤dÞŸ±Ðûø%áÞOvd‚,F_›@DÃÎë!žðV¢/%øAyÁ(ç@QJALj'ÉbÉ
-´…xÇ`©@‘Ä%MµGÁˆƒïd19@†uÂiõ«7œÁ«¦öwõf¾4@H
-KmçÑ ™Y¼^Û¢I˜çRøíêNê¯ÿyXšÒ¤HDA‡šCU{9z•Ž8³èò⚬ÉÂÜ¢ ¡éo¥e w• »t ’Û‰P„–X|–›h·¨3ðÜ¢¨—¡ÛÃÊ™w§y ¦/O]j ê¤ó^ è
- ¤„Ú/ø³…¿wMÇßAZ!äcHÞü~
-B¯Šë@R%´,JÄüM¢¾yîQt8¢c
-F‡ c[ôºŸ±£ÚdÇzÕÔ‘âÀùú´Ì·ãXäk †20A!ó
-5e"6.`FZÆ°ªâšWˆø`üF’†Zô°ËhxO]X!Øpí¢ž5–’žù9„Á.kR˜]Bv2‡3ôÙ–"+ RИ´—ø¥DWaŸâ·æHÜ7çðm Íž@ìþ5ÓE2k!l¾y^NÚ\L2Я͡Ä2mƒÃúµÃ·’ßç7=j0 S;D‹c##š•®X÷Û›šVF¹¦ÌÖgÜôÚš&ædþ]ap~»5¸¡¬•@lå:§¯¯ã~=剙ǧ<±wyÒÂŒ{+ÇÃe pX7ڛƽâ÷}? ‡Q%ÊÈ _öû¿=Il§žÎoÞÑ¥è¹àÏÛžDñç/ÚDÑ> u$¿k™¤L¥‹yZ÷¿´…#ät¨J%lÒµÖ›‘0zIFðK¡y¸Ý´0ø.L}Í>¯n GL
-½çɼ|(û­¸JZ»HÀû,Ž5gx½ùÌ ï„¼ñe^| J”s \C½YÎ@`™>qÀp3¾•#Yò†ó5à±6¼>¸ð’6øž˜Á|¼J¦'‘US‰›à´çºÎË1ÐÊéæJ£øšSׯ¯,§¬ö¦ä%‹ùvŽ t^ÞoEŸoŠ˜+\4²º·œ›y«€Ž3K5XHv{oyÂFaóÅ›i ƒ‡*;LâÝnj“¿§=)nD2vóøı æߎ7ÃüR²¯2NYÝboŽ!¥¦F”ŸChED…‹›pò"@† â„']K¬ÅMIÌ$¾œÎ¤˜¸ D*]~ŽåožNÖ¾€÷ú¦¢Bù>zñ³}Ï"›ò'˜xI†—àC´yV,H
-¨ ±¡ ûI`‡®½«Q‚–o[Ipä©h]«s—@¾£ ÌPOƒÍUC”ZãáÐ=ç‚þMGei6O€ œ ®ù·I¾Tì‹'`C.:Ï~9ÌàE8fÀ
-½h¯¥œÎZÍP!æ­ó’T‹—À‡Ò…¹±.Öœ+»µi”§ FŽµƒÌúÑUìHa”Ã1áˆç€„y,™I!±½f^‚ à²|Jx ;€ÐÇr†¨`cbŸñ—¢oŠ&·Yåf<E˜wd˜îg' pVÌÅ*CôhŽñ¸iÁë˜<}%“.^Ê3,| p¸Äý¢^‹î…-,"„œ¹êôsxv‚@k”ë¨þ8r¡#t0S©DBê.¶Ñ45M°+Ï1)%”ÔÒÉWúGü;ÙS…Õq2Î=è¿) 7·EQ¾‘I¨UüW.¬ O­.?9èÊzÄŒ|+á'˜~­"[Ý^‹2«MraÆ°ÖçµèŠþÉpðè²1Ö9”­ä'ê~9ž¦½8¾ýÆY™È9öâÑ7AåI#so !˜¾óô·Á?<=Cè'¸¯v=§|ÈÃ6Æñú楤žœ½„-ÌCƇ§'’6E=„uû‹Â–ˆQtkÇ,þò¿*à?+…qG¦d±PŠL°!þU/QÎÑ>€žɶ
-Y¼óýŸ{~NÄ!qÕk‹ÿ¶héÕŒ\ºùy+â'I=„ÿ3PÜ$†Ò*ÅÑžqT’=G3ð£»1DôAºR
-xYôÖ>ßÔ°X7^‰@5O›ìCP˜üÉöfv”m^’”,‰¿âÆ·1m†s>K ’
-JÎë—’}ÚÍؾÞë›s
-±Ð çÓ!LÿôÖ­Á¢Û¼;N‚Mç©ù¿-šdÅ;²6æÇu÷^Š>ÿfAø“_JÑ’péºüÏ‹$  °rÁWN¥„' nÇÌÙa(Âh«åé%ʤ%>åaÏ«–…8£>5ƒ‰%þ3—|˜Î&7K¹†‘’ù`~q… ™f†G[»„ïJ¸õœg*âh²Ž `or“÷aCäRó¹k#ÞMsF¤%+ˆ&ÁÍòÉ0t´Ê0ÒëËÉ\ KÉ¢öàT0T¤Øpk‹—cNt«óÀ)…Žó¥DJP6è È·vãæÛ<_JtU•L%µ^·]Ï©0_OW›Ô‡A2@\µ<åä‰_#ù(+dcÁ+åcÓë„ÂÚ‘ÈSáýèéòs:{>´ÜGi3i¡GÚ”G²2±¤9ñußÿ¹Ö|qWŸ·Vƒœ¾†£øñ¹â †€+C7j¿=ûUFvƒ¿vÏ}'`ÀÄ«Öo—<õê1Ê›î±w˜Þ¹$|oΙ|kuwŒ¸¯FÍsðÈ <HËâ"¤‚#ælûI‚9‚’XX܇B<–Åé” ƒoé¸}{îÜ‹æ}ÿç²»]¤F–"/d$ÇMb§!×R7 QMnÐýaòý6x¤—]t‘öbIz„xõ`µÑ.·ú1(»aA‡· {ä—’™É «ŒòÏ<ór Éj
-\Í
->õH’§I\ì/¾‰…”‹3}°ÑZEA`ÜúpŽ8®ÐâîÛ|¶ÑÁLr¤9r:ùh0ElvŒiŒÏ6š
-ÀOp «àÈN6ZPçªS‘£9Ûè{ÑaÞè°“ Hõ»E×õ{gGåã¿)m/†¥ 
-eæÍt°‰Ð´un%†O›ýT¤Ò¼Ô›ñì*Áyñ}½ªSxWùÆÊÍÈfÂ^ò8 B+þ©ÊŒXR0­søýSp[Έ…àÂk„X­¤Ø±P G;¯vúŸ³Þùó¯C.•Õç3Diý&k ü‘D£{(z[x6¸GO]´/E*‘›…xû‚É|9'^^¥ã*YƒXÇÃFtMAðxf—¨YZ?õc
-Â’Y IrÞ¬˜¯1Ì_@*1cî­€ZÑ°Á:oBzdl@Gz*°â3(ÀÃ%_ÔÉ…Àù¢ƒ©GÂ,qÍêZr&¨KÑÇC‘¦‚Q.§"æMoðœU§ò bŽ/p5䢘JÖY0 ²Jðaß’Z¡]r/­¯Žå( »Í]ă‡å¿¨Ô+Ne·é9b²Cäç< ÅS²ºê9VháùLIL¿óp
-…€÷^·ß¨M s0u™»‰ËóŒ3•áDâeŸùdghMXŠsVRD "ðÜN ñX€£.-6ójØÁ^`MK?½ŠÈXQ”`v‡;~›LHž›;Jˆ–q®Å"‹ª{¸¢ì/ç €†CóÅÒ…Y
-X¯yÀÞrœ°èÂ:*Û4½Ç(Bm)‘B×ËñðØ!PÑÜÈ#Ñ!IÚ
-ÕÄé y*ÝqÍ“pD¸x:¤âœ„c pÅB¢éx O¨+Aõ”ü2IçëÀÂmH¯B–£jûÝ’=ÚÉCšjBˆÀ Ì äÿ!z‰ÌB¤Ê %ŸŠÏ$±ù±®zL|£‰Ãm(šÃ8¹@Ã9·"³E™>Ó°ÑWæ:ñk…PNŠÃ>& È›`܆bú¡m²@ «„ÝTeæ¶4²ŠEãA#ü>‡¢ÿŠìû;Jüa¡³¼¦° yaÜïcJðUž¿™`S ¡
-³=Ö1 ÄÙ0‚
-ìs]ÌLJrŸz.º\T',…]Dû¶EÚoUf>,½Jà›:‡üÑëe ÓgÈLêa¡‹òÉD!´ræÀ <m—4¢ Ä=XØ; Œñ\k[ôO}Ä?Ñ*âvXù–k9Ø·óz(!fï5ƒL„1PxÄ8ýPIÇ° ûS¢¹JrÄÏ£`¬w·žžxÖt8…DyÕ û3–q‰/ 6)6hßœîc
-dåìœ,Qár\jK7iò¡­¯¥´rãP¢OáðY¼…õVŽÇˆš:ŽZÝŠÊÚS1¨V’º<Ò£·F¡
-LK¦–\ÞŠä1׈V’DoSA½åÀiÛø±n\†¼!Çl^œ˜Ã]ä”ÖËqJZ 0q¨X=Ît_ˆ£®åᦦ
-gÆ°ÌC ÓWt}êÿqüñ;W¥1¨(¤š~\ ¶± +Röä8üÔ © /*iãOf(;hO¡ •ÒË<8’Ä?ž-&¶m#4ú½¡âÂrÊöoR •Á¡—«Ó¼60/.ÓB–I6/>…*† l›ÂMÙ9ðr ljZ
-îs*gª¤@£]žâsÍbõ´(PþÜ%6p@ 8&6I@¡¯ñY]ÌoØ/\
-‹îñõyåÅð,Râ÷H+ÑÓE>ø
-R‹ùÓo-Ó‘Jdµ³† âÉ—F¼ 0„œ¤áÌ~Gksµ•&Z>·áoFÛÒP
-W›àß%©Êû 9J%~°¿7ý:\ >‡¥’/èmgžrýØ=Jh&Æ=±æûy[â[Í^O(IƒØý(È"u%ÄÚ×IlÜ%ý›#•]ƒ‡vx(É%à%[cJ}ó³¿îc‹÷ŽëÕÄÄŽfëšÍ|ôØ1E£|8/°?aè4˜£ï5ÌÑeÙ¸3¼®4­_%&íÇF';.å«©r€Bèˆ(=hþò‚!!4%UI±÷’P_ÎV6m!QhëhŸõÁ
-ì/Á…žÂ&}¯æ“r dH`*Wð˜}Ø0<5¿wâ
-ÙI»î}c• óŠìl¬¨0¥+ù°_ÏUŸe÷¶D`à3¾t·!D‚÷ƒp¾£¯ùï8°aÿ
-Il‡÷7™‚-Þ°Š ¹]â;dˆäXŽ¤Y[X©T®×_ˆ
-^”£1[‡'iÎïõõ€F¢1ºž-z=%]
-4£EŽ@GA0©Vlf ¿ƒ±#=w[«§‹z0"XøU‚KÀj…—³Pûä|2V®m‹1=â Ô»½Âš¡¹ƒc¦n²îºNÅnt ¡Œ€Rƒg!,¯”’Ü
-¿ÍÍ£7BÙ/'x“<2ÝOïÀ¥Œ"“Ke¦€²s,÷mÏi2×—æ0©ó…†Õ CV¿ï™Gß¹<ºÍ 9Ñ«|vçãG‹ Ô¿°/r®É7‹‰VÑ·Ëðïû•À`èw. ?¶n$jÐxÚpW+®««äâƒ`–Æ!å¯aïÍŒFc¡|¸IžGäÅ_LâZ)Ì-Òépèw½_pgjè ¢ê½ lSz´z¢¡’)oï¶ÑjšI=û8ÐᎾC°{‰ÁŒÕŠAò¡«OpJ$(Ëé3dÃqØ}¬ Š½K„—k— Ð¸DvKÖÍ›m÷,úmð¯¨H*Ñ3â'ÉÏuÆîa„èP›GÀ,Á„ÙýéX±L‚BE5ñß87¦w™Å®‹d«Ûm†‹ñ$jÌÝdÐÆýqLiŸô0ÒO¦ 9¸ÀçãwxÉáwX>ŽÖõ™Ø8—aPd‚Fß(eÉéB!G Øír”V¹Äš&0sÆ…|áÅ„ èû;$Œêsñîü/:#žÀº¾ÅkZW-Íø¤‹ÿ]Ε?›½
-É”fãª?éJK§E7©$‰o$l–ý(îX“@¦£Œ.Ë=°=uÎ@8ÚLÙô0 ªsU ýP'â:K¦i¬E?'ÝŠ„y݇)ðo_ßA¦¹ ¯®gsŒ3r‡ƒ ¥õ¨ ‹¿B¨r»\ð¥@ÕìϵèÈÈÅ—!& š)õUæ‹|Ât'Ø0\ò™±ð2VâK€@΋æ%1CÝŠ>¾)ÂÖ@.½Ëg8C©è?
-H‰”—AŽ¤5 …OÐw¨5¥8±{‰†eo9ÁV=KîÏç$ÿ@W¥4Ð]ý*‰íg¿çîC›DÜ~mî÷Z[5V´Èʹ߇v­¢cXõ)6ºG¯
-nBz éÚêC2îaÎGEJ1»}}KÕ(Ñ:—õ¾@nµ—ο2tžÓú¨uÔÒÆ‚Œ"b¡À&DLGE5¼Ê¸½g]ÌõxŽñjuQ0ãzMç~±b± ½G“NzÛQ6xïu•™Œ*V[ÝÙ áÃ"±yŽFÕâ¦îýÊqó&ÕIDÓ­™OWñÛ®Ò;xáMÑ¥0gL•ÐÐÒ"Ƹ%"3GE©xµýàJ!DBvÜ¥’^¢u\…Riµ™{”+n!ÖJ'Ÿ¾@݆ÊI£É<§20Ô¥ÇN± ¥ö^kï behÞ]lߤÎŒpn»nÒ¬Z4çÍ Tù…×û(ó˜P‘F±)EÝ2\8£S†Å›Ñ[P· ›¢;%Ú ‘~“ÑKíiš”L
-MAR¯ãŒøDÑ/oϘ×KÎü~\Äÿ
-„ÂBþç@t”©Ó‰¾­Qd|8B“ Áå!-„¾•Ò)†§ìfÆ×EFúlŒãviƒ§”4Ae´yH
-=Ìp•í‹,Û¾`jp9/ $…ŸÓ€5ß7=ƒ> w>&røRé—ü†餹:ò£ Þ6¢ aÓ!mÍÒ¬BÞž¶•z]vãž& ™…j ®=99N¦Hú{ )åzvFɾ:§’©O‰éWdÚîËâÚpn45”˜ú`>Æòq+¦5,M´Ô}ÏÄÁƒ_6ÍçóÛHßËYQhÒ‘ú@÷ ’j–Š‚ážò}9¦“ƒÈõúx¢4oÍ‚µÕßð:‡NZèa,å„!ø^Wc{3&’qíG©ä¥¸_í]&‡š%ówàè!„5e*h ³¬îy;:Öòq;D&ƒBé‹SP1eq“‹|Ÿ7µ9#r`iMRž7>@âX‘ôÇ>=ÃÓæ˜êDU¦´ìäa²[.0Ñ^ šY`g:‹\7=Ò9JUr±Šè$W÷bdä€ x¯×=9âÚäTæF¡qußC¡±
-ß:N†N—uŒL\Ç`t¬–GPL‰@ö1Žå|€¬›ð`…ßøìŠüᘃ{åÔVõÚP(­Xb»¾š–¦âá°üç½kZC˜Ÿaä^³’ƒÂã2òÛ>L<ѪÕOFõËô³Á4wÔè¶loæ
-£Êý1íì C_ÒJÌf«O“¸ÐBÓYÖjØBPûÊ—è+[tgô>Çö•å>I˜:Iž)·ÓK©ó-_Gv+á,‰b9pàÞyB${NÁ¹w=BÖM%Ý7Ó'Ø^çØ=MS«9°z_cŒqM;9 ¦¾
-PéT]˜n-ŽÉ1–Àsè Ç Ÿ ÿ-ÔºéÃ8ᱬŠ¦ë˜çÇ`àé:ìA™ð9(K)bŒ!!4Ö¾ê19|Bâøº3‡ösŠ9y œ\4´+õ±
-õXðçSHsxÉ#÷(LÓ
- Ÿ›XÏ}Àº€U ÌÒÿVéj:í)ì¹e¶?#œ kvaVH"–ÿ;ÞO 4ؤÂóÆüŸ §ëA?ó¦÷ùôzO9EŽ¨r‰ ƒ¦çb(r=UÇ+c•MÉ ÷#è_½SÁ\FÊÏ‚²¼Jˆ¹¾Ÿþúø™è2 ¿üñVn¿ýùöËßorûý­Ë(ÀŽcúÖ˜4TÎÀÁ4r’ ¸‡ÁÆ«³(!žÃw—ÄÝ:øŒ„º´SÞöaÛ¬ÜÒ %}ÇÆ;‚6=ˆÃ„àf DB·8´´ÅÈ:þsLˆà2œ× ¥û1mi¥[êÇ„¤9%‘[\âûŒÜSwp ÚW—?€>VzX0˜éÆê”üÊÉ”n:¾5!X\Mã¡i'$õ™˜Î,A¹ ²:¨íl‡Ò¹¹ˆÍcÅÄÔä"¶_•‘™c]LOG'´ozñZ2†6“‘õbü ~¸²Û´´ø½r¨”ÉÄ\CsàjÎæS»|[ ôQéKE·3­9B-ýã|ܤXqÚwÛ)è…¤òÁ¾ÅZËf|¸ù´ŸñE*½ãgʲ.¯~Ÿ)IÅÁ˜ñæ3¸ÁŒäAþåe’ÛÖDÑdZÀ¾gê]xjïúÏ-’Fü^ öG€$JlŠ·n£|êØd¯E7»­"C4& [éÙmÃF¸e Ó×:Ii© š3[I•)–± õØí¢x€O—Tk+I3ò/N˜ÇoÃ>uÔ$ꟶN’™f³x $0jÕ|ÿ:²§"em5íM¾•£€ƒZÆÚÖ˜Cbž‚_ÞP/òÐ<XTdS À)::·alá ôáãËÞˆïðâÊY#s žÞ8V™1¨³ÈÅ,ê
-b`p7’Wâ³Å¥èíEQ-š©H‹+¼f>€r”Ö`%‚Ã@ãç ÷¼JpÜi‹}>’ô %)MÄyð˲®0íÞÐ9<~i¤Õ›+¹±²º§DÚqlɇç/^ÉÚŠñ„þð)ù‹uòPÀ Y÷Þwâνâ^õE îŒÁ
-MÁt$rɳÜk>^Ô˜1¦7WÁ~1kÊm™
-u?‘1ÎJz™ZÆH|•4.Å¿¼w8=)öÊ6ŸÛœ`<9Q¶ûâèf²B仄°›uK&dÓÈ̱#h,ßœ’wøîëÐ
-fê_~Jq·ÚL,âÔ!0ˆ¯íUk¨•úšª m KgÃUvw¢ˆu=•pí¨–öœóé1íKâùQ_” @Hò%¦ùûÇ)’Ü ÛM–%úxQÔñæû—P=Û nˆ9þʇûb—ŸEt³•ðF’!ø£ýW9Öyœ¢5èã7B%£Å{ƒÌ
- ^`nŽãjœ§Ëº™œe94ÌÎ)…ì½¹E—N¾y»]j>~q¢‹AìBTaŠzÒdîÎO±Ì@»úñù¢ˆ¹É9c|ô…L@—˜ÈSÒmTWz¦ž~W"0I „;Dœé)š7¡XHTuØâ„Ç,Ä#^ Ù:%‰‚Õgi7ýRV=äÖLÿ­@Û0
-£à¨³³Æ”ÅÀÃ2Úùø‡Ë9(éüÂelú‹û
-'¼[k%).9)Õ$h Ø*ÂÆ1±qؼà êB×äű)Ø1•$­M`ÔÅ.ßl«Tf8¤UÄŠYˆ’¯³uø/k(GìuFŽ< ýIcPBhÅ?zˆlÚSäg Ò$I¼ŠxÎ ?‰çµNSjJS>üÃNÉãq+Ænì’,¿_9µ¦Jxº¢ÜGÛ–zÈnÀØ Ê*°`Œâ1ËA)üˆ!åR©ï{£<` 9Ï Yôt[eTºËècßöC¡K0/.¡ù¢„ç)æe› _Ä|cH¹hŽûÚ×D›,Ø/ÛV„<n %×Xcè‹öF/m~ÄkX+å?×µP-3(Òî"¥èâÄÓbë`®*ör„VLLxÝÀ£
-¾–Wa¨Ç‚Ÿˆ‚(&Xîu:)CþˆÔºŽÜ•Ä”'ÚÒ?€D9YpÊnØÕåª&kŽTÌ
-ÅI9‚·Ñ€Ãñ¥´Í AI#òódžmhÚpˆÍÞ½<þ[
-¶½½½(ìc †{ƒ¢*CÆðC|«H‘‰bLõdåYY—W–Bï«Ãˆ
-cVAŠ¦ýôF<† -.,Œ O¡ËhîžnI·­à¿8ƒÂ¾x¨\ØŒ-(ç™ÆÉ6É:Ò¦~°W‡ñð­'§ÈÞýAö£ÞÒ‘7zL[鈾#K §Hâa¾š5
-,—£WÂp4 %êÝ¿ü¢¨<†{RJ³‡¿Ý ¨#rÄ$lÀåãlÀíꎹé )ØB2¤!ŜǞ‹ ¤™qeÕ‚4oM`«B¶)' ùo z³¡{E »LÁ#B`)Ls³<+#tV‚¯ÂðËîŸðÊt ô`¸-GXŸX½!ˆ3Ëû4&\iDãoxàÑXõÌU•—¡[Ø•UüÓoLë"oŒË"éü›áïEèf, ‘ìôæ6ø·ESw¦¡ÓÒ™Sƒ:±ÌÁÌ%nÀ¥S®ÃJð ‚
-4}c•¸Áa&ûÌfË`|¹|ªÏÓ“
-Ò(õ©V
-Wž|^û|Q¤žÓ5ÎÆ8¨$b÷5v¾ æé,ßLù}J ñEÒ}ìA,"îÀ÷X‹wÛ‰7ûÌžv È'Ebk«žŽì†úåäjX‘o
-]¸ä蔬×ì¸QV¡ÁãÕ:—¿Ÿæ†ïV7üÝ›sGñ­ÃÐÿ}¨÷ßLÌÛ L¥=i#¡Åü¾³Ü§[0KÖÁṎk£„f˜cäãé…JF-²é<éh~hPòàÅŽÔ³(‘3,t_í†÷寡A Ë‘Ç“»͇$%º+ÆÀÑ2ìC´‰yG-ábñW—\Aè¶Õ„Ú8PAºÝ|' *[§¦Žßà€vfnk+Æ!UÞ¹Ê~rp‹¾=ý‡W$¿ßã`7`³m–%F]60Çš:žcÐú¾:ÃXÎxØ ¬üBMÝ]fº¤)\´l?Š» Q‘¬æjrÁ÷N\.5y²ìå]Þ… ü6êM–(®Mº dZV˜Ü£ïAK¦NN](EÌ9PÆEŸØ0x
-
-4\[ìkÜ6rÍd×]c’Ö1ÿ{î“W8ÒÐŒÍ?§¹äýZ39²ü¹Šˆ1Ê1Úx, A0*¥˜ç¥H¾fƒã÷:£r$°SqêÄöt DœhîÔ$…¼ ¼€‰EoúÒSq+‹#ò‡8?“R †–áËœXâÇ)­¤Ðº1öXákàR Å û’ëL8#^Nä×i.Ë'1„Eæó?ÊË&¹ŽÂ'ðt‚ÿ¹Ö¶oÑ[ùþÛùd9Z¯PaÍxz¢GN±H ‘ÈŒÔB4 +‹ôPsô%ÒYšMÌFšâsé€ÌÉ Æ—b[‘Eëɯ½z‚ I$Èc $b¥’D¥fŸ¿лµ–£S¢D”ViDÕùS>'VTMRuRDh‘ð
-:^ÄvŒ†?‡¯gÿ¡x\91ÕË!¬Ui
-ܬ,fB‹£œ1Õx!¡L@•ƒ¶ôß\Ë5¦ä4 ‹åíÒ
-vÒ?`ñJv´R+%%mó ìH©ø¼Ž/×¾æ&óŠQ0oÊ v… 8^ˆAØ;ç ²9ë6­®É”†ç@34Ñ(~:/B34œ }ÚwyHûÌéœ2žLr1v*· 0@¾Wë5äÈ
-™‹ËÔ`Ô—٫f)çÂómT(û¶àÆŒäˆ+”_ÔØPP†¯œs8×O®¢Éa³<[O> ˆ‹†²Ž,[Æ…Ó¤Ï ¦ŠE­åñõ€Áâ)Íj^ì Y²èBãä%–±RŠ¹ø’bL¸“Õ‰3« Y/9í… Ñ65ãp|óðQ'¾ç% Ì‹ÐÅŸ8v©éÚÑsdls ÏQСÄÈÜvÝæ»ÙÕŠ©äÁ‚m¿úùñ¯°WWþ™Wi(-õ¥uÕ«—dg0ïIù┆¡mM’Ÿ]ãï\ŸNcÓH²œœ7PÐðÌBaGófÔï97Ìl ¿ehd·Kî7z}ýdD}’³\}r#/‚uÖ%zX1­¹ú$ »jróÔ*-BZqÿˆ"_M\Jþ¾ðsiÏÃ÷®x†RB{–,ùkÚ›=®ñ‡ kv ØY:Ì¥m.‡0²åRûã¶zÇTàf;Ùb÷P3XkýXŠª}'7½ºŸÁ5†];N¤Ö†óØŸì°Ì±d
-€/bÏç6Î!{@îÃØ'h… ˆ#*¡xæ¼@oœÝUÆÃ2Éi>§–.Çhîÿô.ì~A +662J* óÛXË«¥@öÓ K™ý„Ñ-óᣣ¦tñçÆg@˜X¶
-KAþÛ©ý¥;†šsYæ«Õ}Ìý2äºN$ãù6ÂGé'$ŒÉª†B§~ïÅDáÚ |ä ¨ÄMƒ[“´©æ¨Qßû;ïí¾òΙà&ïÜ _tç° U’[ˇ÷I0½
-÷ftø©Õ ¡@ ¦ŠµÓó7b¬òJ¨VÁ°›µ?=/R:Tjí4“)!ÝùÒnL™Ydz>ExèêJ冎ÅA“Ó¹LfûÑ=íA7>þ• ÓØ ã8zñ?©z÷}Êe£IMÔ©#B¼i…¯Dk/3…G.™¶}ñ¨Iynß+!ˆ‘^ôŠääTfÖ¦{AåÚÏ}ø»:1uÌñ†dåC¿ûaç 2¦‚¿¼¡z¶süÚŽu2P•c*mè
-`ÖÚ† Ö<«}ö6Ô»¥Qw¶Êõ¥¦ 4äPú–v>QÆÚûÖ„¼ä"~áYüT»I»=ß8„ÍÅü¢i 1Vh•ze TO•¥šÙ´¹_U”ôÌ¥#ÙþÇx™$WvãPtÞƒVÁ¾§‡¹ OåýOë\T”þÃkà§ñ‘
-†Q¡h©ø‡`)^»–ÙE˜}£1’T-N8ç29u¸{‚œª îþ¦ä›ÁúmŸoaçxÈ‘Æ—¢Ï7E M¬C
-²°«[ 4 iÀ§Q¬„í¯‚°Ôð¼Šg&–g­‹qÈÞlòQÍ>ðr ˆŸIíBŠIØÔ¯IÍG†˜š¤2æ·’³7ŠÛ€Øï0ç€Æ$™É‡*¸L—9æ¿<á° òJ€¼ø†‚v4 ¡¿½û—2à ás.~#G‡
-¤¼ímJ6ñè·{À¼°ïõMë±ñKcNo_Tôâï(×`'׺%
-ýÆže¾’R—•€|v˜ù·îþ†ÑWZ…tÕ«.,’Eɺ’ño¬¤'ç$9dȧ)ÔnuN~W’M¤° ÜÐèuaúX ìB‹Š>½dlŒ6×tÃEl€ Ñí:]‚Xê<-iä ŽÝIsÉÐê
-A§®ìÉ`Ïêm2ît.¬ zàOg&0<²s( €Áh¤öË7'ËšâCÆœá8_JΗ8[—¡¼ÖÃsØÀ‹½•Þù£È3P¼´À½Ÿ¸DG¤=ýSȲ6p¹ëÊ»NĉñGɱ¡5SÁî#¶™k€EySòÍ®ÊÕæ¿ù [GÄe-áà¼îÿ׊$yY2MØ ‚Ž03ö0—Ö\h˜ä^eá‹• j¶;ò§ïi™ë:lªçÂxhÍ‚/¯¾Ve¦hÙ€ç}’l¿¬š;3Z 8ÃÒœ’©œ$ðO?e7"ˆ‚’OŽ+òaMQ‹-AÑŸ7Elyt£…Ÿ§¯¶µzýJ
-.k1?EFehK;%RtúEDrq#—q¬àŸMŸER‰‹é¢ˆàG#_È/¸²$ú£¢—Øöù¦†¬•‘‹(i—f·Ù% É{¿”âꦕdL|Ïh«’°µîN‡ã’L®tW¸GÎ(œšWðl¯D‚’©
-`Læ%˜D¤Tˆs= ŠH=6lª<óÌÌxá?)ó ¤“NØFWΰToŠJó;hWLàéÛ€ÿ²ä+LÌã±
-rB[X%P"ÞKÈ!F*bÛc^ã4|aæj=”œéé¥è㦇³´&C8ééTD§è
-΄§BÄÌEvoûkÈäÊbxØ 6¹ô­¨éÖ€Fš9”Á±e,ém “xð—fÏï
-ȦɈ•}æ„ÈÀ¾Ö¾EY!ó
-Ú€ 0ö…ö‚rm–zOSü<DZö
-ìC·äFK;÷ä)Âð;¾W½C\Côµ=q5,kÁ`âb é7ðÌ>LCEðK(x]%òü8xÐå°‘?b*]zä-†άi±ÝŸéˈ¥q8¿i*ÞŽñ`á§Má*Teaí&Œù®v¦ÇïðÊÂéÐŽ}2ú ¨pº(U²eÑ¿b’=¤»*Íè(š>yÃRƒk
-RIlr;(ŠÌÍšrÏ$± ÑV‰Ì'ç—Üœ,¸ãþ±ï¿EÓñ܃tl"çTÿ%Ô&õy˜„ ÒK™G§v½ “,¬H—ÍŽØZ‚À“úTùuŸCÑW‰ýü‰ÌÄiБJ R(ÞkÀßJ39þ:åº<¿ƒaÀž÷]áj¥P¬ð›J:\}Ë6•mf˜Q‹”M?Q ±‚)+WÚ¡ä÷<
-&¨ÒDä¯Ü|ß[”c†çMÆJ¦@ yÄtÃE¯Òá¶s#“™‚2Vn¸"AÆ7²8ºùXîü'E×H0kALÂùõœNÕ)«¸{[$E
-‘Eæøzéd/$‚Pcľ·Ã> ìXNÈÏÓÚ©‚Õ
-$XbKÍúûVMsÔñ¼Xí¬4UóÉhý™Ex^(¢šÛš0.E‡©_{-úüÉÖÕv£
-¼ÌÌIPÝ ­A!¸G`*ŸH 0‹²ñBœ ºÎÖô°!¿çIMÿl”–™4´{²£,ES°PI¤ˆ”…/ ”ÃMu–ðë- ե%cØX\êøþëR&%ÌÄÚšq³Ñi!<
-Z[ó¡èsAgÀ cšÛéK Á$Ü€•-«¤hcy5.¥Î¬a…¥^ùŠÁ+ñÌUNëÒ]l&À´î'5¦Òù)g•ùݘ¡€i¬=
-3ÃbKwØqˆ0T¨Ó©„{
-kûÜ
-Q¬Šº®¢\„k'X ds#žÚ—bvé+Ê qS>€Ÿ°ÞõPrb§—’c‰”œÀDŽîÜôZ¤é
-,Á©ÔäH+9«š[
-l;¨¦ÖáøË´bÒÚÀïô1JÖIü_LTj;G^¾Ã <¦}—šñ$dͱ*”ìÈ9,lò„(á2Ù×E‚Adž;½Ab0®ìõXÔÄ ¡¢F^½éÓ¬±É|ÛùZª$î¯8 0,KßhqéùPôyS”ØE¶1ƒ&:|¬þU(W÷Ë~û˱0+ZÔÚI4)Sð‹þr¦&%Ûu¬¢Êo5åQØ`·c´øÉá6ÕFÓåìÖËun-Õèž"ƒA»ÄÈbqþÛàoŸDÂe *$’¸
-gìj´UQ¥%!š»sPè
-´€¤›¢ú`BâØЗ¡ÑØD#ä9!Î"{®ŽÆ¡‰¡Ü|Éh3dŸH˜ç6A—,’:yÓáåue
-?˜”lݵɦŗ(á¬]l±áfÐiÞ¯c[$wÇUa›¾³rco㷢ϟL÷™PPÄËE¼; =ÄÇ?çš¡´9Ä¢*Pˆ2-f·´IË,ª9Í’$/ƒ”ÜÒ²À4xH´ÛÔ c(|äGa{ZX‡Á°ì²”àóÇT:énéc³âÀÕ­’A8ò,íP¢£?²^¿˜¨ïßA¿q©´›ä—ü(=XX– ®zZøw‘h]£Åû¯ÿ/sÜØŽ$Š®€{ -ƒÈ)r0_&Ý^A£-Qfï¿ÏÍP½Ÿ€
-T“H@!`‘,E ;„©&ÛÉ°ï̪¤9qN›ŸiVÒè×´ÎC²´ rõ„Š ù4d ÷U_OT¡óÄ›rråĽã÷ÇÜÇKê6€÷âܦøVagÎÿÙ§ÿü`]>jL7ú"÷t?ìo/¤k(õædrŠ0L¨ÊQ×´‹Ê)#2ªŒØ ‘vM4–>ÜåÁ_©D£í*ãÞJ@Xƒ}æ.‘$(Jh»-¿
-MŒ> ÷`¶ÌW õÑ.bHR—@$Ø F¦qŒeä[|"L:¯Êè‡Ap†µïžË? D#üŸæ9E G½X­"%Õy„Ñ ±¥mP¼½lß!ht‚ÚÏö‚^úþåMG3"¶8,ÏËðµ™±Ë,éÆIp ÷)™Óvê;8înU¹ñ
-6ö›TVˆ
-'aCû=ÈQG<zH jWR÷䨤ëP=QDV§„vcd(YÒ,›t0dI˜¸×8¢®#jQnk†t´#Ë :?HIDÂÍ
-v‰ $¤d§£ôŸ€ÔÖªû‰b¯
-tf%akÍô‹è¨'æ#Œ†TÀ÷ f±:ø”¤Kö{€Ö$œœDHí"Bôë7é{á;C¾B ð(è´ Lq–íí(ê}ð`€BùÖÊ *9‚ayc
-‚x~¹!
-&ÁfV¡ì­V`=æÏòù¸?!’„ÿ¼Š…A0#nE óq”Ó$Ê×N1œd.“¶}Pp]]V‰o!¢L¶‚©áãœÎU· ô§df·-,‘uA[ [±ëñ ¼4_\X"ÓK°æ¶x:¤Ó°’¾ ˆ!ê1¶ç8>–®æïöîÐêͪh«°ž(vˆèÁñh*ø–Ab.ûx8&  ZåûÅRØUH…“%ÌxI
-''é®,ò7½t
-a›"š2ˆ1Ë¢C†/KÛÙ’£„À„.“ãy‰“¦Øh ÎÄGŒa’ÆÇõxA_;/•µ¶í+BŃoƒÖÞ¡O¡: iÜý€ì˜Öt­fyT,Z=öüA’±¬}gN‰‘÷`†olÅØ õ…1\{‡öc'öM=ÂŽ]ªµ5¯——ˆ55eLFÓ=†©©l%êÛçhž#j ºÛšŽŠTµ„çÊ €
-¡5UVŸÜoV±LµxdP²0üTœÇ0\Ò4Ý®3¥hNXŸ€ì…¬›Àfˆ½ðæà;\Úðòá«Î[˜á) {Ì©w!TAmßJ«-Gì%=øòÒ¨uÕ=‚g([ïÞk`Nd5K_JknR·nºÔFÔ*‚D¢µ}̵ÀP+K/Ý„Øwûô±î¹tû~Èubœ—\ÏÍç:¿÷²Ü—àVÛß,ÓÃαšC’úÃß9ŽÖƒ´Foç8ó˜Ñ`à¤.¼á!”~)Ã߹ɽ˜Pð±YSD†Ó¸v¸| p÷í~ÆëDy¯¸ ¦ŸÍe¾½¢\¶Ä+í=ä¥EšÉ "oÛ‘-EâÙJq³ŠS!| …ÜÜuSÌXr¤á­›Är
-lº¹]º„x çsç1—±sSºN¯Sšë8þÍ.iåþø÷·!ÑÙöÎOpùü‰ÐÃE¾‡÷¿Þ°Ð1³pü<®‚ÕšŒ)¥2«ÙDÐ’_<œmq‚> J†ÌèÂ.Šþt®»}ýäMŸ¤Þÿõß·?þGž(¨™ÍŠ¶þ$2våølòÿ¿ÞjH®Ž.WHctuEK©p¬d¤õ»AHlœ$Ê*W£Í>¤WÑ„ìêÊôGAÌ}©s¤QDòº×ý0(i¨%%¬ h€€k¸»öã K ¾~R'U?¾ÿù†þÄÙÎãðjò›E?Î¥Œn®+(ÆN"“¼ … ";Þa”i
-fˆñ3ÔtLø LCÎ?0¼ìòaºqx Ø>)ˆ%z'Û±ƒp#ŘNfgƒM衾ç1±êºD¥VH˜¦¯ò ´BôO aVaßÄVó_ÂB%ÛAƒklò^œç@’ÀœûŠÈÖN—RÖM¬6¾‡÷Ø‘„UK*46qŠcÑ+¹ð0íçÐ$¬k^À§"Æeï"(°B0±&ËX>DYÙ)–,
-4Ô…Q4±„lÉ úz’K•’ŒÀÕì&¾ H#°¦,i!é€É¬†÷
-üwÑÝy±;Ef™Dïép
-†´ú¤m…L)@¡qŠº CÑ+2 ¹ÆX!|`ÙGpê*¬ hÀZÓ¡šVF‚nÌeo+)ð ´BøšïÙv8C˜5GC@‘$Ó`RÓ}YÓ/ ¬YÍòEY¶ˆv÷yŽŠÃêa¡¬èŠaé)+!ÉþÏx™%irÛ@øºƒNðp{¶Ï¢§Ñý_ý%¶§«Y¶B3šn7$rXM¼ÐÙêQT°e]¯…ü©]Ù‹ÄlÌ(醨òáàÝüVÆ€òï*ëáÕAeY%­Àªâ_]²19zæi œÅ2Ío5¡š.„—%))åÑL z»³x_˜,•dÆŸ÷†F Ï°à÷ Hæ$/Å` Á°:¡²s—Œ”Àh¦ç¼8üÀ‘9tE¯Nü¨ÍK€"sG„‹c«Ám@gÅ‹
-b#Î^ l Ø&~§J•0š|#ÿQÇ‘¾¢¯äñ|£±Ìl¬²{¹0±âßj°HÊ›­Ã8Ì9SÅD«„uQ£nV{÷‰Éˆã˼_+tÆNñg”/E ®
-J °Ý ·ô&ãfÜ4Õ°±²Ÿ‡/§@Ì~ÁÇ¿ce—tõ®ÅÌÙÄ>"ì$’­D‡¡»æƒ'’ÞpúÃüÀ“L&›%ØNæhÈ4n‰!¿‡Ûƒjeu˜ZµŽé¬ ›†ÊBÙ¼T:$5{PɤXx"„XoÙù!Lî³)=e:l]Jb6a
-9ü2Mw ¼ ÅT;t!âG(RZkà헎褓—¨‹×YÁ®¾¤¡µKP÷†#¿ü
-nª/9Œ"-B [ÿU£ïynC¹2p»NÉ·P"ip'æÚ^²¥`;7„Ôì}Ϩ”ä™õð-Wß΄`ŒºØ`àó­Ä·B¶± Wlùe=]Ò`Ñ™(Au…HFÒ;Åï·md^Ë%°øV08ö›ØÙó)ú|(
- â€9¯šLC€ˆÄ˜¼/ÿe8‘†š‰µ±×ÉФ3²õ“
-·6ÀA@ÃKДX~}Â\™—ªg#”D(•ž¬[ÀL‹ù•x5ˆ
-¬²ãýRBî%ÌÑò”_Jñà¥j04Ær½­ó{‚¸—àtp
-U*QÎV’JrbîíÒô]aü=
-—IqrÑt.ÅWh=£‡šu‰igTas á.Ô°ó(ñxJˆLfüø±ìÌð‘/żâÀÈ<ØtÊ]¢ÀT g”©½°M#„ È˜…ÖVt[ÑÉæÅV\O¹ñjåP(­E Qó’ŽÝ$ãÁÏö‚QŠ¦„HÚ?o@þµ‹ ‘,kbÄJ=z¨8k{3ÃîÑZqP½ð¥¬M´” Ì!‰ÆsG®Û`'ç¸:½ ù£š@'™î±i¶²D™”Wòáš,Þño‡C Ž &Yø÷Xÿ¯‰ê Hø_ƒ» ‘‹V᧑ž~îU÷\KCu(v†IÜzØ2"
-étL×Kv£Æ}°J;$ú=»Á“Ó-†(Ÿ·yd®¶N¦Ú»ûæ„tYi$)ñãÜè÷T¶Ù³)2T°Pt€¤UÔËW±Ñ“‡`¸‰¸#s–C a4«Xk^+*G«±tîˆË³èa7@Oñýô¿þÈþ›R±ÔŸ÷Q²o
-S,`  ”¿wQ⛬9T¬F%¤A
- —"•ÐUtï
-” 6Ï»Vï]¾pãn’.â¯ÙN¢hcJñ:ØÞi =©ïe€IIz¬Ó4åx£aÓ+¡@†Üç®@kÖÌb@c§ÚÿjF®‰ gæZC‘}N§Ѹ[ªy0š{›½”hÕý¶¹ìlõ(2¥Rè
-F Ã’#çðÄr«‰X×|,¨AL˜8'“[0x,ó´Ié†ÿð{s½ÛW2˼”øVSr*›=f}Y†x;˜Ê(É°º#öç èƒÝ ØV“³JFæ àL¡›]\ø¬5¹=Î:†™«àf¶x>ÓÐ69üì%ÜÉä G{óö×_ò1­ùƒà²4ÜÓ|ˆ6¸,>lßû^§"Nòåps¬ÃÎâzo»H%0ÂqVÀ.2ƒI©™“dØ”7}kû
-f¹ú…4ù§ßÉ^J`!òj‡*[?[ýoÂ7¥ÍM@l2l
-°9H ¯žåJ¥c;–ñÍôte\ŠTÂÒâF©24ÆŠ\J$s^Je$™óÄû]ø’ƒÏõa†ñk³qŸÀJ¹ê¦Jäoë—êBq–€·J¨Wp„`* E¤g3ÇV]Öš}R:ˆèæ ‘Á „K2D´šéñLìšÜ]±_¯1ç $à.· eâõfìdÚ,ßyà*É? “óø:Òibê±èRÐä/¹Åk I¨n>ÎV"è+ËÛ'†$û2&[BL[€8ŸÂ|~ë\€*¦³•ÿ0^.9zÜ0>Aîzµko}‹
-þJv#_ÿ)ñþÁ˜f6Ω{IÓ=42cOç- AcØÉDeDp„'Ïa¦äãR{'wP†déߤ-‹EEá÷00_G÷à: 1`5~àú‡T0‡¸Cå”hvv!cZ˯‘j}YåZÑìêQ2ÿXÆ{»%qÙ&ÄÁ™Ñ¢(ÏLJôOŠ«ì&9
-ÙÖ9AÌajÅri†ËÃ
-$Šgä…ßò# {‰¹±¢ íÎØÚR(g‡«Fé=¥kruÚKuƒ§gE£V±Ö !˾å©—id;Pý ùÐýŸœ@äÍ!çDW•D¾Ž ƒ’"SƒñÕãaäx„Ö&4¼¼AÌWö0%Q‹_*[„q2m'üçnß¡8Qj#=*±pÛ¾×ûf ™¦‹)™ÔÈv˜;3Óã(âû’9cŽ{
-sÏjÁˆqÉ)²uõ)ÉÀGu5¢URü¸öRD%зA ü30]ÃÑÆܟц””Ìò
-2Êì‘Y¶›Ý ~á
- Æ"8<û†°Kf©\w^Éž[³Uâ
-³ iW¨/i”—ÓúYšǶ œŠü/‡â0\OýÏSÐ<™©Ã>{l%šÅgQºÜy
-Ë#×#Ñ„Æô³)WBæeZ›wpCÉ|Œ‰˜ÞËb*x†È¿ì²À0g§‘Û¤R( ÚwjBÓùxM;<,( ˜\ú½´;\ˆŸ$!6èÅÕßé?D!E^‹l¬¥Uib„Îáæ‡ûê¨N†à×éxíP[ly£4¼Ö¾£é†“ŠŠ;aWæ°)3°•
-Â*)¯¸Dœ¨p^´J‹ÂÕã¨Ë<Ÿ0Bˆ«rA0Ê@°£0%‰¿ChùÃéy9¤(-3ù×® ´êU°™÷« ”Ö†ÛD/IIª`÷+Wn%XâÊœÉ.FÄi2™¤Z˜YÚ²­à ºÑø ‹ 1((A±×ÿºeÀ¯ÐçÖt„ä®Å2­\_ ýâ ºÇVAˆaxc´"!“s øœƒ0¼´íåá?+Hô€ $Q:ɲZ_¾bá`“k/V<Ÿ¤„ø¿ÅÐLübä·£øL'-±ã¬ü\0’dÖ®M þšÄ¥–æôå |±è¿ËU‡ ‚®#³Œz¼ò òxú t+áòÙˆäÖN ¬ævyID^FuäÌÀDˆ¦â¢ÄJN[R*Ƹ´·(³8ÕIòL*½†‡T‘‘w±§B§LP-}½@>„2ÚÉP¯V¨ìäíl„ò$ïÜ'ˆ]\sÉ¡¥ÄÄkþæ1–ŒUbhÍ… ¡ÃErcø¢6¬PpM‘fÕ‡¸‘K¶M2ÿLõ´ßÊÐ,‡3»ÊOOˆŸ„ÝM¤õ"ŵ—ïLþ5Y‡¸À
-‰FRZÛå¬MÉö€zÍÏuÔüÁJ¥MÜÕöËÉ'Y¿×Í`'5ïpk(žï!Çá*\–A*ÙW#x׸ k-õâ‘kŒ8ª.[òt…
-8MÄÞó™²!4½„â<17—9¦¥‡)›1#ä§A‹ô6Áäse)p3pÓÂÙ”à5S†%Wk*;›»Í'è_
-H‰Œ—In¤9…Oà;øHŠ¢Ö¹­[4ЫÌûoû£†@:¬@0
-eçû5P|ÕJÿü磅=JïÝ]¬›ÔÏÿX)0/£•ÑëX }”b:JŒ¦C~ jÞZˆôÒ­ø›í~ò‡v1jñù<j“·ÕzÐ?ÿûhݵ‡Uuíª&‘(­” þü3A2¼/ì‘ úÍko¥v)í3!fnc”¡üÂôÖ=
-ªÉ„¸ª‡ðŧRчS$ýüïÜ)j¯ªV†˜,P±Ñõ´Ü©=XRZé#¢ú‚˜«HsmMë„¥‹nväVíÁéˈ^øs³Ž÷b¬ÃV«8@Æ5ë0|&
-µq¾xÞ»9ŸõfEÅöVTK¤¦»~ü®ù¨Þ{nåânźÝõ“h<Ucž’ÊHžn˜.«tU÷17ò‡(ÿåÈ}C;Qáó|–¦w©QVïÐ(l ÂéŸÎ-Ö¼¯"]Ä¥x~·wRÏ·žÐl̲ jëkÞI’^Û‚dÏðc#êx‰oŒÝxí_7 ½è5\T’Tز‡Šø
-´€ŠÏ»1ˆÕxBJ¹ï®£rq£ávW˜Vktu§S†N ºw‚‰#IL£ž*³4¯-VÂ)PÊþMD»A*6¯z¶¢×FÈàcƒ„ëñZÍ ÿâ M$«»èP>äÞÅ'¤i3ùyzj@CJi±·ªè=|ׯR&îÎU7ƒ“ ˆÇèûâÜ—fKzè’ ôcÆ ²Å‚…ÀЪu¼YŠ„hy«ù…@!ÝìøÂbý(`•1¤¢ å蜫¨²»QÅÑß"‘Ò¹>Špš§ïꨦd¶Î7K-Dþáyì[«ÒVÂ+ûÞJŽ˜Ê^»-s¶oÕç:ÂáCyÂÞû•Y@`3G ÓÃOÜÂ5aQÏ­Ò!‚×å¶{«pŽcYA_GæÍ-jÞÜ÷:à^+Dç3HM&Sõ_7Ð… ú€Vžä—w,þ*éX£ãkºmû²Ý@h·"¶Yy”vêÁ ä<p*ŸÕIA CQlzfÛ„§°sÎì½Ï›ÍÖù”––±Ÿã;ˆ§J›miÛoÖ‰€ÛÖFÁ]ß@†…#-üÍë›­„J÷‘n,ª{²J†­o=(9DÃG¯)y0a“«¦žÁÇþ¼ÓwÌW9¸Bþ–•;äKJyw§/ •xÊ#éèð‡»É<é̓|ÿ3A†Ôy ›a/ „KhC$œ³m‚5$Ëû„àÍÉm¬–tÍzú Þ& }<B;ÒŒu¤¹NP€‡:šÁç3!î'GÄ6¤#Vè²dPš†ˆP0vÝ;5ÌÆ$-¬ˆŸ%OméÐdÜ2{™Ì¥sôŒÀIJ!Â
-¿RÖ¾ )èe®È£ÙÃ)òܪ]h(È+º4!Å[¥52\%úX*HCè¤Pß—úI½léq¶z½*Ôå4ˆ¡6Î<:ém\oõ¢ºk+7jŠ[yº
-6lmAø
-´‘eìG)3–ÔtºyRѨ '|·CFŽ”)t>Ç„ ëØ,ëL;d´1³
->f’ù‹ÄK¼9áÀIØ÷òØÓ±©òpRúÒt“†DA6IY²åŽ€Às‚Â=7Ȳ81(jÈzPB¾¥ï#óÖL)”t¿9!ˆ¾¦Éâð“†ùÂy+‰Ó;Ø'â2g,© ­0›Y]’Ì5.ÁŠ“¯JT|? gŒÕ¦UæV%.ňô¯œÄ°¿þf9Æ"íÚŸY8þ@¾¼Å2Ü‹ò|»ÊŠ"ózŒ“ÞöV‚[RÛm¯Óøgº–¶•¸’8'’ ájë¸BÊ™ÿ©"Åß[½‚n"k š•@ºnÅ=ɼĪ1‘ßÞ\yþY[qcKÚäû¶ÏÉX…Íxæ…É_(†p;»Jf”åc¾Qä|·ò¡BîÙux¼\™”­/ÌÅዹ§Ãa<œò¿² ˜ƒ(HÝ[ŒÈ<Šg˜èËÎY¦îÆã±òï·r3ÍŠq¾¾Ú„ÇMÇ<W¯ fÉ,ä)–°j£$ƒSÎa½î™Li©<Lˆz윘 “h(ïKv =
-ýê~¤ ƒE/})œ§ï9Ò('[ð8<^¸g”É%øÑ,;¡ˆ`¦9ù\¤Q-Ú­=ñcdü' ÑÄíÍ#0š9«·÷¡
-7—‚¥CòÍ/ ò…ú¿4ËAbBÈ…š§-¡)§$š>p%õƒò(R?%Ÿô•@:’ÇT‡EÕ*ý2¬&¤@rZ™Ü`ztrxêɈyÝémúÑ‚ýâÉ­/ô^ø ;ßÖaèI‰ä¡ý8ù>¢‹ A’êS¹œwíÄ3ÑÔÞý€|Vø¤ Ü$R<yßÅ!²d¸æ­eB°íÂ@Œ“]?£?á!y5r‚ȱ¿§¼D`C$ä9Åo„Œüp•TÛ„Ô<‡˜íyOæ0—“Qô\
-³‚Gè(1j«¶sËúù:1s$ÔÄNÇyñ—äú¢ó$ÉEªL]º€^™a×Û#_!’Z~J9«˜Kãl³Ûo  %”µå$óy‡|ú®W#¾€HV#G””9kÞ‚ñˆÔÝv¤¤CÑô
-ùú7ÈËsç8MhkO$¢óÖ㲇§oÃ÷ÆÌŠåeÊG| `óø
-:ŽsAmÛÒ)ƒ@Щhíê>aöOªô(¨«´v”šN7ÑfùrV(‹}á»ýkß'{CÎIË·³tûÞ;£ñÐ;FA9gÈÃx‹}[±5\Í:¶É ;‡‰Å—hµ{ 3\äj÷›d9•»¨aL!`:/·#gÊ|-¢j 3ô “´¶Þ”Œ¸x̵W@Q•EaŽúŨâ:Y>»éseC¦q1ßBÛ(¦rP ØzØ›™ïNJ¤Dƒú÷„Þ“J;×–«Šâ!
- ÞGd†8“CÚ8ï e3Ø=Îác&ÅÁpÕKt2Åã=ÐþÁyIW*:õm ÓñæÄÆ „aµ.#çB‡‹ÞÿöQœ"‚¢ ã¼\Ô¿ÔÀêÖAÔ.àDZìƒXaZŽ«~N™ÞÐîÇÜà6¡r¾ŸiŠ«ž\…™Aþ¥3£ûL é‹u®«Gmðï¿éÚr5‡<€qA‘·†ø\„€4ä°£¯ÐĄ̂޳¢žÌ&û”aÀ°R,M’eŒ›:îž/lÊc¶œY³ÆÐó#ª|Ù—_Wéà{H}„’ÍO‚ýð‹8QââŽsJâ  *ë© ‡½½ë&Y¡wE«º#êm~<I´áÀ¡È*Î8ψ”rð¨Ç< 92Cl‹¿>$_B£JE‡Ði-*‘”×┡ìÉ¢×ÎÖ‹˜Ç³{éÈ–«x_eœúÕ€á—|z’*žf~ q<oB;jŠd ‰qG,…ø
-³¸µc ¸C†l÷ änƒ^ÎAµï†~’[|°t‚f“e—AtÕÆPT~å[좯¥Š«…Èc
-mÚ…-àMx ;gËX`'öuô;ä é»|<ƒøÉ”n¢µ [(Ã3· —ÈÒ zõzžOÑÒæRÞA` œ Ÿ¼N•7ìaV/@T†aþ¡2?‡á²þràÕÎWsÐH=LuNy ²Ý˜1Â4yܶÁƘW°1üD’uË1á ,³ÜÞ õ)IÛf\E%ôÁ¬Ò
-—‰¹ß°ä1íhš±eˆW>Ç`%âçf¼a*Þ/¿‰a“±PM߃8smMÂó1l7–¡à ÒDû„ÔSà/6ôÛÇ ‚¨jÕlSÓ¤/íÐÙa‰i=Œ°´6þ%P7Ÿ!! /+3Ç~°kû£-äò½|s@vÒãøà}:Iii±ýD×y}½$îΡÖ*8È›eƉxt Dž«‡nNÂËøÛZ½ÝM‘7;l~‚‰À–2l|ä8épù1ë)pqm^ ±
-Osþ’‚ªÅÍUHI2*é‚÷J=»e£ ˆw2 ~øU ±¬§úæôaFZYßÓV›0’Ü€Ctz±Œc_²”_…â¤É`ãä$¦ˆ‰}èv ŠŠm¡<ùLÅלTóy1ž¢Ä!ÒT‰5†³! Xé.ÊÎPx^ˆ†‡ÎÇ £F2W«„z0d˜è°I`óE°sr'@XƒŸÐLœR|ï*b#Ê7>”wÃÄ4~l~B€ÅŒt@¼å¹?oóRa@¬%MG6{€”9³T(uæ›5CŸ{ë—­2 ‚Ýú8[_¶Aš1Ã7PǼÎÍ‹«1ô7ÒÅ(1PI$Y³^ß>~ZMd7ù&î:y
-—ÝÎé’>FÛpLÅõ1“_Uùvœ³ßo¿*3³Á[‡?ÃØo˜;z}Ô",‘<dÒë9EÑŽw³m€0D2:u²[Fîø³QýœÇÒauhGËÇÐBì½!º0þÛ9’Ç(ÐÊ–<7á)!©]‹›±#¨XBàÆ4ÚR•(0ó
-A‰m‹#šLŸÈÆ­ª¶™ðªâÂ+ Q°2¥”À³@JaÔJÔeb߀4˜µÀoÍúb$
-l¯$Àbƒ™iè­ï!™„ÑX‰Œ®â݆*v)Azg©hVÌ…Ò^JØbË)?ŸL²„
-‹òe¯>èµ~7K?ðTùó;E>£äƒXÿ£ œv›©º!q­læÖ„‘C’Ôœû—ò2IŽã¢è |Ÿ€yXËKÞB[ùþ[¿L”ÕÕ(GÛ MfaHüüÃÜ%(5"s¾:­Dá¬Ç‚\^î–ÁV#­CM(œ¢@ÍŠ˜Q@Ƨ«Ñe™E:
-ºw~€´DÚø””W  À‹ðZ!¹¹ej FÊÖNeÙR¢d}$á#³’jûZ'‰¸’Fk$´š‹3¡­¬‰•ª³2†mEM˜œó ÂhIÚPűNVšó
-š˜ÂaÙv§ñ(âÙ%¶“|ŽR-nm>¬ÃÆܨ*ô㥔2Exo”ÙûÇL— á Ö¿
-ÿK-Û’$)R ‰¡õe.*~˜îÐK¶:&ø©Âåì5J’<¤Ý7œŠpxŠA^ÛÖÑÞc* îÈDÚdl«ûyñT©WXûNœ Ô€Ëávˆ\²þ˶L˜Ê¦à©ww:Š¡"q.Ÿ­öcðPØäÄžñ’d;CoþR“£F
-:›*JÀé!Ì} ªM}¤Æ›YE>ç6ã/2㠠钦ߛÃ%8ed³mÕØ/„­ßIåEcþD h†d´1… S§ÖQ¬MI±ÑKFgçâ* þ÷–·x"ºHïÓ§oŪ
-ø×ëê ¡ÐÅWFºP@G’GOE40 H?; +di¿U\ï€î]óË<@G< ·Sm–×€Tÿ<ñÈI8ë)ÂýÈö¡2dPœýn,
-Œ!#`Ã~ '.ô! ®Í‡’ ýÄñ§ô&d
-X Ò †¾è"dA¥Ó¹cÈKÑ÷±ÉKœø6qö·mdÂ.5õ±ˆi•ÀFÙs”TÓ…¨ð©¢ö•b,Öæó¢ÃvB…‡ø×Zð¾ÝGEzOô›‡mLšìX4“DµË›@ç8¶ª˜ÝcI1Þm OËð¬¢Ù[¸6à˜Œ‰BNÁÒÖÁÌP·°K–qéSØ\%&F枸Bb’dÑØ|+øU€ë©¾N«1ªaynJÄߨp¾ŸO|n±ÌŒRía•b7æ}ß ž)Ð5ÜœŽ±1Â[>JèIX´Æj‡’Ÿ lÄÉ&F¨—é_„n Û¤Mñ4]ÏÞVI^ß$À§óÚN<.^ß³*w!˜¢‘<Dï×3äž•$xõVWIGa#.}ŒÝ>Öƒ@Á_’œJð]0;ü‡ñ\í_$Ì}cÚ¶áy¥2¦æ¤ewcýÁÈ¡^¸”‰d²ù~¦Éý&N‰×½®¨ ‡ÃGOL†)¢ZËÛÇ¢Q>3]d7…òέ­3L´@Ž¾¤|°;¶•Ò“ÎKo‹Al“¥ÌâÇõÜC•ïæE¾¿»%¶”ÏF…"ræTO5Ô^Ä_ÉØÿæ%-ÐQö>²Lòà¢5Ú,4Ú…Scñ~¨°î#uXFy‹™oøp)dYž²¶¶ïtÓœ"/-»#»ß›ä©œÄ"z(‘$Ë’ñ^®£L.~löe™¨
-ÁûËäÒ6úZ÷hîƒûñ8»uEQ¸ìˤeIhÀIÏoTí;ò#Ûé›Á#Xí,Ö´uˆnܹ*¤u¹ÒÑÒ±ŠJ£ÇÊÞê¿ý…ÙeV¼6,ÃóDSóäÒƒ"ç\6äT €ìŸ'yM_ú?ÙÜ0ÚüE/ÛýúäLvô÷µnzd
-‘S‡Ë›º_Š¾Eo–D„·­è ¬]|\tØîý~,M\Qˆ
-V¨>*:ج÷fÞŠ~}Òq=Lüó¯?À¸ W’oên’°Þ!Ä‚ÙŠz›CMZF
-ºaœû*IÄ D
-v÷‡ÑbX
->ëÈðQEð
-ìPçÙ™¬
-AæÎÛ&ɘ¨Õ+F‡Tš$Ú¨¯(#ªE‰ýÀô_ Á‘ߥD݃ª‡L»—pkúÇôŠ)¡‘Ëpº—d™V;L¾g²…ŸGÓ±XÑþµ?p
-ÉECY¸߉WÄÌ
- e\Á†Û"}‚Yµ®<ÐñRÛvæB2­ÁûFzW¦¶ˆºýB<1kóJÁfé>Ù”@ŒŒt4ã‘!Pw®ˆ•ÄSÅ}§Ñ”õÒEø-Õîtg«›¼Ÿ8/³,ÃÏÂVûRwî.NBOýÄï,M"Tp`¢Z~(ùÈ@ùÁ)?UÅx@á€Jb§œ~ç `Ç9Ÿç4?c¥æ¡È&|L¬Vÿ‡ñ2I’´†¡ð ¸'¨ð<¬‹eß‚VÕ÷ßò=KêèÊôÀÈJ¥-kxâÐÏ‘eËÌ5óìk·ZYò%7A¿ñ…™cïÐØ'J¥=¦H2uÕßö»òªá|Úðˆ2²61`ÛP:ïé‚øíéâ0§U9úE1
-@’Ir]T%ÈÙ¿Mw¿,†Fj)àž ð1™€ŽõŒa`M¶§3Òa¤‰FïÆ ‚ü%7Ö¶òr¸¯}–¹¨Iï\¼~HA¶ºÈ‡Í3¨R>0-%ÍQ?²c©°[Íf¹0Ôê•à¿„8èˆ+šœRç ­EÆ´·zÊð0Þd&ùX£pÙ¯5€ÈvKØÕÃ4 ÚAÌ `­¹°«¤e`ŠD·ZTG>ˆÖ8¢ p9Œˆˆ€ñ’ÈÙ!ph]³=c
-ä·±&ÚQMÓ±ù¥ 3Ö'ºÌÑ?F@ùtnC¬T8&å„ÚAeÌe1Ì*좇“?ئC¶Ãà<ŸWÊMñͶᣖL0£Ó¦‡ ü2†‚±‘ÞIéBŽÕb`8#ÉŸLê×|F¸:Rçà£ÈºäéB‹jó
-˜/NÍ×%ò]Oai¡­ø‚ï8žÃá^½çXlzÄ œÉF<Ø‚¤D§6Ùp¸a)˜2$‘GpŠ}Nù
-D—Ú´ÛÖhsŒº-X„í~€Mb·Ä›Ø“ b iÁ+1ç3g²#@Dø)¤%N“± &mËxÔêļØ-ä/ÈÛ ?¡Yˆ½Ú•Ã
-® <ÞŒ¢ŒÆç•X^‚¾ž‚ä‚6ži>X‚|FHú '„KÈÑ1µˆŸƒè:?AK­šcB(CV‘«Äö°s~ “†wÕN•ü`h&TRÜpLÞŠJó
-Jߢ­Ó>£G%ë™+öEšáÓ¿ÆS{Ü$øWñ%Ó%‘íWuýŠ‰C»
-`öEj,Ÿ¿ûì*_y!ûøß’~èírÙ^õs,„²˜Òy[ñ/ BMRØÀbÊá1¶~ýHk†,ðõºgYet³bH‘€|ÚØS³ïAL-
-~NÈR!ØîëÔ¹Œº×Ž9:Ôº¡D¸Ü@›žªXÁ7¡éÒ¥!ÑY,+µ…ýåê&X¼ú ]Œc.6p4Ê9‡¦ty)í^‰‘àgÈ?#ßýßM(mÔýp¯™Ø<ïap»‰!aJ¸9[Ëñ£8ò•<<§àI˜:Ôaj™­³{#æOpÒ­e8J#ÉÞA‚3VxKpu&;ÏF< »J¥me$’
-šÎìСu$3„s˜Âд3ãpÞO\¯ÑaK<¨‘>z€?L  Î5kF…˜É—ôøÇ’áå þùÝò@9¬æWMY±rq{£"QÀñûœàuáòÂÅ’ô-:Ì”U”ÌrŸø*§HT¤
- V®,ú”ÈÉçyOžÄŒMrF,²~©Ú&:#-x.ß, YY3j:Îv¾]\é0N…ÎÊ=‚H¨
-=ù4Æ…uX.|õj([Þ¬.KP›¢ =D:>‰cs<×N@mîUACóç¦6ÝÆj‹è7ì#yù6žšd‘˹Òë+;üøŒÊ‚”’Ÿ'ˆe%!ÄÄ./h%ßCé]`@û b ’fp &a*p”-!â'ŠÁíÍq›ÿ¯,Wbû`ÄÞK^ ls· lk“OdgÊ9GL€£ÚºÚ"À%ÔëÒO€ÄO`>B¨!xËÜ«çv{˜
-ÝÁš$GŠ†*mê=ª`O¿
-þ`'Ð'gEo°{é !ò!H±v°þ„0o#õœá/ƒ@ÝÉF´fóCs€^y™QúAÒLI3rêÆ›Ð1Ú‚]ËQ?l Þ%Iö•gÕÙ
- „KúÅâ!(Í*5ûÛŠSÝÚxBB"hQL/u&UU±Ð—ç"Tž*iƒ:í*Òb”‡
-I;;ˆŸ¡«x³èËqqÄ}¹µ.¾Nx³iÑÓ姴^[Q)ï ²e’Ä&v?9äOp¨.lÞn . Ää£äbºÜÔ1w# Ï¿À:" –)ùFÎQrlü²
-û|
-¼¤¼c#1´è ¾{'ß]Q_fUÑäÌr`’µŸþr…6Í9®Bã2 èÏᯂ`a#$¯ÔÐÕæ“Šø7PÅüÆÕBm“÷ ðŸUñðÔä ñRd%²ö² "ÄoJ0+4-:êz3&Yæ`Ïï¾£XÇš›žœà‡}€èËAºÑ€Lc®å*Ùòˆ it?
-뉃•â‡øé.4Ä~x ÀJÒ×>øQâ2µ¡Hî#šgÑ"haëœ.xá `.ÔiM?
-z\Êp,g;gdu÷öÞà2±Àä‚Ö=yÑÜ.Ýb'\!p~©4Sü ‘
-0ÁÓHÌâå2¨¶
-/ù°hµuýœûlÑ-G7ðêV#ÒÈ""ô–[ü–$­hËS˦›uÏÊ<±+CÏtó”2Ë  M9ɆJ[…,ÞìÐ JÎAÊtOÿŠT"™Ä¶!%•(ö,•žh ”TQpâ™à$.ZÚp‚)ô°½ÇŽ ñz~NÑɳfðïé1ì"^Xˆ hAw
-γ ‘ï*ÍÍá78e@3!¿,.8d™kž@ ¢&Lï˜Y­¢]²3!ñÓ"–Yˆ¥ˆ×–$Ò±ïp_Æ…f Œ‡ä,…½U¼`óÏAÍãS‘÷õÙ0=ïÖKw;뚈÷é¥è'ì‚©£Ñ`øçý>E¸Y¾ ‹çu‡Þ*kà¨tVijà~ˆ¹vïRÊrÈšµ“t”vL/8kU@
-\ê²ò‰j0Ø @SOÅš*ïÞv ¿2Èj] nÓ‡øcÿ*2ª•ÈÊâö*™X£$[ÔDÂ6÷{ÑËRiœŽ=xQ³òvÇÍm¡3Éô„Eã)’Á‘3‹<¬?T…Ÿd© —ΤÓBÖŽŸŽ¼Ð:d;& X÷YÑίˆƒóRº¨]ºT•Bv4
-
-Š¯£Ò³ZœEê*y%ç ©:¨BK+üŽp Gk'“™•°û¸G1ô´îQO:–½5®
-¾ˆ¦Ôá1-teX‘ÜÀ¼O·µ¹¹Ž¤S‚õŸ¨lÝGiç“Ïô v›‡Ü+Ë+˜R¾×üü¦¦ÉH`2Ö:Múb:Ó§ï)‹F£Ð"ÌÀC%¬Ÿ.Èä—wg!‰[ÃJð›(3?D1ïê—º-üQ¯ò”Ê,ßò¹a_aŸŸD*͹¡"%Õÿ·,dr`L™é6Nü&Êyl-¼1z t›QLÔίŸƒÑ0'ö+U«
-®ËW&³JóZò´±ë‰ßûN_2Y¿ô+#Í(¾Z HƒLŸäº.XtÖ†ò¯ûüo„:Ä>Ñ*ù¢zñ|¼e‘8²Ÿg± Õ”~·€ýþ‚AEµ³ðYˆ
-X àØÞ.
- Èq4V4
-†ö÷E/wºãUF²%5¥´O ñ¯tq‘ùLÂŒyÁ–­âqˆ›ßÀ•¹Ë›"áÌ5†ý”×ìmÉC×®wˆpýK¸6®]gh“›ËÆðëð[5¸V4nV,‰1_ƒ…óå0UÐô6—;ÑSÀ 8#–§—»èÆ…G €«"Nkß(O݇6òņôr %ÜßJ€­RNÍå„æ’Li}õsð{”$äŠMVí울朔‰ŽôIÑf¹F®†Çå é'ápwæI—sêYŒÇ"å㮂¢
-Ñs„/RË=͸dÏ÷Z<(s܇p“Øû$©ó?Œ—Iv9 DOà;Ô ô8k÷Ò·ðVºÿ¶€¤^W&ªU›n[†˜$ˆA+N×ÃËs:jV]"ë¹ 6#@ÒÙN
-G´µ¼¯ŠùºF¸êô‡³qæ TxÙVÞW÷Rô¹ve¨Ä z¾5ùcªøSÅ8+Aè0¦üÛž&¾º5ƒáÒóÆ*äÎPòL§ÅZméU=.†ë¥
-A¬X DÀF@f™*:Ú¬$C~‰žOnèXGÊZ‰ú!IæÛãfÀ"Õ@…v:2€Áœøsúÿi aãiê
-Q&º Y³UÃS­7ȬØ|ctJ(ðõ$„*9w•p=ð誓öm' [B^ @ú¡@rQÌûSä]¶?*Ò\ŸªÐ¯`V¹œSB(eç4­!KÂ/îWá‘2(fŽïø£ÁÜ,‰O°Ñ¬ƒsÞ☠¥]8Y,VghÈ´,Õ Šðñ¬"Êlö˜wñ¥Ì>§öûAEµôç(ºòåñ\ WþdF¿¬¤Ëà¢øÈ­]‘ó˜AŽ5bŽ¹ˆþNÏÝåÅÓÊúÑ)LÍ §ÓG}p‹V§{NÂW’+0Qs~ÛÈÿf +ö9…¹wFëæݨ·!Ü‹¾ÄRÎiÚÞE¢%ÙcˆN |£èîÄ"œxë@¢ÑTÒE` ç¼y©ëÂI&¬&b.ÙÍ(é9æâÅ)‚h+ëÌ@â·~²B÷aP’ùäL{¶,^“¼“z*YŸ+²ø•ÿM÷œðD¸q¡ÓÓ7 à‹A¨¥ðWsù¯°q ÄÄŸWl’(®˜U¶shDƒ·;ñ1ŸdUð#„± wG;¼Ž†zAƒº!ãVsŸyàGbNhzž{ ÔJ– O*‰tnŸz.ùüy?ÿh‰Ã€ ZV¼QT[aVAÝÜ’S„|F’ ì$æëÒüˆÏÚûEÌ”ÿ@`xÎl5÷¯½S[â-‰(uJm>Ý">׉Åš?¬¤ ÀhHl›˜‡>E42CDI•…–L ›Þ[¸™X0Ÿ§"6‚—&1æ&f6K^0†u >‡-‚”÷VPit)Êe*éÓ@çgé^ÉúÒèâ4»á|qŽ…-OÃQ o” º=#Þp„àì=au5™wÓÚÕÒ¶Á›K»ˆë]ì â–ð‹ã.7êž’Š2öâV°ž 'a#.®L÷Œâ˜Y•”ìËvÂ*Á—=·ŠªÉ9ƒØ3‚(‚¬g[R ]™ DX*Úo®¡5‘=Z)P ›O ì-„ýâĪ1Y¾”º[rçï_^ÑçØst˜­†ŠæÛ5ÎâÝ?öVÑ… ü­º‰X¢‚XHƳŽf‰ÎÅ¡~½(2;1M.AóHBMêØÛ>ðUâh%Xrö $ìÄn@HQv~a(@0#NÊicˆÐÀ×ëø‰J¸®IÌJ¤høV।æÐþ0ªS²>5
-a1Xé`ˆ¬× 7—‚½£ãŒXC„HÐ(iBÃIì
-Ð/¢dXkE#LDµí»ŠXi âpöFy"”Ü5øUD "ÌŠrƒâ8ì{¬û.1H(m «[B
-+§û2U4Žíè‹“Ùwv¶òŠUÃ7PEÆÓÚ#‘7Âp-ìƒ:5Xf¤Ú«#»‘(‰»ÿ|‹Ë â
-2WwY$¬”V³9%«¿Zë N–Øîç0jvŽu‚WΕu×.ûˆ 8äOE@ráˆp²Oþ“¼F 2r ¿¸îBÛç·‹£×M Ù«0Q‘chóÌÀ¿¢î"mß A#xêØ 0àœ‰ÉÔ1Á
-DG®c‡‡3¼÷(M”ÜÆŠñïQ
-׆Wt›z›Ä<%ÌÂæÔùvÑe?ßYÔµÏa²H› ¬„'
-D+ôž}Nx!èTEtDÒ°¿!a ¨úàújÞ «º´Åª.n‘CžP'úxGÿs‘á·¯(•:hdס"ø 45Y^¡ ™››A¤§HÄ4|0 w±¹Ò”9ï>?lòN‚¡ ªã°ðj&’ÿFe`G•š•K6Ïqøö†³¬îÛ°`Ï<¤Õ!Á^ílIXç”ð>Œšk (BÎÀߨ¼M¥'Šƒ¹2(ÈÑ:ú²º«´QŸ`~¬?ª=hÆPÇ®-à %ü;Ó—{¸EwÎðÇ÷ýÛZ"ƒ’¿mSQ²ÿõçÔ^¨jv{óç°™ù¬„Íoþ·éä0‹£6mI,B;Ôo–U»Ù©McLã±3íê[­p¿ÔåªuœÃàÒU°ÃYd88Ȥ¯pz˜’ªòà~©¬ÖaÝÁ™ôP
-ùhít&ͽ˜ô]ò¯-6¸VPœ¥¡) ? yå¾.=p?œDOQòÌDÏ­’oŒmºÒ w‡Äù¤•~Å&i~v³kónX+˜%„QH,Ha´óôÇdËãÝ®
-Dd œ©ý¢éY¼´´X4 à©òp}Ϭх™²©RM„yHh⊦ý8†øBqyb'"š Ä[¥ ¸£¬Ék‡Ǹ¨å&jàöµ:Û3L4Áƒ$§›‰ÛÚ¨Š[DH³æ„°„<ˆ®
-d[$¡ÚxÒÊifÔw´Ï—ûá”*ŸlÌÈùò³’©$àhéE©˜ |çü‘*.V|EUkb;E
-\rat Ô†ÿyx–ÜѬ…ßëëÙØ<N$#Ÿë"ˆ>#¬¹g×%áTÝÿÈquÍÁn2 gJèM›gÙÓøm5šM~ŠšÖ
-9>k‰ù׌ñOE*?'àÄò>D@—×âÀ?̬c
-4S°LS9 F­WâsúÀ7:ºâ‡´W·ˆ‰:¦—s°pN*Þ¦!{õ†d~
-æpZ«\ &9ªv€ Æ)ðÜú9¨!ñVÈdz -ä-­éÇý¼”
-Õ¯Â4™Ö9~­ï6çÔHM1\Æ9‰®&”:/ ‹-g]רA"L4ƒ,…³wap‚Ǫä¦ë>LÙªZ–_Log0ÉË£ðhŠðd³ŒÚvõ®ìXJ2R üÆER·üR϶kuM‹«%¬1Ì–­+«()ƒ-"pf‚‚ÌVØÊ‚ŠZç€?m­) Ï£Ù’ˆDy`ç#z\¥°r4ó–ï1 m_Åo69ìÔ×!áUlUQ̳6-¦ÛÛÅ‘‡[d
-ñ74²xd쨈~6ŸÔÈÆ h]ÄkR£F+•Æ]7è¿c£ÆŠŠòÙ*ðÇÀ˜a˜Ù)hÓ€0×mlD‚cð¯8^66†±/]Ûïª>¹ÑÒ\àèg¦ ÛbžûæÅ(<¥ÞhüYíàÆÀtÅç
-žŸöÂuqcxñQ&w÷¿÷ ƒ=µ
-®PïõçtÿæFá•ÀTÉÌòbr£§H§öËÝÎo¦©T)8àAÍÍÄFv;F³h*µú@,nðN‹}yü;5²$QÕ ‚ Q`R£%¹¨ñÔh‰®Äer£’»•E<¼hŒÑ"¾nÂ?©ñ.ä“i<êÕá—úUÓTî”æDz­™
-,ŽWqhó…sc7$óéô¸æ›¯e"°q‰ z¤ŸŒCÆ1²ÌÌȃM,ÿFïr=Fåzø¥¹êG…¤¹.°ì?Ý q}ì’£;ÍZ¿–šÅÚ•{Æ€€ %“µÑ”\ÄèŒ~K$H9¡árL µ‘ð] ™’Â*mÔF˜Eø4±ÙⵑPr!7п“t$aŸtš"yÆùBí*ör þ¼|ðBmSs¢¶DÏvÌÝl±6’ ’`4š@Åbm$ZS(—\\¯6kWÁXÓà¬Ô,ÖFÂô
-
-ã.Û©ús¾¿`»jé¤Ûc6»¥ga`= C²}¾ÇÍÈVÔ¢J5lÁ;m×ÄÌ'žð:á/6n#ÂIiHÍão¸"…(Ó»OÜ6%'n¢·MÑQ„ܘÑ&Ú€ÿ²…Ûzy‚Z½Lôkï9pÛ(æ·Õ|Ä㊎ó-L6’~ã¶Ê fp"ÜV£yNy14c´+&n#á7ÀÆHP}·q›±O*û`¦jó6a3 ¬»¯Þx[ª“%B?(6o¢¥ ÿTtð¶)zçmIð4Àƒ{²x[f)ì ÜZÛ ÷ÎÛ£õþ§¼\’"Ùa(ºV@ø+Ûã·¦°ÿé;WvP©
-ª££"mësï¬ÚfûŠ€›Ñ¤A…ÖÍ-"eÍxPfpÄÄMPAš‡q«gßáà%òÀ}gDÜRAf6˜ºOLÜRSèZ­¼äˆ¸ a±œÎÓs¬ˆ¸ƒ¼7QÉrÚ•œGà&†afº2>ÕjÜzª,›+PÀ?Ttwó GPßœ¡é•.ªtrïb[!ŠY‡ñ=ææQB[‰Þ‚F2g4S™×\%’£ °â!T.ã„„|øQu B¬–ùä3¤ZäNÎ|É[“\(éÃCô(l‘‰Üµ$"^•D¯Â=èF*`<•Õ+ é¿ XA®$¶²§gœv¿Ò(uE¨‡wï§Yȼ®4&ÄK
-L?~Æ£iS¾ê)ÅhRz’BéÞŘmŽ)ëû^\nßA@ŠëP«í„­+yªcÛìc‹²è[ÑU9LýgŠ±<(ƒ—#ݤL/É{ºftá‘´«M&‡ ¿ðo¼ «£w–¥‘/1Å, °P¿‚Øp› ƒ"-:ŒåPó‚´Ã8¼;PµA;5%ñ§=ü$ú€µ­©Ñ ˆ$‹]M…7m/*™Ö§ò1Lœ‘ak9ϺMø¦j€²JFȨ Ä“÷³ÈºÒ¸Z=/0ĺUµ?ÉQ…‘>
-çdDñh"Fòw3ˆîót“*"RbË2OÈÌž-¶ööBE]§Lx)o…’ËÕ?'ãËchiœÀœh.<Á@Y‹VÔÏ6ùpÇÏx. 펓Žp¾èAnªM ÜsÁ}/,²*q#!Z9Ì™ë:*ÅLŒ,ž#Þ›çt îƒÅHû=özÇQ*Q~â oŸ{±Á“?RKÍK£†.\´o¥D¤ ­ÅÝS=f`òUp.'‰ejÃ1Jm#ÚÜ‚b¨Ä
-¼È…wH’i&­ÍªÄÊ™Žì[]Ä𢊒Nz¶{!£ G±¢-?K¾?3â—æ‘s̱uãÊ›‘y¹blqƒvDK'a,³ÏKøøë.ˆGŽNÓ*yŽì-(Aàsø¥rÇ$
-Û¹.ó ¢ q³5‰F1D« NÁÔð£FMHF#Ytù–} ÿOŠV³CËܘtØe¿ýô¿
-H‰Œ—K’9DOPw¨ LA|®Õ˺…Ìf¥¹ÿvH†ÔUiª^H)OFp¸;lª…¼ÿÇd>rF‹¡]µÏ÷·ð|è a¢>¾òÇ”>³ÏÞlÎ÷_€æ£‰j‹é2Û¸}¼ý÷MÞÿÊ? i|™’sì‡jŠ¥‡™¹¾ÿP<DÃ9edÄ ¦=Gãtå‰ó@tôÁ ±õgôÜnsd¼©Í÷ŸëI>¬I ›\yƒ$¸kI͹Ήl}JÌ&ý¼qsé™mdËXÁ…²» K+Hrþóé3=߼ݵh:¨_‹«ÜÁE{ ÖÕòôkøßém¸h“P•9»u3^S<÷5£`S_Ç‚„ Õ¤Û祫Ñm¨Û”\õñ‡ ± †üÝ7H›wN¯Û:GS›Ñ?›TÚŒ6«¼€ð”Ná;U´ó¨gÐŒz·–Óû~e룻ÑzÓÓ¬žÖ§Nב áâ1’¢ÏC
-9tŠÕû9k:,t±K‹XÙ¼¥¯S†kŒ!”Aõ–€åñ(ßåã“4”štÉ›9Û”P3 ÒôáÔh‡òn¼Éf—§ø#eHDƒR–Ò`ï‚ÀäTh®~FÚ¨°!<íâ|Ÿc&—h¿Ÿ$ÍÍçì›Î]][ãµã®ÉÈðÞúf<ß
-Sr|õL‹ iM —o4ðš(R€Ñ=´DOŽI&›`#<nKzNÝ‘’¶eoH?pµž”›5 #i—Ë äè«aÅ>ÚÀÌ^œÃÈ›
-–=ÍO`Â0t„wÅŽ±,¹¤œ~*Œ½PÀAª™ÛËÆ?Ä Ëÿò”Ü„–”SØ:¦l΂F59ôƒò4›i¼6„² åo\ãM«‰SÐœo~¼ÝHAPª2w¶xs‡!Å8Ýá ëëY¼lZ 8úz$¤Sx .#‡G4¡DG¬SΘö¼ÞæôoKýõß­TZDíÓ)sFç•&@ ¦
-+]ö -j† æ:f1z^ˆNÉÁŒ÷ioHñ°¾noÅK”"+\ÌHõTajE‹šjí·ç(UDN†ýRHÌåü2„÷°Yc„¼ž¦–@1º?WŸA7@‡/”3ÅìÛ § `=Cí½ !îv‰Ûw‚Ó XÍ÷í5Üàï^’uÕñÓÄ&â"„Û]ħ´•.ÐËà›»qßžO¹ ¤Ü{‰¸9§£Y•vÑ…8(?Ã#t­"Ï+­AOé«ý 2ááŸ%JØQ ?ÆÎ_gKÀü¢(p_”½ñ@XŒ<qø{A •TH+ ØÄu'³¶½zõöà#óGœR×£ÈÆL^Û2Ô°Ô™å£|ä¼:ÊÏ.#ºí aÌÓ×ó$²<a™Ð¹‹Ôh3C‹ºÆ¸dü„'!’ªŠÚõî ¼.ÎúóœC㆘——m©ÇâóŒj¥4E*õÖpÜ€r5&Ìj7cá(s¤œ´_unk½VÕÉ›”ÏDîâ0µQÍcˆÇ d™€
-ÐP››îØ–€Sôi·úýµ 7.ðÜɧSžù€·QcƒTÉàÞòŠ+‘ra<Ó×ãðê+?K½h82èýû˱öDhI®$c}ð›¼6èœGýe¤V>2xrj}Ô€UOËGu³&PÒáb1ó…µ[ùYýÿG1_€X…l–w¢[òŠe,t‹Ö
-Tè/@¶Z‚"…ü.Ó¿Pa”æcLYØâÅAÍÄÙð&Ñx ªe…ôi‘ž.GLÂ
-Ø£
-^Ì–s7€ÙIÆ‹ƒ n5D–<ƒ~}§½¿c‡5(–P«+šQ`§ð"‚RÎDŽ0ƒ~ƒ);fÓ V~-†˜j¯Ñ¨Y/Á ›kZ³r† ¶®YÙd% D±¯_N9 ŒJTƒ}¬s”*2ÞîeWÖrÆZµÄ¾ ¨#׿oǨØÛëÞõñ'»ê|Æ|¼À;`Q™ò÷Uk@Q+6ŠJòy¢Ö&öµ‚T²R`\Ñ6Ñ/f‚‹•Ë ÄgV¶ý½ |Zé~®Gw´Do¯ D“ÉðÆ:‡®O+•í-oZõ׆ÿ¸ì$IA¢¸DÇ'§ÚÌR1Þ´ýè³™­n‰0V½®{ÆŒ ‹Ç“äñÝ‚PáŠRÞ2Ž{SI
-\1hK¨VZ/%$Û^>Å4á#¼3˜BDP¨Š¹¢zÀ: Õxé½…À7"òŠˆ7 d¶ÜdÖžØVD¼}!!OˆýhSÏkŸƒ$üPWn©›û²ÂY"tã‡{$¾’ù‹Öð‘Ñ{ rë‡7MvÄ¢’2‰½®-^œ3k%¢Ýy)8ë†]@¥? t†«ž+ÁGÌ'ˆQº"" x_û¿‘CA¶-66b]®$PÀK×ú.̨R§¤»n
-þVtØ7cO½‹šJûŸúH¦¿‘–l—Ï©L$;Ç&qÒ Mp'B[óî‰J$c¶Š^¡Š³œÂ+¼63Ã…¬¾³2ŠL§¼¿E,M0¼È§è˽¿Y¦Eá?ŽÖNý’Æ9ÜOíG!<à…_í­ʼnfë({«µJ©•Sâar—Ò\ªrÌ)½Çx!}‹2JrÈ#™$;‰{ D4P~&Þ Ž5ç.!Ë+>-o`‚‹´þ¾ AŒQe”9//…UiìI x;ä*¯…#~’Ì«<€øZAL¥Ø|EâÑgçŒ3Pˆ\ƒ†0<vÎú¿áM‘…g
-¡yèJ ñGß+2,ဌ®¡(„ÙŠâë5l?ÐØB¢‚ÔsX'¥F^J¼òt“ApZ"YÀaý}ÛõiV}ÞÞðj6ÐXƒÎd!´v4ŽñÅmí]Nb°.OÅPÕ<%8ÈÍó¼Ú
-}R>8óp©éN!‰„¼:÷l!Ć*ð´Ã Y[eÊ w…xsy³/…®“&ˆæÑ…ô}àBòNŽqÿ1¥" Ä˃¦ÓÚœu0iá"Z¡™BE¼HðŸËÀ,‹…0óf*‡¨–ÝàÀÁx¡nÒ¸ƒœ¬Wz™ƒ:µé¯ƒn¬þ¹P_X1ÁSž%ûXáaã¤ñŽQ]ƒ€Öð}î‹Äšx¸Äò«éì6åÊJ‡Õ=ö¢‘6[]¢!$éJTÆ.Usí©I·4ømv—ªÝ˜'U+ˆ¦ˆA·QÆô¾QµBP}¸,õæQ5!]kjÚ«ÜTMJ¨Ì¯pYqe¯ pÑ&(Û¼Dý”îT‰^ñ yÌäB5ãÛwÌF·s ZM™³béð€j€›A;i ªËÒ^)MUü«ãþT'u¼N!sâ0“ÕnȪ ªÝ ï´ó6êr/!? š›cI•·k/î¾ ú’ò³ORy£¨€^“ÜþvçÜé“(Ž&ði.›çÔ
-¹6ª ‘UG}Œâ ÕÄT$Ä9ã™ü¾C5!ü‰(…ºk.V+{Í´*J¦ûXí9Ä|=ñ/cžPíÄ<˜w£:ébâ‘ê25.YqœHâµ.S«êeåéă©ÁO5LJƒN䳕7Â8Ho>T„'rX@v¸ämºAÁ“ÿ@‘éA5!C‡á-×ò€j‰+ÊÊø|¦äA5!Ðs]]¦»P}ëïfj‰‚`2CKÏg x05AüH¾eSëZ²~îMn²ã~?8¨1u¸ ÃîQª%¨pdú ø`šÑ:AW?—å 5FÞªƒÇ_ÑDŠžÂHÑbîÝ~ÃKÇ(ñ×)¥~ºAó#PÂ(œf [ˆ¨¤ItßÓ¡­&þjVJaäCV¼”Ѳx
-,
-«CÄ—Z7ÑÌvRK±.ÃZòÕ×üêL¢L¦¼s)E–Bg¢éˆÛÆtBÖFS‡0Òk\}¬Ã%Ÿ"ØÛ¸ô˜—Br>c¼ñ_n®<¸Þ˜† y“-²Âæ¸J@Ö½Ò€Î)ôPáOÇ×MÆ^ú-ÔumrHÉ^Ix¬‘ø=;öúW®°þuŒ`(bqÑç™(Æ'u½P3Dî Zô2’a'„ÐG©»1ï[ôf;¥î†<Ôù×ÿ¼ [æ»h¯E¨Yæocœº»7ûUÐà ü¢z½Ø>Uͨ`R*©9Zý² Vøa®~YÔÚè:\Z£‘£U…@ª,’Ñií'%L`Â>ú¿¥ž …sld1÷ib‹YÝ&š¶ùQ¤E¥U sÜGµÿ@‡àE%ãMjï tÕƒVÅVšõt6kâR6›@¶ôiAL= Y"#­:A
-Á`¨ƒÆ_SY'
-0§ –ëêÐd(áO"wÓæ*›AÉDëë1€•tÍÔÛ
-ÊôHº=%¡Y“F•VþÍíèº**xÊ;¾ a—„…b>½ì­î ‰´8DšÖ‘Ń˜$~’•x‡™ñ?ÈÄ"øKLŒµ¶Ê×FXFÎ8Sc"9Ú‘²€èŒö|Üw`î€QËoøƒŽ_S ™sa¨¤ Ç3¿–<ÔË1d„u¼JN+÷—̪Ƹ¡Zߢ'ƒÜ†„¯0"",îÀU ¤;ä#z@
-=[EÙóœöДïEq±ZôœµªJøZÉiÝug¥BžÀ¼š3ˆ M"y¢ÿôãÎ…fçjúP´´ gNƒÔÝ‘#~ÝêÞˆlæØví;3˜%ÕP­ÝÖÁ›Ø„Åû|uô$ØgÿéFhV£v9"RŽ{§;ˆz!š@ÊZ'r+CõX6íJYƒ½ ZH‘ ¸ób´.¯µÎ«ðÊP:Æ]ãñ”Ç£§ö-RJšÆàÖãô䇲0.²½òȤµáoi8!ïŒé[Ðßo‚dQ#/ÍC›1ÝAMsAœtžz¹)mL]—›2ƒ²žZ–á")9\Óºg1!-hÜF?ÆMEUUún‚5¡
-ž½–uw¡ƒ>¼FYฉ–Ëz@
-Å{ùþ~íB ×&Ëî¯ÁˆÃÑU, 1tŽ¦Ä@émé\LžÕšfßýºvÑ>6ÁéNµ°M‘k¢Ëý.ŒB±³7ZZÞ–à·¨zm¿.ïß´6æ冥¨™««eYº1+RÙÔoîw̧£DD?ÕQ¶Ð¹"mœyŸWè ™·eÖdÄÒ!äá`ʺ5R¦±”¡Z[1©âÎC%4×>X»
-%Å×­é¬rºË~`¼•ñˆ.ý"®Ðæà õUÜô“ê&¢a1®’·©Ñ°
-yä`ØÑÄ3]ý$åzî]†ERûûc§ªá'$kW
-»‚tùŠ-Ó "t_oÓx<ž¥Ï9V[QeÁ+ôŒ¼™ƒ:Æe Ç‚¨—I<ƒ4Q€M5Wvùß1L-U¹‰š¤Ò)GŒ§è»±àõ䩲a^¨ldŒ;œgdyö±Oã=§Ûî¿PùÏ¢˜(Ȼ̿,)«“‘ÿ’<+ˆhƒ¯Äí8ÒÌL]8 RIDSÈW;ƒ®ú
-­i°¥ VH% :8°WL(ÁH@(™î˜¿ßÄ`è`7yVü\A©éðä4+
-H©›'YxC Ü m¿àŽÐ¥(Ñ(:a‰.>åèÕ‘êÛ*«fð+^ö¼2 …±nt['ª²Ô“N‹yfê?Óý/¹Eºž ÒÖž ³tÁxŠýSq}zƒ¬’ ЄQÃf!)Q¸4ti>ð¼K’å½FªÓÀòÁÖÀÈÃSãŒ7Ú*BÅZ¢†ëfë°’xtPüÍ5©ÜAýC—A€Ð7'þ|ôÐ '®"5ˆxS$ …^Õ50ô¹nÁ#ΨbvlUÄSËø»j-Ö$H¿j·òËÜ¿[î•sǹWUßã•™CÜe:R@¤wçž0¹&£…Ì„"§©*ZMäÓ£º‚m•©r漉«1Šl(ì'Rpz¾üU¦(ë¼0£}œ«6„ÂäÃ+7½×¦D ¥…›³tÞA zF¨)”5xÞoüÛ É/̨ ÄáQˆ ô®•®X5Ñ~5‹®Q/Sö åºB2ÛW3ð¶K"jdÁ&ë1Ê¢Q€L$FÒÝnxQ€Œ¡i6[¥ãCE”÷Óïñ‰ˆOÇ$¡/Œ6jÎNÈ,G-
-eÆx³pÊÀXåX{š!˜]W,aÀ‰ ‡%œkB3$©Üs”½UC¡¨‚l•yÊ<L©‰®œlP±ñKà陦 &•N6²«A^ÍÈ£˜ÆFck^&½æ@¦VEËò‹åí@+]†ÓĶmGƒj•Yæ\×½dm lÙZ¾,ð?mT~Ûô#fBw<¤Ùp1Øv0à|YÐ?”—»’cED¿`þA6†¢ß“
-ƒeµJuw½2³4ixÆŠ_tJáµÐi›2–7Aú Tlñ0¦ˆ'}B/'™Û!éÎAL±Ô äËnÊÈgKÌéÅ9Qþ2cÑÛ1è$J„FøVY§1J±0>ß=/+‹ªÃt1*å$ åËõ¾ ‚¢lùDçÁ±ó
-h)
-%H–ÁÔœØÒdÀpÂcENy«IÛ‰ATh³Ë‚0 ÊM+N•c
-tD?{ŽYÔZ†o@g%1$ /ŸRí¾B:S/xSPX-’ƒ)ÛVóY£I)«¶7´¸¿8'¢fx”Ú£¿8Ê*RBæ/B+HWöÚQ)) Ž£A¡¨BÝè1‘9yb²cʽÇ(gŸà/CÐ1ÿ5†äÉ‘Ñû%úlžAÝf6„ËbòÙ<ƒXjL$8òXI™ƒÝµoº)¥üìÚ#Ö“)5âRÔÎn“gÇ´âò‚’³r»@xº3¶Z¬WIe¥U%[˜x¦ÜÙÍÌ#ë[íÍ~ƒ¬Æ‰6ü~;,Óé-­ÿ*ÞÆNîZôì¢7~!Úë¸<F9 ø,œ¦î$†_ï(¦„õ—?>Âí×??~ùû#Þ~ÿè¢PoÁÚܼ!ya@HÎ-ˆ àÒEK4N%Ä1¡Ee^!ƒÌaý.O—®:m¦“äê! G0U»žË Y|S’
-áÙ¢3ñåôš¶Þ¯ ¹ØVœzÇEdËî2ì\ÚPéjÏÖj¬öÜ!˜,ŸáhƒQ1‘ m-â„Çóm_]ÏEù»>Y¢¤C(+l¶’L%!2çi
-+Ãô-ˆ@³æˆ­Å®þ%Kt5øÁ⾂0k% »–awë8Ä(ü -£[¡ñ>WàÑ>ä%pïÌP:%Ié˜,¬RTŠ)šSžvîť4âS NW)«DÍ =YüäëÆQ-‹w€E# ¬Ì\9:áă©S%Ŀƺ}ÚIXžOH©"=Ž–7¦þñÎuÿvºkûIÊaŽžõ®þÍL6T½, ïÖ™ |ã7ЧT?hnUk—¬Ü÷òc¼mž¶k²®˜,³ƒ—`Ï}tì®L.Ù©Ðã,)¡L)ÃÑ
-NéX›¢Gß®“ð4$³à˜ÙlmLߨÐçtQ4rI3<„›æ^õ6˜MQDºI;n“ò¿ º$|sÛ;˜ 3ï $3Ó¦š°bå t-É ôx§n«¼Ðl•ø'Èc)åU)
-›¢¼ZÍU»~úÜ‚ Hñà‹Æ
-” p ú¸†ñ>hs]¼+fJvñÅÔm@×â]o{³)Ë5o®·]krÝŸ×Í'®™ßJ:DsÑ'qJôY´‡±áÄn‹Ê4똛A c„òÉL4
-†Õ5Hò(>{MRAO’òP–ÄИHý$¹f7ðH™„#Øì–¡:’”°´‹Ç€|âà©Ée³À|LS7ŸOÑüvO | K†œûö@¤¸!’†Ù_Ä#úÇ¢²èW¯K^´çÀ_I»âÏ)»;È·*ùUv6#c¸¦±¢º¾†n©˜8¢Äì£"×2•ÊW]³3&]˳åxnû ³ŠR´Æ>[ó‹:}ƒ¬†¸VûrεgN¯ÙõÞ%ª]Ÿ²³›„SŽ:Q¿ÉŠàëàn¿,hâBÿ+ÏF™oáö×á`X»:’h‹ø áÓØ&ªŒ&û‚¦³UŠ’N…×Êô¹eìè$c£Šº¤›ëΠÇ;oZVk­´e±Yd¬E±®¿¶ØãPŒlŸúÿ_¸rΠ-‘r Œn.÷Ù1Æm&úCvq‹Á0‘™‡†ÁÅl>øX }bMýMLbÞŠü¤P¼çss×[z5±ÞÑðì­Í0hÝA”3üÐ9úÇ:¼7rqTm$èˆ äœ «aÌQª-P•DÄQg }¤À%ÃφZ–jï]–HÜ Éäåæ‘é}ÌBr#?ú²«hè;e,ÂB—Æð›à–œÎˆ÷áˆ:°àX
-ì>9ÎXÝÁ’Z7˜Ç“Ù;0“E&Þ QκE$Å‚¯b­J– Ìñ¬ZÅ$&½A Èø`1ÐÞ
-BÌÉ•ú|1-?™ºß|ÝAYÜZ$ÅÜBƒû€’®YØä’žyÙLpÍ ³éTaxZ¾GoÂÒ“ÿ.-C<é]ü¿73åK¨,U2# ˆ!Ò9µQ;§¢sd•ÈmA8„ƒÅh5ƒÐ€p{`ÐûB˜‘sæ16F9”‡ÔxPH2?,3i­$VŸ,Á6èé>¬‘ôš§AB“ý€¨Ñ‚´B£79’±®ªŒµm¹c¬…eÑdÒÑZ¨Š Qbÿ9½·‰rÑ£ŽßCâG03ô{Ëå¸éª OÐÐELÊ:‡My‡UŠOŠ;'øRVP¥æêx°’3‘Ÿ´ HKéè vÌS‚R¿•œŒ*Èù°½:±“~F”á•¢©p$ø¬ÂèVÚ¯~“úŽ!a9ƒ ÉPQ¶&;†Á"Ê•úQ5âýYlKž0Z˜ÊCeÈ[š#vúñ©t(
-Ç›ŠOì ñÜTÒ’"ÜFCùh9¿Š>Ã!7ú)øüaTh8õײ®¢ h¯øjŽí9P“|Zhl`Ó§…!ÒÂ/ób/‰|ÚÒOáb}†¾`¦E_µ!œR=ÍJ«TÑžÔÔ”†£ ³†rFÈÈ ÒP×ÆvJà[Æ#§žý¦9$@e>õõ;QÊ£”ÿ0^6IzÜ8=î tÿɵ½ô9f%ß;/A೺Š5ãp„Ý–²É"ÈLÀ©²¢l*ÄALoåli[Á§Wð/«ykñ}}·ŠàŸä®ò þ2#Ž]ʃv5˜ÈK^% A+ÈŠGD6¦gÇMÙ\ïÂ'áÉ‚ûYÁI ¤6³«5ýúõJ"
-I›e{ '£ÊŒ§(É0¤Õ¼•c~ñòÏÂLd´´î!'Õb8cs­UùÕI‘ªxeV3ó ‚iˆÐ,HýpÍá6 *à}ÀJвR¡[uåâT­½.’Äâ2Ê¥Ñó›ÄÐ U€N MŒ¼\}¢ª”PMÙÐà ©\ƒ¿ê–?B7ÏĈf|
-_›Ð1ÞAñÖqbêXg±xh¼µÙl΀ÜÃÔÿ eÊoìÒÊ{!¡Ù¿Î`N&%‚¿ d’¢£Ù5iQúõ’ÃÒt¾Õ⇠ʭYrá\¡F«‰í
-³ 뉫,@a_f1 ”¦(8oˆ÷÷UeßÔ™)ª€­Œ³“áM´[¹1V\"¾V®® Ç (’¸áýF.¡qQƒã*
-ÓmŽ.gŸüo¤ª¥v?ªñ*̬±0ùVIV¥u]keÞ&yCÉFp8côò*¤súUÈ5Ì&6|HZµ°1M dž4I}õ½S®IóЛø”ï?¤ç]Ÿ>‹éì qJ…~ Re%¦ÿkåíÊ¡ƒŠÒë_/ ú:´>Ò~õà»ãº”bë äÁ½ˆ~0AM¾¼^Ρ*äB#òñAi*“«ÈúzU‘I-±ÖÈdæ )FŒDœµHê¦é-=(ýêå°øUPR¸iZZJ9‡ÜŒÓ¡&Xî$-‹Ed¬æ¼ è ÂR¯š _o y&9sÛCu€ðÁ$z~•Èc-8‚ê@Ñ‘Šzµ·s¾o'íÄ
-° ¢m\%rã_,F§®DÒ1µnx! ¢2Óuëh¢cH‹¥d$]9Á]²‘Ê‚äEºá{JÌxݦ Ðî%:œØadþõ°2¤P+•¼W7KñØYS>ØÚW‡,²I we°––¹¯•ð –4îÏÐâ¢Í‘70Gû*…¹’ìWaI8b[maʲ¿‚…’;r UK² ¼7mX ;\ãMÅ_•´ËvÖ5ÿö2~(ÚkT‹Hst¥°-£k‹0ùoäÃ0„³.ý&ÞÄ ñÛ+mƒfòXTGMN¾‹(HƦ ×úyÊ67È (*ã›pĵ^ÎÑ&„¹@õoâ‘Y}¸òŽ@¨¾,“žŽñ"8E;ÚFª$zÈZ¤ºWö£¦ŒÇ
-#R8ì[„>ÉÒãU·£œdHë¿/g&£¼¿Ã0)¹—o1—0T8Ú]T.’Låâ¢Xf°³”ðé´+|‚¨~2jƲæ6s݈¼mænöÿçGúùçXò¥EwÌ–\ìR´©jͨ(öÏ¿ T»²#AC{ üebT—Æζ#@eop Ly@‚d|a0¾¤§)5ºRWF’oFƒy«ASÙ<8¾› „òBC2NiʤìNV+o‡¯Z’è áP†ˆ‰¦iº‹¶ ¯#ˆ ¹!¡Ì&P‰:Ä1 E#‹©1ûÉtWì-Å¿7ÉÁQUB¤C4±à’r”A  ‘Yákü*†­“Àx~ósˆ†•Ã^Ö´sD¬NŸ7DfMK¡Q­/ùej¼‹« äŠQ§È„ÍýÉ)©OÈL@0tzÅCûL2‚qô4½€èY’ìC€¸Šà„Ò8LÙA‹&HP»$Ì:Å»«2evùfÁųV¾hs1bû «nNÜ ›x@êJÜœýr†ºq´º:úQpž26CŸLGbõÌZõ«ˆö™)‘ù{uÓ¤T–í†-Ûá<Ï (7LÚ
-ê¾
-ñ„ÃD™¼‡ÔÂ~± IÈò«ÆÀœ‘:Ù¿‡ºñóE†¨ûU´H[–R?‡ñ#ÆϺ!M†
-‰'®ýC ­mÜ̧œøÌÿÂVÖ>µbSc§ø/ãe’É DÑè:ÀyXËK߀Wêûoý>#XPe1áò¢ÑÎþÅ!ñ¤‹<—Ì.]œE-IÍ©Q«· Gí’5˜pÿQÚ±Î×Yù9
-ÇÁddùßⶠ0üHál¾$×V£$R…`ÿîÞåa±“Ƀ#-K“-ØV«m†2Uö&&\)}ÅŠ±ODIæºû\ÃÕÅÐиo…-#¹I¹öL©]á2Ú¢Û[5¢%qWâëGV¸’W‡µÓÑŒ¡g¡Zȶ'¯]AFÁºÁ€¨5º¤!+¾yW Y܋糩£2\\¢ g#t]'qIlõá©Šfù°ùUA”HÂ"æ=˜¿Ìðr‹¶^*­+P.,°{´*¶T¥/dR tÙ!¨¹ÔC¯Ÿ Êÿþ8Ò3¼‚^¹¯Œzá%²ø¹+€!]šŽS)ë9ϹTGžöÕ4Fz¸a@h$Ɍ索rzXúmûŸ½òÐÌu¯çd “ɬNwŠcܵåñ;1¬³Ššb>Å ŸWÁFuˆÔ’žˆ$ß µÿ(=è ®©Š¬1`@iÁ¼”ß!l/·H2¶»sw¦íÑV°lq›š’v³Dæ
-}CøUWLê†@ ñx¸™¼cÞo#úýqAF≞ ”õ”èmôÓàûòÓ-ÙipÊ‹™*s/3i%™Zƒdi q¡‡„¦h|– ¶‹C
-œ¤ ±Ÿ“p¦Nt!³¹[¶¶HÐe.’°×Áñߢl5úÉÚ!ç7Ä{ô¹Õ¯AÄ
-Ä*9vÇGŸ)«ÍË
-¯ð/» ¶.Ã"Á±¤›u²˜ oc»Ä˜*Ú÷8È 0g|œæ)NÙVäîH$;xVjZÀ_˜µN€ó3tŒ ‹§´$}Ç8*ùx:™¼2º1–ÿÆFs¼z¨(ÒÔ´Z«Oñ,ÍÍÕÌŠR„„}UëÇó£Ï,fVž`ÚqwjÂaap¿±¢º6¥Ã¦Ñß2šJ5 {z!ôáżèÕf¾VXz†9@‚)bÚ/…sIA,ÉZ‡£0®4ßìý0TK7á9’¼´ië: r ³×©i꧶9X; |Æz¢ëR¸©¨ž’ÿt€|üË^M<…a©LmÝó›´³‡ÓüsÂÄli+„ŠÞú9c2‘fbD<Ÿ Qè.R"Ãí] ÎÄ
-‰‡å_*Š#ñ¥mŸ|¤ªS¿†vRë°Õr«Š,°m^ëàÐ&h³ŸJý’½¦Û™ü‡7þ ±øÜÅ“Ó©ö°.2Æ…Q‡@\•Ÿa,ã‚?“Ì y8¯m…¶À£¼O©Ûˆcö Nz ÛV¡Ñ#Ê }»:QfbX®¬0œÒŽ„³­ÛdcÛ ¨ZwÊ2‰”¸?l6 “aß:W ,ð(í–©pHb¥G}¤Êeó«`̃SnÊ`{áhš"ø:IûÉý[G†o`O{öudËè ž¼ÜAº|‡²Ô¾xétiä¿å/¾À²¬½ º¸ÀŸ;Ðsp:A:ÈöPû:n /ãz6®‚h]x$ɉ$&ÆœH‹/p~]\â!„øNW fyh8¹R<¯"÷˘c¿×{©Fž 'CÞí% ­qœXÏ«Èî æ.`Än$f÷Wª÷:€5"Œ6 Iý;oŒyÜKü4”“ûòËO—{Ÿ@—ò!Ïop‚¼<% œ^‘ܶ˜D,§´òh+ÒEI§D+ƒT…X’TöFÈ¢” ÆóÖ#º­˜€!ñƒáßY)%‡0¤<OSú ä‰#ý9g
-F!ÆÈžKÎÃÉù6_ ^C¥98×q"E:¸žß‰Tþ~N(ª “±¨aú"08åeeþVžºKžä OéVŠÇ F`È?¦­\œ^Æoæt\§ÑmbuÂÌô³°)®=jHÆBƒT»´ÌÞkŸÛNÕ¢a1ì‹ã=“’ƒ=U£¨.ÍTÆcÂg&)„ApW¼§œíô{Ã](® T­¾v+a²xÒÝÆu™a„ª„¶ÖAJ°[8†V7;âx†\C·KIKœ’ÀíH¹„.ipòÅ^Ð@ör­ÇK+©v;1Ù)šv  ‰£(‡Ê½Ý (,˜zÒY«C_A}9:¥ ’/Ó0RŒ¾ªSt â-)“?—/»bÒ ¦ø^½jKÍÒ-Ì%VdLoƒp»…‹gžƒ ³@H7_Ä<´K|Ĺyó"H–Õ?n÷.è©?oTiÕ2¤/fe®Ä‘òM1 ë¡)¥êb)!Ê» C¡^·{ôúx¡|ÚGŽ´ÌÞªùÿuR9ãç_xÐ/ÚWž<ÌYÜïã½:zCl¢ 'ˆÖ‡„jÖŠãsApl‰2yJD¼$U'Ð>BÀ¦=áDéM¦7b™ðj ·Ê3:ˆ¾Ðmy†jë [Ì]ŒXÜiXcb»Éi ˆš8‘Cd³èæ ,i[ ­éNa ±(Tu­33E&˜Õ˜ýV°#ø@P%âѬråÊN„¯ÌTìmi”¼ö™¢ü‰3€R«;UØR‰ÖV[$’€º¾•ìD"y…X° IC$£Ë<@l+,¹ž¡ªãf*…GÂúó87Wâ_yXò‰\»U1À”¾=‚
-%)¢_Væ']m¶^ʹæë$Ùn
-„s# $km¥*žÁûâ6’ryÜøòæ,åèÂ!Œo${Z·á"Ü|ö Ó2üˆãf
-rÁ+ܹi3b„6ä»ñ]Gév2´nûȤ½#«vÙ»!÷P$<IëàGm$²Ž‡ÅœÎ–UÃÅþH8ºM䙪°Žbu¨&5.åa™’I1H’9­ðFó
-:ͬøQöûù#2Ab²}R¥Ÿ¸ñ¹!Ü"hPܱ ¿„VÐŽ¾•jdWt¼UiêC¨¢ãl¼Ÿ›}¦4Å£ÂQÍYÈ©„¡‹Áä>˜@h «¦,±N"b@Pbz¨s#ßH^.„Ô”G„«ö
-Ðû]Ñ üï'q2d¤Ø]–í
-`ÖØCDÕHKÇ{L–%i$#Š™nÞ3åÒ*?–Ä,P53<ÂÞ¨@ƒÄUÌþ‡µÍ> T'꘷ùAÈE]bA$Ùˆ¨Ÿ|ˆ}ÆZ-•Ò8,ŒAd˜BGÙ¢C`©¯ûME“ËÚqÁ£8&óŠµEoÐ1hî+3*IóJ
-’Z5d³ç|üŽø{„‘3ÜA¨¶'»Zêè êb û´J±P¹ŽOòù%°*8ชlkŒ*¤¹×‰vUFö~Ñ5æ†àŠ‚m3vé'º€Ï&)æ•Ã|™ü@u•ÿÎ)çDºN‚K eñùƒ©;@ÖQâ}¢GmçwùŽªÞµÏü”zÿÐfRâ,Õßhj’»‚‘Ô?(DÓ‹ZÝû€ÀX|–³ì; m@º‡S…÷y2|]‡Aø•bÝ·xH¬’ß‹F?JÉ%ZÊœ^45wµ£kß‘Ø!D] ãDAðAòöÿw–3bç3ö“2tÚš‡í[‚¬F3‡õ(Òý ?s£PEæÐR_o ߭د'Ì‹¼œmßEƒþþþ´Â4AW‡ÍW­ã‡D7,–fìÏ ¨Ñgv…ç =Hlb0’ʲ(‘‹£'mûìaÂi‰´¯bGƒ1…[㈚ˆ­¦GÅÈzuò)# ‰®´ªm­&ÒÂLl2RÙ· RúºLAÀBáDc°‘ð£ðS1ɺaSˆ
-a q$Ý,kų¸•é€ö‰×TìËŠU@X Ež”Ø!D:uˆP×IÌ÷Á¢åáý $-ÆšœÊgÊÇÄ°¦†ryýÂéI‚Ï%K5lÌ
-º1Æ¢£
-®ÛÅîdBåÍwˆ«ÜŸnä}TçÚý9Û4}éÊDŒµEýsV(ÑOŠz¢iæuÞ)‚-Wd[ÌãIÁ@(¬ae(h
-ìÁ—ÄÓø­“^A²xÄO±È”=9\†íPÈPÏÍ^ßÄŽ6Κ¬
-mö£^kƒ°¦òÞ˜Ždßa^˜K;»â¼n\ŽÔ𖉓È:j†*z˜€Ïßanø7ê‚dÅ~¤§ªÅŽÔK˜é¢Zâc1©Uów“
-*Ã3ûf"Tø“5²9®ð-]k£ôÅé®zÚLnÜdú÷m8ñÁæ3í?OûM£Tªª:Ë‘'¶ÿÊ7Ìr´¨yUæ•´sÛ’‚ìä÷ ž Æ“K¡
-%£GÜas|§1¢4–Ð L-&=‰MµÓƒ²¢/«ÔM kRUd¦î–EÊ_b‚Ýh<× lHÜž*DÓGäLƒà]õ3Ó²½Á“B®ROÅÌ(îÎe4§ ·ZÂâ‹
-åuq=ggw<ˆáT«²šÊ?•_yê> {ÄTr>öi32"ÎÊ☇˱übw“Ŷ•èÔAÄêѧœ–ïâwXâ
-⛽¬Â·*%Aãs×r‘^‚¥Ä ß"¯ŠU±Á©òeØÇB„ŠJÓy'/ ­–—Èò(J’÷¢—ã(ÎÃqð~Øêv§kQYl
-]Âvn±Óõ¸¿*¢S8ç½gïV„[ë
-™¥Y óH]ìÀ/B¨yIºGI¼0¸hg®Ç4kÚ0ÁÔêSB«(
-ú î]æøð9*hZ8vX¹ª,,>˵aHÌ@ü_èžéý˜qSé8~¸)!“[ŽH?u[_¤‘U&hΞJ^“Â¥¨ø·T5öG5"ŠÑŸ‚Çð£6¶¿ÜVü¥ÂOB_OPš¸†a>vf„Ä‚£]¢Ãµ®,PŒöá5dõ
-‰/™Ó[Œó£6VŠã{]¿5¶UihÛÑ ÌŒ]½*{‹Ä7¶x]ò—³Š·›0ØOcHBЮ³ì²öx…3Ü=c¯¬„}a7Øqt8XÕÉ•ãñgvT]œåÉm]‰²Áä8¨Ùd•¼€Fõ˜°— ÊòºœK_’“ÅO@É€…ñ3 †·°G‰.‹;C1C™\,çkE1¨—Â7Ù¾kA‰Øˆ“ïåÇO—ašm‰Nç¥èëCQ–bÀÒv¾)1ì ªE£iç0¹•P V§_lr¸‚ÕÅd$¡C:]½ã¯4
-߈–RÝ|~ n›/°c]¾š6tYÄcýI–Û¨³Y p.[â@†%øWˆõï(-ò÷„–ÏÞÒò
-.<_ñJ†1mëù•-f´£Œ‚¨4;GPˆ{˜éáKŽk€Çà©žûÕ±óFfìëNy_JB„{GÉKèì‡ïðr.¯å$0üšˆ“4V¯†ôÒ¦už&­•Ã,½CO¸4?ƒB›œ\ •j¦tåÓ4»Á4áù+ ¼ÈPÀ8KI[‘Nµ ì'åÆ_V®€º,ÐŒQq,AÏ7ÓzJ°&…¨´ó,C>JôµÒ  Ÿ2l}ÈÍÓ ÒP ™†é|8\Ë9BǠӜ󨒞ÝÌ…‰ÂÄ G”øBÓæÅI0?“Ò•¨ÑÆHË5UÀ¨M‡Œë‰WÈ[—óoN˜—Nº¢¯£}ˆWï‹W/º./°Ý¿]ÌÔ7¦Lþ ˆ³C™¼@NéÇ”þ–Cðn]–,åËàcœ
-ÄÎ[†¨Ÿ
-¥²
-Ê.î'¥ï¶žuÕ0ÎÕžb…9ÜQ™M
-¨Bç&ýD —¦D Ûˆ“6U
-iF¸Dz‡¹#O€éðwH)©¢7'J*AÇ*ùšÑn%,šC É„Æ9ïE@9±Šü¶Èµþôy¢0 uOåPò_á “°¢ðªb¯k_QÒuÊ{*ÉÉ<־ǵÛ`…Ì(W+!4f¢9"|
-íll„4U0ÎÿS^îXnÞ0ÞŠW0‡O¬Ýzný·ù.*‘DLºx‘?ÜfR% ]åK÷!rXô¹ÁyÑdþ³ËdϾ—>½h óqBòA2þ9nb·p€Ã}t ¹^ZÂœ3P¨øOulw:îÎ( °Ä>²_xéØ>EìœËrŠ8¢`rŠs†øÏd.ú>‡}e Ð8 p”ðuXRJ1,΃ޤc~ŸJ‚+º2€´óò·sø\P. xø„ÏS¡#3oZâ €¸rh‰OCYVä\…0yøìeš?öU9Y‚AÔó*¼
-Ã1ým3 l®ñ(랈Dµj“$µžåËX¬ê‘1›Ã7°3äPLÈ Vbõ¥/}`%_ ŸyÓoê7ùìáÄró¾*QÄSøzx_œg“¥·Ñ>• ¹#¯"YBð¥èÎÙ0¶ÅÆ7k
-ûÆ8ñžmH£æå²o‰¸«`%HO'‚[† ;a“}{$Ÿ DöÚY üs…-YÝ2Üãwt¼øgoEMnI®@„ñ¡d@ãÈ¥ü⇹”(&¼ê)‚y ¿áoljxjš§ÌÛTºR NbÂ<ìÃQ‘ÁÀ±ç[!®%ÏLp«ø7¡\+žÜɧ=ýr§Ó¾ «+ÖZ¶‹!úË‹½"‹ù±6V]éÔݘÜbx8`&à½2?ì$ Z] Ç)Q¤©Y>É?›?Ȭð©¹ý$è†ÖÙ×|þÀÕsWÓ–r,Æ(ÍK™Ò ôûñ¿CA
-Ρ-q•¤*O¬tb†Ò
-DAoBÞKÄ@ÄLñKqÓKœÍ`é²ÒíGÑorIKɃÏñÕPþõŠñ—’Ý?Spc‹ú‡cØñ®´‚ÕˆàP+,{]Y 8ñÃlnu 0ÇpöH3ŠØU\µ¶/•·-–V5e‚›g8J‚ƒÒ
-øh²Æp4¼ãJ—eÖˆ…B6ô’Œ¾Ñç cZ«Š6bäàGØ †¼ÂA¼ƒ,°F‹§Oe2•%»Ë‚%ܳ Zw®-jãvõHÓÊ0æ¬ûÇt’‚/8*Jà欥‡"ù¯9ëæ„c´ÒE?2Y.^a_ºf"Ý­^‡@ Ì3/ùÚXÞ³h€%n2÷W5Áp[†R mðõƒ)ûs÷S°u9,×ãÞ?EF<`㋲ö‘°´Æ-WþúPÄ€V´{‘º¨çÓ ˆEZm¨ÒäW¬\äYÔº¯³¯ÊåÅ·‹n×/ÙVjKó½µàvÝ7ŠÞt-Rª»Ð)齄üÚÔ€†2ÜK´üÿŽÜº¿ò"¾oH†¶“ˆ'é†`)K­ ‰Êw~{J–gÐ&¬ºJ$•r‘Pœ{Aö´ÅU¤%VƈЩ9Áæçô¤Ž¡ÿJ‚»D oÄD¢DÞ|®u8S8Æv·÷|t~NÀOCIÂÁþhE´z
-¨Ë1
-=
-sõùáQ%áó8Åì¼)Cw깉·HLÔù3ðŽù%aiÜȹ¦
-“@ Güø¹t@4/Á0f¥½%È4»ËZä î7uPM‘ž$$´˜C@¨j]b=±±|(†£(ñP‚é“A"åx3Á•î£ñ<+®¢KF¶oÄ9l=eÌ…Eös
-H‰”—Mr$·„O ;èî
-™sYø§wt÷)aæÝüó·nú˜+7W õÏ?>6¨»…µÑ[/ÐXË­MQ=çtÞ"t¶Uf}u6Þ@\\úðµfë×UOïiiSúšcˆØçÏ?ÉcÍ5xèm 0]o²xÕŠáöù×-(„äcy_ù¦Ÿ€ôK„èb¬_=]÷õ+o:O9‹4¬p—¡ÑÏÃû£©5m­¸ÈÏ[ˆ‘o}„ê°¾A¤NÜL”uýeÐËe/‘ý
-ä¥n jÜ×…Àç°ÿ$B3 ¥ï ò úúïLg9äó÷:ûÁ»iå9gŸ;òˆ¶|i›’5¹Å8µådNÈ¢J]‡JH×&Ú=ÏŠ ‰IÔ¼Qˆa<‚™Ó)äû*Ú?\Ý8«Î>j¾fxó}NNps²ÖA4ñ!Æð˜ƒåïË\f o`^‡t1­› _Ò²Gû…í¨ÂL3<ZÓNÇ\tJÐ6¼è@Q5%±Ü} .J„cÖM|ï„ÚÂO—eßuŸ»­˜ƒ,„â7³y $w)OBØJ:m½œ«dªKkÍ[ïoÎid”úvþ‰ƒ…Û³–ó±ÈV¼*
-1†I•jç"0ô\¦kŒz0Œ1•!}k“É‹9ÂF¯fæ'‹ ÍäbCfðgÍœYSÍòÃ.uUm+Œ÷êrŸ<E7Û9†<FP£ÐQ-Íw™6“ë’Õ¦þ=Ó°!F¦D¨exÔU±i¶ºžìÑļë{Ÿ®çi‹âÒG½Îfƒo[o aDNM¼_=Aô¡ 3AëÁÎZ§HφÎfóªÓsöÐ*
-öè
-özîÊ!¦9mŒ3Ú˜ƒºŸ®JC1U—ÏjˆœJZANâ.ü"ºp"zžm ü}rŠ×[Ž@ü•
-ð¢uÕÕ`S²wù ꙯ž„ýŽ÷ôa#rØrLWÝôÌŸt¤bK{6×ç 룃ì4u ù7™ÿ€ö[ѾÂqM6)îû:SOÐ;Ð’ï“UXWLäÌÕè y¬–+q3»ÚÄhŪé (Ó¸‡/aÚÙ ”jSrFupU«0ÁXŠäUCn¨#½hèQR†Â1GÍ6Dù$Ù›«ë½‡®¬_ÖMð\Š>ÖëÅt‹EÊÓ¾Ï!n¸c§û¸gç¢Ìmd1Æc Š˜§­«z&Kªxuлêà§O;”é¼Ï:%)2E4®§>Ó$s R¯ÔÚãx Üÿ By³SÒM´
-ŠÅ¼$rl Y&ÞAö»×–Y&[æú’íÖ#]~Æs¤s_Õ¬ÔD .ÕÆ0#­Nì‚4ƒé\p9 ÆÈ
-D8¯ææ­O¬äu¥§öQ>f³jI§>üÊ9¶gŽd8Nã¢ÊH8l6V6šœ ô4iÊÒ†RP`:ÖÊDz½Á.ÄHO§Æ4€¸xô¤B‹´x{¾§Ž±K'uQ&,Ä jÄÛ«Ð6’IæWxƒõž™›¡{‘)Zcïk7D
-D2ýÐ3<v]õB+,©ƒ<Ï7œýþðOQüqÓèëÖ9ódTßiKfõ¼fû$Œû•â ‰)¥^~kgmO’Gg‰_cGwNÈ.ùñ€¸ÁK#,zò'É3 Ö¼ SÈXŽCç` X7ù+¤|Ò“tÜœÓQz„VöB iÇÊ/›Ãƒá¡(ÇTÞp²~2zsK๬œÔÀ)äV*–f"}œPOa¼Xr°{M "÷›ló¥—( |ˆ
-sK×®,Aµ0‰°-^ÂÜ)s$gÌ‚P¦¤¼‘ëÞ›m
-Ûî;f×tûäy”½‰ù%ŽÖ*…–›.³]îð^Z\Ô£ÉηÞBÒëàp¦~U´ØRБÿºŠE†.„[ÜÊ° BÆL^Tà¸hD—
-Ò‰@Öc3êK2ôf~³ ëÁ
-{-nüb 8l9Åýêœ#»€qùññç‡|þ΅†Gp0œy9 ìóŽØaþz¢qhÓ¹­W¶=]¨„Ù(÷1$%ð³"ù
-½æ°:$u»Ï0^ήƒ—iÜXap h/ìc°ªmó\?Åf_¹(uÂVçQÁ… •h1Úp]7¡ÀI÷ø˜Sw@˜\ÇF°Î}΀’-rç;n '”»Gîcä[¢öÄ?¢‘
-·9*ä=¿d\a¹=¯ ›Í"õ
-¦ BöÏw$µÁ÷¶k Åùïnéè<ÂÕNv‰rßGÉ@¬¢¶@€ÉJ›õ™ª€´* vå/Ñ) C‡œµ-Gôe{ÎO
-‰¾ª„õí’AÒ@GMG1áãCÆ Ê†ÕV”«WÀïN†uñ.xu/ÂÙ’I°INF%¸a
-/ǽ%\~‰ŠIráÎGûsD9p
-™ÌÇ™ YJwÄÆ»¢µXËçÿ¸.ºÂ²@ëi×ðX¨¸{ÄŒÕ!²“R“]¥ïóܦ,y<΃0‰ì@Ááz«»µXU¹Jœ”± >áó^ó¤sñ`Á«¤¿Ðo¸fä9”)â$Z˜‡.LÕTt•Âb8q± PþXÃÊ°(KZ‰kÝŸ”wÁ) ž£žŠX1ŒuÑø⨷Þè'~S‚1n¯z4ýÁØxGýh`*½›LšÇCk1a…E”ÐDI߉øû´Šn`æsnc¶u pý ©€ý
-4B¡ ¥¯›AÖ/ ¹.ñæñ¥,DÊuö)j²Ç"¯Ž?! çHèHwà|L) ¬ø³,IA¯€àwå5v“Íé8Oùggñµ¢‡ã®1÷ñÖÂ$Š, ¼1D·§ËS!74~#¸ûÞBÛ‘Ìz o.2¦)sè­Òm³xK˜A–™P̳ȸ7lX $‰jò2ö:`AdâéÌ°µ8I¾ bÆ+Ž×ëú‡Ùg´ÝÕTdÅ$`›¢½ß£¸™ì„Wìøý|ǺQ+bF«x}¹íŒ<tƒŒÚžgó0˜¼¨Óg/Q´R\Þ.QÏÍä–-$°)±Á™ýæ–$û4øl¬$ÙŽ‹4€&ø¿Ø¬ 5nÁ`®ã]¬cKMCn7skb¹åóéÆøÌÜrCTc9®ƒßÊÀ§¦|îüÿ«¨z%¦¡íÏ*šÑYýrŽ{z3' ë¿?}ë9Àã½bmÕ€RoŒñ@®ì¯›)J–ó#,ÅI9âÒGÈñát¼¨©Ý÷Ø%IlŸ¡C‰˜¹äOÖôÛ<ÎèWzÕ•¾ÞÞê‚@DñÆìôéÛ€1fq÷M¤ÕuBQR=_t–µƒUw M䃜Z„í8HÀ 1ï-"X䌯e·<O
-4  ¤Õ°]æiÈ~nÏg4œ!‚¥_Á2˜3ÏsÔ²Ø'ÃP¢—LÓQ–ç9Ýæ:‰:‹{EÕ`ºi)èüëå·?^Òëï¾üöÏ šü&‹‡˜+ù©Q­a¶
-þTÊöò{@KYð×û4?”ü°iBÀˆ'gï®ßÑhØ è›é–3Ã]Û–RB{¦X·ð‡xÚJFÕ¶]-ű²†Ë4ØšÃÖ°¥r=Í¿C<ZMÂ×P' ÈxeúÁK®%CqQ J–äé^$C+çßØÍóRÔß{,£¿Þ® k`4aŸ¼óº¾üAIüå”ø±0’™˜ÛEë2Ïgñ.#\}«ñ©d×-Çt.£FÈ?:)Ú‰HT¤xyÉRô 
-QÉ“ìÔ¢Mò
-’, AKÕ_^ZàñÜ‚Ži.HNO³ê ¹a Œ2„ÁÙ™^¨§ñz›Ã“æýR:¿™Âö·ª$Œ/†Ü«o2ÛvEVâïk *ž¨=`¨>-#T s®þå"ÀACsÍfš¸÷¥¢)·<¶tkØÌnEƒ¿`TºÐ4J•¤¡m‰‰,"‘ŽéÎ) €X¤~¡úkðÛض­ßùap ‰ æèl‘_‚’}'«¯†ªvJþe¼Ìq$9’(z‚ºCÊ
-¾/â G¤:'hP«yÿyß̴͢  ˆêŸî¶ü¹¤Ò Ó“‘«eµ;€Ø§”h™–MT©7çÐí¬È¹Å#!žZºiåuHåWHЀAÏb¼ƒ^<á—݇bÁsÐj[.ØL}ä®­4©wUªŒr‘ j¨ép¤Åævã  YªÈXê32‚Œrt„öd·!Zt͈X¶a|,ïr«Õi\ÛšTû‚,‰R{^"qìDÆféç~Uµeë·«drF.­—]æ äiJ|D `ÞëŒÅÅX"Òß;øþ¹oži!Þ®gŒYø†ï’ï‡òG†jƒa€3‹$ì× ¨O‹¡Â׫ÚÉüª!7¦î•]^ЖÐØiÐTƒvO¿ôĥäÖ§jàUV…y7Y5SýÄVýaðúc̶j!­ÇX¬ÓXÌHc•àÒ@ìSôcQÉ3 —ƒŸó¼þvùy:ÓÙùyû*¼7L#§ Ë[uê'¦ÙŠB;¬qyê•}êqL™kìO}Ä·ai\B®ò¼y)Ã
-w ü9ù÷…;ß=Gbg ŒØ &C~ú”ÿUÅ7¬éÖŸa/ü’ùJçs•HC-™Wâ“
-þµ½g
-ê `à…µ½°™Á2êMú›¤½­)@Ù ¢‘“¡ÁádL
-‹[„ê9‡lFHÐÒöÛHÉ$JíÄɉR“eî©ÜÔ¡Òc*«¼LÉ€:÷`'ºÁÿT8}œsà‚Ï—Ó¿ò*©²/ýT H%ᮘ£k1?|Z!ñèG%ÆQÏ|ÒÊÌžV+¦ˆWlùdª7IiÕ?EŒRÚCÿ3«ü‡LT•]ôO1&ˆ
-^© CÃÐc7[:¹#T)MÝ…ºÞys" iÝ´ý’ \éæFÙ†U@¸Øþ(¬ÑÍžM¤*K&£ª$”«Ó
-EØðFVÆ›Œ:éu¾<‡f£Êqœ6MIÒ–)\F©È,ëÁDûÒHµ®œ†®ã}*ä[úˆ/çMùLu>açHøL%Œ¡ ÃM—®'£°Ä èëÄIu Ù¬Yý2÷çg N6ÃIKÄe¹•0Dè Ô½á˜u¸ˆXĬ\T¢—:•ôù£¢
--5§u¹`¸¼Æ H>3:ïç b#ºˆVÚ¿?õr Ïžˆá
-âŸzÑò³]{±s¶Ì*ÌàQ‡7²4A,{ÞÏ)ôöe¾\E~Ñ”$/"~Y_Î… g°ê­©Ü7§ÆÙ‘ø˜¿©Þ(YTy¾-v Òáù“Ü|&pºh òš-TññÁ°CüÍöŽ]Á<4f§{äã F`Òj2²â²2]ì¤GŸ =O_<œ‡È¬>]¦ —®
-†L² M‹Í°i ??â
-ÿcÜ÷)wÆÉ!„øÀœß1BÀaEç {Ó'‹àÝ:zdÕáåp»Uü¬À ºG¶UeàˆS’?òÛHÐ
-ÔN—ëié‘0’ñŽÓ)šúµc²{ƒL~ÕR‡ðBþˆl£>§:H.Ó™t¢—Kó¼sì0ÄdÕḓÅ3Ž´ç$Ü<÷ESó #í7Æ^‘Mæ¢l%‘LŽÒÃt°h³¢a%-bãh+0 _”1ß”wI³þåàíDžîÆXÃÀÎAuCùKE”MŠiýò%‡žˆhI窒ï )™Ø“vˆ.U¤ò©«=xË\ßåæs™uÝ2œý@œ$®M5»ÿc¬æÒP2U^#†1É:i.Üôãå)ÓÄ­‡ E&°:’Ý@JT9=þƒ¿«­ŸçKÇ”á†ñåæþ›Ú3ƒ}xrhq-K¬=„—sa¢DºL-öÂf_zËþ©ž ÍY~ü$”çý¹™ggHP1טø„„Uøî’ú>)l9ÅåÿÜÀ1ë˜ \Uîí °
-âu9¬@›Ú ¹ã½õ1‰ò‰pIBwÂsògSkXC9ð6™Jt®+nÍñ«Äã|‚ùAèSmAu)(2"‚Í kA^zõã#=õþ+a0!ä¡*,<¢++ÐÀgç¹áÓ‰Qèp’ç¯òk ±©
-³»óçd¬ñÚˆ—p5ô-dFö25^|‡¤7P‰ÜF½9-¢ßðUgÜQžVøF'¨N´4Ô¸µŠ³R Q˜ÁN(oõ€þ}AµË‚Q½†—ÝÃ-^E‡÷X“ _û¿‚Þœ‚@C
-ê°oÆòP»ÐTÞÿÔ7@R¶2Q~úçü$ˆIh
-¸(Š@-;Ž—Ï$Ý%ˆ4˜Ëbì<mú´)d–2+P„åioç-»ä”6lÄmÀsÑf+!0ð>DùÙ£Y·òF´Oå'›%à@BÛ”ÐéJè
-E©Ø9jRki~ 7{ܤ(
- `Ú³vQ_*#Õ…ÑÅ°²‚Ç<~‰öŒÖò»‚:%+ФÝZs§
-ƒÖ‡·0„ œ8aCF|Qˆ ÀعÍû›·À—¢¯E
-Éü£å§ä¿Ìleë*»ðlÆZPRV5fœ´'*!L¤‰œqF÷6€
-²Ð‘¦˜òJ ·0 ²ÔõýÍ/ÒûÍZ€vŠ®’¢+wšÔ7Ò&_®”?"¶d=EÁƒóü£¦P¬Äµ‰O÷ì1‘I6 oG˜xŒ%@³sàx¼MDU\mÑŠü´äþÊ#°¦È4Z‰«kþ9é‰÷Ää¿-愤b¬¦ázQZº±½ÅFòûPb•‹Ô‚^;{S4]-ÓXÇ2¸7>”w NŠ¸2…¦¼J²|H†lWûps¦£ÇQ—yó‹” 7[ÊÅ…ì9ošòQNÑ×&L^žÑf¦¾ƒ@ Cª'_ËŒiÓc…Ö¥Á`•
-è×Øô8]1ˆIdË:fªG§dϺ"ʱð'%]ÎIFtÌ…sæ¾ ˜6ô³‚ÕJ !¶Hw™Ç k3{]R/JÒC­Hºävi¶uh°Uá%ƸÆd~‘&®i*Œ´Éi­’„U‚U“‚™•$ö¿›…ÄÍ;¿ÁtÑ鱟>m?±¥-ìÀU9–½éµK–„¤)5OÅ¥¸?R¥XUt
-¶CÐGæCFjàVüË1â˜\þGœW ®£LÍaì˜Ê†±Žˆ-IÀF—Ì@[“í^ÎDæ´-FÈ9¬fœòM`exG%x¯*äó9ÏßèSŒ“@’ðS„ôâY¢
-â[Ž%ƒåqM‹:¬D>‰ÿú$óîH*hn&ª÷¢KÐýzó>†ÆËÌ°/]ÆÛ»2Ñ2d'ÄÜݧ_JÖÓq,ÂÊ[î9 b4
-1!XµÍ\Gu¹ÑTìŒ'«ñÇá¤9ŽE°¹q·5Ü Aæ,ùþÔVë[|z·‹(cùè»ø8EˆmÁ`DŠ@ ¼9óäžÈû*ÁÂ#¦dOsx]o‰¬W"± +
-˜ø£Ê…uuIðIC©•£,áfŽžvŽ¬E€`zJž²¨ûÂì'7nÊ *¯Ñ¾eãrÎxFœ[Õz¶xJ~H!%IbI©0;’Ê":EÐ4Ô “åK} Jƒ·XýzB("&(D\¤=K¼ß‚òd¯žf8/¿kÓAçœëœÛ\çùóQëKWXÀß|^[ñ²>'xƒHŠsyQòÏŸ¿Aò·ôôF«ÖŒ§Œe_îÒã]¥‡±t6Cv¥‡~‰YÉ\"MWz¨päEdŽ›'=<.
-kÌÇ{FôƘJ‰ `J[Œ“®î5 ÔÂÄÂdoI¶ŽŘ!Š‹>F Œu¡ì 4ÐHUâ™×£PZD/¥vf§³H­-±‰8º(:È ÂOtJdA
-'v
-†‡Æ.OsuCŘ¯­J,gpú.KŸù—7l9bpƵŒ+b¯Û\IbðmóOÑ“
-GtTc_¥Á¥S{_‹I÷ÑøÐQ’ýjŽ¯›êºgrêÔ@ë³s'¼†ÊÁ 1UW±ìIPÅ> zš#"Ou…Q3]™a²‘§%j”—æRטù*Ëk'åRà)±o«{6`ji†¿â€ƒYfKmƒFqϹÒìÙV:l}²§k_`ºÞ”É07ÛÈUê¾–!r,¤B©ny…BY‘üð5¨ÉQe¦žl°?õƒPIÓ K©pËâ°è×1ÁP–ºØJÄá½Ëê·1û…=gí¡6ZŽ“FIl¨ÎÓÛÊS12QGžë*ˆ~Peü`Öàå$=­ò´Á¼AÑÕMA Šr¤¸xô­2W
-r’Æõscüx§Éü¥Öˆ;Bç–vÎp¨Æ࣠_„»ÃPáqÓÛ(Fš¤Ñò¼•º¾¯a€pÕMY -ù(aõ¥þS{ìæsoP^.™f#ËÆP#æI[% X}þWA6H;Èm1Gý¦-ašÚ¢SÒ ¨a†åÁQD– ¬zc¹ W]“²Î: ®Hd®n=ÞŒŠN2@‚(ã&oþÜÞ58Jö‰zú–<|)Œ[µ9mjt`{lO–¥!õè8cQ“±ÁÔ³†Y$ˆÌË£ùÜçàÑš¬)"Š ì"ÉqCŒË:Ó™(v@N‘è
-Ë÷§þ{‚4gññ?:A¶iÇš)
-"Ui
-wÛÔe5™<\"îò!ÞgØø¶!xp~Ç
-Q£–žZlÆ‘{Zr ºyz¶á\®¾‡sŒ’D– 8D‘Œ+ŽHP\‘
-F3·•þÚÓ&
-kÇÿ:ÈŽz*Nž¶2‹RMn‰¯S«>?|ÐKë» µ"À² ©=¼+wÜ|ZGÉ‘ûtüŒ|þs:áõôs Ñ|,/ZÍ̇µÈçF˃¯ü¼tsz‚ø v9G1fBG3rïÞ†`T÷ÁÛÍ«4í™g…$yw«sÝjœ›ZU&•û»ÇÒ"«1“ö—~ØÏéª  ±~8ÿlÁ:¿CßQË4´Æu<…i¼«X½qïMæn¶Ôb¸3œDë¯"˜ï[¸ò—»hóÖL"»RõŽwÛ²ý0w ?Mz†umÆoæ¿Y)S†â1´ñîJì”rF ‘£nG匘ˆ½ñÆ's£¸fQÓæÕ{¨uçNhBµ›“4€VPoNjÍOK?·WSðÇ_púŸüñÏZõŒò¼#“h7/éÝ_k¢uaòàgÝèäþôxF;ć Aˆx'²ëpH­3*Ð ìñè¯ §éTœ¶ç™è'G@82:u×É©½+4Á€‚R^KÙ:d¥çØ”óD€æ2ºNÅ>âa†á‹R|€IѯÌãƒ$M
-yb£Y Âz…ƒÂC9ðß„dž0>ìÁ!øo5]´k˜*¹Ps2V6«Of‹á2c½N
-DêF4yøÓƒd²È1e-=\)¡7EŽ¦2<"º¥in2Ð'°1ôÄÛ{7kÍ}ÿ„»“âM’BfcŸSÔØ)ƒå’ÅŒ'[Å]D!)¡VA+Š ƒ¤4t·Ÿ,GLaâ´ñ¶ ኤ8¢Z+'ÄNàìcJ œk¬Š­mq Ö…ÁÃäáaF…bc—ƒ ]3ækBhF7ê¡uĬ£ š)­æ‡ïô;´6ŸnâXÅì:þÏ«¤‘dSÚQ†[Œ0³:\VèÕ؃|ôJGy ü£²4ïË» Ug*Qÿ±ýWQõÉ$†C6·^u­ŽÝd»Ä6ÙˆScZÃ’ÀôÒœšÝ^] ë¨kÏï\™ãÜæÊ@÷UW&;Õ¹ÏíƘ«iŽ­¾äA$)îÐú’"µMAí6§5Œ;/'e$G‚iÚ%Ñmn¹?S²¾"Áiº³½‚P AaïˆÞn/Ô’5…£ÇQÄËwËj¥®2âS¸1Í¥æôÏÆ‚ L5"71ÙÚPb"%¢µVsWC®Cx¬øX ¹y»ŸªËì‚âÝZ]P5ºÃ_l¦\ ´jtbér/A¹ ²ª°yB2ԡ¹ŒÒbDšª$zjˆ9T¤<ï=‰NE©qw; jWÕh³Ÿˆ;ùÒýZÈ~‡ü;yGX5©zZqÈùwåœóþLøQ´Ož’¨TÓ~Û†Ä^ã
-ºÚé—C2Q“¶fóBŽ Šd\â¯íúœ›^ÛSsÑêIB y½<ј÷:V(Uâ!ßìŸ[–øî4¾¼>8Ž÷çœYÙø4Z7l.3|æÌp¬@²|B~V0Ymço<—2BL*d]øÅï2Ê Ä¿ZD…L[ ÏÔÀX/. 2֪кº© d‘Úƒ ÙîwÐRRœN+57PƒÈÅ0‚˜¨ï˜{&â6¤EZÅ‚“ºk† ú Ô‚ðe‹X¢áj HbëŠC±øš†E‡]¡ä‡w­túpÍÁ@0&)
-·-æçi@ÆG3º .>|’ŽËç’¨(+mª4ÇÔ€HX‘ ØÉyøG tŒ!„µ™¨a¶÷œß&q ÔÈi9IÁ’´ èùÇ Ëü}ÿdH–ã×ß@¡y&}0R¸-X°Î‰ç<WyŽ¨á‰ A¨t"TÓšw`æŠ1Ñhò âñ$Š[„ éÅpzMø˜2ˆ~$zÐG*'c1(D%Ìù%·Žç*ì[¤<„­oB˜[¦[O;ÄbLêPHÃê€XP¨VˆÄ¨Ð¬·¦e¤,
-rqô=A䑨Ьôã€Tgåh«Š-„É´a¶2³
-Þº/ò€œƒ »›¹‘ÞpØ>À*p«b‡\¬¹U3ÍÿXÅC«Qž”v(¼ñï<–}…Iy„4`B¸jÕœ9[”o’Y#EÆ~@Œ,€„õE²ÜM©·ÇÅç®0]°3M ¥_˜~ÜžZ1aTäž6ãa =–¸ZY Â"]FñPÁ5\!rÅ4㊷âðþNÚ…ÏR®â¯J³8.cI]úÃwo‰¨LÚ*¼˜Xj©ÎndÜÚYyÙb–h|V*·ÝU‚±Êoè­„õt^¢‘ÈLÜüŽú®v°6ð!Qg
-‹ti‰æ¿ ‚‘6ß*ƒ"Y™irž—AqwBÕ
-C“³‘{@$–˜ÅPBѨ©‰àF€!âÐÎòðîÀéàbyké°PY&„GYG{Ü asÓ@³°Làr6‚ˆFTdWûYù9è¶Ì㊼,i}yÆ\®¥SÔøAmö5Ál²Gü³{?‹ˆüHžûÛ.CH3Ot„M®xåý„Éœ¶C˜°bÚ’Ÿ©].Á…® “ú°¤’³åxû¨?Ðð×R^ì&8Æ».ÅàEžJfObú†i@þ")¢Ï P_ ùŒ—I¶7 EW=h:ì›±§ÞE¦öþ§¹$eÿ*(_ÉÉ 6T$‡×ø´n„¨Yô :i=®O½†]BT`¡å|†‘EòÑðº|S?÷Vê’›P8¡¤J˜Ð=²ÎY O“åæV’ TˆC®¡8%:jÀnƒ.ë¥/Uùú!yÀ*ÒüTö»å Ð <X NÃ,s?Œ¨0ž‰Æv÷l!˜ˆ¬4B(tN"{`ahÀ1ì Ix²)ϦCM·hM¬d>3t„Óì–¬c» zøÄVÓ›ïàC¯8"þ ?ÀI+<å5L¤ƒþJ™ö£
-b,VÜàU%abøÍH^ü¢Ž—Í‚·ŽUýÛñ®›c‹
-ÑjÎw®ŽWó Ô*/š½lªè3QžB oâ+§I,@¯k‹ ‡ì^ïZ‘ÿÂvž/lçƒÞÑPÕáh8q¤öy‘£NO„¦›¦wF
-Ý—“
-ÐK¢dD‹áï~1C¹Œ =‚‰×MœÐlk
-“~‹Úcï Ãá£ÃcÿÚIìC­ø©qTƒpØX8Òbµï.HEL½—ê êûÿx±txraƉ ,ÙÛ …Q´@@˜mô6HóàÎ5–·¼6ˆžðŽ^hšJ"-ÅqBV稘øÍ8È{iCáÄ Ž «6x_ŽÛu(9á“èõJ½G3§œã4p¸E¹`•B–&F Þ)º‘³oH"Ùöè<½$­B i=\ö²‚;>å˜ñµ@_½¸¦€«ågüS}3î þ&OW Ä”‡«a¶XŽÚ¸Î<â`êÞØÔlà–ùFfU·Äñ˜ vØA‘Mg¯‘9ì]<nKÓb«{”@*KA–Ý›U÷ª“UúgÏZÚMt¤¬"»^$÷kÕïE_ârÆ'54œÜ2u¥l¨¸ÕtÛ ªG‹À
-Î`:uŒ:]¦¡B 6ò
-s‘Ø„z8v?ÐßœxyK,¸(‡×o‘IòËÿüÅ&‡Rd6÷»Љ7Š$H´¸BOtÎm<rè{TXòmûJ2vìýÀ  6L)AÇÖ î°;1ËË#Ru-Ä·D*Îmzj+h}Ù€¿8¨ßV„<ri¤¶Ä7^Ì)*R†
-•öæ.ºw)úõÉ~ÚÕMÑ03œû»«ß‹0"¦© ¦¹â
-ƒ./-ü¸Èyßý¸‹âŠxlÖ4·"’"y /i(È@N»A ªé ã·-­Lƒˆ³" y`M.€Î¬5Éü‰…(Š˜Z†,~}l?>a"13å;¢8üfeÙò®èÐs•AK¢Eq×ઙ´ÓtJtº§Ýd´ 1¿ùÎÔ‡„[^¶K hØŒŸØ£ú3*H±6èò¾.”#á–ÕN~+§NÆÀŸðŠA³ª}FÍÃöã#J[%SÞ8òÎØ×IµiÍb+ïÌP¢;PQ5åæ;…¥ÇêÖ°î“ùÙЕĔÓ2êðAaò{œü'âu‘ôýå·qÊwW-bZèNÉjr‘”+î o¾úº(»¾`a0‡¦®‰#)hZ™ó~ÕÀ
-Š™f‰û(¦­
-ˆ£1ï£nÍarl#TCxøP)¤—jhÍÔ—Š…ˆû¼/Ÿq@s¹‹‡½Û“< #0½¬ Ôûpešl8&.¼©ø2¦géè5vµõ7þATÎ_ˆ>cŒo¬Ï½È¡ËYŽïùÿÛ,šˆ° Æåã¤êØâßVÄ$1¢"žàzpJÐalCœlÛq¢…„‡ÐvÓ¾(Éú %Û¥wK­Qé)‡…ôôD‰øHéø‡¼Š˜þÍ Z“HO½œø¹1.j`„‰­#®‚¾Ï“`p$ !©¸n
-Ìß}HɧÚa$5H¡òð<½—§§ö SŠØ£
-„dL 6N‚ ¥8±êž@£5Qàïæ¥dÉ+ÆýNxêöt<A/Çmò'½PL=ÆD¸ÿ=§D£”ÑPÖ¼J'ä>1Ûa&‹<`Øg\4À
-V¡t›â™ƒÙ*
-øLѬÜ!Ì5N¯¨§‰§ôÅ´÷"E¶pÀ)¨¬Ö€0Î7hWÉŒ—Kv'†W=h:@ñœgè]díšï/@‰n—#M||Ûeš†ÿITͦ`ëŸ^™…ÖŽâVl*0|:ôO¾HùTl>ripWˆçEŽ÷s*ä·?ÑŒŽ°€—Óë®|¹Ö¢·%DJ‘Í¢»gŸ!ž‘d{hr0YSS'=ˆ/t]¾
-;Jž¼ÒŠjp\í¹V°‹c-ELóut3J$ç{ó˜«Ô÷@l´G(o˜")ÙxùtUÆYqXaš-úõ›!R
-gˆo²kFr†bq¹ŸÊÍwSº½ ^#œ\Æ•OÏg±G¹ÈGLË
-ÆíŠ{ÅÈõü«wP†
-§ _¬Õté*@KY|$Žû\=}\Õ7W.t¤ƒŽÐÏó»?Þà ÛC+bîج5m]ˆÍŽÃ3r¹¦M¾EðFMÚ7´ƒâ$ù˜va â $ðÏï:Fw*ÂÙ1ä)1QoP,gÂô¥ë䎫;Á/8 ËáH÷¬Ä(Hkƒ#ˆ– _ö‹=¨Ãã®È¿.è'Ùa¸óìý(Ò ÚDÉý\FKÙG¥ê:´xtEo8?L4—~ø‡ì ë½ö¯N^û«c †©ƒÑæv®3ß;¥U¢½Z/7?$Ô$4úˆ’ˆPÙ9#|†k'0┲¼Ûg“§NÄíã[ïú §{¼æµV—lR#ð“ØÍ«[®v{uu»¡2S½´„ªñ£!$[Ú”90žCˆ_ÉH–$oFÈ*ê#¿`ÀÐPòFí±_8ù‹¨&u䌠(Ж¤Ø/DóÆMt´Üƒ‘ Ì) *«+\ô€äš„[I0JÉP¿X>‚ O$»^Š—!²¥I#Ϋ؊~Ö[i/•Fhé…C¡gæŒ3ÃÅ£–+.1
-9ãÆæ9t·_hðшeò¼´÷ÃcäÚ3À‘øÅ™#ÍÑÑ&ƒÓ
-Éã"žDÑQ+\2¬7ßké¿žŒ¨ˆQ#”bñA:9BÉô#šy‰¡ˆULM[…uÇ,@èÀ¹ÈÓ|DùM«ªÛá¼²r´.©Áƒ¤{¤«CBˆU„ΞüÓÐR3üBŒ>ÍüÓ<¹÷¼w£øîe¥öŒèUÆ-wEýUj«á:F2EšÐµ²m³’)ø1"Z yä›ùj~Ͼõý1ò‚Œ¿ÿˆÞ¹o^£2UÞ¢ý>(ñüî€Z®±p‹b±S|°LWíë­¦FXV
-*T•9Ž=Y9ÀÒC¢W8ŒÐd4?bú†ú˜Vdn)NMöÎŽwh}Ýç±›Ž_>*ÂzKpª˜j" ­nk…ô…Ô.wýÉøÑ[| ]Û eä„s'Ù¥öÛ!<‚û
-ÁîC”¸yC]MM¡•“Uœ耯
-H‰Œ—Mn$7 …O0wðÒI‰×Îrn1@VžûoóQR à.5¦Hìg©DòýPãa­Œ:lDïíãŸZÛ£yÒ¬v­¿~¸ž0Z«†7qò‘ê£Ö2¤¤>¢» µ&¥Û„ôb®Í›©Ú‚ôƒ#¤U“}UØà­é´êêÖùcã+µmÔ}LåÜÒ먭넸4mµ”1nÑ¥ªŽ6\çÈÃJ륷֊îsøÏ¢Õ=:!\3‚OꦾÕ-Ô‡I>¯~ÄtP¼ÕSš*½®aî‘÷ºK<e§|îöâUø~þ—²|Ϋ´öªTp”Uä'Ð× P¥-&«éz—Ðib´c!L(L”lØúâÒ Oè¢æMˆŒ²·^ý*rã‘ECÚ>¦8·´ZCe¶ªÇðÚ½yDì¹ jÌÝl¼èæ7Ⱥ¨Š3MÖC¬½8GöÒ¬6®7圹öÞ£N_Mè–èFHóQZ㉭ï›JYkãj¦2!\<º×˜“·ŠZÍfíNQFÚÍ;ŠÉ H£ËÊv‘áò!Ý|ðÅÞç'«C,Çmú€¥üÒàÞz_žï‚›º ù½¸x-×›$t(í"}‚7S8­"1Ï1WU€Å ñÙʆJŒU>íV¾ÈÇ‚0…B êÓ6Ä2D)Vb,?–Wƒ­s²*壟¨ûªæRêRdBx`c¨Qº½Ú Àmt}ïÉNíÂ(´8}
-[Ç00ôÒau›þ`Ê­1”¾€T…6…yäð}Õ„
-€€ÈÅb/Dñ^š2ß=ЧX‰8,F!6YS_f•ÛÉ¥)IT7e“í SyNÕd1饖N㤡T+™¶)+U*R²fø ²†"‹ÕÌ`¦ŒÓ9 èpxœÝßWÁl þ•_do¡é5el=
-Ùer¨¡ýñžÙ™“m•mn…N?›Ç¨¡L-±ö¡±½©Hµ”ë@àQ»ÔÇübèl ÂÚ ¯ Bö½+sÒˆ¶éȪ™­ïŽ_à•º^° 5…l23§ÂÄõ5pÔ4:µºÔQwPM´íS€PeÀ Ä¢]Tè“VÝ3Q`2UGš·„Þ›ù ²®âïQg¹;žÃÜÈœ*¿ä‘a0©’Þ× Sêž
-ÀœÆ~“S}>?èàžP,ÄÒÆÖ|JãÈD*&“:ÏÁ)sV3)%×U¾e¼€0s„ˆ©Ùçÿ~ÈÇ¿t ïÊ3v[»ž”ÿ÷ÄšˆÍ„¥€ìA3¯ ³”=fzÛ*%ɬ™\éK"ÍAk£Z™ BdâðX¢]Æ*^¸Ky
-̤¥T"mÉÆFRi›Â¸]>tëŸTéX$ƒ°Ùa'©D*]ëôóˆéçfÆ íÿšACy¶×¯ÄÀØ¢£ðÖ¦„p0‚ËËëöÅJc°äšåùÈ3õ‘‰u‹CDü5»€ ‚G¡Q‰]âžÞm‡·yŽ§{ ^YŽú[¿s2Êž ‡Sj"S9ÉÜ ÒI‰¾RåQæhãÛ2¥Ž?¢ uÅäF›܇ñÄ™¥ìS`EÇD¨|ßÓ!i‡8jû. ®öˆL£Ô?Ùˆü,æ’Íàp‡8΂RQ}´o Ç dÐqT¡R³ñwÐa…Ì8
-|´.W*%;v‚ïXw–‚Ô„?¹¿•N$È$ûáÏÍOØÒùÁf{º¢¤Õ8¥ñSߟC}Ž!nCN†]½h6'q“_¡>P¾Ôs›ÐÁŽt«‚šivu“Äñ‘æ0†K¾åß„PñH£)㪰#®¹;0ÖU#×
-yº¦Áíº¹~aÊžl¯YäŸÇ"¿ êéˆT€²9wPäÄÒÇx/ëô¯,¤¿²’)1q ÝÀ3V"W&ÊŠ¶ƒêî
-ChDß
-Í,
-¸ÜžBËS Õ²«×J¤Ìèy
-©1ÃOòWÄ=Ê-£äuEG3CPº%¾%Ð|QÙÙ“¡FJæ5ò$*¬OqVÁ¿ªi
-/' ™†yŠÕKŸU’ƒl6>5W2ò[ÅQ“zqp}sI}J.Œ2¦~;2Yéé/÷9bô EPæ»`ld½¶Ç§sì!¹éXfúk¿,ô© è±LDŠ7¯ßÆ… Ÿq÷­¹ÏL‚~ã·lúäŸ>øµCUú.æiaû:c˜AáÓ[FñYþCCŠàèÞA+
-P6›w\,h‹;ËäÉ"z•/·Ö âT¯Rѽ i¨Œg )&}¶2·-é8úòkŽ-õ̱úâœäG°"¹ã«cÒ›tÅû'Q^WåòF1óW”K)' Õë*´½Å©ß’@ÜÇP²4›Œ¹Ï9=lÐR‰(èç‘ ‡†—GŽŒhPû}æ~›#š]_yï~Ýèë ‚þLK -͘>¯­ÂPöËpØ’Æ 4.™ 3Å´@éN™à‡ò6(¯²\ËØ çëÞ¡š<«Yz!\ýzú¾M&É0âñèÜ¡ˆûPb!>ªFrl/¶!É¥´'_ðË?‡¾q wìóӌȎ_Û&ÞG¾v”+Cš›O£ž ë*Ö“ÜGæ¾öâþEöpæRäà§N
-½d}¤òû“ñ
-É1DÊŽJ˜SxÃ'˜ œŽ²?õÍ„.g¯±ó˜Þ§ñkŒã߬kMSKyFï·ƒ¦¸~îVCã^Ð 2()÷ÔæÑ8ËaÖÄçB…ú'hÒIÜ>’Kã‘IÅtèàbq):JrA­§Ù YŸ2:&ÉEüs ±œáÔlº4~­„Cã× ‡ÆùX ®ýÕ£ñøà:,!´>Ép',J®9›¨Xê›ID—ûE[XßœÃf0‡ªK]Ð&ñ”r@ëBã,ÓpM`_²Kã„DÌ`C¢Ó=Ó¸r¡ñkÓïá‘ì\Úy¯·‚œ¼~îVЕƿ“ Ì þýñÇ?æ=hš:'“IŒbËëi‘9`
-ŽÐpAD“É £B­0‡®›oßkQ—«á+„¬˜©„2˜½Å³–"+(¬‰yÏ­®äoiçXK]çðŸƒûňNì8è×IsŒFH[1]ŸÝ ѧâß±RPaÎ7Ç`…)„
-÷)ä%‹å™Âh
-ÒCâË>ƒ~S£2€ûÏ'æeeùúX_ŠâéÀ0oad>ÓÇ1ãǺ-æÖQµv|H@€w¥ÆCãigc¹¨É Y F𚄉ìÔ7ç¼Ö€þ•'Á9q¸µ|¤õ©×žÀ:FJµÕýð:‹•/U­]tnknîZ€ˆ ¢J¾>ï´ñAe¸õQGTië&+(ärÄ°†¿ÆtC4¡/PÃ'dŒ;À½©—zСK3¹ùX!üÖ*ã¬Ïü¡Ø›æ@†ÓüMUÿὌÇÒ# 1µzÉmšÐºúZm#ÁßÇU*î9A iL¡ïs
-®)r%¶<…€±QŠÆí¶â‡Ù`_…Þ Ïç€ÉÉCsl
-E›£…â‘ÀÔí „¤k—b(U*ëÌטòÂÙ&šcÏ Û
-óZ q¡¦àÌ@–®P)¶Æ6jìήaó…#Í©qNÓÝY¬¨IÛ)ÛDÍÞÎb­Ašsfi*眺‰ÿÅÕ_´)»!þ™Ï&–¢ŽÉa‹mÚx"àÃoö.šH"ÒŒuLåiúsK.] ìÁ¥­3¼™ÀER¬Oå|êÿË
-ÍPžÝº
-I†Ø`¼ `9A-s5‡„vŽ¢ K’õå]:‘K¸YXZÉ»bÊ‚VŸ
-(ˆ•žksÂÕ+v±>Uù&©¥¹gT„#\gºŠÔ +jÞ‹²üËÍòÍ 67&rêRÙZãDB@ ˆQJ¿tŒé–6BY}c'‚Р˶Ò5Q0Ëä<´Íx’SXÚßZ¾lZ±‚H30K Ò`ÇLæƒ×7֦ŔÅþšó™¤C×vBVcàO0×Ц7ç€Ö @a–6J³6¡!†¹”0PÞ nh4^¥´ûKT–nr(äžó4Ä2º_²¢“ê",;é“Áçò[ ׄN®î=}Q±yð›¡ÜÔ>[ÞtŸ|YkÏ6_Èë幉ÌPÌÕ+5h¯íV¾ˆà·b*Ý…8¹pÔo8($ÉMh^Á9LôˆŠLab9¸esùŽÒ#IfV‚‡nªE~TfdåÓ—ƒüš’Q·•g‚ž
-‹” \+Iô]fÖ³…hÿäì8ö#ð'Ü×nD¢i©ˆ¤uš?9lt­ØC£y±—n! ¾`Çâºu:!ëCܾË5€‚ñæD{ö,¯MÝeºKÈU ¶x0ãI–ק@\¿±Õ”Ã+T€ýd}*O4N4Ë<0—*Ù@¶±¹6;E©
-† À^Ý3åoT\‹µ$pBV’+XÆ
-šð×»-HŽ–RöÀr ‚ ušÏ%…˜ëdVîÉ#‚^¡o­žqòÇPÞYÕÀW¤ð,õ7çh³£ûÉØïÛ0ÀÊý/ãe’É­Ñè}æa­mß‚Ûâý·zŠdf”H“™ôwTˆÁýE˜[ƒö9R–ND ½9ñðv:1IëÉ¡ž‘@;(§œð^_„ÜMz\Í-ò ³?ÐEtjl§+И©Ãa°Ç
-Br§¨¢X—<J¥e>v·ó*Ä œòW
-Üáþsg{•pÅÂjŽÜÂ0!¼
-Øâö'¹ábIšŽL½€û„°¥8«yú}žÞð¡Ú@*Í…ûÈ;#÷#{}¦pÉqÚ ÆtÑž€D)#šõÜÃ.lï…Üàþä´yDM 14êü}3w÷ã~tçûÿWŠ'Þç‰égôIÎ5;Íú±‚œ¬ ¦ð‚ÂÎ6Pw¿5§_:5bKé¹n5mðß}_GµÉGÙ"(ÂÑîÚ)}æþ[!»â©6j/¹'Ðv“Åßã@ÑSžÿñ‚íJ_•¦FW–Ö¥`ˆ-È Ç
-Âùèbô}n帡¨ “PØxÚè!k0™º<WDï4V(ÉØ¡Ëã9;Ç5bUä't~·62ŽNB𺶾Ãû€ÐÕßo'[‹dBr~’3ã$ó¿Ë9êǵBiGчèj<ž˜@¬±kà Zôîä ù>‰:ˆoÙcžªŠTí.!íä $w±t­/:ð‡N~®-„Ò­Öº'œ»é!å6´—Íp‚B™á·c·þ
-ÊÏãEAÄR‹ôz÷©›µ#qŽí¡µV¹,[Û¾4ò4Ô»±U•|j¹¡×k?­Œß coNXDT°ÎÜ­\á¾6°d‡„ÀÎ|ƒ f…à\D‘Ôܺ²O
- »§3å:îw ºàZg¤-2ŠÐ¤k[tñ-áz°!çQ0^äwl éL  È¸
-K-†R•fŠÚðiFD°e)Î4 隘÷‹piG†ÝUô¾š'iMa  Ç‹ ` Í`®šv-…à&ä˜Ç„se’š¸±4uÝ'@s$Õ­Í–ýt€NKÕ«UkÔ2HhÖ@mÁ@É¡šÕ.;„NC:鮳Ÿ.oA½k9[‰±nÐÒd&@:iGýÛŠÎÕïTä–¸˜cSÚ~vÙ9ÆyËÚüÔ9Ùàº9sB¬GI zE÷„ñâ;Së#Þê“Õ
-Êy6ÊSE.qËAdI{@ÃHO“":ƒl0kû;þ©É*Ų
-3âAIÈ.Ú¬R Ò
-
-È‘Š"p¡“ZÌ!ÐÔ6d®l×q‚.»ÉÏ>üÉ©•ä²Ð´ôtÆýci™CÁµÜ\M ¹È٥˛M!£/Q¥_W
-e ÷ņ–câXòÆÂÆ{Hã‘‚åmîÞð‚„¢ =݉¬>Ü §inP„ýò43* F.ûÚ×iX1–3YÜŽ!•±ýðk?ó3ЊƒzL͆ÝaˆèÔ\åõê~Sp1s…ðqù
-Ά"€k<
-μòÐƨæB#ÑÚdf‚àEL°87wcË:ÎÙ£’f€0”:sç¯ÓK6Ye-§ôÿBB"˜ZLÏ´øG†’‹ÿ5¤iUÕ´*ÁÝÿ2Hj_×þP³5Å5¨C„ŠÜ£é—°HR£õto$Òef—Ä ÿʲu„±œío
-G«³÷¶lð´]/ íkôÚ ÃV­,¦•Vž^Ï‚`ùlÉÝ•¿eTŠÛs–qiÔ
-°Ì"ë3ÃÀ&^S¨ÀªÅ=èF+
-YÇÔö‡-þ:q"}¡êÁ4$•3*{_ðƒ.wbpS”f°rµïŸ8;{Ý“üVÙ‰Pü¢~©® æÕœ¨-Ÿ^¡5U­ê:À’xñΡS5ÏGºë¥C´äÇë0m@æÂñ÷ß´áßխᥠ±_úþ›*|¬ ÚaP¶Àä)¤HÌ#²6ÂÑ…¯àLDÒ4ŽÉåø>–ÍWò·ó™ƒ”‚]Ò }ý“û^§áìX¥ÕfÊÐp½¨Õc_fHãÚ8†ƒz Õ%ûÛOâ[äšFŒ—8AÄg„ˆÑ¸‘Û †…Ö§Ó.s_RãVÞë»ãÛ‚LiF_qŒIjÏf”‘QÎO_ Ϥåfh;ÁÜ%¨1W ¼Z~ á¨4ß´sŽ(ÍÙû!¢MdpV.Ü„¿9Ò‚i¼IÉA-4àÐ"‹J{Ùú6Äp²ã
->T}™h+¤“"ÌUM7ˆ?í ΨàšÌ{ZŒó.4A³Ãš† B™­z¸­—“eLF«ÓÇí•AF†wŒÚâ~Ãm§ŽÛýàš S]`y°b¦#¤_Yçc1IÚŠiWˆœ ÀF»Y£4®Ç]‚¿¹Óâ‚T
-Èkÿñ2G’d7‚è æ%¡ [`i­Rå hÔfDÞŸÏ$íW"ÒºGë*/
-BŽÌGgéWtßë=L+_ )ÀÂDrH„G›­¸Rãž/ÅhT¡ë‰PËÌ2û+6 Ê YYn²A±¡‡s¨,«õší"ü æ[(‰ $KË7S±6LuGóï«Ra5ôicà“¸ÄD²y ÏEº³©rؽEãT"2]ŠÃ…|ôè×/ät;ŒŽhWÓóO1Îü—ýôI þd}b¹ <“QÉ—£.èS-EÉ:šÝΞ‰žæWÊÒŽÐôƒv‹RKü »ò+W‘Ìà"þÌäCHA lÓPù‚ºLª Šð0BÀ0=WkêxxLæ[ ]ãcP KŸùWäGr’>Èüñâr¤.èSº¯ù¤nTwñæfçSz)þ’n¥î‚Ô­øqÎÙ7ÇcÎþs‚:ûøS‘ºÓð)I¿Ÿª©Iu™¶M Q+Ç¥ªÜ\Ù%¡†ö €NÃçuŽ(ùöM‹7fwä¡f×VFÅ‘
-¿¤~äÅx¹À´¦ŠìÌT­WA™s{ÛYŽ Z…DIO»Ö›Í¨ý(mV‹5‚ASÃ׫1ŠRW¤³ {h˜’W²¦3Ê&òž[qÏ¡wÔ|††J}ŸÃ¸«áù¼ $}þ‰yk,~CûgM^»Ú”$@ò”¸lEŽD™Åãóœ‚J# HîK†ÁÝL(€˜W'3´(bòÌT¯ÙcWkúø—¦vt@L1³&Õš†­õ@j’Ê"¼ãå=ùfMgè¨f±‹¶–•“bþªÜÊ
-}Láwec:‹-šÞæ1Hm˜–]%Ž¾|ÇßÎc[‡;ÁªèÖÇ9´ ÌŠÉ,m³J¯S]MZŠ(pf­mó‡ð$µ(CÝzŸVF\$-?TßjÆVƒU'ˆFOÒËLIü1ÈX} ˆjÓ’úç´ß@¿°Dçª ¨ ÒhÐ{8:ÿç„A˜(ò„ÜŸF[ÍÏö“ت¡iG#W&Dº§hæðhÛŤë°hÐYX„iÍ!‚ÙË‚öáiÈÖUîùô±!¡ÊýÐxuLÐbEý[Ⱥ
-ËjŒ9ì¢ÕÛ9s¼Ùd…¨zt_„CP}DU‚‚Û,ô‘ÜÜ@‘¸{;v7Ãä£Rë¦T ³ T¨ôå>7Aã€MîqB2¦ªåÆ{ÓØÝ3co†1>:[¯¼¼üë¥Zñ¬cJ¢³N7ȪӽÞÎ9÷®q^svß•×Å·äx³pËð·3õõ0zl©‚pêÌ?ðaôš –¡/XÂÙ=˜Žê"ºá»ÐÜàáYRÖúÈ£Vö8„rGïƘ^IoôŽsÎ;^sô©ÔÑíGnΑ92ìA>*åž–;–ÕWK5oôp
-B{Ë$&3D b$1ÄÙF¡
-éGßç éÞ‰cž£í‚Í”2¶ ‘{ãjÚo½¦óFdXœt‡¬« > íÒûìÇó|#œÆÿ|dÍ} #ž:•‡¨øˆ¶¡ch½ºÙ‘ä¬Y[yRÜ{Zí«ƒ
-yHˆ Á¬“PÊi6½E‰ @KÕ*)‡Ñ™m:iž{'ÄÖÙU#h žTúøî̵1-ùFD´‹&ï‹âÛ4éÊkªûÁA˜p¤ŒCœçpq²˜¼H{k]W‘¿Õ1!&–${œî\¬T…àJû"–cƒ ÐÝm,HS´‘ÁªÔ„¹†’ˆ%·º 4²-.kcÌX-Ù‚p ñ´”Û’¢€šæ<3ÞiAH¿1´ìó”Æ×ÚTÍŽ2X‡LXr!Œ5_A*TÚÚuÑB—"pad ëÁü¨·^ÿÇx™cç‘Ã@øs@ûÏ„º…Sùþé|E‚¿­nô“– 6 j™ÉÖÝ«õÚôE€†#²·+h-£Ç7ñk¢Ë_UðnëP¥™à“{¯sVì„Æ#a—
-2˜â|S]jê²Ôp÷eÂÝê°%‡"*ŒŒrß¹¯¢¤Éõ
-i§È‰6¥TòëáD†Ô—Ý*vífŽ€Yçˆbè&úزñ£ä'I­Q²¿ AóÐf•ñe]èi6H@¿°h¥ƒÍŠpêb½Cìs°Ð1^ç¿K`)2q¯¬ÏwЕ2“1=J Y¶nn‡:™¦dº‹§’–uN¨•ö—¦*«ÓDÈÙ¯@eCîæYíK N•ÇàÈÔ÷¸N‘vMö?äb%HEg}òýèÉ—±Kà(ûCr`°r”G%ù%%'>ÓlΊeîâ¬7OHof,I˜*™âXƒ£ƒiPêÍ®·s⊲­ÉÜ{Ô`¸ì±b\©V¼Ú)°
-TÄ
-Îò0‚"¬,x\16µJ(CY¢"OÏOíuÎ׸p¯Àª )´‚û–MÜX{ŒváÏ’Sô¹‹0“ñÝÜ!ïdRlgÝ{QÒH+œqFbŽ…ûåPZ@ÐíãB³4»  }¼zŒB¤ØMª‘vAH)w|€ÃöÀW—ñ0Î/%9`ˆTÒÁd(çÈhDx¹¾&רš¼ÝTˆx³‰Ç£ßò‚¢J …!áêIzþæùJƉ€dì®nÉW{ú¯Ll™°&éj;ÀÀlÂ\²åa½L%ÿ º1·Q”³°¾nA:ðòÙ*0¢ø¾ƒ]áˆkz¸Š¸°Ô…¿6ŸfÒò¥ûSð»ðPºÙT奆¯ìOe (ÔŠ§dJ¶#C€×+R 6À¯×ùt¶›E ÄÈ_…_¥¡”BqÝaï lœ
-_|ûÒµ7
-)l³²ìöæuðCqV|dwR—’ý©ëÄs®¸qnsÅŸûª+ŽµD„!q…YÝeà.øsŒ)ÛéWü=§×Ú%(Sn÷ ¶— \ÜÞ;ù€,‹›¶_½}¸E÷Ô{ÿÚ¥æó7Z™·@!¼ ?À†å­ '#dTÞ¯‹wL`Ë°r* ÿõNãÞ˽sÄÙŠ[ä„™­™äÈ_–ŒydDû$< 6Q s<ô‰;u]ZÖ¯Ô‡"^'S$BØ £-ŽïJŽl‘6óÔºÄúô9¬kÄã3œÏ ¤¤<V ä‡×)¬bG‰R¬éSŸ¸ÛÊßV{z˜ð·³ÓˆãÛ”æwä WDcKòÃïU”dôØ0‚ÜðC‘Ëd}ÐÞ©MÝ%ÐgÝêQëÑÑí¡Å<>¾qcn?ü
- Ô 3ÃbÙm”ø
-ûšÖ!Ê+ëâLÍÆSŽkRH+»„öã/ îS‚ „^‘}‹½)Îb€®Þ)úx(‚.÷ ó±›MQ‹,î*™Ç7a°ˆF‹óI¸“ÑFˆ|B$Ú’>–%£$(3ðmœÞðÔ–§[¿Ö¦|fG(úvd´xHP_ô˜±@ø"MûSrÔ7mÆ‚À‡ÃÀ›;¾vc‡ˆ!ë¤áí™aþr–Õ=æ—Ž.:÷È«DŸÔEGΧ¸'65%«8䌛>ǘ£¨ö°ƒ²t8™]@QzTžJ’T‡,÷ë½äY³Ø—ÄöùPtâä
-³ˆl6h –¨ÜQ÷}
-W(bãÖwK0ä±çåWH>DÁFÛ ØC‰ÃÅØz!éðé2ÝÉ­0Œ‘ 0¥›ë¿žÂípÿ pYP# ö^d ÆUR }XÏ º.ËÅÈl»µ>TÞ tÄ!¾¥T”'+£PÖ1DšÁÈ «eí…ÔSˆô·»K’4FwISjÅ5û^õk$J³äÞ›:üávø§EÜKÏûAŽ[ÎëƒlÉÞ®Ï+ÄÄg–%Yios%qˆp“å‚Œõ!§˜Æf¹!RÎ<NÞa›ò€`Q›²F®ðÅ=ȇn"ÒŽ+F7äà ;ûK@§Äé)d÷ðˆ7©ØË’ÝpV%™´Ü,Xáö9Ø™zœ™…’›Á"Í>‘S(·¥³âd<æ> IQÐç'2ÅÁ9ˆœ§‡?ÚÛBÒfÒžl H4wáÔW‚ƒ€èQ´³·Xà-9¼nŸ¿Qå:ŸÆ¬rÁqua¿oYtùÄŒ½›øF¼ VÊé$ÀEU‚£ÈÖ)º[ŠøÁVOœÄ‹hlaiÚå©VtýÜŠš>ƒ@O¨‚Zé‘bq¬E\
-˜FX4²†$Øæ*oÀó *¸KZGjãˆ)Ù!IÈ4ž„ ŠP n7{îÁâD!â­ëœ £ûÖVh5Ò.”QRr’j5ôî”ìOáxˆ…žôøpNÃñ$Æ™þfÞ t_qpm
-­nÑ“¹{Œß£ísÛ©]T°°´Ÿö˧<nFŸJôàªþAEœˆ³N‰^>”Y•—Øê3à8ôqôMóIì:䨜K‰.‚êE¸Å.Lí~N÷—jDµP,þÒ^Îg«92´Ï)…dH„:ƒàà"ì–\0úï?^‘ƒv^Á¸ ¤Qïøq‘³÷Ïý¨èÂ
-þr]Š^v?£…StR•ûí׬Ž£ÊÀI¯Ëìƒ`¦¿•—•ˆoY¡jî’$Å€’Í_Ömf?
-0VÊ:c\;›’«Ü>UÞĽBŒè€¬ùxùÛ9¡D†-¹Šfk’1o{ûzw¸.Œ„=¼(¿
-3)•8¢ü{‘dèbŸ­;Ë÷¹j
-Nà°n/u m¥ûoý=Lue2­
-GØí.äOxxPûâ„P
-c%Ô3Yr•)°Pùz˜{Ì3àÖ0,ŸòN©-Ùƺä%¸õq…‚hfÀðpqæ)è–±8J}øµd•8¶VðÞ³]¿“AM/bíÐáÅüŽnÀ@—¸ •À¼Äm ×`6é§CÉÅËË?ºCZ_ñßû(Œu#Åô0Wísꯦ·*à
-ët®2xo¿èì?ÿ¹]†ž`ˆ™:>Žeß.zÚ¿_ßYRßåBš
-üãK½$§T–ÖŽÂĆ#¬s¸ûdÜF—¸K ÿ$£bbføæC%\½ªc ˆ»„à†ïf~W/@¶¢éypÏA ‡Õ8‰jøTº>òñr´¦i‘mùgxqnZÐÞâ¤Ü ¹
-DV0Z`FiÏh’B¹MÎ"ÒvÌ?òÊp“Ÿ3!H¶´Ê7<Z»ŒÎj1æµBNƒ‹³´rQb-$5sbú†ÝŠ~]‹ 6yMž"÷Úš.Ëðå«‚Y,‘¬ép[Gœ¨òD²”(÷âçp¿âÚú„c]†öW°íKaµ?ºð%]æøš®Š3Ó"1ÊZÞ|Ç©écßwìÒ"Iõ5½ÅbÂŤá³Ä˜ø3
-QHš£ÅQØSãõƒphf1!ŸñÑnµžýMîZ^oJ”uE\êa«ç"¦9qüØK<uÛßA3‡ÒÅ1'(„Á²¤µ/#{Ê hCkC±OBgrÖס+t˜Q²Þ©îïàU1žƒ¼©Ó|št¸èC>M5vã_!k°ø6dÏÓ.\úË™D|ŠØŸa•äªE=ÁÀRaü`¥576†•H4Ž¯5<JRǽuüè0”‡:a%36¥.{©x[Àz—Pþ™ÐD{<|]K¦€MDYçQ¯E ›÷ XôÔueº‚±.&ϦߣÁÇY¼{U€„Wí9ÂÀÓÉœ>´Rÿ&K£ê6Iü »ºäÇ ®›œ>‡-•“k¢4ßÃŽ@AêDûØšÜÞ|Ç—»FWøLúí–Œ<êŠ
-Ë>ôk…ÒJŽc 6A",øÇ%+ÛD=ýÚEY†@ý[á ¡.ÃMÛöÞÉ~Ó–&$ÇÀQ l +žû^<B(&ÂR>'!Ý$XøîÑcâÆ’X—è±ìIÞ”Ýc(K€å:³cÂYÒ˜ùfœ_J6rÄÖÌ@©j\¿#=„¨”ÝPì¸ ÿ̳»ömèXÂ2{2UûUŠnŒä8ŠE€Ã'çéì"KÅæ
-
-­ál,nÛ»ÞtCöœi·z#{Z÷
-6FˆBèÕ1ˆ?}PFÕ1¼Ã× G Mצ°½¾™Õÿ¹À‘øbC+Àua± Ú±ÁCãЯT§‘±J½;Ó‹>µwÕ#H!µ˜ìÏ*a¬†Ö›@¤ÞÎà€ûør†³;¡•$Å[½?•`2v¥`Ц7%ÀEA(鸣ãµ­E1öBñÁߊ^ mà;¸u*ôü¾‘™ˆ4û>-Ó² ©31&“'8À¸Ÿ§?CÀx:£=x轂äŽ}ÝùËà_m½›t‚_“ÎÛí# ‡AËyó6ƒüfɃÒHÎ÷â6 #<Ž#Çä£7 Ò·½éø:rÔ€¯03Ç1þÛ«dⶰòö'OâÖ
-¢€}û¨©*Ó6gX«.Ÿ‚ôÍìU.R ô‚ÿ¸vø»E s¸ÄñãÀâµ+Ãëù\ßh‡G1¬ôYØ*Ù””0Wˆ»—,4
-IÐK[ÞH¾/ZеA¿ù_J:ôTD"ó¾/%:©CÊ„­QË›ïà· ø¦Û| I”@7~©=짢Õ`ÉÜ]ŠÚç „´Tۥ̵‚V˜ßÑ
-”Ø:Zü°š¬AúªYbm:Ž«(cÜžþT²›üÜ—ï¼ÌË0>¶|'ÂÕÀ §c6Ï8ŸQÁËù".¿ƒù´ø ±6Ö›XYkJE~Ç”‹§È‚e³«þ~SÄ’²ÎÌ.úP ¦!B‰G–`?ìI¨èò`‹©BþÓÉšü€5ÚWWô
-¬¦MT®ÚçÚyBœPr‚º“²É³!Mš½‹qð<ì-ÐMüÙº¦À„!ÕA¡Y ؘLšN$Fé‹‹!ˆb…AF±°µðwt<®¥2ɬ‡²}j½ IféÓà¡a7—B
-ÕW@¤>Ô½W
-öp— ºŒa½­Ø⾉'[âU±]¿Õ†Í‰Á% f~±¹ö ÿm”Nò0L ph‹ýðîbldI|Â.Sußd/¾H'ŸÉ€×›îµÓ)µ£86Eå2*ÂÛ¼6Ýë {·ÏÜ9ãÜåÎ=÷MwS¤Š¡%›¡Vþ$p2Q±Ûä¿}ú³Ç®v¤*ñGº×Ü$•Ð2Ð_t*†sÜ ôùΖbïQÇ<fÚõ\çË‚ˆ[¸1ô+™{ä¼ï<îM+V%€Š;Ó.]P¨ 4 Äf& Ú»`M¯r‰­¬ŒTŽÊyB2¬WÒf@Æ曑k´ÌŠ'ßØ.µÔ˜š/çoŒ»æR
-‚uÊ;I¤a‡`N´I
- XuY0nR)'BU|Y»Ÿéöðb ,)¡· ƒÆ-M™ˆ–M"3!¼ïé°L
-y:ƳùÎ
-k©œ€U^(‰0¼ÉÃßÕÚÊòxõz.
-¡Æ§Ûöqž®ÕòùUþ°X¨|Á“»šúTãrO æç`œw9RÂù&ÇQÏÚÎ|Vøð÷³SNN8;î|çÎç6wþ¹¯ºóøÈ Þ4Ü4î·¡ú³G¯WyIj|ï]w³¥xrÊ4ÌcäèÏyœ“~½“Tƒš¿2ÔáK [Ê0;4uÕzø514h
-å'ió&¤Ÿµ "{ÿQt˦NY$¥úí¨ePQ½ØÅø@JÑzØÛf<…¥È²4g‹åÒÚëÂ?6Ñ«Ñ— H–ñ7¤ÙŒŽþjËtA‚pŽKå¨ã¾ŒrëHc¶‚º²»B„’‹]Ïæ9ˆ‘ò>*F ñH¬ {£ãCQz[G±O1®L7F´ÙC¿©œ¢ru!u6TÃHÔ‹¨'ˆ"³X•¤ýó6·$c¾¦oÈñ¯'beÒ0SÔ¶ÙNf£4ü7]#14áSjW4$p™}Ù4•þâz©Û 2â†TQœ¶ ’,‰RÅÈ“4ý
- WÉ \$@€ärÿuÞÁØ–èJ´“Ô4zøé#Äi}è–K×»”¶9ÈÆ“:9jfl’r¬‹Âž4äõxØMúÛ³£?y`éÂ…¸í¶/¯ž"ã~<–jÎ<ŸCËZ¦°ôûø
-–á‚Þ­ÀÁêE?¢}ÄpþwЛ×eM5’)?½ädª‘(Z
-{­m¨$.!f}ßøQFbFŠ&ÿ²f¯{84m—Ô¶9$o3m+`þáÍ*™³ãŽˆ¨µgÖ¬ýzš0ïÆXÏØ÷yÑ?¦ðÓKU0ÊbäëR®Öâë…:ZãŒÆÀ>•f-¾ï‘ú·@p›E¤¯¶3ätáG%£w`°/G;gV„.e×#/ªL‡à~_ÚßÔµÐùPS ÔvÆMšë¼
-÷ñÔg©m„ô4Ëêr<„äªòQb‚;µüp h3›yg½y‰®ÍÇø'd¥¹ô|]u~b"ï ã‚Ú%Þbz~Øǧm—èy¿
-åÁU mÎýו¯g[úG€
-H‰Œ—KŽ\;DWà=Ô:¡)’c¿áÛ…ÙûŸö¡¤ëvÝ«„ †•‘EƒÁúñQ{I)ÚÌ=øûcx{VZÕj¥âÇ·ÄD«-|Øñþª­«4÷ª ÒÂ"zw)Q'¤iÃO„Ob´QÃ{Ì‹ú«›é(œ+Z4^î2Z-µÏcDzç¿Õ{i ¡V,Z+*ÚÞ@j·Z›uiÑöMw¾¬)ñT·þñï·ÿ~+ÿ
-B:¸ÑS`™Êùçé8ØÐ&Ø¥*õ¤tG.’º3áŸCÀü•\îHˆwý:è9—,„ƒ¢ç’·˜drw§q91ëQœ )òÕƒJšüá!²“( ™ïÏæ÷4 ö; OsûP‹çøÏ’v>`4õZN IiG«0¾K¼HÒËÀáÝ<.º;š¤©ÀPM±YHøD!޲ι“ýn¯Ž»íû{gýî0Sô tÇV)|›+cˆÎ&Ä°-]Ë Íë”ÒGZòzwL•Â¸&¼ M«aˆ ºlÄÒ¢q2CoP–yU°ÑV·¶b·yý Ùmƒì"\…ÇÞŠ€…KáKdAH4'Wù‚¨Dåt_Êæ _z -¥J ߀d0xª7-R‚ŠyΈ2¶]@ ½Ð2“Bòâ
-sˆY^§&¯,»MºÂ×YÚ ÆwÄ"äM­þRóï¿5ºƒ§­ñFõЋ•|ñ@¨=ô,ZÍ ÓØõê!¦.~ŽùÛ'Dg^/~¹%–þ¦/óˆDS'rô­@c>”uZ¯]ÛUaŽƒNzIµdp‹~ÿvÑD¼²Sx­ÎÒŸ@22Ë™ðú›ÑèZÖYtÅ#lvœìˆÙɈ¯§ßI}7âYÒ¥5›ê4Wž…N'íié@_ü¹ŸBl(aKÍßó‹3éRòȬ™tÓü„œ÷k‹Gt”æÚ7¹ D‹v]N ƒ‰’"§3w¸ø§¦èqu
-Sè…uUj/»Eäj° X5ܺ†^ݽ~=\É)Á_3)4àäÅŠ'( :Ž#w—YqgU$[ù²IÌ
-Cyk;,‚pFiÆ^OЈtõÙ©™±`cj?Êß_e4wXŃ…‘ÓC*Õ¶ Š”’a"ZÞY±'¨ç>ÄS›à£—Ÿ×Ý@?¿Sz Tè•ûH
-ˆ–c39»uƒIVhä ñmvaA
- ÉñMhv°LçÖ¯›î¹„ùº°º¥9dùJGŠFð~¬Ô ²*u¯øáœ;oÑÜèwxÔ“Å$Dz‡ „‹}[PðêH­·7ˆ?Ëôýj:f†u*ÂöÆ9Œi>Y÷ˆÝMÏt˜÷Ï랦çï1-½dÅ(£¶ ñ¯ aYuÚß8™æÁÂÈÙa7z~YxíC‰G· i!— þmTs_e¡à+mL_ 0¦,^6ùoIæX¶@O¬;öŸËçfИ¸¨‹À•äOÓß‹‹rgNGV„9Æ ¦¨É'‘èç KKŸñ¸Žžg– €yYTÉP—húæáCçÒV˶y†¯ä®¶=þxyä2Zᬈõ¥Ç0y“yNúZ>úÉŸjù ðcÖ’¤³¿±–xŒã),IÄ莻íõ†}ƒÊRabB¨~ÏFØ;e $)…[W1ÜؾV²­WÅ ãòä:'ý(òTËVrñ”·ÌÖò?ÆË·Ñ$‰Â'Ðh·!侘ƒjS1Vk̹ÿ|/#~¢I†P,P%*˜Ë[2m›&cÀN;_ƒ¨úJç˜Á¸ŸvFA
-ÑÞHCÜ¢”ñN5)éLÏWøô&ó‡DÑ!ús ±•
->·á…ë~C˜ùö'×åϬM„UZ<âÖ¤â7L¢R]aßPÆÎèm G¸|BžÔTRóÆ#l,ôñ×¹
-F“D‘—uBA&"ØÊ9¦bÝ
-û‡î¼ÏCˆ³Ñ,D€   t³…Ð^‰ÅÆg„ÆBf ¯‚ð6`ÈŠœéÈ”˜_ A†cöÄ$ñVc+"P·}òëÙýéü=ÏßšÆ ™IM†VÆüÄÓ‹$­mzþ¸]€t¿AÁÅWsYš?%pHt¢=~£åšŽäÓÁä5à
-1±¹ òm/‰Ü5bÊWË´I&8Y£ød3Ü'j‚U§¨ÏG¶W$&S5ª1Vß|«eÁâAü<Km³røM!(I„/ú«d—^ ÉD¹ÏÙ~ˆÄcÀ
-z$¦ŽbÇPéfj‚W‚_HÇ
-4F—PðïƒÂ$=uºž-»“6êÀ:¸Èþ—ÑBàû~Þy¸/zW¤ÙyútSÒD¿óIÔ†A²S!èøSʹ9£nó‘´‹$‚“Ùc×vsÙÙž¥È-A­E\Ì­öyš |@±n=NåP÷ÍtQ è‡1L[)òÞÔÚBì*œ U"l@x-LHý‚è=æOQäg!ìµØâ”qIF€'8¸þô4ßÑeLá@ \À„}‹R~^‰à鯫¥r)!›J¸ZjÄ(ŸqÜÁÞœ†¦2™fŒãð«^ŒA•V9W-1%ý£ÃÆfäju ç94‡þì5ª ¼A9oÑ>Ý¿Þ™å¯K`ÊËIFS»O¸ûß‚è I5HvX #O#Ùç«ÚåÈ">…™NÈ€i!2>›^HÔ¦?@ͯÔšÞôê2/¥R±rÕΡ¤²m‹š×híù€ÕGñ L@× ÄzÏ)ê*wçž#^Xuæ…fó:ÑO¯ŠÇ~ÿÌ7C†<)b7‚ !É.Ióv||´/´¼Aã½ïNvþ1/ÇÓ:'(_Ū?}µ»›|T>*#Ž5B_—=huï Œ‹[f¨|ÔTFAÊ€Ùp<Ÿ²´˜)1ƒN_ÏÂGVEÒ²f3Ö=šSÉHœò:J *I ØzNÙ|]€„\™—ìá*Ò€él Ÿ÷Ù3³“×$ÿf³´„îªIXo‡:,Q›²ÑNƒTÏGgñïmr
-œ¢o2/Œî•Í:°SÖµBùŽt›w¼¡ána‡4¹™déLj”˜`•¦|R§!|¹ºÒeÌ£ e Ñt¶,?´¼åÜÂg˜ŸÙ«_%0)Û“‘èBs&êƒÔ«½Ý«aZ(¢‡íì% A@ð+X‚V÷yÝôô`VOÆ8\ŠW]úÐÛ…Ic”, j“‘”¯&ßmjKÁ“¤ñò6‘\™‡èÓå7€ÊñwkxN±hÚ `uùJ‘©
-ãÛ×®üèÀÊT¾Ø’±£OÂŽáÇ,V‡™‚®[D¨/"³‚R=·j V™
-˜‘õ]È€ÐëÖÁGH¼Òü*ôÔ$£>õÉáÂ"å8Ü¥3u
-0ÇÍ€åÿŒ—I\GDOà;ô Œœ‡µ}½’ï¿õ ’YmýʵR+'c Dæf,kd%©<¡$Ç¥À/GC
-v [u^ñ-ð%²“7:¾UÇÍ €0ú/#ó‹ÑûÃ8ò:¥Ð©
-nñd‹}”°
-ÐÎØl…3¯(¸ ¦I–Ô|52«€±îð"èúÀCaŽl¼ñÒ/È›ÅG‹Ç$‚àÓz/%À Ê‘Éqž­¾Š¸0¯Œ%SÀ´Ë.*Áõ
-V ÞIs‚$ÔEx6LI/W#ÝÚ|L­@"}
-Ö€‚Kå—!]Ì2=ûÜkbÌžñ„™0˜ ÀèBLN½ýx)Ò,‚\¤c¼é°¬;ÌÇæÖJ08ôÞÜØD9ˆ÷›üw\¬16#˜‹·¬É£Ç@€·àAŒ—ÔÜp' %;ÑîÖÊtŽ Z¢£lÄû!lÁ‘dV[ã# aZiûÈ$XuCûä¼4
-÷± ¸ I#»aоÏ*|š6º;”çóåx„ ˆÑÕ4äQ}lRSvQù¡%Ðiéäx¼±˜¡_JB…¹ŽfuzYfî,)9’ŽFÒ—švX YŠNsTˆcêÑH>;.FÆ e O­B,Ê /TXƒÎ2kça,ZÙž’ŸYà©BãÌJ¸(Ý´q ƒ6ñ”»7^<éô"ÞOx_zœ}3Ì’Ò,sL;T+³Æ·Fàìx›É
-ML‡± nI9ÅÆà±s9¶c “°dXIuä 3án_Ûx¬¨y6œ"NÂØ Ù0!2Y¶qW#õKC&ï6²LO—Ûd|OÌ”(ɶr°f¾í«H~
-?@‰™ô¦ÿ­ˆ×Ž&`ëѼŻ‡;¦Ðv¼.7‹­$ˆrë ë ’Ä”(ÊÆŠ“½dÒt•‹­Àn“Vaûþê0öG¨k L´NìÆ“Ìóª!ÑÒMÌGr§t)¨´…³1û+Õ>kž“‰cHøžÈ"ýÿ¬Ñ ož‰;1/šÝkI®à6›´Þ***‹Æ˜I»W<±w«A¨3¾$$¸V䧰H¾Op‚Œ°×PÍ}Œ*XG:¸/Á*ȼ(,C›Ž—elÑ‹m%L^’|³ô¾Ó¥ó?”$K/ë@\cºÅù^J .¾!®LGªÊ8t÷Lö(úñVÄâô&|8Ä/%X<L1VÙrЭä+\‹¦l3^Ÿ7xYç‘®% ‹Ç,À7ålf=QKãÒt/A‰
-pl#q ãJ¾£¼• ¦©ós«¯"î#‰®´+¿¬ƒÍçñxà•Þ¶RÐ#W’FÒi(Š3Ôÿ'ÿ.ò†¢ÖŒQûÙìßqÉJz!õ±gý}Ê¥õ(Ù:!Õ%0Ö!¥ïUÜë·Ä‡ø0è/ÃßÉ›­œÉâÞ²žœÈKàIÅ‘V§Y)Á‚ï’Ä»taÑÉ2gLƆ’:%^®@ÄL( œ°9çâëL£øªÅcÈãìË@Y…U™v…„(ÂrOx+‡^5Ôf¬@×Ä]I…ÉO-Äîim%Ú
-«݈Tiè¾®“‰FK÷žÏ­0Æ •ÇÓ+‹D¹—ÌoÚ¡ˆ$Yd2pR+ú «…1l.Òö?-‡g±ÁYYnYÉÈÜîf_ï(¥¨
-ÇD
-Œ–ôtnÄ÷×áGâþa¼\róÈa |ßaNèýX{;·•sÿí|EQüw«1A€Æ.K-²XUœ¢²¢ª×Ÿ¯ÂèœÐü¢
-’Íg&QÛDL…ÚÙÎËU²ÄD-çf¼¤$³q!ô÷‹‘¢ªŠ+h¿ ;‚’ñî  ehHÒÃ:ç®S©›5—•b<@ºv2kÜ=ú•‘ $xÃçÍȲ2fvíš²<"‰’ÄïÅcÒéHå­ …ÇCv¢½ùŒ rßp²ø‡Ðñ¡<”2¹x¬[éãÂ0»ÄwÛÌëÀ£b(qÔ>+kòÎPÙþÈÜÃLÅA®¨‰Ö
-œJ‡¸7Îè]ÅàiÀÇLB+»]—aÀ°èüa¼X)
-IŒI4•Ã!ŸÒ©ž¥ùô«š‚ ®Çrâ3QIP< Óhë‰*ò†˜íù-GÈ2Õ> I¾lö«î Ô\
-I ª~­¦ XñZPIX
-À„´^EO
-Y R¹¨w ­ÊêÇí„V­¬n 6ÅxzÉ+|.µ6¡üßÝT–¢†cSU#Z9ñÚ’ûTFBדU ´‘ØÙNÂþb”ŒÿKìFq©›„¡¥Û3“¶
-HÖ™%¸1 kÝI‘Ô†À$ö¸U™åî9k;,=¦ÿ3‹§Yþ³r€¶DÇ–Ö“Š¡nõÑÏYNÓQGLš#yr–89ßi_)¢Ï½¥½¥h™šÊM6ɽ8…Z>£ô’%¤¯‹®ßB¨„RÚôû-Ù‘Õ›\n×X› nöøiQ5ˆ¹¬JX¤ÆA#H֌ī|°F1n6·X¡v’r‚à¯]ÈX”p7œŽÐâ¿=ûï¹_^Åäq(F·‹ƒ˜0P8·ø%‰Ã­÷¦ÓmW„÷’ ï6…åd•ñ¹´N›§ÒåaZ¾N¢ÏÁ -K£‘ÎÎt*qøË3~·ù¢¥ê¨ÝÔzã‹Å×v¢’dlZC‰ª—}ÏŠÊdè¥JQ~2`?J½ ø±Ô˜·¬"se½{zÿb0d}¦?íäTíqÄóõ=ýN;˜¬6rq!%ùiyõsø8(ÜìöcG€Ô%™)Ú̹ð¢ÛºÅˆ ]}æW*ý+Ìð‚4(!Ϙ¥{šìºÊË.s"ºC¹h-cG`+ûU¨IP©F¯aWMYFÛ©a©0¹ók»
-ð@ÒIVöŽJ8ôØ9ÕÊ27/ýÎö3äM÷?? %”}F˜Ø¯'ÐPÚÊZ8~"pÕôrRééRDššó”ýét€ZdJäaˆI¤@Jž–Þ€,¤‘=ÄúaQZÌ`EˆÛ Ä sgŽkÛëNs,²Ù9ÑÃr0óRO›
-æ•$’:ãåBe— T€D®ŒµAfA"ÿ´@€Ù’qDwdù’Õ\p'ƒL=yH@â8@ÖU“ÒÀ/Nnóx΄¤Á~¯wlH1?…^Ñ 4Ÿ¹±åC"sî ålr.Ê…šq¸ »H
-¿
-Ž ¥ —
-Dy= Åf{¡lk“#ÒËPµ`
-z¯q`2ÈhLMÍé°X-!Uø#vQÖ½_L¾>ËNCX¹ŒôÇV£¾Xê¿oMÝ:•ùr¡s”@¦ª'õ]ù˜OÉ
-çÝÉuyô-ê¢ó‡íÈ5êôº")\õEÓâ'/Ë"üB`¾5b„¡ûàÍ€¬3zEjrL¤ör=
-nâLb¤Ö±î}€Ïˆ”&´¬â\Âæ¹Èõƒ~i•’ã”Á••W¶Ù2âa¨Ì9)*‰ã•ø0 </Í’»onéNÉ”Ø^}õ"ñmÚç òùñ‹»2Y|eß,U’ë1‹¿O [ã‘”òô\¬çwDµ×nÕì³Ôªz6 ‘¸„¦¨Ý-Åd K’’Ú=Kþ´{'}sðð{Hn1”É«k¶Cj béÀÏkJÆJaå©a‡þ7Ⱥ
-"bAÈÊÃ9Q3>Á,
-?_0Ö9ŽÚv¶ÓF‘ŸEZ Òh:Ç1s§¢ª6Ãq|Ô¯j:$å6ùðƒÓ„˜ŒÌB’mm$þ&P¡õîŠþ#<¾eåâÅ¢,3u[BZhþ4Øê¶kˆ`4HQº=ùƲ®*‘0VµFíÐx;G¥ T[€C¤]t’› ø<‚q' Ç°°Ž¤}#J’fþZÜaæ»2Ä”tt²øVf¬’€ÛYMW‰í§1¨
-«ÐêfJ$´Ý6(Ð@Wx±KuÊa}Ã.É3$Í«ÃÒ… T-«ÆÄë" ˜kÙ1€.RR¡}b) ÂkL‘3<B_¼
-HáØda²aÂgÀ ´¯õö€¸dÏè>Æu²nÈغØ1ãß‚l @Ý‹v¨f3|Ä$MÁ;5uë‘œWâ<kj€Ü8x)k‰rcš!‘mVÇÄÀÅN ¼¤¡Û%óìÜüœ „!™ïáh0èÊ\šð)\p›ëYÕf³¯ºƒhÁ…öpNïr#E¢YŸ ïÉS¼Ààe¨a“ÁרNÄA¨úÏ„DŽvæÈ›_ÿ|¸JeÉìúÉòfêï¹É¯B~ )xk=4ÝJmQ{Œ«^N¿%¿-= ¾ç¿çŠyÛΈNj^äâ‡{˜K¶8@l»•¶[•‘ùáä­Ä#v^êŽÿ1^&Ir%7=Aß'(‹yXSKÝBfZ5ï¿Õs
-A8«•úIŒßîW±,†®-^õf9Ú!XíS´$还-oIìòL;ë´:îº0è©?_|À‡?eAŸ–ßDó
-óVôŽb·Ao
-ü õÿþ•ü‹Ò̲˟0TtË/•Å‚¸1·µþøõPÄËè=ƒÖ~X ûЫ2aD=™IÖlŽéµt͵´‘/øß„‰ÉJû¨,Óâ?d¤ú°sø¼ck±¡ˆtÙ¹æ™p,à
-?‡'‹„jË—ÅQIR
-Jè¨Ô´ç!Šw¾ÁaaFÐN òãNZ(ÿÝ4™üPò ~?áÉd<Yø(ü/_0Ö ¨¿î5|
-¾š|—-¦dÈ÷×£HfÈ|–—l¡õ¯©S-’Âxø,_J ŒKX®1/(_"…Xm;çÌÃäv ƒ¸8•Á”Uè<“R˜—XåYŒ› Žºvm²/^ÄÌ@§~ •ìsÕή6Š,&·¢ÑpkÉ,ðÑ£Üëð?Lð02ñ`GF?šïâRòèŽv>˜ÏÀ,8J)ÙrC„•Þæu÷ÞJ|Ëg'"ò‚кžÃ†Ð$Žâ3[¿~õᨑŽ<Šñ.›g1Í÷Þ,È ™
-IP )ëôoa0‹}®°`Y ‡„ñ
-—Æ67\šJ$9…œsQ¸ÀOy¼ÕHdJ¿7+|VˆD
-ÿ(R’3Š?&E?1àËú2& 5FZR¶ÌÆâ`ePó¾Ùãe© 2QT
-s.´‹ÙÅXü ÷à•ŠˆŒhÒ4ÇOQÀ!$Ç  €¤õe¼2ÿ\Gžn‰‘o.ê„'ñÄÎZPù­DWHð12f|<œÒ”)¹ ÷1¯oš_²·£bc]WmÜ€ƒR–¸ˆÜ©
-
-½Oq-¯¡c»”Ç1³)¯èÒ ì~–O%4Š ë0=;ÿó¯KÑg~Åò;:ê” €Tdí!$0_n]?þ~(¢5¤LÀjZEEZPíægõ¬0ÿœeˆ—ì&%S¬¾øß~¶Š'ËŽ
-†s)âª3r½,ƒ_Õ-¡t#Žùô­ë+ÖßÎbø„è7ç&yEt`L¾™D¿ŠŠåºv=çSìU–% ¼´«iàƒYž¯êä0 ˆ&&ª×þBuÌ ÷n†â(ØÞÇm&Ñ38®ýÇÍ]øOnéß橪yR¤|íq¨ôLÝŠnŠUÀFIÈ{Ò¾¢÷ëT„#§K0ÿǽõà~ÝiårK·e¾•TÈ ñ…=’ÆF ‚nÖ!’Ñä‹ Ûå%(rŒ*Õ
-j]m¾‚-Og¾:B¿o¦èpc8÷
-ã<Ä9ëø¼•’=W>¢C½bñZQ≽è2‡ç?Çl1Iõ‡pÖçXE+èÃÖ[ì¼0pÆ Ï›·Øv̆eÇsƒ«y
-Ø… û²Yû…=øEI³(!,v³ìËPOÑÍäÖº¨¤sí£„ÛÅ"ÅnSG΄úC~÷5u
-²_÷¹Õs ýG§«È ôÏuP·Ó#Êûš%'/TÏ*¡ãÞ@£ø¾­­2‡ÂåÄŽ÷l5ŠqÐÆ}6‡_‚5-&@ý±°zؤ\Ýù61ÿ2x¿Ìèö>£¹­I@%¤uΨ©rÈ<»´~-ê×dý9=Û$Y¾XXH({¢ÏâIbo/Ù#¾ˆè)}FAêyÚż\ô©ÙMñcZpÄ_)©FH@ô
-¯i
-íÃÑLN¼h§ŽÕ:Ús¾TLÕZ¾Iåóü°ÌÃåõ`¹¯×ÜL+»úˆ5ƒv¼ˆÎѼý~9î¤bâ$—Ô5Ûg†sÕ"«ƒT@–5}˜Øum¬ÍHßÇØJ‰¹
-Ï]Ö{;íŒ,¯­p å1uyÁêEŽD¥çœVȳÜÉjPTIü[\ñ ï™;·sñA¾HË9qF0Ö:@Q3B¾’¯ožò½dg”•äϵշ¢Í¥Pë³Wy]‡'ÇÄé ú*9Œ<ÞIê[m1b†YÄ;ŸI•%Òí™ö?,oø.|ù¼±iJ.ãeó¸Ôè{Qa5MÙÁï´Öù”QßK>iã¯nõ©è÷›þŽ‚A†Éí æl §’±B÷›µÍKª©oÞKðã-Éà9y4¹Ç¸ãguhß™ùf‰ÎðTeLžW;÷¸–v<ß+¦ü¢_W!æßY}`½PŠVzI­•%ðÉ°¬_ƒÜàëb ð’ÈÕ¶þ?võÈ€çW=‘åôaŽÍ¯^¥a ‘a$ê²÷ÜÊÔ5/ ô™ëto,o¶ÿ1^&ÉuÜ@=î 80ky©[(Â+êþ[¿¬*æ':ä…öW
-@×EsÞçø²Ï1LÉ–3G*ýÃÕN²@O†…_$êühq•(™gÎ)ظáQÁ\ðp›Õ¨DÈ„¤ºÞÆäÕ×Þ0y[²¸õûí1râi3HH8n¥ ˆ‹…Éš¾OýT&{Ë {¾À­ÑS öô>`æ1Txˆ2•ŒGïW×yfš4‚Üò`ª+³¼Où0¬Y€JÇ1t‘øÐÎDÙáå«ÌÙ²b<‹FÂÃobµäÔºÞ눘ïf¶Ù¾ã¦"'i«;„ÉtAÂN
-–ƒÞÉ™i$©Ü»‡. eP-3ÎeÖ $äÚµ of¶nç(·Âô¥œ×ÀäÌQqúk¨€ ¾JÓ‚¬!™UÕ¸ÇP>ö‹Z9,]µä¬<)‚ÀÅ墛õÆG·êM‰ºLÉúhTÉ„²Í5X–gÐ;ItI£«’0®ê¬^SÉAŒ¨gŸ`X‚‚ˆ$Y(ÐÐ`a‹ÂD@˜™èqËÌ[qD”ý&cNL,•a`[=„ÿbç_@o 2“ÜÁ‚Éæ5
-äÅp1«ø(–ˆ)'E–ä_K†•2Ç|±†$ fžŒ¡tòŸpí1óòIF(H$[#×N(ÿÅ~àøÑ!½ˆéƒÌ€ß„ë/uˆHʼnx'Ü:Õ
-&ÍS`+b+6‘`‘•[ùí å!XÐ äÇ·¸«±ùtO#€ÒxÓ›ÅXæ÷÷Û0zyI«Q&mYó¯UÂ#’}k5f‡¹Æö°ZÝÔµ²X'‘ò°#ÈÀ”1*å¶O¯q¤ÙÈVÏk"êJcLì+þ
-ÿÊîñqÒ’„iè/åbCy e¿@ü¦Â¿ð!Eãá¼=-†}˾~SÁQSñÎNý²2º©°öG,è ÛR¦"¡-;‡€q@å0ÛƤ°œÅ
-Âuo J#㺙 =³çÍNþêk B_²¼c>K5,¸É£&·¾€ÒdªiÙ.ýºU°&¶ic0EAÚÜ•Q¹ ]8Ç §.ž§Ü%;Œ9®)É×÷µ‚¸†x§»'"gC«‰WÁ‚ÓØ$1fãh¹Fè0¤§q61¡<üÉ8ö-S©,ævNÙ”u„Üš³Ïd66ËÔ
-ˆX ÓZ{;ÎöU…¡qü&aR[ü Â`†f}ÓÚÏ]Ì7Qzöy'yÀHÐë\7sa…
-1»ÚÁ P$ ‘è±P+ĉ6×y+Aˆ5x¯­°rÍ @8qÛ/¥\¼Y\ÅD°çaƒO.Ï 0Æff1Íój € _rú¢«€hÑÉoYn6®š
-·L{_ñžjƒ¦Ö õs(6a^bñÖÔF³}ÓS¶-Fy#S+±
-ŠTϦgĆ7â/ï'åäÞI}z=ÏÁõgÑtÏ+ñYØ°•5í)%ËÄNf}Ì÷"¿ºd±)ÕàÊÇF %®lžäÊÊÓ—4Ë€y;B/ã£_'HÜS×8ž•…bù£Æ¹ü¬÷t…ZAê Ò3/ûàªÓv¯œ
-mïdRƒtV‰^°ñz>6þLl~…lc\|þFg§¸©oj¬}c³Ç1EŸ@oW— 9ˆ·Ù—¡:D†¦1>CÏÆ\j(£ïfð¿öâ—ÝTdá¬íå‹¥bíd4ièIsô“DE7²CÒVŠ…7(ÇÝ‘ $Óô t@ü„ó£…vŽ¾’‡¨›µĸŸÔ,aAõd8¤R¤Àl??&g.ÎO—ÅA„qÏ”8 ¿J©&#\™6曧à“îK*ÛHÈ’êTy_Rª_‘õ­»€lu’»ÂžØ²ºÈ|á$UZ›g4 ä;l,†¦ÂÖ£Æ<c9¶‡øç© Æ”¶C‚uÛ1²ï¬Ju ’þ·0bp•r€ ¼þÄÔ7s„@8
-Ÿàå“hOdKÛGì™ZŽ¬V‚ø‚J²lg4;̯“µ+q›ÌÚÑÎz:þ™%Sg¬ô@G1[²Š+ëÉÕ 8>ô­ÑÍz ŽT”,Úny@ÜKžÂ%÷ás΢BOLIÕ¶
- D?08!hðfˆš9ÞÂ
-"§ÅÒG\ÅfÀð¨Wµ¹hÈ ë¤êçàäÂp3j³spƒJkl'»´Ãmö $4˜•Ã’2 }=œƒhjÍyr;¯ÁÒà„èËg¡úU…•¯é˜ÞÆõ;cƒÌ<j·D«X¡4ÀB üÃùQaÇÿB¶y¡Wò9†±…mi™¢ßZ‡&ûŒ¾9ˆ=•’2
-œ‡µ·º…¯Ô÷ßúý`°`e2òª%‘ÉþàœÉ^xm¼tr„¬f/$wœJ©5²B¤+ ~ÌŠ7mÇ+R€ÞFr¬ÃÎ!Ép*ã[:Dô†oÇl¬«ð°ê:¡,·ˆøEð@/·]’¤Fn³m ó3 f8SÓð´iì4x •€X–¹ß®þNÀż9°ý爛_*@”3?ȺJ”-Sæüpt¹Jæ÷RJÝej¦AÔ¼ï
-³×¼xq(!Ù¨ãÂW?›¬8.˜V¼Y<;ƒà‹‚ÙDÚåZ|±`6Uƒ0”v‘ù6y¯$Kë ”¬b²K ÌÅ`ßÆÞòËD
-³÷Þ%ÏÌU˜Ë6lEˆ˜-ÛÅŠòræªîp»(¬²‘?‰”…Ã**Äü}29È2 ¹Sªg ijŠÏ˜
-©û“¡ô~*!
-‚!ü@08§4)›ÜÄû3]8c3A(^ƒÒPÁ½ ÙŽ”¬/·Iªâ¸®2F6¹$IhÌ#ZÄx„œaÞ'Ñi¦
-Œ˜"yiAaŒ1¦éAaâ4‘r>k“œß†2Ǻ
-B¤kx€ùfQHŸ©éááLltBœ"³¶‰g2
-ͯ"¨dˆí˜0€ÀÏMvwnªmÚî)u7©:A~øÍ¿~@'ƒGÓCÒX’KRùt
-rwÐ-È1„P&~-a÷Û1ÉÁ4Lç!ÉR%(=ÕÎÇ$„ƒ>`é’Žu‚[ãOô”ä
-Î$(+Bu%×Ã.ÿDà Î"-öÓÂA—ñµ®ƒVrÇúÂt`¸àÌ´(¨-eWªD ÔèR¶Ô;±Äƒ×õWê?ŒA‡ܯûÔË!fc#>Ÿˆøý
-¢®h&´-{Ëá\ 2hj€ò)Ò”*[’²AXEªÅ´e‹‘‚0T"ĸùU5²Œzöêçà šÀTÊ(
-oëäàú¢qõ”‰N%ùMÚx\ƒåÚ'ÄlÙ1/´Ã¢È©
-çewAP’ÙÎ,ûvCümc±´ˆ8c¾ævHÅ¡šcR~ÂzbÎxÂ0v+&ô%†yúØu‘hÍŠÌ¥
-•Á6Ì̈v"@!ùÅ»M¾¡ãÕ†’" äKžiWDÞØE.wHDí3™—þ³Ø68!žÃzÚX;h(2ua³ÇÇ0D,%Ÿ›ºC¦Ø0Åf6ïÃy%¯­Èœ!NGËÆ~w
-¬3ˆ Ÿe_…þ%ù0~½¦{i ò²æ[„Úxa R §e-/[ÂצTéù<)£°öCŠÛƒõB? ÖM×…:£ÄTÑå:•äÜe:ÚIpÖM¼EZ‚cx7œ\©œÊÍ¢uFœYM™6GˆÓS!ƒ˜É•R‡ ËRð´â&@BU²b§tR"4.Gä[I¨a`E#c/Û4‰ð˜¯Ó´jg¨1ï«È§ÒE¦¯û9ÌGeÅ‚ŒµƒðÉ°Ó!²H¼ÝLá(Cð겕Œ=aÃòô›(íÀuó·–³î« DÆ…ÕlÉQ´ÄðÏš¤üJÓ~SágZË^9ˆˆ07»Ï)$ òQêaºläUäÌ<@¢61“3ßWý¿µX$¾X¦Æ>u×}Cä6B ýs5.^%å¹Ú'¶Š2ËJŽåÓ>]®ûþä›Ö§ßκjÑ2OgH!ˆÆôuÝÓI Š—4‚ý %} :\w{ßG “›Ñò1IØÓ¶dô3ÐÁaóôýë_
-H‰t—Mrœ9DOà;è£à/
-)³žçŒZJé#š÷ƒ °^Zµ6í z”Jƨ÷&¾?[”säÃûu¶Rûòq‹OgwOHk“gô5ËØæ­ Ã'ër®ªÎG„È'ãÍ9%(eSá.bøªm
-¯ZúçZ-Fèª,_ŽÕ–í‹ÀÔº†u}˜n<«xeû%/Ü¢ÛèY…2×´ÑÖ(¶!ü¹yB¬P›³÷y¯ò.îv"ÅRª*<ˆ}Ž­A‘¢Yæ&TXŠPÆ<Wír[†%û&‡¥æU¶9}ÚI,^´¹˜uÖsN-«ŸÚÏ«èÒ0ëR³ù×ñ HSüÞô‚ H[óï}÷P§‹kãÁ‹Sæ§üéÀU•1o©àÌAÿr@ëÒçý´Tö-¥™1Ò­¢®y"ß7ÄáK?S?„æù”Qëˆ1ÈÆÌpç4Bixöðæ0Š57¯¡',ôÿ5Ô¤ÇèÜÑyù}ÑZ4øyÎùÖÝ‚tx…­>žDB¹S7hÑçí§¯Zë­,›¾Î1ßKUÈ$o’°=
-ߢÃ|ñð"ozРo+ù$aGŽ^e˜ÌD[‹œ÷þòE΢ü%•¿MGƒf;ðû ¢èëÐâ(?õŒ‰NÕz&É7Ðis(Y¹ NH ”z"#ˆÐ”Pë8ˆ9gˆÚôL$Kg%ó^ÈôÅTˆ)ÔÑ“îÓ«SÐ2ì@}R"Ùi“÷ õ+ÃE|Hé%É㔧 .~Œ—à ¾¦H?ÇðjG™ƒ:„·å Æžwö¹¬Ã[Â!B[B9å%kjŸ’©›Ú¡iErŒÎ<FÉw4qAË1ÃÆž0 ¸µ †¡~   ß¡I¨èÖ"'òYÆMõBHÄçǯƒ¡Žê‰ÑzF㢗„ÿJUëš\sý G|R3ÙѶ%ÙZˬŽ„¶6RT“Ëâìb&3Vf‚(£ªY.—}¶µ•9’ù£¿iìF«HCÑ™&(öŒHŠL_< u°7ç D†ú">½&„.+ôh/9Å»ñb˜ByâM¿Péñ0§šdPÄ‘kzèˆNlõ.ÜŸe ¢-<Í«3€£x3!šl Nä¡Þ«ð
-ŠzÏ«PZEOÅ&ÒjM4gÒÂ%)`
->ÉŽH¡¶#`FM¿²C)yÑ"YòÑ£‰L~X„GIÆѼ¼ŠÉŽëìáo (=wëô{Õ ¨ð(ô™žöxN¡w¯aÓ;H£|Ì`êo®*ˆ)&&1]R)I.Å#9QÄ
-¥¨†1„O˜UÁÔ¸³èD{úÓ0;ëÍ9_ìø3äËdüùæU_@¿ž ´‚fä2û06qÞµÝR…þãfZuœ=Ÿl­JEWII± ó¶žÔŽñ ™Ì¢#w˜ Éü>õ¬R›ë®,)3c‘ ëGqHe
-¬½"Ò*}¯§ ul<ßÛ™UMŠÀÐDgH!†.+´?& ³ƒ!4⺿Š`¢¡(GËÔQ£¥‰s8îO†B^ ÍL[ø­í|èßÇÉ@0êSzlÞÉ`‰˜ÚeßöÅÎKjû'ùÓgÜáO\ÏÄ1SDN6â$ó¹Ñ´‘WÑ‚D‡ñyº£øQÇíìs°Wˆ Ô#oâ u^jÌÝ™Oïžö S5W Ήúã)¹pàäáµØÓ£´önŒX;×Í_ÑDvrvwÉÙØ{¼jÝð38™]”ϵOäÓ)ݦã¹I{ÿ£Þ5·D†ì’g†ð%’Z¹‰Ñ˜ÛUäriLà‡Ë j" ¢))1A -éǹò ?t˜wW&- N44¹9ÛƒšF4Î|ö^7‰ûkAPø¯™s›ùN—Ï­€œÎòÄÌ®c§ùd•àpXtj±$z®£è2Ç0ÊüBh2¢ïxÏ+@xL
-‚ô(öþû;$K°î­Ûv8LýUEžÉ«æ'`žM¾Üùf~½„ÉbXÐúã’x‡AÓ¯J$1, ‡­Ï£¾É|L`e‘Î_ÅkX+˜é†…©¹ó_š×£}Z rþ=Xûø³Hóp’`*§È4ÇÈ“Ðs’§ñ)ÝÒÅc\¸C~ý9 4€`‚Cá·0QìJ6ý+mâ c P{V—¬è’õcښ憩Eîj¤´I8-ì(×Xí(ûvÐÈ?ô0µFj,îê~—ÇMR*›rHôÜqÒ/Ö탭L!/²ásÙô}¢ë’WÛ!/E"‚Ž
-´’y„ v
-GÆfáðºêµ%‹‡A¥ìaÀw©æà„ü¤¡TЄÆÁd€!K«@~ÈGtŽ Ͻ§/)Aë¾€5
-·¡”-÷äßÁ¡Š˜X”%ÌK<%÷Va|,ÙÛé,ðW¶îé‰È+VH¶‰ëM *†IÂD¼¸vîáb6÷¡Pss…
-Ï€/Ò®YƒpñzL“V‰0,¶¥éGD’d™‡—~ž…©aÕ
-ë”`dz÷+oÄW)…¾G‰h8kÛS>2ã‡×þ*lØØX
-ýéC¸”žˆT¢œS”2{(ŸÒ Ô΃ǥÄbŽ›P®?Šø%<ÃÒ?>Ͷ³{‰!+†U×ÕæPÒØÌ­\Óß</CÒ+ˆä<Æ,á6vÍãé$JÎrJjrªðÝ<þcã
-dÄ»dÇi
-ᶗ|ƒºœ/:€OÝ»ÜFþ9ÛOÈc{žµC@­Í_=•ªUà¶KÊs‰£Åkm©dÐ
-.SŒdÔ.å1:Ö…™ o¡õ\ò{ 6ªuK†õÛ@' ja
-†F;³‘'üQ2ŽÂÄ1L<bËÓcÌöî½Ùò”ÌËçPg YæÀJDÉžP œä<HLiioa@6—Ç*y ‡T´iè1"p[áHÆŽ„
-¦~Lmhl†å,'ýæ÷dJIáÈ_Þã9ÞRÂ.E¾ô¢ØK+ð+(ÓûÛÞþø÷[úö¯¿ßþøï[þöç{ ƒð…SÓâ—V „¾R‰×{ A
-2ÔTðB|Ú’£VÏWÿŽÈˆü;{W¬„› Èä(82@ŸšŒA‘ºÛ—u9{Qg_”K‹qÐl²8…~j˶—À$S;Îè–•TbÆì¨ò67üX¢£šì
-û« ×_}‡¹ªu;wã2J0iþkÞôÉ3ÅZYrõxx<1Ã¥¨'^ÙÕŒì>B\/ž ˜YE¨ø/÷§Ë¨Të¹XJøÀ”ý@Ïûõé%þôÇ>}çyJÖ.ò›[Ktho¸y1iŒô<ÕÅ/uÚž¿]ÐU¿7
-:‚՛à bÞ{k„ň®¡}Ì»,ˆ³Ð v‘hã:Œ‡’ :eXÇ=Ëõ;
-U§%°ÈHb¥ü2ôîƒàˆìî”K_ Ëi«‘µ…ì3ß‚9žk>^Ô
-¼Þ¢«² ö¶n>ˆ@Üî¸ë/%Ž v™¾ÓÅÞúõ;@ŠN ph½„U­,2kí%dÜ=±Ã#®%‡dhXjq”TB¦
-–qÔ+éñB  jŽ\°›¶š‰£ÐR¥7°Úr0<ËÉ] «qžúliɲ~xDù€æv}¼à/¸T´‹Kã©Øi–…›ž²Ÿ=”;&¦…†`[èK»­K ÷?ÆË丒¢´²@A‚ûyæØ^ôUíÿu^‚¤4ªb…þa)  $rÁd89õšû×¾×|¼r£ß~qz:q¬à!ׇ‹ß‹ÐžÚ›ÈüçV³ŠÔé·†’?SÑ+E××¾ös Ø’Ñ¿@¶·@óŽSfˆ³(e-}ÌÂcå©2ô•Íp…×}ÏuÀ!¬<:4¦÷ þ&“Å/®oUËK-‚rEè=þ*Ó‡U‚G@þ'¯s(&+`Q`ª7ÍÝÈ”#šâþ¥äƒ#¶)(W–öpS æá3®Ûdƒ@ëk^‚檆 Ü%ðØÂàvÖ§HLƒÏÀ[mÅ‹=(#Xüò
-1 Ä@'ÙIÉi7axÀjv*ú˜E\u(Äá»çÇÐm
-Q§¶5-¡žY ž' ` ˆj$¶`³~h#)ºX?òDš T`Œµù@ïE²4 A®ø@OEÅoè5æ>€ÀFç`þ*[àm–`‡"­`àu•@æÔtNɶ鯡‹(Öii e«µíí4‡›àý(œ2ñíß_È…(¯`Y`½rBÇ_/"TÉ41N£/$Mö èu­6‚βfÚúª`Æ0Z«‘(¤çS„zTEØ‚™\k:¢{):Ÿüp X×ትº-Dú¼ )&·f»·ðØîâs/ã].×0Àë¸×ü~¨©] Ý(qV‚*ˆ¶¹Ç"î€ãŽrÝåM ¦ƒË(FXo‚Ì"Žn„¢ wܳ±æA,½zúºü}fˆÞ›»K$j£‰kÕÁŠ%"«Rý ÉÄóòÁ·)ý8m#,`@r˜yq'µžÀDÙ(³;Žb­Y`€‹¶uà‡ŠŸ/R?•$y ØâÖj„žÂlSµ¨ ÊC<Tqi5"ìv‡Æ1‚pž—I)ïjF- ¤9vî%Ù]ð*RGƽ½ne¨4ß|짢
-!5©»ò—Ö·â|xæj¹ÊS®±c0RMr²_~3„J+©T­Ýƒ¤†ºãIgƒ¿êµÖME×£nç ¼øg\2ôÛ=è‘@±ÈtR’y
-6ò1möž©/æ ìq„°aY¹Va ñ•V]Ú-´)§±ôºap
-f¼ÎÖØðª´CÏm‡T½éKyxà,œáªÊuñ>VÒ+àÃ"
-ú%äô8c…¡b3<‡Þab
-ºhŽ¨Ç«“èÊôy¯êÎê7Æj¦G|¡v‡{Lå¢¼d™kî˜1]?[Ä9h¸l®È#2‡g,·¡Žù²"Q­qŽ‘Ü$eI®lVI‡–8R\Pfs»œ
-ºa3éòo”˜±dAh.¢<± Nukô¤ð$¼ËÉ”>ÝP4<[HÑB·1‹žüîÏÖ…qŸp ç7<ßg&®›Æ9èAVm;r{A^!:y²YÝsH—Ô 7õ_Í¿ôDËwa˜ÄÌÎa=’ÃZʵ ,ÄãBÙ΀gé êBZ}=ÐZÌ`f½xþXÀÈ1φ0d€r4­´o‘¯>Ñf–KA\E­7……Ť´ZxNúÙ: ƒþ,¶\eó2ðcŸIÐì2ntFñܬf0¼Ó§“‰’6~{å&”Š§Nó):I ïzBh"À¥¢\ø…dcPshrßíMôc"É×ÊAÐÃÌÀ; 6“àp°éóM±a
-mŽ~åJ}•
-:ì„pý&;Ù­\‹%ËäQ©²¯CËð±îîË ¾Ôd È-ÉšF~~î;·­ñ¹œÁö™Ù’äü¬/Îéü¢€Ó×F.g¹Â Nª€RÁ<ýS GQŠ°Ñ?¥úƒ£ýj ²ù‰P¡‚#éÏ(JâÄd
-Îf¿Zߺ9ÉãEPÞê/x\«¥…
-õÇwF³•l¶+ÒTG{+:ïãE^&ÂB$¾˜Ôýx àâüÃûÙ¾*7ÏÙBtÀ¸dðê‚Þrºçé-ðr%æôô3ÑÖ5‹_ðuTù'NOb¯\µp”#ë,h)DV÷¸.ƒ¦ƒ««ça!]ê[æ
-•Ðʬým›âç [á/‚pd=‘ÕÕí: äct·Ê._äM¬«óHJWµSüFsaÚrvypYþn¼€1þpÀäÆ¥"{Z¥vÃÈ(«§›
-.h°rú3Á´>чg£ú(ês†Eà¶E짱ヱ7ëúÍe¢$4R£ÎÿçdV×É­éA×YrƉФªº0°B"Nù±/A¿Â Áã
-,X´™š'ÂDQ`ßv”7ÝHÔšÉûÒÑb‹-Ì@Ù‹…p®@¬4™Ð‘VM›%€—ÒY+À&oŽ¤1SͲŸÃmðnJ²jØ?UK+êÎLÒ±3î‚´Ýð'Œi®ð.¸W¶VÍ[LSÞa4ÄU ß-Ÿs®5  ÷ÙúQ8S‘õŸìˆ¡Áob#,ÙÎÿx!prMŸ(:i$ËQD;X0¹Û€´€RÂ=Ƚ=^mɱ°£Ú—`Rá°DÏ1E™¡sÀVÓ~òPÆ4n¦?}&¬ÝñKðëÊ0ÊŽÚ³H?‡Ô®„úSßsŽÎ˜6GWSHZй¯°˜·ó)áZãÓºUx}£fãÓû…pn™êëlèDE1ÚUnÅ¿äBî\ïP´e¼|»PdÏÒR§Ä–QàiŒú"„f
-G¡šiA¿^ñ×I…G¢ v³(ˆ‘aVì[Ïa?…$O¯•·É~Ð-Ý™4aÓ¸3È"2!‰>¢å%µ
-‚FF™tîºH‡Ôr
--ŠÎØ9SpÒ4TÛñm NšYo³ñœ!Ir>Ec—IW^œƒŒÒ5¹H¾E$­_,¤([߀Xf+m{%lÃœJß¼^ÅpKpsÎk¡ÔÌ*âF2NEéBx<{mVí'ïºþµäïŽÒ
-þrãªí%0‘s'Ôá0OŠ‚ÐÛ.ô |þrDQ›ÞW-Ä  X-òru‚†³q‘d((sdI¨¹’v|X{Ÿ~ÚÔ>„°ühu¬r^—}S„´¿‘i³ŸM´÷Ç1{–7º9R7c ôXJé¼Ñp°
- ]}÷p‰P&YŒÉ2ƒ%ÂÊ*c&‹Åku£ëfîJ³/p¹…K„Íßn›$ãú#Ú4‚—j‹‚ýÆÔ²³(aßöw SèÊ”—k… 4‘­g+KìSZ"|…˜"ײh]}‡B°†`Û˜Ò‚1UKBrbgÈ$¡~.nîRÀþýGÔŠÁÿmÂôc ä¯ÊXtvôp¹Tô<¼-Dyô¦²ÏxIÜ(‚ßIf/ˆ“2SÄ¢tÑ5ä£]&‹xÇï>ꡘÿ‹ÝQÄ
-S©QË©'ñI0É0»£ƒj 5e’úÑ8
-©5xrJ‘s‘WhJFxN6›³á³ß^N 0ú9,O(³1°?\ìÃô!kÛK‘ÔD‹ŸN2Ð÷ÖÊ(»KlZ‡dŽÚ¨ÓZ ”(¯ìj?4ôt Í°ÝXwCÛß”—I’$·EOÀ;ô Ò0kjÙ·èmñþ[½ï
-Mæ=ñÆðòÉÃÜ ˜J·DF~ «#›Lß% Æ;Ì„‘x¦kk&Ž0BlÁþÁ*D4Bíà»l
-ÇÀ‡ŠC½:KËN;R°”úED×ñ0Ë’RçÄŸM®Pb8†· 8 ¸¦„±åÏØɎו"ŒŠû›k½î §Y¤Šu“+^$öè¿>`ðï\$,¤¨¿²*¶¡ÄÌŒ±}Fö‘^ƒ¡0åˆØFˆ¢Æ¼"<´! t þr7Bp„ :™6"Êÿ  WkÒÌOYjYŽ¹¦’QÎv[’X0(÷ÛnáÙœ³AzDP¸¬>¾m ÇÞ¡ü¡YCî ̵nC¾«"“ß*ô‘9â§Ð×*!¼É*°2©: Aø?+Þ›a\ÓXVåf<ŽeèKÎhÜ’Œ"cÀÐMÙé¥h<À`kãþTÓ˜ËÂö¿‘Ä“ãÎm°yØ>ªÌ=@¦ü­,ëH}ê
-¢ÎêàdãÙšueB‡ã
-k$ÞÄþÕy л zR¦€Ÿ‹Õf'áœÓ—«»€¾\/ï2. ~Hë>x^¸š¸UÃ~_ï£Ënõ±– 7øþ²ÉæuåŽÔya&ÃQeÎ%ÈǬc˜X"}3Oû˜5Gyùú
-îx;‡oÓGu C¶ßwÀüBÃάÁeG³Â71Ko±E%2çNùò±ið9 ‹#Û_¢iÜ·SNüÀ¥²hIÇB§ *$“ùçÿå%ÁÙlz³ñ@’?ì?Þ½vû˜Œ>ž³¤í³`Aœ3üÅ+lϹ`¹m1Æ Y÷¹ƒÞÔèëÉ’Ïb¦ ½H’ö«yŽíŸ…ÁxFò`û¶´•)«âùÃƹcë2ãEœAvòd¸èö™YDQ¢,›ªlÃÑðká'OØd©æZsÏ™/…L3Æ5îÛÈñ²+²kÍ P[Âr¥Ãº5àO™§BÍö&_A·*Ú¥ñ8‘bS”O1·ÜébÞb§!È(¢«{qrŒ 8Ôävc™nŽ1ý†lØ:/uªWlF»8ȉÖN&dˆP7Æ$ÆpsVΡà7àëÚvF†Ñb_ºc<Ó‡öÂa‚<÷S³î kŒùyql½$1BÔ
-¼”RA1 ÍÈõä Ñ
-~'·È¦ ¡ûƒštwG[,(ò½á=Qæ2S]1ç¡£¿B–9²„ÝsºŒY3¯ö1¬
-ÑŒy’ Ì@£#Ú±Þò&B‰^võû~õšCŽmÜ N(î9ÞAV“…ÉɽL—S³ÐϳoR"¤R¾4NÆy¯Í@IÙ`ø ³VÝß!—Fýý—zkü׃ÈÄðöÞÆ/ïÆQpr/»/¯/Í[G`‰¼k|)`coP ì °Ž¹vþâ€`ˆÊj7·›ˆ¿Z·s˜­žÍæÞ¦b¼uBY
-OÒ¨Cœü¸Ç-Ž·U2+åAËvácfOiê‡í\ɤ°5H XrÇŸ(rG¥¡QÛa‘><‰© =Ÿ¸™ŠH¢)ÖÙhþŒ{bŸ°½ÝÑÎפáTˆKÎ-ÿß„*UnØav5ìqªÈ@PqZmTï GÛkÔ¨T‘òƒ[s@Wu××:_j°a@»ž0#ñ0iWÉÅÙå/ÍI!h Ï.'ÐGX©B³›Ë+åe×¥&½…'~*/ ¡¦5köÎA²0UäƒQÒfѤׅ`Ï%E"´ÞH£JBôeéϲ œš_Bwzñ ºˆéoÑ…>!?œîÿºvÌûÚÏ-ΡÚ–™à¯P.Jaª‹‚t8ò%ÛÔ$Ð œ¯"™!˜ 2)ymwÆÛ@y­ÔšêÚ¨ŠÞ öˆu3‹­¦Æ—È2Rú˜Î9°K¡ÊHBÊ`ÝÆG—y¾@þØZ}š€:£{ÕB|{ïwY¸b¾&‘iF,ìnjߧ Ñ•îðÖa»|Q>:@õ°7eÕ˜=ƒ¾à³â2Å‘_øwAjº},îÛD’õ@` ½‚jëÊAí«ä ±ŠÜÙ,,9kÝ=&²\l€Ø•Ù6¢W¯õò_ÆË9®ˆ¢+Ð+˜ÿÐ¥”©W rF†Þ¿Ïm
-/‹3$'íP2‚Ñ£’é“ïÔ¢¦Ù¤U!;Á%€Ô¬ÀU ½€¯Eך£.£c$×Iôa V[ß±˜|ètAÆOÝoŒƒ`„TÓ‚tX±ùé}ã‚»yíZB0^èzžÓäK˜p´¡Òûu^ôØ¢Ÿø» ÏZÁÛ‚ò…¿¥S1¯(ÃÎk -š/4‚mGz²³n¾éíÆ.ÙØD\à£d ­8õFЖºÜZ÷籠=©><س¶C‰†äI¸h˜-ö>|3ÏY 5ßË®¦Ë"…ÉKäʳô 4ì=ÆõÞNŠða\‹.ŽŠ
-VÆÅnñï/=Ú]?Åá_:Š:žÖ<ÜC„FQvµáðHlr,fw:d>Cß÷Çãè?’vœ(5 P]Ž Õ#{OŒxQ&Êyþ%Ⓠ“·¸KÐKšù½ñb‚Œq‘rü~„2“ÓAN”vk;RßKß=X z—2™QŒS9©¤H¡MÙ+of@5™ ±ä%’&tºb¨VIVld å,ýê¸^‰rÏFÌZG!¶Øâè¹K”Éy0x£*´YUé,uS‡r[Ǻ²÷ŽÖk‘šß²"iÆ©9€¸2û•àîÓE^¤sˆ¨¡ŠT¢e…0)Q#RˆÅݬ2
-I4BÌg:FDÜ{Üê±ÓÎáãI‰¦€Ag„Ñûw(ÊR=à‚¿Îuˆ¨Õ¥jôoH$ŽùBi2”
-s×JÎõPôþ¤Èº<“‚l‹ ®Eº6ñ³\’—a— ï‹åoÉÊ;rÒdЪmHºø‡‚>.$ã´8ËÔ°`IJ¨¯œÍ<‰°ËöuùòsÈEnŒPÁ:¶Zó$TO—çRýø‘Fåÿ¤åq‹2J™æ¤·NÒU £UÔz5Ä0à vÏöÊ Åì}±·;’›UY_ÁYŽa$윶ú¤„å€Ýàm7ŽQ€£-*ÚÄKÍÇ“X“ FüC\P§= …ßÛa³‹<˜L娄æWó­'Õª>–X¢õ섳Ò"»;m² ŸnÅIÿ°?Tôô±º—42ö24¹='^KÚv±x«Åþ‰` —ígè7A«ÁÏ“ØPM¶…ÑÙÙ7í."¨1>³_°,rVDçÀøXNÀ[°#ëŘ(ŒŽ¾«1$·¸– ÍÄÕè
-PL3iÅ›§bAk €í#1aáÿŽìJ(È:
-¸£+¤/äd–DÚK’¢¿{³õ ä¥dÄÿ×SQQØÁTAÓŒ?§Ö\²í ržÅ~ò,.mK¥ºL±é˜láKÏOK,CÂäÒó:×¢/ÂúñŠúÊœ„€ó–|@ÀóN`‰ñ!‘Îr4E!²Œ-Ò¸†!•ão*æ%¦@rìÀñUñ²ÂB
-Z16&J‡ï}>)ÒË4é1PT0ð àH_Ö¶ûä±Ü•~ó(‰ÁaãÓÁn¬%8‹Æ¯lˆ“ó% Èæ4Èš˜{ìGÞ'}5H§±?º,á 9ãSäÐm©>ÃF}])÷Ëœ|Ί^‚a†a¤U€ÝBø%˜ÖNxšQb„ÇÓN,rˆ ƹ3X=Z9änVwåOyAŠižÓ0WôÛS§ÙYn€–¯~,z˜úÇ“¢.çƒð²â‡U„#âíƥý
-ØöVÛd•.¹yi ÖC~Àúz¸ì0³DŒÊ24\y Iô`4Ò¹FÜÖ<éâU®<yð<`Â8½‘'cäÀ*B' ÉS²uD
->Æ8™*Èëçc¸Ñ¢£ØL_v™Ä ÚÊA‘ú/±•9_ÃTp­K¨÷u†Åõ| “6Üç#xgœ‡P‘°F9‘BT@\àl-»†¥pC4èyž`‚ÉS¹£®=,Þˆ³f{;¹¬Óó‰—ÑD½=&0ój]ê
-Jº2míÅÐËáèF,iœþñ<]
-0Ùþ\óõÎzÝmjE𠛘ÕÈm|{í•~Fh7(á¢Û¢{û}ØLóõ¾f^Y÷ì×Éú6].bIÐùé_ó£ R–£*è!ÓaVýyTÈ®ÁÜíaq™ïÜ—Iâç"½/Cè3¹ö Õš¤ºÂ±¨m#ö³æï‹š
-°K”ì^+äU!±´ã.++@ÌâŸÉf`‡†|ZSû¹1Œ†Ó€„“% Q€TºôÖÄñÎ0®þU‹CïDºSd ª.˜ªKr)áPI;4>ó‹Iý2ñ?w›E©I§tÔ…ÚàhÊuðêY#Ó<èJ¢¼zö,á5,Òe¬xÜ„ÇNá^
-‰Ebˆ8œj·šb–˜~4üK ï²€
-ó[ãœ#w®„4Ñ•àéY¢]-.`€ÕGt×ðØä0æ™®ø`3ƒ¢§p5ùÍ"¼ ¹…æà@Q à"†¼gÁ+û,
-g´¡½x,ˆ—ðB¥¡¡|”ì/6G§å𜠾É þ²–#·A‰ü-öA[-àïÏA–›×’îÕœ"U,èÌþÒ`0$1B—?"¢dñÜ♎ö® 3¸ãÈ
-z“š² çþvÑ“ÉþuIï»´ÛÀÝiñ²ÈÊ÷‹"8€t‰ˆ0ÄPY¾ÐrÚ“ÅÛHtDÀËv‰äÍ99_Šƒ\â<²ÀžˆþŠ@ê”Ý—uµ›GvôC%e(Ú®¤1}‘Ê°»Óæ Å(ô–="¤á*<‡ÐƒŸŸC0:ò…ð;,FªeWuÚ±¹å ÅMº)ILVçÏ?Q” ±ÊHcß3‹Š€L“½€)›ŒˆÉ…“LIæÂð£T<­ž%\RJn¥ç帧4L[uÖ‡‘È€«y‰§ô·á[hÖÕd~‡Û/â» dϳ°-|Ûû‹sGþt›gè¯z†àSwžüÔã¨äǬ>ßÙš¿WN)ü52Õé&?8ïûE‘ž&ÂÎxØQ"\¡Ñxƒyõ"à-Å|ôEã^]7ÇÁ)iÂö¡ê2Á7 ÅƃBÙFÿ(»aK _:·ÈÐ; {å]ègû/9 #È–tx L‹¡Æ´õq>Õ•˜0Ì,x?€Æ˜f. cžæh÷C©”}ˆ5馬zÒkO‡«Á!Œ,»bP‚µíIÌ?®-}ðêAÑÃä¿^á)±bÉïÏZä!Mcr¹gŒÔ2l C‘Q5Ña§ÅÒbÑ$>çÝì:¨iÒÆ#Üx­N0-ËüœDø!4å’îŽä‡ó Øò¡ä³Mñ.ÔÒGxNSòJÍ6¯Û R#Ò¼TÍÝ÷˪šìI"ôu š7>
-| nv¶q6.`5ø#ÓÅ)]ÜQ>d–‚úÐv'Ñêç4°[Kb.N™¬ÍnØÖ]’±Còkù*1ãåSAÆðé&Ï¢˜Ë—çš¿/jøKÂ#¾Ô ÎonÊà: ›ÈÉ?ÓN$–Ä`ˆ„ÝÏgG“â#¦N›^bæ" ]ÍÁñ(œ*íSMXÕ,Á ×åºÃ„u7¬6²ÎH»ÞøŸ;Ç'^²r‚J²h66Hˆšó䀨Èç!½Â˜¯y_gö’·bÜl—0qîÅ
-ò=Ëa/be4û'}f@ëˆ<µž“Á/˜Ã)åܦÀ]ÎBÚ½6Z7Ön£Å0¡»Tи­où†áG]laF%ø,?Xíò†0´<íO‘e$q¼¸ç¢'kuùÍ¢–ÕQåvõëE”^Y&˜áÌ0½JïßPÅ ­ÛDg7g:0 ŠqE‹ÚgUHdå@c¦püÒËSÄ‘ÀghÖæs‡1M™pJh¢HÀ®× ?WVa¼ŠéƆ°Õ¶8ZÀdJƒÏz¥˜$mÄzџ͇\„…kL¥M/°ôÖΧà0XâÚuւɃ\}îX#<þoœWU6O|Ö…ôXÁ WÌ'çTÐ -ñ¦yîÃï›ÐÜš”¢šåæ±7wî€,´‰ÚïšÐhU{¶>Y‰_U䋸ÜÄ”ôT?=Ûç늋ÞyzÍü%žtyòâk ‘a6ƒ&ª€÷˜ìû¹Y•(DdÙh#&„lSÔ‹ åÏ1Hm˜ÐÆÚ^Vùo8uõ1w ðJºK¯Ç†²×XÁ½oÚ}.â•|-t’÷´[DªÞ®!É&F…Ù|GƒR0ÆJq¨ßPÖÖ¡¬|O'¬ðli^ÂX
-Â÷Àæ²ùcÍòý!Ûþ ·!x¿±†R:æÛE2L /{þ˜§èñsE_ïlè__ä
-%
-¡ªîÇ¥)Ñuz!]a¥M¢BÒ¼tOÊ6²òÅK€fÐ|[9*ÙŸú—ò29nî‚pʸ°/g9“ÿ*çõ׀ߕh•t›Øf¦—LÜÀ]dœÒOëd s‡™)G/¼R
-*E{ºË@¢øo~Ù8ŸIÄZèK²‹áyÑvžC»u2BPÚ´7R‚ãchçt
-MAq MŽµâ£²ÍÌ© ;YÅ=ÈK“~~x §ÝùÕ«´¤¼Õÿ
-gÅ0ØÚÂ'²VÏK/í<™êÀÃVC$5 © æž Á+æÄÖ>IÓ7™.üNÞûÐùZ ò·b±b%Ÿ%{¸@XrE!9íNƒ®2Á\|]›sF|C¹¬k'j†‚Pöã€ÇJ,µíkÎS”2Òqbœ¦B¹˜ýRö +x`3yž-ºP)n—ƒ9ÉÊ&U%C²Òpðc´œvûüðASÎÎ|- ¸ƒ”r0ÿÍ•ëÈA™¥ò°ÛìS¹É#a1ò®xƒb(^ µ,VIp-]‹ÙêéYqÙ$ƒ±Ù‰dDj`{tyUœ¥è´V±WÆœÁ‘-â‚›R©SÏ®óiy gѯ}ѹUƒô \LÛ¾úd ›RÂÒ›Î#ŽIÃa“”€t™d$‰ò×f¬‘(yÂçD*@l(`ÝG"Â"¡XsÅèñµB»Ôm›|)_èM[Óyq¸Õ=©$rá
-‹¶Æ ©_ô]?zöçŽ2£<t¼G
-Y‰ ÞÅÜs‡³Ù=wü>žf wá±zú(mÖÍŒ 4¯.³)f
- O(.'(Ê Rå3á°ã ¥‰ùZKч]n.êÁØÐ,XιØý†~£™<ÁeJ3¨4Â`ËÐþªj‘¶oäì„«˜Ká?Õ_ÌiÛjÓ,TèÞaä
->·,IÚ6íúZ Z™‹q¾R­C£L)†µÓ÷ñ¿°p¹9¾[„Ì@r‘mc‡¥ˆ+ãÜ|6TñÉ}·¬˜‚h"[¬/Qž³zÆÛ©çÝ¿¦ áš¼¢ÆÛ]Gú׸Éiôݬ¡ˆœ ÒAP§dB:Ç.KR¸$ß³­PcQå 󤤒ÄÃÌP¶‚¢ê¸-=*ÇŽ«Ì°ÜªÛ»(W±Ó燇Q¨d´D}8«§ʲyúKŠ¢Î‰aN›%¢4Œ{ó‹’¬G¾¾ ¤êäqxûµÎµ7Ѻ×Ó?\^g
-„—+òz¿dÙ±[=ï FX- 4ÏêépÀrá²&¶^¬dVn}Ë暤+‡‚In…5‡¦u)>[ŠÎ{¤}ñ&Ù'Ã¥ü$íRÅÚˆzë¯ Žèý"žrÊØòNÚROcð=é<Qª ±†Á ÁK8ž°;ƒ
-N%gþ3‚äɲ²<ôªC‚t^7 ´cÒn”‚£iÏ’¹à­#Ès2-³ìúi „Õ¢pšbþÁPßAŽ/
-<5`?iàò6Èá tqÔžb¾èBlOquø+@M–èi¯.œ¡—æ !”¿žqÿΖ~-^¼° tEÓᘄézj8î‹ÉÈž¥ÁÂÝ3­œ³|÷Ô‚D[…øˆáp=µõ`¤+ɼ´ôá•ožZ­<cÄŸñ“æS¾yjëö¬Gé˜øT]Oín%(RKú‰«÷ö6èu
-H‰Œ—Mr\9„O ;Ô¦‚
-;<ì
-çpþµYU{(Ù¹µî‚A öTwne<2ÿHÕnnûêÑ“ñ!¼ÿ\§i‡_<èˆ 1)R*Oij¿dŒÊE‘º·z±yr·ìkÞ9Hu½ОU”Ò… ÊTFõΤ8×yÕdÝn@8ªU®6 ZŸ|C¢Ô† ÕÅÕ‘,
-$­¶q¤ áÛÒ§@²çF•ä¬O/ Ï7 åi¨ÅH‘œu•V<„î%ªhnïÜc7ªBå&](`[d¯>è,£ÇXªœV+Ù]TÖl©Fá[‹êHK3zeí„àuˆC­®:=‹(5óS¥IÌƽCV%øiÑ;§*íÍ:ÉÏPíUÝ¡¨©¡tu‹Ã³Ì%ö½K±@9h?½Šü5
-Dk‚Þ8±ÖA?œåõ–ÀóÄùÿ–‚èý WCàn[ž“M%¼:MpÇüzƒ)°¼Ó£Èf;•…$«ì‹ó up
-8U‘jtKcÚ. êxl׬?»LžîB›á› AWÖ,@±Í‡\
-¼¬ˆ}×¹ñ*Ù»­ÌØEóÉ_Ç;,Aø}l—êi7¤Tcå†ùb¬¿¾ã¾Ÿur/Í è¾ËÉ‘é8¼6‰“&]Ÿ˜fCµ³¸@<.ÅDn4é‡>Gv)J…l,‘ô³6|B ½aãPRˆŸs§”–&Å]z}³ ²WyΚJzÉ&“y­D¼”Á8Beßõ$øà¿–¾=ñº=þM\Ä™¢djðoƒ 2%#“`b61ìÆ e©âï0/'‚ʤ‘`#<aÕ•›PXÒù[›çï tTf¦áÇÖ«,à)¥Ë¤znaj®ˆ:yD¼[îíÁ«Æ΂@HsÍ¿)J'vÁ¢*[þþBÁdªÌHYž¼…Ö
-AĶéi‰N>]l=ŒÌ7ˆ¶äÁT–‚âúƒMùØ!—ud^…Nˆgv 3Æw #1ñYm;SšŒ‘
-Ûr"Nd,µZÍà[ø‰ý¨ã÷jüà^ÕÛ:wn¤7Áé”wÒÁ‘cÜ
-#â[˜H›c¯\ÕLI¤ˆ:MîNøúÌá£åJ}AÍyKÎ[£îþÒ]3$%e˜pKFíPBÒ³TC陈~A7‡‡1$†Ö¶.ßÇ|>ßlö ŠFqÁ(çœs!¥šÕ&?ò”³czÉ¿òß“t¤Pv%aó=Ù €ÚÔ×a!4¦Ï^ñ8å…(—&’TyESw·fy˜†æš`‹ìqÈןó 3“pI¡@q\‡æ¥#x1C/׈™]`šÉãT 9ò1caujÇtãyžÌ~0Úÿ•2Ov㪬¶îUsÖp¾[¯PÿUíx@”®“ÿ£ë‘y¾ô‘sê›e*ž—§C·„ÓVµcå8ºM- Hj¦üýÈŒ DrOÜ;!ά<°¶‹8È.¥µ;9¸§ 1eq?ÿw âµ%h@³â'ÈŽæßA¶Ó¹$< u GïZâzmÀÓnǼ(¹µ^@K]„ÈHÄÈTƒqÝ÷û½0ª«}¼ñ䘀t]àèúdêdâê{Òð9ØÁ2ÔX¬œb–¾fÔ«d)&Ýr^'‡½HW!@]£Ìÿë|"†ˆæLK“ê!¦ÿø8¦K†í `ÓÕ—j| ”“¶Øæ »Þð"ï{vÊÑç±%(‘irÏXbd‚0µ )´6zCÜŒ~ù—9zÈÍêRC>bºŠ¢Š9n™gì¾ÙíM)^">ªÀo2þ»ÁšóÍD}®ñ¶JjøÆ<h»œˆ ƒT¢jR dN
-çŽþª” ТìÂzù©IkÑ"7Æ}¥rn“B¨2¢µ. 2GÃÓûUI:„ä c_R\¢-ô=Íså7ŠVI.ô.¡»Å 0búæä«y†R
-»†þÊL„U"É+üƒ‹ÚK‘ëÈ’0–64F~ÁÜãK">"⶘W&£ËmòÉ((,Ëäl^`ŽŠ¢ßåï’$dÚÒ¦þpfѺљë‰1¼’eîôgq]úÀ¤s_Qô8ˆ6ûK„Ž!ˆ‘ö¾Íà¡"%þ/+Û½…uýPBnÙ!-Ø"D‘OŽƒŒ$§ŠÉç0'U}YQ€œZäƒáœ4m• Í4ÖǸésDÐp2Ê;þȧ¢^Û;¾y-ïâXÇh·½ð$¨1 ÕŽ1îæ ’’d§aá Z<œ±EiC¯£[…ZŒ7r1:%ìK|¢UÞM
-(ç´J«qlõ°\‰' "•èQ‚ÂNõ³ÈNø<‚cÝ{ÑÝÿtÆ<¤¸¸¶Ï‹n‰H_ƒ)ÙÑÄàÇcÍåFðVhò¡mÙ¶·—Ø¡%‡0’:§ôÁ_Äaü”îEn¡¡LJޘ™y‚I¹ŠºåÆ9ûUÜvy³úB³(Äp º}e([h@ ÅÀ^€Œ˜°Bã¨EÞ=ˆ«±pÃj¡¥¤3XDiÊE˜$Å2äÙëRË+b}8»²Ñ>R³z8•ëPh©ØÀ¢†@„ay1©÷"„²®jÂçCÊsŠî(Ìz´†IËgٚˤ¢Œ.nh5–ÑA*-„å ¹"—àbŒQ
-],ðÂT÷c©ç 9IJ¿–&ƒ@Ìd»£LÈ눽Ý(媤¤¡ïs €Š^£¬k=¯+“í2êBYzt_½ü’á³e-ÇÞÏË_jÖzZcÛv{È¿^‰ÊÖ@
-ûŒ`žvN…²yU;î½1ý®”‰¨> ó­d}(Øý›XÝsÀMæ6Àv†Àl•PðêÉJð*1ŽWZ
-Açœ7D±F¼”ÿc¢«}14Át+_(&ˆB«0û\%à¬ÃBX¹4\ªÈ«}ìST~ûínŒ4ZÌ;¿ŠFšH½Ìf´o C`BÛÆ!¶Œ€#:=¬þÒ
-³ÚØ4ïƒò}u#˜“5Jä”=Jh®R» ²¢©àI¡>…z+ºáœK.Ù=aÖ§õÒ~Â]âHu (­’„!%©•ÍˆåÅs¸ªN¦<Ni tYÃ1[ºs‹ ,¬d8œbƒ°UFý8Le=¸M¾ÏJ*±Dóô|Äòo‡¹ž^"vÃ]S>â͇&„Òó\ŸÂ7ù/öÒ5~êr£B™¥dß@Ú´XhùˆžãÃ9×™ßnsÇŽóª;oݹ#ùÖc¯ämV>YmX° ã/&Æ j(u)Ë弊ô4ôCW©À“wažqì È
-q7d%Ò÷¤€Ž~WyFI9áÜ\—,0$¬µÝDF‰€Ë
-ÐDÕ.ÙšóÄR1–ß”†á|(ŠÐ§ƒUI,FL‹6ð¾<œÿ‚™}Ìd’±Có <vG( %¢1¯/áU岓LÿžT€W±U˜c{§è2ù¯‡"ä(•i«}Œ]¯5;VO.(¼iöf4Ç»i-ãÃõ¦ÃaÕFA#°[  Bn[…Ý
-"9â1HÉóªjÖ‡ßè¼2{ÓaË»We*XQ,#—,Áõªš-†šþò®C*ÏfU3ŠLñÌÆ!L³ªQgÙÜožYÕ¾d¼Fà7ÑYϬ:+u7«¿/§™ÕRp;L !^Á¢&7Ë0C“fVÐM»9ÅK(6W}ÓH$Zs6iÈ;ì i"%H~õë„‘KDC
-UJ ¸L­z:d›:ã[:“Ö¢!DÞŒ?{&…6SËUj Øà$'ÚËx )>†–µa_щEŽ6‡d˜÷:Ehªuè:Þõ ««Œidýq¹‹ï°ÔJ;ø¾0öm4ÛТäþåõ¡*"èÝ <ÆôÓm[Á²úØ¢ƒªñ\LE6‹M¹ YíéÒ»ŠÖºÓÝ.ªkcà2º<l)A¯Š$xIÞ* ’—ÁeûA¡?èÍ0¹-ÒM Kç×ÓÅ­È-ëÝ÷I¤•JT‚¿ó;e ±s‘²Ïè¨^VŽåŠ,('í–ß!§ýüãœaÏÌd‡vÐ1²ÂÿºîŸwÚï˜ !ø›u-r Š
-[Áþá·=ˆzŸhc›¸¶&mt¿ƒ
-/‹ËA.–‡ï°/Z7¸·§‡Û(¾%m–öáU˜b|ž™¸9Üâ(0pxïàè–؃œZµOº€˜oÈs)P×ür.Ã\tAfÖ{“.Æ ½e1öI×Ú0qÒF$PØôò*ÈuC¸§Û© duíøí;÷¹¹Ýæ>Ϋîs¬í‡vØsXc¾¼m Äâ¯}ÔäB.­ú<–Bóbéô$àÛOmȦ†ê‚º©¿sÚ4~¿ÑbŒqFj`ØmóO…Ž&*°.N&Ñ?}b5Û&Ö$Οeõ K‰»£FØ4{z ¤s·$;Âøºž«´"³GD­ØÜï`òlàý\]„àÊ*¤}aw@N3dœyõÀóÏò.æ®ëæ,ë }¾‰hç£ígYϲè-êgøôäË: ¶/ÂUÑÑu·g=R¦Ü1T¾®«ç¹ã+e ¿¯04ƒŸŒì ;Pyv• çì »æ
-ƒ&j*?Åù¯°ƒ€Æ#ò<|è »3éwaw@NÇù4Þ“Aüîƒßs@!dü"ü »mÐõ¸ èë]›,÷I“\˜èdÈKÌ;4ÈØ&#EQFÌb$ Äø¯’ö¯pH#Ê• ÂñÈ+Àw2-…`€D$IÈ?v”< ƒ-/é©°DÐÇ™ßnŸ!‹ñ
-Jý°â‡—ׇ›nÝûéèsÊ2’Ôc÷;lDÄÊâÚ¶ö#Q™F,kSÊVñ ûÖ
-s4Ńåá;¡A°m,ÇQgGÍlÉ£C¸pàÅQb¸äÞ+7G­1Æ@áX’ƒ
-ÎŽZ6^€LsöµrZ^ñ “ÅÆ'„RßÝRï¯ *«_d¦°¬A+N/÷ÆÓ>F®
-Év9›,iRÌH!êÁ¹Ï´¬üCJ.›È8pc``aäMQ¶] 'œh<*†õå°AY‘$99 lƨ»gÕ–›ãI•©$‹ñ×4÷7$†ÌrËúê磔†"o”Æýmïfõ%Š ÉèË@­0X;&©: AägýÈmm)hÝÒ µˆIÔMR7–Ë |lr"€ðS« “W-´Ãšh ÊÐTI^žìÆ…qÆd쓺lÇÒÎø
-Bw±ÍÔ­í[ h댗=r]·„W =0VÀÂÿOèRÊÔ+P9£Bïß_
-òiàÂIRñ½ÂywÈ‘»“Ô©€ï‡û’
-#w¸Çq [ ÄlÏdîDL ­!ì~A‹h6‡ænö”`‚H—¸>›è0%œö˜_3lÛ°!E[@!Ï÷¢&”¦8ó>ê
-*Úã3ËC”¶¾SÌüÕ~ÊGc"! }³Az¢ü(Òö ¹cøùÊ×LðMjÇ
-[+koÆ0¦9­N)ÐAâN Þ8Ò©Œ»Æ†Úñ߸ßvÊħ æÃÇ`Û0ü‰-‰+üô1Ç£ÅÉdÄ¥¦|uÂõžö„Š‘Ʊ<ÏùCW”À¸í=J§•H(gê›Äøif
-G•N€lÌ„oƒ—KàØ|ü^RX^’"%d9G²HŒOa2¸ yò"ËDˆ‡gûl9žY y5JF…‰Ÿu¸¸Ï¥hdÈ3/2«œÜÈIÁOÈ,k‘yéÐ…P´ Ñ.k%ñ†¡BMúòE˜Ï'˜À1ó¬Ê¸™žÌÞ'Lؾ°mII—à¢T@+¾
-#?F«´â6ÍÑFì>Ö¾/ó€5–ûZKf0?Z<ü½]\fØñÈKX/„ò¾ŠV/CÙÅe’·øA8Ì#_%a,á_©–0WFvM{ÖàVRó‰ù‡Â CWª"^t¿ST9ÄyÎç(¼<âÒqäRn¹‰—á…a”òÜG Ïb`Æúpb s  sû74C!ˆUU×mÈ[ƒ2Ðþ²5Bf¶R*¦¹n¸‚ðA0&G„Iý|‚‘ðháâP%èhjàÃaÞKŠ{Üÿc ¢ƒÊcü÷raÍÐ'‘Ò®ãöêç+Ë÷ÃòeÄLb#uçv" ·fê˜"è—ð’íÂw˺E#IN £­[þ=0¯›†
-1Qû ‡l
-È z,y2Éôœ +‹ÿ+òí;(`•exd,ÙLa±âÎ.øŠ^$¡ùù
-¿"TF»8KWUV_ùtBL8WluA ±DDZŒ °žãæïDô97“©YBÖãvòjãgR—¥$IbuÈ´-/gE)ì;ÜÛ*›­Í[”ÈS¥Øߕ̇¯=û;DGu¼:û —ß—úõ;ˆ3(ä>öedšJJ‡!àÊÐÒ~·ŽD£«¹p@k¢Ñç@=ÄÃûYxJ<|fU‘'ì¨Úõ*üb^$Ø& á$ÆÔuèŽÿ†ªóÙÈ*qbг¶zç~‡.°„ Î?•¨¨Ñh(Ö­fbfi'åuñËô¨kíï“ø <:¿„†ï †¤sÃÁÏoµÈ|3‘øhy‘‚»Æ9ÃäÝÌ?òøㄨ8ßA6IB;Ï÷,L™‚D Q.Hßc÷Ìl©ˆjV‘g~PO
-Phê‘ ‘ÉálŽ´›Ê7pÝ ¦Öùº:þ”1™ÕìñÚPä˜.cSÛª;º@¼ytõ!ý€rVL…R«Ÿ¡ ‡ñ3Åw½ e,ä xÑa˳, ¿–ñðeQ>7,lŒg/ãÚØÔ<LÅß”§J”J¶>ù2ÏÂ(‹Â.ÏK  Ý©–"Ù0Ð}Â^]üÍÃV´)Qའ2²IUùК1‘:€‡ÕÅ“q§÷upï©ó™+1´™ ôNôáŒ'e6L‘_okàïDMrISÞ#jÅ9l'†àªþ‘Hø‰ïà›øÈ™÷I-Má÷¿Ä¿þùöýßo,%¼+yùJh‰€~A„Ã1Œ>(°CÙ¦²Ä7ƒ˜:’Û‚0¯ å€ã ‚4R69¥YD(㽇e¶Ÿv\ÇNcæØß!°%ºÉêDò¡#Sçædå¢ðX›LD3Ä bLÅ'ßë ©TGç´”½¯ôw ÿæIÖþûUÄh¬ ×,>yRWXÁ,ñã8š[ ¸jÎ…\­¸ö ÚGÝ@ÌÚhT‘ÙG]nÃâ@éÐÄ„WñÞ„¬b"Ø•E at­ *}“˜I˜ò
-¬øñ}
-J%º}º@V£®ív¾s%s›+ùœWÝI|©7—úþq ~0‚L5“ªM<”ì>Lü(K1jsw‘†Ü1COçã<4ÂH¬V:ïâG³u5ÙC #‘c“ÝÙÞÓ,EÒkqKO/:ŠB–9d…úñ]Ò
->K·éiiX0,œ"Á‡U1‹û´£ò&2X°J³î¹ (æRdàš•š;!˜„-°g‡¤£Ìªh”I°²|ô]fAÚ”­aóuÛY‘ÑÁXHrˆ{FÂÜ4¶xg+u”È"*ØÒaM•jð|ê ƒÛ´ïp ö ¾|ÅÉ)ƒ‹Ô«eˆ±AÐìÈç@tT°B3uå·ûgvF`;²Û„ÿ¡9³„WBee÷}I%"¬á4:ßAÚ.Aö&<·F©ÚL²ÎtÍ‘°Õ¼0± !­kÞt.¾S&YRjÝ$ÀÛˆ™}ASªŠ²ÚöQˆ6eçg"ÝêD6­&Q•ÊX>Kecµï’ Ó
-X!%ü0H‘ 1Ëu.Q¥ìmÈp+1ü°£ _Š,ðZÇ\Þp-*¿êÃè ìáåyλIëpÙèó• “éåÊRÿ ç;HÄØ,ÿ0–Ñu0Î¥‚yŸ*×’M…^1™h4m‹(TÈ9î%@ÖE3ÔaÍ盓õƒíÔ@B&
-‡SêqÖÒ
-]8bÉ`æ·_²â&«¯´¾«Ì#ki¨ã—_¥aY§åõô%aöö}tHŶÀ
-– ‰ÎËß¼ºÏ sÜK GYð§ë³¦3ð
-Ò@ÚìPH
-C*¢˜ €¹: „Ï¿Q^µ|•àvÜôùÊÖÕ1h—‹ ^9cG¬@Ó7›P^mÅ cÄë@\%&vÁñÖˆƒRÃÄfäM¢™lʘöwX<,\
-L°«ÌßØEYZ+©./fÁ>²ŠŒËVŠ—t¼ÌÌ}KJ~92ZÒÊòFn/¾ƒÛçBŠNã¼;‹'1 É.Ç*R¸9·‘Õ-\º£0œ$ñ›ç;¥Èòcvà7³Ò"Ø•” %ëŠÖÁ˜k—ä–È6¨M?%Pv½Mópd<‹‚¡—w”‰¬ü™#q‰‹ž^çëEÕ>ç·)Å[òZHJs¼†‚hökŠ´Ó¸Tt][ÝçŸáþ]¤E*†‹jä!äFÐË}H=×d ƒÔ­hä0v~RC˜;p¬Kf­©
-]”0Cš©|wÙ¡‡FœVïi_†£;§µíЕu´‚‘âÃ9#møsåÒý|Q¤h€)@mN»)¢9KÖ²^@b”8ùgIcóûЫá‡~ž^åäYÖè^ÀN€Ædÿ;Aæ‚™gÃi´w‡)fñX]©„ÈÇÀÓ<+ZD[ᨾ¹"i:èàëHx&Êc££wYH
-6{9ÏÙJÄFaWGÑ 0CtˬCˆZ%o#o”Jr=+F
-_x³Iä’tF ãéÜ‹_0F>G}DO†¥ƒ"V™Ì^ ØŽ4B}€öª!`û»R#¦ŠK1`;MäùdÜÔxØNî!ãNä!*Q" ßùÞ¯®Íß$É_¨ó ¸>‹$’Â`ôÅn Ö/ÜP ‘ãð~ReÔ_ÝîÀ• „Hø¬åø WšÒ¯4êœ!̘r…
-÷[±ÎðôèËvxBz‘|
-Þ|úgšˆÃd»ûÑ]$+% ™5Yu•¸î°‡ÇªWžÁ‘¡7¯‚¢
-è‡u 2½%ÚÔô^ Î`¼ ½Xx^Þ¡zЈ8Ôâ–WÕ]ÀKD?á4ï4fx—©PÆù>¾3&0ÍC‡HUÇ3Âæ%*±âáí\˜DÙî!õ=Ga€ø yôq…1#ë;ã]I‹ÃâW**’zÂdjXBØk®8êÍcaѧlùÁ$Ê™üßÚ[te(‹ô€2±ö«‡OG¸«,;A
-<O¿·PÂMÌ1Ðy‹qÜ` Oá0€)Í÷?nm HBáôµs#“&ÆÆhQÊkØšóã9R†RÜ ˆ"L–Ì;.£ˆq ¬]9ÇÜ÷Åü&Ð|æò÷Ü;{gÝQ‹ûŸå¼oð­h/'­#Ä,èä: ¤ÐCê~&A†§Ú:h U†2Ǭ¤q[†&yg³«Á@ƨƒõ.»‹g«&ÒËÅ¿3XñI Eïl8yuåN¾ÎòV²¢{”ÁÖrø¥E^lÖq}¢ æ¯Èf¯˜Ð#qqæ™ÎepóÚNô°å  ,¨f=E$°.Ç.rß4
-GdJJ’Ánö‹ÿºØÁ˜ùºÌÇdnóè}
-à}!œ?\_!!8² …-J·¿wŽ–uñû! Çp츻/â§Ì·Ôq¾„Ú#zIÖ0Šh(óV¤©ŒP ×n8€Gœ£é%@ŽI¤në¨D&-/Œã
-/s Jhò(ëðÅœÕ$IþëÇ?QÑÓð˜fhM†˜Ñ×o=9#,ê@…  ¿Šœ*ÁšV€¶jº"''M>’Ü`PÂF`_¡ÂúŠ3*ÁÀ:Íøw¶ fÁ®w÷ ÄŒR¼„ÿQˆæ¬-(ùåÈXüarŸËzøÂÞ6€CV`{Ïm²¬ÌÈ e÷©r‘ÌrÞmˆ–?ÚíÕ0.x­EÇ®æà'S[†t ÿ˜…Œxfºè©võr!ky mâ\†wJðn ŸÄÊåáÈxCG¾™pÑ.³oÝvðã;‹*¿œßþýgdVŸág«d‹Ý)è '‡ìñÿ¶gŠ¾2
-b’ `D A1inØýãŽè]æ·&VÚ¼LŒ·â⻄n
-OÁ….gò,yÂB°z™Ó¡<Á/V1–ÜÕ`šp¢1Ÿ%8‡)c_fP¢ñ§wyˆÖkqÈ€†?µ­]¹”æ‹\·í¡¢Â°6ûPwû|^]&m^ˆŠXZ¨žä
-
-dËg¢ÙvÃmªcÊ
-›è¿€þ¾2–†=&”añ¦(ærÝ+èý;ßädõ¯ÿþøë¼S.Y/c,1ßûG¨šÃô6šÿÿóÃ2q{AVAÀGÕÕÄ\-—F/½€Òâ0 wp;W[ÖKùf:¹vø&HΖnS~VÍA_¯û&(aþ‰SžiƒŒÈ4Ó€Œd§¿ z-ÁûwêtœOFÓ
-¿¦ÈC—vˆ„_mÒ¹ZvIA3‰Ã $§0Õ"ÉÞ¢ÅãàÅÚ†hSøǯ!žÂd6ÅÿÙW%EHÈ}8 ,7ŒU°½´ù„W1%êþ{“–Ê0bcCø<ã6H_›º!³Ž•¤æcî«DRzI­+ë „Ci ËW %‹†ÖÕRlŽ}d,»CH9z‡T)õ‚nJÜ —!NE9$ZcXx¸yC:V³¦B/–Cx%¼Â™Ÿ™ˆøèûW•]d‚év½?€ÐKªORÊ»Ÿ@YLŸã“a,D¼°&‘:µb4§­órôo!¦pÁÚ/Dˆb©È!=zŸ~x¼¾Çb·g4K´Á´<”†d»!»Eyò™89IDSù/&‡¶T©ÝÔˆ;HÒ°”ç(Ç2’‚ÃÅD6\VÑ瘨$ ^–‡ @iäÑâ*"ž"¨Ú1Dø­„;t–¡Íñ°2X½_aènPäj›9Â<bK3"_SRËÐ^ºŽAQÀ›™ÒŠ-íñyNÜ„âÍ# ˆ%_…GH9º)­ y¼Ð1Ѐy‘e‚IP9(n+1•4‹á‡mû‘
-›°Å£š,ñ˜UJ7á®ÙúÏð;ˆ)dšx$þdªýQ&KUºCre~ £^‚­çœÎ`Ù† iÎ’æ–VÍÂ0Ñ•rõì ÃD0>‰­}ŽŠƒÙ]¸¼é¦TÈgS‰ñ
-W±£¬'[ƒ/dö«jÛ'ã/RFã”D¹ÖyÕbá,J{˜ÅmèËî£ K•‚n§üN«–°P f×+¡¬S(OTŠSm"8 7˜Á÷>u‹Üçt¹å•ØÏKÃÚ³Tl6ôÙÃa…—Å~6™$v K}h›ZÓæ¤ù«Ñi5škxJu¥A~9¶Jq㸠6–¸ûz&jË«‰<ù+·Ü Ca÷SàpQ$J%Ô†˜Û9ÚY’æ#×i`,£ÀüdŠ#Õ²Kb»Xƒæ¶Î«Ç
-.U°Å9ôœøY—ܸC˜åÉA¿Ý)›?ô:/­kôÒ¤®™Ýl%®4­ðêV®YÞ˜ \“[Ш(uÈ¡ÉÂîðûKÎ!2jI˜±qޤȔø"®é¤j‹?|¡VßÈ×JØ4Y"…æü
->â¤!É»bèA¸2Ïß¾))äÕ¥_>/ ÷‹€ÄÈÌZ®"<Þ #$ªhÁ 4†áØÁ% CŸX”PÚ™b„
-:E¯)*2ØD¿j± s¯é ÔAZ|& S`n PN†m2]9øœýâó‘F…ÐX¦”e)ÉŽ.0“iJ“‡¹û@™u^më@°]”3S];5i$+Úœ‚e·™*K¿sÜ[Æðo(AúðÓ·8%¹.¢£ Xæiþ¨©á—7SÛ»©t44
-–/`ÅÏÄpÑ®‡sÐl¤«òÅ!/$Ô>'ô"|…Ê—¦uÄÇàn¨x·VK›ö ãl(À©M[Öy´ë;“”Ð2¶>®âKxc5­ð•^ÈÍÛÂ|ÖšRLò^¾
-Â!âÅ<}N_ ;†³S¨³ô įBãPÓz®‡sZíÖ”…Ž¯A•!Ù¯qÓ#ÄÀ}ÈïIůjZ†& ]>¼Ýïj.ù‰aÊɸ,°!r²GR5´2ÇIê`H *¾1®bô 4ètœžK>åùY¿
-sŠ` mÄU64MmÝ!âÄF1Ú±øN™r^çªdÌž†wÆ9øŠÂ]„ÍêÕk†ãu®¢tƒ 9zŒúWä ³æ½+[Ý@/û‰qØN ÈA;º÷ e.2g ï¼yûŠaƒåáèØ~×W].Xô6 _fð
-"vA‡e¹ñ+„-£ *äÈÙ•å'MåÓU0Co¨ rc~¾u¥³³|Ì-ž¥­¯Xü…í´qŒÿïÙ ®ú
-ªpC£DsŒ§sP„,• ¸Cꦓ¡
-!0ÀåÑO“õëðmò›8‘e;̱˜¢
-Û0×¹‰ƒ³îP\CV,“ÙÚ s1“J[O“FËrn7Ö%—}ö¼ìÃYŒB³…uŠ"ádâ6Úù"ç÷1\kQ:Úàßòêt>#tÑÀKϺÓç8ßûù²4OÊÀH×ó)"
-¤gpô†ÔFéù LÌx âgP_üÇ9§k¡ðÍ'‚ø—UÍ4y¤e èq·žâF ™Zë|˜P@
-Nšž&tà·åÞŒ¬‡Ø»v˜ÀÐv«€°]•Õ÷ïA•"Ä+™pf†`ÖáuÉWÆË© ×$ÍWÔ˜¶âyñ$¦ð)ˆÌ
-ú?Ä®?
-:ž–Æ6¿©’ŒX”®:(èÝL> .Ïsª6ƒ£J5˜
-¨·–Põip?ôâæ,IA³#ÿ˶\pFú Ýç_C!OhÓsF "Ûž”Vž*éièŸÍŠnú2Ð
-z¼Ò½ ¡¾–ÉO6Ê‘LÛ$œŸúP§Á¸oèÅÿýPÄZ°z ¤ææŽà^Ä_ø<ºÜ-ÎÈR1lBî”Až *Ôai•¶h ³Û®()ç@ä[Õ BÈ­¯}{\~œ””på‹)ùA0X˜yz…òL—QÂohŸl„—
-QÁ›J‚dЧØ!GèVHyøöæ‘4覴¹š0ãÛe>ñ°-ßGùà²À!Ä-<’ÓÝ$©5|ènM«Ú°l‹ÑÙ5~ƒ?Iñi–0$ÒhØÏäPp†&cµÑ:Ã,ÛŽW´¢kÓ¤³öFP&•a
-þŸ%†‡Ö$0W¼ˆ»Ù 0Éw.eß±ü¥¹¬Xq– ®@ôèÅë—r`Ÿdù4/¨¨r?;”õÉš†3K‚½$b5™ŠÍG±˜S¨HmÜ+ÎNè~Ê
-ž²Ð´óÄŸ0ž¥ú9 %°ñ2ÚÇœBÉ
-v¥" 釒uvC‰‰Ç×òpÎñÁ]‹è%à ¹À×9€Ùà(Æs²¢BΩ)ÁLIè‡#4¥Õþ”ÖÙx°ù÷ÍèÝÙÖ¸Ën5ÉRXà¢ã1@(¨Ý%†@òϨ¶?k v®uFe+؃·×ÕäXVr”wn
-M¼>××8q¬ûèÓâ 3Ö ŒÕõÉÒUÜ2Û_^)w /Ò§,
-q]Q§°”‡߇Ø/iˆH¥l²Lž©Âäbll­³DyS¤ºÇ¡d]…ÌgŽ‘K;©D¾‰uQ
-I»Çòi ÃÜ–UL¥iL´C¨ZTÚÕpðrtì`U„ñýreÄú#iÌõ˜˜òd~\»í!G@?âOdsoŒGÉ t$Û§¼¹íåÃ0ûí¸ƒsl8,T–’q‘Ù`iüUhFž5öwc=ùyF÷öç@.ŠŽ¦òàFõné¤qn[ïÎC‰EŠÐw‰w¡+¡Üæ±Å`ÜXšº_N·%¶pi[ý#­ðwnJqÖjÚHµ·Êù¦ò°È+žUŽ²xÎÝÛQÂÖC ´ÈsWC_ñ_,^?Tüúøçƒq|IÄY»Ž‰ÞÏhp gïÿ=µ™o­â‰
-,øýPD@1 qXýT KcÄÙ.À»}Óè*TT ÏYB* ¨<¢Vï^ò÷¼ ¦ç¢€˜oÛÚX3¼FºÌS˜-®ŸÌ1j;¤•$ÜLÖät%ë&Yµ¨üSy8#ÃÁ2};ääDŸðº
-ð&÷äaõø½§’Û»Eïý;•\¦p*¹MSE] ‘c=£‚d‡^&XØJÂU)Šç @W@H+fÌ"ÔÑš4?z"d¿i¼6²-Jå‘{&Q75áѹª¼ÒŸJþ$J_tây« v(ZãlòÌDBiïL Õ"#=†Í¦øaèª3ï2d†Á˜R»¸=`ÈyÞ
-H‰Œ—Kr„7ƒO;øÓ%Q)­³Í-R5+çþÛù ‡cw«kœEœØøõ"€uxíÅ>þÓR{Ôž#‡›µ­Ç£õ2ê„Ymµ÷QJ¿#Š×lÍR®Ö?þüã‚©Ôkä‘zËÕ?þÓÙ:ÕˆdÅJù5¨?Òˆ‘-×’£~|¾Y”^*‡²ò±ÕÒ°T›ÇBð}ýc%dpÍZ£Ö¤y·ž»Eøøø{îÔ’%wã/ÉÈGd¯ª¶µNK,ÐS n¿ 1Ú¨zA3{éžcx¡ÑæVñpÞÈbqýõÇåÇÉ"§1ÖÕyúV³sÕÎ;}üsÃø#<å^Zæ&m>tyô\·ô:úø5èi·Ï_œhž;ê#G¯¹x‰Rö~©—àÓZ=ºȆ§ä©u^oq­çÌ3ja#à•GižÄ3•O/{™/E§æ—±)ÍóSÙ§«^ŒÚ êhõ°:ø¦Ñ”eÚ#•n\gôž}Cò¹°lna~ÔÕù䡵çi:dÝL|]Å#UVaŸõ2 š{š—š7âã­ý{é]ºvÍ‹GMa£Ÿ{ÃÞ`í–3ëðäyX~Axjk£èW>!¹Ïè· hÑr
-¾²VÄ©”¯|œ¼Îuô64[¦qö‘‡ós`dB
-oOƒÂ…œ%²õ”ì¡×NÅUêNÇÕº068 äŠub•‰BpÎ7!\}cóöá:?l¯¼ˆ$ìzé?½±ôª$óì× d¼_½Â¶Ï7 
-rx‹^Óì›@¯ò®»K}·,՟װ·[ÑŽ‰Uyö^‡œ€ÁàêÛ’F™VTöi0ôlHvz¬Ä¡Žüºä³ÕèE®ïºòò=¥ÜoõZ‰'=äF”±hFå$àŠ³1O’EB8v‹=1T.'í’%]Á$àþ„ðò}/\õxùÁhéØ>] æÍ(µ‚j†²æ¬Ä© vCÇÉÄCY
-vº|Ú`¸1»¶¬9"HäÞ©@cºæ¶/¥ôå²
-N5—ÿ·äSœœ\s-8R ô2ú
-WñСM$·¼7âä‹lD ,Œs>ÆÒ_¬óæÜQÆ!‡ÜR•‹Ñ;öÂdƒ¿$œËÎNO˜gºFZÈß4&…ÏåNOš»¶BoûÂB_PhO=»AHCòêF/ìh:˜Çàž°ïÍlÃÿa:ñ®?Uo„""žGÓ- R^”èX¤§]Uö±/í½­]j_^§RäÙ4°˜)Ц›ÝÆHAšž½)öžÈø3*¿¶Ôkàβé¾~ØŸ«ä‡†\4$2Q¡!§5xB
-=òî~ÆÞ +3\¯ào#"á '^¨ãÐÒŽšø\FÚ†7+Úì²J‘ýÑ ˜n!¢G=jL-„\´è܉˜ÄµˆsœP·IG‘Ža‚q€I)¸ë®7<ËêÔ6MÖ`5JJç%ã„0øëJ E ó”H}ç*ªuãF>G ðSV´n‚y9ö@¹Û„(y178O. Ä(ªÑ±7,Œ¯9µ¡ˆ”EØ>M"`ÀÊ“;U,E\Ë3gMðÞð•/4{fM£®B`ÉL·¬ÛWê¤ù—Xx˜Ãºœ¨2蜑EIËi¾rz±ú`Vƒì'/Øeiˆä‚0XÀ“έR¿@V7½†¦0Œ/Þ¬3çWªÌïO
-æYB3i]¾@‚ç{¦Æ¯Ñ`IŒ©ï}2]ÙjÞrÕ¡rk*ªaìÚ½¤3]ªÉ«_!dæÑ‘‰Á¡÷V¯ Þœ÷—ºØr2êH+¦Ì¼D¿p'b—ÆŠríð'ÈÚŠ ã‘Ñî¼—u¨%ÜÇ\èó3¨™âfU”mq•>eŸy ëÈ›…~Èò[mû¦k]ôÛròLc“K(o@à!?ÌVOyäÅÒ>Ûž¡nü„ËÄù ìiÌ©uµÃkci3ºØqȺÚ 5²cõsõ¤³1G=ÆT:·q òÀ¹:Gƒì¡¨¸•@1Ýa2,Û¢y‰4Eræ‰+ÃÏ>­t¥D‡$øµäÍex®8s‡·2³õÈðæwXHÓçîp¢©–EiOêÈ•êµ
-D ¢6–çöF8вª
-ù1ë] ¯.|é…
-“aàkjÁGÄícÔ°3
-ôIÛ?÷RñL²”°>¿øy¹øôóo§2Ü /唑ÑýÊ
-!xÇ/Ûá–‰Wd—šß@˜B:îà Æ/ŒžéOÌM')¢¼XjHŠÖ:$jh;I‘·Š»ç4¯ï:¹©%û ÉÞ´ÊÉ|Ið³,ó½Ì•KL)OZþåzVš%œRù¥ì¸=*“”Èvɇbgd©·ñƒ^‚Œ™7ùÛº {r´À,`Ñø2Tþ½ýõŒ—I¶\E DWà=üp²oÆfÈ:™ýO¹!)üª,‡ ¶U/;)âÆÂ`ñp ùõ+m$» º×È8Dt[Fßžôú©Ä \´RKý‡ yÛýaÜgÄ;Æ%C½Q½è£+BÍ@ŠlSÄfKÁ|ºÎ#‡ˆeg\1Õ´cá.)5¤‘8Khª¼D‘“6O£<bü=7Q¤'©p¬|œ‘¿¶§®ì;…ßÓü¬ô¸Þ·r-ÛX„;ĸ­Eß‹^læŽKo^ôçüõ;¥•AÁÀ…ÙqÚ2ý¼•QÄh…îe,Ĺ$Ã(’Õ6µÔ´5‹äˆóÀF½õ÷UhåÏ2ö¨àÙZEÊVR¡ûÆüƒM§Dˆ¡ÏFåÔàà m¦ÇÙ±,‹PX™û W¶áî¥]{IÍèy—< _)«m«úeÇ‘&Ùl)±w^ \ ‚¨ ˆÐybÿßrPŒ×+ìF7s§:r–RÉ+p©WtÒkšbŒá eù2£„½¶£ˆÔXÄZë|'¯¡d¬Ã¬{¥R£È\*|þ•n!'—„ýA5€±¥K´’*À>ñ¯h‰ªû‘ ÊW
-zÄkpRÑšÌL
-7ܲ§=†±DcyÄŸ ÄÊ,î½
-_¨)æ k¢{/Ÿaa®šÞŸå”¨ë:;óþºµ7%YýÄúµœ3Ñ*ôª%üœÃœÄ)  ‘ !ÇЉ¤ø©¯cm <s—ë’K}vžkBF:¯3¶ˆ¯y%C_±è]E7l‰{Ž9&¯´t
-3}ÃÈ‚ÇЮ(é< ](l­^Â7½@/GÐ+…®{œ3q¿ràR댞·1Fè³S ÏÀ@3M9íR«¹ðôî/Å'qi¨C¸ì¹¼†ÀpÎÒ½C‡%+ ¡é¨öF•'aÙê`Kò¤3š2¶ïµ < _ø{TÔÚå8Èþ#Ø/rLÆݼ™€j¬>&‚®ò¿S‚éÎ
-p©7!&°'bE¸øyOŠˆ L¡8«Yz½)^
-‚‚:õÇÎÐ8ôõ"¯á×Ø2Ø]’·V‡÷/Åf+ßòñ!ìƒ]çˆBχ(c3‹f[°/ÛȆ@ABÜîtmW^#¼`‘ÑYþªHR‹ÓÌ/’DçÐæT®áúò¡éàq6¯E<ÿÐAZumg3z_pëlæß¡É<ó üsDß\rÞ‰¬–uŒñá;¬ˆŸ¡…Z—͈]°”¢ó<_…+„5ÎÉåL&ê—ƒ'jú.m”GŸ#—y4*!dH[£m0/>Ÿ)UùR/\¡$¸»f5ù‘2~K›ÕÕ÷ÁùŒ’Lð+Ò4
-\Ä0ÐvŸe
-¢îMÎ@?iqGsÒ2ô \½‚` ÙîïwzýJýÍb7Ž6ÇœáP¦¡;taÔB4tÕ9âò8›xD_±qµ¬$b,q¤Õ”‘p€ßÙ¦][C¶.]~/ù&÷n¯EÓ} u¢‘WxÂ{/Ôø <<ïû¡8a×
-qùZ‘ô*4CÕ(r/±Ìaì eQE¦Jn? 
-_`¢6¯,_ Ÿ-EŒó•·DÐð(e>Ô“rº‰jof@MâÿãOmÝBŒ•( à‚ \ËTˆ?ÄR9Û†‘…„‰Ô`ßÐB7Sm:ÃfVéÔ|¾C å-¯Z­.,(½Óû¥Ä—‚Å$úô|ɪI]xJ¸¾q'V¢k"øÔsÃßôç[ VÝ1Ñ¡õM“¹ ³/EÜÓ€ŽØ ¿b#²± Ù%ÐB +ZàÇFË¥Ÿ§drS˜\rŽ]%>Ða{²€$ŒŽçkqÃd¬ÄhÒ gˈ2ÑŒ^Â$2Ðzƒ³Ô”éëìµ? ÿ$À£ž§#0k1\÷-§ÑNh'¼°<êǦ–— ÊÀ! ü\à¿KbÞZý%UË› ŽÐâŽA3Ý~Ü]–0:z _J|)X‡“’Êzª¾ÃT0«Œ,|~ì]º6Òṯ/QÊ—R<%®ð±c(kð,<»Yk<t½åÓ/1©šêsd¢ÄWxû!}áîK¨›¨«‘žîúVÄ;„f(Þë49øÍë5g@‚íѵÅÕàSlŸN?D5H¦c¾;Ê%N¥ªs§ÄP :)Hü?"?ò)¡a…¶<š¼æå†)b0yt¥š3 Ìܱqw<t&f:Z¿L•á#ÌìrûmðVDœ‰
-É;6¢`VüƒÛbý~ Sp†ô‚¼:7E£H *º2ŠØ §Ð} ûAOW>~˜Y«Y ˆ Š"»ßJ|©Lûçú?çõ3|ôžM4z;“…Ð!>¯ÏÝaƬÞóŠ˜ä&'QÄn8
-'[Šï 6 Lë½½ë ”¯VgÉɈù$Èø ù3óíK1ÏȉܮÅdšÐØá°ï@cÜúPö<Áá,4Z_Õ—b µ5ÄfÇR4ÎÖ̳çKUZ¿ÒdËéh¢Ì
-—϶êÙ]0,«€qt¦‘ I:¨~;x H¸óvGN—² E¶ {¤Rû*ËÝ—±f>ãèC#/ÑeÜ?¶ÎD;ø#­\£¨a<[à0C–Ù\%ÚáNûL äÃ%1•ü2A¸:ŽZ/áÆ—&i5É`ê- 3kæø*Ñ­pËÌ×Ù2]"yç·Ý-VšDÁ;æ{…/DOÔ5mS^.ÙrÜ8]÷ðV ÃääØjšÊûŸú–_U1»Ë>ý9²Pd’"näó*¯vOE6B­?ë(!PñŒ+õØi4ÀöH¹Ö}$¼”ƒ#¨k+;ñ.4ò‡"W©`ñu"¡÷Ûû¿¸ô¨º¾þâ£BJ>¨Ú¿ ‹Iùhæ¿oj<ºãuQ$ÉÒ1Ÿ¹K8îBl˜Êr*Q>k²Ì•ål.‚K­×(šÚ ‰îû* )@+Z§:0š½¯ aÜšúƒL}•ÐDM,å
-:e›'TÁU)£ì™‚• °ÌF0Kž
-ÝÕåÝ¿ŽüÑÔó¢HQw¹Y‡Yº” QÏ|Wò]›þ¼9ÕSQ¼' ‚rS¨ÎØ‘ÔÖ{ HA§(5NÎÎEFg¢b*Ç–äá‚Qè
-.Ú艫*˜ËH (.ãòa ÆèN•ïÚ6$ƵÒ÷©p hƒÜÊ9–±A䃥™¤y¢òww|gû&”
-I{+ĈÈÆìm˜¤º8$ä(Á‘5½øÜâÇs#t‰e²m<ár–@ý"<.¢pW•¾K´³´¥|„ÉÃ"¢t€ÌZ<‰— ÂU‹-Å ŠrèDΤGIzàRè+iÁ¦Iè2![–öVLÆç\ž^1ˆpbÛA¯Šèi7bЙ(ùÄ䉯ð²WÃ{)ú}ST\0ƒæ²,áõi7nÔæMIåTc²TÏ7.®ƒ ÞI–-ÇNDcLZ?Pâ*‘òÎ¥²¼Ÿ!)i ÕÞç¥BM…Ä£ÞÁSfì
-œç­³°³ñâ5 ›<rÑH˜Y|*·=UܽÍ[ÍÐßvÉZŠe4·€)|Vvwq„q—ð#Z
-é;!ø¯O8ý'H0qåˆ ‡
-´Cç«lSúÍGÍÍdOE?oŠ˜ÄÌv‰¦zÛ¡h]žòÒ»"3i)†–×{xDän°Í‹K­d¥XñðÇE‡íŒy3Y;Ç~Tôv§í>(2×ïœ]œþÏEêhš¿íCgדœâXâ²+¹á€ê/š¸]Õë•(šÒJ`¾\ëp3ÉŸÓ6¿VÊsÕK
-n u¶ýJ"/rSEŒÇ>w¢âÒoSœ›:¨cÍâú:Ú&ªÏ©_
-Èz• ŸêqH0oUý;k+'œ›_0Ð^2[kžŠôÜ#y³ùÞï âm£ø0Ç¥N>c
-Ec
-dB³};S˜ÊºŒÕêÐià:v‡âð)ɘÄÞæô¥oìP±vzŸ¨·eõˆe+n…°ˆ( ’ûL/ŽSÒ‚áëãÁ¡,E<ðKÂN»š¤Uý´±
-óáŽ3á%ü?ÍŒ§¼K¾CÕ¯£A`ØoÆÅè¨ê똔ØàRÛv}À#ñæŠVT Ê]ºÁ$Æ©ñV1 oµµS&ÙéîÆľNSZÌürnb/®
-Á£`ùûöÞkhË,zäƒ×åô>•Óæ>n¢):pÁ|ùñþx•ÂÊF§Û¿Å›Ñ7x[·Ðá#d`ëAßy÷ÔzÏ«ó[:?1“'jö1¸pØŠ G²áÕî"E gÇj}'$¹;îˆ*^±Sƒ<Û*õÞ'%ÀaòJû:¶Îȳò¯,]G…à¢þa¼^r,¹(€®À{Ð
-Œü’̱<ô:<’÷?õ¹ÉȆëu>ØÔ‚ª£’dÄûaásÛìýF4}Z¾d«£Íƒ>ÙêCàßX/8ëgfÂÁ:é“=ãûñw"¨qýñÎÓ–ïH|¸Ú²)ùAåbý¥X;aì‡%Pº.~2¨˜ç†1Yß<‡ÄjiïÅú,šk>d Übõ«dßÊSãÖÚx‰èw–¬î³N ô‚)硱XêzjŽD (LÊÞ#q&êɳ X\2hO‰ÛëIçÀ.Tp®l’uÐz,~
-5“#¢Ï eCxli÷þLHò‚†ñÜEßNJ{ÖY¡õÛá•cš‹ë¶ÅÉ3 r&†ðˆË, ^³H«ÁT óK"“ÌV@B]'ÌÚ‘G¶gþeJtýºÔÁôÚÀ9ïÄÃ6i׺ X
-}°‚…æ%ÃsYj`C]ìÀ-Ó ¬;Ô^;YŸvŠ¹]âÓ QìЉoLÿKIѬ‹/6rm_¾Ã_[V«äŒ†ɇ tÚ“’<Þ.\~aµæ¼Y2a=ýêÇ)"’¹£-6žôW "DDd1HŸ;ª™MÒ±üg•Î…‚%›XH˜ó+õ
-ýõQƒ6îÔÔi+óÂ!ñ¬O–¼IU8¿“ $´ämJƒ¤ƒù®$ïS]“tüWÇ×ÊT¾À1¬ãý8hoD’ýþÕYÄ¡†Öí(o‚€ ?ä¬Pu ŠÜ÷‰¿qÆÐsTÀã&ü#0µµ=&ÈÉüKló¬Ùï˲=<ÿ´üûz£x/ºV"•áÈ›ç§Bö‚žb÷QPúlM}8Øn¯_FÄreâ3äðØÆ2Ù[à3þ®?%-÷ç+½ôK,PdWâꀰôYäá½–˜Ôj fÙ÷v¯ŒôÒ=ElñÝVE,tª‰HÞÜ—ÛÇônÏ«BN&ã¹ÇöªÏ¦í¾’æ§Æ%ÐÁ‚t`õ=ÚÊÐ@ûTßq«­@û |ì‹ä
-}ìú£ŸQ¥%ÑÕÓ·‡ö?´á£è¯oEKˆÀ"ΫƜ±î c/±£_JzRêy>~©8ë
-§H6ž§g¡/mÝë; 8¼»½«ï´axl†f|-Ùˆ¼ÏÜö¾Ž¢³h•h/ÕB+µÁ q{Z趉ËxV†;[…žM><¿”@€•Bâg¼†ŠÄm?ë¹'V0 £—Žœó­Þ¨‡Öñš…SÂ:Q‡XÀýxüc3PYâD:{Óþ¶åÍ"ÌÒ“¤žI´âˆÀõ[eTÐx@à¶ñÚœ” .«å‚J½£f8ûlò[‘OÈ–Æb¼~§1ø ¿­#¬ö—’Õ uìûóò"˦g¸@Ô}^þQ¤«kâÏŽlïLtA¥euᨴ³OÛ³ä'wEÐE¶å±êt‚[×x¯—gšèxÄΕéÏ“ÆQÍ—ã€|4ŠP™)7Æþâš—ÁU¼ÑÁZ¶
-2z;J]`¯£À˜wß³H{eW-Dâ¸`›GI':éÏR “‘—ç¿Â(ˆŠØfÉÊüÞ;cb…doô
-ƒ^nIS„쌫…³æòÅ--ÉÇáRbñÁ¤ÿ-<¿†)Ûx)ùóoÿúÛúÇ?¸O¢ÔÑ㋧1 §ºCwcSþý¥Èü íýºåÞ/B±ï­üEä…}ðÚvÍŠs ø+«ÜÆ€ÚiÕôpŠ(~ÀcPU´ Þo5ï½X ÈHCuÇÜ@%¦H`ôÌ£¼Üí#<F•¸»†ùö½Ž"ÃPç/¶9zV¡yCÐ|Të ‚1ÈTUl±T„ɧï
-xÊeF%Æßm•tŸÄÍ>Ö Ãybs>IµØºìõjá+DpÆ:ß%€ÒÀó~«$[Ì£t¼|¯èïE/!Ã}¨ ³bæ²Û+|o÷Öž³}IÓ³£<ðš´À*DLg‹ÑWïwö*ái¸âƒÝþÕb±÷¸+ö£ž~a& V¿Zð Z¼D» $ þRò¢A3gé0I$Þ}¬% žˆ/iÇ¿ï".Î…È ûQE€å€5jöGJì0Þ°*ýQË-êàˆä\-þ q÷ó(òf@Øàû·Ò*:}€ÉÀ\ëYE¤öŒµÐnJvöô£¥Ìž[´•åÕ®»" KKBŬhiŽÀPuБ
-†#D2ÏNÖñ£=®ÒïÐdžù擬®ùfE?ÀþH»FÞu]ßLð,a×ÙJ¬PŸ!ÌÖ÷v}+˜¬LòÞ¯£>‹â((d"œÜ%ìÑ‚{¯Gˆ½¯ø×ùn@!Íñ¯ñàîž?·Hÿ£Ÿ–ºêÕ¿5°°`RŸAR€Ýƒ¶^ƒtaÏ8Ÿ‚ÿN*`X‚XnFŽ‡žÆµ™J¡Jt¸ÐKËÎ’="ŒÇ¦i(ѹ>ßÀŠ7±Ÿ:'±“Ô†é÷*ºüŽ?bïïïä}uêÛY!.´2ÜÜÌç*%ž18‹tK9ë¤ÿ±oÿ´–K‰LÜ8çË×õdرÇBÇU"ó{‘ý9A£%[ÜL Æ¿ÉÅÇæ
-íy™9,I
-V|d„“ä`ÚòxEaƒÈÀÂÂ0Gw {9Ћ‰Þž”øFɹÎÜ …<"#¹ÆOƒU{âša,mb0¥®ñH'E’ÓˆCf
-z¦“òN¬L¡œÁ´}ÅAŸŽ;gÜ뵕q±v²Àqz¼<FkaÅy.¢ÜYýòkWú…–Âz¬…Rœ<ÞÐØga(‡À~45 +ã‚G7y[â“AÍ!¡‰?«~”ŒÈ"
-÷¤·Ì$,ŽßÒß_á.¦ÂÚÉÜx;‘IÔŸ¢aÂw€åÄÕ̤
-}Œsç Í_… æPr«Gs[-ñt‘'sÛ°#¼+béß'«T´*øV\@AÍ7
-OÈ*Î,«z:jùzs(LØ.óé;MF¬¿!
-è˜aÑAÌŒTv5b„EA‡ŸÄèOF9Øb®¸JÑ‘ÜÖÎP¬ ež\! õ_A„¯S;A̤àĈ•¶WË–Qúî'±”X€T”ÌÖ>@yteN¯LÅÄÁB¾¯ ‡Â± tp]Ä4²
-<£ì… `ª±—Å¢kh7œ¡_A¹!M¤Ä-&€+œy1öÑ ²“Ë
-k‰ ÐVôKì“2õž2R’]ùù
-Y'áÙ,Ôtõÿô¬`WŽ ‹ —‘Ícx’9ÏÓh6äõIýDZ2´:dØsʨµc}OO}ZGÝAUl9R—³xoÃsaî #><Š(c•P¼Ý¨{màzªÈùlÄëTa S,£“kŽº@ÖQ׎¾s›ÛmîÓwxÕ}ŠoÕ¹ïÂ¥ÆÜ)m¡`AŒ$ƒß³ÃIJˆ*KMñ‹­^%É Zd—±Üœ@­+µB*SÇa}“b öÿéLëT(E· ‚—° ô%JWÈw;JÜÜy‡8ûá;JSI¯WÿU•ßáa-a+%«Am.È”`³¹çñ'úÅÁ3ÖcbÔˆ$ *„¸RÜøUPÄq’¿ˆ7m¶ë4Ü
-?ÖøúhâùŠ"\›i[PKµ$ÌŒcµŽ3ê=EŸ@‚pOd?+mìiÄ@¼±G{‹ݤîÜ£z;ÐW´ 7ÑL*vf¹°ß§KÞ§æ¼dû 1ù6tØúàb,QæËÑ #š<'³S
->áÞoörF7ÈB)$Ü1 ^(ðè 0¬m›2QûYT¥j%dXål`i‡àý˘ò!iý¡¼üͯ¯Ô‹˜+®(¡•Êðí½Æì7ÆE®¨Ùg˜U
-“™Å~îÔ;.& >©aö¤Ù6u%|WTd[ÃÁÞæ•®nžþZ㹈T/½xZº*°õ}Z€UØF’Þ´™ŠgÜ~'¨Ç䇿aJD®ü¿¹Àíu:‹ó*å¡(¬ež6w¦0à»p^Ìt²ÖŸ@—ITJ™ôµUrÜìªVGìïX{:¨ÓÇô֛Dž—1³Ã÷â2Ñ¢){ŒU\+H`½xë¦Ä ¿Üzâ) ûËDt|óÃw&£K¯8.9OñNŒ¸ŒjRCq;‰!ØÅ D¾ÌX“ìAøvT~Wàœ}Š7\æ¨Á†"Xí;ü91Dî[{ºö ßÊ‚0ÿ,.RdÁ4Éã3‚­"Œ×··3hjŒzÐçmÝO´ñg ÓS lf¾âëm0N e:B?’u«@“CîuA˜c<=‘6÷AvÐv–&ÔËKÓ±(#*e$ß¾¨’èÄ`Í‚»¨8lCfp'ÚDÖ\›Ó ’&wãg†# k.Ä‹ØÃ[hßi “ŒYîÙ-
-(Å­‚ûþŒß0È1.†çWªh³AØôEAqÜRæ²ÞUä§È¡ž˜ò dj’p‡PË?s¡Ð¦Î ãòQÃ.aªÓÂÂÈPHMG³d0&0£ÚÈ LŒðdvÄ|¦K÷ïp4þ­cÖv×¹1œ+ªámA‚'Ÿ]F¡-vh­wÌÝ‚ÁóeœF#E}ÃYL¥CHñª?Nhš…ü'”;ìÆð(ÿÁKb%Ù0¸&
-€±`Äœ1´!‰bÀáB!Py¼:Ñ+:Çà øa¾Ñr4<Þ¢t¢m(îRôYSH¢%¦iÉ “ú2ÌD?†ñ¥—³1ÒCt}·ž&‰Æ‚DHÄ †<-ª¼B¾[4Ï"‡è+xø'`­ðº°ÔA)N}È
-—$~äa6Ò'Чiýa ÞHàbZõû˜ *ô
-ZïRƒ˜gèé¤8* c*S”ÑUe>‰ƒÈÊ#ñá;pÊžùMrýCö1mÈY0 ÜÂjôâ½bÑÉ4ˆt*~’ºFßéêðGA*iC¶~VêyâWÂØEF¿;ÔÁIË~{;Ó^p„¸îb~þi%n ÃþÝNûæ§ݺbÄ,QÉ,`ûp|­+vÝêÏ#&Y½…Âi¨ã»M3æ¶yX’ÁDµ«EWJ±ô0¢%™±Ô*ËXg‰h'êÈmšŽä´ÂJ£Y:‰£ @-ã×Ò¯5üdƒÒ­Ì
-âTÊ8@t”6*f=30‘Çï*†YEÙ3÷¨•9+rÒÙ 5è$mvÏtã@!ñº ÉD¬ ¯pDTÄZv1¯¿Çj„²îƒ)¥ýUÉð.tBÀ IÉ­–îÒ-¥íü8zÜ/è;l"¹vñî*Á™a+­‚D+8l tqO4wãŸiO«ÈûÂ’>OÕÏ ?©WC§Ÿ¿smùí6÷Ñ9¼ê6×Úœ&ýRàäS£¾ac´[Áw+ŒDJ Pé‡Ïý|
-JÆW³¯PF¤©®¦¶˜çRæ,Û¥{Zè/cJ¡wæëÖžnM,jÝó¦ÚÂ0íIΞ;*»ã%ÚÍBÏü°úQXM­5¶N#æ7âks‡·Öá\‘ÇRAé· Ì®|4t¹²|©‘»:ºCXŠ‚¡#Ám#ÖTØÖÿN_©Q_=‘øé·Å6ˆWWü$5û-Èèì4é,Ùæ†<WÄŽùm:\¥‡Ã´=ðO}”êì"!xñœÕ`œ×Ž®@ŠA(ª C£œ­7½¡Æ…y·ëx!cO Šm¦ ”Ãx¾·‚ꦹҟ­]Û†3>D¥¦,Ö²Q Ax€6]È9 ¦x×ÅAk—„à™ÇýÄ!í¿Ú·Ë3µÃKIñ:©UBFþ™…³B‚€Vcx&ËÔE|»ç©a¥²î³W§j³1‘Ä"ÞéÕa0\#vV:Ø 7Q(,ª#KJ\­½fž¥aqÈ »ûxg»ö /¦°®OŸúÜ "ÉÔìƒ
-‡I™Yf1{¡®/³Œ“íˆÌíQ¾]ËòŸKÁ¶ñ»rþ ’‡xÈ~²«ñ&øhÊAgKBÇÅsÍm¿‰ç¾Ý¯·OboE £®×ÁÄay°KÙü3•|Hl“•¸Ì.ê
-¥PŒ¶!ÌU!MÒ¼¾î^÷ϯæÐq/Ê àõè°ÉÿZÑ+oöEe²”Ô´‡ƒÌBy†¶žS}›)\›·¬ŽFˆN¿ÆT¹kø öZd¬êjÌï Ô) ˆ¶ªa‘¼Ô lÒ‡\/ácÁRNÝñâÔµÑüèv îCœ0kl²× 77‡áàuìvÜAä¾
-–´`,zW«ŽÆ
-κ—¨5‡Z`”:NBj”Yü1‰ID–Óð£üa¥YS"œ¥u„<¹‘}ÔíÁòØm(Ä/ÃrʸZµ9±V9N^ÀD ‚CdhY$òì†@&•Ù¯(b¿6‚–)æŒXâÊJu…±Ù{®cQº‚6ʽaýlîfrYÖ
-nõ
-‹…!õt Eæ'H/Ë–o‘(¨3“ ] ]g™},`ßõAlÑün«í
-%Õ¡Òäki”J©ŽêªŽ2 Ò±›YhŒcU™/ƒÐ¨O-µ¿€¨2xc-cV×5¨ð¢&ꊛO Ç fH—)ëž÷¡MäÏ8/ž5º0þ¢Ax ƒÄ8—ëQâ(úÏpÖ/ç¾kÊ,‹
-R-4žOÍýpª@XÂî&C)Šêñ±±O’LZzÊOZëo/  ß&ÃÇYáUè«x±Õ­Ÿ&BžäʳÅ÷¹é®‚¬‡•)@õL°4õ£!MIoä€PK¬(ñlÚ¦~¤>áYõZä
-ö™ôàGe$UšÅ¯S®‡ü#ÈPé¸s‚éc´$ì]w´½›ClÂÿù«—“–˜D’ ¶x!ÕÚÄ^)îÌAÏ "Í°¦àHƒ÷aL &š?¬¡¨Bt¹Ch;Vµ{—0òãÒ(ñš¸ÏôCbïèð—C$.E¹'} V]°(ñ…&¹b0Øê4›ÖBÏÂ)nÊM¶É¥B!Šá Yj(…Ö;M®T…[…bb` }ÈAÇRY7ÊÉ‹öQª$#‹s,aã?éí@õ¥RùN†Òí
-Ÿ@ßûþ8bˆ~¬±… ÚºŸ%—Ëôc¬R/âX •yp÷»ÆμAúqE(¶D£³zóWÒ ýD_ìœGN,yË5LE‡o©¹ìøñ;Ìã©£A<:f” F@ps]™…¥Ï23|Íâ¯Ð~«ž"´d©5[<×^†ºËBÐCߢÂbâ)_©¿O!s.Å‚4R“þ±›Zc~¤ò]f ßÑ|iæ愉Š§Ï#H~TaŒ}Vš
-m{{°²µÉ&1++%;¸È_­x?ó‡›Zæ@òLЉ•9Cž¦ôϯè0ïH&ý.ºÅ» Ã
-ÞN{ óÄ Çåz9¿ŒùAAÀ¸k*ë~ÞçÆ@ul ®ÿ®îÁ¤†„Š®÷SÝÇ‚ìÉp'UJ>É24Gñ¶°©§
-äs3Ô÷)åÃA&1fi‹ ';@öQI·Cþ Í|ü΄ÉF®ø?ãe’GCÑøuça­^úÞÚ÷ßöû YÝ•‰²ÑCX†˜$ðñ‡qÆŃW™”°*:¸…}ìûQFjY’m4O«Í9cˆ
-¶c|öÚÚ1‰!BÉy›1F$iu•È=Ârè@rRÎç¯ÆyWZ¢¹´–oÖ\Öï÷7Vt-rûq öî}ïdö
-X)òÁHûS×æŒ5.Š Åä^‹)aUÁ2f*WwT—’õ©ëÈs®ÀqnóŠ>÷Mw W- äÎÄþ"Ï"£@éMÉË >ÏÞÁ²r#³yD°Öz¦D“yÜç nEwå¿}Ìa‹¯î#¶ˆ¨D¤šP%Í÷<ùÇ­ÁW`ßÇ”o*7¤¥2ˆ³s›(¸=*2’È Q¸Ç´…çZ
-Ø>Áà!Î7çdˆû©‚, z‘Z`%Ü âG´ÛwNQørŒ(·:Ì«éctŒ|Ëk{:ÚÆFÐ-Зíc(„EãÞÓÕÐûÓ-¾·ðvÎ}ˆ1»À­sJyEg'2Û 'Üzê
- ž>û˜Æ5¶Ë#F'`PpzSR[ìÌd´ó©¿CY zî)?ŦqÄ9ŽJZö@Züã…©£*Ç_<TÒÈ/Ð!Ô:¶àoDE Û×€!c9Igl‚‘šlß¾9oEƒèô±ûJŽµ$Ø5 ¤€DŠMHÕ5Í&b\ÅèÃÓ :4Kø€^½C!Y-PÁú¹‹ðÇ;[.ä/¶Ú…<Ä ã èC[lG\ãÉ–Žõw‹<ÞLfˆ¹1«7ßÖô*Ê’'›ùdóc Ï" Y~r†ÍÒXj®ƒEŸ­ÚûA4dŽ×€{ƵdsöV¶sÊ8øç°^tƒâo÷m:û­v¤\À¸rU8TXxmÞnŸ¨Qž‘w§Ê`Vx$Ì…å+Ü“íD&f`%’[‚ .G[PÝŸúb·žÚÓmX!f™úMC•iÐÖ,]ùcEh:ô1ÅÕ)RIbž §ÉK1­«Kl.­Íu/3¨†·0Ô^W§ˆQ+lÌñüUX±'<„JšØÙ:[çz¶©ðNž«¤6E3"•URà>ÞYô¶£)1A‚¼·q/ùé— „º˜Ê«$ÀÏQò~7=Áíð$=J%Q¹„:vIkl?I$O+!ue>Oy!±_6„žf’ªÒaº×lÖdŒ*Ÿùî:§/æýyº)¡A:äTžë-Ђó&›X½ý±qoø6›gÐôX¸kiVRBƒfI”4aïÏ` N¼ÁÜÈÐ/ðS\ë9çÕPÂ
-Cðñ©Y¶!*p½ÂÂtI&éf(êru`„õªÇiádÄú#®½&&,Eß`æjSñ£WE8UÀ»<Ç36
-:5×(Ø
-tÀW†ª¥u¢ %±@œÈÐ8=º&Aj`àIJaÃzñ’ %eÔ”-R^‚£¤¬Å8>ì[ÅdѸä{E*Éò ü‰;Fõá.|ªÕ½7² ü#–]|p/ÂaÈÙ¢Àd¯bƒçcø‰§õéÒWFÙKyÎËï9P DE2ŽazE6†.„Î…_cà}˜÷è`âš]ô½¦@·äš¿Dñ3R dérÄáU?ÞkÐÊÊS w¬K™s“-u? Mb.4%Åh%¸lT—®¤6ý HMmb˜xÄíÿ!P)LèËláCüŽŒpi^É‚;4DK¹NÙ=Ê3MñÄÉ£r¼L´0ö…ö‚çÆNíâBNâí1p:h—Õª$:¶achçÝ“)[ûcõ8Èzó¥»Év@×H@¶­¹ÝaN¦y…Ôö¡$vŒcõhXƒ‘CFÕí]€²@™êE]%$&dUtaHè¡bÂZöË#i/h§ŸŒŽï«D6…¾ƒÍCM,šÜZÞòw)Y‹{cÿðVºsα\ÐeÊê¾ Ü€rT.˜W šäcáóòæºDS~.¸JX:$ɦEQ{ C
-=aí1»Ôvwè.¢‰s3–‰L†SôüU2à<pÝŒ;?íSp“Z¬—¤U”Q‡šÓXv†Kc`ßìi±!ØSÁn?]´Ü‘È{•ty=S×°ÔȬ_—ü¯§_JÖ@“R ÷ž)»ÇTvz‚/ô7/‘KB® ‘.ÿÓPFÒ*ô äêó?aƒWòg‹”‡ÿxÔ–ÅZ`z‘+û¾-ăíYÝ„Ÿ‡ë‘­€’-²h)n¸É+¹çðúGìÙ3Û`:aÄ2³‹ŠlÓì¤Î :6º ‚iȨå(hÕx&ÿX\;äTÇÀ°ìò]Œ¦Ì‡CÇØ`˜”/ÓÕppüwZ—
-Ú ¶ý ɉj‹e%ŠìïpÕtüœÊÙÎSÛ¢ð׌6Çv‰Þ* R ¶¾¯ Çe¦$%ØO{8ì…í(|}Aãµæç›ÓDþáaBjè2>w²ºÇÉÑå’y”ž¥’6¦ZUžoj²µ(¯˜VÛFP²ðìMÙ
-•W%ëÍü@†ñ<¬ÆŒ»Ë3è“ ØìéFdgè}v'õÕÀ?¥2’´ß\Üãð…†WQpŠÛ$\‰Þ&åò%öCô2pè4RHIGíÙ@ºëù2ŽáÂt}{g[è,xëûœ
-6y¯èD®<2s¡òÿìø;
-bf™þe¼<’#Ëa z]EAºµ¶s‹Ù¶î¿— ÙªB…jÕ¦ðéH8KqO r“uœ9Ž£üG¶ WâA½²ƒ@š†¿Û.)<o øÈ2.:ó$]èúúˆ‹~f·˜4~¯<62ÂÓ*Q‘atðë2!eÄD•Öö©0?IK†mÓ%s‡h³R9–ë³*X…dëÁ…£²hæ 0™1â¶`§îéãè4YéÐ%>¦“UŒs³74»ñå@éJò’ Œ´ý€åë€nÙÕÁ3 ØJŸ>=L `—ÀÌYƒ¤0^,ãhg#ôŽó/ùšs'Oí„Ôfõeè.þ1Ÿ^ƒïÂdµˆ",ÉCÁEeXT~ecS:ä‹gÅñ¨ÛËÛiÖçyÀ† ÆD—m_ >«r‡Z:"Á_ÉT¼‹¼*‰dvg’F`j¾wjêzõššÊð3Y@9¹-UÞLe¬;¤h OêAJøä_8¬ Ð'‹&Ð\j‘cQ¿ˆSècs¢k1ñ(NUø&,å2ÁÍ„|ƒ—`¯¸³qæKeVbÊOÄ;[ ŽÊc=[×!âSÚà¼kƧ!+‘ê
-|}ÞXòÀš³y¨L"„p­Ã’ÔežÃ]XT4éƒÀ<SÑß/„™¦3ZÙŒñ\ÄíÛ\†²˜b„ø
-¦‘Ÿ‰o
-yòʺh̆|#ò­…oäá™d”ÝTRœÕ«
-c¾í²|M
-ÄÛðI —‰]Bȹ8ýœ²ùpmUQ+¡•F´"ŽWÉLɪŒ+I–›É+,y°Ð{«ç"T´AÇ)góe°VrI9]ÎÄðð´¹V¿9Áø`²å‚gÊHáò΄Μv«Äiè±öZk¯3ÑZX’®³á‚3C!£làðžÂ)ƒ½JPòŠž~ý äJ¦”9,‡žž‹8gÀ³É¢y ˆàL8|̃¸&eR/é˜]F™e®S+™oøˆ~(ƒõ³e»ëóÜ*÷áPþO€
-H‰„—=Žm¹ „Wà=tâô€”HJŠÇûp`À™S¯ß_Q§ÛðÜÜÀ`®êHü)É8þäÙ¹Wn÷•_sù³ÓìXYU_qÆsl ±Gø×?þò׿ µf-¡ŽÏsQ€„Zkô552
-×Elüω=¹÷û9ä-y¼æ´ù5“ÄšüxæáÞ8ó!ÊΨZ D>®ô`&¯ç'â:r¸‡¸ã5:ú¾‡0Xa‹íœ±¼¸f¯µ'#~[WùQü
-ŸE”Åã܇„âX¨æ w›q¡¸Õ€Ñ!͇!Æ´¶Äž1”æ}ôw6åÞHËŸw¦{Ÿí±LguÄzH¸ü8‘c\´b‰ÀB$|b@†‹ØY}œï ñN¡°¶ˆë^Ofâ±óÙÏÌê@a–5Ã(«Ÿ1>ˆ¿PðÍÄÏá&Þ“[ÛŽJ9çAª/¡uÚ|¶ÁìÊìLÈ7¦è2•ú¸œTP-çZäíóš™á
-ÕS\¨ç@uL‰š9AüFÞЪÞÌàw\Ç
-}­ÏrIœm,yåæ•3þQGÊ¢æ\ß’ØÊŠªÒAHv„P{{_ª¦žP–pZ¨2ƒr¨7_…ÎÑ
-Mà/bÈ8å à ÐúûP”õCµßÄÑ•è?êÈÄÀû£p >»ÑLju  ·—µ¸¡§ ‚Îj³Û tè¡!ó۴ݺíIëš—¹ú:Y£”åÃ̸Z™2p¿­;!iB ÁbäÚˆh¾fwáóžÞ‡cÊnå2ÏýŠ®‚8Þ¯o³:³Ø›t`È°
-Þj„š(ˆ$Ÿ{DqÎO º›Ö’B€@|CˆYé V×aPˆ¿Z¤ìéÇr Ö³ÈoB†¦²8DZ¸dH1¹½/!ºzéØzC‹4Ò.8Üš5cžâvJàiK;r
-ÝS(³…¦P›Dd·%ΑŸˆ~Àa&ðû„ñë—{Ì0TúHa¡hw´CQ5Ú1TâuÀȄΞ9hÔ ]€|ŽXsárP~èuB)‡€Šâ
-šÇ!~?"ØQ,¥ìãœ=€da*­»òåÖ'Š<n­²T]ÌAbdñUä\:þ·nߣ¨ï1ŸÀõ‡>âKÎÚì…éã—èbÈ.mˆ&/B^~E„¶¿÷þCêþýJÔà
-B,rhÅÄvœéY»ñ(µ-Ú&µ5gßR%RÑpp‚IÜ{¥ÚZE5—´Ï¼"ŸQ͸¢ICt–FM¿{÷”˜Ý½bš„˜YÁF6©¬¸Ùh3¬°=ò#ª˜âãV+ìuÙjï$b‚icY6Jì
-¡¯¾‡úЮÆÚÙt˜¯âÁÿµÀJ¨\
-G„0ÕbÛ´;智·^ª¢îžbhð04Ã6B<߇êÎ_µøšá‚ uK¦m¿÷h .ïFÐG¬5{§<†9!4‰¿/©>Ì¡°5@x6K½„ú F‚I‰”œ<\6OØ"¡šŠ.CŠؤ
-ÊW£v JT£¯Éq>·Ù2Þçý™Q·l„€™+ÿ{=ùµ¬nÓ¶Ú¢&®™IØúêôö±¼ #¯#—R—µjÄø±ŸÊÓ$Fó>jY*®»°‚ªzH(¬t(\«u ,j.Ÿˆ0Í#ë'ÿ{8$p*Iú†"Ah; ³
-âKZ¬JZÌò_ÿa»Lp%Çq(x£‚µKçé;Ìù'‚tf¡ÒÆ
-Y¢œ“Àú²Î¥¥†bÇ;ÍÆ”ùh(ÎË#“ô¸W™žqÄ1Þü‰–ºý9Á "³CÃÔ<8r¬à“yëÒï©i’ùšFv8$äŸãUàônOáœ/ˆ¸J£wy!8¸cæ}¬ÓƒA}uIUå†òŽ6™­£¾ ¸$‰? 8ûÛ]ÿ` ¬?'¼5ôÚíÒF3‘ 9 òÝ{D/ä8¢îe¯q¦Hûò@ÄN¸xô™$Bº»^×!XÁc}ÇK7Æ~©À* TÐË‚VŶ_¶*÷¾k÷@¡)xÃŒˆ¦ ¡n==îW"ßPlªk“T5\‹¢,ézA|Nî°ázÈÎs Q‘Ðø碊!|$CR‡âxÇ‚ºè;&çm²ó¹ÈpJ,eßw
-TPg¦%Õ›ŠëÆÜä:1ã¬cŠÑ
-i„rÜÉA[•@@‡Æ
-‹¸¿;5ã"("ÇL'
-t,Ciz©Ç•
-÷QþœœKžÌÖóEsâë!B•·„n×z[Fã†ðÚ$дñµñµ´7
-U’:Jn¸¤c0<Vƒäƒ¨?
-°iÈd˱
-M‚²–)ã)yçaü¨pùqµÏGÝÌÁ¥1ñ‰€a£ŸdôDÌ¢'‚º$À  Ÿ}Œ5bèk}}Ø9^ Wc•xG À²ÁEP
-jA"`C˜”ˆr&bÁ%÷Nq<æ–:M)ñx<¸Š3¥9
-añÉGßÆ2¿mÂ.jwÅS«q%âôD2­šbåNJ;ÕØzþAU<~º÷Ü Qíƒ#Lçögœnš2þÁ+ ÚP¹¿rˆI¦\iPÖf“ㇱŒØ׳ØÜÐb7ýN¾‘óVcvwºü–³kšQ¯(?Òb9è
-n|Ds„à›¾Ÿ(hÏÄÄX¶¦W±…B
-i!lçD'°n”‹L›
-k@‡Tn±D×Ûñ†Àò&ÍÝ—1—omªhûA-’l¬Ó¤>ÏÂ$wˆ«äN\Gâõ9GîĹD ¸ç»“í/
-GÞïó”ø¹áEŠ?öh;Ùl‡<Í:\JÐ÷ýØ;΃ÃíÕ@›“žÙAªñ$H]H†M
-¼šë™SYoÍú‹ {{TXr]ŸfúE‘÷øÓ\YÌñÓ¯ç`éºH:(2L­fð_›Âr_¤ö
-FgzlÝI–B UÆüÿ"òÉ51Ž¤ùq­·ul§oú"ü©·XS¦y"
-rãØÅüm®PÈ Þa²ëÌLŒ0§)ñæ=Æ‚jÇjé’¹Z r³…ÿ¾ Ý.
-¢¬ªµÊÔUnŽu /±édÀ:‚6ðdÊ ˆÝK¼îpâ8ÆŽÏNišräy”=%ykElUƒÊ‡R‚@á}ÝÖ¤B3ØšœvyXÂb—ÓÔ³¿aݣͰX=*ÂyX. fÛfEdؤê·âòÑÏ[·À¯fhô/"IæÇò=×ÍhGg·JaqÌûåxõк"ú ß}PnÃþ@67'p`âï¯ûÄÇwc$‡|ÜL+˜–úk€ûDd4àUô‹B‡*<ÖÁn µœZ^K¯Ðv*ÌI}7ȱFómth§óóC…œôKœî3ˆ L†ÓŽóWÙ
-BçcQëÿY/—[* ÿ•=LD;u¿èèÄ3t¤: A%ƒ$N„ü{ŸgUí£t7d¢’ö÷v]V­õ^htMák„m|Ê‚EÜÏŒ÷µŒŽx/$¼VOŽ`„ÐülŒx¸oœj NÃIM9¬7€Ón´z2N”y=ü«UàÕoZ‰+kÎqö%ù«N²1øÓ¤3!œX’OÛ‡³£ä!:-,/z ½ã4‹OLL«2–~NÛyÃu <ˆŒ§ H5iH1;ëÏïõ81œDXcÖWÖX_E‰?Î’'ÜB@§‰UzMH¼Á.é ð ÛŸä•× U‘ŒPvlôUw2Œƒ§ÛAûlÝÔÌõ{µ™d(ÐXWUÞAÁîS'1 ¬3Pe²è1¡ÔÞµKq•æ[›÷†¥>OÍÇ¡[Ûv̾áþ|¬"ýƒ8ÍÀšo½ ¯ÈýD%ú8µâ5دx
-ˆ°ˆ¨ôúçf´Æ’NÊy0Ý1¨QG‰u†Fà DZs9géx
-ïÅEïãm
-¿Î0€‚¬k ’¼÷õ§{ CCl<ò°Û´h ©VÒ"·v#Ï
-n¡ t°"!(û¯Ý B­¦škÈß ˪ ˜¶bƒ;ÌÙ®Ø ÷ZeÔA=¦b‰ošzy2Ý[Ä3e¾È&TðÎ:ø‰dmhÈÚ›<¨ñP¸GMc¼E¼‘Þã^_£à+ôˆB³êñM›G'SŠµì ‰
-ï¸ýà½Cÿ ÃD!n½IŠhËd$jQØÚe8£¸Cƒ@h Ø™þa,NåH¹‰ç<G¸B·ô³¶éÚr#é?ùç7å_éñáþ÷Ïñßùw~¤—òHñÿ¿ýr[A²…ÕdKf/Ýáýþ¢²þ¡7[ 8D6M¥ð‡®ã* fxE²¯@ðgèjØ5çRË'"m ‰ëåË‹² „}Ó0Qôâ0 ^FØ,Š¨›tˆø
-wTëU8•"ºÓÈá!q)‡ò–!.åv×çG3^µSP±!¯È¬ Fœ6­`gø¢mx^’ãL› à€•\Ìú°Rµ¿<U²÷ñ¢üñDµ•ÑÝcÖƒîWð'!"`@ЊŠ^†Œ•­T2ǬŒázOeè\ŽéÛÛ‰f‚‹Î ´P"^–ÒñaËyÑ\k $R¡ d®×%ûшëGnÏmÕAÅÎÃÉ2‰ÍAeE¬(!ˆ¬òBëx›»ÁàµÙ€nZŸ7H¸cQ õ·ê¢J1ãŠ(;=È %w'nXÎY’=à0U ðÆYÄ2"<wÚÑ`¹æfëP‰ p*ÁCùšl['m}ˆtï´Ù]âÃ/ðÆd:î”é6ºhÅì¯çk³©ìT®Íöæ ÓW¢ah­° Ý {óÅÞFx¹J:ÔÂDrH/wù£‚Õyíb+W6ª6'4ËÆFæI7Rx¢BüÚ]Ësel•“»™æç B¤—* –Ÿqm”³Yü#¶ƒˆ8S jááYWÍSuh`ÕÝcànzM²¤©ƒä°¢áÀe:±V'6ÓÃü
-¢9ôO\lÃÓ™Þú¬t_s×ÆOZAWãùMŽì„ØíK˜¸v~¢Ï¨sÆÙ°N>VG;ìM›+ÇQ€W°yxvÝ¥j!ëÅas¹æH3íPxÒ^Š ” ;(‚I› J±ŽÌsP§3ß¹|ò;l|u ¾PÓ9MXêh›ç]š'a— Ö§ƒ .Ö–†égž"ÎQî¹Î@™ïÓmafÝ/|1Ny©“éŒßûñÇ«ÄhñÜDÇFäþU¦ûµùãÿq*á LRuèbÊÛTì\œ…nÆ@Š¦#Pø»ƒ²9B.8üCD\|›QÿX§ôëä
-@S8Llm¬ízŒBU9šïxÐt<(’]žc0é:QPö>(®-*¥3¹ì 8Žñ>ôáú¬5ßÑñ¡,õ~SøyybXÌ=7TU`@I«qJŸ
-Àð8ÛªSVøÁ‹:'® B²‘Ú} y
-qeÄ°GÞã9àå¦Ý²`ê‰ó¯Î2ZM—iÁoQAšŠ=-Ï:[+È,Îç»!tõ»˜V $•È¶3wäÙZX¬Õ¬“_±:<‹õ§ÑœTóÚsr'#A€8ë'#¸ò?êflüëe’#ÙnÁ«ô äã|1_fNVý…h# Ñ@eF’Á|àüÆP! ÀywGè¡ÐP8ã³rÎщ¨ „#Í,VÓ[~t­§@¯hÐé¼›Üè¦P~5hS(R[Ö¬îë8˜x†£ô¥ˆÌ$
-³¶¬Ys,q<ªñÀkN«Ê ÷#bh#<Ü®Ÿ×Þ)R‰"ƒvR›ªˆÑ…Ìò"º B„Þ³k¾œ^þK7V]DУ¯½›Pq‡'èÿæZ7
-ÃaïœS·¡m.AÊ’ŒÏ Pá UQ¤ðþ\…Žß‹¬Q”û$*¸GÔ·pN‰`HrÎyOR%û
-áûT5OÅ÷=YFAvcp©;cí0j Ü^Ý:(ªBWñ‹žd\÷ôu˜šêýh‘øé†ø)ðó€<‘x;~-iÀ(>€ÞC¥¤¿¢³|M«œ"FŸ ÔeupRU]ÉBÖŽ­Ñœ,Á@VËF8µtÒ™”ÊhèîiT‡fW‘#Vÿ*­( ¢ÂÀ¶H
-û&Äs¥êDPUQ¸)hî¹£Eu°æ¡y{ËHÝ= ðd,e%=Ð=vÚ@ÂsÌøò²ÿ-|þŸæM5,fœ…jiˆ‰ 2£ÿ©°#³bg()‘ê«w¢x3ë¨á”ûþ ®ƒXð¥tIûkC¾øSÞ
-Q³ÉŸï#x©|À¶®[®D¹Du¥dÎc‚µ¾œÃ$ú3f‘r '6èöI}6‚aü¾üIKô{Óö±DºýF%c¢V»7©¸`¡×Í…;Ìå»ßŸû¢ÂVÞ\äâ÷ƒ!¹÷ìJû!J[P
-èÚZ`½ØÏAPÒ_„ÅSG5x,ý,qv¤ ][?6j§D
-Ådÿ0x\0à|÷ìä%$¬LýF½ ÈâP? lÏ:hsË"Ve®Û_ZË~:ª½|ÝWhÁ¦¨9z_åߌ’Š´áOY]Ä8aèï]/çb»äÜfF—HÖ^Cp¹€¹'­þºÄ¤AÙ:[(aÅÄÑ>’Fã*a8ÏV«Ææï·Ìð¨2D„]Â:¯%\¬=PÝ EQ*µâ–ˆ$‚\„wtl_3vçtW×Ùz7U…ë´B4züg9±@´lŠ‰^´üPj½31tîáyRŽ$å«™QñCâm¿Ó+]Õ±{+êMãÍ7l4`’¿<ébH±ÆÍ%Æï¨5ˆÙŒŠ¼&
-,åŽDýpÿéMÌÉÞª”«ü=G„Ú3صaKîƒvÑÇï\ÓAG1
-,ü¸­Sغ£ˆv Ž2¥uAŒŸå¼ª”'¢-¾”ƒŒÈþÃRª 8uéwDf¸ÎY?1¯ ÿ3ØFöÙcæX<¥qa¶ÿ8@f'9pjœ;´+0´D9fµITšÀœ‚œ\t0
-¬¾ub)uZH:ödíæ|:!CJÚ%U~†@ùTÙf‡ü÷&]—DYÜKýÔþûÒÐïò½/iŸkOïz¦¶\<ᔓu‡ßÃ"ÓI[¹ˆ R9h¥§âÈZBâ%_
-›Ø^í±‘Ö°Zšñ]ð„òGÏOÌVYD£{Q6(Øa&ª»)D‰I÷X8ª`#À¾‹³Ilòå¦Ýox(Òn¿7±SͨYæÄ|‚<Eco0Ws¿Gªz|¤2Žˆýž3&Iºô.@X
-þ<yë¼ð:?hÒçÁñ”ZÂòÆ”I‚a`êѽý^
-÷6Á
-÷cmA¾ˆ@Ú"v}Å‘û@‡‡} ÅU˜[…(:Èv¤1˜†1¡SÓR›,Þœ“®Êa…(^Èê4G
-KߊI[E}:L#ä]®âÖÒÞU¢aƒ‹ÕQÝù"Öm‘[¶œ¬¡&¾€
-å|ù&Kæ·‚
-&›¡€Ž`Ò:w·wCD‹ÕŠ#…×úÀY­
-ð‘߈ó‡
-€q¡ßÄ­Ó0а 3ö-ã]Ç#xD8¾DϘ³š¤ƒÑ Í EÏ_öûALõV©³éÐvájP*QŽ{è."#j@ý¤wCý›VS‹=zígî+•½Fp–Jg+Gyä 6Í„Á…H^ƒ;E/¾)°aË .“R$W ¤Œ4ò;ãÝË<*Æ^Ô`LžD›ëŒ?X×ã⯅–¾þ2è´è¯£Ê¹ÝT¬,ýú{ÖñÉŠ ïŒIÞHÌöbTg·öÕšÑò_ñ²1ŒA­¬‘ÖE^ hìC¢7fÈH¿‚õø°ÄÙ(_ †¹‹æ)‡<yµow{5Iˆév£O%
-%·DöéUn$bc†U–Õ²‘†¹r˜¢%f#š³tÍf_$PSºþ«1°qVŽ‚fN3q¨®7±¸I)NifÖû€Ä;8  \¦¬ ¢
-—‰4ò/ ÅóE#ÔÜ"§[znuû–)짟nû'ÿ}ýÍ/Ÿ¾ûøç?ÿôý/¿½þÀG_üžkÈyýòõõ_>ýòñ§½¾øöÛo~øá×ÿüó§ïýòõ;"ÿÈüûÕ_ÿO ]¯oþÁÿ~ýüãWççïòçùçßù¹<ûÛoGH¿êÓÃæ……_]Ì;ýøœBù_A+
- ýÒç Xâ«_ )§)>?³Ò¶×»ÙK©Í»>ã£Ðè[ÞZ% ÔE°KJyP>"â¢ÿ¬(f@JØVÛp2;#ùÅóŒehâ¢û‰BZ¢ð^ç²éŽˆûJ£iŠÈ¾…êû,1ËY‹1âb¼1ÂEÞ7‚X/£
-ýE‰kRԅȬÃÀT2‚Q‰`]wB+ǹÒÈH[k‡aN„ÈnÄõæÏ aØóK©Yoò6‘ÙÞQ /ÐT­ DA
-9¤Á«ÐL.чîÆ)±¡Kô¾ ÐÜp –w<«…™À}¢m !#'Ý‹l½:
-A¡Õ ªNºlÑ´xй6ËT‰V<ø}{¾†ÍÛA˜R¹,Érœ²Òö45®S{ƒ­0áîs6¦ïñù ¤m†ò6Üù:)Ôשê ïÅÎ^|@—µpÚåsR|XóoöÙ© Gù Æ+Å›KÀ‰Ã`ÅåM
-.öA]¬DÓèåòA­†Øy8\ x¯‹LO"`WZÕÜ`0øÛÒb†"BhZµ(‡Æ·fÍßþ×) Ó)Y3ˆAëq<3 0Y›ªHø‹7NÆÉÞlÅŸªf"„— ifâ#Sßéúîå©•±t“"¸eæÐÔÔ—ÌÁ´Ƭ0^&ZöÏÞ †[”F=PUo
-•Ïeðì±LƦsµmlµâô|Ðp„y×Gœe.C£[ù{ÛjyÄ@ЇŽß qYA—µ{Xžîø\·v`ÿNt+v‹¯e¾2ºž·ëAW»õïæâ÷¿8‹cBB&Õ­çÞ¦
-‹¨%p¯-ÖéÒ AhÕ¸EÚˆˆ: VpºF=vr´c§Eïš)0ÎÓm®Zr^—]±m‚ðóÅè4-;>Ôœ²ÕŽÃ´Ï0BÉ~"2ÑÎIY|°^Q¦æd›nvdŒÚôd2Úä“)U÷lp—†B}4Å¢TP î Cp…
-H¶"0È$‹Ì¿.ShÿÍ÷Ñ\§J”é
-Møù
-„&R§h¹QEè@`2Ö×N§ÇAhä
-Q|Ç Ĩà
-xç=ZšÖé3}˜(Ö&¨'*TT›=ÖáH5}ýÉmF׆uY3
-×A›Ò´Ç6A }æ/‚É‘(,+¢?mïCœ ¨¦·õpu¹ŽIµÓ^j
-õŽÝ_˜qo¢·xEÄñ ÍŠ×Ör·ãÕ¡>þÏoÔnJÞC[!9®y¸Ç‹È¢çÜ–¹Ã`ö°ÌñÝÜm±<Ûk"(ÞŽ.ØŽÐú®¥59Êq½Ö‹(‰8×h œp8¹Ã #ž¨±/Êfï‹­i+Àä„%( ¹¾Ø>{AÐx§…=)^Anô„¤p㊉Méµd¸c«yÕÈG›¡ˆÐÌÈ–¨Àiˆ«—õðÙH¤„e#qóu•º!BÊ¡B!‡«ÌT¿Af¡”8µJOŽØÒ7N–êçú>ìÞÄ[ÒfH@‚ é'ßfT<ó¤í„èô¸î–ˆ­ôÁ¶«`ƒsC­Ç+@^wª¥zŠš¬P; wâ7G"j‰ Vð ˆìYTN®‘ö‰#ÀP_;|(ø⌌7Í:£côÉ–¿jø Ê«C6ˆi}î´“ü@äUpð÷…m¹Ë¬ ºÊ-U
- C¹£ž
-ÔÉý/zr¿yS¦QóL ê=4Nœ:¥´N£¤uZ:‚¹ôÐM&žqÜ|±Gò{ÒîΠŠJ;âÜñ¹^‘ À5ù¹¼O!ý'â±HпvõBÔ4aµ°ÌÜF$:¶AHŒyFåDŽ
-DÆžˆÚ‰)4×NA·À€$À£¦.UŽ‹EçV‚Œxúû8…ÊìNc*‚äl\s™Í¢%FŒÒƒ DÕ#\òK¿ˆ–öòã=øWÏJÖ*õÒ­íp‹M¥QÑ645<†Ø7†"¸0GÆ]é…Rþq«í®FSYÍz½9'N²8
-'y4•‘v×òÙ!6qŸ¦}¬"ÀE
-µu÷˜‡ÑíTñ"|lÄÛ“ˆÓK ðÞ lTº{<?+ñ0O f?2…‚¢Mú])) ¹r/õhéx‘ÕÚ}o£(@y&”Ü3!ûÏÍÕ‰¢q[+Ë`¨»<|ôþ1ô<aêœ<NM¤°[5'GóF`0ZYÒ=kÒÍEÙ>¾áò®Òcâ×´ÚzEø<œ©Ò149.·Û߈ŸÒnKª|.ŠWûe€ *—³cÇe=Ö¾]óHdÙvÙÙ;W’bòøú¿ËЭØD„&N•uÉ¡¬KLe Áí¥†$·ÇCI
-B)¢h´óøŒ 0WsÞy`içÑF‰Î
-g-ÆNtcˆ•ñ§ù·d8CCƒÖa®™.°Õ{ë;k¡_S—Js’¸ES…Ü`fl¯uâ1Ârç}¸B†z#Ø@·Þ°’dÜm v¢(føþiKÏN´ÂeX?jahMµª·`ŽCYéЦágI_¼/Ã'Ò´¬ßÛ·.Ã`³ÇF™a>ÕFf_ÇÖ5Ù*ç“öãpzú?ÂVyÁUÑh+2»¯ì€Âø5Q·“(¸
-ÑÒØE”³*¬@ýÌK?5 µÁ£bœÞ¨8ÑTݨ Pg〴4
-îõ1CÅÙ‡2¨Xó[Ò䬷ÝmÕËEñƒ"Ì|ECuzwL´?,øŸÝÃØßÜÌj‚áÍÚ-Î@i]AñRÃ$ Äž‚E FöÑŒ"½‡Ö©MVp‘ÉGFôUyô®sÐî~«÷¥Q£.بÕW x…óWgâÒ{Îc8ÀW ß5à«é§\ÝïRDqRe¨ë~鉰ÒÀqÁÅ8M˜Ã@,þ1Ç\ 1b,äïv^æîDr¥ÿ¨•È´;+‘Uå€û÷À&i~<Åç·ù8YO¦™Ý"åà¨5MË1FëiÖà
-
-)¦œ'RLÇB¼Pºóá¿ZÓ t åÖP¾HtiG kFß÷M 3æÐÞaC‡î«¡. ‹”¢ŸÀ¨aïÖ”Eº¥óüPn®òç—iPBv¦ÇCÆv;9ÍíòòJ'ß%£ÉùÖçÖ1ÔÞ:|Wª¿N(q£º’¨Š'¡_‹-=?g_1àÖs°*Vé=^«ŸùaÄ»+A|RÁ¹O™/‹à-A°1 x˜²íÀr¹ˆ;âŸç¶Âº+?°C °}\TÃí’ ¶©UÁk’Ú—*5O¾B
-òvìA2 9Ջ؉àíó®ƒÌ`n~Ö/óÛfP”
-¥oSBà+‹×¯Þ»ÃŒ¥µÏ«¼PПǕ,šŒiȪûïÜ´Þ°(Å1´8ÒÉ«j‚+²íNÚv7¿ã¼d’DuçŸ:Ìøz™9U+2Í6HRÜø3WÎσµ@ ð 1‚½D¨¨myÍ…æ´Î¨<‚[̳•pÏÕR°·q€þAÃ#‰ ªä Ta| LÛôÏÓ|[Ü–ž‚›ÂïÓt‰>j) 4ÌŽ»<Qêì´¾!° ‹‚ÅgÖÖ?+ý²¼ÕÉuÛy°;¦w·…ªo[–±¤Ï‚?Ï|#r¥–F¬35¢_桵BP?TÁóà ™ÐºD׺xO'ׇÅò^ò…Ç™òj´Œ("P¨ö\Nýß»\ýÛôšš¡U |;ݯZÂ.ÚPŽ†¡õç÷åÛ5›vóÌÏ yG$R+JíÕ™”ÖGD9œ6”"ý?ëeÓcÇQ…á¿ÒK;‚ëúêê*X9 BY PP„Y¬ÄAÄc™1’ÿ=Ïsªg¾Ø °cÝ~»ªºÎ9ï‡l¿ªÁ“ïöÁS4
-r¬'ßæ“øDF:gTð™¬_º½½óD¤|­¢±æ
-VÚÃ)7úŠ†§«é’@¤%-ØÚANbp‘|¥MŒBmªc ‡båPî
-2\¶m%Õò]³X;4ìï!vûŠƒ¤ó£QõP‘(tHˆšIê+8PLæȤü$éÓ>hc |_•±,§& ¸Ÿ9â-üªÅç‚G¾ýp}Km¶?ÇÛY„:ŒìTà3²Xõþ2¹)…¦ŽÄÕi®gøG`#ÌÕ-8÷yðÆírÝÙÕÃJyS²uè8>w~’ú+DÛÑ‚êûLe^%½F©ã´0,5„§„ pë”qÐ0Înir’dbæ÷®q¨·9Â9rm†²/.%rŠv¸–VñͱÜú>cph9rçRÚò0ØÍô^b
-³<ß^üñáÃÛwÙž}ùåËï¿ÿøÓ·÷¯Å>ß~ò×üáÿ_|Ç_ßýŸKÓ¿o)þ÷êÓúe{õÿèÛ³çÛ«?ýçÍòöâËûû¿mÏ^~ó‡×o>¼»ûæïw¿{ýöÝÝW÷ï?ÝÝÿx÷›Þ>üöÃýÇ÷kÓÛo|ûæý›×o~¸c‹;Ü|:AÚ^¾á?þçëß_Çß¿÷oúéüë£þÏò¿~\i<Ác£¹Ðªi‘é¡×èrZ÷Ó‰’Ž@ABi^£DÀl]D‹0âvÃR.ôX ¢Xm ‚þV(fÔ™W’ ¶ï0m}½û¾•½„O›20’ÙrFA6é ï‚™ç8µ2¦íH$LB÷ÇqZuBÛEùÅPÑÕÎs*J£²‚o,0 ˆàƒö…€@c`.©{žës
-¬¼Ï:–1ž1%¼ˆyʬ-,è\ˆ˜½ ƒŽ…à³=lœ¼‡ˆÎ®vèùÄ `I§;aÈñ7«à­.\6ë D=¾Ä+§lÿ~P%\²Â]¢I¹ñ;¦+1âÎ?,~ѲÅE“ʲœ‡ƒd±ºèMäá ˆ1.i†–\¸ÓjƒÔЄt:\|~XUØ@ªJšs˜<7”M‰ô#õ3»Œ=² ¥`'îpO¦Ÿ²§„Åâ£øé´U¢PìC]ZÊR€Â¼Ç2[@ÏìñœŒUfA.¹º€<ÇZŽ3‰¡y<íL
-ØBõHE0$¼ÖÁ“{ p$¦1ÖŸë$˜Ô8IM pŠ8’c¤â´Ä”oñã9{L/vsËpÀrëã*A ¶mCáÐ`ÂØn/š6×ï®ÊÖk9˜ŸÞѶÀ*Òä-h߃Rž.½ßB ´Å2³÷ÈçòŸƒ¨!îãcÈU8ð‹Ž„A«Eä:¬Ý‹ÉÇ”\`¬K!ñì×€ØÈ›¤yçžq4qùŸ/3—æs Ø%žû³Xœ—ñòšÌ€‡KPtçm` ³}r¬Àº6%ÝÊѶä9쉠i+
-#EõÛ|ÜÀ†”Ù±yï&^ÊÃu nÐcËÃpO`¼'œ CõôÀþ¦ì^ð±z\ÁH¿·Y!™’SáÓˆ}‰°- NÍÔpl:,F ¼FÄú$'ú•ËÃeð17ÖðÃÁչļw,ÛîQh´½Þ@ÜjÝ+vÏ‚Š,a ú´MLÌä#G
-'ïHu<±#• ˜p^ a™±ø‚ÁÛrÜóa‘dwz=Ø]VÎ&·±Œwï5Œ7=²ý#ngñ#U5»B|«=g§8æ\¬/‚à! Z
-
-ÕГë$FLĨí8Í7;ö
-ML’ãZBúôÄ°=]Ú®
-'ßEò ä<ãÀtTöS‹LGg€ö(ȳ…¾=à±ôeŸ#yav 8,{¹±NÇô¥¦±§4òæïpxs¿ v5¥VkD=ÖNר‚"‰Rã›7âbFÁ—•ÉQš5À-Stì$ „n¬»¹Ç:6
-B18÷;BíÜÙ)ê!:b³ èYd›‡8SE¥1Û>Á©Ë?1ÙŠÖeU‰hÚÏ}Ø<;]dÛ΋ÏF§¥GiƒmH…»Ò}Å*½ÛT¼2ñúߊT|‹¯/f¿¸ˆ7ö„Òe=d¿Ç2K¹«\ÆFtGMÙe¨t´T¢œ´\ìM'Ü4ÇDÊ°™Õvªçc[ÊY Q´€(Ø(¨paÿ$¼ÌŽÉu(êJYP‘ÜI{žcÿœ¤ÔÓJE¼ù˜è¨¼âwDô˜±Ì 'ðÇDÛÑü
-$žmêc8 ä¡JCõ§wÚ*èºò’ÎevŠ .|.Ñ7ëO/Ž´vz˜‰:Y‰¸:ÁâÑ1/Þ}:>®¹¡¬—eU”PkÌ<÷²&Êô`°u q‡pÒ½ŽÊíNó¦çÈ)"¶ýæ¸hé5Šœ®'Pz/PÌlº<F;PtÃÌꊳ›€c €`³@q/s­<,*ÚðûJTbûz­ãS<0]5\eh²¹¹ÂaüÕ%yòŸÅV–…§ï‹u>øÄçý
-QÁŽ`D½f‹­y"TùÒv 07¥¥|GRÕk-è¾ œã‰xuÛt@ŠÆÂtöX‡(É¥9 Ä^n…ÅQN&ñ2 왦ƒù« ‹Æ9YóŽ?òå ÕÕ›zá^VS„î2pQ Z!(‚8ÁÅÃÄÄ FUA@…&
-k¸ß;Ñv ’’(šCT¹5¤2…~¸VZ˜Ýkn>„' 2ä$”ôÞ‡9ªÎ
-»¦ :C<^¤×@EpéþÞië\k® 攀©—M3­ù=Ê~:[ÚÁ…PÔþ0c‘K¬qß„÷ËÝÌDÇ[ÐÆbà×ôRIWvbLš±ÄÎ)gõ¦ Y{~HsQ~£wõLòÑã×øÍ™~³UÃ!„p¶ÜΖ3†ä&¢¥‰¸CÈ9èd¿ÒÓÿjZ¢q‡)2ëË5pÅ0¸¼'
-ŠXòÉÆÊŠ1°L*:|åÃøNÿv‘CÕ¸Ô¤[Åj ¹äîó €·£g–*X\âwû…¾Ã^,Ãî+í«ì§ÿä<æÏI3ó`¬6¦ÌßÞ‹£³q±kÿùy¥E¬ÀŸ5} §ª«(1øúp@0u¡5YwÇÕñ>EÙü6½ä$.m'#¤(·Q1¶î*®ÛÑ-4¤º.˜Mqå‘Vvo@\¤L(‰ )çPŠõ\åÂéêš‘ü袠¼:ÎÖ¨÷@|UÀOá„Q3zâW›uí_ZR¡TY½àà(. ÙŠ[¨%Ý‚¢‰M¸Úa­Aa1FQºký2Ý+®¥³ÎüeèØ»k¿X‡­ñ1ãTÄÀ!¦ÎœßËÌSbï„Õ‘AL
-¶½_ œ"›ò0¼1£ç1­]Á­.–vΨº÷Ä¡Ù¬f¨Gа뺛éªÌ_„Êbx˜~´¿a=–7(ؾ—qÃMŒ»År㪼É ö9t`õMÈ,òö R„ñ_]Q(¦Ølá—y¾
-w÷)B€fØâIô Ås‚ES¸ðJ´{rÛš¥Á0çµÝ-½¡¨¬.œ{H›ü[õÏ$Ñd‡´ Únî̶-uzñûõ_”À4Qá{Û‡ÏG‚?©ÎÚ¬à"?¤­…—%4ó‘Ô¶;þË;X‡ŽÆ¦s¥V¿Æè6 }d1øhL‚°|u@\Ÿ$LeJ鯈oìBÄ”]Råáû8Hls–§YÇÙ³2³K_ø(+ÿœr;§¬9¤BW"_qÃT ([ÎnŒl(¢kl@Ào40zTº…?Â`•º*%¼ü>Ñ¡m¢"„
-±D–E±ð3Žâ¥à «3 lrŠ’Ä}ž1¦ˆHÞ¾‰å™i=€¸HcTò$Œ-o)c¨Ò€X$ÕM„)ü?À2>‡B²ÚÏ÷
-Zj¨Ë¥ð˜ˆåŽ›"t ™ðóïO…÷ᢱ…“cQ…7ÀI+Tz2LP,ûÓ(ÈÀÚ¡~îWkNž+W£ ŠžÜÍ9êÈÉ~TÂ>a¥ÙI±frŸ¬‰#±*Å nãQõ§Jl*î2è9ŽÆŠÒ*:«¡‡ú› CS¡w‚q|X•&0
-N °1š_S?Æ4š^ %[ô)“cvº¹Nñ^ƒ0†”gyå'…˜ƒ5ÛþÓ0¥EX"ÓTY›‚bf¶
-å£+¶W§¢'ô»®¨|@ÁíS-
-™¬)«Ø×½S_öu·ÿ¡Rn½J¥ƒó˜ÊäÔ|C‰:…öþþÄòÀˆ3á0o½¡«0'S
-¢ªEÇP¯é/øäð&¸1Ï+š"¥ZJU=¦¯…·Ë54á¤ìŒíÌ&ËqCAi\ŠÉ½fuÐÌtµÆ…µàSŒŒ|ºñàø
-Ä`©Áâ0q9Wù žxÐn™ÖÑðQB pð }£ãùÃò=Îò;ÂJ¡öèÓ3:®ãar ÃËþ†³pT€¯ßb˜þЦ2“!—Ev­* ‚e4·U†%2
-G]…¹ßs}j€{b ­ÁË£/€8k[ ê/L‰}½ðm¬ž„J £X#ìùtÃ
-º=> ˆ @1èad)¾£Ô|½&E¯íEItà¡EriË „)¯”=p÷¸é*en¡®¢0³ËP†©á"b<$„'ÛK"ô`ˆ;„
-ž¢ãtw-EòCÆñܨikSÖ@6Qµî ÀÐn¥êŸ"©U¥È˜ˆê3­áˆ° |Äâ,lÖ€¬@É–Í"¨ÄTâEÒ…³F¼,¹©˜ü²1šW~' ý•Æ "“Ûóc{E⇚ˆ%çš3Ã÷ ëak‘£¸bG©Ö¥îwܬÆK¶Ïv)øê²xA›³Þ:hãu,]Äò Eý¼,jÌbv‚Á}}ϳwAÑñSx–Á®ØÞüW€
-H‰Œ—M®\·„Wp÷p7IQ¢8v†Þ…7òÛÿ4%'ö9 w»Z?dU±ôjÝfwþË™Ÿu“—u×.#›Œù9\_ÚÒúÌ6ÚäÛÇpy¥K o2ýqyEd¶!¢Ù¤©y4“ÒdtŸ¦àÒuCXPFæ³ÛÙ¨sã03ò€ºÇèSœÅ}­ãì¥üŇŸ;ì­§š5o 3ÔÂ…c7ýüò1Z¾fÓl­3ãôý hp—¦}äçBÌÌîFåÜx¶öô}s‘è>ÂDú¹ð6lÌh~•X›!i&Þ7HiML–šûâ–ÞÍ¢÷ÁþꚯdQªÇb±wr:¢Ñ¦wÕ á÷Êñ¨`œF¦´éf]¸á€)»|ÉI’}DÛˆª°çtƒ1›5³yHR‚ÔNúê|r®0iÇ›u¨ž@&-ÎaøAjçZVÔ²—d—L›£éÜ…i TuJ®­ì5G ¨2O›Œßp:·—áºîBáYí0KšC«®qCšE•—>MV…ÆT5[Ñæd¯"€ ôaÑæÔ8O·®‚ÚÙl¤³µÖ7„oz|KéœO©²iܨå3´sŸçŠn1L¸•æ:eO( áóõãúù7„TÊ©§%؃Öÿ¿@¥ØIÊx2 1ù;òi§–œœ®¡Õ{ ÒÛ( Ì!Çy:µpŽ– ÐØ6à"M…Öí´ EOŸa%/ pw1^l-£/Q¥±´W؈fõܯ 46_v0_¥{„¥Ó|Ü1_ß`Êåø„¶cLjÓ&­ŸþÔ†¢ îT·ZÚçB‘°u EÆ=Ðs.ˆâ’è]¶'¶~[[ 'éX;%<ÊhüMѶ©ÃIl0M›Ný¦ã_ ‡rp:Áš­a›GÓ†¶ÞL§Æ!þAÑã´úQžnÍPÿ8ÄŽé®h4ʃ€tz†zXI„cL“iÕòƒB&N‚ màÂÈUQÞn½¢`I`6·ZÑ\Ô¢ìçÏFÄ¡ÉF_>0ú¢Y¾ ¡m5þs£aã jG±ã"¼7‹vø¢ûÚcBU.ÊÕŒl_û:—˯ë H&È–† c·Ñ'ë½÷ýÁ‹‡ðR±îóÑÂK=¬.‹tÏi<—mÂÔ± œ.êX^".~ÁþI)ÆÙ
-’ê2vË#¯1Æ…ÛÔ¾f­E{ìRÚ
-ÎY‚¡¸![«Ö Ü݈7”1ŠZ{ôßA¸#â£Ô‘KëOžñ{ ÜñPŠZ©æâÅäS‰mO[]Oxcè¶&:!òÐ6ËQ?P ©m²Çá—XDyÌ’&HŸý·4:CÍ,¾–ÁƒèÑDú‘µk8Kà¡›:˜+IŠ%<ã²·‚0ŒD2ûã20ÇÊ(1}>þ]Y¹mƒ¬0'–/g#2[åÃÁÿúa…38‘,ëÈoÔ®º £f[ëôbUÆÄ©M p:0ñÌG2´±HÜFZuå°Â¬W’%Æ}bdhEd²Æ±wš€uMª¾§ Ö…ñ»,ÛÛöν¥$m—»ýb€¿5Òò\<ˆÍ¤²#QòÊ,mvFFC,\~Û_П!0êHÇâ+Lãðhã³ @†.r­Ò xü3‘$Àí&³0DÇäÛÚHE‡q¹6ó ñ!^ lÍNãr8­§|¶ Ü)I„õ°KÃâ\]jâ­VÜA·ÀR !öjE¼æOA0+sˆácz0peT0žo1·c“>#À°á&‡s“A˜åY—þ'~¯’ÃFõ}§Ð»ŸÒ Ì£Æz­«£ØLZ= Þ-Ã(p²$Á©Ÿ;1,­t»åF®õ`\eôJõgŸß0ðë"*š¬èJîÁðŸZQD­N¼CQµ½é× ¤‰”ƒRH6Y Ûv¿‚¾ÿÉ™~„^ãU±‰˜Ô»]V… ã¨ÙX§§ÝB *ezÏPA0V¦9¯Zq 1°Jï ‚à‹Z:¬‚"—„WÍ—d`&¤íøoºb‰¶V© J¯¸Æf¾ÕŒCËXº^Foó˜"³ ?¤¹øÙ’ÙÄC`PyçXÅ.‘ªw×Íü_@ßHÖª¼ÿ
-Lõ--©—d¬wÓÓLµ²ZÊ7êÝò4u{°ƒ(ü1½oËX…Lªèvćòàk+I ¨&nŽ°«s\DÅÀ _Zì–’Šè„¾¼Þ/$AºÊ¹Öá2 8'—)1Ó*Æ?@l5–"‰é×V7ŽW¼¬ÈZ†7 )ªÁŽ#OFmMq²nMSP Þã¼^ $i.\+#Að°¥Ä¥Ê³—‹R"·ÝëÀ"xHÚ8ɺáÞ¢Œx³¦R*n­š£=@Þ9ÓO ¯ ¢¶XE„vœé‚Z´”˜\†¶ì”Ò01£+AÑkÛ³±!Ä9œAÎýÒ„´t’\Eä¼xŒD£]|†%nÕÓ
-Ì,®ø¸†F=†’`µë·úŠþgŠüÙ­¨x"‰ Чuª\JÀ¿N£dÙzWpÈéÕÌF$—¸nŲõx©ß]š©·¥Tþ6¿2]%ðbø6¹Š†ð„7Á)qåèdð5ψª þÁ¡qÿ/›Çüu¨P{}*ò oÍTüĘŸqºÉeð22LYÎR0„£lוÐdCT”Õ¯Kï·Ö¯Ä§üŽŒ½¶U{[ ëXò¥Ü<,!ê¾·9#°Aî÷D¸7¢é•5aÍ+ˆ ¯\úTߤðVbҌǸWg«u‰sMé§ÔX´†™“{É|·Nå[ Ñ\[wFW\k Xy'••æ¢9“
-¤)û¨¨<kRXÉ9A—xè^ÛÅd Hï‹«˜"f‚Ÿó
-‚ÃZàvHœóÜA?×ï2ƒW°6r>ŽÂc.gÏ“ô¢¦ gÇdZêGÐOifA¤ÆÛäu5ø4ë]¸üKeWŒy\©‰_3óØÐ÷TëØ×ÈrW›×¤A èÊ„¯ed–· ïœ8‰brÑ$úYÂSŠ³–©Ó0`Ë”ðWÙCÍ1"Ì4™¨'Yé2ƒÉì #µŽ¦rüYlö3³áÛ?Œ—9r½„Oðî L`_lººÅïR÷wß—4#¦QSè%>“AðìQ¤ŒeÙÞÕÆ@~–ÃíSX€‰ªð3;°µ¦âÞ˜èÊôF&UÉ6ï/í
-Ï3w‘I=Àãò¬$Gá×–¶
-_3\ûqôÓ³1+–•—èYuíF‡—m§Í3Uâ
-oôø²xwsÈ—”-\bóæñ4Çð#â‚=«ûK %Ç$õ'ÈÓ³ö a»öá
-L?#ÁT6m;q©æé2±1œŠÔ: onõËL-›XL5é–UHuI&Cš—©õ@ƒCÐg\FS³€È‹ðTd.ÈL|N¤]”14%·Ò4_i篠ÃQA{:˜€9hS"³!˜¶ÆÿT¦²Sˆ tª#eeÛrBæ­Yà i„$ÍQžq ëKFÁc )Ó "!c0z¯íá2 –ÙÏX­Î“"<«éÒ·0 à¼(²Áô»åõ omÚ_:@Ê!§B[ö9÷Ë —­‰¦0Õî“ÆKNUîƺ¿Šw«Ìx©h1âÓQÛ?^yà‰Uœœ«Û¦d}éÞnçœÛÌ8—¹Ožû¦s‚±H&Ñ'­nŸkÐÈ=¬ªÌ^z€¼õégëDJKò¦gâü·Ú 3e­è¯b1_ÑçêÑ0Ç×n˜ïOnôW×`â¦Xe¤‹ ?½˜Ìjtဎ;ñ‹5à© ªþ!FŽW¤çvl¨Ž}‚ [çÖ•àØM²\л>Ú^yY³”ç¦o2
-·S™»pê{wg›N3âtÛ9æ>3Îeî£ç>êá77âîÁ»ù}Ÿ¾®µ#„QvH:]4xs#êÖÄÙL^‘|pbº8¾uz‘ßï³ØkH•DÅÇõOÃ…˜¨P”ШÍÇ çuÇ×>Ädùv™ŠÑ‡•à±¦l`Íh±mÇÔòÖ(«ÙÒ¸6,dÍ"]_ŽÞÙã2¯±ç§™£6ÖPcr4fƒ¹Åg/2./ÐÂ5…X(†ÝíóÚÔKª£qA/sEóbžÓèSùÕ¸>Y=ùᜑS‘*ô¶…÷… ›Aªk\´'ÙCm ‰…#/+(ÇÈÜzosc!#T“rXcæ|ê¶?æ8Wéâ*ÍIJÎÅŽ§+5¼AÖ»Ùü4Õ¡ûdˆ¤ˆ#e¿’q&Áj²Ó…`¸xRA|gc?üÝ'Pk‚ª£ãÔo%Ž}r\᯻¼V>b6†FèÁ8˜›|ÈÌN 3>i`äÒ<®¥„æK)˜ñfØÙ’«ÈA¢¢^÷u=¼Gˆ?Œ4üAx5;Á<ñÃ1î¨Ú
-Xäá2üÏIòH5úo
-/È„*`ÈSñœ+ƒÒ8¼»ö ‡Að@·¥ðnssç£1=‹sˆòQáCÙÏF9áløqÎ96ÇeÎésåMñ»Cp6áFp¿íÓ×µu|†ŒC{‡§ýÿV;{ï„H¾žëƒA8@ó_s¯72º =Î&}1ê)$@1ÃkL3Íd€Fœ\1± eÌÕ ÓcN
-­7éhmV)@ )Åè0‡Ò% 0¥œD¡u£)1n.Åõwƪ‹³lÔg¶ë´xwbgîšØ‘P‘¶¿†ÁÒµ»¿| Ê”ž}C
-UšO žZFNì×d/ RÔt‚Ý_FŽF£%”]Cl"ó!{ÛÉÓÒàØ£ß ™ZŒ ¤Ó£YGqŸ cÈ£È6xŸŒ'y8§©`9”jŠY‚2ñŠ),Hå‡b°²?Eƒ¯rË×V0ƒ1°þ±àã6¨B折̊ƒc„ö%!õ*…œ¸zdsAÎiGD™Ù¬VÙ\œ§åðÑÈš(Ên†ø#Ò¶[sGKèøÜôýÉ–.ì)õ!óôÒ×¥°ú9,K¦=`ا /Lk›„HQUÜaž`¶Î-’A&‰vTÁ·Ž4£ûdëXb ïL€™?äË´+f$yIË2øu!ØÂ
-ñq <HÊíd\h`AXXšEÌÂ>X˲T’<„”Ð÷1Qâj8tŸ4D—„©ÔÒºOSa’ ôŽù¦¿ä œAÛÚUÔf&\™êz9Á7P@¨7ïé`mg“èúª1§Ö€Á‰»W¤"h#ËO,ÈÑÍ7„¾„‡"t0ÂuæðÆË$;Ž$¢'¨;ä ø|ÖÝKÝB[êþÛúG¤Ä d‰›z%ôp 6”ð– KmFåí~ŽXF1²íj€
-6Åm´ËŽÐî5ãƒfýK dw¼Z«×›R×›¡’C^¤MŽàc…œècØIT
-£^"º6wY³•Hj¾wóK'Ú«48pSÖ‚TAœa0Zê9G‘
-0×6Ø9XÁÍØyÚðþ Ø”>Ç°QE%_ìéùÔ½ˆÁÁðŸÌïœÃ2KD1€û’%ùDN·Uô©Aâ‘È>M2Ò•¦Ë¿¤è60!lt½Cî‘0Ôó¡%;«nÍ4ßÀï/0–p%G<­/(9—(3X²ƒøÅÙïép:„!ÁëÀ¬â<&¤LG<s‘¥.ïÁ*c§ƒt¥]OƒÅ€¼ÄÂâ¡Šú⸵ä+uŒŽ'ÛÁÙv3/t§€Õ¤õˆÔÕ˜ÏÐÞ‡)éÌcVüN5í7çað$Ãßžy¡ ‚ÌLXI‚h8."ûmØ,è…L‚KµO)SL©q^QŠÛk«É"êŸ\ŽÜ}}Ê-W…úQLûï%ŦÀLYŠÕüK÷"¢Ÿ‰¦Ú1ØLº¾hëö ÝáBêUƒ±gâàž$ œ’)ü£ª9×q탒v`›ýœÆR }K^Ò ÊSB[»o:úÈa-ÌùaJ¶òa/ßø¥ä=})úaqÚÒ%õú|S¸D5,v>Ëc¾h03·j²« î§d°Ã-u–¬^bÊ(‘JØ^’ù»Á——‰‡Pra‘ÑÙóx:º¶=EQÀø”” ,ƒd) î–hu÷žÃ(xcƒaÅ—~~0e­ +ax\$U»ŠÀ"­º–¦¯ŽM…¦¢ØaêSÚ8ǧÃú3Æ%j {(1Ï6tv~þUü}¾)¹`Ö€ î|×Âb~c^ƒt$º‡£ŒR·K—9‡êÄ‹¹ð‡Ëòi^žÜ†± äNŽZçá|c†) gÇf°À08©çá™…å_y»{çÏi¡+±îJð‰Q™x¼C)Ý»¤’`\eX#óÞ´ÀK–{ÈÄ!
-1éi ZEE–³=ô×Yrí-/kéG%ˆÂb=0šÉ!ÜÕî˜éá)aÁPBô£_€À£)hâ~ÿû'*"{³ Mqõ æ^dŒWX_V¡úÇ6­‘™XÖdJØÌ$Qa›¹èèŠT:]L~
-ûÖˆ„«4ý>÷¢/úúùþaAïÂÑÐ}­Mû(ÿÆDþ²"¸6¡Oä y-:W†øᶙíþØ‘k‰IRcKÕJŸV’DwS>n´ DcEx°‡ç tÀ5ï'Û›æh’ùb%¼ªñZ¸røöñéÆO‘œvà^d„Haƒa5Ì÷‹naÀ¾ŸÐWjZ}[s»6€Ç39¸´ü!ýcw)£ÜÞzȱt#‹³Â-dÚ8ìf?) Zff
-õ³féŒ4:Þ!ˆ­-×Þ„P£Xyð2æ47‚Èõü;Áà3L­ýäh5&¡zTWot-V\âL?º ¶ð¡’LaÚ[¼ÓÂZ%u*V’€´x yiöœòø¸žmp] ¶ ÷@ãå©Ç˜Vz†Oëüµ6œßmG+Mä*(¼PB¬aqtt;(9_Ây£KSº¾Âs&z,ÛÁ×[ö¹'{:´¬D)†‡g¶À×Ô¢Tµ¥Ç,FP„LRh­|m‚að1$o"À“Àf<ΕaöÛù¢D“p•3ž‘NAµ_§|)9O—å€ÿ1]‡[‚sÈ3K– ù9¹íÙxW*ÍçYñš‚=æa
-•Â3£þÕ h¸ð?vôùÓÚ8§â©ºÊG+¤'þgd±x@ÜÂ"ºt¶§û§þåW ¢t±b¤ä;»wÞŒ
-,VßOÀ¦á1éÁ4 E«ÙBêäà”ÕÒT-o(˜ÑÖ9µ=âsäeñ6ÈêêÛ÷9±QæÒh€• ’ ­
-`Í÷ûÓ>µE¶•è5,Ó½º_ƒ?€ŸÐKGwŽ*
-\.™‹ÄgYؼ®FYÁP|Vù^Luš¿0]„øHÚ‡´µî´wùNM$M|KÂÛý}QEðQSÂo2ŸÂ gÌú^×J…ȯð³Ó#á:¸á=º=.☿ÔCí~Dd˜'`‚-°±Ãc
-‘`|m“-#½N§s™ÁÅ;YÜ  3ÒØsYP‰ HÚÄטï71˜8sBÑ{X¥Þ†ò1$ß'h4áNº•…¤ˆY”Õ
-iÀ<è‰&ÊÞxá2ïxâçÛü-`ÿZ¨•?]X÷V9!°â9š­ÓB”i¶3Ý2õ1ãÿy&´d6HœlÛÜ¥9þXÆð7‡B.Õí Ë9Mø*³Ìi!2òc/ÍBX£¥Æív‰eÍ­“&›¸þÜÅ4Õd-œ<èЪ`‹17û ˆÄ²úACšINÕÆ=&ò¬ )„@='åÝ‹¹U!ÍÞ+æfß¾EYŒ‰ŸTqÝš¿Èñ²CàëÖ—j¾¸ºoÊ…1ó\¿§Ý±%‚FœªAZ«O×–d1tùE’â> FÍ!Æ©YˆŠ’ãÊ»ö­T^M—À L£h”3™apJåPV…Q²<qõM/E¥‡ƒàØfã,|\Vˆ~O
-Õ¶ÒeN×°VUÖjõ{Ð+ø’ñ9F¤ƒÝRî—µºð‚Ê@#zÇ·¹†i
-HûÓá*M²UÔ
-éŽÊ«„è(
-“¥"».H·U7_ÛF
-ïÑS43š`I§°¤“ó¯Ñ”aéØÞR´BîH}wBV]°Q8Q­o–¨ñd )àôá÷1ÉÛë’8îD™ œû¸æÅš8qU_šî8NÜ-NÈ&fbS—ÔjÒ…C¾M“§¼B.n&
-›ÙûÒ({ªBâ2sG9Oè¸
-VÞꎎãD(î®Rñø…X&
-°ømŒ¤Gg˜^~{›ý.è2xý¼ BØGéXYRæ&Sd†!¹üµs_2 `‘–£…PAü‡Ù–"€:',„hêÉO4ü³¢‘â‘÷ÏÃÖeJŸ…gA‹Äɲ–,„áˆÚò…â„ükHÙ•©ò˜y¸ët¤Ò-Y'lN™y©àV4S#(òµíI÷ ¶^¦žC
-üI”Ñ<‚'Êj)´²ü«PXù€
-Ó2'$µ­Ê³)BÈ_ƛӆ5¹Â&ϵSQoËñjÜ‹Tøó̇u§•‡H‘À¼ ŸÄd!¸òö•1@O¡aKë<:I\ýY‰·›7Ñ¢Fóne)ø&Ù‹S;7‡µ±4–?¶Ü!‰ÁU‚ÌÈÞXÃdd­æw——Í[—š`ð@3xí®#k´2E,Ã<p^Up4o¶z¨#…¼}:ãmƒGF2b;%z€K‘Æš½S°¡”æÝmFAîØ<Y@ÌfÄht/ëÒÓ‘©µhÉtb^ˆïÇ‹ÑLÖ•ja¬;]‹ÕÛC ¢<…{m±oÅ[]¤x_ûòzÂaT „i`Âørrp‡ó[.=8§$FS_i*ráÜßiJÎ1~ˆ[R¯y(PFæÊfOøm•Z!ù}ï4¤ô
-–³mŸm@ó»ÚN÷n v˜Ê$
-÷µ/¯ëâƒÂã
-´*ojÙ¼÷ï%ègõ w$snÏ
-Ìê][{]+«Ÿq|zqìó¤È hÕÑ£+J¤¼K€4R„ò|dø9ê~„•jž<rk–,¹}•ïrÆ­ÿ<'ï܆ۛ—Õ›<:Ň–õün®ÔÒä¦m!>§çlº³e > „–gùL™"æPZØ·¢J©óÆ|Å}w¶:c
-j# /KørâZw"x${G…]¥ˆëÁh
-fìö¼ñ[ÚWZ0êîÏkCRåZÚãXk3@`¿àü6"qñTÈu«dæ͈¤÷cæÃLs¬þˆtÏÂÍï>ú¦ð=~ýŸ 5¿Ðþ\¨˜NN±Ø&… 
-Q¢>Cóß4pµº\=ôÚ„`<<ÑÃ·¨U2m(LL¦Œá)V Uº„ÑEå²-ÃH†É
-''†ÑíÒ(L;ð!R´ð”†D¤C‘»§xù~£®X@±K1”G–#ÝAuÑŠ®¥hrP¸\|ì¦`r X ¡ž¦…ðG±ûyFCBž¿Øx™ÜGäÁö klÔ)š­"Ï(z4“Û ó­Ò»4Ð4ÆŽ
-•äXñ*ΡQ5
-ä€ì«_[Â4!¿ý p,Ç,XŒ”—íBãðe¯‚NÍ»‰LZm *¨ ¬§aO¾4¡LûK!Ȥ‡6§¸ùKþHb–7!"=A*©Þð‚â£ÔCÍ™Çøyt)DŽ<rJ³ ÜÒÑ::°ó5“ ]õÎ `a¯¢wÇ
-‘¯L‡Ñ«þçqAz/hÔT«»’ñ9†ÒAQémž>­ªð‚
-#AïZá"Ì9ä=¯VƒÑÜeô®YXï5œ–Š‡¹_Í‚¾ÂSi<óŒÀº<kî#¿å4ðKÈ*
-\™Q®šï9Ô íb$Úí¬ÃïcÒ°´eP9’îÃí
-·†f À}'ÿ‘§ù¶ Aœ8ƒÊÐŽÙ&‘…°Ïߢ¿*Ò«JŽR‡SYü½¼P~+¤¶tq<Πíþ§KˆO%ôaÖe`{ü¨kˆ[[ÎÖwHœ…%ša 9SÀ.¬ÕòÅ=ñÇlÎHļ?Eß@jbŽÝ‰‰)ݪî'ëÿj¢úI9½Ù4µ0𸕠ËùÔ¤¼Dvrh‡g,>*–ÿÌ'Ï?˜<žƒ¬Œ²ö!i—ßrêBTª
-bYëÀ‰BFˆÓvLèï`Éb.¾xMã
-º6Ì.sÆlaúÀÊŸKx*9
-ò+³G GWÖ®E_«ÉC °zÅ…d¾d8q.é”ñW6¡? Üf’]V‘µÃO(€ µ‡`¹{Ì¢òS¬—÷˜u¨Ïµvì®ùÝÜ·›üîÓ¼mˆ–qÂóœ4On|i"Ab(¦ýv™í³®q ¾7´ƒ„É…§
-õMg ¤ 2)>v[°g¤¨âºLF åæ;<¯kæàûaEL~1\N…IúÆÖø»¹/tÅö6þ¨~¿–m“znG8é fbˆ P• ìjN—oÂñ˜‡8 0)$(‡ðš¦ã‚'06™Ç~F2 Éø*›'_F1c[jø Ü(_Ö»0¨Mò—· {bÁÙTÄ[«.I¢
-±5] ”áeçbma‹"Ͷ8ìk„'65R ï@ƒpaµ˜¡;ÔdÅÂþQXÝ×ÐŽðøt\—Åc
-`eÞ¡‹È4:?Ç›Ó؈R≠êך¯_¼þc—2ÞLä°Îqœ¶õϱ†˜
--:j¾é„ŠM GI ó
-$¤oŒ</"E¨«Ìwú8mk­(H–ì2¾ ûYþ«d°M(ì²QiÅ.fKâXëq-‚[™1@È_7E±7šÎÏ¡];Œ|ÕE‘;]àðÅ—™AØv$Â’ÚO¢ÄI8‹Ä <Ât1•ˆV*´Õc££ˆ´~ z\Ç YB½ý·dàBµpÆ~þÎuâ—Û\‘sxÕO½9Bý{ƒ%ßõù‹•ùØίtòŽ­ÄYž>÷ç¦(„`›•¥rT(UI<\'÷ÃP*œ$7|v?j!Nѳ¶vt?šäCÆœálZ®s?˜A,ZÃç…t4?`yà(±á,ܾ ¨ew}µ
- L×Ùá flÙ é MÌDŽ\ƒ×AëiÑtóÃ{¦¼ª}gGhQ`»y~- ʹV2aJ@’å¼1?§¢çþu¬÷ÓÐK1µÙYÈiCöp–mH@6G@ÖÃI‰AJÝÅ£ü4®ª¥þð8ñÑE®%o5Å[wAgÊ%h
-¸ž™dmæQMLù­dá†ÕDþÁÞúø •'k‘dÐ˾ 7H w-:O`šÀ²÷X¹°D,º¾fGõÁØŒ §gvšfÉ0¯k_d*’ÌÎð‹N
-ËgÈ ´;sö4ðlf)Ád`xYܱûGÑ&ô=Š¦(›9Ï#ªçƒeQ¦’Ò§EAÉ¢¼÷G1 ¤od%+aÙÙo¢kÝ\#B.çAð°’PÒú¯z¢ï#MX³5‘ û-Vîm^k>nj2{MåðÕkmûǺ·†ž
-\'!µ¢AŸ/@O<Ô•ÙTP7·æ=½n\1úVÇ‹ürçó-¿h
-.Ø9›rª; ›O Åcƒpo>gý,r$_^«éqhш&ÄAnì/ŽA)ØÙ«Ë€9„ß'c\ ›ä]èÛa×OåþÕýKp«0 œ{e.Š§v²OVµž'H´ÐÐv.\ä€å†à[m! ¶* ö;+ˆ¡EŠ)¾Þ„þY®øÓ@%-­ò’kóë ¾N>%‘övžÅ˜ó#Íl Sâ_µôÛµ‘kÿK¥”jM—•¤Q)êk1ÙrŒ8wD»×
-„-D]*ƒVüñ~ÊÉð'ýS•ÔC£DOFãÂ.nûS¹ÉìB˱¢ Eáhüs3£ŽÈ:úpòp éÖ¼/·6¹csdÙiA„$}I@-"Ì3u&GËÄñ¶Y{
-³?]<¡ ÐtÝæÕ™Ž2Üã¼KûD¹ˆƒüS ‘reµ¤'äJƒŽº@<1ãÇ;ô¹yªEèß–)W2yàðÏt×H»˜&z6åÄŠ¤Õ€‹ÌÉ̦HH‘5&¸°4IÇû
-ƒì!ÂkŠ¬î)Gô¤5{žI7€:©ÈS$ ¥Œ„ÉKëpõ±Ï 7ÍPÆcº‘„
-‚h±Î¡bõšÇT ^x!oéS&²«9AV ¼ Æ2Iƒ@.Q9íé‚ÎñCö
-å‡,ZÝF•TìÎêžø÷yæþŽÁÎ Í rÏ¿¿dOFc¶±Û"ÚQµÁ: 0ÈÆö/yƒr™4øÑ»~I¢°Þ¢ö4 J5¯è¿ U©Äìº(CX¬©2W@”fÂ)_ÉDŸjy0œ³ú ÏÁ©P–r±Wd¡EüÚ ¯ ºAè,£¾FwP6ÓHq›¥[Ó"õd«âÏÒó±,ε‡/kXa¤y `}0ø\·ýŠ)¬óóð¦Ð 4È!é0Þ©qj ã&ç Û!d1yÆK\§ÆL WkHÕ §ìržÄŠ…¸èœçŽßnsgNðª;Ÿ‹Qý©Àä¡Q?Þ™_¾$‘ —†"§’ƒã~¾
- g“Ìi…µÂà^gãeôaLFéÛ—ôgã?C &²`¾ð¢ÜsØ·’YrêЇk%uŠx÷zt[!ÉjΑ¦ZúПØR¢ópÐK ÿì:Hq)p®Ø9ò GÞ4I!^)ò²¡ˆ¤òâªÌVg{a±gx ÜZ¥ÉûäVêu¸†ÓUî_ÅFÇxU?…{MAæe`©%+×æJ91ÀŒñÚg’j×â5†WXr²Ø­ÄÓ¯ÑHóÈ2-©¦æŸúËpþZ’m²øöeÎCÄÛ’ 0,I9pí “: •ÿLjG9öž²)½êmISDK-É#‘]œ‚)‰ùÑÍ›ÜDc›OyŠ-I îp*™ž£
-‡-ù\¾kŠ?cEógj úɵ™/¦uקnç Ù‘‰ÛXé:¡‰‘Ûû@oF’WìíŒçú4Ѩַ/(aZ¼Œ²5^úš KÁéÄ;+rCH6veK¡ˆkÛµpQbIG]#|úäTù¹„·sî`wAnÆÎ6yÚè! j\ }&FÒ6[ïGƨ_c
-f´=mN®»¼€ô¡Ö,…ëSÿŸÊ¿–WòïÊdð× æãgBZu«›¬©›Šª~Ÿ:äîuäwZk% \áD·GöõEáÅ)D;e¿9Cè+›%ùâY:*˜ˆ«(¡E°š£¥‚a’h!T+‚Σµ8Aj„φ¥hߪ–×UÄ?´ ãRž'±À‰‹ZŠ#¦¼ò"¹‹!ãCݘX²ôäŦloƒîŽß>·Wfëʽì× ø”Ň™/™þs÷ø²†y*¢;{´{TE¹ìj:õ¶4îÝvšÊ1H «píçð
->·ß´Y}ôh†ÓÊ™L[‚ ëôêÑX g€0ûÍøýeŒ~1O—Êo"-NïœúíAhRüÁZ­æ›âT?jœ5ê
-å ÅKAÏÔÉhÂÉi Ëe b,«<úÎÆÄ–p¬$%@R–£²0åŠRMéò@`©æ›ŠŽù¡ˆ´O,}GMr I)ô#É`X<™uÚ燛$DèÆÉ›~BùøºyšŠ‘B"þ Î+$‘µìVmù(;Àarò,i_CŠuž’ÁjqÕkDÚa×”%؉¤¾É3›t^7Çêis7óL»b…“G5uœ•˜R_•=òAÍ? h:ÂUÛ
-†+_èbÙ;R¡¹cÔóÄՙѴB“
-êªzè³
-²ûX<@Áüòì
-²A5LìÚÑ3K®hASÕvžh¿mÄp&}’»
-j!þ-³ÐBÑ ië(½ Á€òBàž4— Z˜º —ÚŒû¯AchON@…¬Z;ìVé3"µ‹³‰ÀB2c…Ng³þd¾OÓ,˜·„P#ùÀÃ[UIJñ{_ÃpF¬[ØÁîI½žÃ¼ËîIN—çÐ+ƒM&USHI%îé8c¨ƒÿ¢Û:²²
-ôm–,K•šRH%=
-Ä¢% ²0–íj…îïžï¯(*ÀÅxüP¥ª>w×i‹gƒî gWí%ý$U‰•ØPˇÅ`ñÐÜ¢„>¾ó,Q?n—}/ˆqâB>RKƒÊ[À¾>Lí*dªKl]>$AÝaQ5[®æð/±_€Mvæ—]%B”7`ýÏD'¸¶Ên
-Áa ìHni5¬t¢ê‹6†¹ˆ˜²[ˆ_5–ŠgÂ^oαiª püzÍÿÇìÖ
-²‚/°`¢rÓ*× gѧˤ“X)Ÿ ᶬé‹åÕÁF)Öoãªê$¹CNæÑ—OD›LyÏëØ× ‚R;¡#˯Á_4à¹v²än°[8¥¨2–„ãe›Ý4忤ö
-Œ/†
-ö Z²~’h?›YÇ>”G}öþ&äiJþs ºÌû]Ä&L)ˆóÝ Ë
-¾Üö­˜'L¸.×sЇáKÿ‚büøX/(0›˜¨J™ _nA}Ëð*r©¯òÒ¨ìáANò1¢öe½Ê 5c“"¤òs¸iJÂYc±p(F£ í·±³kHù§Ùì…EE0’¥Lž°ð
-A™/Þg Vf ¸.ƒö>C5=AsÛÝ™X$%I¦Z .uc XàÒ=„—²È,‘°Bšøo+ÍBbð64($ºÏUüœõ†AV
-ò‰é.–¯˜B¤¤ÜÃìÊŽ—6ˆm QlÚ_ƒž\ㇽ‡£i˜KÔù·ƒžäó$)ɪUIǾ,3H«H+‰ƒ“8ê\,D”’ÚÖȇÌùñ2Ç‘+‚è úeË(p_LAcÊÕ „ñ$sî¯Iþú3KÓåŸLæYÔvÌN+ÛÑÃõøÑLÂ`–­ÓdWƒÑ/†ÊN3Ũmƨ‹™Â1QÝã@~Zgx".LÏ»¯¸ŸSÔ}S$w¹;l£L"^$,HR{I¥SI/Ì9mÊ
-Ö¯ìTí%48=cÇ„*‚H”º“ƒßáVcXAèv$®¦ÁØA¥ÐWÕÊãÄ85ײbalRý,è6¿>1£¶Ÿ¦I÷dZŸWmÇ`íH*¼"Ókû© B¦*7˜Wô¥Ó-ÃäÄLð†Ü—(T¤Q¶†@®xHðÐ6ªÂÕ!¡{ØÉ)&Õ¬ v
-R¡V%ìaÇéR¤|L]ÄÍ -º,¡9ÝÄúŠN™’çt"ÁÜ0$à ¯/š‡V‹ÿ¤Á¶Š>™5,~f€ 
-@)_@>ÔéÛ5uQÓÉR™š7ä¿W9ùƒµmù‚ NÐ1åÎm'[üD¢‹/?ÞÂãë¿o_þ{‹Þzè|ÅP\Ï…*‘:iÿ4öpA=HàéCjö0NG”pƒcA&Žs?©Ñ4–6É襵“¡F1ʉQkÇDAÛìho1•—®pOÕ¨ë ¢‚ךæ2M?ñ¢!HÁ²AH óÐõYr ºi<Í|ÅñÃî1ã© B[O_s¤Xºì¶Ô[n+X',£c,H¶æ²©M³%ìxCül&À¹,pRVê³þ8#¦ä6zmhíòÞ}C¬7%ŽC9xú§`ª0ûÌL4†Q$¸ ÚŠ¬§ÁþfrE$õzQÂ%Ã;¼ªí›²\=ªíb215Øcsï+TSR³7pŒßz¼®dùÝQûuÓß›X­¬ßÛSkî„eiߺϣ4‚˶v?1>õ|üVœ*E{j“DlŠ–ݕĨrQæ–§!8îWs_Õ"øþƵ+d·>1Dûœ$*Šl¼ _ ·E™$ÂaÃÍ ‚æªd–_C
- éœ%²r„02Z¸©š{ÎÐ8rWï{!˜¬@Ú¤ªÑkw …âÊ‹áB“ßî©K¡:ÃìWZ€¬0g££ó'1ørØCÛG¯%ùn—‰T,ÔxÌK¦’…ÃÈÄ­)Å|S°:Cì×
-Té5÷ {H–UûëY‹;dÕ‚øºÃ~³{kæ×ÄW44ÁÔeÓÓ°¨·•åôª†Y|Iÿî£sLyeGnÅô$öXíÎH"’D”6ucŽi—Tƒ¼±;5„‹çF•!þ}ÕßGËìj¨8sF½*9l¡HSV@»¨ ”ra㦆άÇôݱ Ô EÖUúóºè×gbºIg¯M› ãbÀ+­CG-.ð÷ï \M—FR9r/{ ¼ÂöyA¨ß€3ðoÙÌä ̺{_9ñJ…95RHK]§
-H‰”—AŽc9DOPwðæCEŠZg/ëÌ*ëþÛy”ô]¶ŒÊÝmgXÉ`0hZ¯!½5®½¶G7¿Zm¥©[7•Ç H”®½ ©ÅÚããÇð§K­Z×jm¨«ã’î@8§yü^ wo¥—î¾0.ü&¢ÔÒåñ91^‹[t± ªÝ¢‰òë#!£µêÝZ-Òö]¥ö¦¦Íl
- ‹ØGò®‹ªC§È‚0Kª¦ò:ÝX‚ø<p6i×7(˜7æÌ-óœÙu=E\bARB <ÿšzŽÁZ,Ï?@ÖU|ƒ§×joÎi%¥ ¯Þ†½y¦ÏBÑnàmTP«†í®o²CEf6Ô79~…ü»Tû¦LÚ,Ka„‡Óc(æÚrè0sŽAQ—”EúŽù{õœ*ƒs£?s±±Ç)Å@Ô0Ò%í½KõYW=—üpÎ3q¯y&à1ªg"ó ê‡1Ew×1¯ÝPÐ^ͽ"Š¾ü»Rwë5Í€rm8­K«÷*’Ç'‘£žó+èÕ®;Øë¿¿i©†]‘+%“Ö©Ýf+•FãYØ0˜¿ Ã«<ýua;½êˆµ 5í¢OÐ麿ƒàiŠ;ìÓÑfN %+´¼v&ÀcB ›&[·áo,€ÀŸ4‚ÆãdÜÛ¶û„”TöØvË1µ°ºp’ÙmçK¤¯IŸ›ý
-ÖÔë×N€ËÈÙÝçöáWîEq 8W娦C'‡c0‰À·6žsçb™ˆìK,À(uAžê0_‹1MwÊþ8Õê™AŸ„ÔûZm\j¤{§ó.d/ ŒÊq¸gf 
-V©Q+3Ý ;2¢òFn;c—¥sÂ{$]ö‹qJMr€N­›©ú—§ÉMˆNa¼Z웈»±°7Êmkr•ÄXô¥@0²†wW‚ßœ ¼T–«Ìß@þ`èÇèÄõÆ¢ƒª§½T³ÿôÒ§ë¾zÒ„ck=ƒR_d®u®rì!e÷Ã~õ{‚’Á]¤ª˜—0z×Ó¨+…ísÈò,éׄymõó½!ø㑃\€ÎòR¡™i‰Ñl¯¨8+ȇÁ³Úæ9%9eTÜboX„ÊûÃÙm×UEs× $J~ÂÒ#³¼zYzÍÊò`ÐÏ7 :&¨ Ë÷¹@¤§³¢ÆÚ1r9 üÌw¼tÍõ ÒA’ o#’³¸P&kó‰€Ó,_8ˆ¯ìàkÓâàè—¾ÐUy.ÿ–[¢YB2g¼gÌcJŽ[ÞL©Æ›Zý¥æ_Û' ˜²’ì­kyjìE„K‡¢–86– âÓ€¸ç{Í TÜ™¤ÂB1
-&äFrÇ<`-¬¿EV Ä
-¢v>¿*8ÏÙ쯲ñMPÃûAܲå>߀øDÉ¦Ì¼Õ ;Ç›lo©ßÊîš³lÕ SÃ(tñvH¨*#1'äbF«RrÞÃe¤À(Ö:…Ód#•í¶6˜P¯­þDm™[bñ‚ NÎkÊù¨ÃŽQx3ry;ú"ò>!dª;~âkÄ[^Kµ¼ï›¼ ‰|FvoÛ7r¹âÈ=áÑ‘©àóm{÷LŽø‰™_Éi¹*›e¤ŽÓ;¥ìØ’÷»Luà´[½Ô’¬4]VX9ì»tòRºö$…ˆÖ3³Ó*‚â*mBfr[«1·Ëþò
-bÉ2 .ë鯞n{Â|~çE_nBù1Ú–D/Ø…³›
-J±´MV5¥%tsê„•0ÌyÙî&ž%ý  å¡Ê†)âÒ#Tˆ3ÿNª±Œr"2ÒÂu–<mÊ8è—Ñ!šWyt™ÂŠi‚ Š ½’î‘_i‚Úo3e" ù6× M(„z““ÓDô…@8þcÐ;M„A¯4!­k[]·2…Ñùµ
-à€r—Ò„ÒŽ[6‰
-Ì‘aWĈ¾éüc!ÿúF µ/_§åF®~*®ðƒ†6£è(¨Î¥’†ŽP § fÀCrÀQ
-ÁJúfqAO*€n.›iÀB3'Hù:îÀ
-âÍöÖ‘ã6’‘2öç²á:krXBHÛuÜAº(d~DE¯[¡ÎxE¦®F\ôÏ £v¤Œ)- |w0a„1Ñ8ÓhÝNz°@Šôsj£awîë¼[ê˜ ]7n"ÉÀ)òkRNeÁ],–ÑÓe}˜RŠ&Z6àG2ÞC¬d ÝÊn
-çB•Æ1µ$ØóÓДޘ耕5ÊBlwEjZ~ÝÙi^ºÕÔÏŒN×Q7
-Z‘Rû|¶®àîl_>„`þL¬¸®oõ‡îR#ò_55Æž‡váäˆMÓ±Ô„AgÚ«Ê alÊUÅÙä0¤ä Œ²¦©F!?œüDÐYBùî(JoðîA=ŸS¸hlÊ°œï4V’,ðn_ÜQ¥‘8¤s’‰gðAIã„€”¨¬Jw;° QW=ÀÙŠñ Ü&ýMplA…©…ŒW˜ŸœÒ[S:°ûCÓ(+`ÙÛ<!²O&¨ÅõŽJî°'?Ón°7S2\ÜxÎL@[®ÓËj8êds5&DŸMA€2Ï–-C‘ˆ7¸%ûd
- ɧ¡!1´g§RQ²›tißé‚ðT
-Z£Çš¼'ódÈœ›|ÒÓ£ÐÙØeíaH¶AeJ ºI#™ËøK ‚~›ý VÜû9Ay€Ð*#L0´ï‘y^‹¢&©Ö™{ëbøÀŽæ×ûÆ4^CiûûH°†4 ëp†NM9IÝç!“²9“n ³ùa;‰9:ÿ$*^F^8Áþ2y3%jµ“U1}ÌiQS¦O á·[Ò=àL/Q~Ç#õž‡ò öz(¨‡» §mŽ!/Œú”Íš)KêÈKæ°ùh/º/œmÐ
-8ÆG;_z3‡FGb”œõu Aj
-FHÝBº½#ÕÝÝb6©iõ'ô<
-ZùàÒ|
-Ø#®ÔÀ©Š(ˆ^']¸D­¦P¸ ³’Ý‹»rÑÈCJ9ã>!€5£Ý×¼Žá¢ŠÒc,Õ‹b"ñ˜8ÿy7ô¥RÄM‡­±ñ£m è8´.Z|S|@cí“¢*‹÷ÌâZ£Ó`!ò:Íu]’^`< èX?*Țį|ËÏ˵“˜oµuÎX|›?Z&×hÃr.°§’ù^ºˆ÷ö¡×É#(@=o–ÕpÔäV?è/7ß÷Rè\Vƒê'—,¯RÚjuqãÁU(þÌv-zP3!ÕÓÞuT’ËKàÈçD£\üs‚(›%äóæ»/²›‰ãÔ› °¢aßH`=!ôâbzÛ2f4…?.yU%VÂôêÏÌ>]Ô…ùžUZ×ï…ËÓ3Š—ó5ú3ål!§ë\¦üœ¼p⫵@£>¡vÇ
-‚LkAÊkŒqs
-ô Å´{3!òSÕ3>Ü[Ƙ/8/©­z!Áê,¿8@—ÄÖi_8§¢¤rx¯=1µLj¬aÒŸÙ FƳ†É1„¤VÂe ´¬ˆíÊè×;«¦[š=ŸˆÁË1 é;^È\ŽúÀyhˆ³Ê ZmYUO~qÚ‰Z*¢Â³Œ¦u ¶ì*¹÷ª*tu©Ì½ ]È:œûó¯(èM’Ž©`Lí~'–Að…DyÍòvs @&óÎ^Æ”_Á©‹™?žYxšÞ#™‘uRHC—Ò¯¯£ŽiX'MV/(É7GÄ0¬c$µyÏ1Ç=MCÇ«&»]ŠoÅ4&×ÍEbà~6L²Ó°F‡³~D—¾4?1ÌPÖÉ@ùÑÁo1¿-FÊ€šZ<E²M…%r®UgKµ@ªÌµÎÀEýƒ̵#Q:ÏCcSäü~äü?ÚËu·ªäˆÂOpÞaÿA‚I8ôý’(?0HÑD&‘HÐ E‘e°!ÇöÄc’ðöùV÷Þ{÷<“‰`/wwU­ZµJ¶9§®Š\ eŠqViÅ õ•}².Žê¶ Õó¤7§vR+·†ÉÛs·2Dgg#£él³b±AWlÈLñ‹µ‡Òlðñ†¤RuG\8þ¹V«GaurÜ&²Õx6›‘lÂ,ÎöC­0-Ì]Ê—þ¼ ¢‰5ã¢%¥¹?× >IÔ80úeSÑQ‡º¡‡!tÖQ¨UøÔMŒÕdfþg_fõm³*Ãzâ}ur¶k© 'º{?…q
-7³)ŸÉsë˜Âµô0n–íç˼Êt„mú’að·>ÍJÊ3éCºÖ´ ;
-?q­ŠŽí:W‹±.ÌÍJoR‚Üõ§ãd³v…Â3sGkèà!]í~D͘…q¸s€àÈ&dˆ‹m¼»sØ´õP™E† A’^CËøå-øì$q~hq ”,/* "‹
-
-¾~Íš8ƒ¨Ö\egMãUŽG[µz{ŸžQ{™¹½4¾‡jóà¼ó=  qÊŽ…Û,í]>’ $»Ìx–jj.¡#c0{-åš½ÄaœÉvÉ›&Ξ³â¬0r“ØxŒšÆ®
-R0ÅXDŒÒHÌƵ_é4c§arSÅ$Ý9FçJµ šä—ÇðVæc¡ä /°#P$ä…e†äƒ;ë1e&V‚AG ÿãH—†§Ú@è’ðšažaò€x ~ÙvˆÌ© ýÃ`«x¶îT~·D·9¾A·²o—1/PÆ(“ßB± îMé‘‹ÎØ’,ùìK—Æ“uIsŽ9†W-(óêÆvšdï5=[šdeí4a´
-¾/-³Ô¤ö%§ë‹íH³Y#ê†Ñ&øøSQÒó姑×>feÛVja1TÔ'Z·íFw*ÞõïB{úÞ$º Œž¶žŠ8ÐȺ¥U¬õç®@ƒ§Ž®{×+ñÏ 1✠UŠÞÅAß[¼Ò%f-N£ã¯h@Æô
-÷¦ÿS
-›?ûÒs™é|ñ>ú÷dÍôbúëßÌtÂǯ_næl“ëQ¦Ýdºåù–5üæ#sýù¦õ…÷%…ÂÐ6R°dΰN±HÐÇQ®Äe-¨™Ìx¶š§°«áÉcÀá•e™Ö Ùqø€ÙO &n]ˆQÌtÖß³ºlwŸgnþ¾ùnsA´Š’Çšâí=füqA«Ù'
-ûëJ±-Êj¶Îñvv@b€v3(T/½Â;*{&kŸãÓ2iS`}Ââ'~Ùé®°µ¡Z¶–GV³©ÙñÓl³äc‘Û¨¬ æ’KÒ*2<‡Ý­ÄR•ž\Ưam"£«†APÏtUm‹Î0‰ã8r@ï‹úá F—ycH3Øe¶œaèÞØ-&űÌúPÆ‘£ÑHº£-&j¹7ž5ɦª…Ê#o(C¨(ó8ro˯[£7Á—qà á’‰ ï²u 5»Z0ã3W  …ÒŠ{wP‡éTuUçˆD=Q,ç†lÜ{FåzúFû¼'Ó+ÞÃÀ†‹í›/ Ú/Û$ÔU …­Q=;‚Ë. šùm"E4po½È0­Ì&Þg{àáWjd€¹~?eᥠD¹ùœ$'ÀôReh5«1
-º– ±½®ß#”q9ÕösRR4ô—Ô~Œ©ÜäÞ²ÄðM@¤ñF·Ÿ’Mp‘_0™²/W!ùÜæ
- '¨;Ôš¬¥¥öº‚lÝÙïÈjiÝ&+™ôàÃ\š-¡÷>ƒx d¥åûëœðã
-Uh ~zÇ¡€›Wá
-N>úíß“.ÔŒÙÅlõ2àô!Ÿ°…&†¢7H†ÖLþ*çŸnøï¬i†ÏLÞd²ã‘»¨aIïþe¥„Ââê‚Í«öa”ÀFÐÇ9ú›Ò’lÍ9ÈL\¥×9œh›ÄæG~¶ûªÝn/(!Ã:Ký8÷6©õùœŠPDÓõyUÓ
-"ýh»3šà¸e¤¾}ΠV
-çòÆ#ÁËžVÁ£Á€éÖ1¤¥DõÛáå*”VÍwX:BÒ5Ú=âÞÑey>§|dþtß[~Í•m¢ gØ’JÓ27HÁq»ž‚>g2àc¶«†ÀîÊÐä‹@vŽ|±y€8­×ˆ´þ1óMì¹]ï©8#
-1Ó7äQFyótBÅ‚þ÷ªx÷¹•áæðijµuL/EiåLʘmõº!QS_!x ó_ÛTz¡»?óh1ë&&5ŽjoËXHÚ80ª¾zÏsL¼öرQ?oà•Ò×MÙvB7s2 ÄKoáuSóýã”h]Ǥh°Y.ý;¤D˜Õe‹IÁJÛcF!®rîÜBÐé9¿n2¿Ü—hwÀÄ`úoÝ”I;ÐfÚÜUK‘3Øû
-á]“Q›Õ»¹Úì¦;0\¯›²·œ[g>Ê20W¬?»ïÕï~Ž©å‚ê°A›WY
-燰Œ~‡\¶BâÓ­ªHvjsÞë)JÕ²]mó%,J£øöICøºY–¤Š›§éå&·{Ë"5"Óx©ò¹×>€q³íq{3äÆËŽ1ŸëÂÂÞ¿$J-Kx­¶™Ô ,=‚àyŽ P6+TÕG þU ¼ ’u4Ëñ|N½Ô´l-@+um0m3Üc Ëk\ØH/éüëª!¡¬õd›¤úV„ÄW/7
-q}ÆW_!¾ƒXj¯³ {°_9¹£ýº)¢€Ž0݈Á
-¯V!´W7Ú-Šß3ŒÝý’Æ«qn!äB_±~WVþgnÅ·¯’HmÆœ\Ú˜@Ì:e®3•±™b¶L[¹ ¿Ÿ!Wð4VÙ¯EÈ_óÕ—£aÏýZýþ!g˜ÕŽžÉïkBEkAº}ýâmî›A†—†ª|Åypœk'øc'žF^wÄ\GÄ}Ò‡Ý3á~-êë=äŸY„¦4+d¶Z'—ì<gÆÔ„hÖÉg¯Œb31c ˜4rò’5ðÙ¨îxNn*'¨‘öÉpwg#ü ÌÌë;€À&0ùo]™OÛéc<NÞ¾Ÿñ¢v}gáÑ5ø0w:C‰[ô}TEß¾/ì×4NÛCBn@·«Q“çùÕu‰kÞqø¡Éu=ÙÈ»(ôža(ýqgv«“|«V«hzƒ^3¼Á™«fÀ“$³¨¦ª)¾îÕàê½ÅÜ÷2§Ú "]”q·ˆ± ã4.¨t7}/Wéêu R@:N¢GüŒ§‡C ‰Ž(4íPG>l´B' ýýõ -^µgŠ]ý~p_71æû^n––ÇSþK ¯Nìõ] &|[]çØŽ‹vèÄc¹Š¤ ã¡s×ú(±{V|¦w~ÈÛ/5Zf*‹_?äݯHo3Œ\ûÑA
-jcÇ醌(¤|§?‹×Gwc> œÑCgìe]Àg¸ ò[¹ŸåpV‡L^ a,s"ì¬Û³Må3GlivÂÕs˜«|çj°¼ÁëQškª†}HéÊ 5?´s†ÙÜT­m¾©¯e(D:厂­âÊÈz"F©¶ý¥¹8”á„žk%GBjlWYéžÒW²÷±RÏUЛ
-¯BÞ´|òa÷M¡üÄ
-ùHý#èým3õùäÔ W_=ƒŽ2Š±"¿|pQrìa°Îz™# 1a…òø†×VŽ1%Ì3ÞC5CKmøž:ÒA®§Î­Îï #é6‚ Jð©šìYeå¥U*DZÆTƒLqÅ9‰ù¤ÝÃ0a`7fx
-Ujê–ê?‰§3Vœw3„$þÌ/Ú¬
-SÇé¢8ñvSlPÌC‚ĦŒ –ëÜáÛ>‚Ùó‘ÉàJN
-°Þ§B®qÌ;ˆtïßÊîñ—RG3w}`çöBÛ‰Q¼Ñªp½ÙlÕ ÀŒïÖ¢×@ÿÎ{K¯§e‚)ý˜¡ßSÑÍ -bH»Dìlµ·’«/îìeªó䪦Ù}ôæ•áaKƒf舑1ûÒ—:bÃá]pžÓ_esò8¯7@Ü6ºZÇSªñ Ýô´Kt½m=/Syçu‹bÑçÈ)`~Ÿg vÔáRn+9åbú*&&uV}‡‹,•å^Bà”¼÷AÑ«»týïÙÑ˱ÿ¹ýíÈ?ÃDËuìNü0ü}×NCK ë ¬þyGNhžzx×*õ~[édTú¼æ+¥ßÀÔöœ§^€®tˆtÐ(ëi˜¶
-îºL¤ÏY´:©ï÷[PjR²+Ѩ©à62¯M‡I‰lWA¿Ÿ à Aòoe¹Y”XgìÆ“-ݽ8òG/ROÔƒD”nP\Mí;1èG³èÇ3|†|¾æ*F/&­
-Œïšˆ
-÷¼½p÷ÀN4hnT©R¤
-õ‡ýΊÊ\Æ;ž~ kÛë„„š•ãq=ƒï'
-ÒÉ2ï·^‡–)û¢›áÀ IßjñžZŸ!—ÊNó*ïr°}¦o^•œQt§‰z¹XP´u®Ó•LMÏ
-dX^ûTÍÄRz{Þ +"íKƒ·ížë æÈ”ñT„ºë‘EQýÙÊg—^ÎÙ+ª¾„·µï}½vRg3ÏøóÅ`”çÖêýZFõÁÀþä¤eë™i-Ô’'5[Eȳ•»õ
-ÎΪ@E=òt»íÊ”«ÇHÙsn) áËi.áè† k6âä~,ç3
-E¨«…"‰é·œ
-lv-÷u´øè¦C–|´ÅJ„k«rŸÝGkIÃáT5çœ8‡`£Uç:¤_ëÂņ;È +…HâÁÂ62¢[Pq«C“nÒ¢A$
-Z …BÎò*XŒ T‰a¼ú¸q¢Ÿ«²wXuÏ‹õN(
-éÎéë: VGCÐ2-(p†oyý:‚mëQH:íÔœ°tj‹« ɸÊ`^–ÒÄÇí{»¤Ð»$¶Î‘8؈ãrŠ*HäÌa*Ä.ª£Ÿ©$½Ã3ˆ™hR¸Ùƒ œ‚o÷"©)½5–ïT›pª9Ym†Y’`Çšf;"@¨š…·þŽð‹.´¤‰¤ã“S”%ê¬ÃÆ3 A>˜ æ“ èÜH—;@àF5õ®°U¹ô 1&8gvR„ðÞ%y5Ö×êJÑx’¿ã*°™ò.xå¾J–Ô{Ñ~²qÀ1Ù§0] BP˜åÿMK€Tà(: ¨¡Q©••(° 5à]c"XIŠ²K³ÇK$
-4'"T$ûÇû©?iñ0<ò DYn”hò²HAØìIÐÏ'H+F§Z¼G¶Ù4m™E;%&'”É3<ü¯ìÛ²[Á½qIŽ¬úŠ1±3Ú$+Q&ÃWÀ,>è×Í(DW&m.T_3ü ¹·¥Tönálv[Çÿ5gäyDd)½B„Gxî$@d¤EhÑ%YÖ‘ðK0!`äØDù%Ý+˜0J‹¥ìrŽö‹cX7”%ðŽØ6vž‡qÕ¹EJ‚”ålÐ Pks AmÒZh”‘Õ UÖ¸hAkèç.X9ŽŒM\UƒðKÃС'ˆk¨ r|å#„OÙcÝ8M™áË.pœfº‘S]'ÏpHà=ü‹f€lfà=œ‚˜Cðóh§°‡ˆÈ–¬ªJe±-Ô#ØG HŽ¬D°Ô
-pÔ[7>WŠ½³vôiT "
-ãϋɨºç1»ª8ôñVÂPO{ Ù‡‡È¼™šÄsÚ§~Åa[ÂË<¨‹@¶Iz{æ—"´hÄö·HH ê©'¸r7Š÷m©åô
-¹¹ÉU¤êÈüŒP4Q·Àþâ9ªêŠ¡9Õ¡èÈBí¦/ Š–ègŽ
-óTï ¾éXÈ©瘒âC‡;2Ö±E=B¿£Èã1 ªiR©ïoBO2´kÌh:z„"
-t³,èç4*Ö‰é]
-‘ÊŸG¸œ¾8 y%þ
-z×tkÙ_45m %³fÈ\.݈WʇÂd¸*8€(µü1ˆ4§W 2X×b° Øû=Ñ«ßÛ{¦I°"RçÍ1ó™£9£(œ ÍуÎ
-È…+«Øk„ÈÆÿt€‚ü ñA7ÂÁ…äA5j Æþ NüdÅîV¾EȺðÓŸæè7áâŽpÀ>9ÿâDq HmAâ…Sql[#©”¦ä;è,ëPB  e¤Äi]™èU.‘<(=tDÌIš/)q…ÀØ êÔ eòeÒZTÇXÀD&iý" ¥Ñ¦­•Éuï¤Ä´‹È·R*‰[jµõE-
-zÁ}”Ì€þýM‰ -Ë(C™ýt'†B)6}X’ÃCH‘‚vßÀ·³ëù[ž!INiÐo~ñl)jO”±T„ 2ëÆ7XN‰½D´”v¢å”AMÌJó»ˆÀ¬`y“å/NBÞ™?ƒÞ¬åÂE u¢•Œî ªÄÍ+~ig ÛPÖRFTÈÖÕU·÷ü5Ï,«,èQ¡èX‡¹NZc…tiw¤|ÿ¢Wˆ ½_¤¦šeA?Ÿ Ìz Ýúùy™BàæV;铳Wꯠw ÛÏB w#ÚÁy‘†<gûÖÐ^.Ð'
-vl‰ Á“ £ø[BM½_ó
-ɲJ‚ö¡ê +Å6µûœ. ÉÞ ž™Qöû¡.è†R,ë
-jWPÒ¯‚Œ&Âa¡NœC¸·ašÚÏ ÈSZ
-GZCƒ¢'Û¢:dáGy5Pï‚XÔ†þEêt#uxš±uzJ²àúäójã{”ˆtD·~aü>×ESi9DS,gü¾b Ðå#ŒÏ?9#å_-c|0ûš
-yzúSÐs —ÝD‚|SìslÄj·®-]ƒe_4ƒ‹sÀ?è­gó°b¨@$þâÍcÈñUÏA
-‚[ŸM­‚ÔÏ^eE±xÏZü2n¦ÁÀTcÄeÚ‘
-˜ñúq¬›ÍØ`Šðæ^)Àà«4ÀcÜð–ò¶‚3‰—÷¥¢fR`8A)À†Imp5=»ºŸÚ.A’n‚‘=ˆˆ‘ð­a‡Æ¢34šõ¸ŒkÃW6rÒÍ ï¼<h1<Ìj4†`¡Û™oÒ B(ú¼ †l§­NÞ‹Ñ+‡¿JÌNïx,–ì|Îdh<SÒÆΘáb½n²ÀßMDgÝæ½8øÅ0Úû|þ{ôž‚ö|š%Y(³]ÂÇË4Ÿâœbá)?BùøôÇ‘8ó0Xd3€ÀˆÄ@ûcˆ6[)H/‚Åi@
-7Uö?¬©åÃ|3‘–âý¦£ëéQ!{>ó($  D‚§sKŒžµ$­,"–ƒMæQ] ’
-À‘•O—CÓƒÞ.ð<_&.½
-J@WN)?AùôtF¢Y¢…¬†ëÅ9L–3Å9¨’‚¦R±¶CÚ`$ÈQÛ¥ú™µžäÂúYöUP+õ£Y渨­mbª³ûÉ‚^$">X n˜™“[ßœCÝÊ
-m/]êò±Y*ÊØË á¤•¸q¢Räz0CMn³gŸØVK!¶h[q>±-ûçÄ2%FÖMÞÚ É0I0w=
-ÄÓª{£¼W’@Ôùœ.+†œ*ÃrÎF«e™èP%4†Ð,ê‡'ïéô¶ƒx;Öu²’DO îtËÁ¥ˆ!Ë,dï2S)œYÅõ{H—|àS²yÆ Ð¶f•©úißÔ¤6ìS»%°áÈ\ÒÂBˆâÕ¹ŸÁXÚ'°-sEˆ@<*kéŒV{”ÅÊlU÷«ZÞÀêA*s†,7wC
-)|O¹"c¾0cÔ|u29bI+cž#_HÔ 2ƒ’ïáï†ü£ïrr(ƒ¦-/ó(û˜"Kp,Ž¦xVòßåcq™‹7Ýá¢U!‰wZy/Ÿl#ò† tU¤ˆ|=¢Í‚–èE2@f‚#gÝõ%yº–ü¨K†0Ø!9“·ß/2«J˜—Ä1Yµ£¡ÖÆ8Gºd™V$“ŒK`Ã)û!p@AxÐæ8W* ~¡/ý½|€Øä¦_%¨ ‡Ÿ¥Ý§"Wø´å"'ž´©õý*LEÁJÌö£ê?ÿÓ©âÖ —Ã.VÌF¢Î÷”µCš6Éò2*m5wK;a`'øÂ1½Ý¯b©Aä3¥oHA£lÅ©k\àïÕÁQº0zQ7ëâ`‹uqn6AþX˜¦8o6ACCJ×=s*ÔÂ7gœKŽÎ~$BŠfµ$V¿WÄUE€hÜ”½<!äG!øcŸCÿaVÁ“BX¿ ÿ ½¤mƇȞ_Ñ×>‘ ©J°‚Á¤­ÎÛ3ç Í‚5ùÖax(CfE”™»F l1a™.Ô-®
-Ê*)ÏõPea„
-~XDÏgåš·LÙˆaÞ5Îhc„ €“E/cuí~•ˆéÑ OþÆóçØ s¼úÀmì‹–ˆæÜ©PÞ,mNû.ž6 et¿§ªVlI6÷äñ}스+[œ£áÌä¿ÆF:CÆ°@×ë1_ÿ#NcŒŒ+Jù~UÖ ÅÛ+QòjC¶Kš!†ZPUš·Ù„/˜œÿj;›Ì6ËV!ÀC`QN<ÛÞ«‡àX¹¥Ù$¸P†í.h¨.m*"©m¾tZß!þ —â-0¯Q÷›° ›ëUµ ÑîàÄmt!…ðb£ZeÄ£ä㱦¢¯@Í_Æ1ÌÖm³¾öžv¯ûM
-§(ÚV˜JëEó%ò%’ÀO0CA´].8/ZÜ]¦aÅcÖN\¹¡º_¿ßôÄDiZÎ/Nù¬þµOáñ”,¡½’J5•zÏF½ç‰¶uUŒ ô<`>nº§ºW¶¨µ1 4x‹]­xnMÉÆ»Ù)°sð¼“@.²›lyÏÊÍédÇU¡Ù(–‚îd·¢r  º©´®Zâ5$ûò³ YV
-u–‡ å©"™Ü
-zÛA4—+>^fðÝ…rð;㘲™coDœª£§›& —Rž_NÃI!¤Hò«X
-b%€‰3ò¼ˆ$‘%Ä# %Ë+ÃÉ蹂s £
-82˜–TªÜ L7Ô5»”øŠi9]v Ç+/¥Kl‹±Ž<ê!°>ª e³B>]~½|¹üqùðÃåû˺~õõõÇ/—týæçˇ?ù÷[þ~Çßøó›ò‚Þ«6N4ÒÙ©ñR‡ÔÑ# ù»‚ 
-T¹§õCÌgÅØM>\Ëh’†Ò÷ 8ãQ-‚ÎÚÄÉò!èíÿ¤ôùòËE‹œF2Œ£y.£²Qô‰Å.Ë3'h`KpL½²¢b¬"#Á¢ˆÞêÂŒ˜v-–HªÃ É„i°Ñ©7Y€%X#Ô2BØÿy<M™üë Û§4™ðø7ãå’[WÑ­dõ§Æ™f™:ûŸö)‘z€ãû:i4h›¾’Èb}ð'ÇÉ©ˆñãHk
-©§h°
-%Jœ¤ÐõTÂ*ÎÀ«¢Ø:Ô[–æ:]Q4i¹®ÄèJ ™¼±6¼$Ì@eŽú°ö O›ñ[N“ ySDëiòÖßg'É@Výd(áVSJý‘Eî„(k
-`E‰£ßž¬‰Be
-ãMɧMøÁÒX,M•içw
-,5yNž{î#†Aàf ’mñ|%
-:œAºˆ•y¨ñ$víÞJ¡à,Eæ¶-G¶¶„d…剣`
-X”‡õLøIÚ*êïÒL ˜ŠsÀö‘)´+˜"X– ç«™c݇ Ž¿b¡ Ð;N#Š†¡Ú§WžúÀìâ3Õ´c,Ì’AÿAc9nG@‚À:Üá6ÎbôõPôóM¾’#]qÉ`ŠhÍTÚ-épñ²]¡eThšxX¸aÝ„F€ëX‰Ü^ ˆ{E»üG²ô[>àšQü«â,­ñ8j³ÀPTjô,õ«`{´È|ƒ Þd…'¡£l´¸ DsÐZ¶Q©;wA†ƒ‰³¯ˆÃGÖȵïóßÔ;¯algAD\dÔ“Åc¨×ëÉ% “»l˜ë{8À´5Ó/Ôé~Ì­T_™^„%÷åØ¥Œ´áó(6ƒ«V/Cþ¿Ä¤9ÎÑ=}f2ël#®”êZB‰Šp~[ô éÍb:E‘%Ï·ïõ7DÙ›’½ùLͲî•iq(ÚQ9Ÿæ7¾±ñxàY{0 ¾ŽÌ€¡‘‡I
-W ‰eTÀ%8|Å~¨8É^#ÿÃZýÍWàoh×2²ê&Å UìBÉ›À,òeß˺Ñ!%-9´s´)ô©PNS6” ŸŠQßN I…"Ëm/€á_Ã^Ï7%H˜@íˆu÷¨/E° ÛK)ãŒï˜¶:i;}&w!3)ZÔû*~­\â¥_ßlú(oÝ·{K¸å¸Vúõ³ì?Ž{E TƒÉ„´Ãêë9àÍ“ZÍ9¡ŽŽ7Ù%y» vEŸŠ4F‚(Å/qö S BÂ(}‚ 6VE¸Øû áy¦Ù!Z È·ç=ødÀÿºMgéNJ4;%cŽddÐ×Y)i@,Eh†‚ …lǃьQ„ö]>HjË`/ ò
-(§Õ¢Ñ™·ÚüR6±K#DƒÏáI·rXmŠäb˜ˆÜhèáÿhª¬º b}D ‚£ïr5%E¿I— e7žäAŒ×0Š”EV¬ \0‰
-ö?ƒÝ+)‹"¶‰uÆb‰ÖU$y ï #ƒ$´á•Åë¡fªÙ
-»ZÛ·’MœÕ4¶ÍvâB(‘ê•Uó¾Ul]g÷‰j³Áø‰óC9·ÆáÊÊÊîu…U¼QiÉ[Ó—–Ë<G9¦œ2â?C«„n·Jä‹(Ô°s·2²×Ç¿àï'P5Aõ ¬vù5mNúw±íR¿^K®©œÍìêL6fÇá‹,‰›“g‡DsÐ(Ý7c£hm–@3òÀûxæêܼþa¿Ì‚SÔÕéÔ—Á×`DÇg//nùRÄ—dupÛý°B׬ÑpZÒ7Súy§îa+ü¹æ  H°+ÔŸ„9Icuö‹5À¨±3m£æÑd–g.sÅaI7ÝN¢KHéH ™4f¯ó…-p$ý2ëžQVÁ‚'ÌšLž˜Jœ¸
-Œ W&â÷Ø71d#_ä‹ä­
-·9•ò]{ØÚ,‚˜5PyÔô¶·–¡-KÒ˜ª³qµ$iÊû‘Qñ éÑ4E8¡¿Èzâ:„‘ ±Ž7qˆQ±Ä•©çUË[K¥5#ZAFÙù*v‡” Í¥MáÈ ”YÚº¯¢u °¶Ò9±èd¹Í†”cŒÑ‰¹®Œâó™“‘»z6¸±°Xª‰l ´6Êu;ì`“™Åb·H‡Š`ˆà™CƒXa`ÿ º_Ï—è@tÊ
-l9m^.“¥AÅ@\‰M†Rþ£¹n
-4¢;°ÿ<œSøGjmËŽ9G`üGC¸*šô“Ê[Êùñ×=ú)óNæôWÉ‚ýµG˜!{ÇŽAZ[9¥«£5÷=æƒ'É T®ãy
-H‰Œ—IŽ\G DOÐw¨ ¸rZËKÝB€Wíûoý˜ä/@Ý¿` PÛªŽÊ ~ˆìþÔÙe “½÷ã¯Þý9dŽ¾ù]Óýøü8 &m‰5ïR]Û׳ù
-×­¦o›rX›×V­¡›­âõªîÜrñÁ¶ÃVEchT«Ïz2–Ui³í- Ùmk Aå«ö£R¾±×4Í
-«ÓO¬Ü %¡þÀû] gcçjì÷8ÇcŽíybyÆÛZ˜æL"ë‰Ð7º±zO˜6ðDz¢ïÜj†hå´.éUTÌ}Šƒ¿B8þ­cUýVH¶µ‘[qíÔÓµIQÙB[ìZû‘·¸Ï;m®4 „Æ›[˜ÚL¾‡ÃªÀ;® 2žŸzPÅw@£Ñ“—ÑÔÊ—ñm  éuùo›-þ/LG®ò„ü0¨=/߆EÑë|«]gÆ©´Q¶qÓl>ÿ¤#ý¤y‹Z
-7!¬½k\íiXèŒ÷°y»ÖY)*‚]»~øŽv‡F©&£˜ÒÂÊÆÑØWÐ矜©ŽÞ¢4,C…õ¼=•Çu
-NÇÈ£¯ ß‚c^%” AÐu9çÏ\‰6²'ºIáßcXO ÿ,Â!zÌBàfþ3wMhèÐEû{2ç£æ“Í cŠiE^ öÂPÅœa
-1aÒ=…
-P8,òj­âÒâòtP>— T@°³Åð‘ŠK³¡ü`ê(âǘ‹òȯÜ
-±%Éܱ‹TJ«$>x®ÓgþŽq­ÃCÃ[<Î2©ôyÚ½
-ݹõ^Iï(",‚Òò
-&m*eW(ûºzÐfEÕ‹#´kEkxêuuº€Rì6Æm0Y‹®Ðó¶è›€È'‚LsÕypU#HFFŸ¹Ž jòWÓë4ÔÜ#°D¢×­E5íQŽ]‡v©SÅšs«ŸEŽ×•$ÃQöqš‡å:$ò©í
-AmñÚh÷B@ÄÑ}«—âÜKàM×ã¼y¸áŽc¿ãéä{$žjä;܃¾œøF;lg+¼ØG­t:φ5çœ?ÿDói ð†b˜F¿Ö
-~cO´Ðt†LÃ㜷¿”;ÇdJ 9—£-¥)ÐÜ‚™
-¬7Yb9•LØ÷ËÝ¿e öÃIi-ÈoÌw†Á1XN ‘©¿ƒ>ÿäLÇ0Tp©Å#íëdF­z!Y4¢3°%‰}ž!R9.+1¶ÌˆíZ"þBB¡Óa=œFÀÅ°q÷ÐÐïx¹¡º)ü‚xO •ë2§®Jè˜Ä­jJ{º£,Í‚ôC!­Æ9ú4ó ¼·ÊJÿ¢—GKðših*-‚LÔÜ «<D/êóÑ´1–Ó#àø(dVü'*‘ö!›®Råüì<ñ®îéŸpÝGÈ
-FЊŽo5€’E†:|`¥D0˜Ä0‡ŸÂIzlB™f¯\ˆÐ-$è„,£Ÿð6»÷Žq
-Þ[*ü?Ú„8Z2LÑ4n cynæ¬)/Ïà¨Þ -zœ÷‚OL?r¥Õ ¿O®˜É/fR4ïÑt«~)Å8ýzô°Pdï$†XM ·Ûžì#UD»7ã ícEv©q„æAxd±<4†ïkålDhè+Z•ÉÆ‹DhZˆi±ÜÀMÆ¥š/üŠˆìÑ—¬·¬žœel¡$ån2b1¤žT"2^« ThCkfy¸$¤×2´R'ðѹ~¬ðˆøYiw‡¦! f” Qâž²n1°ŒÊŸtÅ ß„7yïcáú'íw‡e£=Bá¨x'LÉLrî8–~WHÖ`CÌ_I
-l=NÓ稧ŒaÆ©ñà3AQ¨CûÚN¼”(|¯kñôlÄc¶Úì<C¨b÷zÃÞa%"‰¶0Y/#àÈ8à,)€a 1‹$+E
-ÝøŸF˜zñJ°.ž]–Mâl°sj¿:ŽPd4÷‘7‡8X¶ÁruÚ-½#c±Ú¼<0ÄËÄååD%e³NŒy-|3ØEx3tà:Nƒ°hõònè ‚¨,ÌÛûÝdr ¼ qd®¦oNÃÐ:m¡«VáË­.~‘¶/ì( òy4,êœË4˜Y"YTÓ#Œ eX+« At¤ˆ¸Ê¹%Ñ'¼áµÓþÒ':#}j¿¶ê'î1"–%ÇsŸüÇx™$Wvë@t+ZƒØŒËÃÚEM¥ýO}’
-&v+îQnE(2;Z$ýºN%$úÉÌu`õ¤Y~(©RÞ:š0¸œÊÀE²($ÄVHik—qñsdâèäó=Žîº²‰:¿ìk´÷ÐWe,]_A-ÀÛR–;T}ÌŒ¥G¼š—´É¸N(Ç!ü†,å6a4í<Fœ#ƒwô6û9ÇBÙðŒöæÛ@Ú®áVÂçè¹³{ë\õ­ˆ•ÂPÊ8ýŒ[‘–¨àSè—Ø8Ë íæ%"c˜ƒòº¨Ê¢.Y±àHÉi×H·æÇ
-þ³M±tü™ö¹Ë9RÒ…?ë©B&¾tLû˜
-Óñ–ŸŠ3‹Ž^t{z ¤í"ªŒú@@E¼6L¦ÕÍmX@
-w³멨(ŒŠ—z?ÜLšÁ×uÍ4:+ÑpœãVóþ'œ±©åíoÁ‘1²wŒ7}@Dš€êù ¤ðã¡h€•e<"xÛ%ì;£eEæ8#I$‚%¶T«93‘uÏò „/d;øIóEì[攥#^DÇÌZuê™,¹}šwvŸÇÅrÞÓK¤ÒØB^ó„ÓÃý°'/ÚFøå( CG…)鲉̇5‡0¼ˆpÉ9„‘‘ã2´ËÌ»Â×8‹É9ÌñP¯è¯oþôKü‚‘ãå;*vùQEW¥Û*†¤@xH3o2dwjì"tÑdÛî½–xTù‹)45Øf~Ép°:¯Š¹…Š7ƒcª¸
-·%º²A8©õ@Kפ" W|8#tº²¨­Ÿ›Å“º$ƒUä/âœo(Nè}Ó¾³Ð%ÿÙ¹õ䋃…._{aŒ–ÑEPÆt>|¤82òØ oQcu[4@æEò`1u /Ý'BÉ”ÍVóQ ×¼›Ñ”eŠ Œ0C4-¬:ë1”zÕÏaegB–Ãn@6ub1¦Öã*|imªG‡ÊFˆÌYÝÏÞj¦”´iý`Äw/Â7ó¯^§³† ÝØNž
-I;Ó–£À’WLÞˆ,p¹Ÿ€Ë:«íõðñ—ñ"ÀÏ“Ma ºÊ&9Nñ`Ežø˜YY³¤Ñ·’»¸›Žæñ`{„ŒŠ/£b]]3 Ø 2'–n/Ë‹S÷‚´”m
-üÖž,f6mÚÀáØ%OR@D²©®Œ HŒ-yØ`8½+È?ps¸¤¶ðí(­{P°¹‘ݱ–Í*rÞ–¦ƒùÌQÂ9ˆúà{¾vÎ(j?Ž«Þ(ô‡_ÕX38 ”×X_Á”WÖ€¡¦;6SdŸ´0
-‘“yó’­TDËÁ¶<DFl­^‚ŸàKồqpZ¢xLÀqÙÆRßjÑF¤1u¿ø1²o@—Ö]d2ãì*lo7Ú7áS
-‡[O§¨àø»:†ÓdG¶É>" *&Ðëì%Ef°ÌšdÑ,wb­6Àð‹¢(Ú5ë1­Ï"éI¡ãI` ØÈH¹Z=¿9RÖÒ
- ýãe)¿:š“”Æ
-ƒöÝÁ0‰&ZšÆƒƒa˜’Éӕàß EÚ&·ìÑÁü~J##8L‘ri"üð"é« *œ5Ùöï}< =óìŠŹUÍó’Þ¶“k÷y„'âMã )d(ôzòöȣTA˜öXÄIdV(utW­Fn$”˜ ÄÚ†8& .˜çs'ô¼ä‡ƒ–w¸ïaµ¼çjä)CÉA!ÊIh¿äXè„jñẫCÐ%M²Aͱóm.úf3_X&öN‡~çˆmU¦a3e`bͪrnMÿXAtÃyK¨4E¶‹ ¾ŒaâyÚŽŒÊ½‡¿(Nê²Ð~Êìì Ô™gl3Ê€{^ò{9JP!¸* ž7öK›a’ï¸i&ö8•ÈçÈ/0
->¼®å%Nî&5É^ÂÙ­„°OÏI>Gæ“rð4†®6þÅÍω`KV¢? ,+~1ȸ* Þü<V d(?"P®a·"1 z‰~>ý[ÊHùh„5¾-„ƨÇü±Í™‡ž’íÌQðp~¸ù
-`ÑòçËU‡¯WEA²d„Æ15±$ÓFšvØ`ð3Miè£n\Yü#Š”Âíוhl 5È.ßÀ€› ÑèpOy(ér“(‚Nð¸ÄÔƒ#6Hêù=ƒN1ú¦hçewA_–ÑÆ,ÏšN0—d!80€*ßf·¥Þ%Ez*{U£;Ê­ˆ,¶~ÇÄeù<z5JôÆBÀƒò«Ø`À#æ:ce‰°Ð„Bhæm—W•§PãèöO¸Ó•£þƒ5sr/n{Mið’Í9WuÖ†Óç‹¢‹D³€æähøzõ¯¹ëǽ íµ²‹Å»ÿa¼LÒìªa(¼öP+ÈçFîÆa˜]dZìÊ,ù…ÔóƒP¨|méè4XZ¸y¥ð.D‡Æ3ÙZ®ÔOÿ VŽþ8t*V WÇÊbUØ
-<hÎÏ…ù±J8@ÄKpÆ=Ýœþ^xgM¹°pùÉRÃcü¦7†¹Ø¥Õ®n”,IPvH.ÂÕá=XT@ȬÞÄ&¿ØÑ8H :_ÛPB‰þtÏDi+Vâé214fë —4_Ý©piˆ´sšø‘ý
-d‘Ø
-@}¦>þóŽ«“°*ÿ¸o—HÒj”«>”ü¶Uß}ù e¬ ÞµZøzyxHÏ–·"%“yI[L&MÇCœ8ƒEBRg—óõ
-ÔËCüY(:öôQ9Æy{’aìLŽÌƒAeÓ‘U[æ+£p=¼“Á&ÛÁ¯Ù˜^!B­3ð¯8M%E&¼?²1«‘ËŽ5æˆ7=ÌgÉ”O[=O‰uÈ(å~ƒÃ4,®
-£5|ÁĽ¤ìç(1 Æ
-®J€Cl/f…‹µ^áH~ ŒQ™@Í2æù±KH´¤DšC‹Ûa‡`P‘š—€‚z¼âSÐ?À©2-ÿT‘S% ÚT"ò·‚=ƒÄ÷§ä]Y(^Ýjœ“‘Hb¨ÍK  ‚-µWN,JŸà©¶ó)>‹Í+µŒ“ðE aõs Ö’œAµ¬¦5I';*©dbrE*!1… C W9iàýS\PB$Ž*%ÎAÙ=Hçˆt-rGZ¾^½Eÿ à¦wÓ09”¦Ú™•î³ÔØÁÑ™J©ú ˜y#p!LuØ5ã¼ð’qL`Âd`üÃ5¿ekfÅØLÆáà)
-šŽ@8QÉ€éÌþÜؾÚ,}–Ó¡‘øÄEC?ˆd6éX‰žGÙd‰©„C˜kŒ§Åʽ̜@øÝ×j[»²?þ^ó5>îŽ- µ‡çÛÔ:b½ƒ‹q#¨=žǦL”SDñš‚«¸1Ȫ¢uDß_ΪÉw€[;CçÓ` ÷$fòaq4FL˦‹í(]­Q‚‚“¨êRŸª¢d®xr¹S„î5Ôç‹kØ%Ú3|z·Á^é¾(Vz¡t-…îÇ0#úe¼Õ›CEÍZQòˆ«½MÜä
-¬¥®’Üò
-Ò\wœ—"z†÷’{pÙ£¤1‡–'ˆ‡
-¿2÷‘›—Èùaù3œü…b’ŒÚƒ ’L<CNÚŠPˆM(yÜ™Ÿ“4‡‚qMåjªêBs—vâ®QRðšòk%RE8Uø Ì÷q)Ú%  ¯1-È”Û$‰-
-¼`vú9hö’.‰#aæ†ëa>yâ "Šò/—_kòêó%exòÐ ÑY€çˆ qSÜ%8à<p€‘ Ãÿ@G½¸ùŸB£gJ\ “C#üá¬L*Y/OãL{³zWœZX=
-¼‡…?ŒöÅÕaضÍ/®)ƒ¢*««­Š²Œk;êaØ…BIpÙ!d0<#—I‘ûƒq'Üi-©Ûkj/ç (MÄèöîç0SšNæ!ª£]+² s§µï¶má+&'Ö6‰ çù+ìoÇ ¨x‡ßŽIKž˜-kíâG'àTš3Ù–'A…òMÙÝk
-)L¨åu0•EçiirÙñÆ!,øÜ3´A˜-"#¿ƾÁa”h8-
--¼ ºŒéÀãÉü*ª"Óµ0IHqÀDp5 (JgD—»‰ûÕ³Š>‚Ì6c¬®îî›H+áÁåD–7å@ ”§IW¬³çèQã„7㇎}¶aÇ·ëØ\…ž¼[¨
-}Pòj§ÈP³”§T 7 QM¤hÅ
-Në‚üáߢˆSª–ø4‚2K¤œƒ“——[ô#Èÿ™Ô°1õMdÒþsú)‚¤ÅÁhsÕ·epúÇ™5`z†é¢rÅ – ÷ót6|ÕˆJh?LÑ•
-1^BÞßU‹ eg¢¬$?õöêÿµíwÞë&"ÒU/.}+kÛùÙöã!pPÜ€ÉXã@EÛ¯5ìã!§ð5“°@ˆgš®Ø‹Å$69Xõ„ÖòÃGÈ…°'Uø:Ô?#eŠ3øîô9F©Ê)ÖöPso EÈ „äìøzW1-â*H¨V/ýSMŽ‚Њ#]PBƈÁý~Žu¹Rž‘º¡óR—ÍÞ (á*؈”_Á&»á„V“`²2Q(66‚b†89žŽMiâð•gÒÐHÌ+YÏÓ£¦Œ±]ÆDzA}­IŠ.ýô„W…B+®¶Å8Ò¿ÊàÑ6'hÅ*hŸ˜•Ç•MÁ¦RZ“œ¤ÅKY”Ê9uúþÈ[®¿5RŸ4L²9%Mâ6l3
-6€…—tk?
-Ãl ír‰)+øVfqÌ9 ]Ï¿µ„ È0äZå|Š9¬…û–~¡¨+•ÙìÇ—ËÇòÐ.Á'*©6}ûTª1Æ'IÕØLû°ò ’Ó¡ #N²moH 3q@…Á8Ë)ûµK»1ÿž;"â8îØtê\y4ßîPI“‘;(¡"x ÌL'èVO±á /öý´e™:Lz+~õ:9$ó›w¢\ý²ÏãÁ»¨ˆ¡Æž¶C.Z²cEòHa)ãV»ü¡ï~ÄžÞéTH…2ÒÀ,Ô…`!-z’å4_l+üYë!püV{ØÀÃ&Ñ+’˜8. ÷Ÿ0Æ&–MSoPƒªÀà6öÑq˜-Háã€`vùñ±‰ÿIšÊõæ"·;YqsWHÒk„µ:[‰oÍ)x±;ì!iî°‹#Ò=H3âÃ*¥e°·Æ!›Òw¬¿ôNuYœ$Év{Ê,YǺ@ö§2ªOû<GyƤ8’BÒƒ„XÖÁÅcHxv’óÎñ¡ú’e +zÚ}Bd’ê6œü^¬—D)o)Z–!Qj?çÞï³(›@j©½hèi ö#;1T“4I^Ÿf'Â?¬O;–YFÜGD4@¦j²uDõöÄ˸Ø!ÃÉÚ0`C2ì½$ØêI'4ivS,ýå_Âjèh:ˆ$Èö餰}?jòQU¿°uI?7ƒóá ““£ÉéÓµOÌÞ¦—u¤\ U,‘ 6ñ-î³(\¦1ðdÞs:Ä ‡f‹1Â&í÷¥}u:Ë÷û¾¦µ^yRW¬Üöõ·Ÿ4Q‚ÏžÛضõ"Iâ/ÍÝûƒ Û›e9*†3Iæ}b“< ±8³¶fe‹gÙ,'¤<@®ê±Ìm“Ÿ3(Mî“"¡€32ø0p^- •÷’ê&`Ï4!Ò62Þ ­ãáLÍ-ì«jÁ¥,9¡¸ œ
-lÔiŸ«†L°ð-ds'øˆ;§PÒŠÀŠË<ïÐî¢ðýèV€~Ûîœã„$XÁ!ÓkÚU4Y´vh7ïÄ3Ž©cp‚ nxG¢?"t‡]\ê³ÃEQ§ |/ÓløŽ/k ÝÆLÏz*áIY{\7þ
-b øç/W ¤Ë¯Ê°w Eûxx•+VÉ°mÒ´8¨iÑè ¿É^b«ÂìÒîß÷’çÉrå¸2žß!À`ä±+h‚
-KAO毨§E‘üƒ)Ìñ-? #„¦@()ü7a!ÜÖMÉ ?þ¹.B6 ¼¼9ÆÀ§⫦ó¡T óÍ‘˜a‘!óƒÂßu*šÌx1È nÅg
-M –RúwˆloÛˆ
-+<GVºù
-?3¢r~’¹ÄcÝŽwÅ+ˆ3LÿíßbÙ$ÅÆ°át½žÝâQ°'í:C€:ŽÔµqŽÒæ(&‡<!{AɸôøÎ5¦Q ŸIµß”¼Àáä$GNÝ¿dmŸõ»Ž}ùP/L*–‰R.Ô€rÇöL´7€É
-ãé£éÀ²¥^H›ÝW±c-y8>¦„1£H9ÏΕBÀ•œËçTÿÖhà:Ï ¾“Z.àÖG…Et²Ä¼p„|Óˆ$nI¯jLÚÀ‚‡ÇPàoGÄ£Äql'N!‡öOæᔹ8cGÞ̆U†ZNô®©íùðöFDeZTŽ ¾Ðë»L¿¡«Œnaluö’"l/®eFsàf˜¦Þx_í‚ReéýÆ?¼¯É5A‰Y6<̯)NÂyKr‘ÈœÛZƒ-å§~l”ø–
-Ò‡”Š^ý+pŸäm†=¤1\¥‹Ïè¹—`§+A+,I¨ÃûÀm„‚sPæ²Hù«„=&l()h1ü;LEÊÌ@€`žëšE ‹I¿²<õO"}÷£
-ûl8³é®d°4¢¯šci¨á*ôœ]j¾Y˜{T   ~¦özÂïAo¸HF ^v€³²=_!óÙ±ó…ÖJê‰_õŒ̲Š ¿v熄<,ľÃ+{P®ìŸà}ð‰íy(Ìž/„ïË‹žL3-:êÈñ±³r⦹Ø%„o¶’c;5‰]¹•Wdº>Å^5JdhJ&&Ð2ŸDzƒí¬‰ê×¼(úŒ¢Š“ÅúH½w¦\&vcmªÄ7'äUTPf,¡ZÖe™â:Œ
-Ô°îU~Ò6ÄêÔÏW”dšFv1&Gݘ²SÇ}T‘°-°ŸWÅ—ÉÁ†” ó°à6@òp ˜ôÌü¸YlÉ*ŸÁ Îîe{1.—z 9Xpôrð…cÅ„žús›?þbãßÅ 'Ð:¥¨õ8
-!ÄóqûEŽ¡çt8kpñÌßDo§$TçŽzƒÝ¦—ôͯ‰ë1¸~~âø+«>QÔñM–#Àh vº<ļ£O²gXµ%×ÖŠ>â›!x «í{„xA‘{©ŸCWºßÙD¾z¼5%¾¶¶°(‘ã4¹_:v`D¨"cµñEøÇÔ‘_(¶8‡3IF0AËöW*Î-¯ª ‹åPüHãG<d8UËíy("0â¾àÜýûå?Š¾Ùx•èk1ÃR~€KO‚jvKæE¾£‚ÕÙÎê"_/Ç<0A¡íÚÙ¥QÞó˜.…‚M<vì¾þ‚R±hC ¦¦ãaC>³H{B¿RQwÀ|ŽG,‚_˜ žtÉð‹’9F [
-)¸§™ß#žr»ì^¾$¿ék=„”S‚Å
-b-‘c\Þˆ²ÚYÏdÈA9¬¼õí”x,LaÎ “Ô¢ñ5K´´fÕD¶”o¹ü¯«`+‘nϽ`4¾ë§bsú·¯sÃuŽ ýŒ|·lDÊy”´ÇRmi6)ÂñïE¢¨;¥wK°8ƒÍM vM’²(ššñ ßPßž¨ç[I’†+ Øz(J'Þ™'!°E¢Æÿö¯"ùî¥p’'¯+â,;\ÙÏ"äGƳ ÄcõEØy#Yî}6»Îc›bdâ
-õj%eì[Iâ+Epó#úYTYpþgMt>s‡@¤òb×q¥°GMªœAf<_…àKT1!£G‰´›\P˜úµõè\8Îãé –Å:2Ékþt”h‹j>;Ö«âê1¤.ï­À0‰§ù*4K‰V:4~sV`®uu—f°ëÄ‘ÏšÚ}Yÿ/ë ?¢œ¤©‘¼Ã"²¶(PØ€ëK\D&:¡ðÑúúàSÞUNë˽MÑ'G ;a U–=eò6 4®Z¼|âU
- œÐA y£—‚Žsa*Žœ§vtàNý^КØ{Ì°,RÕ º¶øŸ¸ê,Ť%;H2s!—ɼg‘p#³jÑ•É$Â+SˆŠ°µPü”'ÉáòRùÓü¢—ñÐ¥†@³=
-÷Š›kÉ•ãÙÙÓÝúýæA`d™äøäæão4é˜-2ôÌÑæ«JdµÏ(»h)ƒö+¨dV$ˆ<á¨ý–•èóÁF’%iG§@º ¶ÕF®™o3â /þh>}d‘¤˜åÈ.ý´GÄ×µ åæ'£?Vpc=œ !Læb(®ø©¤ýäFb#·}iWQOYŒ 1¸¦ ,Èéê©€1öV0û4ÖkÝèôSIY'è@cØ#å–äÛq,üZÎ~Õ_°‡Vpe&ïw¤Wáe«Êq 8JÒ‰½RRl?XúÆ|9¸\lãé+Žé´o2ëó1|/ÎÔ²:B™0
- LÂê}+zQÔ] W¤üÉp±@èMk@û¦L‡2ntNÚÍlìYþ5 Á†b±¼Zzå¤ë¦€¹ "ýz4:&MžRã‹…³Ú^‹#ãü t82Í™&ƒÑ€õˆ’©ƒK®–Ͳˆ_¢‚´hï&Áêî옢´RV¹Ç»)ÂÂíq¬Á v£j<5(ÜL ]½ÁŽF%ò$—œÝ•}õŒ‡‡ä3qÃë.7Á}ˆB­HVÆ–.æÓ'áõjîgïj—!ÿ[c”¤êIRR d⡱ëaŸQ$«Dcæ°ÜcÎË Yà·SRDK•‹Ãœ‹Ð@h-Ÿæ@tK»‡…ƹ 3ŠX?øXi2+wÅÛ$ª Æ ¥S?J>¢„}e‘èT"^À?åó¹h­¦X$*à»BI]å´ù¡¢«ï¬¹#ºgZª• , “{è!ŽqL…ìÓØOñ'ð;ö
-TM l54ÿ›¬}>vðG@¤Dš6á€þWYId"9‘’*gL
-²êéœ0q.;ÞOã¯H ¥$΀/y ¢1o§d@ †u¾¶€ÿ'NµPÁ@Â>Çy@bÛÁœÄ0¯R`ca!¹=É)UÍ8%dYD
-8â„’s
-JÍ}+h×J>qç- (êƒü0þ-¸ÅäÖ¡{”ø„]¸FÇW»ê‡õ$O°Óù®)³Ü%Ç— ¥—h¡\kvN‚Ïé`2ª€Ë$š!zñt¾éßU
-L° „.h±[DŠ19c¬8‡Uäan¯Úä÷˜&»mUcØõ¡è#G>®Åe ùˆ‡ªÕÃÞ²b”£–XçŠcjn0AIÈ ;KP:t„êá‰-ÖWF™fx¦&‰N𜖬MÓ1=.ò-aç:€€*v`ËPBù¿jü¡_>p†[þÚîÇJIäHã~òƒ¸kr;s€¢K”íž%‡þ›ò`€s…¤h²¥‘¢#¿±Ï1Ö²ˆ`‹è²û~Í¢¿
-I\ÊHð#³›)"ÄMW¸[?Ž•‡o²Ûî÷árYPf³EhüÂ,YÆèßYpe†às‹ã
-ðµ£Äw8@ÃÇukÃ…pé=îƒ*Œ~”²¡Þ)QB)œFƒ£Ä´PIùW2n{ûîæD?-ÏîCîÉ¿ë9§aäü¢9ÅÍô‡Dhzb°³TP«ÕZ|Gú‡ürÛ9=D²Ib,
-ùEGÿ£†8’_F 0-#ñª9Z†w~¡ëûÑ?À;¡%;Z*1xjêfŒÎÒxöâ Õ“î‚] –#³8M†cÕSIɉ¨g*êr<ƒ2ˆ*PÿNàÆþ8ÿÎÞ–·Í­¬ÆZçÑ%zUøË–v™(Û¡²è9t\nl/;n„+Ъí.(1h›€“AOêÌ/ ‰çÈ‚´¿Y/
-šû¹VÞ>‡&„1Ck&§´±KC²‡@ú…w¹VÎíiðO䶺,×õ
-œ Å‹
-Z¯mõ3z¦¡ ´KzJv¸ Púr@zéAÐ:ø|åSH…t J¸“rý.ˆ¥
-ÄÜ‚Ö“Y@÷èC“£…·Yúå[Ä[D°XØ d|¤“$0Ȩú¾.! Zâ·naȧþ{ÒÊMkÒH4‹9ùfÞAH½k­Ÿwýt]w*$yä˜d­ØÉ0ÿOj”ô§|0<¡ü²MK¤|~ï—Iü´CØ(jyÓX}§%÷­˜8¦íè^sÈ$uØKm?Ï78Âx1d¦„K·m!¦EDcY~âüÐœmÁuh‹7²!ÏQ¨%Ýx:'4öëÑ`YÇ5ÈS‰QÆ õ)\b¢SÔa)À®3pè%±âMHz)£Øzñ 
-
-å£4~c^ÎPd__vjÁÀ¥YV|†–Aa˜¹í‹BÔѼºY º°”«0Ç­Ÿ“¤¯oO1lª¤ íß¡=›ÊО‘‰!Á=2Lˆ,¨Oż'˜Ï–P Œ‚c AÜ}Mue‰8Hà{Ö ?¼œŒe(’Ç‹ ·JMÙAå"ûA‘•ëf/BuI5Žnç3dŒåeº K*!
-ïU7ÄKNy22%wé—¡©`q¨‡È
-"‡Çb„ M±‚l¡®(E«Ó·Í¢×º*}Ö
-3)ür)
-6„‡ ÃÏÀ&Øñ¤¤áR—?~«“EÈ5G êLeÙ•þD•d)÷³·ÑÙ©rÁ
-Í„ ÌH©ïmAP‘sƒ ÃI‚–ÌqacèÃoÞòeÙµ©mFû±¨6ý¬T
-#í÷¥¥«/ú™ì7*™¦ÖGE"é¥Û ¾$ÿRyE®’ècÚv™òÙWåª(©ïw“dV›È®×˜N¦!Ðì¤6¥»
-@M¯s6W[¬Øµ~,?
-Ž(-ᇜ|­"{ŸX{O‚´ ".^î h×UDº­w
-ðL*à'lÍÏû<ªy8eË2‘Þh|ûÝ0JÖ èöã ‚±=7»ó«¢3èóZH>³[NÊÎWe'øýzï‹0Ø“x.Îà~¬"ì¡ÁHj±48·’¡{Á½R {›<s¬¢o ñ_ýãý0Ci¹0¢^®ë·æ·HY¿â Y†ãüygÝ ú‚^Äæëw)¹IÙŽ×6½"juYŸ¸<”@ø n—[7Mnµ¼ý˜E|›æ2j%+®Å“:ò]ÚÑΡ:FvÎ$S‡1G¦G[Eñø-#ª¶—¢¯ßy]š[m²E¤¸Í°º1ÄhËähOÄÛ𕬃Ý?ŽgѬ*]&ßÃþåCW´O%:½¾-:ñÃBúZì±%\‰—?Æq18ÉœWû¶d¿£°xîØ®ù8ˆˆ·HNÝŸ¢ÁŠ7ËPÖèdX
-'ˆc)©úm^à´?¹9€é¬pÈaäQ“eû[ !°6zìÂ&‰
-ÓÀþ P1‘Ü”ë +÷]ѯW~Yúgü¡A‡@ê·E}C å\ûõË:ýÆÊOb Ñ
-ìë¨_^¥„]<PF¶qõKwõ@6j¦/-NIƒâåýmT¿–ÌQy84ë\¯ÂY¶‚'ìû„Ÿ«í|y¬özUg
-Y½3–÷0õÍýëé•gÎÿøŽWx¾äÞÍqoâþõ;WšœqúaÁùÝ&ì}+%¼1ç1nά0ž¾ì÷"hŽ_É»Xù#%¥’l©ç¼¯EÐø¡ê<ê(Ùâ ™ „Xg‰o˜{ À17ŒK+Þ4ýø©pqÅ[âå8j÷ÙÅÁ¢èr„Ù¸ô>˜%–ìÚÛˆ­£pcéz}ç›P6˽©{èù¹ 8ÁZÜê=JJ“\fÏóyxp1uKfp’"9}‚1€.<£õš í¾Ólœ9Š8p½„²\éåÇ8JêXôæcG}4Ðn߆êã¨f0ÌcÓ8–ר–ø„ F÷ßI ñH¬³â´{N—Gfþ¤.LÌÔÒÂùÛ7¦ªôúœ©ø¨!ø™
-Áehã…žƒP˜ß^ñ½³âL?둳×I¢éVis)Š€…ãŒxKÈø'eaù¿`mYP¤Â@„±î×(’| ÈÀ¯«Ï¥¸ƒ¸÷1*à/z®éÛªH@5Ð2ð—’œDìnÁqqOäÆ›òÀFÀ)tnHïÔ
-¹SŠ2+’o;Í?¦!´ó!Ž+”…>ç£xe݉ºž/E?Þ^Š£tmÛ§@æz*j¸cJX*,29Çòœ[xj_ôÝ¢mA û˜Œ#\;)kæ Ö ˆ_} {§„q—Õ¯ðx¦pÀK ê3rÚ)Ÿ¡1˜ ïŽ
-½e§¯jÝóåúÄMïÉ 3€—»ßcCæØá÷ü¨öÀ)‰¸)’ç×ò²6_³Øô~¯’ÓŸ²d¥2éM/êøÆ0zJؼšlÁ"÷ù œèÃû}ï‹ ²…=m÷¢7K®×Èv/+WÅK<å^çg„n¡t®s~$!›O}¼½qzôãç¸9eé+´µ–a_ä¶ñ¬i±P-ºXa‹(²®bZ›sH»¡Bˆ»ž<ökôà 77ãïz«¯ Ò|ñM·¾m‘Å•ÞŠ(µ¹å0«s6ñî/ú'E¶}$œ¶&e›÷hŽj,DYÜÿ˜ðùMøÛ+„»E4Rd÷2eÎÓ=œ)">œíùRôõ;¶ îáÿõ‡å”ȦçlCNnÁQA½C»^ø/5µ¢Ž p÷ßk~¬~…`#|§€°ÚåŒ|AŠSq *]Óòß+Bgü÷>Zµ®m(HJ|)úú·¥ ÛÇü÷ÿøŸ?öÿô£qÁ:/œðXÃH&rsª;öírTƒµ)/ENFô~ž¶q~GÚ­Y¡ƒ1%Í>_Qųp+ÿ¬¤
-ˆ_ºJÝïY±^¢Ñuñ3&èÕÊ®Ë|ñý*oÂÓ”ÎLÊùU[üøöç‘<¿EÔuùuá·êÛvs5ùG=þȽ“ 
-Ùrš·±ÆôgN®ø
-ŠÂÔr;çeøªœ©|1x\ÏèÆÓ®ÛÓv]ÎÇFJk{œÞe1Á±nÇ$Hˆn4Ì …ùJè›Ûµ½?#įH5{ á¸pÌñàlïÚÖ—÷º#¢ÎãÕU9'hs9àÚI'¹½õva:é0-l£Q;÷LÇó“% –*¡¸”fÇsùzrÛ–hÿ#$‚|Ʊ¦çnÈLícñ£ê%§¶mÌÔ$„#<³i;lqv]õ9(¾âºóSA­WÁEm*ßÛL¥êUUz²Þ3©{õ¤ê¶§¹»Ïù1÷˳¥Ý?¦=³º‚‹ÈF“¥TCˆÙŠmˆóÑyÖ#¶òîÿÖS¡*G¡+¡W†i%ÿõ 9^€“Êfå7*$Žu9xã’.ý½ Ùe§­«Á$˜·_yß
-H‰Ô—MŽd¹ „OÐw¨µ~(R$—†¯úÏÆÕKßߥ,©r=ó™n ²"%Š ƒ!×ð&6§[|ëÍìš*ÝÔZö·ïñøí>S‹f!Ó^!
-üt
-ü”òöÖ®é
-«õ…ŸZdñkú¤Çê]´ÜÔ› ãu½]=j/„“>n‚,¯ Måo[ö¾ã~ÊÀ3æýN––¥÷†GÙéú ׊DѧG_‚1KÜ„òjj×èÇÄî‡gËÐj7‰yó Òtâ"üMÐ!ã3qþÒ„•q,1½:%“Û¤sSaTîaN•{IÀ-¬÷(dÕ}ÝsQžAïw*·
-<™Ýd¶8àté'.E-+;ž ü :ÕnF^Á•4Ö]ЩvÎû˜¶Q ¨|Òœ/ Cñê6ôŸ: Ng<CŽ•{~þ-Щ¼¯%9”÷ëºíòò]Á¼¨èÔvê•*ït\N ’ó³†z9`è\Ù ¬Ÿ|¦Ï ãuŒ„) ?3’øYÿ>ƒNµ{¾íæX–—Ün{®ÉAž¿®Û.¯Î«À\é8b
-æÌð4eB”ý<œöʚɀðöo@ìŠ.Lÿ>€Á‹öd€“<ëÒ%EÐ\\
-™T¤ÈqŠõqÕ¯ þ¿£ëŠÙ²GĈ,Ib\rFÖZ5ÛD–׳9ÚkÃì U€P¶IÚ4²>c_å‹YÃ)xÖÔÿPàâQÊómUsŠAl•®Õ†ÿ#žþA¢…­ðÖô±¨¯ ïÔö„Yä„”Áh¥n»íH~‹I„›ã^ŽÒ—Ó®`á2üÀ#1û´AS6‹[¯.Ý 
-µ³¼HÄ3æý„õì[,O£ª’üñA-¼æÈ+ 4ØÄS+-µ¾ö݆3f…2RŒÕJeï›|¥‚‡5\ÖCFPCô‰ì{&W¨¨eíF9¬y¬«hÖZgpÂîv<~áoÚþÃÝáXF°-yßbãš´jí›±ËÉP˜KóV0® Ð>k·$3왕^žä» hæd°iÒw+¿˜“ÑiÑšž hSÔ@@&!¶}tܯ §ÙÃøñètüCëR´‡mU—Ô 3v±\e؈À\#…¬yº‹EÙ´õ‡Ú—7ˆ¦òØ!è(h¼ áˆÅ†$„1:c #Q%bNcŒÅ_¹*«Vãaéx‡ÉXéÉýúÁ†,EÜsa¢#ߡƶX5ëÍô†±ëûàg21Ÿz>š;Æ4’¬íÖ«¼–®ä{[‚µ^†U{|Eu)é¥tñè&gq­^{RÒÑÔ´£È©.ÿGp4?zûP´‹±^½ÒyçÖ+HE¶QøëÛ+*Ù–Ϲ5(2*îB¼Á>ãQá©ýC¯˜A°m¦ù6^¬’Üšla¬…riðÃÿ­eª H+»—H§•5ý
-_ãÖM`" ‹¡_§ÚÒÍÚâ¥C‚S8³ ¿Yzâî€0êö¡‹¬ù“éBqåhÁ¨H+¬
-4ˆ‰æ݉¼ºh)j"ÆÏq%!æÊÜ®±~î‰ÐëN•¼Õì7†ñCDVñ\‡iZbd˜ÊS-‡›Ü[°Ë=
-§ad'âЂµ‰0ÑŽ^
-p „EC…“L{×>ìãN=9c^7ú¶»‹a%”LüŽ?ª’Ú‹yv^ÑWܨ”gP8¿4h™=©ò>·@áqÍž™­ÄíËæßE­;Ÿv6åR€; è´sOžþ¾o»½(,v`ñ3uº‡ÉÜÍuá$¼½ iOpít³X¹Q8U4ñ
-šä[kÅßÁb¹Ij«®Àׂ€ÿ«s¤r”¿{†(”i¶Uì™*Oƒ¥L©K½˜]7¥Ž|'Ãì Χ÷arr#ùtš‘•˜®¼pµ.“a)OzQ¬Ì;pP²e¯
-û <+OLÊEßa@¨b#ª ýáÉŒ¤®¯‰é•— —¹Õ??®K×y"·ÔìÒ—§ Ý×˸ RB
-@¯ bõÈfd&m9‡qÆ“
-\@ÁÅ/§ÿþFûâSF©k&JãÓd£Øý¶ùÅáП±MK‚*uLÄÀŸ6?o²nÝ#¦Vu;äNÕ§«ýª\‡A9 B)Evb >“Ÿ9¶E0!)WÆ·ãψ›P=ÃÇ%Ѹ‚DšZOb)‚:“¹?ˆé•Å|³Êyò·{±M¦i`Œá¤ïà¹mmP’'[Ä7pˆ­Í”æhèY…Óěͭ‹®C¥©ðÏW ö†_ç
-Wt×Ñ3KÔi&Í­ÜGá—…„ “̸H®Zé.ö'4=ºÉïra¢OsÀló==ž–Ü)¥ìÂdp¤zÍZâªÊÃ; –Ñg1j›©TJ>[ƒÜRh‰ QšÄé*®ð#cÏQ…,êí* –sN¸MÛácÇ­¡¸I¤1‹æ/"mÚ'­§1Ë·j?›/įøº‡CT‚¡/•­ÆS„£¶3=®«‚Ò–„ÎR´¬ o$WæòTÐ
-@¯ êê?S1UÇó)Dðضߴ«2J.û]À¢†˜=[Á.u.‹÷<æ,ï
-C"½à*f=<îcªåHŒ'Å0ò™"
-¼ŒvÒ
-åÃgî.ŒÌ/“¼Lbh*—Áím+ˆ–$¢í:ÆSHžÀÃxñH•Öv´€¤ÃLÕ£òu¦®i6‚º´ži®ÍRzä¤\Ưì•<dŠ˜xV£«¡›e/ ñ”oíbÂt\‡ó!g’ÈhØxwEò?ô
-ʘdzSÁj!ôbJ·X/q5{:Þ¤‡K&ä¬z~¾4¾Zeo%FB!1%_Ê«—qz…åJf‹ ÇÔ ²09þ‰Bec„ux"žÈAPe0qLNGS·%‚Í¢‹òX
-—P¦UzkJ¯_ƒ‹5<_¶A™É\ó×(ÀM´œZ+~Ì :mùôº£š×?þùà ]~˜2×ÀØèä.¶Âÿˆ)ÓþúÁÖ2Øä›B]“+<R°¡®K‰sî|†NÀìÔñ ªîàRR‘ É~pÐôúþ6z¡=þü÷?þÃÿïÿüÅù©?T<Õ!bJEMÕ˜²'¬¶?#)â \²@°ªzü/ÿê/¹‚àäl¤½6‘£ä–a9Qû=P†=æ€ÿbåj|Ü=¢EÍr6ãæõg•ñPæ•–Ðm‚çj/3“Ç—´ó‹ád¦,}8. ŠI;¥ñ•0^CÇã:æ<®DùjÁŒ­÷‡|&T~x~*Ó„JGÍH=
-fJF1-Vì'P5Ä–A)ë¸OÖ©Üï5öwØ­‚ÍÍd³Ý_üwÕû ýReJ0ÎÓøßQ¿ƒPÎF!ÑdR‹C¸;FWL“6„g»<¤ëÝ”¦¢mYX¯€Ÿa~Ǽîôjïû¯Ý äniPJž{ÈÌ7Önëù{gÐW
-¦Ò´MhgO©›˜hOT(Ž®2?%À¼vGÐ5î•e‰„ˆ°GÐåÑQ­>6‚YYKÝž>f]Þh°f(ˆ÷ÂÃKf¦„<RÔ²ôŠ‡C˜@¤pärt¶ ~ß]„ žfÛ¸Þçü¦4´L¹íë’Ú
-^SaŠy§(03w<ˆõƨ£¿s&Þ˳)ÁgŒsàFuvu×Û„ÀŠÐY‚¯ + NÛ›5üugÿ…òs±bÞÞ“Í&®I¬k²3‡ (Wªƒq´éáÒAÉ°|96Ñ=ÞôT´6‚ª¶’q9›_†ó¾"²@úÎÑÜ“ DNT „Ÿ•i°˜|"hn…÷lhM`\ÌÙLBL•`ù@ü(Ã¥;Ž?·ø;èæT'õQÞ·Á ±M}ú)tnIßj?^…ÍCß²Øê}”AP¦¤Ä/d‘´¼ŠJ?—>ë‰+%æn¥3 ¨þaÆšüô8¤ŒI३#Ln¯ ÆÑ“&GA±]ó€Ý[Œ~逸ã]8SrÁÂW¶íA*#áVÝG®O/š>ŽQaAÞ/ÿ½‚¥(¤þ—ñ2ÉÎ#7‚ð t€cXkÛ·ð–ºÿÖ_ Q”øW–HÛ¯Ûƒ
-RW™’q•ô5æ)ZÌà÷ŠA.?“BôJr!/†HÐ]ˆ¯\ϹP–P„PÖ8
-ÔðÑÕ(­G¹P FÅTkQ,Œ¯©ðŽy …Bd>ƒÈ™o×¥á«Tšêò–
-ƒ.ÜRá×úg]I«Òî˜Û©{*¼Ÿ¤Â
-†B˜¸]Åâ`ˆ9zË
-_j‚Í(
-ÒȨP[9ñš È-˜×l¨ãZVb)A4 mØ
-¬eÎÜk´ç!èõº÷„ùÓGÊV&Ñ8ˆ®ˆÈ`âχÑdhXº†CX|hP¤r&¾ôFõyÐÕ­E ¡^Isߎ9‚HÑô~šÎì©™{Ü[r æâž@5^⸄³J½ÇçÀ*4Ù,Ë{ů¡ÇŒÕÑ/>}U•´SwÄÚ?ý^Œ°ië°Üë@ ò.õ` .SKxÉùéeƒý@‘|Iü‰Öm‰Zã ÒþAóÀ³Dh Îk{Ú*ï]Îó«eYmÍ”Ji”k“Ì1Š¸K6¸v¬3øöÔ~ž$@I‹âDÃO)ÛéÔåmEs»¬pÀ`í·ÀÙÐ<(”¡}SãM|t)>‡Zë§Ä™±gèâÜÚD6ĉóÒ3Æ2Ss4¯bðX%‚ª¤çÔ&a·ôÀš†ŸSX8&±a%N…Y}ŒA±RT$2÷¿~ ×„ó‚X]£è~Ëç»H- &;ß®qe"X7ZˆŸ„ÿ»äÎéáõåŸ+ÈödÔ‡@&6i?OXu40\eog Vcâ£E>ƒƒ¿%zRõüp³ÅF JÖ.‚ÊLÎ*8#š›Z5Ü­j‘ʘ>“›^zg
-WÉìÏ—µô’7`ˆˉ²’®ÕxÆ:ï’7Ú—u–pEêUdÀ‘öDO )¡ë0dÙ
-Õ˜ÕíLµÏ'ZWžl‚]c÷·Ø  üÛ™ðjåé$1 FöËó›’¼? Ƕ¬Èrž“ ¡RcË ¨ªÀ ¹½Ï âçáM?'œ¤§§L‰k0s”|Þ¿Ó^Ÿ‚ºä¼j&蜚0Ï„ŒùrݬöýB:6¦ëÙ è¿„B4ùŒêï ñìWÉ}´…¿ãOxpžQžzwEÕÔuÖ´‹©”§´y z°ä ÕWà[
-€CÆQ‡6ü˜ …aKêáiâ%üEy€Ð¾ŸË–릤€×¯söV¶WBªT
-²5þöÚµ1˜Åéwį° Ÿ1ïßiÔŸÐÊ•
-oeÌÄ:–Ï™¼¼§¯ç½‚þ AÁ&¥©€Á÷ñÖùä®n h“T+¶+ÓOÿöRÿù'ɤ{ñÃJ3 ‘‚TÙÏ9CÖ¢Ô´ó ­èçtòL¦ËìH—´û
-í\áäs£ü¦' ©‰Jq4ëãô1¬o,*»±øõQEÚŸ˜ÉEÂûª§â0ƒ¯Âò7¶ôq*1ÉËázŠ­z‚øLxpb×{=llX¦}­› 4² Y;Ž_‘{ P“Ã;ß¿œÆXé-`ϸ'öÇi(ñàåY63!¿wꛕGI½ü6÷o|Œ¶ZÉR‹f%âá8²´›Ë&¼:{ªäë „.R½Ú BÇ4ò€¸±ˆ o1 bìúÉp1 D—©Š ‹z°Coì/ž ªo¼ ¿ s…X ÂC—kéÍ 'I*$GtJßJzOwÝ4Þj¬%Ðâv¬‡ÓÂ'Ãc%¤‚&•`EG2HUå[TßÝü0pOJïVÀ)ÇÚ»~níBØZÖìH9ÄYo|Kd
-8Ç!„Ú5LÚ¢c´ÐK|¬óÅÄ–à5˜~¨gú«&ãNb!ßD1^‹sØ ƒ°ŸL ½Ú+ÁPÖÈç²#s×B½²€{š©¤¤‹=ië4³¨—|X÷s˜è™IOªSä§L†¤<éŠx·¹^f„@²
-7)J‘T—³À€ST»¤‹£ØíÒ¶DcðåÅ+5ýh%£
-Ó²Už)™Ž9¨^<ÙDDL LÃ׸,2u –è<¸øÐY|}S>@ÞH`Þ>1^ôãîXŸ(É?Åá øN+ò@†Ð)1xskàˆ<›òØ‹ O…É;‚à½B—àÃÎ3£ÃJ0¡˜éä%&ÅNú<”Þà‰'wí‹. ˆÔbñÕcî“‚à›{Þ!’½i ¿ð7ÕT{áUY”ź3Ø»x”HFW)Âq`³\©É0©Q~Làï<ÑGôú¢àGÚæN´¿A|$ÐPEGüp?ŸÃôQ]+ô™ ‡¬ÁÄ´ìëòVW¾—å»Û^ñ9€s ‰$I~µ]øe•ñýúçƒŠ<øZüsÞÿdúaÖGxüøBí4Ê!6Qd™X£•éXº7ÉfgGf;`¾0 ÍXMr^ÎþpÙ3èç+_dô¿¾|ý›W2¾ë]}Ðzû'Sƒâè_dBþÿƒªµ.;„nO|‹f¡¢œR8ÈQ+¸ É4˜»ŠB“˜4Sò †Ùg„+ûë  3×ÓA—ë^Ák ‚ÄÛF6ȧ B/ƒžJðó•:­\3ªàL$J+Q™JV?‡ÙÎæï
-„þˆš3ÝR®±”{˜rñ6¦\Æ‘hŒc
-^]þÌA,Q!¾…’†£²ð¹ä¯1Õˆ)ºæWñ+TV)à m#ãÌ6«jà“e}ö9D%©-þ*rOÑWv{äJ­èd"RøU
-Ùνã(BæöU¨Bú0 D~etÈÚÏ€“Ü“í9ã¥…å ¸hÜ@л4¤…˜t^@O³,(ž £½ ¢Î¨–‹"4®¿‚è—ªºLˆ†ð„`9XXðØýQ6ÅCåì¦êRdHK†ŸC¤ÔèªA„B; .kµV
-kˆŠ"7ä?†>?nzÆ„‰‘ÓX2r@Ð}î„ØãâÁBü=‘òÚÝ5p ^œ%›mœÁ2¢ÌÊ|ƒøœ¾Ù=²Ý|W’y¿‚¼¨«,
-ù(;„œÃ¬Q³|t¿
-6©o?ûB1Â0.ŽR@{b¼ãY‚ åà 1eÞ¡Óä¯F ™,Ú]üš„,`þŠÂŽqc‚ »Äµ¼îI,8'¹¼Ã'+tA°„µ:QjvÜ#Ñ1™Y_ï['?¤ç´&¹"²¡£„ÑÎa•x6‚» ‚— ý‚|*I ì¤ñÍô$.g£tQ 93Îgº#¡Ší«‡ñúuµ·¤§Qì·Ü¤Õ£&­^ì„@FÈiÍ eÕ¬TM‡CXhè”Q "!ïT_þÍÈ
-#<X[LañÿÃx¹$ÉqëPtÚC¯ ‚$øËC/EÞÿÔç&À´ºŠòÓ Û’Ð$Àýi)ô´1&Åc¶³M~›rrF²7ƒa}yɨh9Ëúg ¹*øyÒŸÔã¼J…ÝŒ֦ØáJ®±tÉaé"•PÔ$sIcxÄHncJ²º„s#v5wEoè¼lä|!ô5œö¿‹´Ç4Á!üQDÇÊPN¢#ãêá¡ä-ÄKàqdŒ²¸¢H.?4=†Œá aÚ½Ç1L+ãtÇ^Ì‚ÏôV+%¡iÚ4ê¾é£kZÃùpNkd [Õ7œK:d7xÎRÀØWMbɥŇwàÂzAsÄ1$EC VN~‡îæ¥æǒ߉;< •Ÿ[ ¢L*Sn—Q’«²:ÏOâz”5Ë™<}ù¡è½ƒ‡’÷9œJ>æy(‚@l¢eóÃã¾ï–‘$¶â1y¡K€xn~ÃÇ0=,2ý¸þ^$qò6-ç‡s’$_6+O%¼4Õ%¯5n ãúªè¬ÕCQÌó–ü–ÅÐ!NôBÄr“©¼òe3.CØ
-x|Ê ·%UáA$‹ºo’š®Ëö½­BäŒÀçD {$=é{µ&^(î%iÉát67¦-öàðÏr·/)$e„|†¤!ÑXš$7´Ï©À+-ä
-—\‘qÐPçCÉ7_öóÇ©è”rÿd'/×ùõ—Jí*‰E8ènu•#•¸õîÎóPD0œ(^ÏM%%¸¡¤ j^Á2,ºKó,
-ØElF<bš‰F4Ò˜³†ÓÚÖœwZøÙâÇÀäòFð3$Ðû5=_R¢@Ð$a3Þ ÛØ»V÷M ˆÀḬŠ¶ˆlåÝå:§ ÍmÆVŒ]"çoð´æ%ôH‘”)îØ2+ÏÇ+”-²å5
-øP'~õ¹Û÷ÖÀαD†µ’Û*:Üå^á£Íh(Ff“ó “JŠ“ˆc:•ÄUÐK™§ùtÚôÑ·Š¼³SÑ&ÉìÌ›ý?s{ÌðÁªÝ*BüÃàáJ T±4°
-ʳ‚À–Ì~ð<ÊQ2À0æxj è„ $+4Ÿ¢$îà¦hà;Ä•q˜ÿAtœG¦8Ùÿw¾A§‘^jWs¾N¤…û§^ä]*Þ¶ï'4™œ&«~vè‡ÏâD“EÊEa¢å䦨%è-È;íÒ-E£®ÑG ݘãî¡DŸ
-–Žéfá%Æ-Œw I˧1/@¼}T#št(;Ç9‰3ðàp`П‰KÑ°²øºò'5aSxP
-ÿ
-ÐTf·ZÍ+ŒËK;E–.[BSÓòsˆ†žjŠN‘ìE-–‹ Ì©$eˆ :_õ½ˆ½P&\È>òëô¶«7Ø;WÌq=~[
-K%E'дHϹ¸÷›j #‡þÁ’7_ ƒ7fødV"¸°§Y¡ì_YNø[üÎßå{TUY„×Í•š(ˆÿµi±„ˆŽ…i#¿ðt›h' ‰LD$­å>Ñ" iœSHRh¸¦Ü–ìö©IRÃ`’|p³SÑUrQ~‚~<†™â9º÷b‹Si˜ïÿŠ¸,g-Øò›ñ?AÏf
-Ž´*¦‚_}%Ö«¡sŒÈtO¸%À‚øá% tgø$¯xK3†=õÆM,=•Wï"ýà‰¹ú9Ä™<”
-àÚ&« 00£„8†µ‚}gœ2¯TBOù×¾
-FEAضI3™rd’yZ~+O¤, AˆÄºð<€“À7Ý òü?Ó‚±µ0ì#Ýg?ý*ÚI¯ºö:ŠÖdeÉ  óë—©
-ÃÌ’wØ*ˆŽ¿ÉÎ œ«Eo}ú—cµ8Tí{q¦^^ªr"JºlœœäíM¸¢ª²"¾¢ì0ÒÚÞœo%q‡bí&ßðtLuü†£â¦•ëå¤Ù Üi5œuÚ“büV°Ö;‘:Ç
-F¢(×ÎqiñÛ^Ð^³7í¡âÃD~ÁØè1«]’¼ˆSâÇû¶Î˜&™YÂL?áû­"z ò6 Z{:F¤Š­w¨àe xœ`\œoè,•7Ê¢mä“‚™V¯Ø×i…ùèzYÔlê4·¾äŸ··¤“•=.(/¦}}œ£
-¥V"")L[\—äq}¹(šÜ]`qÿàí¼$ñ6VyÌ­Š,až^v9hÜ‘¿-|ôåïöUãÒuÎÞ9¦ó ã€þ甋(Ú-o~õTÂ@ð2ƒ£áÀŸ?NEo›ü·Š¤œ …ÙõóÿQ$c4àö€¤SÜgãBÚ¡ÊE|+ 2d¦à þe¼LräÈ• z‚¾C @ç̵ú&ø«êûoûYÐ=Ô™É
-Ç°ã6ýµ ¡náY™Æ¢ 2
-S èšÝ¶!Uáì4Ö}Õ‹ƒ‚Áé­>œS•Êi—Q<A°qìl¿úãM/Vü yq¶ùQ(%)3ù`ЗÊå°9€~DÑ+›1N6zCj¸Óôƒã“O÷/?`Þ x€¼·áùh' ´¶îHô>òë,‰ôá²Y ûó˜MÙ
-Ê×£}7|#ÆG-£f€S¯†ƒèm¡-Õy‹`ÅlÑïz߃x-¼­‰>1ø¥²ÜÆ;®ü†£\‘dÒ„·æÄxÁûiÆÜ|„&@‹*Ñï´£ Ò' Ü„Ìš õ쨆½Ïs9@p¾¸7n^}3Î'èMeÎ~éCŠdЊ„Z¥©cûä*åã'Ê5—AûŒøøÕ–ìôÚ²6¾±$>LfùSÌÛe?ò"8#¤È'ƒr…ïåwµÚ»ýîwL&(Nú.~še?©hé4ôŒ~ýcPaçú0± !gƒ2漉®yÀŸƒ°Ñ³UB*<ÛÃuz«ÀÏTéªå×ß ³ho¬Ín¥X½ŽÑ$pÅþy
-ë*iÛ.ÿ%ëÖ/.ÇâfRÊõ`F/w7–W?XZ¿©ò¥°
-³9ë½!$º®eY˜b+Á±oÓpò°†è‹ÿìq…õZé#d¬Â+§>ãÅGKjn6ºü.ò˜úp„‘êJ·Š½@ü&¸œCH~v)ßLFˆÚŒ£¦™|A¡­—°˜tÆWC÷U…°†{e.GȆòaD?ñs:y”r@t»°¡rœ9þ¥¦cöXƒ…Ó(7±O†ºTäÐAK’Ö%keŸ£YK”˜L‹E~0yCˆ‡9ª,åf ðqUUåRBÕœÍp9’(ì÷e\‘kÒØNÿ¨i*â\ò¢É‚ºj›Ÿ ®Q2F½vü%g®ßÃÕU®†'¢Ä¥ ØeõY ‘™îN1ŒÚÚsÞ¿¥Üx˲Ìü›ðL…ó[r Þ¢ÝÀÝÎãø½A|ü¨$¶‹ß&àt›Ü(&)®B™à9h~ù¤—Âî úL­Cx[ÉB³±½ìm¢åVâ«-.‡’by_÷„LÄÈW”#OP½†³€^‡­›^é¦Óï6“(¹û)o”E› mÞ­‘=2_§³x_H‰‹Þ”`8VÅä“ɾN<Ü)8æ [`ËæòÆç¿ þÔ¯•ŸÕöæ*Qò ¦"°µ©.˜ÄJqk©¯9µ‡QýP›AYÁl1É™9P†Ý¤³¾SÃ,žß°ARTg™ƒ… ¤¾æTuÒœTÛع”0èðŒm݆^ð½5oGàL±¦5æ­‡Üd`sösȩˆϫÔùúnf®î2Îo­Ù’gƒ³!2ÐuÛžÉ"ñ<2nb
-,Òl&uHãP¢¦jCè÷")‘p¿œ&fùi‹''²*sɶÿ8HÌD´ìåá_XXFÁ,ÚÙ–H§îÅa?Ø*JAÛ¿œû—l(ãêO®0˜ŠÅiÑOžË³aûén¬´Ò’¾ÏyGN™p‘£‚0YQ][ó‰g¼ùn8ÚÆúJ"ÐVF?Á~ zŒöùgÃìVÕº¹;¡™}Š’71½=7X‡ ›ÑÎçðÁEú¿úUp¨ˆˆfŒ¨ÍµÓ8„â;ÚfÖ 3™fi‰ˆLßmøæ$æäï¥¢Æ Ó´œx˜ýÚ°¼ãD+ÊÉGV;3ϼ/3Õ…›¶/)§©8á"¬l0<îCÅá˜Rƒ¶ù¥
-½çWä¾õvÏñÇêWÎîº088Ž ÛÀ j0ýÉù†,Qx ŒÝð€¯r:G¹_ˆm H»œ#í ¾Át¹œþQ”ª‰&g›’¨7ËîFmf‹Ö‘Í™Ÿb&¥ºö{´æd»a‹^â@hõ46^ž5Ä1š˜Ç9ÃèÐܵž0óúF»WG &F+ÄWô"¦Èîs:Þ
-/×Qå[ñ0ÈœQe¢7¨RIjA§áçðwÇQî,ÖDN§—ør2¶º9_S¦àëôyqrX›%?~9° X1ïë. O噃’†‚†îßç0ŠP<6úŽ^ŠÓØoì+»ÉÒn‰o–=ÇPå5qæ Çå‡ä`öà üŠu\¢*]EÖånWÐH&aùUÒëÁkçïR&–•A˜ÛoÊ1c{ø‚Ëz{ ʥ傧Âs²/lÂsxö<@B¡§8
-›•ÊÓ9Kk™eý£ˆ¨Y™rääLsÃZ]yÌ!ÒÞPõ‡d ¯Z »ö(.6UF‚‹sÖµPdÊR:Ôª̉<kñâ…] 4,è.u7ò­ÆÏ„hi%Zý¦ 4‚×ýŽrJ8ªê†“(E³3ÊUªßÄ¡1ì«Ŭ*Á-ÙC‘ñÍû¯âðúy
-z„@ÇÈ/ó½D÷§¿‚iÄŠ‹HÀ1? ‹ÎPVßï‚£åëîÖ ByIr12ÁªvÄÎ47ÐxpùȽLJ#ÀIŒa~ž¢3s¼ÜëG$máæ(O‚¼WÜiö›à2–>.Óã$<2%Á¥ÅE&ÅÃn$ó×L²…á—ª'vª(oÔ¸i "dOrñÝT’èH̼ÆfaV%2 TyïfC|ñ„:ÜAK&i)ðFÖ!B({•ñÖ·rHwjh°: ?«‰ù_ýÿ/ûú[&^E¡¹Óã®
-1el:•o@© òŠb·÷×쩈26Œ¥¶gHÓ/hãü1&ý'ìÌÙý1ˆé
-×þƒbÌVX@…Ô‰
-vûTDÓOßBøš$Ãí%°ão\I¼öNý(^I¢À&8!ãvÁþWÎp-CÙˆà^Í‘IÄòó„e¼(açƒÒ`ŠýÓræÊõhah^Ä ÙOW·¿DžUTeÞ%5)Å}Ô…q*æ?BËÔo‘Š‚ü9=T\à'¦ ‹)KE¬aAQÒSÞŠ8‘ë`h•«f«çŠ÷Ú?¬ÇIÍ‘ÍÞK¸"“Wjr4c8PbìôeŸ@4êë$Ø W0› 7Í1Ù˜nÇFFÒI­.¥06ËØ|Ê
-aD]2Ib æ}”iiaØT†Yx+F÷‰á³VofÔB®Ý±Œi!lnÕÂ9h ¸&öÚ^”ŒÍdkÌw›ZÌJÆÍ’óºòæëÉkð <:õ‡ÕûoÅæH² ñê~úŠ¸aÀ¨¡ðùp
-ˆ¶‘ü‚£‹Ï¡ˆõ†…з®kS AÆ£ìT?vÖdGø•Ž èö0!ŠªIîYª=¡Ë¤)‘TãEòg¼PBê#Œ…阰£&é«ÐÂèíˆ^•d$šå-ywà^rbýCQƒÌIƒÜw²ß¼MS5ys¦%„‚ $-ôz‚„ú–Xý+ä#ÐŽù–Çò£QÐ9bœ]…h ex+}©ÅœZÕ«;¹)ñ!)Q˜
-…Gn" ¼#„g’ú>ªã
-ê«üšmïØØ=ðÉÌÍöË»¼»Òà½èÊ ÚUµuwP–PŒ—pµ
-#õW“#‡3­÷Q¿lµ„[î&ÇñrÞ]’‰ìg&Ä »ÙÕ"+AʶJ2‹ÔE†‡?
-ch¼½¿Wã¿itLPÚÅï s;)ðJÀUx¸ÊF'@öÞ%{í®;uýëkyÈÁç×Q—W ½à µRêG!9ªƒ
-ïÜXµ1Ý">Y%˜K¦lûþJàòÝáçQ#8›ëñ ~à ¹ÿÚ<¢‡ä@ö³Ôî%`¦ öpK$‹ Ë5á¼O{Y~§T9) x ÅÅi C"çôËà‘µ›¥®Ëˆõ75c‹1x¥Éìgv2Q*‚hC õ¼À”ð^«r®þ”^lj­}ýÂÖû$.›ù:§9ë#,ÆÁÈgôÏhjZL+÷@v®À0ƒ{ œûë ÿsîA+ÃPºá‚{²à`_ÈþçXtpF3Wùp³ÐÞ®¹öõÎüâ×OìlŸ¦cüƒ;ÝœjˆŸœ6^ý´ƒOE÷ãnÏ{«èäg"ØBS0ï×ÜÖµ“—š¯7º=gòñ·*{ ·Wxd¥â| "½®ÁŠäM[À댙±(aÅÙû
-cDÅ®º>Ã{Õ tÅV…(™ûŒöex-ÁN1¿ŒTÝ€TjÞ'a±ÐeŽïnBÙX|¯$®ïÀ¾U–e7ê,rfØŒ‰H
-cÃVä6Ä’¯ïøÉ<QÁ(Ùå( º?4¼gä¦{éå³€•
-Î^Â'¶J„×ý(> ÄÈ<zÂ,"1¡T‰Fy~GφŒÕ[%˜]¾Ð±¼cÝ"ã9£·î'qMx3“Hsö“(1Ѓ¹ eå2³i–*ÌÏКYD"«‚þ*R–
-‘Î
-(feDw³dšbÄkÚél1{À&bº¿‰p˜¥9³é_‹Jù
-jÉ–Fÿ|Ӈȋ¿&¬/YΟ•¨çYS_‚MàÉ¿’/pÄÚ§ÖU†4ÅÛƒ“)Öûæw4†ø6}÷’ÌTM¢2!
-ßTÀÏíPâ¬,˜&´SëÃwd¯•qXó’8Ø-ˆQü±…Áqr—‡ oÖ¡5ƒÉ§Å^</ `†˜ûŽš¶oÚ–ÝÎ
-KbmŠ²ß¹ÆÑSÉ-ŽŠ7ÀÍ|côÏàÉ•( ôiîx;’)µF›ýöšÔ­UI
-}·=|ç›%?—|ÓÅ¿õ­èëh¢¹4ÙÒ°ÐX(‡hJ“Wd SûÜÚ8:Û6w*'1Æq-^XFM÷4Æ¢êSüS=À5™ô»^ÁÕØ?¸| ,P¶õþU¬ƒ®úqûL—ÅæPdŒû.E{‰*mq:™”i“vÿÀ$u+BeÍä Wgº¶™‰¶ho0¿U¾Õ;» UÔ|RebkŸ îÊ µ¤Ú“¤÷# €Ñi¿NoJ¿ÍMv§Ž,´­ &•¥Ên"y |Iy«Ë
-ðêþø´Uàù/áeŽ,E Ñp‡9!©ZKÙ`r "°àþ./¥RóÕƒñÉiIµä‚³èó;ršô°XÈTãÆTÕ»¾ïƒ©= ‡â‡ Áëtùp2›ñ?¾Š¨4‹C(výŠL׺Þ)OA;Õ¼¥¬˜Ê ç·k/­cT¼­£fԡ߬F¤!N0I/-ëqוZxkD/Ö‹C’}™¶ƒià[Ê_™.Xbˆ‰§kúp: a_S°à¶ãOüÈJ
-% 'Wâ(ˆ‘Åu~y?ª‰Ã¨FÄ´éKY¶øm{g?3¼_ÌØÎð¼o ŸÂNs!(16J0ì³y–‡¡ÅúÖsu€$ƒ ¤{’=Qu%Æ“|
-´šú?@þ™Q³¯ážld‹xì³k'ц9Ê"]èÀQͼš
-HNûÒãæöäiЮ^k@0(I¹Óæ,‹xðÈ šÈ-„‚Iv ’Uô=*‚¬†PðÿŒ-¼osÄòjE‚/ùY@ CS©œêœ¸^© ûMUÂdT9QY½y è „®ðÉ”™uWl~FEÌrd¡ZEœ7C[ ±Vc¿­Fíãðu<Ž`+Ùø&n"(&ºÆŽlª·pS£'ˆÒKšÛ~ÒG e`‘œ—L믻ˆìy@Ùw¡Ú²ñWWrçÊl@Ú÷t@õÈx(ÇFõà ¹(Ü̸VjMôoßÂî`’/¶F‘v÷’ ÂIx«[dÿÎ*{& ù,ß5fõYNžNæZ³U”`ÉW¾v˜Y„zÔ5Sfº!²cLCrˆ£XlQÒŒŽ‹›*íâÈE;hWÕk!ú0³Ï x}–
-ÜKl¢¥Ñ«ÿnÞ74M½1|oMŠ÷.Ó
-åIÍÙ\Òˆw9õdF5e†¼ˆv•€j@° ‹]{@ˆf¿
-H‰Œ—MŽc9„Owðº6D‰Åe£·µ4fVÙ˹ÿ|”ø
-SÎgt.
-¨´Ã$ÅŸ`Ð\tùãw±ù —ÕÕæc=þúˆOYâÓ»ÆI?E–-ÓÞ›û#!¿¥a¦Ç:®®³™¨Æ
-ª.k-6d=:Å‘zY–×-3´“Øž³…/uZÅÀ­-­¹ÍdÝÚÈ
-VÕ5È;rzl#_- õîÕ;©·QŽz“4“%­äI4e6‹Ÿ7µX1Y^zµ)^•¾³Lë4wŸ™ÐrÕd¶1mæ‡éjÅ3´)3©™Xù‹Ôcè#!kɤébL=ˆ¹4š…ñK;ú~Žåj½ $DE3Cöþ<Ù›Kè^:×Óš2}2v5-J3›f'–%IŽ ~2èB&]ã@l´Ù³\c·2eăb0º2#¡Î`­J²;“îÝG¹š¡t2ضC° ÑœI=ÒOõ-þ@ðE8’ ªüñ“µ#¢\1¬Ù£ `A‚Œ#ü°ö`µÆ8Ò#äãb&k½áÙ.Dhg ¡¢YFbMZ ½Q…¿Î,Dë/avUþQ&¡‡÷mgdnEÂb΂ä{=÷c×8XÂkÊ_Aö„qBtͦvïè'‘yÚF™ô’¥¸ì4HE §ÞN<#§Þ†B„ý@œð[£Ï—®zú°Î[gÒ•ˆ1̱fÆËΘá ú•O¬%»n“ÍÊ“Hey
-íÉÜÄév@“é§^ŒÃw¶»øDÒ$–.§qrf‚jZŒ™š„Íà“£‹q^ÆÁž° ³Ã\,¦È7I\… iêÉrÒQúQL¡ ©j:R葼8ga+ì¹zÕÕÚb`´ù¶³©–uÀ["Ðeៜ‡ú x`EÃ|Ó#‹b¹•«ÆÜS éF‚ô™¾¡íµ±!9²<Ùõ@ frÃœ/{ƒ`«…âºÉ•¿¯ žùœÚyÓIÎ×`H96„@ÑÀ룳G_tÖôgó½dgÁ*ó€`fVšD¾íP–•rÃúiäÁªìtj-–/•ƒÐÆ8èœáÃêZ^®Œí·§ä§Ó–ÒB’ÊNßl64Ú´"ÖIgÓ6¹
-ÔúȬ§NH;ñd½Á\„§ [y 2Ðë X¶ÕÝÞÛ¯í) èÜ a/•[;JŸÉ@+¹¼ †G ±âÚx÷¨x¦ÌA}·±o…›ä
-¯i#\—Ç}1ÿ±a—€1õ\K_­äwžÈΙ…€aL'GU¡«œ#TN†Ù8sCjêñD]¸NQyœa%U"×Xp¢4Ž\~­:
-‰x3ë¨Øòî-ÞEû>ßœ öô‘šÜñ37g'Tàÿ`¹óðÆ£×> Ï ,›”\YÉ“Gµ˜7—1Z²G¥ ÙA·#Ûæa™0즈`V¤š”šÜi^J 8=¡×«ÒoÎ8Œ»Š5h1kr˜´mÃ8‰Ê¢ÌpÊGù¢R(ç&bØŒÌmSôÆzä®$q ‡žê1EÌŒÕìŽs¹"ìö%ö¼›::54’ Ÿàc¾Ý"è8 ° ßw%Ba—[^‰TÄæ¥ÔQ².æÕ饬Àâ)Od6.°ô˜rD¦çwg ®àý[8—]s[X¦‘å½XŸþÁõ&}]ExXD°3NY#-„¤©“–ô°f)%hÇsUƒ˜>°dvr<ÝcUÈ\L·G9«; 0”ζ¦zCK¶óPºÅ$|;M‰,{ϾßÙék‘kˆXü$ ]Ø÷B‘G×¢';­öLT¸Hÿcôì´J13=ôá ÕH*q òÝO> âê‚UË(¡yÁÅM¯g61'ðì­Ô,'eÁC?Ý´€%£ÌFÆì»é…>
-® Ç’ fíCM«|%ÏÈŽ à±4­ïs’œ2!’ǘÈ*攅λDÂ_3¥h¬Zø/<÷„T?ß¼š Ï]¡¬q§= CWÀ)úÞE)‘
- )‹›ší˲ÄNÂYØl ‹èæ¤= öj(¯d÷”Â=Œx€äb&¿ñûp½¡§‰Þ „mÕu@
-þ3phs¯Ôþà¯Ì±1ÁO,OÝ{ù” Ý’^pl­ÀnôåÓ`<Q
-š9@®q— R”ÅõyÚËqn|"êhæ]ÎHj©¢ùc¤ èÄ®jIbÎR›IéáÔVü
-[ß`ÍÅT&îù•ØãÞ6`¯57f°Àkô‹ÂɆ™¼5çÚ¯6wKV!q>ɹA§m§G\@‘Ztí š&¡Ömšñ‰ÿïBÍ‘[8;Éz2ZJŸ'áƒÏëTè&j0ïe.<ÜŸDù«6ìÙØUæ5ðPËï )QolaŒÁNQÂNASq綧"™B<¡¾.—ç«d-yoyJŽïöÁ¬ â8nrM
-9ÓÀfâ‹( Öæ”X‡5áb„Ï=GC(ÐjÞ‚9w(¼Uì>Dßl˜Ë¨HžNŽŠ¼3®q®â_ׄºxNy,jœØ „äÝCÑOÿ*ëmþÀè
-FL>#Ët¯{ˆ¦b'ô…Ý5©Èàñ$'ˆ(‘•/s4àtúJD^Éßøü|sj\ —x_¡«3_.ò–ï麗Š.„à.ÖµÈÈo%“ÛšäEƒßVDpÍô<œ`ô,Xš•¯4k_$²¹¸ßÑ©9^q§â•¬é“ÓÀ!¾ñÑ£ë1 ©
-ò”cw˜~—$Ô9²“¥8&ýóÍ)re7}ÈÀ²\ìí]˜{.
-z@Ö ã0[{-R,˜Êš|ÞºK˜BèKÕ?bÏî°sÔ]‚ÞaÁ^¯GÁFœÚº¥gh/‘+‚<eÁÎ`ÒìŽâÙñ§,Öê.90ôQÄÎ8#¯h•ÐxÞÄ]ÓJR$’À$#îG±½h:*JìGE¨äkç¾
-í@ñéESBÚÍáH„>Ê>uÅ&¡²'¤T¸Š~F#íz-š†WíeÜÀRy#ãZä=(•D>‡Wk®û÷ýÊ’þɧ¥ëQxÍó¡Þ¸²d 䡵Ï•IŒ«ŠKÕ)Z%00"ØybwBIÔÜ5ÜPñW€®#){"Ô}æ­ ÃYif¬uLÿà
-M’õ³ÉÒ Øœ] +ö¨IŒœ1›Qü7’‡š¯‰tNNÒtm;‰KÑ×M6Ãøìzó½‹Ê8,q¶9O^WXª÷]’YÀÜg9ŒX±ˆ@©£ny—@‡S’”‹uKuD`ï!EìåÿŒ—Kz7 „O;èúH‚ϵ³Ì-¼•î¿Í_$zMcdÙ‹Äv‰M…ª­å­VBæ!*Ì0ßåU³¾oú¯Ç>)cìÄÂ`õqzxaæÞ "ß=c )åhž'à“¥-Lm`†“× wzD‰G0EòßýüAùßñ\’Eb³MõÎ9ÆW´ÒÔåéÞvƈ
-"Þ Ìú8V.¤‘#別 qÀ%Ç<Æ„T䉫à¯ü×YŸ'¹MƒfþòÉæÁ9véï·ô—¥ôÝ-Õ†4L²SV¼ôÜØ%b'¢ö¸ÕøØ;7¥°Ò®åÉZUµuªKâ•Ì€?ªHCà{sùÅÒŒ I-úˆ4zC²XÉwÚ%+d}êÇ…†9‚Ÿ¦â£Oó>‘qV,Òþ¯¿bÐÓæ«Æ@Ì,›„)ø‚ò;Åáå¹£†ãtB†ÌbI·ÒûØžK’'ßøFwÈÄиµñ\‚‰Z ©ªá•ùéB/)6\wµÓ2&<ÅÇ8N=™Öd*ÞK6J€pZ`‚uS²×ø˜¯™³b—X(í›´‡ÊiÍ!Ó%ó$ž(¨…«ÑÿD¡ã•våkÌå=H3žvΡZ„ìc“TÅÕKÉ`DT‰'dZUãÖÌ Â
-Ê^‚µÊF¾¸é ü_‰Ù;ýTr †ifS “VÒ_;_Š
-¢¥Ë®hÃƃœ úüÜçQQÚ,¹\
-›ùŽø}>D–EÉËQÃSØ™GrUè5uô<¼í' -¯Ë?¤•¯UÆ“íðÈí3(Ê>€òZø/>[^¤(Z‰ô9¢ »ƒ;¿=_/1Úg¡D…-¶Íì˅ŸüÆÊ ,‰c‘jÒ£POéÅ$®r¡•£Å›ÁBF
-¦ô¯t¹«²(#"Ó|§â£S*ÃáNŒ'‚ñòÂd¡…ds}ê{žepTQˆÉûðd­ïسÒ*‰ºÆd­ïÖ·‡"t3¤YU RQÉ4^ÕPbX5ö
-̓5tiÍ<†³*asAõŠÔºÊýýKVå°qöÛàW¤jE‰zŽ)ZÃpæºEœ*À›˜ÚçöÐò-^Ü/¿åO#cÀ,£gɽ"¢*#/ì‚¿z)ÏÏ>–Õt#i`F›ËFU!ߎ&ãÞmкAö¶â&k*J=º#è²PrC ›^Ä@â¼D•èŸ“õ7$`-ªÅ‹6
-–Ééi.k»¬\+ðû6Ú´ºÚà+é3&tŽ.\
-avÇý (R)!ŒH´ºE2öñ“©9ÃÕA}’ùuÑùK:ü< 2Q¤žF
-öŒ¤Fž~˜Å][Ã=… ö82IK½¶CP¦ŽÖ]þWïÔ„ºà×ç3¢ygä½vÅAÞKÇô›½Ã"›ã.U"±û—ž†­ç@[£‘-ëiæm|Ÿ@BØ(ÍòÀ—»TÔôz8RƒH(::Ü`2¾‰Ò1]&“ñlã¿c_Єˆê/§ÚJ‰ÍçΦ‚.cÞ}ãÈ$5&­^Â^>Aœ6t l=I5>Ú°Úˆ¤åÑ*n b³”°ôÂ4vëÙzÍ`°èëK6´ÿà×9=Q¤ ­‹ E‡ò¡\S™;„… •"ò)†f’S‘š,7bl–Õäß±CV³ë>J˜ ‹ùx5Ê°á>‹‡Ù³t¯—£] ¹\×E^Jœ=ì-èBhwßÛæ¯ã®j§ÉÏV§þŒ@júÐü.]!Ÿd….VœQûê´ƒ¢ŒvûÜA™ƒsW Æé٠ü‘«ºj×Ëž jK9J“å¡;’IöAsˆþŸT†8Œ‘Ê Ö
-÷‚²¸G1aõØZ.ÈäϱìèlX2.æƒ0˜Lš#Æ”wôÓI ˆ ‰¸.sÍcFIì8êöʦC=L ´Pó€ð¯äî$Bý%"grŸÇÚ™Þé&» º_7&Q÷ óùCøÒhz{=å[¬EYf¾.c @•é×!NË ƒªAnó„s줄_ÜÐÕ—þ&^ÉÔL;‡¼²#ÃØ‚áGw¸ϸ@E“!%pžsZokRgpèî@ŠV(\–½H êUaâP¤ò"m<7<¸Ì3oÂG=Ó/(NÀô¯ŽÿïÓïŸÌ‹F+ÑBuºXKàÚCÿtÜg„QÒßQ[öµÓ ôzRjÈá²@¸$#a=ÇëªÂ„¶ƒ“ô§)kU¦¾<nÞ%ÀƒÌíÙ7…olxy3Œ×iK¨qÒ¿÷=Hú¢˜<†½¿Èú°¹dÍ[¢CXi›¡ó"¡î¡Á¬W¥Nˆ¿)¾zMÄbzÞ¡OöâÀ}ØEÔvΙæ–Ú•2Y`Ià(ä˜Ã!Ô¡§–aÿËRæS|}éüG"餂é 2ýºÎÀO &ÁÅT ähö%<\c'93ûÒJ`0nÍïÇÓ³ÑPÂ: ‚*C=•ÿOºÎ€:Å}€ØœØXØ ó ©ü?âÒä
-ãE‘ÃS¦ÂVUê™ó}> ™Ÿbé¹ÕŽEe„ó%¨úVØ«4³ò‹ØÐÏ,hÆË‘¯òVb5³@žº ÏSGiWÅ~ ýúз£¹ý¡Âl‘øöìþ5= f±íó`fS4¯ì¿µ÷V•Ûµ—¾
-œÄeX0èóxâ‹‘5’$élóKWb½d•5ö’â‡øüžë­sU;(ÉålC@†¬§æ“BØžˆ2
-úàˆ¥UƒjþN‰Œ+’¿vhʧ…‘ïžöØ
-þ?cM½‹žÊûŸöÉ"xeUáу¶^^ ™õ”Ýô.„šöè?8 ¯7øe,L¨ìœ×“MâYQº .fŒECÔÑCf)yÎa\JçÛcÍê\œÚîs˜¹P¨írIÖÃÚZ›ñ‰¸zy½äzJSÝS$­ìUM¯}MÞãºÍ‚äáE¡¹– úzq=M< –ÉÀoBž¸Ýð¿AnÇø\éù«õ'Ðýâ´‘1Ô_¦1ƒ.jGà ¦ãòbT•}™ë*€‚ÍÖÒðÍà%:5Fº:Êyãéñ›Ïµeâ™Q³¢¥`“q›0žžïR€a2ÿ÷Î~gªB"
-_òh§Lõ=2• (E¼ÁÍT ÐñRµË8d*@ÕÖ¿gs3U þd¤áPênBª ‰2×#2 üYä„S?SeÚ‚¹ÍeiÙ#R A6ඉ):D*tTæ§á"bQúe]ÜÔÀ“&7…ëùe0é eò#^ëG* <ºV–é>æ–„@°% H)kÅy‰êêT͹#SÛßϹµÛ¹Ë}jÜ7݇ϩ3ç·;ˆ{¢ú'[¾UiÈ$c
-IBÍÏãþx˜g¢2y9ί£ n¢âRŒy ½$ù¨ts
-©•Åén¢R3p
-ý‰”o¹µgž¢ð`k§<åyê zä)Ý'"õêsºyJ/c¦ö§T?*Ãïz¯ÛûüÌSê5eÕã%!O&ïyJ3Áu«vavS™ ÓlYG7Oi@óÌx9ä) :
-²…m—æï<u‘§©ª›§<Î=òÔ¿ˆ¹œ\©-2¸Ëz­™†aÅ-³Á LJð=Ì:Ì„Âù}v33òèñ¹w@” ±`V°ûýuÀ0Ë •–2‘xvŒüÞ玘ƒ¸BŒ (t‡øad©¦ñѪ]‘™ˆÈ3º+)²ÑÙåšwÍÝ:gä@Ølúºmâ˜BG ˜™º d²g÷Mbe“c()cNþ9íC_+é´Û0äBNîùÙ AÐ-ŒSaá|zíº[Ù/»Î%aSsÛ~·k¾3T³½K[ײCÁU¿ŠÎÐaºq ieýMšÇµÃ)0”O£¦sûs
-£ü„-œ "{Ê¿°VbBmãWسœö—¾›»$Ò˜193‚èéîâ`ù`·Óä}R¦BO €¢Xå
-ß1ÌéW}äñïñ¹·@7Mp¹u™¾z»Ìgo/5ƒ"êÆ óÿç
-ž o ½3'=ç!Kø2T GÍÌ—Q±èoÂv£o›ˆN¬ » ,df°pyy9k†é³SHQ’j&¬ÏWé7ҭɵ‡cþ¢Â=7†ãå¨9üÄöh§—ü>œàÅ©ãUãÇ9éZ¨\'ìpÈ‚W2f·Áäò¤ÊÜZâM:“TÉBß_Â{¶ øSöË©-uI¬^ãÝ5[¨KÛ›µICýN­ ê1)|“á’ÎñuF£äucþ-ʈъÔ‘°"¯ön*Pj¦¹W$2ØS¦w¼%’%;Ñ_‚–hv‰²L³¯s2ÇÀ^¤ÓD‰fb¼yZ® Ñd¹¶RCJò¨47béL[fô-Ðâ¥Y|™’Ê.Y¯)áÌvc‰Oé-¡6ˆCMg‰¨ê¾ksÊ°-°?¼Ó¶Z©ËáÚìK, š‰5i¶`´J@-´~€TØ? š´?ôÀ@T^E±R5új•13ìÅm9¥„.a¬ò!&X.îGÅ̽A\ŽÖÅkiª³tD¥°ìË{fMS­ÛZ}X³¤ÅH#æ! žn7ÔnÖNtO!,•yÍçËHVúW4¡üÌ6Ýl¼ d€ö zßØ—4</0¬Þ> $Oƒ{ yiÃŽåÅSØÏÙãŸè06d‰#7f{B2nØÐ× Z[fíÛ)ráªi‹±wY„7¢ ¹Úʈ3kySã5¤|u甦ÝØm¯“c0ì!kàè^0¶ÆnÌûšm+NøDÆÆ”HšùbŸ¢3U‘G;35Žò.˲I62Q“4êÖ| ImÒãSú’;äþp9t£ÂÐÉ $“dKóá1{ò¢üªçä‡Wý\–}ÁrÀEŒeYΗ(Á¾“ËHuYZ„˃—™\†+,ƒÃ'çÅ ø>$Š-žçXj¡$Wqia`+&(µ-Øa!Ýœ8’šIYµÎÁNmd)ø‚àgŸC¶E›<UV&ªÃœâ@ô)@|—xÉ<GHQqÓ½ ¢gël‘yx ¡™‹&¡òª#ƘŒÆ³[cò£WûSwÅDìXEèû/ÿ6¬–Î¥‹å𪬢K4ùÜþÔ£:éšcTƒù˯1ÍÇv'uzõbcñèùíorn·ñ&ðñ*o’Yx=ú—V:| Šè™´wÞ Õ7ûxR tI²Þ0üÈûce¥‚wËÑýö@rÚx)þÇR£í¿½ÏÝA_ïÜé÷uõÜøë Ì”Ì籩[—ï#µ¬›7Âr]ñSÝ’·Ã6™4‰fVeRÈ—Ãx† •Ò+ÐÆéå•k‡lfb}ÉTúçè±ìפƚQ¦nZ(ôè2z‚°³‚Ì~2ƒ;1×p‰‚Ÿÿ9 ·CqŒ¸x{tó•_H>wâUå5ë•}¨ÐÄPñ æÚ®]ØŒpD]¬ÎÌ"dòP湡
-)$­¢88È Z³yw*“Ù×|*»½ Ô®ƒÝ«qAH¶¤ž(V;û»ŠÐ©öÓ9<@WÆ·N» ²ÆÃDñëQíC[%×ê>å¡4„°÷A<;Î0¥HtÓ•x”ñ‚´Á‘‰JÄvùgÜ5É3Àå¹O‡nË«vLÇ×^Žd¾ƒep+Ž¯±Ñè~£æë ’•ñ6¯ÎÞ(ÓörŠ¬³ŒË#0™Ø1å ©~xDï5ÛÄHˆèñ¹w@ò8D,0+ƒ¹Y_ “7+2æÊXÈ9ˆ Ò —öáØ»qãa¬|>dZÍ
-þÏx™$Y‘+Qt¹‚gê›1'L“ýOë\Éõ #< 1«* n*$on³ЭNc)æ#î5v ÷€á€®ùÍ5`8¯º §:×€áÔø0œ^݆×óû9·É¹ßæ6÷W9“| Þ>| ÿ\«ïíƒO1?5:¼å º5"±ˆ{×Gßr¹¼qùš/þu£Í©bçƒ$)ôhê—(íåìÂÞàË™ªÈžmšÛ#ìüà!<ªLkÕ´"2Ð~Œ÷ ¡¹Ù!µf‘æ{Ùƒ¨±€è¨Xꟃ©•^Ñ«A:–Ù@ªÛÜØ»JCz°Ï`Ø"úTú~ŒD†©æße,ÎMZ¬^ôZ_Šò”|úç`ºs£…’Op',<{»!UÞTvÞ ³âW0§Ô|çªÈ›CîÃ2ãN’äéÛ 'WÝ@²ô FLP?jRûÕ—aJ'SQ³²!¬ÛOMÞ¹
-:-˜Žœê<E,úÅ—j.'Xá'³bÈ"5ƒ&‰÷ §—@$hÞ1@¹¶çÉä2ë(~®¡Ë"ÕÓž¤0— fþe3ºžD¸´÷ð4ÒCRæ{üø–˜†cG(.eXÝÑ÷!\’•xÐᦠ¡
-TDA\{ùß!4õ{ä—¸ÁCÔãAzêTÅ.!nJ³!úçTæ¦Iæñ«ÑÉ· ’à $“cuKæÞ¢ôdñ
-rëS˜‹Ü
-S£69>ŠÛè–×?&¾2$ƒÙa†²ÏÍñ…蘂֋7Bö%ü œ€úçúÈ|¸
-)cï*›Ó;˜"y˜ÈÄqDê}íä«wv*­Y‚¡Jˆõ #nÄd`SÄ&Å –·ÙD
-çA‚ñ\Ñö$4yçáˆf5 ‡ ±CRàJÚ²‡5Ej{m¨¬(–Ñ ×oRŒÄÚ™a¢FçÞ„y;ækÃË\æÆ}ÓuúœÚÜÇüRß;àÏ&ýüƪh©ÂYª0 Ž+Ó~y˜&«D­  FÍÞNŽd”ùÊáx”Š‚¡E¢NÎz2D` ‘6Tq¤÷½ x>&ûØb“  šÖLT<+â5Üq+ÌV SC¢Îé*D¡fv—,÷‹c#xJ#Låš­„ƒr“ âú+È1ÃŒÇÑ|‘ÈÁþTX˜5È€8á àHA¨ëm[ÚÚŠ¹øŽ-èKÛ?]P䤄C\Õîg;sÛ ߘÜìÍ8=kÚÔÈ }RXaéc:E.Y"ö¾Ñ•uP©VÂ0;¡ ÔMmð¡ºÑãGþ‰8lÜ‘BL~^Ów?…½C½yæÌ1Ÿ« [’†0›ŒÑe—sדbáÏXõ’ÞûËe|ñV™Qøã¦Ùú’¦e}¹Yéô8¸£† rÛ8*;‹Ìz¾ó×µ´ð“¡)®ƒÄã½iøµA9Æ•Êp:&£æö† —ä†QÃæ,7%¯¡ØÃ!æ ”¡áÿ¹¿D²(L '«N$u‹´Ï…òBš”yCع¨»Ô ÂdV IÛ—! qy*å”ö¨—J|:핹‚> ùª§s»{dÇ¢F5®Q/2I˜Zyî¾¼¼´gŒ "c³E$…å{)]²—³…!d±­€Uv¬«§yìg¡‰
-†pgÔéæmÒñYd†ÉD¥êŸÂÔBËY®«™½­ò °wM ½#îÍeɧM:ëÛ`åcÙ_’…¨SÑ’y
-vÄ_òÌ}Nc'+¬_›uJA©…lWzƒ0ìEœÐv3Ðrûô@"Iþ÷ÄbÑËñá\YT ¯â‚Éb±zO_;ƒh¯ÖY‘¿–PÌ „Ú'L–>œ>8úqm§«Clž §-s瞃£'‡!çÛœp8z’ÿ–]Ù3Jɧg7ˆÂÙ(ÉÛîO1êh4…Ÿ±¾³e ð>äSó‡³0JjÜfàb`ûÔeñ°'èbPü²z[á èÓ@¹×¡—NSÏÏG¸
-Á²§ë
-srx8¼žÃäD>Œ]§«§ M>(ÈlHá+tÃæØ»õŠnœO-ZÇ|Žã¸ —ž¡ƒ:ÏB6œ‘ô{ ±‘ bÁÐ’é²EØõ“òTà`ð œeæÝÍB&/© }‹„Cj6² `FYÆ(Ùïf«rÎ4q-Š‰ëœýýî¦
-÷éyáñå˜ ñ±ÓWñþ®œ?–ÀÂ(½j×jgÁé#0§´0-}½anŒÂ,$º8Œò ÃÓ×zdÈ)nÐõkßÀ¨ÒhSús_ír ]%VeÊšS!A,!ÄcÍ ê¹gÂVAú2‰ OrL®…ÝÇSÅÍp!øø2íÁQXh` Iû®Æ1ðkMJb¹[ÝNnmé†ù¹ (Sk³%ÿ• gkÚˆv›ÙÛ¿¶âÃiƒ ”‚Jpì¨k'<PKøjÙ|œó.ò\¶°ü<Ø@T¹¤h‹qõ.T¥5)Òôô\Å‘ÏÂh•â› •$Ö­%×DƒÈ5¢Ê¶ºT
-kÚìK ~ꤤûœ Š&Ñ­í9´Oµ©W_–ʃü9 ?þç`ÜAïò ô„'¢üÈÛ½Û羺зYWÌvî¡ÉwF‰ü.V‚vÔÊÏnfq@„…X>î2Ú-YIJ\„¾âŒùã0#õu9žH{wc$Ú¡kx=Î Š…~Ð×”– U¡4ú$¿!¼‡¿Í1̨x(ä-"£É_¦ŽxÈ=Šá…¯‘DáÜ— …¥  BySF`¹HŒÄM”=oˆl”/Úu<i·P‹ý©B+ºâY É>Řá)(ÿÝç`&hägFEI5Oaï†GzÈF±Ëðtb,Óv’®@1±&u¼%’z#è9¶Ÿ“uÊ—›ù‡Au²2KóÒ5qPjå©çS7P–áÙ˜¹nW&j~S†Y :ÄĽF±OÑm¸i/÷¸dQer[>_‚˜Yçh3ñ†có}i4ñ-Ïá.;$¯Cyʃ Öða]qè
-Uþ9¬B¦Nü“ÆYb‰|ÖPç´!UÖ¤†94ŒËÙ"Jñ|JsIJ!‡1â¹0fÞçL±zåM!9îˇôÎÚa2#b·ŒÕ¤÷šFòéB Ž àÚk·õæË\–LjrOë±±©ÖgoƒÑ;kšÉxõÿ/sIŽ$Šž îÐ2…„ï‹HÅVy‚µj‘÷çûîIf„˜Äp0ÓýÓ=Ü–¿Ìcé&ͯàŠÃ6LXl踭7×ú¤t¸Wëzm¦c±p„
-fòYáË9Ø)*‡™uÅ–¢ƒ˜¿:íkà"__«p‘PÍÊÏGQéFàUörJK]R…¸÷1¸Tø;T¾ÁJL熺¶#p mˆ²1«)äçUgÐ`›‚R]µs´’I(ƒÌ„€¢”µ{7ô$¯ß©³‹ì*~¥­OJ
-4›†[š}ŸCbòñ½ÁÔÌL”¢1ö(ôFl^÷Pˆ×
-(’G¥yìܬ=`žŒ®I”ˆ¹b¤b;•T°¦˜fL<ób˜À毋ºñY©ÙU£7õ
-Ëõï†KÛ‡2Ïâi¦ŸpCW§¤PÔ4yA‹TÉY¿(ÞROQÒqÓƒ*0Õ¶!Ë& Ó< !ƒU³ë×´‰l |Í/±-Uœ:ÛS2±AEsÔOÅð"µˆT1Ò:‰êÅ—Õ¥PT"ÏyçîhƒÑKcør
-b8EÍ}<Md¥E#Z›A¶“ƒ‡’C|¹:þ$|DVtÏÃ
-&Qz™ö1‰é®•f×èçíAçÐpãc>MZ01ƒ†˜з"ÔÌÔ0úGb$HÔ‚íˆÅœÂÀ*v1‡g0㑨rìÁ†`LŽÓ\Ù½òYâA“¢RÂvüä !¶Ý(ü=þç(Ík¤ôzù±›&¸®œàåÎ=5ÙîJéˆ(¡`ÍFµ‹,²ºIuî‚WSD™²‡ð‰Õ†jQ2\4ɼÌÄXÌx¾¼ÕÏíg3&›³98¬®c{¹œ¹eÅ„ígP—¬šÜn+cfÄdÁZ ˜>(žç0H¢uP
-eCëM„Œ‘E›û˜™CâÔS73¸NvCB}3¦=:uU‚çå¥ÄxÕ?'=4]¤¦ôækXjüŽÖ¦Ö»Giñ¹†rK~qVÂI”“ý
-_/²‹Î¸¤kŽÈí‡ÿ)yÅKÕtÿE”ÒÁeÇE—¤5”Ýÿá—jÉsÙÑqÓ¦ˆMÄ¥Ý×s.Csþgø®¯r†á€ZiyÜ,é¬B™|>·¦|ƒxiÔsñ2ÌžººµÉ¢-î€_-{ïèDÄöŠFyýô@rظ(þƒšqöOç¶3æû/úÉwÃè æ'…žº±
-GŸñìxÀõáÐú•CGt@?o@§ u]슻(E¬obÔýŽ»c¬øÔn˜ÓgŸAßï¼M%øíÏðã÷¿>~ûû÷$/Á3SÈà>¶uñ´RëôË];$.†Å¬­Ì›6: bi£‡ïp®{$!ìv´ózM„ âfÌÿ+Ê…/ˆ¨¬+e5“è±wÆqbj¤ˆOéYȇXaZ,hÖ½½ãWÝ@d^\›/_8Iê›÷¹qCÖ ÒÚœÒXÓØU|-…¡êåîœÁg)óèDT¬ 7bÂ'àÉ
-qh+Êp’î µsa\]G?;Ik”šËd´‘æÖUA`lé;b8Z|íB²v˜vžv\u>GùÄAHuöÉÔ+’ èËÜÑr]èJ¢ª™Á.‘¹ýüp0WµZŸŒ¡‘qÓoƒ¸mà–:övæ]Á3¦‰½g ÕÒÄdåIPÉϳ! {b$ˆ³3o^[¶gl/GíÑòÆ.Pö¯}UäàÄzçnWUÊÙ§BZ-ûH“}UØ°‰FJ&í s×8)ÎÎÚä­¢ùÚcÁHt­èŒ·çT½Á¬{!³M"& o ›G%Ɔf9€H‹{ÝÍ:ƒÜFD¥§"#Õn;zÂ8ÖâÿgïWš2§ìjŽÏK¢Ákó᤯µ_€`åéônTkÎAM Kp@HDH–±Æèq]!C¶œ|ò ”Ê„ñ´RnNQÈ€Ò û”.Åà£ãbÌD^ SL5¯ØEL¢É¥ û&Ò€ì£4æcûäÉ´4”}L—OâÞjÊ×UÕÁo]¤Ì Á¬éjùã±%oR\h]ÁäΫ\@º­”.†‹XÈÕsÔµ‚LB©ÝÚ0ø$jÌFšÌ²²< .ÃzÉï'¬X‹ùÚ#ÁÁÐfâöª Ãyµ9&dA m
-†\ ƒðŒN®XÀ]Â3ÆUœ°Æƒ¤¯~äíVZ‹‹Ý‚¹W 9ƒ¾ßÙšµ\?þ´`Hd?˜âmÅø
-ö²(à„²ì
-bñ¿°KËsc}À&QŽ¨—é×»>¤\‰Ü„3¹ë[åÏtÑìmFÿœöàmú¸ûrõÁ²ÃAè—½iBÏ ¶¥oiò@U:QSçÁ›¥<P,³É¼±ÖÝ.ÓþkÒ†4Åx •ˆýr(•7P½>}õDH¢†ØŸ/§„-àSŸ,Aö±
-ÂÏüL"]—äù ±«ˆ§0ÒîÆÝOŒ-ØòaÈ®_ƒÀ•øÞPï^U–eASøqò«ãLà¹Æä¥W_ïL²†>ì¡Ï°L"èE=Ú9ï—âÓÑË”Åø9¤ý]zÃbSó£$ÃIÙá²!‘ƒoÊ+ãƒ!¶(}z¹CݹZÒë$õ¦™V‚Añ á`á“g»öÞñ~šÅ©{ˆU7Ç(¿áüÒË÷?†PÕyñ@ss¼{Q§vØ”ŽÅ8§Ã¡C¹JõK|†œ[e2v½´þÛE4‚0ƒúÂ’¶Ë¯Ÿ,ö‘ÖðAœ—¼§C­ø¬»² l“=ýµ„²¬º…±|rÂûpµºt Éy»®§0Yl:›Fx™þ—”GškË님ôØM ºìWæ²TÔ·Á¤ŒQ¸ú$»¹¯HóõÎrš3Œ¼=%½G¯þ«k‡Ñ½VÕo…"_N0¢ênšIðM Ý g7½x›ÏýÕ$„©r߸3@ˆµËsÈÍ+¶ ‹!Xs~9FŒ“HÜzL€‰ÛìäÀÐ2pŒ9H&!×6ГÔ'ÊäÂಣq?K_å6š3a»Æpo`HçÍ Ê
-ÀIXܧ׸œ.30dã؆"[ŒKF ê/[‚-ÕòªA®†S×EA¿Â2il¾ðÐÌŽbOû®emR{zÞ’Åo bkqC(7¦º¦L%ø8¦ çÌdìf: ¼Æú<èÄLÖ´¤>HéÓæÉ eSzlÆëØRÒ£Æȃ0k“mdM°9`Ð_
-Sc1ƒuƒPGH"b{9
--SÁíGÑ2ã“ä„Ž
-2UKŽÐË"Â'
-1¶šœ¸XÌoI” Ü|oÏv&Ö%ÒvH”Z"-†&÷9CZ¿÷pžþO5?—¸FBMY{¥„çäÕ_³Bx°™;ªÄ†³x‰Õ @9JTJ3œ=Éb±5cÅ5 x²¼¼oôÉ Ãâ“àFº!¯/sKr+Š® öPv΃)”ÌtµA^¶©ýë\¾ÇÌú è 4u?ƒ|ÃbGL¹Dˆ%mfºž30ì¥Hëf€xEÒ«1ÂÓQn¨¼ìI¥Z䑇…Ç;(±4\zàQÖ}‚’j¸Þú6(,+Ín³)FN7Œ”¦òÎ䋼†¸¬½m®4È/êʤ1‘Ýa°Y}K%MËWT7_€v¬“¼
-áÎ!CIq˜.SŽ©…Ú:
-ÿñ›Jçsá4.ÖÌ© ÝfJ&|ÓñÚAÚ2õ\ªÿ}êÖu§¼ÈŒ[ÂÜg£ƒ( åb€jögEʼn1¥‡‡¡ò56>JgÒ9ª€!ÿà¿»"éÃ)2G“8S‡GÒ.úòL@Bç-ÈôÒI¤ÜY ¾T~Ac°*õíþ%Ü/.…Q!Aü\‚¥Êsk>
-#KÌ—–G9 þœÏß?î㜳ÒÍîOéßvïúµw068nÕdü82÷„Šèœ=͵¨’Íøñz±iṃї=]^/WÚˆÌôiÌWÖ¯6›Ðedäɬ§Iq3#‚¥ûžãjºŒ1f}íç§$Ï'52±R$CÈû3„I·Á‹ƒ¹*hûCøq\ vùqp©L伬åõ±±ÌX!7ƒFc ðêi¤NªÌ}ÝX¨ÝIk…û±OaNi#!•auº/ª'DP†S´×8ºšüœeùd¬‚­ÄòÎD”"ùmx;—cÖèØþ”Bͧd’’çÍÎá ~…p×òAyrÆ¥”1 ÔœDV°±}ê
-¢#l§êš»_YÛIè«Û Ñ"¦ÀMÅ?Å*òN˜ÔòÓ Wiàù&,—÷§ðeE¶;æ;ÁbeœÚ0òW˜ÃZC<yE„»+ReæJ‘myp·€Ð’ROؤT™ îÅα‰ðYNAr˜€„¤øž³ôST‹"9Of€JÜŒµÉ…±Ì$>Jvo»ãиâÑù¼mÃÒ;{W”ùøo_ß GÒ¼/kûú|
-lT`9*]µs&*ØJ`J½4“»1&…ôW+Õ`bf§¶I’± ½)½9ˆV3ú îìvN²Іڣ3—z‰?àm¹z£zåLÊ:Û¤%©ð¨4÷6k&ÏçDŠfÕ)6}¢(eb›Ó±È¹ó†œ}aX §«9Ìß›z…ãÚ;žeð¦–53¾¤¦mjHšj”Gw©¢ÆŒ‘­?@ª¼û
-« Àçe<ƒ/ÀO#¾nÙsÙK_8rSÏsÚ6طЕ•O&C°{¾RÆ —èŠy3˜Ä"QÖ¿çÈ‹Qý-?ûóŸ?ä$ Dõ¾‰{|þŒ^ˆëh{+s@@–VÐœ²éï’¾$QêÑPï„A0œfV PAb˜ph¾ï0© 'èvZ
-¬-"Ê_åã7BŽEÒ¿ûÍ=µdyw†{Í” ^™˜œ¹³Œ. °õõÂy\‡®¤i±SûBKŒÈáÐ爈‚>`3†} ˆ˜wh&½6ÐaѲr‹½¿±HæoU›ŽpÒ*¥È½UŠ%ìÕ°PDc Gle'ºx&;7“÷!AA‡X?iœ½œúkÇêòô@IM¿BZÝEÆ¥°¾¨Æl"Y ·t¯ø—ú:ƒ;/B5nºó¾vÚÓŽ†HLï=¢òÈü7qήdö·åèxŒHAcqFŸ'ÀêÝËÁóm8Ô½)¹NÄB±8ÝJ Û33Ó¨cA4…$,ÚÞº.>"ï„Üʪ—ÝKÒ%ÆZ„<lpn å³, ŽÃLù ´Â*],@ñoAû¸î¨A€c ؤh\<–[2½õ°ÉlÃìâ¾Î ô"¬Ÿï¨ï‡ì)!¿&H9ØÚy銇¬´ÎKÇ£î˜Ö˜|Îv£wýØôùÎ>¾}5æ XÖÈF§p†¾á¾±X°êßGV +€Ù.ôg þŽ‘Ó…]+)‚•fÂÐ;ÕBüßvx9¥œ%¾köã/Æ Z‚Ä·ÁÂÉ(â2nÍŽA¤¬hL;†¹; a%Õ§°´,PËH2–æáªF7ˆEÉ_Äà
-0’üÏ
-!l!ÙãÄD’¬®8¤:’ÆZr=”C“7'FW ,"I»Qh-S¯Ã·)|µŸA¾&#ÔôÝN‰I¬$;-Šä®øÒ<viºÌPŒ‹l™"ó‚ªÙ
-G ÛÂ\‡ŽÒâ’õ8ê9èÏÉ\K}’ H{.2E±ÂŠ¨-Ú4øêêl}¾VçƱ‰r[A±ûá÷D™ ‹¥[úÀÃHtõ📚Á˜²`Òv\oC51nT-¿•Æv´cÚ"¸›¦šÕž”>]&‘Û‘tVÔïc»âd9ÞJ¨³ôéРV´-Ȥ–_ŽÝì£Ìèäf¨ôñ[  8ScTȾ9/!ÌÅ/ñî=—'uÊÀ‡6ÝyU*ÑA–w^Lkˆ[˜7^ªŸ\ÍÀx`h˜
-6^v£ þ”’dÕviÞx±:yAÈŽ?M¼õPá7 e–«Y'Áå¥hÞƒµ3É™ÄNaðꊃäãø½í1%·ªÍY—_ ?[ôýŸƒq{‹Ø`¦$UÔƒ¼ù»÷táw¶® Í/ö?vt&œÓ&'ºüry·2d4ë ®–ƒ¼JÝŽ{òøÅÁ\ùÅØjâd´]ê>¿
-H‰Œ—An£;„OÐwÈÆHŠ”Ö½Í-˜UÞý·óñ凶݈S–(²X,Êìþõß_½ûxh_Òš5[òõŸòh1¬ûËûüº ÖÜWW›}lHïÒbšëò±!CL¦†/½AÔMÞ%ZĈ韎‰Ö»ö0·^Á¬hj«‰ÄÌ5¢5þ?ñ:ºùò9¾~ÿº¹¸Ï9]_?õÞW³z–‡F7U¡õòcéã„Ì¡äjøŠ¾Ê¿Þ–t™ïˆzx ·X&!v{Š=æìá|¦Z'1@ â½ aƒ
-P‚Q)6in\¯²o2¾æ&^爆H×Í|Ÿ3tiŸmTÀý±b8ÇrU³2mF,áWŒ¯·‰ƒ€ ýë;Aú
-ñõÏÄÞ&tWe)5umX‹PÓÑF“†àþ5F§¼³è0—'é.¬<F¶VtÞV%éPºûþ<9ÃÚìÒ´÷Ù/znDóÅ—è¹ÝÇí1W'<³¯Òƒþ ¤¢Åêï¤g[»:GïƒÏ¬ N p¨õº!ªƒ"9y(H\²·ÚXç¦>'i #‹Ë&™(ÀÜçКϦ=6D[zØ¥í¾
- åì9 ’œH¥"ON\JÜqRW†ådǪ©´—ÔÒG¦ ô|jõ‹ðÄT¥<x‹~xÖ
-ÏuZœŽÁ¢HKæ× k9Iœ ý\…ÞäCiñš@$ÎDŽ³ø
-úù›˜*tc{£'7n…ñŸ KúµÉ—6
-&h±ÑYÙ/Ò…X1„×F¤[Ðœx{fàâr“"؉õ<7Ñ!´:Ý/å*ƒ! IY¢,gØHSi»eF‚`³À]ƒH\–'ôÃÊv⢤[n¬Û›b¤1yq:eMqtìiFbîc,7
-ž}¼4Ê+=÷ƶõNÒÑÞŒÌUñrÜ+5¡bç"½\še¿•ß&äÏ)„ïs4»ƒ¯Q¼2ÿ$»`Õ?@pi˜G²ÊFõ¼ê¤¬(=³Y£BÆ¡ÔÑ~6£–æ›Q<­®‚±ì ø ½<MRβnz™9@¨‰‚RÊ À(÷]paDI×Úˆ´`.âÁ^³!+ñÆ ä°/ .¿[ï÷ç@t8ÎÌÐÍ­ †ågŒ+¹œ|"±En½ÉpÃR¯}•Á6ƒ ›+9䊛Ùæ–îs¨ö`î0^+ņZYgç› Á
-7 @n'—EÍ%'9ávúù
-‹¨ÌØw1ö0|DA’¨$’uºácK—XŠ=rƒJ$Ç6µ,PT®î²JŒQ:KÃB3nˆ*e9­{é~\Ž+×?WMºÂWÏøÊÂã¨ä¹
-b‚—çîA5ÓNE´¸G šŸ¥*%éÜó
-‰¼‰Œ3†ö!ì`žÅ­Y—›£‡VÁR’ZýÁ9J-»«† [GYÁ„ $K CšF -X™¯»¡*)肸E (‰|'¤ÒwÄ¡Ãü?ãeŽG’DÑà”[€Å¾ˆcP©Î h£âÜÞð¬dz4Æ~Åæî‘z‹k†»ŠRÌCö×I¨^QƒÖf5µT Om*p;jI¹_-¹2px¯aV‰Ž¯Uµ" )oJÙ6‚È7'šÄv‚À&°9,Ü8ÌÇÞI¶½b8²ú4±qÒÄ£YÇ M¹Rœa±Á….ȃìj)•ˆš1à=_§û`ï‰CÖ­rX†ñûû‰áEê8ë¾·,}½ÈËØÀÁwYÛD+TÄnpGV«õPË/Û 3'ée§tZ‡…YæuȾ‹-!C£{8„v˜O»Çs­´qõ'ÜôO©ª½ ZÉó0„Ñóa0aQ:®çä‹QµÞ‰0|Ž¤”¸Ã†”N9NÛÏ>@^@ÐH£Ï }X£÷=âÑåÈ7ØÀ zl÷î‡KÔdã-v#:˜{×é³Ê …WE¢æ±€ØfiÙe¼[Íðý©hq D—c ÖAÚÐæ¢à½Ö¥ÁCÇ«…"3GCYuCh¯&Rlb[eÍ
-Ü9F>­Gi^ßGV+vI¶D× _+!H¿&yÔ=îèK(úÜ 5”Ðr¹@¼ }ë»ï¹—hLrtåÂF1V[V1Õ¡¢N…êr‘|ZFâjFr‚xÕŽÂÃTµ}ß¹
-e[¡2™§C¥WÆ*+RÁ X‚jˆ!§/3¿DD§5èw¥<b;Aô‰ÁaNÓi4Äd”x: šNydíþáRrxëšG÷£²¦[òç;/¥º¶ºƒ°+Ê‘¢›öÃ?M7Ò@9ÜJa¡Ê›²ÝµÕãuÒb\ؘåøoœøÜj’‡Z}ØV÷’?—yôÍý0Nÿ=/åô1Šu£ìqI’7 …Ü‹$¥šòñ¥R×ì=ù]"Út‡½[Añ–07´ÐOäÑÆc»;èó;g2ÚÀ¶)Êò¾­xfâ· q+8ó A*’YŠÐ³7”»#
-h)˜-Æ£=$¡à…p°‡
-Œ"B$<xUÅ&V £=$›ÒD…lH><½NÀë ˆü<½ñò´‡ènÓÜí¡s«§“r^çîÈœ7¾û:§VO{èÔü¹Î£sž§yt w«G'ßý¡37ø§±úxM_„UöÅNþr±ºØ¹ü‰î ×Þ·s‰ãOgÚÄ‘!nLH$€ææê÷!PyH2†âj9L¼¤b,îú§·Ýôù3éèýä@Qj¡'GäOw+sŽìÕ—¹å#SÑâmn‡, Q mÎÙ¸³’ò•ä€#R¡‰D¹÷ž\Á«ÙÞ>pFéYM ¾ŸRpÉX‹¥]ûÄrs˜ý¼M©
-…—å³7ä”3siz®‡Nµ}‚ØŽ±j</¶žðáÔL›l`T̵÷é '3J—ÀNØ)ãêÌ 2bž£¹*F–l©ÊÿÚ[áŠ:…ví$þÜSÑ/¶ù –¢ÿœx=óu.0,ó|­òòË£1Hm¹¨Ã2r–µY[ØaÒ‘Õ7Öƒ÷ÚÈ×F_üÛÇ›òê0ˆ×àµê±¢GœÍXøñ¯ÿ¼ýõß7x„z‹¸)8?{cÆcFŒì(#iÐ\ŒÍ Á›9Ó Âò¤fÀº ¶Ëð)w(qCDevÎìñ{†»CþbZ °0x=ÒhÅŸ
-ƒì¹ ‰-ZÔ·lÑT”
- ËÓ.kÊ(â® ƒ2R”v‡47¤¡ŽÖNÃÝ`(Ÿš][U0h?—–òÆ]DÓö:\&f·PMJy´J„1ŽèE}ûk«;HîoIÉÝŽLþäsÍ%†JEiBÛiLf]Øk >kPù媇Kz©Ô¯(Û±Ri"0qª`«iÄÝuO‚¨óÐ}|_ôí“ZK> g„‚~CIœ?]îxdú^ö`Q$ˆž+ÏÐ †˜6Î(/µº6š8¾ò²4] Œ-¹ W6ähÐëu  c÷ 8Þº2¥ÓMÊ¿³y¼¶ˆöú<€¾ø¢=½jM4<F3` ïÌ &›±g·a ŠzÏì Ú('ýÕç뉱𕛌aë0ËØ1xƒšïR‘‚BR03r<8„4å“[ÍÄúF"p* öi¬a¸ð¼H]D•{E`vª™që-›ÕK´,ÊIŸÌk£¤q'I^‡QZåU`úd‹¬Æâ—ô‰=pâ0ªwjõ
-5íß°ŸÃxž¨z«”^=‘ewÐ7¸ÂH4`=ésž§ìÞâ¬p3” "ŸŒ0v²µ‚¸Y‡iõ1¼ÔJÁÁ&œ™aUÌtÍýþ ;Ã{+Í"þ*¡ÙÜýAËtéY?@ÐqÊÙEI×N Rȵ GÊcŒ’ÑáKs8Ð;“€¡ÙÖNdÒ`]†É3¥§HA´ðK3I|$ŸÔË0 ½ ‡¡RÅH릪I|Î"°[7J=Zâùwë¢gf\ʈ‡%T3ò?æ[*Õ+jP’“±½&OiZÂÈ¥'HG_Í/]Á pí5ÄMj™ö2EÅH]Ž¸Ë-G¯E9Œ„K®‹›9/†¨‹ÜÇÿ/sä8Ž(ˆž
-“‚ ü1?E&«LfÍab”œ`f&nÒ ½`Œ³”;{£íÂÌ6Ï·ËÍd
-k×¹H;Y°Ü·›ŒÞìWÔÆ>™f‰»Ã:…[°8|º×>™ˆéh>£;!bJ¦ÀKVf Ï ³:÷QÔ
-^Y<ÿ[_<a&0dÅ¡PMžW£ì‹w4Oþ‘¨²Sp«MóA>%DýãšMϸ 4µhζ¾Ò¼$Œ®ŠYoX>RµB Ø4åÏÜèPiwÑ_%LÅó1 ÷eBY7ÒEÂ&è©šñ%2'>«‘¬J ö9Úà+4“ä…¨D-¬BÊé†ä/ sÄ”1¼•{düt%y p²Œ sÕ$y PA¯zóý†ä¢)ZPäå6¯>³¼z³t ¤h¯{:Š¬?f]ïƒâqT'‰æ»s¦±‡yŒÍòi¾ªi!6µ\X^3ˆKȵh6ËGQ(EÝR´YHa H=Éû;–?ƒÌ®³}|ÚwªZ_™,o€Î,±%dÌí2óujVKËÍYzûc’St9ºä§Ýœãªó¼À¥=gš÷ÃŒà)u¹£ù3È,žžƒ
-!È;u™4ÿ;þ4ÿþç/kC 8MÎ\W–§4Ö0°'¢z$û9‚»¦„fø”®¾ \@vóÁN2­Ml5TÍ*‘±‰O üš˜"µ¶xh$¾¤Š¤È­“–¡`2Ù\6Ÿ:!t,K
-s1ãKŒ¬ÊÏB·0ÉFfˆÎµuáˆÓQÜáD Ë­öMv]“r`>¢šo‚R&%ú1çꘉq ~ršà´nã±pµ±ÖYò';B­ÊÚø„Bøöx7‰©ðáì6õÂFÔ¬e¦<Ìs|m Wûµ¡¹ÌŽ:]oVØ1O\.3 «™Ê`‘ºvwÎs¿ÛœçÆ|ÕyüŒê“~*±ø¹Q?^Ù­–›«UˆÄÁdˆ¿÷ea¸7ëÍÿÏÕËÇ HöX(82ì(ƒVJ‹ÏíiBØ$4ˆëõ®éHuº=ºá´²ðIÞᑈ¹õÕ ("d¥=Ón}¿Ú–1bllÇ 6gÚŸ1Íè´‡,†ÂådñArC”e0c:ÞEÈìaR¸CNQ@49oo󤕒"ʼnAgU˜©Dïs­S)¤¸MvÓüðWrè¢~¿dÐ
-Ù¥ÕÛDù3`3rfhbªZ6û,ª‹‰n•¸o¢ä„MÃmÏe΂wôõ"4Þ7p·µÃ ºÌ9^:ö]˜ƒ€é'Û²,"¤5‡EÈxhò”ÛmÈyç¨lÇöË#–ý¡_.æPGøñ‘T'p¡†B|MP§øÝôÈogÉž1;fpZtIZŪU†dòæ;à#¹©ÎgAθ_—¤=óÎÃW© gïˆäÙx¯ãCå€'”oؾ‰`ã0‘²+
- Õæ_…² ¡*ª´sÊU9jî|%Í}9c>†ÑrÚÞRNŽuš]¼ÊüvÉ|^]Fæ/ ÅJ0B =d´s?A­²ˆeÕWe`w²ž¿ê[ýCo= F'/cž=†'<Ù§¤¼á¼
-q¬sØ,Rp+ð!sìMsŽ-á…_¶etÒ
-ãíåó2€½DÁ¨p\kGÿ+ çõ;_ìߥ™–ÌÓ‰þd˜ÃÛç$†¸p[i]ÝM(2@‡·†˜͈u+yA’žƒ‘×ö„°‘è„kZc\D,P4lÀ¤ó%øp…X¶ƒÍ¬hH·˜ÂÍòIñv&¸Bàv
-!2Aü>- DLRRžõ!fŽO£[y)f)µd¡¥óÙpDÌË3"a»>ž-ò%}qÖ˜¿â¿DÅFL¡ûµ`~ «ßþzs:I Ÿß™à°èëF eîýŸ7
-‚ÇòÙÄÌ6ƒçŽŽ]„·,%Îc»€ÈÓD3Rh
-PShBÙr*gfž«þ5(eÏô°Î,8„d„A [¥ásˆ(O^b+N@â,A"Æl2 ÂfÁHá÷bLH€0M­ˆ;]Q¬f4‰ÈBb@ò4=yÆVX}°žä ½šb?øåÀZø+Â:¤kZz–¨õ7©
-I”å·ã¼ öÓ*k¿€>߀úä`ÌüžÉ6¢aFÚ¦9¯>Yß‚±¶ó V ÀrR¹vÕ ný´VÊÄnÃâ/Á‰[tø}Öiœkc';û¹D Â#d2¹$©ØÁÛáœÔC9Tá9b+ÄäéÔ„-•½“ü€`ûk+g»y¬õ½]„·%µóœ};DWN¶¥±ÔØ
-mF4d"cSøÓÕýÉ(¤¾Ï
-Ùuf¾Ÿ½?mª\Ç”^³.WI1°ÌÇthÖXâ$ßWÐ BŸ–C†q‚å_‚÷Áå¬ Áu
-Œ‘íãk4…xWêR*CÀz?•‡¶„x…C®½ÌDà›ñ]>R™;êÕY‡@YðOnÑ×Ü.{Ž5Vò)©›$yú’^“ D*¢{´Óäq,¨>ó]'+ý£(ÎGÚÅÙÍ„Ó¾ê4bDX5Vi¬G‚¹c+Ê#C?y«}@r\|>§ªôDú‘$kš±år… ¸Ž@2 ò1¾ˆùI24¢‚™Y(F×:ÒUöôùD?ʦõk\x@öÊoeqg J‰äºZè—šàž%iÒ
-g2]‡ç%í…\,Q€ÀÌ+Æ:è‰TÞ*ÃÂ}ÈlQ6«!‘üWăt!¢ÄÌÀµ¢wN.êè7®FsI±“
- ¯Ã!Œ8åË.ÕJÌ÷o™t†YÞXþ pÊ”“«é#ñò!Ç¥±j¹¾KÙʨ°TîÃÉEU?Á $†“*F®Ã§Þ¬ƒßSù@>8¾îïÁÀ$*1>îZÝ„P0ÂC5J‹È’ø…”)@,I¿@ò–¯CdTB¦»úÇÐG(f([mwxq!§1¥i‰RßóÞ—ÎXpż>T5‡É£{uÞ›TÌžÛ˜>D;œ{Åc:©†5U`œ4‘•tc~7bU’?,Vy)¦¾Â±‘±|€i`’.Çß
-}†kŽìÊ¥ƒ±ü{qæ$wU“ ýã d¥øFC1@WŠ
-oPž7Æ‘Ñ$E3“Š U©âä60UPVZ_?¯F}IìàÁ
-ˆª Ÿ »Ú;O ?æz T£Ïrô
-Ïä´ÑZd;(ÃYƒ°¨r–YY9 Ê7'¤]Am™‡ÈT—ÌÈI¦<ÙÍ÷{Žh0pÙóùƒ\p*2¬³ EŠo!9ì€ÝOüÊ&§.ê
-ÝŠ K׿h»@¨6©Ÿc…â
-“‚üY† 4$ÈDîÀ±Ëf Á‚~³ õñ˜<n™;lãÝ:ƒØEtD¯ÚbÒ'Pan<ý\ß-ˆUjµÎŠê)jA±w~; …¢@îäluÜз¬P¦’µ­ÇÝAmª’4íГ­ˆÙ &ÄE÷*j«hSñc“Âè¢p:\ϲ—ƒ‘ ‡à›óù¨ ïPǪVœs#ÛíqÏUö k’¥Iݽo鵞uÈ[ÈÐ}ù#
-áË ýY¾³"TLZØ„nú¡(%•8 #S¬ÅðGíÙ‰rXVÙ~&%Ïd‚]ÅÝ«‹ÃYºæ·i@ÌjHÃœ;|]màªP¦òUåÖ×÷ÂóKÕDE°F
-Qø4ÒÄAÏ:ü3ŒL´ŽƒUé34,Îë‰k§¹Uß*Ië&»%×õöÁ´´B^ÚË™³e;šU]Æ`“ª‚û¨×0“æa¨'½Hf€phè¤@©ZKž[YÉ$VÈÚ¹¨)
-x)YG»I’3Tr¶ŸêÁüP¢ÂhÎg§oG┎8A2b N¨VziP.N‰:¦4ɬ^›X¥:*6^ùnúªŽ“ö´ßš,Í‘W@¾™Ú}O^…L
-çЩ±¢’Ÿac=ÇpëüË©|â(’¨Ì^vl…_eK!áçH
-± B%?‡ì'ëµÇ¡[I‚}'z™|µð‡näZ®+›9vÊR®Déˆ`JI”â]¾R‹n£·!;ÊÅœ´}…@BåaÒwÚ½>[½‚†ÌY_”{l…bó9È­S=át´µšœô¶w!w†h+ Alò9Šé÷^†.Œòs­þÉ+ª7˜B
-¨n}=_#¹S„ÒuˆF”ŒLúyN…p)7íC¾Îè++휶³ÆIVõLVçrضôœ7Ò . _ H–óëÿ/¢Ü?ªšò×Þahø%à8‚S5j,tÓnZ€ ©ìSD¾L( JQßôYÈÍ„ÞA±‰Ø‹íÞV. äŒ3àiu…d@ü!Ùí~,q‚€ÆžñÂ÷.ÅÛ33ö¯Âós0ö"*î 2"ɸL×J ïY}'nçÄæòR•(ãdqÇÈ
-X^¢|Å•a\øÖ6r¢y)ñ­à Lp<­ƒOk³³Y™O§‘Wʲ¸¯‹_n…ó*X±ì5…oȺ‰žO…Ì7Ô©tJ:aÿ–d³ŽqƒœÄH ö–+y½Ô›»à9óÎ&Ãæ3ƒ†åË>31f‡£«OY•VaÌÝù²:lÜ4¢)Š–0môpù­~º!P¬ñ„©àñ»®u|øu"ßI¦å÷ 7ÅàuáÛÀüº*Ç2ŠL
-áÜh6uþëã2TÇ VI i~´UiAµÜaóáì(a™<@}+eª%?Uo%¿ÿöm–acZF¯ç˜æ¢S¹þ×_§(¡¤0˜ñ€–Äwƒ²´]b `HRÜŠl1ÔPòç`Ò†³½RL’ÆYý\=açùÇÂx‘ ·L#ÙY 1©ÈÞÊáÛ؉I#¼”S‚/–2aڥķª:=m.µ<­“嘾ñ*ù¸£ \&-òö-Òî#[•õ­@ÀPs7‹
-µ¾¶b Ò>õœ‚Ø åû:%Á9zˆœÒ‡\L!/
-ˆË<t~-|±[l…SÏR…±"…L¸Abž—¯£þ2ä¼³¯Ó„ZÌ“E 'æ 6ÝŸ"^¤MÒèÈ`0‡fKÍ/¯!Ö èýšTBÆ›ŽweUÃ`&*=àîU~ÒoN'2úÓ[ÌΛ§ª]ºs*ˆU”w¼Y“hÐsŠÆô9—aÍÑx)Ú*¢½Ôc' $#S̼;ƒBÇ !£u$ÿ`Kå°`˜ùYËK¤{Î
-Wô|™xÉ-aû˜Rç.=¦BGZNo<bˆÅK8©ÈßÆ  Ãg¤0tê$R—"ÍaA°_çA…«︲÷ÆbR9Oöcž1›`¢–K÷üæ†ËZ¶·ØÀoâæ€åÆÈ2s„Iø_¦ÝiÝÄ«–ÚÿB j&“ÝÜ¢}Yê•„Ú³Îbüië%Ì7oOÎ+Ùu1  &»Í‚‹íÅ»ÿC…Œ2C¼Ý¦6ébß΢™ u0¼ª(³y)ñŒmeèK­O뼉½L*FŽY»}ŸžAÇÕâ2–Óœ#dz˜Òã)â¥qær‘»7øßp]0»—H³Á$Ô¿n>èÖ¾3KÊS}ý¡G5¾.aNÜ.äq)³¥mܶ¯ú,BhE”¸ùU¶QV ð«â*ßQd †)¢àS¤ ¡°‡¦a%º¥fç ÛæžýÙÎU“Šà­ùYgy˜¬ªîÞA bÖ²Æÿ”èð¼!Âê“NHƒ1 Œjl%k_Ä//ø&jô¢K•™ØÆ
-âX\öi:ˆßW“ºG˜¥ØýãáŠÚEä)G¢xã ä6Î:„;ÄZä|Áµˆ%ê)±†eáöµµK‰oU±û-O¥–§uÔ86¿.•›$›[æ©  Ø‚É)»·TŒ!š SÀÂ'بxûö¨C4`vß B[°¬â„Á ¦ŒÇ6êµä ~¾ÓGÜò 1þòu9Œ}‹àhú=¯ëÆ7´™wÚ´«÷Ö Â Ö‘9GàóY×ÊGl¡¶†‰S¤Æß)Ékªo%¾8ÃeÂ2ÙžÖæŒLá·“Ä66Êw¾Ê×Ä#GÅ?S®ãê²ÅÎ¥\
-8gu¦Îéó’MyÐ0Z^BH.L]Ë^2:ˆüØxjŸF“ä±™¢ŸgX‰q×[”¯Ûx›Ò颽xàÙ®4aß=Q§ýdÜ8lÌÕùfýºÓËNS>„J~@OÁ3’|™d²Àó‰$/E@…–‚Ý|†œçb!ĦyLRh⪓i(azqÉÕšcÖ`øº­›ž§nã×[à”Ç5ù³ä¼Ä'¤§Lƒ° *.š÷©Þ
-ÑÃ/]ã×- tƒá&h_Z=)äæÁD49m¨öq_ e†’ïcû5^{ÕÖÝÜNŒ!¨
-î­ˆU’…LU¶s2¯Ñ´¼HòTÂÙAÒ~]õ^ÄbÐ" Šýª÷¯Qø"55pÂAÇW±¦ðKkZÕ4½œ…ádÅŠ¯;¬Þ˜0¬g T^šòsÝ
-7²¶àøUx ¶y“ˆ`
-&•àVÎX{àäh{2s«‚H4Ív Ò
-:qÉ Aà 4Bq†Ô»ÒÞܤC Öªñ‡)Ø®'Viá¯BÙ%½aœ¡ïæÌ€§Á„(w“#¯ÀHæb¼]«”ÙŠï]įhDð1Ô0¬N¦hÁ›ùqãYcZ _‹5c™ÉW6òˆõ`æ–X¥Õ&þbT%úê0¹JèQÊ=«Q| Ñr ¨•ÄBêAio—0Nvv+åPbW18
-—üÏs@ ¾!V£‹ ÄDaÕ¦éCemɵ¹ÙÃSʱ/VŽr©2[ºÉÛÀo½ó ÁõÕ:ö¥yÉÌ{ÉÉJŠ°ÿðíÂÛØ›cb*¡zh`««&A~+±öáøö|öysÄئ~ <° j?Ò@÷‚UÅ SíVѤˆ‹Õ(¼)³óë´ÆR+yéY6ä%Ù#$îä%­*iÀÎ7±á
-(¡¯ÇYMÍoìoW±<1WY £8øi7¹J;gFƒÙd¹3þŸiÁúPòÆ‚‚hj2;Lf=}?U,ÞXøS òT—Y­.|K©Y‘ÉJ$= ¸·ôà)b
-ØFÆ´ö¤E¶¬Â\Š¥XˆÙüÖ­¢rÆÜ%kžxKaqdè,1!«D[ÉQ€í±Œ[ôU‚Éc#b5;¸Ó™øR0gÐo×OïjWu­Àw·2TÁçT­û`>ù'ñÓ'ÌüzBix@é!¯ `ƒ†ˆÛ™ È­òé%^ô¢æWad[3ÞP@B)Ƙ]N™)(søB7,Xûwã2ü—ðSUÛèÒ%5Û¾¦éëGF6L ;wõúÊt¥BjbRðìWEÅl¡à´ŠÐ:L-ô:ý½Jöxz
- ö" kƒªœ¥Øšx3Ò¿®ªr¨››ÆžÏlp ‘¦}zÇòðÍ,›Ér‹K(ù°"ŸEà”§YŠšÃÎá}E/p~’úa×q!Ú«sÑ(¢•`Ñ
-þF~Фo„›F F€GŽæ›˜e<*6zZ‰ž HÏbl¼‡e ×ZÐ:ˆúV„pÄ_ÙzÑ_6ä¢-’ ¥H2ž?Ø8ñHÀá<°a&pø+ü]B‘1YÏ-Y‰åEÝ í¼¡KH«»å[ЮøTFÇU§,fW¨&9´_Ÿ|?gH_XR°”¯øÈR£lØhcË*Iú¾C3¶Äž2YGKZUjBãYø¾ÏÙ:‹ù3Èr°=[ Ç æd×P2÷÷ø(Â"‹ÜÌ;Q„³GRöÐr'ˬÊ7)²ùrEmî+Äùs£ÅŒ%BÔºiÊ´’#Ôg;‡ìÃЭ´E j×B£}x™eiø±„…”±
-Ãn»Ù
-Àq 0÷f¦üby2 „B<KD!Ò™î
-(ÊÂ#ÝÎÆÊ09«P©©iŸ3dÖ`+ݽ;üÛk¬I€ä²AKÞ¢ör&~ÃKÜ„qcþ3­’F\œpLu#CO”°ªÝK¢ÌRIÉ%–Ù Ážñ› Á
-)²ˆæcx%}Xg×} ¦°_%rH¡«D‰¦+…Ç ša4eéÜ\|žÃ;2 Í)tϲÄ4 éí»„ÿ™á‚?Gg+ IoS«š5b² Å‹JÁÀžà‡€åÕ1.ç˜@ZÓeŒwÉ
-{Kª»„mÊ‚v±s†Bßb9V4…IXÙñA×M÷"¶“Õftaø9ün'hÆ6I|ð‡Ýû':fuØKãä!'ž§¸Ð¯‚ý²Rà•¯ôîZñFNlBä‘£«ÚOÂÝ 20[´æ‘“YdÝ‚³Çs*w¡YD0—áwá£b6¡@ú!jòˆMò»¹Ô§Gu-
-ä*K@Ù}ѯºQMP™8g€oÄ…€òÅEB„à °-ŽV´Ë•æΣØ7¶yLúÓ¯3cãºyVÀùÕöPòFêâÿpñ?˜"1aZmË©òñõâ:; RWÌcÀœ…³Ðýäüß™(!ÚnhS™ÐOÙ*RHŠ
-éÏÿ(Y=Ö¯ÇááDnx€0ïò§åø~J$…"³½®ºU\&Á Mëv ¨ˆÍ«} Ó¤.š{Ã(ÉÒb˜Åß]”!™ê@?Ô 2Sú9GšǬ™Faì%ð@æ1ØóÂÄ”ñgÒ=Xoª/‰r§A‚SÀL² &'#¶€æ¶?$­‹†Ö3©K¨ù}TL‹îÚiNþJÙPœŠ˜ á}knF ÊS
-ªü@×ä¸5õÓoD ¿ïÛC !iT”4ð<HÈ)\‚â®ÏKõÎ3ÑA´ñ>ªPå•ÆV£I‚x«Æ-–Ç¥`;>„ÙÇ“)®’Úx
-\33Sp›ó g†¿8ÈnP£aë…&=sñðè6ª3(Ì ÂäÙœ
-[0PQ”æìwû
-vGµqS¢˜í ´5÷%®››É¹ÛK†ÒÎ?I6;Q6 ¡¹îcÆŒÕVX æÚIá4£Ï/8&·ñë%¡Œb׋&ÑNC³¤æ[
-+Æ(xNsd™¤ðk2³E¢ÜhÚw’LÓšíz)Ï°óAdo+aØÔ}уZëAc…¿AÓ×wôÜÜTÉ^²>,…þˆõA‚÷à(YáÐÏ_;Ñ®7«„@ÖáßÝYk³Ü["Üo­ƒô£–lD²RBÌêÀÝÓû-ùŒ§RçIxCÇKÌ"éra\+ö縉˜W³ôyÈßy™Qö
-Ê&1Ù:ðq%™ ÎT¬š«ÜŽ&âw3Ê!©dÄ(%Ïh…Þ¡¬Îƹ‹.Vp“\,åAò7¦ìOuÈóûIãiíù˜碣cŒ<ƒÄž(ÓÏ™œÒ±/$%ƒâ̺ ×EY "ÔžMB3â0KC#¾Ì[Ï'Ú•'âªG3¤ã˜,ɘ¸: O<:o4Ê’LêÐ猩.Iç3¸MŸ ÆȉŠbÊ—â)šÌŒ8–(ªvÙM¯Ù¶,zb*iÝg<”æPüX
-¢¡ ŠE-Ü—ÆÀp͵=W‰zØ­‰¨8‘3D“?¢NÝ}LI4Zb”ЯßSLdT]O‰-¶ñ"d¨!÷ï`;>OÄ>ØjdÐêKR°Ø.€-v-ŠŒ¢á+ÅóDÐýعB[Š~HTÆ:ÆúNƒ«*³h.áø!°‚ œÕ“~p¹öÁàùs*U±
-50íL
-â"Vû•""‚·[&Ú¸NÒgÉ&Q#ðäüÒqè;Yþ
-|ɨMDsgB«ã¦öRÂ'ZvvˆE³GÐsZýE^…¼Éå/[
-j§y½”Ÿ¾`g&$ìÉQ†v ‰há­£…B·Dn´ƒ&pŠÀd7•Ï=Öº\Š‘~nH2§X5—Í §¸!ÑÇeä©mHeçY€J ñ2òÖûêBg¦FËé}%á‡Xg(Œý;¯N … å+áX[ÉÅÑ?1ÿàæ_ÔŒ
-
-S›¶óÎ> RP÷ø³ºK$ÝRߢ„QÈ!-õØ {G«Dª>LãU d¸ûJ#†ù‘&ÙpÿÅaŠ,ô½rÊ"¨Yß­¾-b&^M8aÃ;rœÂ7З"û›ZŽkS€×eU˲0X"껓¬è%S2~t›ãÍë„L>!‰y#ùgnþÀ§3Ö‡¥öK‰7šH N¾þã:L†xóXì!®èÏéÞʹ‰€ÔÊÚÅwZ˜Ë"ãµêXqqD™xÁ ç³bF«8Oȧ:É„±v^§t ùþu paHÙ&[E}’D§&Æ…¾v°_<gˆ•†Ñ³±5éÃÃCàªKHI¡jÈøÂ+2ÅV{,ð²+f·K¾å”ª»óAè<¡
-Á´Q{¸ÊŠy2 ZüCí‡Qx¶0{h¾NâUö{lÁCÂ1WÍïŠÒ`¸ç” XjÉÅX|ÑcoÕõb6§QÆ aÏ@èv!Ûa÷‡JÂa€>ÂÆN<;岉aÝé;ÒŽÍ9vbLV#ï͘uU2=ÏŠ§þKOéÃp0q—”}]KÀ!…±DÚónõ½˜Bâœ(·ØŠ¸Xvé
-üÂsVߊÿëL[^…€Ñð0ÍÛ¿$^n5OÓ^ø*8x‚¿#‰=$½ETcJù ŽÓL^ e=¥+A+õ½ÞPç—jÿ
-‹ä’ÇÎX—BPÒ,I/MŸ`=ÌN!ìc)}º$c@¸fyñ÷AËM1±V=ÞZ!i h¥lÃMEå´ VŸ;‡}òiÛt@\#j€¤_×!¥ˆ4p"%ÞæêVÔBœ‘Ð>Ž)¸iXJÓOØU gS
-Å„ =¾m!{MÉó.aÞÄÌ´ý†ô{ÉÂÿõÏ­¨%C”†2Þˆ]]?¦ãVf ÔQË…Ï
-l Ê6|æ/n^
-8°r¬ƒê¬ 7þuY§Ñ£<0•UwJ
-Fù–@´ò”+º¼#ËÐŒKI`ô;Ö¿E!J”:sÇs¼j>Œ.hŸÅ=F¥¦$q¼«üYâ­€ý^'t]z[âߌojQòðJYž,0ÉzIó%O™H%¬ÒŒx"ì=R·ƒ@U
-ˆ@«gÃFP”ë©uÞ]è6¬ô–i· ›bàpSq’®þ}ɛü÷—ÔÉÖðÒˆP‹“z¤BO·%cžð}(ÆÓ.#ud³gô‚§üÃ(Èýñ RWüÁ4(ôÿ
-H‰Œ—M’[7 „O;èQ‘ÄÁµ³Ì-R••}ÿm><‚ryôTñÂ5£q‹ F£¡Ö£­a2ö˜ÏXáÒEšõùè-âi-¦/_Óî ßþø÷`lôé€úJ˜={3‹îf&ãñcƒ´‰D̈nÔÖjmŽ©æú¸ cñ'ñ‚ÄœC½ÉXsCúï]#Ú(Ètí2ÆXÚÿìP-Ä´…òåY˜yŸm6Ïsì¹|ðã°s%’ÎÕÄƆÄð9d¶ãr…²§+é2ÝüÓ9ºzôÖÍî_eO1Ïñ
-Õ]CæèÝZ?¡FwZÍtc†(©›ÄÒØÇ´|ÒQ‘D´/NqîX6|Ã&¡F®‚®¹v }®n]B3]dA"´õ.Ë$”ÒʤÁ™"‹ÈÎ7eC&¬Q[ËV…
-~÷Æ©+ô„‚3¯­±CQ:ç2FQE+Ô”«)Çû†^8äƽçˆ^­}4—¤é.ÃÈ!}j¦ëïÉ3_íÒÜšþ6ˆü,¸¬«eß?€Ô ÖúZ1® ‘¦N%Ö¨ ‘ãé0jrÓ‚ôaK]†VEÇu™„ÅÎ!˜Ö¥÷E[¬ûƒ礀­+‰»"Qâ =?¬ $È%vE)ñäfô­PW¹H ¯¾AÓFdN®sÈ=´¶Ù®O·É³Ûf³ #¹å*±6Ä> јtÑ Õ† Š5zCÏ«õÞ™:‡ó¾Ù)’Ì!Å”ì@H:lª¾!’ÂIöf˜N’j«/½}/‘¼EOΨ` ~ÇJúãÍQš°Þý9 z½˜ÊKuvOÔÓaI¾šûi
-[–LM*Üäç‚xo’÷QÕr´  ½ °Á ·jEÿC5"5;¡¸-â­TuÈ'º¹˜ SëœIjÊË‹Ä× ÅX³½AÃV‡Ö‡+?(:I^²'x4˜>:%Û®YCaíá>
-²Þ´…ª'‹•ºôW9y _¢dÞ€ªœ4½,Îu`£Ð56oå‹g»#Ò‹ëôÊ03%‚Ûõ~“»£¥ƒ)‚X¢÷U((˸ •y§È›òϱG³I®OÚQ?q†ÁX¾\~¸ªÑ
-ÓkAEBˆz3í=H-mßk*¦8[ 7P¡x C§§¼¨“pEÖV6ËG’n§aÒ)ªÆýfÍ*„5DÂ7
-µ YŽ3·yÎÛ¬ç6 FG¶s¿µ y_´¨™ä<:–è©®Hp/˜¦0M}ŸƒÍ˜9õ°œ>XTn
-³þqg„îò÷néï4U¿ÚéjèÄÍ×xÌYгcIõ[] *-'¶^r©o$ï6»‚ø#|$wCŒzNˆ{|ÕE2ŒŒ¦»øgGÊqcиêÐtGŒ3‚-ßÇp¢s»%VŠ½Lþ« ÒÇD«@ÍOf§“8¦p.7>ï‚ ÖÊܵzTÎ_ŠÏhÔUú†6¡!0Åd:‘HBÁècÒ^Z€vqcø|ò×”iˆc¯sx0ãÉ!ýEù†€àI˜gìý‚¸"µgj(¢'åÓ1)Î|Ê;—ª+on`ü\KÓVÏn’o1dƉ„b÷ÁéGK5ç…XÛZ4¦}ƒ-°Ã BäT!éÓ7$_Íðbšˉ KJyì J˜é8N:ßÄá4…íc$oß³q«àšæƒwð¯.s•»smpëÈ+].ÝN$Á0©)s]‡Ò2…éu½1ÒFG=êr1¾-ëúñ‹Yð,û±¿B}ñžô“ð¯Î!/¨{ß Éž¿rTÞæÏqÖˆ";éãW©ø}NÈïk[Nr̲ÂØV¯J'€Œ¤FmyiÙAHÛ-ý¾ Šè,à›©Ýh÷þJr2Ï ‡ÐÒgµdáy8âPÁª0±h¡WûŽ4¥Æv?Š÷Ѥ]‡·Ÿy=†3¬é­P>4,':`'ÒÁqæ4†™é=ÈÚãN¶¨”åî½¼Ï;õsŠ‚Õ¤rPö¥~_DÔ÷îÄD@—JoÞô¾$Û%·¶ßôo¨Ûêßò¹0G²ßºØøÒäŸ8?6ˆ;çDÒZ¿€ªÓé
-Ò4² /R¼0£¹›ò¦~¯È@F®%9ýû§P¿ŒÅo^õ èû­…žiŽpÊ”‹*Öe—$¬ÕËá ’š›e·[[;³`ƒÙÆ+É-WDMµ­;OT…é 7ŽêG—*Õ9˜H„‡õ¯ë™‘K"ŽpÊ ä¸¥_§ÇÝ9hâœæè@h÷œ&¬Š5:h:vUžP~ÀS˜Ó|i¾æJÈЉÝTäÅpo8‚Râì0m¹‘jM&+ÝÓÆÝL˜i*òd¯áƒ‘ÂbOÉò—OâÁÇÙîSPª431ŽëX¹ ݲÎL@7H5o4/×ÛK.¾zBÑÊìž®zƒØË,Ê™NxCð3Á>"^>ѲòŽj o–ö„5&ã¾k»ÛàÂÑAÊi»n_Å
-ÈAg"æˆõI i0älôûnÎK­’û¤½Úk½=)Žþj &ÚÄØ<Ž2G³¿òÇ`â+é(j£"-3Ûk[7^LAöX)®ÌOcÿ@]õrîPËu š¢ŸLÃ8½Ü¦üµBqL9îW¬ÜÆÀp,¯+ S;•;v&3•[krúr&³"«åÖôéœHÇ“a,Hî\ˆû„ÂÑ 0¿WŽå2×#ÝL|Ø
-hÞiÅ0/éçú¶Uÿ/“In$Šž ï $8ëÖ²n! WY÷ßöû¤™WE8½YúÁÁhö5 ƒ%ùËG}æÅÅa¨q˜ùRMd=ˆ8z¶#w¬>NVpyæð0Ç$ÔmÄ$ÚºâÆçô(‰€>aåø‹ô_•á ôý
-„âyñÐõ,B\
-†Ôg¢³Kïj-
-Ö7P`Ÿ$³Ü/4=å]Y•j pÅ›'¿…\~ù¬6C$SiEP&¥ëÈ
-¶ô!ûû“O8žV©5>A8.——ºZGáG°&ÅõAÜóÊŠ^ÂM3z>W]x%Ói‡¡nꬮ©ú}€×{&ÙÿJÓÒ¤ý
-ÊÀ}©¯ ¢G±è0HÑY
-ÊÀà$à‚*Sž<6 ,¶áºÁ0\;OØÃåïeôž=I­8j ¸¡sCôž°3ÔìïIpˆ²`<‡ï¡r^Dš {Aªä¡¥¾‚àcz—³57…Q°;OµÔ·éKKÝh@ëõIá`Tê®.EĻȗ» )S6P«j¥¨*gæϳ'r c
-…Mò…Âuó1E*åDÒÐ q [Ôjáu4utÔ,ة؇7 “®1yÌlÜl ËÖ3mTÛ–ép;&µ*V©ó—¦†É¦DiC§ ™H«{J3I¦Ô-ØNE²‚T0úN¹Óÿ-2ÕÑ’(+!gú:ëRvšˆ¦£;X­07$6œã,ä¼qÐʸŠÕŒ¾UØo:±ìîhÜá'.šö:¡i?Ó<,äBµqB|ý‚•C_o ˆ)¥å‹$8.§-È„Sªœ£ ¡¤Ê´%Àºá
-…Úr9Á›Y#'¤ž—üÅiH›êîQõíÐÃ4ÉòÞ¬òä˜L66 êYNŒ«°#ó+JOÈ6Ã1+aŠ‹l•Õ”<E/2tå‹ø1[æbÖůŽ451C‰võ‚¯P†Ä_˜¥ ~FÍK·§‚‚‚4–ÈêEædc9ål¶An€‹ÕtA{ä*HÍ|€ž¶î|ŒŸLÜ»äNýÓ#@j¯ß},‡ îòyù¡·ævéæ¨þìÌvÂmñ ‡SV{Œp+bdxÑŸGƒTÐAnÆ]¿@ÄÔÌ$‘wÃG1Þ4à°Ý˜ëæ ·†ÝÛ^<xº5Ï¥!pÄ®PD%`aEƒì*Qèx¾pZ'|‰xê)¡Ûv¹Ó%Yž©ocD—ðê³Þk£
-² us`øRIK'«/<ÌÄP½º}ÖÅå >.7ßøšü@¦ñ<þžŽ6„q!ßrâzÎXák±ÒSJô¤†¯å{A6Ú¶Rï#åcº¿K,L öº}—†±Ñ´_Œõ2ñs¸j\óf¦è­%±uBŒ$D¼} ¢ÎyE—ç«ÙO @ŸSå‚VKˆïuü»ÆøQÄ”°TÓ¬Hr¡h¸­£«Š5a/²çôEkÉ Ä .N‡FÎ…‰è…X®Þ1º9Už¡ØV$®|F”­"êìþ´ ,€)Ì…z^)eè ;4ã£j?lÞj 0Ä,†£#í
-—On[a*ˆi¸ÅáWÿ= .Ž¦Ó
-ç,•’’σF%Q<p¾Sâù> ‡×¬»BHW¶ë«-3ŽÚò1›;;A"éÏtôÐsGo
-ô†Jð}'&˜ ¤šYHËÒRB|È^‡aââ)àPMïYôQ…y€PÊéS®ÙwÞ@oúröI7’1«Ê‘Ìb0·ÇÉ_86d&$Ü?@œßS³v°¬Ë[ã³8ÕžãA/Û}r&;úm­·(¶Ž>‡B†H ˜èÇè.Ø2Ãòº=š|ºow»ßG WO¸0ŠdÞLó9æ…AÎÏrÒ°«·=KfžèjïÏ·ä<Õ<ÃÜ+pÇÜëÿÆ3Ñðãç˜û^š^ERéßã“Ü@ù o
-s”<Q° Rø(S›­Þ‚î³r+äèû“j¯Gùëo eH1sr¯nð:MßDéy¿‹0ÐL…˜kïЂdå!åÚYz½ z9©Æà (6B´FôHƒ+è¨-Êö:LÝè8—ýWo[:ŸŒV:êî˨ Þßb@iaææi/ËK`í‰{÷æQXËé›D _B+HŠ’¤œ›¥H”7»oEŸ¡â­°Qð,ú’Ë^§·,c…k´u*F»*úäX 'aø¨µ%eRe²Zdÿ ïÐÿ/“$;n$ˆž ï ”a
-Ò
-×dØ×NHýÅ}ÆG Ã9ÚÆ0Æ´#›¹ìÏð6Ò]¶!ÑZ?Â8¿@Ò‚Él+Åø<@ì(óNéÞeªé”{ÞcàdÕ1ßì[öGA¯×’¯ I®LÆ^Q?
- îÿ0!áýc±ÛÚõˆㄠ`ŸCþ?ÁƒŒ¯C´h
-h)‚*+‡¦¨¼.ŽjS¹ Ê‘¹9(Uk>]üHb¸”C
-ü€h0°Ê”ƒ‰oåJÄBŠ¶‹x
-ö(›•€Póĺú¨#J’/6·ÏIwŒ^ŽÇ``ÎA?î}âbëѶ|0)k¼Edfš5Kýü•ÊëØ3„¬¼!°YㇿûŒ×gÉ ;€~8ˆõAˆŠã|– P&“kÛ˜</|‚<Þ}
-é-Þµ}[¨äþïx¦ØŽtYÒ tA(?6Q,k³ÔyCÔ5,g-kæÜêø.<†E/¿eÀ ßĵ3ŽpK€µÃòAú)Ç„2"ÔàÏ“ø[¶—ˆ’¼ J`ô’Ô7ÚþŽ|
--/­~È1 ’GZ±ä±“ó36H”û¶'±–$Ò!Tå²²”ëßÁ‚’Oi¯;Ž†1À4'Ù—ˆ1tp>JºÆžÐè&/G‹ô Ùÿ2ƒä ™‡Èg<‚G]9e»²¨o¿®R„?6«Ë´)ýmȸ,¬|‚™CX‚ê,ßב˜.ͯÙ{–¾´#xu+Ëð
-,?ÿ^¹D¶¶÷¥Ø‹ÁCóªï:¤ñÀXy³w‰¢VqøƳJ_ª5ŸAN£ùeŠ Óê·Áú9˜ŸXd¥Â)²úÄÎÄúóDñHÿÆELëÒ·ÅK9›Ã@[Èë7™¾ Rã6m–ÄJжBÉZõøº®ê´i¢§ ËƼf¹¾¹!ÊgDHÚOtÈáÙ& @ðR#5e— ö*á,¼õØß¡UYc8ÃBƒ…V.†­GÈmã¨;¨C¿E±c^VèyB%ÿ¡9‹‡¯ã«H‹$þ¢5{u«yqª{œ_¶¦ÆC”
-µôyÈ‹»WY‰¶Ÿ'ˆ÷ŠÁQÎ\"Å=¿ƒß"‘á’—ß‚#× ÉQ&29ÕÓÔ„hËÏ©ÀY¢æ²3þòŒ‡Í* WØß¡+ÊDS´¶!IÁO›×üݹb! g{©ŸvÞé¹1*Î(‹(ÖÕ ÒmŶ?¹Iª©Â`BF“H©œ·zPŽ±B
-Z…¯×?ÎäF¦Âðiç¦_ñŸ²kÚTYØæ °øs¼QåTÍ4’ÖóÞô AÐâ)«þ82–¢¤âGú†”Á݉ÀÙèNð#ÞN©®kvoX_7rrÊ´½BâG‡ÀA³.öoV/
-Û†¨3¾ùXb ýêºnž/­ªó‹SAD+Zuk9²
-J„•cE€,'ýæmõ¥W"Òqõ‰„[=*f¹G´ŽÅ›ü¶…«z  @KvŒ1,ó8ÈO‘¹oÃ/µJ²Æ\t~Á)k‡u„©hÿº$í ÂÚcï`'eU#M
-P‘¹4"Ó¿×Vg;’6/bÏÅá)_æZ%àIÁ`‘Ÿ…J\;K‰êÜøGx+,­í­Ø6«+iç&¤2HÄÄËdªÃÉä4ÛÆÈ8~‘9Yò!xW`²£Ò{䢇ˆÿd5`™4wÿ0ö¨4jC hòÍsqƒ*Œ.0ô8ÄCIì” ?ÇÝNE”>1ý“Þô}ǘ]6‚ŠAbcèyÁÀ!s
-¯ø ‚µSA•YÑÑåýš‰ÜF|ŒË\ë É¬ÏGÃÊà(¹Z%âb 0š?d;Šp:\ÅEEÑ”&¢kîkð SÁ‰Uqü?qØ[Ï_mk2Ú€$"ª½SUã><ï Lj¦×lÙb\ÌG»ùg ¡ìéÇ’v‹Èƒ‰švoõ^Ä4^{Ï·’¡‚ÿ»‡ñÑÌáŽ'ËÇþpL(›„šÚUkúZX,øב™’=.E)zÏeG22\É—¿<Âï­$àÇg¢ÈÇ>­ÃžìÜŽ½UÃû2œb·˜©¢wK2ü»ÉÁ"ÀŒÐÏô
-)¼9*·o…N·šÖ;| 8%PÔ¼ô½y‚öaMÈ™èfö›’^ùÿÙPmn€ÁÛ”ôÊZ¼Ôå¨W³~d? *Ö^í£ßì÷Æ¢Ne†—‚p>;ßEó"‹ð?8ý'GŠ/¸Å #º.¥X†S™´æ‹þáB*¦€y«‡¢uL
-ŽwúŒ¾0ä~f”ß»Hdñž“[ò"N»j¦ G´º4e¾„8yd`­“4+øöXò¢“¼~± 0¶†ÅqIËiᒻȊ1åÜk« QcdHYy©;n[H–# \c‘¯‹£>uõÓÎFμÃ3*ð X"«„0¼uâ±7‚&¢aNWÓ;øBù.6Sä ­’ZÔ¿Žs5—æ“ù,VÉÓä€8²îŸ`JðÌ
-ǯýP²]à«~œÖ‘ö«÷Íw‰OÉ?~#Ø~jŒ F,,AGHr¡ä½6‘e³¹›ƒÓh Ž/AÆp%ÆäÜàêˆkiôç¨ <A‘€@¿83DpÛØ6‡7‚ÏÞ¤_0<öÌÛÞ¡>´|–¹u#@dEŽ¬‡ƒËñ Ò­ðM¬Qe¡#’`Ð è²–X‡¿™´ŽÑZ%°cæU æê%Ÿ¾ö£ ›´õJã÷é4Xq‡yQLy¯ã­\O AW(ÂŽ­„:ùVßñÌ4?~‰f]ëÀACF7ïà†@båõöK”˜÷…±W ÆÝ“<·»³Êiâ;,âY“³d`dxÃst˜µñÅ´'„À­D §à!qô3¶ª"þ‰ÅQBÚˆ‡mܳ®"ipEb“‡rl3¸ÅŽ”[ä‡%Ûê ™pÎ=%[‡l,™6•§u¦f2ËÆ­ŠˆQj°(ìc‚>2%—ÃæKzðs0 Hê‹6ûosk2AŠ/Q2Ñ6âlíHI§òÖÔeXKt‡¡“ËÅïÕ­ÑýAÀ½ÅÅ@‹Ík9j4/^”ÁÆ,?É@6 r¨QÓ™VÞüJc‹®
-Öä-c£‘À/âÐŒD ˜N„Ó~hÿUÞŠ¾ŠðS‚Ç茣ÆP’M(Â;Ë2I—,¸4øV<Ùv<lÞÈÁ|9®W ÿ­É²xHÇÍ4aŸJøÿª¼Sêí¤¶x+üL¹|Ø>2§ÔÁ†dÞ2dánO%—%e…n䌌»æD=Øq~º&¦p;ÒĆ!±8 Ο¬x:÷iÈ&žX¹æÃ
-,¯ìUVÄ›_xQÚ î|‘D›yYîã­äϯ~Ùï¿´aâT´š=#B`
-âg®uš‹©³¹ÇiòdM|]I)Nƒ ±~Û.ÄàÒDÅgÚÞ
-ÑPJœa¥«siœ*¨‰u*-LPl³˜ ˆ5x8(s•°5£ŒoÕz™®Ø
-‡”§ÐÚ}ÛÙø.[Ù×:ñ ¹Æ:Jq•$®DŠœá¶ßJ´•Md
-k°/NÄPLã³±Jj§ÒÏEsô\H•‹±·ñ(?s7cKøé:ãÕ×:/¢ä%Kv•@,=úeÛN%oÜ[½‘Ò
-£%Æ4àUV#ïB‚³
-Ͻ‘’‡á{)ÙD‰6±WÇuÄÈCG\ʽÎëi(!èf #ÑîáV1äÌ5sTüØÃw Þ4[ãØbJ(wÑ]öðT)˜Æk?ÕÛ“Sù— ×8”`Ø-Ëü
-ó®JAI&àn$i®Q¤WS©ÐÏ„ÁwUw2ÈÑfÈ ›ÌÏÒ_€îÇ)B2 /ƒö'DæzÌ.L?Ñ'?ˆ•®ñ(¢ØÎÊ›1•?e¼€>¾S럫%·”D Í’¯æ,c?I%ðå¯ É|Y~.m!ýŠùù€Á*P|UfÅ Äïø¯Tíq'פ§ë0¶Ëï îØ. Œ°Õ™h±oƒNÇI*7Gjbù Э‡ÓþŒiÒe"™zÎ&}<€xUV/1p²´'ÞM¡`~BpûÁ¤3
-£<p¤-M?JjcìaX++»Ð$×!¨ºÞ=“5“æKYŃˆ…£ L»èßéöÌTW»2‹ÂPýâ9' ¬ L͆ÄÆÚâÆèˆïÜu¡®ßá/Œ‰¼{yuyÕN²ØlÃACí(´f%ŒÚ\heVqO¬üþŒØ´â{²Oº¨:Æ`™ ¬,ƒ'l03Hþe?è"\@
-OL–Ì.»œ]ª­{0¤¾ÄB7²"CƒáÊÅ¥±ÊÆÃxh?‰Ù+´%×fïÆÚ0³qŒ0ìMÈ­7Lf—AÍÙLr ãý¶xms¾R„¡»)7 0<)´Óþ๱1WÓ¾ÂD$4¸æ·ƒŒ_xÚÏá®…Ýä,£{¶ ±FÛÔ(HÁ•°—±rØÒW²¬²ýuÔÿ¸
-³Òì´i.¦ô€˜F:Øù_ ›!
-h6.*w|ï_`¾öñÙůŸ:¸ØPßÙˆP4ïöë ºÔÐAý•Oøºw{Þ·@“Ð>f|­ø·!w[u­ãóñZ¯Ž¼ý#dxgÈC°H±Á”
-‘t0WÉÚr)Êà‚íÊ2@2!ÊãAv ¿J¨,É ¥g8¢N²‚ iˆ¨g (ঈyæVª¸ê%¥MaË=>‰Ú\ì‹æî”D.¨C¬-VOyuHø“ý(íz©dÆ=Gõê„–(2¶¿÷6¹hÅ qQ¿)ó !…«„˜´éž9YbÂ,ýXd%в‘
-«¡yﱯÜ.§€ Bƒ|©OÖKe.¤C¦‰y€ì£° :Šþ”öðT9O´SÂë·ÅQ<¹2!
-šŒZ°ìÊŒ³>04ãj')¼@è ¿V TfzÊ7,H¤2SÞfÚw8T²hxAfo¤É«’w“_ L±l;·@¢öˆç®Éú©7ÕRƒÆMi;¥îÅ:UøEÑ,!$"jGòØ; •bN°ux8;)ÐOêÂŷ˪*Î’³ðâq}Á 2Œœ½íÊ3²Í,ÁÒÖhe¡8£uñÂE(ûÊE- ?Ù6 ü&!| Y:ÖORƒõœX 6Ù[E¯=VÏÝû—¸±†‚ú±Õ0a®»{š¿ ÄF¨¨ŠïßQöQ'q¼fZÔ=ža„îMpÑo{ðM=ãµÀrü-Ï¥LÅqÚqI<ëÉõæ¶57ª±èƒÜ`‚ê'](§mˇ{J½+]ˆë¢ð'$ÈÒ[ )îç“
-¿yєͶcųF,aYtÔÕ!‘v}ÊkGÑì!ë¾GL[›0ÍLUm{Çò~ªÉ²Û”¸"Â@7Aš‰²Æ†ð¿($ÍGßDÒòOóè|·C 9£æGµwiçxØ Q »ŸçÚõ±Þ !«6qC¸.óÝ)ôâ8 ÛF)è ƒ3Mºñ°ƒ@Di¯~¶1xo©?5ïƒ2¼@¡0öy#Èd”¯kcëBHáÐAj ²\qÀ¡´t•˜UäVÅž¤€Š# ñ‚ͦ|Ì¢&ûòIáñ˜ìÍ*A`ƒÝá÷)Pb?l5blÈ"!ÛW( zÎFŽêÁ>P(Æ°g»“ÍÆA„$Åõu°ujAD¦‚Áa”ƒqkX…x€ñÈi##Iöá;ò×¢X&¬$Ãgêäæ^Ã0Ê[.ë¤CY¦l“Ïî²Ì¼r$s Q›×ˆ9Žˆ-åì©Y ŒU)Á.‚+ÍhœD.½H‡¢ME¶©É¢›(æÎFoXÔõµ7Ó¶ÊÐH”ó‘tÆZºQDáÅoÐ ž†k+0EÐ0ÄÕŽ
-æÂÉ×þ +ôä‘˧W(¢!&ux¯
-n ò+cèø8ëÚ½ã¸ßU¼ž \—Ç˽æÓ‡ A‹ý(,_ÆH3y/ÏÑ°±ÌìZð’Ê¥Óo3BXž'ŸÖw54¾‹Yùt6Ã{}ˆøÄ…ðn¶z’”ˆÒ¢ô¶!•Çñ¢`çê
-¸z×ÃÝ׸)9­¯[ÑKÀ°K0|(mj‘À$£dð¹=}á—äØ¥(áÎønv}Ä ’ ^`ÌÃüÒ<D+1PŒ*?T$‹wñ ¹
-‹’-Ÿ‚Kã
-ìàæ´ÑÛÇ*OöŠ Â-Û–ôV$ÓÝüe‹Qñï"]e ¾¯,­0ÿ¬ÃKš(æªÁOØ‚%ÏÓ¦¾ÂsZ
-Âå÷˘-T¢HÆ™ê(™ƒ÷Ò¼‘¯êHó¸ 7ÜףŽ|RøÌ-€…Ab¿ÌëU"(!ð1M¥›0|·˜Õø(!ìuÓ¾~ ¥žW8†OŸyÓßħ±yË©]½¥ä¸z¼ÛÎ}óŠ_×ÅÄuf™Wá/í‹ ‚dz±y\Š¬Dã_ ß …F ™_™Eä™Mrà%,½c¡Éx: ÏhÑ܈kݼbȓþ¼¶S±d?´‰;JøœÌ BäKI4»Ôa!è²E,‡ªnaÖæ½å$…a‚°“ͺZN’dûiéÔ2üûº ý‡ò_SÀ‚Êí;8õ­'‘£}h=m‚ŽïKc®¹ÓvHÜKXtò•2E;ĆȒ|‰"å<J³Ã|±ædb,[ƒ¶¼ƒÏŸÂSÝ)T‰'óíÑ OÐöm
-.ƒ
-K1u q!Ž,æE¸ë1ÍÊM°iÛš!–%ÁçÚ†½猬ð,œ‹—°ÑüŒ ß_m-/Ÿ2 Öü­…‘a’~¸ê‘«P =ŽŠ|+R N£#M€gïw%Ê'U¥®K‰o¨ý$ýí;¼¸‹½‚Ùá¾¾¥>3ûŠ€%®sŽ2‡M.Œ“Š¸ ¥¦ìVÏIƒ,„÷Ūxv(Š,U)`„\Uõ}‘m‹cýyœTÐN°^|Vfê‚Rò#Ë¢ó"¢Š/„,4xâÖIK
-†[ÙÎJh[‘?âe¡‹‰¿IGÀ®„3ŠaNGeó<iÀÖÅÓ!åP×­-µé%›G˜è`\BD|ùM}ÅÂVG…îÙªÔåßGõF۪ /‘øü¦„]‘-¢Ã´æëãÏßþøHŸÿúÏÇoÿû ³!pyØz£ãX$:.7ˆEßüõ¦ˆ&±*¨vc[½„­Ë:—Ý´Ù \ ƒ#_ZIVsy¦:¥
-¬æ¾l–UYÃkøb lJ%©»»göÏðÆ!zÉž“GºD¦eœœ•ýp
-V;­žº
-ß!çæÉ.ßòP–ÜÇm
-ïi— ³•àþ¸>ôUƒ²Œ¼Ù¸¤µiüN
-¼ /Z
-êÄ“’2^Šš²üÈTcI¡íÿŒ—Kz\¹ƒW=Ô
-êÓû1öf=uö?½?$ª:®ÃÓö(‰I$<b9RAøH—˜W
-¾!)(|%Yä/¡¾÷%@4Ä–O$Ë$­¤­™{™‰R9kš)à {ì$ÒG\¾ztb“AÜâÊP2Gÿ; OC·$*ü`®ÛQ:î.+‹3/vߢ”WÕõyŽ’z’5:DǨWÉsêû;jB.´¿CqpxMþ¯gW‰‡,~~ôôš l,† °úÑx¾Í0äÀDž’S_ö¨íTüqR,s'
-Ù­Ï;›¯‚ß©éÚ̸'
-¤àžÕØÕùr@^ÇàB Äj`Òµè¨Æç5q
-“ƒf¶‚7WQ¤ÐcCXdŸÊª:;*ëðÆìÆt÷xE±Xõî2»LMç(ãþQQLšZo‹£µÅòs»¯ÄÈß²“.˜:*T#†˜þe–ùƒGˆ|¼yË\ÆôRûsÔ×Ú°â Á 'ÐÒ´“Þ
-  —$B¬ê6ê b'½5ÜûÎÛØx·¹ŒŸ÷¨Ëã˜jDp†ýár¡NZ-ûŒ‘ò÷éã°®Y™´ìü•æÆ»(O4r(·[ä+Æ!ùõ0_.¾»‘ÉÛŽ6”4•(o.PYì»bH(õææï 
->̈ƒbŠÍɾw}þäNûêà Ί·}ŠŽPJÇï«
-t.ª_'¿âª£ÂìÇ‚ŒÅBÑÏwXÌgÙ7„äØ`9;öQš?Öx¾ý
-ó[1ocØ
-d±²¦ñ+l`!*OŠü 6Ù9øJ†ü0]Z;ï ¿•g’
-s"°%ºMqÖPgg%küÕŒ2ˆ;”{ýV}×q-p†#)¢!Ÿµf'¨Ùp°æÙp\ÜÀ§† 0ì~¿ÅÆŠx± fœuCp5!ghφä–HQxÛ‘m®Ùz8j2GÝŽ" 9àGYŸ‰š—Ê{ж“nß2o Ø•ñµ•>~y  ƒÀÓâïnüÈEíiÜxä–Ã,;=ÆÐÙ3¬ t—êN€5Z|™h'Àª
-¯VÌèËË¥óžJ)¨tž3Ý”»Yíôø%S#ñÚ¯Ž+~á¡I+¦@˜zÝ‚´uU ûJ¯sôè§a-òOø•lž/))9³ ƒ Õ(î´
-CÂ×î~: ¬šIkøs³ÝÑ€ŸT:ñ•%Â6ü¼aBIÚZÃú.j!‡¸Jƒð‘ŽTžJ¦˜#ÌŒ¬§Á$BÒÑ!y9£eê²úûe‰%—D‘zföÎ'¨t3Ö$ÑÖÑëiªºÊíÔq|ÙˆMÜ$BÜÚ¤ñ)ód˜>ŽÏ\î%têo¢¢Ó*6(¾I×ç9Š}Ógæë=¢WÖ€Ä9õÝv°§3Ž÷æé}8C¸JLŵhäk2ríè O7_Gã™o†¹˜o”
-½Âž¦˜FËF
-ØÊàû!ú2øœ~ü»–YFKÙñ›yÚPcˆBIµÛÊë€"r9aõ,Ùžl›» )¹¯P¨_aíT´š@iPq„º5c[×WœVÛ;a)ОÊ=D¢‡jDl«(ºšA±7„¸„ÂGf#;;*²÷†Z“ÿñ”Õ ["´ÉF„¢¬“´LÂvƒÈÆz¸AúZqŒ*Uç/ Ëx|þº¶UQ-Zã×_iqy¹G¯uźÖö¨Ù¥éꃾ¡¨wø…;»ŸHM)"Á¦…4,j”L3 ±˜´Ùú!ƒ$Æs‹³•PìÀ‹mI˜UË9à@þøͱîtPÓ9ê¿ù÷¿nƒ_ÇØHòx‚#¿\P”²£ë¬AÄtß ¿ÆP7ƪ2›}–¨²-DÓPq‡Þ § Á&éusò—ª€¿:¦%óòJïF/>Ò‡þ’…¯œ_NË=5X»ok=×Õ"GÍšÿæhbï6Î<¿½Êz¤¥X‰sQ Nf€c1u{ȾCxákÙ 2—Ì9Þƒ°ødVŽù9Dõ©4,žùY”
-ògëÜTÎB'~òèw9îG 7Ep¸uÁ˜¶dÉ:ú‹ÊÕ`˜Ì˱mmq0ú.N qÝ=ß
-ñmíÂÐåsÔ[q:ÄîÉߥiG}­0¨Ï 'Ø\ÝF½A줷†_¿s›ëeœñ»>ê:ÅUì™Mµ?|*`n{Öír»ƒüݨï8ÿ’Vþ»H÷ë'ÛHžÚ: ßÈWŒ·ã. ÏŸÜiKÆ ¸X1ê¨W9ßú³AE²N÷‹Å<ÂOÄùà¤Ê\çi g¢0ýhfŽ°ˆüR¾Ç‚ÌŽ®Ó·4<od †xK¸«wí£@h}Žµu×>²7¸!ë´„ ü5*åÐ6„_!º^~¼vûAÇGßGMèÓà÷ÿ/—ì:r†®À{ð
-ÞÑÿ3v蠟Éþ§}!QîóªX‰'ɉ«$<çÑ°û9ƒÛÂ{¼ñðM±Ò»žºB£‡WÍÈF soëþ9ñE¨`›AÃcxseä¦ÜQ15Aµf)Ûƒ†JË•e1õ_Ä£!®™÷âgÙ.ñÇ @Ñ3·¢ßÙXxÁ,s +ØZ”ú^)¥¢sÆ.¾AÀU¢Û–§_ç`Ý·tò‹v_U.Ýô’ċωÁ@˜)…ôs+3}ÜCK{T§å ‚ÙÄ@õ‘{|fÅ,’„Hmýs€ô!s¿b½Â­ðl _H¢Wé—Øüö*R…˜¤ŽþO@élnv2S…ˆò°}Ž¬cEW³ÕÍ×3¿3 ÂUƒÂ^µVñ
-ªúžˆq9Mgöd»øÆë‰>wPÐ>†‚¢kÞzqÁèÖ¸5VrÄ×1¨2Õ zy¨ò`
-£½uñÛ0²C$Ø~*p×x±†
-af²Hóƒ2i+‡¡IéqoÞÐ8,`¨g™\Ï©ÈW …^TWâ@®¢J]¿c<Š‘[ÂN’c£8}Ð]ä¯Gä òQÒææŠ<€iE”rL?”IùVíj«ñ@z‰#´!x¾ È6òMOs~âM#©9{äY,)T'Bäîk|áQI4È]ãEAA˜â”}'³–[N¾Æ“HgE ƒ¸û¤ñ7×s¦OšÆþ"Úüähüãi< fö žpN¿Ìií· Zyãħ@8{÷ÏA½Ð<BUïÇh\E„”ZŸDþòË_ËŠ0„9=Nàä‹ü_Ô{iüç? ;9“Òëu¤ Ý ×Eù{ ý!-Ù•¥EvTk0³¨ÙèÒ¤>8aîªBõñ
-3±3ñàÃNÆn^Ò¤Ž mh»2D
-O HÚç–Má¯@ gø¶iˆÎ4pg>9æ ²¾Äà‘F_ÊàŸÃLÁÄÐ×’íÆ°Pw&ÛH® b&5Ø»q²šÇ`;k)¸&YضZ梈ÏY‰òîoU…|(÷tZ‚š}LÔÊf¾Jw+åËéûå‰(š)g®G‘æ*žñ¿ûù£sNÌɲ®4<Ìn%Æ—¦S›±fjóÃ'±ç霷~{w¹ðÆÓ…^mª_+ì@Þ:õïOFFÓÎt!›¸l‡$øvÞo¤«£GÜ cÐ÷½t|m&šÚW¹S†ƒ6Bët¢y1Y‘¢<JîM¶é»HgÖçÿÀâàô½jýèTÕ5º~ãÞzÇ·@ DuÆYg Õ?‡7È÷–Ž¹Ëç6¼Š ª
-švªÑ”:ÉtöÉʲt§WªÑ4Ó>èÂTØ¢@‡,È@Ïö)FV^k²[ ;[Ù¦í5áÌžT#ÐtìÙ·lüy@wê•Õ€Da­˜gWüÞ ‚€cV>Ú_(•)…DƒÍJéõ )…êmC‰Á/rŽµ4ÔŒÃÅ­·nÓ…W‡ÿ4¢%«?…;(Œû•"ÄNª4∠Ôò„Ù ¼gRµsH¡ÊF²îÝÕÐZR™ôq: _Âôr
-
-mO‚J‹l}.H‘«Ô§çð_ÞøIP«ÝÎDÑ+Äóp‚bdœB­†!L"ô4á²ËÛ"çiÕ¨N;ï„'Ðu–ðpNyá=¼XµÅ×C0<‚º!DÂJÞ`Yǹm©•ŠÅj¯Â©# ˆ.å³W±žåŒ4qŸ ¡æáäÙž&Ú’äO„gYÕ;¾W‰'¢¸ÞׇzS¹_h©e¬+ù̼ÓõÆKs!JgL­á—‡/é.XV-|>5~+àZÈ44eböê»´Á[$—vú Z0R2|£æ§s¦Â§öåìvx†Ä6¬f4ŽJ³ÙÄñئ¨ÌBòÜŸ×*nTÊñW˜HöÏ\Áõ:1+¾q›"/§}ê2y, j) Sžû²qèÿ 0
-H‰Œ—A’\¹ DO ;ô\A
-_/Nçg˜Oþçã¢uðd_ºW¸Ð9[|CèRXŸÝMXiâd^ˆÛâwŒ‘·4*¹óLXZÆ.Ýà†¥[v‹µ·ÕúÿUO‚”INR’ÉôðâRÌo,,xí&HˆÎaz‚vÕZã3©í Ò[ÏŽ6*Ù¯H¾8—'#b™5ˆ7)3 ¯¤yDOv(2Q
-–_L¤ 9¨ì>#°
-zè¢âRZVyÐ2¢“O
-ºy WCÚ,ýt"#7–ü;¸.—âiåÝþ‰„zÓÝ»òž²‰PI\ñ…Ó°ÿEjÁr¢m帕)ôFð¡jCÑDÕŽ•¿A6ɪr›JÖN˜Õ½Axj³Ë Rô…0Âú‚ :ÑŸCP4KÝA™‘äE ëxÚºƒÒd©¸¼ŒWĶ·­,0 ®u:cCã5*oßÞ¤HD(Á¶Ð@ú1iÂn³ÝOÂñ ìQŽeÐ!R²ˆq
-CgÍè/LVKv›ž “„þRÇŽ ¬©¼9ÇÑaD®eÏv4M :ÏݬOEžÆˆíꢦàyméò£/·‚]CàK¯«G;¥¯=u™òôôòwÌ”ŸR"”ÿ¬ôŒ¤¡1‘®y›ü6¥Zº œéSDÎV#†n†`èÙB=*1fCš+|ArfzµØ²C!Õ4ì-úîÈUv; Ø…Ú1JèÇrïß‹‚È-ü&%Wþ˜ÅŽ«û,|@QFïeùú@ˆ‚…  !ƒh\E0<X¡ZÉøùã :—¼¦~òKäó›˜GûýùNþúÛbÛ+·¦}—kÿšƒÀh$yµóÄŸ‘¿Ök‚&„¿ÃlñÝaÙnP­ç|Z†
-,`WeF}<ËðqÏr> ›9_hq>ç ¹öüÆÑ|Ó‚,Tعý¦×”ÍÖÒÓøˆgÇ$„• Òa¯Ûrsð¿¿Óž¿>w!„¡àsr3í¥*ÿׄÇM{AÜŽ™[÷
-~ÇæcRêN0Êò« ’Òܸ“\kŽ²ž.;°¶g‰ŠQm¿êšöl4›VoÕƒu
-­PÿÔœs"³-ðøÜxÛÕX––m öúìáH©¦gÑë´$@èV˜Á—¶….íI*š Y2³Éí¥…¬dd™&ïëÚ€¨' Up÷K¾™Us{kŽb–2P ‘8,"øÄž¬òfOdsr(—hïÎÁ·îø…w·i‚¸GÎy÷*@ƒ¯(¬Ê99¹ ä ÌçÏ=ñ–âäK©v¤¨B7ÆYØ~Ôý2vÄð0ý‹½yücId.Èž³§Ü¤â0‡™½±uË°Îy “Qªz®Ô ²CÝ*þ<çÀ›ûmü{¾êÀã{vÝpOñ?uÕÚl›½ðì#·¹øÜ
-ÖÒÖ¾Yä¬4ðÎ| »Qþ„¶—ª—þ{J>ÃL€íò;ŠHQœÄ¬s(|º1Ówd,<ŸC©~ĉg3¶.€÷(áÛs°Ki…Ðß‹i\ £¿l6² d‰X=­à~7Ž¿±–´›?<As ŒÉøáðÝñ·`s*£`Lª”©ççÀ%48M>—…ûËdŠd¹®É¥d÷srãa Lãp-T KŸ†]Æ‚[.u!ê~R•žég=i.¼l˽ 8$ðÓw=yï`Zý—ñrI¯ãÖð
-¼­@Ið9öÔ»ÈTÞÿ4‘`Û:Í–•ÉMŽpÙ$P¨wösH( ÚLÆåí ?B¬9ø¾^õ5ÿ¤ÀÂ{¹‘RÝòótu¬1ݵ…ù[oÁ¼c§¹\VS
- öI{nàN»†y €|>ä‡"Ý…LÈ%ôãtØaHk,<¢çû‡ÿE>hñ“h 5<›‘¯‡ã$åìHÖ2k`¾Û“i‰zXP˜ìÇ¢YÒxoà5»Xµ$N!Ýnlñ$Ò$ªáJr…5Èj­/ ¡°.æX8ƒ{;†„laÇÇÎâÁ‹wïC ±Kþë’'{lLÂþÒ×;õGr2ÆW[DXW6c‚Æñq®_Æe§b!CL›>ͽã¯Ù-Ç¡¨wš÷>½%Q2¦íÇnQ‡¢‚ÊPe§*NÄNC‰Ó@S‚7ÌŒ_Ú*éBtŽUÒÄã!…fÀ‹8›òçSQ`sÕì³¹ÄSÄJvpV­Ø¡ècAà˜Zx°¤CÑì3@*Hcz YÒr’óçâq•0ž=Ð[çç LjIÂ=¬öÔwÊ_È݆¯ÐO0IëCõ*ü¯s8挀 Iñ¡óPh(øpM>)´20€Î¢®ÛDõ9ŒîÃbz™Ô‰wòOÁÀ>$”éå\ö—PÒLnW¾mMÀ| $"š¥àuGà¿üóÒæÅ`¯YlWÚûË:è¡ðJëp;®ÌÈYS†×û)¡õ];}‘êa‚Ϊ—”ÙÇòçVˆ9”GFjæ!gØ.þÑfÞä~JsÌ%),-:‹…Æt‚Ģљã@ô!nùtN‚°ñÔp¯?ª1rHfšv|âÀ)òGßdÖÅà7âîúT¡É¼?·ÚÒ¥Õ@ fûHq,‹ ÆýÝh+S%ãç’¨!Lk‹m©ûK·¢ÄÕËa•uK2æøöú±œ)gx˜o(î
-p0x
-ê2ÈGeÓ‹|è*A$2ßÁ‰žJ|¼´w­Ñhçs…‰ÔO/€y¤I|Ü Lö #™</°cUî…¯_ä²r÷" Ä~Ãï
-ÆXòÐœ×gV'Û¶ïs+ú$°ßQáéR…U žXv``€¬
-Aÿ’ÒÊoj
-#6Ñòã9]žz@ìñŠ…ƒq~³Jø…ù!!F•0M3,Òÿµ/EˆDY6 ðhÆÇJ¤íƱ þeä¨X×}*êÙ †M¬`—Çgíðò[‰¿œTƒÕÁ}E;ŸÃºd/ëB÷yNêÀ¡dÜæëšç'\Ì—Ë CKÕÝÚ‚aX€=ñ[EÉoÆ1zÁßAò¯+Td0jœ¼8Ï¢1€5AÿZ¤›c8’¨€×½(!µ@”ÁûÄš<È·ä W˜¥s“ùÕMévÆ3ÑlT[ö4”îˆ|J|—ÄðOßå‰æ†Ùƒ§
-ÿçÕD^&Ç…!Å:«(¿+Y
-z/ J~ ‚–Â÷Š½¨?ð®v<%àLXd‰eõS0Øk`zš;€Ÿ†P:o‹Õ‚øøZ.­è0ÔJ™×F“f9%D–ÓAgo ¯åïØ©â%Á0rð¡i•à„‰¥ e\¸àS@ži²;³°+Ê€·¹4Þ…Áð“ù¨"É•±àæO9cYkîþ1%\ÆB“¼ÇøÊKà”r(ñ&ãiGʹÛùë9 <.™ú~xŽL":t=î›P“tÖ™þaRÄ•Kp¥°ÁˆÙkàœ {ÂXÏ‚õÈV«‹/n ¸R€=uÍDt+Ùb!!üHíç0¬>0‚Èm w…†kk›š^p‘Ö<q˜=›ŸUâÖ“nòOÔ?ƒúæ|Ûr›±d
-).2üpQ{;óöÐX¸ŽlÕþÒ×ä¾¼ºU­,lšq¾¶>Wµ‘KÅ5€$‡ë#™T—ä;1M¼xÙ§"â§l.¦m°b)¡Ü<ä8G¯;u¹ZdóØ0—wiô”°KX»iøò`°x$dØV—
-À#-Pá=_åªBó­Õ¥?±Ûð^±î¼!È×BYç°€»£‡{,ˆ)`oU0S¸…Ÿâ8”ø—b‹¨]%= 1x«Ö7Í }œ<—µ–å•• ü¾²…ê3ÝŸëu/b“ ´J ü±¯Ið1òNÖ~µtX÷þ2Ú`®t*š%ˆ$ S€Ù%HGB'0!c•” „!¬ûSŸHlOzB; ÇÄ`‹cÍ뀪ÿBÞ¼ÂdH~ä´]ÂB?¢›k
-5/az±r LÄÛ d<Ý8Cñ`ìEü'`g€Hø|bMë)kü>‘Í´øHX_÷¢:‘žÂÔÝwdf(¬Æ˜L‰0+™€°V !á¤áy¹7ŠÈ±†Žƒì…‘8Ù¹)3BÎ  @Û’Ãǃð7ÙD/1L=rä¦ö¥böˆw"ö)6ÚÒÎÇàkánYÔkïÁOו »kBHB<üÙÐB•¤‘t×rÜj^düã¡.­ÿ3^æhrÜ0¾Êœ@÷%¶CÝBéèþ©ÿG‚-wÊn%–G²àmUé6n5Ä•6Iç4ÐkW+‘ ™ûá Gþ†‡<ËW`±iÆëå AB;EY9W8ŒÝΑò
-Üe¡(£}8›n-Æ¡W\Þ») „¨Mî9—y;ßr]÷M×õszãmú¥Ã^ÉÛ¤~}‚+lpA&J\ÂHÙ9ï·S¤OG‹ù¦L–K¦„qòú¨”h-H©î:í/×&wå´lMŠh7jÛ —ñjRЉ¨Êh÷ EÖ}ã¡›-Фn“÷È?> +$¹™þ9¬3æPßÎ×ðªA€•=X%Ø šMô鶇°>ŸÌߢ%KŠh.™fkNÁç7Å©9ê>g4%Z<aµ‡t‰g&û ×‹lÒv£ŒŠl¥#sð—!ùVô6úo·÷¼!9(êù…ngç.ÁÙá äg´§óð‘•J’E‘ Óo“ﶧGÌVé/óA-ƒ¶ª£gÛÓÅ¡»Z/9lyËWÚ ˆÕMµw÷mW¬•ì@\ª'í‘p˃ÿÚ–ÂÙì$fÇJ2þ~ગ5ÿµñ@W0˜Ä|šÃÇóÜÛƃ(%À$ss7-†ª:A¸L_>ônëñ¹]ê<¤²î=×Æw¶;Êwwº ã[‘ãI¸0‘'é$´óymƧE‚tÿ§{ÝEêi6+/1ò­<^ÑÄ•±À:pñ%MfHG›>Ö/(üŒ¾R %ÂUÓí Ž¨ˆ+±ÛM €‹­ ÛE¸(tâó/û˜ÑAà·Â‘nä"‹€ã.%EôkGµK‰M–ÈX9(VÿœñCF“#jœÂç‚S‰¶Do“ØŒòËŸ¡³‹¼¢7[û½‹b`óèsÌÇûêÕEš?¬Éø$¹ÓêCL{5b¾SôPh]®˜µë}>“
-ì‹)<vGCÃÌò™”$Ñ ¿ÙŠñOº!+ª´y®â,ïŒãpTÑ"ƒzý„Šê žHwz´½€§ItÜTÜŠËŽ®_ŠümoÄXyeøº—‹<Þ®û¨èÂ
-¸nEÆ0r×Øá·=šÀÁi æÌ…;E²Jˆê3–©?R•d
-‹z>ôúØò8›OwêIyË]‚¤˜’<’´ÀV‡w/î6P'Rw°”¡¾ øýœÄrU”£”sY¬&ás—Døò‹3Ú«p­`졦׫Ȥ
-Z;ÎÓñølŽ4Ñvp­#ËGM7‰€WËmû%¬R•¹Æº¿nºÖ {„PÁív Àgšzëf9èÄ“¦hs?Še~x©fdÁOD”ãG&­h"cÀ>¯ Ý^%YiGÑ­ui˜ðz.¢Kkþå0W„
-âÖGt¼Jøæܦa<!céêq'o%ë*VŽ.åÉ¿ôäŸCW1•Ì"Öý¯¡«„ʬ¼æÓ« =EŠÒ«TÇí%8;Y”гßc§äߣ:7]kØ-D‰í 1}ùú%ÖÛ2î<ªP¥ @ò\ui™UÇÊÞ¥iW]ZLIh
-iÈx®î¨.%¶—‘{ç\çþ5ÎÞ_å,r ?ÓªlΗ<OÏyñýSÉ¿Gõ{(Ebã¡8„‰¨¿"³|Ì‚uý1’èýtŠ–׆ÓÔ¡AÆÚE—ënEߟ|ÓÏõé»O@›$ÑÛYÅ*Íòˆc}:E3*GäÀÂÍÇK+ÏuÍ$ÊevœßÃws%ÀQ+ÂQy$6Ž¾B©ŸGðICÿÑd;ƒ‰Y¸vÔJäÑåLç1ƒ£ÈGòVÀ[7~áaò‹Þ}å·S³#&:€!ÝÚ3Q!T’­¶gUŸ9vF -ÎÛÑ+çÐœxVØ£W”&¿Ûf3ë.qÅŽéN‚é5é|TÐ黤H"Y <ªSbWu%åZ´§s¢&Ç=D=ût5ô
-½íW±]À„ÕöŸ(áÝbX$ðô&ËðÀÅé|pv¤GF@³ûòÊÞªk‹«¡0÷—ƒwàþÉš¦Ó‡E¢D4Ê÷Å|Š.ßt)úþ£ Ê_«4ÿ€Y™üu"¥o2Ððào·»ß™ i
-¥ôŠ3Ï…1<­0Îã\õ¶ëé™Êê×–¿ü$ÖZñ÷gâ·Š
-9Ë‘[ó¹é¿7YKöÒ¥ 25©îÄÈy•HD&
-9mï{-Ò—Ï2h‡|ÖŠq”TZ–+N‡^á®.ÜÅMÒ
-W[‚öc
-Å\Rä¯þ{¥HÆ´Å5åñ¨nö‚6j‘tÈxSĵÿ¿“?Iåsn$˜°&íÛƒMn `<¼¦—S•õ~:ó@T0P¿8â§&º³yÈíŒFòüVH2bFrû£çù#6ÕÖ7³”Ü%yµ{ûtà•!&EåÈz0fµNX㩆˜ŒCCÈçïT;Ê’¿Càa,eÉbÅÙÑy•9{ª!¾T'RÙ¼²£døá„k’X%€YNÜŠ»Ö$J™Ï!QU˜ Þ\Û>ê”
- 8’è½®ïä©.xùˆ2)á¼,¯¦¥%*}…`8ìcdˆ°ÇTtl
-þ’­!$aËÑtIh’ ¡‘hʼn§áÕÄž’`h‹ÁSÈ<=}‚Ì}¨$3´z.y:µªãÖT%¾gÚIB%€X7š‡ðŸÈšÄ÷WZшØuzôKД=†ºÝ{tø/&
-*E¿Á<s¸
-2$êìŠ`I¥'¶ ¼a³è„œªÄîn5ðláÚO%£Ù÷ì6SC‡³rÆÅ܉š––D䡯û‚ž öëo\ØwMnɲ‚CÉCt£6Ëľo‚žˆÆBà
-‰M+ÄÞÆ™äÜž¾ h7ƒãiä:¹ ¹úö5R[4,Pm¸Ù,­âÅ«Ý£ü›æ@cß”Æ#c,’£¢ìÐ\Ru?Bi9Ô2ûHð›6–)»ó ‰ Yqí l-ݽF&±v£¹"°åX øÑ]hæžÇϺbåc¨Pµàß‘Á÷¨e}‡Ö§™“ ÌjèSøÚê
-ál¸ÈÎ~?P8AŽïG¥@‚-YK2E©Òú^„Àì-¯O2ÕZj7!"nÖ6=ö‘¾KÐëtѽ5®ÒµÈ²ää T`hrÏÙ|Ð'… SJ0÷Q 5+_Ÿ%y[3:¥¯ŠÓŒÓj5ÓYuèÈ,UOü7êEÿü·*È4`oÈJµæZ·AŠY
-S[k+0ÆBXxE.þØ ë"W·øƒu0”2âo‹EÏØ XAü;8îÐú1wŽ_­ñ¢ ¤¸Ckä*ÛÂt úº ‚
-
-4²!Ài}Tʑϵú©æêì°Û#W4ôˆ1$ø{mh}¥ÐršƒN[Ed†Peqfb›é-›‹…`îA|—’e²¤-OÌo ($rjq(¾ø=KšEŒ`öÄwKLÐÕìΛ “¿ÿøu
-bw
-@wÖº]*SÖÀ 0'Õ­T£Æƈö„¶BRÔ©WØn[™-Ô
-Úzß)q¤+§¨å9x8£\¡ k2Þ¢MÿcÝPèôAß±gõÒB²î uBì(ÒÏ1ÿ2^&ÉqäH=îÀÈ0kÕ’·Ð6uÿm½¸'+3*V[·u‘NàþýPçX.ü|›ÝúJF–E›3HS V®BÈ`¨8ŸbLÙã„–Tý[Ñ’ ‚ª ˆ×-(Vœ¡3mÒåÆÌTÿ-n±É½Êb9¼9 »¯ ¶y*±—ÄX<C:Ãø1+hèÄù-Š&g²gY¦Æ$YµH
-»ä_ú;ˆ?¿<F¹ps—DÏíþ9Åu$„#×­Obyj@K­I!Eü{*pæØ%üŸ6øý´yfýÃÊ3b¿8𧳠z¢,³àJ‘ÿ2­Õ\&ÔVói•×8Iü'(ú9Þª®gáër*Ú
-#Xµ("+W´/_ÉnWLöÄèJÖ‚Áÿ¾,f·Ë_­¯ 8úÈ”‰6®rI _70Sk ©™l9’R§#䥈’ù“‡ÀL ùÉT$‹$N+¡ ¥:õšØœUQ{ÂÁ¤nßœ"¶
-h€‘@߾㌠ˆèØVž»—fî‰u›F©4å…MpŒA!—ÇjŸ"Ýð/::jè
-@BñTrGL/EŸ‡¢åv'Þ€HÈ‚î s*BV% <>¼ª¼->aåÍ¥JŒ
-ðë² ­{‰RÚ¢+·ì ½~r“ô‰‰)…ìœD$ÈZëm> 4ŸŸVnmPy$*Å›’Q¤Xà (ï™÷Pe¸E›"â&K¼=ºJ$‚,2ÄcÏ"N0@ˆ·ÛCŠ '¹Ø}x"ÇäÞ}±Ør~@®ðaiÏÙ| ÔÞ”:Xªf‹ðËK%:¿°§‹U3Z^’;'Ù¶]z
-
-î²&Ò¿ 0ïEÇlòþ¹KÑã;w²«Ó…¯T¢© JÍ$¾¯~(zñb»5´}W¬©ðIÐÒvü‚POTØl!·ÉÈ8hwQf˜ŒfE¢)%ߤ¼ïmÅŸF$î.µ”Ê'+s ^ áÀ>m; Ä”b@aúlûÌð
-ÊDelpêmìcÄHЉäsWt(ˆ]aíÂÜ%üÞ”|L“a¨Á(:kã_â6wS™ñ&\P z‰‹Ÿ¹ ïÁE#¦¥¤¥Ñ§lw«»dà;ŒÞºKDù8Vzˆ]YŸâ†t®±‹b%¾tõ"§}Ng è²N³ðÆ“ ^´8µ›%…\h;x~ê½ète&›ÁséNá¢eH)™í‰âkäÑlÕ¤ˆ¬ŸhlzQÛ¨ô8³“ÖIa‡ìÒ÷9Ð!ì\I`éL™x7YTÚÀï¨8à PÕæ …ƒt Ç­s|^¦É®Æ¤»*°8‘Ò³‹RŠ$ !}(ƒþ&1Þäî€(Ó´Ãi’q&dN‘q.gY?”À›Lí"£mÍ–W‡Þ•Ug?=nŠ@¬RòlÓÞÍå ökkVzG‘ ؈öpœ9Lqš¹*‰\1ôöØžæ‡äG`ò4=rÜ )n‡*ÒGh F#Ƴuº ódÁP1 £ä%çsÀ âÒø¯êÍB…€… #ÞùJè. ö$ÍÖÏþÙ âÙ°Û0m¼¯.!Ý”ôcâ°/Ã{ ûƒ¡ £qNÄO±{FÈ ŽÙ»W$ÔÑÁ‰"bß¹ìøC’ ÖvÍ$0E¹ì\ö1‹oé@ÃTÒ©Ùâ´ðÂvÆõÈÙSKÚ\Ì×ÈLF£ÄôfÊ&­
-l÷E(šÝENŽ-—fû‚ÕÁ,`nÒ0Ö'+ÕQ%ýÑ×. Ð`'MS2à@³pÛÄeÈFt DS²<°Ö08á¦Ü”@žLß;=É^ŠYè¿6òÞ¨,%CL®™IzDz‹Ã|²£°^ÐܶÙAÝ$OäÝëXwÌp+ÁŠºâ ¾ 'Y¥Ÿê12رAÉèöû¾”8$è䥊VIª˜[Æyf¾V
-â›/–W¯”;ܯb!ÙÍ„œÍ/}á‰}ìÅšÃ-£Lyª¦Sèa-‘Tl`ÊÀà¼)©k{£œ‡%Y®ÜZå_ò¡èaEÂ:—DÇÍ(A˜rDÕm‡ ÈU³QfŽ¢¥Zsy~Ï †½\ÂGå\êWq²,¦
-ÈTyébâËÛ ÈïÎu\w¦›a¾”nÀ.0Í»sèƒ8ƒû˜ÿÒþ„çÃ$êºXÊž¤œÁÞ±3OYU
-A
-à|Õ
-d¤z¹sÃ(¦’bôCÑçMQ†…aHñ⻄9‘'Äb’ž‰RË~;‰}”±ö8Á5±[‰R/Á \âï=|%çbA³á­ 3Ÿ—% dð?-®ÞÍê¯#8‚ƒ­²”ÎP/$fà€¹YC¬þ<ÙĈƒ™x8” 4­“Ìÿ*YÖWØjdI>…Y¦C9D蔓â•V…²wXÞiˆ«>ÈŸÇ‚ úƒVÒFÅ[ /Ê’WÌwÝã~)9Ã/áv™ôÕÝ&8†y”M®AO{Ûˆ™ìi9Ãü‚bhJ
-Ü“ªùlm`˜õèÂ/Ó>˜y°t½‚õÜð~ HkrFQ/µËÀ9AÙµ®4D ™1БAO!FRÚ?…ó¨ò³—ƒõ]%+6`ɆžF ä°Rè ‰æÊöÈD°ê€ÎüR„Aà•òøˆÏC“¿YÕ°Ž­ "‡Å¥nG'¦†jc§ŸâÔ¤/爮YRg,Ù{„븂›c1ijŒÅy
-q›øy÷Þ8'£Wp¸B…+èÐßèñun²€É¡yNPR…¥ë¾b˜M+`9q­¹SÍÛ‚ÐË;ÛZÏ)Ô7•Pó <†•~ËÚÁfÁ3nar!üb<ëãYî}ªLiØô”WqŸŠ‰ÅšYQ'm£€¸@1°åÅõ (q­ ª»|²Rj O6´ªéˆ¾Øò‡#šÉ(š›6,o÷/ž!Á\w~» ~9øÌzš6mÜ‘;þr3³2„í0ìöv/ƒ—|—rú ZŲÜi7>ûé9¼œ„àFÚØ_"ââ)‰»GõqÀ]²Í|)‹®NÑö©Ôëø<w–ój˜I›|L©Òö›.sÞÕÓFXCÛ«š·þªùØš¤Ž5lzÇ9–Ia çÜ€¶œTë¡!=W´ ­SZõ&ý;}*8WL<Vú&•Ý7 0ÇŒzãž¼¬äîmŽ ¿·j^$»qh´Lg[æ?§Ìå“·!ÚŸœõ9¹É«‹ w €Â¼ãÜ wÀ¦ÉÕ×^ΫXn¨vÏiìVï³Ü3»w&Þš@8]׬C
-£mrD܃Ÿh®?Î*wàfÓ~3ýpúÑ|ˆáä8-ÙŸ F7Èðiª Ý æR?ñ¾Oΰág­=3¢gö¨\Qô˜Ï-ŠZ¤´çÊ?–Èš®>kãò¡<jT>iv|/`5“™VÂúž‚—[\<ž“8F q´áØà’à
-|x)‹ˆèžQÛÌV^qÓðü°Ð:Mwñg‰0mÚ+í×"Ç3.šéAaPf"LÅ¢w¦iìÉa­Í
-…¸,ƒŽªªJˆéën€ôÆÿ‹¨¹Zå­Œ:åÀMo+ú„$Ü ß_;’ý*†“O£ÝŸž©–B^¾¾à¤}ÕKûT!³ùÀYã<åËvôÏnÁ¨SÂ:a,è•¡dFߦ‚CCoÆF·ßÄ+ã(ƒ¯k¶$¯ÉŠìÔ
-žÐÑŸ½Â¯+_„-|lQžgO/ŽàV#Çek]‡` E3 ê2ú5`ÊÆMnIQZ#öS
-°Š–Òª†#™«-h»‹@p>,„)ãZ¨®"¯ùâ†oóìv$Ü{‘ŽBêW H'.÷d|éi'.U†B|‡ ªs÷Ê;q©&kZR™Ü0üçà(AÃͫסøªÆ`°WLºA‰Í‹_Hª5 ƽ^ÅÏ:gÅ
-óÝðW}‚H¬9Ó[¤‡…âû§*Fà¤hÙGH‚X—ùj¶'„d§cnùDX¯¹è•(G‡ÀšŽäŽ7‘‡‘ׇ|1ùOódkÕEHÞÞ…7<¼¤'„¼´³‡çZÁ÷–[Ù=¢2iv-£õ@¢L„447?÷ 2sëAWãAf½HÒí ó;ž‹e¬Ö}€DRE¼–Y+ž
-^A1üÑ›ï€?9é"È*4f¼ø¥îÒ§#šÞ+¿fU`œf«"JŠYò¬Äök‘ÃQ÷×ýR”4¶-J—Ì›¼‹:,˜zí£U÷„„¡Ɇ\–D¼BèX©Š_1š…¢a¥qIrÕJKœ2O³‰ª–Fœ;Æw–ˆE‹AiïÇT¹‰ººï  k[¢ËË’X˜y™7}‘ìT
-¬oA-R<Ñ”¤À*8>mIæ/`
--I¦ Ÿ^^¯¢{ ^bî'–è0¼˜#…ý‘<¿a¢B<±t{„Ûs&uò¼A$Ê­†µ¥µ •«Vq
-òýç 3òžXÛ–@’JpÎkæJ´Š²©b%TkMª'º?ç┈ðǵà&òãöº_ˆnÃêõ¼³ó¯Ezcû5zìö¹Dü-t‚™ x•EC¸3ZÄ1]GÂvÃÊR¢ZÔGqD2YZ_€é¢8’š D§Œá2$²%^z|@ñJ³sšÊͶ•.Š{¢ŠKԴˆþ"ä ŠKHÉÔ8ûÙ0¾²8—<HŸ´„8¹²8"™õ9#š ãHª _pœŠõSÑÿ¥q¤E)Øèh®¢A %<9²›E³hä•<öPÃ…Ç‘®C´Æµ=ð8"¨â@t¸ÇãµÐ‰6ÔDª¢ÇãžäÆãw‘ÃãW‘׋åÝ`
-‹¬ˆëà@,îì4ÇÇ/-íà¸Fîá ª¹}/¼Ããê1|ƒÏÅfüÇkj9jÐâù˜¯8ŽDì;c4öGÄïðnfël¨GÒiXGÈ.K¢>©”Æú{¢j;¶ñ³Æ¡qGsq)ˆy-jeíž7—]Ò'‰V·'Ÿƒ§+æ\©z,N1£¾«P¯˜]†ÖˆþŽšÿÿŒ—Éq¹„-´€}9ëé…®¤ÿ×ù(è‰ÝÕÒ?111"Sh –\²±¡h0\c,jOç ]I‘çPÅÅ‹ÁldE„–âƒ×tQ;¢)C8\/D>¶bæ†ëůèzqMEPÙq;ù¼êêű™‘¥bP§kÆõ.)Ýäé)ùø/"53^”ÒQy®±En%C‹dÒdf¼ ­y•S2ÖÉLî/›u’zZDÉG(ô€"óVû†D["*ݺYÍÈï
-O{.£Ž¢.*ÉzãZ®c5PQ¢AÖ«XåÔM²i“Üïà?ÜAŽkÄÏ$}•Ù;óüOŸø\År…’þº^<¢ÒLñØB¦¦ƒ¹–CFÖÓ0y/sÖOÖ¡ŸTiG¥"¢ÂöDÍt•†B&)¤øtLÖ…Q%ÈÏ ðg”@Öf
-y™1^Žy¢º9çùÔßqyH¶OÖ°ÌÅØÝ)Ð×ñKŠ,Br Dü‚aåž2É7¸–jtïñº6 éÌm^ï"f =׋©²Ã¤lSžÁmfÍPš[ ”‹%%ïq½aœIä:…d©p ¡¼ RV‚Kœïš±+fmP£3Uüg—'O…0LçH¶†#ÐØHRZÖŒ
- w¼¡¤Õ%qÙ¶ æLÂ(‹˜WÏpJØmÆŒ\c‰é›ƒ[³
-Áe¥“i×™8ãÈ?MVÿ×þRÀ䆳\òõYÎUÔ9™¿FÎEpZ¶é*UQŽ?lˆx5+—¹õ)l4rXÔðTŸÎ-à{¼Ú|º ‚ΰð½ZžõÃìÁÑ/¦vÙ:”µN¿ÄäÏFÙ—nX°À*™+½ù—áï$’5ÏñáQ8é†apG>Ÿú^Â>†ÒÁPÓ¾t)0Ð4ÈIà6ê±/]~?ç66÷Û8ãw”3Æð/l•,ÕßÜ]¨d5ô(O÷öéçÙ:ôh¢a Bu˜ûˇ3!e.ôh\. Ÿ0.Ÿ»>_¹“F$\¦.F_7kR@-ŠVÌ“ VPs¤ú'òÜ/%q@ö†|¼w©ýµa0$nEY¿‘‰H°ê^ž"h ï[ãf Ç·|K¼eŠì]“¨>FV^m>ÅŒŒ½s¹tÜóÃã
-;s‡@„q 2õзÍu怋7aÃàÌþ´RÔ)ö,Uh£ymù|¥ÁkÞþ4±3¨Ž4%œÐåU™Fqí×Æ`™Ém²Å-žIÏ9—˜ $Â'Š¹-˜ÍªÒÚD¼Â..Oi Þé0â†'¥›ÌÎaï°‰4<¦h·áAŸk¼A¶XdÛ×ÄB-ŠdEyà ¥2/?³; ¬H˜”¨¡hŸJø
-Ü<m±Y€Zy­<vš¦•ó.+¢ŠTÒ 9÷Ä$4~CÊà«i4Xt‹ ÄüSH€vNÆ®3V-qÏ}N4V–)ŧnýµé’¹pƃÌMí­;¡Àæc{šÌ¹›VÓ:¦=v‹ Žjé³nH§¼}hŸ™sKr:YÒ¶çc¼+€dqÉ°O±l¨L‘ƒœC’ŒÝ£ß$,L6}D¨´a̵k8n˜°h&¬_¬«íŒ?‡Ì;ÿêÖR \OWÁV0fuY&hœGgí<e3È‚©Úþ᫘B(Ûˆ_ys
-IËkúqÆ û€¦éÕ=FÃ>ËÔž—l–…kát1 $Ü !ä6ºŸ%{TR›¹L½?¥ªwY­0¢4øC¦’ï¿-«Œ¼1ÆUc`¿aĞߣxÉ%b%[5ÙÉŸ?|~ZTöýpŠü"ˆWH°kEôÿù
-hù4_ª›T ;عå¡ÙÈÙ¬O5>OàÈ“ø6üsÚ»èµh¾jôo„©dÙKëõéUí]£H^üâ
-˜zD¶z€üÙ©ÿo^‚†d¬5}K_ÖPb/»×ô.×Å_?æºøÞh§¹Dr"ð!&y¢+h$#–ÑÉ}ïJ±»IÊlOÑ‚‹SÛŠ±izócm`Û¸™ö©e}-ÌYû|J`‰˜¦9Ço÷òøµüκTÇ4ÊSþQ
-@v1†a|?²^V Œm’¤×½&nI¸ÚÞ¤ðŠÑä¨ê9cëì ½#$1?Ó¹oTh™¶²mµ2ÔuKÂmÄx9¡,ÈEŠ*½2‡k\WøŠIôî+mßê’Ó¾6[‘:wÎîÆ= ¸?*Í\´3¤B$W_™HÆg¥“ϬñŠR_ûSŠP(%½µ«#S0=F(-» ýÁâ ·'Ÿ^B‘ 3N…›Ûh“dàù;d\3 +/
-–æÃÇ øj£`@?7FI:ì„Ý'Hʱ˜e?ý@[‘d»2A–±B@b7ˆdgò/ý·¬Â`À
- ß½g>– Š{üM ØÈСp¦`ŸÃ^µHïÉ5O½ú{Ï¥Va!ÆH2áÓ³”65£D²#þÇx$׃@ôF.wÈ-²Mî¿ÍCbœ¤¬©dåú.F3‚î¦ûjM÷Ì–Mþ]š>æ¬ç mY‚ý!vÌ”Xë§$ýJ„à¼úA6E\T qڱǸ3‘dˆÕ1|l28zó#Õ3)Æ$²^Joí ]fét|)"2
-®ŠÂAØ¿?äµ–M,†Ê`€I½dYFçåKžjÉh¸S¢AkÀ?° ½”0~3ìT;íTǶÿ.á 'Is\ a¨>6,Ô€¡Çó&‘ÊÉ+@÷éç@‚Gg}XQM¤ˆ½‡;¹@p7xÅä‚ÈŽë'.4½ªÏEK"lõkXV Ï,ª}33!ji±Šÿû©›Jþ‡ž„ ãcaØ’Ž¡xqÚ2}öO.œ±^ÜEL3UǸÙÿoçuÎJŸ]Åš¿82ŠöëRÆ›·ƒßÆÑmêô·×€ÜzÎ7«ýÏüa^d›…9v½öçµHÐ<ËÎbGIJ2\Ž4g熲·“¡°g~˜=‹þAô:eAw¥¬–yá1ZØgiJD½g
-ÄÏè9g!Ә˹ºÝI”á.«.7žíWeŠHAF(×Û1õ4+QƒùM_,Ð]Ò?íP¿pîýK€
-H‰Œ—M’7…OÐw¨µ#œA ,š¥¶s‡½qk9÷Ÿ$³êbÛ¥ÔÕY/ ?W©Å†ŠJ­ooµT¹J±(&V½>~m¥\½«–â­H³Çû ÚÅ:gµ:ÆH»¢µ¦¼"æ_kÄ墣órµ 2ú°ZKáÑ‚ôˆn½yHkßß&h>:¼ö’nÞÝÌêØ爷ÆQRÛX&uÔ>z/±½Á ¨|¤È4U/W+b:F´ó9õ²æ£¦Šž½©—š–P¥·¯nU/)Vzqí½ž£S¯Æ%x·Ž1>@~ÊÕ6õ
-1Që•ÔÈãûÛŸoåñŸ„òºWó̈ŽûñŒIÇc <‚ ÓñrêÅ}ßì
-2K
-FH¬s˜ŽÐŸ¤Ü^„8ƒj{]ØuÐ ûq€LSõª’kt_N  tYV‘T¡B–ªå2fÒi}ªi{SËÈ‹sýa·)”y'xµËÎgî‚<,$¯®sÐ…9œ]iC4'2ž«.H!;6Öƒá™g÷)VN FKäúþv6•,¹â²¯>¶Ã,@ÉþM6êæ÷ Á-@DCvÆÇ\—Pȇûâ, ƒ²¡
-nPÆœ `Ò÷­¹¤ècCn!þˆð›\6»U1?@våÞ2@J‰8ŸS=I§ýàñDŒÙ­FÇÜþJ Îa-–fpˆªŒm r ƒÀråØ5ÚÀSLìr âh
-/§ 2i
-Ò¢è¨è Ôs24.ºÈ“Õ@Iõí²Qá•€5]3ò
-;ÿï Q‡”lÖŸÖuŒ kÑùu{ 0n ¡Ðv}ò‰ºcHÄÝZì%t»ó#nS='zVçnäàÂ9ø| }J³¡]FÑ/›åŸ›îÛÇVù õ Vƒséo®{÷g!€L«ÉØÏ Õy6¨ö!Š-2æw%§HšËi_îÄtô•×»’5Å6c:I}ˆ)sŸ›4[rAøQÔÚö¦ šœ>!ˆà\íòñâg!(È=vR7ßç
-[0>È‚
-ÜÏšc›Ríÿu¾G¿º2™Ñ£m•H. ÞVuöeO
-< Ê8aƒN­;‘ap/\?.^‡æ\Šæ·bhi 0z÷[IS
-~b舛I»ã—¦È×òM¿TчI ܪ@¥rY0ÐÂog«”sݧïl^|™&&PEs‚¶’t‹û*Ìœ;yäýí sìv¸ EC]rWpEèΉpŒ˜=S6ôÑ‘P:­ª^² ë>À çñ‰¯/¾Ø±
-ÏÉÑø˜Ú/¨à–Q-㌭‹A?§¬
-86솪DjËI6ƒØâQOŒ ·ñì%Pxarò%£íÒ~,„Vv[Æÿ²ä$I gÌ ˆ9ŒËR
-†i"þl…‹TvðtAÙŽJqåóœ ¶r†,ôQ¶b,ï/`––ÔÔ Ñ–+º(¹x0ÎCrè”×¥ÆßsßtÛJÀÈ´+s ȯr@÷¦‘lë¥{Á¢<¶d-‘'Ù©o
-LýÊÆ<÷’ã~N :×XõÓØ@ü“$Ïè>5 ÀYùë,Ãg„’ŒùðǬ‰uÀ¹PaÈŠóOšü'|'Ù€"çô“é¼M[g‚‰Zû&‘V>\z§¸ö{(E¢‘tæÖ®57W ד›òî½ùJðŠ5ßà; n^ñ\
-BÁtÔý‚¸OŠHw¼¿8y,zœÝ<Э}ÿf”þ’Ÿúõ_JiÁÉŠ‹#O¦ûsõ=Õ{QÛ]Iú¹®’n:ÁŽ‡Ó.‚»°°^"8ˆ»—ÃxÏX5)Í9:E] üñL.X£69ÿz|ŒJ°ÜWÓë‚…ì1º† ûid²kÑ®VÇ4››œÌ³Ó‹Ë;%rçØïÈ5”8ÓÚA„
-n„õ!^5·(h
-¦8ã|)ñ’r(nùVDIùRÔá èM%é+
-*™ŒCÁã³1ýÈXÆ…“Pa… ¥$Ù˜ÅO£¼•‰«9¬¶¨Uãnz<ߪªu¨c1¿úD݉eÂéðuÀèR0š~«ícvv|ë{Iߣ%ðÀú³ÕktZvÄÜ×Qoœéê_2fSé4¥ymàØ~®,|
- ´Ç/µUÉíÜ[uÂë A÷|)ñ¤ë¸m ´Æ§uH2¸>tbÆV˜Dr$ˆ‰´
-šHÉ£
-%Ò4+‹À¿ 7q[øÚ‹tõiuZqx8ÑMtͨ\©‚þõ,æ”ûÏ+ý¤œ~b.)’C+ý$.žªii¬õhåJ€žÖcUR~ð…Hû‰N,3mô_wÎVþ–Ќ¹>”ü õß(@
-à¥èl,Uº 4‚µsCtþ>$ÊC[:†æ¥ÈÁ¾HŽ˜†¶¼Dn_rV·©Ô8ãRîƒ×&FE¨
-5Ǭxˆf›.QñLž5É®î@‡?É}ùúâôÌæ¥6ç^UGª¯B|! Kßվèm¦Õ¶×™¤˜
-©Sì¶/žd*שEÔ¤®¶ó“* ˜wϧDϳÔÔ؉!ÜSRO÷î¨#D×}'‘åë©ý”hXàWyÖì%(‡=@ÊOI¼ (.<·=U5tâ£8±á::Êg¢Œo/Šå?ÌNQÍHJ¼N_Ô­DÇѵ9’̼+
-ŽÅã%ýÚÁ¢ÀÜñp8FxÔáE˜ú¤d6‚x&°B€ŸTYð;"ü+ñÌ;Sü‡w$çC´ƒ)R#–ïDT駽 w]Ír-¤D
-4ë½»mA¹¦i¹X…ô“»Y!JðA’—^²Û†ª=ÅJTÃs`½¼+œF–XÒ–ÇÚx¦„]_Ý­v›Œªà
-ÔŠÉšÌжŸi¤ÜeÛ%<†=F‡·^]vËJðÒV{u¼ÀF6> À…«Ê*–qЈU‚–Æ Vê¡DG1è.Ñ#S°^ÇïP¢ÞfW“=;Ê*Ò^Þ%3„J ØG‡Å;]¯ÅïÂÿ0Ÿ]·ä=d>íï(f™fÝéܾ,n™ÇŠ üü¤kK] IYËñqºLC'x ²Õ?é&DEàéF§÷æàèYàÏó×þ©ÅüiæñHƒÊoÿp¯6*R ­â€S‰¡0k4¾¶§ïú <¥UžÐ"pÄÿà¢8y¶tȦv¯@mÄî1Œƒk¬¶á¯jY+?žd0P¬’Úm*A,(
-æôÐ?í&Öw[Z°£Cø
-–¬nþ=¢}ÊÐ(ñÙâ']§}J t}݈âÆmÀ¡Ò¹DçÓCÉ7ü‰)ÃfÊÈ­
-Ø×üÄ”‡¢‚L°ÿ­VG²ÊkÂzÍ^—_èÀJº€Æ@ž†f¬›O>æyâ²ÐA³£˜G‹œDfɽîï(B• 8äR¦`¼¥"²[x$üBÞ¬#µI±7’º¥/Ói=lÑ3– =|»‘ÑuÇhhCƒíν×ç\·°40†¨Ç×TátdVhbî8oÉûÆaŠÞÍaò¦²kpÜ¿K‰S%±’Ãxú8~G”Áý» •ïñå6ñ.¢!möôð*ù…&.SVÍ‘5!íÁ¿l×8¶˜pCú˜ü<>ŒJ.(JøY/Õeä2Sðd3œCIáG×~
-êªB‹£zvÄzaBR|=
-
-r;YèØÜ
-ñ!lc£ ½ç…tË“,¿Ÿ@$!¥#
-²ÎrCt™¸è¸aïxÓtw{Áh=a+þ
-1uöƒ×àÃac &d“I¬OuÝ–‹uÑ RN“—aggÎû;mc˜àÍS¢h¢§ºh—
-âK„dÂK݃x7$®•cø—€iCÝøtÕöÁ,ñ1‹@( P~öcãÄ¢‡­}Z2³ø6ÂObÀŒ©°ãËõ”C6c=ƒš¸WP£TE NÊ^ç:z4WBž½à[mƒª¥§ W‘Ö 9`ðoJ1Dv°×Ʋ‘az;GUZèê8!V¦aïʃædä€>É—Pž¦ƒIãÍ9Bì®HÞêê“Éèø¹§H§Ñ9AæåÂGyH PÉNVâé(µ¬¬%YÓ7ØwND‘ÚÈAgµ–â.èMÒx ÁJ!Ù\\‹UôM@)ê7îp,Ádz¥”âIãˆÁÝY6w‚ôÝ¿eG@{Š#´=-§žpM! Aº´Š‡h·Ûô#ÀP¯!,¥…Gü'/;Ÿz ‚{ ’ÉÒô期Ké%äu)½á3ä—Ä·}ΡúŠÚ„áKUТÔ_Å”½•Áäï@«õ艗 ò6s¦Js̘ßCž¬ñóÍ£ž‚¾®(ÍQ?< /,QOAŠ³R¬*I‚äW¾6SnOš2<“Õ>[-L–‹L ‚Û~„)PQZ„lÌ#¡·X¼Ë ÖÂåò:ûØS„駼ƒ‚CŽXQå\†Æê³æJK¢(w"AíEΆΎ50aE„Æ/"7[í'9[îBJB™Ùuzkvpþ¾Y5Àðrz‚CÂ4™D ¬QLC74<2ÝÇ*?à5G€êYÄâéXC–„
-¬Z°¤v]ÎÁ0ΓÀ½EÛÐ`+è !)¨u_vŠps žÂ¥†@†Q¿²Ê›²} ‚ñX‚áªíþüó2‚qˆ¬iÃ(ëú&¨ŸE¾µÇùTÑ3é¬õØõ˜IЉår»¯"äÉq @ßt5TÒClß¡Øü¡]¦q_1H§Jj’Q&-í!Ø‘MÜåÅæWði×
-V=„¬Ë Ùþ$±ª¾;x–Olݦžµ@ #jå{ÔDÜmsúöm±
-+KgB¶z¹ÊÑKÝœñæ‰gFn8r‡¿4Ê®{FÜl%j©ÞÉqðuõfª]µu!äëáÍà„šBè`AK@,&Âx;&Ê:¹#³ä‘:i¬«‹Ñع–ÿ-øÏ®ð#èëÄÇ( …côòÝ€aøqïŠ"½‰à®¼ƒæêßN·x9ÎrÚFÀÛpø/Ž©É…JZŽü žA¤èoC
-5då’!<Þ®[„ö¨G0†1æ¦ÊknA/Ë…Ý™û%Ö– r‚($¾Ñj‰—/X‰bÖ…ÓÔ©YP…¤F/Ú cµÐ}+8MÏ3Ï ³ÄJl {¦‚öª[g¡ÐPVŵözòÔ¡jf=»ƒTÊûQ ÝÑÈ%Sð·U’—KMB˜¹åf«ÍN6x@¸zaÖJZ´tŽä¥È>fï›y„Q €e'ùŽ¢'l b£
-Ô‚¹¶Hßu2ŠŸÂÅ1 ¾L~Ã%vñY:Å@™µ=ú±Ùo*§)Ì}xG9À¨õÔS’½¹Š–W–«ÝâSb_."lw•;N}›Ž{„t–ÊÆ• ‹O13])ŸÑ\Ý”IpÃÖ°ìœJk‚ aûèŠ8$`·©Ò††ÜÉ`ríñ©ÿ½_Lh2»©h5Úœ´<†y’jþ‹š¸ÝÜ‚ꬫÛ\TE¢«È iÁX¡ÛY<„¯¤È÷
- ËÚ+šöÏìý\É ¹e]Ûú‘¡)›Ù¦ÞmÛ9à'.Æ1eǧšz>ñƒ9Üpøk̆¼1•ÂÐ&Ú2C qìIò7G›ù0ceL®Ã{ÄECÛ–‡°„±x¡=»Ò¹t˜“„Qh.Œ@är¬mÊØxÎAÐ £Ã*–\ày_êËÖÅ8gSP†¬­ûj8
-a˜’}µ7†³ °­Še¨ç¯kü¯ >‡¹ÑÀx$C÷eAyiÝ¢û×y&_ì=ˆq(&EÖ)ã‘!¼™ÄÒ`ËEÕ.Mw"ùýB²®
- !Ï$etÔbi ¥÷‘I;‡ MÖb¦"BmƒS2ÿ›r/hØqßÎÉ}Æ.G¾KÊ:F5D+·êjº`2úÚ ©vÚÎSKFq-L2­"qlñ)ö(Ñ'¹­ÝìØ€9p?Éa A:¸)J#1²
-ŒKâ÷d¥¢»Iì<½Zì=ç#L¦KSL:V];ÛƒNyuQ§0Ó‚tTFÖ²pK ˆv›W‡${Ü”GR©yl‹qV‹æ­•SŸì®¼½å«QÒ§hW3 ÍÚ™Š’Î?§ð“¬ä÷P]
-‹ïìd$
-
-Ý–döþû\¾Ç€â†”¨
-Áʨ¨ï覣QN±û«³ø"èåsç¼{»6Ž)ˆ¥;Þl×ùòx¯ì‘)Ö·ELô‹$Å0uÅAôNìh3WhrBKÉG¬b€µÍœáVHŽx ·MFñO)Âv“
-ˆöð À€ÛU¦}‰ý¨îØöFYf¾„p˜G&•!T°†øfÜUw£ ±ÔãÚÈF3éü
- ®¬ÌX-Ef¸Å”`°îóñóŒáÓ„‚¬8ð
-ˆ"ð¹€Ñ XS;Hñ§3°­ˆsÁS0µŸE2@SÕ’„¤£œ™ãS¶Ùö’£†q‚@r3ÊÉÞÿĸ³($ÄiÇà!á«2Šß…‰£ï0BÊôO‹" <@üCU®®)íÝ1­0<uŒ§Í`…)C•R9䵺mG•ZPL‹N –)È"†g+…CÊØ Ô 7äLª#Áù£ÐÑpj§ ´ÚuÑŒµ{p_Òþpî#3sœÏiŸÚÆ2×ÿý6W©¬jÅÈšfe@ UѳLì Fº€8dFeÌ쯒Ħñ²dÇ­Ä‚HI÷©ÁH‰”ÕŽË€~û8€Ž£^WM™xãíÒÜ@§õ»}îK  %7ë
-rzÉòùƒáƒvNüé z
-]Áõý ï? D#Q‚‚gyÏœMk riµÿ ï$_ÒkUº'Èjád̃Õú›s*7DÞ™Æж#YT/ŠíÕ 9tÅNrYŽƒÛ®Mì²þß@/+öÝnÓØʘ5éí‹„‘*É/&TÊ
-xÉB(N¤a> ˆ¬¬œÄ~Ìê(~tD›땲ݵd¯ñªw3z‹Y%m ÎDUb#-®ÇF0Óãa8’b–EŠÊ…óòÅèÂ÷µ ÇsògÇ¡„Ø—Æ–6Šyg†‹mÊ„±O©Ì$L-­i
-;Þ£Yû®ß‚Zªbç@OQDÒ’»5ŒUkÊ,Õ =Ùs·áW'ÿíã
-8¯ÎÅ!€n‹|
- /Ú_º‚ÐE^Á…cÙŸz½ ZçÁ‰³x.»=
-H¢ûì vù.µÁTºÂ±ÌÀãTa ÁèµiÕNº@üS—ŽŸÎ¹ÌÍé6—ù;>ê2Å”gRT3—Çy:övWˆ0¿¼têÛsõˆDÔÚ}Óz;»˜Ioøâ
-9JÿõSGÆøý}_<þþˆqV>™—bDzsʯ‰òçP2'ÊD…?Cn‰IÓÀº“B2•û2×2HÄËþ<öYÀÈÛÌ ƒAì’£²Q”r*9^².Y@jB¥\ŽYq¬"1Ê\ BØ-èuîOÿý+d}
-wT–Jòã7ç‚yÈNAD^Þ ÁowæÅÂâÝ@ÞAÉ/ömHšÔ±õ­ŽÁ–Îä¸å-IòR“s^ÆíVLXõ$£÷‡äø^Àã9¯mK KÅ«C3%´`8èrÆý¥×¡ÐÃñ‡Ii¤ÍÕÍÛha‹š
-DUý á“üD3ª}éOc¬‰{â¡¢FÀ F?NŽ, 퉿í(ðn+ÖŽŠ_ÂÚopØÞ0rÿnhd Âöq²ËئQâÌÂj”}õ1'¾û]P‚<”dkèVlxAÖz2»‚4z10y!¿1Íš ,3Øtäó9Œ!ó•S,ú¶ß†²ðFv¥žfþê«Ï3Ïô¢’‘c|ž¬œ<üÖ”?bn¬©OáˆÙ%ŒsJï ²|omö°úà‰c"Ï dR³z•<áÂ;è)WÑ…\ñežòí½Wˆ/FÊVÚÑãù&:Bª0œÃp¿14t®ù0^L–d™¹óW1’˜XmvÛãUøo&.´e'êפšó8Íz\ nR ~r†`‹(7‡ÎöüÒïëÕÁÐ2Ì‘f<E•CŸÄ,[ÁŒ¯¢a­Ë„FcX˜ÍELJ #ƒ'"eßÒõ[üÿˆÎS‰|ÄÌŸüSƒVÀÄ\ÝVÒö‰‘èSìf„€¸Rס>‚õ¤ü|È^(芮Ä%†yh¡–›¸`¾¿ÁàHÏ°>«€bìÔ¹á{ü:ÿg¼ÌÑ#Éu |‚¹ƒN ûbk̾E»ÒýÝùƒ
-ôGå4
-ŒµúÚàÕhKu ¡Lô°l—m )lJqj(ñ”\f»kB*kƒz%g D
-;"qH‡G†¤ˆÉ6óÙ9#ˆIqM% "dqS!ZRºïÊžV¯°É¥¶ Œ
-ÑŽùaJ-ZÞŠÄ¥lhèÓb[J0Ɉ\ÆÕß•œX[ŸâÃŒD$ûMÑõÒ_ÔñÝŠ+ b™ã,Ž}YE¼6î,Ž]b4é*„vÒ=ÜY/þ‰È‚
-b,Ü LyÉT–M/'pñp¨«µ¨ÈÕö§¾EàŸOGž¥Ø42Õê ƒr—ÿ‡‹ «¢$¨EµMÚ—¢U‚3þåÓYD¨Ñ¾ô~j¬{A ÿ­Ó®YÓˆ™b(Á¯Šàq )Åf‘E©Ä]Zݧ)¢±mõ
-%rk·|ˆ ÅÁK'óÉ£ÐçØõ¿fDøµæÏ“ll‡Äª¶ÂÀC”Æ°@^D3ùâ
-è^VI™«]£wo ;% pÔÊs”ÐÌŽÖ’8}Q€ A"]ÖIë*ðµÝâÉöŒˆš…E5‰Ÿ8{Výé ¾÷Û§‰Už%òòÅ8O4ïÐÐüðœi^“– ÍitãÔ+1haZÄ&ò4BˆÓ<€®zëìNóü64mqg$š¬ØD:lvÎRZÎ¥—Fâ= h‘¡ðP‚bîz%h9ÝŠ‚é$‰ÙH6úCщÜx(r¢D­oZmx.z›ß›XåPRô’4YÑ,¿Wó^‹¯ˆEA%“³Ù”äû'É,Yº3·\'¢¨¢¯Ë" ó|Ly]_!5ŲéSA¤ ÍîR^yö†3… kTbèºëK•f5Éå9…Vt÷¤uß‹£¸ÉŸ¡õ!{ C `-Õ=(®Ž—)Š˜6Í[Ñ-¸Xã—E¼‘bYÃÅ¡¨Êðý€Qñ•âbÒš%øè¢v`’½Ëcfw>a…6´Û÷ò¡(
-5GK …­––BJñÞ€{¥[ˆ§ž0¨[Ôb×è°m·åœ½ ›f€åêÙ“¸26Q1,9}i¾bÌèx/##tpÏ8ð{.}[Ʊw93¬wEÁÇÁÔ|xQåQd7´Õ׋_õ
-þÔt‰"X­ƒÔ|ÛÅï…gLÑ'%˜Ù¨¼:'yè¸ë”­6¬G:ÐÀºî8äQº…œÃ9ÊSÌ‚:Âߦc®„8ÝJ¸»ÆŸmÒÀ¡Uv@‹lyªK!tö
-øì4ß⟙,tœŸØØÒOT¹PÈbÇœ8»¦|2t«Dì>±¹ç¹…ØH^‚iTÔÄÖ¸YAÔjJ$K‚¡¡ðVtwÄ4C2r²[e,  ¢)é*cUÃòµHŒ
-*0Àb7Gù/`+ܬˆ¹¤Ì® _"û
-·•Ã5H‹—QEäÃM¬ëÍ™b_€ËèV¢ÀÃÙF·ŒQž²ô!K´@q/ºM\{—1]‰i´3nî%j(®!Hg0 ï§"¹ÔS3ïsó
-Éã!š4¾“9Q艹úωT²ðàYÜi_Àw½o íÉ ëÔ;ÚE€´Dm[}t‰À܈ûÉ‚‰U3G”•0‹ó~5¬øOŽ>$ðöÒ˜;á…aYÜ©×+½$,©Ä2rú3Ï„¢5ž¥ÅC`MÙî[’"äQ5Çp$ûM‰‚“î†Å§Ç|­÷}˜«m¼oºÚレ»‡¯ûõ$_êôë;£Ù
-k¶3€[F€orž÷ûADšÉ42W¯ŒÀ5l¯Â[2‚
-ôÍ–$“äØ‚<é¤
-B+¢×ü:ºñ?ºƒŠ ”žë–vA27Mh¡}ýTv•ÞKw4Y]án˜—–V7cHœ¬¬ç4N«’6YS÷ðßõt¦Yx¤,«g‰~P,xD_|Ú/Ãõ`"ùÜñ4d 2ØVš00<k©±+1mßûཕþóAd¬&G%Öq°~ÄÒb˜>VIž€óËzXí¥d€z¯eS'³öù›ýáØL׋èŸ%Â(«‚÷ä]ÎÑ€v³ÍŠ;kÙ1Ë{½s_51—¸îð1AÍñšâGnç4U…é©Ö-ÉÔehã÷³¹ ‰Ùåí4)E3Sà=Xõ!mn @RÕ¸û†+ÐôÖúo¨¨ÔТéÔ¶iük<„›}høè@f-:kù÷Á-C—ñû\šLgT4åæŽcðø¸m.÷ØX£W
-ZÝ’œU.6F'þüÏ]‘ˆÓ…·Ò¸ìï)ðfž\‡]­ëúÞ4²ø
-ÔV3L¹ÏáïD5ÊÝ óTA’Ы×òï+Òoù†‹2ê) J–•B™·©ÅgüŽÆqD†’{"‚bÏ« ( jBkÃÇ3€æ+ø|J.8ê9_aã°
-}à{/„Ž*('+8 J|Ú©ˆ…ƒ¥¦E½›K[¶Óni¶zˆGéžù¢Ù¤üý¤¡\¦?³ÙSÝmüÖéqŽ+F$¸œÄÅ
-~}g¬6Vƒ.År 8²l”¶mdžPÏܼscGJ!0ß–\nD‚Óa»ÂÝïHØüÖÄ> Q¹©}ògÎ1ôðœÁ*ëɇ˒d¹|ʸñ]ÍÌi˜,•Ã˜Ž·Ä!ÇKt££$üÓBŽ Š‹ŽHWò¦bOèˆHŸfâ]t¼ qm%$B²¢Ñqéò×j  Pæ*}z=ÑI`¬ùæ¢#’,>
-oGÇ*·Â¨¸±>Îå|EG$Ék!PŸæ¢£$adÖøøt¼DNɉQx“,…Eõ=‰‡ŽÿÐ?èX³VT†žLš#(׃ߞ墈9˜€$;¢)IºF°)¢zÐ
-ØaÝÙ¥0‘D°}Œ¬kÚ¯\å*Hù dêéÉ‹/µ£Eª½¬Ç@à­ºŒÏ'¤±zÐJœ’†Ap¡”ò
-ÝÅ~VNã0iUá'Õ¸Ž|6×ßì½_EÄ©Ey³ž´Ð€«ªh²êÉÆ »±Æê÷ß¿úøçx,=èmäkÆv»7l®±wÆ!„Vdˆ|W] M¬àϤVua6 ' ‹— À¡¬9aÔú´;÷ ppñ}‹è~Y Gœ
-†›T›df׋å기Ü|Iœe0Í 7y^u‰²L·c*1ÅõœžO¨ÃÖ‘AŸ¤xUä¤c8÷«÷³!Ö„RFŒxôk"„ü¤ŸÍOÓŠÌ Ö3Y˜=‹Ÿ‡¸$Œ'ÔKô$>l›L“ÞC6OòäL_DÿóDÚ9¬…ȇãýxÓ%¢µ…|Ç>‘'
-s*np¼Ëp>ŠÉTijɮܨ‚C­†å@~O!a˜‰UïÆFõŒ°«Î7½çFD‰U"ö®%»¹IÌ,2.p'µ+7z}~åÆKäÔ» ¯dA´Sûž$)ùŠ‰Ya!Å}œ¯šÏïŒæž`ü„‚Åtø˜觢pð{‰ ¥¢­ÒÌM &Æ%$Ñ]ëB‚­‘îÚ ÖÉL´:[ø_åª,SM&'ÍûM˜8 ÿàsôSŒcƒPŸc¤ðÙ_Ö4¶KÏŠRKÀ2nJyQ½>‹eà”Ûh‚æˆ>·ˆÕ…’õ$X3KJ|ÅzãÁ=@$æ[6†Á‚ÄÛ†þÊa:t™½>œ‹cÚèÕ-bÄxtçisI늛¨• 9UxË^5¯|Q´:a>¦|ßÏý c«Š6[!¶ÁŒqK1$ê‡ìó2ôb€NYÈPÈz"þÁ¤õ+sŸ°§áÿ1%°râ—÷rB®/Áßé$žÃÜ®z^¢ÿ3^&Éqä0=ï (8k{ÙGÑý×ý>V¨2™¶Ü GË“ð§@Üá.tO”bó<ñhÆĵ‹_çýÆË•a!zFÑO/¿*ˆ÷ø­Kó
-þ ƃ|¦pмë4šWe¡[©ÙÎ"†žBtãÆ¡)vM"_QÐ=gvΦ µ¯qßPm:¨‘ØÎêpÅËÝcßqwQ<ç~O¢H /4”·9#+²à÷Ÿ·vnìÉÌ[À·æy2Q¼PÒQÕà$lò—K^ ˜p)žßañ™fz¯KÒ¹Ïò˜(
-D–FÉî|Aqâ÷pÞe[Mf&¿Jwz´Ö¡ÁܯÂ/¨(½.[ëW†žœžE€N¢ØÈjO·\¾%´“[¥Oë_Osš·ÐKt„åàÜË×¹O^XÎÒ•ñì¾,ç,R¡á¬ßIXU¦lSR+E¢Dˆr¶ % J¤ÛÏ湬bÉÒ@£k
-PwÁÕØòa(Æ-Ó½iFßv”ÆĹ$®!4á†>î/ÝŠ²w@*ôÕÎpªìR´Cç`a,Å›ÓÞpÿRþnq.রX ¶¿º·òÌÐÝú6µ—YÄXŒZš²7«xb¨Éf±UeáKTӡ䉙ފþ;Ip&.˜‡Ã¦§"tW性û…*î0‚.‘t¥ÁÙ‚œ•”¾¢ýØ1Q3o€Ýò^c ¿^F[°ÅcJ€·Bà 4Òá9KˆK ô†;ÅŸùK&tç§sH¤
-yÐÓ¾L&!è‚ÑÙ ÛR'”œŠ_
-B)Å%¢mzCyf;$\œ»Š¬÷˜
-H‰Œ—A’\7DO ;ô¦‚ XËKßB³’ᅦOþ©Šeu8ÂaWç'A ‘Htí=G|üýMDí!îÙzºóÓøË£OÉ4]çøø¹@jçiKŠGjhL±æÄÒ‡Krx,ˆóEHälž ’üË"ƒ[uÕ|4ɘáÚÅÏç̇´èÙ½7× É·îM6„WIïæ²£ µ˜Sfýõ¾ê ”1£Fd’žÿ~“¿
-©ÆÓz­÷k{R›mê³üó$á3[4+¬þ ÍF^3l¬Ãœ ºò‘,H éÃ÷ã’«²‰
-¹÷X‘÷unèê~G>º§ÖW¾Î±¦ê¹!”ÓÆhM¢é-ªŽ|$Èu•<ÂGN3ãðó9ò˜„«.fºóh#rt²ÉÇ 2Œð%FÚ~UV G…ññýÛÄNðÞÃdz_T|¾ŒWÿ¥ÝacÌ2÷6RªcATÕ¸¾òÑzz׌bë ±“lpªéèïŽqXTxýŠÐÂ7‹©Ó¦Øl\Ó¤u^+”ªìk2ªR¼Åz5qÁ¢ ô:æ…YRÅ&ÐOº¿4z¡w™Ä» ÿ'ãÛÍxB„Q¤žvYçQrÚFæÍøP£Ó¿"+.ó42ÖÛÜI‚Û|Ö&qŒA&T€f 1hlZÝ‘Ké <mWÝ–˜¤Äî­s‚ƒ.ûœ¤&r⺠J»Á“áÑMø„a6 8S¯¤!›m²ƒéÓ+^ò*›ïÃï¬Û6w&ÿɘm|ò7³¶ú¯ž $9F´¾Ô¹ñ¨PŒs¾éŽì@±Þ‰Òæ¥ý¾‚a$:¨æ×/w÷ÁxiÅ…­«¨Ïœ)ƒVþÈkVt; øsŽƒà¹ž‡sžYq%ˆl£3!ì@®zU1)Ú»Ýäú£¥_ÕúÆCöMOLo5¦T:Ú3ü bÍ9Üø¼èß›êš8ä®è¤„hmæªÅ(–’4î?GŽ3fÿe¸óêªôEû:…'áFíEè庯€JÊÞ"FsÆÓE¡WšØŠRs}ö± ÉOàGE£ ¼¡ìŸ=ØHÍ&GÅ¢På:3„àEçâŽ\Ç$ƒ“’x±aõ)uE‘“QOzˆ¬ñÈô< ~¬ŠõjŸ˜c¾;†“èr|ŸÃ|²A£0-?…¨pQ•˜ R}‰Æ ô‹"üÜѲïظ¶E˜1Y¢6ö£ÈÃÀ˜ÀÏ£ÊUò¼®€âXb¼á9ÞäÝ9£S(@{íh¤Ú‹ µË­©߈mÈ„OCꤳí¾JF‰tò¼ç"Ë´åe}ƒ.4’ÃöèJ(wt4ÃçòÄÐïß #×çCLçÏ°/ƒNý÷rÝ—@Ošpl­gÐÖå|,òÖÝþ³A†ïϘö7ã ª“ÃÔî½à÷q
-Z ÞÙ­=#ž[ïçWúóÿ‹iÇ@
-þýs…ŠòCUÊ(§Ù¼¹Á3éLþšzàU1€RlÛ‰j¬½è”Ö
-òŠëXãÙ5.åc:ÛkB*ôn,“ô
-♬H$v:ù»jýÎÄŠ¸ù`~H9´ÅùJ©Öª5wĘªbž›¿ÉÝ¿1ú0%é¿z&'Cµót{©üiJÂDè‘L‚Ó(]}ÁåjºP‘bŒè\ÑàÈù¢ ˜Ù&—ÿC—Ì­¼eqQü£Ç½5ý*Ïdð o”ð^)“]õ/׶!ƒì£©]),É5+V»¿€^ö¦ƒl| ƒfN•µ­¾¯«”oýZKåÈR˜ý¦ “/_&¢mk…³
-¿ „oê›GçGK›ùA=*R-÷ã¢óTçÕ.…¯ õbSæy2‡¼1Ã4kÛÝ`I˃ž!wW¡æîî}¬BQáØO;Š°$95•èËA=¬eÿµíj*Ö@òf´Ã#Ê܆OÇ}G‰
-¼ýçÿû«]çÒ©@ùøš>Žœ¡*GqZÏ.õÔЃ%OdkèÊ/¾ƒëánb~äÝêøŸ†'‰Lƒ)LQ,ó«Ò3*HuöQ’õ’¡Cg9Öñ¢Ú\£Óá+¬Uêe ï¼Ù0Ä,å>G ã;ˆÕÏ;è’!¿^€x´¶‚LÙ÷ +϶åI{£ŸÞ-½æ1î âr÷Ïú-½Æ(ÁUü²>]¸ëì­›'½ÖT°RÔ^éµvf…©Ê ý6Úuµ"ŸÑ5¡lñôWÅŽOXý ÏmJøóð'sD¼a@÷S}6·iT“*&ßàËæ…X‰˜‚—BÅöz^vøòõävp¹Œ¡)"SÎ(? èO²&Xê4½¡ìxB19N̤žó§•eÉv•ÙV(5â(ýé 86>eßil*ƒÑGõê 5¹+fr«cC/?
-‹†uÈaÆzþýK¢ÀÁÖ>ír‰;ÊÓ£A¨2ìʾ 6}ÌNÌíÐ’O©˜½I ‹›÷Ao¡ö,t"€{‡zlB,žbƒÈÒ#W«_ì]“aëy±ÃXÅ”D(­Ùz@jaD ìã‡q]n]ä
-ÇËÒ¼ 9Æ $Â`A2ÕHºÏ‚ ðSƼøâ ô
-ëA Ò‡ô
-ùÙG•ÄJ“†šbAp-œEÅQ<Àƒ¸nÚ'"#}ïâpdPEOöEGÆwœ¶
-rx¹67ÐioǽºÂq·® '¬¥†•±Éæ^.~;ŸÒNb?(ü:0)%RÝXK*g…O5+×­é;)³ IãoñçYí'`i„Ødtòü,“Ï}2¬ìʜًdûrw$B}•mFÁ¸’×V„ýüu]“‘Ž"éQß {ô7!AÅbY2ý©Õ
-xÉH’Ûè¤NÚ«à‰Vc‘u76ŠB­~2 º!è,Mrv–rZQéwQ|äGyÁVôI…R=6‚™Æ.!Žr%Å \4äÁáý€ømSA¤z›¯>ÃåÙgÆÄ*¸,h­+n‚ô¾ÈăCM2|5Õ´OŠJuµ•Üvm²\&Ûoßù-öj_†çÊŸå ìa£Žiˆ“?å`æ?Ý1‡~GÒß¡w!×Åûzg;×/Ã?páµQT¬ïSºÿN<ZäÁ_'Ü´Š¯mý
-¢EÚ\_@`
- àGÑc4Žg=y Ø©Îˬíµ„E™÷â€Æ¨ŠzêiUâ©ÄÈðÌçd$%BóßþÎT_J4†-dE'0
-ÛÄ™19Ã^ѵ/Xð¿Øôs9ëAÈã*4‘dãô4(§eÉ¿_€Z§{Üœ)_Ç‘à´%­Ñ±ì3X!ÙŽ/˜k»€D‘>Á’5HaMð…Œ{ô S¾eAyVI>˹Ja²,È"o2Æï1¥Á@#ý“‰3vª²ð}½×øÝ"Ç6ÑŸ·£(Ð}ÑÀ;rQ,C§9q Xá'Q…gÆÿ3^&ÉqÜ@=ïÀ00%†µ½ä-´¥î¿õû@¢©îB‘R8¡V¦Ì?­’®i¼‘Jm•p.`²—0pEž"*äÍÊ;˜!0Ê'd󓸗¾™ˆ)“¼* Eã„}FNJ0YeI”ï$^g’ñyÝöN…7Itð¢„Gµ¯urãRYŒ›Ê ¬ç{-™¿ãåð¤LïÞêRôä!Öi††¶Hµ\ü#O"w•4ÉxPyŠYZ 7[±·bövƒÙÅÙdu|fFQ˜Ý’½We±!3uÒš=$¶&K“n 4d^>ËSxø£K ¥$í¾J¦`sDÈo…$×ÀW{+
-Z9}Þq~â‰ûx¬qhºvn1ÁE$n~X’‚Œ 9e›Ê×üCØ<<à-S" /ñ<3
-Þ´2a){JgSyéäK‰ï„¾uÍ~}<ïe(2 •éûhšÏ—ÕOÃýàa¸¶ûVe4ü6šööV g
-U ûæŽd@‡_à ‚b^ö‹³b…ý:¹Ý”pѵ)·<¶z*zéÜ\Ê"•@tÐ/è¹'\ÌP7¿xäýËÂNHž©
-c¸·Â< À@Ìr¢H²ûц\ÝZ§(ÿ)Ív§-µðƒßªáwqÚ)™XSÁ/öÅùq(ï–ÞƒoH0P:Ôä€J¥‘?
-WÃð<YsHU Ú­.㜫IKŸsâE€óE’{Ÿçr
-$êXµ7Æ^&n&Ï¥,LlË+æCѧE9y–þ2ÏŠQA€ÙN¡“
-xsŸ‰=ãP¨¹˜§¹·±gâÏ8ùxå†ÌËEº]ÅÃbC utc|ph4+îÇyñÅ×v^í5, 3uâ@ÚÆøuÛ¸s²‡WÕ•ëĸ[:Ì’€ÑóÎJOáÑ=¢|Ï3
-@ÃC¼ÕyÏYiß­QN²¯Œ 6nôkÍÇM €¢ÃÙ¦ðz
-#™
-†¶NsÕ„#HÈêüáZ¢NP
-¼áí:¸‰Æy5›à&AK½$54,JYËÆpDëL|µøöR$_ŽÜ£Š8Â^ëïP’ð”ìïJ`&‚Õ˜Š
-Z™ƒWÏë^¸Èæ¾Oc 6)7cW‰að$xéqï¥7%¶‹×¢Wûüç°™“ó—"q˜&ãrä+{_®~R=¡HË
-ÿ?‡)Jð6 bç­'Ž_ýäFÔÃ[Ú$µ„$–Z;15ÒÍFzsåùX%0N \Ìá‘ÇZ%x¢DÌ“Îûp=š‘á‘vì¾ã‡¦òãuDì`~ßUe®!º›8¤¤Òe\#À÷~åÞ&G`éV…¦)ǯ*\ ªÁ÷¶ÏÍ÷ä\ÒAt>lâsD›:ÖCà `¡Ûå(L”Ð?ô™ÿoV}*ñ¶’/NCˆÐ3;ü¹9Íe˜_nužø¸’´Íл¶Ø¹¼£¼ÓGc¯ÿ¶èÈó6m~(9~STø“8j¯‹¾Qh¨ MnYy±èzÆŠk†¢ÒÑ€¯v@Ö)›\Þ?ð5Þ=/Ãl0QX
-pÅø¦à“
-#í(n Û«&š
-ó3‹m­;Aórç>ýÔï¿:NçK`¢#õ@T>¦4!¡È'/¾t&yëœæµ ð(©Œ¹(«•á,^pRÆßÇšjŠxF²… ANõ¼q•)—ÌÔTÝÒã¯Áo®…'šSx*aE\eC¶ÊrÐ×"t¬óÃàµÎòó¦èyç‰áS¬Õ
-ƒÓЋDQõXýÄàO¸ ù@‡Šç>Ð!}€ú£ž"ÝðØ¥õ':dÈzB
-ìˆÛ0ÜMuˆfÁP/™Ñ¿ÙpÃÁ¼D… Òèž þ•ô†Ž xˆA ½8íRÍô‚òÚÎ6SwQN¸±«ñ=cl@Z)#Ý­CA@éñ^‡ÁAã\˜A à8Gë[5™(~N8JÑŒá€ÊZF¡öó·áÁ -¢;Íà«Ý÷Á d20Ó¾S  e+ÞMB_›Ž°M¸Ü@eÆä—–£ }&ÁŸÈT¼;é€2wÝtðg`üí5ð ˜6&Ô‘ Ç6&§€GÔRÃ4ìE2Ž ÌyÊ«ÓAÌ"æôt(™„ÛÙ[)"iÆîÖIJÈîX“ü^—Bz žZw€bcú(òðæ„ûZÄótf¬¥Æÿ3^&ÉuäH=AÝ¡N@Ã<¬µå-´¥î¿­ç@€,fFŠŸ‹6k•$šb<Ï­Ç:ãðÄ  úT§CL¤y¶¿€®›æˆÄL ­s
-” 6Yo ÀÀ (²4÷}cˆ¿/Bq½c>ìjèkP¯Íh¾c¤Æ˜Š…&ÉX7¢#õDä2V»‚!ðÀSo†ÄØçBªAY÷Õh*!Ž "Íó !ÙëhÃjìÙ< WÃP–´_Áðön –)ŸOÝ@Ì‘öLV©ÅÖ¡Îrlåœcl¨Á@“¶“híÄÔù+ÍÉzö)¼§*$2‡8êIlÙÞ“ ²
-Ü€AªxHÅQm0£LÉA /MncðŒ˜Éá»Õ`äj ÂnІb_ÌíÊ/ùŒÖظ!"õdüƒç]‡? ‡×ÿ>­³>Eš B©CÒŠ
-ñ'ô±êS¶‹Æu§–˜äßý¥Ì£c ÎSyF!ú=ÆùMÞô7OàB98I­û¸^¡ip¸Èó©(“ÇU´?ŽŽt‹<•ˆ   23ç>ï˜8A¯gÐyÅÅîþ5ÞVFƆвsê§ÄŽLoŒû¡þ+r¥´šJÆLRæÁ§ƒxR¦o w$CFB¢Âø°Ðã:”Θ d1©,W¦v…Åw.¥¡Ù¹M£”fôèÝAo8ädHZþ¤qjUÍ!FKYj¡±fÚìè =HjRn­•”ò”¢HNž±ÅTK.þ2…SGiºÏ^ˆ7‰_È·èèOÅ´Ù*ä,&ŒvS­Úh^p T9zR ê‰Ò´"£8
-2 t(k°ôÊÕ!—D«q>Åè¯Ò‘œXeŸê¤m bžéD™¤¬…ÀÄOeÃqJ…¶']2SÕþÐ,¶×½¶{*G –˸Ë0—ìl¶ *Æ°G5Þ5-í-Jüù˜íj#†Y·slº½åDÕDf>yƒ>b’ØýÜæÑ°W v…J¡àMƲ¯à:ÙÒbe(yH›NÞ¾‚V
-]ï@ô‹›77þ:\”#’}Œ
- ò‘ÜÚ yâ?2â›Ô·Ú ýbÿ©(øµ·6~Æ+’ïCók/’Y'.Í­½äV{=Ð¥öj7YK)êÅ­½œ*ð˦—›OµWGGÂ&I\ñë½@’HB
-¼Ù‡ø°ˆ="ιŽC¤–Ñ8lMçCè LãêÏõ5Q
-r^<)Æ3°¯Ô× ´BÌ¥Vƒe‹Ûv¾c>^™NbÂXÝ<íÕ)¡\Óy«ÚÇÈT+½ º˜Û»û¹W@×þøá‚è?X4‚#»·
-›¿÷§Hå\o#€Ó'Ū1÷2ÐæaÈã¡!QóR15!;ûRÏb4^ÚÓ:xþÌœz“x’Ý%®Å ß_bU:È‚ÿê®7¥ÐÕ*¢+aDÁðÔ2nf¦Da;•Ò}¤ÓÌé—nüÕ3‰^ﱃãG„|Õ˜ø´N:!úSú)GU_Ö•®ÐÞðU̘vÇT‹ÙNJ°rD¿H…ÈFŠÍö)Ü’„Á»ä´—i•
-‚gµcqä Ç[‰Õƒ\(úëä’=¬`¤:Çë o
-‚°bC!:*Ìo¬Â‡âò€õ²…ÌËX8Âm ¼B'´®X ÄÏÂ*B@˜+lâ•[Ú$ñçž–Ÿª³Î‰Àr®ÒÆù] { øž¾©Ê”'™­S5,p—lÜ­o÷"ôÈKÿ¤3ÈC¯Y aþá¯n+o›$2äª“Ï jhãY/­ê Aþª™¶òš AHÀ‘p¶[À”ˆÎ²£ž/åõiún¶í$8@’EûV‘„rÇÄq
-[‡†Šö½Nò +ÕŒ¤Ú“‘ÝÏO]A—
-
-X²SaîSÚØ»A˜b5Ø„Ê÷ó)…ÄÉ`†0O­hô…šQ.{rAEÈbqã%í…‹)±õ‡˜*jfpØí¯Ã8 „$¤4ÏŒ’ù"4hcä6ds¨øãe’$ÉCÑèq‚4Îú´Ô-´Íºÿ¶ß'Á…;¼+ÛÚÚZ)>þPׯz·HQ'!²ÆøÇÓ–552@\Ö‘p Ç‘EO‹%{³+{L%|ºá,P*
-Ýx¥©¦W8EßE<‡º<Î’“©(°ÍÏTldeà‚^íÆ!¡±-½ÍÚÍô©Å1$¹E;Fªšƒ¶!ÖŽiIVùíuñòYž0’Ýi^JìS,.›O³ÆÓ1¨2ÈŸ<ü¸°> —\Ð.#¸¶f{É/"sƒ~½¿„m‰ £ÙË!$èŒNÛò€Å
-Xñ± kq'¿‚kH>ñ?ý½ 5Ú^úŸê²&Æ%¼™…çƒ-8PeO: ÕíÕì×ä7”:Ùæ¤XÄÎsä£>4dŸ³èvžÝhK£Äf•¹ó#%pË _r¼q¨ ѹá!ý¾™X#™Ý8”`ƒ‹ WB¯î¢¨MÖA±•oµ³tM„¤¤L:À)ÐD´úYoÖ…R¢‰þ
-(üTÆÀ6Š~C.¬·IêG»hz®\Âkéý¥Ï"ŠÀÚ j³¤Ž] J™ ª}Tì.U6µÃàé¨3Öo"ánAÄÑë±ð àݹ¼<Y½y3í“4j”<ž 5â¹ÿ¨šïB~1Ø帺
-ys#f+z„ovè»}[‘ÌyWíf“:@"ϱ2gw£<)Wì'̘& už­Ã* …I„º!ÌÉ¥tVä¿ãw9©ž‘'\iÅèCvÕ¶®ŠïuÌý” â­ûÃ4?JìS©­¡VÒÓ9Æe£ÖUôè¶öÜ(¿+paýëxÈ_ZqTTöóô€] ±åå»L@;q¾ ©Ô‡’·úk›Úü5µáÂiŒŽ÷ýí9V»”¯e˜X?/rìÿýs?)ºF’o·èŽ{Jä‹b׃­Û¬,!û°º]¾B$b8EåS£¨cACJ‹
-hŸˆ‚CÚüâMYî‚$·°úÍâbæ1\s,. éoÝ*ØÙÀ… 8«
-——¨¨ÖÈ~Þ%l
-dЫæ”ا„)H‚°ŸÎÁÌDÉc~º 6yÈò÷µÉ¯R¤’.Ãnnsâ—ô[ž«ßa§äcRö¥[Q#Ñ) e|÷Ë» Æ J“½/–Õn’w#¨É¡öt¾télmÀêÊ©§ñò:L‰ÂIAÿë6Ý·I]JìS—‰{ç\ps¿Í Σn(¦}4Î4|Wyù»@»¡NÌY ù¡äcR¿Îêñê©á2ç¼p ý‘øuÉ·’¼—1®Ÿº}ÿù>›/2~ ­QL½8'ý¶"%¶ÖaèM‡k0 ·ù)ËÕ94mšx ù jb”0…Ê/8[cœw²_¡K³s_1;‰Žz%š*E(?N{V³ Ɉqt[Þt ±ð]˜Ù®@¼¥µJrÆñ¤Aý#~±ì/ §ÉÖ1ŒòtŽB@¦­þ]è`ÁMm¬ÿ¦`¢Ƕ4Ýs(ÉÊ*S׶)äÀI
-%9r¦ôz4gà«„˜Ú³,ÍÛ8˜ðK&”•)œs˜]¿@;Ñ>%7Sq¡.ÇHIUŒÊë‘ûQ„:9
-ܦ\Yöé3rú¦k `#oAíS²4¨öÖüs2ù±a±36ãÚó²4°7y¯"±aY:7NÑãÿUÒÁqr¼ÅèÂí*·;v¶¿—ëÊí÷¢;ÈH~¤ËÌ}üGL¿Äãök‘Ãí” Ó]ÇwŸÚ 5Øj ³–ñÄ튡)T0š{ò¹9Tunìq¯V:´'ó„
-’˜J˜×z:‡û3CŸÛ¯ŠÀŠuÈçU7r
-Z á`6ñ»=;Æ–¢FßÖàïEA$CsÀÛ¾Fæ±lyÁ%Ǽ?¦o/é¾G£$e
-ÚA
-­<~9‰´ÈL`%íÌ1º¡\fóBH°ËXD^¼¯]¾FÉ稽ÞJD+û¹ ¸_ Mæ±B
-~Öœ’o+Ü®ùˆzkXX¢WŸ îCºCAȧÿîŠj2 >„ßÝ%• {±ÇÈèy7î‰äcÖb–„õÓLc´ÓÞJçÓ¬>NiÞñN
-èriux8'i”ŸSAŸðò±aç.¡W“ÈìUx&å‘¡·?¥G$È W ñȃ¹¦™€e‡òx~´Y±Fq¨£œþPj…>Äÿc¼Ì±ã¼±(¼î¡b<˜‡°2íè8£Bï¿¿‹÷PTÕjÑv`Q—ø7Ü«òãíz"¹Ï ^MŸ¸vñë<ÞX„Û2OmË™œ^.V\k®õêuù±‚
-²²Œc»J$r"óÁw¡”«¼ðƒ—vž|e~‡ç#Eäìx>‡É©Ü¾ÄÖwŠìF „71¡b”»©BÁø [œîC*^gjGòaÜbÏbAgæ5õ"VóD›°ªn•Žd¬€±w †5ôb‡ÙDäFÁä}¾
-ƺ¡!“ðõ뺤Z>(“)ʈíÛ ¨ÏÊ´2 Ôõãø¹ï€Tì2q^Ø56|5í
-¢Ü¡ã
-Ñ-TåfT;¢Ò~1&Œ*#ëNlV×L­H¸Ë.­žÁßsGt¿ö-µ‰OT±˜2U ’KîŽÀGd ?]Û.sL
-úÃàäå2 Ilø£È|Ñ'Ô!Oúãí
-ßÆ–ïú±ožá¸WÏ 3ð±Ë€2w¼ºl;É*$¬ó4r9€žL– ù˜x`3²poóÇ(³c$ŽNŽìÜKA0¶‘Fïk'‹hMµî-É•‘ϨU]F6’¦àl3â4ÏVÁ´rÈ‹æTùÞIÉÚxq
-í®¿ŠXŠ³ãÜäv2èÎÜw«pÝUªÛa:‰NÖŒêzËùÔYTŸ£‚„c¸ðâãät÷
-…Öpr“Dœ\¢ø^i_º€ph;G€ð]’„±>™N¸ý› "¬Q¦Ñ)¤ÀãxàÜÚàHñ}¸sH¡‰ I¥î¦BÐïÎåvÔ«'kK˜à¦¼ðvLÀF”ý¥çcK ±wÙå´:s3²C¤þZÛä®·by‡ZǦÜe*b"¢xÐÝ3Óòâ';&9yd¸•sf¸@°, }Ä°
-Ù˜‘Wĉq­@ŸjdQÙƸ±pª•Ù«‹”
-CÏZ7D^˜}(n‚,9ˆ 9»Â([é^"J}¤Iœdç$[•B6‡ð*mA&„1¤ðjÊÈúT¦dhãŒE<Ÿ“™[éØÓœo$H¬‹XùÕ«2l‹_QùâX¼iˆsvöx®ðòЩý¥gü¡(+‹½?õxäb.>œÅ}ÔåQ@&JÒÓþÒSm`Ö*Ï9K ¤·S…ù2ìg5I¼tê âCñÔñÓ9Oss½ÍeþºL1å£xT¦aËËí¼ ¸%hŸ]C~yèÔ×êÅ ‘.-n)ÊÈ8ï¢ê¿¼h/ Q¶>ü†ø8 ä¬É†xìíãô¡gÐçŸoóaW&ÌÁ3]›œâðßÄ´ˆY°K£sžW|Ìù
-Uë’áÖ¿QÛFmyè²1w~Â|~ç]zþ_ÿ} ·ÿüóö׿ož…ìå"¯—ûu‚Èþ“’JÀŽ®»¥¸\o¬üV ã›k‡Ÿú&H¾|H–ÙUâb 9díÄ‚àܨ¸‹Î)‰#ˆ?y¤ðIR‰éZóŸö%ô ílÊ
-†np²È¥¶dAfñê­ø"aq0|”'®ÅwVoäd¯ˆõ!,é
-Pôò€Yœ;9·~G`|åY0ëÑ $ÜŠ £ƒwœúÉ0ËÖBÈÌ(z`Æþ2eòFÜÇ™žE@3*f¿¬Ê.â&¶P'T f#:á/Z<@üá nÍ„‹Ú^ƒíQLKq«WTøƒNX¨Wh3K¿H:c¿üºÎ/‡GRpªß]6âú±?C·ó8è¾»ý­¤Ñ8¯)Y’ªÔFÙ£II´ëž[ð3;í ôñÄìW¥AƒÝëzÌ£‚`î¹%¿
-î²u8DA-"ÅkÄë&æ>qMÌ÷Ƶ „oé“f”"êÇkTÑ.j—Z/€$”5å¾—¿ÿiõÃÖ9™Àó܈[ðmÛò¹-ƒÚ¹È0HÎÿâ GÏatX¿2bÜß¡#!†îUé2t¨…°c’Š"—lA‰ÚI7 ¨.}£ÛÒî°cÁØY²O9¼_‚žh”®ÛO)ê">Ù¥$®=Dº—ôºfZÐNÒ*ƒ"¸g,³m; Lôiò!ÓÍBÔ_“';÷ÊÜÀ,Ä{DÇÌ°%ÒÇj¥‚¬¶¶ý
-
-,m£W¬2¦Òæø
- 69pZÃÍâ4ûXZ-Hm:sš Òø+Œ)C]“õóŠ"˜N”«tò’Þá¥á–ó
- ðy¬PÉ)bÉI­TgÉÀ%ßÇJ6*í^/‰nË};íÓ@¹I=4™Ù
-h¾ÒÒ™É
-=LÏæ|¤$GÐ¥ Ї@ ôS¹ŸÅ̪Aa±T
-¦îlƒßßöqÕ¼îÌì7T6f'D{‘·Üª= 1±`R=
-Û =1UYj–v†òÔÄimꜿzjƒ¤¡úR=Ž
-!‰
-ë^xR"ú ~
-åוL›öi{â$êªSªô‘RëÎSey #pQª~‹)®*ÊE‡åòŽ*«t DÃçå UÖG“4ŠSnÁ–¢­YÑy„ÐQ ugSú6„X~÷ªî¡gGWJ‘n¡è´üöM(¦bhØú$ëç­•äŒð,ÐÙ ‰3˜¶#<šøR¢Ñ²ApJY„ð5ûˆl·I@ƒEåAøÅA¬eØkÑ0ÝΙ’Lô-ëLľ´v¢š¡ÐŒlÒçä\U1¼™ ”j|LÕè‹0jÆB®¡¬\ym2kCB–6sœš„Ö㨲®hyNq
-úâ쉼ÈòÞñ¤BݽÒò¡À­!÷`ì4cSôó³R8ó7¥îù¬„¦*¨ú³N8=ÈjAÜæHL
-‘®â§ƒà ÍV)õrEéǸ‚9-Ø,Ðνç; l öi;4Ù MûBž1W
-FÌÜÃu~a“d.Jô¾@h¬CÐÄaÐuj´=Šâˆß½2‡Ò/Üò¡ç "†á%Œ×x zNg¸.SZžÞS˜b’Jc1*ë:çR:‡dŒ8¥II—¯Ö hB®´‹£†”õ£O² ;U}©0ÔOpŸnÀÈvë³m;)“NhèZYŸ‹Wбçìe„Õþ.HÇAÑã’ÖŒŒÑà|›½ÅIÓ¾„·ŸË|ñ!…ˆÑ-ÍÇ-¾8j}(ȇ¶_ zÈ_mOÆc ì
-c%á¯#"ˆ*Ù锂Ýo cyH¡Ldn•Ï¯ï‚^™ùûúþú[½€¡†ìöÜÒX…¾vĉ×ÐüŒ
-Ú „K`ö|Ë?6¬O óXA
-|qµ€°ÏÐ&9äLjI“eð¼uI+—fd°^í¼(ˆEÄæçè;ʃÏV¦Èó€YåÕÒÄ2û¬¹ê\réÇh¹í  ÆSbx:â(a±0lÈu\‡°€²Bxh¿gݸ.mr¦|Ðw’£7âÁæÀ™L<VcïÆ„}"DVyüï¡ê† ædÛÊÔp–û0]˜Û6ÊA¢8„¤8
-Yø`
-H‰Ò÷wVÐ÷u6PprqVà*ä2P036P°04PÐ1ŠR¹Âò€âúîÁ
-éÅ@ù}·\—|®@.W_ ¦@.€
-8;Z,'4.>1P%!M&K+3#%BQUs'$E0Y0B0&\W^Q'U_e6G+lVS/qL]DoKd+#,B3l$)2#h
-WO$l_LsNPA]VJhAao?t6jF+JPF'VPY"=1*FOLRDK7:]\)gY6A5L[iQ.4=erIAU-IU
-s02KkN?e>G(g0)U(&q?aUtE*5Z-D!QD+#6GHTL.`pUUN4fK=Ftn+F*$[eHZ3&F;hY
-!_r)C8*3Y$[bn:/qKQj]YQRNaB(dqm(uHjq,<G*OT`cmS(YH%,O$nqaB[#>!.G45$
-%'@a;dFr'sBZ<,pa:tIrqEdr&@bKc"qLhFJ1O6tX<ULUcQfYj>4'I2pXB[b03BSe*
-br!K)$sl__n#RNE.Y2$#)>7//rB]kA`=X:Lq>>2RcZ:D+;L':,<@M!s+(P1<c4dQ1
-i\<goA+/V'5#9C&FOhlR;0HX(nPp,4IlZ'9k:Oe==O1"h-?Kg^)-q`XK9-*_oRVtP
-g2T8.\c/\e,mq0lHT!oAs%XNE&`72*Gth+(dSr+M$/p!mC@u0InS4`KP?'Li1++ND
-OcEcBj5b?1a.Q>):sX;&1UNHmCJj\S[00N^V?'7EOC!u3gIG=L7;>hr9;VHX4A!g2
-j.=GhQj:7r4g`[,Nh=$[9r%QLR#i3CiNKonmo:3Ak\*L&kQ_nu6aWUQj)`HO4&#el
-R?JrV$/N[I1Z[kI;#71*KnmPk6]dA2dYVKKnNPQqB=tEKNa3rOeI!hSTS":jT!T(U
-D5"k"S*iY>($I^YJ);0Br,EljcDT@8Glf;5rS;E4HL(7Pj?5!W4<\2fMr5+@]TaeL
-,=m$`H.'b\VF=-_0&o-kB//#s=:=G"-%k`\$cr&!Q4YJ!S)j/dbP`C@QZi0^pi2tH
-mgD/F>Ib=-lI[^J9BQWAol<t@PIfV86:RMo0BS,CK[,dAHb"ZaL_t,9@<*NENqW4J
-\B`(Bd45eBlQRObMaTp'lS_E)U<=.8-dfPuj`HLaD^UU#/oHd+]rN(c8QVEnf9fCN
-c!\C5HBiJj9tIU,oCn)hGCn<#prZ0<P-#NTOhBEEV%maTkPVb+r6QU_*F6P6V3!_Y
-#a2Y?f4Jr=bfV$%.99`(I_`QP%:f42gr8?fYL5e@dK81,B.#'u,4_;uZY"1.O0q*c
-J*ZJ(W1;'Zi'=Y"/@bnG56Cmo^g2<~> endstream endobj 13 0 obj <</BBox[0.0 630.0 810.0 0.0]/Group 295 0 R/Length 1678498/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R/GS1 296 0 R>>/XObject<</Fm0 297 0 R>>>>/Subtype/Form>>stream
-0.793 0.801 0.129 0.016 k
-/GS0 gs
-0 630 810 -174.639 re
-f
-0 75.361 810 -75.361 re
-f
-0 0 0 0 k
-q 1 0 0 1 758.8652 63.3223 cm
-0 0 m
-0.44 2.19 l
-1.396 2.19 l
-0.44 -1.294 l
--0.427 -1.294 l
--1.397 2.19 l
--0.441 2.19 l
-h
-3.881 -1.294 m
-2.969 -1.294 l
-2.969 2.278 l
-2.072 1.94 l
-2.072 2.69 l
-3.792 3.395 l
-3.881 3.395 l
-h
-5.409 -0.823 m
-5.409 -0.688 5.453 -0.57 5.541 -0.47 c
-5.637 -0.375 5.765 -0.324 5.923 -0.324 c
-6.077 -0.324 6.206 -0.375 6.306 -0.47 c
-6.412 -0.559 6.468 -0.676 6.468 -0.823 c
-6.468 -0.981 6.412 -1.103 6.306 -1.191 c
-6.206 -1.278 6.077 -1.323 5.923 -1.323 c
-5.776 -1.323 5.651 -1.278 5.556 -1.191 c
-5.456 -1.103 5.409 -0.981 5.409 -0.823 c
-9.998 0.646 m
-9.998 0 9.881 -0.496 9.645 -0.838 c
-9.41 -1.183 9.076 -1.353 8.646 -1.353 c
-8.213 -1.353 7.881 -1.187 7.646 -0.852 c
-7.411 -0.522 7.287 -0.044 7.279 0.573 c
-7.279 1.455 l
-7.279 2.102 7.389 2.595 7.617 2.94 c
-7.852 3.281 8.191 3.454 8.631 3.454 c
-9.072 3.454 9.404 3.281 9.631 2.94 c
-9.867 2.605 9.988 2.124 9.998 1.5 c
-h
-9.088 1.587 m
-9.088 1.959 9.047 2.234 8.97 2.41 c
-8.899 2.595 8.786 2.69 8.631 2.69 c
-8.345 2.69 8.194 2.356 8.176 1.691 c
-8.176 0.515 l
-8.176 0.139 8.213 -0.14 8.294 -0.324 c
-8.371 -0.511 8.488 -0.603 8.646 -0.603 c
-8.793 -0.603 8.899 -0.522 8.97 -0.353 c
-9.036 -0.177 9.076 0.092 9.088 0.455 c
-h
-10.807 -0.823 m
-10.807 -0.688 10.851 -0.57 10.939 -0.47 c
-11.035 -0.375 11.164 -0.324 11.322 -0.324 c
-11.476 -0.324 11.605 -0.375 11.704 -0.47 c
-11.81 -0.559 11.866 -0.676 11.866 -0.823 c
-11.866 -0.981 11.81 -1.103 11.704 -1.191 c
-11.605 -1.278 11.476 -1.323 11.322 -1.323 c
-11.174 -1.323 11.05 -1.278 10.954 -1.191 c
-10.855 -1.103 10.807 -0.981 10.807 -0.823 c
-15.397 0.646 m
-15.397 0 15.279 -0.496 15.044 -0.838 c
-14.809 -1.183 14.474 -1.353 14.044 -1.353 c
-13.611 -1.353 13.28 -1.187 13.045 -0.852 c
-12.81 -0.522 12.685 -0.044 12.677 0.573 c
-12.677 1.455 l
-12.677 2.102 12.787 2.595 13.016 2.94 c
-13.251 3.281 13.589 3.454 14.03 3.454 c
-14.47 3.454 14.802 3.281 15.029 2.94 c
-15.264 2.605 15.386 2.124 15.397 1.5 c
-h
-14.485 1.587 m
-14.485 1.959 14.445 2.234 14.368 2.41 c
-14.298 2.595 14.184 2.69 14.03 2.69 c
-13.743 2.69 13.593 2.356 13.574 1.691 c
-13.574 0.515 l
-13.574 0.139 13.611 -0.14 13.692 -0.324 c
-13.769 -0.511 13.886 -0.603 14.044 -0.603 c
-14.192 -0.603 14.298 -0.522 14.368 -0.353 c
-14.434 -0.177 14.474 0.092 14.485 0.455 c
-h
-f
-Q
-q 1 0 0 1 40.6324 65.0269 cm
-0 0 m
--0.276 -0.305 -0.632 -0.54 -1.073 -0.706 c
--1.507 -0.87 -1.97 -0.947 -2.469 -0.941 c
--2.911 -0.941 -3.293 -0.845 -3.616 -0.661 c
--3.939 -0.467 -4.189 -0.187 -4.366 0.177 c
--4.542 0.537 -4.642 0.956 -4.659 1.426 c
--4.671 1.68 -4.656 1.945 -4.615 2.22 c
--4.439 3.425 l
--4.285 4.454 -3.95 5.248 -3.439 5.806 c
--2.932 6.365 -2.263 6.633 -1.44 6.615 c
--0.735 6.604 -0.206 6.394 0.147 5.983 c
-0.5 5.571 0.68 4.969 0.69 4.175 c
--0.721 4.175 l
--0.735 4.586 l
--0.775 5.104 -1.037 5.373 -1.514 5.395 c
--2.213 5.424 -2.668 4.961 -2.881 4.013 c
--2.955 3.631 l
--3.16 2.22 l
--3.2 1.897 -3.215 1.617 -3.204 1.382 c
--3.197 1.008 -3.113 0.736 -2.955 0.559 c
--2.801 0.389 -2.583 0.302 -2.308 0.294 c
--2.043 0.294 -1.749 0.383 -1.426 0.559 c
--1.176 1.912 l
--2.19 1.912 l
--1.984 3.028 l
-0.47 3.028 l
-h
-2.095 -0.837 m
-0.698 -0.837 l
-1.639 4.63 l
-3.05 4.63 l
-h
-1.83 6.012 m
-1.83 6.247 1.903 6.438 2.051 6.585 c
-2.198 6.733 2.373 6.806 2.579 6.806 c
-2.793 6.814 2.977 6.747 3.123 6.6 c
-3.271 6.461 3.344 6.284 3.344 6.072 c
-3.344 5.836 3.271 5.644 3.123 5.498 c
-2.977 5.351 2.793 5.278 2.579 5.278 c
-2.363 5.266 2.183 5.328 2.036 5.469 c
-1.897 5.615 1.83 5.796 1.83 6.012 c
-5.945 5.968 m
-5.71 4.63 l
-6.416 4.63 l
-6.24 3.558 l
-5.534 3.558 l
-5.064 0.794 l
-5.049 0.632 l
-5.038 0.405 5.13 0.294 5.328 0.294 c
-5.388 0.283 5.505 0.287 5.681 0.31 c
-5.548 -0.808 l
-5.343 -0.897 5.097 -0.941 4.814 -0.941 c
-4.409 -0.929 4.108 -0.786 3.902 -0.5 c
-3.697 -0.205 3.616 0.184 3.667 0.676 c
-4.137 3.558 l
-3.52 3.558 l
-3.697 4.63 l
-4.314 4.63 l
-4.549 5.968 l
-h
-7.915 0.397 m
-10.444 0.397 l
-10.238 -0.837 l
-6.254 -0.837 l
-7.533 6.527 l
-8.974 6.527 l
-h
-13.498 -0.837 m
-13.475 -0.72 13.468 -0.58 13.468 -0.411 c
-13.152 -0.764 12.796 -0.941 12.395 -0.941 c
-11.973 -0.941 11.634 -0.789 11.381 -0.484 c
-11.135 -0.183 11.021 0.195 11.042 0.647 c
-11.072 1.235 11.296 1.691 11.719 2.014 c
-12.137 2.345 12.704 2.514 13.409 2.514 c
-13.82 2.514 l
-13.88 2.955 l
-13.895 3.175 l
-13.895 3.469 13.777 3.616 13.542 3.616 c
-13.218 3.624 13.02 3.418 12.954 2.999 c
-11.557 2.984 l
-11.586 3.502 11.8 3.925 12.204 4.248 c
-12.604 4.58 13.093 4.74 13.674 4.734 c
-14.21 4.723 14.622 4.549 14.909 4.219 c
-15.202 3.896 15.324 3.462 15.276 2.926 c
-14.82 0.148 l
-14.805 -0.132 l
-14.795 -0.367 14.82 -0.573 14.879 -0.749 c
-14.865 -0.837 l
-h
-12.792 0.177 m
-13.034 0.166 13.263 0.272 13.468 0.5 c
-13.718 1.646 l
-13.409 1.646 l
-13.145 1.636 12.928 1.548 12.762 1.382 c
-12.594 1.213 12.498 1.004 12.469 0.75 c
-12.469 0.559 l
-12.469 0.449 12.49 0.357 12.542 0.279 c
-12.601 0.21 12.681 0.177 12.792 0.177 c
-18.057 -0.941 m
-17.595 -0.918 17.249 -0.706 17.014 -0.294 c
-16.837 -0.837 l
-15.53 -0.837 l
-16.882 6.924 l
-18.279 6.924 l
-17.749 4.175 l
-18.061 4.557 18.418 4.74 18.822 4.734 c
-19.3 4.723 19.66 4.543 19.895 4.19 c
-20.13 3.844 20.233 3.341 20.204 2.675 c
-20.182 1.9 20.087 1.228 19.91 0.662 c
-19.74 0.092 19.502 -0.323 19.189 -0.588 c
-18.874 -0.841 18.499 -0.959 18.057 -0.941 c
-18.836 2.661 m
-18.844 2.974 18.807 3.194 18.719 3.323 c
-18.639 3.458 18.506 3.528 18.323 3.528 c
-18.065 3.535 17.83 3.404 17.617 3.132 c
-17.19 0.618 l
-17.286 0.383 17.477 0.254 17.764 0.235 c
-18.282 0.206 18.591 0.578 18.69 1.353 c
-18.734 1.721 l
-h
-25.672 1.721 m
-23.262 1.721 l
-23.482 2.911 l
-25.878 2.911 l
-h
-32.933 2.352 m
-30.684 2.352 l
-30.346 0.397 l
-33.007 0.397 l
-32.787 -0.837 l
-28.685 -0.837 l
-29.964 6.527 l
-34.065 6.527 l
-33.845 5.278 l
-31.199 5.278 l
-30.89 3.543 l
-33.139 3.543 l
-h
-35.424 1.206 m
-36.63 4.63 l
-38.115 4.63 l
-35.807 -0.837 l
-34.484 -0.837 l
-33.867 4.63 l
-35.293 4.63 l
-h
-39.966 -0.941 m
-39.526 -0.941 39.147 -0.833 38.835 -0.617 c
-38.53 -0.404 38.31 -0.103 38.173 0.279 c
-38.034 0.662 37.99 1.095 38.041 1.588 c
-38.085 1.956 l
-38.202 2.866 38.474 3.562 38.908 4.042 c
-39.349 4.52 39.912 4.752 40.599 4.734 c
-41.098 4.711 41.488 4.557 41.774 4.263 c
-42.058 3.969 42.223 3.55 42.274 3.014 c
-42.293 2.691 42.282 2.374 42.245 2.073 c
-42.157 1.411 l
-39.423 1.411 l
-39.401 1.272 39.397 1.135 39.409 1 c
-39.438 0.507 39.677 0.258 40.128 0.25 c
-40.548 0.239 40.955 0.401 41.348 0.736 c
-41.819 -0.132 l
-41.631 -0.389 41.371 -0.588 41.04 -0.735 c
-40.706 -0.881 40.349 -0.947 39.966 -0.941 c
-40.467 3.558 m
-40.062 3.564 39.783 3.308 39.629 2.779 c
-39.526 2.411 l
-40.907 2.411 l
-40.944 2.606 40.966 2.764 40.966 2.881 c
-40.974 3.311 40.808 3.535 40.467 3.558 c
-45.799 3.249 m
-45.358 3.308 l
-44.982 3.315 44.681 3.138 44.446 2.779 c
-43.814 -0.837 l
-42.418 -0.837 l
-43.373 4.63 l
-44.681 4.63 l
-44.564 4.028 l
-44.729 4.293 44.891 4.476 45.049 4.586 c
-45.203 4.693 45.376 4.748 45.564 4.748 c
-45.67 4.748 45.813 4.723 45.99 4.675 c
-h
-47.897 1.573 m
-49.146 4.63 l
-50.661 4.63 l
-47.853 -1.66 l
-47.647 -2.15 47.405 -2.502 47.133 -2.719 c
-46.857 -2.944 46.537 -3.057 46.177 -3.057 c
-46.037 -3.057 45.832 -3.021 45.56 -2.954 c
-45.692 -1.837 l
-45.839 -1.851 l
-46.221 -1.851 46.501 -1.679 46.677 -1.337 c
-46.912 -0.823 l
-46.339 4.63 l
-47.808 4.63 l
-h
-52.997 4.734 m
-53.556 4.711 53.986 4.52 54.291 4.16 c
-54.603 3.807 54.776 3.326 54.806 2.72 c
-54.806 2.367 l
-54.754 1.309 54.501 0.485 54.041 -0.103 c
-53.578 -0.683 52.976 -0.959 52.233 -0.941 c
-51.8 -0.929 51.443 -0.816 51.16 -0.588 c
-50.873 -0.363 50.667 -0.055 50.543 0.339 c
-50.426 0.739 50.389 1.199 50.44 1.721 c
-50.469 1.985 l
-50.565 2.845 50.84 3.521 51.292 4.013 c
-51.741 4.513 52.31 4.752 52.997 4.734 c
-51.822 1.147 m
-51.822 0.559 51.997 0.254 52.35 0.235 c
-52.839 0.206 53.159 0.578 53.306 1.353 c
-53.35 1.721 l
-53.398 2.198 53.424 2.506 53.424 2.646 c
-53.424 3.223 53.24 3.528 52.88 3.558 c
-52.604 3.564 52.38 3.44 52.204 3.175 c
-52.035 2.918 51.928 2.547 51.88 2.058 c
-51.839 1.565 51.822 1.264 51.822 1.147 c
-57.246 4.63 m
-57.142 4.087 l
-57.532 4.535 57.958 4.752 58.422 4.734 c
-58.804 4.723 59.091 4.576 59.288 4.293 c
-59.494 4.017 59.598 3.62 59.598 3.102 c
-59.568 2.646 l
-58.98 -0.837 l
-57.584 -0.837 l
-58.157 2.646 l
-58.187 2.94 l
-58.204 3.341 58.058 3.543 57.745 3.543 c
-57.599 3.543 57.47 3.502 57.363 3.425 c
-57.264 3.344 57.175 3.252 57.098 3.146 c
-56.393 -0.837 l
-54.997 -0.837 l
-55.952 4.63 l
-h
-62.141 -0.941 m
-61.699 -0.941 61.321 -0.833 61.009 -0.617 c
-60.703 -0.404 60.483 -0.103 60.347 0.279 c
-60.207 0.662 60.163 1.095 60.215 1.588 c
-60.259 1.956 l
-60.377 2.866 60.649 3.562 61.082 4.042 c
-61.522 4.52 62.085 4.752 62.773 4.734 c
-63.272 4.711 63.662 4.557 63.949 4.263 c
-64.231 3.969 64.396 3.55 64.448 3.014 c
-64.466 2.691 64.456 2.374 64.419 2.073 c
-64.331 1.411 l
-61.597 1.411 l
-61.574 1.272 61.57 1.135 61.582 1 c
-61.611 0.507 61.85 0.258 62.302 0.25 c
-62.721 0.239 63.128 0.401 63.522 0.736 c
-63.992 -0.132 l
-63.805 -0.389 63.544 -0.588 63.213 -0.735 c
-62.879 -0.881 62.522 -0.947 62.141 -0.941 c
-62.64 3.558 m
-62.236 3.564 61.956 3.308 61.802 2.779 c
-61.699 2.411 l
-63.081 2.411 l
-63.118 2.606 63.14 2.764 63.14 2.881 c
-63.147 3.311 62.982 3.535 62.64 3.558 c
-69.034 0.235 m
-69.416 0.225 69.655 0.5 69.754 1.058 c
-71.063 1.058 l
-71.004 0.449 70.776 -0.04 70.386 -0.411 c
-69.993 -0.786 69.519 -0.959 68.961 -0.941 c
-68.45 -0.929 68.042 -0.779 67.741 -0.484 c
-67.436 -0.191 67.255 0.214 67.197 0.736 c
-67.145 1.154 67.171 1.665 67.27 2.264 c
-67.365 2.87 67.554 3.373 67.829 3.778 c
-68.269 4.432 68.894 4.752 69.711 4.734 c
-70.258 4.711 70.681 4.513 70.974 4.131 c
-71.269 3.749 71.4 3.234 71.371 2.587 c
-70.048 2.587 l
-70.048 2.897 l
-70.037 3.315 69.875 3.535 69.563 3.558 c
-69.063 3.576 68.77 3.19 68.682 2.396 c
-68.578 1.485 l
-68.538 1.21 68.523 0.985 68.535 0.809 c
-68.564 0.434 68.729 0.243 69.034 0.235 c
-74.028 -0.837 m
-74.006 -0.72 73.999 -0.58 73.999 -0.411 c
-73.682 -0.764 73.326 -0.941 72.926 -0.941 c
-72.503 -0.941 72.165 -0.789 71.911 -0.484 c
-71.666 -0.183 71.552 0.195 71.573 0.647 c
-71.602 1.235 71.827 1.691 72.25 2.014 c
-72.668 2.345 73.235 2.514 73.94 2.514 c
-74.351 2.514 l
-74.411 2.955 l
-74.425 3.175 l
-74.425 3.469 74.307 3.616 74.072 3.616 c
-73.749 3.624 73.551 3.418 73.484 2.999 c
-72.088 2.984 l
-72.117 3.502 72.331 3.925 72.734 4.248 c
-73.135 4.58 73.624 4.74 74.205 4.734 c
-74.741 4.723 75.153 4.549 75.439 4.219 c
-75.733 3.896 75.855 3.462 75.807 2.926 c
-75.351 0.148 l
-75.336 -0.132 l
-75.325 -0.367 75.351 -0.573 75.41 -0.749 c
-75.396 -0.837 l
-h
-73.322 0.177 m
-73.565 0.166 73.793 0.272 73.999 0.5 c
-74.249 1.646 l
-73.94 1.646 l
-73.675 1.636 73.459 1.548 73.293 1.382 c
-73.124 1.213 73.029 1.004 72.999 0.75 c
-72.999 0.559 l
-72.999 0.449 73.021 0.357 73.073 0.279 c
-73.131 0.21 73.212 0.177 73.322 0.177 c
-78.28 4.63 m
-78.177 4.087 l
-78.567 4.535 78.993 4.752 79.456 4.734 c
-79.838 4.723 80.125 4.576 80.323 4.293 c
-80.529 4.017 80.632 3.62 80.632 3.102 c
-80.603 2.646 l
-80.015 -0.837 l
-78.618 -0.837 l
-79.191 2.646 l
-79.221 2.94 l
-79.238 3.341 79.092 3.543 78.779 3.543 c
-78.633 3.543 78.504 3.502 78.397 3.425 c
-78.298 3.344 78.21 3.252 78.133 3.146 c
-77.428 -0.837 l
-76.031 -0.837 l
-76.986 4.63 l
-h
-85.357 0.235 m
-85.74 0.225 85.979 0.5 86.078 1.058 c
-87.386 1.058 l
-87.327 0.449 87.099 -0.04 86.71 -0.411 c
-86.317 -0.786 85.842 -0.959 85.284 -0.941 c
-84.773 -0.929 84.366 -0.779 84.064 -0.484 c
-83.759 -0.191 83.579 0.214 83.52 0.736 c
-83.469 1.154 83.494 1.665 83.593 2.264 c
-83.689 2.87 83.876 3.373 84.152 3.778 c
-84.593 4.432 85.218 4.752 86.033 4.734 c
-86.581 4.711 87.003 4.513 87.298 4.131 c
-87.591 3.749 87.724 3.234 87.695 2.587 c
-86.372 2.587 l
-86.372 2.897 l
-86.361 3.315 86.199 3.535 85.887 3.558 c
-85.387 3.576 85.093 3.19 85.004 2.396 c
-84.902 1.485 l
-84.861 1.21 84.846 0.985 84.858 0.809 c
-84.887 0.434 85.052 0.243 85.357 0.235 c
-90.627 4.734 m
-91.186 4.711 91.616 4.52 91.921 4.16 c
-92.233 3.807 92.406 3.326 92.435 2.72 c
-92.435 2.367 l
-92.383 1.309 92.13 0.485 91.67 -0.103 c
-91.208 -0.683 90.605 -0.959 89.862 -0.941 c
-89.43 -0.929 89.073 -0.816 88.79 -0.588 c
-88.503 -0.363 88.297 -0.055 88.173 0.339 c
-88.055 0.739 88.018 1.199 88.069 1.721 c
-88.098 1.985 l
-88.194 2.845 88.47 3.521 88.921 4.013 c
-89.37 4.513 89.939 4.752 90.627 4.734 c
-89.451 1.147 m
-89.451 0.559 89.627 0.254 89.98 0.235 c
-90.469 0.206 90.789 0.578 90.936 1.353 c
-90.98 1.721 l
-91.028 2.198 91.053 2.506 91.053 2.646 c
-91.053 3.223 90.87 3.528 90.509 3.558 c
-90.234 3.564 90.01 3.44 89.833 3.175 c
-89.665 2.918 89.557 2.547 89.509 2.058 c
-89.469 1.565 89.451 1.264 89.451 1.147 c
-94.878 4.63 m
-94.776 4.087 l
-95.165 4.535 95.591 4.752 96.054 4.734 c
-96.437 4.723 96.723 4.576 96.922 4.293 c
-97.128 4.017 97.23 3.62 97.23 3.102 c
-97.201 2.646 l
-96.613 -0.837 l
-95.217 -0.837 l
-95.79 2.646 l
-95.819 2.94 l
-95.838 3.341 95.691 3.543 95.379 3.543 c
-95.231 3.543 95.103 3.502 94.996 3.425 c
-94.897 3.344 94.809 3.252 94.732 3.146 c
-94.026 -0.837 l
-92.63 -0.837 l
-93.585 4.63 l
-h
-100.318 5.968 m
-100.082 4.63 l
-100.788 4.63 l
-100.611 3.558 l
-99.906 3.558 l
-99.435 0.794 l
-99.421 0.632 l
-99.41 0.405 99.502 0.294 99.7 0.294 c
-99.759 0.283 99.876 0.287 100.052 0.31 c
-99.921 -0.808 l
-99.715 -0.897 99.468 -0.941 99.186 -0.941 c
-98.781 -0.929 98.48 -0.786 98.274 -0.5 c
-98.068 -0.205 97.987 0.184 98.039 0.676 c
-98.51 3.558 l
-97.892 3.558 l
-98.068 4.63 l
-98.685 4.63 l
-98.921 5.968 l
-h
-103.933 3.249 m
-103.493 3.308 l
-103.117 3.315 102.816 3.138 102.581 2.779 c
-101.949 -0.837 l
-100.553 -0.837 l
-101.508 4.63 l
-102.816 4.63 l
-102.699 4.028 l
-102.864 4.293 103.026 4.476 103.184 4.586 c
-103.338 4.693 103.51 4.748 103.698 4.748 c
-103.805 4.748 103.948 4.723 104.125 4.675 c
-h
-105.304 -0.837 m
-103.907 -0.837 l
-104.848 4.63 l
-106.259 4.63 l
-h
-105.039 6.012 m
-105.039 6.247 105.113 6.438 105.26 6.585 c
-105.407 6.733 105.583 6.806 105.789 6.806 c
-106.003 6.814 106.186 6.747 106.333 6.6 c
-106.479 6.461 106.554 6.284 106.554 6.072 c
-106.554 5.836 106.479 5.644 106.333 5.498 c
-106.186 5.351 106.003 5.278 105.789 5.278 c
-105.573 5.266 105.392 5.328 105.245 5.469 c
-105.106 5.615 105.039 5.796 105.039 6.012 c
-108.876 -0.941 m
-108.413 -0.918 108.067 -0.706 107.832 -0.294 c
-107.655 -0.837 l
-106.348 -0.837 l
-107.7 6.924 l
-109.097 6.924 l
-108.567 4.175 l
-108.879 4.557 109.236 4.74 109.64 4.734 c
-110.118 4.723 110.478 4.543 110.713 4.19 c
-110.948 3.844 111.051 3.341 111.022 2.675 c
-111 1.9 110.905 1.228 110.728 0.662 c
-110.559 0.092 110.32 -0.323 110.007 -0.588 c
-109.692 -0.841 109.317 -0.959 108.876 -0.941 c
-109.655 2.661 m
-109.662 2.974 109.625 3.194 109.537 3.323 c
-109.457 3.458 109.324 3.528 109.141 3.528 c
-108.883 3.535 108.648 3.404 108.435 3.132 c
-108.009 0.618 l
-108.104 0.383 108.295 0.254 108.582 0.235 c
-109.1 0.206 109.409 0.578 109.508 1.353 c
-109.552 1.721 l
-h
-114.003 -0.338 m
-113.656 -0.749 113.257 -0.947 112.797 -0.941 c
-112.433 -0.941 112.143 -0.823 111.929 -0.588 c
-111.713 -0.345 111.591 -0.014 111.562 0.397 c
-111.54 0.632 111.54 0.86 111.562 1.088 c
-112.164 4.63 l
-113.546 4.63 l
-112.958 1.073 l
-112.944 0.823 l
-112.933 0.655 112.958 0.518 113.018 0.412 c
-113.076 0.312 113.168 0.258 113.297 0.25 c
-113.569 0.239 113.826 0.383 114.061 0.676 c
-114.751 4.63 l
-116.148 4.63 l
-115.208 -0.837 l
-113.899 -0.837 l
-h
-118.897 5.968 m
-118.662 4.63 l
-119.368 4.63 l
-119.191 3.558 l
-118.485 3.558 l
-118.015 0.794 l
-118.001 0.632 l
-117.989 0.405 118.082 0.294 118.279 0.294 c
-118.338 0.283 118.456 0.287 118.632 0.31 c
-118.5 -0.808 l
-118.294 -0.897 118.048 -0.941 117.766 -0.941 c
-117.361 -0.929 117.06 -0.786 116.854 -0.5 c
-116.648 -0.205 116.567 0.184 116.619 0.676 c
-117.089 3.558 l
-116.472 3.558 l
-116.648 4.63 l
-117.265 4.63 l
-117.5 5.968 l
-h
-121.396 -0.941 m
-120.955 -0.941 120.576 -0.833 120.264 -0.617 c
-119.959 -0.404 119.738 -0.103 119.603 0.279 c
-119.463 0.662 119.418 1.095 119.47 1.588 c
-119.514 1.956 l
-119.632 2.866 119.904 3.562 120.337 4.042 c
-120.779 4.52 121.34 4.752 122.028 4.734 c
-122.528 4.711 122.917 4.557 123.204 4.263 c
-123.487 3.969 123.652 3.55 123.703 3.014 c
-123.722 2.691 123.711 2.374 123.674 2.073 c
-123.586 1.411 l
-120.852 1.411 l
-120.829 1.272 120.826 1.135 120.837 1 c
-120.866 0.507 121.105 0.258 121.558 0.25 c
-121.976 0.239 122.385 0.401 122.778 0.736 c
-123.248 -0.132 l
-123.061 -0.389 122.799 -0.588 122.469 -0.735 c
-122.134 -0.881 121.778 -0.947 121.396 -0.941 c
-121.895 3.558 m
-121.492 3.564 121.212 3.308 121.058 2.779 c
-120.955 2.411 l
-122.337 2.411 l
-122.373 2.606 122.395 2.764 122.395 2.881 c
-122.402 3.311 122.237 3.535 121.895 3.558 c
-135.212 4.146 m
-135.565 4.546 135.948 4.74 136.359 4.734 c
-136.76 4.723 137.065 4.572 137.271 4.278 c
-137.484 3.992 137.594 3.595 137.594 3.088 c
-137.579 2.602 l
-136.991 -0.837 l
-135.595 -0.837 l
-136.168 2.617 l
-136.197 2.911 l
-136.205 3.323 136.058 3.528 135.757 3.528 c
-135.529 3.535 135.316 3.418 135.11 3.175 c
-134.404 -0.837 l
-133.008 -0.837 l
-134.36 6.924 l
-135.757 6.924 l
-h
-140.696 5.968 m
-140.461 4.63 l
-141.166 4.63 l
-140.99 3.558 l
-140.284 3.558 l
-139.814 0.794 l
-139.799 0.632 l
-139.788 0.405 139.879 0.294 140.078 0.294 c
-140.137 0.283 140.255 0.287 140.431 0.31 c
-140.299 -0.808 l
-140.093 -0.897 139.847 -0.941 139.563 -0.941 c
-139.16 -0.929 138.858 -0.786 138.653 -0.5 c
-138.447 -0.205 138.366 0.184 138.418 0.676 c
-138.888 3.558 l
-138.27 3.558 l
-138.447 4.63 l
-139.064 4.63 l
-139.299 5.968 l
-h
-143.742 5.968 m
-143.507 4.63 l
-144.213 4.63 l
-144.036 3.558 l
-143.33 3.558 l
-142.86 0.794 l
-142.846 0.632 l
-142.834 0.405 142.927 0.294 143.125 0.294 c
-143.183 0.283 143.301 0.287 143.478 0.31 c
-143.345 -0.808 l
-143.139 -0.897 142.894 -0.941 142.61 -0.941 c
-142.206 -0.929 141.905 -0.786 141.699 -0.5 c
-141.493 -0.205 141.412 0.184 141.464 0.676 c
-141.934 3.558 l
-141.317 3.558 l
-141.493 4.63 l
-142.111 4.63 l
-142.346 5.968 l
-h
-146.491 -0.941 m
-146.069 -0.929 145.734 -0.746 145.491 -0.382 c
-145.007 -2.94 l
-143.625 -2.94 l
-144.933 4.63 l
-146.212 4.63 l
-146.123 4.131 l
-146.454 4.543 146.836 4.74 147.27 4.734 c
-147.748 4.723 148.107 4.543 148.342 4.19 c
-148.578 3.837 148.681 3.326 148.652 2.661 c
-148.629 1.867 148.534 1.195 148.357 0.647 c
-148.182 0.107 147.931 -0.301 147.608 -0.573 c
-147.292 -0.837 146.921 -0.959 146.491 -0.941 c
-147.27 2.675 m
-147.27 2.988 147.226 3.209 147.137 3.337 c
-147.056 3.462 146.931 3.532 146.755 3.543 c
-146.509 3.543 146.285 3.418 146.079 3.175 c
-145.624 0.588 l
-145.73 0.372 145.921 0.258 146.197 0.25 c
-146.704 0.221 147.023 0.622 147.152 1.455 c
-147.255 2.484 l
-h
-151.499 0.662 m
-151.536 0.897 151.356 1.106 150.956 1.294 c
-150.551 1.478 150.25 1.65 150.044 1.808 c
-149.846 1.974 149.699 2.153 149.603 2.352 c
-149.515 2.558 149.475 2.786 149.485 3.043 c
-149.515 3.532 149.721 3.94 150.103 4.263 c
-150.485 4.586 150.948 4.74 151.499 4.734 c
-152.047 4.723 152.477 4.561 152.793 4.248 c
-153.105 3.932 153.256 3.521 153.248 3.014 c
-151.852 3.014 l
-151.86 3.249 151.831 3.414 151.764 3.514 c
-151.694 3.62 151.58 3.675 151.426 3.675 c
-151.257 3.675 151.118 3.616 151 3.499 c
-150.89 3.389 150.827 3.256 150.809 3.102 c
-150.757 2.885 150.927 2.691 151.309 2.514 c
-151.698 2.345 151.977 2.205 152.146 2.088 c
-152.646 1.754 152.874 1.297 152.837 0.721 c
-152.815 0.387 152.712 0.092 152.529 -0.161 c
-152.34 -0.419 152.087 -0.613 151.764 -0.749 c
-151.448 -0.885 151.106 -0.947 150.735 -0.941 c
-150.195 -0.929 149.757 -0.76 149.427 -0.426 c
-149.092 -0.084 148.928 0.346 148.928 0.867 c
-150.264 0.853 l
-150.254 0.588 150.294 0.397 150.382 0.279 c
-150.478 0.169 150.625 0.118 150.823 0.118 c
-151 0.118 151.147 0.162 151.264 0.25 c
-151.389 0.346 151.47 0.485 151.499 0.662 c
-153.595 -0.147 m
-153.595 0.096 153.668 0.294 153.815 0.441 c
-153.969 0.595 154.167 0.676 154.403 0.676 c
-154.638 0.676 154.829 0.603 154.976 0.456 c
-155.13 0.316 155.211 0.14 155.211 -0.073 c
-155.211 -0.319 155.126 -0.521 154.961 -0.675 c
-154.803 -0.823 154.612 -0.897 154.388 -0.897 c
-154.152 -0.897 153.961 -0.83 153.815 -0.691 c
-153.668 -0.544 153.595 -0.363 153.595 -0.147 c
-154.535 3.616 m
-154.535 3.859 154.609 4.057 154.755 4.204 c
-154.91 4.358 155.108 4.439 155.343 4.439 c
-155.579 4.439 155.77 4.366 155.916 4.219 c
-156.071 4.079 156.151 3.903 156.151 3.69 c
-156.151 3.444 156.067 3.242 155.902 3.088 c
-155.744 2.94 155.553 2.866 155.328 2.866 c
-155.093 2.866 154.902 2.933 154.755 3.072 c
-154.609 3.219 154.535 3.4 154.535 3.616 c
-156.5 -1.469 m
-155.442 -1.469 l
-158.97 6.527 l
-160.028 6.527 l
-h
-158.566 -1.469 m
-157.508 -1.469 l
-161.036 6.527 l
-162.094 6.527 l
-h
-164.02 -0.837 m
-163.997 -0.72 163.99 -0.58 163.99 -0.411 c
-163.674 -0.764 163.317 -0.941 162.917 -0.941 c
-162.494 -0.941 162.156 -0.789 161.903 -0.484 c
-161.657 -0.183 161.543 0.195 161.564 0.647 c
-161.594 1.235 161.818 1.691 162.241 2.014 c
-162.659 2.345 163.226 2.514 163.931 2.514 c
-164.342 2.514 l
-164.402 2.955 l
-164.416 3.175 l
-164.416 3.469 164.298 3.616 164.063 3.616 c
-163.74 3.624 163.542 3.418 163.475 2.999 c
-162.079 2.984 l
-162.108 3.502 162.322 3.925 162.726 4.248 c
-163.126 4.58 163.615 4.74 164.196 4.734 c
-164.732 4.723 165.144 4.549 165.431 4.219 c
-165.724 3.896 165.846 3.462 165.798 2.926 c
-165.342 0.148 l
-165.327 -0.132 l
-165.316 -0.367 165.342 -0.573 165.401 -0.749 c
-165.387 -0.837 l
-h
-163.314 0.177 m
-163.556 0.166 163.785 0.272 163.99 0.5 c
-164.24 1.646 l
-163.931 1.646 l
-163.667 1.636 163.45 1.548 163.284 1.382 c
-163.116 1.213 163.02 1.004 162.991 0.75 c
-162.991 0.559 l
-162.991 0.449 163.012 0.357 163.064 0.279 c
-163.122 0.21 163.203 0.177 163.314 0.177 c
-168.58 -0.941 m
-168.117 -0.918 167.771 -0.706 167.536 -0.294 c
-167.359 -0.837 l
-166.052 -0.837 l
-167.404 6.924 l
-168.801 6.924 l
-168.271 4.175 l
-168.583 4.557 168.94 4.74 169.344 4.734 c
-169.822 4.723 170.182 4.543 170.417 4.19 c
-170.652 3.844 170.755 3.341 170.725 2.675 c
-170.704 1.9 170.608 1.228 170.432 0.662 c
-170.263 0.092 170.024 -0.323 169.711 -0.588 c
-169.395 -0.841 169.021 -0.959 168.58 -0.941 c
-169.358 2.661 m
-169.366 2.974 169.329 3.194 169.241 3.323 c
-169.16 3.458 169.028 3.528 168.844 3.528 c
-168.587 3.535 168.352 3.404 168.138 3.132 c
-167.712 0.618 l
-167.808 0.383 167.999 0.254 168.286 0.235 c
-168.803 0.206 169.113 0.578 169.212 1.353 c
-169.256 1.721 l
-h
-173.823 4.734 m
-174.382 4.711 174.812 4.52 175.117 4.16 c
-175.429 3.807 175.602 3.326 175.631 2.72 c
-175.631 2.367 l
-175.581 1.309 175.327 0.485 174.867 -0.103 c
-174.405 -0.683 173.802 -0.959 173.059 -0.941 c
-172.626 -0.929 172.269 -0.816 171.986 -0.588 c
-171.7 -0.363 171.494 -0.055 171.369 0.339 c
-171.251 0.739 171.215 1.199 171.266 1.721 c
-171.295 1.985 l
-171.39 2.845 171.666 3.521 172.119 4.013 c
-172.566 4.513 173.136 4.752 173.823 4.734 c
-172.647 1.147 m
-172.647 0.559 172.824 0.254 173.177 0.235 c
-173.665 0.206 173.985 0.578 174.133 1.353 c
-174.176 1.721 l
-174.224 2.198 174.25 2.506 174.25 2.646 c
-174.25 3.223 174.066 3.528 173.706 3.558 c
-173.43 3.564 173.206 3.44 173.03 3.175 c
-172.861 2.918 172.755 2.547 172.707 2.058 c
-172.666 1.565 172.647 1.264 172.647 1.147 c
-178.615 -0.338 m
-178.27 -0.749 177.869 -0.947 177.41 -0.941 c
-177.046 -0.941 176.756 -0.823 176.543 -0.588 c
-176.327 -0.345 176.205 -0.014 176.175 0.397 c
-176.153 0.632 176.153 0.86 176.175 1.088 c
-176.778 4.63 l
-178.16 4.63 l
-177.572 1.073 l
-177.557 0.823 l
-177.546 0.655 177.572 0.518 177.63 0.412 c
-177.69 0.312 177.781 0.258 177.91 0.25 c
-178.182 0.239 178.439 0.383 178.675 0.676 c
-179.365 4.63 l
-180.761 4.63 l
-179.82 -0.837 l
-178.513 -0.837 l
-h
-183.514 5.968 m
-183.279 4.63 l
-183.984 4.63 l
-183.808 3.558 l
-183.103 3.558 l
-182.632 0.794 l
-182.617 0.632 l
-182.606 0.405 182.698 0.294 182.897 0.294 c
-182.955 0.283 183.073 0.287 183.249 0.31 c
-183.117 -0.808 l
-182.912 -0.897 182.665 -0.941 182.382 -0.941 c
-181.978 -0.929 181.677 -0.786 181.47 -0.5 c
-181.265 -0.205 181.185 0.184 181.235 0.676 c
-181.706 3.558 l
-181.089 3.558 l
-181.265 4.63 l
-181.883 4.63 l
-182.118 5.968 l
-h
-183.999 -0.147 m
-183.999 0.096 184.073 0.294 184.219 0.441 c
-184.374 0.595 184.572 0.676 184.807 0.676 c
-185.042 0.676 185.233 0.603 185.381 0.456 c
-185.535 0.316 185.616 0.14 185.616 -0.073 c
-185.616 -0.319 185.532 -0.521 185.366 -0.675 c
-185.208 -0.823 185.017 -0.897 184.793 -0.897 c
-184.558 -0.897 184.366 -0.83 184.219 -0.691 c
-184.073 -0.544 183.999 -0.363 183.999 -0.147 c
-189.137 4.734 m
-189.614 4.711 189.967 4.513 190.195 4.131 c
-190.371 4.63 l
-191.635 4.63 l
-190.71 -0.837 l
-190.61 -1.55 190.334 -2.094 189.886 -2.469 c
-189.445 -2.84 188.886 -3.017 188.21 -2.998 c
-187.916 -2.987 187.622 -2.925 187.328 -2.807 c
-187.034 -2.697 186.792 -2.543 186.608 -2.337 c
-187.167 -1.352 l
-187.45 -1.675 187.803 -1.841 188.225 -1.851 c
-188.82 -1.881 189.187 -1.547 189.328 -0.852 c
-189.43 -0.396 l
-189.107 -0.76 188.743 -0.941 188.343 -0.941 c
-187.872 -0.941 187.512 -0.76 187.269 -0.396 c
-187.024 -0.037 186.906 0.47 186.916 1.118 c
-186.916 1.507 186.953 1.929 187.034 2.382 c
-187.111 2.841 187.226 3.227 187.373 3.543 c
-187.755 4.355 188.343 4.752 189.137 4.734 c
-188.284 1.133 m
-188.284 0.551 188.468 0.258 188.842 0.25 c
-189.085 0.25 189.316 0.357 189.534 0.574 c
-190.004 3.19 l
-189.875 3.414 189.688 3.532 189.445 3.543 c
-188.857 3.572 188.497 3.091 188.372 2.103 c
-188.313 1.632 188.284 1.309 188.284 1.133 c
-193.054 -0.837 m
-191.657 -0.837 l
-192.598 4.63 l
-194.009 4.63 l
-h
-192.789 6.012 m
-192.789 6.247 192.863 6.438 193.01 6.585 c
-193.156 6.733 193.333 6.806 193.538 6.806 c
-193.752 6.814 193.935 6.747 194.083 6.6 c
-194.23 6.461 194.303 6.284 194.303 6.072 c
-194.303 5.836 194.23 5.644 194.083 5.498 c
-193.935 5.351 193.752 5.278 193.538 5.278 c
-193.322 5.266 193.142 5.328 192.995 5.469 c
-192.855 5.615 192.789 5.796 192.789 6.012 c
-196.909 5.968 m
-196.674 4.63 l
-197.379 4.63 l
-197.202 3.558 l
-196.497 3.558 l
-196.027 0.794 l
-196.012 0.632 l
-196.001 0.405 196.092 0.294 196.291 0.294 c
-196.35 0.283 196.468 0.287 196.644 0.31 c
-196.512 -0.808 l
-196.306 -0.897 196.059 -0.941 195.776 -0.941 c
-195.373 -0.929 195.071 -0.786 194.866 -0.5 c
-194.66 -0.205 194.579 0.184 194.631 0.676 c
-195.101 3.558 l
-194.483 3.558 l
-194.66 4.63 l
-195.277 4.63 l
-195.512 5.968 l
-h
-198.614 -0.837 m
-197.218 -0.837 l
-198.555 6.924 l
-199.966 6.924 l
-h
-202.259 -0.837 m
-202.237 -0.72 202.23 -0.58 202.23 -0.411 c
-201.914 -0.764 201.557 -0.941 201.156 -0.941 c
-200.734 -0.941 200.396 -0.789 200.142 -0.484 c
-199.896 -0.183 199.782 0.195 199.805 0.647 c
-199.834 1.235 200.058 1.691 200.48 2.014 c
-200.9 2.345 201.465 2.514 202.171 2.514 c
-202.583 2.514 l
-202.641 2.955 l
-202.656 3.175 l
-202.656 3.469 202.538 3.616 202.303 3.616 c
-201.98 3.624 201.781 3.418 201.715 2.999 c
-200.318 2.984 l
-200.348 3.502 200.561 3.925 200.965 4.248 c
-201.366 4.58 201.854 4.74 202.435 4.734 c
-202.972 4.723 203.383 4.549 203.67 4.219 c
-203.965 3.896 204.085 3.462 204.038 2.926 c
-203.582 0.148 l
-203.568 -0.132 l
-203.556 -0.367 203.582 -0.573 203.641 -0.749 c
-203.626 -0.837 l
-h
-201.553 0.177 m
-201.796 0.166 202.024 0.272 202.23 0.5 c
-202.479 1.646 l
-202.171 1.646 l
-201.906 1.636 201.69 1.548 201.524 1.382 c
-201.355 1.213 201.259 1.004 201.23 0.75 c
-201.23 0.559 l
-201.23 0.449 201.252 0.357 201.303 0.279 c
-201.362 0.21 201.443 0.177 201.553 0.177 c
-206.82 -0.941 m
-206.356 -0.918 206.011 -0.706 205.775 -0.294 c
-205.6 -0.837 l
-204.291 -0.837 l
-205.644 6.924 l
-207.04 6.924 l
-206.511 4.175 l
-206.823 4.557 207.179 4.74 207.584 4.734 c
-208.061 4.723 208.422 4.543 208.657 4.19 c
-208.892 3.844 208.995 3.341 208.965 2.675 c
-208.943 1.9 208.848 1.228 208.671 0.662 c
-208.503 0.092 208.264 -0.323 207.951 -0.588 c
-207.635 -0.841 207.26 -0.959 206.82 -0.941 c
-207.599 2.661 m
-207.606 2.974 207.569 3.194 207.481 3.323 c
-207.4 3.458 207.267 3.528 207.084 3.528 c
-206.826 3.535 206.591 3.404 206.378 3.132 c
-205.952 0.618 l
-206.047 0.383 206.238 0.254 206.525 0.235 c
-207.044 0.206 207.352 0.578 207.452 1.353 c
-207.495 1.721 l
-h
-209.432 -0.147 m
-209.432 0.096 209.505 0.294 209.652 0.441 c
-209.807 0.595 210.005 0.676 210.24 0.676 c
-210.475 0.676 210.666 0.603 210.814 0.456 c
-210.968 0.316 211.049 0.14 211.049 -0.073 c
-211.049 -0.319 210.965 -0.521 210.799 -0.675 c
-210.641 -0.823 210.45 -0.897 210.226 -0.897 c
-209.991 -0.897 209.8 -0.83 209.652 -0.691 c
-209.505 -0.544 209.432 -0.363 209.432 -0.147 c
-214.217 0.235 m
-214.599 0.225 214.838 0.5 214.937 1.058 c
-216.245 1.058 l
-216.187 0.449 215.959 -0.04 215.569 -0.411 c
-215.175 -0.786 214.702 -0.959 214.143 -0.941 c
-213.632 -0.929 213.224 -0.779 212.923 -0.484 c
-212.618 -0.191 212.438 0.214 212.379 0.736 c
-212.328 1.154 212.353 1.665 212.453 2.264 c
-212.548 2.87 212.736 3.373 213.012 3.778 c
-213.452 4.432 214.077 4.752 214.893 4.734 c
-215.441 4.711 215.863 4.513 216.157 4.131 c
-216.451 3.749 216.584 3.234 216.553 2.587 c
-215.231 2.587 l
-215.231 2.897 l
-215.22 3.315 215.058 3.535 214.745 3.558 c
-214.246 3.576 213.952 3.19 213.864 2.396 c
-213.761 1.485 l
-213.721 1.21 213.706 0.985 213.717 0.809 c
-213.746 0.434 213.912 0.243 214.217 0.235 c
-219.49 4.734 m
-220.048 4.711 220.478 4.52 220.783 4.16 c
-221.095 3.807 221.268 3.326 221.298 2.72 c
-221.298 2.367 l
-221.247 1.309 220.993 0.485 220.534 -0.103 c
-220.071 -0.683 219.468 -0.959 218.726 -0.941 c
-218.292 -0.929 217.935 -0.816 217.652 -0.588 c
-217.366 -0.363 217.16 -0.055 217.035 0.339 c
-216.918 0.739 216.881 1.199 216.933 1.721 c
-216.962 1.985 l
-217.057 2.845 217.332 3.521 217.785 4.013 c
-218.233 4.513 218.803 4.752 219.49 4.734 c
-218.314 1.147 m
-218.314 0.559 218.49 0.254 218.843 0.235 c
-219.331 0.206 219.651 0.578 219.799 1.353 c
-219.842 1.721 l
-219.89 2.198 219.917 2.506 219.917 2.646 c
-219.917 3.223 219.732 3.528 219.372 3.558 c
-219.096 3.564 218.872 3.44 218.696 3.175 c
-218.527 2.918 218.421 2.547 218.373 2.058 c
-218.332 1.565 218.314 1.264 218.314 1.147 c
-223.767 4.63 m
-223.68 4.116 l
-224.062 4.535 224.491 4.74 224.973 4.734 c
-225.491 4.711 225.829 4.469 225.987 3.998 c
-226.398 4.499 226.857 4.74 227.368 4.734 c
-227.758 4.723 228.052 4.576 228.251 4.293 c
-228.457 4.017 228.559 3.62 228.559 3.102 c
-228.53 2.646 l
-227.956 -0.837 l
-226.56 -0.837 l
-227.133 2.646 l
-227.163 2.926 l
-227.192 3.337 227.052 3.543 226.751 3.543 c
-226.516 3.543 226.3 3.373 226.105 3.043 c
-226.075 2.808 l
-225.443 -0.837 l
-224.046 -0.837 l
-224.62 2.646 l
-224.649 2.926 l
-224.679 3.337 224.546 3.543 224.252 3.543 c
-224.106 3.543 223.981 3.502 223.885 3.425 c
-223.786 3.344 223.697 3.252 223.62 3.146 c
-222.93 -0.837 l
-221.533 -0.837 l
-222.474 4.63 l
-h
-229.232 -1.469 m
-228.174 -1.469 l
-231.701 6.527 l
-232.76 6.527 l
-h
-f
-Q
-q
-457.854 554.164 m
-456.424 554.164 455.223 553.183 454.899 551.849 c
-408.477 551.849 l
-408.315 551.849 408.182 551.651 408.197 551.489 c
-408.211 551.327 408.373 551.191 408.535 551.191 c
-454.8 551.191 l
-454.8 551.129 l
-454.8 549.449 456.175 548.093 457.854 548.093 c
-459.489 548.093 460.798 549.376 460.871 550.989 c
-467.03 550.126 470.499 546.631 474.067 543.063 c
-477.584 539.549 481.196 535.97 487.366 534.997 c
-487.535 533.475 488.796 532.299 490.361 532.299 c
-491.838 532.299 493.062 533.339 493.338 534.735 c
-505.038 534.735 l
-505.313 533.339 506.537 532.299 508.014 532.299 c
-509.492 532.299 510.711 533.339 510.987 534.735 c
-523.687 534.735 l
-532.026 534.735 536.266 538.947 540.381 543.063 c
-544.067 546.748 547.654 550.338 554.199 551.051 c
-554.239 549.405 555.599 548.093 557.253 548.093 c
-558.936 548.093 560.288 549.449 560.288 551.129 c
-560.288 551.191 l
-586.724 551.191 l
-586.724 551.129 l
-586.724 549.449 588.081 548.093 589.76 548.093 c
-591.399 548.093 592.733 549.386 592.795 551.011 c
-599.329 550.305 604.44 547.512 608.828 543.562 c
-613.928 538.972 618.052 532.821 622.167 526.651 c
-626.283 520.477 630.399 514.285 635.588 509.618 c
-639.369 506.212 643.723 503.643 649.023 502.49 c
-625.261 502.49 l
-624.986 503.886 623.766 504.944 622.289 504.944 c
-620.812 504.944 619.569 503.886 619.293 502.49 c
-592.754 502.49 l
-592.479 503.886 591.237 504.944 589.76 504.944 c
-588.341 504.944 587.161 503.963 586.824 502.648 c
-580.466 503.434 576.916 506.983 573.286 510.615 c
-569.655 514.249 565.914 517.964 559.351 518.783 c
-559.263 520.385 557.94 521.657 556.316 521.657 c
-554.746 521.657 553.486 520.466 553.32 518.941 c
-543.535 518.941 l
-543.369 520.466 542.091 521.657 540.522 521.657 c
-538.952 521.657 537.692 520.466 537.526 518.941 c
-529.001 518.941 l
-534.035 520.283 537.247 523.477 540.381 526.611 c
-543.913 530.142 547.36 533.607 553.397 534.515 c
-553.758 533.237 554.92 532.299 556.316 532.299 c
-557.8 532.299 559.042 533.35 559.311 534.758 c
-586.787 534.758 l
-587.055 533.35 588.275 532.299 589.76 532.299 c
-591.443 532.299 592.817 533.655 592.817 535.334 c
-592.817 537.017 591.443 538.37 589.76 538.37 c
-588.098 538.37 586.757 537.047 586.724 535.397 c
-559.369 535.397 l
-559.336 537.047 557.977 538.37 556.316 538.37 c
-554.633 538.37 553.28 537.017 553.28 535.334 c
-553.28 535.275 553.295 535.217 553.299 535.155 c
-547.07 534.207 543.436 530.602 539.901 527.07 c
-535.917 523.083 532.066 519.18 524.448 518.941 c
-510.09 518.941 l
-510.069 519.136 510.028 519.32 509.969 519.5 c
-509.918 519.673 509.852 519.841 509.771 520 c
-509.683 520.169 509.587 520.331 509.47 520.481 c
-509.381 520.599 509.279 520.694 509.172 520.801 c
-509.146 520.823 509.136 520.856 509.113 520.878 c
-509.076 520.911 509.028 520.929 508.992 520.959 c
-508.889 521.044 508.787 521.127 508.672 521.198 c
-508.521 521.293 508.359 521.374 508.195 521.437 c
-507.849 521.572 507.467 521.657 507.073 521.657 c
-506.867 521.657 506.67 521.635 506.474 521.598 c
-506.273 521.557 506.082 521.495 505.898 521.418 c
-505.729 521.345 505.549 521.26 505.398 521.158 c
-505.391 521.154 505.383 521.143 505.376 521.139 c
-505.215 521.029 505.078 520.896 504.939 520.761 c
-504.814 520.635 504.7 520.503 504.6 520.36 c
-504.531 520.264 504.476 520.165 504.421 520.059 c
-504.384 519.992 504.332 519.93 504.299 519.86 c
-504.292 519.841 504.288 519.82 504.28 519.801 c
-504.203 519.625 504.16 519.452 504.12 519.261 c
-504.101 519.18 504.089 519.103 504.079 519.022 c
-504.068 518.923 504.042 518.824 504.039 518.721 c
-497.747 517.798 494.094 514.168 490.541 510.615 c
-490.008 510.081 489.483 509.56 488.946 509.038 c
-486.308 511.853 484.577 515.282 482.835 518.761 c
-480.777 522.877 478.69 527.044 475.026 530.182 c
-471.811 532.938 467.387 534.864 460.75 535.294 c
-460.368 536.54 459.225 537.451 457.854 537.451 c
-456.524 537.451 455.392 536.588 454.98 535.397 c
-375.929 535.397 l
-375.9 535.4 375.859 535.4 375.83 535.397 c
-375.657 535.371 375.524 535.188 375.551 535.015 c
-375.572 534.845 375.756 534.714 375.929 534.735 c
-454.841 534.735 l
-454.83 534.629 454.8 534.53 454.8 534.415 c
-454.8 532.736 456.175 531.362 457.854 531.362 c
-459.537 531.362 460.889 532.736 460.889 534.415 c
-460.889 534.493 460.875 534.563 460.871 534.636 c
-467.294 534.188 471.531 532.303 474.608 529.665 c
-478.146 526.633 480.178 522.579 482.236 518.463 c
-483.975 514.984 485.735 511.46 488.446 508.56 c
-485.543 505.815 482.354 503.452 477.484 502.728 c
-477.117 503.999 475.956 504.944 474.567 504.944 c
-473.089 504.944 471.869 503.886 471.594 502.49 c
-460.831 502.49 l
-460.555 503.886 459.331 504.944 457.854 504.944 c
-456.377 504.944 455.134 503.886 454.859 502.49 c
-375.551 502.49 l
-326.151 502.49 l
-325.974 502.482 325.823 502.306 325.831 502.129 c
-325.838 501.953 325.996 501.802 326.168 501.809 c
-454.8 501.809 l
-454.845 500.167 456.2 498.855 457.854 498.855 c
-459.508 498.855 460.848 500.167 460.889 501.809 c
-471.531 501.809 l
-471.576 500.167 472.913 498.855 474.567 498.855 c
-476.22 498.855 477.562 500.167 477.602 501.809 c
-504.039 501.809 l
-504.083 500.167 505.42 498.855 507.073 498.855 c
-508.727 498.855 510.087 500.167 510.131 501.809 c
-518.377 501.809 l
-513.343 500.465 510.127 497.275 506.996 494.144 c
-503.495 490.642 500.062 487.218 494.117 486.277 c
-493.672 487.409 492.569 488.213 491.279 488.213 c
-489.898 488.213 488.755 487.28 488.384 486.015 c
-460.75 486.015 l
-460.378 487.28 459.24 488.213 457.854 488.213 c
-456.472 488.213 455.311 487.28 454.94 486.015 c
-392.002 486.015 l
-391.819 486.038 391.642 485.884 391.642 485.695 c
-391.642 485.508 391.819 485.354 392.002 485.377 c
-454.818 485.377 l
-454.815 485.306 454.8 485.248 454.8 485.178 c
-454.8 483.495 456.175 482.121 457.854 482.121 c
-459.537 482.121 460.889 483.495 460.889 485.178 c
-460.889 485.248 460.875 485.306 460.871 485.377 c
-488.266 485.377 l
-488.262 485.306 488.245 485.248 488.245 485.178 c
-488.245 483.495 489.6 482.121 491.279 482.121 c
-492.962 482.121 494.337 483.495 494.337 485.178 c
-494.337 485.346 494.323 485.497 494.296 485.655 c
-500.382 486.655 503.968 490.198 507.455 493.685 c
-511.046 497.275 514.555 500.795 520.791 501.63 c
-520.924 500.072 522.214 498.855 523.808 498.855 c
-525.462 498.855 526.8 500.167 526.844 501.809 c
-537.486 501.809 l
-537.526 500.167 538.868 498.855 540.522 498.855 c
-542.175 498.855 543.535 500.167 543.575 501.809 c
-556.595 501.809 l
-564.713 501.809 568.715 497.797 572.826 493.685 c
-576.461 490.05 580.202 486.35 586.764 485.537 c
-586.75 485.413 586.724 485.302 586.724 485.178 c
-586.724 483.495 588.081 482.121 589.76 482.121 c
-591.443 482.121 592.817 483.495 592.817 485.178 c
-592.817 485.248 592.798 485.306 592.795 485.377 c
-603.459 485.377 l
-603.451 485.306 603.437 485.248 603.437 485.178 c
-603.437 483.495 604.812 482.121 606.495 482.121 c
-608.174 482.121 609.529 483.495 609.529 485.178 c
-609.529 485.248 609.512 485.306 609.508 485.377 c
-635.984 485.377 l
-635.981 485.306 635.966 485.248 635.966 485.178 c
-635.966 483.495 637.318 482.121 639.002 482.121 c
-640.681 482.121 642.037 483.495 642.037 485.178 c
-642.037 485.317 642.015 485.442 641.996 485.578 c
-648.35 486.474 652.021 490.113 655.593 493.685 c
-659.106 497.198 662.534 500.619 668.514 501.549 c
-668.682 500.031 669.943 498.855 671.508 498.855 c
-673.162 498.855 674.518 500.167 674.562 501.809 c
-704.732 501.809 l
-712.853 501.809 716.833 497.797 720.949 493.685 c
-724.502 490.127 728.159 486.512 734.464 485.597 c
-734.446 485.454 734.424 485.325 734.424 485.178 c
-734.424 483.495 735.798 482.121 737.481 482.121 c
-739.161 482.121 740.517 483.495 740.517 485.178 c
-740.517 485.248 740.498 485.306 740.494 485.377 c
-751.177 485.377 l
-751.174 485.306 751.159 485.248 751.159 485.178 c
-751.159 483.495 752.511 482.121 754.194 482.121 c
-755.874 482.121 757.248 483.495 757.248 485.178 c
-757.248 486.857 755.874 488.213 754.194 488.213 c
-752.809 488.213 751.666 487.28 751.299 486.015 c
-740.373 486.015 l
-740.006 487.28 738.863 488.213 737.481 488.213 c
-736.17 488.213 735.052 487.378 734.626 486.214 c
-728.471 487.077 724.995 490.572 721.427 494.144 c
-718.292 497.275 715.08 500.465 710.046 501.809 c
-734.424 501.809 l
-734.468 500.167 735.827 498.855 737.481 498.855 c
-739.161 498.855 740.517 500.207 740.517 501.89 c
-740.517 503.569 739.161 504.944 737.481 504.944 c
-736.004 504.944 734.762 503.886 734.487 502.49 c
-693.571 502.49 l
-698.606 503.835 701.818 507.002 704.952 510.137 c
-708.443 513.628 711.865 517.042 717.774 518.004 c
-718.057 516.616 719.277 515.568 720.746 515.568 c
-722.312 515.568 723.59 516.762 723.763 518.284 c
-734.464 518.284 l
-734.634 516.762 735.916 515.568 737.481 515.568 c
-739.161 515.568 740.517 516.942 740.517 518.621 c
-740.517 520.304 739.161 521.657 737.481 521.657 c
-735.912 521.657 734.63 520.466 734.464 518.941 c
-723.763 518.941 l
-723.598 520.466 722.316 521.657 720.746 521.657 c
-719.081 521.657 717.733 520.323 717.711 518.662 c
-711.593 517.67 707.991 514.112 704.493 510.615 c
-700.378 506.503 696.379 502.49 688.262 502.49 c
-674.504 502.49 l
-674.228 503.886 672.985 504.944 671.508 504.944 c
-670.031 504.944 668.807 503.886 668.532 502.49 c
-658.709 502.49 l
-658.698 502.545 658.683 502.596 658.669 502.648 c
-658.632 502.794 658.584 502.931 658.529 503.066 c
-658.47 503.206 658.404 503.342 658.327 503.467 c
-658.29 503.529 658.249 503.588 658.209 503.647 c
-658.11 503.791 657.993 503.922 657.871 504.047 c
-657.75 504.169 657.628 504.286 657.489 504.386 c
-657.47 504.4 657.449 504.411 657.43 504.427 c
-657.42 504.433 657.401 504.437 657.39 504.444 c
-657.235 504.547 657.081 504.632 656.913 504.705 c
-656.549 504.859 656.152 504.944 655.733 504.944 c
-655.516 504.944 655.317 504.907 655.115 504.863 c
-654.957 504.83 654.799 504.801 654.656 504.745 c
-654.549 504.705 654.453 504.654 654.355 504.606 c
-654.292 504.573 654.233 504.54 654.174 504.506 c
-654.087 504.452 653.998 504.408 653.917 504.346 c
-653.825 504.279 653.74 504.184 653.657 504.107 c
-653.627 504.077 653.586 504.059 653.557 504.026 c
-653.422 503.889 653.304 503.746 653.197 503.588 c
-653.094 503.43 652.992 503.261 652.917 503.089 c
-652.914 503.081 652.921 503.074 652.917 503.066 c
-652.855 502.919 652.797 502.769 652.756 502.607 c
-645.888 503.176 640.57 506.006 636.024 510.096 c
-630.925 514.686 626.819 520.838 622.707 527.007 c
-618.592 533.181 614.476 539.395 609.288 544.062 c
-604.8 548.1 599.491 550.989 592.754 551.687 c
-592.494 553.106 591.252 554.164 589.76 554.164 c
-588.326 554.164 587.15 553.183 586.824 551.849 c
-560.189 551.849 l
-559.865 553.183 558.685 554.164 557.253 554.164 c
-555.776 554.164 554.533 553.124 554.257 551.728 c
-547.434 551.018 543.612 547.23 539.901 543.522 c
-535.789 539.406 531.808 535.397 523.687 535.397 c
-511.05 535.397 l
-511.017 537.047 509.676 538.37 508.014 538.37 c
-506.354 538.37 505.012 537.047 504.979 535.397 c
-493.396 535.397 l
-493.367 537.047 492.022 538.37 490.361 538.37 c
-488.796 538.37 487.535 537.194 487.366 535.676 c
-481.45 536.628 478.021 540.027 474.527 543.522 c
-470.936 547.115 467.261 550.797 460.831 551.669 c
-460.577 553.095 459.354 554.164 457.854 554.164 c
-454.462 523.674 m
-454.462 513.672 l
-457.795 508.66 l
-461.128 513.672 l
-461.128 523.674 l
-h
-668.433 523.674 m
-668.433 513.672 l
-671.766 508.66 l
-675.102 513.672 l
-675.102 523.674 l
-h
-510.09 518.284 m
-537.526 518.284 l
-537.695 516.762 538.956 515.568 540.522 515.568 c
-542.087 515.568 543.365 516.762 543.535 518.284 c
-553.32 518.284 l
-553.49 516.762 554.75 515.568 556.316 515.568 c
-557.826 515.568 559.094 516.678 559.329 518.122 c
-565.664 517.324 569.206 513.76 572.826 510.137 c
-575.961 507.002 579.176 503.835 584.21 502.49 c
-576.023 502.49 l
-575.747 503.886 574.524 504.944 573.047 504.944 c
-571.57 504.944 570.328 503.886 570.052 502.49 c
-543.517 502.49 l
-543.241 503.886 541.998 504.944 540.522 504.944 c
-539.045 504.944 537.821 503.886 537.545 502.49 c
-526.781 502.49 l
-526.505 503.886 525.286 504.944 523.808 504.944 c
-522.331 504.944 521.107 503.886 520.832 502.49 c
-510.069 502.49 l
-509.793 503.886 508.551 504.944 507.073 504.944 c
-505.645 504.944 504.465 503.941 504.141 502.607 c
-497.751 503.059 493.529 504.911 490.464 507.542 c
-490.089 507.862 489.725 508.219 489.384 508.56 c
-489.931 509.086 490.468 509.603 491 510.137 c
-494.547 513.682 498.015 517.166 504.101 518.063 c
-504.13 517.909 504.167 517.751 504.218 517.603 c
-504.23 517.578 504.23 517.549 504.241 517.523 c
-504.292 517.391 504.369 517.269 504.439 517.144 c
-504.454 517.119 504.465 517.093 504.479 517.063 c
-504.534 516.968 504.593 516.876 504.66 516.784 c
-504.744 516.67 504.839 516.568 504.939 516.464 c
-505.045 516.358 505.155 516.259 505.277 516.167 c
-505.336 516.123 505.394 516.086 505.456 516.046 c
-505.541 515.994 505.629 515.951 505.718 515.906 c
-505.809 515.862 505.898 515.803 505.997 515.766 c
-506.148 515.708 506.313 515.66 506.474 515.627 c
-506.673 515.587 506.867 515.568 507.073 515.568 c
-507.467 515.568 507.831 515.652 508.172 515.789 c
-508.349 515.855 508.514 515.932 508.672 516.028 c
-508.787 516.097 508.889 516.182 508.992 516.266 c
-509.028 516.296 509.076 516.314 509.113 516.347 c
-509.153 516.383 509.194 516.428 509.231 516.464 c
-509.452 516.689 509.624 516.946 509.771 517.225 c
-509.852 517.383 509.918 517.553 509.969 517.725 c
-510.025 517.905 510.069 518.093 510.09 518.284 c
-488.906 508.101 m
-489.266 507.737 489.644 507.38 490.041 507.043 c
-492.482 504.951 495.619 503.342 499.886 502.49 c
-479.62 502.49 l
-483.551 503.537 486.367 505.705 488.906 508.101 c
-750.717 505.565 m
-750.717 495.559 l
-754.054 490.569 l
-757.387 495.559 l
-757.387 505.565 l
-h
-561.905 501.809 m
-569.993 501.809 l
-570.033 500.167 571.393 498.855 573.047 498.855 c
-574.7 498.855 576.042 500.167 576.082 501.809 c
-586.724 501.809 l
-586.768 500.167 588.106 498.855 589.76 498.855 c
-591.414 498.855 592.773 500.167 592.817 501.809 c
-619.231 501.809 l
-619.276 500.167 620.635 498.855 622.289 498.855 c
-623.943 498.855 625.28 500.167 625.324 501.809 c
-652.679 501.809 l
-652.679 501.736 652.69 501.663 652.697 501.589 c
-652.712 501.46 652.73 501.335 652.756 501.211 c
-652.797 501.034 652.848 500.872 652.917 500.711 c
-652.955 500.623 653.009 500.538 653.057 500.454 c
-653.197 500.193 653.37 499.939 653.576 499.733 c
-653.612 499.697 653.657 499.667 653.697 499.634 c
-653.946 499.41 654.222 499.226 654.534 499.094 c
-654.542 499.091 654.549 499.097 654.557 499.094 c
-654.733 499.02 654.92 498.954 655.115 498.914 c
-655.119 498.914 655.126 498.918 655.134 498.914 c
-655.325 498.877 655.531 498.855 655.733 498.855 c
-655.942 498.855 656.133 498.873 656.331 498.914 c
-656.633 498.977 656.909 499.094 657.169 499.234 c
-657.258 499.282 657.349 499.318 657.43 499.373 c
-657.581 499.476 657.721 499.586 657.85 499.715 c
-657.867 499.733 l
-657.894 499.756 657.908 499.789 657.93 499.814 c
-658.041 499.932 658.158 500.057 658.249 500.193 c
-658.349 500.34 658.438 500.49 658.507 500.652 c
-658.518 500.67 658.522 500.693 658.529 500.711 c
-658.596 500.872 658.65 501.038 658.687 501.211 c
-658.717 501.335 658.735 501.46 658.75 501.589 c
-658.754 501.663 658.764 501.736 658.768 501.809 c
-666.496 501.809 l
-661.461 500.465 658.247 497.275 655.115 494.144 c
-651.533 490.561 648.049 487.062 641.857 486.214 c
-641.427 487.378 640.313 488.213 639.002 488.213 c
-637.616 488.213 636.473 487.28 636.105 486.015 c
-609.386 486.015 l
-609.019 487.28 607.877 488.213 606.495 488.213 c
-605.109 488.213 603.948 487.28 603.576 486.015 c
-592.673 486.015 l
-592.306 487.28 591.145 488.213 589.76 488.213 c
-588.433 488.213 587.323 487.361 586.905 486.177 c
-580.495 486.942 576.931 490.499 573.286 494.144 c
-570.155 497.275 566.939 500.465 561.905 501.809 c
-540.481 495.761 m
-537.144 490.767 l
-537.144 480.746 l
-543.814 480.746 l
-543.814 490.767 l
-h
-W n
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 g
-/GS1 gs
-0 TL/Fm0 Do
-Q
-Q
-q 1 0 0 1 175.2352 546.0975 cm
-0 0 m
--3.391 0 l
--3.381 -25.219 l
-10.33 -25.219 l
-10.33 -22.1 l
-0.008 -22.1 l
-h
-f
-Q
-q 1 0 0 1 198.6173 525.3062 cm
-0 0 m
--0.845 -0.886 -2.271 -1.771 -4.196 -1.771 c
--6.776 -1.771 -7.816 -0.5 -7.816 1.153 c
--7.816 3.657 -6.081 4.85 -2.385 4.85 c
--1.693 4.85 -0.577 4.773 0 4.659 c
-h
--3.501 15.283 m
--6.239 15.283 -8.749 14.313 -10.708 12.7 c
--9.51 10.628 l
--8.124 11.436 -6.43 12.244 -4.005 12.244 c
--1.23 12.244 0 10.819 0 8.43 c
-0 7.199 l
--0.536 7.316 -1.653 7.393 -2.348 7.393 c
--8.279 7.393 -11.281 5.313 -11.281 0.962 c
--11.281 -2.926 -8.893 -4.891 -5.273 -4.891 c
--2.836 -4.891 -0.5 -3.774 0.31 -1.966 c
-0.927 -4.428 l
-3.315 -4.428 l
-3.315 8.47 l
-3.315 12.553 1.544 15.283 -3.501 15.283 c
-f
-Q
-q 1 0 0 1 212.8648 523.4172 cm
-0 0 m
--1.272 0 -2.389 0.154 -3.233 0.54 c
--3.233 12.208 l
--2.08 13.17 -0.654 13.861 1.158 13.861 c
-4.428 13.861 5.7 11.553 5.7 7.817 c
-5.7 2.502 3.66 0 0 0 c
-1.426 17.172 m
--1.602 17.172 -3.233 15.114 y
--3.233 18.366 l
--3.245 22.68 l
--6.556 22.68 l
--6.545 -1.922 l
--4.891 -2.616 -2.616 -3.002 -0.154 -3.002 c
-6.163 -3.002 9.205 1.039 9.205 8.011 c
-9.205 13.516 6.394 17.172 1.426 17.172 c
-f
-Q
-q 1 0 0 1 138.3959 543.3637 cm
-0 0 m
-3.002 0 4.928 -1.003 6.199 -2.003 c
-7.655 0.518 l
-5.67 2.26 3.002 3.194 0.154 3.194 c
--7.048 3.194 -12.094 -1.194 -12.094 -10.05 c
--12.094 -19.329 -6.651 -22.948 -0.422 -22.948 c
-2.697 -22.948 5.354 -22.217 7.085 -21.487 c
-7.015 -11.572 l
-7.015 -8.452 l
--2.227 -8.452 l
--2.227 -11.572 l
-3.663 -11.572 l
-3.734 -19.098 l
-2.965 -19.484 1.617 -19.792 -0.191 -19.792 c
--5.199 -19.792 -8.548 -16.643 -8.548 -10.009 c
--8.548 -3.274 -5.082 0 0 0 c
-f
-Q
-q 1 0 0 1 162.2267 546.0975 cm
-0 0 m
--3.311 0 l
--3.3 -4.237 l
--3.3 -18.866 l
--3.3 -22.948 -1.529 -25.682 3.516 -25.682 c
-4.215 -25.682 4.895 -25.62 5.556 -25.499 c
-5.556 -22.526 l
-5.078 -22.599 4.567 -22.64 4.016 -22.64 c
-1.246 -22.64 0.011 -21.214 0.011 -18.829 c
-0.011 -8.742 l
-5.556 -8.742 l
-5.556 -5.967 l
-0.011 -5.967 l
-h
-f
-Q
-150.512 540.13 3.314 -19.252 re
-f
-150.512 546.098 3.314 -3.311 re
-f
-0 0.672 0.855 0 k
-q 1 0 0 1 111.978 528.4332 cm
-0 0 m
--4.278 13.163 l
--12.755 39.254 l
--13.193 40.595 -15.092 40.595 -15.53 39.254 c
--24.008 13.163 l
--52.159 13.163 l
--60.641 39.254 l
--61.075 40.595 -62.975 40.595 -63.411 39.254 c
--71.889 13.163 l
--76.167 0 l
--76.56 -1.201 -76.13 -2.514 -75.109 -3.256 c
--38.086 -30.152 l
--1.058 -3.256 l
--0.037 -2.514 0.389 -1.201 0 0 c
-f
-Q
-0.031 0.844 0.875 0.004 k
-q 1 0 0 1 73.8922 498.2816 cm
-0 0 m
-14.078 43.314 l
--14.073 43.314 l
-h
-f
-Q
-0 0.672 0.855 0 k
-q 1 0 0 1 73.8922 498.2816 cm
-0 0 m
--14.073 43.314 l
--33.804 43.314 l
-h
-f
-Q
-0 0.43 0.871 0 k
-q 1 0 0 1 40.0886 541.5961 cm
-0 0 m
--4.278 -13.163 l
--4.671 -14.364 -4.241 -15.68 -3.219 -16.419 c
-33.804 -43.314 l
-h
-f
-Q
-0.031 0.844 0.875 0.004 k
-q 1 0 0 1 40.0886 541.5961 cm
-0 0 m
-19.73 0 l
-11.248 26.091 l
-10.815 27.432 8.914 27.432 8.478 26.091 c
-h
-f
-Q
-0 0.672 0.855 0 k
-q 1 0 0 1 73.8922 498.2816 cm
-0 0 m
-14.078 43.314 l
-33.808 43.314 l
-h
-f
-Q
-0 0.43 0.871 0 k
-q 1 0 0 1 107.7005 541.5961 cm
-0 0 m
-4.278 -13.163 l
-4.667 -14.364 4.241 -15.68 3.219 -16.419 c
--33.808 -43.314 l
-h
-f
-Q
-0.031 0.844 0.875 0.004 k
-q 1 0 0 1 107.7005 541.5961 cm
-0 0 m
--19.73 0 l
--11.252 26.091 l
--10.815 27.432 -8.915 27.432 -8.478 26.091 c
-h
-f
-Q
-0 0 0 0 k
-q 1 0 0 1 142.633 472.606 cm
-0 0 m
--0.559 -0.706 l
--2.168 -2.579 -4.513 -3.513 -7.599 -3.513 c
--10.356 -3.513 -12.517 -2.601 -14.082 -0.779 c
--15.64 1.044 -16.441 3.62 -16.478 6.953 c
--16.478 11.936 l
--16.478 15.501 -15.769 18.172 -14.346 19.947 c
--12.917 21.718 -10.782 22.608 -7.938 22.608 c
--5.519 22.608 -3.627 21.931 -2.263 20.579 c
--0.893 19.227 -0.14 17.301 0 14.803 c
--3.19 14.803 l
--3.319 16.378 -3.759 17.613 -4.513 18.506 c
--5.259 19.395 -6.394 19.844 -7.923 19.844 c
--9.746 19.844 -11.083 19.245 -11.936 18.051 c
--12.788 16.864 -13.23 14.964 -13.259 12.347 c
--13.259 7.159 l
--13.259 4.601 -12.773 2.635 -11.803 1.264 c
--10.826 -0.099 -9.419 -0.779 -7.585 -0.779 c
--5.872 -0.779 -4.564 -0.363 -3.66 0.47 c
--3.19 0.912 l
--3.19 6.776 l
--7.834 6.776 l
--7.834 9.496 l
-0 9.496 l
-h
-8.712 -3.16 -3.189 25.415 re
-28.737 19.491 m
-22.048 19.491 l
-22.048 -3.16 l
-18.859 -3.16 l
-18.859 19.491 l
-12.185 19.491 l
-12.185 22.255 l
-28.737 22.255 l
-h
-56.088 4.91 m
-55.941 2.183 55.169 0.096 53.78 -1.352 c
-52.398 -2.792 50.436 -3.513 47.901 -3.513 c
-45.35 -3.513 43.322 -2.543 41.815 -0.602 c
-40.315 1.338 39.566 3.961 39.566 7.277 c
-39.566 11.892 l
-39.566 15.192 40.334 17.804 41.873 19.726 c
-43.421 21.645 45.526 22.608 48.194 22.608 c
-50.642 22.608 52.537 21.865 53.883 20.388 c
-55.236 18.918 55.97 16.816 56.088 14.082 c
-52.854 14.082 l
-52.714 16.158 52.281 17.639 51.546 18.521 c
-50.81 19.403 49.694 19.844 48.194 19.844 c
-46.46 19.844 45.126 19.16 44.196 17.801 c
-43.263 16.449 42.8 14.464 42.8 11.848 c
-42.8 7.188 l
-42.8 4.619 43.23 2.65 44.093 1.279 c
-44.965 -0.095 46.232 -0.779 47.901 -0.779 c
-49.565 -0.779 50.759 -0.367 51.487 0.456 c
-52.221 1.279 52.678 2.764 52.854 4.91 c
-h
-77.144 -3.16 m
-73.939 -3.16 l
-73.939 8.584 l
-63.709 8.584 l
-63.709 -3.16 l
-60.505 -3.16 l
-60.505 22.255 l
-63.709 22.255 l
-63.709 11.333 l
-73.939 11.333 l
-73.939 22.255 l
-77.144 22.255 l
-h
-95.025 8.584 m
-86.045 8.584 l
-86.045 -0.426 l
-96.51 -0.426 l
-96.51 -3.16 l
-82.84 -3.16 l
-82.84 22.255 l
-96.334 22.255 l
-96.334 19.491 l
-86.045 19.491 l
-86.045 11.333 l
-95.025 11.333 l
-h
-112.54 3.469 m
-103.955 3.469 l
-101.971 -3.16 l
-98.693 -3.16 l
-106.88 22.255 l
-109.614 22.255 l
-117.831 -3.16 l
-114.539 -3.16 l
-h
-104.793 6.232 m
-111.717 6.232 l
-108.247 17.787 l
-h
-134.007 19.491 m
-127.32 19.491 l
-127.32 -3.16 l
-124.13 -3.16 l
-124.13 19.491 l
-117.456 19.491 l
-117.456 22.255 l
-134.007 22.255 l
-h
-156.527 3.263 m
-156.527 4.528 156.181 5.498 155.498 6.174 c
-154.81 6.85 153.572 7.504 151.779 8.144 c
-149.985 8.79 148.611 9.467 147.663 10.172 c
-146.711 10.878 146.002 11.678 145.531 12.582 c
-145.061 13.483 144.826 14.512 144.826 15.67 c
-144.826 17.687 145.495 19.348 146.84 20.652 c
-148.181 21.953 149.942 22.608 152.117 22.608 c
-153.605 22.608 154.931 22.269 156.1 21.593 c
-157.265 20.924 158.162 19.998 158.79 18.815 c
-159.415 17.629 159.731 16.324 159.731 14.905 c
-156.527 14.905 l
-156.527 16.47 156.144 17.687 155.38 18.55 c
-154.623 19.41 153.535 19.844 152.117 19.844 c
-150.831 19.844 149.831 19.48 149.118 18.757 c
-148.412 18.04 148.06 17.029 148.06 15.728 c
-148.06 14.659 148.442 13.762 149.206 13.039 c
-149.978 12.311 151.165 11.664 152.764 11.098 c
-155.27 10.275 157.059 9.253 158.129 8.041 c
-159.205 6.835 159.745 5.251 159.745 3.293 c
-159.745 1.235 159.073 -0.419 157.732 -1.66 c
-156.398 -2.896 154.579 -3.513 152.278 -3.513 c
-150.798 -3.513 149.431 -3.189 148.177 -2.543 c
-146.931 -1.896 145.95 -0.992 145.238 0.177 c
-144.521 1.353 144.165 2.694 144.165 4.204 c
-147.369 4.204 l
-147.369 2.635 147.81 1.415 148.691 0.544 c
-149.574 -0.33 150.768 -0.764 152.278 -0.764 c
-153.69 -0.764 154.748 -0.407 155.453 0.309 c
-156.167 1.033 156.527 2.018 156.527 3.263 c
-180.662 -3.16 m
-177.458 -3.16 l
-177.458 8.584 l
-167.227 8.584 l
-167.227 -3.16 l
-164.023 -3.16 l
-164.023 22.255 l
-167.227 22.255 l
-167.227 11.333 l
-177.458 11.333 l
-177.458 22.255 l
-180.662 22.255 l
-h
-198.544 8.584 m
-189.563 8.584 l
-189.563 -0.426 l
-200.028 -0.426 l
-200.028 -3.16 l
-186.358 -3.16 l
-186.358 22.255 l
-199.852 22.255 l
-199.852 19.491 l
-189.563 19.491 l
-189.563 11.333 l
-198.544 11.333 l
-h
-216.38 8.584 m
-207.4 8.584 l
-207.4 -0.426 l
-217.866 -0.426 l
-217.866 -3.16 l
-204.195 -3.16 l
-204.195 22.255 l
-217.689 22.255 l
-217.689 19.491 l
-207.4 19.491 l
-207.4 11.333 l
-216.38 11.333 l
-h
-237.246 19.491 m
-230.558 19.491 l
-230.558 -3.16 l
-227.368 -3.16 l
-227.368 19.491 l
-220.695 19.491 l
-220.695 22.255 l
-237.246 22.255 l
-h
-f
-Q
-0.793 0.801 0.129 0.016 k
-535.667 442.028 238.665 -21.457 re
-f
-0 0 0 0 k
-q 1 0 0 1 655.8467 428.4505 cm
-0 0 m
--2.573 0 l
--3.072 -1.911 l
--5.072 -1.911 l
--2.147 7.453 l
--0.426 7.453 l
-2.528 -1.911 l
-0.5 -1.911 l
-h
--2.161 1.587 m
--0.412 1.587 l
--1.294 4.924 l
-h
-3.686 -0.985 m
-3.686 -0.691 3.781 -0.453 3.979 -0.264 c
-4.174 -0.081 4.428 0.014 4.744 0.014 c
-5.045 0.014 5.295 -0.081 5.494 -0.264 c
-5.699 -0.453 5.802 -0.691 5.802 -0.985 c
-5.802 -1.29 5.699 -1.536 5.494 -1.72 c
-5.295 -1.897 5.045 -1.985 4.744 -1.985 c
-4.438 -1.985 4.185 -1.893 3.979 -1.706 c
-3.781 -1.521 3.686 -1.279 3.686 -0.985 c
-17.055 -0.852 m
-16.691 -1.246 16.246 -1.544 15.717 -1.75 c
-15.187 -1.945 14.607 -2.043 13.982 -2.043 c
-12.902 -2.043 12.064 -1.713 11.469 -1.044 c
-10.869 -0.379 10.565 0.592 10.557 1.866 c
-10.557 3.557 l
-10.557 4.85 10.836 5.843 11.395 6.541 c
-11.962 7.235 12.785 7.584 13.865 7.584 c
-14.883 7.584 15.647 7.327 16.158 6.82 c
-16.676 6.321 16.974 5.534 17.055 4.469 c
-15.217 4.469 l
-15.166 5.064 15.044 5.471 14.85 5.689 c
-14.651 5.901 14.343 6.011 13.924 6.011 c
-13.413 6.011 13.041 5.824 12.806 5.453 c
-12.579 5.078 12.461 4.486 12.453 3.675 c
-12.453 1.97 l
-12.453 1.117 12.579 0.492 12.835 0.103 c
-13.089 -0.279 13.504 -0.47 14.085 -0.47 c
-14.456 -0.47 14.761 -0.397 14.996 -0.25 c
-15.158 -0.133 l
-15.158 1.587 l
-13.836 1.587 l
-13.836 3.013 l
-17.055 3.013 l
-h
-20.612 -1.911 -1.897 9.363 re
-28.192 5.88 m
-25.87 5.88 l
-25.87 -1.911 l
-23.974 -1.911 l
-23.974 5.88 l
-21.695 5.88 l
-21.695 7.453 l
-28.192 7.453 l
-h
-34.187 -1.911 -1.897 9.363 re
-42.436 -1.911 m
-40.54 -1.911 l
-37.776 4.233 l
-37.776 -1.911 l
-35.88 -1.911 l
-35.88 7.453 l
-37.776 7.453 l
-40.54 1.308 l
-40.54 7.453 l
-42.436 7.453 l
-h
-48.143 0.544 m
-48.143 0.926 48.044 1.213 47.849 1.411 c
-47.65 1.606 47.298 1.808 46.79 2.013 c
-45.85 2.373 45.173 2.793 44.762 3.263 c
-44.35 3.74 44.145 4.31 44.145 4.968 c
-44.145 5.751 44.424 6.383 44.982 6.865 c
-45.541 7.342 46.25 7.584 47.114 7.584 c
-47.691 7.584 48.205 7.459 48.657 7.217 c
-49.106 6.971 49.451 6.629 49.686 6.188 c
-49.929 5.747 50.054 5.247 50.054 4.689 c
-48.172 4.689 l
-48.172 5.13 48.076 5.46 47.893 5.689 c
-47.706 5.913 47.438 6.026 47.085 6.026 c
-46.75 6.026 46.49 5.928 46.305 5.733 c
-46.129 5.545 46.041 5.284 46.041 4.953 c
-46.041 4.696 46.144 4.461 46.349 4.247 c
-46.555 4.042 46.916 3.825 47.438 3.601 c
-48.348 3.278 49.01 2.873 49.422 2.396 c
-49.84 1.914 50.054 1.301 50.054 0.559 c
-50.054 -0.258 49.792 -0.893 49.275 -1.353 c
-48.753 -1.816 48.047 -2.043 47.158 -2.043 c
-46.548 -2.043 45.997 -1.918 45.497 -1.675 c
-45.005 -1.422 44.618 -1.066 44.336 -0.603 c
-44.049 -0.133 43.91 0.415 43.91 1.043 c
-45.806 1.043 l
-45.806 0.503 45.909 0.11 46.114 -0.133 c
-46.328 -0.379 46.677 -0.5 47.158 -0.5 c
-47.812 -0.5 48.143 -0.154 48.143 0.544 c
-57.587 5.88 m
-55.265 5.88 l
-55.265 -1.911 l
-53.368 -1.911 l
-53.368 5.88 l
-51.09 5.88 l
-51.09 7.453 l
-57.587 7.453 l
-h
-62.548 0 m
-59.976 0 l
-59.475 -1.911 l
-57.476 -1.911 l
-60.402 7.453 l
-62.122 7.453 l
-65.077 -1.911 l
-63.047 -1.911 l
-h
-60.387 1.587 m
-62.137 1.587 l
-61.254 4.924 l
-h
-68.071 -0.339 m
-71.393 -0.339 l
-71.393 -1.911 l
-66.175 -1.911 l
-66.175 7.453 l
-68.071 7.453 l
-h
-74.554 -0.339 m
-77.875 -0.339 l
-77.875 -1.911 l
-72.657 -1.911 l
-72.657 7.453 l
-74.554 7.453 l
-h
-83.74 0 m
-81.168 0 l
-80.668 -1.911 l
-78.669 -1.911 l
-81.594 7.453 l
-83.314 7.453 l
-86.269 -1.911 l
-84.24 -1.911 l
-h
-81.579 1.587 m
-83.329 1.587 l
-82.446 4.924 l
-h
-92.644 5.88 m
-90.321 5.88 l
-90.321 -1.911 l
-88.426 -1.911 l
-88.426 5.88 l
-86.147 5.88 l
-86.147 7.453 l
-92.644 7.453 l
-h
-95.915 -1.911 -1.897 9.363 re
-104.205 1.926 m
-104.205 0.669 103.904 -0.305 103.308 -1 c
-102.709 -1.698 101.886 -2.043 100.839 -2.043 c
-99.788 -2.043 98.961 -1.702 98.355 -1.014 c
-97.756 -0.32 97.451 0.646 97.444 1.881 c
-97.444 3.484 l
-97.444 4.766 97.741 5.77 98.34 6.497 c
-98.936 7.221 99.766 7.584 100.825 7.584 c
-101.86 7.584 102.68 7.224 103.279 6.512 c
-103.885 5.806 104.194 4.81 104.205 3.528 c
-h
-102.309 3.499 m
-102.309 4.34 102.184 4.968 101.941 5.38 c
-101.706 5.791 101.332 5.997 100.825 5.997 c
-100.324 5.997 99.95 5.795 99.707 5.394 c
-99.472 5.001 99.347 4.402 99.339 3.601 c
-99.339 1.926 l
-99.339 1.109 99.461 0.507 99.707 0.118 c
-99.95 -0.276 100.328 -0.47 100.839 -0.47 c
-101.328 -0.47 101.691 -0.279 101.926 0.103 c
-102.169 0.484 102.298 1.072 102.309 1.866 c
-h
-112.337 -1.911 m
-110.441 -1.911 l
-107.678 4.233 l
-107.678 -1.911 l
-105.781 -1.911 l
-105.781 7.453 l
-107.678 7.453 l
-110.441 1.308 l
-110.441 7.453 l
-112.337 7.453 l
-h
-f
-Q
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 539.3305 407.9565 cm
-0 0 m
--2.263 0 l
--2.263 -2.955 l
--3.102 -2.955 l
--3.102 3.733 l
-0.383 3.733 l
-0.383 3.013 l
--2.263 3.013 l
--2.263 0.72 l
-0 0.72 l
-h
-0.871 -0.235 m
-0.871 0.477 1.04 1.047 1.386 1.469 c
-1.739 1.888 2.201 2.102 2.782 2.102 c
-3.359 2.102 3.818 1.896 4.164 1.484 c
-4.517 1.08 4.696 0.521 4.708 -0.191 c
-4.708 -0.706 l
-4.708 -1.434 4.532 -2.007 4.179 -2.425 c
-3.833 -2.837 3.373 -3.043 2.797 -3.043 c
-2.216 -3.043 1.754 -2.845 1.401 -2.44 c
-1.055 -2.029 0.879 -1.478 0.871 -0.779 c
-h
-1.679 -0.706 m
-1.679 -1.216 1.775 -1.617 1.974 -1.912 c
-2.18 -2.205 2.452 -2.352 2.797 -2.352 c
-3.51 -2.352 3.877 -1.834 3.899 -0.794 c
-3.899 -0.235 l
-3.899 0.272 3.796 0.675 3.591 0.97 c
-3.392 1.263 3.124 1.411 2.782 1.411 c
-2.448 1.411 2.18 1.263 1.974 0.97 c
-1.775 0.675 1.679 0.272 1.679 -0.235 c
-h
-7.622 1.249 m
-7.504 1.267 7.379 1.278 7.254 1.278 c
-6.832 1.278 6.541 1.051 6.387 0.602 c
-6.387 -2.955 l
-5.564 -2.955 l
-5.564 2.013 l
-6.358 2.013 l
-6.373 1.514 l
-6.585 1.903 6.894 2.102 7.298 2.102 c
-7.423 2.102 7.533 2.08 7.622 2.043 c
-h
-14.93 -2.117 m
-14.784 -2.308 l
-14.361 -2.801 13.744 -3.043 12.931 -3.043 c
-12.204 -3.043 11.638 -2.804 11.227 -2.323 c
-10.815 -1.845 10.602 -1.169 10.595 -0.294 c
-10.595 1.014 l
-10.595 1.955 10.778 2.653 11.153 3.116 c
-11.524 3.586 12.087 3.821 12.844 3.821 c
-13.479 3.821 13.976 3.645 14.328 3.293 c
-14.689 2.94 14.89 2.433 14.93 1.778 c
-14.093 1.778 l
-14.053 2.19 13.935 2.514 13.74 2.749 c
-13.542 2.984 13.244 3.102 12.844 3.102 c
-12.362 3.102 12.01 2.944 11.786 2.631 c
-11.557 2.315 11.439 1.815 11.433 1.132 c
-11.433 -0.235 l
-11.433 -0.912 11.557 -1.434 11.815 -1.794 c
-12.079 -2.147 12.451 -2.323 12.931 -2.323 c
-13.38 -2.323 13.725 -2.216 13.961 -1.999 c
-14.093 -1.881 l
-14.093 -0.339 l
-12.858 -0.339 l
-12.858 0.382 l
-14.93 0.382 l
-h
-20.454 -2.955 m
-19.616 -2.955 l
-16.941 2.204 l
-16.941 -2.955 l
-16.089 -2.955 l
-16.089 3.733 l
-16.941 3.733 l
-19.616 -1.441 l
-19.616 3.733 l
-20.454 3.733 l
-h
-25.661 3.733 m
-25.661 -1.014 l
-25.661 -1.654 25.477 -2.153 25.118 -2.514 c
-24.754 -2.866 24.25 -3.043 23.603 -3.043 c
-22.946 -3.043 22.442 -2.874 22.09 -2.529 c
-21.737 -2.176 21.56 -1.673 21.56 -1.014 c
-21.56 3.733 l
-22.398 3.733 l
-22.398 -0.985 l
-22.398 -1.437 22.49 -1.775 22.677 -1.999 c
-22.872 -2.216 23.181 -2.323 23.603 -2.323 c
-24.033 -2.323 24.342 -2.216 24.529 -1.999 c
-24.725 -1.775 24.823 -1.437 24.823 -0.985 c
-24.823 3.733 l
-h
-26.878 -3.528 m
-26.186 -3.528 l
-28.524 3.733 l
-29.215 3.733 l
-h
-30.964 -2.234 m
-33.581 -2.234 l
-33.581 -2.955 l
-30.111 -2.955 l
-30.111 3.733 l
-30.964 3.733 l
-h
-35.16 -2.955 -0.808 4.968 re
-35.219 3.337 m
-35.219 3.197 35.179 3.079 35.102 2.984 c
-35.032 2.896 34.917 2.851 34.763 2.851 c
-34.605 2.851 34.488 2.896 34.41 2.984 c
-34.341 3.079 34.308 3.197 34.308 3.337 c
-34.308 3.472 34.341 3.586 34.41 3.675 c
-34.488 3.77 34.602 3.821 34.749 3.821 c
-34.903 3.821 35.021 3.77 35.102 3.675 c
-35.179 3.586 35.219 3.472 35.219 3.337 c
-37.108 2.013 m
-37.138 1.484 l
-37.45 1.896 37.851 2.102 38.343 2.102 c
-39.225 2.102 39.669 1.517 39.68 0.353 c
-39.68 -2.955 l
-38.872 -2.955 l
-38.872 0.309 l
-38.872 0.698 38.805 0.974 38.68 1.132 c
-38.552 1.297 38.358 1.381 38.092 1.381 c
-37.887 1.381 37.703 1.311 37.549 1.176 c
-37.391 1.047 37.263 0.874 37.167 0.661 c
-37.167 -2.955 l
-36.344 -2.955 l
-36.344 2.013 l
-h
-43.26 -2.514 m
-42.984 -2.866 42.587 -3.043 42.069 -3.043 c
-41.628 -3.043 41.29 -2.893 41.055 -2.587 c
-40.827 -2.275 40.71 -1.819 40.702 -1.22 c
-40.702 2.013 l
-41.51 2.013 l
-41.51 -1.162 l
-41.51 -1.937 41.745 -2.323 42.216 -2.323 c
-42.705 -2.323 43.043 -2.103 43.23 -1.661 c
-43.23 2.013 l
-44.053 2.013 l
-44.053 -2.955 l
-43.274 -2.955 l
-h
-46.53 0.205 m
-47.382 2.013 l
-48.323 2.013 l
-46.971 -0.441 l
-48.353 -2.955 l
-47.426 -2.955 l
-46.545 -1.088 l
-45.663 -2.955 l
-44.722 -2.955 l
-46.104 -0.441 l
-44.766 2.013 l
-45.693 2.013 l
-h
-51.208 -0.25 m
-51.208 0.521 51.347 1.105 51.634 1.499 c
-51.918 1.899 52.329 2.102 52.87 2.102 c
-53.34 2.102 53.707 1.911 53.971 1.529 c
-53.971 4.101 l
-54.794 4.101 l
-54.794 -2.955 l
-54.045 -2.955 l
-54.001 -2.425 l
-53.736 -2.837 53.358 -3.043 52.87 -3.043 c
-52.347 -3.043 51.943 -2.849 51.649 -2.455 c
-51.355 -2.055 51.208 -1.484 51.208 -0.75 c
-h
-52.016 -0.706 m
-52.016 -1.264 52.097 -1.676 52.267 -1.941 c
-52.432 -2.198 52.7 -2.323 53.075 -2.323 c
-53.475 -2.323 53.773 -2.124 53.971 -1.72 c
-53.971 0.793 l
-53.766 1.182 53.464 1.381 53.075 1.381 c
-52.7 1.381 52.432 1.249 52.267 0.985 c
-52.097 0.727 52.016 0.33 52.016 -0.206 c
-h
-56.731 -2.955 -0.808 4.968 re
-56.79 3.337 m
-56.79 3.197 56.749 3.079 56.672 2.984 c
-56.602 2.896 56.489 2.851 56.334 2.851 c
-56.176 2.851 56.059 2.896 55.982 2.984 c
-55.912 3.079 55.879 3.197 55.879 3.337 c
-55.879 3.472 55.912 3.586 55.982 3.675 c
-56.059 3.77 56.172 3.821 56.319 3.821 c
-56.474 3.821 56.592 3.77 56.672 3.675 c
-56.749 3.586 56.79 3.472 56.79 3.337 c
-60.34 -1.676 m
-60.34 -1.511 60.27 -1.364 60.134 -1.235 c
-60.005 -1.11 59.752 -0.963 59.37 -0.794 c
-58.936 -0.611 58.628 -0.452 58.443 -0.324 c
-58.268 -0.198 58.135 -0.055 58.046 0.103 c
-57.959 0.268 57.915 0.463 57.915 0.691 c
-57.915 1.103 58.061 1.44 58.356 1.705 c
-58.649 1.969 59.024 2.102 59.488 2.102 c
-59.976 2.102 60.369 1.959 60.664 1.675 c
-60.957 1.4 61.104 1.043 61.104 0.602 c
-60.296 0.602 l
-60.296 0.827 60.215 1.018 60.061 1.176 c
-59.914 1.33 59.723 1.411 59.488 1.411 c
-59.253 1.411 59.064 1.344 58.929 1.22 c
-58.789 1.103 58.723 0.933 58.723 0.72 c
-58.723 0.551 58.771 0.419 58.87 0.323 c
-58.966 0.224 59.208 0.091 59.59 -0.073 c
-60.197 -0.309 60.608 -0.541 60.825 -0.765 c
-61.038 -0.992 61.148 -1.276 61.148 -1.617 c
-61.148 -2.051 60.994 -2.396 60.693 -2.66 c
-60.398 -2.918 60.002 -3.043 59.502 -3.043 c
-58.991 -3.043 58.576 -2.896 58.252 -2.602 c
-57.929 -2.308 57.768 -1.933 57.768 -1.47 c
-58.591 -1.47 l
-58.598 -1.746 58.682 -1.962 58.84 -2.117 c
-58.995 -2.275 59.216 -2.352 59.502 -2.352 c
-59.774 -2.352 59.98 -2.293 60.12 -2.176 c
-60.267 -2.051 60.34 -1.881 60.34 -1.676 c
-63.096 3.219 m
-63.096 2.013 l
-63.845 2.013 l
-63.845 1.352 l
-63.096 1.352 l
-63.096 -1.72 l
-63.096 -1.918 63.126 -2.07 63.184 -2.176 c
-63.251 -2.275 63.364 -2.323 63.523 -2.323 c
-63.629 -2.323 63.735 -2.305 63.845 -2.264 c
-63.831 -2.955 l
-63.654 -3.013 63.467 -3.043 63.272 -3.043 c
-62.949 -3.043 62.703 -2.933 62.538 -2.705 c
-62.368 -2.469 62.287 -2.147 62.287 -1.735 c
-62.287 1.352 l
-61.523 1.352 l
-61.523 2.013 l
-62.287 2.013 l
-62.287 3.219 l
-h
-66.745 1.249 m
-66.627 1.267 66.503 1.278 66.378 1.278 c
-65.955 1.278 65.665 1.051 65.51 0.602 c
-65.51 -2.955 l
-64.687 -2.955 l
-64.687 2.013 l
-65.481 2.013 l
-65.495 1.514 l
-65.709 1.903 66.017 2.102 66.422 2.102 c
-66.547 2.102 66.657 2.08 66.745 2.043 c
-h
-68.321 -2.955 -0.808 4.968 re
-68.38 3.337 m
-68.38 3.197 68.34 3.079 68.263 2.984 c
-68.193 2.896 68.078 2.851 67.924 2.851 c
-67.766 2.851 67.649 2.896 67.571 2.984 c
-67.502 3.079 67.469 3.197 67.469 3.337 c
-67.469 3.472 67.502 3.586 67.571 3.675 c
-67.649 3.77 67.763 3.821 67.91 3.821 c
-68.064 3.821 68.182 3.77 68.263 3.675 c
-68.34 3.586 68.38 3.472 68.38 3.337 c
-73.102 -0.706 m
-73.102 -1.482 72.959 -2.066 72.676 -2.455 c
-72.4 -2.849 72 -3.043 71.471 -3.043 c
-70.949 -3.043 70.559 -2.818 70.295 -2.367 c
-70.251 -2.955 l
-69.516 -2.955 l
-69.516 4.101 l
-70.324 4.101 l
-70.324 1.469 l
-70.588 1.888 70.971 2.102 71.471 2.102 c
-72.007 2.102 72.415 1.911 72.691 1.529 c
-72.963 1.146 73.102 0.562 73.102 -0.221 c
-h
-72.294 -0.25 m
-72.294 0.338 72.209 0.753 72.044 0.999 c
-71.886 1.253 71.621 1.381 71.251 1.381 c
-70.839 1.381 70.53 1.153 70.324 0.706 c
-70.324 -1.661 l
-70.519 -2.103 70.831 -2.323 71.265 -2.323 c
-71.625 -2.323 71.886 -2.198 72.044 -1.941 c
-72.209 -1.687 72.294 -1.29 72.294 -0.75 c
-h
-76.508 -2.514 m
-76.233 -2.866 75.837 -3.043 75.318 -3.043 c
-74.877 -3.043 74.54 -2.893 74.304 -2.587 c
-74.076 -2.275 73.958 -1.819 73.952 -1.22 c
-73.952 2.013 l
-74.76 2.013 l
-74.76 -1.162 l
-74.76 -1.937 74.995 -2.323 75.465 -2.323 c
-75.954 -2.323 76.292 -2.103 76.479 -1.661 c
-76.479 2.013 l
-77.302 2.013 l
-77.302 -2.955 l
-76.523 -2.955 l
-h
-79.412 3.219 m
-79.412 2.013 l
-80.161 2.013 l
-80.161 1.352 l
-79.412 1.352 l
-79.412 -1.72 l
-79.412 -1.918 79.442 -2.07 79.5 -2.176 c
-79.566 -2.275 79.681 -2.323 79.838 -2.323 c
-79.945 -2.323 80.051 -2.305 80.161 -2.264 c
-80.147 -2.955 l
-79.97 -3.013 79.783 -3.043 79.589 -3.043 c
-79.265 -3.043 79.018 -2.933 78.854 -2.705 c
-78.684 -2.469 78.604 -2.147 78.604 -1.735 c
-78.604 1.352 l
-77.839 1.352 l
-77.839 2.013 l
-78.604 2.013 l
-78.604 3.219 l
-h
-81.885 -2.955 -0.808 4.968 re
-81.944 3.337 m
-81.944 3.197 81.904 3.079 81.826 2.984 c
-81.757 2.896 81.642 2.851 81.488 2.851 c
-81.33 2.851 81.212 2.896 81.135 2.984 c
-81.065 3.079 81.032 3.197 81.032 3.337 c
-81.032 3.472 81.065 3.586 81.135 3.675 c
-81.212 3.77 81.327 3.821 81.474 3.821 c
-81.628 3.821 81.746 3.77 81.826 3.675 c
-81.904 3.586 81.944 3.472 81.944 3.337 c
-82.903 -0.235 m
-82.903 0.477 83.072 1.047 83.417 1.469 c
-83.77 1.888 84.233 2.102 84.814 2.102 c
-85.391 2.102 85.85 1.896 86.195 1.484 c
-86.548 1.08 86.729 0.521 86.739 -0.191 c
-86.739 -0.706 l
-86.739 -1.434 86.563 -2.007 86.21 -2.425 c
-85.865 -2.837 85.405 -3.043 84.828 -3.043 c
-84.248 -3.043 83.785 -2.845 83.432 -2.44 c
-83.087 -2.029 82.91 -1.478 82.903 -0.779 c
-h
-83.712 -0.706 m
-83.712 -1.216 83.807 -1.617 84.005 -1.912 c
-84.211 -2.205 84.483 -2.352 84.828 -2.352 c
-85.542 -2.352 85.909 -1.834 85.931 -0.794 c
-85.931 -0.235 l
-85.931 0.272 85.828 0.675 85.622 0.97 c
-85.424 1.263 85.156 1.411 84.814 1.411 c
-84.479 1.411 84.211 1.263 84.005 0.97 c
-83.807 0.675 83.712 0.272 83.712 -0.235 c
-h
-88.364 2.013 m
-88.393 1.484 l
-88.705 1.896 89.106 2.102 89.598 2.102 c
-90.48 2.102 90.925 1.517 90.936 0.353 c
-90.936 -2.955 l
-90.128 -2.955 l
-90.128 0.309 l
-90.128 0.698 90.062 0.974 89.937 1.132 c
-89.808 1.297 89.613 1.381 89.349 1.381 c
-89.143 1.381 88.959 1.311 88.805 1.176 c
-88.647 1.047 88.518 0.874 88.422 0.661 c
-88.422 -2.955 l
-87.599 -2.955 l
-87.599 2.013 l
-h
-94.398 -1.676 m
-94.398 -1.511 94.328 -1.364 94.192 -1.235 c
-94.064 -1.11 93.81 -0.963 93.428 -0.794 c
-92.994 -0.611 92.685 -0.452 92.501 -0.324 c
-92.325 -0.198 92.192 -0.055 92.105 0.103 c
-92.017 0.268 91.972 0.463 91.972 0.691 c
-91.972 1.103 92.119 1.44 92.414 1.705 c
-92.707 1.969 93.082 2.102 93.545 2.102 c
-94.034 2.102 94.427 1.959 94.721 1.675 c
-95.015 1.4 95.162 1.043 95.162 0.602 c
-94.353 0.602 l
-94.353 0.827 94.272 1.018 94.118 1.176 c
-93.971 1.33 93.78 1.411 93.545 1.411 c
-93.31 1.411 93.123 1.344 92.986 1.22 c
-92.847 1.103 92.78 0.933 92.78 0.72 c
-92.78 0.551 92.828 0.419 92.928 0.323 c
-93.023 0.224 93.266 0.091 93.648 -0.073 c
-94.255 -0.309 94.666 -0.541 94.883 -0.765 c
-95.096 -0.992 95.206 -1.276 95.206 -1.617 c
-95.206 -2.051 95.051 -2.396 94.75 -2.66 c
-94.457 -2.918 94.06 -3.043 93.559 -3.043 c
-93.049 -3.043 92.634 -2.896 92.31 -2.602 c
-91.987 -2.308 91.826 -1.933 91.826 -1.47 c
-92.649 -1.47 l
-92.655 -1.746 92.74 -1.962 92.898 -2.117 c
-93.052 -2.275 93.273 -2.352 93.559 -2.352 c
-93.831 -2.352 94.037 -2.293 94.177 -2.176 c
-94.324 -2.051 94.398 -1.881 94.398 -1.676 c
-102.699 -2.117 m
-102.552 -2.308 l
-102.13 -2.801 101.512 -3.043 100.7 -3.043 c
-99.972 -3.043 99.406 -2.804 98.995 -2.323 c
-98.583 -1.845 98.37 -1.169 98.363 -0.294 c
-98.363 1.014 l
-98.363 1.955 98.546 2.653 98.922 3.116 c
-99.292 3.586 99.855 3.821 100.612 3.821 c
-101.247 3.821 101.744 3.645 102.097 3.293 c
-102.456 2.94 102.658 2.433 102.699 1.778 c
-101.861 1.778 l
-101.821 2.19 101.703 2.514 101.509 2.749 c
-101.31 2.984 101.012 3.102 100.612 3.102 c
-100.13 3.102 99.778 2.944 99.553 2.631 c
-99.325 2.315 99.208 1.815 99.201 1.132 c
-99.201 -0.235 l
-99.201 -0.912 99.325 -1.434 99.583 -1.794 c
-99.847 -2.147 100.219 -2.323 100.7 -2.323 c
-101.148 -2.323 101.494 -2.216 101.729 -1.999 c
-101.861 -1.881 l
-101.861 -0.339 l
-100.626 -0.339 l
-100.626 0.382 l
-102.699 0.382 l
-h
-104.617 -2.955 -0.808 4.968 re
-104.676 3.337 m
-104.676 3.197 104.636 3.079 104.558 2.984 c
-104.489 2.896 104.375 2.851 104.22 2.851 c
-104.062 2.851 103.944 2.896 103.867 2.984 c
-103.797 3.079 103.765 3.197 103.765 3.337 c
-103.765 3.472 103.797 3.586 103.867 3.675 c
-103.944 3.77 104.059 3.821 104.206 3.821 c
-104.36 3.821 104.478 3.77 104.558 3.675 c
-104.636 3.586 104.676 3.472 104.676 3.337 c
-106.874 3.219 m
-106.874 2.013 l
-107.623 2.013 l
-107.623 1.352 l
-106.874 1.352 l
-106.874 -1.72 l
-106.874 -1.918 106.903 -2.07 106.962 -2.176 c
-107.028 -2.275 107.142 -2.323 107.3 -2.323 c
-107.406 -2.323 107.512 -2.305 107.623 -2.264 c
-107.608 -2.955 l
-107.432 -3.013 107.244 -3.043 107.05 -3.043 c
-106.727 -3.043 106.48 -2.933 106.315 -2.705 c
-106.146 -2.469 106.065 -2.147 106.065 -1.735 c
-106.065 1.352 l
-105.301 1.352 l
-105.301 2.013 l
-106.065 2.013 l
-106.065 3.219 l
-h
-113.197 -1.676 m
-113.197 -1.511 113.128 -1.364 112.992 -1.235 c
-112.863 -1.11 112.609 -0.963 112.227 -0.794 c
-111.794 -0.611 111.485 -0.452 111.302 -0.324 c
-111.125 -0.198 110.993 -0.055 110.905 0.103 c
-110.816 0.268 110.772 0.463 110.772 0.691 c
-110.772 1.103 110.92 1.44 111.213 1.705 c
-111.508 1.969 111.882 2.102 112.345 2.102 c
-112.834 2.102 113.227 1.959 113.521 1.675 c
-113.815 1.4 113.962 1.043 113.962 0.602 c
-113.154 0.602 l
-113.154 0.827 113.073 1.018 112.919 1.176 c
-112.771 1.33 112.58 1.411 112.345 1.411 c
-112.11 1.411 111.923 1.344 111.786 1.22 c
-111.647 1.103 111.581 0.933 111.581 0.72 c
-111.581 0.551 111.628 0.419 111.728 0.323 c
-111.823 0.224 112.066 0.091 112.448 -0.073 c
-113.054 -0.309 113.466 -0.541 113.683 -0.765 c
-113.896 -0.992 114.006 -1.276 114.006 -1.617 c
-114.006 -2.051 113.852 -2.396 113.55 -2.66 c
-113.257 -2.918 112.86 -3.043 112.36 -3.043 c
-111.849 -3.043 111.433 -2.896 111.111 -2.602 c
-110.787 -2.308 110.625 -1.933 110.625 -1.47 c
-111.448 -1.47 l
-111.456 -1.746 111.541 -1.962 111.699 -2.117 c
-111.853 -2.275 112.073 -2.352 112.36 -2.352 c
-112.632 -2.352 112.838 -2.293 112.977 -2.176 c
-113.124 -2.051 113.197 -1.881 113.197 -1.676 c
-115.703 1.499 m
-116.005 1.899 116.399 2.102 116.879 2.102 c
-117.762 2.102 118.207 1.517 118.217 0.353 c
-118.217 -2.955 l
-117.409 -2.955 l
-117.409 0.309 l
-117.409 0.698 117.343 0.974 117.218 1.132 c
-117.089 1.297 116.894 1.381 116.63 1.381 c
-116.424 1.381 116.241 1.311 116.086 1.176 c
-115.928 1.047 115.799 0.874 115.703 0.661 c
-115.703 -2.955 l
-114.88 -2.955 l
-114.88 4.101 l
-115.703 4.101 l
-h
-119.077 -0.235 m
-119.077 0.477 119.246 1.047 119.591 1.469 c
-119.944 1.888 120.407 2.102 120.989 2.102 c
-121.565 2.102 122.024 1.896 122.37 1.484 c
-122.722 1.08 122.903 0.521 122.914 -0.191 c
-122.914 -0.706 l
-122.914 -1.434 122.737 -2.007 122.385 -2.425 c
-122.039 -2.837 121.58 -3.043 121.003 -3.043 c
-120.422 -3.043 119.959 -2.845 119.607 -2.44 c
-119.261 -2.029 119.084 -1.478 119.077 -0.779 c
-h
-119.886 -0.706 m
-119.886 -1.216 119.981 -1.617 120.179 -1.912 c
-120.385 -2.205 120.657 -2.352 121.003 -2.352 c
-121.716 -2.352 122.084 -1.834 122.105 -0.794 c
-122.105 -0.235 l
-122.105 0.272 122.003 0.675 121.797 0.97 c
-121.598 1.263 121.33 1.411 120.989 1.411 c
-120.654 1.411 120.385 1.263 120.179 0.97 c
-119.981 0.675 119.886 0.272 119.886 -0.235 c
-h
-126.317 -2.514 m
-126.041 -2.866 125.644 -3.043 125.126 -3.043 c
-124.685 -3.043 124.347 -2.893 124.112 -2.587 c
-123.884 -2.275 123.767 -1.819 123.759 -1.22 c
-123.759 2.013 l
-124.567 2.013 l
-124.567 -1.162 l
-124.567 -1.937 124.802 -2.323 125.273 -2.323 c
-125.762 -2.323 126.1 -2.103 126.287 -1.661 c
-126.287 2.013 l
-127.11 2.013 l
-127.11 -2.955 l
-126.331 -2.955 l
-h
-129.029 -2.955 -0.809 7.056 re
-130.05 -0.25 m
-130.05 0.521 130.19 1.105 130.477 1.499 c
-130.759 1.899 131.171 2.102 131.711 2.102 c
-132.181 2.102 132.549 1.911 132.814 1.529 c
-132.814 4.101 l
-133.637 4.101 l
-133.637 -2.955 l
-132.887 -2.955 l
-132.843 -2.425 l
-132.578 -2.837 132.2 -3.043 131.711 -3.043 c
-131.189 -3.043 130.785 -2.849 130.491 -2.455 c
-130.197 -2.055 130.05 -1.484 130.05 -0.75 c
-h
-130.859 -0.706 m
-130.859 -1.264 130.94 -1.676 131.108 -1.941 c
-131.274 -2.198 131.542 -2.323 131.917 -2.323 c
-132.318 -2.323 132.615 -2.124 132.814 -1.72 c
-132.814 0.793 l
-132.608 1.182 132.307 1.381 131.917 1.381 c
-131.542 1.381 131.274 1.249 131.108 0.985 c
-130.94 0.727 130.859 0.33 130.859 -0.206 c
-h
-140.6 -0.706 m
-140.6 -1.482 140.457 -2.066 140.174 -2.455 c
-139.898 -2.849 139.498 -3.043 138.969 -3.043 c
-138.447 -3.043 138.057 -2.818 137.793 -2.367 c
-137.749 -2.955 l
-137.014 -2.955 l
-137.014 4.101 l
-137.822 4.101 l
-137.822 1.469 l
-138.086 1.888 138.469 2.102 138.969 2.102 c
-139.505 2.102 139.913 1.911 140.189 1.529 c
-140.461 1.146 140.6 0.562 140.6 -0.221 c
-h
-139.792 -0.25 m
-139.792 0.338 139.707 0.753 139.542 0.999 c
-139.384 1.253 139.119 1.381 138.749 1.381 c
-138.337 1.381 138.028 1.153 137.822 0.706 c
-137.822 -1.661 l
-138.017 -2.103 138.329 -2.323 138.763 -2.323 c
-139.123 -2.323 139.384 -2.198 139.542 -1.941 c
-139.707 -1.687 139.792 -1.29 139.792 -0.75 c
-h
-143.243 -3.043 m
-142.626 -3.043 142.148 -2.863 141.816 -2.5 c
-141.494 -2.128 141.325 -1.584 141.317 -0.867 c
-141.317 -0.265 l
-141.317 0.47 141.479 1.047 141.802 1.469 c
-142.125 1.888 142.574 2.102 143.154 2.102 c
-143.731 2.102 144.161 1.914 144.448 1.543 c
-144.742 1.18 144.893 0.606 144.904 -0.177 c
-144.904 -0.706 l
-142.125 -0.706 l
-142.125 -0.823 l
-142.125 -1.364 142.221 -1.757 142.42 -1.999 c
-142.626 -2.234 142.911 -2.352 143.287 -2.352 c
-143.53 -2.352 143.742 -2.308 143.919 -2.22 c
-144.103 -2.132 144.276 -1.992 144.434 -1.794 c
-144.86 -2.308 l
-144.507 -2.801 143.966 -3.043 143.243 -3.043 c
-143.154 1.411 m
-142.82 1.411 142.57 1.294 142.404 1.058 c
-142.236 0.83 142.144 0.474 142.125 -0.015 c
-144.081 -0.015 l
-144.081 0.103 l
-144.058 0.573 143.977 0.904 143.831 1.103 c
-143.684 1.308 143.455 1.411 143.154 1.411 c
-150.562 -2.955 m
-150.511 -2.849 150.478 -2.668 150.46 -2.411 c
-150.173 -2.833 149.805 -3.043 149.357 -3.043 c
-148.905 -3.043 148.552 -2.922 148.299 -2.675 c
-148.053 -2.422 147.931 -2.066 147.931 -1.602 c
-147.931 -1.095 148.101 -0.691 148.446 -0.397 c
-148.787 -0.103 149.258 0.047 149.857 0.058 c
-150.445 0.058 l
-150.445 0.588 l
-150.445 0.882 150.375 1.091 150.239 1.22 c
-150.111 1.344 149.916 1.411 149.651 1.411 c
-149.405 1.411 149.203 1.338 149.049 1.19 c
-148.902 1.043 148.828 0.856 148.828 0.632 c
-148.005 0.632 l
-148.005 0.885 148.079 1.132 148.226 1.367 c
-148.38 1.602 148.586 1.782 148.843 1.911 c
-149.097 2.036 149.379 2.102 149.695 2.102 c
-150.202 2.102 150.592 1.973 150.857 1.72 c
-151.121 1.473 151.254 1.105 151.254 0.617 c
-151.254 -1.881 l
-151.261 -2.264 151.316 -2.598 151.415 -2.881 c
-151.415 -2.955 l
-h
-149.49 -2.308 m
-149.685 -2.308 149.872 -2.257 150.048 -2.147 c
-150.232 -2.029 150.364 -1.893 150.445 -1.735 c
-150.445 -0.544 l
-149.99 -0.544 l
-149.608 -0.555 149.302 -0.643 149.078 -0.809 c
-148.85 -0.977 148.74 -1.206 148.74 -1.5 c
-148.74 -1.786 148.791 -1.992 148.902 -2.117 c
-149.02 -2.246 149.214 -2.308 149.49 -2.308 c
-153.668 -1.72 m
-154.609 2.013 l
-155.447 2.013 l
-153.961 -2.955 l
-153.359 -2.955 l
-151.86 2.013 l
-152.698 2.013 l
-h
-158.607 -2.955 m
-158.555 -2.849 158.522 -2.668 158.504 -2.411 c
-158.217 -2.833 157.849 -3.043 157.402 -3.043 c
-156.949 -3.043 156.596 -2.922 156.343 -2.675 c
-156.097 -2.422 155.976 -2.066 155.976 -1.602 c
-155.976 -1.095 156.145 -0.691 156.49 -0.397 c
-156.832 -0.103 157.302 0.047 157.901 0.058 c
-158.489 0.058 l
-158.489 0.588 l
-158.489 0.882 158.42 1.091 158.283 1.22 c
-158.154 1.344 157.96 1.411 157.695 1.411 c
-157.449 1.411 157.247 1.338 157.093 1.19 c
-156.945 1.043 156.872 0.856 156.872 0.632 c
-156.049 0.632 l
-156.049 0.885 156.122 1.132 156.27 1.367 c
-156.424 1.602 156.629 1.782 156.887 1.911 c
-157.14 2.036 157.423 2.102 157.739 2.102 c
-158.247 2.102 158.636 1.973 158.9 1.72 c
-159.166 1.473 159.297 1.105 159.297 0.617 c
-159.297 -1.881 l
-159.305 -2.264 159.36 -2.598 159.459 -2.881 c
-159.459 -2.955 l
-h
-157.533 -2.308 m
-157.728 -2.308 157.916 -2.257 158.092 -2.147 c
-158.276 -2.029 158.408 -1.893 158.489 -1.735 c
-158.489 -0.544 l
-158.034 -0.544 l
-157.651 -0.555 157.346 -0.643 157.122 -0.809 c
-156.895 -0.977 156.784 -1.206 156.784 -1.5 c
-156.784 -1.786 156.835 -1.992 156.945 -2.117 c
-157.063 -2.246 157.258 -2.308 157.533 -2.308 c
-161.252 -2.955 -0.808 4.968 re
-161.311 3.337 m
-161.311 3.197 161.271 3.079 161.194 2.984 c
-161.124 2.896 161.01 2.851 160.856 2.851 c
-160.698 2.851 160.581 2.896 160.503 2.984 c
-160.433 3.079 160.4 3.197 160.4 3.337 c
-160.4 3.472 160.433 3.586 160.503 3.675 c
-160.581 3.77 160.694 3.821 160.841 3.821 c
-160.995 3.821 161.113 3.77 161.194 3.675 c
-161.271 3.586 161.311 3.472 161.311 3.337 c
-163.314 -2.955 -0.809 7.056 re
-167.055 -2.955 m
-167.004 -2.849 166.971 -2.668 166.952 -2.411 c
-166.665 -2.833 166.298 -3.043 165.85 -3.043 c
-165.398 -3.043 165.045 -2.922 164.791 -2.675 c
-164.545 -2.422 164.424 -2.066 164.424 -1.602 c
-164.424 -1.095 164.593 -0.691 164.938 -0.397 c
-165.28 -0.103 165.751 0.047 166.349 0.058 c
-166.937 0.058 l
-166.937 0.588 l
-166.937 0.882 166.867 1.091 166.732 1.22 c
-166.603 1.344 166.408 1.411 166.144 1.411 c
-165.898 1.411 165.695 1.338 165.541 1.19 c
-165.394 1.043 165.321 0.856 165.321 0.632 c
-164.498 0.632 l
-164.498 0.885 164.571 1.132 164.718 1.367 c
-164.872 1.602 165.078 1.782 165.335 1.911 c
-165.589 2.036 165.872 2.102 166.188 2.102 c
-166.695 2.102 167.085 1.973 167.349 1.72 c
-167.613 1.473 167.746 1.105 167.746 0.617 c
-167.746 -1.881 l
-167.754 -2.264 167.808 -2.598 167.908 -2.881 c
-167.908 -2.955 l
-h
-165.982 -2.308 m
-166.177 -2.308 166.364 -2.257 166.541 -2.147 c
-166.724 -2.029 166.856 -1.893 166.937 -1.735 c
-166.937 -0.544 l
-166.482 -0.544 l
-166.1 -0.555 165.795 -0.643 165.57 -0.809 c
-165.342 -0.977 165.232 -1.206 165.232 -1.5 c
-165.232 -1.786 165.284 -1.992 165.394 -2.117 c
-165.512 -2.246 165.707 -2.308 165.982 -2.308 c
-172.421 -0.706 m
-172.421 -1.482 172.277 -2.066 171.994 -2.455 c
-171.718 -2.849 171.318 -3.043 170.788 -3.043 c
-170.266 -3.043 169.877 -2.818 169.612 -2.367 c
-169.568 -2.955 l
-168.834 -2.955 l
-168.834 4.101 l
-169.642 4.101 l
-169.642 1.469 l
-169.907 1.888 170.289 2.102 170.788 2.102 c
-171.325 2.102 171.733 1.911 172.009 1.529 c
-172.28 1.146 172.421 0.562 172.421 -0.221 c
-h
-171.612 -0.25 m
-171.612 0.338 171.527 0.753 171.362 0.999 c
-171.204 1.253 170.939 1.381 170.568 1.381 c
-170.156 1.381 169.848 1.153 169.642 0.706 c
-169.642 -1.661 l
-169.836 -2.103 170.149 -2.323 170.582 -2.323 c
-170.943 -2.323 171.204 -2.198 171.362 -1.941 c
-171.527 -1.687 171.612 -1.29 171.612 -0.75 c
-h
-174.162 -2.955 -0.808 7.056 re
-177.124 -3.043 m
-176.506 -3.043 176.028 -2.863 175.698 -2.5 c
-175.375 -2.128 175.205 -1.584 175.199 -0.867 c
-175.199 -0.265 l
-175.199 0.47 175.36 1.047 175.683 1.469 c
-176.007 1.888 176.455 2.102 177.036 2.102 c
-177.613 2.102 178.042 1.914 178.329 1.543 c
-178.623 1.18 178.773 0.606 178.785 -0.177 c
-178.785 -0.706 l
-176.007 -0.706 l
-176.007 -0.823 l
-176.007 -1.364 176.103 -1.757 176.301 -1.999 c
-176.506 -2.234 176.793 -2.352 177.168 -2.352 c
-177.41 -2.352 177.624 -2.308 177.8 -2.22 c
-177.984 -2.132 178.156 -1.992 178.314 -1.794 c
-178.74 -2.308 l
-178.388 -2.801 177.848 -3.043 177.124 -3.043 c
-177.036 1.411 m
-176.701 1.411 176.452 1.294 176.286 1.058 c
-176.117 0.83 176.026 0.474 176.007 -0.015 c
-177.962 -0.015 l
-177.962 0.103 l
-177.94 0.573 177.859 0.904 177.712 1.103 c
-177.565 1.308 177.337 1.411 177.036 1.411 c
-182.769 -2.955 -0.809 4.968 re
-182.827 3.337 m
-182.827 3.197 182.787 3.079 182.709 2.984 c
-182.64 2.896 182.526 2.851 182.372 2.851 c
-182.214 2.851 182.096 2.896 182.019 2.984 c
-181.948 3.079 181.915 3.197 181.915 3.337 c
-181.915 3.472 181.948 3.586 182.019 3.675 c
-182.096 3.77 182.21 3.821 182.357 3.821 c
-182.511 3.821 182.629 3.77 182.709 3.675 c
-182.787 3.586 182.827 3.472 182.827 3.337 c
-184.716 2.013 m
-184.745 1.484 l
-185.058 1.896 185.458 2.102 185.95 2.102 c
-186.833 2.102 187.277 1.517 187.288 0.353 c
-187.288 -2.955 l
-186.48 -2.955 l
-186.48 0.309 l
-186.48 0.698 186.414 0.974 186.289 1.132 c
-186.16 1.297 185.965 1.381 185.701 1.381 c
-185.495 1.381 185.312 1.311 185.157 1.176 c
-184.999 1.047 184.87 0.874 184.774 0.661 c
-184.774 -2.955 l
-183.951 -2.955 l
-183.951 2.013 l
-h
-191.706 3.219 m
-191.706 2.013 l
-192.455 2.013 l
-192.455 1.352 l
-191.706 1.352 l
-191.706 -1.72 l
-191.706 -1.918 191.735 -2.07 191.793 -2.176 c
-191.86 -2.275 191.974 -2.323 192.132 -2.323 c
-192.238 -2.323 192.345 -2.305 192.455 -2.264 c
-192.44 -2.955 l
-192.264 -3.013 192.076 -3.043 191.882 -3.043 c
-191.558 -3.043 191.313 -2.933 191.147 -2.705 c
-190.978 -2.469 190.897 -2.147 190.897 -1.735 c
-190.897 1.352 l
-190.133 1.352 l
-190.133 2.013 l
-190.897 2.013 l
-190.897 3.219 l
-h
-194.12 1.499 m
-194.421 1.899 194.814 2.102 195.296 2.102 c
-196.177 2.102 196.622 1.517 196.633 0.353 c
-196.633 -2.955 l
-195.824 -2.955 l
-195.824 0.309 l
-195.824 0.698 195.758 0.974 195.633 1.132 c
-195.505 1.297 195.311 1.381 195.045 1.381 c
-194.84 1.381 194.656 1.311 194.502 1.176 c
-194.344 1.047 194.216 0.874 194.12 0.661 c
-194.12 -2.955 l
-193.297 -2.955 l
-193.297 4.101 l
-194.12 4.101 l
-h
-199.433 -3.043 m
-198.816 -3.043 198.338 -2.863 198.008 -2.5 c
-197.684 -2.128 197.515 -1.584 197.508 -0.867 c
-197.508 -0.265 l
-197.508 0.47 197.669 1.047 197.993 1.469 c
-198.316 1.888 198.764 2.102 199.346 2.102 c
-199.922 2.102 200.352 1.914 200.639 1.543 c
-200.933 1.18 201.083 0.606 201.094 -0.177 c
-201.094 -0.706 l
-198.316 -0.706 l
-198.316 -0.823 l
-198.316 -1.364 198.411 -1.757 198.61 -1.999 c
-198.816 -2.234 199.103 -2.352 199.477 -2.352 c
-199.72 -2.352 199.933 -2.308 200.109 -2.22 c
-200.293 -2.132 200.466 -1.992 200.624 -1.794 c
-201.05 -2.308 l
-200.697 -2.801 200.157 -3.043 199.433 -3.043 c
-199.346 1.411 m
-199.011 1.411 198.761 1.294 198.596 1.058 c
-198.426 0.83 198.334 0.474 198.316 -0.015 c
-200.271 -0.015 l
-200.271 0.103 l
-200.25 0.573 200.169 0.904 200.021 1.103 c
-199.874 1.308 199.647 1.411 199.346 1.411 c
-206.621 -1.676 m
-206.621 -1.511 206.552 -1.364 206.415 -1.235 c
-206.287 -1.11 206.033 -0.963 205.651 -0.794 c
-205.218 -0.611 204.909 -0.452 204.725 -0.324 c
-204.549 -0.198 204.416 -0.055 204.329 0.103 c
-204.24 0.268 204.196 0.463 204.196 0.691 c
-204.196 1.103 204.343 1.44 204.637 1.705 c
-204.931 1.969 205.306 2.102 205.769 2.102 c
-206.257 2.102 206.65 1.959 206.945 1.675 c
-207.238 1.4 207.386 1.043 207.386 0.602 c
-206.577 0.602 l
-206.577 0.827 206.496 1.018 206.342 1.176 c
-206.195 1.33 206.004 1.411 205.769 1.411 c
-205.534 1.411 205.346 1.344 205.21 1.22 c
-205.071 1.103 205.004 0.933 205.004 0.72 c
-205.004 0.551 205.052 0.419 205.151 0.323 c
-205.247 0.224 205.49 0.091 205.871 -0.073 c
-206.478 -0.309 206.889 -0.541 207.107 -0.765 c
-207.319 -0.992 207.429 -1.276 207.429 -1.617 c
-207.429 -2.051 207.275 -2.396 206.974 -2.66 c
-206.68 -2.918 206.283 -3.043 205.783 -3.043 c
-205.272 -3.043 204.857 -2.896 204.534 -2.602 c
-204.21 -2.308 204.049 -1.933 204.049 -1.47 c
-204.872 -1.47 l
-204.879 -1.746 204.964 -1.962 205.122 -2.117 c
-205.276 -2.275 205.497 -2.352 205.783 -2.352 c
-206.055 -2.352 206.261 -2.293 206.401 -2.176 c
-206.548 -2.051 206.621 -1.881 206.621 -1.676 c
-209.378 3.219 m
-209.378 2.013 l
-210.127 2.013 l
-210.127 1.352 l
-209.378 1.352 l
-209.378 -1.72 l
-209.378 -1.918 209.407 -2.07 209.465 -2.176 c
-209.532 -2.275 209.646 -2.323 209.804 -2.323 c
-209.91 -2.323 210.016 -2.305 210.127 -2.264 c
-210.112 -2.955 l
-209.935 -3.013 209.748 -3.043 209.553 -3.043 c
-209.23 -3.043 208.984 -2.933 208.819 -2.705 c
-208.649 -2.469 208.569 -2.147 208.569 -1.735 c
-208.569 1.352 l
-207.805 1.352 l
-207.805 2.013 l
-208.569 2.013 l
-208.569 3.219 l
-h
-213.526 -2.955 m
-213.474 -2.849 213.442 -2.668 213.423 -2.411 c
-213.137 -2.833 212.769 -3.043 212.321 -3.043 c
-211.869 -3.043 211.516 -2.922 211.263 -2.675 c
-211.016 -2.422 210.895 -2.066 210.895 -1.602 c
-210.895 -1.095 211.064 -0.691 211.41 -0.397 c
-211.751 -0.103 212.221 0.047 212.821 0.058 c
-213.409 0.058 l
-213.409 0.588 l
-213.409 0.882 213.339 1.091 213.203 1.22 c
-213.074 1.344 212.879 1.411 212.615 1.411 c
-212.368 1.411 212.167 1.338 212.012 1.19 c
-211.865 1.043 211.792 0.856 211.792 0.632 c
-210.968 0.632 l
-210.968 0.885 211.042 1.132 211.188 1.367 c
-211.344 1.602 211.549 1.782 211.807 1.911 c
-212.06 2.036 212.343 2.102 212.659 2.102 c
-213.166 2.102 213.555 1.973 213.82 1.72 c
-214.085 1.473 214.217 1.105 214.217 0.617 c
-214.217 -1.881 l
-214.224 -2.264 214.28 -2.598 214.378 -2.881 c
-214.378 -2.955 l
-h
-212.453 -2.308 m
-212.648 -2.308 212.835 -2.257 213.012 -2.147 c
-213.195 -2.029 213.328 -1.893 213.409 -1.735 c
-213.409 -0.544 l
-212.952 -0.544 l
-212.57 -0.555 212.266 -0.643 212.042 -0.809 c
-211.814 -0.977 211.703 -1.206 211.703 -1.5 c
-211.703 -1.786 211.755 -1.992 211.865 -2.117 c
-211.982 -2.246 212.177 -2.308 212.453 -2.308 c
-216.054 2.013 m
-216.084 1.484 l
-216.396 1.896 216.796 2.102 217.289 2.102 c
-218.171 2.102 218.616 1.517 218.627 0.353 c
-218.627 -2.955 l
-217.818 -2.955 l
-217.818 0.309 l
-217.818 0.698 217.752 0.974 217.627 1.132 c
-217.499 1.297 217.303 1.381 217.039 1.381 c
-216.833 1.381 216.649 1.311 216.495 1.176 c
-216.337 1.047 216.208 0.874 216.113 0.661 c
-216.113 -2.955 l
-215.29 -2.955 l
-215.29 2.013 l
-h
-219.505 -0.25 m
-219.505 0.521 219.645 1.105 219.931 1.499 c
-220.214 1.899 220.626 2.102 221.166 2.102 c
-221.636 2.102 222.004 1.911 222.268 1.529 c
-222.268 4.101 l
-223.092 4.101 l
-223.092 -2.955 l
-222.342 -2.955 l
-222.298 -2.425 l
-222.033 -2.837 221.654 -3.043 221.166 -3.043 c
-220.644 -3.043 220.24 -2.849 219.946 -2.455 c
-219.652 -2.055 219.505 -1.484 219.505 -0.75 c
-h
-220.314 -0.706 m
-220.314 -1.264 220.395 -1.676 220.563 -1.941 c
-220.729 -2.198 220.997 -2.323 221.372 -2.323 c
-221.772 -2.323 222.07 -2.124 222.268 -1.72 c
-222.268 0.793 l
-222.062 1.182 221.761 1.381 221.372 1.381 c
-220.997 1.381 220.729 1.249 220.563 0.985 c
-220.395 0.727 220.314 0.33 220.314 -0.206 c
-h
-226.704 -2.955 m
-226.652 -2.849 226.619 -2.668 226.601 -2.411 c
-226.315 -2.833 225.947 -3.043 225.498 -3.043 c
-225.047 -3.043 224.694 -2.922 224.44 -2.675 c
-224.194 -2.422 224.073 -2.066 224.073 -1.602 c
-224.073 -1.095 224.241 -0.691 224.587 -0.397 c
-224.929 -0.103 225.399 0.047 225.999 0.058 c
-226.587 0.058 l
-226.587 0.588 l
-226.587 0.882 226.516 1.091 226.38 1.22 c
-226.252 1.344 226.057 1.411 225.793 1.411 c
-225.546 1.411 225.344 1.338 225.19 1.19 c
-225.043 1.043 224.969 0.856 224.969 0.632 c
-224.146 0.632 l
-224.146 0.885 224.22 1.132 224.366 1.367 c
-224.521 1.602 224.727 1.782 224.984 1.911 c
-225.237 2.036 225.521 2.102 225.837 2.102 c
-226.344 2.102 226.733 1.973 226.998 1.72 c
-227.262 1.473 227.395 1.105 227.395 0.617 c
-227.395 -1.881 l
-227.402 -2.264 227.457 -2.598 227.556 -2.881 c
-227.556 -2.955 l
-h
-225.631 -2.308 m
-225.825 -2.308 226.013 -2.257 226.19 -2.147 c
-226.373 -2.029 226.506 -1.893 226.587 -1.735 c
-226.587 -0.544 l
-226.13 -0.544 l
-225.748 -0.555 225.443 -0.643 225.22 -0.809 c
-224.991 -0.977 224.881 -1.206 224.881 -1.5 c
-224.881 -1.786 224.933 -1.992 225.043 -2.117 c
-225.16 -2.246 225.355 -2.308 225.631 -2.308 c
-230.525 1.249 m
-230.408 1.267 230.283 1.278 230.159 1.278 c
-229.735 1.278 229.445 1.051 229.291 0.602 c
-229.291 -2.955 l
-228.468 -2.955 l
-228.468 2.013 l
-229.261 2.013 l
-229.276 1.514 l
-229.49 1.903 229.798 2.102 230.202 2.102 c
-230.327 2.102 230.437 2.08 230.525 2.043 c
-h
-230.97 -0.25 m
-230.97 0.521 231.11 1.105 231.396 1.499 c
-231.68 1.899 232.091 2.102 232.631 2.102 c
-233.101 2.102 233.469 1.911 233.733 1.529 c
-233.733 4.101 l
-234.556 4.101 l
-234.556 -2.955 l
-233.807 -2.955 l
-233.763 -2.425 l
-233.498 -2.837 233.12 -3.043 232.631 -3.043 c
-232.11 -3.043 231.705 -2.849 231.412 -2.455 c
-231.117 -2.055 230.97 -1.484 230.97 -0.75 c
-h
-231.778 -0.706 m
-231.778 -1.264 231.859 -1.676 232.029 -1.941 c
-232.194 -2.198 232.462 -2.323 232.837 -2.323 c
-233.238 -2.323 233.535 -2.124 233.733 -1.72 c
-233.733 0.793 l
-233.528 1.182 233.226 1.381 232.837 1.381 c
-232.462 1.381 232.194 1.249 232.029 0.985 c
-231.859 0.727 231.778 0.33 231.778 -0.206 c
-h
-f
-Q
-q 1 0 0 1 538.5375 394.9912 cm
-0 0 m
-0 0.166 -0.071 0.312 -0.206 0.441 c
--0.335 0.566 -0.588 0.713 -0.971 0.882 c
--1.405 1.066 -1.713 1.224 -1.896 1.353 c
--2.073 1.478 -2.205 1.621 -2.294 1.779 c
--2.382 1.945 -2.426 2.139 -2.426 2.367 c
--2.426 2.779 -2.278 3.117 -1.985 3.381 c
--1.69 3.645 -1.316 3.778 -0.853 3.778 c
--0.364 3.778 0.029 3.635 0.323 3.352 c
-0.617 3.076 0.764 2.72 0.764 2.278 c
--0.044 2.278 l
--0.044 2.503 -0.125 2.694 -0.279 2.852 c
--0.427 3.007 -0.618 3.088 -0.853 3.088 c
--1.088 3.088 -1.276 3.021 -1.411 2.897 c
--1.551 2.779 -1.617 2.61 -1.617 2.396 c
--1.617 2.228 -1.569 2.095 -1.47 1.999 c
--1.374 1.9 -1.133 1.768 -0.75 1.603 c
--0.144 1.368 0.268 1.135 0.484 0.912 c
-0.698 0.684 0.808 0.401 0.808 0.059 c
-0.808 -0.374 0.654 -0.72 0.353 -0.984 c
-0.058 -1.242 -0.339 -1.367 -0.838 -1.367 c
--1.349 -1.367 -1.764 -1.219 -2.087 -0.926 c
--2.411 -0.631 -2.573 -0.257 -2.573 0.206 c
--1.75 0.206 l
--1.742 -0.07 -1.658 -0.286 -1.5 -0.44 c
--1.345 -0.598 -1.125 -0.675 -0.838 -0.675 c
--0.566 -0.675 -0.36 -0.617 -0.221 -0.5 c
--0.074 -0.374 0 -0.205 0 0 c
-3.05 0.074 m
-3.946 3.69 l
-4.814 3.69 l
-3.182 -1.984 l
-3.064 -2.403 2.892 -2.726 2.667 -2.954 c
-2.439 -3.179 2.186 -3.293 1.903 -3.293 c
-1.793 -3.293 1.657 -3.266 1.491 -3.218 c
-1.491 -2.528 l
-1.668 -2.543 l
-1.903 -2.543 2.083 -2.484 2.212 -2.366 c
-2.348 -2.256 2.454 -2.065 2.535 -1.793 c
-2.697 -1.234 l
-1.242 3.69 l
-2.123 3.69 l
-h
-7.867 0 m
-7.867 0.166 7.798 0.312 7.661 0.441 c
-7.532 0.566 7.279 0.713 6.898 0.882 c
-6.464 1.066 6.155 1.224 5.971 1.353 c
-5.795 1.478 5.662 1.621 5.574 1.779 c
-5.486 1.945 5.442 2.139 5.442 2.367 c
-5.442 2.779 5.589 3.117 5.882 3.381 c
-6.177 3.645 6.551 3.778 7.015 3.778 c
-7.503 3.778 7.897 3.635 8.191 3.352 c
-8.485 3.076 8.631 2.72 8.631 2.278 c
-7.823 2.278 l
-7.823 2.503 7.742 2.694 7.588 2.852 c
-7.441 3.007 7.25 3.088 7.015 3.088 c
-6.78 3.088 6.592 3.021 6.456 2.897 c
-6.316 2.779 6.25 2.61 6.25 2.396 c
-6.25 2.228 6.298 2.095 6.397 1.999 c
-6.493 1.9 6.736 1.768 7.118 1.603 c
-7.723 1.368 8.136 1.135 8.352 0.912 c
-8.565 0.684 8.676 0.401 8.676 0.059 c
-8.676 -0.374 8.521 -0.72 8.22 -0.984 c
-7.926 -1.242 7.529 -1.367 7.029 -1.367 c
-6.518 -1.367 6.104 -1.219 5.78 -0.926 c
-5.456 -0.631 5.294 -0.257 5.294 0.206 c
-6.118 0.206 l
-6.125 -0.07 6.21 -0.286 6.368 -0.44 c
-6.522 -0.598 6.742 -0.675 7.029 -0.675 c
-7.301 -0.675 7.507 -0.617 7.646 -0.5 c
-7.794 -0.374 7.867 -0.205 7.867 0 c
-10.624 4.896 m
-10.624 3.69 l
-11.373 3.69 l
-11.373 3.028 l
-10.624 3.028 l
-10.624 -0.043 l
-10.624 -0.242 10.653 -0.393 10.711 -0.5 c
-10.778 -0.598 10.892 -0.646 11.05 -0.646 c
-11.156 -0.646 11.263 -0.628 11.373 -0.588 c
-11.359 -1.278 l
-11.182 -1.337 10.994 -1.367 10.8 -1.367 c
-10.476 -1.367 10.231 -1.257 10.065 -1.028 c
-9.896 -0.793 9.815 -0.47 9.815 -0.058 c
-9.815 3.028 l
-9.051 3.028 l
-9.051 3.69 l
-9.815 3.69 l
-9.815 4.896 l
-h
-13.994 -1.367 m
-13.375 -1.367 12.898 -1.186 12.567 -0.823 c
-12.244 -0.452 12.074 0.092 12.068 0.809 c
-12.068 1.411 l
-12.068 2.147 12.23 2.723 12.552 3.146 c
-12.876 3.564 13.325 3.778 13.905 3.778 c
-14.482 3.778 14.912 3.591 15.199 3.219 c
-15.492 2.856 15.643 2.282 15.654 1.5 c
-15.654 0.971 l
-12.876 0.971 l
-12.876 0.853 l
-12.876 0.312 12.972 -0.081 13.17 -0.323 c
-13.375 -0.558 13.662 -0.675 14.037 -0.675 c
-14.279 -0.675 14.493 -0.631 14.669 -0.544 c
-14.853 -0.455 15.026 -0.316 15.184 -0.118 c
-15.61 -0.631 l
-15.257 -1.124 14.717 -1.367 13.994 -1.367 c
-13.905 3.088 m
-13.57 3.088 13.321 2.97 13.155 2.735 c
-12.986 2.506 12.895 2.151 12.876 1.661 c
-14.831 1.661 l
-14.831 1.779 l
-14.809 2.249 14.728 2.58 14.581 2.779 c
-14.434 2.984 14.206 3.088 13.905 3.088 c
-17.212 3.69 m
-17.242 3.234 l
-17.543 3.595 17.94 3.778 18.432 3.778 c
-18.991 3.778 19.376 3.535 19.594 3.057 c
-19.906 3.535 20.344 3.778 20.901 3.778 c
-21.82 3.778 22.291 3.209 22.312 2.073 c
-22.312 -1.278 l
-21.504 -1.278 l
-21.504 1.999 l
-21.504 2.352 21.435 2.617 21.298 2.793 c
-21.169 2.97 20.953 3.057 20.652 3.057 c
-20.406 3.057 20.203 2.962 20.049 2.779 c
-19.902 2.591 19.814 2.352 19.785 2.058 c
-19.785 -1.278 l
-18.976 -1.278 l
-18.976 2.029 l
-18.965 2.712 18.686 3.057 18.138 3.057 c
-17.726 3.057 17.437 2.852 17.271 2.44 c
-17.271 -1.278 l
-16.463 -1.278 l
-16.463 3.69 l
-h
-28.942 2.926 m
-28.824 2.944 28.699 2.955 28.575 2.955 c
-28.152 2.955 27.862 2.727 27.708 2.278 c
-27.708 -1.278 l
-26.884 -1.278 l
-26.884 3.69 l
-27.677 3.69 l
-27.693 3.19 l
-27.906 3.58 28.215 3.778 28.618 3.778 c
-28.743 3.778 28.853 3.756 28.942 3.72 c
-h
-31.327 -1.367 m
-30.71 -1.367 30.232 -1.186 29.901 -0.823 c
-29.578 -0.452 29.408 0.092 29.401 0.809 c
-29.401 1.411 l
-29.401 2.147 29.563 2.723 29.886 3.146 c
-30.21 3.564 30.658 3.778 31.239 3.778 c
-31.816 3.778 32.246 3.591 32.533 3.219 c
-32.826 2.856 32.977 2.282 32.988 1.5 c
-32.988 0.971 l
-30.21 0.971 l
-30.21 0.853 l
-30.21 0.312 30.305 -0.081 30.503 -0.323 c
-30.71 -0.558 30.996 -0.675 31.371 -0.675 c
-31.614 -0.675 31.827 -0.631 32.003 -0.544 c
-32.186 -0.455 32.36 -0.316 32.518 -0.118 c
-32.944 -0.631 l
-32.591 -1.124 32.051 -1.367 31.327 -1.367 c
-31.239 3.088 m
-30.904 3.088 30.654 2.97 30.489 2.735 c
-30.32 2.506 30.228 2.151 30.21 1.661 c
-32.165 1.661 l
-32.165 1.779 l
-32.142 2.249 32.062 2.58 31.915 2.779 c
-31.768 2.984 31.54 3.088 31.239 3.088 c
-37.383 0.971 m
-37.383 0.184 37.239 -0.404 36.957 -0.793 c
-36.67 -1.176 36.269 -1.367 35.751 -1.367 c
-35.251 -1.367 34.869 -1.182 34.605 -0.808 c
-34.605 -3.189 l
-33.796 -3.189 l
-33.796 3.69 l
-34.532 3.69 l
-34.561 3.146 l
-34.833 3.564 35.226 3.778 35.737 3.778 c
-36.284 3.778 36.692 3.587 36.957 3.205 c
-37.229 2.83 37.372 2.268 37.383 1.515 c
-h
-36.574 1.426 m
-36.574 1.985 36.487 2.396 36.31 2.661 c
-36.14 2.926 35.869 3.057 35.487 3.057 c
-35.093 3.057 34.8 2.866 34.605 2.485 c
-34.605 -0.103 l
-34.8 -0.484 35.097 -0.675 35.502 -0.675 c
-35.862 -0.675 36.126 -0.544 36.296 -0.278 c
-36.472 -0.014 36.564 0.389 36.574 0.941 c
-h
-38.081 1.441 m
-38.081 2.153 38.25 2.723 38.596 3.146 c
-38.948 3.564 39.411 3.778 39.992 3.778 c
-40.569 3.778 41.029 3.572 41.374 3.161 c
-41.727 2.756 41.906 2.198 41.917 1.485 c
-41.917 0.971 l
-41.917 0.243 41.742 -0.33 41.389 -0.749 c
-41.043 -1.161 40.583 -1.367 40.007 -1.367 c
-39.426 -1.367 38.963 -1.168 38.611 -0.764 c
-38.265 -0.353 38.089 0.198 38.081 0.897 c
-h
-38.889 0.971 m
-38.889 0.46 38.985 0.059 39.184 -0.235 c
-39.39 -0.529 39.662 -0.675 40.007 -0.675 c
-40.72 -0.675 41.087 -0.158 41.109 0.882 c
-41.109 1.441 l
-41.109 1.948 41.006 2.352 40.801 2.646 c
-40.602 2.94 40.334 3.088 39.992 3.088 c
-39.658 3.088 39.39 2.94 39.184 2.646 c
-38.985 2.352 38.889 1.948 38.889 1.441 c
-h
-45.203 0 m
-45.203 0.166 45.133 0.312 44.997 0.441 c
-44.869 0.566 44.615 0.713 44.233 0.882 c
-43.799 1.066 43.49 1.224 43.307 1.353 c
-43.13 1.478 42.998 1.621 42.91 1.779 c
-42.822 1.945 42.777 2.139 42.777 2.367 c
-42.777 2.779 42.924 3.117 43.219 3.381 c
-43.512 3.645 43.887 3.778 44.35 3.778 c
-44.839 3.778 45.233 3.635 45.526 3.352 c
-45.821 3.076 45.967 2.72 45.967 2.278 c
-45.158 2.278 l
-45.158 2.503 45.077 2.694 44.923 2.852 c
-44.776 3.007 44.585 3.088 44.35 3.088 c
-44.115 3.088 43.928 3.021 43.791 2.897 c
-43.652 2.779 43.586 2.61 43.586 2.396 c
-43.586 2.228 43.633 2.095 43.733 1.999 c
-43.828 1.9 44.071 1.768 44.453 1.603 c
-45.06 1.368 45.471 1.135 45.688 0.912 c
-45.901 0.684 46.012 0.401 46.012 0.059 c
-46.012 -0.374 45.857 -0.72 45.555 -0.984 c
-45.262 -1.242 44.865 -1.367 44.365 -1.367 c
-43.854 -1.367 43.439 -1.219 43.116 -0.926 c
-42.792 -0.631 42.631 -0.257 42.631 0.206 c
-43.454 0.206 l
-43.461 -0.07 43.546 -0.286 43.704 -0.44 c
-43.858 -0.598 44.078 -0.675 44.365 -0.675 c
-44.637 -0.675 44.842 -0.617 44.982 -0.5 c
-45.129 -0.374 45.203 -0.205 45.203 0 c
-47.768 -1.278 -0.809 4.968 re
-47.826 5.013 m
-47.826 4.873 47.786 4.755 47.709 4.66 c
-47.639 4.572 47.525 4.528 47.371 4.528 c
-47.213 4.528 47.095 4.572 47.018 4.66 c
-46.949 4.755 46.916 4.873 46.916 5.013 c
-46.916 5.149 46.949 5.263 47.018 5.351 c
-47.095 5.446 47.209 5.498 47.356 5.498 c
-47.51 5.498 47.628 5.446 47.709 5.351 c
-47.786 5.263 47.826 5.149 47.826 5.013 c
-50.024 4.896 m
-50.024 3.69 l
-50.774 3.69 l
-50.774 3.028 l
-50.024 3.028 l
-50.024 -0.043 l
-50.024 -0.242 50.054 -0.393 50.112 -0.5 c
-50.178 -0.598 50.292 -0.646 50.45 -0.646 c
-50.557 -0.646 50.664 -0.628 50.774 -0.588 c
-50.759 -1.278 l
-50.583 -1.337 50.395 -1.367 50.201 -1.367 c
-49.877 -1.367 49.631 -1.257 49.466 -1.028 c
-49.297 -0.793 49.216 -0.47 49.216 -0.058 c
-49.216 3.028 l
-48.451 3.028 l
-48.451 3.69 l
-49.216 3.69 l
-49.216 4.896 l
-h
-51.365 1.441 m
-51.365 2.153 51.535 2.723 51.88 3.146 c
-52.233 3.564 52.695 3.778 53.276 3.778 c
-53.854 3.778 54.313 3.572 54.658 3.161 c
-55.011 2.756 55.19 2.198 55.202 1.485 c
-55.202 0.971 l
-55.202 0.243 55.026 -0.33 54.673 -0.749 c
-54.328 -1.161 53.868 -1.367 53.291 -1.367 c
-52.711 -1.367 52.248 -1.168 51.895 -0.764 c
-51.549 -0.353 51.373 0.198 51.365 0.897 c
-h
-52.173 0.971 m
-52.173 0.46 52.269 0.059 52.468 -0.235 c
-52.674 -0.529 52.946 -0.675 53.291 -0.675 c
-54.004 -0.675 54.371 -0.158 54.394 0.882 c
-54.394 1.441 l
-54.394 1.948 54.29 2.352 54.085 2.646 c
-53.887 2.94 53.618 3.088 53.276 3.088 c
-52.942 3.088 52.674 2.94 52.468 2.646 c
-52.269 2.352 52.173 1.948 52.173 1.441 c
-h
-58.116 2.926 m
-57.998 2.944 57.873 2.955 57.748 2.955 c
-57.326 2.955 57.035 2.727 56.881 2.278 c
-56.881 -1.278 l
-56.058 -1.278 l
-56.058 3.69 l
-56.852 3.69 l
-56.867 3.19 l
-57.079 3.58 57.388 3.778 57.792 3.778 c
-57.918 3.778 58.028 3.756 58.116 3.72 c
-h
-60.266 0.074 m
-61.162 3.69 l
-62.03 3.69 l
-60.398 -1.984 l
-60.281 -2.403 60.108 -2.726 59.884 -2.954 c
-59.656 -3.179 59.402 -3.293 59.119 -3.293 c
-59.009 -3.293 58.873 -3.266 58.708 -3.218 c
-58.708 -2.528 l
-58.884 -2.543 l
-59.119 -2.543 59.299 -2.484 59.427 -2.366 c
-59.564 -2.256 59.67 -2.065 59.751 -1.793 c
-59.913 -1.234 l
-58.458 3.69 l
-59.34 3.69 l
-h
-62.239 -0.837 m
-62.239 -0.69 62.284 -0.569 62.371 -0.47 c
-62.459 -0.374 62.585 -0.323 62.754 -0.323 c
-62.93 -0.323 63.062 -0.374 63.15 -0.47 c
-63.246 -0.569 63.298 -0.69 63.298 -0.837 c
-63.298 -0.977 63.246 -1.095 63.15 -1.19 c
-63.062 -1.278 62.93 -1.323 62.754 -1.323 c
-62.585 -1.323 62.459 -1.278 62.371 -1.19 c
-62.284 -1.095 62.239 -0.977 62.239 -0.837 c
-71.426 1.676 m
-69.162 1.676 l
-69.162 -1.278 l
-68.324 -1.278 l
-68.324 5.409 l
-71.809 5.409 l
-71.809 4.69 l
-69.162 4.69 l
-69.162 2.396 l
-71.426 2.396 l
-h
-72.297 1.441 m
-72.297 2.153 72.466 2.723 72.811 3.146 c
-73.164 3.564 73.627 3.778 74.207 3.778 c
-74.785 3.778 75.244 3.572 75.589 3.161 c
-75.942 2.756 76.122 2.198 76.133 1.485 c
-76.133 0.971 l
-76.133 0.243 75.957 -0.33 75.604 -0.749 c
-75.259 -1.161 74.799 -1.367 74.222 -1.367 c
-73.642 -1.367 73.179 -1.168 72.826 -0.764 c
-72.48 -0.353 72.304 0.198 72.297 0.897 c
-h
-73.105 0.971 m
-73.105 0.46 73.201 0.059 73.399 -0.235 c
-73.605 -0.529 73.877 -0.675 74.222 -0.675 c
-74.936 -0.675 75.302 -0.158 75.325 0.882 c
-75.325 1.441 l
-75.325 1.948 75.221 2.352 75.016 2.646 c
-74.818 2.94 74.55 3.088 74.207 3.088 c
-73.873 3.088 73.605 2.94 73.399 2.646 c
-73.201 2.352 73.105 1.948 73.105 1.441 c
-h
-79.051 2.926 m
-78.934 2.944 78.809 2.955 78.683 2.955 c
-78.261 2.955 77.97 2.727 77.816 2.278 c
-77.816 -1.278 l
-76.993 -1.278 l
-76.993 3.69 l
-77.787 3.69 l
-77.802 3.19 l
-78.015 3.58 78.323 3.778 78.728 3.778 c
-78.853 3.778 78.963 3.756 79.051 3.72 c
-h
-85.17 -1.367 m
-84.552 -1.367 84.075 -1.186 83.744 -0.823 c
-83.42 -0.452 83.252 0.092 83.244 0.809 c
-83.244 1.411 l
-83.244 2.147 83.406 2.723 83.729 3.146 c
-84.052 3.564 84.501 3.778 85.081 3.778 c
-85.658 3.778 86.088 3.591 86.375 3.219 c
-86.668 2.856 86.82 2.282 86.83 1.5 c
-86.83 0.971 l
-84.052 0.971 l
-84.052 0.853 l
-84.052 0.312 84.148 -0.081 84.347 -0.323 c
-84.552 -0.558 84.839 -0.675 85.214 -0.675 c
-85.456 -0.675 85.669 -0.631 85.845 -0.544 c
-86.03 -0.455 86.202 -0.316 86.36 -0.118 c
-86.786 -0.631 l
-86.433 -1.124 85.893 -1.367 85.17 -1.367 c
-85.081 3.088 m
-84.747 3.088 84.497 2.97 84.332 2.735 c
-84.162 2.506 84.071 2.151 84.052 1.661 c
-86.007 1.661 l
-86.007 1.779 l
-85.985 2.249 85.905 2.58 85.758 2.779 c
-85.61 2.984 85.382 3.088 85.081 3.088 c
-89.065 1.881 m
-89.918 3.69 l
-90.859 3.69 l
-89.506 1.235 l
-90.888 -1.278 l
-89.961 -1.278 l
-89.08 0.588 l
-88.197 -1.278 l
-87.256 -1.278 l
-88.638 1.235 l
-87.301 3.69 l
-88.227 3.69 l
-h
-94.151 -1.278 m
-94.099 -1.172 94.066 -0.992 94.048 -0.735 c
-93.761 -1.157 93.394 -1.367 92.945 -1.367 c
-92.494 -1.367 92.141 -1.246 91.887 -0.999 c
-91.641 -0.746 91.52 -0.389 91.52 0.074 c
-91.52 0.581 91.688 0.985 92.034 1.279 c
-92.376 1.573 92.846 1.723 93.445 1.735 c
-94.034 1.735 l
-94.034 2.264 l
-94.034 2.558 93.963 2.768 93.827 2.897 c
-93.699 3.021 93.504 3.088 93.24 3.088 c
-92.993 3.088 92.791 3.014 92.636 2.866 c
-92.49 2.72 92.416 2.532 92.416 2.309 c
-91.593 2.309 l
-91.593 2.562 91.667 2.808 91.813 3.043 c
-91.968 3.279 92.174 3.458 92.43 3.587 c
-92.685 3.712 92.968 3.778 93.284 3.778 c
-93.791 3.778 94.18 3.649 94.445 3.396 c
-94.709 3.15 94.842 2.782 94.842 2.294 c
-94.842 -0.205 l
-94.849 -0.588 94.904 -0.922 95.003 -1.205 c
-95.003 -1.278 l
-h
-93.078 -0.631 m
-93.272 -0.631 93.46 -0.58 93.636 -0.47 c
-93.82 -0.353 93.953 -0.216 94.034 -0.058 c
-94.034 1.133 l
-93.577 1.133 l
-93.195 1.121 92.891 1.033 92.666 0.867 c
-92.438 0.699 92.328 0.47 92.328 0.177 c
-92.328 -0.11 92.38 -0.316 92.49 -0.44 c
-92.607 -0.569 92.802 -0.631 93.078 -0.631 c
-96.679 3.69 m
-96.708 3.234 l
-97.01 3.595 97.407 3.778 97.899 3.778 c
-98.458 3.778 98.844 3.535 99.06 3.057 c
-99.372 3.535 99.81 3.778 100.368 3.778 c
-101.287 3.778 101.757 3.209 101.78 2.073 c
-101.78 -1.278 l
-100.971 -1.278 l
-100.971 1.999 l
-100.971 2.352 100.901 2.617 100.765 2.793 c
-100.637 2.97 100.42 3.057 100.118 3.057 c
-99.873 3.057 99.67 2.962 99.516 2.779 c
-99.368 2.591 99.281 2.352 99.251 2.058 c
-99.251 -1.278 l
-98.443 -1.278 l
-98.443 2.029 l
-98.431 2.712 98.152 3.057 97.605 3.057 c
-97.193 3.057 96.903 2.852 96.738 2.44 c
-96.738 -1.278 l
-95.929 -1.278 l
-95.929 3.69 l
-h
-106.306 0.971 m
-106.306 0.184 106.163 -0.404 105.88 -0.793 c
-105.594 -1.176 105.194 -1.367 104.675 -1.367 c
-104.176 -1.367 103.794 -1.182 103.528 -0.808 c
-103.528 -3.189 l
-102.72 -3.189 l
-102.72 3.69 l
-103.455 3.69 l
-103.484 3.146 l
-103.757 3.564 104.149 3.778 104.66 3.778 c
-105.208 3.778 105.616 3.587 105.88 3.205 c
-106.152 2.83 106.296 2.268 106.306 1.515 c
-h
-105.498 1.426 m
-105.498 1.985 105.41 2.396 105.234 2.661 c
-105.065 2.926 104.793 3.057 104.411 3.057 c
-104.018 3.057 103.723 2.866 103.528 2.485 c
-103.528 -0.103 l
-103.723 -0.484 104.021 -0.675 104.425 -0.675 c
-104.785 -0.675 105.05 -0.544 105.219 -0.278 c
-105.396 -0.014 105.487 0.389 105.498 0.941 c
-h
-108.049 -1.278 -0.808 7.056 re
-111.01 -1.367 m
-110.393 -1.367 109.915 -1.186 109.585 -0.823 c
-109.261 -0.452 109.092 0.092 109.085 0.809 c
-109.085 1.411 l
-109.085 2.147 109.246 2.723 109.57 3.146 c
-109.893 3.564 110.342 3.778 110.923 3.778 c
-111.499 3.778 111.929 3.591 112.216 3.219 c
-112.51 2.856 112.66 2.282 112.671 1.5 c
-112.671 0.971 l
-109.893 0.971 l
-109.893 0.853 l
-109.893 0.312 109.988 -0.081 110.187 -0.323 c
-110.393 -0.558 110.68 -0.675 111.054 -0.675 c
-111.297 -0.675 111.511 -0.631 111.686 -0.544 c
-111.87 -0.455 112.043 -0.316 112.201 -0.118 c
-112.627 -0.631 l
-112.274 -1.124 111.734 -1.367 111.01 -1.367 c
-110.923 3.088 m
-110.588 3.088 110.338 2.97 110.173 2.735 c
-110.003 2.506 109.911 2.151 109.893 1.661 c
-111.848 1.661 l
-111.848 1.779 l
-111.827 2.249 111.746 2.58 111.598 2.779 c
-111.451 2.984 111.224 3.088 110.923 3.088 c
-117.992 -1.278 -0.808 4.968 re
-118.052 5.013 m
-118.052 4.873 118.011 4.755 117.934 4.66 c
-117.864 4.572 117.75 4.528 117.595 4.528 c
-117.437 4.528 117.32 4.572 117.242 4.66 c
-117.173 4.755 117.14 4.873 117.14 5.013 c
-117.14 5.149 117.173 5.263 117.242 5.351 c
-117.32 5.446 117.434 5.498 117.581 5.498 c
-117.735 5.498 117.853 5.446 117.934 5.351 c
-118.011 5.263 118.052 5.149 118.052 5.013 c
-119.94 3.69 m
-119.97 3.161 l
-120.282 3.572 120.683 3.778 121.175 3.778 c
-122.057 3.778 122.501 3.194 122.513 2.029 c
-122.513 -1.278 l
-121.704 -1.278 l
-121.704 1.985 l
-121.704 2.374 121.638 2.65 121.513 2.808 c
-121.385 2.974 121.19 3.057 120.925 3.057 c
-120.719 3.057 120.535 2.988 120.381 2.852 c
-120.223 2.723 120.095 2.55 119.999 2.338 c
-119.999 -1.278 l
-119.176 -1.278 l
-119.176 3.69 l
-h
-127.315 -1.278 m
-127.315 5.409 l
-128.918 5.409 l
-129.689 5.409 130.292 5.164 130.725 4.675 c
-131.155 4.183 131.372 3.499 131.372 2.617 c
-131.372 1.5 l
-131.372 0.607 131.152 -0.081 130.711 -0.558 c
-130.277 -1.039 129.645 -1.278 128.815 -1.278 c
-h
-128.153 4.69 m
-128.153 -0.558 l
-128.83 -0.558 l
-129.425 -0.558 129.859 -0.393 130.123 -0.058 c
-130.395 0.283 130.538 0.786 130.549 1.455 c
-130.549 2.646 l
-130.549 3.341 130.41 3.855 130.137 4.19 c
-129.862 4.52 129.454 4.69 128.918 4.69 c
-h
-134.125 -1.367 m
-133.507 -1.367 133.03 -1.186 132.699 -0.823 c
-132.375 -0.452 132.207 0.092 132.199 0.809 c
-132.199 1.411 l
-132.199 2.147 132.361 2.723 132.685 3.146 c
-133.007 3.564 133.456 3.778 134.037 3.778 c
-134.613 3.778 135.043 3.591 135.33 3.219 c
-135.624 2.856 135.775 2.282 135.785 1.5 c
-135.785 0.971 l
-133.007 0.971 l
-133.007 0.853 l
-133.007 0.312 133.103 -0.081 133.302 -0.323 c
-133.507 -0.558 133.794 -0.675 134.169 -0.675 c
-134.411 -0.675 134.625 -0.631 134.801 -0.544 c
-134.985 -0.455 135.157 -0.316 135.315 -0.118 c
-135.742 -0.631 l
-135.388 -1.124 134.848 -1.367 134.125 -1.367 c
-134.037 3.088 m
-133.703 3.088 133.452 2.97 133.287 2.735 c
-133.117 2.506 133.026 2.151 133.007 1.661 c
-134.962 1.661 l
-134.962 1.779 l
-134.941 2.249 134.86 2.58 134.713 2.779 c
-134.566 2.984 134.338 3.088 134.037 3.088 c
-140.181 0.971 m
-140.181 0.195 140.038 -0.389 139.754 -0.779 c
-139.479 -1.172 139.078 -1.367 138.549 -1.367 c
-138.027 -1.367 137.638 -1.142 137.373 -0.69 c
-137.329 -1.278 l
-136.594 -1.278 l
-136.594 5.777 l
-137.403 5.777 l
-137.403 3.146 l
-137.667 3.564 138.05 3.778 138.549 3.778 c
-139.086 3.778 139.494 3.587 139.769 3.205 c
-140.041 2.822 140.181 2.238 140.181 1.455 c
-h
-139.372 1.426 m
-139.372 2.014 139.288 2.429 139.122 2.675 c
-138.964 2.929 138.7 3.057 138.329 3.057 c
-137.917 3.057 137.609 2.83 137.403 2.382 c
-137.403 0.015 l
-137.597 -0.426 137.91 -0.646 138.343 -0.646 c
-138.704 -0.646 138.964 -0.521 139.122 -0.264 c
-139.288 -0.01 139.372 0.387 139.372 0.927 c
-h
-141.927 -1.278 -0.809 4.968 re
-141.985 5.013 m
-141.985 4.873 141.944 4.755 141.867 4.66 c
-141.798 4.572 141.684 4.528 141.53 4.528 c
-141.372 4.528 141.254 4.572 141.177 4.66 c
-141.107 4.755 141.073 4.873 141.073 5.013 c
-141.073 5.149 141.107 5.263 141.177 5.351 c
-141.254 5.446 141.368 5.498 141.514 5.498 c
-141.669 5.498 141.786 5.446 141.867 5.351 c
-141.944 5.263 141.985 5.149 141.985 5.013 c
-145.663 -1.278 m
-145.612 -1.172 145.579 -0.992 145.561 -0.735 c
-145.274 -1.157 144.907 -1.367 144.458 -1.367 c
-144.007 -1.367 143.654 -1.246 143.4 -0.999 c
-143.153 -0.746 143.033 -0.389 143.033 0.074 c
-143.033 0.581 143.201 0.985 143.547 1.279 c
-143.889 1.573 144.359 1.723 144.958 1.735 c
-145.546 1.735 l
-145.546 2.264 l
-145.546 2.558 145.476 2.768 145.34 2.897 c
-145.212 3.021 145.017 3.088 144.753 3.088 c
-144.506 3.088 144.304 3.014 144.149 2.866 c
-144.003 2.72 143.929 2.532 143.929 2.309 c
-143.106 2.309 l
-143.106 2.562 143.18 2.808 143.326 3.043 c
-143.481 3.279 143.687 3.458 143.943 3.587 c
-144.198 3.712 144.481 3.778 144.796 3.778 c
-145.304 3.778 145.693 3.649 145.958 3.396 c
-146.222 3.15 146.355 2.782 146.355 2.294 c
-146.355 -0.205 l
-146.362 -0.588 146.417 -0.922 146.516 -1.205 c
-146.516 -1.278 l
-h
-144.591 -0.631 m
-144.785 -0.631 144.973 -0.58 145.149 -0.47 c
-145.333 -0.353 145.465 -0.216 145.546 -0.058 c
-145.546 1.133 l
-145.09 1.133 l
-144.708 1.121 144.404 1.033 144.179 0.867 c
-143.951 0.699 143.841 0.47 143.841 0.177 c
-143.841 -0.11 143.893 -0.316 144.003 -0.44 c
-144.12 -0.569 144.315 -0.631 144.591 -0.631 c
-148.192 3.69 m
-148.221 3.161 l
-148.533 3.572 148.934 3.778 149.426 3.778 c
-150.309 3.778 150.754 3.194 150.764 2.029 c
-150.764 -1.278 l
-149.956 -1.278 l
-149.956 1.985 l
-149.956 2.374 149.89 2.65 149.765 2.808 c
-149.636 2.974 149.441 3.057 149.177 3.057 c
-148.971 3.057 148.787 2.988 148.633 2.852 c
-148.475 2.723 148.346 2.55 148.25 2.338 c
-148.25 -1.278 l
-147.427 -1.278 l
-147.427 3.69 l
-h
-152.039 -1.851 m
-151.348 -1.851 l
-153.686 5.409 l
-154.376 5.409 l
-h
-159.257 5.409 m
-159.257 0.662 l
-159.257 0.023 159.072 -0.477 158.712 -0.837 c
-158.349 -1.19 157.846 -1.367 157.198 -1.367 c
-156.541 -1.367 156.038 -1.198 155.685 -0.852 c
-155.332 -0.5 155.155 0.004 155.155 0.662 c
-155.155 5.409 l
-155.993 5.409 l
-155.993 0.691 l
-155.993 0.239 156.085 -0.099 156.273 -0.323 c
-156.468 -0.54 156.776 -0.646 157.198 -0.646 c
-157.628 -0.646 157.937 -0.54 158.124 -0.323 c
-158.32 -0.099 158.419 0.239 158.419 0.691 c
-158.419 5.409 l
-h
-163.835 0.971 m
-163.835 0.195 163.691 -0.389 163.409 -0.779 c
-163.134 -1.172 162.733 -1.367 162.203 -1.367 c
-161.682 -1.367 161.293 -1.142 161.027 -0.69 c
-160.984 -1.278 l
-160.248 -1.278 l
-160.248 5.777 l
-161.057 5.777 l
-161.057 3.146 l
-161.322 3.564 161.704 3.778 162.203 3.778 c
-162.74 3.778 163.148 3.587 163.423 3.205 c
-163.695 2.822 163.835 2.238 163.835 1.455 c
-h
-163.026 1.426 m
-163.026 2.014 162.943 2.429 162.777 2.675 c
-162.619 2.929 162.355 3.057 161.983 3.057 c
-161.572 3.057 161.262 2.83 161.057 2.382 c
-161.057 0.015 l
-161.252 -0.426 161.565 -0.646 161.998 -0.646 c
-162.357 -0.646 162.619 -0.521 162.777 -0.264 c
-162.943 -0.01 163.026 0.387 163.026 0.927 c
-h
-167.242 -0.837 m
-166.966 -1.19 166.569 -1.367 166.051 -1.367 c
-165.611 -1.367 165.272 -1.216 165.037 -0.911 c
-164.809 -0.598 164.691 -0.143 164.684 0.456 c
-164.684 3.69 l
-165.492 3.69 l
-165.492 0.515 l
-165.492 -0.261 165.727 -0.646 166.198 -0.646 c
-166.687 -0.646 167.024 -0.426 167.213 0.015 c
-167.213 3.69 l
-168.036 3.69 l
-168.036 -1.278 l
-167.257 -1.278 l
-h
-169.836 3.69 m
-169.866 3.161 l
-170.178 3.572 170.579 3.778 171.071 3.778 c
-171.953 3.778 172.397 3.194 172.408 2.029 c
-172.408 -1.278 l
-171.6 -1.278 l
-171.6 1.985 l
-171.6 2.374 171.534 2.65 171.409 2.808 c
-171.28 2.974 171.086 3.057 170.821 3.057 c
-170.615 3.057 170.431 2.988 170.277 2.852 c
-170.119 2.723 169.991 2.55 169.895 2.338 c
-169.895 -1.278 l
-169.072 -1.278 l
-169.072 3.69 l
-h
-174.518 4.896 m
-174.518 3.69 l
-175.267 3.69 l
-175.267 3.028 l
-174.518 3.028 l
-174.518 -0.043 l
-174.518 -0.242 174.548 -0.393 174.606 -0.5 c
-174.672 -0.598 174.786 -0.646 174.944 -0.646 c
-175.051 -0.646 175.157 -0.628 175.267 -0.588 c
-175.253 -1.278 l
-175.076 -1.337 174.889 -1.367 174.694 -1.367 c
-174.371 -1.367 174.124 -1.257 173.959 -1.028 c
-173.79 -0.793 173.709 -0.47 173.709 -0.058 c
-173.709 3.028 l
-172.945 3.028 l
-172.945 3.69 l
-173.709 3.69 l
-173.709 4.896 l
-h
-178.652 -0.837 m
-178.376 -1.19 177.979 -1.367 177.461 -1.367 c
-177.02 -1.367 176.682 -1.216 176.447 -0.911 c
-176.219 -0.598 176.102 -0.143 176.094 0.456 c
-176.094 3.69 l
-176.902 3.69 l
-176.902 0.515 l
-176.902 -0.261 177.137 -0.646 177.608 -0.646 c
-178.097 -0.646 178.435 -0.426 178.623 0.015 c
-178.623 3.69 l
-179.446 3.69 l
-179.446 -1.278 l
-178.666 -1.278 l
-h
-187.732 0.971 m
-187.732 0.184 187.589 -0.404 187.306 -0.793 c
-187.019 -1.176 186.619 -1.367 186.101 -1.367 c
-185.601 -1.367 185.218 -1.182 184.954 -0.808 c
-184.954 -3.189 l
-184.146 -3.189 l
-184.146 3.69 l
-184.881 3.69 l
-184.91 3.146 l
-185.182 3.564 185.575 3.778 186.086 3.778 c
-186.633 3.778 187.042 3.587 187.306 3.205 c
-187.578 2.83 187.721 2.268 187.732 1.515 c
-h
-186.924 1.426 m
-186.924 1.985 186.836 2.396 186.659 2.661 c
-186.49 2.926 186.218 3.057 185.836 3.057 c
-185.443 3.057 185.149 2.866 184.954 2.485 c
-184.954 -0.103 l
-185.149 -0.484 185.446 -0.675 185.851 -0.675 c
-186.211 -0.675 186.475 -0.544 186.645 -0.278 c
-186.82 -0.014 186.913 0.389 186.924 0.941 c
-h
-189.474 -1.278 -0.809 7.056 re
-192.436 -1.367 m
-191.819 -1.367 191.341 -1.186 191.011 -0.823 c
-190.687 -0.452 190.518 0.092 190.51 0.809 c
-190.51 1.411 l
-190.51 2.147 190.672 2.723 190.995 3.146 c
-191.319 3.564 191.767 3.778 192.347 3.778 c
-192.925 3.778 193.355 3.591 193.641 3.219 c
-193.935 2.856 194.086 2.282 194.097 1.5 c
-194.097 0.971 l
-191.319 0.971 l
-191.319 0.853 l
-191.319 0.312 191.414 -0.081 191.613 -0.323 c
-191.819 -0.558 192.106 -0.675 192.48 -0.675 c
-192.723 -0.675 192.935 -0.631 193.112 -0.544 c
-193.296 -0.455 193.469 -0.316 193.627 -0.118 c
-194.053 -0.631 l
-193.7 -1.124 193.16 -1.367 192.436 -1.367 c
-192.347 3.088 m
-192.013 3.088 191.763 2.97 191.598 2.735 c
-191.429 2.506 191.337 2.151 191.319 1.661 c
-193.274 1.661 l
-193.274 1.779 l
-193.251 2.249 193.17 2.58 193.024 2.779 c
-192.877 2.984 192.649 3.088 192.347 3.088 c
-197.448 -1.278 m
-197.397 -1.172 197.363 -0.992 197.346 -0.735 c
-197.059 -1.157 196.692 -1.367 196.243 -1.367 c
-195.791 -1.367 195.439 -1.246 195.185 -0.999 c
-194.938 -0.746 194.817 -0.389 194.817 0.074 c
-194.817 0.581 194.986 0.985 195.331 1.279 c
-195.674 1.573 196.144 1.723 196.742 1.735 c
-197.33 1.735 l
-197.33 2.264 l
-197.33 2.558 197.261 2.768 197.125 2.897 c
-196.997 3.021 196.802 3.088 196.536 3.088 c
-196.291 3.088 196.089 3.014 195.934 2.866 c
-195.788 2.72 195.714 2.532 195.714 2.309 c
-194.89 2.309 l
-194.89 2.562 194.964 2.808 195.111 3.043 c
-195.266 3.279 195.472 3.458 195.728 3.587 c
-195.982 3.712 196.265 3.778 196.581 3.778 c
-197.088 3.778 197.477 3.649 197.742 3.396 c
-198.007 3.15 198.139 2.782 198.139 2.294 c
-198.139 -0.205 l
-198.146 -0.588 198.202 -0.922 198.301 -1.205 c
-198.301 -1.278 l
-h
-196.376 -0.631 m
-196.57 -0.631 196.758 -0.58 196.933 -0.47 c
-197.118 -0.353 197.25 -0.216 197.33 -0.058 c
-197.33 1.133 l
-196.875 1.133 l
-196.493 1.121 196.187 1.033 195.964 0.867 c
-195.736 0.699 195.626 0.47 195.626 0.177 c
-195.626 -0.11 195.677 -0.316 195.788 -0.44 c
-195.905 -0.569 196.1 -0.631 196.376 -0.631 c
-201.637 0 m
-201.637 0.166 201.568 0.312 201.432 0.441 c
-201.303 0.566 201.049 0.713 200.667 0.882 c
-200.234 1.066 199.925 1.224 199.742 1.353 c
-199.565 1.478 199.433 1.621 199.345 1.779 c
-199.256 1.945 199.212 2.139 199.212 2.367 c
-199.212 2.779 199.359 3.117 199.653 3.381 c
-199.948 3.645 200.322 3.778 200.785 3.778 c
-201.274 3.778 201.667 3.635 201.961 3.352 c
-202.255 3.076 202.402 2.72 202.402 2.278 c
-201.594 2.278 l
-201.594 2.503 201.513 2.694 201.359 2.852 c
-201.211 3.007 201.02 3.088 200.785 3.088 c
-200.55 3.088 200.362 3.021 200.226 2.897 c
-200.087 2.779 200.021 2.61 200.021 2.396 c
-200.021 2.228 200.068 2.095 200.168 1.999 c
-200.263 1.9 200.505 1.768 200.888 1.603 c
-201.494 1.368 201.906 1.135 202.123 0.912 c
-202.336 0.684 202.446 0.401 202.446 0.059 c
-202.446 -0.374 202.292 -0.72 201.99 -0.984 c
-201.696 -1.242 201.299 -1.367 200.8 -1.367 c
-200.289 -1.367 199.873 -1.219 199.551 -0.926 c
-199.227 -0.631 199.065 -0.257 199.065 0.206 c
-199.888 0.206 l
-199.896 -0.07 199.981 -0.286 200.139 -0.44 c
-200.293 -0.598 200.513 -0.675 200.8 -0.675 c
-201.072 -0.675 201.278 -0.617 201.417 -0.5 c
-201.564 -0.374 201.637 -0.205 201.637 0 c
-205.099 -1.367 m
-204.482 -1.367 204.004 -1.186 203.673 -0.823 c
-203.35 -0.452 203.181 0.092 203.173 0.809 c
-203.173 1.411 l
-203.173 2.147 203.335 2.723 203.659 3.146 c
-203.982 3.564 204.43 3.778 205.011 3.778 c
-205.588 3.778 206.018 3.591 206.304 3.219 c
-206.599 2.856 206.749 2.282 206.76 1.5 c
-206.76 0.971 l
-203.982 0.971 l
-203.982 0.853 l
-203.982 0.312 204.077 -0.081 204.276 -0.323 c
-204.482 -0.558 204.768 -0.675 205.143 -0.675 c
-205.386 -0.675 205.599 -0.631 205.775 -0.544 c
-205.959 -0.455 206.132 -0.316 206.29 -0.118 c
-206.716 -0.631 l
-206.363 -1.124 205.823 -1.367 205.099 -1.367 c
-205.011 3.088 m
-204.677 3.088 204.426 2.97 204.261 2.735 c
-204.092 2.506 204 2.151 203.982 1.661 c
-205.937 1.661 l
-205.937 1.779 l
-205.915 2.249 205.834 2.58 205.687 2.779 c
-205.54 2.984 205.313 3.088 205.011 3.088 c
-212.276 4.896 m
-212.276 3.69 l
-213.026 3.69 l
-213.026 3.028 l
-212.276 3.028 l
-212.276 -0.043 l
-212.276 -0.242 212.305 -0.393 212.364 -0.5 c
-212.43 -0.598 212.544 -0.646 212.702 -0.646 c
-212.808 -0.646 212.916 -0.628 213.026 -0.588 c
-213.011 -1.278 l
-212.835 -1.337 212.648 -1.367 212.452 -1.367 c
-212.129 -1.367 211.883 -1.257 211.717 -1.028 c
-211.549 -0.793 211.468 -0.47 211.468 -0.058 c
-211.468 3.028 l
-210.703 3.028 l
-210.703 3.69 l
-211.468 3.69 l
-211.468 4.896 l
-h
-215.235 0.074 m
-216.131 3.69 l
-216.998 3.69 l
-215.366 -1.984 l
-215.249 -2.403 215.077 -2.726 214.852 -2.954 c
-214.624 -3.179 214.371 -3.293 214.088 -3.293 c
-213.978 -3.293 213.841 -3.266 213.676 -3.218 c
-213.676 -2.528 l
-213.853 -2.543 l
-214.088 -2.543 214.268 -2.484 214.396 -2.366 c
-214.532 -2.256 214.639 -2.065 214.72 -1.793 c
-214.881 -1.234 l
-213.427 3.69 l
-214.308 3.69 l
-h
-221.224 0.971 m
-221.224 0.184 221.08 -0.404 220.798 -0.793 c
-220.511 -1.176 220.11 -1.367 219.592 -1.367 c
-219.093 -1.367 218.711 -1.182 218.446 -0.808 c
-218.446 -3.189 l
-217.637 -3.189 l
-217.637 3.69 l
-218.372 3.69 l
-218.402 3.146 l
-218.674 3.564 219.067 3.778 219.578 3.778 c
-220.126 3.778 220.533 3.587 220.798 3.205 c
-221.07 2.83 221.213 2.268 221.224 1.515 c
-h
-220.415 1.426 m
-220.415 1.985 220.328 2.396 220.151 2.661 c
-219.982 2.926 219.71 3.057 219.328 3.057 c
-218.935 3.057 218.641 2.866 218.446 2.485 c
-218.446 -0.103 l
-218.641 -0.484 218.938 -0.675 219.343 -0.675 c
-219.703 -0.675 219.967 -0.544 220.136 -0.278 c
-220.313 -0.014 220.405 0.389 220.415 0.941 c
-h
-223.862 -1.367 m
-223.245 -1.367 222.767 -1.186 222.437 -0.823 c
-222.113 -0.452 221.944 0.092 221.936 0.809 c
-221.936 1.411 l
-221.936 2.147 222.098 2.723 222.422 3.146 c
-222.745 3.564 223.193 3.778 223.775 3.778 c
-224.351 3.778 224.781 3.591 225.068 3.219 c
-225.362 2.856 225.512 2.282 225.523 1.5 c
-225.523 0.971 l
-222.745 0.971 l
-222.745 0.853 l
-222.745 0.312 222.84 -0.081 223.039 -0.323 c
-223.245 -0.558 223.532 -0.675 223.906 -0.675 c
-224.149 -0.675 224.363 -0.631 224.539 -0.544 c
-224.722 -0.455 224.895 -0.316 225.053 -0.118 c
-225.479 -0.631 l
-225.126 -1.124 224.586 -1.367 223.862 -1.367 c
-223.775 3.088 m
-223.44 3.088 223.19 2.97 223.025 2.735 c
-222.856 2.506 222.763 2.151 222.745 1.661 c
-224.7 1.661 l
-224.7 1.779 l
-224.679 2.249 224.598 2.58 224.45 2.779 c
-224.303 2.984 224.076 3.088 223.775 3.088 c
-230.848 -1.278 -0.808 4.968 re
-230.907 5.013 m
-230.907 4.873 230.867 4.755 230.79 4.66 c
-230.719 4.572 230.605 4.528 230.451 4.528 c
-230.293 4.528 230.175 4.572 230.098 4.66 c
-230.029 4.755 229.996 4.873 229.996 5.013 c
-229.996 5.149 230.029 5.263 230.098 5.351 c
-230.175 5.446 230.289 5.498 230.437 5.498 c
-230.591 5.498 230.709 5.446 230.79 5.351 c
-230.867 5.263 230.907 5.149 230.907 5.013 c
-232.793 3.69 m
-232.822 3.161 l
-233.134 3.572 233.535 3.778 234.027 3.778 c
-234.909 3.778 235.353 3.194 235.365 2.029 c
-235.365 -1.278 l
-234.556 -1.278 l
-234.556 1.985 l
-234.556 2.374 234.49 2.65 234.365 2.808 c
-234.237 2.974 234.042 3.057 233.777 3.057 c
-233.571 3.057 233.387 2.988 233.233 2.852 c
-233.075 2.723 232.947 2.55 232.851 2.338 c
-232.851 -1.278 l
-232.028 -1.278 l
-232.028 3.69 l
-h
-f
-Q
-q 1 0 0 1 537.1847 388.598 cm
-0 0 m
-0 -1.206 l
-0.75 -1.206 l
-0.75 -1.867 l
-0 -1.867 l
-0 -4.939 l
-0 -5.137 0.029 -5.289 0.088 -5.395 c
-0.154 -5.494 0.268 -5.542 0.426 -5.542 c
-0.532 -5.542 0.64 -5.524 0.75 -5.484 c
-0.735 -6.174 l
-0.559 -6.232 0.372 -6.263 0.177 -6.263 c
--0.147 -6.263 -0.393 -6.152 -0.559 -5.924 c
--0.727 -5.689 -0.808 -5.366 -0.808 -4.954 c
--0.808 -1.867 l
--1.573 -1.867 l
--1.573 -1.206 l
--0.808 -1.206 l
--0.808 0 l
-h
-2.414 -1.721 m
-2.716 -1.32 3.109 -1.118 3.59 -1.118 c
-4.472 -1.118 4.917 -1.702 4.928 -2.866 c
-4.928 -6.174 l
-4.12 -6.174 l
-4.12 -2.911 l
-4.12 -2.521 4.054 -2.246 3.929 -2.087 c
-3.8 -1.922 3.605 -1.838 3.341 -1.838 c
-3.135 -1.838 2.951 -1.908 2.797 -2.043 c
-2.639 -2.172 2.51 -2.345 2.414 -2.558 c
-2.414 -6.174 l
-1.591 -6.174 l
-1.591 0.881 l
-2.414 0.881 l
-h
-7.724 -6.263 m
-7.107 -6.263 6.629 -6.082 6.298 -5.719 c
-5.976 -5.347 5.806 -4.803 5.799 -4.087 c
-5.799 -3.485 l
-5.799 -2.749 5.961 -2.172 6.284 -1.75 c
-6.607 -1.331 7.056 -1.118 7.636 -1.118 c
-8.214 -1.118 8.644 -1.305 8.93 -1.676 c
-9.224 -2.04 9.374 -2.613 9.386 -3.396 c
-9.386 -3.925 l
-6.607 -3.925 l
-6.607 -4.042 l
-6.607 -4.583 6.703 -4.977 6.901 -5.218 c
-7.107 -5.453 7.393 -5.571 7.769 -5.571 c
-8.011 -5.571 8.224 -5.527 8.401 -5.439 c
-8.584 -5.351 8.757 -5.212 8.915 -5.013 c
-9.342 -5.527 l
-8.989 -6.02 8.449 -6.263 7.724 -6.263 c
-7.636 -1.808 m
-7.302 -1.808 7.052 -1.926 6.886 -2.161 c
-6.718 -2.389 6.626 -2.745 6.607 -3.234 c
-8.563 -3.234 l
-8.563 -3.117 l
-8.54 -2.646 8.459 -2.315 8.312 -2.117 c
-8.166 -1.912 7.938 -1.808 7.636 -1.808 c
-13.317 0 m
-13.317 -1.206 l
-14.067 -1.206 l
-14.067 -1.867 l
-13.317 -1.867 l
-13.317 -4.939 l
-13.317 -5.137 13.347 -5.289 13.406 -5.395 c
-13.471 -5.494 13.585 -5.542 13.743 -5.542 c
-13.851 -5.542 13.957 -5.524 14.067 -5.484 c
-14.053 -6.174 l
-13.876 -6.232 13.689 -6.263 13.494 -6.263 c
-13.17 -6.263 12.924 -6.152 12.759 -5.924 c
-12.59 -5.689 12.509 -5.366 12.509 -4.954 c
-12.509 -1.867 l
-11.744 -1.867 l
-11.744 -1.206 l
-12.509 -1.206 l
-12.509 0 l
-h
-16.687 -6.263 m
-16.07 -6.263 15.592 -6.082 15.262 -5.719 c
-14.938 -5.347 14.769 -4.803 14.761 -4.087 c
-14.761 -3.485 l
-14.761 -2.749 14.923 -2.172 15.247 -1.75 c
-15.57 -1.331 16.018 -1.118 16.599 -1.118 c
-17.176 -1.118 17.606 -1.305 17.893 -1.676 c
-18.186 -2.04 18.337 -2.613 18.348 -3.396 c
-18.348 -3.925 l
-15.57 -3.925 l
-15.57 -4.042 l
-15.57 -4.583 15.665 -4.977 15.864 -5.218 c
-16.07 -5.453 16.357 -5.571 16.731 -5.571 c
-16.974 -5.571 17.187 -5.527 17.363 -5.439 c
-17.547 -5.351 17.72 -5.212 17.878 -5.013 c
-18.304 -5.527 l
-17.951 -6.02 17.411 -6.263 16.687 -6.263 c
-16.599 -1.808 m
-16.264 -1.808 16.014 -1.926 15.85 -2.161 c
-15.68 -2.389 15.588 -2.745 15.57 -3.234 c
-17.525 -3.234 l
-17.525 -3.117 l
-17.503 -2.646 17.422 -2.315 17.275 -2.117 c
-17.128 -1.912 16.9 -1.808 16.599 -1.808 c
-21.2 -1.97 m
-21.082 -1.952 20.957 -1.941 20.833 -1.941 c
-20.409 -1.941 20.12 -2.168 19.965 -2.617 c
-19.965 -6.174 l
-19.142 -6.174 l
-19.142 -1.206 l
-19.935 -1.206 l
-19.95 -1.706 l
-20.164 -1.316 20.472 -1.118 20.876 -1.118 c
-21.001 -1.118 21.111 -1.139 21.2 -1.176 c
-h
-22.655 -1.206 m
-22.684 -1.661 l
-22.986 -1.301 23.382 -1.118 23.875 -1.118 c
-24.434 -1.118 24.82 -1.36 25.036 -1.838 c
-25.348 -1.36 25.786 -1.118 26.344 -1.118 c
-27.264 -1.118 27.734 -1.687 27.756 -2.822 c
-27.756 -6.174 l
-26.948 -6.174 l
-26.948 -2.897 l
-26.948 -2.544 26.877 -2.278 26.741 -2.103 c
-26.613 -1.926 26.396 -1.838 26.094 -1.838 c
-25.849 -1.838 25.646 -1.933 25.492 -2.117 c
-25.344 -2.305 25.257 -2.544 25.227 -2.837 c
-25.227 -6.174 l
-24.419 -6.174 l
-24.419 -2.866 l
-24.407 -2.183 24.128 -1.838 23.581 -1.838 c
-23.169 -1.838 22.879 -2.043 22.714 -2.455 c
-22.714 -6.174 l
-21.905 -6.174 l
-21.905 -1.206 l
-h
-29.564 -6.174 -0.809 4.968 re
-29.622 0.118 m
-29.622 -0.023 29.582 -0.14 29.504 -0.235 c
-29.435 -0.324 29.321 -0.368 29.167 -0.368 c
-29.009 -0.368 28.891 -0.324 28.814 -0.235 c
-28.744 -0.14 28.711 -0.023 28.711 0.118 c
-28.711 0.253 28.744 0.367 28.814 0.455 c
-28.891 0.55 29.005 0.602 29.152 0.602 c
-29.306 0.602 29.424 0.55 29.504 0.455 c
-29.582 0.367 29.622 0.253 29.622 0.118 c
-31.511 -1.206 m
-31.54 -1.735 l
-31.852 -1.324 32.253 -1.118 32.746 -1.118 c
-33.628 -1.118 34.073 -1.702 34.084 -2.866 c
-34.084 -6.174 l
-33.275 -6.174 l
-33.275 -2.911 l
-33.275 -2.521 33.209 -2.246 33.084 -2.087 c
-32.955 -1.922 32.76 -1.838 32.496 -1.838 c
-32.29 -1.838 32.107 -1.908 31.952 -2.043 c
-31.794 -2.172 31.665 -2.345 31.57 -2.558 c
-31.57 -6.174 l
-30.747 -6.174 l
-30.747 -1.206 l
-h
-37.678 -6.174 m
-37.626 -6.068 37.593 -5.887 37.574 -5.63 c
-37.288 -6.053 36.92 -6.263 36.472 -6.263 c
-36.02 -6.263 35.667 -6.141 35.414 -5.895 c
-35.168 -5.642 35.046 -5.285 35.046 -4.821 c
-35.046 -4.314 35.216 -3.911 35.561 -3.616 c
-35.902 -3.323 36.373 -3.172 36.972 -3.161 c
-37.56 -3.161 l
-37.56 -2.631 l
-37.56 -2.338 37.49 -2.128 37.354 -1.999 c
-37.225 -1.875 37.03 -1.808 36.766 -1.808 c
-36.519 -1.808 36.317 -1.881 36.163 -2.029 c
-36.016 -2.176 35.943 -2.363 35.943 -2.587 c
-35.12 -2.587 l
-35.12 -2.334 35.193 -2.087 35.34 -1.852 c
-35.495 -1.617 35.7 -1.437 35.958 -1.309 c
-36.211 -1.183 36.494 -1.118 36.81 -1.118 c
-37.317 -1.118 37.707 -1.246 37.971 -1.5 c
-38.236 -1.746 38.368 -2.114 38.368 -2.602 c
-38.368 -5.101 l
-38.376 -5.484 38.431 -5.818 38.53 -6.101 c
-38.53 -6.174 l
-h
-36.604 -5.527 m
-36.799 -5.527 36.986 -5.476 37.163 -5.366 c
-37.346 -5.248 37.479 -5.112 37.56 -4.954 c
-37.56 -3.763 l
-37.104 -3.763 l
-36.722 -3.774 36.417 -3.863 36.193 -4.028 c
-35.965 -4.197 35.854 -4.425 35.854 -4.719 c
-35.854 -5.006 35.906 -5.212 36.016 -5.336 c
-36.134 -5.465 36.328 -5.527 36.604 -5.527 c
-40.323 -6.174 -0.808 7.056 re
-41.566 -5.733 m
-41.566 -5.586 41.61 -5.465 41.697 -5.366 c
-41.786 -5.27 41.911 -5.218 42.08 -5.218 c
-42.256 -5.218 42.389 -5.27 42.476 -5.366 c
-42.572 -5.465 42.624 -5.586 42.624 -5.733 c
-42.624 -5.873 42.572 -5.991 42.476 -6.086 c
-42.389 -6.174 42.256 -6.218 42.08 -6.218 c
-41.911 -6.218 41.786 -6.174 41.697 -6.086 c
-41.61 -5.991 41.566 -5.873 41.566 -5.733 c
-41.566 -1.97 m
-41.566 -1.823 41.61 -1.702 41.697 -1.603 c
-41.786 -1.507 41.911 -1.455 42.08 -1.455 c
-42.256 -1.455 42.389 -1.507 42.476 -1.603 c
-42.572 -1.702 42.624 -1.823 42.624 -1.97 c
-42.624 -2.11 42.572 -2.228 42.476 -2.323 c
-42.389 -2.411 42.256 -2.455 42.08 -2.455 c
-41.911 -2.455 41.786 -2.411 41.697 -2.323 c
-41.61 -2.228 41.566 -2.11 41.566 -1.97 c
-f
-Q
-537.111 348.557 -0.838 6.688 re
-538.735 348.557 m
-538.735 352.864 l
-538.089 352.864 l
-538.089 353.525 l
-538.735 353.525 l
-538.735 354.099 l
-538.743 354.606 538.871 355.003 539.118 355.289 c
-539.361 355.572 539.71 355.715 540.161 355.715 c
-540.315 355.715 540.477 355.686 540.647 355.628 c
-540.602 354.936 l
-540.492 354.967 540.371 354.981 540.235 354.981 c
-539.772 354.981 539.544 354.65 539.544 353.996 c
-539.544 353.525 l
-540.396 353.525 l
-540.396 352.864 l
-539.544 352.864 l
-539.544 348.557 l
-h
-544.655 349.91 m
-545.553 353.525 l
-546.419 353.525 l
-544.788 347.852 l
-544.67 347.433 544.497 347.109 544.273 346.882 c
-544.046 346.657 543.792 346.543 543.509 346.543 c
-543.398 346.543 543.263 346.57 543.097 346.617 c
-543.097 347.308 l
-543.274 347.293 l
-543.509 347.293 543.689 347.352 543.818 347.47 c
-543.953 347.58 544.061 347.771 544.141 348.043 c
-544.302 348.602 l
-542.848 353.525 l
-543.729 353.525 l
-h
-546.816 351.277 m
-546.816 351.989 546.985 352.559 547.331 352.982 c
-547.683 353.4 548.146 353.614 548.728 353.614 c
-549.304 353.614 549.763 353.408 550.109 352.997 c
-550.461 352.592 550.642 352.033 550.652 351.321 c
-550.652 350.807 l
-550.652 350.078 550.476 349.506 550.124 349.087 c
-549.778 348.675 549.318 348.469 548.742 348.469 c
-548.161 348.469 547.698 348.667 547.346 349.072 c
-547 349.483 546.824 350.034 546.816 350.733 c
-h
-547.625 350.807 m
-547.625 350.296 547.72 349.895 547.919 349.601 c
-548.125 349.307 548.396 349.16 548.742 349.16 c
-549.455 349.16 549.823 349.678 549.844 350.718 c
-549.844 351.277 l
-549.844 351.784 549.742 352.188 549.536 352.482 c
-549.337 352.776 549.069 352.923 548.728 352.923 c
-548.393 352.923 548.125 352.776 547.919 352.482 c
-547.72 352.188 547.625 351.784 547.625 351.277 c
-h
-554.052 348.999 m
-553.776 348.646 553.38 348.469 552.861 348.469 c
-552.42 348.469 552.082 348.619 551.847 348.925 c
-551.619 349.237 551.502 349.693 551.494 350.292 c
-551.494 353.525 l
-552.302 353.525 l
-552.302 350.35 l
-552.302 349.575 552.538 349.189 553.008 349.189 c
-553.497 349.189 553.835 349.41 554.022 349.851 c
-554.022 353.525 l
-554.845 353.525 l
-554.845 348.557 l
-554.066 348.557 l
-h
-561.651 349.983 m
-562.415 353.525 l
-563.209 353.525 l
-562.004 348.557 l
-561.357 348.557 l
-560.387 352.114 l
-559.431 348.557 l
-558.785 348.557 l
-557.58 353.525 l
-558.373 353.525 l
-559.153 350.071 l
-560.063 353.525 l
-560.711 353.525 l
-h
-566.381 348.557 m
-566.33 348.664 566.296 348.844 566.278 349.101 c
-565.991 348.679 565.624 348.469 565.175 348.469 c
-564.723 348.469 564.37 348.59 564.117 348.837 c
-563.871 349.09 563.749 349.446 563.749 349.91 c
-563.749 350.417 563.919 350.821 564.264 351.115 c
-564.605 351.409 565.076 351.559 565.675 351.57 c
-566.263 351.57 l
-566.263 352.1 l
-566.263 352.394 566.193 352.603 566.057 352.732 c
-565.929 352.856 565.734 352.923 565.469 352.923 c
-565.223 352.923 565.021 352.85 564.867 352.702 c
-564.72 352.555 564.646 352.368 564.646 352.144 c
-563.823 352.144 l
-563.823 352.397 563.897 352.644 564.044 352.879 c
-564.198 353.114 564.404 353.294 564.661 353.423 c
-564.915 353.548 565.197 353.614 565.513 353.614 c
-566.02 353.614 566.41 353.485 566.675 353.232 c
-566.939 352.985 567.072 352.618 567.072 352.129 c
-567.072 349.631 l
-567.079 349.248 567.134 348.914 567.233 348.631 c
-567.233 348.557 l
-h
-565.308 349.205 m
-565.503 349.205 565.69 349.255 565.866 349.365 c
-566.05 349.483 566.182 349.619 566.263 349.777 c
-566.263 350.968 l
-565.808 350.968 l
-565.426 350.957 565.12 350.869 564.896 350.703 c
-564.668 350.535 564.558 350.306 564.558 350.013 c
-564.558 349.726 564.609 349.52 564.72 349.396 c
-564.838 349.267 565.032 349.205 565.308 349.205 c
-568.909 353.525 m
-568.938 352.997 l
-569.251 353.408 569.651 353.614 570.143 353.614 c
-571.026 353.614 571.47 353.03 571.481 351.865 c
-571.481 348.557 l
-570.673 348.557 l
-570.673 351.821 l
-570.673 352.21 570.606 352.486 570.482 352.644 c
-570.353 352.809 570.159 352.893 569.894 352.893 c
-569.688 352.893 569.504 352.824 569.35 352.688 c
-569.191 352.559 569.064 352.386 568.968 352.173 c
-568.968 348.557 l
-568.144 348.557 l
-568.144 353.525 l
-h
-573.59 354.731 m
-573.59 353.525 l
-574.34 353.525 l
-574.34 352.864 l
-573.59 352.864 l
-573.59 349.792 l
-573.59 349.594 573.62 349.443 573.679 349.336 c
-573.745 349.237 573.858 349.189 574.017 349.189 c
-574.124 349.189 574.23 349.207 574.34 349.248 c
-574.326 348.557 l
-574.149 348.499 573.962 348.469 573.767 348.469 c
-573.444 348.469 573.197 348.579 573.032 348.808 c
-572.863 349.043 572.782 349.365 572.782 349.777 c
-572.782 352.864 l
-572.017 352.864 l
-572.017 353.525 l
-572.782 353.525 l
-572.782 354.731 l
-h
-577.081 351.277 m
-577.081 351.989 577.251 352.559 577.596 352.982 c
-577.949 353.4 578.412 353.614 578.992 353.614 c
-579.57 353.614 580.029 353.408 580.374 352.997 c
-580.727 352.592 580.907 352.033 580.918 351.321 c
-580.918 350.807 l
-580.918 350.078 580.742 349.506 580.389 349.087 c
-580.044 348.675 579.584 348.469 579.007 348.469 c
-578.427 348.469 577.964 348.667 577.611 349.072 c
-577.265 349.483 577.089 350.034 577.081 350.733 c
-h
-577.891 350.807 m
-577.891 350.296 577.986 349.895 578.184 349.601 c
-578.39 349.307 578.662 349.16 579.007 349.16 c
-579.72 349.16 580.087 349.678 580.11 350.718 c
-580.11 351.277 l
-580.11 351.784 580.007 352.188 579.801 352.482 c
-579.603 352.776 579.335 352.923 578.992 352.923 c
-578.658 352.923 578.39 352.776 578.184 352.482 c
-577.986 352.188 577.891 351.784 577.891 351.277 c
-h
-583.836 352.761 m
-583.718 352.779 583.593 352.791 583.468 352.791 c
-583.046 352.791 582.755 352.563 582.601 352.114 c
-582.601 348.557 l
-581.778 348.557 l
-581.778 353.525 l
-582.572 353.525 l
-582.587 353.026 l
-582.799 353.415 583.108 353.614 583.512 353.614 c
-583.637 353.614 583.748 353.592 583.836 353.555 c
-h
-587.356 353.525 m
-587.385 352.997 l
-587.698 353.408 588.098 353.614 588.591 353.614 c
-589.473 353.614 589.918 353.03 589.928 351.865 c
-589.928 348.557 l
-589.12 348.557 l
-589.12 351.821 l
-589.12 352.21 589.054 352.486 588.929 352.644 c
-588.8 352.809 588.606 352.893 588.341 352.893 c
-588.135 352.893 587.952 352.824 587.797 352.688 c
-587.639 352.559 587.51 352.386 587.415 352.173 c
-587.415 348.557 l
-586.592 348.557 l
-586.592 353.525 l
-h
-592.748 348.469 m
-592.13 348.469 591.652 348.65 591.321 349.013 c
-590.998 349.384 590.828 349.928 590.822 350.645 c
-590.822 351.247 l
-590.822 351.983 590.984 352.559 591.306 352.982 c
-591.63 353.4 592.079 353.614 592.659 353.614 c
-593.236 353.614 593.666 353.427 593.953 353.055 c
-594.246 352.692 594.397 352.118 594.408 351.335 c
-594.408 350.807 l
-591.63 350.807 l
-591.63 350.689 l
-591.63 350.148 591.726 349.755 591.924 349.513 c
-592.13 349.278 592.417 349.16 592.791 349.16 c
-593.034 349.16 593.247 349.205 593.423 349.292 c
-593.607 349.38 593.78 349.52 593.938 349.718 c
-594.364 349.205 l
-594.011 348.712 593.471 348.469 592.748 348.469 c
-592.659 352.923 m
-592.324 352.923 592.075 352.806 591.909 352.57 c
-591.74 352.342 591.649 351.986 591.63 351.497 c
-593.585 351.497 l
-593.585 351.615 l
-593.563 352.085 593.482 352.416 593.336 352.615 c
-593.188 352.82 592.96 352.923 592.659 352.923 c
-596.981 348.469 m
-596.363 348.469 595.885 348.65 595.555 349.013 c
-595.231 349.384 595.062 349.928 595.055 350.645 c
-595.055 351.247 l
-595.055 351.983 595.217 352.559 595.54 352.982 c
-595.863 353.4 596.312 353.614 596.893 353.614 c
-597.469 353.614 597.899 353.427 598.186 353.055 c
-598.479 352.692 598.63 352.118 598.641 351.335 c
-598.641 350.807 l
-595.863 350.807 l
-595.863 350.689 l
-595.863 350.148 595.959 349.755 596.158 349.513 c
-596.363 349.278 596.65 349.16 597.024 349.16 c
-597.267 349.16 597.48 349.205 597.656 349.292 c
-597.841 349.38 598.013 349.52 598.171 349.718 c
-598.597 349.205 l
-598.244 348.712 597.704 348.469 596.981 348.469 c
-596.893 352.923 m
-596.558 352.923 596.308 352.806 596.143 352.57 c
-595.973 352.342 595.882 351.986 595.863 351.497 c
-597.818 351.497 l
-597.818 351.615 l
-597.797 352.085 597.716 352.416 597.569 352.615 c
-597.421 352.82 597.193 352.923 596.893 352.923 c
-599.273 351.262 m
-599.273 352.033 599.413 352.618 599.7 353.011 c
-599.983 353.412 600.394 353.614 600.935 353.614 c
-601.405 353.614 601.772 353.423 602.037 353.041 c
-602.037 355.613 l
-602.861 355.613 l
-602.861 348.557 l
-602.111 348.557 l
-602.067 349.087 l
-601.802 348.675 601.423 348.469 600.935 348.469 c
-600.413 348.469 600.008 348.664 599.715 349.057 c
-599.42 349.458 599.273 350.028 599.273 350.762 c
-h
-600.082 350.807 m
-600.082 350.248 600.162 349.836 600.332 349.571 c
-600.497 349.315 600.766 349.189 601.14 349.189 c
-601.541 349.189 601.839 349.388 602.037 349.792 c
-602.037 352.305 l
-601.831 352.695 601.529 352.893 601.14 352.893 c
-600.766 352.893 600.497 352.761 600.332 352.497 c
-600.162 352.239 600.082 351.842 600.082 351.306 c
-h
-607.053 354.731 m
-607.053 353.525 l
-607.802 353.525 l
-607.802 352.864 l
-607.053 352.864 l
-607.053 349.792 l
-607.053 349.594 607.083 349.443 607.141 349.336 c
-607.208 349.237 607.322 349.189 607.48 349.189 c
-607.586 349.189 607.692 349.207 607.802 349.248 c
-607.788 348.557 l
-607.611 348.499 607.424 348.469 607.229 348.469 c
-606.906 348.469 606.66 348.579 606.495 348.808 c
-606.325 349.043 606.244 349.365 606.244 349.777 c
-606.244 352.864 l
-605.48 352.864 l
-605.48 353.525 l
-606.244 353.525 l
-606.244 354.731 l
-h
-608.39 351.277 m
-608.39 351.989 608.56 352.559 608.905 352.982 c
-609.258 353.4 609.72 353.614 610.302 353.614 c
-610.878 353.614 611.338 353.408 611.683 352.997 c
-612.036 352.592 612.216 352.033 612.227 351.321 c
-612.227 350.807 l
-612.227 350.078 612.051 349.506 611.698 349.087 c
-611.353 348.675 610.894 348.469 610.316 348.469 c
-609.735 348.469 609.273 348.667 608.92 349.072 c
-608.575 349.483 608.398 350.034 608.39 350.733 c
-h
-609.199 350.807 m
-609.199 350.296 609.294 349.895 609.493 349.601 c
-609.699 349.307 609.971 349.16 610.316 349.16 c
-611.029 349.16 611.397 349.678 611.418 350.718 c
-611.418 351.277 l
-611.418 351.784 611.316 352.188 611.11 352.482 c
-610.911 352.776 610.643 352.923 610.302 352.923 c
-609.967 352.923 609.699 352.776 609.493 352.482 c
-609.294 352.188 609.199 351.784 609.199 351.277 c
-h
-616.034 348.557 -0.808 4.968 re
-616.093 354.849 m
-616.093 354.709 616.053 354.591 615.975 354.496 c
-615.906 354.408 615.792 354.364 615.638 354.364 c
-615.48 354.364 615.362 354.408 615.285 354.496 c
-615.214 354.591 615.181 354.709 615.181 354.849 c
-615.181 354.984 615.214 355.098 615.285 355.187 c
-615.362 355.282 615.476 355.333 615.623 355.333 c
-615.777 355.333 615.894 355.282 615.975 355.187 c
-616.053 355.098 616.093 354.984 616.093 354.849 c
-617.978 353.525 m
-618.007 352.997 l
-618.32 353.408 618.721 353.614 619.212 353.614 c
-620.095 353.614 620.539 353.03 620.55 351.865 c
-620.55 348.557 l
-619.742 348.557 l
-619.742 351.821 l
-619.742 352.21 619.676 352.486 619.551 352.644 c
-619.422 352.809 619.228 352.893 618.963 352.893 c
-618.757 352.893 618.574 352.824 618.419 352.688 c
-618.261 352.559 618.133 352.386 618.036 352.173 c
-618.036 348.557 l
-617.213 348.557 l
-617.213 353.525 l
-h
-624.016 349.836 m
-624.016 350.001 623.946 350.148 623.81 350.277 c
-623.681 350.402 623.428 350.549 623.046 350.718 c
-622.612 350.902 622.304 351.06 622.119 351.189 c
-621.943 351.314 621.811 351.457 621.722 351.615 c
-621.635 351.78 621.591 351.975 621.591 352.203 c
-621.591 352.615 621.737 352.952 622.031 353.217 c
-622.325 353.481 622.7 353.614 623.164 353.614 c
-623.652 353.614 624.045 353.471 624.339 353.188 c
-624.633 352.912 624.78 352.555 624.78 352.114 c
-623.972 352.114 l
-623.972 352.339 623.891 352.53 623.737 352.688 c
-623.59 352.842 623.399 352.923 623.164 352.923 c
-622.928 352.923 622.74 352.856 622.605 352.732 c
-622.465 352.615 622.399 352.445 622.399 352.232 c
-622.399 352.063 622.447 351.931 622.546 351.835 c
-622.641 351.736 622.884 351.603 623.266 351.439 c
-623.872 351.204 624.284 350.971 624.5 350.747 c
-624.714 350.52 624.824 350.237 624.824 349.895 c
-624.824 349.461 624.67 349.116 624.369 348.852 c
-624.074 348.594 623.677 348.469 623.178 348.469 c
-622.667 348.469 622.252 348.617 621.928 348.91 c
-621.605 349.205 621.443 349.579 621.443 350.042 c
-622.266 350.042 l
-622.274 349.766 622.358 349.55 622.516 349.396 c
-622.671 349.237 622.891 349.16 623.178 349.16 c
-623.45 349.16 623.656 349.219 623.795 349.336 c
-623.943 349.461 624.016 349.631 624.016 349.836 c
-626.772 354.731 m
-626.772 353.525 l
-627.521 353.525 l
-627.521 352.864 l
-626.772 352.864 l
-626.772 349.792 l
-626.772 349.594 626.801 349.443 626.86 349.336 c
-626.927 349.237 627.04 349.189 627.198 349.189 c
-627.305 349.189 627.411 349.207 627.521 349.248 c
-627.507 348.557 l
-627.33 348.499 627.143 348.469 626.948 348.469 c
-626.625 348.469 626.379 348.579 626.213 348.808 c
-626.044 349.043 625.963 349.365 625.963 349.777 c
-625.963 352.864 l
-625.199 352.864 l
-625.199 353.525 l
-625.963 353.525 l
-625.963 354.731 l
-h
-630.921 348.557 m
-630.869 348.664 630.836 348.844 630.817 349.101 c
-630.531 348.679 630.164 348.469 629.715 348.469 c
-629.263 348.469 628.911 348.59 628.657 348.837 c
-628.411 349.09 628.29 349.446 628.29 349.91 c
-628.29 350.417 628.458 350.821 628.804 351.115 c
-629.146 351.409 629.616 351.559 630.215 351.57 c
-630.803 351.57 l
-630.803 352.1 l
-630.803 352.394 630.733 352.603 630.597 352.732 c
-630.468 352.856 630.274 352.923 630.009 352.923 c
-629.763 352.923 629.561 352.85 629.406 352.702 c
-629.26 352.555 629.186 352.368 629.186 352.144 c
-628.363 352.144 l
-628.363 352.397 628.436 352.644 628.583 352.879 c
-628.737 353.114 628.943 353.294 629.201 353.423 c
-629.454 353.548 629.737 353.614 630.054 353.614 c
-630.561 353.614 630.95 353.485 631.214 353.232 c
-631.479 352.985 631.611 352.618 631.611 352.129 c
-631.611 349.631 l
-631.619 349.248 631.674 348.914 631.773 348.631 c
-631.773 348.557 l
-h
-629.848 349.205 m
-630.042 349.205 630.229 349.255 630.406 349.365 c
-630.59 349.483 630.722 349.619 630.803 349.777 c
-630.803 350.968 l
-630.347 350.968 l
-629.965 350.957 629.66 350.869 629.436 350.703 c
-629.208 350.535 629.098 350.306 629.098 350.013 c
-629.098 349.726 629.15 349.52 629.26 349.396 c
-629.377 349.267 629.572 349.205 629.848 349.205 c
-633.566 348.557 -0.808 7.056 re
-635.628 348.557 -0.809 7.056 re
-643.183 349.396 m
-643.037 349.205 l
-642.613 348.712 641.996 348.469 641.184 348.469 c
-640.456 348.469 639.891 348.708 639.479 349.189 c
-639.068 349.667 638.854 350.343 638.847 351.218 c
-638.847 352.526 l
-638.847 353.467 639.031 354.165 639.405 354.628 c
-639.777 355.098 640.339 355.333 641.096 355.333 c
-641.732 355.333 642.228 355.158 642.58 354.805 c
-642.941 354.452 643.143 353.945 643.183 353.29 c
-642.345 353.29 l
-642.305 353.702 642.187 354.026 641.992 354.261 c
-641.794 354.496 641.497 354.614 641.096 354.614 c
-640.614 354.614 640.261 354.456 640.038 354.143 c
-639.81 353.827 639.692 353.327 639.685 352.644 c
-639.685 351.277 l
-639.685 350.601 639.81 350.078 640.067 349.718 c
-640.332 349.365 640.703 349.189 641.184 349.189 c
-641.632 349.189 641.978 349.296 642.214 349.513 c
-642.345 349.631 l
-642.345 351.173 l
-641.111 351.173 l
-641.111 351.894 l
-643.183 351.894 l
-h
-645.102 348.557 -0.809 4.968 re
-645.16 354.849 m
-645.16 354.709 645.119 354.591 645.042 354.496 c
-644.973 354.408 644.859 354.364 644.705 354.364 c
-644.547 354.364 644.429 354.408 644.352 354.496 c
-644.282 354.591 644.249 354.709 644.249 354.849 c
-644.249 354.984 644.282 355.098 644.352 355.187 c
-644.429 355.282 644.543 355.333 644.69 355.333 c
-644.844 355.333 644.961 355.282 645.042 355.187 c
-645.119 355.098 645.16 354.984 645.16 354.849 c
-647.358 354.731 m
-647.358 353.525 l
-648.107 353.525 l
-648.107 352.864 l
-647.358 352.864 l
-647.358 349.792 l
-647.358 349.594 647.388 349.443 647.446 349.336 c
-647.512 349.237 647.626 349.189 647.784 349.189 c
-647.891 349.189 647.997 349.207 648.107 349.248 c
-648.093 348.557 l
-647.916 348.499 647.729 348.469 647.534 348.469 c
-647.211 348.469 646.964 348.579 646.8 348.808 c
-646.63 349.043 646.549 349.365 646.549 349.777 c
-646.549 352.864 l
-645.785 352.864 l
-645.785 353.525 l
-646.549 353.525 l
-646.549 354.731 l
-h
-651.378 348.557 m
-651.378 352.864 l
-650.731 352.864 l
-650.731 353.525 l
-651.378 353.525 l
-651.378 354.099 l
-651.386 354.606 651.514 355.003 651.76 355.289 c
-652.003 355.572 652.352 355.715 652.803 355.715 c
-652.958 355.715 653.12 355.686 653.289 355.628 c
-653.245 354.936 l
-653.135 354.967 653.013 354.981 652.878 354.981 c
-652.414 354.981 652.186 354.65 652.186 353.996 c
-652.186 353.525 l
-653.039 353.525 l
-653.039 352.864 l
-652.186 352.864 l
-652.186 348.557 l
-h
-655.928 352.761 m
-655.81 352.779 655.685 352.791 655.56 352.791 c
-655.137 352.791 654.847 352.563 654.692 352.114 c
-654.692 348.557 l
-653.869 348.557 l
-653.869 353.525 l
-654.663 353.525 l
-654.678 353.026 l
-654.891 353.415 655.2 353.614 655.604 353.614 c
-655.729 353.614 655.839 353.592 655.928 353.555 c
-h
-656.368 351.277 m
-656.368 351.989 656.537 352.559 656.883 352.982 c
-657.235 353.4 657.698 353.614 658.279 353.614 c
-658.856 353.614 659.315 353.408 659.661 352.997 c
-660.013 352.592 660.194 352.033 660.205 351.321 c
-660.205 350.807 l
-660.205 350.078 660.028 349.506 659.676 349.087 c
-659.33 348.675 658.871 348.469 658.294 348.469 c
-657.713 348.469 657.25 348.667 656.898 349.072 c
-656.552 349.483 656.375 350.034 656.368 350.733 c
-h
-657.177 350.807 m
-657.177 350.296 657.272 349.895 657.47 349.601 c
-657.677 349.307 657.948 349.16 658.294 349.16 c
-659.007 349.16 659.375 349.678 659.396 350.718 c
-659.396 351.277 l
-659.396 351.784 659.294 352.188 659.088 352.482 c
-658.889 352.776 658.621 352.923 658.279 352.923 c
-657.945 352.923 657.677 352.776 657.47 352.482 c
-657.272 352.188 657.177 351.784 657.177 351.277 c
-h
-661.829 353.525 m
-661.858 353.07 l
-662.16 353.43 662.557 353.614 663.049 353.614 c
-663.608 353.614 663.994 353.371 664.21 352.893 c
-664.522 353.371 664.96 353.614 665.518 353.614 c
-666.438 353.614 666.908 353.045 666.93 351.909 c
-666.93 348.557 l
-666.122 348.557 l
-666.122 351.835 l
-666.122 352.188 666.051 352.453 665.915 352.629 c
-665.787 352.806 665.57 352.893 665.268 352.893 c
-665.023 352.893 664.82 352.798 664.666 352.615 c
-664.518 352.427 664.431 352.188 664.402 351.894 c
-664.402 348.557 l
-663.593 348.557 l
-663.593 351.865 l
-663.581 352.548 663.303 352.893 662.756 352.893 c
-662.344 352.893 662.053 352.688 661.888 352.276 c
-661.888 348.557 l
-661.079 348.557 l
-661.079 353.525 l
-h
-672.346 349.836 m
-672.346 350.001 672.277 350.148 672.14 350.277 c
-672.011 350.402 671.758 350.549 671.376 350.718 c
-670.943 350.902 670.633 351.06 670.45 351.189 c
-670.274 351.314 670.141 351.457 670.053 351.615 c
-669.965 351.78 669.921 351.975 669.921 352.203 c
-669.921 352.615 670.068 352.952 670.361 353.217 c
-670.656 353.481 671.03 353.614 671.494 353.614 c
-671.982 353.614 672.376 353.471 672.67 353.188 c
-672.964 352.912 673.11 352.555 673.11 352.114 c
-672.302 352.114 l
-672.302 352.339 672.221 352.53 672.067 352.688 c
-671.92 352.842 671.729 352.923 671.494 352.923 c
-671.259 352.923 671.071 352.856 670.935 352.732 c
-670.795 352.615 670.729 352.445 670.729 352.232 c
-670.729 352.063 670.777 351.931 670.876 351.835 c
-670.972 351.736 671.215 351.603 671.597 351.439 c
-672.202 351.204 672.615 350.971 672.831 350.747 c
-673.044 350.52 673.154 350.237 673.154 349.895 c
-673.154 349.461 673 349.116 672.699 348.852 c
-672.405 348.594 672.008 348.469 671.508 348.469 c
-670.997 348.469 670.582 348.617 670.259 348.91 c
-669.935 349.205 669.773 349.579 669.773 350.042 c
-670.597 350.042 l
-670.604 349.766 670.689 349.55 670.847 349.396 c
-671.001 349.237 671.222 349.16 671.508 349.16 c
-671.78 349.16 671.986 349.219 672.125 349.336 c
-672.273 349.461 672.346 349.631 672.346 349.836 c
-673.868 351.277 m
-673.868 351.989 674.037 352.559 674.382 352.982 c
-674.735 353.4 675.198 353.614 675.778 353.614 c
-676.356 353.614 676.815 353.408 677.16 352.997 c
-677.513 352.592 677.693 352.033 677.704 351.321 c
-677.704 350.807 l
-677.704 350.078 677.528 349.506 677.175 349.087 c
-676.829 348.675 676.37 348.469 675.793 348.469 c
-675.213 348.469 674.75 348.667 674.396 349.072 c
-674.051 349.483 673.875 350.034 673.868 350.733 c
-h
-674.676 350.807 m
-674.676 350.296 674.772 349.895 674.97 349.601 c
-675.176 349.307 675.448 349.16 675.793 349.16 c
-676.506 349.16 676.873 349.678 676.896 350.718 c
-676.896 351.277 l
-676.896 351.784 676.792 352.188 676.587 352.482 c
-676.389 352.776 676.121 352.923 675.778 352.923 c
-675.444 352.923 675.176 352.776 674.97 352.482 c
-674.772 352.188 674.676 351.784 674.676 351.277 c
-h
-681.107 348.999 m
-680.831 348.646 680.434 348.469 679.917 348.469 c
-679.475 348.469 679.138 348.619 678.902 348.925 c
-678.674 349.237 678.556 349.693 678.55 350.292 c
-678.55 353.525 l
-679.358 353.525 l
-679.358 350.35 l
-679.358 349.575 679.593 349.189 680.063 349.189 c
-680.552 349.189 680.89 349.41 681.077 349.851 c
-681.077 353.525 l
-681.901 353.525 l
-681.901 348.557 l
-681.122 348.557 l
-h
-684.995 352.761 m
-684.877 352.779 684.752 352.791 684.628 352.791 c
-684.204 352.791 683.915 352.563 683.76 352.114 c
-683.76 348.557 l
-682.937 348.557 l
-682.937 353.525 l
-683.73 353.525 l
-683.745 353.026 l
-683.959 353.415 684.267 353.614 684.671 353.614 c
-684.796 353.614 684.906 353.592 684.995 353.555 c
-h
-687.335 349.16 m
-687.6 349.16 687.809 349.241 687.967 349.41 c
-688.133 349.575 688.225 349.814 688.247 350.13 c
-689.012 350.13 l
-688.989 349.649 688.821 349.252 688.497 348.939 c
-688.181 348.623 687.795 348.469 687.335 348.469 c
-686.718 348.469 686.248 348.66 685.924 349.043 c
-685.601 349.432 685.44 350.013 685.44 350.776 c
-685.44 351.321 l
-685.44 352.074 685.601 352.644 685.924 353.026 c
-686.248 353.415 686.711 353.614 687.321 353.614 c
-687.828 353.614 688.233 353.452 688.526 353.128 c
-688.827 352.812 688.989 352.38 689.012 351.821 c
-688.247 351.821 l
-688.225 352.181 688.137 352.457 687.982 352.644 c
-687.824 352.827 687.604 352.923 687.321 352.923 c
-686.968 352.923 686.704 352.798 686.527 352.555 c
-686.351 352.32 686.255 351.931 686.248 351.395 c
-686.248 350.762 l
-686.248 350.174 686.336 349.755 686.512 349.513 c
-686.689 349.278 686.961 349.16 687.335 349.16 c
-691.558 348.469 m
-690.94 348.469 690.463 348.65 690.132 349.013 c
-689.808 349.384 689.64 349.928 689.632 350.645 c
-689.632 351.247 l
-689.632 351.983 689.794 352.559 690.117 352.982 c
-690.441 353.4 690.889 353.614 691.47 353.614 c
-692.046 353.614 692.476 353.427 692.763 353.055 c
-693.057 352.692 693.208 352.118 693.219 351.335 c
-693.219 350.807 l
-690.441 350.807 l
-690.441 350.689 l
-690.441 350.148 690.536 349.755 690.735 349.513 c
-690.94 349.278 691.227 349.16 691.602 349.16 c
-691.844 349.16 692.058 349.205 692.234 349.292 c
-692.418 349.38 692.59 349.52 692.748 349.718 c
-693.174 349.205 l
-692.822 348.712 692.282 348.469 691.558 348.469 c
-691.47 352.923 m
-691.135 352.923 690.886 352.806 690.72 352.57 c
-690.551 352.342 690.459 351.986 690.441 351.497 c
-692.395 351.497 l
-692.395 351.615 l
-692.374 352.085 692.293 352.416 692.146 352.615 c
-691.998 352.82 691.771 352.923 691.47 352.923 c
-694.028 347.22 m
-693.542 347.558 l
-693.825 347.962 693.976 348.374 693.997 348.792 c
-693.997 349.557 l
-694.821 349.557 l
-694.821 348.895 l
-694.821 348.59 694.741 348.285 694.585 347.969 c
-694.439 347.657 694.252 347.407 694.028 347.22 c
-699.227 349.91 m
-700.124 353.525 l
-700.991 353.525 l
-699.36 347.852 l
-699.242 347.433 699.069 347.109 698.845 346.882 c
-698.617 346.657 698.363 346.543 698.08 346.543 c
-697.97 346.543 697.835 346.57 697.669 346.617 c
-697.669 347.308 l
-697.845 347.293 l
-698.08 347.293 698.261 347.352 698.389 347.47 c
-698.525 347.58 698.632 347.771 698.712 348.043 c
-698.874 348.602 l
-697.419 353.525 l
-698.301 353.525 l
-h
-701.384 351.277 m
-701.384 351.989 701.554 352.559 701.899 352.982 c
-702.252 353.4 702.714 353.614 703.295 353.614 c
-703.872 353.614 704.331 353.408 704.677 352.997 c
-705.03 352.592 705.209 352.033 705.221 351.321 c
-705.221 350.807 l
-705.221 350.078 705.045 349.506 704.692 349.087 c
-704.346 348.675 703.887 348.469 703.31 348.469 c
-702.729 348.469 702.267 348.667 701.913 349.072 c
-701.568 349.483 701.392 350.034 701.384 350.733 c
-h
-702.192 350.807 m
-702.192 350.296 702.288 349.895 702.487 349.601 c
-702.693 349.307 702.965 349.16 703.31 349.16 c
-704.023 349.16 704.39 349.678 704.412 350.718 c
-704.412 351.277 l
-704.412 351.784 704.309 352.188 704.104 352.482 c
-703.905 352.776 703.637 352.923 703.295 352.923 c
-702.961 352.923 702.693 352.776 702.487 352.482 c
-702.288 352.188 702.192 351.784 702.192 351.277 c
-h
-708.623 348.999 m
-708.348 348.646 707.951 348.469 707.433 348.469 c
-706.992 348.469 706.654 348.619 706.419 348.925 c
-706.19 349.237 706.073 349.693 706.066 350.292 c
-706.066 353.525 l
-706.874 353.525 l
-706.874 350.35 l
-706.874 349.575 707.109 349.189 707.58 349.189 c
-708.068 349.189 708.407 349.41 708.594 349.851 c
-708.594 353.525 l
-709.417 353.525 l
-709.417 348.557 l
-708.638 348.557 l
-h
-714.253 349.16 m
-714.518 349.16 714.728 349.241 714.886 349.41 c
-715.05 349.575 715.143 349.814 715.164 350.13 c
-715.929 350.13 l
-715.907 349.649 715.738 349.252 715.414 348.939 c
-715.098 348.623 714.713 348.469 714.253 348.469 c
-713.635 348.469 713.165 348.66 712.842 349.043 c
-712.519 349.432 712.357 350.013 712.357 350.776 c
-712.357 351.321 l
-712.357 352.074 712.519 352.644 712.842 353.026 c
-713.165 353.415 713.629 353.614 714.238 353.614 c
-714.745 353.614 715.15 353.452 715.444 353.128 c
-715.745 352.812 715.907 352.38 715.929 351.821 c
-715.164 351.821 l
-715.143 352.181 715.054 352.457 714.9 352.644 c
-714.742 352.827 714.522 352.923 714.238 352.923 c
-713.886 352.923 713.621 352.798 713.444 352.555 c
-713.269 352.32 713.173 351.931 713.165 351.395 c
-713.165 350.762 l
-713.165 350.174 713.253 349.755 713.43 349.513 c
-713.606 349.278 713.878 349.16 714.253 349.16 c
-719.254 348.557 m
-719.203 348.664 719.17 348.844 719.152 349.101 c
-718.865 348.679 718.497 348.469 718.049 348.469 c
-717.597 348.469 717.244 348.59 716.991 348.837 c
-716.745 349.09 716.623 349.446 716.623 349.91 c
-716.623 350.417 716.793 350.821 717.138 351.115 c
-717.479 351.409 717.95 351.559 718.549 351.57 c
-719.137 351.57 l
-719.137 352.1 l
-719.137 352.394 719.067 352.603 718.931 352.732 c
-718.803 352.856 718.608 352.923 718.343 352.923 c
-718.097 352.923 717.895 352.85 717.741 352.702 c
-717.593 352.555 717.52 352.368 717.52 352.144 c
-716.697 352.144 l
-716.697 352.397 716.77 352.644 716.918 352.879 c
-717.072 353.114 717.278 353.294 717.535 353.423 c
-717.789 353.548 718.071 353.614 718.387 353.614 c
-718.894 353.614 719.284 353.485 719.549 353.232 c
-719.813 352.985 719.945 352.618 719.945 352.129 c
-719.945 349.631 l
-719.952 349.248 720.008 348.914 720.107 348.631 c
-720.107 348.557 l
-h
-718.181 349.205 m
-718.376 349.205 718.564 349.255 718.74 349.365 c
-718.924 349.483 719.056 349.619 719.137 349.777 c
-719.137 350.968 l
-718.682 350.968 l
-718.299 350.957 717.994 350.869 717.77 350.703 c
-717.542 350.535 717.432 350.306 717.432 350.013 c
-717.432 349.726 717.483 349.52 717.593 349.396 c
-717.711 349.267 717.905 349.205 718.181 349.205 c
-721.783 353.525 m
-721.812 352.997 l
-722.125 353.408 722.525 353.614 723.017 353.614 c
-723.9 353.614 724.344 353.03 724.355 351.865 c
-724.355 348.557 l
-723.547 348.557 l
-723.547 351.821 l
-723.547 352.21 723.48 352.486 723.355 352.644 c
-723.227 352.809 723.032 352.893 722.767 352.893 c
-722.562 352.893 722.378 352.824 722.223 352.688 c
-722.065 352.559 721.937 352.386 721.841 352.173 c
-721.841 348.557 l
-721.018 348.557 l
-721.018 353.525 l
-h
-727.295 351.262 m
-727.295 352.033 727.434 352.618 727.721 353.011 c
-728.004 353.412 728.415 353.614 728.956 353.614 c
-729.463 353.614 729.853 353.397 730.117 352.967 c
-730.146 353.525 l
-730.881 353.525 l
-730.881 348.513 l
-730.881 347.896 730.724 347.426 730.411 347.102 c
-730.096 346.772 729.662 346.602 729.103 346.602 c
-728.857 346.602 728.577 346.668 728.265 346.793 c
-727.96 346.911 727.736 347.058 727.588 347.235 c
-727.912 347.793 l
-728.254 347.462 728.625 347.293 729.03 347.293 c
-729.705 347.293 730.051 347.661 730.073 348.396 c
-730.073 349.043 l
-729.809 348.66 729.433 348.469 728.956 348.469 c
-728.434 348.469 728.033 348.66 727.75 349.043 c
-727.464 349.432 727.313 349.99 727.295 350.718 c
-h
-728.118 350.807 m
-728.118 350.248 728.195 349.836 728.353 349.571 c
-728.519 349.315 728.787 349.189 729.161 349.189 c
-729.562 349.189 729.867 349.396 730.073 349.807 c
-730.073 352.291 l
-729.867 352.692 729.566 352.893 729.176 352.893 c
-728.802 352.893 728.533 352.761 728.368 352.497 c
-728.199 352.239 728.118 351.842 728.118 351.306 c
-h
-733.682 348.469 m
-733.065 348.469 732.587 348.65 732.255 349.013 c
-731.933 349.384 731.763 349.928 731.756 350.645 c
-731.756 351.247 l
-731.756 351.983 731.918 352.559 732.241 352.982 c
-732.565 353.4 733.013 353.614 733.593 353.614 c
-734.171 353.614 734.601 353.427 734.887 353.055 c
-735.181 352.692 735.332 352.118 735.343 351.335 c
-735.343 350.807 l
-732.565 350.807 l
-732.565 350.689 l
-732.565 350.148 732.66 349.755 732.858 349.513 c
-733.065 349.278 733.35 349.16 733.726 349.16 c
-733.969 349.16 734.181 349.205 734.358 349.292 c
-734.541 349.38 734.715 349.52 734.873 349.718 c
-735.299 349.205 l
-734.946 348.712 734.406 348.469 733.682 348.469 c
-733.593 352.923 m
-733.259 352.923 733.009 352.806 732.843 352.57 c
-732.675 352.342 732.583 351.986 732.565 351.497 c
-734.52 351.497 l
-734.52 351.615 l
-734.497 352.085 734.416 352.416 734.27 352.615 c
-734.123 352.82 733.895 352.923 733.593 352.923 c
-737.209 354.731 m
-737.209 353.525 l
-737.959 353.525 l
-737.959 352.864 l
-737.209 352.864 l
-737.209 349.792 l
-737.209 349.594 737.239 349.443 737.298 349.336 c
-737.364 349.237 737.478 349.189 737.636 349.189 c
-737.742 349.189 737.849 349.207 737.959 349.248 c
-737.944 348.557 l
-737.768 348.499 737.581 348.469 737.386 348.469 c
-737.063 348.469 736.816 348.579 736.651 348.808 c
-736.482 349.043 736.401 349.365 736.401 349.777 c
-736.401 352.864 l
-735.636 352.864 l
-735.636 353.525 l
-736.401 353.525 l
-736.401 354.731 l
-h
-741.744 348.557 -0.808 4.968 re
-741.803 354.849 m
-741.803 354.709 741.763 354.591 741.685 354.496 c
-741.616 354.408 741.502 354.364 741.347 354.364 c
-741.189 354.364 741.072 354.408 740.994 354.496 c
-740.924 354.591 740.891 354.709 740.891 354.849 c
-740.891 354.984 740.924 355.098 740.994 355.187 c
-741.072 355.282 741.186 355.333 741.333 355.333 c
-741.487 355.333 741.605 355.282 741.685 355.187 c
-741.763 355.098 741.803 354.984 741.803 354.849 c
-744.001 354.731 m
-744.001 353.525 l
-744.75 353.525 l
-744.75 352.864 l
-744.001 352.864 l
-744.001 349.792 l
-744.001 349.594 744.03 349.443 744.089 349.336 c
-744.155 349.237 744.269 349.189 744.427 349.189 c
-744.533 349.189 744.639 349.207 744.75 349.248 c
-744.735 348.557 l
-744.559 348.499 744.371 348.469 744.177 348.469 c
-743.854 348.469 743.607 348.579 743.442 348.808 c
-743.272 349.043 743.192 349.365 743.192 349.777 c
-743.192 352.864 l
-742.428 352.864 l
-742.428 353.525 l
-743.192 353.525 l
-743.192 354.731 l
-h
-748.02 348.557 m
-748.02 352.864 l
-747.374 352.864 l
-747.374 353.525 l
-748.02 353.525 l
-748.02 354.099 l
-748.028 354.606 748.157 355.003 748.402 355.289 c
-748.645 355.572 748.994 355.715 749.447 355.715 c
-749.601 355.715 749.763 355.686 749.931 355.628 c
-749.888 354.936 l
-749.777 354.967 749.655 354.981 749.52 354.981 c
-749.057 354.981 748.829 354.65 748.829 353.996 c
-748.829 353.525 l
-749.682 353.525 l
-749.682 352.864 l
-748.829 352.864 l
-748.829 348.557 l
-h
-752.57 352.761 m
-752.452 352.779 752.327 352.791 752.203 352.791 c
-751.78 352.791 751.49 352.563 751.336 352.114 c
-751.336 348.557 l
-750.512 348.557 l
-750.512 353.525 l
-751.305 353.525 l
-751.32 353.026 l
-751.534 353.415 751.843 353.614 752.246 353.614 c
-752.371 353.614 752.481 353.592 752.57 353.555 c
-h
-753.015 351.277 m
-753.015 351.989 753.183 352.559 753.529 352.982 c
-753.882 353.4 754.345 353.614 754.925 353.614 c
-755.502 353.614 755.962 353.408 756.307 352.997 c
-756.66 352.592 756.84 352.033 756.851 351.321 c
-756.851 350.807 l
-756.851 350.078 756.674 349.506 756.321 349.087 c
-755.976 348.675 755.517 348.469 754.94 348.469 c
-754.359 348.469 753.896 348.667 753.543 349.072 c
-753.198 349.483 753.022 350.034 753.015 350.733 c
-h
-753.823 350.807 m
-753.823 350.296 753.919 349.895 754.117 349.601 c
-754.322 349.307 754.594 349.16 754.94 349.16 c
-755.654 349.16 756.02 349.678 756.043 350.718 c
-756.043 351.277 l
-756.043 351.784 755.94 352.188 755.734 352.482 c
-755.535 352.776 755.267 352.923 754.925 352.923 c
-754.591 352.923 754.322 352.776 754.117 352.482 c
-753.919 352.188 753.823 351.784 753.823 351.277 c
-h
-758.472 353.525 m
-758.501 353.07 l
-758.802 353.43 759.199 353.614 759.691 353.614 c
-760.25 353.614 760.636 353.371 760.853 352.893 c
-761.165 353.371 761.603 353.614 762.161 353.614 c
-763.08 353.614 763.55 353.045 763.572 351.909 c
-763.572 348.557 l
-762.764 348.557 l
-762.764 351.835 l
-762.764 352.188 762.694 352.453 762.558 352.629 c
-762.43 352.806 762.212 352.893 761.911 352.893 c
-761.665 352.893 761.463 352.798 761.308 352.615 c
-761.162 352.427 761.073 352.188 761.044 351.894 c
-761.044 348.557 l
-760.236 348.557 l
-760.236 351.865 l
-760.225 352.548 759.945 352.893 759.398 352.893 c
-758.986 352.893 758.696 352.688 758.53 352.276 c
-758.53 348.557 l
-757.722 348.557 l
-757.722 353.525 l
-h
-f
-q 1 0 0 1 536.9344 341.7219 cm
-0 0 m
-0.302 0.401 0.695 0.603 1.176 0.603 c
-2.058 0.603 2.503 0.019 2.514 -1.146 c
-2.514 -4.453 l
-1.706 -4.453 l
-1.706 -1.19 l
-1.706 -0.801 1.64 -0.525 1.515 -0.367 c
-1.386 -0.201 1.191 -0.118 0.927 -0.118 c
-0.721 -0.118 0.537 -0.187 0.383 -0.323 c
-0.225 -0.452 0.096 -0.625 0 -0.837 c
-0 -4.453 l
--0.823 -4.453 l
--0.823 2.602 l
-0 2.602 l
-h
-4.605 1.721 m
-4.605 0.515 l
-5.355 0.515 l
-5.355 -0.147 l
-4.605 -0.147 l
-4.605 -3.218 l
-4.605 -3.417 4.634 -3.568 4.693 -3.674 c
-4.759 -3.773 4.873 -3.821 5.031 -3.821 c
-5.137 -3.821 5.245 -3.803 5.355 -3.763 c
-5.34 -4.453 l
-5.164 -4.512 4.976 -4.542 4.781 -4.542 c
-4.458 -4.542 4.212 -4.432 4.046 -4.203 c
-3.877 -3.968 3.797 -3.645 3.797 -3.233 c
-3.797 -0.147 l
-3.032 -0.147 l
-3.032 0.515 l
-3.797 0.515 l
-3.797 1.721 l
-h
-7.269 1.721 m
-7.269 0.515 l
-8.019 0.515 l
-8.019 -0.147 l
-7.269 -0.147 l
-7.269 -3.218 l
-7.269 -3.417 7.298 -3.568 7.358 -3.674 c
-7.423 -3.773 7.537 -3.821 7.695 -3.821 c
-7.802 -3.821 7.909 -3.803 8.019 -3.763 c
-8.004 -4.453 l
-7.828 -4.512 7.64 -4.542 7.445 -4.542 c
-7.122 -4.542 6.876 -4.432 6.71 -4.203 c
-6.542 -3.968 6.461 -3.645 6.461 -3.233 c
-6.461 -0.147 l
-5.696 -0.147 l
-5.696 0.515 l
-6.461 0.515 l
-6.461 1.721 l
-h
-12.462 -2.204 m
-12.462 -2.991 12.318 -3.579 12.035 -3.968 c
-11.749 -4.351 11.348 -4.542 10.83 -4.542 c
-10.33 -4.542 9.948 -4.357 9.683 -3.983 c
-9.683 -6.364 l
-8.875 -6.364 l
-8.875 0.515 l
-9.61 0.515 l
-9.64 -0.029 l
-9.912 0.389 10.305 0.603 10.816 0.603 c
-11.363 0.603 11.771 0.412 12.035 0.03 c
-12.307 -0.345 12.451 -0.907 12.462 -1.66 c
-h
-11.653 -1.749 m
-11.653 -1.19 11.565 -0.779 11.389 -0.514 c
-11.219 -0.249 10.947 -0.118 10.565 -0.118 c
-10.172 -0.118 9.878 -0.309 9.683 -0.69 c
-9.683 -3.277 l
-9.878 -3.659 10.176 -3.85 10.581 -3.85 c
-10.94 -3.85 11.205 -3.719 11.374 -3.453 c
-11.55 -3.189 11.642 -2.786 11.653 -2.234 c
-h
-15.747 -3.175 m
-15.747 -3.009 15.676 -2.863 15.541 -2.734 c
-15.412 -2.609 15.159 -2.462 14.776 -2.293 c
-14.343 -2.109 14.034 -1.951 13.851 -1.822 c
-13.675 -1.697 13.542 -1.554 13.454 -1.396 c
-13.365 -1.23 13.322 -1.036 13.322 -0.808 c
-13.322 -0.396 13.469 -0.058 13.762 0.206 c
-14.057 0.47 14.431 0.603 14.894 0.603 c
-15.383 0.603 15.776 0.46 16.07 0.177 c
-16.364 -0.099 16.511 -0.455 16.511 -0.897 c
-15.703 -0.897 l
-15.703 -0.672 15.622 -0.481 15.468 -0.323 c
-15.321 -0.168 15.129 -0.087 14.894 -0.087 c
-14.659 -0.087 14.471 -0.154 14.336 -0.278 c
-14.196 -0.396 14.13 -0.565 14.13 -0.779 c
-14.13 -0.947 14.178 -1.08 14.277 -1.176 c
-14.373 -1.275 14.615 -1.407 14.997 -1.572 c
-15.603 -1.807 16.015 -2.04 16.232 -2.263 c
-16.445 -2.491 16.555 -2.774 16.555 -3.116 c
-16.555 -3.549 16.401 -3.895 16.1 -4.159 c
-15.805 -4.417 15.408 -4.542 14.909 -4.542 c
-14.398 -4.542 13.983 -4.394 13.66 -4.101 c
-13.336 -3.806 13.174 -3.432 13.174 -2.969 c
-13.997 -2.969 l
-14.005 -3.245 14.089 -3.461 14.247 -3.615 c
-14.402 -3.773 14.622 -3.85 14.909 -3.85 c
-15.181 -3.85 15.387 -3.792 15.526 -3.674 c
-15.674 -3.549 15.747 -3.38 15.747 -3.175 c
-17.492 -4.012 m
-17.492 -3.865 17.536 -3.744 17.625 -3.645 c
-17.713 -3.549 17.837 -3.498 18.007 -3.498 c
-18.184 -3.498 18.315 -3.549 18.404 -3.645 c
-18.499 -3.744 18.55 -3.865 18.55 -4.012 c
-18.55 -4.152 18.499 -4.27 18.404 -4.365 c
-18.315 -4.453 18.184 -4.498 18.007 -4.498 c
-17.837 -4.498 17.713 -4.453 17.625 -4.365 c
-17.536 -4.27 17.492 -4.152 17.492 -4.012 c
-17.492 -0.249 m
-17.492 -0.103 17.536 0.019 17.625 0.118 c
-17.713 0.214 17.837 0.265 18.007 0.265 c
-18.184 0.265 18.315 0.214 18.404 0.118 c
-18.499 0.019 18.55 -0.103 18.55 -0.249 c
-18.55 -0.389 18.499 -0.507 18.404 -0.602 c
-18.315 -0.69 18.184 -0.735 18.007 -0.735 c
-17.837 -0.735 17.713 -0.69 17.625 -0.602 c
-17.536 -0.507 17.492 -0.389 17.492 -0.249 c
-19.786 -5.026 m
-19.094 -5.026 l
-21.432 2.234 l
-22.122 2.234 l
-h
-22.148 -5.026 m
-21.457 -5.026 l
-23.794 2.234 l
-24.486 2.234 l
-h
-25.103 -1.749 m
-25.103 -0.977 25.242 -0.393 25.529 0 c
-25.812 0.401 26.223 0.603 26.764 0.603 c
-27.271 0.603 27.661 0.387 27.925 -0.043 c
-27.954 0.515 l
-28.69 0.515 l
-28.69 -4.498 l
-28.69 -5.115 28.532 -5.585 28.219 -5.909 c
-27.903 -6.239 27.47 -6.408 26.911 -6.408 c
-26.664 -6.408 26.385 -6.342 26.073 -6.217 c
-25.768 -6.1 25.544 -5.953 25.397 -5.776 c
-25.72 -5.217 l
-26.062 -5.548 26.433 -5.718 26.837 -5.718 c
-27.514 -5.718 27.859 -5.35 27.881 -4.615 c
-27.881 -3.968 l
-27.616 -4.351 27.241 -4.542 26.764 -4.542 c
-26.242 -4.542 25.841 -4.351 25.558 -3.968 c
-25.272 -3.579 25.122 -3.021 25.103 -2.293 c
-h
-25.926 -2.204 m
-25.926 -2.763 26.003 -3.175 26.161 -3.439 c
-26.327 -3.696 26.595 -3.821 26.969 -3.821 c
-27.37 -3.821 27.675 -3.615 27.881 -3.204 c
-27.881 -0.72 l
-27.675 -0.319 27.374 -0.118 26.984 -0.118 c
-26.61 -0.118 26.341 -0.249 26.176 -0.514 c
-26.007 -0.771 25.926 -1.168 25.926 -1.705 c
-h
-30.593 -4.453 -0.808 4.968 re
-30.651 1.838 m
-30.651 1.698 30.611 1.58 30.534 1.485 c
-30.464 1.397 30.35 1.353 30.196 1.353 c
-30.038 1.353 29.92 1.397 29.843 1.485 c
-29.773 1.58 29.741 1.698 29.741 1.838 c
-29.741 1.974 29.773 2.088 29.843 2.176 c
-29.92 2.271 30.034 2.323 30.181 2.323 c
-30.336 2.323 30.453 2.271 30.534 2.176 c
-30.611 2.088 30.651 1.974 30.651 1.838 c
-32.845 1.721 m
-32.845 0.515 l
-33.595 0.515 l
-33.595 -0.147 l
-32.845 -0.147 l
-32.845 -3.218 l
-32.845 -3.417 32.875 -3.568 32.933 -3.674 c
-33 -3.773 33.114 -3.821 33.272 -3.821 c
-33.378 -3.821 33.485 -3.803 33.595 -3.763 c
-33.581 -4.453 l
-33.404 -4.512 33.217 -4.542 33.022 -4.542 c
-32.698 -4.542 32.453 -4.432 32.287 -4.203 c
-32.118 -3.968 32.037 -3.645 32.037 -3.233 c
-32.037 -0.147 l
-31.273 -0.147 l
-31.273 0.515 l
-32.037 0.515 l
-32.037 1.721 l
-h
-35.95 -1.955 -1.896 0.691 re
-39.104 -3.175 m
-39.104 -3.009 39.034 -2.863 38.898 -2.734 c
-38.769 -2.609 38.516 -2.462 38.134 -2.293 c
-37.7 -2.109 37.392 -1.951 37.207 -1.822 c
-37.031 -1.697 36.899 -1.554 36.81 -1.396 c
-36.723 -1.23 36.679 -1.036 36.679 -0.808 c
-36.679 -0.396 36.825 -0.058 37.119 0.206 c
-37.413 0.47 37.788 0.603 38.251 0.603 c
-38.74 0.603 39.133 0.46 39.427 0.177 c
-39.721 -0.099 39.868 -0.455 39.868 -0.897 c
-39.06 -0.897 l
-39.06 -0.672 38.979 -0.481 38.824 -0.323 c
-38.678 -0.168 38.487 -0.087 38.251 -0.087 c
-38.016 -0.087 37.828 -0.154 37.693 -0.278 c
-37.552 -0.396 37.487 -0.565 37.487 -0.779 c
-37.487 -0.947 37.535 -1.08 37.633 -1.176 c
-37.729 -1.275 37.972 -1.407 38.354 -1.572 c
-38.96 -1.807 39.372 -2.04 39.588 -2.263 c
-39.802 -2.491 39.912 -2.774 39.912 -3.116 c
-39.912 -3.549 39.758 -3.895 39.456 -4.159 c
-39.162 -4.417 38.765 -4.542 38.266 -4.542 c
-37.755 -4.542 37.34 -4.394 37.016 -4.101 c
-36.693 -3.806 36.531 -3.432 36.531 -2.969 c
-37.354 -2.969 l
-37.362 -3.245 37.446 -3.461 37.604 -3.615 c
-37.758 -3.773 37.979 -3.85 38.266 -3.85 c
-38.537 -3.85 38.743 -3.792 38.883 -3.674 c
-39.03 -3.549 39.104 -3.38 39.104 -3.175 c
-42.521 -3.85 m
-42.786 -3.85 42.996 -3.77 43.153 -3.601 c
-43.318 -3.436 43.41 -3.197 43.432 -2.881 c
-44.197 -2.881 l
-44.174 -3.362 44.006 -3.759 43.682 -4.072 c
-43.366 -4.388 42.981 -4.542 42.521 -4.542 c
-41.903 -4.542 41.433 -4.351 41.11 -3.968 c
-40.787 -3.579 40.625 -2.998 40.625 -2.234 c
-40.625 -1.69 l
-40.625 -0.937 40.787 -0.367 41.11 0.015 c
-41.433 0.405 41.897 0.603 42.506 0.603 c
-43.013 0.603 43.418 0.441 43.711 0.118 c
-44.013 -0.198 44.174 -0.631 44.197 -1.19 c
-43.432 -1.19 l
-43.41 -0.83 43.322 -0.554 43.168 -0.367 c
-43.01 -0.183 42.79 -0.087 42.506 -0.087 c
-42.154 -0.087 41.889 -0.213 41.712 -0.455 c
-41.536 -0.69 41.441 -1.08 41.433 -1.616 c
-41.433 -2.248 l
-41.433 -2.836 41.521 -3.256 41.698 -3.498 c
-41.874 -3.733 42.146 -3.85 42.521 -3.85 c
-45.733 0.515 m
-45.762 0.059 l
-46.063 0.42 46.46 0.603 46.953 0.603 c
-47.511 0.603 47.897 0.36 48.114 -0.118 c
-48.427 0.36 48.864 0.603 49.423 0.603 c
-50.341 0.603 50.811 0.034 50.834 -1.102 c
-50.834 -4.453 l
-50.025 -4.453 l
-50.025 -1.176 l
-50.025 -0.823 49.955 -0.558 49.819 -0.382 c
-49.691 -0.205 49.474 -0.118 49.172 -0.118 c
-48.926 -0.118 48.724 -0.213 48.569 -0.396 c
-48.423 -0.584 48.334 -0.823 48.305 -1.117 c
-48.305 -4.453 l
-47.497 -4.453 l
-47.497 -1.146 l
-47.486 -0.463 47.206 -0.118 46.659 -0.118 c
-46.248 -0.118 45.957 -0.323 45.791 -0.735 c
-45.791 -4.453 l
-44.983 -4.453 l
-44.983 0.515 l
-h
-51.818 -4.012 m
-51.818 -3.865 51.862 -3.744 51.951 -3.645 c
-52.039 -3.549 52.164 -3.498 52.332 -3.498 c
-52.509 -3.498 52.641 -3.549 52.729 -3.645 c
-52.825 -3.744 52.876 -3.865 52.876 -4.012 c
-52.876 -4.152 52.825 -4.27 52.729 -4.365 c
-52.641 -4.453 52.509 -4.498 52.332 -4.498 c
-52.164 -4.498 52.039 -4.453 51.951 -4.365 c
-51.862 -4.27 51.818 -4.152 51.818 -4.012 c
-55.875 -3.85 m
-56.14 -3.85 56.349 -3.77 56.507 -3.601 c
-56.673 -3.436 56.764 -3.197 56.787 -2.881 c
-57.551 -2.881 l
-57.529 -3.362 57.36 -3.759 57.036 -4.072 c
-56.72 -4.388 56.334 -4.542 55.875 -4.542 c
-55.258 -4.542 54.788 -4.351 54.464 -3.968 c
-54.141 -3.579 53.979 -2.998 53.979 -2.234 c
-53.979 -1.69 l
-53.979 -0.937 54.141 -0.367 54.464 0.015 c
-54.788 0.405 55.251 0.603 55.86 0.603 c
-56.367 0.603 56.772 0.441 57.066 0.118 c
-57.367 -0.198 57.529 -0.631 57.551 -1.19 c
-56.787 -1.19 l
-56.764 -0.83 56.677 -0.554 56.522 -0.367 c
-56.363 -0.183 56.143 -0.087 55.86 -0.087 c
-55.507 -0.087 55.243 -0.213 55.067 -0.455 c
-54.89 -0.69 54.795 -1.08 54.788 -1.616 c
-54.788 -2.248 l
-54.788 -2.836 54.875 -3.256 55.052 -3.498 c
-55.228 -3.733 55.501 -3.85 55.875 -3.85 c
-58.157 -1.734 m
-58.157 -1.022 58.326 -0.452 58.672 -0.029 c
-59.025 0.389 59.488 0.603 60.068 0.603 c
-60.645 0.603 61.105 0.397 61.45 -0.014 c
-61.803 -0.419 61.983 -0.977 61.994 -1.69 c
-61.994 -2.204 l
-61.994 -2.932 61.817 -3.505 61.464 -3.924 c
-61.119 -4.336 60.66 -4.542 60.083 -4.542 c
-59.502 -4.542 59.039 -4.343 58.686 -3.939 c
-58.341 -3.528 58.165 -2.977 58.157 -2.277 c
-h
-58.966 -2.204 m
-58.966 -2.715 59.062 -3.116 59.26 -3.41 c
-59.465 -3.704 59.737 -3.85 60.083 -3.85 c
-60.795 -3.85 61.163 -3.333 61.185 -2.293 c
-61.185 -1.734 l
-61.185 -1.227 61.082 -0.823 60.876 -0.529 c
-60.678 -0.235 60.41 -0.087 60.068 -0.087 c
-59.734 -0.087 59.465 -0.235 59.26 -0.529 c
-59.062 -0.823 58.966 -1.227 58.966 -1.734 c
-h
-63.617 0.515 m
-63.648 0.059 l
-63.949 0.42 64.346 0.603 64.838 0.603 c
-65.396 0.603 65.782 0.36 66 -0.118 c
-66.312 0.36 66.749 0.603 67.307 0.603 c
-68.226 0.603 68.697 0.034 68.718 -1.102 c
-68.718 -4.453 l
-67.91 -4.453 l
-67.91 -1.176 l
-67.91 -0.823 67.841 -0.558 67.704 -0.382 c
-67.575 -0.205 67.359 -0.118 67.058 -0.118 c
-66.811 -0.118 66.609 -0.213 66.455 -0.396 c
-66.308 -0.584 66.22 -0.823 66.19 -1.117 c
-66.19 -4.453 l
-65.381 -4.453 l
-65.381 -1.146 l
-65.371 -0.463 65.092 -0.118 64.544 -0.118 c
-64.132 -0.118 63.842 -0.323 63.677 -0.735 c
-63.677 -4.453 l
-62.869 -4.453 l
-62.869 0.515 l
-h
-69.88 -5.026 m
-69.189 -5.026 l
-71.526 2.234 l
-72.217 2.234 l
-h
-72.834 -1.749 m
-72.834 -0.977 72.974 -0.393 73.26 0 c
-73.543 0.401 73.955 0.603 74.495 0.603 c
-74.966 0.603 75.333 0.412 75.598 0.03 c
-75.598 2.602 l
-76.421 2.602 l
-76.421 -4.453 l
-75.671 -4.453 l
-75.627 -3.924 l
-75.363 -4.336 74.984 -4.542 74.495 -4.542 c
-73.973 -4.542 73.57 -4.347 73.275 -3.954 c
-72.982 -3.553 72.834 -2.983 72.834 -2.248 c
-h
-73.643 -2.204 m
-73.643 -2.763 73.724 -3.175 73.892 -3.439 c
-74.058 -3.696 74.326 -3.821 74.701 -3.821 c
-75.101 -3.821 75.399 -3.623 75.598 -3.218 c
-75.598 -0.706 l
-75.392 -0.316 75.091 -0.118 74.701 -0.118 c
-74.326 -0.118 74.058 -0.249 73.892 -0.514 c
-73.724 -0.771 73.643 -1.168 73.643 -1.705 c
-h
-77.314 -1.734 m
-77.314 -1.022 77.483 -0.452 77.828 -0.029 c
-78.181 0.389 78.644 0.603 79.224 0.603 c
-79.802 0.603 80.261 0.397 80.606 -0.014 c
-80.959 -0.419 81.139 -0.977 81.15 -1.69 c
-81.15 -2.204 l
-81.15 -2.932 80.974 -3.505 80.621 -3.924 c
-80.275 -4.336 79.816 -4.542 79.239 -4.542 c
-78.659 -4.542 78.195 -4.343 77.843 -3.939 c
-77.497 -3.528 77.321 -2.977 77.314 -2.277 c
-h
-78.122 -2.204 m
-78.122 -2.715 78.218 -3.116 78.416 -3.41 c
-78.622 -3.704 78.894 -3.85 79.239 -3.85 c
-79.953 -3.85 80.319 -3.333 80.342 -2.293 c
-80.342 -1.734 l
-80.342 -1.227 80.239 -0.823 80.033 -0.529 c
-79.835 -0.235 79.567 -0.087 79.224 -0.087 c
-78.89 -0.087 78.622 -0.235 78.416 -0.529 c
-78.218 -0.823 78.122 -1.227 78.122 -1.734 c
-h
-85.715 -3.027 m
-86.478 0.515 l
-87.272 0.515 l
-86.067 -4.453 l
-85.42 -4.453 l
-84.45 -0.897 l
-83.494 -4.453 l
-82.848 -4.453 l
-81.643 0.515 l
-82.436 0.515 l
-83.215 -2.94 l
-84.127 0.515 l
-84.774 0.515 l
-h
-88.647 0.515 m
-88.676 -0.014 l
-88.988 0.397 89.389 0.603 89.881 0.603 c
-90.763 0.603 91.208 0.019 91.219 -1.146 c
-91.219 -4.453 l
-90.411 -4.453 l
-90.411 -1.19 l
-90.411 -0.801 90.345 -0.525 90.22 -0.367 c
-90.091 -0.201 89.896 -0.118 89.632 -0.118 c
-89.426 -0.118 89.242 -0.187 89.088 -0.323 c
-88.93 -0.452 88.801 -0.625 88.705 -0.837 c
-88.705 -4.453 l
-87.882 -4.453 l
-87.882 0.515 l
-h
-93.137 -4.453 -0.808 7.056 re
-94.159 -1.734 m
-94.159 -1.022 94.328 -0.452 94.673 -0.029 c
-95.026 0.389 95.489 0.603 96.069 0.603 c
-96.647 0.603 97.106 0.397 97.451 -0.014 c
-97.804 -0.419 97.985 -0.977 97.995 -1.69 c
-97.995 -2.204 l
-97.995 -2.932 97.819 -3.505 97.466 -3.924 c
-97.121 -4.336 96.661 -4.542 96.084 -4.542 c
-95.504 -4.542 95.041 -4.343 94.688 -3.939 c
-94.343 -3.528 94.166 -2.977 94.159 -2.277 c
-h
-94.968 -2.204 m
-94.968 -2.715 95.063 -3.116 95.261 -3.41 c
-95.467 -3.704 95.739 -3.85 96.084 -3.85 c
-96.797 -3.85 97.165 -3.333 97.187 -2.293 c
-97.187 -1.734 l
-97.187 -1.227 97.084 -0.823 96.878 -0.529 c
-96.68 -0.235 96.412 -0.087 96.069 -0.087 c
-95.735 -0.087 95.467 -0.235 95.261 -0.529 c
-95.063 -0.823 94.968 -1.227 94.968 -1.734 c
-h
-101.413 -4.453 m
-101.362 -4.347 101.328 -4.167 101.31 -3.91 c
-101.023 -4.332 100.656 -4.542 100.208 -4.542 c
-99.755 -4.542 99.402 -4.421 99.149 -4.174 c
-98.903 -3.921 98.781 -3.564 98.781 -3.101 c
-98.781 -2.594 98.951 -2.19 99.296 -1.896 c
-99.637 -1.602 100.108 -1.452 100.707 -1.44 c
-101.295 -1.44 l
-101.295 -0.911 l
-101.295 -0.617 101.225 -0.407 101.089 -0.278 c
-100.961 -0.154 100.766 -0.087 100.501 -0.087 c
-100.256 -0.087 100.053 -0.161 99.899 -0.309 c
-99.752 -0.455 99.678 -0.642 99.678 -0.866 c
-98.855 -0.866 l
-98.855 -0.613 98.929 -0.367 99.076 -0.132 c
-99.23 0.104 99.436 0.283 99.693 0.412 c
-99.947 0.537 100.229 0.603 100.545 0.603 c
-101.052 0.603 101.442 0.474 101.707 0.221 c
-101.971 -0.025 102.104 -0.393 102.104 -0.881 c
-102.104 -3.38 l
-102.111 -3.763 102.166 -4.097 102.265 -4.38 c
-102.265 -4.453 l
-h
-100.34 -3.806 m
-100.535 -3.806 100.722 -3.755 100.898 -3.645 c
-101.082 -3.528 101.214 -3.391 101.295 -3.233 c
-101.295 -2.042 l
-100.84 -2.042 l
-100.458 -2.054 100.152 -2.142 99.928 -2.308 c
-99.701 -2.476 99.59 -2.705 99.59 -2.998 c
-99.59 -3.285 99.641 -3.491 99.752 -3.615 c
-99.87 -3.744 100.065 -3.806 100.34 -3.806 c
-103.015 -1.749 m
-103.015 -0.977 103.155 -0.393 103.441 0 c
-103.724 0.401 104.136 0.603 104.676 0.603 c
-105.146 0.603 105.514 0.412 105.779 0.03 c
-105.779 2.602 l
-106.602 2.602 l
-106.602 -4.453 l
-105.852 -4.453 l
-105.808 -3.924 l
-105.543 -4.336 105.164 -4.542 104.676 -4.542 c
-104.154 -4.542 103.75 -4.347 103.456 -3.954 c
-103.162 -3.553 103.015 -2.983 103.015 -2.248 c
-h
-103.824 -2.204 m
-103.824 -2.763 103.905 -3.175 104.073 -3.439 c
-104.239 -3.696 104.507 -3.821 104.882 -3.821 c
-105.282 -3.821 105.58 -3.623 105.779 -3.218 c
-105.779 -0.706 l
-105.573 -0.316 105.272 -0.118 104.882 -0.118 c
-104.507 -0.118 104.239 -0.249 104.073 -0.514 c
-103.905 -0.771 103.824 -1.168 103.824 -1.705 c
-h
-110.082 -3.175 m
-110.082 -3.009 110.012 -2.863 109.876 -2.734 c
-109.748 -2.609 109.494 -2.462 109.112 -2.293 c
-108.678 -2.109 108.369 -1.951 108.185 -1.822 c
-108.009 -1.697 107.876 -1.554 107.789 -1.396 c
-107.701 -1.23 107.656 -1.036 107.656 -0.808 c
-107.656 -0.396 107.803 -0.058 108.098 0.206 c
-108.391 0.47 108.766 0.603 109.229 0.603 c
-109.718 0.603 110.111 0.46 110.405 0.177 c
-110.699 -0.099 110.846 -0.455 110.846 -0.897 c
-110.037 -0.897 l
-110.037 -0.672 109.956 -0.481 109.802 -0.323 c
-109.655 -0.168 109.464 -0.087 109.229 -0.087 c
-108.994 -0.087 108.807 -0.154 108.67 -0.278 c
-108.531 -0.396 108.464 -0.565 108.464 -0.779 c
-108.464 -0.947 108.512 -1.08 108.612 -1.176 c
-108.707 -1.275 108.95 -1.407 109.332 -1.572 c
-109.939 -1.807 110.35 -2.04 110.567 -2.263 c
-110.78 -2.491 110.89 -2.774 110.89 -3.116 c
-110.89 -3.549 110.735 -3.895 110.434 -4.159 c
-110.141 -4.417 109.744 -4.542 109.243 -4.542 c
-108.733 -4.542 108.318 -4.394 107.994 -4.101 c
-107.671 -3.806 107.51 -3.432 107.51 -2.969 c
-108.333 -2.969 l
-108.339 -3.245 108.424 -3.461 108.582 -3.615 c
-108.736 -3.773 108.957 -3.85 109.243 -3.85 c
-109.515 -3.85 109.721 -3.792 109.861 -3.674 c
-110.008 -3.549 110.082 -3.38 110.082 -3.175 c
-111.824 -4.012 m
-111.824 -3.865 111.867 -3.744 111.956 -3.645 c
-112.044 -3.549 112.169 -3.498 112.337 -3.498 c
-112.514 -3.498 112.647 -3.549 112.734 -3.645 c
-112.83 -3.744 112.882 -3.865 112.882 -4.012 c
-112.882 -4.152 112.83 -4.27 112.734 -4.365 c
-112.647 -4.453 112.514 -4.498 112.337 -4.498 c
-112.169 -4.498 112.044 -4.453 111.956 -4.365 c
-111.867 -4.27 111.824 -4.152 111.824 -4.012 c
-f
-Q
-q 1 0 0 1 539.3456 316.4395 cm
-0 0 m
--2.249 0 l
--2.778 -1.749 l
--3.645 -1.749 l
--1.484 4.939 l
--0.765 4.939 l
-1.396 -1.749 l
-0.529 -1.749 l
-h
--2.028 0.721 m
--0.206 0.721 l
--1.132 3.763 l
-h
-2.734 3.219 m
-2.763 2.691 l
-3.075 3.102 3.476 3.308 3.969 3.308 c
-4.85 3.308 5.295 2.723 5.307 1.559 c
-5.307 -1.749 l
-4.498 -1.749 l
-4.498 1.515 l
-4.498 1.904 4.432 2.18 4.307 2.338 c
-4.178 2.503 3.983 2.587 3.719 2.587 c
-3.513 2.587 3.329 2.517 3.175 2.382 c
-3.017 2.253 2.888 2.08 2.793 1.867 c
-2.793 -1.749 l
-1.97 -1.749 l
-1.97 3.219 l
-h
-10.911 -1.837 m
-10.293 -1.837 9.816 -1.657 9.485 -1.294 c
-9.161 -0.922 8.992 -0.378 8.985 0.339 c
-8.985 0.941 l
-8.985 1.676 9.147 2.253 9.469 2.675 c
-9.793 3.094 10.242 3.308 10.822 3.308 c
-11.399 3.308 11.829 3.12 12.116 2.749 c
-12.409 2.386 12.56 1.812 12.571 1.029 c
-12.571 0.5 l
-9.793 0.5 l
-9.793 0.383 l
-9.793 -0.158 9.889 -0.551 10.088 -0.793 c
-10.293 -1.028 10.58 -1.146 10.954 -1.146 c
-11.197 -1.146 11.41 -1.102 11.586 -1.014 c
-11.771 -0.926 11.943 -0.786 12.101 -0.588 c
-12.527 -1.102 l
-12.174 -1.595 11.634 -1.837 10.911 -1.837 c
-10.822 2.617 m
-10.487 2.617 10.238 2.5 10.073 2.264 c
-9.903 2.036 9.812 1.68 9.793 1.191 c
-11.748 1.191 l
-11.748 1.309 l
-11.726 1.779 11.645 2.11 11.499 2.309 c
-11.351 2.514 11.123 2.617 10.822 2.617 c
-14.805 1.411 m
-15.658 3.219 l
-16.598 3.219 l
-15.247 0.765 l
-16.628 -1.749 l
-15.702 -1.749 l
-14.82 0.118 l
-13.938 -1.749 l
-12.997 -1.749 l
-14.379 0.765 l
-13.042 3.219 l
-13.968 3.219 l
-h
-18.98 -1.146 m
-19.245 -1.146 19.455 -1.065 19.613 -0.897 c
-19.777 -0.731 19.869 -0.492 19.891 -0.176 c
-20.656 -0.176 l
-20.634 -0.658 20.465 -1.055 20.141 -1.367 c
-19.825 -1.683 19.439 -1.837 18.98 -1.837 c
-18.362 -1.837 17.892 -1.646 17.569 -1.263 c
-17.246 -0.874 17.084 -0.294 17.084 0.47 c
-17.084 1.015 l
-17.084 1.768 17.246 2.338 17.569 2.72 c
-17.892 3.109 18.356 3.308 18.965 3.308 c
-19.472 3.308 19.877 3.146 20.17 2.822 c
-20.472 2.506 20.634 2.073 20.656 1.515 c
-19.891 1.515 l
-19.869 1.875 19.781 2.151 19.627 2.338 c
-19.469 2.521 19.248 2.617 18.965 2.617 c
-18.613 2.617 18.348 2.492 18.171 2.249 c
-17.995 2.014 17.899 1.625 17.892 1.088 c
-17.892 0.456 l
-17.892 -0.132 17.98 -0.551 18.157 -0.793 c
-18.333 -1.028 18.605 -1.146 18.98 -1.146 c
-23.206 -1.837 m
-22.589 -1.837 22.111 -1.657 21.78 -1.294 c
-21.456 -0.922 21.288 -0.378 21.28 0.339 c
-21.28 0.941 l
-21.28 1.676 21.442 2.253 21.766 2.675 c
-22.089 3.094 22.537 3.308 23.118 3.308 c
-23.694 3.308 24.124 3.12 24.411 2.749 c
-24.706 2.386 24.856 1.812 24.867 1.029 c
-24.867 0.5 l
-22.089 0.5 l
-22.089 0.383 l
-22.089 -0.158 22.185 -0.551 22.383 -0.793 c
-22.589 -1.028 22.875 -1.146 23.25 -1.146 c
-23.493 -1.146 23.706 -1.102 23.883 -1.014 c
-24.066 -0.926 24.239 -0.786 24.397 -0.588 c
-24.823 -1.102 l
-24.471 -1.595 23.93 -1.837 23.206 -1.837 c
-23.118 2.617 m
-22.784 2.617 22.534 2.5 22.368 2.264 c
-22.2 2.036 22.107 1.68 22.089 1.191 c
-24.043 1.191 l
-24.043 1.309 l
-24.022 1.779 23.941 2.11 23.794 2.309 c
-23.647 2.514 23.419 2.617 23.118 2.617 c
-26.543 -1.749 -0.809 7.056 re
-28.608 -1.749 -0.808 7.056 re
-31.567 -1.837 m
-30.948 -1.837 30.471 -1.657 30.14 -1.294 c
-29.817 -0.922 29.648 -0.378 29.641 0.339 c
-29.641 0.941 l
-29.641 1.676 29.803 2.253 30.125 2.675 c
-30.449 3.094 30.898 3.308 31.478 3.308 c
-32.055 3.308 32.485 3.12 32.772 2.749 c
-33.065 2.386 33.216 1.812 33.227 1.029 c
-33.227 0.5 l
-30.449 0.5 l
-30.449 0.383 l
-30.449 -0.158 30.545 -0.551 30.743 -0.793 c
-30.948 -1.028 31.235 -1.146 31.61 -1.146 c
-31.852 -1.146 32.066 -1.102 32.242 -1.014 c
-32.426 -0.926 32.599 -0.786 32.757 -0.588 c
-33.183 -1.102 l
-32.83 -1.595 32.29 -1.837 31.567 -1.837 c
-31.478 2.617 m
-31.143 2.617 30.894 2.5 30.728 2.264 c
-30.559 2.036 30.468 1.68 30.449 1.191 c
-32.404 1.191 l
-32.404 1.309 l
-32.382 1.779 32.301 2.11 32.154 2.309 c
-32.007 2.514 31.779 2.617 31.478 2.617 c
-34.785 3.219 m
-34.815 2.691 l
-35.127 3.102 35.528 3.308 36.02 3.308 c
-36.901 3.308 37.346 2.723 37.358 1.559 c
-37.358 -1.749 l
-36.549 -1.749 l
-36.549 1.515 l
-36.549 1.904 36.483 2.18 36.358 2.338 c
-36.23 2.503 36.035 2.587 35.77 2.587 c
-35.565 2.587 35.38 2.517 35.226 2.382 c
-35.068 2.253 34.94 2.08 34.844 1.867 c
-34.844 -1.749 l
-34.021 -1.749 l
-34.021 3.219 l
-h
-39.471 4.425 m
-39.471 3.219 l
-40.22 3.219 l
-40.22 2.558 l
-39.471 2.558 l
-39.471 -0.514 l
-39.471 -0.712 39.5 -0.864 39.559 -0.97 c
-39.625 -1.069 39.739 -1.117 39.897 -1.117 c
-40.003 -1.117 40.11 -1.099 40.22 -1.058 c
-40.205 -1.749 l
-40.029 -1.807 39.841 -1.837 39.647 -1.837 c
-39.324 -1.837 39.077 -1.727 38.912 -1.499 c
-38.743 -1.263 38.662 -0.941 38.662 -0.529 c
-38.662 2.558 l
-37.898 2.558 l
-37.898 3.219 l
-38.662 3.219 l
-38.662 4.425 l
-h
-48.154 -0.911 m
-48.007 -1.102 l
-47.584 -1.595 46.967 -1.837 46.155 -1.837 c
-45.427 -1.837 44.861 -1.598 44.45 -1.117 c
-44.038 -0.639 43.825 0.037 43.818 0.912 c
-43.818 2.22 l
-43.818 3.161 44.001 3.859 44.377 4.322 c
-44.747 4.792 45.31 5.027 46.067 5.027 c
-46.702 5.027 47.199 4.851 47.552 4.499 c
-47.912 4.146 48.113 3.639 48.154 2.984 c
-47.316 2.984 l
-47.276 3.396 47.158 3.72 46.964 3.955 c
-46.765 4.19 46.467 4.308 46.067 4.308 c
-45.585 4.308 45.233 4.15 45.009 3.837 c
-44.78 3.521 44.663 3.021 44.656 2.338 c
-44.656 0.971 l
-44.656 0.294 44.78 -0.228 45.038 -0.588 c
-45.302 -0.941 45.674 -1.117 46.155 -1.117 c
-46.603 -1.117 46.948 -1.01 47.184 -0.793 c
-47.316 -0.675 l
-47.316 0.867 l
-46.081 0.867 l
-46.081 1.588 l
-48.154 1.588 l
-h
-50.076 -1.749 -0.808 4.968 re
-50.135 4.543 m
-50.135 4.403 50.094 4.285 50.017 4.19 c
-49.948 4.102 49.834 4.057 49.679 4.057 c
-49.521 4.057 49.404 4.102 49.327 4.19 c
-49.256 4.285 49.223 4.403 49.223 4.543 c
-49.223 4.678 49.256 4.792 49.327 4.881 c
-49.404 4.976 49.518 5.027 49.664 5.027 c
-49.819 5.027 49.936 4.976 50.017 4.881 c
-50.094 4.792 50.135 4.678 50.135 4.543 c
-52.329 4.425 m
-52.329 3.219 l
-53.078 3.219 l
-53.078 2.558 l
-52.329 2.558 l
-52.329 -0.514 l
-52.329 -0.712 52.358 -0.864 52.417 -0.97 c
-52.483 -1.069 52.597 -1.117 52.755 -1.117 c
-52.861 -1.117 52.968 -1.099 53.078 -1.058 c
-53.063 -1.749 l
-52.887 -1.807 52.699 -1.837 52.505 -1.837 c
-52.182 -1.837 51.935 -1.727 51.77 -1.499 c
-51.6 -1.263 51.521 -0.941 51.521 -0.529 c
-51.521 2.558 l
-50.756 2.558 l
-50.756 3.219 l
-51.521 3.219 l
-51.521 4.425 l
-h
-58.443 -1.146 m
-58.708 -1.146 58.918 -1.065 59.076 -0.897 c
-59.241 -0.731 59.332 -0.492 59.355 -0.176 c
-60.119 -0.176 l
-60.097 -0.658 59.928 -1.055 59.604 -1.367 c
-59.288 -1.683 58.903 -1.837 58.443 -1.837 c
-57.826 -1.837 57.356 -1.646 57.032 -1.263 c
-56.709 -0.874 56.547 -0.294 56.547 0.47 c
-56.547 1.015 l
-56.547 1.768 56.709 2.338 57.032 2.72 c
-57.356 3.109 57.819 3.308 58.428 3.308 c
-58.935 3.308 59.34 3.146 59.634 2.822 c
-59.935 2.506 60.097 2.073 60.119 1.515 c
-59.355 1.515 l
-59.332 1.875 59.244 2.151 59.09 2.338 c
-58.932 2.521 58.712 2.617 58.428 2.617 c
-58.076 2.617 57.811 2.492 57.635 2.249 c
-57.458 2.014 57.362 1.625 57.356 1.088 c
-57.356 0.456 l
-57.356 -0.132 57.443 -0.551 57.62 -0.793 c
-57.796 -1.028 58.068 -1.146 58.443 -1.146 c
-60.729 0.971 m
-60.729 1.683 60.898 2.253 61.243 2.675 c
-61.596 3.094 62.06 3.308 62.64 3.308 c
-63.217 3.308 63.676 3.102 64.022 2.691 c
-64.375 2.286 64.555 1.727 64.566 1.015 c
-64.566 0.5 l
-64.566 -0.228 64.389 -0.801 64.036 -1.219 c
-63.691 -1.631 63.232 -1.837 62.654 -1.837 c
-62.074 -1.837 61.611 -1.639 61.258 -1.234 c
-60.913 -0.823 60.736 -0.272 60.729 0.427 c
-h
-61.538 0.5 m
-61.538 -0.01 61.633 -0.411 61.831 -0.706 c
-62.037 -0.999 62.309 -1.146 62.654 -1.146 c
-63.367 -1.146 63.735 -0.628 63.757 0.412 c
-63.757 0.971 l
-63.757 1.478 63.654 1.881 63.448 2.176 c
-63.25 2.469 62.982 2.617 62.64 2.617 c
-62.305 2.617 62.037 2.469 61.831 2.176 c
-61.633 1.881 61.538 1.478 61.538 0.971 c
-h
-67.968 -1.308 m
-67.693 -1.66 67.296 -1.837 66.777 -1.837 c
-66.337 -1.837 65.998 -1.687 65.763 -1.381 c
-65.536 -1.069 65.418 -0.613 65.411 -0.014 c
-65.411 3.219 l
-66.22 3.219 l
-66.22 0.044 l
-66.22 -0.731 66.455 -1.117 66.925 -1.117 c
-67.413 -1.117 67.751 -0.897 67.939 -0.455 c
-67.939 3.219 l
-68.762 3.219 l
-68.762 -1.749 l
-67.984 -1.749 l
-h
-71.857 2.455 m
-71.739 2.473 71.614 2.484 71.489 2.484 c
-71.066 2.484 70.776 2.257 70.621 1.808 c
-70.621 -1.749 l
-69.798 -1.749 l
-69.798 3.219 l
-70.592 3.219 l
-70.607 2.72 l
-70.82 3.109 71.128 3.308 71.533 3.308 c
-71.658 3.308 71.768 3.286 71.857 3.249 c
-h
-74.976 -0.47 m
-74.976 -0.305 74.906 -0.158 74.77 -0.029 c
-74.642 0.096 74.388 0.243 74.006 0.412 c
-73.572 0.595 73.264 0.754 73.08 0.882 c
-72.904 1.008 72.771 1.151 72.683 1.309 c
-72.595 1.474 72.551 1.669 72.551 1.897 c
-72.551 2.309 72.698 2.646 72.992 2.911 c
-73.285 3.175 73.661 3.308 74.124 3.308 c
-74.612 3.308 75.005 3.165 75.3 2.882 c
-75.593 2.606 75.741 2.249 75.741 1.808 c
-74.932 1.808 l
-74.932 2.033 74.851 2.224 74.697 2.382 c
-74.55 2.536 74.359 2.617 74.124 2.617 c
-73.888 2.617 73.701 2.55 73.565 2.426 c
-73.426 2.309 73.359 2.139 73.359 1.926 c
-73.359 1.757 73.407 1.625 73.507 1.529 c
-73.602 1.43 73.844 1.297 74.226 1.133 c
-74.833 0.897 75.244 0.665 75.461 0.441 c
-75.674 0.214 75.784 -0.07 75.784 -0.411 c
-75.784 -0.845 75.63 -1.19 75.329 -1.454 c
-75.035 -1.712 74.638 -1.837 74.138 -1.837 c
-73.628 -1.837 73.212 -1.69 72.888 -1.396 c
-72.566 -1.102 72.404 -0.727 72.404 -0.264 c
-73.227 -0.264 l
-73.235 -0.54 73.318 -0.756 73.476 -0.911 c
-73.631 -1.069 73.852 -1.146 74.138 -1.146 c
-74.411 -1.146 74.616 -1.087 74.756 -0.97 c
-74.903 -0.845 74.976 -0.675 74.976 -0.47 c
-78.438 -1.837 m
-77.821 -1.837 77.343 -1.657 77.012 -1.294 c
-76.688 -0.922 76.52 -0.378 76.512 0.339 c
-76.512 0.941 l
-76.512 1.676 76.674 2.253 76.998 2.675 c
-77.32 3.094 77.769 3.308 78.349 3.308 c
-78.926 3.308 79.356 3.12 79.643 2.749 c
-79.937 2.386 80.088 1.812 80.098 1.029 c
-80.098 0.5 l
-77.32 0.5 l
-77.32 0.383 l
-77.32 -0.158 77.416 -0.551 77.615 -0.793 c
-77.821 -1.028 78.107 -1.146 78.482 -1.146 c
-78.725 -1.146 78.937 -1.102 79.114 -1.014 c
-79.298 -0.926 79.47 -0.786 79.628 -0.588 c
-80.055 -1.102 l
-79.702 -1.595 79.161 -1.837 78.438 -1.837 c
-78.349 2.617 m
-78.016 2.617 77.765 2.5 77.6 2.264 c
-77.43 2.036 77.339 1.68 77.32 1.191 c
-79.275 1.191 l
-79.275 1.309 l
-79.254 1.779 79.173 2.11 79.026 2.309 c
-78.879 2.514 78.651 2.617 78.349 2.617 c
-85.416 -1.146 m
-85.681 -1.146 85.89 -1.065 86.049 -0.897 c
-86.213 -0.731 86.305 -0.492 86.328 -0.176 c
-87.092 -0.176 l
-87.07 -0.658 86.901 -1.055 86.577 -1.367 c
-86.261 -1.683 85.875 -1.837 85.416 -1.837 c
-84.799 -1.837 84.329 -1.646 84.005 -1.263 c
-83.682 -0.874 83.52 -0.294 83.52 0.47 c
-83.52 1.015 l
-83.52 1.768 83.682 2.338 84.005 2.72 c
-84.329 3.109 84.792 3.308 85.401 3.308 c
-85.908 3.308 86.313 3.146 86.606 2.822 c
-86.908 2.506 87.07 2.073 87.092 1.515 c
-86.328 1.515 l
-86.305 1.875 86.217 2.151 86.063 2.338 c
-85.905 2.521 85.684 2.617 85.401 2.617 c
-85.048 2.617 84.784 2.492 84.607 2.249 c
-84.431 2.014 84.335 1.625 84.329 1.088 c
-84.329 0.456 l
-84.329 -0.132 84.416 -0.551 84.593 -0.793 c
-84.769 -1.028 85.041 -1.146 85.416 -1.146 c
-90.421 -1.749 m
-90.369 -1.643 90.336 -1.462 90.319 -1.205 c
-90.032 -1.627 89.664 -1.837 89.216 -1.837 c
-88.763 -1.837 88.411 -1.716 88.158 -1.469 c
-87.911 -1.216 87.79 -0.86 87.79 -0.396 c
-87.79 0.111 87.959 0.515 88.304 0.809 c
-88.646 1.103 89.116 1.253 89.715 1.264 c
-90.303 1.264 l
-90.303 1.794 l
-90.303 2.088 90.234 2.297 90.097 2.426 c
-89.969 2.55 89.775 2.617 89.509 2.617 c
-89.264 2.617 89.062 2.544 88.907 2.396 c
-88.76 2.249 88.686 2.062 88.686 1.838 c
-87.863 1.838 l
-87.863 2.091 87.937 2.338 88.084 2.573 c
-88.239 2.808 88.445 2.988 88.701 3.117 c
-88.954 3.242 89.238 3.308 89.554 3.308 c
-90.061 3.308 90.45 3.179 90.716 2.926 c
-90.98 2.679 91.112 2.311 91.112 1.823 c
-91.112 -0.675 l
-91.119 -1.058 91.175 -1.392 91.273 -1.675 c
-91.273 -1.749 l
-h
-89.348 -1.102 m
-89.543 -1.102 89.731 -1.051 89.906 -0.941 c
-90.091 -0.823 90.223 -0.687 90.303 -0.529 c
-90.303 0.662 l
-89.848 0.662 l
-89.465 0.651 89.16 0.563 88.937 0.397 c
-88.709 0.229 88.599 0 88.599 -0.294 c
-88.599 -0.58 88.65 -0.786 88.76 -0.911 c
-88.877 -1.04 89.073 -1.102 89.348 -1.102 c
-92.95 3.219 m
-92.979 2.691 l
-93.291 3.102 93.692 3.308 94.184 3.308 c
-95.066 3.308 95.51 2.723 95.522 1.559 c
-95.522 -1.749 l
-94.714 -1.749 l
-94.714 1.515 l
-94.714 1.904 94.647 2.18 94.522 2.338 c
-94.394 2.503 94.199 2.587 93.934 2.587 c
-93.729 2.587 93.544 2.517 93.39 2.382 c
-93.232 2.253 93.104 2.08 93.008 1.867 c
-93.008 -1.749 l
-92.185 -1.749 l
-92.185 3.219 l
-h
-102.949 0.5 m
-102.949 -0.276 102.805 -0.86 102.522 -1.249 c
-102.246 -1.643 101.846 -1.837 101.317 -1.837 c
-100.795 -1.837 100.405 -1.612 100.141 -1.161 c
-100.097 -1.749 l
-99.362 -1.749 l
-99.362 5.307 l
-100.17 5.307 l
-100.17 2.675 l
-100.435 3.094 100.817 3.308 101.317 3.308 c
-101.853 3.308 102.261 3.117 102.537 2.735 c
-102.809 2.352 102.949 1.768 102.949 0.985 c
-h
-102.14 0.956 m
-102.14 1.544 102.055 1.959 101.89 2.205 c
-101.733 2.459 101.467 2.587 101.097 2.587 c
-100.685 2.587 100.376 2.359 100.17 1.912 c
-100.17 -0.455 l
-100.365 -0.897 100.677 -1.117 101.111 -1.117 c
-101.471 -1.117 101.733 -0.992 101.89 -0.735 c
-102.055 -0.481 102.14 -0.084 102.14 0.456 c
-h
-105.59 -1.837 m
-104.973 -1.837 104.495 -1.657 104.164 -1.294 c
-103.842 -0.922 103.672 -0.378 103.665 0.339 c
-103.665 0.941 l
-103.665 1.676 103.827 2.253 104.15 2.675 c
-104.474 3.094 104.922 3.308 105.502 3.308 c
-106.08 3.308 106.51 3.12 106.796 2.749 c
-107.09 2.386 107.241 1.812 107.252 1.029 c
-107.252 0.5 l
-104.474 0.5 l
-104.474 0.383 l
-104.474 -0.158 104.569 -0.551 104.767 -0.793 c
-104.973 -1.028 105.26 -1.146 105.635 -1.146 c
-105.877 -1.146 106.09 -1.102 106.267 -1.014 c
-106.45 -0.926 106.623 -0.786 106.781 -0.588 c
-107.208 -1.102 l
-106.855 -1.595 106.315 -1.837 105.59 -1.837 c
-105.502 2.617 m
-105.168 2.617 104.918 2.5 104.752 2.264 c
-104.584 2.036 104.492 1.68 104.474 1.191 c
-106.429 1.191 l
-106.429 1.309 l
-106.406 1.779 106.325 2.11 106.178 2.309 c
-106.032 2.514 105.804 2.617 105.502 2.617 c
-111.202 -1.749 m
-111.202 2.558 l
-110.555 2.558 l
-110.555 3.219 l
-111.202 3.219 l
-111.202 3.793 l
-111.209 4.3 111.337 4.697 111.584 4.983 c
-111.827 5.266 112.176 5.409 112.628 5.409 c
-112.782 5.409 112.943 5.38 113.113 5.322 c
-113.068 4.63 l
-112.958 4.66 112.837 4.675 112.702 4.675 c
-112.238 4.675 112.01 4.344 112.01 3.69 c
-112.01 3.219 l
-112.863 3.219 l
-112.863 2.558 l
-112.01 2.558 l
-112.01 -1.749 l
-h
-113.532 0.971 m
-113.532 1.683 113.701 2.253 114.046 2.675 c
-114.399 3.094 114.862 3.308 115.443 3.308 c
-116.019 3.308 116.479 3.102 116.825 2.691 c
-117.177 2.286 117.357 1.727 117.369 1.015 c
-117.369 0.5 l
-117.369 -0.228 117.192 -0.801 116.839 -1.219 c
-116.494 -1.631 116.035 -1.837 115.457 -1.837 c
-114.877 -1.837 114.414 -1.639 114.061 -1.234 c
-113.716 -0.823 113.539 -0.272 113.532 0.427 c
-h
-114.34 0.5 m
-114.34 -0.01 114.435 -0.411 114.634 -0.706 c
-114.84 -0.999 115.112 -1.146 115.457 -1.146 c
-116.17 -1.146 116.538 -0.628 116.56 0.412 c
-116.56 0.971 l
-116.56 1.478 116.457 1.881 116.251 2.176 c
-116.052 2.469 115.784 2.617 115.443 2.617 c
-115.108 2.617 114.84 2.469 114.634 2.176 c
-114.435 1.881 114.34 1.478 114.34 0.971 c
-h
-120.767 -1.308 m
-120.492 -1.66 120.095 -1.837 119.576 -1.837 c
-119.136 -1.837 118.797 -1.687 118.562 -1.381 c
-118.335 -1.069 118.217 -0.613 118.21 -0.014 c
-118.21 3.219 l
-119.019 3.219 l
-119.019 0.044 l
-119.019 -0.731 119.254 -1.117 119.724 -1.117 c
-120.212 -1.117 120.55 -0.897 120.738 -0.455 c
-120.738 3.219 l
-121.561 3.219 l
-121.561 -1.749 l
-120.782 -1.749 l
-h
-123.366 3.219 m
-123.395 2.691 l
-123.707 3.102 124.108 3.308 124.6 3.308 c
-125.482 3.308 125.926 2.723 125.938 1.559 c
-125.938 -1.749 l
-125.13 -1.749 l
-125.13 1.515 l
-125.13 1.904 125.063 2.18 124.938 2.338 c
-124.81 2.503 124.615 2.587 124.351 2.587 c
-124.145 2.587 123.96 2.517 123.806 2.382 c
-123.648 2.253 123.52 2.08 123.424 1.867 c
-123.424 -1.749 l
-122.601 -1.749 l
-122.601 3.219 l
-h
-126.813 0.956 m
-126.813 1.727 126.952 2.311 127.239 2.705 c
-127.522 3.105 127.933 3.308 128.473 3.308 c
-128.943 3.308 129.311 3.117 129.576 2.735 c
-129.576 5.307 l
-130.399 5.307 l
-130.399 -1.749 l
-129.649 -1.749 l
-129.605 -1.219 l
-129.34 -1.631 128.962 -1.837 128.473 -1.837 c
-127.952 -1.837 127.547 -1.643 127.253 -1.249 c
-126.959 -0.849 126.813 -0.278 126.813 0.456 c
-h
-127.621 0.5 m
-127.621 -0.058 127.702 -0.47 127.871 -0.735 c
-128.036 -0.992 128.305 -1.117 128.679 -1.117 c
-129.08 -1.117 129.377 -0.918 129.576 -0.514 c
-129.576 1.999 l
-129.37 2.389 129.068 2.587 128.679 2.587 c
-128.305 2.587 128.036 2.455 127.871 2.191 c
-127.702 1.933 127.621 1.536 127.621 1 c
-h
-135.125 -1.749 -0.809 4.968 re
-135.183 4.543 m
-135.183 4.403 135.143 4.285 135.066 4.19 c
-134.996 4.102 134.882 4.057 134.728 4.057 c
-134.57 4.057 134.452 4.102 134.375 4.19 c
-134.306 4.285 134.272 4.403 134.272 4.543 c
-134.272 4.678 134.306 4.792 134.375 4.881 c
-134.452 4.976 134.566 5.027 134.713 5.027 c
-134.867 5.027 134.985 4.976 135.066 4.881 c
-135.143 4.792 135.183 4.678 135.183 4.543 c
-137.072 3.219 m
-137.102 2.691 l
-137.414 3.102 137.815 3.308 138.307 3.308 c
-139.189 3.308 139.634 2.723 139.644 1.559 c
-139.644 -1.749 l
-138.836 -1.749 l
-138.836 1.515 l
-138.836 1.904 138.77 2.18 138.645 2.338 c
-138.516 2.503 138.322 2.587 138.057 2.587 c
-137.851 2.587 137.668 2.517 137.513 2.382 c
-137.355 2.253 137.227 2.08 137.131 1.867 c
-137.131 -1.749 l
-136.307 -1.749 l
-136.307 3.219 l
-h
-144.547 4.425 m
-144.547 3.219 l
-145.296 3.219 l
-145.296 2.558 l
-144.547 2.558 l
-144.547 -0.514 l
-144.547 -0.712 144.577 -0.864 144.635 -0.97 c
-144.701 -1.069 144.815 -1.117 144.973 -1.117 c
-145.08 -1.117 145.186 -1.099 145.296 -1.058 c
-145.282 -1.749 l
-145.105 -1.807 144.918 -1.837 144.723 -1.837 c
-144.4 -1.837 144.153 -1.727 143.988 -1.499 c
-143.819 -1.263 143.738 -0.941 143.738 -0.529 c
-143.738 2.558 l
-142.974 2.558 l
-142.974 3.219 l
-143.738 3.219 l
-143.738 4.425 l
-h
-146.958 2.705 m
-147.259 3.105 147.652 3.308 148.134 3.308 c
-149.015 3.308 149.46 2.723 149.471 1.559 c
-149.471 -1.749 l
-148.662 -1.749 l
-148.662 1.515 l
-148.662 1.904 148.596 2.18 148.471 2.338 c
-148.342 2.503 148.148 2.587 147.883 2.587 c
-147.677 2.587 147.494 2.517 147.34 2.382 c
-147.181 2.253 147.053 2.08 146.958 1.867 c
-146.958 -1.749 l
-146.134 -1.749 l
-146.134 5.307 l
-146.958 5.307 l
-h
-152.271 -1.837 m
-151.654 -1.837 151.176 -1.657 150.846 -1.294 c
-150.522 -0.922 150.353 -0.378 150.345 0.339 c
-150.345 0.941 l
-150.345 1.676 150.507 2.253 150.831 2.675 c
-151.154 3.094 151.602 3.308 152.182 3.308 c
-152.76 3.308 153.19 3.12 153.476 2.749 c
-153.77 2.386 153.921 1.812 153.932 1.029 c
-153.932 0.5 l
-151.154 0.5 l
-151.154 0.383 l
-151.154 -0.158 151.249 -0.551 151.448 -0.793 c
-151.654 -1.028 151.941 -1.146 152.315 -1.146 c
-152.558 -1.146 152.77 -1.102 152.947 -1.014 c
-153.131 -0.926 153.304 -0.786 153.462 -0.588 c
-153.888 -1.102 l
-153.535 -1.595 152.995 -1.837 152.271 -1.837 c
-152.182 2.617 m
-151.849 2.617 151.598 2.5 151.434 2.264 c
-151.264 2.036 151.172 1.68 151.154 1.191 c
-153.109 1.191 l
-153.109 1.309 l
-153.087 1.779 153.006 2.11 152.859 2.309 c
-152.712 2.514 152.484 2.617 152.182 2.617 c
-157.354 0.956 m
-157.354 1.727 157.493 2.311 157.78 2.705 c
-158.062 3.105 158.474 3.308 159.014 3.308 c
-159.521 3.308 159.911 3.091 160.176 2.661 c
-160.205 3.219 l
-160.94 3.219 l
-160.94 -1.793 l
-160.94 -2.41 160.782 -2.881 160.469 -3.204 c
-160.153 -3.534 159.72 -3.704 159.161 -3.704 c
-158.915 -3.704 158.636 -3.638 158.324 -3.513 c
-158.019 -3.395 157.794 -3.248 157.647 -3.072 c
-157.971 -2.513 l
-158.312 -2.844 158.684 -3.013 159.087 -3.013 c
-159.764 -3.013 160.109 -2.645 160.132 -1.911 c
-160.132 -1.263 l
-159.866 -1.646 159.492 -1.837 159.014 -1.837 c
-158.492 -1.837 158.092 -1.646 157.809 -1.263 c
-157.522 -0.874 157.372 -0.316 157.354 0.412 c
-h
-158.177 0.5 m
-158.177 -0.058 158.254 -0.47 158.412 -0.735 c
-158.577 -0.992 158.845 -1.117 159.22 -1.117 c
-159.621 -1.117 159.926 -0.911 160.132 -0.5 c
-160.132 1.985 l
-159.926 2.386 159.625 2.587 159.235 2.587 c
-158.86 2.587 158.592 2.455 158.426 2.191 c
-158.257 1.933 158.177 1.536 158.177 1 c
-h
-164.019 2.455 m
-163.901 2.473 163.777 2.484 163.652 2.484 c
-163.23 2.484 162.939 2.257 162.785 1.808 c
-162.785 -1.749 l
-161.961 -1.749 l
-161.961 3.219 l
-162.755 3.219 l
-162.77 2.72 l
-162.983 3.109 163.292 3.308 163.696 3.308 c
-163.821 3.308 163.931 3.286 164.019 3.249 c
-h
-166.401 -1.837 m
-165.783 -1.837 165.306 -1.657 164.975 -1.294 c
-164.651 -0.922 164.483 -0.378 164.475 0.339 c
-164.475 0.941 l
-164.475 1.676 164.637 2.253 164.96 2.675 c
-165.283 3.094 165.732 3.308 166.312 3.308 c
-166.889 3.308 167.319 3.12 167.606 2.749 c
-167.899 2.386 168.051 1.812 168.061 1.029 c
-168.061 0.5 l
-165.283 0.5 l
-165.283 0.383 l
-165.283 -0.158 165.379 -0.551 165.578 -0.793 c
-165.783 -1.028 166.07 -1.146 166.445 -1.146 c
-166.687 -1.146 166.9 -1.102 167.076 -1.014 c
-167.261 -0.926 167.433 -0.786 167.591 -0.588 c
-168.017 -1.102 l
-167.664 -1.595 167.124 -1.837 166.401 -1.837 c
-166.312 2.617 m
-165.978 2.617 165.728 2.5 165.563 2.264 c
-165.393 2.036 165.302 1.68 165.283 1.191 c
-167.238 1.191 l
-167.238 1.309 l
-167.216 1.779 167.136 2.11 166.989 2.309 c
-166.841 2.514 166.613 2.617 166.312 2.617 c
-171.413 -1.749 m
-171.361 -1.643 171.328 -1.462 171.31 -1.205 c
-171.024 -1.627 170.656 -1.837 170.208 -1.837 c
-169.755 -1.837 169.403 -1.716 169.15 -1.469 c
-168.903 -1.216 168.782 -0.86 168.782 -0.396 c
-168.782 0.111 168.951 0.515 169.296 0.809 c
-169.638 1.103 170.108 1.253 170.708 1.264 c
-171.295 1.264 l
-171.295 1.794 l
-171.295 2.088 171.226 2.297 171.089 2.426 c
-170.961 2.55 170.766 2.617 170.501 2.617 c
-170.255 2.617 170.054 2.544 169.898 2.396 c
-169.752 2.249 169.678 2.062 169.678 1.838 c
-168.855 1.838 l
-168.855 2.091 168.929 2.338 169.075 2.573 c
-169.231 2.808 169.436 2.988 169.693 3.117 c
-169.946 3.242 170.23 3.308 170.546 3.308 c
-171.053 3.308 171.442 3.179 171.707 2.926 c
-171.972 2.679 172.104 2.311 172.104 1.823 c
-172.104 -0.675 l
-172.111 -1.058 172.167 -1.392 172.265 -1.675 c
-172.265 -1.749 l
-h
-170.34 -1.102 m
-170.534 -1.102 170.722 -1.051 170.898 -0.941 c
-171.082 -0.823 171.215 -0.687 171.295 -0.529 c
-171.295 0.662 l
-170.839 0.662 l
-170.457 0.651 170.152 0.563 169.929 0.397 c
-169.701 0.229 169.59 0 169.59 -0.294 c
-169.59 -0.58 169.642 -0.786 169.752 -0.911 c
-169.869 -1.04 170.064 -1.102 170.34 -1.102 c
-174.249 4.425 m
-174.249 3.219 l
-174.999 3.219 l
-174.999 2.558 l
-174.249 2.558 l
-174.249 -0.514 l
-174.249 -0.712 174.28 -0.864 174.338 -0.97 c
-174.405 -1.069 174.518 -1.117 174.677 -1.117 c
-174.783 -1.117 174.889 -1.099 174.999 -1.058 c
-174.985 -1.749 l
-174.808 -1.807 174.621 -1.837 174.426 -1.837 c
-174.103 -1.837 173.856 -1.727 173.692 -1.499 c
-173.522 -1.263 173.441 -0.941 173.441 -0.529 c
-173.441 2.558 l
-172.677 2.558 l
-172.677 3.219 l
-173.441 3.219 l
-173.441 4.425 l
-h
-f
-Q
-q 1 0 0 1 719.2545 317.0425 cm
-0 0 m
-0 -2.352 l
--1.338 -2.352 l
--1.338 4.336 l
-0.941 4.336 l
-1.595 4.336 2.12 4.131 2.514 3.719 c
-2.903 3.308 3.102 2.77 3.102 2.117 c
-3.102 1.47 2.903 0.956 2.514 0.573 c
-2.132 0.191 1.595 0 0.912 0 c
-h
-0 1.132 m
-0.941 1.132 l
-1.195 1.132 1.39 1.213 1.529 1.382 c
-1.675 1.548 1.749 1.793 1.749 2.117 c
-1.749 2.448 1.675 2.712 1.529 2.911 c
-1.382 3.105 1.191 3.204 0.956 3.204 c
-0 3.204 l
-h
-6.177 1.367 m
-5.751 1.396 l
-5.388 1.396 5.149 1.238 5.031 0.926 c
-5.031 -2.352 l
-3.723 -2.352 l
-3.723 2.616 l
-4.943 2.616 l
-4.987 2.087 l
-5.193 2.499 5.475 2.705 5.839 2.705 c
-5.986 2.705 6.104 2.683 6.192 2.646 c
-h
-6.416 0.294 m
-6.416 1.047 6.593 1.635 6.945 2.058 c
-7.298 2.488 7.786 2.705 8.415 2.705 c
-9.051 2.705 9.548 2.488 9.9 2.058 c
-10.26 1.635 10.444 1.043 10.444 0.279 c
-10.444 -0.029 l
-10.444 -0.786 10.267 -1.378 9.914 -1.808 c
-9.562 -2.23 9.066 -2.44 8.43 -2.44 c
-7.79 -2.44 7.298 -2.23 6.945 -1.808 c
-6.593 -1.378 6.416 -0.786 6.416 -0.029 c
-h
-7.724 -0.029 m
-7.724 -0.922 7.96 -1.367 8.43 -1.367 c
-8.871 -1.367 9.106 -0.996 9.135 -0.25 c
-9.151 0.294 l
-9.151 0.742 9.084 1.077 8.96 1.294 c
-8.831 1.517 8.65 1.631 8.415 1.631 c
-8.199 1.631 8.025 1.517 7.901 1.294 c
-7.784 1.077 7.724 0.742 7.724 0.294 c
-h
-18.485 -1.587 m
-18.219 -1.874 17.897 -2.088 17.514 -2.234 c
-17.139 -2.371 16.727 -2.44 16.28 -2.44 c
-15.515 -2.44 14.916 -2.205 14.486 -1.735 c
-14.063 -1.257 13.847 -0.559 13.839 0.353 c
-13.839 1.558 l
-13.839 2.477 14.038 3.183 14.442 3.674 c
-14.842 4.175 15.43 4.424 16.206 4.424 c
-16.93 4.424 17.473 4.241 17.837 3.881 c
-18.209 3.528 18.425 2.969 18.485 2.205 c
-17.176 2.205 l
-17.136 2.624 17.043 2.914 16.897 3.072 c
-16.757 3.227 16.536 3.308 16.235 3.308 c
-15.871 3.308 15.607 3.175 15.441 2.911 c
-15.283 2.646 15.199 2.219 15.192 1.631 c
-15.192 0.426 l
-15.192 -0.183 15.279 -0.628 15.456 -0.912 c
-15.64 -1.187 15.945 -1.323 16.368 -1.323 c
-16.632 -1.323 16.845 -1.272 17.014 -1.161 c
-17.132 -1.073 l
-17.132 0.147 l
-16.176 0.147 l
-16.176 1.161 l
-18.485 1.161 l
-h
-20.527 -2.352 -1.308 4.968 re
-19.16 3.91 m
-19.16 4.104 19.223 4.266 19.351 4.395 c
-19.476 4.531 19.649 4.601 19.866 4.601 c
-20.079 4.601 20.251 4.531 20.38 4.395 c
-20.505 4.266 20.571 4.104 20.571 3.91 c
-20.571 3.705 20.505 3.532 20.38 3.395 c
-20.263 3.267 20.09 3.204 19.866 3.204 c
-19.649 3.204 19.476 3.267 19.351 3.395 c
-19.223 3.532 19.16 3.705 19.16 3.91 c
-22.949 3.836 m
-22.949 2.616 l
-23.611 2.616 l
-23.611 1.646 l
-22.949 1.646 l
-22.949 -0.823 l
-22.949 -1.022 22.971 -1.157 23.023 -1.234 c
-23.081 -1.305 23.188 -1.338 23.345 -1.338 c
-23.464 -1.338 23.566 -1.33 23.655 -1.309 c
-23.64 -2.323 l
-23.412 -2.4 23.173 -2.44 22.919 -2.44 c
-22.086 -2.44 21.662 -1.962 21.656 -0.999 c
-21.656 1.646 l
-21.082 1.646 l
-21.082 2.616 l
-21.656 2.616 l
-21.656 3.836 l
-h
-f
-Q
-q 1 0 0 1 749.9827 316.94 cm
-0 0 m
-0 -0.776 -0.143 -1.36 -0.426 -1.75 c
--0.702 -2.143 -1.103 -2.338 -1.631 -2.338 c
--2.153 -2.338 -2.543 -2.113 -2.807 -1.661 c
--2.851 -2.249 l
--3.586 -2.249 l
--3.586 4.806 l
--2.778 4.806 l
--2.778 2.175 l
--2.514 2.594 -2.131 2.807 -1.631 2.807 c
--1.095 2.807 -0.687 2.616 -0.411 2.234 c
--0.139 1.851 0 1.267 0 0.484 c
-h
--0.808 0.455 m
--0.808 1.043 -0.893 1.458 -1.058 1.705 c
--1.216 1.959 -1.481 2.087 -1.852 2.087 c
--2.263 2.087 -2.572 1.859 -2.778 1.411 c
--2.778 -0.956 l
--2.583 -1.397 -2.271 -1.617 -1.837 -1.617 c
--1.477 -1.617 -1.216 -1.492 -1.058 -1.235 c
--0.893 -0.981 -0.808 -0.584 -0.808 -0.044 c
-h
-0.698 0.47 m
-0.698 1.182 0.867 1.753 1.213 2.175 c
-1.565 2.594 2.028 2.807 2.61 2.807 c
-3.186 2.807 3.645 2.601 3.991 2.19 c
-4.343 1.786 4.524 1.227 4.534 0.515 c
-4.534 0 l
-4.534 -0.728 4.359 -1.301 4.006 -1.72 c
-3.66 -2.132 3.2 -2.338 2.624 -2.338 c
-2.043 -2.338 1.581 -2.139 1.228 -1.735 c
-0.883 -1.324 0.706 -0.772 0.698 -0.073 c
-h
-1.507 0 m
-1.507 -0.511 1.602 -0.912 1.801 -1.206 c
-2.007 -1.5 2.279 -1.646 2.624 -1.646 c
-3.337 -1.646 3.705 -1.129 3.726 -0.088 c
-3.726 0.47 l
-3.726 0.977 3.624 1.381 3.418 1.675 c
-3.219 1.969 2.951 2.117 2.61 2.117 c
-2.275 2.117 2.007 1.969 1.801 1.675 c
-1.602 1.381 1.507 0.977 1.507 0.47 c
-h
-5.233 0.47 m
-5.233 1.182 5.402 1.753 5.748 2.175 c
-6.101 2.594 6.564 2.807 7.144 2.807 c
-7.721 2.807 8.18 2.601 8.526 2.19 c
-8.879 1.786 9.058 1.227 9.07 0.515 c
-9.07 0 l
-9.07 -0.728 8.893 -1.301 8.54 -1.72 c
-8.195 -2.132 7.736 -2.338 7.159 -2.338 c
-6.578 -2.338 6.115 -2.139 5.762 -1.735 c
-5.417 -1.324 5.24 -0.772 5.233 -0.073 c
-h
-6.041 0 m
-6.041 -0.511 6.137 -0.912 6.336 -1.206 c
-6.541 -1.5 6.813 -1.646 7.159 -1.646 c
-7.871 -1.646 8.239 -1.129 8.261 -0.088 c
-8.261 0.47 l
-8.261 0.977 8.158 1.381 7.952 1.675 c
-7.754 1.969 7.486 2.117 7.144 2.117 c
-6.809 2.117 6.541 1.969 6.336 1.675 c
-6.137 1.381 6.041 0.977 6.041 0.47 c
-h
-11.175 0.029 m
-10.749 -0.47 l
-10.749 -2.249 l
-9.941 -2.249 l
-9.941 4.806 l
-10.749 4.806 l
-10.749 0.588 l
-12.293 2.719 l
-13.263 2.719 l
-11.69 0.646 l
-13.483 -2.249 l
-12.528 -2.249 l
-h
-20.391 0 m
-20.391 -0.776 20.249 -1.36 19.965 -1.75 c
-19.69 -2.143 19.289 -2.338 18.76 -2.338 c
-18.238 -2.338 17.849 -2.113 17.584 -1.661 c
-17.54 -2.249 l
-16.805 -2.249 l
-16.805 4.806 l
-17.614 4.806 l
-17.614 2.175 l
-17.878 2.594 18.26 2.807 18.76 2.807 c
-19.297 2.807 19.704 2.616 19.979 2.234 c
-20.252 1.851 20.391 1.267 20.391 0.484 c
-h
-19.583 0.455 m
-19.583 1.043 19.499 1.458 19.333 1.705 c
-19.175 1.959 18.911 2.087 18.539 2.087 c
-18.128 2.087 17.82 1.859 17.614 1.411 c
-17.614 -0.956 l
-17.808 -1.397 18.121 -1.617 18.554 -1.617 c
-18.915 -1.617 19.175 -1.492 19.333 -1.235 c
-19.499 -0.981 19.583 -0.584 19.583 -0.044 c
-h
-22.567 -0.897 m
-23.464 2.719 l
-24.33 2.719 l
-22.699 -2.955 l
-22.582 -3.374 22.408 -3.697 22.185 -3.925 c
-21.957 -4.15 21.703 -4.263 21.421 -4.263 c
-21.31 -4.263 21.174 -4.237 21.009 -4.189 c
-21.009 -3.499 l
-21.185 -3.514 l
-21.421 -3.514 21.6 -3.454 21.729 -3.337 c
-21.865 -3.227 21.972 -3.036 22.053 -2.764 c
-22.214 -2.205 l
-20.759 2.719 l
-21.641 2.719 l
-h
-f
-Q
-q 1 0 0 1 539.1547 305.0923 cm
-0 0 m
-0 0.33 -0.096 0.588 -0.279 0.764 c
--0.456 0.941 -0.779 1.11 -1.249 1.278 c
--1.72 1.455 -2.084 1.635 -2.338 1.822 c
--2.583 2.007 -2.771 2.219 -2.896 2.454 c
--3.025 2.69 -3.087 2.958 -3.087 3.263 c
--3.087 3.792 -2.911 4.226 -2.558 4.571 c
--2.198 4.913 -1.731 5.086 -1.162 5.086 c
--0.772 5.086 -0.422 4.997 -0.118 4.821 c
-0.195 4.644 0.43 4.399 0.588 4.087 c
-0.753 3.781 0.837 3.439 0.837 3.057 c
-0 3.057 l
-0 3.476 -0.104 3.8 -0.309 4.027 c
--0.507 4.251 -0.79 4.366 -1.162 4.366 c
--1.507 4.366 -1.771 4.266 -1.955 4.072 c
--2.143 3.884 -2.234 3.62 -2.234 3.278 c
--2.234 2.992 -2.132 2.756 -1.926 2.572 c
--1.72 2.385 -1.407 2.212 -0.985 2.057 c
--0.331 1.841 0.139 1.573 0.426 1.249 c
-0.709 0.933 0.852 0.522 0.852 0.015 c
-0.852 -0.536 0.676 -0.97 0.324 -1.294 c
--0.029 -1.617 -0.511 -1.779 -1.118 -1.779 c
--1.511 -1.779 -1.874 -1.694 -2.205 -1.529 c
--2.529 -1.363 -2.786 -1.128 -2.969 -0.823 c
--3.157 -0.511 -3.248 -0.154 -3.248 0.25 c
--2.411 0.25 l
--2.411 -0.162 -2.301 -0.485 -2.072 -0.721 c
--1.837 -0.948 -1.521 -1.058 -1.118 -1.058 c
--0.746 -1.058 -0.467 -0.966 -0.279 -0.779 c
--0.096 -0.584 0 -0.324 0 0 c
-3.366 -1.087 m
-3.63 -1.087 3.84 -1.007 3.998 -0.838 c
-4.164 -0.673 4.255 -0.434 4.278 -0.118 c
-5.041 -0.118 l
-5.02 -0.599 4.85 -0.996 4.527 -1.309 c
-4.211 -1.625 3.825 -1.779 3.366 -1.779 c
-2.749 -1.779 2.278 -1.588 1.955 -1.205 c
-1.631 -0.816 1.469 -0.235 1.469 0.529 c
-1.469 1.073 l
-1.469 1.826 1.631 2.396 1.955 2.778 c
-2.278 3.167 2.741 3.366 3.351 3.366 c
-3.858 3.366 4.262 3.204 4.557 2.881 c
-4.858 2.564 5.02 2.132 5.041 1.573 c
-4.278 1.573 l
-4.255 1.933 4.166 2.209 4.012 2.396 c
-3.854 2.58 3.634 2.675 3.351 2.675 c
-2.998 2.675 2.734 2.55 2.558 2.308 c
-2.381 2.072 2.285 1.683 2.278 1.147 c
-2.278 0.515 l
-2.278 -0.073 2.366 -0.493 2.543 -0.735 c
-2.719 -0.97 2.991 -1.087 3.366 -1.087 c
-5.648 1.029 m
-5.648 1.741 5.817 2.311 6.163 2.734 c
-6.516 3.152 6.978 3.366 7.559 3.366 c
-8.135 3.366 8.595 3.16 8.941 2.749 c
-9.294 2.344 9.473 1.786 9.484 1.073 c
-9.484 0.559 l
-9.484 -0.169 9.308 -0.742 8.955 -1.161 c
-8.61 -1.573 8.151 -1.779 7.574 -1.779 c
-6.992 -1.779 6.53 -1.58 6.177 -1.176 c
-5.832 -0.765 5.655 -0.214 5.648 0.485 c
-h
-6.456 0.559 m
-6.456 0.048 6.552 -0.353 6.751 -0.647 c
-6.956 -0.941 7.228 -1.087 7.574 -1.087 c
-8.286 -1.087 8.654 -0.57 8.675 0.47 c
-8.675 1.029 l
-8.675 1.536 8.573 1.94 8.367 2.234 c
-8.168 2.528 7.9 2.675 7.559 2.675 c
-7.224 2.675 6.956 2.528 6.751 2.234 c
-6.552 1.94 6.456 1.536 6.456 1.029 c
-h
-11.418 4.484 m
-11.418 3.278 l
-12.167 3.278 l
-12.167 2.616 l
-11.418 2.616 l
-11.418 -0.455 l
-11.418 -0.654 11.447 -0.805 11.505 -0.912 c
-11.572 -1.01 11.686 -1.058 11.844 -1.058 c
-11.95 -1.058 12.056 -1.04 12.167 -1 c
-12.152 -1.69 l
-11.976 -1.749 11.788 -1.779 11.594 -1.779 c
-11.27 -1.779 11.024 -1.669 10.859 -1.44 c
-10.69 -1.205 10.609 -0.882 10.609 -0.47 c
-10.609 2.616 l
-9.845 2.616 l
-9.845 3.278 l
-10.609 3.278 l
-10.609 4.484 l
-h
-14.082 4.484 m
-14.082 3.278 l
-14.831 3.278 l
-14.831 2.616 l
-14.082 2.616 l
-14.082 -0.455 l
-14.082 -0.654 14.111 -0.805 14.169 -0.912 c
-14.236 -1.01 14.35 -1.058 14.508 -1.058 c
-14.614 -1.058 14.721 -1.04 14.831 -1 c
-14.817 -1.69 l
-14.64 -1.749 14.453 -1.779 14.258 -1.779 c
-13.934 -1.779 13.689 -1.669 13.523 -1.44 c
-13.354 -1.205 13.273 -0.882 13.273 -0.47 c
-13.273 2.616 l
-12.509 2.616 l
-12.509 3.278 l
-13.273 3.278 l
-13.273 4.484 l
-h
-22.416 0.426 m
-22.387 -0.291 22.184 -0.838 21.813 -1.22 c
-21.45 -1.595 20.935 -1.779 20.27 -1.779 c
-19.594 -1.779 19.057 -1.525 18.668 -1.014 c
-18.275 -0.507 18.08 0.183 18.08 1.058 c
-18.08 2.263 l
-18.08 3.135 18.278 3.821 18.682 4.322 c
-19.094 4.829 19.645 5.086 20.343 5.086 c
-20.99 5.086 21.49 4.887 21.843 4.498 c
-22.196 4.116 22.387 3.564 22.416 2.851 c
-21.578 2.851 l
-21.537 3.388 21.42 3.778 21.225 4.013 c
-21.026 4.248 20.733 4.366 20.343 4.366 c
-19.891 4.366 19.542 4.182 19.299 3.821 c
-19.054 3.469 18.932 2.947 18.932 2.263 c
-18.932 1.029 l
-18.932 0.353 19.042 -0.169 19.27 -0.53 c
-19.494 -0.882 19.829 -1.058 20.27 -1.058 c
-20.71 -1.058 21.023 -0.952 21.211 -0.735 c
-21.406 -0.522 21.527 -0.133 21.578 0.426 c
-h
-24.047 2.763 m
-24.349 3.164 24.742 3.366 25.223 3.366 c
-26.105 3.366 26.549 2.782 26.561 1.617 c
-26.561 -1.69 l
-25.753 -1.69 l
-25.753 1.573 l
-25.753 1.962 25.686 2.238 25.562 2.396 c
-25.433 2.562 25.238 2.645 24.974 2.645 c
-24.768 2.645 24.584 2.576 24.43 2.44 c
-24.272 2.311 24.143 2.138 24.047 1.926 c
-24.047 -1.69 l
-23.224 -1.69 l
-23.224 5.365 l
-24.047 5.365 l
-h
-30.14 -1.69 m
-30.089 -1.584 30.056 -1.404 30.037 -1.147 c
-29.751 -1.569 29.383 -1.779 28.935 -1.779 c
-28.483 -1.779 28.13 -1.658 27.877 -1.411 c
-27.63 -1.158 27.509 -0.802 27.509 -0.338 c
-27.509 0.169 27.678 0.573 28.024 0.867 c
-28.365 1.161 28.836 1.311 29.435 1.323 c
-30.023 1.323 l
-30.023 1.852 l
-30.023 2.146 29.953 2.356 29.817 2.484 c
-29.688 2.609 29.493 2.675 29.229 2.675 c
-28.982 2.675 28.781 2.602 28.626 2.454 c
-28.479 2.308 28.406 2.12 28.406 1.897 c
-27.582 1.897 l
-27.582 2.15 27.656 2.396 27.803 2.631 c
-27.958 2.866 28.163 3.046 28.421 3.175 c
-28.674 3.3 28.957 3.366 29.273 3.366 c
-29.78 3.366 30.169 3.237 30.434 2.984 c
-30.699 2.738 30.831 2.37 30.831 1.882 c
-30.831 -0.617 l
-30.838 -1 30.894 -1.334 30.993 -1.617 c
-30.993 -1.69 l
-h
-29.067 -1.043 m
-29.262 -1.043 29.449 -0.992 29.626 -0.882 c
-29.809 -0.765 29.942 -0.628 30.023 -0.47 c
-30.023 0.721 l
-29.566 0.721 l
-29.185 0.709 28.88 0.621 28.656 0.455 c
-28.428 0.287 28.317 0.058 28.317 -0.235 c
-28.317 -0.522 28.369 -0.728 28.479 -0.852 c
-28.596 -0.981 28.791 -1.043 29.067 -1.043 c
-33.639 -1.087 m
-33.903 -1.087 34.112 -1.007 34.27 -0.838 c
-34.436 -0.673 34.528 -0.434 34.549 -0.118 c
-35.314 -0.118 l
-35.292 -0.599 35.123 -0.996 34.8 -1.309 c
-34.484 -1.625 34.098 -1.779 33.639 -1.779 c
-33.021 -1.779 32.55 -1.588 32.228 -1.205 c
-31.904 -0.816 31.742 -0.235 31.742 0.529 c
-31.742 1.073 l
-31.742 1.826 31.904 2.396 32.228 2.778 c
-32.55 3.167 33.014 3.366 33.624 3.366 c
-34.131 3.366 34.535 3.204 34.829 2.881 c
-35.131 2.564 35.292 2.132 35.314 1.573 c
-34.549 1.573 l
-34.528 1.933 34.439 2.209 34.285 2.396 c
-34.127 2.58 33.907 2.675 33.624 2.675 c
-33.271 2.675 33.007 2.55 32.83 2.308 c
-32.654 2.072 32.558 1.683 32.55 1.147 c
-32.55 0.515 l
-32.55 -0.073 32.639 -0.493 32.816 -0.735 c
-32.992 -0.97 33.264 -1.087 33.639 -1.087 c
-35.924 1.029 m
-35.924 1.741 36.093 2.311 36.439 2.734 c
-36.791 3.152 37.254 3.366 37.836 3.366 c
-38.412 3.366 38.871 3.16 39.217 2.749 c
-39.569 2.344 39.75 1.786 39.76 1.073 c
-39.76 0.559 l
-39.76 -0.169 39.584 -0.742 39.232 -1.161 c
-38.886 -1.573 38.426 -1.779 37.85 -1.779 c
-37.269 -1.779 36.806 -1.58 36.454 -1.176 c
-36.108 -0.765 35.931 -0.214 35.924 0.485 c
-h
-36.733 0.559 m
-36.733 0.048 36.828 -0.353 37.026 -0.647 c
-37.233 -0.941 37.504 -1.087 37.85 -1.087 c
-38.563 -1.087 38.931 -0.57 38.952 0.47 c
-38.952 1.029 l
-38.952 1.536 38.85 1.94 38.644 2.234 c
-38.445 2.528 38.177 2.675 37.836 2.675 c
-37.501 2.675 37.233 2.528 37.026 2.234 c
-36.828 1.94 36.733 1.536 36.733 1.029 c
-h
-41.381 3.278 m
-41.41 2.749 l
-41.723 3.16 42.123 3.366 42.616 3.366 c
-43.498 3.366 43.943 2.782 43.953 1.617 c
-43.953 -1.69 l
-43.145 -1.69 l
-43.145 1.573 l
-43.145 1.962 43.079 2.238 42.954 2.396 c
-42.825 2.562 42.63 2.645 42.366 2.645 c
-42.16 2.645 41.977 2.576 41.822 2.44 c
-41.664 2.311 41.535 2.138 41.44 1.926 c
-41.44 -1.69 l
-40.617 -1.69 l
-40.617 3.278 l
-h
-49.988 -1.69 m
-49.936 -1.584 49.903 -1.404 49.885 -1.147 c
-49.598 -1.569 49.231 -1.779 48.782 -1.779 c
-48.33 -1.779 47.978 -1.658 47.724 -1.411 c
-47.478 -1.158 47.357 -0.802 47.357 -0.338 c
-47.357 0.169 47.525 0.573 47.871 0.867 c
-48.213 1.161 48.683 1.311 49.282 1.323 c
-49.87 1.323 l
-49.87 1.852 l
-49.87 2.146 49.8 2.356 49.664 2.484 c
-49.536 2.609 49.341 2.675 49.076 2.675 c
-48.83 2.675 48.628 2.602 48.473 2.454 c
-48.327 2.308 48.253 2.12 48.253 1.897 c
-47.43 1.897 l
-47.43 2.15 47.504 2.396 47.65 2.631 c
-47.805 2.866 48.011 3.046 48.267 3.175 c
-48.521 3.3 48.805 3.366 49.121 3.366 c
-49.628 3.366 50.017 3.237 50.282 2.984 c
-50.546 2.738 50.679 2.37 50.679 1.882 c
-50.679 -0.617 l
-50.686 -1 50.741 -1.334 50.84 -1.617 c
-50.84 -1.69 l
-h
-48.915 -1.043 m
-49.109 -1.043 49.297 -0.992 49.473 -0.882 c
-49.657 -0.765 49.789 -0.628 49.87 -0.47 c
-49.87 0.721 l
-49.414 0.721 l
-49.032 0.709 48.727 0.621 48.503 0.455 c
-48.275 0.287 48.165 0.058 48.165 -0.235 c
-48.165 -0.522 48.217 -0.728 48.327 -0.852 c
-48.444 -0.981 48.639 -1.043 48.915 -1.043 c
-52.516 3.278 m
-52.545 2.749 l
-52.857 3.16 53.258 3.366 53.751 3.366 c
-54.632 3.366 55.077 2.782 55.088 1.617 c
-55.088 -1.69 l
-54.28 -1.69 l
-54.28 1.573 l
-54.28 1.962 54.214 2.238 54.089 2.396 c
-53.96 2.562 53.765 2.645 53.501 2.645 c
-53.295 2.645 53.111 2.576 52.957 2.44 c
-52.799 2.311 52.67 2.138 52.575 1.926 c
-52.575 -1.69 l
-51.751 -1.69 l
-51.751 3.278 l
-h
-55.966 1.014 m
-55.966 1.786 56.106 2.37 56.393 2.763 c
-56.676 3.164 57.087 3.366 57.628 3.366 c
-58.098 3.366 58.465 3.175 58.729 2.793 c
-58.729 5.365 l
-59.552 5.365 l
-59.552 -1.69 l
-58.804 -1.69 l
-58.76 -1.161 l
-58.494 -1.573 58.116 -1.779 57.628 -1.779 c
-57.106 -1.779 56.701 -1.584 56.408 -1.191 c
-56.113 -0.79 55.966 -0.22 55.966 0.515 c
-h
-56.774 0.559 m
-56.774 0 56.855 -0.412 57.025 -0.676 c
-57.19 -0.933 57.458 -1.058 57.833 -1.058 c
-58.234 -1.058 58.532 -0.86 58.729 -0.455 c
-58.729 2.057 l
-58.524 2.447 58.222 2.645 57.833 2.645 c
-57.458 2.645 57.19 2.514 57.025 2.249 c
-56.855 1.992 56.774 1.595 56.774 1.058 c
-h
-63.165 -1.69 m
-63.165 4.997 l
-65.077 4.997 l
-65.682 4.997 66.138 4.843 66.443 4.542 c
-66.756 4.248 66.914 3.807 66.914 3.219 c
-66.914 2.903 66.833 2.624 66.679 2.381 c
-66.521 2.146 66.311 1.962 66.046 1.837 c
-66.347 1.738 66.59 1.547 66.766 1.264 c
-66.951 0.977 67.046 0.636 67.046 0.235 c
-67.046 -0.364 66.877 -0.834 66.546 -1.176 c
-66.212 -1.521 65.742 -1.69 65.135 -1.69 c
-h
-64.003 1.44 m
-64.003 -0.97 l
-65.15 -0.97 l
-65.473 -0.97 65.727 -0.867 65.914 -0.661 c
-66.097 -0.449 66.193 -0.147 66.193 0.235 c
-66.193 1.036 65.855 1.44 65.179 1.44 c
-h
-64.003 2.146 m
-65.091 2.146 l
-65.374 2.146 65.605 2.242 65.782 2.44 c
-65.966 2.635 66.061 2.896 66.061 3.219 c
-66.061 3.59 65.977 3.858 65.811 4.027 c
-65.653 4.193 65.407 4.278 65.077 4.278 c
-64.003 4.278 l
-h
-69.746 -1.779 m
-69.129 -1.779 68.651 -1.598 68.321 -1.235 c
-67.997 -0.864 67.828 -0.32 67.822 0.397 c
-67.822 0.999 l
-67.822 1.735 67.982 2.311 68.306 2.734 c
-68.63 3.152 69.077 3.366 69.659 3.366 c
-70.236 3.366 70.665 3.179 70.952 2.807 c
-71.246 2.444 71.396 1.87 71.408 1.087 c
-71.408 0.559 l
-68.63 0.559 l
-68.63 0.441 l
-68.63 -0.1 68.725 -0.493 68.923 -0.735 c
-69.129 -0.97 69.416 -1.087 69.791 -1.087 c
-70.033 -1.087 70.247 -1.043 70.423 -0.956 c
-70.606 -0.867 70.779 -0.728 70.937 -0.53 c
-71.363 -1.043 l
-71.011 -1.536 70.471 -1.779 69.746 -1.779 c
-69.659 2.675 m
-69.324 2.675 69.075 2.558 68.909 2.323 c
-68.74 2.094 68.648 1.738 68.63 1.249 c
-70.585 1.249 l
-70.585 1.367 l
-70.563 1.837 70.482 2.168 70.334 2.367 c
-70.188 2.572 69.96 2.675 69.659 2.675 c
-72.966 3.278 m
-72.996 2.749 l
-73.308 3.16 73.708 3.366 74.201 3.366 c
-75.082 3.366 75.527 2.782 75.539 1.617 c
-75.539 -1.69 l
-74.729 -1.69 l
-74.729 1.573 l
-74.729 1.962 74.664 2.238 74.538 2.396 c
-74.41 2.562 74.215 2.645 73.951 2.645 c
-73.745 2.645 73.561 2.576 73.407 2.44 c
-73.249 2.311 73.12 2.138 73.025 1.926 c
-73.025 -1.69 l
-72.202 -1.69 l
-72.202 3.278 l
-h
-82.057 0 m
-82.057 0.33 81.962 0.588 81.777 0.764 c
-81.602 0.941 81.278 1.11 80.808 1.278 c
-80.337 1.455 79.973 1.635 79.72 1.822 c
-79.474 2.007 79.286 2.219 79.161 2.454 c
-79.032 2.69 78.97 2.958 78.97 3.263 c
-78.97 3.792 79.147 4.226 79.5 4.571 c
-79.859 4.913 80.327 5.086 80.896 5.086 c
-81.285 5.086 81.635 4.997 81.939 4.821 c
-82.252 4.644 82.487 4.399 82.645 4.087 c
-82.81 3.781 82.895 3.439 82.895 3.057 c
-82.057 3.057 l
-82.057 3.476 81.954 3.8 81.748 4.027 c
-81.55 4.251 81.268 4.366 80.896 4.366 c
-80.551 4.366 80.286 4.266 80.102 4.072 c
-79.915 3.884 79.823 3.62 79.823 3.278 c
-79.823 2.992 79.926 2.756 80.131 2.572 c
-80.337 2.385 80.65 2.212 81.072 2.057 c
-81.727 1.841 82.197 1.573 82.483 1.249 c
-82.766 0.933 82.91 0.522 82.91 0.015 c
-82.91 -0.536 82.733 -0.97 82.38 -1.294 c
-82.028 -1.617 81.546 -1.779 80.94 -1.779 c
-80.547 -1.779 80.183 -1.694 79.853 -1.529 c
-79.529 -1.363 79.271 -1.128 79.088 -0.823 c
-78.901 -0.511 78.808 -0.154 78.808 0.25 c
-79.647 0.25 l
-79.647 -0.162 79.757 -0.485 79.984 -0.721 c
-80.22 -0.948 80.536 -1.058 80.94 -1.058 c
-81.311 -1.058 81.59 -0.966 81.777 -0.779 c
-81.962 -0.584 82.057 -0.324 82.057 0 c
-84.761 4.484 m
-84.761 3.278 l
-85.511 3.278 l
-85.511 2.616 l
-84.761 2.616 l
-84.761 -0.455 l
-84.761 -0.654 84.792 -0.805 84.85 -0.912 c
-84.916 -1.01 85.031 -1.058 85.188 -1.058 c
-85.295 -1.058 85.401 -1.04 85.511 -1 c
-85.497 -1.69 l
-85.32 -1.749 85.133 -1.779 84.938 -1.779 c
-84.615 -1.779 84.368 -1.669 84.204 -1.44 c
-84.034 -1.205 83.953 -0.882 83.953 -0.47 c
-83.953 2.616 l
-83.189 2.616 l
-83.189 3.278 l
-83.953 3.278 l
-83.953 4.484 l
-h
-88.411 2.514 m
-88.293 2.532 88.168 2.543 88.044 2.543 c
-87.62 2.543 87.331 2.315 87.176 1.866 c
-87.176 -1.69 l
-86.353 -1.69 l
-86.353 3.278 l
-87.147 3.278 l
-87.161 2.778 l
-87.375 3.167 87.683 3.366 88.088 3.366 c
-88.212 3.366 88.323 3.344 88.411 3.308 c
-h
-91.483 -1.69 m
-91.431 -1.584 91.398 -1.404 91.381 -1.147 c
-91.094 -1.569 90.726 -1.779 90.278 -1.779 c
-89.826 -1.779 89.473 -1.658 89.22 -1.411 c
-88.973 -1.158 88.852 -0.802 88.852 -0.338 c
-88.852 0.169 89.021 0.573 89.366 0.867 c
-89.708 1.161 90.178 1.311 90.778 1.323 c
-91.365 1.323 l
-91.365 1.852 l
-91.365 2.146 91.296 2.356 91.159 2.484 c
-91.031 2.609 90.836 2.675 90.572 2.675 c
-90.325 2.675 90.124 2.602 89.969 2.454 c
-89.822 2.308 89.748 2.12 89.748 1.897 c
-88.925 1.897 l
-88.925 2.15 88.999 2.396 89.145 2.631 c
-89.301 2.866 89.506 3.046 89.763 3.175 c
-90.016 3.3 90.3 3.366 90.616 3.366 c
-91.123 3.366 91.512 3.237 91.777 2.984 c
-92.042 2.738 92.174 2.37 92.174 1.882 c
-92.174 -0.617 l
-92.181 -1 92.237 -1.334 92.335 -1.617 c
-92.335 -1.69 l
-h
-90.41 -1.043 m
-90.604 -1.043 90.792 -0.992 90.969 -0.882 c
-91.152 -0.765 91.285 -0.628 91.365 -0.47 c
-91.365 0.721 l
-90.91 0.721 l
-90.527 0.709 90.222 0.621 89.999 0.455 c
-89.771 0.287 89.66 0.058 89.66 -0.235 c
-89.66 -0.522 89.712 -0.728 89.822 -0.852 c
-89.939 -0.981 90.134 -1.043 90.41 -1.043 c
-95.79 -1.249 m
-95.514 -1.602 95.117 -1.779 94.599 -1.779 c
-94.159 -1.779 93.82 -1.628 93.585 -1.323 c
-93.357 -1.01 93.239 -0.555 93.232 0.044 c
-93.232 3.278 l
-94.041 3.278 l
-94.041 0.103 l
-94.041 -0.673 94.276 -1.058 94.747 -1.058 c
-95.235 -1.058 95.573 -0.838 95.761 -0.397 c
-95.761 3.278 l
-96.584 3.278 l
-96.584 -1.69 l
-95.805 -1.69 l
-h
-101.224 0.559 m
-101.224 -0.217 101.081 -0.802 100.798 -1.191 c
-100.523 -1.584 100.122 -1.779 99.593 -1.779 c
-99.071 -1.779 98.682 -1.554 98.417 -1.103 c
-98.373 -1.69 l
-97.638 -1.69 l
-97.638 5.365 l
-98.446 5.365 l
-98.446 2.734 l
-98.711 3.152 99.094 3.366 99.593 3.366 c
-100.129 3.366 100.538 3.175 100.813 2.793 c
-101.085 2.41 101.224 1.826 101.224 1.043 c
-h
-100.416 1.014 m
-100.416 1.602 100.332 2.017 100.166 2.263 c
-100.008 2.517 99.744 2.645 99.373 2.645 c
-98.961 2.645 98.652 2.418 98.446 1.97 c
-98.446 -0.397 l
-98.641 -0.838 98.953 -1.058 99.387 -1.058 c
-99.747 -1.058 100.008 -0.933 100.166 -0.676 c
-100.332 -0.422 100.416 -0.025 100.416 0.515 c
-h
-102.144 -1.249 m
-102.144 -1.103 102.188 -0.981 102.276 -0.882 c
-102.364 -0.786 102.489 -0.735 102.658 -0.735 c
-102.834 -0.735 102.967 -0.786 103.055 -0.882 c
-103.15 -0.981 103.202 -1.103 103.202 -1.249 c
-103.202 -1.389 103.15 -1.507 103.055 -1.602 c
-102.967 -1.69 102.834 -1.735 102.658 -1.735 c
-102.489 -1.735 102.364 -1.69 102.276 -1.602 c
-102.188 -1.507 102.144 -1.389 102.144 -1.249 c
-110.757 4.278 m
-108.993 4.278 l
-108.993 -1.69 l
-108.156 -1.69 l
-108.156 4.278 l
-106.406 4.278 l
-106.406 4.997 l
-110.757 4.997 l
-h
-112.264 2.763 m
-112.565 3.164 112.958 3.366 113.44 3.366 c
-114.321 3.366 114.766 2.782 114.778 1.617 c
-114.778 -1.69 l
-113.969 -1.69 l
-113.969 1.573 l
-113.969 1.962 113.903 2.238 113.778 2.396 c
-113.649 2.562 113.454 2.645 113.19 2.645 c
-112.984 2.645 112.8 2.576 112.646 2.44 c
-112.488 2.311 112.359 2.138 112.264 1.926 c
-112.264 -1.69 l
-111.441 -1.69 l
-111.441 5.365 l
-112.264 5.365 l
-h
-117.574 -1.779 m
-116.956 -1.779 116.479 -1.598 116.148 -1.235 c
-115.825 -0.864 115.655 -0.32 115.648 0.397 c
-115.648 0.999 l
-115.648 1.735 115.81 2.311 116.133 2.734 c
-116.457 3.152 116.905 3.366 117.486 3.366 c
-118.063 3.366 118.493 3.179 118.779 2.807 c
-119.073 2.444 119.224 1.87 119.235 1.087 c
-119.235 0.559 l
-116.457 0.559 l
-116.457 0.441 l
-116.457 -0.1 116.552 -0.493 116.75 -0.735 c
-116.956 -0.97 117.243 -1.087 117.618 -1.087 c
-117.86 -1.087 118.073 -1.043 118.25 -0.956 c
-118.433 -0.867 118.607 -0.728 118.765 -0.53 c
-119.191 -1.043 l
-118.838 -1.536 118.298 -1.779 117.574 -1.779 c
-117.486 2.675 m
-117.151 2.675 116.901 2.558 116.736 2.323 c
-116.567 2.094 116.475 1.738 116.457 1.249 c
-118.412 1.249 l
-118.412 1.367 l
-118.389 1.837 118.308 2.168 118.161 2.367 c
-118.015 2.572 117.787 2.675 117.486 2.675 c
-126.069 0.559 m
-126.069 -0.217 125.926 -0.802 125.643 -1.191 c
-125.368 -1.584 124.968 -1.779 124.438 -1.779 c
-123.916 -1.779 123.527 -1.554 123.262 -1.103 c
-123.218 -1.69 l
-122.483 -1.69 l
-122.483 5.365 l
-123.291 5.365 l
-123.291 2.734 l
-123.557 3.152 123.939 3.366 124.438 3.366 c
-124.974 3.366 125.383 3.175 125.658 2.793 c
-125.93 2.41 126.069 1.826 126.069 1.043 c
-h
-125.261 1.014 m
-125.261 1.602 125.177 2.017 125.012 2.263 c
-124.854 2.517 124.589 2.645 124.218 2.645 c
-123.806 2.645 123.497 2.418 123.291 1.97 c
-123.291 -0.397 l
-123.486 -0.838 123.798 -1.058 124.232 -1.058 c
-124.592 -1.058 124.854 -0.933 125.012 -0.676 c
-125.177 -0.422 125.261 -0.025 125.261 0.515 c
-h
-126.768 1.029 m
-126.768 1.741 126.937 2.311 127.283 2.734 c
-127.636 3.152 128.099 3.366 128.679 3.366 c
-129.256 3.366 129.716 3.16 130.061 2.749 c
-130.414 2.344 130.593 1.786 130.605 1.073 c
-130.605 0.559 l
-130.605 -0.169 130.428 -0.742 130.075 -1.161 c
-129.73 -1.573 129.271 -1.779 128.694 -1.779 c
-128.113 -1.779 127.65 -1.58 127.297 -1.176 c
-126.952 -0.765 126.775 -0.214 126.768 0.485 c
-h
-127.576 0.559 m
-127.576 0.048 127.672 -0.353 127.871 -0.647 c
-128.076 -0.941 128.348 -1.087 128.694 -1.087 c
-129.406 -1.087 129.774 -0.57 129.796 0.47 c
-129.796 1.029 l
-129.796 1.536 129.693 1.94 129.487 2.234 c
-129.289 2.528 129.02 2.675 128.679 2.675 c
-128.344 2.675 128.076 2.528 127.871 2.234 c
-127.672 1.94 127.576 1.536 127.576 1.029 c
-h
-131.303 1.029 m
-131.303 1.741 131.472 2.311 131.817 2.734 c
-132.17 3.152 132.633 3.366 133.213 3.366 c
-133.791 3.366 134.25 3.16 134.595 2.749 c
-134.948 2.344 135.128 1.786 135.139 1.073 c
-135.139 0.559 l
-135.139 -0.169 134.963 -0.742 134.61 -1.161 c
-134.264 -1.573 133.805 -1.779 133.228 -1.779 c
-132.648 -1.779 132.184 -1.58 131.832 -1.176 c
-131.486 -0.765 131.31 -0.214 131.303 0.485 c
-h
-132.111 0.559 m
-132.111 0.048 132.207 -0.353 132.405 -0.647 c
-132.611 -0.941 132.883 -1.087 133.228 -1.087 c
-133.941 -1.087 134.308 -0.57 134.331 0.47 c
-134.331 1.029 l
-134.331 1.536 134.227 1.94 134.022 2.234 c
-133.824 2.528 133.556 2.675 133.213 2.675 c
-132.879 2.675 132.611 2.528 132.405 2.234 c
-132.207 1.94 132.111 1.536 132.111 1.029 c
-h
-137.244 0.588 m
-136.818 0.088 l
-136.818 -1.69 l
-136.01 -1.69 l
-136.01 5.365 l
-136.818 5.365 l
-136.818 1.147 l
-138.362 3.278 l
-139.332 3.278 l
-137.759 1.205 l
-139.553 -1.69 l
-138.597 -1.69 l
-h
-143.393 -1.69 -0.809 4.968 re
-143.451 4.601 m
-143.451 4.461 143.411 4.343 143.334 4.248 c
-143.264 4.16 143.15 4.116 142.996 4.116 c
-142.838 4.116 142.72 4.16 142.643 4.248 c
-142.573 4.343 142.54 4.461 142.54 4.601 c
-142.54 4.737 142.573 4.85 142.643 4.939 c
-142.72 5.034 142.834 5.086 142.981 5.086 c
-143.135 5.086 143.253 5.034 143.334 4.939 c
-143.411 4.85 143.451 4.737 143.451 4.601 c
-147.001 -0.412 m
-147.001 -0.246 146.931 -0.1 146.796 0.029 c
-146.667 0.154 146.414 0.301 146.031 0.47 c
-145.597 0.654 145.289 0.812 145.105 0.941 c
-144.928 1.066 144.797 1.209 144.708 1.367 c
-144.62 1.532 144.576 1.727 144.576 1.955 c
-144.576 2.367 144.723 2.705 145.017 2.969 c
-145.311 3.233 145.686 3.366 146.148 3.366 c
-146.638 3.366 147.031 3.223 147.324 2.94 c
-147.619 2.664 147.766 2.308 147.766 1.866 c
-146.958 1.866 l
-146.958 2.091 146.877 2.282 146.722 2.44 c
-146.575 2.595 146.384 2.675 146.148 2.675 c
-145.913 2.675 145.726 2.609 145.59 2.484 c
-145.451 2.367 145.385 2.198 145.385 1.984 c
-145.385 1.816 145.433 1.683 145.531 1.587 c
-145.627 1.488 145.869 1.356 146.252 1.191 c
-146.858 0.956 147.27 0.723 147.486 0.5 c
-147.7 0.272 147.81 -0.011 147.81 -0.353 c
-147.81 -0.786 147.656 -1.132 147.355 -1.396 c
-147.06 -1.654 146.663 -1.779 146.164 -1.779 c
-145.653 -1.779 145.238 -1.631 144.914 -1.338 c
-144.591 -1.043 144.429 -0.669 144.429 -0.206 c
-145.252 -0.206 l
-145.26 -0.482 145.344 -0.698 145.502 -0.852 c
-145.656 -1.01 145.877 -1.087 146.164 -1.087 c
-146.435 -1.087 146.641 -1.029 146.781 -0.912 c
-146.927 -0.786 147.001 -0.617 147.001 -0.412 c
-153.682 -1.69 m
-153.63 -1.584 153.597 -1.404 153.579 -1.147 c
-153.292 -1.569 152.925 -1.779 152.477 -1.779 c
-152.024 -1.779 151.672 -1.658 151.419 -1.411 c
-151.172 -1.158 151.051 -0.802 151.051 -0.338 c
-151.051 0.169 151.22 0.573 151.565 0.867 c
-151.907 1.161 152.377 1.311 152.976 1.323 c
-153.564 1.323 l
-153.564 1.852 l
-153.564 2.146 153.495 2.356 153.358 2.484 c
-153.23 2.609 153.036 2.675 152.77 2.675 c
-152.525 2.675 152.323 2.602 152.168 2.454 c
-152.021 2.308 151.947 2.12 151.947 1.897 c
-151.124 1.897 l
-151.124 2.15 151.197 2.396 151.345 2.631 c
-151.499 2.866 151.705 3.046 151.962 3.175 c
-152.215 3.3 152.499 3.366 152.815 3.366 c
-153.322 3.366 153.711 3.237 153.976 2.984 c
-154.241 2.738 154.372 2.37 154.372 1.882 c
-154.372 -0.617 l
-154.38 -1 154.435 -1.334 154.534 -1.617 c
-154.534 -1.69 l
-h
-152.609 -1.043 m
-152.803 -1.043 152.991 -0.992 153.167 -0.882 c
-153.351 -0.765 153.483 -0.628 153.564 -0.47 c
-153.564 0.721 l
-153.109 0.721 l
-152.726 0.709 152.421 0.621 152.197 0.455 c
-151.97 0.287 151.86 0.058 151.86 -0.235 c
-151.86 -0.522 151.911 -0.728 152.021 -0.852 c
-152.138 -0.981 152.333 -1.043 152.609 -1.043 c
-156.784 -0.455 m
-157.724 3.278 l
-158.562 3.278 l
-157.077 -1.69 l
-156.475 -1.69 l
-154.975 3.278 l
-155.814 3.278 l
-h
-161.722 -1.69 m
-161.671 -1.584 161.638 -1.404 161.62 -1.147 c
-161.333 -1.569 160.965 -1.779 160.517 -1.779 c
-160.065 -1.779 159.712 -1.658 159.459 -1.411 c
-159.213 -1.158 159.091 -0.802 159.091 -0.338 c
-159.091 0.169 159.261 0.573 159.606 0.867 c
-159.947 1.161 160.418 1.311 161.017 1.323 c
-161.605 1.323 l
-161.605 1.852 l
-161.605 2.146 161.535 2.356 161.399 2.484 c
-161.27 2.609 161.075 2.675 160.811 2.675 c
-160.564 2.675 160.363 2.602 160.209 2.454 c
-160.061 2.308 159.988 2.12 159.988 1.897 c
-159.165 1.897 l
-159.165 2.15 159.238 2.396 159.386 2.631 c
-159.54 2.866 159.745 3.046 160.003 3.175 c
-160.256 3.3 160.539 3.366 160.855 3.366 c
-161.362 3.366 161.752 3.237 162.016 2.984 c
-162.281 2.738 162.413 2.37 162.413 1.882 c
-162.413 -0.617 l
-162.42 -1 162.476 -1.334 162.575 -1.617 c
-162.575 -1.69 l
-h
-160.649 -1.043 m
-160.844 -1.043 161.032 -0.992 161.208 -0.882 c
-161.391 -0.765 161.524 -0.628 161.605 -0.47 c
-161.605 0.721 l
-161.15 0.721 l
-160.767 0.709 160.462 0.621 160.238 0.455 c
-160.01 0.287 159.899 0.058 159.899 -0.235 c
-159.899 -0.522 159.951 -0.728 160.061 -0.852 c
-160.179 -0.981 160.373 -1.043 160.649 -1.043 c
-164.368 -1.69 -0.808 4.968 re
-164.427 4.601 m
-164.427 4.461 164.387 4.343 164.31 4.248 c
-164.24 4.16 164.126 4.116 163.972 4.116 c
-163.814 4.116 163.696 4.16 163.619 4.248 c
-163.548 4.343 163.516 4.461 163.516 4.601 c
-163.516 4.737 163.548 4.85 163.619 4.939 c
-163.696 5.034 163.81 5.086 163.957 5.086 c
-164.111 5.086 164.229 5.034 164.31 4.939 c
-164.387 4.85 164.427 4.737 164.427 4.601 c
-166.434 -1.69 -0.809 7.056 re
-170.174 -1.69 m
-170.123 -1.584 170.089 -1.404 170.072 -1.147 c
-169.785 -1.569 169.418 -1.779 168.969 -1.779 c
-168.517 -1.779 168.165 -1.658 167.911 -1.411 c
-167.664 -1.158 167.543 -0.802 167.543 -0.338 c
-167.543 0.169 167.712 0.573 168.057 0.867 c
-168.4 1.161 168.87 1.311 169.469 1.323 c
-170.056 1.323 l
-170.056 1.852 l
-170.056 2.146 169.987 2.356 169.851 2.484 c
-169.723 2.609 169.528 2.675 169.263 2.675 c
-169.017 2.675 168.815 2.602 168.66 2.454 c
-168.514 2.308 168.44 2.12 168.44 1.897 c
-167.617 1.897 l
-167.617 2.15 167.69 2.396 167.837 2.631 c
-167.992 2.866 168.198 3.046 168.454 3.175 c
-168.708 3.3 168.992 3.366 169.307 3.366 c
-169.814 3.366 170.204 3.237 170.469 2.984 c
-170.733 2.738 170.865 2.37 170.865 1.882 c
-170.865 -0.617 l
-170.873 -1 170.928 -1.334 171.027 -1.617 c
-171.027 -1.69 l
-h
-169.102 -1.043 m
-169.296 -1.043 169.484 -0.992 169.659 -0.882 c
-169.844 -0.765 169.976 -0.628 170.056 -0.47 c
-170.056 0.721 l
-169.601 0.721 l
-169.219 0.709 168.913 0.621 168.69 0.455 c
-168.462 0.287 168.352 0.058 168.352 -0.235 c
-168.352 -0.522 168.403 -0.728 168.514 -0.852 c
-168.631 -0.981 168.826 -1.043 169.102 -1.043 c
-175.539 0.559 m
-175.539 -0.217 175.396 -0.802 175.113 -1.191 c
-174.837 -1.584 174.437 -1.779 173.908 -1.779 c
-173.386 -1.779 172.996 -1.554 172.732 -1.103 c
-172.688 -1.69 l
-171.953 -1.69 l
-171.953 5.365 l
-172.761 5.365 l
-172.761 2.734 l
-173.026 3.152 173.408 3.366 173.908 3.366 c
-174.444 3.366 174.852 3.175 175.128 2.793 c
-175.4 2.41 175.539 1.826 175.539 1.043 c
-h
-174.731 1.014 m
-174.731 1.602 174.646 2.017 174.481 2.263 c
-174.323 2.517 174.058 2.645 173.688 2.645 c
-173.276 2.645 172.967 2.418 172.761 1.97 c
-172.761 -0.397 l
-172.956 -0.838 173.268 -1.058 173.702 -1.058 c
-174.062 -1.058 174.323 -0.933 174.481 -0.676 c
-174.646 -0.422 174.731 -0.025 174.731 0.515 c
-h
-177.281 -1.69 -0.808 7.056 re
-180.243 -1.779 m
-179.626 -1.779 179.148 -1.598 178.818 -1.235 c
-178.494 -0.864 178.325 -0.32 178.318 0.397 c
-178.318 0.999 l
-178.318 1.735 178.479 2.311 178.803 2.734 c
-179.126 3.152 179.575 3.366 180.155 3.366 c
-180.732 3.366 181.162 3.179 181.449 2.807 c
-181.742 2.444 181.893 1.87 181.904 1.087 c
-181.904 0.559 l
-179.126 0.559 l
-179.126 0.441 l
-179.126 -0.1 179.221 -0.493 179.42 -0.735 c
-179.626 -0.97 179.913 -1.087 180.287 -1.087 c
-180.53 -1.087 180.743 -1.043 180.919 -0.956 c
-181.103 -0.867 181.276 -0.728 181.434 -0.53 c
-181.86 -1.043 l
-181.507 -1.536 180.967 -1.779 180.243 -1.779 c
-180.155 2.675 m
-179.82 2.675 179.571 2.558 179.406 2.323 c
-179.236 2.094 179.144 1.738 179.126 1.249 c
-181.081 1.249 l
-181.081 1.367 l
-181.059 1.837 180.978 2.168 180.831 2.367 c
-180.684 2.572 180.456 2.675 180.155 2.675 c
-184.973 1.029 m
-184.973 1.741 185.141 2.311 185.487 2.734 c
-185.84 3.152 186.303 3.366 186.883 3.366 c
-187.46 3.366 187.92 3.16 188.265 2.749 c
-188.618 2.344 188.798 1.786 188.809 1.073 c
-188.809 0.559 l
-188.809 -0.169 188.632 -0.742 188.279 -1.161 c
-187.934 -1.573 187.475 -1.779 186.899 -1.779 c
-186.317 -1.779 185.854 -1.58 185.502 -1.176 c
-185.156 -0.765 184.98 -0.214 184.973 0.485 c
-h
-185.781 0.559 m
-185.781 0.048 185.877 -0.353 186.075 -0.647 c
-186.28 -0.941 186.552 -1.087 186.899 -1.087 c
-187.611 -1.087 187.978 -0.57 188.001 0.47 c
-188.001 1.029 l
-188.001 1.536 187.898 1.94 187.692 2.234 c
-187.493 2.528 187.225 2.675 186.883 2.675 c
-186.549 2.675 186.28 2.528 186.075 2.234 c
-185.877 1.94 185.781 1.536 185.781 1.029 c
-h
-190.433 3.278 m
-190.463 2.749 l
-190.775 3.16 191.176 3.366 191.668 3.366 c
-192.549 3.366 192.995 2.782 193.006 1.617 c
-193.006 -1.69 l
-192.197 -1.69 l
-192.197 1.573 l
-192.197 1.962 192.131 2.238 192.006 2.396 c
-191.878 2.562 191.683 2.645 191.418 2.645 c
-191.213 2.645 191.028 2.576 190.874 2.44 c
-190.716 2.311 190.588 2.138 190.492 1.926 c
-190.492 -1.69 l
-189.669 -1.69 l
-189.669 3.278 l
-h
-194.924 -1.69 -0.808 7.056 re
-196.989 -1.69 -0.808 4.968 re
-197.048 4.601 m
-197.048 4.461 197.008 4.343 196.931 4.248 c
-196.86 4.16 196.746 4.116 196.592 4.116 c
-196.434 4.116 196.316 4.16 196.239 4.248 c
-196.169 4.343 196.137 4.461 196.137 4.601 c
-196.137 4.737 196.169 4.85 196.239 4.939 c
-196.316 5.034 196.43 5.086 196.578 5.086 c
-196.732 5.086 196.85 5.034 196.931 4.939 c
-197.008 4.85 197.048 4.737 197.048 4.601 c
-198.937 3.278 m
-198.966 2.749 l
-199.279 3.16 199.679 3.366 200.171 3.366 c
-201.054 3.366 201.498 2.782 201.509 1.617 c
-201.509 -1.69 l
-200.701 -1.69 l
-200.701 1.573 l
-200.701 1.962 200.634 2.238 200.509 2.396 c
-200.381 2.562 200.186 2.645 199.921 2.645 c
-199.716 2.645 199.532 2.576 199.377 2.44 c
-199.219 2.311 199.091 2.138 198.995 1.926 c
-198.995 -1.69 l
-198.172 -1.69 l
-198.172 3.278 l
-h
-204.324 -1.779 m
-203.707 -1.779 203.229 -1.598 202.898 -1.235 c
-202.575 -0.864 202.406 -0.32 202.398 0.397 c
-202.398 0.999 l
-202.398 1.735 202.56 2.311 202.884 2.734 c
-203.207 3.152 203.655 3.366 204.235 3.366 c
-204.813 3.366 205.243 3.179 205.529 2.807 c
-205.823 2.444 205.974 1.87 205.985 1.087 c
-205.985 0.559 l
-203.207 0.559 l
-203.207 0.441 l
-203.207 -0.1 203.302 -0.493 203.501 -0.735 c
-203.707 -0.97 203.994 -1.087 204.368 -1.087 c
-204.611 -1.087 204.823 -1.043 205 -0.956 c
-205.184 -0.867 205.357 -0.728 205.515 -0.53 c
-205.941 -1.043 l
-205.588 -1.536 205.048 -1.779 204.324 -1.779 c
-204.235 2.675 m
-203.901 2.675 203.651 2.558 203.486 2.323 c
-203.317 2.094 203.225 1.738 203.207 1.249 c
-205.162 1.249 l
-205.162 1.367 l
-205.139 1.837 205.059 2.168 204.912 2.367 c
-204.765 2.572 204.537 2.675 204.235 2.675 c
-209.586 -1.69 m
-209.586 2.616 l
-208.939 2.616 l
-208.939 3.278 l
-209.586 3.278 l
-209.586 3.851 l
-209.594 4.358 209.722 4.755 209.968 5.041 c
-210.211 5.325 210.56 5.468 211.012 5.468 c
-211.167 5.468 211.328 5.438 211.497 5.38 c
-211.453 4.689 l
-211.343 4.719 211.221 4.733 211.086 4.733 c
-210.622 4.733 210.394 4.403 210.394 3.748 c
-210.394 3.278 l
-211.247 3.278 l
-211.247 2.616 l
-210.394 2.616 l
-210.394 -1.69 l
-h
-211.912 1.029 m
-211.912 1.741 212.081 2.311 212.426 2.734 c
-212.779 3.152 213.243 3.366 213.823 3.366 c
-214.4 3.366 214.859 3.16 215.204 2.749 c
-215.558 2.344 215.738 1.786 215.749 1.073 c
-215.749 0.559 l
-215.749 -0.169 215.572 -0.742 215.219 -1.161 c
-214.874 -1.573 214.415 -1.779 213.838 -1.779 c
-213.257 -1.779 212.794 -1.58 212.441 -1.176 c
-212.096 -0.765 211.919 -0.214 211.912 0.485 c
-h
-212.721 0.559 m
-212.721 0.048 212.816 -0.353 213.014 -0.647 c
-213.22 -0.941 213.492 -1.087 213.838 -1.087 c
-214.551 -1.087 214.918 -0.57 214.94 0.47 c
-214.94 1.029 l
-214.94 1.536 214.838 1.94 214.632 2.234 c
-214.433 2.528 214.165 2.675 213.823 2.675 c
-213.489 2.675 213.22 2.528 213.014 2.234 c
-212.816 1.94 212.721 1.536 212.721 1.029 c
-h
-218.666 2.514 m
-218.549 2.532 218.424 2.543 218.299 2.543 c
-217.876 2.543 217.586 2.315 217.432 1.866 c
-217.432 -1.69 l
-216.609 -1.69 l
-216.609 3.278 l
-217.402 3.278 l
-217.417 2.778 l
-217.631 3.167 217.939 3.366 218.343 3.366 c
-218.468 3.366 218.578 3.344 218.666 3.308 c
-h
-222.165 -1.69 m
-222.165 2.616 l
-221.518 2.616 l
-221.518 3.278 l
-222.165 3.278 l
-222.165 3.851 l
-222.172 4.358 222.3 4.755 222.547 5.041 c
-222.79 5.325 223.139 5.468 223.591 5.468 c
-223.745 5.468 223.906 5.438 224.076 5.38 c
-224.031 4.689 l
-223.921 4.719 223.8 4.733 223.664 4.733 c
-223.201 4.733 222.973 4.403 222.973 3.748 c
-222.973 3.278 l
-223.826 3.278 l
-223.826 2.616 l
-222.973 2.616 l
-222.973 -1.69 l
-h
-226.714 2.514 m
-226.597 2.532 226.472 2.543 226.347 2.543 c
-225.924 2.543 225.633 2.315 225.479 1.866 c
-225.479 -1.69 l
-224.656 -1.69 l
-224.656 3.278 l
-225.45 3.278 l
-225.465 2.778 l
-225.678 3.167 225.986 3.366 226.391 3.366 c
-226.516 3.366 226.626 3.344 226.714 3.308 c
-h
-229.099 -1.779 m
-228.482 -1.779 228.004 -1.598 227.673 -1.235 c
-227.35 -0.864 227.181 -0.32 227.173 0.397 c
-227.173 0.999 l
-227.173 1.735 227.335 2.311 227.659 2.734 c
-227.982 3.152 228.43 3.366 229.011 3.366 c
-229.588 3.366 230.018 3.179 230.304 2.807 c
-230.599 2.444 230.749 1.87 230.76 1.087 c
-230.76 0.559 l
-227.982 0.559 l
-227.982 0.441 l
-227.982 -0.1 228.077 -0.493 228.276 -0.735 c
-228.482 -0.97 228.768 -1.087 229.143 -1.087 c
-229.386 -1.087 229.599 -1.043 229.776 -0.956 c
-229.959 -0.867 230.132 -0.728 230.29 -0.53 c
-230.716 -1.043 l
-230.364 -1.536 229.823 -1.779 229.099 -1.779 c
-229.011 2.675 m
-228.677 2.675 228.427 2.558 228.261 2.323 c
-228.093 2.094 228 1.738 227.982 1.249 c
-229.937 1.249 l
-229.937 1.367 l
-229.915 1.837 229.834 2.168 229.687 2.367 c
-229.54 2.572 229.313 2.675 229.011 2.675 c
-233.332 -1.779 m
-232.715 -1.779 232.237 -1.598 231.906 -1.235 c
-231.584 -0.864 231.414 -0.32 231.407 0.397 c
-231.407 0.999 l
-231.407 1.735 231.569 2.311 231.892 2.734 c
-232.216 3.152 232.664 3.366 233.244 3.366 c
-233.822 3.366 234.252 3.179 234.538 2.807 c
-234.832 2.444 234.983 1.87 234.994 1.087 c
-234.994 0.559 l
-232.216 0.559 l
-232.216 0.441 l
-232.216 -0.1 232.311 -0.493 232.509 -0.735 c
-232.715 -0.97 233.001 -1.087 233.377 -1.087 c
-233.619 -1.087 233.832 -1.043 234.009 -0.956 c
-234.192 -0.867 234.365 -0.728 234.523 -0.53 c
-234.95 -1.043 l
-234.597 -1.536 234.057 -1.779 233.332 -1.779 c
-233.244 2.675 m
-232.91 2.675 232.66 2.558 232.494 2.323 c
-232.326 2.094 232.234 1.738 232.216 1.249 c
-234.171 1.249 l
-234.171 1.367 l
-234.148 1.837 234.067 2.168 233.92 2.367 c
-233.774 2.572 233.546 2.675 233.244 2.675 c
-f
-Q
-q 1 0 0 1 538.6692 292.1129 cm
-0 0 m
--0.052 0.106 -0.085 0.287 -0.103 0.544 c
--0.389 0.121 -0.757 -0.088 -1.205 -0.088 c
--1.658 -0.088 -2.01 0.033 -2.263 0.279 c
--2.51 0.532 -2.631 0.889 -2.631 1.353 c
--2.631 1.86 -2.462 2.263 -2.117 2.558 c
--1.775 2.851 -1.305 3.002 -0.706 3.013 c
--0.118 3.013 l
--0.118 3.543 l
--0.118 3.836 -0.187 4.046 -0.324 4.175 c
--0.452 4.299 -0.646 4.366 -0.912 4.366 c
--1.157 4.366 -1.359 4.293 -1.514 4.145 c
--1.66 3.998 -1.735 3.811 -1.735 3.587 c
--2.558 3.587 l
--2.558 3.84 -2.484 4.087 -2.337 4.322 c
--2.182 4.557 -1.977 4.737 -1.72 4.866 c
--1.466 4.991 -1.183 5.056 -0.867 5.056 c
--0.36 5.056 0.029 4.928 0.294 4.675 c
-0.559 4.428 0.691 4.06 0.691 3.572 c
-0.691 1.073 l
-0.698 0.69 0.754 0.357 0.852 0.073 c
-0.852 0 l
-h
--1.072 0.647 m
--0.878 0.647 -0.69 0.698 -0.515 0.808 c
--0.33 0.926 -0.199 1.062 -0.118 1.22 c
--0.118 2.411 l
--0.573 2.411 l
--0.955 2.4 -1.261 2.311 -1.484 2.146 c
--1.712 1.977 -1.822 1.749 -1.822 1.455 c
--1.822 1.168 -1.771 0.962 -1.66 0.838 c
--1.543 0.709 -1.348 0.647 -1.072 0.647 c
-2.837 6.174 m
-2.837 4.968 l
-3.587 4.968 l
-3.587 4.307 l
-2.837 4.307 l
-2.837 1.235 l
-2.837 1.037 2.866 0.885 2.926 0.779 c
-2.992 0.68 3.105 0.632 3.263 0.632 c
-3.37 0.632 3.476 0.65 3.587 0.69 c
-3.572 0 l
-3.396 -0.058 3.208 -0.088 3.013 -0.088 c
-2.691 -0.088 2.444 0.022 2.278 0.25 c
-2.109 0.485 2.028 0.808 2.028 1.22 c
-2.028 4.307 l
-1.264 4.307 l
-1.264 4.968 l
-2.028 4.968 l
-2.028 6.174 l
-h
-f
-Q
-0.793 0.801 0.129 0.016 k
-q 1 0 0 1 545.9825 296.5664 cm
-0 0 m
-0.301 0.401 0.694 0.603 1.176 0.603 c
-2.057 0.603 2.502 0.019 2.513 -1.146 c
-2.513 -4.453 l
-1.705 -4.453 l
-1.705 -1.19 l
-1.705 -0.801 1.639 -0.525 1.514 -0.367 c
-1.385 -0.201 1.19 -0.118 0.926 -0.118 c
-0.72 -0.118 0.536 -0.187 0.382 -0.323 c
-0.224 -0.452 0.095 -0.625 0 -0.837 c
-0 -4.453 l
--0.823 -4.453 l
--0.823 2.602 l
-0 2.602 l
-h
-4.608 1.721 m
-4.608 0.515 l
-5.357 0.515 l
-5.357 -0.147 l
-4.608 -0.147 l
-4.608 -3.218 l
-4.608 -3.417 4.637 -3.568 4.696 -3.674 c
-4.762 -3.773 4.876 -3.821 5.034 -3.821 c
-5.14 -3.821 5.247 -3.803 5.357 -3.763 c
-5.342 -4.453 l
-5.167 -4.512 4.979 -4.542 4.785 -4.542 c
-4.461 -4.542 4.214 -4.432 4.049 -4.203 c
-3.881 -3.968 3.8 -3.645 3.8 -3.233 c
-3.8 -0.147 l
-3.035 -0.147 l
-3.035 0.515 l
-3.8 0.515 l
-3.8 1.721 l
-h
-7.272 1.721 m
-7.272 0.515 l
-8.022 0.515 l
-8.022 -0.147 l
-7.272 -0.147 l
-7.272 -3.218 l
-7.272 -3.417 7.301 -3.568 7.36 -3.674 c
-7.426 -3.773 7.54 -3.821 7.698 -3.821 c
-7.804 -3.821 7.912 -3.803 8.022 -3.763 c
-8.007 -4.453 l
-7.831 -4.512 7.643 -4.542 7.449 -4.542 c
-7.125 -4.542 6.879 -4.432 6.713 -4.203 c
-6.545 -3.968 6.464 -3.645 6.464 -3.233 c
-6.464 -0.147 l
-5.699 -0.147 l
-5.699 0.515 l
-6.464 0.515 l
-6.464 1.721 l
-h
-12.461 -2.204 m
-12.461 -2.991 12.317 -3.579 12.035 -3.968 c
-11.748 -4.351 11.347 -4.542 10.829 -4.542 c
-10.329 -4.542 9.947 -4.357 9.683 -3.983 c
-9.683 -6.364 l
-8.874 -6.364 l
-8.874 0.515 l
-9.609 0.515 l
-9.639 -0.029 l
-9.911 0.389 10.304 0.603 10.815 0.603 c
-11.362 0.603 11.77 0.412 12.035 0.03 c
-12.307 -0.345 12.45 -0.907 12.461 -1.66 c
-h
-11.652 -1.749 m
-11.652 -1.19 11.564 -0.779 11.388 -0.514 c
-11.218 -0.249 10.946 -0.118 10.564 -0.118 c
-10.171 -0.118 9.878 -0.309 9.683 -0.69 c
-9.683 -3.277 l
-9.878 -3.659 10.175 -3.85 10.58 -3.85 c
-10.94 -3.85 11.204 -3.719 11.373 -3.453 c
-11.549 -3.189 11.642 -2.786 11.652 -2.234 c
-h
-15.75 -3.175 m
-15.75 -3.009 15.68 -2.863 15.544 -2.734 c
-15.415 -2.609 15.162 -2.462 14.78 -2.293 c
-14.346 -2.109 14.037 -1.951 13.853 -1.822 c
-13.677 -1.697 13.545 -1.554 13.456 -1.396 c
-13.369 -1.23 13.325 -1.036 13.325 -0.808 c
-13.325 -0.396 13.471 -0.058 13.765 0.206 c
-14.059 0.47 14.434 0.603 14.898 0.603 c
-15.386 0.603 15.779 0.46 16.073 0.177 c
-16.367 -0.099 16.514 -0.455 16.514 -0.897 c
-15.706 -0.897 l
-15.706 -0.672 15.625 -0.481 15.47 -0.323 c
-15.324 -0.168 15.133 -0.087 14.898 -0.087 c
-14.662 -0.087 14.474 -0.154 14.339 -0.278 c
-14.198 -0.396 14.133 -0.565 14.133 -0.779 c
-14.133 -0.947 14.181 -1.08 14.279 -1.176 c
-14.375 -1.275 14.618 -1.407 15 -1.572 c
-15.606 -1.807 16.018 -2.04 16.234 -2.263 c
-16.448 -2.491 16.558 -2.774 16.558 -3.116 c
-16.558 -3.549 16.404 -3.895 16.103 -4.159 c
-15.808 -4.417 15.411 -4.542 14.912 -4.542 c
-14.401 -4.542 13.986 -4.394 13.662 -4.101 c
-13.339 -3.806 13.177 -3.432 13.177 -2.969 c
-14 -2.969 l
-14.008 -3.245 14.092 -3.461 14.25 -3.615 c
-14.405 -3.773 14.625 -3.85 14.912 -3.85 c
-15.183 -3.85 15.39 -3.792 15.529 -3.674 c
-15.676 -3.549 15.75 -3.38 15.75 -3.175 c
-17.491 -4.012 m
-17.491 -3.865 17.535 -3.744 17.624 -3.645 c
-17.712 -3.549 17.837 -3.498 18.006 -3.498 c
-18.183 -3.498 18.314 -3.549 18.403 -3.645 c
-18.499 -3.744 18.549 -3.865 18.549 -4.012 c
-18.549 -4.152 18.499 -4.27 18.403 -4.365 c
-18.314 -4.453 18.183 -4.498 18.006 -4.498 c
-17.837 -4.498 17.712 -4.453 17.624 -4.365 c
-17.535 -4.27 17.491 -4.152 17.491 -4.012 c
-17.491 -0.249 m
-17.491 -0.103 17.535 0.019 17.624 0.118 c
-17.712 0.214 17.837 0.265 18.006 0.265 c
-18.183 0.265 18.314 0.214 18.403 0.118 c
-18.499 0.019 18.549 -0.103 18.549 -0.249 c
-18.549 -0.389 18.499 -0.507 18.403 -0.602 c
-18.314 -0.69 18.183 -0.735 18.006 -0.735 c
-17.837 -0.735 17.712 -0.69 17.624 -0.602 c
-17.535 -0.507 17.491 -0.389 17.491 -0.249 c
-19.785 -5.026 m
-19.093 -5.026 l
-21.431 2.234 l
-22.121 2.234 l
-h
-22.148 -5.026 m
-21.456 -5.026 l
-23.794 2.234 l
-24.485 2.234 l
-h
-25.102 -1.749 m
-25.102 -0.977 25.242 -0.393 25.528 0 c
-25.811 0.401 26.223 0.603 26.763 0.603 c
-27.27 0.603 27.66 0.387 27.924 -0.043 c
-27.953 0.515 l
-28.689 0.515 l
-28.689 -4.498 l
-28.689 -5.115 28.531 -5.585 28.218 -5.909 c
-27.902 -6.239 27.469 -6.408 26.91 -6.408 c
-26.663 -6.408 26.384 -6.342 26.072 -6.217 c
-25.767 -6.1 25.543 -5.953 25.396 -5.776 c
-25.719 -5.217 l
-26.061 -5.548 26.432 -5.718 26.836 -5.718 c
-27.513 -5.718 27.858 -5.35 27.88 -4.615 c
-27.88 -3.968 l
-27.615 -4.351 27.241 -4.542 26.763 -4.542 c
-26.241 -4.542 25.84 -4.351 25.558 -3.968 c
-25.271 -3.579 25.121 -3.021 25.102 -2.293 c
-h
-25.925 -2.204 m
-25.925 -2.763 26.002 -3.175 26.16 -3.439 c
-26.326 -3.696 26.594 -3.821 26.969 -3.821 c
-27.369 -3.821 27.675 -3.615 27.88 -3.204 c
-27.88 -0.72 l
-27.675 -0.319 27.373 -0.118 26.983 -0.118 c
-26.609 -0.118 26.341 -0.249 26.175 -0.514 c
-26.006 -0.771 25.925 -1.168 25.925 -1.705 c
-h
-30.592 -4.453 -0.808 4.968 re
-30.651 1.838 m
-30.651 1.698 30.611 1.58 30.534 1.485 c
-30.463 1.397 30.349 1.353 30.195 1.353 c
-30.037 1.353 29.919 1.397 29.842 1.485 c
-29.772 1.58 29.74 1.698 29.74 1.838 c
-29.74 1.974 29.772 2.088 29.842 2.176 c
-29.919 2.271 30.033 2.323 30.181 2.323 c
-30.335 2.323 30.453 2.271 30.534 2.176 c
-30.611 2.088 30.651 1.974 30.651 1.838 c
-32.849 1.721 m
-32.849 0.515 l
-33.598 0.515 l
-33.598 -0.147 l
-32.849 -0.147 l
-32.849 -3.218 l
-32.849 -3.417 32.878 -3.568 32.936 -3.674 c
-33.003 -3.773 33.117 -3.821 33.275 -3.821 c
-33.381 -3.821 33.487 -3.803 33.598 -3.763 c
-33.583 -4.453 l
-33.407 -4.512 33.219 -4.542 33.025 -4.542 c
-32.701 -4.542 32.456 -4.432 32.29 -4.203 c
-32.121 -3.968 32.04 -3.645 32.04 -3.233 c
-32.04 -0.147 l
-31.276 -0.147 l
-31.276 0.515 l
-32.04 0.515 l
-32.04 1.721 l
-h
-35.949 -1.955 -1.896 0.691 re
-39.103 -3.175 m
-39.103 -3.009 39.033 -2.863 38.897 -2.734 c
-38.769 -2.609 38.515 -2.462 38.133 -2.293 c
-37.699 -2.109 37.391 -1.951 37.206 -1.822 c
-37.03 -1.697 36.898 -1.554 36.81 -1.396 c
-36.722 -1.23 36.677 -1.036 36.677 -0.808 c
-36.677 -0.396 36.824 -0.058 37.119 0.206 c
-37.412 0.47 37.788 0.603 38.25 0.603 c
-38.739 0.603 39.132 0.46 39.426 0.177 c
-39.72 -0.099 39.868 -0.455 39.868 -0.897 c
-39.059 -0.897 l
-39.059 -0.672 38.978 -0.481 38.823 -0.323 c
-38.677 -0.168 38.486 -0.087 38.25 -0.087 c
-38.015 -0.087 37.828 -0.154 37.692 -0.278 c
-37.552 -0.396 37.486 -0.565 37.486 -0.779 c
-37.486 -0.947 37.534 -1.08 37.632 -1.176 c
-37.728 -1.275 37.971 -1.407 38.353 -1.572 c
-38.96 -1.807 39.371 -2.04 39.588 -2.263 c
-39.801 -2.491 39.911 -2.774 39.911 -3.116 c
-39.911 -3.549 39.757 -3.895 39.456 -4.159 c
-39.162 -4.417 38.765 -4.542 38.265 -4.542 c
-37.754 -4.542 37.339 -4.394 37.015 -4.101 c
-36.692 -3.806 36.531 -3.432 36.531 -2.969 c
-37.354 -2.969 l
-37.36 -3.245 37.445 -3.461 37.603 -3.615 c
-37.758 -3.773 37.979 -3.85 38.265 -3.85 c
-38.536 -3.85 38.742 -3.792 38.883 -3.674 c
-39.029 -3.549 39.103 -3.38 39.103 -3.175 c
-42.52 -3.85 m
-42.785 -3.85 42.995 -3.77 43.153 -3.601 c
-43.317 -3.436 43.409 -3.197 43.432 -2.881 c
-44.196 -2.881 l
-44.174 -3.362 44.005 -3.759 43.681 -4.072 c
-43.365 -4.388 42.979 -4.542 42.52 -4.542 c
-41.903 -4.542 41.433 -4.351 41.109 -3.968 c
-40.786 -3.579 40.624 -2.998 40.624 -2.234 c
-40.624 -1.69 l
-40.624 -0.937 40.786 -0.367 41.109 0.015 c
-41.433 0.405 41.896 0.603 42.505 0.603 c
-43.012 0.603 43.417 0.441 43.71 0.118 c
-44.012 -0.198 44.174 -0.631 44.196 -1.19 c
-43.432 -1.19 l
-43.409 -0.83 43.321 -0.554 43.167 -0.367 c
-43.009 -0.183 42.789 -0.087 42.505 -0.087 c
-42.153 -0.087 41.888 -0.213 41.711 -0.455 c
-41.535 -0.69 41.44 -1.08 41.433 -1.616 c
-41.433 -2.248 l
-41.433 -2.836 41.52 -3.256 41.697 -3.498 c
-41.873 -3.733 42.145 -3.85 42.52 -3.85 c
-45.732 0.515 m
-45.761 0.059 l
-46.062 0.42 46.459 0.603 46.952 0.603 c
-47.51 0.603 47.897 0.36 48.113 -0.118 c
-48.425 0.36 48.863 0.603 49.422 0.603 c
-50.34 0.603 50.81 0.034 50.833 -1.102 c
-50.833 -4.453 l
-50.024 -4.453 l
-50.024 -1.176 l
-50.024 -0.823 49.954 -0.558 49.819 -0.382 c
-49.69 -0.205 49.473 -0.118 49.171 -0.118 c
-48.925 -0.118 48.724 -0.213 48.569 -0.396 c
-48.422 -0.584 48.334 -0.823 48.304 -1.117 c
-48.304 -4.453 l
-47.496 -4.453 l
-47.496 -1.146 l
-47.485 -0.463 47.205 -0.118 46.658 -0.118 c
-46.247 -0.118 45.956 -0.323 45.79 -0.735 c
-45.79 -4.453 l
-44.982 -4.453 l
-44.982 0.515 l
-h
-51.818 -4.012 m
-51.818 -3.865 51.862 -3.744 51.949 -3.645 c
-52.038 -3.549 52.163 -3.498 52.332 -3.498 c
-52.508 -3.498 52.641 -3.549 52.728 -3.645 c
-52.824 -3.744 52.876 -3.865 52.876 -4.012 c
-52.876 -4.152 52.824 -4.27 52.728 -4.365 c
-52.641 -4.453 52.508 -4.498 52.332 -4.498 c
-52.163 -4.498 52.038 -4.453 51.949 -4.365 c
-51.862 -4.27 51.818 -4.152 51.818 -4.012 c
-55.874 -3.85 m
-56.139 -3.85 56.348 -3.77 56.506 -3.601 c
-56.672 -3.436 56.763 -3.197 56.786 -2.881 c
-57.55 -2.881 l
-57.528 -3.362 57.359 -3.759 57.036 -4.072 c
-56.72 -4.388 56.333 -4.542 55.874 -4.542 c
-55.257 -4.542 54.787 -4.351 54.463 -3.968 c
-54.14 -3.579 53.979 -2.998 53.979 -2.234 c
-53.979 -1.69 l
-53.979 -0.937 54.14 -0.367 54.463 0.015 c
-54.787 0.405 55.25 0.603 55.86 0.603 c
-56.367 0.603 56.771 0.441 57.065 0.118 c
-57.366 -0.198 57.528 -0.631 57.55 -1.19 c
-56.786 -1.19 l
-56.763 -0.83 56.676 -0.554 56.521 -0.367 c
-56.363 -0.183 56.142 -0.087 55.86 -0.087 c
-55.506 -0.087 55.242 -0.213 55.066 -0.455 c
-54.889 -0.69 54.794 -1.08 54.787 -1.616 c
-54.787 -2.248 l
-54.787 -2.836 54.875 -3.256 55.051 -3.498 c
-55.228 -3.733 55.5 -3.85 55.874 -3.85 c
-58.16 -1.734 m
-58.16 -1.022 58.329 -0.452 58.675 -0.029 c
-59.028 0.389 59.49 0.603 60.071 0.603 c
-60.648 0.603 61.108 0.397 61.453 -0.014 c
-61.806 -0.419 61.985 -0.977 61.997 -1.69 c
-61.997 -2.204 l
-61.997 -2.932 61.82 -3.505 61.467 -3.924 c
-61.122 -4.336 60.663 -4.542 60.086 -4.542 c
-59.505 -4.542 59.042 -4.343 58.689 -3.939 c
-58.344 -3.528 58.168 -2.977 58.16 -2.278 c
-h
-58.968 -2.204 m
-58.968 -2.715 59.064 -3.116 59.263 -3.41 c
-59.468 -3.704 59.74 -3.85 60.086 -3.85 c
-60.799 -3.85 61.166 -3.333 61.188 -2.293 c
-61.188 -1.734 l
-61.188 -1.227 61.085 -0.823 60.879 -0.529 c
-60.68 -0.235 60.412 -0.087 60.071 -0.087 c
-59.737 -0.087 59.468 -0.235 59.263 -0.529 c
-59.064 -0.823 58.968 -1.227 58.968 -1.734 c
-h
-63.617 0.515 m
-63.647 0.059 l
-63.948 0.42 64.345 0.603 64.837 0.603 c
-65.395 0.603 65.781 0.36 65.998 -0.118 c
-66.311 0.36 66.748 0.603 67.306 0.603 c
-68.225 0.603 68.696 0.034 68.717 -1.102 c
-68.717 -4.453 l
-67.909 -4.453 l
-67.909 -1.176 l
-67.909 -0.823 67.839 -0.558 67.703 -0.382 c
-67.575 -0.205 67.358 -0.118 67.057 -0.118 c
-66.81 -0.118 66.608 -0.213 66.454 -0.396 c
-66.307 -0.584 66.219 -0.823 66.189 -1.117 c
-66.189 -4.453 l
-65.381 -4.453 l
-65.381 -1.146 l
-65.37 -0.463 65.091 -0.118 64.543 -0.118 c
-64.131 -0.118 63.841 -0.323 63.676 -0.735 c
-63.676 -4.453 l
-62.868 -4.453 l
-62.868 0.515 l
-h
-69.879 -5.026 m
-69.188 -5.026 l
-71.525 2.234 l
-72.216 2.234 l
-h
-76.596 -2.204 m
-76.596 -2.98 76.453 -3.564 76.17 -3.954 c
-75.894 -4.347 75.494 -4.542 74.965 -4.542 c
-74.443 -4.542 74.053 -4.317 73.789 -3.865 c
-73.745 -4.453 l
-73.01 -4.453 l
-73.01 2.602 l
-73.818 2.602 l
-73.818 -0.029 l
-74.083 0.389 74.465 0.603 74.965 0.603 c
-75.501 0.603 75.909 0.412 76.185 0.03 c
-76.457 -0.353 76.596 -0.937 76.596 -1.72 c
-h
-75.788 -1.749 m
-75.788 -1.161 75.703 -0.746 75.538 -0.5 c
-75.38 -0.246 75.115 -0.118 74.745 -0.118 c
-74.332 -0.118 74.024 -0.345 73.818 -0.793 c
-73.818 -3.16 l
-74.013 -3.601 74.325 -3.821 74.759 -3.821 c
-75.119 -3.821 75.38 -3.696 75.538 -3.439 c
-75.703 -3.185 75.788 -2.788 75.788 -2.248 c
-h
-77.299 -1.734 m
-77.299 -1.022 77.467 -0.452 77.812 -0.029 c
-78.165 0.389 78.629 0.603 79.209 0.603 c
-79.786 0.603 80.245 0.397 80.591 -0.014 c
-80.944 -0.419 81.124 -0.977 81.135 -1.69 c
-81.135 -2.204 l
-81.135 -2.932 80.958 -3.505 80.605 -3.924 c
-80.26 -4.336 79.801 -4.542 79.223 -4.542 c
-78.643 -4.542 78.18 -4.343 77.827 -3.939 c
-77.482 -3.528 77.305 -2.977 77.299 -2.278 c
-h
-78.107 -2.204 m
-78.107 -2.715 78.203 -3.116 78.4 -3.41 c
-78.606 -3.704 78.878 -3.85 79.223 -3.85 c
-79.936 -3.85 80.304 -3.333 80.326 -2.293 c
-80.326 -1.734 l
-80.326 -1.227 80.223 -0.823 80.017 -0.529 c
-79.819 -0.235 79.551 -0.087 79.209 -0.087 c
-78.874 -0.087 78.606 -0.235 78.4 -0.529 c
-78.203 -0.823 78.107 -1.227 78.107 -1.734 c
-h
-81.829 -1.734 m
-81.829 -1.022 81.999 -0.452 82.344 -0.029 c
-82.697 0.389 83.159 0.603 83.74 0.603 c
-84.317 0.603 84.777 0.397 85.122 -0.014 c
-85.475 -0.419 85.654 -0.977 85.666 -1.69 c
-85.666 -2.204 l
-85.666 -2.932 85.49 -3.505 85.137 -3.924 c
-84.791 -4.336 84.332 -4.542 83.755 -4.542 c
-83.174 -4.542 82.711 -4.343 82.358 -3.939 c
-82.013 -3.528 81.837 -2.977 81.829 -2.278 c
-h
-82.637 -2.204 m
-82.637 -2.715 82.733 -3.116 82.932 -3.41 c
-83.138 -3.704 83.41 -3.85 83.755 -3.85 c
-84.468 -3.85 84.835 -3.333 84.857 -2.293 c
-84.857 -1.734 l
-84.857 -1.227 84.754 -0.823 84.549 -0.529 c
-84.35 -0.235 84.082 -0.087 83.74 -0.087 c
-83.406 -0.087 83.138 -0.235 82.932 -0.529 c
-82.733 -0.823 82.637 -1.227 82.637 -1.734 c
-h
-87.775 -2.175 m
-87.349 -2.674 l
-87.349 -4.453 l
-86.54 -4.453 l
-86.54 2.602 l
-87.349 2.602 l
-87.349 -1.616 l
-88.892 0.515 l
-89.862 0.515 l
-88.289 -1.558 l
-90.082 -4.453 l
-89.128 -4.453 l
-h
-f
-Q
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 636.6425 292.5541 cm
-0 0 m
-0 0.147 0.044 0.268 0.132 0.367 c
-0.22 0.463 0.345 0.515 0.515 0.515 c
-0.691 0.515 0.823 0.463 0.911 0.367 c
-1.007 0.268 1.058 0.147 1.058 0 c
-1.058 -0.14 1.007 -0.258 0.911 -0.353 c
-0.823 -0.441 0.691 -0.485 0.515 -0.485 c
-0.345 -0.485 0.22 -0.441 0.132 -0.353 c
-0.044 -0.258 0 -0.14 0 0 c
-f
-Q
-0.113 0.082 0.09 0 k
-535.667 375.475 238.665 -12.898 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 540.8555 368.6364 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.088 -0.5 c
--0.147 -0.647 -0.242 -0.775 -0.367 -0.882 c
--0.496 -0.992 -0.658 -1.081 -0.852 -1.147 c
--1.051 -1.205 -1.278 -1.243 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.358 -1.22 -2.543 -1.162 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.927 c
--3.127 -0.819 -3.23 -0.691 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.214 -3.484 -0.015 c
--2.66 0.132 l
--2.642 0.033 -2.616 -0.059 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.302 -2.454 -0.368 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.683 -1.992 0.691 -1.999 0.691 c
--2.167 0.727 -2.329 0.771 -2.484 0.823 c
--2.642 0.881 -2.786 0.959 -2.91 1.058 c
--3.039 1.153 -3.141 1.278 -3.218 1.425 c
--3.289 1.573 -3.322 1.756 -3.322 1.984 c
--3.322 2.179 -3.289 2.344 -3.218 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.836 c
--2.8 2.932 -2.645 3.002 -2.469 3.042 c
--2.293 3.09 -2.102 3.12 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.12 -1.128 3.09 -0.97 3.042 c
--0.804 2.991 -0.669 2.917 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.201 2.344 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.252 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.352 c
--1.294 1.311 -1.117 1.264 -0.941 1.205 c
--0.756 1.147 -0.595 1.066 -0.455 0.97 c
--0.319 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.454 c
--2.26 2.425 -2.318 2.385 -2.366 2.337 c
--2.406 2.296 -2.436 2.248 -2.454 2.19 c
--2.476 2.131 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.778 c
--2.41 1.72 -2.373 1.668 -2.322 1.631 c
--2.263 1.591 -2.2 1.558 -2.131 1.529 c
--2.065 1.5 -1.984 1.469 -1.896 1.44 c
-h
--0.837 -0.015 m
--0.837 0.091 -0.86 0.176 -0.897 0.235 c
--0.926 0.301 -0.977 0.357 -1.043 0.397 c
--1.102 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.529 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.53 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.015 c
-7.975 -0.25 m
-7.975 -0.42 7.934 -0.57 7.857 -0.706 c
-7.787 -0.834 7.684 -0.948 7.548 -1.044 c
-7.42 -1.132 7.258 -1.202 7.063 -1.249 c
-6.876 -1.297 6.659 -1.323 6.417 -1.323 c
-6.189 -1.323 5.991 -1.309 5.814 -1.279 c
-5.638 -1.249 5.48 -1.202 5.343 -1.132 c
-5.204 -1.055 5.093 -0.956 5.006 -0.838 c
-4.917 -0.721 4.848 -0.574 4.8 -0.397 c
-5.608 -0.279 l
-5.627 -0.379 5.656 -0.456 5.696 -0.515 c
-5.744 -0.574 5.802 -0.617 5.873 -0.647 c
-5.939 -0.676 6.02 -0.702 6.108 -0.721 c
-6.196 -0.732 6.299 -0.735 6.417 -0.735 c
-6.512 -0.735 6.608 -0.732 6.696 -0.721 c
-6.784 -0.702 6.861 -0.676 6.931 -0.647 c
-6.997 -0.617 7.049 -0.58 7.078 -0.53 c
-7.115 -0.482 7.136 -0.42 7.136 -0.339 c
-7.136 -0.243 7.107 -0.169 7.049 -0.118 c
-6.997 -0.07 6.931 -0.029 6.843 0 c
-6.755 0.037 6.644 0.066 6.519 0.088 c
-6.402 0.118 6.269 0.147 6.122 0.176 c
-5.983 0.213 5.843 0.253 5.696 0.293 c
-5.557 0.341 5.432 0.404 5.314 0.484 c
-5.204 0.562 5.116 0.661 5.05 0.779 c
-4.979 0.897 4.946 1.047 4.946 1.234 c
-4.946 1.389 4.976 1.532 5.035 1.66 c
-5.101 1.797 5.197 1.911 5.314 1.999 c
-5.439 2.087 5.597 2.153 5.785 2.205 c
-5.968 2.252 6.182 2.278 6.417 2.278 c
-6.6 2.278 6.776 2.256 6.945 2.219 c
-7.111 2.19 7.258 2.135 7.387 2.057 c
-7.512 1.988 7.622 1.889 7.71 1.764 c
-7.798 1.646 7.857 1.502 7.886 1.338 c
-7.092 1.264 l
-7.071 1.341 7.041 1.404 7.005 1.455 c
-6.964 1.514 6.916 1.558 6.857 1.587 c
-6.806 1.624 6.743 1.65 6.666 1.66 c
-6.585 1.668 6.504 1.675 6.417 1.675 c
-6.199 1.675 6.038 1.646 5.931 1.587 c
-5.821 1.536 5.77 1.448 5.77 1.323 c
-5.77 1.242 5.788 1.18 5.829 1.132 c
-5.876 1.08 5.939 1.043 6.02 1.014 c
-6.108 0.985 6.203 0.955 6.313 0.926 c
-6.421 0.904 6.541 0.881 6.681 0.852 c
-6.835 0.823 6.993 0.783 7.151 0.735 c
-7.306 0.683 7.445 0.621 7.563 0.544 c
-7.68 0.463 7.776 0.36 7.857 0.235 c
-7.934 0.106 7.975 -0.055 7.975 -0.25 c
-9.816 2.219 m
-9.816 0.264 l
-9.816 0.125 9.823 0 9.845 -0.118 c
-9.864 -0.228 9.897 -0.32 9.948 -0.397 c
-9.995 -0.478 10.055 -0.54 10.124 -0.588 c
-10.19 -0.628 10.275 -0.647 10.375 -0.647 c
-10.462 -0.647 10.543 -0.628 10.624 -0.588 c
-10.712 -0.54 10.786 -0.47 10.845 -0.382 c
-10.903 -0.287 10.947 -0.177 10.977 -0.059 c
-11.013 0.066 11.036 0.206 11.036 0.353 c
-11.036 2.219 l
-11.932 2.219 l
-11.932 -0.485 l
-11.932 -0.721 l
-11.94 -0.802 11.947 -0.879 11.947 -0.956 c
-11.947 -1.147 l
-11.954 -1.199 11.961 -1.235 11.961 -1.264 c
-11.109 -1.264 l
-11.098 -1.235 11.088 -1.199 11.08 -1.147 c
-11.08 -0.956 l
-11.08 -0.89 11.073 -0.819 11.065 -0.75 c
-11.065 -0.574 l
-11.05 -0.574 l
-10.932 -0.838 10.778 -1.029 10.595 -1.147 c
-10.419 -1.264 10.216 -1.323 9.992 -1.323 c
-9.787 -1.323 9.613 -1.286 9.478 -1.22 c
-9.338 -1.154 9.228 -1.058 9.139 -0.941 c
-9.058 -0.823 9 -0.688 8.963 -0.53 c
-8.933 -0.364 8.919 -0.187 8.919 0 c
-8.919 2.219 l
-h
-15.173 -1.264 m
-15.163 -1.246 15.152 -1.216 15.144 -1.176 c
-15.144 -1.128 15.136 -1.081 15.129 -1.029 c
-15.129 -0.97 15.122 -0.912 15.115 -0.852 c
-15.115 -0.691 l
-14.997 -0.927 14.853 -1.095 14.689 -1.191 c
-14.519 -1.279 14.321 -1.323 14.086 -1.323 c
-13.887 -1.323 13.711 -1.279 13.557 -1.191 c
-13.399 -1.103 13.266 -0.981 13.16 -0.823 c
-13.06 -0.658 12.983 -0.467 12.925 -0.25 c
-12.873 -0.037 12.851 0.206 12.851 0.47 c
-12.851 0.735 12.873 0.974 12.925 1.19 c
-12.983 1.415 13.06 1.606 13.16 1.764 c
-13.266 1.918 13.399 2.043 13.557 2.131 c
-13.722 2.227 13.913 2.278 14.13 2.278 c
-14.225 2.278 14.321 2.263 14.409 2.234 c
-14.504 2.212 14.6 2.179 14.689 2.131 c
-14.776 2.08 14.853 2.017 14.924 1.94 c
-15.001 1.859 15.063 1.768 15.115 1.66 c
-15.115 1.749 l
-15.115 1.896 l
-15.115 2.057 l
-15.115 2.234 l
-15.115 3.513 l
-16.011 3.513 l
-16.011 -0.5 l
-16.011 -0.676 16.015 -0.834 16.026 -0.97 c
-16.033 -1.099 16.041 -1.199 16.041 -1.264 c
-h
-15.129 0.484 m
-15.129 0.72 15.104 0.912 15.056 1.058 c
-15.015 1.213 14.961 1.338 14.894 1.425 c
-14.836 1.514 14.766 1.573 14.689 1.602 c
-14.608 1.639 14.531 1.66 14.454 1.66 c
-14.354 1.66 14.263 1.635 14.174 1.587 c
-14.093 1.547 14.027 1.477 13.968 1.382 c
-13.916 1.282 13.872 1.161 13.835 1.014 c
-13.806 0.867 13.792 0.683 13.792 0.47 c
-13.792 0.077 13.843 -0.217 13.953 -0.412 c
-14.071 -0.611 14.232 -0.706 14.438 -0.706 c
-14.516 -0.706 14.593 -0.688 14.674 -0.647 c
-14.751 -0.611 14.824 -0.544 14.894 -0.456 c
-14.961 -0.368 15.015 -0.246 15.056 -0.088 c
-15.104 0.066 15.129 0.257 15.129 0.484 c
-20.263 0.484 m
-20.263 0.209 20.226 -0.04 20.16 -0.264 c
-20.09 -0.482 19.987 -0.669 19.852 -0.823 c
-19.711 -0.981 19.535 -1.103 19.322 -1.191 c
-19.106 -1.279 18.852 -1.323 18.558 -1.323 c
-18.282 -1.323 18.036 -1.279 17.823 -1.191 c
-17.617 -1.103 17.444 -0.981 17.309 -0.823 c
-17.169 -0.669 17.066 -0.482 17 -0.264 c
-16.93 -0.04 16.897 0.209 16.897 0.484 c
-16.897 0.738 16.927 0.974 16.985 1.19 c
-17.051 1.415 17.154 1.606 17.294 1.764 c
-17.43 1.929 17.606 2.057 17.823 2.146 c
-18.036 2.234 18.294 2.278 18.587 2.278 c
-18.899 2.278 19.161 2.234 19.366 2.146 c
-19.58 2.057 19.752 1.929 19.881 1.764 c
-20.017 1.606 20.116 1.415 20.175 1.19 c
-20.233 0.974 20.263 0.738 20.263 0.484 c
-19.308 0.484 m
-19.308 0.691 19.293 0.867 19.263 1.014 c
-19.241 1.161 19.204 1.282 19.146 1.382 c
-19.087 1.477 19.013 1.547 18.926 1.587 c
-18.837 1.635 18.727 1.66 18.602 1.66 c
-18.338 1.66 18.146 1.562 18.028 1.367 c
-17.911 1.18 17.852 0.885 17.852 0.484 c
-17.852 0.062 17.911 -0.243 18.028 -0.426 c
-18.146 -0.614 18.323 -0.706 18.558 -0.706 c
-18.683 -0.706 18.797 -0.688 18.896 -0.647 c
-18.992 -0.599 19.073 -0.526 19.131 -0.426 c
-19.198 -0.331 19.241 -0.206 19.263 -0.059 c
-19.293 0.088 19.308 0.268 19.308 0.484 c
-26.136 -1.323 m
-25.966 -1.323 25.816 -1.301 25.679 -1.264 c
-25.551 -1.216 25.437 -1.147 25.342 -1.058 c
-25.253 -0.97 25.184 -0.864 25.136 -0.735 c
-25.084 -0.599 25.062 -0.449 25.062 -0.279 c
-25.062 -0.073 25.095 0.095 25.165 0.235 c
-25.232 0.382 25.327 0.492 25.444 0.573 c
-25.569 0.661 25.712 0.723 25.87 0.764 c
-26.036 0.801 26.213 0.827 26.4 0.837 c
-27.121 0.852 l
-27.121 1.029 l
-27.121 1.147 27.109 1.249 27.09 1.338 c
-27.069 1.425 27.036 1.492 26.988 1.543 c
-26.948 1.602 26.899 1.639 26.841 1.66 c
-26.782 1.679 26.716 1.69 26.65 1.69 c
-26.58 1.69 26.518 1.679 26.458 1.66 c
-26.407 1.65 26.36 1.624 26.312 1.587 c
-26.271 1.558 26.238 1.506 26.209 1.44 c
-26.186 1.382 26.172 1.301 26.165 1.205 c
-25.224 1.249 l
-25.253 1.396 25.297 1.532 25.356 1.66 c
-25.423 1.785 25.518 1.896 25.635 1.984 c
-25.753 2.08 25.893 2.153 26.061 2.205 c
-26.238 2.252 26.444 2.278 26.679 2.278 c
-27.121 2.278 27.451 2.167 27.678 1.955 c
-27.914 1.749 28.031 1.44 28.031 1.029 c
-28.031 -0.235 l
-28.031 -0.456 l
-28.039 -0.515 28.054 -0.57 28.075 -0.617 c
-28.094 -0.658 28.123 -0.691 28.164 -0.721 c
-28.201 -0.742 28.252 -0.75 28.311 -0.75 c
-28.376 -0.75 28.447 -0.746 28.517 -0.735 c
-28.517 -1.22 l
-28.457 -1.231 28.403 -1.243 28.355 -1.249 c
-28.314 -1.261 28.274 -1.268 28.237 -1.279 c
-28.197 -1.286 28.153 -1.294 28.105 -1.294 c
-28.054 -1.301 27.995 -1.309 27.929 -1.309 c
-27.701 -1.309 27.535 -1.257 27.429 -1.147 c
-27.318 -1.029 27.256 -0.864 27.237 -0.647 c
-27.223 -0.647 l
-27.154 -0.757 27.083 -0.852 27.017 -0.941 c
-26.948 -1.022 26.87 -1.087 26.782 -1.147 c
-26.693 -1.205 26.595 -1.249 26.488 -1.279 c
-26.389 -1.309 26.271 -1.323 26.136 -1.323 c
-27.121 0.353 m
-26.693 0.338 l
-26.595 0.338 26.503 0.33 26.415 0.324 c
-26.334 0.312 26.267 0.286 26.209 0.249 c
-26.15 0.209 26.099 0.151 26.061 0.073 c
-26.022 0.004 26.003 -0.088 26.003 -0.206 c
-26.003 -0.375 26.036 -0.497 26.106 -0.574 c
-26.172 -0.655 26.271 -0.691 26.4 -0.691 c
-26.506 -0.691 26.606 -0.669 26.693 -0.617 c
-26.789 -0.57 26.87 -0.507 26.929 -0.426 c
-26.995 -0.349 27.046 -0.262 27.076 -0.162 c
-27.106 -0.055 27.121 0.058 27.121 0.176 c
-h
-30.107 2.219 m
-30.115 2.198 30.122 2.165 30.122 2.117 c
-30.13 2.076 30.138 2.028 30.138 1.97 c
-30.144 1.918 30.152 1.866 30.152 1.808 c
-30.152 1.646 l
-30.167 1.646 l
-30.225 1.764 30.292 1.859 30.373 1.94 c
-30.45 2.017 30.534 2.08 30.622 2.131 c
-30.71 2.19 30.799 2.227 30.886 2.248 c
-30.982 2.267 31.081 2.278 31.181 2.278 c
-31.387 2.278 31.567 2.234 31.725 2.146 c
-31.879 2.057 32.008 1.929 32.106 1.764 c
-32.214 1.606 32.291 1.415 32.342 1.19 c
-32.401 0.974 32.43 0.738 32.43 0.484 c
-32.43 0.22 32.401 -0.026 32.342 -0.25 c
-32.291 -0.467 32.214 -0.658 32.106 -0.823 c
-32.008 -0.981 31.875 -1.103 31.709 -1.191 c
-31.551 -1.279 31.364 -1.323 31.152 -1.323 c
-31.052 -1.323 30.953 -1.312 30.857 -1.294 c
-30.758 -1.272 30.666 -1.243 30.578 -1.191 c
-30.497 -1.143 30.42 -1.081 30.343 -1 c
-30.273 -0.923 30.215 -0.831 30.167 -0.721 c
-30.152 -0.721 l
-30.152 -0.809 l
-30.159 -0.85 30.167 -0.897 30.167 -0.956 c
-30.167 -1.118 l
-30.167 -1.294 l
-30.167 -2.631 l
-29.255 -2.631 l
-29.255 1.455 l
-29.255 1.62 29.248 1.768 29.24 1.896 c
-29.24 2.219 l
-h
-30.152 0.455 m
-30.152 0.228 30.17 0.037 30.211 -0.118 c
-30.258 -0.264 30.313 -0.382 30.373 -0.47 c
-30.439 -0.559 30.512 -0.625 30.593 -0.661 c
-30.67 -0.702 30.747 -0.721 30.828 -0.721 c
-30.923 -0.721 31.011 -0.698 31.092 -0.647 c
-31.181 -0.599 31.247 -0.53 31.298 -0.441 c
-31.357 -0.345 31.401 -0.221 31.431 -0.073 c
-31.468 0.081 31.489 0.268 31.489 0.484 c
-31.489 0.874 31.431 1.168 31.313 1.367 c
-31.202 1.562 31.048 1.66 30.843 1.66 c
-30.762 1.66 30.685 1.639 30.608 1.602 c
-30.527 1.562 30.453 1.5 30.387 1.411 c
-30.317 1.323 30.258 1.198 30.211 1.043 c
-30.17 0.885 30.152 0.691 30.152 0.455 c
-33.907 1.602 m
-33.363 1.602 l
-33.363 2.219 l
-33.951 2.219 l
-34.231 3.116 l
-34.804 3.116 l
-34.804 2.219 l
-36.039 2.219 l
-36.039 1.602 l
-34.804 1.602 l
-34.804 -0.103 l
-34.804 -0.324 l
-34.811 -0.393 34.834 -0.456 34.863 -0.515 c
-34.9 -0.566 34.955 -0.611 35.025 -0.647 c
-35.102 -0.676 35.216 -0.691 35.362 -0.691 c
-35.499 -0.691 35.634 -0.688 35.774 -0.676 c
-35.91 -0.658 36.043 -0.632 36.171 -0.603 c
-36.171 -1.205 l
-36.091 -1.216 36.013 -1.231 35.936 -1.249 c
-35.855 -1.261 35.778 -1.268 35.701 -1.279 c
-35.62 -1.286 35.532 -1.294 35.436 -1.294 c
-35.348 -1.301 35.249 -1.309 35.142 -1.309 c
-34.955 -1.309 34.793 -1.294 34.657 -1.264 c
-34.528 -1.228 34.414 -1.183 34.319 -1.132 c
-34.231 -1.085 34.157 -1.025 34.098 -0.956 c
-34.04 -0.879 33.995 -0.802 33.966 -0.721 c
-33.937 -0.632 33.915 -0.544 33.907 -0.456 c
-33.897 -0.36 33.893 -0.264 33.893 -0.177 c
-h
-37.953 0.837 1.867 -0.793 re
-37.953 0.044 m
-42.955 -2.66 m
-42.738 -2.66 42.547 -2.635 42.381 -2.587 c
-42.212 -2.547 42.073 -2.484 41.955 -2.396 c
-41.837 -2.315 41.739 -2.22 41.662 -2.103 c
-41.591 -1.985 41.544 -1.856 41.514 -1.72 c
-42.41 -1.617 l
-42.447 -1.754 42.518 -1.86 42.616 -1.941 c
-42.712 -2.028 42.838 -2.072 42.984 -2.072 c
-43.073 -2.072 43.153 -2.058 43.234 -2.028 c
-43.311 -1.999 43.381 -1.945 43.44 -1.867 c
-43.499 -1.797 43.543 -1.706 43.572 -1.588 c
-43.609 -1.47 43.631 -1.323 43.631 -1.147 c
-43.631 -0.956 l
-43.631 -0.89 43.634 -0.831 43.646 -0.779 c
-43.646 -0.588 l
-43.631 -0.588 l
-43.532 -0.816 43.388 -0.977 43.204 -1.073 c
-43.017 -1.172 42.811 -1.22 42.587 -1.22 c
-42.381 -1.22 42.198 -1.183 42.044 -1.103 c
-41.897 -1.014 41.768 -0.897 41.662 -0.75 c
-41.562 -0.595 41.488 -0.412 41.44 -0.206 c
-41.389 0.008 41.367 0.243 41.367 0.5 c
-41.367 0.771 41.389 1.018 41.44 1.234 c
-41.5 1.448 41.581 1.631 41.691 1.778 c
-41.797 1.932 41.93 2.05 42.088 2.131 c
-42.242 2.219 42.429 2.263 42.646 2.263 c
-42.742 2.263 42.84 2.252 42.94 2.234 c
-43.035 2.212 43.123 2.179 43.204 2.131 c
-43.293 2.08 43.37 2.017 43.44 1.94 c
-43.517 1.859 43.58 1.768 43.631 1.66 c
-43.646 1.66 l
-43.646 1.808 l
-43.653 1.866 43.661 1.918 43.661 1.97 c
-43.667 2.028 43.675 2.076 43.675 2.117 c
-43.682 2.165 43.694 2.198 43.704 2.219 c
-44.557 2.219 l
-44.546 2.138 44.535 2.028 44.527 1.881 c
-44.527 1.411 l
-44.527 -1.162 l
-44.527 -1.415 44.49 -1.636 44.424 -1.823 c
-44.355 -2.007 44.251 -2.161 44.116 -2.278 c
-43.976 -2.404 43.811 -2.499 43.616 -2.558 c
-43.418 -2.624 43.197 -2.66 42.955 -2.66 c
-43.646 0.529 m
-43.646 0.742 43.62 0.918 43.572 1.058 c
-43.532 1.205 43.476 1.323 43.41 1.411 c
-43.351 1.5 43.282 1.558 43.204 1.587 c
-43.123 1.624 43.046 1.646 42.969 1.646 c
-42.87 1.646 42.778 1.62 42.69 1.573 c
-42.609 1.532 42.543 1.462 42.485 1.367 c
-42.433 1.278 42.389 1.161 42.352 1.014 c
-42.323 0.874 42.308 0.706 42.308 0.5 c
-42.308 0.125 42.367 -0.154 42.485 -0.339 c
-42.602 -0.515 42.763 -0.603 42.969 -0.603 c
-43.035 -0.603 43.109 -0.588 43.19 -0.559 c
-43.278 -0.522 43.351 -0.463 43.41 -0.382 c
-43.476 -0.294 43.532 -0.177 43.572 -0.029 c
-43.62 0.118 43.646 0.301 43.646 0.529 c
-47.044 -1.323 m
-46.788 -1.323 46.56 -1.286 46.354 -1.22 c
-46.148 -1.143 45.972 -1.029 45.824 -0.882 c
-45.678 -0.728 45.56 -0.537 45.472 -0.309 c
-45.391 -0.085 45.354 0.18 45.354 0.484 c
-45.354 0.816 45.398 1.095 45.487 1.323 c
-45.582 1.558 45.711 1.741 45.869 1.881 c
-46.034 2.017 46.221 2.117 46.427 2.175 c
-46.633 2.242 46.842 2.278 47.06 2.278 c
-47.331 2.278 47.567 2.227 47.765 2.131 c
-47.971 2.043 48.136 1.911 48.265 1.735 c
-48.401 1.565 48.5 1.359 48.559 1.117 c
-48.625 0.881 48.662 0.617 48.662 0.324 c
-48.662 0.309 l
-46.295 0.309 l
-46.295 0.162 46.31 0.022 46.339 -0.103 c
-46.376 -0.231 46.431 -0.345 46.501 -0.441 c
-46.567 -0.53 46.651 -0.599 46.751 -0.647 c
-46.846 -0.698 46.96 -0.721 47.089 -0.721 c
-47.243 -0.721 47.383 -0.688 47.501 -0.617 c
-47.625 -0.551 47.713 -0.449 47.765 -0.309 c
-48.602 -0.382 l
-48.573 -0.482 48.519 -0.588 48.441 -0.706 c
-48.361 -0.816 48.257 -0.919 48.132 -1.014 c
-48.014 -1.103 47.86 -1.176 47.677 -1.235 c
-47.501 -1.294 47.287 -1.323 47.044 -1.323 c
-47.044 1.705 m
-46.956 1.705 46.869 1.69 46.78 1.66 c
-46.692 1.631 46.611 1.579 46.545 1.514 c
-46.475 1.444 46.416 1.356 46.368 1.249 c
-46.328 1.139 46.31 1.014 46.31 0.867 c
-47.779 0.867 l
-47.779 1.003 47.754 1.124 47.706 1.234 c
-47.665 1.341 47.611 1.429 47.544 1.5 c
-47.486 1.565 47.412 1.617 47.324 1.646 c
-47.235 1.683 47.14 1.705 47.044 1.705 c
-50.15 1.602 m
-49.606 1.602 l
-49.606 2.219 l
-50.194 2.219 l
-50.474 3.116 l
-51.046 3.116 l
-51.046 2.219 l
-52.282 2.219 l
-52.282 1.602 l
-51.046 1.602 l
-51.046 -0.103 l
-51.046 -0.324 l
-51.054 -0.393 51.076 -0.456 51.106 -0.515 c
-51.142 -0.566 51.197 -0.611 51.267 -0.647 c
-51.345 -0.676 51.458 -0.691 51.605 -0.691 c
-51.741 -0.691 51.877 -0.688 52.016 -0.676 c
-52.153 -0.658 52.285 -0.632 52.413 -0.603 c
-52.413 -1.205 l
-52.332 -1.216 52.255 -1.231 52.178 -1.249 c
-52.097 -1.261 52.02 -1.268 51.943 -1.279 c
-51.862 -1.286 51.775 -1.294 51.679 -1.294 c
-51.59 -1.301 51.491 -1.309 51.384 -1.309 c
-51.197 -1.309 51.035 -1.294 50.9 -1.264 c
-50.771 -1.228 50.657 -1.183 50.561 -1.132 c
-50.474 -1.085 50.4 -1.025 50.341 -0.956 c
-50.283 -0.879 50.238 -0.802 50.208 -0.721 c
-50.179 -0.632 50.157 -0.544 50.15 -0.456 c
-50.139 -0.36 50.135 -0.264 50.135 -0.177 c
-h
-59.774 -0.647 m
-60.906 -0.647 l
-60.906 -1.264 l
-57.599 -1.264 l
-57.599 -0.647 l
-58.863 -0.647 l
-58.863 1.602 l
-57.936 1.602 l
-57.936 2.219 l
-59.774 2.219 l
-h
-58.863 3.513 0.911 -0.676 re
-58.863 2.836 m
-63.923 -1.264 m
-63.923 0.72 l
-63.923 1.022 63.879 1.242 63.791 1.382 c
-63.71 1.529 63.574 1.602 63.379 1.602 c
-63.268 1.602 63.166 1.577 63.07 1.529 c
-62.983 1.477 62.902 1.411 62.835 1.323 c
-62.776 1.234 62.725 1.124 62.688 0.999 c
-62.659 0.881 62.644 0.75 62.644 0.602 c
-62.644 -1.264 l
-61.732 -1.264 l
-61.732 1.44 l
-61.732 1.66 l
-61.732 1.749 61.726 1.826 61.718 1.896 c
-61.718 2.087 l
-61.718 2.219 l
-62.57 2.219 l
-62.578 2.19 62.586 2.146 62.586 2.087 c
-62.586 1.896 l
-62.593 1.826 62.6 1.756 62.6 1.69 c
-62.607 1.62 62.615 1.565 62.615 1.529 c
-62.63 1.529 l
-62.747 1.793 62.898 1.984 63.085 2.102 c
-63.268 2.219 63.49 2.278 63.746 2.278 c
-63.93 2.278 64.092 2.248 64.232 2.19 c
-64.367 2.131 64.481 2.043 64.57 1.926 c
-64.658 1.808 64.72 1.664 64.76 1.5 c
-64.808 1.341 64.834 1.153 64.834 0.941 c
-64.834 -1.264 l
-h
-68.895 -0.25 m
-68.895 -0.42 68.855 -0.57 68.777 -0.706 c
-68.708 -0.834 68.604 -0.948 68.469 -1.044 c
-68.34 -1.132 68.178 -1.202 67.983 -1.249 c
-67.796 -1.297 67.579 -1.323 67.337 -1.323 c
-67.109 -1.323 66.91 -1.309 66.734 -1.279 c
-66.557 -1.249 66.399 -1.202 66.264 -1.132 c
-66.124 -1.055 66.014 -0.956 65.926 -0.838 c
-65.838 -0.721 65.768 -0.574 65.72 -0.397 c
-66.528 -0.279 l
-66.547 -0.379 66.576 -0.456 66.617 -0.515 c
-66.665 -0.574 66.723 -0.617 66.792 -0.647 c
-66.859 -0.676 66.94 -0.702 67.028 -0.721 c
-67.116 -0.732 67.219 -0.735 67.337 -0.735 c
-67.432 -0.735 67.528 -0.732 67.616 -0.721 c
-67.704 -0.702 67.781 -0.676 67.851 -0.647 c
-67.918 -0.617 67.968 -0.58 67.999 -0.53 c
-68.035 -0.482 68.057 -0.42 68.057 -0.339 c
-68.057 -0.243 68.028 -0.169 67.968 -0.118 c
-67.918 -0.07 67.851 -0.029 67.763 0 c
-67.675 0.037 67.565 0.066 67.44 0.088 c
-67.322 0.118 67.19 0.147 67.043 0.176 c
-66.904 0.213 66.763 0.253 66.617 0.293 c
-66.476 0.341 66.352 0.404 66.235 0.484 c
-66.124 0.562 66.036 0.661 65.969 0.779 c
-65.9 0.897 65.867 1.047 65.867 1.234 c
-65.867 1.389 65.896 1.532 65.955 1.66 c
-66.021 1.797 66.117 1.911 66.235 1.999 c
-66.359 2.087 66.517 2.153 66.705 2.205 c
-66.888 2.252 67.102 2.278 67.337 2.278 c
-67.521 2.278 67.697 2.256 67.866 2.219 c
-68.031 2.19 68.178 2.135 68.307 2.057 c
-68.432 1.988 68.542 1.889 68.63 1.764 c
-68.718 1.646 68.777 1.502 68.807 1.338 c
-68.013 1.264 l
-67.991 1.341 67.962 1.404 67.924 1.455 c
-67.885 1.514 67.837 1.558 67.777 1.587 c
-67.727 1.624 67.664 1.65 67.586 1.66 c
-67.506 1.668 67.425 1.675 67.337 1.675 c
-67.12 1.675 66.958 1.646 66.852 1.587 c
-66.742 1.536 66.69 1.448 66.69 1.323 c
-66.69 1.242 66.709 1.18 66.748 1.132 c
-66.796 1.08 66.859 1.043 66.94 1.014 c
-67.028 0.985 67.124 0.955 67.234 0.926 c
-67.34 0.904 67.461 0.881 67.602 0.852 c
-67.756 0.823 67.914 0.783 68.072 0.735 c
-68.226 0.683 68.365 0.621 68.483 0.544 c
-68.601 0.463 68.697 0.36 68.777 0.235 c
-68.855 0.106 68.895 -0.055 68.895 -0.25 c
-70.457 1.602 m
-69.913 1.602 l
-69.913 2.219 l
-70.501 2.219 l
-70.78 3.116 l
-71.353 3.116 l
-71.353 2.219 l
-72.588 2.219 l
-72.588 1.602 l
-71.353 1.602 l
-71.353 -0.103 l
-71.353 -0.324 l
-71.361 -0.393 71.382 -0.456 71.412 -0.515 c
-71.449 -0.566 71.504 -0.611 71.573 -0.647 c
-71.651 -0.676 71.765 -0.691 71.912 -0.691 c
-72.047 -0.691 72.184 -0.688 72.323 -0.676 c
-72.46 -0.658 72.591 -0.632 72.72 -0.603 c
-72.72 -1.205 l
-72.639 -1.216 72.562 -1.231 72.485 -1.249 c
-72.404 -1.261 72.327 -1.268 72.25 -1.279 c
-72.169 -1.286 72.08 -1.294 71.985 -1.294 c
-71.897 -1.301 71.798 -1.309 71.691 -1.309 c
-71.504 -1.309 71.342 -1.294 71.206 -1.264 c
-71.078 -1.228 70.964 -1.183 70.868 -1.132 c
-70.78 -1.085 70.707 -1.025 70.648 -0.956 c
-70.589 -0.879 70.545 -0.802 70.515 -0.721 c
-70.486 -0.632 70.464 -0.544 70.457 -0.456 c
-70.445 -0.36 70.442 -0.264 70.442 -0.177 c
-h
-74.873 -1.323 m
-74.705 -1.323 74.554 -1.301 74.418 -1.264 c
-74.289 -1.216 74.175 -1.147 74.079 -1.058 c
-73.992 -0.97 73.922 -0.864 73.874 -0.735 c
-73.823 -0.599 73.801 -0.449 73.801 -0.279 c
-73.801 -0.073 73.834 0.095 73.904 0.235 c
-73.969 0.382 74.065 0.492 74.183 0.573 c
-74.308 0.661 74.451 0.723 74.609 0.764 c
-74.775 0.801 74.951 0.827 75.138 0.837 c
-75.858 0.852 l
-75.858 1.029 l
-75.858 1.147 75.847 1.249 75.829 1.338 c
-75.807 1.425 75.774 1.492 75.726 1.543 c
-75.685 1.602 75.638 1.639 75.579 1.66 c
-75.521 1.679 75.454 1.69 75.388 1.69 c
-75.318 1.69 75.255 1.679 75.197 1.66 c
-75.145 1.65 75.098 1.624 75.05 1.587 c
-75.01 1.558 74.977 1.506 74.947 1.44 c
-74.925 1.382 74.91 1.301 74.903 1.205 c
-73.962 1.249 l
-73.992 1.396 74.036 1.532 74.094 1.66 c
-74.16 1.785 74.256 1.896 74.374 1.984 c
-74.492 2.08 74.631 2.153 74.8 2.205 c
-74.977 2.252 75.182 2.278 75.417 2.278 c
-75.858 2.278 76.19 2.167 76.417 1.955 c
-76.652 1.749 76.77 1.44 76.77 1.029 c
-76.77 -0.235 l
-76.77 -0.456 l
-76.778 -0.515 76.792 -0.57 76.814 -0.617 c
-76.832 -0.658 76.861 -0.691 76.902 -0.721 c
-76.939 -0.742 76.99 -0.75 77.049 -0.75 c
-77.115 -0.75 77.185 -0.746 77.254 -0.735 c
-77.254 -1.22 l
-77.196 -1.231 77.141 -1.243 77.094 -1.249 c
-77.053 -1.261 77.013 -1.268 76.976 -1.279 c
-76.936 -1.286 76.891 -1.294 76.843 -1.294 c
-76.792 -1.301 76.733 -1.309 76.667 -1.309 c
-76.439 -1.309 76.274 -1.257 76.167 -1.147 c
-76.057 -1.029 75.995 -0.864 75.976 -0.647 c
-75.961 -0.647 l
-75.891 -0.757 75.822 -0.852 75.756 -0.941 c
-75.685 -1.022 75.608 -1.087 75.521 -1.147 c
-75.432 -1.205 75.333 -1.249 75.226 -1.279 c
-75.127 -1.309 75.01 -1.323 74.873 -1.323 c
-75.858 0.353 m
-75.432 0.338 l
-75.333 0.338 75.241 0.33 75.153 0.324 c
-75.072 0.312 75.006 0.286 74.947 0.249 c
-74.889 0.209 74.837 0.151 74.8 0.073 c
-74.76 0.004 74.742 -0.088 74.742 -0.206 c
-74.742 -0.375 74.775 -0.497 74.844 -0.574 c
-74.91 -0.655 75.01 -0.691 75.138 -0.691 c
-75.245 -0.691 75.344 -0.669 75.432 -0.617 c
-75.528 -0.57 75.608 -0.507 75.667 -0.426 c
-75.733 -0.349 75.785 -0.262 75.814 -0.162 c
-75.843 -0.055 75.858 0.058 75.858 0.176 c
-h
-80.08 -0.647 m
-81.213 -0.647 l
-81.213 -1.264 l
-77.905 -1.264 l
-77.905 -0.647 l
-79.17 -0.647 l
-79.17 2.896 l
-78.243 2.896 l
-78.243 3.513 l
-80.08 3.513 l
-h
-84.142 -0.647 m
-85.273 -0.647 l
-85.273 -1.264 l
-81.966 -1.264 l
-81.966 -0.647 l
-83.23 -0.647 l
-83.23 2.896 l
-82.304 2.896 l
-82.304 3.513 l
-84.142 3.513 l
-h
-91.689 -2.66 m
-91.473 -2.66 91.282 -2.635 91.116 -2.587 c
-90.947 -2.547 90.808 -2.484 90.69 -2.396 c
-90.573 -2.315 90.473 -2.22 90.396 -2.103 c
-90.326 -1.985 90.278 -1.856 90.249 -1.72 c
-91.145 -1.617 l
-91.182 -1.754 91.252 -1.86 91.351 -1.941 c
-91.446 -2.028 91.572 -2.072 91.718 -2.072 c
-91.807 -2.072 91.888 -2.058 91.969 -2.028 c
-92.046 -1.999 92.115 -1.945 92.175 -1.867 c
-92.233 -1.797 92.277 -1.706 92.306 -1.588 c
-92.344 -1.47 92.366 -1.323 92.366 -1.147 c
-92.366 -0.956 l
-92.366 -0.89 92.369 -0.831 92.381 -0.779 c
-92.381 -0.588 l
-92.366 -0.588 l
-92.267 -0.816 92.123 -0.977 91.939 -1.073 c
-91.752 -1.172 91.546 -1.22 91.322 -1.22 c
-91.116 -1.22 90.933 -1.183 90.778 -1.103 c
-90.631 -1.014 90.502 -0.897 90.396 -0.75 c
-90.297 -0.595 90.224 -0.412 90.176 -0.206 c
-90.124 0.008 90.102 0.243 90.102 0.5 c
-90.102 0.771 90.124 1.018 90.176 1.234 c
-90.234 1.448 90.315 1.631 90.425 1.778 c
-90.532 1.932 90.664 2.05 90.822 2.131 c
-90.976 2.219 91.164 2.263 91.381 2.263 c
-91.477 2.263 91.575 2.252 91.675 2.234 c
-91.77 2.212 91.859 2.179 91.939 2.131 c
-92.028 2.08 92.105 2.017 92.175 1.94 c
-92.252 1.859 92.314 1.768 92.366 1.66 c
-92.381 1.66 l
-92.381 1.808 l
-92.387 1.866 92.395 1.918 92.395 1.97 c
-92.402 2.028 92.41 2.076 92.41 2.117 c
-92.417 2.165 92.428 2.198 92.439 2.219 c
-93.291 2.219 l
-93.281 2.138 93.27 2.028 93.262 1.881 c
-93.262 1.411 l
-93.262 -1.162 l
-93.262 -1.415 93.225 -1.636 93.16 -1.823 c
-93.089 -2.007 92.986 -2.161 92.851 -2.278 c
-92.711 -2.404 92.545 -2.499 92.35 -2.558 c
-92.152 -2.624 91.932 -2.66 91.689 -2.66 c
-92.381 0.529 m
-92.381 0.742 92.354 0.918 92.306 1.058 c
-92.267 1.205 92.211 1.323 92.145 1.411 c
-92.086 1.5 92.017 1.558 91.939 1.587 c
-91.859 1.624 91.781 1.646 91.704 1.646 c
-91.604 1.646 91.513 1.62 91.425 1.573 c
-91.344 1.532 91.278 1.462 91.219 1.367 c
-91.168 1.278 91.124 1.161 91.087 1.014 c
-91.057 0.874 91.043 0.706 91.043 0.5 c
-91.043 0.125 91.101 -0.154 91.219 -0.339 c
-91.336 -0.515 91.498 -0.603 91.704 -0.603 c
-91.77 -0.603 91.843 -0.588 91.924 -0.559 c
-92.013 -0.522 92.086 -0.463 92.145 -0.382 c
-92.211 -0.294 92.267 -0.177 92.306 -0.029 c
-92.354 0.118 92.381 0.301 92.381 0.529 c
-96.327 -0.647 m
-97.459 -0.647 l
-97.459 -1.264 l
-94.151 -1.264 l
-94.151 -0.647 l
-95.415 -0.647 l
-95.415 1.602 l
-94.49 1.602 l
-94.49 2.219 l
-96.327 2.219 l
-h
-95.415 3.513 0.912 -0.676 re
-95.415 2.836 m
-98.889 1.602 m
-98.344 1.602 l
-98.344 2.219 l
-98.932 2.219 l
-99.211 3.116 l
-99.785 3.116 l
-99.785 2.219 l
-101.019 2.219 l
-101.019 1.602 l
-99.785 1.602 l
-99.785 -0.103 l
-99.785 -0.324 l
-99.793 -0.393 99.814 -0.456 99.844 -0.515 c
-99.88 -0.566 99.936 -0.611 100.005 -0.647 c
-100.082 -0.676 100.196 -0.691 100.343 -0.691 c
-100.479 -0.691 100.615 -0.688 100.755 -0.676 c
-100.891 -0.658 101.023 -0.632 101.152 -0.603 c
-101.152 -1.205 l
-101.071 -1.216 100.994 -1.231 100.917 -1.249 c
-100.836 -1.261 100.759 -1.268 100.682 -1.279 c
-100.601 -1.286 100.512 -1.294 100.417 -1.294 c
-100.329 -1.301 100.229 -1.309 100.123 -1.309 c
-99.936 -1.309 99.774 -1.294 99.637 -1.264 c
-99.51 -1.228 99.396 -1.183 99.3 -1.132 c
-99.211 -1.085 99.138 -1.025 99.08 -0.956 c
-99.02 -0.879 98.976 -0.802 98.947 -0.721 c
-98.918 -0.632 98.895 -0.544 98.889 -0.456 c
-98.877 -0.36 98.874 -0.264 98.874 -0.177 c
-h
-f
-Q
-0.793 0.801 0.129 0.016 k
-35.668 201.199 238.665 -21.457 re
-f
-0 0 0 0 k
-q 1 0 0 1 164.9238 185.7106 cm
-0 0 m
-0 9.363 l
-2.896 9.363 l
-3.873 9.363 4.619 9.142 5.13 8.702 c
-5.637 8.268 5.895 7.632 5.895 6.79 c
-5.895 6.32 5.785 5.913 5.571 5.57 c
-5.365 5.225 5.075 4.976 4.704 4.821 c
-5.122 4.692 5.446 4.446 5.674 4.086 c
-5.909 3.733 6.026 3.285 6.026 2.748 c
-6.026 1.844 5.777 1.161 5.277 0.691 c
-4.777 0.228 4.05 0 3.102 0 c
-h
-1.897 4.072 m
-1.897 1.572 l
-3.102 1.572 l
-3.443 1.572 3.705 1.675 3.881 1.881 c
-4.057 2.094 4.145 2.395 4.145 2.778 c
-4.145 3.619 3.836 4.049 3.219 4.072 c
-h
-1.897 5.453 m
-2.882 5.453 l
-3.616 5.453 3.983 5.835 3.983 6.599 c
-3.983 7.018 3.896 7.324 3.719 7.511 c
-3.55 7.694 3.278 7.79 2.896 7.79 c
-1.897 7.79 l
-h
-7.655 0.926 m
-7.655 1.219 7.75 1.458 7.948 1.646 c
-8.143 1.83 8.397 1.925 8.713 1.925 c
-9.014 1.925 9.264 1.83 9.463 1.646 c
-9.668 1.458 9.771 1.219 9.771 0.926 c
-9.771 0.621 9.668 0.374 9.463 0.191 c
-9.264 0.014 9.014 -0.074 8.713 -0.074 c
-8.408 -0.074 8.154 0.018 7.948 0.205 c
-7.75 0.389 7.655 0.631 7.655 0.926 c
-16.644 0 -1.897 9.363 re
-24.702 1.058 m
-24.338 0.665 23.894 0.367 23.364 0.161 c
-22.836 -0.034 22.254 -0.133 21.629 -0.133 c
-20.55 -0.133 19.711 0.198 19.116 0.866 c
-18.518 1.532 18.212 2.502 18.205 3.777 c
-18.205 5.468 l
-18.205 6.761 18.485 7.754 19.042 8.452 c
-19.609 9.146 20.432 9.495 21.512 9.495 c
-22.53 9.495 23.295 9.238 23.805 8.731 c
-24.324 8.231 24.621 7.445 24.702 6.379 c
-22.865 6.379 l
-22.813 6.975 22.692 7.382 22.497 7.599 c
-22.298 7.812 21.99 7.922 21.571 7.922 c
-21.06 7.922 20.689 7.735 20.454 7.364 c
-20.226 6.989 20.108 6.397 20.101 5.585 c
-20.101 3.881 l
-20.101 3.027 20.226 2.403 20.484 2.013 c
-20.737 1.631 21.152 1.44 21.733 1.44 c
-22.104 1.44 22.408 1.514 22.644 1.66 c
-22.805 1.778 l
-22.805 3.498 l
-21.483 3.498 l
-21.483 4.924 l
-24.702 4.924 l
-h
-32.831 0 m
-30.934 0 l
-28.17 6.144 l
-28.17 0 l
-26.275 0 l
-26.275 9.363 l
-28.17 9.363 l
-30.934 3.218 l
-30.934 9.363 l
-32.831 9.363 l
-h
-41.183 3.836 m
-41.183 2.58 40.882 1.606 40.286 0.911 c
-39.688 0.213 38.865 -0.133 37.817 -0.133 c
-36.766 -0.133 35.939 0.209 35.333 0.897 c
-34.734 1.591 34.429 2.557 34.422 3.792 c
-34.422 5.394 l
-34.422 6.676 34.719 7.68 35.318 8.407 c
-35.914 9.132 36.744 9.495 37.803 9.495 c
-38.838 9.495 39.658 9.135 40.257 8.422 c
-40.864 7.717 41.172 6.721 41.183 5.438 c
-h
-39.287 5.409 m
-39.287 6.25 39.162 6.879 38.919 7.291 c
-38.684 7.702 38.31 7.908 37.803 7.908 c
-37.302 7.908 36.928 7.706 36.685 7.305 c
-36.45 6.912 36.325 6.312 36.318 5.512 c
-36.318 3.836 l
-36.318 3.02 36.439 2.418 36.685 2.028 c
-36.928 1.635 37.306 1.44 37.817 1.44 c
-38.306 1.44 38.67 1.631 38.905 2.013 c
-39.147 2.395 39.276 2.983 39.287 3.777 c
-h
-45.593 3.424 m
-44.652 3.424 l
-44.652 0 l
-42.771 0 l
-42.771 9.363 l
-45.784 9.363 l
-46.732 9.363 47.463 9.117 47.974 8.628 c
-48.492 8.136 48.753 7.441 48.753 6.541 c
-48.753 5.294 48.301 4.424 47.401 3.924 c
-49.032 0.087 l
-49.032 0 l
-47.004 0 l
-h
-44.652 4.997 m
-45.726 4.997 l
-46.108 4.997 46.391 5.119 46.578 5.365 c
-46.761 5.618 46.857 5.957 46.857 6.379 c
-46.857 7.32 46.493 7.79 45.769 7.79 c
-44.652 7.79 l
-h
-52.255 0 -1.897 9.363 re
-60.505 0 m
-58.609 0 l
-55.845 6.144 l
-55.845 0 l
-53.95 0 l
-53.95 9.363 l
-55.845 9.363 l
-58.609 3.218 l
-58.609 9.363 l
-60.505 9.363 l
-h
-68.622 1.058 m
-68.259 0.665 67.814 0.367 67.285 0.161 c
-66.756 -0.034 66.175 -0.133 65.551 -0.133 c
-64.47 -0.133 63.633 0.198 63.037 0.866 c
-62.438 1.532 62.133 2.502 62.125 3.777 c
-62.125 5.468 l
-62.125 6.761 62.405 7.754 62.964 8.452 c
-63.529 9.146 64.352 9.495 65.433 9.495 c
-66.451 9.495 67.215 9.238 67.726 8.731 c
-68.244 8.231 68.541 7.445 68.622 6.379 c
-66.785 6.379 l
-66.734 6.975 66.613 7.382 66.418 7.599 c
-66.22 7.812 65.911 7.922 65.491 7.922 c
-64.981 7.922 64.61 7.735 64.375 7.364 c
-64.147 6.989 64.03 6.397 64.022 5.585 c
-64.022 3.881 l
-64.022 3.027 64.147 2.403 64.404 2.013 c
-64.658 1.631 65.073 1.44 65.653 1.44 c
-66.025 1.44 66.33 1.514 66.565 1.66 c
-66.727 1.778 l
-66.727 3.498 l
-65.404 3.498 l
-65.404 4.924 l
-68.622 4.924 l
-h
-78.151 3.821 m
-75.211 3.821 l
-75.211 0 l
-73.316 0 l
-73.316 9.363 l
-78.504 9.363 l
-78.504 7.79 l
-75.211 7.79 l
-75.211 5.394 l
-78.151 5.394 l
-h
-81.756 0 -1.896 9.363 re
-85.347 1.572 m
-88.668 1.572 l
-88.668 0 l
-83.45 0 l
-83.45 9.363 l
-85.347 9.363 l
-h
-94.768 4.056 m
-91.828 4.056 l
-91.828 1.572 l
-95.312 1.572 l
-95.312 0 l
-89.933 0 l
-89.933 9.363 l
-95.298 9.363 l
-95.298 7.79 l
-91.828 7.79 l
-91.828 5.57 l
-94.768 5.57 l
-h
-100.526 2.454 m
-100.526 2.836 100.428 3.123 100.233 3.322 c
-100.034 3.516 99.682 3.719 99.175 3.924 c
-98.234 4.284 97.558 4.704 97.146 5.174 c
-96.734 5.651 96.528 6.221 96.528 6.879 c
-96.528 7.661 96.808 8.294 97.367 8.775 c
-97.925 9.252 98.635 9.495 99.498 9.495 c
-100.075 9.495 100.589 9.37 101.041 9.128 c
-101.49 8.882 101.835 8.54 102.07 8.099 c
-102.313 7.658 102.438 7.158 102.438 6.599 c
-100.557 6.599 l
-100.557 7.04 100.461 7.371 100.277 7.599 c
-100.09 7.823 99.821 7.937 99.468 7.937 c
-99.134 7.937 98.874 7.838 98.689 7.644 c
-98.513 7.455 98.425 7.195 98.425 6.864 c
-98.425 6.607 98.527 6.372 98.733 6.158 c
-98.939 5.953 99.3 5.736 99.821 5.512 c
-100.732 5.188 101.394 4.784 101.806 4.307 c
-102.225 3.825 102.438 3.212 102.438 2.469 c
-102.438 1.653 102.177 1.018 101.659 0.558 c
-101.137 0.095 100.431 -0.133 99.542 -0.133 c
-98.932 -0.133 98.381 -0.008 97.881 0.235 c
-97.389 0.488 97.002 0.845 96.72 1.308 c
-96.433 1.778 96.293 2.326 96.293 2.954 c
-98.19 2.954 l
-98.19 2.414 98.292 2.021 98.498 1.778 c
-98.712 1.532 99.061 1.411 99.542 1.411 c
-100.196 1.411 100.526 1.756 100.526 2.454 c
-f
-Q
-0.113 0.082 0.09 0 k
-35.668 173.911 238.665 -49.165 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 40.8563 167.0717 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.646 -0.243 -0.775 -0.367 -0.881 c
--0.496 -0.992 -0.658 -1.08 -0.852 -1.147 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.161 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.926 c
--3.127 -0.819 -3.23 -0.69 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.214 -3.484 -0.015 c
--2.66 0.133 l
--2.642 0.033 -2.616 -0.058 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.368 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.684 -1.992 0.691 -1.999 0.691 c
--2.167 0.727 -2.329 0.771 -2.484 0.823 c
--2.642 0.882 -2.786 0.96 -2.91 1.058 c
--3.039 1.154 -3.142 1.278 -3.219 1.426 c
--3.289 1.573 -3.322 1.756 -3.322 1.984 c
--3.322 2.179 -3.289 2.344 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.837 c
--2.8 2.932 -2.645 3.002 -2.469 3.042 c
--2.293 3.09 -2.102 3.12 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.12 -1.128 3.09 -0.97 3.042 c
--0.804 2.992 -0.669 2.918 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.202 2.344 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.253 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.353 c
--1.294 1.312 -1.117 1.264 -0.941 1.205 c
--0.756 1.147 -0.595 1.066 -0.455 0.97 c
--0.32 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.454 c
--2.26 2.425 -2.319 2.385 -2.366 2.337 c
--2.406 2.296 -2.437 2.249 -2.454 2.19 c
--2.477 2.132 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.779 c
--2.41 1.72 -2.373 1.668 -2.322 1.631 c
--2.263 1.591 -2.201 1.558 -2.131 1.529 c
--2.065 1.5 -1.984 1.47 -1.896 1.44 c
-h
--0.837 -0.015 m
--0.837 0.092 -0.86 0.177 -0.897 0.235 c
--0.926 0.301 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.53 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.529 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.015 c
-6.431 -1.323 m
-6.145 -1.323 5.902 -1.282 5.696 -1.205 c
-5.49 -1.117 5.318 -0.996 5.182 -0.838 c
-5.042 -0.684 4.939 -0.496 4.873 -0.279 c
-4.803 -0.055 4.77 0.191 4.77 0.455 c
-4.77 0.75 4.803 1.007 4.873 1.235 c
-4.95 1.459 5.056 1.646 5.197 1.793 c
-5.343 1.947 5.519 2.065 5.725 2.146 c
-5.931 2.234 6.167 2.278 6.431 2.278 c
-6.656 2.278 6.857 2.249 7.034 2.19 c
-7.21 2.132 7.361 2.047 7.489 1.941 c
-7.614 1.841 7.717 1.72 7.798 1.573 c
-7.875 1.433 7.93 1.282 7.96 1.118 c
-7.048 1.073 l
-7.019 1.249 6.949 1.389 6.843 1.5 c
-6.743 1.606 6.6 1.661 6.417 1.661 c
-6.17 1.661 5.993 1.558 5.887 1.353 c
-5.777 1.154 5.725 0.867 5.725 0.485 c
-5.725 -0.309 5.961 -0.706 6.431 -0.706 c
-6.596 -0.706 6.739 -0.654 6.857 -0.544 c
-6.975 -0.437 7.048 -0.276 7.078 -0.058 c
-7.989 -0.103 l
-7.96 -0.272 7.905 -0.426 7.828 -0.573 c
-7.757 -0.721 7.655 -0.852 7.518 -0.97 c
-7.39 -1.08 7.232 -1.168 7.048 -1.234 c
-6.872 -1.294 6.666 -1.323 6.431 -1.323 c
-9.889 -1.323 m
-9.72 -1.323 9.569 -1.301 9.434 -1.264 c
-9.305 -1.216 9.191 -1.147 9.095 -1.058 c
-9.008 -0.97 8.937 -0.864 8.889 -0.735 c
-8.838 -0.599 8.816 -0.449 8.816 -0.279 c
-8.816 -0.073 8.85 0.096 8.919 0.235 c
-8.985 0.382 9.081 0.492 9.199 0.573 c
-9.323 0.661 9.467 0.724 9.625 0.765 c
-9.79 0.802 9.966 0.827 10.153 0.838 c
-10.874 0.852 l
-10.874 1.029 l
-10.874 1.147 10.863 1.249 10.845 1.338 c
-10.822 1.426 10.789 1.492 10.741 1.544 c
-10.701 1.602 10.654 1.639 10.595 1.661 c
-10.535 1.679 10.469 1.691 10.404 1.691 c
-10.334 1.691 10.271 1.679 10.213 1.661 c
-10.161 1.65 10.113 1.625 10.065 1.588 c
-10.025 1.558 9.992 1.507 9.962 1.44 c
-9.941 1.382 9.926 1.301 9.918 1.205 c
-8.977 1.249 l
-9.008 1.396 9.051 1.532 9.11 1.661 c
-9.176 1.786 9.272 1.897 9.39 1.984 c
-9.507 2.08 9.646 2.153 9.816 2.205 c
-9.992 2.253 10.198 2.278 10.433 2.278 c
-10.874 2.278 11.204 2.168 11.433 1.955 c
-11.668 1.749 11.786 1.44 11.786 1.029 c
-11.786 -0.235 l
-11.786 -0.455 l
-11.792 -0.515 11.807 -0.569 11.83 -0.617 c
-11.848 -0.658 11.877 -0.69 11.917 -0.721 c
-11.954 -0.742 12.006 -0.75 12.065 -0.75 c
-12.131 -0.75 12.2 -0.746 12.27 -0.735 c
-12.27 -1.22 l
-12.212 -1.231 12.156 -1.242 12.108 -1.249 c
-12.068 -1.261 12.027 -1.268 11.991 -1.278 c
-11.95 -1.286 11.907 -1.294 11.859 -1.294 c
-11.807 -1.301 11.749 -1.309 11.682 -1.309 c
-11.454 -1.309 11.289 -1.257 11.183 -1.147 c
-11.072 -1.029 11.009 -0.864 10.992 -0.646 c
-10.977 -0.646 l
-10.907 -0.757 10.837 -0.852 10.771 -0.941 c
-10.701 -1.022 10.624 -1.087 10.535 -1.147 c
-10.448 -1.205 10.348 -1.249 10.242 -1.278 c
-10.143 -1.309 10.025 -1.323 9.889 -1.323 c
-10.874 0.353 m
-10.448 0.338 l
-10.348 0.338 10.257 0.331 10.168 0.324 c
-10.088 0.312 10.022 0.287 9.962 0.25 c
-9.904 0.21 9.852 0.151 9.816 0.073 c
-9.775 0.004 9.756 -0.088 9.756 -0.206 c
-9.756 -0.374 9.79 -0.496 9.86 -0.573 c
-9.926 -0.654 10.025 -0.69 10.153 -0.69 c
-10.261 -0.69 10.359 -0.669 10.448 -0.617 c
-10.543 -0.569 10.624 -0.507 10.683 -0.426 c
-10.749 -0.349 10.801 -0.261 10.83 -0.162 c
-10.859 -0.055 10.874 0.059 10.874 0.177 c
-h
-13.6 1.602 m
-13.057 1.602 l
-13.057 2.219 l
-13.644 2.219 l
-13.924 3.117 l
-14.497 3.117 l
-14.497 2.219 l
-15.732 2.219 l
-15.732 1.602 l
-14.497 1.602 l
-14.497 -0.103 l
-14.497 -0.324 l
-14.504 -0.393 14.527 -0.455 14.556 -0.515 c
-14.593 -0.566 14.648 -0.61 14.718 -0.646 c
-14.795 -0.676 14.909 -0.69 15.056 -0.69 c
-15.192 -0.69 15.327 -0.687 15.468 -0.676 c
-15.603 -0.658 15.736 -0.632 15.865 -0.603 c
-15.865 -1.205 l
-15.784 -1.216 15.707 -1.231 15.629 -1.249 c
-15.549 -1.261 15.471 -1.268 15.394 -1.278 c
-15.313 -1.286 15.225 -1.294 15.129 -1.294 c
-15.041 -1.301 14.942 -1.309 14.835 -1.309 c
-14.648 -1.309 14.486 -1.294 14.35 -1.264 c
-14.221 -1.228 14.107 -1.183 14.012 -1.132 c
-13.924 -1.084 13.85 -1.025 13.791 -0.956 c
-13.733 -0.879 13.689 -0.801 13.66 -0.721 c
-13.63 -0.632 13.608 -0.544 13.6 -0.455 c
-13.59 -0.36 13.586 -0.264 13.586 -0.176 c
-h
-22.178 -0.279 0.926 -0.985 re
-22.178 -1.264 m
-26.709 -2.66 m
-26.491 -2.66 26.3 -2.635 26.136 -2.587 c
-25.966 -2.547 25.826 -2.484 25.709 -2.396 c
-25.591 -2.315 25.492 -2.219 25.415 -2.102 c
-25.345 -1.984 25.297 -1.856 25.268 -1.72 c
-26.165 -1.617 l
-26.201 -1.753 26.271 -1.86 26.371 -1.94 c
-26.466 -2.028 26.591 -2.072 26.738 -2.072 c
-26.826 -2.072 26.907 -2.057 26.988 -2.028 c
-27.065 -1.999 27.135 -1.944 27.194 -1.866 c
-27.252 -1.797 27.296 -1.705 27.326 -1.587 c
-27.362 -1.469 27.385 -1.323 27.385 -1.147 c
-27.385 -0.956 l
-27.385 -0.889 27.389 -0.831 27.399 -0.779 c
-27.399 -0.588 l
-27.385 -0.588 l
-27.285 -0.816 27.142 -0.977 26.959 -1.073 c
-26.771 -1.172 26.566 -1.22 26.341 -1.22 c
-26.136 -1.22 25.951 -1.183 25.797 -1.103 c
-25.65 -1.014 25.521 -0.897 25.415 -0.75 c
-25.315 -0.595 25.242 -0.411 25.195 -0.206 c
-25.143 0.008 25.121 0.243 25.121 0.5 c
-25.121 0.771 25.143 1.018 25.195 1.235 c
-25.253 1.448 25.334 1.631 25.444 1.779 c
-25.55 1.933 25.683 2.051 25.841 2.132 c
-25.995 2.219 26.183 2.263 26.4 2.263 c
-26.495 2.263 26.595 2.253 26.693 2.234 c
-26.789 2.213 26.878 2.179 26.959 2.132 c
-27.046 2.08 27.123 2.018 27.194 1.941 c
-27.271 1.86 27.333 1.768 27.385 1.661 c
-27.399 1.661 l
-27.399 1.808 l
-27.407 1.866 27.414 1.918 27.414 1.97 c
-27.422 2.028 27.429 2.076 27.429 2.117 c
-27.436 2.165 27.447 2.198 27.458 2.219 c
-28.311 2.219 l
-28.299 2.138 28.289 2.028 28.281 1.881 c
-28.281 1.411 l
-28.281 -1.161 l
-28.281 -1.415 28.245 -1.635 28.178 -1.822 c
-28.108 -2.007 28.006 -2.161 27.869 -2.278 c
-27.73 -2.404 27.565 -2.499 27.37 -2.558 c
-27.171 -2.624 26.951 -2.66 26.709 -2.66 c
-27.399 0.53 m
-27.399 0.742 27.374 0.919 27.326 1.058 c
-27.285 1.205 27.231 1.323 27.164 1.411 c
-27.106 1.5 27.036 1.558 26.959 1.588 c
-26.878 1.625 26.801 1.646 26.724 1.646 c
-26.624 1.646 26.532 1.621 26.444 1.573 c
-26.363 1.532 26.296 1.463 26.238 1.367 c
-26.186 1.278 26.142 1.161 26.106 1.014 c
-26.076 0.875 26.061 0.706 26.061 0.5 c
-26.061 0.125 26.121 -0.154 26.238 -0.338 c
-26.356 -0.515 26.518 -0.603 26.724 -0.603 c
-26.789 -0.603 26.863 -0.588 26.944 -0.559 c
-27.032 -0.522 27.106 -0.463 27.164 -0.382 c
-27.231 -0.294 27.285 -0.176 27.326 -0.029 c
-27.374 0.118 27.399 0.301 27.399 0.53 c
-31.343 -0.646 m
-32.474 -0.646 l
-32.474 -1.264 l
-29.167 -1.264 l
-29.167 -0.646 l
-30.431 -0.646 l
-30.431 1.602 l
-29.505 1.602 l
-29.505 2.219 l
-31.343 2.219 l
-h
-30.431 3.513 0.912 -0.675 re
-30.431 2.837 m
-33.907 1.602 m
-33.363 1.602 l
-33.363 2.219 l
-33.951 2.219 l
-34.231 3.117 l
-34.804 3.117 l
-34.804 2.219 l
-36.039 2.219 l
-36.039 1.602 l
-34.804 1.602 l
-34.804 -0.103 l
-34.804 -0.324 l
-34.811 -0.393 34.834 -0.455 34.863 -0.515 c
-34.9 -0.566 34.955 -0.61 35.025 -0.646 c
-35.102 -0.676 35.216 -0.69 35.362 -0.69 c
-35.499 -0.69 35.634 -0.687 35.774 -0.676 c
-35.91 -0.658 36.043 -0.632 36.17 -0.603 c
-36.17 -1.205 l
-36.091 -1.216 36.013 -1.231 35.935 -1.249 c
-35.855 -1.261 35.778 -1.268 35.7 -1.278 c
-35.62 -1.286 35.532 -1.294 35.436 -1.294 c
-35.348 -1.301 35.249 -1.309 35.142 -1.309 c
-34.955 -1.309 34.793 -1.294 34.657 -1.264 c
-34.528 -1.228 34.414 -1.183 34.319 -1.132 c
-34.231 -1.084 34.157 -1.025 34.098 -0.956 c
-34.04 -0.879 33.995 -0.801 33.966 -0.721 c
-33.937 -0.632 33.915 -0.544 33.907 -0.455 c
-33.897 -0.36 33.893 -0.264 33.893 -0.176 c
-h
-39.467 -0.646 m
-40.599 -0.646 l
-40.599 -1.264 l
-37.292 -1.264 l
-37.292 -0.646 l
-38.556 -0.646 l
-38.556 1.602 l
-37.63 1.602 l
-37.63 2.219 l
-39.467 2.219 l
-h
-38.556 3.513 0.911 -0.675 re
-38.556 2.837 m
-42.954 -2.66 m
-42.738 -2.66 42.547 -2.635 42.381 -2.587 c
-42.212 -2.547 42.073 -2.484 41.955 -2.396 c
-41.837 -2.315 41.738 -2.219 41.661 -2.102 c
-41.591 -1.984 41.543 -1.856 41.514 -1.72 c
-42.41 -1.617 l
-42.447 -1.753 42.518 -1.86 42.616 -1.94 c
-42.712 -2.028 42.837 -2.072 42.984 -2.072 c
-43.072 -2.072 43.153 -2.057 43.234 -2.028 c
-43.311 -1.999 43.381 -1.944 43.44 -1.866 c
-43.499 -1.797 43.542 -1.705 43.572 -1.587 c
-43.609 -1.469 43.631 -1.323 43.631 -1.147 c
-43.631 -0.956 l
-43.631 -0.889 43.634 -0.831 43.646 -0.779 c
-43.646 -0.588 l
-43.631 -0.588 l
-43.532 -0.816 43.388 -0.977 43.204 -1.073 c
-43.017 -1.172 42.811 -1.22 42.587 -1.22 c
-42.381 -1.22 42.198 -1.183 42.044 -1.103 c
-41.896 -1.014 41.768 -0.897 41.661 -0.75 c
-41.562 -0.595 41.488 -0.411 41.441 -0.206 c
-41.389 0.008 41.367 0.243 41.367 0.5 c
-41.367 0.771 41.389 1.018 41.441 1.235 c
-41.5 1.448 41.58 1.631 41.691 1.779 c
-41.797 1.933 41.93 2.051 42.088 2.132 c
-42.242 2.219 42.429 2.263 42.646 2.263 c
-42.742 2.263 42.84 2.253 42.94 2.234 c
-43.035 2.213 43.123 2.179 43.204 2.132 c
-43.293 2.08 43.37 2.018 43.44 1.941 c
-43.517 1.86 43.58 1.768 43.631 1.661 c
-43.646 1.661 l
-43.646 1.808 l
-43.653 1.866 43.66 1.918 43.66 1.97 c
-43.667 2.028 43.675 2.076 43.675 2.117 c
-43.682 2.165 43.694 2.198 43.704 2.219 c
-44.557 2.219 l
-44.546 2.138 44.535 2.028 44.527 1.881 c
-44.527 1.411 l
-44.527 -1.161 l
-44.527 -1.415 44.49 -1.635 44.425 -1.822 c
-44.355 -2.007 44.251 -2.161 44.116 -2.278 c
-43.976 -2.404 43.811 -2.499 43.616 -2.558 c
-43.418 -2.624 43.197 -2.66 42.954 -2.66 c
-43.646 0.53 m
-43.646 0.742 43.619 0.919 43.572 1.058 c
-43.532 1.205 43.476 1.323 43.41 1.411 c
-43.351 1.5 43.282 1.558 43.204 1.588 c
-43.123 1.625 43.046 1.646 42.969 1.646 c
-42.87 1.646 42.778 1.621 42.69 1.573 c
-42.609 1.532 42.543 1.463 42.484 1.367 c
-42.433 1.278 42.389 1.161 42.352 1.014 c
-42.323 0.875 42.308 0.706 42.308 0.5 c
-42.308 0.125 42.366 -0.154 42.484 -0.338 c
-42.601 -0.515 42.763 -0.603 42.969 -0.603 c
-43.035 -0.603 43.109 -0.588 43.189 -0.559 c
-43.278 -0.522 43.351 -0.463 43.41 -0.382 c
-43.476 -0.294 43.532 -0.176 43.572 -0.029 c
-43.619 0.118 43.646 0.301 43.646 0.53 c
-47.677 -1.264 m
-47.677 0.721 l
-47.677 1.022 47.632 1.242 47.544 1.382 c
-47.463 1.529 47.328 1.602 47.133 1.602 c
-47.023 1.602 46.919 1.577 46.824 1.529 c
-46.736 1.477 46.655 1.411 46.589 1.323 c
-46.53 1.235 46.479 1.124 46.441 1 c
-46.412 0.882 46.398 0.75 46.398 0.603 c
-46.398 -1.264 l
-45.487 -1.264 l
-45.487 1.44 l
-45.487 1.661 l
-45.487 1.749 45.479 1.826 45.472 1.897 c
-45.472 2.088 l
-45.472 2.219 l
-46.324 2.219 l
-46.331 2.19 46.339 2.146 46.339 2.088 c
-46.339 1.897 l
-46.346 1.826 46.354 1.756 46.354 1.691 c
-46.362 1.621 46.368 1.565 46.368 1.529 c
-46.383 1.529 l
-46.501 1.793 46.651 1.984 46.838 2.102 c
-47.023 2.219 47.243 2.278 47.5 2.278 c
-47.684 2.278 47.846 2.249 47.985 2.19 c
-48.122 2.132 48.235 2.043 48.323 1.926 c
-48.411 1.808 48.474 1.665 48.515 1.5 c
-48.562 1.342 48.588 1.154 48.588 0.941 c
-48.588 -1.264 l
-h
-52.752 0.485 m
-52.752 0.21 52.714 -0.04 52.648 -0.264 c
-52.579 -0.482 52.476 -0.669 52.34 -0.823 c
-52.201 -0.981 52.024 -1.103 51.811 -1.191 c
-51.594 -1.278 51.341 -1.323 51.046 -1.323 c
-50.771 -1.323 50.524 -1.278 50.312 -1.191 c
-50.106 -1.103 49.933 -0.981 49.797 -0.823 c
-49.657 -0.669 49.554 -0.482 49.489 -0.264 c
-49.419 -0.04 49.385 0.21 49.385 0.485 c
-49.385 0.738 49.415 0.974 49.473 1.191 c
-49.539 1.415 49.643 1.606 49.782 1.764 c
-49.918 1.929 50.094 2.058 50.312 2.146 c
-50.524 2.234 50.782 2.278 51.076 2.278 c
-51.388 2.278 51.649 2.234 51.854 2.146 c
-52.068 2.058 52.241 1.929 52.369 1.764 c
-52.505 1.606 52.604 1.415 52.664 1.191 c
-52.722 0.974 52.752 0.738 52.752 0.485 c
-51.796 0.485 m
-51.796 0.691 51.781 0.867 51.752 1.014 c
-51.73 1.161 51.693 1.282 51.634 1.382 c
-51.576 1.477 51.502 1.548 51.414 1.588 c
-51.326 1.635 51.216 1.661 51.091 1.661 c
-50.826 1.661 50.635 1.562 50.517 1.367 c
-50.4 1.18 50.341 0.885 50.341 0.485 c
-50.341 0.062 50.4 -0.243 50.517 -0.426 c
-50.635 -0.613 50.811 -0.706 51.046 -0.706 c
-51.172 -0.706 51.285 -0.687 51.384 -0.646 c
-51.48 -0.599 51.561 -0.526 51.619 -0.426 c
-51.686 -0.331 51.73 -0.206 51.752 -0.058 c
-51.781 0.088 51.796 0.268 51.796 0.485 c
-56.625 1.47 m
-56.525 1.477 56.423 1.488 56.316 1.5 c
-56.205 1.517 56.084 1.529 55.949 1.529 c
-55.772 1.529 55.614 1.488 55.478 1.411 c
-55.339 1.342 55.22 1.242 55.125 1.118 c
-55.037 0.989 54.967 0.842 54.919 0.676 c
-54.879 0.507 54.861 0.331 54.861 0.147 c
-54.861 -1.264 l
-53.965 -1.264 l
-53.965 0.985 l
-53.965 1.11 53.953 1.235 53.934 1.353 c
-53.924 1.477 53.909 1.595 53.89 1.706 c
-53.88 1.823 53.865 1.918 53.847 1.999 c
-53.824 2.088 53.807 2.161 53.788 2.219 c
-54.67 2.219 l
-54.677 2.168 54.688 2.117 54.699 2.058 c
-54.717 1.999 54.732 1.933 54.743 1.866 c
-54.761 1.808 54.776 1.742 54.788 1.675 c
-54.794 1.606 54.806 1.544 54.817 1.484 c
-54.831 1.484 l
-54.869 1.602 54.919 1.708 54.979 1.808 c
-55.045 1.903 55.125 1.988 55.214 2.058 c
-55.301 2.124 55.405 2.179 55.522 2.219 c
-55.648 2.256 55.794 2.278 55.964 2.278 c
-56.088 2.278 56.205 2.271 56.316 2.263 c
-56.434 2.253 56.537 2.238 56.625 2.219 c
-h
-59.23 -1.323 m
-58.973 -1.323 58.745 -1.286 58.539 -1.22 c
-58.333 -1.143 58.157 -1.029 58.01 -0.881 c
-57.863 -0.727 57.745 -0.536 57.657 -0.309 c
-57.576 -0.085 57.539 0.18 57.539 0.485 c
-57.539 0.816 57.584 1.095 57.672 1.323 c
-57.768 1.558 57.896 1.742 58.054 1.881 c
-58.22 2.018 58.407 2.117 58.613 2.176 c
-58.819 2.242 59.028 2.278 59.245 2.278 c
-59.517 2.278 59.752 2.227 59.951 2.132 c
-60.157 2.043 60.321 1.911 60.45 1.735 c
-60.586 1.565 60.685 1.359 60.744 1.118 c
-60.81 0.882 60.847 0.617 60.847 0.324 c
-60.847 0.309 l
-58.48 0.309 l
-58.48 0.162 58.495 0.022 58.524 -0.103 c
-58.561 -0.231 58.617 -0.345 58.686 -0.441 c
-58.752 -0.529 58.837 -0.599 58.936 -0.646 c
-59.031 -0.698 59.145 -0.721 59.274 -0.721 c
-59.428 -0.721 59.569 -0.687 59.686 -0.617 c
-59.81 -0.551 59.899 -0.449 59.951 -0.309 c
-60.788 -0.382 l
-60.759 -0.482 60.704 -0.588 60.627 -0.706 c
-60.546 -0.816 60.443 -0.919 60.317 -1.014 c
-60.2 -1.103 60.046 -1.176 59.862 -1.234 c
-59.686 -1.294 59.473 -1.323 59.23 -1.323 c
-59.23 1.706 m
-59.141 1.706 59.054 1.691 58.966 1.661 c
-58.877 1.631 58.796 1.58 58.73 1.514 c
-58.661 1.444 58.601 1.356 58.553 1.249 c
-58.513 1.139 58.495 1.014 58.495 0.867 c
-59.965 0.867 l
-59.965 1.003 59.939 1.124 59.891 1.235 c
-59.851 1.342 59.796 1.43 59.729 1.5 c
-59.671 1.565 59.598 1.617 59.509 1.646 c
-59.421 1.683 59.326 1.706 59.23 1.706 c
-f
-Q
-q 1 0 0 1 40.8309 120.2041 cm
-0 0 m
--1.411 0 l
--1.411 -4.777 l
--2.072 -4.777 l
--2.072 0 l
--3.484 0 l
--3.484 0.573 l
-0 0.573 l
-h
-1.352 -1.206 m
-1.606 -0.882 1.926 -0.721 2.308 -0.721 c
-3.013 -0.721 3.37 -1.191 3.381 -2.132 c
-3.381 -4.777 l
-2.734 -4.777 l
-2.734 -2.161 l
-2.734 -1.849 2.679 -1.628 2.572 -1.5 c
-2.462 -1.374 2.308 -1.309 2.102 -1.309 c
-1.944 -1.309 1.797 -1.363 1.661 -1.47 c
-1.532 -1.58 1.429 -1.716 1.352 -1.881 c
-1.352 -4.777 l
-0.706 -4.777 l
-0.706 0.867 l
-1.352 0.867 l
-h
-6.379 -4.777 m
-6.339 -4.69 6.313 -4.542 6.306 -4.337 c
-6.071 -4.682 5.777 -4.851 5.424 -4.851 c
-5.06 -4.851 4.777 -4.755 4.571 -4.557 c
-4.373 -4.351 4.278 -4.065 4.278 -3.69 c
-4.278 -3.289 4.413 -2.97 4.689 -2.735 c
-4.961 -2.492 5.336 -2.367 5.806 -2.367 c
-6.291 -2.367 l
-6.291 -1.941 l
-6.291 -1.706 6.236 -1.54 6.13 -1.441 c
-6.019 -1.334 5.857 -1.279 5.644 -1.279 c
-5.446 -1.279 5.284 -1.338 5.159 -1.455 c
-5.041 -1.573 4.983 -1.72 4.983 -1.897 c
-4.336 -1.897 l
-4.336 -1.702 4.395 -1.511 4.513 -1.324 c
-4.638 -1.139 4.8 -0.992 4.997 -0.882 c
-5.203 -0.775 5.431 -0.721 5.689 -0.721 c
-6.089 -0.721 6.394 -0.823 6.6 -1.029 c
-6.813 -1.235 6.927 -1.529 6.938 -1.912 c
-6.938 -3.925 l
-6.938 -4.23 6.975 -4.495 7.056 -4.719 c
-7.056 -4.777 l
-h
-5.512 -4.263 m
-5.677 -4.263 5.828 -4.219 5.968 -4.131 c
-6.115 -4.042 6.221 -3.932 6.291 -3.793 c
-6.291 -2.852 l
-5.924 -2.852 l
-5.608 -2.852 5.365 -2.922 5.189 -3.057 c
-5.012 -3.186 4.924 -3.373 4.924 -3.616 c
-4.924 -3.844 4.968 -4.009 5.056 -4.116 c
-5.145 -4.215 5.295 -4.263 5.512 -4.263 c
-8.555 -0.794 m
-8.569 -1.235 l
-8.823 -0.893 9.147 -0.721 9.54 -0.721 c
-10.246 -0.721 10.601 -1.191 10.612 -2.132 c
-10.612 -4.777 l
-9.966 -4.777 l
-9.966 -2.161 l
-9.966 -1.849 9.911 -1.628 9.804 -1.5 c
-9.694 -1.374 9.54 -1.309 9.334 -1.309 c
-9.176 -1.309 9.029 -1.363 8.893 -1.47 c
-8.764 -1.58 8.661 -1.716 8.584 -1.881 c
-8.584 -4.777 l
-7.937 -4.777 l
-7.937 -0.794 l
-h
-12.582 -2.955 m
-12.245 -3.352 l
-12.245 -4.777 l
-11.582 -4.777 l
-11.582 0.867 l
-12.245 0.867 l
-12.245 -2.514 l
-13.479 -0.794 l
-14.258 -0.794 l
-12.993 -2.455 l
-14.42 -4.777 l
-13.67 -4.777 l
-h
-16.918 -3.763 m
-16.918 -3.616 16.864 -3.495 16.756 -3.396 c
-16.646 -3.3 16.44 -3.183 16.139 -3.043 c
-15.794 -2.896 15.551 -2.774 15.405 -2.675 c
-15.258 -2.569 15.148 -2.452 15.081 -2.323 c
-15.011 -2.198 14.978 -2.04 14.978 -1.852 c
-14.978 -1.529 15.096 -1.261 15.331 -1.044 c
-15.566 -0.831 15.867 -0.721 16.243 -0.721 c
-16.625 -0.721 16.933 -0.834 17.168 -1.058 c
-17.404 -1.286 17.521 -1.573 17.521 -1.926 c
-16.874 -1.926 l
-16.874 -1.75 16.816 -1.598 16.698 -1.47 c
-16.581 -1.345 16.426 -1.279 16.243 -1.279 c
-16.044 -1.279 15.893 -1.334 15.787 -1.441 c
-15.676 -1.54 15.625 -1.673 15.625 -1.837 c
-15.625 -1.966 15.661 -2.072 15.742 -2.161 c
-15.819 -2.242 16.01 -2.344 16.316 -2.469 c
-16.794 -2.657 17.124 -2.845 17.301 -3.028 c
-17.477 -3.205 17.565 -3.433 17.565 -3.705 c
-17.565 -4.057 17.44 -4.337 17.198 -4.542 c
-16.962 -4.748 16.646 -4.851 16.257 -4.851 c
-15.835 -4.851 15.497 -4.734 15.243 -4.499 c
-14.986 -4.256 14.861 -3.95 14.861 -3.587 c
-15.507 -3.587 l
-15.515 -3.815 15.584 -3.991 15.713 -4.116 c
-15.838 -4.233 16.022 -4.293 16.257 -4.293 c
-16.47 -4.293 16.632 -4.245 16.742 -4.146 c
-16.86 -4.05 16.918 -3.921 16.918 -3.763 c
-23.518 0.162 m
-23.518 -0.794 l
-24.122 -0.794 l
-24.122 -1.324 l
-23.518 -1.324 l
-23.518 -3.793 l
-23.518 -3.95 23.54 -4.068 23.592 -4.146 c
-23.651 -4.226 23.739 -4.263 23.856 -4.263 c
-23.945 -4.263 24.033 -4.248 24.122 -4.219 c
-24.122 -4.777 l
-23.974 -4.825 23.82 -4.851 23.665 -4.851 c
-23.408 -4.851 23.214 -4.759 23.077 -4.572 c
-22.938 -4.388 22.871 -4.127 22.871 -3.793 c
-22.871 -1.324 l
-22.269 -1.324 l
-22.269 -0.794 l
-22.871 -0.794 l
-22.871 0.162 l
-h
-24.679 -2.602 m
-24.679 -2.025 24.816 -1.569 25.091 -1.235 c
-25.375 -0.893 25.745 -0.721 26.208 -0.721 c
-26.668 -0.721 27.035 -0.89 27.311 -1.22 c
-27.594 -1.544 27.741 -1.992 27.752 -2.558 c
-27.752 -2.984 l
-27.752 -3.554 27.609 -4.009 27.326 -4.351 c
-27.05 -4.686 26.682 -4.851 26.223 -4.851 c
-25.76 -4.851 25.389 -4.69 25.106 -4.366 c
-24.83 -4.035 24.687 -3.595 24.679 -3.043 c
-h
-25.327 -2.984 m
-25.327 -3.389 25.404 -3.705 25.562 -3.94 c
-25.727 -4.175 25.947 -4.293 26.223 -4.293 c
-26.788 -4.293 27.083 -3.881 27.105 -3.057 c
-27.105 -2.602 l
-27.105 -2.201 27.021 -1.881 26.855 -1.646 c
-26.697 -1.404 26.48 -1.279 26.208 -1.279 c
-25.944 -1.279 25.727 -1.404 25.562 -1.646 c
-25.404 -1.881 25.327 -2.201 25.327 -2.602 c
-h
-33.701 0.162 m
-33.701 -0.794 l
-34.304 -0.794 l
-34.304 -1.324 l
-33.701 -1.324 l
-33.701 -3.793 l
-33.701 -3.95 33.724 -4.068 33.774 -4.146 c
-33.834 -4.226 33.922 -4.263 34.04 -4.263 c
-34.127 -4.263 34.216 -4.248 34.304 -4.219 c
-34.304 -4.777 l
-34.157 -4.825 34.002 -4.851 33.848 -4.851 c
-33.591 -4.851 33.396 -4.759 33.26 -4.572 c
-33.121 -4.388 33.055 -4.127 33.055 -3.793 c
-33.055 -1.324 l
-32.452 -1.324 l
-32.452 -0.794 l
-33.055 -0.794 l
-33.055 0.162 l
-h
-35.715 -1.206 m
-35.968 -0.882 36.288 -0.721 36.67 -0.721 c
-37.376 -0.721 37.732 -1.191 37.743 -2.132 c
-37.743 -4.777 l
-37.097 -4.777 l
-37.097 -2.161 l
-37.097 -1.849 37.042 -1.628 36.935 -1.5 c
-36.824 -1.374 36.67 -1.309 36.465 -1.309 c
-36.307 -1.309 36.159 -1.363 36.024 -1.47 c
-35.895 -1.58 35.792 -1.716 35.715 -1.881 c
-35.715 -4.777 l
-35.068 -4.777 l
-35.068 0.867 l
-35.715 0.867 l
-h
-39.405 -4.777 -0.647 3.983 re
-39.449 0.249 m
-39.449 0.139 39.419 0.048 39.361 -0.03 c
-39.301 -0.1 39.206 -0.133 39.081 -0.133 c
-38.964 -0.133 38.868 -0.1 38.802 -0.03 c
-38.743 0.048 38.713 0.139 38.713 0.249 c
-38.713 0.367 38.743 0.459 38.802 0.529 c
-38.868 0.606 38.964 0.646 39.081 0.646 c
-39.206 0.646 39.301 0.606 39.361 0.529 c
-39.419 0.448 39.449 0.357 39.449 0.249 c
-42.359 -3.763 m
-42.359 -3.616 42.304 -3.495 42.197 -3.396 c
-42.087 -3.3 41.881 -3.183 41.58 -3.043 c
-41.234 -2.896 40.992 -2.774 40.845 -2.675 c
-40.698 -2.569 40.587 -2.452 40.521 -2.323 c
-40.452 -2.198 40.419 -2.04 40.419 -1.852 c
-40.419 -1.529 40.536 -1.261 40.772 -1.044 c
-41.007 -0.831 41.308 -0.721 41.683 -0.721 c
-42.065 -0.721 42.374 -0.834 42.609 -1.058 c
-42.844 -1.286 42.962 -1.573 42.962 -1.926 c
-42.314 -1.926 l
-42.314 -1.75 42.256 -1.598 42.139 -1.47 c
-42.021 -1.345 41.867 -1.279 41.683 -1.279 c
-41.485 -1.279 41.333 -1.334 41.227 -1.441 c
-41.117 -1.54 41.065 -1.673 41.065 -1.837 c
-41.065 -1.966 41.102 -2.072 41.183 -2.161 c
-41.26 -2.242 41.451 -2.344 41.757 -2.469 c
-42.234 -2.657 42.565 -2.845 42.742 -3.028 c
-42.917 -3.205 43.006 -3.433 43.006 -3.705 c
-43.006 -4.057 42.881 -4.337 42.638 -4.542 c
-42.403 -4.748 42.087 -4.851 41.697 -4.851 c
-41.275 -4.851 40.937 -4.734 40.683 -4.499 c
-40.426 -4.256 40.301 -3.95 40.301 -3.587 c
-40.948 -3.587 l
-40.955 -3.815 41.025 -3.991 41.154 -4.116 c
-41.279 -4.233 41.462 -4.293 41.697 -4.293 c
-41.911 -4.293 42.073 -4.245 42.183 -4.146 c
-42.3 -4.05 42.359 -3.921 42.359 -3.763 c
-48.279 -4.777 m
-48.279 -1.324 l
-47.764 -1.324 l
-47.764 -0.794 l
-48.279 -0.794 l
-48.279 -0.426 l
-48.286 0.004 48.4 0.338 48.617 0.573 c
-48.841 0.816 49.154 0.941 49.558 0.941 c
-49.705 0.941 49.844 0.918 49.984 0.881 c
-50.131 0.841 50.282 0.786 50.44 0.72 c
-50.322 0.147 l
-50.087 0.272 49.844 0.338 49.601 0.338 c
-49.356 0.338 49.183 0.268 49.088 0.132 c
-48.988 0.004 48.94 -0.191 48.94 -0.456 c
-48.94 -0.794 l
-49.587 -0.794 l
-49.587 -1.324 l
-48.94 -1.324 l
-48.94 -4.777 l
-h
-50.748 -4.777 -0.646 3.983 re
-52.498 -4.777 -0.647 5.644 re
-54.937 -4.851 m
-54.438 -4.851 54.056 -4.704 53.791 -4.41 c
-53.526 -4.116 53.394 -3.682 53.394 -3.102 c
-53.394 -2.631 l
-53.394 -2.036 53.52 -1.569 53.776 -1.235 c
-54.041 -0.893 54.401 -0.721 54.864 -0.721 c
-55.324 -0.721 55.665 -0.875 55.893 -1.176 c
-56.128 -1.47 56.25 -1.933 56.261 -2.558 c
-56.261 -2.984 l
-54.041 -2.984 l
-54.041 -3.072 l
-54.041 -3.506 54.118 -3.818 54.276 -4.013 c
-54.442 -4.2 54.673 -4.293 54.967 -4.293 c
-55.162 -4.293 55.334 -4.26 55.481 -4.189 c
-55.629 -4.112 55.764 -3.994 55.893 -3.836 c
-56.231 -4.248 l
-55.945 -4.653 55.515 -4.851 54.937 -4.851 c
-54.864 -1.279 m
-54.588 -1.279 54.386 -1.374 54.262 -1.559 c
-54.133 -1.746 54.06 -2.036 54.041 -2.425 c
-55.614 -2.425 l
-55.614 -2.338 l
-55.592 -1.955 55.525 -1.687 55.408 -1.529 c
-55.29 -1.363 55.107 -1.279 54.864 -1.279 c
-64.738 -4.116 m
-64.62 -4.263 l
-64.286 -4.656 63.791 -4.851 63.136 -4.851 c
-62.555 -4.851 62.1 -4.659 61.769 -4.278 c
-61.445 -3.896 61.277 -3.352 61.269 -2.646 c
-61.269 -1.602 l
-61.269 -0.849 61.416 -0.287 61.711 0.087 c
-62.012 0.459 62.463 0.646 63.062 0.646 c
-63.57 0.646 63.967 0.503 64.253 0.22 c
-64.547 -0.067 64.709 -0.47 64.738 -1 c
-64.062 -1 l
-64.04 -0.669 63.948 -0.408 63.783 -0.221 c
-63.625 -0.026 63.39 0.073 63.078 0.073 c
-62.684 0.073 62.401 -0.055 62.224 -0.309 c
-62.048 -0.566 61.952 -0.967 61.946 -1.515 c
-61.946 -2.602 l
-61.946 -3.142 62.048 -3.558 62.254 -3.851 c
-62.459 -4.138 62.754 -4.278 63.136 -4.278 c
-63.496 -4.278 63.776 -4.189 63.974 -4.013 c
-64.062 -3.925 l
-64.062 -2.691 l
-63.092 -2.691 l
-63.092 -2.117 l
-64.738 -2.117 l
-h
-66.458 -4.777 -0.646 3.983 re
-66.502 0.249 m
-66.502 0.139 66.473 0.048 66.414 -0.03 c
-66.355 -0.1 66.26 -0.133 66.135 -0.133 c
-66.017 -0.133 65.921 -0.1 65.856 -0.03 c
-65.796 0.048 65.767 0.139 65.767 0.249 c
-65.767 0.367 65.796 0.459 65.856 0.529 c
-65.921 0.606 66.017 0.646 66.135 0.646 c
-66.26 0.646 66.355 0.606 66.414 0.529 c
-66.473 0.448 66.502 0.357 66.502 0.249 c
-68.325 0.162 m
-68.325 -0.794 l
-68.927 -0.794 l
-68.927 -1.324 l
-68.325 -1.324 l
-68.325 -3.793 l
-68.325 -3.95 68.347 -4.068 68.398 -4.146 c
-68.457 -4.226 68.545 -4.263 68.663 -4.263 c
-68.751 -4.263 68.84 -4.248 68.927 -4.219 c
-68.927 -4.777 l
-68.78 -4.825 68.626 -4.851 68.472 -4.851 c
-68.215 -4.851 68.02 -4.759 67.884 -4.572 c
-67.745 -4.388 67.678 -4.127 67.678 -3.793 c
-67.678 -1.324 l
-67.076 -1.324 l
-67.076 -0.794 l
-67.678 -0.794 l
-67.678 0.162 l
-h
-76.921 -3.631 m
-77.523 -0.794 l
-78.17 -0.794 l
-77.185 -4.777 l
-76.67 -4.777 l
-75.891 -1.926 l
-75.142 -4.777 l
-74.612 -4.777 l
-73.657 -0.794 l
-74.289 -0.794 l
-74.906 -3.558 l
-75.641 -0.794 l
-76.156 -0.794 l
-h
-79.551 -4.777 -0.646 3.983 re
-79.595 0.249 m
-79.595 0.139 79.566 0.048 79.508 -0.03 c
-79.448 -0.1 79.353 -0.133 79.228 -0.133 c
-79.111 -0.133 79.015 -0.1 78.949 -0.03 c
-78.889 0.048 78.86 0.139 78.86 0.249 c
-78.86 0.367 78.889 0.459 78.949 0.529 c
-79.015 0.606 79.111 0.646 79.228 0.646 c
-79.353 0.646 79.448 0.606 79.508 0.529 c
-79.566 0.448 79.595 0.357 79.595 0.249 c
-81.271 -4.777 -0.647 5.644 re
-82.991 -4.777 -0.647 5.644 re
-88.973 -4.777 -0.646 3.983 re
-89.017 0.249 m
-89.017 0.139 88.988 0.048 88.929 -0.03 c
-88.871 -0.1 88.775 -0.133 88.65 -0.133 c
-88.532 -0.133 88.437 -0.1 88.37 -0.03 c
-88.312 0.048 88.283 0.139 88.283 0.249 c
-88.283 0.367 88.312 0.459 88.37 0.529 c
-88.437 0.606 88.532 0.646 88.65 0.646 c
-88.775 0.646 88.871 0.606 88.929 0.529 c
-88.988 0.448 89.017 0.357 89.017 0.249 c
-89.856 -2.602 m
-89.856 -1.985 89.966 -1.521 90.193 -1.206 c
-90.417 -0.882 90.752 -0.721 91.192 -0.721 c
-91.593 -0.721 91.898 -0.897 92.104 -1.249 c
-92.148 -0.794 l
-92.736 -0.794 l
-92.736 -4.821 l
-92.736 -5.31 92.607 -5.689 92.354 -5.953 c
-92.096 -6.218 91.744 -6.35 91.296 -6.35 c
-91.097 -6.35 90.877 -6.299 90.635 -6.203 c
-90.388 -6.104 90.208 -5.983 90.091 -5.835 c
-90.355 -5.395 l
-90.62 -5.659 90.917 -5.792 91.252 -5.792 c
-91.788 -5.792 92.064 -5.498 92.075 -4.91 c
-92.075 -4.381 l
-91.869 -4.696 91.568 -4.851 91.178 -4.851 c
-90.766 -4.851 90.444 -4.7 90.208 -4.395 c
-89.98 -4.083 89.862 -3.631 89.856 -3.043 c
-h
-90.517 -2.984 m
-90.517 -3.425 90.579 -3.755 90.708 -3.969 c
-90.833 -4.175 91.049 -4.278 91.354 -4.278 c
-91.678 -4.278 91.917 -4.112 92.075 -3.778 c
-92.075 -1.794 l
-91.906 -1.47 91.667 -1.309 91.354 -1.309 c
-91.061 -1.309 90.843 -1.411 90.708 -1.617 c
-90.579 -1.823 90.517 -2.147 90.517 -2.587 c
-h
-94.309 -0.794 m
-94.324 -1.235 l
-94.577 -0.893 94.901 -0.721 95.294 -0.721 c
-96 -0.721 96.356 -1.191 96.367 -2.132 c
-96.367 -4.777 l
-95.72 -4.777 l
-95.72 -2.161 l
-95.72 -1.849 95.665 -1.628 95.558 -1.5 c
-95.448 -1.374 95.294 -1.309 95.088 -1.309 c
-94.93 -1.309 94.783 -1.363 94.647 -1.47 c
-94.519 -1.58 94.415 -1.716 94.338 -1.881 c
-94.338 -4.777 l
-93.692 -4.777 l
-93.692 -0.794 l
-h
-97.205 -2.602 m
-97.205 -2.025 97.341 -1.569 97.617 -1.235 c
-97.899 -0.893 98.271 -0.721 98.733 -0.721 c
-99.192 -0.721 99.56 -0.89 99.836 -1.22 c
-100.119 -1.544 100.266 -1.992 100.277 -2.558 c
-100.277 -2.984 l
-100.277 -3.554 100.133 -4.009 99.851 -4.351 c
-99.575 -4.686 99.208 -4.851 98.748 -4.851 c
-98.285 -4.851 97.914 -4.69 97.631 -4.366 c
-97.355 -4.035 97.212 -3.595 97.205 -3.043 c
-h
-97.852 -2.984 m
-97.852 -3.389 97.929 -3.705 98.087 -3.94 c
-98.252 -4.175 98.473 -4.293 98.748 -4.293 c
-99.314 -4.293 99.608 -3.881 99.63 -3.057 c
-99.63 -2.602 l
-99.63 -2.201 99.545 -1.881 99.381 -1.646 c
-99.223 -1.404 99.005 -1.279 98.733 -1.279 c
-98.469 -1.279 98.252 -1.404 98.087 -1.646 c
-97.929 -1.881 97.852 -2.201 97.852 -2.602 c
-h
-102.761 -1.411 m
-102.673 -1.393 102.574 -1.382 102.467 -1.382 c
-102.132 -1.382 101.897 -1.565 101.762 -1.926 c
-101.762 -4.777 l
-101.114 -4.777 l
-101.114 -0.794 l
-101.747 -0.794 l
-101.762 -1.206 l
-101.938 -0.882 102.18 -0.721 102.496 -0.721 c
-102.603 -0.721 102.691 -0.742 102.761 -0.779 c
-h
-104.76 -4.851 m
-104.26 -4.851 103.878 -4.704 103.614 -4.41 c
-103.349 -4.116 103.217 -3.682 103.217 -3.102 c
-103.217 -2.631 l
-103.217 -2.036 103.342 -1.569 103.599 -1.235 c
-103.863 -0.893 104.224 -0.721 104.686 -0.721 c
-105.145 -0.721 105.488 -0.875 105.716 -1.176 c
-105.951 -1.47 106.072 -1.933 106.083 -2.558 c
-106.083 -2.984 l
-103.863 -2.984 l
-103.863 -3.072 l
-103.863 -3.506 103.94 -3.818 104.098 -4.013 c
-104.264 -4.2 104.495 -4.293 104.79 -4.293 c
-104.985 -4.293 105.157 -4.26 105.304 -4.189 c
-105.451 -4.112 105.587 -3.994 105.716 -3.836 c
-106.053 -4.248 l
-105.767 -4.653 105.337 -4.851 104.76 -4.851 c
-104.686 -1.279 m
-104.411 -1.279 104.209 -1.374 104.084 -1.559 c
-103.955 -1.746 103.882 -2.036 103.863 -2.425 c
-105.436 -2.425 l
-105.436 -2.338 l
-105.415 -1.955 105.348 -1.687 105.23 -1.529 c
-105.113 -1.363 104.929 -1.279 104.686 -1.279 c
-113.164 -4.777 m
-113.124 -4.69 113.099 -4.542 113.091 -4.337 c
-112.856 -4.682 112.561 -4.851 112.209 -4.851 c
-111.845 -4.851 111.562 -4.755 111.356 -4.557 c
-111.158 -4.351 111.063 -4.065 111.063 -3.69 c
-111.063 -3.289 111.198 -2.97 111.474 -2.735 c
-111.746 -2.492 112.121 -2.367 112.591 -2.367 c
-113.076 -2.367 l
-113.076 -1.941 l
-113.076 -1.706 113.021 -1.54 112.914 -1.441 c
-112.804 -1.334 112.642 -1.279 112.43 -1.279 c
-112.231 -1.279 112.069 -1.338 111.944 -1.455 c
-111.827 -1.573 111.768 -1.72 111.768 -1.897 c
-111.121 -1.897 l
-111.121 -1.702 111.18 -1.511 111.298 -1.324 c
-111.422 -1.139 111.584 -0.992 111.782 -0.882 c
-111.988 -0.775 112.216 -0.721 112.474 -0.721 c
-112.874 -0.721 113.179 -0.823 113.385 -1.029 c
-113.598 -1.235 113.712 -1.529 113.723 -1.912 c
-113.723 -3.925 l
-113.723 -4.23 113.76 -4.495 113.841 -4.719 c
-113.841 -4.777 l
-h
-112.297 -4.263 m
-112.463 -4.263 112.613 -4.219 112.752 -4.131 c
-112.9 -4.042 113.006 -3.932 113.076 -3.793 c
-113.076 -2.852 l
-112.709 -2.852 l
-112.393 -2.852 112.15 -2.922 111.973 -3.057 c
-111.797 -3.186 111.709 -3.373 111.709 -3.616 c
-111.709 -3.844 111.753 -4.009 111.842 -4.116 c
-111.929 -4.215 112.081 -4.263 112.297 -4.263 c
-115.428 -4.777 -0.646 5.644 re
-117.147 -4.777 -0.646 5.644 re
-122.597 -4.777 m
-122.597 -1.324 l
-122.083 -1.324 l
-122.083 -0.794 l
-122.597 -0.794 l
-122.597 -0.426 l
-122.605 0.004 122.719 0.338 122.936 0.573 c
-123.16 0.816 123.472 0.941 123.877 0.941 c
-124.023 0.941 124.163 0.918 124.303 0.881 c
-124.449 0.841 124.6 0.786 124.758 0.72 c
-124.64 0.147 l
-124.405 0.272 124.163 0.338 123.92 0.338 c
-123.674 0.338 123.501 0.268 123.406 0.132 c
-123.306 0.004 123.258 -0.191 123.258 -0.456 c
-123.258 -0.794 l
-123.906 -0.794 l
-123.906 -1.324 l
-123.258 -1.324 l
-123.258 -4.777 l
-h
-125.067 -4.777 -0.646 3.983 re
-126.816 -4.777 -0.647 5.644 re
-129.256 -4.851 m
-128.756 -4.851 128.374 -4.704 128.11 -4.41 c
-127.845 -4.116 127.713 -3.682 127.713 -3.102 c
-127.713 -2.631 l
-127.713 -2.036 127.838 -1.569 128.095 -1.235 c
-128.359 -0.893 128.719 -0.721 129.182 -0.721 c
-129.642 -0.721 129.984 -0.875 130.212 -1.176 c
-130.447 -1.47 130.568 -1.933 130.579 -2.558 c
-130.579 -2.984 l
-128.359 -2.984 l
-128.359 -3.072 l
-128.359 -3.506 128.436 -3.818 128.594 -4.013 c
-128.76 -4.2 128.991 -4.293 129.286 -4.293 c
-129.481 -4.293 129.653 -4.26 129.799 -4.189 c
-129.947 -4.112 130.083 -3.994 130.212 -3.836 c
-130.549 -4.248 l
-130.263 -4.653 129.833 -4.851 129.256 -4.851 c
-129.182 -1.279 m
-128.907 -1.279 128.704 -1.374 128.58 -1.559 c
-128.451 -1.746 128.378 -2.036 128.359 -2.425 c
-129.932 -2.425 l
-129.932 -2.338 l
-129.91 -1.955 129.844 -1.687 129.726 -1.529 c
-129.608 -1.363 129.425 -1.279 129.182 -1.279 c
-133.298 -3.763 m
-133.298 -3.616 133.244 -3.495 133.136 -3.396 c
-133.026 -3.3 132.82 -3.183 132.519 -3.043 c
-132.174 -2.896 131.931 -2.774 131.784 -2.675 c
-131.638 -2.569 131.527 -2.452 131.461 -2.323 c
-131.391 -2.198 131.358 -2.04 131.358 -1.852 c
-131.358 -1.529 131.476 -1.261 131.711 -1.044 c
-131.946 -0.831 132.247 -0.721 132.622 -0.721 c
-133.005 -0.721 133.313 -0.834 133.548 -1.058 c
-133.783 -1.286 133.901 -1.573 133.901 -1.926 c
-133.254 -1.926 l
-133.254 -1.75 133.196 -1.598 133.078 -1.47 c
-132.96 -1.345 132.806 -1.279 132.622 -1.279 c
-132.424 -1.279 132.273 -1.334 132.166 -1.441 c
-132.056 -1.54 132.005 -1.673 132.005 -1.837 c
-132.005 -1.966 132.041 -2.072 132.122 -2.161 c
-132.199 -2.242 132.39 -2.344 132.696 -2.469 c
-133.173 -2.657 133.504 -2.845 133.681 -3.028 c
-133.857 -3.205 133.945 -3.433 133.945 -3.705 c
-133.945 -4.057 133.82 -4.337 133.577 -4.542 c
-133.342 -4.748 133.026 -4.851 132.637 -4.851 c
-132.214 -4.851 131.877 -4.734 131.623 -4.499 c
-131.366 -4.256 131.241 -3.95 131.241 -3.587 c
-131.887 -3.587 l
-131.894 -3.815 131.964 -3.991 132.093 -4.116 c
-132.218 -4.233 132.402 -4.293 132.637 -4.293 c
-132.85 -4.293 133.012 -4.245 133.122 -4.146 c
-133.24 -4.05 133.298 -3.921 133.298 -3.763 c
-139.748 -4.777 -0.647 3.983 re
-139.792 0.249 m
-139.792 0.139 139.762 0.048 139.704 -0.03 c
-139.644 -0.1 139.549 -0.133 139.424 -0.133 c
-139.307 -0.133 139.211 -0.1 139.145 -0.03 c
-139.086 0.048 139.056 0.139 139.056 0.249 c
-139.056 0.367 139.086 0.459 139.145 0.529 c
-139.211 0.606 139.307 0.646 139.424 0.646 c
-139.549 0.646 139.644 0.606 139.704 0.529 c
-139.762 0.448 139.792 0.357 139.792 0.249 c
-141.379 -0.794 m
-141.394 -1.235 l
-141.647 -0.893 141.971 -0.721 142.364 -0.721 c
-143.07 -0.721 143.426 -1.191 143.437 -2.132 c
-143.437 -4.777 l
-142.79 -4.777 l
-142.79 -2.161 l
-142.79 -1.849 142.735 -1.628 142.628 -1.5 c
-142.518 -1.374 142.364 -1.309 142.158 -1.309 c
-142 -1.309 141.853 -1.363 141.717 -1.47 c
-141.589 -1.58 141.485 -1.716 141.408 -1.881 c
-141.408 -4.777 l
-140.762 -4.777 l
-140.762 -0.794 l
-h
-f
-Q
-190.482 115.427 -1.043 5.644 re
-191.172 117.544 m
-191.172 118.15 191.312 118.624 191.599 118.969 c
-191.882 119.311 192.275 119.484 192.775 119.484 c
-193.282 119.484 193.678 119.311 193.965 118.969 c
-194.249 118.624 194.392 118.15 194.392 117.544 c
-194.392 117.278 l
-194.392 116.68 194.249 116.21 193.965 115.867 c
-193.678 115.522 193.282 115.353 192.775 115.353 c
-192.264 115.353 191.867 115.522 191.584 115.867 c
-191.309 116.21 191.172 116.684 191.172 117.293 c
-h
-192.217 117.278 m
-192.217 116.573 192.4 116.22 192.775 116.22 c
-193.128 116.22 193.319 116.515 193.348 117.102 c
-193.348 117.544 l
-193.348 117.903 193.296 118.175 193.201 118.352 c
-193.102 118.528 192.959 118.616 192.775 118.616 c
-192.598 118.616 192.459 118.528 192.363 118.352 c
-192.264 118.175 192.217 117.903 192.217 117.544 c
-h
-194.906 117.544 m
-194.906 118.19 195.024 118.675 195.259 118.998 c
-195.494 119.322 195.825 119.484 196.259 119.484 c
-196.612 119.484 196.884 119.34 197.082 119.057 c
-197.126 119.41 l
-198.067 119.41 l
-198.067 115.427 l
-198.067 114.92 197.923 114.53 197.64 114.265 c
-197.354 113.993 196.949 113.854 196.421 113.854 c
-196.192 113.854 195.957 113.898 195.715 113.986 c
-195.48 114.074 195.303 114.188 195.185 114.324 c
-195.538 115.044 l
-195.634 114.938 195.762 114.853 195.92 114.795 c
-196.074 114.728 196.222 114.691 196.361 114.691 c
-196.597 114.691 196.762 114.751 196.861 114.868 c
-196.968 114.978 197.023 115.155 197.023 115.397 c
-197.023 115.75 l
-196.824 115.485 196.567 115.353 196.244 115.353 c
-195.821 115.353 195.494 115.515 195.259 115.838 c
-195.031 116.169 194.914 116.64 194.906 117.249 c
-h
-195.95 117.278 m
-195.95 116.904 195.997 116.636 196.097 116.47 c
-196.192 116.301 196.346 116.22 196.552 116.22 c
-196.766 116.22 196.924 116.297 197.023 116.455 c
-197.023 118.352 l
-196.913 118.517 196.758 118.602 196.552 118.602 c
-196.346 118.602 196.192 118.517 196.097 118.352 c
-195.997 118.182 195.95 117.914 195.95 117.544 c
-h
-200.595 116.499 m
-200.595 116.588 200.551 116.665 200.462 116.735 c
-200.375 116.812 200.186 116.915 199.904 117.043 c
-199.471 117.22 199.172 117.4 199.008 117.587 c
-198.85 117.771 198.773 118.003 198.773 118.278 c
-198.773 118.62 198.893 118.903 199.139 119.131 c
-199.393 119.366 199.731 119.484 200.154 119.484 c
-200.583 119.484 200.932 119.37 201.198 119.146 c
-201.462 118.918 201.595 118.616 201.595 118.234 c
-200.551 118.234 l
-200.551 118.558 200.411 118.72 200.139 118.72 c
-200.028 118.72 199.941 118.683 199.874 118.616 c
-199.805 118.547 199.772 118.448 199.772 118.323 c
-199.772 118.234 199.808 118.153 199.889 118.087 c
-199.966 118.028 200.147 117.933 200.433 117.808 c
-200.863 117.65 201.161 117.473 201.329 117.278 c
-201.506 117.091 201.595 116.842 201.595 116.529 c
-201.595 116.176 201.462 115.89 201.198 115.676 c
-200.932 115.46 200.583 115.353 200.154 115.353 c
-199.86 115.353 199.598 115.408 199.375 115.515 c
-199.147 115.632 198.971 115.794 198.846 116 c
-198.728 116.206 198.669 116.426 198.669 116.661 c
-199.654 116.661 l
-199.654 116.474 199.691 116.338 199.772 116.25 c
-199.86 116.162 199.992 116.118 200.169 116.118 c
-200.452 116.118 200.595 116.243 200.595 116.499 c
-f
-q 1 0 0 1 206.4894 117.602 cm
-0 0 m
-0 0.607 0.11 1.073 0.338 1.396 c
-0.573 1.72 0.9 1.881 1.323 1.881 c
-1.705 1.881 2.003 1.723 2.219 1.411 c
-2.219 3.469 l
-2.866 3.469 l
-2.866 -2.175 l
-2.278 -2.175 l
-2.234 -1.749 l
-2.028 -2.084 1.723 -2.249 1.323 -2.249 c
-0.911 -2.249 0.588 -2.094 0.353 -1.779 c
-0.118 -1.455 0 -0.999 0 -0.411 c
-h
-0.646 -0.382 m
-0.646 -0.823 0.709 -1.153 0.837 -1.367 c
-0.974 -1.573 1.194 -1.675 1.499 -1.675 c
-1.822 -1.675 2.061 -1.514 2.219 -1.191 c
-2.219 0.823 l
-2.05 1.135 1.811 1.294 1.499 1.294 c
-1.194 1.294 0.974 1.191 0.837 0.985 c
-0.709 0.779 0.646 0.455 0.646 0.015 c
-h
-4.571 -2.175 -0.646 3.983 re
-4.615 2.851 m
-4.615 2.741 4.586 2.65 4.527 2.572 c
-4.469 2.502 4.373 2.469 4.247 2.469 c
-4.13 2.469 4.035 2.502 3.968 2.572 c
-3.91 2.65 3.881 2.741 3.881 2.851 c
-3.881 2.969 3.91 3.061 3.968 3.131 c
-4.035 3.208 4.13 3.248 4.247 3.248 c
-4.373 3.248 4.469 3.208 4.527 3.131 c
-4.586 3.05 4.615 2.959 4.615 2.851 c
-7.231 1.191 m
-7.143 1.209 7.044 1.22 6.938 1.22 c
-6.603 1.22 6.368 1.037 6.232 0.676 c
-6.232 -2.175 l
-5.585 -2.175 l
-5.585 1.808 l
-6.217 1.808 l
-6.232 1.396 l
-6.408 1.72 6.651 1.881 6.967 1.881 c
-7.073 1.881 7.162 1.86 7.231 1.823 c
-h
-9.231 -2.249 m
-8.731 -2.249 8.349 -2.102 8.084 -1.808 c
-7.819 -1.514 7.688 -1.08 7.688 -0.5 c
-7.688 -0.029 l
-7.688 0.566 7.812 1.033 8.07 1.367 c
-8.334 1.709 8.694 1.881 9.157 1.881 c
-9.616 1.881 9.959 1.727 10.186 1.426 c
-10.422 1.132 10.543 0.669 10.553 0.044 c
-10.553 -0.382 l
-8.334 -0.382 l
-8.334 -0.47 l
-8.334 -0.904 8.411 -1.216 8.569 -1.411 c
-8.735 -1.598 8.966 -1.691 9.26 -1.691 c
-9.454 -1.691 9.628 -1.658 9.774 -1.587 c
-9.922 -1.51 10.057 -1.392 10.186 -1.234 c
-10.524 -1.646 l
-10.237 -2.051 9.807 -2.249 9.231 -2.249 c
-9.157 1.323 m
-8.882 1.323 8.679 1.228 8.554 1.043 c
-8.426 0.856 8.353 0.566 8.334 0.177 c
-9.907 0.177 l
-9.907 0.264 l
-9.885 0.647 9.819 0.915 9.701 1.073 c
-9.583 1.239 9.4 1.323 9.157 1.323 c
-12.714 -1.691 m
-12.928 -1.691 13.1 -1.627 13.229 -1.5 c
-13.365 -1.363 13.438 -1.172 13.45 -0.926 c
-14.067 -0.926 l
-14.044 -1.309 13.909 -1.627 13.655 -1.881 c
-13.398 -2.128 13.086 -2.249 12.714 -2.249 c
-12.222 -2.249 11.847 -2.098 11.582 -1.793 c
-11.326 -1.481 11.2 -1.014 11.2 -0.397 c
-11.2 0.044 l
-11.2 0.64 11.326 1.095 11.582 1.411 c
-11.847 1.723 12.222 1.881 12.714 1.881 c
-13.115 1.881 13.435 1.749 13.67 1.484 c
-13.913 1.228 14.044 0.882 14.067 0.441 c
-13.45 0.441 l
-13.427 0.735 13.354 0.956 13.229 1.103 c
-13.111 1.249 12.939 1.323 12.714 1.323 c
-12.421 1.323 12.203 1.224 12.068 1.029 c
-11.928 0.842 11.854 0.533 11.847 0.103 c
-11.847 -0.411 l
-11.847 -0.881 11.914 -1.216 12.053 -1.411 c
-12.2 -1.598 12.421 -1.691 12.714 -1.691 c
-15.669 2.764 m
-15.669 1.808 l
-16.272 1.808 l
-16.272 1.278 l
-15.669 1.278 l
-15.669 -1.191 l
-15.669 -1.348 15.691 -1.466 15.742 -1.544 c
-15.802 -1.624 15.889 -1.661 16.007 -1.661 c
-16.095 -1.661 16.184 -1.646 16.272 -1.617 c
-16.272 -2.175 l
-16.124 -2.223 15.97 -2.249 15.816 -2.249 c
-15.559 -2.249 15.364 -2.157 15.228 -1.97 c
-15.089 -1.786 15.022 -1.525 15.022 -1.191 c
-15.022 1.278 l
-14.42 1.278 l
-14.42 1.808 l
-15.022 1.808 l
-15.022 2.764 l
-h
-16.83 0 m
-16.83 0.577 16.966 1.033 17.242 1.367 c
-17.525 1.709 17.896 1.881 18.359 1.881 c
-18.819 1.881 19.185 1.712 19.461 1.382 c
-19.744 1.058 19.891 0.611 19.902 0.044 c
-19.902 -0.382 l
-19.902 -0.952 19.759 -1.407 19.476 -1.749 c
-19.2 -2.084 18.833 -2.249 18.374 -2.249 c
-17.911 -2.249 17.539 -2.088 17.256 -1.764 c
-16.98 -1.433 16.837 -0.992 16.83 -0.441 c
-h
-17.477 -0.382 m
-17.477 -0.786 17.554 -1.103 17.712 -1.338 c
-17.878 -1.573 18.098 -1.691 18.374 -1.691 c
-18.939 -1.691 19.233 -1.278 19.255 -0.455 c
-19.255 0 l
-19.255 0.401 19.171 0.721 19.006 0.956 c
-18.848 1.199 18.63 1.323 18.359 1.323 c
-18.094 1.323 17.878 1.199 17.712 0.956 c
-17.554 0.721 17.477 0.401 17.477 0 c
-h
-22.387 1.191 m
-22.298 1.209 22.199 1.22 22.092 1.22 c
-21.758 1.22 21.523 1.037 21.387 0.676 c
-21.387 -2.175 l
-20.74 -2.175 l
-20.74 1.808 l
-21.372 1.808 l
-21.387 1.396 l
-21.564 1.72 21.805 1.881 22.122 1.881 c
-22.229 1.881 22.316 1.86 22.387 1.823 c
-h
-24.194 -1.087 m
-24.915 1.808 l
-25.605 1.808 l
-24.312 -2.734 l
-24.213 -3.075 24.07 -3.337 23.885 -3.513 c
-23.709 -3.69 23.507 -3.778 23.283 -3.778 c
-23.195 -3.778 23.081 -3.755 22.945 -3.719 c
-22.945 -3.175 l
-23.092 -3.19 l
-23.276 -3.19 23.423 -3.146 23.533 -3.057 c
-23.64 -2.969 23.727 -2.811 23.798 -2.587 c
-23.915 -2.146 l
-22.754 1.808 l
-23.459 1.808 l
-h
-30.482 0 m
-30.482 0.636 30.57 1.239 30.746 1.808 c
-30.923 2.374 31.166 2.87 31.482 3.293 c
-31.677 3.557 31.864 3.748 32.04 3.865 c
-32.172 3.41 l
-31.878 3.135 31.636 2.712 31.452 2.146 c
-31.265 1.577 31.162 0.945 31.143 0.25 c
-31.143 -0.044 l
-31.143 -0.908 31.261 -1.672 31.496 -2.337 c
-31.679 -2.837 31.908 -3.219 32.172 -3.484 c
-32.04 -3.91 l
-31.812 -3.752 31.588 -3.502 31.364 -3.16 c
-30.776 -2.278 30.482 -1.228 30.482 0 c
-34.289 -2.249 m
-33.789 -2.249 33.407 -2.102 33.142 -1.808 c
-32.878 -1.514 32.745 -1.08 32.745 -0.5 c
-32.745 -0.029 l
-32.745 0.566 32.87 1.033 33.128 1.367 c
-33.392 1.709 33.753 1.881 34.216 1.881 c
-34.675 1.881 35.016 1.727 35.245 1.426 c
-35.48 1.132 35.6 0.669 35.612 0.044 c
-35.612 -0.382 l
-33.392 -0.382 l
-33.392 -0.47 l
-33.392 -0.904 33.47 -1.216 33.628 -1.411 c
-33.793 -1.598 34.025 -1.691 34.318 -1.691 c
-34.513 -1.691 34.686 -1.658 34.833 -1.587 c
-34.98 -1.51 35.116 -1.392 35.245 -1.234 c
-35.583 -1.646 l
-35.296 -2.051 34.866 -2.249 34.289 -2.249 c
-34.216 1.323 m
-33.94 1.323 33.738 1.228 33.613 1.043 c
-33.484 0.856 33.41 0.566 33.392 0.177 c
-34.965 0.177 l
-34.965 0.264 l
-34.943 0.647 34.877 0.915 34.759 1.073 c
-34.642 1.239 34.458 1.323 34.216 1.323 c
-37.537 0.353 m
-38.228 1.808 l
-38.978 1.808 l
-37.89 -0.162 l
-39.008 -2.175 l
-38.258 -2.175 l
-37.552 -0.691 l
-36.847 -2.175 l
-36.097 -2.175 l
-37.2 -0.162 l
-36.126 1.808 l
-36.876 1.808 l
-h
-41.007 -1.691 m
-41.219 -1.691 41.393 -1.627 41.52 -1.5 c
-41.657 -1.363 41.73 -1.172 41.742 -0.926 c
-42.359 -0.926 l
-42.337 -1.309 42.201 -1.627 41.948 -1.881 c
-41.69 -2.128 41.377 -2.249 41.007 -2.249 c
-40.514 -2.249 40.139 -2.098 39.874 -1.793 c
-39.617 -1.481 39.492 -1.014 39.492 -0.397 c
-39.492 0.044 l
-39.492 0.64 39.617 1.095 39.874 1.411 c
-40.139 1.723 40.514 1.881 41.007 1.881 c
-41.407 1.881 41.727 1.749 41.962 1.484 c
-42.204 1.228 42.337 0.882 42.359 0.441 c
-41.742 0.441 l
-41.719 0.735 41.646 0.956 41.52 1.103 c
-41.403 1.249 41.231 1.323 41.007 1.323 c
-40.712 1.323 40.496 1.224 40.36 1.029 c
-40.22 0.842 40.146 0.533 40.139 0.103 c
-40.139 -0.411 l
-40.139 -0.881 40.205 -1.216 40.345 -1.411 c
-40.492 -1.598 40.712 -1.691 41.007 -1.691 c
-43.814 -2.175 -0.647 5.644 re
-46.856 -1.822 m
-46.64 -2.109 46.328 -2.249 45.916 -2.249 c
-45.552 -2.249 45.277 -2.128 45.092 -1.881 c
-44.917 -1.627 44.821 -1.264 44.813 -0.794 c
-44.813 1.808 l
-45.46 1.808 l
-45.46 -0.735 l
-45.46 -1.363 45.644 -1.675 46.019 -1.675 c
-46.419 -1.675 46.695 -1.5 46.842 -1.147 c
-46.842 1.808 l
-47.489 1.808 l
-47.489 -2.175 l
-46.871 -2.175 l
-h
-48.341 0 m
-48.341 0.607 48.452 1.073 48.68 1.396 c
-48.915 1.72 49.241 1.881 49.664 1.881 c
-50.046 1.881 50.344 1.723 50.561 1.411 c
-50.561 3.469 l
-51.207 3.469 l
-51.207 -2.175 l
-50.619 -2.175 l
-50.575 -1.749 l
-50.37 -2.084 50.064 -2.249 49.664 -2.249 c
-49.252 -2.249 48.929 -2.094 48.694 -1.779 c
-48.458 -1.455 48.341 -0.999 48.341 -0.411 c
-h
-48.988 -0.382 m
-48.988 -0.823 49.05 -1.153 49.179 -1.367 c
-49.315 -1.573 49.536 -1.675 49.84 -1.675 c
-50.164 -1.675 50.403 -1.514 50.561 -1.191 c
-50.561 0.823 l
-50.392 1.135 50.153 1.294 49.84 1.294 c
-49.536 1.294 49.315 1.191 49.179 0.985 c
-49.05 0.779 48.988 0.455 48.988 0.015 c
-h
-52.913 -2.175 -0.647 3.983 re
-52.957 2.851 m
-52.957 2.741 52.927 2.65 52.869 2.572 c
-52.809 2.502 52.714 2.469 52.589 2.469 c
-52.472 2.469 52.376 2.502 52.31 2.572 c
-52.251 2.65 52.221 2.741 52.221 2.851 c
-52.221 2.969 52.251 3.061 52.31 3.131 c
-52.376 3.208 52.472 3.248 52.589 3.248 c
-52.714 3.248 52.809 3.208 52.869 3.131 c
-52.927 3.05 52.957 2.959 52.957 2.851 c
-54.544 1.808 m
-54.559 1.367 l
-54.812 1.709 55.136 1.881 55.529 1.881 c
-56.235 1.881 56.591 1.411 56.602 0.47 c
-56.602 -2.175 l
-55.955 -2.175 l
-55.955 0.441 l
-55.955 0.754 55.901 0.974 55.793 1.103 c
-55.683 1.228 55.529 1.294 55.323 1.294 c
-55.165 1.294 55.018 1.239 54.883 1.132 c
-54.754 1.022 54.65 0.886 54.573 0.721 c
-54.573 -2.175 l
-53.927 -2.175 l
-53.927 1.808 l
-h
-57.44 0 m
-57.44 0.617 57.55 1.081 57.778 1.396 c
-58.002 1.72 58.336 1.881 58.777 1.881 c
-59.178 1.881 59.483 1.706 59.689 1.353 c
-59.733 1.808 l
-60.321 1.808 l
-60.321 -2.219 l
-60.321 -2.708 60.192 -3.087 59.939 -3.351 c
-59.681 -3.616 59.329 -3.748 58.881 -3.748 c
-58.682 -3.748 58.461 -3.697 58.219 -3.601 c
-57.973 -3.502 57.792 -3.381 57.675 -3.233 c
-57.94 -2.793 l
-58.204 -3.057 58.502 -3.19 58.837 -3.19 c
-59.373 -3.19 59.649 -2.896 59.66 -2.308 c
-59.66 -1.779 l
-59.454 -2.094 59.153 -2.249 58.763 -2.249 c
-58.351 -2.249 58.028 -2.098 57.792 -1.793 c
-57.565 -1.481 57.447 -1.029 57.44 -0.441 c
-h
-58.101 -0.382 m
-58.101 -0.823 58.164 -1.153 58.293 -1.367 c
-58.417 -1.573 58.634 -1.675 58.939 -1.675 c
-59.263 -1.675 59.502 -1.51 59.66 -1.176 c
-59.66 0.808 l
-59.49 1.132 59.252 1.294 58.939 1.294 c
-58.646 1.294 58.428 1.191 58.293 0.985 c
-58.164 0.779 58.101 0.455 58.101 0.015 c
-h
-f
-Q
-q 1 0 0 1 38.464 110.9585 cm
-0 0 m
-0 -0.956 l
-0.603 -0.956 l
-0.603 -1.485 l
-0 -1.485 l
-0 -3.955 l
-0 -4.112 0.023 -4.23 0.073 -4.308 c
-0.133 -4.388 0.221 -4.425 0.339 -4.425 c
-0.426 -4.425 0.515 -4.41 0.603 -4.381 c
-0.603 -4.939 l
-0.456 -4.987 0.302 -5.013 0.148 -5.013 c
--0.11 -5.013 -0.305 -4.921 -0.44 -4.734 c
--0.58 -4.549 -0.646 -4.289 -0.646 -3.955 c
--0.646 -1.485 l
--1.249 -1.485 l
--1.249 -0.956 l
--0.646 -0.956 l
--0.646 0 l
-h
-2.014 -1.368 m
-2.267 -1.044 2.587 -0.882 2.97 -0.882 c
-3.675 -0.882 4.031 -1.353 4.042 -2.294 c
-4.042 -4.939 l
-3.396 -4.939 l
-3.396 -2.323 l
-3.396 -2.01 3.341 -1.79 3.234 -1.661 c
-3.124 -1.536 2.97 -1.47 2.764 -1.47 c
-2.606 -1.47 2.459 -1.525 2.323 -1.632 c
-2.194 -1.742 2.091 -1.878 2.014 -2.043 c
-2.014 -4.939 l
-1.367 -4.939 l
-1.367 0.706 l
-2.014 0.706 l
-h
-6.423 -5.013 m
-5.924 -5.013 5.542 -4.866 5.278 -4.572 c
-5.012 -4.278 4.881 -3.844 4.881 -3.263 c
-4.881 -2.793 l
-4.881 -2.198 5.006 -1.731 5.262 -1.397 c
-5.527 -1.055 5.887 -0.882 6.35 -0.882 c
-6.81 -0.882 7.152 -1.037 7.379 -1.338 c
-7.614 -1.632 7.736 -2.095 7.747 -2.72 c
-7.747 -3.146 l
-5.527 -3.146 l
-5.527 -3.234 l
-5.527 -3.668 5.604 -3.98 5.762 -4.175 c
-5.928 -4.362 6.159 -4.454 6.453 -4.454 c
-6.648 -4.454 6.82 -4.421 6.968 -4.351 c
-7.115 -4.274 7.25 -4.156 7.379 -3.998 c
-7.717 -4.41 l
-7.431 -4.815 7.001 -5.013 6.423 -5.013 c
-6.35 -1.441 m
-6.074 -1.441 5.872 -1.536 5.748 -1.721 c
-5.619 -1.908 5.546 -2.198 5.527 -2.587 c
-7.1 -2.587 l
-7.1 -2.5 l
-7.078 -2.117 7.011 -1.849 6.894 -1.691 c
-6.776 -1.525 6.593 -1.441 6.35 -1.441 c
-f
-Q
-q 1 0 0 1 50.5656 106.5483 cm
-0 0 m
-0 0.166 0.051 0.301 0.161 0.412 c
-0.268 0.518 0.415 0.573 0.602 0.573 c
-0.768 0.573 0.911 0.518 1.028 0.412 c
-1.146 0.301 1.205 0.166 1.205 0 c
-1.205 -0.169 1.146 -0.305 1.028 -0.411 c
-0.911 -0.522 0.768 -0.573 0.602 -0.573 c
-0.426 -0.573 0.278 -0.522 0.161 -0.411 c
-0.051 -0.305 0 -0.169 0 0 c
-1.969 1.588 m
-1.969 2.234 2.087 2.72 2.322 3.042 c
-2.557 3.366 2.888 3.528 3.322 3.528 c
-3.675 3.528 3.946 3.385 4.145 3.102 c
-4.189 3.454 l
-5.13 3.454 l
-5.13 -0.529 l
-5.13 -1.036 4.986 -1.426 4.704 -1.691 c
-4.417 -1.962 4.012 -2.102 3.484 -2.102 c
-3.256 -2.102 3.021 -2.057 2.778 -1.97 c
-2.543 -1.881 2.366 -1.768 2.248 -1.631 c
-2.601 -0.912 l
-2.697 -1.018 2.826 -1.103 2.983 -1.161 c
-3.138 -1.228 3.285 -1.264 3.424 -1.264 c
-3.659 -1.264 3.825 -1.205 3.924 -1.087 c
-4.031 -0.977 4.086 -0.801 4.086 -0.559 c
-4.086 -0.206 l
-3.887 -0.47 3.63 -0.603 3.307 -0.603 c
-2.884 -0.603 2.557 -0.441 2.322 -0.118 c
-2.094 0.214 1.977 0.684 1.969 1.294 c
-h
-3.013 1.323 m
-3.013 0.948 3.061 0.68 3.16 0.515 c
-3.256 0.345 3.41 0.264 3.615 0.264 c
-3.829 0.264 3.987 0.341 4.086 0.5 c
-4.086 2.396 l
-3.976 2.562 3.821 2.646 3.615 2.646 c
-3.41 2.646 3.256 2.562 3.16 2.396 c
-3.061 2.227 3.013 1.959 3.013 1.588 c
-h
-6.981 -0.529 -1.043 3.983 re
-5.894 4.484 m
-5.894 4.638 5.942 4.767 6.04 4.866 c
-6.148 4.972 6.283 5.027 6.453 5.027 c
-6.628 5.027 6.765 4.972 6.864 4.866 c
-6.971 4.767 7.025 4.638 7.025 4.484 c
-7.025 4.314 6.971 4.179 6.864 4.072 c
-6.765 3.973 6.628 3.925 6.453 3.925 c
-6.283 3.925 6.148 3.973 6.04 4.072 c
-5.942 4.179 5.894 4.314 5.894 4.484 c
-8.995 4.424 m
-8.995 3.454 l
-9.525 3.454 l
-9.525 2.66 l
-8.995 2.66 l
-8.995 0.69 l
-8.995 0.533 9.014 0.426 9.055 0.368 c
-9.102 0.309 9.186 0.279 9.304 0.279 c
-9.411 0.279 9.495 0.287 9.554 0.309 c
-9.554 -0.5 l
-9.377 -0.565 9.186 -0.603 8.98 -0.603 c
-8.305 -0.603 7.96 -0.216 7.952 0.559 c
-7.952 2.66 l
-7.496 2.66 l
-7.496 3.454 l
-7.952 3.454 l
-7.952 4.424 l
-h
-11.421 1 m
-11.141 0.69 l
-11.141 -0.529 l
-10.098 -0.529 l
-10.098 5.116 l
-11.141 5.116 l
-11.141 2.072 l
-11.259 2.263 l
-11.979 3.454 l
-13.229 3.454 l
-12.068 1.808 l
-13.331 -0.529 l
-12.141 -0.529 l
-h
-15.228 -0.603 m
-14.699 -0.603 14.279 -0.448 13.978 -0.133 c
-13.684 0.191 13.537 0.651 13.537 1.249 c
-13.537 1.558 l
-13.537 2.183 13.674 2.668 13.949 3.013 c
-14.221 3.356 14.614 3.528 15.125 3.528 c
-15.625 3.528 15.996 3.366 16.242 3.042 c
-16.496 2.72 16.628 2.242 16.639 1.617 c
-16.639 1.118 l
-14.566 1.118 l
-14.585 0.823 14.647 0.607 14.757 0.47 c
-14.875 0.331 15.056 0.264 15.301 0.264 c
-15.643 0.264 15.933 0.382 16.168 0.617 c
-16.581 -0.015 l
-16.452 -0.191 16.264 -0.334 16.022 -0.441 c
-15.775 -0.548 15.511 -0.603 15.228 -0.603 c
-14.581 1.837 m
-15.61 1.837 l
-15.61 1.941 l
-15.61 2.176 15.569 2.352 15.492 2.469 c
-15.422 2.595 15.294 2.66 15.11 2.66 c
-14.934 2.66 14.802 2.591 14.713 2.454 c
-14.632 2.326 14.588 2.12 14.581 1.837 c
-18.829 -0.603 m
-18.3 -0.603 17.881 -0.448 17.58 -0.133 c
-17.286 0.191 17.138 0.651 17.138 1.249 c
-17.138 1.558 l
-17.138 2.183 17.275 2.668 17.55 3.013 c
-17.822 3.356 18.216 3.528 18.726 3.528 c
-19.226 3.528 19.597 3.366 19.843 3.042 c
-20.097 2.72 20.23 2.242 20.24 1.617 c
-20.24 1.118 l
-18.168 1.118 l
-18.186 0.823 18.248 0.607 18.359 0.47 c
-18.476 0.331 18.657 0.264 18.902 0.264 c
-19.245 0.264 19.534 0.382 19.77 0.617 c
-20.182 -0.015 l
-20.053 -0.191 19.866 -0.334 19.623 -0.441 c
-19.376 -0.548 19.112 -0.603 18.829 -0.603 c
-18.183 1.837 m
-19.211 1.837 l
-19.211 1.941 l
-19.211 2.176 19.17 2.352 19.093 2.469 c
-19.024 2.595 18.896 2.66 18.711 2.66 c
-18.535 2.66 18.403 2.591 18.314 2.454 c
-18.233 2.326 18.19 2.12 18.183 1.837 c
-23.93 1.338 m
-23.93 0.709 23.82 0.228 23.606 -0.103 c
-23.39 -0.437 23.07 -0.603 22.651 -0.603 c
-22.328 -0.603 22.067 -0.47 21.872 -0.206 c
-21.872 -2.057 l
-20.828 -2.057 l
-20.828 3.454 l
-21.784 3.454 l
-21.828 3.087 l
-22.023 3.381 22.291 3.528 22.636 3.528 c
-23.055 3.528 23.375 3.37 23.592 3.057 c
-23.804 2.753 23.918 2.282 23.93 1.646 c
-h
-22.886 1.602 m
-22.886 1.984 22.842 2.253 22.754 2.411 c
-22.673 2.565 22.534 2.646 22.328 2.646 c
-22.121 2.646 21.967 2.558 21.872 2.381 c
-21.872 0.515 l
-21.96 0.345 22.114 0.264 22.343 0.264 c
-22.548 0.264 22.688 0.345 22.769 0.515 c
-22.846 0.69 22.886 0.963 22.886 1.338 c
-h
-f
-Q
-q 1 0 0 1 78.9929 106.0196 cm
-0 0 m
-0 3.453 l
--0.515 3.453 l
--0.515 3.983 l
-0 3.983 l
-0 4.351 l
-0.008 4.781 0.121 5.115 0.339 5.35 c
-0.563 5.593 0.875 5.718 1.279 5.718 c
-1.426 5.718 1.565 5.695 1.706 5.659 c
-1.852 5.618 2.003 5.564 2.161 5.497 c
-2.043 4.924 l
-1.808 5.049 1.565 5.115 1.324 5.115 c
-1.077 5.115 0.904 5.045 0.809 4.909 c
-0.709 4.781 0.661 4.586 0.661 4.321 c
-0.661 3.983 l
-1.309 3.983 l
-1.309 3.453 l
-0.661 3.453 l
-0.661 0 l
-h
-2.469 0 -0.646 3.983 re
-4.219 0 -0.647 5.644 re
-6.659 -0.074 m
-6.159 -0.074 5.777 0.073 5.513 0.367 c
-5.247 0.661 5.116 1.095 5.116 1.675 c
-5.116 2.146 l
-5.116 2.741 5.241 3.208 5.498 3.542 c
-5.762 3.884 6.122 4.056 6.585 4.056 c
-7.045 4.056 7.387 3.902 7.614 3.601 c
-7.85 3.307 7.971 2.844 7.982 2.219 c
-7.982 1.793 l
-5.762 1.793 l
-5.762 1.705 l
-5.762 1.271 5.839 0.959 5.997 0.764 c
-6.163 0.577 6.394 0.484 6.689 0.484 c
-6.883 0.484 7.056 0.517 7.203 0.588 c
-7.35 0.665 7.485 0.783 7.614 0.941 c
-7.952 0.529 l
-7.666 0.124 7.236 -0.074 6.659 -0.074 c
-6.585 3.498 m
-6.31 3.498 6.108 3.403 5.983 3.218 c
-5.854 3.031 5.781 2.741 5.762 2.352 c
-7.335 2.352 l
-7.335 2.439 l
-7.313 2.822 7.247 3.09 7.129 3.248 c
-7.011 3.414 6.828 3.498 6.585 3.498 c
-10.157 2.131 m
-10.157 1.043 9.912 0.077 9.422 -0.765 c
-9.158 -1.213 8.882 -1.536 8.599 -1.735 c
-8.482 -1.309 l
-8.783 -1.015 9.029 -0.563 9.216 0.043 c
-9.411 0.65 9.511 1.315 9.511 2.042 c
-9.511 2.175 l
-9.511 3.104 9.357 3.939 9.055 4.674 c
-8.886 5.074 8.695 5.394 8.482 5.629 c
-8.599 6.04 l
-8.871 5.853 9.136 5.556 9.393 5.144 c
-9.9 4.292 10.157 3.285 10.157 2.131 c
-11.171 -1.073 m
-10.774 -0.809 l
-11.009 -0.485 11.131 -0.151 11.142 0.191 c
-11.142 0.808 l
-11.803 0.808 l
-11.803 0.278 l
-11.803 0.022 11.738 -0.225 11.612 -0.47 c
-11.495 -0.713 11.348 -0.915 11.171 -1.073 c
-19.198 1.146 m
-19.8 3.983 l
-20.447 3.983 l
-19.462 0 l
-18.947 0 l
-18.169 2.851 l
-17.419 0 l
-16.889 0 l
-15.934 3.983 l
-16.566 3.983 l
-17.184 1.219 l
-17.918 3.983 l
-18.433 3.983 l
-h
-21.77 3.571 m
-22.023 3.895 22.343 4.056 22.725 4.056 c
-23.431 4.056 23.788 3.586 23.798 2.645 c
-23.798 0 l
-23.152 0 l
-23.152 2.616 l
-23.152 2.929 23.096 3.149 22.99 3.278 c
-22.88 3.403 22.725 3.469 22.519 3.469 c
-22.361 3.469 22.215 3.414 22.078 3.307 c
-21.949 3.197 21.847 3.061 21.77 2.896 c
-21.77 0 l
-21.122 0 l
-21.122 5.644 l
-21.77 5.644 l
-h
-24.621 2.175 m
-24.621 2.752 24.757 3.208 25.033 3.542 c
-25.315 3.884 25.687 4.056 26.15 4.056 c
-26.61 4.056 26.977 3.887 27.252 3.557 c
-27.535 3.233 27.682 2.786 27.693 2.219 c
-27.693 1.793 l
-27.693 1.223 27.551 0.768 27.267 0.426 c
-26.992 0.091 26.624 -0.074 26.165 -0.074 c
-25.702 -0.074 25.33 0.087 25.047 0.411 c
-24.772 0.742 24.629 1.183 24.621 1.734 c
-h
-25.268 1.793 m
-25.268 1.389 25.345 1.072 25.503 0.837 c
-25.669 0.602 25.889 0.484 26.165 0.484 c
-26.73 0.484 27.025 0.897 27.046 1.72 c
-27.046 2.175 l
-27.046 2.576 26.962 2.896 26.797 3.131 c
-26.639 3.373 26.422 3.498 26.15 3.498 c
-25.885 3.498 25.669 3.373 25.503 3.131 c
-25.345 2.896 25.268 2.576 25.268 2.175 c
-h
-29.236 0 -0.646 5.644 re
-31.677 -0.074 m
-31.177 -0.074 30.795 0.073 30.53 0.367 c
-30.265 0.661 30.134 1.095 30.134 1.675 c
-30.134 2.146 l
-30.134 2.741 30.258 3.208 30.516 3.542 c
-30.78 3.884 31.14 4.056 31.603 4.056 c
-32.062 4.056 32.405 3.902 32.632 3.601 c
-32.868 3.307 32.989 2.844 32.999 2.219 c
-32.999 1.793 l
-30.78 1.793 l
-30.78 1.705 l
-30.78 1.271 30.857 0.959 31.015 0.764 c
-31.181 0.577 31.412 0.484 31.706 0.484 c
-31.9 0.484 32.074 0.517 32.22 0.588 c
-32.368 0.665 32.503 0.783 32.632 0.941 c
-32.97 0.529 l
-32.684 0.124 32.254 -0.074 31.677 -0.074 c
-31.603 3.498 m
-31.328 3.498 31.125 3.403 31 3.218 c
-30.872 3.031 30.799 2.741 30.78 2.352 c
-32.353 2.352 l
-32.353 2.439 l
-32.331 2.822 32.265 3.09 32.147 3.248 c
-32.029 3.414 31.846 3.498 31.603 3.498 c
-f
-Q
-q 1 0 0 1 117.4607 110.9726 cm
-0 0 m
-0 -0.97 l
-0.529 -0.97 l
-0.529 -1.764 l
-0 -1.764 l
-0 -3.734 l
-0 -3.891 0.018 -3.998 0.058 -4.056 c
-0.106 -4.116 0.191 -4.145 0.309 -4.145 c
-0.415 -4.145 0.5 -4.137 0.559 -4.116 c
-0.559 -4.924 l
-0.382 -4.99 0.191 -5.027 -0.015 -5.027 c
--0.691 -5.027 -1.037 -4.641 -1.043 -3.865 c
--1.043 -1.764 l
--1.5 -1.764 l
--1.5 -0.97 l
--1.043 -0.97 l
--1.043 0 l
-h
-2.072 -0.97 m
-2.102 -1.338 l
-2.337 -1.043 2.645 -0.897 3.028 -0.897 c
-3.429 -0.897 3.707 -1.08 3.866 -1.44 c
-4.101 -1.08 4.428 -0.897 4.85 -0.897 c
-5.546 -0.897 5.897 -1.382 5.909 -2.352 c
-5.909 -4.953 l
-4.88 -4.953 l
-4.88 -2.41 l
-4.88 -2.186 4.843 -2.024 4.777 -1.926 c
-4.719 -1.83 4.608 -1.778 4.453 -1.778 c
-4.255 -1.778 4.116 -1.896 4.027 -2.131 c
-4.027 -4.953 l
-2.984 -4.953 l
-2.984 -2.425 l
-2.984 -2.19 2.955 -2.024 2.896 -1.926 c
-2.837 -1.83 2.726 -1.778 2.572 -1.778 c
-2.396 -1.778 2.253 -1.874 2.146 -2.057 c
-2.146 -4.953 l
-1.103 -4.953 l
-1.103 -0.97 l
-h
-9.789 -3.087 m
-9.789 -3.715 9.679 -4.197 9.466 -4.527 c
-9.249 -4.862 8.93 -5.027 8.511 -5.027 c
-8.187 -5.027 7.927 -4.895 7.732 -4.63 c
-7.732 -6.482 l
-6.688 -6.482 l
-6.688 -0.97 l
-7.644 -0.97 l
-7.688 -1.338 l
-7.882 -1.043 8.151 -0.897 8.496 -0.897 c
-8.915 -0.897 9.234 -1.055 9.452 -1.367 c
-9.664 -1.672 9.779 -2.142 9.789 -2.778 c
-h
-8.746 -2.822 m
-8.746 -2.44 8.702 -2.171 8.613 -2.013 c
-8.533 -1.859 8.393 -1.778 8.187 -1.778 c
-7.981 -1.778 7.827 -1.866 7.732 -2.043 c
-7.732 -3.91 l
-7.819 -4.079 7.975 -4.16 8.202 -4.16 c
-8.407 -4.16 8.548 -4.079 8.628 -3.91 c
-8.706 -3.734 8.746 -3.461 8.746 -3.087 c
-h
-f
-Q
-q 1 0 0 1 131.4391 108.1946 cm
-0 0 m
-0 0.607 0.111 1.073 0.339 1.396 c
-0.574 1.72 0.9 1.881 1.324 1.881 c
-1.706 1.881 2.003 1.723 2.22 1.411 c
-2.22 3.469 l
-2.866 3.469 l
-2.866 -2.175 l
-2.278 -2.175 l
-2.234 -1.749 l
-2.029 -2.084 1.723 -2.249 1.324 -2.249 c
-0.912 -2.249 0.588 -2.094 0.353 -1.779 c
-0.118 -1.455 0 -0.999 0 -0.411 c
-h
-0.647 -0.382 m
-0.647 -0.823 0.709 -1.153 0.838 -1.367 c
-0.975 -1.573 1.195 -1.675 1.5 -1.675 c
-1.823 -1.675 2.062 -1.514 2.22 -1.191 c
-2.22 0.823 l
-2.051 1.135 1.812 1.294 1.5 1.294 c
-1.195 1.294 0.975 1.191 0.838 0.985 c
-0.709 0.779 0.647 0.455 0.647 0.015 c
-h
-4.572 -2.175 -0.647 3.983 re
-4.616 2.851 m
-4.616 2.741 4.586 2.65 4.528 2.572 c
-4.469 2.502 4.374 2.469 4.248 2.469 c
-4.131 2.469 4.035 2.502 3.969 2.572 c
-3.911 2.65 3.881 2.741 3.881 2.851 c
-3.881 2.969 3.911 3.061 3.969 3.131 c
-4.035 3.208 4.131 3.248 4.248 3.248 c
-4.374 3.248 4.469 3.208 4.528 3.131 c
-4.586 3.05 4.616 2.959 4.616 2.851 c
-7.232 1.191 m
-7.144 1.209 7.045 1.22 6.938 1.22 c
-6.604 1.22 6.369 1.037 6.232 0.676 c
-6.232 -2.175 l
-5.586 -2.175 l
-5.586 1.808 l
-6.218 1.808 l
-6.232 1.396 l
-6.409 1.72 6.652 1.881 6.968 1.881 c
-7.074 1.881 7.163 1.86 7.232 1.823 c
-h
-9.231 -2.249 m
-8.732 -2.249 8.349 -2.102 8.085 -1.808 c
-7.82 -1.514 7.688 -1.08 7.688 -0.5 c
-7.688 -0.029 l
-7.688 0.566 7.813 1.033 8.07 1.367 c
-8.335 1.709 8.695 1.881 9.158 1.881 c
-9.617 1.881 9.959 1.727 10.186 1.426 c
-10.422 1.132 10.543 0.669 10.554 0.044 c
-10.554 -0.382 l
-8.335 -0.382 l
-8.335 -0.47 l
-8.335 -0.904 8.412 -1.216 8.57 -1.411 c
-8.736 -1.598 8.967 -1.691 9.261 -1.691 c
-9.455 -1.691 9.628 -1.658 9.775 -1.587 c
-9.922 -1.51 10.058 -1.392 10.186 -1.234 c
-10.525 -1.646 l
-10.238 -2.051 9.808 -2.249 9.231 -2.249 c
-9.158 1.323 m
-8.882 1.323 8.68 1.228 8.555 1.043 c
-8.426 0.856 8.353 0.566 8.335 0.177 c
-9.908 0.177 l
-9.908 0.264 l
-9.885 0.647 9.819 0.915 9.702 1.073 c
-9.584 1.239 9.401 1.323 9.158 1.323 c
-12.715 -1.691 m
-12.929 -1.691 13.101 -1.627 13.23 -1.5 c
-13.365 -1.363 13.439 -1.172 13.45 -0.926 c
-14.067 -0.926 l
-14.045 -1.309 13.91 -1.627 13.656 -1.881 c
-13.399 -2.128 13.086 -2.249 12.715 -2.249 c
-12.223 -2.249 11.848 -2.098 11.583 -1.793 c
-11.326 -1.481 11.201 -1.014 11.201 -0.397 c
-11.201 0.044 l
-11.201 0.64 11.326 1.095 11.583 1.411 c
-11.848 1.723 12.223 1.881 12.715 1.881 c
-13.116 1.881 13.436 1.749 13.671 1.484 c
-13.913 1.228 14.045 0.882 14.067 0.441 c
-13.45 0.441 l
-13.428 0.735 13.355 0.956 13.23 1.103 c
-13.112 1.249 12.939 1.323 12.715 1.323 c
-12.421 1.323 12.204 1.224 12.068 1.029 c
-11.929 0.842 11.855 0.533 11.848 0.103 c
-11.848 -0.411 l
-11.848 -0.881 11.914 -1.216 12.054 -1.411 c
-12.2 -1.598 12.421 -1.691 12.715 -1.691 c
-15.67 2.764 m
-15.67 1.808 l
-16.272 1.808 l
-16.272 1.278 l
-15.67 1.278 l
-15.67 -1.191 l
-15.67 -1.348 15.692 -1.466 15.743 -1.544 c
-15.802 -1.624 15.89 -1.661 16.008 -1.661 c
-16.096 -1.661 16.184 -1.646 16.272 -1.617 c
-16.272 -2.175 l
-16.125 -2.223 15.971 -2.249 15.817 -2.249 c
-15.559 -2.249 15.364 -2.157 15.229 -1.97 c
-15.089 -1.786 15.023 -1.525 15.023 -1.191 c
-15.023 1.278 l
-14.42 1.278 l
-14.42 1.808 l
-15.023 1.808 l
-15.023 2.764 l
-h
-16.831 0 m
-16.831 0.577 16.967 1.033 17.242 1.367 c
-17.525 1.709 17.897 1.881 18.359 1.881 c
-18.819 1.881 19.186 1.712 19.462 1.382 c
-19.745 1.058 19.892 0.611 19.903 0.044 c
-19.903 -0.382 l
-19.903 -0.952 19.759 -1.407 19.476 -1.749 c
-19.201 -2.084 18.834 -2.249 18.375 -2.249 c
-17.911 -2.249 17.54 -2.087 17.257 -1.764 c
-16.981 -1.433 16.838 -0.992 16.831 -0.441 c
-h
-17.477 -0.382 m
-17.477 -0.786 17.554 -1.103 17.712 -1.338 c
-17.878 -1.573 18.099 -1.691 18.375 -1.691 c
-18.94 -1.691 19.234 -1.278 19.256 -0.455 c
-19.256 0 l
-19.256 0.401 19.171 0.721 19.006 0.956 c
-18.849 1.199 18.631 1.323 18.359 1.323 c
-18.095 1.323 17.878 1.199 17.712 0.956 c
-17.554 0.721 17.477 0.401 17.477 0 c
-h
-22.387 1.191 m
-22.298 1.209 22.2 1.22 22.093 1.22 c
-21.758 1.22 21.523 1.037 21.388 0.676 c
-21.388 -2.175 l
-20.74 -2.175 l
-20.74 1.808 l
-21.373 1.808 l
-21.388 1.396 l
-21.564 1.72 21.806 1.881 22.122 1.881 c
-22.229 1.881 22.317 1.86 22.387 1.823 c
-h
-24.195 -1.087 m
-24.915 1.808 l
-25.606 1.808 l
-24.312 -2.734 l
-24.214 -3.075 24.07 -3.337 23.886 -3.513 c
-23.709 -3.69 23.508 -3.778 23.283 -3.778 c
-23.196 -3.778 23.082 -3.755 22.946 -3.719 c
-22.946 -3.175 l
-23.092 -3.19 l
-23.277 -3.19 23.423 -3.146 23.534 -3.057 c
-23.64 -2.969 23.728 -2.811 23.798 -2.587 c
-23.915 -2.146 l
-22.755 1.808 l
-23.46 1.808 l
-h
-31.871 -2.175 m
-31.831 -2.087 31.805 -1.94 31.798 -1.735 c
-31.563 -2.08 31.269 -2.249 30.916 -2.249 c
-30.552 -2.249 30.269 -2.153 30.063 -1.955 c
-29.865 -1.749 29.77 -1.463 29.77 -1.087 c
-29.77 -0.687 29.905 -0.368 30.181 -0.133 c
-30.453 0.11 30.828 0.235 31.298 0.235 c
-31.784 0.235 l
-31.784 0.661 l
-31.784 0.897 31.728 1.062 31.622 1.161 c
-31.511 1.268 31.35 1.323 31.137 1.323 c
-30.938 1.323 30.776 1.264 30.651 1.147 c
-30.534 1.029 30.475 0.882 30.475 0.706 c
-29.828 0.706 l
-29.828 0.9 29.887 1.091 30.005 1.278 c
-30.13 1.463 30.292 1.61 30.489 1.72 c
-30.695 1.827 30.923 1.881 31.181 1.881 c
-31.582 1.881 31.886 1.779 32.092 1.573 c
-32.305 1.367 32.419 1.073 32.43 0.691 c
-32.43 -1.323 l
-32.43 -1.627 32.467 -1.893 32.548 -2.117 c
-32.548 -2.175 l
-h
-31.004 -1.661 m
-31.17 -1.661 31.32 -1.617 31.46 -1.529 c
-31.607 -1.44 31.713 -1.33 31.784 -1.191 c
-31.784 -0.25 l
-31.416 -0.25 l
-31.1 -0.25 30.857 -0.32 30.681 -0.455 c
-30.504 -0.584 30.416 -0.771 30.416 -1.014 c
-30.416 -1.242 30.46 -1.407 30.549 -1.514 c
-30.637 -1.613 30.788 -1.661 31.004 -1.661 c
-34.047 1.808 m
-34.061 1.367 l
-34.315 1.709 34.639 1.881 35.032 1.881 c
-35.738 1.881 36.094 1.411 36.105 0.47 c
-36.105 -2.175 l
-35.458 -2.175 l
-35.458 0.441 l
-35.458 0.754 35.403 0.974 35.297 1.103 c
-35.186 1.228 35.032 1.294 34.826 1.294 c
-34.668 1.294 34.521 1.239 34.385 1.132 c
-34.256 1.022 34.154 0.886 34.076 0.721 c
-34.076 -2.175 l
-33.43 -2.175 l
-33.43 1.808 l
-h
-36.943 0 m
-36.943 0.607 37.053 1.073 37.281 1.396 c
-37.516 1.72 37.843 1.881 38.266 1.881 c
-38.647 1.881 38.946 1.723 39.162 1.411 c
-39.162 3.469 l
-39.809 3.469 l
-39.809 -2.175 l
-39.221 -2.175 l
-39.177 -1.749 l
-38.971 -2.084 38.666 -2.249 38.266 -2.249 c
-37.854 -2.249 37.531 -2.094 37.296 -1.779 c
-37.06 -1.455 36.943 -0.999 36.943 -0.411 c
-h
-37.589 -0.382 m
-37.589 -0.823 37.652 -1.153 37.78 -1.367 c
-37.917 -1.573 38.137 -1.675 38.442 -1.675 c
-38.765 -1.675 39.004 -1.514 39.162 -1.191 c
-39.162 0.823 l
-38.994 1.135 38.755 1.294 38.442 1.294 c
-38.137 1.294 37.917 1.191 37.78 0.985 c
-37.652 0.779 37.589 0.455 37.589 0.015 c
-h
-46.439 -2.175 m
-46.398 -2.087 46.372 -1.94 46.365 -1.735 c
-46.13 -2.08 45.836 -2.249 45.483 -2.249 c
-45.119 -2.249 44.836 -2.153 44.631 -1.955 c
-44.432 -1.749 44.336 -1.463 44.336 -1.087 c
-44.336 -0.687 44.473 -0.368 44.748 -0.133 c
-45.02 0.11 45.394 0.235 45.865 0.235 c
-46.35 0.235 l
-46.35 0.661 l
-46.35 0.897 46.295 1.062 46.188 1.161 c
-46.078 1.268 45.917 1.323 45.703 1.323 c
-45.505 1.323 45.344 1.264 45.219 1.147 c
-45.101 1.029 45.042 0.882 45.042 0.706 c
-44.395 0.706 l
-44.395 0.9 44.454 1.091 44.571 1.278 c
-44.696 1.463 44.858 1.61 45.057 1.72 c
-45.263 1.827 45.49 1.881 45.747 1.881 c
-46.148 1.881 46.453 1.779 46.659 1.573 c
-46.872 1.367 46.986 1.073 46.997 0.691 c
-46.997 -1.323 l
-46.997 -1.627 47.033 -1.893 47.114 -2.117 c
-47.114 -2.175 l
-h
-45.571 -1.661 m
-45.737 -1.661 45.887 -1.617 46.027 -1.529 c
-46.173 -1.44 46.281 -1.33 46.35 -1.191 c
-46.35 -0.25 l
-45.982 -0.25 l
-45.666 -0.25 45.425 -0.32 45.248 -0.455 c
-45.071 -0.584 44.983 -0.771 44.983 -1.014 c
-44.983 -1.242 45.028 -1.407 45.115 -1.514 c
-45.203 -1.613 45.354 -1.661 45.571 -1.661 c
-48.702 -2.175 -0.647 5.644 re
-50.422 -2.175 -0.647 5.644 re
-55.199 -2.175 m
-55.199 1.278 l
-54.684 1.278 l
-54.684 1.808 l
-55.199 1.808 l
-55.199 2.176 l
-55.206 2.606 55.32 2.94 55.538 3.175 c
-55.761 3.418 56.074 3.543 56.478 3.543 c
-56.625 3.543 56.764 3.52 56.904 3.484 c
-57.051 3.443 57.202 3.389 57.36 3.322 c
-57.242 2.749 l
-57.007 2.874 56.764 2.94 56.521 2.94 c
-56.276 2.94 56.103 2.87 56.008 2.734 c
-55.908 2.606 55.86 2.411 55.86 2.146 c
-55.86 1.808 l
-56.507 1.808 l
-56.507 1.278 l
-55.86 1.278 l
-55.86 -2.175 l
-h
-57.668 -2.175 -0.646 3.983 re
-59.417 -2.175 -0.646 5.644 re
-61.857 -2.249 m
-61.358 -2.249 60.976 -2.102 60.712 -1.808 c
-60.446 -1.514 60.315 -1.08 60.315 -0.5 c
-60.315 -0.029 l
-60.315 0.566 60.439 1.033 60.697 1.367 c
-60.961 1.709 61.321 1.881 61.784 1.881 c
-62.243 1.881 62.586 1.727 62.813 1.426 c
-63.048 1.132 63.17 0.669 63.18 0.044 c
-63.18 -0.382 l
-60.961 -0.382 l
-60.961 -0.47 l
-60.961 -0.904 61.038 -1.216 61.196 -1.411 c
-61.362 -1.598 61.593 -1.691 61.887 -1.691 c
-62.082 -1.691 62.254 -1.658 62.401 -1.587 c
-62.549 -1.51 62.684 -1.392 62.813 -1.234 c
-63.151 -1.646 l
-62.865 -2.051 62.435 -2.249 61.857 -2.249 c
-61.784 1.323 m
-61.508 1.323 61.306 1.228 61.182 1.043 c
-61.053 0.856 60.98 0.566 60.961 0.177 c
-62.534 0.177 l
-62.534 0.264 l
-62.512 0.647 62.445 0.915 62.328 1.073 c
-62.21 1.239 62.027 1.323 61.784 1.323 c
-65.9 -1.161 m
-65.9 -1.014 65.845 -0.893 65.738 -0.794 c
-65.628 -0.698 65.422 -0.58 65.121 -0.441 c
-64.776 -0.294 64.533 -0.172 64.386 -0.073 c
-64.239 0.033 64.128 0.151 64.062 0.279 c
-63.993 0.405 63.96 0.563 63.96 0.75 c
-63.96 1.073 64.078 1.341 64.313 1.558 c
-64.548 1.771 64.849 1.881 65.223 1.881 c
-65.606 1.881 65.915 1.768 66.15 1.544 c
-66.385 1.316 66.503 1.029 66.503 0.676 c
-65.856 0.676 l
-65.856 0.852 65.797 1.004 65.68 1.132 c
-65.562 1.257 65.408 1.323 65.223 1.323 c
-65.025 1.323 64.874 1.268 64.768 1.161 c
-64.658 1.062 64.606 0.929 64.606 0.765 c
-64.606 0.636 64.643 0.53 64.724 0.441 c
-64.801 0.36 64.992 0.258 65.297 0.133 c
-65.775 -0.055 66.106 -0.243 66.282 -0.426 c
-66.459 -0.603 66.547 -0.831 66.547 -1.103 c
-66.547 -1.455 66.422 -1.735 66.179 -1.94 c
-65.944 -2.146 65.628 -2.249 65.238 -2.249 c
-64.816 -2.249 64.477 -2.132 64.224 -1.897 c
-63.967 -1.654 63.842 -1.348 63.842 -0.985 c
-64.489 -0.985 l
-64.496 -1.213 64.566 -1.389 64.695 -1.514 c
-64.82 -1.631 65.003 -1.691 65.238 -1.691 c
-65.452 -1.691 65.613 -1.643 65.724 -1.544 c
-65.841 -1.448 65.9 -1.319 65.9 -1.161 c
-f
-Q
-q 1 0 0 1 203.1893 109.5615 cm
-0 0 m
--1.161 0.324 l
--0.941 0.985 l
-0.191 0.53 l
-0.132 1.808 l
-0.852 1.808 l
-0.779 0.5 l
-1.897 0.956 l
-2.102 0.279 l
-0.926 -0.044 l
-1.705 -1.029 l
-1.117 -1.44 l
-0.441 -0.367 l
--0.22 -1.411 l
--0.809 -0.999 l
-h
-2.631 -3.013 m
-2.631 -2.848 2.682 -2.712 2.793 -2.601 c
-2.899 -2.495 3.046 -2.44 3.233 -2.44 c
-3.399 -2.44 3.543 -2.495 3.659 -2.601 c
-3.778 -2.712 3.836 -2.848 3.836 -3.013 c
-3.836 -3.183 3.778 -3.318 3.659 -3.424 c
-3.543 -3.535 3.399 -3.586 3.233 -3.586 c
-3.057 -3.586 2.911 -3.535 2.793 -3.424 c
-2.682 -3.318 2.631 -3.183 2.631 -3.013 c
-6.497 -2.469 m
-6.497 -2.381 6.453 -2.304 6.365 -2.234 c
-6.277 -2.157 6.089 -2.054 5.806 -1.926 c
-5.373 -1.749 5.074 -1.569 4.91 -1.382 c
-4.752 -1.198 4.675 -0.966 4.675 -0.691 c
-4.675 -0.349 4.796 -0.066 5.041 0.162 c
-5.295 0.397 5.633 0.515 6.056 0.515 c
-6.485 0.515 6.835 0.401 7.1 0.177 c
-7.364 -0.051 7.497 -0.353 7.497 -0.735 c
-6.453 -0.735 l
-6.453 -0.411 6.313 -0.249 6.041 -0.249 c
-5.931 -0.249 5.843 -0.286 5.776 -0.353 c
-5.707 -0.422 5.674 -0.521 5.674 -0.646 c
-5.674 -0.735 5.71 -0.816 5.791 -0.881 c
-5.868 -0.941 6.049 -1.036 6.335 -1.161 c
-6.765 -1.319 7.063 -1.496 7.231 -1.691 c
-7.408 -1.878 7.497 -2.127 7.497 -2.44 c
-7.497 -2.793 7.364 -3.079 7.1 -3.293 c
-6.835 -3.509 6.485 -3.616 6.056 -3.616 c
-5.762 -3.616 5.501 -3.561 5.277 -3.454 c
-5.049 -3.337 4.873 -3.175 4.748 -2.969 c
-4.63 -2.763 4.571 -2.543 4.571 -2.308 c
-5.556 -2.308 l
-5.556 -2.495 5.593 -2.631 5.674 -2.719 c
-5.762 -2.807 5.895 -2.851 6.071 -2.851 c
-6.354 -2.851 6.497 -2.726 6.497 -2.469 c
-11.054 -1.793 m
-11.406 0.441 l
-12.406 0.441 l
-11.582 -3.542 l
-10.715 -3.542 l
-10.157 -1.234 l
-9.598 -3.542 l
-8.731 -3.542 l
-7.908 0.441 l
-8.908 0.441 l
-9.261 -1.793 l
-9.789 0.441 l
-10.524 0.441 l
-h
-16.022 -1.675 m
-16.022 -2.304 15.912 -2.786 15.698 -3.116 c
-15.482 -3.451 15.162 -3.616 14.743 -3.616 c
-14.42 -3.616 14.159 -3.484 13.964 -3.219 c
-13.964 -5.071 l
-12.92 -5.071 l
-12.92 0.441 l
-13.876 0.441 l
-13.92 0.073 l
-14.115 0.368 14.383 0.515 14.728 0.515 c
-15.147 0.515 15.467 0.357 15.684 0.044 c
-15.897 -0.261 16.01 -0.731 16.022 -1.367 c
-h
-14.978 -1.411 m
-14.978 -1.029 14.934 -0.76 14.846 -0.602 c
-14.765 -0.448 14.626 -0.367 14.42 -0.367 c
-14.214 -0.367 14.059 -0.455 13.964 -0.632 c
-13.964 -2.499 l
-14.052 -2.668 14.206 -2.749 14.435 -2.749 c
-14.64 -2.749 14.78 -2.668 14.861 -2.499 c
-14.938 -2.323 14.978 -2.05 14.978 -1.675 c
-h
-f
-Q
-q 1 0 0 1 219.99 106.3724 cm
-0 0 m
-0 0.118 0.033 0.213 0.103 0.294 c
-0.169 0.371 0.272 0.411 0.412 0.411 c
-0.559 0.411 0.665 0.371 0.735 0.294 c
-0.813 0.213 0.853 0.118 0.853 0 c
-0.853 -0.111 0.813 -0.202 0.735 -0.279 c
-0.665 -0.357 0.559 -0.397 0.412 -0.397 c
-0.272 -0.397 0.169 -0.357 0.103 -0.279 c
-0.033 -0.202 0 -0.111 0 0 c
-5.619 -0.353 m
-5.619 4.997 l
-6.897 4.997 l
-7.522 4.997 8.008 4.799 8.353 4.409 c
-8.694 4.016 8.867 3.469 8.867 2.763 c
-8.867 1.866 l
-8.867 1.161 8.691 0.61 8.339 0.22 c
-7.993 -0.162 7.489 -0.353 6.824 -0.353 c
-h
-6.295 4.424 m
-6.295 0.22 l
-6.839 0.22 l
-7.31 0.22 7.651 0.357 7.868 0.631 c
-8.092 0.904 8.206 1.308 8.206 1.837 c
-8.206 2.778 l
-8.206 3.343 8.096 3.763 7.882 4.027 c
-7.666 4.292 7.339 4.424 6.897 4.424 c
-h
-11.248 -0.427 m
-10.749 -0.427 10.367 -0.279 10.103 0.014 c
-9.837 0.309 9.706 0.742 9.706 1.323 c
-9.706 1.793 l
-9.706 2.389 9.83 2.855 10.088 3.189 c
-10.352 3.532 10.712 3.704 11.175 3.704 c
-11.634 3.704 11.977 3.549 12.204 3.248 c
-12.439 2.954 12.561 2.491 12.572 1.866 c
-12.572 1.44 l
-10.352 1.44 l
-10.352 1.352 l
-10.352 0.918 10.429 0.606 10.587 0.411 c
-10.753 0.224 10.984 0.132 11.279 0.132 c
-11.473 0.132 11.645 0.165 11.792 0.235 c
-11.94 0.312 12.075 0.43 12.204 0.588 c
-12.542 0.176 l
-12.256 -0.229 11.826 -0.427 11.248 -0.427 c
-11.175 3.145 m
-10.899 3.145 10.697 3.05 10.573 2.865 c
-10.444 2.678 10.371 2.389 10.352 1.999 c
-11.925 1.999 l
-11.925 2.087 l
-11.903 2.469 11.836 2.738 11.719 2.896 c
-11.601 3.061 11.418 3.145 11.175 3.145 c
-15.291 0.661 m
-15.291 0.808 15.236 0.929 15.129 1.028 c
-15.019 1.124 14.813 1.242 14.512 1.381 c
-14.167 1.529 13.924 1.65 13.777 1.749 c
-13.63 1.855 13.519 1.973 13.454 2.102 c
-13.384 2.227 13.351 2.385 13.351 2.572 c
-13.351 2.896 13.469 3.164 13.704 3.38 c
-13.939 3.594 14.24 3.704 14.614 3.704 c
-14.997 3.704 15.306 3.59 15.541 3.366 c
-15.776 3.138 15.894 2.851 15.894 2.499 c
-15.247 2.499 l
-15.247 2.675 15.188 2.826 15.071 2.954 c
-14.953 3.079 14.799 3.145 14.614 3.145 c
-14.416 3.145 14.265 3.09 14.159 2.983 c
-14.049 2.884 13.997 2.752 13.997 2.587 c
-13.997 2.458 14.034 2.352 14.115 2.263 c
-14.192 2.183 14.383 2.08 14.689 1.955 c
-15.166 1.768 15.497 1.579 15.673 1.396 c
-15.85 1.219 15.938 0.992 15.938 0.72 c
-15.938 0.367 15.813 0.087 15.57 -0.118 c
-15.335 -0.324 15.019 -0.427 14.629 -0.427 c
-14.207 -0.427 13.868 -0.31 13.615 -0.074 c
-13.358 0.168 13.233 0.474 13.233 0.837 c
-13.88 0.837 l
-13.887 0.61 13.957 0.434 14.086 0.309 c
-14.211 0.191 14.394 0.132 14.629 0.132 c
-14.843 0.132 15.004 0.18 15.115 0.278 c
-15.232 0.374 15.291 0.503 15.291 0.661 c
-18.157 0.132 m
-18.371 0.132 18.543 0.195 18.672 0.323 c
-18.807 0.459 18.882 0.65 18.892 0.897 c
-19.51 0.897 l
-19.487 0.514 19.352 0.195 19.098 -0.059 c
-18.841 -0.306 18.529 -0.427 18.157 -0.427 c
-17.665 -0.427 17.29 -0.276 17.025 0.029 c
-16.768 0.341 16.644 0.808 16.644 1.425 c
-16.644 1.866 l
-16.644 2.462 16.768 2.917 17.025 3.233 c
-17.29 3.546 17.665 3.704 18.157 3.704 c
-18.558 3.704 18.878 3.571 19.113 3.307 c
-19.355 3.05 19.487 2.705 19.51 2.263 c
-18.892 2.263 l
-18.87 2.557 18.797 2.778 18.672 2.925 c
-18.554 3.072 18.381 3.145 18.157 3.145 c
-17.864 3.145 17.646 3.046 17.511 2.851 c
-17.371 2.664 17.297 2.356 17.29 1.925 c
-17.29 1.411 l
-17.29 0.941 17.356 0.606 17.496 0.411 c
-17.643 0.224 17.864 0.132 18.157 0.132 c
-21.905 3.013 m
-21.818 3.031 21.718 3.042 21.612 3.042 c
-21.277 3.042 21.042 2.859 20.906 2.499 c
-20.906 -0.353 l
-20.259 -0.353 l
-20.259 3.63 l
-20.891 3.63 l
-20.906 3.218 l
-21.082 3.542 21.325 3.704 21.641 3.704 c
-21.747 3.704 21.835 3.682 21.905 3.645 c
-h
-23.258 -0.353 -0.647 3.983 re
-23.302 4.674 m
-23.302 4.564 23.273 4.472 23.214 4.394 c
-23.155 4.325 23.059 4.292 22.934 4.292 c
-22.817 4.292 22.722 4.325 22.655 4.394 c
-22.597 4.472 22.567 4.564 22.567 4.674 c
-22.567 4.791 22.597 4.883 22.655 4.953 c
-22.722 5.03 22.817 5.071 22.934 5.071 c
-23.059 5.071 23.155 5.03 23.214 4.953 c
-23.273 4.872 23.302 4.781 23.302 4.674 c
-27.154 1.44 m
-27.154 0.823 27.039 0.357 26.815 0.043 c
-26.598 -0.272 26.275 -0.427 25.845 -0.427 c
-25.423 -0.427 25.11 -0.246 24.904 0.118 c
-24.875 -0.353 l
-24.272 -0.353 l
-24.272 5.292 l
-24.919 5.292 l
-24.919 3.189 l
-25.132 3.532 25.44 3.704 25.845 3.704 c
-26.275 3.704 26.598 3.546 26.815 3.233 c
-27.039 2.929 27.154 2.462 27.154 1.837 c
-h
-26.506 1.822 m
-26.506 2.293 26.437 2.624 26.3 2.822 c
-26.172 3.017 25.963 3.116 25.668 3.116 c
-25.334 3.116 25.084 2.932 24.919 2.572 c
-24.919 0.691 l
-25.084 0.326 25.338 0.147 25.683 0.147 c
-25.978 0.147 26.186 0.249 26.315 0.455 c
-26.44 0.661 26.506 0.977 26.506 1.411 c
-h
-29.417 -0.427 m
-28.917 -0.427 28.535 -0.279 28.27 0.014 c
-28.006 0.309 27.873 0.742 27.873 1.323 c
-27.873 1.793 l
-27.873 2.389 27.998 2.855 28.255 3.189 c
-28.52 3.532 28.88 3.704 29.344 3.704 c
-29.803 3.704 30.144 3.549 30.372 3.248 c
-30.607 2.954 30.728 2.491 30.74 1.866 c
-30.74 1.44 l
-28.52 1.44 l
-28.52 1.352 l
-28.52 0.918 28.598 0.606 28.756 0.411 c
-28.92 0.224 29.153 0.132 29.446 0.132 c
-29.641 0.132 29.814 0.165 29.961 0.235 c
-30.107 0.312 30.244 0.43 30.372 0.588 c
-30.71 0.176 l
-30.424 -0.229 29.994 -0.427 29.417 -0.427 c
-29.344 3.145 m
-29.068 3.145 28.866 3.05 28.741 2.865 c
-28.612 2.678 28.538 2.389 28.52 1.999 c
-30.093 1.999 l
-30.093 2.087 l
-30.071 2.469 30.005 2.738 29.887 2.896 c
-29.77 3.061 29.585 3.145 29.344 3.145 c
-31.387 1.822 m
-31.387 2.429 31.497 2.896 31.725 3.218 c
-31.96 3.542 32.287 3.704 32.709 3.704 c
-33.091 3.704 33.389 3.546 33.606 3.233 c
-33.606 5.292 l
-34.252 5.292 l
-34.252 -0.353 l
-33.664 -0.353 l
-33.621 0.073 l
-33.415 -0.262 33.11 -0.427 32.709 -0.427 c
-32.297 -0.427 31.975 -0.272 31.74 0.043 c
-31.504 0.367 31.387 0.823 31.387 1.411 c
-h
-32.033 1.44 m
-32.033 0.999 32.095 0.669 32.224 0.455 c
-32.36 0.249 32.581 0.147 32.885 0.147 c
-33.209 0.147 33.448 0.309 33.606 0.631 c
-33.606 2.645 l
-33.437 2.958 33.198 3.116 32.885 3.116 c
-32.581 3.116 32.36 3.013 32.224 2.807 c
-32.095 2.601 32.033 2.278 32.033 1.837 c
-h
-39.015 -0.353 m
-39.015 3.101 l
-38.501 3.101 l
-38.501 3.63 l
-39.015 3.63 l
-39.015 3.998 l
-39.023 4.428 39.137 4.762 39.353 4.997 c
-39.578 5.24 39.89 5.365 40.294 5.365 c
-40.441 5.365 40.581 5.342 40.72 5.306 c
-40.868 5.265 41.018 5.211 41.176 5.144 c
-41.059 4.571 l
-40.823 4.696 40.581 4.762 40.338 4.762 c
-40.091 4.762 39.919 4.692 39.823 4.556 c
-39.725 4.428 39.677 4.233 39.677 3.968 c
-39.677 3.63 l
-40.324 3.63 l
-40.324 3.101 l
-39.677 3.101 l
-39.677 -0.353 l
-h
-41.485 -0.353 -0.647 3.983 re
-43.234 -0.353 -0.646 5.644 re
-45.674 -0.427 m
-45.174 -0.427 44.792 -0.279 44.527 0.014 c
-44.263 0.309 44.13 0.742 44.13 1.323 c
-44.13 1.793 l
-44.13 2.389 44.255 2.855 44.513 3.189 c
-44.777 3.532 45.138 3.704 45.6 3.704 c
-46.06 3.704 46.401 3.549 46.63 3.248 c
-46.865 2.954 46.986 2.491 46.997 1.866 c
-46.997 1.44 l
-44.777 1.44 l
-44.777 1.352 l
-44.777 0.918 44.854 0.606 45.012 0.411 c
-45.178 0.224 45.409 0.132 45.703 0.132 c
-45.898 0.132 46.071 0.165 46.218 0.235 c
-46.364 0.312 46.501 0.43 46.63 0.588 c
-46.967 0.176 l
-46.68 -0.229 46.251 -0.427 45.674 -0.427 c
-45.6 3.145 m
-45.325 3.145 45.123 3.05 44.997 2.865 c
-44.869 2.678 44.795 2.389 44.777 1.999 c
-46.35 1.999 l
-46.35 2.087 l
-46.328 2.469 46.262 2.738 46.144 2.896 c
-46.027 3.061 45.843 3.145 45.6 3.145 c
-f
-Q
-38.317 96.612 -0.646 3.983 re
-38.361 101.639 m
-38.361 101.529 38.332 101.437 38.273 101.359 c
-38.215 101.29 38.119 101.257 37.994 101.257 c
-37.876 101.257 37.781 101.29 37.714 101.359 c
-37.656 101.437 37.627 101.529 37.627 101.639 c
-37.627 101.756 37.656 101.848 37.714 101.918 c
-37.781 101.995 37.876 102.036 37.994 102.036 c
-38.119 102.036 38.215 101.995 38.273 101.918 c
-38.332 101.837 38.361 101.746 38.361 101.639 c
-39.2 98.787 m
-39.2 99.404 39.31 99.868 39.537 100.183 c
-39.761 100.507 40.096 100.669 40.536 100.669 c
-40.937 100.669 41.242 100.493 41.448 100.14 c
-41.492 100.595 l
-42.08 100.595 l
-42.08 96.568 l
-42.08 96.079 41.951 95.701 41.698 95.436 c
-41.44 95.171 41.088 95.039 40.64 95.039 c
-40.441 95.039 40.221 95.09 39.979 95.186 c
-39.732 95.285 39.552 95.406 39.435 95.554 c
-39.699 95.994 l
-39.964 95.73 40.261 95.597 40.596 95.597 c
-41.132 95.597 41.408 95.892 41.419 96.48 c
-41.419 97.008 l
-41.213 96.693 40.912 96.538 40.522 96.538 c
-40.11 96.538 39.788 96.689 39.552 96.994 c
-39.324 97.307 39.206 97.758 39.2 98.346 c
-h
-39.861 98.405 m
-39.861 97.964 39.923 97.634 40.052 97.42 c
-40.177 97.214 40.393 97.112 40.698 97.112 c
-41.022 97.112 41.261 97.277 41.419 97.611 c
-41.419 99.595 l
-41.249 99.919 41.011 100.081 40.698 100.081 c
-40.405 100.081 40.187 99.978 40.052 99.772 c
-39.923 99.566 39.861 99.243 39.861 98.802 c
-h
-43.653 100.595 m
-43.668 100.154 l
-43.921 100.497 44.245 100.669 44.638 100.669 c
-45.344 100.669 45.7 100.198 45.71 99.258 c
-45.71 96.612 l
-45.064 96.612 l
-45.064 99.228 l
-45.064 99.541 45.009 99.761 44.902 99.89 c
-44.792 100.015 44.638 100.081 44.432 100.081 c
-44.274 100.081 44.127 100.026 43.991 99.919 c
-43.863 99.809 43.759 99.673 43.682 99.508 c
-43.682 96.612 l
-43.036 96.612 l
-43.036 100.595 l
-h
-46.549 98.787 m
-46.549 99.364 46.685 99.82 46.961 100.154 c
-47.243 100.497 47.615 100.669 48.077 100.669 c
-48.536 100.669 48.904 100.499 49.18 100.169 c
-49.463 99.846 49.61 99.398 49.621 98.831 c
-49.621 98.405 l
-49.621 97.835 49.477 97.38 49.195 97.038 c
-48.919 96.703 48.552 96.538 48.092 96.538 c
-47.629 96.538 47.258 96.7 46.975 97.023 c
-46.699 97.354 46.556 97.795 46.549 98.346 c
-h
-47.196 98.405 m
-47.196 98.001 47.273 97.685 47.431 97.45 c
-47.596 97.214 47.817 97.097 48.092 97.097 c
-48.658 97.097 48.952 97.509 48.974 98.332 c
-48.974 98.787 l
-48.974 99.188 48.889 99.508 48.725 99.743 c
-48.567 99.986 48.349 100.11 48.077 100.11 c
-47.813 100.11 47.596 99.986 47.431 99.743 c
-47.273 99.508 47.196 99.188 47.196 98.787 c
-h
-52.105 99.978 m
-52.017 99.996 51.917 100.007 51.811 100.007 c
-51.476 100.007 51.241 99.824 51.106 99.464 c
-51.106 96.612 l
-50.458 96.612 l
-50.458 100.595 l
-51.091 100.595 l
-51.106 100.183 l
-51.282 100.507 51.524 100.669 51.84 100.669 c
-51.947 100.669 52.035 100.647 52.105 100.61 c
-h
-53.457 96.612 -0.647 3.983 re
-53.502 101.639 m
-53.502 101.529 53.472 101.437 53.413 101.359 c
-53.354 101.29 53.259 101.257 53.134 101.257 c
-53.016 101.257 52.921 101.29 52.854 101.359 c
-52.796 101.437 52.766 101.529 52.766 101.639 c
-52.766 101.756 52.796 101.848 52.854 101.918 c
-52.921 101.995 53.016 102.036 53.134 102.036 c
-53.259 102.036 53.354 101.995 53.413 101.918 c
-53.472 101.837 53.502 101.746 53.502 101.639 c
-55.089 100.595 m
-55.104 100.154 l
-55.357 100.497 55.68 100.669 56.074 100.669 c
-56.779 100.669 57.136 100.198 57.147 99.258 c
-57.147 96.612 l
-56.5 96.612 l
-56.5 99.228 l
-56.5 99.541 56.445 99.761 56.338 99.89 c
-56.228 100.015 56.074 100.081 55.868 100.081 c
-55.71 100.081 55.563 100.026 55.427 99.919 c
-55.298 99.809 55.195 99.673 55.118 99.508 c
-55.118 96.612 l
-54.472 96.612 l
-54.472 100.595 l
-h
-57.984 98.787 m
-57.984 99.404 58.095 99.868 58.323 100.183 c
-58.547 100.507 58.881 100.669 59.322 100.669 c
-59.723 100.669 60.028 100.493 60.234 100.14 c
-60.278 100.595 l
-60.866 100.595 l
-60.866 96.568 l
-60.866 96.079 60.737 95.701 60.484 95.436 c
-60.226 95.171 59.873 95.039 59.426 95.039 c
-59.227 95.039 59.006 95.09 58.763 95.186 c
-58.518 95.285 58.337 95.406 58.219 95.554 c
-58.485 95.994 l
-58.749 95.73 59.046 95.597 59.381 95.597 c
-59.918 95.597 60.193 95.892 60.204 96.48 c
-60.204 97.008 l
-59.998 96.693 59.697 96.538 59.308 96.538 c
-58.896 96.538 58.572 96.689 58.337 96.994 c
-58.109 97.307 57.992 97.758 57.984 98.346 c
-h
-58.646 98.405 m
-58.646 97.964 58.709 97.634 58.838 97.42 c
-58.962 97.214 59.179 97.112 59.484 97.112 c
-59.807 97.112 60.046 97.277 60.204 97.611 c
-60.204 99.595 l
-60.035 99.919 59.796 100.081 59.484 100.081 c
-59.19 100.081 58.973 99.978 58.838 99.772 c
-58.709 99.566 58.646 99.243 58.646 98.802 c
-h
-66.734 97.758 m
-67.337 100.595 l
-67.983 100.595 l
-66.998 96.612 l
-66.484 96.612 l
-65.705 99.464 l
-64.955 96.612 l
-64.426 96.612 l
-63.471 100.595 l
-64.103 100.595 l
-64.72 97.831 l
-65.456 100.595 l
-65.97 100.595 l
-h
-69.365 96.612 -0.647 3.983 re
-69.41 101.639 m
-69.41 101.529 69.38 101.437 69.321 101.359 c
-69.263 101.29 69.167 101.257 69.042 101.257 c
-68.924 101.257 68.829 101.29 68.762 101.359 c
-68.704 101.437 68.675 101.529 68.675 101.639 c
-68.675 101.756 68.704 101.848 68.762 101.918 c
-68.829 101.995 68.924 102.036 69.042 102.036 c
-69.167 102.036 69.263 101.995 69.321 101.918 c
-69.38 101.837 69.41 101.746 69.41 101.639 c
-71.085 96.612 -0.646 5.644 re
-72.805 96.612 -0.646 5.644 re
-78.732 97.758 m
-79.335 100.595 l
-79.982 100.595 l
-78.997 96.612 l
-78.482 96.612 l
-77.703 99.464 l
-76.953 96.612 l
-76.425 96.612 l
-75.469 100.595 l
-76.101 100.595 l
-76.718 97.831 l
-77.454 100.595 l
-77.967 100.595 l
-h
-80.525 98.787 m
-80.525 99.364 80.662 99.82 80.937 100.154 c
-81.221 100.497 81.591 100.669 82.054 100.669 c
-82.514 100.669 82.881 100.499 83.157 100.169 c
-83.44 99.846 83.587 99.398 83.598 98.831 c
-83.598 98.405 l
-83.598 97.835 83.455 97.38 83.172 97.038 c
-82.896 96.703 82.528 96.538 82.069 96.538 c
-81.606 96.538 81.235 96.7 80.952 97.023 c
-80.676 97.354 80.533 97.795 80.525 98.346 c
-h
-81.173 98.405 m
-81.173 98.001 81.25 97.685 81.408 97.45 c
-81.573 97.214 81.793 97.097 82.069 97.097 c
-82.635 97.097 82.929 97.509 82.951 98.332 c
-82.951 98.787 l
-82.951 99.188 82.867 99.508 82.701 99.743 c
-82.543 99.986 82.326 100.11 82.054 100.11 c
-81.79 100.11 81.573 99.986 81.408 99.743 c
-81.25 99.508 81.173 99.188 81.173 98.787 c
-h
-86.082 99.978 m
-85.994 99.996 85.894 100.007 85.788 100.007 c
-85.454 100.007 85.219 99.824 85.082 99.464 c
-85.082 96.612 l
-84.436 96.612 l
-84.436 100.595 l
-85.067 100.595 l
-85.082 100.183 l
-85.258 100.507 85.501 100.669 85.817 100.669 c
-85.924 100.669 86.012 100.647 86.082 100.61 c
-h
-87.729 98.434 m
-87.39 98.037 l
-87.39 96.612 l
-86.729 96.612 l
-86.729 102.257 l
-87.39 102.257 l
-87.39 98.876 l
-88.625 100.595 l
-89.404 100.595 l
-88.14 98.934 l
-89.566 96.612 l
-88.816 96.612 l
-h
-92.366 96.612 m
-92.366 100.066 l
-91.837 100.066 l
-91.837 100.595 l
-92.366 100.595 l
-92.366 101.051 l
-92.366 101.451 92.461 101.764 92.66 101.991 c
-92.865 102.216 93.144 102.33 93.497 102.33 c
-93.634 102.33 93.765 102.307 93.894 102.271 c
-93.865 101.727 l
-93.765 101.746 93.667 101.756 93.571 101.756 c
-93.196 101.756 93.013 101.492 93.013 100.963 c
-93.013 100.595 l
-93.688 100.595 l
-93.688 100.066 l
-93.013 100.066 l
-93.013 96.612 l
-h
-94.32 98.787 m
-94.32 99.364 94.457 99.82 94.732 100.154 c
-95.016 100.497 95.386 100.669 95.849 100.669 c
-96.309 100.669 96.676 100.499 96.952 100.169 c
-97.235 99.846 97.382 99.398 97.393 98.831 c
-97.393 98.405 l
-97.393 97.835 97.25 97.38 96.967 97.038 c
-96.691 96.703 96.323 96.538 95.864 96.538 c
-95.401 96.538 95.03 96.7 94.747 97.023 c
-94.471 97.354 94.328 97.795 94.32 98.346 c
-h
-94.968 98.405 m
-94.968 98.001 95.045 97.685 95.203 97.45 c
-95.368 97.214 95.588 97.097 95.864 97.097 c
-96.43 97.097 96.724 97.509 96.746 98.332 c
-96.746 98.787 l
-96.746 99.188 96.662 99.508 96.496 99.743 c
-96.338 99.986 96.121 100.11 95.849 100.11 c
-95.585 100.11 95.368 99.986 95.203 99.743 c
-95.045 99.508 94.968 99.188 94.968 98.787 c
-h
-99.877 99.978 m
-99.789 99.996 99.689 100.007 99.583 100.007 c
-99.249 100.007 99.014 99.824 98.877 99.464 c
-98.877 96.612 l
-98.231 96.612 l
-98.231 100.595 l
-98.862 100.595 l
-98.877 100.183 l
-99.054 100.507 99.296 100.669 99.612 100.669 c
-99.719 100.669 99.807 100.647 99.877 100.61 c
-h
-103.32 101.551 m
-103.32 100.595 l
-103.922 100.595 l
-103.922 100.066 l
-103.32 100.066 l
-103.32 97.596 l
-103.32 97.439 103.342 97.322 103.394 97.243 c
-103.452 97.164 103.541 97.126 103.658 97.126 c
-103.747 97.126 103.835 97.141 103.922 97.17 c
-103.922 96.612 l
-103.776 96.564 103.621 96.538 103.467 96.538 c
-103.21 96.538 103.016 96.63 102.879 96.817 c
-102.74 97.002 102.673 97.262 102.673 97.596 c
-102.673 100.066 l
-102.071 100.066 l
-102.071 100.595 l
-102.673 100.595 l
-102.673 101.551 l
-h
-105.334 100.183 m
-105.588 100.507 105.907 100.669 106.289 100.669 c
-106.995 100.669 107.351 100.198 107.363 99.258 c
-107.363 96.612 l
-106.716 96.612 l
-106.716 99.228 l
-106.716 99.541 106.66 99.761 106.554 99.89 c
-106.444 100.015 106.289 100.081 106.083 100.081 c
-105.925 100.081 105.779 100.026 105.642 99.919 c
-105.514 99.809 105.411 99.673 105.334 99.508 c
-105.334 96.612 l
-104.687 96.612 l
-104.687 102.257 l
-105.334 102.257 l
-h
-109.744 96.538 m
-109.244 96.538 108.861 96.686 108.597 96.979 c
-108.333 97.274 108.2 97.707 108.2 98.288 c
-108.2 98.758 l
-108.2 99.354 108.325 99.82 108.582 100.154 c
-108.847 100.497 109.208 100.669 109.67 100.669 c
-110.129 100.669 110.471 100.514 110.699 100.213 c
-110.934 99.919 111.055 99.456 111.066 98.831 c
-111.066 98.405 l
-108.847 98.405 l
-108.847 98.317 l
-108.847 97.883 108.924 97.571 109.082 97.376 c
-109.247 97.189 109.479 97.097 109.773 97.097 c
-109.968 97.097 110.141 97.13 110.288 97.2 c
-110.434 97.277 110.571 97.395 110.699 97.553 c
-111.037 97.141 l
-110.75 96.736 110.32 96.538 109.744 96.538 c
-109.67 100.11 m
-109.395 100.11 109.193 100.015 109.067 99.831 c
-108.939 99.643 108.865 99.354 108.847 98.964 c
-110.42 98.964 l
-110.42 99.052 l
-110.398 99.434 110.332 99.703 110.214 99.861 c
-110.097 100.026 109.913 100.11 109.67 100.11 c
-113.657 98.787 m
-113.657 99.394 113.767 99.861 113.995 100.183 c
-114.23 100.507 114.558 100.669 114.98 100.669 c
-115.362 100.669 115.66 100.511 115.876 100.198 c
-115.876 102.257 l
-116.524 102.257 l
-116.524 96.612 l
-115.936 96.612 l
-115.892 97.038 l
-115.685 96.703 115.381 96.538 114.98 96.538 c
-114.569 96.538 114.245 96.693 114.01 97.008 c
-113.775 97.332 113.657 97.788 113.657 98.376 c
-h
-114.304 98.405 m
-114.304 97.964 114.367 97.634 114.495 97.42 c
-114.631 97.214 114.852 97.112 115.157 97.112 c
-115.48 97.112 115.718 97.274 115.876 97.596 c
-115.876 99.61 l
-115.708 99.923 115.469 100.081 115.157 100.081 c
-114.852 100.081 114.631 99.978 114.495 99.772 c
-114.367 99.566 114.304 99.243 114.304 98.802 c
-h
-118.228 96.612 -0.646 3.983 re
-118.273 101.639 m
-118.273 101.529 118.243 101.437 118.184 101.359 c
-118.126 101.29 118.03 101.257 117.906 101.257 c
-117.788 101.257 117.692 101.29 117.626 101.359 c
-117.567 101.437 117.538 101.529 117.538 101.639 c
-117.538 101.756 117.567 101.848 117.626 101.918 c
-117.692 101.995 117.788 102.036 117.906 102.036 c
-118.03 102.036 118.126 101.995 118.184 101.918 c
-118.243 101.837 118.273 101.746 118.273 101.639 c
-120.89 99.978 m
-120.801 99.996 120.702 100.007 120.595 100.007 c
-120.261 100.007 120.026 99.824 119.89 99.464 c
-119.89 96.612 l
-119.243 96.612 l
-119.243 100.595 l
-119.875 100.595 l
-119.89 100.183 l
-120.066 100.507 120.308 100.669 120.624 100.669 c
-120.732 100.669 120.819 100.647 120.89 100.61 c
-h
-122.888 96.538 m
-122.388 96.538 122.006 96.686 121.742 96.979 c
-121.477 97.274 121.345 97.707 121.345 98.288 c
-121.345 98.758 l
-121.345 99.354 121.47 99.82 121.727 100.154 c
-121.991 100.497 122.352 100.669 122.814 100.669 c
-123.274 100.669 123.616 100.514 123.844 100.213 c
-124.079 99.919 124.2 99.456 124.211 98.831 c
-124.211 98.405 l
-121.991 98.405 l
-121.991 98.317 l
-121.991 97.883 122.068 97.571 122.226 97.376 c
-122.392 97.189 122.623 97.097 122.918 97.097 c
-123.113 97.097 123.285 97.13 123.432 97.2 c
-123.579 97.277 123.715 97.395 123.844 97.553 c
-124.182 97.141 l
-123.895 96.736 123.465 96.538 122.888 96.538 c
-122.814 100.11 m
-122.539 100.11 122.337 100.015 122.212 99.831 c
-122.083 99.643 122.01 99.354 121.991 98.964 c
-123.564 98.964 l
-123.564 99.052 l
-123.543 99.434 123.477 99.703 123.358 99.861 c
-123.242 100.026 123.057 100.11 122.814 100.11 c
-126.372 97.097 m
-126.585 97.097 126.758 97.16 126.886 97.288 c
-127.022 97.424 127.096 97.615 127.107 97.862 c
-127.724 97.862 l
-127.702 97.479 127.566 97.16 127.313 96.906 c
-127.055 96.659 126.743 96.538 126.372 96.538 c
-125.879 96.538 125.505 96.689 125.24 96.994 c
-124.983 97.307 124.858 97.773 124.858 98.39 c
-124.858 98.831 l
-124.858 99.427 124.983 99.882 125.24 100.198 c
-125.505 100.511 125.879 100.669 126.372 100.669 c
-126.772 100.669 127.092 100.536 127.327 100.272 c
-127.57 100.015 127.702 99.67 127.724 99.228 c
-127.107 99.228 l
-127.084 99.522 127.011 99.743 126.886 99.89 c
-126.769 100.037 126.596 100.11 126.372 100.11 c
-126.078 100.11 125.861 100.011 125.725 99.816 c
-125.586 99.629 125.512 99.321 125.505 98.89 c
-125.505 98.376 l
-125.505 97.906 125.571 97.571 125.71 97.376 c
-125.858 97.189 126.078 97.097 126.372 97.097 c
-129.326 101.551 m
-129.326 100.595 l
-129.929 100.595 l
-129.929 100.066 l
-129.326 100.066 l
-129.326 97.596 l
-129.326 97.439 129.349 97.322 129.4 97.243 c
-129.459 97.164 129.547 97.126 129.665 97.126 c
-129.752 97.126 129.841 97.141 129.929 97.17 c
-129.929 96.612 l
-129.782 96.564 129.628 96.538 129.473 96.538 c
-129.216 96.538 129.021 96.63 128.886 96.817 c
-128.746 97.002 128.68 97.262 128.68 97.596 c
-128.68 100.066 l
-128.077 100.066 l
-128.077 100.595 l
-128.68 100.595 l
-128.68 101.551 l
-h
-130.488 98.787 m
-130.488 99.364 130.623 99.82 130.899 100.154 c
-131.182 100.497 131.553 100.669 132.017 100.669 c
-132.476 100.669 132.844 100.499 133.119 100.169 c
-133.402 99.846 133.549 99.398 133.56 98.831 c
-133.56 98.405 l
-133.56 97.835 133.417 97.38 133.133 97.038 c
-132.858 96.703 132.491 96.538 132.031 96.538 c
-131.568 96.538 131.197 96.7 130.914 97.023 c
-130.639 97.354 130.495 97.795 130.488 98.346 c
-h
-131.134 98.405 m
-131.134 98.001 131.211 97.685 131.369 97.45 c
-131.535 97.214 131.755 97.097 132.031 97.097 c
-132.597 97.097 132.891 97.509 132.913 98.332 c
-132.913 98.787 l
-132.913 99.188 132.829 99.508 132.663 99.743 c
-132.505 99.986 132.289 100.11 132.017 100.11 c
-131.751 100.11 131.535 99.986 131.369 99.743 c
-131.211 99.508 131.134 99.188 131.134 98.787 c
-h
-136.044 99.978 m
-135.956 99.996 135.857 100.007 135.75 100.007 c
-135.416 100.007 135.18 99.824 135.044 99.464 c
-135.044 96.612 l
-134.398 96.612 l
-134.398 100.595 l
-135.03 100.595 l
-135.044 100.183 l
-135.221 100.507 135.464 100.669 135.78 100.669 c
-135.886 100.669 135.974 100.647 136.044 100.61 c
-h
-137.852 97.7 m
-138.572 100.595 l
-139.263 100.595 l
-137.97 96.053 l
-137.87 95.712 137.727 95.45 137.544 95.275 c
-137.367 95.098 137.164 95.009 136.941 95.009 c
-136.852 95.009 136.738 95.032 136.603 95.068 c
-136.603 95.612 l
-136.75 95.597 l
-136.933 95.597 137.08 95.641 137.191 95.73 c
-137.297 95.818 137.386 95.976 137.455 96.2 c
-137.573 96.641 l
-136.412 100.595 l
-137.117 100.595 l
-h
-141.824 98.787 m
-141.824 99.423 141.912 100.026 142.089 100.595 c
-142.265 101.162 142.508 101.657 142.824 102.08 c
-143.019 102.344 143.206 102.535 143.383 102.653 c
-143.514 102.197 l
-143.221 101.922 142.978 101.499 142.795 100.933 c
-142.607 100.364 142.504 99.732 142.486 99.037 c
-142.486 98.743 l
-142.486 97.879 142.604 97.116 142.839 96.45 c
-143.022 95.95 143.25 95.568 143.514 95.304 c
-143.383 94.878 l
-143.154 95.036 142.93 95.285 142.706 95.627 c
-142.118 96.509 141.824 97.56 141.824 98.787 c
-146.249 96.612 m
-146.209 96.7 146.182 96.847 146.175 97.053 c
-145.94 96.707 145.646 96.538 145.293 96.538 c
-144.929 96.538 144.646 96.634 144.441 96.832 c
-144.243 97.038 144.147 97.324 144.147 97.7 c
-144.147 98.1 144.283 98.419 144.559 98.655 c
-144.831 98.897 145.205 99.022 145.675 99.022 c
-146.161 99.022 l
-146.161 99.449 l
-146.161 99.684 146.105 99.849 145.999 99.948 c
-145.889 100.055 145.727 100.11 145.514 100.11 c
-145.315 100.11 145.153 100.052 145.029 99.934 c
-144.911 99.816 144.852 99.67 144.852 99.493 c
-144.206 99.493 l
-144.206 99.688 144.264 99.878 144.382 100.066 c
-144.507 100.25 144.669 100.397 144.867 100.507 c
-145.073 100.614 145.301 100.669 145.558 100.669 c
-145.958 100.669 146.263 100.566 146.469 100.36 c
-146.682 100.154 146.797 99.861 146.807 99.478 c
-146.807 97.465 l
-146.807 97.16 146.844 96.894 146.925 96.671 c
-146.925 96.612 l
-h
-145.382 97.126 m
-145.546 97.126 145.698 97.17 145.837 97.259 c
-145.984 97.347 146.091 97.457 146.161 97.596 c
-146.161 98.537 l
-145.793 98.537 l
-145.477 98.537 145.234 98.467 145.058 98.332 c
-144.881 98.203 144.794 98.016 144.794 97.773 c
-144.794 97.545 144.838 97.38 144.926 97.274 c
-145.014 97.174 145.165 97.126 145.382 97.126 c
-148.424 100.595 m
-148.439 100.154 l
-148.692 100.497 149.016 100.669 149.409 100.669 c
-150.115 100.669 150.471 100.198 150.482 99.258 c
-150.482 96.612 l
-149.835 96.612 l
-149.835 99.228 l
-149.835 99.541 149.78 99.761 149.673 99.89 c
-149.563 100.015 149.409 100.081 149.203 100.081 c
-149.045 100.081 148.898 100.026 148.762 99.919 c
-148.634 99.809 148.53 99.673 148.453 99.508 c
-148.453 96.612 l
-147.807 96.612 l
-147.807 100.595 l
-h
-151.32 98.787 m
-151.32 99.394 151.43 99.861 151.658 100.183 c
-151.894 100.507 152.22 100.669 152.642 100.669 c
-153.025 100.669 153.323 100.511 153.54 100.198 c
-153.54 102.257 l
-154.186 102.257 l
-154.186 96.612 l
-153.598 96.612 l
-153.554 97.038 l
-153.348 96.703 153.043 96.538 152.642 96.538 c
-152.231 96.538 151.908 96.693 151.673 97.008 c
-151.437 97.332 151.32 97.788 151.32 98.376 c
-h
-151.967 98.405 m
-151.967 97.964 152.029 97.634 152.158 97.42 c
-152.293 97.214 152.514 97.112 152.819 97.112 c
-153.143 97.112 153.382 97.274 153.54 97.596 c
-153.54 99.61 l
-153.371 99.923 153.132 100.081 152.819 100.081 c
-152.514 100.081 152.293 99.978 152.158 99.772 c
-152.029 99.566 151.967 99.243 151.967 98.802 c
-h
-158.512 97.097 m
-158.724 97.097 158.897 97.16 159.026 97.288 c
-159.162 97.424 159.235 97.615 159.246 97.862 c
-159.864 97.862 l
-159.842 97.479 159.706 97.16 159.452 96.906 c
-159.195 96.659 158.882 96.538 158.512 96.538 c
-158.019 96.538 157.644 96.689 157.38 96.994 c
-157.122 97.307 156.997 97.773 156.997 98.39 c
-156.997 98.831 l
-156.997 99.427 157.122 99.882 157.38 100.198 c
-157.644 100.511 158.019 100.669 158.512 100.669 c
-158.912 100.669 159.231 100.536 159.467 100.272 c
-159.709 100.015 159.842 99.67 159.864 99.228 c
-159.246 99.228 l
-159.225 99.522 159.15 99.743 159.026 99.89 c
-158.909 100.037 158.736 100.11 158.512 100.11 c
-158.217 100.11 158.001 100.011 157.864 99.816 c
-157.725 99.629 157.652 99.321 157.644 98.89 c
-157.644 98.376 l
-157.644 97.906 157.71 97.571 157.85 97.376 c
-157.997 97.189 158.217 97.097 158.512 97.097 c
-161.261 100.183 m
-161.514 100.507 161.833 100.669 162.215 100.669 c
-162.921 100.669 163.277 100.198 163.289 99.258 c
-163.289 96.612 l
-162.642 96.612 l
-162.642 99.228 l
-162.642 99.541 162.587 99.761 162.48 99.89 c
-162.37 100.015 162.215 100.081 162.009 100.081 c
-161.851 100.081 161.705 100.026 161.569 99.919 c
-161.44 99.809 161.338 99.673 161.261 99.508 c
-161.261 96.612 l
-160.613 96.612 l
-160.613 102.257 l
-161.261 102.257 l
-h
-164.949 96.612 -0.646 3.983 re
-164.993 101.639 m
-164.993 101.529 164.964 101.437 164.906 101.359 c
-164.847 101.29 164.751 101.257 164.627 101.257 c
-164.509 101.257 164.413 101.29 164.347 101.359 c
-164.288 101.437 164.259 101.529 164.259 101.639 c
-164.259 101.756 164.288 101.848 164.347 101.918 c
-164.413 101.995 164.509 102.036 164.627 102.036 c
-164.751 102.036 164.847 101.995 164.906 101.918 c
-164.964 101.837 164.993 101.746 164.993 101.639 c
-166.67 96.612 -0.647 5.644 re
-167.551 98.787 m
-167.551 99.394 167.661 99.861 167.889 100.183 c
-168.124 100.507 168.452 100.669 168.874 100.669 c
-169.257 100.669 169.554 100.511 169.77 100.198 c
-169.77 102.257 l
-170.418 102.257 l
-170.418 96.612 l
-169.83 96.612 l
-169.786 97.038 l
-169.58 96.703 169.275 96.538 168.874 96.538 c
-168.463 96.538 168.139 96.693 167.904 97.008 c
-167.669 97.332 167.551 97.788 167.551 98.376 c
-h
-168.199 98.405 m
-168.199 97.964 168.261 97.634 168.389 97.42 c
-168.525 97.214 168.746 97.112 169.051 97.112 c
-169.374 97.112 169.612 97.274 169.77 97.596 c
-169.77 99.61 l
-169.602 99.923 169.363 100.081 169.051 100.081 c
-168.746 100.081 168.525 99.978 168.389 99.772 c
-168.261 99.566 168.199 99.243 168.199 98.802 c
-h
-173.063 99.978 m
-172.976 99.996 172.876 100.007 172.77 100.007 c
-172.435 100.007 172.199 99.824 172.064 99.464 c
-172.064 96.612 l
-171.417 96.612 l
-171.417 100.595 l
-172.049 100.595 l
-172.064 100.183 l
-172.24 100.507 172.483 100.669 172.799 100.669 c
-172.905 100.669 172.993 100.647 173.063 100.61 c
-h
-175.062 96.538 m
-174.563 96.538 174.181 96.686 173.916 96.979 c
-173.651 97.274 173.519 97.707 173.519 98.288 c
-173.519 98.758 l
-173.519 99.354 173.644 99.82 173.901 100.154 c
-174.166 100.497 174.526 100.669 174.989 100.669 c
-175.449 100.669 175.79 100.514 176.018 100.213 c
-176.253 99.919 176.374 99.456 176.386 98.831 c
-176.386 98.405 l
-174.166 98.405 l
-174.166 98.317 l
-174.166 97.883 174.243 97.571 174.401 97.376 c
-174.566 97.189 174.798 97.097 175.092 97.097 c
-175.287 97.097 175.459 97.13 175.607 97.2 c
-175.754 97.277 175.889 97.395 176.018 97.553 c
-176.356 97.141 l
-176.07 96.736 175.64 96.538 175.062 96.538 c
-174.989 100.11 m
-174.713 100.11 174.512 100.015 174.387 99.831 c
-174.258 99.643 174.184 99.354 174.166 98.964 c
-175.739 98.964 l
-175.739 99.052 l
-175.717 99.434 175.65 99.703 175.533 99.861 c
-175.415 100.026 175.231 100.11 174.989 100.11 c
-177.782 100.595 m
-177.797 100.154 l
-178.05 100.497 178.374 100.669 178.767 100.669 c
-179.472 100.669 179.829 100.198 179.84 99.258 c
-179.84 96.612 l
-179.193 96.612 l
-179.193 99.228 l
-179.193 99.541 179.137 99.761 179.031 99.89 c
-178.921 100.015 178.767 100.081 178.561 100.081 c
-178.403 100.081 178.256 100.026 178.12 99.919 c
-177.992 99.809 177.888 99.673 177.811 99.508 c
-177.811 96.612 l
-177.165 96.612 l
-177.165 100.595 l
-h
-182.622 98.787 m
-182.622 99.394 182.732 99.861 182.96 100.183 c
-183.195 100.507 183.522 100.669 183.945 100.669 c
-184.327 100.669 184.625 100.511 184.841 100.198 c
-184.841 102.257 l
-185.487 102.257 l
-185.487 96.612 l
-184.899 96.612 l
-184.856 97.038 l
-184.65 96.703 184.345 96.538 183.945 96.538 c
-183.533 96.538 183.21 96.693 182.975 97.008 c
-182.74 97.332 182.622 97.788 182.622 98.376 c
-h
-183.268 98.405 m
-183.268 97.964 183.33 97.634 183.459 97.42 c
-183.596 97.214 183.816 97.112 184.121 97.112 c
-184.444 97.112 184.683 97.274 184.841 97.596 c
-184.841 99.61 l
-184.672 99.923 184.433 100.081 184.121 100.081 c
-183.816 100.081 183.596 99.978 183.459 99.772 c
-183.33 99.566 183.268 99.243 183.268 98.802 c
-h
-187.193 96.612 -0.647 3.983 re
-187.237 101.639 m
-187.237 101.529 187.208 101.437 187.149 101.359 c
-187.09 101.29 186.994 101.257 186.869 101.257 c
-186.752 101.257 186.657 101.29 186.59 101.359 c
-186.532 101.437 186.502 101.529 186.502 101.639 c
-186.502 101.756 186.532 101.848 186.59 101.918 c
-186.657 101.995 186.752 102.036 186.869 102.036 c
-186.994 102.036 187.09 101.995 187.149 101.918 c
-187.208 101.837 187.237 101.746 187.237 101.639 c
-189.853 99.978 m
-189.765 99.996 189.666 100.007 189.56 100.007 c
-189.225 100.007 188.99 99.824 188.854 99.464 c
-188.854 96.612 l
-188.207 96.612 l
-188.207 100.595 l
-188.839 100.595 l
-188.854 100.183 l
-189.03 100.507 189.273 100.669 189.589 100.669 c
-189.695 100.669 189.784 100.647 189.853 100.61 c
-h
-191.852 96.538 m
-191.353 96.538 190.971 96.686 190.706 96.979 c
-190.441 97.274 190.309 97.707 190.309 98.288 c
-190.309 98.758 l
-190.309 99.354 190.434 99.82 190.692 100.154 c
-190.956 100.497 191.316 100.669 191.779 100.669 c
-192.238 100.669 192.581 100.514 192.808 100.213 c
-193.043 99.919 193.165 99.456 193.175 98.831 c
-193.175 98.405 l
-190.956 98.405 l
-190.956 98.317 l
-190.956 97.883 191.033 97.571 191.191 97.376 c
-191.357 97.189 191.588 97.097 191.882 97.097 c
-192.076 97.097 192.249 97.13 192.396 97.2 c
-192.543 97.277 192.679 97.395 192.808 97.553 c
-193.146 97.141 l
-192.859 96.736 192.429 96.538 191.852 96.538 c
-191.779 100.11 m
-191.503 100.11 191.301 100.015 191.176 99.831 c
-191.048 99.643 190.975 99.354 190.956 98.964 c
-192.529 98.964 l
-192.529 99.052 l
-192.506 99.434 192.44 99.703 192.323 99.861 c
-192.205 100.026 192.022 100.11 191.779 100.11 c
-195.336 97.097 m
-195.55 97.097 195.722 97.16 195.851 97.288 c
-195.987 97.424 196.06 97.615 196.071 97.862 c
-196.689 97.862 l
-196.666 97.479 196.531 97.16 196.277 96.906 c
-196.02 96.659 195.708 96.538 195.336 96.538 c
-194.844 96.538 194.469 96.689 194.204 96.994 c
-193.947 97.307 193.822 97.773 193.822 98.39 c
-193.822 98.831 l
-193.822 99.427 193.947 99.882 194.204 100.198 c
-194.469 100.511 194.844 100.669 195.336 100.669 c
-195.737 100.669 196.057 100.536 196.292 100.272 c
-196.535 100.015 196.666 99.67 196.689 99.228 c
-196.071 99.228 l
-196.049 99.522 195.976 99.743 195.851 99.89 c
-195.733 100.037 195.56 100.11 195.336 100.11 c
-195.042 100.11 194.825 100.011 194.69 99.816 c
-194.55 99.629 194.476 99.321 194.469 98.89 c
-194.469 98.376 l
-194.469 97.906 194.535 97.571 194.675 97.376 c
-194.821 97.189 195.042 97.097 195.336 97.097 c
-198.291 101.551 m
-198.291 100.595 l
-198.893 100.595 l
-198.893 100.066 l
-198.291 100.066 l
-198.291 97.596 l
-198.291 97.439 198.313 97.322 198.364 97.243 c
-198.423 97.164 198.511 97.126 198.629 97.126 c
-198.717 97.126 198.805 97.141 198.893 97.17 c
-198.893 96.612 l
-198.746 96.564 198.592 96.538 198.438 96.538 c
-198.181 96.538 197.986 96.63 197.85 96.817 c
-197.71 97.002 197.644 97.262 197.644 97.596 c
-197.644 100.066 l
-197.042 100.066 l
-197.042 100.595 l
-197.644 100.595 l
-197.644 101.551 l
-h
-199.452 98.787 m
-199.452 99.364 199.588 99.82 199.864 100.154 c
-200.147 100.497 200.518 100.669 200.98 100.669 c
-201.44 100.669 201.807 100.499 202.083 100.169 c
-202.366 99.846 202.513 99.398 202.524 98.831 c
-202.524 98.405 l
-202.524 97.835 202.38 97.38 202.098 97.038 c
-201.822 96.703 201.455 96.538 200.995 96.538 c
-200.533 96.538 200.161 96.7 199.878 97.023 c
-199.602 97.354 199.459 97.795 199.452 98.346 c
-h
-200.099 98.405 m
-200.099 98.001 200.176 97.685 200.334 97.45 c
-200.499 97.214 200.72 97.097 200.995 97.097 c
-201.561 97.097 201.855 97.509 201.877 98.332 c
-201.877 98.787 l
-201.877 99.188 201.793 99.508 201.628 99.743 c
-201.47 99.986 201.252 100.11 200.98 100.11 c
-200.716 100.11 200.499 99.986 200.334 99.743 c
-200.176 99.508 200.099 99.188 200.099 98.787 c
-h
-205.008 99.978 m
-204.92 99.996 204.821 100.007 204.714 100.007 c
-204.38 100.007 204.145 99.824 204.009 99.464 c
-204.009 96.612 l
-203.361 96.612 l
-203.361 100.595 l
-203.994 100.595 l
-204.009 100.183 l
-204.185 100.507 204.427 100.669 204.743 100.669 c
-204.851 100.669 204.938 100.647 205.008 100.61 c
-h
-206.361 96.612 -0.647 3.983 re
-206.405 101.639 m
-206.405 101.529 206.376 101.437 206.316 101.359 c
-206.258 101.29 206.162 101.257 206.037 101.257 c
-205.919 101.257 205.824 101.29 205.758 101.359 c
-205.699 101.437 205.67 101.529 205.67 101.639 c
-205.67 101.756 205.699 101.848 205.758 101.918 c
-205.824 101.995 205.919 102.036 206.037 102.036 c
-206.162 102.036 206.258 101.995 206.316 101.918 c
-206.376 101.837 206.405 101.746 206.405 101.639 c
-208.801 96.538 m
-208.3 96.538 207.918 96.686 207.654 96.979 c
-207.39 97.274 207.257 97.707 207.257 98.288 c
-207.257 98.758 l
-207.257 99.354 207.382 99.82 207.639 100.154 c
-207.904 100.497 208.264 100.669 208.727 100.669 c
-209.187 100.669 209.528 100.514 209.756 100.213 c
-209.991 99.919 210.112 99.456 210.123 98.831 c
-210.123 98.405 l
-207.904 98.405 l
-207.904 98.317 l
-207.904 97.883 207.981 97.571 208.139 97.376 c
-208.304 97.189 208.536 97.097 208.83 97.097 c
-209.025 97.097 209.198 97.13 209.345 97.2 c
-209.491 97.277 209.628 97.395 209.756 97.553 c
-210.094 97.141 l
-209.807 96.736 209.377 96.538 208.801 96.538 c
-208.727 100.11 m
-208.452 100.11 208.25 100.015 208.124 99.831 c
-207.996 99.643 207.922 99.354 207.904 98.964 c
-209.476 98.964 l
-209.476 99.052 l
-209.455 99.434 209.389 99.703 209.271 99.861 c
-209.154 100.026 208.969 100.11 208.727 100.11 c
-212.843 97.626 m
-212.843 97.773 212.788 97.894 212.681 97.993 c
-212.571 98.089 212.365 98.207 212.063 98.346 c
-211.718 98.494 211.475 98.615 211.329 98.714 c
-211.182 98.82 211.072 98.938 211.005 99.067 c
-210.935 99.192 210.902 99.35 210.902 99.537 c
-210.902 99.861 211.02 100.129 211.255 100.345 c
-211.49 100.559 211.791 100.669 212.167 100.669 c
-212.549 100.669 212.857 100.555 213.092 100.331 c
-213.328 100.103 213.445 99.816 213.445 99.464 c
-212.799 99.464 l
-212.799 99.64 212.74 99.791 212.622 99.919 c
-212.505 100.044 212.35 100.11 212.167 100.11 c
-211.968 100.11 211.818 100.055 211.711 99.948 c
-211.6 99.849 211.55 99.717 211.55 99.552 c
-211.55 99.423 211.586 99.317 211.667 99.228 c
-211.744 99.148 211.935 99.045 212.24 98.92 c
-212.718 98.733 213.048 98.545 213.225 98.361 c
-213.401 98.184 213.489 97.957 213.489 97.685 c
-213.489 97.332 213.364 97.053 213.122 96.847 c
-212.886 96.641 212.571 96.538 212.181 96.538 c
-211.758 96.538 211.421 96.656 211.167 96.891 c
-210.91 97.133 210.785 97.439 210.785 97.802 c
-211.432 97.802 l
-211.439 97.575 211.509 97.399 211.637 97.274 c
-211.762 97.156 211.946 97.097 212.181 97.097 c
-212.394 97.097 212.556 97.145 212.666 97.243 c
-212.784 97.339 212.843 97.468 212.843 97.626 c
-215.724 98.743 m
-215.724 97.656 215.477 96.689 214.989 95.847 c
-214.725 95.4 214.449 95.076 214.166 94.878 c
-214.048 95.304 l
-214.349 95.597 214.596 96.05 214.783 96.656 c
-214.978 97.262 215.077 97.927 215.077 98.655 c
-215.077 98.787 l
-215.077 99.717 214.923 100.551 214.621 101.286 c
-214.453 101.687 214.261 102.006 214.048 102.242 c
-214.166 102.653 l
-214.438 102.466 214.702 102.168 214.96 101.756 c
-215.467 100.904 215.724 99.897 215.724 98.743 c
-221.636 97.758 m
-222.239 100.595 l
-222.886 100.595 l
-221.901 96.612 l
-221.387 96.612 l
-220.608 99.464 l
-219.858 96.612 l
-219.329 96.612 l
-218.373 100.595 l
-219.005 100.595 l
-219.623 97.831 l
-220.358 100.595 l
-220.872 100.595 l
-h
-224.209 100.183 m
-224.462 100.507 224.782 100.669 225.164 100.669 c
-225.87 100.669 226.226 100.198 226.237 99.258 c
-226.237 96.612 l
-225.59 96.612 l
-225.59 99.228 l
-225.59 99.541 225.536 99.761 225.428 99.89 c
-225.318 100.015 225.164 100.081 224.958 100.081 c
-224.801 100.081 224.653 100.026 224.518 99.919 c
-224.389 99.809 224.286 99.673 224.209 99.508 c
-224.209 96.612 l
-223.562 96.612 l
-223.562 102.257 l
-224.209 102.257 l
-h
-228.618 96.538 m
-228.119 96.538 227.737 96.686 227.472 96.979 c
-227.207 97.274 227.075 97.707 227.075 98.288 c
-227.075 98.758 l
-227.075 99.354 227.2 99.82 227.458 100.154 c
-227.722 100.497 228.082 100.669 228.545 100.669 c
-229.004 100.669 229.347 100.514 229.574 100.213 c
-229.809 99.919 229.931 99.456 229.941 98.831 c
-229.941 98.405 l
-227.722 98.405 l
-227.722 98.317 l
-227.722 97.883 227.799 97.571 227.957 97.376 c
-228.123 97.189 228.354 97.097 228.648 97.097 c
-228.842 97.097 229.015 97.13 229.162 97.2 c
-229.31 97.277 229.445 97.395 229.574 97.553 c
-229.912 97.141 l
-229.625 96.736 229.195 96.538 228.618 96.538 c
-228.545 100.11 m
-228.269 100.11 228.067 100.015 227.942 99.831 c
-227.814 99.643 227.741 99.354 227.722 98.964 c
-229.295 98.964 l
-229.295 99.052 l
-229.272 99.434 229.206 99.703 229.089 99.861 c
-228.971 100.026 228.788 100.11 228.545 100.11 c
-232.367 99.978 m
-232.279 99.996 232.179 100.007 232.073 100.007 c
-231.739 100.007 231.504 99.824 231.367 99.464 c
-231.367 96.612 l
-230.721 96.612 l
-230.721 100.595 l
-231.352 100.595 l
-231.367 100.183 l
-231.543 100.507 231.786 100.669 232.102 100.669 c
-232.209 100.669 232.297 100.647 232.367 100.61 c
-h
-234.365 96.538 m
-233.866 96.538 233.484 96.686 233.22 96.979 c
-232.954 97.274 232.823 97.707 232.823 98.288 c
-232.823 98.758 l
-232.823 99.354 232.948 99.82 233.205 100.154 c
-233.469 100.497 233.829 100.669 234.292 100.669 c
-234.752 100.669 235.094 100.514 235.321 100.213 c
-235.556 99.919 235.678 99.456 235.689 98.831 c
-235.689 98.405 l
-233.469 98.405 l
-233.469 98.317 l
-233.469 97.883 233.546 97.571 233.704 97.376 c
-233.87 97.189 234.101 97.097 234.396 97.097 c
-234.59 97.097 234.762 97.13 234.91 97.2 c
-235.057 97.277 235.192 97.395 235.321 97.553 c
-235.66 97.141 l
-235.373 96.736 234.943 96.538 234.365 96.538 c
-234.292 100.11 m
-234.016 100.11 233.815 100.015 233.69 99.831 c
-233.561 99.643 233.488 99.354 233.469 98.964 c
-235.042 98.964 l
-235.042 99.052 l
-235.02 99.434 234.954 99.703 234.836 99.861 c
-234.719 100.026 234.535 100.11 234.292 100.11 c
-f
-q 1 0 0 1 238.3974 97.1409 cm
-0 0 m
-0 0.166 0.051 0.301 0.162 0.412 c
-0.268 0.518 0.415 0.573 0.602 0.573 c
-0.768 0.573 0.911 0.518 1.028 0.412 c
-1.146 0.301 1.205 0.166 1.205 0 c
-1.205 -0.169 1.146 -0.305 1.028 -0.411 c
-0.911 -0.522 0.768 -0.573 0.602 -0.573 c
-0.426 -0.573 0.279 -0.522 0.162 -0.411 c
-0.051 -0.305 0 -0.169 0 0 c
-1.969 1.588 m
-1.969 2.234 2.087 2.72 2.322 3.042 c
-2.557 3.366 2.888 3.528 3.322 3.528 c
-3.675 3.528 3.946 3.385 4.145 3.102 c
-4.189 3.454 l
-5.13 3.454 l
-5.13 -0.529 l
-5.13 -1.036 4.986 -1.426 4.704 -1.691 c
-4.417 -1.962 4.012 -2.102 3.484 -2.102 c
-3.256 -2.102 3.021 -2.057 2.778 -1.97 c
-2.543 -1.881 2.366 -1.768 2.248 -1.631 c
-2.601 -0.912 l
-2.697 -1.018 2.826 -1.103 2.984 -1.161 c
-3.138 -1.228 3.285 -1.264 3.424 -1.264 c
-3.659 -1.264 3.825 -1.205 3.925 -1.087 c
-4.031 -0.977 4.086 -0.801 4.086 -0.559 c
-4.086 -0.206 l
-3.887 -0.47 3.63 -0.603 3.307 -0.603 c
-2.884 -0.603 2.557 -0.441 2.322 -0.118 c
-2.094 0.214 1.977 0.684 1.969 1.294 c
-h
-3.013 1.323 m
-3.013 0.948 3.061 0.68 3.16 0.515 c
-3.256 0.345 3.41 0.264 3.615 0.264 c
-3.829 0.264 3.987 0.341 4.086 0.5 c
-4.086 2.396 l
-3.976 2.562 3.821 2.646 3.615 2.646 c
-3.41 2.646 3.256 2.562 3.16 2.396 c
-3.061 2.227 3.013 1.959 3.013 1.588 c
-h
-6.982 -0.529 -1.044 3.983 re
-5.894 4.484 m
-5.894 4.638 5.942 4.767 6.041 4.866 c
-6.148 4.972 6.283 5.027 6.453 5.027 c
-6.629 5.027 6.765 4.972 6.865 4.866 c
-6.971 4.767 7.025 4.638 7.025 4.484 c
-7.025 4.314 6.971 4.179 6.865 4.072 c
-6.765 3.973 6.629 3.925 6.453 3.925 c
-6.283 3.925 6.148 3.973 6.041 4.072 c
-5.942 4.179 5.894 4.314 5.894 4.484 c
-8.995 4.424 m
-8.995 3.454 l
-9.525 3.454 l
-9.525 2.66 l
-8.995 2.66 l
-8.995 0.69 l
-8.995 0.533 9.014 0.426 9.055 0.368 c
-9.102 0.309 9.186 0.279 9.304 0.279 c
-9.411 0.279 9.495 0.287 9.554 0.309 c
-9.554 -0.5 l
-9.377 -0.565 9.186 -0.603 8.981 -0.603 c
-8.305 -0.603 7.96 -0.216 7.952 0.559 c
-7.952 2.66 l
-7.496 2.66 l
-7.496 3.454 l
-7.952 3.454 l
-7.952 4.424 l
-h
-11.185 -0.529 -1.043 3.983 re
-10.098 4.484 m
-10.098 4.638 10.146 4.767 10.245 4.866 c
-10.352 4.972 10.487 5.027 10.657 5.027 c
-10.833 5.027 10.969 4.972 11.068 4.866 c
-11.175 4.767 11.23 4.638 11.23 4.484 c
-11.23 4.314 11.175 4.179 11.068 4.072 c
-10.969 3.973 10.833 3.925 10.657 3.925 c
-10.487 3.925 10.352 3.973 10.245 4.072 c
-10.146 4.179 10.098 4.314 10.098 4.484 c
-11.862 1.588 m
-11.862 2.234 11.979 2.72 12.215 3.042 c
-12.45 3.366 12.781 3.528 13.215 3.528 c
-13.567 3.528 13.839 3.385 14.038 3.102 c
-14.081 3.454 l
-15.022 3.454 l
-15.022 -0.529 l
-15.022 -1.036 14.879 -1.426 14.596 -1.691 c
-14.31 -1.962 13.905 -2.102 13.375 -2.102 c
-13.148 -2.102 12.913 -2.057 12.67 -1.97 c
-12.435 -1.881 12.259 -1.768 12.141 -1.631 c
-12.494 -0.912 l
-12.589 -1.018 12.718 -1.103 12.876 -1.161 c
-13.03 -1.228 13.177 -1.264 13.317 -1.264 c
-13.552 -1.264 13.718 -1.205 13.817 -1.087 c
-13.923 -0.977 13.978 -0.801 13.978 -0.559 c
-13.978 -0.206 l
-13.78 -0.47 13.523 -0.603 13.2 -0.603 c
-12.777 -0.603 12.45 -0.441 12.215 -0.118 c
-11.987 0.214 11.869 0.684 11.862 1.294 c
-h
-12.905 1.323 m
-12.905 0.948 12.953 0.68 13.053 0.515 c
-13.148 0.345 13.302 0.264 13.508 0.264 c
-13.722 0.264 13.88 0.341 13.978 0.5 c
-13.978 2.396 l
-13.868 2.562 13.714 2.646 13.508 2.646 c
-13.302 2.646 13.148 2.562 13.053 2.396 c
-12.953 2.227 12.905 1.959 12.905 1.588 c
-h
-16.742 3.454 m
-16.771 3.057 l
-17.007 3.37 17.308 3.528 17.683 3.528 c
-18.366 3.528 18.719 3.046 18.741 2.087 c
-18.741 -0.529 l
-17.697 -0.529 l
-17.697 2.014 l
-17.697 2.238 17.661 2.4 17.595 2.499 c
-17.525 2.595 17.407 2.646 17.242 2.646 c
-17.055 2.646 16.907 2.55 16.801 2.367 c
-16.801 -0.529 l
-15.757 -0.529 l
-15.757 3.454 l
-h
-19.373 1.588 m
-19.373 2.194 19.513 2.668 19.8 3.013 c
-20.082 3.356 20.475 3.528 20.976 3.528 c
-21.483 3.528 21.879 3.356 22.166 3.013 c
-22.449 2.668 22.592 2.194 22.592 1.588 c
-22.592 1.323 l
-22.592 0.724 22.449 0.254 22.166 -0.088 c
-21.879 -0.434 21.483 -0.603 20.976 -0.603 c
-20.465 -0.603 20.068 -0.434 19.785 -0.088 c
-19.509 0.254 19.373 0.728 19.373 1.338 c
-h
-20.417 1.323 m
-20.417 0.617 20.6 0.264 20.976 0.264 c
-21.328 0.264 21.519 0.559 21.549 1.147 c
-21.549 1.588 l
-21.549 1.947 21.497 2.219 21.402 2.396 c
-21.302 2.572 21.159 2.66 20.976 2.66 c
-20.799 2.66 20.66 2.572 20.564 2.396 c
-20.465 2.219 20.417 1.947 20.417 1.588 c
-h
-25.194 2.44 m
-24.856 2.469 l
-24.569 2.469 24.378 2.344 24.282 2.102 c
-24.282 -0.529 l
-23.239 -0.529 l
-23.239 3.454 l
-24.209 3.454 l
-24.238 3.013 l
-24.404 3.356 24.635 3.528 24.93 3.528 c
-25.047 3.528 25.138 3.506 25.209 3.469 c
-h
-27.266 -0.603 m
-26.738 -0.603 26.318 -0.448 26.017 -0.133 c
-25.723 0.191 25.576 0.651 25.576 1.249 c
-25.576 1.558 l
-25.576 2.183 25.712 2.668 25.988 3.013 c
-26.26 3.356 26.653 3.528 27.164 3.528 c
-27.663 3.528 28.034 3.366 28.281 3.042 c
-28.535 2.72 28.666 2.242 28.678 1.617 c
-28.678 1.118 l
-26.605 1.118 l
-26.623 0.823 26.686 0.607 26.796 0.47 c
-26.914 0.331 27.093 0.264 27.34 0.264 c
-27.681 0.264 27.972 0.382 28.207 0.617 c
-28.619 -0.015 l
-28.49 -0.191 28.303 -0.334 28.06 -0.441 c
-27.814 -0.548 27.55 -0.603 27.266 -0.603 c
-26.62 1.837 m
-27.648 1.837 l
-27.648 1.941 l
-27.648 2.176 27.608 2.352 27.531 2.469 c
-27.461 2.595 27.332 2.66 27.149 2.66 c
-26.973 2.66 26.84 2.591 26.752 2.454 c
-26.671 2.326 26.627 2.12 26.62 1.837 c
-f
-Q
-q 1 0 0 1 37.7885 87.2048 cm
-0 0 m
-0 3.453 l
--0.515 3.453 l
--0.515 3.983 l
-0 3.983 l
-0 4.351 l
-0.007 4.781 0.12 5.115 0.338 5.35 c
-0.562 5.593 0.874 5.718 1.278 5.718 c
-1.425 5.718 1.565 5.695 1.705 5.659 c
-1.851 5.618 2.002 5.564 2.16 5.497 c
-2.042 4.924 l
-1.807 5.049 1.565 5.115 1.323 5.115 c
-1.076 5.115 0.903 5.045 0.808 4.909 c
-0.708 4.781 0.661 4.586 0.661 4.321 c
-0.661 3.983 l
-1.308 3.983 l
-1.308 3.453 l
-0.661 3.453 l
-0.661 0 l
-h
-2.469 0 -0.647 3.983 re
-4.218 0 -0.647 5.644 re
-6.659 -0.074 m
-6.158 -0.074 5.776 0.073 5.512 0.367 c
-5.247 0.661 5.115 1.095 5.115 1.675 c
-5.115 2.146 l
-5.115 2.741 5.24 3.208 5.497 3.542 c
-5.762 3.884 6.121 4.056 6.585 4.056 c
-7.044 4.056 7.386 3.902 7.613 3.601 c
-7.849 3.307 7.97 2.844 7.981 2.219 c
-7.981 1.793 l
-5.762 1.793 l
-5.762 1.705 l
-5.762 1.271 5.839 0.959 5.997 0.764 c
-6.162 0.577 6.393 0.484 6.688 0.484 c
-6.882 0.484 7.056 0.517 7.202 0.588 c
-7.349 0.665 7.485 0.783 7.613 0.941 c
-7.952 0.529 l
-7.665 0.124 7.235 -0.074 6.659 -0.074 c
-6.585 3.498 m
-6.31 3.498 6.107 3.403 5.982 3.218 c
-5.853 3.031 5.78 2.741 5.762 2.352 c
-7.334 2.352 l
-7.334 2.439 l
-7.312 2.822 7.247 3.09 7.129 3.248 c
-7.011 3.414 6.827 3.498 6.585 3.498 c
-11.185 0 -0.646 3.983 re
-11.23 5.026 m
-11.23 4.916 11.2 4.825 11.141 4.747 c
-11.083 4.677 10.987 4.644 10.862 4.644 c
-10.744 4.644 10.649 4.677 10.583 4.747 c
-10.524 4.825 10.495 4.916 10.495 5.026 c
-10.495 5.144 10.524 5.236 10.583 5.306 c
-10.649 5.383 10.744 5.423 10.862 5.423 c
-10.987 5.423 11.083 5.383 11.141 5.306 c
-11.2 5.225 11.23 5.134 11.23 5.026 c
-14.14 1.014 m
-14.14 1.161 14.085 1.282 13.978 1.381 c
-13.868 1.477 13.662 1.595 13.361 1.734 c
-13.016 1.881 12.773 2.003 12.626 2.102 c
-12.479 2.208 12.369 2.326 12.303 2.454 c
-12.232 2.58 12.2 2.738 12.2 2.925 c
-12.2 3.248 12.317 3.516 12.552 3.733 c
-12.787 3.946 13.089 4.056 13.464 4.056 c
-13.846 4.056 14.154 3.943 14.39 3.719 c
-14.625 3.491 14.742 3.204 14.742 2.851 c
-14.096 2.851 l
-14.096 3.027 14.037 3.179 13.919 3.307 c
-13.802 3.432 13.647 3.498 13.464 3.498 c
-13.265 3.498 13.115 3.443 13.009 3.336 c
-12.898 3.237 12.847 3.104 12.847 2.94 c
-12.847 2.811 12.883 2.705 12.964 2.616 c
-13.041 2.535 13.232 2.433 13.537 2.308 c
-14.015 2.12 14.346 1.932 14.522 1.749 c
-14.699 1.572 14.787 1.344 14.787 1.072 c
-14.787 0.72 14.662 0.44 14.42 0.235 c
-14.184 0.029 13.868 -0.074 13.479 -0.074 c
-13.056 -0.074 12.718 0.043 12.465 0.278 c
-12.207 0.521 12.082 0.827 12.082 1.19 c
-12.729 1.19 l
-12.737 0.962 12.806 0.786 12.935 0.661 c
-13.059 0.544 13.244 0.484 13.479 0.484 c
-13.692 0.484 13.853 0.532 13.963 0.631 c
-14.081 0.727 14.14 0.856 14.14 1.014 c
-20.226 1.793 m
-20.226 1.165 20.108 0.694 19.873 0.382 c
-19.645 0.077 19.328 -0.074 18.917 -0.074 c
-18.513 -0.074 18.204 0.077 17.992 0.382 c
-17.992 -1.529 l
-17.344 -1.529 l
-17.344 3.983 l
-17.932 3.983 l
-17.977 3.542 l
-18.19 3.884 18.499 4.056 18.902 4.056 c
-19.343 4.056 19.671 3.902 19.887 3.601 c
-20.101 3.296 20.215 2.84 20.226 2.234 c
-h
-19.579 2.175 m
-19.579 2.616 19.509 2.94 19.373 3.145 c
-19.233 3.358 19.012 3.469 18.711 3.469 c
-18.395 3.469 18.156 3.314 17.992 3.013 c
-17.992 0.941 l
-18.156 0.635 18.395 0.484 18.711 0.484 c
-19.006 0.484 19.218 0.588 19.359 0.793 c
-19.494 1.007 19.567 1.337 19.579 1.778 c
-h
-21.769 0 -0.646 5.644 re
-24.826 0 m
-24.786 0.087 24.76 0.235 24.753 0.44 c
-24.518 0.095 24.224 -0.074 23.871 -0.074 c
-23.507 -0.074 23.224 0.022 23.018 0.22 c
-22.82 0.426 22.724 0.712 22.724 1.087 c
-22.724 1.488 22.86 1.807 23.136 2.042 c
-23.407 2.285 23.783 2.41 24.253 2.41 c
-24.738 2.41 l
-24.738 2.836 l
-24.738 3.072 24.683 3.237 24.577 3.336 c
-24.466 3.443 24.305 3.498 24.091 3.498 c
-23.893 3.498 23.731 3.439 23.606 3.322 c
-23.488 3.204 23.43 3.057 23.43 2.881 c
-22.783 2.881 l
-22.783 3.075 22.842 3.266 22.96 3.453 c
-23.085 3.638 23.246 3.785 23.444 3.895 c
-23.65 4.002 23.878 4.056 24.136 4.056 c
-24.536 4.056 24.841 3.954 25.047 3.748 c
-25.26 3.542 25.374 3.248 25.385 2.865 c
-25.385 0.852 l
-25.385 0.548 25.422 0.282 25.503 0.058 c
-25.503 0 l
-h
-23.959 0.514 m
-24.124 0.514 24.275 0.558 24.415 0.646 c
-24.562 0.735 24.668 0.845 24.738 0.984 c
-24.738 1.925 l
-24.371 1.925 l
-24.055 1.925 23.812 1.855 23.636 1.72 c
-23.459 1.591 23.371 1.404 23.371 1.161 c
-23.371 0.933 23.415 0.768 23.503 0.661 c
-23.592 0.562 23.742 0.514 23.959 0.514 c
-27.766 0.484 m
-27.979 0.484 28.152 0.548 28.281 0.675 c
-28.417 0.812 28.49 1.003 28.501 1.249 c
-29.119 1.249 l
-29.096 0.866 28.961 0.548 28.707 0.294 c
-28.45 0.047 28.138 -0.074 27.766 -0.074 c
-27.274 -0.074 26.899 0.077 26.634 0.382 c
-26.377 0.694 26.252 1.161 26.252 1.778 c
-26.252 2.219 l
-26.252 2.815 26.377 3.27 26.634 3.586 c
-26.899 3.898 27.274 4.056 27.766 4.056 c
-28.167 4.056 28.487 3.924 28.722 3.659 c
-28.964 3.403 29.096 3.057 29.119 2.616 c
-28.501 2.616 l
-28.479 2.91 28.406 3.131 28.281 3.278 c
-28.163 3.424 27.99 3.498 27.766 3.498 c
-27.472 3.498 27.255 3.399 27.12 3.204 c
-26.979 3.017 26.906 2.708 26.899 2.278 c
-26.899 1.764 l
-26.899 1.294 26.965 0.959 27.105 0.764 c
-27.251 0.577 27.472 0.484 27.766 0.484 c
-31.294 -0.074 m
-30.794 -0.074 30.412 0.073 30.147 0.367 c
-29.883 0.661 29.751 1.095 29.751 1.675 c
-29.751 2.146 l
-29.751 2.741 29.875 3.208 30.133 3.542 c
-30.397 3.884 30.757 4.056 31.22 4.056 c
-31.679 4.056 32.022 3.902 32.249 3.601 c
-32.485 3.307 32.606 2.844 32.616 2.219 c
-32.616 1.793 l
-30.397 1.793 l
-30.397 1.705 l
-30.397 1.271 30.474 0.959 30.632 0.764 c
-30.798 0.577 31.029 0.484 31.323 0.484 c
-31.518 0.484 31.691 0.517 31.837 0.588 c
-31.985 0.665 32.121 0.783 32.249 0.941 c
-32.587 0.529 l
-32.301 0.124 31.87 -0.074 31.294 -0.074 c
-31.22 3.498 m
-30.945 3.498 30.742 3.403 30.617 3.218 c
-30.489 3.031 30.416 2.741 30.397 2.352 c
-31.97 2.352 l
-31.97 2.439 l
-31.948 2.822 31.882 3.09 31.764 3.248 c
-31.646 3.414 31.463 3.498 31.22 3.498 c
-33.264 2.175 m
-33.264 2.782 33.374 3.248 33.601 3.571 c
-33.837 3.895 34.164 4.056 34.586 4.056 c
-34.968 4.056 35.266 3.898 35.483 3.586 c
-35.483 5.644 l
-36.13 5.644 l
-36.13 0 l
-35.542 0 l
-35.498 0.426 l
-35.292 0.091 34.987 -0.074 34.586 -0.074 c
-34.175 -0.074 33.852 0.081 33.616 0.396 c
-33.381 0.72 33.264 1.176 33.264 1.764 c
-h
-33.91 1.793 m
-33.91 1.352 33.973 1.022 34.102 0.808 c
-34.237 0.602 34.457 0.5 34.763 0.5 c
-35.086 0.5 35.325 0.661 35.483 0.984 c
-35.483 2.998 l
-35.314 3.31 35.075 3.469 34.763 3.469 c
-34.457 3.469 34.237 3.366 34.102 3.16 c
-33.973 2.954 33.91 2.63 33.91 2.19 c
-h
-37.173 0.353 m
-37.173 0.47 37.206 0.565 37.277 0.646 c
-37.343 0.723 37.445 0.764 37.585 0.764 c
-37.732 0.764 37.838 0.723 37.908 0.646 c
-37.985 0.565 38.026 0.47 38.026 0.353 c
-38.026 0.242 37.985 0.151 37.908 0.073 c
-37.838 -0.004 37.732 -0.044 37.585 -0.044 c
-37.445 -0.044 37.343 -0.004 37.277 0.073 c
-37.206 0.151 37.173 0.242 37.173 0.353 c
-f
-Q
-q 1 0 0 1 37.6521 155.6032 cm
-0 0 m
-2.646 4.835 l
-3.204 4.835 l
-0.588 0 l
-h
-6.059 0.515 m
-7.279 0.515 l
-7.279 0.058 l
-4.119 0.058 l
-4.119 0.515 l
-5.486 0.515 l
-5.486 4.38 l
-4.546 4.38 l
-4.546 4.835 l
-6.059 4.835 l
-h
-11.281 1.808 m
-11.281 1.502 11.241 1.234 11.164 0.999 c
-11.094 0.771 10.992 0.588 10.855 0.44 c
-10.726 0.294 10.565 0.18 10.37 0.103 c
-10.172 0.037 9.951 0 9.708 0 c
-9.473 0 9.261 0.037 9.076 0.103 c
-8.889 0.18 8.727 0.294 8.592 0.44 c
-8.452 0.588 8.345 0.771 8.268 0.999 c
-8.199 1.223 8.166 1.492 8.166 1.808 c
-8.166 2.403 8.301 2.851 8.577 3.145 c
-8.849 3.447 9.238 3.601 9.739 3.601 c
-10.256 3.601 10.643 3.447 10.899 3.145 c
-11.152 2.851 11.281 2.403 11.281 1.808 c
-10.679 1.808 m
-10.679 2.072 10.653 2.293 10.605 2.469 c
-10.554 2.645 10.487 2.782 10.4 2.881 c
-10.319 2.987 10.223 3.061 10.105 3.102 c
-9.995 3.149 9.874 3.175 9.739 3.175 c
-9.598 3.175 9.473 3.149 9.356 3.102 c
-9.238 3.061 9.136 2.987 9.047 2.881 c
-8.966 2.77 8.904 2.631 8.856 2.454 c
-8.804 2.278 8.783 2.061 8.783 1.808 c
-8.783 1.532 8.804 1.308 8.856 1.132 c
-8.904 0.955 8.966 0.812 9.047 0.706 c
-9.136 0.595 9.231 0.521 9.342 0.484 c
-9.459 0.444 9.58 0.426 9.708 0.426 c
-9.845 0.426 9.974 0.444 10.091 0.484 c
-10.209 0.521 10.311 0.595 10.4 0.706 c
-10.487 0.812 10.554 0.955 10.605 1.132 c
-10.653 1.308 10.679 1.532 10.679 1.808 c
-13.799 -1.309 m
-13.6 -1.309 13.431 -1.283 13.284 -1.235 c
-13.137 -1.195 13.009 -1.135 12.902 -1.058 c
-12.792 -0.989 12.704 -0.9 12.638 -0.794 c
-12.579 -0.684 12.534 -0.566 12.505 -0.441 c
-13.093 -0.368 l
-13.13 -0.522 13.211 -0.647 13.328 -0.736 c
-13.454 -0.823 13.615 -0.867 13.814 -0.867 c
-13.931 -0.867 14.038 -0.846 14.136 -0.809 c
-14.232 -0.779 14.317 -0.721 14.387 -0.632 c
-14.453 -0.551 14.508 -0.449 14.549 -0.324 c
-14.585 -0.195 14.607 -0.037 14.607 0.147 c
-14.607 0.764 l
-14.566 0.683 14.512 0.602 14.445 0.515 c
-14.387 0.434 14.306 0.359 14.21 0.294 c
-14.122 0.235 14.019 0.183 13.901 0.147 c
-13.784 0.118 13.652 0.103 13.504 0.103 c
-13.277 0.103 13.086 0.135 12.931 0.205 c
-12.785 0.272 12.66 0.374 12.564 0.515 c
-12.465 0.661 12.391 0.841 12.343 1.058 c
-12.292 1.282 12.27 1.535 12.27 1.822 c
-12.27 2.105 12.292 2.356 12.343 2.572 c
-12.391 2.786 12.465 2.969 12.564 3.116 c
-12.66 3.27 12.792 3.388 12.961 3.469 c
-13.126 3.546 13.328 3.586 13.564 3.586 c
-13.806 3.586 14.019 3.528 14.196 3.41 c
-14.372 3.299 14.508 3.145 14.607 2.94 c
-14.622 2.94 l
-14.622 3.116 l
-14.622 3.307 l
-14.629 3.366 14.637 3.414 14.637 3.454 c
-14.644 3.501 14.651 3.532 14.651 3.542 c
-15.21 3.542 l
-15.199 3.52 15.195 3.487 15.195 3.439 c
-15.195 3.388 15.188 3.329 15.181 3.262 c
-15.181 3.057 l
-15.181 2.822 l
-15.181 0.162 l
-15.181 -0.327 15.067 -0.695 14.842 -0.941 c
-14.614 -1.183 14.269 -1.309 13.799 -1.309 c
-14.607 1.837 m
-14.607 2.072 14.581 2.271 14.533 2.439 c
-14.483 2.616 14.416 2.752 14.328 2.851 c
-14.24 2.958 14.14 3.035 14.034 3.087 c
-13.924 3.135 13.818 3.16 13.71 3.16 c
-13.564 3.16 13.435 3.135 13.328 3.087 c
-13.23 3.035 13.145 2.958 13.078 2.851 c
-13.009 2.752 12.954 2.616 12.917 2.439 c
-12.887 2.271 12.873 2.072 12.873 1.837 c
-12.873 1.58 12.887 1.371 12.917 1.205 c
-12.954 1.036 13.005 0.9 13.064 0.793 c
-13.13 0.694 13.218 0.625 13.328 0.588 c
-13.435 0.548 13.556 0.529 13.696 0.529 c
-13.814 0.529 13.924 0.548 14.034 0.588 c
-14.14 0.635 14.232 0.709 14.313 0.808 c
-14.402 0.914 14.468 1.051 14.519 1.22 c
-14.578 1.385 14.607 1.591 14.607 1.837 c
-19.289 1.058 m
-19.289 0.889 19.252 0.738 19.186 0.602 c
-19.127 0.474 19.032 0.367 18.907 0.279 c
-18.789 0.191 18.642 0.121 18.466 0.073 c
-18.296 0.025 18.102 0 17.878 0 c
-17.672 0 17.485 0.014 17.319 0.044 c
-17.161 0.073 17.018 0.118 16.893 0.176 c
-16.775 0.242 16.673 0.33 16.584 0.44 c
-16.503 0.558 16.452 0.694 16.422 0.852 c
-16.922 0.955 l
-16.952 0.837 16.995 0.742 17.055 0.675 c
-17.113 0.606 17.18 0.551 17.261 0.515 c
-17.338 0.474 17.425 0.448 17.525 0.44 c
-17.631 0.43 17.749 0.426 17.878 0.426 c
-18.003 0.426 18.117 0.434 18.216 0.455 c
-18.323 0.474 18.414 0.503 18.495 0.544 c
-18.572 0.592 18.631 0.65 18.672 0.72 c
-18.719 0.786 18.745 0.87 18.745 0.97 c
-18.745 1.076 18.716 1.165 18.657 1.234 c
-18.605 1.3 18.532 1.356 18.437 1.396 c
-18.348 1.444 18.234 1.484 18.098 1.514 c
-17.97 1.543 17.834 1.58 17.687 1.631 c
-17.547 1.66 17.411 1.693 17.275 1.734 c
-17.136 1.782 17.014 1.841 16.908 1.911 c
-16.797 1.977 16.709 2.065 16.643 2.175 c
-16.584 2.281 16.555 2.418 16.555 2.587 c
-16.555 2.899 16.665 3.145 16.893 3.322 c
-17.117 3.498 17.444 3.586 17.878 3.586 c
-18.054 3.586 18.216 3.572 18.363 3.542 c
-18.51 3.513 18.635 3.461 18.745 3.395 c
-18.863 3.326 18.958 3.237 19.039 3.131 c
-19.116 3.031 19.171 2.91 19.2 2.763 c
-18.686 2.69 l
-18.664 2.786 18.631 2.866 18.583 2.925 c
-18.532 2.984 18.473 3.027 18.407 3.057 c
-18.337 3.094 18.252 3.119 18.157 3.131 c
-18.069 3.149 17.973 3.16 17.878 3.16 c
-17.356 3.16 17.099 2.998 17.099 2.675 c
-17.099 2.576 17.117 2.499 17.157 2.439 c
-17.205 2.381 17.267 2.326 17.348 2.278 c
-17.437 2.238 17.54 2.204 17.658 2.175 c
-17.775 2.146 17.899 2.117 18.04 2.087 c
-18.175 2.046 18.319 2.003 18.466 1.955 c
-18.613 1.914 18.745 1.855 18.863 1.778 c
-18.988 1.708 19.09 1.616 19.171 1.499 c
-19.248 1.381 19.289 1.234 19.289 1.058 c
-20.307 0 m
-22.952 4.835 l
-23.511 4.835 l
-20.895 0 l
-h
-26.161 3.881 m
-27.013 4.203 l
-27.145 3.792 l
-26.249 3.557 l
-26.836 2.749 l
-26.455 2.514 l
-25.969 3.351 l
-25.47 2.528 l
-25.088 2.749 l
-25.705 3.557 l
-24.793 3.792 l
-24.941 4.218 l
-25.808 3.865 l
-25.764 4.821 l
-26.204 4.821 l
-h
-f
-Q
-q 1 0 0 1 39.5044 148.4743 cm
-0 0 m
--0.485 0 l
--0.559 3.057 l
-0.073 3.057 l
-h
--0.559 -0.632 0.617 -0.647 re
--0.559 -1.279 m
-4.207 -0.823 m
-5.427 -0.823 l
-5.427 -1.279 l
-2.267 -1.279 l
-2.267 -0.823 l
-3.634 -0.823 l
-3.634 3.042 l
-2.693 3.042 l
-2.693 3.498 l
-4.207 3.498 l
-h
-9.429 0.47 m
-9.429 0.165 9.389 -0.103 9.311 -0.339 c
-9.242 -0.566 9.139 -0.75 9.003 -0.897 c
-8.874 -1.044 8.713 -1.158 8.517 -1.235 c
-8.32 -1.301 8.099 -1.338 7.856 -1.338 c
-7.621 -1.338 7.408 -1.301 7.224 -1.235 c
-7.037 -1.158 6.875 -1.044 6.739 -0.897 c
-6.599 -0.75 6.493 -0.566 6.416 -0.339 c
-6.346 -0.115 6.313 0.154 6.313 0.47 c
-6.313 1.065 6.449 1.514 6.724 1.807 c
-6.996 2.109 7.386 2.263 7.886 2.263 c
-8.404 2.263 8.79 2.109 9.047 1.807 c
-9.3 1.514 9.429 1.065 9.429 0.47 c
-8.827 0.47 m
-8.827 0.735 8.801 0.955 8.753 1.132 c
-8.702 1.308 8.635 1.444 8.548 1.543 c
-8.467 1.649 8.371 1.723 8.253 1.764 c
-8.143 1.811 8.022 1.837 7.886 1.837 c
-7.746 1.837 7.621 1.811 7.503 1.764 c
-7.386 1.723 7.283 1.649 7.195 1.543 c
-7.114 1.433 7.052 1.294 7.004 1.117 c
-6.952 0.941 6.93 0.723 6.93 0.47 c
-6.93 0.195 6.952 -0.03 7.004 -0.206 c
-7.052 -0.383 7.114 -0.526 7.195 -0.632 c
-7.283 -0.743 7.379 -0.817 7.489 -0.853 c
-7.607 -0.894 7.728 -0.912 7.856 -0.912 c
-7.993 -0.912 8.121 -0.894 8.239 -0.853 c
-8.357 -0.817 8.459 -0.743 8.548 -0.632 c
-8.635 -0.526 8.702 -0.383 8.753 -0.206 c
-8.801 -0.03 8.827 0.195 8.827 0.47 c
-11.946 -2.646 m
-11.748 -2.646 11.579 -2.621 11.432 -2.573 c
-11.285 -2.532 11.156 -2.473 11.05 -2.396 c
-10.94 -2.326 10.851 -2.238 10.786 -2.132 c
-10.726 -2.022 10.682 -1.904 10.653 -1.779 c
-11.241 -1.706 l
-11.278 -1.86 11.358 -1.985 11.476 -2.073 c
-11.601 -2.161 11.763 -2.205 11.962 -2.205 c
-12.079 -2.205 12.185 -2.183 12.284 -2.147 c
-12.38 -2.117 12.465 -2.058 12.534 -1.97 c
-12.6 -1.889 12.656 -1.786 12.696 -1.661 c
-12.733 -1.532 12.755 -1.374 12.755 -1.191 c
-12.755 -0.574 l
-12.714 -0.655 12.66 -0.736 12.593 -0.823 c
-12.534 -0.904 12.454 -0.978 12.358 -1.044 c
-12.27 -1.103 12.167 -1.154 12.049 -1.191 c
-11.931 -1.22 11.8 -1.235 11.652 -1.235 c
-11.424 -1.235 11.233 -1.202 11.079 -1.133 c
-10.932 -1.066 10.807 -0.963 10.711 -0.823 c
-10.612 -0.676 10.539 -0.497 10.491 -0.279 c
-10.439 -0.055 10.418 0.198 10.418 0.484 c
-10.418 0.768 10.439 1.018 10.491 1.234 c
-10.539 1.448 10.612 1.631 10.711 1.778 c
-10.807 1.932 10.94 2.05 11.108 2.131 c
-11.274 2.208 11.476 2.248 11.711 2.248 c
-11.954 2.248 12.167 2.19 12.343 2.072 c
-12.519 1.961 12.656 1.807 12.755 1.602 c
-12.77 1.602 l
-12.77 1.778 l
-12.77 1.969 l
-12.777 2.028 12.785 2.076 12.785 2.117 c
-12.791 2.164 12.799 2.194 12.799 2.204 c
-13.358 2.204 l
-13.346 2.183 13.343 2.15 13.343 2.102 c
-13.343 2.05 13.336 1.992 13.328 1.925 c
-13.328 1.72 l
-13.328 1.484 l
-13.328 -1.176 l
-13.328 -1.665 13.215 -2.033 12.99 -2.278 c
-12.762 -2.521 12.417 -2.646 11.946 -2.646 c
-12.755 0.5 m
-12.755 0.735 12.729 0.933 12.681 1.102 c
-12.63 1.278 12.564 1.414 12.476 1.514 c
-12.388 1.62 12.288 1.697 12.182 1.749 c
-12.072 1.797 11.965 1.822 11.858 1.822 c
-11.711 1.822 11.582 1.797 11.476 1.749 c
-11.377 1.697 11.293 1.62 11.226 1.514 c
-11.156 1.414 11.102 1.278 11.065 1.102 c
-11.035 0.933 11.021 0.735 11.021 0.5 c
-11.021 0.242 11.035 0.033 11.065 -0.133 c
-11.102 -0.302 11.152 -0.437 11.212 -0.545 c
-11.278 -0.643 11.366 -0.713 11.476 -0.75 c
-11.582 -0.79 11.704 -0.809 11.844 -0.809 c
-11.962 -0.809 12.072 -0.79 12.182 -0.75 c
-12.288 -0.703 12.38 -0.628 12.461 -0.53 c
-12.549 -0.423 12.615 -0.287 12.667 -0.118 c
-12.725 0.047 12.755 0.253 12.755 0.5 c
-17.437 -0.279 m
-17.437 -0.449 17.4 -0.599 17.334 -0.736 c
-17.275 -0.864 17.18 -0.971 17.055 -1.058 c
-16.937 -1.147 16.789 -1.216 16.613 -1.264 c
-16.444 -1.312 16.249 -1.338 16.025 -1.338 c
-15.819 -1.338 15.632 -1.324 15.467 -1.294 c
-15.309 -1.264 15.166 -1.22 15.041 -1.162 c
-14.923 -1.096 14.82 -1.008 14.732 -0.897 c
-14.651 -0.78 14.599 -0.643 14.57 -0.485 c
-15.07 -0.383 l
-15.1 -0.5 15.143 -0.595 15.202 -0.662 c
-15.261 -0.732 15.327 -0.786 15.408 -0.823 c
-15.486 -0.864 15.573 -0.89 15.673 -0.897 c
-15.779 -0.908 15.897 -0.912 16.025 -0.912 c
-16.151 -0.912 16.264 -0.904 16.363 -0.882 c
-16.47 -0.864 16.562 -0.834 16.643 -0.794 c
-16.72 -0.746 16.779 -0.688 16.819 -0.618 c
-16.867 -0.551 16.893 -0.468 16.893 -0.368 c
-16.893 -0.262 16.864 -0.173 16.804 -0.103 c
-16.753 -0.038 16.679 0.018 16.584 0.058 c
-16.496 0.106 16.382 0.147 16.246 0.176 c
-16.118 0.205 15.981 0.242 15.835 0.294 c
-15.694 0.323 15.559 0.356 15.422 0.396 c
-15.283 0.444 15.162 0.503 15.056 0.573 c
-14.945 0.639 14.857 0.727 14.79 0.837 c
-14.732 0.944 14.703 1.08 14.703 1.249 c
-14.703 1.562 14.813 1.807 15.041 1.984 c
-15.264 2.16 15.592 2.248 16.025 2.248 c
-16.201 2.248 16.363 2.234 16.511 2.204 c
-16.658 2.175 16.783 2.123 16.893 2.057 c
-17.01 1.988 17.105 1.899 17.186 1.793 c
-17.264 1.693 17.319 1.572 17.348 1.425 c
-16.834 1.352 l
-16.812 1.448 16.779 1.529 16.731 1.587 c
-16.679 1.646 16.621 1.69 16.554 1.72 c
-16.485 1.756 16.4 1.782 16.305 1.793 c
-16.216 1.811 16.121 1.822 16.025 1.822 c
-15.503 1.822 15.247 1.66 15.247 1.337 c
-15.247 1.238 15.264 1.161 15.305 1.102 c
-15.353 1.043 15.415 0.988 15.496 0.941 c
-15.584 0.9 15.688 0.866 15.805 0.837 c
-15.923 0.808 16.047 0.779 16.187 0.749 c
-16.323 0.708 16.467 0.665 16.613 0.617 c
-16.76 0.577 16.893 0.517 17.01 0.44 c
-17.136 0.371 17.238 0.278 17.319 0.161 c
-17.396 0.043 17.437 -0.103 17.437 -0.279 c
-18.454 -1.338 m
-21.1 3.498 l
-21.659 3.498 l
-19.042 -1.338 l
-h
-23.75 -0.324 0.75 -0.956 re
-23.75 -1.279 m
-28.193 -2.646 m
-27.995 -2.646 27.825 -2.621 27.678 -2.573 c
-27.531 -2.532 27.403 -2.473 27.296 -2.396 c
-27.186 -2.326 27.097 -2.238 27.031 -2.132 c
-26.973 -2.022 26.929 -1.904 26.9 -1.779 c
-27.487 -1.706 l
-27.524 -1.86 27.605 -1.985 27.723 -2.073 c
-27.847 -2.161 28.009 -2.205 28.207 -2.205 c
-28.325 -2.205 28.431 -2.183 28.531 -2.147 c
-28.626 -2.117 28.71 -2.058 28.781 -1.97 c
-28.847 -1.889 28.901 -1.786 28.942 -1.661 c
-28.979 -1.532 29.001 -1.374 29.001 -1.191 c
-29.001 -0.574 l
-28.961 -0.655 28.905 -0.736 28.839 -0.823 c
-28.781 -0.904 28.7 -0.978 28.604 -1.044 c
-28.516 -1.103 28.413 -1.154 28.296 -1.191 c
-28.178 -1.22 28.045 -1.235 27.899 -1.235 c
-27.671 -1.235 27.48 -1.202 27.326 -1.133 c
-27.178 -1.066 27.054 -0.963 26.958 -0.823 c
-26.859 -0.676 26.785 -0.497 26.738 -0.279 c
-26.686 -0.055 26.664 0.198 26.664 0.484 c
-26.664 0.768 26.686 1.018 26.738 1.234 c
-26.785 1.448 26.859 1.631 26.958 1.778 c
-27.054 1.932 27.186 2.05 27.355 2.131 c
-27.52 2.208 27.723 2.248 27.958 2.248 c
-28.2 2.248 28.413 2.19 28.589 2.072 c
-28.766 1.961 28.901 1.807 29.001 1.602 c
-29.016 1.602 l
-29.016 1.778 l
-29.016 1.969 l
-29.023 2.028 29.03 2.076 29.03 2.117 c
-29.038 2.164 29.045 2.194 29.045 2.204 c
-29.604 2.204 l
-29.593 2.183 29.589 2.15 29.589 2.102 c
-29.589 2.05 29.582 1.992 29.574 1.925 c
-29.574 1.72 l
-29.574 1.484 l
-29.574 -1.176 l
-29.574 -1.665 29.46 -2.033 29.236 -2.278 c
-29.009 -2.521 28.663 -2.646 28.193 -2.646 c
-29.001 0.5 m
-29.001 0.735 28.976 0.933 28.928 1.102 c
-28.876 1.278 28.81 1.414 28.722 1.514 c
-28.633 1.62 28.535 1.697 28.428 1.749 c
-28.317 1.797 28.211 1.822 28.105 1.822 c
-27.958 1.822 27.829 1.797 27.723 1.749 c
-27.623 1.697 27.538 1.62 27.472 1.514 c
-27.403 1.414 27.347 1.278 27.311 1.102 c
-27.281 0.933 27.266 0.735 27.266 0.5 c
-27.266 0.242 27.281 0.033 27.311 -0.133 c
-27.347 -0.302 27.399 -0.437 27.457 -0.545 c
-27.524 -0.643 27.612 -0.713 27.723 -0.75 c
-27.829 -0.79 27.95 -0.809 28.09 -0.809 c
-28.207 -0.809 28.317 -0.79 28.428 -0.75 c
-28.535 -0.703 28.626 -0.628 28.707 -0.53 c
-28.795 -0.423 28.861 -0.287 28.913 -0.118 c
-28.972 0.047 29.001 0.253 29.001 0.5 c
-32.664 -0.823 m
-33.885 -0.823 l
-33.885 -1.279 l
-30.725 -1.279 l
-30.725 -0.823 l
-32.091 -0.823 l
-32.091 1.749 l
-31.062 1.749 l
-31.062 2.204 l
-32.664 2.204 l
-h
-32.018 3.498 0.646 -0.617 re
-32.018 2.881 m
-34.95 1.749 m
-34.95 2.204 l
-35.494 2.204 l
-35.671 3.101 l
-36.068 3.101 l
-36.068 2.204 l
-37.449 2.204 l
-37.449 1.749 l
-36.068 1.749 l
-36.068 -0.353 l
-36.068 -0.522 36.111 -0.647 36.2 -0.736 c
-36.288 -0.817 36.439 -0.853 36.656 -0.853 c
-36.733 -0.853 36.817 -0.849 36.905 -0.838 c
-37.001 -0.831 37.09 -0.82 37.171 -0.809 c
-37.258 -0.801 37.335 -0.79 37.406 -0.78 c
-37.483 -0.772 37.545 -0.757 37.597 -0.736 c
-37.597 -1.176 l
-37.556 -1.199 37.497 -1.216 37.42 -1.235 c
-37.339 -1.246 37.25 -1.261 37.155 -1.279 c
-37.067 -1.287 36.968 -1.297 36.861 -1.309 c
-36.751 -1.327 36.641 -1.338 36.523 -1.338 c
-36.178 -1.338 35.92 -1.264 35.744 -1.118 c
-35.567 -0.971 35.48 -0.736 35.48 -0.412 c
-35.48 1.749 l
-h
-41.333 -1.279 m
-40.157 0.323 l
-39.731 0.014 l
-39.731 -1.279 l
-39.158 -1.279 l
-39.158 3.498 l
-39.731 3.498 l
-39.731 0.514 l
-41.26 2.204 l
-41.936 2.204 l
-40.525 0.706 l
-42.01 -1.279 l
-h
-43.483 0.338 m
-43.483 0.151 43.502 -0.023 43.542 -0.177 c
-43.59 -0.324 43.652 -0.452 43.733 -0.559 c
-43.81 -0.669 43.91 -0.757 44.028 -0.823 c
-44.152 -0.882 44.296 -0.912 44.454 -0.912 c
-44.571 -0.912 44.678 -0.897 44.776 -0.867 c
-44.884 -0.838 44.975 -0.805 45.056 -0.765 c
-45.133 -0.717 45.196 -0.659 45.247 -0.588 c
-45.306 -0.522 45.343 -0.452 45.364 -0.383 c
-45.879 -0.515 l
-45.838 -0.614 45.784 -0.713 45.717 -0.809 c
-45.648 -0.908 45.556 -0.996 45.439 -1.073 c
-45.328 -1.154 45.192 -1.216 45.027 -1.264 c
-44.869 -1.312 44.678 -1.338 44.454 -1.338 c
-44.207 -1.338 43.987 -1.301 43.792 -1.235 c
-43.594 -1.158 43.428 -1.044 43.292 -0.897 c
-43.164 -0.743 43.06 -0.551 42.983 -0.324 c
-42.914 -0.088 42.881 0.18 42.881 0.484 c
-42.881 0.816 42.917 1.095 42.998 1.323 c
-43.087 1.547 43.204 1.726 43.351 1.866 c
-43.498 2.013 43.663 2.117 43.851 2.175 c
-44.034 2.234 44.233 2.263 44.439 2.263 c
-44.722 2.263 44.957 2.219 45.144 2.131 c
-45.339 2.042 45.497 1.914 45.615 1.749 c
-45.74 1.591 45.828 1.396 45.879 1.161 c
-45.938 0.933 45.967 0.683 45.967 0.411 c
-45.967 0.338 l
-h
-44.439 1.837 m
-44.34 1.837 44.236 1.822 44.13 1.793 c
-44.02 1.764 43.917 1.705 43.822 1.616 c
-43.733 1.535 43.66 1.429 43.6 1.294 c
-43.542 1.165 43.505 0.992 43.498 0.779 c
-45.379 0.779 l
-45.358 0.984 45.321 1.15 45.262 1.278 c
-45.21 1.414 45.144 1.521 45.056 1.602 c
-44.975 1.69 44.884 1.749 44.776 1.778 c
-44.666 1.815 44.556 1.837 44.439 1.837 c
-47.544 0.338 m
-47.544 0.151 47.562 -0.023 47.602 -0.177 c
-47.65 -0.324 47.713 -0.452 47.793 -0.559 c
-47.87 -0.669 47.97 -0.757 48.088 -0.823 c
-48.213 -0.882 48.356 -0.912 48.514 -0.912 c
-48.632 -0.912 48.738 -0.897 48.838 -0.867 c
-48.944 -0.838 49.036 -0.805 49.117 -0.765 c
-49.194 -0.717 49.256 -0.659 49.308 -0.588 c
-49.366 -0.522 49.403 -0.452 49.426 -0.383 c
-49.94 -0.515 l
-49.9 -0.614 49.844 -0.713 49.778 -0.809 c
-49.709 -0.908 49.616 -0.996 49.499 -1.073 c
-49.389 -1.154 49.252 -1.216 49.087 -1.264 c
-48.93 -1.312 48.738 -1.338 48.514 -1.338 c
-48.267 -1.338 48.047 -1.301 47.853 -1.235 c
-47.654 -1.158 47.489 -1.044 47.353 -0.897 c
-47.224 -0.743 47.122 -0.551 47.044 -0.324 c
-46.974 -0.088 46.941 0.18 46.941 0.484 c
-46.941 0.816 46.978 1.095 47.059 1.323 c
-47.147 1.547 47.265 1.726 47.411 1.866 c
-47.558 2.013 47.724 2.117 47.911 2.175 c
-48.095 2.234 48.294 2.263 48.499 2.263 c
-48.782 2.263 49.017 2.219 49.204 2.131 c
-49.4 2.042 49.557 1.914 49.675 1.749 c
-49.8 1.591 49.888 1.396 49.94 1.161 c
-49.998 0.933 50.028 0.683 50.028 0.411 c
-50.028 0.338 l
-h
-48.499 1.837 m
-48.4 1.837 48.298 1.822 48.19 1.793 c
-48.08 1.764 47.978 1.705 47.882 1.616 c
-47.793 1.535 47.72 1.429 47.662 1.294 c
-47.602 1.165 47.566 0.992 47.558 0.779 c
-49.44 0.779 l
-49.418 0.984 49.381 1.15 49.322 1.278 c
-49.271 1.414 49.204 1.521 49.117 1.602 c
-49.036 1.69 48.944 1.749 48.838 1.778 c
-48.727 1.815 48.616 1.837 48.499 1.837 c
-54.074 0.47 m
-54.074 0.213 54.052 -0.026 54.015 -0.25 c
-53.975 -0.478 53.905 -0.673 53.809 -0.838 c
-53.711 -0.996 53.578 -1.118 53.412 -1.206 c
-53.254 -1.294 53.06 -1.338 52.824 -1.338 c
-52.707 -1.338 52.593 -1.327 52.487 -1.309 c
-52.377 -1.287 52.273 -1.257 52.178 -1.206 c
-52.09 -1.158 52.005 -1.099 51.928 -1.029 c
-51.858 -0.952 51.799 -0.861 51.752 -0.75 c
-51.737 -0.75 l
-51.737 -0.809 l
-51.744 -0.838 51.752 -0.879 51.752 -0.927 c
-51.752 -1.103 l
-51.752 -1.279 l
-51.752 -2.646 l
-51.163 -2.646 l
-51.163 1.484 l
-51.163 1.72 l
-51.163 1.94 l
-51.163 2.006 51.156 2.061 51.149 2.102 c
-51.149 2.204 l
-51.708 2.204 l
-51.714 2.194 51.722 2.167 51.722 2.131 c
-51.722 1.984 l
-51.729 1.932 51.737 1.874 51.737 1.807 c
-51.744 1.738 51.752 1.679 51.752 1.631 c
-51.766 1.631 l
-51.814 1.738 51.872 1.83 51.943 1.911 c
-52.009 1.999 52.082 2.065 52.163 2.117 c
-52.251 2.164 52.347 2.204 52.458 2.234 c
-52.564 2.263 52.685 2.278 52.824 2.278 c
-53.06 2.278 53.254 2.234 53.412 2.146 c
-53.578 2.057 53.711 1.932 53.809 1.778 c
-53.905 1.62 53.975 1.429 54.015 1.205 c
-54.052 0.988 54.074 0.742 54.074 0.47 c
-53.486 0.47 m
-53.486 0.683 53.472 0.874 53.442 1.043 c
-53.42 1.209 53.376 1.352 53.31 1.469 c
-53.251 1.587 53.166 1.675 53.06 1.734 c
-52.95 1.793 52.817 1.822 52.663 1.822 c
-52.545 1.822 52.427 1.801 52.31 1.764 c
-52.2 1.723 52.104 1.649 52.016 1.543 c
-51.935 1.444 51.872 1.3 51.825 1.117 c
-51.774 0.929 51.752 0.694 51.752 0.411 c
-51.752 0.154 51.77 -0.055 51.81 -0.221 c
-51.847 -0.39 51.906 -0.526 51.987 -0.632 c
-52.064 -0.732 52.156 -0.805 52.266 -0.853 c
-52.383 -0.894 52.516 -0.912 52.663 -0.912 c
-52.817 -0.912 52.946 -0.882 53.045 -0.823 c
-53.152 -0.765 53.236 -0.676 53.295 -0.559 c
-53.361 -0.441 53.412 -0.294 53.442 -0.118 c
-53.472 0.058 53.486 0.253 53.486 0.47 c
-f
-Q
-q 1 0 0 1 37.6521 138.6699 cm
-0 0 m
-2.646 4.835 l
-3.204 4.835 l
-0.588 0 l
-h
-4.31 3.087 m
-4.31 3.542 l
-4.854 3.542 l
-5.031 4.438 l
-5.428 4.438 l
-5.428 3.542 l
-6.809 3.542 l
-6.809 3.087 l
-5.428 3.087 l
-5.428 0.985 l
-5.428 0.816 5.471 0.691 5.56 0.602 c
-5.648 0.521 5.799 0.484 6.016 0.484 c
-6.093 0.484 6.177 0.488 6.265 0.5 c
-6.361 0.507 6.449 0.517 6.53 0.529 c
-6.618 0.536 6.695 0.548 6.765 0.558 c
-6.842 0.565 6.905 0.58 6.957 0.602 c
-6.957 0.162 l
-6.916 0.139 6.857 0.121 6.78 0.103 c
-6.699 0.091 6.611 0.077 6.516 0.058 c
-6.427 0.051 6.328 0.04 6.221 0.029 c
-6.111 0.01 6.001 0 5.883 0 c
-5.538 0 5.28 0.073 5.104 0.22 c
-4.928 0.367 4.84 0.602 4.84 0.926 c
-4.84 3.087 l
-h
-9.459 0.058 m
-9.459 2.263 l
-9.459 2.429 9.452 2.572 9.444 2.69 c
-9.433 2.807 9.415 2.899 9.386 2.969 c
-9.356 3.035 9.315 3.087 9.268 3.116 c
-9.216 3.145 9.157 3.16 9.091 3.16 c
-9.022 3.16 8.959 3.131 8.9 3.072 c
-8.849 3.021 8.801 2.944 8.754 2.836 c
-8.713 2.738 8.684 2.62 8.665 2.484 c
-8.644 2.344 8.636 2.19 8.636 2.013 c
-8.636 0.058 l
-8.092 0.058 l
-8.092 2.792 l
-8.092 3.027 l
-8.092 3.104 8.085 3.179 8.077 3.248 c
-8.077 3.439 l
-8.077 3.542 l
-8.548 3.542 l
-8.548 3.454 l
-8.555 3.414 8.563 3.366 8.563 3.307 c
-8.563 3.131 l
-8.569 3.072 8.577 3.017 8.577 2.969 c
-8.606 3.057 8.64 3.135 8.68 3.204 c
-8.717 3.281 8.761 3.351 8.812 3.41 c
-8.871 3.469 8.933 3.513 9.003 3.542 c
-9.08 3.579 9.168 3.601 9.268 3.601 c
-9.463 3.601 9.606 3.546 9.694 3.439 c
-9.789 3.34 9.86 3.182 9.899 2.969 c
-9.937 3.064 9.977 3.152 10.017 3.233 c
-10.065 3.31 10.12 3.373 10.179 3.424 c
-10.246 3.484 10.315 3.528 10.385 3.557 c
-10.462 3.586 10.554 3.601 10.664 3.601 c
-10.789 3.601 10.899 3.575 10.988 3.528 c
-11.075 3.476 11.15 3.403 11.208 3.307 c
-11.267 3.208 11.304 3.079 11.326 2.925 c
-11.355 2.778 11.37 2.594 11.37 2.381 c
-11.37 0.058 l
-10.826 0.058 l
-10.826 2.263 l
-10.826 2.429 10.819 2.572 10.811 2.69 c
-10.801 2.807 10.782 2.899 10.753 2.969 c
-10.723 3.035 10.682 3.087 10.635 3.116 c
-10.583 3.145 10.525 3.16 10.458 3.16 c
-10.319 3.16 10.209 3.064 10.12 2.881 c
-10.04 2.705 10.003 2.433 10.003 2.072 c
-10.003 0.058 l
-h
-15.312 1.808 m
-15.312 1.55 15.291 1.311 15.254 1.087 c
-15.214 0.86 15.144 0.665 15.048 0.5 c
-14.949 0.341 14.817 0.22 14.651 0.132 c
-14.493 0.044 14.298 0 14.063 0 c
-13.946 0 13.832 0.01 13.725 0.029 c
-13.615 0.051 13.512 0.081 13.417 0.132 c
-13.328 0.18 13.244 0.239 13.167 0.309 c
-13.097 0.386 13.038 0.477 12.991 0.588 c
-12.976 0.588 l
-12.976 0.529 l
-12.983 0.5 12.991 0.459 12.991 0.411 c
-12.991 0.235 l
-12.991 0.058 l
-12.991 -1.309 l
-12.403 -1.309 l
-12.403 2.822 l
-12.403 3.057 l
-12.403 3.278 l
-12.403 3.343 12.395 3.399 12.388 3.439 c
-12.388 3.542 l
-12.946 3.542 l
-12.954 3.532 12.961 3.505 12.961 3.469 c
-12.961 3.322 l
-12.968 3.27 12.976 3.212 12.976 3.145 c
-12.983 3.075 12.991 3.017 12.991 2.969 c
-13.005 2.969 l
-13.053 3.075 13.112 3.167 13.182 3.248 c
-13.247 3.337 13.321 3.403 13.402 3.454 c
-13.49 3.501 13.585 3.542 13.696 3.572 c
-13.803 3.601 13.924 3.615 14.063 3.615 c
-14.298 3.615 14.493 3.572 14.651 3.484 c
-14.817 3.395 14.949 3.27 15.048 3.116 c
-15.144 2.958 15.214 2.767 15.254 2.543 c
-15.291 2.326 15.312 2.08 15.312 1.808 c
-14.724 1.808 m
-14.724 2.021 14.71 2.212 14.68 2.381 c
-14.659 2.547 14.614 2.69 14.549 2.807 c
-14.489 2.925 14.406 3.013 14.298 3.072 c
-14.188 3.131 14.056 3.16 13.901 3.16 c
-13.784 3.16 13.666 3.138 13.549 3.102 c
-13.438 3.061 13.343 2.987 13.255 2.881 c
-13.174 2.782 13.112 2.638 13.064 2.454 c
-13.012 2.267 12.991 2.032 12.991 1.749 c
-12.991 1.492 13.009 1.282 13.049 1.117 c
-13.086 0.947 13.145 0.812 13.226 0.706 c
-13.303 0.606 13.394 0.532 13.504 0.484 c
-13.623 0.444 13.755 0.426 13.901 0.426 c
-14.056 0.426 14.184 0.455 14.284 0.515 c
-14.39 0.573 14.475 0.661 14.533 0.779 c
-14.6 0.897 14.651 1.043 14.68 1.22 c
-14.71 1.396 14.724 1.591 14.724 1.808 c
-f
-Q
-q 1 0 0 1 39.4451 134.0838 cm
-0 0 m
-0.853 0.323 l
-0.985 -0.088 l
-0.088 -0.324 l
-0.676 -1.132 l
-0.294 -1.367 l
--0.191 -0.53 l
--0.69 -1.353 l
--1.072 -1.132 l
--0.455 -0.324 l
--1.367 -0.088 l
--1.22 0.338 l
--0.353 -0.015 l
--0.397 0.941 l
-0.044 0.941 l
-h
-3.502 -2.866 0.75 -0.956 re
-3.502 -3.822 m
-9.371 -2.822 m
-9.371 -2.992 9.334 -3.142 9.268 -3.278 c
-9.209 -3.406 9.114 -3.514 8.989 -3.601 c
-8.871 -3.69 8.724 -3.759 8.548 -3.807 c
-8.379 -3.855 8.184 -3.881 7.96 -3.881 c
-7.754 -3.881 7.566 -3.866 7.401 -3.836 c
-7.243 -3.807 7.1 -3.763 6.975 -3.705 c
-6.857 -3.639 6.755 -3.55 6.666 -3.44 c
-6.585 -3.323 6.534 -3.186 6.504 -3.028 c
-7.005 -2.926 l
-7.034 -3.043 7.078 -3.138 7.136 -3.205 c
-7.196 -3.275 7.262 -3.329 7.342 -3.366 c
-7.42 -3.406 7.508 -3.433 7.607 -3.44 c
-7.713 -3.451 7.832 -3.454 7.96 -3.454 c
-8.085 -3.454 8.199 -3.447 8.298 -3.425 c
-8.405 -3.406 8.497 -3.377 8.577 -3.337 c
-8.654 -3.289 8.713 -3.23 8.754 -3.161 c
-8.802 -3.094 8.827 -3.01 8.827 -2.911 c
-8.827 -2.804 8.798 -2.716 8.739 -2.646 c
-8.688 -2.58 8.614 -2.525 8.518 -2.484 c
-8.43 -2.437 8.316 -2.396 8.181 -2.367 c
-8.052 -2.338 7.915 -2.301 7.769 -2.249 c
-7.629 -2.22 7.493 -2.187 7.358 -2.147 c
-7.217 -2.099 7.096 -2.04 6.99 -1.97 c
-6.88 -1.904 6.791 -1.816 6.725 -1.706 c
-6.666 -1.599 6.637 -1.463 6.637 -1.294 c
-6.637 -0.981 6.747 -0.736 6.975 -0.559 c
-7.199 -0.383 7.526 -0.294 7.96 -0.294 c
-8.136 -0.294 8.298 -0.309 8.445 -0.339 c
-8.592 -0.368 8.717 -0.42 8.827 -0.485 c
-8.945 -0.555 9.041 -0.643 9.121 -0.75 c
-9.199 -0.849 9.253 -0.971 9.282 -1.118 c
-8.769 -1.191 l
-8.746 -1.095 8.713 -1.014 8.665 -0.956 c
-8.614 -0.897 8.555 -0.853 8.489 -0.823 c
-8.419 -0.786 8.335 -0.761 8.239 -0.75 c
-8.151 -0.732 8.056 -0.721 7.96 -0.721 c
-7.438 -0.721 7.181 -0.882 7.181 -1.206 c
-7.181 -1.305 7.199 -1.382 7.24 -1.441 c
-7.287 -1.5 7.35 -1.555 7.431 -1.602 c
-7.518 -1.643 7.622 -1.676 7.739 -1.706 c
-7.857 -1.735 7.982 -1.764 8.121 -1.794 c
-8.258 -1.834 8.401 -1.878 8.548 -1.926 c
-8.694 -1.966 8.827 -2.025 8.945 -2.103 c
-9.07 -2.172 9.172 -2.264 9.253 -2.382 c
-9.33 -2.5 9.371 -2.646 9.371 -2.822 c
-13.299 -3.822 m
-12.638 -3.822 l
-12.182 -2.308 l
-12.16 -2.249 12.142 -2.187 12.123 -2.117 c
-12.102 -2.04 12.083 -1.966 12.065 -1.897 c
-12.035 -1.819 12.009 -1.742 11.991 -1.661 c
-11.969 -1.742 11.95 -1.819 11.932 -1.897 c
-11.91 -1.966 11.892 -2.04 11.873 -2.117 c
-11.851 -2.187 11.83 -2.257 11.8 -2.323 c
-11.329 -3.822 l
-10.683 -3.822 l
-10.095 -0.339 l
-10.668 -0.339 l
-10.962 -2.294 l
-10.969 -2.345 10.98 -2.419 10.992 -2.514 c
-10.999 -2.602 11.009 -2.701 11.021 -2.808 c
-11.028 -2.907 11.04 -3.007 11.05 -3.102 c
-11.057 -3.201 11.065 -3.278 11.065 -3.337 c
-11.094 -3.248 11.117 -3.161 11.138 -3.072 c
-11.157 -2.995 11.175 -2.918 11.198 -2.837 c
-11.215 -2.76 11.234 -2.701 11.256 -2.66 c
-11.682 -1.294 l
-12.314 -1.294 l
-12.726 -2.66 l
-12.733 -2.701 12.748 -2.76 12.771 -2.837 c
-12.788 -2.918 12.807 -2.992 12.829 -3.057 c
-12.858 -3.146 12.881 -3.242 12.902 -3.337 c
-12.902 -3.278 12.906 -3.201 12.917 -3.102 c
-12.925 -3.007 12.935 -2.907 12.946 -2.808 c
-12.954 -2.701 12.965 -2.602 12.976 -2.514 c
-12.994 -2.425 13.009 -2.352 13.02 -2.294 c
-13.343 -0.339 l
-13.902 -0.339 l
-h
-17.584 -2.072 m
-17.584 -2.33 17.562 -2.569 17.525 -2.793 c
-17.485 -3.021 17.415 -3.215 17.319 -3.381 c
-17.22 -3.539 17.088 -3.66 16.923 -3.749 c
-16.765 -3.836 16.57 -3.881 16.335 -3.881 c
-16.217 -3.881 16.103 -3.87 15.996 -3.851 c
-15.886 -3.83 15.784 -3.8 15.688 -3.749 c
-15.599 -3.701 15.515 -3.642 15.438 -3.572 c
-15.368 -3.495 15.31 -3.404 15.262 -3.293 c
-15.247 -3.293 l
-15.247 -3.352 l
-15.254 -3.381 15.262 -3.421 15.262 -3.469 c
-15.262 -3.645 l
-15.262 -3.822 l
-15.262 -5.189 l
-14.674 -5.189 l
-14.674 -1.058 l
-14.674 -0.823 l
-14.674 -0.603 l
-14.674 -0.537 14.666 -0.482 14.659 -0.441 c
-14.659 -0.339 l
-15.217 -0.339 l
-15.225 -0.349 15.232 -0.375 15.232 -0.412 c
-15.232 -0.559 l
-15.239 -0.611 15.247 -0.669 15.247 -0.736 c
-15.254 -0.805 15.262 -0.864 15.262 -0.912 c
-15.277 -0.912 l
-15.324 -0.805 15.383 -0.713 15.453 -0.632 c
-15.518 -0.544 15.593 -0.478 15.673 -0.426 c
-15.761 -0.379 15.857 -0.339 15.967 -0.309 c
-16.073 -0.279 16.195 -0.265 16.335 -0.265 c
-16.57 -0.265 16.765 -0.309 16.923 -0.397 c
-17.088 -0.485 17.22 -0.611 17.319 -0.765 c
-17.415 -0.923 17.485 -1.114 17.525 -1.338 c
-17.562 -1.555 17.584 -1.801 17.584 -2.072 c
-16.996 -2.072 m
-16.996 -1.86 16.981 -1.669 16.952 -1.5 c
-16.93 -1.334 16.885 -1.191 16.819 -1.073 c
-16.761 -0.956 16.676 -0.867 16.57 -0.809 c
-16.459 -0.75 16.327 -0.721 16.173 -0.721 c
-16.056 -0.721 15.938 -0.742 15.82 -0.779 c
-15.709 -0.819 15.614 -0.894 15.526 -1 c
-15.445 -1.099 15.383 -1.243 15.335 -1.426 c
-15.283 -1.613 15.262 -1.849 15.262 -2.132 c
-15.262 -2.389 15.279 -2.598 15.32 -2.764 c
-15.358 -2.933 15.416 -3.069 15.497 -3.175 c
-15.574 -3.275 15.666 -3.348 15.776 -3.396 c
-15.894 -3.437 16.025 -3.454 16.173 -3.454 c
-16.327 -3.454 16.455 -3.425 16.555 -3.366 c
-16.661 -3.308 16.746 -3.219 16.805 -3.102 c
-16.871 -2.984 16.923 -2.837 16.952 -2.66 c
-16.981 -2.484 16.996 -2.29 16.996 -2.072 c
-f
-Q
-0.793 0.801 0.129 0.016 k
-35.668 442.028 238.665 -21.457 re
-f
-0 0 0 0 k
-q 1 0 0 1 146.2115 426.5399 cm
-0 0 m
--1.822 0 l
--1.822 7.158 l
--3.601 6.468 l
--3.601 7.981 l
--0.191 9.377 l
-0 9.377 l
-h
-3.047 0.926 m
-3.047 1.219 3.142 1.458 3.341 1.646 c
-3.535 1.83 3.789 1.925 4.105 1.925 c
-4.406 1.925 4.657 1.83 4.855 1.646 c
-5.06 1.458 5.164 1.219 5.164 0.926 c
-5.164 0.621 5.06 0.374 4.855 0.191 c
-4.657 0.014 4.406 -0.074 4.105 -0.074 c
-3.801 -0.074 3.547 0.018 3.341 0.205 c
-3.142 0.389 3.047 0.631 3.047 0.926 c
-16.416 1.058 m
-16.052 0.665 15.607 0.367 15.078 0.161 c
-14.549 -0.034 13.968 -0.133 13.343 -0.133 c
-12.263 -0.133 11.425 0.198 10.83 0.866 c
-10.231 1.532 9.926 2.502 9.918 3.777 c
-9.918 5.468 l
-9.918 6.761 10.198 7.754 10.756 8.452 c
-11.323 9.146 12.146 9.495 13.226 9.495 c
-14.244 9.495 15.009 9.238 15.519 8.731 c
-16.037 8.231 16.335 7.445 16.416 6.379 c
-14.579 6.379 l
-14.527 6.975 14.406 7.382 14.211 7.599 c
-14.012 7.812 13.704 7.922 13.285 7.922 c
-12.774 7.922 12.403 7.735 12.168 7.364 c
-11.94 6.989 11.822 6.397 11.815 5.585 c
-11.815 3.881 l
-11.815 3.027 11.94 2.403 12.197 2.013 c
-12.451 1.631 12.866 1.44 13.446 1.44 c
-13.818 1.44 14.122 1.514 14.358 1.66 c
-14.519 1.778 l
-14.519 3.498 l
-13.197 3.498 l
-13.197 4.924 l
-16.416 4.924 l
-h
-19.973 0 -1.897 9.363 re
-27.554 7.79 m
-25.232 7.79 l
-25.232 0 l
-23.335 0 l
-23.335 7.79 l
-21.057 7.79 l
-21.057 9.363 l
-27.554 9.363 l
-h
-37.913 3.116 m
-37.862 2.046 37.56 1.238 37.002 0.691 c
-36.451 0.139 35.678 -0.133 34.679 -0.133 c
-33.61 -0.133 32.79 0.213 32.224 0.911 c
-31.666 1.606 31.387 2.601 31.387 3.895 c
-31.387 5.468 l
-31.387 6.761 31.673 7.754 32.254 8.452 c
-32.842 9.146 33.654 9.495 34.694 9.495 c
-35.711 9.495 36.488 9.205 37.016 8.628 c
-37.546 8.058 37.847 7.239 37.928 6.173 c
-36.031 6.173 l
-36.01 6.838 35.906 7.294 35.723 7.54 c
-35.535 7.794 35.194 7.922 34.694 7.922 c
-34.194 7.922 33.834 7.746 33.621 7.393 c
-33.415 7.04 33.301 6.456 33.282 5.644 c
-33.282 3.881 l
-33.282 2.946 33.386 2.308 33.591 1.955 c
-33.805 1.609 34.169 1.44 34.679 1.44 c
-35.168 1.44 35.506 1.558 35.694 1.793 c
-35.888 2.036 35.995 2.476 36.017 3.116 c
-h
-45.887 3.836 m
-45.887 2.579 45.585 1.606 44.991 0.911 c
-44.392 0.213 43.568 -0.133 42.521 -0.133 c
-41.471 -0.133 40.644 0.209 40.037 0.897 c
-39.438 1.591 39.133 2.557 39.125 3.792 c
-39.125 5.394 l
-39.125 6.676 39.424 7.68 40.022 8.407 c
-40.617 9.132 41.448 9.495 42.506 9.495 c
-43.543 9.495 44.362 9.135 44.961 8.422 c
-45.568 7.717 45.876 6.721 45.887 5.438 c
-h
-43.991 5.409 m
-43.991 6.25 43.866 6.879 43.624 7.291 c
-43.389 7.702 43.013 7.908 42.506 7.908 c
-42.007 7.908 41.631 7.706 41.39 7.305 c
-41.155 6.912 41.029 6.312 41.022 5.512 c
-41.022 3.836 l
-41.022 3.02 41.143 2.418 41.39 2.028 c
-41.631 1.635 42.011 1.44 42.521 1.44 c
-43.01 1.44 43.374 1.631 43.609 2.013 c
-43.852 2.395 43.98 2.983 43.991 3.777 c
-h
-54.019 0 m
-52.124 0 l
-49.36 6.144 l
-49.36 0 l
-47.464 0 l
-47.464 9.363 l
-49.36 9.363 l
-52.124 3.218 l
-52.124 9.363 l
-54.019 9.363 l
-h
-60.608 3.821 m
-57.668 3.821 l
-57.668 0 l
-55.773 0 l
-55.773 9.363 l
-60.961 9.363 l
-60.961 7.79 l
-57.668 7.79 l
-57.668 5.394 l
-60.608 5.394 l
-h
-64.213 0 -1.896 9.363 re
-72.272 1.058 m
-71.908 0.665 71.463 0.367 70.935 0.161 c
-70.405 -0.034 69.825 -0.133 69.2 -0.133 c
-68.12 -0.133 67.282 0.198 66.686 0.866 c
-66.087 1.532 65.782 2.502 65.775 3.777 c
-65.775 5.468 l
-65.775 6.761 66.054 7.754 66.613 8.452 c
-67.179 9.146 68.002 9.495 69.082 9.495 c
-70.1 9.495 70.865 9.238 71.376 8.731 c
-71.893 8.231 72.191 7.445 72.272 6.379 c
-70.435 6.379 l
-70.383 6.975 70.262 7.382 70.067 7.599 c
-69.869 7.812 69.56 7.922 69.142 7.922 c
-68.631 7.922 68.259 7.735 68.024 7.364 c
-67.796 6.989 67.679 6.397 67.671 5.585 c
-67.671 3.881 l
-67.671 3.027 67.796 2.403 68.053 2.013 c
-68.307 1.631 68.722 1.44 69.302 1.44 c
-69.674 1.44 69.979 1.514 70.214 1.66 c
-70.376 1.778 l
-70.376 3.498 l
-69.053 3.498 l
-69.053 4.924 l
-72.272 4.924 l
-h
-79.945 9.363 m
-79.945 2.881 l
-79.934 1.911 79.666 1.165 79.137 0.646 c
-78.607 0.124 77.846 -0.133 76.858 -0.133 c
-75.858 -0.133 75.095 0.124 74.565 0.646 c
-74.036 1.176 73.771 1.932 73.771 2.925 c
-73.771 9.363 l
-75.667 9.363 l
-75.667 2.925 l
-75.667 2.385 75.748 2.002 75.918 1.778 c
-76.094 1.55 76.406 1.44 76.858 1.44 c
-77.306 1.44 77.615 1.55 77.784 1.778 c
-77.95 2.002 78.038 2.37 78.048 2.881 c
-78.048 9.363 l
-h
-84.431 3.424 m
-83.491 3.424 l
-83.491 0 l
-81.609 0 l
-81.609 9.363 l
-84.623 9.363 l
-85.571 9.363 86.302 9.117 86.813 8.628 c
-87.332 8.136 87.592 7.441 87.592 6.541 c
-87.592 5.294 87.14 4.424 86.239 3.924 c
-87.872 0.087 l
-87.872 0 l
-85.842 0 l
-h
-83.491 4.997 m
-84.564 4.997 l
-84.946 4.997 85.229 5.119 85.416 5.365 c
-85.601 5.618 85.696 5.957 85.696 6.379 c
-85.696 7.32 85.332 7.79 84.608 7.79 c
-83.491 7.79 l
-h
-93.578 1.911 m
-91.006 1.911 l
-90.506 0 l
-88.508 0 l
-91.432 9.363 l
-93.152 9.363 l
-96.107 0 l
-94.078 0 l
-h
-91.417 3.498 m
-93.167 3.498 l
-92.285 6.834 l
-h
-102.482 7.79 m
-100.16 7.79 l
-100.16 0 l
-98.264 0 l
-98.264 7.79 l
-95.986 7.79 l
-95.986 9.363 l
-102.482 9.363 l
-h
-105.753 0 -1.897 9.363 re
-114.047 3.836 m
-114.047 2.579 113.746 1.606 113.15 0.911 c
-112.551 0.213 111.728 -0.133 110.681 -0.133 c
-109.63 -0.133 108.803 0.209 108.196 0.897 c
-107.597 1.591 107.292 2.557 107.285 3.792 c
-107.285 5.394 l
-107.285 6.676 107.583 7.68 108.182 8.407 c
-108.777 9.132 109.607 9.495 110.666 9.495 c
-111.702 9.495 112.522 9.135 113.121 8.422 c
-113.727 7.717 114.036 6.721 114.047 5.438 c
-h
-112.15 5.409 m
-112.15 6.25 112.026 6.879 111.783 7.291 c
-111.548 7.702 111.173 7.908 110.666 7.908 c
-110.166 7.908 109.791 7.706 109.549 7.305 c
-109.314 6.912 109.189 6.312 109.181 5.512 c
-109.181 3.836 l
-109.181 3.02 109.303 2.418 109.549 2.028 c
-109.791 1.635 110.17 1.44 110.681 1.44 c
-111.169 1.44 111.533 1.631 111.768 2.013 c
-112.011 2.395 112.14 2.983 112.15 3.777 c
-h
-122.176 0 m
-120.279 0 l
-117.515 6.144 l
-117.515 0 l
-115.62 0 l
-115.62 9.363 l
-117.515 9.363 l
-120.279 3.218 l
-120.279 9.363 l
-122.176 9.363 l
-h
-f
-Q
-0.113 0.082 0.09 0 k
-35.668 411.726 238.665 -12.895 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 40.8563 404.8916 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.647 -0.243 -0.775 -0.367 -0.882 c
--0.496 -0.992 -0.658 -1.081 -0.852 -1.147 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.162 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.927 c
--3.127 -0.819 -3.23 -0.691 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.214 -3.484 -0.015 c
--2.66 0.132 l
--2.642 0.033 -2.616 -0.059 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.368 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.683 -1.992 0.69 -1.999 0.69 c
--2.167 0.727 -2.329 0.771 -2.484 0.823 c
--2.642 0.881 -2.786 0.959 -2.91 1.058 c
--3.039 1.153 -3.142 1.278 -3.219 1.425 c
--3.289 1.573 -3.322 1.756 -3.322 1.984 c
--3.322 2.179 -3.289 2.344 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.836 c
--2.8 2.932 -2.645 3.002 -2.469 3.042 c
--2.293 3.09 -2.102 3.119 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.119 -1.128 3.09 -0.97 3.042 c
--0.804 2.992 -0.669 2.917 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.202 2.344 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.252 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.352 c
--1.294 1.311 -1.117 1.264 -0.941 1.205 c
--0.756 1.147 -0.595 1.066 -0.455 0.97 c
--0.32 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.454 c
--2.26 2.425 -2.319 2.385 -2.366 2.337 c
--2.406 2.296 -2.437 2.248 -2.454 2.19 c
--2.477 2.131 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.778 c
--2.41 1.72 -2.373 1.668 -2.322 1.631 c
--2.263 1.591 -2.201 1.558 -2.131 1.529 c
--2.065 1.5 -1.984 1.469 -1.896 1.44 c
-h
--0.837 -0.015 m
--0.837 0.091 -0.86 0.176 -0.897 0.235 c
--0.926 0.301 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.529 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.53 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.015 c
-6.402 -2.66 m
-6.185 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.519 -2.485 5.402 -2.396 c
-5.284 -2.315 5.185 -2.22 5.108 -2.103 c
-5.039 -1.985 4.991 -1.856 4.961 -1.72 c
-5.858 -1.617 l
-5.895 -1.753 5.964 -1.86 6.064 -1.941 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.058 6.681 -2.028 c
-6.758 -1.999 6.828 -1.945 6.887 -1.867 c
-6.945 -1.797 6.99 -1.706 7.019 -1.588 c
-7.056 -1.47 7.078 -1.323 7.078 -1.147 c
-7.078 -0.956 l
-7.078 -0.889 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.073 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.215 -0.897 5.108 -0.75 c
-5.009 -0.595 4.935 -0.412 4.888 -0.206 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.771 4.836 1.018 4.888 1.234 c
-4.946 1.448 5.027 1.631 5.137 1.778 c
-5.245 1.933 5.376 2.051 5.534 2.131 c
-5.689 2.219 5.876 2.263 6.093 2.263 c
-6.188 2.263 6.288 2.252 6.387 2.234 c
-6.483 2.212 6.571 2.179 6.652 2.131 c
-6.739 2.08 6.817 2.017 6.887 1.94 c
-6.964 1.859 7.026 1.768 7.078 1.66 c
-7.092 1.66 l
-7.092 1.808 l
-7.1 1.866 7.107 1.918 7.107 1.97 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.152 2.219 c
-8.004 2.219 l
-7.993 2.138 7.982 2.028 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.162 l
-7.975 -1.415 7.938 -1.635 7.871 -1.823 c
-7.802 -2.007 7.699 -2.161 7.563 -2.278 c
-7.423 -2.404 7.258 -2.499 7.063 -2.558 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.529 m
-7.092 0.742 7.067 0.918 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.5 6.729 1.558 6.652 1.587 c
-6.571 1.624 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.62 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.367 c
-5.88 1.278 5.835 1.161 5.799 1.014 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.339 c
-6.049 -0.515 6.211 -0.603 6.417 -0.603 c
-6.483 -0.603 6.556 -0.588 6.637 -0.559 c
-6.725 -0.522 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.177 7.019 -0.029 c
-7.067 0.118 7.092 0.301 7.092 0.529 c
-11.036 -0.647 m
-12.168 -0.647 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.647 l
-10.124 -0.647 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.219 l
-11.036 2.219 l
-h
-10.124 3.513 0.912 -0.676 re
-10.124 2.836 m
-13.6 1.602 m
-13.057 1.602 l
-13.057 2.219 l
-13.644 2.219 l
-13.924 3.116 l
-14.497 3.116 l
-14.497 2.219 l
-15.732 2.219 l
-15.732 1.602 l
-14.497 1.602 l
-14.497 -0.103 l
-14.497 -0.324 l
-14.504 -0.393 14.527 -0.456 14.556 -0.515 c
-14.593 -0.566 14.648 -0.611 14.718 -0.647 c
-14.795 -0.676 14.909 -0.691 15.056 -0.691 c
-15.192 -0.691 15.327 -0.688 15.468 -0.676 c
-15.603 -0.658 15.736 -0.632 15.865 -0.603 c
-15.865 -1.205 l
-15.784 -1.216 15.707 -1.231 15.629 -1.249 c
-15.549 -1.261 15.471 -1.268 15.394 -1.279 c
-15.313 -1.286 15.225 -1.294 15.129 -1.294 c
-15.041 -1.301 14.942 -1.309 14.835 -1.309 c
-14.648 -1.309 14.486 -1.294 14.35 -1.264 c
-14.221 -1.228 14.107 -1.183 14.012 -1.132 c
-13.924 -1.085 13.85 -1.025 13.791 -0.956 c
-13.733 -0.879 13.689 -0.802 13.66 -0.721 c
-13.63 -0.632 13.608 -0.544 13.6 -0.456 c
-13.59 -0.36 13.586 -0.264 13.586 -0.177 c
-h
-22.677 -1.323 m
-22.391 -1.323 22.148 -1.282 21.943 -1.205 c
-21.737 -1.118 21.564 -0.996 21.428 -0.838 c
-21.288 -0.684 21.185 -0.497 21.119 -0.279 c
-21.049 -0.056 21.016 0.191 21.016 0.455 c
-21.016 0.75 21.049 1.007 21.119 1.234 c
-21.197 1.459 21.303 1.646 21.442 1.793 c
-21.589 1.947 21.766 2.065 21.972 2.146 c
-22.178 2.234 22.413 2.278 22.677 2.278 c
-22.901 2.278 23.104 2.248 23.28 2.19 c
-23.456 2.131 23.607 2.047 23.736 1.94 c
-23.861 1.841 23.963 1.72 24.044 1.573 c
-24.122 1.433 24.176 1.282 24.206 1.117 c
-23.295 1.072 l
-23.265 1.249 23.196 1.389 23.089 1.5 c
-22.99 1.606 22.846 1.66 22.662 1.66 c
-22.416 1.66 22.24 1.558 22.134 1.352 c
-22.023 1.153 21.972 0.867 21.972 0.484 c
-21.972 -0.309 22.207 -0.706 22.677 -0.706 c
-22.843 -0.706 22.986 -0.654 23.104 -0.544 c
-23.221 -0.437 23.295 -0.276 23.324 -0.059 c
-24.235 -0.103 l
-24.206 -0.272 24.151 -0.426 24.074 -0.574 c
-24.004 -0.721 23.901 -0.852 23.765 -0.97 c
-23.636 -1.081 23.478 -1.168 23.295 -1.235 c
-23.119 -1.294 22.913 -1.323 22.677 -1.323 c
-28.384 0.484 m
-28.384 0.209 28.347 -0.04 28.281 -0.264 c
-28.212 -0.482 28.108 -0.669 27.973 -0.823 c
-27.833 -0.981 27.657 -1.103 27.443 -1.191 c
-27.227 -1.279 26.973 -1.323 26.679 -1.323 c
-26.404 -1.323 26.157 -1.279 25.944 -1.191 c
-25.739 -1.103 25.566 -0.981 25.43 -0.823 c
-25.29 -0.669 25.187 -0.482 25.121 -0.264 c
-25.051 -0.04 25.018 0.209 25.018 0.484 c
-25.018 0.738 25.047 0.974 25.106 1.19 c
-25.172 1.415 25.275 1.606 25.415 1.764 c
-25.55 1.929 25.727 2.057 25.944 2.146 c
-26.157 2.234 26.414 2.278 26.709 2.278 c
-27.021 2.278 27.281 2.234 27.487 2.146 c
-27.701 2.057 27.873 1.929 28.002 1.764 c
-28.138 1.606 28.237 1.415 28.296 1.19 c
-28.355 0.974 28.384 0.738 28.384 0.484 c
-27.429 0.484 m
-27.429 0.69 27.414 0.867 27.385 1.014 c
-27.362 1.161 27.326 1.282 27.267 1.382 c
-27.208 1.477 27.135 1.547 27.046 1.587 c
-26.959 1.635 26.848 1.66 26.724 1.66 c
-26.458 1.66 26.267 1.562 26.15 1.367 c
-26.032 1.18 25.974 0.885 25.974 0.484 c
-25.974 0.062 26.032 -0.243 26.15 -0.426 c
-26.267 -0.614 26.444 -0.706 26.679 -0.706 c
-26.804 -0.706 26.918 -0.688 27.017 -0.647 c
-27.113 -0.599 27.194 -0.526 27.252 -0.426 c
-27.318 -0.331 27.362 -0.206 27.385 -0.059 c
-27.414 0.088 27.429 0.268 27.429 0.484 c
-31.43 -1.264 m
-31.43 0.72 l
-31.43 1.022 31.387 1.242 31.298 1.382 c
-31.217 1.529 31.081 1.602 30.886 1.602 c
-30.776 1.602 30.674 1.577 30.578 1.529 c
-30.489 1.477 30.409 1.411 30.343 1.323 c
-30.284 1.234 30.233 1.124 30.196 0.999 c
-30.167 0.881 30.152 0.75 30.152 0.602 c
-30.152 -1.264 l
-29.24 -1.264 l
-29.24 1.44 l
-29.24 1.66 l
-29.24 1.749 29.233 1.826 29.226 1.896 c
-29.226 2.087 l
-29.226 2.219 l
-30.078 2.219 l
-30.086 2.19 30.093 2.146 30.093 2.087 c
-30.093 1.896 l
-30.1 1.826 30.107 1.756 30.107 1.69 c
-30.115 1.62 30.122 1.565 30.122 1.529 c
-30.137 1.529 l
-30.254 1.793 30.406 1.984 30.593 2.102 c
-30.776 2.219 30.996 2.278 31.254 2.278 c
-31.438 2.278 31.599 2.248 31.74 2.19 c
-31.875 2.131 31.989 2.043 32.077 1.926 c
-32.166 1.808 32.228 1.664 32.268 1.5 c
-32.316 1.341 32.342 1.153 32.342 0.941 c
-32.342 -1.264 l
-h
-34.951 1.602 m
-34.951 -1.264 l
-34.054 -1.264 l
-34.054 1.602 l
-33.232 1.602 l
-33.232 2.219 l
-34.054 2.219 l
-34.054 2.484 l
-34.054 2.609 34.069 2.741 34.098 2.881 c
-34.135 3.017 34.205 3.135 34.304 3.233 c
-34.41 3.341 34.554 3.428 34.73 3.499 c
-34.907 3.564 35.131 3.601 35.407 3.601 c
-35.62 3.601 35.819 3.59 35.995 3.572 c
-36.17 3.549 36.322 3.532 36.45 3.513 c
-36.45 2.925 l
-36.322 2.944 36.178 2.958 36.024 2.969 c
-35.866 2.977 35.715 2.984 35.568 2.984 c
-35.44 2.984 35.337 2.969 35.26 2.94 c
-35.179 2.911 35.116 2.87 35.069 2.822 c
-35.017 2.77 34.984 2.708 34.965 2.631 c
-34.955 2.561 34.951 2.484 34.951 2.396 c
-34.951 2.219 l
-36.377 2.219 l
-36.377 1.602 l
-h
-39.467 -0.647 m
-40.599 -0.647 l
-40.599 -1.264 l
-37.292 -1.264 l
-37.292 -0.647 l
-38.556 -0.647 l
-38.556 1.602 l
-37.63 1.602 l
-37.63 2.219 l
-39.467 2.219 l
-h
-38.556 3.513 0.911 -0.676 re
-38.556 2.836 m
-42.954 -2.66 m
-42.738 -2.66 42.547 -2.635 42.381 -2.587 c
-42.212 -2.547 42.073 -2.485 41.955 -2.396 c
-41.837 -2.315 41.738 -2.22 41.661 -2.103 c
-41.591 -1.985 41.543 -1.856 41.514 -1.72 c
-42.41 -1.617 l
-42.447 -1.753 42.518 -1.86 42.616 -1.941 c
-42.712 -2.028 42.837 -2.072 42.984 -2.072 c
-43.072 -2.072 43.153 -2.058 43.234 -2.028 c
-43.311 -1.999 43.381 -1.945 43.44 -1.867 c
-43.499 -1.797 43.542 -1.706 43.572 -1.588 c
-43.609 -1.47 43.631 -1.323 43.631 -1.147 c
-43.631 -0.956 l
-43.631 -0.889 43.634 -0.831 43.646 -0.779 c
-43.646 -0.588 l
-43.631 -0.588 l
-43.532 -0.816 43.388 -0.977 43.204 -1.073 c
-43.017 -1.172 42.811 -1.22 42.587 -1.22 c
-42.381 -1.22 42.198 -1.183 42.044 -1.103 c
-41.896 -1.014 41.768 -0.897 41.661 -0.75 c
-41.562 -0.595 41.488 -0.412 41.441 -0.206 c
-41.389 0.008 41.367 0.243 41.367 0.5 c
-41.367 0.771 41.389 1.018 41.441 1.234 c
-41.5 1.448 41.58 1.631 41.691 1.778 c
-41.797 1.933 41.93 2.051 42.088 2.131 c
-42.242 2.219 42.429 2.263 42.646 2.263 c
-42.742 2.263 42.84 2.252 42.94 2.234 c
-43.035 2.212 43.123 2.179 43.204 2.131 c
-43.293 2.08 43.37 2.017 43.44 1.94 c
-43.517 1.859 43.58 1.768 43.631 1.66 c
-43.646 1.66 l
-43.646 1.808 l
-43.653 1.866 43.66 1.918 43.66 1.97 c
-43.667 2.028 43.675 2.076 43.675 2.117 c
-43.682 2.165 43.694 2.198 43.704 2.219 c
-44.557 2.219 l
-44.546 2.138 44.535 2.028 44.527 1.881 c
-44.527 1.411 l
-44.527 -1.162 l
-44.527 -1.415 44.49 -1.635 44.425 -1.823 c
-44.355 -2.007 44.251 -2.161 44.116 -2.278 c
-43.976 -2.404 43.811 -2.499 43.616 -2.558 c
-43.418 -2.624 43.197 -2.66 42.954 -2.66 c
-43.646 0.529 m
-43.646 0.742 43.619 0.918 43.572 1.058 c
-43.532 1.205 43.476 1.323 43.41 1.411 c
-43.351 1.5 43.282 1.558 43.204 1.587 c
-43.123 1.624 43.046 1.646 42.969 1.646 c
-42.87 1.646 42.778 1.62 42.69 1.573 c
-42.609 1.532 42.543 1.463 42.484 1.367 c
-42.433 1.278 42.389 1.161 42.352 1.014 c
-42.323 0.875 42.308 0.706 42.308 0.5 c
-42.308 0.125 42.366 -0.154 42.484 -0.339 c
-42.601 -0.515 42.763 -0.603 42.969 -0.603 c
-43.035 -0.603 43.109 -0.588 43.189 -0.559 c
-43.278 -0.522 43.351 -0.463 43.41 -0.382 c
-43.476 -0.294 43.532 -0.177 43.572 -0.029 c
-43.619 0.118 43.646 0.301 43.646 0.529 c
-50.135 0.837 1.867 -0.793 re
-50.135 0.044 m
-54.2 0.837 1.866 -0.793 re
-54.2 0.044 m
-59.201 -2.66 m
-58.983 -2.66 58.792 -2.635 58.628 -2.587 c
-58.458 -2.547 58.318 -2.485 58.201 -2.396 c
-58.083 -2.315 57.984 -2.22 57.907 -2.103 c
-57.838 -1.985 57.79 -1.856 57.76 -1.72 c
-58.657 -1.617 l
-58.694 -1.753 58.763 -1.86 58.863 -1.941 c
-58.958 -2.028 59.083 -2.072 59.23 -2.072 c
-59.318 -2.072 59.399 -2.058 59.48 -2.028 c
-59.557 -1.999 59.627 -1.945 59.686 -1.867 c
-59.744 -1.797 59.789 -1.706 59.818 -1.588 c
-59.855 -1.47 59.877 -1.323 59.877 -1.147 c
-59.877 -0.956 l
-59.877 -0.889 59.881 -0.831 59.891 -0.779 c
-59.891 -0.588 l
-59.877 -0.588 l
-59.777 -0.816 59.634 -0.977 59.451 -1.073 c
-59.263 -1.172 59.058 -1.22 58.833 -1.22 c
-58.628 -1.22 58.443 -1.183 58.289 -1.103 c
-58.142 -1.014 58.014 -0.897 57.907 -0.75 c
-57.807 -0.595 57.734 -0.412 57.687 -0.206 c
-57.635 0.008 57.613 0.243 57.613 0.5 c
-57.613 0.771 57.635 1.018 57.687 1.234 c
-57.745 1.448 57.826 1.631 57.936 1.778 c
-58.043 1.933 58.175 2.051 58.333 2.131 c
-58.488 2.219 58.675 2.263 58.892 2.263 c
-58.987 2.263 59.087 2.252 59.186 2.234 c
-59.282 2.212 59.37 2.179 59.451 2.131 c
-59.538 2.08 59.616 2.017 59.686 1.94 c
-59.763 1.859 59.825 1.768 59.877 1.66 c
-59.891 1.66 l
-59.891 1.808 l
-59.899 1.866 59.906 1.918 59.906 1.97 c
-59.914 2.028 59.921 2.076 59.921 2.117 c
-59.928 2.165 59.939 2.198 59.951 2.219 c
-60.803 2.219 l
-60.792 2.138 60.781 2.028 60.774 1.881 c
-60.774 1.411 l
-60.774 -1.162 l
-60.774 -1.415 60.737 -1.635 60.67 -1.823 c
-60.601 -2.007 60.498 -2.161 60.362 -2.278 c
-60.222 -2.404 60.057 -2.499 59.862 -2.558 c
-59.664 -2.624 59.443 -2.66 59.201 -2.66 c
-59.891 0.529 m
-59.891 0.742 59.866 0.918 59.818 1.058 c
-59.777 1.205 59.723 1.323 59.656 1.411 c
-59.598 1.5 59.528 1.558 59.451 1.587 c
-59.37 1.624 59.293 1.646 59.216 1.646 c
-59.116 1.646 59.024 1.62 58.936 1.573 c
-58.855 1.532 58.789 1.463 58.73 1.367 c
-58.679 1.278 58.634 1.161 58.598 1.014 c
-58.569 0.875 58.553 0.706 58.553 0.5 c
-58.553 0.125 58.613 -0.154 58.73 -0.339 c
-58.848 -0.515 59.01 -0.603 59.216 -0.603 c
-59.282 -0.603 59.355 -0.588 59.436 -0.559 c
-59.524 -0.522 59.598 -0.463 59.656 -0.382 c
-59.723 -0.294 59.777 -0.177 59.818 -0.029 c
-59.866 0.118 59.891 0.301 59.891 0.529 c
-63.835 -0.647 m
-64.967 -0.647 l
-64.967 -1.264 l
-61.659 -1.264 l
-61.659 -0.647 l
-62.923 -0.647 l
-62.923 2.896 l
-61.998 2.896 l
-61.998 3.513 l
-63.835 3.513 l
-h
-68.998 0.484 m
-68.998 0.209 68.961 -0.04 68.895 -0.264 c
-68.824 -0.482 68.722 -0.669 68.586 -0.823 c
-68.446 -0.981 68.27 -1.103 68.057 -1.191 c
-67.84 -1.279 67.586 -1.323 67.293 -1.323 c
-67.017 -1.323 66.771 -1.279 66.557 -1.191 c
-66.352 -1.103 66.179 -0.981 66.043 -0.823 c
-65.903 -0.669 65.801 -0.482 65.734 -0.264 c
-65.665 -0.04 65.632 0.209 65.632 0.484 c
-65.632 0.738 65.661 0.974 65.72 1.19 c
-65.786 1.415 65.888 1.606 66.029 1.764 c
-66.164 1.929 66.341 2.057 66.557 2.146 c
-66.771 2.234 67.028 2.278 67.322 2.278 c
-67.634 2.278 67.895 2.234 68.101 2.146 c
-68.314 2.057 68.487 1.929 68.616 1.764 c
-68.751 1.606 68.851 1.415 68.909 1.19 c
-68.968 0.974 68.998 0.738 68.998 0.484 c
-68.042 0.484 m
-68.042 0.69 68.028 0.867 67.999 1.014 c
-67.976 1.161 67.939 1.282 67.881 1.382 c
-67.822 1.477 67.748 1.547 67.66 1.587 c
-67.571 1.635 67.461 1.66 67.336 1.66 c
-67.072 1.66 66.881 1.562 66.763 1.367 c
-66.646 1.18 66.587 0.885 66.587 0.484 c
-66.587 0.062 66.646 -0.243 66.763 -0.426 c
-66.881 -0.614 67.058 -0.706 67.293 -0.706 c
-67.417 -0.706 67.531 -0.688 67.631 -0.647 c
-67.726 -0.599 67.807 -0.526 67.866 -0.426 c
-67.932 -0.331 67.976 -0.206 67.999 -0.059 c
-68.028 0.088 68.042 0.268 68.042 0.484 c
-69.854 -1.264 m
-69.854 -0.97 l
-69.861 -0.834 69.869 -0.676 69.869 -0.5 c
-69.869 3.513 l
-70.78 3.513 l
-70.78 2.234 l
-70.78 2.072 l
-70.78 1.896 l
-70.78 1.845 70.773 1.801 70.765 1.764 c
-70.765 1.675 l
-70.78 1.675 l
-70.827 1.782 70.89 1.874 70.971 1.955 c
-71.048 2.032 71.133 2.094 71.221 2.146 c
-71.309 2.194 71.401 2.227 71.5 2.248 c
-71.596 2.267 71.695 2.278 71.794 2.278 c
-72.007 2.278 72.194 2.234 72.352 2.146 c
-72.507 2.057 72.635 1.929 72.735 1.764 c
-72.841 1.606 72.919 1.415 72.97 1.19 c
-73.017 0.974 73.044 0.735 73.044 0.47 c
-73.044 0.213 73.015 -0.026 72.955 -0.25 c
-72.897 -0.467 72.812 -0.658 72.705 -0.823 c
-72.595 -0.981 72.463 -1.103 72.309 -1.191 c
-72.151 -1.279 71.97 -1.323 71.764 -1.323 c
-71.666 -1.323 71.567 -1.312 71.471 -1.294 c
-71.382 -1.272 71.294 -1.242 71.206 -1.191 c
-71.118 -1.132 71.037 -1.066 70.971 -0.985 c
-70.901 -0.908 70.839 -0.809 70.78 -0.691 c
-70.765 -0.691 l
-70.765 -0.852 l
-70.765 -0.912 70.758 -0.97 70.75 -1.029 c
-70.75 -1.081 70.743 -1.128 70.736 -1.176 c
-70.736 -1.216 70.729 -1.246 70.721 -1.264 c
-h
-70.765 0.5 m
-70.765 0.264 70.783 0.066 70.824 -0.088 c
-70.872 -0.246 70.931 -0.368 71 -0.456 c
-71.066 -0.544 71.14 -0.611 71.221 -0.647 c
-71.298 -0.688 71.375 -0.706 71.456 -0.706 c
-71.662 -0.706 71.816 -0.611 71.926 -0.412 c
-72.044 -0.217 72.103 0.077 72.103 0.47 c
-72.103 0.683 72.08 0.867 72.044 1.014 c
-72.015 1.168 71.97 1.294 71.912 1.382 c
-71.86 1.477 71.794 1.55 71.706 1.602 c
-71.625 1.65 71.537 1.675 71.442 1.675 c
-71.361 1.675 71.284 1.654 71.206 1.617 c
-71.126 1.577 71.052 1.514 70.985 1.425 c
-70.927 1.338 70.872 1.213 70.824 1.058 c
-70.783 0.912 70.765 0.723 70.765 0.5 c
-74.873 -1.323 m
-74.704 -1.323 74.554 -1.301 74.418 -1.264 c
-74.289 -1.216 74.175 -1.147 74.079 -1.058 c
-73.992 -0.97 73.921 -0.864 73.874 -0.735 c
-73.823 -0.599 73.8 -0.449 73.8 -0.279 c
-73.8 -0.073 73.834 0.095 73.904 0.235 c
-73.969 0.382 74.065 0.492 74.183 0.573 c
-74.308 0.661 74.451 0.723 74.609 0.764 c
-74.775 0.801 74.951 0.827 75.138 0.837 c
-75.858 0.852 l
-75.858 1.029 l
-75.858 1.147 75.847 1.249 75.829 1.338 c
-75.807 1.425 75.774 1.492 75.726 1.543 c
-75.685 1.602 75.638 1.639 75.579 1.66 c
-75.521 1.679 75.454 1.69 75.388 1.69 c
-75.318 1.69 75.255 1.679 75.197 1.66 c
-75.145 1.65 75.097 1.624 75.05 1.587 c
-75.01 1.558 74.976 1.506 74.947 1.44 c
-74.925 1.382 74.91 1.301 74.903 1.205 c
-73.962 1.249 l
-73.992 1.396 74.035 1.532 74.095 1.66 c
-74.16 1.785 74.256 1.896 74.374 1.984 c
-74.492 2.08 74.631 2.153 74.8 2.205 c
-74.976 2.252 75.182 2.278 75.417 2.278 c
-75.858 2.278 76.19 2.168 76.417 1.955 c
-76.652 1.749 76.77 1.44 76.77 1.029 c
-76.77 -0.235 l
-76.77 -0.456 l
-76.777 -0.515 76.792 -0.57 76.814 -0.617 c
-76.832 -0.658 76.861 -0.691 76.902 -0.721 c
-76.938 -0.742 76.99 -0.75 77.049 -0.75 c
-77.115 -0.75 77.185 -0.746 77.254 -0.735 c
-77.254 -1.22 l
-77.196 -1.231 77.141 -1.242 77.093 -1.249 c
-77.053 -1.261 77.013 -1.268 76.976 -1.279 c
-76.936 -1.286 76.891 -1.294 76.843 -1.294 c
-76.792 -1.301 76.733 -1.309 76.666 -1.309 c
-76.439 -1.309 76.273 -1.257 76.167 -1.147 c
-76.057 -1.029 75.995 -0.864 75.976 -0.647 c
-75.961 -0.647 l
-75.891 -0.757 75.822 -0.852 75.756 -0.941 c
-75.685 -1.022 75.608 -1.087 75.521 -1.147 c
-75.432 -1.205 75.333 -1.249 75.226 -1.279 c
-75.127 -1.309 75.01 -1.323 74.873 -1.323 c
-75.858 0.353 m
-75.432 0.338 l
-75.333 0.338 75.241 0.33 75.153 0.324 c
-75.072 0.312 75.006 0.287 74.947 0.249 c
-74.889 0.209 74.837 0.151 74.8 0.073 c
-74.76 0.004 74.741 -0.088 74.741 -0.206 c
-74.741 -0.375 74.775 -0.497 74.844 -0.574 c
-74.91 -0.654 75.01 -0.691 75.138 -0.691 c
-75.245 -0.691 75.344 -0.669 75.432 -0.617 c
-75.527 -0.57 75.608 -0.507 75.667 -0.426 c
-75.733 -0.349 75.785 -0.262 75.814 -0.162 c
-75.843 -0.056 75.858 0.058 75.858 0.176 c
-h
-80.08 -0.647 m
-81.212 -0.647 l
-81.212 -1.264 l
-77.905 -1.264 l
-77.905 -0.647 l
-79.17 -0.647 l
-79.17 2.896 l
-78.243 2.896 l
-78.243 3.513 l
-80.08 3.513 l
-h
-86.982 2.219 m
-86.982 0.264 l
-86.982 0.125 86.989 0 87.011 -0.118 c
-87.03 -0.228 87.063 -0.32 87.114 -0.397 c
-87.162 -0.478 87.221 -0.54 87.29 -0.588 c
-87.357 -0.628 87.441 -0.647 87.54 -0.647 c
-87.629 -0.647 87.71 -0.628 87.791 -0.588 c
-87.878 -0.54 87.952 -0.47 88.011 -0.382 c
-88.069 -0.287 88.113 -0.177 88.144 -0.059 c
-88.18 0.066 88.202 0.206 88.202 0.353 c
-88.202 2.219 l
-89.098 2.219 l
-89.098 -0.485 l
-89.098 -0.721 l
-89.106 -0.802 89.113 -0.879 89.113 -0.956 c
-89.113 -1.147 l
-89.121 -1.199 89.128 -1.235 89.128 -1.264 c
-88.275 -1.264 l
-88.265 -1.235 88.254 -1.199 88.246 -1.147 c
-88.246 -0.956 l
-88.246 -0.889 88.239 -0.819 88.231 -0.75 c
-88.231 -0.574 l
-88.217 -0.574 l
-88.099 -0.838 87.945 -1.029 87.761 -1.147 c
-87.585 -1.264 87.382 -1.323 87.159 -1.323 c
-86.953 -1.323 86.779 -1.286 86.644 -1.22 c
-86.504 -1.154 86.394 -1.058 86.305 -0.941 c
-86.225 -0.823 86.166 -0.688 86.129 -0.53 c
-86.1 -0.364 86.085 -0.187 86.085 0 c
-86.085 2.219 l
-h
-93.262 -0.25 m
-93.262 -0.419 93.222 -0.57 93.144 -0.706 c
-93.075 -0.834 92.971 -0.948 92.836 -1.044 c
-92.707 -1.132 92.545 -1.202 92.351 -1.249 c
-92.163 -1.297 91.947 -1.323 91.704 -1.323 c
-91.477 -1.323 91.278 -1.309 91.101 -1.279 c
-90.925 -1.249 90.767 -1.202 90.631 -1.132 c
-90.492 -1.055 90.382 -0.956 90.293 -0.838 c
-90.205 -0.721 90.135 -0.574 90.087 -0.397 c
-90.895 -0.279 l
-90.914 -0.379 90.943 -0.456 90.984 -0.515 c
-91.032 -0.574 91.09 -0.617 91.16 -0.647 c
-91.226 -0.676 91.307 -0.702 91.396 -0.721 c
-91.483 -0.732 91.587 -0.735 91.704 -0.735 c
-91.799 -0.735 91.895 -0.732 91.984 -0.721 c
-92.071 -0.702 92.148 -0.676 92.219 -0.647 c
-92.285 -0.617 92.336 -0.58 92.366 -0.53 c
-92.402 -0.482 92.424 -0.419 92.424 -0.339 c
-92.424 -0.243 92.395 -0.169 92.336 -0.118 c
-92.285 -0.07 92.219 -0.029 92.13 0 c
-92.042 0.037 91.932 0.066 91.807 0.088 c
-91.689 0.118 91.557 0.147 91.41 0.176 c
-91.271 0.213 91.13 0.253 90.984 0.293 c
-90.844 0.341 90.719 0.405 90.602 0.484 c
-90.492 0.562 90.403 0.661 90.337 0.779 c
-90.267 0.897 90.234 1.047 90.234 1.234 c
-90.234 1.389 90.263 1.532 90.322 1.66 c
-90.388 1.797 90.484 1.911 90.602 1.999 c
-90.727 2.087 90.885 2.153 91.072 2.205 c
-91.255 2.252 91.469 2.278 91.704 2.278 c
-91.888 2.278 92.065 2.256 92.233 2.219 c
-92.398 2.19 92.545 2.135 92.674 2.057 c
-92.799 1.988 92.909 1.889 92.998 1.764 c
-93.085 1.646 93.144 1.502 93.174 1.338 c
-92.38 1.264 l
-92.358 1.341 92.329 1.404 92.292 1.455 c
-92.252 1.514 92.204 1.558 92.144 1.587 c
-92.094 1.624 92.031 1.65 91.954 1.66 c
-91.873 1.668 91.793 1.675 91.704 1.675 c
-91.487 1.675 91.325 1.646 91.219 1.587 c
-91.109 1.536 91.057 1.448 91.057 1.323 c
-91.057 1.242 91.076 1.18 91.116 1.132 c
-91.164 1.08 91.226 1.043 91.307 1.014 c
-91.396 0.985 91.491 0.955 91.601 0.926 c
-91.708 0.904 91.829 0.881 91.969 0.852 c
-92.123 0.823 92.281 0.783 92.439 0.735 c
-92.593 0.683 92.733 0.621 92.85 0.544 c
-92.969 0.463 93.064 0.36 93.144 0.235 c
-93.222 0.106 93.262 -0.056 93.262 -0.25 c
-95.783 -1.323 m
-95.525 -1.323 95.298 -1.286 95.092 -1.22 c
-94.887 -1.143 94.71 -1.029 94.563 -0.882 c
-94.416 -0.728 94.299 -0.536 94.21 -0.309 c
-94.129 -0.085 94.093 0.18 94.093 0.484 c
-94.093 0.816 94.137 1.095 94.224 1.323 c
-94.32 1.558 94.449 1.741 94.607 1.881 c
-94.772 2.017 94.96 2.117 95.165 2.175 c
-95.371 2.242 95.581 2.278 95.797 2.278 c
-96.069 2.278 96.304 2.227 96.503 2.131 c
-96.709 2.043 96.875 1.911 97.003 1.735 c
-97.139 1.565 97.239 1.359 97.297 1.117 c
-97.363 0.881 97.399 0.617 97.399 0.324 c
-97.399 0.309 l
-95.033 0.309 l
-95.033 0.162 95.048 0.022 95.078 -0.103 c
-95.114 -0.231 95.169 -0.345 95.24 -0.441 c
-95.305 -0.53 95.39 -0.599 95.489 -0.647 c
-95.585 -0.698 95.699 -0.721 95.827 -0.721 c
-95.982 -0.721 96.121 -0.688 96.239 -0.617 c
-96.364 -0.551 96.452 -0.449 96.503 -0.309 c
-97.341 -0.382 l
-97.312 -0.482 97.256 -0.588 97.179 -0.706 c
-97.098 -0.816 96.996 -0.919 96.871 -1.014 c
-96.753 -1.103 96.599 -1.176 96.415 -1.235 c
-96.239 -1.294 96.026 -1.323 95.783 -1.323 c
-95.783 1.705 m
-95.695 1.705 95.606 1.69 95.518 1.66 c
-95.43 1.631 95.35 1.58 95.283 1.514 c
-95.213 1.444 95.155 1.356 95.107 1.249 c
-95.066 1.139 95.048 1.014 95.048 0.867 c
-96.518 0.867 l
-96.518 1.003 96.493 1.124 96.445 1.234 c
-96.404 1.341 96.349 1.429 96.283 1.5 c
-96.224 1.565 96.15 1.617 96.063 1.646 c
-95.974 1.683 95.878 1.705 95.783 1.705 c
-101.299 1.469 m
-101.2 1.477 101.097 1.488 100.99 1.5 c
-100.88 1.517 100.759 1.529 100.622 1.529 c
-100.446 1.529 100.288 1.488 100.152 1.411 c
-100.013 1.341 99.895 1.242 99.799 1.117 c
-99.711 0.989 99.641 0.841 99.593 0.676 c
-99.554 0.507 99.535 0.33 99.535 0.147 c
-99.535 -1.264 l
-98.638 -1.264 l
-98.638 0.985 l
-98.638 1.11 98.627 1.234 98.609 1.352 c
-98.598 1.477 98.583 1.595 98.565 1.705 c
-98.554 1.822 98.539 1.918 98.521 1.999 c
-98.498 2.087 98.48 2.161 98.462 2.219 c
-99.344 2.219 l
-99.351 2.168 99.362 2.117 99.373 2.057 c
-99.392 1.999 99.406 1.933 99.417 1.866 c
-99.435 1.808 99.45 1.741 99.462 1.675 c
-99.469 1.606 99.479 1.543 99.491 1.484 c
-99.506 1.484 l
-99.542 1.602 99.593 1.708 99.653 1.808 c
-99.718 1.903 99.799 1.988 99.888 2.057 c
-99.976 2.124 100.079 2.179 100.196 2.219 c
-100.321 2.256 100.468 2.278 100.637 2.278 c
-100.763 2.278 100.88 2.271 100.99 2.263 c
-101.108 2.252 101.21 2.238 101.299 2.219 c
-h
-103.404 -0.279 0.927 -0.985 re
-103.404 -1.264 m
-108.597 -1.264 m
-108.597 0.72 l
-108.597 1.022 108.553 1.242 108.464 1.382 c
-108.384 1.529 108.248 1.602 108.053 1.602 c
-107.942 1.602 107.84 1.577 107.745 1.529 c
-107.656 1.477 107.575 1.411 107.51 1.323 c
-107.45 1.234 107.399 1.124 107.362 0.999 c
-107.333 0.881 107.318 0.75 107.318 0.602 c
-107.318 -1.264 l
-106.407 -1.264 l
-106.407 1.44 l
-106.407 1.66 l
-106.407 1.749 106.399 1.826 106.392 1.896 c
-106.392 2.087 l
-106.392 2.219 l
-107.244 2.219 l
-107.252 2.19 107.259 2.146 107.259 2.087 c
-107.259 1.896 l
-107.267 1.826 107.274 1.756 107.274 1.69 c
-107.281 1.62 107.288 1.565 107.288 1.529 c
-107.304 1.529 l
-107.421 1.793 107.572 1.984 107.759 2.102 c
-107.942 2.219 108.163 2.278 108.42 2.278 c
-108.605 2.278 108.765 2.248 108.906 2.19 c
-109.041 2.131 109.156 2.043 109.243 1.926 c
-109.332 1.808 109.394 1.664 109.434 1.5 c
-109.482 1.341 109.509 1.153 109.509 0.941 c
-109.509 -1.264 l
-h
-111.423 -1.323 m
-111.254 -1.323 111.103 -1.301 110.967 -1.264 c
-110.839 -1.216 110.724 -1.147 110.629 -1.058 c
-110.541 -0.97 110.471 -0.864 110.423 -0.735 c
-110.372 -0.599 110.35 -0.449 110.35 -0.279 c
-110.35 -0.073 110.383 0.095 110.452 0.235 c
-110.519 0.382 110.614 0.492 110.732 0.573 c
-110.857 0.661 111 0.723 111.158 0.764 c
-111.323 0.801 111.5 0.827 111.687 0.837 c
-112.408 0.852 l
-112.408 1.029 l
-112.408 1.147 112.397 1.249 112.378 1.338 c
-112.356 1.425 112.323 1.492 112.275 1.543 c
-112.235 1.602 112.187 1.639 112.129 1.66 c
-112.069 1.679 112.003 1.69 111.938 1.69 c
-111.867 1.69 111.805 1.679 111.746 1.66 c
-111.695 1.65 111.647 1.624 111.599 1.587 c
-111.559 1.558 111.526 1.506 111.496 1.44 c
-111.474 1.382 111.46 1.301 111.452 1.205 c
-110.511 1.249 l
-110.541 1.396 110.585 1.532 110.644 1.66 c
-110.71 1.785 110.805 1.896 110.923 1.984 c
-111.04 2.08 111.18 2.153 111.35 2.205 c
-111.526 2.252 111.732 2.278 111.967 2.278 c
-112.408 2.278 112.738 2.168 112.966 1.955 c
-113.201 1.749 113.319 1.44 113.319 1.029 c
-113.319 -0.235 l
-113.319 -0.456 l
-113.326 -0.515 113.341 -0.57 113.363 -0.617 c
-113.382 -0.658 113.411 -0.691 113.451 -0.721 c
-113.488 -0.742 113.54 -0.75 113.598 -0.75 c
-113.665 -0.75 113.734 -0.746 113.804 -0.735 c
-113.804 -1.22 l
-113.745 -1.231 113.69 -1.242 113.642 -1.249 c
-113.602 -1.261 113.561 -1.268 113.525 -1.279 c
-113.484 -1.286 113.44 -1.294 113.392 -1.294 c
-113.341 -1.301 113.282 -1.309 113.216 -1.309 c
-112.988 -1.309 112.823 -1.257 112.717 -1.147 c
-112.606 -1.029 112.543 -0.864 112.526 -0.647 c
-112.511 -0.647 l
-112.441 -0.757 112.37 -0.852 112.305 -0.941 c
-112.235 -1.022 112.158 -1.087 112.069 -1.147 c
-111.981 -1.205 111.882 -1.249 111.776 -1.279 c
-111.676 -1.309 111.559 -1.323 111.423 -1.323 c
-112.408 0.353 m
-111.981 0.338 l
-111.882 0.338 111.79 0.33 111.702 0.324 c
-111.622 0.312 111.555 0.287 111.496 0.249 c
-111.437 0.209 111.386 0.151 111.35 0.073 c
-111.309 0.004 111.29 -0.088 111.29 -0.206 c
-111.29 -0.375 111.323 -0.497 111.393 -0.574 c
-111.46 -0.654 111.559 -0.691 111.687 -0.691 c
-111.794 -0.691 111.893 -0.669 111.981 -0.617 c
-112.077 -0.57 112.158 -0.507 112.216 -0.426 c
-112.283 -0.349 112.334 -0.262 112.364 -0.162 c
-112.393 -0.056 112.408 0.058 112.408 0.176 c
-h
-115.693 -1.264 m
-115.693 0.852 l
-115.693 1.018 115.686 1.153 115.678 1.264 c
-115.667 1.371 115.649 1.455 115.62 1.514 c
-115.597 1.58 115.568 1.631 115.531 1.66 c
-115.502 1.69 115.462 1.705 115.414 1.705 c
-115.354 1.705 115.3 1.675 115.252 1.617 c
-115.211 1.565 115.178 1.492 115.149 1.396 c
-115.119 1.308 115.094 1.194 115.076 1.058 c
-115.065 0.918 115.061 0.768 115.061 0.602 c
-115.061 -1.264 l
-114.311 -1.264 l
-114.311 1.469 l
-114.311 1.705 l
-114.311 1.926 l
-114.311 2.003 114.304 2.065 114.296 2.117 c
-114.296 2.219 l
-114.972 2.219 l
-114.972 2.131 l
-114.972 1.984 l
-114.98 1.926 114.988 1.866 114.988 1.808 c
-114.988 1.646 l
-115.002 1.646 l
-115.02 1.735 115.05 1.812 115.09 1.881 c
-115.127 1.959 115.171 2.028 115.223 2.087 c
-115.281 2.146 115.348 2.19 115.428 2.219 c
-115.506 2.256 115.593 2.278 115.693 2.278 c
-115.877 2.278 116.017 2.223 116.104 2.117 c
-116.2 2.017 116.27 1.859 116.31 1.646 c
-116.325 1.646 l
-116.362 1.741 116.402 1.83 116.443 1.911 c
-116.49 1.988 116.545 2.051 116.604 2.102 c
-116.663 2.161 116.729 2.205 116.81 2.234 c
-116.887 2.263 116.975 2.278 117.074 2.278 c
-117.21 2.278 117.324 2.252 117.413 2.205 c
-117.501 2.153 117.567 2.08 117.619 1.984 c
-117.677 1.885 117.714 1.756 117.736 1.602 c
-117.766 1.455 117.78 1.271 117.78 1.058 c
-117.78 -1.264 l
-117.06 -1.264 l
-117.06 0.852 l
-117.06 1.018 117.052 1.153 117.045 1.264 c
-117.035 1.371 117.016 1.455 116.987 1.514 c
-116.964 1.58 116.935 1.631 116.898 1.66 c
-116.869 1.69 116.829 1.705 116.781 1.705 c
-116.663 1.705 116.567 1.617 116.501 1.44 c
-116.443 1.271 116.413 1.014 116.413 0.661 c
-116.413 -1.264 l
-h
-120.15 -1.323 m
-119.893 -1.323 119.665 -1.286 119.46 -1.22 c
-119.254 -1.143 119.077 -1.029 118.93 -0.882 c
-118.783 -0.728 118.666 -0.536 118.577 -0.309 c
-118.496 -0.085 118.46 0.18 118.46 0.484 c
-118.46 0.816 118.504 1.095 118.592 1.323 c
-118.687 1.558 118.816 1.741 118.974 1.881 c
-119.14 2.017 119.327 2.117 119.533 2.175 c
-119.739 2.242 119.948 2.278 120.165 2.278 c
-120.437 2.278 120.672 2.227 120.871 2.131 c
-121.076 2.043 121.242 1.911 121.37 1.735 c
-121.506 1.565 121.606 1.359 121.664 1.117 c
-121.731 0.881 121.767 0.617 121.767 0.324 c
-121.767 0.309 l
-119.401 0.309 l
-119.401 0.162 119.416 0.022 119.445 -0.103 c
-119.481 -0.231 119.537 -0.345 119.607 -0.441 c
-119.672 -0.53 119.757 -0.599 119.857 -0.647 c
-119.952 -0.698 120.066 -0.721 120.195 -0.721 c
-120.349 -0.721 120.488 -0.688 120.606 -0.617 c
-120.731 -0.551 120.819 -0.449 120.871 -0.309 c
-121.708 -0.382 l
-121.679 -0.482 121.623 -0.588 121.546 -0.706 c
-121.465 -0.816 121.363 -0.919 121.238 -1.014 c
-121.12 -1.103 120.966 -1.176 120.782 -1.235 c
-120.606 -1.294 120.393 -1.323 120.15 -1.323 c
-120.15 1.705 m
-120.062 1.705 119.974 1.69 119.886 1.66 c
-119.798 1.631 119.717 1.58 119.651 1.514 c
-119.581 1.444 119.522 1.356 119.474 1.249 c
-119.433 1.139 119.416 1.014 119.416 0.867 c
-120.885 0.867 l
-120.885 1.003 120.86 1.124 120.812 1.234 c
-120.771 1.341 120.717 1.429 120.65 1.5 c
-120.591 1.565 120.518 1.617 120.43 1.646 c
-120.341 1.683 120.246 1.705 120.15 1.705 c
-129.286 1.455 m
-128.654 1.455 l
-128.521 3.513 l
-129.418 3.513 l
-h
-127.815 1.455 m
-127.184 1.455 l
-127.067 3.513 l
-127.933 3.513 l
-h
-132.758 0.529 m
-132.758 -1.264 l
-131.817 -1.264 l
-131.817 0.529 l
-130.333 3.072 l
-131.318 3.072 l
-132.288 1.249 l
-133.259 3.072 l
-134.258 3.072 l
-h
-138.043 0.484 m
-138.043 0.209 138.006 -0.04 137.94 -0.264 c
-137.87 -0.482 137.768 -0.669 137.631 -0.823 c
-137.492 -0.981 137.315 -1.103 137.102 -1.191 c
-136.885 -1.279 136.632 -1.323 136.338 -1.323 c
-136.062 -1.323 135.815 -1.279 135.603 -1.191 c
-135.397 -1.103 135.224 -0.981 135.088 -0.823 c
-134.948 -0.669 134.846 -0.482 134.78 -0.264 c
-134.71 -0.04 134.676 0.209 134.676 0.484 c
-134.676 0.738 134.706 0.974 134.765 1.19 c
-134.831 1.415 134.934 1.606 135.073 1.764 c
-135.21 1.929 135.386 2.057 135.603 2.146 c
-135.815 2.234 136.073 2.278 136.367 2.278 c
-136.679 2.278 136.941 2.234 137.146 2.146 c
-137.359 2.057 137.532 1.929 137.66 1.764 c
-137.797 1.606 137.895 1.415 137.955 1.19 c
-138.013 0.974 138.043 0.738 138.043 0.484 c
-137.087 0.484 m
-137.087 0.69 137.072 0.867 137.043 1.014 c
-137.022 1.161 136.985 1.282 136.926 1.382 c
-136.867 1.477 136.793 1.547 136.705 1.587 c
-136.617 1.635 136.507 1.66 136.382 1.66 c
-136.117 1.66 135.926 1.562 135.809 1.367 c
-135.691 1.18 135.632 0.885 135.632 0.484 c
-135.632 0.062 135.691 -0.243 135.809 -0.426 c
-135.926 -0.614 136.102 -0.706 136.338 -0.706 c
-136.463 -0.706 136.577 -0.688 136.675 -0.647 c
-136.771 -0.599 136.852 -0.526 136.91 -0.426 c
-136.977 -0.331 137.022 -0.206 137.043 -0.059 c
-137.072 0.088 137.087 0.268 137.087 0.484 c
-139.781 2.219 m
-139.781 0.264 l
-139.781 0.125 139.788 0 139.81 -0.118 c
-139.829 -0.228 139.862 -0.32 139.913 -0.397 c
-139.961 -0.478 140.02 -0.54 140.089 -0.588 c
-140.156 -0.628 140.241 -0.647 140.339 -0.647 c
-140.428 -0.647 140.509 -0.628 140.59 -0.588 c
-140.677 -0.54 140.751 -0.47 140.81 -0.382 c
-140.868 -0.287 140.912 -0.177 140.943 -0.059 c
-140.979 0.066 141.001 0.206 141.001 0.353 c
-141.001 2.219 l
-141.897 2.219 l
-141.897 -0.485 l
-141.897 -0.721 l
-141.905 -0.802 141.912 -0.879 141.912 -0.956 c
-141.912 -1.147 l
-141.92 -1.199 141.927 -1.235 141.927 -1.264 c
-141.074 -1.264 l
-141.063 -1.235 141.053 -1.199 141.045 -1.147 c
-141.045 -0.956 l
-141.045 -0.889 141.038 -0.819 141.03 -0.75 c
-141.03 -0.574 l
-141.016 -0.574 l
-140.898 -0.838 140.744 -1.029 140.56 -1.147 c
-140.384 -1.264 140.181 -1.323 139.958 -1.323 c
-139.752 -1.323 139.578 -1.286 139.443 -1.22 c
-139.303 -1.154 139.193 -1.058 139.104 -0.941 c
-139.024 -0.823 138.965 -0.688 138.928 -0.53 c
-138.899 -0.364 138.884 -0.187 138.884 0 c
-138.884 2.219 l
-h
-145.973 1.469 m
-145.874 1.477 145.77 1.488 145.664 1.5 c
-145.554 1.517 145.433 1.529 145.296 1.529 c
-145.12 1.529 144.962 1.488 144.826 1.411 c
-144.687 1.341 144.569 1.242 144.474 1.117 c
-144.386 0.989 144.316 0.841 144.268 0.676 c
-144.228 0.507 144.209 0.33 144.209 0.147 c
-144.209 -1.264 l
-143.312 -1.264 l
-143.312 0.985 l
-143.312 1.11 143.301 1.234 143.283 1.352 c
-143.272 1.477 143.258 1.595 143.239 1.705 c
-143.228 1.822 143.213 1.918 143.195 1.999 c
-143.173 2.087 143.154 2.161 143.136 2.219 c
-144.018 2.219 l
-144.025 2.168 144.037 2.117 144.047 2.057 c
-144.066 1.999 144.081 1.933 144.091 1.866 c
-144.11 1.808 144.124 1.741 144.135 1.675 c
-144.143 1.606 144.154 1.543 144.165 1.484 c
-144.18 1.484 l
-144.216 1.602 144.268 1.708 144.326 1.808 c
-144.393 1.903 144.474 1.988 144.562 2.057 c
-144.65 2.124 144.753 2.179 144.87 2.219 c
-144.995 2.256 145.142 2.278 145.311 2.278 c
-145.436 2.278 145.554 2.271 145.664 2.263 c
-145.782 2.252 145.885 2.238 145.973 2.219 c
-h
-153.036 -1.264 m
-151.801 1.984 l
-151.808 1.826 151.823 1.679 151.845 1.543 c
-151.845 1.352 l
-151.852 1.294 151.86 1.228 151.86 1.161 c
-151.867 1.103 151.875 1.043 151.875 0.985 c
-151.881 0.933 151.889 0.889 151.889 0.852 c
-151.889 -1.264 l
-151.066 -1.264 l
-151.066 3.072 l
-152.139 3.072 l
-153.404 -0.264 l
-153.381 -0.118 153.367 0.022 153.359 0.162 c
-153.348 0.287 153.337 0.415 153.33 0.544 c
-153.319 0.679 153.315 0.801 153.315 0.912 c
-153.315 3.072 l
-154.138 3.072 l
-154.138 -1.264 l
-h
-156.101 -1.323 m
-155.931 -1.323 155.781 -1.301 155.644 -1.264 c
-155.516 -1.216 155.403 -1.147 155.307 -1.058 c
-155.218 -0.97 155.149 -0.864 155.101 -0.735 c
-155.05 -0.599 155.027 -0.449 155.027 -0.279 c
-155.027 -0.073 155.06 0.095 155.131 0.235 c
-155.197 0.382 155.293 0.492 155.409 0.573 c
-155.534 0.661 155.678 0.723 155.836 0.764 c
-156.001 0.801 156.178 0.827 156.365 0.837 c
-157.086 0.852 l
-157.086 1.029 l
-157.086 1.147 157.074 1.249 157.055 1.338 c
-157.034 1.425 157.001 1.492 156.953 1.543 c
-156.913 1.602 156.865 1.639 156.806 1.66 c
-156.747 1.679 156.681 1.69 156.615 1.69 c
-156.546 1.69 156.483 1.679 156.424 1.66 c
-156.373 1.65 156.325 1.624 156.277 1.587 c
-156.236 1.558 156.203 1.506 156.174 1.44 c
-156.152 1.382 156.137 1.301 156.13 1.205 c
-155.189 1.249 l
-155.218 1.396 155.262 1.532 155.322 1.66 c
-155.388 1.785 155.484 1.896 155.601 1.984 c
-155.719 2.08 155.858 2.153 156.027 2.205 c
-156.203 2.252 156.409 2.278 156.644 2.278 c
-157.086 2.278 157.416 2.168 157.644 1.955 c
-157.88 1.749 157.996 1.44 157.996 1.029 c
-157.996 -0.235 l
-157.996 -0.456 l
-158.004 -0.515 158.019 -0.57 158.04 -0.617 c
-158.059 -0.658 158.088 -0.691 158.129 -0.721 c
-158.166 -0.742 158.217 -0.75 158.276 -0.75 c
-158.342 -0.75 158.412 -0.746 158.482 -0.735 c
-158.482 -1.22 l
-158.423 -1.231 158.368 -1.242 158.32 -1.249 c
-158.279 -1.261 158.239 -1.268 158.202 -1.279 c
-158.162 -1.286 158.118 -1.294 158.071 -1.294 c
-158.019 -1.301 157.96 -1.309 157.894 -1.309 c
-157.666 -1.309 157.5 -1.257 157.394 -1.147 c
-157.284 -1.029 157.221 -0.864 157.203 -0.647 c
-157.188 -0.647 l
-157.119 -0.757 157.049 -0.852 156.982 -0.941 c
-156.913 -1.022 156.835 -1.087 156.747 -1.147 c
-156.659 -1.205 156.56 -1.249 156.453 -1.279 c
-156.354 -1.309 156.236 -1.323 156.101 -1.323 c
-157.086 0.353 m
-156.659 0.338 l
-156.56 0.338 156.468 0.33 156.38 0.324 c
-156.299 0.312 156.233 0.287 156.174 0.249 c
-156.115 0.209 156.064 0.151 156.027 0.073 c
-155.987 0.004 155.968 -0.088 155.968 -0.206 c
-155.968 -0.375 156.001 -0.497 156.071 -0.574 c
-156.137 -0.654 156.236 -0.691 156.365 -0.691 c
-156.471 -0.691 156.571 -0.669 156.659 -0.617 c
-156.754 -0.57 156.835 -0.507 156.895 -0.426 c
-156.96 -0.349 157.012 -0.262 157.041 -0.162 c
-157.071 -0.056 157.086 0.058 157.086 0.176 c
-h
-160.367 -1.264 m
-160.367 0.852 l
-160.367 1.018 160.359 1.153 160.352 1.264 c
-160.341 1.371 160.323 1.455 160.294 1.514 c
-160.271 1.58 160.242 1.631 160.205 1.66 c
-160.176 1.69 160.135 1.705 160.087 1.705 c
-160.029 1.705 159.974 1.675 159.926 1.617 c
-159.885 1.565 159.852 1.492 159.823 1.396 c
-159.794 1.308 159.768 1.194 159.75 1.058 c
-159.738 0.918 159.735 0.768 159.735 0.602 c
-159.735 -1.264 l
-158.985 -1.264 l
-158.985 1.469 l
-158.985 1.705 l
-158.985 1.926 l
-158.985 2.003 158.977 2.065 158.971 2.117 c
-158.971 2.219 l
-159.646 2.219 l
-159.646 2.131 l
-159.646 1.984 l
-159.654 1.926 159.661 1.866 159.661 1.808 c
-159.661 1.646 l
-159.676 1.646 l
-159.694 1.735 159.723 1.812 159.764 1.881 c
-159.801 1.959 159.845 2.028 159.897 2.087 c
-159.956 2.146 160.022 2.19 160.103 2.219 c
-160.18 2.256 160.268 2.278 160.367 2.278 c
-160.55 2.278 160.691 2.223 160.779 2.117 c
-160.874 2.017 160.944 1.859 160.984 1.646 c
-160.999 1.646 l
-161.036 1.741 161.076 1.83 161.117 1.911 c
-161.165 1.988 161.219 2.051 161.278 2.102 c
-161.337 2.161 161.404 2.205 161.484 2.234 c
-161.562 2.263 161.649 2.278 161.749 2.278 c
-161.884 2.278 161.998 2.252 162.087 2.205 c
-162.175 2.153 162.241 2.08 162.293 1.984 c
-162.351 1.885 162.388 1.756 162.41 1.602 c
-162.439 1.455 162.454 1.271 162.454 1.058 c
-162.454 -1.264 l
-161.734 -1.264 l
-161.734 0.852 l
-161.734 1.018 161.726 1.153 161.72 1.264 c
-161.708 1.371 161.69 1.455 161.66 1.514 c
-161.639 1.58 161.609 1.631 161.572 1.66 c
-161.543 1.69 161.502 1.705 161.454 1.705 c
-161.337 1.705 161.242 1.617 161.175 1.44 c
-161.117 1.271 161.088 1.014 161.088 0.661 c
-161.088 -1.264 l
-h
-164.824 -1.323 m
-164.567 -1.323 164.34 -1.286 164.134 -1.22 c
-163.928 -1.143 163.752 -1.029 163.604 -0.882 c
-163.457 -0.728 163.34 -0.536 163.251 -0.309 c
-163.17 -0.085 163.134 0.18 163.134 0.484 c
-163.134 0.816 163.178 1.095 163.266 1.323 c
-163.362 1.558 163.49 1.741 163.648 1.881 c
-163.814 2.017 164.001 2.117 164.207 2.175 c
-164.413 2.242 164.622 2.278 164.839 2.278 c
-165.111 2.278 165.346 2.227 165.545 2.131 c
-165.751 2.043 165.915 1.911 166.044 1.735 c
-166.181 1.565 166.279 1.359 166.339 1.117 c
-166.405 0.881 166.441 0.617 166.441 0.324 c
-166.441 0.309 l
-164.074 0.309 l
-164.074 0.162 164.089 0.022 164.119 -0.103 c
-164.155 -0.231 164.211 -0.345 164.28 -0.441 c
-164.346 -0.53 164.431 -0.599 164.531 -0.647 c
-164.626 -0.698 164.739 -0.721 164.868 -0.721 c
-165.023 -0.721 165.163 -0.688 165.28 -0.617 c
-165.406 -0.551 165.493 -0.449 165.545 -0.309 c
-166.383 -0.382 l
-166.353 -0.482 166.298 -0.588 166.221 -0.706 c
-166.14 -0.816 166.037 -0.919 165.913 -1.014 c
-165.795 -1.103 165.641 -1.176 165.456 -1.235 c
-165.28 -1.294 165.067 -1.323 164.824 -1.323 c
-164.824 1.705 m
-164.737 1.705 164.648 1.69 164.56 1.66 c
-164.471 1.631 164.39 1.58 164.325 1.514 c
-164.255 1.444 164.196 1.356 164.149 1.249 c
-164.108 1.139 164.089 1.014 164.089 0.867 c
-165.56 0.867 l
-165.56 1.003 165.533 1.124 165.485 1.234 c
-165.445 1.341 165.39 1.429 165.325 1.5 c
-165.265 1.565 165.192 1.617 165.104 1.646 c
-165.015 1.683 164.92 1.705 164.824 1.705 c
-169.899 1.455 m
-169.267 1.455 l
-169.135 3.513 l
-170.031 3.513 l
-h
-168.429 1.455 m
-167.797 1.455 l
-167.679 3.513 l
-168.547 3.513 l
-h
-f
-Q
-q 1 0 0 1 91.976 390.0891 cm
-0 0 m
-0 0.265 -0.073 0.464 -0.22 0.603 c
--0.36 0.75 -0.617 0.89 -0.999 1.029 c
--1.374 1.166 -1.66 1.309 -1.866 1.455 c
--2.065 1.603 -2.212 1.768 -2.308 1.956 c
--2.406 2.151 -2.454 2.371 -2.454 2.617 c
--2.454 3.036 -2.315 3.385 -2.028 3.66 c
--1.745 3.932 -1.378 4.072 -0.926 4.072 c
--0.613 4.072 -0.334 3.998 -0.088 3.851 c
-0.154 3.712 0.341 3.517 0.47 3.263 c
-0.607 3.017 0.676 2.749 0.676 2.455 c
-0 2.455 l
-0 2.786 -0.081 3.043 -0.235 3.219 c
--0.393 3.404 -0.625 3.499 -0.926 3.499 c
--1.19 3.499 -1.404 3.418 -1.558 3.263 c
--1.705 3.117 -1.779 2.903 -1.779 2.631 c
--1.779 2.404 -1.701 2.213 -1.544 2.058 c
--1.378 1.912 -1.124 1.771 -0.779 1.646 c
--0.261 1.478 0.11 1.268 0.338 1.015 c
-0.573 0.757 0.691 0.427 0.691 0.015 c
-0.691 -0.426 0.548 -0.779 0.264 -1.043 c
--0.022 -1.3 -0.405 -1.425 -0.881 -1.425 c
--1.198 -1.425 -1.484 -1.356 -1.749 -1.219 c
--2.014 -1.084 -2.227 -0.893 -2.381 -0.646 c
--2.528 -0.404 -2.601 -0.118 -2.601 0.206 c
--1.926 0.206 l
--1.926 -0.128 -1.834 -0.389 -1.646 -0.573 c
--1.463 -0.76 -1.205 -0.852 -0.881 -0.852 c
--0.588 -0.852 -0.368 -0.779 -0.22 -0.631 c
--0.073 -0.477 0 -0.264 0 0 c
-2.896 -1.425 m
-2.396 -1.425 2.014 -1.278 1.749 -0.984 c
-1.484 -0.69 1.353 -0.257 1.353 0.324 c
-1.353 0.794 l
-1.353 1.389 1.477 1.856 1.735 2.191 c
-1.999 2.532 2.359 2.705 2.822 2.705 c
-3.281 2.705 3.624 2.55 3.851 2.249 c
-4.087 1.956 4.208 1.492 4.219 0.867 c
-4.219 0.441 l
-1.999 0.441 l
-1.999 0.353 l
-1.999 -0.08 2.076 -0.393 2.234 -0.588 c
-2.4 -0.775 2.631 -0.866 2.925 -0.866 c
-3.12 -0.866 3.293 -0.833 3.439 -0.764 c
-3.587 -0.687 3.723 -0.569 3.851 -0.411 c
-4.189 -0.823 l
-3.903 -1.227 3.473 -1.425 2.896 -1.425 c
-2.822 2.147 m
-2.547 2.147 2.344 2.051 2.219 1.867 c
-2.091 1.68 2.018 1.389 1.999 1 c
-3.572 1 l
-3.572 1.088 l
-3.55 1.47 3.484 1.738 3.366 1.897 c
-3.248 2.062 3.065 2.147 2.822 2.147 c
-5.85 3.587 m
-5.85 2.631 l
-6.453 2.631 l
-6.453 2.103 l
-5.85 2.103 l
-5.85 -0.367 l
-5.85 -0.525 5.872 -0.643 5.924 -0.72 c
-5.982 -0.801 6.071 -0.837 6.188 -0.837 c
-6.277 -0.837 6.365 -0.823 6.453 -0.793 c
-6.453 -1.352 l
-6.306 -1.4 6.151 -1.425 5.997 -1.425 c
-5.74 -1.425 5.546 -1.334 5.409 -1.146 c
-5.27 -0.962 5.203 -0.702 5.203 -0.367 c
-5.203 2.103 l
-4.601 2.103 l
-4.601 2.631 l
-5.203 2.631 l
-5.203 3.587 l
-h
-9.789 3.587 m
-9.789 2.631 l
-10.392 2.631 l
-10.392 2.103 l
-9.789 2.103 l
-9.789 -0.367 l
-9.789 -0.525 9.812 -0.643 9.864 -0.72 c
-9.922 -0.801 10.01 -0.837 10.128 -0.837 c
-10.215 -0.837 10.304 -0.823 10.392 -0.793 c
-10.392 -1.352 l
-10.246 -1.4 10.091 -1.425 9.937 -1.425 c
-9.679 -1.425 9.485 -1.334 9.349 -1.146 c
-9.209 -0.962 9.143 -0.702 9.143 -0.367 c
-9.143 2.103 l
-8.54 2.103 l
-8.54 2.631 l
-9.143 2.631 l
-9.143 3.587 l
-h
-11.803 2.22 m
-12.057 2.544 12.376 2.705 12.759 2.705 c
-13.465 2.705 13.821 2.234 13.832 1.294 c
-13.832 -1.352 l
-13.185 -1.352 l
-13.185 1.264 l
-13.185 1.577 13.13 1.798 13.024 1.926 c
-12.914 2.051 12.759 2.117 12.553 2.117 c
-12.395 2.117 12.248 2.062 12.112 1.956 c
-11.983 1.845 11.881 1.709 11.803 1.544 c
-11.803 -1.352 l
-11.156 -1.352 l
-11.156 4.293 l
-11.803 4.293 l
-h
-16.214 -1.425 m
-15.713 -1.425 15.331 -1.278 15.067 -0.984 c
-14.803 -0.69 14.67 -0.257 14.67 0.324 c
-14.67 0.794 l
-14.67 1.389 14.795 1.856 15.052 2.191 c
-15.316 2.532 15.676 2.705 16.139 2.705 c
-16.599 2.705 16.941 2.55 17.168 2.249 c
-17.404 1.956 17.525 1.492 17.536 0.867 c
-17.536 0.441 l
-15.316 0.441 l
-15.316 0.353 l
-15.316 -0.08 15.393 -0.393 15.551 -0.588 c
-15.717 -0.775 15.948 -0.866 16.243 -0.866 c
-16.438 -0.866 16.61 -0.833 16.757 -0.764 c
-16.904 -0.687 17.04 -0.569 17.168 -0.411 c
-17.506 -0.823 l
-17.22 -1.227 16.79 -1.425 16.214 -1.425 c
-16.139 2.147 m
-15.864 2.147 15.662 2.051 15.537 1.867 c
-15.408 1.68 15.335 1.389 15.316 1 c
-16.889 1 l
-16.889 1.088 l
-16.867 1.47 16.801 1.738 16.684 1.897 c
-16.565 2.062 16.382 2.147 16.139 2.147 c
-20.652 2.631 m
-20.667 2.191 l
-20.92 2.532 21.244 2.705 21.637 2.705 c
-22.343 2.705 22.699 2.234 22.71 1.294 c
-22.71 -1.352 l
-22.063 -1.352 l
-22.063 1.264 l
-22.063 1.577 22.009 1.798 21.901 1.926 c
-21.791 2.051 21.637 2.117 21.431 2.117 c
-21.273 2.117 21.126 2.062 20.991 1.956 c
-20.862 1.845 20.759 1.709 20.682 1.544 c
-20.682 -1.352 l
-20.035 -1.352 l
-20.035 2.631 l
-h
-25.724 -1.352 m
-25.683 -1.263 25.658 -1.117 25.65 -0.911 c
-25.415 -1.256 25.121 -1.425 24.768 -1.425 c
-24.405 -1.425 24.121 -1.33 23.915 -1.132 c
-23.717 -0.926 23.621 -0.639 23.621 -0.264 c
-23.621 0.136 23.757 0.456 24.033 0.691 c
-24.305 0.934 24.68 1.058 25.151 1.058 c
-25.635 1.058 l
-25.635 1.485 l
-25.635 1.721 25.581 1.885 25.473 1.985 c
-25.363 2.091 25.201 2.147 24.989 2.147 c
-24.79 2.147 24.629 2.087 24.503 1.97 c
-24.386 1.852 24.327 1.706 24.327 1.529 c
-23.68 1.529 l
-23.68 1.723 23.74 1.915 23.856 2.103 c
-23.981 2.286 24.143 2.433 24.342 2.544 c
-24.548 2.65 24.775 2.705 25.032 2.705 c
-25.433 2.705 25.738 2.602 25.944 2.396 c
-26.157 2.191 26.271 1.897 26.282 1.515 c
-26.282 -0.5 l
-26.282 -0.804 26.319 -1.069 26.4 -1.294 c
-26.4 -1.352 l
-h
-24.856 -0.837 m
-25.022 -0.837 25.172 -0.793 25.312 -0.706 c
-25.459 -0.617 25.566 -0.507 25.635 -0.367 c
-25.635 0.574 l
-25.267 0.574 l
-24.952 0.574 24.709 0.504 24.533 0.368 c
-24.357 0.239 24.268 0.052 24.268 -0.191 c
-24.268 -0.419 24.312 -0.584 24.401 -0.69 c
-24.488 -0.789 24.64 -0.837 24.856 -0.837 c
-27.899 2.631 m
-27.914 2.264 l
-28.156 2.558 28.476 2.705 28.869 2.705 c
-29.31 2.705 29.619 2.507 29.795 2.117 c
-30.049 2.507 30.398 2.705 30.838 2.705 c
-31.574 2.705 31.948 2.242 31.971 1.324 c
-31.971 -1.352 l
-31.324 -1.352 l
-31.324 1.264 l
-31.324 1.559 31.268 1.771 31.162 1.912 c
-31.063 2.047 30.89 2.117 30.647 2.117 c
-30.449 2.117 30.287 2.037 30.163 1.881 c
-30.045 1.735 29.975 1.544 29.957 1.309 c
-29.957 -1.352 l
-29.296 -1.352 l
-29.296 1.294 l
-29.296 1.841 29.074 2.117 28.634 2.117 c
-28.299 2.117 28.064 1.956 27.929 1.632 c
-27.929 -1.352 l
-27.281 -1.352 l
-27.281 2.631 l
-h
-34.366 -1.425 m
-33.867 -1.425 33.485 -1.278 33.22 -0.984 c
-32.955 -0.69 32.823 -0.257 32.823 0.324 c
-32.823 0.794 l
-32.823 1.389 32.948 1.856 33.205 2.191 c
-33.47 2.532 33.83 2.705 34.293 2.705 c
-34.753 2.705 35.094 2.55 35.322 2.249 c
-35.557 1.956 35.678 1.492 35.69 0.867 c
-35.69 0.441 l
-33.47 0.441 l
-33.47 0.353 l
-33.47 -0.08 33.547 -0.393 33.705 -0.588 c
-33.87 -0.775 34.102 -0.866 34.396 -0.866 c
-34.591 -0.866 34.763 -0.833 34.91 -0.764 c
-35.058 -0.687 35.193 -0.569 35.322 -0.411 c
-35.66 -0.823 l
-35.374 -1.227 34.944 -1.425 34.366 -1.425 c
-34.293 2.147 m
-34.017 2.147 33.815 2.051 33.691 1.867 c
-33.562 1.68 33.488 1.389 33.47 1 c
-35.043 1 l
-35.043 1.088 l
-35.021 1.47 34.954 1.738 34.837 1.897 c
-34.719 2.062 34.535 2.147 34.293 2.147 c
-39.041 3.587 m
-39.041 2.631 l
-39.644 2.631 l
-39.644 2.103 l
-39.041 2.103 l
-39.041 -0.367 l
-39.041 -0.525 39.063 -0.643 39.114 -0.72 c
-39.173 -0.801 39.262 -0.837 39.378 -0.837 c
-39.467 -0.837 39.555 -0.823 39.644 -0.793 c
-39.644 -1.352 l
-39.497 -1.4 39.342 -1.425 39.187 -1.425 c
-38.931 -1.425 38.736 -1.334 38.599 -1.146 c
-38.46 -0.962 38.394 -0.702 38.394 -0.367 c
-38.394 2.103 l
-37.791 2.103 l
-37.791 2.631 l
-38.394 2.631 l
-38.394 3.587 l
-h
-41.055 2.22 m
-41.308 2.544 41.628 2.705 42.01 2.705 c
-42.715 2.705 43.072 2.234 43.083 1.294 c
-43.083 -1.352 l
-42.436 -1.352 l
-42.436 1.264 l
-42.436 1.577 42.381 1.798 42.275 1.926 c
-42.164 2.051 42.01 2.117 41.805 2.117 c
-41.647 2.117 41.499 2.062 41.363 1.956 c
-41.234 1.845 41.132 1.709 41.055 1.544 c
-41.055 -1.352 l
-40.408 -1.352 l
-40.408 4.293 l
-41.055 4.293 l
-h
-46.082 -1.352 m
-46.042 -1.263 46.015 -1.117 46.008 -0.911 c
-45.773 -1.256 45.479 -1.425 45.126 -1.425 c
-44.762 -1.425 44.479 -1.33 44.274 -1.132 c
-44.076 -0.926 43.98 -0.639 43.98 -0.264 c
-43.98 0.136 44.116 0.456 44.392 0.691 c
-44.663 0.934 45.038 1.058 45.508 1.058 c
-45.994 1.058 l
-45.994 1.485 l
-45.994 1.721 45.938 1.885 45.832 1.985 c
-45.722 2.091 45.56 2.147 45.346 2.147 c
-45.148 2.147 44.986 2.087 44.862 1.97 c
-44.744 1.852 44.685 1.706 44.685 1.529 c
-44.039 1.529 l
-44.039 1.723 44.097 1.915 44.215 2.103 c
-44.34 2.286 44.502 2.433 44.7 2.544 c
-44.906 2.65 45.134 2.705 45.391 2.705 c
-45.791 2.705 46.096 2.602 46.302 2.396 c
-46.515 2.191 46.63 1.897 46.64 1.515 c
-46.64 -0.5 l
-46.64 -0.804 46.677 -1.069 46.758 -1.294 c
-46.758 -1.352 l
-h
-45.215 -0.837 m
-45.379 -0.837 45.531 -0.793 45.67 -0.706 c
-45.817 -0.617 45.924 -0.507 45.994 -0.367 c
-45.994 0.574 l
-45.626 0.574 l
-45.31 0.574 45.067 0.504 44.891 0.368 c
-44.714 0.239 44.627 0.052 44.627 -0.191 c
-44.627 -0.419 44.671 -0.584 44.758 -0.69 c
-44.847 -0.789 44.997 -0.837 45.215 -0.837 c
-48.492 3.587 m
-48.492 2.631 l
-49.095 2.631 l
-49.095 2.103 l
-48.492 2.103 l
-48.492 -0.367 l
-48.492 -0.525 48.514 -0.643 48.566 -0.72 c
-48.625 -0.801 48.712 -0.837 48.83 -0.837 c
-48.918 -0.837 49.007 -0.823 49.095 -0.793 c
-49.095 -1.352 l
-48.948 -1.4 48.793 -1.425 48.639 -1.425 c
-48.382 -1.425 48.187 -1.334 48.051 -1.146 c
-47.912 -0.962 47.845 -0.702 47.845 -0.367 c
-47.845 2.103 l
-47.243 2.103 l
-47.243 2.631 l
-47.845 2.631 l
-47.845 3.587 l
-h
-54.549 -0.205 m
-55.151 2.631 l
-55.798 2.631 l
-54.813 -1.352 l
-54.299 -1.352 l
-53.52 1.5 l
-52.77 -1.352 l
-52.24 -1.352 l
-51.285 2.631 l
-51.918 2.631 l
-52.535 -0.132 l
-53.269 2.631 l
-53.784 2.631 l
-h
-57.179 -1.352 -0.646 3.983 re
-57.223 3.675 m
-57.223 3.565 57.194 3.473 57.136 3.396 c
-57.077 3.326 56.981 3.293 56.856 3.293 c
-56.739 3.293 56.643 3.326 56.577 3.396 c
-56.518 3.473 56.489 3.565 56.489 3.675 c
-56.489 3.793 56.518 3.884 56.577 3.955 c
-56.643 4.032 56.739 4.072 56.856 4.072 c
-56.981 4.072 57.077 4.032 57.136 3.955 c
-57.194 3.874 57.223 3.782 57.223 3.675 c
-58.899 -1.352 -0.646 5.644 re
-60.619 -1.352 -0.647 5.644 re
-66.234 0.441 m
-66.234 -0.176 66.12 -0.643 65.896 -0.955 c
-65.68 -1.271 65.356 -1.425 64.926 -1.425 c
-64.504 -1.425 64.191 -1.246 63.985 -0.881 c
-63.956 -1.352 l
-63.353 -1.352 l
-63.353 4.293 l
-63.999 4.293 l
-63.999 2.191 l
-64.213 2.532 64.522 2.705 64.926 2.705 c
-65.356 2.705 65.68 2.547 65.896 2.234 c
-66.12 1.929 66.234 1.463 66.234 0.838 c
-h
-65.587 0.823 m
-65.587 1.294 65.518 1.625 65.381 1.823 c
-65.252 2.018 65.044 2.117 64.749 2.117 c
-64.415 2.117 64.165 1.933 63.999 1.573 c
-63.999 -0.309 l
-64.165 -0.672 64.419 -0.852 64.764 -0.852 c
-65.058 -0.852 65.268 -0.749 65.396 -0.544 c
-65.522 -0.338 65.587 -0.022 65.587 0.412 c
-h
-68.498 -1.425 m
-67.998 -1.425 67.616 -1.278 67.351 -0.984 c
-67.087 -0.69 66.954 -0.257 66.954 0.324 c
-66.954 0.794 l
-66.954 1.389 67.079 1.856 67.336 2.191 c
-67.601 2.532 67.961 2.705 68.425 2.705 c
-68.884 2.705 69.225 2.55 69.453 2.249 c
-69.688 1.956 69.809 1.492 69.821 0.867 c
-69.821 0.441 l
-67.601 0.441 l
-67.601 0.353 l
-67.601 -0.08 67.679 -0.393 67.836 -0.588 c
-68.001 -0.775 68.233 -0.866 68.527 -0.866 c
-68.722 -0.866 68.895 -0.833 69.042 -0.764 c
-69.189 -0.687 69.325 -0.569 69.453 -0.411 c
-69.792 -0.823 l
-69.505 -1.227 69.075 -1.425 68.498 -1.425 c
-68.425 2.147 m
-68.149 2.147 67.947 2.051 67.822 1.867 c
-67.693 1.68 67.619 1.389 67.601 1 c
-69.173 1 l
-69.173 1.088 l
-69.152 1.47 69.086 1.738 68.968 1.897 c
-68.851 2.062 68.666 2.147 68.425 2.147 c
-74.363 -1.352 m
-74.322 -1.263 74.297 -1.117 74.289 -0.911 c
-74.054 -1.256 73.76 -1.425 73.407 -1.425 c
-73.044 -1.425 72.761 -1.33 72.555 -1.132 c
-72.356 -0.926 72.261 -0.639 72.261 -0.264 c
-72.261 0.136 72.396 0.456 72.672 0.691 c
-72.944 0.934 73.319 1.058 73.79 1.058 c
-74.274 1.058 l
-74.274 1.485 l
-74.274 1.721 74.22 1.885 74.112 1.985 c
-74.002 2.091 73.841 2.147 73.628 2.147 c
-73.429 2.147 73.268 2.087 73.142 1.97 c
-73.025 1.852 72.967 1.706 72.967 1.529 c
-72.319 1.529 l
-72.319 1.723 72.379 1.915 72.496 2.103 c
-72.62 2.286 72.782 2.433 72.981 2.544 c
-73.187 2.65 73.414 2.705 73.672 2.705 c
-74.072 2.705 74.378 2.602 74.583 2.396 c
-74.796 2.191 74.91 1.897 74.921 1.515 c
-74.921 -0.5 l
-74.921 -0.804 74.958 -1.069 75.039 -1.294 c
-75.039 -1.352 l
-h
-73.495 -0.837 m
-73.661 -0.837 73.811 -0.793 73.951 -0.706 c
-74.098 -0.617 74.205 -0.507 74.274 -0.367 c
-74.274 0.574 l
-73.907 0.574 l
-73.591 0.574 73.348 0.504 73.172 0.368 c
-72.996 0.239 72.907 0.052 72.907 -0.191 c
-72.907 -0.419 72.952 -0.584 73.04 -0.69 c
-73.128 -0.789 73.279 -0.837 73.495 -0.837 c
-76.773 3.587 m
-76.773 2.631 l
-77.376 2.631 l
-77.376 2.103 l
-76.773 2.103 l
-76.773 -0.367 l
-76.773 -0.525 76.795 -0.643 76.847 -0.72 c
-76.905 -0.801 76.994 -0.837 77.111 -0.837 c
-77.2 -0.837 77.287 -0.823 77.376 -0.793 c
-77.376 -1.352 l
-77.229 -1.4 77.075 -1.425 76.92 -1.425 c
-76.663 -1.425 76.468 -1.334 76.333 -1.146 c
-76.192 -0.962 76.126 -0.702 76.126 -0.367 c
-76.126 2.103 l
-75.523 2.103 l
-75.523 2.631 l
-76.126 2.631 l
-76.126 3.587 l
-h
-78.993 3.587 m
-78.993 2.631 l
-79.595 2.631 l
-79.595 2.103 l
-78.993 2.103 l
-78.993 -0.367 l
-78.993 -0.525 79.015 -0.643 79.066 -0.72 c
-79.125 -0.801 79.213 -0.837 79.331 -0.837 c
-79.419 -0.837 79.508 -0.823 79.595 -0.793 c
-79.595 -1.352 l
-79.448 -1.4 79.294 -1.425 79.14 -1.425 c
-78.883 -1.425 78.688 -1.334 78.552 -1.146 c
-78.412 -0.962 78.346 -0.702 78.346 -0.367 c
-78.346 2.103 l
-77.744 2.103 l
-77.744 2.631 l
-78.346 2.631 l
-78.346 3.587 l
-h
-82.403 -1.352 m
-82.363 -1.263 82.337 -1.117 82.33 -0.911 c
-82.095 -1.256 81.8 -1.425 81.447 -1.425 c
-81.084 -1.425 80.801 -1.33 80.595 -1.132 c
-80.397 -0.926 80.301 -0.639 80.301 -0.264 c
-80.301 0.136 80.437 0.456 80.713 0.691 c
-80.984 0.934 81.36 1.058 81.83 1.058 c
-82.315 1.058 l
-82.315 1.485 l
-82.315 1.721 82.26 1.885 82.153 1.985 c
-82.043 2.091 81.881 2.147 81.668 2.147 c
-81.47 2.147 81.308 2.087 81.183 1.97 c
-81.065 1.852 81.006 1.706 81.006 1.529 c
-80.36 1.529 l
-80.36 1.723 80.419 1.915 80.536 2.103 c
-80.661 2.286 80.823 2.433 81.021 2.544 c
-81.227 2.65 81.455 2.705 81.712 2.705 c
-82.112 2.705 82.417 2.602 82.623 2.396 c
-82.837 2.191 82.951 1.897 82.962 1.515 c
-82.962 -0.5 l
-82.962 -0.804 82.999 -1.069 83.08 -1.294 c
-83.08 -1.352 l
-h
-81.536 -0.837 m
-81.701 -0.837 81.852 -0.793 81.991 -0.706 c
-82.139 -0.617 82.245 -0.507 82.315 -0.367 c
-82.315 0.574 l
-81.947 0.574 l
-81.632 0.574 81.389 0.504 81.212 0.368 c
-81.036 0.239 80.948 0.052 80.948 -0.191 c
-80.948 -0.419 80.992 -0.584 81.08 -0.69 c
-81.168 -0.789 81.319 -0.837 81.536 -0.837 c
-85.343 -0.866 m
-85.556 -0.866 85.729 -0.804 85.857 -0.675 c
-85.993 -0.54 86.066 -0.349 86.078 -0.103 c
-86.695 -0.103 l
-86.673 -0.484 86.537 -0.804 86.284 -1.058 c
-86.026 -1.304 85.714 -1.425 85.343 -1.425 c
-84.85 -1.425 84.476 -1.275 84.211 -0.97 c
-83.953 -0.658 83.828 -0.191 83.828 0.427 c
-83.828 0.867 l
-83.828 1.463 83.953 1.919 84.211 2.234 c
-84.476 2.547 84.85 2.705 85.343 2.705 c
-85.744 2.705 86.064 2.573 86.299 2.309 c
-86.54 2.051 86.673 1.706 86.695 1.264 c
-86.078 1.264 l
-86.056 1.559 85.983 1.779 85.857 1.926 c
-85.74 2.073 85.567 2.147 85.343 2.147 c
-85.048 2.147 84.832 2.047 84.696 1.852 c
-84.556 1.665 84.483 1.357 84.476 0.927 c
-84.476 0.412 l
-84.476 -0.058 84.541 -0.393 84.682 -0.588 c
-84.828 -0.775 85.048 -0.866 85.343 -0.866 c
-88.092 2.22 m
-88.345 2.544 88.665 2.705 89.047 2.705 c
-89.752 2.705 90.109 2.234 90.12 1.294 c
-90.12 -1.352 l
-89.473 -1.352 l
-89.473 1.264 l
-89.473 1.577 89.418 1.798 89.312 1.926 c
-89.201 2.051 89.047 2.117 88.842 2.117 c
-88.684 2.117 88.536 2.062 88.4 1.956 c
-88.271 1.845 88.169 1.709 88.092 1.544 c
-88.092 -1.352 l
-87.445 -1.352 l
-87.445 4.293 l
-88.092 4.293 l
-h
-92.501 -1.425 m
-92.001 -1.425 91.62 -1.278 91.354 -0.984 c
-91.09 -0.69 90.958 -0.257 90.958 0.324 c
-90.958 0.794 l
-90.958 1.389 91.082 1.856 91.34 2.191 c
-91.604 2.532 91.965 2.705 92.428 2.705 c
-92.887 2.705 93.229 2.55 93.457 2.249 c
-93.692 1.956 93.813 1.492 93.825 0.867 c
-93.825 0.441 l
-91.604 0.441 l
-91.604 0.353 l
-91.604 -0.08 91.682 -0.393 91.84 -0.588 c
-92.005 -0.775 92.237 -0.866 92.53 -0.866 c
-92.726 -0.866 92.898 -0.833 93.045 -0.764 c
-93.192 -0.687 93.328 -0.569 93.457 -0.411 c
-93.795 -0.823 l
-93.509 -1.227 93.079 -1.425 92.501 -1.425 c
-92.428 2.147 m
-92.152 2.147 91.95 2.051 91.825 1.867 c
-91.697 1.68 91.623 1.389 91.604 1 c
-93.177 1 l
-93.177 1.088 l
-93.156 1.47 93.089 1.738 92.971 1.897 c
-92.854 2.062 92.67 2.147 92.428 2.147 c
-94.471 0.823 m
-94.471 1.43 94.581 1.897 94.809 2.22 c
-95.044 2.544 95.371 2.705 95.794 2.705 c
-96.176 2.705 96.474 2.547 96.69 2.234 c
-96.69 4.293 l
-97.337 4.293 l
-97.337 -1.352 l
-96.749 -1.352 l
-96.705 -0.926 l
-96.499 -1.26 96.194 -1.425 95.794 -1.425 c
-95.382 -1.425 95.059 -1.271 94.824 -0.955 c
-94.589 -0.631 94.471 -0.176 94.471 0.412 c
-h
-95.117 0.441 m
-95.117 0 95.18 -0.33 95.309 -0.544 c
-95.445 -0.749 95.666 -0.852 95.97 -0.852 c
-96.293 -0.852 96.532 -0.69 96.69 -0.367 c
-96.69 1.646 l
-96.522 1.959 96.283 2.117 95.97 2.117 c
-95.666 2.117 95.445 2.014 95.309 1.808 c
-95.18 1.603 95.117 1.279 95.117 0.838 c
-h
-100.909 3.587 m
-100.909 2.631 l
-101.511 2.631 l
-101.511 2.103 l
-100.909 2.103 l
-100.909 -0.367 l
-100.909 -0.525 100.931 -0.643 100.983 -0.72 c
-101.041 -0.801 101.129 -0.837 101.247 -0.837 c
-101.335 -0.837 101.424 -0.823 101.511 -0.793 c
-101.511 -1.352 l
-101.365 -1.4 101.21 -1.425 101.056 -1.425 c
-100.799 -1.425 100.605 -1.334 100.468 -1.146 c
-100.329 -0.962 100.262 -0.702 100.262 -0.367 c
-100.262 2.103 l
-99.66 2.103 l
-99.66 2.631 l
-100.262 2.631 l
-100.262 3.587 l
-h
-102.07 0.823 m
-102.07 1.401 102.207 1.856 102.482 2.191 c
-102.764 2.532 103.136 2.705 103.599 2.705 c
-104.058 2.705 104.426 2.536 104.701 2.205 c
-104.985 1.881 105.131 1.434 105.143 0.867 c
-105.143 0.441 l
-105.143 -0.128 104.999 -0.584 104.717 -0.926 c
-104.441 -1.26 104.073 -1.425 103.614 -1.425 c
-103.151 -1.425 102.78 -1.263 102.496 -0.941 c
-102.221 -0.61 102.078 -0.168 102.07 0.383 c
-h
-102.717 0.441 m
-102.717 0.038 102.795 -0.278 102.953 -0.514 c
-103.117 -0.749 103.338 -0.866 103.614 -0.866 c
-104.179 -0.866 104.474 -0.455 104.495 0.368 c
-104.495 0.823 l
-104.495 1.224 104.411 1.544 104.246 1.779 c
-104.088 2.022 103.871 2.147 103.599 2.147 c
-103.335 2.147 103.117 2.022 102.953 1.779 c
-102.795 1.544 102.717 1.224 102.717 0.823 c
-h
-108.788 -0.264 m
-109.508 2.631 l
-110.199 2.631 l
-108.906 -1.911 l
-108.806 -2.252 108.663 -2.513 108.479 -2.69 c
-108.303 -2.865 108.1 -2.954 107.876 -2.954 c
-107.788 -2.954 107.674 -2.932 107.539 -2.896 c
-107.539 -2.352 l
-107.685 -2.366 l
-107.869 -2.366 108.016 -2.322 108.127 -2.234 c
-108.233 -2.146 108.321 -1.988 108.391 -1.764 c
-108.509 -1.323 l
-107.347 2.631 l
-108.052 2.631 l
-h
-110.639 0.823 m
-110.639 1.401 110.776 1.856 111.051 2.191 c
-111.335 2.532 111.705 2.705 112.169 2.705 c
-112.628 2.705 112.995 2.536 113.271 2.205 c
-113.554 1.881 113.701 1.434 113.712 0.867 c
-113.712 0.441 l
-113.712 -0.128 113.569 -0.584 113.286 -0.926 c
-113.01 -1.26 112.642 -1.425 112.183 -1.425 c
-111.72 -1.425 111.349 -1.263 111.067 -0.941 c
-110.791 -0.61 110.647 -0.168 110.639 0.383 c
-h
-111.287 0.441 m
-111.287 0.038 111.364 -0.278 111.522 -0.514 c
-111.687 -0.749 111.908 -0.866 112.183 -0.866 c
-112.749 -0.866 113.043 -0.455 113.066 0.368 c
-113.066 0.823 l
-113.066 1.224 112.981 1.544 112.815 1.779 c
-112.657 2.022 112.441 2.147 112.169 2.147 c
-111.904 2.147 111.687 2.022 111.522 1.779 c
-111.364 1.544 111.287 1.224 111.287 0.823 c
-h
-116.578 -0.999 m
-116.362 -1.286 116.049 -1.425 115.638 -1.425 c
-115.273 -1.425 114.998 -1.304 114.814 -1.058 c
-114.638 -0.804 114.543 -0.44 114.535 0.03 c
-114.535 2.631 l
-115.182 2.631 l
-115.182 0.088 l
-115.182 -0.54 115.366 -0.852 115.74 -0.852 c
-116.141 -0.852 116.416 -0.675 116.563 -0.323 c
-116.563 2.631 l
-117.21 2.631 l
-117.21 -1.352 l
-116.593 -1.352 l
-h
-119.842 2.014 m
-119.753 2.033 119.655 2.043 119.547 2.043 c
-119.213 2.043 118.978 1.86 118.842 1.5 c
-118.842 -1.352 l
-118.195 -1.352 l
-118.195 2.631 l
-118.828 2.631 l
-118.842 2.22 l
-119.019 2.544 119.261 2.705 119.576 2.705 c
-119.684 2.705 119.772 2.683 119.842 2.646 c
-h
-123.59 -0.866 m
-123.803 -0.866 123.975 -0.804 124.104 -0.675 c
-124.241 -0.54 124.314 -0.349 124.324 -0.103 c
-124.942 -0.103 l
-124.92 -0.484 124.784 -0.804 124.53 -1.058 c
-124.274 -1.304 123.961 -1.425 123.59 -1.425 c
-123.098 -1.425 122.722 -1.275 122.458 -0.97 c
-122.201 -0.658 122.076 -0.191 122.076 0.427 c
-122.076 0.867 l
-122.076 1.463 122.201 1.919 122.458 2.234 c
-122.722 2.547 123.098 2.705 123.59 2.705 c
-123.99 2.705 124.31 2.573 124.545 2.309 c
-124.788 2.051 124.92 1.706 124.942 1.264 c
-124.324 1.264 l
-124.303 1.559 124.229 1.779 124.104 1.926 c
-123.987 2.073 123.814 2.147 123.59 2.147 c
-123.296 2.147 123.079 2.047 122.943 1.852 c
-122.803 1.665 122.73 1.357 122.722 0.927 c
-122.722 0.412 l
-122.722 -0.058 122.789 -0.393 122.928 -0.588 c
-123.075 -0.775 123.296 -0.866 123.59 -0.866 c
-125.56 0.823 m
-125.56 1.401 125.695 1.856 125.971 2.191 c
-126.254 2.532 126.625 2.705 127.088 2.705 c
-127.547 2.705 127.915 2.536 128.191 2.205 c
-128.474 1.881 128.621 1.434 128.632 0.867 c
-128.632 0.441 l
-128.632 -0.128 128.488 -0.584 128.205 -0.926 c
-127.929 -1.26 127.562 -1.425 127.102 -1.425 c
-126.64 -1.425 126.269 -1.263 125.986 -0.941 c
-125.71 -0.61 125.567 -0.168 125.56 0.383 c
-h
-126.206 0.441 m
-126.206 0.038 126.283 -0.278 126.441 -0.514 c
-126.607 -0.749 126.828 -0.866 127.102 -0.866 c
-127.669 -0.866 127.963 -0.455 127.985 0.368 c
-127.985 0.823 l
-127.985 1.224 127.9 1.544 127.735 1.779 c
-127.576 2.022 127.36 2.147 127.088 2.147 c
-126.824 2.147 126.607 2.022 126.441 1.779 c
-126.283 1.544 126.206 1.224 126.206 0.823 c
-h
-130.086 2.631 m
-130.101 2.264 l
-130.344 2.558 130.664 2.705 131.057 2.705 c
-131.497 2.705 131.806 2.507 131.983 2.117 c
-132.237 2.507 132.586 2.705 133.026 2.705 c
-133.762 2.705 134.136 2.242 134.158 1.324 c
-134.158 -1.352 l
-133.512 -1.352 l
-133.512 1.264 l
-133.512 1.559 133.456 1.771 133.35 1.912 c
-133.251 2.047 133.078 2.117 132.835 2.117 c
-132.637 2.117 132.475 2.037 132.351 1.881 c
-132.233 1.735 132.163 1.544 132.145 1.309 c
-132.145 -1.352 l
-131.483 -1.352 l
-131.483 1.294 l
-131.483 1.841 131.262 2.117 130.822 2.117 c
-130.487 2.117 130.252 1.956 130.116 1.632 c
-130.116 -1.352 l
-129.469 -1.352 l
-129.469 2.631 l
-h
-135.746 2.631 m
-135.761 2.264 l
-136.003 2.558 136.323 2.705 136.716 2.705 c
-137.157 2.705 137.466 2.507 137.642 2.117 c
-137.895 2.507 138.244 2.705 138.686 2.705 c
-139.42 2.705 139.796 2.242 139.817 1.324 c
-139.817 -1.352 l
-139.171 -1.352 l
-139.171 1.264 l
-139.171 1.559 139.116 1.771 139.009 1.912 c
-138.91 2.047 138.737 2.117 138.495 2.117 c
-138.296 2.117 138.134 2.037 138.009 1.881 c
-137.892 1.735 137.822 1.544 137.804 1.309 c
-137.804 -1.352 l
-137.142 -1.352 l
-137.142 1.294 l
-137.142 1.841 136.922 2.117 136.481 2.117 c
-136.147 2.117 135.911 1.956 135.775 1.632 c
-135.775 -1.352 l
-135.129 -1.352 l
-135.129 2.631 l
-h
-141.493 -1.352 -0.646 3.983 re
-141.537 3.675 m
-141.537 3.565 141.508 3.473 141.449 3.396 c
-141.39 3.326 141.294 3.293 141.17 3.293 c
-141.053 3.293 140.957 3.326 140.891 3.396 c
-140.831 3.473 140.802 3.565 140.802 3.675 c
-140.802 3.793 140.831 3.884 140.891 3.955 c
-140.957 4.032 141.053 4.072 141.17 4.072 c
-141.294 4.072 141.39 4.032 141.449 3.955 c
-141.508 3.874 141.537 3.782 141.537 3.675 c
-143.36 3.587 m
-143.36 2.631 l
-143.962 2.631 l
-143.962 2.103 l
-143.36 2.103 l
-143.36 -0.367 l
-143.36 -0.525 143.382 -0.643 143.434 -0.72 c
-143.492 -0.801 143.58 -0.837 143.698 -0.837 c
-143.786 -0.837 143.875 -0.823 143.962 -0.793 c
-143.962 -1.352 l
-143.816 -1.4 143.661 -1.425 143.507 -1.425 c
-143.25 -1.425 143.055 -1.334 142.919 -1.146 c
-142.78 -0.962 142.713 -0.702 142.713 -0.367 c
-142.713 2.103 l
-142.111 2.103 l
-142.111 2.631 l
-142.713 2.631 l
-142.713 3.587 l
-h
-146.667 -0.338 m
-146.667 -0.191 146.612 -0.07 146.506 0.03 c
-146.395 0.125 146.19 0.243 145.888 0.383 c
-145.543 0.53 145.3 0.651 145.153 0.75 c
-145.006 0.857 144.896 0.975 144.83 1.103 c
-144.76 1.228 144.727 1.386 144.727 1.573 c
-144.727 1.897 144.845 2.165 145.08 2.382 c
-145.315 2.595 145.616 2.705 145.991 2.705 c
-146.373 2.705 146.682 2.591 146.917 2.367 c
-147.152 2.139 147.27 1.852 147.27 1.5 c
-146.623 1.5 l
-146.623 1.676 146.564 1.827 146.447 1.956 c
-146.329 2.08 146.175 2.147 145.991 2.147 c
-145.793 2.147 145.642 2.091 145.535 1.985 c
-145.425 1.885 145.373 1.754 145.373 1.588 c
-145.373 1.459 145.41 1.353 145.491 1.264 c
-145.568 1.183 145.76 1.081 146.065 0.956 c
-146.543 0.769 146.873 0.581 147.05 0.397 c
-147.226 0.221 147.314 -0.007 147.314 -0.278 c
-147.314 -0.631 147.189 -0.911 146.946 -1.117 c
-146.711 -1.323 146.395 -1.425 146.006 -1.425 c
-145.583 -1.425 145.245 -1.308 144.991 -1.072 c
-144.735 -0.83 144.609 -0.525 144.609 -0.161 c
-145.256 -0.161 l
-145.263 -0.389 145.333 -0.565 145.462 -0.69 c
-145.587 -0.808 145.77 -0.866 146.006 -0.866 c
-146.219 -0.866 146.381 -0.819 146.491 -0.72 c
-146.609 -0.625 146.667 -0.496 146.667 -0.338 c
-151.915 -1.352 m
-151.875 -1.263 151.848 -1.117 151.841 -0.911 c
-151.606 -1.256 151.312 -1.425 150.959 -1.425 c
-150.595 -1.425 150.312 -1.33 150.107 -1.132 c
-149.909 -0.926 149.813 -0.639 149.813 -0.264 c
-149.813 0.136 149.949 0.456 150.225 0.691 c
-150.497 0.934 150.871 1.058 151.341 1.058 c
-151.827 1.058 l
-151.827 1.485 l
-151.827 1.721 151.771 1.885 151.665 1.985 c
-151.555 2.091 151.393 2.147 151.18 2.147 c
-150.981 2.147 150.819 2.087 150.695 1.97 c
-150.578 1.852 150.518 1.706 150.518 1.529 c
-149.872 1.529 l
-149.872 1.723 149.93 1.915 150.048 2.103 c
-150.173 2.286 150.335 2.433 150.533 2.544 c
-150.739 2.65 150.967 2.705 151.224 2.705 c
-151.625 2.705 151.929 2.602 152.135 2.396 c
-152.348 2.191 152.463 1.897 152.473 1.515 c
-152.473 -0.5 l
-152.473 -0.804 152.51 -1.069 152.591 -1.294 c
-152.591 -1.352 l
-h
-151.048 -0.837 m
-151.213 -0.837 151.364 -0.793 151.503 -0.706 c
-151.65 -0.617 151.757 -0.507 151.827 -0.367 c
-151.827 0.574 l
-151.459 0.574 l
-151.143 0.574 150.9 0.504 150.724 0.368 c
-150.547 0.239 150.46 0.052 150.46 -0.191 c
-150.46 -0.419 150.504 -0.584 150.592 -0.69 c
-150.68 -0.789 150.831 -0.837 151.048 -0.837 c
-154.09 2.631 m
-154.105 2.191 l
-154.358 2.532 154.682 2.705 155.075 2.705 c
-155.781 2.705 156.137 2.234 156.149 1.294 c
-156.149 -1.352 l
-155.501 -1.352 l
-155.501 1.264 l
-155.501 1.577 155.446 1.798 155.34 1.926 c
-155.23 2.051 155.075 2.117 154.869 2.117 c
-154.711 2.117 154.564 2.062 154.428 1.956 c
-154.3 1.845 154.197 1.709 154.119 1.544 c
-154.119 -1.352 l
-153.473 -1.352 l
-153.473 2.631 l
-h
-156.986 0.823 m
-156.986 1.43 157.096 1.897 157.325 2.22 c
-157.56 2.544 157.886 2.705 158.309 2.705 c
-158.691 2.705 158.989 2.547 159.206 2.234 c
-159.206 4.293 l
-159.852 4.293 l
-159.852 -1.352 l
-159.264 -1.352 l
-159.22 -0.926 l
-159.014 -1.26 158.709 -1.425 158.309 -1.425 c
-157.897 -1.425 157.574 -1.271 157.339 -0.955 c
-157.103 -0.631 156.986 -0.176 156.986 0.412 c
-h
-157.633 0.441 m
-157.633 0 157.695 -0.33 157.824 -0.544 c
-157.96 -0.749 158.181 -0.852 158.485 -0.852 c
-158.809 -0.852 159.048 -0.69 159.206 -0.367 c
-159.206 1.646 l
-159.037 1.959 158.798 2.117 158.485 2.117 c
-158.181 2.117 157.96 2.014 157.824 1.808 c
-157.695 1.603 157.633 1.279 157.633 0.838 c
-h
-163.424 3.587 m
-163.424 2.631 l
-164.026 2.631 l
-164.026 2.103 l
-163.424 2.103 l
-163.424 -0.367 l
-163.424 -0.525 163.446 -0.643 163.498 -0.72 c
-163.556 -0.801 163.644 -0.837 163.762 -0.837 c
-163.85 -0.837 163.939 -0.823 164.026 -0.793 c
-164.026 -1.352 l
-163.88 -1.4 163.725 -1.425 163.571 -1.425 c
-163.314 -1.425 163.119 -1.334 162.983 -1.146 c
-162.844 -0.962 162.777 -0.702 162.777 -0.367 c
-162.777 2.103 l
-162.175 2.103 l
-162.175 2.631 l
-162.777 2.631 l
-162.777 3.587 l
-h
-166.834 -1.352 m
-166.794 -1.263 166.769 -1.117 166.761 -0.911 c
-166.526 -1.256 166.231 -1.425 165.879 -1.425 c
-165.516 -1.425 165.232 -1.33 165.026 -1.132 c
-164.828 -0.926 164.732 -0.639 164.732 -0.264 c
-164.732 0.136 164.868 0.456 165.144 0.691 c
-165.416 0.934 165.791 1.058 166.262 1.058 c
-166.746 1.058 l
-166.746 1.485 l
-166.746 1.721 166.691 1.885 166.584 1.985 c
-166.474 2.091 166.312 2.147 166.1 2.147 c
-165.901 2.147 165.739 2.087 165.614 1.97 c
-165.497 1.852 165.437 1.706 165.437 1.529 c
-164.791 1.529 l
-164.791 1.723 164.85 1.915 164.967 2.103 c
-165.092 2.286 165.254 2.433 165.453 2.544 c
-165.659 2.65 165.886 2.705 166.143 2.705 c
-166.544 2.705 166.849 2.602 167.055 2.396 c
-167.268 2.191 167.382 1.897 167.393 1.515 c
-167.393 -0.5 l
-167.393 -0.804 167.43 -1.069 167.511 -1.294 c
-167.511 -1.352 l
-h
-165.967 -0.837 m
-166.133 -0.837 166.283 -0.793 166.422 -0.706 c
-166.57 -0.617 166.676 -0.507 166.746 -0.367 c
-166.746 0.574 l
-166.378 0.574 l
-166.063 0.574 165.82 0.504 165.643 0.368 c
-165.468 0.239 165.379 0.052 165.379 -0.191 c
-165.379 -0.419 165.423 -0.584 165.512 -0.69 c
-165.599 -0.789 165.751 -0.837 165.967 -0.837 c
-168.26 0.823 m
-168.26 1.441 168.371 1.904 168.598 2.22 c
-168.822 2.544 169.157 2.705 169.597 2.705 c
-169.998 2.705 170.303 2.529 170.509 2.176 c
-170.553 2.631 l
-171.141 2.631 l
-171.141 -1.396 l
-171.141 -1.884 171.012 -2.263 170.759 -2.528 c
-170.501 -2.792 170.149 -2.925 169.701 -2.925 c
-169.502 -2.925 169.281 -2.873 169.04 -2.778 c
-168.793 -2.678 168.613 -2.557 168.495 -2.41 c
-168.76 -1.969 l
-169.025 -2.234 169.322 -2.366 169.657 -2.366 c
-170.193 -2.366 170.469 -2.072 170.48 -1.484 c
-170.48 -0.955 l
-170.274 -1.271 169.973 -1.425 169.583 -1.425 c
-169.171 -1.425 168.849 -1.275 168.613 -0.97 c
-168.385 -0.658 168.267 -0.205 168.26 0.383 c
-h
-168.922 0.441 m
-168.922 0 168.984 -0.33 169.113 -0.544 c
-169.238 -0.749 169.454 -0.852 169.759 -0.852 c
-170.083 -0.852 170.322 -0.687 170.48 -0.353 c
-170.48 1.632 l
-170.311 1.956 170.072 2.117 169.759 2.117 c
-169.466 2.117 169.248 2.014 169.113 1.808 c
-168.984 1.603 168.922 1.279 168.922 0.838 c
-h
-174.037 -0.338 m
-174.037 -0.191 173.982 -0.07 173.875 0.03 c
-173.765 0.125 173.559 0.243 173.258 0.383 c
-172.913 0.53 172.67 0.651 172.523 0.75 c
-172.376 0.857 172.265 0.975 172.2 1.103 c
-172.13 1.228 172.097 1.386 172.097 1.573 c
-172.097 1.897 172.215 2.165 172.45 2.382 c
-172.685 2.595 172.986 2.705 173.36 2.705 c
-173.743 2.705 174.052 2.591 174.287 2.367 c
-174.522 2.139 174.64 1.852 174.64 1.5 c
-173.993 1.5 l
-173.993 1.676 173.934 1.827 173.817 1.956 c
-173.699 2.08 173.545 2.147 173.36 2.147 c
-173.162 2.147 173.011 2.091 172.905 1.985 c
-172.795 1.885 172.743 1.754 172.743 1.588 c
-172.743 1.459 172.78 1.353 172.861 1.264 c
-172.938 1.183 173.129 1.081 173.434 0.956 c
-173.912 0.769 174.243 0.581 174.419 0.397 c
-174.596 0.221 174.684 -0.007 174.684 -0.278 c
-174.684 -0.631 174.559 -0.911 174.316 -1.117 c
-174.081 -1.323 173.765 -1.425 173.375 -1.425 c
-172.953 -1.425 172.614 -1.308 172.361 -1.072 c
-172.104 -0.83 171.979 -0.525 171.979 -0.161 c
-172.626 -0.161 l
-172.633 -0.389 172.703 -0.565 172.832 -0.69 c
-172.957 -0.808 173.14 -0.866 173.375 -0.866 c
-173.589 -0.866 173.75 -0.819 173.861 -0.72 c
-173.978 -0.625 174.037 -0.496 174.037 -0.338 c
-175.565 -0.999 m
-175.565 -0.881 175.598 -0.786 175.669 -0.706 c
-175.735 -0.628 175.837 -0.588 175.978 -0.588 c
-176.124 -0.588 176.231 -0.628 176.3 -0.706 c
-176.377 -0.786 176.418 -0.881 176.418 -0.999 c
-176.418 -1.109 176.377 -1.201 176.3 -1.278 c
-176.231 -1.356 176.124 -1.396 175.978 -1.396 c
-175.837 -1.396 175.735 -1.356 175.669 -1.278 c
-175.598 -1.201 175.565 -1.109 175.565 -0.999 c
-f
-Q
-0.113 0.082 0.09 0 k
-35.668 383.129 238.665 -12.898 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 40.8563 376.2903 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.646 -0.243 -0.775 -0.367 -0.881 c
--0.496 -0.992 -0.658 -1.08 -0.852 -1.146 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.807 l
--1.896 -1.807 l
--1.896 -1.263 l
--2.142 -1.256 -2.359 -1.219 -2.543 -1.161 c
--2.719 -1.102 -2.873 -1.024 -2.998 -0.926 c
--3.127 -0.819 -3.23 -0.69 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.213 -3.484 -0.014 c
--2.66 0.133 l
--2.642 0.034 -2.616 -0.058 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.367 c
--2.396 -0.426 -2.322 -0.477 -2.234 -0.514 c
--2.138 -0.554 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.662 l
--1.907 0.662 -1.926 0.666 -1.955 0.676 c
--1.977 0.684 -1.992 0.691 -1.999 0.691 c
--2.167 0.728 -2.329 0.772 -2.484 0.823 c
--2.642 0.882 -2.786 0.96 -2.91 1.058 c
--3.039 1.154 -3.142 1.279 -3.219 1.426 c
--3.289 1.573 -3.322 1.757 -3.322 1.985 c
--3.322 2.18 -3.289 2.345 -3.219 2.485 c
--3.152 2.631 -3.054 2.749 -2.925 2.837 c
--2.8 2.933 -2.645 3.003 -2.469 3.043 c
--2.293 3.091 -2.102 3.12 -1.896 3.132 c
--1.896 3.558 l
--1.543 3.558 l
--1.543 3.132 l
--1.319 3.12 -1.128 3.091 -0.97 3.043 c
--0.804 2.992 -0.669 2.918 -0.558 2.822 c
--0.44 2.735 -0.349 2.621 -0.279 2.485 c
--0.202 2.345 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.253 -1.213 2.459 -1.543 2.5 c
--1.543 1.368 l
--1.514 1.368 l
--1.506 1.368 -1.492 1.36 -1.469 1.353 c
--1.294 1.312 -1.117 1.264 -0.941 1.206 c
--0.756 1.147 -0.595 1.066 -0.455 0.971 c
--0.32 0.871 -0.213 0.743 -0.132 0.588 c
--0.044 0.431 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.503 -2.113 2.485 -2.19 2.455 c
--2.26 2.426 -2.319 2.386 -2.366 2.338 c
--2.406 2.297 -2.437 2.249 -2.454 2.191 c
--2.477 2.132 -2.484 2.066 -2.484 1.999 c
--2.484 1.912 -2.469 1.838 -2.439 1.779 c
--2.41 1.721 -2.373 1.669 -2.322 1.632 c
--2.263 1.592 -2.201 1.559 -2.131 1.529 c
--2.065 1.5 -1.984 1.47 -1.896 1.441 c
-h
--0.837 -0.014 m
--0.837 0.092 -0.86 0.177 -0.897 0.235 c
--0.926 0.302 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.53 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.529 -1.028 -0.44 c
--0.904 -0.345 -0.837 -0.201 -0.837 -0.014 c
-6.402 -2.66 m
-6.185 -2.66 5.993 -2.634 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.395 c
-5.284 -2.314 5.185 -2.219 5.108 -2.102 c
-5.039 -1.984 4.991 -1.855 4.961 -1.72 c
-5.858 -1.616 l
-5.895 -1.753 5.964 -1.859 6.064 -1.94 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.057 6.681 -2.028 c
-6.758 -1.999 6.828 -1.944 6.887 -1.866 c
-6.945 -1.797 6.99 -1.705 7.019 -1.587 c
-7.056 -1.469 7.078 -1.323 7.078 -1.146 c
-7.078 -0.955 l
-7.078 -0.889 7.082 -0.83 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.072 c
-6.464 -1.172 6.259 -1.219 6.034 -1.219 c
-5.829 -1.219 5.644 -1.182 5.49 -1.102 c
-5.343 -1.014 5.215 -0.897 5.108 -0.749 c
-5.009 -0.595 4.935 -0.411 4.888 -0.205 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.772 4.836 1.019 4.888 1.235 c
-4.946 1.449 5.027 1.632 5.137 1.779 c
-5.245 1.933 5.376 2.051 5.534 2.132 c
-5.689 2.22 5.876 2.264 6.093 2.264 c
-6.188 2.264 6.288 2.253 6.387 2.234 c
-6.483 2.213 6.571 2.18 6.652 2.132 c
-6.739 2.08 6.817 2.018 6.887 1.941 c
-6.964 1.86 7.026 1.768 7.078 1.661 c
-7.092 1.661 l
-7.092 1.808 l
-7.1 1.867 7.107 1.919 7.107 1.97 c
-7.115 2.029 7.122 2.077 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.152 2.22 c
-8.004 2.22 l
-7.993 2.139 7.982 2.029 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.161 l
-7.975 -1.414 7.938 -1.635 7.871 -1.822 c
-7.802 -2.006 7.699 -2.16 7.563 -2.278 c
-7.423 -2.403 7.258 -2.499 7.063 -2.557 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.53 m
-7.092 0.743 7.067 0.919 7.019 1.058 c
-6.978 1.206 6.924 1.324 6.857 1.411 c
-6.799 1.5 6.729 1.559 6.652 1.588 c
-6.571 1.625 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.621 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.368 c
-5.88 1.279 5.835 1.162 5.799 1.015 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.338 c
-6.049 -0.514 6.211 -0.602 6.417 -0.602 c
-6.483 -0.602 6.556 -0.588 6.637 -0.558 c
-6.725 -0.521 6.799 -0.463 6.857 -0.382 c
-6.924 -0.293 6.978 -0.176 7.019 -0.029 c
-7.067 0.118 7.092 0.302 7.092 0.53 c
-11.036 -0.646 m
-12.168 -0.646 l
-12.168 -1.263 l
-8.86 -1.263 l
-8.86 -0.646 l
-10.124 -0.646 l
-10.124 1.603 l
-9.199 1.603 l
-9.199 2.22 l
-11.036 2.22 l
-h
-10.124 3.514 0.912 -0.676 re
-10.124 2.837 m
-13.6 1.603 m
-13.057 1.603 l
-13.057 2.22 l
-13.644 2.22 l
-13.924 3.117 l
-14.497 3.117 l
-14.497 2.22 l
-15.732 2.22 l
-15.732 1.603 l
-14.497 1.603 l
-14.497 -0.103 l
-14.497 -0.323 l
-14.504 -0.392 14.527 -0.455 14.556 -0.514 c
-14.593 -0.565 14.648 -0.61 14.718 -0.646 c
-14.795 -0.675 14.909 -0.69 15.056 -0.69 c
-15.192 -0.69 15.327 -0.687 15.468 -0.675 c
-15.603 -0.658 15.736 -0.631 15.865 -0.602 c
-15.865 -1.205 l
-15.784 -1.215 15.707 -1.23 15.629 -1.249 c
-15.549 -1.26 15.471 -1.267 15.394 -1.278 c
-15.313 -1.286 15.225 -1.294 15.129 -1.294 c
-15.041 -1.3 14.942 -1.308 14.835 -1.308 c
-14.648 -1.308 14.486 -1.294 14.35 -1.263 c
-14.221 -1.227 14.107 -1.182 14.012 -1.132 c
-13.924 -1.084 13.85 -1.024 13.791 -0.955 c
-13.733 -0.878 13.689 -0.801 13.66 -0.72 c
-13.63 -0.631 13.608 -0.544 13.6 -0.455 c
-13.59 -0.359 13.586 -0.264 13.586 -0.176 c
-h
-22.677 -1.323 m
-22.391 -1.323 22.148 -1.282 21.943 -1.205 c
-21.737 -1.117 21.564 -0.995 21.428 -0.837 c
-21.288 -0.683 21.185 -0.496 21.119 -0.278 c
-21.049 -0.055 21.016 0.192 21.016 0.456 c
-21.016 0.75 21.049 1.008 21.119 1.235 c
-21.197 1.459 21.303 1.646 21.442 1.794 c
-21.589 1.948 21.766 2.066 21.972 2.147 c
-22.178 2.234 22.413 2.278 22.677 2.278 c
-22.901 2.278 23.104 2.249 23.28 2.191 c
-23.456 2.132 23.607 2.047 23.736 1.941 c
-23.861 1.842 23.963 1.721 24.044 1.573 c
-24.122 1.434 24.176 1.283 24.206 1.118 c
-23.295 1.073 l
-23.265 1.25 23.196 1.389 23.089 1.5 c
-22.99 1.607 22.846 1.661 22.662 1.661 c
-22.416 1.661 22.24 1.559 22.134 1.353 c
-22.023 1.154 21.972 0.867 21.972 0.485 c
-21.972 -0.309 22.207 -0.706 22.677 -0.706 c
-22.843 -0.706 22.986 -0.654 23.104 -0.544 c
-23.221 -0.436 23.295 -0.275 23.324 -0.058 c
-24.235 -0.103 l
-24.206 -0.272 24.151 -0.426 24.074 -0.573 c
-24.004 -0.72 23.901 -0.852 23.765 -0.97 c
-23.636 -1.08 23.478 -1.168 23.295 -1.234 c
-23.119 -1.294 22.913 -1.323 22.677 -1.323 c
-28.384 0.485 m
-28.384 0.21 28.347 -0.039 28.281 -0.264 c
-28.212 -0.481 28.108 -0.668 27.973 -0.823 c
-27.833 -0.98 27.657 -1.102 27.443 -1.19 c
-27.227 -1.278 26.973 -1.323 26.679 -1.323 c
-26.404 -1.323 26.157 -1.278 25.944 -1.19 c
-25.739 -1.102 25.566 -0.98 25.43 -0.823 c
-25.29 -0.668 25.187 -0.481 25.121 -0.264 c
-25.051 -0.039 25.018 0.21 25.018 0.485 c
-25.018 0.739 25.047 0.975 25.106 1.191 c
-25.172 1.415 25.275 1.607 25.415 1.764 c
-25.55 1.929 25.727 2.058 25.944 2.147 c
-26.157 2.234 26.414 2.278 26.709 2.278 c
-27.021 2.278 27.281 2.234 27.487 2.147 c
-27.701 2.058 27.873 1.929 28.002 1.764 c
-28.138 1.607 28.237 1.415 28.296 1.191 c
-28.355 0.975 28.384 0.739 28.384 0.485 c
-27.429 0.485 m
-27.429 0.691 27.414 0.867 27.385 1.015 c
-27.362 1.162 27.326 1.283 27.267 1.382 c
-27.208 1.478 27.135 1.548 27.046 1.588 c
-26.959 1.636 26.848 1.661 26.724 1.661 c
-26.458 1.661 26.267 1.563 26.15 1.368 c
-26.032 1.18 25.974 0.886 25.974 0.485 c
-25.974 0.063 26.032 -0.242 26.15 -0.426 c
-26.267 -0.613 26.444 -0.706 26.679 -0.706 c
-26.804 -0.706 26.918 -0.687 27.017 -0.646 c
-27.113 -0.598 27.194 -0.525 27.252 -0.426 c
-27.318 -0.33 27.362 -0.205 27.385 -0.058 c
-27.414 0.088 27.429 0.269 27.429 0.485 c
-31.43 -1.263 m
-31.43 0.721 l
-31.43 1.022 31.387 1.243 31.298 1.382 c
-31.217 1.529 31.081 1.603 30.886 1.603 c
-30.776 1.603 30.674 1.577 30.578 1.529 c
-30.489 1.478 30.409 1.411 30.343 1.324 c
-30.284 1.235 30.233 1.125 30.196 1 c
-30.167 0.882 30.152 0.75 30.152 0.603 c
-30.152 -1.263 l
-29.24 -1.263 l
-29.24 1.441 l
-29.24 1.661 l
-29.24 1.75 29.233 1.827 29.226 1.897 c
-29.226 2.087 l
-29.226 2.22 l
-30.078 2.22 l
-30.086 2.191 30.093 2.147 30.093 2.087 c
-30.093 1.897 l
-30.1 1.827 30.107 1.757 30.107 1.691 c
-30.115 1.621 30.122 1.566 30.122 1.529 c
-30.137 1.529 l
-30.254 1.794 30.406 1.985 30.593 2.103 c
-30.776 2.22 30.996 2.278 31.254 2.278 c
-31.438 2.278 31.599 2.249 31.74 2.191 c
-31.875 2.132 31.989 2.043 32.077 1.926 c
-32.166 1.808 32.228 1.665 32.268 1.5 c
-32.316 1.341 32.342 1.154 32.342 0.941 c
-32.342 -1.263 l
-h
-34.951 1.603 m
-34.951 -1.263 l
-34.054 -1.263 l
-34.054 1.603 l
-33.232 1.603 l
-33.232 2.22 l
-34.054 2.22 l
-34.054 2.485 l
-34.054 2.61 34.069 2.742 34.098 2.882 c
-34.135 3.018 34.205 3.135 34.304 3.234 c
-34.41 3.341 34.554 3.429 34.73 3.499 c
-34.907 3.565 35.131 3.602 35.407 3.602 c
-35.62 3.602 35.819 3.591 35.995 3.572 c
-36.17 3.55 36.322 3.532 36.45 3.514 c
-36.45 2.926 l
-36.322 2.944 36.178 2.959 36.024 2.97 c
-35.866 2.977 35.715 2.984 35.568 2.984 c
-35.44 2.984 35.337 2.97 35.26 2.94 c
-35.179 2.911 35.116 2.87 35.069 2.822 c
-35.017 2.771 34.984 2.708 34.965 2.631 c
-34.955 2.562 34.951 2.485 34.951 2.396 c
-34.951 2.22 l
-36.377 2.22 l
-36.377 1.603 l
-h
-39.467 -0.646 m
-40.599 -0.646 l
-40.599 -1.263 l
-37.292 -1.263 l
-37.292 -0.646 l
-38.556 -0.646 l
-38.556 1.603 l
-37.63 1.603 l
-37.63 2.22 l
-39.467 2.22 l
-h
-38.556 3.514 0.911 -0.676 re
-38.556 2.837 m
-42.954 -2.66 m
-42.738 -2.66 42.547 -2.634 42.381 -2.587 c
-42.212 -2.547 42.073 -2.484 41.955 -2.395 c
-41.837 -2.314 41.738 -2.219 41.661 -2.102 c
-41.591 -1.984 41.543 -1.855 41.514 -1.72 c
-42.41 -1.616 l
-42.447 -1.753 42.518 -1.859 42.616 -1.94 c
-42.712 -2.028 42.837 -2.072 42.984 -2.072 c
-43.072 -2.072 43.153 -2.057 43.234 -2.028 c
-43.311 -1.999 43.381 -1.944 43.44 -1.866 c
-43.499 -1.797 43.542 -1.705 43.572 -1.587 c
-43.609 -1.469 43.631 -1.323 43.631 -1.146 c
-43.631 -0.955 l
-43.631 -0.889 43.634 -0.83 43.646 -0.779 c
-43.646 -0.588 l
-43.631 -0.588 l
-43.532 -0.816 43.388 -0.977 43.204 -1.072 c
-43.017 -1.172 42.811 -1.219 42.587 -1.219 c
-42.381 -1.219 42.198 -1.182 42.044 -1.102 c
-41.896 -1.014 41.768 -0.897 41.661 -0.749 c
-41.562 -0.595 41.488 -0.411 41.441 -0.205 c
-41.389 0.008 41.367 0.243 41.367 0.5 c
-41.367 0.772 41.389 1.019 41.441 1.235 c
-41.5 1.449 41.58 1.632 41.691 1.779 c
-41.797 1.933 41.93 2.051 42.088 2.132 c
-42.242 2.22 42.429 2.264 42.646 2.264 c
-42.742 2.264 42.84 2.253 42.94 2.234 c
-43.035 2.213 43.123 2.18 43.204 2.132 c
-43.293 2.08 43.37 2.018 43.44 1.941 c
-43.517 1.86 43.58 1.768 43.631 1.661 c
-43.646 1.661 l
-43.646 1.808 l
-43.653 1.867 43.66 1.919 43.66 1.97 c
-43.667 2.029 43.675 2.077 43.675 2.117 c
-43.682 2.165 43.694 2.198 43.704 2.22 c
-44.557 2.22 l
-44.546 2.139 44.535 2.029 44.527 1.881 c
-44.527 1.411 l
-44.527 -1.161 l
-44.527 -1.414 44.49 -1.635 44.425 -1.822 c
-44.355 -2.006 44.251 -2.16 44.116 -2.278 c
-43.976 -2.403 43.811 -2.499 43.616 -2.557 c
-43.418 -2.624 43.197 -2.66 42.954 -2.66 c
-43.646 0.53 m
-43.646 0.743 43.619 0.919 43.572 1.058 c
-43.532 1.206 43.476 1.324 43.41 1.411 c
-43.351 1.5 43.282 1.559 43.204 1.588 c
-43.123 1.625 43.046 1.646 42.969 1.646 c
-42.87 1.646 42.778 1.621 42.69 1.573 c
-42.609 1.532 42.543 1.463 42.484 1.368 c
-42.433 1.279 42.389 1.162 42.352 1.015 c
-42.323 0.875 42.308 0.706 42.308 0.5 c
-42.308 0.125 42.366 -0.154 42.484 -0.338 c
-42.601 -0.514 42.763 -0.602 42.969 -0.602 c
-43.035 -0.602 43.109 -0.588 43.189 -0.558 c
-43.278 -0.521 43.351 -0.463 43.41 -0.382 c
-43.476 -0.293 43.532 -0.176 43.572 -0.029 c
-43.619 0.118 43.646 0.302 43.646 0.53 c
-50.135 0.838 1.867 -0.794 re
-50.135 0.044 m
-54.2 0.838 1.866 -0.794 re
-54.2 0.044 m
-59.201 -2.66 m
-58.983 -2.66 58.792 -2.634 58.628 -2.587 c
-58.458 -2.547 58.318 -2.484 58.201 -2.395 c
-58.083 -2.314 57.984 -2.219 57.907 -2.102 c
-57.838 -1.984 57.79 -1.855 57.76 -1.72 c
-58.657 -1.616 l
-58.694 -1.753 58.763 -1.859 58.863 -1.94 c
-58.958 -2.028 59.083 -2.072 59.23 -2.072 c
-59.318 -2.072 59.399 -2.057 59.48 -2.028 c
-59.557 -1.999 59.627 -1.944 59.686 -1.866 c
-59.744 -1.797 59.789 -1.705 59.818 -1.587 c
-59.855 -1.469 59.877 -1.323 59.877 -1.146 c
-59.877 -0.955 l
-59.877 -0.889 59.881 -0.83 59.891 -0.779 c
-59.891 -0.588 l
-59.877 -0.588 l
-59.777 -0.816 59.634 -0.977 59.451 -1.072 c
-59.263 -1.172 59.058 -1.219 58.833 -1.219 c
-58.628 -1.219 58.443 -1.182 58.289 -1.102 c
-58.142 -1.014 58.014 -0.897 57.907 -0.749 c
-57.807 -0.595 57.734 -0.411 57.687 -0.205 c
-57.635 0.008 57.613 0.243 57.613 0.5 c
-57.613 0.772 57.635 1.019 57.687 1.235 c
-57.745 1.449 57.826 1.632 57.936 1.779 c
-58.043 1.933 58.175 2.051 58.333 2.132 c
-58.488 2.22 58.675 2.264 58.892 2.264 c
-58.987 2.264 59.087 2.253 59.186 2.234 c
-59.282 2.213 59.37 2.18 59.451 2.132 c
-59.538 2.08 59.616 2.018 59.686 1.941 c
-59.763 1.86 59.825 1.768 59.877 1.661 c
-59.891 1.661 l
-59.891 1.808 l
-59.899 1.867 59.906 1.919 59.906 1.97 c
-59.914 2.029 59.921 2.077 59.921 2.117 c
-59.928 2.165 59.939 2.198 59.951 2.22 c
-60.803 2.22 l
-60.792 2.139 60.781 2.029 60.774 1.881 c
-60.774 1.411 l
-60.774 -1.161 l
-60.774 -1.414 60.737 -1.635 60.67 -1.822 c
-60.601 -2.006 60.498 -2.16 60.362 -2.278 c
-60.222 -2.403 60.057 -2.499 59.862 -2.557 c
-59.664 -2.624 59.443 -2.66 59.201 -2.66 c
-59.891 0.53 m
-59.891 0.743 59.866 0.919 59.818 1.058 c
-59.777 1.206 59.723 1.324 59.656 1.411 c
-59.598 1.5 59.528 1.559 59.451 1.588 c
-59.37 1.625 59.293 1.646 59.216 1.646 c
-59.116 1.646 59.024 1.621 58.936 1.573 c
-58.855 1.532 58.789 1.463 58.73 1.368 c
-58.679 1.279 58.634 1.162 58.598 1.015 c
-58.569 0.875 58.553 0.706 58.553 0.5 c
-58.553 0.125 58.613 -0.154 58.73 -0.338 c
-58.848 -0.514 59.01 -0.602 59.216 -0.602 c
-59.282 -0.602 59.355 -0.588 59.436 -0.558 c
-59.524 -0.521 59.598 -0.463 59.656 -0.382 c
-59.723 -0.293 59.777 -0.176 59.818 -0.029 c
-59.866 0.118 59.891 0.302 59.891 0.53 c
-63.835 -0.646 m
-64.967 -0.646 l
-64.967 -1.263 l
-61.659 -1.263 l
-61.659 -0.646 l
-62.923 -0.646 l
-62.923 2.897 l
-61.998 2.897 l
-61.998 3.514 l
-63.835 3.514 l
-h
-68.998 0.485 m
-68.998 0.21 68.961 -0.039 68.895 -0.264 c
-68.824 -0.481 68.722 -0.668 68.586 -0.823 c
-68.446 -0.98 68.27 -1.102 68.057 -1.19 c
-67.84 -1.278 67.586 -1.323 67.293 -1.323 c
-67.017 -1.323 66.771 -1.278 66.557 -1.19 c
-66.352 -1.102 66.179 -0.98 66.043 -0.823 c
-65.903 -0.668 65.801 -0.481 65.734 -0.264 c
-65.665 -0.039 65.632 0.21 65.632 0.485 c
-65.632 0.739 65.661 0.975 65.72 1.191 c
-65.786 1.415 65.888 1.607 66.029 1.764 c
-66.164 1.929 66.341 2.058 66.557 2.147 c
-66.771 2.234 67.028 2.278 67.322 2.278 c
-67.634 2.278 67.895 2.234 68.101 2.147 c
-68.314 2.058 68.487 1.929 68.616 1.764 c
-68.751 1.607 68.851 1.415 68.909 1.191 c
-68.968 0.975 68.998 0.739 68.998 0.485 c
-68.042 0.485 m
-68.042 0.691 68.028 0.867 67.999 1.015 c
-67.976 1.162 67.939 1.283 67.881 1.382 c
-67.822 1.478 67.748 1.548 67.66 1.588 c
-67.571 1.636 67.461 1.661 67.336 1.661 c
-67.072 1.661 66.881 1.563 66.763 1.368 c
-66.646 1.18 66.587 0.886 66.587 0.485 c
-66.587 0.063 66.646 -0.242 66.763 -0.426 c
-66.881 -0.613 67.058 -0.706 67.293 -0.706 c
-67.417 -0.706 67.531 -0.687 67.631 -0.646 c
-67.726 -0.598 67.807 -0.525 67.866 -0.426 c
-67.932 -0.33 67.976 -0.205 67.999 -0.058 c
-68.028 0.088 68.042 0.269 68.042 0.485 c
-69.854 -1.263 m
-69.854 -0.97 l
-69.861 -0.833 69.869 -0.675 69.869 -0.5 c
-69.869 3.514 l
-70.78 3.514 l
-70.78 2.234 l
-70.78 2.073 l
-70.78 1.897 l
-70.78 1.845 70.773 1.802 70.765 1.764 c
-70.765 1.676 l
-70.78 1.676 l
-70.827 1.783 70.89 1.875 70.971 1.956 c
-71.048 2.033 71.133 2.095 71.221 2.147 c
-71.309 2.195 71.401 2.228 71.5 2.249 c
-71.596 2.268 71.695 2.278 71.794 2.278 c
-72.007 2.278 72.194 2.234 72.352 2.147 c
-72.507 2.058 72.635 1.929 72.735 1.764 c
-72.841 1.607 72.919 1.415 72.97 1.191 c
-73.017 0.975 73.044 0.736 73.044 0.47 c
-73.044 0.214 73.015 -0.025 72.955 -0.249 c
-72.897 -0.467 72.812 -0.658 72.705 -0.823 c
-72.595 -0.98 72.463 -1.102 72.309 -1.19 c
-72.151 -1.278 71.97 -1.323 71.764 -1.323 c
-71.666 -1.323 71.567 -1.311 71.471 -1.294 c
-71.382 -1.271 71.294 -1.242 71.206 -1.19 c
-71.118 -1.132 71.037 -1.065 70.971 -0.984 c
-70.901 -0.907 70.839 -0.808 70.78 -0.69 c
-70.765 -0.69 l
-70.765 -0.852 l
-70.765 -0.911 70.758 -0.97 70.75 -1.028 c
-70.75 -1.08 70.743 -1.128 70.736 -1.176 c
-70.736 -1.215 70.729 -1.246 70.721 -1.263 c
-h
-70.765 0.5 m
-70.765 0.265 70.783 0.067 70.824 -0.087 c
-70.872 -0.246 70.931 -0.367 71 -0.455 c
-71.066 -0.544 71.14 -0.61 71.221 -0.646 c
-71.298 -0.687 71.375 -0.706 71.456 -0.706 c
-71.662 -0.706 71.816 -0.61 71.926 -0.411 c
-72.044 -0.216 72.103 0.078 72.103 0.47 c
-72.103 0.684 72.08 0.867 72.044 1.015 c
-72.015 1.169 71.97 1.294 71.912 1.382 c
-71.86 1.478 71.794 1.551 71.706 1.603 c
-71.625 1.65 71.537 1.676 71.442 1.676 c
-71.361 1.676 71.284 1.654 71.206 1.617 c
-71.126 1.577 71.052 1.515 70.985 1.426 c
-70.927 1.338 70.872 1.214 70.824 1.058 c
-70.783 0.912 70.765 0.724 70.765 0.5 c
-74.873 -1.323 m
-74.704 -1.323 74.554 -1.3 74.418 -1.263 c
-74.289 -1.215 74.175 -1.146 74.079 -1.058 c
-73.992 -0.97 73.921 -0.863 73.874 -0.735 c
-73.823 -0.598 73.8 -0.448 73.8 -0.278 c
-73.8 -0.073 73.834 0.096 73.904 0.235 c
-73.969 0.383 74.065 0.493 74.183 0.574 c
-74.308 0.662 74.451 0.724 74.609 0.765 c
-74.775 0.802 74.951 0.827 75.138 0.838 c
-75.858 0.853 l
-75.858 1.029 l
-75.858 1.147 75.847 1.25 75.829 1.338 c
-75.807 1.426 75.774 1.492 75.726 1.544 c
-75.685 1.603 75.638 1.64 75.579 1.661 c
-75.521 1.68 75.454 1.691 75.388 1.691 c
-75.318 1.691 75.255 1.68 75.197 1.661 c
-75.145 1.65 75.097 1.625 75.05 1.588 c
-75.01 1.559 74.976 1.507 74.947 1.441 c
-74.925 1.382 74.91 1.301 74.903 1.206 c
-73.962 1.25 l
-73.992 1.397 74.035 1.532 74.095 1.661 c
-74.16 1.786 74.256 1.897 74.374 1.985 c
-74.492 2.08 74.631 2.154 74.8 2.205 c
-74.976 2.253 75.182 2.278 75.417 2.278 c
-75.858 2.278 76.19 2.168 76.417 1.956 c
-76.652 1.75 76.77 1.441 76.77 1.029 c
-76.77 -0.235 l
-76.77 -0.455 l
-76.777 -0.514 76.792 -0.569 76.814 -0.617 c
-76.832 -0.658 76.861 -0.69 76.902 -0.72 c
-76.938 -0.742 76.99 -0.749 77.049 -0.749 c
-77.115 -0.749 77.185 -0.745 77.254 -0.735 c
-77.254 -1.219 l
-77.196 -1.23 77.141 -1.242 77.093 -1.249 c
-77.053 -1.26 77.013 -1.267 76.976 -1.278 c
-76.936 -1.286 76.891 -1.294 76.843 -1.294 c
-76.792 -1.3 76.733 -1.308 76.666 -1.308 c
-76.439 -1.308 76.273 -1.256 76.167 -1.146 c
-76.057 -1.028 75.995 -0.863 75.976 -0.646 c
-75.961 -0.646 l
-75.891 -0.756 75.822 -0.852 75.756 -0.941 c
-75.685 -1.021 75.608 -1.087 75.521 -1.146 c
-75.432 -1.205 75.333 -1.249 75.226 -1.278 c
-75.127 -1.308 75.01 -1.323 74.873 -1.323 c
-75.858 0.353 m
-75.432 0.339 l
-75.333 0.339 75.241 0.331 75.153 0.324 c
-75.072 0.313 75.006 0.287 74.947 0.25 c
-74.889 0.21 74.837 0.151 74.8 0.074 c
-74.76 0.004 74.741 -0.087 74.741 -0.205 c
-74.741 -0.374 74.775 -0.496 74.844 -0.573 c
-74.91 -0.654 75.01 -0.69 75.138 -0.69 c
-75.245 -0.69 75.344 -0.668 75.432 -0.617 c
-75.527 -0.569 75.608 -0.507 75.667 -0.426 c
-75.733 -0.349 75.785 -0.261 75.814 -0.161 c
-75.843 -0.055 75.858 0.059 75.858 0.177 c
-h
-80.08 -0.646 m
-81.212 -0.646 l
-81.212 -1.263 l
-77.905 -1.263 l
-77.905 -0.646 l
-79.17 -0.646 l
-79.17 2.897 l
-78.243 2.897 l
-78.243 3.514 l
-80.08 3.514 l
-h
-86.982 2.22 m
-86.982 0.265 l
-86.982 0.125 86.989 0 87.011 -0.118 c
-87.03 -0.228 87.063 -0.319 87.114 -0.396 c
-87.162 -0.477 87.221 -0.54 87.29 -0.588 c
-87.357 -0.627 87.441 -0.646 87.54 -0.646 c
-87.629 -0.646 87.71 -0.627 87.791 -0.588 c
-87.878 -0.54 87.952 -0.47 88.011 -0.382 c
-88.069 -0.286 88.113 -0.176 88.144 -0.058 c
-88.18 0.067 88.202 0.206 88.202 0.353 c
-88.202 2.22 l
-89.098 2.22 l
-89.098 -0.484 l
-89.098 -0.72 l
-89.106 -0.801 89.113 -0.878 89.113 -0.955 c
-89.113 -1.146 l
-89.121 -1.198 89.128 -1.234 89.128 -1.263 c
-88.275 -1.263 l
-88.265 -1.234 88.254 -1.198 88.246 -1.146 c
-88.246 -0.955 l
-88.246 -0.889 88.239 -0.819 88.231 -0.749 c
-88.231 -0.573 l
-88.217 -0.573 l
-88.099 -0.837 87.945 -1.028 87.761 -1.146 c
-87.585 -1.263 87.382 -1.323 87.159 -1.323 c
-86.953 -1.323 86.779 -1.286 86.644 -1.219 c
-86.504 -1.153 86.394 -1.058 86.305 -0.941 c
-86.225 -0.823 86.166 -0.687 86.129 -0.529 c
-86.1 -0.363 86.085 -0.187 86.085 0 c
-86.085 2.22 l
-h
-93.262 -0.249 m
-93.262 -0.419 93.222 -0.569 93.144 -0.706 c
-93.075 -0.833 92.971 -0.947 92.836 -1.043 c
-92.707 -1.132 92.545 -1.201 92.351 -1.249 c
-92.163 -1.296 91.947 -1.323 91.704 -1.323 c
-91.477 -1.323 91.278 -1.308 91.101 -1.278 c
-90.925 -1.249 90.767 -1.201 90.631 -1.132 c
-90.492 -1.055 90.382 -0.955 90.293 -0.837 c
-90.205 -0.72 90.135 -0.573 90.087 -0.396 c
-90.895 -0.278 l
-90.914 -0.378 90.943 -0.455 90.984 -0.514 c
-91.032 -0.573 91.09 -0.617 91.16 -0.646 c
-91.226 -0.675 91.307 -0.702 91.396 -0.72 c
-91.483 -0.731 91.587 -0.735 91.704 -0.735 c
-91.799 -0.735 91.895 -0.731 91.984 -0.72 c
-92.071 -0.702 92.148 -0.675 92.219 -0.646 c
-92.285 -0.617 92.336 -0.58 92.366 -0.529 c
-92.402 -0.481 92.424 -0.419 92.424 -0.338 c
-92.424 -0.242 92.395 -0.168 92.336 -0.118 c
-92.285 -0.07 92.219 -0.029 92.13 0 c
-92.042 0.038 91.932 0.067 91.807 0.088 c
-91.689 0.118 91.557 0.148 91.41 0.177 c
-91.271 0.214 91.13 0.254 90.984 0.294 c
-90.844 0.342 90.719 0.405 90.602 0.485 c
-90.492 0.563 90.403 0.662 90.337 0.78 c
-90.267 0.897 90.234 1.048 90.234 1.235 c
-90.234 1.389 90.263 1.532 90.322 1.661 c
-90.388 1.798 90.484 1.912 90.602 1.999 c
-90.727 2.087 90.885 2.154 91.072 2.205 c
-91.255 2.253 91.469 2.278 91.704 2.278 c
-91.888 2.278 92.065 2.257 92.233 2.22 c
-92.398 2.191 92.545 2.135 92.674 2.058 c
-92.799 1.989 92.909 1.889 92.998 1.764 c
-93.085 1.646 93.144 1.503 93.174 1.338 c
-92.38 1.264 l
-92.358 1.341 92.329 1.405 92.292 1.455 c
-92.252 1.515 92.204 1.559 92.144 1.588 c
-92.094 1.625 92.031 1.65 91.954 1.661 c
-91.873 1.669 91.793 1.676 91.704 1.676 c
-91.487 1.676 91.325 1.646 91.219 1.588 c
-91.109 1.536 91.057 1.449 91.057 1.324 c
-91.057 1.243 91.076 1.18 91.116 1.133 c
-91.164 1.081 91.226 1.044 91.307 1.015 c
-91.396 0.985 91.491 0.956 91.601 0.927 c
-91.708 0.904 91.829 0.882 91.969 0.853 c
-92.123 0.823 92.281 0.784 92.439 0.736 c
-92.593 0.684 92.733 0.622 92.85 0.545 c
-92.969 0.464 93.064 0.36 93.144 0.235 c
-93.222 0.107 93.262 -0.055 93.262 -0.249 c
-95.783 -1.323 m
-95.525 -1.323 95.298 -1.286 95.092 -1.219 c
-94.887 -1.142 94.71 -1.028 94.563 -0.881 c
-94.416 -0.727 94.299 -0.536 94.21 -0.309 c
-94.129 -0.084 94.093 0.181 94.093 0.485 c
-94.093 0.817 94.137 1.096 94.224 1.324 c
-94.32 1.559 94.449 1.742 94.607 1.881 c
-94.772 2.018 94.96 2.117 95.165 2.176 c
-95.371 2.242 95.581 2.278 95.797 2.278 c
-96.069 2.278 96.304 2.228 96.503 2.132 c
-96.709 2.043 96.875 1.912 97.003 1.735 c
-97.139 1.566 97.239 1.36 97.297 1.118 c
-97.363 0.882 97.399 0.618 97.399 0.324 c
-97.399 0.31 l
-95.033 0.31 l
-95.033 0.162 95.048 0.023 95.078 -0.103 c
-95.114 -0.231 95.169 -0.345 95.24 -0.44 c
-95.305 -0.529 95.39 -0.598 95.489 -0.646 c
-95.585 -0.698 95.699 -0.72 95.827 -0.72 c
-95.982 -0.72 96.121 -0.687 96.239 -0.617 c
-96.364 -0.55 96.452 -0.448 96.503 -0.309 c
-97.341 -0.382 l
-97.312 -0.481 97.256 -0.588 97.179 -0.706 c
-97.098 -0.816 96.996 -0.918 96.871 -1.014 c
-96.753 -1.102 96.599 -1.176 96.415 -1.234 c
-96.239 -1.294 96.026 -1.323 95.783 -1.323 c
-95.783 1.706 m
-95.695 1.706 95.606 1.691 95.518 1.661 c
-95.43 1.632 95.35 1.58 95.283 1.515 c
-95.213 1.445 95.155 1.357 95.107 1.25 c
-95.066 1.139 95.048 1.015 95.048 0.867 c
-96.518 0.867 l
-96.518 1.004 96.493 1.125 96.445 1.235 c
-96.404 1.341 96.349 1.43 96.283 1.5 c
-96.224 1.566 96.15 1.617 96.063 1.646 c
-95.974 1.684 95.878 1.706 95.783 1.706 c
-101.299 1.47 m
-101.2 1.478 101.097 1.489 100.99 1.5 c
-100.88 1.518 100.759 1.529 100.622 1.529 c
-100.446 1.529 100.288 1.489 100.152 1.411 c
-100.013 1.341 99.895 1.243 99.799 1.118 c
-99.711 0.989 99.641 0.842 99.593 0.676 c
-99.554 0.508 99.535 0.331 99.535 0.148 c
-99.535 -1.263 l
-98.638 -1.263 l
-98.638 0.985 l
-98.638 1.11 98.627 1.235 98.609 1.353 c
-98.598 1.478 98.583 1.596 98.565 1.706 c
-98.554 1.823 98.539 1.919 98.521 1.999 c
-98.498 2.087 98.48 2.161 98.462 2.22 c
-99.344 2.22 l
-99.351 2.168 99.362 2.117 99.373 2.058 c
-99.392 1.999 99.406 1.933 99.417 1.867 c
-99.435 1.808 99.45 1.742 99.462 1.676 c
-99.469 1.607 99.479 1.544 99.491 1.485 c
-99.506 1.485 l
-99.542 1.603 99.593 1.709 99.653 1.808 c
-99.718 1.904 99.799 1.989 99.888 2.058 c
-99.976 2.124 100.079 2.18 100.196 2.22 c
-100.321 2.257 100.468 2.278 100.637 2.278 c
-100.763 2.278 100.88 2.272 100.99 2.264 c
-101.108 2.253 101.21 2.238 101.299 2.22 c
-h
-103.404 -0.278 0.927 -0.985 re
-103.404 -1.263 m
-107.965 -1.323 m
-107.707 -1.323 107.479 -1.286 107.274 -1.219 c
-107.068 -1.142 106.892 -1.028 106.745 -0.881 c
-106.598 -0.727 106.48 -0.536 106.392 -0.309 c
-106.311 -0.084 106.274 0.181 106.274 0.485 c
-106.274 0.817 106.319 1.096 106.407 1.324 c
-106.502 1.559 106.631 1.742 106.789 1.881 c
-106.955 2.018 107.142 2.117 107.348 2.176 c
-107.553 2.242 107.763 2.278 107.98 2.278 c
-108.252 2.278 108.487 2.228 108.686 2.132 c
-108.891 2.043 109.056 1.912 109.185 1.735 c
-109.32 1.566 109.42 1.36 109.479 1.118 c
-109.545 0.882 109.582 0.618 109.582 0.324 c
-109.582 0.31 l
-107.215 0.31 l
-107.215 0.162 107.23 0.023 107.259 -0.103 c
-107.296 -0.231 107.352 -0.345 107.421 -0.44 c
-107.487 -0.529 107.572 -0.598 107.67 -0.646 c
-107.766 -0.698 107.88 -0.72 108.009 -0.72 c
-108.163 -0.72 108.303 -0.687 108.42 -0.617 c
-108.545 -0.55 108.634 -0.448 108.686 -0.309 c
-109.523 -0.382 l
-109.494 -0.481 109.438 -0.588 109.361 -0.706 c
-109.28 -0.816 109.178 -0.918 109.052 -1.014 c
-108.935 -1.102 108.781 -1.176 108.597 -1.234 c
-108.42 -1.294 108.208 -1.323 107.965 -1.323 c
-107.965 1.706 m
-107.876 1.706 107.788 1.691 107.701 1.661 c
-107.612 1.632 107.531 1.58 107.465 1.515 c
-107.395 1.445 107.336 1.357 107.288 1.25 c
-107.248 1.139 107.23 1.015 107.23 0.867 c
-108.7 0.867 l
-108.7 1.004 108.674 1.125 108.626 1.235 c
-108.586 1.341 108.53 1.43 108.464 1.5 c
-108.406 1.566 108.333 1.617 108.244 1.646 c
-108.156 1.684 108.06 1.706 107.965 1.706 c
-111.628 -1.263 m
-111.628 0.853 l
-111.628 1.019 111.622 1.154 111.614 1.264 c
-111.603 1.372 111.585 1.455 111.555 1.515 c
-111.533 1.58 111.504 1.632 111.467 1.661 c
-111.437 1.691 111.397 1.706 111.35 1.706 c
-111.29 1.706 111.235 1.676 111.188 1.617 c
-111.147 1.566 111.114 1.492 111.084 1.397 c
-111.055 1.309 111.03 1.195 111.011 1.058 c
-111 0.919 110.997 0.769 110.997 0.603 c
-110.997 -1.263 l
-110.247 -1.263 l
-110.247 1.47 l
-110.247 1.706 l
-110.247 1.926 l
-110.247 2.003 110.24 2.066 110.232 2.117 c
-110.232 2.22 l
-110.908 2.22 l
-110.908 2.132 l
-110.908 1.985 l
-110.916 1.926 110.923 1.867 110.923 1.808 c
-110.923 1.646 l
-110.938 1.646 l
-110.956 1.735 110.986 1.812 111.026 1.881 c
-111.063 1.96 111.107 2.029 111.158 2.087 c
-111.217 2.147 111.283 2.191 111.364 2.22 c
-111.441 2.257 111.529 2.278 111.628 2.278 c
-111.813 2.278 111.952 2.224 112.04 2.117 c
-112.135 2.018 112.206 1.86 112.246 1.646 c
-112.26 1.646 l
-112.297 1.742 112.337 1.831 112.378 1.912 c
-112.426 1.989 112.481 2.051 112.54 2.103 c
-112.599 2.161 112.665 2.205 112.746 2.234 c
-112.823 2.264 112.911 2.278 113.01 2.278 c
-113.146 2.278 113.26 2.253 113.349 2.205 c
-113.436 2.154 113.503 2.08 113.554 1.985 c
-113.613 1.885 113.65 1.757 113.671 1.603 c
-113.702 1.455 113.716 1.272 113.716 1.058 c
-113.716 -1.263 l
-112.996 -1.263 l
-112.996 0.853 l
-112.996 1.019 112.988 1.154 112.981 1.264 c
-112.97 1.372 112.952 1.455 112.922 1.515 c
-112.9 1.58 112.871 1.632 112.834 1.661 c
-112.804 1.691 112.764 1.706 112.717 1.706 c
-112.599 1.706 112.503 1.617 112.437 1.441 c
-112.378 1.272 112.349 1.015 112.349 0.662 c
-112.349 -1.263 l
-h
-115.487 -1.323 m
-115.318 -1.323 115.167 -1.3 115.032 -1.263 c
-114.903 -1.215 114.789 -1.146 114.693 -1.058 c
-114.606 -0.97 114.535 -0.863 114.487 -0.735 c
-114.436 -0.598 114.414 -0.448 114.414 -0.278 c
-114.414 -0.073 114.448 0.096 114.517 0.235 c
-114.583 0.383 114.679 0.493 114.797 0.574 c
-114.921 0.662 115.065 0.724 115.223 0.765 c
-115.388 0.802 115.564 0.827 115.751 0.838 c
-116.472 0.853 l
-116.472 1.029 l
-116.472 1.147 116.461 1.25 116.443 1.338 c
-116.42 1.426 116.387 1.492 116.339 1.544 c
-116.299 1.603 116.252 1.64 116.193 1.661 c
-116.133 1.68 116.067 1.691 116.002 1.691 c
-115.932 1.691 115.869 1.68 115.811 1.661 c
-115.759 1.65 115.711 1.625 115.663 1.588 c
-115.623 1.559 115.59 1.507 115.56 1.441 c
-115.539 1.382 115.524 1.301 115.516 1.206 c
-114.575 1.25 l
-114.606 1.397 114.649 1.532 114.708 1.661 c
-114.774 1.786 114.87 1.897 114.988 1.985 c
-115.105 2.08 115.244 2.154 115.414 2.205 c
-115.59 2.253 115.796 2.278 116.031 2.278 c
-116.472 2.278 116.802 2.168 117.031 1.956 c
-117.266 1.75 117.384 1.441 117.384 1.029 c
-117.384 -0.235 l
-117.384 -0.455 l
-117.39 -0.514 117.405 -0.569 117.428 -0.617 c
-117.446 -0.658 117.475 -0.69 117.515 -0.72 c
-117.552 -0.742 117.604 -0.749 117.663 -0.749 c
-117.729 -0.749 117.798 -0.745 117.868 -0.735 c
-117.868 -1.219 l
-117.81 -1.23 117.754 -1.242 117.706 -1.249 c
-117.666 -1.26 117.625 -1.267 117.589 -1.278 c
-117.548 -1.286 117.505 -1.294 117.457 -1.294 c
-117.405 -1.3 117.347 -1.308 117.28 -1.308 c
-117.052 -1.308 116.887 -1.256 116.781 -1.146 c
-116.67 -1.028 116.607 -0.863 116.59 -0.646 c
-116.575 -0.646 l
-116.505 -0.756 116.435 -0.852 116.369 -0.941 c
-116.299 -1.021 116.222 -1.087 116.133 -1.146 c
-116.046 -1.205 115.946 -1.249 115.84 -1.278 c
-115.741 -1.308 115.623 -1.323 115.487 -1.323 c
-116.472 0.353 m
-116.046 0.339 l
-115.946 0.339 115.855 0.331 115.766 0.324 c
-115.686 0.313 115.62 0.287 115.56 0.25 c
-115.502 0.21 115.45 0.151 115.414 0.074 c
-115.373 0.004 115.354 -0.087 115.354 -0.205 c
-115.354 -0.374 115.388 -0.496 115.458 -0.573 c
-115.524 -0.654 115.623 -0.69 115.751 -0.69 c
-115.859 -0.69 115.957 -0.668 116.046 -0.617 c
-116.141 -0.569 116.222 -0.507 116.281 -0.426 c
-116.347 -0.349 116.399 -0.261 116.428 -0.161 c
-116.457 -0.055 116.472 0.059 116.472 0.177 c
-h
-120.694 -0.646 m
-121.826 -0.646 l
-121.826 -1.263 l
-118.519 -1.263 l
-118.519 -0.646 l
-119.782 -0.646 l
-119.782 1.603 l
-118.857 1.603 l
-118.857 2.22 l
-120.694 2.22 l
-h
-119.782 3.514 0.912 -0.676 re
-119.782 2.837 m
-124.755 -0.646 m
-125.887 -0.646 l
-125.887 -1.263 l
-122.579 -1.263 l
-122.579 -0.646 l
-123.844 -0.646 l
-123.844 2.897 l
-122.917 2.897 l
-122.917 3.514 l
-124.755 3.514 l
-h
-133.346 1.455 m
-132.715 1.455 l
-132.582 3.514 l
-133.479 3.514 l
-h
-131.877 1.455 m
-131.244 1.455 l
-131.127 3.514 l
-131.994 3.514 l
-h
-136.764 -1.44 m
-136.683 -1.646 136.602 -1.822 136.514 -1.969 c
-136.434 -2.123 136.341 -2.248 136.235 -2.337 c
-136.124 -2.432 136.007 -2.506 135.882 -2.557 c
-135.753 -2.605 135.603 -2.63 135.426 -2.63 c
-135.327 -2.63 135.224 -2.624 135.117 -2.616 c
-135.019 -2.616 134.926 -2.605 134.838 -2.587 c
-134.838 -1.94 l
-134.857 -1.947 134.882 -1.955 134.911 -1.955 c
-135 -1.955 l
-135.037 -1.961 135.067 -1.969 135.088 -1.969 c
-135.177 -1.969 l
-135.264 -1.969 135.341 -1.959 135.412 -1.94 c
-135.478 -1.918 135.537 -1.884 135.588 -1.837 c
-135.647 -1.797 135.698 -1.738 135.75 -1.66 c
-135.798 -1.591 135.842 -1.499 135.882 -1.381 c
-135.941 -1.234 l
-134.5 2.22 l
-135.456 2.22 l
-136.073 0.515 l
-136.081 0.493 136.091 0.456 136.102 0.397 c
-136.121 0.346 136.139 0.283 136.162 0.206 c
-136.191 0.136 136.212 0.063 136.235 -0.014 c
-136.264 -0.095 136.286 -0.172 136.308 -0.249 c
-136.326 -0.319 136.341 -0.382 136.353 -0.44 c
-136.371 -0.492 136.386 -0.529 136.397 -0.558 c
-136.397 -0.529 136.4 -0.492 136.411 -0.44 c
-136.43 -0.382 136.448 -0.319 136.47 -0.249 c
-136.488 -0.183 136.507 -0.11 136.529 -0.029 c
-136.558 0.048 136.577 0.121 136.588 0.192 c
-136.606 0.258 136.625 0.324 136.646 0.383 c
-136.665 0.441 136.679 0.485 136.69 0.515 c
-137.263 2.22 l
-138.204 2.22 l
-h
-142.103 0.485 m
-142.103 0.21 142.067 -0.039 142.001 -0.264 c
-141.93 -0.481 141.828 -0.668 141.691 -0.823 c
-141.552 -0.98 141.376 -1.102 141.163 -1.19 c
-140.946 -1.278 140.692 -1.323 140.398 -1.323 c
-140.122 -1.323 139.877 -1.278 139.663 -1.19 c
-139.457 -1.102 139.285 -0.98 139.149 -0.823 c
-139.009 -0.668 138.907 -0.481 138.84 -0.264 c
-138.77 -0.039 138.737 0.21 138.737 0.485 c
-138.737 0.739 138.767 0.975 138.826 1.191 c
-138.892 1.415 138.994 1.607 139.134 1.764 c
-139.27 1.929 139.447 2.058 139.663 2.147 c
-139.877 2.234 140.133 2.278 140.428 2.278 c
-140.74 2.278 141.001 2.234 141.207 2.147 c
-141.419 2.058 141.593 1.929 141.721 1.764 c
-141.857 1.607 141.957 1.415 142.015 1.191 c
-142.074 0.975 142.103 0.739 142.103 0.485 c
-141.148 0.485 m
-141.148 0.691 141.133 0.867 141.103 1.015 c
-141.082 1.162 141.045 1.283 140.986 1.382 c
-140.927 1.478 140.854 1.548 140.766 1.588 c
-140.677 1.636 140.567 1.661 140.442 1.661 c
-140.178 1.661 139.987 1.563 139.869 1.368 c
-139.752 1.18 139.692 0.886 139.692 0.485 c
-139.692 0.063 139.752 -0.242 139.869 -0.426 c
-139.987 -0.613 140.163 -0.706 140.398 -0.706 c
-140.523 -0.706 140.637 -0.687 140.736 -0.646 c
-140.831 -0.598 140.912 -0.525 140.972 -0.426 c
-141.038 -0.33 141.082 -0.205 141.103 -0.058 c
-141.133 0.088 141.148 0.269 141.148 0.485 c
-143.842 2.22 m
-143.842 0.265 l
-143.842 0.125 143.848 0 143.871 -0.118 c
-143.889 -0.228 143.923 -0.319 143.974 -0.396 c
-144.022 -0.477 144.081 -0.54 144.15 -0.588 c
-144.216 -0.627 144.301 -0.646 144.4 -0.646 c
-144.488 -0.646 144.569 -0.627 144.65 -0.588 c
-144.738 -0.54 144.812 -0.47 144.87 -0.382 c
-144.929 -0.286 144.974 -0.176 145.003 -0.058 c
-145.039 0.067 145.061 0.206 145.061 0.353 c
-145.061 2.22 l
-145.959 2.22 l
-145.959 -0.484 l
-145.959 -0.72 l
-145.965 -0.801 145.973 -0.878 145.973 -0.955 c
-145.973 -1.146 l
-145.98 -1.198 145.988 -1.234 145.988 -1.263 c
-145.135 -1.263 l
-145.124 -1.234 145.113 -1.198 145.105 -1.146 c
-145.105 -0.955 l
-145.105 -0.889 145.099 -0.819 145.091 -0.749 c
-145.091 -0.573 l
-145.076 -0.573 l
-144.959 -0.837 144.804 -1.028 144.621 -1.146 c
-144.444 -1.263 144.242 -1.323 144.018 -1.323 c
-143.812 -1.323 143.64 -1.286 143.503 -1.219 c
-143.364 -1.153 143.254 -1.058 143.165 -0.941 c
-143.085 -0.823 143.025 -0.687 142.989 -0.529 c
-142.959 -0.363 142.944 -0.187 142.944 0 c
-142.944 2.22 l
-h
-150.387 1.162 m
-150.387 0.857 150.36 0.574 150.313 0.31 c
-150.273 0.052 150.21 -0.168 150.121 -0.353 c
-150.04 -0.529 149.938 -0.672 149.813 -0.779 c
-149.695 -0.878 149.556 -0.926 149.402 -0.926 c
-149.342 -0.926 149.284 -0.922 149.225 -0.911 c
-149.166 -0.893 149.115 -0.863 149.078 -0.823 c
-149.038 -0.786 149.005 -0.735 148.975 -0.675 c
-148.953 -0.61 148.945 -0.525 148.945 -0.426 c
-148.945 -0.396 l
-148.945 -0.353 l
-148.945 -0.309 l
-148.953 -0.29 148.96 -0.275 148.96 -0.264 c
-148.931 -0.264 l
-148.902 -0.353 148.862 -0.436 148.814 -0.514 c
-148.762 -0.595 148.704 -0.668 148.637 -0.735 c
-148.578 -0.793 148.509 -0.845 148.432 -0.881 c
-148.351 -0.911 148.27 -0.926 148.181 -0.926 c
-148.041 -0.926 147.924 -0.893 147.829 -0.823 c
-147.74 -0.756 147.667 -0.668 147.609 -0.558 c
-147.557 -0.44 147.52 -0.309 147.491 -0.161 c
-147.468 -0.007 147.461 0.151 147.461 0.31 c
-147.461 0.474 147.468 0.636 147.491 0.794 c
-147.52 0.948 147.553 1.103 147.594 1.25 c
-147.642 1.397 147.7 1.532 147.769 1.661 c
-147.836 1.786 147.917 1.897 148.005 1.985 c
-148.093 2.073 148.189 2.139 148.299 2.191 c
-148.405 2.249 148.519 2.278 148.637 2.278 c
-148.714 2.278 148.785 2.264 148.843 2.234 c
-148.902 2.205 148.949 2.165 148.99 2.117 c
-149.038 2.066 149.07 2.007 149.093 1.941 c
-149.122 1.871 149.144 1.798 149.166 1.721 c
-149.181 1.721 l
-149.284 2.205 l
-149.725 2.205 l
-149.402 0.574 l
-149.379 0.485 149.361 0.397 149.342 0.31 c
-149.332 0.221 149.321 0.136 149.313 0.059 c
-149.302 -0.022 149.292 -0.095 149.284 -0.161 c
-149.273 -0.22 149.269 -0.275 149.269 -0.323 c
-149.269 -0.374 149.273 -0.411 149.284 -0.44 c
-149.292 -0.47 149.302 -0.496 149.313 -0.514 c
-149.332 -0.525 149.35 -0.536 149.372 -0.544 c
-149.431 -0.544 l
-149.508 -0.544 149.581 -0.507 149.651 -0.426 c
-149.718 -0.338 149.772 -0.22 149.813 -0.073 c
-149.861 0.074 149.894 0.25 149.916 0.456 c
-149.945 0.669 149.96 0.904 149.96 1.162 c
-149.96 1.426 149.93 1.676 149.872 1.912 c
-149.82 2.154 149.743 2.367 149.637 2.544 c
-149.537 2.72 149.409 2.856 149.255 2.955 c
-149.097 3.051 148.92 3.102 148.725 3.102 c
-148.549 3.102 148.388 3.065 148.24 2.999 c
-148.101 2.94 147.975 2.852 147.858 2.735 c
-147.74 2.617 147.638 2.473 147.549 2.309 c
-147.461 2.139 147.388 1.956 147.329 1.75 c
-147.27 1.551 147.218 1.338 147.181 1.103 c
-147.152 0.875 147.138 0.636 147.138 0.383 c
-147.138 0.067 147.167 -0.22 147.226 -0.484 c
-147.293 -0.749 147.388 -0.98 147.505 -1.176 c
-147.623 -1.359 147.763 -1.502 147.931 -1.602 c
-148.097 -1.708 148.288 -1.764 148.505 -1.764 c
-148.629 -1.764 148.747 -1.749 148.858 -1.72 c
-148.964 -1.69 149.067 -1.649 149.166 -1.602 c
-149.261 -1.562 149.357 -1.514 149.446 -1.454 c
-149.533 -1.396 149.614 -1.326 149.695 -1.249 c
-149.916 -1.572 l
-149.828 -1.649 149.728 -1.723 149.622 -1.793 c
-149.523 -1.87 149.409 -1.932 149.284 -1.984 c
-149.166 -2.042 149.038 -2.087 148.902 -2.117 c
-148.773 -2.153 148.629 -2.175 148.475 -2.175 c
-148.199 -2.175 147.954 -2.109 147.74 -1.984 c
-147.524 -1.866 147.336 -1.693 147.181 -1.469 c
-147.023 -1.256 146.906 -0.992 146.829 -0.675 c
-146.748 -0.353 146.711 0 146.711 0.383 c
-146.711 0.831 146.755 1.25 146.844 1.632 c
-146.932 2.014 147.057 2.342 147.226 2.617 c
-147.403 2.9 147.611 3.12 147.858 3.279 c
-148.112 3.433 148.402 3.514 148.725 3.514 c
-149.008 3.514 149.255 3.448 149.46 3.323 c
-149.666 3.194 149.835 3.021 149.975 2.808 c
-150.111 2.591 150.214 2.342 150.283 2.058 c
-150.35 1.771 150.387 1.474 150.387 1.162 c
-148.99 1.264 m
-148.99 1.478 148.96 1.636 148.902 1.735 c
-148.843 1.831 148.754 1.881 148.637 1.881 c
-148.527 1.881 148.432 1.831 148.343 1.735 c
-148.262 1.636 148.197 1.515 148.137 1.368 c
-148.079 1.22 148.035 1.052 148.005 0.867 c
-147.975 0.68 147.961 0.493 147.961 0.31 c
-147.961 0 l
-147.968 -0.099 147.983 -0.187 148.005 -0.264 c
-148.035 -0.345 148.068 -0.407 148.108 -0.455 c
-148.145 -0.507 148.197 -0.529 148.255 -0.529 c
-148.332 -0.529 148.405 -0.507 148.475 -0.455 c
-148.542 -0.396 148.608 -0.319 148.667 -0.22 c
-148.725 -0.114 148.773 0.015 148.814 0.162 c
-148.862 0.31 148.895 0.47 148.916 0.647 c
-148.924 0.684 148.935 0.736 148.945 0.794 c
-148.953 0.853 148.96 0.912 148.96 0.971 c
-148.968 1.029 148.975 1.081 148.975 1.133 c
-148.982 1.18 148.99 1.224 148.99 1.264 c
-152.639 -1.323 m
-152.382 -1.323 152.154 -1.286 151.948 -1.219 c
-151.742 -1.142 151.566 -1.028 151.419 -0.881 c
-151.272 -0.727 151.154 -0.536 151.066 -0.309 c
-150.985 -0.084 150.948 0.181 150.948 0.485 c
-150.948 0.817 150.992 1.096 151.081 1.324 c
-151.176 1.559 151.305 1.742 151.463 1.881 c
-151.628 2.018 151.816 2.117 152.022 2.176 c
-152.228 2.242 152.436 2.278 152.654 2.278 c
-152.926 2.278 153.161 2.228 153.359 2.132 c
-153.565 2.043 153.73 1.912 153.859 1.735 c
-153.995 1.566 154.094 1.36 154.153 1.118 c
-154.219 0.882 154.256 0.618 154.256 0.324 c
-154.256 0.31 l
-151.889 0.31 l
-151.889 0.162 151.904 0.023 151.933 -0.103 c
-151.97 -0.231 152.025 -0.345 152.095 -0.44 c
-152.161 -0.529 152.245 -0.598 152.345 -0.646 c
-152.44 -0.698 152.554 -0.72 152.683 -0.72 c
-152.837 -0.72 152.977 -0.687 153.095 -0.617 c
-153.219 -0.55 153.308 -0.448 153.359 -0.309 c
-154.197 -0.382 l
-154.167 -0.481 154.113 -0.588 154.036 -0.706 c
-153.955 -0.816 153.851 -0.918 153.726 -1.014 c
-153.609 -1.102 153.454 -1.176 153.271 -1.234 c
-153.095 -1.294 152.881 -1.323 152.639 -1.323 c
-152.639 1.706 m
-152.55 1.706 152.463 1.691 152.374 1.661 c
-152.286 1.632 152.205 1.58 152.139 1.515 c
-152.07 1.445 152.01 1.357 151.962 1.25 c
-151.922 1.139 151.904 1.015 151.904 0.867 c
-153.373 0.867 l
-153.373 1.004 153.348 1.125 153.3 1.235 c
-153.26 1.341 153.205 1.43 153.138 1.5 c
-153.08 1.566 153.007 1.617 152.918 1.646 c
-152.83 1.684 152.735 1.706 152.639 1.706 c
-157.497 -1.263 m
-156.659 0 l
-155.806 -1.263 l
-154.851 -1.263 l
-156.159 0.53 l
-154.91 2.22 l
-155.88 2.22 l
-156.659 1.073 l
-157.423 2.22 l
-158.408 2.22 l
-157.159 0.545 l
-158.482 -1.263 l
-h
-160.161 -1.323 m
-159.992 -1.323 159.841 -1.3 159.706 -1.263 c
-159.577 -1.215 159.463 -1.146 159.368 -1.058 c
-159.279 -0.97 159.21 -0.863 159.162 -0.735 c
-159.11 -0.598 159.088 -0.448 159.088 -0.278 c
-159.088 -0.073 159.121 0.096 159.191 0.235 c
-159.257 0.383 159.353 0.493 159.47 0.574 c
-159.595 0.662 159.738 0.724 159.897 0.765 c
-160.062 0.802 160.238 0.827 160.426 0.838 c
-161.146 0.853 l
-161.146 1.029 l
-161.146 1.147 161.135 1.25 161.117 1.338 c
-161.094 1.426 161.061 1.492 161.014 1.544 c
-160.974 1.603 160.926 1.64 160.866 1.661 c
-160.808 1.68 160.741 1.691 160.675 1.691 c
-160.606 1.691 160.544 1.68 160.484 1.661 c
-160.433 1.65 160.386 1.625 160.338 1.588 c
-160.297 1.559 160.264 1.507 160.234 1.441 c
-160.213 1.382 160.198 1.301 160.191 1.206 c
-159.25 1.25 l
-159.279 1.397 159.324 1.532 159.382 1.661 c
-159.448 1.786 159.544 1.897 159.661 1.985 c
-159.779 2.08 159.918 2.154 160.087 2.205 c
-160.264 2.253 160.469 2.278 160.705 2.278 c
-161.146 2.278 161.477 2.168 161.705 1.956 c
-161.94 1.75 162.057 1.441 162.057 1.029 c
-162.057 -0.235 l
-162.057 -0.455 l
-162.065 -0.514 162.079 -0.569 162.102 -0.617 c
-162.119 -0.658 162.15 -0.69 162.19 -0.72 c
-162.227 -0.742 162.278 -0.749 162.337 -0.749 c
-162.403 -0.749 162.472 -0.745 162.543 -0.735 c
-162.543 -1.219 l
-162.484 -1.23 162.428 -1.242 162.381 -1.249 c
-162.341 -1.26 162.3 -1.267 162.263 -1.278 c
-162.223 -1.286 162.179 -1.294 162.131 -1.294 c
-162.079 -1.3 162.021 -1.308 161.955 -1.308 c
-161.726 -1.308 161.562 -1.256 161.454 -1.146 c
-161.344 -1.028 161.282 -0.863 161.263 -0.646 c
-161.249 -0.646 l
-161.179 -0.756 161.109 -0.852 161.043 -0.941 c
-160.974 -1.021 160.897 -1.087 160.808 -1.146 c
-160.72 -1.205 160.621 -1.249 160.514 -1.278 c
-160.415 -1.308 160.297 -1.323 160.161 -1.323 c
-161.146 0.353 m
-160.72 0.339 l
-160.621 0.339 160.529 0.331 160.44 0.324 c
-160.359 0.313 160.294 0.287 160.234 0.25 c
-160.176 0.21 160.124 0.151 160.087 0.074 c
-160.047 0.004 160.029 -0.087 160.029 -0.205 c
-160.029 -0.374 160.062 -0.496 160.132 -0.573 c
-160.198 -0.654 160.297 -0.69 160.426 -0.69 c
-160.532 -0.69 160.631 -0.668 160.72 -0.617 c
-160.816 -0.569 160.897 -0.507 160.955 -0.426 c
-161.021 -0.349 161.072 -0.261 161.102 -0.161 c
-161.132 -0.055 161.146 0.059 161.146 0.177 c
-h
-164.427 -1.263 m
-164.427 0.853 l
-164.427 1.019 164.421 1.154 164.413 1.264 c
-164.402 1.372 164.384 1.455 164.354 1.515 c
-164.332 1.58 164.303 1.632 164.266 1.661 c
-164.236 1.691 164.196 1.706 164.149 1.706 c
-164.089 1.706 164.034 1.676 163.987 1.617 c
-163.946 1.566 163.913 1.492 163.883 1.397 c
-163.854 1.309 163.829 1.195 163.81 1.058 c
-163.799 0.919 163.796 0.769 163.796 0.603 c
-163.796 -1.263 l
-163.046 -1.263 l
-163.046 1.47 l
-163.046 1.706 l
-163.046 1.926 l
-163.046 2.003 163.039 2.066 163.031 2.117 c
-163.031 2.22 l
-163.707 2.22 l
-163.707 2.132 l
-163.707 1.985 l
-163.715 1.926 163.722 1.867 163.722 1.808 c
-163.722 1.646 l
-163.737 1.646 l
-163.755 1.735 163.785 1.812 163.825 1.881 c
-163.862 1.96 163.906 2.029 163.957 2.087 c
-164.016 2.147 164.082 2.191 164.163 2.22 c
-164.24 2.257 164.328 2.278 164.427 2.278 c
-164.612 2.278 164.751 2.224 164.839 2.117 c
-164.935 2.018 165.005 1.86 165.045 1.646 c
-165.059 1.646 l
-165.096 1.742 165.136 1.831 165.177 1.912 c
-165.225 1.989 165.28 2.051 165.339 2.103 c
-165.398 2.161 165.464 2.205 165.545 2.234 c
-165.622 2.264 165.71 2.278 165.809 2.278 c
-165.945 2.278 166.059 2.253 166.148 2.205 c
-166.235 2.154 166.302 2.08 166.353 1.985 c
-166.412 1.885 166.449 1.757 166.47 1.603 c
-166.501 1.455 166.515 1.272 166.515 1.058 c
-166.515 -1.263 l
-165.795 -1.263 l
-165.795 0.853 l
-165.795 1.019 165.787 1.154 165.78 1.264 c
-165.769 1.372 165.751 1.455 165.721 1.515 c
-165.699 1.58 165.67 1.632 165.633 1.661 c
-165.603 1.691 165.563 1.706 165.516 1.706 c
-165.398 1.706 165.302 1.617 165.236 1.441 c
-165.177 1.272 165.148 1.015 165.148 0.662 c
-165.148 -1.263 l
-h
-168.194 2.22 m
-168.201 2.198 168.209 2.165 168.209 2.117 c
-168.216 2.077 168.224 2.029 168.224 1.97 c
-168.231 1.919 168.238 1.867 168.238 1.808 c
-168.238 1.646 l
-168.253 1.646 l
-168.311 1.764 168.378 1.86 168.459 1.941 c
-168.536 2.018 168.62 2.08 168.708 2.132 c
-168.797 2.191 168.885 2.228 168.973 2.249 c
-169.069 2.268 169.168 2.278 169.267 2.278 c
-169.473 2.278 169.653 2.234 169.811 2.147 c
-169.965 2.058 170.094 1.929 170.193 1.764 c
-170.3 1.607 170.377 1.415 170.428 1.191 c
-170.487 0.975 170.517 0.739 170.517 0.485 c
-170.517 0.221 170.487 -0.025 170.428 -0.249 c
-170.377 -0.467 170.3 -0.658 170.193 -0.823 c
-170.094 -0.98 169.962 -1.102 169.796 -1.19 c
-169.639 -1.278 169.451 -1.323 169.238 -1.323 c
-169.138 -1.323 169.04 -1.311 168.944 -1.294 c
-168.845 -1.271 168.753 -1.242 168.664 -1.19 c
-168.583 -1.142 168.506 -1.08 168.429 -0.999 c
-168.359 -0.922 168.301 -0.83 168.253 -0.72 c
-168.238 -0.72 l
-168.238 -0.808 l
-168.246 -0.849 168.253 -0.897 168.253 -0.955 c
-168.253 -1.117 l
-168.253 -1.294 l
-168.253 -2.63 l
-167.342 -2.63 l
-167.342 1.455 l
-167.342 1.621 167.334 1.768 167.326 1.897 c
-167.326 2.22 l
-h
-168.238 0.456 m
-168.238 0.229 168.257 0.038 168.297 -0.118 c
-168.344 -0.264 168.4 -0.382 168.459 -0.47 c
-168.525 -0.558 168.598 -0.625 168.679 -0.661 c
-168.756 -0.702 168.834 -0.72 168.914 -0.72 c
-169.01 -0.72 169.098 -0.698 169.179 -0.646 c
-169.267 -0.598 169.333 -0.529 169.385 -0.44 c
-169.443 -0.345 169.487 -0.22 169.517 -0.073 c
-169.554 0.081 169.576 0.269 169.576 0.485 c
-169.576 0.875 169.517 1.169 169.4 1.368 c
-169.289 1.563 169.135 1.661 168.93 1.661 c
-168.849 1.661 168.771 1.64 168.694 1.603 c
-168.613 1.563 168.54 1.5 168.473 1.411 c
-168.404 1.324 168.344 1.199 168.297 1.044 c
-168.257 0.886 168.238 0.691 168.238 0.456 c
-173.489 -0.646 m
-174.621 -0.646 l
-174.621 -1.263 l
-171.314 -1.263 l
-171.314 -0.646 l
-172.578 -0.646 l
-172.578 2.897 l
-171.652 2.897 l
-171.652 3.514 l
-173.489 3.514 l
-h
-177.01 -1.323 m
-176.753 -1.323 176.525 -1.286 176.319 -1.219 c
-176.113 -1.142 175.937 -1.028 175.79 -0.881 c
-175.643 -0.727 175.525 -0.536 175.438 -0.309 c
-175.357 -0.084 175.32 0.181 175.32 0.485 c
-175.32 0.817 175.363 1.096 175.452 1.324 c
-175.548 1.559 175.676 1.742 175.834 1.881 c
-175.999 2.018 176.186 2.117 176.392 2.176 c
-176.598 2.242 176.808 2.278 177.025 2.278 c
-177.296 2.278 177.532 2.228 177.73 2.132 c
-177.936 2.043 178.102 1.912 178.23 1.735 c
-178.366 1.566 178.465 1.36 178.524 1.118 c
-178.59 0.882 178.627 0.618 178.627 0.324 c
-178.627 0.31 l
-176.261 0.31 l
-176.261 0.162 176.275 0.023 176.304 -0.103 c
-176.341 -0.231 176.396 -0.345 176.466 -0.44 c
-176.533 -0.529 176.616 -0.598 176.716 -0.646 c
-176.811 -0.698 176.926 -0.72 177.054 -0.72 c
-177.208 -0.72 177.348 -0.687 177.466 -0.617 c
-177.591 -0.55 177.678 -0.448 177.73 -0.309 c
-178.568 -0.382 l
-178.538 -0.481 178.484 -0.588 178.407 -0.706 c
-178.326 -0.816 178.222 -0.918 178.098 -1.014 c
-177.98 -1.102 177.826 -1.176 177.642 -1.234 c
-177.466 -1.294 177.252 -1.323 177.01 -1.323 c
-177.01 1.706 m
-176.922 1.706 176.834 1.691 176.745 1.661 c
-176.657 1.632 176.576 1.58 176.51 1.515 c
-176.44 1.445 176.381 1.357 176.334 1.25 c
-176.294 1.139 176.275 1.015 176.275 0.867 c
-177.745 0.867 l
-177.745 1.004 177.719 1.125 177.672 1.235 c
-177.631 1.341 177.576 1.43 177.51 1.5 c
-177.451 1.566 177.377 1.617 177.289 1.646 c
-177.201 1.684 177.105 1.706 177.01 1.706 c
-180.571 -0.278 0.926 -0.985 re
-180.571 -1.263 m
-185.131 -1.323 m
-184.845 -1.323 184.602 -1.282 184.396 -1.205 c
-184.19 -1.117 184.018 -0.995 183.882 -0.837 c
-183.742 -0.683 183.639 -0.496 183.573 -0.278 c
-183.503 -0.055 183.471 0.192 183.471 0.456 c
-183.471 0.75 183.503 1.008 183.573 1.235 c
-183.65 1.459 183.757 1.646 183.897 1.794 c
-184.043 1.948 184.22 2.066 184.425 2.147 c
-184.631 2.234 184.867 2.278 185.131 2.278 c
-185.356 2.278 185.557 2.249 185.734 2.191 c
-185.91 2.132 186.061 2.047 186.189 1.941 c
-186.314 1.842 186.417 1.721 186.498 1.573 c
-186.575 1.434 186.63 1.283 186.66 1.118 c
-185.748 1.073 l
-185.719 1.25 185.649 1.389 185.543 1.5 c
-185.443 1.607 185.3 1.661 185.117 1.661 c
-184.87 1.661 184.693 1.559 184.587 1.353 c
-184.477 1.154 184.425 0.867 184.425 0.485 c
-184.425 -0.309 184.661 -0.706 185.131 -0.706 c
-185.296 -0.706 185.439 -0.654 185.557 -0.544 c
-185.675 -0.436 185.748 -0.275 185.778 -0.058 c
-186.689 -0.103 l
-186.66 -0.272 186.605 -0.426 186.528 -0.573 c
-186.457 -0.72 186.355 -0.852 186.218 -0.97 c
-186.09 -1.08 185.932 -1.168 185.748 -1.234 c
-185.572 -1.294 185.366 -1.323 185.131 -1.323 c
-190.838 0.485 m
-190.838 0.21 190.802 -0.039 190.735 -0.264 c
-190.665 -0.481 190.563 -0.668 190.426 -0.823 c
-190.287 -0.98 190.11 -1.102 189.898 -1.19 c
-189.68 -1.278 189.427 -1.323 189.133 -1.323 c
-188.857 -1.323 188.611 -1.278 188.398 -1.19 c
-188.192 -1.102 188.02 -0.98 187.884 -0.823 c
-187.744 -0.668 187.641 -0.481 187.575 -0.264 c
-187.505 -0.039 187.472 0.21 187.472 0.485 c
-187.472 0.739 187.502 0.975 187.56 1.191 c
-187.627 1.415 187.729 1.607 187.868 1.764 c
-188.005 1.929 188.181 2.058 188.398 2.147 c
-188.611 2.234 188.868 2.278 189.162 2.278 c
-189.474 2.278 189.736 2.234 189.942 2.147 c
-190.154 2.058 190.328 1.929 190.455 1.764 c
-190.592 1.607 190.691 1.415 190.75 1.191 c
-190.808 0.975 190.838 0.739 190.838 0.485 c
-189.883 0.485 m
-189.883 0.691 189.868 0.867 189.838 1.015 c
-189.817 1.162 189.78 1.283 189.721 1.382 c
-189.662 1.478 189.589 1.548 189.501 1.588 c
-189.412 1.636 189.302 1.661 189.177 1.661 c
-188.913 1.661 188.722 1.563 188.604 1.368 c
-188.487 1.18 188.427 0.886 188.427 0.485 c
-188.427 0.063 188.487 -0.242 188.604 -0.426 c
-188.722 -0.613 188.898 -0.706 189.133 -0.706 c
-189.258 -0.706 189.372 -0.687 189.471 -0.646 c
-189.567 -0.598 189.647 -0.525 189.707 -0.426 c
-189.773 -0.33 189.817 -0.205 189.838 -0.058 c
-189.868 0.088 189.883 0.269 189.883 0.485 c
-192.855 -1.263 m
-192.855 0.853 l
-192.855 1.019 192.848 1.154 192.841 1.264 c
-192.83 1.372 192.811 1.455 192.782 1.515 c
-192.76 1.58 192.73 1.632 192.694 1.661 c
-192.664 1.691 192.624 1.706 192.576 1.706 c
-192.518 1.706 192.462 1.676 192.414 1.617 c
-192.374 1.566 192.341 1.492 192.312 1.397 c
-192.282 1.309 192.256 1.195 192.238 1.058 c
-192.227 0.919 192.223 0.769 192.223 0.603 c
-192.223 -1.263 l
-191.473 -1.263 l
-191.473 1.47 l
-191.473 1.706 l
-191.473 1.926 l
-191.473 2.003 191.467 2.066 191.459 2.117 c
-191.459 2.22 l
-192.136 2.22 l
-192.136 2.132 l
-192.136 1.985 l
-192.142 1.926 192.15 1.867 192.15 1.808 c
-192.15 1.646 l
-192.165 1.646 l
-192.183 1.735 192.213 1.812 192.253 1.881 c
-192.29 1.96 192.333 2.029 192.385 2.087 c
-192.444 2.147 192.51 2.191 192.591 2.22 c
-192.668 2.257 192.757 2.278 192.855 2.278 c
-193.039 2.278 193.179 2.224 193.267 2.117 c
-193.362 2.018 193.432 1.86 193.472 1.646 c
-193.488 1.646 l
-193.524 1.742 193.565 1.831 193.605 1.912 c
-193.653 1.989 193.708 2.051 193.767 2.103 c
-193.825 2.161 193.892 2.205 193.973 2.234 c
-194.05 2.264 194.138 2.278 194.237 2.278 c
-194.373 2.278 194.488 2.253 194.575 2.205 c
-194.663 2.154 194.729 2.08 194.781 1.985 c
-194.84 1.885 194.877 1.757 194.899 1.603 c
-194.928 1.455 194.943 1.272 194.943 1.058 c
-194.943 -1.263 l
-194.222 -1.263 l
-194.222 0.853 l
-194.222 1.019 194.215 1.154 194.208 1.264 c
-194.197 1.372 194.178 1.455 194.149 1.515 c
-194.127 1.58 194.098 1.632 194.06 1.661 c
-194.031 1.691 193.991 1.706 193.943 1.706 c
-193.825 1.706 193.73 1.617 193.664 1.441 c
-193.605 1.272 193.576 1.015 193.576 0.662 c
-193.576 -1.263 l
-h
-198.331 1.455 m
-197.699 1.455 l
-197.567 3.514 l
-198.463 3.514 l
-h
-196.861 1.455 m
-196.229 1.455 l
-196.111 3.514 l
-196.979 3.514 l
-h
-f
-Q
-q 1 0 0 1 64.9298 361.4887 cm
-0 0 m
-0 0.264 -0.073 0.463 -0.22 0.603 c
--0.36 0.75 -0.617 0.889 -0.999 1.029 c
--1.374 1.165 -1.66 1.309 -1.866 1.455 c
--2.065 1.602 -2.212 1.768 -2.308 1.955 c
--2.406 2.15 -2.454 2.371 -2.454 2.616 c
--2.454 3.036 -2.315 3.385 -2.028 3.66 c
--1.745 3.932 -1.378 4.072 -0.926 4.072 c
--0.613 4.072 -0.334 3.998 -0.088 3.851 c
-0.154 3.711 0.341 3.516 0.47 3.263 c
-0.607 3.017 0.676 2.749 0.676 2.454 c
-0 2.454 l
-0 2.786 -0.081 3.042 -0.235 3.219 c
--0.393 3.403 -0.625 3.499 -0.926 3.499 c
--1.19 3.499 -1.404 3.418 -1.558 3.263 c
--1.705 3.117 -1.779 2.903 -1.779 2.631 c
--1.779 2.404 -1.701 2.213 -1.544 2.058 c
--1.378 1.911 -1.124 1.771 -0.779 1.646 c
--0.261 1.477 0.11 1.268 0.338 1.014 c
-0.573 0.757 0.691 0.426 0.691 0.015 c
-0.691 -0.426 0.548 -0.779 0.264 -1.043 c
--0.022 -1.301 -0.405 -1.426 -0.881 -1.426 c
--1.198 -1.426 -1.484 -1.356 -1.749 -1.22 c
--2.014 -1.084 -2.227 -0.893 -2.381 -0.646 c
--2.528 -0.405 -2.601 -0.118 -2.601 0.206 c
--1.926 0.206 l
--1.926 -0.129 -1.833 -0.389 -1.646 -0.573 c
--1.463 -0.76 -1.205 -0.852 -0.881 -0.852 c
--0.588 -0.852 -0.368 -0.779 -0.22 -0.632 c
--0.073 -0.478 0 -0.264 0 0 c
-2.896 -1.426 m
-2.396 -1.426 2.014 -1.278 1.749 -0.985 c
-1.484 -0.691 1.353 -0.257 1.353 0.324 c
-1.353 0.794 l
-1.353 1.389 1.477 1.856 1.735 2.19 c
-1.999 2.532 2.359 2.705 2.822 2.705 c
-3.281 2.705 3.624 2.55 3.851 2.249 c
-4.087 1.955 4.208 1.492 4.219 0.867 c
-4.219 0.441 l
-1.999 0.441 l
-1.999 0.353 l
-1.999 -0.081 2.076 -0.393 2.234 -0.588 c
-2.4 -0.775 2.631 -0.867 2.925 -0.867 c
-3.12 -0.867 3.293 -0.834 3.439 -0.764 c
-3.587 -0.687 3.723 -0.569 3.851 -0.411 c
-4.189 -0.823 l
-3.903 -1.228 3.473 -1.426 2.896 -1.426 c
-2.822 2.146 m
-2.547 2.146 2.344 2.051 2.219 1.866 c
-2.091 1.679 2.018 1.389 1.999 1 c
-3.572 1 l
-3.572 1.087 l
-3.55 1.47 3.484 1.738 3.366 1.897 c
-3.248 2.062 3.065 2.146 2.822 2.146 c
-5.85 3.587 m
-5.85 2.631 l
-6.453 2.631 l
-6.453 2.102 l
-5.85 2.102 l
-5.85 -0.368 l
-5.85 -0.525 5.872 -0.643 5.924 -0.721 c
-5.982 -0.801 6.071 -0.838 6.188 -0.838 c
-6.277 -0.838 6.365 -0.823 6.453 -0.794 c
-6.453 -1.352 l
-6.306 -1.4 6.151 -1.426 5.997 -1.426 c
-5.74 -1.426 5.546 -1.334 5.409 -1.147 c
-5.27 -0.962 5.203 -0.702 5.203 -0.368 c
-5.203 2.102 l
-4.601 2.102 l
-4.601 2.631 l
-5.203 2.631 l
-5.203 3.587 l
-h
-9.789 3.587 m
-9.789 2.631 l
-10.392 2.631 l
-10.392 2.102 l
-9.789 2.102 l
-9.789 -0.368 l
-9.789 -0.525 9.812 -0.643 9.864 -0.721 c
-9.922 -0.801 10.01 -0.838 10.128 -0.838 c
-10.215 -0.838 10.304 -0.823 10.392 -0.794 c
-10.392 -1.352 l
-10.246 -1.4 10.091 -1.426 9.937 -1.426 c
-9.679 -1.426 9.485 -1.334 9.349 -1.147 c
-9.209 -0.962 9.143 -0.702 9.143 -0.368 c
-9.143 2.102 l
-8.54 2.102 l
-8.54 2.631 l
-9.143 2.631 l
-9.143 3.587 l
-h
-11.803 2.219 m
-12.057 2.543 12.376 2.705 12.759 2.705 c
-13.465 2.705 13.821 2.234 13.832 1.294 c
-13.832 -1.352 l
-13.185 -1.352 l
-13.185 1.264 l
-13.185 1.577 13.13 1.797 13.024 1.926 c
-12.914 2.051 12.759 2.117 12.553 2.117 c
-12.395 2.117 12.248 2.062 12.112 1.955 c
-11.983 1.845 11.881 1.709 11.803 1.544 c
-11.803 -1.352 l
-11.156 -1.352 l
-11.156 4.293 l
-11.803 4.293 l
-h
-16.214 -1.426 m
-15.713 -1.426 15.331 -1.278 15.067 -0.985 c
-14.803 -0.691 14.67 -0.257 14.67 0.324 c
-14.67 0.794 l
-14.67 1.389 14.795 1.856 15.052 2.19 c
-15.316 2.532 15.676 2.705 16.139 2.705 c
-16.599 2.705 16.941 2.55 17.169 2.249 c
-17.404 1.955 17.525 1.492 17.536 0.867 c
-17.536 0.441 l
-15.316 0.441 l
-15.316 0.353 l
-15.316 -0.081 15.393 -0.393 15.551 -0.588 c
-15.717 -0.775 15.948 -0.867 16.243 -0.867 c
-16.438 -0.867 16.61 -0.834 16.757 -0.764 c
-16.904 -0.687 17.04 -0.569 17.169 -0.411 c
-17.506 -0.823 l
-17.22 -1.228 16.79 -1.426 16.214 -1.426 c
-16.139 2.146 m
-15.864 2.146 15.662 2.051 15.537 1.866 c
-15.408 1.679 15.335 1.389 15.316 1 c
-16.889 1 l
-16.889 1.087 l
-16.867 1.47 16.801 1.738 16.684 1.897 c
-16.565 2.062 16.382 2.146 16.139 2.146 c
-21.461 -1.426 m
-20.961 -1.426 20.579 -1.278 20.314 -0.985 c
-20.05 -0.691 19.917 -0.257 19.917 0.324 c
-19.917 0.794 l
-19.917 1.389 20.042 1.856 20.299 2.19 c
-20.564 2.532 20.924 2.705 21.388 2.705 c
-21.847 2.705 22.188 2.55 22.416 2.249 c
-22.651 1.955 22.772 1.492 22.784 0.867 c
-22.784 0.441 l
-20.564 0.441 l
-20.564 0.353 l
-20.564 -0.081 20.642 -0.393 20.799 -0.588 c
-20.964 -0.775 21.196 -0.867 21.49 -0.867 c
-21.685 -0.867 21.858 -0.834 22.005 -0.764 c
-22.152 -0.687 22.288 -0.569 22.416 -0.411 c
-22.755 -0.823 l
-22.468 -1.228 22.038 -1.426 21.461 -1.426 c
-21.388 2.146 m
-21.112 2.146 20.91 2.051 20.785 1.866 c
-20.656 1.679 20.582 1.389 20.564 1 c
-22.137 1 l
-22.137 1.087 l
-22.115 1.47 22.049 1.738 21.931 1.897 c
-21.814 2.062 21.629 2.146 21.388 2.146 c
-24.768 0.647 -1.514 0.558 re
-26.047 2.631 m
-26.061 2.263 l
-26.304 2.558 26.624 2.705 27.017 2.705 c
-27.458 2.705 27.767 2.506 27.943 2.117 c
-28.197 2.506 28.546 2.705 28.987 2.705 c
-29.722 2.705 30.096 2.242 30.119 1.323 c
-30.119 -1.352 l
-29.471 -1.352 l
-29.471 1.264 l
-29.471 1.558 29.417 1.771 29.31 1.911 c
-29.211 2.047 29.038 2.117 28.795 2.117 c
-28.598 2.117 28.436 2.036 28.311 1.881 c
-28.193 1.735 28.123 1.544 28.105 1.309 c
-28.105 -1.352 l
-27.443 -1.352 l
-27.443 1.294 l
-27.443 1.841 27.223 2.117 26.782 2.117 c
-26.447 2.117 26.212 1.955 26.076 1.631 c
-26.076 -1.352 l
-25.429 -1.352 l
-25.429 2.631 l
-h
-33.132 -1.352 m
-33.091 -1.264 33.066 -1.117 33.059 -0.912 c
-32.823 -1.257 32.529 -1.426 32.176 -1.426 c
-31.813 -1.426 31.53 -1.33 31.324 -1.132 c
-31.125 -0.926 31.03 -0.64 31.03 -0.264 c
-31.03 0.136 31.166 0.455 31.441 0.69 c
-31.713 0.933 32.088 1.058 32.558 1.058 c
-33.043 1.058 l
-33.043 1.484 l
-33.043 1.72 32.989 1.885 32.882 1.984 c
-32.772 2.091 32.61 2.146 32.397 2.146 c
-32.199 2.146 32.037 2.087 31.912 1.97 c
-31.794 1.852 31.736 1.706 31.736 1.529 c
-31.089 1.529 l
-31.089 1.723 31.147 1.914 31.265 2.102 c
-31.39 2.286 31.551 2.433 31.75 2.543 c
-31.956 2.65 32.184 2.705 32.441 2.705 c
-32.841 2.705 33.147 2.602 33.352 2.396 c
-33.566 2.19 33.679 1.897 33.691 1.514 c
-33.691 -0.5 l
-33.691 -0.804 33.727 -1.07 33.808 -1.294 c
-33.808 -1.352 l
-h
-32.265 -0.838 m
-32.43 -0.838 32.581 -0.794 32.72 -0.706 c
-32.868 -0.617 32.974 -0.507 33.043 -0.368 c
-33.043 0.573 l
-32.677 0.573 l
-32.36 0.573 32.118 0.503 31.941 0.368 c
-31.765 0.239 31.677 0.052 31.677 -0.191 c
-31.677 -0.419 31.721 -0.584 31.809 -0.691 c
-31.897 -0.79 32.048 -0.838 32.265 -0.838 c
-35.395 -1.352 -0.646 3.983 re
-35.44 3.674 m
-35.44 3.564 35.41 3.473 35.351 3.395 c
-35.293 3.326 35.197 3.293 35.072 3.293 c
-34.954 3.293 34.859 3.326 34.793 3.395 c
-34.734 3.473 34.705 3.564 34.705 3.674 c
-34.705 3.792 34.734 3.884 34.793 3.954 c
-34.859 4.031 34.954 4.072 35.072 4.072 c
-35.197 4.072 35.293 4.031 35.351 3.954 c
-35.41 3.873 35.44 3.782 35.44 3.674 c
-37.115 -1.352 -0.646 5.644 re
-41.892 -1.352 m
-41.852 -1.264 41.826 -1.117 41.819 -0.912 c
-41.583 -1.257 41.29 -1.426 40.937 -1.426 c
-40.573 -1.426 40.29 -1.33 40.084 -1.132 c
-39.886 -0.926 39.79 -0.64 39.79 -0.264 c
-39.79 0.136 39.927 0.455 40.202 0.69 c
-40.474 0.933 40.849 1.058 41.319 1.058 c
-41.805 1.058 l
-41.805 1.484 l
-41.805 1.72 41.749 1.885 41.643 1.984 c
-41.533 2.091 41.371 2.146 41.157 2.146 c
-40.959 2.146 40.797 2.087 40.673 1.97 c
-40.554 1.852 40.496 1.706 40.496 1.529 c
-39.849 1.529 l
-39.849 1.723 39.908 1.914 40.026 2.102 c
-40.151 2.286 40.313 2.433 40.511 2.543 c
-40.716 2.65 40.945 2.705 41.202 2.705 c
-41.602 2.705 41.907 2.602 42.113 2.396 c
-42.326 2.19 42.44 1.897 42.451 1.514 c
-42.451 -0.5 l
-42.451 -0.804 42.488 -1.07 42.568 -1.294 c
-42.568 -1.352 l
-h
-41.025 -0.838 m
-41.19 -0.838 41.341 -0.794 41.481 -0.706 c
-41.628 -0.617 41.734 -0.507 41.805 -0.368 c
-41.805 0.573 l
-41.437 0.573 l
-41.121 0.573 40.878 0.503 40.702 0.368 c
-40.525 0.239 40.438 0.052 40.438 -0.191 c
-40.438 -0.419 40.481 -0.584 40.569 -0.691 c
-40.658 -0.79 40.808 -0.838 41.025 -0.838 c
-43.318 0.823 m
-43.318 1.43 43.428 1.897 43.656 2.219 c
-43.891 2.543 44.219 2.705 44.641 2.705 c
-45.023 2.705 45.321 2.547 45.537 2.234 c
-45.537 4.293 l
-46.185 4.293 l
-46.185 -1.352 l
-45.597 -1.352 l
-45.552 -0.926 l
-45.346 -1.261 45.042 -1.426 44.641 -1.426 c
-44.23 -1.426 43.906 -1.271 43.671 -0.956 c
-43.436 -0.632 43.318 -0.176 43.318 0.412 c
-h
-43.965 0.441 m
-43.965 0 44.028 -0.33 44.156 -0.544 c
-44.292 -0.75 44.513 -0.852 44.818 -0.852 c
-45.141 -0.852 45.379 -0.691 45.537 -0.368 c
-45.537 1.646 l
-45.369 1.959 45.13 2.117 44.818 2.117 c
-44.513 2.117 44.292 2.014 44.156 1.808 c
-44.028 1.602 43.965 1.278 43.965 0.838 c
-h
-47.052 0.823 m
-47.052 1.43 47.162 1.897 47.39 2.219 c
-47.625 2.543 47.952 2.705 48.375 2.705 c
-48.757 2.705 49.055 2.547 49.271 2.234 c
-49.271 4.293 l
-49.918 4.293 l
-49.918 -1.352 l
-49.33 -1.352 l
-49.286 -0.926 l
-49.08 -1.261 48.775 -1.426 48.375 -1.426 c
-47.964 -1.426 47.64 -1.271 47.405 -0.956 c
-47.17 -0.632 47.052 -0.176 47.052 0.412 c
-h
-47.698 0.441 m
-47.698 0 47.761 -0.33 47.889 -0.544 c
-48.026 -0.75 48.246 -0.852 48.551 -0.852 c
-48.874 -0.852 49.113 -0.691 49.271 -0.368 c
-49.271 1.646 l
-49.102 1.959 48.864 2.117 48.551 2.117 c
-48.246 2.117 48.026 2.014 47.889 1.808 c
-47.761 1.602 47.698 1.278 47.698 0.838 c
-h
-52.564 2.014 m
-52.475 2.032 52.377 2.043 52.27 2.043 c
-51.935 2.043 51.7 1.86 51.565 1.5 c
-51.565 -1.352 l
-50.918 -1.352 l
-50.918 2.631 l
-51.55 2.631 l
-51.565 2.219 l
-51.741 2.543 51.983 2.705 52.299 2.705 c
-52.406 2.705 52.494 2.683 52.564 2.646 c
-h
-54.563 -1.426 m
-54.063 -1.426 53.681 -1.278 53.416 -0.985 c
-53.152 -0.691 53.019 -0.257 53.019 0.324 c
-53.019 0.794 l
-53.019 1.389 53.144 1.856 53.402 2.19 c
-53.666 2.532 54.027 2.705 54.49 2.705 c
-54.949 2.705 55.291 2.55 55.519 2.249 c
-55.754 1.955 55.875 1.492 55.886 0.867 c
-55.886 0.441 l
-53.666 0.441 l
-53.666 0.353 l
-53.666 -0.081 53.743 -0.393 53.902 -0.588 c
-54.067 -0.775 54.299 -0.867 54.592 -0.867 c
-54.787 -0.867 54.96 -0.834 55.107 -0.764 c
-55.254 -0.687 55.39 -0.569 55.519 -0.411 c
-55.856 -0.823 l
-55.569 -1.228 55.14 -1.426 54.563 -1.426 c
-54.49 2.146 m
-54.214 2.146 54.012 2.051 53.886 1.866 c
-53.759 1.679 53.685 1.389 53.666 1 c
-55.239 1 l
-55.239 1.087 l
-55.217 1.47 55.151 1.738 55.033 1.897 c
-54.916 2.062 54.732 2.146 54.49 2.146 c
-58.605 -0.338 m
-58.605 -0.191 58.55 -0.07 58.443 0.029 c
-58.333 0.125 58.127 0.243 57.826 0.382 c
-57.481 0.53 57.238 0.651 57.092 0.75 c
-56.944 0.856 56.834 0.974 56.768 1.103 c
-56.698 1.228 56.665 1.386 56.665 1.573 c
-56.665 1.897 56.782 2.165 57.017 2.381 c
-57.252 2.595 57.554 2.705 57.929 2.705 c
-58.312 2.705 58.62 2.591 58.855 2.367 c
-59.091 2.139 59.208 1.852 59.208 1.5 c
-58.561 1.5 l
-58.561 1.675 58.503 1.827 58.385 1.955 c
-58.268 2.08 58.113 2.146 57.929 2.146 c
-57.73 2.146 57.58 2.091 57.474 1.984 c
-57.363 1.885 57.312 1.753 57.312 1.588 c
-57.312 1.459 57.348 1.353 57.429 1.264 c
-57.506 1.183 57.697 1.081 58.002 0.956 c
-58.48 0.769 58.811 0.58 58.987 0.397 c
-59.164 0.22 59.252 -0.008 59.252 -0.279 c
-59.252 -0.632 59.127 -0.912 58.885 -1.117 c
-58.649 -1.323 58.333 -1.426 57.944 -1.426 c
-57.522 -1.426 57.183 -1.309 56.93 -1.073 c
-56.672 -0.831 56.547 -0.525 56.547 -0.162 c
-57.194 -0.162 l
-57.202 -0.389 57.271 -0.565 57.4 -0.691 c
-57.525 -0.808 57.709 -0.867 57.944 -0.867 c
-58.157 -0.867 58.318 -0.819 58.428 -0.721 c
-58.547 -0.625 58.605 -0.496 58.605 -0.338 c
-62.03 -0.338 m
-62.03 -0.191 61.975 -0.07 61.869 0.029 c
-61.759 0.125 61.553 0.243 61.251 0.382 c
-60.905 0.53 60.664 0.651 60.516 0.75 c
-60.369 0.856 60.259 0.974 60.193 1.103 c
-60.123 1.228 60.09 1.386 60.09 1.573 c
-60.09 1.897 60.207 2.165 60.443 2.381 c
-60.678 2.595 60.979 2.705 61.354 2.705 c
-61.736 2.705 62.045 2.591 62.28 2.367 c
-62.515 2.139 62.633 1.852 62.633 1.5 c
-61.986 1.5 l
-61.986 1.675 61.927 1.827 61.809 1.955 c
-61.692 2.08 61.538 2.146 61.354 2.146 c
-61.156 2.146 61.005 2.091 60.899 1.984 c
-60.788 1.885 60.737 1.753 60.737 1.588 c
-60.737 1.459 60.774 1.353 60.855 1.264 c
-60.932 1.183 61.123 1.081 61.427 0.956 c
-61.905 0.769 62.236 0.58 62.412 0.397 c
-62.588 0.22 62.677 -0.008 62.677 -0.279 c
-62.677 -0.632 62.552 -0.912 62.31 -1.117 c
-62.075 -1.323 61.759 -1.426 61.369 -1.426 c
-60.946 -1.426 60.608 -1.309 60.354 -1.073 c
-60.097 -0.831 59.972 -0.525 59.972 -0.162 c
-60.619 -0.162 l
-60.626 -0.389 60.697 -0.565 60.824 -0.691 c
-60.95 -0.808 61.134 -0.867 61.369 -0.867 c
-61.582 -0.867 61.744 -0.819 61.854 -0.721 c
-61.971 -0.625 62.03 -0.496 62.03 -0.338 c
-66.087 3.587 m
-66.087 2.631 l
-66.69 2.631 l
-66.69 2.102 l
-66.087 2.102 l
-66.087 -0.368 l
-66.087 -0.525 66.11 -0.643 66.16 -0.721 c
-66.22 -0.801 66.308 -0.838 66.425 -0.838 c
-66.513 -0.838 66.602 -0.823 66.69 -0.794 c
-66.69 -1.352 l
-66.543 -1.4 66.388 -1.426 66.234 -1.426 c
-65.977 -1.426 65.782 -1.334 65.646 -1.147 c
-65.507 -0.962 65.441 -0.702 65.441 -0.368 c
-65.441 2.102 l
-64.838 2.102 l
-64.838 2.631 l
-65.441 2.631 l
-65.441 3.587 l
-h
-68.101 2.219 m
-68.354 2.543 68.674 2.705 69.056 2.705 c
-69.761 2.705 70.118 2.234 70.129 1.294 c
-70.129 -1.352 l
-69.482 -1.352 l
-69.482 1.264 l
-69.482 1.577 69.428 1.797 69.321 1.926 c
-69.21 2.051 69.056 2.117 68.851 2.117 c
-68.693 2.117 68.545 2.062 68.41 1.955 c
-68.281 1.845 68.178 1.709 68.101 1.544 c
-68.101 -1.352 l
-67.454 -1.352 l
-67.454 4.293 l
-68.101 4.293 l
-h
-73.128 -1.352 m
-73.088 -1.264 73.062 -1.117 73.054 -0.912 c
-72.819 -1.257 72.525 -1.426 72.173 -1.426 c
-71.809 -1.426 71.525 -1.33 71.32 -1.132 c
-71.122 -0.926 71.026 -0.64 71.026 -0.264 c
-71.026 0.136 71.162 0.455 71.438 0.69 c
-71.71 0.933 72.084 1.058 72.555 1.058 c
-73.04 1.058 l
-73.04 1.484 l
-73.04 1.72 72.984 1.885 72.878 1.984 c
-72.768 2.091 72.606 2.146 72.393 2.146 c
-72.194 2.146 72.032 2.087 71.908 1.97 c
-71.791 1.852 71.731 1.706 71.731 1.529 c
-71.085 1.529 l
-71.085 1.723 71.143 1.914 71.261 2.102 c
-71.386 2.286 71.548 2.433 71.746 2.543 c
-71.952 2.65 72.18 2.705 72.437 2.705 c
-72.838 2.705 73.142 2.602 73.349 2.396 c
-73.561 2.19 73.676 1.897 73.686 1.514 c
-73.686 -0.5 l
-73.686 -0.804 73.723 -1.07 73.804 -1.294 c
-73.804 -1.352 l
-h
-72.261 -0.838 m
-72.426 -0.838 72.577 -0.794 72.716 -0.706 c
-72.863 -0.617 72.97 -0.507 73.04 -0.368 c
-73.04 0.573 l
-72.672 0.573 l
-72.356 0.573 72.113 0.503 71.937 0.368 c
-71.761 0.239 71.673 0.052 71.673 -0.191 c
-71.673 -0.419 71.717 -0.584 71.805 -0.691 c
-71.893 -0.79 72.044 -0.838 72.261 -0.838 c
-75.539 3.587 m
-75.539 2.631 l
-76.142 2.631 l
-76.142 2.102 l
-75.539 2.102 l
-75.539 -0.368 l
-75.539 -0.525 75.56 -0.643 75.612 -0.721 c
-75.671 -0.801 75.759 -0.838 75.876 -0.838 c
-75.965 -0.838 76.053 -0.823 76.142 -0.794 c
-76.142 -1.352 l
-75.994 -1.4 75.84 -1.426 75.685 -1.426 c
-75.428 -1.426 75.234 -1.334 75.097 -1.147 c
-74.958 -0.962 74.891 -0.702 74.891 -0.368 c
-74.891 2.102 l
-74.289 2.102 l
-74.289 2.631 l
-74.891 2.631 l
-74.891 3.587 l
-h
-81.595 -0.206 m
-82.197 2.631 l
-82.844 2.631 l
-81.859 -1.352 l
-81.345 -1.352 l
-80.566 1.5 l
-79.816 -1.352 l
-79.286 -1.352 l
-78.332 2.631 l
-78.964 2.631 l
-79.581 -0.133 l
-80.316 2.631 l
-80.83 2.631 l
-h
-84.225 -1.352 -0.646 3.983 re
-84.27 3.674 m
-84.27 3.564 84.24 3.473 84.182 3.395 c
-84.123 3.326 84.027 3.293 83.903 3.293 c
-83.785 3.293 83.689 3.326 83.623 3.395 c
-83.564 3.473 83.535 3.564 83.535 3.674 c
-83.535 3.792 83.564 3.884 83.623 3.954 c
-83.689 4.031 83.785 4.072 83.903 4.072 c
-84.027 4.072 84.123 4.031 84.182 3.954 c
-84.24 3.873 84.27 3.782 84.27 3.674 c
-85.945 -1.352 -0.646 5.644 re
-87.666 -1.352 -0.647 5.644 re
-93.28 0.441 m
-93.28 -0.176 93.166 -0.643 92.942 -0.956 c
-92.726 -1.271 92.402 -1.426 91.972 -1.426 c
-91.55 -1.426 91.238 -1.246 91.032 -0.881 c
-91.002 -1.352 l
-90.399 -1.352 l
-90.399 4.293 l
-91.046 4.293 l
-91.046 2.19 l
-91.259 2.532 91.568 2.705 91.972 2.705 c
-92.402 2.705 92.726 2.547 92.942 2.234 c
-93.166 1.929 93.28 1.463 93.28 0.838 c
-h
-92.634 0.823 m
-92.634 1.294 92.564 1.625 92.428 1.823 c
-92.299 2.018 92.09 2.117 91.795 2.117 c
-91.462 2.117 91.211 1.933 91.046 1.573 c
-91.046 -0.309 l
-91.211 -0.673 91.465 -0.852 91.811 -0.852 c
-92.104 -0.852 92.314 -0.75 92.443 -0.544 c
-92.568 -0.338 92.634 -0.022 92.634 0.412 c
-h
-95.544 -1.426 m
-95.044 -1.426 94.662 -1.278 94.398 -0.985 c
-94.133 -0.691 94.001 -0.257 94.001 0.324 c
-94.001 0.794 l
-94.001 1.389 94.126 1.856 94.383 2.19 c
-94.647 2.532 95.007 2.705 95.471 2.705 c
-95.93 2.705 96.271 2.55 96.499 2.249 c
-96.734 1.955 96.856 1.492 96.867 0.867 c
-96.867 0.441 l
-94.647 0.441 l
-94.647 0.353 l
-94.647 -0.081 94.725 -0.393 94.882 -0.588 c
-95.048 -0.775 95.279 -0.867 95.573 -0.867 c
-95.768 -0.867 95.941 -0.834 96.088 -0.764 c
-96.235 -0.687 96.371 -0.569 96.499 -0.411 c
-96.838 -0.823 l
-96.551 -1.228 96.121 -1.426 95.544 -1.426 c
-95.471 2.146 m
-95.195 2.146 94.993 2.051 94.868 1.866 c
-94.739 1.679 94.666 1.389 94.647 1 c
-96.22 1 l
-96.22 1.087 l
-96.198 1.47 96.132 1.738 96.015 1.897 c
-95.897 2.062 95.713 2.146 95.471 2.146 c
-101.409 -1.352 m
-101.368 -1.264 101.343 -1.117 101.335 -0.912 c
-101.1 -1.257 100.806 -1.426 100.453 -1.426 c
-100.09 -1.426 99.807 -1.33 99.601 -1.132 c
-99.402 -0.926 99.307 -0.64 99.307 -0.264 c
-99.307 0.136 99.443 0.455 99.718 0.69 c
-99.99 0.933 100.366 1.058 100.836 1.058 c
-101.32 1.058 l
-101.32 1.484 l
-101.32 1.72 101.266 1.885 101.159 1.984 c
-101.049 2.091 100.887 2.146 100.674 2.146 c
-100.476 2.146 100.314 2.087 100.189 1.97 c
-100.071 1.852 100.013 1.706 100.013 1.529 c
-99.366 1.529 l
-99.366 1.723 99.425 1.914 99.542 2.102 c
-99.667 2.286 99.828 2.433 100.027 2.543 c
-100.233 2.65 100.461 2.705 100.718 2.705 c
-101.118 2.705 101.424 2.602 101.629 2.396 c
-101.843 2.19 101.956 1.897 101.968 1.514 c
-101.968 -0.5 l
-101.968 -0.804 102.004 -1.07 102.085 -1.294 c
-102.085 -1.352 l
-h
-100.542 -0.838 m
-100.707 -0.838 100.858 -0.794 100.997 -0.706 c
-101.145 -0.617 101.251 -0.507 101.32 -0.368 c
-101.32 0.573 l
-100.954 0.573 l
-100.637 0.573 100.395 0.503 100.218 0.368 c
-100.042 0.239 99.954 0.052 99.954 -0.191 c
-99.954 -0.419 99.998 -0.584 100.086 -0.691 c
-100.175 -0.79 100.325 -0.838 100.542 -0.838 c
-103.819 3.587 m
-103.819 2.631 l
-104.422 2.631 l
-104.422 2.102 l
-103.819 2.102 l
-103.819 -0.368 l
-103.819 -0.525 103.842 -0.643 103.893 -0.721 c
-103.952 -0.801 104.04 -0.838 104.158 -0.838 c
-104.246 -0.838 104.334 -0.823 104.422 -0.794 c
-104.422 -1.352 l
-104.275 -1.4 104.121 -1.426 103.967 -1.426 c
-103.709 -1.426 103.514 -1.334 103.379 -1.147 c
-103.239 -0.962 103.173 -0.702 103.173 -0.368 c
-103.173 2.102 l
-102.57 2.102 l
-102.57 2.631 l
-103.173 2.631 l
-103.173 3.587 l
-h
-106.039 3.587 m
-106.039 2.631 l
-106.641 2.631 l
-106.641 2.102 l
-106.039 2.102 l
-106.039 -0.368 l
-106.039 -0.525 106.061 -0.643 106.113 -0.721 c
-106.171 -0.801 106.259 -0.838 106.377 -0.838 c
-106.465 -0.838 106.554 -0.823 106.641 -0.794 c
-106.641 -1.352 l
-106.495 -1.4 106.34 -1.426 106.186 -1.426 c
-105.929 -1.426 105.734 -1.334 105.598 -1.147 c
-105.459 -0.962 105.392 -0.702 105.392 -0.368 c
-105.392 2.102 l
-104.79 2.102 l
-104.79 2.631 l
-105.392 2.631 l
-105.392 3.587 l
-h
-109.449 -1.352 m
-109.409 -1.264 109.384 -1.117 109.376 -0.912 c
-109.141 -1.257 108.846 -1.426 108.494 -1.426 c
-108.13 -1.426 107.847 -1.33 107.641 -1.132 c
-107.443 -0.926 107.347 -0.64 107.347 -0.264 c
-107.347 0.136 107.483 0.455 107.759 0.69 c
-108.031 0.933 108.406 1.058 108.876 1.058 c
-109.361 1.058 l
-109.361 1.484 l
-109.361 1.72 109.306 1.885 109.199 1.984 c
-109.089 2.091 108.927 2.146 108.715 2.146 c
-108.516 2.146 108.354 2.087 108.229 1.97 c
-108.112 1.852 108.052 1.706 108.052 1.529 c
-107.406 1.529 l
-107.406 1.723 107.465 1.914 107.582 2.102 c
-107.707 2.286 107.869 2.433 108.067 2.543 c
-108.273 2.65 108.501 2.705 108.758 2.705 c
-109.159 2.705 109.463 2.602 109.67 2.396 c
-109.883 2.19 109.997 1.897 110.008 1.514 c
-110.008 -0.5 l
-110.008 -0.804 110.045 -1.07 110.126 -1.294 c
-110.126 -1.352 l
-h
-108.582 -0.838 m
-108.748 -0.838 108.898 -0.794 109.037 -0.706 c
-109.185 -0.617 109.291 -0.507 109.361 -0.368 c
-109.361 0.573 l
-108.993 0.573 l
-108.678 0.573 108.435 0.503 108.258 0.368 c
-108.082 0.239 107.994 0.052 107.994 -0.191 c
-107.994 -0.419 108.038 -0.584 108.127 -0.691 c
-108.214 -0.79 108.366 -0.838 108.582 -0.838 c
-112.389 -0.867 m
-112.602 -0.867 112.775 -0.804 112.904 -0.676 c
-113.039 -0.54 113.113 -0.349 113.124 -0.103 c
-113.741 -0.103 l
-113.719 -0.485 113.583 -0.804 113.33 -1.058 c
-113.072 -1.305 112.76 -1.426 112.389 -1.426 c
-111.896 -1.426 111.522 -1.275 111.257 -0.97 c
-111 -0.658 110.875 -0.191 110.875 0.426 c
-110.875 0.867 l
-110.875 1.463 111 1.918 111.257 2.234 c
-111.522 2.547 111.896 2.705 112.389 2.705 c
-112.79 2.705 113.11 2.572 113.345 2.308 c
-113.587 2.051 113.719 1.706 113.741 1.264 c
-113.124 1.264 l
-113.102 1.558 113.029 1.779 112.904 1.926 c
-112.786 2.072 112.613 2.146 112.389 2.146 c
-112.095 2.146 111.878 2.047 111.742 1.852 c
-111.603 1.665 111.529 1.357 111.522 0.926 c
-111.522 0.412 l
-111.522 -0.058 111.588 -0.393 111.728 -0.588 c
-111.875 -0.775 112.095 -0.867 112.389 -0.867 c
-115.138 2.219 m
-115.391 2.543 115.711 2.705 116.093 2.705 c
-116.798 2.705 117.155 2.234 117.166 1.294 c
-117.166 -1.352 l
-116.519 -1.352 l
-116.519 1.264 l
-116.519 1.577 116.464 1.797 116.358 1.926 c
-116.247 2.051 116.093 2.117 115.888 2.117 c
-115.73 2.117 115.582 2.062 115.447 1.955 c
-115.318 1.845 115.215 1.709 115.138 1.544 c
-115.138 -1.352 l
-114.491 -1.352 l
-114.491 4.293 l
-115.138 4.293 l
-h
-119.547 -1.426 m
-119.048 -1.426 118.666 -1.278 118.401 -0.985 c
-118.136 -0.691 118.004 -0.257 118.004 0.324 c
-118.004 0.794 l
-118.004 1.389 118.129 1.856 118.386 2.19 c
-118.651 2.532 119.011 2.705 119.474 2.705 c
-119.933 2.705 120.275 2.55 120.503 2.249 c
-120.738 1.955 120.86 1.492 120.871 0.867 c
-120.871 0.441 l
-118.651 0.441 l
-118.651 0.353 l
-118.651 -0.081 118.728 -0.393 118.886 -0.588 c
-119.051 -0.775 119.283 -0.867 119.576 -0.867 c
-119.772 -0.867 119.944 -0.834 120.091 -0.764 c
-120.239 -0.687 120.374 -0.569 120.503 -0.411 c
-120.841 -0.823 l
-120.555 -1.228 120.125 -1.426 119.547 -1.426 c
-119.474 2.146 m
-119.198 2.146 118.996 2.051 118.871 1.866 c
-118.743 1.679 118.67 1.389 118.651 1 c
-120.224 1 l
-120.224 1.087 l
-120.202 1.47 120.135 1.738 120.018 1.897 c
-119.9 2.062 119.717 2.146 119.474 2.146 c
-121.517 0.823 m
-121.517 1.43 121.627 1.897 121.855 2.219 c
-122.09 2.543 122.417 2.705 122.84 2.705 c
-123.223 2.705 123.52 2.547 123.736 2.234 c
-123.736 4.293 l
-124.384 4.293 l
-124.384 -1.352 l
-123.796 -1.352 l
-123.751 -0.926 l
-123.545 -1.261 123.241 -1.426 122.84 -1.426 c
-122.429 -1.426 122.105 -1.271 121.87 -0.956 c
-121.635 -0.632 121.517 -0.176 121.517 0.412 c
-h
-122.163 0.441 m
-122.163 0 122.227 -0.33 122.355 -0.544 c
-122.491 -0.75 122.712 -0.852 123.017 -0.852 c
-123.339 -0.852 123.578 -0.691 123.736 -0.368 c
-123.736 1.646 l
-123.568 1.959 123.329 2.117 123.017 2.117 c
-122.712 2.117 122.491 2.014 122.355 1.808 c
-122.227 1.602 122.163 1.278 122.163 0.838 c
-h
-127.956 3.587 m
-127.956 2.631 l
-128.558 2.631 l
-128.558 2.102 l
-127.956 2.102 l
-127.956 -0.368 l
-127.956 -0.525 127.977 -0.643 128.029 -0.721 c
-128.087 -0.801 128.176 -0.838 128.293 -0.838 c
-128.382 -0.838 128.47 -0.823 128.558 -0.794 c
-128.558 -1.352 l
-128.411 -1.4 128.257 -1.426 128.102 -1.426 c
-127.846 -1.426 127.651 -1.334 127.514 -1.147 c
-127.375 -0.962 127.308 -0.702 127.308 -0.368 c
-127.308 2.102 l
-126.706 2.102 l
-126.706 2.631 l
-127.308 2.631 l
-127.308 3.587 l
-h
-129.116 0.823 m
-129.116 1.4 129.253 1.856 129.529 2.19 c
-129.811 2.532 130.182 2.705 130.645 2.705 c
-131.104 2.705 131.472 2.535 131.748 2.205 c
-132.031 1.881 132.178 1.434 132.189 0.867 c
-132.189 0.441 l
-132.189 -0.129 132.045 -0.584 131.763 -0.926 c
-131.487 -1.261 131.119 -1.426 130.66 -1.426 c
-130.197 -1.426 129.826 -1.264 129.543 -0.941 c
-129.267 -0.61 129.124 -0.169 129.116 0.382 c
-h
-129.764 0.441 m
-129.764 0.037 129.841 -0.279 129.999 -0.515 c
-130.164 -0.75 130.385 -0.867 130.66 -0.867 c
-131.226 -0.867 131.52 -0.455 131.542 0.368 c
-131.542 0.823 l
-131.542 1.224 131.457 1.544 131.292 1.779 c
-131.134 2.022 130.917 2.146 130.645 2.146 c
-130.381 2.146 130.164 2.022 129.999 1.779 c
-129.841 1.544 129.764 1.224 129.764 0.823 c
-h
-135.834 -0.264 m
-136.554 2.631 l
-137.245 2.631 l
-135.952 -1.911 l
-135.852 -2.252 135.709 -2.514 135.526 -2.69 c
-135.349 -2.866 135.147 -2.955 134.923 -2.955 c
-134.834 -2.955 134.72 -2.932 134.585 -2.896 c
-134.585 -2.352 l
-134.732 -2.367 l
-134.915 -2.367 135.062 -2.323 135.173 -2.234 c
-135.279 -2.146 135.368 -1.988 135.437 -1.764 c
-135.555 -1.323 l
-134.393 2.631 l
-135.099 2.631 l
-h
-137.686 0.823 m
-137.686 1.4 137.822 1.856 138.098 2.19 c
-138.381 2.532 138.752 2.705 139.215 2.705 c
-139.674 2.705 140.041 2.535 140.317 2.205 c
-140.6 1.881 140.747 1.434 140.758 0.867 c
-140.758 0.441 l
-140.758 -0.129 140.615 -0.584 140.332 -0.926 c
-140.056 -1.261 139.689 -1.426 139.229 -1.426 c
-138.767 -1.426 138.395 -1.264 138.113 -0.941 c
-137.837 -0.61 137.693 -0.169 137.686 0.382 c
-h
-138.333 0.441 m
-138.333 0.037 138.41 -0.279 138.568 -0.515 c
-138.734 -0.75 138.954 -0.867 139.229 -0.867 c
-139.796 -0.867 140.089 -0.455 140.112 0.368 c
-140.112 0.823 l
-140.112 1.224 140.027 1.544 139.862 1.779 c
-139.704 2.022 139.487 2.146 139.215 2.146 c
-138.95 2.146 138.734 2.022 138.568 1.779 c
-138.41 1.544 138.333 1.224 138.333 0.823 c
-h
-143.625 -0.999 m
-143.408 -1.286 143.095 -1.426 142.684 -1.426 c
-142.32 -1.426 142.044 -1.305 141.861 -1.058 c
-141.684 -0.804 141.589 -0.441 141.581 0.029 c
-141.581 2.631 l
-142.229 2.631 l
-142.229 0.088 l
-142.229 -0.54 142.412 -0.852 142.786 -0.852 c
-143.187 -0.852 143.463 -0.676 143.609 -0.324 c
-143.609 2.631 l
-144.257 2.631 l
-144.257 -1.352 l
-143.64 -1.352 l
-h
-146.888 2.014 m
-146.8 2.032 146.701 2.043 146.594 2.043 c
-146.26 2.043 146.024 1.86 145.888 1.5 c
-145.888 -1.352 l
-145.242 -1.352 l
-145.242 2.631 l
-145.874 2.631 l
-145.888 2.219 l
-146.065 2.543 146.308 2.705 146.623 2.705 c
-146.73 2.705 146.818 2.683 146.888 2.646 c
-h
-150.636 -0.867 m
-150.849 -0.867 151.022 -0.804 151.15 -0.676 c
-151.287 -0.54 151.36 -0.349 151.371 -0.103 c
-151.989 -0.103 l
-151.966 -0.485 151.831 -0.804 151.577 -1.058 c
-151.32 -1.305 151.007 -1.426 150.636 -1.426 c
-150.144 -1.426 149.769 -1.275 149.504 -0.97 c
-149.247 -0.658 149.122 -0.191 149.122 0.426 c
-149.122 0.867 l
-149.122 1.463 149.247 1.918 149.504 2.234 c
-149.769 2.547 150.144 2.705 150.636 2.705 c
-151.037 2.705 151.356 2.572 151.592 2.308 c
-151.834 2.051 151.966 1.706 151.989 1.264 c
-151.371 1.264 l
-151.349 1.558 151.276 1.779 151.15 1.926 c
-151.033 2.072 150.86 2.146 150.636 2.146 c
-150.342 2.146 150.125 2.047 149.99 1.852 c
-149.849 1.665 149.776 1.357 149.769 0.926 c
-149.769 0.412 l
-149.769 -0.058 149.835 -0.393 149.975 -0.588 c
-150.121 -0.775 150.342 -0.867 150.636 -0.867 c
-152.606 0.823 m
-152.606 1.4 152.741 1.856 153.017 2.19 c
-153.3 2.532 153.672 2.705 154.134 2.705 c
-154.594 2.705 154.961 2.535 155.237 2.205 c
-155.52 1.881 155.667 1.434 155.678 0.867 c
-155.678 0.441 l
-155.678 -0.129 155.534 -0.584 155.251 -0.926 c
-154.976 -1.261 154.609 -1.426 154.149 -1.426 c
-153.686 -1.426 153.315 -1.264 153.032 -0.941 c
-152.756 -0.61 152.613 -0.169 152.606 0.382 c
-h
-153.252 0.441 m
-153.252 0.037 153.329 -0.279 153.487 -0.515 c
-153.653 -0.75 153.874 -0.867 154.149 -0.867 c
-154.715 -0.867 155.009 -0.455 155.031 0.368 c
-155.031 0.823 l
-155.031 1.224 154.946 1.544 154.781 1.779 c
-154.623 2.022 154.406 2.146 154.134 2.146 c
-153.87 2.146 153.653 2.022 153.487 1.779 c
-153.329 1.544 153.252 1.224 153.252 0.823 c
-h
-157.133 2.631 m
-157.148 2.263 l
-157.39 2.558 157.71 2.705 158.103 2.705 c
-158.544 2.705 158.852 2.506 159.029 2.117 c
-159.283 2.506 159.632 2.705 160.072 2.705 c
-160.808 2.705 161.183 2.242 161.204 1.323 c
-161.204 -1.352 l
-160.558 -1.352 l
-160.558 1.264 l
-160.558 1.558 160.502 1.771 160.396 1.911 c
-160.297 2.047 160.124 2.117 159.881 2.117 c
-159.683 2.117 159.521 2.036 159.397 1.881 c
-159.279 1.735 159.209 1.544 159.191 1.309 c
-159.191 -1.352 l
-158.53 -1.352 l
-158.53 1.294 l
-158.53 1.841 158.309 2.117 157.868 2.117 c
-157.533 2.117 157.298 1.955 157.163 1.631 c
-157.163 -1.352 l
-156.516 -1.352 l
-156.516 2.631 l
-h
-162.792 2.631 m
-162.807 2.263 l
-163.049 2.558 163.369 2.705 163.762 2.705 c
-164.203 2.705 164.512 2.506 164.689 2.117 c
-164.942 2.506 165.291 2.705 165.732 2.705 c
-166.467 2.705 166.842 2.242 166.864 1.323 c
-166.864 -1.352 l
-166.217 -1.352 l
-166.217 1.264 l
-166.217 1.558 166.162 1.771 166.056 1.911 c
-165.956 2.047 165.784 2.117 165.541 2.117 c
-165.342 2.117 165.181 2.036 165.056 1.881 c
-164.938 1.735 164.868 1.544 164.85 1.309 c
-164.85 -1.352 l
-164.188 -1.352 l
-164.188 1.294 l
-164.188 1.841 163.968 2.117 163.527 2.117 c
-163.193 2.117 162.958 1.955 162.821 1.631 c
-162.821 -1.352 l
-162.175 -1.352 l
-162.175 2.631 l
-h
-168.539 -1.352 -0.646 3.983 re
-168.583 3.674 m
-168.583 3.564 168.554 3.473 168.495 3.395 c
-168.437 3.326 168.341 3.293 168.216 3.293 c
-168.099 3.293 168.003 3.326 167.937 3.395 c
-167.878 3.473 167.849 3.564 167.849 3.674 c
-167.849 3.792 167.878 3.884 167.937 3.954 c
-168.003 4.031 168.099 4.072 168.216 4.072 c
-168.341 4.072 168.437 4.031 168.495 3.954 c
-168.554 3.873 168.583 3.782 168.583 3.674 c
-170.406 3.587 m
-170.406 2.631 l
-171.009 2.631 l
-171.009 2.102 l
-170.406 2.102 l
-170.406 -0.368 l
-170.406 -0.525 170.428 -0.643 170.48 -0.721 c
-170.538 -0.801 170.627 -0.838 170.744 -0.838 c
-170.833 -0.838 170.921 -0.823 171.009 -0.794 c
-171.009 -1.352 l
-170.862 -1.4 170.708 -1.426 170.553 -1.426 c
-170.296 -1.426 170.102 -1.334 169.965 -1.147 c
-169.826 -0.962 169.759 -0.702 169.759 -0.368 c
-169.759 2.102 l
-169.157 2.102 l
-169.157 2.631 l
-169.759 2.631 l
-169.759 3.587 l
-h
-173.713 -0.338 m
-173.713 -0.191 173.659 -0.07 173.552 0.029 c
-173.441 0.125 173.236 0.243 172.934 0.382 c
-172.589 0.53 172.346 0.651 172.2 0.75 c
-172.053 0.856 171.943 0.974 171.876 1.103 c
-171.806 1.228 171.773 1.386 171.773 1.573 c
-171.773 1.897 171.891 2.165 172.126 2.381 c
-172.361 2.595 172.662 2.705 173.038 2.705 c
-173.42 2.705 173.728 2.591 173.963 2.367 c
-174.199 2.139 174.316 1.852 174.316 1.5 c
-173.669 1.5 l
-173.669 1.675 173.611 1.827 173.493 1.955 c
-173.375 2.08 173.221 2.146 173.038 2.146 c
-172.839 2.146 172.689 2.091 172.581 1.984 c
-172.471 1.885 172.42 1.753 172.42 1.588 c
-172.42 1.459 172.456 1.353 172.537 1.264 c
-172.614 1.183 172.806 1.081 173.111 0.956 c
-173.589 0.769 173.919 0.58 174.096 0.397 c
-174.272 0.22 174.36 -0.008 174.36 -0.279 c
-174.36 -0.632 174.235 -0.912 173.993 -1.117 c
-173.757 -1.323 173.441 -1.426 173.052 -1.426 c
-172.629 -1.426 172.292 -1.309 172.038 -1.073 c
-171.781 -0.831 171.656 -0.525 171.656 -0.162 c
-172.302 -0.162 l
-172.31 -0.389 172.379 -0.565 172.508 -0.691 c
-172.633 -0.808 172.817 -0.867 173.052 -0.867 c
-173.265 -0.867 173.427 -0.819 173.537 -0.721 c
-173.655 -0.625 173.713 -0.496 173.713 -0.338 c
-178.962 -1.352 m
-178.921 -1.264 178.895 -1.117 178.887 -0.912 c
-178.652 -1.257 178.359 -1.426 178.006 -1.426 c
-177.642 -1.426 177.359 -1.33 177.153 -1.132 c
-176.955 -0.926 176.859 -0.64 176.859 -0.264 c
-176.859 0.136 176.995 0.455 177.271 0.69 c
-177.543 0.933 177.917 1.058 178.388 1.058 c
-178.873 1.058 l
-178.873 1.484 l
-178.873 1.72 178.818 1.885 178.711 1.984 c
-178.601 2.091 178.439 2.146 178.226 2.146 c
-178.027 2.146 177.866 2.087 177.741 1.97 c
-177.624 1.852 177.565 1.706 177.565 1.529 c
-176.918 1.529 l
-176.918 1.723 176.977 1.914 177.094 2.102 c
-177.219 2.286 177.381 2.433 177.58 2.543 c
-177.786 2.65 178.013 2.705 178.27 2.705 c
-178.671 2.705 178.976 2.602 179.182 2.396 c
-179.394 2.19 179.509 1.897 179.519 1.514 c
-179.519 -0.5 l
-179.519 -0.804 179.556 -1.07 179.637 -1.294 c
-179.637 -1.352 l
-h
-178.094 -0.838 m
-178.259 -0.838 178.41 -0.794 178.55 -0.706 c
-178.696 -0.617 178.804 -0.507 178.873 -0.368 c
-178.873 0.573 l
-178.505 0.573 l
-178.189 0.573 177.946 0.503 177.771 0.368 c
-177.594 0.239 177.506 0.052 177.506 -0.191 c
-177.506 -0.419 177.55 -0.584 177.638 -0.691 c
-177.726 -0.79 177.877 -0.838 178.094 -0.838 c
-181.137 2.631 m
-181.152 2.19 l
-181.405 2.532 181.728 2.705 182.121 2.705 c
-182.827 2.705 183.184 2.234 183.195 1.294 c
-183.195 -1.352 l
-182.548 -1.352 l
-182.548 1.264 l
-182.548 1.577 182.492 1.797 182.386 1.926 c
-182.276 2.051 182.121 2.117 181.915 2.117 c
-181.757 2.117 181.611 2.062 181.474 1.955 c
-181.346 1.845 181.243 1.709 181.166 1.544 c
-181.166 -1.352 l
-180.519 -1.352 l
-180.519 2.631 l
-h
-184.032 0.823 m
-184.032 1.43 184.142 1.897 184.371 2.219 c
-184.606 2.543 184.932 2.705 185.355 2.705 c
-185.738 2.705 186.035 2.547 186.252 2.234 c
-186.252 4.293 l
-186.899 4.293 l
-186.899 -1.352 l
-186.311 -1.352 l
-186.266 -0.926 l
-186.06 -1.261 185.756 -1.426 185.355 -1.426 c
-184.944 -1.426 184.62 -1.271 184.385 -0.956 c
-184.15 -0.632 184.032 -0.176 184.032 0.412 c
-h
-184.679 0.441 m
-184.679 0 184.741 -0.33 184.87 -0.544 c
-185.006 -0.75 185.227 -0.852 185.532 -0.852 c
-185.855 -0.852 186.094 -0.691 186.252 -0.368 c
-186.252 1.646 l
-186.083 1.959 185.844 2.117 185.532 2.117 c
-185.227 2.117 185.006 2.014 184.87 1.808 c
-184.741 1.602 184.679 1.278 184.679 0.838 c
-h
-190.471 3.587 m
-190.471 2.631 l
-191.073 2.631 l
-191.073 2.102 l
-190.471 2.102 l
-190.471 -0.368 l
-190.471 -0.525 190.492 -0.643 190.544 -0.721 c
-190.602 -0.801 190.691 -0.838 190.808 -0.838 c
-190.897 -0.838 190.985 -0.823 191.073 -0.794 c
-191.073 -1.352 l
-190.926 -1.4 190.772 -1.426 190.617 -1.426 c
-190.36 -1.426 190.166 -1.334 190.029 -1.147 c
-189.89 -0.962 189.823 -0.702 189.823 -0.368 c
-189.823 2.102 l
-189.221 2.102 l
-189.221 2.631 l
-189.823 2.631 l
-189.823 3.587 l
-h
-193.881 -1.352 m
-193.84 -1.264 193.815 -1.117 193.807 -0.912 c
-193.572 -1.257 193.278 -1.426 192.925 -1.426 c
-192.562 -1.426 192.279 -1.33 192.073 -1.132 c
-191.874 -0.926 191.778 -0.64 191.778 -0.264 c
-191.778 0.136 191.915 0.455 192.19 0.69 c
-192.462 0.933 192.837 1.058 193.308 1.058 c
-193.792 1.058 l
-193.792 1.484 l
-193.792 1.72 193.738 1.885 193.63 1.984 c
-193.52 2.091 193.359 2.146 193.146 2.146 c
-192.948 2.146 192.786 2.087 192.661 1.97 c
-192.543 1.852 192.484 1.706 192.484 1.529 c
-191.837 1.529 l
-191.837 1.723 191.897 1.914 192.013 2.102 c
-192.138 2.286 192.3 2.433 192.499 2.543 c
-192.705 2.65 192.932 2.705 193.189 2.705 c
-193.59 2.705 193.895 2.602 194.101 2.396 c
-194.314 2.19 194.428 1.897 194.44 1.514 c
-194.44 -0.5 l
-194.44 -0.804 194.476 -1.07 194.557 -1.294 c
-194.557 -1.352 l
-h
-193.013 -0.838 m
-193.179 -0.838 193.329 -0.794 193.469 -0.706 c
-193.616 -0.617 193.723 -0.507 193.792 -0.368 c
-193.792 0.573 l
-193.424 0.573 l
-193.109 0.573 192.867 0.503 192.69 0.368 c
-192.514 0.239 192.425 0.052 192.425 -0.191 c
-192.425 -0.419 192.47 -0.584 192.558 -0.691 c
-192.646 -0.79 192.797 -0.838 193.013 -0.838 c
-195.306 0.823 m
-195.306 1.44 195.417 1.904 195.645 2.219 c
-195.869 2.543 196.203 2.705 196.644 2.705 c
-197.044 2.705 197.349 2.529 197.555 2.176 c
-197.599 2.631 l
-198.187 2.631 l
-198.187 -1.396 l
-198.187 -1.885 198.059 -2.263 197.806 -2.528 c
-197.548 -2.793 197.195 -2.925 196.747 -2.925 c
-196.549 -2.925 196.328 -2.874 196.086 -2.778 c
-195.839 -2.679 195.66 -2.558 195.541 -2.41 c
-195.806 -1.97 l
-196.071 -2.234 196.368 -2.367 196.703 -2.367 c
-197.239 -2.367 197.515 -2.072 197.526 -1.484 c
-197.526 -0.956 l
-197.32 -1.271 197.019 -1.426 196.63 -1.426 c
-196.218 -1.426 195.895 -1.275 195.66 -0.97 c
-195.431 -0.658 195.313 -0.206 195.306 0.382 c
-h
-195.968 0.441 m
-195.968 0 196.03 -0.33 196.159 -0.544 c
-196.284 -0.75 196.501 -0.852 196.806 -0.852 c
-197.129 -0.852 197.368 -0.687 197.526 -0.353 c
-197.526 1.631 l
-197.357 1.955 197.118 2.117 196.806 2.117 c
-196.512 2.117 196.295 2.014 196.159 1.808 c
-196.03 1.602 195.968 1.278 195.968 0.838 c
-h
-201.083 -0.338 m
-201.083 -0.191 201.028 -0.07 200.921 0.029 c
-200.811 0.125 200.605 0.243 200.304 0.382 c
-199.959 0.53 199.716 0.651 199.569 0.75 c
-199.423 0.856 199.312 0.974 199.246 1.103 c
-199.176 1.228 199.143 1.386 199.143 1.573 c
-199.143 1.897 199.261 2.165 199.496 2.381 c
-199.731 2.595 200.032 2.705 200.407 2.705 c
-200.79 2.705 201.098 2.591 201.333 2.367 c
-201.568 2.139 201.686 1.852 201.686 1.5 c
-201.039 1.5 l
-201.039 1.675 200.98 1.827 200.863 1.955 c
-200.745 2.08 200.591 2.146 200.407 2.146 c
-200.208 2.146 200.058 2.091 199.951 1.984 c
-199.841 1.885 199.79 1.753 199.79 1.588 c
-199.79 1.459 199.826 1.353 199.907 1.264 c
-199.984 1.183 200.175 1.081 200.48 0.956 c
-200.958 0.769 201.289 0.58 201.465 0.397 c
-201.642 0.22 201.73 -0.008 201.73 -0.279 c
-201.73 -0.632 201.605 -0.912 201.362 -1.117 c
-201.127 -1.323 200.811 -1.426 200.422 -1.426 c
-199.999 -1.426 199.661 -1.309 199.408 -1.073 c
-199.15 -0.831 199.026 -0.525 199.026 -0.162 c
-199.672 -0.162 l
-199.679 -0.389 199.749 -0.565 199.878 -0.691 c
-200.003 -0.808 200.187 -0.867 200.422 -0.867 c
-200.635 -0.867 200.796 -0.819 200.907 -0.721 c
-201.025 -0.625 201.083 -0.496 201.083 -0.338 c
-202.612 -0.999 m
-202.612 -0.881 202.645 -0.786 202.715 -0.706 c
-202.781 -0.628 202.884 -0.588 203.024 -0.588 c
-203.171 -0.588 203.277 -0.628 203.346 -0.706 c
-203.424 -0.786 203.464 -0.881 203.464 -0.999 c
-203.464 -1.11 203.424 -1.201 203.346 -1.278 c
-203.277 -1.356 203.171 -1.396 203.024 -1.396 c
-202.884 -1.396 202.781 -1.356 202.715 -1.278 c
-202.645 -1.201 202.612 -1.11 202.612 -0.999 c
-f
-Q
-0.113 0.082 0.09 0 k
-35.668 354.533 238.665 -12.898 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 40.8563 347.6937 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.646 -0.243 -0.775 -0.367 -0.881 c
--0.496 -0.992 -0.658 -1.08 -0.852 -1.147 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.161 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.926 c
--3.127 -0.819 -3.23 -0.69 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.214 -3.484 -0.015 c
--2.66 0.133 l
--2.642 0.033 -2.616 -0.058 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.368 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.684 -1.992 0.69 -1.999 0.69 c
--2.167 0.727 -2.329 0.771 -2.484 0.823 c
--2.642 0.882 -2.786 0.96 -2.91 1.058 c
--3.039 1.154 -3.142 1.278 -3.219 1.426 c
--3.289 1.573 -3.322 1.756 -3.322 1.984 c
--3.322 2.179 -3.289 2.344 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.837 c
--2.8 2.932 -2.645 3.002 -2.469 3.042 c
--2.293 3.09 -2.102 3.119 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.119 -1.128 3.09 -0.97 3.042 c
--0.804 2.992 -0.669 2.918 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.202 2.344 -0.143 2.182 -0.103 1.999 c
--0.941 1.882 l
--1.01 2.253 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.353 c
--1.294 1.312 -1.117 1.264 -0.941 1.205 c
--0.756 1.147 -0.595 1.066 -0.455 0.97 c
--0.32 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.454 c
--2.26 2.425 -2.319 2.385 -2.366 2.337 c
--2.406 2.296 -2.437 2.249 -2.454 2.19 c
--2.477 2.132 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.779 c
--2.41 1.72 -2.373 1.668 -2.322 1.631 c
--2.263 1.591 -2.201 1.558 -2.131 1.529 c
--2.065 1.5 -1.984 1.47 -1.896 1.44 c
-h
--0.837 -0.015 m
--0.837 0.092 -0.86 0.177 -0.897 0.235 c
--0.926 0.301 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.53 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.529 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.015 c
-6.402 -2.66 m
-6.185 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.396 c
-5.284 -2.315 5.185 -2.219 5.108 -2.102 c
-5.039 -1.984 4.991 -1.856 4.961 -1.72 c
-5.858 -1.617 l
-5.895 -1.753 5.964 -1.86 6.064 -1.94 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.057 6.681 -2.028 c
-6.758 -1.999 6.828 -1.944 6.887 -1.866 c
-6.945 -1.797 6.99 -1.705 7.019 -1.587 c
-7.056 -1.469 7.078 -1.323 7.078 -1.147 c
-7.078 -0.956 l
-7.078 -0.889 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.073 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.215 -0.897 5.108 -0.75 c
-5.009 -0.595 4.935 -0.411 4.888 -0.206 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.771 4.836 1.018 4.888 1.235 c
-4.946 1.448 5.027 1.631 5.137 1.779 c
-5.245 1.933 5.376 2.051 5.534 2.132 c
-5.689 2.219 5.876 2.263 6.093 2.263 c
-6.188 2.263 6.288 2.253 6.387 2.234 c
-6.483 2.213 6.571 2.179 6.652 2.132 c
-6.739 2.08 6.817 2.018 6.887 1.941 c
-6.964 1.86 7.026 1.768 7.078 1.661 c
-7.092 1.661 l
-7.092 1.808 l
-7.1 1.866 7.107 1.918 7.107 1.97 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.152 2.219 c
-8.004 2.219 l
-7.993 2.138 7.982 2.028 7.975 1.882 c
-7.975 1.411 l
-7.975 -1.161 l
-7.975 -1.415 7.938 -1.635 7.871 -1.822 c
-7.802 -2.007 7.699 -2.161 7.563 -2.278 c
-7.423 -2.404 7.258 -2.499 7.063 -2.558 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.53 m
-7.092 0.742 7.067 0.919 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.5 6.729 1.558 6.652 1.588 c
-6.571 1.625 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.621 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.367 c
-5.88 1.278 5.835 1.161 5.799 1.014 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.338 c
-6.049 -0.515 6.211 -0.603 6.417 -0.603 c
-6.483 -0.603 6.556 -0.588 6.637 -0.559 c
-6.725 -0.522 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.176 7.019 -0.029 c
-7.067 0.118 7.092 0.301 7.092 0.53 c
-11.036 -0.646 m
-12.168 -0.646 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.646 l
-10.124 -0.646 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.219 l
-11.036 2.219 l
-h
-10.124 3.513 0.912 -0.675 re
-10.124 2.837 m
-13.6 1.602 m
-13.057 1.602 l
-13.057 2.219 l
-13.644 2.219 l
-13.924 3.117 l
-14.497 3.117 l
-14.497 2.219 l
-15.732 2.219 l
-15.732 1.602 l
-14.497 1.602 l
-14.497 -0.103 l
-14.497 -0.324 l
-14.504 -0.393 14.527 -0.455 14.556 -0.515 c
-14.593 -0.566 14.648 -0.61 14.718 -0.646 c
-14.795 -0.676 14.909 -0.69 15.056 -0.69 c
-15.192 -0.69 15.327 -0.687 15.468 -0.676 c
-15.603 -0.658 15.736 -0.632 15.865 -0.603 c
-15.865 -1.205 l
-15.784 -1.216 15.707 -1.231 15.629 -1.249 c
-15.549 -1.261 15.471 -1.268 15.394 -1.278 c
-15.313 -1.286 15.225 -1.293 15.129 -1.293 c
-15.041 -1.301 14.942 -1.309 14.835 -1.309 c
-14.648 -1.309 14.486 -1.293 14.35 -1.264 c
-14.221 -1.228 14.107 -1.183 14.012 -1.132 c
-13.924 -1.084 13.85 -1.025 13.791 -0.956 c
-13.733 -0.879 13.689 -0.802 13.66 -0.721 c
-13.63 -0.632 13.608 -0.544 13.6 -0.455 c
-13.59 -0.36 13.586 -0.264 13.586 -0.176 c
-h
-22.677 -1.323 m
-22.391 -1.323 22.148 -1.282 21.943 -1.205 c
-21.737 -1.117 21.564 -0.996 21.428 -0.838 c
-21.288 -0.684 21.185 -0.496 21.119 -0.279 c
-21.049 -0.056 21.016 0.191 21.016 0.455 c
-21.016 0.75 21.049 1.007 21.119 1.235 c
-21.197 1.459 21.303 1.646 21.442 1.793 c
-21.589 1.947 21.766 2.065 21.972 2.146 c
-22.178 2.234 22.413 2.278 22.677 2.278 c
-22.901 2.278 23.104 2.249 23.28 2.19 c
-23.456 2.132 23.607 2.047 23.736 1.941 c
-23.861 1.841 23.963 1.72 24.044 1.573 c
-24.122 1.433 24.176 1.282 24.206 1.118 c
-23.295 1.073 l
-23.265 1.249 23.196 1.389 23.089 1.5 c
-22.99 1.606 22.846 1.661 22.662 1.661 c
-22.416 1.661 22.24 1.558 22.134 1.353 c
-22.023 1.154 21.972 0.867 21.972 0.485 c
-21.972 -0.309 22.207 -0.706 22.677 -0.706 c
-22.843 -0.706 22.986 -0.654 23.104 -0.544 c
-23.221 -0.437 23.295 -0.276 23.324 -0.058 c
-24.235 -0.103 l
-24.206 -0.272 24.151 -0.426 24.074 -0.573 c
-24.004 -0.721 23.901 -0.852 23.765 -0.97 c
-23.636 -1.08 23.478 -1.168 23.295 -1.234 c
-23.119 -1.293 22.913 -1.323 22.677 -1.323 c
-28.384 0.485 m
-28.384 0.21 28.347 -0.04 28.281 -0.264 c
-28.212 -0.482 28.108 -0.669 27.973 -0.823 c
-27.833 -0.981 27.657 -1.103 27.443 -1.191 c
-27.227 -1.278 26.973 -1.323 26.679 -1.323 c
-26.404 -1.323 26.157 -1.278 25.944 -1.191 c
-25.739 -1.103 25.566 -0.981 25.43 -0.823 c
-25.29 -0.669 25.187 -0.482 25.121 -0.264 c
-25.051 -0.04 25.018 0.21 25.018 0.485 c
-25.018 0.738 25.047 0.974 25.106 1.191 c
-25.172 1.415 25.275 1.606 25.415 1.764 c
-25.55 1.929 25.727 2.058 25.944 2.146 c
-26.157 2.234 26.414 2.278 26.709 2.278 c
-27.021 2.278 27.281 2.234 27.487 2.146 c
-27.701 2.058 27.873 1.929 28.002 1.764 c
-28.138 1.606 28.237 1.415 28.296 1.191 c
-28.355 0.974 28.384 0.738 28.384 0.485 c
-27.429 0.485 m
-27.429 0.69 27.414 0.867 27.385 1.014 c
-27.362 1.161 27.326 1.282 27.267 1.382 c
-27.208 1.477 27.135 1.548 27.046 1.588 c
-26.959 1.635 26.848 1.661 26.724 1.661 c
-26.458 1.661 26.267 1.562 26.15 1.367 c
-26.032 1.18 25.974 0.885 25.974 0.485 c
-25.974 0.062 26.032 -0.243 26.15 -0.426 c
-26.267 -0.613 26.444 -0.706 26.679 -0.706 c
-26.804 -0.706 26.918 -0.687 27.017 -0.646 c
-27.113 -0.599 27.194 -0.526 27.252 -0.426 c
-27.318 -0.331 27.362 -0.206 27.385 -0.058 c
-27.414 0.088 27.429 0.268 27.429 0.485 c
-31.43 -1.264 m
-31.43 0.721 l
-31.43 1.022 31.387 1.242 31.298 1.382 c
-31.217 1.529 31.081 1.602 30.886 1.602 c
-30.776 1.602 30.674 1.577 30.578 1.529 c
-30.489 1.477 30.409 1.411 30.343 1.323 c
-30.284 1.235 30.233 1.124 30.196 1 c
-30.167 0.882 30.152 0.75 30.152 0.603 c
-30.152 -1.264 l
-29.24 -1.264 l
-29.24 1.44 l
-29.24 1.661 l
-29.24 1.749 29.233 1.826 29.226 1.897 c
-29.226 2.087 l
-29.226 2.219 l
-30.078 2.219 l
-30.086 2.19 30.093 2.146 30.093 2.087 c
-30.093 1.897 l
-30.1 1.826 30.107 1.756 30.107 1.691 c
-30.115 1.621 30.122 1.565 30.122 1.529 c
-30.137 1.529 l
-30.254 1.793 30.406 1.984 30.593 2.102 c
-30.776 2.219 30.996 2.278 31.254 2.278 c
-31.438 2.278 31.599 2.249 31.74 2.19 c
-31.875 2.132 31.989 2.043 32.077 1.926 c
-32.166 1.808 32.228 1.665 32.268 1.5 c
-32.316 1.341 32.342 1.154 32.342 0.941 c
-32.342 -1.264 l
-h
-34.951 1.602 m
-34.951 -1.264 l
-34.054 -1.264 l
-34.054 1.602 l
-33.232 1.602 l
-33.232 2.219 l
-34.054 2.219 l
-34.054 2.484 l
-34.054 2.609 34.069 2.741 34.098 2.882 c
-34.135 3.017 34.205 3.135 34.304 3.234 c
-34.41 3.341 34.554 3.429 34.73 3.499 c
-34.907 3.564 35.131 3.601 35.407 3.601 c
-35.62 3.601 35.819 3.59 35.995 3.572 c
-36.17 3.549 36.322 3.532 36.45 3.513 c
-36.45 2.925 l
-36.322 2.944 36.178 2.959 36.024 2.969 c
-35.866 2.977 35.715 2.984 35.568 2.984 c
-35.44 2.984 35.337 2.969 35.26 2.94 c
-35.179 2.911 35.116 2.87 35.069 2.822 c
-35.017 2.77 34.984 2.708 34.965 2.631 c
-34.955 2.562 34.951 2.484 34.951 2.396 c
-34.951 2.219 l
-36.377 2.219 l
-36.377 1.602 l
-h
-39.467 -0.646 m
-40.599 -0.646 l
-40.599 -1.264 l
-37.292 -1.264 l
-37.292 -0.646 l
-38.556 -0.646 l
-38.556 1.602 l
-37.63 1.602 l
-37.63 2.219 l
-39.467 2.219 l
-h
-38.556 3.513 0.911 -0.675 re
-38.556 2.837 m
-42.954 -2.66 m
-42.738 -2.66 42.547 -2.635 42.381 -2.587 c
-42.212 -2.547 42.073 -2.484 41.955 -2.396 c
-41.837 -2.315 41.738 -2.219 41.661 -2.102 c
-41.591 -1.984 41.543 -1.856 41.514 -1.72 c
-42.41 -1.617 l
-42.447 -1.753 42.518 -1.86 42.616 -1.94 c
-42.712 -2.028 42.837 -2.072 42.984 -2.072 c
-43.072 -2.072 43.153 -2.057 43.234 -2.028 c
-43.311 -1.999 43.381 -1.944 43.44 -1.866 c
-43.499 -1.797 43.542 -1.705 43.572 -1.587 c
-43.609 -1.469 43.631 -1.323 43.631 -1.147 c
-43.631 -0.956 l
-43.631 -0.889 43.634 -0.831 43.646 -0.779 c
-43.646 -0.588 l
-43.631 -0.588 l
-43.532 -0.816 43.388 -0.977 43.204 -1.073 c
-43.017 -1.172 42.811 -1.22 42.587 -1.22 c
-42.381 -1.22 42.198 -1.183 42.044 -1.103 c
-41.896 -1.014 41.768 -0.897 41.661 -0.75 c
-41.562 -0.595 41.488 -0.411 41.441 -0.206 c
-41.389 0.008 41.367 0.243 41.367 0.5 c
-41.367 0.771 41.389 1.018 41.441 1.235 c
-41.5 1.448 41.58 1.631 41.691 1.779 c
-41.797 1.933 41.93 2.051 42.088 2.132 c
-42.242 2.219 42.429 2.263 42.646 2.263 c
-42.742 2.263 42.84 2.253 42.94 2.234 c
-43.035 2.213 43.123 2.179 43.204 2.132 c
-43.293 2.08 43.37 2.018 43.44 1.941 c
-43.517 1.86 43.58 1.768 43.631 1.661 c
-43.646 1.661 l
-43.646 1.808 l
-43.653 1.866 43.66 1.918 43.66 1.97 c
-43.667 2.028 43.675 2.076 43.675 2.117 c
-43.682 2.165 43.694 2.198 43.704 2.219 c
-44.557 2.219 l
-44.546 2.138 44.535 2.028 44.527 1.882 c
-44.527 1.411 l
-44.527 -1.161 l
-44.527 -1.415 44.49 -1.635 44.425 -1.822 c
-44.355 -2.007 44.251 -2.161 44.116 -2.278 c
-43.976 -2.404 43.811 -2.499 43.616 -2.558 c
-43.418 -2.624 43.197 -2.66 42.954 -2.66 c
-43.646 0.53 m
-43.646 0.742 43.619 0.919 43.572 1.058 c
-43.532 1.205 43.476 1.323 43.41 1.411 c
-43.351 1.5 43.282 1.558 43.204 1.588 c
-43.123 1.625 43.046 1.646 42.969 1.646 c
-42.87 1.646 42.778 1.621 42.69 1.573 c
-42.609 1.532 42.543 1.463 42.484 1.367 c
-42.433 1.278 42.389 1.161 42.352 1.014 c
-42.323 0.875 42.308 0.706 42.308 0.5 c
-42.308 0.125 42.366 -0.154 42.484 -0.338 c
-42.601 -0.515 42.763 -0.603 42.969 -0.603 c
-43.035 -0.603 43.109 -0.588 43.189 -0.559 c
-43.278 -0.522 43.351 -0.463 43.41 -0.382 c
-43.476 -0.294 43.532 -0.176 43.572 -0.029 c
-43.619 0.118 43.646 0.301 43.646 0.53 c
-50.135 0.838 1.867 -0.794 re
-50.135 0.044 m
-54.2 0.838 1.866 -0.794 re
-54.2 0.044 m
-59.201 -2.66 m
-58.983 -2.66 58.792 -2.635 58.628 -2.587 c
-58.458 -2.547 58.318 -2.484 58.201 -2.396 c
-58.083 -2.315 57.984 -2.219 57.907 -2.102 c
-57.838 -1.984 57.79 -1.856 57.76 -1.72 c
-58.657 -1.617 l
-58.694 -1.753 58.763 -1.86 58.863 -1.94 c
-58.958 -2.028 59.083 -2.072 59.23 -2.072 c
-59.318 -2.072 59.399 -2.057 59.48 -2.028 c
-59.557 -1.999 59.627 -1.944 59.686 -1.866 c
-59.744 -1.797 59.789 -1.705 59.818 -1.587 c
-59.855 -1.469 59.877 -1.323 59.877 -1.147 c
-59.877 -0.956 l
-59.877 -0.889 59.881 -0.831 59.891 -0.779 c
-59.891 -0.588 l
-59.877 -0.588 l
-59.777 -0.816 59.634 -0.977 59.451 -1.073 c
-59.263 -1.172 59.058 -1.22 58.833 -1.22 c
-58.628 -1.22 58.443 -1.183 58.289 -1.103 c
-58.142 -1.014 58.014 -0.897 57.907 -0.75 c
-57.807 -0.595 57.734 -0.411 57.687 -0.206 c
-57.635 0.008 57.613 0.243 57.613 0.5 c
-57.613 0.771 57.635 1.018 57.687 1.235 c
-57.745 1.448 57.826 1.631 57.936 1.779 c
-58.043 1.933 58.175 2.051 58.333 2.132 c
-58.488 2.219 58.675 2.263 58.892 2.263 c
-58.987 2.263 59.087 2.253 59.186 2.234 c
-59.282 2.213 59.37 2.179 59.451 2.132 c
-59.538 2.08 59.616 2.018 59.686 1.941 c
-59.763 1.86 59.825 1.768 59.877 1.661 c
-59.891 1.661 l
-59.891 1.808 l
-59.899 1.866 59.906 1.918 59.906 1.97 c
-59.914 2.028 59.921 2.076 59.921 2.117 c
-59.928 2.165 59.939 2.198 59.951 2.219 c
-60.803 2.219 l
-60.792 2.138 60.781 2.028 60.774 1.882 c
-60.774 1.411 l
-60.774 -1.161 l
-60.774 -1.415 60.737 -1.635 60.67 -1.822 c
-60.601 -2.007 60.498 -2.161 60.362 -2.278 c
-60.222 -2.404 60.057 -2.499 59.862 -2.558 c
-59.664 -2.624 59.443 -2.66 59.201 -2.66 c
-59.891 0.53 m
-59.891 0.742 59.866 0.919 59.818 1.058 c
-59.777 1.205 59.723 1.323 59.656 1.411 c
-59.598 1.5 59.528 1.558 59.451 1.588 c
-59.37 1.625 59.293 1.646 59.216 1.646 c
-59.116 1.646 59.024 1.621 58.936 1.573 c
-58.855 1.532 58.789 1.463 58.73 1.367 c
-58.679 1.278 58.634 1.161 58.598 1.014 c
-58.569 0.875 58.553 0.706 58.553 0.5 c
-58.553 0.125 58.613 -0.154 58.73 -0.338 c
-58.848 -0.515 59.01 -0.603 59.216 -0.603 c
-59.282 -0.603 59.355 -0.588 59.436 -0.559 c
-59.524 -0.522 59.598 -0.463 59.656 -0.382 c
-59.723 -0.294 59.777 -0.176 59.818 -0.029 c
-59.866 0.118 59.891 0.301 59.891 0.53 c
-63.835 -0.646 m
-64.967 -0.646 l
-64.967 -1.264 l
-61.659 -1.264 l
-61.659 -0.646 l
-62.923 -0.646 l
-62.923 2.896 l
-61.998 2.896 l
-61.998 3.513 l
-63.835 3.513 l
-h
-68.998 0.485 m
-68.998 0.21 68.961 -0.04 68.895 -0.264 c
-68.824 -0.482 68.722 -0.669 68.586 -0.823 c
-68.446 -0.981 68.27 -1.103 68.057 -1.191 c
-67.84 -1.278 67.586 -1.323 67.293 -1.323 c
-67.017 -1.323 66.771 -1.278 66.557 -1.191 c
-66.352 -1.103 66.179 -0.981 66.043 -0.823 c
-65.903 -0.669 65.801 -0.482 65.734 -0.264 c
-65.665 -0.04 65.632 0.21 65.632 0.485 c
-65.632 0.738 65.661 0.974 65.72 1.191 c
-65.786 1.415 65.888 1.606 66.029 1.764 c
-66.164 1.929 66.341 2.058 66.557 2.146 c
-66.771 2.234 67.028 2.278 67.322 2.278 c
-67.634 2.278 67.895 2.234 68.101 2.146 c
-68.314 2.058 68.487 1.929 68.616 1.764 c
-68.751 1.606 68.851 1.415 68.909 1.191 c
-68.968 0.974 68.998 0.738 68.998 0.485 c
-68.042 0.485 m
-68.042 0.69 68.028 0.867 67.999 1.014 c
-67.976 1.161 67.939 1.282 67.881 1.382 c
-67.822 1.477 67.748 1.548 67.66 1.588 c
-67.571 1.635 67.461 1.661 67.336 1.661 c
-67.072 1.661 66.881 1.562 66.763 1.367 c
-66.646 1.18 66.587 0.885 66.587 0.485 c
-66.587 0.062 66.646 -0.243 66.763 -0.426 c
-66.881 -0.613 67.058 -0.706 67.293 -0.706 c
-67.417 -0.706 67.531 -0.687 67.631 -0.646 c
-67.726 -0.599 67.807 -0.526 67.866 -0.426 c
-67.932 -0.331 67.976 -0.206 67.999 -0.058 c
-68.028 0.088 68.042 0.268 68.042 0.485 c
-69.854 -1.264 m
-69.854 -0.97 l
-69.861 -0.834 69.869 -0.676 69.869 -0.5 c
-69.869 3.513 l
-70.78 3.513 l
-70.78 2.234 l
-70.78 2.072 l
-70.78 1.897 l
-70.78 1.845 70.773 1.801 70.765 1.764 c
-70.765 1.675 l
-70.78 1.675 l
-70.827 1.783 70.89 1.874 70.971 1.955 c
-71.048 2.032 71.133 2.095 71.221 2.146 c
-71.309 2.194 71.401 2.227 71.5 2.249 c
-71.596 2.267 71.695 2.278 71.794 2.278 c
-72.007 2.278 72.194 2.234 72.352 2.146 c
-72.507 2.058 72.635 1.929 72.735 1.764 c
-72.841 1.606 72.919 1.415 72.97 1.191 c
-73.017 0.974 73.044 0.735 73.044 0.47 c
-73.044 0.214 73.015 -0.025 72.955 -0.25 c
-72.897 -0.467 72.812 -0.658 72.705 -0.823 c
-72.595 -0.981 72.463 -1.103 72.309 -1.191 c
-72.151 -1.278 71.97 -1.323 71.764 -1.323 c
-71.666 -1.323 71.567 -1.311 71.471 -1.293 c
-71.382 -1.272 71.294 -1.242 71.206 -1.191 c
-71.118 -1.132 71.037 -1.066 70.971 -0.985 c
-70.901 -0.908 70.839 -0.808 70.78 -0.69 c
-70.765 -0.69 l
-70.765 -0.852 l
-70.765 -0.912 70.758 -0.97 70.75 -1.029 c
-70.75 -1.08 70.743 -1.128 70.736 -1.176 c
-70.736 -1.216 70.729 -1.246 70.721 -1.264 c
-h
-70.765 0.5 m
-70.765 0.264 70.783 0.066 70.824 -0.088 c
-70.872 -0.246 70.931 -0.368 71 -0.455 c
-71.066 -0.544 71.14 -0.61 71.221 -0.646 c
-71.298 -0.687 71.375 -0.706 71.456 -0.706 c
-71.662 -0.706 71.816 -0.61 71.926 -0.411 c
-72.044 -0.216 72.103 0.077 72.103 0.47 c
-72.103 0.684 72.08 0.867 72.044 1.014 c
-72.015 1.168 71.97 1.294 71.912 1.382 c
-71.86 1.477 71.794 1.55 71.706 1.602 c
-71.625 1.65 71.537 1.675 71.442 1.675 c
-71.361 1.675 71.284 1.654 71.206 1.617 c
-71.126 1.577 71.052 1.514 70.985 1.426 c
-70.927 1.338 70.872 1.213 70.824 1.058 c
-70.783 0.912 70.765 0.724 70.765 0.5 c
-74.873 -1.323 m
-74.704 -1.323 74.554 -1.301 74.418 -1.264 c
-74.289 -1.216 74.175 -1.147 74.079 -1.058 c
-73.992 -0.97 73.921 -0.864 73.874 -0.735 c
-73.823 -0.599 73.8 -0.449 73.8 -0.279 c
-73.8 -0.073 73.834 0.096 73.904 0.235 c
-73.969 0.382 74.065 0.492 74.183 0.573 c
-74.308 0.661 74.451 0.724 74.609 0.765 c
-74.775 0.802 74.951 0.827 75.138 0.838 c
-75.858 0.852 l
-75.858 1.029 l
-75.858 1.147 75.847 1.249 75.829 1.338 c
-75.807 1.426 75.774 1.492 75.726 1.544 c
-75.685 1.602 75.638 1.639 75.579 1.661 c
-75.521 1.679 75.454 1.691 75.388 1.691 c
-75.318 1.691 75.255 1.679 75.197 1.661 c
-75.145 1.65 75.097 1.625 75.05 1.588 c
-75.01 1.558 74.976 1.507 74.947 1.44 c
-74.925 1.382 74.91 1.301 74.903 1.205 c
-73.962 1.249 l
-73.992 1.396 74.035 1.532 74.095 1.661 c
-74.16 1.786 74.256 1.897 74.374 1.984 c
-74.492 2.08 74.631 2.153 74.8 2.205 c
-74.976 2.253 75.182 2.278 75.417 2.278 c
-75.858 2.278 76.19 2.168 76.417 1.955 c
-76.652 1.749 76.77 1.44 76.77 1.029 c
-76.77 -0.235 l
-76.77 -0.455 l
-76.777 -0.515 76.792 -0.569 76.814 -0.617 c
-76.832 -0.658 76.861 -0.69 76.902 -0.721 c
-76.938 -0.742 76.99 -0.75 77.049 -0.75 c
-77.115 -0.75 77.185 -0.746 77.254 -0.735 c
-77.254 -1.22 l
-77.196 -1.231 77.141 -1.242 77.093 -1.249 c
-77.053 -1.261 77.013 -1.268 76.976 -1.278 c
-76.936 -1.286 76.891 -1.293 76.843 -1.293 c
-76.792 -1.301 76.733 -1.309 76.666 -1.309 c
-76.439 -1.309 76.273 -1.257 76.167 -1.147 c
-76.057 -1.029 75.995 -0.864 75.976 -0.646 c
-75.961 -0.646 l
-75.891 -0.757 75.822 -0.852 75.756 -0.941 c
-75.685 -1.022 75.608 -1.087 75.521 -1.147 c
-75.432 -1.205 75.333 -1.249 75.226 -1.278 c
-75.127 -1.309 75.01 -1.323 74.873 -1.323 c
-75.858 0.353 m
-75.432 0.338 l
-75.333 0.338 75.241 0.331 75.153 0.324 c
-75.072 0.312 75.006 0.287 74.947 0.25 c
-74.889 0.21 74.837 0.151 74.8 0.073 c
-74.76 0.004 74.741 -0.088 74.741 -0.206 c
-74.741 -0.374 74.775 -0.496 74.844 -0.573 c
-74.91 -0.654 75.01 -0.69 75.138 -0.69 c
-75.245 -0.69 75.344 -0.669 75.432 -0.617 c
-75.527 -0.569 75.608 -0.507 75.667 -0.426 c
-75.733 -0.349 75.785 -0.261 75.814 -0.162 c
-75.843 -0.056 75.858 0.059 75.858 0.177 c
-h
-80.08 -0.646 m
-81.212 -0.646 l
-81.212 -1.264 l
-77.905 -1.264 l
-77.905 -0.646 l
-79.17 -0.646 l
-79.17 2.896 l
-78.243 2.896 l
-78.243 3.513 l
-80.08 3.513 l
-h
-87.658 -1.323 m
-87.371 -1.323 87.128 -1.282 86.923 -1.205 c
-86.717 -1.117 86.544 -0.996 86.409 -0.838 c
-86.269 -0.684 86.166 -0.496 86.1 -0.279 c
-86.03 -0.056 85.997 0.191 85.997 0.455 c
-85.997 0.75 86.03 1.007 86.1 1.235 c
-86.177 1.459 86.284 1.646 86.423 1.793 c
-86.571 1.947 86.747 2.065 86.953 2.146 c
-87.159 2.234 87.394 2.278 87.658 2.278 c
-87.882 2.278 88.084 2.249 88.261 2.19 c
-88.437 2.132 88.588 2.047 88.716 1.941 c
-88.842 1.841 88.944 1.72 89.025 1.573 c
-89.102 1.433 89.158 1.282 89.187 1.118 c
-88.275 1.073 l
-88.246 1.249 88.176 1.389 88.069 1.5 c
-87.97 1.606 87.827 1.661 87.643 1.661 c
-87.398 1.661 87.221 1.558 87.114 1.353 c
-87.004 1.154 86.953 0.867 86.953 0.485 c
-86.953 -0.309 87.188 -0.706 87.658 -0.706 c
-87.824 -0.706 87.967 -0.654 88.084 -0.544 c
-88.202 -0.437 88.275 -0.276 88.304 -0.058 c
-89.216 -0.103 l
-89.187 -0.272 89.131 -0.426 89.054 -0.573 c
-88.985 -0.721 88.882 -0.852 88.746 -0.97 c
-88.617 -1.08 88.46 -1.168 88.275 -1.234 c
-88.099 -1.293 87.893 -1.323 87.658 -1.323 c
-93.365 0.485 m
-93.365 0.21 93.328 -0.04 93.262 -0.264 c
-93.192 -0.482 93.089 -0.669 92.954 -0.823 c
-92.813 -0.981 92.637 -1.103 92.424 -1.191 c
-92.208 -1.278 91.954 -1.323 91.66 -1.323 c
-91.384 -1.323 91.138 -1.278 90.925 -1.191 c
-90.719 -1.103 90.546 -0.981 90.411 -0.823 c
-90.271 -0.669 90.168 -0.482 90.102 -0.264 c
-90.032 -0.04 89.999 0.21 89.999 0.485 c
-89.999 0.738 90.028 0.974 90.087 1.191 c
-90.153 1.415 90.256 1.606 90.396 1.764 c
-90.532 1.929 90.708 2.058 90.925 2.146 c
-91.138 2.234 91.396 2.278 91.689 2.278 c
-92.001 2.278 92.263 2.234 92.468 2.146 c
-92.682 2.058 92.854 1.929 92.983 1.764 c
-93.119 1.606 93.218 1.415 93.277 1.191 c
-93.335 0.974 93.365 0.738 93.365 0.485 c
-92.41 0.485 m
-92.41 0.69 92.395 0.867 92.366 1.014 c
-92.343 1.161 92.306 1.282 92.248 1.382 c
-92.189 1.477 92.115 1.548 92.028 1.588 c
-91.939 1.635 91.829 1.661 91.704 1.661 c
-91.439 1.661 91.248 1.562 91.13 1.367 c
-91.013 1.18 90.954 0.885 90.954 0.485 c
-90.954 0.062 91.013 -0.243 91.13 -0.426 c
-91.248 -0.613 91.425 -0.706 91.66 -0.706 c
-91.785 -0.706 91.899 -0.687 91.998 -0.646 c
-92.094 -0.599 92.175 -0.526 92.233 -0.426 c
-92.3 -0.331 92.343 -0.206 92.366 -0.058 c
-92.395 0.088 92.41 0.268 92.41 0.485 c
-96.327 -0.646 m
-97.459 -0.646 l
-97.459 -1.264 l
-94.151 -1.264 l
-94.151 -0.646 l
-95.415 -0.646 l
-95.415 2.896 l
-94.49 2.896 l
-94.49 3.513 l
-96.327 3.513 l
-h
-101.49 0.485 m
-101.49 0.21 101.453 -0.04 101.387 -0.264 c
-101.317 -0.482 101.214 -0.669 101.079 -0.823 c
-100.939 -0.981 100.763 -1.103 100.549 -1.191 c
-100.333 -1.278 100.079 -1.323 99.785 -1.323 c
-99.51 -1.323 99.263 -1.278 99.049 -1.191 c
-98.844 -1.103 98.671 -0.981 98.535 -0.823 c
-98.396 -0.669 98.293 -0.482 98.226 -0.264 c
-98.157 -0.04 98.124 0.21 98.124 0.485 c
-98.124 0.738 98.153 0.974 98.212 1.191 c
-98.278 1.415 98.381 1.606 98.521 1.764 c
-98.656 1.929 98.833 2.058 99.049 2.146 c
-99.263 2.234 99.52 2.278 99.814 2.278 c
-100.127 2.278 100.387 2.234 100.593 2.146 c
-100.807 2.058 100.979 1.929 101.108 1.764 c
-101.243 1.606 101.343 1.415 101.401 1.191 c
-101.461 0.974 101.49 0.738 101.49 0.485 c
-100.534 0.485 m
-100.534 0.69 100.52 0.867 100.491 1.014 c
-100.468 1.161 100.431 1.282 100.373 1.382 c
-100.314 1.477 100.24 1.548 100.152 1.588 c
-100.064 1.635 99.954 1.661 99.828 1.661 c
-99.564 1.661 99.373 1.562 99.256 1.367 c
-99.138 1.18 99.08 0.885 99.08 0.485 c
-99.08 0.062 99.138 -0.243 99.256 -0.426 c
-99.373 -0.613 99.55 -0.706 99.785 -0.706 c
-99.909 -0.706 100.024 -0.687 100.123 -0.646 c
-100.219 -0.599 100.299 -0.526 100.358 -0.426 c
-100.424 -0.331 100.468 -0.206 100.491 -0.058 c
-100.52 0.088 100.534 0.268 100.534 0.485 c
-105.359 1.47 m
-105.26 1.477 105.158 1.488 105.05 1.5 c
-104.94 1.517 104.819 1.529 104.684 1.529 c
-104.507 1.529 104.349 1.488 104.213 1.411 c
-104.073 1.341 103.955 1.242 103.86 1.118 c
-103.772 0.989 103.702 0.842 103.654 0.676 c
-103.614 0.507 103.595 0.331 103.595 0.147 c
-103.595 -1.264 l
-102.699 -1.264 l
-102.699 0.985 l
-102.699 1.11 102.688 1.235 102.669 1.353 c
-102.658 1.477 102.644 1.595 102.625 1.706 c
-102.614 1.823 102.6 1.918 102.581 1.999 c
-102.559 2.087 102.541 2.161 102.523 2.219 c
-103.404 2.219 l
-103.412 2.168 103.423 2.117 103.433 2.058 c
-103.452 1.999 103.467 1.933 103.478 1.866 c
-103.496 1.808 103.511 1.742 103.522 1.675 c
-103.529 1.606 103.541 1.544 103.552 1.484 c
-103.566 1.484 l
-103.603 1.602 103.654 1.708 103.713 1.808 c
-103.78 1.903 103.86 1.988 103.948 2.058 c
-104.036 2.124 104.139 2.179 104.257 2.219 c
-104.382 2.256 104.529 2.278 104.698 2.278 c
-104.823 2.278 104.94 2.271 105.05 2.263 c
-105.168 2.253 105.272 2.238 105.359 2.219 c
-h
-107.465 -0.279 0.926 -0.985 re
-107.465 -1.264 m
-111.35 2.219 m
-111.35 0.264 l
-111.35 0.125 111.356 0 111.379 -0.118 c
-111.397 -0.228 111.43 -0.32 111.481 -0.397 c
-111.529 -0.478 111.588 -0.54 111.658 -0.588 c
-111.724 -0.628 111.809 -0.646 111.908 -0.646 c
-111.996 -0.646 112.077 -0.628 112.158 -0.588 c
-112.246 -0.54 112.32 -0.47 112.378 -0.382 c
-112.437 -0.287 112.481 -0.176 112.511 -0.058 c
-112.547 0.066 112.569 0.206 112.569 0.353 c
-112.569 2.219 l
-113.466 2.219 l
-113.466 -0.485 l
-113.466 -0.721 l
-113.473 -0.802 113.48 -0.879 113.48 -0.956 c
-113.48 -1.147 l
-113.488 -1.198 113.495 -1.234 113.495 -1.264 c
-112.643 -1.264 l
-112.632 -1.234 112.621 -1.198 112.613 -1.147 c
-112.613 -0.956 l
-112.613 -0.889 112.606 -0.819 112.599 -0.75 c
-112.599 -0.573 l
-112.584 -0.573 l
-112.466 -0.838 112.312 -1.029 112.129 -1.147 c
-111.952 -1.264 111.749 -1.323 111.526 -1.323 c
-111.32 -1.323 111.147 -1.286 111.011 -1.22 c
-110.872 -1.154 110.762 -1.058 110.673 -0.941 c
-110.592 -0.823 110.533 -0.687 110.496 -0.529 c
-110.467 -0.364 110.452 -0.187 110.452 0 c
-110.452 2.219 l
-h
-116.634 -0.646 m
-117.766 -0.646 l
-117.766 -1.264 l
-114.458 -1.264 l
-114.458 -0.646 l
-115.722 -0.646 l
-115.722 1.602 l
-114.797 1.602 l
-114.797 2.219 l
-116.634 2.219 l
-h
-115.722 3.513 0.912 -0.675 re
-115.722 2.837 m
-123.608 -1.323 m
-123.439 -1.323 123.289 -1.301 123.152 -1.264 c
-123.024 -1.216 122.91 -1.147 122.814 -1.058 c
-122.726 -0.97 122.656 -0.864 122.608 -0.735 c
-122.558 -0.599 122.535 -0.449 122.535 -0.279 c
-122.535 -0.073 122.568 0.096 122.639 0.235 c
-122.704 0.382 122.799 0.492 122.917 0.573 c
-123.042 0.661 123.186 0.724 123.344 0.765 c
-123.509 0.802 123.686 0.827 123.873 0.838 c
-124.593 0.852 l
-124.593 1.029 l
-124.593 1.147 124.582 1.249 124.563 1.338 c
-124.542 1.426 124.509 1.492 124.461 1.544 c
-124.42 1.602 124.372 1.639 124.314 1.661 c
-124.255 1.679 124.189 1.691 124.123 1.691 c
-124.052 1.691 123.99 1.679 123.932 1.661 c
-123.88 1.65 123.832 1.625 123.784 1.588 c
-123.744 1.558 123.711 1.507 123.682 1.44 c
-123.659 1.382 123.645 1.301 123.638 1.205 c
-122.697 1.249 l
-122.726 1.396 122.77 1.532 122.829 1.661 c
-122.895 1.786 122.991 1.897 123.109 1.984 c
-123.227 2.08 123.366 2.153 123.535 2.205 c
-123.711 2.253 123.917 2.278 124.152 2.278 c
-124.593 2.278 124.924 2.168 125.151 1.955 c
-125.386 1.749 125.504 1.44 125.504 1.029 c
-125.504 -0.235 l
-125.504 -0.455 l
-125.512 -0.515 125.527 -0.569 125.548 -0.617 c
-125.567 -0.658 125.596 -0.69 125.637 -0.721 c
-125.673 -0.742 125.725 -0.75 125.783 -0.75 c
-125.85 -0.75 125.92 -0.746 125.989 -0.735 c
-125.989 -1.22 l
-125.931 -1.231 125.876 -1.242 125.828 -1.249 c
-125.787 -1.261 125.747 -1.268 125.71 -1.278 c
-125.67 -1.286 125.625 -1.293 125.578 -1.293 c
-125.527 -1.301 125.467 -1.309 125.401 -1.309 c
-125.174 -1.309 125.008 -1.257 124.902 -1.147 c
-124.792 -1.029 124.729 -0.864 124.711 -0.646 c
-124.696 -0.646 l
-124.626 -0.757 124.557 -0.852 124.49 -0.941 c
-124.42 -1.022 124.343 -1.087 124.255 -1.147 c
-124.167 -1.205 124.068 -1.249 123.961 -1.278 c
-123.861 -1.309 123.744 -1.323 123.608 -1.323 c
-124.593 0.353 m
-124.167 0.338 l
-124.068 0.338 123.975 0.331 123.888 0.324 c
-123.807 0.312 123.74 0.287 123.682 0.25 c
-123.623 0.21 123.572 0.151 123.535 0.073 c
-123.495 0.004 123.476 -0.088 123.476 -0.206 c
-123.476 -0.374 123.509 -0.496 123.579 -0.573 c
-123.645 -0.654 123.744 -0.69 123.873 -0.69 c
-123.979 -0.69 124.079 -0.669 124.167 -0.617 c
-124.262 -0.569 124.343 -0.507 124.402 -0.426 c
-124.468 -0.349 124.52 -0.261 124.549 -0.162 c
-124.578 -0.056 124.593 0.059 124.593 0.177 c
-h
-127.595 2.219 m
-127.595 0.264 l
-127.595 0.125 127.603 0 127.624 -0.118 c
-127.643 -0.228 127.676 -0.32 127.728 -0.397 c
-127.776 -0.478 127.834 -0.54 127.904 -0.588 c
-127.971 -0.628 128.054 -0.646 128.154 -0.646 c
-128.243 -0.646 128.323 -0.628 128.403 -0.588 c
-128.492 -0.54 128.565 -0.47 128.624 -0.382 c
-128.683 -0.287 128.727 -0.176 128.756 -0.058 c
-128.794 0.066 128.815 0.206 128.815 0.353 c
-128.815 2.219 l
-129.712 2.219 l
-129.712 -0.485 l
-129.712 -0.721 l
-129.719 -0.802 129.727 -0.879 129.727 -0.956 c
-129.727 -1.147 l
-129.735 -1.198 129.741 -1.234 129.741 -1.264 c
-128.889 -1.264 l
-128.878 -1.234 128.867 -1.198 128.86 -1.147 c
-128.86 -0.956 l
-128.86 -0.889 128.852 -0.819 128.845 -0.75 c
-128.845 -0.573 l
-128.83 -0.573 l
-128.713 -0.838 128.559 -1.029 128.374 -1.147 c
-128.198 -1.264 127.996 -1.323 127.772 -1.323 c
-127.566 -1.323 127.393 -1.286 127.258 -1.22 c
-127.117 -1.154 127.007 -1.058 126.919 -0.941 c
-126.838 -0.823 126.78 -0.687 126.743 -0.529 c
-126.714 -0.364 126.699 -0.187 126.699 0 c
-126.699 2.219 l
-h
-131.377 1.602 m
-130.833 1.602 l
-130.833 2.219 l
-131.42 2.219 l
-131.7 3.117 l
-132.274 3.117 l
-132.274 2.219 l
-133.508 2.219 l
-133.508 1.602 l
-132.274 1.602 l
-132.274 -0.103 l
-132.274 -0.324 l
-132.281 -0.393 132.303 -0.455 132.332 -0.515 c
-132.369 -0.566 132.424 -0.61 132.494 -0.646 c
-132.571 -0.676 132.685 -0.69 132.831 -0.69 c
-132.968 -0.69 133.104 -0.687 133.243 -0.676 c
-133.38 -0.658 133.512 -0.632 133.64 -0.603 c
-133.64 -1.205 l
-133.56 -1.216 133.482 -1.231 133.405 -1.249 c
-133.324 -1.261 133.247 -1.268 133.17 -1.278 c
-133.089 -1.286 133.001 -1.293 132.906 -1.293 c
-132.817 -1.301 132.718 -1.309 132.611 -1.309 c
-132.424 -1.309 132.262 -1.293 132.126 -1.264 c
-131.998 -1.228 131.884 -1.183 131.788 -1.132 c
-131.7 -1.084 131.626 -1.025 131.568 -0.956 c
-131.509 -0.879 131.465 -0.802 131.435 -0.721 c
-131.406 -0.632 131.384 -0.544 131.377 -0.455 c
-131.366 -0.36 131.362 -0.264 131.362 -0.176 c
-h
-138.043 0.485 m
-138.043 0.21 138.006 -0.04 137.94 -0.264 c
-137.87 -0.482 137.768 -0.669 137.631 -0.823 c
-137.492 -0.981 137.315 -1.103 137.102 -1.191 c
-136.885 -1.278 136.632 -1.323 136.338 -1.323 c
-136.062 -1.323 135.815 -1.278 135.603 -1.191 c
-135.397 -1.103 135.224 -0.981 135.088 -0.823 c
-134.948 -0.669 134.846 -0.482 134.78 -0.264 c
-134.71 -0.04 134.676 0.21 134.676 0.485 c
-134.676 0.738 134.706 0.974 134.765 1.191 c
-134.831 1.415 134.934 1.606 135.073 1.764 c
-135.21 1.929 135.386 2.058 135.603 2.146 c
-135.815 2.234 136.073 2.278 136.367 2.278 c
-136.679 2.278 136.941 2.234 137.146 2.146 c
-137.359 2.058 137.532 1.929 137.66 1.764 c
-137.797 1.606 137.895 1.415 137.955 1.191 c
-138.013 0.974 138.043 0.738 138.043 0.485 c
-137.087 0.485 m
-137.087 0.69 137.072 0.867 137.043 1.014 c
-137.022 1.161 136.985 1.282 136.926 1.382 c
-136.867 1.477 136.793 1.548 136.705 1.588 c
-136.617 1.635 136.507 1.661 136.382 1.661 c
-136.117 1.661 135.926 1.562 135.809 1.367 c
-135.691 1.18 135.632 0.885 135.632 0.485 c
-135.632 0.062 135.691 -0.243 135.809 -0.426 c
-135.926 -0.613 136.102 -0.706 136.338 -0.706 c
-136.463 -0.706 136.577 -0.687 136.675 -0.646 c
-136.771 -0.599 136.852 -0.526 136.91 -0.426 c
-136.977 -0.331 137.022 -0.206 137.043 -0.058 c
-137.072 0.088 137.087 0.268 137.087 0.485 c
-f
-Q
-q 1 0 0 1 156.4026 334.0088 cm
-0 0 m
--1.897 0 l
--1.897 -1.896 l
-0.309 -1.896 l
-0.309 -2.469 l
--2.573 -2.469 l
--2.573 2.881 l
-0.278 2.881 l
-0.278 2.308 l
--1.897 2.308 l
--1.897 0.588 l
-0 0.588 l
-h
-1.69 1.515 m
-1.705 1.073 l
-1.959 1.415 2.281 1.588 2.675 1.588 c
-3.38 1.588 3.737 1.118 3.748 0.177 c
-3.748 -2.469 l
-3.101 -2.469 l
-3.101 0.147 l
-3.101 0.459 3.046 0.68 2.939 0.809 c
-2.829 0.933 2.675 1 2.468 1 c
-2.311 1 2.164 0.944 2.028 0.838 c
-1.899 0.728 1.797 0.592 1.72 0.426 c
-1.72 -2.469 l
-1.072 -2.469 l
-1.072 1.515 l
-h
-6.761 -2.469 m
-6.721 -2.381 6.695 -2.234 6.688 -2.028 c
-6.453 -2.374 6.158 -2.543 5.805 -2.543 c
-5.442 -2.543 5.159 -2.447 4.953 -2.248 c
-4.755 -2.043 4.659 -1.756 4.659 -1.382 c
-4.659 -0.981 4.795 -0.661 5.071 -0.426 c
-5.342 -0.183 5.718 -0.058 6.188 -0.058 c
-6.673 -0.058 l
-6.673 0.368 l
-6.673 0.603 6.618 0.769 6.511 0.867 c
-6.401 0.974 6.239 1.029 6.026 1.029 c
-5.828 1.029 5.666 0.97 5.541 0.852 c
-5.423 0.735 5.365 0.588 5.365 0.412 c
-4.718 0.412 l
-4.718 0.607 4.777 0.798 4.895 0.985 c
-5.019 1.168 5.181 1.316 5.379 1.426 c
-5.585 1.532 5.813 1.588 6.071 1.588 c
-6.47 1.588 6.776 1.484 6.981 1.279 c
-7.195 1.073 7.309 0.779 7.32 0.397 c
-7.32 -1.617 l
-7.32 -1.922 7.357 -2.186 7.437 -2.41 c
-7.437 -2.469 l
-h
-5.894 -1.955 m
-6.059 -1.955 6.21 -1.911 6.35 -1.822 c
-6.497 -1.735 6.603 -1.624 6.673 -1.484 c
-6.673 -0.544 l
-6.306 -0.544 l
-5.99 -0.544 5.747 -0.613 5.57 -0.75 c
-5.394 -0.878 5.306 -1.066 5.306 -1.308 c
-5.306 -1.536 5.35 -1.701 5.438 -1.808 c
-5.526 -1.907 5.677 -1.955 5.894 -1.955 c
-11.2 -0.676 m
-11.2 -1.294 11.087 -1.76 10.862 -2.072 c
-10.645 -2.389 10.322 -2.543 9.892 -2.543 c
-9.469 -2.543 9.157 -2.363 8.951 -1.999 c
-8.922 -2.469 l
-8.319 -2.469 l
-8.319 3.175 l
-8.966 3.175 l
-8.966 1.073 l
-9.179 1.415 9.487 1.588 9.892 1.588 c
-10.322 1.588 10.645 1.43 10.862 1.118 c
-11.087 0.812 11.2 0.345 11.2 -0.279 c
-h
-10.553 -0.294 m
-10.553 0.177 10.484 0.507 10.348 0.706 c
-10.219 0.9 10.009 1 9.716 1 c
-9.381 1 9.132 0.816 8.966 0.456 c
-8.966 -1.425 l
-9.132 -1.789 9.385 -1.97 9.73 -1.97 c
-10.025 -1.97 10.233 -1.866 10.362 -1.66 c
-10.487 -1.455 10.553 -1.139 10.553 -0.706 c
-h
-12.743 -2.469 -0.646 5.644 re
-15.184 -2.543 m
-14.684 -2.543 14.302 -2.396 14.037 -2.102 c
-13.772 -1.808 13.641 -1.374 13.641 -0.794 c
-13.641 -0.324 l
-13.641 0.272 13.765 0.738 14.023 1.073 c
-14.287 1.415 14.647 1.588 15.11 1.588 c
-15.569 1.588 15.912 1.434 16.139 1.132 c
-16.374 0.838 16.496 0.375 16.506 -0.249 c
-16.506 -0.676 l
-14.287 -0.676 l
-14.287 -0.764 l
-14.287 -1.198 14.364 -1.51 14.522 -1.705 c
-14.688 -1.893 14.919 -1.984 15.213 -1.984 c
-15.407 -1.984 15.581 -1.951 15.727 -1.882 c
-15.874 -1.804 16.01 -1.687 16.139 -1.529 c
-16.477 -1.94 l
-16.19 -2.344 15.76 -2.543 15.184 -2.543 c
-15.11 1.029 m
-14.835 1.029 14.632 0.933 14.507 0.75 c
-14.379 0.563 14.306 0.272 14.287 -0.118 c
-15.86 -0.118 l
-15.86 -0.029 l
-15.837 0.353 15.771 0.621 15.654 0.779 c
-15.536 0.944 15.353 1.029 15.11 1.029 c
-20.946 -1.455 m
-20.946 -1.308 20.891 -1.187 20.784 -1.088 c
-20.674 -0.993 20.468 -0.875 20.167 -0.735 c
-19.821 -0.588 19.579 -0.467 19.432 -0.367 c
-19.285 -0.261 19.174 -0.143 19.108 -0.014 c
-19.039 0.11 19.006 0.268 19.006 0.456 c
-19.006 0.779 19.123 1.047 19.359 1.264 c
-19.594 1.477 19.895 1.588 20.269 1.588 c
-20.652 1.588 20.961 1.474 21.196 1.249 c
-21.431 1.022 21.549 0.735 21.549 0.382 c
-20.901 0.382 l
-20.901 0.559 20.843 0.709 20.725 0.838 c
-20.608 0.963 20.454 1.029 20.269 1.029 c
-20.071 1.029 19.92 0.974 19.814 0.867 c
-19.704 0.769 19.652 0.636 19.652 0.47 c
-19.652 0.341 19.689 0.235 19.77 0.147 c
-19.847 0.066 20.038 -0.037 20.343 -0.162 c
-20.82 -0.349 21.152 -0.536 21.327 -0.72 c
-21.504 -0.897 21.593 -1.124 21.593 -1.396 c
-21.593 -1.749 21.468 -2.028 21.225 -2.234 c
-20.99 -2.44 20.674 -2.543 20.284 -2.543 c
-19.862 -2.543 19.523 -2.425 19.27 -2.19 c
-19.012 -1.947 18.888 -1.643 18.888 -1.278 c
-19.534 -1.278 l
-19.542 -1.506 19.612 -1.683 19.74 -1.808 c
-19.866 -1.926 20.049 -1.984 20.284 -1.984 c
-20.498 -1.984 20.659 -1.936 20.77 -1.837 c
-20.887 -1.741 20.946 -1.613 20.946 -1.455 c
-22.298 -0.294 m
-22.298 0.283 22.434 0.738 22.709 1.073 c
-22.993 1.415 23.363 1.588 23.827 1.588 c
-24.286 1.588 24.654 1.419 24.93 1.087 c
-25.212 0.765 25.36 0.316 25.37 -0.249 c
-25.37 -0.676 l
-25.37 -1.246 25.227 -1.701 24.944 -2.043 c
-24.668 -2.377 24.301 -2.543 23.841 -2.543 c
-23.378 -2.543 23.008 -2.381 22.724 -2.057 c
-22.449 -1.727 22.305 -1.286 22.298 -0.735 c
-h
-22.945 -0.676 m
-22.945 -1.08 23.022 -1.396 23.18 -1.631 c
-23.345 -1.866 23.566 -1.984 23.841 -1.984 c
-24.407 -1.984 24.701 -1.573 24.724 -0.75 c
-24.724 -0.294 l
-24.724 0.106 24.639 0.426 24.473 0.661 c
-24.315 0.904 24.099 1.029 23.827 1.029 c
-23.562 1.029 23.345 0.904 23.18 0.661 c
-23.022 0.426 22.945 0.106 22.945 -0.294 c
-h
-26.825 1.515 m
-26.84 1.147 l
-27.083 1.44 27.402 1.588 27.795 1.588 c
-28.236 1.588 28.545 1.389 28.722 1 c
-28.975 1.389 29.324 1.588 29.765 1.588 c
-30.5 1.588 30.875 1.124 30.897 0.206 c
-30.897 -2.469 l
-30.25 -2.469 l
-30.25 0.147 l
-30.25 0.441 30.195 0.654 30.089 0.794 c
-29.989 0.929 29.817 1 29.574 1 c
-29.376 1 29.214 0.919 29.089 0.765 c
-28.971 0.617 28.901 0.426 28.884 0.191 c
-28.884 -2.469 l
-28.222 -2.469 l
-28.222 0.177 l
-28.222 0.724 28.001 1 27.56 1 c
-27.226 1 26.991 0.838 26.854 0.515 c
-26.854 -2.469 l
-26.208 -2.469 l
-26.208 1.515 l
-h
-33.293 -2.543 m
-32.793 -2.543 32.411 -2.396 32.146 -2.102 c
-31.882 -1.808 31.75 -1.374 31.75 -0.794 c
-31.75 -0.324 l
-31.75 0.272 31.874 0.738 32.132 1.073 c
-32.396 1.415 32.757 1.588 33.219 1.588 c
-33.678 1.588 34.021 1.434 34.249 1.132 c
-34.484 0.838 34.605 0.375 34.615 -0.249 c
-34.615 -0.676 l
-32.396 -0.676 l
-32.396 -0.764 l
-32.396 -1.198 32.473 -1.51 32.631 -1.705 c
-32.797 -1.893 33.028 -1.984 33.322 -1.984 c
-33.517 -1.984 33.69 -1.951 33.837 -1.882 c
-33.983 -1.804 34.12 -1.687 34.249 -1.529 c
-34.586 -1.94 l
-34.299 -2.344 33.869 -2.543 33.293 -2.543 c
-33.219 1.029 m
-32.944 1.029 32.742 0.933 32.616 0.75 c
-32.488 0.563 32.415 0.272 32.396 -0.118 c
-33.969 -0.118 l
-33.969 -0.029 l
-33.947 0.353 33.881 0.621 33.763 0.779 c
-33.646 0.944 33.462 1.029 33.219 1.029 c
-38.496 -1.984 m
-38.71 -1.984 38.883 -1.922 39.011 -1.793 c
-39.147 -1.658 39.22 -1.466 39.232 -1.22 c
-39.849 -1.22 l
-39.826 -1.602 39.691 -1.922 39.437 -2.175 c
-39.18 -2.421 38.868 -2.543 38.496 -2.543 c
-38.004 -2.543 37.63 -2.392 37.364 -2.088 c
-37.107 -1.775 36.982 -1.308 36.982 -0.691 c
-36.982 -0.249 l
-36.982 0.345 37.107 0.801 37.364 1.118 c
-37.63 1.43 38.004 1.588 38.496 1.588 c
-38.897 1.588 39.217 1.455 39.452 1.191 c
-39.694 0.933 39.826 0.588 39.849 0.147 c
-39.232 0.147 l
-39.209 0.441 39.136 0.661 39.011 0.809 c
-38.893 0.956 38.721 1.029 38.496 1.029 c
-38.202 1.029 37.985 0.929 37.85 0.735 c
-37.71 0.547 37.636 0.239 37.63 -0.191 c
-37.63 -0.706 l
-37.63 -1.176 37.695 -1.51 37.835 -1.705 c
-37.981 -1.893 38.202 -1.984 38.496 -1.984 c
-40.466 -0.294 m
-40.466 0.283 40.602 0.738 40.878 1.073 c
-41.16 1.415 41.532 1.588 41.995 1.588 c
-42.454 1.588 42.822 1.419 43.097 1.087 c
-43.38 0.765 43.527 0.316 43.538 -0.249 c
-43.538 -0.676 l
-43.538 -1.246 43.394 -1.701 43.112 -2.043 c
-42.837 -2.377 42.469 -2.543 42.01 -2.543 c
-41.547 -2.543 41.175 -2.381 40.892 -2.057 c
-40.616 -1.727 40.473 -1.286 40.466 -0.735 c
-h
-41.113 -0.676 m
-41.113 -1.08 41.19 -1.396 41.348 -1.631 c
-41.513 -1.866 41.734 -1.984 42.01 -1.984 c
-42.575 -1.984 42.869 -1.573 42.891 -0.75 c
-42.891 -0.294 l
-42.891 0.106 42.806 0.426 42.642 0.661 c
-42.484 0.904 42.266 1.029 41.995 1.029 c
-41.73 1.029 41.513 0.904 41.348 0.661 c
-41.19 0.426 41.113 0.106 41.113 -0.294 c
-h
-45.081 -2.469 -0.646 5.644 re
-45.964 -0.294 m
-45.964 0.283 46.099 0.738 46.375 1.073 c
-46.658 1.415 47.029 1.588 47.492 1.588 c
-47.951 1.588 48.319 1.419 48.595 1.087 c
-48.878 0.765 49.025 0.316 49.035 -0.249 c
-49.035 -0.676 l
-49.035 -1.246 48.892 -1.701 48.609 -2.043 c
-48.333 -2.377 47.966 -2.543 47.507 -2.543 c
-47.044 -2.543 46.673 -2.381 46.39 -2.057 c
-46.114 -1.727 45.971 -1.286 45.964 -0.735 c
-h
-46.61 -0.676 m
-46.61 -1.08 46.687 -1.396 46.845 -1.631 c
-47.011 -1.866 47.232 -1.984 47.507 -1.984 c
-48.073 -1.984 48.367 -1.573 48.389 -0.75 c
-48.389 -0.294 l
-48.389 0.106 48.304 0.426 48.139 0.661 c
-47.981 0.904 47.764 1.029 47.492 1.029 c
-47.228 1.029 47.011 0.904 46.845 0.661 c
-46.687 0.426 46.61 0.106 46.61 -0.294 c
-h
-51.52 0.896 m
-51.431 0.915 51.332 0.927 51.226 0.927 c
-50.891 0.927 50.656 0.742 50.521 0.382 c
-50.521 -2.469 l
-49.873 -2.469 l
-49.873 1.515 l
-50.505 1.515 l
-50.521 1.103 l
-50.696 1.426 50.939 1.588 51.255 1.588 c
-51.362 1.588 51.45 1.565 51.52 1.529 c
-h
-52.872 -2.469 -0.647 3.984 re
-52.917 2.558 m
-52.917 2.448 52.886 2.356 52.828 2.278 c
-52.769 2.209 52.674 2.176 52.549 2.176 c
-52.431 2.176 52.335 2.209 52.269 2.278 c
-52.211 2.356 52.181 2.448 52.181 2.558 c
-52.181 2.675 52.211 2.768 52.269 2.837 c
-52.335 2.914 52.431 2.955 52.549 2.955 c
-52.674 2.955 52.769 2.914 52.828 2.837 c
-52.886 2.756 52.917 2.664 52.917 2.558 c
-54.489 -1.911 m
-56.414 -1.911 l
-56.414 -2.469 l
-53.754 -2.469 l
-53.754 -1.97 l
-55.577 0.941 l
-53.769 0.941 l
-53.769 1.515 l
-56.341 1.515 l
-56.341 1.029 l
-h
-59.236 -2.469 m
-59.196 -2.381 59.171 -2.234 59.163 -2.028 c
-58.928 -2.374 58.634 -2.543 58.282 -2.543 c
-57.918 -2.543 57.634 -2.447 57.428 -2.248 c
-57.23 -2.043 57.135 -1.756 57.135 -1.382 c
-57.135 -0.981 57.27 -0.661 57.546 -0.426 c
-57.818 -0.183 58.193 -0.058 58.664 -0.058 c
-59.148 -0.058 l
-59.148 0.368 l
-59.148 0.603 59.093 0.769 58.987 0.867 c
-58.876 0.974 58.715 1.029 58.502 1.029 c
-58.303 1.029 58.141 0.97 58.016 0.852 c
-57.899 0.735 57.84 0.588 57.84 0.412 c
-57.193 0.412 l
-57.193 0.607 57.252 0.798 57.37 0.985 c
-57.495 1.168 57.657 1.316 57.855 1.426 c
-58.061 1.532 58.288 1.588 58.546 1.588 c
-58.947 1.588 59.252 1.484 59.458 1.279 c
-59.67 1.073 59.784 0.779 59.795 0.397 c
-59.795 -1.617 l
-59.795 -1.922 59.832 -2.186 59.913 -2.41 c
-59.913 -2.469 l
-h
-58.369 -1.955 m
-58.535 -1.955 58.685 -1.911 58.825 -1.822 c
-58.972 -1.735 59.078 -1.624 59.148 -1.484 c
-59.148 -0.544 l
-58.781 -0.544 l
-58.465 -0.544 58.222 -0.613 58.046 -0.75 c
-57.87 -0.878 57.781 -1.066 57.781 -1.308 c
-57.781 -1.536 57.825 -1.701 57.914 -1.808 c
-58.002 -1.907 58.153 -1.955 58.369 -1.955 c
-61.648 2.469 m
-61.648 1.515 l
-62.25 1.515 l
-62.25 0.985 l
-61.648 0.985 l
-61.648 -1.484 l
-61.648 -1.643 61.669 -1.76 61.721 -1.837 c
-61.779 -1.918 61.868 -1.955 61.985 -1.955 c
-62.074 -1.955 62.162 -1.94 62.25 -1.911 c
-62.25 -2.469 l
-62.103 -2.517 61.949 -2.543 61.794 -2.543 c
-61.538 -2.543 61.343 -2.451 61.206 -2.263 c
-61.067 -2.08 61 -1.818 61 -1.484 c
-61 0.985 l
-60.398 0.985 l
-60.398 1.515 l
-61 1.515 l
-61 2.469 l
-h
-63.72 -2.469 -0.647 3.984 re
-63.764 2.558 m
-63.764 2.448 63.735 2.356 63.676 2.278 c
-63.617 2.209 63.522 2.176 63.396 2.176 c
-63.279 2.176 63.184 2.209 63.117 2.278 c
-63.059 2.356 63.03 2.448 63.03 2.558 c
-63.03 2.675 63.059 2.768 63.117 2.837 c
-63.184 2.914 63.279 2.955 63.396 2.955 c
-63.522 2.955 63.617 2.914 63.676 2.837 c
-63.735 2.756 63.764 2.664 63.764 2.558 c
-64.602 -0.294 m
-64.602 0.283 64.738 0.738 65.014 1.073 c
-65.297 1.415 65.667 1.588 66.13 1.588 c
-66.59 1.588 66.957 1.419 67.233 1.087 c
-67.516 0.765 67.663 0.316 67.674 -0.249 c
-67.674 -0.676 l
-67.674 -1.246 67.531 -1.701 67.248 -2.043 c
-66.972 -2.377 66.604 -2.543 66.145 -2.543 c
-65.682 -2.543 65.311 -2.381 65.028 -2.057 c
-64.753 -1.727 64.609 -1.286 64.602 -0.735 c
-h
-65.249 -0.676 m
-65.249 -1.08 65.326 -1.396 65.484 -1.631 c
-65.65 -1.866 65.87 -1.984 66.145 -1.984 c
-66.712 -1.984 67.005 -1.573 67.028 -0.75 c
-67.028 -0.294 l
-67.028 0.106 66.943 0.426 66.777 0.661 c
-66.619 0.904 66.402 1.029 66.13 1.029 c
-65.866 1.029 65.65 0.904 65.484 0.661 c
-65.326 0.426 65.249 0.106 65.249 -0.294 c
-h
-69.129 1.515 m
-69.144 1.073 l
-69.397 1.415 69.721 1.588 70.114 1.588 c
-70.82 1.588 71.176 1.118 71.187 0.177 c
-71.187 -2.469 l
-70.54 -2.469 l
-70.54 0.147 l
-70.54 0.459 70.485 0.68 70.379 0.809 c
-70.269 0.933 70.114 1 69.908 1 c
-69.75 1 69.603 0.944 69.467 0.838 c
-69.339 0.728 69.236 0.592 69.158 0.426 c
-69.158 -2.469 l
-68.512 -2.469 l
-68.512 1.515 l
-h
-73.745 -0.294 m
-73.745 0.283 73.881 0.738 74.157 1.073 c
-74.439 1.415 74.81 1.588 75.273 1.588 c
-75.732 1.588 76.1 1.419 76.376 1.087 c
-76.659 0.765 76.806 0.316 76.817 -0.249 c
-76.817 -0.676 l
-76.817 -1.246 76.673 -1.701 76.391 -2.043 c
-76.115 -2.377 75.747 -2.543 75.288 -2.543 c
-74.825 -2.543 74.454 -2.381 74.171 -2.057 c
-73.895 -1.727 73.752 -1.286 73.745 -0.735 c
-h
-74.392 -0.676 m
-74.392 -1.08 74.469 -1.396 74.627 -1.631 c
-74.792 -1.866 75.013 -1.984 75.288 -1.984 c
-75.854 -1.984 76.148 -1.573 76.17 -0.75 c
-76.17 -0.294 l
-76.17 0.106 76.085 0.426 75.92 0.661 c
-75.762 0.904 75.545 1.029 75.273 1.029 c
-75.009 1.029 74.792 0.904 74.627 0.661 c
-74.469 0.426 74.392 0.106 74.392 -0.294 c
-h
-77.949 -2.469 m
-77.949 0.985 l
-77.419 0.985 l
-77.419 1.515 l
-77.949 1.515 l
-77.949 1.97 l
-77.949 2.371 78.044 2.683 78.242 2.911 c
-78.448 3.134 78.728 3.248 79.08 3.248 c
-79.217 3.248 79.349 3.227 79.477 3.19 c
-79.448 2.646 l
-79.349 2.664 79.25 2.675 79.154 2.675 c
-78.779 2.675 78.595 2.411 78.595 1.881 c
-78.595 1.515 l
-79.271 1.515 l
-79.271 0.985 l
-78.595 0.985 l
-78.595 -2.469 l
-h
-85.195 -1.808 m
-85.078 -1.955 l
-84.744 -2.348 84.247 -2.543 83.593 -2.543 c
-83.013 -2.543 82.556 -2.352 82.226 -1.97 c
-81.903 -1.587 81.733 -1.043 81.726 -0.338 c
-81.726 0.706 l
-81.726 1.459 81.873 2.022 82.167 2.396 c
-82.469 2.768 82.921 2.955 83.52 2.955 c
-84.027 2.955 84.424 2.811 84.71 2.529 c
-85.004 2.242 85.166 1.837 85.195 1.309 c
-84.519 1.309 l
-84.497 1.639 84.405 1.9 84.239 2.087 c
-84.081 2.282 83.846 2.381 83.534 2.381 c
-83.141 2.381 82.858 2.253 82.682 1.999 c
-82.506 1.742 82.41 1.341 82.402 0.794 c
-82.402 -0.294 l
-82.402 -0.834 82.506 -1.249 82.711 -1.543 c
-82.917 -1.83 83.211 -1.97 83.593 -1.97 c
-83.953 -1.97 84.233 -1.882 84.431 -1.705 c
-84.519 -1.617 l
-84.519 -0.382 l
-83.549 -0.382 l
-83.549 0.191 l
-85.195 0.191 l
-h
-86.915 -2.469 -0.646 3.984 re
-86.959 2.558 m
-86.959 2.448 86.93 2.356 86.871 2.278 c
-86.812 2.209 86.716 2.176 86.591 2.176 c
-86.474 2.176 86.379 2.209 86.313 2.278 c
-86.254 2.356 86.224 2.448 86.224 2.558 c
-86.224 2.675 86.254 2.768 86.313 2.837 c
-86.379 2.914 86.474 2.955 86.591 2.955 c
-86.716 2.955 86.812 2.914 86.871 2.837 c
-86.93 2.756 86.959 2.664 86.959 2.558 c
-88.781 2.469 m
-88.781 1.515 l
-89.384 1.515 l
-89.384 0.985 l
-88.781 0.985 l
-88.781 -1.484 l
-88.781 -1.643 88.804 -1.76 88.856 -1.837 c
-88.914 -1.918 89.002 -1.955 89.12 -1.955 c
-89.208 -1.955 89.296 -1.94 89.384 -1.911 c
-89.384 -2.469 l
-89.238 -2.517 89.083 -2.543 88.929 -2.543 c
-88.671 -2.543 88.477 -2.451 88.341 -2.263 c
-88.201 -2.08 88.135 -1.818 88.135 -1.484 c
-88.135 0.985 l
-87.532 0.985 l
-87.532 1.515 l
-88.135 1.515 l
-88.135 2.469 l
-h
-91.736 -0.294 m
-91.736 0.283 91.873 0.738 92.148 1.073 c
-92.43 1.415 92.802 1.588 93.265 1.588 c
-93.724 1.588 94.092 1.419 94.367 1.087 c
-94.651 0.765 94.797 0.316 94.809 -0.249 c
-94.809 -0.676 l
-94.809 -1.246 94.665 -1.701 94.382 -2.043 c
-94.107 -2.377 93.739 -2.543 93.28 -2.543 c
-92.817 -2.543 92.446 -2.381 92.162 -2.057 c
-91.887 -1.727 91.744 -1.286 91.736 -0.735 c
-h
-92.383 -0.676 m
-92.383 -1.08 92.461 -1.396 92.619 -1.631 c
-92.783 -1.866 93.004 -1.984 93.28 -1.984 c
-93.845 -1.984 94.14 -1.573 94.161 -0.75 c
-94.161 -0.294 l
-94.161 0.106 94.077 0.426 93.912 0.661 c
-93.754 0.904 93.537 1.029 93.265 1.029 c
-93.001 1.029 92.783 0.904 92.619 0.661 c
-92.461 0.426 92.383 0.106 92.383 -0.294 c
-h
-97.675 -2.117 m
-97.458 -2.404 97.145 -2.543 96.734 -2.543 c
-96.37 -2.543 96.095 -2.421 95.911 -2.175 c
-95.734 -1.922 95.639 -1.558 95.632 -1.088 c
-95.632 1.515 l
-96.278 1.515 l
-96.278 -1.029 l
-96.278 -1.658 96.462 -1.97 96.837 -1.97 c
-97.238 -1.97 97.513 -1.793 97.66 -1.44 c
-97.66 1.515 l
-98.307 1.515 l
-98.307 -2.469 l
-97.689 -2.469 l
-h
-100.145 2.469 m
-100.145 1.515 l
-100.747 1.515 l
-100.747 0.985 l
-100.145 0.985 l
-100.145 -1.484 l
-100.145 -1.643 100.166 -1.76 100.218 -1.837 c
-100.276 -1.918 100.365 -1.955 100.482 -1.955 c
-100.571 -1.955 100.659 -1.94 100.747 -1.911 c
-100.747 -2.469 l
-100.6 -2.517 100.446 -2.543 100.291 -2.543 c
-100.034 -2.543 99.839 -2.451 99.703 -2.263 c
-99.563 -2.08 99.497 -1.818 99.497 -1.484 c
-99.497 0.985 l
-98.894 0.985 l
-98.894 1.515 l
-99.497 1.515 l
-99.497 2.469 l
-h
-104.392 -0.676 m
-104.392 -1.305 104.274 -1.775 104.039 -2.088 c
-103.812 -2.392 103.495 -2.543 103.084 -2.543 c
-102.68 -2.543 102.371 -2.392 102.158 -2.088 c
-102.158 -3.998 l
-101.511 -3.998 l
-101.511 1.515 l
-102.099 1.515 l
-102.144 1.073 l
-102.356 1.415 102.665 1.588 103.069 1.588 c
-103.51 1.588 103.837 1.434 104.054 1.132 c
-104.267 0.827 104.382 0.372 104.392 -0.235 c
-h
-103.746 -0.294 m
-103.746 0.147 103.676 0.47 103.54 0.676 c
-103.4 0.889 103.179 1 102.878 1 c
-102.562 1 102.323 0.846 102.158 0.544 c
-102.158 -1.529 l
-102.323 -1.834 102.562 -1.984 102.878 -1.984 c
-103.172 -1.984 103.385 -1.882 103.525 -1.675 c
-103.661 -1.463 103.734 -1.132 103.746 -0.691 c
-h
-107.258 -2.117 m
-107.042 -2.404 106.73 -2.543 106.318 -2.543 c
-105.954 -2.543 105.678 -2.421 105.495 -2.175 c
-105.319 -1.922 105.223 -1.558 105.215 -1.088 c
-105.215 1.515 l
-105.862 1.515 l
-105.862 -1.029 l
-105.862 -1.658 106.046 -1.97 106.42 -1.97 c
-106.821 -1.97 107.097 -1.793 107.244 -1.44 c
-107.244 1.515 l
-107.891 1.515 l
-107.891 -2.469 l
-107.273 -2.469 l
-h
-109.728 2.469 m
-109.728 1.515 l
-110.331 1.515 l
-110.331 0.985 l
-109.728 0.985 l
-109.728 -1.484 l
-109.728 -1.643 109.75 -1.76 109.801 -1.837 c
-109.86 -1.918 109.948 -1.955 110.066 -1.955 c
-110.154 -1.955 110.242 -1.94 110.331 -1.911 c
-110.331 -2.469 l
-110.183 -2.517 110.029 -2.543 109.875 -2.543 c
-109.618 -2.543 109.423 -2.451 109.287 -2.263 c
-109.147 -2.08 109.082 -1.818 109.082 -1.484 c
-109.082 0.985 l
-108.479 0.985 l
-108.479 1.515 l
-109.082 1.515 l
-109.082 2.469 l
-h
-111.139 -2.117 m
-111.139 -1.999 111.172 -1.903 111.242 -1.822 c
-111.308 -1.745 111.411 -1.705 111.551 -1.705 c
-111.698 -1.705 111.804 -1.745 111.874 -1.822 c
-111.951 -1.903 111.991 -1.999 111.991 -2.117 c
-111.991 -2.227 111.951 -2.319 111.874 -2.396 c
-111.804 -2.473 111.698 -2.514 111.551 -2.514 c
-111.411 -2.514 111.308 -2.473 111.242 -2.396 c
-111.172 -2.319 111.139 -2.227 111.139 -2.117 c
-f
-Q
-0.793 0.801 0.129 0.016 k
-35.668 318.604 238.665 -21.457 re
-f
-0 0 0 0 k
-q 1 0 0 1 140.2002 303.1149 cm
-0 0 m
--5.513 0 l
--5.513 1.294 l
--2.984 4.513 l
--2.66 4.954 -2.425 5.34 -2.278 5.675 c
--2.124 6.016 -2.043 6.34 -2.043 6.644 c
--2.043 7.063 -2.117 7.394 -2.263 7.629 c
--2.404 7.865 -2.61 7.982 -2.881 7.982 c
--3.175 7.982 -3.41 7.842 -3.587 7.57 c
--3.763 7.294 -3.851 6.909 -3.851 6.409 c
--5.674 6.409 l
--5.674 6.986 -5.556 7.512 -5.321 7.982 c
--5.079 8.46 -4.74 8.835 -4.307 9.099 c
--3.877 9.363 -3.392 9.496 -2.851 9.496 c
--2.022 9.496 -1.374 9.264 -0.912 8.805 c
--0.441 8.342 -0.206 7.688 -0.206 6.835 c
--0.206 6.306 -0.339 5.77 -0.603 5.233 c
--0.86 4.693 -1.32 4.028 -1.985 3.234 c
--3.19 1.515 l
-0 1.515 l
-h
-1.532 0.927 m
-1.532 1.22 1.627 1.459 1.826 1.646 c
-2.021 1.831 2.275 1.926 2.591 1.926 c
-2.892 1.926 3.142 1.831 3.341 1.646 c
-3.546 1.459 3.649 1.22 3.649 0.927 c
-3.649 0.621 3.546 0.375 3.341 0.191 c
-3.142 0.015 2.892 -0.073 2.591 -0.073 c
-2.286 -0.073 2.032 0.019 1.826 0.206 c
-1.627 0.389 1.532 0.632 1.532 0.927 c
-12.49 2.455 m
-12.49 2.837 12.391 3.124 12.197 3.323 c
-11.998 3.517 11.645 3.719 11.138 3.925 c
-10.198 4.285 9.521 4.704 9.109 5.174 c
-8.698 5.652 8.492 6.222 8.492 6.88 c
-8.492 7.662 8.771 8.295 9.33 8.775 c
-9.889 9.253 10.597 9.496 11.461 9.496 c
-12.039 9.496 12.553 9.371 13.005 9.128 c
-13.454 8.882 13.799 8.54 14.034 8.1 c
-14.277 7.659 14.401 7.159 14.401 6.6 c
-12.519 6.6 l
-12.519 7.041 12.424 7.372 12.241 7.599 c
-12.053 7.824 11.785 7.938 11.432 7.938 c
-11.098 7.938 10.836 7.838 10.653 7.644 c
-10.477 7.456 10.389 7.196 10.389 6.865 c
-10.389 6.608 10.491 6.373 10.697 6.159 c
-10.903 5.953 11.263 5.737 11.785 5.513 c
-12.696 5.189 13.358 4.785 13.77 4.307 c
-14.188 3.826 14.401 3.212 14.401 2.469 c
-14.401 1.654 14.14 1.018 13.622 0.559 c
-13.101 0.096 12.395 -0.132 11.505 -0.132 c
-10.896 -0.132 10.344 -0.007 9.845 0.235 c
-9.352 0.489 8.966 0.846 8.683 1.309 c
-8.397 1.779 8.257 2.326 8.257 2.955 c
-10.153 2.955 l
-10.153 2.415 10.256 2.022 10.462 1.779 c
-10.675 1.532 11.025 1.411 11.505 1.411 c
-12.16 1.411 12.49 1.757 12.49 2.455 c
-21.938 7.791 m
-19.615 7.791 l
-19.615 0 l
-17.72 0 l
-17.72 7.791 l
-15.441 7.791 l
-15.441 9.363 l
-21.938 9.363 l
-h
-26.896 1.912 m
-24.323 1.912 l
-23.823 0 l
-21.824 0 l
-24.749 9.363 l
-26.47 9.363 l
-29.424 0 l
-27.395 0 l
-h
-24.735 3.499 m
-26.484 3.499 l
-25.602 6.835 l
-h
-33.363 3.425 m
-32.423 3.425 l
-32.423 0 l
-30.541 0 l
-30.541 9.363 l
-33.554 9.363 l
-34.503 9.363 35.234 9.118 35.744 8.628 c
-36.263 8.136 36.523 7.441 36.523 6.541 c
-36.523 5.295 36.072 4.424 35.171 3.925 c
-36.803 0.088 l
-36.803 0 l
-34.774 0 l
-h
-32.423 4.998 m
-33.495 4.998 l
-33.878 4.998 34.16 5.12 34.348 5.365 c
-34.532 5.619 34.627 5.957 34.627 6.38 c
-34.627 7.321 34.264 7.791 33.539 7.791 c
-32.423 7.791 l
-h
-43.792 7.791 m
-41.47 7.791 l
-41.47 0 l
-39.573 0 l
-39.573 7.791 l
-37.295 7.791 l
-37.295 9.363 l
-43.792 9.363 l
-h
-47.062 0 -1.896 9.363 re
-55.309 0 m
-53.412 0 l
-50.649 6.145 l
-50.649 0 l
-48.753 0 l
-48.753 9.363 l
-50.649 9.363 l
-53.412 3.219 l
-53.412 9.363 l
-55.309 9.363 l
-h
-63.427 1.058 m
-63.062 0.665 62.617 0.368 62.089 0.162 c
-61.559 -0.033 60.979 -0.132 60.354 -0.132 c
-59.274 -0.132 58.436 0.198 57.84 0.867 c
-57.241 1.532 56.936 2.502 56.929 3.778 c
-56.929 5.469 l
-56.929 6.762 57.208 7.755 57.767 8.453 c
-58.333 9.147 59.157 9.496 60.236 9.496 c
-61.254 9.496 62.019 9.239 62.53 8.732 c
-63.047 8.231 63.346 7.445 63.427 6.38 c
-61.589 6.38 l
-61.538 6.975 61.416 7.383 61.221 7.599 c
-61.023 7.813 60.714 7.923 60.296 7.923 c
-59.785 7.923 59.413 7.736 59.178 7.364 c
-58.951 6.99 58.833 6.398 58.825 5.586 c
-58.825 3.881 l
-58.825 3.028 58.951 2.404 59.207 2.014 c
-59.461 1.632 59.876 1.441 60.457 1.441 c
-60.828 1.441 61.133 1.515 61.368 1.661 c
-61.53 1.779 l
-61.53 3.499 l
-60.207 3.499 l
-60.207 4.925 l
-63.427 4.925 l
-h
-72.591 1.912 m
-70.019 1.912 l
-69.519 0 l
-67.52 0 l
-70.445 9.363 l
-72.165 9.363 l
-75.119 0 l
-73.091 0 l
-h
-70.43 3.499 m
-72.179 3.499 l
-71.298 6.835 l
-h
-81.238 3.293 m
-81.238 0 l
-79.342 0 l
-79.342 9.363 l
-82.531 9.363 l
-83.461 9.363 84.2 9.073 84.751 8.497 c
-85.299 7.927 85.574 7.181 85.574 6.263 c
-85.574 5.351 85.299 4.623 84.751 4.087 c
-84.21 3.558 83.461 3.293 82.502 3.293 c
-h
-81.238 4.866 m
-82.531 4.866 l
-82.891 4.866 83.171 4.983 83.369 5.218 c
-83.564 5.453 83.663 5.795 83.663 6.247 c
-83.663 6.718 83.56 7.088 83.354 7.364 c
-83.156 7.637 82.891 7.78 82.561 7.791 c
-81.238 7.791 l
-h
-89.877 3.425 m
-88.937 3.425 l
-88.937 0 l
-87.055 0 l
-87.055 9.363 l
-90.068 9.363 l
-91.017 9.363 91.747 9.118 92.258 8.628 c
-92.777 8.136 93.037 7.441 93.037 6.541 c
-93.037 5.295 92.586 4.424 91.685 3.925 c
-93.317 0.088 l
-93.317 0 l
-91.288 0 l
-h
-88.937 4.998 m
-90.01 4.998 l
-90.392 4.998 90.675 5.12 90.862 5.365 c
-91.046 5.619 91.142 5.957 91.142 6.38 c
-91.142 7.321 90.778 7.791 90.053 7.791 c
-88.937 7.791 l
-h
-101.155 3.836 m
-101.155 2.58 100.854 1.606 100.258 0.912 c
-99.659 0.214 98.836 -0.132 97.789 -0.132 c
-96.738 -0.132 95.911 0.21 95.304 0.897 c
-94.706 1.592 94.4 2.558 94.394 3.793 c
-94.394 5.395 l
-94.394 6.677 94.691 7.68 95.29 8.408 c
-95.886 9.132 96.716 9.496 97.774 9.496 c
-98.811 9.496 99.63 9.136 100.229 8.422 c
-100.835 7.717 101.144 6.722 101.155 5.439 c
-h
-99.259 5.409 m
-99.259 6.251 99.134 6.88 98.891 7.291 c
-98.656 7.703 98.282 7.909 97.774 7.909 c
-97.274 7.909 96.9 7.707 96.657 7.306 c
-96.422 6.913 96.297 6.313 96.289 5.513 c
-96.289 3.836 l
-96.289 3.021 96.411 2.419 96.657 2.029 c
-96.9 1.636 97.278 1.441 97.789 1.441 c
-98.278 1.441 98.641 1.632 98.876 2.014 c
-99.119 2.396 99.248 2.984 99.259 3.778 c
-h
-105.814 9.363 m
-107.696 9.363 l
-107.696 2.882 l
-107.696 1.97 107.439 1.239 106.932 0.691 c
-106.432 0.14 105.785 -0.132 104.991 -0.132 c
-104.128 -0.132 103.456 0.121 102.978 0.632 c
-102.508 1.139 102.272 1.852 102.272 2.764 c
-104.168 2.764 l
-104.168 1.881 104.44 1.441 104.991 1.441 c
-105.539 1.441 105.814 1.948 105.814 2.97 c
-h
-114.208 4.057 m
-111.268 4.057 l
-111.268 1.573 l
-114.751 1.573 l
-114.751 0 l
-109.372 0 l
-109.372 9.363 l
-114.737 9.363 l
-114.737 7.791 l
-111.268 7.791 l
-111.268 5.571 l
-114.208 5.571 l
-h
-122.362 3.117 m
-122.31 2.047 122.009 1.239 121.45 0.691 c
-120.899 0.14 120.128 -0.132 119.129 -0.132 c
-118.059 -0.132 117.24 0.214 116.673 0.912 c
-116.115 1.606 115.836 2.602 115.836 3.896 c
-115.836 5.469 l
-115.836 6.762 116.122 7.755 116.703 8.453 c
-117.291 9.147 118.103 9.496 119.143 9.496 c
-120.161 9.496 120.937 9.205 121.465 8.628 c
-121.995 8.059 122.296 7.24 122.377 6.174 c
-120.481 6.174 l
-120.459 6.839 120.355 7.294 120.172 7.541 c
-119.985 7.794 119.643 7.923 119.143 7.923 c
-118.643 7.923 118.283 7.747 118.07 7.394 c
-117.864 7.041 117.75 6.457 117.732 5.644 c
-117.732 3.881 l
-117.732 2.947 117.835 2.308 118.04 1.955 c
-118.254 1.61 118.618 1.441 119.129 1.441 c
-119.617 1.441 119.956 1.559 120.143 1.794 c
-120.338 2.036 120.444 2.477 120.466 3.117 c
-h
-129.624 7.791 m
-127.301 7.791 l
-127.301 0 l
-125.405 0 l
-125.405 7.791 l
-123.127 7.791 l
-123.127 9.363 l
-129.624 9.363 l
-h
-f
-Q
-0.113 0.082 0.09 0 k
-35.668 288.302 238.665 -12.895 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 40.8563 281.4638 cm
-0 0 m
-0 -0.188 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.647 -0.243 -0.776 -0.367 -0.882 c
--0.496 -0.992 -0.658 -1.081 -0.852 -1.147 c
--1.051 -1.206 -1.278 -1.243 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.162 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.927 c
--3.127 -0.819 -3.23 -0.691 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.214 -3.484 -0.015 c
--2.66 0.132 l
--2.642 0.033 -2.616 -0.059 -2.587 -0.148 c
--2.55 -0.228 -2.506 -0.302 -2.454 -0.368 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.675 c
--1.977 0.683 -1.992 0.69 -1.999 0.69 c
--2.167 0.727 -2.329 0.771 -2.484 0.823 c
--2.642 0.881 -2.786 0.959 -2.91 1.058 c
--3.039 1.153 -3.142 1.278 -3.219 1.425 c
--3.289 1.573 -3.322 1.756 -3.322 1.984 c
--3.322 2.179 -3.289 2.344 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.836 c
--2.8 2.932 -2.645 3.002 -2.469 3.042 c
--2.293 3.09 -2.102 3.12 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.12 -1.128 3.09 -0.97 3.042 c
--0.804 2.991 -0.669 2.917 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.202 2.344 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.252 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.352 c
--1.294 1.311 -1.117 1.263 -0.941 1.205 c
--0.756 1.146 -0.595 1.066 -0.455 0.97 c
--0.32 0.87 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.454 c
--2.26 2.425 -2.319 2.385 -2.366 2.337 c
--2.406 2.296 -2.437 2.248 -2.454 2.19 c
--2.477 2.131 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.778 c
--2.41 1.72 -2.373 1.668 -2.322 1.631 c
--2.263 1.591 -2.201 1.558 -2.131 1.529 c
--2.065 1.499 -1.984 1.469 -1.896 1.44 c
-h
--0.837 -0.015 m
--0.837 0.091 -0.86 0.176 -0.897 0.235 c
--0.926 0.301 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.529 -1.448 0.558 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.53 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.015 c
-6.402 -2.66 m
-6.185 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.396 c
-5.284 -2.315 5.185 -2.22 5.108 -2.103 c
-5.039 -1.985 4.991 -1.856 4.961 -1.72 c
-5.858 -1.617 l
-5.895 -1.754 5.964 -1.86 6.064 -1.941 c
-6.159 -2.029 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.058 6.681 -2.029 c
-6.758 -1.999 6.828 -1.945 6.887 -1.867 c
-6.945 -1.797 6.99 -1.706 7.019 -1.588 c
-7.056 -1.47 7.078 -1.324 7.078 -1.147 c
-7.078 -0.956 l
-7.078 -0.89 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.073 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.215 -0.897 5.108 -0.75 c
-5.009 -0.595 4.935 -0.412 4.888 -0.206 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.771 4.836 1.018 4.888 1.234 c
-4.946 1.448 5.027 1.631 5.137 1.778 c
-5.245 1.932 5.376 2.05 5.534 2.131 c
-5.689 2.219 5.876 2.263 6.093 2.263 c
-6.188 2.263 6.288 2.252 6.387 2.234 c
-6.483 2.212 6.571 2.179 6.652 2.131 c
-6.739 2.08 6.817 2.017 6.887 1.94 c
-6.964 1.859 7.026 1.768 7.078 1.66 c
-7.092 1.66 l
-7.092 1.808 l
-7.1 1.866 7.107 1.918 7.107 1.969 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.129 2.164 7.14 2.198 7.152 2.219 c
-8.004 2.219 l
-7.993 2.138 7.982 2.028 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.162 l
-7.975 -1.415 7.938 -1.636 7.871 -1.823 c
-7.802 -2.007 7.699 -2.161 7.563 -2.278 c
-7.423 -2.404 7.258 -2.5 7.063 -2.558 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.529 m
-7.092 0.742 7.067 0.918 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.499 6.729 1.558 6.652 1.587 c
-6.571 1.624 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.62 6.137 1.573 c
-6.056 1.532 5.99 1.462 5.931 1.367 c
-5.88 1.278 5.835 1.161 5.799 1.014 c
-5.77 0.874 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.339 c
-6.049 -0.515 6.211 -0.603 6.417 -0.603 c
-6.483 -0.603 6.556 -0.588 6.637 -0.559 c
-6.725 -0.522 6.799 -0.463 6.857 -0.383 c
-6.924 -0.294 6.978 -0.177 7.019 -0.03 c
-7.067 0.118 7.092 0.301 7.092 0.529 c
-11.036 -0.647 m
-12.168 -0.647 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.647 l
-10.124 -0.647 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.219 l
-11.036 2.219 l
-h
-10.124 3.513 0.912 -0.676 re
-10.124 2.836 m
-13.6 1.602 m
-13.057 1.602 l
-13.057 2.219 l
-13.644 2.219 l
-13.924 3.116 l
-14.497 3.116 l
-14.497 2.219 l
-15.732 2.219 l
-15.732 1.602 l
-14.497 1.602 l
-14.497 -0.104 l
-14.497 -0.324 l
-14.504 -0.393 14.527 -0.456 14.556 -0.515 c
-14.593 -0.566 14.648 -0.611 14.718 -0.647 c
-14.795 -0.676 14.909 -0.691 15.056 -0.691 c
-15.192 -0.691 15.327 -0.688 15.468 -0.676 c
-15.603 -0.659 15.736 -0.632 15.865 -0.603 c
-15.865 -1.206 l
-15.784 -1.216 15.707 -1.231 15.629 -1.249 c
-15.549 -1.261 15.471 -1.268 15.394 -1.279 c
-15.313 -1.286 15.225 -1.294 15.129 -1.294 c
-15.041 -1.301 14.942 -1.309 14.835 -1.309 c
-14.648 -1.309 14.486 -1.294 14.35 -1.264 c
-14.221 -1.228 14.107 -1.183 14.012 -1.132 c
-13.924 -1.085 13.85 -1.025 13.791 -0.956 c
-13.733 -0.879 13.689 -0.802 13.66 -0.721 c
-13.63 -0.632 13.608 -0.544 13.6 -0.456 c
-13.59 -0.36 13.586 -0.265 13.586 -0.177 c
-h
-23.221 -0.647 m
-24.353 -0.647 l
-24.353 -1.264 l
-21.045 -1.264 l
-21.045 -0.647 l
-22.31 -0.647 l
-22.31 1.602 l
-21.384 1.602 l
-21.384 2.219 l
-23.221 2.219 l
-h
-22.31 3.513 0.912 -0.676 re
-22.31 2.836 m
-27.37 -1.264 m
-27.37 0.72 l
-27.37 1.022 27.326 1.242 27.237 1.381 c
-27.156 1.529 27.021 1.602 26.826 1.602 c
-26.716 1.602 26.613 1.576 26.518 1.529 c
-26.429 1.477 26.348 1.411 26.282 1.323 c
-26.223 1.234 26.172 1.124 26.136 0.999 c
-26.106 0.881 26.091 0.75 26.091 0.602 c
-26.091 -1.264 l
-25.18 -1.264 l
-25.18 1.44 l
-25.18 1.66 l
-25.18 1.749 25.172 1.826 25.165 1.896 c
-25.165 2.087 l
-25.165 2.219 l
-26.018 2.219 l
-26.025 2.19 26.032 2.146 26.032 2.087 c
-26.032 1.896 l
-26.04 1.826 26.047 1.756 26.047 1.69 c
-26.055 1.62 26.061 1.565 26.061 1.529 c
-26.076 1.529 l
-26.194 1.793 26.344 1.984 26.532 2.102 c
-26.716 2.219 26.936 2.278 27.194 2.278 c
-27.377 2.278 27.539 2.248 27.678 2.19 c
-27.815 2.131 27.929 2.043 28.017 1.926 c
-28.105 1.808 28.168 1.664 28.208 1.499 c
-28.255 1.341 28.281 1.153 28.281 0.941 c
-28.281 -1.264 l
-h
-31.343 -0.647 m
-32.474 -0.647 l
-32.474 -1.264 l
-29.167 -1.264 l
-29.167 -0.647 l
-30.431 -0.647 l
-30.431 1.602 l
-29.505 1.602 l
-29.505 2.219 l
-31.343 2.219 l
-h
-30.431 3.513 0.912 -0.676 re
-30.431 2.836 m
-33.907 1.602 m
-33.363 1.602 l
-33.363 2.219 l
-33.951 2.219 l
-34.231 3.116 l
-34.804 3.116 l
-34.804 2.219 l
-36.039 2.219 l
-36.039 1.602 l
-34.804 1.602 l
-34.804 -0.104 l
-34.804 -0.324 l
-34.811 -0.393 34.834 -0.456 34.863 -0.515 c
-34.9 -0.566 34.955 -0.611 35.025 -0.647 c
-35.102 -0.676 35.216 -0.691 35.362 -0.691 c
-35.499 -0.691 35.634 -0.688 35.774 -0.676 c
-35.91 -0.659 36.043 -0.632 36.17 -0.603 c
-36.17 -1.206 l
-36.091 -1.216 36.013 -1.231 35.935 -1.249 c
-35.855 -1.261 35.778 -1.268 35.7 -1.279 c
-35.62 -1.286 35.532 -1.294 35.436 -1.294 c
-35.348 -1.301 35.249 -1.309 35.142 -1.309 c
-34.955 -1.309 34.793 -1.294 34.657 -1.264 c
-34.528 -1.228 34.414 -1.183 34.319 -1.132 c
-34.231 -1.085 34.157 -1.025 34.098 -0.956 c
-34.04 -0.879 33.995 -0.802 33.966 -0.721 c
-33.937 -0.632 33.915 -0.544 33.907 -0.456 c
-33.897 -0.36 33.893 -0.265 33.893 -0.177 c
-h
-42.175 -2.631 m
-42.175 3.513 l
-44.101 3.513 l
-44.101 2.896 l
-43.028 2.896 l
-43.028 -2.014 l
-44.101 -2.014 l
-44.101 -2.631 l
-h
-46.354 2.219 m
-46.362 2.198 46.368 2.164 46.368 2.117 c
-46.376 2.076 46.383 2.028 46.383 1.969 c
-46.391 1.918 46.398 1.866 46.398 1.808 c
-46.398 1.646 l
-46.412 1.646 l
-46.472 1.764 46.537 1.859 46.618 1.94 c
-46.695 2.017 46.78 2.08 46.869 2.131 c
-46.956 2.19 47.044 2.227 47.133 2.248 c
-47.228 2.267 47.328 2.278 47.426 2.278 c
-47.632 2.278 47.813 2.234 47.97 2.146 c
-48.125 2.057 48.253 1.928 48.353 1.764 c
-48.459 1.606 48.536 1.415 48.588 1.19 c
-48.647 0.974 48.676 0.738 48.676 0.484 c
-48.676 0.22 48.647 -0.026 48.588 -0.25 c
-48.536 -0.467 48.459 -0.659 48.353 -0.823 c
-48.253 -0.981 48.122 -1.103 47.956 -1.191 c
-47.798 -1.279 47.611 -1.324 47.397 -1.324 c
-47.298 -1.324 47.199 -1.312 47.104 -1.294 c
-47.004 -1.272 46.912 -1.243 46.824 -1.191 c
-46.743 -1.143 46.666 -1.081 46.589 -1 c
-46.519 -0.923 46.46 -0.831 46.412 -0.721 c
-46.398 -0.721 l
-46.398 -0.809 l
-46.405 -0.85 46.412 -0.897 46.412 -0.956 c
-46.412 -1.118 l
-46.412 -1.294 l
-46.412 -2.631 l
-45.501 -2.631 l
-45.501 1.455 l
-45.501 1.62 45.494 1.768 45.487 1.896 c
-45.487 2.219 l
-h
-46.398 0.455 m
-46.398 0.228 46.416 0.037 46.457 -0.118 c
-46.505 -0.265 46.559 -0.383 46.618 -0.47 c
-46.684 -0.559 46.758 -0.625 46.838 -0.661 c
-46.916 -0.702 46.993 -0.721 47.074 -0.721 c
-47.17 -0.721 47.258 -0.698 47.339 -0.647 c
-47.426 -0.599 47.493 -0.53 47.544 -0.441 c
-47.603 -0.345 47.648 -0.221 47.677 -0.073 c
-47.713 0.081 47.735 0.268 47.735 0.484 c
-47.735 0.874 47.677 1.168 47.559 1.367 c
-47.449 1.562 47.295 1.66 47.089 1.66 c
-47.008 1.66 46.931 1.639 46.854 1.602 c
-46.773 1.562 46.699 1.499 46.633 1.411 c
-46.563 1.323 46.505 1.198 46.457 1.043 c
-46.416 0.885 46.398 0.69 46.398 0.455 c
-52.56 1.469 m
-52.461 1.477 52.359 1.488 52.251 1.499 c
-52.141 1.517 52.02 1.529 51.885 1.529 c
-51.708 1.529 51.55 1.488 51.414 1.411 c
-51.274 1.341 51.156 1.242 51.061 1.117 c
-50.973 0.988 50.903 0.841 50.855 0.675 c
-50.815 0.507 50.796 0.33 50.796 0.147 c
-50.796 -1.264 l
-49.9 -1.264 l
-49.9 0.985 l
-49.9 1.109 49.889 1.234 49.87 1.352 c
-49.859 1.477 49.845 1.595 49.826 1.705 c
-49.815 1.822 49.801 1.918 49.782 1.999 c
-49.76 2.087 49.742 2.161 49.724 2.219 c
-50.605 2.219 l
-50.613 2.167 50.624 2.117 50.635 2.057 c
-50.653 1.999 50.668 1.932 50.679 1.866 c
-50.697 1.808 50.712 1.741 50.723 1.675 c
-50.73 1.606 50.742 1.543 50.752 1.484 c
-50.767 1.484 l
-50.804 1.602 50.855 1.708 50.914 1.808 c
-50.981 1.903 51.061 1.988 51.149 2.057 c
-51.237 2.124 51.341 2.179 51.458 2.219 c
-51.583 2.256 51.73 2.278 51.899 2.278 c
-52.024 2.278 52.141 2.271 52.251 2.263 c
-52.369 2.252 52.473 2.238 52.56 2.219 c
-h
-56.816 0.484 m
-56.816 0.209 56.779 -0.04 56.712 -0.265 c
-56.643 -0.482 56.54 -0.669 56.404 -0.823 c
-56.265 -0.981 56.088 -1.103 55.875 -1.191 c
-55.658 -1.279 55.405 -1.324 55.11 -1.324 c
-54.835 -1.324 54.589 -1.279 54.376 -1.191 c
-54.17 -1.103 53.997 -0.981 53.861 -0.823 c
-53.722 -0.669 53.618 -0.482 53.553 -0.265 c
-53.483 -0.04 53.45 0.209 53.45 0.484 c
-53.45 0.738 53.479 0.974 53.537 1.19 c
-53.604 1.415 53.707 1.606 53.847 1.764 c
-53.982 1.928 54.159 2.057 54.376 2.146 c
-54.589 2.234 54.846 2.278 55.14 2.278 c
-55.453 2.278 55.713 2.234 55.919 2.146 c
-56.132 2.057 56.305 1.928 56.434 1.764 c
-56.569 1.606 56.669 1.415 56.728 1.19 c
-56.787 0.974 56.816 0.738 56.816 0.484 c
-55.86 0.484 m
-55.86 0.69 55.846 0.867 55.816 1.014 c
-55.794 1.161 55.758 1.282 55.698 1.381 c
-55.64 1.477 55.567 1.547 55.478 1.587 c
-55.39 1.635 55.28 1.66 55.155 1.66 c
-54.89 1.66 54.699 1.562 54.582 1.367 c
-54.464 1.18 54.405 0.885 54.405 0.484 c
-54.405 0.062 54.464 -0.243 54.582 -0.426 c
-54.699 -0.614 54.875 -0.706 55.11 -0.706 c
-55.236 -0.706 55.349 -0.688 55.449 -0.647 c
-55.544 -0.599 55.625 -0.526 55.684 -0.426 c
-55.75 -0.331 55.794 -0.206 55.816 -0.059 c
-55.846 0.087 55.86 0.268 55.86 0.484 c
-59.995 -1.309 m
-59.995 -1.544 59.951 -1.742 59.862 -1.912 c
-59.781 -2.076 59.675 -2.213 59.538 -2.323 c
-59.399 -2.429 59.245 -2.506 59.068 -2.558 c
-58.892 -2.606 58.709 -2.631 58.524 -2.631 c
-58.436 -2.631 58.348 -2.624 58.26 -2.617 c
-58.172 -2.606 58.083 -2.595 57.996 -2.587 c
-57.915 -2.577 57.841 -2.562 57.775 -2.543 c
-57.705 -2.533 57.647 -2.517 57.599 -2.5 c
-57.599 -1.823 l
-57.687 -1.841 57.805 -1.86 57.951 -1.882 c
-58.098 -1.912 58.26 -1.926 58.436 -1.926 c
-58.532 -1.926 58.62 -1.914 58.701 -1.897 c
-58.778 -1.874 58.848 -1.841 58.906 -1.794 c
-58.966 -1.742 59.01 -1.669 59.039 -1.573 c
-59.068 -1.484 59.083 -1.371 59.083 -1.235 c
-59.083 1.602 l
-57.951 1.602 l
-57.951 2.219 l
-59.995 2.219 l
-h
-59.098 3.513 0.897 -0.676 re
-59.098 2.836 m
-63.291 -1.324 m
-63.033 -1.324 62.806 -1.286 62.6 -1.22 c
-62.395 -1.143 62.218 -1.029 62.071 -0.882 c
-61.924 -0.728 61.806 -0.537 61.718 -0.309 c
-61.637 -0.085 61.601 0.18 61.601 0.484 c
-61.601 0.816 61.645 1.095 61.732 1.323 c
-61.828 1.558 61.957 1.741 62.115 1.881 c
-62.28 2.017 62.468 2.117 62.673 2.175 c
-62.879 2.242 63.089 2.278 63.305 2.278 c
-63.577 2.278 63.812 2.227 64.011 2.131 c
-64.217 2.043 64.382 1.911 64.511 1.734 c
-64.647 1.565 64.746 1.359 64.805 1.117 c
-64.871 0.881 64.907 0.617 64.907 0.323 c
-64.907 0.309 l
-62.541 0.309 l
-62.541 0.162 62.555 0.022 62.586 -0.104 c
-62.622 -0.231 62.677 -0.345 62.746 -0.441 c
-62.813 -0.53 62.898 -0.599 62.997 -0.647 c
-63.093 -0.698 63.206 -0.721 63.335 -0.721 c
-63.49 -0.721 63.629 -0.688 63.746 -0.618 c
-63.872 -0.551 63.96 -0.449 64.011 -0.309 c
-64.849 -0.383 l
-64.82 -0.482 64.764 -0.588 64.687 -0.706 c
-64.606 -0.816 64.504 -0.919 64.379 -1.014 c
-64.261 -1.103 64.107 -1.176 63.922 -1.235 c
-63.746 -1.294 63.533 -1.324 63.291 -1.324 c
-63.291 1.705 m
-63.203 1.705 63.114 1.69 63.026 1.66 c
-62.938 1.631 62.857 1.579 62.791 1.514 c
-62.721 1.444 62.663 1.356 62.615 1.249 c
-62.574 1.139 62.555 1.014 62.555 0.867 c
-64.026 0.867 l
-64.026 1.003 64 1.124 63.952 1.234 c
-63.912 1.341 63.856 1.429 63.791 1.499 c
-63.731 1.565 63.658 1.616 63.57 1.646 c
-63.482 1.683 63.386 1.705 63.291 1.705 c
-67.351 -1.324 m
-67.064 -1.324 66.823 -1.283 66.617 -1.206 c
-66.411 -1.118 66.237 -0.996 66.102 -0.838 c
-65.962 -0.684 65.859 -0.497 65.793 -0.279 c
-65.724 -0.056 65.69 0.191 65.69 0.455 c
-65.69 0.75 65.724 1.007 65.793 1.234 c
-65.871 1.458 65.977 1.646 66.117 1.793 c
-66.264 1.947 66.44 2.065 66.646 2.146 c
-66.852 2.234 67.087 2.278 67.351 2.278 c
-67.575 2.278 67.777 2.248 67.954 2.19 c
-68.13 2.131 68.281 2.046 68.41 1.94 c
-68.535 1.841 68.637 1.72 68.718 1.573 c
-68.795 1.433 68.851 1.282 68.88 1.117 c
-67.968 1.072 l
-67.939 1.249 67.87 1.389 67.763 1.499 c
-67.664 1.606 67.521 1.66 67.336 1.66 c
-67.091 1.66 66.914 1.558 66.808 1.352 c
-66.697 1.153 66.646 0.867 66.646 0.484 c
-66.646 -0.309 66.881 -0.706 67.351 -0.706 c
-67.517 -0.706 67.66 -0.655 67.777 -0.544 c
-67.895 -0.437 67.968 -0.276 67.999 -0.059 c
-68.909 -0.104 l
-68.88 -0.272 68.824 -0.426 68.747 -0.574 c
-68.678 -0.721 68.575 -0.853 68.439 -0.971 c
-68.311 -1.081 68.153 -1.168 67.968 -1.235 c
-67.792 -1.294 67.586 -1.324 67.351 -1.324 c
-70.457 1.602 m
-69.913 1.602 l
-69.913 2.219 l
-70.501 2.219 l
-70.78 3.116 l
-71.353 3.116 l
-71.353 2.219 l
-72.587 2.219 l
-72.587 1.602 l
-71.353 1.602 l
-71.353 -0.104 l
-71.353 -0.324 l
-71.361 -0.393 71.382 -0.456 71.412 -0.515 c
-71.448 -0.566 71.504 -0.611 71.573 -0.647 c
-71.65 -0.676 71.764 -0.691 71.912 -0.691 c
-72.047 -0.691 72.184 -0.688 72.323 -0.676 c
-72.46 -0.659 72.591 -0.632 72.72 -0.603 c
-72.72 -1.206 l
-72.639 -1.216 72.562 -1.231 72.485 -1.249 c
-72.404 -1.261 72.327 -1.268 72.25 -1.279 c
-72.169 -1.286 72.08 -1.294 71.985 -1.294 c
-71.897 -1.301 71.798 -1.309 71.691 -1.309 c
-71.504 -1.309 71.342 -1.294 71.206 -1.264 c
-71.078 -1.228 70.964 -1.183 70.868 -1.132 c
-70.78 -1.085 70.706 -1.025 70.648 -0.956 c
-70.588 -0.879 70.545 -0.802 70.515 -0.721 c
-70.486 -0.632 70.464 -0.544 70.457 -0.456 c
-70.445 -0.36 70.442 -0.265 70.442 -0.177 c
-h
-80.169 -1.264 m
-80.169 0.72 l
-80.169 1.022 80.125 1.242 80.036 1.381 c
-79.955 1.529 79.82 1.602 79.625 1.602 c
-79.515 1.602 79.412 1.576 79.317 1.529 c
-79.228 1.477 79.147 1.411 79.081 1.323 c
-79.022 1.234 78.971 1.124 78.935 0.999 c
-78.905 0.881 78.89 0.75 78.89 0.602 c
-78.89 -1.264 l
-77.979 -1.264 l
-77.979 1.44 l
-77.979 1.66 l
-77.979 1.749 77.971 1.826 77.964 1.896 c
-77.964 2.087 l
-77.964 2.219 l
-78.817 2.219 l
-78.824 2.19 78.831 2.146 78.831 2.087 c
-78.831 1.896 l
-78.839 1.826 78.846 1.756 78.846 1.69 c
-78.854 1.62 78.86 1.565 78.86 1.529 c
-78.875 1.529 l
-78.993 1.793 79.143 1.984 79.331 2.102 c
-79.515 2.219 79.735 2.278 79.993 2.278 c
-80.176 2.278 80.338 2.248 80.477 2.19 c
-80.614 2.131 80.728 2.043 80.816 1.926 c
-80.904 1.808 80.967 1.664 81.007 1.499 c
-81.054 1.341 81.08 1.153 81.08 0.941 c
-81.08 -1.264 l
-h
-82.995 -1.324 m
-82.826 -1.324 82.675 -1.301 82.54 -1.264 c
-82.411 -1.216 82.297 -1.147 82.201 -1.058 c
-82.112 -0.971 82.043 -0.864 81.995 -0.736 c
-81.944 -0.599 81.921 -0.449 81.921 -0.279 c
-81.921 -0.073 81.954 0.095 82.025 0.235 c
-82.091 0.382 82.187 0.492 82.304 0.573 c
-82.429 0.661 82.572 0.723 82.73 0.764 c
-82.895 0.801 83.072 0.827 83.259 0.837 c
-83.98 0.852 l
-83.98 1.028 l
-83.98 1.146 83.969 1.249 83.951 1.338 c
-83.928 1.425 83.895 1.492 83.847 1.543 c
-83.807 1.602 83.759 1.639 83.7 1.66 c
-83.641 1.679 83.575 1.69 83.509 1.69 c
-83.44 1.69 83.377 1.679 83.318 1.66 c
-83.267 1.65 83.219 1.624 83.171 1.587 c
-83.13 1.558 83.097 1.506 83.068 1.44 c
-83.047 1.381 83.032 1.301 83.024 1.205 c
-82.083 1.249 l
-82.112 1.396 82.157 1.532 82.216 1.66 c
-82.282 1.786 82.378 1.896 82.495 1.984 c
-82.613 2.08 82.752 2.153 82.921 2.204 c
-83.097 2.252 83.303 2.278 83.539 2.278 c
-83.98 2.278 84.31 2.167 84.539 1.955 c
-84.774 1.749 84.891 1.44 84.891 1.028 c
-84.891 -0.235 l
-84.891 -0.456 l
-84.898 -0.515 84.913 -0.57 84.935 -0.618 c
-84.953 -0.659 84.983 -0.691 85.023 -0.721 c
-85.06 -0.742 85.112 -0.75 85.17 -0.75 c
-85.237 -0.75 85.306 -0.746 85.376 -0.736 c
-85.376 -1.22 l
-85.318 -1.231 85.262 -1.243 85.214 -1.249 c
-85.174 -1.261 85.133 -1.268 85.096 -1.279 c
-85.056 -1.286 85.012 -1.294 84.965 -1.294 c
-84.913 -1.301 84.854 -1.309 84.788 -1.309 c
-84.56 -1.309 84.395 -1.257 84.288 -1.147 c
-84.178 -1.029 84.115 -0.864 84.097 -0.647 c
-84.082 -0.647 l
-84.013 -0.757 83.943 -0.853 83.876 -0.941 c
-83.807 -1.022 83.73 -1.088 83.641 -1.147 c
-83.554 -1.206 83.454 -1.249 83.348 -1.279 c
-83.248 -1.309 83.13 -1.324 82.995 -1.324 c
-83.98 0.353 m
-83.554 0.338 l
-83.454 0.338 83.363 0.33 83.274 0.323 c
-83.193 0.312 83.127 0.286 83.068 0.249 c
-83.01 0.209 82.958 0.151 82.921 0.073 c
-82.881 0.004 82.862 -0.088 82.862 -0.206 c
-82.862 -0.375 82.895 -0.497 82.966 -0.574 c
-83.032 -0.655 83.13 -0.691 83.259 -0.691 c
-83.366 -0.691 83.465 -0.669 83.554 -0.618 c
-83.649 -0.57 83.73 -0.507 83.789 -0.426 c
-83.855 -0.349 83.906 -0.262 83.936 -0.162 c
-83.965 -0.056 83.98 0.058 83.98 0.176 c
-h
-87.261 -1.264 m
-87.261 0.852 l
-87.261 1.018 87.254 1.153 87.246 1.263 c
-87.236 1.371 87.217 1.455 87.188 1.514 c
-87.166 1.579 87.136 1.631 87.099 1.66 c
-87.07 1.69 87.03 1.705 86.982 1.705 c
-86.923 1.705 86.868 1.675 86.82 1.616 c
-86.779 1.565 86.747 1.492 86.717 1.396 c
-86.688 1.308 86.662 1.194 86.644 1.058 c
-86.633 0.918 86.629 0.768 86.629 0.602 c
-86.629 -1.264 l
-85.879 -1.264 l
-85.879 1.469 l
-85.879 1.705 l
-85.879 1.926 l
-85.879 2.003 85.873 2.065 85.865 2.117 c
-85.865 2.219 l
-86.54 2.219 l
-86.54 2.131 l
-86.54 1.984 l
-86.548 1.926 86.556 1.866 86.556 1.808 c
-86.556 1.646 l
-86.571 1.646 l
-86.588 1.734 86.619 1.811 86.658 1.881 c
-86.696 1.959 86.739 2.028 86.791 2.087 c
-86.85 2.146 86.916 2.19 86.997 2.219 c
-87.074 2.256 87.162 2.278 87.261 2.278 c
-87.445 2.278 87.585 2.223 87.673 2.117 c
-87.768 2.017 87.838 1.859 87.878 1.646 c
-87.893 1.646 l
-87.93 1.741 87.97 1.83 88.011 1.911 c
-88.059 1.988 88.113 2.05 88.173 2.102 c
-88.231 2.161 88.298 2.204 88.379 2.234 c
-88.456 2.263 88.543 2.278 88.643 2.278 c
-88.779 2.278 88.892 2.252 88.981 2.204 c
-89.069 2.153 89.135 2.08 89.187 1.984 c
-89.245 1.885 89.283 1.756 89.304 1.602 c
-89.334 1.455 89.349 1.271 89.349 1.058 c
-89.349 -1.264 l
-88.628 -1.264 l
-88.628 0.852 l
-88.628 1.018 88.62 1.153 88.614 1.263 c
-88.603 1.371 88.584 1.455 88.555 1.514 c
-88.533 1.579 88.503 1.631 88.466 1.66 c
-88.437 1.69 88.397 1.705 88.349 1.705 c
-88.231 1.705 88.136 1.616 88.069 1.44 c
-88.011 1.271 87.982 1.014 87.982 0.661 c
-87.982 -1.264 l
-h
-91.718 -1.324 m
-91.462 -1.324 91.234 -1.286 91.028 -1.22 c
-90.822 -1.143 90.646 -1.029 90.498 -0.882 c
-90.351 -0.728 90.234 -0.537 90.146 -0.309 c
-90.065 -0.085 90.028 0.18 90.028 0.484 c
-90.028 0.816 90.072 1.095 90.16 1.323 c
-90.256 1.558 90.384 1.741 90.542 1.881 c
-90.708 2.017 90.895 2.117 91.101 2.175 c
-91.307 2.242 91.517 2.278 91.733 2.278 c
-92.005 2.278 92.24 2.227 92.439 2.131 c
-92.645 2.043 92.811 1.911 92.938 1.734 c
-93.075 1.565 93.174 1.359 93.233 1.117 c
-93.299 0.881 93.335 0.617 93.335 0.323 c
-93.335 0.309 l
-90.969 0.309 l
-90.969 0.162 90.984 0.022 91.013 -0.104 c
-91.049 -0.231 91.105 -0.345 91.175 -0.441 c
-91.241 -0.53 91.325 -0.599 91.425 -0.647 c
-91.52 -0.698 91.635 -0.721 91.763 -0.721 c
-91.917 -0.721 92.057 -0.688 92.175 -0.618 c
-92.3 -0.551 92.387 -0.449 92.439 -0.309 c
-93.277 -0.383 l
-93.247 -0.482 93.192 -0.588 93.115 -0.706 c
-93.034 -0.816 92.931 -0.919 92.807 -1.014 c
-92.689 -1.103 92.535 -1.176 92.351 -1.235 c
-92.175 -1.294 91.961 -1.324 91.718 -1.324 c
-91.718 1.705 m
-91.631 1.705 91.542 1.69 91.454 1.66 c
-91.366 1.631 91.285 1.579 91.219 1.514 c
-91.149 1.444 91.09 1.356 91.043 1.249 c
-91.002 1.139 90.984 1.014 90.984 0.867 c
-92.454 0.867 l
-92.454 1.003 92.428 1.124 92.38 1.234 c
-92.34 1.341 92.285 1.429 92.219 1.499 c
-92.16 1.565 92.086 1.616 91.998 1.646 c
-91.909 1.683 91.814 1.705 91.718 1.705 c
-94.592 -2.631 m
-94.592 -2.014 l
-95.666 -2.014 l
-95.666 2.896 l
-94.592 2.896 l
-94.592 3.513 l
-96.518 3.513 l
-96.518 -2.631 l
-h
-f
-Q
-q 1 0 0 1 59.3004 267.0178 cm
-0 0 m
--0.029 -0.58 -0.191 -1.022 -0.485 -1.323 c
--0.779 -1.627 -1.199 -1.778 -1.735 -1.778 c
--2.264 -1.778 -2.691 -1.579 -3.013 -1.176 c
--3.329 -0.764 -3.484 -0.206 -3.484 0.5 c
--3.484 1.47 l
--3.484 2.165 -3.322 2.712 -2.999 3.117 c
--2.675 3.517 -2.23 3.719 -1.661 3.719 c
--1.154 3.719 -0.757 3.561 -0.47 3.248 c
--0.187 2.944 -0.029 2.502 0 1.926 c
--0.691 1.926 l
--0.721 2.367 -0.816 2.679 -0.97 2.866 c
--1.118 3.05 -1.349 3.146 -1.661 3.146 c
--2.036 3.146 -2.319 2.999 -2.514 2.705 c
--2.712 2.419 -2.808 2.003 -2.808 1.455 c
--2.808 0.47 l
--2.808 -0.07 -2.716 -0.484 -2.529 -0.779 c
--2.344 -1.066 -2.08 -1.205 -1.735 -1.205 c
--1.382 -1.205 -1.128 -1.117 -0.97 -0.941 c
--0.816 -0.764 -0.721 -0.452 -0.691 0 c
-h
-2.454 1.661 m
-2.366 1.679 2.267 1.691 2.161 1.691 c
-1.826 1.691 1.591 1.507 1.455 1.147 c
-1.455 -1.705 l
-0.808 -1.705 l
-0.808 2.278 l
-1.44 2.278 l
-1.455 1.867 l
-1.631 2.19 1.874 2.352 2.19 2.352 c
-2.296 2.352 2.385 2.33 2.454 2.294 c
-h
-4.453 -1.778 m
-3.954 -1.778 3.572 -1.631 3.307 -1.338 c
-3.042 -1.043 2.91 -0.61 2.91 -0.029 c
-2.91 0.441 l
-2.91 1.037 3.035 1.503 3.293 1.837 c
-3.557 2.18 3.917 2.352 4.38 2.352 c
-4.839 2.352 5.182 2.198 5.409 1.897 c
-5.644 1.602 5.766 1.139 5.776 0.515 c
-5.776 0.088 l
-3.557 0.088 l
-3.557 0 l
-3.557 -0.434 3.634 -0.746 3.792 -0.941 c
-3.958 -1.128 4.189 -1.22 4.483 -1.22 c
-4.677 -1.22 4.85 -1.186 4.997 -1.117 c
-5.145 -1.039 5.28 -0.922 5.409 -0.764 c
-5.747 -1.176 l
-5.46 -1.579 5.03 -1.778 4.453 -1.778 c
-4.38 1.793 m
-4.104 1.793 3.902 1.698 3.777 1.515 c
-3.649 1.326 3.576 1.037 3.557 0.647 c
-5.13 0.647 l
-5.13 0.735 l
-5.107 1.118 5.041 1.386 4.924 1.544 c
-4.806 1.709 4.623 1.793 4.38 1.793 c
-8.598 -1.705 m
-8.558 -1.617 8.533 -1.469 8.525 -1.264 c
-8.29 -1.61 7.996 -1.778 7.644 -1.778 c
-7.279 -1.778 6.996 -1.683 6.791 -1.484 c
-6.593 -1.278 6.497 -0.992 6.497 -0.617 c
-6.497 -0.216 6.633 0.103 6.908 0.339 c
-7.181 0.58 7.555 0.706 8.025 0.706 c
-8.511 0.706 l
-8.511 1.132 l
-8.511 1.367 8.455 1.532 8.349 1.632 c
-8.239 1.738 8.077 1.793 7.864 1.793 c
-7.665 1.793 7.503 1.735 7.378 1.617 c
-7.262 1.5 7.202 1.353 7.202 1.176 c
-6.556 1.176 l
-6.556 1.371 6.614 1.562 6.732 1.75 c
-6.857 1.933 7.019 2.08 7.217 2.19 c
-7.422 2.297 7.651 2.352 7.908 2.352 c
-8.309 2.352 8.613 2.249 8.819 2.043 c
-9.032 1.837 9.146 1.544 9.157 1.162 c
-9.157 -0.852 l
-9.157 -1.157 9.194 -1.421 9.275 -1.646 c
-9.275 -1.705 l
-h
-7.732 -1.19 m
-7.897 -1.19 8.047 -1.147 8.187 -1.058 c
-8.334 -0.97 8.44 -0.86 8.511 -0.72 c
-8.511 0.221 l
-8.143 0.221 l
-7.827 0.221 7.584 0.151 7.408 0.015 c
-7.231 -0.114 7.143 -0.301 7.143 -0.544 c
-7.143 -0.771 7.187 -0.937 7.276 -1.043 c
-7.364 -1.143 7.515 -1.19 7.732 -1.19 c
-11.009 3.234 m
-11.009 2.278 l
-11.612 2.278 l
-11.612 1.75 l
-11.009 1.75 l
-11.009 -0.72 l
-11.009 -0.878 11.031 -0.995 11.083 -1.072 c
-11.141 -1.153 11.23 -1.19 11.347 -1.19 c
-11.436 -1.19 11.524 -1.176 11.612 -1.147 c
-11.612 -1.705 l
-11.465 -1.753 11.311 -1.778 11.156 -1.778 c
-10.899 -1.778 10.705 -1.687 10.568 -1.5 c
-10.429 -1.315 10.362 -1.055 10.362 -0.72 c
-10.362 1.75 l
-9.76 1.75 l
-9.76 2.278 l
-10.362 2.278 l
-10.362 3.234 l
-h
-13.803 -1.778 m
-13.302 -1.778 12.92 -1.631 12.656 -1.338 c
-12.391 -1.043 12.259 -0.61 12.259 -0.029 c
-12.259 0.441 l
-12.259 1.037 12.384 1.503 12.641 1.837 c
-12.906 2.18 13.265 2.352 13.728 2.352 c
-14.188 2.352 14.53 2.198 14.757 1.897 c
-14.993 1.602 15.114 1.139 15.125 0.515 c
-15.125 0.088 l
-12.906 0.088 l
-12.906 0 l
-12.906 -0.434 12.983 -0.746 13.141 -0.941 c
-13.306 -1.128 13.537 -1.22 13.832 -1.22 c
-14.026 -1.22 14.199 -1.186 14.346 -1.117 c
-14.493 -1.039 14.629 -0.922 14.757 -0.764 c
-15.096 -1.176 l
-14.809 -1.579 14.379 -1.778 13.803 -1.778 c
-13.728 1.793 m
-13.454 1.793 13.251 1.698 13.126 1.515 c
-12.997 1.326 12.924 1.037 12.906 0.647 c
-14.478 0.647 l
-14.478 0.735 l
-14.456 1.118 14.39 1.386 14.273 1.544 c
-14.155 1.709 13.971 1.793 13.728 1.793 c
-18.241 2.278 m
-18.256 1.837 l
-18.51 2.18 18.833 2.352 19.226 2.352 c
-19.931 2.352 20.288 1.882 20.299 0.941 c
-20.299 -1.705 l
-19.652 -1.705 l
-19.652 0.912 l
-19.652 1.224 19.597 1.444 19.491 1.573 c
-19.38 1.698 19.226 1.764 19.021 1.764 c
-18.863 1.764 18.715 1.709 18.58 1.602 c
-18.451 1.492 18.348 1.357 18.271 1.191 c
-18.271 -1.705 l
-17.624 -1.705 l
-17.624 2.278 l
-h
-22.695 -1.778 m
-22.195 -1.778 21.813 -1.631 21.549 -1.338 c
-21.284 -1.043 21.152 -0.61 21.152 -0.029 c
-21.152 0.441 l
-21.152 1.037 21.277 1.503 21.534 1.837 c
-21.799 2.18 22.158 2.352 22.622 2.352 c
-23.081 2.352 23.423 2.198 23.65 1.897 c
-23.885 1.602 24.007 1.139 24.018 0.515 c
-24.018 0.088 l
-21.799 0.088 l
-21.799 0 l
-21.799 -0.434 21.876 -0.746 22.034 -0.941 c
-22.199 -1.128 22.43 -1.22 22.725 -1.22 c
-22.919 -1.22 23.092 -1.186 23.239 -1.117 c
-23.386 -1.039 23.522 -0.922 23.65 -0.764 c
-23.989 -1.176 l
-23.702 -1.579 23.272 -1.778 22.695 -1.778 c
-22.622 1.793 m
-22.346 1.793 22.144 1.698 22.019 1.515 c
-21.89 1.326 21.817 1.037 21.799 0.647 c
-23.371 0.647 l
-23.371 0.735 l
-23.349 1.118 23.283 1.386 23.166 1.544 c
-23.048 1.709 22.864 1.793 22.622 1.793 c
-27.766 -0.559 m
-28.369 2.278 l
-29.015 2.278 l
-28.031 -1.705 l
-27.517 -1.705 l
-26.738 1.147 l
-25.988 -1.705 l
-25.458 -1.705 l
-24.503 2.278 l
-25.136 2.278 l
-25.753 -0.484 l
-26.487 2.278 l
-27.002 2.278 l
-h
-32.117 -1.705 -0.646 5.644 re
-32.999 0.47 m
-32.999 1.048 33.135 1.503 33.41 1.837 c
-33.694 2.18 34.065 2.352 34.528 2.352 c
-34.987 2.352 35.355 2.183 35.631 1.852 c
-35.914 1.529 36.06 1.081 36.071 0.515 c
-36.071 0.088 l
-36.071 -0.481 35.928 -0.937 35.645 -1.278 c
-35.369 -1.613 35.002 -1.778 34.543 -1.778 c
-34.079 -1.778 33.709 -1.617 33.425 -1.294 c
-33.15 -0.962 33.007 -0.521 32.999 0.029 c
-h
-33.646 0.088 m
-33.646 -0.316 33.723 -0.632 33.881 -0.867 c
-34.046 -1.103 34.267 -1.22 34.543 -1.22 c
-35.108 -1.22 35.403 -0.808 35.424 0.015 c
-35.424 0.47 l
-35.424 0.871 35.34 1.191 35.174 1.426 c
-35.016 1.669 34.8 1.793 34.528 1.793 c
-34.264 1.793 34.046 1.669 33.881 1.426 c
-33.723 1.191 33.646 0.871 33.646 0.47 c
-h
-38.291 -1.22 m
-38.504 -1.22 38.677 -1.157 38.805 -1.029 c
-38.941 -0.893 39.014 -0.702 39.026 -0.455 c
-39.643 -0.455 l
-39.621 -0.837 39.485 -1.157 39.232 -1.411 c
-38.974 -1.657 38.662 -1.778 38.291 -1.778 c
-37.798 -1.778 37.424 -1.627 37.159 -1.323 c
-36.901 -1.01 36.776 -0.544 36.776 0.073 c
-36.776 0.515 l
-36.776 1.11 36.901 1.565 37.159 1.882 c
-37.424 2.194 37.798 2.352 38.291 2.352 c
-38.692 2.352 39.012 2.22 39.247 1.955 c
-39.488 1.698 39.621 1.353 39.643 0.912 c
-39.026 0.912 l
-39.004 1.205 38.931 1.426 38.805 1.573 c
-38.688 1.72 38.515 1.793 38.291 1.793 c
-37.996 1.793 37.78 1.694 37.644 1.5 c
-37.504 1.312 37.431 1.004 37.424 0.574 c
-37.424 0.059 l
-37.424 -0.411 37.489 -0.746 37.63 -0.941 c
-37.776 -1.128 37.996 -1.22 38.291 -1.22 c
-42.436 -1.705 m
-42.395 -1.617 42.37 -1.469 42.362 -1.264 c
-42.127 -1.61 41.834 -1.778 41.48 -1.778 c
-41.117 -1.778 40.834 -1.683 40.628 -1.484 c
-40.429 -1.278 40.334 -0.992 40.334 -0.617 c
-40.334 -0.216 40.47 0.103 40.745 0.339 c
-41.017 0.58 41.393 0.706 41.863 0.706 c
-42.347 0.706 l
-42.347 1.132 l
-42.347 1.367 42.293 1.532 42.186 1.632 c
-42.076 1.738 41.914 1.793 41.701 1.793 c
-41.503 1.793 41.341 1.735 41.216 1.617 c
-41.098 1.5 41.04 1.353 41.04 1.176 c
-40.393 1.176 l
-40.393 1.371 40.452 1.562 40.569 1.75 c
-40.695 1.933 40.855 2.08 41.054 2.19 c
-41.26 2.297 41.488 2.352 41.745 2.352 c
-42.146 2.352 42.451 2.249 42.656 2.043 c
-42.869 1.837 42.983 1.544 42.995 1.162 c
-42.995 -0.852 l
-42.995 -1.157 43.031 -1.421 43.112 -1.646 c
-43.112 -1.705 l
-h
-41.568 -1.19 m
-41.734 -1.19 41.885 -1.147 42.025 -1.058 c
-42.171 -0.97 42.278 -0.86 42.347 -0.72 c
-42.347 0.221 l
-41.98 0.221 l
-41.664 0.221 41.422 0.151 41.245 0.015 c
-41.069 -0.114 40.98 -0.301 40.98 -0.544 c
-40.98 -0.771 41.025 -0.937 41.113 -1.043 c
-41.202 -1.143 41.352 -1.19 41.568 -1.19 c
-44.699 -1.705 -0.646 5.644 re
-49.08 1.661 m
-48.992 1.679 48.892 1.691 48.786 1.691 c
-48.452 1.691 48.217 1.507 48.08 1.147 c
-48.08 -1.705 l
-47.434 -1.705 l
-47.434 2.278 l
-48.065 2.278 l
-48.08 1.867 l
-48.257 2.19 48.499 2.352 48.815 2.352 c
-48.922 2.352 49.01 2.33 49.08 2.294 c
-h
-51.079 -1.778 m
-50.579 -1.778 50.197 -1.631 49.933 -1.338 c
-49.668 -1.043 49.536 -0.61 49.536 -0.029 c
-49.536 0.441 l
-49.536 1.037 49.661 1.503 49.918 1.837 c
-50.182 2.18 50.542 2.352 51.006 2.352 c
-51.465 2.352 51.807 2.198 52.034 1.897 c
-52.269 1.602 52.391 1.139 52.402 0.515 c
-52.402 0.088 l
-50.182 0.088 l
-50.182 0 l
-50.182 -0.434 50.26 -0.746 50.417 -0.941 c
-50.583 -1.128 50.814 -1.22 51.108 -1.22 c
-51.303 -1.22 51.476 -1.186 51.623 -1.117 c
-51.77 -1.039 51.906 -0.922 52.034 -0.764 c
-52.373 -1.176 l
-52.086 -1.579 51.656 -1.778 51.079 -1.778 c
-51.006 1.793 m
-50.73 1.793 50.528 1.698 50.403 1.515 c
-50.274 1.326 50.201 1.037 50.182 0.647 c
-51.755 0.647 l
-51.755 0.735 l
-51.733 1.118 51.667 1.386 51.55 1.544 c
-51.432 1.709 51.248 1.793 51.006 1.793 c
-56.061 0.088 m
-56.061 -0.54 55.945 -1.01 55.71 -1.323 c
-55.481 -1.627 55.165 -1.778 54.754 -1.778 c
-54.349 -1.778 54.041 -1.627 53.828 -1.323 c
-53.828 -3.233 l
-53.181 -3.233 l
-53.181 2.278 l
-53.769 2.278 l
-53.813 1.837 l
-54.026 2.18 54.335 2.352 54.739 2.352 c
-55.18 2.352 55.507 2.198 55.724 1.897 c
-55.937 1.592 56.051 1.135 56.061 0.53 c
-h
-55.415 0.47 m
-55.415 0.912 55.346 1.235 55.209 1.44 c
-55.07 1.654 54.849 1.764 54.548 1.764 c
-54.232 1.764 53.993 1.61 53.828 1.309 c
-53.828 -0.764 l
-53.993 -1.069 54.232 -1.22 54.548 -1.22 c
-54.842 -1.22 55.055 -1.117 55.195 -0.912 c
-55.331 -0.698 55.404 -0.367 55.415 0.073 c
-h
-56.767 0.47 m
-56.767 1.048 56.903 1.503 57.179 1.837 c
-57.462 2.18 57.833 2.352 58.297 2.352 c
-58.756 2.352 59.123 2.183 59.398 1.852 c
-59.681 1.529 59.828 1.081 59.839 0.515 c
-59.839 0.088 l
-59.839 -0.481 59.697 -0.937 59.413 -1.278 c
-59.138 -1.613 58.77 -1.778 58.311 -1.778 c
-57.848 -1.778 57.476 -1.617 57.194 -1.294 c
-56.918 -0.962 56.775 -0.521 56.767 0.029 c
-h
-57.414 0.088 m
-57.414 -0.316 57.491 -0.632 57.649 -0.867 c
-57.815 -1.103 58.035 -1.22 58.311 -1.22 c
-58.877 -1.22 59.171 -0.808 59.193 0.015 c
-59.193 0.47 l
-59.193 0.871 59.109 1.191 58.943 1.426 c
-58.785 1.669 58.569 1.793 58.297 1.793 c
-58.031 1.793 57.815 1.669 57.649 1.426 c
-57.491 1.191 57.414 0.871 57.414 0.47 c
-h
-62.617 -0.69 m
-62.617 -0.544 62.563 -0.422 62.456 -0.324 c
-62.346 -0.228 62.14 -0.11 61.839 0.029 c
-61.493 0.177 61.251 0.298 61.104 0.397 c
-60.957 0.503 60.846 0.621 60.78 0.75 c
-60.711 0.875 60.678 1.033 60.678 1.22 c
-60.678 1.544 60.795 1.812 61.03 2.028 c
-61.266 2.242 61.567 2.352 61.941 2.352 c
-62.324 2.352 62.633 2.238 62.868 2.014 c
-63.103 1.786 63.221 1.5 63.221 1.147 c
-62.573 1.147 l
-62.573 1.323 62.515 1.474 62.397 1.602 c
-62.28 1.727 62.125 1.793 61.941 1.793 c
-61.744 1.793 61.592 1.738 61.486 1.632 c
-61.376 1.532 61.324 1.401 61.324 1.235 c
-61.324 1.106 61.361 1 61.442 0.912 c
-61.519 0.831 61.71 0.728 62.015 0.603 c
-62.492 0.416 62.824 0.228 63 0.044 c
-63.176 -0.132 63.265 -0.36 63.265 -0.632 c
-63.265 -0.985 63.14 -1.264 62.897 -1.469 c
-62.662 -1.675 62.346 -1.778 61.956 -1.778 c
-61.534 -1.778 61.196 -1.66 60.942 -1.425 c
-60.685 -1.183 60.56 -0.878 60.56 -0.515 c
-61.206 -0.515 l
-61.214 -0.742 61.284 -0.918 61.412 -1.043 c
-61.538 -1.161 61.721 -1.22 61.956 -1.22 c
-62.17 -1.22 62.331 -1.172 62.442 -1.072 c
-62.559 -0.977 62.617 -0.849 62.617 -0.69 c
-64.808 -1.705 -0.646 3.983 re
-64.852 3.322 m
-64.852 3.212 64.823 3.12 64.763 3.043 c
-64.705 2.973 64.609 2.94 64.485 2.94 c
-64.367 2.94 64.271 2.973 64.205 3.043 c
-64.146 3.12 64.117 3.212 64.117 3.322 c
-64.117 3.439 64.146 3.532 64.205 3.601 c
-64.271 3.678 64.367 3.719 64.485 3.719 c
-64.609 3.719 64.705 3.678 64.763 3.601 c
-64.823 3.52 64.852 3.429 64.852 3.322 c
-66.675 3.234 m
-66.675 2.278 l
-67.277 2.278 l
-67.277 1.75 l
-66.675 1.75 l
-66.675 -0.72 l
-66.675 -0.878 66.697 -0.995 66.748 -1.072 c
-66.807 -1.153 66.895 -1.19 67.013 -1.19 c
-67.101 -1.19 67.189 -1.176 67.277 -1.147 c
-67.277 -1.705 l
-67.13 -1.753 66.976 -1.778 66.822 -1.778 c
-66.565 -1.778 66.37 -1.687 66.234 -1.5 c
-66.094 -1.315 66.028 -1.055 66.028 -0.72 c
-66.028 1.75 l
-65.426 1.75 l
-65.426 2.278 l
-66.028 2.278 l
-66.028 3.234 l
-h
-67.836 0.47 m
-67.836 1.048 67.972 1.503 68.248 1.837 c
-68.53 2.18 68.902 2.352 69.364 2.352 c
-69.824 2.352 70.191 2.183 70.467 1.852 c
-70.75 1.529 70.897 1.081 70.908 0.515 c
-70.908 0.088 l
-70.908 -0.481 70.764 -0.937 70.482 -1.278 c
-70.206 -1.613 69.839 -1.778 69.38 -1.778 c
-68.917 -1.778 68.545 -1.617 68.262 -1.294 c
-67.986 -0.962 67.843 -0.521 67.836 0.029 c
-h
-68.483 0.088 m
-68.483 -0.316 68.56 -0.632 68.718 -0.867 c
-68.883 -1.103 69.104 -1.22 69.38 -1.22 c
-69.945 -1.22 70.239 -0.808 70.261 0.015 c
-70.261 0.47 l
-70.261 0.871 70.176 1.191 70.012 1.426 c
-69.854 1.669 69.636 1.793 69.364 1.793 c
-69.1 1.793 68.883 1.669 68.718 1.426 c
-68.56 1.191 68.483 0.871 68.483 0.47 c
-h
-73.392 1.661 m
-73.304 1.679 73.205 1.691 73.098 1.691 c
-72.763 1.691 72.528 1.507 72.393 1.147 c
-72.393 -1.705 l
-71.745 -1.705 l
-71.745 2.278 l
-72.378 2.278 l
-72.393 1.867 l
-72.569 2.19 72.811 2.352 73.127 2.352 c
-73.234 2.352 73.322 2.33 73.392 2.294 c
-h
-75.2 -0.617 m
-75.92 2.278 l
-76.611 2.278 l
-75.317 -2.263 l
-75.219 -2.605 75.075 -2.866 74.891 -3.042 c
-74.715 -3.219 74.513 -3.307 74.289 -3.307 c
-74.201 -3.307 74.087 -3.285 73.951 -3.248 c
-73.951 -2.705 l
-74.097 -2.719 l
-74.282 -2.719 74.428 -2.675 74.539 -2.587 c
-74.645 -2.499 74.733 -2.341 74.803 -2.117 c
-74.92 -1.675 l
-73.76 2.278 l
-74.465 2.278 l
-h
-76.89 -1.352 m
-76.89 -1.234 76.923 -1.139 76.993 -1.058 c
-77.06 -0.981 77.162 -0.941 77.302 -0.941 c
-77.449 -0.941 77.555 -0.981 77.625 -1.058 c
-77.702 -1.139 77.743 -1.234 77.743 -1.352 c
-77.743 -1.462 77.702 -1.554 77.625 -1.631 c
-77.555 -1.708 77.449 -1.749 77.302 -1.749 c
-77.162 -1.749 77.06 -1.708 76.993 -1.631 c
-76.923 -1.554 76.89 -1.462 76.89 -1.352 c
-81.345 -1.705 -0.676 5.35 re
-82.726 -1.705 m
-82.726 1.75 l
-82.197 1.75 l
-82.197 2.278 l
-82.726 2.278 l
-82.726 2.734 l
-82.726 3.135 82.822 3.447 83.02 3.675 c
-83.226 3.899 83.505 4.013 83.857 4.013 c
-83.994 4.013 84.127 3.991 84.255 3.954 c
-84.225 3.41 l
-84.127 3.429 84.027 3.439 83.932 3.439 c
-83.556 3.439 83.373 3.175 83.373 2.646 c
-83.373 2.278 l
-84.048 2.278 l
-84.048 1.75 l
-83.373 1.75 l
-83.373 -1.705 l
-h
-f
-Q
-q 1 0 0 1 147.1862 270.7224 cm
-0 0 m
--0.383 0 l
--0.383 -5.835 l
-0 -5.835 l
-0 -6.659 l
--1.426 -6.659 l
--1.426 0.823 l
-0 0.823 l
-h
-3.63 -3.543 m
-3.63 -4.171 3.52 -4.653 3.307 -4.983 c
-3.09 -5.318 2.77 -5.483 2.352 -5.483 c
-2.028 -5.483 1.768 -5.351 1.572 -5.087 c
-1.572 -6.938 l
-0.529 -6.938 l
-0.529 -1.426 l
-1.484 -1.426 l
-1.529 -1.794 l
-1.723 -1.5 1.992 -1.353 2.337 -1.353 c
-2.755 -1.353 3.075 -1.511 3.293 -1.823 c
-3.505 -2.128 3.619 -2.598 3.63 -3.234 c
-h
-2.587 -3.278 m
-2.587 -2.896 2.543 -2.628 2.454 -2.469 c
-2.373 -2.315 2.234 -2.234 2.028 -2.234 c
-1.822 -2.234 1.668 -2.323 1.572 -2.5 c
-1.572 -4.366 l
-1.66 -4.535 1.815 -4.616 2.042 -4.616 c
-2.248 -4.616 2.389 -4.535 2.469 -4.366 c
-2.547 -4.189 2.587 -3.917 2.587 -3.543 c
-h
-6.217 -2.44 m
-5.88 -2.411 l
-5.593 -2.411 5.402 -2.536 5.306 -2.778 c
-5.306 -5.409 l
-4.262 -5.409 l
-4.262 -1.426 l
-5.232 -1.426 l
-5.262 -1.867 l
-5.427 -1.525 5.659 -1.353 5.953 -1.353 c
-6.071 -1.353 6.162 -1.374 6.232 -1.411 c
-h
-6.511 -3.293 m
-6.511 -2.687 6.651 -2.213 6.938 -1.867 c
-7.22 -1.525 7.613 -1.353 8.114 -1.353 c
-8.621 -1.353 9.018 -1.525 9.304 -1.867 c
-9.587 -2.213 9.73 -2.687 9.73 -3.293 c
-9.73 -3.558 l
-9.73 -4.156 9.587 -4.627 9.304 -4.969 c
-9.018 -5.314 8.621 -5.483 8.114 -5.483 c
-7.603 -5.483 7.206 -5.314 6.923 -4.969 c
-6.647 -4.627 6.511 -4.152 6.511 -3.543 c
-h
-7.555 -3.558 m
-7.555 -4.263 7.739 -4.616 8.114 -4.616 c
-8.467 -4.616 8.658 -4.322 8.687 -3.734 c
-8.687 -3.293 l
-8.687 -2.932 8.635 -2.66 8.54 -2.484 c
-8.44 -2.308 8.297 -2.22 8.114 -2.22 c
-7.937 -2.22 7.798 -2.308 7.702 -2.484 c
-7.603 -2.66 7.555 -2.932 7.555 -3.293 c
-h
-11.465 -1.426 m
-11.465 -5.63 l
-11.465 -6.078 11.362 -6.423 11.156 -6.659 c
-10.95 -6.894 10.657 -7.011 10.274 -7.011 c
-10.105 -7.011 9.951 -6.99 9.803 -6.953 c
-9.789 -6.101 l
-9.907 -6.13 9.999 -6.145 10.069 -6.145 c
-10.304 -6.145 10.421 -5.983 10.421 -5.659 c
-10.421 -1.426 l
-h
-10.362 -0.397 m
-10.362 -0.243 10.41 -0.114 10.509 -0.015 c
-10.616 0.091 10.752 0.147 10.921 0.147 c
-11.098 0.147 11.233 0.091 11.333 -0.015 c
-11.439 -0.114 11.494 -0.243 11.494 -0.397 c
-11.494 -0.566 11.439 -0.702 11.333 -0.809 c
-11.233 -0.908 11.098 -0.956 10.921 -0.956 c
-10.744 -0.956 10.605 -0.908 10.509 -0.809 c
-10.41 -0.702 10.362 -0.566 10.362 -0.397 c
-13.832 -5.483 m
-13.302 -5.483 12.883 -5.328 12.582 -5.012 c
-12.288 -4.69 12.141 -4.23 12.141 -3.631 c
-12.141 -3.323 l
-12.141 -2.697 12.277 -2.213 12.552 -1.867 c
-12.824 -1.525 13.217 -1.353 13.728 -1.353 c
-14.229 -1.353 14.599 -1.515 14.846 -1.837 c
-15.099 -2.161 15.232 -2.639 15.243 -3.263 c
-15.243 -3.763 l
-13.17 -3.763 l
-13.188 -4.057 13.251 -4.274 13.361 -4.41 c
-13.479 -4.549 13.659 -4.616 13.905 -4.616 c
-14.247 -4.616 14.537 -4.499 14.772 -4.263 c
-15.184 -4.895 l
-15.056 -5.072 14.867 -5.215 14.626 -5.322 c
-14.379 -5.428 14.115 -5.483 13.832 -5.483 c
-13.184 -3.043 m
-14.214 -3.043 l
-14.214 -2.94 l
-14.214 -2.705 14.173 -2.529 14.096 -2.411 c
-14.026 -2.286 13.898 -2.22 13.714 -2.22 c
-13.537 -2.22 13.406 -2.29 13.317 -2.425 c
-13.236 -2.554 13.192 -2.76 13.184 -3.043 c
-17.271 -4.616 m
-17.565 -4.616 17.716 -4.421 17.726 -4.028 c
-18.697 -4.028 l
-18.697 -4.461 18.565 -4.814 18.3 -5.087 c
-18.035 -5.351 17.697 -5.483 17.286 -5.483 c
-16.775 -5.483 16.382 -5.328 16.11 -5.012 c
-15.845 -4.69 15.706 -4.219 15.698 -3.601 c
-15.698 -3.278 l
-15.698 -2.654 15.831 -2.176 16.095 -1.852 c
-16.367 -1.521 16.764 -1.353 17.286 -1.353 c
-17.716 -1.353 18.057 -1.492 18.314 -1.764 c
-18.568 -2.04 18.697 -2.421 18.697 -2.911 c
-17.726 -2.911 l
-17.726 -2.697 17.686 -2.529 17.609 -2.411 c
-17.539 -2.286 17.422 -2.22 17.256 -2.22 c
-17.08 -2.22 16.951 -2.286 16.874 -2.411 c
-16.793 -2.539 16.749 -2.789 16.742 -3.161 c
-16.742 -3.572 l
-16.742 -3.896 16.756 -4.123 16.786 -4.248 c
-16.822 -4.377 16.878 -4.469 16.947 -4.528 c
-17.025 -4.586 17.132 -4.616 17.271 -4.616 c
-20.505 -0.456 m
-20.505 -1.426 l
-21.034 -1.426 l
-21.034 -2.22 l
-20.505 -2.22 l
-20.505 -4.189 l
-20.505 -4.347 20.523 -4.454 20.564 -4.513 c
-20.612 -4.572 20.696 -4.601 20.814 -4.601 c
-20.92 -4.601 21.005 -4.594 21.063 -4.572 c
-21.063 -5.38 l
-20.887 -5.446 20.696 -5.483 20.49 -5.483 c
-19.814 -5.483 19.469 -5.097 19.461 -4.322 c
-19.461 -2.22 l
-19.006 -2.22 l
-19.006 -1.426 l
-19.461 -1.426 l
-19.461 -0.456 l
-h
-24.297 -1.426 m
-24.327 -1.823 l
-24.562 -1.511 24.863 -1.353 25.238 -1.353 c
-25.921 -1.353 26.274 -1.833 26.296 -2.793 c
-26.296 -5.409 l
-25.252 -5.409 l
-25.252 -2.866 l
-25.252 -2.643 25.216 -2.481 25.15 -2.382 c
-25.08 -2.286 24.963 -2.234 24.797 -2.234 c
-24.61 -2.234 24.463 -2.33 24.356 -2.514 c
-24.356 -5.409 l
-23.312 -5.409 l
-23.312 -1.426 l
-h
-28.928 -5.409 m
-28.898 -5.351 28.868 -5.247 28.839 -5.101 c
-28.652 -5.358 28.402 -5.483 28.09 -5.483 c
-27.756 -5.483 27.476 -5.376 27.251 -5.16 c
-27.035 -4.935 26.929 -4.645 26.929 -4.293 c
-26.929 -3.881 27.06 -3.564 27.326 -3.337 c
-27.59 -3.102 27.972 -2.984 28.471 -2.984 c
-28.795 -2.984 l
-28.795 -2.66 l
-28.795 -2.484 28.758 -2.363 28.693 -2.294 c
-28.633 -2.216 28.545 -2.176 28.427 -2.176 c
-28.17 -2.176 28.045 -2.33 28.045 -2.631 c
-27.002 -2.631 l
-27.002 -2.261 27.137 -1.955 27.413 -1.72 c
-27.685 -1.478 28.034 -1.353 28.457 -1.353 c
-28.898 -1.353 29.236 -1.47 29.471 -1.706 c
-29.714 -1.933 29.838 -2.257 29.838 -2.675 c
-29.838 -4.542 l
-29.838 -4.888 29.886 -5.156 29.986 -5.351 c
-29.986 -5.409 l
-h
-28.325 -4.659 m
-28.431 -4.659 28.523 -4.642 28.604 -4.601 c
-28.693 -4.553 28.755 -4.495 28.795 -4.424 c
-28.795 -3.601 l
-28.545 -3.601 l
-28.369 -3.601 28.226 -3.66 28.119 -3.778 c
-28.02 -3.888 27.972 -4.035 27.972 -4.219 c
-27.972 -4.513 28.09 -4.659 28.325 -4.659 c
-31.559 -1.426 m
-31.588 -1.794 l
-31.823 -1.5 32.132 -1.353 32.514 -1.353 c
-32.915 -1.353 33.194 -1.536 33.352 -1.897 c
-33.587 -1.536 33.914 -1.353 34.337 -1.353 c
-35.031 -1.353 35.384 -1.837 35.395 -2.808 c
-35.395 -5.409 l
-34.366 -5.409 l
-34.366 -2.866 l
-34.366 -2.643 34.329 -2.481 34.263 -2.382 c
-34.204 -2.286 34.094 -2.234 33.94 -2.234 c
-33.741 -2.234 33.601 -2.352 33.514 -2.587 c
-33.514 -5.409 l
-32.47 -5.409 l
-32.47 -2.882 l
-32.47 -2.646 32.44 -2.481 32.381 -2.382 c
-32.323 -2.286 32.213 -2.234 32.059 -2.234 c
-31.882 -2.234 31.739 -2.33 31.632 -2.514 c
-31.632 -5.409 l
-30.588 -5.409 l
-30.588 -1.426 l
-h
-37.776 -5.483 m
-37.247 -5.483 36.828 -5.328 36.527 -5.012 c
-36.233 -4.69 36.086 -4.23 36.086 -3.631 c
-36.086 -3.323 l
-36.086 -2.697 36.222 -2.213 36.498 -1.867 c
-36.77 -1.525 37.163 -1.353 37.674 -1.353 c
-38.173 -1.353 38.544 -1.515 38.79 -1.837 c
-39.044 -2.161 39.176 -2.639 39.187 -3.263 c
-39.187 -3.763 l
-37.115 -3.763 l
-37.133 -4.057 37.196 -4.274 37.306 -4.41 c
-37.424 -4.549 37.603 -4.616 37.85 -4.616 c
-38.191 -4.616 38.482 -4.499 38.717 -4.263 c
-39.128 -4.895 l
-39 -5.072 38.812 -5.215 38.57 -5.322 c
-38.324 -5.428 38.059 -5.483 37.776 -5.483 c
-37.129 -3.043 m
-38.158 -3.043 l
-38.158 -2.94 l
-38.158 -2.705 38.118 -2.529 38.041 -2.411 c
-37.971 -2.286 37.842 -2.22 37.659 -2.22 c
-37.482 -2.22 37.35 -2.29 37.262 -2.425 c
-37.181 -2.554 37.137 -2.76 37.129 -3.043 c
-39.525 0.823 m
-40.951 0.823 l
-40.951 -6.659 l
-39.525 -6.659 l
-39.525 -5.835 l
-39.907 -5.835 l
-39.907 0 l
-39.525 0 l
-h
-f
-Q
-191.474 265.313 -0.647 3.983 re
-191.518 270.34 m
-191.518 270.229 191.488 270.138 191.43 270.061 c
-191.371 269.991 191.276 269.958 191.151 269.958 c
-191.033 269.958 190.937 269.991 190.871 270.061 c
-190.813 270.138 190.783 270.229 190.783 270.34 c
-190.783 270.457 190.813 270.549 190.871 270.619 c
-190.937 270.696 191.033 270.737 191.151 270.737 c
-191.276 270.737 191.371 270.696 191.43 270.619 c
-191.488 270.538 191.518 270.447 191.518 270.34 c
-194.428 266.327 m
-194.428 266.474 194.374 266.595 194.267 266.694 c
-194.156 266.79 193.951 266.908 193.649 267.047 c
-193.304 267.195 193.061 267.316 192.915 267.415 c
-192.768 267.521 192.658 267.639 192.591 267.768 c
-192.521 267.893 192.488 268.051 192.488 268.238 c
-192.488 268.562 192.606 268.83 192.841 269.046 c
-193.076 269.26 193.377 269.37 193.753 269.37 c
-194.135 269.37 194.443 269.256 194.678 269.032 c
-194.914 268.804 195.031 268.517 195.031 268.165 c
-194.384 268.165 l
-194.384 268.34 194.326 268.492 194.208 268.62 c
-194.09 268.745 193.936 268.811 193.753 268.811 c
-193.554 268.811 193.404 268.756 193.296 268.65 c
-193.186 268.55 193.135 268.419 193.135 268.253 c
-193.135 268.124 193.171 268.018 193.252 267.929 c
-193.329 267.848 193.521 267.746 193.826 267.621 c
-194.304 267.434 194.634 267.245 194.811 267.062 c
-194.987 266.886 195.075 266.657 195.075 266.386 c
-195.075 266.033 194.95 265.753 194.708 265.548 c
-194.472 265.342 194.156 265.24 193.767 265.24 c
-193.344 265.24 193.007 265.357 192.753 265.593 c
-192.496 265.834 192.371 266.14 192.371 266.503 c
-193.017 266.503 l
-193.025 266.276 193.094 266.1 193.223 265.974 c
-193.348 265.857 193.532 265.798 193.767 265.798 c
-193.98 265.798 194.142 265.846 194.252 265.945 c
-194.37 266.04 194.428 266.169 194.428 266.327 c
-200.514 267.106 m
-200.514 266.478 200.396 266.007 200.161 265.695 c
-199.933 265.39 199.617 265.24 199.206 265.24 c
-198.802 265.24 198.493 265.39 198.28 265.695 c
-198.28 263.784 l
-197.633 263.784 l
-197.633 269.296 l
-198.221 269.296 l
-198.265 268.855 l
-198.478 269.197 198.787 269.37 199.191 269.37 c
-199.632 269.37 199.959 269.215 200.176 268.914 c
-200.389 268.609 200.503 268.153 200.514 267.547 c
-h
-199.868 267.488 m
-199.868 267.929 199.797 268.253 199.662 268.458 c
-199.521 268.672 199.301 268.782 199 268.782 c
-198.684 268.782 198.445 268.627 198.28 268.326 c
-198.28 266.254 l
-198.445 265.949 198.684 265.798 199 265.798 c
-199.294 265.798 199.507 265.901 199.646 266.106 c
-199.783 266.32 199.856 266.651 199.868 267.091 c
-h
-202.998 268.679 m
-202.91 268.697 202.811 268.708 202.704 268.708 c
-202.37 268.708 202.135 268.525 201.998 268.165 c
-201.998 265.313 l
-201.352 265.313 l
-201.352 269.296 l
-201.984 269.296 l
-201.998 268.885 l
-202.175 269.208 202.418 269.37 202.734 269.37 c
-202.84 269.37 202.929 269.348 202.998 269.311 c
-h
-203.44 267.488 m
-203.44 268.066 203.575 268.521 203.851 268.855 c
-204.134 269.197 204.504 269.37 204.967 269.37 c
-205.427 269.37 205.794 269.201 206.07 268.87 c
-206.353 268.546 206.5 268.099 206.511 267.532 c
-206.511 267.106 l
-206.511 266.537 206.368 266.081 206.085 265.739 c
-205.809 265.404 205.441 265.24 204.982 265.24 c
-204.52 265.24 204.148 265.401 203.866 265.724 c
-203.59 266.055 203.446 266.497 203.44 267.047 c
-h
-204.086 267.106 m
-204.086 266.702 204.163 266.386 204.321 266.15 c
-204.487 265.915 204.707 265.798 204.982 265.798 c
-205.549 265.798 205.842 266.21 205.865 267.033 c
-205.865 267.488 l
-205.865 267.889 205.78 268.209 205.615 268.444 c
-205.456 268.687 205.24 268.811 204.967 268.811 c
-204.703 268.811 204.487 268.687 204.321 268.444 c
-204.163 268.209 204.086 267.889 204.086 267.488 c
-h
-208.422 266.298 m
-209.171 269.296 l
-209.833 269.296 l
-208.657 265.313 l
-208.172 265.313 l
-206.981 269.296 l
-207.643 269.296 l
-h
-211.215 265.313 -0.646 3.983 re
-211.259 270.34 m
-211.259 270.229 211.23 270.138 211.171 270.061 c
-211.112 269.991 211.016 269.958 210.891 269.958 c
-210.774 269.958 210.679 269.991 210.612 270.061 c
-210.553 270.138 210.524 270.229 210.524 270.34 c
-210.524 270.457 210.553 270.549 210.612 270.619 c
-210.679 270.696 210.774 270.737 210.891 270.737 c
-211.016 270.737 211.112 270.696 211.171 270.619 c
-211.23 270.538 211.259 270.447 211.259 270.34 c
-212.097 267.488 m
-212.097 268.095 212.207 268.562 212.435 268.885 c
-212.67 269.208 212.997 269.37 213.42 269.37 c
-213.802 269.37 214.1 269.212 214.316 268.899 c
-214.316 270.958 l
-214.964 270.958 l
-214.964 265.313 l
-214.375 265.313 l
-214.331 265.739 l
-214.125 265.404 213.821 265.24 213.42 265.24 c
-213.008 265.24 212.685 265.394 212.45 265.71 c
-212.215 266.033 212.097 266.489 212.097 267.077 c
-h
-212.743 267.106 m
-212.743 266.665 212.806 266.335 212.934 266.121 c
-213.071 265.915 213.291 265.813 213.596 265.813 c
-213.919 265.813 214.158 265.974 214.316 266.298 c
-214.316 268.311 l
-214.147 268.624 213.908 268.782 213.596 268.782 c
-213.291 268.782 213.071 268.679 212.934 268.473 c
-212.806 268.267 212.743 267.944 212.743 267.503 c
-h
-217.389 265.24 m
-216.888 265.24 216.506 265.387 216.242 265.68 c
-215.978 265.974 215.845 266.408 215.845 266.989 c
-215.845 267.459 l
-215.845 268.054 215.97 268.521 216.227 268.855 c
-216.491 269.197 216.852 269.37 217.315 269.37 c
-217.775 269.37 218.116 269.215 218.344 268.914 c
-218.579 268.62 218.7 268.157 218.712 267.532 c
-218.712 267.106 l
-216.491 267.106 l
-216.491 267.018 l
-216.491 266.584 216.569 266.272 216.727 266.077 c
-216.892 265.89 217.124 265.798 217.418 265.798 c
-217.613 265.798 217.786 265.832 217.933 265.901 c
-218.079 265.978 218.216 266.096 218.344 266.254 c
-218.682 265.842 l
-218.395 265.438 217.965 265.24 217.389 265.24 c
-217.315 268.811 m
-217.04 268.811 216.838 268.716 216.712 268.532 c
-216.584 268.344 216.51 268.054 216.491 267.665 c
-218.064 267.665 l
-218.064 267.753 l
-218.043 268.135 217.977 268.403 217.859 268.562 c
-217.742 268.727 217.557 268.811 217.315 268.811 c
-219.358 267.488 m
-219.358 268.095 219.469 268.562 219.696 268.885 c
-219.932 269.208 220.258 269.37 220.681 269.37 c
-221.063 269.37 221.361 269.212 221.578 268.899 c
-221.578 270.958 l
-222.224 270.958 l
-222.224 265.313 l
-221.636 265.313 l
-221.592 265.739 l
-221.387 265.404 221.081 265.24 220.681 265.24 c
-220.269 265.24 219.946 265.394 219.711 265.71 c
-219.475 266.033 219.358 266.489 219.358 267.077 c
-h
-220.005 267.106 m
-220.005 266.665 220.067 266.335 220.196 266.121 c
-220.332 265.915 220.553 265.813 220.857 265.813 c
-221.181 265.813 221.42 265.974 221.578 266.298 c
-221.578 268.311 l
-221.409 268.624 221.17 268.782 220.857 268.782 c
-220.553 268.782 220.332 268.679 220.196 268.473 c
-220.067 268.267 220.005 267.944 220.005 267.503 c
-h
-223.238 264.24 m
-222.841 264.504 l
-223.077 264.828 223.198 265.163 223.209 265.504 c
-223.209 266.121 l
-223.871 266.121 l
-223.871 265.593 l
-223.871 265.335 223.805 265.088 223.68 264.843 c
-223.562 264.6 223.415 264.398 223.238 264.24 c
-229.868 265.974 m
-229.75 265.828 l
-229.416 265.435 228.919 265.24 228.266 265.24 c
-227.685 265.24 227.23 265.431 226.899 265.813 c
-226.575 266.195 226.407 266.738 226.399 267.444 c
-226.399 268.488 l
-226.399 269.242 226.546 269.803 226.839 270.179 c
-227.141 270.549 227.593 270.737 228.192 270.737 c
-228.699 270.737 229.096 270.594 229.383 270.31 c
-229.677 270.024 229.839 269.62 229.868 269.09 c
-229.191 269.09 l
-229.17 269.421 229.077 269.682 228.913 269.869 c
-228.755 270.065 228.52 270.164 228.207 270.164 c
-227.814 270.164 227.531 270.035 227.354 269.782 c
-227.178 269.524 227.082 269.124 227.075 268.576 c
-227.075 267.488 l
-227.075 266.948 227.178 266.533 227.384 266.239 c
-227.589 265.952 227.884 265.813 228.266 265.813 c
-228.626 265.813 228.905 265.901 229.104 266.077 c
-229.191 266.165 l
-229.191 267.4 l
-228.221 267.4 l
-228.221 267.974 l
-229.868 267.974 l
-h
-231.587 265.313 -0.646 3.983 re
-231.632 270.34 m
-231.632 270.229 231.602 270.138 231.543 270.061 c
-231.485 269.991 231.389 269.958 231.265 269.958 c
-231.147 269.958 231.051 269.991 230.985 270.061 c
-230.926 270.138 230.897 270.229 230.897 270.34 c
-230.897 270.457 230.926 270.549 230.985 270.619 c
-231.051 270.696 231.147 270.737 231.265 270.737 c
-231.389 270.737 231.485 270.696 231.543 270.619 c
-231.602 270.538 231.632 270.447 231.632 270.34 c
-233.455 270.252 m
-233.455 269.296 l
-234.057 269.296 l
-234.057 268.768 l
-233.455 268.768 l
-233.455 266.298 l
-233.455 266.14 233.476 266.022 233.528 265.945 c
-233.586 265.864 233.675 265.828 233.792 265.828 c
-233.881 265.828 233.969 265.842 234.057 265.871 c
-234.057 265.313 l
-233.91 265.265 233.756 265.24 233.602 265.24 c
-233.345 265.24 233.15 265.331 233.014 265.518 c
-232.874 265.703 232.808 265.963 232.808 266.298 c
-232.808 268.768 l
-232.205 268.768 l
-232.205 269.296 l
-232.808 269.296 l
-232.808 270.252 l
-h
-239.51 266.459 m
-240.113 269.296 l
-240.76 269.296 l
-239.775 265.313 l
-239.261 265.313 l
-238.482 268.165 l
-237.732 265.313 l
-237.203 265.313 l
-236.247 269.296 l
-236.879 269.296 l
-237.497 266.533 l
-238.232 269.296 l
-238.746 269.296 l
-h
-242.142 265.313 -0.646 3.983 re
-242.186 270.34 m
-242.186 270.229 242.157 270.138 242.097 270.061 c
-242.039 269.991 241.943 269.958 241.818 269.958 c
-241.7 269.958 241.605 269.991 241.539 270.061 c
-241.48 270.138 241.451 270.229 241.451 270.34 c
-241.451 270.457 241.48 270.549 241.539 270.619 c
-241.605 270.696 241.7 270.737 241.818 270.737 c
-241.943 270.737 242.039 270.696 242.097 270.619 c
-242.157 270.538 242.186 270.447 242.186 270.34 c
-243.861 265.313 -0.646 5.644 re
-245.581 265.313 -0.646 5.644 re
-249.697 265.798 m
-249.91 265.798 250.083 265.861 250.211 265.989 c
-250.348 266.125 250.421 266.316 250.432 266.562 c
-251.049 266.562 l
-251.027 266.181 250.891 265.861 250.637 265.607 c
-250.381 265.361 250.068 265.24 249.697 265.24 c
-249.205 265.24 248.83 265.39 248.565 265.695 c
-248.308 266.007 248.183 266.474 248.183 267.091 c
-248.183 267.532 l
-248.183 268.128 248.308 268.583 248.565 268.899 c
-248.83 269.212 249.205 269.37 249.697 269.37 c
-250.097 269.37 250.417 269.238 250.652 268.973 c
-250.895 268.716 251.027 268.371 251.049 267.929 c
-250.432 267.929 l
-250.41 268.223 250.336 268.444 250.211 268.591 c
-250.094 268.737 249.921 268.811 249.697 268.811 c
-249.403 268.811 249.186 268.712 249.05 268.517 c
-248.91 268.33 248.837 268.022 248.83 267.592 c
-248.83 267.077 l
-248.83 266.607 248.896 266.272 249.035 266.077 c
-249.182 265.89 249.403 265.798 249.697 265.798 c
-253.445 268.679 m
-253.357 268.697 253.258 268.708 253.151 268.708 c
-252.817 268.708 252.582 268.525 252.445 268.165 c
-252.445 265.313 l
-251.799 265.313 l
-251.799 269.296 l
-252.431 269.296 l
-252.445 268.885 l
-252.622 269.208 252.865 269.37 253.18 269.37 c
-253.287 269.37 253.376 269.348 253.445 269.311 c
-h
-255.445 265.24 m
-254.945 265.24 254.562 265.387 254.298 265.68 c
-254.033 265.974 253.901 266.408 253.901 266.989 c
-253.901 267.459 l
-253.901 268.054 254.026 268.521 254.283 268.855 c
-254.548 269.197 254.907 269.37 255.371 269.37 c
-255.83 269.37 256.172 269.215 256.399 268.914 c
-256.635 268.62 256.756 268.157 256.767 267.532 c
-256.767 267.106 l
-254.548 267.106 l
-254.548 267.018 l
-254.548 266.584 254.625 266.272 254.783 266.077 c
-254.948 265.89 255.18 265.798 255.474 265.798 c
-255.668 265.798 255.842 265.832 255.988 265.901 c
-256.135 265.978 256.271 266.096 256.399 266.254 c
-256.738 265.842 l
-256.451 265.438 256.021 265.24 255.445 265.24 c
-255.371 268.811 m
-255.096 268.811 254.893 268.716 254.768 268.532 c
-254.639 268.344 254.566 268.054 254.548 267.665 c
-256.121 267.665 l
-256.121 267.753 l
-256.098 268.135 256.033 268.403 255.915 268.562 c
-255.797 268.727 255.613 268.811 255.371 268.811 c
-259.589 265.313 m
-259.549 265.401 259.524 265.548 259.516 265.753 c
-259.281 265.408 258.986 265.24 258.634 265.24 c
-258.271 265.24 257.987 265.335 257.781 265.533 c
-257.583 265.739 257.488 266.026 257.488 266.401 c
-257.488 266.801 257.623 267.121 257.899 267.356 c
-258.171 267.598 258.546 267.723 259.017 267.723 c
-259.501 267.723 l
-259.501 268.149 l
-259.501 268.385 259.446 268.55 259.339 268.65 c
-259.229 268.756 259.067 268.811 258.855 268.811 c
-258.656 268.811 258.494 268.753 258.369 268.635 c
-258.252 268.517 258.193 268.371 258.193 268.194 c
-257.546 268.194 l
-257.546 268.388 257.605 268.579 257.723 268.768 c
-257.847 268.951 258.009 269.098 258.208 269.208 c
-258.414 269.315 258.641 269.37 258.899 269.37 c
-259.299 269.37 259.604 269.267 259.81 269.061 c
-260.023 268.855 260.137 268.562 260.148 268.18 c
-260.148 266.165 l
-260.148 265.861 260.185 265.596 260.266 265.371 c
-260.266 265.313 l
-h
-258.722 265.828 m
-258.888 265.828 259.038 265.871 259.178 265.959 c
-259.325 266.048 259.431 266.158 259.501 266.298 c
-259.501 267.239 l
-259.134 267.239 l
-258.818 267.239 258.575 267.168 258.398 267.033 c
-258.223 266.904 258.134 266.717 258.134 266.474 c
-258.134 266.246 258.178 266.081 258.267 265.974 c
-258.354 265.875 258.506 265.828 258.722 265.828 c
-262.001 270.252 m
-262.001 269.296 l
-262.603 269.296 l
-262.603 268.768 l
-262.001 268.768 l
-262.001 266.298 l
-262.001 266.14 262.022 266.022 262.074 265.945 c
-262.132 265.864 262.221 265.828 262.338 265.828 c
-262.427 265.828 262.514 265.842 262.603 265.871 c
-262.603 265.313 l
-262.456 265.265 262.302 265.24 262.147 265.24 c
-261.89 265.24 261.695 265.331 261.559 265.518 c
-261.419 265.703 261.353 265.963 261.353 266.298 c
-261.353 268.768 l
-260.75 268.768 l
-260.75 269.296 l
-261.353 269.296 l
-261.353 270.252 l
-h
-264.793 265.24 m
-264.293 265.24 263.911 265.387 263.647 265.68 c
-263.382 265.974 263.25 266.408 263.25 266.989 c
-263.25 267.459 l
-263.25 268.054 263.374 268.521 263.632 268.855 c
-263.896 269.197 264.256 269.37 264.719 269.37 c
-265.178 269.37 265.521 269.215 265.748 268.914 c
-265.984 268.62 266.105 268.157 266.115 267.532 c
-266.115 267.106 l
-263.896 267.106 l
-263.896 267.018 l
-263.896 266.584 263.973 266.272 264.131 266.077 c
-264.297 265.89 264.528 265.798 264.823 265.798 c
-265.018 265.798 265.19 265.832 265.336 265.901 c
-265.484 265.978 265.62 266.096 265.748 266.254 c
-266.086 265.842 l
-265.8 265.438 265.37 265.24 264.793 265.24 c
-264.719 268.811 m
-264.444 268.811 264.241 268.716 264.117 268.532 c
-263.988 268.344 263.915 268.054 263.896 267.665 c
-265.469 267.665 l
-265.469 267.753 l
-265.447 268.135 265.381 268.403 265.263 268.562 c
-265.145 268.727 264.962 268.811 264.719 268.811 c
-f
-q 1 0 0 1 41.8817 255.9058 cm
-0 0 m
--0.04 0.087 -0.066 0.235 -0.073 0.44 c
--0.309 0.095 -0.603 -0.073 -0.955 -0.073 c
--1.319 -0.073 -1.602 0.022 -1.808 0.22 c
--2.007 0.426 -2.102 0.713 -2.102 1.087 c
--2.102 1.488 -1.966 1.808 -1.691 2.043 c
--1.419 2.285 -1.043 2.41 -0.573 2.41 c
--0.088 2.41 l
--0.088 2.836 l
--0.088 3.072 -0.143 3.237 -0.249 3.337 c
--0.36 3.443 -0.522 3.498 -0.735 3.498 c
--0.933 3.498 -1.095 3.439 -1.22 3.322 c
--1.338 3.204 -1.396 3.057 -1.396 2.881 c
--2.043 2.881 l
--2.043 3.075 -1.984 3.266 -1.866 3.454 c
--1.741 3.638 -1.58 3.785 -1.382 3.895 c
--1.176 4.002 -0.948 4.056 -0.691 4.056 c
--0.29 4.056 0.015 3.954 0.221 3.748 c
-0.434 3.542 0.548 3.248 0.559 2.866 c
-0.559 0.852 l
-0.559 0.548 0.595 0.283 0.676 0.058 c
-0.676 0 l
-h
--0.867 0.515 m
--0.702 0.515 -0.551 0.558 -0.411 0.646 c
--0.264 0.735 -0.158 0.845 -0.088 0.985 c
--0.088 1.926 l
--0.455 1.926 l
--0.771 1.926 -1.014 1.855 -1.19 1.72 c
--1.367 1.591 -1.455 1.404 -1.455 1.161 c
--1.455 0.933 -1.411 0.768 -1.323 0.661 c
--1.234 0.562 -1.084 0.515 -0.867 0.515 c
-3.896 3.983 m
-3.91 3.542 l
-4.164 3.884 4.487 4.056 4.881 4.056 c
-5.586 4.056 5.943 3.586 5.953 2.645 c
-5.953 0 l
-5.307 0 l
-5.307 2.616 l
-5.307 2.929 5.251 3.149 5.145 3.278 c
-5.035 3.403 4.881 3.469 4.675 3.469 c
-4.516 3.469 4.37 3.414 4.233 3.307 c
-4.104 3.197 4.002 3.061 3.925 2.896 c
-3.925 0 l
-3.278 0 l
-3.278 3.983 l
-h
-8.349 -0.073 m
-7.85 -0.073 7.468 0.073 7.202 0.367 c
-6.938 0.661 6.806 1.095 6.806 1.675 c
-6.806 2.146 l
-6.806 2.741 6.93 3.208 7.188 3.542 c
-7.453 3.884 7.813 4.056 8.276 4.056 c
-8.735 4.056 9.077 3.902 9.305 3.601 c
-9.54 3.307 9.661 2.844 9.672 2.219 c
-9.672 1.793 l
-7.453 1.793 l
-7.453 1.705 l
-7.453 1.271 7.53 0.959 7.688 0.764 c
-7.853 0.577 8.085 0.484 8.378 0.484 c
-8.573 0.484 8.746 0.518 8.893 0.588 c
-9.04 0.665 9.176 0.783 9.305 0.941 c
-9.643 0.529 l
-9.356 0.125 8.926 -0.073 8.349 -0.073 c
-8.276 3.498 m
-8 3.498 7.798 3.403 7.673 3.219 c
-7.545 3.031 7.471 2.741 7.453 2.352 c
-9.025 2.352 l
-9.025 2.439 l
-9.003 2.822 8.937 3.09 8.819 3.248 c
-8.702 3.414 8.518 3.498 8.276 3.498 c
-13.421 1.146 m
-14.023 3.983 l
-14.67 3.983 l
-13.685 0 l
-13.17 0 l
-12.391 2.851 l
-11.642 0 l
-11.113 0 l
-10.157 3.983 l
-10.789 3.983 l
-11.406 1.22 l
-12.141 3.983 l
-12.656 3.983 l
-h
-16.933 2.175 m
-16.933 2.782 17.043 3.248 17.271 3.572 c
-17.506 3.895 17.834 4.056 18.256 4.056 c
-18.639 4.056 18.936 3.898 19.153 3.586 c
-19.153 5.644 l
-19.8 5.644 l
-19.8 0 l
-19.212 0 l
-19.168 0.426 l
-18.962 0.091 18.657 -0.073 18.256 -0.073 c
-17.845 -0.073 17.521 0.081 17.286 0.397 c
-17.051 0.72 16.933 1.176 16.933 1.764 c
-h
-17.581 1.793 m
-17.581 1.352 17.643 1.022 17.771 0.808 c
-17.907 0.602 18.128 0.5 18.433 0.5 c
-18.756 0.5 18.995 0.661 19.153 0.985 c
-19.153 2.998 l
-18.984 3.31 18.745 3.469 18.433 3.469 c
-18.128 3.469 17.907 3.366 17.771 3.16 c
-17.643 2.954 17.581 2.631 17.581 2.19 c
-h
-21.504 0 -0.646 3.983 re
-21.549 5.026 m
-21.549 4.916 21.519 4.825 21.461 4.748 c
-21.402 4.677 21.307 4.644 21.182 4.644 c
-21.064 4.644 20.968 4.677 20.902 4.748 c
-20.843 4.825 20.814 4.916 20.814 5.026 c
-20.814 5.144 20.843 5.236 20.902 5.306 c
-20.968 5.383 21.064 5.423 21.182 5.423 c
-21.307 5.423 21.402 5.383 21.461 5.306 c
-21.519 5.225 21.549 5.134 21.549 5.026 c
-24.166 3.366 m
-24.077 3.384 23.978 3.395 23.871 3.395 c
-23.537 3.395 23.302 3.212 23.166 2.851 c
-23.166 0 l
-22.519 0 l
-22.519 3.983 l
-23.151 3.983 l
-23.166 3.572 l
-23.343 3.895 23.584 4.056 23.9 4.056 c
-24.008 4.056 24.095 4.035 24.166 3.998 c
-h
-26.165 -0.073 m
-25.664 -0.073 25.282 0.073 25.018 0.367 c
-24.754 0.661 24.621 1.095 24.621 1.675 c
-24.621 2.146 l
-24.621 2.741 24.746 3.208 25.003 3.542 c
-25.267 3.884 25.628 4.056 26.091 4.056 c
-26.55 4.056 26.892 3.902 27.12 3.601 c
-27.355 3.307 27.476 2.844 27.487 2.219 c
-27.487 1.793 l
-25.267 1.793 l
-25.267 1.705 l
-25.267 1.271 25.345 0.959 25.503 0.764 c
-25.668 0.577 25.899 0.484 26.194 0.484 c
-26.389 0.484 26.562 0.518 26.709 0.588 c
-26.855 0.665 26.992 0.783 27.12 0.941 c
-27.458 0.529 l
-27.171 0.125 26.741 -0.073 26.165 -0.073 c
-26.091 3.498 m
-25.816 3.498 25.614 3.403 25.488 3.219 c
-25.36 3.031 25.286 2.741 25.267 2.352 c
-26.84 2.352 l
-26.84 2.439 l
-26.819 2.822 26.753 3.09 26.635 3.248 c
-26.518 3.414 26.333 3.498 26.091 3.498 c
-29.648 0.484 m
-29.861 0.484 30.034 0.548 30.163 0.675 c
-30.298 0.812 30.372 1.003 30.383 1.249 c
-31 1.249 l
-30.979 0.867 30.842 0.548 30.589 0.294 c
-30.331 0.048 30.019 -0.073 29.648 -0.073 c
-29.155 -0.073 28.781 0.077 28.517 0.382 c
-28.259 0.694 28.134 1.161 28.134 1.778 c
-28.134 2.219 l
-28.134 2.815 28.259 3.27 28.517 3.586 c
-28.781 3.898 29.155 4.056 29.648 4.056 c
-30.049 4.056 30.368 3.925 30.603 3.659 c
-30.846 3.403 30.979 3.057 31 2.616 c
-30.383 2.616 l
-30.361 2.91 30.287 3.131 30.163 3.278 c
-30.045 3.424 29.872 3.498 29.648 3.498 c
-29.354 3.498 29.138 3.399 29.001 3.204 c
-28.862 3.017 28.788 2.708 28.781 2.278 c
-28.781 1.764 l
-28.781 1.294 28.847 0.959 28.987 0.764 c
-29.134 0.577 29.354 0.484 29.648 0.484 c
-32.602 4.939 m
-32.602 3.983 l
-33.205 3.983 l
-33.205 3.454 l
-32.602 3.454 l
-32.602 0.985 l
-32.602 0.827 32.625 0.709 32.677 0.632 c
-32.735 0.551 32.823 0.515 32.941 0.515 c
-33.028 0.515 33.117 0.529 33.205 0.558 c
-33.205 0 l
-33.059 -0.048 32.904 -0.073 32.75 -0.073 c
-32.492 -0.073 32.297 0.018 32.162 0.205 c
-32.022 0.389 31.956 0.65 31.956 0.985 c
-31.956 3.454 l
-31.353 3.454 l
-31.353 3.983 l
-31.956 3.983 l
-31.956 4.939 l
-h
-33.764 2.175 m
-33.764 2.753 33.9 3.208 34.175 3.542 c
-34.458 3.884 34.83 4.056 35.293 4.056 c
-35.752 4.056 36.12 3.888 36.395 3.557 c
-36.678 3.233 36.825 2.786 36.836 2.219 c
-36.836 1.793 l
-36.836 1.224 36.693 0.768 36.409 0.426 c
-36.134 0.091 35.767 -0.073 35.307 -0.073 c
-34.844 -0.073 34.473 0.087 34.19 0.411 c
-33.915 0.742 33.772 1.183 33.764 1.734 c
-h
-34.41 1.793 m
-34.41 1.389 34.488 1.072 34.646 0.837 c
-34.811 0.602 35.031 0.484 35.307 0.484 c
-35.873 0.484 36.167 0.897 36.189 1.72 c
-36.189 2.175 l
-36.189 2.576 36.105 2.896 35.939 3.131 c
-35.781 3.374 35.565 3.498 35.293 3.498 c
-35.028 3.498 34.811 3.374 34.646 3.131 c
-34.488 2.896 34.41 2.576 34.41 2.175 c
-h
-39.32 3.366 m
-39.232 3.384 39.133 3.395 39.027 3.395 c
-38.692 3.395 38.456 3.212 38.321 2.851 c
-38.321 0 l
-37.674 0 l
-37.674 3.983 l
-38.306 3.983 l
-38.321 3.572 l
-38.497 3.895 38.74 4.056 39.056 4.056 c
-39.162 4.056 39.25 4.035 39.32 3.998 c
-h
-41.128 1.087 m
-41.849 3.983 l
-42.539 3.983 l
-41.246 -0.559 l
-41.146 -0.9 41.003 -1.162 40.82 -1.338 c
-40.643 -1.515 40.441 -1.602 40.217 -1.602 c
-40.128 -1.602 40.014 -1.58 39.879 -1.544 c
-39.879 -1 l
-40.026 -1.014 l
-40.209 -1.014 40.357 -0.971 40.467 -0.882 c
-40.573 -0.794 40.662 -0.636 40.731 -0.412 c
-40.849 0.029 l
-39.688 3.983 l
-40.393 3.983 l
-h
-45.508 3.983 m
-45.523 3.542 l
-45.776 3.884 46.1 4.056 46.493 4.056 c
-47.199 4.056 47.555 3.586 47.567 2.645 c
-47.567 0 l
-46.919 0 l
-46.919 2.616 l
-46.919 2.929 46.865 3.149 46.758 3.278 c
-46.648 3.403 46.493 3.469 46.287 3.469 c
-46.129 3.469 45.982 3.414 45.847 3.307 c
-45.718 3.197 45.615 3.061 45.537 2.896 c
-45.537 0 l
-44.891 0 l
-44.891 3.983 l
-h
-50.58 0 m
-50.539 0.087 50.513 0.235 50.506 0.44 c
-50.271 0.095 49.977 -0.073 49.624 -0.073 c
-49.26 -0.073 48.978 0.022 48.772 0.22 c
-48.573 0.426 48.477 0.713 48.477 1.087 c
-48.477 1.488 48.614 1.808 48.889 2.043 c
-49.161 2.285 49.536 2.41 50.006 2.41 c
-50.491 2.41 l
-50.491 2.836 l
-50.491 3.072 50.436 3.237 50.33 3.337 c
-50.219 3.443 50.058 3.498 49.845 3.498 c
-49.647 3.498 49.485 3.439 49.36 3.322 c
-49.242 3.204 49.183 3.057 49.183 2.881 c
-48.536 2.881 l
-48.536 3.075 48.595 3.266 48.712 3.454 c
-48.838 3.638 48.999 3.785 49.198 3.895 c
-49.404 4.002 49.632 4.056 49.888 4.056 c
-50.289 4.056 50.594 3.954 50.8 3.748 c
-51.013 3.542 51.127 3.248 51.138 2.866 c
-51.138 0.852 l
-51.138 0.548 51.175 0.283 51.256 0.058 c
-51.256 0 l
-h
-49.712 0.515 m
-49.878 0.515 50.029 0.558 50.168 0.646 c
-50.315 0.735 50.422 0.845 50.491 0.985 c
-50.491 1.926 l
-50.124 1.926 l
-49.807 1.926 49.566 1.855 49.389 1.72 c
-49.213 1.591 49.124 1.404 49.124 1.161 c
-49.124 0.933 49.169 0.768 49.256 0.661 c
-49.345 0.562 49.495 0.515 49.712 0.515 c
-52.755 3.983 m
-52.77 3.615 l
-53.013 3.91 53.332 4.056 53.725 4.056 c
-54.166 4.056 54.474 3.858 54.651 3.469 c
-54.904 3.858 55.254 4.056 55.695 4.056 c
-56.43 4.056 56.805 3.594 56.826 2.675 c
-56.826 0 l
-56.18 0 l
-56.18 2.616 l
-56.18 2.91 56.125 3.123 56.018 3.262 c
-55.919 3.399 55.746 3.469 55.504 3.469 c
-55.305 3.469 55.143 3.388 55.019 3.233 c
-54.901 3.087 54.831 2.896 54.813 2.66 c
-54.813 0 l
-54.152 0 l
-54.152 2.645 l
-54.152 3.193 53.931 3.469 53.49 3.469 c
-53.156 3.469 52.92 3.307 52.784 2.984 c
-52.784 0 l
-52.138 0 l
-52.138 3.983 l
-h
-59.222 -0.073 m
-58.723 -0.073 58.341 0.073 58.077 0.367 c
-57.811 0.661 57.68 1.095 57.68 1.675 c
-57.68 2.146 l
-57.68 2.741 57.804 3.208 58.061 3.542 c
-58.326 3.884 58.686 4.056 59.149 4.056 c
-59.608 4.056 59.951 3.902 60.178 3.601 c
-60.413 3.307 60.535 2.844 60.545 2.219 c
-60.545 1.793 l
-58.326 1.793 l
-58.326 1.705 l
-58.326 1.271 58.403 0.959 58.561 0.764 c
-58.727 0.577 58.958 0.484 59.252 0.484 c
-59.447 0.484 59.619 0.518 59.766 0.588 c
-59.914 0.665 60.049 0.783 60.178 0.941 c
-60.516 0.529 l
-60.23 0.125 59.8 -0.073 59.222 -0.073 c
-59.149 3.498 m
-58.873 3.498 58.671 3.403 58.547 3.219 c
-58.418 3.031 58.345 2.741 58.326 2.352 c
-59.899 2.352 l
-59.899 2.439 l
-59.877 2.822 59.81 3.09 59.693 3.248 c
-59.575 3.414 59.392 3.498 59.149 3.498 c
-61.192 2.175 m
-61.192 2.782 61.302 3.248 61.53 3.572 c
-61.765 3.895 62.093 4.056 62.515 4.056 c
-62.897 4.056 63.195 3.898 63.411 3.586 c
-63.411 5.644 l
-64.059 5.644 l
-64.059 0 l
-63.471 0 l
-63.427 0.426 l
-63.221 0.091 62.916 -0.073 62.515 -0.073 c
-62.104 -0.073 61.78 0.081 61.545 0.397 c
-61.31 0.72 61.192 1.176 61.192 1.764 c
-h
-61.84 1.793 m
-61.84 1.352 61.902 1.022 62.03 0.808 c
-62.166 0.602 62.387 0.5 62.692 0.5 c
-63.015 0.5 63.253 0.661 63.411 0.985 c
-63.411 2.998 l
-63.243 3.31 63.004 3.469 62.692 3.469 c
-62.387 3.469 62.166 3.366 62.03 3.16 c
-61.902 2.954 61.84 2.631 61.84 2.19 c
-h
-f
-Q
-q 1 0 0 1 110.0119 261.315 cm
-0 0 m
--0.382 0 l
--0.382 -5.835 l
-0 -5.835 l
-0 -6.659 l
--1.426 -6.659 l
--1.426 0.823 l
-0 0.823 l
-h
-3.63 -3.543 m
-3.63 -4.171 3.52 -4.653 3.308 -4.983 c
-3.09 -5.318 2.77 -5.483 2.352 -5.483 c
-2.028 -5.483 1.768 -5.351 1.573 -5.087 c
-1.573 -6.938 l
-0.53 -6.938 l
-0.53 -1.426 l
-1.484 -1.426 l
-1.529 -1.794 l
-1.723 -1.5 1.992 -1.353 2.337 -1.353 c
-2.756 -1.353 3.076 -1.511 3.293 -1.823 c
-3.506 -2.128 3.62 -2.598 3.63 -3.234 c
-h
-2.587 -3.278 m
-2.587 -2.896 2.543 -2.627 2.454 -2.469 c
-2.373 -2.315 2.234 -2.234 2.028 -2.234 c
-1.822 -2.234 1.668 -2.323 1.573 -2.5 c
-1.573 -4.366 l
-1.661 -4.535 1.816 -4.616 2.043 -4.616 c
-2.249 -4.616 2.389 -4.535 2.469 -4.366 c
-2.547 -4.189 2.587 -3.917 2.587 -3.543 c
-h
-6.217 -2.44 m
-5.88 -2.411 l
-5.593 -2.411 5.402 -2.536 5.307 -2.778 c
-5.307 -5.409 l
-4.262 -5.409 l
-4.262 -1.426 l
-5.233 -1.426 l
-5.263 -1.867 l
-5.428 -1.525 5.66 -1.353 5.953 -1.353 c
-6.071 -1.353 6.163 -1.374 6.232 -1.411 c
-h
-6.512 -3.293 m
-6.512 -2.687 6.651 -2.213 6.938 -1.867 c
-7.221 -1.525 7.614 -1.353 8.114 -1.353 c
-8.621 -1.353 9.018 -1.525 9.305 -1.867 c
-9.587 -2.213 9.731 -2.687 9.731 -3.293 c
-9.731 -3.558 l
-9.731 -4.156 9.587 -4.627 9.305 -4.969 c
-9.018 -5.314 8.621 -5.483 8.114 -5.483 c
-7.603 -5.483 7.206 -5.314 6.923 -4.969 c
-6.647 -4.627 6.512 -4.152 6.512 -3.543 c
-h
-7.555 -3.558 m
-7.555 -4.263 7.739 -4.616 8.114 -4.616 c
-8.467 -4.616 8.658 -4.322 8.687 -3.734 c
-8.687 -3.293 l
-8.687 -2.932 8.636 -2.66 8.54 -2.484 c
-8.441 -2.308 8.297 -2.22 8.114 -2.22 c
-7.937 -2.22 7.798 -2.308 7.702 -2.484 c
-7.603 -2.66 7.555 -2.932 7.555 -3.293 c
-h
-11.465 -1.426 m
-11.465 -5.63 l
-11.465 -6.078 11.362 -6.423 11.156 -6.659 c
-10.951 -6.894 10.657 -7.011 10.275 -7.011 c
-10.105 -7.011 9.951 -6.99 9.804 -6.953 c
-9.789 -6.101 l
-9.907 -6.13 9.999 -6.145 10.069 -6.145 c
-10.304 -6.145 10.422 -5.983 10.422 -5.659 c
-10.422 -1.426 l
-h
-10.363 -0.397 m
-10.363 -0.243 10.41 -0.114 10.51 -0.015 c
-10.616 0.091 10.753 0.147 10.921 0.147 c
-11.098 0.147 11.233 0.091 11.333 -0.015 c
-11.439 -0.114 11.495 -0.243 11.495 -0.397 c
-11.495 -0.566 11.439 -0.702 11.333 -0.809 c
-11.233 -0.908 11.098 -0.956 10.921 -0.956 c
-10.745 -0.956 10.605 -0.908 10.51 -0.809 c
-10.41 -0.702 10.363 -0.566 10.363 -0.397 c
-13.832 -5.483 m
-13.303 -5.483 12.883 -5.328 12.582 -5.012 c
-12.289 -4.69 12.141 -4.23 12.141 -3.631 c
-12.141 -3.323 l
-12.141 -2.697 12.278 -2.213 12.553 -1.867 c
-12.825 -1.525 13.218 -1.353 13.729 -1.353 c
-14.229 -1.353 14.6 -1.515 14.846 -1.837 c
-15.1 -2.161 15.232 -2.639 15.243 -3.263 c
-15.243 -3.763 l
-13.17 -3.763 l
-13.189 -4.057 13.251 -4.274 13.361 -4.41 c
-13.479 -4.549 13.66 -4.616 13.905 -4.616 c
-14.247 -4.616 14.537 -4.499 14.772 -4.263 c
-15.184 -4.895 l
-15.056 -5.072 14.868 -5.215 14.626 -5.322 c
-14.379 -5.428 14.115 -5.483 13.832 -5.483 c
-13.185 -3.043 m
-14.214 -3.043 l
-14.214 -2.94 l
-14.214 -2.705 14.173 -2.529 14.096 -2.411 c
-14.026 -2.286 13.898 -2.22 13.714 -2.22 c
-13.538 -2.22 13.406 -2.29 13.317 -2.425 c
-13.236 -2.554 13.192 -2.76 13.185 -3.043 c
-17.271 -4.616 m
-17.565 -4.616 17.716 -4.421 17.727 -4.028 c
-18.697 -4.028 l
-18.697 -4.461 18.565 -4.814 18.3 -5.087 c
-18.036 -5.351 17.698 -5.483 17.286 -5.483 c
-16.775 -5.483 16.382 -5.328 16.11 -5.012 c
-15.846 -4.69 15.706 -4.219 15.698 -3.601 c
-15.698 -3.278 l
-15.698 -2.654 15.831 -2.176 16.095 -1.852 c
-16.367 -1.521 16.764 -1.353 17.286 -1.353 c
-17.716 -1.353 18.057 -1.492 18.315 -1.764 c
-18.568 -2.04 18.697 -2.421 18.697 -2.911 c
-17.727 -2.911 l
-17.727 -2.697 17.687 -2.529 17.61 -2.411 c
-17.54 -2.286 17.423 -2.22 17.257 -2.22 c
-17.08 -2.22 16.952 -2.286 16.874 -2.411 c
-16.794 -2.539 16.75 -2.789 16.742 -3.161 c
-16.742 -3.572 l
-16.742 -3.896 16.757 -4.123 16.787 -4.248 c
-16.823 -4.377 16.878 -4.469 16.948 -4.528 c
-17.026 -4.586 17.132 -4.616 17.271 -4.616 c
-20.505 -0.456 m
-20.505 -1.426 l
-21.034 -1.426 l
-21.034 -2.22 l
-20.505 -2.22 l
-20.505 -4.189 l
-20.505 -4.347 20.523 -4.454 20.564 -4.513 c
-20.612 -4.572 20.696 -4.601 20.814 -4.601 c
-20.92 -4.601 21.005 -4.594 21.064 -4.572 c
-21.064 -5.38 l
-20.887 -5.446 20.696 -5.483 20.49 -5.483 c
-19.815 -5.483 19.469 -5.097 19.461 -4.322 c
-19.461 -2.22 l
-19.006 -2.22 l
-19.006 -1.426 l
-19.461 -1.426 l
-19.461 -0.456 l
-h
-24.297 -1.426 m
-24.327 -1.823 l
-24.562 -1.511 24.864 -1.353 25.238 -1.353 c
-25.922 -1.353 26.275 -1.833 26.296 -2.793 c
-26.296 -5.409 l
-25.253 -5.409 l
-25.253 -2.866 l
-25.253 -2.643 25.217 -2.481 25.15 -2.382 c
-25.08 -2.286 24.963 -2.234 24.797 -2.234 c
-24.61 -2.234 24.463 -2.33 24.357 -2.514 c
-24.357 -5.409 l
-23.312 -5.409 l
-23.312 -1.426 l
-h
-28.928 -5.409 m
-28.899 -5.351 28.868 -5.247 28.839 -5.101 c
-28.652 -5.358 28.402 -5.483 28.09 -5.483 c
-27.756 -5.483 27.476 -5.376 27.252 -5.16 c
-27.035 -4.935 26.929 -4.645 26.929 -4.293 c
-26.929 -3.881 27.061 -3.564 27.326 -3.337 c
-27.59 -3.102 27.972 -2.984 28.472 -2.984 c
-28.795 -2.984 l
-28.795 -2.66 l
-28.795 -2.484 28.758 -2.363 28.693 -2.294 c
-28.633 -2.216 28.546 -2.176 28.428 -2.176 c
-28.17 -2.176 28.046 -2.33 28.046 -2.631 c
-27.002 -2.631 l
-27.002 -2.261 27.138 -1.955 27.414 -1.72 c
-27.686 -1.478 28.035 -1.353 28.457 -1.353 c
-28.899 -1.353 29.236 -1.47 29.471 -1.706 c
-29.714 -1.933 29.839 -2.257 29.839 -2.675 c
-29.839 -4.542 l
-29.839 -4.888 29.887 -5.156 29.986 -5.351 c
-29.986 -5.409 l
-h
-28.325 -4.659 m
-28.432 -4.659 28.523 -4.642 28.604 -4.601 c
-28.693 -4.553 28.755 -4.495 28.795 -4.424 c
-28.795 -3.601 l
-28.546 -3.601 l
-28.369 -3.601 28.226 -3.66 28.12 -3.778 c
-28.02 -3.888 27.972 -4.035 27.972 -4.219 c
-27.972 -4.513 28.09 -4.659 28.325 -4.659 c
-31.559 -1.426 m
-31.588 -1.794 l
-31.823 -1.5 32.132 -1.353 32.515 -1.353 c
-32.915 -1.353 33.194 -1.536 33.352 -1.897 c
-33.587 -1.536 33.915 -1.353 34.337 -1.353 c
-35.031 -1.353 35.384 -1.837 35.395 -2.808 c
-35.395 -5.409 l
-34.366 -5.409 l
-34.366 -2.866 l
-34.366 -2.643 34.329 -2.481 34.264 -2.382 c
-34.204 -2.286 34.094 -2.234 33.94 -2.234 c
-33.742 -2.234 33.602 -2.352 33.514 -2.587 c
-33.514 -5.409 l
-32.471 -5.409 l
-32.471 -2.881 l
-32.471 -2.646 32.44 -2.481 32.382 -2.382 c
-32.323 -2.286 32.213 -2.234 32.059 -2.234 c
-31.883 -2.234 31.739 -2.33 31.632 -2.514 c
-31.632 -5.409 l
-30.589 -5.409 l
-30.589 -1.426 l
-h
-37.776 -5.483 m
-37.248 -5.483 36.828 -5.328 36.527 -5.012 c
-36.234 -4.69 36.086 -4.23 36.086 -3.631 c
-36.086 -3.323 l
-36.086 -2.697 36.222 -2.213 36.498 -1.867 c
-36.77 -1.525 37.163 -1.353 37.674 -1.353 c
-38.173 -1.353 38.545 -1.515 38.79 -1.837 c
-39.044 -2.161 39.177 -2.639 39.187 -3.263 c
-39.187 -3.763 l
-37.115 -3.763 l
-37.134 -4.057 37.196 -4.274 37.306 -4.41 c
-37.424 -4.549 37.604 -4.616 37.85 -4.616 c
-38.192 -4.616 38.482 -4.499 38.717 -4.263 c
-39.129 -4.895 l
-39 -5.072 38.813 -5.215 38.57 -5.322 c
-38.324 -5.428 38.059 -5.483 37.776 -5.483 c
-37.13 -3.043 m
-38.159 -3.043 l
-38.159 -2.94 l
-38.159 -2.705 38.119 -2.529 38.041 -2.411 c
-37.971 -2.286 37.843 -2.22 37.659 -2.22 c
-37.483 -2.22 37.35 -2.29 37.262 -2.425 c
-37.181 -2.554 37.138 -2.76 37.13 -3.043 c
-39.526 0.823 m
-40.951 0.823 l
-40.951 -6.659 l
-39.526 -6.659 l
-39.526 -5.835 l
-39.908 -5.835 l
-39.908 0 l
-39.526 0 l
-h
-f
-Q
-q 1 0 0 1 155.6378 255.9058 cm
-0 0 m
--0.04 0.087 -0.066 0.235 -0.073 0.44 c
--0.309 0.095 -0.603 -0.073 -0.956 -0.073 c
--1.319 -0.073 -1.602 0.022 -1.808 0.22 c
--2.007 0.426 -2.102 0.713 -2.102 1.087 c
--2.102 1.488 -1.966 1.808 -1.691 2.043 c
--1.419 2.285 -1.043 2.41 -0.573 2.41 c
--0.088 2.41 l
--0.088 2.836 l
--0.088 3.072 -0.143 3.237 -0.25 3.337 c
--0.36 3.443 -0.522 3.498 -0.735 3.498 c
--0.933 3.498 -1.095 3.439 -1.22 3.322 c
--1.338 3.204 -1.396 3.057 -1.396 2.881 c
--2.043 2.881 l
--2.043 3.075 -1.984 3.266 -1.866 3.454 c
--1.742 3.638 -1.58 3.785 -1.382 3.895 c
--1.176 4.002 -0.948 4.056 -0.691 4.056 c
--0.291 4.056 0.015 3.954 0.22 3.748 c
-0.434 3.542 0.548 3.248 0.559 2.866 c
-0.559 0.852 l
-0.559 0.548 0.595 0.283 0.676 0.058 c
-0.676 0 l
-h
--0.867 0.515 m
--0.702 0.515 -0.551 0.558 -0.411 0.646 c
--0.264 0.735 -0.158 0.845 -0.088 0.985 c
--0.088 1.926 l
--0.455 1.926 l
--0.771 1.926 -1.014 1.855 -1.191 1.72 c
--1.367 1.591 -1.455 1.404 -1.455 1.161 c
--1.455 0.933 -1.411 0.768 -1.323 0.661 c
--1.235 0.562 -1.084 0.515 -0.867 0.515 c
-2.176 3.983 m
-2.19 3.542 l
-2.444 3.884 2.767 4.056 3.16 4.056 c
-3.865 4.056 4.222 3.586 4.233 2.645 c
-4.233 0 l
-3.587 0 l
-3.587 2.616 l
-3.587 2.929 3.532 3.149 3.425 3.278 c
-3.314 3.403 3.16 3.469 2.955 3.469 c
-2.797 3.469 2.649 3.414 2.514 3.307 c
-2.385 3.197 2.282 3.061 2.205 2.896 c
-2.205 0 l
-1.558 0 l
-1.558 3.983 l
-h
-5.072 2.175 m
-5.072 2.782 5.182 3.248 5.409 3.572 c
-5.644 3.895 5.972 4.056 6.394 4.056 c
-6.776 4.056 7.074 3.898 7.291 3.586 c
-7.291 5.644 l
-7.937 5.644 l
-7.937 0 l
-7.35 0 l
-7.306 0.426 l
-7.1 0.091 6.795 -0.073 6.394 -0.073 c
-5.982 -0.073 5.659 0.081 5.424 0.397 c
-5.189 0.72 5.072 1.176 5.072 1.764 c
-h
-5.718 1.793 m
-5.718 1.352 5.781 1.022 5.909 0.808 c
-6.045 0.602 6.265 0.5 6.57 0.5 c
-6.894 0.5 7.133 0.661 7.291 0.985 c
-7.291 2.998 l
-7.121 3.31 6.882 3.469 6.57 3.469 c
-6.265 3.469 6.045 3.366 5.909 3.16 c
-5.781 2.954 5.718 2.631 5.718 2.19 c
-h
-13.626 1.146 m
-14.229 3.983 l
-14.876 3.983 l
-13.891 0 l
-13.376 0 l
-12.597 2.851 l
-11.848 0 l
-11.318 0 l
-10.363 3.983 l
-10.994 3.983 l
-11.612 1.22 l
-12.347 3.983 l
-12.862 3.983 l
-h
-16.257 0 -0.646 3.983 re
-16.301 5.026 m
-16.301 4.916 16.272 4.825 16.213 4.748 c
-16.154 4.677 16.058 4.644 15.933 4.644 c
-15.817 4.644 15.721 4.677 15.655 4.748 c
-15.596 4.825 15.566 4.916 15.566 5.026 c
-15.566 5.144 15.596 5.236 15.655 5.306 c
-15.721 5.383 15.817 5.423 15.933 5.423 c
-16.058 5.423 16.154 5.383 16.213 5.306 c
-16.272 5.225 16.301 5.134 16.301 5.026 c
-17.977 0 -0.646 5.644 re
-19.696 0 -0.646 5.644 re
-23.137 0 -0.647 3.983 re
-23.181 5.026 m
-23.181 4.916 23.151 4.825 23.092 4.748 c
-23.033 4.677 22.938 4.644 22.813 4.644 c
-22.695 4.644 22.599 4.677 22.534 4.748 c
-22.475 4.825 22.445 4.916 22.445 5.026 c
-22.445 5.144 22.475 5.236 22.534 5.306 c
-22.599 5.383 22.695 5.423 22.813 5.423 c
-22.938 5.423 23.033 5.383 23.092 5.306 c
-23.151 5.225 23.181 5.134 23.181 5.026 c
-24.768 3.983 m
-24.783 3.542 l
-25.036 3.884 25.359 4.056 25.753 4.056 c
-26.458 4.056 26.815 3.586 26.826 2.645 c
-26.826 0 l
-26.179 0 l
-26.179 2.616 l
-26.179 2.929 26.124 3.149 26.017 3.278 c
-25.907 3.403 25.753 3.469 25.547 3.469 c
-25.389 3.469 25.242 3.414 25.105 3.307 c
-24.978 3.197 24.874 3.061 24.797 2.896 c
-24.797 0 l
-24.151 0 l
-24.151 3.983 l
-h
-28.502 0 -0.647 3.983 re
-28.546 5.026 m
-28.546 4.916 28.517 4.825 28.457 4.748 c
-28.398 4.677 28.303 4.644 28.178 4.644 c
-28.06 4.644 27.965 4.677 27.899 4.748 c
-27.84 4.825 27.811 4.916 27.811 5.026 c
-27.811 5.144 27.84 5.236 27.899 5.306 c
-27.965 5.383 28.06 5.423 28.178 5.423 c
-28.303 5.423 28.398 5.383 28.457 5.306 c
-28.517 5.225 28.546 5.134 28.546 5.026 c
-30.368 4.939 m
-30.368 3.983 l
-30.971 3.983 l
-30.971 3.454 l
-30.368 3.454 l
-30.368 0.985 l
-30.368 0.827 30.391 0.709 30.441 0.632 c
-30.501 0.551 30.589 0.515 30.707 0.515 c
-30.794 0.515 30.883 0.529 30.971 0.558 c
-30.971 0 l
-30.824 -0.048 30.67 -0.073 30.515 -0.073 c
-30.258 -0.073 30.063 0.018 29.928 0.205 c
-29.788 0.389 29.722 0.65 29.722 0.985 c
-29.722 3.454 l
-29.119 3.454 l
-29.119 3.983 l
-29.722 3.983 l
-29.722 4.939 l
-h
-32.44 0 -0.646 3.983 re
-32.485 5.026 m
-32.485 4.916 32.456 4.825 32.396 4.748 c
-32.338 4.677 32.242 4.644 32.118 4.644 c
-32 4.644 31.904 4.677 31.838 4.748 c
-31.779 4.825 31.75 4.916 31.75 5.026 c
-31.75 5.144 31.779 5.236 31.838 5.306 c
-31.904 5.383 32 5.423 32.118 5.423 c
-32.242 5.423 32.338 5.383 32.396 5.306 c
-32.456 5.225 32.485 5.134 32.485 5.026 c
-35.498 0 m
-35.457 0.087 35.432 0.235 35.424 0.44 c
-35.189 0.095 34.896 -0.073 34.543 -0.073 c
-34.179 -0.073 33.896 0.022 33.691 0.22 c
-33.492 0.426 33.396 0.713 33.396 1.087 c
-33.396 1.488 33.533 1.808 33.807 2.043 c
-34.08 2.285 34.455 2.41 34.925 2.41 c
-35.41 2.41 l
-35.41 2.836 l
-35.41 3.072 35.355 3.237 35.249 3.337 c
-35.138 3.443 34.977 3.498 34.763 3.498 c
-34.565 3.498 34.403 3.439 34.278 3.322 c
-34.161 3.204 34.102 3.057 34.102 2.881 c
-33.456 2.881 l
-33.456 3.075 33.514 3.266 33.631 3.454 c
-33.757 3.638 33.918 3.785 34.117 3.895 c
-34.322 4.002 34.551 4.056 34.807 4.056 c
-35.208 4.056 35.513 3.954 35.719 3.748 c
-35.932 3.542 36.045 3.248 36.057 2.866 c
-36.057 0.852 l
-36.057 0.548 36.093 0.283 36.174 0.058 c
-36.174 0 l
-h
-34.631 0.515 m
-34.796 0.515 34.947 0.558 35.087 0.646 c
-35.234 0.735 35.34 0.845 35.41 0.985 c
-35.41 1.926 l
-35.043 1.926 l
-34.726 1.926 34.484 1.855 34.308 1.72 c
-34.131 1.591 34.043 1.404 34.043 1.161 c
-34.043 0.933 34.087 0.768 34.175 0.661 c
-34.264 0.562 34.414 0.515 34.631 0.515 c
-37.762 0 -0.647 5.644 re
-39.482 0 -0.647 3.983 re
-39.526 5.026 m
-39.526 4.916 39.496 4.825 39.438 4.748 c
-39.378 4.677 39.283 4.644 39.158 4.644 c
-39.041 4.644 38.945 4.677 38.879 4.748 c
-38.821 4.825 38.79 4.916 38.79 5.026 c
-38.79 5.144 38.821 5.236 38.879 5.306 c
-38.945 5.383 39.041 5.423 39.158 5.423 c
-39.283 5.423 39.378 5.383 39.438 5.306 c
-39.496 5.225 39.526 5.134 39.526 5.026 c
-41.098 0.558 m
-43.024 0.558 l
-43.024 0 l
-40.363 0 l
-40.363 0.5 l
-42.187 3.41 l
-40.378 3.41 l
-40.378 3.983 l
-42.95 3.983 l
-42.95 3.498 l
-h
-45.171 -0.073 m
-44.67 -0.073 44.288 0.073 44.024 0.367 c
-43.759 0.661 43.627 1.095 43.627 1.675 c
-43.627 2.146 l
-43.627 2.741 43.752 3.208 44.009 3.542 c
-44.274 3.884 44.633 4.056 45.096 4.056 c
-45.556 4.056 45.898 3.902 46.125 3.601 c
-46.361 3.307 46.482 2.844 46.493 2.219 c
-46.493 1.793 l
-44.274 1.793 l
-44.274 1.705 l
-44.274 1.271 44.351 0.959 44.509 0.764 c
-44.674 0.577 44.905 0.484 45.2 0.484 c
-45.394 0.484 45.567 0.518 45.714 0.588 c
-45.861 0.665 45.997 0.783 46.125 0.941 c
-46.464 0.529 l
-46.177 0.125 45.747 -0.073 45.171 -0.073 c
-45.096 3.498 m
-44.822 3.498 44.619 3.403 44.494 3.219 c
-44.365 3.031 44.292 2.741 44.274 2.352 c
-45.846 2.352 l
-45.846 2.439 l
-45.824 2.822 45.758 3.09 45.641 3.248 c
-45.523 3.414 45.339 3.498 45.096 3.498 c
-51.035 0 m
-50.995 0.087 50.969 0.235 50.962 0.44 c
-50.727 0.095 50.432 -0.073 50.079 -0.073 c
-49.716 -0.073 49.433 0.022 49.227 0.22 c
-49.029 0.426 48.934 0.713 48.934 1.087 c
-48.934 1.488 49.069 1.808 49.345 2.043 c
-49.616 2.285 49.992 2.41 50.462 2.41 c
-50.947 2.41 l
-50.947 2.836 l
-50.947 3.072 50.892 3.237 50.785 3.337 c
-50.675 3.443 50.513 3.498 50.3 3.498 c
-50.102 3.498 49.94 3.439 49.815 3.322 c
-49.697 3.204 49.639 3.057 49.639 2.881 c
-48.992 2.881 l
-48.992 3.075 49.051 3.266 49.169 3.454 c
-49.293 3.638 49.455 3.785 49.653 3.895 c
-49.859 4.002 50.087 4.056 50.345 4.056 c
-50.744 4.056 51.05 3.954 51.255 3.748 c
-51.469 3.542 51.583 3.248 51.594 2.866 c
-51.594 0.852 l
-51.594 0.548 51.631 0.283 51.711 0.058 c
-51.711 0 l
-h
-50.168 0.515 m
-50.333 0.515 50.484 0.558 50.624 0.646 c
-50.771 0.735 50.877 0.845 50.947 0.985 c
-50.947 1.926 l
-50.58 1.926 l
-50.264 1.926 50.021 1.855 49.844 1.72 c
-49.668 1.591 49.58 1.404 49.58 1.161 c
-49.58 0.933 49.624 0.768 49.712 0.661 c
-49.8 0.562 49.951 0.515 50.168 0.515 c
-55.959 3.366 m
-55.871 3.384 55.772 3.395 55.665 3.395 c
-55.331 3.395 55.095 3.212 54.96 2.851 c
-54.96 0 l
-54.313 0 l
-54.313 3.983 l
-54.945 3.983 l
-54.96 3.572 l
-55.136 3.895 55.378 4.056 55.695 4.056 c
-55.801 4.056 55.889 4.035 55.959 3.998 c
-h
-57.958 -0.073 m
-57.458 -0.073 57.077 0.073 56.812 0.367 c
-56.547 0.661 56.415 1.095 56.415 1.675 c
-56.415 2.146 l
-56.415 2.741 56.54 3.208 56.797 3.542 c
-57.061 3.884 57.422 4.056 57.885 4.056 c
-58.345 4.056 58.686 3.902 58.914 3.601 c
-59.149 3.307 59.27 2.844 59.282 2.219 c
-59.282 1.793 l
-57.061 1.793 l
-57.061 1.705 l
-57.061 1.271 57.139 0.959 57.297 0.764 c
-57.462 0.577 57.694 0.484 57.988 0.484 c
-58.183 0.484 58.355 0.518 58.502 0.588 c
-58.649 0.665 58.785 0.783 58.914 0.941 c
-59.252 0.529 l
-58.966 0.125 58.536 -0.073 57.958 -0.073 c
-57.885 3.498 m
-57.609 3.498 57.407 3.403 57.283 3.219 c
-57.154 3.031 57.08 2.741 57.061 2.352 c
-58.634 2.352 l
-58.634 2.439 l
-58.613 2.822 58.546 3.09 58.428 3.248 c
-58.311 3.414 58.127 3.498 57.885 3.498 c
-62.941 1.793 m
-62.941 1.165 62.824 0.694 62.588 0.382 c
-62.361 0.077 62.045 -0.073 61.633 -0.073 c
-61.229 -0.073 60.92 0.077 60.707 0.382 c
-60.707 -1.529 l
-60.061 -1.529 l
-60.061 3.983 l
-60.649 3.983 l
-60.693 3.542 l
-60.905 3.884 61.214 4.056 61.618 4.056 c
-62.06 4.056 62.386 3.902 62.603 3.601 c
-62.816 3.296 62.931 2.84 62.941 2.234 c
-h
-62.295 2.175 m
-62.295 2.616 62.225 2.94 62.089 3.145 c
-61.95 3.358 61.728 3.469 61.427 3.469 c
-61.111 3.469 60.872 3.314 60.707 3.013 c
-60.707 0.941 l
-60.872 0.636 61.111 0.484 61.427 0.484 c
-61.721 0.484 61.935 0.588 62.074 0.793 c
-62.21 1.007 62.284 1.338 62.295 1.778 c
-h
-63.647 2.175 m
-63.647 2.753 63.783 3.208 64.059 3.542 c
-64.342 3.884 64.713 4.056 65.175 4.056 c
-65.635 4.056 66.002 3.888 66.278 3.557 c
-66.561 3.233 66.708 2.786 66.719 2.219 c
-66.719 1.793 l
-66.719 1.224 66.576 0.768 66.293 0.426 c
-66.017 0.091 65.649 -0.073 65.19 -0.073 c
-64.728 -0.073 64.356 0.087 64.073 0.411 c
-63.797 0.742 63.654 1.183 63.647 1.734 c
-h
-64.294 1.793 m
-64.294 1.389 64.371 1.072 64.529 0.837 c
-64.695 0.602 64.915 0.484 65.19 0.484 c
-65.756 0.484 66.05 0.897 66.072 1.72 c
-66.072 2.175 l
-66.072 2.576 65.988 2.896 65.823 3.131 c
-65.665 3.374 65.447 3.498 65.175 3.498 c
-64.911 3.498 64.695 3.374 64.529 3.131 c
-64.371 2.896 64.294 2.576 64.294 2.175 c
-h
-69.497 1.014 m
-69.497 1.161 69.442 1.282 69.335 1.381 c
-69.225 1.477 69.019 1.595 68.718 1.734 c
-68.373 1.881 68.13 2.003 67.983 2.102 c
-67.836 2.208 67.726 2.326 67.66 2.454 c
-67.59 2.579 67.557 2.738 67.557 2.925 c
-67.557 3.248 67.674 3.516 67.909 3.733 c
-68.144 3.946 68.446 4.056 68.821 4.056 c
-69.204 4.056 69.512 3.943 69.747 3.719 c
-69.983 3.491 70.1 3.204 70.1 2.851 c
-69.453 2.851 l
-69.453 3.027 69.395 3.179 69.277 3.307 c
-69.159 3.432 69.005 3.498 68.821 3.498 c
-68.622 3.498 68.472 3.443 68.365 3.337 c
-68.255 3.237 68.204 3.105 68.204 2.94 c
-68.204 2.811 68.24 2.705 68.321 2.616 c
-68.398 2.535 68.589 2.433 68.894 2.308 c
-69.372 2.12 69.703 1.932 69.879 1.749 c
-70.056 1.573 70.144 1.344 70.144 1.072 c
-70.144 0.72 70.019 0.44 69.777 0.235 c
-69.541 0.029 69.225 -0.073 68.836 -0.073 c
-68.413 -0.073 68.075 0.044 67.822 0.279 c
-67.564 0.521 67.439 0.827 67.439 1.19 c
-68.086 1.19 l
-68.094 0.962 68.163 0.786 68.292 0.661 c
-68.417 0.544 68.601 0.484 68.836 0.484 c
-69.048 0.484 69.21 0.532 69.32 0.632 c
-69.439 0.727 69.497 0.856 69.497 1.014 c
-71.687 0 -0.646 3.983 re
-71.731 5.026 m
-71.731 4.916 71.702 4.825 71.643 4.748 c
-71.585 4.677 71.489 4.644 71.364 4.644 c
-71.246 4.644 71.151 4.677 71.085 4.748 c
-71.026 4.825 70.997 4.916 70.997 5.026 c
-70.997 5.144 71.026 5.236 71.085 5.306 c
-71.151 5.383 71.246 5.423 71.364 5.423 c
-71.489 5.423 71.585 5.383 71.643 5.306 c
-71.702 5.225 71.731 5.134 71.731 5.026 c
-73.554 4.939 m
-73.554 3.983 l
-74.157 3.983 l
-74.157 3.454 l
-73.554 3.454 l
-73.554 0.985 l
-73.554 0.827 73.576 0.709 73.628 0.632 c
-73.686 0.551 73.775 0.515 73.892 0.515 c
-73.981 0.515 74.068 0.529 74.157 0.558 c
-74.157 0 l
-74.01 -0.048 73.856 -0.073 73.701 -0.073 c
-73.444 -0.073 73.249 0.018 73.113 0.205 c
-72.973 0.389 72.907 0.65 72.907 0.985 c
-72.907 3.454 l
-72.304 3.454 l
-72.304 3.983 l
-72.907 3.983 l
-72.907 4.939 l
-h
-74.715 2.175 m
-74.715 2.753 74.851 3.208 75.126 3.542 c
-75.41 3.884 75.781 4.056 76.244 4.056 c
-76.703 4.056 77.071 3.888 77.347 3.557 c
-77.63 3.233 77.777 2.786 77.787 2.219 c
-77.787 1.793 l
-77.787 1.224 77.644 0.768 77.361 0.426 c
-77.085 0.091 76.718 -0.073 76.259 -0.073 c
-75.795 -0.073 75.425 0.087 75.142 0.411 c
-74.866 0.742 74.723 1.183 74.715 1.734 c
-h
-75.362 1.793 m
-75.362 1.389 75.439 1.072 75.597 0.837 c
-75.762 0.602 75.984 0.484 76.259 0.484 c
-76.825 0.484 77.119 0.897 77.141 1.72 c
-77.141 2.175 l
-77.141 2.576 77.056 2.896 76.89 3.131 c
-76.732 3.374 76.516 3.498 76.244 3.498 c
-75.98 3.498 75.762 3.374 75.597 3.131 c
-75.439 2.896 75.362 2.576 75.362 2.175 c
-h
-80.271 3.366 m
-80.183 3.384 80.084 3.395 79.978 3.395 c
-79.643 3.395 79.408 3.212 79.272 2.851 c
-79.272 0 l
-78.625 0 l
-78.625 3.983 l
-79.257 3.983 l
-79.272 3.572 l
-79.448 3.895 79.691 4.056 80.007 4.056 c
-80.113 4.056 80.202 4.035 80.271 3.998 c
-h
-82.079 1.087 m
-82.8 3.983 l
-83.491 3.983 l
-82.197 -0.559 l
-82.098 -0.9 81.954 -1.162 81.771 -1.338 c
-81.594 -1.515 81.393 -1.602 81.168 -1.602 c
-81.079 -1.602 80.966 -1.58 80.83 -1.544 c
-80.83 -1 l
-80.977 -1.014 l
-81.16 -1.014 81.308 -0.971 81.418 -0.882 c
-81.524 -0.794 81.613 -0.636 81.683 -0.412 c
-81.8 0.029 l
-80.639 3.983 l
-81.345 3.983 l
-h
-86.548 0 -0.646 3.983 re
-86.592 5.026 m
-86.592 4.916 86.563 4.825 86.504 4.748 c
-86.445 4.677 86.35 4.644 86.224 4.644 c
-86.107 4.644 86.012 4.677 85.945 4.748 c
-85.887 4.825 85.858 4.916 85.858 5.026 c
-85.858 5.144 85.887 5.236 85.945 5.306 c
-86.012 5.383 86.107 5.423 86.224 5.423 c
-86.35 5.423 86.445 5.383 86.504 5.306 c
-86.563 5.225 86.592 5.134 86.592 5.026 c
-88.179 3.983 m
-88.194 3.542 l
-88.448 3.884 88.771 4.056 89.164 4.056 c
-89.87 4.056 90.226 3.586 90.238 2.645 c
-90.238 0 l
-89.59 0 l
-89.59 2.616 l
-89.59 2.929 89.536 3.149 89.43 3.278 c
-89.318 3.403 89.164 3.469 88.959 3.469 c
-88.801 3.469 88.653 3.414 88.518 3.307 c
-88.389 3.197 88.287 3.061 88.209 2.896 c
-88.209 0 l
-87.562 0 l
-87.562 3.983 l
-h
-93.148 1.014 m
-93.148 1.161 93.093 1.282 92.986 1.381 c
-92.876 1.477 92.67 1.595 92.368 1.734 c
-92.023 1.881 91.781 2.003 91.634 2.102 c
-91.487 2.208 91.377 2.326 91.311 2.454 c
-91.24 2.579 91.208 2.738 91.208 2.925 c
-91.208 3.248 91.325 3.516 91.56 3.733 c
-91.795 3.946 92.096 4.056 92.472 4.056 c
-92.854 4.056 93.162 3.943 93.398 3.719 c
-93.633 3.491 93.75 3.204 93.75 2.851 c
-93.104 2.851 l
-93.104 3.027 93.045 3.179 92.927 3.307 c
-92.81 3.432 92.655 3.498 92.472 3.498 c
-92.273 3.498 92.123 3.443 92.017 3.337 c
-91.906 3.237 91.855 3.105 91.855 2.94 c
-91.855 2.811 91.891 2.705 91.972 2.616 c
-92.049 2.535 92.24 2.433 92.545 2.308 c
-93.023 2.12 93.353 1.932 93.53 1.749 c
-93.706 1.573 93.795 1.344 93.795 1.072 c
-93.795 0.72 93.669 0.44 93.428 0.235 c
-93.192 0.029 92.876 -0.073 92.487 -0.073 c
-92.064 -0.073 91.726 0.044 91.472 0.279 c
-91.215 0.521 91.09 0.827 91.09 1.19 c
-91.737 1.19 l
-91.744 0.962 91.814 0.786 91.942 0.661 c
-92.067 0.544 92.252 0.484 92.487 0.484 c
-92.7 0.484 92.861 0.532 92.971 0.632 c
-93.089 0.727 93.148 0.856 93.148 1.014 c
-95.338 0 -0.647 3.983 re
-95.382 5.026 m
-95.382 4.916 95.352 4.825 95.294 4.748 c
-95.235 4.677 95.14 4.644 95.015 4.644 c
-94.897 4.644 94.801 4.677 94.735 4.748 c
-94.677 4.825 94.647 4.916 94.647 5.026 c
-94.647 5.144 94.677 5.236 94.735 5.306 c
-94.801 5.383 94.897 5.423 95.015 5.423 c
-95.14 5.423 95.235 5.383 95.294 5.306 c
-95.352 5.225 95.382 5.134 95.382 5.026 c
-96.22 2.175 m
-96.22 2.782 96.33 3.248 96.558 3.572 c
-96.794 3.895 97.12 4.056 97.542 4.056 c
-97.925 4.056 98.223 3.898 98.44 3.586 c
-98.44 5.644 l
-99.086 5.644 l
-99.086 0 l
-98.498 0 l
-98.454 0.426 l
-98.248 0.091 97.943 -0.073 97.542 -0.073 c
-97.131 -0.073 96.808 0.081 96.573 0.397 c
-96.337 0.72 96.22 1.176 96.22 1.764 c
-h
-96.867 1.793 m
-96.867 1.352 96.929 1.022 97.058 0.808 c
-97.193 0.602 97.414 0.5 97.719 0.5 c
-98.043 0.5 98.282 0.661 98.44 0.985 c
-98.44 2.998 l
-98.271 3.31 98.032 3.469 97.719 3.469 c
-97.414 3.469 97.193 3.366 97.058 3.16 c
-96.929 2.954 96.867 2.631 96.867 2.19 c
-h
-101.511 -0.073 m
-101.012 -0.073 100.63 0.073 100.365 0.367 c
-100.1 0.661 99.969 1.095 99.969 1.675 c
-99.969 2.146 l
-99.969 2.741 100.093 3.208 100.351 3.542 c
-100.615 3.884 100.975 4.056 101.438 4.056 c
-101.897 4.056 102.24 3.902 102.467 3.601 c
-102.702 3.307 102.824 2.844 102.835 2.219 c
-102.835 1.793 l
-100.615 1.793 l
-100.615 1.705 l
-100.615 1.271 100.692 0.959 100.85 0.764 c
-101.016 0.577 101.247 0.484 101.541 0.484 c
-101.736 0.484 101.908 0.518 102.055 0.588 c
-102.203 0.665 102.338 0.783 102.467 0.941 c
-102.805 0.529 l
-102.519 0.125 102.089 -0.073 101.511 -0.073 c
-101.438 3.498 m
-101.162 3.498 100.96 3.403 100.835 3.219 c
-100.707 3.031 100.634 2.741 100.615 2.352 c
-102.188 2.352 l
-102.188 2.439 l
-102.166 2.822 102.099 3.09 101.982 3.248 c
-101.864 3.414 101.681 3.498 101.438 3.498 c
-106.039 0 -0.647 3.983 re
-106.083 5.026 m
-106.083 4.916 106.053 4.825 105.995 4.748 c
-105.936 4.677 105.841 4.644 105.716 4.644 c
-105.598 4.644 105.502 4.677 105.436 4.748 c
-105.378 4.825 105.348 4.916 105.348 5.026 c
-105.348 5.144 105.378 5.236 105.436 5.306 c
-105.502 5.383 105.598 5.423 105.716 5.423 c
-105.841 5.423 105.936 5.383 105.995 5.306 c
-106.053 5.225 106.083 5.134 106.083 5.026 c
-107.906 4.939 m
-107.906 3.983 l
-108.509 3.983 l
-108.509 3.454 l
-107.906 3.454 l
-107.906 0.985 l
-107.906 0.827 107.928 0.709 107.979 0.632 c
-108.038 0.551 108.126 0.515 108.244 0.515 c
-108.332 0.515 108.42 0.529 108.509 0.558 c
-108.509 0 l
-108.361 -0.048 108.207 -0.073 108.052 -0.073 c
-107.796 -0.073 107.601 0.018 107.464 0.205 c
-107.325 0.389 107.259 0.65 107.259 0.985 c
-107.259 3.454 l
-106.656 3.454 l
-106.656 3.983 l
-107.259 3.983 l
-107.259 4.939 l
-h
-109.317 0.353 m
-109.317 0.47 109.35 0.565 109.42 0.646 c
-109.486 0.723 109.589 0.764 109.729 0.764 c
-109.876 0.764 109.982 0.723 110.051 0.646 c
-110.129 0.565 110.169 0.47 110.169 0.353 c
-110.169 0.243 110.129 0.151 110.051 0.073 c
-109.982 -0.004 109.876 -0.044 109.729 -0.044 c
-109.589 -0.044 109.486 -0.004 109.42 0.073 c
-109.35 0.151 109.317 0.243 109.317 0.353 c
-f
-Q
-39.089 246.498 -0.675 5.35 re
-40.471 246.498 m
-40.471 249.953 l
-39.942 249.953 l
-39.942 250.481 l
-40.471 250.481 l
-40.471 250.937 l
-40.471 251.338 40.567 251.65 40.765 251.878 c
-40.97 252.102 41.249 252.216 41.602 252.216 c
-41.739 252.216 41.87 252.194 41.999 252.157 c
-41.97 251.613 l
-41.87 251.632 41.772 251.642 41.676 251.642 c
-41.301 251.642 41.118 251.378 41.118 250.849 c
-41.118 250.481 l
-41.793 250.481 l
-41.793 249.953 l
-41.118 249.953 l
-41.118 246.498 l
-h
-f
-q 1 0 0 1 45.6305 251.9076 cm
-0 0 m
--0.383 0 l
--0.383 -5.835 l
-0 -5.835 l
-0 -6.659 l
--1.426 -6.659 l
--1.426 0.823 l
-0 0.823 l
-h
-3.63 -3.543 m
-3.63 -4.171 3.52 -4.653 3.307 -4.983 c
-3.09 -5.318 2.77 -5.483 2.352 -5.483 c
-2.028 -5.483 1.767 -5.351 1.572 -5.087 c
-1.572 -6.938 l
-0.529 -6.938 l
-0.529 -1.426 l
-1.484 -1.426 l
-1.528 -1.794 l
-1.723 -1.5 1.992 -1.353 2.337 -1.353 c
-2.755 -1.353 3.075 -1.511 3.293 -1.823 c
-3.505 -2.128 3.619 -2.598 3.63 -3.234 c
-h
-2.587 -3.278 m
-2.587 -2.896 2.543 -2.627 2.454 -2.469 c
-2.373 -2.315 2.233 -2.234 2.028 -2.234 c
-1.822 -2.234 1.668 -2.323 1.572 -2.5 c
-1.572 -4.366 l
-1.66 -4.535 1.815 -4.616 2.042 -4.616 c
-2.248 -4.616 2.389 -4.535 2.469 -4.366 c
-2.547 -4.189 2.587 -3.917 2.587 -3.543 c
-h
-6.217 -2.44 m
-5.88 -2.411 l
-5.593 -2.411 5.402 -2.536 5.306 -2.778 c
-5.306 -5.409 l
-4.262 -5.409 l
-4.262 -1.426 l
-5.232 -1.426 l
-5.262 -1.867 l
-5.427 -1.525 5.659 -1.353 5.953 -1.353 c
-6.071 -1.353 6.162 -1.374 6.231 -1.411 c
-h
-6.511 -3.293 m
-6.511 -2.687 6.651 -2.213 6.937 -1.867 c
-7.22 -1.525 7.613 -1.353 8.113 -1.353 c
-8.621 -1.353 9.017 -1.525 9.304 -1.867 c
-9.587 -2.213 9.73 -2.687 9.73 -3.293 c
-9.73 -3.558 l
-9.73 -4.156 9.587 -4.627 9.304 -4.969 c
-9.017 -5.314 8.621 -5.483 8.113 -5.483 c
-7.603 -5.483 7.206 -5.314 6.923 -4.969 c
-6.647 -4.627 6.511 -4.152 6.511 -3.543 c
-h
-7.555 -3.558 m
-7.555 -4.263 7.739 -4.616 8.113 -4.616 c
-8.467 -4.616 8.658 -4.322 8.687 -3.734 c
-8.687 -3.293 l
-8.687 -2.932 8.635 -2.66 8.54 -2.484 c
-8.44 -2.308 8.297 -2.22 8.113 -2.22 c
-7.937 -2.22 7.798 -2.308 7.702 -2.484 c
-7.603 -2.66 7.555 -2.932 7.555 -3.293 c
-h
-11.465 -1.426 m
-11.465 -5.63 l
-11.465 -6.078 11.362 -6.423 11.156 -6.659 c
-10.95 -6.894 10.657 -7.011 10.274 -7.011 c
-10.105 -7.011 9.951 -6.99 9.803 -6.953 c
-9.789 -6.101 l
-9.907 -6.13 9.998 -6.145 10.069 -6.145 c
-10.304 -6.145 10.422 -5.983 10.422 -5.66 c
-10.422 -1.426 l
-h
-10.362 -0.397 m
-10.362 -0.243 10.41 -0.114 10.509 -0.015 c
-10.616 0.091 10.752 0.147 10.921 0.147 c
-11.097 0.147 11.233 0.091 11.332 -0.015 c
-11.439 -0.114 11.494 -0.243 11.494 -0.397 c
-11.494 -0.566 11.439 -0.702 11.332 -0.809 c
-11.233 -0.908 11.097 -0.956 10.921 -0.956 c
-10.744 -0.956 10.605 -0.908 10.509 -0.809 c
-10.41 -0.702 10.362 -0.566 10.362 -0.397 c
-13.832 -5.483 m
-13.302 -5.483 12.883 -5.328 12.581 -5.012 c
-12.288 -4.69 12.141 -4.23 12.141 -3.631 c
-12.141 -3.323 l
-12.141 -2.697 12.277 -2.213 12.552 -1.867 c
-12.824 -1.525 13.217 -1.353 13.728 -1.353 c
-14.228 -1.353 14.599 -1.515 14.846 -1.837 c
-15.099 -2.161 15.232 -2.639 15.243 -3.263 c
-15.243 -3.763 l
-13.17 -3.763 l
-13.188 -4.057 13.25 -4.274 13.361 -4.41 c
-13.479 -4.549 13.659 -4.616 13.905 -4.616 c
-14.247 -4.616 14.537 -4.499 14.772 -4.263 c
-15.184 -4.895 l
-15.055 -5.072 14.867 -5.215 14.625 -5.322 c
-14.379 -5.428 14.114 -5.483 13.832 -5.483 c
-13.184 -3.043 m
-14.214 -3.043 l
-14.214 -2.94 l
-14.214 -2.705 14.173 -2.529 14.096 -2.411 c
-14.026 -2.286 13.898 -2.22 13.714 -2.22 c
-13.537 -2.22 13.406 -2.29 13.317 -2.425 c
-13.236 -2.554 13.192 -2.76 13.184 -3.043 c
-17.271 -4.616 m
-17.565 -4.616 17.716 -4.421 17.726 -4.028 c
-18.696 -4.028 l
-18.696 -4.461 18.565 -4.814 18.3 -5.087 c
-18.035 -5.351 17.697 -5.483 17.285 -5.483 c
-16.775 -5.483 16.382 -5.328 16.109 -5.012 c
-15.845 -4.69 15.706 -4.219 15.698 -3.601 c
-15.698 -3.278 l
-15.698 -2.654 15.831 -2.176 16.095 -1.852 c
-16.367 -1.521 16.764 -1.353 17.285 -1.353 c
-17.716 -1.353 18.057 -1.492 18.314 -1.764 c
-18.568 -2.04 18.696 -2.421 18.696 -2.911 c
-17.726 -2.911 l
-17.726 -2.697 17.686 -2.529 17.609 -2.411 c
-17.539 -2.286 17.422 -2.22 17.256 -2.22 c
-17.08 -2.22 16.951 -2.286 16.874 -2.411 c
-16.793 -2.539 16.749 -2.789 16.741 -3.161 c
-16.741 -3.572 l
-16.741 -3.896 16.756 -4.123 16.786 -4.248 c
-16.822 -4.377 16.878 -4.469 16.947 -4.528 c
-17.025 -4.586 17.131 -4.616 17.271 -4.616 c
-20.504 -0.456 m
-20.504 -1.426 l
-21.034 -1.426 l
-21.034 -2.22 l
-20.504 -2.22 l
-20.504 -4.189 l
-20.504 -4.347 20.523 -4.454 20.564 -4.513 c
-20.612 -4.572 20.696 -4.601 20.813 -4.601 c
-20.92 -4.601 21.005 -4.594 21.063 -4.572 c
-21.063 -5.38 l
-20.887 -5.446 20.696 -5.483 20.49 -5.483 c
-19.814 -5.483 19.469 -5.097 19.461 -4.322 c
-19.461 -2.22 l
-19.006 -2.22 l
-19.006 -1.426 l
-19.461 -1.426 l
-19.461 -0.456 l
-h
-24.297 -1.426 m
-24.327 -1.823 l
-24.562 -1.511 24.863 -1.353 25.238 -1.353 c
-25.921 -1.353 26.274 -1.834 26.296 -2.793 c
-26.296 -5.409 l
-25.252 -5.409 l
-25.252 -2.866 l
-25.252 -2.643 25.216 -2.481 25.15 -2.382 c
-25.08 -2.286 24.963 -2.234 24.797 -2.234 c
-24.61 -2.234 24.462 -2.33 24.356 -2.514 c
-24.356 -5.409 l
-23.312 -5.409 l
-23.312 -1.426 l
-h
-28.928 -5.409 m
-28.898 -5.351 28.868 -5.247 28.839 -5.101 c
-28.652 -5.358 28.402 -5.483 28.09 -5.483 c
-27.755 -5.483 27.476 -5.376 27.251 -5.16 c
-27.035 -4.935 26.928 -4.645 26.928 -4.293 c
-26.928 -3.881 27.06 -3.564 27.325 -3.337 c
-27.59 -3.102 27.972 -2.984 28.471 -2.984 c
-28.795 -2.984 l
-28.795 -2.66 l
-28.795 -2.484 28.758 -2.363 28.693 -2.294 c
-28.633 -2.216 28.545 -2.176 28.427 -2.176 c
-28.17 -2.176 28.045 -2.33 28.045 -2.631 c
-27.002 -2.631 l
-27.002 -2.261 27.138 -1.955 27.413 -1.72 c
-27.685 -1.478 28.034 -1.353 28.457 -1.353 c
-28.898 -1.353 29.236 -1.47 29.471 -1.706 c
-29.713 -1.933 29.838 -2.257 29.838 -2.675 c
-29.838 -4.542 l
-29.838 -4.888 29.886 -5.156 29.985 -5.351 c
-29.985 -5.409 l
-h
-28.325 -4.659 m
-28.431 -4.659 28.523 -4.642 28.604 -4.601 c
-28.693 -4.553 28.755 -4.495 28.795 -4.424 c
-28.795 -3.601 l
-28.545 -3.601 l
-28.369 -3.601 28.225 -3.66 28.119 -3.778 c
-28.02 -3.888 27.972 -4.035 27.972 -4.219 c
-27.972 -4.513 28.09 -4.659 28.325 -4.659 c
-31.558 -1.426 m
-31.588 -1.794 l
-31.823 -1.5 32.132 -1.353 32.514 -1.353 c
-32.915 -1.353 33.194 -1.536 33.352 -1.897 c
-33.587 -1.536 33.914 -1.353 34.337 -1.353 c
-35.031 -1.353 35.384 -1.837 35.394 -2.808 c
-35.394 -5.409 l
-34.366 -5.409 l
-34.366 -2.866 l
-34.366 -2.643 34.329 -2.481 34.263 -2.382 c
-34.204 -2.286 34.094 -2.234 33.94 -2.234 c
-33.742 -2.234 33.601 -2.352 33.513 -2.587 c
-33.513 -5.409 l
-32.47 -5.409 l
-32.47 -2.881 l
-32.47 -2.646 32.44 -2.481 32.381 -2.382 c
-32.323 -2.286 32.213 -2.234 32.059 -2.234 c
-31.882 -2.234 31.739 -2.33 31.631 -2.514 c
-31.631 -5.409 l
-30.588 -5.409 l
-30.588 -1.426 l
-h
-37.776 -5.483 m
-37.247 -5.483 36.828 -5.328 36.527 -5.012 c
-36.233 -4.69 36.086 -4.23 36.086 -3.631 c
-36.086 -3.323 l
-36.086 -2.697 36.221 -2.213 36.497 -1.867 c
-36.769 -1.525 37.162 -1.353 37.673 -1.353 c
-38.173 -1.353 38.544 -1.515 38.79 -1.837 c
-39.044 -2.161 39.176 -2.639 39.187 -3.263 c
-39.187 -3.763 l
-37.115 -3.763 l
-37.133 -4.057 37.196 -4.274 37.306 -4.41 c
-37.424 -4.549 37.603 -4.616 37.85 -4.616 c
-38.191 -4.616 38.482 -4.499 38.717 -4.263 c
-39.128 -4.895 l
-39 -5.072 38.812 -5.215 38.57 -5.322 c
-38.324 -5.428 38.059 -5.483 37.776 -5.483 c
-37.129 -3.043 m
-38.158 -3.043 l
-38.158 -2.94 l
-38.158 -2.705 38.118 -2.529 38.041 -2.411 c
-37.971 -2.286 37.842 -2.22 37.659 -2.22 c
-37.482 -2.22 37.35 -2.29 37.262 -2.425 c
-37.181 -2.554 37.137 -2.76 37.129 -3.043 c
-39.525 0.823 m
-40.951 0.823 l
-40.951 -6.659 l
-39.525 -6.659 l
-39.525 -5.835 l
-39.907 -5.835 l
-39.907 0 l
-39.525 0 l
-h
-f
-Q
-89.919 246.498 -0.647 3.983 re
-89.962 251.525 m
-89.962 251.415 89.933 251.323 89.874 251.246 c
-89.815 251.176 89.72 251.143 89.595 251.143 c
-89.477 251.143 89.381 251.176 89.316 251.246 c
-89.256 251.323 89.227 251.415 89.227 251.525 c
-89.227 251.642 89.256 251.735 89.316 251.804 c
-89.381 251.881 89.477 251.922 89.595 251.922 c
-89.72 251.922 89.815 251.881 89.874 251.804 c
-89.933 251.723 89.962 251.632 89.962 251.525 c
-92.873 247.512 m
-92.873 247.659 92.818 247.781 92.711 247.879 c
-92.601 247.975 92.395 248.093 92.094 248.232 c
-91.748 248.38 91.506 248.501 91.359 248.6 c
-91.212 248.706 91.101 248.824 91.035 248.953 c
-90.966 249.078 90.933 249.236 90.933 249.423 c
-90.933 249.747 91.05 250.015 91.286 250.231 c
-91.521 250.445 91.822 250.555 92.197 250.555 c
-92.579 250.555 92.888 250.441 93.123 250.217 c
-93.358 249.989 93.476 249.703 93.476 249.35 c
-92.828 249.35 l
-92.828 249.526 92.77 249.677 92.652 249.805 c
-92.535 249.93 92.381 249.996 92.197 249.996 c
-91.999 249.996 91.847 249.941 91.741 249.835 c
-91.631 249.735 91.579 249.604 91.579 249.438 c
-91.579 249.309 91.616 249.203 91.697 249.115 c
-91.774 249.034 91.965 248.931 92.27 248.806 c
-92.747 248.619 93.079 248.431 93.255 248.247 c
-93.431 248.071 93.52 247.843 93.52 247.571 c
-93.52 247.218 93.395 246.939 93.152 246.734 c
-92.917 246.528 92.601 246.425 92.211 246.425 c
-91.789 246.425 91.451 246.543 91.197 246.778 c
-90.94 247.02 90.815 247.325 90.815 247.688 c
-91.461 247.688 l
-91.469 247.461 91.539 247.285 91.667 247.16 c
-91.793 247.042 91.976 246.983 92.211 246.983 c
-92.425 246.983 92.587 247.031 92.697 247.131 c
-92.814 247.226 92.873 247.354 92.873 247.512 c
-96.695 250.481 m
-96.709 250.04 l
-96.963 250.383 97.287 250.555 97.68 250.555 c
-98.385 250.555 98.742 250.084 98.752 249.144 c
-98.752 246.498 l
-98.106 246.498 l
-98.106 249.115 l
-98.106 249.427 98.05 249.647 97.944 249.776 c
-97.834 249.901 97.68 249.967 97.474 249.967 c
-97.316 249.967 97.169 249.912 97.033 249.805 c
-96.904 249.695 96.801 249.56 96.724 249.394 c
-96.724 246.498 l
-96.077 246.498 l
-96.077 250.481 l
-h
-99.59 248.673 m
-99.59 249.251 99.726 249.706 100.001 250.04 c
-100.285 250.383 100.656 250.555 101.119 250.555 c
-101.578 250.555 101.946 250.386 102.222 250.055 c
-102.505 249.732 102.652 249.284 102.662 248.718 c
-102.662 248.291 l
-102.662 247.722 102.519 247.266 102.236 246.925 c
-101.96 246.59 101.593 246.425 101.134 246.425 c
-100.67 246.425 100.3 246.586 100.017 246.909 c
-99.741 247.241 99.598 247.682 99.59 248.232 c
-h
-100.237 248.291 m
-100.237 247.887 100.314 247.571 100.472 247.336 c
-100.637 247.1 100.858 246.983 101.134 246.983 c
-101.7 246.983 101.994 247.395 102.016 248.218 c
-102.016 248.673 l
-102.016 249.074 101.931 249.394 101.765 249.629 c
-101.607 249.872 101.391 249.996 101.119 249.996 c
-100.855 249.996 100.637 249.872 100.472 249.629 c
-100.314 249.394 100.237 249.074 100.237 248.673 c
-h
-104.352 251.437 m
-104.352 250.481 l
-104.955 250.481 l
-104.955 249.953 l
-104.352 249.953 l
-104.352 247.483 l
-104.352 247.325 104.375 247.208 104.427 247.131 c
-104.485 247.05 104.573 247.013 104.691 247.013 c
-104.779 247.013 104.867 247.027 104.955 247.056 c
-104.955 246.498 l
-104.809 246.45 104.654 246.425 104.5 246.425 c
-104.242 246.425 104.048 246.516 103.912 246.703 c
-103.772 246.888 103.706 247.148 103.706 247.483 c
-103.706 249.953 l
-103.103 249.953 l
-103.103 250.481 l
-103.706 250.481 l
-103.706 251.437 l
-h
-110.32 248.291 m
-110.32 247.663 110.203 247.193 109.968 246.88 c
-109.74 246.576 109.424 246.425 109.012 246.425 c
-108.608 246.425 108.3 246.576 108.086 246.88 c
-108.086 244.97 l
-107.44 244.97 l
-107.44 250.481 l
-108.028 250.481 l
-108.071 250.04 l
-108.285 250.383 108.593 250.555 108.998 250.555 c
-109.439 250.555 109.765 250.401 109.983 250.1 c
-110.195 249.795 110.309 249.338 110.32 248.733 c
-h
-109.674 248.673 m
-109.674 249.115 109.604 249.438 109.468 249.643 c
-109.328 249.857 109.108 249.967 108.807 249.967 c
-108.491 249.967 108.252 249.813 108.086 249.512 c
-108.086 247.439 l
-108.252 247.134 108.491 246.983 108.807 246.983 c
-109.1 246.983 109.314 247.086 109.453 247.291 c
-109.59 247.505 109.663 247.836 109.674 248.276 c
-h
-112.805 249.864 m
-112.717 249.882 112.618 249.893 112.51 249.893 c
-112.177 249.893 111.941 249.71 111.805 249.35 c
-111.805 246.498 l
-111.159 246.498 l
-111.159 250.481 l
-111.791 250.481 l
-111.805 250.07 l
-111.982 250.393 112.225 250.555 112.54 250.555 c
-112.647 250.555 112.735 250.533 112.805 250.497 c
-h
-113.245 248.673 m
-113.245 249.251 113.382 249.706 113.657 250.04 c
-113.94 250.383 114.311 250.555 114.775 250.555 c
-115.234 250.555 115.601 250.386 115.876 250.055 c
-116.16 249.732 116.306 249.284 116.318 248.718 c
-116.318 248.291 l
-116.318 247.722 116.175 247.266 115.892 246.925 c
-115.616 246.59 115.248 246.425 114.789 246.425 c
-114.326 246.425 113.955 246.586 113.672 246.909 c
-113.397 247.241 113.253 247.682 113.245 248.232 c
-h
-113.892 248.291 m
-113.892 247.887 113.97 247.571 114.128 247.336 c
-114.293 247.1 114.513 246.983 114.789 246.983 c
-115.355 246.983 115.649 247.395 115.671 248.218 c
-115.671 248.673 l
-115.671 249.074 115.587 249.394 115.421 249.629 c
-115.263 249.872 115.047 249.996 114.775 249.996 c
-114.51 249.996 114.293 249.872 114.128 249.629 c
-113.97 249.394 113.892 249.074 113.892 248.673 c
-h
-118.228 247.483 m
-118.978 250.481 l
-119.639 250.481 l
-118.464 246.498 l
-117.979 246.498 l
-116.788 250.481 l
-117.449 250.481 l
-h
-121.021 246.498 -0.646 3.983 re
-121.066 251.525 m
-121.066 251.415 121.036 251.323 120.977 251.246 c
-120.919 251.176 120.823 251.143 120.698 251.143 c
-120.58 251.143 120.485 251.176 120.419 251.246 c
-120.36 251.323 120.331 251.415 120.331 251.525 c
-120.331 251.642 120.36 251.735 120.419 251.804 c
-120.485 251.881 120.58 251.922 120.698 251.922 c
-120.823 251.922 120.919 251.881 120.977 251.804 c
-121.036 251.723 121.066 251.632 121.066 251.525 c
-121.904 248.673 m
-121.904 249.28 122.014 249.747 122.242 250.07 c
-122.477 250.393 122.804 250.555 123.226 250.555 c
-123.608 250.555 123.907 250.397 124.123 250.084 c
-124.123 252.143 l
-124.769 252.143 l
-124.769 246.498 l
-124.182 246.498 l
-124.138 246.925 l
-123.932 246.59 123.627 246.425 123.226 246.425 c
-122.814 246.425 122.492 246.579 122.257 246.895 c
-122.021 247.218 121.904 247.674 121.904 248.262 c
-h
-122.55 248.291 m
-122.55 247.85 122.613 247.52 122.741 247.306 c
-122.877 247.1 123.098 246.998 123.402 246.998 c
-123.726 246.998 123.965 247.16 124.123 247.483 c
-124.123 249.497 l
-123.954 249.809 123.715 249.967 123.402 249.967 c
-123.098 249.967 122.877 249.864 122.741 249.658 c
-122.613 249.452 122.55 249.13 122.55 248.688 c
-h
-127.195 246.425 m
-126.695 246.425 126.313 246.572 126.049 246.865 c
-125.784 247.16 125.652 247.593 125.652 248.174 c
-125.652 248.644 l
-125.652 249.24 125.777 249.706 126.034 250.04 c
-126.299 250.383 126.658 250.555 127.121 250.555 c
-127.581 250.555 127.923 250.401 128.15 250.1 c
-128.385 249.805 128.507 249.342 128.518 248.718 c
-128.518 248.291 l
-126.299 248.291 l
-126.299 248.203 l
-126.299 247.769 126.376 247.457 126.534 247.262 c
-126.699 247.075 126.93 246.983 127.225 246.983 c
-127.419 246.983 127.591 247.017 127.739 247.086 c
-127.886 247.163 128.022 247.281 128.15 247.439 c
-128.489 247.027 l
-128.202 246.623 127.772 246.425 127.195 246.425 c
-127.121 249.996 m
-126.846 249.996 126.644 249.901 126.519 249.718 c
-126.39 249.529 126.317 249.24 126.299 248.85 c
-127.871 248.85 l
-127.871 248.938 l
-127.849 249.321 127.783 249.589 127.666 249.747 c
-127.548 249.912 127.364 249.996 127.121 249.996 c
-129.164 248.673 m
-129.164 249.28 129.275 249.747 129.503 250.07 c
-129.738 250.393 130.065 250.555 130.488 250.555 c
-130.87 250.555 131.167 250.397 131.385 250.084 c
-131.385 252.143 l
-132.031 252.143 l
-132.031 246.498 l
-131.443 246.498 l
-131.399 246.925 l
-131.194 246.59 130.888 246.425 130.488 246.425 c
-130.076 246.425 129.752 246.579 129.517 246.895 c
-129.282 247.218 129.164 247.674 129.164 248.262 c
-h
-129.812 248.291 m
-129.812 247.85 129.874 247.52 130.003 247.306 c
-130.139 247.1 130.359 246.998 130.664 246.998 c
-130.988 246.998 131.227 247.16 131.385 247.483 c
-131.385 249.497 l
-131.215 249.809 130.976 249.967 130.664 249.967 c
-130.359 249.967 130.139 249.864 130.003 249.658 c
-129.874 249.452 129.812 249.13 129.812 248.688 c
-h
-133.045 245.425 m
-132.649 245.689 l
-132.884 246.013 133.005 246.348 133.016 246.689 c
-133.016 247.306 l
-133.677 247.306 l
-133.677 246.778 l
-133.677 246.52 133.611 246.274 133.486 246.028 c
-133.369 245.785 133.222 245.583 133.045 245.425 c
-137.087 251.437 m
-137.087 250.481 l
-137.69 250.481 l
-137.69 249.953 l
-137.087 249.953 l
-137.087 247.483 l
-137.087 247.325 137.11 247.208 137.161 247.131 c
-137.22 247.05 137.308 247.013 137.426 247.013 c
-137.513 247.013 137.602 247.027 137.69 247.056 c
-137.69 246.498 l
-137.544 246.45 137.389 246.425 137.234 246.425 c
-136.977 246.425 136.783 246.516 136.647 246.703 c
-136.507 246.888 136.441 247.148 136.441 247.483 c
-136.441 249.953 l
-135.838 249.953 l
-135.838 250.481 l
-136.441 250.481 l
-136.441 251.437 l
-h
-139.101 250.07 m
-139.354 250.393 139.674 250.555 140.056 250.555 c
-140.762 250.555 141.118 250.084 141.13 249.144 c
-141.13 246.498 l
-140.483 246.498 l
-140.483 249.115 l
-140.483 249.427 140.428 249.647 140.322 249.776 c
-140.212 249.901 140.056 249.967 139.851 249.967 c
-139.693 249.967 139.546 249.912 139.41 249.805 c
-139.281 249.695 139.179 249.56 139.101 249.394 c
-139.101 246.498 l
-138.454 246.498 l
-138.454 252.143 l
-139.101 252.143 l
-h
-143.511 246.425 m
-143.011 246.425 142.629 246.572 142.365 246.865 c
-142.1 247.16 141.968 247.593 141.968 248.174 c
-141.968 248.644 l
-141.968 249.24 142.093 249.706 142.35 250.04 c
-142.614 250.383 142.974 250.555 143.437 250.555 c
-143.897 250.555 144.239 250.401 144.466 250.1 c
-144.702 249.805 144.823 249.342 144.834 248.718 c
-144.834 248.291 l
-142.614 248.291 l
-142.614 248.203 l
-142.614 247.769 142.691 247.457 142.849 247.262 c
-143.015 247.075 143.246 246.983 143.541 246.983 c
-143.736 246.983 143.908 247.017 144.054 247.086 c
-144.202 247.163 144.338 247.281 144.466 247.439 c
-144.804 247.027 l
-144.518 246.623 144.088 246.425 143.511 246.425 c
-143.437 249.996 m
-143.162 249.996 142.959 249.901 142.835 249.718 c
-142.706 249.529 142.633 249.24 142.614 248.85 c
-144.187 248.85 l
-144.187 248.938 l
-144.165 249.321 144.099 249.589 143.981 249.747 c
-143.863 249.912 143.68 249.996 143.437 249.996 c
-146.23 250.481 m
-146.245 250.04 l
-146.498 250.383 146.822 250.555 147.215 250.555 c
-147.921 250.555 148.277 250.084 148.288 249.144 c
-148.288 246.498 l
-147.641 246.498 l
-147.641 249.115 l
-147.641 249.427 147.586 249.647 147.48 249.776 c
-147.37 249.901 147.215 249.967 147.009 249.967 c
-146.851 249.967 146.704 249.912 146.568 249.805 c
-146.44 249.695 146.337 249.56 146.26 249.394 c
-146.26 246.498 l
-145.613 246.498 l
-145.613 250.481 l
-h
-153.022 246.498 m
-152.981 246.586 152.955 246.734 152.948 246.939 c
-152.713 246.593 152.419 246.425 152.066 246.425 c
-151.702 246.425 151.419 246.52 151.213 246.718 c
-151.015 246.925 150.919 247.211 150.919 247.586 c
-150.919 247.987 151.055 248.306 151.331 248.542 c
-151.603 248.783 151.977 248.909 152.448 248.909 c
-152.933 248.909 l
-152.933 249.335 l
-152.933 249.57 152.878 249.735 152.771 249.835 c
-152.661 249.941 152.499 249.996 152.286 249.996 c
-152.088 249.996 151.927 249.938 151.801 249.82 c
-151.684 249.703 151.625 249.556 151.625 249.379 c
-150.978 249.379 l
-150.978 249.574 151.037 249.765 151.154 249.953 c
-151.279 250.136 151.441 250.283 151.64 250.393 c
-151.846 250.5 152.073 250.555 152.33 250.555 c
-152.731 250.555 153.036 250.452 153.242 250.246 c
-153.455 250.04 153.569 249.747 153.58 249.365 c
-153.58 247.351 l
-153.58 247.046 153.617 246.782 153.697 246.557 c
-153.697 246.498 l
-h
-152.154 247.013 m
-152.32 247.013 152.47 247.056 152.61 247.145 c
-152.756 247.233 152.864 247.343 152.933 247.483 c
-152.933 248.424 l
-152.565 248.424 l
-152.249 248.424 152.007 248.354 151.831 248.218 c
-151.655 248.089 151.566 247.902 151.566 247.659 c
-151.566 247.432 151.61 247.266 151.699 247.16 c
-151.786 247.06 151.937 247.013 152.154 247.013 c
-156.916 250.481 m
-156.931 250.04 l
-157.185 250.383 157.508 250.555 157.901 250.555 c
-158.607 250.555 158.963 250.084 158.975 249.144 c
-158.975 246.498 l
-158.327 246.498 l
-158.327 249.115 l
-158.327 249.427 158.273 249.647 158.166 249.776 c
-158.055 249.901 157.901 249.967 157.695 249.967 c
-157.538 249.967 157.39 249.912 157.255 249.805 c
-157.126 249.695 157.023 249.56 156.946 249.394 c
-156.946 246.498 l
-156.299 246.498 l
-156.299 250.481 l
-h
-161.371 246.425 m
-160.871 246.425 160.488 246.572 160.224 246.865 c
-159.96 247.16 159.827 247.593 159.827 248.174 c
-159.827 248.644 l
-159.827 249.24 159.952 249.706 160.209 250.04 c
-160.474 250.383 160.833 250.555 161.297 250.555 c
-161.756 250.555 162.098 250.401 162.325 250.1 c
-162.561 249.805 162.682 249.342 162.693 248.718 c
-162.693 248.291 l
-160.474 248.291 l
-160.474 248.203 l
-160.474 247.769 160.551 247.457 160.709 247.262 c
-160.874 247.075 161.106 246.983 161.4 246.983 c
-161.595 246.983 161.768 247.017 161.914 247.086 c
-162.061 247.163 162.198 247.281 162.325 247.439 c
-162.664 247.027 l
-162.377 246.623 161.947 246.425 161.371 246.425 c
-161.297 249.996 m
-161.022 249.996 160.819 249.901 160.694 249.718 c
-160.565 249.529 160.492 249.24 160.474 248.85 c
-162.047 248.85 l
-162.047 248.938 l
-162.024 249.321 161.959 249.589 161.841 249.747 c
-161.723 249.912 161.539 249.996 161.297 249.996 c
-166.441 247.644 m
-167.044 250.481 l
-167.691 250.481 l
-166.706 246.498 l
-166.192 246.498 l
-165.413 249.35 l
-164.663 246.498 l
-164.134 246.498 l
-163.179 250.481 l
-163.81 250.481 l
-164.428 247.719 l
-165.163 250.481 l
-165.677 250.481 l
-h
-171.733 249.864 m
-171.645 249.882 171.546 249.893 171.439 249.893 c
-171.104 249.893 170.869 249.71 170.734 249.35 c
-170.734 246.498 l
-170.087 246.498 l
-170.087 250.481 l
-170.719 250.481 l
-170.734 250.07 l
-170.91 250.393 171.152 250.555 171.469 250.555 c
-171.575 250.555 171.663 250.533 171.733 250.497 c
-h
-173.732 246.425 m
-173.232 246.425 172.85 246.572 172.586 246.865 c
-172.321 247.16 172.189 247.593 172.189 248.174 c
-172.189 248.644 l
-172.189 249.24 172.314 249.706 172.571 250.04 c
-172.835 250.383 173.196 250.555 173.659 250.555 c
-174.119 250.555 174.46 250.401 174.688 250.1 c
-174.923 249.805 175.044 249.342 175.056 248.718 c
-175.056 248.291 l
-172.835 248.291 l
-172.835 248.203 l
-172.835 247.769 172.913 247.457 173.071 247.262 c
-173.236 247.075 173.468 246.983 173.762 246.983 c
-173.957 246.983 174.129 247.017 174.277 247.086 c
-174.423 247.163 174.559 247.281 174.688 247.439 c
-175.025 247.027 l
-174.739 246.623 174.31 246.425 173.732 246.425 c
-173.659 249.996 m
-173.383 249.996 173.181 249.901 173.056 249.718 c
-172.928 249.529 172.854 249.24 172.835 248.85 c
-174.408 248.85 l
-174.408 248.938 l
-174.387 249.321 174.32 249.589 174.202 249.747 c
-174.085 249.912 173.901 249.996 173.659 249.996 c
-178.715 248.291 m
-178.715 247.663 178.597 247.193 178.362 246.88 c
-178.135 246.576 177.819 246.425 177.407 246.425 c
-177.003 246.425 176.694 246.576 176.481 246.88 c
-176.481 244.97 l
-175.834 244.97 l
-175.834 250.481 l
-176.422 250.481 l
-176.467 250.04 l
-176.679 250.383 176.988 250.555 177.392 250.555 c
-177.834 250.555 178.16 250.401 178.377 250.1 c
-178.59 249.795 178.705 249.338 178.715 248.733 c
-h
-178.069 248.673 m
-178.069 249.115 177.999 249.438 177.863 249.643 c
-177.723 249.857 177.502 249.967 177.201 249.967 c
-176.885 249.967 176.646 249.813 176.481 249.512 c
-176.481 247.439 l
-176.646 247.134 176.885 246.983 177.201 246.983 c
-177.495 246.983 177.708 247.086 177.848 247.291 c
-177.984 247.505 178.057 247.836 178.069 248.276 c
-h
-179.421 248.673 m
-179.421 249.251 179.557 249.706 179.833 250.04 c
-180.116 250.383 180.486 250.555 180.949 250.555 c
-181.409 250.555 181.776 250.386 182.052 250.055 c
-182.335 249.732 182.482 249.284 182.493 248.718 c
-182.493 248.291 l
-182.493 247.722 182.35 247.266 182.067 246.925 c
-181.791 246.59 181.423 246.425 180.964 246.425 c
-180.501 246.425 180.13 246.586 179.847 246.909 c
-179.571 247.241 179.428 247.682 179.421 248.232 c
-h
-180.068 248.291 m
-180.068 247.887 180.145 247.571 180.303 247.336 c
-180.469 247.1 180.689 246.983 180.964 246.983 c
-181.53 246.983 181.824 247.395 181.846 248.218 c
-181.846 248.673 l
-181.846 249.074 181.762 249.394 181.597 249.629 c
-181.438 249.872 181.221 249.996 180.949 249.996 c
-180.685 249.996 180.469 249.872 180.303 249.629 c
-180.145 249.394 180.068 249.074 180.068 248.673 c
-h
-185.271 247.512 m
-185.271 247.659 185.216 247.781 185.109 247.879 c
-184.999 247.975 184.793 248.093 184.492 248.232 c
-184.147 248.38 183.904 248.501 183.757 248.6 c
-183.61 248.706 183.5 248.824 183.434 248.953 c
-183.364 249.078 183.33 249.236 183.33 249.423 c
-183.33 249.747 183.449 250.015 183.684 250.231 c
-183.919 250.445 184.22 250.555 184.595 250.555 c
-184.977 250.555 185.286 250.441 185.521 250.217 c
-185.756 249.989 185.874 249.703 185.874 249.35 c
-185.227 249.35 l
-185.227 249.526 185.169 249.677 185.051 249.805 c
-184.933 249.93 184.779 249.996 184.595 249.996 c
-184.396 249.996 184.246 249.941 184.139 249.835 c
-184.029 249.735 183.978 249.604 183.978 249.438 c
-183.978 249.309 184.014 249.203 184.095 249.115 c
-184.172 249.034 184.363 248.931 184.668 248.806 c
-185.146 248.619 185.477 248.431 185.653 248.247 c
-185.83 248.071 185.917 247.843 185.917 247.571 c
-185.917 247.218 185.793 246.939 185.55 246.734 c
-185.315 246.528 184.999 246.425 184.61 246.425 c
-184.187 246.425 183.849 246.543 183.596 246.778 c
-183.338 247.02 183.214 247.325 183.214 247.688 c
-183.86 247.688 l
-183.867 247.461 183.937 247.285 184.066 247.16 c
-184.191 247.042 184.375 246.983 184.61 246.983 c
-184.822 246.983 184.984 247.031 185.095 247.131 c
-185.212 247.226 185.271 247.354 185.271 247.512 c
-187.461 246.498 -0.646 3.983 re
-187.505 251.525 m
-187.505 251.415 187.476 251.323 187.417 251.246 c
-187.359 251.176 187.263 251.143 187.137 251.143 c
-187.02 251.143 186.925 251.176 186.858 251.246 c
-186.8 251.323 186.771 251.415 186.771 251.525 c
-186.771 251.642 186.8 251.735 186.858 251.804 c
-186.925 251.881 187.02 251.922 187.137 251.922 c
-187.263 251.922 187.359 251.881 187.417 251.804 c
-187.476 251.723 187.505 251.632 187.505 251.525 c
-189.328 251.437 m
-189.328 250.481 l
-189.931 250.481 l
-189.931 249.953 l
-189.328 249.953 l
-189.328 247.483 l
-189.328 247.325 189.35 247.208 189.402 247.131 c
-189.46 247.05 189.549 247.013 189.666 247.013 c
-189.755 247.013 189.842 247.027 189.931 247.056 c
-189.931 246.498 l
-189.784 246.45 189.629 246.425 189.475 246.425 c
-189.217 246.425 189.023 246.516 188.887 246.703 c
-188.747 246.888 188.681 247.148 188.681 247.483 c
-188.681 249.953 l
-188.078 249.953 l
-188.078 250.481 l
-188.681 250.481 l
-188.681 251.437 l
-h
-190.489 248.673 m
-190.489 249.251 190.625 249.706 190.9 250.04 c
-191.184 250.383 191.555 250.555 192.018 250.555 c
-192.477 250.555 192.845 250.386 193.121 250.055 c
-193.404 249.732 193.55 249.284 193.562 248.718 c
-193.562 248.291 l
-193.562 247.722 193.418 247.266 193.135 246.925 c
-192.859 246.59 192.492 246.425 192.032 246.425 c
-191.569 246.425 191.199 246.586 190.915 246.909 c
-190.64 247.241 190.497 247.682 190.489 248.232 c
-h
-191.136 248.291 m
-191.136 247.887 191.213 247.571 191.371 247.336 c
-191.536 247.1 191.757 246.983 192.032 246.983 c
-192.598 246.983 192.893 247.395 192.915 248.218 c
-192.915 248.673 l
-192.915 249.074 192.83 249.394 192.664 249.629 c
-192.506 249.872 192.29 249.996 192.018 249.996 c
-191.754 249.996 191.536 249.872 191.371 249.629 c
-191.213 249.394 191.136 249.074 191.136 248.673 c
-h
-196.045 249.864 m
-195.957 249.882 195.858 249.893 195.752 249.893 c
-195.417 249.893 195.182 249.71 195.046 249.35 c
-195.046 246.498 l
-194.399 246.498 l
-194.399 250.481 l
-195.031 250.481 l
-195.046 250.07 l
-195.222 250.393 195.465 250.555 195.781 250.555 c
-195.887 250.555 195.976 250.533 196.045 250.497 c
-h
-197.853 247.586 m
-198.574 250.481 l
-199.265 250.481 l
-197.971 245.94 l
-197.872 245.598 197.728 245.337 197.545 245.161 c
-197.368 244.984 197.167 244.896 196.942 244.896 c
-196.854 244.896 196.74 244.918 196.604 244.955 c
-196.604 245.498 l
-196.751 245.484 l
-196.934 245.484 197.082 245.528 197.192 245.616 c
-197.298 245.704 197.387 245.862 197.456 246.086 c
-197.574 246.528 l
-196.413 250.481 l
-197.119 250.481 l
-h
-202.322 246.498 -0.647 3.983 re
-202.366 251.525 m
-202.366 251.415 202.337 251.323 202.278 251.246 c
-202.219 251.176 202.123 251.143 201.998 251.143 c
-201.881 251.143 201.786 251.176 201.719 251.246 c
-201.661 251.323 201.631 251.415 201.631 251.525 c
-201.631 251.642 201.661 251.735 201.719 251.804 c
-201.786 251.881 201.881 251.922 201.998 251.922 c
-202.123 251.922 202.219 251.881 202.278 251.804 c
-202.337 251.723 202.366 251.632 202.366 251.525 c
-205.277 247.512 m
-205.277 247.659 205.221 247.781 205.115 247.879 c
-205.005 247.975 204.799 248.093 204.497 248.232 c
-204.152 248.38 203.91 248.501 203.762 248.6 c
-203.615 248.706 203.505 248.824 203.44 248.953 c
-203.369 249.078 203.336 249.236 203.336 249.423 c
-203.336 249.747 203.454 250.015 203.689 250.231 c
-203.924 250.445 204.225 250.555 204.6 250.555 c
-204.982 250.555 205.291 250.441 205.526 250.217 c
-205.761 249.989 205.879 249.703 205.879 249.35 c
-205.233 249.35 l
-205.233 249.526 205.173 249.677 205.056 249.805 c
-204.938 249.93 204.784 249.996 204.6 249.996 c
-204.402 249.996 204.251 249.941 204.145 249.835 c
-204.034 249.735 203.983 249.604 203.983 249.438 c
-203.983 249.309 204.02 249.203 204.101 249.115 c
-204.178 249.034 204.369 248.931 204.674 248.806 c
-205.152 248.619 205.482 248.431 205.659 248.247 c
-205.835 248.071 205.923 247.843 205.923 247.571 c
-205.923 247.218 205.798 246.939 205.556 246.734 c
-205.321 246.528 205.005 246.425 204.615 246.425 c
-204.192 246.425 203.854 246.543 203.6 246.778 c
-203.344 247.02 203.218 247.325 203.218 247.688 c
-203.866 247.688 l
-203.872 247.461 203.943 247.285 204.071 247.16 c
-204.196 247.042 204.38 246.983 204.615 246.983 c
-204.828 246.983 204.99 247.031 205.1 247.131 c
-205.218 247.226 205.277 247.354 205.277 247.512 c
-209.187 246.498 -0.647 3.983 re
-209.231 251.525 m
-209.231 251.415 209.201 251.323 209.142 251.246 c
-209.084 251.176 208.988 251.143 208.863 251.143 c
-208.745 251.143 208.65 251.176 208.584 251.246 c
-208.525 251.323 208.495 251.415 208.495 251.525 c
-208.495 251.642 208.525 251.735 208.584 251.804 c
-208.65 251.881 208.745 251.922 208.863 251.922 c
-208.988 251.922 209.084 251.881 209.142 251.804 c
-209.201 251.723 209.231 251.632 209.231 251.525 c
-210.818 250.481 m
-210.833 250.04 l
-211.086 250.383 211.409 250.555 211.803 250.555 c
-212.508 250.555 212.865 250.084 212.876 249.144 c
-212.876 246.498 l
-212.229 246.498 l
-212.229 249.115 l
-212.229 249.427 212.174 249.647 212.067 249.776 c
-211.957 249.901 211.803 249.967 211.597 249.967 c
-211.439 249.967 211.292 249.912 211.156 249.805 c
-211.028 249.695 210.925 249.56 210.847 249.394 c
-210.847 246.498 l
-210.201 246.498 l
-210.201 250.481 l
-h
-214.552 246.498 -0.647 3.983 re
-214.596 251.525 m
-214.596 251.415 214.567 251.323 214.507 251.246 c
-214.449 251.176 214.353 251.143 214.228 251.143 c
-214.11 251.143 214.015 251.176 213.949 251.246 c
-213.89 251.323 213.861 251.415 213.861 251.525 c
-213.861 251.642 213.89 251.735 213.949 251.804 c
-214.015 251.881 214.11 251.922 214.228 251.922 c
-214.353 251.922 214.449 251.881 214.507 251.804 c
-214.567 251.723 214.596 251.632 214.596 251.525 c
-216.418 251.437 m
-216.418 250.481 l
-217.021 250.481 l
-217.021 249.953 l
-216.418 249.953 l
-216.418 247.483 l
-216.418 247.325 216.441 247.208 216.491 247.131 c
-216.551 247.05 216.639 247.013 216.757 247.013 c
-216.845 247.013 216.933 247.027 217.021 247.056 c
-217.021 246.498 l
-216.874 246.45 216.72 246.425 216.566 246.425 c
-216.308 246.425 216.113 246.516 215.978 246.703 c
-215.838 246.888 215.772 247.148 215.772 247.483 c
-215.772 249.953 l
-215.169 249.953 l
-215.169 250.481 l
-215.772 250.481 l
-215.772 251.437 l
-h
-218.491 246.498 -0.647 3.983 re
-218.535 251.525 m
-218.535 251.415 218.505 251.323 218.447 251.246 c
-218.388 251.176 218.293 251.143 218.168 251.143 c
-218.05 251.143 217.954 251.176 217.888 251.246 c
-217.829 251.323 217.8 251.415 217.8 251.525 c
-217.8 251.642 217.829 251.735 217.888 251.804 c
-217.954 251.881 218.05 251.922 218.168 251.922 c
-218.293 251.922 218.388 251.881 218.447 251.804 c
-218.505 251.723 218.535 251.632 218.535 251.525 c
-221.549 246.498 m
-221.508 246.586 221.482 246.734 221.474 246.939 c
-221.239 246.593 220.946 246.425 220.593 246.425 c
-220.229 246.425 219.946 246.52 219.741 246.718 c
-219.542 246.925 219.446 247.211 219.446 247.586 c
-219.446 247.987 219.583 248.306 219.858 248.542 c
-220.13 248.783 220.505 248.909 220.975 248.909 c
-221.46 248.909 l
-221.46 249.335 l
-221.46 249.57 221.405 249.735 221.299 249.835 c
-221.188 249.941 221.027 249.996 220.813 249.996 c
-220.615 249.996 220.453 249.938 220.329 249.82 c
-220.211 249.703 220.152 249.556 220.152 249.379 c
-219.505 249.379 l
-219.505 249.574 219.564 249.765 219.681 249.953 c
-219.807 250.136 219.968 250.283 220.167 250.393 c
-220.373 250.5 220.6 250.555 220.857 250.555 c
-221.258 250.555 221.563 250.452 221.769 250.246 c
-221.982 250.04 222.096 249.747 222.107 249.365 c
-222.107 247.351 l
-222.107 247.046 222.143 246.782 222.224 246.557 c
-222.224 246.498 l
-h
-220.681 247.013 m
-220.846 247.013 220.997 247.056 221.137 247.145 c
-221.283 247.233 221.391 247.343 221.46 247.483 c
-221.46 248.424 l
-221.093 248.424 l
-220.776 248.424 220.534 248.354 220.358 248.218 c
-220.181 248.089 220.093 247.902 220.093 247.659 c
-220.093 247.432 220.138 247.266 220.225 247.16 c
-220.314 247.06 220.464 247.013 220.681 247.013 c
-223.812 246.498 -0.647 5.644 re
-225.532 246.498 -0.647 3.983 re
-225.576 251.525 m
-225.576 251.415 225.547 251.323 225.488 251.246 c
-225.428 251.176 225.333 251.143 225.208 251.143 c
-225.091 251.143 224.996 251.176 224.929 251.246 c
-224.871 251.323 224.841 251.415 224.841 251.525 c
-224.841 251.642 224.871 251.735 224.929 251.804 c
-224.996 251.881 225.091 251.922 225.208 251.922 c
-225.333 251.922 225.428 251.881 225.488 251.804 c
-225.547 251.723 225.576 251.632 225.576 251.525 c
-227.149 247.056 m
-229.075 247.056 l
-229.075 246.498 l
-226.413 246.498 l
-226.413 246.998 l
-228.236 249.909 l
-226.428 249.909 l
-226.428 250.481 l
-229 250.481 l
-229 249.996 l
-h
-231.221 246.425 m
-230.721 246.425 230.338 246.572 230.074 246.865 c
-229.809 247.16 229.677 247.593 229.677 248.174 c
-229.677 248.644 l
-229.677 249.24 229.802 249.706 230.059 250.04 c
-230.324 250.383 230.683 250.555 231.147 250.555 c
-231.606 250.555 231.948 250.401 232.175 250.1 c
-232.411 249.805 232.532 249.342 232.543 248.718 c
-232.543 248.291 l
-230.324 248.291 l
-230.324 248.203 l
-230.324 247.769 230.401 247.457 230.559 247.262 c
-230.724 247.075 230.956 246.983 231.25 246.983 c
-231.444 246.983 231.618 247.017 231.764 247.086 c
-231.911 247.163 232.047 247.281 232.175 247.439 c
-232.514 247.027 l
-232.227 246.623 231.797 246.425 231.221 246.425 c
-231.147 249.996 m
-230.872 249.996 230.669 249.901 230.544 249.718 c
-230.415 249.529 230.342 249.24 230.324 248.85 c
-231.897 248.85 l
-231.897 248.938 l
-231.874 249.321 231.808 249.589 231.691 249.747 c
-231.573 249.912 231.389 249.996 231.147 249.996 c
-233.189 248.673 m
-233.189 249.28 233.3 249.747 233.528 250.07 c
-233.763 250.393 234.091 250.555 234.513 250.555 c
-234.895 250.555 235.192 250.397 235.41 250.084 c
-235.41 252.143 l
-236.056 252.143 l
-236.056 246.498 l
-235.468 246.498 l
-235.425 246.925 l
-235.219 246.59 234.914 246.425 234.513 246.425 c
-234.101 246.425 233.778 246.579 233.543 246.895 c
-233.308 247.218 233.189 247.674 233.189 248.262 c
-h
-233.837 248.291 m
-233.837 247.85 233.899 247.52 234.028 247.306 c
-234.164 247.1 234.384 246.998 234.689 246.998 c
-235.013 246.998 235.252 247.16 235.41 247.483 c
-235.41 249.497 l
-235.24 249.809 235.001 249.967 234.689 249.967 c
-234.384 249.967 234.164 249.864 234.028 249.658 c
-233.899 249.452 233.837 249.13 233.837 248.688 c
-h
-239.481 246.498 -0.647 3.983 re
-239.525 251.525 m
-239.525 251.415 239.496 251.323 239.437 251.246 c
-239.379 251.176 239.283 251.143 239.158 251.143 c
-239.04 251.143 238.945 251.176 238.878 251.246 c
-238.82 251.323 238.791 251.415 238.791 251.525 c
-238.791 251.642 238.82 251.735 238.878 251.804 c
-238.945 251.881 239.04 251.922 239.158 251.922 c
-239.283 251.922 239.379 251.881 239.437 251.804 c
-239.496 251.723 239.525 251.632 239.525 251.525 c
-241.112 250.481 m
-241.127 250.04 l
-241.381 250.383 241.704 250.555 242.097 250.555 c
-242.803 250.555 243.159 250.084 243.171 249.144 c
-243.171 246.498 l
-242.523 246.498 l
-242.523 249.115 l
-242.523 249.427 242.469 249.647 242.362 249.776 c
-242.252 249.901 242.097 249.967 241.891 249.967 c
-241.734 249.967 241.587 249.912 241.451 249.805 c
-241.322 249.695 241.22 249.56 241.143 249.394 c
-241.143 246.498 l
-240.495 246.498 l
-240.495 250.481 l
-h
-247.242 246.983 m
-247.456 246.983 247.628 247.046 247.757 247.174 c
-247.892 247.31 247.967 247.501 247.977 247.748 c
-248.595 247.748 l
-248.572 247.366 248.437 247.046 248.183 246.792 c
-247.926 246.546 247.614 246.425 247.242 246.425 c
-246.75 246.425 246.375 246.576 246.111 246.88 c
-245.853 247.193 245.729 247.659 245.729 248.276 c
-245.729 248.718 l
-245.729 249.313 245.853 249.768 246.111 250.084 c
-246.375 250.397 246.75 250.555 247.242 250.555 c
-247.643 250.555 247.963 250.423 248.198 250.158 c
-248.44 249.901 248.572 249.556 248.595 249.115 c
-247.977 249.115 l
-247.955 249.408 247.882 249.629 247.757 249.776 c
-247.639 249.923 247.466 249.996 247.242 249.996 c
-246.949 249.996 246.731 249.897 246.595 249.703 c
-246.456 249.515 246.382 249.207 246.375 248.777 c
-246.375 248.262 l
-246.375 247.792 246.441 247.457 246.581 247.262 c
-246.728 247.075 246.949 246.983 247.242 246.983 c
-251.373 246.851 m
-251.156 246.564 250.843 246.425 250.432 246.425 c
-250.068 246.425 249.793 246.546 249.609 246.792 c
-249.432 247.046 249.337 247.409 249.33 247.879 c
-249.33 250.481 l
-249.976 250.481 l
-249.976 247.939 l
-249.976 247.31 250.16 246.998 250.535 246.998 c
-250.936 246.998 251.211 247.174 251.358 247.527 c
-251.358 250.481 l
-252.004 250.481 l
-252.004 246.498 l
-251.387 246.498 l
-h
-254.636 249.864 m
-254.548 249.882 254.448 249.893 254.342 249.893 c
-254.007 249.893 253.772 249.71 253.636 249.35 c
-253.636 246.498 l
-252.989 246.498 l
-252.989 250.481 l
-253.621 250.481 l
-253.636 250.07 l
-253.812 250.393 254.055 250.555 254.371 250.555 c
-254.477 250.555 254.566 250.533 254.636 250.497 c
-h
-256.929 249.864 m
-256.841 249.882 256.742 249.893 256.635 249.893 c
-256.301 249.893 256.065 249.71 255.929 249.35 c
-255.929 246.498 l
-255.283 246.498 l
-255.283 250.481 l
-255.915 250.481 l
-255.929 250.07 l
-256.106 250.393 256.349 250.555 256.665 250.555 c
-256.771 250.555 256.859 250.533 256.929 250.497 c
-h
-258.928 246.425 m
-258.429 246.425 258.046 246.572 257.781 246.865 c
-257.517 247.16 257.384 247.593 257.384 248.174 c
-257.384 248.644 l
-257.384 249.24 257.509 249.706 257.767 250.04 c
-258.032 250.383 258.392 250.555 258.855 250.555 c
-259.314 250.555 259.655 250.401 259.884 250.1 c
-260.119 249.805 260.24 249.342 260.251 248.718 c
-260.251 248.291 l
-258.032 248.291 l
-258.032 248.203 l
-258.032 247.769 258.109 247.457 258.267 247.262 c
-258.432 247.075 258.664 246.983 258.957 246.983 c
-259.152 246.983 259.325 247.017 259.472 247.086 c
-259.619 247.163 259.755 247.281 259.884 247.439 c
-260.222 247.027 l
-259.935 246.623 259.505 246.425 258.928 246.425 c
-258.855 249.996 m
-258.579 249.996 258.377 249.901 258.252 249.718 c
-258.123 249.529 258.049 249.24 258.032 248.85 c
-259.604 248.85 l
-259.604 248.938 l
-259.582 249.321 259.516 249.589 259.398 249.747 c
-259.281 249.912 259.097 249.996 258.855 249.996 c
-261.647 250.481 m
-261.662 250.04 l
-261.916 250.383 262.239 250.555 262.632 250.555 c
-263.337 250.555 263.694 250.084 263.705 249.144 c
-263.705 246.498 l
-263.058 246.498 l
-263.058 249.115 l
-263.058 249.427 263.003 249.647 262.897 249.776 c
-262.786 249.901 262.632 249.967 262.427 249.967 c
-262.269 249.967 262.121 249.912 261.986 249.805 c
-261.857 249.695 261.754 249.56 261.677 249.394 c
-261.677 246.498 l
-261.03 246.498 l
-261.03 250.481 l
-h
-265.528 251.437 m
-265.528 250.481 l
-266.13 250.481 l
-266.13 249.953 l
-265.528 249.953 l
-265.528 247.483 l
-265.528 247.325 265.55 247.208 265.602 247.131 c
-265.66 247.05 265.748 247.013 265.866 247.013 c
-265.954 247.013 266.042 247.027 266.13 247.056 c
-266.13 246.498 l
-265.984 246.45 265.829 246.425 265.675 246.425 c
-265.417 246.425 265.223 246.516 265.087 246.703 c
-264.947 246.888 264.881 247.148 264.881 247.483 c
-264.881 249.953 l
-264.278 249.953 l
-264.278 250.481 l
-264.881 250.481 l
-264.881 251.437 l
-h
-f
-q 1 0 0 1 239.0691 239.266 cm
-0 0 m
-0 0.607 0.111 1.073 0.339 1.397 c
-0.574 1.72 0.901 1.881 1.324 1.881 c
-1.706 1.881 2.003 1.723 2.22 1.411 c
-2.22 3.469 l
-2.866 3.469 l
-2.866 -2.175 l
-2.278 -2.175 l
-2.235 -1.749 l
-2.029 -2.084 1.724 -2.248 1.324 -2.248 c
-0.912 -2.248 0.589 -2.094 0.354 -1.778 c
-0.119 -1.455 0 -0.999 0 -0.411 c
-h
-0.647 -0.382 m
-0.647 -0.823 0.709 -1.153 0.838 -1.367 c
-0.975 -1.573 1.195 -1.675 1.5 -1.675 c
-1.823 -1.675 2.062 -1.514 2.22 -1.19 c
-2.22 0.823 l
-2.051 1.135 1.812 1.294 1.5 1.294 c
-1.195 1.294 0.975 1.191 0.838 0.985 c
-0.709 0.779 0.647 0.456 0.647 0.015 c
-h
-4.572 -2.175 -0.647 3.983 re
-4.616 2.851 m
-4.616 2.741 4.587 2.65 4.528 2.573 c
-4.469 2.502 4.374 2.469 4.248 2.469 c
-4.131 2.469 4.036 2.502 3.969 2.573 c
-3.911 2.65 3.882 2.741 3.882 2.851 c
-3.882 2.969 3.911 3.061 3.969 3.131 c
-4.036 3.208 4.131 3.248 4.248 3.248 c
-4.374 3.248 4.469 3.208 4.528 3.131 c
-4.587 3.05 4.616 2.959 4.616 2.851 c
-7.232 1.191 m
-7.144 1.209 7.045 1.22 6.939 1.22 c
-6.604 1.22 6.369 1.037 6.233 0.676 c
-6.233 -2.175 l
-5.586 -2.175 l
-5.586 1.808 l
-6.218 1.808 l
-6.233 1.397 l
-6.409 1.72 6.652 1.881 6.968 1.881 c
-7.074 1.881 7.163 1.86 7.232 1.823 c
-h
-9.231 -2.248 m
-8.732 -2.248 8.35 -2.102 8.085 -1.808 c
-7.82 -1.514 7.688 -1.08 7.688 -0.5 c
-7.688 -0.029 l
-7.688 0.566 7.813 1.033 8.071 1.367 c
-8.335 1.709 8.695 1.881 9.158 1.881 c
-9.617 1.881 9.959 1.727 10.187 1.426 c
-10.422 1.132 10.544 0.669 10.554 0.044 c
-10.554 -0.382 l
-8.335 -0.382 l
-8.335 -0.47 l
-8.335 -0.904 8.412 -1.216 8.57 -1.411 c
-8.736 -1.598 8.967 -1.691 9.261 -1.691 c
-9.455 -1.691 9.628 -1.657 9.775 -1.587 c
-9.922 -1.51 10.058 -1.392 10.187 -1.234 c
-10.525 -1.646 l
-10.238 -2.05 9.808 -2.248 9.231 -2.248 c
-9.158 1.323 m
-8.882 1.323 8.68 1.228 8.555 1.044 c
-8.427 0.856 8.353 0.566 8.335 0.177 c
-9.908 0.177 l
-9.908 0.264 l
-9.885 0.647 9.819 0.915 9.702 1.073 c
-9.584 1.239 9.401 1.323 9.158 1.323 c
-12.715 -1.691 m
-12.929 -1.691 13.101 -1.627 13.23 -1.5 c
-13.366 -1.363 13.439 -1.172 13.45 -0.926 c
-14.068 -0.926 l
-14.045 -1.308 13.91 -1.627 13.656 -1.881 c
-13.399 -2.127 13.087 -2.248 12.715 -2.248 c
-12.223 -2.248 11.848 -2.098 11.583 -1.793 c
-11.327 -1.481 11.201 -1.014 11.201 -0.397 c
-11.201 0.044 l
-11.201 0.64 11.327 1.095 11.583 1.411 c
-11.848 1.723 12.223 1.881 12.715 1.881 c
-13.116 1.881 13.436 1.75 13.671 1.484 c
-13.914 1.228 14.045 0.882 14.068 0.441 c
-13.45 0.441 l
-13.428 0.735 13.355 0.956 13.23 1.103 c
-13.112 1.249 12.939 1.323 12.715 1.323 c
-12.422 1.323 12.204 1.224 12.069 1.029 c
-11.929 0.842 11.855 0.533 11.848 0.103 c
-11.848 -0.411 l
-11.848 -0.881 11.914 -1.216 12.054 -1.411 c
-12.2 -1.598 12.422 -1.691 12.715 -1.691 c
-15.67 2.764 m
-15.67 1.808 l
-16.272 1.808 l
-16.272 1.279 l
-15.67 1.279 l
-15.67 -1.19 l
-15.67 -1.348 15.692 -1.466 15.743 -1.543 c
-15.802 -1.624 15.89 -1.66 16.008 -1.66 c
-16.096 -1.66 16.184 -1.646 16.272 -1.617 c
-16.272 -2.175 l
-16.125 -2.223 15.971 -2.248 15.817 -2.248 c
-15.56 -2.248 15.365 -2.157 15.229 -1.97 c
-15.089 -1.786 15.023 -1.525 15.023 -1.19 c
-15.023 1.279 l
-14.421 1.279 l
-14.421 1.808 l
-15.023 1.808 l
-15.023 2.764 l
-h
-16.831 0 m
-16.831 0.578 16.967 1.033 17.243 1.367 c
-17.525 1.709 17.897 1.881 18.359 1.881 c
-18.819 1.881 19.186 1.713 19.462 1.382 c
-19.745 1.058 19.892 0.611 19.903 0.044 c
-19.903 -0.382 l
-19.903 -0.951 19.759 -1.407 19.477 -1.749 c
-19.201 -2.084 18.834 -2.248 18.375 -2.248 c
-17.912 -2.248 17.54 -2.087 17.257 -1.764 c
-16.981 -1.433 16.838 -0.992 16.831 -0.441 c
-h
-17.478 -0.382 m
-17.478 -0.786 17.555 -1.103 17.713 -1.338 c
-17.878 -1.573 18.099 -1.691 18.375 -1.691 c
-18.94 -1.691 19.234 -1.278 19.256 -0.455 c
-19.256 0 l
-19.256 0.401 19.171 0.721 19.007 0.956 c
-18.849 1.199 18.631 1.323 18.359 1.323 c
-18.095 1.323 17.878 1.199 17.713 0.956 c
-17.555 0.721 17.478 0.401 17.478 0 c
-h
-22.387 1.191 m
-22.299 1.209 22.2 1.22 22.093 1.22 c
-21.758 1.22 21.523 1.037 21.388 0.676 c
-21.388 -2.175 l
-20.741 -2.175 l
-20.741 1.808 l
-21.373 1.808 l
-21.388 1.397 l
-21.564 1.72 21.806 1.881 22.122 1.881 c
-22.229 1.881 22.317 1.86 22.387 1.823 c
-h
-24.195 -1.087 m
-24.915 1.808 l
-25.606 1.808 l
-24.312 -2.734 l
-24.214 -3.075 24.07 -3.337 23.886 -3.513 c
-23.71 -3.69 23.508 -3.777 23.283 -3.777 c
-23.196 -3.777 23.082 -3.755 22.946 -3.719 c
-22.946 -3.175 l
-23.092 -3.189 l
-23.277 -3.189 23.423 -3.146 23.534 -3.057 c
-23.64 -2.969 23.728 -2.811 23.798 -2.587 c
-23.915 -2.146 l
-22.755 1.808 l
-23.46 1.808 l
-h
-25.885 -1.822 m
-25.885 -1.705 25.918 -1.61 25.989 -1.529 c
-26.055 -1.452 26.157 -1.411 26.297 -1.411 c
-26.444 -1.411 26.551 -1.452 26.62 -1.529 c
-26.697 -1.61 26.738 -1.705 26.738 -1.822 c
-26.738 -1.932 26.697 -2.024 26.62 -2.102 c
-26.551 -2.179 26.444 -2.219 26.297 -2.219 c
-26.157 -2.219 26.055 -2.179 25.989 -2.102 c
-25.918 -2.024 25.885 -1.932 25.885 -1.822 c
-f
-Q
-0.113 0.082 0.09 0 k
-35.668 231.104 238.665 -12.895 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 40.8563 224.2696 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.647 -0.243 -0.775 -0.367 -0.882 c
--0.496 -0.992 -0.658 -1.081 -0.852 -1.147 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.162 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.927 c
--3.127 -0.819 -3.23 -0.691 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.214 -3.484 -0.015 c
--2.66 0.132 l
--2.642 0.033 -2.616 -0.059 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.368 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.683 -1.992 0.69 -1.999 0.69 c
--2.167 0.727 -2.329 0.771 -2.484 0.823 c
--2.642 0.881 -2.786 0.959 -2.91 1.058 c
--3.039 1.153 -3.142 1.278 -3.219 1.425 c
--3.289 1.573 -3.322 1.756 -3.322 1.984 c
--3.322 2.179 -3.289 2.344 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.836 c
--2.8 2.932 -2.645 3.002 -2.469 3.042 c
--2.293 3.09 -2.102 3.119 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.119 -1.128 3.09 -0.97 3.042 c
--0.804 2.992 -0.669 2.917 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.202 2.344 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.252 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.352 c
--1.294 1.311 -1.117 1.264 -0.941 1.205 c
--0.756 1.147 -0.595 1.066 -0.455 0.97 c
--0.32 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.454 c
--2.26 2.425 -2.319 2.385 -2.366 2.337 c
--2.406 2.296 -2.437 2.248 -2.454 2.19 c
--2.477 2.131 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.778 c
--2.41 1.72 -2.373 1.668 -2.322 1.631 c
--2.263 1.591 -2.201 1.558 -2.131 1.529 c
--2.065 1.5 -1.984 1.469 -1.896 1.44 c
-h
--0.837 -0.015 m
--0.837 0.091 -0.86 0.176 -0.897 0.235 c
--0.926 0.301 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.529 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.53 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.015 c
-6.402 -2.66 m
-6.185 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.396 c
-5.284 -2.315 5.185 -2.22 5.108 -2.103 c
-5.039 -1.985 4.991 -1.856 4.961 -1.72 c
-5.858 -1.617 l
-5.895 -1.753 5.964 -1.86 6.064 -1.941 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.058 6.681 -2.028 c
-6.758 -1.999 6.828 -1.945 6.887 -1.867 c
-6.945 -1.797 6.99 -1.706 7.019 -1.588 c
-7.056 -1.47 7.078 -1.323 7.078 -1.147 c
-7.078 -0.956 l
-7.078 -0.889 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.073 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.215 -0.897 5.108 -0.75 c
-5.009 -0.595 4.935 -0.412 4.888 -0.206 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.771 4.836 1.018 4.888 1.234 c
-4.946 1.448 5.027 1.631 5.137 1.778 c
-5.245 1.933 5.376 2.051 5.534 2.131 c
-5.689 2.219 5.876 2.263 6.093 2.263 c
-6.188 2.263 6.288 2.252 6.387 2.234 c
-6.483 2.212 6.571 2.179 6.652 2.131 c
-6.739 2.08 6.817 2.017 6.887 1.94 c
-6.964 1.859 7.026 1.768 7.078 1.66 c
-7.092 1.66 l
-7.092 1.808 l
-7.1 1.866 7.107 1.918 7.107 1.97 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.152 2.219 c
-8.004 2.219 l
-7.993 2.138 7.982 2.028 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.162 l
-7.975 -1.415 7.938 -1.635 7.871 -1.823 c
-7.802 -2.007 7.699 -2.161 7.563 -2.278 c
-7.423 -2.404 7.258 -2.499 7.063 -2.558 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.529 m
-7.092 0.742 7.067 0.918 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.5 6.729 1.558 6.652 1.587 c
-6.571 1.624 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.62 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.367 c
-5.88 1.278 5.835 1.161 5.799 1.014 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.339 c
-6.049 -0.515 6.211 -0.603 6.417 -0.603 c
-6.483 -0.603 6.556 -0.588 6.637 -0.559 c
-6.725 -0.522 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.177 7.019 -0.029 c
-7.067 0.118 7.092 0.301 7.092 0.529 c
-11.036 -0.647 m
-12.168 -0.647 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.647 l
-10.124 -0.647 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.219 l
-11.036 2.219 l
-h
-10.124 3.513 0.912 -0.676 re
-10.124 2.836 m
-13.6 1.602 m
-13.057 1.602 l
-13.057 2.219 l
-13.644 2.219 l
-13.924 3.116 l
-14.497 3.116 l
-14.497 2.219 l
-15.732 2.219 l
-15.732 1.602 l
-14.497 1.602 l
-14.497 -0.103 l
-14.497 -0.324 l
-14.504 -0.393 14.527 -0.456 14.556 -0.515 c
-14.593 -0.566 14.648 -0.611 14.718 -0.647 c
-14.795 -0.676 14.909 -0.691 15.056 -0.691 c
-15.192 -0.691 15.327 -0.688 15.468 -0.676 c
-15.603 -0.658 15.736 -0.632 15.865 -0.603 c
-15.865 -1.205 l
-15.784 -1.216 15.707 -1.231 15.629 -1.249 c
-15.549 -1.261 15.471 -1.268 15.394 -1.279 c
-15.313 -1.286 15.225 -1.294 15.129 -1.294 c
-15.041 -1.301 14.942 -1.309 14.835 -1.309 c
-14.648 -1.309 14.486 -1.294 14.35 -1.264 c
-14.221 -1.228 14.107 -1.183 14.012 -1.132 c
-13.924 -1.085 13.85 -1.025 13.791 -0.956 c
-13.733 -0.879 13.689 -0.802 13.66 -0.721 c
-13.63 -0.632 13.608 -0.544 13.6 -0.456 c
-13.59 -0.36 13.586 -0.264 13.586 -0.177 c
-h
-22.677 -1.323 m
-22.391 -1.323 22.148 -1.282 21.943 -1.205 c
-21.737 -1.118 21.564 -0.996 21.428 -0.838 c
-21.288 -0.684 21.185 -0.497 21.119 -0.279 c
-21.049 -0.056 21.016 0.191 21.016 0.455 c
-21.016 0.75 21.049 1.007 21.119 1.234 c
-21.197 1.459 21.303 1.646 21.442 1.793 c
-21.589 1.947 21.766 2.065 21.972 2.146 c
-22.178 2.234 22.413 2.278 22.677 2.278 c
-22.901 2.278 23.104 2.248 23.28 2.19 c
-23.456 2.131 23.607 2.047 23.736 1.94 c
-23.861 1.841 23.963 1.72 24.044 1.573 c
-24.122 1.433 24.176 1.282 24.206 1.117 c
-23.295 1.072 l
-23.265 1.249 23.196 1.389 23.089 1.5 c
-22.99 1.606 22.846 1.66 22.662 1.66 c
-22.416 1.66 22.24 1.558 22.134 1.352 c
-22.023 1.153 21.972 0.867 21.972 0.484 c
-21.972 -0.309 22.207 -0.706 22.677 -0.706 c
-22.843 -0.706 22.986 -0.654 23.104 -0.544 c
-23.221 -0.437 23.295 -0.276 23.324 -0.059 c
-24.235 -0.103 l
-24.206 -0.272 24.151 -0.426 24.074 -0.574 c
-24.004 -0.721 23.901 -0.852 23.765 -0.97 c
-23.636 -1.081 23.478 -1.168 23.295 -1.235 c
-23.119 -1.294 22.913 -1.323 22.677 -1.323 c
-27.281 -0.647 m
-28.413 -0.647 l
-28.413 -1.264 l
-25.106 -1.264 l
-25.106 -0.647 l
-26.371 -0.647 l
-26.371 2.896 l
-25.444 2.896 l
-25.444 3.513 l
-27.281 3.513 l
-h
-32.445 0.484 m
-32.445 0.209 32.408 -0.04 32.342 -0.264 c
-32.272 -0.482 32.17 -0.669 32.033 -0.823 c
-31.894 -0.981 31.717 -1.103 31.504 -1.191 c
-31.287 -1.279 31.034 -1.323 30.74 -1.323 c
-30.464 -1.323 30.217 -1.279 30.005 -1.191 c
-29.799 -1.103 29.626 -0.981 29.49 -0.823 c
-29.35 -0.669 29.248 -0.482 29.182 -0.264 c
-29.112 -0.04 29.078 0.209 29.078 0.484 c
-29.078 0.738 29.108 0.974 29.167 1.19 c
-29.233 1.415 29.336 1.606 29.475 1.764 c
-29.612 1.929 29.788 2.057 30.005 2.146 c
-30.217 2.234 30.475 2.278 30.769 2.278 c
-31.081 2.278 31.343 2.234 31.548 2.146 c
-31.761 2.057 31.934 1.929 32.062 1.764 c
-32.199 1.606 32.297 1.415 32.357 1.19 c
-32.415 0.974 32.445 0.738 32.445 0.484 c
-31.489 0.484 m
-31.489 0.69 31.474 0.867 31.445 1.014 c
-31.424 1.161 31.387 1.282 31.328 1.382 c
-31.269 1.477 31.195 1.547 31.107 1.587 c
-31.019 1.635 30.909 1.66 30.784 1.66 c
-30.519 1.66 30.328 1.562 30.211 1.367 c
-30.093 1.18 30.034 0.885 30.034 0.484 c
-30.034 0.062 30.093 -0.243 30.211 -0.426 c
-30.328 -0.614 30.504 -0.706 30.74 -0.706 c
-30.865 -0.706 30.979 -0.688 31.077 -0.647 c
-31.173 -0.599 31.254 -0.526 31.313 -0.426 c
-31.379 -0.331 31.424 -0.206 31.445 -0.059 c
-31.474 0.088 31.489 0.268 31.489 0.484 c
-35.495 -1.264 m
-35.495 0.72 l
-35.495 1.022 35.451 1.242 35.362 1.382 c
-35.281 1.529 35.146 1.602 34.951 1.602 c
-34.84 1.602 34.738 1.577 34.643 1.529 c
-34.554 1.477 34.473 1.411 34.408 1.323 c
-34.348 1.234 34.297 1.124 34.26 0.999 c
-34.231 0.881 34.216 0.75 34.216 0.602 c
-34.216 -1.264 l
-33.305 -1.264 l
-33.305 1.44 l
-33.305 1.66 l
-33.305 1.749 33.297 1.826 33.29 1.896 c
-33.29 2.087 l
-33.29 2.219 l
-34.142 2.219 l
-34.15 2.19 34.157 2.146 34.157 2.087 c
-34.157 1.896 l
-34.165 1.826 34.172 1.756 34.172 1.691 c
-34.179 1.62 34.186 1.565 34.186 1.529 c
-34.202 1.529 l
-34.319 1.793 34.47 1.984 34.657 2.102 c
-34.84 2.219 35.061 2.278 35.318 2.278 c
-35.503 2.278 35.663 2.248 35.804 2.19 c
-35.939 2.131 36.054 2.043 36.141 1.926 c
-36.23 1.808 36.292 1.664 36.332 1.5 c
-36.38 1.341 36.406 1.153 36.406 0.941 c
-36.406 -1.264 l
-h
-38.923 -1.323 m
-38.666 -1.323 38.439 -1.286 38.233 -1.22 c
-38.027 -1.143 37.851 -1.029 37.703 -0.882 c
-37.556 -0.728 37.439 -0.536 37.35 -0.309 c
-37.269 -0.085 37.233 0.18 37.233 0.484 c
-37.233 0.816 37.277 1.095 37.365 1.323 c
-37.461 1.558 37.589 1.741 37.747 1.881 c
-37.913 2.017 38.1 2.117 38.306 2.175 c
-38.512 2.242 38.721 2.278 38.938 2.278 c
-39.21 2.278 39.445 2.227 39.644 2.131 c
-39.85 2.043 40.014 1.911 40.143 1.735 c
-40.28 1.565 40.378 1.359 40.438 1.117 c
-40.504 0.881 40.54 0.617 40.54 0.324 c
-40.54 0.309 l
-38.173 0.309 l
-38.173 0.162 38.188 0.022 38.218 -0.103 c
-38.254 -0.231 38.31 -0.345 38.379 -0.441 c
-38.445 -0.53 38.53 -0.599 38.63 -0.647 c
-38.725 -0.698 38.838 -0.721 38.967 -0.721 c
-39.122 -0.721 39.262 -0.688 39.379 -0.617 c
-39.504 -0.551 39.592 -0.449 39.644 -0.309 c
-40.482 -0.382 l
-40.452 -0.482 40.397 -0.588 40.32 -0.706 c
-40.239 -0.816 40.136 -0.919 40.012 -1.014 c
-39.894 -1.103 39.739 -1.176 39.555 -1.235 c
-39.379 -1.294 39.166 -1.323 38.923 -1.323 c
-38.923 1.705 m
-38.836 1.705 38.747 1.691 38.659 1.66 c
-38.57 1.631 38.489 1.58 38.424 1.514 c
-38.354 1.444 38.295 1.356 38.248 1.249 c
-38.207 1.139 38.188 1.014 38.188 0.867 c
-39.659 0.867 l
-39.659 1.003 39.632 1.124 39.584 1.234 c
-39.544 1.341 39.489 1.429 39.424 1.5 c
-39.364 1.565 39.291 1.617 39.202 1.646 c
-39.114 1.683 39.019 1.705 38.923 1.705 c
-46.236 -2.631 m
-46.236 3.513 l
-48.162 3.513 l
-48.162 2.896 l
-47.089 2.896 l
-47.089 -2.014 l
-48.162 -2.014 l
-48.162 -2.631 l
-h
-50.414 2.219 m
-50.422 2.198 50.429 2.165 50.429 2.117 c
-50.437 2.076 50.443 2.028 50.443 1.97 c
-50.451 1.918 50.458 1.866 50.458 1.808 c
-50.458 1.646 l
-50.473 1.646 l
-50.532 1.764 50.598 1.859 50.679 1.94 c
-50.756 2.017 50.84 2.08 50.929 2.131 c
-51.017 2.19 51.106 2.227 51.193 2.248 c
-51.289 2.267 51.388 2.278 51.488 2.278 c
-51.693 2.278 51.873 2.234 52.031 2.146 c
-52.186 2.057 52.315 1.929 52.413 1.764 c
-52.52 1.606 52.597 1.415 52.648 1.19 c
-52.708 0.974 52.737 0.738 52.737 0.484 c
-52.737 0.22 52.708 -0.026 52.648 -0.25 c
-52.597 -0.467 52.52 -0.658 52.413 -0.823 c
-52.315 -0.981 52.182 -1.103 52.016 -1.191 c
-51.858 -1.279 51.671 -1.323 51.458 -1.323 c
-51.359 -1.323 51.26 -1.312 51.164 -1.294 c
-51.065 -1.272 50.973 -1.242 50.885 -1.191 c
-50.804 -1.143 50.727 -1.081 50.649 -1 c
-50.58 -0.923 50.521 -0.831 50.473 -0.721 c
-50.458 -0.721 l
-50.458 -0.809 l
-50.466 -0.849 50.473 -0.897 50.473 -0.956 c
-50.473 -1.118 l
-50.473 -1.294 l
-50.473 -2.631 l
-49.562 -2.631 l
-49.562 1.455 l
-49.562 1.62 49.554 1.768 49.547 1.896 c
-49.547 2.219 l
-h
-50.458 0.455 m
-50.458 0.228 50.477 0.037 50.517 -0.118 c
-50.565 -0.264 50.62 -0.382 50.679 -0.47 c
-50.745 -0.559 50.819 -0.625 50.9 -0.661 c
-50.977 -0.702 51.054 -0.721 51.135 -0.721 c
-51.23 -0.721 51.318 -0.698 51.399 -0.647 c
-51.488 -0.599 51.553 -0.53 51.605 -0.441 c
-51.664 -0.345 51.708 -0.221 51.737 -0.073 c
-51.774 0.081 51.796 0.268 51.796 0.484 c
-51.796 0.875 51.737 1.168 51.619 1.367 c
-51.509 1.562 51.355 1.66 51.149 1.66 c
-51.068 1.66 50.991 1.639 50.914 1.602 c
-50.833 1.562 50.759 1.5 50.694 1.411 c
-50.624 1.323 50.565 1.198 50.517 1.043 c
-50.477 0.885 50.458 0.69 50.458 0.455 c
-56.625 1.469 m
-56.525 1.477 56.423 1.488 56.316 1.5 c
-56.205 1.517 56.084 1.529 55.949 1.529 c
-55.772 1.529 55.614 1.488 55.478 1.411 c
-55.339 1.341 55.22 1.242 55.125 1.117 c
-55.037 0.989 54.967 0.841 54.919 0.676 c
-54.879 0.507 54.861 0.33 54.861 0.147 c
-54.861 -1.264 l
-53.965 -1.264 l
-53.965 0.985 l
-53.965 1.11 53.953 1.234 53.934 1.352 c
-53.924 1.477 53.909 1.595 53.89 1.705 c
-53.88 1.822 53.865 1.918 53.847 1.999 c
-53.824 2.087 53.807 2.161 53.788 2.219 c
-54.67 2.219 l
-54.677 2.168 54.688 2.117 54.699 2.057 c
-54.717 1.999 54.732 1.933 54.743 1.866 c
-54.761 1.808 54.776 1.741 54.788 1.675 c
-54.794 1.606 54.806 1.543 54.817 1.484 c
-54.831 1.484 l
-54.869 1.602 54.919 1.708 54.979 1.808 c
-55.045 1.903 55.125 1.988 55.214 2.057 c
-55.301 2.124 55.405 2.179 55.522 2.219 c
-55.648 2.256 55.794 2.278 55.964 2.278 c
-56.088 2.278 56.205 2.271 56.316 2.263 c
-56.434 2.252 56.537 2.238 56.625 2.219 c
-h
-60.876 0.484 m
-60.876 0.209 60.839 -0.04 60.774 -0.264 c
-60.704 -0.482 60.601 -0.669 60.465 -0.823 c
-60.325 -0.981 60.149 -1.103 59.935 -1.191 c
-59.719 -1.279 59.465 -1.323 59.172 -1.323 c
-58.896 -1.323 58.649 -1.279 58.436 -1.191 c
-58.231 -1.103 58.058 -0.981 57.922 -0.823 c
-57.782 -0.669 57.68 -0.482 57.613 -0.264 c
-57.543 -0.04 57.51 0.209 57.51 0.484 c
-57.51 0.738 57.539 0.974 57.599 1.19 c
-57.665 1.415 57.768 1.606 57.907 1.764 c
-58.043 1.929 58.22 2.057 58.436 2.146 c
-58.649 2.234 58.906 2.278 59.201 2.278 c
-59.513 2.278 59.774 2.234 59.98 2.146 c
-60.193 2.057 60.365 1.929 60.494 1.764 c
-60.63 1.606 60.729 1.415 60.788 1.19 c
-60.847 0.974 60.876 0.738 60.876 0.484 c
-59.921 0.484 m
-59.921 0.69 59.906 0.867 59.877 1.014 c
-59.855 1.161 59.818 1.282 59.76 1.382 c
-59.7 1.477 59.627 1.547 59.538 1.587 c
-59.451 1.635 59.34 1.66 59.216 1.66 c
-58.95 1.66 58.76 1.562 58.642 1.367 c
-58.524 1.18 58.466 0.885 58.466 0.484 c
-58.466 0.062 58.524 -0.243 58.642 -0.426 c
-58.76 -0.614 58.936 -0.706 59.172 -0.706 c
-59.297 -0.706 59.411 -0.688 59.509 -0.647 c
-59.605 -0.599 59.686 -0.526 59.744 -0.426 c
-59.81 -0.331 59.855 -0.206 59.877 -0.059 c
-59.906 0.088 59.921 0.268 59.921 0.484 c
-64.055 -1.309 m
-64.055 -1.544 64.011 -1.742 63.922 -1.911 c
-63.842 -2.076 63.735 -2.213 63.6 -2.323 c
-63.459 -2.429 63.305 -2.506 63.129 -2.558 c
-62.952 -2.606 62.769 -2.631 62.586 -2.631 c
-62.497 -2.631 62.409 -2.624 62.32 -2.616 c
-62.233 -2.606 62.144 -2.595 62.056 -2.587 c
-61.975 -2.576 61.902 -2.562 61.836 -2.543 c
-61.766 -2.532 61.707 -2.517 61.659 -2.499 c
-61.659 -1.823 l
-61.747 -1.841 61.865 -1.86 62.012 -1.881 c
-62.159 -1.911 62.32 -1.926 62.497 -1.926 c
-62.592 -1.926 62.681 -1.914 62.761 -1.897 c
-62.839 -1.874 62.908 -1.841 62.967 -1.793 c
-63.026 -1.742 63.07 -1.669 63.1 -1.573 c
-63.129 -1.484 63.143 -1.371 63.143 -1.235 c
-63.143 1.602 l
-62.012 1.602 l
-62.012 2.219 l
-64.055 2.219 l
-h
-63.158 3.513 0.897 -0.676 re
-63.158 2.836 m
-67.351 -1.323 m
-67.094 -1.323 66.866 -1.286 66.661 -1.22 c
-66.455 -1.143 66.278 -1.029 66.131 -0.882 c
-65.984 -0.728 65.867 -0.536 65.778 -0.309 c
-65.697 -0.085 65.661 0.18 65.661 0.484 c
-65.661 0.816 65.705 1.095 65.793 1.323 c
-65.888 1.558 66.017 1.741 66.175 1.881 c
-66.341 2.017 66.528 2.117 66.734 2.175 c
-66.94 2.242 67.149 2.278 67.366 2.278 c
-67.638 2.278 67.873 2.227 68.072 2.131 c
-68.277 2.043 68.443 1.911 68.571 1.735 c
-68.707 1.565 68.807 1.359 68.865 1.117 c
-68.932 0.881 68.968 0.617 68.968 0.324 c
-68.968 0.309 l
-66.602 0.309 l
-66.602 0.162 66.617 0.022 66.646 -0.103 c
-66.682 -0.231 66.738 -0.345 66.808 -0.441 c
-66.873 -0.53 66.958 -0.599 67.058 -0.647 c
-67.153 -0.698 67.267 -0.721 67.396 -0.721 c
-67.55 -0.721 67.689 -0.688 67.807 -0.617 c
-67.932 -0.551 68.02 -0.449 68.072 -0.309 c
-68.909 -0.382 l
-68.88 -0.482 68.824 -0.588 68.747 -0.706 c
-68.666 -0.816 68.564 -0.919 68.439 -1.014 c
-68.321 -1.103 68.167 -1.176 67.983 -1.235 c
-67.807 -1.294 67.594 -1.323 67.351 -1.323 c
-67.351 1.705 m
-67.263 1.705 67.175 1.691 67.087 1.66 c
-66.999 1.631 66.918 1.58 66.852 1.514 c
-66.782 1.444 66.723 1.356 66.675 1.249 c
-66.634 1.139 66.617 1.014 66.617 0.867 c
-68.086 0.867 l
-68.086 1.003 68.061 1.124 68.013 1.234 c
-67.972 1.341 67.918 1.429 67.851 1.5 c
-67.792 1.565 67.719 1.617 67.631 1.646 c
-67.542 1.683 67.447 1.705 67.351 1.705 c
-71.412 -1.323 m
-71.126 -1.323 70.883 -1.282 70.677 -1.205 c
-70.471 -1.118 70.299 -0.996 70.162 -0.838 c
-70.023 -0.684 69.92 -0.497 69.854 -0.279 c
-69.784 -0.056 69.751 0.191 69.751 0.455 c
-69.751 0.75 69.784 1.007 69.854 1.234 c
-69.931 1.459 70.037 1.646 70.177 1.793 c
-70.324 1.947 70.501 2.065 70.706 2.146 c
-70.912 2.234 71.147 2.278 71.412 2.278 c
-71.636 2.278 71.839 2.248 72.015 2.19 c
-72.191 2.131 72.342 2.047 72.47 1.94 c
-72.595 1.841 72.698 1.72 72.779 1.573 c
-72.856 1.433 72.911 1.282 72.94 1.117 c
-72.03 1.072 l
-71.999 1.249 71.93 1.389 71.824 1.5 c
-71.724 1.606 71.581 1.66 71.397 1.66 c
-71.151 1.66 70.975 1.558 70.868 1.352 c
-70.758 1.153 70.706 0.867 70.706 0.484 c
-70.706 -0.309 70.941 -0.706 71.412 -0.706 c
-71.577 -0.706 71.721 -0.654 71.839 -0.544 c
-71.956 -0.437 72.03 -0.276 72.059 -0.059 c
-72.97 -0.103 l
-72.94 -0.272 72.886 -0.426 72.809 -0.574 c
-72.739 -0.721 72.635 -0.852 72.5 -0.97 c
-72.371 -1.081 72.213 -1.168 72.03 -1.235 c
-71.853 -1.294 71.647 -1.323 71.412 -1.323 c
-74.521 1.602 m
-73.977 1.602 l
-73.977 2.219 l
-74.565 2.219 l
-74.844 3.116 l
-75.417 3.116 l
-75.417 2.219 l
-76.652 2.219 l
-76.652 1.602 l
-75.417 1.602 l
-75.417 -0.103 l
-75.417 -0.324 l
-75.425 -0.393 75.446 -0.456 75.476 -0.515 c
-75.513 -0.566 75.568 -0.611 75.638 -0.647 c
-75.715 -0.676 75.829 -0.691 75.976 -0.691 c
-76.112 -0.691 76.248 -0.688 76.387 -0.676 c
-76.523 -0.658 76.656 -0.632 76.784 -0.603 c
-76.784 -1.205 l
-76.703 -1.216 76.626 -1.231 76.549 -1.249 c
-76.468 -1.261 76.391 -1.268 76.314 -1.279 c
-76.233 -1.286 76.145 -1.294 76.049 -1.294 c
-75.961 -1.301 75.862 -1.309 75.756 -1.309 c
-75.568 -1.309 75.407 -1.294 75.27 -1.264 c
-75.142 -1.228 75.028 -1.183 74.933 -1.132 c
-74.844 -1.085 74.771 -1.025 74.712 -0.956 c
-74.653 -0.879 74.609 -0.802 74.58 -0.721 c
-74.55 -0.632 74.528 -0.544 74.521 -0.456 c
-74.509 -0.36 74.506 -0.264 74.506 -0.177 c
-h
-82.921 2.219 m
-82.921 0.264 l
-82.921 0.125 82.929 0 82.951 -0.118 c
-82.969 -0.228 83.002 -0.32 83.053 -0.397 c
-83.101 -0.478 83.16 -0.54 83.23 -0.588 c
-83.296 -0.628 83.381 -0.647 83.48 -0.647 c
-83.568 -0.647 83.649 -0.628 83.73 -0.588 c
-83.818 -0.54 83.891 -0.47 83.951 -0.382 c
-84.009 -0.287 84.053 -0.177 84.082 -0.059 c
-84.119 0.066 84.142 0.206 84.142 0.353 c
-84.142 2.219 l
-85.038 2.219 l
-85.038 -0.485 l
-85.038 -0.721 l
-85.046 -0.802 85.052 -0.879 85.052 -0.956 c
-85.052 -1.147 l
-85.06 -1.199 85.067 -1.235 85.067 -1.264 c
-84.215 -1.264 l
-84.204 -1.235 84.192 -1.199 84.186 -1.147 c
-84.186 -0.956 l
-84.186 -0.889 84.178 -0.819 84.171 -0.75 c
-84.171 -0.574 l
-84.156 -0.574 l
-84.038 -0.838 83.884 -1.029 83.7 -1.147 c
-83.524 -1.264 83.322 -1.323 83.097 -1.323 c
-82.892 -1.323 82.719 -1.286 82.583 -1.22 c
-82.444 -1.154 82.334 -1.058 82.245 -0.941 c
-82.164 -0.823 82.106 -0.688 82.069 -0.53 c
-82.039 -0.364 82.025 -0.187 82.025 0 c
-82.025 2.219 l
-h
-89.113 1.469 m
-89.014 1.477 88.911 1.488 88.805 1.5 c
-88.695 1.517 88.573 1.529 88.437 1.529 c
-88.261 1.529 88.103 1.488 87.967 1.411 c
-87.827 1.341 87.71 1.242 87.614 1.117 c
-87.525 0.989 87.456 0.841 87.408 0.676 c
-87.367 0.507 87.35 0.33 87.35 0.147 c
-87.35 -1.264 l
-86.453 -1.264 l
-86.453 0.985 l
-86.453 1.11 86.442 1.234 86.423 1.352 c
-86.413 1.477 86.398 1.595 86.38 1.705 c
-86.368 1.822 86.353 1.918 86.335 1.999 c
-86.313 2.087 86.295 2.161 86.276 2.219 c
-87.159 2.219 l
-87.166 2.168 87.176 2.117 87.188 2.057 c
-87.206 1.999 87.221 1.933 87.232 1.866 c
-87.25 1.808 87.265 1.741 87.276 1.675 c
-87.284 1.606 87.294 1.543 87.305 1.484 c
-87.32 1.484 l
-87.357 1.602 87.408 1.708 87.467 1.808 c
-87.533 1.903 87.614 1.988 87.702 2.057 c
-87.791 2.124 87.893 2.179 88.011 2.219 c
-88.136 2.256 88.283 2.278 88.452 2.278 c
-88.577 2.278 88.695 2.271 88.805 2.263 c
-88.922 2.252 89.025 2.238 89.113 2.219 c
-h
-92.263 -0.647 m
-93.395 -0.647 l
-93.395 -1.264 l
-90.087 -1.264 l
-90.087 -0.647 l
-91.351 -0.647 l
-91.351 2.896 l
-90.425 2.896 l
-90.425 3.513 l
-92.263 3.513 l
-h
-94.592 -2.631 m
-94.592 -2.014 l
-95.666 -2.014 l
-95.666 2.896 l
-94.592 2.896 l
-94.592 3.513 l
-96.518 3.513 l
-96.518 -2.631 l
-h
-f
-Q
-q 1 0 0 1 65.7934 208.1152 cm
-0 0 m
-0 5.35 l
-1.278 5.35 l
-1.904 5.35 2.389 5.152 2.734 4.762 c
-3.076 4.369 3.248 3.821 3.248 3.116 c
-3.248 2.219 l
-3.248 1.514 3.072 0.962 2.72 0.573 c
-2.374 0.191 1.87 0 1.205 0 c
-h
-0.676 4.777 m
-0.676 0.573 l
-1.22 0.573 l
-1.691 0.573 2.032 0.709 2.249 0.985 c
-2.473 1.257 2.587 1.661 2.587 2.19 c
-2.587 3.131 l
-2.587 3.697 2.477 4.116 2.263 4.38 c
-2.047 4.644 1.72 4.777 1.278 4.777 c
-h
-4.072 2.175 m
-4.072 2.753 4.208 3.208 4.484 3.543 c
-4.767 3.884 5.137 4.056 5.6 4.056 c
-6.059 4.056 6.427 3.888 6.703 3.557 c
-6.986 3.233 7.133 2.786 7.144 2.219 c
-7.144 1.793 l
-7.144 1.224 7 0.768 6.718 0.426 c
-6.442 0.092 6.074 -0.073 5.615 -0.073 c
-5.152 -0.073 4.781 0.088 4.498 0.411 c
-4.222 0.742 4.079 1.183 4.072 1.735 c
-h
-4.719 1.793 m
-4.719 1.389 4.796 1.073 4.954 0.838 c
-5.119 0.603 5.34 0.485 5.615 0.485 c
-6.181 0.485 6.475 0.897 6.497 1.72 c
-6.497 2.175 l
-6.497 2.576 6.413 2.896 6.247 3.131 c
-6.089 3.373 5.872 3.499 5.6 3.499 c
-5.336 3.499 5.119 3.373 4.954 3.131 c
-4.796 2.896 4.719 2.576 4.719 2.175 c
-h
-10.951 1.147 m
-11.553 3.983 l
-12.2 3.983 l
-11.215 0 l
-10.701 0 l
-9.922 2.851 l
-9.172 0 l
-8.644 0 l
-7.688 3.983 l
-8.32 3.983 l
-8.937 1.22 l
-9.672 3.983 l
-10.186 3.983 l
-h
-13.494 3.983 m
-13.508 3.543 l
-13.762 3.884 14.086 4.056 14.479 4.056 c
-15.184 4.056 15.541 3.586 15.551 2.645 c
-15.551 0 l
-14.905 0 l
-14.905 2.616 l
-14.905 2.929 14.85 3.15 14.743 3.278 c
-14.633 3.403 14.479 3.469 14.273 3.469 c
-14.115 3.469 13.968 3.414 13.832 3.308 c
-13.704 3.197 13.6 3.061 13.523 2.896 c
-13.523 0 l
-12.877 0 l
-12.877 3.983 l
-h
-17.228 0 -0.647 5.644 re
-18.109 2.175 m
-18.109 2.753 18.246 3.208 18.521 3.543 c
-18.803 3.884 19.175 4.056 19.638 4.056 c
-20.097 4.056 20.465 3.888 20.74 3.557 c
-21.024 3.233 21.17 2.786 21.182 2.219 c
-21.182 1.793 l
-21.182 1.224 21.038 0.768 20.756 0.426 c
-20.48 0.092 20.112 -0.073 19.653 -0.073 c
-19.19 -0.073 18.819 0.088 18.535 0.411 c
-18.26 0.742 18.117 1.183 18.109 1.735 c
-h
-18.756 1.793 m
-18.756 1.389 18.834 1.073 18.992 0.838 c
-19.156 0.603 19.377 0.485 19.653 0.485 c
-20.218 0.485 20.513 0.897 20.534 1.72 c
-20.534 2.175 l
-20.534 2.576 20.45 2.896 20.285 3.131 c
-20.127 3.373 19.91 3.499 19.638 3.499 c
-19.374 3.499 19.156 3.373 18.992 3.131 c
-18.834 2.896 18.756 2.576 18.756 2.175 c
-h
-24.062 0 m
-24.022 0.088 23.996 0.235 23.989 0.441 c
-23.754 0.096 23.46 -0.073 23.107 -0.073 c
-22.743 -0.073 22.46 0.022 22.254 0.22 c
-22.056 0.426 21.961 0.713 21.961 1.088 c
-21.961 1.488 22.096 1.808 22.372 2.043 c
-22.644 2.286 23.019 2.41 23.489 2.41 c
-23.974 2.41 l
-23.974 2.837 l
-23.974 3.072 23.919 3.237 23.813 3.337 c
-23.702 3.443 23.541 3.499 23.328 3.499 c
-23.129 3.499 22.967 3.439 22.842 3.322 c
-22.725 3.204 22.666 3.057 22.666 2.881 c
-22.019 2.881 l
-22.019 3.075 22.078 3.267 22.196 3.454 c
-22.321 3.638 22.483 3.785 22.68 3.896 c
-22.886 4.002 23.114 4.056 23.372 4.056 c
-23.772 4.056 24.077 3.954 24.283 3.748 c
-24.496 3.543 24.61 3.248 24.621 2.866 c
-24.621 0.852 l
-24.621 0.548 24.658 0.283 24.739 0.058 c
-24.739 0 l
-h
-23.195 0.515 m
-23.36 0.515 23.511 0.559 23.651 0.646 c
-23.798 0.735 23.904 0.845 23.974 0.985 c
-23.974 1.926 l
-23.607 1.926 l
-23.291 1.926 23.048 1.856 22.872 1.72 c
-22.695 1.591 22.607 1.404 22.607 1.161 c
-22.607 0.933 22.651 0.768 22.74 0.661 c
-22.828 0.563 22.979 0.515 23.195 0.515 c
-25.488 2.175 m
-25.488 2.782 25.598 3.248 25.826 3.572 c
-26.061 3.896 26.389 4.056 26.811 4.056 c
-27.193 4.056 27.491 3.898 27.708 3.586 c
-27.708 5.644 l
-28.355 5.644 l
-28.355 0 l
-27.767 0 l
-27.723 0.426 l
-27.517 0.092 27.212 -0.073 26.811 -0.073 c
-26.4 -0.073 26.076 0.081 25.841 0.397 c
-25.606 0.721 25.488 1.176 25.488 1.764 c
-h
-26.135 1.793 m
-26.135 1.352 26.198 1.022 26.326 0.808 c
-26.462 0.603 26.682 0.5 26.988 0.5 c
-27.311 0.5 27.55 0.661 27.708 0.985 c
-27.708 2.998 l
-27.539 3.31 27.3 3.469 26.988 3.469 c
-26.682 3.469 26.462 3.366 26.326 3.16 c
-26.198 2.955 26.135 2.631 26.135 2.19 c
-h
-31.295 1.014 m
-31.295 1.161 31.239 1.282 31.133 1.382 c
-31.023 1.477 30.817 1.595 30.516 1.735 c
-30.17 1.881 29.928 2.003 29.78 2.102 c
-29.633 2.209 29.523 2.326 29.457 2.454 c
-29.387 2.58 29.354 2.738 29.354 2.925 c
-29.354 3.248 29.471 3.516 29.707 3.734 c
-29.942 3.946 30.244 4.056 30.618 4.056 c
-31 4.056 31.309 3.943 31.544 3.719 c
-31.779 3.491 31.897 3.204 31.897 2.851 c
-31.25 2.851 l
-31.25 3.028 31.191 3.179 31.074 3.308 c
-30.956 3.432 30.802 3.499 30.618 3.499 c
-30.42 3.499 30.269 3.443 30.163 3.337 c
-30.052 3.237 30.001 3.105 30.001 2.94 c
-30.001 2.811 30.038 2.705 30.119 2.616 c
-30.196 2.535 30.387 2.433 30.692 2.308 c
-31.17 2.12 31.5 1.933 31.677 1.749 c
-31.852 1.573 31.941 1.345 31.941 1.073 c
-31.941 0.721 31.816 0.441 31.574 0.235 c
-31.339 0.029 31.023 -0.073 30.633 -0.073 c
-30.21 -0.073 29.872 0.044 29.618 0.279 c
-29.361 0.522 29.236 0.827 29.236 1.191 c
-29.884 1.191 l
-29.891 0.962 29.961 0.786 30.089 0.661 c
-30.214 0.544 30.398 0.485 30.633 0.485 c
-30.846 0.485 31.008 0.532 31.118 0.632 c
-31.235 0.727 31.295 0.856 31.295 1.014 c
-36.542 0 m
-36.502 0.088 36.476 0.235 36.469 0.441 c
-36.234 0.096 35.939 -0.073 35.586 -0.073 c
-35.222 -0.073 34.94 0.022 34.734 0.22 c
-34.535 0.426 34.44 0.713 34.44 1.088 c
-34.44 1.488 34.576 1.808 34.852 2.043 c
-35.123 2.286 35.498 2.41 35.968 2.41 c
-36.454 2.41 l
-36.454 2.837 l
-36.454 3.072 36.398 3.237 36.292 3.337 c
-36.182 3.443 36.02 3.499 35.807 3.499 c
-35.609 3.499 35.447 3.439 35.322 3.322 c
-35.204 3.204 35.145 3.057 35.145 2.881 c
-34.499 2.881 l
-34.499 3.075 34.557 3.267 34.675 3.454 c
-34.8 3.638 34.962 3.785 35.16 3.896 c
-35.366 4.002 35.594 4.056 35.851 4.056 c
-36.251 4.056 36.556 3.954 36.762 3.748 c
-36.976 3.543 37.09 3.248 37.101 2.866 c
-37.101 0.852 l
-37.101 0.548 37.138 0.283 37.218 0.058 c
-37.218 0 l
-h
-35.675 0.515 m
-35.84 0.515 35.991 0.559 36.13 0.646 c
-36.278 0.735 36.384 0.845 36.454 0.985 c
-36.454 1.926 l
-36.086 1.926 l
-35.771 1.926 35.528 1.856 35.351 1.72 c
-35.175 1.591 35.087 1.404 35.087 1.161 c
-35.087 0.933 35.131 0.768 35.219 0.661 c
-35.307 0.563 35.457 0.515 35.675 0.515 c
-42.701 1.793 m
-42.701 1.165 42.584 0.694 42.348 0.382 c
-42.121 0.077 41.805 -0.073 41.393 -0.073 c
-40.988 -0.073 40.679 0.077 40.467 0.382 c
-40.467 -1.529 l
-39.82 -1.529 l
-39.82 3.983 l
-40.408 3.983 l
-40.452 3.543 l
-40.665 3.884 40.974 4.056 41.377 4.056 c
-41.819 4.056 42.146 3.902 42.362 3.601 c
-42.576 3.296 42.69 2.84 42.701 2.234 c
-h
-42.054 2.175 m
-42.054 2.616 41.984 2.94 41.848 3.146 c
-41.709 3.358 41.488 3.469 41.187 3.469 c
-40.87 3.469 40.631 3.314 40.467 3.013 c
-40.467 0.941 l
-40.631 0.636 40.87 0.485 41.187 0.485 c
-41.481 0.485 41.694 0.588 41.834 0.794 c
-41.969 1.007 42.043 1.338 42.054 1.779 c
-h
-45.185 3.366 m
-45.097 3.385 44.997 3.395 44.891 3.395 c
-44.556 3.395 44.321 3.212 44.186 2.851 c
-44.186 0 l
-43.538 0 l
-43.538 3.983 l
-44.171 3.983 l
-44.186 3.572 l
-44.362 3.896 44.604 4.056 44.92 4.056 c
-45.027 4.056 45.115 4.035 45.185 3.998 c
-h
-45.626 2.175 m
-45.626 2.753 45.762 3.208 46.038 3.543 c
-46.32 3.884 46.692 4.056 47.155 4.056 c
-47.614 4.056 47.981 3.888 48.257 3.557 c
-48.54 3.233 48.687 2.786 48.698 2.219 c
-48.698 1.793 l
-48.698 1.224 48.554 0.768 48.272 0.426 c
-47.997 0.092 47.629 -0.073 47.17 -0.073 c
-46.707 -0.073 46.335 0.088 46.052 0.411 c
-45.776 0.742 45.633 1.183 45.626 1.735 c
-h
-46.273 1.793 m
-46.273 1.389 46.35 1.073 46.508 0.838 c
-46.673 0.603 46.894 0.485 47.17 0.485 c
-47.735 0.485 48.029 0.897 48.051 1.72 c
-48.051 2.175 l
-48.051 2.576 47.966 2.896 47.802 3.131 c
-47.644 3.373 47.426 3.499 47.155 3.499 c
-46.89 3.499 46.673 3.373 46.508 3.131 c
-46.35 2.896 46.273 2.576 46.273 2.175 c
-h
-50.197 3.983 m
-50.197 -0.5 l
-50.197 -1.235 49.907 -1.602 49.33 -1.602 c
-49.19 -1.602 49.069 -1.58 48.963 -1.544 c
-48.963 -1 l
-49.032 -1.018 49.117 -1.029 49.227 -1.029 c
-49.333 -1.029 49.411 -0.985 49.462 -0.897 c
-49.521 -0.816 49.551 -0.676 49.551 -0.47 c
-49.551 3.983 l
-h
-50.227 5.027 m
-50.227 4.917 50.197 4.825 50.139 4.748 c
-50.079 4.678 49.984 4.644 49.859 4.644 c
-49.742 4.644 49.647 4.678 49.58 4.748 c
-49.521 4.825 49.491 4.917 49.491 5.027 c
-49.491 5.145 49.521 5.236 49.58 5.307 c
-49.647 5.384 49.742 5.424 49.859 5.424 c
-49.984 5.424 50.079 5.384 50.139 5.307 c
-50.197 5.226 50.227 5.134 50.227 5.027 c
-52.652 -0.073 m
-52.153 -0.073 51.77 0.073 51.505 0.368 c
-51.241 0.661 51.108 1.095 51.108 1.675 c
-51.108 2.146 l
-51.108 2.741 51.234 3.208 51.49 3.543 c
-51.756 3.884 52.116 4.056 52.579 4.056 c
-53.038 4.056 53.379 3.902 53.607 3.601 c
-53.842 3.308 53.964 2.844 53.975 2.219 c
-53.975 1.793 l
-51.756 1.793 l
-51.756 1.705 l
-51.756 1.272 51.833 0.959 51.991 0.764 c
-52.156 0.577 52.388 0.485 52.681 0.485 c
-52.876 0.485 53.049 0.518 53.196 0.588 c
-53.343 0.665 53.479 0.783 53.607 0.941 c
-53.946 0.529 l
-53.659 0.125 53.229 -0.073 52.652 -0.073 c
-52.579 3.499 m
-52.303 3.499 52.101 3.403 51.976 3.219 c
-51.847 3.032 51.774 2.741 51.756 2.352 c
-53.329 2.352 l
-53.329 2.44 l
-53.306 2.822 53.24 3.09 53.123 3.248 c
-53.005 3.414 52.822 3.499 52.579 3.499 c
-56.136 0.485 m
-56.349 0.485 56.521 0.548 56.65 0.676 c
-56.786 0.812 56.859 1.003 56.871 1.249 c
-57.488 1.249 l
-57.466 0.867 57.33 0.548 57.077 0.294 c
-56.82 0.048 56.507 -0.073 56.136 -0.073 c
-55.644 -0.073 55.268 0.077 55.004 0.382 c
-54.746 0.694 54.622 1.161 54.622 1.779 c
-54.622 2.219 l
-54.622 2.815 54.746 3.271 55.004 3.586 c
-55.268 3.898 55.644 4.056 56.136 4.056 c
-56.537 4.056 56.856 3.925 57.092 3.66 c
-57.333 3.403 57.466 3.057 57.488 2.616 c
-56.871 2.616 l
-56.849 2.911 56.775 3.131 56.65 3.278 c
-56.533 3.425 56.36 3.499 56.136 3.499 c
-55.841 3.499 55.625 3.399 55.489 3.204 c
-55.349 3.017 55.276 2.708 55.268 2.278 c
-55.268 1.764 l
-55.268 1.294 55.334 0.959 55.474 0.764 c
-55.621 0.577 55.841 0.485 56.136 0.485 c
-59.091 4.939 m
-59.091 3.983 l
-59.693 3.983 l
-59.693 3.454 l
-59.091 3.454 l
-59.091 0.985 l
-59.091 0.827 59.112 0.709 59.164 0.632 c
-59.222 0.551 59.311 0.515 59.428 0.515 c
-59.517 0.515 59.604 0.529 59.693 0.559 c
-59.693 0 l
-59.546 -0.048 59.392 -0.073 59.237 -0.073 c
-58.98 -0.073 58.785 0.018 58.649 0.206 c
-58.509 0.389 58.443 0.65 58.443 0.985 c
-58.443 3.454 l
-57.84 3.454 l
-57.84 3.983 l
-58.443 3.983 l
-58.443 4.939 l
-h
-65.146 1.147 m
-65.749 3.983 l
-66.396 3.983 l
-65.411 0 l
-64.896 0 l
-64.117 2.851 l
-63.367 0 l
-62.839 0 l
-61.883 3.983 l
-62.515 3.983 l
-63.132 1.22 l
-63.868 3.983 l
-64.382 3.983 l
-h
-67.777 0 -0.647 3.983 re
-67.822 5.027 m
-67.822 4.917 67.792 4.825 67.733 4.748 c
-67.675 4.678 67.579 4.644 67.454 4.644 c
-67.336 4.644 67.241 4.678 67.174 4.748 c
-67.116 4.825 67.087 4.917 67.087 5.027 c
-67.087 5.145 67.116 5.236 67.174 5.307 c
-67.241 5.384 67.336 5.424 67.454 5.424 c
-67.579 5.424 67.675 5.384 67.733 5.307 c
-67.792 5.226 67.822 5.134 67.822 5.027 c
-69.644 4.939 m
-69.644 3.983 l
-70.247 3.983 l
-70.247 3.454 l
-69.644 3.454 l
-69.644 0.985 l
-69.644 0.827 69.666 0.709 69.717 0.632 c
-69.777 0.551 69.865 0.515 69.983 0.515 c
-70.07 0.515 70.158 0.529 70.247 0.559 c
-70.247 0 l
-70.1 -0.048 69.946 -0.073 69.792 -0.073 c
-69.534 -0.073 69.339 0.018 69.204 0.206 c
-69.063 0.389 68.998 0.65 68.998 0.985 c
-68.998 3.454 l
-68.395 3.454 l
-68.395 3.983 l
-68.998 3.983 l
-68.998 4.939 l
-h
-71.658 3.572 m
-71.911 3.896 72.231 4.056 72.614 4.056 c
-73.319 4.056 73.676 3.586 73.686 2.645 c
-73.686 0 l
-73.04 0 l
-73.04 2.616 l
-73.04 2.929 72.984 3.15 72.878 3.278 c
-72.768 3.403 72.614 3.469 72.408 3.469 c
-72.25 3.469 72.103 3.414 71.967 3.308 c
-71.838 3.197 71.735 3.061 71.658 2.896 c
-71.658 0 l
-71.011 0 l
-71.011 5.644 l
-71.658 5.644 l
-h
-77.788 -0.073 m
-77.287 -0.073 76.905 0.073 76.641 0.368 c
-76.377 0.661 76.244 1.095 76.244 1.675 c
-76.244 2.146 l
-76.244 2.741 76.369 3.208 76.626 3.543 c
-76.89 3.884 77.251 4.056 77.714 4.056 c
-78.174 4.056 78.515 3.902 78.743 3.601 c
-78.978 3.308 79.099 2.844 79.111 2.219 c
-79.111 1.793 l
-76.89 1.793 l
-76.89 1.705 l
-76.89 1.272 76.968 0.959 77.126 0.764 c
-77.291 0.577 77.523 0.485 77.817 0.485 c
-78.012 0.485 78.184 0.518 78.332 0.588 c
-78.478 0.665 78.615 0.783 78.743 0.941 c
-79.081 0.529 l
-78.794 0.125 78.365 -0.073 77.788 -0.073 c
-77.714 3.499 m
-77.439 3.499 77.237 3.403 77.111 3.219 c
-76.983 3.032 76.909 2.741 76.89 2.352 c
-78.463 2.352 l
-78.463 2.44 l
-78.442 2.822 78.376 3.09 78.258 3.248 c
-78.141 3.414 77.956 3.499 77.714 3.499 c
-80.507 3.983 m
-80.522 3.543 l
-80.775 3.884 81.098 4.056 81.492 4.056 c
-82.197 4.056 82.554 3.586 82.565 2.645 c
-82.565 0 l
-81.918 0 l
-81.918 2.616 l
-81.918 2.929 81.863 3.15 81.756 3.278 c
-81.646 3.403 81.492 3.469 81.286 3.469 c
-81.127 3.469 80.981 3.414 80.845 3.308 c
-80.716 3.197 80.613 3.061 80.536 2.896 c
-80.536 0 l
-79.889 0 l
-79.889 3.983 l
-h
-84.387 4.939 m
-84.387 3.983 l
-84.99 3.983 l
-84.99 3.454 l
-84.387 3.454 l
-84.387 0.985 l
-84.387 0.827 84.41 0.709 84.461 0.632 c
-84.52 0.551 84.608 0.515 84.726 0.515 c
-84.813 0.515 84.902 0.529 84.99 0.559 c
-84.99 0 l
-84.843 -0.048 84.689 -0.073 84.534 -0.073 c
-84.277 -0.073 84.082 0.018 83.946 0.206 c
-83.807 0.389 83.741 0.65 83.741 0.985 c
-83.741 3.454 l
-83.138 3.454 l
-83.138 3.983 l
-83.741 3.983 l
-83.741 4.939 l
-h
-86.46 0 -0.646 3.983 re
-86.504 5.027 m
-86.504 4.917 86.475 4.825 86.415 4.748 c
-86.357 4.678 86.261 4.644 86.137 4.644 c
-86.019 4.644 85.923 4.678 85.858 4.748 c
-85.798 4.825 85.769 4.917 85.769 5.027 c
-85.769 5.145 85.798 5.236 85.858 5.307 c
-85.923 5.384 86.019 5.424 86.137 5.424 c
-86.261 5.424 86.357 5.384 86.415 5.307 c
-86.475 5.226 86.504 5.134 86.504 5.027 c
-89.12 3.366 m
-89.033 3.385 88.933 3.395 88.826 3.395 c
-88.493 3.395 88.257 3.212 88.121 2.851 c
-88.121 0 l
-87.474 0 l
-87.474 3.983 l
-88.106 3.983 l
-88.121 3.572 l
-88.297 3.896 88.54 4.056 88.856 4.056 c
-88.963 4.056 89.05 4.035 89.12 3.998 c
-h
-91.119 -0.073 m
-90.62 -0.073 90.238 0.073 89.973 0.368 c
-89.708 0.661 89.576 1.095 89.576 1.675 c
-89.576 2.146 l
-89.576 2.741 89.701 3.208 89.958 3.543 c
-90.223 3.884 90.583 4.056 91.046 4.056 c
-91.506 4.056 91.847 3.902 92.075 3.601 c
-92.31 3.308 92.431 2.844 92.443 2.219 c
-92.443 1.793 l
-90.223 1.793 l
-90.223 1.705 l
-90.223 1.272 90.3 0.959 90.458 0.764 c
-90.623 0.577 90.855 0.485 91.149 0.485 c
-91.344 0.485 91.516 0.518 91.664 0.588 c
-91.811 0.665 91.946 0.783 92.075 0.941 c
-92.413 0.529 l
-92.127 0.125 91.697 -0.073 91.119 -0.073 c
-91.046 3.499 m
-90.77 3.499 90.569 3.403 90.444 3.219 c
-90.315 3.032 90.241 2.741 90.223 2.352 c
-91.795 2.352 l
-91.795 2.44 l
-91.774 2.822 91.707 3.09 91.589 3.248 c
-91.472 3.414 91.288 3.499 91.046 3.499 c
-95.588 3.572 m
-95.842 3.896 96.161 4.056 96.543 4.056 c
-97.249 4.056 97.605 3.586 97.617 2.645 c
-97.617 0 l
-96.97 0 l
-96.97 2.616 l
-96.97 2.929 96.915 3.15 96.808 3.278 c
-96.698 3.403 96.543 3.469 96.337 3.469 c
-96.179 3.469 96.033 3.414 95.897 3.308 c
-95.768 3.197 95.665 3.061 95.588 2.896 c
-95.588 0 l
-94.941 0 l
-94.941 5.644 l
-95.588 5.644 l
-h
-99.277 0 -0.646 3.983 re
-99.321 5.027 m
-99.321 4.917 99.292 4.825 99.233 4.748 c
-99.175 4.678 99.079 4.644 98.954 4.644 c
-98.837 4.644 98.741 4.678 98.675 4.748 c
-98.616 4.825 98.587 4.917 98.587 5.027 c
-98.587 5.145 98.616 5.236 98.675 5.307 c
-98.741 5.384 98.837 5.424 98.954 5.424 c
-99.079 5.424 99.175 5.384 99.233 5.307 c
-99.292 5.226 99.321 5.134 99.321 5.027 c
-102.232 1.014 m
-102.232 1.161 102.177 1.282 102.07 1.382 c
-101.96 1.477 101.754 1.595 101.453 1.735 c
-101.108 1.881 100.865 2.003 100.718 2.102 c
-100.571 2.209 100.461 2.326 100.395 2.454 c
-100.325 2.58 100.291 2.738 100.291 2.925 c
-100.291 3.248 100.409 3.516 100.644 3.734 c
-100.879 3.946 101.181 4.056 101.556 4.056 c
-101.938 4.056 102.247 3.943 102.482 3.719 c
-102.717 3.491 102.835 3.204 102.835 2.851 c
-102.188 2.851 l
-102.188 3.028 102.129 3.179 102.012 3.308 c
-101.894 3.432 101.74 3.499 101.556 3.499 c
-101.357 3.499 101.207 3.443 101.1 3.337 c
-100.99 3.237 100.939 3.105 100.939 2.94 c
-100.939 2.811 100.975 2.705 101.056 2.616 c
-101.133 2.535 101.324 2.433 101.629 2.308 c
-102.107 2.12 102.438 1.933 102.614 1.749 c
-102.791 1.573 102.878 1.345 102.878 1.073 c
-102.878 0.721 102.754 0.441 102.511 0.235 c
-102.276 0.029 101.96 -0.073 101.571 -0.073 c
-101.148 -0.073 100.81 0.044 100.557 0.279 c
-100.299 0.522 100.174 0.827 100.174 1.191 c
-100.821 1.191 l
-100.828 0.962 100.898 0.786 101.027 0.661 c
-101.152 0.544 101.335 0.485 101.571 0.485 c
-101.783 0.485 101.945 0.532 102.055 0.632 c
-102.173 0.727 102.232 0.856 102.232 1.014 c
-104.569 4.939 m
-104.569 3.983 l
-105.172 3.983 l
-105.172 3.454 l
-104.569 3.454 l
-104.569 0.985 l
-104.569 0.827 104.591 0.709 104.642 0.632 c
-104.701 0.551 104.79 0.515 104.907 0.515 c
-104.995 0.515 105.083 0.529 105.172 0.559 c
-105.172 0 l
-105.025 -0.048 104.871 -0.073 104.717 -0.073 c
-104.459 -0.073 104.264 0.018 104.129 0.206 c
-103.988 0.389 103.923 0.65 103.923 0.985 c
-103.923 3.454 l
-103.32 3.454 l
-103.32 3.983 l
-103.923 3.983 l
-103.923 4.939 l
-h
-105.731 2.175 m
-105.731 2.753 105.866 3.208 106.142 3.543 c
-106.425 3.884 106.796 4.056 107.259 4.056 c
-107.718 4.056 108.086 3.888 108.362 3.557 c
-108.644 3.233 108.792 2.786 108.802 2.219 c
-108.802 1.793 l
-108.802 1.224 108.659 0.768 108.376 0.426 c
-108.1 0.092 107.733 -0.073 107.273 -0.073 c
-106.811 -0.073 106.44 0.088 106.157 0.411 c
-105.881 0.742 105.738 1.183 105.731 1.735 c
-h
-106.377 1.793 m
-106.377 1.389 106.454 1.073 106.612 0.838 c
-106.778 0.603 106.998 0.485 107.273 0.485 c
-107.84 0.485 108.133 0.897 108.156 1.72 c
-108.156 2.175 l
-108.156 2.576 108.071 2.896 107.906 3.131 c
-107.748 3.373 107.531 3.499 107.259 3.499 c
-106.994 3.499 106.778 3.373 106.612 3.131 c
-106.454 2.896 106.377 2.576 106.377 2.175 c
-h
-111.287 3.366 m
-111.198 3.385 111.099 3.395 110.992 3.395 c
-110.658 3.395 110.423 3.212 110.287 2.851 c
-110.287 0 l
-109.64 0 l
-109.64 3.983 l
-110.273 3.983 l
-110.287 3.572 l
-110.463 3.896 110.706 4.056 111.022 4.056 c
-111.129 4.056 111.217 4.035 111.287 3.998 c
-h
-113.095 1.088 m
-113.814 3.983 l
-114.506 3.983 l
-113.212 -0.559 l
-113.113 -0.9 112.97 -1.161 112.786 -1.338 c
-112.609 -1.514 112.407 -1.602 112.183 -1.602 c
-112.095 -1.602 111.981 -1.58 111.845 -1.544 c
-111.845 -1 l
-111.992 -1.014 l
-112.176 -1.014 112.323 -0.97 112.433 -0.882 c
-112.54 -0.794 112.628 -0.636 112.698 -0.412 c
-112.815 0.029 l
-111.654 3.983 l
-112.36 3.983 l
-h
-117.151 0 m
-117.151 3.454 l
-116.623 3.454 l
-116.623 3.983 l
-117.151 3.983 l
-117.151 4.439 l
-117.151 4.839 117.247 5.152 117.446 5.38 c
-117.652 5.604 117.93 5.718 118.283 5.718 c
-118.419 5.718 118.552 5.696 118.68 5.66 c
-118.651 5.115 l
-118.552 5.134 118.452 5.145 118.357 5.145 c
-117.982 5.145 117.798 4.88 117.798 4.351 c
-117.798 3.983 l
-118.475 3.983 l
-118.475 3.454 l
-117.798 3.454 l
-117.798 0 l
-h
-120.885 3.366 m
-120.797 3.385 120.698 3.395 120.592 3.395 c
-120.257 3.395 120.021 3.212 119.886 2.851 c
-119.886 0 l
-119.239 0 l
-119.239 3.983 l
-119.871 3.983 l
-119.886 3.572 l
-120.062 3.896 120.305 4.056 120.621 4.056 c
-120.727 4.056 120.815 4.035 120.885 3.998 c
-h
-121.326 2.175 m
-121.326 2.753 121.462 3.208 121.737 3.543 c
-122.02 3.884 122.392 4.056 122.855 4.056 c
-123.314 4.056 123.682 3.888 123.957 3.557 c
-124.241 3.233 124.387 2.786 124.398 2.219 c
-124.398 1.793 l
-124.398 1.224 124.255 0.768 123.972 0.426 c
-123.696 0.092 123.329 -0.073 122.869 -0.073 c
-122.406 -0.073 122.036 0.088 121.752 0.411 c
-121.477 0.742 121.334 1.183 121.326 1.735 c
-h
-121.972 1.793 m
-121.972 1.389 122.05 1.073 122.208 0.838 c
-122.373 0.603 122.594 0.485 122.869 0.485 c
-123.435 0.485 123.73 0.897 123.751 1.72 c
-123.751 2.175 l
-123.751 2.576 123.667 2.896 123.501 3.131 c
-123.343 3.373 123.127 3.499 122.855 3.499 c
-122.591 3.499 122.373 3.373 122.208 3.131 c
-122.05 2.896 121.972 2.576 121.972 2.175 c
-h
-125.853 3.983 m
-125.868 3.616 l
-126.111 3.91 126.431 4.056 126.824 4.056 c
-127.264 4.056 127.573 3.859 127.75 3.469 c
-128.004 3.859 128.353 4.056 128.793 4.056 c
-129.529 4.056 129.903 3.594 129.925 2.675 c
-129.925 0 l
-129.278 0 l
-129.278 2.616 l
-129.278 2.911 129.223 3.123 129.116 3.263 c
-129.018 3.399 128.845 3.469 128.602 3.469 c
-128.403 3.469 128.242 3.389 128.117 3.233 c
-128 3.087 127.929 2.896 127.911 2.66 c
-127.911 0 l
-127.25 0 l
-127.25 2.645 l
-127.25 3.193 127.029 3.469 126.589 3.469 c
-126.254 3.469 126.019 3.308 125.883 2.984 c
-125.883 0 l
-125.236 0 l
-125.236 3.983 l
-h
-133.467 4.939 m
-133.467 3.983 l
-134.07 3.983 l
-134.07 3.454 l
-133.467 3.454 l
-133.467 0.985 l
-133.467 0.827 133.49 0.709 133.541 0.632 c
-133.6 0.551 133.688 0.515 133.805 0.515 c
-133.894 0.515 133.982 0.529 134.07 0.559 c
-134.07 0 l
-133.923 -0.048 133.768 -0.073 133.614 -0.073 c
-133.357 -0.073 133.163 0.018 133.026 0.206 c
-132.887 0.389 132.821 0.65 132.821 0.985 c
-132.821 3.454 l
-132.218 3.454 l
-132.218 3.983 l
-132.821 3.983 l
-132.821 4.939 l
-h
-135.482 3.572 m
-135.735 3.896 136.054 4.056 136.436 4.056 c
-137.142 4.056 137.498 3.586 137.51 2.645 c
-137.51 0 l
-136.863 0 l
-136.863 2.616 l
-136.863 2.929 136.808 3.15 136.702 3.278 c
-136.591 3.403 136.436 3.469 136.231 3.469 c
-136.073 3.469 135.926 3.414 135.79 3.308 c
-135.661 3.197 135.559 3.061 135.482 2.896 c
-135.482 0 l
-134.834 0 l
-134.834 5.644 l
-135.482 5.644 l
-h
-139.891 -0.073 m
-139.391 -0.073 139.009 0.073 138.744 0.368 c
-138.48 0.661 138.348 1.095 138.348 1.675 c
-138.348 2.146 l
-138.348 2.741 138.472 3.208 138.73 3.543 c
-138.994 3.884 139.355 4.056 139.817 4.056 c
-140.276 4.056 140.619 3.902 140.847 3.601 c
-141.082 3.308 141.203 2.844 141.213 2.219 c
-141.213 1.793 l
-138.994 1.793 l
-138.994 1.705 l
-138.994 1.272 139.071 0.959 139.229 0.764 c
-139.395 0.577 139.626 0.485 139.92 0.485 c
-140.115 0.485 140.288 0.518 140.435 0.588 c
-140.582 0.665 140.718 0.783 140.847 0.941 c
-141.184 0.529 l
-140.898 0.125 140.468 -0.073 139.891 -0.073 c
-139.817 3.499 m
-139.542 3.499 139.339 3.403 139.214 3.219 c
-139.086 3.032 139.013 2.741 138.994 2.352 c
-140.567 2.352 l
-140.567 2.44 l
-140.546 2.822 140.479 3.09 140.361 3.248 c
-140.244 3.414 140.06 3.499 139.817 3.499 c
-145.359 3.366 m
-145.271 3.385 145.172 3.395 145.065 3.395 c
-144.731 3.395 144.496 3.212 144.359 2.851 c
-144.359 0 l
-143.713 0 l
-143.713 3.983 l
-144.345 3.983 l
-144.359 3.572 l
-144.536 3.896 144.779 4.056 145.094 4.056 c
-145.201 4.056 145.289 4.035 145.359 3.998 c
-h
-147.358 -0.073 m
-146.858 -0.073 146.476 0.073 146.212 0.368 c
-145.947 0.661 145.815 1.095 145.815 1.675 c
-145.815 2.146 l
-145.815 2.741 145.94 3.208 146.197 3.543 c
-146.462 3.884 146.821 4.056 147.285 4.056 c
-147.744 4.056 148.086 3.902 148.313 3.601 c
-148.548 3.308 148.67 2.844 148.681 2.219 c
-148.681 1.793 l
-146.462 1.793 l
-146.462 1.705 l
-146.462 1.272 146.539 0.959 146.697 0.764 c
-146.862 0.577 147.093 0.485 147.388 0.485 c
-147.582 0.485 147.755 0.518 147.902 0.588 c
-148.049 0.665 148.185 0.783 148.313 0.941 c
-148.652 0.529 l
-148.365 0.125 147.935 -0.073 147.358 -0.073 c
-147.285 3.499 m
-147.009 3.499 146.807 3.403 146.682 3.219 c
-146.553 3.032 146.48 2.741 146.462 2.352 c
-148.034 2.352 l
-148.034 2.44 l
-148.012 2.822 147.946 3.09 147.829 3.248 c
-147.711 3.414 147.527 3.499 147.285 3.499 c
-150.077 3.983 m
-150.092 3.616 l
-150.335 3.91 150.655 4.056 151.048 4.056 c
-151.488 4.056 151.797 3.859 151.974 3.469 c
-152.228 3.859 152.577 4.056 153.017 4.056 c
-153.753 4.056 154.127 3.594 154.149 2.675 c
-154.149 0 l
-153.502 0 l
-153.502 2.616 l
-153.502 2.911 153.447 3.123 153.341 3.263 c
-153.242 3.399 153.069 3.469 152.826 3.469 c
-152.627 3.469 152.466 3.389 152.341 3.233 c
-152.224 3.087 152.153 2.896 152.135 2.66 c
-152.135 0 l
-151.474 0 l
-151.474 2.645 l
-151.474 3.193 151.253 3.469 150.813 3.469 c
-150.478 3.469 150.243 3.308 150.107 2.984 c
-150.107 0 l
-149.46 0 l
-149.46 3.983 l
-h
-154.987 2.175 m
-154.987 2.753 155.123 3.208 155.399 3.543 c
-155.681 3.884 156.053 4.056 156.516 4.056 c
-156.975 4.056 157.342 3.888 157.618 3.557 c
-157.901 3.233 158.048 2.786 158.059 2.219 c
-158.059 1.793 l
-158.059 1.224 157.915 0.768 157.633 0.426 c
-157.357 0.092 156.99 -0.073 156.531 -0.073 c
-156.068 -0.073 155.696 0.088 155.413 0.411 c
-155.137 0.742 154.994 1.183 154.987 1.735 c
-h
-155.634 1.793 m
-155.634 1.389 155.711 1.073 155.869 0.838 c
-156.034 0.603 156.255 0.485 156.531 0.485 c
-157.096 0.485 157.39 0.897 157.412 1.72 c
-157.412 2.175 l
-157.412 2.576 157.327 2.896 157.163 3.131 c
-157.005 3.373 156.787 3.499 156.516 3.499 c
-156.251 3.499 156.034 3.373 155.869 3.131 c
-155.711 2.896 155.634 2.576 155.634 2.175 c
-h
-159.75 4.939 m
-159.75 3.983 l
-160.352 3.983 l
-160.352 3.454 l
-159.75 3.454 l
-159.75 0.985 l
-159.75 0.827 159.771 0.709 159.823 0.632 c
-159.881 0.551 159.97 0.515 160.087 0.515 c
-160.176 0.515 160.263 0.529 160.352 0.559 c
-160.352 0 l
-160.205 -0.048 160.051 -0.073 159.897 -0.073 c
-159.639 -0.073 159.444 0.018 159.309 0.206 c
-159.168 0.389 159.103 0.65 159.103 0.985 c
-159.103 3.454 l
-158.5 3.454 l
-158.5 3.983 l
-159.103 3.983 l
-159.103 4.939 l
-h
-162.542 -0.073 m
-162.042 -0.073 161.66 0.073 161.396 0.368 c
-161.131 0.661 160.999 1.095 160.999 1.675 c
-160.999 2.146 l
-160.999 2.741 161.124 3.208 161.381 3.543 c
-161.645 3.884 162.006 4.056 162.469 4.056 c
-162.928 4.056 163.27 3.902 163.498 3.601 c
-163.733 3.308 163.854 2.844 163.866 2.219 c
-163.866 1.793 l
-161.645 1.793 l
-161.645 1.705 l
-161.645 1.272 161.723 0.959 161.881 0.764 c
-162.046 0.577 162.278 0.485 162.572 0.485 c
-162.767 0.485 162.939 0.518 163.086 0.588 c
-163.233 0.665 163.369 0.783 163.498 0.941 c
-163.835 0.529 l
-163.549 0.125 163.12 -0.073 162.542 -0.073 c
-162.469 3.499 m
-162.193 3.499 161.991 3.403 161.866 3.219 c
-161.738 3.032 161.664 2.741 161.645 2.352 c
-163.218 2.352 l
-163.218 2.44 l
-163.197 2.822 163.13 3.09 163.012 3.248 c
-162.895 3.414 162.711 3.499 162.469 3.499 c
-168.01 3.366 m
-167.922 3.385 167.823 3.395 167.716 3.395 c
-167.382 3.395 167.147 3.212 167.01 2.851 c
-167.01 0 l
-166.364 0 l
-166.364 3.983 l
-166.996 3.983 l
-167.01 3.572 l
-167.187 3.896 167.43 4.056 167.746 4.056 c
-167.852 4.056 167.941 4.035 168.01 3.998 c
-h
-170.009 -0.073 m
-169.51 -0.073 169.127 0.073 168.863 0.368 c
-168.598 0.661 168.466 1.095 168.466 1.675 c
-168.466 2.146 l
-168.466 2.741 168.591 3.208 168.848 3.543 c
-169.113 3.884 169.473 4.056 169.936 4.056 c
-170.395 4.056 170.737 3.902 170.964 3.601 c
-171.2 3.308 171.321 2.844 171.332 2.219 c
-171.332 1.793 l
-169.113 1.793 l
-169.113 1.705 l
-169.113 1.272 169.19 0.959 169.348 0.764 c
-169.513 0.577 169.745 0.485 170.039 0.485 c
-170.233 0.485 170.406 0.518 170.553 0.588 c
-170.7 0.665 170.836 0.783 170.964 0.941 c
-171.303 0.529 l
-171.016 0.125 170.586 -0.073 170.009 -0.073 c
-169.936 3.499 m
-169.66 3.499 169.458 3.403 169.333 3.219 c
-169.204 3.032 169.131 2.741 169.113 2.352 c
-170.686 2.352 l
-170.686 2.44 l
-170.663 2.822 170.597 3.09 170.48 3.248 c
-170.362 3.414 170.179 3.499 169.936 3.499 c
-174.993 1.793 m
-174.993 1.165 174.875 0.694 174.64 0.382 c
-174.412 0.077 174.096 -0.073 173.684 -0.073 c
-173.279 -0.073 172.971 0.077 172.758 0.382 c
-172.758 -1.529 l
-172.111 -1.529 l
-172.111 3.983 l
-172.699 3.983 l
-172.743 3.543 l
-172.957 3.884 173.265 4.056 173.669 4.056 c
-174.11 4.056 174.438 3.902 174.654 3.601 c
-174.867 3.296 174.981 2.84 174.993 2.234 c
-h
-174.345 2.175 m
-174.345 2.616 174.276 2.94 174.139 3.146 c
-174 3.358 173.78 3.469 173.478 3.469 c
-173.162 3.469 172.924 3.314 172.758 3.013 c
-172.758 0.941 l
-172.924 0.636 173.162 0.485 173.478 0.485 c
-173.772 0.485 173.985 0.588 174.125 0.794 c
-174.261 1.007 174.335 1.338 174.345 1.779 c
-h
-175.698 2.175 m
-175.698 2.753 175.834 3.208 176.109 3.543 c
-176.392 3.884 176.764 4.056 177.227 4.056 c
-177.686 4.056 178.054 3.888 178.329 3.557 c
-178.612 3.233 178.759 2.786 178.77 2.219 c
-178.77 1.793 l
-178.77 1.224 178.627 0.768 178.343 0.426 c
-178.068 0.092 177.701 -0.073 177.241 -0.073 c
-176.778 -0.073 176.407 0.088 176.124 0.411 c
-175.849 0.742 175.706 1.183 175.698 1.735 c
-h
-176.344 1.793 m
-176.344 1.389 176.422 1.073 176.58 0.838 c
-176.745 0.603 176.965 0.485 177.241 0.485 c
-177.807 0.485 178.101 0.897 178.123 1.72 c
-178.123 2.175 l
-178.123 2.576 178.039 2.896 177.873 3.131 c
-177.715 3.373 177.499 3.499 177.227 3.499 c
-176.962 3.499 176.745 3.373 176.58 3.131 c
-176.422 2.896 176.344 2.576 176.344 2.175 c
-h
-181.548 1.014 m
-181.548 1.161 181.493 1.282 181.387 1.382 c
-181.276 1.477 181.071 1.595 180.769 1.735 c
-180.423 1.881 180.181 2.003 180.034 2.102 c
-179.887 2.209 179.777 2.326 179.71 2.454 c
-179.641 2.58 179.608 2.738 179.608 2.925 c
-179.608 3.248 179.725 3.516 179.961 3.734 c
-180.196 3.946 180.497 4.056 180.872 4.056 c
-181.254 4.056 181.563 3.943 181.798 3.719 c
-182.033 3.491 182.151 3.204 182.151 2.851 c
-181.504 2.851 l
-181.504 3.028 181.445 3.179 181.328 3.308 c
-181.21 3.432 181.056 3.499 180.872 3.499 c
-180.674 3.499 180.523 3.443 180.416 3.337 c
-180.306 3.237 180.254 3.105 180.254 2.94 c
-180.254 2.811 180.292 2.705 180.372 2.616 c
-180.45 2.535 180.641 2.433 180.946 2.308 c
-181.423 2.12 181.754 1.933 181.931 1.749 c
-182.106 1.573 182.195 1.345 182.195 1.073 c
-182.195 0.721 182.07 0.441 181.827 0.235 c
-181.592 0.029 181.276 -0.073 180.886 -0.073 c
-180.464 -0.073 180.126 0.044 179.872 0.279 c
-179.615 0.522 179.49 0.827 179.49 1.191 c
-180.137 1.191 l
-180.144 0.962 180.215 0.786 180.343 0.661 c
-180.468 0.544 180.651 0.485 180.886 0.485 c
-181.1 0.485 181.262 0.532 181.372 0.632 c
-181.489 0.727 181.548 0.856 181.548 1.014 c
-183.739 0 -0.647 3.983 re
-183.782 5.027 m
-183.782 4.917 183.753 4.825 183.694 4.748 c
-183.635 4.678 183.54 4.644 183.415 4.644 c
-183.297 4.644 183.201 4.678 183.136 4.748 c
-183.076 4.825 183.047 4.917 183.047 5.027 c
-183.047 5.145 183.076 5.236 183.136 5.307 c
-183.201 5.384 183.297 5.424 183.415 5.424 c
-183.54 5.424 183.635 5.384 183.694 5.307 c
-183.753 5.226 183.782 5.134 183.782 5.027 c
-185.605 4.939 m
-185.605 3.983 l
-186.208 3.983 l
-186.208 3.454 l
-185.605 3.454 l
-185.605 0.985 l
-185.605 0.827 185.627 0.709 185.678 0.632 c
-185.738 0.551 185.825 0.515 185.943 0.515 c
-186.031 0.515 186.12 0.529 186.208 0.559 c
-186.208 0 l
-186.06 -0.048 185.906 -0.073 185.752 -0.073 c
-185.495 -0.073 185.3 0.018 185.164 0.206 c
-185.025 0.389 184.958 0.65 184.958 0.985 c
-184.958 3.454 l
-184.356 3.454 l
-184.356 3.983 l
-184.958 3.983 l
-184.958 4.939 l
-h
-186.766 2.175 m
-186.766 2.753 186.902 3.208 187.178 3.543 c
-187.461 3.884 187.832 4.056 188.295 4.056 c
-188.755 4.056 189.122 3.888 189.397 3.557 c
-189.68 3.233 189.827 2.786 189.838 2.219 c
-189.838 1.793 l
-189.838 1.224 189.695 0.768 189.412 0.426 c
-189.137 0.092 188.769 -0.073 188.31 -0.073 c
-187.847 -0.073 187.475 0.088 187.192 0.411 c
-186.916 0.742 186.773 1.183 186.766 1.735 c
-h
-187.413 1.793 m
-187.413 1.389 187.49 1.073 187.648 0.838 c
-187.814 0.603 188.034 0.485 188.31 0.485 c
-188.876 0.485 189.17 0.897 189.191 1.72 c
-189.191 2.175 l
-189.191 2.576 189.107 2.896 188.942 3.131 c
-188.784 3.373 188.567 3.499 188.295 3.499 c
-188.03 3.499 187.814 3.373 187.648 3.131 c
-187.49 2.896 187.413 2.576 187.413 2.175 c
-h
-192.323 3.366 m
-192.234 3.385 192.135 3.395 192.028 3.395 c
-191.694 3.395 191.459 3.212 191.323 2.851 c
-191.323 0 l
-190.677 0 l
-190.677 3.983 l
-191.308 3.983 l
-191.323 3.572 l
-191.5 3.896 191.742 4.056 192.058 4.056 c
-192.165 4.056 192.252 4.035 192.323 3.998 c
-h
-194.13 1.088 m
-194.851 3.983 l
-195.541 3.983 l
-194.248 -0.559 l
-194.149 -0.9 194.006 -1.161 193.821 -1.338 c
-193.646 -1.514 193.443 -1.602 193.219 -1.602 c
-193.131 -1.602 193.017 -1.58 192.881 -1.544 c
-192.881 -1 l
-193.028 -1.014 l
-193.212 -1.014 193.359 -0.97 193.469 -0.882 c
-193.576 -0.794 193.663 -0.636 193.734 -0.412 c
-193.852 0.029 l
-192.69 3.983 l
-193.395 3.983 l
-h
-195.821 0.353 m
-195.821 0.47 195.853 0.566 195.924 0.646 c
-195.99 0.723 196.092 0.764 196.233 0.764 c
-196.379 0.764 196.486 0.723 196.556 0.646 c
-196.633 0.566 196.674 0.47 196.674 0.353 c
-196.674 0.243 196.633 0.151 196.556 0.073 c
-196.486 -0.004 196.379 -0.044 196.233 -0.044 c
-196.092 -0.044 195.99 -0.004 195.924 0.073 c
-195.853 0.151 195.821 0.243 195.821 0.353 c
-f
-Q
-0.793 0.801 0.129 0.016 k
-287.665 442.028 234.667 -21.457 re
-f
-0 0 0 0 k
-q 1 0 0 1 400.8622 432.0517 cm
-0 0 m
-0.882 0 l
-1.213 0 1.459 0.118 1.617 0.353 c
-1.771 0.588 1.852 0.897 1.852 1.278 c
-1.852 1.661 1.768 1.955 1.602 2.161 c
-1.444 2.367 1.228 2.469 0.955 2.469 c
-0.709 2.469 0.503 2.37 0.338 2.175 c
-0.18 1.976 0.103 1.727 0.103 1.426 c
--1.72 1.426 l
--1.72 1.914 -1.61 2.352 -1.382 2.734 c
--1.158 3.123 -0.846 3.428 -0.441 3.645 c
--0.029 3.869 0.419 3.983 0.912 3.983 c
-1.771 3.983 2.447 3.74 2.94 3.263 c
-3.428 2.793 3.675 2.138 3.675 1.309 c
-3.675 0.885 3.561 0.492 3.337 0.133 c
-3.12 -0.231 2.83 -0.511 2.469 -0.706 c
-2.911 -0.893 3.237 -1.176 3.454 -1.558 c
-3.667 -1.933 3.777 -2.374 3.777 -2.882 c
-3.777 -3.715 3.513 -4.388 2.984 -4.895 c
-2.454 -5.394 1.756 -5.644 0.897 -5.644 c
-0.092 -5.644 -0.559 -5.402 -1.058 -4.91 c
--1.558 -4.41 -1.808 -3.755 -1.808 -2.94 c
-0.014 -2.94 l
-0.014 -3.285 0.103 -3.568 0.279 -3.792 c
-0.455 -4.021 0.68 -4.131 0.955 -4.131 c
-1.268 -4.131 1.514 -4.021 1.691 -3.792 c
-1.874 -3.557 1.97 -3.245 1.97 -2.851 c
-1.97 -1.933 1.61 -1.47 0.897 -1.47 c
-0 -1.47 l
-h
-5.427 -4.586 m
-5.427 -4.293 5.523 -4.054 5.722 -3.866 c
-5.916 -3.682 6.169 -3.587 6.485 -3.587 c
-6.787 -3.587 7.037 -3.682 7.235 -3.866 c
-7.441 -4.054 7.544 -4.293 7.544 -4.586 c
-7.544 -4.891 7.441 -5.137 7.235 -5.321 c
-7.037 -5.498 6.787 -5.586 6.485 -5.586 c
-6.181 -5.586 5.928 -5.494 5.722 -5.307 c
-5.523 -5.122 5.427 -4.881 5.427 -4.586 c
-12.432 -5.512 m
-12.432 3.851 l
-14.915 3.851 l
-16.004 3.851 16.87 3.502 17.518 2.807 c
-18.171 2.109 18.506 1.161 18.517 -0.044 c
-18.517 -1.558 l
-18.517 -2.793 18.194 -3.763 17.547 -4.469 c
-16.9 -5.167 16.004 -5.512 14.857 -5.512 c
-h
-14.327 2.278 m
-14.327 -3.94 l
-14.886 -3.94 l
-15.522 -3.94 15.967 -3.774 16.224 -3.439 c
-16.477 -3.109 16.61 -2.535 16.621 -1.72 c
-16.621 -0.103 l
-16.621 0.779 16.496 1.389 16.253 1.735 c
-16.018 2.076 15.607 2.256 15.019 2.278 c
-h
-24.415 -3.601 m
-21.843 -3.601 l
-21.343 -5.512 l
-19.344 -5.512 l
-22.269 3.851 l
-23.989 3.851 l
-26.944 -5.512 l
-24.915 -5.512 l
-h
-22.254 -2.014 m
-24.003 -2.014 l
-23.121 1.323 l
-h
-29.886 -0.353 m
-31.297 3.851 l
-33.356 3.851 l
-30.842 -2.117 l
-30.842 -5.512 l
-28.932 -5.512 l
-28.932 -2.117 l
-26.418 3.851 l
-28.475 3.851 l
-h
-36.604 -2.263 -3.146 1.529 re
-44.406 2.278 m
-42.083 2.278 l
-42.083 -5.512 l
-40.187 -5.512 l
-40.187 2.278 l
-37.909 2.278 l
-37.909 3.851 l
-44.406 3.851 l
-h
-52.105 -1.675 m
-52.105 -2.932 51.803 -3.906 51.207 -4.601 c
-50.609 -5.299 49.786 -5.644 48.738 -5.644 c
-47.687 -5.644 46.86 -5.303 46.254 -4.615 c
-45.655 -3.921 45.35 -2.955 45.343 -1.72 c
-45.343 -0.118 l
-45.343 1.165 45.64 2.168 46.239 2.896 c
-46.835 3.62 47.665 3.983 48.724 3.983 c
-49.759 3.983 50.579 3.623 51.178 2.911 c
-51.785 2.205 52.093 1.209 52.105 -0.073 c
-h
-50.208 -0.103 m
-50.208 0.738 50.083 1.367 49.84 1.779 c
-49.605 2.19 49.231 2.396 48.724 2.396 c
-48.224 2.396 47.849 2.194 47.606 1.793 c
-47.371 1.4 47.247 0.801 47.239 0 c
-47.239 -1.675 l
-47.239 -2.492 47.361 -3.094 47.606 -3.484 c
-47.849 -3.877 48.227 -4.072 48.738 -4.072 c
-49.227 -4.072 49.591 -3.881 49.826 -3.499 c
-50.069 -3.117 50.197 -2.529 50.208 -1.735 c
-h
-56.871 -2.263 -3.146 1.529 re
-58.601 -5.512 m
-58.601 3.851 l
-61.085 3.851 l
-62.173 3.851 63.041 3.502 63.687 2.807 c
-64.341 2.109 64.676 1.161 64.687 -0.044 c
-64.687 -1.558 l
-64.687 -2.793 64.364 -3.763 63.716 -4.469 c
-63.07 -5.167 62.173 -5.512 61.027 -5.512 c
-h
-60.497 2.278 m
-60.497 -3.94 l
-61.056 -3.94 l
-61.692 -3.94 62.137 -3.774 62.394 -3.439 c
-62.648 -3.109 62.779 -2.535 62.791 -1.72 c
-62.791 -0.103 l
-62.791 0.779 62.665 1.389 62.423 1.735 c
-62.188 2.076 61.776 2.256 61.189 2.278 c
-h
-70.585 -3.601 m
-68.013 -3.601 l
-67.512 -5.512 l
-65.514 -5.512 l
-68.439 3.851 l
-70.158 3.851 l
-73.113 -5.512 l
-71.084 -5.512 l
-h
-68.424 -2.014 m
-70.174 -2.014 l
-69.291 1.323 l
-h
-76.057 -0.353 m
-77.468 3.851 l
-79.525 3.851 l
-77.012 -2.117 l
-77.012 -5.512 l
-75.101 -5.512 l
-75.101 -2.117 l
-72.587 3.851 l
-74.646 3.851 l
-h
-89.796 -2.028 m
-90.679 3.851 l
-92.56 3.851 l
-90.884 -5.512 l
-88.988 -5.512 l
-87.9 0 l
-86.827 -5.512 l
-84.916 -5.512 l
-83.24 3.851 l
-85.122 3.851 l
-86.004 -2.028 l
-87.107 3.851 l
-88.694 3.851 l
-h
-100.472 -1.675 m
-100.472 -2.932 100.17 -3.906 99.575 -4.601 c
-98.976 -5.299 98.153 -5.644 97.106 -5.644 c
-96.054 -5.644 95.227 -5.303 94.621 -4.615 c
-94.022 -3.921 93.717 -2.955 93.71 -1.72 c
-93.71 -0.118 l
-93.71 1.165 94.008 2.168 94.606 2.896 c
-95.202 3.62 96.033 3.983 97.091 3.983 c
-98.127 3.983 98.947 3.623 99.545 2.911 c
-100.152 2.205 100.461 1.209 100.472 -0.073 c
-h
-98.575 -0.103 m
-98.575 0.738 98.45 1.367 98.208 1.779 c
-97.972 2.19 97.598 2.396 97.091 2.396 c
-96.591 2.396 96.216 2.194 95.973 1.793 c
-95.738 1.4 95.614 0.801 95.606 0 c
-95.606 -1.675 l
-95.606 -2.492 95.728 -3.094 95.973 -3.484 c
-96.216 -3.877 96.595 -4.072 97.106 -4.072 c
-97.594 -4.072 97.958 -3.881 98.193 -3.499 c
-98.436 -3.117 98.564 -2.529 98.575 -1.735 c
-h
-104.885 -2.087 m
-103.944 -2.087 l
-103.944 -5.512 l
-102.063 -5.512 l
-102.063 3.851 l
-105.076 3.851 l
-106.024 3.851 106.755 3.605 107.266 3.116 c
-107.784 2.624 108.045 1.929 108.045 1.029 c
-108.045 -0.217 107.593 -1.088 106.693 -1.588 c
-108.324 -5.424 l
-108.324 -5.512 l
-106.296 -5.512 l
-h
-103.944 -0.515 m
-105.018 -0.515 l
-105.4 -0.515 105.683 -0.393 105.87 -0.147 c
-106.053 0.106 106.149 0.445 106.149 0.867 c
-106.149 1.808 105.785 2.278 105.062 2.278 c
-103.944 2.278 l
-h
-112.205 -1.897 m
-111.455 -2.837 l
-111.455 -5.512 l
-109.559 -5.512 l
-109.559 3.851 l
-111.455 3.851 l
-111.455 -0.235 l
-112.058 0.779 l
-113.793 3.851 l
-116.115 3.851 l
-113.425 -0.264 l
-116.159 -5.512 l
-113.91 -5.512 l
-h
-f
-Q
-0.113 0.082 0.09 0 k
-287.665 411.726 234.667 -12.895 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 292.8568 404.8916 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.647 -0.243 -0.775 -0.367 -0.882 c
--0.496 -0.992 -0.658 -1.081 -0.852 -1.147 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.162 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.927 c
--3.127 -0.819 -3.23 -0.691 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.214 -3.484 -0.015 c
--2.66 0.132 l
--2.642 0.033 -2.616 -0.059 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.368 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.683 -1.992 0.69 -1.999 0.69 c
--2.167 0.727 -2.329 0.771 -2.484 0.823 c
--2.642 0.881 -2.786 0.959 -2.91 1.058 c
--3.039 1.153 -3.142 1.278 -3.219 1.425 c
--3.289 1.573 -3.322 1.756 -3.322 1.984 c
--3.322 2.179 -3.289 2.344 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.836 c
--2.8 2.932 -2.645 3.002 -2.469 3.042 c
--2.293 3.09 -2.102 3.119 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.119 -1.128 3.09 -0.97 3.042 c
--0.804 2.992 -0.669 2.917 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.202 2.344 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.252 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.352 c
--1.294 1.311 -1.117 1.264 -0.941 1.205 c
--0.756 1.147 -0.595 1.066 -0.455 0.97 c
--0.32 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.454 c
--2.26 2.425 -2.319 2.385 -2.366 2.337 c
--2.406 2.296 -2.436 2.248 -2.454 2.19 c
--2.477 2.131 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.778 c
--2.41 1.72 -2.373 1.668 -2.322 1.631 c
--2.263 1.591 -2.201 1.558 -2.131 1.529 c
--2.065 1.5 -1.984 1.469 -1.896 1.44 c
-h
--0.837 -0.015 m
--0.837 0.091 -0.86 0.176 -0.897 0.235 c
--0.926 0.301 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.529 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.53 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.015 c
-6.402 -2.66 m
-6.184 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.519 -2.485 5.402 -2.396 c
-5.284 -2.315 5.185 -2.22 5.108 -2.103 c
-5.039 -1.985 4.991 -1.856 4.961 -1.72 c
-5.858 -1.617 l
-5.895 -1.753 5.964 -1.86 6.064 -1.941 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.058 6.681 -2.028 c
-6.758 -1.999 6.828 -1.945 6.887 -1.867 c
-6.945 -1.797 6.99 -1.706 7.019 -1.588 c
-7.056 -1.47 7.078 -1.323 7.078 -1.147 c
-7.078 -0.956 l
-7.078 -0.889 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.073 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.215 -0.897 5.108 -0.75 c
-5.009 -0.595 4.935 -0.412 4.888 -0.206 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.771 4.836 1.018 4.888 1.234 c
-4.946 1.448 5.027 1.631 5.137 1.778 c
-5.244 1.933 5.376 2.051 5.534 2.131 c
-5.689 2.219 5.876 2.263 6.093 2.263 c
-6.188 2.263 6.288 2.252 6.387 2.234 c
-6.483 2.212 6.571 2.179 6.652 2.131 c
-6.739 2.08 6.817 2.017 6.887 1.94 c
-6.964 1.859 7.026 1.768 7.078 1.66 c
-7.092 1.66 l
-7.092 1.808 l
-7.1 1.866 7.107 1.918 7.107 1.97 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.151 2.219 c
-8.004 2.219 l
-7.993 2.138 7.982 2.028 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.162 l
-7.975 -1.415 7.938 -1.635 7.871 -1.823 c
-7.802 -2.007 7.699 -2.161 7.563 -2.278 c
-7.423 -2.404 7.258 -2.499 7.063 -2.558 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.529 m
-7.092 0.742 7.067 0.918 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.5 6.729 1.558 6.652 1.587 c
-6.571 1.624 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.62 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.367 c
-5.88 1.278 5.835 1.161 5.799 1.014 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.339 c
-6.049 -0.515 6.211 -0.603 6.417 -0.603 c
-6.483 -0.603 6.556 -0.588 6.637 -0.559 c
-6.725 -0.522 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.177 7.019 -0.029 c
-7.067 0.118 7.092 0.301 7.092 0.529 c
-11.036 -0.647 m
-12.168 -0.647 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.647 l
-10.124 -0.647 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.219 l
-11.036 2.219 l
-h
-10.124 3.513 0.912 -0.676 re
-10.124 2.836 m
-13.597 1.602 m
-13.053 1.602 l
-13.053 2.219 l
-13.641 2.219 l
-13.92 3.116 l
-14.494 3.116 l
-14.494 2.219 l
-15.728 2.219 l
-15.728 1.602 l
-14.494 1.602 l
-14.494 -0.103 l
-14.494 -0.324 l
-14.501 -0.393 14.523 -0.456 14.552 -0.515 c
-14.589 -0.566 14.645 -0.611 14.714 -0.647 c
-14.791 -0.676 14.905 -0.691 15.052 -0.691 c
-15.188 -0.691 15.324 -0.688 15.464 -0.676 c
-15.599 -0.658 15.732 -0.632 15.861 -0.603 c
-15.861 -1.205 l
-15.78 -1.216 15.703 -1.231 15.626 -1.249 c
-15.545 -1.261 15.468 -1.268 15.391 -1.279 c
-15.31 -1.286 15.221 -1.294 15.125 -1.294 c
-15.038 -1.301 14.938 -1.309 14.832 -1.309 c
-14.645 -1.309 14.483 -1.294 14.346 -1.264 c
-14.218 -1.228 14.104 -1.183 14.009 -1.132 c
-13.92 -1.085 13.847 -1.025 13.788 -0.956 c
-13.729 -0.879 13.685 -0.802 13.656 -0.721 c
-13.627 -0.632 13.604 -0.544 13.597 -0.456 c
-13.586 -0.36 13.582 -0.264 13.582 -0.177 c
-h
-24.22 -0.25 m
-24.22 -0.419 24.18 -0.57 24.103 -0.706 c
-24.033 -0.834 23.931 -0.948 23.794 -1.044 c
-23.666 -1.132 23.504 -1.202 23.31 -1.249 c
-23.121 -1.297 22.905 -1.323 22.662 -1.323 c
-22.435 -1.323 22.236 -1.309 22.06 -1.279 c
-21.883 -1.249 21.725 -1.202 21.59 -1.132 c
-21.45 -1.055 21.34 -0.956 21.251 -0.838 c
-21.163 -0.721 21.093 -0.574 21.045 -0.397 c
-21.854 -0.279 l
-21.872 -0.379 21.902 -0.456 21.942 -0.515 c
-21.99 -0.574 22.049 -0.617 22.119 -0.647 c
-22.185 -0.676 22.265 -0.702 22.354 -0.721 c
-22.442 -0.732 22.545 -0.735 22.662 -0.735 c
-22.758 -0.735 22.853 -0.732 22.942 -0.721 c
-23.03 -0.702 23.107 -0.676 23.177 -0.647 c
-23.243 -0.617 23.295 -0.58 23.324 -0.53 c
-23.36 -0.482 23.383 -0.419 23.383 -0.339 c
-23.383 -0.243 23.353 -0.169 23.295 -0.118 c
-23.243 -0.07 23.177 -0.029 23.089 0 c
-23.001 0.037 22.89 0.066 22.766 0.088 c
-22.647 0.118 22.516 0.147 22.369 0.176 c
-22.229 0.213 22.09 0.253 21.942 0.293 c
-21.803 0.341 21.677 0.405 21.56 0.484 c
-21.45 0.562 21.361 0.661 21.296 0.779 c
-21.226 0.897 21.193 1.047 21.193 1.234 c
-21.193 1.389 21.222 1.532 21.28 1.66 c
-21.347 1.797 21.442 1.911 21.56 1.999 c
-21.685 2.087 21.843 2.153 22.03 2.205 c
-22.215 2.252 22.427 2.278 22.662 2.278 c
-22.846 2.278 23.023 2.256 23.192 2.219 c
-23.357 2.19 23.504 2.135 23.632 2.057 c
-23.757 1.988 23.868 1.889 23.956 1.764 c
-24.044 1.646 24.103 1.502 24.133 1.338 c
-23.339 1.264 l
-23.316 1.341 23.287 1.404 23.25 1.455 c
-23.21 1.514 23.162 1.558 23.104 1.587 c
-23.052 1.624 22.99 1.65 22.913 1.66 c
-22.832 1.668 22.751 1.675 22.662 1.675 c
-22.446 1.675 22.284 1.646 22.177 1.587 c
-22.067 1.536 22.016 1.448 22.016 1.323 c
-22.016 1.242 22.034 1.18 22.074 1.132 c
-22.122 1.08 22.185 1.043 22.265 1.014 c
-22.354 0.985 22.45 0.955 22.56 0.926 c
-22.666 0.904 22.788 0.881 22.927 0.852 c
-23.081 0.823 23.239 0.783 23.397 0.735 c
-23.551 0.683 23.692 0.621 23.809 0.544 c
-23.927 0.463 24.022 0.36 24.103 0.235 c
-24.18 0.106 24.22 -0.056 24.22 -0.25 c
-25.783 1.602 m
-25.238 1.602 l
-25.238 2.219 l
-25.826 2.219 l
-26.106 3.116 l
-26.679 3.116 l
-26.679 2.219 l
-27.914 2.219 l
-27.914 1.602 l
-26.679 1.602 l
-26.679 -0.103 l
-26.679 -0.324 l
-26.686 -0.393 26.709 -0.456 26.738 -0.515 c
-26.774 -0.566 26.83 -0.611 26.9 -0.647 c
-26.977 -0.676 27.09 -0.691 27.237 -0.691 c
-27.374 -0.691 27.509 -0.688 27.649 -0.676 c
-27.785 -0.658 27.917 -0.632 28.046 -0.603 c
-28.046 -1.205 l
-27.965 -1.216 27.888 -1.231 27.811 -1.249 c
-27.73 -1.261 27.653 -1.268 27.576 -1.279 c
-27.495 -1.286 27.407 -1.294 27.312 -1.294 c
-27.223 -1.301 27.123 -1.309 27.017 -1.309 c
-26.83 -1.309 26.668 -1.294 26.532 -1.264 c
-26.404 -1.228 26.29 -1.183 26.194 -1.132 c
-26.106 -1.085 26.032 -1.025 25.974 -0.956 c
-25.915 -0.879 25.87 -0.802 25.841 -0.721 c
-25.812 -0.632 25.789 -0.544 25.783 -0.456 c
-25.772 -0.36 25.768 -0.264 25.768 -0.177 c
-h
-30.196 -1.323 m
-30.027 -1.323 29.876 -1.301 29.741 -1.264 c
-29.612 -1.216 29.498 -1.147 29.402 -1.058 c
-29.313 -0.97 29.244 -0.864 29.196 -0.735 c
-29.145 -0.599 29.122 -0.449 29.122 -0.279 c
-29.122 -0.073 29.155 0.095 29.226 0.235 c
-29.292 0.382 29.388 0.492 29.505 0.573 c
-29.63 0.661 29.773 0.723 29.931 0.764 c
-30.096 0.801 30.273 0.827 30.46 0.837 c
-31.181 0.852 l
-31.181 1.029 l
-31.181 1.147 31.17 1.249 31.152 1.338 c
-31.129 1.425 31.096 1.492 31.048 1.543 c
-31.008 1.602 30.96 1.639 30.901 1.66 c
-30.842 1.679 30.776 1.69 30.71 1.69 c
-30.641 1.69 30.578 1.679 30.519 1.66 c
-30.468 1.65 30.42 1.624 30.372 1.587 c
-30.331 1.558 30.298 1.506 30.269 1.44 c
-30.248 1.382 30.233 1.301 30.225 1.205 c
-29.284 1.249 l
-29.313 1.396 29.358 1.532 29.417 1.66 c
-29.483 1.785 29.579 1.896 29.696 1.984 c
-29.814 2.08 29.953 2.153 30.122 2.205 c
-30.298 2.252 30.504 2.278 30.74 2.278 c
-31.181 2.278 31.511 2.168 31.74 1.955 c
-31.975 1.749 32.092 1.44 32.092 1.029 c
-32.092 -0.235 l
-32.092 -0.456 l
-32.099 -0.515 32.114 -0.57 32.136 -0.617 c
-32.154 -0.658 32.184 -0.691 32.224 -0.721 c
-32.261 -0.742 32.313 -0.75 32.371 -0.75 c
-32.438 -0.75 32.507 -0.746 32.577 -0.735 c
-32.577 -1.22 l
-32.519 -1.231 32.463 -1.242 32.415 -1.249 c
-32.375 -1.261 32.334 -1.268 32.297 -1.279 c
-32.257 -1.286 32.213 -1.294 32.166 -1.294 c
-32.114 -1.301 32.055 -1.309 31.989 -1.309 c
-31.761 -1.309 31.596 -1.257 31.489 -1.147 c
-31.379 -1.029 31.316 -0.864 31.298 -0.647 c
-31.283 -0.647 l
-31.214 -0.757 31.144 -0.852 31.077 -0.941 c
-31.008 -1.022 30.931 -1.087 30.842 -1.147 c
-30.755 -1.205 30.655 -1.249 30.549 -1.279 c
-30.449 -1.309 30.331 -1.323 30.196 -1.323 c
-31.181 0.353 m
-30.755 0.338 l
-30.655 0.338 30.564 0.33 30.475 0.324 c
-30.394 0.312 30.328 0.287 30.269 0.249 c
-30.211 0.209 30.159 0.151 30.122 0.073 c
-30.082 0.004 30.063 -0.088 30.063 -0.206 c
-30.063 -0.375 30.096 -0.497 30.167 -0.574 c
-30.233 -0.654 30.331 -0.691 30.46 -0.691 c
-30.567 -0.691 30.666 -0.669 30.755 -0.617 c
-30.85 -0.57 30.931 -0.507 30.99 -0.426 c
-31.056 -0.349 31.107 -0.262 31.137 -0.162 c
-31.166 -0.056 31.181 0.058 31.181 0.176 c
-h
-33.903 1.602 m
-33.36 1.602 l
-33.36 2.219 l
-33.948 2.219 l
-34.227 3.116 l
-34.8 3.116 l
-34.8 2.219 l
-36.035 2.219 l
-36.035 1.602 l
-34.8 1.602 l
-34.8 -0.103 l
-34.8 -0.324 l
-34.807 -0.393 34.83 -0.456 34.859 -0.515 c
-34.896 -0.566 34.951 -0.611 35.021 -0.647 c
-35.098 -0.676 35.212 -0.691 35.359 -0.691 c
-35.495 -0.691 35.631 -0.688 35.771 -0.676 c
-35.906 -0.658 36.039 -0.632 36.168 -0.603 c
-36.168 -1.205 l
-36.087 -1.216 36.01 -1.231 35.932 -1.249 c
-35.852 -1.261 35.774 -1.268 35.697 -1.279 c
-35.616 -1.286 35.528 -1.294 35.432 -1.294 c
-35.345 -1.301 35.245 -1.309 35.138 -1.309 c
-34.951 -1.309 34.789 -1.294 34.653 -1.264 c
-34.525 -1.228 34.41 -1.183 34.315 -1.132 c
-34.227 -1.085 34.154 -1.025 34.094 -0.956 c
-34.036 -0.879 33.992 -0.802 33.963 -0.721 c
-33.933 -0.632 33.911 -0.544 33.903 -0.456 c
-33.893 -0.36 33.889 -0.264 33.889 -0.177 c
-h
-38.248 2.219 m
-38.248 0.264 l
-38.248 0.125 38.254 0 38.277 -0.118 c
-38.295 -0.228 38.328 -0.32 38.379 -0.397 c
-38.427 -0.478 38.486 -0.54 38.556 -0.588 c
-38.622 -0.628 38.707 -0.647 38.806 -0.647 c
-38.894 -0.647 38.975 -0.628 39.056 -0.588 c
-39.144 -0.54 39.218 -0.47 39.276 -0.382 c
-39.335 -0.287 39.379 -0.177 39.409 -0.059 c
-39.445 0.066 39.467 0.206 39.467 0.353 c
-39.467 2.219 l
-40.364 2.219 l
-40.364 -0.485 l
-40.364 -0.721 l
-40.371 -0.802 40.378 -0.879 40.378 -0.956 c
-40.378 -1.147 l
-40.386 -1.199 40.393 -1.235 40.393 -1.264 c
-39.541 -1.264 l
-39.53 -1.235 39.519 -1.199 39.511 -1.147 c
-39.511 -0.956 l
-39.511 -0.889 39.504 -0.819 39.497 -0.75 c
-39.497 -0.574 l
-39.482 -0.574 l
-39.364 -0.838 39.21 -1.029 39.027 -1.147 c
-38.85 -1.264 38.647 -1.323 38.424 -1.323 c
-38.218 -1.323 38.045 -1.286 37.909 -1.22 c
-37.77 -1.154 37.66 -1.058 37.571 -0.941 c
-37.49 -0.823 37.431 -0.688 37.394 -0.53 c
-37.365 -0.364 37.35 -0.187 37.35 0 c
-37.35 2.219 l
-h
-44.527 -0.25 m
-44.527 -0.419 44.487 -0.57 44.409 -0.706 c
-44.34 -0.834 44.237 -0.948 44.101 -1.044 c
-43.972 -1.132 43.811 -1.202 43.616 -1.249 c
-43.428 -1.297 43.212 -1.323 42.969 -1.323 c
-42.742 -1.323 42.543 -1.309 42.366 -1.279 c
-42.19 -1.249 42.032 -1.202 41.896 -1.132 c
-41.757 -1.055 41.647 -0.956 41.558 -0.838 c
-41.47 -0.721 41.4 -0.574 41.352 -0.397 c
-42.161 -0.279 l
-42.179 -0.379 42.208 -0.456 42.249 -0.515 c
-42.297 -0.574 42.356 -0.617 42.425 -0.647 c
-42.491 -0.676 42.572 -0.702 42.661 -0.721 c
-42.749 -0.732 42.852 -0.735 42.969 -0.735 c
-43.065 -0.735 43.16 -0.732 43.249 -0.721 c
-43.337 -0.702 43.414 -0.676 43.484 -0.647 c
-43.55 -0.617 43.601 -0.58 43.631 -0.53 c
-43.667 -0.482 43.69 -0.419 43.69 -0.339 c
-43.69 -0.243 43.66 -0.169 43.601 -0.118 c
-43.55 -0.07 43.484 -0.029 43.395 0 c
-43.307 0.037 43.197 0.066 43.072 0.088 c
-42.954 0.118 42.822 0.147 42.676 0.176 c
-42.536 0.213 42.396 0.253 42.249 0.293 c
-42.109 0.341 41.984 0.405 41.867 0.484 c
-41.757 0.562 41.668 0.661 41.602 0.779 c
-41.533 0.897 41.5 1.047 41.5 1.234 c
-41.5 1.389 41.529 1.532 41.587 1.66 c
-41.654 1.797 41.749 1.911 41.867 1.999 c
-41.992 2.087 42.15 2.153 42.337 2.205 c
-42.521 2.252 42.734 2.278 42.969 2.278 c
-43.153 2.278 43.33 2.256 43.499 2.219 c
-43.663 2.19 43.811 2.135 43.939 2.057 c
-44.064 1.988 44.174 1.889 44.263 1.764 c
-44.351 1.646 44.409 1.502 44.44 1.338 c
-43.646 1.264 l
-43.623 1.341 43.594 1.404 43.557 1.455 c
-43.517 1.514 43.469 1.558 43.41 1.587 c
-43.359 1.624 43.297 1.65 43.219 1.66 c
-43.139 1.668 43.058 1.675 42.969 1.675 c
-42.753 1.675 42.591 1.646 42.484 1.587 c
-42.374 1.536 42.323 1.448 42.323 1.323 c
-42.323 1.242 42.341 1.18 42.381 1.132 c
-42.429 1.08 42.491 1.043 42.572 1.014 c
-42.661 0.985 42.757 0.955 42.867 0.926 c
-42.973 0.904 43.094 0.881 43.234 0.852 c
-43.388 0.823 43.546 0.783 43.704 0.735 c
-43.858 0.683 43.998 0.621 44.116 0.544 c
-44.234 0.463 44.329 0.36 44.409 0.235 c
-44.487 0.106 44.527 -0.056 44.527 -0.25 c
-f
-Q
-q 1 0 0 1 310.8155 390.0891 cm
-0 0 m
-0 0.265 -0.073 0.464 -0.22 0.603 c
--0.36 0.75 -0.617 0.89 -0.999 1.029 c
--1.374 1.166 -1.661 1.309 -1.866 1.455 c
--2.065 1.603 -2.212 1.768 -2.308 1.956 c
--2.406 2.151 -2.454 2.371 -2.454 2.617 c
--2.454 3.036 -2.315 3.385 -2.028 3.66 c
--1.745 3.932 -1.378 4.072 -0.926 4.072 c
--0.613 4.072 -0.334 3.998 -0.088 3.851 c
-0.154 3.712 0.341 3.517 0.47 3.263 c
-0.607 3.017 0.676 2.749 0.676 2.455 c
-0 2.455 l
-0 2.786 -0.081 3.043 -0.235 3.219 c
--0.393 3.404 -0.625 3.499 -0.926 3.499 c
--1.191 3.499 -1.404 3.418 -1.558 3.263 c
--1.705 3.117 -1.778 2.903 -1.778 2.631 c
--1.778 2.404 -1.701 2.213 -1.543 2.058 c
--1.378 1.912 -1.124 1.771 -0.779 1.646 c
--0.261 1.478 0.11 1.268 0.339 1.015 c
-0.574 0.757 0.691 0.427 0.691 0.015 c
-0.691 -0.426 0.548 -0.779 0.264 -1.043 c
--0.022 -1.3 -0.405 -1.425 -0.881 -1.425 c
--1.198 -1.425 -1.484 -1.356 -1.749 -1.219 c
--2.013 -1.084 -2.227 -0.893 -2.381 -0.646 c
--2.528 -0.404 -2.602 -0.118 -2.602 0.206 c
--1.926 0.206 l
--1.926 -0.128 -1.833 -0.389 -1.646 -0.573 c
--1.463 -0.76 -1.205 -0.852 -0.881 -0.852 c
--0.588 -0.852 -0.367 -0.779 -0.22 -0.631 c
--0.073 -0.477 0 -0.264 0 0 c
-2.896 -1.425 m
-2.396 -1.425 2.014 -1.278 1.75 -0.984 c
-1.484 -0.69 1.353 -0.257 1.353 0.324 c
-1.353 0.794 l
-1.353 1.389 1.477 1.856 1.735 2.191 c
-1.999 2.532 2.359 2.705 2.822 2.705 c
-3.281 2.705 3.624 2.55 3.851 2.249 c
-4.087 1.956 4.208 1.492 4.218 0.867 c
-4.218 0.441 l
-1.999 0.441 l
-1.999 0.353 l
-1.999 -0.08 2.076 -0.393 2.234 -0.588 c
-2.4 -0.775 2.631 -0.866 2.926 -0.866 c
-3.12 -0.866 3.293 -0.833 3.439 -0.764 c
-3.587 -0.687 3.723 -0.569 3.851 -0.411 c
-4.189 -0.823 l
-3.903 -1.227 3.473 -1.425 2.896 -1.425 c
-2.822 2.147 m
-2.547 2.147 2.344 2.051 2.22 1.867 c
-2.091 1.68 2.018 1.389 1.999 1 c
-3.572 1 l
-3.572 1.088 l
-3.55 1.47 3.484 1.738 3.366 1.897 c
-3.248 2.062 3.065 2.147 2.822 2.147 c
-6.423 -1.425 m
-5.924 -1.425 5.542 -1.278 5.278 -0.984 c
-5.012 -0.69 4.881 -0.257 4.881 0.324 c
-4.881 0.794 l
-4.881 1.389 5.005 1.856 5.263 2.191 c
-5.527 2.532 5.887 2.705 6.35 2.705 c
-6.809 2.705 7.151 2.55 7.379 2.249 c
-7.614 1.956 7.736 1.492 7.746 0.867 c
-7.746 0.441 l
-5.527 0.441 l
-5.527 0.353 l
-5.527 -0.08 5.604 -0.393 5.762 -0.588 c
-5.928 -0.775 6.159 -0.866 6.453 -0.866 c
-6.648 -0.866 6.82 -0.833 6.967 -0.764 c
-7.115 -0.687 7.25 -0.569 7.379 -0.411 c
-7.717 -0.823 l
-7.431 -1.227 7.001 -1.425 6.423 -1.425 c
-6.35 2.147 m
-6.074 2.147 5.872 2.051 5.748 1.867 c
-5.619 1.68 5.546 1.389 5.527 1 c
-7.1 1 l
-7.1 1.088 l
-7.078 1.47 7.011 1.738 6.894 1.897 c
-6.776 2.062 6.593 2.147 6.35 2.147 c
-11.098 3.587 m
-11.098 2.631 l
-11.701 2.631 l
-11.701 2.103 l
-11.098 2.103 l
-11.098 -0.367 l
-11.098 -0.525 11.12 -0.643 11.171 -0.72 c
-11.231 -0.801 11.318 -0.837 11.436 -0.837 c
-11.524 -0.837 11.612 -0.823 11.701 -0.793 c
-11.701 -1.352 l
-11.553 -1.4 11.399 -1.425 11.245 -1.425 c
-10.988 -1.425 10.793 -1.334 10.657 -1.146 c
-10.517 -0.962 10.452 -0.702 10.452 -0.367 c
-10.452 2.103 l
-9.849 2.103 l
-9.849 2.631 l
-10.452 2.631 l
-10.452 3.587 l
-h
-13.112 2.22 m
-13.365 2.544 13.685 2.705 14.067 2.705 c
-14.772 2.705 15.129 2.234 15.14 1.294 c
-15.14 -1.352 l
-14.493 -1.352 l
-14.493 1.264 l
-14.493 1.577 14.438 1.798 14.331 1.926 c
-14.221 2.051 14.067 2.117 13.861 2.117 c
-13.704 2.117 13.556 2.062 13.421 1.956 c
-13.292 1.845 13.189 1.709 13.112 1.544 c
-13.112 -1.352 l
-12.465 -1.352 l
-12.465 4.293 l
-13.112 4.293 l
-h
-17.521 -1.425 m
-17.022 -1.425 16.64 -1.278 16.375 -0.984 c
-16.11 -0.69 15.978 -0.257 15.978 0.324 c
-15.978 0.794 l
-15.978 1.389 16.103 1.856 16.36 2.191 c
-16.625 2.532 16.985 2.705 17.448 2.705 c
-17.907 2.705 18.249 2.55 18.477 2.249 c
-18.712 1.956 18.834 1.492 18.844 0.867 c
-18.844 0.441 l
-16.625 0.441 l
-16.625 0.353 l
-16.625 -0.08 16.702 -0.393 16.86 -0.588 c
-17.026 -0.775 17.257 -0.866 17.55 -0.866 c
-17.745 -0.866 17.918 -0.833 18.065 -0.764 c
-18.213 -0.687 18.348 -0.569 18.477 -0.411 c
-18.815 -0.823 l
-18.528 -1.227 18.098 -1.425 17.521 -1.425 c
-17.448 2.147 m
-17.172 2.147 16.97 2.051 16.845 1.867 c
-16.717 1.68 16.644 1.389 16.625 1 c
-18.198 1 l
-18.198 1.088 l
-18.175 1.47 18.109 1.738 17.992 1.897 c
-17.874 2.062 17.691 2.147 17.448 2.147 c
-23.283 -0.338 m
-23.283 -0.191 23.229 -0.07 23.122 0.03 c
-23.011 0.125 22.805 0.243 22.504 0.383 c
-22.159 0.53 21.916 0.651 21.77 0.75 c
-21.622 0.857 21.512 0.975 21.446 1.103 c
-21.376 1.228 21.344 1.386 21.344 1.573 c
-21.344 1.897 21.461 2.165 21.696 2.382 c
-21.931 2.595 22.233 2.705 22.607 2.705 c
-22.99 2.705 23.298 2.591 23.534 2.367 c
-23.769 2.139 23.886 1.852 23.886 1.5 c
-23.239 1.5 l
-23.239 1.676 23.181 1.827 23.063 1.956 c
-22.946 2.08 22.791 2.147 22.607 2.147 c
-22.408 2.147 22.258 2.091 22.152 1.985 c
-22.042 1.885 21.99 1.754 21.99 1.588 c
-21.99 1.459 22.026 1.353 22.107 1.264 c
-22.185 1.183 22.375 1.081 22.681 0.956 c
-23.158 0.769 23.489 0.581 23.665 0.397 c
-23.842 0.221 23.931 -0.007 23.931 -0.278 c
-23.931 -0.631 23.805 -0.911 23.563 -1.117 c
-23.328 -1.323 23.011 -1.425 22.622 -1.425 c
-22.2 -1.425 21.861 -1.308 21.608 -1.072 c
-21.35 -0.83 21.226 -0.525 21.226 -0.161 c
-21.872 -0.161 l
-21.88 -0.389 21.949 -0.565 22.078 -0.69 c
-22.203 -0.808 22.387 -0.866 22.622 -0.866 c
-22.836 -0.866 22.996 -0.819 23.107 -0.72 c
-23.225 -0.625 23.283 -0.496 23.283 -0.338 c
-25.62 3.587 m
-25.62 2.631 l
-26.223 2.631 l
-26.223 2.103 l
-25.62 2.103 l
-25.62 -0.367 l
-25.62 -0.525 25.643 -0.643 25.694 -0.72 c
-25.753 -0.801 25.841 -0.837 25.959 -0.837 c
-26.047 -0.837 26.135 -0.823 26.223 -0.793 c
-26.223 -1.352 l
-26.076 -1.4 25.922 -1.425 25.768 -1.425 c
-25.51 -1.425 25.315 -1.334 25.18 -1.146 c
-25.04 -0.962 24.974 -0.702 24.974 -0.367 c
-24.974 2.103 l
-24.371 2.103 l
-24.371 2.631 l
-24.974 2.631 l
-24.974 3.587 l
-h
-29.031 -1.352 m
-28.991 -1.263 28.964 -1.117 28.957 -0.911 c
-28.722 -1.256 28.428 -1.425 28.075 -1.425 c
-27.711 -1.425 27.428 -1.33 27.223 -1.132 c
-27.025 -0.926 26.929 -0.639 26.929 -0.264 c
-26.929 0.136 27.065 0.456 27.341 0.691 c
-27.613 0.934 27.987 1.058 28.457 1.058 c
-28.943 1.058 l
-28.943 1.485 l
-28.943 1.721 28.887 1.885 28.781 1.985 c
-28.671 2.091 28.509 2.147 28.296 2.147 c
-28.097 2.147 27.935 2.087 27.811 1.97 c
-27.693 1.852 27.634 1.706 27.634 1.529 c
-26.988 1.529 l
-26.988 1.723 27.046 1.915 27.164 2.103 c
-27.289 2.286 27.451 2.433 27.649 2.544 c
-27.855 2.65 28.083 2.705 28.34 2.705 c
-28.741 2.705 29.045 2.602 29.251 2.396 c
-29.464 2.191 29.579 1.897 29.589 1.515 c
-29.589 -0.5 l
-29.589 -0.804 29.626 -1.069 29.707 -1.294 c
-29.707 -1.352 l
-h
-28.164 -0.837 m
-28.328 -0.837 28.48 -0.793 28.619 -0.706 c
-28.766 -0.617 28.873 -0.507 28.943 -0.367 c
-28.943 0.574 l
-28.575 0.574 l
-28.259 0.574 28.016 0.504 27.84 0.368 c
-27.663 0.239 27.576 0.052 27.576 -0.191 c
-27.576 -0.419 27.62 -0.584 27.708 -0.69 c
-27.796 -0.789 27.947 -0.837 28.164 -0.837 c
-31.441 3.587 m
-31.441 2.631 l
-32.044 2.631 l
-32.044 2.103 l
-31.441 2.103 l
-31.441 -0.367 l
-31.441 -0.525 31.463 -0.643 31.515 -0.72 c
-31.574 -0.801 31.662 -0.837 31.779 -0.837 c
-31.868 -0.837 31.956 -0.823 32.044 -0.793 c
-32.044 -1.352 l
-31.897 -1.4 31.742 -1.425 31.588 -1.425 c
-31.331 -1.425 31.137 -1.334 31 -1.146 c
-30.861 -0.962 30.794 -0.702 30.794 -0.367 c
-30.794 2.103 l
-30.192 2.103 l
-30.192 2.631 l
-30.794 2.631 l
-30.794 3.587 l
-h
-34.837 -0.999 m
-34.62 -1.286 34.308 -1.425 33.896 -1.425 c
-33.533 -1.425 33.257 -1.304 33.073 -1.058 c
-32.897 -0.804 32.801 -0.44 32.794 0.03 c
-32.794 2.631 l
-33.44 2.631 l
-33.44 0.088 l
-33.44 -0.54 33.624 -0.852 33.999 -0.852 c
-34.4 -0.852 34.676 -0.675 34.822 -0.323 c
-34.822 2.631 l
-35.469 2.631 l
-35.469 -1.352 l
-34.852 -1.352 l
-h
-38.394 -0.338 m
-38.394 -0.191 38.339 -0.07 38.233 0.03 c
-38.123 0.125 37.917 0.243 37.615 0.383 c
-37.269 0.53 37.027 0.651 36.88 0.75 c
-36.733 0.857 36.623 0.975 36.557 1.103 c
-36.487 1.228 36.454 1.386 36.454 1.573 c
-36.454 1.897 36.571 2.165 36.806 2.382 c
-37.042 2.595 37.343 2.705 37.718 2.705 c
-38.1 2.705 38.409 2.591 38.644 2.367 c
-38.879 2.139 38.996 1.852 38.996 1.5 c
-38.35 1.5 l
-38.35 1.676 38.291 1.827 38.173 1.956 c
-38.056 2.08 37.901 2.147 37.718 2.147 c
-37.52 2.147 37.369 2.091 37.263 1.985 c
-37.152 1.885 37.101 1.754 37.101 1.588 c
-37.101 1.459 37.138 1.353 37.218 1.264 c
-37.296 1.183 37.487 1.081 37.791 0.956 c
-38.269 0.769 38.599 0.581 38.776 0.397 c
-38.952 0.221 39.041 -0.007 39.041 -0.278 c
-39.041 -0.631 38.916 -0.911 38.674 -1.117 c
-38.439 -1.323 38.123 -1.425 37.733 -1.425 c
-37.31 -1.425 36.972 -1.308 36.718 -1.072 c
-36.461 -0.83 36.336 -0.525 36.336 -0.161 c
-36.983 -0.161 l
-36.99 -0.389 37.06 -0.565 37.188 -0.69 c
-37.314 -0.808 37.498 -0.866 37.733 -0.866 c
-37.946 -0.866 38.107 -0.819 38.218 -0.72 c
-38.335 -0.625 38.394 -0.496 38.394 -0.338 c
-41.466 0.823 m
-41.466 1.401 41.602 1.856 41.878 2.191 c
-42.161 2.532 42.532 2.705 42.995 2.705 c
-43.455 2.705 43.822 2.536 44.097 2.205 c
-44.38 1.881 44.527 1.434 44.538 0.867 c
-44.538 0.441 l
-44.538 -0.128 44.395 -0.584 44.112 -0.926 c
-43.837 -1.26 43.469 -1.425 43.01 -1.425 c
-42.547 -1.425 42.175 -1.263 41.892 -0.941 c
-41.616 -0.61 41.473 -0.168 41.466 0.383 c
-h
-42.113 0.441 m
-42.113 0.038 42.19 -0.278 42.348 -0.514 c
-42.514 -0.749 42.734 -0.866 43.01 -0.866 c
-43.575 -0.866 43.87 -0.455 43.891 0.368 c
-43.891 0.823 l
-43.891 1.224 43.807 1.544 43.642 1.779 c
-43.484 2.022 43.267 2.147 42.995 2.147 c
-42.73 2.147 42.514 2.022 42.348 1.779 c
-42.19 1.544 42.113 1.224 42.113 0.823 c
-h
-45.67 -1.352 m
-45.67 2.103 l
-45.14 2.103 l
-45.14 2.631 l
-45.67 2.631 l
-45.67 3.088 l
-45.67 3.487 45.766 3.801 45.965 4.028 c
-46.17 4.252 46.449 4.366 46.802 4.366 c
-46.938 4.366 47.07 4.344 47.199 4.308 c
-47.17 3.763 l
-47.07 3.782 46.971 3.793 46.875 3.793 c
-46.501 3.793 46.316 3.528 46.316 2.999 c
-46.316 2.631 l
-46.993 2.631 l
-46.993 2.103 l
-46.316 2.103 l
-46.316 -1.352 l
-h
-50.565 -0.264 m
-51.285 2.631 l
-51.976 2.631 l
-50.682 -1.911 l
-50.584 -2.252 50.44 -2.513 50.256 -2.69 c
-50.079 -2.865 49.878 -2.954 49.653 -2.954 c
-49.566 -2.954 49.452 -2.932 49.315 -2.896 c
-49.315 -2.352 l
-49.462 -2.366 l
-49.647 -2.366 49.793 -2.322 49.903 -2.234 c
-50.01 -2.146 50.098 -1.988 50.168 -1.764 c
-50.285 -1.323 l
-49.124 2.631 l
-49.83 2.631 l
-h
-52.417 0.823 m
-52.417 1.401 52.553 1.856 52.828 2.191 c
-53.111 2.532 53.483 2.705 53.946 2.705 c
-54.405 2.705 54.773 2.536 55.048 2.205 c
-55.331 1.881 55.478 1.434 55.489 0.867 c
-55.489 0.441 l
-55.489 -0.128 55.346 -0.584 55.062 -0.926 c
-54.787 -1.26 54.42 -1.425 53.961 -1.425 c
-53.497 -1.425 53.126 -1.263 52.843 -0.941 c
-52.568 -0.61 52.425 -0.168 52.417 0.383 c
-h
-53.063 0.441 m
-53.063 0.038 53.141 -0.278 53.299 -0.514 c
-53.464 -0.749 53.685 -0.866 53.961 -0.866 c
-54.526 -0.866 54.821 -0.455 54.842 0.368 c
-54.842 0.823 l
-54.842 1.224 54.758 1.544 54.592 1.779 c
-54.434 2.022 54.218 2.147 53.946 2.147 c
-53.681 2.147 53.464 2.022 53.299 1.779 c
-53.141 1.544 53.063 1.224 53.063 0.823 c
-h
-58.355 -0.999 m
-58.139 -1.286 57.826 -1.425 57.414 -1.425 c
-57.051 -1.425 56.776 -1.304 56.591 -1.058 c
-56.415 -0.804 56.319 -0.44 56.313 0.03 c
-56.313 2.631 l
-56.959 2.631 l
-56.959 0.088 l
-56.959 -0.54 57.142 -0.852 57.518 -0.852 c
-57.918 -0.852 58.194 -0.675 58.341 -0.323 c
-58.341 2.631 l
-58.987 2.631 l
-58.987 -1.352 l
-58.37 -1.352 l
-h
-61.618 2.014 m
-61.53 2.033 61.431 2.043 61.325 2.043 c
-60.99 2.043 60.755 1.86 60.619 1.5 c
-60.619 -1.352 l
-59.972 -1.352 l
-59.972 2.631 l
-60.604 2.631 l
-60.619 2.22 l
-60.795 2.544 61.038 2.705 61.354 2.705 c
-61.46 2.705 61.549 2.683 61.618 2.646 c
-h
-66.954 -0.205 m
-67.557 2.631 l
-68.204 2.631 l
-67.219 -1.352 l
-66.704 -1.352 l
-65.925 1.5 l
-65.175 -1.352 l
-64.647 -1.352 l
-63.691 2.631 l
-64.323 2.631 l
-64.94 -0.132 l
-65.676 2.631 l
-66.19 2.631 l
-h
-68.747 0.823 m
-68.747 1.401 68.884 1.856 69.159 2.191 c
-69.443 2.532 69.813 2.705 70.276 2.705 c
-70.736 2.705 71.103 2.536 71.379 2.205 c
-71.662 1.881 71.809 1.434 71.82 0.867 c
-71.82 0.441 l
-71.82 -0.128 71.677 -0.584 71.394 -0.926 c
-71.118 -1.26 70.75 -1.425 70.291 -1.425 c
-69.828 -1.425 69.457 -1.263 69.174 -0.941 c
-68.898 -0.61 68.755 -0.168 68.747 0.383 c
-h
-69.395 0.441 m
-69.395 0.038 69.472 -0.278 69.63 -0.514 c
-69.795 -0.749 70.015 -0.866 70.291 -0.866 c
-70.857 -0.866 71.151 -0.455 71.173 0.368 c
-71.173 0.823 l
-71.173 1.224 71.089 1.544 70.923 1.779 c
-70.765 2.022 70.548 2.147 70.276 2.147 c
-70.012 2.147 69.795 2.022 69.63 1.779 c
-69.472 1.544 69.395 1.224 69.395 0.823 c
-h
-74.303 2.014 m
-74.216 2.033 74.116 2.043 74.01 2.043 c
-73.676 2.043 73.441 1.86 73.304 1.5 c
-73.304 -1.352 l
-72.657 -1.352 l
-72.657 2.631 l
-73.289 2.631 l
-73.304 2.22 l
-73.481 2.544 73.723 2.705 74.039 2.705 c
-74.146 2.705 74.234 2.683 74.303 2.646 c
-h
-75.95 0.47 m
-75.612 0.074 l
-75.612 -1.352 l
-74.951 -1.352 l
-74.951 4.293 l
-75.612 4.293 l
-75.612 0.912 l
-76.847 2.631 l
-77.626 2.631 l
-76.362 0.971 l
-77.788 -1.352 l
-77.038 -1.352 l
-h
-78.39 -0.999 m
-78.39 -0.881 78.423 -0.786 78.493 -0.706 c
-78.559 -0.628 78.662 -0.588 78.802 -0.588 c
-78.949 -0.588 79.055 -0.628 79.126 -0.706 c
-79.203 -0.786 79.242 -0.881 79.242 -0.999 c
-79.242 -1.109 79.203 -1.201 79.126 -1.278 c
-79.055 -1.356 78.949 -1.396 78.802 -1.396 c
-78.662 -1.396 78.559 -1.356 78.493 -1.278 c
-78.423 -1.201 78.39 -1.109 78.39 -0.999 c
-85.636 -1.352 m
-84.961 -1.352 l
-82.814 2.779 l
-82.814 -1.352 l
-82.139 -1.352 l
-82.139 3.998 l
-82.814 3.998 l
-84.975 -0.147 l
-84.975 3.998 l
-85.636 3.998 l
-h
-88.136 -1.425 m
-87.636 -1.425 87.254 -1.278 86.989 -0.984 c
-86.725 -0.69 86.592 -0.257 86.592 0.324 c
-86.592 0.794 l
-86.592 1.389 86.717 1.856 86.974 2.191 c
-87.239 2.532 87.599 2.705 88.063 2.705 c
-88.522 2.705 88.863 2.55 89.091 2.249 c
-89.326 1.956 89.447 1.492 89.459 0.867 c
-89.459 0.441 l
-87.239 0.441 l
-87.239 0.353 l
-87.239 -0.08 87.317 -0.393 87.474 -0.588 c
-87.639 -0.775 87.871 -0.866 88.165 -0.866 c
-88.36 -0.866 88.533 -0.833 88.68 -0.764 c
-88.827 -0.687 88.963 -0.569 89.091 -0.411 c
-89.43 -0.823 l
-89.143 -1.227 88.713 -1.425 88.136 -1.425 c
-88.063 2.147 m
-87.787 2.147 87.585 2.051 87.46 1.867 c
-87.331 1.68 87.257 1.389 87.239 1 c
-88.811 1 l
-88.811 1.088 l
-88.79 1.47 88.724 1.738 88.606 1.897 c
-88.489 2.062 88.304 2.147 88.063 2.147 c
-93.207 -0.205 m
-93.81 2.631 l
-94.456 2.631 l
-93.472 -1.352 l
-92.957 -1.352 l
-92.177 1.5 l
-91.429 -1.352 l
-90.899 -1.352 l
-89.944 2.631 l
-90.575 2.631 l
-91.193 -0.132 l
-91.928 2.631 l
-92.443 2.631 l
-h
-94.691 -2.425 m
-94.294 -2.16 l
-94.529 -1.837 94.651 -1.502 94.662 -1.161 c
-94.662 -0.544 l
-95.323 -0.544 l
-95.323 -1.072 l
-95.323 -1.33 95.257 -1.576 95.132 -1.822 c
-95.015 -2.065 94.868 -2.267 94.691 -2.425 c
-99.822 -0.338 m
-99.822 -0.191 99.766 -0.07 99.66 0.03 c
-99.549 0.125 99.344 0.243 99.042 0.383 c
-98.697 0.53 98.454 0.651 98.307 0.75 c
-98.161 0.857 98.05 0.975 97.984 1.103 c
-97.914 1.228 97.881 1.386 97.881 1.573 c
-97.881 1.897 97.999 2.165 98.234 2.382 c
-98.469 2.595 98.77 2.705 99.145 2.705 c
-99.527 2.705 99.836 2.591 100.071 2.367 c
-100.306 2.139 100.424 1.852 100.424 1.5 c
-99.778 1.5 l
-99.778 1.676 99.718 1.827 99.601 1.956 c
-99.483 2.08 99.329 2.147 99.145 2.147 c
-98.947 2.147 98.796 2.091 98.689 1.985 c
-98.579 1.885 98.527 1.754 98.527 1.588 c
-98.527 1.459 98.565 1.353 98.646 1.264 c
-98.723 1.183 98.914 1.081 99.219 0.956 c
-99.697 0.769 100.027 0.581 100.204 0.397 c
-100.38 0.221 100.468 -0.007 100.468 -0.278 c
-100.468 -0.631 100.343 -0.911 100.1 -1.117 c
-99.865 -1.323 99.549 -1.425 99.16 -1.425 c
-98.737 -1.425 98.399 -1.308 98.145 -1.072 c
-97.889 -0.83 97.764 -0.525 97.764 -0.161 c
-98.411 -0.161 l
-98.417 -0.389 98.488 -0.565 98.616 -0.69 c
-98.741 -0.808 98.924 -0.866 99.16 -0.866 c
-99.373 -0.866 99.535 -0.819 99.645 -0.72 c
-99.763 -0.625 99.822 -0.496 99.822 -0.338 c
-102.159 3.587 m
-102.159 2.631 l
-102.761 2.631 l
-102.761 2.103 l
-102.159 2.103 l
-102.159 -0.367 l
-102.159 -0.525 102.18 -0.643 102.232 -0.72 c
-102.29 -0.801 102.379 -0.837 102.496 -0.837 c
-102.585 -0.837 102.673 -0.823 102.761 -0.793 c
-102.761 -1.352 l
-102.614 -1.4 102.46 -1.425 102.305 -1.425 c
-102.049 -1.425 101.854 -1.334 101.717 -1.146 c
-101.578 -0.962 101.511 -0.702 101.511 -0.367 c
-101.511 2.103 l
-100.909 2.103 l
-100.909 2.631 l
-101.511 2.631 l
-101.511 3.587 l
-h
-105.569 -1.352 m
-105.528 -1.263 105.503 -1.117 105.495 -0.911 c
-105.26 -1.256 104.966 -1.425 104.613 -1.425 c
-104.25 -1.425 103.967 -1.33 103.761 -1.132 c
-103.562 -0.926 103.466 -0.639 103.466 -0.264 c
-103.466 0.136 103.603 0.456 103.878 0.691 c
-104.15 0.934 104.526 1.058 104.996 1.058 c
-105.48 1.058 l
-105.48 1.485 l
-105.48 1.721 105.426 1.885 105.319 1.985 c
-105.209 2.091 105.047 2.147 104.834 2.147 c
-104.636 2.147 104.474 2.087 104.349 1.97 c
-104.231 1.852 104.172 1.706 104.172 1.529 c
-103.526 1.529 l
-103.526 1.723 103.585 1.915 103.701 2.103 c
-103.827 2.286 103.988 2.433 104.187 2.544 c
-104.393 2.65 104.621 2.705 104.877 2.705 c
-105.278 2.705 105.583 2.602 105.789 2.396 c
-106.003 2.191 106.116 1.897 106.128 1.515 c
-106.128 -0.5 l
-106.128 -0.804 106.164 -1.069 106.245 -1.294 c
-106.245 -1.352 l
-h
-104.701 -0.837 m
-104.867 -0.837 105.018 -0.793 105.157 -0.706 c
-105.304 -0.617 105.411 -0.507 105.48 -0.367 c
-105.48 0.574 l
-105.113 0.574 l
-104.797 0.574 104.555 0.504 104.378 0.368 c
-104.202 0.239 104.114 0.052 104.114 -0.191 c
-104.114 -0.419 104.158 -0.584 104.246 -0.69 c
-104.334 -0.789 104.485 -0.837 104.701 -0.837 c
-106.994 0.823 m
-106.994 1.441 107.105 1.904 107.333 2.22 c
-107.557 2.544 107.892 2.705 108.332 2.705 c
-108.733 2.705 109.037 2.529 109.243 2.176 c
-109.288 2.631 l
-109.876 2.631 l
-109.876 -1.396 l
-109.876 -1.884 109.747 -2.263 109.494 -2.528 c
-109.236 -2.792 108.883 -2.925 108.435 -2.925 c
-108.237 -2.925 108.016 -2.873 107.774 -2.778 c
-107.527 -2.678 107.348 -2.557 107.229 -2.41 c
-107.495 -1.969 l
-107.759 -2.234 108.056 -2.366 108.391 -2.366 c
-108.927 -2.366 109.203 -2.072 109.214 -1.484 c
-109.214 -0.955 l
-109.008 -1.271 108.707 -1.425 108.318 -1.425 c
-107.906 -1.425 107.583 -1.275 107.348 -0.97 c
-107.119 -0.658 107.002 -0.205 106.994 0.383 c
-h
-107.656 0.441 m
-107.656 0 107.718 -0.33 107.847 -0.544 c
-107.972 -0.749 108.189 -0.852 108.494 -0.852 c
-108.817 -0.852 109.056 -0.687 109.214 -0.353 c
-109.214 1.632 l
-109.045 1.956 108.806 2.117 108.494 2.117 c
-108.2 2.117 107.983 2.014 107.847 1.808 c
-107.718 1.603 107.656 1.279 107.656 0.838 c
-h
-112.257 -1.425 m
-111.757 -1.425 111.375 -1.278 111.111 -0.984 c
-110.845 -0.69 110.714 -0.257 110.714 0.324 c
-110.714 0.794 l
-110.714 1.389 110.838 1.856 111.096 2.191 c
-111.36 2.532 111.72 2.705 112.183 2.705 c
-112.642 2.705 112.985 2.55 113.212 2.249 c
-113.448 1.956 113.569 1.492 113.579 0.867 c
-113.579 0.441 l
-111.36 0.441 l
-111.36 0.353 l
-111.36 -0.08 111.437 -0.393 111.595 -0.588 c
-111.761 -0.775 111.992 -0.866 112.287 -0.866 c
-112.481 -0.866 112.654 -0.833 112.8 -0.764 c
-112.948 -0.687 113.083 -0.569 113.212 -0.411 c
-113.55 -0.823 l
-113.264 -1.227 112.834 -1.425 112.257 -1.425 c
-112.183 2.147 m
-111.908 2.147 111.705 2.051 111.581 1.867 c
-111.452 1.68 111.379 1.389 111.36 1 c
-112.933 1 l
-112.933 1.088 l
-112.911 1.47 112.845 1.738 112.727 1.897 c
-112.609 2.062 112.426 2.147 112.183 2.147 c
-114.226 0.823 m
-114.226 1.43 114.337 1.897 114.564 2.22 c
-114.799 2.544 115.127 2.705 115.549 2.705 c
-115.931 2.705 116.229 2.547 116.446 2.234 c
-116.446 4.293 l
-117.093 4.293 l
-117.093 -1.352 l
-116.505 -1.352 l
-116.461 -0.926 l
-116.255 -1.26 115.95 -1.425 115.549 -1.425 c
-115.138 -1.425 114.814 -1.271 114.579 -0.955 c
-114.344 -0.631 114.226 -0.176 114.226 0.412 c
-h
-114.874 0.441 m
-114.874 0 114.936 -0.33 115.065 -0.544 c
-115.2 -0.749 115.421 -0.852 115.726 -0.852 c
-116.05 -0.852 116.288 -0.69 116.446 -0.367 c
-116.446 1.646 l
-116.277 1.959 116.038 2.117 115.726 2.117 c
-115.421 2.117 115.2 2.014 115.065 1.808 c
-114.936 1.603 114.874 1.279 114.874 0.838 c
-h
-118.107 -2.425 m
-117.71 -2.16 l
-117.945 -1.837 118.067 -1.502 118.078 -1.161 c
-118.078 -0.544 l
-118.739 -0.544 l
-118.739 -1.072 l
-118.739 -1.33 118.673 -1.576 118.548 -1.822 c
-118.431 -2.065 118.283 -2.267 118.107 -2.425 c
-121.914 2.631 m
-121.929 2.264 l
-122.171 2.558 122.491 2.705 122.884 2.705 c
-123.325 2.705 123.634 2.507 123.811 2.117 c
-124.064 2.507 124.413 2.705 124.854 2.705 c
-125.589 2.705 125.964 2.242 125.986 1.324 c
-125.986 -1.352 l
-125.339 -1.352 l
-125.339 1.264 l
-125.339 1.559 125.284 1.771 125.178 1.912 c
-125.078 2.047 124.906 2.117 124.663 2.117 c
-124.465 2.117 124.303 2.037 124.178 1.881 c
-124.06 1.735 123.99 1.544 123.972 1.309 c
-123.972 -1.352 l
-123.31 -1.352 l
-123.31 1.294 l
-123.31 1.841 123.09 2.117 122.649 2.117 c
-122.315 2.117 122.08 1.956 121.943 1.632 c
-121.943 -1.352 l
-121.297 -1.352 l
-121.297 2.631 l
-h
-126.824 0.823 m
-126.824 1.401 126.959 1.856 127.235 2.191 c
-127.518 2.532 127.889 2.705 128.353 2.705 c
-128.812 2.705 129.18 2.536 129.455 2.205 c
-129.737 1.881 129.885 1.434 129.895 0.867 c
-129.895 0.441 l
-129.895 -0.128 129.752 -0.584 129.469 -0.926 c
-129.194 -1.26 128.827 -1.425 128.367 -1.425 c
-127.904 -1.425 127.533 -1.263 127.25 -0.941 c
-126.974 -0.61 126.831 -0.168 126.824 0.383 c
-h
-127.47 0.441 m
-127.47 0.038 127.547 -0.278 127.705 -0.514 c
-127.871 -0.749 128.091 -0.866 128.367 -0.866 c
-128.933 -0.866 129.227 -0.455 129.249 0.368 c
-129.249 0.823 l
-129.249 1.224 129.164 1.544 128.999 1.779 c
-128.841 2.022 128.624 2.147 128.353 2.147 c
-128.087 2.147 127.871 2.022 127.705 1.779 c
-127.547 1.544 127.47 1.224 127.47 0.823 c
-h
-130.601 0.823 m
-130.601 1.43 130.711 1.897 130.94 2.22 c
-131.175 2.544 131.501 2.705 131.924 2.705 c
-132.307 2.705 132.604 2.547 132.821 2.234 c
-132.821 4.293 l
-133.467 4.293 l
-133.467 -1.352 l
-132.879 -1.352 l
-132.835 -0.926 l
-132.629 -1.26 132.324 -1.425 131.924 -1.425 c
-131.513 -1.425 131.189 -1.271 130.954 -0.955 c
-130.719 -0.631 130.601 -0.176 130.601 0.412 c
-h
-131.248 0.441 m
-131.248 0 131.31 -0.33 131.439 -0.544 c
-131.575 -0.749 131.796 -0.852 132.101 -0.852 c
-132.424 -0.852 132.663 -0.69 132.821 -0.367 c
-132.821 1.646 l
-132.652 1.959 132.413 2.117 132.101 2.117 c
-131.796 2.117 131.575 2.014 131.439 1.808 c
-131.31 1.603 131.248 1.279 131.248 0.838 c
-h
-135.173 -1.352 -0.647 3.983 re
-135.216 3.675 m
-135.216 3.565 135.187 3.473 135.129 3.396 c
-135.069 3.326 134.974 3.293 134.849 3.293 c
-134.732 3.293 134.636 3.326 134.57 3.396 c
-134.511 3.473 134.482 3.565 134.482 3.675 c
-134.482 3.793 134.511 3.884 134.57 3.955 c
-134.636 4.032 134.732 4.072 134.849 4.072 c
-134.974 4.072 135.069 4.032 135.129 3.955 c
-135.187 3.874 135.216 3.782 135.216 3.675 c
-136.363 -1.352 m
-136.363 2.103 l
-135.848 2.103 l
-135.848 2.631 l
-136.363 2.631 l
-136.363 2.999 l
-136.371 3.429 136.484 3.763 136.702 3.998 c
-136.926 4.241 137.238 4.366 137.642 4.366 c
-137.789 4.366 137.928 4.344 138.069 4.308 c
-138.215 4.267 138.366 4.212 138.524 4.146 c
-138.406 3.572 l
-138.171 3.697 137.928 3.763 137.687 3.763 c
-137.44 3.763 137.267 3.693 137.172 3.558 c
-137.072 3.429 137.024 3.234 137.024 2.97 c
-137.024 2.631 l
-137.672 2.631 l
-137.672 2.103 l
-137.024 2.103 l
-137.024 -1.352 l
-h
-138.832 -1.352 -0.646 3.983 re
-141.302 -1.425 m
-140.802 -1.425 140.42 -1.278 140.155 -0.984 c
-139.891 -0.69 139.759 -0.257 139.759 0.324 c
-139.759 0.794 l
-139.759 1.389 139.883 1.856 140.141 2.191 c
-140.405 2.532 140.766 2.705 141.229 2.705 c
-141.688 2.705 142.03 2.55 142.258 2.249 c
-142.493 1.956 142.614 1.492 142.625 0.867 c
-142.625 0.441 l
-140.405 0.441 l
-140.405 0.353 l
-140.405 -0.08 140.483 -0.393 140.641 -0.588 c
-140.806 -0.775 141.038 -0.866 141.331 -0.866 c
-141.527 -0.866 141.699 -0.833 141.846 -0.764 c
-141.993 -0.687 142.129 -0.569 142.258 -0.411 c
-142.595 -0.823 l
-142.309 -1.227 141.879 -1.425 141.302 -1.425 c
-141.229 2.147 m
-140.953 2.147 140.751 2.051 140.626 1.867 c
-140.498 1.68 140.424 1.389 140.405 1 c
-141.978 1 l
-141.978 1.088 l
-141.957 1.47 141.89 1.738 141.772 1.897 c
-141.655 2.062 141.471 2.147 141.229 2.147 c
-143.272 0.823 m
-143.272 1.43 143.382 1.897 143.61 2.22 c
-143.845 2.544 144.172 2.705 144.594 2.705 c
-144.977 2.705 145.275 2.547 145.491 2.234 c
-145.491 4.293 l
-146.138 4.293 l
-146.138 -1.352 l
-145.55 -1.352 l
-145.506 -0.926 l
-145.3 -1.26 144.995 -1.425 144.594 -1.425 c
-144.183 -1.425 143.86 -1.271 143.625 -0.955 c
-143.389 -0.631 143.272 -0.176 143.272 0.412 c
-h
-143.918 0.441 m
-143.918 0 143.981 -0.33 144.11 -0.544 c
-144.245 -0.749 144.467 -0.852 144.771 -0.852 c
-145.094 -0.852 145.333 -0.69 145.491 -0.367 c
-145.491 1.646 l
-145.323 1.959 145.084 2.117 144.771 2.117 c
-144.467 2.117 144.245 2.014 144.11 1.808 c
-143.981 1.603 143.918 1.279 143.918 0.838 c
-h
-149.034 -1.352 m
-149.034 2.103 l
-148.519 2.103 l
-148.519 2.631 l
-149.034 2.631 l
-149.034 2.999 l
-149.041 3.429 149.155 3.763 149.372 3.998 c
-149.596 4.241 149.909 4.366 150.312 4.366 c
-150.46 4.366 150.599 4.344 150.738 4.308 c
-150.886 4.267 151.037 4.212 151.195 4.146 c
-151.077 3.572 l
-150.842 3.697 150.599 3.763 150.357 3.763 c
-150.111 3.763 149.938 3.693 149.842 3.558 c
-149.743 3.429 149.695 3.234 149.695 2.97 c
-149.695 2.631 l
-150.342 2.631 l
-150.342 2.103 l
-149.695 2.103 l
-149.695 -1.352 l
-h
-151.503 -1.352 -0.646 3.983 re
-153.252 -1.352 -0.646 5.644 re
-155.692 -1.425 m
-155.193 -1.425 154.811 -1.278 154.546 -0.984 c
-154.281 -0.69 154.15 -0.257 154.15 0.324 c
-154.15 0.794 l
-154.15 1.389 154.274 1.856 154.531 2.191 c
-154.796 2.532 155.156 2.705 155.619 2.705 c
-156.078 2.705 156.421 2.55 156.648 2.249 c
-156.883 1.956 157.005 1.492 157.015 0.867 c
-157.015 0.441 l
-154.796 0.441 l
-154.796 0.353 l
-154.796 -0.08 154.873 -0.393 155.031 -0.588 c
-155.197 -0.775 155.428 -0.866 155.722 -0.866 c
-155.916 -0.866 156.089 -0.833 156.236 -0.764 c
-156.383 -0.687 156.519 -0.569 156.648 -0.411 c
-156.986 -0.823 l
-156.699 -1.227 156.269 -1.425 155.692 -1.425 c
-155.619 2.147 m
-155.343 2.147 155.141 2.051 155.016 1.867 c
-154.888 1.68 154.815 1.389 154.796 1 c
-156.369 1 l
-156.369 1.088 l
-156.346 1.47 156.28 1.738 156.163 1.897 c
-156.045 2.062 155.862 2.147 155.619 2.147 c
-159.735 -0.338 m
-159.735 -0.191 159.679 -0.07 159.573 0.03 c
-159.463 0.125 159.257 0.243 158.956 0.383 c
-158.611 0.53 158.368 0.651 158.221 0.75 c
-158.073 0.857 157.963 0.975 157.897 1.103 c
-157.828 1.228 157.794 1.386 157.794 1.573 c
-157.794 1.897 157.913 2.165 158.148 2.382 c
-158.383 2.595 158.684 2.705 159.058 2.705 c
-159.44 2.705 159.75 2.591 159.985 2.367 c
-160.22 2.139 160.338 1.852 160.338 1.5 c
-159.691 1.5 l
-159.691 1.676 159.632 1.827 159.515 1.956 c
-159.397 2.08 159.243 2.147 159.058 2.147 c
-158.86 2.147 158.709 2.091 158.603 1.985 c
-158.493 1.885 158.441 1.754 158.441 1.588 c
-158.441 1.459 158.478 1.353 158.559 1.264 c
-158.636 1.183 158.827 1.081 159.132 0.956 c
-159.61 0.769 159.941 0.581 160.117 0.397 c
-160.294 0.221 160.381 -0.007 160.381 -0.278 c
-160.381 -0.631 160.257 -0.911 160.014 -1.117 c
-159.779 -1.323 159.463 -1.425 159.073 -1.425 c
-158.651 -1.425 158.312 -1.308 158.059 -1.072 c
-157.802 -0.83 157.677 -0.525 157.677 -0.161 c
-158.324 -0.161 l
-158.331 -0.389 158.401 -0.565 158.53 -0.69 c
-158.655 -0.808 158.838 -0.866 159.073 -0.866 c
-159.286 -0.866 159.448 -0.819 159.559 -0.72 c
-159.675 -0.625 159.735 -0.496 159.735 -0.338 c
-161.263 -0.999 m
-161.263 -0.881 161.296 -0.786 161.366 -0.706 c
-161.433 -0.628 161.535 -0.588 161.675 -0.588 c
-161.822 -0.588 161.929 -0.628 161.998 -0.706 c
-162.075 -0.786 162.116 -0.881 162.116 -0.999 c
-162.116 -1.109 162.075 -1.201 161.998 -1.278 c
-161.929 -1.356 161.822 -1.396 161.675 -1.396 c
-161.535 -1.396 161.433 -1.356 161.366 -1.278 c
-161.296 -1.201 161.263 -1.109 161.263 -0.999 c
-168.377 0.353 m
-168.348 -0.228 168.186 -0.668 167.893 -0.97 c
-167.598 -1.275 167.18 -1.425 166.644 -1.425 c
-166.114 -1.425 165.688 -1.227 165.364 -0.823 c
-165.048 -0.411 164.894 0.148 164.894 0.853 c
-164.894 1.823 l
-164.894 2.517 165.056 3.065 165.379 3.469 c
-165.703 3.87 166.147 4.072 166.717 4.072 c
-167.224 4.072 167.621 3.914 167.907 3.602 c
-168.19 3.296 168.348 2.856 168.377 2.278 c
-167.687 2.278 l
-167.658 2.72 167.562 3.032 167.407 3.219 c
-167.261 3.404 167.029 3.499 166.717 3.499 c
-166.342 3.499 166.059 3.352 165.865 3.057 c
-165.666 2.771 165.57 2.356 165.57 1.808 c
-165.57 0.823 l
-165.57 0.283 165.662 -0.132 165.85 -0.426 c
-166.033 -0.712 166.298 -0.852 166.644 -0.852 c
-166.996 -0.852 167.249 -0.764 167.407 -0.588 c
-167.562 -0.411 167.658 -0.099 167.687 0.353 c
-h
-171.215 -0.999 m
-170.998 -1.286 170.686 -1.425 170.274 -1.425 c
-169.91 -1.425 169.634 -1.304 169.451 -1.058 c
-169.275 -0.804 169.179 -0.44 169.171 0.03 c
-169.171 2.631 l
-169.819 2.631 l
-169.819 0.088 l
-169.819 -0.54 170.002 -0.852 170.377 -0.852 c
-170.777 -0.852 171.053 -0.675 171.2 -0.323 c
-171.2 2.631 l
-171.847 2.631 l
-171.847 -1.352 l
-171.23 -1.352 l
-h
-174.478 2.014 m
-174.39 2.033 174.291 2.043 174.184 2.043 c
-173.85 2.043 173.614 1.86 173.478 1.5 c
-173.478 -1.352 l
-172.832 -1.352 l
-172.832 2.631 l
-173.464 2.631 l
-173.478 2.22 l
-173.655 2.544 173.898 2.705 174.214 2.705 c
-174.32 2.705 174.408 2.683 174.478 2.646 c
-h
-176.771 2.014 m
-176.683 2.033 176.583 2.043 176.477 2.043 c
-176.142 2.043 175.907 1.86 175.772 1.5 c
-175.772 -1.352 l
-175.124 -1.352 l
-175.124 2.631 l
-175.756 2.631 l
-175.772 2.22 l
-175.947 2.544 176.19 2.705 176.506 2.705 c
-176.613 2.705 176.701 2.683 176.771 2.646 c
-h
-178.77 -1.425 m
-178.27 -1.425 177.888 -1.278 177.624 -0.984 c
-177.359 -0.69 177.227 -0.257 177.227 0.324 c
-177.227 0.794 l
-177.227 1.389 177.352 1.856 177.609 2.191 c
-177.873 2.532 178.233 2.705 178.696 2.705 c
-179.156 2.705 179.498 2.55 179.725 2.249 c
-179.961 1.956 180.082 1.492 180.093 0.867 c
-180.093 0.441 l
-177.873 0.441 l
-177.873 0.353 l
-177.873 -0.08 177.95 -0.393 178.108 -0.588 c
-178.274 -0.775 178.505 -0.866 178.8 -0.866 c
-178.994 -0.866 179.167 -0.833 179.314 -0.764 c
-179.461 -0.687 179.597 -0.569 179.725 -0.411 c
-180.063 -0.823 l
-179.777 -1.227 179.347 -1.425 178.77 -1.425 c
-178.696 2.147 m
-178.421 2.147 178.218 2.051 178.094 1.867 c
-177.965 1.68 177.892 1.389 177.873 1 c
-179.446 1 l
-179.446 1.088 l
-179.424 1.47 179.358 1.738 179.24 1.897 c
-179.122 2.062 178.939 2.147 178.696 2.147 c
-181.489 2.631 m
-181.504 2.191 l
-181.757 2.532 182.081 2.705 182.474 2.705 c
-183.18 2.705 183.536 2.234 183.548 1.294 c
-183.548 -1.352 l
-182.9 -1.352 l
-182.9 1.264 l
-182.9 1.577 182.845 1.798 182.739 1.926 c
-182.629 2.051 182.474 2.117 182.268 2.117 c
-182.11 2.117 181.964 2.062 181.827 1.956 c
-181.699 1.845 181.596 1.709 181.518 1.544 c
-181.518 -1.352 l
-180.872 -1.352 l
-180.872 2.631 l
-h
-185.37 3.587 m
-185.37 2.631 l
-185.973 2.631 l
-185.973 2.103 l
-185.37 2.103 l
-185.37 -0.367 l
-185.37 -0.525 185.392 -0.643 185.443 -0.72 c
-185.503 -0.801 185.59 -0.837 185.708 -0.837 c
-185.796 -0.837 185.884 -0.823 185.973 -0.793 c
-185.973 -1.352 l
-185.825 -1.4 185.671 -1.425 185.517 -1.425 c
-185.26 -1.425 185.065 -1.334 184.929 -1.146 c
-184.789 -0.962 184.724 -0.702 184.724 -0.367 c
-184.724 2.103 l
-184.121 2.103 l
-184.121 2.631 l
-184.724 2.631 l
-184.724 3.587 l
-h
-191.338 0.441 m
-191.338 -0.176 191.224 -0.643 190.999 -0.955 c
-190.783 -1.271 190.459 -1.425 190.029 -1.425 c
-189.607 -1.425 189.295 -1.246 189.089 -0.881 c
-189.059 -1.352 l
-188.456 -1.352 l
-188.456 4.293 l
-189.104 4.293 l
-189.104 2.191 l
-189.316 2.532 189.625 2.705 190.029 2.705 c
-190.459 2.705 190.783 2.547 190.999 2.234 c
-191.224 1.929 191.338 1.463 191.338 0.838 c
-h
-190.691 0.823 m
-190.691 1.294 190.621 1.625 190.485 1.823 c
-190.357 2.018 190.147 2.117 189.853 2.117 c
-189.519 2.117 189.269 1.933 189.104 1.573 c
-189.104 -0.309 l
-189.269 -0.672 189.522 -0.852 189.868 -0.852 c
-190.162 -0.852 190.371 -0.749 190.5 -0.544 c
-190.625 -0.338 190.691 -0.022 190.691 0.412 c
-h
-193.822 2.014 m
-193.734 2.033 193.634 2.043 193.528 2.043 c
-193.193 2.043 192.958 1.86 192.822 1.5 c
-192.822 -1.352 l
-192.175 -1.352 l
-192.175 2.631 l
-192.807 2.631 l
-192.822 2.22 l
-192.998 2.544 193.241 2.705 193.557 2.705 c
-193.663 2.705 193.752 2.683 193.822 2.646 c
-h
-196.364 -1.352 m
-196.325 -1.263 196.298 -1.117 196.291 -0.911 c
-196.056 -1.256 195.762 -1.425 195.409 -1.425 c
-195.045 -1.425 194.762 -1.33 194.557 -1.132 c
-194.359 -0.926 194.263 -0.639 194.263 -0.264 c
-194.263 0.136 194.399 0.456 194.675 0.691 c
-194.947 0.934 195.321 1.058 195.791 1.058 c
-196.277 1.058 l
-196.277 1.485 l
-196.277 1.721 196.221 1.885 196.115 1.985 c
-196.005 2.091 195.843 2.147 195.63 2.147 c
-195.431 2.147 195.269 2.087 195.145 1.97 c
-195.027 1.852 194.968 1.706 194.968 1.529 c
-194.322 1.529 l
-194.322 1.723 194.38 1.915 194.498 2.103 c
-194.623 2.286 194.785 2.433 194.983 2.544 c
-195.188 2.65 195.417 2.705 195.674 2.705 c
-196.075 2.705 196.379 2.602 196.585 2.396 c
-196.798 2.191 196.913 1.897 196.923 1.515 c
-196.923 -0.5 l
-196.923 -0.804 196.96 -1.069 197.041 -1.294 c
-197.041 -1.352 l
-h
-195.498 -0.837 m
-195.662 -0.837 195.814 -0.793 195.953 -0.706 c
-196.1 -0.617 196.207 -0.507 196.277 -0.367 c
-196.277 0.574 l
-195.909 0.574 l
-195.593 0.574 195.35 0.504 195.174 0.368 c
-194.997 0.239 194.91 0.052 194.91 -0.191 c
-194.91 -0.419 194.953 -0.584 195.042 -0.69 c
-195.13 -0.789 195.281 -0.837 195.498 -0.837 c
-198.54 2.631 m
-198.555 2.191 l
-198.808 2.532 199.132 2.705 199.525 2.705 c
-200.231 2.705 200.587 2.234 200.598 1.294 c
-200.598 -1.352 l
-199.951 -1.352 l
-199.951 1.264 l
-199.951 1.577 199.896 1.798 199.79 1.926 c
-199.679 2.051 199.525 2.117 199.319 2.117 c
-199.161 2.117 199.014 2.062 198.878 1.956 c
-198.75 1.845 198.647 1.709 198.569 1.544 c
-198.569 -1.352 l
-197.923 -1.352 l
-197.923 2.631 l
-h
-202.949 -0.866 m
-203.163 -0.866 203.336 -0.804 203.464 -0.675 c
-203.6 -0.54 203.674 -0.349 203.685 -0.103 c
-204.302 -0.103 l
-204.281 -0.484 204.144 -0.804 203.89 -1.058 c
-203.633 -1.304 203.321 -1.425 202.949 -1.425 c
-202.457 -1.425 202.083 -1.275 201.818 -0.97 c
-201.561 -0.658 201.436 -0.191 201.436 0.427 c
-201.436 0.867 l
-201.436 1.463 201.561 1.919 201.818 2.234 c
-202.083 2.547 202.457 2.705 202.949 2.705 c
-203.35 2.705 203.67 2.573 203.905 2.309 c
-204.148 2.051 204.281 1.706 204.302 1.264 c
-203.685 1.264 l
-203.663 1.559 203.589 1.779 203.464 1.926 c
-203.346 2.073 203.174 2.147 202.949 2.147 c
-202.656 2.147 202.44 2.047 202.303 1.852 c
-202.164 1.665 202.09 1.357 202.083 0.927 c
-202.083 0.412 l
-202.083 -0.058 202.149 -0.393 202.288 -0.588 c
-202.436 -0.775 202.656 -0.866 202.949 -0.866 c
-205.698 2.22 m
-205.952 2.544 206.272 2.705 206.654 2.705 c
-207.36 2.705 207.716 2.234 207.728 1.294 c
-207.728 -1.352 l
-207.08 -1.352 l
-207.08 1.264 l
-207.08 1.577 207.026 1.798 206.918 1.926 c
-206.808 2.051 206.654 2.117 206.448 2.117 c
-206.29 2.117 206.143 2.062 206.007 1.956 c
-205.879 1.845 205.775 1.709 205.698 1.544 c
-205.698 -1.352 l
-205.052 -1.352 l
-205.052 4.293 l
-205.698 4.293 l
-h
-208.727 -0.999 m
-208.727 -0.881 208.759 -0.786 208.829 -0.706 c
-208.896 -0.628 208.998 -0.588 209.139 -0.588 c
-209.285 -0.588 209.392 -0.628 209.461 -0.706 c
-209.538 -0.786 209.579 -0.881 209.579 -0.999 c
-209.579 -1.109 209.538 -1.201 209.461 -1.278 c
-209.392 -1.356 209.285 -1.396 209.139 -1.396 c
-208.998 -1.396 208.896 -1.356 208.829 -1.278 c
-208.759 -1.201 208.727 -1.109 208.727 -0.999 c
-f
-Q
-0.113 0.082 0.09 0 k
-287.665 383.129 234.667 -12.898 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 292.8568 376.2903 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.646 -0.243 -0.775 -0.367 -0.881 c
--0.496 -0.992 -0.658 -1.08 -0.852 -1.146 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.807 l
--1.896 -1.807 l
--1.896 -1.263 l
--2.142 -1.256 -2.359 -1.219 -2.543 -1.161 c
--2.719 -1.102 -2.873 -1.024 -2.998 -0.926 c
--3.127 -0.819 -3.23 -0.69 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.213 -3.484 -0.014 c
--2.66 0.133 l
--2.642 0.034 -2.616 -0.058 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.367 c
--2.396 -0.426 -2.322 -0.477 -2.234 -0.514 c
--2.138 -0.554 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.662 l
--1.907 0.662 -1.926 0.666 -1.955 0.676 c
--1.977 0.684 -1.992 0.691 -1.999 0.691 c
--2.167 0.728 -2.329 0.772 -2.484 0.823 c
--2.642 0.882 -2.786 0.96 -2.91 1.058 c
--3.039 1.154 -3.142 1.279 -3.219 1.426 c
--3.289 1.573 -3.322 1.757 -3.322 1.985 c
--3.322 2.18 -3.289 2.345 -3.219 2.485 c
--3.152 2.631 -3.054 2.749 -2.925 2.837 c
--2.8 2.933 -2.645 3.003 -2.469 3.043 c
--2.293 3.091 -2.102 3.12 -1.896 3.132 c
--1.896 3.558 l
--1.543 3.558 l
--1.543 3.132 l
--1.319 3.12 -1.128 3.091 -0.97 3.043 c
--0.804 2.992 -0.669 2.918 -0.558 2.822 c
--0.44 2.735 -0.349 2.621 -0.279 2.485 c
--0.202 2.345 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.253 -1.213 2.459 -1.543 2.5 c
--1.543 1.368 l
--1.514 1.368 l
--1.506 1.368 -1.492 1.36 -1.469 1.353 c
--1.294 1.312 -1.117 1.264 -0.941 1.206 c
--0.756 1.147 -0.595 1.066 -0.455 0.971 c
--0.32 0.871 -0.213 0.743 -0.132 0.588 c
--0.044 0.431 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.503 -2.113 2.485 -2.19 2.455 c
--2.26 2.426 -2.319 2.386 -2.366 2.338 c
--2.406 2.297 -2.436 2.249 -2.454 2.191 c
--2.477 2.132 -2.484 2.066 -2.484 1.999 c
--2.484 1.912 -2.469 1.838 -2.439 1.779 c
--2.41 1.721 -2.373 1.669 -2.322 1.632 c
--2.263 1.592 -2.201 1.559 -2.131 1.529 c
--2.065 1.5 -1.984 1.47 -1.896 1.441 c
-h
--0.837 -0.014 m
--0.837 0.092 -0.86 0.177 -0.897 0.235 c
--0.926 0.302 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.53 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.529 -1.028 -0.44 c
--0.904 -0.345 -0.837 -0.201 -0.837 -0.014 c
-6.402 -2.66 m
-6.184 -2.66 5.993 -2.634 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.395 c
-5.284 -2.314 5.185 -2.219 5.108 -2.102 c
-5.039 -1.984 4.991 -1.855 4.961 -1.72 c
-5.858 -1.616 l
-5.895 -1.753 5.964 -1.859 6.064 -1.94 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.057 6.681 -2.028 c
-6.758 -1.999 6.828 -1.944 6.887 -1.866 c
-6.945 -1.797 6.99 -1.705 7.019 -1.587 c
-7.056 -1.469 7.078 -1.323 7.078 -1.146 c
-7.078 -0.955 l
-7.078 -0.889 7.082 -0.83 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.072 c
-6.464 -1.172 6.259 -1.219 6.034 -1.219 c
-5.829 -1.219 5.644 -1.182 5.49 -1.102 c
-5.343 -1.014 5.215 -0.897 5.108 -0.749 c
-5.009 -0.595 4.935 -0.411 4.888 -0.205 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.772 4.836 1.019 4.888 1.235 c
-4.946 1.449 5.027 1.632 5.137 1.779 c
-5.244 1.933 5.376 2.051 5.534 2.132 c
-5.689 2.22 5.876 2.264 6.093 2.264 c
-6.188 2.264 6.288 2.253 6.387 2.234 c
-6.483 2.213 6.571 2.18 6.652 2.132 c
-6.739 2.08 6.817 2.018 6.887 1.941 c
-6.964 1.86 7.026 1.768 7.078 1.661 c
-7.092 1.661 l
-7.092 1.808 l
-7.1 1.867 7.107 1.919 7.107 1.97 c
-7.115 2.029 7.122 2.077 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.151 2.22 c
-8.004 2.22 l
-7.993 2.139 7.982 2.029 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.161 l
-7.975 -1.414 7.938 -1.635 7.871 -1.822 c
-7.802 -2.006 7.699 -2.16 7.563 -2.278 c
-7.423 -2.403 7.258 -2.499 7.063 -2.557 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.53 m
-7.092 0.743 7.067 0.919 7.019 1.058 c
-6.978 1.206 6.924 1.324 6.857 1.411 c
-6.799 1.5 6.729 1.559 6.652 1.588 c
-6.571 1.625 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.621 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.368 c
-5.88 1.279 5.835 1.162 5.799 1.015 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.338 c
-6.049 -0.514 6.211 -0.602 6.417 -0.602 c
-6.483 -0.602 6.556 -0.588 6.637 -0.558 c
-6.725 -0.521 6.799 -0.463 6.857 -0.382 c
-6.924 -0.293 6.978 -0.176 7.019 -0.029 c
-7.067 0.118 7.092 0.302 7.092 0.53 c
-11.036 -0.646 m
-12.168 -0.646 l
-12.168 -1.263 l
-8.86 -1.263 l
-8.86 -0.646 l
-10.124 -0.646 l
-10.124 1.603 l
-9.199 1.603 l
-9.199 2.22 l
-11.036 2.22 l
-h
-10.124 3.514 0.912 -0.676 re
-10.124 2.837 m
-13.597 1.603 m
-13.053 1.603 l
-13.053 2.22 l
-13.641 2.22 l
-13.92 3.117 l
-14.494 3.117 l
-14.494 2.22 l
-15.728 2.22 l
-15.728 1.603 l
-14.494 1.603 l
-14.494 -0.103 l
-14.494 -0.323 l
-14.501 -0.392 14.523 -0.455 14.552 -0.514 c
-14.589 -0.565 14.645 -0.61 14.714 -0.646 c
-14.791 -0.675 14.905 -0.69 15.052 -0.69 c
-15.188 -0.69 15.324 -0.687 15.464 -0.675 c
-15.599 -0.658 15.732 -0.631 15.861 -0.602 c
-15.861 -1.205 l
-15.78 -1.215 15.703 -1.23 15.626 -1.249 c
-15.545 -1.26 15.468 -1.267 15.391 -1.278 c
-15.31 -1.286 15.221 -1.294 15.125 -1.294 c
-15.038 -1.3 14.938 -1.308 14.832 -1.308 c
-14.645 -1.308 14.483 -1.294 14.346 -1.263 c
-14.218 -1.227 14.104 -1.182 14.009 -1.132 c
-13.92 -1.084 13.847 -1.024 13.788 -0.955 c
-13.729 -0.878 13.685 -0.801 13.656 -0.72 c
-13.627 -0.631 13.604 -0.544 13.597 -0.455 c
-13.586 -0.359 13.582 -0.264 13.582 -0.176 c
-h
-23.295 -1.263 m
-23.283 -1.246 23.273 -1.215 23.265 -1.176 c
-23.265 -1.128 23.258 -1.08 23.25 -1.028 c
-23.25 -0.97 23.243 -0.911 23.236 -0.852 c
-23.236 -0.69 l
-23.118 -0.926 22.975 -1.095 22.809 -1.19 c
-22.641 -1.278 22.442 -1.323 22.207 -1.323 c
-22.009 -1.323 21.832 -1.278 21.677 -1.19 c
-21.519 -1.102 21.388 -0.98 21.28 -0.823 c
-21.182 -0.658 21.105 -0.467 21.045 -0.249 c
-20.994 -0.037 20.972 0.206 20.972 0.47 c
-20.972 0.736 20.994 0.975 21.045 1.191 c
-21.105 1.415 21.182 1.607 21.28 1.764 c
-21.388 1.919 21.519 2.043 21.677 2.132 c
-21.843 2.228 22.034 2.278 22.251 2.278 c
-22.346 2.278 22.442 2.264 22.531 2.234 c
-22.626 2.213 22.722 2.18 22.809 2.132 c
-22.898 2.08 22.975 2.018 23.044 1.941 c
-23.121 1.86 23.185 1.768 23.236 1.661 c
-23.236 1.75 l
-23.236 1.897 l
-23.236 2.058 l
-23.236 2.234 l
-23.236 3.514 l
-24.133 3.514 l
-24.133 -0.5 l
-24.133 -0.675 24.137 -0.833 24.147 -0.97 c
-24.154 -1.098 24.162 -1.198 24.162 -1.263 c
-h
-23.25 0.485 m
-23.25 0.721 23.225 0.912 23.177 1.058 c
-23.137 1.214 23.081 1.338 23.015 1.426 c
-22.957 1.515 22.886 1.573 22.809 1.603 c
-22.728 1.64 22.651 1.661 22.574 1.661 c
-22.475 1.661 22.383 1.636 22.296 1.588 c
-22.215 1.548 22.148 1.478 22.09 1.382 c
-22.038 1.283 21.994 1.162 21.957 1.015 c
-21.928 0.867 21.913 0.684 21.913 0.47 c
-21.913 0.078 21.964 -0.216 22.074 -0.411 c
-22.192 -0.61 22.354 -0.706 22.56 -0.706 c
-22.637 -0.706 22.714 -0.687 22.795 -0.646 c
-22.872 -0.61 22.946 -0.544 23.015 -0.455 c
-23.081 -0.367 23.137 -0.246 23.177 -0.087 c
-23.225 0.067 23.25 0.258 23.25 0.485 c
-27.281 -0.646 m
-28.413 -0.646 l
-28.413 -1.263 l
-25.106 -1.263 l
-25.106 -0.646 l
-26.371 -0.646 l
-26.371 1.603 l
-25.444 1.603 l
-25.444 2.22 l
-27.281 2.22 l
-h
-26.371 3.514 0.911 -0.676 re
-26.371 2.837 m
-30.886 1.603 m
-30.886 -1.263 l
-29.99 -1.263 l
-29.99 1.603 l
-29.167 1.603 l
-29.167 2.22 l
-29.99 2.22 l
-29.99 2.485 l
-29.99 2.61 30.005 2.742 30.034 2.882 c
-30.071 3.018 30.14 3.135 30.24 3.234 c
-30.346 3.341 30.489 3.429 30.666 3.499 c
-30.842 3.565 31.067 3.602 31.343 3.602 c
-31.555 3.602 31.754 3.591 31.931 3.572 c
-32.107 3.55 32.257 3.532 32.386 3.514 c
-32.386 2.926 l
-32.257 2.944 32.114 2.959 31.96 2.97 c
-31.802 2.977 31.651 2.984 31.504 2.984 c
-31.376 2.984 31.272 2.97 31.195 2.94 c
-31.114 2.911 31.052 2.87 31.004 2.822 c
-30.953 2.771 30.919 2.708 30.901 2.631 c
-30.89 2.562 30.886 2.485 30.886 2.396 c
-30.886 2.22 l
-32.313 2.22 l
-32.313 1.603 l
-h
-34.948 1.603 m
-34.948 -1.263 l
-34.051 -1.263 l
-34.051 1.603 l
-33.228 1.603 l
-33.228 2.22 l
-34.051 2.22 l
-34.051 2.485 l
-34.051 2.61 34.065 2.742 34.094 2.882 c
-34.132 3.018 34.202 3.135 34.3 3.234 c
-34.407 3.341 34.551 3.429 34.726 3.499 c
-34.903 3.565 35.127 3.602 35.403 3.602 c
-35.616 3.602 35.815 3.591 35.991 3.572 c
-36.168 3.55 36.318 3.532 36.446 3.514 c
-36.446 2.926 l
-36.318 2.944 36.174 2.959 36.02 2.97 c
-35.862 2.977 35.711 2.984 35.565 2.984 c
-35.436 2.984 35.333 2.97 35.256 2.94 c
-35.175 2.911 35.112 2.87 35.065 2.822 c
-35.013 2.771 34.98 2.708 34.962 2.631 c
-34.951 2.562 34.948 2.485 34.948 2.396 c
-34.948 2.22 l
-36.373 2.22 l
-36.373 1.603 l
-h
-42.175 -2.63 m
-42.175 3.514 l
-44.101 3.514 l
-44.101 2.897 l
-43.028 2.897 l
-43.028 -2.013 l
-44.101 -2.013 l
-44.101 -2.63 l
-h
-47.133 1.603 m
-47.133 -1.263 l
-46.236 -1.263 l
-46.236 1.603 l
-45.413 1.603 l
-45.413 2.22 l
-46.236 2.22 l
-46.236 2.485 l
-46.236 2.61 46.251 2.742 46.281 2.882 c
-46.317 3.018 46.387 3.135 46.486 3.234 c
-46.593 3.341 46.736 3.429 46.912 3.499 c
-47.089 3.565 47.313 3.602 47.588 3.602 c
-47.802 3.602 48 3.591 48.176 3.572 c
-48.353 3.55 48.504 3.532 48.632 3.514 c
-48.632 2.926 l
-48.504 2.944 48.361 2.959 48.205 2.97 c
-48.047 2.977 47.897 2.984 47.75 2.984 c
-47.621 2.984 47.519 2.97 47.441 2.94 c
-47.361 2.911 47.298 2.87 47.251 2.822 c
-47.199 2.771 47.166 2.708 47.147 2.631 c
-47.137 2.562 47.133 2.485 47.133 2.396 c
-47.133 2.22 l
-48.558 2.22 l
-48.558 1.603 l
-h
-51.649 -0.646 m
-52.781 -0.646 l
-52.781 -1.263 l
-49.473 -1.263 l
-49.473 -0.646 l
-50.738 -0.646 l
-50.738 1.603 l
-49.812 1.603 l
-49.812 2.22 l
-51.649 2.22 l
-h
-50.738 3.514 0.912 -0.676 re
-50.738 2.837 m
-55.71 -0.646 m
-56.841 -0.646 l
-56.841 -1.263 l
-53.535 -1.263 l
-53.535 -0.646 l
-54.798 -0.646 l
-54.798 2.897 l
-53.872 2.897 l
-53.872 3.514 l
-55.71 3.514 l
-h
-59.23 -1.323 m
-58.973 -1.323 58.745 -1.286 58.539 -1.219 c
-58.333 -1.142 58.157 -1.028 58.01 -0.881 c
-57.863 -0.727 57.745 -0.536 57.657 -0.309 c
-57.576 -0.084 57.539 0.181 57.539 0.485 c
-57.539 0.817 57.584 1.096 57.672 1.324 c
-57.768 1.559 57.896 1.742 58.054 1.881 c
-58.22 2.018 58.407 2.117 58.613 2.176 c
-58.819 2.242 59.028 2.278 59.245 2.278 c
-59.517 2.278 59.752 2.228 59.951 2.132 c
-60.157 2.043 60.321 1.912 60.45 1.735 c
-60.586 1.566 60.685 1.36 60.744 1.118 c
-60.81 0.882 60.847 0.618 60.847 0.324 c
-60.847 0.31 l
-58.48 0.31 l
-58.48 0.162 58.495 0.023 58.524 -0.103 c
-58.561 -0.231 58.617 -0.345 58.686 -0.44 c
-58.752 -0.529 58.837 -0.598 58.936 -0.646 c
-59.031 -0.698 59.145 -0.72 59.274 -0.72 c
-59.428 -0.72 59.569 -0.687 59.686 -0.617 c
-59.81 -0.55 59.899 -0.448 59.951 -0.309 c
-60.788 -0.382 l
-60.759 -0.481 60.704 -0.588 60.627 -0.706 c
-60.546 -0.816 60.443 -0.918 60.317 -1.014 c
-60.2 -1.102 60.046 -1.176 59.862 -1.234 c
-59.686 -1.294 59.473 -1.323 59.23 -1.323 c
-59.23 1.706 m
-59.141 1.706 59.054 1.691 58.966 1.661 c
-58.877 1.632 58.796 1.58 58.73 1.515 c
-58.661 1.445 58.602 1.357 58.554 1.25 c
-58.514 1.139 58.495 1.015 58.495 0.867 c
-59.965 0.867 l
-59.965 1.004 59.939 1.125 59.891 1.235 c
-59.851 1.341 59.796 1.43 59.729 1.5 c
-59.671 1.566 59.598 1.617 59.509 1.646 c
-59.421 1.684 59.326 1.706 59.23 1.706 c
-62.1 -2.63 m
-62.1 -2.013 l
-63.173 -2.013 l
-63.173 2.897 l
-62.1 2.897 l
-62.1 3.514 l
-64.026 3.514 l
-64.026 -2.63 l
-h
-f
-Q
-q 1 0 0 1 346.0048 361.4887 cm
-0 0 m
-0 0.264 -0.073 0.463 -0.22 0.603 c
--0.359 0.75 -0.617 0.889 -0.999 1.029 c
--1.374 1.165 -1.66 1.309 -1.866 1.455 c
--2.065 1.602 -2.212 1.768 -2.308 1.955 c
--2.406 2.15 -2.454 2.371 -2.454 2.616 c
--2.454 3.036 -2.315 3.385 -2.028 3.66 c
--1.745 3.932 -1.377 4.072 -0.926 4.072 c
--0.613 4.072 -0.334 3.998 -0.087 3.851 c
-0.154 3.711 0.342 3.516 0.47 3.263 c
-0.607 3.017 0.676 2.749 0.676 2.454 c
-0 2.454 l
-0 2.786 -0.081 3.042 -0.235 3.219 c
--0.393 3.403 -0.625 3.499 -0.926 3.499 c
--1.19 3.499 -1.404 3.418 -1.558 3.263 c
--1.705 3.117 -1.778 2.903 -1.778 2.631 c
--1.778 2.404 -1.701 2.213 -1.543 2.058 c
--1.377 1.911 -1.124 1.771 -0.779 1.646 c
--0.261 1.477 0.111 1.268 0.339 1.014 c
-0.574 0.757 0.691 0.426 0.691 0.015 c
-0.691 -0.426 0.548 -0.779 0.265 -1.043 c
--0.022 -1.301 -0.404 -1.426 -0.881 -1.426 c
--1.198 -1.426 -1.484 -1.356 -1.749 -1.22 c
--2.013 -1.084 -2.227 -0.893 -2.381 -0.646 c
--2.528 -0.405 -2.601 -0.118 -2.601 0.206 c
--1.925 0.206 l
--1.925 -0.129 -1.833 -0.389 -1.646 -0.573 c
--1.462 -0.76 -1.205 -0.852 -0.881 -0.852 c
--0.588 -0.852 -0.367 -0.779 -0.22 -0.632 c
--0.073 -0.478 0 -0.264 0 0 c
-2.117 2.219 m
-2.371 2.543 2.691 2.705 3.072 2.705 c
-3.778 2.705 4.135 2.234 4.146 1.294 c
-4.146 -1.352 l
-3.499 -1.352 l
-3.499 1.264 l
-3.499 1.577 3.444 1.797 3.337 1.926 c
-3.227 2.051 3.072 2.117 2.866 2.117 c
-2.708 2.117 2.562 2.062 2.425 1.955 c
-2.297 1.845 2.194 1.709 2.117 1.544 c
-2.117 -1.352 l
-1.47 -1.352 l
-1.47 4.293 l
-2.117 4.293 l
-h
-4.969 0.823 m
-4.969 1.4 5.104 1.856 5.38 2.19 c
-5.663 2.532 6.034 2.705 6.498 2.705 c
-6.957 2.705 7.325 2.535 7.599 2.205 c
-7.882 1.881 8.03 1.434 8.04 0.867 c
-8.04 0.441 l
-8.04 -0.129 7.898 -0.584 7.614 -0.926 c
-7.339 -1.261 6.972 -1.426 6.512 -1.426 c
-6.049 -1.426 5.678 -1.264 5.395 -0.941 c
-5.12 -0.61 4.976 -0.169 4.969 0.382 c
-h
-5.615 0.441 m
-5.615 0.037 5.692 -0.279 5.85 -0.515 c
-6.016 -0.75 6.236 -0.867 6.512 -0.867 c
-7.078 -0.867 7.372 -0.455 7.394 0.368 c
-7.394 0.823 l
-7.394 1.224 7.31 1.544 7.144 1.779 c
-6.986 2.022 6.77 2.146 6.498 2.146 c
-6.232 2.146 6.016 2.022 5.85 1.779 c
-5.692 1.544 5.615 1.224 5.615 0.823 c
-h
-11.848 -0.206 m
-12.451 2.631 l
-13.097 2.631 l
-12.112 -1.352 l
-11.597 -1.352 l
-10.819 1.5 l
-10.07 -1.352 l
-9.54 -1.352 l
-8.584 2.631 l
-9.216 2.631 l
-9.834 -0.133 l
-10.569 2.631 l
-11.084 2.631 l
-h
-16.875 -0.867 m
-17.088 -0.867 17.261 -0.804 17.39 -0.676 c
-17.525 -0.54 17.598 -0.349 17.61 -0.103 c
-18.227 -0.103 l
-18.205 -0.485 18.069 -0.804 17.816 -1.058 c
-17.558 -1.305 17.246 -1.426 16.875 -1.426 c
-16.382 -1.426 16.008 -1.275 15.743 -0.97 c
-15.486 -0.658 15.36 -0.191 15.36 0.426 c
-15.36 0.867 l
-15.36 1.463 15.486 1.918 15.743 2.234 c
-16.008 2.547 16.382 2.705 16.875 2.705 c
-17.276 2.705 17.596 2.572 17.831 2.308 c
-18.073 2.051 18.205 1.706 18.227 1.264 c
-17.61 1.264 l
-17.588 1.558 17.515 1.779 17.39 1.926 c
-17.272 2.072 17.099 2.146 16.875 2.146 c
-16.581 2.146 16.364 2.047 16.228 1.852 c
-16.089 1.665 16.015 1.357 16.008 0.926 c
-16.008 0.412 l
-16.008 -0.058 16.073 -0.393 16.214 -0.588 c
-16.36 -0.775 16.581 -0.867 16.875 -0.867 c
-19.624 2.219 m
-19.877 2.543 20.197 2.705 20.579 2.705 c
-21.284 2.705 21.641 2.234 21.652 1.294 c
-21.652 -1.352 l
-21.005 -1.352 l
-21.005 1.264 l
-21.005 1.577 20.95 1.797 20.844 1.926 c
-20.733 2.051 20.579 2.117 20.374 2.117 c
-20.216 2.117 20.068 2.062 19.932 1.955 c
-19.804 1.845 19.701 1.709 19.624 1.544 c
-19.624 -1.352 l
-18.977 -1.352 l
-18.977 4.293 l
-19.624 4.293 l
-h
-24.651 -1.352 m
-24.611 -1.264 24.584 -1.117 24.577 -0.912 c
-24.342 -1.257 24.048 -1.426 23.695 -1.426 c
-23.331 -1.426 23.048 -1.33 22.843 -1.132 c
-22.645 -0.926 22.549 -0.64 22.549 -0.264 c
-22.549 0.136 22.685 0.455 22.961 0.69 c
-23.232 0.933 23.607 1.058 24.077 1.058 c
-24.563 1.058 l
-24.563 1.484 l
-24.563 1.72 24.507 1.885 24.401 1.984 c
-24.291 2.091 24.129 2.146 23.915 2.146 c
-23.717 2.146 23.555 2.087 23.431 1.97 c
-23.313 1.852 23.254 1.706 23.254 1.529 c
-22.608 1.529 l
-22.608 1.723 22.666 1.914 22.784 2.102 c
-22.909 2.286 23.071 2.433 23.269 2.543 c
-23.475 2.65 23.703 2.705 23.96 2.705 c
-24.36 2.705 24.665 2.602 24.871 2.396 c
-25.084 2.19 25.199 1.897 25.209 1.514 c
-25.209 -0.5 l
-25.209 -0.804 25.246 -1.07 25.327 -1.294 c
-25.327 -1.352 l
-h
-23.784 -0.838 m
-23.948 -0.838 24.1 -0.794 24.239 -0.706 c
-24.386 -0.617 24.493 -0.507 24.563 -0.368 c
-24.563 0.573 l
-24.195 0.573 l
-23.879 0.573 23.636 0.503 23.46 0.368 c
-23.283 0.239 23.196 0.052 23.196 -0.191 c
-23.196 -0.419 23.24 -0.584 23.328 -0.691 c
-23.416 -0.79 23.566 -0.838 23.784 -0.838 c
-26.826 2.631 m
-26.841 2.19 l
-27.094 2.532 27.418 2.705 27.811 2.705 c
-28.517 2.705 28.873 2.234 28.884 1.294 c
-28.884 -1.352 l
-28.237 -1.352 l
-28.237 1.264 l
-28.237 1.577 28.182 1.797 28.075 1.926 c
-27.965 2.051 27.811 2.117 27.605 2.117 c
-27.447 2.117 27.3 2.062 27.164 1.955 c
-27.036 1.845 26.932 1.709 26.855 1.544 c
-26.855 -1.352 l
-26.209 -1.352 l
-26.209 2.631 l
-h
-29.722 0.823 m
-29.722 1.44 29.832 1.904 30.06 2.219 c
-30.284 2.543 30.618 2.705 31.059 2.705 c
-31.46 2.705 31.765 2.529 31.971 2.176 c
-32.015 2.631 l
-32.603 2.631 l
-32.603 -1.396 l
-32.603 -1.885 32.474 -2.263 32.22 -2.528 c
-31.964 -2.793 31.611 -2.925 31.162 -2.925 c
-30.964 -2.925 30.743 -2.874 30.501 -2.778 c
-30.255 -2.679 30.074 -2.558 29.957 -2.41 c
-30.221 -1.97 l
-30.487 -2.234 30.784 -2.367 31.118 -2.367 c
-31.655 -2.367 31.931 -2.072 31.942 -1.484 c
-31.942 -0.956 l
-31.736 -1.271 31.434 -1.426 31.044 -1.426 c
-30.633 -1.426 30.31 -1.275 30.074 -0.97 c
-29.847 -0.658 29.729 -0.206 29.722 0.382 c
-h
-30.383 0.441 m
-30.383 0 30.446 -0.33 30.574 -0.544 c
-30.699 -0.75 30.916 -0.852 31.221 -0.852 c
-31.545 -0.852 31.784 -0.687 31.942 -0.353 c
-31.942 1.631 l
-31.773 1.955 31.534 2.117 31.221 2.117 c
-30.927 2.117 30.71 2.014 30.574 1.808 c
-30.446 1.602 30.383 1.278 30.383 0.838 c
-h
-34.984 -1.426 m
-34.485 -1.426 34.102 -1.278 33.837 -0.985 c
-33.573 -0.691 33.44 -0.257 33.44 0.324 c
-33.44 0.794 l
-33.44 1.389 33.566 1.856 33.823 2.19 c
-34.088 2.532 34.448 2.705 34.911 2.705 c
-35.37 2.705 35.711 2.55 35.94 2.249 c
-36.175 1.955 36.296 1.492 36.307 0.867 c
-36.307 0.441 l
-34.088 0.441 l
-34.088 0.353 l
-34.088 -0.081 34.165 -0.393 34.323 -0.588 c
-34.488 -0.775 34.72 -0.867 35.013 -0.867 c
-35.208 -0.867 35.381 -0.834 35.528 -0.764 c
-35.675 -0.687 35.811 -0.569 35.94 -0.411 c
-36.278 -0.823 l
-35.991 -1.228 35.561 -1.426 34.984 -1.426 c
-34.911 2.146 m
-34.635 2.146 34.433 2.051 34.308 1.866 c
-34.179 1.679 34.106 1.389 34.088 1 c
-35.661 1 l
-35.661 1.087 l
-35.638 1.47 35.572 1.738 35.455 1.897 c
-35.337 2.062 35.154 2.146 34.911 2.146 c
-39.027 -0.338 m
-39.027 -0.191 38.971 -0.07 38.865 0.029 c
-38.755 0.125 38.549 0.243 38.248 0.382 c
-37.901 0.53 37.66 0.651 37.512 0.75 c
-37.365 0.856 37.255 0.974 37.189 1.103 c
-37.119 1.228 37.086 1.386 37.086 1.573 c
-37.086 1.897 37.203 2.165 37.439 2.381 c
-37.674 2.595 37.976 2.705 38.35 2.705 c
-38.732 2.705 39.041 2.591 39.276 2.367 c
-39.511 2.139 39.629 1.852 39.629 1.5 c
-38.982 1.5 l
-38.982 1.675 38.923 1.827 38.806 1.955 c
-38.688 2.08 38.534 2.146 38.35 2.146 c
-38.152 2.146 38.001 2.091 37.895 1.984 c
-37.784 1.885 37.733 1.753 37.733 1.588 c
-37.733 1.459 37.77 1.353 37.851 1.264 c
-37.928 1.183 38.119 1.081 38.424 0.956 c
-38.901 0.769 39.233 0.58 39.409 0.397 c
-39.584 0.22 39.673 -0.008 39.673 -0.279 c
-39.673 -0.632 39.548 -0.912 39.306 -1.117 c
-39.071 -1.323 38.755 -1.426 38.365 -1.426 c
-37.942 -1.426 37.604 -1.309 37.351 -1.073 c
-37.093 -0.831 36.968 -0.525 36.968 -0.162 c
-37.615 -0.162 l
-37.623 -0.389 37.693 -0.565 37.821 -0.691 c
-37.946 -0.808 38.13 -0.867 38.365 -0.867 c
-38.578 -0.867 38.74 -0.819 38.85 -0.721 c
-38.967 -0.625 39.027 -0.496 39.027 -0.338 c
-45.112 0.441 m
-45.112 -0.176 44.997 -0.643 44.774 -0.956 c
-44.557 -1.271 44.234 -1.426 43.804 -1.426 c
-43.381 -1.426 43.069 -1.246 42.863 -0.881 c
-42.834 -1.352 l
-42.231 -1.352 l
-42.231 4.293 l
-42.877 4.293 l
-42.877 2.19 l
-43.091 2.532 43.399 2.705 43.804 2.705 c
-44.234 2.705 44.557 2.547 44.774 2.234 c
-44.997 1.929 45.112 1.463 45.112 0.838 c
-h
-44.465 0.823 m
-44.465 1.294 44.395 1.625 44.259 1.823 c
-44.131 2.018 43.921 2.117 43.627 2.117 c
-43.293 2.117 43.043 1.933 42.877 1.573 c
-42.877 -0.309 l
-43.043 -0.673 43.297 -0.852 43.642 -0.852 c
-43.936 -0.852 44.145 -0.75 44.274 -0.544 c
-44.399 -0.338 44.465 -0.022 44.465 0.412 c
-h
-47.376 -1.426 m
-46.875 -1.426 46.493 -1.278 46.229 -0.985 c
-45.965 -0.691 45.832 -0.257 45.832 0.324 c
-45.832 0.794 l
-45.832 1.389 45.957 1.856 46.214 2.19 c
-46.479 2.532 46.839 2.705 47.302 2.705 c
-47.761 2.705 48.103 2.55 48.331 2.249 c
-48.566 1.955 48.687 1.492 48.698 0.867 c
-48.698 0.441 l
-46.479 0.441 l
-46.479 0.353 l
-46.479 -0.081 46.556 -0.393 46.714 -0.588 c
-46.879 -0.775 47.11 -0.867 47.405 -0.867 c
-47.6 -0.867 47.773 -0.834 47.919 -0.764 c
-48.066 -0.687 48.203 -0.569 48.331 -0.411 c
-48.669 -0.823 l
-48.382 -1.228 47.952 -1.426 47.376 -1.426 c
-47.302 2.146 m
-47.027 2.146 46.824 2.051 46.699 1.866 c
-46.57 1.679 46.497 1.389 46.479 1 c
-48.051 1 l
-48.051 1.087 l
-48.029 1.47 47.964 1.738 47.846 1.897 c
-47.728 2.062 47.544 2.146 47.302 2.146 c
-50.33 3.587 m
-50.33 2.631 l
-50.933 2.631 l
-50.933 2.102 l
-50.33 2.102 l
-50.33 -0.368 l
-50.33 -0.525 50.352 -0.643 50.403 -0.721 c
-50.462 -0.801 50.551 -0.838 50.668 -0.838 c
-50.757 -0.838 50.844 -0.823 50.933 -0.794 c
-50.933 -1.352 l
-50.786 -1.4 50.632 -1.426 50.477 -1.426 c
-50.22 -1.426 50.025 -1.334 49.889 -1.147 c
-49.749 -0.962 49.683 -0.702 49.683 -0.368 c
-49.683 2.102 l
-49.08 2.102 l
-49.08 2.631 l
-49.683 2.631 l
-49.683 3.587 l
-h
-54.666 -0.206 m
-55.268 2.631 l
-55.916 2.631 l
-54.931 -1.352 l
-54.416 -1.352 l
-53.637 1.5 l
-52.887 -1.352 l
-52.359 -1.352 l
-51.403 2.631 l
-52.035 2.631 l
-52.652 -0.133 l
-53.387 2.631 l
-53.902 2.631 l
-h
-58.017 -1.426 m
-57.518 -1.426 57.136 -1.278 56.871 -0.985 c
-56.606 -0.691 56.474 -0.257 56.474 0.324 c
-56.474 0.794 l
-56.474 1.389 56.599 1.856 56.856 2.19 c
-57.121 2.532 57.481 2.705 57.944 2.705 c
-58.403 2.705 58.745 2.55 58.973 2.249 c
-59.208 1.955 59.33 1.492 59.34 0.867 c
-59.34 0.441 l
-57.121 0.441 l
-57.121 0.353 l
-57.121 -0.081 57.198 -0.393 57.356 -0.588 c
-57.522 -0.775 57.753 -0.867 58.047 -0.867 c
-58.242 -0.867 58.414 -0.834 58.561 -0.764 c
-58.709 -0.687 58.844 -0.569 58.973 -0.411 c
-59.311 -0.823 l
-59.025 -1.228 58.595 -1.426 58.017 -1.426 c
-57.944 2.146 m
-57.668 2.146 57.466 2.051 57.342 1.866 c
-57.213 1.679 57.14 1.389 57.121 1 c
-58.694 1 l
-58.694 1.087 l
-58.672 1.47 58.605 1.738 58.488 1.897 c
-58.37 2.062 58.187 2.146 57.944 2.146 c
-61.545 -1.426 m
-61.046 -1.426 60.664 -1.278 60.399 -0.985 c
-60.134 -0.691 60.002 -0.257 60.002 0.324 c
-60.002 0.794 l
-60.002 1.389 60.126 1.856 60.384 2.19 c
-60.649 2.532 61.009 2.705 61.472 2.705 c
-61.931 2.705 62.273 2.55 62.501 2.249 c
-62.736 1.955 62.857 1.492 62.868 0.867 c
-62.868 0.441 l
-60.649 0.441 l
-60.649 0.353 l
-60.649 -0.081 60.726 -0.393 60.884 -0.588 c
-61.049 -0.775 61.281 -0.867 61.575 -0.867 c
-61.77 -0.867 61.942 -0.834 62.089 -0.764 c
-62.236 -0.687 62.372 -0.569 62.501 -0.411 c
-62.839 -0.823 l
-62.553 -1.228 62.123 -1.426 61.545 -1.426 c
-61.472 2.146 m
-61.196 2.146 60.994 2.051 60.87 1.866 c
-60.741 1.679 60.667 1.389 60.649 1 c
-62.221 1 l
-62.221 1.087 l
-62.2 1.47 62.133 1.738 62.015 1.897 c
-61.898 2.062 61.714 2.146 61.472 2.146 c
-64.265 2.631 m
-64.279 2.19 l
-64.533 2.532 64.856 2.705 65.25 2.705 c
-65.955 2.705 66.312 2.234 66.322 1.294 c
-66.322 -1.352 l
-65.676 -1.352 l
-65.676 1.264 l
-65.676 1.577 65.62 1.797 65.514 1.926 c
-65.404 2.051 65.25 2.117 65.044 2.117 c
-64.886 2.117 64.739 2.062 64.602 1.955 c
-64.475 1.845 64.371 1.709 64.294 1.544 c
-64.294 -1.352 l
-63.648 -1.352 l
-63.648 2.631 l
-h
-f
-Q
-q 1 0 0 1 417.8096 361.8857 cm
-0 0 m
-0.354 2.234 l
-1.353 2.234 l
-0.53 -1.749 l
--0.338 -1.749 l
--0.897 0.559 l
--1.454 -1.749 l
--2.322 -1.749 l
--3.145 2.234 l
--2.146 2.234 l
--1.793 0 l
--1.263 2.234 l
--0.529 2.234 l
-h
-1.75 0.368 m
-1.75 0.974 1.889 1.448 2.176 1.793 c
-2.459 2.135 2.852 2.308 3.352 2.308 c
-3.859 2.308 4.256 2.135 4.543 1.793 c
-4.825 1.448 4.969 0.974 4.969 0.368 c
-4.969 0.103 l
-4.969 -0.496 4.825 -0.966 4.543 -1.309 c
-4.256 -1.654 3.859 -1.823 3.352 -1.823 c
-2.841 -1.823 2.444 -1.654 2.161 -1.309 c
-1.885 -0.966 1.75 -0.492 1.75 0.118 c
-h
-2.793 0.103 m
-2.793 -0.603 2.977 -0.956 3.352 -0.956 c
-3.705 -0.956 3.896 -0.661 3.925 -0.073 c
-3.925 0.368 l
-3.925 0.727 3.874 0.999 3.778 1.176 c
-3.679 1.352 3.535 1.44 3.352 1.44 c
-3.176 1.44 3.036 1.352 2.941 1.176 c
-2.841 0.999 2.793 0.727 2.793 0.368 c
-h
-7.57 1.22 m
-7.232 1.249 l
-6.945 1.249 6.754 1.124 6.659 0.881 c
-6.659 -1.749 l
-5.615 -1.749 l
-5.615 2.234 l
-6.585 2.234 l
-6.615 1.793 l
-6.781 2.135 7.012 2.308 7.306 2.308 c
-7.423 2.308 7.516 2.286 7.585 2.249 c
-h
-9.437 -0.22 m
-9.158 -0.53 l
-9.158 -1.749 l
-8.115 -1.749 l
-8.115 3.896 l
-9.158 3.896 l
-9.158 0.852 l
-9.276 1.043 l
-9.996 2.234 l
-11.246 2.234 l
-10.084 0.588 l
-11.348 -1.749 l
-10.157 -1.749 l
-h
-12.803 -1.749 -1.044 3.983 re
-11.716 3.263 m
-11.716 3.418 11.763 3.547 11.863 3.645 c
-11.969 3.752 12.105 3.807 12.274 3.807 c
-12.451 3.807 12.586 3.752 12.686 3.645 c
-12.792 3.547 12.848 3.418 12.848 3.263 c
-12.848 3.094 12.792 2.959 12.686 2.851 c
-12.586 2.753 12.451 2.705 12.274 2.705 c
-12.105 2.705 11.969 2.753 11.863 2.851 c
-11.763 2.959 11.716 3.094 11.716 3.263 c
-14.567 2.234 m
-14.596 1.837 l
-14.832 2.15 15.133 2.308 15.508 2.308 c
-16.191 2.308 16.544 1.826 16.566 0.867 c
-16.566 -1.749 l
-15.522 -1.749 l
-15.522 0.794 l
-15.522 1.018 15.486 1.18 15.42 1.278 c
-15.35 1.374 15.232 1.426 15.067 1.426 c
-14.88 1.426 14.733 1.33 14.626 1.147 c
-14.626 -1.749 l
-13.582 -1.749 l
-13.582 2.234 l
-h
-17.184 0.368 m
-17.184 1.014 17.301 1.5 17.536 1.822 c
-17.771 2.146 18.103 2.308 18.536 2.308 c
-18.889 2.308 19.161 2.165 19.359 1.881 c
-19.404 2.234 l
-20.344 2.234 l
-20.344 -1.749 l
-20.344 -2.256 20.2 -2.646 19.917 -2.911 c
-19.631 -3.183 19.227 -3.322 18.698 -3.322 c
-18.47 -3.322 18.234 -3.278 17.993 -3.19 c
-17.757 -3.102 17.581 -2.988 17.463 -2.851 c
-17.816 -2.132 l
-17.912 -2.238 18.04 -2.323 18.198 -2.381 c
-18.352 -2.448 18.5 -2.485 18.639 -2.485 c
-18.874 -2.485 19.04 -2.425 19.138 -2.308 c
-19.246 -2.198 19.3 -2.021 19.3 -1.779 c
-19.3 -1.426 l
-19.102 -1.691 18.845 -1.823 18.521 -1.823 c
-18.099 -1.823 17.771 -1.661 17.536 -1.338 c
-17.309 -1.007 17.191 -0.536 17.184 0.073 c
-h
-18.228 0.103 m
-18.228 -0.272 18.275 -0.54 18.375 -0.706 c
-18.47 -0.875 18.624 -0.956 18.83 -0.956 c
-19.043 -0.956 19.201 -0.879 19.3 -0.721 c
-19.3 1.176 l
-19.19 1.341 19.036 1.426 18.83 1.426 c
-18.624 1.426 18.47 1.341 18.375 1.176 c
-18.275 1.007 18.228 0.738 18.228 0.368 c
-h
-22.696 0.368 m
-22.696 1.014 22.803 1.5 23.019 1.822 c
-23.244 2.146 23.566 2.308 23.989 2.308 c
-24.302 2.308 24.555 2.175 24.754 1.911 c
-24.754 3.896 l
-25.812 3.896 l
-25.812 -1.749 l
-24.856 -1.749 l
-24.813 -1.338 l
-24.596 -1.661 24.32 -1.823 23.989 -1.823 c
-23.578 -1.823 23.258 -1.668 23.034 -1.353 c
-22.817 -1.029 22.703 -0.559 22.696 0.058 c
-h
-23.74 0.103 m
-23.74 -0.291 23.776 -0.566 23.857 -0.721 c
-23.946 -0.879 24.092 -0.956 24.298 -0.956 c
-24.503 -0.956 24.655 -0.864 24.754 -0.676 c
-24.754 1.132 l
-24.655 1.326 24.503 1.426 24.298 1.426 c
-24.1 1.426 23.96 1.345 23.872 1.191 c
-23.784 1.043 23.74 0.771 23.74 0.382 c
-h
-27.664 -1.749 -1.044 3.983 re
-26.576 3.263 m
-26.576 3.418 26.624 3.547 26.724 3.645 c
-26.83 3.752 26.966 3.807 27.135 3.807 c
-27.312 3.807 27.447 3.752 27.547 3.645 c
-27.653 3.547 27.708 3.418 27.708 3.263 c
-27.708 3.094 27.653 2.959 27.547 2.851 c
-27.447 2.753 27.312 2.705 27.135 2.705 c
-26.966 2.705 26.83 2.753 26.724 2.851 c
-26.624 2.959 26.576 3.094 26.576 3.263 c
-30.427 1.22 m
-30.09 1.249 l
-29.803 1.249 29.612 1.124 29.517 0.881 c
-29.517 -1.749 l
-28.472 -1.749 l
-28.472 2.234 l
-29.442 2.234 l
-29.472 1.793 l
-29.637 2.135 29.868 2.308 30.163 2.308 c
-30.28 2.308 30.373 2.286 30.442 2.249 c
-h
-32.5 -1.823 m
-31.971 -1.823 31.552 -1.668 31.25 -1.353 c
-30.957 -1.029 30.809 -0.569 30.809 0.029 c
-30.809 0.338 l
-30.809 0.962 30.946 1.448 31.221 1.793 c
-31.493 2.135 31.886 2.308 32.397 2.308 c
-32.897 2.308 33.268 2.146 33.515 1.822 c
-33.768 1.5 33.9 1.022 33.911 0.397 c
-33.911 -0.103 l
-31.838 -0.103 l
-31.857 -0.397 31.919 -0.613 32.029 -0.75 c
-32.147 -0.889 32.328 -0.956 32.574 -0.956 c
-32.915 -0.956 33.205 -0.838 33.44 -0.603 c
-33.852 -1.235 l
-33.724 -1.411 33.536 -1.554 33.294 -1.661 c
-33.047 -1.768 32.783 -1.823 32.5 -1.823 c
-31.853 0.617 m
-32.883 0.617 l
-32.883 0.721 l
-32.883 0.956 32.842 1.132 32.765 1.249 c
-32.694 1.374 32.566 1.44 32.382 1.44 c
-32.206 1.44 32.074 1.371 31.985 1.234 c
-31.905 1.106 31.861 0.9 31.853 0.617 c
-35.94 -0.956 m
-36.233 -0.956 36.384 -0.761 36.395 -0.368 c
-37.365 -0.368 l
-37.365 -0.802 37.233 -1.154 36.968 -1.426 c
-36.704 -1.691 36.366 -1.823 35.954 -1.823 c
-35.443 -1.823 35.05 -1.668 34.778 -1.353 c
-34.514 -1.029 34.375 -0.559 34.367 0.058 c
-34.367 0.382 l
-34.367 1.007 34.499 1.484 34.764 1.808 c
-35.036 2.138 35.433 2.308 35.954 2.308 c
-36.384 2.308 36.726 2.168 36.983 1.897 c
-37.237 1.621 37.365 1.238 37.365 0.75 c
-36.395 0.75 l
-36.395 0.962 36.355 1.132 36.278 1.249 c
-36.208 1.374 36.091 1.44 35.925 1.44 c
-35.748 1.44 35.62 1.374 35.543 1.249 c
-35.462 1.12 35.418 0.871 35.41 0.5 c
-35.41 0.088 l
-35.41 -0.235 35.425 -0.463 35.455 -0.588 c
-35.491 -0.717 35.547 -0.808 35.616 -0.867 c
-35.694 -0.926 35.8 -0.956 35.94 -0.956 c
-39.173 3.204 m
-39.173 2.234 l
-39.703 2.234 l
-39.703 1.44 l
-39.173 1.44 l
-39.173 -0.53 l
-39.173 -0.687 39.192 -0.794 39.233 -0.852 c
-39.28 -0.912 39.364 -0.941 39.482 -0.941 c
-39.589 -0.941 39.673 -0.933 39.732 -0.912 c
-39.732 -1.72 l
-39.555 -1.786 39.364 -1.823 39.159 -1.823 c
-38.483 -1.823 38.138 -1.437 38.13 -0.661 c
-38.13 1.44 l
-37.674 1.44 l
-37.674 2.234 l
-38.13 2.234 l
-38.13 3.204 l
-h
-40.056 0.368 m
-40.056 0.974 40.195 1.448 40.482 1.793 c
-40.765 2.135 41.157 2.308 41.658 2.308 c
-42.165 2.308 42.562 2.135 42.848 1.793 c
-43.131 1.448 43.274 0.974 43.274 0.368 c
-43.274 0.103 l
-43.274 -0.496 43.131 -0.966 42.848 -1.309 c
-42.562 -1.654 42.165 -1.823 41.658 -1.823 c
-41.147 -1.823 40.75 -1.654 40.467 -1.309 c
-40.191 -0.966 40.056 -0.492 40.056 0.118 c
-h
-41.099 0.103 m
-41.099 -0.603 41.282 -0.956 41.658 -0.956 c
-42.011 -0.956 42.202 -0.661 42.231 -0.073 c
-42.231 0.368 l
-42.231 0.727 42.179 0.999 42.084 1.176 c
-41.984 1.352 41.841 1.44 41.658 1.44 c
-41.481 1.44 41.342 1.352 41.246 1.176 c
-41.147 0.999 41.099 0.727 41.099 0.368 c
-h
-45.876 1.22 m
-45.538 1.249 l
-45.251 1.249 45.06 1.124 44.965 0.881 c
-44.965 -1.749 l
-43.921 -1.749 l
-43.921 2.234 l
-44.891 2.234 l
-44.92 1.793 l
-45.086 2.135 45.317 2.308 45.612 2.308 c
-45.729 2.308 45.822 2.286 45.891 2.249 c
-h
-47.773 -0.015 m
-48.301 2.234 l
-49.404 2.234 l
-48.096 -2.352 l
-47.898 -3.017 47.53 -3.352 46.994 -3.352 c
-46.865 -3.352 46.722 -3.329 46.567 -3.293 c
-46.567 -2.469 l
-46.685 -2.485 l
-46.85 -2.485 46.971 -2.448 47.052 -2.381 c
-47.129 -2.323 47.192 -2.213 47.243 -2.058 c
-47.316 -1.793 l
-46.171 2.234 l
-47.287 2.234 l
-h
-f
-Q
-q 1 0 0 1 471.5352 360.1369 cm
-0 0 m
--0.04 0.087 -0.066 0.235 -0.073 0.44 c
--0.309 0.095 -0.603 -0.074 -0.956 -0.074 c
--1.319 -0.074 -1.602 0.022 -1.808 0.22 c
--2.007 0.426 -2.102 0.712 -2.102 1.087 c
--2.102 1.488 -1.966 1.807 -1.691 2.042 c
--1.419 2.285 -1.044 2.41 -0.574 2.41 c
--0.088 2.41 l
--0.088 2.836 l
--0.088 3.071 -0.143 3.237 -0.25 3.336 c
--0.36 3.443 -0.522 3.498 -0.735 3.498 c
--0.933 3.498 -1.095 3.439 -1.22 3.322 c
--1.338 3.204 -1.396 3.057 -1.396 2.881 c
--2.043 2.881 l
--2.043 3.075 -1.985 3.266 -1.866 3.453 c
--1.742 3.638 -1.58 3.785 -1.382 3.895 c
--1.176 4.002 -0.948 4.056 -0.691 4.056 c
--0.291 4.056 0.015 3.954 0.22 3.748 c
-0.434 3.542 0.547 3.248 0.559 2.865 c
-0.559 0.852 l
-0.559 0.547 0.595 0.282 0.676 0.058 c
-0.676 0 l
-h
--0.867 0.514 m
--0.702 0.514 -0.551 0.558 -0.412 0.646 c
--0.264 0.735 -0.158 0.845 -0.088 0.984 c
--0.088 1.925 l
--0.455 1.925 l
--0.771 1.925 -1.014 1.855 -1.191 1.72 c
--1.367 1.591 -1.455 1.404 -1.455 1.161 c
--1.455 0.933 -1.411 0.768 -1.323 0.661 c
--1.235 0.562 -1.084 0.514 -0.867 0.514 c
-2.175 3.983 m
-2.19 3.542 l
-2.444 3.884 2.767 4.056 3.16 4.056 c
-3.865 4.056 4.222 3.586 4.233 2.645 c
-4.233 0 l
-3.586 0 l
-3.586 2.616 l
-3.586 2.929 3.532 3.149 3.424 3.278 c
-3.314 3.403 3.16 3.469 2.954 3.469 c
-2.797 3.469 2.649 3.414 2.514 3.307 c
-2.385 3.197 2.282 3.061 2.205 2.896 c
-2.205 0 l
-1.558 0 l
-1.558 3.983 l
-h
-5.071 2.175 m
-5.071 2.782 5.182 3.248 5.409 3.571 c
-5.644 3.895 5.972 4.056 6.394 4.056 c
-6.776 4.056 7.073 3.898 7.291 3.586 c
-7.291 5.644 l
-7.937 5.644 l
-7.937 0 l
-7.349 0 l
-7.306 0.426 l
-7.1 0.091 6.795 -0.074 6.394 -0.074 c
-5.982 -0.074 5.659 0.081 5.424 0.396 c
-5.189 0.72 5.071 1.176 5.071 1.764 c
-h
-5.718 1.793 m
-5.718 1.352 5.78 1.022 5.909 0.808 c
-6.045 0.602 6.265 0.5 6.57 0.5 c
-6.894 0.5 7.133 0.661 7.291 0.984 c
-7.291 2.998 l
-7.121 3.31 6.882 3.469 6.57 3.469 c
-6.265 3.469 6.045 3.366 5.909 3.16 c
-5.78 2.954 5.718 2.63 5.718 2.19 c
-h
-f
-Q
-q 1 0 0 1 483.8532 361.2093 cm
-0 0 m
-0 0.088 -0.044 0.166 -0.133 0.235 c
--0.221 0.312 -0.408 0.416 -0.691 0.544 c
--1.125 0.721 -1.422 0.9 -1.588 1.087 c
--1.746 1.272 -1.823 1.503 -1.823 1.779 c
--1.823 2.12 -1.702 2.404 -1.455 2.631 c
--1.202 2.866 -0.864 2.984 -0.441 2.984 c
--0.011 2.984 0.338 2.87 0.602 2.646 c
-0.867 2.419 0.999 2.117 0.999 1.735 c
--0.044 1.735 l
--0.044 2.058 -0.184 2.22 -0.456 2.22 c
--0.566 2.22 -0.655 2.183 -0.721 2.117 c
--0.79 2.047 -0.823 1.948 -0.823 1.823 c
--0.823 1.735 -0.786 1.654 -0.706 1.588 c
--0.628 1.529 -0.449 1.434 -0.162 1.309 c
-0.268 1.151 0.565 0.974 0.735 0.779 c
-0.911 0.592 0.999 0.342 0.999 0.029 c
-0.999 -0.324 0.867 -0.61 0.602 -0.823 c
-0.338 -1.039 -0.011 -1.147 -0.441 -1.147 c
--0.736 -1.147 -0.996 -1.091 -1.22 -0.985 c
--1.448 -0.867 -1.625 -0.706 -1.75 -0.5 c
--1.867 -0.293 -1.926 -0.073 -1.926 0.162 c
--0.941 0.162 l
--0.941 -0.025 -0.904 -0.162 -0.823 -0.249 c
--0.736 -0.338 -0.603 -0.382 -0.427 -0.382 c
--0.144 -0.382 0 -0.257 0 0 c
-2.866 3.881 m
-2.866 2.911 l
-3.395 2.911 l
-3.395 2.117 l
-2.866 2.117 l
-2.866 0.147 l
-2.866 -0.01 2.884 -0.118 2.925 -0.176 c
-2.973 -0.235 3.057 -0.264 3.175 -0.264 c
-3.281 -0.264 3.366 -0.257 3.424 -0.235 c
-3.424 -1.043 l
-3.248 -1.109 3.057 -1.147 2.851 -1.147 c
-2.175 -1.147 1.83 -0.76 1.822 0.015 c
-1.822 2.117 l
-1.367 2.117 l
-1.367 2.911 l
-1.822 2.911 l
-1.822 3.881 l
-h
-5.85 -1.072 m
-5.82 -1.014 5.791 -0.912 5.762 -0.764 c
-5.574 -1.022 5.325 -1.147 5.012 -1.147 c
-4.677 -1.147 4.398 -1.039 4.174 -0.823 c
-3.958 -0.598 3.85 -0.309 3.85 0.044 c
-3.85 0.456 3.983 0.772 4.247 1 c
-4.512 1.235 4.895 1.353 5.394 1.353 c
-5.718 1.353 l
-5.718 1.675 l
-5.718 1.852 5.681 1.974 5.614 2.043 c
-5.556 2.12 5.468 2.161 5.35 2.161 c
-5.093 2.161 4.968 2.007 4.968 1.706 c
-3.925 1.706 l
-3.925 2.076 4.06 2.381 4.336 2.616 c
-4.608 2.859 4.957 2.984 5.379 2.984 c
-5.82 2.984 6.158 2.866 6.393 2.631 c
-6.636 2.404 6.761 2.08 6.761 1.661 c
-6.761 -0.206 l
-6.761 -0.551 6.809 -0.819 6.908 -1.014 c
-6.908 -1.072 l
-h
-5.247 -0.324 m
-5.354 -0.324 5.446 -0.305 5.527 -0.264 c
-5.614 -0.216 5.677 -0.158 5.718 -0.088 c
-5.718 0.735 l
-5.468 0.735 l
-5.292 0.735 5.148 0.676 5.041 0.559 c
-4.943 0.449 4.895 0.302 4.895 0.118 c
-4.895 -0.176 5.012 -0.324 5.247 -0.324 c
-7.378 1.044 m
-7.378 1.691 7.496 2.176 7.731 2.499 c
-7.966 2.822 8.297 2.984 8.731 2.984 c
-9.084 2.984 9.356 2.841 9.554 2.558 c
-9.598 2.911 l
-10.539 2.911 l
-10.539 -1.072 l
-10.539 -1.579 10.395 -1.97 10.113 -2.234 c
-9.826 -2.506 9.422 -2.645 8.893 -2.645 c
-8.665 -2.645 8.43 -2.601 8.187 -2.514 c
-7.952 -2.425 7.775 -2.311 7.658 -2.175 c
-8.01 -1.455 l
-8.106 -1.562 8.235 -1.646 8.393 -1.705 c
-8.548 -1.771 8.694 -1.808 8.834 -1.808 c
-9.069 -1.808 9.234 -1.749 9.334 -1.631 c
-9.44 -1.521 9.495 -1.344 9.495 -1.103 c
-9.495 -0.75 l
-9.296 -1.014 9.04 -1.147 8.716 -1.147 c
-8.294 -1.147 7.966 -0.985 7.731 -0.661 c
-7.503 -0.33 7.386 0.14 7.378 0.75 c
-h
-8.422 0.779 m
-8.422 0.405 8.47 0.136 8.569 -0.029 c
-8.665 -0.198 8.819 -0.279 9.025 -0.279 c
-9.238 -0.279 9.396 -0.202 9.495 -0.044 c
-9.495 1.852 l
-9.385 2.018 9.231 2.103 9.025 2.103 c
-8.819 2.103 8.665 2.018 8.569 1.852 c
-8.47 1.683 8.422 1.415 8.422 1.044 c
-h
-12.391 -1.072 -1.044 3.983 re
-11.303 3.94 m
-11.303 4.094 11.351 4.223 11.451 4.322 c
-11.557 4.428 11.692 4.484 11.862 4.484 c
-12.038 4.484 12.174 4.428 12.273 4.322 c
-12.38 4.223 12.435 4.094 12.435 3.94 c
-12.435 3.771 12.38 3.635 12.273 3.528 c
-12.174 3.429 12.038 3.381 11.862 3.381 c
-11.692 3.381 11.557 3.429 11.451 3.528 c
-11.351 3.635 11.303 3.771 11.303 3.94 c
-14.154 2.911 m
-14.184 2.514 l
-14.42 2.826 14.721 2.984 15.095 2.984 c
-15.779 2.984 16.132 2.502 16.154 1.544 c
-16.154 -1.072 l
-15.11 -1.072 l
-15.11 1.47 l
-15.11 1.694 15.073 1.856 15.008 1.955 c
-14.938 2.051 14.82 2.103 14.655 2.103 c
-14.468 2.103 14.32 2.007 14.214 1.823 c
-14.214 -1.072 l
-13.17 -1.072 l
-13.17 2.911 l
-h
-16.772 1.044 m
-16.772 1.691 16.889 2.176 17.124 2.499 c
-17.359 2.822 17.69 2.984 18.123 2.984 c
-18.476 2.984 18.748 2.841 18.947 2.558 c
-18.991 2.911 l
-19.931 2.911 l
-19.931 -1.072 l
-19.931 -1.579 19.788 -1.97 19.505 -2.234 c
-19.218 -2.506 18.815 -2.645 18.285 -2.645 c
-18.057 -2.645 17.822 -2.601 17.58 -2.514 c
-17.344 -2.425 17.168 -2.311 17.051 -2.175 c
-17.404 -1.455 l
-17.499 -1.562 17.628 -1.646 17.786 -1.705 c
-17.94 -1.771 18.087 -1.808 18.227 -1.808 c
-18.462 -1.808 18.627 -1.749 18.726 -1.631 c
-18.833 -1.521 18.888 -1.344 18.888 -1.103 c
-18.888 -0.75 l
-18.69 -1.014 18.432 -1.147 18.109 -1.147 c
-17.686 -1.147 17.359 -0.985 17.124 -0.661 c
-16.897 -0.33 16.779 0.14 16.772 0.75 c
-h
-17.815 0.779 m
-17.815 0.405 17.863 0.136 17.962 -0.029 c
-18.057 -0.198 18.212 -0.279 18.418 -0.279 c
-18.63 -0.279 18.788 -0.202 18.888 -0.044 c
-18.888 1.852 l
-18.778 2.018 18.623 2.103 18.418 2.103 c
-18.212 2.103 18.057 2.018 17.962 1.852 c
-17.863 1.683 17.815 1.415 17.815 1.044 c
-h
-24.312 -1.072 m
-24.282 -1.014 24.253 -0.912 24.224 -0.764 c
-24.036 -1.022 23.787 -1.147 23.474 -1.147 c
-23.139 -1.147 22.86 -1.039 22.636 -0.823 c
-22.42 -0.598 22.312 -0.309 22.312 0.044 c
-22.312 0.456 22.445 0.772 22.709 1 c
-22.975 1.235 23.357 1.353 23.856 1.353 c
-24.18 1.353 l
-24.18 1.675 l
-24.18 1.852 24.143 1.974 24.076 2.043 c
-24.018 2.12 23.93 2.161 23.812 2.161 c
-23.555 2.161 23.43 2.007 23.43 1.706 c
-22.386 1.706 l
-22.386 2.076 22.522 2.381 22.798 2.616 c
-23.07 2.859 23.419 2.984 23.841 2.984 c
-24.282 2.984 24.621 2.866 24.856 2.631 c
-25.098 2.404 25.223 2.08 25.223 1.661 c
-25.223 -0.206 l
-25.223 -0.551 25.271 -0.819 25.37 -1.014 c
-25.37 -1.072 l
-h
-23.709 -0.324 m
-23.816 -0.324 23.908 -0.305 23.989 -0.264 c
-24.076 -0.216 24.139 -0.158 24.18 -0.088 c
-24.18 0.735 l
-23.93 0.735 l
-23.754 0.735 23.61 0.676 23.503 0.559 c
-23.405 0.449 23.357 0.302 23.357 0.118 c
-23.357 -0.176 23.474 -0.324 23.709 -0.324 c
-27.928 1.897 m
-27.59 1.926 l
-27.303 1.926 27.112 1.801 27.016 1.558 c
-27.016 -1.072 l
-25.973 -1.072 l
-25.973 2.911 l
-26.943 2.911 l
-26.973 2.469 l
-27.137 2.812 27.369 2.984 27.663 2.984 c
-27.781 2.984 27.873 2.962 27.943 2.926 c
-h
-30 -1.147 m
-29.471 -1.147 29.052 -0.992 28.751 -0.676 c
-28.457 -0.353 28.31 0.107 28.31 0.706 c
-28.31 1.014 l
-28.31 1.639 28.446 2.124 28.722 2.469 c
-28.994 2.812 29.387 2.984 29.898 2.984 c
-30.397 2.984 30.769 2.822 31.014 2.499 c
-31.268 2.176 31.401 1.698 31.411 1.073 c
-31.411 0.574 l
-29.339 0.574 l
-29.358 0.279 29.42 0.063 29.53 -0.073 c
-29.647 -0.213 29.828 -0.279 30.074 -0.279 c
-30.416 -0.279 30.706 -0.162 30.941 0.073 c
-31.353 -0.559 l
-31.224 -0.735 31.037 -0.878 30.794 -0.985 c
-30.548 -1.091 30.283 -1.147 30 -1.147 c
-29.354 1.294 m
-30.382 1.294 l
-30.382 1.397 l
-30.382 1.632 30.343 1.808 30.265 1.926 c
-30.195 2.051 30.067 2.117 29.883 2.117 c
-29.707 2.117 29.574 2.047 29.486 1.911 c
-29.405 1.783 29.361 1.577 29.354 1.294 c
-33.881 -1.072 m
-33.852 -1.014 33.822 -0.912 33.793 -0.764 c
-33.605 -1.022 33.356 -1.147 33.043 -1.147 c
-32.709 -1.147 32.429 -1.039 32.205 -0.823 c
-31.989 -0.598 31.882 -0.309 31.882 0.044 c
-31.882 0.456 32.014 0.772 32.279 1 c
-32.543 1.235 32.926 1.353 33.425 1.353 c
-33.749 1.353 l
-33.749 1.675 l
-33.749 1.852 33.712 1.974 33.646 2.043 c
-33.587 2.12 33.499 2.161 33.381 2.161 c
-33.124 2.161 32.999 2.007 32.999 1.706 c
-31.955 1.706 l
-31.955 2.076 32.091 2.381 32.367 2.616 c
-32.639 2.859 32.988 2.984 33.41 2.984 c
-33.852 2.984 34.189 2.866 34.424 2.631 c
-34.667 2.404 34.792 2.08 34.792 1.661 c
-34.792 -0.206 l
-34.792 -0.551 34.84 -0.819 34.939 -1.014 c
-34.939 -1.072 l
-h
-33.279 -0.324 m
-33.385 -0.324 33.477 -0.305 33.558 -0.264 c
-33.646 -0.216 33.709 -0.158 33.749 -0.088 c
-33.749 0.735 l
-33.499 0.735 l
-33.323 0.735 33.179 0.676 33.073 0.559 c
-32.973 0.449 32.926 0.302 32.926 0.118 c
-32.926 -0.176 33.043 -0.324 33.279 -0.324 c
-f
-Q
-q 1 0 0 1 519.5421 360.4896 cm
-0 0 m
-0 0.118 0.033 0.213 0.103 0.294 c
-0.169 0.371 0.272 0.411 0.412 0.411 c
-0.559 0.411 0.665 0.371 0.735 0.294 c
-0.812 0.213 0.852 0.118 0.852 0 c
-0.852 -0.111 0.812 -0.202 0.735 -0.279 c
-0.665 -0.357 0.559 -0.397 0.412 -0.397 c
-0.272 -0.397 0.169 -0.357 0.103 -0.279 c
-0.033 -0.202 0 -0.111 0 0 c
-f
-Q
-0.113 0.082 0.09 0 k
-287.665 356.035 234.667 -12.895 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 292.8568 349.197 cm
-0 0 m
-0 -0.188 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.647 -0.243 -0.776 -0.367 -0.882 c
--0.496 -0.992 -0.658 -1.081 -0.852 -1.147 c
--1.051 -1.206 -1.278 -1.243 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.162 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.927 c
--3.127 -0.819 -3.23 -0.691 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.214 -3.484 -0.015 c
--2.66 0.132 l
--2.642 0.033 -2.616 -0.059 -2.587 -0.148 c
--2.55 -0.228 -2.506 -0.302 -2.454 -0.368 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.675 c
--1.977 0.683 -1.992 0.691 -1.999 0.691 c
--2.167 0.727 -2.329 0.771 -2.484 0.823 c
--2.642 0.881 -2.786 0.959 -2.91 1.058 c
--3.039 1.153 -3.142 1.278 -3.219 1.425 c
--3.289 1.573 -3.322 1.756 -3.322 1.984 c
--3.322 2.179 -3.289 2.344 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.836 c
--2.8 2.932 -2.645 3.002 -2.469 3.042 c
--2.293 3.09 -2.102 3.12 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.12 -1.128 3.09 -0.97 3.042 c
--0.804 2.991 -0.669 2.917 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.202 2.344 -0.143 2.183 -0.103 1.999 c
--0.941 1.882 l
--1.01 2.252 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.352 c
--1.294 1.311 -1.117 1.263 -0.941 1.205 c
--0.756 1.146 -0.595 1.066 -0.455 0.97 c
--0.32 0.87 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.454 c
--2.26 2.425 -2.319 2.385 -2.366 2.337 c
--2.406 2.296 -2.436 2.248 -2.454 2.19 c
--2.477 2.131 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.778 c
--2.41 1.72 -2.373 1.668 -2.322 1.631 c
--2.263 1.591 -2.201 1.558 -2.131 1.529 c
--2.065 1.499 -1.984 1.469 -1.896 1.44 c
-h
--0.837 -0.015 m
--0.837 0.091 -0.86 0.176 -0.897 0.235 c
--0.926 0.301 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.529 -1.448 0.558 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.53 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.015 c
-6.402 -2.66 m
-6.184 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.396 c
-5.284 -2.315 5.185 -2.22 5.108 -2.103 c
-5.039 -1.985 4.991 -1.856 4.961 -1.72 c
-5.858 -1.617 l
-5.895 -1.754 5.964 -1.86 6.064 -1.941 c
-6.159 -2.029 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.058 6.681 -2.029 c
-6.758 -1.999 6.828 -1.945 6.887 -1.867 c
-6.945 -1.797 6.99 -1.706 7.019 -1.588 c
-7.056 -1.47 7.078 -1.324 7.078 -1.147 c
-7.078 -0.956 l
-7.078 -0.89 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.073 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.215 -0.897 5.108 -0.75 c
-5.009 -0.595 4.935 -0.412 4.888 -0.206 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.771 4.836 1.018 4.888 1.234 c
-4.946 1.448 5.027 1.631 5.137 1.778 c
-5.244 1.932 5.376 2.05 5.534 2.131 c
-5.689 2.219 5.876 2.263 6.093 2.263 c
-6.188 2.263 6.288 2.252 6.387 2.234 c
-6.483 2.212 6.571 2.179 6.652 2.131 c
-6.739 2.08 6.817 2.017 6.887 1.94 c
-6.964 1.859 7.026 1.768 7.078 1.66 c
-7.092 1.66 l
-7.092 1.808 l
-7.1 1.866 7.107 1.918 7.107 1.969 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.129 2.164 7.14 2.198 7.151 2.219 c
-8.004 2.219 l
-7.993 2.138 7.982 2.028 7.975 1.882 c
-7.975 1.411 l
-7.975 -1.162 l
-7.975 -1.415 7.938 -1.636 7.871 -1.823 c
-7.802 -2.007 7.699 -2.161 7.563 -2.278 c
-7.423 -2.404 7.258 -2.5 7.063 -2.558 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.529 m
-7.092 0.742 7.067 0.918 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.499 6.729 1.558 6.652 1.587 c
-6.571 1.624 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.62 6.137 1.573 c
-6.056 1.532 5.99 1.462 5.931 1.367 c
-5.88 1.278 5.835 1.161 5.799 1.014 c
-5.77 0.874 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.339 c
-6.049 -0.515 6.211 -0.603 6.417 -0.603 c
-6.483 -0.603 6.556 -0.588 6.637 -0.559 c
-6.725 -0.522 6.799 -0.463 6.857 -0.383 c
-6.924 -0.294 6.978 -0.177 7.019 -0.03 c
-7.067 0.118 7.092 0.301 7.092 0.529 c
-11.036 -0.647 m
-12.168 -0.647 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.647 l
-10.124 -0.647 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.219 l
-11.036 2.219 l
-h
-10.124 3.513 0.912 -0.676 re
-10.124 2.836 m
-13.597 1.602 m
-13.053 1.602 l
-13.053 2.219 l
-13.641 2.219 l
-13.92 3.116 l
-14.494 3.116 l
-14.494 2.219 l
-15.728 2.219 l
-15.728 1.602 l
-14.494 1.602 l
-14.494 -0.103 l
-14.494 -0.324 l
-14.501 -0.393 14.523 -0.456 14.552 -0.515 c
-14.589 -0.566 14.645 -0.611 14.714 -0.647 c
-14.791 -0.676 14.905 -0.691 15.052 -0.691 c
-15.188 -0.691 15.324 -0.688 15.464 -0.676 c
-15.599 -0.659 15.732 -0.632 15.861 -0.603 c
-15.861 -1.206 l
-15.78 -1.216 15.703 -1.231 15.626 -1.249 c
-15.545 -1.261 15.468 -1.268 15.391 -1.279 c
-15.31 -1.286 15.221 -1.294 15.125 -1.294 c
-15.038 -1.301 14.938 -1.309 14.832 -1.309 c
-14.645 -1.309 14.483 -1.294 14.346 -1.264 c
-14.218 -1.228 14.104 -1.183 14.009 -1.132 c
-13.92 -1.085 13.847 -1.025 13.788 -0.956 c
-13.729 -0.879 13.685 -0.801 13.656 -0.721 c
-13.627 -0.632 13.604 -0.544 13.597 -0.456 c
-13.586 -0.36 13.582 -0.265 13.582 -0.177 c
-h
-23.295 -1.264 m
-23.283 -1.246 23.273 -1.216 23.265 -1.176 c
-23.265 -1.129 23.258 -1.081 23.25 -1.029 c
-23.25 -0.971 23.243 -0.912 23.236 -0.853 c
-23.236 -0.691 l
-23.118 -0.927 22.975 -1.095 22.809 -1.191 c
-22.641 -1.279 22.442 -1.324 22.207 -1.324 c
-22.009 -1.324 21.832 -1.279 21.677 -1.191 c
-21.519 -1.103 21.388 -0.981 21.28 -0.823 c
-21.182 -0.659 21.105 -0.467 21.045 -0.25 c
-20.994 -0.037 20.972 0.205 20.972 0.47 c
-20.972 0.735 20.994 0.974 21.045 1.19 c
-21.105 1.415 21.182 1.606 21.28 1.764 c
-21.388 1.918 21.519 2.043 21.677 2.131 c
-21.843 2.227 22.034 2.278 22.251 2.278 c
-22.346 2.278 22.442 2.263 22.531 2.234 c
-22.626 2.212 22.722 2.179 22.809 2.131 c
-22.898 2.08 22.975 2.017 23.044 1.94 c
-23.121 1.859 23.185 1.768 23.236 1.66 c
-23.236 1.749 l
-23.236 1.896 l
-23.236 2.057 l
-23.236 2.234 l
-23.236 3.513 l
-24.133 3.513 l
-24.133 -0.5 l
-24.133 -0.676 24.137 -0.834 24.147 -0.971 c
-24.154 -1.099 24.162 -1.199 24.162 -1.264 c
-h
-23.25 0.484 m
-23.25 0.72 23.225 0.911 23.177 1.058 c
-23.137 1.213 23.081 1.338 23.015 1.425 c
-22.957 1.514 22.886 1.573 22.809 1.602 c
-22.728 1.639 22.651 1.66 22.574 1.66 c
-22.475 1.66 22.383 1.635 22.296 1.587 c
-22.215 1.547 22.148 1.477 22.09 1.381 c
-22.038 1.282 21.994 1.161 21.957 1.014 c
-21.928 0.867 21.913 0.683 21.913 0.47 c
-21.913 0.077 21.964 -0.217 22.074 -0.412 c
-22.192 -0.611 22.354 -0.706 22.56 -0.706 c
-22.637 -0.706 22.714 -0.688 22.795 -0.647 c
-22.872 -0.611 22.946 -0.544 23.015 -0.456 c
-23.081 -0.368 23.137 -0.246 23.177 -0.088 c
-23.225 0.066 23.25 0.257 23.25 0.484 c
-27.281 -0.647 m
-28.413 -0.647 l
-28.413 -1.264 l
-25.106 -1.264 l
-25.106 -0.647 l
-26.371 -0.647 l
-26.371 1.602 l
-25.444 1.602 l
-25.444 2.219 l
-27.281 2.219 l
-h
-26.371 3.513 0.911 -0.676 re
-26.371 2.836 m
-30.886 1.602 m
-30.886 -1.264 l
-29.99 -1.264 l
-29.99 1.602 l
-29.167 1.602 l
-29.167 2.219 l
-29.99 2.219 l
-29.99 2.484 l
-29.99 2.609 30.005 2.741 30.034 2.881 c
-30.071 3.017 30.14 3.135 30.24 3.233 c
-30.346 3.34 30.489 3.428 30.666 3.498 c
-30.842 3.564 31.067 3.601 31.343 3.601 c
-31.555 3.601 31.754 3.59 31.931 3.572 c
-32.107 3.549 32.257 3.532 32.386 3.513 c
-32.386 2.925 l
-32.257 2.944 32.114 2.958 31.96 2.969 c
-31.802 2.977 31.651 2.984 31.504 2.984 c
-31.376 2.984 31.272 2.969 31.195 2.94 c
-31.114 2.91 31.052 2.869 31.004 2.822 c
-30.953 2.771 30.919 2.708 30.901 2.631 c
-30.89 2.561 30.886 2.484 30.886 2.396 c
-30.886 2.219 l
-32.313 2.219 l
-32.313 1.602 l
-h
-34.948 1.602 m
-34.948 -1.264 l
-34.051 -1.264 l
-34.051 1.602 l
-33.228 1.602 l
-33.228 2.219 l
-34.051 2.219 l
-34.051 2.484 l
-34.051 2.609 34.065 2.741 34.094 2.881 c
-34.132 3.017 34.202 3.135 34.3 3.233 c
-34.407 3.34 34.551 3.428 34.726 3.498 c
-34.903 3.564 35.127 3.601 35.403 3.601 c
-35.616 3.601 35.815 3.59 35.991 3.572 c
-36.168 3.549 36.318 3.532 36.446 3.513 c
-36.446 2.925 l
-36.318 2.944 36.174 2.958 36.02 2.969 c
-35.862 2.977 35.711 2.984 35.565 2.984 c
-35.436 2.984 35.333 2.969 35.256 2.94 c
-35.175 2.91 35.112 2.869 35.065 2.822 c
-35.013 2.771 34.98 2.708 34.962 2.631 c
-34.951 2.561 34.948 2.484 34.948 2.396 c
-34.948 2.219 l
-36.373 2.219 l
-36.373 1.602 l
-h
-42.013 0.837 1.867 -0.793 re
-42.013 0.044 m
-46.075 0.837 1.866 -0.793 re
-46.075 0.044 m
-52.648 -0.25 m
-52.648 -0.42 52.608 -0.57 52.531 -0.706 c
-52.461 -0.834 52.359 -0.948 52.222 -1.044 c
-52.093 -1.132 51.932 -1.202 51.737 -1.249 c
-51.55 -1.297 51.333 -1.324 51.091 -1.324 c
-50.863 -1.324 50.664 -1.309 50.488 -1.279 c
-50.312 -1.249 50.154 -1.202 50.017 -1.132 c
-49.878 -1.055 49.768 -0.956 49.68 -0.838 c
-49.591 -0.721 49.521 -0.574 49.473 -0.397 c
-50.283 -0.279 l
-50.3 -0.379 50.33 -0.456 50.37 -0.515 c
-50.418 -0.574 50.477 -0.618 50.547 -0.647 c
-50.613 -0.676 50.694 -0.702 50.782 -0.721 c
-50.87 -0.732 50.973 -0.736 51.091 -0.736 c
-51.186 -0.736 51.282 -0.732 51.37 -0.721 c
-51.458 -0.702 51.536 -0.676 51.605 -0.647 c
-51.671 -0.618 51.723 -0.58 51.752 -0.53 c
-51.789 -0.482 51.81 -0.42 51.81 -0.339 c
-51.81 -0.243 51.781 -0.169 51.723 -0.118 c
-51.671 -0.071 51.605 -0.03 51.517 0 c
-51.428 0.037 51.318 0.066 51.193 0.087 c
-51.076 0.118 50.944 0.147 50.796 0.176 c
-50.657 0.213 50.518 0.253 50.37 0.294 c
-50.231 0.341 50.106 0.404 49.988 0.484 c
-49.878 0.562 49.79 0.661 49.724 0.779 c
-49.654 0.897 49.62 1.047 49.62 1.234 c
-49.62 1.389 49.65 1.532 49.709 1.66 c
-49.775 1.797 49.87 1.911 49.988 1.999 c
-50.113 2.087 50.271 2.153 50.458 2.204 c
-50.642 2.252 50.855 2.278 51.091 2.278 c
-51.274 2.278 51.451 2.256 51.619 2.219 c
-51.785 2.19 51.932 2.135 52.061 2.057 c
-52.186 1.988 52.296 1.889 52.384 1.764 c
-52.473 1.646 52.531 1.502 52.56 1.338 c
-51.767 1.263 l
-51.744 1.341 51.715 1.404 51.679 1.455 c
-51.638 1.514 51.59 1.558 51.532 1.587 c
-51.48 1.624 51.418 1.65 51.34 1.66 c
-51.26 1.668 51.179 1.675 51.091 1.675 c
-50.873 1.675 50.712 1.646 50.605 1.587 c
-50.495 1.536 50.443 1.448 50.443 1.323 c
-50.443 1.242 50.462 1.18 50.503 1.132 c
-50.551 1.08 50.613 1.043 50.694 1.014 c
-50.782 0.985 50.877 0.955 50.988 0.926 c
-51.094 0.904 51.216 0.881 51.355 0.852 c
-51.509 0.823 51.667 0.783 51.825 0.735 c
-51.98 0.683 52.12 0.621 52.237 0.544 c
-52.355 0.463 52.45 0.36 52.531 0.235 c
-52.608 0.106 52.648 -0.055 52.648 -0.25 c
-54.21 1.602 m
-53.666 1.602 l
-53.666 2.219 l
-54.254 2.219 l
-54.534 3.116 l
-55.107 3.116 l
-55.107 2.219 l
-56.342 2.219 l
-56.342 1.602 l
-55.107 1.602 l
-55.107 -0.103 l
-55.107 -0.324 l
-55.114 -0.393 55.137 -0.456 55.166 -0.515 c
-55.203 -0.566 55.258 -0.611 55.328 -0.647 c
-55.405 -0.676 55.519 -0.691 55.665 -0.691 c
-55.802 -0.691 55.937 -0.688 56.077 -0.676 c
-56.213 -0.659 56.346 -0.632 56.474 -0.603 c
-56.474 -1.206 l
-56.394 -1.216 56.316 -1.231 56.239 -1.249 c
-56.158 -1.261 56.081 -1.268 56.004 -1.279 c
-55.923 -1.286 55.835 -1.294 55.739 -1.294 c
-55.651 -1.301 55.552 -1.309 55.445 -1.309 c
-55.258 -1.309 55.096 -1.294 54.96 -1.264 c
-54.831 -1.228 54.717 -1.183 54.622 -1.132 c
-54.534 -1.085 54.46 -1.025 54.401 -0.956 c
-54.343 -0.879 54.299 -0.801 54.269 -0.721 c
-54.24 -0.632 54.218 -0.544 54.21 -0.456 c
-54.2 -0.36 54.196 -0.265 54.196 -0.177 c
-h
-58.628 -1.324 m
-58.458 -1.324 58.308 -1.301 58.172 -1.264 c
-58.044 -1.216 57.929 -1.147 57.834 -1.058 c
-57.745 -0.971 57.676 -0.864 57.628 -0.736 c
-57.576 -0.599 57.554 -0.449 57.554 -0.279 c
-57.554 -0.073 57.587 0.095 57.657 0.235 c
-57.724 0.382 57.819 0.492 57.936 0.573 c
-58.061 0.661 58.204 0.723 58.363 0.764 c
-58.528 0.801 58.705 0.827 58.892 0.837 c
-59.612 0.852 l
-59.612 1.028 l
-59.612 1.146 59.601 1.249 59.583 1.338 c
-59.561 1.425 59.528 1.492 59.48 1.543 c
-59.44 1.602 59.392 1.639 59.333 1.66 c
-59.274 1.679 59.208 1.691 59.141 1.691 c
-59.072 1.691 59.01 1.679 58.951 1.66 c
-58.9 1.65 58.852 1.624 58.804 1.587 c
-58.763 1.558 58.73 1.506 58.701 1.44 c
-58.679 1.381 58.664 1.301 58.657 1.205 c
-57.716 1.249 l
-57.745 1.396 57.79 1.532 57.848 1.66 c
-57.915 1.786 58.01 1.896 58.127 1.984 c
-58.245 2.08 58.385 2.153 58.554 2.204 c
-58.73 2.252 58.936 2.278 59.172 2.278 c
-59.612 2.278 59.943 2.167 60.171 1.955 c
-60.406 1.749 60.523 1.44 60.523 1.028 c
-60.523 -0.235 l
-60.523 -0.456 l
-60.531 -0.515 60.546 -0.57 60.568 -0.618 c
-60.586 -0.659 60.616 -0.691 60.656 -0.721 c
-60.693 -0.742 60.744 -0.75 60.803 -0.75 c
-60.869 -0.75 60.939 -0.746 61.009 -0.736 c
-61.009 -1.22 l
-60.95 -1.231 60.895 -1.243 60.847 -1.249 c
-60.807 -1.261 60.766 -1.268 60.729 -1.279 c
-60.689 -1.286 60.645 -1.294 60.597 -1.294 c
-60.546 -1.301 60.487 -1.309 60.421 -1.309 c
-60.193 -1.309 60.028 -1.257 59.921 -1.147 c
-59.81 -1.029 59.748 -0.864 59.729 -0.647 c
-59.715 -0.647 l
-59.646 -0.757 59.575 -0.853 59.509 -0.941 c
-59.44 -1.022 59.363 -1.088 59.274 -1.147 c
-59.186 -1.206 59.087 -1.249 58.981 -1.279 c
-58.881 -1.309 58.763 -1.324 58.628 -1.324 c
-59.612 0.353 m
-59.186 0.338 l
-59.087 0.338 58.995 0.33 58.906 0.323 c
-58.826 0.312 58.76 0.286 58.701 0.249 c
-58.642 0.209 58.591 0.151 58.554 0.073 c
-58.514 0.004 58.495 -0.088 58.495 -0.206 c
-58.495 -0.375 58.528 -0.497 58.598 -0.574 c
-58.664 -0.655 58.763 -0.691 58.892 -0.691 c
-58.998 -0.691 59.098 -0.669 59.186 -0.618 c
-59.282 -0.57 59.363 -0.507 59.421 -0.426 c
-59.488 -0.349 59.538 -0.262 59.569 -0.162 c
-59.598 -0.055 59.612 0.058 59.612 0.176 c
-h
-63.261 -2.66 m
-63.045 -2.66 62.854 -2.635 62.688 -2.587 c
-62.519 -2.547 62.379 -2.484 62.262 -2.396 c
-62.144 -2.315 62.045 -2.22 61.967 -2.103 c
-61.898 -1.985 61.85 -1.856 61.821 -1.72 c
-62.717 -1.617 l
-62.754 -1.754 62.824 -1.86 62.923 -1.941 c
-63.019 -2.029 63.143 -2.072 63.291 -2.072 c
-63.379 -2.072 63.459 -2.058 63.54 -2.029 c
-63.618 -1.999 63.688 -1.945 63.746 -1.867 c
-63.805 -1.797 63.849 -1.706 63.879 -1.588 c
-63.916 -1.47 63.937 -1.324 63.937 -1.147 c
-63.937 -0.956 l
-63.937 -0.89 63.941 -0.831 63.952 -0.779 c
-63.952 -0.588 l
-63.937 -0.588 l
-63.839 -0.816 63.695 -0.977 63.511 -1.073 c
-63.324 -1.172 63.118 -1.22 62.894 -1.22 c
-62.688 -1.22 62.505 -1.183 62.35 -1.103 c
-62.203 -1.014 62.075 -0.897 61.967 -0.75 c
-61.869 -0.595 61.795 -0.412 61.747 -0.206 c
-61.696 0.008 61.674 0.243 61.674 0.5 c
-61.674 0.771 61.696 1.018 61.747 1.234 c
-61.807 1.448 61.887 1.631 61.998 1.778 c
-62.104 1.932 62.236 2.05 62.394 2.131 c
-62.549 2.219 62.736 2.263 62.952 2.263 c
-63.048 2.263 63.147 2.252 63.247 2.234 c
-63.342 2.212 63.43 2.179 63.511 2.131 c
-63.6 2.08 63.677 2.017 63.746 1.94 c
-63.824 1.859 63.886 1.768 63.937 1.66 c
-63.952 1.66 l
-63.952 1.808 l
-63.96 1.866 63.967 1.918 63.967 1.969 c
-63.974 2.028 63.982 2.076 63.982 2.117 c
-63.989 2.164 64 2.198 64.011 2.219 c
-64.864 2.219 l
-64.853 2.138 64.841 2.028 64.834 1.882 c
-64.834 1.411 l
-64.834 -1.162 l
-64.834 -1.415 64.797 -1.636 64.731 -1.823 c
-64.662 -2.007 64.558 -2.161 64.423 -2.278 c
-64.283 -2.404 64.118 -2.5 63.923 -2.558 c
-63.725 -2.624 63.504 -2.66 63.261 -2.66 c
-63.952 0.529 m
-63.952 0.742 63.926 0.918 63.879 1.058 c
-63.839 1.205 63.783 1.323 63.717 1.411 c
-63.658 1.499 63.588 1.558 63.511 1.587 c
-63.43 1.624 63.353 1.646 63.276 1.646 c
-63.177 1.646 63.085 1.62 62.997 1.573 c
-62.916 1.532 62.85 1.462 62.791 1.367 c
-62.74 1.278 62.696 1.161 62.659 1.014 c
-62.629 0.874 62.615 0.706 62.615 0.5 c
-62.615 0.125 62.673 -0.154 62.791 -0.339 c
-62.908 -0.515 63.07 -0.603 63.276 -0.603 c
-63.342 -0.603 63.415 -0.588 63.496 -0.559 c
-63.585 -0.522 63.658 -0.463 63.717 -0.383 c
-63.783 -0.294 63.839 -0.177 63.879 -0.03 c
-63.926 0.118 63.952 0.301 63.952 0.529 c
-67.351 -1.324 m
-67.094 -1.324 66.866 -1.286 66.661 -1.22 c
-66.455 -1.143 66.278 -1.029 66.131 -0.882 c
-65.984 -0.728 65.867 -0.537 65.778 -0.309 c
-65.697 -0.085 65.661 0.18 65.661 0.484 c
-65.661 0.816 65.705 1.095 65.793 1.323 c
-65.888 1.558 66.017 1.741 66.175 1.882 c
-66.341 2.017 66.528 2.117 66.734 2.175 c
-66.94 2.242 67.149 2.278 67.366 2.278 c
-67.638 2.278 67.873 2.227 68.072 2.131 c
-68.277 2.043 68.443 1.911 68.571 1.734 c
-68.707 1.565 68.807 1.359 68.865 1.117 c
-68.932 0.881 68.968 0.617 68.968 0.323 c
-68.968 0.309 l
-66.602 0.309 l
-66.602 0.162 66.617 0.022 66.646 -0.103 c
-66.682 -0.231 66.738 -0.345 66.808 -0.441 c
-66.873 -0.53 66.958 -0.599 67.058 -0.647 c
-67.153 -0.698 67.267 -0.721 67.396 -0.721 c
-67.55 -0.721 67.689 -0.688 67.807 -0.618 c
-67.932 -0.551 68.02 -0.449 68.072 -0.309 c
-68.909 -0.383 l
-68.88 -0.482 68.824 -0.588 68.747 -0.706 c
-68.666 -0.816 68.564 -0.919 68.439 -1.014 c
-68.321 -1.103 68.167 -1.176 67.983 -1.235 c
-67.807 -1.294 67.594 -1.324 67.351 -1.324 c
-67.351 1.705 m
-67.263 1.705 67.175 1.691 67.087 1.66 c
-66.999 1.631 66.918 1.579 66.852 1.514 c
-66.782 1.444 66.723 1.356 66.675 1.249 c
-66.634 1.139 66.617 1.014 66.617 0.867 c
-68.086 0.867 l
-68.086 1.003 68.061 1.124 68.013 1.234 c
-67.972 1.341 67.918 1.429 67.851 1.499 c
-67.793 1.565 67.719 1.616 67.631 1.646 c
-67.542 1.683 67.447 1.705 67.351 1.705 c
-72.03 -1.264 m
-72.018 -1.246 72.007 -1.216 72 -1.176 c
-72 -1.129 71.993 -1.081 71.985 -1.029 c
-71.985 -0.971 71.978 -0.912 71.97 -0.853 c
-71.97 -0.691 l
-71.853 -0.927 71.71 -1.095 71.544 -1.191 c
-71.375 -1.279 71.176 -1.324 70.941 -1.324 c
-70.744 -1.324 70.567 -1.279 70.412 -1.191 c
-70.254 -1.103 70.122 -0.981 70.015 -0.823 c
-69.917 -0.659 69.84 -0.467 69.78 -0.25 c
-69.729 -0.037 69.707 0.205 69.707 0.47 c
-69.707 0.735 69.729 0.974 69.78 1.19 c
-69.84 1.415 69.917 1.606 70.015 1.764 c
-70.122 1.918 70.254 2.043 70.412 2.131 c
-70.578 2.227 70.769 2.278 70.985 2.278 c
-71.081 2.278 71.176 2.263 71.265 2.234 c
-71.361 2.212 71.456 2.179 71.544 2.131 c
-71.633 2.08 71.71 2.017 71.779 1.94 c
-71.857 1.859 71.92 1.768 71.97 1.66 c
-71.97 1.749 l
-71.97 1.896 l
-71.97 2.057 l
-71.97 2.234 l
-71.97 3.513 l
-72.867 3.513 l
-72.867 -0.5 l
-72.867 -0.676 72.871 -0.834 72.882 -0.971 c
-72.889 -1.099 72.897 -1.199 72.897 -1.264 c
-h
-71.985 0.484 m
-71.985 0.72 71.959 0.911 71.912 1.058 c
-71.872 1.213 71.816 1.338 71.75 1.425 c
-71.691 1.514 71.621 1.573 71.544 1.602 c
-71.463 1.639 71.386 1.66 71.309 1.66 c
-71.21 1.66 71.118 1.635 71.03 1.587 c
-70.949 1.547 70.883 1.477 70.824 1.381 c
-70.773 1.282 70.729 1.161 70.692 1.014 c
-70.663 0.867 70.648 0.683 70.648 0.47 c
-70.648 0.077 70.699 -0.217 70.809 -0.412 c
-70.927 -0.611 71.089 -0.706 71.294 -0.706 c
-71.371 -0.706 71.449 -0.688 71.529 -0.647 c
-71.606 -0.611 71.681 -0.544 71.75 -0.456 c
-71.816 -0.368 71.872 -0.246 71.912 -0.088 c
-71.959 0.066 71.985 0.257 71.985 0.484 c
-78.729 -2.631 m
-78.729 3.513 l
-80.654 3.513 l
-80.654 2.896 l
-79.581 2.896 l
-79.581 -2.014 l
-80.654 -2.014 l
-80.654 -2.631 l
-h
-83.685 1.602 m
-83.685 -1.264 l
-82.789 -1.264 l
-82.789 1.602 l
-81.966 1.602 l
-81.966 2.219 l
-82.789 2.219 l
-82.789 2.484 l
-82.789 2.609 82.804 2.741 82.833 2.881 c
-82.87 3.017 82.939 3.135 83.039 3.233 c
-83.145 3.34 83.288 3.428 83.465 3.498 c
-83.641 3.564 83.866 3.601 84.142 3.601 c
-84.354 3.601 84.553 3.59 84.73 3.572 c
-84.905 3.549 85.056 3.532 85.185 3.513 c
-85.185 2.925 l
-85.056 2.944 84.913 2.958 84.759 2.969 c
-84.601 2.977 84.45 2.984 84.303 2.984 c
-84.175 2.984 84.071 2.969 83.994 2.94 c
-83.914 2.91 83.851 2.869 83.803 2.822 c
-83.752 2.771 83.718 2.708 83.7 2.631 c
-83.689 2.561 83.685 2.484 83.685 2.396 c
-83.685 2.219 l
-85.112 2.219 l
-85.112 1.602 l
-h
-88.202 -0.647 m
-89.334 -0.647 l
-89.334 -1.264 l
-86.027 -1.264 l
-86.027 -0.647 l
-87.29 -0.647 l
-87.29 1.602 l
-86.365 1.602 l
-86.365 2.219 l
-88.202 2.219 l
-h
-87.29 3.513 0.912 -0.676 re
-87.29 2.836 m
-92.262 -0.647 m
-93.395 -0.647 l
-93.395 -1.264 l
-90.087 -1.264 l
-90.087 -0.647 l
-91.351 -0.647 l
-91.351 2.896 l
-90.425 2.896 l
-90.425 3.513 l
-92.262 3.513 l
-h
-95.78 -1.324 m
-95.522 -1.324 95.294 -1.286 95.088 -1.22 c
-94.883 -1.143 94.706 -1.029 94.559 -0.882 c
-94.413 -0.728 94.295 -0.537 94.207 -0.309 c
-94.126 -0.085 94.089 0.18 94.089 0.484 c
-94.089 0.816 94.133 1.095 94.222 1.323 c
-94.317 1.558 94.446 1.741 94.604 1.882 c
-94.769 2.017 94.956 2.117 95.162 2.175 c
-95.367 2.242 95.577 2.278 95.794 2.278 c
-96.065 2.278 96.301 2.227 96.499 2.131 c
-96.705 2.043 96.871 1.911 97 1.734 c
-97.135 1.565 97.235 1.359 97.293 1.117 c
-97.359 0.881 97.397 0.617 97.397 0.323 c
-97.397 0.309 l
-95.03 0.309 l
-95.03 0.162 95.045 0.022 95.074 -0.103 c
-95.111 -0.231 95.165 -0.345 95.236 -0.441 c
-95.302 -0.53 95.386 -0.599 95.485 -0.647 c
-95.581 -0.698 95.695 -0.721 95.824 -0.721 c
-95.978 -0.721 96.117 -0.688 96.235 -0.618 c
-96.36 -0.551 96.448 -0.449 96.499 -0.309 c
-97.337 -0.383 l
-97.308 -0.482 97.253 -0.588 97.176 -0.706 c
-97.095 -0.816 96.992 -0.919 96.867 -1.014 c
-96.749 -1.103 96.595 -1.176 96.412 -1.235 c
-96.235 -1.294 96.022 -1.324 95.78 -1.324 c
-95.78 1.705 m
-95.691 1.705 95.603 1.691 95.515 1.66 c
-95.427 1.631 95.346 1.579 95.28 1.514 c
-95.209 1.444 95.151 1.356 95.103 1.249 c
-95.063 1.139 95.045 1.014 95.045 0.867 c
-96.514 0.867 l
-96.514 1.003 96.489 1.124 96.441 1.234 c
-96.4 1.341 96.345 1.429 96.279 1.499 c
-96.221 1.565 96.146 1.616 96.059 1.646 c
-95.97 1.683 95.875 1.705 95.78 1.705 c
-98.653 -2.631 m
-98.653 -2.014 l
-99.726 -2.014 l
-99.726 2.896 l
-98.653 2.896 l
-98.653 3.513 l
-100.578 3.513 l
-100.578 -2.631 l
-h
-f
-Q
-q 1 0 0 1 294.3676 334.3982 cm
-0 0 m
-0 0.264 -0.073 0.463 -0.221 0.603 c
--0.36 0.75 -0.617 0.89 -1 1.029 c
--1.374 1.166 -1.661 1.309 -1.867 1.455 c
--2.066 1.602 -2.213 1.768 -2.308 1.955 c
--2.407 2.15 -2.455 2.371 -2.455 2.616 c
--2.455 3.036 -2.315 3.385 -2.028 3.66 c
--1.746 3.932 -1.378 4.072 -0.927 4.072 c
--0.614 4.072 -0.335 3.998 -0.088 3.851 c
-0.154 3.712 0.341 3.517 0.47 3.263 c
-0.606 3.017 0.675 2.749 0.675 2.455 c
-0 2.455 l
-0 2.786 -0.081 3.043 -0.235 3.219 c
--0.393 3.403 -0.625 3.499 -0.927 3.499 c
--1.191 3.499 -1.404 3.418 -1.558 3.263 c
--1.706 3.117 -1.779 2.903 -1.779 2.631 c
--1.779 2.404 -1.702 2.213 -1.544 2.058 c
--1.378 1.911 -1.125 1.771 -0.779 1.646 c
--0.262 1.478 0.11 1.268 0.338 1.014 c
-0.573 0.757 0.69 0.426 0.69 0.015 c
-0.69 -0.426 0.548 -0.779 0.264 -1.043 c
--0.023 -1.301 -0.405 -1.425 -0.882 -1.425 c
--1.198 -1.425 -1.484 -1.356 -1.75 -1.22 c
--2.014 -1.084 -2.227 -0.893 -2.382 -0.646 c
--2.529 -0.404 -2.602 -0.118 -2.602 0.206 c
--1.926 0.206 l
--1.926 -0.128 -1.834 -0.389 -1.646 -0.573 c
--1.463 -0.76 -1.206 -0.852 -0.882 -0.852 c
--0.588 -0.852 -0.368 -0.779 -0.221 -0.632 c
--0.073 -0.478 0 -0.264 0 0 c
-2.117 2.22 m
-2.37 2.543 2.69 2.705 3.072 2.705 c
-3.777 2.705 4.134 2.234 4.145 1.294 c
-4.145 -1.352 l
-3.498 -1.352 l
-3.498 1.264 l
-3.498 1.577 3.443 1.797 3.337 1.926 c
-3.226 2.051 3.072 2.117 2.866 2.117 c
-2.708 2.117 2.561 2.062 2.425 1.955 c
-2.296 1.845 2.194 1.709 2.117 1.544 c
-2.117 -1.352 l
-1.469 -1.352 l
-1.469 4.293 l
-2.117 4.293 l
-h
-4.968 0.823 m
-4.968 1.401 5.104 1.856 5.379 2.19 c
-5.662 2.532 6.034 2.705 6.497 2.705 c
-6.956 2.705 7.324 2.536 7.599 2.205 c
-7.882 1.881 8.029 1.434 8.04 0.867 c
-8.04 0.441 l
-8.04 -0.128 7.897 -0.584 7.614 -0.926 c
-7.339 -1.261 6.971 -1.425 6.512 -1.425 c
-6.048 -1.425 5.677 -1.264 5.394 -0.941 c
-5.119 -0.61 4.976 -0.168 4.968 0.382 c
-h
-5.614 0.441 m
-5.614 0.037 5.692 -0.279 5.85 -0.515 c
-6.015 -0.75 6.236 -0.867 6.512 -0.867 c
-7.077 -0.867 7.372 -0.455 7.393 0.368 c
-7.393 0.823 l
-7.393 1.224 7.309 1.544 7.144 1.779 c
-6.986 2.022 6.769 2.146 6.497 2.146 c
-6.232 2.146 6.015 2.022 5.85 1.779 c
-5.692 1.544 5.614 1.224 5.614 0.823 c
-h
-11.848 -0.206 m
-12.45 2.631 l
-13.097 2.631 l
-12.112 -1.352 l
-11.597 -1.352 l
-10.818 1.5 l
-10.069 -1.352 l
-9.539 -1.352 l
-8.584 2.631 l
-9.216 2.631 l
-9.834 -0.132 l
-10.568 2.631 l
-11.083 2.631 l
-h
-16.874 -0.867 m
-17.088 -0.867 17.26 -0.804 17.389 -0.676 c
-17.525 -0.54 17.598 -0.349 17.609 -0.103 c
-18.227 -0.103 l
-18.204 -0.484 18.069 -0.804 17.815 -1.058 c
-17.558 -1.304 17.246 -1.425 16.874 -1.425 c
-16.382 -1.425 16.007 -1.275 15.742 -0.97 c
-15.486 -0.658 15.36 -0.191 15.36 0.426 c
-15.36 0.867 l
-15.36 1.463 15.486 1.918 15.742 2.234 c
-16.007 2.547 16.382 2.705 16.874 2.705 c
-17.275 2.705 17.595 2.573 17.83 2.308 c
-18.073 2.051 18.204 1.706 18.227 1.264 c
-17.609 1.264 l
-17.587 1.558 17.514 1.779 17.389 1.926 c
-17.271 2.072 17.099 2.146 16.874 2.146 c
-16.581 2.146 16.363 2.047 16.228 1.852 c
-16.088 1.665 16.014 1.357 16.007 0.927 c
-16.007 0.412 l
-16.007 -0.058 16.073 -0.393 16.213 -0.588 c
-16.359 -0.775 16.581 -0.867 16.874 -0.867 c
-19.623 2.22 m
-19.877 2.543 20.196 2.705 20.579 2.705 c
-21.284 2.705 21.641 2.234 21.651 1.294 c
-21.651 -1.352 l
-21.005 -1.352 l
-21.005 1.264 l
-21.005 1.577 20.949 1.797 20.843 1.926 c
-20.733 2.051 20.579 2.117 20.373 2.117 c
-20.215 2.117 20.068 2.062 19.931 1.955 c
-19.803 1.845 19.7 1.709 19.623 1.544 c
-19.623 -1.352 l
-18.977 -1.352 l
-18.977 4.293 l
-19.623 4.293 l
-h
-24.65 -1.352 m
-24.61 -1.264 24.584 -1.117 24.577 -0.912 c
-24.342 -1.257 24.047 -1.425 23.694 -1.425 c
-23.331 -1.425 23.048 -1.33 22.842 -1.132 c
-22.644 -0.926 22.548 -0.639 22.548 -0.264 c
-22.548 0.136 22.684 0.456 22.96 0.691 c
-23.232 0.933 23.607 1.058 24.077 1.058 c
-24.562 1.058 l
-24.562 1.484 l
-24.562 1.72 24.507 1.885 24.4 1.985 c
-24.29 2.091 24.128 2.146 23.915 2.146 c
-23.717 2.146 23.555 2.088 23.43 1.97 c
-23.312 1.852 23.253 1.706 23.253 1.529 c
-22.607 1.529 l
-22.607 1.723 22.666 1.914 22.783 2.103 c
-22.908 2.286 23.07 2.433 23.268 2.543 c
-23.474 2.65 23.702 2.705 23.959 2.705 c
-24.359 2.705 24.664 2.602 24.87 2.396 c
-25.084 2.19 25.198 1.897 25.209 1.515 c
-25.209 -0.5 l
-25.209 -0.804 25.246 -1.069 25.327 -1.294 c
-25.327 -1.352 l
-h
-23.783 -0.837 m
-23.948 -0.837 24.099 -0.794 24.238 -0.706 c
-24.386 -0.617 24.492 -0.507 24.562 -0.367 c
-24.562 0.574 l
-24.194 0.574 l
-23.879 0.574 23.636 0.503 23.459 0.368 c
-23.283 0.239 23.195 0.052 23.195 -0.191 c
-23.195 -0.419 23.239 -0.584 23.328 -0.69 c
-23.415 -0.79 23.566 -0.837 23.783 -0.837 c
-26.825 2.631 m
-26.84 2.19 l
-27.094 2.532 27.417 2.705 27.81 2.705 c
-28.516 2.705 28.872 2.234 28.884 1.294 c
-28.884 -1.352 l
-28.236 -1.352 l
-28.236 1.264 l
-28.236 1.577 28.182 1.797 28.075 1.926 c
-27.964 2.051 27.81 2.117 27.605 2.117 c
-27.447 2.117 27.299 2.062 27.164 1.955 c
-27.035 1.845 26.932 1.709 26.855 1.544 c
-26.855 -1.352 l
-26.208 -1.352 l
-26.208 2.631 l
-h
-29.722 0.823 m
-29.722 1.44 29.832 1.904 30.059 2.22 c
-30.283 2.543 30.618 2.705 31.059 2.705 c
-31.459 2.705 31.764 2.529 31.97 2.176 c
-32.014 2.631 l
-32.602 2.631 l
-32.602 -1.396 l
-32.602 -1.885 32.473 -2.263 32.22 -2.528 c
-31.963 -2.793 31.61 -2.925 31.162 -2.925 c
-30.964 -2.925 30.742 -2.873 30.501 -2.778 c
-30.254 -2.678 30.074 -2.558 29.957 -2.41 c
-30.221 -1.97 l
-30.486 -2.234 30.783 -2.366 31.118 -2.366 c
-31.654 -2.366 31.93 -2.072 31.941 -1.484 c
-31.941 -0.955 l
-31.735 -1.271 31.434 -1.425 31.044 -1.425 c
-30.632 -1.425 30.309 -1.275 30.074 -0.97 c
-29.846 -0.658 29.728 -0.206 29.722 0.382 c
-h
-30.383 0.441 m
-30.383 0 30.445 -0.33 30.574 -0.544 c
-30.699 -0.75 30.916 -0.852 31.22 -0.852 c
-31.544 -0.852 31.783 -0.687 31.941 -0.353 c
-31.941 1.632 l
-31.772 1.955 31.533 2.117 31.22 2.117 c
-30.927 2.117 30.71 2.014 30.574 1.808 c
-30.445 1.602 30.383 1.279 30.383 0.838 c
-h
-34.983 -1.425 m
-34.484 -1.425 34.102 -1.278 33.837 -0.985 c
-33.572 -0.69 33.44 -0.257 33.44 0.324 c
-33.44 0.794 l
-33.44 1.389 33.565 1.856 33.822 2.19 c
-34.087 2.532 34.447 2.705 34.91 2.705 c
-35.369 2.705 35.711 2.55 35.939 2.249 c
-36.174 1.955 36.296 1.492 36.307 0.867 c
-36.307 0.441 l
-34.087 0.441 l
-34.087 0.353 l
-34.087 -0.081 34.164 -0.393 34.322 -0.588 c
-34.487 -0.775 34.719 -0.867 35.012 -0.867 c
-35.208 -0.867 35.38 -0.833 35.527 -0.764 c
-35.675 -0.687 35.81 -0.569 35.939 -0.411 c
-36.277 -0.823 l
-35.991 -1.227 35.561 -1.425 34.983 -1.425 c
-34.91 2.146 m
-34.634 2.146 34.432 2.051 34.307 1.867 c
-34.179 1.679 34.106 1.389 34.087 1 c
-35.66 1 l
-35.66 1.087 l
-35.638 1.47 35.571 1.738 35.454 1.897 c
-35.336 2.062 35.153 2.146 34.91 2.146 c
-39.026 -0.338 m
-39.026 -0.191 38.971 -0.07 38.864 0.029 c
-38.754 0.125 38.548 0.243 38.247 0.382 c
-37.901 0.53 37.659 0.651 37.512 0.75 c
-37.364 0.856 37.254 0.974 37.188 1.103 c
-37.119 1.228 37.086 1.386 37.086 1.573 c
-37.086 1.897 37.203 2.165 37.439 2.381 c
-37.674 2.595 37.975 2.705 38.349 2.705 c
-38.732 2.705 39.041 2.591 39.276 2.367 c
-39.511 2.139 39.629 1.852 39.629 1.5 c
-38.981 1.5 l
-38.981 1.675 38.923 1.827 38.805 1.955 c
-38.688 2.08 38.534 2.146 38.349 2.146 c
-38.151 2.146 38 2.091 37.894 1.985 c
-37.784 1.885 37.732 1.754 37.732 1.588 c
-37.732 1.459 37.769 1.353 37.85 1.264 c
-37.927 1.183 38.118 1.081 38.424 0.956 c
-38.901 0.769 39.232 0.58 39.408 0.397 c
-39.584 0.221 39.673 -0.008 39.673 -0.279 c
-39.673 -0.632 39.548 -0.912 39.305 -1.117 c
-39.07 -1.323 38.754 -1.425 38.364 -1.425 c
-37.942 -1.425 37.603 -1.308 37.35 -1.072 c
-37.092 -0.831 36.968 -0.525 36.968 -0.162 c
-37.615 -0.162 l
-37.622 -0.389 37.692 -0.565 37.821 -0.69 c
-37.946 -0.808 38.129 -0.867 38.364 -0.867 c
-38.578 -0.867 38.739 -0.819 38.85 -0.72 c
-38.967 -0.625 39.026 -0.496 39.026 -0.338 c
-45.111 0.441 m
-45.111 -0.176 44.997 -0.643 44.774 -0.955 c
-44.556 -1.271 44.233 -1.425 43.803 -1.425 c
-43.38 -1.425 43.068 -1.246 42.862 -0.881 c
-42.833 -1.352 l
-42.23 -1.352 l
-42.23 4.293 l
-42.877 4.293 l
-42.877 2.19 l
-43.09 2.532 43.399 2.705 43.803 2.705 c
-44.233 2.705 44.556 2.547 44.774 2.234 c
-44.997 1.929 45.111 1.463 45.111 0.838 c
-h
-44.464 0.823 m
-44.464 1.294 44.394 1.625 44.259 1.823 c
-44.13 2.018 43.92 2.117 43.627 2.117 c
-43.292 2.117 43.043 1.933 42.877 1.573 c
-42.877 -0.309 l
-43.043 -0.673 43.296 -0.852 43.641 -0.852 c
-43.935 -0.852 44.145 -0.75 44.273 -0.544 c
-44.398 -0.338 44.464 -0.022 44.464 0.412 c
-h
-47.375 -1.425 m
-46.875 -1.425 46.493 -1.278 46.228 -0.985 c
-45.964 -0.69 45.831 -0.257 45.831 0.324 c
-45.831 0.794 l
-45.831 1.389 45.956 1.856 46.214 2.19 c
-46.478 2.532 46.838 2.705 47.301 2.705 c
-47.76 2.705 48.103 2.55 48.33 2.249 c
-48.566 1.955 48.687 1.492 48.697 0.867 c
-48.697 0.441 l
-46.478 0.441 l
-46.478 0.353 l
-46.478 -0.081 46.555 -0.393 46.713 -0.588 c
-46.879 -0.775 47.11 -0.867 47.404 -0.867 c
-47.599 -0.867 47.772 -0.833 47.918 -0.764 c
-48.066 -0.687 48.202 -0.569 48.33 -0.411 c
-48.668 -0.823 l
-48.381 -1.227 47.951 -1.425 47.375 -1.425 c
-47.301 2.146 m
-47.026 2.146 46.823 2.051 46.698 1.867 c
-46.57 1.679 46.497 1.389 46.478 1 c
-48.051 1 l
-48.051 1.087 l
-48.029 1.47 47.963 1.738 47.845 1.897 c
-47.727 2.062 47.544 2.146 47.301 2.146 c
-50.33 3.587 m
-50.33 2.631 l
-50.932 2.631 l
-50.932 2.103 l
-50.33 2.103 l
-50.33 -0.367 l
-50.33 -0.525 50.351 -0.643 50.403 -0.72 c
-50.461 -0.801 50.55 -0.837 50.667 -0.837 c
-50.756 -0.837 50.844 -0.823 50.932 -0.794 c
-50.932 -1.352 l
-50.785 -1.4 50.631 -1.425 50.476 -1.425 c
-50.219 -1.425 50.025 -1.334 49.888 -1.147 c
-49.749 -0.962 49.682 -0.702 49.682 -0.367 c
-49.682 2.103 l
-49.08 2.103 l
-49.08 2.631 l
-49.682 2.631 l
-49.682 3.587 l
-h
-54.665 -0.206 m
-55.268 2.631 l
-55.915 2.631 l
-54.93 -1.352 l
-54.416 -1.352 l
-53.636 1.5 l
-52.887 -1.352 l
-52.358 -1.352 l
-51.402 2.631 l
-52.034 2.631 l
-52.651 -0.132 l
-53.387 2.631 l
-53.902 2.631 l
-h
-58.017 -1.425 m
-57.517 -1.425 57.135 -1.278 56.871 -0.985 c
-56.606 -0.69 56.474 -0.257 56.474 0.324 c
-56.474 0.794 l
-56.474 1.389 56.599 1.856 56.855 2.19 c
-57.12 2.532 57.48 2.705 57.944 2.705 c
-58.403 2.705 58.744 2.55 58.972 2.249 c
-59.207 1.955 59.329 1.492 59.34 0.867 c
-59.34 0.441 l
-57.12 0.441 l
-57.12 0.353 l
-57.12 -0.081 57.198 -0.393 57.355 -0.588 c
-57.521 -0.775 57.752 -0.867 58.046 -0.867 c
-58.241 -0.867 58.414 -0.833 58.561 -0.764 c
-58.708 -0.687 58.844 -0.569 58.972 -0.411 c
-59.311 -0.823 l
-59.024 -1.227 58.594 -1.425 58.017 -1.425 c
-57.944 2.146 m
-57.668 2.146 57.466 2.051 57.341 1.867 c
-57.212 1.679 57.139 1.389 57.12 1 c
-58.693 1 l
-58.693 1.087 l
-58.671 1.47 58.605 1.738 58.488 1.897 c
-58.37 2.062 58.186 2.146 57.944 2.146 c
-61.545 -1.425 m
-61.045 -1.425 60.663 -1.278 60.398 -0.985 c
-60.134 -0.69 60.001 -0.257 60.001 0.324 c
-60.001 0.794 l
-60.001 1.389 60.126 1.856 60.383 2.19 c
-60.648 2.532 61.008 2.705 61.472 2.705 c
-61.931 2.705 62.272 2.55 62.5 2.249 c
-62.735 1.955 62.856 1.492 62.868 0.867 c
-62.868 0.441 l
-60.648 0.441 l
-60.648 0.353 l
-60.648 -0.081 60.726 -0.393 60.883 -0.588 c
-61.048 -0.775 61.28 -0.867 61.574 -0.867 c
-61.769 -0.867 61.942 -0.833 62.089 -0.764 c
-62.236 -0.687 62.372 -0.569 62.5 -0.411 c
-62.839 -0.823 l
-62.552 -1.227 62.122 -1.425 61.545 -1.425 c
-61.472 2.146 m
-61.196 2.146 60.994 2.051 60.869 1.867 c
-60.74 1.679 60.666 1.389 60.648 1 c
-62.221 1 l
-62.221 1.087 l
-62.199 1.47 62.133 1.738 62.015 1.897 c
-61.898 2.062 61.713 2.146 61.472 2.146 c
-64.264 2.631 m
-64.279 2.19 l
-64.532 2.532 64.855 2.705 65.249 2.705 c
-65.954 2.705 66.311 2.234 66.322 1.294 c
-66.322 -1.352 l
-65.675 -1.352 l
-65.675 1.264 l
-65.675 1.577 65.62 1.797 65.513 1.926 c
-65.403 2.051 65.249 2.117 65.043 2.117 c
-64.885 2.117 64.738 2.062 64.602 1.955 c
-64.474 1.845 64.371 1.709 64.294 1.544 c
-64.294 -1.352 l
-63.647 -1.352 l
-63.647 2.631 l
-h
-f
-Q
-q 1 0 0 1 365.0407 334.1188 cm
-0 0 m
-0 0.088 -0.044 0.166 -0.133 0.235 c
--0.221 0.312 -0.408 0.416 -0.691 0.544 c
--1.125 0.721 -1.422 0.9 -1.588 1.088 c
--1.746 1.272 -1.823 1.503 -1.823 1.779 c
--1.823 2.12 -1.702 2.404 -1.455 2.631 c
--1.202 2.866 -0.864 2.984 -0.441 2.984 c
--0.011 2.984 0.338 2.87 0.602 2.646 c
-0.867 2.419 0.999 2.117 0.999 1.735 c
--0.044 1.735 l
--0.044 2.058 -0.184 2.22 -0.456 2.22 c
--0.566 2.22 -0.655 2.183 -0.721 2.117 c
--0.79 2.047 -0.823 1.948 -0.823 1.823 c
--0.823 1.735 -0.786 1.654 -0.706 1.588 c
--0.628 1.529 -0.449 1.434 -0.162 1.309 c
-0.268 1.151 0.565 0.975 0.735 0.779 c
-0.912 0.592 0.999 0.342 0.999 0.03 c
-0.999 -0.323 0.867 -0.61 0.602 -0.823 c
-0.338 -1.039 -0.011 -1.146 -0.441 -1.146 c
--0.735 -1.146 -0.996 -1.091 -1.22 -0.985 c
--1.448 -0.867 -1.625 -0.706 -1.75 -0.499 c
--1.867 -0.293 -1.926 -0.073 -1.926 0.162 c
--0.941 0.162 l
--0.941 -0.025 -0.904 -0.162 -0.823 -0.249 c
--0.735 -0.338 -0.603 -0.382 -0.426 -0.382 c
--0.144 -0.382 0 -0.257 0 0 c
-2.866 3.881 m
-2.866 2.911 l
-3.395 2.911 l
-3.395 2.117 l
-2.866 2.117 l
-2.866 0.148 l
-2.866 -0.01 2.884 -0.118 2.925 -0.176 c
-2.973 -0.235 3.057 -0.264 3.175 -0.264 c
-3.281 -0.264 3.366 -0.257 3.424 -0.235 c
-3.424 -1.043 l
-3.248 -1.109 3.057 -1.146 2.851 -1.146 c
-2.175 -1.146 1.83 -0.76 1.822 0.015 c
-1.822 2.117 l
-1.367 2.117 l
-1.367 2.911 l
-1.822 2.911 l
-1.822 3.881 l
-h
-5.85 -1.072 m
-5.82 -1.014 5.791 -0.911 5.762 -0.764 c
-5.575 -1.022 5.325 -1.146 5.012 -1.146 c
-4.677 -1.146 4.399 -1.039 4.174 -0.823 c
-3.958 -0.598 3.85 -0.309 3.85 0.044 c
-3.85 0.456 3.983 0.772 4.247 1 c
-4.513 1.235 4.895 1.353 5.394 1.353 c
-5.718 1.353 l
-5.718 1.676 l
-5.718 1.852 5.681 1.974 5.615 2.043 c
-5.556 2.12 5.468 2.161 5.35 2.161 c
-5.093 2.161 4.968 2.007 4.968 1.706 c
-3.925 1.706 l
-3.925 2.076 4.06 2.382 4.336 2.617 c
-4.608 2.859 4.957 2.984 5.38 2.984 c
-5.82 2.984 6.159 2.866 6.394 2.631 c
-6.636 2.404 6.761 2.08 6.761 1.661 c
-6.761 -0.205 l
-6.761 -0.551 6.809 -0.819 6.908 -1.014 c
-6.908 -1.072 l
-h
-5.247 -0.323 m
-5.354 -0.323 5.446 -0.305 5.527 -0.264 c
-5.615 -0.216 5.677 -0.158 5.718 -0.087 c
-5.718 0.736 l
-5.468 0.736 l
-5.292 0.736 5.148 0.676 5.041 0.559 c
-4.943 0.449 4.895 0.302 4.895 0.118 c
-4.895 -0.176 5.012 -0.323 5.247 -0.323 c
-7.378 1.044 m
-7.378 1.691 7.497 2.176 7.732 2.5 c
-7.967 2.822 8.297 2.984 8.731 2.984 c
-9.084 2.984 9.356 2.841 9.554 2.558 c
-9.598 2.911 l
-10.539 2.911 l
-10.539 -1.072 l
-10.539 -1.579 10.396 -1.969 10.113 -2.234 c
-9.826 -2.506 9.422 -2.645 8.893 -2.645 c
-8.665 -2.645 8.43 -2.601 8.187 -2.514 c
-7.952 -2.425 7.775 -2.311 7.658 -2.175 c
-8.01 -1.455 l
-8.106 -1.562 8.235 -1.646 8.393 -1.705 c
-8.548 -1.77 8.694 -1.808 8.834 -1.808 c
-9.069 -1.808 9.234 -1.749 9.334 -1.631 c
-9.44 -1.521 9.495 -1.344 9.495 -1.103 c
-9.495 -0.75 l
-9.297 -1.014 9.04 -1.146 8.716 -1.146 c
-8.294 -1.146 7.967 -0.985 7.732 -0.661 c
-7.503 -0.33 7.386 0.14 7.378 0.75 c
-h
-8.422 0.779 m
-8.422 0.405 8.47 0.136 8.569 -0.029 c
-8.665 -0.198 8.819 -0.279 9.025 -0.279 c
-9.238 -0.279 9.396 -0.201 9.495 -0.044 c
-9.495 1.852 l
-9.385 2.018 9.231 2.103 9.025 2.103 c
-8.819 2.103 8.665 2.018 8.569 1.852 c
-8.47 1.683 8.422 1.415 8.422 1.044 c
-h
-12.391 -1.072 -1.044 3.983 re
-11.303 3.94 m
-11.303 4.094 11.351 4.223 11.451 4.322 c
-11.557 4.428 11.692 4.484 11.862 4.484 c
-12.039 4.484 12.174 4.428 12.274 4.322 c
-12.38 4.223 12.436 4.094 12.436 3.94 c
-12.436 3.771 12.38 3.635 12.274 3.528 c
-12.174 3.429 12.039 3.381 11.862 3.381 c
-11.692 3.381 11.557 3.429 11.451 3.528 c
-11.351 3.635 11.303 3.771 11.303 3.94 c
-14.155 2.911 m
-14.184 2.514 l
-14.42 2.826 14.721 2.984 15.096 2.984 c
-15.779 2.984 16.132 2.503 16.154 1.544 c
-16.154 -1.072 l
-15.11 -1.072 l
-15.11 1.47 l
-15.11 1.694 15.073 1.856 15.008 1.955 c
-14.938 2.051 14.82 2.103 14.655 2.103 c
-14.468 2.103 14.32 2.007 14.214 1.823 c
-14.214 -1.072 l
-13.17 -1.072 l
-13.17 2.911 l
-h
-16.772 1.044 m
-16.772 1.691 16.889 2.176 17.124 2.5 c
-17.359 2.822 17.69 2.984 18.123 2.984 c
-18.476 2.984 18.748 2.841 18.947 2.558 c
-18.991 2.911 l
-19.931 2.911 l
-19.931 -1.072 l
-19.931 -1.579 19.788 -1.969 19.505 -2.234 c
-19.218 -2.506 18.815 -2.645 18.285 -2.645 c
-18.057 -2.645 17.822 -2.601 17.58 -2.514 c
-17.344 -2.425 17.168 -2.311 17.051 -2.175 c
-17.404 -1.455 l
-17.499 -1.562 17.628 -1.646 17.786 -1.705 c
-17.94 -1.77 18.087 -1.808 18.227 -1.808 c
-18.462 -1.808 18.628 -1.749 18.726 -1.631 c
-18.833 -1.521 18.888 -1.344 18.888 -1.103 c
-18.888 -0.75 l
-18.69 -1.014 18.432 -1.146 18.109 -1.146 c
-17.687 -1.146 17.359 -0.985 17.124 -0.661 c
-16.897 -0.33 16.779 0.14 16.772 0.75 c
-h
-17.815 0.779 m
-17.815 0.405 17.863 0.136 17.962 -0.029 c
-18.057 -0.198 18.212 -0.279 18.418 -0.279 c
-18.63 -0.279 18.788 -0.201 18.888 -0.044 c
-18.888 1.852 l
-18.778 2.018 18.624 2.103 18.418 2.103 c
-18.212 2.103 18.057 2.018 17.962 1.852 c
-17.863 1.683 17.815 1.415 17.815 1.044 c
-h
-24.312 -1.072 m
-24.282 -1.014 24.253 -0.911 24.224 -0.764 c
-24.037 -1.022 23.787 -1.146 23.474 -1.146 c
-23.139 -1.146 22.861 -1.039 22.636 -0.823 c
-22.42 -0.598 22.313 -0.309 22.313 0.044 c
-22.313 0.456 22.445 0.772 22.709 1 c
-22.975 1.235 23.357 1.353 23.856 1.353 c
-24.18 1.353 l
-24.18 1.676 l
-24.18 1.852 24.143 1.974 24.076 2.043 c
-24.018 2.12 23.93 2.161 23.812 2.161 c
-23.555 2.161 23.43 2.007 23.43 1.706 c
-22.387 1.706 l
-22.387 2.076 22.522 2.382 22.798 2.617 c
-23.07 2.859 23.419 2.984 23.841 2.984 c
-24.282 2.984 24.621 2.866 24.856 2.631 c
-25.098 2.404 25.223 2.08 25.223 1.661 c
-25.223 -0.205 l
-25.223 -0.551 25.271 -0.819 25.371 -1.014 c
-25.371 -1.072 l
-h
-23.709 -0.323 m
-23.816 -0.323 23.908 -0.305 23.989 -0.264 c
-24.076 -0.216 24.139 -0.158 24.18 -0.087 c
-24.18 0.736 l
-23.93 0.736 l
-23.754 0.736 23.61 0.676 23.503 0.559 c
-23.405 0.449 23.357 0.302 23.357 0.118 c
-23.357 -0.176 23.474 -0.323 23.709 -0.323 c
-27.928 1.897 m
-27.59 1.926 l
-27.303 1.926 27.112 1.801 27.017 1.559 c
-27.017 -1.072 l
-25.973 -1.072 l
-25.973 2.911 l
-26.943 2.911 l
-26.973 2.469 l
-27.138 2.812 27.369 2.984 27.663 2.984 c
-27.781 2.984 27.873 2.962 27.943 2.926 c
-h
-30 -1.146 m
-29.471 -1.146 29.053 -0.992 28.751 -0.675 c
-28.457 -0.353 28.31 0.107 28.31 0.706 c
-28.31 1.014 l
-28.31 1.64 28.446 2.124 28.722 2.469 c
-28.994 2.812 29.387 2.984 29.898 2.984 c
-30.397 2.984 30.769 2.822 31.015 2.5 c
-31.268 2.176 31.401 1.698 31.411 1.073 c
-31.411 0.574 l
-29.339 0.574 l
-29.358 0.279 29.42 0.063 29.53 -0.073 c
-29.647 -0.213 29.828 -0.279 30.074 -0.279 c
-30.416 -0.279 30.706 -0.162 30.941 0.073 c
-31.353 -0.558 l
-31.224 -0.735 31.037 -0.878 30.794 -0.985 c
-30.548 -1.091 30.283 -1.146 30 -1.146 c
-29.354 1.294 m
-30.383 1.294 l
-30.383 1.397 l
-30.383 1.632 30.343 1.808 30.265 1.926 c
-30.195 2.051 30.067 2.117 29.883 2.117 c
-29.707 2.117 29.574 2.047 29.486 1.912 c
-29.406 1.783 29.361 1.577 29.354 1.294 c
-33.881 -1.072 m
-33.852 -1.014 33.822 -0.911 33.793 -0.764 c
-33.605 -1.022 33.356 -1.146 33.043 -1.146 c
-32.709 -1.146 32.429 -1.039 32.205 -0.823 c
-31.989 -0.598 31.882 -0.309 31.882 0.044 c
-31.882 0.456 32.014 0.772 32.279 1 c
-32.543 1.235 32.926 1.353 33.425 1.353 c
-33.749 1.353 l
-33.749 1.676 l
-33.749 1.852 33.712 1.974 33.646 2.043 c
-33.587 2.12 33.499 2.161 33.381 2.161 c
-33.124 2.161 32.999 2.007 32.999 1.706 c
-31.956 1.706 l
-31.956 2.076 32.091 2.382 32.367 2.617 c
-32.639 2.859 32.988 2.984 33.41 2.984 c
-33.852 2.984 34.189 2.866 34.424 2.631 c
-34.667 2.404 34.792 2.08 34.792 1.661 c
-34.792 -0.205 l
-34.792 -0.551 34.84 -0.819 34.939 -1.014 c
-34.939 -1.072 l
-h
-33.279 -0.323 m
-33.385 -0.323 33.477 -0.305 33.558 -0.264 c
-33.646 -0.216 33.709 -0.158 33.749 -0.087 c
-33.749 0.736 l
-33.499 0.736 l
-33.323 0.736 33.179 0.676 33.073 0.559 c
-32.974 0.449 32.926 0.302 32.926 0.118 c
-32.926 -0.176 33.043 -0.323 33.279 -0.323 c
-f
-Q
-q 1 0 0 1 404.4483 333.0464 cm
-0 0 m
--0.04 0.087 -0.066 0.235 -0.073 0.44 c
--0.309 0.095 -0.602 -0.073 -0.955 -0.073 c
--1.319 -0.073 -1.602 0.022 -1.807 0.22 c
--2.006 0.426 -2.102 0.713 -2.102 1.087 c
--2.102 1.488 -1.965 1.808 -1.691 2.043 c
--1.418 2.285 -1.043 2.41 -0.573 2.41 c
--0.088 2.41 l
--0.088 2.836 l
--0.088 3.072 -0.143 3.237 -0.249 3.337 c
--0.359 3.443 -0.521 3.498 -0.735 3.498 c
--0.933 3.498 -1.095 3.439 -1.22 3.322 c
--1.337 3.204 -1.396 3.057 -1.396 2.881 c
--2.042 2.881 l
--2.042 3.075 -1.984 3.266 -1.866 3.454 c
--1.741 3.638 -1.58 3.785 -1.381 3.895 c
--1.176 4.002 -0.947 4.056 -0.691 4.056 c
--0.29 4.056 0.015 3.954 0.221 3.748 c
-0.434 3.542 0.548 3.248 0.559 2.866 c
-0.559 0.852 l
-0.559 0.548 0.595 0.283 0.676 0.058 c
-0.676 0 l
-h
--0.866 0.515 m
--0.702 0.515 -0.551 0.558 -0.411 0.646 c
--0.264 0.735 -0.158 0.845 -0.088 0.985 c
--0.088 1.926 l
--0.455 1.926 l
--0.771 1.926 -1.014 1.855 -1.19 1.72 c
--1.367 1.591 -1.455 1.404 -1.455 1.161 c
--1.455 0.933 -1.411 0.768 -1.323 0.661 c
--1.234 0.562 -1.084 0.515 -0.866 0.515 c
-2.176 3.983 m
-2.191 3.542 l
-2.444 3.884 2.768 4.056 3.161 4.056 c
-3.866 4.056 4.223 3.586 4.233 2.645 c
-4.233 0 l
-3.587 0 l
-3.587 2.616 l
-3.587 2.929 3.532 3.149 3.425 3.278 c
-3.315 3.403 3.161 3.469 2.955 3.469 c
-2.797 3.469 2.65 3.414 2.514 3.307 c
-2.386 3.197 2.282 3.061 2.205 2.896 c
-2.205 0 l
-1.559 0 l
-1.559 3.983 l
-h
-5.072 2.175 m
-5.072 2.782 5.182 3.248 5.409 3.572 c
-5.644 3.895 5.972 4.056 6.394 4.056 c
-6.776 4.056 7.074 3.898 7.291 3.586 c
-7.291 5.644 l
-7.938 5.644 l
-7.938 0 l
-7.35 0 l
-7.306 0.426 l
-7.1 0.091 6.795 -0.073 6.394 -0.073 c
-5.983 -0.073 5.659 0.081 5.424 0.397 c
-5.189 0.72 5.072 1.176 5.072 1.764 c
-h
-5.719 1.793 m
-5.719 1.352 5.781 1.022 5.91 0.808 c
-6.045 0.602 6.266 0.5 6.571 0.5 c
-6.895 0.5 7.133 0.661 7.291 0.985 c
-7.291 2.998 l
-7.122 3.31 6.883 3.469 6.571 3.469 c
-6.266 3.469 6.045 3.366 5.91 3.16 c
-5.781 2.954 5.719 2.631 5.719 2.19 c
-h
-f
-Q
-416.09 333.046 -1.043 3.983 re
-415.002 338.059 m
-415.002 338.213 415.05 338.342 415.149 338.441 c
-415.256 338.547 415.392 338.602 415.561 338.602 c
-415.737 338.602 415.874 338.547 415.972 338.441 c
-416.08 338.342 416.134 338.213 416.134 338.059 c
-416.134 337.889 416.08 337.754 415.972 337.647 c
-415.874 337.548 415.737 337.5 415.561 337.5 c
-415.392 337.5 415.256 337.548 415.149 337.647 c
-415.05 337.754 415.002 337.889 415.002 338.059 c
-417.854 337.029 m
-417.884 336.632 l
-418.119 336.945 418.42 337.103 418.795 337.103 c
-419.478 337.103 419.831 336.622 419.853 335.663 c
-419.853 333.046 l
-418.81 333.046 l
-418.81 335.589 l
-418.81 335.813 418.773 335.975 418.707 336.074 c
-418.637 336.17 418.519 336.221 418.354 336.221 c
-418.166 336.221 418.019 336.125 417.913 335.942 c
-417.913 333.046 l
-416.869 333.046 l
-416.869 337.029 l
-h
-420.456 335.163 m
-420.456 335.809 420.562 336.295 420.779 336.618 c
-421.003 336.941 421.327 337.103 421.749 337.103 c
-422.062 337.103 422.316 336.971 422.513 336.706 c
-422.513 338.691 l
-423.573 338.691 l
-423.573 333.046 l
-422.617 333.046 l
-422.573 333.457 l
-422.356 333.134 422.081 332.973 421.749 332.973 c
-421.337 332.973 421.018 333.127 420.794 333.443 c
-420.577 333.766 420.463 334.236 420.456 334.854 c
-h
-421.499 334.898 m
-421.499 334.505 421.536 334.23 421.617 334.075 c
-421.705 333.918 421.852 333.839 422.058 333.839 c
-422.264 333.839 422.414 333.932 422.513 334.119 c
-422.513 335.927 l
-422.414 336.122 422.264 336.221 422.058 336.221 c
-421.859 336.221 421.72 336.14 421.632 335.986 c
-421.543 335.839 421.499 335.567 421.499 335.177 c
-h
-425.939 332.973 m
-425.41 332.973 424.99 333.127 424.689 333.443 c
-424.395 333.766 424.248 334.226 424.248 334.824 c
-424.248 335.133 l
-424.248 335.759 424.384 336.243 424.66 336.588 c
-424.932 336.931 425.325 337.103 425.836 337.103 c
-426.336 337.103 426.707 336.941 426.953 336.618 c
-427.207 336.295 427.338 335.817 427.35 335.192 c
-427.35 334.693 l
-425.277 334.693 l
-425.296 334.398 425.358 334.182 425.468 334.045 c
-425.586 333.906 425.766 333.839 426.012 333.839 c
-426.354 333.839 426.644 333.957 426.879 334.192 c
-427.291 333.561 l
-427.162 333.384 426.975 333.241 426.732 333.134 c
-426.486 333.028 426.222 332.973 425.939 332.973 c
-425.292 335.412 m
-426.32 335.412 l
-426.32 335.516 l
-426.32 335.751 426.28 335.927 426.203 336.044 c
-426.133 336.17 426.004 336.235 425.821 336.235 c
-425.645 336.235 425.512 336.166 425.424 336.03 c
-425.343 335.902 425.299 335.696 425.292 335.412 c
-429.26 335.839 m
-429.731 337.029 l
-430.833 337.029 l
-429.923 335.075 l
-430.863 333.046 l
-429.761 333.046 l
-429.275 334.296 l
-428.79 333.046 l
-427.673 333.046 l
-428.614 335.075 l
-427.717 337.029 l
-428.82 337.029 l
-h
-f
-q 1 0 0 1 433.1559 335.2214 cm
-0 0 m
-0 0.636 0.088 1.239 0.264 1.808 c
-0.441 2.374 0.684 2.87 1 3.293 c
-1.195 3.557 1.382 3.749 1.558 3.866 c
-1.691 3.41 l
-1.396 3.135 1.154 2.712 0.97 2.146 c
-0.783 1.577 0.68 0.945 0.661 0.25 c
-0.661 -0.044 l
-0.661 -0.908 0.779 -1.672 1.014 -2.337 c
-1.198 -2.836 1.426 -3.219 1.691 -3.484 c
-1.558 -3.91 l
-1.33 -3.752 1.106 -3.501 0.882 -3.16 c
-0.294 -2.278 0 -1.227 0 0 c
-4.027 1.191 m
-3.939 1.209 3.84 1.22 3.734 1.22 c
-3.399 1.22 3.164 1.037 3.028 0.676 c
-3.028 -2.175 l
-2.381 -2.175 l
-2.381 1.808 l
-3.013 1.808 l
-3.028 1.397 l
-3.204 1.72 3.447 1.881 3.763 1.881 c
-3.869 1.881 3.958 1.86 4.027 1.823 c
-h
-6.026 -2.248 m
-5.527 -2.248 5.145 -2.102 4.88 -1.808 c
-4.615 -1.514 4.484 -1.08 4.484 -0.5 c
-4.484 -0.029 l
-4.484 0.566 4.608 1.033 4.866 1.367 c
-5.13 1.709 5.49 1.881 5.953 1.881 c
-6.412 1.881 6.755 1.727 6.982 1.426 c
-7.217 1.132 7.339 0.669 7.35 0.044 c
-7.35 -0.382 l
-5.13 -0.382 l
-5.13 -0.47 l
-5.13 -0.904 5.207 -1.216 5.365 -1.411 c
-5.531 -1.598 5.762 -1.691 6.056 -1.691 c
-6.251 -1.691 6.423 -1.657 6.57 -1.587 c
-6.718 -1.51 6.853 -1.392 6.982 -1.234 c
-7.32 -1.646 l
-7.034 -2.05 6.604 -2.248 6.026 -2.248 c
-5.953 1.323 m
-5.677 1.323 5.475 1.228 5.35 1.044 c
-5.222 0.856 5.149 0.566 5.13 0.177 c
-6.703 0.177 l
-6.703 0.264 l
-6.681 0.647 6.614 0.915 6.497 1.073 c
-6.379 1.239 6.196 1.323 5.953 1.323 c
-11.009 -0.382 m
-11.009 -1.01 10.892 -1.481 10.657 -1.793 c
-10.429 -2.098 10.113 -2.248 9.702 -2.248 c
-9.297 -2.248 8.989 -2.098 8.775 -1.793 c
-8.775 -3.704 l
-8.129 -3.704 l
-8.129 1.808 l
-8.717 1.808 l
-8.761 1.367 l
-8.974 1.709 9.282 1.881 9.687 1.881 c
-10.128 1.881 10.454 1.727 10.672 1.426 c
-10.884 1.121 10.998 0.665 11.009 0.059 c
-h
-10.363 0 m
-10.363 0.441 10.293 0.765 10.157 0.97 c
-10.017 1.183 9.797 1.294 9.496 1.294 c
-9.18 1.294 8.941 1.139 8.775 0.838 c
-8.775 -1.234 l
-8.941 -1.539 9.18 -1.691 9.496 -1.691 c
-9.789 -1.691 10.003 -1.587 10.142 -1.382 c
-10.279 -1.168 10.352 -0.837 10.363 -0.397 c
-h
-11.715 0 m
-11.715 0.578 11.851 1.033 12.127 1.367 c
-12.409 1.709 12.781 1.881 13.244 1.881 c
-13.703 1.881 14.071 1.713 14.346 1.382 c
-14.629 1.058 14.776 0.611 14.787 0.044 c
-14.787 -0.382 l
-14.787 -0.951 14.644 -1.407 14.361 -1.749 c
-14.086 -2.084 13.718 -2.248 13.259 -2.248 c
-12.796 -2.248 12.424 -2.087 12.141 -1.764 c
-11.866 -1.433 11.723 -0.992 11.715 -0.441 c
-h
-12.362 -0.382 m
-12.362 -0.786 12.439 -1.103 12.597 -1.338 c
-12.762 -1.573 12.983 -1.691 13.259 -1.691 c
-13.824 -1.691 14.119 -1.278 14.14 -0.455 c
-14.14 0 l
-14.14 0.401 14.056 0.721 13.891 0.956 c
-13.733 1.199 13.516 1.323 13.244 1.323 c
-12.979 1.323 12.762 1.199 12.597 0.956 c
-12.439 0.721 12.362 0.401 12.362 0 c
-h
-17.565 -1.161 m
-17.565 -1.014 17.51 -0.893 17.404 -0.794 c
-17.294 -0.698 17.088 -0.58 16.787 -0.441 c
-16.441 -0.294 16.199 -0.172 16.052 -0.073 c
-15.904 0.033 15.794 0.151 15.728 0.279 c
-15.659 0.405 15.625 0.563 15.625 0.75 c
-15.625 1.073 15.742 1.341 15.978 1.558 c
-16.213 1.771 16.515 1.881 16.889 1.881 c
-17.271 1.881 17.58 1.768 17.815 1.544 c
-18.05 1.316 18.168 1.029 18.168 0.676 c
-17.521 0.676 l
-17.521 0.852 17.463 1.004 17.344 1.132 c
-17.228 1.257 17.073 1.323 16.889 1.323 c
-16.691 1.323 16.54 1.268 16.434 1.162 c
-16.324 1.062 16.272 0.93 16.272 0.765 c
-16.272 0.636 16.309 0.53 16.39 0.441 c
-16.467 0.36 16.658 0.258 16.962 0.133 c
-17.44 -0.055 17.772 -0.243 17.947 -0.426 c
-18.124 -0.602 18.212 -0.831 18.212 -1.103 c
-18.212 -1.455 18.088 -1.735 17.845 -1.94 c
-17.61 -2.146 17.294 -2.248 16.904 -2.248 c
-16.482 -2.248 16.143 -2.131 15.89 -1.896 c
-15.632 -1.654 15.507 -1.348 15.507 -0.985 c
-16.154 -0.985 l
-16.162 -1.213 16.232 -1.389 16.36 -1.514 c
-16.485 -1.631 16.669 -1.691 16.904 -1.691 c
-17.117 -1.691 17.279 -1.643 17.389 -1.543 c
-17.506 -1.448 17.565 -1.319 17.565 -1.161 c
-19.756 -2.175 -0.646 3.983 re
-19.8 2.851 m
-19.8 2.741 19.771 2.65 19.711 2.573 c
-19.653 2.502 19.557 2.469 19.432 2.469 c
-19.314 2.469 19.219 2.502 19.153 2.573 c
-19.094 2.65 19.065 2.741 19.065 2.851 c
-19.065 2.969 19.094 3.061 19.153 3.131 c
-19.219 3.208 19.314 3.248 19.432 3.248 c
-19.557 3.248 19.653 3.208 19.711 3.131 c
-19.771 3.05 19.8 2.959 19.8 2.851 c
-21.622 2.764 m
-21.622 1.808 l
-22.225 1.808 l
-22.225 1.279 l
-21.622 1.279 l
-21.622 -1.19 l
-21.622 -1.348 21.645 -1.466 21.696 -1.543 c
-21.755 -1.624 21.843 -1.66 21.961 -1.66 c
-22.048 -1.66 22.137 -1.646 22.225 -1.617 c
-22.225 -2.175 l
-22.078 -2.223 21.924 -2.248 21.77 -2.248 c
-21.512 -2.248 21.317 -2.157 21.182 -1.97 c
-21.042 -1.786 20.976 -1.525 20.976 -1.19 c
-20.976 1.279 l
-20.373 1.279 l
-20.373 1.808 l
-20.976 1.808 l
-20.976 2.764 l
-h
-22.784 0 m
-22.784 0.578 22.919 1.033 23.195 1.367 c
-23.478 1.709 23.85 1.881 24.312 1.881 c
-24.772 1.881 25.139 1.713 25.415 1.382 c
-25.697 1.058 25.845 0.611 25.855 0.044 c
-25.855 -0.382 l
-25.855 -0.951 25.712 -1.407 25.429 -1.749 c
-25.154 -2.084 24.787 -2.248 24.327 -2.248 c
-23.864 -2.248 23.493 -2.087 23.21 -1.764 c
-22.934 -1.433 22.791 -0.992 22.784 -0.441 c
-h
-23.43 -0.382 m
-23.43 -0.786 23.507 -1.103 23.665 -1.338 c
-23.831 -1.573 24.051 -1.691 24.327 -1.691 c
-24.893 -1.691 25.186 -1.278 25.209 -0.455 c
-25.209 0 l
-25.209 0.401 25.124 0.721 24.959 0.956 c
-24.801 1.199 24.584 1.323 24.312 1.323 c
-24.048 1.323 23.831 1.199 23.665 0.956 c
-23.507 0.721 23.43 0.401 23.43 0 c
-h
-28.34 1.191 m
-28.251 1.209 28.153 1.22 28.046 1.22 c
-27.711 1.22 27.476 1.037 27.341 0.676 c
-27.341 -2.175 l
-26.693 -2.175 l
-26.693 1.808 l
-27.326 1.808 l
-27.341 1.397 l
-27.517 1.72 27.759 1.881 28.075 1.881 c
-28.182 1.881 28.27 1.86 28.34 1.823 c
-h
-30.148 -1.087 m
-30.868 1.808 l
-31.559 1.808 l
-30.265 -2.734 l
-30.166 -3.075 30.023 -3.337 29.839 -3.513 c
-29.662 -3.69 29.46 -3.777 29.236 -3.777 c
-29.148 -3.777 29.034 -3.755 28.899 -3.719 c
-28.899 -3.175 l
-29.045 -3.189 l
-29.229 -3.189 29.376 -3.146 29.487 -3.057 c
-29.593 -2.969 29.681 -2.811 29.751 -2.587 c
-29.868 -2.146 l
-28.708 1.808 l
-29.413 1.808 l
-h
-35.293 -1.691 m
-35.505 -1.691 35.678 -1.627 35.807 -1.5 c
-35.943 -1.363 36.016 -1.172 36.027 -0.926 c
-36.645 -0.926 l
-36.623 -1.308 36.487 -1.627 36.234 -1.882 c
-35.976 -2.127 35.663 -2.248 35.293 -2.248 c
-34.8 -2.248 34.425 -2.098 34.161 -1.793 c
-33.903 -1.481 33.778 -1.014 33.778 -0.397 c
-33.778 0.044 l
-33.778 0.64 33.903 1.095 34.161 1.411 c
-34.425 1.723 34.8 1.881 35.293 1.881 c
-35.693 1.881 36.012 1.75 36.248 1.484 c
-36.49 1.228 36.623 0.882 36.645 0.441 c
-36.027 0.441 l
-36.005 0.735 35.932 0.956 35.807 1.103 c
-35.689 1.249 35.517 1.323 35.293 1.323 c
-34.998 1.323 34.782 1.224 34.646 1.029 c
-34.506 0.842 34.433 0.533 34.425 0.103 c
-34.425 -0.411 l
-34.425 -0.881 34.491 -1.216 34.631 -1.411 c
-34.778 -1.598 34.998 -1.691 35.293 -1.691 c
-37.262 0 m
-37.262 0.578 37.398 1.033 37.674 1.367 c
-37.957 1.709 38.328 1.881 38.79 1.881 c
-39.25 1.881 39.617 1.713 39.893 1.382 c
-40.176 1.058 40.323 0.611 40.334 0.044 c
-40.334 -0.382 l
-40.334 -0.951 40.191 -1.407 39.908 -1.749 c
-39.632 -2.084 39.265 -2.248 38.806 -2.248 c
-38.343 -2.248 37.971 -2.087 37.689 -1.764 c
-37.413 -1.433 37.269 -0.992 37.262 -0.441 c
-h
-37.909 -0.382 m
-37.909 -0.786 37.986 -1.103 38.144 -1.338 c
-38.31 -1.573 38.53 -1.691 38.806 -1.691 c
-39.372 -1.691 39.665 -1.278 39.687 -0.455 c
-39.687 0 l
-39.687 0.401 39.603 0.721 39.438 0.956 c
-39.28 1.199 39.062 1.323 38.79 1.323 c
-38.526 1.323 38.31 1.199 38.144 0.956 c
-37.986 0.721 37.909 0.401 37.909 0 c
-h
-41.79 1.808 m
-41.804 1.44 l
-42.046 1.735 42.366 1.881 42.759 1.881 c
-43.201 1.881 43.509 1.683 43.685 1.294 c
-43.939 1.683 44.288 1.881 44.729 1.881 c
-45.464 1.881 45.839 1.419 45.861 0.5 c
-45.861 -2.175 l
-45.215 -2.175 l
-45.215 0.441 l
-45.215 0.735 45.159 0.948 45.053 1.087 c
-44.953 1.224 44.781 1.294 44.538 1.294 c
-44.34 1.294 44.178 1.213 44.053 1.058 c
-43.935 0.912 43.866 0.721 43.847 0.485 c
-43.847 -2.175 l
-43.186 -2.175 l
-43.186 0.47 l
-43.186 1.018 42.965 1.294 42.524 1.294 c
-42.19 1.294 41.955 1.132 41.819 0.809 c
-41.819 -2.175 l
-41.172 -2.175 l
-41.172 1.808 l
-h
-47.448 1.808 m
-47.463 1.44 l
-47.706 1.735 48.026 1.881 48.419 1.881 c
-48.859 1.881 49.169 1.683 49.345 1.294 c
-49.599 1.683 49.948 1.881 50.389 1.881 c
-51.124 1.881 51.498 1.419 51.521 0.5 c
-51.521 -2.175 l
-50.873 -2.175 l
-50.873 0.441 l
-50.873 0.735 50.819 0.948 50.712 1.087 c
-50.613 1.224 50.44 1.294 50.197 1.294 c
-49.998 1.294 49.838 1.213 49.712 1.058 c
-49.595 0.912 49.525 0.721 49.506 0.485 c
-49.506 -2.175 l
-48.845 -2.175 l
-48.845 0.47 l
-48.845 1.018 48.624 1.294 48.184 1.294 c
-47.849 1.294 47.614 1.132 47.478 0.809 c
-47.478 -2.175 l
-46.831 -2.175 l
-46.831 1.808 l
-h
-53.196 -2.175 -0.647 3.983 re
-53.24 2.851 m
-53.24 2.741 53.211 2.65 53.152 2.573 c
-53.093 2.502 52.997 2.469 52.872 2.469 c
-52.755 2.469 52.66 2.502 52.593 2.573 c
-52.535 2.65 52.505 2.741 52.505 2.851 c
-52.505 2.969 52.535 3.061 52.593 3.131 c
-52.66 3.208 52.755 3.248 52.872 3.248 c
-52.997 3.248 53.093 3.208 53.152 3.131 c
-53.211 3.05 53.24 2.959 53.24 2.851 c
-55.062 2.764 m
-55.062 1.808 l
-55.665 1.808 l
-55.665 1.279 l
-55.062 1.279 l
-55.062 -1.19 l
-55.062 -1.348 55.085 -1.466 55.136 -1.543 c
-55.195 -1.624 55.283 -1.66 55.401 -1.66 c
-55.489 -1.66 55.577 -1.646 55.665 -1.617 c
-55.665 -2.175 l
-55.519 -2.223 55.364 -2.248 55.209 -2.248 c
-54.952 -2.248 54.758 -2.157 54.622 -1.97 c
-54.482 -1.786 54.416 -1.525 54.416 -1.19 c
-54.416 1.279 l
-53.813 1.279 l
-53.813 1.808 l
-54.416 1.808 l
-54.416 2.764 l
-h
-57.855 -2.248 m
-57.356 -2.248 56.974 -2.102 56.709 -1.808 c
-56.444 -1.514 56.312 -1.08 56.312 -0.5 c
-56.312 -0.029 l
-56.312 0.566 56.437 1.033 56.695 1.367 c
-56.959 1.709 57.319 1.881 57.782 1.881 c
-58.241 1.881 58.583 1.727 58.811 1.426 c
-59.046 1.132 59.168 0.669 59.178 0.044 c
-59.178 -0.382 l
-56.959 -0.382 l
-56.959 -0.47 l
-56.959 -0.904 57.036 -1.216 57.194 -1.411 c
-57.36 -1.598 57.591 -1.691 57.885 -1.691 c
-58.079 -1.691 58.252 -1.657 58.399 -1.587 c
-58.546 -1.51 58.682 -1.392 58.811 -1.234 c
-59.149 -1.646 l
-58.862 -2.05 58.432 -2.248 57.855 -2.248 c
-57.782 1.323 m
-57.507 1.323 57.304 1.228 57.179 1.044 c
-57.051 0.856 56.977 0.566 56.959 0.177 c
-58.532 0.177 l
-58.532 0.264 l
-58.509 0.647 58.443 0.915 58.326 1.073 c
-58.208 1.239 58.025 1.323 57.782 1.323 c
-59.825 0 m
-59.825 0.607 59.935 1.073 60.163 1.397 c
-60.398 1.72 60.726 1.881 61.148 1.881 c
-61.53 1.881 61.828 1.723 62.045 1.411 c
-62.045 3.469 l
-62.692 3.469 l
-62.692 -2.175 l
-62.104 -2.175 l
-62.06 -1.749 l
-61.854 -2.084 61.549 -2.248 61.148 -2.248 c
-60.737 -2.248 60.413 -2.094 60.178 -1.778 c
-59.943 -1.455 59.825 -0.999 59.825 -0.411 c
-h
-60.472 -0.382 m
-60.472 -0.823 60.535 -1.153 60.663 -1.367 c
-60.799 -1.573 61.019 -1.675 61.324 -1.675 c
-61.648 -1.675 61.887 -1.514 62.045 -1.19 c
-62.045 0.823 l
-61.875 1.135 61.637 1.294 61.324 1.294 c
-61.019 1.294 60.799 1.191 60.663 0.985 c
-60.535 0.779 60.472 0.456 60.472 0.015 c
-h
-67.351 -1.161 m
-67.351 -1.014 67.296 -0.893 67.189 -0.794 c
-67.079 -0.698 66.873 -0.58 66.572 -0.441 c
-66.226 -0.294 65.984 -0.172 65.837 -0.073 c
-65.69 0.033 65.58 0.151 65.514 0.279 c
-65.443 0.405 65.411 0.563 65.411 0.75 c
-65.411 1.073 65.528 1.341 65.763 1.558 c
-65.999 1.771 66.3 1.881 66.675 1.881 c
-67.057 1.881 67.365 1.768 67.601 1.544 c
-67.836 1.316 67.953 1.029 67.953 0.676 c
-67.307 0.676 l
-67.307 0.852 67.248 1.004 67.13 1.132 c
-67.013 1.257 66.858 1.323 66.675 1.323 c
-66.476 1.323 66.326 1.268 66.22 1.162 c
-66.109 1.062 66.058 0.93 66.058 0.765 c
-66.058 0.636 66.094 0.53 66.175 0.441 c
-66.253 0.36 66.444 0.258 66.748 0.133 c
-67.226 -0.055 67.557 -0.243 67.733 -0.426 c
-67.909 -0.602 67.998 -0.831 67.998 -1.103 c
-67.998 -1.455 67.872 -1.735 67.631 -1.94 c
-67.396 -2.146 67.079 -2.248 66.69 -2.248 c
-66.267 -2.248 65.929 -2.131 65.676 -1.896 c
-65.418 -1.654 65.293 -1.348 65.293 -0.985 c
-65.94 -0.985 l
-65.948 -1.213 66.017 -1.389 66.146 -1.514 c
-66.27 -1.631 66.455 -1.691 66.69 -1.691 c
-66.903 -1.691 67.064 -1.643 67.174 -1.543 c
-67.292 -1.448 67.351 -1.319 67.351 -1.161 c
-69.688 2.764 m
-69.688 1.808 l
-70.291 1.808 l
-70.291 1.279 l
-69.688 1.279 l
-69.688 -1.19 l
-69.688 -1.348 69.711 -1.466 69.761 -1.543 c
-69.821 -1.624 69.909 -1.66 70.026 -1.66 c
-70.114 -1.66 70.203 -1.646 70.291 -1.617 c
-70.291 -2.175 l
-70.144 -2.223 69.989 -2.248 69.835 -2.248 c
-69.578 -2.248 69.383 -2.157 69.247 -1.97 c
-69.108 -1.786 69.042 -1.525 69.042 -1.19 c
-69.042 1.279 l
-68.439 1.279 l
-68.439 1.808 l
-69.042 1.808 l
-69.042 2.764 l
-h
-73.098 -2.175 m
-73.058 -2.087 73.032 -1.94 73.025 -1.735 c
-72.79 -2.08 72.496 -2.248 72.142 -2.248 c
-71.779 -2.248 71.496 -2.153 71.29 -1.955 c
-71.092 -1.749 70.997 -1.462 70.997 -1.087 c
-70.997 -0.687 71.132 -0.367 71.408 -0.132 c
-71.68 0.11 72.055 0.235 72.525 0.235 c
-73.01 0.235 l
-73.01 0.661 l
-73.01 0.897 72.955 1.062 72.848 1.162 c
-72.738 1.268 72.576 1.323 72.364 1.323 c
-72.165 1.323 72.003 1.264 71.878 1.147 c
-71.761 1.029 71.702 0.882 71.702 0.706 c
-71.055 0.706 l
-71.055 0.9 71.114 1.091 71.232 1.279 c
-71.357 1.463 71.518 1.61 71.716 1.72 c
-71.922 1.827 72.15 1.881 72.408 1.881 c
-72.809 1.881 73.113 1.779 73.318 1.573 c
-73.532 1.367 73.646 1.073 73.657 0.691 c
-73.657 -1.323 l
-73.657 -1.627 73.694 -1.892 73.775 -2.117 c
-73.775 -2.175 l
-h
-72.231 -1.66 m
-72.396 -1.66 72.547 -1.617 72.687 -1.529 c
-72.834 -1.44 72.94 -1.33 73.01 -1.19 c
-73.01 -0.249 l
-72.643 -0.249 l
-72.327 -0.249 72.084 -0.32 71.907 -0.455 c
-71.731 -0.584 71.643 -0.771 71.643 -1.014 c
-71.643 -1.242 71.687 -1.407 71.776 -1.514 c
-71.864 -1.613 72.015 -1.66 72.231 -1.66 c
-75.509 2.764 m
-75.509 1.808 l
-76.111 1.808 l
-76.111 1.279 l
-75.509 1.279 l
-75.509 -1.19 l
-75.509 -1.348 75.531 -1.466 75.583 -1.543 c
-75.641 -1.624 75.73 -1.66 75.847 -1.66 c
-75.936 -1.66 76.024 -1.646 76.111 -1.617 c
-76.111 -2.175 l
-75.965 -2.223 75.81 -2.248 75.656 -2.248 c
-75.398 -2.248 75.204 -2.157 75.068 -1.97 c
-74.928 -1.786 74.862 -1.525 74.862 -1.19 c
-74.862 1.279 l
-74.259 1.279 l
-74.259 1.808 l
-74.862 1.808 l
-74.862 2.764 l
-h
-78.905 -1.822 m
-78.688 -2.109 78.376 -2.248 77.964 -2.248 c
-77.6 -2.248 77.324 -2.127 77.141 -1.882 c
-76.965 -1.627 76.869 -1.264 76.861 -0.794 c
-76.861 1.808 l
-77.508 1.808 l
-77.508 -0.735 l
-77.508 -1.363 77.692 -1.675 78.066 -1.675 c
-78.467 -1.675 78.743 -1.5 78.889 -1.147 c
-78.889 1.808 l
-79.537 1.808 l
-79.537 -2.175 l
-78.92 -2.175 l
-h
-82.461 -1.161 m
-82.461 -1.014 82.407 -0.893 82.3 -0.794 c
-82.19 -0.698 81.984 -0.58 81.683 -0.441 c
-81.337 -0.294 81.095 -0.172 80.948 -0.073 c
-80.801 0.033 80.69 0.151 80.624 0.279 c
-80.555 0.405 80.522 0.563 80.522 0.75 c
-80.522 1.073 80.639 1.341 80.874 1.558 c
-81.11 1.771 81.411 1.881 81.785 1.881 c
-82.168 1.881 82.477 1.768 82.712 1.544 c
-82.947 1.316 83.064 1.029 83.064 0.676 c
-82.417 0.676 l
-82.417 0.852 82.359 1.004 82.241 1.132 c
-82.124 1.257 81.969 1.323 81.785 1.323 c
-81.587 1.323 81.436 1.268 81.33 1.162 c
-81.22 1.062 81.168 0.93 81.168 0.765 c
-81.168 0.636 81.205 0.53 81.286 0.441 c
-81.363 0.36 81.554 0.258 81.859 0.133 c
-82.336 -0.055 82.668 -0.243 82.844 -0.426 c
-83.02 -0.602 83.109 -0.831 83.109 -1.103 c
-83.109 -1.455 82.984 -1.735 82.741 -1.94 c
-82.506 -2.146 82.19 -2.248 81.8 -2.248 c
-81.378 -2.248 81.04 -2.131 80.786 -1.896 c
-80.529 -1.654 80.404 -1.348 80.404 -0.985 c
-81.05 -0.985 l
-81.058 -1.213 81.127 -1.389 81.256 -1.514 c
-81.382 -1.631 81.565 -1.691 81.8 -1.691 c
-82.014 -1.691 82.175 -1.643 82.286 -1.543 c
-82.403 -1.448 82.461 -1.319 82.461 -1.161 c
-85.343 -0.044 m
-85.343 -1.132 85.096 -2.098 84.607 -2.94 c
-84.343 -3.388 84.067 -3.711 83.785 -3.91 c
-83.667 -3.484 l
-83.969 -3.189 84.215 -2.738 84.402 -2.131 c
-84.597 -1.525 84.696 -0.86 84.696 -0.132 c
-84.696 0 l
-84.696 0.93 84.541 1.764 84.24 2.499 c
-84.071 2.899 83.88 3.219 83.667 3.454 c
-83.785 3.866 l
-84.057 3.678 84.321 3.381 84.578 2.969 c
-85.085 2.117 85.343 1.11 85.343 -0.044 c
-86.386 -1.822 m
-86.386 -1.705 86.419 -1.61 86.489 -1.529 c
-86.556 -1.452 86.658 -1.411 86.798 -1.411 c
-86.945 -1.411 87.051 -1.452 87.121 -1.529 c
-87.198 -1.61 87.239 -1.705 87.239 -1.822 c
-87.239 -1.932 87.198 -2.024 87.121 -2.102 c
-87.051 -2.179 86.945 -2.219 86.798 -2.219 c
-86.658 -2.219 86.556 -2.179 86.489 -2.102 c
-86.419 -2.024 86.386 -1.932 86.386 -1.822 c
-f
-Q
-0.113 0.082 0.09 0 k
-287.665 327.439 234.667 -12.898 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 292.8568 320.5995 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.646 -0.243 -0.775 -0.367 -0.881 c
--0.496 -0.992 -0.658 -1.08 -0.852 -1.146 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.263 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.161 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.926 c
--3.127 -0.819 -3.23 -0.69 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.213 -3.484 -0.014 c
--2.66 0.133 l
--2.642 0.033 -2.616 -0.058 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.367 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.684 -1.992 0.691 -1.999 0.691 c
--2.167 0.728 -2.329 0.772 -2.484 0.823 c
--2.642 0.882 -2.786 0.96 -2.91 1.058 c
--3.039 1.154 -3.142 1.279 -3.219 1.426 c
--3.289 1.573 -3.322 1.756 -3.322 1.985 c
--3.322 2.18 -3.289 2.344 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.837 c
--2.8 2.932 -2.645 3.003 -2.469 3.043 c
--2.293 3.09 -2.102 3.12 -1.896 3.131 c
--1.896 3.558 l
--1.543 3.558 l
--1.543 3.131 l
--1.319 3.12 -1.128 3.09 -0.97 3.043 c
--0.804 2.992 -0.669 2.918 -0.558 2.822 c
--0.44 2.735 -0.349 2.62 -0.279 2.484 c
--0.202 2.344 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.253 -1.213 2.459 -1.543 2.5 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.36 -1.469 1.353 c
--1.294 1.312 -1.117 1.264 -0.941 1.206 c
--0.756 1.147 -0.595 1.066 -0.455 0.971 c
--0.32 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.455 c
--2.26 2.425 -2.319 2.385 -2.366 2.338 c
--2.406 2.297 -2.436 2.249 -2.454 2.19 c
--2.477 2.132 -2.484 2.066 -2.484 1.999 c
--2.484 1.912 -2.469 1.837 -2.439 1.779 c
--2.41 1.72 -2.373 1.669 -2.322 1.632 c
--2.263 1.592 -2.201 1.559 -2.131 1.529 c
--2.065 1.5 -1.984 1.47 -1.896 1.441 c
-h
--0.837 -0.014 m
--0.837 0.092 -0.86 0.177 -0.897 0.235 c
--0.926 0.302 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.53 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.529 -1.028 -0.44 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.014 c
-6.402 -2.66 m
-6.184 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.396 c
-5.284 -2.315 5.185 -2.219 5.108 -2.102 c
-5.039 -1.984 4.991 -1.855 4.961 -1.72 c
-5.858 -1.616 l
-5.895 -1.753 5.964 -1.859 6.064 -1.94 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.057 6.681 -2.028 c
-6.758 -1.999 6.828 -1.944 6.887 -1.866 c
-6.945 -1.797 6.99 -1.705 7.019 -1.587 c
-7.056 -1.469 7.078 -1.323 7.078 -1.146 c
-7.078 -0.955 l
-7.078 -0.889 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.072 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.215 -0.897 5.108 -0.75 c
-5.009 -0.595 4.935 -0.411 4.888 -0.205 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.772 4.836 1.018 4.888 1.235 c
-4.946 1.448 5.027 1.632 5.137 1.779 c
-5.244 1.933 5.376 2.051 5.534 2.132 c
-5.689 2.22 5.876 2.264 6.093 2.264 c
-6.188 2.264 6.288 2.253 6.387 2.234 c
-6.483 2.213 6.571 2.18 6.652 2.132 c
-6.739 2.08 6.817 2.018 6.887 1.941 c
-6.964 1.86 7.026 1.768 7.078 1.661 c
-7.092 1.661 l
-7.092 1.808 l
-7.1 1.867 7.107 1.918 7.107 1.97 c
-7.115 2.029 7.122 2.076 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.151 2.22 c
-8.004 2.22 l
-7.993 2.139 7.982 2.029 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.161 l
-7.975 -1.415 7.938 -1.635 7.871 -1.822 c
-7.802 -2.007 7.699 -2.161 7.563 -2.278 c
-7.423 -2.403 7.258 -2.499 7.063 -2.557 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.53 m
-7.092 0.742 7.067 0.919 7.019 1.058 c
-6.978 1.206 6.924 1.324 6.857 1.411 c
-6.799 1.5 6.729 1.559 6.652 1.588 c
-6.571 1.625 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.621 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.367 c
-5.88 1.279 5.835 1.162 5.799 1.014 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.338 c
-6.049 -0.515 6.211 -0.602 6.417 -0.602 c
-6.483 -0.602 6.556 -0.588 6.637 -0.558 c
-6.725 -0.521 6.799 -0.463 6.857 -0.382 c
-6.924 -0.293 6.978 -0.176 7.019 -0.029 c
-7.067 0.118 7.092 0.302 7.092 0.53 c
-11.036 -0.646 m
-12.168 -0.646 l
-12.168 -1.263 l
-8.86 -1.263 l
-8.86 -0.646 l
-10.124 -0.646 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.22 l
-11.036 2.22 l
-h
-10.124 3.514 0.912 -0.676 re
-10.124 2.837 m
-13.597 1.602 m
-13.053 1.602 l
-13.053 2.22 l
-13.641 2.22 l
-13.92 3.117 l
-14.494 3.117 l
-14.494 2.22 l
-15.728 2.22 l
-15.728 1.602 l
-14.494 1.602 l
-14.494 -0.103 l
-14.494 -0.323 l
-14.501 -0.393 14.523 -0.455 14.552 -0.515 c
-14.589 -0.565 14.645 -0.61 14.714 -0.646 c
-14.791 -0.675 14.905 -0.69 15.052 -0.69 c
-15.188 -0.69 15.324 -0.687 15.464 -0.675 c
-15.599 -0.658 15.732 -0.632 15.861 -0.602 c
-15.861 -1.205 l
-15.78 -1.216 15.703 -1.23 15.626 -1.249 c
-15.545 -1.261 15.468 -1.267 15.391 -1.278 c
-15.31 -1.286 15.221 -1.294 15.125 -1.294 c
-15.038 -1.301 14.938 -1.308 14.832 -1.308 c
-14.645 -1.308 14.483 -1.294 14.346 -1.263 c
-14.218 -1.227 14.104 -1.183 14.009 -1.132 c
-13.92 -1.084 13.847 -1.025 13.788 -0.955 c
-13.729 -0.878 13.685 -0.801 13.656 -0.72 c
-13.627 -0.632 13.604 -0.544 13.597 -0.455 c
-13.586 -0.36 13.582 -0.264 13.582 -0.176 c
-h
-22.677 -1.323 m
-22.391 -1.323 22.148 -1.282 21.942 -1.205 c
-21.737 -1.117 21.564 -0.995 21.428 -0.837 c
-21.288 -0.683 21.185 -0.496 21.12 -0.279 c
-21.049 -0.055 21.016 0.191 21.016 0.456 c
-21.016 0.75 21.049 1.008 21.12 1.235 c
-21.197 1.459 21.303 1.646 21.442 1.794 c
-21.59 1.948 21.766 2.066 21.972 2.147 c
-22.177 2.234 22.412 2.279 22.677 2.279 c
-22.901 2.279 23.104 2.249 23.28 2.19 c
-23.456 2.132 23.607 2.047 23.736 1.941 c
-23.861 1.841 23.963 1.72 24.044 1.573 c
-24.121 1.434 24.177 1.283 24.206 1.118 c
-23.295 1.073 l
-23.265 1.249 23.196 1.389 23.089 1.5 c
-22.99 1.606 22.846 1.661 22.662 1.661 c
-22.416 1.661 22.24 1.559 22.134 1.353 c
-22.023 1.154 21.972 0.867 21.972 0.485 c
-21.972 -0.309 22.207 -0.706 22.677 -0.706 c
-22.843 -0.706 22.986 -0.654 23.104 -0.544 c
-23.221 -0.437 23.295 -0.276 23.324 -0.058 c
-24.235 -0.103 l
-24.206 -0.272 24.151 -0.426 24.074 -0.573 c
-24.004 -0.72 23.901 -0.852 23.765 -0.97 c
-23.636 -1.08 23.478 -1.168 23.295 -1.234 c
-23.118 -1.294 22.913 -1.323 22.677 -1.323 c
-26.076 1.515 m
-26.194 1.786 26.344 1.985 26.532 2.103 c
-26.716 2.22 26.936 2.279 27.194 2.279 c
-27.399 2.279 27.568 2.242 27.708 2.176 c
-27.855 2.106 27.965 2.014 28.046 1.897 c
-28.135 1.779 28.193 1.636 28.222 1.47 c
-28.259 1.301 28.281 1.125 28.281 0.941 c
-28.281 -1.263 l
-27.37 -1.263 l
-27.37 0.736 l
-27.37 0.871 27.359 0.992 27.341 1.103 c
-27.329 1.209 27.304 1.297 27.267 1.367 c
-27.227 1.444 27.168 1.503 27.09 1.544 c
-27.021 1.58 26.929 1.602 26.811 1.602 c
-26.701 1.602 26.606 1.577 26.518 1.529 c
-26.429 1.478 26.348 1.411 26.282 1.324 c
-26.223 1.235 26.172 1.125 26.136 1 c
-26.106 0.882 26.091 0.75 26.091 0.603 c
-26.091 -1.263 l
-25.18 -1.263 l
-25.18 3.514 l
-26.091 3.514 l
-26.091 2.205 l
-26.091 2.135 26.084 2.066 26.076 1.999 c
-26.076 1.794 l
-26.076 1.735 26.069 1.679 26.061 1.632 c
-26.061 1.515 l
-h
-30.799 -1.323 m
-30.541 -1.323 30.313 -1.286 30.107 -1.22 c
-29.901 -1.143 29.725 -1.028 29.579 -0.881 c
-29.431 -0.727 29.313 -0.536 29.226 -0.309 c
-29.145 -0.085 29.108 0.181 29.108 0.485 c
-29.108 0.816 29.153 1.095 29.24 1.324 c
-29.336 1.559 29.465 1.742 29.623 1.881 c
-29.788 2.018 29.976 2.117 30.181 2.176 c
-30.387 2.242 30.597 2.279 30.813 2.279 c
-31.085 2.279 31.32 2.227 31.519 2.132 c
-31.725 2.043 31.89 1.912 32.018 1.735 c
-32.154 1.565 32.253 1.36 32.313 1.118 c
-32.378 0.882 32.415 0.618 32.415 0.324 c
-32.415 0.309 l
-30.049 0.309 l
-30.049 0.162 30.063 0.023 30.093 -0.103 c
-30.13 -0.231 30.185 -0.345 30.254 -0.44 c
-30.321 -0.529 30.406 -0.598 30.504 -0.646 c
-30.6 -0.698 30.714 -0.72 30.842 -0.72 c
-30.997 -0.72 31.137 -0.687 31.254 -0.617 c
-31.379 -0.551 31.468 -0.448 31.519 -0.309 c
-32.357 -0.382 l
-32.328 -0.481 32.272 -0.588 32.195 -0.706 c
-32.114 -0.816 32.011 -0.918 31.886 -1.014 c
-31.769 -1.103 31.614 -1.176 31.43 -1.234 c
-31.254 -1.294 31.041 -1.323 30.799 -1.323 c
-30.799 1.706 m
-30.71 1.706 30.622 1.691 30.534 1.661 c
-30.446 1.632 30.365 1.58 30.298 1.515 c
-30.229 1.444 30.17 1.357 30.122 1.249 c
-30.082 1.139 30.063 1.014 30.063 0.867 c
-31.534 0.867 l
-31.534 1.004 31.507 1.125 31.46 1.235 c
-31.42 1.342 31.364 1.43 31.298 1.5 c
-31.239 1.565 31.166 1.617 31.077 1.646 c
-30.99 1.683 30.894 1.706 30.799 1.706 c
-34.859 -1.323 m
-34.572 -1.323 34.329 -1.282 34.124 -1.205 c
-33.918 -1.117 33.745 -0.995 33.61 -0.837 c
-33.47 -0.683 33.367 -0.496 33.301 -0.279 c
-33.231 -0.055 33.198 0.191 33.198 0.456 c
-33.198 0.75 33.231 1.008 33.301 1.235 c
-33.378 1.459 33.485 1.646 33.624 1.794 c
-33.772 1.948 33.948 2.066 34.154 2.147 c
-34.36 2.234 34.595 2.279 34.859 2.279 c
-35.083 2.279 35.285 2.249 35.462 2.19 c
-35.638 2.132 35.789 2.047 35.917 1.941 c
-36.043 1.841 36.145 1.72 36.226 1.573 c
-36.303 1.434 36.359 1.283 36.388 1.118 c
-35.476 1.073 l
-35.447 1.249 35.377 1.389 35.27 1.5 c
-35.171 1.606 35.028 1.661 34.844 1.661 c
-34.599 1.661 34.422 1.559 34.315 1.353 c
-34.205 1.154 34.154 0.867 34.154 0.485 c
-34.154 -0.309 34.389 -0.706 34.859 -0.706 c
-35.025 -0.706 35.168 -0.654 35.285 -0.544 c
-35.403 -0.437 35.476 -0.276 35.505 -0.058 c
-36.417 -0.103 l
-36.388 -0.272 36.332 -0.426 36.255 -0.573 c
-36.186 -0.72 36.083 -0.852 35.947 -0.97 c
-35.818 -1.08 35.661 -1.168 35.476 -1.234 c
-35.3 -1.294 35.094 -1.323 34.859 -1.323 c
-39.688 -1.263 m
-38.761 0.309 l
-38.365 0.044 l
-38.365 -1.263 l
-37.468 -1.263 l
-37.468 3.514 l
-38.365 3.514 l
-38.365 0.779 l
-39.615 2.22 l
-40.584 2.22 l
-39.364 0.853 l
-40.673 -1.263 l
-h
-44.631 0.485 m
-44.631 0.21 44.594 -0.04 44.527 -0.264 c
-44.457 -0.481 44.355 -0.669 44.219 -0.823 c
-44.079 -0.981 43.902 -1.103 43.69 -1.19 c
-43.473 -1.278 43.219 -1.323 42.925 -1.323 c
-42.649 -1.323 42.403 -1.278 42.19 -1.19 c
-41.984 -1.103 41.812 -0.981 41.676 -0.823 c
-41.536 -0.669 41.433 -0.481 41.367 -0.264 c
-41.298 -0.04 41.265 0.21 41.265 0.485 c
-41.265 0.738 41.294 0.974 41.352 1.191 c
-41.419 1.415 41.521 1.606 41.661 1.764 c
-41.797 1.929 41.973 2.058 42.19 2.147 c
-42.403 2.234 42.661 2.279 42.954 2.279 c
-43.267 2.279 43.528 2.234 43.734 2.147 c
-43.947 2.058 44.12 1.929 44.248 1.764 c
-44.384 1.606 44.483 1.415 44.542 1.191 c
-44.6 0.974 44.631 0.738 44.631 0.485 c
-43.675 0.485 m
-43.675 0.691 43.66 0.867 43.631 1.014 c
-43.609 1.162 43.572 1.283 43.513 1.382 c
-43.455 1.478 43.381 1.548 43.293 1.588 c
-43.204 1.636 43.094 1.661 42.969 1.661 c
-42.705 1.661 42.514 1.562 42.396 1.367 c
-42.279 1.18 42.219 0.886 42.219 0.485 c
-42.219 0.063 42.279 -0.243 42.396 -0.426 c
-42.514 -0.613 42.69 -0.706 42.925 -0.706 c
-43.05 -0.706 43.164 -0.687 43.264 -0.646 c
-43.359 -0.598 43.44 -0.525 43.499 -0.426 c
-43.565 -0.33 43.609 -0.205 43.631 -0.058 c
-43.66 0.088 43.675 0.268 43.675 0.485 c
-46.368 2.22 m
-46.368 0.265 l
-46.368 0.125 46.376 0 46.398 -0.118 c
-46.416 -0.228 46.449 -0.32 46.501 -0.397 c
-46.549 -0.478 46.607 -0.54 46.677 -0.588 c
-46.743 -0.628 46.828 -0.646 46.927 -0.646 c
-47.015 -0.646 47.096 -0.628 47.177 -0.588 c
-47.265 -0.54 47.339 -0.47 47.397 -0.382 c
-47.457 -0.286 47.5 -0.176 47.53 -0.058 c
-47.567 0.067 47.588 0.206 47.588 0.353 c
-47.588 2.22 l
-48.485 2.22 l
-48.485 -0.484 l
-48.485 -0.72 l
-48.492 -0.801 48.5 -0.878 48.5 -0.955 c
-48.5 -1.146 l
-48.507 -1.198 48.515 -1.234 48.515 -1.263 c
-47.662 -1.263 l
-47.651 -1.234 47.64 -1.198 47.632 -1.146 c
-47.632 -0.955 l
-47.632 -0.889 47.625 -0.819 47.617 -0.75 c
-47.617 -0.573 l
-47.603 -0.573 l
-47.486 -0.837 47.331 -1.028 47.147 -1.146 c
-46.971 -1.263 46.769 -1.323 46.545 -1.323 c
-46.339 -1.323 46.166 -1.286 46.03 -1.22 c
-45.891 -1.153 45.78 -1.058 45.693 -0.941 c
-45.612 -0.823 45.552 -0.687 45.516 -0.529 c
-45.487 -0.363 45.472 -0.187 45.472 0 c
-45.472 2.22 l
-h
-50.15 1.602 m
-49.606 1.602 l
-49.606 2.22 l
-50.194 2.22 l
-50.473 3.117 l
-51.046 3.117 l
-51.046 2.22 l
-52.281 2.22 l
-52.281 1.602 l
-51.046 1.602 l
-51.046 -0.103 l
-51.046 -0.323 l
-51.054 -0.393 51.076 -0.455 51.105 -0.515 c
-51.142 -0.565 51.197 -0.61 51.267 -0.646 c
-51.344 -0.675 51.458 -0.69 51.605 -0.69 c
-51.741 -0.69 51.877 -0.687 52.016 -0.675 c
-52.153 -0.658 52.284 -0.632 52.413 -0.602 c
-52.413 -1.205 l
-52.332 -1.216 52.255 -1.23 52.178 -1.249 c
-52.097 -1.261 52.02 -1.267 51.943 -1.278 c
-51.862 -1.286 51.774 -1.294 51.679 -1.294 c
-51.59 -1.301 51.491 -1.308 51.384 -1.308 c
-51.197 -1.308 51.035 -1.294 50.9 -1.263 c
-50.771 -1.227 50.657 -1.183 50.561 -1.132 c
-50.473 -1.084 50.399 -1.025 50.341 -0.955 c
-50.283 -0.878 50.238 -0.801 50.208 -0.72 c
-50.179 -0.632 50.157 -0.544 50.15 -0.455 c
-50.139 -0.36 50.135 -0.264 50.135 -0.176 c
-h
-58.26 0.838 1.866 -0.794 re
-58.26 0.044 m
-62.32 0.838 1.867 -0.794 re
-62.32 0.044 m
-70.603 -2.631 m
-70.603 3.514 l
-72.529 3.514 l
-72.529 2.896 l
-71.456 2.896 l
-71.456 -2.013 l
-72.529 -2.013 l
-72.529 -2.631 l
-h
-75.561 1.602 m
-75.561 -1.263 l
-74.664 -1.263 l
-74.664 1.602 l
-73.841 1.602 l
-73.841 2.22 l
-74.664 2.22 l
-74.664 2.484 l
-74.664 2.61 74.679 2.741 74.708 2.882 c
-74.745 3.017 74.815 3.135 74.914 3.234 c
-75.02 3.341 75.164 3.429 75.34 3.499 c
-75.517 3.564 75.741 3.601 76.016 3.601 c
-76.23 3.601 76.428 3.591 76.604 3.572 c
-76.78 3.55 76.932 3.532 77.06 3.514 c
-77.06 2.926 l
-76.932 2.944 76.788 2.959 76.634 2.97 c
-76.476 2.977 76.325 2.984 76.178 2.984 c
-76.049 2.984 75.947 2.97 75.87 2.94 c
-75.789 2.911 75.726 2.87 75.679 2.822 c
-75.627 2.771 75.594 2.708 75.575 2.631 c
-75.564 2.562 75.561 2.484 75.561 2.396 c
-75.561 2.22 l
-76.986 2.22 l
-76.986 1.602 l
-h
-80.08 -0.646 m
-81.212 -0.646 l
-81.212 -1.263 l
-77.905 -1.263 l
-77.905 -0.646 l
-79.17 -0.646 l
-79.17 1.602 l
-78.243 1.602 l
-78.243 2.22 l
-80.08 2.22 l
-h
-79.17 3.514 0.911 -0.676 re
-79.17 2.837 m
-84.142 -0.646 m
-85.273 -0.646 l
-85.273 -1.263 l
-81.966 -1.263 l
-81.966 -0.646 l
-83.23 -0.646 l
-83.23 2.896 l
-82.304 2.896 l
-82.304 3.514 l
-84.142 3.514 l
-h
-87.658 -1.323 m
-87.401 -1.323 87.173 -1.286 86.968 -1.22 c
-86.762 -1.143 86.585 -1.028 86.438 -0.881 c
-86.291 -0.727 86.174 -0.536 86.085 -0.309 c
-86.004 -0.085 85.968 0.181 85.968 0.485 c
-85.968 0.816 86.012 1.095 86.1 1.324 c
-86.195 1.559 86.324 1.742 86.482 1.881 c
-86.648 2.018 86.835 2.117 87.041 2.176 c
-87.246 2.242 87.456 2.279 87.673 2.279 c
-87.945 2.279 88.18 2.227 88.379 2.132 c
-88.584 2.043 88.749 1.912 88.878 1.735 c
-89.014 1.565 89.113 1.36 89.172 1.118 c
-89.239 0.882 89.275 0.618 89.275 0.324 c
-89.275 0.309 l
-86.908 0.309 l
-86.908 0.162 86.923 0.023 86.953 -0.103 c
-86.989 -0.231 87.045 -0.345 87.114 -0.44 c
-87.18 -0.529 87.265 -0.598 87.364 -0.646 c
-87.46 -0.698 87.573 -0.72 87.702 -0.72 c
-87.857 -0.72 87.996 -0.687 88.113 -0.617 c
-88.239 -0.551 88.327 -0.448 88.379 -0.309 c
-89.216 -0.382 l
-89.187 -0.481 89.131 -0.588 89.054 -0.706 c
-88.973 -0.816 88.871 -0.918 88.746 -1.014 c
-88.628 -1.103 88.474 -1.176 88.29 -1.234 c
-88.113 -1.294 87.901 -1.323 87.658 -1.323 c
-87.658 1.706 m
-87.57 1.706 87.481 1.691 87.394 1.661 c
-87.305 1.632 87.224 1.58 87.159 1.515 c
-87.088 1.444 87.03 1.357 86.982 1.249 c
-86.941 1.139 86.923 1.014 86.923 0.867 c
-88.393 0.867 l
-88.393 1.004 88.367 1.125 88.319 1.235 c
-88.279 1.342 88.224 1.43 88.158 1.5 c
-88.099 1.565 88.026 1.617 87.938 1.646 c
-87.849 1.683 87.754 1.706 87.658 1.706 c
-90.528 -2.631 m
-90.528 -2.013 l
-91.601 -2.013 l
-91.601 2.896 l
-90.528 2.896 l
-90.528 3.514 l
-92.454 3.514 l
-92.454 -2.631 l
-h
-f
-Q
-q 1 0 0 1 311.4185 304.4451 cm
-0 0 m
-0 5.351 l
-1.278 5.351 l
-1.903 5.351 2.389 5.152 2.734 4.763 c
-3.075 4.37 3.248 3.822 3.248 3.117 c
-3.248 2.22 l
-3.248 1.515 3.072 0.963 2.719 0.574 c
-2.373 0.192 1.87 0 1.205 0 c
-h
-0.676 4.778 m
-0.676 0.574 l
-1.22 0.574 l
-1.69 0.574 2.032 0.709 2.248 0.985 c
-2.473 1.257 2.587 1.661 2.587 2.191 c
-2.587 3.132 l
-2.587 3.697 2.477 4.116 2.263 4.381 c
-2.047 4.645 1.72 4.778 1.278 4.778 c
-h
-4.91 0 -0.647 3.984 re
-4.953 5.027 m
-4.953 4.917 4.924 4.825 4.865 4.748 c
-4.806 4.678 4.711 4.645 4.586 4.645 c
-4.469 4.645 4.373 4.678 4.307 4.748 c
-4.247 4.825 4.218 4.917 4.218 5.027 c
-4.218 5.145 4.247 5.237 4.307 5.307 c
-4.373 5.384 4.469 5.424 4.586 5.424 c
-4.711 5.424 4.806 5.384 4.865 5.307 c
-4.924 5.226 4.953 5.134 4.953 5.027 c
-7.864 1.015 m
-7.864 1.162 7.809 1.283 7.702 1.382 c
-7.592 1.478 7.386 1.596 7.085 1.735 c
-6.739 1.882 6.497 2.003 6.35 2.103 c
-6.202 2.209 6.092 2.326 6.026 2.455 c
-5.957 2.58 5.924 2.739 5.924 2.926 c
-5.924 3.249 6.041 3.517 6.277 3.734 c
-6.512 3.947 6.813 4.057 7.187 4.057 c
-7.57 4.057 7.879 3.944 8.114 3.72 c
-8.349 3.491 8.467 3.205 8.467 2.852 c
-7.819 2.852 l
-7.819 3.028 7.761 3.179 7.643 3.308 c
-7.526 3.433 7.372 3.499 7.187 3.499 c
-6.989 3.499 6.838 3.444 6.732 3.337 c
-6.622 3.238 6.57 3.105 6.57 2.94 c
-6.57 2.812 6.607 2.705 6.688 2.617 c
-6.765 2.536 6.956 2.433 7.262 2.309 c
-7.739 2.12 8.07 1.933 8.246 1.75 c
-8.422 1.573 8.511 1.345 8.511 1.073 c
-8.511 0.721 8.386 0.441 8.143 0.235 c
-7.908 0.03 7.592 -0.073 7.202 -0.073 c
-6.78 -0.073 6.441 0.044 6.188 0.279 c
-5.93 0.522 5.806 0.827 5.806 1.191 c
-6.453 1.191 l
-6.46 0.963 6.53 0.786 6.659 0.662 c
-6.784 0.545 6.967 0.485 7.202 0.485 c
-7.416 0.485 7.577 0.533 7.688 0.632 c
-7.805 0.728 7.864 0.857 7.864 1.015 c
-10.73 0.485 m
-10.944 0.485 11.116 0.548 11.245 0.676 c
-11.38 0.813 11.454 1.004 11.465 1.25 c
-12.082 1.25 l
-12.06 0.867 11.925 0.548 11.671 0.294 c
-11.414 0.048 11.102 -0.073 10.73 -0.073 c
-10.238 -0.073 9.863 0.077 9.598 0.383 c
-9.341 0.695 9.216 1.162 9.216 1.779 c
-9.216 2.22 l
-9.216 2.816 9.341 3.271 9.598 3.587 c
-9.863 3.899 10.238 4.057 10.73 4.057 c
-11.131 4.057 11.451 3.925 11.686 3.66 c
-11.928 3.404 12.06 3.057 12.082 2.617 c
-11.465 2.617 l
-11.443 2.911 11.37 3.132 11.245 3.279 c
-11.127 3.425 10.954 3.499 10.73 3.499 c
-10.436 3.499 10.219 3.4 10.084 3.205 c
-9.944 3.017 9.87 2.708 9.863 2.278 c
-9.863 1.764 l
-9.863 1.294 9.929 0.96 10.069 0.765 c
-10.215 0.578 10.436 0.485 10.73 0.485 c
-14.875 0 m
-14.835 0.088 14.809 0.235 14.802 0.441 c
-14.566 0.096 14.273 -0.073 13.92 -0.073 c
-13.556 -0.073 13.273 0.023 13.067 0.221 c
-12.868 0.427 12.773 0.713 12.773 1.088 c
-12.773 1.488 12.909 1.808 13.184 2.043 c
-13.456 2.286 13.832 2.411 14.302 2.411 c
-14.787 2.411 l
-14.787 2.837 l
-14.787 3.072 14.732 3.238 14.626 3.337 c
-14.515 3.444 14.354 3.499 14.14 3.499 c
-13.942 3.499 13.78 3.44 13.655 3.323 c
-13.537 3.205 13.479 3.057 13.479 2.882 c
-12.832 2.882 l
-12.832 3.076 12.891 3.267 13.009 3.454 c
-13.134 3.639 13.295 3.786 13.493 3.896 c
-13.699 4.002 13.927 4.057 14.184 4.057 c
-14.585 4.057 14.89 3.955 15.096 3.749 c
-15.309 3.543 15.422 3.249 15.434 2.866 c
-15.434 0.853 l
-15.434 0.548 15.47 0.283 15.551 0.059 c
-15.551 0 l
-h
-14.008 0.515 m
-14.173 0.515 14.324 0.559 14.464 0.647 c
-14.611 0.736 14.717 0.846 14.787 0.985 c
-14.787 1.926 l
-14.42 1.926 l
-14.104 1.926 13.861 1.856 13.685 1.721 c
-13.508 1.592 13.42 1.405 13.42 1.162 c
-13.42 0.934 13.464 0.769 13.552 0.662 c
-13.641 0.563 13.791 0.515 14.008 0.515 c
-18.08 3.367 m
-17.992 3.385 17.892 3.396 17.786 3.396 c
-17.452 3.396 17.216 3.212 17.08 2.852 c
-17.08 0 l
-16.434 0 l
-16.434 3.984 l
-17.065 3.984 l
-17.08 3.572 l
-17.256 3.896 17.499 4.057 17.815 4.057 c
-17.922 4.057 18.01 4.035 18.08 3.998 c
-h
-18.52 2.176 m
-18.52 2.782 18.63 3.249 18.859 3.572 c
-19.094 3.896 19.421 4.057 19.843 4.057 c
-20.226 4.057 20.523 3.899 20.74 3.587 c
-20.74 5.644 l
-21.387 5.644 l
-21.387 0 l
-20.799 0 l
-20.755 0.427 l
-20.549 0.092 20.244 -0.073 19.843 -0.073 c
-19.432 -0.073 19.108 0.081 18.873 0.397 c
-18.638 0.721 18.52 1.176 18.52 1.764 c
-h
-19.168 1.794 m
-19.168 1.353 19.23 1.022 19.359 0.809 c
-19.494 0.603 19.715 0.5 20.02 0.5 c
-20.343 0.5 20.582 0.662 20.74 0.985 c
-20.74 2.999 l
-20.571 3.311 20.332 3.469 20.02 3.469 c
-19.715 3.469 19.494 3.367 19.359 3.161 c
-19.23 2.955 19.168 2.631 19.168 2.191 c
-h
-25.487 0.485 m
-25.701 0.485 25.874 0.548 26.002 0.676 c
-26.138 0.813 26.212 1.004 26.223 1.25 c
-26.84 1.25 l
-26.819 0.867 26.682 0.548 26.428 0.294 c
-26.171 0.048 25.859 -0.073 25.487 -0.073 c
-24.995 -0.073 24.621 0.077 24.356 0.383 c
-24.099 0.695 23.974 1.162 23.974 1.779 c
-23.974 2.22 l
-23.974 2.816 24.099 3.271 24.356 3.587 c
-24.621 3.899 24.995 4.057 25.487 4.057 c
-25.888 4.057 26.208 3.925 26.443 3.66 c
-26.686 3.404 26.819 3.057 26.84 2.617 c
-26.223 2.617 l
-26.201 2.911 26.127 3.132 26.002 3.279 c
-25.884 3.425 25.712 3.499 25.487 3.499 c
-25.194 3.499 24.978 3.4 24.841 3.205 c
-24.702 3.017 24.628 2.708 24.621 2.278 c
-24.621 1.764 l
-24.621 1.294 24.687 0.96 24.826 0.765 c
-24.974 0.578 25.194 0.485 25.487 0.485 c
-28.236 3.572 m
-28.49 3.896 28.81 4.057 29.192 4.057 c
-29.898 4.057 30.254 3.587 30.265 2.646 c
-30.265 0 l
-29.618 0 l
-29.618 2.617 l
-29.618 2.929 29.564 3.15 29.456 3.279 c
-29.346 3.404 29.192 3.469 28.986 3.469 c
-28.828 3.469 28.681 3.414 28.545 3.308 c
-28.417 3.198 28.313 3.061 28.236 2.897 c
-28.236 0 l
-27.59 0 l
-27.59 5.644 l
-28.236 5.644 l
-h
-33.264 0 m
-33.223 0.088 33.198 0.235 33.19 0.441 c
-32.955 0.096 32.662 -0.073 32.308 -0.073 c
-31.945 -0.073 31.662 0.023 31.456 0.221 c
-31.257 0.427 31.162 0.713 31.162 1.088 c
-31.162 1.488 31.297 1.808 31.573 2.043 c
-31.845 2.286 32.22 2.411 32.691 2.411 c
-33.175 2.411 l
-33.175 2.837 l
-33.175 3.072 33.121 3.238 33.013 3.337 c
-32.903 3.444 32.741 3.499 32.529 3.499 c
-32.33 3.499 32.169 3.44 32.043 3.323 c
-31.926 3.205 31.868 3.057 31.868 2.882 c
-31.22 2.882 l
-31.22 3.076 31.28 3.267 31.397 3.454 c
-31.522 3.639 31.683 3.786 31.882 3.896 c
-32.088 4.002 32.315 4.057 32.573 4.057 c
-32.974 4.057 33.279 3.955 33.484 3.749 c
-33.697 3.543 33.811 3.249 33.822 2.866 c
-33.822 0.853 l
-33.822 0.548 33.859 0.283 33.94 0.059 c
-33.94 0 l
-h
-32.396 0.515 m
-32.562 0.515 32.712 0.559 32.852 0.647 c
-32.999 0.736 33.106 0.846 33.175 0.985 c
-33.175 1.926 l
-32.808 1.926 l
-32.492 1.926 32.249 1.856 32.073 1.721 c
-31.897 1.592 31.808 1.405 31.808 1.162 c
-31.808 0.934 31.852 0.769 31.941 0.662 c
-32.029 0.563 32.18 0.515 32.396 0.515 c
-35.44 3.984 m
-35.454 3.543 l
-35.708 3.884 36.031 4.057 36.424 4.057 c
-37.13 4.057 37.486 3.587 37.497 2.646 c
-37.497 0 l
-36.851 0 l
-36.851 2.617 l
-36.851 2.929 36.795 3.15 36.689 3.279 c
-36.579 3.404 36.424 3.469 36.218 3.469 c
-36.06 3.469 35.914 3.414 35.777 3.308 c
-35.648 3.198 35.546 3.061 35.469 2.897 c
-35.469 0 l
-34.821 0 l
-34.821 3.984 l
-h
-38.335 2.176 m
-38.335 2.793 38.445 3.256 38.673 3.572 c
-38.897 3.896 39.232 4.057 39.673 4.057 c
-40.073 4.057 40.378 3.881 40.583 3.528 c
-40.628 3.984 l
-41.216 3.984 l
-41.216 -0.043 l
-41.216 -0.532 41.088 -0.911 40.834 -1.176 c
-40.577 -1.44 40.224 -1.572 39.775 -1.572 c
-39.577 -1.572 39.357 -1.521 39.114 -1.425 c
-38.868 -1.326 38.688 -1.205 38.57 -1.058 c
-38.835 -0.617 l
-39.099 -0.881 39.397 -1.014 39.731 -1.014 c
-40.267 -1.014 40.543 -0.72 40.554 -0.132 c
-40.554 0.397 l
-40.348 0.081 40.047 -0.073 39.658 -0.073 c
-39.247 -0.073 38.923 0.077 38.688 0.383 c
-38.46 0.695 38.343 1.147 38.335 1.735 c
-h
-38.996 1.794 m
-38.996 1.353 39.059 1.022 39.187 0.809 c
-39.313 0.603 39.529 0.5 39.834 0.5 c
-40.157 0.5 40.396 0.665 40.554 1 c
-40.554 2.984 l
-40.385 3.308 40.147 3.469 39.834 3.469 c
-39.54 3.469 39.324 3.367 39.187 3.161 c
-39.059 2.955 38.996 2.631 38.996 2.191 c
-h
-43.597 -0.073 m
-43.097 -0.073 42.715 0.074 42.451 0.368 c
-42.186 0.662 42.054 1.095 42.054 1.676 c
-42.054 2.147 l
-42.054 2.741 42.179 3.209 42.436 3.543 c
-42.7 3.884 43.06 4.057 43.523 4.057 c
-43.983 4.057 44.325 3.903 44.552 3.602 c
-44.788 3.308 44.909 2.845 44.92 2.22 c
-44.92 1.794 l
-42.7 1.794 l
-42.7 1.706 l
-42.7 1.272 42.777 0.96 42.935 0.765 c
-43.101 0.578 43.332 0.485 43.627 0.485 c
-43.822 0.485 43.994 0.518 44.141 0.588 c
-44.288 0.665 44.424 0.783 44.552 0.941 c
-44.891 0.53 l
-44.604 0.125 44.174 -0.073 43.597 -0.073 c
-43.523 3.499 m
-43.248 3.499 43.046 3.404 42.921 3.219 c
-42.792 3.032 42.719 2.741 42.7 2.352 c
-44.273 2.352 l
-44.273 2.44 l
-44.251 2.822 44.186 3.091 44.067 3.249 c
-43.95 3.414 43.766 3.499 43.523 3.499 c
-47.639 1.015 m
-47.639 1.162 47.584 1.283 47.478 1.382 c
-47.367 1.478 47.162 1.596 46.86 1.735 c
-46.515 1.882 46.272 2.003 46.125 2.103 c
-45.979 2.209 45.869 2.326 45.802 2.455 c
-45.732 2.58 45.699 2.739 45.699 2.926 c
-45.699 3.249 45.817 3.517 46.052 3.734 c
-46.287 3.947 46.588 4.057 46.964 4.057 c
-47.346 4.057 47.654 3.944 47.889 3.72 c
-48.124 3.491 48.242 3.205 48.242 2.852 c
-47.595 2.852 l
-47.595 3.028 47.536 3.179 47.419 3.308 c
-47.301 3.433 47.147 3.499 46.964 3.499 c
-46.765 3.499 46.615 3.444 46.507 3.337 c
-46.397 3.238 46.346 3.105 46.346 2.94 c
-46.346 2.812 46.382 2.705 46.463 2.617 c
-46.54 2.536 46.732 2.433 47.037 2.309 c
-47.515 2.12 47.845 1.933 48.022 1.75 c
-48.198 1.573 48.286 1.345 48.286 1.073 c
-48.286 0.721 48.161 0.441 47.918 0.235 c
-47.683 0.03 47.367 -0.073 46.978 -0.073 c
-46.555 -0.073 46.218 0.044 45.964 0.279 c
-45.707 0.522 45.582 0.827 45.582 1.191 c
-46.228 1.191 l
-46.235 0.963 46.305 0.786 46.434 0.662 c
-46.559 0.545 46.743 0.485 46.978 0.485 c
-47.191 0.485 47.353 0.533 47.463 0.632 c
-47.581 0.728 47.639 0.857 47.639 1.015 c
-51.55 0 -0.647 3.984 re
-51.593 5.027 m
-51.593 4.917 51.564 4.825 51.505 4.748 c
-51.446 4.678 51.351 4.645 51.226 4.645 c
-51.108 4.645 51.013 4.678 50.947 4.748 c
-50.887 4.825 50.858 4.917 50.858 5.027 c
-50.858 5.145 50.887 5.237 50.947 5.307 c
-51.013 5.384 51.108 5.424 51.226 5.424 c
-51.351 5.424 51.446 5.384 51.505 5.307 c
-51.564 5.226 51.593 5.134 51.593 5.027 c
-53.181 3.984 m
-53.196 3.543 l
-53.449 3.884 53.773 4.057 54.166 4.057 c
-54.871 4.057 55.228 3.587 55.239 2.646 c
-55.239 0 l
-54.592 0 l
-54.592 2.617 l
-54.592 2.929 54.537 3.15 54.43 3.279 c
-54.32 3.404 54.166 3.469 53.96 3.469 c
-53.802 3.469 53.655 3.414 53.519 3.308 c
-53.391 3.198 53.287 3.061 53.21 2.897 c
-53.21 0 l
-52.564 0 l
-52.564 3.984 l
-h
-f
-Q
-q 1 0 0 1 372.1404 306.1949 cm
-0 0 m
-0.353 2.234 l
-1.352 2.234 l
-0.529 -1.75 l
--0.339 -1.75 l
--0.897 0.559 l
--1.455 -1.75 l
--2.323 -1.75 l
--3.146 2.234 l
--2.147 2.234 l
--1.794 0 l
--1.264 2.234 l
--0.53 2.234 l
-h
-1.749 0.367 m
-1.749 0.974 1.888 1.448 2.175 1.793 c
-2.458 2.135 2.851 2.308 3.351 2.308 c
-3.858 2.308 4.255 2.135 4.542 1.793 c
-4.825 1.448 4.968 0.974 4.968 0.367 c
-4.968 0.103 l
-4.968 -0.497 4.825 -0.967 4.542 -1.309 c
-4.255 -1.654 3.858 -1.823 3.351 -1.823 c
-2.84 -1.823 2.443 -1.654 2.16 -1.309 c
-1.885 -0.967 1.749 -0.493 1.749 0.118 c
-h
-2.792 0.103 m
-2.792 -0.603 2.977 -0.956 3.351 -0.956 c
-3.704 -0.956 3.895 -0.661 3.925 -0.073 c
-3.925 0.367 l
-3.925 0.727 3.873 0.999 3.777 1.176 c
-3.678 1.352 3.534 1.44 3.351 1.44 c
-3.175 1.44 3.035 1.352 2.94 1.176 c
-2.84 0.999 2.792 0.727 2.792 0.367 c
-h
-7.569 1.22 m
-7.231 1.249 l
-6.945 1.249 6.754 1.124 6.659 0.881 c
-6.659 -1.75 l
-5.614 -1.75 l
-5.614 2.234 l
-6.585 2.234 l
-6.614 1.793 l
-6.78 2.135 7.011 2.308 7.305 2.308 c
-7.422 2.308 7.515 2.285 7.584 2.248 c
-h
-9.437 -0.221 m
-9.157 -0.53 l
-9.157 -1.75 l
-8.114 -1.75 l
-8.114 3.895 l
-9.157 3.895 l
-9.157 0.852 l
-9.275 1.043 l
-9.995 2.234 l
-11.245 2.234 l
-10.083 0.588 l
-11.347 -1.75 l
-10.156 -1.75 l
-h
-12.803 -1.75 -1.043 3.984 re
-11.715 3.263 m
-11.715 3.418 11.763 3.546 11.862 3.645 c
-11.968 3.752 12.104 3.807 12.273 3.807 c
-12.45 3.807 12.586 3.752 12.685 3.645 c
-12.791 3.546 12.847 3.418 12.847 3.263 c
-12.847 3.094 12.791 2.958 12.685 2.851 c
-12.586 2.753 12.45 2.705 12.273 2.705 c
-12.104 2.705 11.968 2.753 11.862 2.851 c
-11.763 2.958 11.715 3.094 11.715 3.263 c
-14.566 2.234 m
-14.596 1.837 l
-14.831 2.15 15.133 2.308 15.507 2.308 c
-16.191 2.308 16.544 1.826 16.565 0.867 c
-16.565 -1.75 l
-15.522 -1.75 l
-15.522 0.794 l
-15.522 1.018 15.486 1.18 15.419 1.278 c
-15.349 1.374 15.232 1.425 15.066 1.425 c
-14.879 1.425 14.732 1.33 14.625 1.147 c
-14.625 -1.75 l
-13.581 -1.75 l
-13.581 2.234 l
-h
-17.183 0.367 m
-17.183 1.014 17.3 1.5 17.535 1.822 c
-17.771 2.146 18.102 2.308 18.535 2.308 c
-18.888 2.308 19.16 2.165 19.359 1.882 c
-19.403 2.234 l
-20.343 2.234 l
-20.343 -1.75 l
-20.343 -2.257 20.2 -2.646 19.917 -2.911 c
-19.63 -3.182 19.226 -3.322 18.697 -3.322 c
-18.469 -3.322 18.233 -3.278 17.992 -3.19 c
-17.756 -3.102 17.58 -2.988 17.462 -2.851 c
-17.815 -2.132 l
-17.911 -2.238 18.039 -2.323 18.197 -2.381 c
-18.351 -2.448 18.499 -2.484 18.638 -2.484 c
-18.873 -2.484 19.039 -2.425 19.137 -2.308 c
-19.245 -2.198 19.299 -2.022 19.299 -1.779 c
-19.299 -1.426 l
-19.101 -1.69 18.844 -1.823 18.52 -1.823 c
-18.098 -1.823 17.771 -1.661 17.535 -1.338 c
-17.308 -1.008 17.19 -0.537 17.183 0.073 c
-h
-18.227 0.103 m
-18.227 -0.272 18.274 -0.54 18.374 -0.706 c
-18.469 -0.875 18.623 -0.956 18.829 -0.956 c
-19.042 -0.956 19.201 -0.879 19.299 -0.721 c
-19.299 1.176 l
-19.189 1.341 19.035 1.425 18.829 1.425 c
-18.623 1.425 18.469 1.341 18.374 1.176 c
-18.274 1.007 18.227 0.738 18.227 0.367 c
-h
-22.695 0.367 m
-22.695 1.014 22.802 1.5 23.018 1.822 c
-23.243 2.146 23.566 2.308 23.989 2.308 c
-24.301 2.308 24.554 2.175 24.753 1.911 c
-24.753 3.895 l
-25.811 3.895 l
-25.811 -1.75 l
-24.856 -1.75 l
-24.812 -1.338 l
-24.595 -1.661 24.319 -1.823 23.989 -1.823 c
-23.577 -1.823 23.257 -1.669 23.033 -1.353 c
-22.817 -1.029 22.702 -0.559 22.695 0.058 c
-h
-23.739 0.103 m
-23.739 -0.291 23.775 -0.566 23.856 -0.721 c
-23.945 -0.879 24.091 -0.956 24.297 -0.956 c
-24.503 -0.956 24.654 -0.864 24.753 -0.676 c
-24.753 1.132 l
-24.654 1.326 24.503 1.425 24.297 1.425 c
-24.099 1.425 23.959 1.344 23.871 1.19 c
-23.783 1.043 23.739 0.771 23.739 0.382 c
-h
-27.663 -1.75 -1.044 3.984 re
-26.576 3.263 m
-26.576 3.418 26.623 3.546 26.723 3.645 c
-26.829 3.752 26.965 3.807 27.134 3.807 c
-27.311 3.807 27.446 3.752 27.546 3.645 c
-27.652 3.546 27.708 3.418 27.708 3.263 c
-27.708 3.094 27.652 2.958 27.546 2.851 c
-27.446 2.753 27.311 2.705 27.134 2.705 c
-26.965 2.705 26.829 2.753 26.723 2.851 c
-26.623 2.958 26.576 3.094 26.576 3.263 c
-30.426 1.22 m
-30.089 1.249 l
-29.802 1.249 29.611 1.124 29.516 0.881 c
-29.516 -1.75 l
-28.471 -1.75 l
-28.471 2.234 l
-29.441 2.234 l
-29.471 1.793 l
-29.637 2.135 29.868 2.308 30.162 2.308 c
-30.28 2.308 30.372 2.285 30.441 2.248 c
-h
-32.499 -1.823 m
-31.97 -1.823 31.551 -1.669 31.249 -1.353 c
-30.956 -1.029 30.809 -0.57 30.809 0.029 c
-30.809 0.338 l
-30.809 0.962 30.945 1.448 31.22 1.793 c
-31.492 2.135 31.885 2.308 32.396 2.308 c
-32.896 2.308 33.267 2.146 33.514 1.822 c
-33.767 1.5 33.9 1.022 33.91 0.397 c
-33.91 -0.103 l
-31.837 -0.103 l
-31.856 -0.397 31.918 -0.614 32.028 -0.75 c
-32.147 -0.89 32.327 -0.956 32.573 -0.956 c
-32.915 -0.956 33.204 -0.838 33.44 -0.603 c
-33.852 -1.235 l
-33.723 -1.411 33.535 -1.555 33.293 -1.661 c
-33.047 -1.768 32.782 -1.823 32.499 -1.823 c
-31.853 0.617 m
-32.882 0.617 l
-32.882 0.72 l
-32.882 0.955 32.841 1.132 32.764 1.249 c
-32.694 1.374 32.566 1.44 32.382 1.44 c
-32.205 1.44 32.073 1.371 31.985 1.234 c
-31.904 1.106 31.86 0.9 31.853 0.617 c
-35.939 -0.956 m
-36.233 -0.956 36.383 -0.761 36.394 -0.368 c
-37.364 -0.368 l
-37.364 -0.802 37.233 -1.154 36.967 -1.426 c
-36.703 -1.69 36.365 -1.823 35.953 -1.823 c
-35.442 -1.823 35.049 -1.669 34.777 -1.353 c
-34.513 -1.029 34.374 -0.559 34.366 0.058 c
-34.366 0.382 l
-34.366 1.007 34.499 1.484 34.763 1.808 c
-35.035 2.138 35.432 2.308 35.953 2.308 c
-36.383 2.308 36.726 2.167 36.982 1.896 c
-37.236 1.62 37.364 1.238 37.364 0.75 c
-36.394 0.75 l
-36.394 0.962 36.354 1.132 36.277 1.249 c
-36.207 1.374 36.09 1.44 35.924 1.44 c
-35.748 1.44 35.619 1.374 35.542 1.249 c
-35.461 1.12 35.417 0.871 35.409 0.5 c
-35.409 0.088 l
-35.409 -0.235 35.424 -0.463 35.454 -0.588 c
-35.49 -0.717 35.546 -0.809 35.615 -0.867 c
-35.693 -0.927 35.799 -0.956 35.939 -0.956 c
-39.172 3.204 m
-39.172 2.234 l
-39.702 2.234 l
-39.702 1.44 l
-39.172 1.44 l
-39.172 -0.53 l
-39.172 -0.688 39.191 -0.794 39.232 -0.852 c
-39.28 -0.912 39.363 -0.941 39.481 -0.941 c
-39.588 -0.941 39.673 -0.933 39.731 -0.912 c
-39.731 -1.72 l
-39.554 -1.786 39.363 -1.823 39.158 -1.823 c
-38.482 -1.823 38.137 -1.437 38.129 -0.661 c
-38.129 1.44 l
-37.673 1.44 l
-37.673 2.234 l
-38.129 2.234 l
-38.129 3.204 l
-h
-40.055 0.367 m
-40.055 0.974 40.194 1.448 40.481 1.793 c
-40.764 2.135 41.157 2.308 41.657 2.308 c
-42.164 2.308 42.561 2.135 42.847 1.793 c
-43.13 1.448 43.274 0.974 43.274 0.367 c
-43.274 0.103 l
-43.274 -0.497 43.13 -0.967 42.847 -1.309 c
-42.561 -1.654 42.164 -1.823 41.657 -1.823 c
-41.146 -1.823 40.749 -1.654 40.466 -1.309 c
-40.19 -0.967 40.055 -0.493 40.055 0.118 c
-h
-41.098 0.103 m
-41.098 -0.603 41.282 -0.956 41.657 -0.956 c
-42.01 -0.956 42.201 -0.661 42.23 -0.073 c
-42.23 0.367 l
-42.23 0.727 42.179 0.999 42.083 1.176 c
-41.984 1.352 41.84 1.44 41.657 1.44 c
-41.48 1.44 41.341 1.352 41.245 1.176 c
-41.146 0.999 41.098 0.727 41.098 0.367 c
-h
-45.875 1.22 m
-45.537 1.249 l
-45.251 1.249 45.06 1.124 44.964 0.881 c
-44.964 -1.75 l
-43.92 -1.75 l
-43.92 2.234 l
-44.89 2.234 l
-44.92 1.793 l
-45.085 2.135 45.317 2.308 45.611 2.308 c
-45.728 2.308 45.821 2.285 45.89 2.248 c
-h
-47.772 -0.015 m
-48.3 2.234 l
-49.403 2.234 l
-48.095 -2.352 l
-47.897 -3.017 47.529 -3.352 46.993 -3.352 c
-46.864 -3.352 46.721 -3.329 46.567 -3.293 c
-46.567 -2.469 l
-46.684 -2.484 l
-46.849 -2.484 46.97 -2.448 47.051 -2.381 c
-47.128 -2.323 47.191 -2.213 47.242 -2.058 c
-47.315 -1.793 l
-46.17 2.234 l
-47.286 2.234 l
-h
-f
-Q
-q 1 0 0 1 422.1464 304.7979 cm
-0 0 m
-0 0.118 0.033 0.214 0.103 0.294 c
-0.169 0.372 0.272 0.412 0.411 0.412 c
-0.559 0.412 0.665 0.372 0.735 0.294 c
-0.812 0.214 0.852 0.118 0.852 0 c
-0.852 -0.11 0.812 -0.201 0.735 -0.278 c
-0.665 -0.357 0.559 -0.396 0.411 -0.396 c
-0.272 -0.396 0.169 -0.357 0.103 -0.278 c
-0.033 -0.201 0 -0.11 0 0 c
-6.732 4.425 m
-5.321 4.425 l
-5.321 -0.353 l
-4.659 -0.353 l
-4.659 4.425 l
-3.248 4.425 l
-3.248 4.998 l
-6.732 4.998 l
-h
-8.085 3.219 m
-8.338 3.543 8.658 3.705 9.04 3.705 c
-9.745 3.705 10.102 3.234 10.113 2.294 c
-10.113 -0.353 l
-9.466 -0.353 l
-9.466 2.264 l
-9.466 2.577 9.411 2.797 9.304 2.926 c
-9.194 3.051 9.04 3.117 8.834 3.117 c
-8.676 3.117 8.529 3.061 8.393 2.955 c
-8.264 2.845 8.162 2.708 8.085 2.544 c
-8.085 -0.353 l
-7.437 -0.353 l
-7.437 5.292 l
-8.085 5.292 l
-h
-11.774 -0.353 -0.647 3.984 re
-11.818 4.675 m
-11.818 4.564 11.788 4.472 11.73 4.395 c
-11.671 4.326 11.576 4.293 11.451 4.293 c
-11.333 4.293 11.237 4.326 11.171 4.395 c
-11.112 4.472 11.083 4.564 11.083 4.675 c
-11.083 4.792 11.112 4.884 11.171 4.954 c
-11.237 5.031 11.333 5.072 11.451 5.072 c
-11.576 5.072 11.671 5.031 11.73 4.954 c
-11.788 4.873 11.818 4.781 11.818 4.675 c
-14.728 0.662 m
-14.728 0.809 14.674 0.93 14.566 1.029 c
-14.456 1.125 14.25 1.243 13.949 1.382 c
-13.604 1.529 13.361 1.65 13.215 1.75 c
-13.067 1.856 12.957 1.974 12.891 2.103 c
-12.821 2.228 12.788 2.386 12.788 2.573 c
-12.788 2.897 12.906 3.165 13.141 3.381 c
-13.376 3.595 13.677 3.705 14.052 3.705 c
-14.435 3.705 14.743 3.591 14.978 3.367 c
-15.214 3.138 15.331 2.852 15.331 2.5 c
-14.684 2.5 l
-14.684 2.675 14.626 2.826 14.508 2.955 c
-14.39 3.08 14.236 3.146 14.052 3.146 c
-13.853 3.146 13.703 3.091 13.596 2.984 c
-13.486 2.885 13.435 2.753 13.435 2.587 c
-13.435 2.459 13.471 2.352 13.552 2.264 c
-13.629 2.183 13.82 2.08 14.126 1.956 c
-14.603 1.768 14.934 1.58 15.11 1.397 c
-15.287 1.22 15.375 0.992 15.375 0.721 c
-15.375 0.368 15.25 0.088 15.008 -0.118 c
-14.772 -0.323 14.456 -0.426 14.067 -0.426 c
-13.644 -0.426 13.306 -0.309 13.053 -0.073 c
-12.795 0.169 12.671 0.474 12.671 0.838 c
-13.317 0.838 l
-13.325 0.611 13.394 0.434 13.523 0.31 c
-13.648 0.192 13.832 0.133 14.067 0.133 c
-14.28 0.133 14.441 0.181 14.552 0.279 c
-14.67 0.375 14.728 0.504 14.728 0.662 c
-17.801 1.823 m
-17.801 2.4 17.936 2.856 18.212 3.19 c
-18.495 3.532 18.867 3.705 19.329 3.705 c
-19.788 3.705 20.156 3.535 20.432 3.205 c
-20.714 2.882 20.862 2.433 20.872 1.867 c
-20.872 1.441 l
-20.872 0.871 20.729 0.416 20.446 0.074 c
-20.17 -0.261 19.803 -0.426 19.343 -0.426 c
-18.881 -0.426 18.51 -0.264 18.227 0.059 c
-17.951 0.389 17.808 0.831 17.801 1.382 c
-h
-18.447 1.441 m
-18.447 1.037 18.524 0.721 18.682 0.485 c
-18.848 0.25 19.068 0.133 19.343 0.133 c
-19.91 0.133 20.203 0.545 20.226 1.368 c
-20.226 1.823 l
-20.226 2.224 20.141 2.544 19.976 2.779 c
-19.818 3.021 19.601 3.146 19.329 3.146 c
-19.065 3.146 18.848 3.021 18.682 2.779 c
-18.524 2.544 18.447 2.224 18.447 1.823 c
-h
-24.591 1.441 m
-24.591 0.813 24.474 0.342 24.239 0.03 c
-24.01 -0.276 23.694 -0.426 23.283 -0.426 c
-22.879 -0.426 22.57 -0.276 22.358 0.03 c
-22.358 -1.881 l
-21.71 -1.881 l
-21.71 3.631 l
-22.298 3.631 l
-22.343 3.19 l
-22.555 3.532 22.865 3.705 23.268 3.705 c
-23.709 3.705 24.037 3.55 24.253 3.249 c
-24.467 2.944 24.581 2.488 24.591 1.881 c
-h
-23.945 1.823 m
-23.945 2.264 23.875 2.587 23.739 2.793 c
-23.599 3.007 23.378 3.117 23.077 3.117 c
-22.761 3.117 22.522 2.962 22.358 2.661 c
-22.358 0.588 l
-22.522 0.283 22.761 0.133 23.077 0.133 c
-23.372 0.133 23.584 0.235 23.724 0.441 c
-23.86 0.655 23.933 0.985 23.945 1.426 c
-h
-26.855 -0.426 m
-26.356 -0.426 25.973 -0.278 25.709 0.015 c
-25.444 0.31 25.312 0.742 25.312 1.324 c
-25.312 1.794 l
-25.312 2.389 25.437 2.856 25.693 3.19 c
-25.959 3.532 26.318 3.705 26.782 3.705 c
-27.241 3.705 27.582 3.55 27.81 3.249 c
-28.045 2.955 28.167 2.492 28.178 1.867 c
-28.178 1.441 l
-25.959 1.441 l
-25.959 1.353 l
-25.959 0.919 26.036 0.607 26.194 0.412 c
-26.359 0.225 26.591 0.133 26.884 0.133 c
-27.079 0.133 27.252 0.166 27.399 0.235 c
-27.546 0.312 27.682 0.43 27.81 0.588 c
-28.149 0.177 l
-27.862 -0.228 27.432 -0.426 26.855 -0.426 c
-26.782 3.146 m
-26.506 3.146 26.304 3.051 26.179 2.866 c
-26.05 2.679 25.977 2.389 25.959 1.999 c
-27.532 1.999 l
-27.532 2.088 l
-27.509 2.469 27.443 2.738 27.326 2.897 c
-27.208 3.061 27.024 3.146 26.782 3.146 c
-30.603 3.014 m
-30.515 3.032 30.416 3.043 30.31 3.043 c
-29.975 3.043 29.74 2.859 29.604 2.5 c
-29.604 -0.353 l
-28.957 -0.353 l
-28.957 3.631 l
-29.589 3.631 l
-29.604 3.219 l
-29.78 3.543 30.023 3.705 30.339 3.705 c
-30.445 3.705 30.534 3.682 30.603 3.645 c
-h
-33.146 -0.353 m
-33.106 -0.264 33.08 -0.118 33.073 0.088 c
-32.837 -0.257 32.544 -0.426 32.191 -0.426 c
-31.827 -0.426 31.544 -0.33 31.338 -0.132 c
-31.139 0.074 31.044 0.36 31.044 0.736 c
-31.044 1.135 31.18 1.455 31.456 1.691 c
-31.727 1.933 32.103 2.058 32.573 2.058 c
-33.058 2.058 l
-33.058 2.485 l
-33.058 2.72 33.003 2.885 32.897 2.984 c
-32.786 3.091 32.625 3.146 32.411 3.146 c
-32.213 3.146 32.051 3.088 31.926 2.97 c
-31.808 2.852 31.75 2.705 31.75 2.529 c
-31.103 2.529 l
-31.103 2.723 31.162 2.914 31.28 3.102 c
-31.405 3.286 31.566 3.433 31.765 3.543 c
-31.97 3.649 32.198 3.705 32.456 3.705 c
-32.856 3.705 33.161 3.602 33.367 3.396 c
-33.58 3.19 33.694 2.897 33.705 2.514 c
-33.705 0.5 l
-33.705 0.195 33.741 -0.07 33.822 -0.293 c
-33.822 -0.353 l
-h
-32.279 0.162 m
-32.444 0.162 32.595 0.206 32.735 0.294 c
-32.882 0.383 32.988 0.493 33.058 0.632 c
-33.058 1.573 l
-32.691 1.573 l
-32.375 1.573 32.132 1.503 31.956 1.368 c
-31.779 1.239 31.691 1.052 31.691 0.809 c
-31.691 0.581 31.735 0.416 31.823 0.31 c
-31.912 0.21 32.062 0.162 32.279 0.162 c
-35.557 4.586 m
-35.557 3.631 l
-36.159 3.631 l
-36.159 3.102 l
-35.557 3.102 l
-35.557 0.632 l
-35.557 0.474 35.579 0.357 35.63 0.279 c
-35.689 0.198 35.777 0.162 35.895 0.162 c
-35.983 0.162 36.072 0.177 36.159 0.206 c
-36.159 -0.353 l
-36.012 -0.4 35.858 -0.426 35.704 -0.426 c
-35.447 -0.426 35.252 -0.334 35.116 -0.147 c
-34.977 0.037 34.91 0.298 34.91 0.632 c
-34.91 3.102 l
-34.308 3.102 l
-34.308 3.631 l
-34.91 3.631 l
-34.91 4.586 l
-h
-37.63 -0.353 -0.647 3.984 re
-37.674 4.675 m
-37.674 4.564 37.645 4.472 37.585 4.395 c
-37.526 4.326 37.431 4.293 37.306 4.293 c
-37.188 4.293 37.093 4.326 37.027 4.395 c
-36.968 4.472 36.939 4.564 36.939 4.675 c
-36.939 4.792 36.968 4.884 37.027 4.954 c
-37.093 5.031 37.188 5.072 37.306 5.072 c
-37.431 5.072 37.526 5.031 37.585 4.954 c
-37.645 4.873 37.674 4.781 37.674 4.675 c
-38.511 1.823 m
-38.511 2.4 38.647 2.856 38.923 3.19 c
-39.206 3.532 39.577 3.705 40.04 3.705 c
-40.5 3.705 40.867 3.535 41.142 3.205 c
-41.425 2.882 41.572 2.433 41.583 1.867 c
-41.583 1.441 l
-41.583 0.871 41.44 0.416 41.157 0.074 c
-40.882 -0.261 40.514 -0.426 40.055 -0.426 c
-39.592 -0.426 39.22 -0.264 38.937 0.059 c
-38.663 0.389 38.519 0.831 38.511 1.382 c
-h
-39.158 1.441 m
-39.158 1.037 39.235 0.721 39.393 0.485 c
-39.559 0.25 39.779 0.133 40.055 0.133 c
-40.621 0.133 40.915 0.545 40.937 1.368 c
-40.937 1.823 l
-40.937 2.224 40.853 2.544 40.687 2.779 c
-40.529 3.021 40.312 3.146 40.04 3.146 c
-39.775 3.146 39.559 3.021 39.393 2.779 c
-39.235 2.544 39.158 2.224 39.158 1.823 c
-h
-43.039 3.631 m
-43.054 3.19 l
-43.307 3.532 43.631 3.705 44.024 3.705 c
-44.729 3.705 45.086 3.234 45.096 2.294 c
-45.096 -0.353 l
-44.45 -0.353 l
-44.45 2.264 l
-44.45 2.577 44.394 2.797 44.288 2.926 c
-44.178 3.051 44.024 3.117 43.818 3.117 c
-43.66 3.117 43.513 3.061 43.377 2.955 c
-43.249 2.845 43.145 2.708 43.068 2.544 c
-43.068 -0.353 l
-42.422 -0.353 l
-42.422 3.631 l
-h
-f
-Q
-470.639 304.445 -0.647 3.984 re
-470.683 309.472 m
-470.683 309.362 470.653 309.27 470.594 309.193 c
-470.535 309.123 470.44 309.09 470.315 309.09 c
-470.197 309.09 470.102 309.123 470.036 309.193 c
-469.977 309.27 469.947 309.362 469.947 309.472 c
-469.947 309.59 469.977 309.682 470.036 309.752 c
-470.102 309.829 470.197 309.869 470.315 309.869 c
-470.44 309.869 470.535 309.829 470.594 309.752 c
-470.653 309.671 470.683 309.579 470.683 309.472 c
-473.593 305.46 m
-473.593 305.607 473.538 305.728 473.432 305.827 c
-473.321 305.923 473.116 306.041 472.814 306.18 c
-472.468 306.327 472.226 306.448 472.079 306.548 c
-471.932 306.654 471.822 306.772 471.755 306.9 c
-471.686 307.026 471.653 307.184 471.653 307.371 c
-471.653 307.694 471.77 307.963 472.006 308.179 c
-472.241 308.392 472.542 308.503 472.917 308.503 c
-473.299 308.503 473.608 308.389 473.843 308.165 c
-474.078 307.936 474.196 307.65 474.196 307.297 c
-473.548 307.297 l
-473.548 307.473 473.49 307.624 473.372 307.753 c
-473.255 307.878 473.101 307.944 472.917 307.944 c
-472.719 307.944 472.568 307.889 472.461 307.782 c
-472.351 307.683 472.299 307.55 472.299 307.385 c
-472.299 307.257 472.336 307.15 472.417 307.062 c
-472.494 306.981 472.686 306.878 472.991 306.754 c
-473.468 306.565 473.799 306.378 473.975 306.195 c
-474.151 306.018 474.24 305.79 474.24 305.518 c
-474.24 305.166 474.115 304.886 473.872 304.68 c
-473.637 304.475 473.321 304.372 472.931 304.372 c
-472.509 304.372 472.171 304.489 471.917 304.724 c
-471.66 304.967 471.535 305.272 471.535 305.636 c
-472.182 305.636 l
-472.189 305.408 472.259 305.232 472.388 305.107 c
-472.513 304.99 472.696 304.931 472.931 304.931 c
-473.145 304.931 473.307 304.978 473.417 305.077 c
-473.534 305.173 473.593 305.302 473.593 305.46 c
-f
-q 1 0 0 1 478.6491 304.8129 cm
-0 0 m
--0.216 -0.294 -0.507 -0.441 -0.867 -0.441 c
--1.23 -0.441 -1.51 -0.32 -1.705 -0.073 c
--1.892 0.18 -1.984 0.548 -1.984 1.029 c
--1.984 3.616 l
--0.941 3.616 l
--0.941 1.014 l
--0.941 0.621 -0.816 0.426 -0.558 0.426 c
--0.323 0.426 -0.154 0.53 -0.043 0.735 c
--0.043 3.616 l
-1 3.616 l
-1 -0.368 l
-0.03 -0.368 l
-h
-2.705 3.616 m
-2.735 3.219 l
-2.97 3.532 3.271 3.69 3.645 3.69 c
-4.329 3.69 4.682 3.208 4.704 2.249 c
-4.704 -0.368 l
-3.66 -0.368 l
-3.66 2.176 l
-3.66 2.4 3.624 2.562 3.558 2.66 c
-3.487 2.756 3.37 2.807 3.205 2.807 c
-3.017 2.807 2.87 2.712 2.764 2.529 c
-2.764 -0.368 l
-1.72 -0.368 l
-1.72 3.616 l
-h
-7.408 2.602 m
-7.071 2.631 l
-6.784 2.631 6.593 2.506 6.498 2.263 c
-6.498 -0.368 l
-5.453 -0.368 l
-5.453 3.616 l
-6.423 3.616 l
-6.453 3.175 l
-6.619 3.516 6.85 3.69 7.144 3.69 c
-7.262 3.69 7.354 3.667 7.423 3.63 c
-h
-9.481 -0.441 m
-8.952 -0.441 8.533 -0.287 8.231 0.029 c
-7.938 0.353 7.791 0.812 7.791 1.411 c
-7.791 1.72 l
-7.791 2.344 7.927 2.83 8.202 3.175 c
-8.474 3.516 8.867 3.69 9.378 3.69 c
-9.878 3.69 10.249 3.528 10.496 3.204 c
-10.749 2.881 10.882 2.404 10.892 1.779 c
-10.892 1.278 l
-8.819 1.278 l
-8.838 0.985 8.9 0.768 9.01 0.632 c
-9.129 0.492 9.309 0.426 9.555 0.426 c
-9.897 0.426 10.186 0.544 10.422 0.779 c
-10.834 0.147 l
-10.705 -0.029 10.517 -0.173 10.275 -0.279 c
-10.029 -0.386 9.764 -0.441 9.481 -0.441 c
-8.834 1.999 m
-9.864 1.999 l
-9.864 2.102 l
-9.864 2.337 9.823 2.514 9.746 2.631 c
-9.676 2.756 9.548 2.822 9.364 2.822 c
-9.187 2.822 9.055 2.753 8.967 2.616 c
-8.886 2.488 8.842 2.282 8.834 1.999 c
-12.921 0.426 m
-13.215 0.426 13.365 0.621 13.376 1.014 c
-14.346 1.014 l
-14.346 0.58 14.215 0.228 13.949 -0.044 c
-13.685 -0.309 13.347 -0.441 12.935 -0.441 c
-12.424 -0.441 12.031 -0.287 11.759 0.029 c
-11.495 0.353 11.356 0.823 11.348 1.44 c
-11.348 1.764 l
-11.348 2.389 11.481 2.866 11.745 3.19 c
-12.017 3.52 12.414 3.69 12.935 3.69 c
-13.365 3.69 13.708 3.549 13.964 3.278 c
-14.218 3.002 14.346 2.62 14.346 2.132 c
-13.376 2.132 l
-13.376 2.344 13.336 2.514 13.259 2.631 c
-13.189 2.756 13.072 2.822 12.906 2.822 c
-12.73 2.822 12.601 2.756 12.524 2.631 c
-12.443 2.502 12.399 2.253 12.391 1.881 c
-12.391 1.47 l
-12.391 1.147 12.406 0.919 12.436 0.794 c
-12.472 0.665 12.528 0.573 12.597 0.515 c
-12.675 0.455 12.781 0.426 12.921 0.426 c
-14.832 1.749 m
-14.832 2.356 14.971 2.83 15.258 3.175 c
-15.541 3.516 15.934 3.69 16.434 3.69 c
-16.941 3.69 17.338 3.516 17.625 3.175 c
-17.908 2.83 18.051 2.356 18.051 1.749 c
-18.051 1.484 l
-18.051 0.885 17.908 0.415 17.625 0.073 c
-17.338 -0.272 16.941 -0.441 16.434 -0.441 c
-15.923 -0.441 15.526 -0.272 15.244 0.073 c
-14.968 0.415 14.832 0.889 14.832 1.5 c
-h
-15.875 1.484 m
-15.875 0.779 16.059 0.426 16.434 0.426 c
-16.787 0.426 16.978 0.721 17.007 1.309 c
-17.007 1.749 l
-17.007 2.109 16.956 2.381 16.86 2.558 c
-16.761 2.734 16.617 2.822 16.434 2.822 c
-16.258 2.822 16.118 2.734 16.023 2.558 c
-15.923 2.381 15.875 2.109 15.875 1.749 c
-h
-19.947 1.103 m
-20.447 3.616 l
-21.534 3.616 l
-20.432 -0.368 l
-19.447 -0.368 l
-18.344 3.616 l
-19.433 3.616 l
-h
-23.578 -0.441 m
-23.048 -0.441 22.629 -0.287 22.328 0.029 c
-22.034 0.353 21.887 0.812 21.887 1.411 c
-21.887 1.72 l
-21.887 2.344 22.024 2.83 22.299 3.175 c
-22.571 3.516 22.964 3.69 23.475 3.69 c
-23.975 3.69 24.345 3.528 24.592 3.204 c
-24.846 2.881 24.978 2.404 24.989 1.779 c
-24.989 1.278 l
-22.916 1.278 l
-22.934 0.985 22.997 0.768 23.107 0.632 c
-23.225 0.492 23.405 0.426 23.651 0.426 c
-23.993 0.426 24.283 0.544 24.518 0.779 c
-24.93 0.147 l
-24.802 -0.029 24.614 -0.173 24.372 -0.279 c
-24.125 -0.386 23.861 -0.441 23.578 -0.441 c
-22.931 1.999 m
-23.96 1.999 l
-23.96 2.102 l
-23.96 2.337 23.919 2.514 23.842 2.631 c
-23.773 2.756 23.644 2.822 23.46 2.822 c
-23.283 2.822 23.152 2.753 23.063 2.616 c
-22.982 2.488 22.938 2.282 22.931 1.999 c
-27.532 2.602 m
-27.194 2.631 l
-26.907 2.631 26.716 2.506 26.62 2.263 c
-26.62 -0.368 l
-25.577 -0.368 l
-25.577 3.616 l
-26.547 3.616 l
-26.576 3.175 l
-26.741 3.516 26.973 3.69 27.267 3.69 c
-27.385 3.69 27.476 3.667 27.547 3.63 c
-h
-29.854 -0.368 m
-29.825 -0.309 29.795 -0.206 29.766 -0.058 c
-29.579 -0.316 29.328 -0.441 29.016 -0.441 c
-28.682 -0.441 28.403 -0.334 28.179 -0.118 c
-27.962 0.106 27.855 0.397 27.855 0.75 c
-27.855 1.161 27.987 1.477 28.252 1.706 c
-28.517 1.941 28.899 2.058 29.398 2.058 c
-29.722 2.058 l
-29.722 2.381 l
-29.722 2.558 29.685 2.679 29.619 2.749 c
-29.56 2.826 29.471 2.866 29.355 2.866 c
-29.097 2.866 28.972 2.712 28.972 2.411 c
-27.929 2.411 l
-27.929 2.782 28.064 3.087 28.34 3.322 c
-28.612 3.564 28.962 3.69 29.384 3.69 c
-29.825 3.69 30.163 3.572 30.398 3.337 c
-30.641 3.109 30.766 2.786 30.766 2.367 c
-30.766 0.5 l
-30.766 0.154 30.813 -0.114 30.913 -0.309 c
-30.913 -0.368 l
-h
-29.251 0.382 m
-29.358 0.382 29.45 0.401 29.531 0.441 c
-29.619 0.489 29.681 0.548 29.722 0.617 c
-29.722 1.44 l
-29.471 1.44 l
-29.296 1.44 29.153 1.382 29.045 1.264 c
-28.947 1.154 28.899 1.007 28.899 0.823 c
-28.899 0.53 29.016 0.382 29.251 0.382 c
-34.616 1.5 m
-34.616 0.852 34.514 0.368 34.308 0.044 c
-34.102 -0.279 33.779 -0.441 33.338 -0.441 c
-32.993 -0.441 32.713 -0.287 32.5 0.029 c
-32.471 -0.368 l
-31.515 -0.368 l
-31.515 5.277 l
-32.559 5.277 l
-32.559 3.293 l
-32.754 3.557 33.007 3.69 33.323 3.69 c
-33.764 3.69 34.088 3.528 34.294 3.204 c
-34.499 2.881 34.606 2.411 34.616 1.793 c
-h
-33.573 1.749 m
-33.573 2.168 33.533 2.448 33.456 2.587 c
-33.375 2.734 33.234 2.807 33.029 2.807 c
-32.812 2.807 32.654 2.708 32.559 2.514 c
-32.559 0.706 l
-32.647 0.518 32.808 0.426 33.043 0.426 c
-33.238 0.426 33.375 0.489 33.456 0.617 c
-33.533 0.742 33.573 1 33.573 1.382 c
-h
-36.336 -0.368 -1.043 5.644 re
-38.747 -0.441 m
-38.218 -0.441 37.799 -0.287 37.498 0.029 c
-37.203 0.353 37.057 0.812 37.057 1.411 c
-37.057 1.72 l
-37.057 2.344 37.193 2.83 37.468 3.175 c
-37.741 3.516 38.134 3.69 38.644 3.69 c
-39.144 3.69 39.515 3.528 39.761 3.204 c
-40.015 2.881 40.147 2.404 40.158 1.779 c
-40.158 1.278 l
-38.086 1.278 l
-38.104 0.985 38.167 0.768 38.277 0.632 c
-38.394 0.492 38.574 0.426 38.821 0.426 c
-39.162 0.426 39.453 0.544 39.688 0.779 c
-40.099 0.147 l
-39.971 -0.029 39.783 -0.173 39.541 -0.279 c
-39.295 -0.386 39.03 -0.441 38.747 -0.441 c
-38.1 1.999 m
-39.129 1.999 l
-39.129 2.102 l
-39.129 2.337 39.089 2.514 39.012 2.631 c
-38.942 2.756 38.813 2.822 38.63 2.822 c
-38.453 2.822 38.321 2.753 38.233 2.616 c
-38.152 2.488 38.107 2.282 38.1 1.999 c
-f
-Q
-q 1 0 0 1 519.5421 304.7979 cm
-0 0 m
-0 0.118 0.033 0.214 0.103 0.294 c
-0.169 0.372 0.272 0.412 0.412 0.412 c
-0.559 0.412 0.665 0.372 0.735 0.294 c
-0.812 0.214 0.852 0.118 0.852 0 c
-0.852 -0.11 0.812 -0.201 0.735 -0.278 c
-0.665 -0.357 0.559 -0.396 0.412 -0.396 c
-0.272 -0.396 0.169 -0.357 0.103 -0.278 c
-0.033 -0.201 0 -0.11 0 0 c
-f
-Q
-0.113 0.082 0.09 0 k
-287.665 298.837 234.667 -12.895 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 292.8568 292.0029 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.647 -0.243 -0.775 -0.367 -0.882 c
--0.496 -0.992 -0.658 -1.081 -0.852 -1.147 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.162 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.927 c
--3.127 -0.819 -3.23 -0.691 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.214 -3.484 -0.015 c
--2.66 0.132 l
--2.642 0.033 -2.616 -0.059 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.368 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.683 -1.992 0.69 -1.999 0.69 c
--2.167 0.727 -2.329 0.771 -2.484 0.823 c
--2.642 0.881 -2.786 0.959 -2.91 1.058 c
--3.039 1.153 -3.142 1.278 -3.219 1.425 c
--3.289 1.573 -3.322 1.756 -3.322 1.984 c
--3.322 2.179 -3.289 2.344 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.836 c
--2.8 2.932 -2.645 3.002 -2.469 3.042 c
--2.293 3.09 -2.102 3.119 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.119 -1.128 3.09 -0.97 3.042 c
--0.804 2.992 -0.669 2.917 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.202 2.344 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.252 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.352 c
--1.294 1.311 -1.117 1.264 -0.941 1.205 c
--0.756 1.147 -0.595 1.066 -0.455 0.97 c
--0.32 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.454 c
--2.26 2.425 -2.319 2.385 -2.366 2.337 c
--2.406 2.296 -2.436 2.248 -2.454 2.19 c
--2.477 2.131 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.778 c
--2.41 1.72 -2.373 1.668 -2.322 1.631 c
--2.263 1.591 -2.201 1.558 -2.131 1.529 c
--2.065 1.5 -1.984 1.469 -1.896 1.44 c
-h
--0.837 -0.015 m
--0.837 0.091 -0.86 0.176 -0.897 0.235 c
--0.926 0.301 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.529 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.53 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.015 c
-6.402 -2.66 m
-6.184 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.396 c
-5.284 -2.315 5.185 -2.22 5.108 -2.103 c
-5.039 -1.985 4.991 -1.856 4.961 -1.72 c
-5.858 -1.617 l
-5.895 -1.753 5.964 -1.86 6.064 -1.941 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.058 6.681 -2.028 c
-6.758 -1.999 6.828 -1.945 6.887 -1.867 c
-6.945 -1.797 6.99 -1.706 7.019 -1.588 c
-7.056 -1.47 7.078 -1.323 7.078 -1.147 c
-7.078 -0.956 l
-7.078 -0.889 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.073 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.215 -0.897 5.108 -0.75 c
-5.009 -0.595 4.935 -0.412 4.888 -0.206 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.771 4.836 1.018 4.888 1.234 c
-4.946 1.448 5.027 1.631 5.137 1.778 c
-5.244 1.933 5.376 2.051 5.534 2.131 c
-5.689 2.219 5.876 2.263 6.093 2.263 c
-6.188 2.263 6.288 2.252 6.387 2.234 c
-6.483 2.212 6.571 2.179 6.652 2.131 c
-6.739 2.08 6.817 2.017 6.887 1.94 c
-6.964 1.859 7.026 1.768 7.078 1.66 c
-7.092 1.66 l
-7.092 1.808 l
-7.1 1.866 7.107 1.918 7.107 1.97 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.151 2.219 c
-8.004 2.219 l
-7.993 2.138 7.982 2.028 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.162 l
-7.975 -1.415 7.938 -1.635 7.871 -1.823 c
-7.802 -2.007 7.699 -2.161 7.563 -2.278 c
-7.423 -2.404 7.258 -2.499 7.063 -2.558 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.529 m
-7.092 0.742 7.067 0.918 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.5 6.729 1.558 6.652 1.587 c
-6.571 1.624 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.62 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.367 c
-5.88 1.278 5.835 1.161 5.799 1.014 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.339 c
-6.049 -0.515 6.211 -0.603 6.417 -0.603 c
-6.483 -0.603 6.556 -0.588 6.637 -0.559 c
-6.725 -0.522 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.177 7.019 -0.029 c
-7.067 0.118 7.092 0.301 7.092 0.529 c
-11.036 -0.647 m
-12.168 -0.647 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.647 l
-10.124 -0.647 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.219 l
-11.036 2.219 l
-h
-10.124 3.513 0.912 -0.676 re
-10.124 2.836 m
-13.597 1.602 m
-13.053 1.602 l
-13.053 2.219 l
-13.641 2.219 l
-13.92 3.116 l
-14.494 3.116 l
-14.494 2.219 l
-15.728 2.219 l
-15.728 1.602 l
-14.494 1.602 l
-14.494 -0.103 l
-14.494 -0.324 l
-14.501 -0.393 14.523 -0.456 14.552 -0.515 c
-14.589 -0.566 14.645 -0.611 14.714 -0.647 c
-14.791 -0.676 14.905 -0.691 15.052 -0.691 c
-15.188 -0.691 15.324 -0.688 15.464 -0.676 c
-15.599 -0.658 15.732 -0.632 15.861 -0.603 c
-15.861 -1.205 l
-15.78 -1.216 15.703 -1.231 15.626 -1.249 c
-15.545 -1.261 15.468 -1.268 15.391 -1.279 c
-15.31 -1.286 15.221 -1.294 15.125 -1.294 c
-15.038 -1.301 14.938 -1.309 14.832 -1.309 c
-14.645 -1.309 14.483 -1.294 14.346 -1.264 c
-14.218 -1.228 14.104 -1.183 14.009 -1.132 c
-13.92 -1.085 13.847 -1.025 13.788 -0.956 c
-13.729 -0.879 13.685 -0.802 13.656 -0.721 c
-13.627 -0.632 13.604 -0.544 13.597 -0.456 c
-13.586 -0.36 13.582 -0.264 13.582 -0.177 c
-h
-22.074 -1.323 m
-21.905 -1.323 21.755 -1.301 21.619 -1.264 c
-21.49 -1.216 21.376 -1.147 21.28 -1.058 c
-21.193 -0.97 21.122 -0.864 21.075 -0.735 c
-21.024 -0.599 21.001 -0.449 21.001 -0.279 c
-21.001 -0.073 21.035 0.095 21.105 0.235 c
-21.17 0.382 21.266 0.492 21.384 0.573 c
-21.509 0.661 21.652 0.723 21.81 0.764 c
-21.976 0.801 22.152 0.827 22.339 0.837 c
-23.059 0.852 l
-23.059 1.029 l
-23.059 1.147 23.048 1.249 23.03 1.338 c
-23.008 1.425 22.975 1.492 22.927 1.543 c
-22.886 1.602 22.839 1.639 22.78 1.66 c
-22.722 1.679 22.655 1.691 22.589 1.691 c
-22.519 1.691 22.456 1.679 22.398 1.66 c
-22.346 1.65 22.298 1.624 22.251 1.587 c
-22.211 1.558 22.177 1.506 22.148 1.44 c
-22.126 1.382 22.111 1.301 22.104 1.205 c
-21.163 1.249 l
-21.193 1.396 21.236 1.532 21.296 1.66 c
-21.361 1.786 21.457 1.896 21.575 1.984 c
-21.693 2.08 21.832 2.153 22.001 2.205 c
-22.177 2.252 22.383 2.278 22.618 2.278 c
-23.059 2.278 23.391 2.168 23.618 1.955 c
-23.853 1.749 23.971 1.44 23.971 1.029 c
-23.971 -0.235 l
-23.971 -0.456 l
-23.979 -0.515 23.993 -0.57 24.015 -0.617 c
-24.033 -0.658 24.062 -0.691 24.103 -0.721 c
-24.139 -0.742 24.191 -0.75 24.25 -0.75 c
-24.316 -0.75 24.386 -0.746 24.455 -0.735 c
-24.455 -1.22 l
-24.397 -1.231 24.342 -1.242 24.294 -1.249 c
-24.254 -1.261 24.214 -1.268 24.177 -1.279 c
-24.137 -1.286 24.092 -1.294 24.044 -1.294 c
-23.993 -1.301 23.934 -1.309 23.868 -1.309 c
-23.64 -1.309 23.474 -1.257 23.368 -1.147 c
-23.258 -1.029 23.196 -0.864 23.177 -0.647 c
-23.162 -0.647 l
-23.092 -0.757 23.023 -0.852 22.957 -0.941 c
-22.886 -1.022 22.809 -1.087 22.722 -1.147 c
-22.633 -1.205 22.534 -1.249 22.427 -1.279 c
-22.328 -1.309 22.211 -1.323 22.074 -1.323 c
-23.059 0.353 m
-22.633 0.338 l
-22.534 0.338 22.442 0.33 22.354 0.324 c
-22.273 0.312 22.207 0.287 22.148 0.249 c
-22.09 0.209 22.038 0.151 22.001 0.073 c
-21.961 0.004 21.942 -0.088 21.942 -0.206 c
-21.942 -0.375 21.976 -0.497 22.045 -0.574 c
-22.111 -0.654 22.211 -0.691 22.339 -0.691 c
-22.446 -0.691 22.545 -0.669 22.633 -0.617 c
-22.728 -0.57 22.809 -0.507 22.868 -0.426 c
-22.934 -0.349 22.986 -0.262 23.015 -0.162 c
-23.044 -0.056 23.059 0.058 23.059 0.176 c
-h
-27.355 -1.264 m
-27.344 -1.246 27.333 -1.216 27.326 -1.176 c
-27.326 -1.128 27.318 -1.081 27.312 -1.029 c
-27.312 -0.97 27.304 -0.912 27.297 -0.852 c
-27.297 -0.691 l
-27.179 -0.927 27.036 -1.095 26.87 -1.191 c
-26.701 -1.279 26.503 -1.323 26.267 -1.323 c
-26.069 -1.323 25.893 -1.279 25.739 -1.191 c
-25.581 -1.103 25.448 -0.981 25.342 -0.823 c
-25.242 -0.658 25.165 -0.467 25.106 -0.25 c
-25.055 -0.037 25.033 0.206 25.033 0.47 c
-25.033 0.735 25.055 0.974 25.106 1.19 c
-25.165 1.415 25.242 1.606 25.342 1.764 c
-25.448 1.918 25.581 2.043 25.739 2.131 c
-25.903 2.227 26.095 2.278 26.312 2.278 c
-26.408 2.278 26.503 2.263 26.591 2.234 c
-26.686 2.212 26.782 2.179 26.87 2.131 c
-26.959 2.08 27.036 2.017 27.106 1.94 c
-27.183 1.859 27.245 1.768 27.297 1.66 c
-27.297 1.749 l
-27.297 1.896 l
-27.297 2.057 l
-27.297 2.234 l
-27.297 3.513 l
-28.193 3.513 l
-28.193 -0.5 l
-28.193 -0.676 28.197 -0.834 28.208 -0.97 c
-28.215 -1.099 28.222 -1.199 28.222 -1.264 c
-h
-27.312 0.484 m
-27.312 0.72 27.285 0.912 27.237 1.058 c
-27.197 1.213 27.142 1.338 27.076 1.425 c
-27.017 1.514 26.947 1.573 26.87 1.602 c
-26.789 1.639 26.712 1.66 26.635 1.66 c
-26.535 1.66 26.444 1.635 26.356 1.587 c
-26.275 1.547 26.209 1.477 26.15 1.382 c
-26.098 1.282 26.055 1.161 26.018 1.014 c
-25.988 0.867 25.974 0.683 25.974 0.47 c
-25.974 0.077 26.025 -0.217 26.136 -0.412 c
-26.253 -0.611 26.414 -0.706 26.62 -0.706 c
-26.697 -0.706 26.774 -0.688 26.855 -0.647 c
-26.932 -0.611 27.006 -0.544 27.076 -0.456 c
-27.142 -0.368 27.197 -0.246 27.237 -0.088 c
-27.285 0.066 27.312 0.257 27.312 0.484 c
-31.416 -1.264 m
-31.405 -1.246 31.393 -1.216 31.387 -1.176 c
-31.387 -1.128 31.379 -1.081 31.372 -1.029 c
-31.372 -0.97 31.364 -0.912 31.357 -0.852 c
-31.357 -0.691 l
-31.239 -0.927 31.096 -1.095 30.931 -1.191 c
-30.762 -1.279 30.564 -1.323 30.328 -1.323 c
-30.13 -1.323 29.953 -1.279 29.799 -1.191 c
-29.641 -1.103 29.508 -0.981 29.402 -0.823 c
-29.303 -0.658 29.226 -0.467 29.167 -0.25 c
-29.116 -0.037 29.093 0.206 29.093 0.47 c
-29.093 0.735 29.116 0.974 29.167 1.19 c
-29.226 1.415 29.303 1.606 29.402 1.764 c
-29.508 1.918 29.641 2.043 29.799 2.131 c
-29.964 2.227 30.155 2.278 30.372 2.278 c
-30.468 2.278 30.564 2.263 30.651 2.234 c
-30.747 2.212 30.842 2.179 30.931 2.131 c
-31.019 2.08 31.096 2.017 31.166 1.94 c
-31.243 1.859 31.306 1.768 31.357 1.66 c
-31.357 1.749 l
-31.357 1.896 l
-31.357 2.057 l
-31.357 2.234 l
-31.357 3.513 l
-32.253 3.513 l
-32.253 -0.5 l
-32.253 -0.676 32.257 -0.834 32.268 -0.97 c
-32.276 -1.099 32.283 -1.199 32.283 -1.264 c
-h
-31.372 0.484 m
-31.372 0.72 31.346 0.912 31.298 1.058 c
-31.258 1.213 31.202 1.338 31.137 1.425 c
-31.077 1.514 31.008 1.573 30.931 1.602 c
-30.85 1.639 30.773 1.66 30.695 1.66 c
-30.597 1.66 30.504 1.635 30.416 1.587 c
-30.335 1.547 30.269 1.477 30.211 1.382 c
-30.159 1.282 30.115 1.161 30.078 1.014 c
-30.049 0.867 30.034 0.683 30.034 0.47 c
-30.034 0.077 30.086 -0.217 30.196 -0.412 c
-30.313 -0.611 30.475 -0.706 30.681 -0.706 c
-30.758 -0.706 30.836 -0.688 30.916 -0.647 c
-30.994 -0.611 31.067 -0.544 31.137 -0.456 c
-31.202 -0.368 31.258 -0.246 31.298 -0.088 c
-31.346 0.066 31.372 0.257 31.372 0.484 c
-38.115 -2.631 m
-38.115 3.513 l
-40.041 3.513 l
-40.041 2.896 l
-38.967 2.896 l
-38.967 -2.014 l
-40.041 -2.014 l
-40.041 -2.631 l
-h
-43.072 1.602 m
-43.072 -1.264 l
-42.175 -1.264 l
-42.175 1.602 l
-41.352 1.602 l
-41.352 2.219 l
-42.175 2.219 l
-42.175 2.484 l
-42.175 2.609 42.19 2.741 42.219 2.881 c
-42.256 3.017 42.326 3.135 42.425 3.233 c
-42.532 3.341 42.676 3.428 42.852 3.499 c
-43.028 3.564 43.252 3.601 43.528 3.601 c
-43.741 3.601 43.939 3.59 44.116 3.572 c
-44.292 3.549 44.442 3.532 44.571 3.513 c
-44.571 2.925 l
-44.442 2.944 44.299 2.958 44.145 2.969 c
-43.987 2.977 43.837 2.984 43.69 2.984 c
-43.561 2.984 43.458 2.969 43.381 2.94 c
-43.3 2.911 43.237 2.87 43.189 2.822 c
-43.139 2.77 43.106 2.708 43.087 2.631 c
-43.076 2.561 43.072 2.484 43.072 2.396 c
-43.072 2.219 l
-44.498 2.219 l
-44.498 1.602 l
-h
-47.588 -0.647 m
-48.72 -0.647 l
-48.72 -1.264 l
-45.413 -1.264 l
-45.413 -0.647 l
-46.677 -0.647 l
-46.677 1.602 l
-45.751 1.602 l
-45.751 2.219 l
-47.588 2.219 l
-h
-46.677 3.513 0.912 -0.676 re
-46.677 2.836 m
-51.649 -0.647 m
-52.781 -0.647 l
-52.781 -1.264 l
-49.473 -1.264 l
-49.473 -0.647 l
-50.738 -0.647 l
-50.738 2.896 l
-49.812 2.896 l
-49.812 3.513 l
-51.649 3.513 l
-h
-55.166 -1.323 m
-54.908 -1.323 54.68 -1.286 54.475 -1.22 c
-54.269 -1.143 54.093 -1.029 53.946 -0.882 c
-53.799 -0.728 53.681 -0.536 53.593 -0.309 c
-53.512 -0.085 53.475 0.18 53.475 0.484 c
-53.475 0.816 53.52 1.095 53.608 1.323 c
-53.703 1.558 53.832 1.741 53.99 1.881 c
-54.156 2.017 54.343 2.117 54.549 2.175 c
-54.754 2.242 54.964 2.278 55.181 2.278 c
-55.453 2.278 55.688 2.227 55.887 2.131 c
-56.092 2.043 56.257 1.911 56.386 1.735 c
-56.522 1.565 56.621 1.359 56.68 1.117 c
-56.746 0.881 56.783 0.617 56.783 0.324 c
-56.783 0.309 l
-54.416 0.309 l
-54.416 0.162 54.431 0.022 54.46 -0.103 c
-54.497 -0.231 54.553 -0.345 54.622 -0.441 c
-54.688 -0.53 54.773 -0.599 54.871 -0.647 c
-54.967 -0.698 55.081 -0.721 55.21 -0.721 c
-55.364 -0.721 55.504 -0.688 55.621 -0.617 c
-55.746 -0.551 55.835 -0.449 55.887 -0.309 c
-56.724 -0.382 l
-56.695 -0.482 56.639 -0.588 56.562 -0.706 c
-56.481 -0.816 56.379 -0.919 56.253 -1.014 c
-56.136 -1.103 55.982 -1.176 55.798 -1.235 c
-55.621 -1.294 55.409 -1.323 55.166 -1.323 c
-55.166 1.705 m
-55.077 1.705 54.989 1.691 54.902 1.66 c
-54.813 1.631 54.732 1.58 54.666 1.514 c
-54.596 1.444 54.537 1.356 54.49 1.249 c
-54.449 1.139 54.431 1.014 54.431 0.867 c
-55.901 0.867 l
-55.901 1.003 55.875 1.124 55.827 1.234 c
-55.787 1.341 55.731 1.429 55.665 1.5 c
-55.607 1.565 55.534 1.617 55.445 1.646 c
-55.357 1.683 55.261 1.705 55.166 1.705 c
-58.04 -2.631 m
-58.04 -2.014 l
-59.112 -2.014 l
-59.112 2.896 l
-58.04 2.896 l
-58.04 3.513 l
-59.965 3.513 l
-59.965 -2.631 l
-h
-f
-Q
-q 1 0 0 1 316.4525 277.2445 cm
-0 0 m
--1.808 0 l
--2.219 -1.396 l
--2.91 -1.396 l
--1.19 3.954 l
--0.617 3.954 l
-1.118 -1.396 l
-0.426 -1.396 l
-h
--1.631 0.588 m
--0.176 0.588 l
--0.897 3.013 l
-h
-1.617 0.779 m
-1.617 1.386 1.727 1.852 1.955 2.176 c
-2.19 2.5 2.517 2.66 2.94 2.66 c
-3.323 2.66 3.62 2.502 3.836 2.19 c
-3.836 4.248 l
-4.484 4.248 l
-4.484 -1.396 l
-3.896 -1.396 l
-3.851 -0.97 l
-3.645 -1.304 3.341 -1.469 2.94 -1.469 c
-2.529 -1.469 2.205 -1.315 1.97 -0.999 c
-1.735 -0.675 1.617 -0.22 1.617 0.368 c
-h
-2.264 0.397 m
-2.264 -0.044 2.326 -0.374 2.455 -0.588 c
-2.591 -0.793 2.812 -0.897 3.117 -0.897 c
-3.44 -0.897 3.678 -0.735 3.836 -0.411 c
-3.836 1.602 l
-3.668 1.914 3.429 2.072 3.117 2.072 c
-2.812 2.072 2.591 1.97 2.455 1.764 c
-2.326 1.559 2.264 1.235 2.264 0.794 c
-h
-5.351 0.779 m
-5.351 1.386 5.461 1.852 5.689 2.176 c
-5.924 2.5 6.251 2.66 6.674 2.66 c
-7.056 2.66 7.354 2.502 7.57 2.19 c
-7.57 4.248 l
-8.217 4.248 l
-8.217 -1.396 l
-7.629 -1.396 l
-7.585 -0.97 l
-7.379 -1.304 7.074 -1.469 6.674 -1.469 c
-6.262 -1.469 5.939 -1.315 5.704 -0.999 c
-5.469 -0.675 5.351 -0.22 5.351 0.368 c
-h
-5.997 0.397 m
-5.997 -0.044 6.06 -0.374 6.188 -0.588 c
-6.325 -0.793 6.545 -0.897 6.85 -0.897 c
-7.173 -0.897 7.412 -0.735 7.57 -0.411 c
-7.57 1.602 l
-7.402 1.914 7.163 2.072 6.85 2.072 c
-6.545 2.072 6.325 1.97 6.188 1.764 c
-6.06 1.559 5.997 1.235 5.997 0.794 c
-h
-12.979 -1.396 m
-12.939 -1.308 12.914 -1.161 12.906 -0.955 c
-12.671 -1.3 12.377 -1.469 12.025 -1.469 c
-11.66 -1.469 11.377 -1.374 11.171 -1.176 c
-10.973 -0.97 10.878 -0.683 10.878 -0.309 c
-10.878 0.092 11.013 0.412 11.289 0.647 c
-11.561 0.89 11.936 1.014 12.406 1.014 c
-12.891 1.014 l
-12.891 1.441 l
-12.891 1.676 12.836 1.841 12.73 1.941 c
-12.619 2.047 12.457 2.103 12.245 2.103 c
-12.046 2.103 11.884 2.043 11.759 1.926 c
-11.642 1.808 11.583 1.661 11.583 1.484 c
-10.936 1.484 l
-10.936 1.679 10.995 1.871 11.113 2.058 c
-11.238 2.242 11.4 2.389 11.597 2.5 c
-11.803 2.606 12.031 2.66 12.289 2.66 c
-12.69 2.66 12.994 2.558 13.2 2.352 c
-13.413 2.147 13.527 1.852 13.538 1.47 c
-13.538 -0.544 l
-13.538 -0.849 13.575 -1.113 13.656 -1.338 c
-13.656 -1.396 l
-h
-12.112 -0.881 m
-12.278 -0.881 12.428 -0.837 12.568 -0.75 c
-12.715 -0.661 12.821 -0.551 12.891 -0.411 c
-12.891 0.53 l
-12.524 0.53 l
-12.208 0.53 11.965 0.46 11.789 0.324 c
-11.612 0.195 11.524 0.008 11.524 -0.235 c
-11.524 -0.463 11.568 -0.628 11.657 -0.735 c
-11.745 -0.833 11.896 -0.881 12.112 -0.881 c
-16.434 -1.396 m
-16.434 2.058 l
-15.919 2.058 l
-15.919 2.587 l
-16.434 2.587 l
-16.434 2.955 l
-16.441 3.385 16.555 3.719 16.771 3.954 c
-16.996 4.197 17.309 4.322 17.712 4.322 c
-17.86 4.322 17.999 4.3 18.139 4.263 c
-18.286 4.223 18.437 4.168 18.595 4.102 c
-18.477 3.528 l
-18.242 3.653 17.999 3.719 17.756 3.719 c
-17.511 3.719 17.338 3.649 17.242 3.514 c
-17.143 3.385 17.095 3.19 17.095 2.926 c
-17.095 2.587 l
-17.742 2.587 l
-17.742 2.058 l
-17.095 2.058 l
-17.095 -1.396 l
-h
-18.903 -1.396 -0.646 3.983 re
-20.652 -1.396 -0.646 5.644 re
-23.092 -1.469 m
-22.593 -1.469 22.211 -1.323 21.946 -1.028 c
-21.681 -0.735 21.549 -0.301 21.549 0.279 c
-21.549 0.75 l
-21.549 1.345 21.674 1.812 21.931 2.147 c
-22.196 2.488 22.556 2.66 23.019 2.66 c
-23.478 2.66 23.82 2.506 24.048 2.205 c
-24.283 1.912 24.405 1.448 24.415 0.823 c
-24.415 0.397 l
-22.196 0.397 l
-22.196 0.309 l
-22.196 -0.124 22.273 -0.437 22.431 -0.632 c
-22.597 -0.819 22.828 -0.911 23.121 -0.911 c
-23.316 -0.911 23.489 -0.878 23.636 -0.808 c
-23.784 -0.731 23.919 -0.613 24.048 -0.455 c
-24.386 -0.867 l
-24.1 -1.271 23.669 -1.469 23.092 -1.469 c
-23.019 2.103 m
-22.743 2.103 22.541 2.007 22.416 1.823 c
-22.288 1.636 22.215 1.345 22.196 0.956 c
-23.769 0.956 l
-23.769 1.044 l
-23.746 1.426 23.68 1.694 23.563 1.852 c
-23.445 2.018 23.262 2.103 23.019 2.103 c
-27.767 3.543 m
-27.767 2.587 l
-28.37 2.587 l
-28.37 2.058 l
-27.767 2.058 l
-27.767 -0.411 l
-27.767 -0.569 27.788 -0.687 27.84 -0.764 c
-27.899 -0.845 27.987 -0.881 28.105 -0.881 c
-28.193 -0.881 28.281 -0.867 28.37 -0.837 c
-28.37 -1.396 l
-28.222 -1.444 28.068 -1.469 27.914 -1.469 c
-27.657 -1.469 27.462 -1.378 27.326 -1.19 c
-27.186 -1.007 27.12 -0.746 27.12 -0.411 c
-27.12 2.058 l
-26.518 2.058 l
-26.518 2.587 l
-27.12 2.587 l
-27.12 3.543 l
-h
-28.928 0.779 m
-28.928 1.357 29.064 1.812 29.34 2.147 c
-29.623 2.488 29.994 2.66 30.456 2.66 c
-30.916 2.66 31.283 2.492 31.559 2.161 c
-31.842 1.837 31.989 1.389 32 0.823 c
-32 0.397 l
-32 -0.172 31.857 -0.628 31.574 -0.97 c
-31.298 -1.304 30.931 -1.469 30.471 -1.469 c
-30.009 -1.469 29.637 -1.308 29.354 -0.985 c
-29.078 -0.654 28.935 -0.213 28.928 0.339 c
-h
-29.575 0.397 m
-29.575 -0.007 29.652 -0.323 29.81 -0.558 c
-29.976 -0.793 30.196 -0.911 30.471 -0.911 c
-31.037 -0.911 31.331 -0.5 31.353 0.324 c
-31.353 0.779 l
-31.353 1.18 31.269 1.5 31.104 1.735 c
-30.946 1.977 30.728 2.103 30.456 2.103 c
-30.192 2.103 29.976 1.977 29.81 1.735 c
-29.652 1.5 29.575 1.18 29.575 0.779 c
-h
-35.41 3.543 m
-35.41 2.587 l
-36.013 2.587 l
-36.013 2.058 l
-35.41 2.058 l
-35.41 -0.411 l
-35.41 -0.569 35.432 -0.687 35.484 -0.764 c
-35.543 -0.845 35.63 -0.881 35.748 -0.881 c
-35.837 -0.881 35.925 -0.867 36.013 -0.837 c
-36.013 -1.396 l
-35.866 -1.444 35.711 -1.469 35.557 -1.469 c
-35.3 -1.469 35.106 -1.378 34.969 -1.19 c
-34.83 -1.007 34.763 -0.746 34.763 -0.411 c
-34.763 2.058 l
-34.161 2.058 l
-34.161 2.587 l
-34.763 2.587 l
-34.763 3.543 l
-h
-37.424 2.176 m
-37.678 2.5 37.997 2.66 38.379 2.66 c
-39.085 2.66 39.441 2.19 39.453 1.249 c
-39.453 -1.396 l
-38.805 -1.396 l
-38.805 1.22 l
-38.805 1.532 38.751 1.754 38.644 1.881 c
-38.534 2.007 38.379 2.072 38.173 2.072 c
-38.015 2.072 37.868 2.018 37.733 1.912 c
-37.604 1.801 37.502 1.665 37.424 1.5 c
-37.424 -1.396 l
-36.777 -1.396 l
-36.777 4.248 l
-37.424 4.248 l
-h
-41.834 -1.469 m
-41.334 -1.469 40.952 -1.323 40.687 -1.028 c
-40.423 -0.735 40.29 -0.301 40.29 0.279 c
-40.29 0.75 l
-40.29 1.345 40.415 1.812 40.673 2.147 c
-40.937 2.488 41.297 2.66 41.76 2.66 c
-42.219 2.66 42.561 2.506 42.79 2.205 c
-43.025 1.912 43.146 1.448 43.156 0.823 c
-43.156 0.397 l
-40.937 0.397 l
-40.937 0.309 l
-40.937 -0.124 41.014 -0.437 41.172 -0.632 c
-41.338 -0.819 41.569 -0.911 41.863 -0.911 c
-42.058 -0.911 42.231 -0.878 42.377 -0.808 c
-42.524 -0.731 42.661 -0.613 42.79 -0.455 c
-43.127 -0.867 l
-42.84 -1.271 42.41 -1.469 41.834 -1.469 c
-41.76 2.103 m
-41.485 2.103 41.282 2.007 41.157 1.823 c
-41.029 1.636 40.955 1.345 40.937 0.956 c
-42.51 0.956 l
-42.51 1.044 l
-42.488 1.426 42.422 1.694 42.304 1.852 c
-42.186 2.018 42.003 2.103 41.76 2.103 c
-f
-Q
-q 1 0 0 1 363.7688 276.9219 cm
-0 0 m
-0 0.087 -0.044 0.165 -0.132 0.235 c
--0.22 0.312 -0.407 0.415 -0.69 0.544 c
--1.124 0.72 -1.422 0.9 -1.587 1.087 c
--1.745 1.271 -1.822 1.502 -1.822 1.778 c
--1.822 2.119 -1.701 2.403 -1.455 2.63 c
--1.201 2.865 -0.864 2.983 -0.441 2.983 c
--0.011 2.983 0.339 2.869 0.603 2.645 c
-0.867 2.418 1 2.117 1 1.734 c
--0.044 1.734 l
--0.044 2.057 -0.183 2.219 -0.455 2.219 c
--0.565 2.219 -0.654 2.183 -0.72 2.117 c
--0.79 2.046 -0.823 1.947 -0.823 1.822 c
--0.823 1.734 -0.786 1.653 -0.706 1.587 c
--0.628 1.529 -0.448 1.433 -0.162 1.308 c
-0.268 1.15 0.566 0.974 0.735 0.779 c
-0.912 0.591 1 0.341 1 0.029 c
-1 -0.324 0.867 -0.611 0.603 -0.823 c
-0.339 -1.04 -0.011 -1.147 -0.441 -1.147 c
--0.735 -1.147 -0.995 -1.092 -1.22 -0.985 c
--1.448 -0.867 -1.624 -0.706 -1.749 -0.5 c
--1.866 -0.294 -1.926 -0.074 -1.926 0.161 c
--0.941 0.161 l
--0.941 -0.026 -0.904 -0.162 -0.823 -0.25 c
--0.735 -0.339 -0.602 -0.383 -0.426 -0.383 c
--0.143 -0.383 0 -0.258 0 0 c
-2.866 3.881 m
-2.866 2.91 l
-3.396 2.91 l
-3.396 2.117 l
-2.866 2.117 l
-2.866 0.147 l
-2.866 -0.011 2.885 -0.118 2.926 -0.177 c
-2.973 -0.235 3.057 -0.265 3.175 -0.265 c
-3.281 -0.265 3.366 -0.258 3.425 -0.235 c
-3.425 -1.044 l
-3.248 -1.11 3.057 -1.147 2.851 -1.147 c
-2.176 -1.147 1.83 -0.761 1.823 0.014 c
-1.823 2.117 l
-1.367 2.117 l
-1.367 2.91 l
-1.823 2.91 l
-1.823 3.881 l
-h
-5.85 -1.073 m
-5.821 -1.015 5.791 -0.912 5.762 -0.765 c
-5.575 -1.022 5.325 -1.147 5.012 -1.147 c
-4.678 -1.147 4.399 -1.04 4.175 -0.823 c
-3.958 -0.599 3.851 -0.31 3.851 0.043 c
-3.851 0.455 3.984 0.771 4.248 0.999 c
-4.513 1.234 4.895 1.352 5.395 1.352 c
-5.718 1.352 l
-5.718 1.675 l
-5.718 1.851 5.681 1.973 5.615 2.042 c
-5.556 2.119 5.469 2.16 5.351 2.16 c
-5.093 2.16 4.968 2.006 4.968 1.705 c
-3.925 1.705 l
-3.925 2.076 4.061 2.381 4.337 2.616 c
-4.609 2.859 4.958 2.983 5.38 2.983 c
-5.821 2.983 6.159 2.865 6.394 2.63 c
-6.637 2.403 6.762 2.08 6.762 1.66 c
-6.762 -0.206 l
-6.762 -0.551 6.809 -0.82 6.909 -1.015 c
-6.909 -1.073 l
-h
-5.247 -0.324 m
-5.355 -0.324 5.446 -0.306 5.527 -0.265 c
-5.615 -0.217 5.677 -0.158 5.718 -0.088 c
-5.718 0.735 l
-5.469 0.735 l
-5.292 0.735 5.149 0.675 5.042 0.558 c
-4.943 0.448 4.895 0.301 4.895 0.118 c
-4.895 -0.177 5.012 -0.324 5.247 -0.324 c
-7.379 1.043 m
-7.379 1.69 7.497 2.175 7.732 2.499 c
-7.967 2.822 8.298 2.983 8.731 2.983 c
-9.084 2.983 9.356 2.84 9.554 2.557 c
-9.598 2.91 l
-10.539 2.91 l
-10.539 -1.073 l
-10.539 -1.58 10.396 -1.97 10.113 -2.234 c
-9.826 -2.506 9.422 -2.646 8.893 -2.646 c
-8.665 -2.646 8.43 -2.602 8.187 -2.514 c
-7.952 -2.426 7.776 -2.311 7.659 -2.176 c
-8.011 -1.455 l
-8.106 -1.563 8.235 -1.646 8.393 -1.706 c
-8.548 -1.771 8.694 -1.808 8.835 -1.808 c
-9.07 -1.808 9.235 -1.75 9.334 -1.632 c
-9.44 -1.522 9.496 -1.345 9.496 -1.103 c
-9.496 -0.75 l
-9.297 -1.015 9.04 -1.147 8.717 -1.147 c
-8.294 -1.147 7.967 -0.985 7.732 -0.662 c
-7.504 -0.331 7.387 0.139 7.379 0.749 c
-h
-8.422 0.779 m
-8.422 0.404 8.47 0.135 8.57 -0.03 c
-8.665 -0.198 8.819 -0.279 9.025 -0.279 c
-9.239 -0.279 9.396 -0.202 9.496 -0.044 c
-9.496 1.851 l
-9.386 2.017 9.231 2.102 9.025 2.102 c
-8.819 2.102 8.665 2.017 8.57 1.851 c
-8.47 1.683 8.422 1.414 8.422 1.043 c
-h
-12.391 -1.073 -1.043 3.983 re
-11.304 3.939 m
-11.304 4.093 11.352 4.222 11.451 4.321 c
-11.557 4.428 11.693 4.483 11.863 4.483 c
-12.039 4.483 12.175 4.428 12.274 4.321 c
-12.38 4.222 12.436 4.093 12.436 3.939 c
-12.436 3.77 12.38 3.634 12.274 3.528 c
-12.175 3.428 12.039 3.38 11.863 3.38 c
-11.693 3.38 11.557 3.428 11.451 3.528 c
-11.352 3.634 11.304 3.77 11.304 3.939 c
-14.155 2.91 m
-14.184 2.513 l
-14.42 2.825 14.722 2.983 15.096 2.983 c
-15.78 2.983 16.133 2.502 16.154 1.543 c
-16.154 -1.073 l
-15.111 -1.073 l
-15.111 1.469 l
-15.111 1.693 15.074 1.855 15.008 1.955 c
-14.938 2.05 14.82 2.102 14.655 2.102 c
-14.468 2.102 14.321 2.006 14.215 1.822 c
-14.215 -1.073 l
-13.17 -1.073 l
-13.17 2.91 l
-h
-16.772 1.043 m
-16.772 1.69 16.889 2.175 17.124 2.499 c
-17.359 2.822 17.691 2.983 18.124 2.983 c
-18.477 2.983 18.749 2.84 18.947 2.557 c
-18.992 2.91 l
-19.932 2.91 l
-19.932 -1.073 l
-19.932 -1.58 19.788 -1.97 19.506 -2.234 c
-19.219 -2.506 18.815 -2.646 18.286 -2.646 c
-18.058 -2.646 17.822 -2.602 17.581 -2.514 c
-17.345 -2.426 17.169 -2.311 17.051 -2.176 c
-17.404 -1.455 l
-17.5 -1.563 17.628 -1.646 17.786 -1.706 c
-17.941 -1.771 18.088 -1.808 18.227 -1.808 c
-18.462 -1.808 18.628 -1.75 18.726 -1.632 c
-18.834 -1.522 18.888 -1.345 18.888 -1.103 c
-18.888 -0.75 l
-18.69 -1.015 18.433 -1.147 18.109 -1.147 c
-17.687 -1.147 17.359 -0.985 17.124 -0.662 c
-16.897 -0.331 16.779 0.139 16.772 0.749 c
-h
-17.816 0.779 m
-17.816 0.404 17.863 0.135 17.962 -0.03 c
-18.058 -0.198 18.213 -0.279 18.418 -0.279 c
-18.631 -0.279 18.789 -0.202 18.888 -0.044 c
-18.888 1.851 l
-18.778 2.017 18.624 2.102 18.418 2.102 c
-18.213 2.102 18.058 2.017 17.962 1.851 c
-17.863 1.683 17.816 1.414 17.816 1.043 c
-h
-f
-Q
-q 1 0 0 1 388.3315 275.8485 cm
-0 0 m
--0.04 0.088 -0.067 0.235 -0.074 0.441 c
--0.309 0.096 -0.603 -0.073 -0.956 -0.073 c
--1.32 -0.073 -1.603 0.022 -1.808 0.22 c
--2.007 0.426 -2.103 0.713 -2.103 1.087 c
--2.103 1.488 -1.966 1.808 -1.691 2.043 c
--1.419 2.286 -1.044 2.41 -0.574 2.41 c
--0.088 2.41 l
--0.088 2.837 l
--0.088 3.072 -0.144 3.237 -0.25 3.337 c
--0.36 3.443 -0.522 3.499 -0.736 3.499 c
--0.934 3.499 -1.096 3.439 -1.22 3.322 c
--1.338 3.204 -1.397 3.057 -1.397 2.881 c
--2.043 2.881 l
--2.043 3.075 -1.985 3.267 -1.867 3.454 c
--1.742 3.638 -1.58 3.785 -1.382 3.896 c
--1.176 4.002 -0.948 4.056 -0.691 4.056 c
--0.291 4.056 0.014 3.954 0.22 3.748 c
-0.434 3.543 0.548 3.248 0.558 2.866 c
-0.558 0.852 l
-0.558 0.548 0.595 0.283 0.675 0.058 c
-0.675 0 l
-h
--0.867 0.515 m
--0.703 0.515 -0.551 0.559 -0.412 0.646 c
--0.265 0.735 -0.158 0.845 -0.088 0.985 c
--0.088 1.926 l
--0.456 1.926 l
--0.772 1.926 -1.015 1.856 -1.191 1.72 c
--1.368 1.591 -1.455 1.404 -1.455 1.161 c
--1.455 0.933 -1.411 0.768 -1.324 0.661 c
--1.235 0.563 -1.085 0.515 -0.867 0.515 c
-3.204 3.366 m
-3.116 3.385 3.017 3.395 2.91 3.395 c
-2.576 3.395 2.341 3.212 2.204 2.851 c
-2.204 0 l
-1.558 0 l
-1.558 3.983 l
-2.19 3.983 l
-2.204 3.572 l
-2.381 3.896 2.624 4.056 2.94 4.056 c
-3.046 4.056 3.135 4.035 3.204 3.998 c
-h
-5.203 -0.073 m
-4.704 -0.073 4.321 0.073 4.056 0.368 c
-3.792 0.661 3.659 1.095 3.659 1.675 c
-3.659 2.146 l
-3.659 2.741 3.785 3.208 4.041 3.543 c
-4.307 3.884 4.667 4.056 5.13 4.056 c
-5.589 4.056 5.93 3.902 6.158 3.601 c
-6.393 3.308 6.515 2.844 6.526 2.219 c
-6.526 1.793 l
-4.307 1.793 l
-4.307 1.705 l
-4.307 1.272 4.384 0.959 4.542 0.764 c
-4.707 0.577 4.939 0.485 5.232 0.485 c
-5.427 0.485 5.6 0.518 5.747 0.588 c
-5.894 0.665 6.03 0.783 6.158 0.941 c
-6.497 0.529 l
-6.21 0.125 5.78 -0.073 5.203 -0.073 c
-5.13 3.499 m
-4.854 3.499 4.652 3.403 4.527 3.219 c
-4.398 3.032 4.325 2.741 4.307 2.352 c
-5.88 2.352 l
-5.88 2.44 l
-5.857 2.822 5.791 3.09 5.674 3.248 c
-5.556 3.414 5.373 3.499 5.13 3.499 c
-9.348 0 m
-9.308 0.088 9.282 0.235 9.275 0.441 c
-9.04 0.096 8.745 -0.073 8.392 -0.073 c
-8.029 -0.073 7.746 0.022 7.54 0.22 c
-7.342 0.426 7.247 0.713 7.247 1.087 c
-7.247 1.488 7.382 1.808 7.658 2.043 c
-7.93 2.286 8.305 2.41 8.775 2.41 c
-9.26 2.41 l
-9.26 2.837 l
-9.26 3.072 9.205 3.237 9.098 3.337 c
-8.988 3.443 8.826 3.499 8.613 3.499 c
-8.415 3.499 8.253 3.439 8.128 3.322 c
-8.01 3.204 7.952 3.057 7.952 2.881 c
-7.305 2.881 l
-7.305 3.075 7.364 3.267 7.482 3.454 c
-7.606 3.638 7.768 3.785 7.966 3.896 c
-8.172 4.002 8.4 4.056 8.658 4.056 c
-9.057 4.056 9.363 3.954 9.568 3.748 c
-9.782 3.543 9.896 3.248 9.907 2.866 c
-9.907 0.852 l
-9.907 0.548 9.944 0.283 10.025 0.058 c
-10.025 0 l
-h
-8.481 0.515 m
-8.646 0.515 8.797 0.559 8.937 0.646 c
-9.084 0.735 9.19 0.845 9.26 0.985 c
-9.26 1.926 l
-8.893 1.926 l
-8.577 1.926 8.334 1.856 8.157 1.72 c
-7.981 1.591 7.893 1.404 7.893 1.161 c
-7.893 0.933 7.937 0.768 8.025 0.661 c
-8.114 0.563 8.264 0.515 8.481 0.515 c
-10.95 0.353 m
-10.95 0.47 10.983 0.566 11.054 0.646 c
-11.12 0.723 11.222 0.764 11.362 0.764 c
-11.509 0.764 11.615 0.723 11.685 0.646 c
-11.762 0.566 11.803 0.47 11.803 0.353 c
-11.803 0.243 11.762 0.151 11.685 0.073 c
-11.615 -0.004 11.509 -0.044 11.362 -0.044 c
-11.222 -0.044 11.12 -0.004 11.054 0.073 c
-10.983 0.151 10.95 0.243 10.95 0.353 c
-17.888 5.35 m
-17.888 1.544 l
-17.888 1.043 17.741 0.646 17.447 0.353 c
-17.161 0.066 16.76 -0.073 16.242 -0.073 c
-15.713 -0.073 15.305 0.062 15.022 0.338 c
-14.746 0.621 14.611 1.022 14.611 1.544 c
-14.611 5.35 l
-15.272 5.35 l
-15.272 1.573 l
-15.272 1.209 15.345 0.941 15.492 0.764 c
-15.646 0.588 15.897 0.5 16.242 0.5 c
-16.583 0.5 16.83 0.588 16.977 0.764 c
-17.132 0.941 17.212 1.209 17.212 1.573 c
-17.212 5.35 l
-h
-20.784 1.014 m
-20.784 1.161 20.729 1.282 20.622 1.382 c
-20.512 1.477 20.306 1.595 20.005 1.735 c
-19.66 1.882 19.417 2.003 19.27 2.102 c
-19.123 2.209 19.013 2.326 18.947 2.454 c
-18.877 2.58 18.844 2.738 18.844 2.925 c
-18.844 3.248 18.962 3.516 19.197 3.734 c
-19.432 3.946 19.733 4.056 20.108 4.056 c
-20.49 4.056 20.799 3.943 21.034 3.719 c
-21.269 3.491 21.387 3.204 21.387 2.851 c
-20.74 2.851 l
-20.74 3.028 20.681 3.179 20.564 3.308 c
-20.446 3.432 20.292 3.499 20.108 3.499 c
-19.91 3.499 19.758 3.443 19.652 3.337 c
-19.542 3.237 19.49 3.105 19.49 2.94 c
-19.49 2.811 19.527 2.705 19.608 2.616 c
-19.685 2.535 19.876 2.433 20.182 2.308 c
-20.66 2.12 20.99 1.933 21.167 1.749 c
-21.343 1.573 21.431 1.345 21.431 1.073 c
-21.431 0.721 21.306 0.441 21.063 0.235 c
-20.828 0.029 20.512 -0.073 20.122 -0.073 c
-19.7 -0.073 19.362 0.044 19.108 0.279 c
-18.851 0.522 18.726 0.827 18.726 1.191 c
-19.373 1.191 l
-19.38 0.962 19.45 0.786 19.579 0.661 c
-19.704 0.544 19.887 0.485 20.122 0.485 c
-20.336 0.485 20.498 0.532 20.608 0.632 c
-20.725 0.727 20.784 0.856 20.784 1.014 c
-23.694 -0.073 m
-23.195 -0.073 22.813 0.073 22.548 0.368 c
-22.283 0.661 22.151 1.095 22.151 1.675 c
-22.151 2.146 l
-22.151 2.741 22.276 3.208 22.534 3.543 c
-22.798 3.884 23.158 4.056 23.621 4.056 c
-24.08 4.056 24.423 3.902 24.65 3.601 c
-24.885 3.308 25.007 2.844 25.017 2.219 c
-25.017 1.793 l
-22.798 1.793 l
-22.798 1.705 l
-22.798 1.272 22.875 0.959 23.033 0.764 c
-23.199 0.577 23.43 0.485 23.724 0.485 c
-23.918 0.485 24.091 0.518 24.238 0.588 c
-24.385 0.665 24.521 0.783 24.65 0.941 c
-24.988 0.529 l
-24.701 0.125 24.271 -0.073 23.694 -0.073 c
-23.621 3.499 m
-23.345 3.499 23.143 3.403 23.018 3.219 c
-22.89 3.032 22.816 2.741 22.798 2.352 c
-24.371 2.352 l
-24.371 2.44 l
-24.348 2.822 24.282 3.09 24.165 3.248 c
-24.047 3.414 23.864 3.499 23.621 3.499 c
-f
-Q
-q 1 0 0 1 415.8331 276.3772 cm
-0 0 m
-0 0.166 0.052 0.302 0.162 0.412 c
-0.268 0.518 0.415 0.574 0.603 0.574 c
-0.768 0.574 0.912 0.518 1.029 0.412 c
-1.147 0.302 1.205 0.166 1.205 0 c
-1.205 -0.168 1.147 -0.305 1.029 -0.411 c
-0.912 -0.521 0.768 -0.573 0.603 -0.573 c
-0.426 -0.573 0.279 -0.521 0.162 -0.411 c
-0.052 -0.305 0 -0.168 0 0 c
-f
-Q
-420.463 275.848 -0.647 3.983 re
-420.508 280.876 m
-420.508 280.766 420.478 280.674 420.419 280.596 c
-420.36 280.527 420.265 280.493 420.14 280.493 c
-420.022 280.493 419.926 280.527 419.86 280.596 c
-419.802 280.674 419.772 280.766 419.772 280.876 c
-419.772 280.993 419.802 281.085 419.86 281.155 c
-419.926 281.232 420.022 281.273 420.14 281.273 c
-420.265 281.273 420.36 281.232 420.419 281.155 c
-420.478 281.074 420.508 280.982 420.508 280.876 c
-422.095 279.832 m
-422.11 279.391 l
-422.363 279.733 422.686 279.905 423.08 279.905 c
-423.785 279.905 424.142 279.435 424.153 278.494 c
-424.153 275.848 l
-423.506 275.848 l
-423.506 278.465 l
-423.506 278.777 423.451 278.998 423.344 279.126 c
-423.234 279.251 423.08 279.317 422.874 279.317 c
-422.716 279.317 422.569 279.262 422.433 279.156 c
-422.304 279.045 422.201 278.91 422.124 278.744 c
-422.124 275.848 l
-421.478 275.848 l
-421.478 279.832 l
-h
-427.063 276.863 m
-427.063 277.009 427.008 277.131 426.902 277.23 c
-426.791 277.325 426.586 277.443 426.284 277.583 c
-425.939 277.73 425.696 277.851 425.549 277.95 c
-425.402 278.057 425.292 278.175 425.225 278.303 c
-425.156 278.428 425.123 278.586 425.123 278.773 c
-425.123 279.097 425.24 279.365 425.476 279.582 c
-425.711 279.795 426.012 279.905 426.387 279.905 c
-426.769 279.905 427.078 279.791 427.313 279.567 c
-427.548 279.34 427.666 279.053 427.666 278.7 c
-427.019 278.7 l
-427.019 278.877 426.96 279.027 426.843 279.156 c
-426.725 279.28 426.571 279.347 426.387 279.347 c
-426.189 279.347 426.038 279.292 425.931 279.185 c
-425.821 279.086 425.769 278.954 425.769 278.788 c
-425.769 278.659 425.806 278.553 425.887 278.465 c
-425.964 278.384 426.156 278.281 426.461 278.156 c
-426.939 277.969 427.269 277.782 427.446 277.597 c
-427.621 277.421 427.71 277.194 427.71 276.922 c
-427.71 276.569 427.585 276.29 427.342 276.084 c
-427.107 275.878 426.791 275.775 426.401 275.775 c
-425.979 275.775 425.641 275.893 425.387 276.128 c
-425.13 276.371 425.005 276.675 425.005 277.039 c
-425.652 277.039 l
-425.659 276.811 425.729 276.635 425.858 276.51 c
-425.983 276.392 426.166 276.334 426.401 276.334 c
-426.615 276.334 426.777 276.381 426.887 276.481 c
-427.004 276.576 427.063 276.705 427.063 276.863 c
-429.4 280.787 m
-429.4 279.832 l
-430.003 279.832 l
-430.003 279.303 l
-429.4 279.303 l
-429.4 276.833 l
-429.4 276.675 429.422 276.558 429.474 276.481 c
-429.532 276.4 429.621 276.363 429.738 276.363 c
-429.827 276.363 429.915 276.377 430.003 276.407 c
-430.003 275.848 l
-429.856 275.801 429.701 275.775 429.547 275.775 c
-429.29 275.775 429.096 275.866 428.959 276.055 c
-428.82 276.238 428.753 276.499 428.753 276.833 c
-428.753 279.303 l
-428.151 279.303 l
-428.151 279.832 l
-428.753 279.832 l
-428.753 280.787 l
-h
-432.193 275.775 m
-431.693 275.775 431.311 275.922 431.047 276.216 c
-430.782 276.51 430.65 276.944 430.65 277.524 c
-430.65 277.994 l
-430.65 278.59 430.775 279.056 431.032 279.391 c
-431.296 279.733 431.656 279.905 432.119 279.905 c
-432.579 279.905 432.921 279.751 433.148 279.45 c
-433.384 279.156 433.505 278.692 433.516 278.068 c
-433.516 277.642 l
-431.296 277.642 l
-431.296 277.553 l
-431.296 277.12 431.373 276.807 431.531 276.612 c
-431.697 276.425 431.928 276.334 432.223 276.334 c
-432.417 276.334 432.59 276.367 432.737 276.436 c
-432.884 276.514 433.019 276.631 433.148 276.789 c
-433.487 276.377 l
-433.2 275.974 432.77 275.775 432.193 275.775 c
-432.119 279.347 m
-431.844 279.347 431.642 279.251 431.517 279.068 c
-431.388 278.88 431.315 278.59 431.296 278.2 c
-432.869 278.2 l
-432.869 278.289 l
-432.847 278.671 432.781 278.939 432.664 279.097 c
-432.546 279.262 432.362 279.347 432.119 279.347 c
-436.338 275.848 m
-436.298 275.937 436.273 276.084 436.265 276.29 c
-436.03 275.944 435.735 275.775 435.383 275.775 c
-435.019 275.775 434.736 275.87 434.53 276.069 c
-434.332 276.275 434.236 276.562 434.236 276.936 c
-434.236 277.337 434.372 277.657 434.648 277.892 c
-434.92 278.134 435.294 278.259 435.765 278.259 c
-436.25 278.259 l
-436.25 278.686 l
-436.25 278.921 436.194 279.086 436.088 279.185 c
-435.978 279.292 435.816 279.347 435.604 279.347 c
-435.405 279.347 435.243 279.288 435.118 279.17 c
-435.001 279.053 434.941 278.906 434.941 278.729 c
-434.295 278.729 l
-434.295 278.924 434.353 279.116 434.471 279.303 c
-434.596 279.486 434.758 279.633 434.956 279.744 c
-435.162 279.85 435.39 279.905 435.647 279.905 c
-436.048 279.905 436.353 279.802 436.559 279.596 c
-436.772 279.391 436.886 279.097 436.897 278.715 c
-436.897 276.701 l
-436.897 276.396 436.934 276.132 437.015 275.907 c
-437.015 275.848 l
-h
-435.471 276.363 m
-435.637 276.363 435.787 276.407 435.926 276.495 c
-436.074 276.583 436.18 276.693 436.25 276.833 c
-436.25 277.774 l
-435.882 277.774 l
-435.567 277.774 435.324 277.705 435.147 277.568 c
-434.971 277.439 434.883 277.252 434.883 277.009 c
-434.883 276.782 434.927 276.616 435.016 276.51 c
-435.103 276.411 435.254 276.363 435.471 276.363 c
-437.764 278.023 m
-437.764 278.63 437.875 279.097 438.102 279.42 c
-438.337 279.744 438.664 279.905 439.087 279.905 c
-439.469 279.905 439.766 279.747 439.984 279.435 c
-439.984 281.493 l
-440.63 281.493 l
-440.63 275.848 l
-440.042 275.848 l
-439.998 276.275 l
-439.793 275.941 439.487 275.775 439.087 275.775 c
-438.675 275.775 438.352 275.929 438.116 276.245 c
-437.881 276.569 437.764 277.024 437.764 277.612 c
-h
-438.411 277.642 m
-438.411 277.2 438.473 276.87 438.602 276.657 c
-438.738 276.452 438.958 276.348 439.263 276.348 c
-439.587 276.348 439.826 276.51 439.984 276.833 c
-439.984 278.847 l
-439.814 279.159 439.575 279.317 439.263 279.317 c
-438.958 279.317 438.738 279.214 438.602 279.008 c
-438.473 278.803 438.411 278.48 438.411 278.039 c
-h
-443.217 278.023 m
-443.217 278.601 443.353 279.056 443.629 279.391 c
-443.912 279.733 444.283 279.905 444.746 279.905 c
-445.206 279.905 445.573 279.737 445.848 279.405 c
-446.131 279.082 446.278 278.634 446.29 278.068 c
-446.29 277.642 l
-446.29 277.072 446.147 276.616 445.863 276.275 c
-445.588 275.941 445.22 275.775 444.761 275.775 c
-444.298 275.775 443.926 275.937 443.643 276.26 c
-443.368 276.591 443.225 277.032 443.217 277.583 c
-h
-443.864 277.642 m
-443.864 277.238 443.941 276.922 444.099 276.687 c
-444.265 276.452 444.485 276.334 444.761 276.334 c
-445.326 276.334 445.621 276.745 445.642 277.568 c
-445.642 278.023 l
-445.642 278.424 445.559 278.744 445.393 278.979 c
-445.235 279.222 445.018 279.347 444.746 279.347 c
-444.481 279.347 444.265 279.222 444.099 278.979 c
-443.941 278.744 443.864 278.424 443.864 278.023 c
-h
-447.421 275.848 m
-447.421 279.303 l
-446.893 279.303 l
-446.893 279.832 l
-447.421 279.832 l
-447.421 280.288 l
-447.421 280.688 447.517 281.001 447.716 281.229 c
-447.921 281.452 448.2 281.566 448.553 281.566 c
-448.689 281.566 448.821 281.545 448.95 281.508 c
-448.921 280.963 l
-448.821 280.982 448.722 280.993 448.626 280.993 c
-448.252 280.993 448.068 280.728 448.068 280.199 c
-448.068 279.832 l
-448.744 279.832 l
-448.744 279.303 l
-448.068 279.303 l
-448.068 275.848 l
-h
-451.522 275.848 m
-451.522 279.303 l
-450.993 279.303 l
-450.993 279.832 l
-451.522 279.832 l
-451.522 280.288 l
-451.522 280.688 451.618 281.001 451.816 281.229 c
-452.022 281.452 452.302 281.566 452.655 281.566 c
-452.79 281.566 452.923 281.545 453.051 281.508 c
-453.021 280.963 l
-452.923 280.982 452.823 280.993 452.728 280.993 c
-452.353 280.993 452.169 280.728 452.169 280.199 c
-452.169 279.832 l
-452.846 279.832 l
-452.846 279.303 l
-452.169 279.303 l
-452.169 275.848 l
-h
-455.638 276.201 m
-455.421 275.914 455.109 275.775 454.697 275.775 c
-454.334 275.775 454.058 275.896 453.874 276.142 c
-453.698 276.396 453.602 276.76 453.595 277.23 c
-453.595 279.832 l
-454.242 279.832 l
-454.242 277.289 l
-454.242 276.66 454.425 276.348 454.8 276.348 c
-455.201 276.348 455.477 276.525 455.624 276.878 c
-455.624 279.832 l
-456.27 279.832 l
-456.27 275.848 l
-455.653 275.848 l
-h
-457.96 275.848 -0.646 5.644 re
-459.68 275.848 -0.646 5.644 re
-462.591 275.848 m
-462.591 279.303 l
-462.076 279.303 l
-462.076 279.832 l
-462.591 279.832 l
-462.591 280.199 l
-462.598 280.629 462.712 280.963 462.928 281.198 c
-463.153 281.441 463.466 281.566 463.869 281.566 c
-464.017 281.566 464.156 281.545 464.296 281.508 c
-464.443 281.468 464.594 281.412 464.752 281.346 c
-464.634 280.772 l
-464.399 280.897 464.156 280.963 463.913 280.963 c
-463.668 280.963 463.495 280.894 463.399 280.758 c
-463.3 280.629 463.252 280.435 463.252 280.17 c
-463.252 279.832 l
-463.899 279.832 l
-463.899 279.303 l
-463.252 279.303 l
-463.252 275.848 l
-h
-465.06 275.848 -0.646 3.983 re
-466.809 275.848 -0.646 5.644 re
-469.249 275.775 m
-468.75 275.775 468.368 275.922 468.102 276.216 c
-467.838 276.51 467.706 276.944 467.706 277.524 c
-467.706 277.994 l
-467.706 278.59 467.831 279.056 468.088 279.391 c
-468.353 279.733 468.713 279.905 469.176 279.905 c
-469.635 279.905 469.977 279.751 470.205 279.45 c
-470.44 279.156 470.562 278.692 470.572 278.068 c
-470.572 277.642 l
-468.353 277.642 l
-468.353 277.553 l
-468.353 277.12 468.43 276.807 468.588 276.612 c
-468.753 276.425 468.985 276.334 469.278 276.334 c
-469.473 276.334 469.646 276.367 469.793 276.436 c
-469.941 276.514 470.076 276.631 470.205 276.789 c
-470.543 276.377 l
-470.256 275.974 469.826 275.775 469.249 275.775 c
-469.176 279.347 m
-468.9 279.347 468.698 279.251 468.573 279.068 c
-468.445 278.88 468.371 278.59 468.353 278.2 c
-469.926 278.2 l
-469.926 278.289 l
-469.904 278.671 469.837 278.939 469.72 279.097 c
-469.602 279.262 469.419 279.347 469.176 279.347 c
-475.952 277.642 m
-475.952 277.013 475.834 276.543 475.599 276.23 c
-475.372 275.926 475.055 275.775 474.644 275.775 c
-474.24 275.775 473.931 275.926 473.718 276.23 c
-473.718 274.32 l
-473.071 274.32 l
-473.071 279.832 l
-473.659 279.832 l
-473.704 279.391 l
-473.916 279.733 474.225 279.905 474.629 279.905 c
-475.07 279.905 475.397 279.751 475.614 279.45 c
-475.827 279.145 475.941 278.689 475.952 278.083 c
-h
-475.306 278.023 m
-475.306 278.465 475.235 278.788 475.1 278.994 c
-474.96 279.207 474.739 279.317 474.438 279.317 c
-474.122 279.317 473.883 279.163 473.718 278.862 c
-473.718 276.789 l
-473.883 276.484 474.122 276.334 474.438 276.334 c
-474.732 276.334 474.945 276.436 475.085 276.642 c
-475.221 276.855 475.294 277.186 475.306 277.627 c
-h
-478.833 275.848 m
-478.793 275.937 478.767 276.084 478.76 276.29 c
-478.525 275.944 478.23 275.775 477.878 275.775 c
-477.514 275.775 477.231 275.87 477.025 276.069 c
-476.827 276.275 476.731 276.562 476.731 276.936 c
-476.731 277.337 476.867 277.657 477.143 277.892 c
-477.415 278.134 477.789 278.259 478.26 278.259 c
-478.745 278.259 l
-478.745 278.686 l
-478.745 278.921 478.69 279.086 478.583 279.185 c
-478.473 279.292 478.311 279.347 478.098 279.347 c
-477.9 279.347 477.738 279.288 477.613 279.17 c
-477.496 279.053 477.436 278.906 477.436 278.729 c
-476.79 278.729 l
-476.79 278.924 476.849 279.116 476.966 279.303 c
-477.091 279.486 477.253 279.633 477.452 279.744 c
-477.658 279.85 477.885 279.905 478.142 279.905 c
-478.543 279.905 478.848 279.802 479.054 279.596 c
-479.267 279.391 479.381 279.097 479.391 278.715 c
-479.391 276.701 l
-479.391 276.396 479.428 276.132 479.509 275.907 c
-479.509 275.848 l
-h
-477.966 276.363 m
-478.132 276.363 478.282 276.407 478.421 276.495 c
-478.568 276.583 478.675 276.693 478.745 276.833 c
-478.745 277.774 l
-478.377 277.774 l
-478.061 277.774 477.819 277.705 477.642 277.568 c
-477.467 277.439 477.378 277.252 477.378 277.009 c
-477.378 276.782 477.422 276.616 477.51 276.51 c
-477.598 276.411 477.749 276.363 477.966 276.363 c
-481.244 280.787 m
-481.244 279.832 l
-481.847 279.832 l
-481.847 279.303 l
-481.244 279.303 l
-481.244 276.833 l
-481.244 276.675 481.266 276.558 481.317 276.481 c
-481.376 276.4 481.465 276.363 481.582 276.363 c
-481.67 276.363 481.758 276.377 481.847 276.407 c
-481.847 275.848 l
-481.7 275.801 481.545 275.775 481.39 275.775 c
-481.134 275.775 480.939 275.866 480.802 276.055 c
-480.663 276.238 480.597 276.499 480.597 276.833 c
-480.597 279.303 l
-479.994 279.303 l
-479.994 279.832 l
-480.597 279.832 l
-480.597 280.787 l
-h
-483.258 279.42 m
-483.511 279.744 483.831 279.905 484.213 279.905 c
-484.918 279.905 485.275 279.435 485.286 278.494 c
-485.286 275.848 l
-484.64 275.848 l
-484.64 278.465 l
-484.64 278.777 484.584 278.998 484.478 279.126 c
-484.367 279.251 484.213 279.317 484.008 279.317 c
-483.849 279.317 483.702 279.262 483.566 279.156 c
-483.437 279.045 483.335 278.91 483.258 278.744 c
-483.258 275.848 l
-482.611 275.848 l
-482.611 281.493 l
-483.258 281.493 l
-h
-486.256 274.775 m
-485.859 275.04 l
-486.094 275.363 486.215 275.698 486.227 276.039 c
-486.227 276.657 l
-486.888 276.657 l
-486.888 276.128 l
-486.888 275.87 486.822 275.625 486.697 275.378 c
-486.579 275.135 486.433 274.933 486.256 274.775 c
-490.298 280.787 m
-490.298 279.832 l
-490.901 279.832 l
-490.901 279.303 l
-490.298 279.303 l
-490.298 276.833 l
-490.298 276.675 490.321 276.558 490.372 276.481 c
-490.431 276.4 490.519 276.363 490.637 276.363 c
-490.724 276.363 490.813 276.377 490.901 276.407 c
-490.901 275.848 l
-490.755 275.801 490.6 275.775 490.445 275.775 c
-490.188 275.775 489.993 275.866 489.857 276.055 c
-489.718 276.238 489.652 276.499 489.652 276.833 c
-489.652 279.303 l
-489.049 279.303 l
-489.049 279.832 l
-489.652 279.832 l
-489.652 280.787 l
-h
-491.46 278.023 m
-491.46 278.601 491.596 279.056 491.871 279.391 c
-492.154 279.733 492.525 279.905 492.989 279.905 c
-493.448 279.905 493.815 279.737 494.09 279.405 c
-494.374 279.082 494.52 278.634 494.532 278.068 c
-494.532 277.642 l
-494.532 277.072 494.389 276.616 494.105 276.275 c
-493.83 275.941 493.462 275.775 493.003 275.775 c
-492.54 275.775 492.168 275.937 491.886 276.26 c
-491.611 276.591 491.467 277.032 491.46 277.583 c
-h
-492.106 277.642 m
-492.106 277.238 492.183 276.922 492.342 276.687 c
-492.507 276.452 492.727 276.334 493.003 276.334 c
-493.569 276.334 493.863 276.745 493.885 277.568 c
-493.885 278.023 l
-493.885 278.424 493.801 278.744 493.635 278.979 c
-493.477 279.222 493.261 279.347 492.989 279.347 c
-492.723 279.347 492.507 279.222 492.342 278.979 c
-492.183 278.744 492.106 278.424 492.106 278.023 c
-h
-499.133 275.848 m
-499.092 275.937 499.067 276.084 499.059 276.29 c
-498.824 275.944 498.53 275.775 498.177 275.775 c
-497.813 275.775 497.531 275.87 497.325 276.069 c
-497.126 276.275 497.03 276.562 497.03 276.936 c
-497.03 277.337 497.167 277.657 497.442 277.892 c
-497.714 278.134 498.089 278.259 498.559 278.259 c
-499.044 278.259 l
-499.044 278.686 l
-499.044 278.921 498.989 279.086 498.883 279.185 c
-498.772 279.292 498.611 279.347 498.398 279.347 c
-498.2 279.347 498.038 279.288 497.913 279.17 c
-497.795 279.053 497.736 278.906 497.736 278.729 c
-497.089 278.729 l
-497.089 278.924 497.148 279.116 497.265 279.303 c
-497.391 279.486 497.552 279.633 497.751 279.744 c
-497.957 279.85 498.184 279.905 498.441 279.905 c
-498.842 279.905 499.147 279.802 499.353 279.596 c
-499.566 279.391 499.68 279.097 499.692 278.715 c
-499.692 276.701 l
-499.692 276.396 499.728 276.132 499.809 275.907 c
-499.809 275.848 l
-h
-498.265 276.363 m
-498.431 276.363 498.581 276.407 498.721 276.495 c
-498.868 276.583 498.975 276.693 499.044 276.833 c
-499.044 277.774 l
-498.676 277.774 l
-498.361 277.774 498.119 277.705 497.942 277.568 c
-497.766 277.439 497.677 277.252 497.677 277.009 c
-497.677 276.782 497.722 276.616 497.81 276.51 c
-497.898 276.411 498.048 276.363 498.265 276.363 c
-500.558 278.023 m
-500.558 278.63 500.669 279.097 500.897 279.42 c
-501.132 279.744 501.458 279.905 501.882 279.905 c
-502.264 279.905 502.561 279.747 502.778 279.435 c
-502.778 281.493 l
-503.424 281.493 l
-503.424 275.848 l
-502.836 275.848 l
-502.792 276.275 l
-502.587 275.941 502.281 275.775 501.882 275.775 c
-501.47 275.775 501.146 275.929 500.911 276.245 c
-500.676 276.569 500.558 277.024 500.558 277.612 c
-h
-501.205 277.642 m
-501.205 277.2 501.267 276.87 501.396 276.657 c
-501.533 276.452 501.753 276.348 502.057 276.348 c
-502.381 276.348 502.62 276.51 502.778 276.833 c
-502.778 278.847 l
-502.609 279.159 502.37 279.317 502.057 279.317 c
-501.753 279.317 501.533 279.214 501.396 279.008 c
-501.267 278.803 501.205 278.48 501.205 278.039 c
-h
-504.292 278.023 m
-504.292 278.63 504.402 279.097 504.63 279.42 c
-504.866 279.744 505.192 279.905 505.614 279.905 c
-505.997 279.905 506.295 279.747 506.512 279.435 c
-506.512 281.493 l
-507.158 281.493 l
-507.158 275.848 l
-506.57 275.848 l
-506.526 276.275 l
-506.32 275.941 506.015 275.775 505.614 275.775 c
-505.203 275.775 504.88 275.929 504.645 276.245 c
-504.409 276.569 504.292 277.024 504.292 277.612 c
-h
-504.939 277.642 m
-504.939 277.2 505.001 276.87 505.13 276.657 c
-505.265 276.452 505.487 276.348 505.791 276.348 c
-506.115 276.348 506.354 276.51 506.512 276.833 c
-506.512 278.847 l
-506.343 279.159 506.104 279.317 505.791 279.317 c
-505.487 279.317 505.265 279.214 505.13 279.008 c
-505.001 278.803 504.939 278.48 504.939 278.039 c
-h
-511.921 275.848 m
-511.881 275.937 511.854 276.084 511.847 276.29 c
-511.612 275.944 511.318 275.775 510.965 275.775 c
-510.601 275.775 510.318 275.87 510.113 276.069 c
-509.915 276.275 509.819 276.562 509.819 276.936 c
-509.819 277.337 509.955 277.657 510.231 277.892 c
-510.503 278.134 510.877 278.259 511.347 278.259 c
-511.833 278.259 l
-511.833 278.686 l
-511.833 278.921 511.777 279.086 511.671 279.185 c
-511.561 279.292 511.399 279.347 511.185 279.347 c
-510.987 279.347 510.826 279.288 510.701 279.17 c
-510.583 279.053 510.524 278.906 510.524 278.729 c
-509.878 278.729 l
-509.878 278.924 509.936 279.116 510.054 279.303 c
-510.179 279.486 510.341 279.633 510.539 279.744 c
-510.745 279.85 510.973 279.905 511.23 279.905 c
-511.63 279.905 511.935 279.802 512.141 279.596 c
-512.354 279.391 512.469 279.097 512.479 278.715 c
-512.479 276.701 l
-512.479 276.396 512.516 276.132 512.597 275.907 c
-512.597 275.848 l
-h
-511.054 276.363 m
-511.218 276.363 511.37 276.407 511.509 276.495 c
-511.656 276.583 511.763 276.693 511.833 276.833 c
-511.833 277.774 l
-511.465 277.774 l
-511.149 277.774 510.906 277.705 510.73 277.568 c
-510.553 277.439 510.466 277.252 510.466 277.009 c
-510.466 276.782 510.51 276.616 510.598 276.51 c
-510.686 276.411 510.836 276.363 511.054 276.363 c
-514.185 275.848 -0.647 5.644 re
-515.904 275.848 -0.647 5.644 re
-f
-q 1 0 0 1 339.0603 266.9265 cm
-0 0 m
-0.213 0 0.386 0.062 0.514 0.191 c
-0.65 0.326 0.723 0.517 0.735 0.764 c
-1.352 0.764 l
-1.33 0.382 1.194 0.062 0.941 -0.192 c
-0.683 -0.437 0.371 -0.559 0 -0.559 c
--0.493 -0.559 -0.867 -0.408 -1.133 -0.103 c
--1.389 0.209 -1.515 0.675 -1.515 1.294 c
--1.515 1.734 l
--1.515 2.329 -1.389 2.786 -1.133 3.101 c
--0.867 3.413 -0.493 3.571 0 3.571 c
-0.4 3.571 0.72 3.439 0.955 3.175 c
-1.198 2.917 1.33 2.572 1.352 2.131 c
-0.735 2.131 l
-0.712 2.425 0.639 2.645 0.514 2.792 c
-0.396 2.94 0.224 3.013 0 3.013 c
--0.294 3.013 -0.511 2.913 -0.647 2.719 c
--0.786 2.532 -0.86 2.223 -0.867 1.793 c
--0.867 1.278 l
--0.867 0.808 -0.801 0.473 -0.662 0.278 c
--0.515 0.091 -0.294 0 0 0 c
-2.748 3.087 m
-3.002 3.41 3.322 3.571 3.704 3.571 c
-4.409 3.571 4.766 3.101 4.777 2.16 c
-4.777 -0.485 l
-4.13 -0.485 l
-4.13 2.131 l
-4.13 2.443 4.075 2.664 3.968 2.792 c
-3.858 2.917 3.704 2.983 3.498 2.983 c
-3.34 2.983 3.193 2.929 3.057 2.822 c
-2.929 2.711 2.825 2.576 2.748 2.41 c
-2.748 -0.485 l
-2.102 -0.485 l
-2.102 5.159 l
-2.748 5.159 l
-h
-7.775 -0.485 m
-7.735 -0.397 7.709 -0.25 7.702 -0.044 c
-7.467 -0.389 7.173 -0.559 6.82 -0.559 c
-6.456 -0.559 6.173 -0.464 5.967 -0.265 c
-5.769 -0.059 5.674 0.228 5.674 0.602 c
-5.674 1.003 5.809 1.323 6.085 1.558 c
-6.357 1.801 6.732 1.925 7.202 1.925 c
-7.687 1.925 l
-7.687 2.352 l
-7.687 2.587 7.632 2.752 7.526 2.851 c
-7.415 2.958 7.253 3.013 7.04 3.013 c
-6.842 3.013 6.68 2.954 6.555 2.836 c
-6.437 2.719 6.379 2.572 6.379 2.395 c
-5.732 2.395 l
-5.732 2.59 5.791 2.782 5.909 2.969 c
-6.034 3.152 6.196 3.299 6.393 3.41 c
-6.599 3.517 6.827 3.571 7.085 3.571 c
-7.485 3.571 7.79 3.469 7.996 3.262 c
-8.209 3.057 8.323 2.763 8.334 2.381 c
-8.334 0.367 l
-8.334 0.062 8.371 -0.202 8.452 -0.427 c
-8.452 -0.485 l
-h
-6.908 0.029 m
-7.073 0.029 7.224 0.073 7.364 0.161 c
-7.511 0.249 7.617 0.359 7.687 0.5 c
-7.687 1.44 l
-7.32 1.44 l
-7.004 1.44 6.761 1.371 6.585 1.234 c
-6.408 1.105 6.32 0.918 6.32 0.675 c
-6.32 0.448 6.364 0.282 6.453 0.176 c
-6.541 0.077 6.691 0.029 6.908 0.029 c
-9.951 3.498 m
-9.965 3.057 l
-10.219 3.399 10.543 3.571 10.936 3.571 c
-11.642 3.571 11.997 3.101 12.009 2.16 c
-12.009 -0.485 l
-11.362 -0.485 l
-11.362 2.131 l
-11.362 2.443 11.307 2.664 11.2 2.792 c
-11.09 2.917 10.936 2.983 10.73 2.983 c
-10.572 2.983 10.425 2.929 10.289 2.822 c
-10.16 2.711 10.057 2.576 9.98 2.41 c
-9.98 -0.485 l
-9.333 -0.485 l
-9.333 3.498 l
-h
-12.847 1.69 m
-12.847 2.308 12.957 2.77 13.184 3.087 c
-13.408 3.41 13.743 3.571 14.184 3.571 c
-14.584 3.571 14.89 3.395 15.095 3.042 c
-15.139 3.498 l
-15.727 3.498 l
-15.727 -0.53 l
-15.727 -1.018 15.599 -1.397 15.345 -1.661 c
-15.089 -1.926 14.736 -2.058 14.287 -2.058 c
-14.089 -2.058 13.868 -2.007 13.626 -1.912 c
-13.379 -1.812 13.2 -1.69 13.082 -1.544 c
-13.346 -1.103 l
-13.611 -1.368 13.909 -1.5 14.243 -1.5 c
-14.779 -1.5 15.055 -1.206 15.066 -0.618 c
-15.066 -0.088 l
-14.86 -0.405 14.559 -0.559 14.169 -0.559 c
-13.758 -0.559 13.435 -0.408 13.2 -0.103 c
-12.972 0.209 12.854 0.661 12.847 1.249 c
-h
-13.508 1.308 m
-13.508 0.866 13.57 0.536 13.699 0.323 c
-13.824 0.118 14.041 0.014 14.346 0.014 c
-14.669 0.014 14.908 0.18 15.066 0.514 c
-15.066 2.499 l
-14.898 2.822 14.659 2.983 14.346 2.983 c
-14.052 2.983 13.835 2.881 13.699 2.675 c
-13.57 2.469 13.508 2.146 13.508 1.705 c
-h
-18.109 -0.559 m
-17.609 -0.559 17.227 -0.412 16.962 -0.118 c
-16.698 0.176 16.565 0.61 16.565 1.19 c
-16.565 1.66 l
-16.565 2.256 16.691 2.723 16.947 3.057 c
-17.212 3.399 17.572 3.571 18.035 3.571 c
-18.495 3.571 18.836 3.417 19.064 3.116 c
-19.299 2.822 19.421 2.358 19.432 1.734 c
-19.432 1.308 l
-17.212 1.308 l
-17.212 1.219 l
-17.212 0.786 17.289 0.473 17.447 0.278 c
-17.613 0.091 17.844 0 18.138 0 c
-18.333 0 18.505 0.033 18.653 0.103 c
-18.8 0.18 18.935 0.297 19.064 0.455 c
-19.403 0.043 l
-19.116 -0.36 18.686 -0.559 18.109 -0.559 c
-18.035 3.013 m
-17.759 3.013 17.558 2.917 17.433 2.734 c
-17.304 2.547 17.231 2.256 17.212 1.866 c
-18.785 1.866 l
-18.785 1.955 l
-18.763 2.337 18.697 2.605 18.58 2.763 c
-18.462 2.929 18.278 3.013 18.035 3.013 c
-22.151 0.529 m
-22.151 0.675 22.096 0.797 21.99 0.897 c
-21.879 0.992 21.674 1.109 21.372 1.249 c
-21.026 1.396 20.784 1.517 20.637 1.616 c
-20.49 1.723 20.38 1.841 20.313 1.969 c
-20.244 2.094 20.211 2.252 20.211 2.439 c
-20.211 2.763 20.328 3.031 20.564 3.248 c
-20.799 3.461 21.1 3.571 21.475 3.571 c
-21.857 3.571 22.166 3.457 22.401 3.233 c
-22.636 3.006 22.754 2.719 22.754 2.366 c
-22.107 2.366 l
-22.107 2.543 22.048 2.693 21.931 2.822 c
-21.813 2.946 21.659 3.013 21.475 3.013 c
-21.277 3.013 21.126 2.958 21.019 2.851 c
-20.909 2.752 20.857 2.62 20.857 2.454 c
-20.857 2.326 20.894 2.219 20.975 2.131 c
-21.052 2.05 21.244 1.947 21.549 1.822 c
-22.026 1.635 22.357 1.448 22.534 1.263 c
-22.709 1.087 22.798 0.86 22.798 0.588 c
-22.798 0.235 22.673 -0.044 22.43 -0.25 c
-22.195 -0.456 21.879 -0.559 21.489 -0.559 c
-21.067 -0.559 20.729 -0.441 20.475 -0.206 c
-20.218 0.037 20.093 0.341 20.093 0.706 c
-20.74 0.706 l
-20.747 0.477 20.817 0.301 20.946 0.176 c
-21.071 0.058 21.254 0 21.489 0 c
-21.703 0 21.865 0.047 21.975 0.147 c
-22.092 0.242 22.151 0.371 22.151 0.529 c
-25.532 -0.485 m
-25.532 2.969 l
-25.017 2.969 l
-25.017 3.498 l
-25.532 3.498 l
-25.532 3.866 l
-25.539 4.295 25.653 4.629 25.87 4.865 c
-26.094 5.107 26.407 5.232 26.811 5.232 c
-26.958 5.232 27.097 5.211 27.237 5.174 c
-27.384 5.134 27.535 5.078 27.693 5.012 c
-27.575 4.438 l
-27.34 4.564 27.097 4.629 26.854 4.629 c
-26.609 4.629 26.436 4.56 26.341 4.424 c
-26.241 4.295 26.193 4.101 26.193 3.836 c
-26.193 3.498 l
-26.84 3.498 l
-26.84 2.969 l
-26.193 2.969 l
-26.193 -0.485 l
-h
-28.001 -0.485 -0.646 3.983 re
-29.751 -0.485 -0.647 5.644 re
-32.19 -0.559 m
-31.691 -0.559 31.309 -0.412 31.044 -0.118 c
-30.779 0.176 30.647 0.61 30.647 1.19 c
-30.647 1.66 l
-30.647 2.256 30.772 2.723 31.029 3.057 c
-31.294 3.399 31.654 3.571 32.117 3.571 c
-32.576 3.571 32.918 3.417 33.146 3.116 c
-33.381 2.822 33.503 2.358 33.514 1.734 c
-33.514 1.308 l
-31.294 1.308 l
-31.294 1.219 l
-31.294 0.786 31.371 0.473 31.529 0.278 c
-31.694 0.091 31.926 0 32.22 0 c
-32.415 0 32.587 0.033 32.734 0.103 c
-32.882 0.18 33.017 0.297 33.146 0.455 c
-33.484 0.043 l
-33.198 -0.36 32.768 -0.559 32.19 -0.559 c
-32.117 3.013 m
-31.841 3.013 31.639 2.917 31.515 2.734 c
-31.386 2.547 31.313 2.256 31.294 1.866 c
-32.867 1.866 l
-32.867 1.955 l
-32.845 2.337 32.778 2.605 32.661 2.763 c
-32.543 2.929 32.36 3.013 32.117 3.013 c
-36.233 0.529 m
-36.233 0.675 36.178 0.797 36.071 0.897 c
-35.961 0.992 35.755 1.109 35.454 1.249 c
-35.108 1.396 34.866 1.517 34.719 1.616 c
-34.572 1.723 34.461 1.841 34.395 1.969 c
-34.326 2.094 34.293 2.252 34.293 2.439 c
-34.293 2.763 34.41 3.031 34.646 3.248 c
-34.881 3.461 35.182 3.571 35.556 3.571 c
-35.939 3.571 36.248 3.457 36.483 3.233 c
-36.718 3.006 36.836 2.719 36.836 2.366 c
-36.188 2.366 l
-36.188 2.543 36.13 2.693 36.012 2.822 c
-35.895 2.946 35.741 3.013 35.556 3.013 c
-35.359 3.013 35.207 2.958 35.101 2.851 c
-34.991 2.752 34.939 2.62 34.939 2.454 c
-34.939 2.326 34.976 2.219 35.057 2.131 c
-35.134 2.05 35.325 1.947 35.631 1.822 c
-36.107 1.635 36.439 1.448 36.615 1.263 c
-36.791 1.087 36.88 0.86 36.88 0.588 c
-36.88 0.235 36.755 -0.044 36.512 -0.25 c
-36.277 -0.456 35.961 -0.559 35.571 -0.559 c
-35.149 -0.559 34.81 -0.441 34.557 -0.206 c
-34.299 0.037 34.175 0.341 34.175 0.706 c
-34.822 0.706 l
-34.829 0.477 34.899 0.301 35.027 0.176 c
-35.153 0.058 35.336 0 35.571 0 c
-35.785 0 35.946 0.047 36.057 0.147 c
-36.174 0.242 36.233 0.371 36.233 0.529 c
-39.731 -0.485 m
-39.731 2.969 l
-39.202 2.969 l
-39.202 3.498 l
-39.731 3.498 l
-39.731 3.954 l
-39.731 4.354 39.827 4.667 40.025 4.895 c
-40.231 5.119 40.51 5.232 40.863 5.232 c
-40.999 5.232 41.131 5.211 41.26 5.174 c
-41.231 4.629 l
-41.131 4.648 41.032 4.659 40.936 4.659 c
-40.562 4.659 40.378 4.394 40.378 3.866 c
-40.378 3.498 l
-41.054 3.498 l
-41.054 2.969 l
-40.378 2.969 l
-40.378 -0.485 l
-h
-43.465 2.881 m
-43.377 2.899 43.277 2.91 43.171 2.91 c
-42.837 2.91 42.601 2.726 42.465 2.366 c
-42.465 -0.485 l
-41.819 -0.485 l
-41.819 3.498 l
-42.451 3.498 l
-42.465 3.087 l
-42.642 3.41 42.885 3.571 43.2 3.571 c
-43.307 3.571 43.394 3.549 43.465 3.513 c
-h
-43.905 1.69 m
-43.905 2.267 44.042 2.723 44.317 3.057 c
-44.6 3.399 44.971 3.571 45.434 3.571 c
-45.894 3.571 46.261 3.403 46.537 3.072 c
-46.82 2.748 46.966 2.3 46.978 1.734 c
-46.978 1.308 l
-46.978 0.738 46.835 0.282 46.552 -0.059 c
-46.276 -0.393 45.908 -0.559 45.449 -0.559 c
-44.986 -0.559 44.615 -0.397 44.332 -0.074 c
-44.057 0.257 43.913 0.698 43.905 1.249 c
-h
-44.552 1.308 m
-44.552 0.904 44.63 0.588 44.788 0.353 c
-44.953 0.118 45.173 0 45.449 0 c
-46.015 0 46.309 0.411 46.331 1.234 c
-46.331 1.69 l
-46.331 2.09 46.247 2.41 46.081 2.645 c
-45.923 2.888 45.707 3.013 45.434 3.013 c
-45.17 3.013 44.953 2.888 44.788 2.645 c
-44.63 2.41 44.552 2.09 44.552 1.69 c
-h
-48.433 3.498 m
-48.448 3.131 l
-48.69 3.424 49.01 3.571 49.403 3.571 c
-49.844 3.571 50.153 3.374 50.33 2.983 c
-50.583 3.374 50.932 3.571 51.373 3.571 c
-52.108 3.571 52.483 3.108 52.505 2.19 c
-52.505 -0.485 l
-51.858 -0.485 l
-51.858 2.131 l
-51.858 2.425 51.803 2.638 51.696 2.778 c
-51.597 2.913 51.425 2.983 51.182 2.983 c
-50.983 2.983 50.822 2.903 50.696 2.748 c
-50.579 2.601 50.509 2.41 50.49 2.175 c
-50.49 -0.485 l
-49.829 -0.485 l
-49.829 2.16 l
-49.829 2.707 49.609 2.983 49.168 2.983 c
-48.834 2.983 48.599 2.822 48.462 2.499 c
-48.462 -0.485 l
-47.816 -0.485 l
-47.816 3.498 l
-h
-56.576 0 m
-56.79 0 56.962 0.062 57.091 0.191 c
-57.227 0.326 57.3 0.517 57.311 0.764 c
-57.929 0.764 l
-57.906 0.382 57.771 0.062 57.517 -0.192 c
-57.26 -0.437 56.948 -0.559 56.576 -0.559 c
-56.084 -0.559 55.709 -0.408 55.444 -0.103 c
-55.188 0.209 55.062 0.675 55.062 1.294 c
-55.062 1.734 l
-55.062 2.329 55.188 2.786 55.444 3.101 c
-55.709 3.413 56.084 3.571 56.576 3.571 c
-56.977 3.571 57.297 3.439 57.532 3.175 c
-57.775 2.917 57.906 2.572 57.929 2.131 c
-57.311 2.131 l
-57.289 2.425 57.216 2.645 57.091 2.792 c
-56.973 2.94 56.8 3.013 56.576 3.013 c
-56.283 3.013 56.065 2.913 55.93 2.719 c
-55.79 2.532 55.716 2.223 55.709 1.793 c
-55.709 1.278 l
-55.709 0.808 55.776 0.473 55.915 0.278 c
-56.061 0.091 56.283 0 56.576 0 c
-60.707 -0.133 m
-60.49 -0.42 60.177 -0.559 59.766 -0.559 c
-59.402 -0.559 59.126 -0.437 58.943 -0.192 c
-58.766 0.062 58.671 0.426 58.664 0.897 c
-58.664 3.498 l
-59.31 3.498 l
-59.31 0.955 l
-59.31 0.326 59.494 0.014 59.869 0.014 c
-60.269 0.014 60.545 0.191 60.692 0.544 c
-60.692 3.498 l
-61.339 3.498 l
-61.339 -0.485 l
-60.721 -0.485 l
-h
-63.97 2.881 m
-63.882 2.899 63.782 2.91 63.676 2.91 c
-63.342 2.91 63.107 2.726 62.97 2.366 c
-62.97 -0.485 l
-62.324 -0.485 l
-62.324 3.498 l
-62.955 3.498 l
-62.97 3.087 l
-63.147 3.41 63.389 3.571 63.705 3.571 c
-63.812 3.571 63.9 3.549 63.97 3.513 c
-h
-66.263 2.881 m
-66.174 2.899 66.076 2.91 65.969 2.91 c
-65.634 2.91 65.399 2.726 65.264 2.366 c
-65.264 -0.485 l
-64.617 -0.485 l
-64.617 3.498 l
-65.249 3.498 l
-65.264 3.087 l
-65.44 3.41 65.682 3.571 65.999 3.571 c
-66.105 3.571 66.193 3.549 66.263 3.513 c
-h
-68.262 -0.559 m
-67.762 -0.559 67.38 -0.412 67.115 -0.118 c
-66.851 0.176 66.718 0.61 66.718 1.19 c
-66.718 1.66 l
-66.718 2.256 66.843 2.723 67.101 3.057 c
-67.365 3.399 67.726 3.571 68.189 3.571 c
-68.648 3.571 68.99 3.417 69.218 3.116 c
-69.453 2.822 69.574 2.358 69.585 1.734 c
-69.585 1.308 l
-67.365 1.308 l
-67.365 1.219 l
-67.365 0.786 67.443 0.473 67.601 0.278 c
-67.766 0.091 67.998 0 68.291 0 c
-68.486 0 68.659 0.033 68.806 0.103 c
-68.952 0.18 69.089 0.297 69.218 0.455 c
-69.555 0.043 l
-69.269 -0.36 68.839 -0.559 68.262 -0.559 c
-68.189 3.013 m
-67.913 3.013 67.711 2.917 67.586 2.734 c
-67.458 2.547 67.383 2.256 67.365 1.866 c
-68.938 1.866 l
-68.938 1.955 l
-68.916 2.337 68.85 2.605 68.732 2.763 c
-68.615 2.929 68.431 3.013 68.189 3.013 c
-70.982 3.498 m
-70.996 3.057 l
-71.25 3.399 71.573 3.571 71.967 3.571 c
-72.672 3.571 73.028 3.101 73.039 2.16 c
-73.039 -0.485 l
-72.393 -0.485 l
-72.393 2.131 l
-72.393 2.443 72.337 2.664 72.231 2.792 c
-72.121 2.917 71.967 2.983 71.761 2.983 c
-71.603 2.983 71.456 2.929 71.319 2.822 c
-71.19 2.711 71.088 2.576 71.011 2.41 c
-71.011 -0.485 l
-70.364 -0.485 l
-70.364 3.498 l
-h
-74.862 4.453 m
-74.862 3.498 l
-75.464 3.498 l
-75.464 2.969 l
-74.862 2.969 l
-74.862 0.5 l
-74.862 0.341 74.884 0.224 74.936 0.147 c
-74.994 0.066 75.082 0.029 75.2 0.029 c
-75.288 0.029 75.377 0.043 75.464 0.073 c
-75.464 -0.485 l
-75.318 -0.533 75.163 -0.559 75.009 -0.559 c
-74.751 -0.559 74.556 -0.468 74.421 -0.279 c
-74.281 -0.096 74.215 0.165 74.215 0.5 c
-74.215 2.969 l
-73.613 2.969 l
-73.613 3.498 l
-74.215 3.498 l
-74.215 4.453 l
-h
-77.816 1.69 m
-77.816 2.296 77.927 2.763 78.155 3.087 c
-78.39 3.41 78.716 3.571 79.14 3.571 c
-79.522 3.571 79.819 3.413 80.036 3.101 c
-80.036 5.159 l
-80.683 5.159 l
-80.683 -0.485 l
-80.095 -0.485 l
-80.05 -0.059 l
-79.845 -0.393 79.54 -0.559 79.14 -0.559 c
-78.728 -0.559 78.404 -0.405 78.169 -0.088 c
-77.934 0.235 77.816 0.69 77.816 1.278 c
-h
-78.463 1.308 m
-78.463 0.866 78.525 0.536 78.654 0.323 c
-78.79 0.118 79.011 0.014 79.316 0.014 c
-79.639 0.014 79.878 0.176 80.036 0.5 c
-80.036 2.513 l
-79.867 2.825 79.628 2.983 79.316 2.983 c
-79.011 2.983 78.79 2.881 78.654 2.675 c
-78.525 2.469 78.463 2.146 78.463 1.705 c
-h
-82.388 -0.485 -0.647 3.983 re
-82.432 4.542 m
-82.432 4.432 82.402 4.34 82.344 4.263 c
-82.285 4.193 82.19 4.159 82.064 4.159 c
-81.947 4.159 81.851 4.193 81.785 4.263 c
-81.727 4.34 81.697 4.432 81.697 4.542 c
-81.697 4.659 81.727 4.751 81.785 4.821 c
-81.851 4.898 81.947 4.939 82.064 4.939 c
-82.19 4.939 82.285 4.898 82.344 4.821 c
-82.402 4.74 82.432 4.648 82.432 4.542 c
-85.048 2.881 m
-84.96 2.899 84.861 2.91 84.754 2.91 c
-84.42 2.91 84.185 2.726 84.048 2.366 c
-84.048 -0.485 l
-83.402 -0.485 l
-83.402 3.498 l
-84.034 3.498 l
-84.048 3.087 l
-84.225 3.41 84.468 3.571 84.784 3.571 c
-84.89 3.571 84.979 3.549 85.048 3.513 c
-h
-87.048 -0.559 m
-86.548 -0.559 86.165 -0.412 85.901 -0.118 c
-85.636 0.176 85.504 0.61 85.504 1.19 c
-85.504 1.66 l
-85.504 2.256 85.629 2.723 85.886 3.057 c
-86.151 3.399 86.51 3.571 86.974 3.571 c
-87.433 3.571 87.775 3.417 88.002 3.116 c
-88.238 2.822 88.359 2.358 88.37 1.734 c
-88.37 1.308 l
-86.151 1.308 l
-86.151 1.219 l
-86.151 0.786 86.228 0.473 86.386 0.278 c
-86.551 0.091 86.783 0 87.077 0 c
-87.271 0 87.445 0.033 87.591 0.103 c
-87.738 0.18 87.874 0.297 88.002 0.455 c
-88.341 0.043 l
-88.054 -0.36 87.624 -0.559 87.048 -0.559 c
-86.974 3.013 m
-86.699 3.013 86.496 2.917 86.371 2.734 c
-86.242 2.547 86.169 2.256 86.151 1.866 c
-87.724 1.866 l
-87.724 1.955 l
-87.701 2.337 87.636 2.605 87.518 2.763 c
-87.4 2.929 87.216 3.013 86.974 3.013 c
-90.531 0 m
-90.744 0 90.917 0.062 91.046 0.191 c
-91.181 0.326 91.255 0.517 91.266 0.764 c
-91.883 0.764 l
-91.861 0.382 91.725 0.062 91.472 -0.192 c
-91.214 -0.437 90.902 -0.559 90.531 -0.559 c
-90.038 -0.559 89.664 -0.408 89.399 -0.103 c
-89.142 0.209 89.017 0.675 89.017 1.294 c
-89.017 1.734 l
-89.017 2.329 89.142 2.786 89.399 3.101 c
-89.664 3.413 90.038 3.571 90.531 3.571 c
-90.932 3.571 91.252 3.439 91.487 3.175 c
-91.729 2.917 91.861 2.572 91.883 2.131 c
-91.266 2.131 l
-91.244 2.425 91.171 2.645 91.046 2.792 c
-90.928 2.94 90.755 3.013 90.531 3.013 c
-90.237 3.013 90.02 2.913 89.884 2.719 c
-89.745 2.532 89.671 2.223 89.664 1.793 c
-89.664 1.278 l
-89.664 0.808 89.73 0.473 89.87 0.278 c
-90.017 0.091 90.237 0 90.531 0 c
-93.486 4.453 m
-93.486 3.498 l
-94.088 3.498 l
-94.088 2.969 l
-93.486 2.969 l
-93.486 0.5 l
-93.486 0.341 93.508 0.224 93.559 0.147 c
-93.618 0.066 93.706 0.029 93.824 0.029 c
-93.912 0.029 94 0.043 94.088 0.073 c
-94.088 -0.485 l
-93.941 -0.533 93.787 -0.559 93.633 -0.559 c
-93.375 -0.559 93.18 -0.468 93.045 -0.279 c
-92.905 -0.096 92.839 0.165 92.839 0.5 c
-92.839 2.969 l
-92.236 2.969 l
-92.236 3.498 l
-92.839 3.498 l
-92.839 4.453 l
-h
-94.647 1.69 m
-94.647 2.267 94.782 2.723 95.058 3.057 c
-95.341 3.399 95.713 3.571 96.176 3.571 c
-96.635 3.571 97.002 3.403 97.278 3.072 c
-97.561 2.748 97.708 2.3 97.719 1.734 c
-97.719 1.308 l
-97.719 0.738 97.575 0.282 97.292 -0.059 c
-97.017 -0.393 96.65 -0.559 96.191 -0.559 c
-95.727 -0.559 95.356 -0.397 95.073 -0.074 c
-94.797 0.257 94.654 0.698 94.647 1.249 c
-h
-95.293 1.308 m
-95.293 0.904 95.37 0.588 95.528 0.353 c
-95.694 0.118 95.915 0 96.191 0 c
-96.756 0 97.05 0.411 97.072 1.234 c
-97.072 1.69 l
-97.072 2.09 96.987 2.41 96.822 2.645 c
-96.664 2.888 96.447 3.013 96.176 3.013 c
-95.911 3.013 95.694 2.888 95.528 2.645 c
-95.37 2.41 95.293 2.09 95.293 1.69 c
-h
-100.203 2.881 m
-100.114 2.899 100.016 2.91 99.909 2.91 c
-99.574 2.91 99.339 2.726 99.204 2.366 c
-99.204 -0.485 l
-98.557 -0.485 l
-98.557 3.498 l
-99.189 3.498 l
-99.204 3.087 l
-99.38 3.41 99.622 3.571 99.939 3.571 c
-100.045 3.571 100.133 3.549 100.203 3.513 c
-h
-102.011 0.602 m
-102.732 3.498 l
-103.422 3.498 l
-102.129 -1.044 l
-102.03 -1.386 101.886 -1.646 101.702 -1.823 c
-101.526 -1.999 101.324 -2.087 101.099 -2.087 c
-101.012 -2.087 100.897 -2.066 100.762 -2.029 c
-100.762 -1.485 l
-100.908 -1.5 l
-101.092 -1.5 101.24 -1.455 101.35 -1.368 c
-101.456 -1.279 101.544 -1.121 101.614 -0.897 c
-101.732 -0.456 l
-100.571 3.498 l
-101.276 3.498 l
-h
-105.641 1.69 m
-105.641 2.296 105.752 2.763 105.98 3.087 c
-106.215 3.41 106.542 3.571 106.965 3.571 c
-107.347 3.571 107.644 3.413 107.861 3.101 c
-107.861 5.159 l
-108.508 5.159 l
-108.508 -0.485 l
-107.92 -0.485 l
-107.876 -0.059 l
-107.67 -0.393 107.365 -0.559 106.965 -0.559 c
-106.553 -0.559 106.229 -0.405 105.994 -0.088 c
-105.759 0.235 105.641 0.69 105.641 1.278 c
-h
-106.289 1.308 m
-106.289 0.866 106.351 0.536 106.479 0.323 c
-106.616 0.118 106.836 0.014 107.141 0.014 c
-107.464 0.014 107.703 0.176 107.861 0.5 c
-107.861 2.513 l
-107.692 2.825 107.453 2.983 107.141 2.983 c
-106.836 2.983 106.616 2.881 106.479 2.675 c
-106.351 2.469 106.289 2.146 106.289 1.705 c
-h
-109.375 1.69 m
-109.375 2.267 109.511 2.723 109.787 3.057 c
-110.069 3.399 110.441 3.571 110.904 3.571 c
-111.363 3.571 111.731 3.403 112.006 3.072 c
-112.289 2.748 112.436 2.3 112.448 1.734 c
-112.448 1.308 l
-112.448 0.738 112.304 0.282 112.021 -0.059 c
-111.746 -0.393 111.378 -0.559 110.919 -0.559 c
-110.456 -0.559 110.084 -0.397 109.801 -0.074 c
-109.526 0.257 109.383 0.698 109.375 1.249 c
-h
-110.022 1.308 m
-110.022 0.904 110.099 0.588 110.257 0.353 c
-110.422 0.118 110.643 0 110.919 0 c
-111.484 0 111.779 0.411 111.8 1.234 c
-111.8 1.69 l
-111.8 2.09 111.716 2.41 111.551 2.645 c
-111.393 2.888 111.176 3.013 110.904 3.013 c
-110.639 3.013 110.422 2.888 110.257 2.645 c
-110.099 2.41 110.022 2.09 110.022 1.69 c
-h
-116.255 0.661 m
-116.857 3.498 l
-117.504 3.498 l
-116.519 -0.485 l
-116.004 -0.485 l
-115.226 2.366 l
-114.476 -0.485 l
-113.947 -0.485 l
-112.991 3.498 l
-113.623 3.498 l
-114.241 0.735 l
-114.975 3.498 l
-115.49 3.498 l
-h
-118.798 3.498 m
-118.812 3.057 l
-119.066 3.399 119.389 3.571 119.782 3.571 c
-120.488 3.571 120.845 3.101 120.855 2.16 c
-120.855 -0.485 l
-120.209 -0.485 l
-120.209 2.131 l
-120.209 2.443 120.153 2.664 120.047 2.792 c
-119.937 2.917 119.782 2.983 119.576 2.983 c
-119.418 2.983 119.272 2.929 119.135 2.822 c
-119.006 2.711 118.904 2.576 118.827 2.41 c
-118.827 -0.485 l
-118.18 -0.485 l
-118.18 3.498 l
-h
-124.251 -0.485 -0.647 3.983 re
-124.295 4.542 m
-124.295 4.432 124.265 4.34 124.207 4.263 c
-124.148 4.193 124.052 4.159 123.927 4.159 c
-123.81 4.159 123.714 4.193 123.648 4.263 c
-123.59 4.34 123.56 4.432 123.56 4.542 c
-123.56 4.659 123.59 4.751 123.648 4.821 c
-123.714 4.898 123.81 4.939 123.927 4.939 c
-124.052 4.939 124.148 4.898 124.207 4.821 c
-124.265 4.74 124.295 4.648 124.295 4.542 c
-125.882 3.498 m
-125.897 3.057 l
-126.15 3.399 126.474 3.571 126.867 3.571 c
-127.573 3.571 127.929 3.101 127.941 2.16 c
-127.941 -0.485 l
-127.293 -0.485 l
-127.293 2.131 l
-127.293 2.443 127.238 2.664 127.132 2.792 c
-127.021 2.917 126.867 2.983 126.661 2.983 c
-126.503 2.983 126.356 2.929 126.22 2.822 c
-126.092 2.711 125.989 2.576 125.911 2.41 c
-125.911 -0.485 l
-125.265 -0.485 l
-125.265 3.498 l
-h
-129.763 4.453 m
-129.763 3.498 l
-130.366 3.498 l
-130.366 2.969 l
-129.763 2.969 l
-129.763 0.5 l
-129.763 0.341 129.784 0.224 129.836 0.147 c
-129.895 0.066 129.983 0.029 130.101 0.029 c
-130.189 0.029 130.277 0.043 130.366 0.073 c
-130.366 -0.485 l
-130.218 -0.533 130.064 -0.559 129.91 -0.559 c
-129.653 -0.559 129.458 -0.468 129.322 -0.279 c
-129.182 -0.096 129.116 0.165 129.116 0.5 c
-129.116 2.969 l
-128.513 2.969 l
-128.513 3.498 l
-129.116 3.498 l
-129.116 4.453 l
-h
-130.924 1.69 m
-130.924 2.267 131.06 2.723 131.336 3.057 c
-131.619 3.399 131.99 3.571 132.452 3.571 c
-132.912 3.571 133.279 3.403 133.555 3.072 c
-133.838 2.748 133.985 2.3 133.996 1.734 c
-133.996 1.308 l
-133.996 0.738 133.853 0.282 133.57 -0.059 c
-133.294 -0.393 132.926 -0.559 132.467 -0.559 c
-132.005 -0.559 131.633 -0.397 131.351 -0.074 c
-131.075 0.257 130.931 0.698 130.924 1.249 c
-h
-131.571 1.308 m
-131.571 0.904 131.648 0.588 131.806 0.353 c
-131.972 0.118 132.192 0 132.467 0 c
-133.034 0 133.327 0.411 133.35 1.234 c
-133.35 1.69 l
-133.35 2.09 133.265 2.41 133.1 2.645 c
-132.942 2.888 132.725 3.013 132.452 3.013 c
-132.188 3.013 131.972 2.888 131.806 2.645 c
-131.648 2.41 131.571 2.09 131.571 1.69 c
-h
-136.421 1.69 m
-136.421 2.296 136.531 2.763 136.76 3.087 c
-136.995 3.41 137.322 3.571 137.744 3.571 c
-138.127 3.571 138.424 3.413 138.641 3.101 c
-138.641 5.159 l
-139.288 5.159 l
-139.288 -0.485 l
-138.7 -0.485 l
-138.656 -0.059 l
-138.45 -0.393 138.145 -0.559 137.744 -0.559 c
-137.333 -0.559 137.009 -0.405 136.774 -0.088 c
-136.539 0.235 136.421 0.69 136.421 1.278 c
-h
-137.069 1.308 m
-137.069 0.866 137.131 0.536 137.26 0.323 c
-137.395 0.118 137.616 0.014 137.921 0.014 c
-138.244 0.014 138.483 0.176 138.641 0.5 c
-138.641 2.513 l
-138.472 2.825 138.233 2.983 137.921 2.983 c
-137.616 2.983 137.395 2.881 137.26 2.675 c
-137.131 2.469 137.069 2.146 137.069 1.705 c
-h
-140.993 -0.485 -0.647 3.983 re
-141.037 4.542 m
-141.037 4.432 141.007 4.34 140.949 4.263 c
-140.89 4.193 140.795 4.159 140.67 4.159 c
-140.552 4.159 140.456 4.193 140.39 4.263 c
-140.331 4.34 140.302 4.432 140.302 4.542 c
-140.302 4.659 140.331 4.751 140.39 4.821 c
-140.456 4.898 140.552 4.939 140.67 4.939 c
-140.795 4.939 140.89 4.898 140.949 4.821 c
-141.007 4.74 141.037 4.648 141.037 4.542 c
-143.654 2.881 m
-143.565 2.899 143.466 2.91 143.359 2.91 c
-143.025 2.91 142.79 2.726 142.654 2.366 c
-142.654 -0.485 l
-142.007 -0.485 l
-142.007 3.498 l
-142.64 3.498 l
-142.654 3.087 l
-142.831 3.41 143.073 3.571 143.388 3.571 c
-143.496 3.571 143.583 3.549 143.654 3.513 c
-h
-145.653 -0.559 m
-145.152 -0.559 144.77 -0.412 144.506 -0.118 c
-144.242 0.176 144.109 0.61 144.109 1.19 c
-144.109 1.66 l
-144.109 2.256 144.234 2.723 144.491 3.057 c
-144.756 3.399 145.116 3.571 145.579 3.571 c
-146.039 3.571 146.38 3.417 146.608 3.116 c
-146.843 2.822 146.964 2.358 146.975 1.734 c
-146.975 1.308 l
-144.756 1.308 l
-144.756 1.219 l
-144.756 0.786 144.833 0.473 144.991 0.278 c
-145.156 0.091 145.388 0 145.682 0 c
-145.877 0 146.05 0.033 146.197 0.103 c
-146.343 0.18 146.48 0.297 146.608 0.455 c
-146.946 0.043 l
-146.659 -0.36 146.229 -0.559 145.653 -0.559 c
-145.579 3.013 m
-145.304 3.013 145.102 2.917 144.976 2.734 c
-144.848 2.547 144.774 2.256 144.756 1.866 c
-146.328 1.866 l
-146.328 1.955 l
-146.307 2.337 146.241 2.605 146.123 2.763 c
-146.006 2.929 145.821 3.013 145.579 3.013 c
-149.136 0 m
-149.349 0 149.522 0.062 149.651 0.191 c
-149.786 0.326 149.86 0.517 149.871 0.764 c
-150.488 0.764 l
-150.467 0.382 150.33 0.062 150.077 -0.192 c
-149.819 -0.437 149.507 -0.559 149.136 -0.559 c
-148.643 -0.559 148.269 -0.408 148.005 -0.103 c
-147.747 0.209 147.622 0.675 147.622 1.294 c
-147.622 1.734 l
-147.622 2.329 147.747 2.786 148.005 3.101 c
-148.269 3.413 148.643 3.571 149.136 3.571 c
-149.537 3.571 149.856 3.439 150.091 3.175 c
-150.334 2.917 150.467 2.572 150.488 2.131 c
-149.871 2.131 l
-149.849 2.425 149.775 2.645 149.651 2.792 c
-149.533 2.94 149.36 3.013 149.136 3.013 c
-148.842 3.013 148.626 2.913 148.489 2.719 c
-148.35 2.532 148.277 2.223 148.269 1.793 c
-148.269 1.278 l
-148.269 0.808 148.335 0.473 148.475 0.278 c
-148.622 0.091 148.842 0 149.136 0 c
-152.09 4.453 m
-152.09 3.498 l
-152.693 3.498 l
-152.693 2.969 l
-152.09 2.969 l
-152.09 0.5 l
-152.09 0.341 152.113 0.224 152.165 0.147 c
-152.223 0.066 152.311 0.029 152.429 0.029 c
-152.517 0.029 152.605 0.043 152.693 0.073 c
-152.693 -0.485 l
-152.547 -0.533 152.392 -0.559 152.238 -0.559 c
-151.98 -0.559 151.785 -0.468 151.65 -0.279 c
-151.51 -0.096 151.444 0.165 151.444 0.5 c
-151.444 2.969 l
-150.841 2.969 l
-150.841 3.498 l
-151.444 3.498 l
-151.444 4.453 l
-h
-153.252 1.69 m
-153.252 2.267 153.388 2.723 153.663 3.057 c
-153.946 3.399 154.318 3.571 154.781 3.571 c
-155.24 3.571 155.608 3.403 155.883 3.072 c
-156.166 2.748 156.313 2.3 156.324 1.734 c
-156.324 1.308 l
-156.324 0.738 156.181 0.282 155.897 -0.059 c
-155.622 -0.393 155.255 -0.559 154.795 -0.559 c
-154.332 -0.559 153.961 -0.397 153.678 -0.074 c
-153.403 0.257 153.26 0.698 153.252 1.249 c
-h
-153.898 1.308 m
-153.898 0.904 153.976 0.588 154.134 0.353 c
-154.299 0.118 154.519 0 154.795 0 c
-155.361 0 155.655 0.411 155.677 1.234 c
-155.677 1.69 l
-155.677 2.09 155.593 2.41 155.427 2.645 c
-155.269 2.888 155.053 3.013 154.781 3.013 c
-154.516 3.013 154.299 2.888 154.134 2.645 c
-153.976 2.41 153.898 2.09 153.898 1.69 c
-h
-158.808 2.881 m
-158.72 2.899 158.621 2.91 158.515 2.91 c
-158.18 2.91 157.944 2.726 157.809 2.366 c
-157.809 -0.485 l
-157.162 -0.485 l
-157.162 3.498 l
-157.794 3.498 l
-157.809 3.087 l
-157.985 3.41 158.228 3.571 158.544 3.571 c
-158.65 3.571 158.739 3.549 158.808 3.513 c
-h
-160.616 0.602 m
-161.337 3.498 l
-162.027 3.498 l
-160.734 -1.044 l
-160.634 -1.386 160.491 -1.646 160.308 -1.823 c
-160.131 -1.999 159.929 -2.087 159.705 -2.087 c
-159.616 -2.087 159.502 -2.066 159.367 -2.029 c
-159.367 -1.485 l
-159.514 -1.5 l
-159.697 -1.5 159.845 -1.455 159.955 -1.368 c
-160.061 -1.279 160.15 -1.121 160.219 -0.897 c
-160.337 -0.456 l
-159.176 3.498 l
-159.882 3.498 l
-h
-165.231 4.453 m
-165.231 3.498 l
-165.835 3.498 l
-165.835 2.969 l
-165.231 2.969 l
-165.231 0.5 l
-165.231 0.341 165.254 0.224 165.305 0.147 c
-165.364 0.066 165.453 0.029 165.57 0.029 c
-165.658 0.029 165.746 0.043 165.835 0.073 c
-165.835 -0.485 l
-165.688 -0.533 165.533 -0.559 165.378 -0.559 c
-165.121 -0.559 164.927 -0.468 164.79 -0.279 c
-164.651 -0.096 164.585 0.165 164.585 0.5 c
-164.585 2.969 l
-163.982 2.969 l
-163.982 3.498 l
-164.585 3.498 l
-164.585 4.453 l
-h
-168.245 2.881 m
-168.157 2.899 168.057 2.91 167.951 2.91 c
-167.616 2.91 167.381 2.726 167.246 2.366 c
-167.246 -0.485 l
-166.598 -0.485 l
-166.598 3.498 l
-167.231 3.498 l
-167.246 3.087 l
-167.422 3.41 167.664 3.571 167.98 3.571 c
-168.087 3.571 168.175 3.549 168.245 3.513 c
-h
-170.244 -0.559 m
-169.744 -0.559 169.362 -0.412 169.098 -0.118 c
-168.833 0.176 168.701 0.61 168.701 1.19 c
-168.701 1.66 l
-168.701 2.256 168.825 2.723 169.083 3.057 c
-169.347 3.399 169.708 3.571 170.17 3.571 c
-170.629 3.571 170.972 3.417 171.2 3.116 c
-171.435 2.822 171.556 2.358 171.567 1.734 c
-171.567 1.308 l
-169.347 1.308 l
-169.347 1.219 l
-169.347 0.786 169.424 0.473 169.582 0.278 c
-169.748 0.091 169.979 0 170.274 0 c
-170.469 0 170.641 0.033 170.788 0.103 c
-170.935 0.18 171.071 0.297 171.2 0.455 c
-171.537 0.043 l
-171.251 -0.36 170.821 -0.559 170.244 -0.559 c
-170.17 3.013 m
-169.895 3.013 169.692 2.917 169.568 2.734 c
-169.439 2.547 169.366 2.256 169.347 1.866 c
-170.92 1.866 l
-170.92 1.955 l
-170.898 2.337 170.832 2.605 170.714 2.763 c
-170.597 2.929 170.413 3.013 170.17 3.013 c
-173.772 -0.559 m
-173.272 -0.559 172.89 -0.412 172.626 -0.118 c
-172.36 0.176 172.229 0.61 172.229 1.19 c
-172.229 1.66 l
-172.229 2.256 172.353 2.723 172.611 3.057 c
-172.875 3.399 173.235 3.571 173.698 3.571 c
-174.157 3.571 174.5 3.417 174.727 3.116 c
-174.962 2.822 175.084 2.358 175.095 1.734 c
-175.095 1.308 l
-172.875 1.308 l
-172.875 1.219 l
-172.875 0.786 172.952 0.473 173.11 0.278 c
-173.276 0.091 173.507 0 173.802 0 c
-173.996 0 174.168 0.033 174.315 0.103 c
-174.463 0.18 174.598 0.297 174.727 0.455 c
-175.065 0.043 l
-174.779 -0.36 174.349 -0.559 173.772 -0.559 c
-173.698 3.013 m
-173.422 3.013 173.22 2.917 173.096 2.734 c
-172.967 2.547 172.894 2.256 172.875 1.866 c
-174.448 1.866 l
-174.448 1.955 l
-174.426 2.337 174.359 2.605 174.242 2.763 c
-174.124 2.929 173.941 3.013 173.698 3.013 c
-175.918 -0.133 m
-175.918 -0.015 175.951 0.081 176.021 0.161 c
-176.087 0.238 176.19 0.278 176.329 0.278 c
-176.476 0.278 176.583 0.238 176.653 0.161 c
-176.73 0.081 176.771 -0.015 176.771 -0.133 c
-176.771 -0.243 176.73 -0.335 176.653 -0.412 c
-176.583 -0.489 176.476 -0.53 176.329 -0.53 c
-176.19 -0.53 176.087 -0.489 176.021 -0.412 c
-175.951 -0.335 175.918 -0.243 175.918 -0.133 c
-f
-Q
-0.113 0.082 0.09 0 k
-287.665 261.208 234.667 -12.895 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 292.8568 254.3733 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.647 -0.243 -0.775 -0.367 -0.882 c
--0.496 -0.992 -0.658 -1.081 -0.852 -1.147 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.162 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.927 c
--3.127 -0.819 -3.23 -0.691 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.214 -3.484 -0.015 c
--2.66 0.132 l
--2.642 0.033 -2.616 -0.059 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.368 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.683 -1.992 0.69 -1.999 0.69 c
--2.167 0.727 -2.329 0.771 -2.484 0.823 c
--2.642 0.881 -2.786 0.959 -2.91 1.058 c
--3.039 1.153 -3.142 1.278 -3.219 1.425 c
--3.289 1.573 -3.322 1.756 -3.322 1.984 c
--3.322 2.179 -3.289 2.344 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.836 c
--2.8 2.932 -2.645 3.002 -2.469 3.042 c
--2.293 3.09 -2.102 3.119 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.119 -1.128 3.09 -0.97 3.042 c
--0.804 2.992 -0.669 2.917 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.202 2.344 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.252 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.352 c
--1.294 1.311 -1.117 1.264 -0.941 1.205 c
--0.756 1.147 -0.595 1.066 -0.455 0.97 c
--0.32 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.454 c
--2.26 2.425 -2.319 2.385 -2.366 2.337 c
--2.406 2.296 -2.436 2.248 -2.454 2.19 c
--2.477 2.131 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.778 c
--2.41 1.72 -2.373 1.668 -2.322 1.631 c
--2.263 1.591 -2.201 1.558 -2.131 1.529 c
--2.065 1.5 -1.984 1.469 -1.896 1.44 c
-h
--0.837 -0.015 m
--0.837 0.091 -0.86 0.176 -0.897 0.235 c
--0.926 0.301 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.529 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.53 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.015 c
-6.402 -2.66 m
-6.184 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.519 -2.485 5.402 -2.396 c
-5.284 -2.315 5.185 -2.22 5.108 -2.103 c
-5.039 -1.985 4.991 -1.856 4.961 -1.72 c
-5.858 -1.617 l
-5.895 -1.753 5.964 -1.86 6.064 -1.941 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.058 6.681 -2.028 c
-6.758 -1.999 6.828 -1.945 6.887 -1.867 c
-6.945 -1.797 6.99 -1.706 7.019 -1.588 c
-7.056 -1.47 7.078 -1.323 7.078 -1.147 c
-7.078 -0.956 l
-7.078 -0.889 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.073 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.215 -0.897 5.108 -0.75 c
-5.009 -0.596 4.935 -0.412 4.888 -0.206 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.771 4.836 1.018 4.888 1.234 c
-4.946 1.448 5.027 1.631 5.137 1.778 c
-5.244 1.933 5.376 2.051 5.534 2.131 c
-5.689 2.219 5.876 2.263 6.093 2.263 c
-6.188 2.263 6.288 2.252 6.387 2.234 c
-6.483 2.212 6.571 2.179 6.652 2.131 c
-6.739 2.08 6.817 2.017 6.887 1.94 c
-6.964 1.859 7.026 1.768 7.078 1.66 c
-7.092 1.66 l
-7.092 1.808 l
-7.1 1.866 7.107 1.918 7.107 1.97 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.151 2.219 c
-8.004 2.219 l
-7.993 2.138 7.982 2.028 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.162 l
-7.975 -1.415 7.938 -1.635 7.871 -1.823 c
-7.802 -2.007 7.699 -2.161 7.563 -2.278 c
-7.423 -2.404 7.258 -2.499 7.063 -2.558 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.529 m
-7.092 0.742 7.067 0.918 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.5 6.729 1.558 6.652 1.587 c
-6.571 1.624 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.62 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.367 c
-5.88 1.278 5.835 1.161 5.799 1.014 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.339 c
-6.049 -0.515 6.211 -0.603 6.417 -0.603 c
-6.483 -0.603 6.556 -0.588 6.637 -0.559 c
-6.725 -0.522 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.177 7.019 -0.029 c
-7.067 0.118 7.092 0.301 7.092 0.529 c
-11.036 -0.647 m
-12.168 -0.647 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.647 l
-10.124 -0.647 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.219 l
-11.036 2.219 l
-h
-10.124 3.513 0.912 -0.676 re
-10.124 2.836 m
-13.597 1.602 m
-13.053 1.602 l
-13.053 2.219 l
-13.641 2.219 l
-13.92 3.116 l
-14.494 3.116 l
-14.494 2.219 l
-15.728 2.219 l
-15.728 1.602 l
-14.494 1.602 l
-14.494 -0.103 l
-14.494 -0.324 l
-14.501 -0.393 14.523 -0.456 14.552 -0.515 c
-14.589 -0.566 14.645 -0.611 14.714 -0.647 c
-14.791 -0.676 14.905 -0.691 15.052 -0.691 c
-15.188 -0.691 15.324 -0.688 15.464 -0.676 c
-15.599 -0.658 15.732 -0.632 15.861 -0.603 c
-15.861 -1.205 l
-15.78 -1.216 15.703 -1.231 15.626 -1.249 c
-15.545 -1.261 15.468 -1.268 15.391 -1.279 c
-15.31 -1.286 15.221 -1.294 15.125 -1.294 c
-15.038 -1.301 14.938 -1.309 14.832 -1.309 c
-14.645 -1.309 14.483 -1.294 14.346 -1.264 c
-14.218 -1.228 14.104 -1.183 14.009 -1.132 c
-13.92 -1.085 13.847 -1.025 13.788 -0.956 c
-13.729 -0.879 13.685 -0.802 13.656 -0.721 c
-13.627 -0.632 13.604 -0.544 13.597 -0.456 c
-13.586 -0.36 13.582 -0.264 13.582 -0.177 c
-h
-24.133 1.469 m
-24.033 1.477 23.931 1.488 23.823 1.5 c
-23.713 1.517 23.592 1.529 23.456 1.529 c
-23.28 1.529 23.121 1.488 22.986 1.411 c
-22.846 1.341 22.728 1.242 22.633 1.117 c
-22.545 0.989 22.475 0.841 22.427 0.676 c
-22.387 0.507 22.369 0.33 22.369 0.147 c
-22.369 -1.264 l
-21.471 -1.264 l
-21.471 0.985 l
-21.471 1.11 21.461 1.234 21.442 1.352 c
-21.432 1.477 21.417 1.595 21.398 1.705 c
-21.388 1.822 21.373 1.918 21.355 1.999 c
-21.332 2.087 21.314 2.161 21.296 2.219 c
-22.177 2.219 l
-22.185 2.168 22.196 2.117 22.207 2.057 c
-22.225 1.999 22.24 1.933 22.251 1.866 c
-22.269 1.808 22.284 1.741 22.296 1.675 c
-22.302 1.606 22.313 1.543 22.325 1.484 c
-22.339 1.484 l
-22.375 1.602 22.427 1.708 22.486 1.808 c
-22.552 1.903 22.633 1.988 22.722 2.057 c
-22.809 2.124 22.913 2.179 23.03 2.219 c
-23.155 2.256 23.302 2.278 23.471 2.278 c
-23.596 2.278 23.713 2.271 23.823 2.263 c
-23.942 2.252 24.044 2.238 24.133 2.219 c
-h
-26.738 -1.323 m
-26.481 -1.323 26.253 -1.286 26.047 -1.22 c
-25.841 -1.143 25.665 -1.029 25.518 -0.882 c
-25.371 -0.728 25.253 -0.536 25.165 -0.309 c
-25.084 -0.085 25.047 0.18 25.047 0.484 c
-25.047 0.816 25.091 1.095 25.18 1.323 c
-25.275 1.558 25.404 1.741 25.562 1.881 c
-25.727 2.017 25.915 2.117 26.121 2.175 c
-26.327 2.242 26.535 2.278 26.753 2.278 c
-27.025 2.278 27.26 2.227 27.458 2.131 c
-27.664 2.043 27.829 1.911 27.958 1.735 c
-28.094 1.565 28.193 1.359 28.252 1.117 c
-28.318 0.881 28.355 0.617 28.355 0.324 c
-28.355 0.309 l
-25.988 0.309 l
-25.988 0.162 26.003 0.022 26.032 -0.103 c
-26.069 -0.231 26.124 -0.345 26.194 -0.441 c
-26.26 -0.53 26.344 -0.599 26.444 -0.647 c
-26.539 -0.698 26.653 -0.721 26.782 -0.721 c
-26.936 -0.721 27.076 -0.688 27.194 -0.617 c
-27.318 -0.551 27.407 -0.449 27.458 -0.309 c
-28.296 -0.382 l
-28.266 -0.482 28.212 -0.588 28.135 -0.706 c
-28.054 -0.816 27.95 -0.919 27.825 -1.014 c
-27.708 -1.103 27.553 -1.176 27.37 -1.235 c
-27.194 -1.294 26.98 -1.323 26.738 -1.323 c
-26.738 1.705 m
-26.649 1.705 26.562 1.691 26.473 1.66 c
-26.385 1.631 26.304 1.58 26.238 1.514 c
-26.169 1.444 26.109 1.356 26.061 1.249 c
-26.021 1.139 26.003 1.014 26.003 0.867 c
-27.472 0.867 l
-27.472 1.003 27.447 1.124 27.399 1.234 c
-27.359 1.341 27.304 1.429 27.237 1.5 c
-27.179 1.565 27.106 1.617 27.017 1.646 c
-26.929 1.683 26.834 1.705 26.738 1.705 c
-32.342 -0.25 m
-32.342 -0.419 32.301 -0.57 32.224 -0.706 c
-32.154 -0.834 32.052 -0.948 31.916 -1.044 c
-31.787 -1.132 31.625 -1.202 31.43 -1.249 c
-31.243 -1.297 31.027 -1.323 30.784 -1.323 c
-30.556 -1.323 30.358 -1.309 30.181 -1.279 c
-30.005 -1.249 29.847 -1.202 29.71 -1.132 c
-29.571 -1.055 29.461 -0.956 29.373 -0.838 c
-29.284 -0.721 29.215 -0.574 29.167 -0.397 c
-29.976 -0.279 l
-29.994 -0.379 30.023 -0.456 30.063 -0.515 c
-30.111 -0.574 30.17 -0.617 30.24 -0.647 c
-30.306 -0.676 30.387 -0.702 30.475 -0.721 c
-30.564 -0.732 30.666 -0.735 30.784 -0.735 c
-30.879 -0.735 30.975 -0.732 31.063 -0.721 c
-31.152 -0.702 31.229 -0.676 31.298 -0.647 c
-31.364 -0.617 31.416 -0.58 31.445 -0.53 c
-31.482 -0.482 31.504 -0.419 31.504 -0.339 c
-31.504 -0.243 31.474 -0.169 31.416 -0.118 c
-31.364 -0.07 31.298 -0.029 31.21 0 c
-31.122 0.037 31.011 0.066 30.886 0.088 c
-30.769 0.118 30.637 0.147 30.489 0.176 c
-30.35 0.213 30.211 0.253 30.063 0.294 c
-29.924 0.341 29.799 0.405 29.681 0.484 c
-29.571 0.562 29.483 0.661 29.417 0.779 c
-29.347 0.896 29.313 1.047 29.313 1.234 c
-29.313 1.389 29.344 1.532 29.402 1.66 c
-29.468 1.797 29.564 1.911 29.681 1.999 c
-29.806 2.087 29.964 2.153 30.152 2.205 c
-30.335 2.252 30.549 2.278 30.784 2.278 c
-30.967 2.278 31.144 2.256 31.313 2.219 c
-31.478 2.19 31.625 2.135 31.754 2.057 c
-31.879 1.988 31.989 1.889 32.077 1.764 c
-32.166 1.646 32.224 1.502 32.253 1.338 c
-31.46 1.264 l
-31.438 1.341 31.408 1.404 31.372 1.455 c
-31.331 1.514 31.283 1.558 31.225 1.587 c
-31.173 1.624 31.111 1.65 31.034 1.66 c
-30.953 1.668 30.872 1.675 30.784 1.675 c
-30.567 1.675 30.406 1.646 30.298 1.587 c
-30.188 1.536 30.137 1.448 30.137 1.323 c
-30.137 1.242 30.155 1.18 30.196 1.132 c
-30.244 1.08 30.306 1.043 30.387 1.014 c
-30.475 0.985 30.57 0.955 30.681 0.926 c
-30.788 0.904 30.909 0.881 31.048 0.852 c
-31.202 0.823 31.361 0.783 31.519 0.735 c
-31.673 0.683 31.813 0.621 31.931 0.544 c
-32.048 0.463 32.143 0.36 32.224 0.235 c
-32.301 0.106 32.342 -0.056 32.342 -0.25 c
-34.859 -1.323 m
-34.602 -1.323 34.374 -1.286 34.169 -1.22 c
-33.963 -1.143 33.786 -1.029 33.639 -0.882 c
-33.492 -0.728 33.375 -0.536 33.286 -0.309 c
-33.205 -0.085 33.169 0.18 33.169 0.484 c
-33.169 0.816 33.213 1.095 33.301 1.323 c
-33.396 1.558 33.525 1.741 33.683 1.881 c
-33.849 2.017 34.036 2.117 34.242 2.175 c
-34.447 2.242 34.657 2.278 34.874 2.278 c
-35.146 2.278 35.381 2.227 35.58 2.131 c
-35.785 2.043 35.95 1.911 36.079 1.735 c
-36.215 1.565 36.314 1.359 36.373 1.117 c
-36.44 0.881 36.476 0.617 36.476 0.324 c
-36.476 0.309 l
-34.109 0.309 l
-34.109 0.162 34.124 0.022 34.154 -0.103 c
-34.19 -0.231 34.246 -0.345 34.315 -0.441 c
-34.381 -0.53 34.466 -0.599 34.565 -0.647 c
-34.661 -0.698 34.774 -0.721 34.903 -0.721 c
-35.058 -0.721 35.197 -0.688 35.314 -0.617 c
-35.44 -0.551 35.528 -0.449 35.58 -0.309 c
-36.417 -0.382 l
-36.388 -0.482 36.332 -0.588 36.255 -0.706 c
-36.174 -0.816 36.072 -0.919 35.947 -1.014 c
-35.829 -1.103 35.675 -1.176 35.491 -1.235 c
-35.314 -1.294 35.102 -1.323 34.859 -1.323 c
-34.859 1.705 m
-34.771 1.705 34.682 1.691 34.595 1.66 c
-34.506 1.631 34.425 1.58 34.36 1.514 c
-34.29 1.444 34.231 1.356 34.183 1.249 c
-34.142 1.139 34.124 1.014 34.124 0.867 c
-35.594 0.867 l
-35.594 1.003 35.568 1.124 35.52 1.234 c
-35.48 1.341 35.425 1.429 35.359 1.5 c
-35.3 1.565 35.227 1.617 35.138 1.646 c
-35.05 1.683 34.955 1.705 34.859 1.705 c
-37.968 1.602 m
-37.424 1.602 l
-37.424 2.219 l
-38.012 2.219 l
-38.291 3.116 l
-38.865 3.116 l
-38.865 2.219 l
-40.099 2.219 l
-40.099 1.602 l
-38.865 1.602 l
-38.865 -0.103 l
-38.865 -0.324 l
-38.872 -0.393 38.894 -0.456 38.923 -0.515 c
-38.96 -0.566 39.015 -0.611 39.085 -0.647 c
-39.162 -0.676 39.276 -0.691 39.424 -0.691 c
-39.559 -0.691 39.695 -0.688 39.835 -0.676 c
-39.971 -0.658 40.103 -0.632 40.232 -0.603 c
-40.232 -1.205 l
-40.151 -1.216 40.074 -1.231 39.996 -1.249 c
-39.916 -1.261 39.838 -1.268 39.761 -1.279 c
-39.68 -1.286 39.592 -1.294 39.497 -1.294 c
-39.409 -1.301 39.309 -1.309 39.202 -1.309 c
-39.015 -1.309 38.853 -1.294 38.718 -1.264 c
-38.589 -1.228 38.475 -1.183 38.379 -1.132 c
-38.291 -1.085 38.218 -1.025 38.159 -0.956 c
-38.1 -0.879 38.056 -0.802 38.027 -0.721 c
-37.997 -0.632 37.975 -0.544 37.968 -0.456 c
-37.957 -0.36 37.953 -0.264 37.953 -0.177 c
-h
-46.236 -2.631 m
-46.236 3.513 l
-48.162 3.513 l
-48.162 2.896 l
-47.089 2.896 l
-47.089 -2.014 l
-48.162 -2.014 l
-48.162 -2.631 l
-h
-51.193 1.602 m
-51.193 -1.264 l
-50.297 -1.264 l
-50.297 1.602 l
-49.473 1.602 l
-49.473 2.219 l
-50.297 2.219 l
-50.297 2.484 l
-50.297 2.609 50.312 2.741 50.341 2.881 c
-50.378 3.017 50.447 3.135 50.547 3.233 c
-50.653 3.341 50.796 3.428 50.973 3.499 c
-51.149 3.564 51.374 3.601 51.649 3.601 c
-51.862 3.601 52.061 3.59 52.237 3.572 c
-52.413 3.549 52.564 3.532 52.693 3.513 c
-52.693 2.925 l
-52.564 2.944 52.421 2.958 52.267 2.969 c
-52.108 2.976 51.958 2.984 51.81 2.984 c
-51.682 2.984 51.579 2.969 51.502 2.94 c
-51.421 2.911 51.359 2.87 51.311 2.822 c
-51.26 2.77 51.226 2.708 51.208 2.631 c
-51.197 2.561 51.193 2.484 51.193 2.396 c
-51.193 2.219 l
-52.619 2.219 l
-52.619 1.602 l
-h
-55.71 -0.647 m
-56.841 -0.647 l
-56.841 -1.264 l
-53.535 -1.264 l
-53.535 -0.647 l
-54.798 -0.647 l
-54.798 1.602 l
-53.872 1.602 l
-53.872 2.219 l
-55.71 2.219 l
-h
-54.798 3.513 0.912 -0.676 re
-54.798 2.836 m
-59.774 -0.647 m
-60.905 -0.647 l
-60.905 -1.264 l
-57.599 -1.264 l
-57.599 -0.647 l
-58.863 -0.647 l
-58.863 2.896 l
-57.936 2.896 l
-57.936 3.513 l
-59.774 3.513 l
-h
-63.291 -1.323 m
-63.033 -1.323 62.806 -1.286 62.6 -1.22 c
-62.394 -1.143 62.218 -1.029 62.071 -0.882 c
-61.923 -0.728 61.807 -0.536 61.718 -0.309 c
-61.637 -0.085 61.601 0.18 61.601 0.484 c
-61.601 0.816 61.645 1.095 61.732 1.323 c
-61.828 1.558 61.957 1.741 62.115 1.881 c
-62.28 2.017 62.468 2.117 62.673 2.175 c
-62.879 2.242 63.089 2.278 63.305 2.278 c
-63.577 2.278 63.812 2.227 64.011 2.131 c
-64.217 2.043 64.382 1.911 64.51 1.735 c
-64.647 1.565 64.745 1.359 64.805 1.117 c
-64.871 0.881 64.907 0.617 64.907 0.324 c
-64.907 0.309 l
-62.541 0.309 l
-62.541 0.162 62.555 0.022 62.586 -0.103 c
-62.622 -0.231 62.677 -0.345 62.747 -0.441 c
-62.813 -0.53 62.898 -0.599 62.997 -0.647 c
-63.093 -0.698 63.206 -0.721 63.334 -0.721 c
-63.49 -0.721 63.629 -0.688 63.746 -0.617 c
-63.871 -0.551 63.96 -0.449 64.011 -0.309 c
-64.849 -0.382 l
-64.82 -0.482 64.764 -0.588 64.687 -0.706 c
-64.606 -0.816 64.504 -0.919 64.379 -1.014 c
-64.261 -1.103 64.107 -1.176 63.923 -1.235 c
-63.746 -1.294 63.533 -1.323 63.291 -1.323 c
-63.291 1.705 m
-63.203 1.705 63.114 1.691 63.026 1.66 c
-62.938 1.631 62.857 1.58 62.791 1.514 c
-62.721 1.444 62.663 1.356 62.615 1.249 c
-62.574 1.139 62.555 1.014 62.555 0.867 c
-64.026 0.867 l
-64.026 1.003 64 1.124 63.952 1.234 c
-63.912 1.341 63.856 1.429 63.791 1.5 c
-63.731 1.565 63.658 1.617 63.57 1.646 c
-63.482 1.683 63.386 1.705 63.291 1.705 c
-66.16 -2.631 m
-66.16 -2.014 l
-67.234 -2.014 l
-67.234 2.896 l
-66.16 2.896 l
-66.16 3.513 l
-68.086 3.513 l
-68.086 -2.631 l
-h
-f
-Q
-q 1 0 0 1 371.3314 238.8802 cm
-0 0 m
--0.118 -0.147 l
--0.452 -0.54 -0.948 -0.735 -1.602 -0.735 c
--2.183 -0.735 -2.638 -0.544 -2.969 -0.162 c
--3.293 0.22 -3.461 0.765 -3.469 1.47 c
--3.469 2.514 l
--3.469 3.267 -3.322 3.829 -3.027 4.204 c
--2.726 4.575 -2.275 4.763 -1.675 4.763 c
--1.168 4.763 -0.771 4.619 -0.484 4.336 c
--0.191 4.05 -0.029 3.645 0 3.117 c
--0.675 3.117 l
--0.698 3.447 -0.79 3.707 -0.955 3.896 c
--1.113 4.09 -1.348 4.189 -1.66 4.189 c
--2.054 4.189 -2.337 4.06 -2.514 3.807 c
--2.69 3.55 -2.786 3.15 -2.792 2.602 c
--2.792 1.514 l
--2.792 0.974 -2.69 0.559 -2.484 0.264 c
--2.278 -0.022 -1.984 -0.162 -1.602 -0.162 c
--1.242 -0.162 -0.962 -0.073 -0.764 0.103 c
--0.675 0.191 l
--0.675 1.426 l
--1.646 1.426 l
--1.646 1.999 l
-0 1.999 l
-h
-2.44 -0.735 m
-1.941 -0.735 1.558 -0.588 1.294 -0.294 c
-1.029 0 0.897 0.434 0.897 1.014 c
-0.897 1.484 l
-0.897 2.08 1.022 2.547 1.279 2.882 c
-1.544 3.223 1.904 3.395 2.367 3.395 c
-2.826 3.395 3.167 3.241 3.396 2.94 c
-3.631 2.646 3.753 2.183 3.763 1.558 c
-3.763 1.132 l
-1.544 1.132 l
-1.544 1.043 l
-1.544 0.611 1.621 0.297 1.779 0.103 c
-1.944 -0.085 2.176 -0.176 2.469 -0.176 c
-2.664 -0.176 2.837 -0.143 2.984 -0.073 c
-3.131 0.004 3.267 0.121 3.396 0.279 c
-3.734 -0.133 l
-3.447 -0.536 3.017 -0.735 2.44 -0.735 c
-2.367 2.837 m
-2.091 2.837 1.889 2.741 1.764 2.558 c
-1.636 2.371 1.562 2.08 1.544 1.691 c
-3.117 1.691 l
-3.117 1.779 l
-3.094 2.161 3.028 2.429 2.911 2.587 c
-2.793 2.753 2.61 2.837 2.367 2.837 c
-5.395 4.278 m
-5.395 3.322 l
-5.997 3.322 l
-5.997 2.793 l
-5.395 2.793 l
-5.395 0.324 l
-5.395 0.166 5.417 0.048 5.469 -0.029 c
-5.527 -0.11 5.615 -0.147 5.733 -0.147 c
-5.821 -0.147 5.91 -0.133 5.997 -0.103 c
-5.997 -0.661 l
-5.85 -0.709 5.696 -0.735 5.542 -0.735 c
-5.284 -0.735 5.089 -0.643 4.954 -0.455 c
-4.814 -0.272 4.748 -0.011 4.748 0.324 c
-4.748 2.793 l
-4.145 2.793 l
-4.145 3.322 l
-4.748 3.322 l
-4.748 4.278 l
-h
-8.658 -0.661 m
-8.658 2.793 l
-8.143 2.793 l
-8.143 3.322 l
-8.658 3.322 l
-8.658 3.69 l
-8.665 4.12 8.779 4.453 8.996 4.689 c
-9.22 4.931 9.533 5.056 9.937 5.056 c
-10.084 5.056 10.223 5.035 10.363 4.998 c
-10.51 4.958 10.66 4.902 10.819 4.836 c
-10.701 4.262 l
-10.466 4.388 10.223 4.453 9.981 4.453 c
-9.735 4.453 9.562 4.384 9.467 4.248 c
-9.367 4.12 9.319 3.925 9.319 3.66 c
-9.319 3.322 l
-9.966 3.322 l
-9.966 2.793 l
-9.319 2.793 l
-9.319 -0.661 l
-h
-11.127 -0.661 -0.646 3.983 re
-12.877 -0.661 -0.647 5.644 re
-15.317 -0.735 m
-14.817 -0.735 14.435 -0.588 14.17 -0.294 c
-13.906 0 13.773 0.434 13.773 1.014 c
-13.773 1.484 l
-13.773 2.08 13.898 2.547 14.155 2.882 c
-14.42 3.223 14.78 3.395 15.243 3.395 c
-15.703 3.395 16.044 3.241 16.272 2.94 c
-16.507 2.646 16.629 2.183 16.64 1.558 c
-16.64 1.132 l
-14.42 1.132 l
-14.42 1.043 l
-14.42 0.611 14.497 0.297 14.655 0.103 c
-14.82 -0.085 15.052 -0.176 15.346 -0.176 c
-15.541 -0.176 15.713 -0.143 15.861 -0.073 c
-16.008 0.004 16.143 0.121 16.272 0.279 c
-16.61 -0.133 l
-16.324 -0.536 15.894 -0.735 15.317 -0.735 c
-15.243 2.837 m
-14.967 2.837 14.766 2.741 14.641 2.558 c
-14.512 2.371 14.438 2.08 14.42 1.691 c
-15.993 1.691 l
-15.993 1.779 l
-15.971 2.161 15.904 2.429 15.787 2.587 c
-15.669 2.753 15.486 2.837 15.243 2.837 c
-22.019 1.132 m
-22.019 0.515 21.905 0.048 21.681 -0.264 c
-21.465 -0.58 21.141 -0.735 20.711 -0.735 c
-20.289 -0.735 19.977 -0.555 19.771 -0.191 c
-19.741 -0.661 l
-19.138 -0.661 l
-19.138 4.983 l
-19.786 4.983 l
-19.786 2.882 l
-19.998 3.223 20.307 3.395 20.711 3.395 c
-21.141 3.395 21.465 3.237 21.681 2.925 c
-21.905 2.62 22.019 2.153 22.019 1.529 c
-h
-21.373 1.514 m
-21.373 1.984 21.303 2.315 21.167 2.514 c
-21.039 2.708 20.829 2.807 20.534 2.807 c
-20.201 2.807 19.95 2.624 19.786 2.263 c
-19.786 0.382 l
-19.95 0.019 20.204 -0.162 20.549 -0.162 c
-20.843 -0.162 21.053 -0.058 21.182 0.147 c
-21.307 0.353 21.373 0.669 21.373 1.103 c
-h
-24.9 -0.661 m
-24.86 -0.573 24.835 -0.426 24.827 -0.22 c
-24.592 -0.565 24.297 -0.735 23.945 -0.735 c
-23.582 -0.735 23.298 -0.64 23.092 -0.441 c
-22.894 -0.235 22.799 0.052 22.799 0.426 c
-22.799 0.827 22.934 1.147 23.21 1.382 c
-23.482 1.625 23.857 1.749 24.328 1.749 c
-24.812 1.749 l
-24.812 2.176 l
-24.812 2.411 24.757 2.576 24.65 2.675 c
-24.54 2.782 24.378 2.837 24.166 2.837 c
-23.967 2.837 23.805 2.778 23.68 2.66 c
-23.563 2.543 23.504 2.396 23.504 2.219 c
-22.857 2.219 l
-22.857 2.414 22.916 2.606 23.034 2.793 c
-23.158 2.977 23.32 3.123 23.518 3.234 c
-23.724 3.341 23.952 3.395 24.21 3.395 c
-24.61 3.395 24.915 3.293 25.121 3.087 c
-25.334 2.882 25.448 2.587 25.459 2.205 c
-25.459 0.191 l
-25.459 -0.114 25.496 -0.378 25.577 -0.603 c
-25.577 -0.661 l
-h
-24.033 -0.147 m
-24.199 -0.147 24.349 -0.103 24.489 -0.015 c
-24.636 0.073 24.742 0.183 24.812 0.324 c
-24.812 1.264 l
-24.445 1.264 l
-24.129 1.264 23.886 1.195 23.709 1.058 c
-23.534 0.929 23.445 0.742 23.445 0.5 c
-23.445 0.272 23.489 0.106 23.578 0 c
-23.665 -0.099 23.817 -0.147 24.033 -0.147 c
-27.84 -0.176 m
-28.054 -0.176 28.226 -0.114 28.355 0.015 c
-28.49 0.151 28.565 0.342 28.575 0.588 c
-29.193 0.588 l
-29.17 0.206 29.035 -0.114 28.781 -0.368 c
-28.524 -0.613 28.212 -0.735 27.84 -0.735 c
-27.348 -0.735 26.973 -0.584 26.709 -0.279 c
-26.451 0.033 26.327 0.5 26.327 1.118 c
-26.327 1.558 l
-26.327 2.153 26.451 2.61 26.709 2.925 c
-26.973 3.237 27.348 3.395 27.84 3.395 c
-28.241 3.395 28.561 3.263 28.796 2.999 c
-29.038 2.741 29.17 2.396 29.193 1.955 c
-28.575 1.955 l
-28.553 2.249 28.48 2.469 28.355 2.616 c
-28.237 2.764 28.064 2.837 27.84 2.837 c
-27.547 2.837 27.329 2.738 27.193 2.543 c
-27.054 2.356 26.98 2.047 26.973 1.617 c
-26.973 1.103 l
-26.973 0.632 27.039 0.297 27.179 0.103 c
-27.326 -0.085 27.547 -0.176 27.84 -0.176 c
-30.942 1.161 m
-30.604 0.765 l
-30.604 -0.661 l
-29.942 -0.661 l
-29.942 4.983 l
-30.604 4.983 l
-30.604 1.602 l
-31.838 3.322 l
-32.617 3.322 l
-31.353 1.661 l
-32.779 -0.661 l
-32.029 -0.661 l
-h
-35.351 -0.661 m
-35.351 2.793 l
-34.822 2.793 l
-34.822 3.322 l
-35.351 3.322 l
-35.351 3.778 l
-35.351 4.178 35.447 4.491 35.646 4.719 c
-35.852 4.943 36.13 5.056 36.484 5.056 c
-36.619 5.056 36.752 5.035 36.88 4.998 c
-36.851 4.453 l
-36.752 4.472 36.652 4.484 36.557 4.484 c
-36.182 4.484 35.998 4.218 35.998 3.69 c
-35.998 3.322 l
-36.675 3.322 l
-36.675 2.793 l
-35.998 2.793 l
-35.998 -0.661 l
-h
-39.085 2.705 m
-38.996 2.723 38.898 2.734 38.791 2.734 c
-38.456 2.734 38.221 2.55 38.086 2.19 c
-38.086 -0.661 l
-37.439 -0.661 l
-37.439 3.322 l
-38.071 3.322 l
-38.086 2.911 l
-38.262 3.234 38.504 3.395 38.821 3.395 c
-38.927 3.395 39.015 3.373 39.085 3.337 c
-h
-39.526 1.514 m
-39.526 2.091 39.662 2.547 39.937 2.882 c
-40.22 3.223 40.592 3.395 41.055 3.395 c
-41.514 3.395 41.882 3.227 42.157 2.896 c
-42.44 2.572 42.587 2.124 42.599 1.558 c
-42.599 1.132 l
-42.599 0.563 42.455 0.106 42.171 -0.235 c
-41.896 -0.569 41.529 -0.735 41.069 -0.735 c
-40.606 -0.735 40.235 -0.573 39.952 -0.25 c
-39.677 0.081 39.534 0.522 39.526 1.073 c
-h
-40.172 1.132 m
-40.172 0.728 40.25 0.412 40.408 0.177 c
-40.573 -0.058 40.794 -0.176 41.069 -0.176 c
-41.635 -0.176 41.93 0.235 41.951 1.058 c
-41.951 1.514 l
-41.951 1.914 41.867 2.234 41.701 2.469 c
-41.543 2.712 41.327 2.837 41.055 2.837 c
-40.79 2.837 40.573 2.712 40.408 2.469 c
-40.25 2.234 40.172 1.914 40.172 1.514 c
-h
-44.053 3.322 m
-44.068 2.955 l
-44.311 3.248 44.631 3.395 45.024 3.395 c
-45.464 3.395 45.773 3.198 45.949 2.807 c
-46.203 3.198 46.552 3.395 46.993 3.395 c
-47.728 3.395 48.103 2.932 48.124 2.014 c
-48.124 -0.661 l
-47.478 -0.661 l
-47.478 1.955 l
-47.478 2.249 47.423 2.462 47.316 2.602 c
-47.218 2.738 47.044 2.807 46.802 2.807 c
-46.603 2.807 46.441 2.727 46.317 2.572 c
-46.2 2.425 46.129 2.234 46.111 1.999 c
-46.111 -0.661 l
-45.45 -0.661 l
-45.45 1.984 l
-45.45 2.532 45.229 2.807 44.789 2.807 c
-44.454 2.807 44.219 2.646 44.083 2.323 c
-44.083 -0.661 l
-43.436 -0.661 l
-43.436 3.322 l
-h
-f
-Q
-q 1 0 0 1 423.8077 239.2923 cm
-0 0 m
-0 0.087 -0.044 0.165 -0.133 0.235 c
--0.221 0.312 -0.408 0.415 -0.691 0.544 c
--1.125 0.72 -1.422 0.9 -1.588 1.088 c
--1.746 1.271 -1.823 1.502 -1.823 1.778 c
--1.823 2.119 -1.702 2.403 -1.455 2.63 c
--1.202 2.865 -0.864 2.983 -0.441 2.983 c
--0.011 2.983 0.338 2.869 0.602 2.645 c
-0.866 2.418 0.999 2.117 0.999 1.734 c
--0.044 1.734 l
--0.044 2.057 -0.184 2.219 -0.456 2.219 c
--0.566 2.219 -0.655 2.183 -0.721 2.117 c
--0.79 2.046 -0.824 1.947 -0.824 1.822 c
--0.824 1.734 -0.786 1.653 -0.706 1.587 c
--0.628 1.529 -0.449 1.433 -0.162 1.308 c
-0.268 1.15 0.565 0.974 0.735 0.779 c
-0.911 0.591 0.999 0.341 0.999 0.029 c
-0.999 -0.324 0.866 -0.611 0.602 -0.823 c
-0.338 -1.04 -0.011 -1.147 -0.441 -1.147 c
--0.736 -1.147 -0.996 -1.092 -1.22 -0.985 c
--1.449 -0.867 -1.625 -0.706 -1.75 -0.5 c
--1.867 -0.294 -1.926 -0.074 -1.926 0.161 c
--0.941 0.161 l
--0.941 -0.026 -0.904 -0.162 -0.824 -0.25 c
--0.736 -0.339 -0.603 -0.383 -0.427 -0.383 c
--0.144 -0.383 0 -0.258 0 0 c
-2.866 3.881 m
-2.866 2.91 l
-3.395 2.91 l
-3.395 2.117 l
-2.866 2.117 l
-2.866 0.147 l
-2.866 -0.011 2.884 -0.118 2.925 -0.177 c
-2.973 -0.235 3.057 -0.265 3.174 -0.265 c
-3.281 -0.265 3.366 -0.258 3.424 -0.235 c
-3.424 -1.044 l
-3.248 -1.11 3.057 -1.147 2.851 -1.147 c
-2.175 -1.147 1.83 -0.761 1.822 0.014 c
-1.822 2.117 l
-1.367 2.117 l
-1.367 2.91 l
-1.822 2.91 l
-1.822 3.881 l
-h
-5.85 -1.073 m
-5.82 -1.015 5.791 -0.912 5.761 -0.765 c
-5.574 -1.022 5.325 -1.147 5.012 -1.147 c
-4.677 -1.147 4.398 -1.04 4.174 -0.823 c
-3.958 -0.599 3.85 -0.309 3.85 0.043 c
-3.85 0.455 3.983 0.771 4.247 0.999 c
-4.512 1.234 4.895 1.352 5.394 1.352 c
-5.718 1.352 l
-5.718 1.675 l
-5.718 1.851 5.681 1.973 5.614 2.042 c
-5.556 2.119 5.468 2.16 5.35 2.16 c
-5.093 2.16 4.968 2.006 4.968 1.705 c
-3.924 1.705 l
-3.924 2.076 4.06 2.381 4.336 2.616 c
-4.608 2.859 4.957 2.983 5.379 2.983 c
-5.82 2.983 6.158 2.865 6.393 2.63 c
-6.636 2.403 6.761 2.08 6.761 1.66 c
-6.761 -0.206 l
-6.761 -0.551 6.809 -0.82 6.908 -1.015 c
-6.908 -1.073 l
-h
-5.247 -0.324 m
-5.354 -0.324 5.446 -0.306 5.526 -0.265 c
-5.614 -0.217 5.677 -0.158 5.718 -0.088 c
-5.718 0.735 l
-5.468 0.735 l
-5.291 0.735 5.148 0.675 5.041 0.558 c
-4.942 0.448 4.895 0.301 4.895 0.118 c
-4.895 -0.177 5.012 -0.324 5.247 -0.324 c
-7.378 1.043 m
-7.378 1.69 7.496 2.175 7.731 2.499 c
-7.966 2.822 8.297 2.983 8.731 2.983 c
-9.084 2.983 9.356 2.84 9.554 2.557 c
-9.598 2.91 l
-10.539 2.91 l
-10.539 -1.073 l
-10.539 -1.58 10.395 -1.97 10.113 -2.234 c
-9.826 -2.506 9.422 -2.646 8.893 -2.646 c
-8.664 -2.646 8.429 -2.602 8.187 -2.514 c
-7.952 -2.426 7.775 -2.311 7.658 -2.176 c
-8.01 -1.455 l
-8.106 -1.563 8.234 -1.646 8.392 -1.706 c
-8.547 -1.771 8.694 -1.808 8.834 -1.808 c
-9.069 -1.808 9.234 -1.75 9.333 -1.632 c
-9.44 -1.522 9.495 -1.345 9.495 -1.103 c
-9.495 -0.75 l
-9.296 -1.015 9.04 -1.147 8.716 -1.147 c
-8.294 -1.147 7.966 -0.985 7.731 -0.662 c
-7.503 -0.331 7.386 0.139 7.378 0.749 c
-h
-8.422 0.779 m
-8.422 0.404 8.469 0.135 8.569 -0.03 c
-8.664 -0.198 8.819 -0.279 9.025 -0.279 c
-9.238 -0.279 9.396 -0.202 9.495 -0.044 c
-9.495 1.851 l
-9.385 2.017 9.231 2.102 9.025 2.102 c
-8.819 2.102 8.664 2.017 8.569 1.851 c
-8.469 1.683 8.422 1.414 8.422 1.043 c
-h
-12.39 -1.073 -1.043 3.983 re
-11.303 3.939 m
-11.303 4.093 11.351 4.222 11.45 4.321 c
-11.557 4.428 11.692 4.483 11.862 4.483 c
-12.038 4.483 12.174 4.428 12.273 4.321 c
-12.38 4.222 12.435 4.093 12.435 3.939 c
-12.435 3.77 12.38 3.634 12.273 3.528 c
-12.174 3.428 12.038 3.38 11.862 3.38 c
-11.692 3.38 11.557 3.428 11.45 3.528 c
-11.351 3.634 11.303 3.77 11.303 3.939 c
-14.154 2.91 m
-14.184 2.513 l
-14.42 2.825 14.721 2.983 15.095 2.983 c
-15.779 2.983 16.132 2.502 16.153 1.543 c
-16.153 -1.073 l
-15.11 -1.073 l
-15.11 1.469 l
-15.11 1.693 15.073 1.855 15.008 1.955 c
-14.937 2.05 14.819 2.102 14.655 2.102 c
-14.467 2.102 14.32 2.006 14.214 1.822 c
-14.214 -1.073 l
-13.17 -1.073 l
-13.17 2.91 l
-h
-16.771 1.043 m
-16.771 1.69 16.889 2.175 17.124 2.499 c
-17.359 2.822 17.69 2.983 18.123 2.983 c
-18.476 2.983 18.748 2.84 18.947 2.557 c
-18.991 2.91 l
-19.931 2.91 l
-19.931 -1.073 l
-19.931 -1.58 19.788 -1.97 19.505 -2.234 c
-19.218 -2.506 18.815 -2.646 18.285 -2.646 c
-18.057 -2.646 17.822 -2.602 17.58 -2.514 c
-17.344 -2.426 17.168 -2.311 17.05 -2.176 c
-17.404 -1.455 l
-17.499 -1.563 17.628 -1.646 17.786 -1.706 c
-17.94 -1.771 18.087 -1.808 18.226 -1.808 c
-18.461 -1.808 18.627 -1.75 18.726 -1.632 c
-18.833 -1.522 18.888 -1.345 18.888 -1.103 c
-18.888 -0.75 l
-18.69 -1.015 18.432 -1.147 18.109 -1.147 c
-17.686 -1.147 17.359 -0.985 17.124 -0.662 c
-16.896 -0.331 16.778 0.139 16.771 0.749 c
-h
-17.815 0.779 m
-17.815 0.404 17.863 0.135 17.962 -0.03 c
-18.057 -0.198 18.212 -0.279 18.418 -0.279 c
-18.63 -0.279 18.788 -0.202 18.888 -0.044 c
-18.888 1.851 l
-18.777 2.017 18.623 2.102 18.418 2.102 c
-18.212 2.102 18.057 2.017 17.962 1.851 c
-17.863 1.683 17.815 1.414 17.815 1.043 c
-h
-f
-Q
-q 1 0 0 1 448.3695 238.2189 cm
-0 0 m
--0.04 0.088 -0.066 0.235 -0.073 0.441 c
--0.309 0.096 -0.603 -0.073 -0.956 -0.073 c
--1.319 -0.073 -1.602 0.022 -1.808 0.22 c
--2.007 0.426 -2.103 0.713 -2.103 1.087 c
--2.103 1.488 -1.966 1.808 -1.691 2.043 c
--1.419 2.286 -1.043 2.41 -0.573 2.41 c
--0.088 2.41 l
--0.088 2.837 l
--0.088 3.072 -0.143 3.237 -0.25 3.337 c
--0.36 3.443 -0.522 3.499 -0.735 3.499 c
--0.933 3.499 -1.095 3.439 -1.22 3.322 c
--1.338 3.204 -1.397 3.057 -1.397 2.881 c
--2.043 2.881 l
--2.043 3.075 -1.984 3.267 -1.867 3.454 c
--1.742 3.638 -1.58 3.785 -1.382 3.896 c
--1.176 4.002 -0.948 4.056 -0.691 4.056 c
--0.291 4.056 0.014 3.954 0.22 3.748 c
-0.434 3.543 0.548 3.248 0.559 2.866 c
-0.559 0.852 l
-0.559 0.548 0.595 0.283 0.676 0.058 c
-0.676 0 l
-h
--0.867 0.515 m
--0.702 0.515 -0.551 0.559 -0.412 0.646 c
--0.264 0.735 -0.158 0.845 -0.088 0.985 c
--0.088 1.926 l
--0.456 1.926 l
--0.771 1.926 -1.014 1.856 -1.191 1.72 c
--1.367 1.591 -1.455 1.404 -1.455 1.161 c
--1.455 0.933 -1.411 0.768 -1.323 0.661 c
--1.235 0.563 -1.084 0.515 -0.867 0.515 c
-3.204 3.366 m
-3.116 3.385 3.017 3.395 2.911 3.395 c
-2.576 3.395 2.341 3.212 2.205 2.851 c
-2.205 0 l
-1.558 0 l
-1.558 3.983 l
-2.19 3.983 l
-2.205 3.572 l
-2.381 3.896 2.624 4.056 2.94 4.056 c
-3.046 4.056 3.135 4.035 3.204 3.998 c
-h
-5.203 -0.073 m
-4.704 -0.073 4.322 0.073 4.056 0.368 c
-3.792 0.661 3.66 1.095 3.66 1.675 c
-3.66 2.146 l
-3.66 2.741 3.785 3.208 4.042 3.543 c
-4.307 3.884 4.667 4.056 5.13 4.056 c
-5.589 4.056 5.931 3.902 6.159 3.601 c
-6.394 3.308 6.516 2.844 6.526 2.219 c
-6.526 1.793 l
-4.307 1.793 l
-4.307 1.705 l
-4.307 1.272 4.384 0.959 4.542 0.764 c
-4.707 0.577 4.939 0.485 5.232 0.485 c
-5.427 0.485 5.6 0.518 5.747 0.588 c
-5.894 0.665 6.03 0.783 6.159 0.941 c
-6.497 0.529 l
-6.21 0.125 5.78 -0.073 5.203 -0.073 c
-5.13 3.499 m
-4.854 3.499 4.652 3.403 4.527 3.219 c
-4.399 3.032 4.326 2.741 4.307 2.352 c
-5.88 2.352 l
-5.88 2.44 l
-5.857 2.822 5.791 3.09 5.674 3.248 c
-5.556 3.414 5.373 3.499 5.13 3.499 c
-9.348 0 m
-9.308 0.088 9.282 0.235 9.275 0.441 c
-9.04 0.096 8.746 -0.073 8.393 -0.073 c
-8.029 -0.073 7.746 0.022 7.54 0.22 c
-7.342 0.426 7.247 0.713 7.247 1.087 c
-7.247 1.488 7.383 1.808 7.659 2.043 c
-7.93 2.286 8.305 2.41 8.775 2.41 c
-9.261 2.41 l
-9.261 2.837 l
-9.261 3.072 9.205 3.237 9.099 3.337 c
-8.989 3.443 8.827 3.499 8.613 3.499 c
-8.415 3.499 8.253 3.439 8.129 3.322 c
-8.01 3.204 7.952 3.057 7.952 2.881 c
-7.305 2.881 l
-7.305 3.075 7.364 3.267 7.482 3.454 c
-7.607 3.638 7.769 3.785 7.967 3.896 c
-8.172 4.002 8.401 4.056 8.658 4.056 c
-9.058 4.056 9.363 3.954 9.569 3.748 c
-9.782 3.543 9.896 3.248 9.907 2.866 c
-9.907 0.852 l
-9.907 0.548 9.944 0.283 10.025 0.058 c
-10.025 0 l
-h
-8.481 0.515 m
-8.646 0.515 8.797 0.559 8.937 0.646 c
-9.084 0.735 9.19 0.845 9.261 0.985 c
-9.261 1.926 l
-8.893 1.926 l
-8.577 1.926 8.334 1.856 8.158 1.72 c
-7.981 1.591 7.894 1.404 7.894 1.161 c
-7.894 0.933 7.937 0.768 8.025 0.661 c
-8.114 0.563 8.264 0.515 8.481 0.515 c
-13.479 4.939 m
-13.479 3.983 l
-14.082 3.983 l
-14.082 3.454 l
-13.479 3.454 l
-13.479 0.985 l
-13.479 0.827 13.501 0.709 13.552 0.632 c
-13.612 0.551 13.699 0.515 13.817 0.515 c
-13.905 0.515 13.993 0.529 14.082 0.559 c
-14.082 0 l
-13.934 -0.048 13.78 -0.073 13.626 -0.073 c
-13.369 -0.073 13.174 0.018 13.038 0.206 c
-12.898 0.389 12.833 0.65 12.833 0.985 c
-12.833 3.454 l
-12.23 3.454 l
-12.23 3.983 l
-12.833 3.983 l
-12.833 4.939 l
-h
-14.64 2.175 m
-14.64 2.753 14.776 3.208 15.052 3.543 c
-15.335 3.884 15.706 4.056 16.168 4.056 c
-16.629 4.056 16.995 3.888 17.271 3.557 c
-17.554 3.233 17.701 2.786 17.712 2.219 c
-17.712 1.793 l
-17.712 1.224 17.569 0.768 17.286 0.426 c
-17.01 0.092 16.643 -0.073 16.184 -0.073 c
-15.721 -0.073 15.349 0.088 15.066 0.411 c
-14.791 0.742 14.647 1.183 14.64 1.735 c
-h
-15.287 1.793 m
-15.287 1.389 15.364 1.073 15.522 0.838 c
-15.688 0.603 15.908 0.485 16.184 0.485 c
-16.75 0.485 17.043 0.897 17.066 1.72 c
-17.066 2.175 l
-17.066 2.576 16.981 2.896 16.816 3.131 c
-16.658 3.373 16.44 3.499 16.168 3.499 c
-15.904 3.499 15.688 3.373 15.522 3.131 c
-15.364 2.896 15.287 2.576 15.287 2.175 c
-h
-23.239 1.147 m
-23.842 3.983 l
-24.488 3.983 l
-23.503 0 l
-22.989 0 l
-22.21 2.851 l
-21.46 0 l
-20.931 0 l
-19.976 3.983 l
-20.608 3.983 l
-21.225 1.22 l
-21.961 3.983 l
-22.475 3.983 l
-h
-25.032 2.175 m
-25.032 2.753 25.169 3.208 25.444 3.543 c
-25.727 3.884 26.098 4.056 26.561 4.056 c
-27.021 4.056 27.388 3.888 27.663 3.557 c
-27.947 3.233 28.093 2.786 28.105 2.219 c
-28.105 1.793 l
-28.105 1.224 27.962 0.768 27.678 0.426 c
-27.403 0.092 27.035 -0.073 26.576 -0.073 c
-26.113 -0.073 25.741 0.088 25.458 0.411 c
-25.183 0.742 25.04 1.183 25.032 1.735 c
-h
-25.679 1.793 m
-25.679 1.389 25.757 1.073 25.915 0.838 c
-26.08 0.603 26.3 0.485 26.576 0.485 c
-27.141 0.485 27.436 0.897 27.457 1.72 c
-27.457 2.175 l
-27.457 2.576 27.374 2.896 27.208 3.131 c
-27.05 3.373 26.833 3.499 26.561 3.499 c
-26.296 3.499 26.08 3.373 25.915 3.131 c
-25.757 2.896 25.679 2.576 25.679 2.175 c
-h
-30.588 3.366 m
-30.501 3.385 30.401 3.395 30.295 3.395 c
-29.961 3.395 29.725 3.212 29.589 2.851 c
-29.589 0 l
-28.942 0 l
-28.942 3.983 l
-29.574 3.983 l
-29.589 3.572 l
-29.766 3.896 30.008 4.056 30.324 4.056 c
-30.431 4.056 30.519 4.035 30.588 3.998 c
-h
-32.234 1.822 m
-31.897 1.426 l
-31.897 0 l
-31.235 0 l
-31.235 5.644 l
-31.897 5.644 l
-31.897 2.263 l
-33.132 3.983 l
-33.911 3.983 l
-32.646 2.323 l
-34.073 0 l
-33.323 0 l
-h
-35.336 0 -0.646 3.983 re
-35.38 5.027 m
-35.38 4.917 35.351 4.825 35.292 4.748 c
-35.233 4.678 35.138 4.644 35.013 4.644 c
-34.896 4.644 34.8 4.678 34.734 4.748 c
-34.675 4.825 34.646 4.917 34.646 5.027 c
-34.646 5.145 34.675 5.236 34.734 5.307 c
-34.8 5.384 34.896 5.424 35.013 5.424 c
-35.138 5.424 35.233 5.384 35.292 5.307 c
-35.351 5.226 35.38 5.134 35.38 5.027 c
-36.968 3.983 m
-36.982 3.543 l
-37.236 3.884 37.56 4.056 37.953 4.056 c
-38.659 4.056 39.015 3.586 39.026 2.645 c
-39.026 0 l
-38.379 0 l
-38.379 2.616 l
-38.379 2.929 38.324 3.15 38.218 3.278 c
-38.107 3.403 37.953 3.469 37.747 3.469 c
-37.589 3.469 37.442 3.414 37.306 3.308 c
-37.177 3.197 37.075 3.061 36.997 2.896 c
-36.997 0 l
-36.351 0 l
-36.351 3.983 l
-h
-39.864 2.175 m
-39.864 2.793 39.974 3.256 40.202 3.572 c
-40.426 3.896 40.76 4.056 41.202 4.056 c
-41.602 4.056 41.907 3.881 42.112 3.528 c
-42.156 3.983 l
-42.744 3.983 l
-42.744 -0.044 l
-42.744 -0.532 42.616 -0.912 42.362 -1.176 c
-42.106 -1.44 41.753 -1.573 41.304 -1.573 c
-41.106 -1.573 40.885 -1.521 40.643 -1.426 c
-40.396 -1.326 40.217 -1.205 40.099 -1.058 c
-40.363 -0.617 l
-40.628 -0.882 40.926 -1.014 41.26 -1.014 c
-41.797 -1.014 42.073 -0.721 42.083 -0.133 c
-42.083 0.397 l
-41.877 0.081 41.576 -0.073 41.186 -0.073 c
-40.775 -0.073 40.452 0.077 40.217 0.382 c
-39.989 0.694 39.871 1.147 39.864 1.735 c
-h
-40.525 1.793 m
-40.525 1.352 40.587 1.022 40.716 0.808 c
-40.841 0.603 41.058 0.5 41.363 0.5 c
-41.686 0.5 41.925 0.665 42.083 0.999 c
-42.083 2.984 l
-41.915 3.308 41.676 3.469 41.363 3.469 c
-41.069 3.469 40.853 3.366 40.716 3.16 c
-40.587 2.955 40.525 2.631 40.525 2.19 c
-h
-45.288 2.175 m
-45.288 2.782 45.398 3.248 45.626 3.572 c
-45.861 3.896 46.188 4.056 46.611 4.056 c
-46.993 4.056 47.29 3.898 47.507 3.586 c
-47.507 5.644 l
-48.154 5.644 l
-48.154 0 l
-47.566 0 l
-47.521 0.426 l
-47.316 0.092 47.012 -0.073 46.611 -0.073 c
-46.199 -0.073 45.875 0.081 45.64 0.397 c
-45.405 0.721 45.288 1.176 45.288 1.764 c
-h
-45.934 1.793 m
-45.934 1.352 45.996 1.022 46.125 0.808 c
-46.262 0.603 46.482 0.5 46.787 0.5 c
-47.11 0.5 47.349 0.661 47.507 0.985 c
-47.507 2.998 l
-47.338 3.31 47.099 3.469 46.787 3.469 c
-46.482 3.469 46.262 3.366 46.125 3.16 c
-45.996 2.955 45.934 2.631 45.934 2.19 c
-h
-49.859 0 -0.647 3.983 re
-49.903 5.027 m
-49.903 4.917 49.873 4.825 49.815 4.748 c
-49.757 4.678 49.661 4.644 49.536 4.644 c
-49.418 4.644 49.323 4.678 49.256 4.748 c
-49.198 4.825 49.168 4.917 49.168 5.027 c
-49.168 5.145 49.198 5.236 49.256 5.307 c
-49.323 5.384 49.418 5.424 49.536 5.424 c
-49.661 5.424 49.757 5.384 49.815 5.307 c
-49.873 5.226 49.903 5.134 49.903 5.027 c
-52.52 3.366 m
-52.431 3.385 52.332 3.395 52.225 3.395 c
-51.891 3.395 51.656 3.212 51.52 2.851 c
-51.52 0 l
-50.873 0 l
-50.873 3.983 l
-51.505 3.983 l
-51.52 3.572 l
-51.696 3.896 51.939 4.056 52.255 4.056 c
-52.362 4.056 52.45 4.035 52.52 3.998 c
-h
-54.519 -0.073 m
-54.019 -0.073 53.636 0.073 53.372 0.368 c
-53.108 0.661 52.975 1.095 52.975 1.675 c
-52.975 2.146 l
-52.975 2.741 53.1 3.208 53.358 3.543 c
-53.622 3.884 53.982 4.056 54.445 4.056 c
-54.904 4.056 55.246 3.902 55.474 3.601 c
-55.71 3.308 55.831 2.844 55.841 2.219 c
-55.841 1.793 l
-53.622 1.793 l
-53.622 1.705 l
-53.622 1.272 53.699 0.959 53.857 0.764 c
-54.023 0.577 54.254 0.485 54.548 0.485 c
-54.743 0.485 54.916 0.518 55.062 0.588 c
-55.209 0.665 55.346 0.783 55.474 0.941 c
-55.812 0.529 l
-55.525 0.125 55.095 -0.073 54.519 -0.073 c
-54.445 3.499 m
-54.17 3.499 53.967 3.403 53.842 3.219 c
-53.714 3.032 53.64 2.741 53.622 2.352 c
-55.195 2.352 l
-55.195 2.44 l
-55.172 2.822 55.107 3.09 54.989 3.248 c
-54.871 3.414 54.688 3.499 54.445 3.499 c
-58.002 0.485 m
-58.216 0.485 58.388 0.548 58.517 0.676 c
-58.653 0.812 58.727 1.003 58.737 1.249 c
-59.355 1.249 l
-59.332 0.867 59.197 0.548 58.943 0.294 c
-58.686 0.048 58.374 -0.073 58.002 -0.073 c
-57.51 -0.073 57.135 0.077 56.871 0.382 c
-56.614 0.694 56.489 1.161 56.489 1.779 c
-56.489 2.219 l
-56.489 2.815 56.614 3.271 56.871 3.586 c
-57.135 3.898 57.51 4.056 58.002 4.056 c
-58.403 4.056 58.723 3.925 58.958 3.66 c
-59.201 3.403 59.332 3.057 59.355 2.616 c
-58.737 2.616 l
-58.715 2.911 58.642 3.131 58.517 3.278 c
-58.399 3.425 58.226 3.499 58.002 3.499 c
-57.709 3.499 57.491 3.399 57.356 3.204 c
-57.216 3.017 57.142 2.708 57.135 2.278 c
-57.135 1.764 l
-57.135 1.294 57.202 0.959 57.341 0.764 c
-57.488 0.577 57.709 0.485 58.002 0.485 c
-60.957 4.939 m
-60.957 3.983 l
-61.559 3.983 l
-61.559 3.454 l
-60.957 3.454 l
-60.957 0.985 l
-60.957 0.827 60.979 0.709 61.03 0.632 c
-61.089 0.551 61.177 0.515 61.295 0.515 c
-61.383 0.515 61.472 0.529 61.559 0.559 c
-61.559 0 l
-61.412 -0.048 61.258 -0.073 61.104 -0.073 c
-60.847 -0.073 60.652 0.018 60.516 0.206 c
-60.377 0.389 60.31 0.65 60.31 0.985 c
-60.31 3.454 l
-59.708 3.454 l
-59.708 3.983 l
-60.31 3.983 l
-60.31 4.939 l
-h
-62.118 2.175 m
-62.118 2.753 62.254 3.208 62.53 3.543 c
-62.812 3.884 63.184 4.056 63.647 4.056 c
-64.106 4.056 64.474 3.888 64.749 3.557 c
-65.032 3.233 65.179 2.786 65.19 2.219 c
-65.19 1.793 l
-65.19 1.224 65.046 0.768 64.764 0.426 c
-64.489 0.092 64.121 -0.073 63.662 -0.073 c
-63.199 -0.073 62.827 0.088 62.544 0.411 c
-62.268 0.742 62.125 1.183 62.118 1.735 c
-h
-62.765 1.793 m
-62.765 1.389 62.842 1.073 63 0.838 c
-63.165 0.603 63.386 0.485 63.662 0.485 c
-64.227 0.485 64.522 0.897 64.543 1.72 c
-64.543 2.175 l
-64.543 2.576 64.458 2.896 64.294 3.131 c
-64.136 3.373 63.919 3.499 63.647 3.499 c
-63.382 3.499 63.165 3.373 63 3.131 c
-62.842 2.896 62.765 2.576 62.765 2.175 c
-h
-67.674 3.366 m
-67.586 3.385 67.487 3.395 67.38 3.395 c
-67.046 3.395 66.81 3.212 66.675 2.851 c
-66.675 0 l
-66.028 0 l
-66.028 3.983 l
-66.66 3.983 l
-66.675 3.572 l
-66.851 3.896 67.094 4.056 67.41 4.056 c
-67.516 4.056 67.604 4.035 67.674 3.998 c
-h
-69.482 1.087 m
-70.203 3.983 l
-70.893 3.983 l
-69.6 -0.559 l
-69.501 -0.9 69.357 -1.161 69.174 -1.338 c
-68.998 -1.514 68.795 -1.602 68.571 -1.602 c
-68.483 -1.602 68.369 -1.58 68.233 -1.544 c
-68.233 -1 l
-68.38 -1.014 l
-68.564 -1.014 68.711 -0.97 68.821 -0.882 c
-68.927 -0.794 69.015 -0.636 69.085 -0.412 c
-69.203 0.029 l
-68.042 3.983 l
-68.747 3.983 l
-h
-71.173 0.353 m
-71.173 0.47 71.205 0.566 71.275 0.646 c
-71.342 0.723 71.444 0.764 71.585 0.764 c
-71.731 0.764 71.838 0.723 71.907 0.646 c
-71.984 0.566 72.025 0.47 72.025 0.353 c
-72.025 0.243 71.984 0.151 71.907 0.073 c
-71.838 -0.004 71.731 -0.044 71.585 -0.044 c
-71.444 -0.044 71.342 -0.004 71.275 0.073 c
-71.205 0.151 71.173 0.243 71.173 0.353 c
-f
-Q
-0.113 0.082 0.09 0 k
-287.665 232.611 234.667 -12.898 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 292.8568 225.772 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.646 -0.243 -0.775 -0.367 -0.881 c
--0.496 -0.992 -0.658 -1.08 -0.852 -1.146 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.807 l
--1.896 -1.807 l
--1.896 -1.263 l
--2.142 -1.256 -2.359 -1.219 -2.543 -1.161 c
--2.719 -1.102 -2.873 -1.024 -2.998 -0.926 c
--3.127 -0.819 -3.23 -0.691 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.213 -3.484 -0.014 c
--2.66 0.133 l
--2.642 0.034 -2.616 -0.058 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.367 c
--2.396 -0.426 -2.322 -0.477 -2.234 -0.514 c
--2.138 -0.554 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.662 l
--1.907 0.662 -1.926 0.666 -1.955 0.676 c
--1.977 0.684 -1.992 0.691 -1.999 0.691 c
--2.167 0.728 -2.329 0.772 -2.484 0.823 c
--2.642 0.882 -2.786 0.96 -2.91 1.058 c
--3.039 1.154 -3.142 1.279 -3.219 1.426 c
--3.289 1.573 -3.322 1.757 -3.322 1.985 c
--3.322 2.18 -3.289 2.345 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.837 c
--2.8 2.933 -2.645 3.003 -2.469 3.043 c
--2.293 3.091 -2.102 3.12 -1.896 3.132 c
--1.896 3.558 l
--1.543 3.558 l
--1.543 3.132 l
--1.319 3.12 -1.128 3.091 -0.97 3.043 c
--0.804 2.992 -0.669 2.918 -0.558 2.822 c
--0.44 2.735 -0.349 2.621 -0.279 2.484 c
--0.202 2.345 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.253 -1.213 2.459 -1.543 2.5 c
--1.543 1.368 l
--1.514 1.368 l
--1.506 1.368 -1.492 1.36 -1.469 1.353 c
--1.294 1.312 -1.117 1.264 -0.941 1.206 c
--0.756 1.147 -0.595 1.066 -0.455 0.971 c
--0.32 0.871 -0.213 0.743 -0.132 0.588 c
--0.044 0.431 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.503 -2.113 2.484 -2.19 2.455 c
--2.26 2.426 -2.319 2.386 -2.366 2.338 c
--2.406 2.297 -2.436 2.249 -2.454 2.191 c
--2.477 2.132 -2.484 2.066 -2.484 1.999 c
--2.484 1.912 -2.469 1.838 -2.439 1.779 c
--2.41 1.721 -2.373 1.669 -2.322 1.632 c
--2.263 1.592 -2.201 1.559 -2.131 1.529 c
--2.065 1.5 -1.984 1.47 -1.896 1.441 c
-h
--0.837 -0.014 m
--0.837 0.092 -0.86 0.177 -0.897 0.235 c
--0.926 0.302 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.53 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.529 -1.028 -0.44 c
--0.904 -0.345 -0.837 -0.201 -0.837 -0.014 c
-6.402 -2.66 m
-6.184 -2.66 5.993 -2.634 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.395 c
-5.284 -2.314 5.185 -2.219 5.108 -2.102 c
-5.039 -1.984 4.991 -1.855 4.961 -1.72 c
-5.858 -1.616 l
-5.895 -1.753 5.964 -1.859 6.064 -1.94 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.057 6.681 -2.028 c
-6.758 -1.999 6.828 -1.944 6.887 -1.866 c
-6.945 -1.797 6.99 -1.705 7.019 -1.587 c
-7.056 -1.469 7.078 -1.323 7.078 -1.146 c
-7.078 -0.955 l
-7.078 -0.889 7.082 -0.83 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.072 c
-6.464 -1.172 6.259 -1.219 6.034 -1.219 c
-5.829 -1.219 5.644 -1.183 5.49 -1.102 c
-5.343 -1.014 5.215 -0.897 5.108 -0.749 c
-5.009 -0.595 4.935 -0.411 4.888 -0.205 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.772 4.836 1.019 4.888 1.235 c
-4.946 1.449 5.027 1.632 5.137 1.779 c
-5.244 1.933 5.376 2.051 5.534 2.132 c
-5.689 2.22 5.876 2.264 6.093 2.264 c
-6.188 2.264 6.288 2.253 6.387 2.234 c
-6.483 2.213 6.571 2.18 6.652 2.132 c
-6.739 2.08 6.817 2.018 6.887 1.941 c
-6.964 1.86 7.026 1.768 7.078 1.661 c
-7.092 1.661 l
-7.092 1.808 l
-7.1 1.867 7.107 1.919 7.107 1.97 c
-7.115 2.029 7.122 2.077 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.151 2.22 c
-8.004 2.22 l
-7.993 2.139 7.982 2.029 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.161 l
-7.975 -1.414 7.938 -1.635 7.871 -1.822 c
-7.802 -2.006 7.699 -2.16 7.563 -2.278 c
-7.423 -2.403 7.258 -2.499 7.063 -2.557 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.53 m
-7.092 0.743 7.067 0.919 7.019 1.058 c
-6.978 1.206 6.924 1.324 6.857 1.411 c
-6.799 1.5 6.729 1.559 6.652 1.588 c
-6.571 1.625 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.621 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.368 c
-5.88 1.279 5.835 1.162 5.799 1.015 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.338 c
-6.049 -0.514 6.211 -0.602 6.417 -0.602 c
-6.483 -0.602 6.556 -0.588 6.637 -0.558 c
-6.725 -0.521 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.176 7.019 -0.029 c
-7.067 0.118 7.092 0.302 7.092 0.53 c
-11.036 -0.646 m
-12.168 -0.646 l
-12.168 -1.263 l
-8.86 -1.263 l
-8.86 -0.646 l
-10.124 -0.646 l
-10.124 1.603 l
-9.199 1.603 l
-9.199 2.22 l
-11.036 2.22 l
-h
-10.124 3.514 0.912 -0.676 re
-10.124 2.837 m
-13.597 1.603 m
-13.053 1.603 l
-13.053 2.22 l
-13.641 2.22 l
-13.92 3.117 l
-14.494 3.117 l
-14.494 2.22 l
-15.728 2.22 l
-15.728 1.603 l
-14.494 1.603 l
-14.494 -0.103 l
-14.494 -0.323 l
-14.501 -0.392 14.523 -0.455 14.552 -0.514 c
-14.589 -0.565 14.645 -0.61 14.714 -0.646 c
-14.791 -0.675 14.905 -0.691 15.052 -0.691 c
-15.188 -0.691 15.324 -0.687 15.464 -0.675 c
-15.599 -0.658 15.732 -0.631 15.861 -0.602 c
-15.861 -1.205 l
-15.78 -1.215 15.703 -1.23 15.626 -1.249 c
-15.545 -1.26 15.468 -1.267 15.391 -1.278 c
-15.31 -1.286 15.221 -1.294 15.125 -1.294 c
-15.038 -1.3 14.938 -1.308 14.832 -1.308 c
-14.645 -1.308 14.483 -1.294 14.346 -1.263 c
-14.218 -1.227 14.104 -1.183 14.009 -1.132 c
-13.92 -1.084 13.847 -1.024 13.788 -0.955 c
-13.729 -0.878 13.685 -0.801 13.656 -0.72 c
-13.627 -0.631 13.604 -0.544 13.597 -0.455 c
-13.586 -0.359 13.582 -0.264 13.582 -0.176 c
-h
-22.677 -1.323 m
-22.391 -1.323 22.148 -1.282 21.942 -1.205 c
-21.737 -1.117 21.564 -0.995 21.428 -0.837 c
-21.288 -0.683 21.185 -0.496 21.12 -0.278 c
-21.049 -0.055 21.016 0.192 21.016 0.456 c
-21.016 0.75 21.049 1.008 21.12 1.235 c
-21.197 1.459 21.303 1.646 21.442 1.794 c
-21.59 1.948 21.766 2.066 21.972 2.147 c
-22.177 2.234 22.412 2.278 22.677 2.278 c
-22.901 2.278 23.104 2.249 23.28 2.191 c
-23.456 2.132 23.607 2.047 23.736 1.941 c
-23.861 1.842 23.963 1.721 24.044 1.573 c
-24.121 1.434 24.177 1.283 24.206 1.118 c
-23.295 1.073 l
-23.265 1.25 23.196 1.389 23.089 1.5 c
-22.99 1.607 22.846 1.661 22.662 1.661 c
-22.416 1.661 22.24 1.559 22.134 1.353 c
-22.023 1.154 21.972 0.867 21.972 0.485 c
-21.972 -0.309 22.207 -0.706 22.677 -0.706 c
-22.843 -0.706 22.986 -0.654 23.104 -0.544 c
-23.221 -0.437 23.295 -0.275 23.324 -0.058 c
-24.235 -0.103 l
-24.206 -0.272 24.151 -0.426 24.074 -0.573 c
-24.004 -0.72 23.901 -0.852 23.765 -0.97 c
-23.636 -1.08 23.478 -1.168 23.295 -1.234 c
-23.118 -1.294 22.913 -1.323 22.677 -1.323 c
-28.384 0.485 m
-28.384 0.21 28.347 -0.04 28.281 -0.264 c
-28.212 -0.481 28.108 -0.668 27.973 -0.823 c
-27.833 -0.98 27.657 -1.102 27.443 -1.19 c
-27.227 -1.278 26.973 -1.323 26.679 -1.323 c
-26.404 -1.323 26.157 -1.278 25.944 -1.19 c
-25.739 -1.102 25.566 -0.98 25.43 -0.823 c
-25.29 -0.668 25.187 -0.481 25.121 -0.264 c
-25.051 -0.04 25.018 0.21 25.018 0.485 c
-25.018 0.739 25.047 0.975 25.106 1.191 c
-25.172 1.415 25.275 1.607 25.415 1.764 c
-25.551 1.929 25.727 2.058 25.944 2.147 c
-26.157 2.234 26.414 2.278 26.709 2.278 c
-27.021 2.278 27.281 2.234 27.487 2.147 c
-27.701 2.058 27.873 1.929 28.002 1.764 c
-28.138 1.607 28.237 1.415 28.296 1.191 c
-28.355 0.975 28.384 0.739 28.384 0.485 c
-27.429 0.485 m
-27.429 0.691 27.414 0.867 27.385 1.015 c
-27.362 1.162 27.326 1.283 27.267 1.382 c
-27.208 1.478 27.135 1.548 27.046 1.588 c
-26.959 1.636 26.848 1.661 26.724 1.661 c
-26.458 1.661 26.267 1.563 26.15 1.368 c
-26.032 1.18 25.974 0.886 25.974 0.485 c
-25.974 0.063 26.032 -0.242 26.15 -0.426 c
-26.267 -0.613 26.444 -0.706 26.679 -0.706 c
-26.804 -0.706 26.918 -0.687 27.017 -0.646 c
-27.113 -0.598 27.194 -0.525 27.252 -0.426 c
-27.318 -0.33 27.362 -0.205 27.385 -0.058 c
-27.414 0.088 27.429 0.269 27.429 0.485 c
-30.402 -1.263 m
-30.402 0.853 l
-30.402 1.019 30.394 1.154 30.387 1.264 c
-30.376 1.372 30.358 1.455 30.328 1.515 c
-30.306 1.58 30.277 1.632 30.24 1.661 c
-30.211 1.691 30.17 1.706 30.122 1.706 c
-30.063 1.706 30.009 1.676 29.961 1.617 c
-29.92 1.566 29.887 1.492 29.858 1.397 c
-29.828 1.309 29.803 1.195 29.784 1.058 c
-29.773 0.919 29.77 0.769 29.77 0.603 c
-29.77 -1.263 l
-29.02 -1.263 l
-29.02 1.47 l
-29.02 1.706 l
-29.02 1.926 l
-29.02 2.003 29.012 2.066 29.005 2.117 c
-29.005 2.22 l
-29.681 2.22 l
-29.681 2.132 l
-29.681 1.985 l
-29.689 1.926 29.696 1.867 29.696 1.808 c
-29.696 1.646 l
-29.71 1.646 l
-29.729 1.735 29.758 1.812 29.799 1.881 c
-29.836 1.96 29.88 2.029 29.931 2.087 c
-29.99 2.147 30.057 2.191 30.137 2.22 c
-30.214 2.257 30.302 2.278 30.402 2.278 c
-30.585 2.278 30.725 2.224 30.813 2.117 c
-30.909 2.018 30.979 1.86 31.019 1.646 c
-31.034 1.646 l
-31.071 1.742 31.111 1.831 31.152 1.912 c
-31.199 1.989 31.254 2.051 31.313 2.103 c
-31.372 2.161 31.438 2.205 31.519 2.234 c
-31.596 2.264 31.684 2.278 31.783 2.278 c
-31.919 2.278 32.033 2.253 32.122 2.205 c
-32.21 2.154 32.276 2.08 32.328 1.985 c
-32.386 1.885 32.423 1.757 32.445 1.603 c
-32.474 1.455 32.488 1.272 32.488 1.058 c
-32.488 -1.263 l
-31.769 -1.263 l
-31.769 0.853 l
-31.769 1.019 31.761 1.154 31.754 1.264 c
-31.742 1.372 31.725 1.455 31.695 1.515 c
-31.673 1.58 31.644 1.632 31.607 1.661 c
-31.578 1.691 31.537 1.706 31.489 1.706 c
-31.372 1.706 31.276 1.617 31.21 1.441 c
-31.152 1.272 31.122 1.015 31.122 0.662 c
-31.122 -1.263 l
-h
-34.462 -1.263 m
-34.462 0.853 l
-34.462 1.019 34.455 1.154 34.447 1.264 c
-34.437 1.372 34.418 1.455 34.389 1.515 c
-34.367 1.58 34.337 1.632 34.3 1.661 c
-34.271 1.691 34.231 1.706 34.183 1.706 c
-34.124 1.706 34.069 1.676 34.021 1.617 c
-33.98 1.566 33.948 1.492 33.918 1.397 c
-33.889 1.309 33.863 1.195 33.845 1.058 c
-33.834 0.919 33.83 0.769 33.83 0.603 c
-33.83 -1.263 l
-33.08 -1.263 l
-33.08 1.47 l
-33.08 1.706 l
-33.08 1.926 l
-33.08 2.003 33.074 2.066 33.066 2.117 c
-33.066 2.22 l
-33.742 2.22 l
-33.742 2.132 l
-33.742 1.985 l
-33.749 1.926 33.757 1.867 33.757 1.808 c
-33.757 1.646 l
-33.772 1.646 l
-33.789 1.735 33.82 1.812 33.859 1.881 c
-33.897 1.96 33.94 2.029 33.992 2.087 c
-34.051 2.147 34.117 2.191 34.198 2.22 c
-34.275 2.257 34.363 2.278 34.462 2.278 c
-34.646 2.278 34.786 2.224 34.874 2.117 c
-34.969 2.018 35.039 1.86 35.079 1.646 c
-35.094 1.646 l
-35.131 1.742 35.171 1.831 35.212 1.912 c
-35.26 1.989 35.314 2.051 35.374 2.103 c
-35.432 2.161 35.499 2.205 35.58 2.234 c
-35.657 2.264 35.744 2.278 35.844 2.278 c
-35.98 2.278 36.093 2.253 36.182 2.205 c
-36.27 2.154 36.336 2.08 36.388 1.985 c
-36.446 1.885 36.484 1.757 36.505 1.603 c
-36.535 1.455 36.55 1.272 36.55 1.058 c
-36.55 -1.263 l
-35.829 -1.263 l
-35.829 0.853 l
-35.829 1.019 35.821 1.154 35.815 1.264 c
-35.804 1.372 35.785 1.455 35.756 1.515 c
-35.734 1.58 35.704 1.632 35.667 1.661 c
-35.638 1.691 35.598 1.706 35.55 1.706 c
-35.432 1.706 35.337 1.617 35.27 1.441 c
-35.212 1.272 35.183 1.015 35.183 0.662 c
-35.183 -1.263 l
-h
-39.467 -0.646 m
-40.599 -0.646 l
-40.599 -1.263 l
-37.292 -1.263 l
-37.292 -0.646 l
-38.556 -0.646 l
-38.556 1.603 l
-37.63 1.603 l
-37.63 2.22 l
-39.467 2.22 l
-h
-38.556 3.514 0.911 -0.676 re
-38.556 2.837 m
-42.028 1.603 m
-41.485 1.603 l
-41.485 2.22 l
-42.073 2.22 l
-42.352 3.117 l
-42.925 3.117 l
-42.925 2.22 l
-44.16 2.22 l
-44.16 1.603 l
-42.925 1.603 l
-42.925 -0.103 l
-42.925 -0.323 l
-42.933 -0.392 42.954 -0.455 42.984 -0.514 c
-43.021 -0.565 43.076 -0.61 43.146 -0.646 c
-43.223 -0.675 43.337 -0.691 43.484 -0.691 c
-43.619 -0.691 43.756 -0.687 43.895 -0.675 c
-44.031 -0.658 44.164 -0.631 44.292 -0.602 c
-44.292 -1.205 l
-44.211 -1.215 44.134 -1.23 44.057 -1.249 c
-43.976 -1.26 43.899 -1.267 43.822 -1.278 c
-43.741 -1.286 43.653 -1.294 43.557 -1.294 c
-43.469 -1.3 43.37 -1.308 43.264 -1.308 c
-43.076 -1.308 42.914 -1.294 42.778 -1.263 c
-42.649 -1.227 42.536 -1.183 42.441 -1.132 c
-42.352 -1.084 42.279 -1.024 42.219 -0.955 c
-42.161 -0.878 42.117 -0.801 42.088 -0.72 c
-42.058 -0.631 42.036 -0.544 42.028 -0.455 c
-42.017 -0.359 42.013 -0.264 42.013 -0.176 c
-h
-f
-Q
-q 1 0 0 1 299.9491 211.3232 cm
-0 0 m
--0.029 -0.58 -0.191 -1.022 -0.484 -1.323 c
--0.779 -1.627 -1.198 -1.779 -1.734 -1.779 c
--2.263 -1.779 -2.69 -1.58 -3.013 -1.176 c
--3.329 -0.764 -3.484 -0.206 -3.484 0.5 c
--3.484 1.47 l
--3.484 2.165 -3.322 2.712 -2.998 3.117 c
--2.675 3.516 -2.23 3.719 -1.66 3.719 c
--1.153 3.719 -0.756 3.561 -0.47 3.248 c
--0.187 2.944 -0.029 2.502 0 1.926 c
--0.691 1.926 l
--0.72 2.367 -0.816 2.679 -0.97 2.866 c
--1.117 3.05 -1.348 3.146 -1.66 3.146 c
--2.036 3.146 -2.319 2.999 -2.514 2.705 c
--2.711 2.418 -2.807 2.003 -2.807 1.455 c
--2.807 0.47 l
--2.807 -0.07 -2.715 -0.485 -2.528 -0.779 c
--2.344 -1.066 -2.08 -1.205 -1.734 -1.205 c
--1.381 -1.205 -1.128 -1.117 -0.97 -0.941 c
--0.816 -0.764 -0.72 -0.452 -0.691 0 c
-h
-2.455 1.661 m
-2.367 1.679 2.268 1.691 2.161 1.691 c
-1.827 1.691 1.592 1.507 1.455 1.147 c
-1.455 -1.705 l
-0.809 -1.705 l
-0.809 2.278 l
-1.441 2.278 l
-1.455 1.866 l
-1.632 2.19 1.875 2.352 2.19 2.352 c
-2.297 2.352 2.385 2.33 2.455 2.294 c
-h
-4.454 -1.779 m
-3.954 -1.779 3.572 -1.631 3.308 -1.338 c
-3.043 -1.043 2.911 -0.61 2.911 -0.029 c
-2.911 0.441 l
-2.911 1.037 3.036 1.503 3.293 1.837 c
-3.558 2.18 3.917 2.352 4.381 2.352 c
-4.84 2.352 5.182 2.198 5.409 1.897 c
-5.644 1.602 5.766 1.139 5.777 0.515 c
-5.777 0.088 l
-3.558 0.088 l
-3.558 0 l
-3.558 -0.434 3.635 -0.746 3.793 -0.941 c
-3.958 -1.128 4.189 -1.22 4.484 -1.22 c
-4.678 -1.22 4.851 -1.187 4.998 -1.117 c
-5.145 -1.04 5.281 -0.922 5.409 -0.764 c
-5.748 -1.176 l
-5.461 -1.58 5.031 -1.779 4.454 -1.779 c
-4.381 1.793 m
-4.105 1.793 3.903 1.698 3.778 1.514 c
-3.649 1.326 3.576 1.037 3.558 0.647 c
-5.13 0.647 l
-5.13 0.735 l
-5.108 1.118 5.042 1.386 4.925 1.544 c
-4.807 1.709 4.623 1.793 4.381 1.793 c
-8.599 -1.705 m
-8.559 -1.617 8.533 -1.469 8.526 -1.264 c
-8.291 -1.61 7.996 -1.779 7.643 -1.779 c
-7.28 -1.779 6.997 -1.683 6.791 -1.484 c
-6.593 -1.278 6.498 -0.992 6.498 -0.617 c
-6.498 -0.216 6.633 0.103 6.909 0.338 c
-7.181 0.58 7.556 0.706 8.026 0.706 c
-8.511 0.706 l
-8.511 1.132 l
-8.511 1.367 8.456 1.532 8.349 1.631 c
-8.239 1.738 8.077 1.793 7.865 1.793 c
-7.666 1.793 7.504 1.735 7.379 1.617 c
-7.262 1.5 7.203 1.353 7.203 1.176 c
-6.556 1.176 l
-6.556 1.371 6.615 1.562 6.733 1.749 c
-6.857 1.933 7.019 2.08 7.217 2.19 c
-7.423 2.297 7.651 2.352 7.909 2.352 c
-8.309 2.352 8.614 2.249 8.819 2.043 c
-9.033 1.837 9.147 1.544 9.158 1.161 c
-9.158 -0.852 l
-9.158 -1.157 9.195 -1.422 9.276 -1.646 c
-9.276 -1.705 l
-h
-7.732 -1.191 m
-7.897 -1.191 8.048 -1.147 8.187 -1.058 c
-8.335 -0.97 8.441 -0.86 8.511 -0.721 c
-8.511 0.22 l
-8.144 0.22 l
-7.828 0.22 7.585 0.151 7.408 0.015 c
-7.232 -0.114 7.144 -0.301 7.144 -0.544 c
-7.144 -0.771 7.188 -0.937 7.277 -1.043 c
-7.364 -1.143 7.516 -1.191 7.732 -1.191 c
-11.009 3.234 m
-11.009 2.278 l
-11.612 2.278 l
-11.612 1.749 l
-11.009 1.749 l
-11.009 -0.721 l
-11.009 -0.878 11.032 -0.995 11.084 -1.073 c
-11.142 -1.153 11.231 -1.191 11.348 -1.191 c
-11.437 -1.191 11.524 -1.176 11.612 -1.147 c
-11.612 -1.705 l
-11.466 -1.753 11.311 -1.779 11.157 -1.779 c
-10.899 -1.779 10.705 -1.687 10.569 -1.5 c
-10.429 -1.315 10.363 -1.055 10.363 -0.721 c
-10.363 1.749 l
-9.76 1.749 l
-9.76 2.278 l
-10.363 2.278 l
-10.363 3.234 l
-h
-13.803 -1.779 m
-13.303 -1.779 12.921 -1.631 12.656 -1.338 c
-12.391 -1.043 12.26 -0.61 12.26 -0.029 c
-12.26 0.441 l
-12.26 1.037 12.384 1.503 12.642 1.837 c
-12.906 2.18 13.266 2.352 13.729 2.352 c
-14.188 2.352 14.531 2.198 14.758 1.897 c
-14.993 1.602 15.115 1.139 15.125 0.515 c
-15.125 0.088 l
-12.906 0.088 l
-12.906 0 l
-12.906 -0.434 12.983 -0.746 13.141 -0.941 c
-13.307 -1.128 13.538 -1.22 13.832 -1.22 c
-14.027 -1.22 14.199 -1.187 14.346 -1.117 c
-14.494 -1.04 14.629 -0.922 14.758 -0.764 c
-15.096 -1.176 l
-14.81 -1.58 14.379 -1.779 13.803 -1.779 c
-13.729 1.793 m
-13.453 1.793 13.251 1.698 13.126 1.514 c
-12.998 1.326 12.925 1.037 12.906 0.647 c
-14.479 0.647 l
-14.479 0.735 l
-14.457 1.118 14.39 1.386 14.273 1.544 c
-14.155 1.709 13.972 1.793 13.729 1.793 c
-18.242 2.278 m
-18.257 1.837 l
-18.51 2.18 18.834 2.352 19.227 2.352 c
-19.932 2.352 20.289 1.881 20.299 0.941 c
-20.299 -1.705 l
-19.653 -1.705 l
-19.653 0.912 l
-19.653 1.224 19.597 1.444 19.491 1.573 c
-19.381 1.698 19.227 1.764 19.021 1.764 c
-18.863 1.764 18.716 1.709 18.58 1.602 c
-18.452 1.492 18.348 1.357 18.271 1.191 c
-18.271 -1.705 l
-17.625 -1.705 l
-17.625 2.278 l
-h
-22.695 -1.779 m
-22.196 -1.779 21.814 -1.631 21.549 -1.338 c
-21.284 -1.043 21.152 -0.61 21.152 -0.029 c
-21.152 0.441 l
-21.152 1.037 21.278 1.503 21.534 1.837 c
-21.799 2.18 22.159 2.352 22.622 2.352 c
-23.081 2.352 23.423 2.198 23.651 1.897 c
-23.886 1.602 24.008 1.139 24.019 0.515 c
-24.019 0.088 l
-21.799 0.088 l
-21.799 0 l
-21.799 -0.434 21.876 -0.746 22.034 -0.941 c
-22.2 -1.128 22.431 -1.22 22.725 -1.22 c
-22.92 -1.22 23.092 -1.187 23.239 -1.117 c
-23.387 -1.04 23.522 -0.922 23.651 -0.764 c
-23.989 -1.176 l
-23.703 -1.58 23.273 -1.779 22.695 -1.779 c
-22.622 1.793 m
-22.346 1.793 22.144 1.698 22.02 1.514 c
-21.891 1.326 21.818 1.037 21.799 0.647 c
-23.372 0.647 l
-23.372 0.735 l
-23.35 1.118 23.283 1.386 23.166 1.544 c
-23.048 1.709 22.865 1.793 22.622 1.793 c
-27.767 -0.559 m
-28.37 2.278 l
-29.016 2.278 l
-28.031 -1.705 l
-27.517 -1.705 l
-26.738 1.147 l
-25.988 -1.705 l
-25.459 -1.705 l
-24.503 2.278 l
-25.136 2.278 l
-25.753 -0.485 l
-26.488 2.278 l
-27.002 2.278 l
-h
-32.794 -1.22 m
-33.007 -1.22 33.18 -1.157 33.309 -1.029 c
-33.444 -0.893 33.518 -0.702 33.529 -0.455 c
-34.146 -0.455 l
-34.124 -0.838 33.988 -1.157 33.735 -1.411 c
-33.477 -1.658 33.165 -1.779 32.794 -1.779 c
-32.301 -1.779 31.927 -1.627 31.662 -1.323 c
-31.405 -1.01 31.28 -0.544 31.28 0.073 c
-31.28 0.515 l
-31.28 1.11 31.405 1.565 31.662 1.881 c
-31.927 2.194 32.301 2.352 32.794 2.352 c
-33.194 2.352 33.514 2.219 33.749 1.955 c
-33.992 1.698 34.124 1.353 34.146 0.912 c
-33.529 0.912 l
-33.507 1.205 33.433 1.426 33.309 1.573 c
-33.191 1.72 33.018 1.793 32.794 1.793 c
-32.5 1.793 32.283 1.694 32.147 1.5 c
-32.008 1.312 31.934 1.004 31.927 0.573 c
-31.927 0.059 l
-31.927 -0.411 31.993 -0.746 32.133 -0.941 c
-32.28 -1.128 32.5 -1.22 32.794 -1.22 c
-34.763 0.47 m
-34.763 1.047 34.9 1.503 35.175 1.837 c
-35.458 2.18 35.829 2.352 36.292 2.352 c
-36.752 2.352 37.119 2.183 37.394 1.852 c
-37.678 1.529 37.824 1.081 37.836 0.515 c
-37.836 0.088 l
-37.836 -0.482 37.693 -0.937 37.409 -1.278 c
-37.134 -1.613 36.766 -1.779 36.307 -1.779 c
-35.844 -1.779 35.472 -1.617 35.19 -1.294 c
-34.915 -0.962 34.771 -0.522 34.763 0.029 c
-h
-35.41 0.088 m
-35.41 -0.316 35.487 -0.632 35.646 -0.867 c
-35.811 -1.103 36.031 -1.22 36.307 -1.22 c
-36.873 -1.22 37.167 -0.808 37.189 0.015 c
-37.189 0.47 l
-37.189 0.871 37.105 1.191 36.939 1.426 c
-36.781 1.669 36.565 1.793 36.292 1.793 c
-36.027 1.793 35.811 1.669 35.646 1.426 c
-35.487 1.191 35.41 0.871 35.41 0.47 c
-h
-39.291 2.278 m
-39.306 1.911 l
-39.548 2.205 39.868 2.352 40.261 2.352 c
-40.702 2.352 41.011 2.153 41.187 1.764 c
-41.44 2.153 41.79 2.352 42.231 2.352 c
-42.965 2.352 43.341 1.889 43.362 0.97 c
-43.362 -1.705 l
-42.716 -1.705 l
-42.716 0.912 l
-42.716 1.205 42.661 1.419 42.554 1.558 c
-42.455 1.694 42.282 1.764 42.04 1.764 c
-41.841 1.764 41.679 1.683 41.554 1.529 c
-41.437 1.382 41.367 1.191 41.348 0.956 c
-41.348 -1.705 l
-40.687 -1.705 l
-40.687 0.941 l
-40.687 1.488 40.467 1.764 40.026 1.764 c
-39.692 1.764 39.456 1.602 39.32 1.278 c
-39.32 -1.705 l
-38.674 -1.705 l
-38.674 2.278 l
-h
-44.95 2.278 m
-44.965 1.911 l
-45.207 2.205 45.527 2.352 45.92 2.352 c
-46.361 2.352 46.67 2.153 46.846 1.764 c
-47.1 2.153 47.449 2.352 47.89 2.352 c
-48.625 2.352 48.999 1.889 49.022 0.97 c
-49.022 -1.705 l
-48.375 -1.705 l
-48.375 0.912 l
-48.375 1.205 48.32 1.419 48.213 1.558 c
-48.114 1.694 47.941 1.764 47.698 1.764 c
-47.501 1.764 47.339 1.683 47.214 1.529 c
-47.096 1.382 47.027 1.191 47.008 0.956 c
-47.008 -1.705 l
-46.346 -1.705 l
-46.346 0.941 l
-46.346 1.488 46.126 1.764 45.685 1.764 c
-45.35 1.764 45.115 1.602 44.98 1.278 c
-44.98 -1.705 l
-44.332 -1.705 l
-44.332 2.278 l
-h
-50.697 -1.705 -0.647 3.983 re
-50.742 3.322 m
-50.742 3.212 50.712 3.12 50.653 3.042 c
-50.595 2.973 50.499 2.94 50.374 2.94 c
-50.256 2.94 50.161 2.973 50.094 3.042 c
-50.036 3.12 50.007 3.212 50.007 3.322 c
-50.007 3.439 50.036 3.532 50.094 3.601 c
-50.161 3.678 50.256 3.719 50.374 3.719 c
-50.499 3.719 50.595 3.678 50.653 3.601 c
-50.712 3.52 50.742 3.429 50.742 3.322 c
-52.564 3.234 m
-52.564 2.278 l
-53.167 2.278 l
-53.167 1.749 l
-52.564 1.749 l
-52.564 -0.721 l
-52.564 -0.878 52.586 -0.995 52.637 -1.073 c
-52.696 -1.153 52.785 -1.191 52.902 -1.191 c
-52.99 -1.191 53.078 -1.176 53.167 -1.147 c
-53.167 -1.705 l
-53.02 -1.753 52.866 -1.779 52.711 -1.779 c
-52.454 -1.779 52.259 -1.687 52.124 -1.5 c
-51.983 -1.315 51.918 -1.055 51.918 -0.721 c
-51.918 1.749 l
-51.315 1.749 l
-51.315 2.278 l
-51.918 2.278 l
-51.918 3.234 l
-h
-55.945 -1.705 m
-55.945 1.749 l
-55.416 1.749 l
-55.416 2.278 l
-55.945 2.278 l
-55.945 2.734 l
-55.945 3.135 56.041 3.447 56.239 3.675 c
-56.444 3.899 56.724 4.013 57.077 4.013 c
-57.213 4.013 57.345 3.991 57.474 3.954 c
-57.444 3.41 l
-57.345 3.429 57.246 3.439 57.15 3.439 c
-56.775 3.439 56.592 3.175 56.592 2.646 c
-56.592 2.278 l
-57.267 2.278 l
-57.267 1.749 l
-56.592 1.749 l
-56.592 -1.705 l
-h
-59.679 1.661 m
-59.59 1.679 59.491 1.691 59.384 1.691 c
-59.05 1.691 58.815 1.507 58.679 1.147 c
-58.679 -1.705 l
-58.032 -1.705 l
-58.032 2.278 l
-58.664 2.278 l
-58.679 1.866 l
-58.855 2.19 59.098 2.352 59.414 2.352 c
-59.521 2.352 59.609 2.33 59.679 2.294 c
-h
-60.12 0.47 m
-60.12 1.047 60.255 1.503 60.531 1.837 c
-60.814 2.18 61.185 2.352 61.648 2.352 c
-62.108 2.352 62.475 2.183 62.75 1.852 c
-63.033 1.529 63.181 1.081 63.191 0.515 c
-63.191 0.088 l
-63.191 -0.482 63.048 -0.937 62.765 -1.278 c
-62.49 -1.613 62.122 -1.779 61.663 -1.779 c
-61.2 -1.779 60.829 -1.617 60.546 -1.294 c
-60.27 -0.962 60.126 -0.522 60.12 0.029 c
-h
-60.766 0.088 m
-60.766 -0.316 60.843 -0.632 61.001 -0.867 c
-61.167 -1.103 61.387 -1.22 61.663 -1.22 c
-62.229 -1.22 62.522 -0.808 62.545 0.015 c
-62.545 0.47 l
-62.545 0.871 62.46 1.191 62.295 1.426 c
-62.137 1.669 61.92 1.793 61.648 1.793 c
-61.383 1.793 61.167 1.669 61.001 1.426 c
-60.843 1.191 60.766 0.871 60.766 0.47 c
-h
-64.647 2.278 m
-64.662 1.911 l
-64.904 2.205 65.223 2.352 65.617 2.352 c
-66.058 2.352 66.366 2.153 66.543 1.764 c
-66.796 2.153 67.145 2.352 67.586 2.352 c
-68.321 2.352 68.697 1.889 68.718 0.97 c
-68.718 -1.705 l
-68.072 -1.705 l
-68.072 0.912 l
-68.072 1.205 68.016 1.419 67.91 1.558 c
-67.81 1.694 67.638 1.764 67.395 1.764 c
-67.197 1.764 67.035 1.683 66.91 1.529 c
-66.792 1.382 66.723 1.191 66.705 0.956 c
-66.705 -1.705 l
-66.043 -1.705 l
-66.043 0.941 l
-66.043 1.488 65.823 1.764 65.381 1.764 c
-65.047 1.764 64.812 1.602 64.676 1.278 c
-64.676 -1.705 l
-64.03 -1.705 l
-64.03 2.278 l
-h
-72.79 -1.22 m
-73.003 -1.22 73.175 -1.157 73.304 -1.029 c
-73.441 -0.893 73.514 -0.702 73.525 -0.455 c
-74.142 -0.455 l
-74.12 -0.838 73.984 -1.157 73.73 -1.411 c
-73.474 -1.658 73.161 -1.779 72.79 -1.779 c
-72.298 -1.779 71.922 -1.627 71.658 -1.323 c
-71.401 -1.01 71.276 -0.544 71.276 0.073 c
-71.276 0.515 l
-71.276 1.11 71.401 1.565 71.658 1.881 c
-71.922 2.194 72.298 2.352 72.79 2.352 c
-73.19 2.352 73.51 2.219 73.745 1.955 c
-73.988 1.698 74.12 1.353 74.142 0.912 c
-73.525 0.912 l
-73.503 1.205 73.429 1.426 73.304 1.573 c
-73.187 1.72 73.015 1.793 72.79 1.793 c
-72.496 1.793 72.279 1.694 72.143 1.5 c
-72.003 1.312 71.93 1.004 71.922 0.573 c
-71.922 0.059 l
-71.922 -0.411 71.989 -0.746 72.128 -0.941 c
-72.275 -1.128 72.496 -1.22 72.79 -1.22 c
-75.539 1.866 m
-75.793 2.19 76.112 2.352 76.494 2.352 c
-77.2 2.352 77.556 1.881 77.567 0.941 c
-77.567 -1.705 l
-76.92 -1.705 l
-76.92 0.912 l
-76.92 1.224 76.865 1.444 76.759 1.573 c
-76.649 1.698 76.494 1.764 76.288 1.764 c
-76.13 1.764 75.983 1.709 75.847 1.602 c
-75.719 1.492 75.616 1.357 75.539 1.191 c
-75.539 -1.705 l
-74.892 -1.705 l
-74.892 3.94 l
-75.539 3.94 l
-h
-80.566 -1.705 m
-80.525 -1.617 80.5 -1.469 80.492 -1.264 c
-80.257 -1.61 79.963 -1.779 79.61 -1.779 c
-79.247 -1.779 78.964 -1.683 78.758 -1.484 c
-78.559 -1.278 78.464 -0.992 78.464 -0.617 c
-78.464 -0.216 78.6 0.103 78.875 0.338 c
-79.147 0.58 79.523 0.706 79.993 0.706 c
-80.477 0.706 l
-80.477 1.132 l
-80.477 1.367 80.423 1.532 80.316 1.631 c
-80.206 1.738 80.044 1.793 79.831 1.793 c
-79.633 1.793 79.471 1.735 79.346 1.617 c
-79.228 1.5 79.17 1.353 79.17 1.176 c
-78.523 1.176 l
-78.523 1.371 78.582 1.562 78.699 1.749 c
-78.824 1.933 78.985 2.08 79.184 2.19 c
-79.39 2.297 79.618 2.352 79.875 2.352 c
-80.275 2.352 80.581 2.249 80.786 2.043 c
-81 1.837 81.113 1.544 81.125 1.161 c
-81.125 -0.852 l
-81.125 -1.157 81.161 -1.422 81.242 -1.646 c
-81.242 -1.705 l
-h
-79.698 -1.191 m
-79.864 -1.191 80.015 -1.147 80.154 -1.058 c
-80.301 -0.97 80.408 -0.86 80.477 -0.721 c
-80.477 0.22 l
-80.111 0.22 l
-79.794 0.22 79.552 0.151 79.375 0.015 c
-79.199 -0.114 79.111 -0.301 79.111 -0.544 c
-79.111 -0.771 79.155 -0.937 79.243 -1.043 c
-79.331 -1.143 79.482 -1.191 79.698 -1.191 c
-82.741 2.278 m
-82.756 1.837 l
-83.01 2.18 83.333 2.352 83.726 2.352 c
-84.431 2.352 84.788 1.881 84.799 0.941 c
-84.799 -1.705 l
-84.152 -1.705 l
-84.152 0.912 l
-84.152 1.224 84.097 1.444 83.991 1.573 c
-83.88 1.698 83.726 1.764 83.521 1.764 c
-83.363 1.764 83.215 1.709 83.079 1.602 c
-82.951 1.492 82.848 1.357 82.771 1.191 c
-82.771 -1.705 l
-82.124 -1.705 l
-82.124 2.278 l
-h
-85.637 0.47 m
-85.637 1.087 85.747 1.551 85.975 1.866 c
-86.199 2.19 86.534 2.352 86.974 2.352 c
-87.375 2.352 87.68 2.176 87.886 1.823 c
-87.93 2.278 l
-88.518 2.278 l
-88.518 -1.749 l
-88.518 -2.238 88.389 -2.616 88.136 -2.881 c
-87.878 -3.146 87.525 -3.278 87.078 -3.278 c
-86.879 -3.278 86.659 -3.227 86.416 -3.131 c
-86.17 -3.032 85.99 -2.911 85.873 -2.763 c
-86.137 -2.323 l
-86.401 -2.587 86.699 -2.72 87.033 -2.72 c
-87.57 -2.72 87.845 -2.425 87.857 -1.837 c
-87.857 -1.309 l
-87.651 -1.624 87.35 -1.779 86.96 -1.779 c
-86.548 -1.779 86.225 -1.627 85.99 -1.323 c
-85.762 -1.01 85.644 -0.559 85.637 0.029 c
-h
-86.299 0.088 m
-86.299 -0.353 86.361 -0.683 86.49 -0.897 c
-86.615 -1.103 86.831 -1.205 87.136 -1.205 c
-87.46 -1.205 87.699 -1.04 87.857 -0.706 c
-87.857 1.278 l
-87.687 1.602 87.448 1.764 87.136 1.764 c
-86.842 1.764 86.625 1.661 86.49 1.455 c
-86.361 1.249 86.299 0.926 86.299 0.485 c
-h
-90.899 -1.779 m
-90.399 -1.779 90.017 -1.631 89.753 -1.338 c
-89.488 -1.043 89.356 -0.61 89.356 -0.029 c
-89.356 0.441 l
-89.356 1.037 89.481 1.503 89.738 1.837 c
-90.002 2.18 90.363 2.352 90.826 2.352 c
-91.285 2.352 91.627 2.198 91.855 1.897 c
-92.09 1.602 92.211 1.139 92.223 0.515 c
-92.223 0.088 l
-90.002 0.088 l
-90.002 0 l
-90.002 -0.434 90.08 -0.746 90.238 -0.941 c
-90.403 -1.128 90.635 -1.22 90.929 -1.22 c
-91.124 -1.22 91.296 -1.187 91.443 -1.117 c
-91.59 -1.04 91.726 -0.922 91.855 -0.764 c
-92.192 -1.176 l
-91.906 -1.58 91.477 -1.779 90.899 -1.779 c
-90.826 1.793 m
-90.55 1.793 90.348 1.698 90.223 1.514 c
-90.095 1.326 90.021 1.037 90.002 0.647 c
-91.575 0.647 l
-91.575 0.735 l
-91.554 1.118 91.487 1.386 91.369 1.544 c
-91.252 1.709 91.068 1.793 90.826 1.793 c
-94.941 -0.691 m
-94.941 -0.544 94.887 -0.422 94.779 -0.324 c
-94.669 -0.228 94.463 -0.11 94.162 0.029 c
-93.817 0.177 93.574 0.298 93.428 0.397 c
-93.281 0.503 93.17 0.621 93.104 0.75 c
-93.034 0.875 93.001 1.033 93.001 1.22 c
-93.001 1.544 93.119 1.812 93.354 2.028 c
-93.589 2.242 93.89 2.352 94.265 2.352 c
-94.648 2.352 94.956 2.238 95.192 2.014 c
-95.427 1.786 95.544 1.5 95.544 1.147 c
-94.897 1.147 l
-94.897 1.323 94.839 1.474 94.721 1.602 c
-94.604 1.727 94.449 1.793 94.265 1.793 c
-94.067 1.793 93.916 1.738 93.81 1.631 c
-93.699 1.532 93.648 1.4 93.648 1.235 c
-93.648 1.106 93.684 1 93.765 0.912 c
-93.842 0.831 94.033 0.728 94.339 0.603 c
-94.816 0.416 95.147 0.228 95.323 0.044 c
-95.5 -0.133 95.589 -0.36 95.589 -0.632 c
-95.589 -0.985 95.463 -1.264 95.221 -1.469 c
-94.986 -1.675 94.669 -1.779 94.28 -1.779 c
-93.858 -1.779 93.52 -1.661 93.266 -1.426 c
-93.009 -1.183 92.884 -0.878 92.884 -0.515 c
-93.53 -0.515 l
-93.538 -0.742 93.607 -0.918 93.736 -1.043 c
-93.861 -1.161 94.045 -1.22 94.28 -1.22 c
-94.493 -1.22 94.655 -1.172 94.765 -1.073 c
-94.883 -0.977 94.941 -0.849 94.941 -0.691 c
-100.189 -1.705 m
-100.148 -1.617 100.123 -1.469 100.115 -1.264 c
-99.88 -1.61 99.587 -1.779 99.234 -1.779 c
-98.87 -1.779 98.587 -1.683 98.381 -1.484 c
-98.183 -1.278 98.087 -0.992 98.087 -0.617 c
-98.087 -0.216 98.224 0.103 98.498 0.338 c
-98.771 0.58 99.145 0.706 99.616 0.706 c
-100.101 0.706 l
-100.101 1.132 l
-100.101 1.367 100.046 1.532 99.939 1.631 c
-99.829 1.738 99.668 1.793 99.454 1.793 c
-99.256 1.793 99.094 1.735 98.969 1.617 c
-98.851 1.5 98.793 1.353 98.793 1.176 c
-98.145 1.176 l
-98.145 1.371 98.205 1.562 98.322 1.749 c
-98.447 1.933 98.609 2.08 98.808 2.19 c
-99.013 2.297 99.241 2.352 99.498 2.352 c
-99.899 2.352 100.204 2.249 100.41 2.043 c
-100.622 1.837 100.736 1.544 100.748 1.161 c
-100.748 -0.852 l
-100.748 -1.157 100.784 -1.422 100.865 -1.646 c
-100.865 -1.705 l
-h
-99.321 -1.191 m
-99.487 -1.191 99.637 -1.147 99.778 -1.058 c
-99.924 -0.97 100.031 -0.86 100.101 -0.721 c
-100.101 0.22 l
-99.733 0.22 l
-99.417 0.22 99.175 0.151 98.999 0.015 c
-98.822 -0.114 98.733 -0.301 98.733 -0.544 c
-98.733 -0.771 98.778 -0.937 98.866 -1.043 c
-98.954 -1.143 99.105 -1.191 99.321 -1.191 c
-101.615 0.47 m
-101.615 1.077 101.725 1.544 101.953 1.866 c
-102.188 2.19 102.515 2.352 102.938 2.352 c
-103.32 2.352 103.618 2.194 103.834 1.881 c
-103.834 3.94 l
-104.481 3.94 l
-104.481 -1.705 l
-103.893 -1.705 l
-103.849 -1.278 l
-103.643 -1.613 103.338 -1.779 102.938 -1.779 c
-102.526 -1.779 102.203 -1.624 101.968 -1.309 c
-101.732 -0.985 101.615 -0.529 101.615 0.059 c
-h
-102.261 0.088 m
-102.261 -0.353 102.324 -0.683 102.453 -0.897 c
-102.589 -1.103 102.809 -1.205 103.114 -1.205 c
-103.437 -1.205 103.676 -1.043 103.834 -0.721 c
-103.834 1.294 l
-103.666 1.606 103.427 1.764 103.114 1.764 c
-102.809 1.764 102.589 1.661 102.453 1.455 c
-102.324 1.249 102.261 0.926 102.261 0.485 c
-h
-105.349 0.47 m
-105.349 1.077 105.459 1.544 105.686 1.866 c
-105.922 2.19 106.249 2.352 106.671 2.352 c
-107.053 2.352 107.352 2.194 107.568 1.881 c
-107.568 3.94 l
-108.215 3.94 l
-108.215 -1.705 l
-107.627 -1.705 l
-107.583 -1.278 l
-107.377 -1.613 107.072 -1.779 106.671 -1.779 c
-106.259 -1.779 105.937 -1.624 105.701 -1.309 c
-105.466 -0.985 105.349 -0.529 105.349 0.059 c
-h
-105.995 0.088 m
-105.995 -0.353 106.058 -0.683 106.186 -0.897 c
-106.322 -1.103 106.542 -1.205 106.847 -1.205 c
-107.171 -1.205 107.41 -1.043 107.568 -0.721 c
-107.568 1.294 l
-107.399 1.606 107.161 1.764 106.847 1.764 c
-106.542 1.764 106.322 1.661 106.186 1.455 c
-106.058 1.249 105.995 0.926 105.995 0.485 c
-h
-110.64 -1.779 m
-110.14 -1.779 109.758 -1.631 109.494 -1.338 c
-109.229 -1.043 109.097 -0.61 109.097 -0.029 c
-109.097 0.441 l
-109.097 1.037 109.222 1.503 109.479 1.837 c
-109.744 2.18 110.103 2.352 110.567 2.352 c
-111.026 2.352 111.368 2.198 111.595 1.897 c
-111.83 1.602 111.952 1.139 111.963 0.515 c
-111.963 0.088 l
-109.744 0.088 l
-109.744 0 l
-109.744 -0.434 109.821 -0.746 109.979 -0.941 c
-110.144 -1.128 110.375 -1.22 110.669 -1.22 c
-110.864 -1.22 111.037 -1.187 111.184 -1.117 c
-111.331 -1.04 111.467 -0.922 111.595 -0.764 c
-111.934 -1.176 l
-111.647 -1.58 111.217 -1.779 110.64 -1.779 c
-110.567 1.793 m
-110.291 1.793 110.089 1.698 109.964 1.514 c
-109.835 1.326 109.762 1.037 109.744 0.647 c
-111.316 0.647 l
-111.316 0.735 l
-111.294 1.118 111.228 1.386 111.111 1.544 c
-110.993 1.709 110.809 1.793 110.567 1.793 c
-112.609 0.47 m
-112.609 1.077 112.72 1.544 112.948 1.866 c
-113.183 2.19 113.511 2.352 113.933 2.352 c
-114.315 2.352 114.612 2.194 114.829 1.881 c
-114.829 3.94 l
-115.476 3.94 l
-115.476 -1.705 l
-114.888 -1.705 l
-114.844 -1.278 l
-114.638 -1.613 114.333 -1.779 113.933 -1.779 c
-113.521 -1.779 113.197 -1.624 112.962 -1.309 c
-112.727 -0.985 112.609 -0.529 112.609 0.059 c
-h
-113.257 0.088 m
-113.257 -0.353 113.319 -0.683 113.448 -0.897 c
-113.584 -1.103 113.804 -1.205 114.109 -1.205 c
-114.432 -1.205 114.671 -1.043 114.829 -0.721 c
-114.829 1.294 l
-114.66 1.606 114.421 1.764 114.109 1.764 c
-113.804 1.764 113.584 1.661 113.448 1.455 c
-113.319 1.249 113.257 0.926 113.257 0.485 c
-h
-119.048 3.234 m
-119.048 2.278 l
-119.651 2.278 l
-119.651 1.749 l
-119.048 1.749 l
-119.048 -0.721 l
-119.048 -0.878 119.07 -0.995 119.121 -1.073 c
-119.18 -1.153 119.269 -1.191 119.386 -1.191 c
-119.474 -1.191 119.562 -1.176 119.651 -1.147 c
-119.651 -1.705 l
-119.504 -1.753 119.35 -1.779 119.194 -1.779 c
-118.938 -1.779 118.743 -1.687 118.607 -1.5 c
-118.467 -1.315 118.401 -1.055 118.401 -0.721 c
-118.401 1.749 l
-117.798 1.749 l
-117.798 2.278 l
-118.401 2.278 l
-118.401 3.234 l
-h
-120.21 0.47 m
-120.21 1.047 120.345 1.503 120.621 1.837 c
-120.904 2.18 121.274 2.352 121.738 2.352 c
-122.197 2.352 122.564 2.183 122.84 1.852 c
-123.123 1.529 123.27 1.081 123.281 0.515 c
-123.281 0.088 l
-123.281 -0.482 123.138 -0.937 122.855 -1.278 c
-122.579 -1.613 122.212 -1.779 121.752 -1.779 c
-121.29 -1.779 120.918 -1.617 120.636 -1.294 c
-120.36 -0.962 120.216 -0.522 120.21 0.029 c
-h
-120.856 0.088 m
-120.856 -0.316 120.933 -0.632 121.091 -0.867 c
-121.257 -1.103 121.477 -1.22 121.752 -1.22 c
-122.319 -1.22 122.612 -0.808 122.635 0.015 c
-122.635 0.47 l
-122.635 0.871 122.55 1.191 122.385 1.426 c
-122.227 1.669 122.01 1.793 121.738 1.793 c
-121.473 1.793 121.257 1.669 121.091 1.426 c
-120.933 1.191 120.856 0.871 120.856 0.47 c
-h
-126.691 3.234 m
-126.691 2.278 l
-127.294 2.278 l
-127.294 1.749 l
-126.691 1.749 l
-126.691 -0.721 l
-126.691 -0.878 126.714 -0.995 126.765 -1.073 c
-126.824 -1.153 126.912 -1.191 127.03 -1.191 c
-127.117 -1.191 127.206 -1.176 127.294 -1.147 c
-127.294 -1.705 l
-127.147 -1.753 126.993 -1.779 126.838 -1.779 c
-126.581 -1.779 126.386 -1.687 126.25 -1.5 c
-126.111 -1.315 126.045 -1.055 126.045 -0.721 c
-126.045 1.749 l
-125.442 1.749 l
-125.442 2.278 l
-126.045 2.278 l
-126.045 3.234 l
-h
-128.705 1.866 m
-128.958 2.19 129.278 2.352 129.66 2.352 c
-130.366 2.352 130.722 1.881 130.734 0.941 c
-130.734 -1.705 l
-130.087 -1.705 l
-130.087 0.912 l
-130.087 1.224 130.032 1.444 129.926 1.573 c
-129.815 1.698 129.66 1.764 129.455 1.764 c
-129.297 1.764 129.149 1.709 129.014 1.602 c
-128.885 1.492 128.783 1.357 128.705 1.191 c
-128.705 -1.705 l
-128.058 -1.705 l
-128.058 3.94 l
-128.705 3.94 l
-h
-133.115 -1.779 m
-132.615 -1.779 132.233 -1.631 131.969 -1.338 c
-131.703 -1.043 131.572 -0.61 131.572 -0.029 c
-131.572 0.441 l
-131.572 1.037 131.697 1.503 131.954 1.837 c
-132.218 2.18 132.578 2.352 133.041 2.352 c
-133.501 2.352 133.843 2.198 134.07 1.897 c
-134.306 1.602 134.427 1.139 134.438 0.515 c
-134.438 0.088 l
-132.218 0.088 l
-132.218 0 l
-132.218 -0.434 132.295 -0.746 132.453 -0.941 c
-132.619 -1.128 132.85 -1.22 133.145 -1.22 c
-133.339 -1.22 133.512 -1.187 133.658 -1.117 c
-133.806 -1.04 133.942 -0.922 134.07 -0.764 c
-134.408 -1.176 l
-134.122 -1.58 133.692 -1.779 133.115 -1.779 c
-133.041 1.793 m
-132.766 1.793 132.563 1.698 132.439 1.514 c
-132.31 1.326 132.237 1.037 132.218 0.647 c
-133.791 0.647 l
-133.791 0.735 l
-133.769 1.118 133.703 1.386 133.585 1.544 c
-133.467 1.709 133.284 1.793 133.041 1.793 c
-138.877 -0.691 m
-138.877 -0.544 138.822 -0.422 138.715 -0.324 c
-138.605 -0.228 138.4 -0.11 138.098 0.029 c
-137.752 0.177 137.51 0.298 137.363 0.397 c
-137.216 0.503 137.106 0.621 137.039 0.75 c
-136.97 0.875 136.937 1.033 136.937 1.22 c
-136.937 1.544 137.054 1.812 137.29 2.028 c
-137.525 2.242 137.826 2.352 138.201 2.352 c
-138.583 2.352 138.892 2.238 139.127 2.014 c
-139.362 1.786 139.48 1.5 139.48 1.147 c
-138.832 1.147 l
-138.832 1.323 138.774 1.474 138.656 1.602 c
-138.539 1.727 138.385 1.793 138.201 1.793 c
-138.003 1.793 137.851 1.738 137.745 1.631 c
-137.635 1.532 137.583 1.4 137.583 1.235 c
-137.583 1.106 137.62 1 137.701 0.912 c
-137.778 0.831 137.97 0.728 138.275 0.603 c
-138.752 0.416 139.083 0.228 139.259 0.044 c
-139.435 -0.133 139.524 -0.36 139.524 -0.632 c
-139.524 -0.985 139.399 -1.264 139.156 -1.469 c
-138.921 -1.675 138.605 -1.779 138.215 -1.779 c
-137.793 -1.779 137.455 -1.661 137.201 -1.426 c
-136.944 -1.183 136.819 -0.878 136.819 -0.515 c
-137.466 -0.515 l
-137.473 -0.742 137.543 -0.918 137.672 -1.043 c
-137.797 -1.161 137.98 -1.22 138.215 -1.22 c
-138.429 -1.22 138.591 -1.172 138.701 -1.073 c
-138.818 -0.977 138.877 -0.849 138.877 -0.691 c
-141.214 3.234 m
-141.214 2.278 l
-141.816 2.278 l
-141.816 1.749 l
-141.214 1.749 l
-141.214 -0.721 l
-141.214 -0.878 141.236 -0.995 141.288 -1.073 c
-141.346 -1.153 141.435 -1.191 141.552 -1.191 c
-141.641 -1.191 141.729 -1.176 141.816 -1.147 c
-141.816 -1.705 l
-141.67 -1.753 141.515 -1.779 141.361 -1.779 c
-141.104 -1.779 140.909 -1.687 140.773 -1.5 c
-140.634 -1.315 140.567 -1.055 140.567 -0.721 c
-140.567 1.749 l
-139.965 1.749 l
-139.965 2.278 l
-140.567 2.278 l
-140.567 3.234 l
-h
-144.625 -1.705 m
-144.584 -1.617 144.558 -1.469 144.551 -1.264 c
-144.316 -1.61 144.022 -1.779 143.669 -1.779 c
-143.305 -1.779 143.022 -1.683 142.816 -1.484 c
-142.618 -1.278 142.522 -0.992 142.522 -0.617 c
-142.522 -0.216 142.658 0.103 142.934 0.338 c
-143.206 0.58 143.58 0.706 144.051 0.706 c
-144.536 0.706 l
-144.536 1.132 l
-144.536 1.367 144.481 1.532 144.374 1.631 c
-144.264 1.738 144.102 1.793 143.889 1.793 c
-143.691 1.793 143.53 1.735 143.404 1.617 c
-143.287 1.5 143.228 1.353 143.228 1.176 c
-142.581 1.176 l
-142.581 1.371 142.64 1.562 142.757 1.749 c
-142.882 1.933 143.044 2.08 143.243 2.19 c
-143.449 2.297 143.676 2.352 143.933 2.352 c
-144.334 2.352 144.639 2.249 144.845 2.043 c
-145.058 1.837 145.172 1.544 145.182 1.161 c
-145.182 -0.852 l
-145.182 -1.157 145.22 -1.422 145.3 -1.646 c
-145.3 -1.705 l
-h
-143.757 -1.191 m
-143.923 -1.191 144.073 -1.147 144.213 -1.058 c
-144.359 -0.97 144.466 -0.86 144.536 -0.721 c
-144.536 0.22 l
-144.168 0.22 l
-143.852 0.22 143.61 0.151 143.434 0.015 c
-143.258 -0.114 143.169 -0.301 143.169 -0.544 c
-143.169 -0.771 143.213 -0.937 143.301 -1.043 c
-143.389 -1.143 143.54 -1.191 143.757 -1.191 c
-146.05 0.47 m
-146.05 1.087 146.161 1.551 146.388 1.866 c
-146.612 2.19 146.946 2.352 147.388 2.352 c
-147.788 2.352 148.093 2.176 148.299 1.823 c
-148.343 2.278 l
-148.931 2.278 l
-148.931 -1.749 l
-148.931 -2.238 148.802 -2.616 148.549 -2.881 c
-148.292 -3.146 147.939 -3.278 147.491 -3.278 c
-147.292 -3.278 147.071 -3.227 146.829 -3.131 c
-146.583 -3.032 146.403 -2.911 146.285 -2.763 c
-146.55 -2.323 l
-146.815 -2.587 147.112 -2.72 147.447 -2.72 c
-147.983 -2.72 148.259 -2.425 148.27 -1.837 c
-148.27 -1.309 l
-148.064 -1.624 147.763 -1.779 147.373 -1.779 c
-146.961 -1.779 146.638 -1.627 146.403 -1.323 c
-146.175 -1.01 146.057 -0.559 146.05 0.029 c
-h
-146.711 0.088 m
-146.711 -0.353 146.774 -0.683 146.903 -0.897 c
-147.027 -1.103 147.245 -1.205 147.549 -1.205 c
-147.873 -1.205 148.112 -1.04 148.27 -0.706 c
-148.27 1.278 l
-148.101 1.602 147.862 1.764 147.549 1.764 c
-147.256 1.764 147.038 1.661 146.903 1.455 c
-146.774 1.249 146.711 0.926 146.711 0.485 c
-h
-150.592 -1.705 -0.646 3.983 re
-150.636 3.322 m
-150.636 3.212 150.607 3.12 150.548 3.042 c
-150.489 2.973 150.394 2.94 150.269 2.94 c
-150.151 2.94 150.055 2.973 149.99 3.042 c
-149.93 3.12 149.901 3.212 149.901 3.322 c
-149.901 3.439 149.93 3.532 149.99 3.601 c
-150.055 3.678 150.151 3.719 150.269 3.719 c
-150.394 3.719 150.489 3.678 150.548 3.601 c
-150.607 3.52 150.636 3.429 150.636 3.322 c
-152.224 2.278 m
-152.238 1.837 l
-152.492 2.18 152.816 2.352 153.209 2.352 c
-153.914 2.352 154.271 1.881 154.281 0.941 c
-154.281 -1.705 l
-153.635 -1.705 l
-153.635 0.912 l
-153.635 1.224 153.579 1.444 153.473 1.573 c
-153.363 1.698 153.209 1.764 153.003 1.764 c
-152.845 1.764 152.698 1.709 152.562 1.602 c
-152.433 1.492 152.33 1.357 152.253 1.191 c
-152.253 -1.705 l
-151.607 -1.705 l
-151.607 2.278 l
-h
-155.119 0.47 m
-155.119 1.087 155.23 1.551 155.457 1.866 c
-155.682 2.19 156.016 2.352 156.457 2.352 c
-156.858 2.352 157.163 2.176 157.369 1.823 c
-157.412 2.278 l
-158 2.278 l
-158 -1.749 l
-158 -2.238 157.872 -2.616 157.618 -2.881 c
-157.361 -3.146 157.008 -3.278 156.56 -3.278 c
-156.361 -3.278 156.141 -3.227 155.898 -3.131 c
-155.652 -3.032 155.472 -2.911 155.355 -2.763 c
-155.619 -2.323 l
-155.883 -2.587 156.182 -2.72 156.516 -2.72 c
-157.053 -2.72 157.328 -2.425 157.339 -1.837 c
-157.339 -1.309 l
-157.134 -1.624 156.832 -1.779 156.442 -1.779 c
-156.031 -1.779 155.707 -1.627 155.472 -1.323 c
-155.245 -1.01 155.127 -0.559 155.119 0.029 c
-h
-155.781 0.088 m
-155.781 -0.353 155.844 -0.683 155.972 -0.897 c
-156.097 -1.103 156.314 -1.205 156.619 -1.205 c
-156.942 -1.205 157.181 -1.04 157.339 -0.706 c
-157.339 1.278 l
-157.17 1.602 156.931 1.764 156.619 1.764 c
-156.325 1.764 156.108 1.661 155.972 1.455 c
-155.844 1.249 155.781 0.926 155.781 0.485 c
-h
-162.719 -1.705 m
-162.678 -1.617 162.653 -1.469 162.645 -1.264 c
-162.41 -1.61 162.116 -1.779 161.763 -1.779 c
-161.4 -1.779 161.117 -1.683 160.911 -1.484 c
-160.712 -1.278 160.617 -0.992 160.617 -0.617 c
-160.617 -0.216 160.753 0.103 161.028 0.338 c
-161.3 0.58 161.675 0.706 162.146 0.706 c
-162.63 0.706 l
-162.63 1.132 l
-162.63 1.367 162.576 1.532 162.469 1.631 c
-162.358 1.738 162.197 1.793 161.984 1.793 c
-161.786 1.793 161.624 1.735 161.499 1.617 c
-161.381 1.5 161.323 1.353 161.323 1.176 c
-160.675 1.176 l
-160.675 1.371 160.735 1.562 160.852 1.749 c
-160.977 1.933 161.138 2.08 161.337 2.19 c
-161.543 2.297 161.77 2.352 162.028 2.352 c
-162.429 2.352 162.734 2.249 162.939 2.043 c
-163.152 1.837 163.266 1.544 163.278 1.161 c
-163.278 -0.852 l
-163.278 -1.157 163.314 -1.422 163.395 -1.646 c
-163.395 -1.705 l
-h
-161.851 -1.191 m
-162.017 -1.191 162.167 -1.147 162.308 -1.058 c
-162.454 -0.97 162.561 -0.86 162.63 -0.721 c
-162.63 0.22 l
-162.263 0.22 l
-161.947 0.22 161.705 0.151 161.528 0.015 c
-161.352 -0.114 161.263 -0.301 161.263 -0.544 c
-161.263 -0.771 161.308 -0.937 161.396 -1.043 c
-161.484 -1.143 161.635 -1.191 161.851 -1.191 c
-165.923 1.661 m
-165.835 1.679 165.736 1.691 165.629 1.691 c
-165.294 1.691 165.059 1.507 164.924 1.147 c
-164.924 -1.705 l
-164.277 -1.705 l
-164.277 2.278 l
-164.909 2.278 l
-164.924 1.866 l
-165.1 2.19 165.342 2.352 165.659 2.352 c
-165.765 2.352 165.853 2.33 165.923 2.294 c
-h
-167.922 -1.779 m
-167.422 -1.779 167.04 -1.631 166.776 -1.338 c
-166.511 -1.043 166.379 -0.61 166.379 -0.029 c
-166.379 0.441 l
-166.379 1.037 166.504 1.503 166.761 1.837 c
-167.025 2.18 167.386 2.352 167.849 2.352 c
-168.309 2.352 168.65 2.198 168.878 1.897 c
-169.113 1.602 169.234 1.139 169.246 0.515 c
-169.246 0.088 l
-167.025 0.088 l
-167.025 0 l
-167.025 -0.434 167.103 -0.746 167.261 -0.941 c
-167.426 -1.128 167.658 -1.22 167.952 -1.22 c
-168.147 -1.22 168.319 -1.187 168.466 -1.117 c
-168.613 -1.04 168.749 -0.922 168.878 -0.764 c
-169.215 -1.176 l
-168.929 -1.58 168.5 -1.779 167.922 -1.779 c
-167.849 1.793 m
-167.573 1.793 167.371 1.698 167.246 1.514 c
-167.118 1.326 167.044 1.037 167.025 0.647 c
-168.598 0.647 l
-168.598 0.735 l
-168.577 1.118 168.51 1.386 168.392 1.544 c
-168.275 1.709 168.091 1.793 167.849 1.793 c
-172.068 -1.705 m
-172.027 -1.617 172.001 -1.469 171.993 -1.264 c
-171.758 -1.61 171.465 -1.779 171.112 -1.779 c
-170.748 -1.779 170.465 -1.683 170.26 -1.484 c
-170.061 -1.278 169.965 -0.992 169.965 -0.617 c
-169.965 -0.216 170.102 0.103 170.377 0.338 c
-170.649 0.58 171.024 0.706 171.494 0.706 c
-171.979 0.706 l
-171.979 1.132 l
-171.979 1.367 171.924 1.532 171.818 1.631 c
-171.707 1.738 171.546 1.793 171.332 1.793 c
-171.134 1.793 170.973 1.735 170.848 1.617 c
-170.73 1.5 170.671 1.353 170.671 1.176 c
-170.025 1.176 l
-170.025 1.371 170.083 1.562 170.2 1.749 c
-170.326 1.933 170.487 2.08 170.686 2.19 c
-170.892 2.297 171.12 2.352 171.376 2.352 c
-171.777 2.352 172.082 2.249 172.288 2.043 c
-172.501 1.837 172.615 1.544 172.626 1.161 c
-172.626 -0.852 l
-172.626 -1.157 172.662 -1.422 172.743 -1.646 c
-172.743 -1.705 l
-h
-171.2 -1.191 m
-171.366 -1.191 171.517 -1.147 171.656 -1.058 c
-171.803 -0.97 171.91 -0.86 171.979 -0.721 c
-171.979 0.22 l
-171.612 0.22 l
-171.295 0.22 171.053 0.151 170.877 0.015 c
-170.7 -0.114 170.612 -0.301 170.612 -0.544 c
-170.612 -0.771 170.657 -0.937 170.744 -1.043 c
-170.833 -1.143 170.983 -1.191 171.2 -1.191 c
-173.67 -1.352 m
-173.67 -1.234 173.703 -1.139 173.772 -1.058 c
-173.838 -0.981 173.942 -0.941 174.081 -0.941 c
-174.228 -0.941 174.335 -0.981 174.405 -1.058 c
-174.482 -1.139 174.522 -1.234 174.522 -1.352 c
-174.522 -1.463 174.482 -1.554 174.405 -1.631 c
-174.335 -1.708 174.228 -1.749 174.081 -1.749 c
-173.942 -1.749 173.838 -1.708 173.772 -1.631 c
-173.703 -1.554 173.67 -1.463 173.67 -1.352 c
-180.784 0 m
-180.755 -0.58 180.593 -1.022 180.299 -1.323 c
-180.005 -1.627 179.586 -1.779 179.049 -1.779 c
-178.52 -1.779 178.094 -1.58 177.771 -1.176 c
-177.454 -0.764 177.3 -0.206 177.3 0.5 c
-177.3 1.47 l
-177.3 2.165 177.462 2.712 177.786 3.117 c
-178.108 3.516 178.553 3.719 179.123 3.719 c
-179.63 3.719 180.027 3.561 180.313 3.248 c
-180.597 2.944 180.755 2.502 180.784 1.926 c
-180.093 1.926 l
-180.064 2.367 179.968 2.679 179.814 2.866 c
-179.667 3.05 179.436 3.146 179.123 3.146 c
-178.748 3.146 178.465 2.999 178.27 2.705 c
-178.072 2.418 177.977 2.003 177.977 1.455 c
-177.977 0.47 l
-177.977 -0.07 178.068 -0.485 178.256 -0.779 c
-178.439 -1.066 178.704 -1.205 179.049 -1.205 c
-179.402 -1.205 179.656 -1.117 179.814 -0.941 c
-179.968 -0.764 180.064 -0.452 180.093 0 c
-h
-181.46 0.47 m
-181.46 1.047 181.596 1.503 181.871 1.837 c
-182.154 2.18 182.526 2.352 182.989 2.352 c
-183.448 2.352 183.816 2.183 184.091 1.852 c
-184.375 1.529 184.521 1.081 184.533 0.515 c
-184.533 0.088 l
-184.533 -0.482 184.389 -0.937 184.105 -1.278 c
-183.831 -1.613 183.463 -1.779 183.004 -1.779 c
-182.54 -1.779 182.169 -1.617 181.886 -1.294 c
-181.611 -0.962 181.468 -0.522 181.46 0.029 c
-h
-182.106 0.088 m
-182.106 -0.316 182.185 -0.632 182.342 -0.867 c
-182.507 -1.103 182.728 -1.22 183.004 -1.22 c
-183.569 -1.22 183.864 -0.808 183.885 0.015 c
-183.885 0.47 l
-183.885 0.871 183.801 1.191 183.635 1.426 c
-183.477 1.669 183.261 1.793 182.989 1.793 c
-182.724 1.793 182.507 1.669 182.342 1.426 c
-182.185 1.191 182.106 0.871 182.106 0.47 c
-h
-185.987 2.278 m
-186.002 1.911 l
-186.245 2.205 186.565 2.352 186.958 2.352 c
-187.398 2.352 187.708 2.153 187.884 1.764 c
-188.138 2.153 188.487 2.352 188.927 2.352 c
-189.662 2.352 190.037 1.889 190.059 0.97 c
-190.059 -1.705 l
-189.412 -1.705 l
-189.412 0.912 l
-189.412 1.205 189.357 1.419 189.25 1.558 c
-189.152 1.694 188.979 1.764 188.736 1.764 c
-188.537 1.764 188.376 1.683 188.251 1.529 c
-188.134 1.382 188.064 1.191 188.045 0.956 c
-188.045 -1.705 l
-187.384 -1.705 l
-187.384 0.941 l
-187.384 1.488 187.163 1.764 186.723 1.764 c
-186.388 1.764 186.153 1.602 186.017 1.278 c
-186.017 -1.705 l
-185.37 -1.705 l
-185.37 2.278 l
-h
-191.646 2.278 m
-191.662 1.911 l
-191.904 2.205 192.223 2.352 192.616 2.352 c
-193.058 2.352 193.366 2.153 193.543 1.764 c
-193.796 2.153 194.145 2.352 194.586 2.352 c
-195.321 2.352 195.696 1.889 195.718 0.97 c
-195.718 -1.705 l
-195.072 -1.705 l
-195.072 0.912 l
-195.072 1.205 195.016 1.419 194.91 1.558 c
-194.81 1.694 194.638 1.764 194.395 1.764 c
-194.197 1.764 194.035 1.683 193.91 1.529 c
-193.792 1.382 193.723 1.191 193.705 0.956 c
-193.705 -1.705 l
-193.043 -1.705 l
-193.043 0.941 l
-193.043 1.488 192.822 1.764 192.381 1.764 c
-192.047 1.764 191.812 1.602 191.676 1.278 c
-191.676 -1.705 l
-191.029 -1.705 l
-191.029 2.278 l
-h
-197.393 -1.705 -0.646 3.983 re
-197.438 3.322 m
-197.438 3.212 197.408 3.12 197.35 3.042 c
-197.291 2.973 197.196 2.94 197.071 2.94 c
-196.953 2.94 196.857 2.973 196.791 3.042 c
-196.732 3.12 196.703 3.212 196.703 3.322 c
-196.703 3.439 196.732 3.532 196.791 3.601 c
-196.857 3.678 196.953 3.719 197.071 3.719 c
-197.196 3.719 197.291 3.678 197.35 3.601 c
-197.408 3.52 197.438 3.429 197.438 3.322 c
-199.261 3.234 m
-199.261 2.278 l
-199.863 2.278 l
-199.863 1.749 l
-199.261 1.749 l
-199.261 -0.721 l
-199.261 -0.878 199.282 -0.995 199.334 -1.073 c
-199.392 -1.153 199.481 -1.191 199.599 -1.191 c
-199.687 -1.191 199.775 -1.176 199.863 -1.147 c
-199.863 -1.705 l
-199.716 -1.753 199.562 -1.779 199.408 -1.779 c
-199.151 -1.779 198.956 -1.687 198.82 -1.5 c
-198.68 -1.315 198.614 -1.055 198.614 -0.721 c
-198.614 1.749 l
-198.012 1.749 l
-198.012 2.278 l
-198.614 2.278 l
-198.614 3.234 l
-h
-f
-Q
-q 1 0 0 1 503.1638 213.6016 cm
-0 0 m
-0.029 -0.368 l
-0.264 -0.073 0.573 0.073 0.956 0.073 c
-1.356 0.073 1.635 -0.11 1.793 -0.47 c
-2.028 -0.11 2.356 0.073 2.778 0.073 c
-3.472 0.073 3.825 -0.412 3.836 -1.382 c
-3.836 -3.983 l
-2.807 -3.983 l
-2.807 -1.44 l
-2.807 -1.216 2.77 -1.055 2.705 -0.956 c
-2.645 -0.86 2.535 -0.808 2.381 -0.808 c
-2.182 -0.808 2.043 -0.926 1.955 -1.161 c
-1.955 -3.983 l
-0.912 -3.983 l
-0.912 -1.455 l
-0.912 -1.22 0.881 -1.055 0.823 -0.956 c
-0.764 -0.86 0.654 -0.808 0.499 -0.808 c
-0.324 -0.808 0.18 -0.904 0.073 -1.087 c
-0.073 -3.983 l
--0.97 -3.983 l
--0.97 0 l
-h
-6.57 -3.616 m
-6.354 -3.91 6.063 -4.057 5.703 -4.057 c
-5.34 -4.057 5.06 -3.936 4.866 -3.69 c
-4.678 -3.436 4.586 -3.069 4.586 -2.587 c
-4.586 0 l
-5.629 0 l
-5.629 -2.602 l
-5.629 -2.995 5.754 -3.19 6.012 -3.19 c
-6.247 -3.19 6.416 -3.087 6.526 -2.881 c
-6.526 0 l
-7.57 0 l
-7.57 -3.983 l
-6.6 -3.983 l
-h
-10.084 -2.911 m
-10.084 -2.822 10.04 -2.745 9.951 -2.675 c
-9.863 -2.598 9.675 -2.495 9.392 -2.367 c
-8.959 -2.19 8.661 -2.01 8.496 -1.823 c
-8.338 -1.639 8.261 -1.407 8.261 -1.132 c
-8.261 -0.79 8.382 -0.507 8.628 -0.279 c
-8.882 -0.044 9.22 0.073 9.643 0.073 c
-10.073 0.073 10.421 -0.04 10.686 -0.264 c
-10.951 -0.492 11.083 -0.794 11.083 -1.176 c
-10.04 -1.176 l
-10.04 -0.852 9.899 -0.69 9.628 -0.69 c
-9.517 -0.69 9.429 -0.727 9.363 -0.794 c
-9.294 -0.864 9.261 -0.962 9.261 -1.087 c
-9.261 -1.176 9.297 -1.257 9.378 -1.323 c
-9.455 -1.382 9.635 -1.477 9.922 -1.602 c
-10.352 -1.76 10.649 -1.937 10.819 -2.132 c
-10.994 -2.319 11.083 -2.568 11.083 -2.881 c
-11.083 -3.234 10.951 -3.52 10.686 -3.734 c
-10.421 -3.95 10.073 -4.057 9.643 -4.057 c
-9.348 -4.057 9.088 -4.002 8.864 -3.896 c
-8.636 -3.778 8.459 -3.616 8.334 -3.41 c
-8.216 -3.204 8.158 -2.984 8.158 -2.749 c
-9.143 -2.749 l
-9.143 -2.936 9.18 -3.072 9.261 -3.16 c
-9.348 -3.248 9.481 -3.293 9.658 -3.293 c
-9.94 -3.293 10.084 -3.167 10.084 -2.911 c
-12.95 0.97 m
-12.95 0 l
-13.479 0 l
-13.479 -0.794 l
-12.95 -0.794 l
-12.95 -2.764 l
-12.95 -2.921 12.968 -3.028 13.008 -3.087 c
-13.057 -3.146 13.141 -3.175 13.259 -3.175 c
-13.365 -3.175 13.45 -3.167 13.508 -3.146 c
-13.508 -3.954 l
-13.332 -4.02 13.141 -4.057 12.935 -4.057 c
-12.259 -4.057 11.913 -3.671 11.906 -2.896 c
-11.906 -0.794 l
-11.451 -0.794 l
-11.451 0 l
-11.906 0 l
-11.906 0.97 l
-h
-f
-Q
-q 1 0 0 1 468.3414 203.8415 cm
-0 0 m
-0.225 0.283 0.5 0.426 0.823 0.426 c
-1.183 0.426 1.459 0.297 1.646 0.044 c
-1.841 -0.214 1.941 -0.595 1.941 -1.103 c
-1.941 -3.63 l
-0.897 -3.63 l
-0.897 -1.118 l
-0.897 -0.882 0.857 -0.717 0.779 -0.617 c
-0.709 -0.511 0.595 -0.455 0.441 -0.455 c
-0.254 -0.455 0.107 -0.54 0 -0.706 c
-0 -3.63 l
--1.043 -3.63 l
--1.043 2.014 l
-0 2.014 l
-h
-4.572 -3.63 m
-4.542 -3.572 4.513 -3.469 4.484 -3.322 c
-4.296 -3.58 4.046 -3.705 3.734 -3.705 c
-3.4 -3.705 3.12 -3.597 2.896 -3.381 c
-2.679 -3.156 2.573 -2.866 2.573 -2.514 c
-2.573 -2.102 2.705 -1.786 2.97 -1.558 c
-3.234 -1.323 3.616 -1.205 4.116 -1.205 c
-4.439 -1.205 l
-4.439 -0.882 l
-4.439 -0.706 4.403 -0.584 4.337 -0.515 c
-4.278 -0.437 4.189 -0.397 4.072 -0.397 c
-3.815 -0.397 3.69 -0.551 3.69 -0.852 c
-2.646 -0.852 l
-2.646 -0.482 2.782 -0.177 3.057 0.058 c
-3.329 0.301 3.679 0.426 4.102 0.426 c
-4.542 0.426 4.881 0.309 5.116 0.073 c
-5.358 -0.154 5.483 -0.478 5.483 -0.897 c
-5.483 -2.764 l
-5.483 -3.109 5.531 -3.377 5.63 -3.572 c
-5.63 -3.63 l
-h
-3.969 -2.881 m
-4.075 -2.881 4.167 -2.863 4.248 -2.822 c
-4.337 -2.774 4.399 -2.716 4.439 -2.646 c
-4.439 -1.823 l
-4.189 -1.823 l
-4.013 -1.823 3.87 -1.881 3.763 -1.999 c
-3.664 -2.109 3.616 -2.256 3.616 -2.44 c
-3.616 -2.734 3.734 -2.881 3.969 -2.881 c
-7.482 -2.161 m
-7.982 0.353 l
-9.07 0.353 l
-7.967 -3.63 l
-6.982 -3.63 l
-5.88 0.353 l
-6.968 0.353 l
-h
-11.113 -3.705 m
-10.583 -3.705 10.165 -3.549 9.864 -3.234 c
-9.569 -2.911 9.422 -2.451 9.422 -1.852 c
-9.422 -1.544 l
-9.422 -0.919 9.559 -0.434 9.834 -0.088 c
-10.106 0.254 10.5 0.426 11.009 0.426 c
-11.51 0.426 11.881 0.264 12.127 -0.059 c
-12.381 -0.382 12.513 -0.86 12.524 -1.484 c
-12.524 -1.984 l
-10.452 -1.984 l
-10.469 -2.278 10.533 -2.495 10.643 -2.631 c
-10.76 -2.77 10.94 -2.837 11.186 -2.837 c
-11.528 -2.837 11.819 -2.72 12.054 -2.484 c
-12.465 -3.117 l
-12.337 -3.293 12.149 -3.436 11.907 -3.543 c
-11.66 -3.649 11.396 -3.705 11.113 -3.705 c
-10.466 -1.264 m
-11.495 -1.264 l
-11.495 -1.161 l
-11.495 -0.926 11.454 -0.75 11.377 -0.632 c
-11.308 -0.507 11.179 -0.441 10.995 -0.441 c
-10.819 -0.441 10.687 -0.511 10.598 -0.647 c
-10.517 -0.775 10.473 -0.981 10.466 -1.264 c
-f
-Q
-q 1 0 0 1 485.3189 200.2112 cm
-0 0 m
--0.04 0.087 -0.066 0.235 -0.073 0.44 c
--0.309 0.095 -0.602 -0.074 -0.955 -0.074 c
--1.319 -0.074 -1.602 0.022 -1.808 0.22 c
--2.007 0.426 -2.102 0.712 -2.102 1.087 c
--2.102 1.488 -1.966 1.807 -1.691 2.042 c
--1.419 2.285 -1.043 2.41 -0.573 2.41 c
--0.088 2.41 l
--0.088 2.836 l
--0.088 3.072 -0.143 3.237 -0.249 3.336 c
--0.36 3.443 -0.521 3.498 -0.735 3.498 c
--0.933 3.498 -1.095 3.439 -1.22 3.322 c
--1.338 3.204 -1.396 3.057 -1.396 2.881 c
--2.043 2.881 l
--2.043 3.075 -1.984 3.266 -1.866 3.453 c
--1.741 3.638 -1.58 3.785 -1.382 3.895 c
--1.176 4.002 -0.948 4.056 -0.691 4.056 c
--0.29 4.056 0.015 3.954 0.221 3.748 c
-0.434 3.542 0.547 3.248 0.559 2.865 c
-0.559 0.852 l
-0.559 0.548 0.595 0.282 0.676 0.058 c
-0.676 0 l
-h
--0.867 0.514 m
--0.702 0.514 -0.551 0.558 -0.411 0.646 c
--0.264 0.735 -0.158 0.845 -0.088 0.984 c
--0.088 1.925 l
--0.455 1.925 l
--0.771 1.925 -1.014 1.855 -1.19 1.72 c
--1.367 1.591 -1.455 1.404 -1.455 1.161 c
--1.455 0.933 -1.411 0.768 -1.323 0.661 c
--1.234 0.562 -1.084 0.514 -0.867 0.514 c
-3.896 3.983 m
-3.91 3.615 l
-4.152 3.91 4.472 4.056 4.865 4.056 c
-5.307 4.056 5.615 3.858 5.791 3.469 c
-6.045 3.858 6.394 4.056 6.835 4.056 c
-7.57 4.056 7.945 3.594 7.967 2.675 c
-7.967 0 l
-7.32 0 l
-7.32 2.616 l
-7.32 2.91 7.265 3.123 7.159 3.262 c
-7.059 3.399 6.887 3.469 6.644 3.469 c
-6.446 3.469 6.284 3.388 6.159 3.233 c
-6.041 3.087 5.972 2.896 5.953 2.66 c
-5.953 0 l
-5.292 0 l
-5.292 2.645 l
-5.292 3.193 5.072 3.469 4.63 3.469 c
-4.296 3.469 4.061 3.307 3.925 2.983 c
-3.925 0 l
-3.278 0 l
-3.278 3.983 l
-h
-10.363 -0.074 m
-9.864 -0.074 9.481 0.073 9.216 0.367 c
-8.952 0.661 8.819 1.095 8.819 1.675 c
-8.819 2.146 l
-8.819 2.741 8.944 3.208 9.201 3.542 c
-9.467 3.884 9.827 4.056 10.29 4.056 c
-10.749 4.056 11.09 3.902 11.318 3.601 c
-11.553 3.307 11.675 2.844 11.686 2.219 c
-11.686 1.793 l
-9.467 1.793 l
-9.467 1.705 l
-9.467 1.271 9.544 0.959 9.702 0.764 c
-9.866 0.577 10.099 0.484 10.392 0.484 c
-10.587 0.484 10.76 0.517 10.907 0.588 c
-11.054 0.665 11.19 0.783 11.318 0.941 c
-11.657 0.529 l
-11.37 0.124 10.94 -0.074 10.363 -0.074 c
-10.29 3.498 m
-10.014 3.498 9.812 3.403 9.687 3.218 c
-9.558 3.031 9.485 2.741 9.467 2.352 c
-11.04 2.352 l
-11.04 2.439 l
-11.017 2.822 10.951 3.09 10.834 3.248 c
-10.716 3.414 10.533 3.498 10.29 3.498 c
-14.406 1.014 m
-14.406 1.161 14.35 1.282 14.244 1.381 c
-14.134 1.477 13.928 1.595 13.627 1.734 c
-13.28 1.881 13.039 2.003 12.891 2.102 c
-12.744 2.208 12.634 2.326 12.568 2.454 c
-12.498 2.58 12.465 2.738 12.465 2.925 c
-12.465 3.248 12.582 3.516 12.818 3.733 c
-13.053 3.946 13.355 4.056 13.729 4.056 c
-14.111 4.056 14.42 3.943 14.655 3.719 c
-14.89 3.491 15.008 3.204 15.008 2.851 c
-14.361 2.851 l
-14.361 3.027 14.302 3.179 14.184 3.307 c
-14.067 3.432 13.913 3.498 13.729 3.498 c
-13.531 3.498 13.38 3.443 13.274 3.336 c
-13.163 3.237 13.112 3.104 13.112 2.94 c
-13.112 2.811 13.149 2.705 13.23 2.616 c
-13.307 2.535 13.498 2.433 13.802 2.308 c
-14.28 2.12 14.611 1.932 14.788 1.749 c
-14.963 1.572 15.052 1.344 15.052 1.072 c
-15.052 0.72 14.927 0.44 14.685 0.235 c
-14.45 0.029 14.134 -0.074 13.744 -0.074 c
-13.321 -0.074 12.983 0.043 12.729 0.278 c
-12.472 0.521 12.347 0.827 12.347 1.19 c
-12.994 1.19 l
-13.002 0.962 13.072 0.786 13.199 0.661 c
-13.325 0.544 13.509 0.484 13.744 0.484 c
-13.957 0.484 14.119 0.532 14.229 0.631 c
-14.346 0.727 14.406 0.856 14.406 1.014 c
-17.83 1.014 m
-17.83 1.161 17.775 1.282 17.668 1.381 c
-17.558 1.477 17.353 1.595 17.051 1.734 c
-16.706 1.881 16.463 2.003 16.316 2.102 c
-16.169 2.208 16.059 2.326 15.993 2.454 c
-15.923 2.58 15.89 2.738 15.89 2.925 c
-15.89 3.248 16.008 3.516 16.243 3.733 c
-16.478 3.946 16.779 4.056 17.154 4.056 c
-17.536 4.056 17.845 3.943 18.08 3.719 c
-18.315 3.491 18.433 3.204 18.433 2.851 c
-17.786 2.851 l
-17.786 3.027 17.727 3.179 17.61 3.307 c
-17.492 3.432 17.338 3.498 17.154 3.498 c
-16.956 3.498 16.805 3.443 16.698 3.336 c
-16.588 3.237 16.536 3.104 16.536 2.94 c
-16.536 2.811 16.573 2.705 16.654 2.616 c
-16.731 2.535 16.922 2.433 17.228 2.308 c
-17.706 2.12 18.036 1.932 18.213 1.749 c
-18.389 1.572 18.477 1.344 18.477 1.072 c
-18.477 0.72 18.352 0.44 18.109 0.235 c
-17.874 0.029 17.558 -0.074 17.168 -0.074 c
-16.746 -0.074 16.408 0.043 16.154 0.278 c
-15.898 0.521 15.772 0.827 15.772 1.19 c
-16.419 1.19 l
-16.426 0.962 16.496 0.786 16.625 0.661 c
-16.75 0.544 16.933 0.484 17.168 0.484 c
-17.382 0.484 17.544 0.532 17.654 0.631 c
-17.772 0.727 17.83 0.856 17.83 1.014 c
-21.358 0 m
-21.317 0.087 21.292 0.235 21.284 0.44 c
-21.049 0.095 20.756 -0.074 20.403 -0.074 c
-20.039 -0.074 19.755 0.022 19.549 0.22 c
-19.352 0.426 19.256 0.712 19.256 1.087 c
-19.256 1.488 19.392 1.807 19.667 2.042 c
-19.94 2.285 20.314 2.41 20.785 2.41 c
-21.27 2.41 l
-21.27 2.836 l
-21.27 3.072 21.215 3.237 21.108 3.336 c
-20.998 3.443 20.836 3.498 20.623 3.498 c
-20.424 3.498 20.263 3.439 20.137 3.322 c
-20.02 3.204 19.962 3.057 19.962 2.881 c
-19.314 2.881 l
-19.314 3.075 19.374 3.266 19.491 3.453 c
-19.616 3.638 19.778 3.785 19.977 3.895 c
-20.182 4.002 20.41 4.056 20.667 4.056 c
-21.068 4.056 21.373 3.954 21.579 3.748 c
-21.791 3.542 21.905 3.248 21.916 2.865 c
-21.916 0.852 l
-21.916 0.548 21.953 0.282 22.034 0.058 c
-22.034 0 l
-h
-20.49 0.514 m
-20.656 0.514 20.806 0.558 20.947 0.646 c
-21.093 0.735 21.2 0.845 21.27 0.984 c
-21.27 1.925 l
-20.902 1.925 l
-20.586 1.925 20.343 1.855 20.168 1.72 c
-19.991 1.591 19.902 1.404 19.902 1.161 c
-19.902 0.933 19.946 0.768 20.035 0.661 c
-20.123 0.562 20.274 0.514 20.49 0.514 c
-22.784 2.175 m
-22.784 2.792 22.894 3.256 23.121 3.571 c
-23.346 3.895 23.68 4.056 24.121 4.056 c
-24.522 4.056 24.827 3.881 25.033 3.528 c
-25.076 3.983 l
-25.664 3.983 l
-25.664 -0.044 l
-25.664 -0.533 25.536 -0.912 25.282 -1.176 c
-25.026 -1.441 24.673 -1.573 24.224 -1.573 c
-24.026 -1.573 23.805 -1.522 23.563 -1.426 c
-23.316 -1.327 23.137 -1.206 23.019 -1.058 c
-23.283 -0.618 l
-23.548 -0.882 23.846 -1.015 24.18 -1.015 c
-24.717 -1.015 24.993 -0.721 25.003 -0.133 c
-25.003 0.396 l
-24.798 0.081 24.496 -0.074 24.106 -0.074 c
-23.695 -0.074 23.372 0.077 23.137 0.382 c
-22.909 0.694 22.791 1.146 22.784 1.734 c
-h
-23.445 1.793 m
-23.445 1.352 23.507 1.022 23.636 0.808 c
-23.761 0.602 23.978 0.5 24.283 0.5 c
-24.606 0.5 24.845 0.665 25.003 0.999 c
-25.003 2.983 l
-24.835 3.307 24.596 3.469 24.283 3.469 c
-23.989 3.469 23.772 3.366 23.636 3.16 c
-23.507 2.954 23.445 2.63 23.445 2.19 c
-h
-28.046 -0.074 m
-27.546 -0.074 27.164 0.073 26.9 0.367 c
-26.635 0.661 26.502 1.095 26.502 1.675 c
-26.502 2.146 l
-26.502 2.741 26.628 3.208 26.884 3.542 c
-27.15 3.884 27.509 4.056 27.973 4.056 c
-28.432 4.056 28.773 3.902 29.001 3.601 c
-29.236 3.307 29.358 2.844 29.369 2.219 c
-29.369 1.793 l
-27.15 1.793 l
-27.15 1.705 l
-27.15 1.271 27.227 0.959 27.385 0.764 c
-27.55 0.577 27.781 0.484 28.075 0.484 c
-28.27 0.484 28.443 0.517 28.59 0.588 c
-28.737 0.665 28.873 0.783 29.001 0.941 c
-29.34 0.529 l
-29.053 0.124 28.623 -0.074 28.046 -0.074 c
-27.973 3.498 m
-27.697 3.498 27.495 3.403 27.37 3.218 c
-27.241 3.031 27.168 2.741 27.15 2.352 c
-28.722 2.352 l
-28.722 2.439 l
-28.7 2.822 28.634 3.09 28.517 3.248 c
-28.399 3.414 28.215 3.498 27.973 3.498 c
-30.883 1.514 m
-30.295 1.514 l
-30.25 5.35 l
-30.942 5.35 l
-h
-30.603 0.735 m
-30.728 0.735 30.824 0.694 30.883 0.617 c
-30.949 0.548 30.986 0.455 30.986 0.338 c
-30.986 0.228 30.949 0.135 30.883 0.058 c
-30.824 -0.008 30.728 -0.044 30.603 -0.044 c
-30.486 -0.044 30.391 -0.008 30.325 0.058 c
-30.265 0.135 30.236 0.228 30.236 0.338 c
-30.236 0.455 30.265 0.548 30.325 0.617 c
-30.391 0.694 30.486 0.735 30.603 0.735 c
-f
-Q
-0.113 0.082 0.09 0 k
-287.665 170.897 234.667 -12.895 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 292.8568 164.0623 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.647 -0.243 -0.775 -0.367 -0.882 c
--0.496 -0.992 -0.658 -1.081 -0.852 -1.147 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.162 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.927 c
--3.127 -0.819 -3.23 -0.691 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.214 -3.484 -0.015 c
--2.66 0.132 l
--2.642 0.033 -2.616 -0.059 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.368 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.683 -1.992 0.691 -1.999 0.691 c
--2.167 0.727 -2.329 0.771 -2.484 0.823 c
--2.642 0.881 -2.786 0.959 -2.91 1.058 c
--3.039 1.153 -3.142 1.278 -3.219 1.425 c
--3.289 1.573 -3.322 1.756 -3.322 1.984 c
--3.322 2.179 -3.289 2.344 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.836 c
--2.8 2.932 -2.645 3.002 -2.469 3.042 c
--2.293 3.09 -2.102 3.119 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.119 -1.128 3.09 -0.97 3.042 c
--0.804 2.992 -0.669 2.917 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.202 2.344 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.252 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.352 c
--1.294 1.311 -1.117 1.264 -0.941 1.205 c
--0.756 1.147 -0.595 1.066 -0.455 0.97 c
--0.32 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.454 c
--2.26 2.425 -2.319 2.385 -2.366 2.337 c
--2.406 2.296 -2.436 2.248 -2.454 2.19 c
--2.477 2.131 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.778 c
--2.41 1.72 -2.373 1.668 -2.322 1.631 c
--2.263 1.591 -2.201 1.558 -2.131 1.529 c
--2.065 1.5 -1.984 1.469 -1.896 1.44 c
-h
--0.837 -0.015 m
--0.837 0.091 -0.86 0.176 -0.897 0.235 c
--0.926 0.301 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.529 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.53 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.015 c
-6.402 -2.66 m
-6.184 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.396 c
-5.284 -2.315 5.185 -2.22 5.108 -2.103 c
-5.039 -1.985 4.991 -1.856 4.961 -1.72 c
-5.858 -1.617 l
-5.895 -1.753 5.964 -1.86 6.064 -1.941 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.058 6.681 -2.028 c
-6.758 -1.999 6.828 -1.945 6.887 -1.867 c
-6.945 -1.797 6.99 -1.706 7.019 -1.588 c
-7.056 -1.47 7.078 -1.323 7.078 -1.147 c
-7.078 -0.956 l
-7.078 -0.889 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.073 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.215 -0.897 5.108 -0.75 c
-5.009 -0.595 4.935 -0.412 4.888 -0.206 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.771 4.836 1.018 4.888 1.234 c
-4.946 1.448 5.027 1.631 5.137 1.778 c
-5.244 1.933 5.376 2.051 5.534 2.131 c
-5.689 2.219 5.876 2.263 6.093 2.263 c
-6.188 2.263 6.288 2.252 6.387 2.234 c
-6.483 2.212 6.571 2.179 6.652 2.131 c
-6.739 2.08 6.817 2.017 6.887 1.94 c
-6.964 1.859 7.026 1.768 7.078 1.66 c
-7.092 1.66 l
-7.092 1.808 l
-7.1 1.866 7.107 1.918 7.107 1.97 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.151 2.219 c
-8.004 2.219 l
-7.993 2.138 7.982 2.028 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.162 l
-7.975 -1.415 7.938 -1.635 7.871 -1.823 c
-7.802 -2.007 7.699 -2.161 7.563 -2.278 c
-7.423 -2.404 7.258 -2.499 7.063 -2.558 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.529 m
-7.092 0.742 7.067 0.918 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.5 6.729 1.558 6.652 1.587 c
-6.571 1.624 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.62 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.367 c
-5.88 1.278 5.835 1.161 5.799 1.014 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.339 c
-6.049 -0.515 6.211 -0.603 6.417 -0.603 c
-6.483 -0.603 6.556 -0.588 6.637 -0.559 c
-6.725 -0.522 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.177 7.019 -0.029 c
-7.067 0.118 7.092 0.301 7.092 0.529 c
-11.036 -0.647 m
-12.168 -0.647 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.647 l
-10.124 -0.647 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.219 l
-11.036 2.219 l
-h
-10.124 3.513 0.912 -0.676 re
-10.124 2.836 m
-13.597 1.602 m
-13.053 1.602 l
-13.053 2.219 l
-13.641 2.219 l
-13.92 3.116 l
-14.494 3.116 l
-14.494 2.219 l
-15.728 2.219 l
-15.728 1.602 l
-14.494 1.602 l
-14.494 -0.103 l
-14.494 -0.324 l
-14.501 -0.393 14.523 -0.456 14.552 -0.515 c
-14.589 -0.566 14.645 -0.611 14.714 -0.647 c
-14.791 -0.676 14.905 -0.691 15.052 -0.691 c
-15.188 -0.691 15.324 -0.688 15.464 -0.676 c
-15.599 -0.658 15.732 -0.632 15.861 -0.603 c
-15.861 -1.205 l
-15.78 -1.216 15.703 -1.231 15.626 -1.249 c
-15.545 -1.261 15.468 -1.268 15.391 -1.279 c
-15.31 -1.286 15.221 -1.294 15.125 -1.294 c
-15.038 -1.301 14.938 -1.309 14.832 -1.309 c
-14.645 -1.309 14.483 -1.294 14.346 -1.264 c
-14.218 -1.228 14.104 -1.183 14.009 -1.132 c
-13.92 -1.085 13.847 -1.025 13.788 -0.956 c
-13.729 -0.879 13.685 -0.802 13.656 -0.721 c
-13.627 -0.632 13.604 -0.544 13.597 -0.456 c
-13.586 -0.36 13.582 -0.264 13.582 -0.177 c
-h
-24.22 -0.25 m
-24.22 -0.419 24.18 -0.57 24.103 -0.706 c
-24.033 -0.834 23.931 -0.948 23.794 -1.044 c
-23.666 -1.132 23.504 -1.202 23.31 -1.249 c
-23.121 -1.297 22.905 -1.323 22.662 -1.323 c
-22.435 -1.323 22.236 -1.309 22.06 -1.279 c
-21.883 -1.249 21.725 -1.202 21.59 -1.132 c
-21.45 -1.055 21.34 -0.956 21.251 -0.838 c
-21.163 -0.721 21.093 -0.574 21.045 -0.397 c
-21.854 -0.279 l
-21.872 -0.379 21.902 -0.456 21.942 -0.515 c
-21.99 -0.574 22.049 -0.617 22.119 -0.647 c
-22.185 -0.676 22.265 -0.702 22.354 -0.721 c
-22.442 -0.732 22.545 -0.735 22.662 -0.735 c
-22.758 -0.735 22.853 -0.732 22.942 -0.721 c
-23.03 -0.702 23.107 -0.676 23.177 -0.647 c
-23.243 -0.617 23.295 -0.58 23.324 -0.53 c
-23.36 -0.482 23.383 -0.419 23.383 -0.339 c
-23.383 -0.243 23.353 -0.169 23.295 -0.118 c
-23.243 -0.07 23.177 -0.029 23.089 0 c
-23.001 0.037 22.89 0.066 22.766 0.088 c
-22.647 0.118 22.516 0.147 22.369 0.176 c
-22.229 0.213 22.09 0.253 21.942 0.294 c
-21.803 0.341 21.677 0.405 21.56 0.484 c
-21.45 0.562 21.361 0.661 21.296 0.779 c
-21.226 0.897 21.193 1.047 21.193 1.234 c
-21.193 1.389 21.222 1.532 21.28 1.66 c
-21.347 1.797 21.442 1.911 21.56 1.999 c
-21.685 2.087 21.843 2.153 22.03 2.205 c
-22.215 2.252 22.427 2.278 22.662 2.278 c
-22.846 2.278 23.023 2.256 23.192 2.219 c
-23.357 2.19 23.504 2.135 23.632 2.057 c
-23.757 1.988 23.868 1.889 23.956 1.764 c
-24.044 1.646 24.103 1.502 24.133 1.338 c
-23.339 1.264 l
-23.316 1.341 23.287 1.404 23.25 1.455 c
-23.21 1.514 23.162 1.558 23.104 1.587 c
-23.052 1.624 22.99 1.65 22.913 1.66 c
-22.832 1.668 22.751 1.675 22.662 1.675 c
-22.446 1.675 22.284 1.646 22.177 1.587 c
-22.067 1.536 22.016 1.448 22.016 1.323 c
-22.016 1.242 22.034 1.18 22.074 1.132 c
-22.122 1.08 22.185 1.043 22.265 1.014 c
-22.354 0.985 22.45 0.955 22.56 0.926 c
-22.666 0.904 22.788 0.881 22.927 0.852 c
-23.081 0.823 23.239 0.783 23.397 0.735 c
-23.551 0.683 23.692 0.621 23.809 0.544 c
-23.927 0.463 24.022 0.36 24.103 0.235 c
-24.18 0.106 24.22 -0.056 24.22 -0.25 c
-25.783 1.602 m
-25.238 1.602 l
-25.238 2.219 l
-25.826 2.219 l
-26.106 3.116 l
-26.679 3.116 l
-26.679 2.219 l
-27.914 2.219 l
-27.914 1.602 l
-26.679 1.602 l
-26.679 -0.103 l
-26.679 -0.324 l
-26.686 -0.393 26.709 -0.456 26.738 -0.515 c
-26.774 -0.566 26.83 -0.611 26.9 -0.647 c
-26.977 -0.676 27.09 -0.691 27.237 -0.691 c
-27.374 -0.691 27.509 -0.688 27.649 -0.676 c
-27.785 -0.658 27.917 -0.632 28.046 -0.603 c
-28.046 -1.205 l
-27.965 -1.216 27.888 -1.231 27.811 -1.249 c
-27.73 -1.261 27.653 -1.268 27.576 -1.279 c
-27.495 -1.286 27.407 -1.294 27.312 -1.294 c
-27.223 -1.301 27.123 -1.309 27.017 -1.309 c
-26.83 -1.309 26.668 -1.294 26.532 -1.264 c
-26.404 -1.228 26.29 -1.183 26.194 -1.132 c
-26.106 -1.085 26.032 -1.025 25.974 -0.956 c
-25.915 -0.879 25.87 -0.802 25.841 -0.721 c
-25.812 -0.632 25.789 -0.544 25.783 -0.456 c
-25.772 -0.36 25.768 -0.264 25.768 -0.177 c
-h
-30.196 -1.323 m
-30.027 -1.323 29.876 -1.301 29.741 -1.264 c
-29.612 -1.216 29.498 -1.147 29.402 -1.058 c
-29.313 -0.97 29.244 -0.864 29.196 -0.735 c
-29.145 -0.599 29.122 -0.449 29.122 -0.279 c
-29.122 -0.073 29.155 0.095 29.226 0.235 c
-29.292 0.382 29.388 0.492 29.505 0.573 c
-29.63 0.661 29.773 0.723 29.931 0.764 c
-30.096 0.801 30.273 0.827 30.46 0.837 c
-31.181 0.852 l
-31.181 1.029 l
-31.181 1.147 31.17 1.249 31.152 1.338 c
-31.129 1.425 31.096 1.492 31.048 1.543 c
-31.008 1.602 30.96 1.639 30.901 1.66 c
-30.842 1.679 30.776 1.691 30.71 1.691 c
-30.641 1.691 30.578 1.679 30.519 1.66 c
-30.468 1.65 30.42 1.624 30.372 1.587 c
-30.331 1.558 30.298 1.506 30.269 1.44 c
-30.248 1.382 30.233 1.301 30.225 1.205 c
-29.284 1.249 l
-29.313 1.396 29.358 1.532 29.417 1.66 c
-29.483 1.786 29.579 1.896 29.696 1.984 c
-29.814 2.08 29.953 2.153 30.122 2.205 c
-30.298 2.252 30.504 2.278 30.74 2.278 c
-31.181 2.278 31.511 2.168 31.74 1.955 c
-31.975 1.749 32.092 1.44 32.092 1.029 c
-32.092 -0.235 l
-32.092 -0.456 l
-32.099 -0.515 32.114 -0.57 32.136 -0.617 c
-32.154 -0.658 32.184 -0.691 32.224 -0.721 c
-32.261 -0.742 32.313 -0.75 32.371 -0.75 c
-32.438 -0.75 32.507 -0.746 32.577 -0.735 c
-32.577 -1.22 l
-32.519 -1.231 32.463 -1.242 32.415 -1.249 c
-32.375 -1.261 32.334 -1.268 32.297 -1.279 c
-32.257 -1.286 32.213 -1.294 32.166 -1.294 c
-32.114 -1.301 32.055 -1.309 31.989 -1.309 c
-31.761 -1.309 31.596 -1.257 31.489 -1.147 c
-31.379 -1.029 31.316 -0.864 31.298 -0.647 c
-31.283 -0.647 l
-31.214 -0.757 31.144 -0.852 31.077 -0.941 c
-31.008 -1.022 30.931 -1.087 30.842 -1.147 c
-30.755 -1.205 30.655 -1.249 30.549 -1.279 c
-30.449 -1.309 30.331 -1.323 30.196 -1.323 c
-31.181 0.353 m
-30.755 0.338 l
-30.655 0.338 30.564 0.33 30.475 0.324 c
-30.394 0.312 30.328 0.287 30.269 0.249 c
-30.211 0.209 30.159 0.151 30.122 0.073 c
-30.082 0.004 30.063 -0.088 30.063 -0.206 c
-30.063 -0.375 30.096 -0.497 30.167 -0.574 c
-30.233 -0.654 30.331 -0.691 30.46 -0.691 c
-30.567 -0.691 30.666 -0.669 30.755 -0.617 c
-30.85 -0.57 30.931 -0.507 30.99 -0.426 c
-31.056 -0.349 31.107 -0.262 31.137 -0.162 c
-31.166 -0.056 31.181 0.058 31.181 0.176 c
-h
-36.403 -0.25 m
-36.403 -0.419 36.362 -0.57 36.285 -0.706 c
-36.215 -0.834 36.112 -0.948 35.976 -1.044 c
-35.848 -1.132 35.686 -1.202 35.491 -1.249 c
-35.304 -1.297 35.087 -1.323 34.844 -1.323 c
-34.616 -1.323 34.418 -1.309 34.242 -1.279 c
-34.065 -1.249 33.907 -1.202 33.772 -1.132 c
-33.631 -1.055 33.521 -0.956 33.433 -0.838 c
-33.345 -0.721 33.275 -0.574 33.228 -0.397 c
-34.036 -0.279 l
-34.055 -0.379 34.084 -0.456 34.124 -0.515 c
-34.171 -0.574 34.231 -0.617 34.3 -0.647 c
-34.367 -0.676 34.447 -0.702 34.535 -0.721 c
-34.624 -0.732 34.726 -0.735 34.844 -0.735 c
-34.94 -0.735 35.035 -0.732 35.123 -0.721 c
-35.212 -0.702 35.289 -0.676 35.359 -0.647 c
-35.425 -0.617 35.476 -0.58 35.505 -0.53 c
-35.543 -0.482 35.565 -0.419 35.565 -0.339 c
-35.565 -0.243 35.535 -0.169 35.476 -0.118 c
-35.425 -0.07 35.359 -0.029 35.27 0 c
-35.183 0.037 35.073 0.066 34.948 0.088 c
-34.83 0.118 34.697 0.147 34.551 0.176 c
-34.41 0.213 34.271 0.253 34.124 0.294 c
-33.984 0.341 33.859 0.405 33.742 0.484 c
-33.631 0.562 33.544 0.661 33.477 0.779 c
-33.408 0.897 33.375 1.047 33.375 1.234 c
-33.375 1.389 33.404 1.532 33.463 1.66 c
-33.529 1.797 33.624 1.911 33.742 1.999 c
-33.867 2.087 34.025 2.153 34.212 2.205 c
-34.396 2.252 34.609 2.278 34.844 2.278 c
-35.028 2.278 35.204 2.256 35.374 2.219 c
-35.539 2.19 35.686 2.135 35.815 2.057 c
-35.939 1.988 36.05 1.889 36.138 1.764 c
-36.226 1.646 36.285 1.502 36.314 1.338 c
-35.52 1.264 l
-35.499 1.341 35.469 1.404 35.432 1.455 c
-35.392 1.514 35.345 1.558 35.285 1.587 c
-35.234 1.624 35.171 1.65 35.094 1.66 c
-35.013 1.668 34.932 1.675 34.844 1.675 c
-34.628 1.675 34.466 1.646 34.36 1.587 c
-34.249 1.536 34.198 1.448 34.198 1.323 c
-34.198 1.242 34.216 1.18 34.256 1.132 c
-34.304 1.08 34.367 1.043 34.447 1.014 c
-34.535 0.985 34.631 0.955 34.742 0.926 c
-34.848 0.904 34.969 0.881 35.109 0.852 c
-35.264 0.823 35.422 0.783 35.58 0.735 c
-35.734 0.683 35.873 0.621 35.991 0.544 c
-36.108 0.463 36.204 0.36 36.285 0.235 c
-36.362 0.106 36.403 -0.056 36.403 -0.25 c
-38.262 1.514 m
-38.379 1.786 38.53 1.984 38.718 2.102 c
-38.901 2.219 39.122 2.278 39.379 2.278 c
-39.584 2.278 39.754 2.242 39.894 2.175 c
-40.041 2.105 40.151 2.013 40.232 1.896 c
-40.32 1.778 40.378 1.635 40.408 1.469 c
-40.444 1.301 40.467 1.124 40.467 0.941 c
-40.467 -1.264 l
-39.555 -1.264 l
-39.555 0.735 l
-39.555 0.871 39.544 0.992 39.526 1.103 c
-39.515 1.209 39.489 1.297 39.453 1.367 c
-39.412 1.444 39.353 1.502 39.276 1.543 c
-39.206 1.58 39.114 1.602 38.996 1.602 c
-38.886 1.602 38.791 1.577 38.703 1.529 c
-38.615 1.477 38.534 1.411 38.468 1.323 c
-38.409 1.234 38.358 1.124 38.321 0.999 c
-38.291 0.881 38.277 0.75 38.277 0.602 c
-38.277 -1.264 l
-37.365 -1.264 l
-37.365 3.513 l
-38.277 3.513 l
-38.277 2.205 l
-38.277 2.135 38.269 2.065 38.262 1.999 c
-38.262 1.793 l
-38.262 1.735 38.254 1.679 38.248 1.631 c
-38.248 1.514 l
-h
-f
-Q
-q 1 0 0 1 414.8848 150.0096 cm
-0 0 m
-0 -2.102 l
--0.676 -2.102 l
--0.676 3.248 l
-1.029 3.248 l
-1.529 3.248 1.918 3.094 2.205 2.793 c
-2.488 2.5 2.631 2.106 2.631 1.617 c
-2.631 1.095 2.492 0.699 2.219 0.426 c
-1.955 0.151 1.577 0.008 1.087 0 c
-h
-0 0.574 m
-1.029 0.574 l
-1.33 0.574 1.562 0.661 1.72 0.838 c
-1.874 1.014 1.955 1.268 1.955 1.602 c
-1.955 1.926 1.87 2.183 1.706 2.382 c
-1.548 2.577 1.326 2.675 1.043 2.675 c
-0 2.675 l
-h
-5.438 -1.749 m
-5.222 -2.036 4.91 -2.175 4.498 -2.175 c
-4.135 -2.175 3.859 -2.054 3.675 -1.808 c
-3.499 -1.554 3.403 -1.19 3.395 -0.72 c
-3.395 1.881 l
-4.042 1.881 l
-4.042 -0.661 l
-4.042 -1.29 4.226 -1.602 4.601 -1.602 c
-5.002 -1.602 5.277 -1.425 5.424 -1.072 c
-5.424 1.881 l
-6.071 1.881 l
-6.071 -2.102 l
-5.453 -2.102 l
-h
-7.908 2.837 m
-7.908 1.881 l
-8.511 1.881 l
-8.511 1.353 l
-7.908 1.353 l
-7.908 -1.117 l
-7.908 -1.275 7.93 -1.392 7.982 -1.469 c
-8.04 -1.55 8.129 -1.587 8.247 -1.587 c
-8.334 -1.587 8.422 -1.573 8.511 -1.543 c
-8.511 -2.102 l
-8.364 -2.15 8.21 -2.175 8.056 -2.175 c
-7.798 -2.175 7.603 -2.084 7.468 -1.896 c
-7.327 -1.712 7.262 -1.452 7.262 -1.117 c
-7.262 1.353 l
-6.659 1.353 l
-6.659 1.881 l
-7.262 1.881 l
-7.262 2.837 l
-h
-12.083 -1.014 m
-12.803 1.881 l
-13.494 1.881 l
-12.2 -2.66 l
-12.101 -3.002 11.958 -3.262 11.774 -3.439 c
-11.597 -3.615 11.395 -3.704 11.171 -3.704 c
-11.083 -3.704 10.969 -3.682 10.834 -3.645 c
-10.834 -3.102 l
-10.98 -3.116 l
-11.164 -3.116 11.311 -3.072 11.422 -2.984 c
-11.528 -2.896 11.616 -2.738 11.686 -2.514 c
-11.803 -2.072 l
-10.643 1.881 l
-11.348 1.881 l
-h
-13.935 0.073 m
-13.935 0.651 14.071 1.106 14.346 1.441 c
-14.629 1.783 15 1.955 15.464 1.955 c
-15.923 1.955 16.291 1.786 16.565 1.455 c
-16.849 1.132 16.996 0.684 17.007 0.118 c
-17.007 -0.309 l
-17.007 -0.878 16.864 -1.334 16.581 -1.675 c
-16.305 -2.009 15.938 -2.175 15.478 -2.175 c
-15.015 -2.175 14.644 -2.013 14.361 -1.691 c
-14.086 -1.359 13.942 -0.918 13.935 -0.367 c
-h
-14.581 -0.309 m
-14.581 -0.712 14.659 -1.028 14.817 -1.263 c
-14.982 -1.499 15.202 -1.616 15.478 -1.616 c
-16.044 -1.616 16.338 -1.205 16.36 -0.382 c
-16.36 0.073 l
-16.36 0.474 16.276 0.794 16.11 1.029 c
-15.952 1.272 15.736 1.397 15.464 1.397 c
-15.199 1.397 14.982 1.272 14.817 1.029 c
-14.659 0.794 14.581 0.474 14.581 0.073 c
-h
-19.873 -1.749 m
-19.657 -2.036 19.344 -2.175 18.932 -2.175 c
-18.568 -2.175 18.293 -2.054 18.109 -1.808 c
-17.933 -1.554 17.837 -1.19 17.83 -0.72 c
-17.83 1.881 l
-18.477 1.881 l
-18.477 -0.661 l
-18.477 -1.29 18.66 -1.602 19.036 -1.602 c
-19.436 -1.602 19.711 -1.425 19.858 -1.072 c
-19.858 1.881 l
-20.505 1.881 l
-20.505 -2.102 l
-19.888 -2.102 l
-h
-23.137 1.264 m
-23.048 1.283 22.949 1.294 22.842 1.294 c
-22.508 1.294 22.273 1.11 22.137 0.75 c
-22.137 -2.102 l
-21.49 -2.102 l
-21.49 1.881 l
-22.122 1.881 l
-22.137 1.47 l
-22.313 1.794 22.556 1.955 22.872 1.955 c
-22.978 1.955 23.067 1.933 23.137 1.897 c
-h
-26.884 -1.616 m
-27.098 -1.616 27.27 -1.554 27.399 -1.425 c
-27.535 -1.29 27.609 -1.099 27.619 -0.852 c
-28.237 -0.852 l
-28.215 -1.234 28.079 -1.554 27.825 -1.808 c
-27.568 -2.054 27.256 -2.175 26.884 -2.175 c
-26.392 -2.175 26.017 -2.024 25.753 -1.72 c
-25.496 -1.407 25.371 -0.941 25.371 -0.323 c
-25.371 0.118 l
-25.371 0.713 25.496 1.169 25.753 1.484 c
-26.017 1.797 26.392 1.955 26.884 1.955 c
-27.285 1.955 27.605 1.823 27.84 1.559 c
-28.083 1.301 28.215 0.956 28.237 0.515 c
-27.619 0.515 l
-27.598 0.809 27.524 1.029 27.399 1.176 c
-27.281 1.324 27.109 1.397 26.884 1.397 c
-26.591 1.397 26.374 1.297 26.238 1.103 c
-26.098 0.915 26.025 0.607 26.017 0.177 c
-26.017 -0.338 l
-26.017 -0.808 26.084 -1.143 26.223 -1.338 c
-26.37 -1.525 26.591 -1.616 26.884 -1.616 c
-31.015 -1.749 m
-30.798 -2.036 30.486 -2.175 30.074 -2.175 c
-29.71 -2.175 29.435 -2.054 29.251 -1.808 c
-29.074 -1.554 28.979 -1.19 28.972 -0.72 c
-28.972 1.881 l
-29.619 1.881 l
-29.619 -0.661 l
-29.619 -1.29 29.803 -1.602 30.177 -1.602 c
-30.578 -1.602 30.853 -1.425 31 -1.072 c
-31 1.881 l
-31.647 1.881 l
-31.647 -2.102 l
-31.03 -2.102 l
-h
-34.279 1.264 m
-34.19 1.283 34.091 1.294 33.984 1.294 c
-33.65 1.294 33.415 1.11 33.279 0.75 c
-33.279 -2.102 l
-32.632 -2.102 l
-32.632 1.881 l
-33.264 1.881 l
-33.279 1.47 l
-33.456 1.794 33.697 1.955 34.013 1.955 c
-34.121 1.955 34.208 1.933 34.279 1.897 c
-h
-36.571 1.264 m
-36.483 1.283 36.384 1.294 36.278 1.294 c
-35.943 1.294 35.708 1.11 35.572 0.75 c
-35.572 -2.102 l
-34.925 -2.102 l
-34.925 1.881 l
-35.557 1.881 l
-35.572 1.47 l
-35.748 1.794 35.991 1.955 36.307 1.955 c
-36.413 1.955 36.502 1.933 36.571 1.897 c
-h
-38.57 -2.175 m
-38.071 -2.175 37.689 -2.028 37.424 -1.734 c
-37.159 -1.44 37.027 -1.007 37.027 -0.426 c
-37.027 0.044 l
-37.027 0.64 37.152 1.106 37.409 1.441 c
-37.674 1.783 38.034 1.955 38.497 1.955 c
-38.956 1.955 39.298 1.801 39.526 1.5 c
-39.761 1.206 39.883 0.742 39.893 0.118 c
-39.893 -0.309 l
-37.674 -0.309 l
-37.674 -0.397 l
-37.674 -0.83 37.751 -1.143 37.909 -1.338 c
-38.075 -1.525 38.306 -1.616 38.599 -1.616 c
-38.794 -1.616 38.967 -1.583 39.114 -1.514 c
-39.262 -1.437 39.397 -1.319 39.526 -1.161 c
-39.864 -1.573 l
-39.577 -1.977 39.147 -2.175 38.57 -2.175 c
-38.497 1.397 m
-38.221 1.397 38.019 1.301 37.894 1.118 c
-37.766 0.93 37.693 0.64 37.674 0.25 c
-39.247 0.25 l
-39.247 0.339 l
-39.224 0.721 39.158 0.989 39.041 1.147 c
-38.923 1.312 38.74 1.397 38.497 1.397 c
-41.29 1.881 m
-41.304 1.441 l
-41.558 1.783 41.882 1.955 42.275 1.955 c
-42.98 1.955 43.337 1.484 43.347 0.544 c
-43.347 -2.102 l
-42.701 -2.102 l
-42.701 0.515 l
-42.701 0.827 42.646 1.048 42.539 1.176 c
-42.429 1.301 42.275 1.367 42.069 1.367 c
-41.911 1.367 41.764 1.312 41.628 1.206 c
-41.499 1.095 41.396 0.96 41.319 0.794 c
-41.319 -2.102 l
-40.673 -2.102 l
-40.673 1.881 l
-h
-45.171 2.837 m
-45.171 1.881 l
-45.773 1.881 l
-45.773 1.353 l
-45.171 1.353 l
-45.171 -1.117 l
-45.171 -1.275 45.192 -1.392 45.244 -1.469 c
-45.302 -1.55 45.391 -1.587 45.508 -1.587 c
-45.597 -1.587 45.685 -1.573 45.773 -1.543 c
-45.773 -2.102 l
-45.626 -2.15 45.472 -2.175 45.317 -2.175 c
-45.06 -2.175 44.866 -2.084 44.729 -1.896 c
-44.59 -1.712 44.523 -1.452 44.523 -1.117 c
-44.523 1.353 l
-43.921 1.353 l
-43.921 1.881 l
-44.523 1.881 l
-44.523 2.837 l
-h
-49.639 -1.616 m
-49.852 -1.616 50.025 -1.554 50.154 -1.425 c
-50.289 -1.29 50.362 -1.099 50.374 -0.852 c
-50.991 -0.852 l
-50.969 -1.234 50.833 -1.554 50.58 -1.808 c
-50.322 -2.054 50.01 -2.175 49.639 -2.175 c
-49.146 -2.175 48.772 -2.024 48.507 -1.72 c
-48.25 -1.407 48.124 -0.941 48.124 -0.323 c
-48.124 0.118 l
-48.124 0.713 48.25 1.169 48.507 1.484 c
-48.772 1.797 49.146 1.955 49.639 1.955 c
-50.04 1.955 50.359 1.823 50.594 1.559 c
-50.837 1.301 50.969 0.956 50.991 0.515 c
-50.374 0.515 l
-50.352 0.809 50.278 1.029 50.154 1.176 c
-50.036 1.324 49.863 1.397 49.639 1.397 c
-49.345 1.397 49.128 1.297 48.992 1.103 c
-48.853 0.915 48.779 0.607 48.772 0.177 c
-48.772 -0.338 l
-48.772 -0.808 48.838 -1.143 48.978 -1.338 c
-49.124 -1.525 49.345 -1.616 49.639 -1.616 c
-52.388 1.47 m
-52.641 1.794 52.961 1.955 53.343 1.955 c
-54.048 1.955 54.405 1.484 54.416 0.544 c
-54.416 -2.102 l
-53.769 -2.102 l
-53.769 0.515 l
-53.769 0.827 53.714 1.048 53.608 1.176 c
-53.497 1.301 53.343 1.367 53.138 1.367 c
-52.98 1.367 52.832 1.312 52.696 1.206 c
-52.568 1.095 52.465 0.96 52.388 0.794 c
-52.388 -2.102 l
-51.741 -2.102 l
-51.741 3.543 l
-52.388 3.543 l
-h
-57.414 -2.102 m
-57.374 -2.013 57.348 -1.866 57.341 -1.66 c
-57.106 -2.006 56.812 -2.175 56.459 -2.175 c
-56.095 -2.175 55.812 -2.08 55.606 -1.881 c
-55.409 -1.675 55.313 -1.389 55.313 -1.014 c
-55.313 -0.613 55.449 -0.294 55.725 -0.058 c
-55.997 0.184 56.371 0.309 56.841 0.309 c
-57.327 0.309 l
-57.327 0.736 l
-57.327 0.971 57.271 1.135 57.165 1.235 c
-57.055 1.341 56.893 1.397 56.68 1.397 c
-56.481 1.397 56.319 1.338 56.195 1.22 c
-56.077 1.103 56.018 0.956 56.018 0.779 c
-55.371 0.779 l
-55.371 0.974 55.43 1.166 55.548 1.353 c
-55.673 1.536 55.835 1.683 56.033 1.794 c
-56.238 1.9 56.467 1.955 56.724 1.955 c
-57.125 1.955 57.429 1.852 57.635 1.646 c
-57.848 1.441 57.962 1.147 57.973 0.765 c
-57.973 -1.249 l
-57.973 -1.554 58.01 -1.818 58.091 -2.043 c
-58.091 -2.102 l
-h
-56.547 -1.587 m
-56.712 -1.587 56.863 -1.543 57.003 -1.455 c
-57.15 -1.367 57.256 -1.257 57.327 -1.117 c
-57.327 -0.176 l
-56.959 -0.176 l
-56.643 -0.176 56.4 -0.246 56.224 -0.382 c
-56.047 -0.511 55.96 -0.698 55.96 -0.941 c
-55.96 -1.168 56.003 -1.334 56.092 -1.44 c
-56.18 -1.539 56.331 -1.587 56.547 -1.587 c
-59.59 1.881 m
-59.604 1.441 l
-59.858 1.783 60.182 1.955 60.575 1.955 c
-61.281 1.955 61.637 1.484 61.648 0.544 c
-61.648 -2.102 l
-61.001 -2.102 l
-61.001 0.515 l
-61.001 0.827 60.946 1.048 60.84 1.176 c
-60.729 1.301 60.575 1.367 60.369 1.367 c
-60.211 1.367 60.064 1.312 59.928 1.206 c
-59.8 1.095 59.697 0.96 59.619 0.794 c
-59.619 -2.102 l
-58.973 -2.102 l
-58.973 1.881 l
-h
-62.486 0.073 m
-62.486 0.691 62.596 1.154 62.824 1.47 c
-63.048 1.794 63.382 1.955 63.824 1.955 c
-64.224 1.955 64.529 1.779 64.735 1.426 c
-64.778 1.881 l
-65.367 1.881 l
-65.367 -2.146 l
-65.367 -2.634 65.238 -3.013 64.984 -3.278 c
-64.728 -3.542 64.375 -3.675 63.926 -3.675 c
-63.728 -3.675 63.507 -3.623 63.265 -3.528 c
-63.018 -3.428 62.839 -3.307 62.721 -3.16 c
-62.985 -2.719 l
-63.251 -2.984 63.548 -3.116 63.882 -3.116 c
-64.419 -3.116 64.695 -2.822 64.705 -2.234 c
-64.705 -1.705 l
-64.5 -2.021 64.198 -2.175 63.808 -2.175 c
-63.397 -2.175 63.074 -2.024 62.839 -1.72 c
-62.611 -1.407 62.493 -0.955 62.486 -0.367 c
-h
-63.147 -0.309 m
-63.147 -0.75 63.21 -1.08 63.338 -1.294 c
-63.463 -1.499 63.681 -1.602 63.985 -1.602 c
-64.308 -1.602 64.547 -1.437 64.705 -1.103 c
-64.705 0.882 l
-64.537 1.206 64.298 1.367 63.985 1.367 c
-63.691 1.367 63.474 1.264 63.338 1.058 c
-63.21 0.853 63.147 0.53 63.147 0.088 c
-h
-67.748 -2.175 m
-67.249 -2.175 66.866 -2.028 66.602 -1.734 c
-66.337 -1.44 66.205 -1.007 66.205 -0.426 c
-66.205 0.044 l
-66.205 0.64 66.33 1.106 66.586 1.441 c
-66.852 1.783 67.211 1.955 67.675 1.955 c
-68.134 1.955 68.475 1.801 68.703 1.5 c
-68.938 1.206 69.06 0.742 69.071 0.118 c
-69.071 -0.309 l
-66.852 -0.309 l
-66.852 -0.397 l
-66.852 -0.83 66.929 -1.143 67.087 -1.338 c
-67.252 -1.525 67.484 -1.616 67.777 -1.616 c
-67.972 -1.616 68.145 -1.583 68.292 -1.514 c
-68.439 -1.437 68.575 -1.319 68.703 -1.161 c
-69.042 -1.573 l
-68.755 -1.977 68.325 -2.175 67.748 -2.175 c
-67.675 1.397 m
-67.399 1.397 67.197 1.301 67.072 1.118 c
-66.943 0.93 66.87 0.64 66.852 0.25 c
-68.425 0.25 l
-68.425 0.339 l
-68.402 0.721 68.336 0.989 68.219 1.147 c
-68.101 1.312 67.917 1.397 67.675 1.397 c
-71.791 -1.087 m
-71.791 -0.941 71.735 -0.819 71.629 -0.72 c
-71.519 -0.625 71.313 -0.507 71.012 -0.367 c
-70.666 -0.22 70.423 -0.099 70.276 0 c
-70.129 0.107 70.019 0.225 69.952 0.353 c
-69.883 0.478 69.85 0.636 69.85 0.823 c
-69.85 1.147 69.967 1.415 70.203 1.632 c
-70.438 1.845 70.739 1.955 71.114 1.955 c
-71.496 1.955 71.805 1.841 72.04 1.617 c
-72.275 1.389 72.393 1.103 72.393 0.75 c
-71.746 0.75 l
-71.746 0.927 71.687 1.077 71.57 1.206 c
-71.452 1.33 71.298 1.397 71.114 1.397 c
-70.916 1.397 70.765 1.341 70.658 1.235 c
-70.548 1.135 70.497 1.004 70.497 0.838 c
-70.497 0.709 70.534 0.603 70.615 0.515 c
-70.692 0.434 70.883 0.331 71.188 0.206 c
-71.666 0.019 71.996 -0.168 72.173 -0.353 c
-72.349 -0.529 72.437 -0.756 72.437 -1.028 c
-72.437 -1.381 72.312 -1.66 72.069 -1.866 c
-71.834 -2.072 71.519 -2.175 71.128 -2.175 c
-70.706 -2.175 70.368 -2.057 70.114 -1.822 c
-69.857 -1.579 69.732 -1.275 69.732 -0.911 c
-70.38 -0.911 l
-70.386 -1.139 70.457 -1.315 70.585 -1.44 c
-70.71 -1.558 70.893 -1.616 71.128 -1.616 c
-71.342 -1.616 71.504 -1.569 71.614 -1.469 c
-71.731 -1.374 71.791 -1.246 71.791 -1.087 c
-75.7 -2.102 -0.647 3.983 re
-75.745 2.926 m
-75.745 2.816 75.715 2.723 75.656 2.646 c
-75.597 2.577 75.502 2.543 75.377 2.543 c
-75.259 2.543 75.164 2.577 75.097 2.646 c
-75.039 2.723 75.01 2.816 75.01 2.926 c
-75.01 3.043 75.039 3.135 75.097 3.205 c
-75.164 3.282 75.259 3.323 75.377 3.323 c
-75.502 3.323 75.597 3.282 75.656 3.205 c
-75.715 3.124 75.745 3.032 75.745 2.926 c
-77.332 1.881 m
-77.347 1.441 l
-77.6 1.783 77.923 1.955 78.317 1.955 c
-79.022 1.955 79.379 1.484 79.39 0.544 c
-79.39 -2.102 l
-78.743 -2.102 l
-78.743 0.515 l
-78.743 0.827 78.688 1.048 78.581 1.176 c
-78.471 1.301 78.317 1.367 78.111 1.367 c
-77.952 1.367 77.806 1.312 77.67 1.206 c
-77.541 1.095 77.439 0.96 77.362 0.794 c
-77.362 -2.102 l
-76.714 -2.102 l
-76.714 1.881 l
-h
-81.212 2.837 m
-81.212 1.881 l
-81.815 1.881 l
-81.815 1.353 l
-81.212 1.353 l
-81.212 -1.117 l
-81.212 -1.275 81.235 -1.392 81.286 -1.469 c
-81.345 -1.55 81.433 -1.587 81.551 -1.587 c
-81.638 -1.587 81.727 -1.573 81.815 -1.543 c
-81.815 -2.102 l
-81.668 -2.15 81.514 -2.175 81.36 -2.175 c
-81.102 -2.175 80.907 -2.084 80.771 -1.896 c
-80.632 -1.712 80.566 -1.452 80.566 -1.117 c
-80.566 1.353 l
-79.963 1.353 l
-79.963 1.881 l
-80.566 1.881 l
-80.566 2.837 l
-h
-82.374 0.073 m
-82.374 0.651 82.509 1.106 82.785 1.441 c
-83.068 1.783 83.439 1.955 83.903 1.955 c
-84.362 1.955 84.73 1.786 85.004 1.455 c
-85.287 1.132 85.435 0.684 85.445 0.118 c
-85.445 -0.309 l
-85.445 -0.878 85.303 -1.334 85.019 -1.675 c
-84.744 -2.009 84.377 -2.175 83.917 -2.175 c
-83.454 -2.175 83.083 -2.013 82.8 -1.691 c
-82.525 -1.359 82.381 -0.918 82.374 -0.367 c
-h
-83.02 -0.309 m
-83.02 -0.712 83.097 -1.028 83.255 -1.263 c
-83.421 -1.499 83.641 -1.616 83.917 -1.616 c
-84.483 -1.616 84.777 -1.205 84.799 -0.382 c
-84.799 0.073 l
-84.799 0.474 84.715 0.794 84.549 1.029 c
-84.391 1.272 84.175 1.397 83.903 1.397 c
-83.637 1.397 83.421 1.272 83.255 1.029 c
-83.097 0.794 83.02 0.474 83.02 0.073 c
-h
-f
-Q
-q 1 0 0 1 504.5495 148.9813 cm
-0 0 m
-0 0.087 -0.044 0.165 -0.133 0.235 c
--0.221 0.312 -0.408 0.415 -0.691 0.544 c
--1.125 0.72 -1.422 0.9 -1.588 1.087 c
--1.746 1.271 -1.823 1.502 -1.823 1.778 c
--1.823 2.119 -1.702 2.403 -1.455 2.63 c
--1.202 2.865 -0.864 2.983 -0.441 2.983 c
--0.011 2.983 0.338 2.869 0.602 2.645 c
-0.867 2.418 0.999 2.117 0.999 1.734 c
--0.044 1.734 l
--0.044 2.057 -0.184 2.219 -0.456 2.219 c
--0.566 2.219 -0.655 2.183 -0.721 2.117 c
--0.79 2.046 -0.823 1.947 -0.823 1.822 c
--0.823 1.734 -0.786 1.653 -0.706 1.587 c
--0.628 1.529 -0.449 1.433 -0.162 1.308 c
-0.268 1.15 0.565 0.974 0.735 0.779 c
-0.911 0.591 0.999 0.341 0.999 0.029 c
-0.999 -0.324 0.867 -0.611 0.602 -0.823 c
-0.338 -1.04 -0.011 -1.147 -0.441 -1.147 c
--0.736 -1.147 -0.996 -1.092 -1.22 -0.985 c
--1.448 -0.867 -1.625 -0.706 -1.75 -0.5 c
--1.867 -0.294 -1.926 -0.074 -1.926 0.161 c
--0.941 0.161 l
--0.941 -0.026 -0.904 -0.162 -0.823 -0.25 c
--0.736 -0.339 -0.603 -0.383 -0.427 -0.383 c
--0.144 -0.383 0 -0.258 0 0 c
-2.866 3.881 m
-2.866 2.91 l
-3.395 2.91 l
-3.395 2.117 l
-2.866 2.117 l
-2.866 0.147 l
-2.866 -0.011 2.884 -0.118 2.925 -0.177 c
-2.973 -0.235 3.057 -0.265 3.175 -0.265 c
-3.281 -0.265 3.366 -0.258 3.424 -0.235 c
-3.424 -1.044 l
-3.248 -1.11 3.057 -1.147 2.851 -1.147 c
-2.175 -1.147 1.83 -0.761 1.822 0.014 c
-1.822 2.117 l
-1.367 2.117 l
-1.367 2.91 l
-1.822 2.91 l
-1.822 3.881 l
-h
-5.85 -1.073 m
-5.82 -1.015 5.791 -0.912 5.762 -0.765 c
-5.574 -1.022 5.325 -1.147 5.012 -1.147 c
-4.677 -1.147 4.398 -1.04 4.174 -0.823 c
-3.958 -0.599 3.85 -0.31 3.85 0.043 c
-3.85 0.455 3.983 0.771 4.247 0.999 c
-4.512 1.234 4.895 1.352 5.394 1.352 c
-5.718 1.352 l
-5.718 1.675 l
-5.718 1.851 5.681 1.973 5.614 2.042 c
-5.556 2.119 5.468 2.16 5.35 2.16 c
-5.093 2.16 4.968 2.006 4.968 1.705 c
-3.925 1.705 l
-3.925 2.076 4.06 2.381 4.336 2.616 c
-4.608 2.859 4.957 2.983 5.379 2.983 c
-5.82 2.983 6.158 2.865 6.393 2.63 c
-6.636 2.403 6.761 2.08 6.761 1.66 c
-6.761 -0.206 l
-6.761 -0.551 6.809 -0.82 6.908 -1.015 c
-6.908 -1.073 l
-h
-5.247 -0.324 m
-5.354 -0.324 5.446 -0.306 5.527 -0.265 c
-5.614 -0.217 5.677 -0.158 5.718 -0.088 c
-5.718 0.735 l
-5.468 0.735 l
-5.292 0.735 5.148 0.675 5.041 0.558 c
-4.943 0.448 4.895 0.301 4.895 0.118 c
-4.895 -0.177 5.012 -0.324 5.247 -0.324 c
-9.275 0 m
-9.275 0.087 9.231 0.165 9.142 0.235 c
-9.055 0.312 8.866 0.415 8.584 0.544 c
-8.151 0.72 7.852 0.9 7.688 1.087 c
-7.53 1.271 7.453 1.502 7.453 1.778 c
-7.453 2.119 7.573 2.403 7.819 2.63 c
-8.073 2.865 8.411 2.983 8.834 2.983 c
-9.263 2.983 9.612 2.869 9.878 2.645 c
-10.142 2.418 10.275 2.117 10.275 1.734 c
-9.231 1.734 l
-9.231 2.057 9.091 2.219 8.819 2.219 c
-8.708 2.219 8.621 2.183 8.554 2.117 c
-8.484 2.046 8.452 1.947 8.452 1.822 c
-8.452 1.734 8.488 1.653 8.569 1.587 c
-8.646 1.529 8.826 1.433 9.113 1.308 c
-9.543 1.15 9.841 0.974 10.009 0.779 c
-10.186 0.591 10.275 0.341 10.275 0.029 c
-10.275 -0.324 10.142 -0.611 9.878 -0.823 c
-9.612 -1.04 9.263 -1.147 8.834 -1.147 c
-8.54 -1.147 8.279 -1.092 8.055 -0.985 c
-7.827 -0.867 7.65 -0.706 7.526 -0.5 c
-7.408 -0.294 7.349 -0.074 7.349 0.161 c
-8.334 0.161 l
-8.334 -0.026 8.371 -0.162 8.452 -0.25 c
-8.54 -0.339 8.672 -0.383 8.849 -0.383 c
-9.132 -0.383 9.275 -0.258 9.275 0 c
-11.95 2.557 m
-12.174 2.84 12.45 2.983 12.773 2.983 c
-13.134 2.983 13.409 2.855 13.596 2.601 c
-13.791 2.344 13.89 1.962 13.89 1.454 c
-13.89 -1.073 l
-12.847 -1.073 l
-12.847 1.44 l
-12.847 1.675 12.806 1.841 12.729 1.94 c
-12.66 2.046 12.546 2.102 12.391 2.102 c
-12.203 2.102 12.057 2.017 11.95 1.851 c
-11.95 -1.073 l
-10.906 -1.073 l
-10.906 4.571 l
-11.95 4.571 l
-h
-14.728 -0.545 m
-14.728 -0.379 14.78 -0.243 14.89 -0.133 c
-14.996 -0.026 15.143 0.029 15.33 0.029 c
-15.496 0.029 15.64 -0.026 15.757 -0.133 c
-15.875 -0.243 15.933 -0.379 15.933 -0.545 c
-15.933 -0.713 15.875 -0.849 15.757 -0.956 c
-15.64 -1.066 15.496 -1.118 15.33 -1.118 c
-15.154 -1.118 15.008 -1.066 14.89 -0.956 c
-14.78 -0.849 14.728 -0.713 14.728 -0.545 c
-f
-Q
-0.113 0.082 0.09 0 k
-287.665 142.3 234.667 -12.898 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 292.8568 135.461 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.646 -0.243 -0.775 -0.367 -0.881 c
--0.496 -0.992 -0.658 -1.08 -0.852 -1.146 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.807 l
--1.896 -1.807 l
--1.896 -1.263 l
--2.142 -1.256 -2.359 -1.219 -2.543 -1.161 c
--2.719 -1.102 -2.873 -1.024 -2.998 -0.926 c
--3.127 -0.819 -3.23 -0.691 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.213 -3.484 -0.014 c
--2.66 0.133 l
--2.642 0.034 -2.616 -0.058 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.367 c
--2.396 -0.426 -2.322 -0.477 -2.234 -0.514 c
--2.138 -0.554 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.662 l
--1.907 0.662 -1.926 0.666 -1.955 0.676 c
--1.977 0.684 -1.992 0.691 -1.999 0.691 c
--2.167 0.728 -2.329 0.772 -2.484 0.823 c
--2.642 0.882 -2.786 0.96 -2.91 1.058 c
--3.039 1.154 -3.142 1.279 -3.219 1.426 c
--3.289 1.573 -3.322 1.757 -3.322 1.985 c
--3.322 2.18 -3.289 2.345 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.837 c
--2.8 2.933 -2.645 3.003 -2.469 3.043 c
--2.293 3.091 -2.102 3.12 -1.896 3.132 c
--1.896 3.558 l
--1.543 3.558 l
--1.543 3.132 l
--1.319 3.12 -1.128 3.091 -0.97 3.043 c
--0.804 2.992 -0.669 2.918 -0.558 2.822 c
--0.44 2.735 -0.349 2.621 -0.279 2.484 c
--0.202 2.345 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.253 -1.213 2.459 -1.543 2.5 c
--1.543 1.368 l
--1.514 1.368 l
--1.506 1.368 -1.492 1.36 -1.469 1.353 c
--1.294 1.312 -1.117 1.264 -0.941 1.206 c
--0.756 1.147 -0.595 1.066 -0.455 0.971 c
--0.32 0.871 -0.213 0.743 -0.132 0.588 c
--0.044 0.431 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.503 -2.113 2.484 -2.19 2.455 c
--2.26 2.426 -2.319 2.386 -2.366 2.338 c
--2.406 2.297 -2.436 2.249 -2.454 2.191 c
--2.477 2.132 -2.484 2.066 -2.484 1.999 c
--2.484 1.912 -2.469 1.838 -2.439 1.779 c
--2.41 1.721 -2.373 1.669 -2.322 1.632 c
--2.263 1.592 -2.201 1.559 -2.131 1.529 c
--2.065 1.5 -1.984 1.47 -1.896 1.441 c
-h
--0.837 -0.014 m
--0.837 0.092 -0.86 0.177 -0.897 0.235 c
--0.926 0.302 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.53 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.529 -1.028 -0.44 c
--0.904 -0.345 -0.837 -0.201 -0.837 -0.014 c
-6.402 -2.66 m
-6.184 -2.66 5.993 -2.634 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.395 c
-5.284 -2.314 5.185 -2.219 5.108 -2.102 c
-5.039 -1.984 4.991 -1.855 4.961 -1.72 c
-5.858 -1.616 l
-5.895 -1.753 5.964 -1.859 6.064 -1.94 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.057 6.681 -2.028 c
-6.758 -1.999 6.828 -1.944 6.887 -1.866 c
-6.945 -1.797 6.99 -1.705 7.019 -1.587 c
-7.056 -1.469 7.078 -1.323 7.078 -1.146 c
-7.078 -0.955 l
-7.078 -0.889 7.082 -0.83 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.072 c
-6.464 -1.172 6.259 -1.219 6.034 -1.219 c
-5.829 -1.219 5.644 -1.183 5.49 -1.102 c
-5.343 -1.014 5.215 -0.897 5.108 -0.749 c
-5.009 -0.595 4.935 -0.411 4.888 -0.205 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.772 4.836 1.019 4.888 1.235 c
-4.946 1.449 5.027 1.632 5.137 1.779 c
-5.244 1.933 5.376 2.051 5.534 2.132 c
-5.689 2.22 5.876 2.264 6.093 2.264 c
-6.188 2.264 6.288 2.253 6.387 2.234 c
-6.483 2.213 6.571 2.18 6.652 2.132 c
-6.739 2.08 6.817 2.018 6.887 1.941 c
-6.964 1.86 7.026 1.768 7.078 1.661 c
-7.092 1.661 l
-7.092 1.808 l
-7.1 1.867 7.107 1.919 7.107 1.97 c
-7.115 2.029 7.122 2.077 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.151 2.22 c
-8.004 2.22 l
-7.993 2.139 7.982 2.029 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.161 l
-7.975 -1.414 7.938 -1.635 7.871 -1.822 c
-7.802 -2.006 7.699 -2.16 7.563 -2.278 c
-7.423 -2.403 7.258 -2.499 7.063 -2.557 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.53 m
-7.092 0.743 7.067 0.919 7.019 1.058 c
-6.978 1.206 6.924 1.324 6.857 1.411 c
-6.799 1.5 6.729 1.559 6.652 1.588 c
-6.571 1.625 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.621 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.368 c
-5.88 1.279 5.835 1.162 5.799 1.015 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.338 c
-6.049 -0.514 6.211 -0.602 6.417 -0.602 c
-6.483 -0.602 6.556 -0.588 6.637 -0.558 c
-6.725 -0.521 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.176 7.019 -0.029 c
-7.067 0.118 7.092 0.302 7.092 0.53 c
-11.036 -0.646 m
-12.168 -0.646 l
-12.168 -1.263 l
-8.86 -1.263 l
-8.86 -0.646 l
-10.124 -0.646 l
-10.124 1.603 l
-9.199 1.603 l
-9.199 2.22 l
-11.036 2.22 l
-h
-10.124 3.514 0.912 -0.676 re
-10.124 2.837 m
-13.597 1.603 m
-13.053 1.603 l
-13.053 2.22 l
-13.641 2.22 l
-13.92 3.117 l
-14.494 3.117 l
-14.494 2.22 l
-15.728 2.22 l
-15.728 1.603 l
-14.494 1.603 l
-14.494 -0.103 l
-14.494 -0.323 l
-14.501 -0.392 14.523 -0.455 14.552 -0.514 c
-14.589 -0.565 14.645 -0.61 14.714 -0.646 c
-14.791 -0.675 14.905 -0.691 15.052 -0.691 c
-15.188 -0.691 15.324 -0.687 15.464 -0.675 c
-15.599 -0.658 15.732 -0.631 15.861 -0.602 c
-15.861 -1.205 l
-15.78 -1.215 15.703 -1.23 15.626 -1.249 c
-15.545 -1.26 15.468 -1.267 15.391 -1.278 c
-15.31 -1.286 15.221 -1.294 15.125 -1.294 c
-15.038 -1.3 14.938 -1.308 14.832 -1.308 c
-14.645 -1.308 14.483 -1.294 14.346 -1.263 c
-14.218 -1.227 14.104 -1.183 14.009 -1.132 c
-13.92 -1.084 13.847 -1.024 13.788 -0.955 c
-13.729 -0.878 13.685 -0.801 13.656 -0.72 c
-13.627 -0.631 13.604 -0.544 13.597 -0.455 c
-13.586 -0.359 13.582 -0.264 13.582 -0.176 c
-h
-24.22 -0.249 m
-24.22 -0.419 24.18 -0.569 24.103 -0.706 c
-24.033 -0.833 23.931 -0.947 23.794 -1.043 c
-23.666 -1.132 23.504 -1.201 23.31 -1.249 c
-23.121 -1.296 22.905 -1.323 22.662 -1.323 c
-22.435 -1.323 22.236 -1.308 22.06 -1.278 c
-21.883 -1.249 21.725 -1.201 21.59 -1.132 c
-21.45 -1.055 21.34 -0.955 21.251 -0.837 c
-21.163 -0.72 21.093 -0.573 21.045 -0.396 c
-21.854 -0.278 l
-21.872 -0.378 21.902 -0.455 21.942 -0.514 c
-21.99 -0.573 22.049 -0.617 22.119 -0.646 c
-22.185 -0.675 22.265 -0.702 22.354 -0.72 c
-22.442 -0.731 22.545 -0.735 22.662 -0.735 c
-22.758 -0.735 22.853 -0.731 22.942 -0.72 c
-23.03 -0.702 23.107 -0.675 23.177 -0.646 c
-23.243 -0.617 23.295 -0.58 23.324 -0.529 c
-23.36 -0.481 23.383 -0.419 23.383 -0.338 c
-23.383 -0.242 23.353 -0.168 23.295 -0.118 c
-23.243 -0.07 23.177 -0.029 23.089 0 c
-23.001 0.038 22.89 0.067 22.766 0.088 c
-22.647 0.118 22.516 0.148 22.369 0.177 c
-22.229 0.214 22.09 0.254 21.942 0.294 c
-21.803 0.342 21.677 0.405 21.56 0.485 c
-21.45 0.563 21.361 0.662 21.296 0.78 c
-21.226 0.897 21.193 1.048 21.193 1.235 c
-21.193 1.389 21.222 1.532 21.28 1.661 c
-21.347 1.798 21.442 1.912 21.56 1.999 c
-21.685 2.088 21.843 2.154 22.03 2.205 c
-22.215 2.253 22.427 2.278 22.662 2.278 c
-22.846 2.278 23.023 2.257 23.192 2.22 c
-23.357 2.191 23.504 2.135 23.632 2.058 c
-23.757 1.989 23.868 1.889 23.956 1.764 c
-24.044 1.646 24.103 1.503 24.133 1.338 c
-23.339 1.264 l
-23.316 1.341 23.287 1.405 23.25 1.455 c
-23.21 1.515 23.162 1.559 23.104 1.588 c
-23.052 1.625 22.99 1.65 22.913 1.661 c
-22.832 1.669 22.751 1.676 22.662 1.676 c
-22.446 1.676 22.284 1.646 22.177 1.588 c
-22.067 1.536 22.016 1.449 22.016 1.324 c
-22.016 1.243 22.034 1.18 22.074 1.133 c
-22.122 1.081 22.185 1.044 22.265 1.015 c
-22.354 0.985 22.45 0.956 22.56 0.927 c
-22.666 0.904 22.788 0.882 22.927 0.853 c
-23.081 0.823 23.239 0.784 23.397 0.736 c
-23.551 0.684 23.692 0.622 23.809 0.545 c
-23.927 0.464 24.022 0.36 24.103 0.235 c
-24.18 0.107 24.22 -0.055 24.22 -0.249 c
-25.783 1.603 m
-25.238 1.603 l
-25.238 2.22 l
-25.826 2.22 l
-26.106 3.117 l
-26.679 3.117 l
-26.679 2.22 l
-27.914 2.22 l
-27.914 1.603 l
-26.679 1.603 l
-26.679 -0.103 l
-26.679 -0.323 l
-26.686 -0.392 26.709 -0.455 26.738 -0.514 c
-26.774 -0.565 26.83 -0.61 26.9 -0.646 c
-26.977 -0.675 27.09 -0.691 27.237 -0.691 c
-27.374 -0.691 27.509 -0.687 27.649 -0.675 c
-27.785 -0.658 27.917 -0.631 28.046 -0.602 c
-28.046 -1.205 l
-27.965 -1.215 27.888 -1.23 27.811 -1.249 c
-27.73 -1.26 27.653 -1.267 27.576 -1.278 c
-27.495 -1.286 27.407 -1.294 27.312 -1.294 c
-27.223 -1.3 27.123 -1.308 27.017 -1.308 c
-26.83 -1.308 26.668 -1.294 26.532 -1.263 c
-26.404 -1.227 26.29 -1.183 26.194 -1.132 c
-26.106 -1.084 26.032 -1.024 25.974 -0.955 c
-25.915 -0.878 25.87 -0.801 25.841 -0.72 c
-25.812 -0.631 25.789 -0.544 25.783 -0.455 c
-25.772 -0.359 25.768 -0.264 25.768 -0.176 c
-h
-30.196 -1.323 m
-30.027 -1.323 29.876 -1.3 29.741 -1.263 c
-29.612 -1.215 29.498 -1.146 29.402 -1.058 c
-29.313 -0.97 29.244 -0.863 29.196 -0.735 c
-29.145 -0.598 29.122 -0.448 29.122 -0.278 c
-29.122 -0.073 29.155 0.096 29.226 0.235 c
-29.292 0.383 29.388 0.493 29.505 0.574 c
-29.63 0.662 29.773 0.724 29.931 0.765 c
-30.096 0.802 30.273 0.827 30.46 0.838 c
-31.181 0.853 l
-31.181 1.029 l
-31.181 1.147 31.17 1.25 31.152 1.338 c
-31.129 1.426 31.096 1.492 31.048 1.544 c
-31.008 1.603 30.96 1.64 30.901 1.661 c
-30.842 1.68 30.776 1.691 30.71 1.691 c
-30.641 1.691 30.578 1.68 30.519 1.661 c
-30.468 1.65 30.42 1.625 30.372 1.588 c
-30.331 1.559 30.298 1.507 30.269 1.441 c
-30.248 1.382 30.233 1.301 30.225 1.206 c
-29.284 1.25 l
-29.313 1.397 29.358 1.532 29.417 1.661 c
-29.483 1.786 29.579 1.897 29.696 1.985 c
-29.814 2.08 29.953 2.154 30.122 2.205 c
-30.298 2.253 30.504 2.278 30.74 2.278 c
-31.181 2.278 31.511 2.168 31.74 1.956 c
-31.975 1.75 32.092 1.441 32.092 1.029 c
-32.092 -0.235 l
-32.092 -0.455 l
-32.099 -0.514 32.114 -0.569 32.136 -0.617 c
-32.154 -0.658 32.184 -0.691 32.224 -0.72 c
-32.261 -0.742 32.313 -0.749 32.371 -0.749 c
-32.438 -0.749 32.507 -0.745 32.577 -0.735 c
-32.577 -1.219 l
-32.519 -1.23 32.463 -1.242 32.415 -1.249 c
-32.375 -1.26 32.334 -1.267 32.297 -1.278 c
-32.257 -1.286 32.213 -1.294 32.166 -1.294 c
-32.114 -1.3 32.055 -1.308 31.989 -1.308 c
-31.761 -1.308 31.596 -1.256 31.489 -1.146 c
-31.379 -1.028 31.316 -0.863 31.298 -0.646 c
-31.283 -0.646 l
-31.214 -0.756 31.144 -0.852 31.077 -0.941 c
-31.008 -1.021 30.931 -1.087 30.842 -1.146 c
-30.755 -1.205 30.655 -1.249 30.549 -1.278 c
-30.449 -1.308 30.331 -1.323 30.196 -1.323 c
-31.181 0.353 m
-30.755 0.339 l
-30.655 0.339 30.564 0.331 30.475 0.324 c
-30.394 0.313 30.328 0.287 30.269 0.25 c
-30.211 0.21 30.159 0.151 30.122 0.074 c
-30.082 0.004 30.063 -0.087 30.063 -0.205 c
-30.063 -0.374 30.096 -0.496 30.167 -0.573 c
-30.233 -0.654 30.331 -0.691 30.46 -0.691 c
-30.567 -0.691 30.666 -0.668 30.755 -0.617 c
-30.85 -0.569 30.931 -0.507 30.99 -0.426 c
-31.056 -0.349 31.107 -0.261 31.137 -0.161 c
-31.166 -0.055 31.181 0.059 31.181 0.177 c
-h
-36.403 -0.249 m
-36.403 -0.419 36.362 -0.569 36.285 -0.706 c
-36.215 -0.833 36.112 -0.947 35.976 -1.043 c
-35.848 -1.132 35.686 -1.201 35.491 -1.249 c
-35.304 -1.296 35.087 -1.323 34.844 -1.323 c
-34.616 -1.323 34.418 -1.308 34.242 -1.278 c
-34.065 -1.249 33.907 -1.201 33.772 -1.132 c
-33.631 -1.055 33.521 -0.955 33.433 -0.837 c
-33.345 -0.72 33.275 -0.573 33.228 -0.396 c
-34.036 -0.278 l
-34.055 -0.378 34.084 -0.455 34.124 -0.514 c
-34.171 -0.573 34.231 -0.617 34.3 -0.646 c
-34.367 -0.675 34.447 -0.702 34.535 -0.72 c
-34.624 -0.731 34.726 -0.735 34.844 -0.735 c
-34.94 -0.735 35.035 -0.731 35.123 -0.72 c
-35.212 -0.702 35.289 -0.675 35.359 -0.646 c
-35.425 -0.617 35.476 -0.58 35.505 -0.529 c
-35.543 -0.481 35.565 -0.419 35.565 -0.338 c
-35.565 -0.242 35.535 -0.168 35.476 -0.118 c
-35.425 -0.07 35.359 -0.029 35.27 0 c
-35.183 0.038 35.073 0.067 34.948 0.088 c
-34.83 0.118 34.697 0.148 34.551 0.177 c
-34.41 0.214 34.271 0.254 34.124 0.294 c
-33.984 0.342 33.859 0.405 33.742 0.485 c
-33.631 0.563 33.544 0.662 33.477 0.78 c
-33.408 0.897 33.375 1.048 33.375 1.235 c
-33.375 1.389 33.404 1.532 33.463 1.661 c
-33.529 1.798 33.624 1.912 33.742 1.999 c
-33.867 2.088 34.025 2.154 34.212 2.205 c
-34.396 2.253 34.609 2.278 34.844 2.278 c
-35.028 2.278 35.204 2.257 35.374 2.22 c
-35.539 2.191 35.686 2.135 35.815 2.058 c
-35.939 1.989 36.05 1.889 36.138 1.764 c
-36.226 1.646 36.285 1.503 36.314 1.338 c
-35.52 1.264 l
-35.499 1.341 35.469 1.405 35.432 1.455 c
-35.392 1.515 35.345 1.559 35.285 1.588 c
-35.234 1.625 35.171 1.65 35.094 1.661 c
-35.013 1.669 34.932 1.676 34.844 1.676 c
-34.628 1.676 34.466 1.646 34.36 1.588 c
-34.249 1.536 34.198 1.449 34.198 1.324 c
-34.198 1.243 34.216 1.18 34.256 1.133 c
-34.304 1.081 34.367 1.044 34.447 1.015 c
-34.535 0.985 34.631 0.956 34.742 0.927 c
-34.848 0.904 34.969 0.882 35.109 0.853 c
-35.264 0.823 35.422 0.784 35.58 0.736 c
-35.734 0.684 35.873 0.622 35.991 0.545 c
-36.108 0.464 36.204 0.36 36.285 0.235 c
-36.362 0.107 36.403 -0.055 36.403 -0.249 c
-38.262 1.515 m
-38.379 1.786 38.53 1.985 38.718 2.103 c
-38.901 2.22 39.122 2.278 39.379 2.278 c
-39.584 2.278 39.754 2.242 39.894 2.176 c
-40.041 2.106 40.151 2.014 40.232 1.897 c
-40.32 1.779 40.378 1.636 40.408 1.47 c
-40.444 1.301 40.467 1.125 40.467 0.941 c
-40.467 -1.263 l
-39.555 -1.263 l
-39.555 0.736 l
-39.555 0.871 39.544 0.992 39.526 1.103 c
-39.515 1.21 39.489 1.297 39.453 1.368 c
-39.412 1.445 39.353 1.503 39.276 1.544 c
-39.206 1.58 39.114 1.603 38.996 1.603 c
-38.886 1.603 38.791 1.577 38.703 1.529 c
-38.615 1.478 38.534 1.411 38.468 1.324 c
-38.409 1.235 38.358 1.125 38.321 1 c
-38.291 0.882 38.277 0.75 38.277 0.603 c
-38.277 -1.263 l
-37.365 -1.263 l
-37.365 3.514 l
-38.277 3.514 l
-38.277 2.205 l
-38.277 2.135 38.269 2.066 38.262 1.999 c
-38.262 1.794 l
-38.262 1.735 38.254 1.68 38.248 1.632 c
-38.248 1.515 l
-h
-46.354 2.22 m
-46.362 2.198 46.368 2.165 46.368 2.117 c
-46.376 2.077 46.383 2.029 46.383 1.97 c
-46.391 1.919 46.398 1.867 46.398 1.808 c
-46.398 1.646 l
-46.412 1.646 l
-46.472 1.764 46.537 1.86 46.618 1.941 c
-46.695 2.018 46.78 2.08 46.869 2.132 c
-46.956 2.191 47.044 2.228 47.133 2.249 c
-47.228 2.268 47.328 2.278 47.426 2.278 c
-47.632 2.278 47.812 2.234 47.97 2.147 c
-48.125 2.058 48.253 1.929 48.353 1.764 c
-48.459 1.607 48.536 1.415 48.588 1.191 c
-48.647 0.975 48.676 0.739 48.676 0.485 c
-48.676 0.221 48.647 -0.025 48.588 -0.249 c
-48.536 -0.467 48.459 -0.658 48.353 -0.823 c
-48.253 -0.98 48.122 -1.102 47.956 -1.19 c
-47.798 -1.278 47.611 -1.323 47.397 -1.323 c
-47.298 -1.323 47.199 -1.311 47.104 -1.294 c
-47.004 -1.271 46.912 -1.242 46.824 -1.19 c
-46.743 -1.142 46.666 -1.08 46.589 -0.999 c
-46.52 -0.922 46.46 -0.83 46.412 -0.72 c
-46.398 -0.72 l
-46.398 -0.808 l
-46.405 -0.849 46.412 -0.897 46.412 -0.955 c
-46.412 -1.117 l
-46.412 -1.294 l
-46.412 -2.63 l
-45.501 -2.63 l
-45.501 1.455 l
-45.501 1.621 45.494 1.768 45.487 1.897 c
-45.487 2.22 l
-h
-46.398 0.456 m
-46.398 0.229 46.416 0.038 46.457 -0.118 c
-46.505 -0.264 46.559 -0.382 46.618 -0.47 c
-46.684 -0.558 46.758 -0.625 46.838 -0.661 c
-46.916 -0.702 46.993 -0.72 47.074 -0.72 c
-47.17 -0.72 47.258 -0.698 47.339 -0.646 c
-47.426 -0.598 47.493 -0.529 47.544 -0.44 c
-47.603 -0.345 47.647 -0.22 47.677 -0.073 c
-47.713 0.081 47.735 0.269 47.735 0.485 c
-47.735 0.875 47.677 1.169 47.559 1.368 c
-47.449 1.563 47.295 1.661 47.089 1.661 c
-47.008 1.661 46.931 1.64 46.854 1.603 c
-46.773 1.563 46.699 1.5 46.633 1.411 c
-46.563 1.324 46.505 1.199 46.457 1.044 c
-46.416 0.886 46.398 0.691 46.398 0.456 c
-52.751 0.485 m
-52.751 0.21 52.714 -0.04 52.648 -0.264 c
-52.579 -0.481 52.476 -0.668 52.34 -0.823 c
-52.201 -0.98 52.024 -1.102 51.81 -1.19 c
-51.594 -1.278 51.34 -1.323 51.046 -1.323 c
-50.771 -1.323 50.524 -1.278 50.312 -1.19 c
-50.106 -1.102 49.933 -0.98 49.797 -0.823 c
-49.657 -0.668 49.554 -0.481 49.489 -0.264 c
-49.419 -0.04 49.385 0.21 49.385 0.485 c
-49.385 0.739 49.415 0.975 49.473 1.191 c
-49.539 1.415 49.643 1.607 49.782 1.764 c
-49.918 1.929 50.094 2.058 50.312 2.147 c
-50.524 2.234 50.782 2.278 51.076 2.278 c
-51.388 2.278 51.649 2.234 51.854 2.147 c
-52.068 2.058 52.241 1.929 52.369 1.764 c
-52.505 1.607 52.604 1.415 52.664 1.191 c
-52.722 0.975 52.751 0.739 52.751 0.485 c
-51.796 0.485 m
-51.796 0.691 51.781 0.867 51.752 1.015 c
-51.73 1.162 51.694 1.283 51.634 1.382 c
-51.575 1.478 51.502 1.548 51.414 1.588 c
-51.326 1.636 51.216 1.661 51.091 1.661 c
-50.826 1.661 50.634 1.563 50.518 1.368 c
-50.399 1.18 50.341 0.886 50.341 0.485 c
-50.341 0.063 50.399 -0.242 50.518 -0.426 c
-50.634 -0.613 50.811 -0.706 51.046 -0.706 c
-51.172 -0.706 51.285 -0.687 51.384 -0.646 c
-51.48 -0.598 51.561 -0.525 51.619 -0.426 c
-51.686 -0.33 51.73 -0.205 51.752 -0.058 c
-51.781 0.088 51.796 0.269 51.796 0.485 c
-54.475 2.22 m
-54.482 2.198 54.49 2.165 54.49 2.117 c
-54.497 2.077 54.505 2.029 54.505 1.97 c
-54.512 1.919 54.519 1.867 54.519 1.808 c
-54.519 1.646 l
-54.534 1.646 l
-54.593 1.764 54.659 1.86 54.74 1.941 c
-54.817 2.018 54.902 2.08 54.989 2.132 c
-55.077 2.191 55.166 2.228 55.254 2.249 c
-55.349 2.268 55.449 2.278 55.548 2.278 c
-55.754 2.278 55.934 2.234 56.092 2.147 c
-56.246 2.058 56.375 1.929 56.474 1.764 c
-56.581 1.607 56.658 1.415 56.71 1.191 c
-56.768 0.975 56.797 0.739 56.797 0.485 c
-56.797 0.221 56.768 -0.025 56.71 -0.249 c
-56.658 -0.467 56.581 -0.658 56.474 -0.823 c
-56.375 -0.98 56.242 -1.102 56.077 -1.19 c
-55.919 -1.278 55.731 -1.323 55.519 -1.323 c
-55.419 -1.323 55.32 -1.311 55.224 -1.294 c
-55.125 -1.271 55.033 -1.242 54.946 -1.19 c
-54.865 -1.142 54.788 -1.08 54.711 -0.999 c
-54.64 -0.922 54.582 -0.83 54.534 -0.72 c
-54.519 -0.72 l
-54.519 -0.808 l
-54.526 -0.849 54.534 -0.897 54.534 -0.955 c
-54.534 -1.117 l
-54.534 -1.294 l
-54.534 -2.63 l
-53.622 -2.63 l
-53.622 1.455 l
-53.622 1.621 53.615 1.768 53.608 1.897 c
-53.608 2.22 l
-h
-54.519 0.456 m
-54.519 0.229 54.537 0.038 54.578 -0.118 c
-54.626 -0.264 54.68 -0.382 54.74 -0.47 c
-54.806 -0.558 54.879 -0.625 54.96 -0.661 c
-55.037 -0.702 55.114 -0.72 55.195 -0.72 c
-55.291 -0.72 55.379 -0.698 55.459 -0.646 c
-55.548 -0.598 55.614 -0.529 55.665 -0.44 c
-55.725 -0.345 55.769 -0.22 55.798 -0.073 c
-55.835 0.081 55.856 0.269 55.856 0.485 c
-55.856 0.875 55.798 1.169 55.68 1.368 c
-55.57 1.563 55.416 1.661 55.21 1.661 c
-55.129 1.661 55.052 1.64 54.975 1.603 c
-54.894 1.563 54.821 1.5 54.754 1.411 c
-54.684 1.324 54.626 1.199 54.578 1.044 c
-54.537 0.886 54.519 0.691 54.519 0.456 c
-f
-Q
-q 1 0 0 1 326.4111 120.7036 cm
-0 0 m
--1.808 0 l
--2.219 -1.396 l
--2.911 -1.396 l
--1.19 3.954 l
--0.617 3.954 l
-1.118 -1.396 l
-0.426 -1.396 l
-h
--1.631 0.588 m
--0.176 0.588 l
--0.897 3.013 l
-h
-4.63 0.397 m
-4.63 -0.231 4.513 -0.702 4.278 -1.014 c
-4.05 -1.319 3.734 -1.47 3.323 -1.47 c
-2.918 -1.47 2.61 -1.319 2.396 -1.014 c
-2.396 -2.925 l
-1.75 -2.925 l
-1.75 2.587 l
-2.338 2.587 l
-2.382 2.146 l
-2.595 2.488 2.903 2.66 3.308 2.66 c
-3.749 2.66 4.075 2.506 4.293 2.205 c
-4.505 1.9 4.619 1.444 4.63 0.838 c
-h
-3.984 0.779 m
-3.984 1.22 3.913 1.544 3.778 1.749 c
-3.638 1.962 3.418 2.072 3.117 2.072 c
-2.801 2.072 2.562 1.918 2.396 1.617 c
-2.396 -0.455 l
-2.562 -0.761 2.801 -0.912 3.117 -0.912 c
-3.41 -0.912 3.624 -0.808 3.763 -0.603 c
-3.899 -0.389 3.973 -0.059 3.984 0.382 c
-h
-8.349 0.397 m
-8.349 -0.231 8.231 -0.702 7.996 -1.014 c
-7.769 -1.319 7.453 -1.47 7.041 -1.47 c
-6.637 -1.47 6.328 -1.319 6.115 -1.014 c
-6.115 -2.925 l
-5.469 -2.925 l
-5.469 2.587 l
-6.056 2.587 l
-6.101 2.146 l
-6.313 2.488 6.622 2.66 7.026 2.66 c
-7.468 2.66 7.794 2.506 8.011 2.205 c
-8.224 1.9 8.339 1.444 8.349 0.838 c
-h
-7.703 0.779 m
-7.703 1.22 7.633 1.544 7.497 1.749 c
-7.358 1.962 7.136 2.072 6.835 2.072 c
-6.519 2.072 6.28 1.918 6.115 1.617 c
-6.115 -0.455 l
-6.28 -0.761 6.519 -0.912 6.835 -0.912 c
-7.129 -0.912 7.342 -0.808 7.482 -0.603 c
-7.618 -0.389 7.691 -0.059 7.703 0.382 c
-h
-9.893 -1.396 -0.647 5.644 re
-11.994 -0.309 m
-12.715 2.587 l
-13.406 2.587 l
-12.112 -1.955 l
-12.013 -2.296 11.869 -2.558 11.686 -2.734 c
-11.51 -2.911 11.308 -2.999 11.084 -2.999 c
-10.995 -2.999 10.882 -2.977 10.745 -2.94 c
-10.745 -2.396 l
-10.892 -2.411 l
-11.076 -2.411 11.223 -2.367 11.333 -2.278 c
-11.439 -2.19 11.528 -2.032 11.597 -1.808 c
-11.715 -1.367 l
-10.554 2.587 l
-11.26 2.587 l
-h
-17.698 -0.382 m
-17.698 -0.235 17.643 -0.114 17.536 -0.015 c
-17.426 0.081 17.22 0.198 16.919 0.338 c
-16.573 0.485 16.331 0.607 16.184 0.706 c
-16.037 0.812 15.927 0.929 15.861 1.058 c
-15.79 1.183 15.757 1.341 15.757 1.529 c
-15.757 1.852 15.875 2.12 16.11 2.337 c
-16.345 2.55 16.647 2.66 17.022 2.66 c
-17.404 2.66 17.712 2.547 17.947 2.323 c
-18.183 2.095 18.3 1.808 18.3 1.455 c
-17.654 1.455 l
-17.654 1.631 17.595 1.783 17.477 1.911 c
-17.359 2.036 17.205 2.102 17.022 2.102 c
-16.823 2.102 16.673 2.047 16.566 1.94 c
-16.455 1.841 16.405 1.708 16.405 1.544 c
-16.405 1.415 16.441 1.309 16.522 1.22 c
-16.599 1.139 16.79 1.037 17.095 0.912 c
-17.573 0.724 17.904 0.536 18.08 0.353 c
-18.256 0.176 18.344 -0.052 18.344 -0.324 c
-18.344 -0.676 18.219 -0.956 17.978 -1.161 c
-17.742 -1.367 17.426 -1.47 17.037 -1.47 c
-16.613 -1.47 16.276 -1.353 16.023 -1.118 c
-15.765 -0.875 15.64 -0.569 15.64 -0.206 c
-16.287 -0.206 l
-16.295 -0.434 16.364 -0.61 16.493 -0.735 c
-16.617 -0.852 16.802 -0.912 17.037 -0.912 c
-17.249 -0.912 17.411 -0.864 17.521 -0.765 c
-17.639 -0.669 17.698 -0.54 17.698 -0.382 c
-20.035 3.543 m
-20.035 2.587 l
-20.638 2.587 l
-20.638 2.057 l
-20.035 2.057 l
-20.035 -0.412 l
-20.035 -0.569 20.057 -0.687 20.108 -0.765 c
-20.168 -0.845 20.256 -0.882 20.373 -0.882 c
-20.461 -0.882 20.55 -0.867 20.638 -0.838 c
-20.638 -1.396 l
-20.491 -1.444 20.336 -1.47 20.182 -1.47 c
-19.925 -1.47 19.73 -1.378 19.594 -1.191 c
-19.454 -1.007 19.389 -0.746 19.389 -0.412 c
-19.389 2.057 l
-18.786 2.057 l
-18.786 2.587 l
-19.389 2.587 l
-19.389 3.543 l
-h
-21.197 0.779 m
-21.197 1.356 21.332 1.812 21.608 2.146 c
-21.891 2.488 22.262 2.66 22.725 2.66 c
-23.185 2.66 23.551 2.491 23.827 2.161 c
-24.11 1.837 24.257 1.389 24.268 0.823 c
-24.268 0.397 l
-24.268 -0.173 24.125 -0.628 23.842 -0.97 c
-23.566 -1.305 23.199 -1.47 22.74 -1.47 c
-22.277 -1.47 21.905 -1.309 21.623 -0.985 c
-21.347 -0.654 21.203 -0.214 21.197 0.338 c
-h
-21.843 0.397 m
-21.843 -0.008 21.92 -0.324 22.078 -0.559 c
-22.244 -0.794 22.464 -0.912 22.74 -0.912 c
-23.306 -0.912 23.599 -0.5 23.622 0.324 c
-23.622 0.779 l
-23.622 1.18 23.537 1.5 23.372 1.735 c
-23.214 1.977 22.997 2.102 22.725 2.102 c
-22.46 2.102 22.244 1.977 22.078 1.735 c
-21.92 1.5 21.843 1.18 21.843 0.779 c
-h
-26.753 1.97 m
-26.664 1.988 26.566 1.999 26.458 1.999 c
-26.124 1.999 25.889 1.816 25.753 1.455 c
-25.753 -1.396 l
-25.106 -1.396 l
-25.106 2.587 l
-25.739 2.587 l
-25.753 2.175 l
-25.93 2.499 26.172 2.66 26.487 2.66 c
-26.595 2.66 26.683 2.639 26.753 2.602 c
-h
-28.752 -1.47 m
-28.252 -1.47 27.869 -1.323 27.605 -1.029 c
-27.341 -0.735 27.208 -0.301 27.208 0.279 c
-27.208 0.75 l
-27.208 1.345 27.333 1.812 27.59 2.146 c
-27.855 2.488 28.215 2.66 28.678 2.66 c
-29.138 2.66 29.479 2.506 29.707 2.205 c
-29.942 1.911 30.063 1.448 30.074 0.823 c
-30.074 0.397 l
-27.855 0.397 l
-27.855 0.309 l
-27.855 -0.125 27.932 -0.437 28.09 -0.632 c
-28.255 -0.819 28.487 -0.912 28.781 -0.912 c
-28.976 -0.912 29.149 -0.879 29.296 -0.808 c
-29.442 -0.731 29.579 -0.613 29.707 -0.455 c
-30.045 -0.867 l
-29.758 -1.272 29.328 -1.47 28.752 -1.47 c
-28.678 2.102 m
-28.403 2.102 28.201 2.007 28.075 1.822 c
-27.947 1.635 27.873 1.345 27.855 0.956 c
-29.428 0.956 l
-29.428 1.043 l
-29.406 1.426 29.34 1.694 29.222 1.852 c
-29.105 2.018 28.92 2.102 28.678 2.102 c
-30.721 0.779 m
-30.721 1.386 30.832 1.852 31.059 2.175 c
-31.295 2.499 31.622 2.66 32.044 2.66 c
-32.426 2.66 32.724 2.502 32.941 2.19 c
-32.941 4.248 l
-33.587 4.248 l
-33.587 -1.396 l
-32.999 -1.396 l
-32.956 -0.97 l
-32.75 -1.305 32.445 -1.47 32.044 -1.47 c
-31.632 -1.47 31.31 -1.315 31.074 -1 c
-30.839 -0.676 30.721 -0.22 30.721 0.368 c
-h
-31.368 0.397 m
-31.368 -0.044 31.43 -0.374 31.559 -0.588 c
-31.695 -0.794 31.916 -0.897 32.22 -0.897 c
-32.544 -0.897 32.783 -0.735 32.941 -0.412 c
-32.941 1.602 l
-32.772 1.914 32.533 2.072 32.22 2.072 c
-31.916 2.072 31.695 1.97 31.559 1.764 c
-31.43 1.558 31.368 1.234 31.368 0.794 c
-h
-f
-Q
-q 1 0 0 1 364.3793 120.38 cm
-0 0 m
-0 0.088 -0.044 0.166 -0.133 0.235 c
--0.221 0.312 -0.408 0.416 -0.691 0.544 c
--1.125 0.721 -1.422 0.9 -1.588 1.087 c
--1.746 1.272 -1.823 1.503 -1.823 1.779 c
--1.823 2.12 -1.702 2.404 -1.455 2.631 c
--1.202 2.866 -0.864 2.984 -0.441 2.984 c
--0.011 2.984 0.338 2.87 0.602 2.646 c
-0.867 2.419 0.999 2.117 0.999 1.735 c
--0.044 1.735 l
--0.044 2.058 -0.184 2.22 -0.456 2.22 c
--0.566 2.22 -0.655 2.183 -0.721 2.117 c
--0.79 2.047 -0.823 1.948 -0.823 1.823 c
--0.823 1.735 -0.786 1.654 -0.706 1.588 c
--0.628 1.529 -0.449 1.434 -0.162 1.309 c
-0.268 1.151 0.565 0.974 0.735 0.779 c
-0.911 0.592 0.999 0.342 0.999 0.029 c
-0.999 -0.324 0.867 -0.61 0.602 -0.823 c
-0.338 -1.04 -0.011 -1.147 -0.441 -1.147 c
--0.736 -1.147 -0.996 -1.091 -1.22 -0.985 c
--1.448 -0.867 -1.625 -0.706 -1.75 -0.5 c
--1.867 -0.294 -1.926 -0.073 -1.926 0.162 c
--0.941 0.162 l
--0.941 -0.025 -0.904 -0.162 -0.823 -0.249 c
--0.736 -0.338 -0.603 -0.382 -0.427 -0.382 c
--0.144 -0.382 0 -0.257 0 0 c
-2.866 3.881 m
-2.866 2.911 l
-3.395 2.911 l
-3.395 2.117 l
-2.866 2.117 l
-2.866 0.147 l
-2.866 -0.01 2.884 -0.118 2.925 -0.176 c
-2.973 -0.235 3.057 -0.264 3.175 -0.264 c
-3.281 -0.264 3.366 -0.257 3.424 -0.235 c
-3.424 -1.043 l
-3.248 -1.109 3.057 -1.147 2.851 -1.147 c
-2.175 -1.147 1.83 -0.76 1.822 0.015 c
-1.822 2.117 l
-1.367 2.117 l
-1.367 2.911 l
-1.822 2.911 l
-1.822 3.881 l
-h
-5.85 -1.072 m
-5.82 -1.014 5.791 -0.912 5.762 -0.764 c
-5.574 -1.022 5.325 -1.147 5.012 -1.147 c
-4.677 -1.147 4.398 -1.04 4.174 -0.823 c
-3.958 -0.598 3.85 -0.309 3.85 0.044 c
-3.85 0.456 3.983 0.772 4.247 1 c
-4.512 1.235 4.895 1.353 5.394 1.353 c
-5.718 1.353 l
-5.718 1.675 l
-5.718 1.852 5.681 1.974 5.614 2.043 c
-5.556 2.12 5.468 2.161 5.35 2.161 c
-5.093 2.161 4.968 2.007 4.968 1.706 c
-3.925 1.706 l
-3.925 2.076 4.06 2.381 4.336 2.616 c
-4.608 2.859 4.957 2.984 5.379 2.984 c
-5.82 2.984 6.158 2.866 6.393 2.631 c
-6.636 2.404 6.761 2.08 6.761 1.661 c
-6.761 -0.206 l
-6.761 -0.551 6.809 -0.819 6.908 -1.014 c
-6.908 -1.072 l
-h
-5.247 -0.324 m
-5.354 -0.324 5.446 -0.305 5.527 -0.264 c
-5.614 -0.216 5.677 -0.158 5.718 -0.088 c
-5.718 0.735 l
-5.468 0.735 l
-5.292 0.735 5.148 0.676 5.041 0.559 c
-4.943 0.449 4.895 0.302 4.895 0.118 c
-4.895 -0.176 5.012 -0.324 5.247 -0.324 c
-9.275 0 m
-9.275 0.088 9.231 0.166 9.142 0.235 c
-9.055 0.312 8.866 0.416 8.584 0.544 c
-8.151 0.721 7.852 0.9 7.688 1.087 c
-7.53 1.272 7.453 1.503 7.453 1.779 c
-7.453 2.12 7.573 2.404 7.819 2.631 c
-8.073 2.866 8.411 2.984 8.834 2.984 c
-9.263 2.984 9.612 2.87 9.878 2.646 c
-10.142 2.419 10.275 2.117 10.275 1.735 c
-9.231 1.735 l
-9.231 2.058 9.091 2.22 8.819 2.22 c
-8.708 2.22 8.621 2.183 8.554 2.117 c
-8.485 2.047 8.452 1.948 8.452 1.823 c
-8.452 1.735 8.488 1.654 8.569 1.588 c
-8.646 1.529 8.826 1.434 9.113 1.309 c
-9.543 1.151 9.841 0.974 10.009 0.779 c
-10.186 0.592 10.275 0.342 10.275 0.029 c
-10.275 -0.324 10.142 -0.61 9.878 -0.823 c
-9.612 -1.04 9.263 -1.147 8.834 -1.147 c
-8.54 -1.147 8.279 -1.091 8.055 -0.985 c
-7.827 -0.867 7.65 -0.706 7.526 -0.5 c
-7.408 -0.294 7.349 -0.073 7.349 0.162 c
-8.334 0.162 l
-8.334 -0.025 8.371 -0.162 8.452 -0.249 c
-8.54 -0.338 8.672 -0.382 8.849 -0.382 c
-9.132 -0.382 9.275 -0.257 9.275 0 c
-11.95 2.558 m
-12.174 2.841 12.45 2.984 12.773 2.984 c
-13.134 2.984 13.409 2.855 13.597 2.602 c
-13.791 2.344 13.89 1.962 13.89 1.455 c
-13.89 -1.072 l
-12.847 -1.072 l
-12.847 1.44 l
-12.847 1.675 12.806 1.841 12.729 1.941 c
-12.66 2.047 12.546 2.103 12.391 2.103 c
-12.203 2.103 12.057 2.018 11.95 1.852 c
-11.95 -1.072 l
-10.906 -1.072 l
-10.906 4.572 l
-11.95 4.572 l
-h
-f
-Q
-q 1 0 0 1 382.2233 119.7921 cm
-0 0 m
-0.214 0 0.387 0.063 0.515 0.191 c
-0.651 0.327 0.724 0.518 0.736 0.765 c
-1.353 0.765 l
-1.33 0.382 1.195 0.063 0.941 -0.191 c
-0.684 -0.437 0.372 -0.559 0 -0.559 c
--0.492 -0.559 -0.867 -0.407 -1.132 -0.103 c
--1.389 0.21 -1.514 0.676 -1.514 1.294 c
--1.514 1.735 l
--1.514 2.33 -1.389 2.786 -1.132 3.102 c
--0.867 3.414 -0.492 3.572 0 3.572 c
-0.401 3.572 0.721 3.439 0.956 3.175 c
-1.198 2.918 1.33 2.573 1.353 2.132 c
-0.736 2.132 l
-0.713 2.425 0.64 2.646 0.515 2.793 c
-0.397 2.94 0.225 3.013 0 3.013 c
--0.294 3.013 -0.511 2.914 -0.646 2.72 c
--0.786 2.532 -0.86 2.224 -0.867 1.793 c
--0.867 1.279 l
--0.867 0.809 -0.801 0.474 -0.661 0.279 c
--0.514 0.092 -0.294 0 0 0 c
-1.97 1.691 m
-1.97 2.267 2.106 2.723 2.382 3.057 c
-2.664 3.4 3.036 3.572 3.499 3.572 c
-3.958 3.572 4.326 3.403 4.601 3.072 c
-4.884 2.749 5.031 2.301 5.042 1.735 c
-5.042 1.309 l
-5.042 0.738 4.898 0.283 4.616 -0.058 c
-4.341 -0.393 3.973 -0.559 3.514 -0.559 c
-3.051 -0.559 2.679 -0.397 2.396 -0.073 c
-2.12 0.258 1.977 0.698 1.97 1.249 c
-h
-2.617 1.309 m
-2.617 0.904 2.694 0.588 2.852 0.353 c
-3.017 0.118 3.238 0 3.514 0 c
-4.079 0 4.373 0.412 4.395 1.235 c
-4.395 1.691 l
-4.395 2.091 4.31 2.411 4.146 2.646 c
-3.988 2.889 3.77 3.013 3.499 3.013 c
-3.234 3.013 3.017 2.889 2.852 2.646 c
-2.694 2.411 2.617 2.091 2.617 1.691 c
-h
-6.498 3.499 m
-6.512 3.057 l
-6.766 3.4 7.089 3.572 7.483 3.572 c
-8.188 3.572 8.544 3.102 8.555 2.161 c
-8.555 -0.484 l
-7.909 -0.484 l
-7.909 2.132 l
-7.909 2.444 7.853 2.664 7.747 2.793 c
-7.637 2.918 7.483 2.984 7.277 2.984 c
-7.119 2.984 6.972 2.929 6.835 2.822 c
-6.707 2.712 6.604 2.577 6.527 2.411 c
-6.527 -0.484 l
-5.88 -0.484 l
-5.88 3.499 l
-h
-10.378 4.454 m
-10.378 3.499 l
-10.98 3.499 l
-10.98 2.969 l
-10.378 2.969 l
-10.378 0.5 l
-10.378 0.342 10.4 0.225 10.452 0.147 c
-10.51 0.067 10.598 0.029 10.716 0.029 c
-10.804 0.029 10.892 0.044 10.98 0.073 c
-10.98 -0.484 l
-10.834 -0.532 10.679 -0.559 10.525 -0.559 c
-10.267 -0.559 10.073 -0.467 9.937 -0.279 c
-9.797 -0.095 9.731 0.166 9.731 0.5 c
-9.731 2.969 l
-9.129 2.969 l
-9.129 3.499 l
-9.731 3.499 l
-9.731 4.454 l
-h
-13.17 -0.559 m
-12.671 -0.559 12.289 -0.411 12.025 -0.118 c
-11.759 0.177 11.628 0.611 11.628 1.191 c
-11.628 1.661 l
-11.628 2.257 11.753 2.723 12.009 3.057 c
-12.274 3.4 12.634 3.572 13.097 3.572 c
-13.557 3.572 13.898 3.418 14.126 3.117 c
-14.361 2.822 14.483 2.359 14.494 1.735 c
-14.494 1.309 l
-12.274 1.309 l
-12.274 1.22 l
-12.274 0.786 12.351 0.474 12.509 0.279 c
-12.675 0.092 12.906 0 13.2 0 c
-13.395 0 13.567 0.033 13.714 0.103 c
-13.862 0.181 13.997 0.298 14.126 0.456 c
-14.464 0.044 l
-14.178 -0.36 13.748 -0.559 13.17 -0.559 c
-13.097 3.013 m
-12.821 3.013 12.619 2.918 12.495 2.734 c
-12.366 2.547 12.293 2.257 12.274 1.867 c
-13.847 1.867 l
-13.847 1.955 l
-13.825 2.338 13.758 2.606 13.641 2.764 c
-13.523 2.929 13.34 3.013 13.097 3.013 c
-15.89 3.499 m
-15.905 3.057 l
-16.158 3.4 16.482 3.572 16.875 3.572 c
-17.581 3.572 17.937 3.102 17.947 2.161 c
-17.947 -0.484 l
-17.301 -0.484 l
-17.301 2.132 l
-17.301 2.444 17.246 2.664 17.139 2.793 c
-17.029 2.918 16.875 2.984 16.669 2.984 c
-16.511 2.984 16.364 2.929 16.228 2.822 c
-16.1 2.712 15.996 2.577 15.919 2.411 c
-15.919 -0.484 l
-15.273 -0.484 l
-15.273 3.499 l
-h
-19.771 4.454 m
-19.771 3.499 l
-20.374 3.499 l
-20.374 2.969 l
-19.771 2.969 l
-19.771 0.5 l
-19.771 0.342 19.792 0.225 19.844 0.147 c
-19.903 0.067 19.991 0.029 20.108 0.029 c
-20.197 0.029 20.285 0.044 20.374 0.073 c
-20.374 -0.484 l
-20.226 -0.532 20.072 -0.559 19.917 -0.559 c
-19.66 -0.559 19.466 -0.467 19.329 -0.279 c
-19.19 -0.095 19.123 0.166 19.123 0.5 c
-19.123 2.969 l
-18.521 2.969 l
-18.521 3.499 l
-19.123 3.499 l
-19.123 4.454 l
-h
-23.563 -0.484 -0.646 3.983 re
-23.607 4.542 m
-23.607 4.432 23.578 4.341 23.518 4.262 c
-23.46 4.193 23.364 4.16 23.24 4.16 c
-23.121 4.16 23.026 4.193 22.961 4.262 c
-22.901 4.341 22.872 4.432 22.872 4.542 c
-22.872 4.659 22.901 4.752 22.961 4.821 c
-23.026 4.898 23.121 4.939 23.24 4.939 c
-23.364 4.939 23.46 4.898 23.518 4.821 c
-23.578 4.74 23.607 4.649 23.607 4.542 c
-25.195 3.499 m
-25.209 3.057 l
-25.463 3.4 25.787 3.572 26.179 3.572 c
-26.884 3.572 27.241 3.102 27.252 2.161 c
-27.252 -0.484 l
-26.606 -0.484 l
-26.606 2.132 l
-26.606 2.444 26.55 2.664 26.444 2.793 c
-26.334 2.918 26.179 2.984 25.974 2.984 c
-25.816 2.984 25.669 2.929 25.533 2.822 c
-25.404 2.712 25.301 2.577 25.224 2.411 c
-25.224 -0.484 l
-24.577 -0.484 l
-24.577 3.499 l
-h
-29.075 4.454 m
-29.075 3.499 l
-29.678 3.499 l
-29.678 2.969 l
-29.075 2.969 l
-29.075 0.5 l
-29.075 0.342 29.097 0.225 29.149 0.147 c
-29.207 0.067 29.296 0.029 29.413 0.029 c
-29.502 0.029 29.59 0.044 29.678 0.073 c
-29.678 -0.484 l
-29.531 -0.532 29.376 -0.559 29.222 -0.559 c
-28.964 -0.559 28.77 -0.467 28.634 -0.279 c
-28.494 -0.095 28.428 0.166 28.428 0.5 c
-28.428 2.969 l
-27.825 2.969 l
-27.825 3.499 l
-28.428 3.499 l
-28.428 4.454 l
-h
-30.236 1.691 m
-30.236 2.267 30.373 2.723 30.647 3.057 c
-30.931 3.4 31.302 3.572 31.765 3.572 c
-32.224 3.572 32.592 3.403 32.868 3.072 c
-33.151 2.749 33.297 2.301 33.309 1.735 c
-33.309 1.309 l
-33.309 0.738 33.165 0.283 32.883 -0.058 c
-32.607 -0.393 32.239 -0.559 31.78 -0.559 c
-31.316 -0.559 30.946 -0.397 30.662 -0.073 c
-30.387 0.258 30.244 0.698 30.236 1.249 c
-h
-30.883 1.309 m
-30.883 0.904 30.961 0.588 31.118 0.353 c
-31.283 0.118 31.504 0 31.78 0 c
-32.345 0 32.64 0.412 32.662 1.235 c
-32.662 1.691 l
-32.662 2.091 32.577 2.411 32.412 2.646 c
-32.254 2.889 32.037 3.013 31.765 3.013 c
-31.501 3.013 31.283 2.889 31.118 2.646 c
-30.961 2.411 30.883 2.091 30.883 1.691 c
-h
-f
-Q
-q 1 0 0 1 420.882 121.0564 cm
-0 0 m
-0.353 2.234 l
-1.353 2.234 l
-0.53 -1.749 l
--0.338 -1.749 l
--0.897 0.559 l
--1.455 -1.749 l
--2.323 -1.749 l
--3.146 2.234 l
--2.146 2.234 l
--1.793 0 l
--1.264 2.234 l
--0.529 2.234 l
-h
-1.75 0.368 m
-1.75 0.974 1.889 1.448 2.176 1.793 c
-2.458 2.135 2.851 2.308 3.352 2.308 c
-3.859 2.308 4.256 2.135 4.542 1.793 c
-4.825 1.448 4.968 0.974 4.968 0.368 c
-4.968 0.103 l
-4.968 -0.496 4.825 -0.966 4.542 -1.309 c
-4.256 -1.654 3.859 -1.823 3.352 -1.823 c
-2.841 -1.823 2.444 -1.654 2.161 -1.309 c
-1.885 -0.966 1.75 -0.492 1.75 0.118 c
-h
-2.793 0.103 m
-2.793 -0.603 2.977 -0.956 3.352 -0.956 c
-3.705 -0.956 3.896 -0.661 3.925 -0.073 c
-3.925 0.368 l
-3.925 0.727 3.873 0.999 3.778 1.176 c
-3.678 1.352 3.535 1.44 3.352 1.44 c
-3.175 1.44 3.036 1.352 2.94 1.176 c
-2.841 0.999 2.793 0.727 2.793 0.368 c
-h
-7.57 1.22 m
-7.232 1.249 l
-6.945 1.249 6.754 1.124 6.659 0.881 c
-6.659 -1.749 l
-5.615 -1.749 l
-5.615 2.234 l
-6.585 2.234 l
-6.614 1.793 l
-6.78 2.135 7.011 2.308 7.306 2.308 c
-7.423 2.308 7.515 2.286 7.585 2.249 c
-h
-9.437 -0.22 m
-9.157 -0.53 l
-9.157 -1.749 l
-8.114 -1.749 l
-8.114 3.896 l
-9.157 3.896 l
-9.157 0.852 l
-9.276 1.043 l
-9.995 2.234 l
-11.245 2.234 l
-10.084 0.588 l
-11.348 -1.749 l
-10.157 -1.749 l
-h
-12.803 -1.749 -1.044 3.983 re
-11.715 3.263 m
-11.715 3.418 11.763 3.547 11.863 3.645 c
-11.969 3.752 12.104 3.807 12.274 3.807 c
-12.45 3.807 12.586 3.752 12.685 3.645 c
-12.792 3.547 12.847 3.418 12.847 3.263 c
-12.847 3.094 12.792 2.959 12.685 2.851 c
-12.586 2.753 12.45 2.705 12.274 2.705 c
-12.104 2.705 11.969 2.753 11.863 2.851 c
-11.763 2.959 11.715 3.094 11.715 3.263 c
-14.566 2.234 m
-14.596 1.837 l
-14.832 2.15 15.133 2.308 15.507 2.308 c
-16.191 2.308 16.544 1.826 16.566 0.867 c
-16.566 -1.749 l
-15.522 -1.749 l
-15.522 0.794 l
-15.522 1.018 15.486 1.18 15.42 1.278 c
-15.35 1.374 15.232 1.426 15.067 1.426 c
-14.88 1.426 14.732 1.33 14.626 1.147 c
-14.626 -1.749 l
-13.582 -1.749 l
-13.582 2.234 l
-h
-17.184 0.368 m
-17.184 1.014 17.301 1.5 17.536 1.822 c
-17.771 2.146 18.102 2.308 18.535 2.308 c
-18.888 2.308 19.16 2.165 19.359 1.881 c
-19.403 2.234 l
-20.343 2.234 l
-20.343 -1.749 l
-20.343 -2.256 20.2 -2.646 19.917 -2.911 c
-19.63 -3.183 19.227 -3.322 18.697 -3.322 c
-18.47 -3.322 18.234 -3.278 17.992 -3.19 c
-17.756 -3.102 17.581 -2.988 17.463 -2.851 c
-17.816 -2.132 l
-17.911 -2.238 18.04 -2.323 18.198 -2.381 c
-18.352 -2.448 18.499 -2.485 18.639 -2.485 c
-18.874 -2.485 19.039 -2.425 19.138 -2.308 c
-19.245 -2.198 19.3 -2.021 19.3 -1.779 c
-19.3 -1.426 l
-19.102 -1.691 18.844 -1.823 18.521 -1.823 c
-18.098 -1.823 17.771 -1.661 17.536 -1.338 c
-17.309 -1.007 17.191 -0.536 17.184 0.073 c
-h
-18.227 0.103 m
-18.227 -0.272 18.275 -0.54 18.374 -0.706 c
-18.47 -0.875 18.624 -0.956 18.83 -0.956 c
-19.042 -0.956 19.2 -0.879 19.3 -0.721 c
-19.3 1.176 l
-19.19 1.341 19.035 1.426 18.83 1.426 c
-18.624 1.426 18.47 1.341 18.374 1.176 c
-18.275 1.007 18.227 0.738 18.227 0.368 c
-h
-22.695 0.368 m
-22.695 1.014 22.802 1.5 23.019 1.822 c
-23.243 2.146 23.566 2.308 23.989 2.308 c
-24.301 2.308 24.555 2.175 24.754 1.911 c
-24.754 3.896 l
-25.812 3.896 l
-25.812 -1.749 l
-24.856 -1.749 l
-24.812 -1.338 l
-24.596 -1.661 24.32 -1.823 23.989 -1.823 c
-23.578 -1.823 23.258 -1.668 23.033 -1.353 c
-22.817 -1.029 22.703 -0.559 22.695 0.058 c
-h
-23.739 0.103 m
-23.739 -0.291 23.776 -0.566 23.857 -0.721 c
-23.945 -0.879 24.092 -0.956 24.297 -0.956 c
-24.503 -0.956 24.654 -0.864 24.754 -0.676 c
-24.754 1.132 l
-24.654 1.326 24.503 1.426 24.297 1.426 c
-24.099 1.426 23.96 1.345 23.871 1.191 c
-23.783 1.043 23.739 0.771 23.739 0.382 c
-h
-27.663 -1.749 -1.043 3.983 re
-26.576 3.263 m
-26.576 3.418 26.624 3.547 26.723 3.645 c
-26.83 3.752 26.965 3.807 27.135 3.807 c
-27.311 3.807 27.447 3.752 27.546 3.645 c
-27.653 3.547 27.708 3.418 27.708 3.263 c
-27.708 3.094 27.653 2.959 27.546 2.851 c
-27.447 2.753 27.311 2.705 27.135 2.705 c
-26.965 2.705 26.83 2.753 26.723 2.851 c
-26.624 2.959 26.576 3.094 26.576 3.263 c
-30.427 1.22 m
-30.089 1.249 l
-29.803 1.249 29.612 1.124 29.516 0.881 c
-29.516 -1.749 l
-28.472 -1.749 l
-28.472 2.234 l
-29.442 2.234 l
-29.471 1.793 l
-29.637 2.135 29.868 2.308 30.163 2.308 c
-30.28 2.308 30.372 2.286 30.442 2.249 c
-h
-32.5 -1.823 m
-31.97 -1.823 31.551 -1.668 31.25 -1.353 c
-30.956 -1.029 30.809 -0.569 30.809 0.029 c
-30.809 0.338 l
-30.809 0.962 30.946 1.448 31.221 1.793 c
-31.493 2.135 31.886 2.308 32.397 2.308 c
-32.897 2.308 33.267 2.146 33.514 1.822 c
-33.768 1.5 33.9 1.022 33.911 0.397 c
-33.911 -0.103 l
-31.838 -0.103 l
-31.856 -0.397 31.919 -0.613 32.029 -0.75 c
-32.147 -0.889 32.327 -0.956 32.573 -0.956 c
-32.915 -0.956 33.205 -0.838 33.44 -0.603 c
-33.852 -1.235 l
-33.724 -1.411 33.536 -1.554 33.294 -1.661 c
-33.047 -1.768 32.783 -1.823 32.5 -1.823 c
-31.853 0.617 m
-32.882 0.617 l
-32.882 0.721 l
-32.882 0.956 32.841 1.132 32.764 1.249 c
-32.694 1.374 32.566 1.44 32.382 1.44 c
-32.205 1.44 32.074 1.371 31.985 1.234 c
-31.904 1.106 31.86 0.9 31.853 0.617 c
-35.939 -0.956 m
-36.233 -0.956 36.384 -0.761 36.395 -0.368 c
-37.365 -0.368 l
-37.365 -0.802 37.233 -1.154 36.968 -1.426 c
-36.704 -1.691 36.365 -1.823 35.954 -1.823 c
-35.443 -1.823 35.05 -1.668 34.778 -1.353 c
-34.514 -1.029 34.374 -0.559 34.366 0.058 c
-34.366 0.382 l
-34.366 1.007 34.499 1.484 34.763 1.808 c
-35.035 2.138 35.432 2.308 35.954 2.308 c
-36.384 2.308 36.726 2.168 36.983 1.897 c
-37.236 1.621 37.365 1.238 37.365 0.75 c
-36.395 0.75 l
-36.395 0.962 36.355 1.132 36.278 1.249 c
-36.207 1.374 36.09 1.44 35.925 1.44 c
-35.748 1.44 35.619 1.374 35.542 1.249 c
-35.461 1.12 35.418 0.871 35.41 0.5 c
-35.41 0.088 l
-35.41 -0.235 35.424 -0.463 35.455 -0.588 c
-35.491 -0.717 35.546 -0.808 35.616 -0.867 c
-35.694 -0.926 35.8 -0.956 35.939 -0.956 c
-39.173 3.204 m
-39.173 2.234 l
-39.702 2.234 l
-39.702 1.44 l
-39.173 1.44 l
-39.173 -0.53 l
-39.173 -0.687 39.191 -0.794 39.232 -0.852 c
-39.28 -0.912 39.364 -0.941 39.482 -0.941 c
-39.588 -0.941 39.673 -0.933 39.731 -0.912 c
-39.731 -1.72 l
-39.555 -1.786 39.364 -1.823 39.158 -1.823 c
-38.482 -1.823 38.137 -1.437 38.129 -0.661 c
-38.129 1.44 l
-37.674 1.44 l
-37.674 2.234 l
-38.129 2.234 l
-38.129 3.204 l
-h
-40.055 0.368 m
-40.055 0.974 40.195 1.448 40.481 1.793 c
-40.764 2.135 41.157 2.308 41.657 2.308 c
-42.164 2.308 42.561 2.135 42.848 1.793 c
-43.131 1.448 43.274 0.974 43.274 0.368 c
-43.274 0.103 l
-43.274 -0.496 43.131 -0.966 42.848 -1.309 c
-42.561 -1.654 42.164 -1.823 41.657 -1.823 c
-41.146 -1.823 40.75 -1.654 40.467 -1.309 c
-40.191 -0.966 40.055 -0.492 40.055 0.118 c
-h
-41.099 0.103 m
-41.099 -0.603 41.282 -0.956 41.657 -0.956 c
-42.01 -0.956 42.202 -0.661 42.231 -0.073 c
-42.231 0.368 l
-42.231 0.727 42.179 0.999 42.083 1.176 c
-41.984 1.352 41.841 1.44 41.657 1.44 c
-41.481 1.44 41.341 1.352 41.246 1.176 c
-41.146 0.999 41.099 0.727 41.099 0.368 c
-h
-45.876 1.22 m
-45.537 1.249 l
-45.251 1.249 45.06 1.124 44.965 0.881 c
-44.965 -1.749 l
-43.921 -1.749 l
-43.921 2.234 l
-44.891 2.234 l
-44.92 1.793 l
-45.086 2.135 45.317 2.308 45.611 2.308 c
-45.729 2.308 45.821 2.286 45.89 2.249 c
-h
-47.772 -0.015 m
-48.301 2.234 l
-49.404 2.234 l
-48.095 -2.352 l
-47.897 -3.017 47.53 -3.352 46.993 -3.352 c
-46.865 -3.352 46.721 -3.329 46.567 -3.293 c
-46.567 -2.469 l
-46.684 -2.485 l
-46.85 -2.485 46.971 -2.448 47.052 -2.381 c
-47.129 -2.323 47.191 -2.213 47.243 -2.058 c
-47.316 -1.793 l
-46.17 2.234 l
-47.287 2.234 l
-h
-f
-Q
-q 1 0 0 1 470.8588 118.2342 cm
-0 0 m
--0.397 0.264 l
--0.162 0.588 -0.04 0.922 -0.029 1.264 c
--0.029 1.881 l
-0.632 1.881 l
-0.632 1.352 l
-0.632 1.095 0.566 0.849 0.441 0.603 c
-0.324 0.36 0.177 0.158 0 0 c
-5.233 1.073 m
-5.193 1.161 5.167 1.309 5.16 1.514 c
-4.925 1.168 4.63 0.999 4.278 0.999 c
-3.913 0.999 3.63 1.095 3.425 1.294 c
-3.227 1.5 3.131 1.786 3.131 2.161 c
-3.131 2.562 3.267 2.881 3.543 3.116 c
-3.815 3.358 4.189 3.484 4.659 3.484 c
-5.145 3.484 l
-5.145 3.91 l
-5.145 4.145 5.089 4.31 4.983 4.409 c
-4.873 4.516 4.711 4.571 4.498 4.571 c
-4.299 4.571 4.138 4.513 4.013 4.395 c
-3.896 4.278 3.836 4.131 3.836 3.954 c
-3.19 3.954 l
-3.19 4.149 3.248 4.34 3.366 4.527 c
-3.491 4.711 3.653 4.858 3.851 4.968 c
-4.057 5.075 4.285 5.13 4.542 5.13 c
-4.943 5.13 5.247 5.027 5.453 4.821 c
-5.667 4.615 5.781 4.322 5.791 3.939 c
-5.791 1.926 l
-5.791 1.621 5.828 1.356 5.909 1.132 c
-5.909 1.073 l
-h
-4.366 1.587 m
-4.532 1.587 4.682 1.631 4.821 1.72 c
-4.968 1.808 5.075 1.918 5.145 2.057 c
-5.145 2.998 l
-4.777 2.998 l
-4.461 2.998 4.219 2.929 4.042 2.793 c
-3.866 2.664 3.778 2.477 3.778 2.234 c
-3.778 2.007 3.822 1.841 3.91 1.735 c
-3.998 1.635 4.149 1.587 4.366 1.587 c
-7.408 5.056 m
-7.423 4.615 l
-7.676 4.958 8 5.13 8.393 5.13 c
-9.099 5.13 9.455 4.659 9.467 3.719 c
-9.467 1.073 l
-8.819 1.073 l
-8.819 3.69 l
-8.819 4.002 8.765 4.222 8.658 4.351 c
-8.548 4.476 8.393 4.542 8.187 4.542 c
-8.029 4.542 7.882 4.487 7.747 4.38 c
-7.618 4.27 7.515 4.135 7.437 3.969 c
-7.437 1.073 l
-6.791 1.073 l
-6.791 5.056 l
-h
-10.304 3.248 m
-10.304 3.855 10.414 4.322 10.643 4.644 c
-10.878 4.968 11.204 5.13 11.627 5.13 c
-12.009 5.13 12.307 4.972 12.524 4.659 c
-12.524 6.718 l
-13.17 6.718 l
-13.17 1.073 l
-12.582 1.073 l
-12.538 1.5 l
-12.332 1.165 12.027 0.999 11.627 0.999 c
-11.215 0.999 10.892 1.154 10.657 1.469 c
-10.422 1.793 10.304 2.249 10.304 2.837 c
-h
-10.951 2.866 m
-10.951 2.425 11.013 2.095 11.142 1.881 c
-11.278 1.675 11.499 1.573 11.803 1.573 c
-12.127 1.573 12.366 1.735 12.524 2.057 c
-12.524 4.072 l
-12.355 4.384 12.116 4.542 11.803 4.542 c
-11.499 4.542 11.278 4.439 11.142 4.233 c
-11.013 4.027 10.951 3.704 10.951 3.263 c
-h
-17.271 1.558 m
-17.485 1.558 17.658 1.621 17.786 1.749 c
-17.922 1.885 17.995 2.076 18.007 2.323 c
-18.624 2.323 l
-18.602 1.94 18.466 1.621 18.212 1.367 c
-17.955 1.12 17.643 0.999 17.271 0.999 c
-16.779 0.999 16.405 1.151 16.139 1.455 c
-15.882 1.768 15.757 2.234 15.757 2.851 c
-15.757 3.293 l
-15.757 3.888 15.882 4.343 16.139 4.659 c
-16.405 4.972 16.779 5.13 17.271 5.13 c
-17.672 5.13 17.992 4.997 18.227 4.733 c
-18.47 4.476 18.602 4.131 18.624 3.69 c
-18.007 3.69 l
-17.984 3.983 17.911 4.204 17.786 4.351 c
-17.668 4.498 17.496 4.571 17.271 4.571 c
-16.978 4.571 16.761 4.472 16.625 4.278 c
-16.486 4.09 16.411 3.782 16.405 3.351 c
-16.405 2.837 l
-16.405 2.367 16.47 2.032 16.61 1.837 c
-16.757 1.65 16.978 1.558 17.271 1.558 c
-20.079 1.073 -0.647 5.644 re
-22.519 0.999 m
-22.019 0.999 21.637 1.147 21.373 1.44 c
-21.108 1.735 20.976 2.168 20.976 2.749 c
-20.976 3.219 l
-20.976 3.815 21.101 4.281 21.358 4.615 c
-21.623 4.958 21.982 5.13 22.445 5.13 c
-22.905 5.13 23.247 4.976 23.474 4.675 c
-23.709 4.38 23.831 3.917 23.842 3.293 c
-23.842 2.866 l
-21.623 2.866 l
-21.623 2.778 l
-21.623 2.344 21.7 2.032 21.858 1.837 c
-22.023 1.65 22.254 1.558 22.549 1.558 c
-22.743 1.558 22.915 1.591 23.063 1.661 c
-23.21 1.738 23.346 1.856 23.474 2.014 c
-23.813 1.602 l
-23.526 1.198 23.096 0.999 22.519 0.999 c
-22.445 4.571 m
-22.17 4.571 21.968 4.476 21.843 4.292 c
-21.714 4.104 21.641 3.815 21.623 3.425 c
-23.195 3.425 l
-23.195 3.513 l
-23.173 3.896 23.107 4.164 22.99 4.322 c
-22.872 4.487 22.688 4.571 22.445 4.571 c
-26.664 1.073 m
-26.624 1.161 26.598 1.309 26.591 1.514 c
-26.356 1.168 26.061 0.999 25.709 0.999 c
-25.345 0.999 25.062 1.095 24.856 1.294 c
-24.658 1.5 24.562 1.786 24.562 2.161 c
-24.562 2.562 24.698 2.881 24.974 3.116 c
-25.246 3.358 25.621 3.484 26.091 3.484 c
-26.576 3.484 l
-26.576 3.91 l
-26.576 4.145 26.521 4.31 26.414 4.409 c
-26.304 4.516 26.142 4.571 25.93 4.571 c
-25.731 4.571 25.569 4.513 25.444 4.395 c
-25.327 4.278 25.267 4.131 25.267 3.954 c
-24.621 3.954 l
-24.621 4.149 24.68 4.34 24.797 4.527 c
-24.922 4.711 25.084 4.858 25.282 4.968 c
-25.488 5.075 25.716 5.13 25.973 5.13 c
-26.374 5.13 26.678 5.027 26.884 4.821 c
-27.098 4.615 27.212 4.322 27.223 3.939 c
-27.223 1.926 l
-27.223 1.621 27.26 1.356 27.341 1.132 c
-27.341 1.073 l
-h
-25.797 1.587 m
-25.963 1.587 26.113 1.631 26.252 1.72 c
-26.4 1.808 26.506 1.918 26.576 2.057 c
-26.576 2.998 l
-26.208 2.998 l
-25.893 2.998 25.65 2.929 25.473 2.793 c
-25.297 2.664 25.209 2.477 25.209 2.234 c
-25.209 2.007 25.253 1.841 25.342 1.735 c
-25.429 1.635 25.581 1.587 25.797 1.587 c
-29.868 4.439 m
-29.78 4.457 29.681 4.469 29.575 4.469 c
-29.24 4.469 29.005 4.285 28.869 3.925 c
-28.869 1.073 l
-28.222 1.073 l
-28.222 5.056 l
-28.854 5.056 l
-28.869 4.644 l
-29.045 4.968 29.288 5.13 29.604 5.13 c
-29.71 5.13 29.799 5.108 29.868 5.072 c
-h
-f
-Q
-q 1 0 0 1 504.7546 120.38 cm
-0 0 m
-0 0.088 -0.043 0.166 -0.132 0.235 c
--0.22 0.312 -0.407 0.416 -0.691 0.544 c
--1.124 0.721 -1.421 0.9 -1.587 1.087 c
--1.745 1.272 -1.822 1.503 -1.822 1.779 c
--1.822 2.12 -1.701 2.404 -1.454 2.631 c
--1.201 2.866 -0.864 2.984 -0.44 2.984 c
--0.01 2.984 0.339 2.87 0.603 2.646 c
-0.867 2.419 1 2.117 1 1.735 c
--0.043 1.735 l
--0.043 2.058 -0.183 2.22 -0.455 2.22 c
--0.565 2.22 -0.654 2.183 -0.72 2.117 c
--0.789 2.047 -0.823 1.948 -0.823 1.823 c
--0.823 1.735 -0.786 1.654 -0.706 1.588 c
--0.628 1.529 -0.448 1.434 -0.162 1.309 c
-0.269 1.151 0.566 0.974 0.736 0.779 c
-0.912 0.592 1 0.342 1 0.029 c
-1 -0.324 0.867 -0.61 0.603 -0.823 c
-0.339 -1.04 -0.01 -1.147 -0.44 -1.147 c
--0.735 -1.147 -0.995 -1.091 -1.219 -0.985 c
--1.448 -0.867 -1.624 -0.706 -1.749 -0.5 c
--1.866 -0.294 -1.925 -0.073 -1.925 0.162 c
--0.941 0.162 l
--0.941 -0.025 -0.904 -0.162 -0.823 -0.249 c
--0.735 -0.338 -0.602 -0.382 -0.426 -0.382 c
--0.143 -0.382 0 -0.257 0 0 c
-2.866 3.881 m
-2.866 2.911 l
-3.396 2.911 l
-3.396 2.117 l
-2.866 2.117 l
-2.866 0.147 l
-2.866 -0.01 2.885 -0.118 2.926 -0.176 c
-2.974 -0.235 3.057 -0.264 3.175 -0.264 c
-3.282 -0.264 3.366 -0.257 3.425 -0.235 c
-3.425 -1.043 l
-3.249 -1.109 3.057 -1.147 2.852 -1.147 c
-2.176 -1.147 1.831 -0.76 1.823 0.015 c
-1.823 2.117 l
-1.368 2.117 l
-1.368 2.911 l
-1.823 2.911 l
-1.823 3.881 l
-h
-5.85 -1.072 m
-5.821 -1.014 5.792 -0.912 5.762 -0.764 c
-5.575 -1.022 5.326 -1.147 5.012 -1.147 c
-4.678 -1.147 4.399 -1.04 4.175 -0.823 c
-3.958 -0.598 3.851 -0.309 3.851 0.044 c
-3.851 0.456 3.984 0.772 4.248 1 c
-4.513 1.235 4.896 1.353 5.395 1.353 c
-5.718 1.353 l
-5.718 1.675 l
-5.718 1.852 5.681 1.974 5.615 2.043 c
-5.557 2.12 5.469 2.161 5.351 2.161 c
-5.093 2.161 4.969 2.007 4.969 1.706 c
-3.925 1.706 l
-3.925 2.076 4.061 2.381 4.337 2.616 c
-4.609 2.859 4.958 2.984 5.38 2.984 c
-5.821 2.984 6.159 2.866 6.394 2.631 c
-6.637 2.404 6.762 2.08 6.762 1.661 c
-6.762 -0.206 l
-6.762 -0.551 6.81 -0.819 6.909 -1.014 c
-6.909 -1.072 l
-h
-5.247 -0.324 m
-5.355 -0.324 5.446 -0.305 5.527 -0.264 c
-5.615 -0.216 5.678 -0.158 5.718 -0.088 c
-5.718 0.735 l
-5.469 0.735 l
-5.292 0.735 5.149 0.676 5.042 0.559 c
-4.943 0.449 4.896 0.302 4.896 0.118 c
-4.896 -0.176 5.012 -0.324 5.247 -0.324 c
-9.276 0 m
-9.276 0.088 9.231 0.166 9.143 0.235 c
-9.055 0.312 8.867 0.416 8.584 0.544 c
-8.151 0.721 7.853 0.9 7.688 1.087 c
-7.53 1.272 7.453 1.503 7.453 1.779 c
-7.453 2.12 7.574 2.404 7.82 2.631 c
-8.073 2.866 8.412 2.984 8.834 2.984 c
-9.264 2.984 9.613 2.87 9.878 2.646 c
-10.143 2.419 10.275 2.117 10.275 1.735 c
-9.231 1.735 l
-9.231 2.058 9.091 2.22 8.819 2.22 c
-8.709 2.22 8.621 2.183 8.555 2.117 c
-8.486 2.047 8.453 1.948 8.453 1.823 c
-8.453 1.735 8.489 1.654 8.57 1.588 c
-8.647 1.529 8.827 1.434 9.114 1.309 c
-9.544 1.151 9.841 0.974 10.01 0.779 c
-10.186 0.592 10.275 0.342 10.275 0.029 c
-10.275 -0.324 10.143 -0.61 9.878 -0.823 c
-9.613 -1.04 9.264 -1.147 8.834 -1.147 c
-8.54 -1.147 8.279 -1.091 8.056 -0.985 c
-7.828 -0.867 7.651 -0.706 7.526 -0.5 c
-7.408 -0.294 7.35 -0.073 7.35 0.162 c
-8.335 0.162 l
-8.335 -0.025 8.372 -0.162 8.453 -0.249 c
-8.54 -0.338 8.673 -0.382 8.85 -0.382 c
-9.132 -0.382 9.276 -0.257 9.276 0 c
-11.951 2.558 m
-12.175 2.841 12.451 2.984 12.773 2.984 c
-13.134 2.984 13.409 2.855 13.597 2.602 c
-13.792 2.344 13.891 1.962 13.891 1.455 c
-13.891 -1.072 l
-12.848 -1.072 l
-12.848 1.44 l
-12.848 1.675 12.807 1.841 12.73 1.941 c
-12.66 2.047 12.546 2.103 12.391 2.103 c
-12.204 2.103 12.057 2.018 11.951 1.852 c
-11.951 -1.072 l
-10.907 -1.072 l
-10.907 4.572 l
-11.951 4.572 l
-h
-f
-Q
-q 1 0 0 1 519.5421 119.6604 cm
-0 0 m
-0 0.118 0.033 0.213 0.103 0.294 c
-0.169 0.371 0.272 0.411 0.412 0.411 c
-0.559 0.411 0.665 0.371 0.735 0.294 c
-0.812 0.213 0.852 0.118 0.852 0 c
-0.852 -0.111 0.812 -0.202 0.735 -0.279 c
-0.665 -0.357 0.559 -0.397 0.412 -0.397 c
-0.272 -0.397 0.169 -0.357 0.103 -0.279 c
-0.033 -0.202 0 -0.111 0 0 c
-f
-Q
-0.113 0.082 0.09 0 k
-287.665 113.704 234.667 -12.898 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 292.8568 106.8644 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.646 -0.243 -0.775 -0.367 -0.881 c
--0.496 -0.992 -0.658 -1.08 -0.852 -1.147 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.161 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.926 c
--3.127 -0.819 -3.23 -0.691 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.214 -3.484 -0.015 c
--2.66 0.133 l
--2.642 0.033 -2.616 -0.058 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.368 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.684 -1.992 0.69 -1.999 0.69 c
--2.167 0.727 -2.329 0.771 -2.484 0.823 c
--2.642 0.882 -2.786 0.96 -2.91 1.058 c
--3.039 1.154 -3.142 1.278 -3.219 1.426 c
--3.289 1.573 -3.322 1.756 -3.322 1.984 c
--3.322 2.179 -3.289 2.344 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.837 c
--2.8 2.932 -2.645 3.002 -2.469 3.042 c
--2.293 3.09 -2.102 3.119 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.119 -1.128 3.09 -0.97 3.042 c
--0.804 2.992 -0.669 2.918 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.202 2.344 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.253 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.353 c
--1.294 1.312 -1.117 1.264 -0.941 1.205 c
--0.756 1.147 -0.595 1.066 -0.455 0.97 c
--0.32 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.454 c
--2.26 2.425 -2.319 2.385 -2.366 2.337 c
--2.406 2.296 -2.436 2.249 -2.454 2.19 c
--2.477 2.132 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.779 c
--2.41 1.72 -2.373 1.668 -2.322 1.631 c
--2.263 1.591 -2.201 1.558 -2.131 1.529 c
--2.065 1.5 -1.984 1.47 -1.896 1.44 c
-h
--0.837 -0.015 m
--0.837 0.092 -0.86 0.177 -0.897 0.235 c
--0.926 0.301 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.53 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.529 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.015 c
-6.402 -2.66 m
-6.184 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.396 c
-5.284 -2.315 5.185 -2.219 5.108 -2.102 c
-5.039 -1.984 4.991 -1.856 4.961 -1.72 c
-5.858 -1.617 l
-5.895 -1.753 5.964 -1.86 6.064 -1.94 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.057 6.681 -2.028 c
-6.758 -1.999 6.828 -1.944 6.887 -1.866 c
-6.945 -1.797 6.99 -1.705 7.019 -1.587 c
-7.056 -1.469 7.078 -1.323 7.078 -1.147 c
-7.078 -0.956 l
-7.078 -0.889 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.073 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.215 -0.897 5.108 -0.75 c
-5.009 -0.595 4.935 -0.411 4.888 -0.206 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.771 4.836 1.018 4.888 1.235 c
-4.946 1.448 5.027 1.631 5.137 1.779 c
-5.244 1.933 5.376 2.051 5.534 2.132 c
-5.689 2.219 5.876 2.263 6.093 2.263 c
-6.188 2.263 6.288 2.253 6.387 2.234 c
-6.483 2.213 6.571 2.179 6.652 2.132 c
-6.739 2.08 6.817 2.018 6.887 1.941 c
-6.964 1.86 7.026 1.768 7.078 1.661 c
-7.092 1.661 l
-7.092 1.808 l
-7.1 1.866 7.107 1.918 7.107 1.97 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.151 2.219 c
-8.004 2.219 l
-7.993 2.138 7.982 2.028 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.161 l
-7.975 -1.415 7.938 -1.635 7.871 -1.822 c
-7.802 -2.007 7.699 -2.161 7.563 -2.278 c
-7.423 -2.404 7.258 -2.499 7.063 -2.558 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.53 m
-7.092 0.742 7.067 0.919 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.5 6.729 1.558 6.652 1.588 c
-6.571 1.625 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.621 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.367 c
-5.88 1.278 5.835 1.161 5.799 1.014 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.338 c
-6.049 -0.515 6.211 -0.603 6.417 -0.603 c
-6.483 -0.603 6.556 -0.588 6.637 -0.559 c
-6.725 -0.522 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.176 7.019 -0.029 c
-7.067 0.118 7.092 0.301 7.092 0.53 c
-11.036 -0.646 m
-12.168 -0.646 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.646 l
-10.124 -0.646 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.219 l
-11.036 2.219 l
-h
-10.124 3.513 0.912 -0.675 re
-10.124 2.837 m
-13.597 1.602 m
-13.053 1.602 l
-13.053 2.219 l
-13.641 2.219 l
-13.92 3.117 l
-14.494 3.117 l
-14.494 2.219 l
-15.728 2.219 l
-15.728 1.602 l
-14.494 1.602 l
-14.494 -0.103 l
-14.494 -0.324 l
-14.501 -0.393 14.523 -0.455 14.552 -0.515 c
-14.589 -0.566 14.645 -0.61 14.714 -0.646 c
-14.791 -0.676 14.905 -0.691 15.052 -0.691 c
-15.188 -0.691 15.324 -0.687 15.464 -0.676 c
-15.599 -0.658 15.732 -0.632 15.861 -0.603 c
-15.861 -1.205 l
-15.78 -1.216 15.703 -1.231 15.626 -1.249 c
-15.545 -1.261 15.468 -1.268 15.391 -1.278 c
-15.31 -1.286 15.221 -1.294 15.125 -1.294 c
-15.038 -1.301 14.938 -1.309 14.832 -1.309 c
-14.645 -1.309 14.483 -1.294 14.346 -1.264 c
-14.218 -1.228 14.104 -1.183 14.009 -1.132 c
-13.92 -1.084 13.847 -1.025 13.788 -0.956 c
-13.729 -0.879 13.685 -0.802 13.656 -0.721 c
-13.627 -0.632 13.604 -0.544 13.597 -0.455 c
-13.586 -0.36 13.582 -0.264 13.582 -0.176 c
-h
-24.22 -0.25 m
-24.22 -0.419 24.18 -0.569 24.103 -0.706 c
-24.033 -0.834 23.931 -0.948 23.794 -1.043 c
-23.666 -1.132 23.504 -1.201 23.31 -1.249 c
-23.121 -1.297 22.905 -1.323 22.662 -1.323 c
-22.435 -1.323 22.236 -1.309 22.06 -1.278 c
-21.883 -1.249 21.725 -1.201 21.59 -1.132 c
-21.45 -1.055 21.34 -0.956 21.251 -0.838 c
-21.163 -0.721 21.093 -0.573 21.045 -0.397 c
-21.854 -0.279 l
-21.872 -0.378 21.902 -0.455 21.942 -0.515 c
-21.99 -0.573 22.049 -0.617 22.119 -0.646 c
-22.185 -0.676 22.265 -0.702 22.354 -0.721 c
-22.442 -0.731 22.545 -0.735 22.662 -0.735 c
-22.758 -0.735 22.853 -0.731 22.942 -0.721 c
-23.03 -0.702 23.107 -0.676 23.177 -0.646 c
-23.243 -0.617 23.295 -0.58 23.324 -0.529 c
-23.36 -0.482 23.383 -0.419 23.383 -0.338 c
-23.383 -0.243 23.353 -0.169 23.295 -0.118 c
-23.243 -0.07 23.177 -0.029 23.089 0 c
-23.001 0.037 22.89 0.066 22.766 0.088 c
-22.647 0.118 22.516 0.147 22.369 0.177 c
-22.229 0.214 22.09 0.254 21.942 0.294 c
-21.803 0.341 21.677 0.405 21.56 0.485 c
-21.45 0.563 21.361 0.661 21.296 0.779 c
-21.226 0.897 21.193 1.047 21.193 1.235 c
-21.193 1.389 21.222 1.532 21.28 1.661 c
-21.347 1.797 21.442 1.911 21.56 1.999 c
-21.685 2.087 21.843 2.153 22.03 2.205 c
-22.215 2.253 22.427 2.278 22.662 2.278 c
-22.846 2.278 23.023 2.256 23.192 2.219 c
-23.357 2.19 23.504 2.135 23.632 2.058 c
-23.757 1.988 23.868 1.889 23.956 1.764 c
-24.044 1.646 24.103 1.503 24.133 1.338 c
-23.339 1.264 l
-23.316 1.341 23.287 1.404 23.25 1.455 c
-23.21 1.514 23.162 1.558 23.104 1.588 c
-23.052 1.625 22.99 1.65 22.913 1.661 c
-22.832 1.668 22.751 1.675 22.662 1.675 c
-22.446 1.675 22.284 1.646 22.177 1.588 c
-22.067 1.536 22.016 1.448 22.016 1.323 c
-22.016 1.242 22.034 1.18 22.074 1.132 c
-22.122 1.08 22.185 1.043 22.265 1.014 c
-22.354 0.985 22.45 0.956 22.56 0.926 c
-22.666 0.904 22.788 0.882 22.927 0.852 c
-23.081 0.823 23.239 0.783 23.397 0.735 c
-23.551 0.684 23.692 0.621 23.809 0.544 c
-23.927 0.463 24.022 0.36 24.103 0.235 c
-24.18 0.106 24.22 -0.056 24.22 -0.25 c
-25.783 1.602 m
-25.238 1.602 l
-25.238 2.219 l
-25.826 2.219 l
-26.106 3.117 l
-26.679 3.117 l
-26.679 2.219 l
-27.914 2.219 l
-27.914 1.602 l
-26.679 1.602 l
-26.679 -0.103 l
-26.679 -0.324 l
-26.686 -0.393 26.709 -0.455 26.738 -0.515 c
-26.774 -0.566 26.83 -0.61 26.9 -0.646 c
-26.977 -0.676 27.09 -0.691 27.237 -0.691 c
-27.374 -0.691 27.509 -0.687 27.649 -0.676 c
-27.785 -0.658 27.917 -0.632 28.046 -0.603 c
-28.046 -1.205 l
-27.965 -1.216 27.888 -1.231 27.811 -1.249 c
-27.73 -1.261 27.653 -1.268 27.576 -1.278 c
-27.495 -1.286 27.407 -1.294 27.312 -1.294 c
-27.223 -1.301 27.123 -1.309 27.017 -1.309 c
-26.83 -1.309 26.668 -1.294 26.532 -1.264 c
-26.404 -1.228 26.29 -1.183 26.194 -1.132 c
-26.106 -1.084 26.032 -1.025 25.974 -0.956 c
-25.915 -0.879 25.87 -0.802 25.841 -0.721 c
-25.812 -0.632 25.789 -0.544 25.783 -0.455 c
-25.772 -0.36 25.768 -0.264 25.768 -0.176 c
-h
-30.196 -1.323 m
-30.027 -1.323 29.876 -1.301 29.741 -1.264 c
-29.612 -1.216 29.498 -1.147 29.402 -1.058 c
-29.313 -0.97 29.244 -0.864 29.196 -0.735 c
-29.145 -0.599 29.122 -0.449 29.122 -0.279 c
-29.122 -0.073 29.155 0.096 29.226 0.235 c
-29.292 0.382 29.388 0.492 29.505 0.573 c
-29.63 0.661 29.773 0.724 29.931 0.765 c
-30.096 0.802 30.273 0.827 30.46 0.838 c
-31.181 0.852 l
-31.181 1.029 l
-31.181 1.147 31.17 1.249 31.152 1.338 c
-31.129 1.426 31.096 1.492 31.048 1.544 c
-31.008 1.602 30.96 1.639 30.901 1.661 c
-30.842 1.679 30.776 1.691 30.71 1.691 c
-30.641 1.691 30.578 1.679 30.519 1.661 c
-30.468 1.65 30.42 1.625 30.372 1.588 c
-30.331 1.558 30.298 1.507 30.269 1.44 c
-30.248 1.382 30.233 1.301 30.225 1.205 c
-29.284 1.249 l
-29.313 1.396 29.358 1.532 29.417 1.661 c
-29.483 1.786 29.579 1.897 29.696 1.984 c
-29.814 2.08 29.953 2.153 30.122 2.205 c
-30.298 2.253 30.504 2.278 30.74 2.278 c
-31.181 2.278 31.511 2.168 31.74 1.955 c
-31.975 1.749 32.092 1.44 32.092 1.029 c
-32.092 -0.235 l
-32.092 -0.455 l
-32.099 -0.515 32.114 -0.569 32.136 -0.617 c
-32.154 -0.658 32.184 -0.691 32.224 -0.721 c
-32.261 -0.742 32.313 -0.75 32.371 -0.75 c
-32.438 -0.75 32.507 -0.746 32.577 -0.735 c
-32.577 -1.22 l
-32.519 -1.231 32.463 -1.242 32.415 -1.249 c
-32.375 -1.261 32.334 -1.268 32.297 -1.278 c
-32.257 -1.286 32.213 -1.294 32.166 -1.294 c
-32.114 -1.301 32.055 -1.309 31.989 -1.309 c
-31.761 -1.309 31.596 -1.257 31.489 -1.147 c
-31.379 -1.029 31.316 -0.864 31.298 -0.646 c
-31.283 -0.646 l
-31.214 -0.757 31.144 -0.852 31.077 -0.941 c
-31.008 -1.022 30.931 -1.087 30.842 -1.147 c
-30.755 -1.205 30.655 -1.249 30.549 -1.278 c
-30.449 -1.309 30.331 -1.323 30.196 -1.323 c
-31.181 0.353 m
-30.755 0.338 l
-30.655 0.338 30.564 0.331 30.475 0.324 c
-30.394 0.312 30.328 0.287 30.269 0.25 c
-30.211 0.21 30.159 0.151 30.122 0.073 c
-30.082 0.004 30.063 -0.088 30.063 -0.206 c
-30.063 -0.374 30.096 -0.496 30.167 -0.573 c
-30.233 -0.654 30.331 -0.691 30.46 -0.691 c
-30.567 -0.691 30.666 -0.669 30.755 -0.617 c
-30.85 -0.569 30.931 -0.507 30.99 -0.426 c
-31.056 -0.349 31.107 -0.261 31.137 -0.162 c
-31.166 -0.056 31.181 0.059 31.181 0.177 c
-h
-33.903 1.602 m
-33.36 1.602 l
-33.36 2.219 l
-33.948 2.219 l
-34.227 3.117 l
-34.8 3.117 l
-34.8 2.219 l
-36.035 2.219 l
-36.035 1.602 l
-34.8 1.602 l
-34.8 -0.103 l
-34.8 -0.324 l
-34.807 -0.393 34.83 -0.455 34.859 -0.515 c
-34.896 -0.566 34.951 -0.61 35.021 -0.646 c
-35.098 -0.676 35.212 -0.691 35.359 -0.691 c
-35.495 -0.691 35.631 -0.687 35.771 -0.676 c
-35.906 -0.658 36.039 -0.632 36.168 -0.603 c
-36.168 -1.205 l
-36.087 -1.216 36.01 -1.231 35.932 -1.249 c
-35.852 -1.261 35.774 -1.268 35.697 -1.278 c
-35.616 -1.286 35.528 -1.294 35.432 -1.294 c
-35.345 -1.301 35.245 -1.309 35.138 -1.309 c
-34.951 -1.309 34.789 -1.294 34.653 -1.264 c
-34.525 -1.228 34.41 -1.183 34.315 -1.132 c
-34.227 -1.084 34.154 -1.025 34.094 -0.956 c
-34.036 -0.879 33.992 -0.802 33.963 -0.721 c
-33.933 -0.632 33.911 -0.544 33.903 -0.455 c
-33.893 -0.36 33.889 -0.264 33.889 -0.176 c
-h
-38.248 2.219 m
-38.248 0.264 l
-38.248 0.125 38.254 0 38.277 -0.118 c
-38.295 -0.228 38.328 -0.32 38.379 -0.397 c
-38.427 -0.478 38.486 -0.54 38.556 -0.588 c
-38.622 -0.628 38.707 -0.646 38.806 -0.646 c
-38.894 -0.646 38.975 -0.628 39.056 -0.588 c
-39.144 -0.54 39.218 -0.47 39.276 -0.382 c
-39.335 -0.287 39.379 -0.176 39.409 -0.058 c
-39.445 0.066 39.467 0.206 39.467 0.353 c
-39.467 2.219 l
-40.364 2.219 l
-40.364 -0.485 l
-40.364 -0.721 l
-40.371 -0.802 40.378 -0.879 40.378 -0.956 c
-40.378 -1.147 l
-40.386 -1.198 40.393 -1.234 40.393 -1.264 c
-39.541 -1.264 l
-39.53 -1.234 39.519 -1.198 39.511 -1.147 c
-39.511 -0.956 l
-39.511 -0.889 39.504 -0.819 39.497 -0.75 c
-39.497 -0.573 l
-39.482 -0.573 l
-39.364 -0.838 39.21 -1.029 39.027 -1.147 c
-38.85 -1.264 38.647 -1.323 38.424 -1.323 c
-38.218 -1.323 38.045 -1.286 37.909 -1.22 c
-37.77 -1.154 37.66 -1.058 37.571 -0.941 c
-37.49 -0.823 37.431 -0.687 37.394 -0.529 c
-37.365 -0.364 37.35 -0.187 37.35 0 c
-37.35 2.219 l
-h
-44.527 -0.25 m
-44.527 -0.419 44.487 -0.569 44.409 -0.706 c
-44.34 -0.834 44.237 -0.948 44.101 -1.043 c
-43.972 -1.132 43.811 -1.201 43.616 -1.249 c
-43.428 -1.297 43.212 -1.323 42.969 -1.323 c
-42.742 -1.323 42.543 -1.309 42.366 -1.278 c
-42.19 -1.249 42.032 -1.201 41.896 -1.132 c
-41.757 -1.055 41.647 -0.956 41.558 -0.838 c
-41.47 -0.721 41.4 -0.573 41.352 -0.397 c
-42.161 -0.279 l
-42.179 -0.378 42.208 -0.455 42.249 -0.515 c
-42.297 -0.573 42.356 -0.617 42.425 -0.646 c
-42.491 -0.676 42.572 -0.702 42.661 -0.721 c
-42.749 -0.731 42.852 -0.735 42.969 -0.735 c
-43.065 -0.735 43.16 -0.731 43.249 -0.721 c
-43.337 -0.702 43.414 -0.676 43.484 -0.646 c
-43.55 -0.617 43.601 -0.58 43.631 -0.529 c
-43.667 -0.482 43.69 -0.419 43.69 -0.338 c
-43.69 -0.243 43.66 -0.169 43.601 -0.118 c
-43.55 -0.07 43.484 -0.029 43.395 0 c
-43.307 0.037 43.197 0.066 43.072 0.088 c
-42.954 0.118 42.822 0.147 42.676 0.177 c
-42.536 0.214 42.396 0.254 42.249 0.294 c
-42.109 0.341 41.984 0.405 41.867 0.485 c
-41.757 0.563 41.668 0.661 41.602 0.779 c
-41.533 0.897 41.5 1.047 41.5 1.235 c
-41.5 1.389 41.529 1.532 41.587 1.661 c
-41.654 1.797 41.749 1.911 41.867 1.999 c
-41.992 2.087 42.15 2.153 42.337 2.205 c
-42.521 2.253 42.734 2.278 42.969 2.278 c
-43.153 2.278 43.33 2.256 43.499 2.219 c
-43.663 2.19 43.811 2.135 43.939 2.058 c
-44.064 1.988 44.174 1.889 44.263 1.764 c
-44.351 1.646 44.409 1.503 44.44 1.338 c
-43.646 1.264 l
-43.623 1.341 43.594 1.404 43.557 1.455 c
-43.517 1.514 43.469 1.558 43.41 1.588 c
-43.359 1.625 43.297 1.65 43.219 1.661 c
-43.139 1.668 43.058 1.675 42.969 1.675 c
-42.753 1.675 42.591 1.646 42.484 1.588 c
-42.374 1.536 42.323 1.448 42.323 1.323 c
-42.323 1.242 42.341 1.18 42.381 1.132 c
-42.429 1.08 42.491 1.043 42.572 1.014 c
-42.661 0.985 42.757 0.956 42.867 0.926 c
-42.973 0.904 43.094 0.882 43.234 0.852 c
-43.388 0.823 43.546 0.783 43.704 0.735 c
-43.858 0.684 43.998 0.621 44.116 0.544 c
-44.234 0.463 44.329 0.36 44.409 0.235 c
-44.487 0.106 44.527 -0.056 44.527 -0.25 c
-f
-Q
-q 1 0 0 1 365.7754 92.4156 cm
-0 0 m
--0.029 -0.581 -0.191 -1.022 -0.485 -1.324 c
--0.779 -1.628 -1.198 -1.779 -1.735 -1.779 c
--2.263 -1.779 -2.69 -1.58 -3.013 -1.176 c
--3.329 -0.765 -3.484 -0.206 -3.484 0.5 c
--3.484 1.469 l
--3.484 2.164 -3.322 2.711 -2.999 3.116 c
--2.675 3.516 -2.23 3.719 -1.661 3.719 c
--1.154 3.719 -0.757 3.561 -0.47 3.248 c
--0.187 2.944 -0.029 2.502 0 1.926 c
--0.69 1.926 l
--0.721 2.366 -0.816 2.678 -0.97 2.866 c
--1.118 3.05 -1.349 3.145 -1.661 3.145 c
--2.036 3.145 -2.319 2.998 -2.514 2.705 c
--2.712 2.418 -2.807 2.003 -2.807 1.455 c
--2.807 0.47 l
--2.807 -0.071 -2.716 -0.485 -2.529 -0.779 c
--2.344 -1.066 -2.08 -1.206 -1.735 -1.206 c
--1.382 -1.206 -1.128 -1.118 -0.97 -0.941 c
--0.816 -0.765 -0.721 -0.452 -0.69 0 c
-h
-1.514 -1.706 -0.646 5.644 re
-3.954 -1.779 m
-3.454 -1.779 3.072 -1.632 2.807 -1.338 c
-2.543 -1.044 2.41 -0.611 2.41 -0.03 c
-2.41 0.44 l
-2.41 1.036 2.535 1.502 2.793 1.837 c
-3.057 2.179 3.418 2.352 3.881 2.352 c
-4.34 2.352 4.682 2.198 4.91 1.896 c
-5.145 1.602 5.266 1.139 5.277 0.515 c
-5.277 0.087 l
-3.057 0.087 l
-3.057 0 l
-3.057 -0.434 3.135 -0.746 3.293 -0.941 c
-3.458 -1.129 3.69 -1.22 3.983 -1.22 c
-4.178 -1.22 4.351 -1.187 4.498 -1.118 c
-4.645 -1.04 4.781 -0.923 4.91 -0.765 c
-5.247 -1.176 l
-4.961 -1.58 4.531 -1.779 3.954 -1.779 c
-3.881 1.793 m
-3.605 1.793 3.403 1.697 3.278 1.514 c
-3.15 1.326 3.076 1.036 3.057 0.646 c
-4.63 0.646 l
-4.63 0.735 l
-4.608 1.117 4.542 1.385 4.424 1.543 c
-4.307 1.708 4.123 1.793 3.881 1.793 c
-8.099 -1.706 m
-8.058 -1.617 8.033 -1.47 8.025 -1.264 c
-7.79 -1.61 7.497 -1.779 7.144 -1.779 c
-6.78 -1.779 6.497 -1.683 6.292 -1.484 c
-6.093 -1.279 5.997 -0.992 5.997 -0.618 c
-5.997 -0.217 6.134 0.103 6.408 0.338 c
-6.681 0.58 7.056 0.706 7.526 0.706 c
-8.011 0.706 l
-8.011 1.132 l
-8.011 1.367 7.956 1.532 7.85 1.631 c
-7.739 1.738 7.578 1.793 7.364 1.793 c
-7.166 1.793 7.004 1.734 6.879 1.616 c
-6.762 1.499 6.703 1.352 6.703 1.176 c
-6.056 1.176 l
-6.056 1.371 6.115 1.562 6.232 1.749 c
-6.358 1.932 6.519 2.08 6.718 2.19 c
-6.923 2.296 7.152 2.352 7.408 2.352 c
-7.809 2.352 8.114 2.248 8.32 2.043 c
-8.533 1.837 8.646 1.543 8.658 1.161 c
-8.658 -0.853 l
-8.658 -1.158 8.694 -1.422 8.775 -1.646 c
-8.775 -1.706 l
-h
-7.232 -1.191 m
-7.397 -1.191 7.548 -1.147 7.688 -1.058 c
-7.835 -0.971 7.941 -0.86 8.011 -0.721 c
-8.011 0.22 l
-7.644 0.22 l
-7.327 0.22 7.085 0.151 6.909 0.014 c
-6.732 -0.114 6.644 -0.302 6.644 -0.544 c
-6.644 -0.772 6.688 -0.937 6.776 -1.044 c
-6.865 -1.143 7.015 -1.191 7.232 -1.191 c
-11.304 1.66 m
-11.216 1.679 11.116 1.691 11.009 1.691 c
-10.676 1.691 10.44 1.506 10.304 1.146 c
-10.304 -1.706 l
-9.658 -1.706 l
-9.658 2.278 l
-10.29 2.278 l
-10.304 1.866 l
-10.481 2.19 10.723 2.352 11.039 2.352 c
-11.146 2.352 11.233 2.329 11.304 2.293 c
-h
-f
-Q
-q 1 0 0 1 381.1066 91.7834 cm
-0 0 m
-0 0.088 -0.044 0.166 -0.133 0.235 c
--0.221 0.312 -0.408 0.415 -0.691 0.544 c
--1.124 0.72 -1.422 0.9 -1.588 1.087 c
--1.746 1.271 -1.823 1.502 -1.823 1.778 c
--1.823 2.12 -1.702 2.403 -1.455 2.631 c
--1.201 2.866 -0.864 2.984 -0.441 2.984 c
--0.011 2.984 0.338 2.87 0.603 2.645 c
-0.867 2.418 0.999 2.117 0.999 1.735 c
--0.044 1.735 l
--0.044 2.057 -0.183 2.219 -0.456 2.219 c
--0.566 2.219 -0.654 2.183 -0.721 2.117 c
--0.79 2.047 -0.823 1.947 -0.823 1.822 c
--0.823 1.735 -0.786 1.654 -0.706 1.587 c
--0.628 1.529 -0.449 1.433 -0.162 1.308 c
-0.268 1.15 0.565 0.974 0.735 0.779 c
-0.912 0.592 0.999 0.341 0.999 0.029 c
-0.999 -0.324 0.867 -0.611 0.603 -0.823 c
-0.338 -1.04 -0.011 -1.147 -0.441 -1.147 c
--0.735 -1.147 -0.996 -1.091 -1.22 -0.985 c
--1.448 -0.867 -1.625 -0.706 -1.749 -0.5 c
--1.867 -0.294 -1.926 -0.073 -1.926 0.162 c
--0.941 0.162 l
--0.941 -0.026 -0.904 -0.162 -0.823 -0.25 c
--0.735 -0.339 -0.603 -0.382 -0.426 -0.382 c
--0.143 -0.382 0 -0.258 0 0 c
-2.866 3.881 m
-2.866 2.911 l
-3.395 2.911 l
-3.395 2.117 l
-2.866 2.117 l
-2.866 0.147 l
-2.866 -0.011 2.884 -0.118 2.925 -0.177 c
-2.973 -0.235 3.057 -0.264 3.175 -0.264 c
-3.281 -0.264 3.366 -0.258 3.425 -0.235 c
-3.425 -1.044 l
-3.248 -1.11 3.057 -1.147 2.851 -1.147 c
-2.175 -1.147 1.83 -0.761 1.822 0.014 c
-1.822 2.117 l
-1.367 2.117 l
-1.367 2.911 l
-1.822 2.911 l
-1.822 3.881 l
-h
-5.85 -1.073 m
-5.82 -1.014 5.791 -0.912 5.762 -0.765 c
-5.575 -1.022 5.325 -1.147 5.012 -1.147 c
-4.678 -1.147 4.399 -1.04 4.174 -0.823 c
-3.958 -0.599 3.851 -0.309 3.851 0.044 c
-3.851 0.455 3.983 0.771 4.247 0.999 c
-4.513 1.234 4.895 1.352 5.394 1.352 c
-5.718 1.352 l
-5.718 1.675 l
-5.718 1.852 5.681 1.973 5.615 2.043 c
-5.556 2.12 5.468 2.161 5.35 2.161 c
-5.093 2.161 4.968 2.007 4.968 1.705 c
-3.925 1.705 l
-3.925 2.076 4.06 2.381 4.336 2.616 c
-4.608 2.859 4.957 2.984 5.38 2.984 c
-5.82 2.984 6.159 2.866 6.394 2.631 c
-6.637 2.403 6.761 2.08 6.761 1.66 c
-6.761 -0.206 l
-6.761 -0.551 6.809 -0.819 6.909 -1.014 c
-6.909 -1.073 l
-h
-5.247 -0.324 m
-5.354 -0.324 5.446 -0.305 5.527 -0.264 c
-5.615 -0.217 5.677 -0.158 5.718 -0.088 c
-5.718 0.735 l
-5.468 0.735 l
-5.292 0.735 5.149 0.676 5.041 0.559 c
-4.943 0.448 4.895 0.301 4.895 0.118 c
-4.895 -0.177 5.012 -0.324 5.247 -0.324 c
-9.275 0 m
-9.275 0.088 9.231 0.166 9.143 0.235 c
-9.055 0.312 8.867 0.415 8.584 0.544 c
-8.151 0.72 7.853 0.9 7.688 1.087 c
-7.53 1.271 7.453 1.502 7.453 1.778 c
-7.453 2.12 7.574 2.403 7.819 2.631 c
-8.073 2.866 8.411 2.984 8.834 2.984 c
-9.264 2.984 9.613 2.87 9.878 2.645 c
-10.142 2.418 10.275 2.117 10.275 1.735 c
-9.231 1.735 l
-9.231 2.057 9.091 2.219 8.819 2.219 c
-8.709 2.219 8.621 2.183 8.555 2.117 c
-8.485 2.047 8.452 1.947 8.452 1.822 c
-8.452 1.735 8.488 1.654 8.569 1.587 c
-8.646 1.529 8.827 1.433 9.113 1.308 c
-9.543 1.15 9.841 0.974 10.01 0.779 c
-10.186 0.592 10.275 0.341 10.275 0.029 c
-10.275 -0.324 10.142 -0.611 9.878 -0.823 c
-9.613 -1.04 9.264 -1.147 8.834 -1.147 c
-8.54 -1.147 8.279 -1.091 8.055 -0.985 c
-7.827 -0.867 7.651 -0.706 7.526 -0.5 c
-7.408 -0.294 7.349 -0.073 7.349 0.162 c
-8.334 0.162 l
-8.334 -0.026 8.371 -0.162 8.452 -0.25 c
-8.54 -0.339 8.673 -0.382 8.849 -0.382 c
-9.132 -0.382 9.275 -0.258 9.275 0 c
-11.95 2.558 m
-12.174 2.84 12.45 2.984 12.773 2.984 c
-13.134 2.984 13.409 2.855 13.597 2.601 c
-13.791 2.344 13.89 1.962 13.89 1.455 c
-13.89 -1.073 l
-12.847 -1.073 l
-12.847 1.44 l
-12.847 1.675 12.806 1.841 12.729 1.94 c
-12.66 2.047 12.546 2.102 12.391 2.102 c
-12.204 2.102 12.057 2.017 11.95 1.852 c
-11.95 -1.073 l
-10.907 -1.073 l
-10.907 4.571 l
-11.95 4.571 l
-h
-f
-Q
-q 1 0 0 1 400.5385 91.8568 cm
-0 0 m
-0.603 2.837 l
-1.249 2.837 l
-0.264 -1.147 l
--0.249 -1.147 l
--1.029 1.705 l
--1.779 -1.147 l
--2.308 -1.147 l
--3.263 2.837 l
--2.631 2.837 l
--2.014 0.073 l
--1.278 2.837 l
--0.764 2.837 l
-h
-2.631 -1.147 -0.647 3.984 re
-2.675 3.881 m
-2.675 3.77 2.646 3.678 2.587 3.601 c
-2.529 3.532 2.433 3.499 2.308 3.499 c
-2.19 3.499 2.095 3.532 2.028 3.601 c
-1.97 3.678 1.941 3.77 1.941 3.881 c
-1.941 3.998 1.97 4.09 2.028 4.16 c
-2.095 4.237 2.19 4.278 2.308 4.278 c
-2.433 4.278 2.529 4.237 2.587 4.16 c
-2.646 4.079 2.675 3.987 2.675 3.881 c
-4.498 3.792 m
-4.498 2.837 l
-5.101 2.837 l
-5.101 2.308 l
-4.498 2.308 l
-4.498 -0.162 l
-4.498 -0.32 4.52 -0.437 4.571 -0.515 c
-4.63 -0.595 4.719 -0.632 4.836 -0.632 c
-4.925 -0.632 5.012 -0.617 5.101 -0.588 c
-5.101 -1.147 l
-4.954 -1.195 4.8 -1.22 4.645 -1.22 c
-4.388 -1.22 4.193 -1.128 4.057 -0.941 c
-3.917 -0.757 3.851 -0.496 3.851 -0.162 c
-3.851 2.308 l
-3.248 2.308 l
-3.248 2.837 l
-3.851 2.837 l
-3.851 3.792 l
-h
-6.512 2.425 m
-6.766 2.749 7.085 2.911 7.468 2.911 c
-8.173 2.911 8.53 2.44 8.54 1.5 c
-8.54 -1.147 l
-7.894 -1.147 l
-7.894 1.469 l
-7.894 1.782 7.838 2.003 7.732 2.132 c
-7.622 2.256 7.468 2.323 7.262 2.323 c
-7.104 2.323 6.957 2.267 6.82 2.161 c
-6.691 2.051 6.589 1.914 6.512 1.749 c
-6.512 -1.147 l
-5.866 -1.147 l
-5.866 4.498 l
-6.512 4.498 l
-h
-9.363 1.029 m
-9.363 1.606 9.5 2.061 9.775 2.396 c
-10.058 2.738 10.429 2.911 10.892 2.911 c
-11.352 2.911 11.719 2.741 11.994 2.41 c
-12.278 2.087 12.424 1.639 12.436 1.073 c
-12.436 0.646 l
-12.436 0.077 12.293 -0.378 12.009 -0.721 c
-11.734 -1.055 11.366 -1.22 10.907 -1.22 c
-10.444 -1.22 10.073 -1.058 9.789 -0.735 c
-9.514 -0.405 9.371 0.037 9.363 0.588 c
-h
-10.01 0.646 m
-10.01 0.243 10.088 -0.073 10.246 -0.309 c
-10.411 -0.544 10.631 -0.661 10.907 -0.661 c
-11.472 -0.661 11.767 -0.25 11.788 0.573 c
-11.788 1.029 l
-11.788 1.429 11.705 1.749 11.539 1.984 c
-11.381 2.227 11.164 2.352 10.892 2.352 c
-10.628 2.352 10.411 2.227 10.246 1.984 c
-10.088 1.749 10.01 1.429 10.01 1.029 c
-h
-15.302 -0.794 m
-15.085 -1.081 14.772 -1.22 14.361 -1.22 c
-13.997 -1.22 13.722 -1.099 13.538 -0.852 c
-13.361 -0.599 13.266 -0.235 13.259 0.235 c
-13.259 2.837 l
-13.905 2.837 l
-13.905 0.294 l
-13.905 -0.335 14.089 -0.647 14.464 -0.647 c
-14.865 -0.647 15.14 -0.47 15.287 -0.118 c
-15.287 2.837 l
-15.934 2.837 l
-15.934 -1.147 l
-15.316 -1.147 l
-h
-17.772 3.792 m
-17.772 2.837 l
-18.374 2.837 l
-18.374 2.308 l
-17.772 2.308 l
-17.772 -0.162 l
-17.772 -0.32 17.793 -0.437 17.845 -0.515 c
-17.903 -0.595 17.992 -0.632 18.109 -0.632 c
-18.198 -0.632 18.286 -0.617 18.374 -0.588 c
-18.374 -1.147 l
-18.227 -1.195 18.073 -1.22 17.918 -1.22 c
-17.661 -1.22 17.467 -1.128 17.33 -0.941 c
-17.191 -0.757 17.124 -0.496 17.124 -0.162 c
-17.124 2.308 l
-16.522 2.308 l
-16.522 2.837 l
-17.124 2.837 l
-17.124 3.792 l
-h
-22.901 -1.147 m
-22.861 -1.058 22.836 -0.912 22.828 -0.706 c
-22.593 -1.051 22.298 -1.22 21.946 -1.22 c
-21.582 -1.22 21.299 -1.124 21.093 -0.926 c
-20.895 -0.721 20.799 -0.434 20.799 -0.059 c
-20.799 0.341 20.935 0.661 21.211 0.897 c
-21.483 1.139 21.858 1.264 22.328 1.264 c
-22.813 1.264 l
-22.813 1.691 l
-22.813 1.926 22.758 2.091 22.651 2.19 c
-22.541 2.296 22.379 2.352 22.167 2.352 c
-21.968 2.352 21.806 2.293 21.681 2.175 c
-21.564 2.057 21.504 1.911 21.504 1.735 c
-20.858 1.735 l
-20.858 1.929 20.917 2.12 21.034 2.308 c
-21.159 2.491 21.321 2.639 21.519 2.749 c
-21.725 2.855 21.953 2.911 22.21 2.911 c
-22.611 2.911 22.915 2.807 23.121 2.602 c
-23.335 2.396 23.449 2.102 23.46 1.72 c
-23.46 -0.294 l
-23.46 -0.599 23.497 -0.864 23.578 -1.087 c
-23.578 -1.147 l
-h
-22.034 -0.632 m
-22.2 -0.632 22.35 -0.588 22.489 -0.5 c
-22.637 -0.412 22.743 -0.301 22.813 -0.162 c
-22.813 0.779 l
-22.445 0.779 l
-22.13 0.779 21.887 0.709 21.71 0.573 c
-21.534 0.445 21.446 0.257 21.446 0.015 c
-21.446 -0.214 21.49 -0.378 21.579 -0.485 c
-21.666 -0.584 21.818 -0.632 22.034 -0.632 c
-27.341 0.646 m
-27.341 0.018 27.223 -0.452 26.988 -0.765 c
-26.759 -1.07 26.443 -1.22 26.032 -1.22 c
-25.628 -1.22 25.319 -1.07 25.106 -0.765 c
-25.106 -2.675 l
-24.459 -2.675 l
-24.459 2.837 l
-25.047 2.837 l
-25.091 2.396 l
-25.305 2.738 25.613 2.911 26.017 2.911 c
-26.458 2.911 26.786 2.756 27.002 2.454 c
-27.216 2.15 27.329 1.694 27.341 1.087 c
-h
-26.693 1.029 m
-26.693 1.469 26.624 1.793 26.487 1.999 c
-26.348 2.212 26.128 2.323 25.826 2.323 c
-25.51 2.323 25.271 2.168 25.106 1.866 c
-25.106 -0.206 l
-25.271 -0.511 25.51 -0.661 25.826 -0.661 c
-26.121 -0.661 26.333 -0.559 26.473 -0.353 c
-26.609 -0.14 26.682 0.191 26.693 0.632 c
-h
-31.059 0.646 m
-31.059 0.018 30.942 -0.452 30.707 -0.765 c
-30.479 -1.07 30.163 -1.22 29.751 -1.22 c
-29.346 -1.22 29.038 -1.07 28.825 -0.765 c
-28.825 -2.675 l
-28.178 -2.675 l
-28.178 2.837 l
-28.766 2.837 l
-28.81 2.396 l
-29.024 2.738 29.332 2.911 29.736 2.911 c
-30.177 2.911 30.504 2.756 30.721 2.454 c
-30.934 2.15 31.048 1.694 31.059 1.087 c
-h
-30.412 1.029 m
-30.412 1.469 30.343 1.793 30.206 1.999 c
-30.067 2.212 29.847 2.323 29.545 2.323 c
-29.229 2.323 28.991 2.168 28.825 1.866 c
-28.825 -0.206 l
-28.991 -0.511 29.229 -0.661 29.545 -0.661 c
-29.839 -0.661 30.052 -0.559 30.192 -0.353 c
-30.328 -0.14 30.402 0.191 30.412 0.632 c
-h
-32.602 -1.147 -0.646 5.644 re
-34.705 -0.059 m
-35.424 2.837 l
-36.116 2.837 l
-34.822 -1.706 l
-34.723 -2.047 34.58 -2.308 34.396 -2.484 c
-34.219 -2.66 34.017 -2.749 33.793 -2.749 c
-33.705 -2.749 33.591 -2.727 33.456 -2.69 c
-33.456 -2.146 l
-33.602 -2.161 l
-33.786 -2.161 33.932 -2.117 34.043 -2.028 c
-34.15 -1.941 34.238 -1.783 34.308 -1.558 c
-34.425 -1.118 l
-33.264 2.837 l
-33.969 2.837 l
-h
-37.454 -1.147 -0.647 3.984 re
-37.497 3.881 m
-37.497 3.77 37.468 3.678 37.409 3.601 c
-37.35 3.532 37.255 3.499 37.13 3.499 c
-37.012 3.499 36.917 3.532 36.851 3.601 c
-36.791 3.678 36.762 3.77 36.762 3.881 c
-36.762 3.998 36.791 4.09 36.851 4.16 c
-36.917 4.237 37.012 4.278 37.13 4.278 c
-37.255 4.278 37.35 4.237 37.409 4.16 c
-37.468 4.079 37.497 3.987 37.497 3.881 c
-39.085 2.837 m
-39.1 2.396 l
-39.353 2.738 39.677 2.911 40.07 2.911 c
-40.775 2.911 41.132 2.44 41.143 1.5 c
-41.143 -1.147 l
-40.496 -1.147 l
-40.496 1.469 l
-40.496 1.782 40.441 2.003 40.334 2.132 c
-40.224 2.256 40.07 2.323 39.864 2.323 c
-39.706 2.323 39.559 2.267 39.423 2.161 c
-39.295 2.051 39.191 1.914 39.114 1.749 c
-39.114 -1.147 l
-38.468 -1.147 l
-38.468 2.837 l
-h
-41.98 1.029 m
-41.98 1.646 42.091 2.109 42.319 2.425 c
-42.543 2.749 42.877 2.911 43.318 2.911 c
-43.719 2.911 44.024 2.734 44.23 2.381 c
-44.274 2.837 l
-44.862 2.837 l
-44.862 -1.191 l
-44.862 -1.679 44.733 -2.058 44.479 -2.323 c
-44.222 -2.587 43.87 -2.72 43.421 -2.72 c
-43.222 -2.72 43.002 -2.668 42.759 -2.572 c
-42.514 -2.473 42.333 -2.352 42.216 -2.205 c
-42.48 -1.764 l
-42.745 -2.028 43.043 -2.161 43.377 -2.161 c
-43.914 -2.161 44.189 -1.866 44.201 -1.278 c
-44.201 -0.75 l
-43.995 -1.066 43.693 -1.22 43.303 -1.22 c
-42.892 -1.22 42.568 -1.07 42.333 -0.765 c
-42.106 -0.452 41.988 0 41.98 0.588 c
-h
-42.642 0.646 m
-42.642 0.206 42.705 -0.125 42.833 -0.338 c
-42.958 -0.544 43.175 -0.647 43.48 -0.647 c
-43.804 -0.647 44.043 -0.482 44.201 -0.147 c
-44.201 1.837 l
-44.031 2.161 43.792 2.323 43.48 2.323 c
-43.186 2.323 42.969 2.219 42.833 2.014 c
-42.705 1.808 42.642 1.484 42.642 1.043 c
-h
-48.242 -1.147 -0.646 3.984 re
-48.286 3.881 m
-48.286 3.77 48.257 3.678 48.199 3.601 c
-48.14 3.532 48.044 3.499 47.919 3.499 c
-47.802 3.499 47.706 3.532 47.64 3.601 c
-47.581 3.678 47.552 3.77 47.552 3.881 c
-47.552 3.998 47.581 4.09 47.64 4.16 c
-47.706 4.237 47.802 4.278 47.919 4.278 c
-48.044 4.278 48.14 4.237 48.199 4.16 c
-48.257 4.079 48.286 3.987 48.286 3.881 c
-50.109 3.792 m
-50.109 2.837 l
-50.712 2.837 l
-50.712 2.308 l
-50.109 2.308 l
-50.109 -0.162 l
-50.109 -0.32 50.131 -0.437 50.183 -0.515 c
-50.241 -0.595 50.33 -0.632 50.447 -0.632 c
-50.536 -0.632 50.624 -0.617 50.712 -0.588 c
-50.712 -1.147 l
-50.565 -1.195 50.41 -1.22 50.256 -1.22 c
-49.999 -1.22 49.805 -1.128 49.668 -0.941 c
-49.529 -0.757 49.462 -0.496 49.462 -0.162 c
-49.462 2.308 l
-48.86 2.308 l
-48.86 2.837 l
-49.462 2.837 l
-49.462 3.792 l
-h
-53.902 -1.147 -0.647 3.984 re
-53.946 3.881 m
-53.946 3.77 53.917 3.678 53.857 3.601 c
-53.799 3.532 53.703 3.499 53.578 3.499 c
-53.46 3.499 53.365 3.532 53.299 3.601 c
-53.24 3.678 53.211 3.77 53.211 3.881 c
-53.211 3.998 53.24 4.09 53.299 4.16 c
-53.365 4.237 53.46 4.278 53.578 4.278 c
-53.703 4.278 53.799 4.237 53.857 4.16 c
-53.917 4.079 53.946 3.987 53.946 3.881 c
-55.533 2.837 m
-55.548 2.396 l
-55.802 2.738 56.125 2.911 56.518 2.911 c
-57.223 2.911 57.58 2.44 57.591 1.5 c
-57.591 -1.147 l
-56.944 -1.147 l
-56.944 1.469 l
-56.944 1.782 56.889 2.003 56.782 2.132 c
-56.672 2.256 56.518 2.323 56.312 2.323 c
-56.155 2.323 56.007 2.267 55.871 2.161 c
-55.743 2.051 55.64 1.914 55.563 1.749 c
-55.563 -1.147 l
-54.916 -1.147 l
-54.916 2.837 l
-h
-59.413 3.792 m
-59.413 2.837 l
-60.016 2.837 l
-60.016 2.308 l
-59.413 2.308 l
-59.413 -0.162 l
-59.413 -0.32 59.436 -0.437 59.488 -0.515 c
-59.546 -0.595 59.634 -0.632 59.752 -0.632 c
-59.84 -0.632 59.928 -0.617 60.016 -0.588 c
-60.016 -1.147 l
-59.87 -1.195 59.715 -1.22 59.561 -1.22 c
-59.303 -1.22 59.109 -1.128 58.973 -0.941 c
-58.833 -0.757 58.767 -0.496 58.767 -0.162 c
-58.767 2.308 l
-58.164 2.308 l
-58.164 2.837 l
-58.767 2.837 l
-58.767 3.792 l
-h
-60.575 1.029 m
-60.575 1.606 60.711 2.061 60.986 2.396 c
-61.269 2.738 61.641 2.911 62.104 2.911 c
-62.563 2.911 62.931 2.741 63.206 2.41 c
-63.489 2.087 63.636 1.639 63.647 1.073 c
-63.647 0.646 l
-63.647 0.077 63.504 -0.378 63.221 -0.721 c
-62.945 -1.055 62.578 -1.22 62.118 -1.22 c
-61.655 -1.22 61.284 -1.058 61.001 -0.735 c
-60.726 -0.405 60.583 0.037 60.575 0.588 c
-h
-61.221 0.646 m
-61.221 0.243 61.299 -0.073 61.457 -0.309 c
-61.622 -0.544 61.842 -0.661 62.118 -0.661 c
-62.684 -0.661 62.978 -0.25 63 0.573 c
-63 1.029 l
-63 1.429 62.916 1.749 62.75 1.984 c
-62.592 2.227 62.376 2.352 62.104 2.352 c
-61.84 2.352 61.622 2.227 61.457 1.984 c
-61.299 1.749 61.221 1.429 61.221 1.029 c
-h
-f
-Q
-q 1 0 0 1 469.5361 92.4598 cm
-0 0 m
-0.353 2.234 l
-1.352 2.234 l
-0.529 -1.75 l
--0.338 -1.75 l
--0.897 0.558 l
--1.455 -1.75 l
--2.323 -1.75 l
--3.146 2.234 l
--2.146 2.234 l
--1.793 0 l
--1.264 2.234 l
--0.53 2.234 l
-h
-1.749 0.367 m
-1.749 0.974 1.889 1.448 2.175 1.793 c
-2.458 2.135 2.851 2.308 3.351 2.308 c
-3.858 2.308 4.255 2.135 4.542 1.793 c
-4.825 1.448 4.968 0.974 4.968 0.367 c
-4.968 0.103 l
-4.968 -0.497 4.825 -0.967 4.542 -1.309 c
-4.255 -1.654 3.858 -1.823 3.351 -1.823 c
-2.84 -1.823 2.444 -1.654 2.161 -1.309 c
-1.885 -0.967 1.749 -0.493 1.749 0.118 c
-h
-2.793 0.103 m
-2.793 -0.603 2.977 -0.956 3.351 -0.956 c
-3.704 -0.956 3.896 -0.662 3.925 -0.074 c
-3.925 0.367 l
-3.925 0.727 3.873 0.999 3.777 1.176 c
-3.678 1.352 3.535 1.44 3.351 1.44 c
-3.175 1.44 3.035 1.352 2.94 1.176 c
-2.84 0.999 2.793 0.727 2.793 0.367 c
-h
-7.57 1.219 m
-7.231 1.249 l
-6.945 1.249 6.755 1.124 6.659 0.881 c
-6.659 -1.75 l
-5.615 -1.75 l
-5.615 2.234 l
-6.585 2.234 l
-6.614 1.793 l
-6.78 2.135 7.011 2.308 7.305 2.308 c
-7.423 2.308 7.515 2.285 7.584 2.248 c
-h
-9.437 -0.221 m
-9.157 -0.53 l
-9.157 -1.75 l
-8.114 -1.75 l
-8.114 3.895 l
-9.157 3.895 l
-9.157 0.852 l
-9.275 1.043 l
-9.995 2.234 l
-11.245 2.234 l
-10.084 0.588 l
-11.347 -1.75 l
-10.157 -1.75 l
-h
-12.803 -1.75 -1.043 3.984 re
-11.715 3.262 m
-11.715 3.417 11.763 3.546 11.862 3.645 c
-11.969 3.752 12.104 3.806 12.274 3.806 c
-12.45 3.806 12.586 3.752 12.685 3.645 c
-12.792 3.546 12.847 3.417 12.847 3.262 c
-12.847 3.094 12.792 2.958 12.685 2.851 c
-12.586 2.752 12.45 2.705 12.274 2.705 c
-12.104 2.705 11.969 2.752 11.862 2.851 c
-11.763 2.958 11.715 3.094 11.715 3.262 c
-14.566 2.234 m
-14.596 1.837 l
-14.831 2.15 15.133 2.308 15.507 2.308 c
-16.191 2.308 16.544 1.826 16.565 0.866 c
-16.565 -1.75 l
-15.522 -1.75 l
-15.522 0.793 l
-15.522 1.018 15.486 1.179 15.42 1.278 c
-15.349 1.373 15.232 1.425 15.066 1.425 c
-14.879 1.425 14.732 1.33 14.626 1.146 c
-14.626 -1.75 l
-13.581 -1.75 l
-13.581 2.234 l
-h
-17.183 0.367 m
-17.183 1.014 17.301 1.499 17.536 1.822 c
-17.771 2.146 18.102 2.308 18.535 2.308 c
-18.888 2.308 19.16 2.164 19.359 1.881 c
-19.403 2.234 l
-20.343 2.234 l
-20.343 -1.75 l
-20.343 -2.257 20.201 -2.646 19.917 -2.911 c
-19.63 -3.183 19.226 -3.323 18.697 -3.323 c
-18.47 -3.323 18.234 -3.278 17.992 -3.19 c
-17.756 -3.102 17.58 -2.988 17.462 -2.852 c
-17.815 -2.132 l
-17.911 -2.238 18.04 -2.323 18.198 -2.382 c
-18.352 -2.448 18.499 -2.484 18.638 -2.484 c
-18.873 -2.484 19.039 -2.426 19.138 -2.309 c
-19.245 -2.198 19.299 -2.022 19.299 -1.779 c
-19.299 -1.426 l
-19.102 -1.691 18.844 -1.823 18.52 -1.823 c
-18.098 -1.823 17.771 -1.661 17.536 -1.338 c
-17.308 -1.008 17.19 -0.537 17.183 0.073 c
-h
-18.227 0.103 m
-18.227 -0.273 18.275 -0.541 18.374 -0.706 c
-18.47 -0.875 18.624 -0.956 18.829 -0.956 c
-19.042 -0.956 19.201 -0.879 19.299 -0.721 c
-19.299 1.176 l
-19.189 1.341 19.035 1.425 18.829 1.425 c
-18.624 1.425 18.47 1.341 18.374 1.176 c
-18.275 1.007 18.227 0.738 18.227 0.367 c
-h
-22.695 0.367 m
-22.695 1.014 22.802 1.499 23.019 1.822 c
-23.243 2.146 23.566 2.308 23.989 2.308 c
-24.301 2.308 24.554 2.175 24.753 1.911 c
-24.753 3.895 l
-25.811 3.895 l
-25.811 -1.75 l
-24.856 -1.75 l
-24.812 -1.338 l
-24.595 -1.661 24.319 -1.823 23.989 -1.823 c
-23.577 -1.823 23.258 -1.669 23.033 -1.353 c
-22.817 -1.029 22.703 -0.559 22.695 0.058 c
-h
-23.739 0.103 m
-23.739 -0.291 23.775 -0.566 23.856 -0.721 c
-23.945 -0.879 24.091 -0.956 24.297 -0.956 c
-24.503 -0.956 24.654 -0.864 24.753 -0.676 c
-24.753 1.132 l
-24.654 1.326 24.503 1.425 24.297 1.425 c
-24.099 1.425 23.96 1.344 23.871 1.19 c
-23.783 1.043 23.739 0.771 23.739 0.382 c
-h
-27.663 -1.75 -1.043 3.984 re
-26.576 3.262 m
-26.576 3.417 26.624 3.546 26.723 3.645 c
-26.829 3.752 26.965 3.806 27.135 3.806 c
-27.311 3.806 27.447 3.752 27.546 3.645 c
-27.652 3.546 27.708 3.417 27.708 3.262 c
-27.708 3.094 27.652 2.958 27.546 2.851 c
-27.447 2.752 27.311 2.705 27.135 2.705 c
-26.965 2.705 26.829 2.752 26.723 2.851 c
-26.624 2.958 26.576 3.094 26.576 3.262 c
-30.427 1.219 m
-30.089 1.249 l
-29.803 1.249 29.611 1.124 29.516 0.881 c
-29.516 -1.75 l
-28.471 -1.75 l
-28.471 2.234 l
-29.442 2.234 l
-29.471 1.793 l
-29.637 2.135 29.868 2.308 30.162 2.308 c
-30.28 2.308 30.372 2.285 30.441 2.248 c
-h
-32.5 -1.823 m
-31.97 -1.823 31.551 -1.669 31.25 -1.353 c
-30.956 -1.029 30.809 -0.57 30.809 0.029 c
-30.809 0.338 l
-30.809 0.962 30.945 1.448 31.22 1.793 c
-31.492 2.135 31.885 2.308 32.396 2.308 c
-32.897 2.308 33.267 2.146 33.514 1.822 c
-33.767 1.499 33.9 1.021 33.911 0.396 c
-33.911 -0.103 l
-31.838 -0.103 l
-31.856 -0.397 31.919 -0.614 32.029 -0.75 c
-32.147 -0.89 32.327 -0.956 32.573 -0.956 c
-32.915 -0.956 33.205 -0.838 33.44 -0.603 c
-33.852 -1.235 l
-33.724 -1.411 33.535 -1.555 33.294 -1.661 c
-33.047 -1.768 32.783 -1.823 32.5 -1.823 c
-31.853 0.617 m
-32.882 0.617 l
-32.882 0.72 l
-32.882 0.955 32.841 1.132 32.764 1.249 c
-32.694 1.373 32.566 1.44 32.382 1.44 c
-32.205 1.44 32.074 1.371 31.985 1.234 c
-31.904 1.105 31.86 0.9 31.853 0.617 c
-35.939 -0.956 m
-36.233 -0.956 36.384 -0.761 36.394 -0.368 c
-37.365 -0.368 l
-37.365 -0.802 37.233 -1.154 36.968 -1.426 c
-36.703 -1.691 36.365 -1.823 35.954 -1.823 c
-35.443 -1.823 35.05 -1.669 34.778 -1.353 c
-34.513 -1.029 34.374 -0.559 34.366 0.058 c
-34.366 0.382 l
-34.366 1.007 34.499 1.484 34.763 1.807 c
-35.035 2.138 35.432 2.308 35.954 2.308 c
-36.384 2.308 36.726 2.167 36.982 1.896 c
-37.236 1.62 37.365 1.238 37.365 0.749 c
-36.394 0.749 l
-36.394 0.962 36.354 1.132 36.277 1.249 c
-36.207 1.373 36.09 1.44 35.924 1.44 c
-35.748 1.44 35.619 1.373 35.542 1.249 c
-35.461 1.12 35.417 0.87 35.41 0.5 c
-35.41 0.087 l
-35.41 -0.235 35.424 -0.464 35.454 -0.588 c
-35.49 -0.717 35.546 -0.809 35.615 -0.867 c
-35.693 -0.927 35.8 -0.956 35.939 -0.956 c
-39.173 3.204 m
-39.173 2.234 l
-39.702 2.234 l
-39.702 1.44 l
-39.173 1.44 l
-39.173 -0.53 l
-39.173 -0.688 39.191 -0.794 39.232 -0.853 c
-39.28 -0.912 39.364 -0.941 39.482 -0.941 c
-39.588 -0.941 39.673 -0.934 39.731 -0.912 c
-39.731 -1.721 l
-39.555 -1.786 39.364 -1.823 39.158 -1.823 c
-38.482 -1.823 38.137 -1.437 38.129 -0.662 c
-38.129 1.44 l
-37.674 1.44 l
-37.674 2.234 l
-38.129 2.234 l
-38.129 3.204 l
-h
-40.055 0.367 m
-40.055 0.974 40.194 1.448 40.481 1.793 c
-40.764 2.135 41.157 2.308 41.657 2.308 c
-42.164 2.308 42.561 2.135 42.848 1.793 c
-43.131 1.448 43.274 0.974 43.274 0.367 c
-43.274 0.103 l
-43.274 -0.497 43.131 -0.967 42.848 -1.309 c
-42.561 -1.654 42.164 -1.823 41.657 -1.823 c
-41.146 -1.823 40.749 -1.654 40.466 -1.309 c
-40.191 -0.967 40.055 -0.493 40.055 0.118 c
-h
-41.098 0.103 m
-41.098 -0.603 41.282 -0.956 41.657 -0.956 c
-42.01 -0.956 42.201 -0.662 42.231 -0.074 c
-42.231 0.367 l
-42.231 0.727 42.179 0.999 42.083 1.176 c
-41.984 1.352 41.84 1.44 41.657 1.44 c
-41.481 1.44 41.341 1.352 41.246 1.176 c
-41.146 0.999 41.098 0.727 41.098 0.367 c
-h
-45.875 1.219 m
-45.537 1.249 l
-45.25 1.249 45.06 1.124 44.965 0.881 c
-44.965 -1.75 l
-43.92 -1.75 l
-43.92 2.234 l
-44.891 2.234 l
-44.92 1.793 l
-45.086 2.135 45.317 2.308 45.611 2.308 c
-45.728 2.308 45.821 2.285 45.89 2.248 c
-h
-47.772 -0.015 m
-48.301 2.234 l
-49.403 2.234 l
-48.095 -2.352 l
-47.897 -3.017 47.529 -3.352 46.993 -3.352 c
-46.864 -3.352 46.721 -3.33 46.567 -3.293 c
-46.567 -2.469 l
-46.684 -2.484 l
-46.85 -2.484 46.971 -2.448 47.051 -2.382 c
-47.129 -2.323 47.191 -2.213 47.243 -2.058 c
-47.316 -1.794 l
-46.17 2.234 l
-47.286 2.234 l
-h
-f
-Q
-q 1 0 0 1 519.5421 91.0628 cm
-0 0 m
-0 0.118 0.033 0.214 0.103 0.294 c
-0.169 0.372 0.272 0.412 0.412 0.412 c
-0.559 0.412 0.665 0.372 0.735 0.294 c
-0.812 0.214 0.852 0.118 0.852 0 c
-0.852 -0.11 0.812 -0.202 0.735 -0.279 c
-0.665 -0.357 0.559 -0.397 0.412 -0.397 c
-0.272 -0.397 0.169 -0.357 0.103 -0.279 c
-0.033 -0.202 0 -0.11 0 0 c
-f
-Q
-0.113 0.082 0.09 0 k
-287.665 113.704 234.667 -12.898 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 292.8568 106.8644 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.646 -0.243 -0.775 -0.367 -0.881 c
--0.496 -0.992 -0.658 -1.08 -0.852 -1.147 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.161 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.926 c
--3.127 -0.819 -3.23 -0.691 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.214 -3.484 -0.015 c
--2.66 0.133 l
--2.642 0.033 -2.616 -0.058 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.368 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.684 -1.992 0.69 -1.999 0.69 c
--2.167 0.727 -2.329 0.771 -2.484 0.823 c
--2.642 0.882 -2.786 0.96 -2.91 1.058 c
--3.039 1.154 -3.142 1.278 -3.219 1.426 c
--3.289 1.573 -3.322 1.756 -3.322 1.984 c
--3.322 2.179 -3.289 2.344 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.837 c
--2.8 2.932 -2.645 3.002 -2.469 3.042 c
--2.293 3.09 -2.102 3.119 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.119 -1.128 3.09 -0.97 3.042 c
--0.804 2.992 -0.669 2.918 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.202 2.344 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.253 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.353 c
--1.294 1.312 -1.117 1.264 -0.941 1.205 c
--0.756 1.147 -0.595 1.066 -0.455 0.97 c
--0.32 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.454 c
--2.26 2.425 -2.319 2.385 -2.366 2.337 c
--2.406 2.296 -2.436 2.249 -2.454 2.19 c
--2.477 2.132 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.779 c
--2.41 1.72 -2.373 1.668 -2.322 1.631 c
--2.263 1.591 -2.201 1.558 -2.131 1.529 c
--2.065 1.5 -1.984 1.47 -1.896 1.44 c
-h
--0.837 -0.015 m
--0.837 0.092 -0.86 0.177 -0.897 0.235 c
--0.926 0.301 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.53 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.529 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.015 c
-6.402 -2.66 m
-6.184 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.396 c
-5.284 -2.315 5.185 -2.219 5.108 -2.102 c
-5.039 -1.984 4.991 -1.856 4.961 -1.72 c
-5.858 -1.617 l
-5.895 -1.753 5.964 -1.86 6.064 -1.94 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.057 6.681 -2.028 c
-6.758 -1.999 6.828 -1.944 6.887 -1.866 c
-6.945 -1.797 6.99 -1.705 7.019 -1.587 c
-7.056 -1.469 7.078 -1.323 7.078 -1.147 c
-7.078 -0.956 l
-7.078 -0.889 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.073 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.215 -0.897 5.108 -0.75 c
-5.009 -0.595 4.935 -0.411 4.888 -0.206 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.771 4.836 1.018 4.888 1.235 c
-4.946 1.448 5.027 1.631 5.137 1.779 c
-5.244 1.933 5.376 2.051 5.534 2.132 c
-5.689 2.219 5.876 2.263 6.093 2.263 c
-6.188 2.263 6.288 2.253 6.387 2.234 c
-6.483 2.213 6.571 2.179 6.652 2.132 c
-6.739 2.08 6.817 2.018 6.887 1.941 c
-6.964 1.86 7.026 1.768 7.078 1.661 c
-7.092 1.661 l
-7.092 1.808 l
-7.1 1.866 7.107 1.918 7.107 1.97 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.129 2.165 7.14 2.198 7.151 2.219 c
-8.004 2.219 l
-7.993 2.138 7.982 2.028 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.161 l
-7.975 -1.415 7.938 -1.635 7.871 -1.822 c
-7.802 -2.007 7.699 -2.161 7.563 -2.278 c
-7.423 -2.404 7.258 -2.499 7.063 -2.558 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.53 m
-7.092 0.742 7.067 0.919 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.5 6.729 1.558 6.652 1.588 c
-6.571 1.625 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.621 6.137 1.573 c
-6.056 1.532 5.99 1.463 5.931 1.367 c
-5.88 1.278 5.835 1.161 5.799 1.014 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.338 c
-6.049 -0.515 6.211 -0.603 6.417 -0.603 c
-6.483 -0.603 6.556 -0.588 6.637 -0.559 c
-6.725 -0.522 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.176 7.019 -0.029 c
-7.067 0.118 7.092 0.301 7.092 0.53 c
-11.036 -0.646 m
-12.168 -0.646 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.646 l
-10.124 -0.646 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.219 l
-11.036 2.219 l
-h
-10.124 3.513 0.912 -0.675 re
-10.124 2.837 m
-13.597 1.602 m
-13.053 1.602 l
-13.053 2.219 l
-13.641 2.219 l
-13.92 3.117 l
-14.494 3.117 l
-14.494 2.219 l
-15.728 2.219 l
-15.728 1.602 l
-14.494 1.602 l
-14.494 -0.103 l
-14.494 -0.324 l
-14.501 -0.393 14.523 -0.455 14.552 -0.515 c
-14.589 -0.566 14.645 -0.61 14.714 -0.646 c
-14.791 -0.676 14.905 -0.691 15.052 -0.691 c
-15.188 -0.691 15.324 -0.687 15.464 -0.676 c
-15.599 -0.658 15.732 -0.632 15.861 -0.603 c
-15.861 -1.205 l
-15.78 -1.216 15.703 -1.231 15.626 -1.249 c
-15.545 -1.261 15.468 -1.268 15.391 -1.278 c
-15.31 -1.286 15.221 -1.294 15.125 -1.294 c
-15.038 -1.301 14.938 -1.309 14.832 -1.309 c
-14.645 -1.309 14.483 -1.294 14.346 -1.264 c
-14.218 -1.228 14.104 -1.183 14.009 -1.132 c
-13.92 -1.084 13.847 -1.025 13.788 -0.956 c
-13.729 -0.879 13.685 -0.802 13.656 -0.721 c
-13.627 -0.632 13.604 -0.544 13.597 -0.455 c
-13.586 -0.36 13.582 -0.264 13.582 -0.176 c
-h
-24.22 -0.25 m
-24.22 -0.419 24.18 -0.569 24.103 -0.706 c
-24.033 -0.834 23.931 -0.948 23.794 -1.043 c
-23.666 -1.132 23.504 -1.201 23.31 -1.249 c
-23.121 -1.297 22.905 -1.323 22.662 -1.323 c
-22.435 -1.323 22.236 -1.309 22.06 -1.278 c
-21.883 -1.249 21.725 -1.201 21.59 -1.132 c
-21.45 -1.055 21.34 -0.956 21.251 -0.838 c
-21.163 -0.721 21.093 -0.573 21.045 -0.397 c
-21.854 -0.279 l
-21.872 -0.378 21.902 -0.455 21.942 -0.515 c
-21.99 -0.573 22.049 -0.617 22.119 -0.646 c
-22.185 -0.676 22.265 -0.702 22.354 -0.721 c
-22.442 -0.731 22.545 -0.735 22.662 -0.735 c
-22.758 -0.735 22.853 -0.731 22.942 -0.721 c
-23.03 -0.702 23.107 -0.676 23.177 -0.646 c
-23.243 -0.617 23.295 -0.58 23.324 -0.529 c
-23.36 -0.482 23.383 -0.419 23.383 -0.338 c
-23.383 -0.243 23.353 -0.169 23.295 -0.118 c
-23.243 -0.07 23.177 -0.029 23.089 0 c
-23.001 0.037 22.89 0.066 22.766 0.088 c
-22.647 0.118 22.516 0.147 22.369 0.177 c
-22.229 0.214 22.09 0.254 21.942 0.294 c
-21.803 0.341 21.677 0.405 21.56 0.485 c
-21.45 0.563 21.361 0.661 21.296 0.779 c
-21.226 0.897 21.193 1.047 21.193 1.235 c
-21.193 1.389 21.222 1.532 21.28 1.661 c
-21.347 1.797 21.442 1.911 21.56 1.999 c
-21.685 2.087 21.843 2.153 22.03 2.205 c
-22.215 2.253 22.427 2.278 22.662 2.278 c
-22.846 2.278 23.023 2.256 23.192 2.219 c
-23.357 2.19 23.504 2.135 23.632 2.058 c
-23.757 1.988 23.868 1.889 23.956 1.764 c
-24.044 1.646 24.103 1.503 24.133 1.338 c
-23.339 1.264 l
-23.316 1.341 23.287 1.404 23.25 1.455 c
-23.21 1.514 23.162 1.558 23.104 1.588 c
-23.052 1.625 22.99 1.65 22.913 1.661 c
-22.832 1.668 22.751 1.675 22.662 1.675 c
-22.446 1.675 22.284 1.646 22.177 1.588 c
-22.067 1.536 22.016 1.448 22.016 1.323 c
-22.016 1.242 22.034 1.18 22.074 1.132 c
-22.122 1.08 22.185 1.043 22.265 1.014 c
-22.354 0.985 22.45 0.956 22.56 0.926 c
-22.666 0.904 22.788 0.882 22.927 0.852 c
-23.081 0.823 23.239 0.783 23.397 0.735 c
-23.551 0.684 23.692 0.621 23.809 0.544 c
-23.927 0.463 24.022 0.36 24.103 0.235 c
-24.18 0.106 24.22 -0.056 24.22 -0.25 c
-25.783 1.602 m
-25.238 1.602 l
-25.238 2.219 l
-25.826 2.219 l
-26.106 3.117 l
-26.679 3.117 l
-26.679 2.219 l
-27.914 2.219 l
-27.914 1.602 l
-26.679 1.602 l
-26.679 -0.103 l
-26.679 -0.324 l
-26.686 -0.393 26.709 -0.455 26.738 -0.515 c
-26.774 -0.566 26.83 -0.61 26.9 -0.646 c
-26.977 -0.676 27.09 -0.691 27.237 -0.691 c
-27.374 -0.691 27.509 -0.687 27.649 -0.676 c
-27.785 -0.658 27.917 -0.632 28.046 -0.603 c
-28.046 -1.205 l
-27.965 -1.216 27.888 -1.231 27.811 -1.249 c
-27.73 -1.261 27.653 -1.268 27.576 -1.278 c
-27.495 -1.286 27.407 -1.294 27.312 -1.294 c
-27.223 -1.301 27.123 -1.309 27.017 -1.309 c
-26.83 -1.309 26.668 -1.294 26.532 -1.264 c
-26.404 -1.228 26.29 -1.183 26.194 -1.132 c
-26.106 -1.084 26.032 -1.025 25.974 -0.956 c
-25.915 -0.879 25.87 -0.802 25.841 -0.721 c
-25.812 -0.632 25.789 -0.544 25.783 -0.455 c
-25.772 -0.36 25.768 -0.264 25.768 -0.176 c
-h
-30.196 -1.323 m
-30.027 -1.323 29.876 -1.301 29.741 -1.264 c
-29.612 -1.216 29.498 -1.147 29.402 -1.058 c
-29.313 -0.97 29.244 -0.864 29.196 -0.735 c
-29.145 -0.599 29.122 -0.449 29.122 -0.279 c
-29.122 -0.073 29.155 0.096 29.226 0.235 c
-29.292 0.382 29.388 0.492 29.505 0.573 c
-29.63 0.661 29.773 0.724 29.931 0.765 c
-30.096 0.802 30.273 0.827 30.46 0.838 c
-31.181 0.852 l
-31.181 1.029 l
-31.181 1.147 31.17 1.249 31.152 1.338 c
-31.129 1.426 31.096 1.492 31.048 1.544 c
-31.008 1.602 30.96 1.639 30.901 1.661 c
-30.842 1.679 30.776 1.691 30.71 1.691 c
-30.641 1.691 30.578 1.679 30.519 1.661 c
-30.468 1.65 30.42 1.625 30.372 1.588 c
-30.331 1.558 30.298 1.507 30.269 1.44 c
-30.248 1.382 30.233 1.301 30.225 1.205 c
-29.284 1.249 l
-29.313 1.396 29.358 1.532 29.417 1.661 c
-29.483 1.786 29.579 1.897 29.696 1.984 c
-29.814 2.08 29.953 2.153 30.122 2.205 c
-30.298 2.253 30.504 2.278 30.74 2.278 c
-31.181 2.278 31.511 2.168 31.74 1.955 c
-31.975 1.749 32.092 1.44 32.092 1.029 c
-32.092 -0.235 l
-32.092 -0.455 l
-32.099 -0.515 32.114 -0.569 32.136 -0.617 c
-32.154 -0.658 32.184 -0.691 32.224 -0.721 c
-32.261 -0.742 32.313 -0.75 32.371 -0.75 c
-32.438 -0.75 32.507 -0.746 32.577 -0.735 c
-32.577 -1.22 l
-32.519 -1.231 32.463 -1.242 32.415 -1.249 c
-32.375 -1.261 32.334 -1.268 32.297 -1.278 c
-32.257 -1.286 32.213 -1.294 32.166 -1.294 c
-32.114 -1.301 32.055 -1.309 31.989 -1.309 c
-31.761 -1.309 31.596 -1.257 31.489 -1.147 c
-31.379 -1.029 31.316 -0.864 31.298 -0.646 c
-31.283 -0.646 l
-31.214 -0.757 31.144 -0.852 31.077 -0.941 c
-31.008 -1.022 30.931 -1.087 30.842 -1.147 c
-30.755 -1.205 30.655 -1.249 30.549 -1.278 c
-30.449 -1.309 30.331 -1.323 30.196 -1.323 c
-31.181 0.353 m
-30.755 0.338 l
-30.655 0.338 30.564 0.331 30.475 0.324 c
-30.394 0.312 30.328 0.287 30.269 0.25 c
-30.211 0.21 30.159 0.151 30.122 0.073 c
-30.082 0.004 30.063 -0.088 30.063 -0.206 c
-30.063 -0.374 30.096 -0.496 30.167 -0.573 c
-30.233 -0.654 30.331 -0.691 30.46 -0.691 c
-30.567 -0.691 30.666 -0.669 30.755 -0.617 c
-30.85 -0.569 30.931 -0.507 30.99 -0.426 c
-31.056 -0.349 31.107 -0.261 31.137 -0.162 c
-31.166 -0.056 31.181 0.059 31.181 0.177 c
-h
-36.403 -0.25 m
-36.403 -0.419 36.362 -0.569 36.285 -0.706 c
-36.215 -0.834 36.112 -0.948 35.976 -1.043 c
-35.848 -1.132 35.686 -1.201 35.491 -1.249 c
-35.304 -1.297 35.087 -1.323 34.844 -1.323 c
-34.616 -1.323 34.418 -1.309 34.242 -1.278 c
-34.065 -1.249 33.907 -1.201 33.772 -1.132 c
-33.631 -1.055 33.521 -0.956 33.433 -0.838 c
-33.345 -0.721 33.275 -0.573 33.228 -0.397 c
-34.036 -0.279 l
-34.055 -0.378 34.084 -0.455 34.124 -0.515 c
-34.171 -0.573 34.231 -0.617 34.3 -0.646 c
-34.367 -0.676 34.447 -0.702 34.535 -0.721 c
-34.624 -0.731 34.726 -0.735 34.844 -0.735 c
-34.94 -0.735 35.035 -0.731 35.123 -0.721 c
-35.212 -0.702 35.289 -0.676 35.359 -0.646 c
-35.425 -0.617 35.476 -0.58 35.505 -0.529 c
-35.543 -0.482 35.565 -0.419 35.565 -0.338 c
-35.565 -0.243 35.535 -0.169 35.476 -0.118 c
-35.425 -0.07 35.359 -0.029 35.27 0 c
-35.183 0.037 35.073 0.066 34.948 0.088 c
-34.83 0.118 34.697 0.147 34.551 0.177 c
-34.41 0.214 34.271 0.254 34.124 0.294 c
-33.984 0.341 33.859 0.405 33.742 0.485 c
-33.631 0.563 33.544 0.661 33.477 0.779 c
-33.408 0.897 33.375 1.047 33.375 1.235 c
-33.375 1.389 33.404 1.532 33.463 1.661 c
-33.529 1.797 33.624 1.911 33.742 1.999 c
-33.867 2.087 34.025 2.153 34.212 2.205 c
-34.396 2.253 34.609 2.278 34.844 2.278 c
-35.028 2.278 35.204 2.256 35.374 2.219 c
-35.539 2.19 35.686 2.135 35.815 2.058 c
-35.939 1.988 36.05 1.889 36.138 1.764 c
-36.226 1.646 36.285 1.503 36.314 1.338 c
-35.52 1.264 l
-35.499 1.341 35.469 1.404 35.432 1.455 c
-35.392 1.514 35.345 1.558 35.285 1.588 c
-35.234 1.625 35.171 1.65 35.094 1.661 c
-35.013 1.668 34.932 1.675 34.844 1.675 c
-34.628 1.675 34.466 1.646 34.36 1.588 c
-34.249 1.536 34.198 1.448 34.198 1.323 c
-34.198 1.242 34.216 1.18 34.256 1.132 c
-34.304 1.08 34.367 1.043 34.447 1.014 c
-34.535 0.985 34.631 0.956 34.742 0.926 c
-34.848 0.904 34.969 0.882 35.109 0.852 c
-35.264 0.823 35.422 0.783 35.58 0.735 c
-35.734 0.684 35.873 0.621 35.991 0.544 c
-36.108 0.463 36.204 0.36 36.285 0.235 c
-36.362 0.106 36.403 -0.056 36.403 -0.25 c
-38.262 1.514 m
-38.379 1.786 38.53 1.984 38.718 2.102 c
-38.901 2.219 39.122 2.278 39.379 2.278 c
-39.584 2.278 39.754 2.242 39.894 2.176 c
-40.041 2.105 40.151 2.014 40.232 1.897 c
-40.32 1.779 40.378 1.635 40.408 1.47 c
-40.444 1.301 40.467 1.124 40.467 0.941 c
-40.467 -1.264 l
-39.555 -1.264 l
-39.555 0.735 l
-39.555 0.871 39.544 0.992 39.526 1.103 c
-39.515 1.209 39.489 1.297 39.453 1.367 c
-39.412 1.444 39.353 1.503 39.276 1.544 c
-39.206 1.58 39.114 1.602 38.996 1.602 c
-38.886 1.602 38.791 1.577 38.703 1.529 c
-38.615 1.477 38.534 1.411 38.468 1.323 c
-38.409 1.235 38.358 1.124 38.321 1 c
-38.291 0.882 38.277 0.75 38.277 0.603 c
-38.277 -1.264 l
-37.365 -1.264 l
-37.365 3.513 l
-38.277 3.513 l
-38.277 2.205 l
-38.277 2.135 38.269 2.065 38.262 1.999 c
-38.262 1.793 l
-38.262 1.735 38.254 1.679 38.248 1.631 c
-38.248 1.514 l
-h
-47.662 -1.264 m
-47.651 -1.246 47.64 -1.216 47.632 -1.176 c
-47.632 -1.128 47.625 -1.08 47.617 -1.029 c
-47.617 -0.97 47.611 -0.912 47.603 -0.852 c
-47.603 -0.691 l
-47.486 -0.926 47.342 -1.095 47.177 -1.191 c
-47.008 -1.278 46.809 -1.323 46.574 -1.323 c
-46.376 -1.323 46.2 -1.278 46.045 -1.191 c
-45.887 -1.103 45.755 -0.981 45.648 -0.823 c
-45.549 -0.658 45.472 -0.467 45.413 -0.25 c
-45.362 -0.037 45.34 0.206 45.34 0.47 c
-45.34 0.735 45.362 0.974 45.413 1.191 c
-45.472 1.415 45.549 1.606 45.648 1.764 c
-45.755 1.918 45.887 2.043 46.045 2.132 c
-46.21 2.227 46.401 2.278 46.618 2.278 c
-46.714 2.278 46.809 2.263 46.898 2.234 c
-46.993 2.213 47.089 2.179 47.177 2.132 c
-47.265 2.08 47.342 2.018 47.412 1.941 c
-47.489 1.86 47.552 1.768 47.603 1.661 c
-47.603 1.749 l
-47.603 1.897 l
-47.603 2.058 l
-47.603 2.234 l
-47.603 3.513 l
-48.5 3.513 l
-48.5 -0.5 l
-48.5 -0.676 48.504 -0.834 48.515 -0.97 c
-48.521 -1.099 48.529 -1.198 48.529 -1.264 c
-h
-47.617 0.485 m
-47.617 0.721 47.592 0.912 47.544 1.058 c
-47.504 1.213 47.449 1.338 47.382 1.426 c
-47.324 1.514 47.254 1.573 47.177 1.602 c
-47.096 1.639 47.019 1.661 46.942 1.661 c
-46.842 1.661 46.751 1.635 46.663 1.588 c
-46.582 1.548 46.516 1.477 46.457 1.382 c
-46.405 1.282 46.362 1.161 46.324 1.014 c
-46.295 0.867 46.281 0.684 46.281 0.47 c
-46.281 0.077 46.331 -0.216 46.441 -0.411 c
-46.559 -0.61 46.721 -0.706 46.927 -0.706 c
-47.004 -0.706 47.081 -0.687 47.162 -0.646 c
-47.239 -0.61 47.313 -0.544 47.382 -0.455 c
-47.449 -0.368 47.504 -0.246 47.544 -0.088 c
-47.592 0.066 47.617 0.257 47.617 0.485 c
-52.56 1.47 m
-52.461 1.477 52.359 1.488 52.251 1.5 c
-52.141 1.517 52.02 1.529 51.885 1.529 c
-51.708 1.529 51.55 1.488 51.414 1.411 c
-51.274 1.341 51.156 1.242 51.061 1.118 c
-50.973 0.989 50.903 0.842 50.855 0.676 c
-50.815 0.507 50.796 0.331 50.796 0.147 c
-50.796 -1.264 l
-49.9 -1.264 l
-49.9 0.985 l
-49.9 1.11 49.889 1.235 49.87 1.353 c
-49.859 1.477 49.845 1.595 49.826 1.706 c
-49.815 1.823 49.801 1.918 49.782 1.999 c
-49.76 2.087 49.742 2.161 49.724 2.219 c
-50.605 2.219 l
-50.613 2.168 50.624 2.117 50.634 2.058 c
-50.653 1.999 50.668 1.933 50.679 1.866 c
-50.697 1.808 50.712 1.742 50.723 1.675 c
-50.73 1.606 50.742 1.544 50.753 1.484 c
-50.767 1.484 l
-50.804 1.602 50.855 1.708 50.914 1.808 c
-50.981 1.903 51.061 1.988 51.149 2.058 c
-51.237 2.124 51.34 2.179 51.458 2.219 c
-51.583 2.256 51.73 2.278 51.899 2.278 c
-52.024 2.278 52.141 2.271 52.251 2.263 c
-52.369 2.253 52.473 2.238 52.56 2.219 c
-h
-56.812 0.485 m
-56.812 0.21 56.776 -0.04 56.71 -0.264 c
-56.639 -0.482 56.537 -0.669 56.4 -0.823 c
-56.261 -0.981 56.084 -1.103 55.871 -1.191 c
-55.654 -1.278 55.401 -1.323 55.107 -1.323 c
-54.831 -1.323 54.585 -1.278 54.372 -1.191 c
-54.166 -1.103 53.994 -0.981 53.857 -0.823 c
-53.718 -0.669 53.615 -0.482 53.549 -0.264 c
-53.479 -0.04 53.446 0.21 53.446 0.485 c
-53.446 0.738 53.475 0.974 53.535 1.191 c
-53.6 1.415 53.703 1.606 53.843 1.764 c
-53.979 1.929 54.156 2.058 54.372 2.146 c
-54.585 2.234 54.842 2.278 55.137 2.278 c
-55.449 2.278 55.71 2.234 55.916 2.146 c
-56.128 2.058 56.301 1.929 56.43 1.764 c
-56.566 1.606 56.665 1.415 56.724 1.191 c
-56.783 0.974 56.812 0.738 56.812 0.485 c
-55.856 0.485 m
-55.856 0.69 55.842 0.867 55.812 1.014 c
-55.791 1.161 55.754 1.282 55.695 1.382 c
-55.636 1.477 55.563 1.548 55.474 1.588 c
-55.386 1.635 55.276 1.661 55.151 1.661 c
-54.887 1.661 54.696 1.562 54.578 1.367 c
-54.46 1.18 54.401 0.885 54.401 0.485 c
-54.401 0.062 54.46 -0.243 54.578 -0.426 c
-54.696 -0.613 54.871 -0.706 55.107 -0.706 c
-55.232 -0.706 55.346 -0.687 55.445 -0.646 c
-55.54 -0.599 55.621 -0.526 55.68 -0.426 c
-55.746 -0.331 55.791 -0.206 55.812 -0.058 c
-55.842 0.088 55.856 0.268 55.856 0.485 c
-58.539 2.219 m
-58.547 2.198 58.554 2.165 58.554 2.117 c
-58.561 2.076 58.569 2.028 58.569 1.97 c
-58.576 1.918 58.584 1.866 58.584 1.808 c
-58.584 1.646 l
-58.598 1.646 l
-58.657 1.764 58.723 1.86 58.804 1.941 c
-58.881 2.018 58.966 2.08 59.054 2.132 c
-59.141 2.19 59.23 2.227 59.318 2.249 c
-59.414 2.267 59.513 2.278 59.612 2.278 c
-59.818 2.278 59.998 2.234 60.157 2.146 c
-60.311 2.058 60.439 1.929 60.538 1.764 c
-60.645 1.606 60.722 1.415 60.774 1.191 c
-60.832 0.974 60.862 0.738 60.862 0.485 c
-60.862 0.22 60.832 -0.025 60.774 -0.25 c
-60.722 -0.467 60.645 -0.658 60.538 -0.823 c
-60.439 -0.981 60.307 -1.103 60.141 -1.191 c
-59.983 -1.278 59.796 -1.323 59.583 -1.323 c
-59.484 -1.323 59.384 -1.311 59.289 -1.294 c
-59.189 -1.272 59.098 -1.242 59.01 -1.191 c
-58.929 -1.143 58.852 -1.08 58.775 -0.999 c
-58.705 -0.922 58.646 -0.831 58.598 -0.721 c
-58.584 -0.721 l
-58.584 -0.808 l
-58.591 -0.849 58.598 -0.897 58.598 -0.956 c
-58.598 -1.117 l
-58.598 -1.294 l
-58.598 -2.631 l
-57.687 -2.631 l
-57.687 1.455 l
-57.687 1.621 57.68 1.768 57.672 1.897 c
-57.672 2.219 l
-h
-58.584 0.455 m
-58.584 0.228 58.602 0.037 58.642 -0.118 c
-58.69 -0.264 58.745 -0.382 58.804 -0.47 c
-58.87 -0.559 58.944 -0.625 59.024 -0.661 c
-59.101 -0.702 59.179 -0.721 59.259 -0.721 c
-59.355 -0.721 59.443 -0.698 59.524 -0.646 c
-59.612 -0.599 59.679 -0.529 59.729 -0.441 c
-59.789 -0.345 59.833 -0.22 59.862 -0.073 c
-59.899 0.081 59.921 0.268 59.921 0.485 c
-59.921 0.875 59.862 1.168 59.744 1.367 c
-59.634 1.562 59.48 1.661 59.274 1.661 c
-59.193 1.661 59.116 1.639 59.039 1.602 c
-58.958 1.562 58.885 1.5 58.819 1.411 c
-58.749 1.323 58.69 1.198 58.642 1.043 c
-58.602 0.885 58.584 0.69 58.584 0.455 c
-f
-Q
-0.113 0.082 0.09 0 k
-287.665 197.991 234.667 -12.895 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 292.8568 191.1528 cm
-0 0 m
-0 -0.188 -0.029 -0.353 -0.087 -0.5 c
--0.147 -0.647 -0.243 -0.776 -0.367 -0.882 c
--0.496 -0.992 -0.658 -1.081 -0.852 -1.147 c
--1.051 -1.206 -1.278 -1.243 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.359 -1.22 -2.543 -1.162 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.927 c
--3.127 -0.819 -3.23 -0.691 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.214 -3.484 -0.015 c
--2.66 0.132 l
--2.642 0.033 -2.616 -0.059 -2.587 -0.148 c
--2.55 -0.228 -2.506 -0.302 -2.454 -0.368 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.675 c
--1.977 0.683 -1.992 0.691 -1.999 0.691 c
--2.167 0.727 -2.329 0.771 -2.484 0.823 c
--2.642 0.881 -2.786 0.959 -2.91 1.058 c
--3.039 1.153 -3.142 1.278 -3.219 1.425 c
--3.289 1.573 -3.322 1.756 -3.322 1.984 c
--3.322 2.179 -3.289 2.344 -3.219 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.836 c
--2.8 2.932 -2.645 3.002 -2.469 3.042 c
--2.293 3.09 -2.102 3.119 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.119 -1.128 3.09 -0.97 3.042 c
--0.804 2.991 -0.669 2.917 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.202 2.344 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.252 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.352 c
--1.294 1.311 -1.117 1.263 -0.941 1.205 c
--0.756 1.146 -0.595 1.066 -0.455 0.97 c
--0.32 0.87 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.454 c
--2.26 2.425 -2.319 2.385 -2.366 2.337 c
--2.406 2.296 -2.436 2.248 -2.454 2.19 c
--2.477 2.131 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.778 c
--2.41 1.72 -2.373 1.668 -2.322 1.631 c
--2.263 1.591 -2.201 1.558 -2.131 1.529 c
--2.065 1.499 -1.984 1.469 -1.896 1.44 c
-h
--0.837 -0.015 m
--0.837 0.091 -0.86 0.176 -0.897 0.235 c
--0.926 0.301 -0.977 0.357 -1.043 0.397 c
--1.103 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.529 -1.448 0.558 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.53 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.015 c
-6.402 -2.66 m
-6.184 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.519 -2.484 5.402 -2.396 c
-5.284 -2.315 5.185 -2.22 5.108 -2.103 c
-5.039 -1.985 4.991 -1.856 4.961 -1.72 c
-5.858 -1.617 l
-5.895 -1.754 5.964 -1.86 6.064 -1.941 c
-6.159 -2.029 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.058 6.681 -2.029 c
-6.758 -1.999 6.828 -1.945 6.887 -1.867 c
-6.945 -1.797 6.99 -1.706 7.019 -1.588 c
-7.056 -1.47 7.078 -1.324 7.078 -1.147 c
-7.078 -0.956 l
-7.078 -0.89 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.073 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.215 -0.897 5.108 -0.75 c
-5.009 -0.595 4.935 -0.412 4.888 -0.206 c
-4.836 0.008 4.814 0.243 4.814 0.5 c
-4.814 0.771 4.836 1.018 4.888 1.234 c
-4.946 1.448 5.027 1.631 5.137 1.778 c
-5.244 1.932 5.376 2.05 5.534 2.131 c
-5.689 2.219 5.876 2.263 6.093 2.263 c
-6.188 2.263 6.288 2.252 6.387 2.234 c
-6.483 2.212 6.571 2.179 6.652 2.131 c
-6.739 2.08 6.817 2.017 6.887 1.94 c
-6.964 1.859 7.026 1.768 7.078 1.66 c
-7.092 1.66 l
-7.092 1.808 l
-7.1 1.866 7.107 1.918 7.107 1.969 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.129 2.164 7.14 2.198 7.151 2.219 c
-8.004 2.219 l
-7.993 2.138 7.982 2.028 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.162 l
-7.975 -1.415 7.938 -1.636 7.871 -1.823 c
-7.802 -2.007 7.699 -2.161 7.563 -2.278 c
-7.423 -2.404 7.258 -2.5 7.063 -2.558 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.529 m
-7.092 0.742 7.067 0.918 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.499 6.729 1.558 6.652 1.587 c
-6.571 1.624 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.225 1.62 6.137 1.573 c
-6.056 1.532 5.99 1.462 5.931 1.367 c
-5.88 1.278 5.835 1.161 5.799 1.014 c
-5.77 0.874 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.339 c
-6.049 -0.515 6.211 -0.603 6.417 -0.603 c
-6.483 -0.603 6.556 -0.588 6.637 -0.559 c
-6.725 -0.522 6.799 -0.463 6.857 -0.383 c
-6.924 -0.294 6.978 -0.177 7.019 -0.03 c
-7.067 0.118 7.092 0.301 7.092 0.529 c
-11.036 -0.647 m
-12.168 -0.647 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.647 l
-10.124 -0.647 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.219 l
-11.036 2.219 l
-h
-10.124 3.513 0.912 -0.676 re
-10.124 2.836 m
-13.597 1.602 m
-13.053 1.602 l
-13.053 2.219 l
-13.641 2.219 l
-13.92 3.116 l
-14.494 3.116 l
-14.494 2.219 l
-15.728 2.219 l
-15.728 1.602 l
-14.494 1.602 l
-14.494 -0.103 l
-14.494 -0.324 l
-14.501 -0.393 14.523 -0.456 14.552 -0.515 c
-14.589 -0.566 14.645 -0.611 14.714 -0.647 c
-14.791 -0.676 14.905 -0.691 15.052 -0.691 c
-15.188 -0.691 15.324 -0.688 15.464 -0.676 c
-15.599 -0.659 15.732 -0.632 15.861 -0.603 c
-15.861 -1.206 l
-15.78 -1.216 15.703 -1.231 15.626 -1.249 c
-15.545 -1.261 15.468 -1.268 15.391 -1.279 c
-15.31 -1.286 15.221 -1.294 15.125 -1.294 c
-15.038 -1.301 14.938 -1.309 14.832 -1.309 c
-14.645 -1.309 14.483 -1.294 14.346 -1.264 c
-14.218 -1.228 14.104 -1.183 14.009 -1.132 c
-13.92 -1.085 13.847 -1.025 13.788 -0.956 c
-13.729 -0.879 13.685 -0.802 13.656 -0.721 c
-13.627 -0.632 13.604 -0.544 13.597 -0.456 c
-13.586 -0.36 13.582 -0.265 13.582 -0.177 c
-h
-24.133 1.469 m
-24.033 1.477 23.931 1.488 23.823 1.499 c
-23.713 1.517 23.592 1.529 23.456 1.529 c
-23.28 1.529 23.121 1.488 22.986 1.411 c
-22.846 1.341 22.728 1.242 22.633 1.117 c
-22.545 0.988 22.475 0.841 22.427 0.675 c
-22.387 0.507 22.369 0.33 22.369 0.147 c
-22.369 -1.264 l
-21.471 -1.264 l
-21.471 0.985 l
-21.471 1.109 21.461 1.234 21.442 1.352 c
-21.432 1.477 21.417 1.595 21.398 1.705 c
-21.388 1.822 21.373 1.918 21.355 1.999 c
-21.332 2.087 21.314 2.161 21.296 2.219 c
-22.177 2.219 l
-22.185 2.167 22.196 2.117 22.207 2.057 c
-22.225 1.999 22.24 1.932 22.251 1.866 c
-22.269 1.808 22.284 1.741 22.296 1.675 c
-22.302 1.606 22.313 1.543 22.325 1.484 c
-22.339 1.484 l
-22.375 1.602 22.427 1.708 22.486 1.808 c
-22.552 1.903 22.633 1.988 22.722 2.057 c
-22.809 2.124 22.913 2.179 23.03 2.219 c
-23.155 2.256 23.302 2.278 23.471 2.278 c
-23.596 2.278 23.713 2.271 23.823 2.263 c
-23.942 2.252 24.044 2.238 24.133 2.219 c
-h
-26.341 -1.264 m
-26.341 0.852 l
-26.341 1.018 26.333 1.153 26.327 1.263 c
-26.315 1.371 26.297 1.455 26.267 1.514 c
-26.246 1.579 26.216 1.631 26.179 1.66 c
-26.15 1.691 26.109 1.705 26.061 1.705 c
-26.003 1.705 25.947 1.675 25.9 1.616 c
-25.86 1.565 25.826 1.492 25.797 1.396 c
-25.768 1.308 25.742 1.194 25.724 1.058 c
-25.712 0.918 25.709 0.768 25.709 0.602 c
-25.709 -1.264 l
-24.96 -1.264 l
-24.96 1.469 l
-24.96 1.705 l
-24.96 1.926 l
-24.96 2.003 24.952 2.065 24.945 2.117 c
-24.945 2.219 l
-25.621 2.219 l
-25.621 2.131 l
-25.621 1.984 l
-25.628 1.926 25.635 1.866 25.635 1.808 c
-25.635 1.646 l
-25.65 1.646 l
-25.668 1.734 25.698 1.811 25.739 1.881 c
-25.775 1.959 25.82 2.028 25.87 2.087 c
-25.93 2.146 25.995 2.19 26.076 2.219 c
-26.154 2.256 26.242 2.278 26.341 2.278 c
-26.525 2.278 26.664 2.223 26.753 2.117 c
-26.848 2.017 26.918 1.859 26.959 1.646 c
-26.973 1.646 l
-27.01 1.741 27.05 1.83 27.09 1.911 c
-27.138 1.988 27.194 2.05 27.252 2.102 c
-27.312 2.161 27.377 2.204 27.458 2.234 c
-27.535 2.263 27.624 2.278 27.723 2.278 c
-27.859 2.278 27.973 2.252 28.06 2.204 c
-28.149 2.153 28.215 2.08 28.266 1.984 c
-28.326 1.885 28.362 1.756 28.384 1.602 c
-28.413 1.455 28.428 1.271 28.428 1.058 c
-28.428 -1.264 l
-27.708 -1.264 l
-27.708 0.852 l
-27.708 1.018 27.701 1.153 27.693 1.263 c
-27.682 1.371 27.664 1.455 27.634 1.514 c
-27.613 1.579 27.583 1.631 27.547 1.66 c
-27.517 1.691 27.476 1.705 27.429 1.705 c
-27.312 1.705 27.216 1.616 27.15 1.44 c
-27.09 1.271 27.061 1.014 27.061 0.661 c
-27.061 -1.264 l
-h
-34.051 -2.631 m
-34.051 3.513 l
-35.976 3.513 l
-35.976 2.896 l
-34.903 2.896 l
-34.903 -2.014 l
-35.976 -2.014 l
-35.976 -2.631 l
-h
-39.012 1.602 m
-39.012 -1.264 l
-38.115 -1.264 l
-38.115 1.602 l
-37.292 1.602 l
-37.292 2.219 l
-38.115 2.219 l
-38.115 2.484 l
-38.115 2.609 38.13 2.741 38.159 2.881 c
-38.196 3.017 38.266 3.135 38.365 3.233 c
-38.472 3.34 38.615 3.428 38.791 3.498 c
-38.967 3.564 39.191 3.601 39.467 3.601 c
-39.68 3.601 39.879 3.59 40.055 3.572 c
-40.232 3.549 40.382 3.532 40.511 3.513 c
-40.511 2.925 l
-40.382 2.944 40.239 2.958 40.085 2.969 c
-39.927 2.977 39.776 2.984 39.629 2.984 c
-39.501 2.984 39.397 2.969 39.32 2.94 c
-39.239 2.91 39.177 2.869 39.129 2.822 c
-39.077 2.77 39.044 2.708 39.027 2.631 c
-39.015 2.561 39.012 2.484 39.012 2.396 c
-39.012 2.219 l
-40.438 2.219 l
-40.438 1.602 l
-h
-43.528 -0.647 m
-44.66 -0.647 l
-44.66 -1.264 l
-41.352 -1.264 l
-41.352 -0.647 l
-42.616 -0.647 l
-42.616 1.602 l
-41.691 1.602 l
-41.691 2.219 l
-43.528 2.219 l
-h
-42.616 3.513 0.912 -0.676 re
-42.616 2.836 m
-47.588 -0.647 m
-48.72 -0.647 l
-48.72 -1.264 l
-45.413 -1.264 l
-45.413 -0.647 l
-46.677 -0.647 l
-46.677 2.896 l
-45.751 2.896 l
-45.751 3.513 l
-47.588 3.513 l
-h
-51.105 -1.324 m
-50.848 -1.324 50.62 -1.286 50.414 -1.22 c
-50.208 -1.143 50.032 -1.029 49.886 -0.882 c
-49.738 -0.728 49.62 -0.537 49.533 -0.309 c
-49.452 -0.085 49.415 0.18 49.415 0.484 c
-49.415 0.816 49.458 1.095 49.547 1.323 c
-49.643 1.558 49.772 1.741 49.929 1.881 c
-50.094 2.017 50.283 2.117 50.488 2.175 c
-50.694 2.242 50.903 2.278 51.12 2.278 c
-51.392 2.278 51.627 2.227 51.825 2.131 c
-52.031 2.043 52.197 1.911 52.325 1.734 c
-52.461 1.565 52.56 1.359 52.619 1.117 c
-52.685 0.881 52.722 0.617 52.722 0.323 c
-52.722 0.309 l
-50.356 0.309 l
-50.356 0.162 50.37 0.022 50.399 -0.103 c
-50.437 -0.231 50.491 -0.345 50.561 -0.441 c
-50.628 -0.53 50.712 -0.599 50.811 -0.647 c
-50.907 -0.698 51.021 -0.721 51.149 -0.721 c
-51.303 -0.721 51.443 -0.688 51.561 -0.618 c
-51.686 -0.551 51.774 -0.449 51.825 -0.309 c
-52.664 -0.383 l
-52.634 -0.482 52.579 -0.588 52.502 -0.706 c
-52.421 -0.816 52.318 -0.919 52.193 -1.014 c
-52.076 -1.103 51.921 -1.176 51.737 -1.235 c
-51.561 -1.294 51.347 -1.324 51.105 -1.324 c
-51.105 1.705 m
-51.017 1.705 50.929 1.691 50.84 1.66 c
-50.753 1.631 50.672 1.579 50.605 1.514 c
-50.536 1.444 50.477 1.356 50.429 1.249 c
-50.389 1.139 50.37 1.014 50.37 0.867 c
-51.84 0.867 l
-51.84 1.003 51.814 1.124 51.767 1.234 c
-51.727 1.341 51.671 1.429 51.605 1.499 c
-51.546 1.565 51.473 1.616 51.384 1.646 c
-51.297 1.683 51.201 1.705 51.105 1.705 c
-53.975 -2.631 m
-53.975 -2.014 l
-55.048 -2.014 l
-55.048 2.896 l
-53.975 2.896 l
-53.975 3.513 l
-55.901 3.513 l
-55.901 -2.631 l
-h
-f
-Q
-q 1 0 0 1 318.9586 177.1631 cm
-0 0 m
--0.941 0 l
--0.941 -2.161 l
--1.616 -2.161 l
--1.616 3.189 l
--0.118 3.189 l
-0.412 3.189 0.809 3.05 1.073 2.778 c
-1.345 2.502 1.484 2.105 1.484 1.587 c
-1.484 1.253 1.411 0.962 1.264 0.72 c
-1.118 0.474 0.912 0.286 0.647 0.161 c
-1.676 -2.117 l
-1.676 -2.161 l
-0.956 -2.161 l
-h
--0.941 0.588 m
--0.118 0.588 l
-0.166 0.588 0.389 0.675 0.559 0.852 c
-0.724 1.036 0.809 1.282 0.809 1.587 c
-0.809 2.271 0.493 2.616 -0.132 2.616 c
--0.941 2.616 l
-h
-3.72 -2.234 m
-3.219 -2.234 2.837 -2.087 2.573 -1.794 c
-2.309 -1.5 2.176 -1.066 2.176 -0.485 c
-2.176 -0.015 l
-2.176 0.58 2.301 1.047 2.558 1.381 c
-2.822 1.723 3.182 1.896 3.645 1.896 c
-4.105 1.896 4.447 1.741 4.675 1.44 c
-4.91 1.146 5.031 0.683 5.042 0.058 c
-5.042 -0.368 l
-2.822 -0.368 l
-2.822 -0.456 l
-2.822 -0.89 2.899 -1.202 3.057 -1.397 c
-3.223 -1.584 3.454 -1.676 3.749 -1.676 c
-3.944 -1.676 4.116 -1.643 4.263 -1.573 c
-4.41 -1.496 4.546 -1.378 4.675 -1.22 c
-5.012 -1.632 l
-4.726 -2.036 4.296 -2.234 3.72 -2.234 c
-3.645 1.337 m
-3.37 1.337 3.168 1.242 3.043 1.058 c
-2.914 0.87 2.841 0.58 2.822 0.191 c
-4.395 0.191 l
-4.395 0.278 l
-4.373 0.661 4.307 0.929 4.19 1.087 c
-4.072 1.253 3.888 1.337 3.645 1.337 c
-6.438 1.822 m
-6.453 1.454 l
-6.696 1.749 7.015 1.896 7.408 1.896 c
-7.85 1.896 8.158 1.697 8.335 1.308 c
-8.588 1.697 8.937 1.896 9.378 1.896 c
-10.113 1.896 10.488 1.433 10.51 0.514 c
-10.51 -2.161 l
-9.864 -2.161 l
-9.864 0.455 l
-9.864 0.749 9.808 0.962 9.702 1.102 c
-9.602 1.238 9.43 1.308 9.187 1.308 c
-8.989 1.308 8.827 1.227 8.702 1.072 c
-8.584 0.926 8.515 0.735 8.497 0.5 c
-8.497 -2.161 l
-7.834 -2.161 l
-7.834 0.484 l
-7.834 1.032 7.614 1.308 7.173 1.308 c
-6.839 1.308 6.604 1.146 6.468 0.823 c
-6.468 -2.161 l
-5.821 -2.161 l
-5.821 1.822 l
-h
-11.348 0.014 m
-11.348 0.592 11.484 1.047 11.759 1.381 c
-12.042 1.723 12.414 1.896 12.877 1.896 c
-13.336 1.896 13.704 1.727 13.979 1.396 c
-14.263 1.072 14.409 0.625 14.42 0.058 c
-14.42 -0.368 l
-14.42 -0.937 14.277 -1.393 13.993 -1.735 c
-13.718 -2.07 13.351 -2.234 12.892 -2.234 c
-12.428 -2.234 12.057 -2.073 11.774 -1.75 c
-11.499 -1.419 11.356 -0.977 11.348 -0.427 c
-h
-11.994 -0.368 m
-11.994 -0.772 12.072 -1.088 12.23 -1.324 c
-12.395 -1.559 12.616 -1.676 12.892 -1.676 c
-13.457 -1.676 13.752 -1.264 13.773 -0.441 c
-13.773 0.014 l
-13.773 0.415 13.689 0.735 13.523 0.97 c
-13.365 1.213 13.149 1.337 12.877 1.337 c
-12.612 1.337 12.395 1.213 12.23 0.97 c
-12.072 0.735 11.994 0.415 11.994 0.014 c
-h
-16.331 -1.176 m
-17.081 1.822 l
-17.742 1.822 l
-16.566 -2.161 l
-16.081 -2.161 l
-14.89 1.822 l
-15.552 1.822 l
-h
-19.8 -2.234 m
-19.3 -2.234 18.918 -2.087 18.653 -1.794 c
-18.389 -1.5 18.257 -1.066 18.257 -0.485 c
-18.257 -0.015 l
-18.257 0.58 18.381 1.047 18.639 1.381 c
-18.903 1.723 19.263 1.896 19.726 1.896 c
-20.185 1.896 20.528 1.741 20.756 1.44 c
-20.991 1.146 21.112 0.683 21.123 0.058 c
-21.123 -0.368 l
-18.903 -0.368 l
-18.903 -0.456 l
-18.903 -0.89 18.98 -1.202 19.138 -1.397 c
-19.304 -1.584 19.535 -1.676 19.829 -1.676 c
-20.025 -1.676 20.197 -1.643 20.343 -1.573 c
-20.491 -1.496 20.627 -1.378 20.756 -1.22 c
-21.093 -1.632 l
-20.807 -2.036 20.377 -2.234 19.8 -2.234 c
-19.726 1.337 m
-19.451 1.337 19.248 1.242 19.123 1.058 c
-18.995 0.87 18.922 0.58 18.903 0.191 c
-20.476 0.191 l
-20.476 0.278 l
-20.454 0.661 20.388 0.929 20.27 1.087 c
-20.152 1.253 19.969 1.337 19.726 1.337 c
-23.798 -2.161 m
-23.798 1.294 l
-23.283 1.294 l
-23.283 1.822 l
-23.798 1.822 l
-23.798 2.19 l
-23.805 2.62 23.919 2.954 24.137 3.189 c
-24.36 3.432 24.673 3.557 25.077 3.557 c
-25.224 3.557 25.363 3.534 25.503 3.498 c
-25.65 3.457 25.801 3.403 25.959 3.336 c
-25.841 2.763 l
-25.606 2.888 25.363 2.954 25.121 2.954 c
-24.875 2.954 24.702 2.884 24.607 2.748 c
-24.507 2.62 24.459 2.425 24.459 2.16 c
-24.459 1.822 l
-25.106 1.822 l
-25.106 1.294 l
-24.459 1.294 l
-24.459 -2.161 l
-h
-26.267 -2.161 -0.646 3.983 re
-28.017 -2.161 -0.647 5.644 re
-30.456 -2.234 m
-29.957 -2.234 29.575 -2.087 29.311 -1.794 c
-29.045 -1.5 28.914 -1.066 28.914 -0.485 c
-28.914 -0.015 l
-28.914 0.58 29.039 1.047 29.296 1.381 c
-29.56 1.723 29.92 1.896 30.383 1.896 c
-30.843 1.896 31.185 1.741 31.412 1.44 c
-31.647 1.146 31.769 0.683 31.78 0.058 c
-31.78 -0.368 l
-29.56 -0.368 l
-29.56 -0.456 l
-29.56 -0.89 29.637 -1.202 29.795 -1.397 c
-29.961 -1.584 30.192 -1.676 30.487 -1.676 c
-30.681 -1.676 30.853 -1.643 31.001 -1.573 c
-31.148 -1.496 31.283 -1.378 31.412 -1.22 c
-31.75 -1.632 l
-31.464 -2.036 31.034 -2.234 30.456 -2.234 c
-30.383 1.337 m
-30.107 1.337 29.905 1.242 29.781 1.058 c
-29.652 0.87 29.579 0.58 29.56 0.191 c
-31.133 0.191 l
-31.133 0.278 l
-31.111 0.661 31.044 0.929 30.927 1.087 c
-30.809 1.253 30.626 1.337 30.383 1.337 c
-34.572 -2.161 m
-34.572 1.294 l
-34.043 1.294 l
-34.043 1.822 l
-34.572 1.822 l
-34.572 2.278 l
-34.572 2.678 34.668 2.991 34.867 3.218 c
-35.073 3.443 35.351 3.557 35.705 3.557 c
-35.84 3.557 35.973 3.534 36.101 3.498 c
-36.072 2.954 l
-35.973 2.973 35.873 2.983 35.778 2.983 c
-35.403 2.983 35.219 2.719 35.219 2.19 c
-35.219 1.822 l
-35.896 1.822 l
-35.896 1.294 l
-35.219 1.294 l
-35.219 -2.161 l
-h
-38.306 1.205 m
-38.218 1.223 38.119 1.234 38.012 1.234 c
-37.678 1.234 37.442 1.051 37.307 0.69 c
-37.307 -2.161 l
-36.66 -2.161 l
-36.66 1.822 l
-37.292 1.822 l
-37.307 1.411 l
-37.483 1.734 37.726 1.896 38.042 1.896 c
-38.148 1.896 38.236 1.874 38.306 1.837 c
-h
-38.747 0.014 m
-38.747 0.592 38.883 1.047 39.158 1.381 c
-39.441 1.723 39.813 1.896 40.276 1.896 c
-40.735 1.896 41.103 1.727 41.378 1.396 c
-41.662 1.072 41.808 0.625 41.82 0.058 c
-41.82 -0.368 l
-41.82 -0.937 41.676 -1.393 41.393 -1.735 c
-41.117 -2.07 40.75 -2.234 40.29 -2.234 c
-39.827 -2.234 39.456 -2.073 39.173 -1.75 c
-38.898 -1.419 38.755 -0.977 38.747 -0.427 c
-h
-39.393 -0.368 m
-39.393 -0.772 39.471 -1.088 39.629 -1.324 c
-39.794 -1.559 40.015 -1.676 40.29 -1.676 c
-40.856 -1.676 41.151 -1.264 41.172 -0.441 c
-41.172 0.014 l
-41.172 0.415 41.088 0.735 40.922 0.97 c
-40.764 1.213 40.548 1.337 40.276 1.337 c
-40.012 1.337 39.794 1.213 39.629 0.97 c
-39.471 0.735 39.393 0.415 39.393 0.014 c
-h
-43.274 1.822 m
-43.289 1.454 l
-43.532 1.749 43.852 1.896 44.245 1.896 c
-44.685 1.896 44.994 1.697 45.171 1.308 c
-45.424 1.697 45.774 1.896 46.214 1.896 c
-46.949 1.896 47.324 1.433 47.346 0.514 c
-47.346 -2.161 l
-46.699 -2.161 l
-46.699 0.455 l
-46.699 0.749 46.644 0.962 46.537 1.102 c
-46.439 1.238 46.266 1.308 46.023 1.308 c
-45.824 1.308 45.663 1.227 45.538 1.072 c
-45.421 0.926 45.35 0.735 45.332 0.5 c
-45.332 -2.161 l
-44.671 -2.161 l
-44.671 0.484 l
-44.671 1.032 44.45 1.308 44.01 1.308 c
-43.675 1.308 43.44 1.146 43.304 0.823 c
-43.304 -2.161 l
-42.657 -2.161 l
-42.657 1.822 l
-h
-f
-Q
-q 1 0 0 1 371.7877 176.751 cm
-0 0 m
-0.353 2.234 l
-1.352 2.234 l
-0.529 -1.749 l
--0.339 -1.749 l
--0.897 0.559 l
--1.455 -1.749 l
--2.323 -1.749 l
--3.146 2.234 l
--2.147 2.234 l
--1.794 0 l
--1.264 2.234 l
--0.53 2.234 l
-h
-1.749 0.368 m
-1.749 0.974 1.888 1.448 2.175 1.793 c
-2.458 2.135 2.851 2.308 3.351 2.308 c
-3.858 2.308 4.255 2.135 4.542 1.793 c
-4.825 1.448 4.968 0.974 4.968 0.368 c
-4.968 0.103 l
-4.968 -0.496 4.825 -0.966 4.542 -1.309 c
-4.255 -1.654 3.858 -1.822 3.351 -1.822 c
-2.84 -1.822 2.443 -1.654 2.161 -1.309 c
-1.885 -0.966 1.749 -0.492 1.749 0.118 c
-h
-2.792 0.103 m
-2.792 -0.603 2.977 -0.956 3.351 -0.956 c
-3.704 -0.956 3.895 -0.661 3.924 -0.073 c
-3.924 0.368 l
-3.924 0.728 3.873 1 3.777 1.176 c
-3.678 1.353 3.534 1.44 3.351 1.44 c
-3.175 1.44 3.035 1.353 2.94 1.176 c
-2.84 1 2.792 0.728 2.792 0.368 c
-h
-7.57 1.22 m
-7.231 1.249 l
-6.945 1.249 6.754 1.124 6.659 0.882 c
-6.659 -1.749 l
-5.614 -1.749 l
-5.614 2.234 l
-6.585 2.234 l
-6.614 1.793 l
-6.78 2.135 7.011 2.308 7.305 2.308 c
-7.422 2.308 7.515 2.286 7.584 2.249 c
-h
-9.437 -0.22 m
-9.157 -0.529 l
-9.157 -1.749 l
-8.114 -1.749 l
-8.114 3.896 l
-9.157 3.896 l
-9.157 0.852 l
-9.275 1.043 l
-9.995 2.234 l
-11.245 2.234 l
-10.083 0.588 l
-11.347 -1.749 l
-10.157 -1.749 l
-h
-12.803 -1.749 -1.043 3.983 re
-11.715 3.263 m
-11.715 3.418 11.763 3.547 11.862 3.645 c
-11.968 3.752 12.104 3.807 12.274 3.807 c
-12.45 3.807 12.586 3.752 12.685 3.645 c
-12.791 3.547 12.847 3.418 12.847 3.263 c
-12.847 3.094 12.791 2.959 12.685 2.851 c
-12.586 2.753 12.45 2.705 12.274 2.705 c
-12.104 2.705 11.968 2.753 11.862 2.851 c
-11.763 2.959 11.715 3.094 11.715 3.263 c
-14.566 2.234 m
-14.596 1.837 l
-14.831 2.15 15.133 2.308 15.507 2.308 c
-16.191 2.308 16.544 1.827 16.565 0.867 c
-16.565 -1.749 l
-15.522 -1.749 l
-15.522 0.794 l
-15.522 1.018 15.486 1.18 15.419 1.278 c
-15.349 1.374 15.232 1.426 15.066 1.426 c
-14.879 1.426 14.732 1.33 14.626 1.147 c
-14.626 -1.749 l
-13.581 -1.749 l
-13.581 2.234 l
-h
-17.183 0.368 m
-17.183 1.014 17.3 1.5 17.535 1.823 c
-17.771 2.146 18.102 2.308 18.535 2.308 c
-18.888 2.308 19.16 2.165 19.359 1.881 c
-19.403 2.234 l
-20.344 2.234 l
-20.344 -1.749 l
-20.344 -2.256 20.2 -2.645 19.916 -2.911 c
-19.63 -3.183 19.226 -3.322 18.697 -3.322 c
-18.469 -3.322 18.233 -3.278 17.992 -3.19 c
-17.756 -3.102 17.58 -2.988 17.462 -2.851 c
-17.815 -2.132 l
-17.911 -2.238 18.039 -2.323 18.197 -2.381 c
-18.351 -2.447 18.499 -2.484 18.638 -2.484 c
-18.873 -2.484 19.039 -2.425 19.137 -2.308 c
-19.245 -2.198 19.299 -2.021 19.299 -1.779 c
-19.299 -1.426 l
-19.101 -1.691 18.844 -1.822 18.52 -1.822 c
-18.098 -1.822 17.771 -1.661 17.535 -1.338 c
-17.308 -1.007 17.19 -0.536 17.183 0.073 c
-h
-18.227 0.103 m
-18.227 -0.272 18.274 -0.54 18.374 -0.706 c
-18.469 -0.875 18.624 -0.956 18.829 -0.956 c
-19.042 -0.956 19.201 -0.878 19.299 -0.721 c
-19.299 1.176 l
-19.189 1.341 19.035 1.426 18.829 1.426 c
-18.624 1.426 18.469 1.341 18.374 1.176 c
-18.274 1.007 18.227 0.738 18.227 0.368 c
-h
-22.695 0.368 m
-22.695 1.014 22.802 1.5 23.018 1.823 c
-23.243 2.146 23.566 2.308 23.989 2.308 c
-24.301 2.308 24.554 2.176 24.753 1.911 c
-24.753 3.896 l
-25.811 3.896 l
-25.811 -1.749 l
-24.855 -1.749 l
-24.812 -1.338 l
-24.595 -1.661 24.319 -1.822 23.989 -1.822 c
-23.577 -1.822 23.257 -1.668 23.033 -1.352 c
-22.817 -1.029 22.702 -0.559 22.695 0.059 c
-h
-23.739 0.103 m
-23.739 -0.29 23.775 -0.565 23.856 -0.721 c
-23.945 -0.878 24.091 -0.956 24.297 -0.956 c
-24.503 -0.956 24.654 -0.864 24.753 -0.676 c
-24.753 1.132 l
-24.654 1.326 24.503 1.426 24.297 1.426 c
-24.099 1.426 23.959 1.345 23.871 1.191 c
-23.783 1.043 23.739 0.771 23.739 0.382 c
-h
-27.663 -1.749 -1.043 3.983 re
-26.576 3.263 m
-26.576 3.418 26.623 3.547 26.723 3.645 c
-26.829 3.752 26.965 3.807 27.134 3.807 c
-27.311 3.807 27.446 3.752 27.546 3.645 c
-27.652 3.547 27.708 3.418 27.708 3.263 c
-27.708 3.094 27.652 2.959 27.546 2.851 c
-27.446 2.753 27.311 2.705 27.134 2.705 c
-26.965 2.705 26.829 2.753 26.723 2.851 c
-26.623 2.959 26.576 3.094 26.576 3.263 c
-30.426 1.22 m
-30.089 1.249 l
-29.802 1.249 29.611 1.124 29.516 0.882 c
-29.516 -1.749 l
-28.471 -1.749 l
-28.471 2.234 l
-29.442 2.234 l
-29.471 1.793 l
-29.637 2.135 29.868 2.308 30.162 2.308 c
-30.28 2.308 30.372 2.286 30.441 2.249 c
-h
-32.5 -1.822 m
-31.97 -1.822 31.551 -1.668 31.25 -1.352 c
-30.956 -1.029 30.809 -0.569 30.809 0.029 c
-30.809 0.338 l
-30.809 0.963 30.945 1.448 31.22 1.793 c
-31.492 2.135 31.885 2.308 32.396 2.308 c
-32.896 2.308 33.267 2.146 33.514 1.823 c
-33.767 1.5 33.9 1.022 33.911 0.397 c
-33.911 -0.103 l
-31.837 -0.103 l
-31.856 -0.397 31.918 -0.613 32.029 -0.75 c
-32.146 -0.889 32.327 -0.956 32.573 -0.956 c
-32.915 -0.956 33.205 -0.838 33.44 -0.603 c
-33.852 -1.234 l
-33.723 -1.411 33.535 -1.554 33.293 -1.661 c
-33.047 -1.768 32.782 -1.822 32.5 -1.822 c
-31.853 0.617 m
-32.882 0.617 l
-32.882 0.721 l
-32.882 0.956 32.841 1.132 32.764 1.249 c
-32.694 1.374 32.566 1.44 32.381 1.44 c
-32.205 1.44 32.073 1.371 31.985 1.235 c
-31.904 1.106 31.86 0.9 31.853 0.617 c
-35.939 -0.956 m
-36.233 -0.956 36.383 -0.76 36.394 -0.368 c
-37.364 -0.368 l
-37.364 -0.801 37.233 -1.153 36.968 -1.426 c
-36.703 -1.691 36.365 -1.822 35.953 -1.822 c
-35.442 -1.822 35.049 -1.668 34.777 -1.352 c
-34.513 -1.029 34.374 -0.559 34.366 0.059 c
-34.366 0.382 l
-34.366 1.007 34.498 1.484 34.763 1.808 c
-35.035 2.139 35.432 2.308 35.953 2.308 c
-36.383 2.308 36.726 2.168 36.982 1.897 c
-37.236 1.621 37.364 1.239 37.364 0.75 c
-36.394 0.75 l
-36.394 0.963 36.354 1.132 36.277 1.249 c
-36.207 1.374 36.09 1.44 35.924 1.44 c
-35.748 1.44 35.619 1.374 35.542 1.249 c
-35.461 1.121 35.417 0.871 35.409 0.5 c
-35.409 0.088 l
-35.409 -0.235 35.424 -0.463 35.454 -0.588 c
-35.49 -0.717 35.546 -0.808 35.615 -0.867 c
-35.693 -0.926 35.799 -0.956 35.939 -0.956 c
-39.172 3.204 m
-39.172 2.234 l
-39.702 2.234 l
-39.702 1.44 l
-39.172 1.44 l
-39.172 -0.529 l
-39.172 -0.687 39.191 -0.794 39.232 -0.852 c
-39.28 -0.912 39.363 -0.941 39.481 -0.941 c
-39.588 -0.941 39.672 -0.933 39.731 -0.912 c
-39.731 -1.72 l
-39.555 -1.786 39.363 -1.822 39.158 -1.822 c
-38.482 -1.822 38.137 -1.437 38.129 -0.661 c
-38.129 1.44 l
-37.674 1.44 l
-37.674 2.234 l
-38.129 2.234 l
-38.129 3.204 l
-h
-40.055 0.368 m
-40.055 0.974 40.194 1.448 40.481 1.793 c
-40.764 2.135 41.157 2.308 41.657 2.308 c
-42.164 2.308 42.561 2.135 42.848 1.793 c
-43.13 1.448 43.274 0.974 43.274 0.368 c
-43.274 0.103 l
-43.274 -0.496 43.13 -0.966 42.848 -1.309 c
-42.561 -1.654 42.164 -1.822 41.657 -1.822 c
-41.146 -1.822 40.749 -1.654 40.466 -1.309 c
-40.19 -0.966 40.055 -0.492 40.055 0.118 c
-h
-41.098 0.103 m
-41.098 -0.603 41.282 -0.956 41.657 -0.956 c
-42.01 -0.956 42.201 -0.661 42.23 -0.073 c
-42.23 0.368 l
-42.23 0.728 42.179 1 42.083 1.176 c
-41.984 1.353 41.84 1.44 41.657 1.44 c
-41.48 1.44 41.341 1.353 41.245 1.176 c
-41.146 1 41.098 0.728 41.098 0.368 c
-h
-45.875 1.22 m
-45.537 1.249 l
-45.251 1.249 45.06 1.124 44.965 0.882 c
-44.965 -1.749 l
-43.92 -1.749 l
-43.92 2.234 l
-44.89 2.234 l
-44.92 1.793 l
-45.085 2.135 45.316 2.308 45.611 2.308 c
-45.728 2.308 45.821 2.286 45.89 2.249 c
-h
-47.772 -0.015 m
-48.3 2.234 l
-49.403 2.234 l
-48.095 -2.352 l
-47.897 -3.017 47.529 -3.351 46.993 -3.351 c
-46.864 -3.351 46.721 -3.329 46.567 -3.293 c
-46.567 -2.469 l
-46.684 -2.484 l
-46.849 -2.484 46.97 -2.447 47.051 -2.381 c
-47.128 -2.323 47.191 -2.212 47.242 -2.057 c
-47.316 -1.793 l
-46.17 2.234 l
-47.286 2.234 l
-h
-f
-Q
-q 1 0 0 1 425.5124 175.0022 cm
-0 0 m
--0.04 0.087 -0.066 0.235 -0.073 0.44 c
--0.309 0.095 -0.603 -0.073 -0.956 -0.073 c
--1.319 -0.073 -1.602 0.022 -1.808 0.22 c
--2.007 0.426 -2.102 0.713 -2.102 1.087 c
--2.102 1.488 -1.966 1.808 -1.691 2.043 c
--1.419 2.285 -1.043 2.41 -0.573 2.41 c
--0.088 2.41 l
--0.088 2.836 l
--0.088 3.072 -0.143 3.237 -0.25 3.337 c
--0.36 3.443 -0.522 3.498 -0.735 3.498 c
--0.933 3.498 -1.095 3.439 -1.22 3.322 c
--1.338 3.204 -1.396 3.057 -1.396 2.881 c
--2.043 2.881 l
--2.043 3.075 -1.984 3.266 -1.866 3.454 c
--1.742 3.638 -1.58 3.785 -1.382 3.895 c
--1.176 4.002 -0.948 4.056 -0.691 4.056 c
--0.291 4.056 0.015 3.954 0.22 3.748 c
-0.434 3.542 0.548 3.248 0.559 2.866 c
-0.559 0.852 l
-0.559 0.548 0.595 0.283 0.676 0.058 c
-0.676 0 l
-h
--0.867 0.515 m
--0.702 0.515 -0.551 0.558 -0.412 0.646 c
--0.264 0.735 -0.158 0.845 -0.088 0.985 c
--0.088 1.926 l
--0.455 1.926 l
--0.771 1.926 -1.014 1.855 -1.191 1.72 c
--1.367 1.591 -1.455 1.404 -1.455 1.161 c
--1.455 0.933 -1.411 0.768 -1.323 0.661 c
--1.234 0.562 -1.084 0.515 -0.867 0.515 c
-2.175 3.983 m
-2.19 3.542 l
-2.444 3.884 2.767 4.056 3.16 4.056 c
-3.866 4.056 4.222 3.586 4.233 2.645 c
-4.233 0 l
-3.586 0 l
-3.586 2.616 l
-3.586 2.929 3.532 3.149 3.425 3.278 c
-3.314 3.403 3.16 3.468 2.955 3.468 c
-2.797 3.468 2.649 3.414 2.514 3.307 c
-2.385 3.197 2.282 3.061 2.205 2.896 c
-2.205 0 l
-1.558 0 l
-1.558 3.983 l
-h
-5.072 2.175 m
-5.072 2.782 5.182 3.248 5.409 3.572 c
-5.644 3.895 5.972 4.056 6.394 4.056 c
-6.776 4.056 7.074 3.898 7.291 3.586 c
-7.291 5.644 l
-7.938 5.644 l
-7.938 0 l
-7.349 0 l
-7.306 0.426 l
-7.1 0.091 6.795 -0.073 6.394 -0.073 c
-5.982 -0.073 5.659 0.081 5.424 0.397 c
-5.189 0.72 5.072 1.176 5.072 1.764 c
-h
-5.718 1.793 m
-5.718 1.352 5.781 1.022 5.909 0.808 c
-6.045 0.602 6.265 0.5 6.57 0.5 c
-6.894 0.5 7.133 0.661 7.291 0.985 c
-7.291 2.998 l
-7.121 3.31 6.882 3.468 6.57 3.468 c
-6.265 3.468 6.045 3.366 5.909 3.16 c
-5.781 2.954 5.718 2.631 5.718 2.19 c
-h
-12.7 0 m
-12.66 0.087 12.634 0.235 12.627 0.44 c
-12.391 0.095 12.097 -0.073 11.744 -0.073 c
-11.381 -0.073 11.098 0.022 10.892 0.22 c
-10.693 0.426 10.598 0.713 10.598 1.087 c
-10.598 1.488 10.734 1.808 11.009 2.043 c
-11.281 2.285 11.657 2.41 12.127 2.41 c
-12.612 2.41 l
-12.612 2.836 l
-12.612 3.072 12.557 3.237 12.45 3.337 c
-12.34 3.443 12.178 3.498 11.965 3.498 c
-11.767 3.498 11.605 3.439 11.48 3.322 c
-11.362 3.204 11.304 3.057 11.304 2.881 c
-10.657 2.881 l
-10.657 3.075 10.716 3.266 10.834 3.454 c
-10.958 3.638 11.12 3.785 11.318 3.895 c
-11.524 4.002 11.752 4.056 12.009 4.056 c
-12.409 4.056 12.715 3.954 12.92 3.748 c
-13.134 3.542 13.247 3.248 13.259 2.866 c
-13.259 0.852 l
-13.259 0.548 13.295 0.283 13.376 0.058 c
-13.376 0 l
-h
-11.833 0.515 m
-11.998 0.515 12.149 0.558 12.288 0.646 c
-12.436 0.735 12.542 0.845 12.612 0.985 c
-12.612 1.926 l
-12.245 1.926 l
-11.929 1.926 11.686 1.855 11.509 1.72 c
-11.333 1.591 11.245 1.404 11.245 1.161 c
-11.245 0.933 11.289 0.768 11.377 0.661 c
-11.466 0.562 11.616 0.515 11.833 0.515 c
-14.126 2.175 m
-14.126 2.782 14.236 3.248 14.464 3.572 c
-14.699 3.895 15.026 4.056 15.449 4.056 c
-15.831 4.056 16.129 3.898 16.345 3.586 c
-16.345 5.644 l
-16.992 5.644 l
-16.992 0 l
-16.405 0 l
-16.36 0.426 l
-16.154 0.091 15.85 -0.073 15.449 -0.073 c
-15.037 -0.073 14.714 0.081 14.479 0.397 c
-14.244 0.72 14.126 1.176 14.126 1.764 c
-h
-14.772 1.793 m
-14.772 1.352 14.835 1.022 14.963 0.808 c
-15.1 0.602 15.32 0.5 15.625 0.5 c
-15.948 0.5 16.187 0.661 16.345 0.985 c
-16.345 2.998 l
-16.176 3.31 15.937 3.468 15.625 3.468 c
-15.32 3.468 15.1 3.366 14.963 3.16 c
-14.835 2.954 14.772 2.631 14.772 2.19 c
-h
-17.859 2.175 m
-17.859 2.782 17.97 3.248 18.198 3.572 c
-18.433 3.895 18.759 4.056 19.183 4.056 c
-19.565 4.056 19.862 3.898 20.079 3.586 c
-20.079 5.644 l
-20.725 5.644 l
-20.725 0 l
-20.137 0 l
-20.093 0.426 l
-19.888 0.091 19.582 -0.073 19.183 -0.073 c
-18.771 -0.073 18.447 0.081 18.212 0.397 c
-17.977 0.72 17.859 1.176 17.859 1.764 c
-h
-18.506 1.793 m
-18.506 1.352 18.568 1.022 18.697 0.808 c
-18.834 0.602 19.054 0.5 19.359 0.5 c
-19.682 0.5 19.921 0.661 20.079 0.985 c
-20.079 2.998 l
-19.91 3.31 19.671 3.468 19.359 3.468 c
-19.054 3.468 18.834 3.366 18.697 3.16 c
-18.568 2.954 18.506 2.631 18.506 2.19 c
-h
-23.312 2.175 m
-23.312 2.782 23.423 3.248 23.651 3.572 c
-23.886 3.895 24.213 4.056 24.636 4.056 c
-25.018 4.056 25.315 3.898 25.533 3.586 c
-25.533 5.644 l
-26.179 5.644 l
-26.179 0 l
-25.591 0 l
-25.547 0.426 l
-25.342 0.091 25.036 -0.073 24.636 -0.073 c
-24.224 -0.073 23.9 0.081 23.665 0.397 c
-23.43 0.72 23.312 1.176 23.312 1.764 c
-h
-23.96 1.793 m
-23.96 1.352 24.022 1.022 24.151 0.808 c
-24.286 0.602 24.507 0.5 24.812 0.5 c
-25.136 0.5 25.375 0.661 25.533 0.985 c
-25.533 2.998 l
-25.363 3.31 25.124 3.468 24.812 3.468 c
-24.507 3.468 24.286 3.366 24.151 3.16 c
-24.022 2.954 23.96 2.631 23.96 2.19 c
-h
-28.604 -0.073 m
-28.105 -0.073 27.723 0.073 27.458 0.367 c
-27.193 0.661 27.061 1.095 27.061 1.675 c
-27.061 2.146 l
-27.061 2.741 27.185 3.208 27.443 3.542 c
-27.708 3.884 28.068 4.056 28.531 4.056 c
-28.99 4.056 29.332 3.902 29.56 3.601 c
-29.795 3.307 29.916 2.844 29.927 2.219 c
-29.927 1.793 l
-27.708 1.793 l
-27.708 1.705 l
-27.708 1.271 27.785 0.959 27.943 0.764 c
-28.108 0.577 28.34 0.484 28.634 0.484 c
-28.829 0.484 29.001 0.518 29.148 0.588 c
-29.296 0.665 29.431 0.783 29.56 0.941 c
-29.898 0.529 l
-29.612 0.125 29.182 -0.073 28.604 -0.073 c
-28.531 3.498 m
-28.255 3.498 28.053 3.403 27.929 3.219 c
-27.8 3.031 27.726 2.741 27.708 2.352 c
-29.281 2.352 l
-29.281 2.439 l
-29.259 2.822 29.192 3.09 29.074 3.248 c
-28.957 3.414 28.773 3.498 28.531 3.498 c
-31.412 0 -0.647 5.644 re
-33.852 -0.073 m
-33.352 -0.073 32.97 0.073 32.706 0.367 c
-32.44 0.661 32.309 1.095 32.309 1.675 c
-32.309 2.146 l
-32.309 2.741 32.434 3.208 32.691 3.542 c
-32.955 3.884 33.315 4.056 33.778 4.056 c
-34.238 4.056 34.58 3.902 34.807 3.601 c
-35.043 3.307 35.164 2.844 35.175 2.219 c
-35.175 1.793 l
-32.955 1.793 l
-32.955 1.705 l
-32.955 1.271 33.032 0.959 33.19 0.764 c
-33.356 0.577 33.587 0.484 33.882 0.484 c
-34.076 0.484 34.249 0.518 34.395 0.588 c
-34.543 0.665 34.678 0.783 34.807 0.941 c
-35.145 0.529 l
-34.859 0.125 34.429 -0.073 33.852 -0.073 c
-33.778 3.498 m
-33.503 3.498 33.3 3.403 33.176 3.219 c
-33.047 3.031 32.974 2.741 32.955 2.352 c
-34.528 2.352 l
-34.528 2.439 l
-34.506 2.822 34.44 3.09 34.322 3.248 c
-34.204 3.414 34.021 3.498 33.778 3.498 c
-36.806 4.939 m
-36.806 3.983 l
-37.409 3.983 l
-37.409 3.454 l
-36.806 3.454 l
-36.806 0.985 l
-36.806 0.827 36.828 0.709 36.88 0.632 c
-36.939 0.551 37.027 0.515 37.144 0.515 c
-37.233 0.515 37.321 0.529 37.409 0.558 c
-37.409 0 l
-37.262 -0.048 37.107 -0.073 36.953 -0.073 c
-36.696 -0.073 36.502 0.018 36.365 0.205 c
-36.226 0.389 36.16 0.65 36.16 0.985 c
-36.16 3.454 l
-35.557 3.454 l
-35.557 3.983 l
-36.16 3.983 l
-36.16 4.939 l
-h
-38.879 0 -0.646 3.983 re
-38.923 5.026 m
-38.923 4.916 38.894 4.825 38.835 4.748 c
-38.776 4.677 38.68 4.644 38.555 4.644 c
-38.438 4.644 38.343 4.677 38.277 4.748 c
-38.218 4.825 38.188 4.916 38.188 5.026 c
-38.188 5.144 38.218 5.236 38.277 5.306 c
-38.343 5.383 38.438 5.423 38.555 5.423 c
-38.68 5.423 38.776 5.383 38.835 5.306 c
-38.894 5.225 38.923 5.134 38.923 5.026 c
-39.761 2.175 m
-39.761 2.753 39.897 3.208 40.172 3.542 c
-40.456 3.884 40.826 4.056 41.29 4.056 c
-41.749 4.056 42.117 3.888 42.392 3.557 c
-42.675 3.233 42.822 2.786 42.833 2.219 c
-42.833 1.793 l
-42.833 1.224 42.69 0.768 42.407 0.426 c
-42.131 0.091 41.764 -0.073 41.304 -0.073 c
-40.841 -0.073 40.471 0.087 40.187 0.411 c
-39.912 0.742 39.768 1.183 39.761 1.734 c
-h
-40.408 1.793 m
-40.408 1.389 40.485 1.072 40.643 0.837 c
-40.808 0.602 41.028 0.484 41.304 0.484 c
-41.87 0.484 42.164 0.897 42.186 1.72 c
-42.186 2.175 l
-42.186 2.576 42.102 2.896 41.936 3.131 c
-41.778 3.373 41.562 3.498 41.29 3.498 c
-41.025 3.498 40.808 3.373 40.643 3.131 c
-40.485 2.896 40.408 2.576 40.408 2.175 c
-h
-44.288 3.983 m
-44.303 3.542 l
-44.556 3.884 44.88 4.056 45.273 4.056 c
-45.979 4.056 46.335 3.586 46.346 2.645 c
-46.346 0 l
-45.699 0 l
-45.699 2.616 l
-45.699 2.929 45.645 3.149 45.537 3.278 c
-45.427 3.403 45.273 3.468 45.067 3.468 c
-44.909 3.468 44.762 3.414 44.627 3.307 c
-44.498 3.197 44.394 3.061 44.317 2.896 c
-44.317 0 l
-43.671 0 l
-43.671 3.983 l
-h
-49.888 4.939 m
-49.888 3.983 l
-50.491 3.983 l
-50.491 3.454 l
-49.888 3.454 l
-49.888 0.985 l
-49.888 0.827 49.911 0.709 49.962 0.632 c
-50.021 0.551 50.109 0.515 50.227 0.515 c
-50.315 0.515 50.403 0.529 50.491 0.558 c
-50.491 0 l
-50.345 -0.048 50.19 -0.073 50.036 -0.073 c
-49.778 -0.073 49.584 0.018 49.447 0.205 c
-49.308 0.389 49.242 0.65 49.242 0.985 c
-49.242 3.454 l
-48.639 3.454 l
-48.639 3.983 l
-49.242 3.983 l
-49.242 4.939 l
-h
-51.05 2.175 m
-51.05 2.753 51.186 3.208 51.461 3.542 c
-51.744 3.884 52.115 4.056 52.579 4.056 c
-53.038 4.056 53.406 3.888 53.68 3.557 c
-53.964 3.233 54.111 2.786 54.122 2.219 c
-54.122 1.793 l
-54.122 1.224 53.979 0.768 53.696 0.426 c
-53.42 0.091 53.053 -0.073 52.593 -0.073 c
-52.13 -0.073 51.759 0.087 51.476 0.411 c
-51.201 0.742 51.057 1.183 51.05 1.734 c
-h
-51.696 1.793 m
-51.696 1.389 51.774 1.072 51.932 0.837 c
-52.097 0.602 52.317 0.484 52.593 0.484 c
-53.159 0.484 53.453 0.897 53.475 1.72 c
-53.475 2.175 l
-53.475 2.576 53.391 2.896 53.225 3.131 c
-53.067 3.373 52.851 3.498 52.579 3.498 c
-52.314 3.498 52.097 3.373 51.932 3.131 c
-51.774 2.896 51.696 2.576 51.696 2.175 c
-h
-f
-Q
-q 1 0 0 1 483.8532 176.0746 cm
-0 0 m
-0 0.088 -0.044 0.166 -0.133 0.235 c
--0.221 0.312 -0.408 0.416 -0.691 0.544 c
--1.125 0.721 -1.422 0.9 -1.588 1.088 c
--1.746 1.272 -1.823 1.503 -1.823 1.779 c
--1.823 2.12 -1.702 2.404 -1.455 2.631 c
--1.202 2.866 -0.864 2.984 -0.441 2.984 c
--0.011 2.984 0.338 2.87 0.602 2.646 c
-0.867 2.419 0.999 2.117 0.999 1.735 c
--0.044 1.735 l
--0.044 2.058 -0.184 2.22 -0.456 2.22 c
--0.566 2.22 -0.655 2.183 -0.721 2.117 c
--0.79 2.047 -0.823 1.948 -0.823 1.823 c
--0.823 1.735 -0.786 1.654 -0.706 1.588 c
--0.628 1.529 -0.449 1.434 -0.162 1.309 c
-0.268 1.151 0.565 0.975 0.735 0.779 c
-0.911 0.592 0.999 0.342 0.999 0.03 c
-0.999 -0.323 0.867 -0.61 0.602 -0.823 c
-0.338 -1.04 -0.011 -1.146 -0.441 -1.146 c
--0.736 -1.146 -0.996 -1.091 -1.22 -0.985 c
--1.448 -0.867 -1.625 -0.706 -1.75 -0.5 c
--1.867 -0.294 -1.926 -0.073 -1.926 0.162 c
--0.941 0.162 l
--0.941 -0.025 -0.904 -0.162 -0.823 -0.249 c
--0.736 -0.338 -0.603 -0.382 -0.427 -0.382 c
--0.144 -0.382 0 -0.257 0 0 c
-2.866 3.881 m
-2.866 2.911 l
-3.395 2.911 l
-3.395 2.117 l
-2.866 2.117 l
-2.866 0.148 l
-2.866 -0.01 2.884 -0.118 2.925 -0.176 c
-2.973 -0.235 3.057 -0.264 3.175 -0.264 c
-3.281 -0.264 3.366 -0.257 3.424 -0.235 c
-3.424 -1.043 l
-3.248 -1.109 3.057 -1.146 2.851 -1.146 c
-2.175 -1.146 1.83 -0.76 1.822 0.015 c
-1.822 2.117 l
-1.367 2.117 l
-1.367 2.911 l
-1.822 2.911 l
-1.822 3.881 l
-h
-5.85 -1.072 m
-5.82 -1.014 5.791 -0.911 5.762 -0.764 c
-5.574 -1.022 5.325 -1.146 5.012 -1.146 c
-4.677 -1.146 4.398 -1.04 4.174 -0.823 c
-3.958 -0.598 3.85 -0.309 3.85 0.044 c
-3.85 0.456 3.983 0.772 4.247 1 c
-4.512 1.235 4.895 1.353 5.394 1.353 c
-5.718 1.353 l
-5.718 1.676 l
-5.718 1.852 5.681 1.974 5.614 2.043 c
-5.556 2.12 5.468 2.161 5.35 2.161 c
-5.093 2.161 4.968 2.007 4.968 1.706 c
-3.925 1.706 l
-3.925 2.076 4.06 2.382 4.336 2.617 c
-4.608 2.859 4.957 2.984 5.379 2.984 c
-5.82 2.984 6.158 2.866 6.393 2.631 c
-6.636 2.404 6.761 2.08 6.761 1.661 c
-6.761 -0.205 l
-6.761 -0.551 6.809 -0.819 6.908 -1.014 c
-6.908 -1.072 l
-h
-5.247 -0.323 m
-5.354 -0.323 5.446 -0.305 5.527 -0.264 c
-5.614 -0.216 5.677 -0.158 5.718 -0.087 c
-5.718 0.736 l
-5.468 0.736 l
-5.292 0.736 5.148 0.676 5.041 0.559 c
-4.943 0.449 4.895 0.302 4.895 0.118 c
-4.895 -0.176 5.012 -0.323 5.247 -0.323 c
-7.378 1.044 m
-7.378 1.691 7.496 2.176 7.731 2.5 c
-7.966 2.822 8.297 2.984 8.731 2.984 c
-9.084 2.984 9.356 2.841 9.554 2.558 c
-9.598 2.911 l
-10.539 2.911 l
-10.539 -1.072 l
-10.539 -1.579 10.395 -1.969 10.113 -2.234 c
-9.826 -2.506 9.422 -2.645 8.893 -2.645 c
-8.665 -2.645 8.43 -2.601 8.187 -2.514 c
-7.952 -2.425 7.775 -2.311 7.658 -2.175 c
-8.01 -1.455 l
-8.106 -1.562 8.235 -1.646 8.393 -1.705 c
-8.548 -1.77 8.694 -1.808 8.834 -1.808 c
-9.069 -1.808 9.234 -1.749 9.334 -1.631 c
-9.44 -1.521 9.495 -1.344 9.495 -1.103 c
-9.495 -0.75 l
-9.296 -1.014 9.04 -1.146 8.716 -1.146 c
-8.294 -1.146 7.966 -0.985 7.731 -0.661 c
-7.503 -0.33 7.386 0.14 7.378 0.75 c
-h
-8.422 0.779 m
-8.422 0.405 8.47 0.136 8.569 -0.029 c
-8.665 -0.198 8.819 -0.279 9.025 -0.279 c
-9.238 -0.279 9.396 -0.201 9.495 -0.044 c
-9.495 1.852 l
-9.385 2.018 9.231 2.103 9.025 2.103 c
-8.819 2.103 8.665 2.018 8.569 1.852 c
-8.47 1.683 8.422 1.415 8.422 1.044 c
-h
-12.391 -1.072 -1.044 3.983 re
-11.303 3.94 m
-11.303 4.094 11.351 4.223 11.451 4.322 c
-11.557 4.428 11.692 4.484 11.862 4.484 c
-12.038 4.484 12.174 4.428 12.273 4.322 c
-12.38 4.223 12.435 4.094 12.435 3.94 c
-12.435 3.77 12.38 3.635 12.273 3.528 c
-12.174 3.429 12.038 3.381 11.862 3.381 c
-11.692 3.381 11.557 3.429 11.451 3.528 c
-11.351 3.635 11.303 3.77 11.303 3.94 c
-14.154 2.911 m
-14.184 2.514 l
-14.42 2.826 14.721 2.984 15.095 2.984 c
-15.779 2.984 16.132 2.503 16.154 1.544 c
-16.154 -1.072 l
-15.11 -1.072 l
-15.11 1.47 l
-15.11 1.694 15.073 1.856 15.008 1.955 c
-14.938 2.051 14.82 2.103 14.655 2.103 c
-14.468 2.103 14.32 2.007 14.214 1.823 c
-14.214 -1.072 l
-13.17 -1.072 l
-13.17 2.911 l
-h
-16.772 1.044 m
-16.772 1.691 16.889 2.176 17.124 2.5 c
-17.359 2.822 17.69 2.984 18.123 2.984 c
-18.476 2.984 18.748 2.841 18.947 2.558 c
-18.991 2.911 l
-19.931 2.911 l
-19.931 -1.072 l
-19.931 -1.579 19.788 -1.969 19.505 -2.234 c
-19.218 -2.506 18.815 -2.645 18.285 -2.645 c
-18.057 -2.645 17.822 -2.601 17.58 -2.514 c
-17.344 -2.425 17.168 -2.311 17.051 -2.175 c
-17.404 -1.455 l
-17.499 -1.562 17.628 -1.646 17.786 -1.705 c
-17.94 -1.77 18.087 -1.808 18.227 -1.808 c
-18.462 -1.808 18.627 -1.749 18.726 -1.631 c
-18.833 -1.521 18.888 -1.344 18.888 -1.103 c
-18.888 -0.75 l
-18.69 -1.014 18.432 -1.146 18.109 -1.146 c
-17.686 -1.146 17.359 -0.985 17.124 -0.661 c
-16.897 -0.33 16.779 0.14 16.772 0.75 c
-h
-17.815 0.779 m
-17.815 0.405 17.863 0.136 17.962 -0.029 c
-18.057 -0.198 18.212 -0.279 18.418 -0.279 c
-18.63 -0.279 18.788 -0.201 18.888 -0.044 c
-18.888 1.852 l
-18.778 2.018 18.623 2.103 18.418 2.103 c
-18.212 2.103 18.057 2.018 17.962 1.852 c
-17.863 1.683 17.815 1.415 17.815 1.044 c
-h
-24.312 -1.072 m
-24.282 -1.014 24.253 -0.911 24.224 -0.764 c
-24.036 -1.022 23.787 -1.146 23.474 -1.146 c
-23.139 -1.146 22.86 -1.04 22.636 -0.823 c
-22.42 -0.598 22.312 -0.309 22.312 0.044 c
-22.312 0.456 22.445 0.772 22.709 1 c
-22.975 1.235 23.357 1.353 23.856 1.353 c
-24.18 1.353 l
-24.18 1.676 l
-24.18 1.852 24.143 1.974 24.076 2.043 c
-24.018 2.12 23.93 2.161 23.812 2.161 c
-23.555 2.161 23.43 2.007 23.43 1.706 c
-22.386 1.706 l
-22.386 2.076 22.522 2.382 22.798 2.617 c
-23.07 2.859 23.419 2.984 23.841 2.984 c
-24.282 2.984 24.621 2.866 24.856 2.631 c
-25.098 2.404 25.223 2.08 25.223 1.661 c
-25.223 -0.205 l
-25.223 -0.551 25.271 -0.819 25.37 -1.014 c
-25.37 -1.072 l
-h
-23.709 -0.323 m
-23.816 -0.323 23.908 -0.305 23.989 -0.264 c
-24.076 -0.216 24.139 -0.158 24.18 -0.087 c
-24.18 0.736 l
-23.93 0.736 l
-23.754 0.736 23.61 0.676 23.503 0.559 c
-23.405 0.449 23.357 0.302 23.357 0.118 c
-23.357 -0.176 23.474 -0.323 23.709 -0.323 c
-27.928 1.897 m
-27.59 1.926 l
-27.303 1.926 27.112 1.801 27.016 1.559 c
-27.016 -1.072 l
-25.973 -1.072 l
-25.973 2.911 l
-26.943 2.911 l
-26.973 2.469 l
-27.137 2.812 27.369 2.984 27.663 2.984 c
-27.781 2.984 27.873 2.962 27.943 2.926 c
-h
-30 -1.146 m
-29.471 -1.146 29.052 -0.992 28.751 -0.675 c
-28.457 -0.353 28.31 0.107 28.31 0.706 c
-28.31 1.014 l
-28.31 1.64 28.446 2.124 28.722 2.469 c
-28.994 2.812 29.387 2.984 29.898 2.984 c
-30.397 2.984 30.769 2.822 31.014 2.5 c
-31.268 2.176 31.401 1.698 31.411 1.073 c
-31.411 0.574 l
-29.339 0.574 l
-29.358 0.279 29.42 0.063 29.53 -0.073 c
-29.647 -0.213 29.828 -0.279 30.074 -0.279 c
-30.416 -0.279 30.706 -0.162 30.941 0.073 c
-31.353 -0.558 l
-31.224 -0.735 31.037 -0.878 30.794 -0.985 c
-30.548 -1.091 30.283 -1.146 30 -1.146 c
-29.354 1.294 m
-30.382 1.294 l
-30.382 1.397 l
-30.382 1.632 30.343 1.808 30.265 1.926 c
-30.195 2.051 30.067 2.117 29.883 2.117 c
-29.707 2.117 29.574 2.047 29.486 1.912 c
-29.405 1.783 29.361 1.577 29.354 1.294 c
-33.881 -1.072 m
-33.852 -1.014 33.822 -0.911 33.793 -0.764 c
-33.605 -1.022 33.356 -1.146 33.043 -1.146 c
-32.709 -1.146 32.429 -1.04 32.205 -0.823 c
-31.989 -0.598 31.882 -0.309 31.882 0.044 c
-31.882 0.456 32.014 0.772 32.279 1 c
-32.543 1.235 32.926 1.353 33.425 1.353 c
-33.749 1.353 l
-33.749 1.676 l
-33.749 1.852 33.712 1.974 33.646 2.043 c
-33.587 2.12 33.499 2.161 33.381 2.161 c
-33.124 2.161 32.999 2.007 32.999 1.706 c
-31.955 1.706 l
-31.955 2.076 32.091 2.382 32.367 2.617 c
-32.639 2.859 32.988 2.984 33.41 2.984 c
-33.852 2.984 34.189 2.866 34.424 2.631 c
-34.667 2.404 34.792 2.08 34.792 1.661 c
-34.792 -0.205 l
-34.792 -0.551 34.84 -0.819 34.939 -1.014 c
-34.939 -1.072 l
-h
-33.279 -0.323 m
-33.385 -0.323 33.477 -0.305 33.558 -0.264 c
-33.646 -0.216 33.709 -0.158 33.749 -0.087 c
-33.749 0.736 l
-33.499 0.736 l
-33.323 0.736 33.179 0.676 33.073 0.559 c
-32.973 0.449 32.926 0.302 32.926 0.118 c
-32.926 -0.176 33.043 -0.323 33.279 -0.323 c
-f
-Q
-q 1 0 0 1 519.5421 175.3549 cm
-0 0 m
-0 0.118 0.033 0.213 0.103 0.294 c
-0.169 0.371 0.272 0.411 0.412 0.411 c
-0.559 0.411 0.665 0.371 0.735 0.294 c
-0.812 0.213 0.852 0.118 0.852 0 c
-0.852 -0.11 0.812 -0.202 0.735 -0.279 c
-0.665 -0.357 0.559 -0.397 0.412 -0.397 c
-0.272 -0.397 0.169 -0.357 0.103 -0.279 c
-0.033 -0.202 0 -0.11 0 0 c
-f
-Q
-0.793 0.801 0.129 0.016 k
-535.667 282.996 238.665 -21.457 re
-f
-0 0 0 0 k
-q 1 0 0 1 629.4581 271.0489 cm
-0 0 m
-0.794 0 l
-0.794 -1.514 l
-0 -1.514 l
-0 -3.542 l
--1.823 -3.542 l
--1.823 -1.514 l
--4.924 -1.514 l
--4.998 -0.338 l
--1.823 5.821 l
-0 5.821 l
-h
--3.234 0 m
--1.823 0 l
--1.823 3.132 l
--1.852 3.057 l
-h
-2.253 -2.616 m
-2.253 -2.322 2.348 -2.083 2.547 -1.896 c
-2.741 -1.712 2.995 -1.616 3.31 -1.616 c
-3.612 -1.616 3.862 -1.712 4.06 -1.896 c
-4.266 -2.083 4.37 -2.322 4.37 -2.616 c
-4.37 -2.921 4.266 -3.167 4.06 -3.351 c
-3.862 -3.528 3.612 -3.615 3.31 -3.615 c
-3.006 -3.615 2.753 -3.524 2.547 -3.336 c
-2.348 -3.152 2.253 -2.91 2.253 -2.616 c
-15.621 -2.484 m
-15.258 -2.877 14.813 -3.175 14.284 -3.38 c
-13.755 -3.575 13.174 -3.675 12.549 -3.675 c
-11.469 -3.675 10.631 -3.343 10.036 -2.675 c
-9.437 -2.009 9.132 -1.04 9.124 0.235 c
-9.124 1.926 l
-9.124 3.219 9.404 4.212 9.962 4.91 c
-10.528 5.604 11.351 5.954 12.432 5.954 c
-13.45 5.954 14.214 5.696 14.724 5.189 c
-15.243 4.69 15.54 3.903 15.621 2.837 c
-13.784 2.837 l
-13.733 3.433 13.612 3.84 13.417 4.057 c
-13.218 4.27 12.91 4.381 12.49 4.381 c
-11.979 4.381 11.609 4.193 11.374 3.822 c
-11.146 3.447 11.028 2.856 11.021 2.043 c
-11.021 0.339 l
-11.021 -0.514 11.146 -1.139 11.403 -1.529 c
-11.657 -1.911 12.072 -2.102 12.652 -2.102 c
-13.024 -2.102 13.328 -2.028 13.564 -1.882 c
-13.725 -1.764 l
-13.725 -0.043 l
-12.403 -0.043 l
-12.403 1.382 l
-15.621 1.382 l
-h
-19.179 -3.542 -1.896 9.363 re
-26.759 4.248 m
-24.438 4.248 l
-24.438 -3.542 l
-22.541 -3.542 l
-22.541 4.248 l
-20.263 4.248 l
-20.263 5.821 l
-26.759 5.821 l
-h
-30.769 -3.542 m
-30.769 5.821 l
-33.664 5.821 l
-34.642 5.821 35.388 5.601 35.899 5.16 c
-36.406 4.726 36.663 4.09 36.663 3.249 c
-36.663 2.779 36.552 2.371 36.34 2.029 c
-36.134 1.683 35.844 1.434 35.472 1.279 c
-35.891 1.151 36.215 0.904 36.442 0.545 c
-36.678 0.192 36.795 -0.257 36.795 -0.793 c
-36.795 -1.697 36.546 -2.381 36.045 -2.851 c
-35.546 -3.314 34.819 -3.542 33.87 -3.542 c
-h
-32.665 0.53 m
-32.665 -1.969 l
-33.87 -1.969 l
-34.212 -1.969 34.473 -1.866 34.649 -1.66 c
-34.825 -1.448 34.914 -1.146 34.914 -0.764 c
-34.914 0.077 34.605 0.507 33.988 0.53 c
-h
-32.665 1.912 m
-33.649 1.912 l
-34.385 1.912 34.752 2.293 34.752 3.057 c
-34.752 3.477 34.664 3.782 34.487 3.969 c
-34.318 4.152 34.046 4.248 33.664 4.248 c
-32.665 4.248 l
-h
-41.198 -0.118 m
-40.257 -0.118 l
-40.257 -3.542 l
-38.376 -3.542 l
-38.376 5.821 l
-41.389 5.821 l
-42.337 5.821 43.068 5.575 43.579 5.087 c
-44.097 4.594 44.358 3.899 44.358 2.999 c
-44.358 1.754 43.906 0.882 43.006 0.383 c
-44.637 -3.453 l
-44.637 -3.542 l
-42.609 -3.542 l
-h
-40.257 1.455 m
-41.33 1.455 l
-41.712 1.455 41.996 1.577 42.183 1.823 c
-42.366 2.076 42.462 2.415 42.462 2.837 c
-42.462 3.778 42.098 4.248 41.374 4.248 c
-40.257 4.248 l
-h
-50.345 -1.631 m
-47.772 -1.631 l
-47.272 -3.542 l
-45.273 -3.542 l
-48.198 5.821 l
-49.917 5.821 l
-52.872 -3.542 l
-50.844 -3.542 l
-h
-48.184 -0.043 m
-49.933 -0.043 l
-49.051 3.293 l
-h
-60.527 -3.542 m
-58.631 -3.542 l
-55.868 2.602 l
-55.868 -3.542 l
-53.971 -3.542 l
-53.971 5.821 l
-55.868 5.821 l
-58.631 -0.323 l
-58.631 5.821 l
-60.527 5.821 l
-h
-68.63 -0.426 m
-68.578 -1.495 68.277 -2.304 67.718 -2.851 c
-67.167 -3.403 66.395 -3.675 65.396 -3.675 c
-64.327 -3.675 63.507 -3.329 62.941 -2.63 c
-62.382 -1.936 62.104 -0.941 62.104 0.353 c
-62.104 1.926 l
-62.104 3.219 62.39 4.212 62.97 4.91 c
-63.558 5.604 64.371 5.954 65.411 5.954 c
-66.428 5.954 67.204 5.663 67.733 5.087 c
-68.262 4.516 68.564 3.697 68.645 2.631 c
-66.748 2.631 l
-66.727 3.296 66.623 3.753 66.44 3.998 c
-66.253 4.252 65.91 4.381 65.411 4.381 c
-64.911 4.381 64.551 4.204 64.338 3.851 c
-64.132 3.499 64.018 2.914 63.999 2.103 c
-63.999 0.339 l
-63.999 -0.595 64.103 -1.234 64.308 -1.587 c
-64.522 -1.932 64.886 -2.102 65.396 -2.102 c
-65.885 -2.102 66.223 -1.984 66.411 -1.749 c
-66.605 -1.506 66.712 -1.065 66.733 -0.426 c
-h
-76.578 -3.542 m
-74.697 -3.542 l
-74.697 0.47 l
-71.904 0.47 l
-71.904 -3.542 l
-70.008 -3.542 l
-70.008 5.821 l
-71.904 5.821 l
-71.904 2.029 l
-74.697 2.029 l
-74.697 5.821 l
-76.578 5.821 l
-h
-80.297 -3.542 -1.896 9.363 re
-88.547 -3.542 m
-86.651 -3.542 l
-83.888 2.602 l
-83.888 -3.542 l
-81.991 -3.542 l
-81.991 5.821 l
-83.888 5.821 l
-86.651 -0.323 l
-86.651 5.821 l
-88.547 5.821 l
-h
-96.665 -2.484 m
-96.301 -2.877 95.857 -3.175 95.327 -3.38 c
-94.797 -3.575 94.217 -3.675 93.592 -3.675 c
-92.512 -3.675 91.674 -3.343 91.079 -2.675 c
-90.48 -2.009 90.175 -1.04 90.168 0.235 c
-90.168 1.926 l
-90.168 3.219 90.447 4.212 91.005 4.91 c
-91.572 5.604 92.395 5.954 93.475 5.954 c
-94.493 5.954 95.257 5.696 95.768 5.189 c
-96.287 4.69 96.584 3.903 96.665 2.837 c
-94.827 2.837 l
-94.776 3.433 94.654 3.84 94.46 4.057 c
-94.261 4.27 93.953 4.381 93.534 4.381 c
-93.023 4.381 92.652 4.193 92.416 3.822 c
-92.189 3.447 92.071 2.856 92.064 2.043 c
-92.064 0.339 l
-92.064 -0.514 92.189 -1.139 92.445 -1.529 c
-92.699 -1.911 93.114 -2.102 93.696 -2.102 c
-94.066 -2.102 94.371 -2.028 94.606 -1.882 c
-94.768 -1.764 l
-94.768 -0.043 l
-93.445 -0.043 l
-93.445 1.382 l
-96.665 1.382 l
-h
-103.83 5.821 m
-105.609 -0.955 l
-107.358 5.821 l
-109.828 5.821 l
-109.828 -3.542 l
-107.931 -3.542 l
-107.931 -1.014 l
-108.108 2.897 l
-106.241 -3.542 l
-104.948 -3.542 l
-103.081 2.897 l
-103.257 -1.014 l
-103.257 -3.542 l
-101.361 -3.542 l
-101.361 5.821 l
-h
-118.225 0.294 m
-118.225 -0.962 117.924 -1.936 117.328 -2.63 c
-116.729 -3.329 115.906 -3.675 114.859 -3.675 c
-113.808 -3.675 112.981 -3.333 112.374 -2.645 c
-111.775 -1.951 111.47 -0.984 111.463 0.25 c
-111.463 1.852 l
-111.463 3.135 111.761 4.138 112.359 4.865 c
-112.955 5.59 113.785 5.954 114.844 5.954 c
-115.88 5.954 116.7 5.594 117.298 4.881 c
-117.905 4.175 118.213 3.179 118.225 1.897 c
-h
-116.328 1.867 m
-116.328 2.708 116.203 3.337 115.961 3.749 c
-115.726 4.16 115.351 4.366 114.844 4.366 c
-114.344 4.366 113.969 4.164 113.727 3.763 c
-113.492 3.37 113.367 2.771 113.359 1.97 c
-113.359 0.294 l
-113.359 -0.521 113.48 -1.124 113.727 -1.514 c
-113.969 -1.907 114.348 -2.102 114.859 -2.102 c
-115.347 -2.102 115.711 -1.911 115.946 -1.529 c
-116.189 -1.146 116.318 -0.558 116.328 0.235 c
-h
-119.801 -3.542 m
-119.801 5.821 l
-122.285 5.821 l
-123.373 5.821 124.24 5.472 124.887 4.778 c
-125.541 4.079 125.876 3.132 125.886 1.926 c
-125.886 0.412 l
-125.886 -0.823 125.563 -1.793 124.916 -2.499 c
-124.27 -3.197 123.373 -3.542 122.227 -3.542 c
-h
-121.697 4.248 m
-121.697 -1.969 l
-122.256 -1.969 l
-122.892 -1.969 123.336 -1.804 123.593 -1.469 c
-123.846 -1.139 123.979 -0.565 123.99 0.25 c
-123.99 1.867 l
-123.99 2.749 123.865 3.359 123.623 3.705 c
-123.387 4.046 122.976 4.227 122.388 4.248 c
-h
-132.284 0.515 m
-129.344 0.515 l
-129.344 -1.969 l
-132.828 -1.969 l
-132.828 -3.542 l
-127.449 -3.542 l
-127.449 5.821 l
-132.814 5.821 l
-132.814 4.248 l
-129.344 4.248 l
-129.344 2.029 l
-132.284 2.029 l
-h
-135.985 -1.969 m
-139.307 -1.969 l
-139.307 -3.542 l
-134.088 -3.542 l
-134.088 5.821 l
-135.985 5.821 l
-h
-f
-Q
-0.113 0.082 0.09 0 k
-535.667 252.694 238.665 -12.895 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 540.8555 245.8587 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.088 -0.5 c
--0.147 -0.646 -0.242 -0.775 -0.367 -0.881 c
--0.496 -0.992 -0.658 -1.08 -0.852 -1.147 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.358 -1.22 -2.543 -1.161 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.926 c
--3.127 -0.819 -3.23 -0.69 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.214 -3.484 -0.015 c
--2.66 0.133 l
--2.642 0.033 -2.616 -0.058 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.368 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.684 -1.992 0.691 -1.999 0.691 c
--2.167 0.727 -2.329 0.771 -2.484 0.823 c
--2.642 0.882 -2.786 0.96 -2.91 1.058 c
--3.039 1.154 -3.141 1.278 -3.218 1.426 c
--3.289 1.573 -3.322 1.756 -3.322 1.984 c
--3.322 2.179 -3.289 2.344 -3.218 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.837 c
--2.8 2.932 -2.645 3.002 -2.469 3.042 c
--2.293 3.09 -2.102 3.12 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.12 -1.128 3.09 -0.97 3.042 c
--0.804 2.992 -0.669 2.918 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.201 2.344 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.253 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.353 c
--1.294 1.312 -1.117 1.264 -0.941 1.205 c
--0.756 1.147 -0.595 1.066 -0.455 0.97 c
--0.319 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.454 c
--2.26 2.425 -2.318 2.385 -2.366 2.337 c
--2.406 2.296 -2.436 2.249 -2.454 2.19 c
--2.476 2.132 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.779 c
--2.41 1.72 -2.373 1.668 -2.322 1.631 c
--2.263 1.591 -2.2 1.558 -2.131 1.529 c
--2.065 1.5 -1.984 1.47 -1.896 1.44 c
-h
--0.837 -0.015 m
--0.837 0.092 -0.86 0.177 -0.897 0.235 c
--0.926 0.301 -0.977 0.357 -1.043 0.397 c
--1.102 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.53 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.529 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.015 c
-6.402 -2.66 m
-6.185 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.52 -2.484 5.403 -2.396 c
-5.285 -2.315 5.185 -2.219 5.108 -2.102 c
-5.039 -1.984 4.991 -1.856 4.961 -1.72 c
-5.858 -1.617 l
-5.895 -1.753 5.964 -1.86 6.064 -1.94 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.057 6.681 -2.028 c
-6.758 -1.999 6.828 -1.944 6.887 -1.866 c
-6.945 -1.797 6.99 -1.705 7.019 -1.587 c
-7.056 -1.469 7.078 -1.323 7.078 -1.147 c
-7.078 -0.956 l
-7.078 -0.889 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.073 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.214 -0.897 5.108 -0.75 c
-5.009 -0.595 4.935 -0.411 4.888 -0.206 c
-4.836 0.008 4.815 0.243 4.815 0.5 c
-4.815 0.771 4.836 1.018 4.888 1.235 c
-4.946 1.448 5.027 1.631 5.137 1.779 c
-5.245 1.933 5.376 2.051 5.534 2.132 c
-5.689 2.219 5.876 2.263 6.093 2.263 c
-6.189 2.263 6.288 2.253 6.387 2.234 c
-6.483 2.213 6.571 2.179 6.652 2.132 c
-6.739 2.08 6.817 2.018 6.887 1.941 c
-6.964 1.86 7.026 1.768 7.078 1.661 c
-7.092 1.661 l
-7.092 1.808 l
-7.1 1.866 7.107 1.918 7.107 1.97 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.13 2.165 7.14 2.198 7.151 2.219 c
-8.004 2.219 l
-7.992 2.138 7.982 2.028 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.161 l
-7.975 -1.415 7.938 -1.635 7.872 -1.822 c
-7.802 -2.007 7.699 -2.161 7.563 -2.278 c
-7.423 -2.404 7.258 -2.499 7.063 -2.558 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.53 m
-7.092 0.742 7.067 0.919 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.5 6.729 1.558 6.652 1.588 c
-6.571 1.625 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.226 1.621 6.137 1.573 c
-6.056 1.532 5.991 1.463 5.931 1.367 c
-5.88 1.278 5.835 1.161 5.799 1.014 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.338 c
-6.049 -0.515 6.211 -0.603 6.417 -0.603 c
-6.483 -0.603 6.556 -0.588 6.637 -0.559 c
-6.725 -0.522 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.176 7.019 -0.029 c
-7.067 0.118 7.092 0.301 7.092 0.53 c
-11.036 -0.646 m
-12.168 -0.646 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.646 l
-10.124 -0.646 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.219 l
-11.036 2.219 l
-h
-10.124 3.513 0.912 -0.675 re
-10.124 2.837 m
-13.6 1.602 m
-13.057 1.602 l
-13.057 2.219 l
-13.644 2.219 l
-13.924 3.117 l
-14.498 3.117 l
-14.498 2.219 l
-15.732 2.219 l
-15.732 1.602 l
-14.498 1.602 l
-14.498 -0.103 l
-14.498 -0.324 l
-14.504 -0.393 14.527 -0.455 14.556 -0.515 c
-14.593 -0.566 14.648 -0.61 14.718 -0.646 c
-14.795 -0.676 14.909 -0.69 15.056 -0.69 c
-15.192 -0.69 15.327 -0.687 15.468 -0.676 c
-15.603 -0.658 15.736 -0.632 15.865 -0.603 c
-15.865 -1.205 l
-15.784 -1.216 15.707 -1.231 15.629 -1.249 c
-15.549 -1.261 15.471 -1.268 15.394 -1.278 c
-15.313 -1.286 15.225 -1.294 15.129 -1.294 c
-15.042 -1.301 14.942 -1.309 14.836 -1.309 c
-14.648 -1.309 14.486 -1.294 14.35 -1.264 c
-14.222 -1.228 14.107 -1.183 14.012 -1.132 c
-13.924 -1.084 13.85 -1.025 13.792 -0.956 c
-13.733 -0.879 13.689 -0.801 13.66 -0.721 c
-13.63 -0.632 13.608 -0.544 13.6 -0.455 c
-13.59 -0.36 13.586 -0.264 13.586 -0.176 c
-h
-21.12 -1.264 m
-21.12 -0.97 l
-21.126 -0.834 21.134 -0.676 21.134 -0.5 c
-21.134 3.513 l
-22.045 3.513 l
-22.045 2.234 l
-22.045 2.072 l
-22.045 1.897 l
-22.045 1.845 22.038 1.801 22.03 1.764 c
-22.03 1.675 l
-22.045 1.675 l
-22.093 1.783 22.155 1.874 22.236 1.955 c
-22.313 2.032 22.398 2.095 22.487 2.146 c
-22.574 2.194 22.666 2.227 22.766 2.249 c
-22.861 2.267 22.961 2.278 23.059 2.278 c
-23.273 2.278 23.46 2.234 23.618 2.146 c
-23.773 2.058 23.901 1.929 24 1.764 c
-24.106 1.606 24.184 1.415 24.235 1.191 c
-24.283 0.974 24.309 0.735 24.309 0.47 c
-24.309 0.214 24.28 -0.025 24.22 -0.25 c
-24.162 -0.467 24.077 -0.658 23.971 -0.823 c
-23.861 -0.981 23.728 -1.103 23.574 -1.191 c
-23.416 -1.278 23.236 -1.323 23.03 -1.323 c
-22.931 -1.323 22.832 -1.311 22.736 -1.294 c
-22.648 -1.272 22.56 -1.242 22.471 -1.191 c
-22.383 -1.132 22.302 -1.066 22.236 -0.985 c
-22.167 -0.908 22.104 -0.808 22.045 -0.69 c
-22.03 -0.69 l
-22.03 -0.852 l
-22.03 -0.912 22.024 -0.97 22.016 -1.029 c
-22.016 -1.08 22.009 -1.128 22.001 -1.176 c
-22.001 -1.216 21.994 -1.246 21.986 -1.264 c
-h
-22.03 0.5 m
-22.03 0.264 22.049 0.066 22.09 -0.088 c
-22.137 -0.246 22.196 -0.368 22.265 -0.455 c
-22.332 -0.544 22.406 -0.61 22.487 -0.646 c
-22.564 -0.687 22.641 -0.706 22.722 -0.706 c
-22.927 -0.706 23.082 -0.61 23.192 -0.411 c
-23.31 -0.216 23.368 0.077 23.368 0.47 c
-23.368 0.684 23.346 0.867 23.31 1.014 c
-23.28 1.168 23.236 1.294 23.177 1.382 c
-23.125 1.477 23.059 1.55 22.971 1.602 c
-22.89 1.65 22.803 1.675 22.707 1.675 c
-22.626 1.675 22.549 1.654 22.471 1.617 c
-22.391 1.577 22.317 1.514 22.251 1.426 c
-22.192 1.338 22.137 1.213 22.09 1.058 c
-22.049 0.912 22.03 0.724 22.03 0.5 c
-28.193 1.47 m
-28.094 1.477 27.991 1.488 27.884 1.5 c
-27.774 1.517 27.653 1.529 27.517 1.529 c
-27.341 1.529 27.183 1.488 27.046 1.411 c
-26.907 1.342 26.789 1.242 26.693 1.118 c
-26.606 0.989 26.535 0.842 26.488 0.676 c
-26.448 0.507 26.429 0.331 26.429 0.147 c
-26.429 -1.264 l
-25.533 -1.264 l
-25.533 0.985 l
-25.533 1.11 25.521 1.235 25.503 1.353 c
-25.492 1.477 25.477 1.595 25.459 1.706 c
-25.448 1.823 25.434 1.918 25.415 1.999 c
-25.393 2.088 25.375 2.161 25.356 2.219 c
-26.238 2.219 l
-26.246 2.168 26.257 2.117 26.267 2.058 c
-26.286 1.999 26.3 1.933 26.312 1.866 c
-26.33 1.808 26.344 1.742 26.356 1.675 c
-26.363 1.606 26.375 1.544 26.385 1.484 c
-26.4 1.484 l
-26.437 1.602 26.488 1.708 26.547 1.808 c
-26.613 1.903 26.693 1.988 26.782 2.058 c
-26.87 2.124 26.973 2.179 27.09 2.219 c
-27.216 2.256 27.362 2.278 27.532 2.278 c
-27.657 2.278 27.774 2.271 27.884 2.263 c
-28.002 2.253 28.105 2.238 28.193 2.219 c
-h
-30.196 -1.323 m
-30.026 -1.323 29.876 -1.301 29.741 -1.264 c
-29.612 -1.216 29.498 -1.147 29.402 -1.058 c
-29.314 -0.97 29.244 -0.864 29.197 -0.735 c
-29.145 -0.599 29.122 -0.449 29.122 -0.279 c
-29.122 -0.073 29.156 0.096 29.226 0.235 c
-29.292 0.382 29.388 0.492 29.505 0.573 c
-29.63 0.661 29.773 0.724 29.932 0.765 c
-30.097 0.802 30.273 0.827 30.46 0.838 c
-31.181 0.852 l
-31.181 1.029 l
-31.181 1.147 31.169 1.249 31.152 1.338 c
-31.129 1.426 31.096 1.492 31.048 1.544 c
-31.008 1.602 30.961 1.639 30.901 1.661 c
-30.843 1.679 30.776 1.691 30.71 1.691 c
-30.641 1.691 30.578 1.679 30.519 1.661 c
-30.468 1.65 30.42 1.625 30.373 1.588 c
-30.332 1.558 30.298 1.507 30.269 1.44 c
-30.248 1.382 30.233 1.301 30.225 1.205 c
-29.284 1.249 l
-29.314 1.396 29.358 1.532 29.417 1.661 c
-29.483 1.786 29.579 1.897 29.696 1.984 c
-29.814 2.08 29.953 2.153 30.122 2.205 c
-30.298 2.253 30.504 2.278 30.74 2.278 c
-31.181 2.278 31.511 2.168 31.74 1.955 c
-31.975 1.749 32.092 1.44 32.092 1.029 c
-32.092 -0.235 l
-32.092 -0.455 l
-32.099 -0.515 32.114 -0.569 32.137 -0.617 c
-32.154 -0.658 32.184 -0.69 32.224 -0.721 c
-32.261 -0.742 32.313 -0.75 32.372 -0.75 c
-32.438 -0.75 32.507 -0.746 32.577 -0.735 c
-32.577 -1.22 l
-32.519 -1.231 32.463 -1.242 32.415 -1.249 c
-32.375 -1.261 32.334 -1.268 32.297 -1.278 c
-32.257 -1.286 32.214 -1.294 32.166 -1.294 c
-32.114 -1.301 32.056 -1.309 31.989 -1.309 c
-31.761 -1.309 31.596 -1.257 31.489 -1.147 c
-31.379 -1.029 31.316 -0.864 31.298 -0.646 c
-31.283 -0.646 l
-31.214 -0.757 31.144 -0.852 31.078 -0.941 c
-31.008 -1.022 30.931 -1.087 30.843 -1.147 c
-30.755 -1.205 30.655 -1.249 30.549 -1.278 c
-30.45 -1.309 30.332 -1.323 30.196 -1.323 c
-31.181 0.353 m
-30.755 0.338 l
-30.655 0.338 30.564 0.331 30.475 0.324 c
-30.394 0.312 30.328 0.287 30.269 0.25 c
-30.211 0.21 30.159 0.151 30.122 0.073 c
-30.082 0.004 30.063 -0.088 30.063 -0.206 c
-30.063 -0.374 30.097 -0.496 30.167 -0.573 c
-30.233 -0.654 30.332 -0.69 30.46 -0.69 c
-30.567 -0.69 30.666 -0.669 30.755 -0.617 c
-30.85 -0.569 30.931 -0.507 30.99 -0.426 c
-31.056 -0.349 31.107 -0.261 31.137 -0.162 c
-31.166 -0.055 31.181 0.059 31.181 0.177 c
-h
-35.495 -1.264 m
-35.495 0.721 l
-35.495 1.022 35.451 1.242 35.362 1.382 c
-35.281 1.529 35.146 1.602 34.951 1.602 c
-34.841 1.602 34.738 1.577 34.643 1.529 c
-34.554 1.477 34.473 1.411 34.408 1.323 c
-34.348 1.235 34.297 1.124 34.26 1 c
-34.231 0.882 34.216 0.75 34.216 0.603 c
-34.216 -1.264 l
-33.305 -1.264 l
-33.305 1.44 l
-33.305 1.661 l
-33.305 1.749 33.297 1.826 33.29 1.897 c
-33.29 2.088 l
-33.29 2.219 l
-34.142 2.219 l
-34.15 2.19 34.157 2.146 34.157 2.088 c
-34.157 1.897 l
-34.165 1.826 34.172 1.756 34.172 1.691 c
-34.179 1.621 34.186 1.565 34.186 1.529 c
-34.202 1.529 l
-34.319 1.793 34.47 1.984 34.657 2.102 c
-34.841 2.219 35.061 2.278 35.318 2.278 c
-35.503 2.278 35.664 2.249 35.804 2.19 c
-35.939 2.132 36.054 2.043 36.141 1.926 c
-36.23 1.808 36.293 1.665 36.332 1.5 c
-36.38 1.342 36.407 1.154 36.407 0.941 c
-36.407 -1.264 l
-h
-38.923 -1.323 m
-38.637 -1.323 38.394 -1.282 38.188 -1.205 c
-37.982 -1.117 37.81 -0.996 37.674 -0.838 c
-37.535 -0.684 37.431 -0.496 37.365 -0.279 c
-37.296 -0.055 37.263 0.191 37.263 0.455 c
-37.263 0.75 37.296 1.007 37.365 1.235 c
-37.442 1.459 37.549 1.646 37.689 1.793 c
-37.836 1.947 38.012 2.065 38.218 2.146 c
-38.424 2.234 38.659 2.278 38.923 2.278 c
-39.148 2.278 39.35 2.249 39.526 2.19 c
-39.702 2.132 39.854 2.047 39.981 1.941 c
-40.107 1.841 40.21 1.72 40.291 1.573 c
-40.368 1.433 40.423 1.282 40.452 1.118 c
-39.541 1.073 l
-39.511 1.249 39.441 1.389 39.335 1.5 c
-39.235 1.606 39.092 1.661 38.909 1.661 c
-38.662 1.661 38.487 1.558 38.379 1.353 c
-38.269 1.154 38.218 0.867 38.218 0.485 c
-38.218 -0.309 38.453 -0.706 38.923 -0.706 c
-39.089 -0.706 39.232 -0.654 39.35 -0.544 c
-39.467 -0.437 39.541 -0.276 39.57 -0.058 c
-40.482 -0.103 l
-40.452 -0.272 40.397 -0.426 40.32 -0.573 c
-40.25 -0.721 40.147 -0.852 40.012 -0.97 c
-39.883 -1.08 39.725 -1.168 39.541 -1.234 c
-39.364 -1.294 39.158 -1.323 38.923 -1.323 c
-42.323 1.514 m
-42.441 1.786 42.591 1.984 42.778 2.102 c
-42.962 2.219 43.183 2.278 43.44 2.278 c
-43.646 2.278 43.815 2.242 43.954 2.176 c
-44.101 2.105 44.211 2.014 44.292 1.897 c
-44.38 1.779 44.44 1.635 44.469 1.47 c
-44.505 1.301 44.527 1.124 44.527 0.941 c
-44.527 -1.264 l
-43.616 -1.264 l
-43.616 0.735 l
-43.616 0.871 43.605 0.992 43.586 1.103 c
-43.576 1.209 43.55 1.297 43.513 1.367 c
-43.473 1.444 43.414 1.503 43.337 1.544 c
-43.267 1.58 43.175 1.602 43.058 1.602 c
-42.948 1.602 42.852 1.577 42.763 1.529 c
-42.676 1.477 42.595 1.411 42.528 1.323 c
-42.47 1.235 42.418 1.124 42.381 1 c
-42.352 0.882 42.337 0.75 42.337 0.603 c
-42.337 -1.264 l
-41.426 -1.264 l
-41.426 3.513 l
-42.337 3.513 l
-42.337 2.205 l
-42.337 2.135 42.329 2.065 42.323 1.999 c
-42.323 1.793 l
-42.323 1.735 42.315 1.679 42.308 1.631 c
-42.308 1.514 l
-h
-50.297 -2.631 m
-50.297 3.513 l
-52.222 3.513 l
-52.222 2.896 l
-51.149 2.896 l
-51.149 -2.014 l
-52.222 -2.014 l
-52.222 -2.631 l
-h
-54.2 0.838 1.866 -0.794 re
-54.2 0.044 m
-58.628 -1.323 m
-58.458 -1.323 58.308 -1.301 58.172 -1.264 c
-58.044 -1.216 57.93 -1.147 57.834 -1.058 c
-57.745 -0.97 57.676 -0.864 57.628 -0.735 c
-57.576 -0.599 57.554 -0.449 57.554 -0.279 c
-57.554 -0.073 57.587 0.096 57.657 0.235 c
-57.724 0.382 57.819 0.492 57.936 0.573 c
-58.062 0.661 58.204 0.724 58.363 0.765 c
-58.528 0.802 58.705 0.827 58.892 0.838 c
-59.613 0.852 l
-59.613 1.029 l
-59.613 1.147 59.602 1.249 59.583 1.338 c
-59.561 1.426 59.528 1.492 59.48 1.544 c
-59.44 1.602 59.392 1.639 59.333 1.661 c
-59.274 1.679 59.208 1.691 59.142 1.691 c
-59.072 1.691 59.01 1.679 58.951 1.661 c
-58.9 1.65 58.852 1.625 58.804 1.588 c
-58.763 1.558 58.73 1.507 58.701 1.44 c
-58.679 1.382 58.664 1.301 58.657 1.205 c
-57.716 1.249 l
-57.745 1.396 57.79 1.532 57.849 1.661 c
-57.915 1.786 58.01 1.897 58.127 1.984 c
-58.245 2.08 58.385 2.153 58.554 2.205 c
-58.73 2.253 58.936 2.278 59.172 2.278 c
-59.613 2.278 59.943 2.168 60.171 1.955 c
-60.406 1.749 60.523 1.44 60.523 1.029 c
-60.523 -0.235 l
-60.523 -0.455 l
-60.531 -0.515 60.546 -0.569 60.568 -0.617 c
-60.586 -0.658 60.616 -0.69 60.656 -0.721 c
-60.693 -0.742 60.744 -0.75 60.803 -0.75 c
-60.869 -0.75 60.939 -0.746 61.009 -0.735 c
-61.009 -1.22 l
-60.95 -1.231 60.895 -1.242 60.847 -1.249 c
-60.807 -1.261 60.766 -1.268 60.729 -1.278 c
-60.689 -1.286 60.645 -1.294 60.597 -1.294 c
-60.546 -1.301 60.487 -1.309 60.421 -1.309 c
-60.193 -1.309 60.028 -1.257 59.921 -1.147 c
-59.811 -1.029 59.748 -0.864 59.73 -0.646 c
-59.715 -0.646 l
-59.646 -0.757 59.576 -0.852 59.509 -0.941 c
-59.44 -1.022 59.363 -1.087 59.274 -1.147 c
-59.186 -1.205 59.087 -1.249 58.981 -1.278 c
-58.881 -1.309 58.763 -1.323 58.628 -1.323 c
-59.613 0.353 m
-59.186 0.338 l
-59.087 0.338 58.995 0.331 58.907 0.324 c
-58.826 0.312 58.76 0.287 58.701 0.25 c
-58.642 0.21 58.591 0.151 58.554 0.073 c
-58.514 0.004 58.495 -0.088 58.495 -0.206 c
-58.495 -0.374 58.528 -0.496 58.598 -0.573 c
-58.664 -0.654 58.763 -0.69 58.892 -0.69 c
-58.998 -0.69 59.098 -0.669 59.186 -0.617 c
-59.282 -0.569 59.363 -0.507 59.421 -0.426 c
-59.488 -0.349 59.538 -0.261 59.569 -0.162 c
-59.598 -0.055 59.613 0.059 59.613 0.177 c
-h
-62.1 -2.631 m
-62.1 -2.014 l
-63.174 -2.014 l
-63.174 2.896 l
-62.1 2.896 l
-62.1 3.513 l
-64.026 3.513 l
-64.026 -2.631 l
-h
-f
-Q
-q 1 0 0 1 541.9542 230.2781 cm
-0 0 m
-2.103 0 l
-2.103 -0.574 l
--0.675 -0.574 l
--0.675 4.777 l
-0 4.777 l
-h
-3.514 -0.574 -0.647 3.984 re
-3.558 4.453 m
-3.558 4.343 3.528 4.251 3.469 4.174 c
-3.41 4.104 3.315 4.072 3.19 4.072 c
-3.073 4.072 2.977 4.104 2.911 4.174 c
-2.852 4.251 2.822 4.343 2.822 4.453 c
-2.822 4.571 2.852 4.663 2.911 4.733 c
-2.977 4.81 3.073 4.85 3.19 4.85 c
-3.315 4.85 3.41 4.81 3.469 4.733 c
-3.528 4.652 3.558 4.56 3.558 4.453 c
-6.468 0.44 m
-6.468 0.588 6.413 0.708 6.306 0.808 c
-6.196 0.903 5.991 1.021 5.689 1.161 c
-5.343 1.308 5.101 1.429 4.954 1.529 c
-4.807 1.635 4.697 1.753 4.63 1.881 c
-4.561 2.006 4.528 2.164 4.528 2.352 c
-4.528 2.675 4.645 2.943 4.881 3.16 c
-5.116 3.373 5.417 3.484 5.792 3.484 c
-6.174 3.484 6.483 3.37 6.718 3.145 c
-6.953 2.917 7.071 2.63 7.071 2.278 c
-6.423 2.278 l
-6.423 2.454 6.365 2.605 6.247 2.734 c
-6.13 2.859 5.976 2.925 5.792 2.925 c
-5.594 2.925 5.442 2.869 5.336 2.763 c
-5.226 2.664 5.174 2.532 5.174 2.366 c
-5.174 2.237 5.211 2.131 5.292 2.042 c
-5.369 1.961 5.561 1.859 5.866 1.734 c
-6.343 1.547 6.674 1.359 6.851 1.176 c
-7.026 0.999 7.115 0.771 7.115 0.5 c
-7.115 0.147 6.99 -0.133 6.747 -0.339 c
-6.512 -0.545 6.196 -0.647 5.806 -0.647 c
-5.384 -0.647 5.046 -0.53 4.792 -0.294 c
-4.535 -0.052 4.41 0.253 4.41 0.617 c
-5.056 0.617 l
-5.064 0.389 5.134 0.213 5.263 0.087 c
-5.388 -0.03 5.571 -0.088 5.806 -0.088 c
-6.02 -0.088 6.182 -0.04 6.292 0.058 c
-6.409 0.154 6.468 0.282 6.468 0.44 c
-8.805 4.365 m
-8.805 3.41 l
-9.407 3.41 l
-9.407 2.881 l
-8.805 2.881 l
-8.805 0.411 l
-8.805 0.253 8.827 0.135 8.879 0.058 c
-8.937 -0.023 9.025 -0.059 9.143 -0.059 c
-9.232 -0.059 9.32 -0.044 9.407 -0.015 c
-9.407 -0.574 l
-9.261 -0.622 9.106 -0.647 8.952 -0.647 c
-8.695 -0.647 8.5 -0.555 8.364 -0.368 c
-8.225 -0.184 8.158 0.077 8.158 0.411 c
-8.158 2.881 l
-7.556 2.881 l
-7.556 3.41 l
-8.158 3.41 l
-8.158 4.365 l
-h
-13.935 -0.574 m
-13.895 -0.485 13.869 -0.339 13.862 -0.133 c
-13.627 -0.478 13.332 -0.647 12.979 -0.647 c
-12.616 -0.647 12.333 -0.551 12.127 -0.353 c
-11.929 -0.148 11.833 0.139 11.833 0.514 c
-11.833 0.914 11.969 1.234 12.245 1.469 c
-12.517 1.712 12.891 1.837 13.361 1.837 c
-13.847 1.837 l
-13.847 2.263 l
-13.847 2.499 13.792 2.664 13.685 2.763 c
-13.575 2.869 13.413 2.925 13.201 2.925 c
-13.002 2.925 12.84 2.865 12.715 2.748 c
-12.597 2.63 12.538 2.484 12.538 2.308 c
-11.892 2.308 l
-11.892 2.502 11.95 2.693 12.068 2.881 c
-12.193 3.064 12.355 3.212 12.553 3.322 c
-12.759 3.428 12.987 3.484 13.244 3.484 c
-13.645 3.484 13.949 3.38 14.155 3.175 c
-14.369 2.969 14.483 2.675 14.494 2.293 c
-14.494 0.278 l
-14.494 -0.026 14.531 -0.291 14.612 -0.515 c
-14.612 -0.574 l
-h
-13.068 -0.059 m
-13.233 -0.059 13.384 -0.015 13.523 0.073 c
-13.671 0.161 13.777 0.272 13.847 0.411 c
-13.847 1.352 l
-13.479 1.352 l
-13.164 1.352 12.921 1.282 12.744 1.146 c
-12.568 1.018 12.48 0.83 12.48 0.588 c
-12.48 0.359 12.524 0.195 12.613 0.087 c
-12.7 -0.011 12.851 -0.059 13.068 -0.059 c
-16.199 -0.574 -0.646 5.644 re
-17.918 -0.574 -0.646 5.644 re
-21.358 -0.574 -0.646 5.644 re
-22.24 1.602 m
-22.24 2.179 22.376 2.634 22.651 2.969 c
-22.934 3.31 23.306 3.484 23.769 3.484 c
-24.228 3.484 24.596 3.314 24.871 2.983 c
-25.154 2.66 25.301 2.212 25.312 1.646 c
-25.312 1.219 l
-25.312 0.65 25.169 0.195 24.885 -0.148 c
-24.611 -0.482 24.243 -0.647 23.784 -0.647 c
-23.32 -0.647 22.949 -0.485 22.666 -0.162 c
-22.391 0.168 22.248 0.61 22.24 1.161 c
-h
-22.886 1.219 m
-22.886 0.816 22.964 0.5 23.122 0.264 c
-23.287 0.029 23.508 -0.088 23.784 -0.088 c
-24.349 -0.088 24.644 0.323 24.665 1.146 c
-24.665 1.602 l
-24.665 2.002 24.581 2.322 24.415 2.557 c
-24.257 2.8 24.041 2.925 23.769 2.925 c
-23.504 2.925 23.287 2.8 23.122 2.557 c
-22.964 2.322 22.886 2.002 22.886 1.602 c
-h
-27.532 -0.088 m
-27.745 -0.088 27.917 -0.026 28.046 0.103 c
-28.182 0.238 28.255 0.43 28.266 0.675 c
-28.884 0.675 l
-28.862 0.294 28.726 -0.026 28.472 -0.279 c
-28.216 -0.526 27.903 -0.647 27.532 -0.647 c
-27.04 -0.647 26.664 -0.497 26.4 -0.192 c
-26.142 0.12 26.018 0.588 26.018 1.205 c
-26.018 1.646 l
-26.018 2.241 26.142 2.697 26.4 3.013 c
-26.664 3.326 27.04 3.484 27.532 3.484 c
-27.932 3.484 28.252 3.351 28.487 3.087 c
-28.729 2.829 28.862 2.484 28.884 2.042 c
-28.266 2.042 l
-28.245 2.337 28.171 2.557 28.046 2.705 c
-27.929 2.851 27.756 2.925 27.532 2.925 c
-27.237 2.925 27.021 2.825 26.884 2.63 c
-26.745 2.443 26.672 2.135 26.664 1.705 c
-26.664 1.19 l
-26.664 0.72 26.73 0.386 26.87 0.191 c
-27.017 0.003 27.237 -0.088 27.532 -0.088 c
-31.677 -0.574 m
-31.636 -0.485 31.611 -0.339 31.603 -0.133 c
-31.368 -0.478 31.075 -0.647 30.722 -0.647 c
-30.358 -0.647 30.075 -0.551 29.868 -0.353 c
-29.67 -0.148 29.575 0.139 29.575 0.514 c
-29.575 0.914 29.71 1.234 29.986 1.469 c
-30.258 1.712 30.633 1.837 31.104 1.837 c
-31.588 1.837 l
-31.588 2.263 l
-31.588 2.499 31.534 2.664 31.427 2.763 c
-31.316 2.869 31.155 2.925 30.942 2.925 c
-30.743 2.925 30.582 2.865 30.456 2.748 c
-30.339 2.63 30.281 2.484 30.281 2.308 c
-29.633 2.308 l
-29.633 2.502 29.693 2.693 29.81 2.881 c
-29.935 3.064 30.097 3.212 30.295 3.322 c
-30.501 3.428 30.728 3.484 30.986 3.484 c
-31.387 3.484 31.692 3.38 31.898 3.175 c
-32.11 2.969 32.224 2.675 32.235 2.293 c
-32.235 0.278 l
-32.235 -0.026 32.272 -0.291 32.353 -0.515 c
-32.353 -0.574 l
-h
-30.809 -0.059 m
-30.975 -0.059 31.125 -0.015 31.266 0.073 c
-31.412 0.161 31.519 0.272 31.588 0.411 c
-31.588 1.352 l
-31.221 1.352 l
-30.905 1.352 30.662 1.282 30.487 1.146 c
-30.31 1.018 30.221 0.83 30.221 0.588 c
-30.221 0.359 30.265 0.195 30.354 0.087 c
-30.442 -0.011 30.593 -0.059 30.809 -0.059 c
-33.94 -0.574 -0.646 5.644 re
-39.555 1.219 m
-39.555 0.602 39.441 0.135 39.218 -0.177 c
-39 -0.493 38.678 -0.647 38.248 -0.647 c
-37.824 -0.647 37.512 -0.468 37.307 -0.103 c
-37.277 -0.574 l
-36.675 -0.574 l
-36.675 5.071 l
-37.321 5.071 l
-37.321 2.969 l
-37.535 3.31 37.843 3.484 38.248 3.484 c
-38.678 3.484 39 3.326 39.218 3.013 c
-39.441 2.707 39.555 2.241 39.555 1.616 c
-h
-38.909 1.602 m
-38.909 2.072 38.838 2.403 38.703 2.601 c
-38.574 2.796 38.365 2.896 38.071 2.896 c
-37.737 2.896 37.487 2.711 37.321 2.352 c
-37.321 0.47 l
-37.487 0.106 37.741 -0.074 38.086 -0.074 c
-38.379 -0.074 38.589 0.029 38.718 0.235 c
-38.842 0.44 38.909 0.756 38.909 1.19 c
-h
-42.04 2.792 m
-41.951 2.811 41.853 2.822 41.745 2.822 c
-41.411 2.822 41.176 2.638 41.04 2.278 c
-41.04 -0.574 l
-40.393 -0.574 l
-40.393 3.41 l
-41.026 3.41 l
-41.04 2.998 l
-41.217 3.322 41.459 3.484 41.775 3.484 c
-41.882 3.484 41.97 3.461 42.04 3.424 c
-h
-44.583 -0.574 m
-44.542 -0.485 44.517 -0.339 44.509 -0.133 c
-44.274 -0.478 43.98 -0.647 43.627 -0.647 c
-43.264 -0.647 42.981 -0.551 42.774 -0.353 c
-42.576 -0.148 42.481 0.139 42.481 0.514 c
-42.481 0.914 42.616 1.234 42.892 1.469 c
-43.164 1.712 43.539 1.837 44.01 1.837 c
-44.494 1.837 l
-44.494 2.263 l
-44.494 2.499 44.44 2.664 44.332 2.763 c
-44.222 2.869 44.06 2.925 43.848 2.925 c
-43.649 2.925 43.488 2.865 43.362 2.748 c
-43.245 2.63 43.187 2.484 43.187 2.308 c
-42.539 2.308 l
-42.539 2.502 42.599 2.693 42.716 2.881 c
-42.84 3.064 43.002 3.212 43.201 3.322 c
-43.407 3.428 43.634 3.484 43.892 3.484 c
-44.292 3.484 44.598 3.38 44.803 3.175 c
-45.016 2.969 45.13 2.675 45.141 2.293 c
-45.141 0.278 l
-45.141 -0.026 45.178 -0.291 45.259 -0.515 c
-45.259 -0.574 l
-h
-43.715 -0.059 m
-43.881 -0.059 44.031 -0.015 44.171 0.073 c
-44.318 0.161 44.425 0.272 44.494 0.411 c
-44.494 1.352 l
-44.127 1.352 l
-43.811 1.352 43.569 1.282 43.392 1.146 c
-43.216 1.018 43.127 0.83 43.127 0.588 c
-43.127 0.359 43.172 0.195 43.26 0.087 c
-43.347 -0.011 43.499 -0.059 43.715 -0.059 c
-46.758 3.41 m
-46.773 2.969 l
-47.027 3.31 47.349 3.484 47.743 3.484 c
-48.448 3.484 48.805 3.013 48.816 2.072 c
-48.816 -0.574 l
-48.169 -0.574 l
-48.169 2.042 l
-48.169 2.355 48.114 2.576 48.008 2.705 c
-47.897 2.829 47.743 2.896 47.537 2.896 c
-47.379 2.896 47.232 2.84 47.096 2.734 c
-46.967 2.624 46.865 2.487 46.788 2.322 c
-46.788 -0.574 l
-46.14 -0.574 l
-46.14 3.41 l
-h
-51.168 -0.088 m
-51.381 -0.088 51.553 -0.026 51.682 0.103 c
-51.818 0.238 51.892 0.43 51.902 0.675 c
-52.52 0.675 l
-52.498 0.294 52.362 -0.026 52.109 -0.279 c
-51.852 -0.526 51.538 -0.647 51.168 -0.647 c
-50.676 -0.647 50.3 -0.497 50.036 -0.192 c
-49.778 0.12 49.654 0.588 49.654 1.205 c
-49.654 1.646 l
-49.654 2.241 49.778 2.697 50.036 3.013 c
-50.3 3.326 50.676 3.484 51.168 3.484 c
-51.569 3.484 51.888 3.351 52.124 3.087 c
-52.365 2.829 52.498 2.484 52.52 2.042 c
-51.902 2.042 l
-51.881 2.337 51.807 2.557 51.682 2.705 c
-51.565 2.851 51.392 2.925 51.168 2.925 c
-50.873 2.925 50.657 2.825 50.521 2.63 c
-50.381 2.443 50.308 2.135 50.3 1.705 c
-50.3 1.19 l
-50.3 0.72 50.366 0.386 50.506 0.191 c
-50.653 0.003 50.873 -0.088 51.168 -0.088 c
-53.917 2.998 m
-54.17 3.322 54.49 3.484 54.871 3.484 c
-55.577 3.484 55.934 3.013 55.945 2.072 c
-55.945 -0.574 l
-55.299 -0.574 l
-55.299 2.042 l
-55.299 2.355 55.243 2.576 55.137 2.705 c
-55.027 2.829 54.871 2.896 54.666 2.896 c
-54.508 2.896 54.361 2.84 54.225 2.734 c
-54.096 2.624 53.994 2.487 53.917 2.322 c
-53.917 -0.574 l
-53.269 -0.574 l
-53.269 5.071 l
-53.917 5.071 l
-h
-58.326 -0.647 m
-57.826 -0.647 57.444 -0.5 57.18 -0.206 c
-56.915 0.087 56.783 0.521 56.783 1.102 c
-56.783 1.572 l
-56.783 2.167 56.908 2.634 57.165 2.969 c
-57.429 3.31 57.79 3.484 58.252 3.484 c
-58.713 3.484 59.054 3.329 59.282 3.027 c
-59.517 2.734 59.638 2.271 59.65 1.646 c
-59.65 1.219 l
-57.429 1.219 l
-57.429 1.132 l
-57.429 0.698 57.506 0.386 57.664 0.191 c
-57.83 0.003 58.062 -0.088 58.356 -0.088 c
-58.551 -0.088 58.723 -0.056 58.87 0.014 c
-59.017 0.091 59.153 0.209 59.282 0.367 c
-59.619 -0.044 l
-59.333 -0.449 58.904 -0.647 58.326 -0.647 c
-58.252 2.925 m
-57.977 2.925 57.775 2.829 57.65 2.645 c
-57.522 2.458 57.448 2.167 57.429 1.778 c
-59.002 1.778 l
-59.002 1.866 l
-58.981 2.248 58.914 2.516 58.796 2.675 c
-58.679 2.84 58.495 2.925 58.252 2.925 c
-62.368 0.44 m
-62.368 0.588 62.314 0.708 62.206 0.808 c
-62.096 0.903 61.89 1.021 61.589 1.161 c
-61.244 1.308 61.001 1.429 60.855 1.529 c
-60.708 1.635 60.597 1.753 60.531 1.881 c
-60.461 2.006 60.428 2.164 60.428 2.352 c
-60.428 2.675 60.546 2.943 60.781 3.16 c
-61.016 3.373 61.317 3.484 61.692 3.484 c
-62.075 3.484 62.383 3.37 62.618 3.145 c
-62.854 2.917 62.971 2.63 62.971 2.278 c
-62.324 2.278 l
-62.324 2.454 62.266 2.605 62.148 2.734 c
-62.031 2.859 61.876 2.925 61.692 2.925 c
-61.494 2.925 61.343 2.869 61.237 2.763 c
-61.126 2.664 61.075 2.532 61.075 2.366 c
-61.075 2.237 61.111 2.131 61.192 2.042 c
-61.269 1.961 61.46 1.859 61.766 1.734 c
-62.243 1.547 62.574 1.359 62.75 1.176 c
-62.927 0.999 63.016 0.771 63.016 0.5 c
-63.016 0.147 62.89 -0.133 62.648 -0.339 c
-62.412 -0.545 62.096 -0.647 61.707 -0.647 c
-61.284 -0.647 60.946 -0.53 60.693 -0.294 c
-60.436 -0.052 60.311 0.253 60.311 0.617 c
-60.957 0.617 l
-60.965 0.389 61.034 0.213 61.163 0.087 c
-61.288 -0.03 61.472 -0.088 61.707 -0.088 c
-61.92 -0.088 62.082 -0.04 62.192 0.058 c
-62.31 0.154 62.368 0.282 62.368 0.44 c
-66.278 -0.574 -0.646 3.984 re
-66.322 4.453 m
-66.322 4.343 66.293 4.251 66.235 4.174 c
-66.175 4.104 66.08 4.072 65.955 4.072 c
-65.838 4.072 65.742 4.104 65.676 4.174 c
-65.617 4.251 65.587 4.343 65.587 4.453 c
-65.587 4.571 65.617 4.663 65.676 4.733 c
-65.742 4.81 65.838 4.85 65.955 4.85 c
-66.08 4.85 66.175 4.81 66.235 4.733 c
-66.293 4.652 66.322 4.56 66.322 4.453 c
-67.91 3.41 m
-67.924 2.969 l
-68.178 3.31 68.502 3.484 68.895 3.484 c
-69.601 3.484 69.957 3.013 69.967 2.072 c
-69.967 -0.574 l
-69.321 -0.574 l
-69.321 2.042 l
-69.321 2.355 69.266 2.576 69.159 2.705 c
-69.049 2.829 68.895 2.896 68.689 2.896 c
-68.531 2.896 68.384 2.84 68.248 2.734 c
-68.12 2.624 68.016 2.487 67.939 2.322 c
-67.939 -0.574 l
-67.293 -0.574 l
-67.293 3.41 l
-h
-74.304 2.792 m
-74.216 2.811 74.116 2.822 74.01 2.822 c
-73.676 2.822 73.441 2.638 73.304 2.278 c
-73.304 -0.574 l
-72.658 -0.574 l
-72.658 3.41 l
-73.29 3.41 l
-73.304 2.998 l
-73.481 3.322 73.724 3.484 74.039 3.484 c
-74.146 3.484 74.235 3.461 74.304 3.424 c
-h
-76.303 -0.647 m
-75.803 -0.647 75.421 -0.5 75.157 -0.206 c
-74.892 0.087 74.76 0.521 74.76 1.102 c
-74.76 1.572 l
-74.76 2.167 74.885 2.634 75.142 2.969 c
-75.407 3.31 75.766 3.484 76.23 3.484 c
-76.689 3.484 77.031 3.329 77.258 3.027 c
-77.493 2.734 77.615 2.271 77.626 1.646 c
-77.626 1.219 l
-75.407 1.219 l
-75.407 1.132 l
-75.407 0.698 75.484 0.386 75.642 0.191 c
-75.807 0.003 76.038 -0.088 76.333 -0.088 c
-76.527 -0.088 76.7 -0.056 76.847 0.014 c
-76.994 0.091 77.13 0.209 77.258 0.367 c
-77.597 -0.044 l
-77.31 -0.449 76.88 -0.647 76.303 -0.647 c
-76.23 2.925 m
-75.954 2.925 75.752 2.829 75.627 2.645 c
-75.498 2.458 75.425 2.167 75.407 1.778 c
-76.979 1.778 l
-76.979 1.866 l
-76.957 2.248 76.891 2.516 76.774 2.675 c
-76.656 2.84 76.472 2.925 76.23 2.925 c
-81.286 1.219 m
-81.286 0.591 81.169 0.12 80.934 -0.192 c
-80.705 -0.497 80.389 -0.647 79.978 -0.647 c
-79.573 -0.647 79.265 -0.497 79.052 -0.192 c
-79.052 -2.103 l
-78.405 -2.103 l
-78.405 3.41 l
-78.993 3.41 l
-79.037 2.969 l
-79.251 3.31 79.559 3.484 79.963 3.484 c
-80.404 3.484 80.731 3.329 80.948 3.027 c
-81.161 2.722 81.275 2.267 81.286 1.66 c
-h
-80.639 1.602 m
-80.639 2.042 80.57 2.366 80.433 2.572 c
-80.294 2.785 80.074 2.896 79.772 2.896 c
-79.456 2.896 79.217 2.741 79.052 2.439 c
-79.052 0.367 l
-79.217 0.062 79.456 -0.088 79.772 -0.088 c
-80.066 -0.088 80.279 0.014 80.419 0.22 c
-80.555 0.433 80.628 0.764 80.639 1.205 c
-h
-81.992 1.602 m
-81.992 2.179 82.128 2.634 82.403 2.969 c
-82.686 3.31 83.057 3.484 83.521 3.484 c
-83.98 3.484 84.348 3.314 84.622 2.983 c
-84.906 2.66 85.053 2.212 85.064 1.646 c
-85.064 1.219 l
-85.064 0.65 84.921 0.195 84.637 -0.148 c
-84.362 -0.482 83.994 -0.647 83.535 -0.647 c
-83.072 -0.647 82.701 -0.485 82.418 -0.162 c
-82.143 0.168 81.999 0.61 81.992 1.161 c
-h
-82.638 1.219 m
-82.638 0.816 82.715 0.5 82.873 0.264 c
-83.039 0.029 83.259 -0.088 83.535 -0.088 c
-84.101 -0.088 84.395 0.323 84.417 1.146 c
-84.417 1.602 l
-84.417 2.002 84.333 2.322 84.167 2.557 c
-84.009 2.8 83.793 2.925 83.521 2.925 c
-83.255 2.925 83.039 2.8 82.873 2.557 c
-82.715 2.322 82.638 2.002 82.638 1.602 c
-h
-87.842 0.44 m
-87.842 0.588 87.787 0.708 87.68 0.808 c
-87.57 0.903 87.365 1.021 87.063 1.161 c
-86.717 1.308 86.475 1.429 86.328 1.529 c
-86.181 1.635 86.071 1.753 86.004 1.881 c
-85.935 2.006 85.902 2.164 85.902 2.352 c
-85.902 2.675 86.019 2.943 86.255 3.16 c
-86.49 3.373 86.791 3.484 87.166 3.484 c
-87.548 3.484 87.857 3.37 88.092 3.145 c
-88.327 2.917 88.445 2.63 88.445 2.278 c
-87.797 2.278 l
-87.797 2.454 87.739 2.605 87.621 2.734 c
-87.504 2.859 87.35 2.925 87.166 2.925 c
-86.968 2.925 86.816 2.869 86.71 2.763 c
-86.6 2.664 86.548 2.532 86.548 2.366 c
-86.548 2.237 86.585 2.131 86.666 2.042 c
-86.743 1.961 86.935 1.859 87.24 1.734 c
-87.717 1.547 88.048 1.359 88.224 1.176 c
-88.4 0.999 88.489 0.771 88.489 0.5 c
-88.489 0.147 88.364 -0.133 88.121 -0.339 c
-87.886 -0.545 87.57 -0.647 87.18 -0.647 c
-86.758 -0.647 86.42 -0.53 86.166 -0.294 c
-85.909 -0.052 85.784 0.253 85.784 0.617 c
-86.43 0.617 l
-86.438 0.389 86.508 0.213 86.636 0.087 c
-86.762 -0.03 86.945 -0.088 87.18 -0.088 c
-87.394 -0.088 87.556 -0.04 87.666 0.058 c
-87.783 0.154 87.842 0.282 87.842 0.44 c
-90.032 -0.574 -0.646 3.984 re
-90.076 4.453 m
-90.076 4.343 90.047 4.251 89.988 4.174 c
-89.929 4.104 89.834 4.072 89.709 4.072 c
-89.591 4.072 89.495 4.104 89.43 4.174 c
-89.37 4.251 89.341 4.343 89.341 4.453 c
-89.341 4.571 89.37 4.663 89.43 4.733 c
-89.495 4.81 89.591 4.85 89.709 4.85 c
-89.834 4.85 89.929 4.81 89.988 4.733 c
-90.047 4.652 90.076 4.56 90.076 4.453 c
-91.899 4.365 m
-91.899 3.41 l
-92.501 3.41 l
-92.501 2.881 l
-91.899 2.881 l
-91.899 0.411 l
-91.899 0.253 91.921 0.135 91.972 0.058 c
-92.031 -0.023 92.119 -0.059 92.237 -0.059 c
-92.325 -0.059 92.414 -0.044 92.501 -0.015 c
-92.501 -0.574 l
-92.354 -0.622 92.2 -0.647 92.046 -0.647 c
-91.789 -0.647 91.594 -0.555 91.458 -0.368 c
-91.319 -0.184 91.252 0.077 91.252 0.411 c
-91.252 2.881 l
-90.65 2.881 l
-90.65 3.41 l
-91.252 3.41 l
-91.252 4.365 l
-h
-93.06 1.602 m
-93.06 2.179 93.196 2.634 93.472 2.969 c
-93.755 3.31 94.126 3.484 94.589 3.484 c
-95.048 3.484 95.415 3.314 95.691 2.983 c
-95.974 2.66 96.121 2.212 96.132 1.646 c
-96.132 1.219 l
-96.132 0.65 95.988 0.195 95.706 -0.148 c
-95.43 -0.482 95.063 -0.647 94.604 -0.647 c
-94.141 -0.647 93.769 -0.485 93.486 -0.162 c
-93.21 0.168 93.067 0.61 93.06 1.161 c
-h
-93.707 1.219 m
-93.707 0.816 93.784 0.5 93.942 0.264 c
-94.107 0.029 94.328 -0.088 94.604 -0.088 c
-95.169 -0.088 95.463 0.323 95.485 1.146 c
-95.485 1.602 l
-95.485 2.002 95.401 2.322 95.236 2.557 c
-95.078 2.8 94.86 2.925 94.589 2.925 c
-94.324 2.925 94.107 2.8 93.942 2.557 c
-93.784 2.322 93.707 2.002 93.707 1.602 c
-h
-98.616 2.792 m
-98.528 2.811 98.429 2.822 98.322 2.822 c
-97.988 2.822 97.753 2.638 97.617 2.278 c
-97.617 -0.574 l
-96.97 -0.574 l
-96.97 3.41 l
-97.602 3.41 l
-97.617 2.998 l
-97.793 3.322 98.035 3.484 98.352 3.484 c
-98.459 3.484 98.546 3.461 98.616 3.424 c
-h
-100.424 0.514 m
-101.145 3.41 l
-101.835 3.41 l
-100.542 -1.133 l
-100.443 -1.474 100.3 -1.735 100.115 -1.912 c
-99.94 -2.087 99.737 -2.176 99.513 -2.176 c
-99.425 -2.176 99.311 -2.154 99.175 -2.117 c
-99.175 -1.573 l
-99.321 -1.588 l
-99.506 -1.588 99.653 -1.544 99.763 -1.455 c
-99.87 -1.368 99.957 -1.21 100.027 -0.985 c
-100.145 -0.545 l
-98.984 3.41 l
-99.689 3.41 l
-h
-102.114 -0.221 m
-102.114 -0.103 102.147 -0.008 102.218 0.073 c
-102.284 0.151 102.386 0.191 102.527 0.191 c
-102.673 0.191 102.78 0.151 102.849 0.073 c
-102.927 -0.008 102.967 -0.103 102.967 -0.221 c
-102.967 -0.331 102.927 -0.423 102.849 -0.5 c
-102.78 -0.578 102.673 -0.618 102.527 -0.618 c
-102.386 -0.618 102.284 -0.578 102.218 -0.5 c
-102.147 -0.423 102.114 -0.331 102.114 -0.221 c
-106.892 1.117 m
-106.965 0.514 l
-107.068 1.043 l
-107.921 4.777 l
-108.48 4.777 l
-109.317 1.043 l
-109.42 0.5 l
-109.494 1.117 l
-110.155 4.777 l
-110.831 4.777 l
-109.758 -0.574 l
-109.156 -0.574 l
-108.258 3.322 l
-108.2 3.645 l
-108.156 3.322 l
-107.23 -0.574 l
-106.612 -0.574 l
-105.554 4.777 l
-106.23 4.777 l
-h
-112.213 -0.574 -0.647 3.984 re
-112.257 4.453 m
-112.257 4.343 112.227 4.251 112.169 4.174 c
-112.11 4.104 112.015 4.072 111.89 4.072 c
-111.772 4.072 111.676 4.104 111.61 4.174 c
-111.551 4.251 111.522 4.343 111.522 4.453 c
-111.522 4.571 111.551 4.663 111.61 4.733 c
-111.676 4.81 111.772 4.85 111.89 4.85 c
-112.015 4.85 112.11 4.81 112.169 4.733 c
-112.227 4.652 112.257 4.56 112.257 4.453 c
-114.08 4.365 m
-114.08 3.41 l
-114.683 3.41 l
-114.683 2.881 l
-114.08 2.881 l
-114.08 0.411 l
-114.08 0.253 114.101 0.135 114.153 0.058 c
-114.212 -0.023 114.3 -0.059 114.417 -0.059 c
-114.506 -0.059 114.594 -0.044 114.683 -0.015 c
-114.683 -0.574 l
-114.535 -0.622 114.381 -0.647 114.226 -0.647 c
-113.97 -0.647 113.775 -0.555 113.638 -0.368 c
-113.499 -0.184 113.432 0.077 113.432 0.411 c
-113.432 2.881 l
-112.83 2.881 l
-112.83 3.41 l
-113.432 3.41 l
-113.432 4.365 l
-h
-116.094 2.998 m
-116.347 3.322 116.667 3.484 117.049 3.484 c
-117.754 3.484 118.111 3.013 118.122 2.072 c
-118.122 -0.574 l
-117.475 -0.574 l
-117.475 2.042 l
-117.475 2.355 117.42 2.576 117.313 2.705 c
-117.203 2.829 117.049 2.896 116.843 2.896 c
-116.685 2.896 116.538 2.84 116.402 2.734 c
-116.274 2.624 116.171 2.487 116.094 2.322 c
-116.094 -0.574 l
-115.447 -0.574 l
-115.447 5.071 l
-116.094 5.071 l
-h
-f
-Q
-664.516 231.572 -1.794 0.866 re
-667.264 229.704 m
-667.234 229.764 667.205 229.866 667.176 230.013 c
-666.989 229.756 666.739 229.631 666.426 229.631 c
-666.091 229.631 665.813 229.737 665.588 229.955 c
-665.372 230.178 665.264 230.469 665.264 230.822 c
-665.264 231.233 665.397 231.549 665.661 231.777 c
-665.927 232.012 666.309 232.13 666.808 232.13 c
-667.132 232.13 l
-667.132 232.453 l
-667.132 232.63 667.095 232.75 667.028 232.821 c
-666.97 232.898 666.882 232.939 666.764 232.939 c
-666.507 232.939 666.382 232.784 666.382 232.482 c
-665.339 232.482 l
-665.339 232.854 665.474 233.159 665.75 233.394 c
-666.022 233.637 666.371 233.762 666.793 233.762 c
-667.234 233.762 667.573 233.644 667.808 233.409 c
-668.05 233.18 668.175 232.858 668.175 232.438 c
-668.175 230.572 l
-668.175 230.226 668.223 229.958 668.322 229.764 c
-668.322 229.704 l
-h
-666.661 230.454 m
-666.768 230.454 666.86 230.473 666.941 230.513 c
-667.028 230.56 667.091 230.62 667.132 230.689 c
-667.132 231.512 l
-666.882 231.512 l
-666.706 231.512 666.562 231.454 666.455 231.336 c
-666.357 231.225 666.309 231.079 666.309 230.895 c
-666.309 230.601 666.426 230.454 666.661 230.454 c
-f
-q 1 0 0 1 669.0717 230.0571 cm
-0 0 m
-0 0.118 0.034 0.214 0.104 0.294 c
-0.169 0.372 0.272 0.412 0.412 0.412 c
-0.559 0.412 0.665 0.372 0.736 0.294 c
-0.813 0.214 0.853 0.118 0.853 0 c
-0.853 -0.11 0.813 -0.202 0.736 -0.279 c
-0.665 -0.357 0.559 -0.397 0.412 -0.397 c
-0.272 -0.397 0.169 -0.357 0.104 -0.279 c
-0.034 -0.202 0 -0.11 0 0 c
-0 2.822 m
-0 2.94 0.034 3.036 0.104 3.117 c
-0.169 3.194 0.272 3.234 0.412 3.234 c
-0.559 3.234 0.665 3.194 0.736 3.117 c
-0.813 3.036 0.853 2.94 0.853 2.822 c
-0.853 2.712 0.813 2.62 0.736 2.543 c
-0.665 2.462 0.559 2.425 0.412 2.425 c
-0.272 2.425 0.169 2.462 0.104 2.543 c
-0.034 2.62 0 2.712 0 2.822 c
-5.38 0.661 m
-5.38 0.809 5.325 0.929 5.218 1.029 c
-5.108 1.124 4.902 1.242 4.601 1.382 c
-4.256 1.529 4.013 1.65 3.866 1.75 c
-3.719 1.856 3.609 1.974 3.543 2.103 c
-3.473 2.227 3.44 2.385 3.44 2.573 c
-3.44 2.896 3.558 3.164 3.793 3.381 c
-4.028 3.594 4.329 3.705 4.704 3.705 c
-5.087 3.705 5.395 3.591 5.63 3.366 c
-5.866 3.138 5.983 2.851 5.983 2.499 c
-5.336 2.499 l
-5.336 2.675 5.278 2.826 5.16 2.955 c
-5.042 3.08 4.888 3.146 4.704 3.146 c
-4.505 3.146 4.355 3.09 4.248 2.984 c
-4.138 2.885 4.087 2.753 4.087 2.587 c
-4.087 2.458 4.123 2.352 4.204 2.263 c
-4.281 2.183 4.472 2.08 4.777 1.955 c
-5.255 1.768 5.586 1.58 5.762 1.397 c
-5.939 1.22 6.027 0.992 6.027 0.721 c
-6.027 0.368 5.902 0.088 5.66 -0.118 c
-5.424 -0.324 5.108 -0.426 4.719 -0.426 c
-4.296 -0.426 3.958 -0.309 3.705 -0.073 c
-3.447 0.169 3.323 0.474 3.323 0.838 c
-3.969 0.838 l
-3.977 0.611 4.046 0.434 4.175 0.309 c
-4.3 0.191 4.484 0.133 4.719 0.133 c
-4.932 0.133 5.093 0.181 5.204 0.279 c
-5.322 0.375 5.38 0.503 5.38 0.661 c
-7.512 3.219 m
-7.765 3.543 8.085 3.705 8.467 3.705 c
-9.172 3.705 9.529 3.234 9.54 2.294 c
-9.54 -0.353 l
-8.893 -0.353 l
-8.893 2.263 l
-8.893 2.576 8.838 2.797 8.732 2.926 c
-8.621 3.05 8.467 3.117 8.262 3.117 c
-8.104 3.117 7.956 3.061 7.82 2.955 c
-7.691 2.845 7.589 2.708 7.512 2.543 c
-7.512 -0.353 l
-6.865 -0.353 l
-6.865 5.292 l
-7.512 5.292 l
-h
-10.363 1.823 m
-10.363 2.4 10.499 2.855 10.774 3.19 c
-11.057 3.532 11.429 3.705 11.892 3.705 c
-12.351 3.705 12.719 3.535 12.994 3.204 c
-13.278 2.881 13.424 2.433 13.436 1.867 c
-13.436 1.44 l
-13.436 0.871 13.292 0.416 13.009 0.073 c
-12.734 -0.261 12.366 -0.426 11.907 -0.426 c
-11.443 -0.426 11.073 -0.264 10.789 0.059 c
-10.514 0.389 10.371 0.831 10.363 1.382 c
-h
-11.009 1.44 m
-11.009 1.037 11.088 0.721 11.245 0.485 c
-11.41 0.25 11.631 0.133 11.907 0.133 c
-12.472 0.133 12.767 0.544 12.788 1.367 c
-12.788 1.823 l
-12.788 2.223 12.704 2.543 12.538 2.778 c
-12.38 3.021 12.164 3.146 11.892 3.146 c
-11.628 3.146 11.41 3.021 11.245 2.778 c
-11.088 2.543 11.009 2.223 11.009 1.823 c
-h
-17.242 0.794 m
-17.845 3.631 l
-18.492 3.631 l
-17.507 -0.353 l
-16.993 -0.353 l
-16.214 2.499 l
-15.464 -0.353 l
-14.934 -0.353 l
-13.979 3.631 l
-14.612 3.631 l
-15.229 0.867 l
-15.963 3.631 l
-16.478 3.631 l
-h
-22.93 -0.353 m
-22.89 -0.264 22.865 -0.118 22.857 0.088 c
-22.622 -0.257 22.328 -0.426 21.976 -0.426 c
-21.612 -0.426 21.328 -0.33 21.122 -0.132 c
-20.925 0.073 20.829 0.36 20.829 0.735 c
-20.829 1.135 20.965 1.455 21.24 1.691 c
-21.513 1.933 21.887 2.058 22.358 2.058 c
-22.843 2.058 l
-22.843 2.484 l
-22.843 2.72 22.788 2.885 22.681 2.984 c
-22.571 3.09 22.409 3.146 22.196 3.146 c
-21.997 3.146 21.836 3.087 21.71 2.969 c
-21.593 2.851 21.534 2.705 21.534 2.529 c
-20.887 2.529 l
-20.887 2.723 20.947 2.914 21.064 3.102 c
-21.189 3.285 21.351 3.433 21.55 3.543 c
-21.755 3.649 21.983 3.705 22.24 3.705 c
-22.641 3.705 22.946 3.601 23.152 3.396 c
-23.364 3.19 23.478 2.896 23.489 2.514 c
-23.489 0.5 l
-23.489 0.195 23.526 -0.07 23.607 -0.294 c
-23.607 -0.353 l
-h
-22.063 0.162 m
-22.229 0.162 22.379 0.206 22.519 0.294 c
-22.666 0.382 22.772 0.493 22.843 0.632 c
-22.843 1.573 l
-22.475 1.573 l
-22.159 1.573 21.916 1.503 21.741 1.367 c
-21.564 1.239 21.475 1.051 21.475 0.809 c
-21.475 0.58 21.519 0.416 21.608 0.309 c
-21.696 0.21 21.847 0.162 22.063 0.162 c
-25.195 -0.353 -0.647 5.644 re
-26.915 -0.353 -0.647 5.644 re
-32.529 1.44 m
-32.529 0.823 32.415 0.357 32.191 0.044 c
-31.975 -0.272 31.651 -0.426 31.221 -0.426 c
-30.799 -0.426 30.487 -0.246 30.281 0.118 c
-30.251 -0.353 l
-29.648 -0.353 l
-29.648 5.292 l
-30.295 5.292 l
-30.295 3.19 l
-30.508 3.532 30.817 3.705 31.221 3.705 c
-31.651 3.705 31.975 3.547 32.191 3.234 c
-32.415 2.929 32.529 2.462 32.529 1.837 c
-h
-31.883 1.823 m
-31.883 2.294 31.813 2.624 31.677 2.822 c
-31.549 3.017 31.339 3.117 31.044 3.117 c
-30.71 3.117 30.46 2.932 30.295 2.573 c
-30.295 0.691 l
-30.46 0.327 30.714 0.147 31.06 0.147 c
-31.353 0.147 31.563 0.25 31.692 0.456 c
-31.817 0.661 31.883 0.977 31.883 1.411 c
-h
-35.013 3.013 m
-34.925 3.032 34.826 3.043 34.72 3.043 c
-34.385 3.043 34.15 2.859 34.014 2.499 c
-34.014 -0.353 l
-33.367 -0.353 l
-33.367 3.631 l
-33.999 3.631 l
-34.014 3.219 l
-34.19 3.543 34.433 3.705 34.749 3.705 c
-34.855 3.705 34.944 3.682 35.013 3.645 c
-h
-37.556 -0.353 m
-37.516 -0.264 37.49 -0.118 37.483 0.088 c
-37.248 -0.257 36.954 -0.426 36.601 -0.426 c
-36.237 -0.426 35.954 -0.33 35.748 -0.132 c
-35.55 0.073 35.455 0.36 35.455 0.735 c
-35.455 1.135 35.59 1.455 35.866 1.691 c
-36.138 1.933 36.513 2.058 36.983 2.058 c
-37.468 2.058 l
-37.468 2.484 l
-37.468 2.72 37.413 2.885 37.307 2.984 c
-37.196 3.09 37.035 3.146 36.822 3.146 c
-36.623 3.146 36.461 3.087 36.336 2.969 c
-36.218 2.851 36.16 2.705 36.16 2.529 c
-35.513 2.529 l
-35.513 2.723 35.572 2.914 35.69 3.102 c
-35.815 3.285 35.977 3.433 36.174 3.543 c
-36.38 3.649 36.608 3.705 36.866 3.705 c
-37.266 3.705 37.571 3.601 37.777 3.396 c
-37.99 3.19 38.104 2.896 38.115 2.514 c
-38.115 0.5 l
-38.115 0.195 38.152 -0.07 38.233 -0.294 c
-38.233 -0.353 l
-h
-36.689 0.162 m
-36.854 0.162 37.005 0.206 37.145 0.294 c
-37.292 0.382 37.398 0.493 37.468 0.632 c
-37.468 1.573 l
-37.101 1.573 l
-36.785 1.573 36.542 1.503 36.366 1.367 c
-36.189 1.239 36.101 1.051 36.101 0.809 c
-36.101 0.58 36.145 0.416 36.234 0.309 c
-36.322 0.21 36.472 0.162 36.689 0.162 c
-39.732 3.631 m
-39.746 3.19 l
-40 3.532 40.324 3.705 40.717 3.705 c
-41.423 3.705 41.778 3.234 41.789 2.294 c
-41.789 -0.353 l
-41.143 -0.353 l
-41.143 2.263 l
-41.143 2.576 41.088 2.797 40.981 2.926 c
-40.871 3.05 40.717 3.117 40.511 3.117 c
-40.353 3.117 40.206 3.061 40.07 2.955 c
-39.941 2.845 39.838 2.708 39.761 2.543 c
-39.761 -0.353 l
-39.114 -0.353 l
-39.114 3.631 l
-h
-44.141 0.133 m
-44.355 0.133 44.527 0.195 44.656 0.324 c
-44.792 0.459 44.866 0.651 44.876 0.897 c
-45.494 0.897 l
-45.472 0.515 45.336 0.195 45.082 -0.058 c
-44.825 -0.305 44.513 -0.426 44.141 -0.426 c
-43.649 -0.426 43.274 -0.276 43.01 0.029 c
-42.753 0.341 42.628 0.809 42.628 1.426 c
-42.628 1.867 l
-42.628 2.462 42.753 2.918 43.01 3.234 c
-43.274 3.547 43.649 3.705 44.141 3.705 c
-44.542 3.705 44.862 3.572 45.097 3.308 c
-45.34 3.05 45.472 2.705 45.494 2.263 c
-44.876 2.263 l
-44.854 2.558 44.781 2.778 44.656 2.926 c
-44.538 3.072 44.365 3.146 44.141 3.146 c
-43.848 3.146 43.631 3.046 43.495 2.851 c
-43.355 2.664 43.281 2.356 43.274 1.926 c
-43.274 1.411 l
-43.274 0.941 43.341 0.607 43.48 0.412 c
-43.627 0.224 43.848 0.133 44.141 0.133 c
-46.89 3.219 m
-47.144 3.543 47.463 3.705 47.846 3.705 c
-48.552 3.705 48.908 3.234 48.918 2.294 c
-48.918 -0.353 l
-48.272 -0.353 l
-48.272 2.263 l
-48.272 2.576 48.217 2.797 48.11 2.926 c
-48 3.05 47.846 3.117 47.64 3.117 c
-47.482 3.117 47.335 3.061 47.199 2.955 c
-47.071 2.845 46.967 2.708 46.89 2.543 c
-46.89 -0.353 l
-46.244 -0.353 l
-46.244 5.292 l
-46.89 5.292 l
-h
-51.3 -0.426 m
-50.8 -0.426 50.418 -0.279 50.154 0.015 c
-49.889 0.309 49.757 0.742 49.757 1.323 c
-49.757 1.793 l
-49.757 2.389 49.882 2.855 50.139 3.19 c
-50.403 3.532 50.763 3.705 51.226 3.705 c
-51.686 3.705 52.028 3.55 52.255 3.248 c
-52.49 2.955 52.612 2.492 52.623 1.867 c
-52.623 1.44 l
-50.403 1.44 l
-50.403 1.353 l
-50.403 0.919 50.48 0.607 50.638 0.412 c
-50.804 0.224 51.035 0.133 51.33 0.133 c
-51.524 0.133 51.696 0.166 51.844 0.235 c
-51.991 0.312 52.126 0.43 52.255 0.588 c
-52.594 0.177 l
-52.307 -0.228 51.877 -0.426 51.3 -0.426 c
-51.226 3.146 m
-50.95 3.146 50.749 3.05 50.624 2.866 c
-50.495 2.679 50.422 2.389 50.403 1.999 c
-51.976 1.999 l
-51.976 2.087 l
-51.954 2.469 51.888 2.738 51.771 2.896 c
-51.653 3.061 51.469 3.146 51.226 3.146 c
-55.342 0.661 m
-55.342 0.809 55.287 0.929 55.181 1.029 c
-55.07 1.124 54.865 1.242 54.563 1.382 c
-54.218 1.529 53.975 1.65 53.828 1.75 c
-53.681 1.856 53.571 1.974 53.505 2.103 c
-53.435 2.227 53.402 2.385 53.402 2.573 c
-53.402 2.896 53.52 3.164 53.755 3.381 c
-53.99 3.594 54.291 3.705 54.666 3.705 c
-55.048 3.705 55.357 3.591 55.592 3.366 c
-55.827 3.138 55.945 2.851 55.945 2.499 c
-55.299 2.499 l
-55.299 2.675 55.239 2.826 55.122 2.955 c
-55.004 3.08 54.85 3.146 54.666 3.146 c
-54.468 3.146 54.317 3.09 54.21 2.984 c
-54.1 2.885 54.048 2.753 54.048 2.587 c
-54.048 2.458 54.086 2.352 54.166 2.263 c
-54.243 2.183 54.435 2.08 54.74 1.955 c
-55.218 1.768 55.548 1.58 55.725 1.397 c
-55.901 1.22 55.989 0.992 55.989 0.721 c
-55.989 0.368 55.864 0.088 55.621 -0.118 c
-55.386 -0.324 55.07 -0.426 54.68 -0.426 c
-54.258 -0.426 53.92 -0.309 53.666 -0.073 c
-53.41 0.169 53.284 0.474 53.284 0.838 c
-53.931 0.838 l
-53.938 0.611 54.008 0.434 54.137 0.309 c
-54.262 0.191 54.445 0.133 54.68 0.133 c
-54.894 0.133 55.056 0.181 55.166 0.279 c
-55.284 0.375 55.342 0.503 55.342 0.661 c
-58.532 1.823 m
-58.532 2.458 58.62 3.061 58.796 3.631 c
-58.973 4.197 59.216 4.692 59.532 5.116 c
-59.727 5.38 59.914 5.571 60.09 5.689 c
-60.222 5.233 l
-59.928 4.958 59.686 4.534 59.502 3.969 c
-59.315 3.399 59.212 2.768 59.193 2.072 c
-59.193 1.779 l
-59.193 0.915 59.311 0.151 59.546 -0.515 c
-59.73 -1.014 59.958 -1.396 60.222 -1.66 c
-60.09 -2.088 l
-59.862 -1.929 59.638 -1.679 59.414 -1.338 c
-58.826 -0.455 58.532 0.595 58.532 1.823 c
-63.883 0.794 m
-64.485 3.631 l
-65.132 3.631 l
-64.147 -0.353 l
-63.633 -0.353 l
-62.854 2.499 l
-62.104 -0.353 l
-61.574 -0.353 l
-60.619 3.631 l
-61.252 3.631 l
-61.869 0.867 l
-62.603 3.631 l
-63.118 3.631 l
-h
-66.513 -0.353 -0.646 3.984 re
-66.557 4.675 m
-66.557 4.564 66.528 4.472 66.47 4.395 c
-66.411 4.326 66.316 4.293 66.19 4.293 c
-66.073 4.293 65.977 4.326 65.911 4.395 c
-65.852 4.472 65.823 4.564 65.823 4.675 c
-65.823 4.792 65.852 4.884 65.911 4.954 c
-65.977 5.031 66.073 5.072 66.19 5.072 c
-66.316 5.072 66.411 5.031 66.47 4.954 c
-66.528 4.873 66.557 4.781 66.557 4.675 c
-68.38 4.586 m
-68.38 3.631 l
-68.983 3.631 l
-68.983 3.102 l
-68.38 3.102 l
-68.38 0.632 l
-68.38 0.474 68.402 0.357 68.454 0.279 c
-68.512 0.198 68.601 0.162 68.718 0.162 c
-68.807 0.162 68.895 0.177 68.983 0.206 c
-68.983 -0.353 l
-68.836 -0.401 68.681 -0.426 68.527 -0.426 c
-68.27 -0.426 68.076 -0.334 67.939 -0.147 c
-67.8 0.037 67.733 0.298 67.733 0.632 c
-67.733 3.102 l
-67.131 3.102 l
-67.131 3.631 l
-67.733 3.631 l
-67.733 4.586 l
-h
-70.394 3.219 m
-70.648 3.543 70.968 3.705 71.349 3.705 c
-72.055 3.705 72.412 3.234 72.423 2.294 c
-72.423 -0.353 l
-71.776 -0.353 l
-71.776 2.263 l
-71.776 2.576 71.721 2.797 71.614 2.926 c
-71.504 3.05 71.349 3.117 71.143 3.117 c
-70.985 3.117 70.839 3.061 70.703 2.955 c
-70.574 2.845 70.471 2.708 70.394 2.543 c
-70.394 -0.353 l
-69.747 -0.353 l
-69.747 5.292 l
-70.394 5.292 l
-h
-76.744 3.013 m
-76.656 3.032 76.556 3.043 76.45 3.043 c
-76.115 3.043 75.88 2.859 75.745 2.499 c
-75.745 -0.353 l
-75.097 -0.353 l
-75.097 3.631 l
-75.729 3.631 l
-75.745 3.219 l
-75.92 3.543 76.163 3.705 76.479 3.705 c
-76.586 3.705 76.674 3.682 76.744 3.645 c
-h
-78.743 -0.426 m
-78.243 -0.426 77.861 -0.279 77.597 0.015 c
-77.332 0.309 77.2 0.742 77.2 1.323 c
-77.2 1.793 l
-77.2 2.389 77.325 2.855 77.582 3.19 c
-77.846 3.532 78.206 3.705 78.669 3.705 c
-79.129 3.705 79.471 3.55 79.698 3.248 c
-79.934 2.955 80.055 2.492 80.066 1.867 c
-80.066 1.44 l
-77.846 1.44 l
-77.846 1.353 l
-77.846 0.919 77.923 0.607 78.081 0.412 c
-78.247 0.224 78.478 0.133 78.773 0.133 c
-78.968 0.133 79.14 0.166 79.287 0.235 c
-79.434 0.312 79.57 0.43 79.698 0.588 c
-80.036 0.177 l
-79.75 -0.228 79.32 -0.426 78.743 -0.426 c
-78.669 3.146 m
-78.394 3.146 78.192 3.05 78.067 2.866 c
-77.938 2.679 77.865 2.389 77.846 1.999 c
-79.419 1.999 l
-79.419 2.087 l
-79.397 2.469 79.331 2.738 79.213 2.896 c
-79.095 3.061 78.912 3.146 78.669 3.146 c
-81.462 3.631 m
-81.477 3.263 l
-81.72 3.557 82.039 3.705 82.432 3.705 c
-82.873 3.705 83.182 3.506 83.359 3.117 c
-83.612 3.506 83.961 3.705 84.402 3.705 c
-85.137 3.705 85.512 3.241 85.534 2.323 c
-85.534 -0.353 l
-84.888 -0.353 l
-84.888 2.263 l
-84.888 2.558 84.832 2.77 84.726 2.911 c
-84.626 3.046 84.454 3.117 84.211 3.117 c
-84.013 3.117 83.851 3.036 83.726 2.881 c
-83.608 2.734 83.539 2.543 83.521 2.308 c
-83.521 -0.353 l
-82.858 -0.353 l
-82.858 2.294 l
-82.858 2.841 82.638 3.117 82.197 3.117 c
-81.863 3.117 81.628 2.955 81.492 2.631 c
-81.492 -0.353 l
-80.845 -0.353 l
-80.845 3.631 l
-h
-86.372 1.823 m
-86.372 2.4 86.508 2.855 86.783 3.19 c
-87.066 3.532 87.438 3.705 87.901 3.705 c
-88.36 3.705 88.728 3.535 89.003 3.204 c
-89.286 2.881 89.433 2.433 89.444 1.867 c
-89.444 1.44 l
-89.444 0.871 89.301 0.416 89.017 0.073 c
-88.742 -0.261 88.375 -0.426 87.915 -0.426 c
-87.452 -0.426 87.081 -0.264 86.798 0.059 c
-86.523 0.389 86.38 0.831 86.372 1.382 c
-h
-87.018 1.44 m
-87.018 1.037 87.096 0.721 87.254 0.485 c
-87.419 0.25 87.639 0.133 87.915 0.133 c
-88.481 0.133 88.776 0.544 88.797 1.367 c
-88.797 1.823 l
-88.797 2.223 88.713 2.543 88.547 2.778 c
-88.389 3.021 88.173 3.146 87.901 3.146 c
-87.636 3.146 87.419 3.021 87.254 2.778 c
-87.096 2.543 87.018 2.223 87.018 1.823 c
-h
-91.134 4.586 m
-91.134 3.631 l
-91.737 3.631 l
-91.737 3.102 l
-91.134 3.102 l
-91.134 0.632 l
-91.134 0.474 91.157 0.357 91.208 0.279 c
-91.267 0.198 91.355 0.162 91.473 0.162 c
-91.56 0.162 91.649 0.177 91.737 0.206 c
-91.737 -0.353 l
-91.59 -0.401 91.436 -0.426 91.282 -0.426 c
-91.024 -0.426 90.829 -0.334 90.694 -0.147 c
-90.554 0.037 90.488 0.298 90.488 0.632 c
-90.488 3.102 l
-89.885 3.102 l
-89.885 3.631 l
-90.488 3.631 l
-90.488 4.586 l
-h
-93.927 -0.426 m
-93.428 -0.426 93.046 -0.279 92.78 0.015 c
-92.516 0.309 92.383 0.742 92.383 1.323 c
-92.383 1.793 l
-92.383 2.389 92.509 2.855 92.766 3.19 c
-93.031 3.532 93.391 3.705 93.854 3.705 c
-94.313 3.705 94.655 3.55 94.883 3.248 c
-95.118 2.955 95.24 2.492 95.25 1.867 c
-95.25 1.44 l
-93.031 1.44 l
-93.031 1.353 l
-93.031 0.919 93.108 0.607 93.266 0.412 c
-93.431 0.224 93.663 0.133 93.956 0.133 c
-94.151 0.133 94.324 0.166 94.471 0.235 c
-94.618 0.312 94.754 0.43 94.883 0.588 c
-95.221 0.177 l
-94.934 -0.228 94.504 -0.426 93.927 -0.426 c
-93.854 3.146 m
-93.578 3.146 93.376 3.05 93.251 2.866 c
-93.123 2.679 93.049 2.389 93.031 1.999 c
-94.604 1.999 l
-94.604 2.087 l
-94.581 2.469 94.515 2.738 94.398 2.896 c
-94.28 3.061 94.097 3.146 93.854 3.146 c
-97.426 1.779 m
-97.426 0.691 97.179 -0.276 96.691 -1.117 c
-96.426 -1.565 96.15 -1.889 95.868 -2.088 c
-95.75 -1.66 l
-96.051 -1.367 96.298 -0.914 96.485 -0.309 c
-96.68 0.298 96.779 0.963 96.779 1.691 c
-96.779 1.823 l
-96.779 2.753 96.624 3.587 96.323 4.322 c
-96.154 4.723 95.963 5.042 95.75 5.278 c
-95.868 5.689 l
-96.14 5.501 96.404 5.203 96.661 4.792 c
-97.168 3.94 97.426 2.932 97.426 1.779 c
-98.469 0 m
-98.469 0.118 98.502 0.214 98.573 0.294 c
-98.638 0.372 98.741 0.412 98.881 0.412 c
-99.028 0.412 99.134 0.372 99.204 0.294 c
-99.282 0.214 99.321 0.118 99.321 0 c
-99.321 -0.11 99.282 -0.202 99.204 -0.279 c
-99.134 -0.357 99.028 -0.397 98.881 -0.397 c
-98.741 -0.397 98.638 -0.357 98.573 -0.279 c
-98.502 -0.202 98.469 -0.11 98.469 0 c
-f
-Q
-0.113 0.082 0.09 0 k
-535.667 224.097 238.665 -12.895 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 540.8555 217.2583 cm
-0 0 m
-0 -0.188 -0.029 -0.353 -0.088 -0.5 c
--0.147 -0.647 -0.242 -0.776 -0.367 -0.882 c
--0.496 -0.992 -0.658 -1.081 -0.852 -1.147 c
--1.051 -1.206 -1.278 -1.243 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.264 l
--2.142 -1.257 -2.358 -1.22 -2.543 -1.162 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.927 c
--3.127 -0.819 -3.23 -0.691 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.214 -3.484 -0.015 c
--2.66 0.132 l
--2.642 0.033 -2.616 -0.059 -2.587 -0.148 c
--2.55 -0.228 -2.506 -0.302 -2.454 -0.368 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.675 c
--1.977 0.683 -1.992 0.691 -1.999 0.691 c
--2.167 0.727 -2.329 0.771 -2.484 0.823 c
--2.642 0.881 -2.786 0.959 -2.91 1.058 c
--3.039 1.153 -3.141 1.278 -3.218 1.425 c
--3.289 1.573 -3.322 1.756 -3.322 1.984 c
--3.322 2.179 -3.289 2.344 -3.218 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.836 c
--2.8 2.932 -2.645 3.002 -2.469 3.042 c
--2.293 3.09 -2.102 3.119 -1.896 3.131 c
--1.896 3.557 l
--1.543 3.557 l
--1.543 3.131 l
--1.319 3.119 -1.128 3.09 -0.97 3.042 c
--0.804 2.991 -0.669 2.917 -0.558 2.822 c
--0.44 2.734 -0.349 2.62 -0.279 2.484 c
--0.201 2.344 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.252 -1.213 2.458 -1.543 2.499 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.359 -1.469 1.352 c
--1.294 1.311 -1.117 1.263 -0.941 1.205 c
--0.756 1.146 -0.595 1.066 -0.455 0.97 c
--0.319 0.87 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.454 c
--2.26 2.425 -2.318 2.385 -2.366 2.337 c
--2.406 2.296 -2.436 2.248 -2.454 2.19 c
--2.476 2.131 -2.484 2.065 -2.484 1.999 c
--2.484 1.911 -2.469 1.837 -2.439 1.778 c
--2.41 1.72 -2.373 1.668 -2.322 1.631 c
--2.263 1.591 -2.2 1.558 -2.131 1.529 c
--2.065 1.499 -1.984 1.469 -1.896 1.44 c
-h
--0.837 -0.015 m
--0.837 0.091 -0.86 0.176 -0.897 0.235 c
--0.926 0.301 -0.977 0.357 -1.043 0.397 c
--1.102 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.529 -1.448 0.558 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.53 -1.028 -0.441 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.015 c
-6.402 -2.66 m
-6.185 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.52 -2.484 5.403 -2.396 c
-5.285 -2.315 5.185 -2.22 5.108 -2.103 c
-5.039 -1.985 4.991 -1.856 4.961 -1.72 c
-5.858 -1.617 l
-5.895 -1.754 5.964 -1.86 6.064 -1.941 c
-6.159 -2.029 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.058 6.681 -2.029 c
-6.758 -1.999 6.828 -1.945 6.887 -1.867 c
-6.945 -1.797 6.99 -1.706 7.019 -1.588 c
-7.056 -1.47 7.078 -1.324 7.078 -1.147 c
-7.078 -0.956 l
-7.078 -0.89 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.073 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.214 -0.897 5.108 -0.75 c
-5.009 -0.595 4.935 -0.412 4.888 -0.206 c
-4.836 0.008 4.815 0.243 4.815 0.5 c
-4.815 0.771 4.836 1.018 4.888 1.234 c
-4.946 1.448 5.027 1.631 5.137 1.778 c
-5.245 1.932 5.376 2.05 5.534 2.131 c
-5.689 2.219 5.876 2.263 6.093 2.263 c
-6.189 2.263 6.288 2.252 6.387 2.234 c
-6.483 2.212 6.571 2.179 6.652 2.131 c
-6.739 2.08 6.817 2.017 6.887 1.94 c
-6.964 1.859 7.026 1.768 7.078 1.66 c
-7.092 1.66 l
-7.092 1.808 l
-7.1 1.866 7.107 1.918 7.107 1.969 c
-7.115 2.028 7.122 2.076 7.122 2.117 c
-7.13 2.164 7.14 2.198 7.151 2.219 c
-8.004 2.219 l
-7.992 2.138 7.982 2.028 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.162 l
-7.975 -1.415 7.938 -1.636 7.872 -1.823 c
-7.802 -2.007 7.699 -2.161 7.563 -2.278 c
-7.423 -2.404 7.258 -2.5 7.063 -2.558 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.529 m
-7.092 0.742 7.067 0.918 7.019 1.058 c
-6.978 1.205 6.924 1.323 6.857 1.411 c
-6.799 1.499 6.729 1.558 6.652 1.587 c
-6.571 1.624 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.226 1.62 6.137 1.573 c
-6.056 1.532 5.991 1.462 5.931 1.367 c
-5.88 1.278 5.835 1.161 5.799 1.014 c
-5.77 0.874 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.339 c
-6.049 -0.515 6.211 -0.603 6.417 -0.603 c
-6.483 -0.603 6.556 -0.588 6.637 -0.559 c
-6.725 -0.522 6.799 -0.463 6.857 -0.383 c
-6.924 -0.294 6.978 -0.177 7.019 -0.03 c
-7.067 0.118 7.092 0.301 7.092 0.529 c
-11.036 -0.647 m
-12.168 -0.647 l
-12.168 -1.264 l
-8.86 -1.264 l
-8.86 -0.647 l
-10.124 -0.647 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.219 l
-11.036 2.219 l
-h
-10.124 3.513 0.912 -0.676 re
-10.124 2.836 m
-13.6 1.602 m
-13.057 1.602 l
-13.057 2.219 l
-13.644 2.219 l
-13.924 3.116 l
-14.498 3.116 l
-14.498 2.219 l
-15.732 2.219 l
-15.732 1.602 l
-14.498 1.602 l
-14.498 -0.103 l
-14.498 -0.324 l
-14.504 -0.393 14.527 -0.456 14.556 -0.515 c
-14.593 -0.566 14.648 -0.611 14.718 -0.647 c
-14.795 -0.676 14.909 -0.691 15.056 -0.691 c
-15.192 -0.691 15.327 -0.688 15.468 -0.676 c
-15.603 -0.659 15.736 -0.632 15.865 -0.603 c
-15.865 -1.206 l
-15.784 -1.216 15.707 -1.231 15.629 -1.249 c
-15.549 -1.261 15.471 -1.268 15.394 -1.279 c
-15.313 -1.286 15.225 -1.294 15.129 -1.294 c
-15.042 -1.301 14.942 -1.309 14.836 -1.309 c
-14.648 -1.309 14.486 -1.294 14.35 -1.264 c
-14.222 -1.228 14.107 -1.183 14.012 -1.132 c
-13.924 -1.085 13.85 -1.025 13.792 -0.956 c
-13.733 -0.879 13.689 -0.802 13.66 -0.721 c
-13.63 -0.632 13.608 -0.544 13.6 -0.456 c
-13.59 -0.36 13.586 -0.265 13.586 -0.177 c
-h
-21.12 -1.264 m
-21.12 -0.971 l
-21.126 -0.834 21.134 -0.676 21.134 -0.5 c
-21.134 3.513 l
-22.045 3.513 l
-22.045 2.234 l
-22.045 2.072 l
-22.045 1.896 l
-22.045 1.845 22.038 1.801 22.03 1.764 c
-22.03 1.675 l
-22.045 1.675 l
-22.093 1.782 22.155 1.874 22.236 1.955 c
-22.313 2.032 22.398 2.094 22.487 2.146 c
-22.574 2.194 22.666 2.227 22.766 2.248 c
-22.861 2.267 22.961 2.278 23.059 2.278 c
-23.273 2.278 23.46 2.234 23.618 2.146 c
-23.773 2.057 23.901 1.929 24 1.764 c
-24.106 1.606 24.184 1.415 24.235 1.19 c
-24.283 0.974 24.309 0.735 24.309 0.47 c
-24.309 0.213 24.28 -0.026 24.22 -0.25 c
-24.162 -0.467 24.077 -0.659 23.971 -0.823 c
-23.861 -0.981 23.728 -1.103 23.574 -1.191 c
-23.416 -1.279 23.236 -1.324 23.03 -1.324 c
-22.931 -1.324 22.832 -1.312 22.736 -1.294 c
-22.648 -1.272 22.56 -1.243 22.471 -1.191 c
-22.383 -1.132 22.302 -1.066 22.236 -0.985 c
-22.167 -0.908 22.104 -0.809 22.045 -0.691 c
-22.03 -0.691 l
-22.03 -0.853 l
-22.03 -0.912 22.024 -0.971 22.016 -1.029 c
-22.016 -1.081 22.009 -1.129 22.001 -1.176 c
-22.001 -1.216 21.994 -1.246 21.986 -1.264 c
-h
-22.03 0.5 m
-22.03 0.264 22.049 0.066 22.09 -0.088 c
-22.137 -0.246 22.196 -0.368 22.265 -0.456 c
-22.332 -0.544 22.406 -0.611 22.487 -0.647 c
-22.564 -0.688 22.641 -0.706 22.722 -0.706 c
-22.927 -0.706 23.082 -0.611 23.192 -0.412 c
-23.31 -0.217 23.368 0.077 23.368 0.47 c
-23.368 0.683 23.346 0.867 23.31 1.014 c
-23.28 1.168 23.236 1.294 23.177 1.381 c
-23.125 1.477 23.059 1.55 22.971 1.602 c
-22.89 1.65 22.803 1.675 22.707 1.675 c
-22.626 1.675 22.549 1.654 22.471 1.616 c
-22.391 1.576 22.317 1.514 22.251 1.425 c
-22.192 1.338 22.137 1.213 22.09 1.058 c
-22.049 0.911 22.03 0.723 22.03 0.5 c
-28.193 1.469 m
-28.094 1.477 27.991 1.488 27.884 1.499 c
-27.774 1.517 27.653 1.529 27.517 1.529 c
-27.341 1.529 27.183 1.488 27.046 1.411 c
-26.907 1.341 26.789 1.242 26.693 1.117 c
-26.606 0.988 26.535 0.841 26.488 0.675 c
-26.448 0.507 26.429 0.33 26.429 0.147 c
-26.429 -1.264 l
-25.533 -1.264 l
-25.533 0.985 l
-25.533 1.109 25.521 1.234 25.503 1.352 c
-25.492 1.477 25.477 1.595 25.459 1.705 c
-25.448 1.822 25.434 1.918 25.415 1.999 c
-25.393 2.087 25.375 2.161 25.356 2.219 c
-26.238 2.219 l
-26.246 2.167 26.257 2.117 26.267 2.057 c
-26.286 1.999 26.3 1.932 26.312 1.866 c
-26.33 1.808 26.344 1.741 26.356 1.675 c
-26.363 1.606 26.375 1.543 26.385 1.484 c
-26.4 1.484 l
-26.437 1.602 26.488 1.708 26.547 1.808 c
-26.613 1.903 26.693 1.988 26.782 2.057 c
-26.87 2.124 26.973 2.179 27.09 2.219 c
-27.216 2.256 27.362 2.278 27.532 2.278 c
-27.657 2.278 27.774 2.271 27.884 2.263 c
-28.002 2.252 28.105 2.238 28.193 2.219 c
-h
-30.196 -1.324 m
-30.026 -1.324 29.876 -1.301 29.741 -1.264 c
-29.612 -1.216 29.498 -1.147 29.402 -1.058 c
-29.314 -0.971 29.244 -0.864 29.197 -0.736 c
-29.145 -0.599 29.122 -0.449 29.122 -0.279 c
-29.122 -0.073 29.156 0.095 29.226 0.235 c
-29.292 0.382 29.388 0.492 29.505 0.573 c
-29.63 0.661 29.773 0.723 29.932 0.764 c
-30.097 0.801 30.273 0.827 30.46 0.837 c
-31.181 0.852 l
-31.181 1.028 l
-31.181 1.146 31.169 1.249 31.152 1.338 c
-31.129 1.425 31.096 1.492 31.048 1.543 c
-31.008 1.602 30.961 1.639 30.901 1.66 c
-30.843 1.679 30.776 1.691 30.71 1.691 c
-30.641 1.691 30.578 1.679 30.519 1.66 c
-30.468 1.65 30.42 1.624 30.373 1.587 c
-30.332 1.558 30.298 1.506 30.269 1.44 c
-30.248 1.381 30.233 1.301 30.225 1.205 c
-29.284 1.249 l
-29.314 1.396 29.358 1.532 29.417 1.66 c
-29.483 1.786 29.579 1.896 29.696 1.984 c
-29.814 2.08 29.953 2.153 30.122 2.204 c
-30.298 2.252 30.504 2.278 30.74 2.278 c
-31.181 2.278 31.511 2.167 31.74 1.955 c
-31.975 1.749 32.092 1.44 32.092 1.028 c
-32.092 -0.235 l
-32.092 -0.456 l
-32.099 -0.515 32.114 -0.57 32.137 -0.618 c
-32.154 -0.659 32.184 -0.691 32.224 -0.721 c
-32.261 -0.742 32.313 -0.75 32.372 -0.75 c
-32.438 -0.75 32.507 -0.746 32.577 -0.736 c
-32.577 -1.22 l
-32.519 -1.231 32.463 -1.243 32.415 -1.249 c
-32.375 -1.261 32.334 -1.268 32.297 -1.279 c
-32.257 -1.286 32.214 -1.294 32.166 -1.294 c
-32.114 -1.301 32.056 -1.309 31.989 -1.309 c
-31.761 -1.309 31.596 -1.257 31.489 -1.147 c
-31.379 -1.029 31.316 -0.864 31.298 -0.647 c
-31.283 -0.647 l
-31.214 -0.757 31.144 -0.853 31.078 -0.941 c
-31.008 -1.022 30.931 -1.088 30.843 -1.147 c
-30.755 -1.206 30.655 -1.249 30.549 -1.279 c
-30.45 -1.309 30.332 -1.324 30.196 -1.324 c
-31.181 0.353 m
-30.755 0.338 l
-30.655 0.338 30.564 0.33 30.475 0.323 c
-30.394 0.312 30.328 0.286 30.269 0.249 c
-30.211 0.209 30.159 0.151 30.122 0.073 c
-30.082 0.004 30.063 -0.088 30.063 -0.206 c
-30.063 -0.375 30.097 -0.497 30.167 -0.574 c
-30.233 -0.655 30.332 -0.691 30.46 -0.691 c
-30.567 -0.691 30.666 -0.669 30.755 -0.618 c
-30.85 -0.57 30.931 -0.507 30.99 -0.426 c
-31.056 -0.349 31.107 -0.262 31.137 -0.162 c
-31.166 -0.055 31.181 0.058 31.181 0.176 c
-h
-35.495 -1.264 m
-35.495 0.72 l
-35.495 1.022 35.451 1.242 35.362 1.381 c
-35.281 1.529 35.146 1.602 34.951 1.602 c
-34.841 1.602 34.738 1.576 34.643 1.529 c
-34.554 1.477 34.473 1.411 34.408 1.323 c
-34.348 1.234 34.297 1.124 34.26 0.999 c
-34.231 0.881 34.216 0.75 34.216 0.602 c
-34.216 -1.264 l
-33.305 -1.264 l
-33.305 1.44 l
-33.305 1.66 l
-33.305 1.749 33.297 1.826 33.29 1.896 c
-33.29 2.087 l
-33.29 2.219 l
-34.142 2.219 l
-34.15 2.19 34.157 2.146 34.157 2.087 c
-34.157 1.896 l
-34.165 1.826 34.172 1.756 34.172 1.691 c
-34.179 1.62 34.186 1.565 34.186 1.529 c
-34.202 1.529 l
-34.319 1.793 34.47 1.984 34.657 2.102 c
-34.841 2.219 35.061 2.278 35.318 2.278 c
-35.503 2.278 35.664 2.248 35.804 2.19 c
-35.939 2.131 36.054 2.043 36.141 1.926 c
-36.23 1.808 36.293 1.664 36.332 1.499 c
-36.38 1.341 36.407 1.153 36.407 0.941 c
-36.407 -1.264 l
-h
-38.923 -1.324 m
-38.637 -1.324 38.394 -1.283 38.188 -1.206 c
-37.982 -1.118 37.81 -0.996 37.674 -0.838 c
-37.535 -0.684 37.431 -0.497 37.365 -0.279 c
-37.296 -0.055 37.263 0.191 37.263 0.455 c
-37.263 0.75 37.296 1.007 37.365 1.234 c
-37.442 1.458 37.549 1.646 37.689 1.793 c
-37.836 1.947 38.012 2.065 38.218 2.146 c
-38.424 2.234 38.659 2.278 38.923 2.278 c
-39.148 2.278 39.35 2.248 39.526 2.19 c
-39.702 2.131 39.854 2.046 39.981 1.94 c
-40.107 1.841 40.21 1.72 40.291 1.573 c
-40.368 1.433 40.423 1.282 40.452 1.117 c
-39.541 1.072 l
-39.511 1.249 39.441 1.389 39.335 1.499 c
-39.235 1.606 39.092 1.66 38.909 1.66 c
-38.662 1.66 38.487 1.558 38.379 1.352 c
-38.269 1.153 38.218 0.867 38.218 0.484 c
-38.218 -0.309 38.453 -0.706 38.923 -0.706 c
-39.089 -0.706 39.232 -0.655 39.35 -0.544 c
-39.467 -0.437 39.541 -0.276 39.57 -0.059 c
-40.482 -0.103 l
-40.452 -0.272 40.397 -0.426 40.32 -0.574 c
-40.25 -0.721 40.147 -0.853 40.012 -0.971 c
-39.883 -1.081 39.725 -1.168 39.541 -1.235 c
-39.364 -1.294 39.158 -1.324 38.923 -1.324 c
-42.323 1.514 m
-42.441 1.786 42.591 1.984 42.778 2.102 c
-42.962 2.219 43.183 2.278 43.44 2.278 c
-43.646 2.278 43.815 2.242 43.954 2.175 c
-44.101 2.105 44.211 2.013 44.292 1.896 c
-44.38 1.778 44.44 1.635 44.469 1.469 c
-44.505 1.301 44.527 1.124 44.527 0.941 c
-44.527 -1.264 l
-43.616 -1.264 l
-43.616 0.735 l
-43.616 0.87 43.605 0.992 43.586 1.103 c
-43.576 1.209 43.55 1.297 43.513 1.367 c
-43.473 1.444 43.414 1.502 43.337 1.543 c
-43.267 1.58 43.175 1.602 43.058 1.602 c
-42.948 1.602 42.852 1.576 42.763 1.529 c
-42.676 1.477 42.595 1.411 42.528 1.323 c
-42.47 1.234 42.418 1.124 42.381 0.999 c
-42.352 0.881 42.337 0.75 42.337 0.602 c
-42.337 -1.264 l
-41.426 -1.264 l
-41.426 3.513 l
-42.337 3.513 l
-42.337 2.204 l
-42.337 2.135 42.329 2.065 42.323 1.999 c
-42.323 1.793 l
-42.323 1.734 42.315 1.679 42.308 1.631 c
-42.308 1.514 l
-h
-50.297 -2.631 m
-50.297 3.513 l
-52.222 3.513 l
-52.222 2.896 l
-51.149 2.896 l
-51.149 -2.014 l
-52.222 -2.014 l
-52.222 -2.631 l
-h
-55.802 -1.264 m
-55.802 0.72 l
-55.802 1.022 55.758 1.242 55.669 1.381 c
-55.588 1.529 55.453 1.602 55.258 1.602 c
-55.147 1.602 55.044 1.576 54.95 1.529 c
-54.861 1.477 54.78 1.411 54.714 1.323 c
-54.655 1.234 54.603 1.124 54.567 0.999 c
-54.537 0.881 54.522 0.75 54.522 0.602 c
-54.522 -1.264 l
-53.612 -1.264 l
-53.612 1.44 l
-53.612 1.66 l
-53.612 1.749 53.604 1.826 53.597 1.896 c
-53.597 2.087 l
-53.597 2.219 l
-54.449 2.219 l
-54.457 2.19 54.464 2.146 54.464 2.087 c
-54.464 1.896 l
-54.472 1.826 54.479 1.756 54.479 1.691 c
-54.486 1.62 54.493 1.565 54.493 1.529 c
-54.508 1.529 l
-54.626 1.793 54.776 1.984 54.964 2.102 c
-55.147 2.219 55.368 2.278 55.625 2.278 c
-55.809 2.278 55.97 2.248 56.11 2.19 c
-56.246 2.131 56.361 2.043 56.448 1.926 c
-56.536 1.808 56.599 1.664 56.639 1.499 c
-56.687 1.341 56.713 1.153 56.713 0.941 c
-56.713 -1.264 l
-h
-58.628 -1.324 m
-58.458 -1.324 58.308 -1.301 58.172 -1.264 c
-58.044 -1.216 57.93 -1.147 57.834 -1.058 c
-57.745 -0.971 57.676 -0.864 57.628 -0.736 c
-57.576 -0.599 57.554 -0.449 57.554 -0.279 c
-57.554 -0.073 57.587 0.095 57.657 0.235 c
-57.724 0.382 57.819 0.492 57.936 0.573 c
-58.062 0.661 58.204 0.723 58.363 0.764 c
-58.528 0.801 58.705 0.827 58.892 0.837 c
-59.613 0.852 l
-59.613 1.028 l
-59.613 1.146 59.602 1.249 59.583 1.338 c
-59.561 1.425 59.528 1.492 59.48 1.543 c
-59.44 1.602 59.392 1.639 59.333 1.66 c
-59.274 1.679 59.208 1.691 59.142 1.691 c
-59.072 1.691 59.01 1.679 58.951 1.66 c
-58.9 1.65 58.852 1.624 58.804 1.587 c
-58.763 1.558 58.73 1.506 58.701 1.44 c
-58.679 1.381 58.664 1.301 58.657 1.205 c
-57.716 1.249 l
-57.745 1.396 57.79 1.532 57.849 1.66 c
-57.915 1.786 58.01 1.896 58.127 1.984 c
-58.245 2.08 58.385 2.153 58.554 2.204 c
-58.73 2.252 58.936 2.278 59.172 2.278 c
-59.613 2.278 59.943 2.167 60.171 1.955 c
-60.406 1.749 60.523 1.44 60.523 1.028 c
-60.523 -0.235 l
-60.523 -0.456 l
-60.531 -0.515 60.546 -0.57 60.568 -0.618 c
-60.586 -0.659 60.616 -0.691 60.656 -0.721 c
-60.693 -0.742 60.744 -0.75 60.803 -0.75 c
-60.869 -0.75 60.939 -0.746 61.009 -0.736 c
-61.009 -1.22 l
-60.95 -1.231 60.895 -1.243 60.847 -1.249 c
-60.807 -1.261 60.766 -1.268 60.729 -1.279 c
-60.689 -1.286 60.645 -1.294 60.597 -1.294 c
-60.546 -1.301 60.487 -1.309 60.421 -1.309 c
-60.193 -1.309 60.028 -1.257 59.921 -1.147 c
-59.811 -1.029 59.748 -0.864 59.73 -0.647 c
-59.715 -0.647 l
-59.646 -0.757 59.576 -0.853 59.509 -0.941 c
-59.44 -1.022 59.363 -1.088 59.274 -1.147 c
-59.186 -1.206 59.087 -1.249 58.981 -1.279 c
-58.881 -1.309 58.763 -1.324 58.628 -1.324 c
-59.613 0.353 m
-59.186 0.338 l
-59.087 0.338 58.995 0.33 58.907 0.323 c
-58.826 0.312 58.76 0.286 58.701 0.249 c
-58.642 0.209 58.591 0.151 58.554 0.073 c
-58.514 0.004 58.495 -0.088 58.495 -0.206 c
-58.495 -0.375 58.528 -0.497 58.598 -0.574 c
-58.664 -0.655 58.763 -0.691 58.892 -0.691 c
-58.998 -0.691 59.098 -0.669 59.186 -0.618 c
-59.282 -0.57 59.363 -0.507 59.421 -0.426 c
-59.488 -0.349 59.538 -0.262 59.569 -0.162 c
-59.598 -0.055 59.613 0.058 59.613 0.176 c
-h
-62.894 -1.264 m
-62.894 0.852 l
-62.894 1.018 62.887 1.153 62.879 1.263 c
-62.869 1.371 62.85 1.455 62.821 1.514 c
-62.798 1.58 62.769 1.631 62.732 1.66 c
-62.703 1.691 62.663 1.705 62.615 1.705 c
-62.555 1.705 62.501 1.675 62.453 1.616 c
-62.412 1.565 62.38 1.492 62.35 1.396 c
-62.32 1.308 62.295 1.194 62.277 1.058 c
-62.266 0.918 62.262 0.768 62.262 0.602 c
-62.262 -1.264 l
-61.512 -1.264 l
-61.512 1.469 l
-61.512 1.705 l
-61.512 1.926 l
-61.512 2.003 61.505 2.065 61.497 2.117 c
-61.497 2.219 l
-62.173 2.219 l
-62.173 2.131 l
-62.173 1.984 l
-62.181 1.926 62.189 1.866 62.189 1.808 c
-62.189 1.646 l
-62.203 1.646 l
-62.221 1.734 62.251 1.811 62.291 1.881 c
-62.328 1.959 62.372 2.028 62.424 2.087 c
-62.482 2.146 62.549 2.19 62.63 2.219 c
-62.707 2.256 62.794 2.278 62.894 2.278 c
-63.078 2.278 63.218 2.223 63.305 2.117 c
-63.401 2.017 63.471 1.859 63.511 1.646 c
-63.526 1.646 l
-63.563 1.741 63.603 1.83 63.644 1.911 c
-63.691 1.988 63.746 2.05 63.806 2.102 c
-63.864 2.161 63.93 2.204 64.011 2.234 c
-64.088 2.263 64.176 2.278 64.276 2.278 c
-64.411 2.278 64.525 2.252 64.614 2.204 c
-64.702 2.153 64.768 2.08 64.82 1.984 c
-64.878 1.885 64.915 1.756 64.937 1.602 c
-64.967 1.455 64.982 1.271 64.982 1.058 c
-64.982 -1.264 l
-64.261 -1.264 l
-64.261 0.852 l
-64.261 1.018 64.253 1.153 64.246 1.263 c
-64.236 1.371 64.217 1.455 64.188 1.514 c
-64.165 1.58 64.136 1.631 64.099 1.66 c
-64.07 1.691 64.03 1.705 63.982 1.705 c
-63.864 1.705 63.769 1.616 63.702 1.44 c
-63.644 1.271 63.614 1.014 63.614 0.661 c
-63.614 -1.264 l
-h
-67.351 -1.324 m
-67.094 -1.324 66.867 -1.286 66.661 -1.22 c
-66.455 -1.143 66.278 -1.029 66.131 -0.882 c
-65.984 -0.728 65.867 -0.537 65.778 -0.309 c
-65.698 -0.085 65.661 0.18 65.661 0.484 c
-65.661 0.816 65.705 1.095 65.793 1.323 c
-65.888 1.558 66.017 1.741 66.175 1.881 c
-66.341 2.017 66.528 2.117 66.734 2.175 c
-66.94 2.242 67.149 2.278 67.366 2.278 c
-67.638 2.278 67.873 2.227 68.072 2.131 c
-68.278 2.043 68.443 1.911 68.571 1.734 c
-68.708 1.565 68.807 1.359 68.865 1.117 c
-68.932 0.881 68.968 0.617 68.968 0.323 c
-68.968 0.309 l
-66.602 0.309 l
-66.602 0.162 66.617 0.022 66.646 -0.103 c
-66.682 -0.231 66.738 -0.345 66.808 -0.441 c
-66.873 -0.53 66.958 -0.599 67.058 -0.647 c
-67.153 -0.698 67.267 -0.721 67.396 -0.721 c
-67.55 -0.721 67.689 -0.688 67.808 -0.618 c
-67.932 -0.551 68.02 -0.449 68.072 -0.309 c
-68.909 -0.383 l
-68.88 -0.482 68.825 -0.588 68.748 -0.706 c
-68.667 -0.816 68.564 -0.919 68.439 -1.014 c
-68.321 -1.103 68.167 -1.176 67.983 -1.235 c
-67.808 -1.294 67.594 -1.324 67.351 -1.324 c
-67.351 1.705 m
-67.263 1.705 67.175 1.691 67.087 1.66 c
-66.999 1.631 66.918 1.58 66.852 1.514 c
-66.782 1.444 66.723 1.356 66.675 1.249 c
-66.634 1.139 66.617 1.014 66.617 0.867 c
-68.086 0.867 l
-68.086 1.003 68.061 1.124 68.013 1.234 c
-67.972 1.341 67.918 1.429 67.851 1.499 c
-67.792 1.565 67.719 1.616 67.631 1.646 c
-67.542 1.683 67.447 1.705 67.351 1.705 c
-70.221 -2.631 m
-70.221 -2.014 l
-71.295 -2.014 l
-71.295 2.896 l
-70.221 2.896 l
-70.221 3.513 l
-72.147 3.513 l
-72.147 -2.631 l
-h
-f
-Q
-q 1 0 0 1 626.5183 202.8085 cm
-0 0 m
--0.029 -0.58 -0.191 -1.022 -0.485 -1.323 c
--0.779 -1.627 -1.198 -1.778 -1.735 -1.778 c
--2.263 -1.778 -2.69 -1.579 -3.013 -1.176 c
--3.329 -0.764 -3.484 -0.205 -3.484 0.5 c
--3.484 1.47 l
--3.484 2.165 -3.322 2.712 -2.999 3.117 c
--2.676 3.517 -2.231 3.719 -1.661 3.719 c
--1.154 3.719 -0.757 3.561 -0.47 3.248 c
--0.187 2.944 -0.029 2.502 0 1.926 c
--0.691 1.926 l
--0.721 2.367 -0.816 2.679 -0.97 2.866 c
--1.118 3.051 -1.349 3.146 -1.661 3.146 c
--2.036 3.146 -2.319 2.999 -2.514 2.705 c
--2.712 2.419 -2.807 2.003 -2.807 1.455 c
--2.807 0.47 l
--2.807 -0.07 -2.716 -0.484 -2.529 -0.779 c
--2.344 -1.065 -2.08 -1.205 -1.735 -1.205 c
--1.382 -1.205 -1.128 -1.117 -0.97 -0.941 c
--0.816 -0.764 -0.721 -0.452 -0.691 0 c
-h
-2.454 1.661 m
-2.367 1.679 2.267 1.691 2.161 1.691 c
-1.826 1.691 1.591 1.507 1.455 1.147 c
-1.455 -1.705 l
-0.808 -1.705 l
-0.808 2.278 l
-1.44 2.278 l
-1.455 1.867 l
-1.631 2.19 1.874 2.352 2.19 2.352 c
-2.296 2.352 2.385 2.33 2.454 2.294 c
-h
-4.453 -1.778 m
-3.954 -1.778 3.572 -1.631 3.308 -1.338 c
-3.042 -1.043 2.911 -0.61 2.911 -0.029 c
-2.911 0.441 l
-2.911 1.037 3.036 1.503 3.293 1.837 c
-3.557 2.18 3.917 2.352 4.38 2.352 c
-4.839 2.352 5.182 2.198 5.409 1.897 c
-5.644 1.602 5.766 1.139 5.777 0.515 c
-5.777 0.088 l
-3.557 0.088 l
-3.557 0 l
-3.557 -0.434 3.634 -0.746 3.792 -0.941 c
-3.958 -1.128 4.189 -1.22 4.484 -1.22 c
-4.678 -1.22 4.85 -1.186 4.997 -1.117 c
-5.145 -1.04 5.28 -0.922 5.409 -0.764 c
-5.747 -1.176 l
-5.461 -1.579 5.031 -1.778 4.453 -1.778 c
-4.38 1.794 m
-4.104 1.794 3.902 1.698 3.778 1.515 c
-3.649 1.326 3.576 1.037 3.557 0.647 c
-5.13 0.647 l
-5.13 0.736 l
-5.108 1.118 5.041 1.386 4.924 1.544 c
-4.806 1.709 4.623 1.794 4.38 1.794 c
-8.599 -1.705 m
-8.559 -1.616 8.532 -1.469 8.525 -1.263 c
-8.29 -1.61 7.996 -1.778 7.643 -1.778 c
-7.279 -1.778 6.996 -1.683 6.791 -1.484 c
-6.593 -1.278 6.497 -0.992 6.497 -0.617 c
-6.497 -0.216 6.633 0.103 6.909 0.339 c
-7.181 0.581 7.555 0.706 8.025 0.706 c
-8.511 0.706 l
-8.511 1.132 l
-8.511 1.367 8.455 1.532 8.349 1.632 c
-8.239 1.738 8.077 1.794 7.864 1.794 c
-7.665 1.794 7.504 1.735 7.379 1.617 c
-7.262 1.5 7.202 1.353 7.202 1.176 c
-6.556 1.176 l
-6.556 1.371 6.614 1.562 6.732 1.75 c
-6.857 1.933 7.019 2.08 7.217 2.19 c
-7.423 2.297 7.651 2.352 7.908 2.352 c
-8.309 2.352 8.613 2.249 8.819 2.043 c
-9.033 1.837 9.147 1.544 9.157 1.162 c
-9.157 -0.852 l
-9.157 -1.157 9.194 -1.421 9.275 -1.646 c
-9.275 -1.705 l
-h
-7.732 -1.19 m
-7.897 -1.19 8.048 -1.146 8.187 -1.058 c
-8.334 -0.97 8.441 -0.86 8.511 -0.72 c
-8.511 0.221 l
-8.143 0.221 l
-7.827 0.221 7.584 0.151 7.408 0.015 c
-7.231 -0.114 7.144 -0.301 7.144 -0.544 c
-7.144 -0.771 7.188 -0.937 7.276 -1.043 c
-7.364 -1.143 7.515 -1.19 7.732 -1.19 c
-11.009 3.234 m
-11.009 2.278 l
-11.612 2.278 l
-11.612 1.75 l
-11.009 1.75 l
-11.009 -0.72 l
-11.009 -0.878 11.032 -0.995 11.083 -1.072 c
-11.142 -1.153 11.23 -1.19 11.347 -1.19 c
-11.436 -1.19 11.524 -1.176 11.612 -1.146 c
-11.612 -1.705 l
-11.465 -1.753 11.31 -1.778 11.156 -1.778 c
-10.899 -1.778 10.705 -1.687 10.568 -1.499 c
-10.429 -1.315 10.363 -1.055 10.363 -0.72 c
-10.363 1.75 l
-9.76 1.75 l
-9.76 2.278 l
-10.363 2.278 l
-10.363 3.234 l
-h
-13.802 -1.778 m
-13.303 -1.778 12.92 -1.631 12.656 -1.338 c
-12.391 -1.043 12.259 -0.61 12.259 -0.029 c
-12.259 0.441 l
-12.259 1.037 12.384 1.503 12.641 1.837 c
-12.906 2.18 13.266 2.352 13.729 2.352 c
-14.188 2.352 14.53 2.198 14.757 1.897 c
-14.992 1.602 15.114 1.139 15.125 0.515 c
-15.125 0.088 l
-12.906 0.088 l
-12.906 0 l
-12.906 -0.434 12.983 -0.746 13.141 -0.941 c
-13.306 -1.128 13.538 -1.22 13.832 -1.22 c
-14.026 -1.22 14.199 -1.186 14.346 -1.117 c
-14.493 -1.04 14.629 -0.922 14.757 -0.764 c
-15.096 -1.176 l
-14.809 -1.579 14.379 -1.778 13.802 -1.778 c
-13.729 1.794 m
-13.453 1.794 13.251 1.698 13.126 1.515 c
-12.997 1.326 12.924 1.037 12.906 0.647 c
-14.479 0.647 l
-14.479 0.736 l
-14.456 1.118 14.39 1.386 14.273 1.544 c
-14.155 1.709 13.972 1.794 13.729 1.794 c
-18.242 2.278 m
-18.256 1.837 l
-18.51 2.18 18.834 2.352 19.226 2.352 c
-19.931 2.352 20.288 1.881 20.299 0.941 c
-20.299 -1.705 l
-19.653 -1.705 l
-19.653 0.912 l
-19.653 1.224 19.597 1.444 19.491 1.573 c
-19.381 1.698 19.226 1.764 19.021 1.764 c
-18.863 1.764 18.715 1.709 18.58 1.602 c
-18.451 1.492 18.348 1.357 18.271 1.191 c
-18.271 -1.705 l
-17.624 -1.705 l
-17.624 2.278 l
-h
-22.695 -1.778 m
-22.196 -1.778 21.813 -1.631 21.549 -1.338 c
-21.284 -1.043 21.151 -0.61 21.151 -0.029 c
-21.151 0.441 l
-21.151 1.037 21.277 1.503 21.534 1.837 c
-21.799 2.18 22.159 2.352 22.622 2.352 c
-23.081 2.352 23.422 2.198 23.651 1.897 c
-23.886 1.602 24.008 1.139 24.018 0.515 c
-24.018 0.088 l
-21.799 0.088 l
-21.799 0 l
-21.799 -0.434 21.876 -0.746 22.034 -0.941 c
-22.2 -1.128 22.431 -1.22 22.724 -1.22 c
-22.919 -1.22 23.092 -1.186 23.239 -1.117 c
-23.386 -1.04 23.522 -0.922 23.651 -0.764 c
-23.989 -1.176 l
-23.702 -1.579 23.272 -1.778 22.695 -1.778 c
-22.622 1.794 m
-22.346 1.794 22.144 1.698 22.019 1.515 c
-21.891 1.326 21.817 1.037 21.799 0.647 c
-23.372 0.647 l
-23.372 0.736 l
-23.349 1.118 23.283 1.386 23.166 1.544 c
-23.048 1.709 22.865 1.794 22.622 1.794 c
-27.767 -0.558 m
-28.369 2.278 l
-29.016 2.278 l
-28.031 -1.705 l
-27.517 -1.705 l
-26.738 1.147 l
-25.988 -1.705 l
-25.458 -1.705 l
-24.503 2.278 l
-25.136 2.278 l
-25.753 -0.484 l
-26.487 2.278 l
-27.002 2.278 l
-h
-34.293 0.088 m
-34.293 -0.529 34.179 -0.995 33.955 -1.308 c
-33.738 -1.624 33.415 -1.778 32.984 -1.778 c
-32.562 -1.778 32.249 -1.598 32.043 -1.234 c
-32.014 -1.705 l
-31.412 -1.705 l
-31.412 3.94 l
-32.058 3.94 l
-32.058 1.837 l
-32.272 2.18 32.581 2.352 32.984 2.352 c
-33.415 2.352 33.738 2.194 33.955 1.881 c
-34.179 1.577 34.293 1.11 34.293 0.485 c
-h
-33.646 0.47 m
-33.646 0.941 33.576 1.272 33.44 1.47 c
-33.312 1.665 33.102 1.764 32.808 1.764 c
-32.474 1.764 32.224 1.58 32.058 1.22 c
-32.058 -0.661 l
-32.224 -1.025 32.477 -1.205 32.823 -1.205 c
-33.117 -1.205 33.327 -1.103 33.455 -0.897 c
-33.58 -0.691 33.646 -0.374 33.646 0.059 c
-h
-36.777 1.661 m
-36.689 1.679 36.589 1.691 36.483 1.691 c
-36.149 1.691 35.914 1.507 35.777 1.147 c
-35.777 -1.705 l
-35.131 -1.705 l
-35.131 2.278 l
-35.763 2.278 l
-35.777 1.867 l
-35.954 2.19 36.197 2.352 36.512 2.352 c
-36.619 2.352 36.708 2.33 36.777 2.294 c
-h
-39.32 -1.705 m
-39.28 -1.616 39.254 -1.469 39.247 -1.263 c
-39.011 -1.61 38.717 -1.778 38.364 -1.778 c
-38 -1.778 37.718 -1.683 37.512 -1.484 c
-37.313 -1.278 37.217 -0.992 37.217 -0.617 c
-37.217 -0.216 37.354 0.103 37.63 0.339 c
-37.901 0.581 38.276 0.706 38.746 0.706 c
-39.232 0.706 l
-39.232 1.132 l
-39.232 1.367 39.176 1.532 39.07 1.632 c
-38.96 1.738 38.798 1.794 38.585 1.794 c
-38.387 1.794 38.225 1.735 38.1 1.617 c
-37.982 1.5 37.923 1.353 37.923 1.176 c
-37.277 1.176 l
-37.277 1.371 37.335 1.562 37.453 1.75 c
-37.578 1.933 37.74 2.08 37.938 2.19 c
-38.144 2.297 38.372 2.352 38.629 2.352 c
-39.029 2.352 39.334 2.249 39.54 2.043 c
-39.754 1.837 39.868 1.544 39.879 1.162 c
-39.879 -0.852 l
-39.879 -1.157 39.916 -1.421 39.996 -1.646 c
-39.996 -1.705 l
-h
-38.453 -1.19 m
-38.618 -1.19 38.769 -1.146 38.908 -1.058 c
-39.056 -0.97 39.162 -0.86 39.232 -0.72 c
-39.232 0.221 l
-38.864 0.221 l
-38.549 0.221 38.306 0.151 38.129 0.015 c
-37.953 -0.114 37.865 -0.301 37.865 -0.544 c
-37.865 -0.771 37.909 -0.937 37.997 -1.043 c
-38.085 -1.143 38.235 -1.19 38.453 -1.19 c
-41.495 2.278 m
-41.51 1.837 l
-41.763 2.18 42.087 2.352 42.48 2.352 c
-43.185 2.352 43.542 1.881 43.553 0.941 c
-43.553 -1.705 l
-42.906 -1.705 l
-42.906 0.912 l
-42.906 1.224 42.852 1.444 42.744 1.573 c
-42.634 1.698 42.48 1.764 42.274 1.764 c
-42.117 1.764 41.969 1.709 41.834 1.602 c
-41.705 1.492 41.602 1.357 41.525 1.191 c
-41.525 -1.705 l
-40.878 -1.705 l
-40.878 2.278 l
-h
-45.905 -1.22 m
-46.118 -1.22 46.291 -1.157 46.42 -1.028 c
-46.555 -0.893 46.629 -0.702 46.64 -0.455 c
-47.257 -0.455 l
-47.235 -0.837 47.099 -1.157 46.846 -1.411 c
-46.588 -1.657 46.276 -1.778 45.905 -1.778 c
-45.412 -1.778 45.038 -1.627 44.773 -1.323 c
-44.516 -1.01 44.391 -0.544 44.391 0.073 c
-44.391 0.515 l
-44.391 1.11 44.516 1.565 44.773 1.881 c
-45.038 2.194 45.412 2.352 45.905 2.352 c
-46.306 2.352 46.625 2.22 46.86 1.955 c
-47.103 1.698 47.235 1.353 47.257 0.912 c
-46.64 0.912 l
-46.618 1.206 46.545 1.426 46.42 1.573 c
-46.302 1.72 46.129 1.794 45.905 1.794 c
-45.611 1.794 45.394 1.694 45.258 1.5 c
-45.119 1.312 45.045 1.004 45.038 0.574 c
-45.038 0.059 l
-45.038 -0.411 45.104 -0.746 45.244 -0.941 c
-45.391 -1.128 45.611 -1.22 45.905 -1.22 c
-48.654 1.867 m
-48.907 2.19 49.227 2.352 49.609 2.352 c
-50.314 2.352 50.671 1.881 50.682 0.941 c
-50.682 -1.705 l
-50.035 -1.705 l
-50.035 0.912 l
-50.035 1.224 49.98 1.444 49.874 1.573 c
-49.763 1.698 49.609 1.764 49.404 1.764 c
-49.246 1.764 49.098 1.709 48.963 1.602 c
-48.834 1.492 48.731 1.357 48.654 1.191 c
-48.654 -1.705 l
-48.007 -1.705 l
-48.007 3.94 l
-48.654 3.94 l
-h
-51.652 -2.778 m
-51.255 -2.514 l
-51.49 -2.19 51.612 -1.855 51.623 -1.514 c
-51.623 -0.897 l
-52.284 -0.897 l
-52.284 -1.425 l
-52.284 -1.683 52.219 -1.929 52.093 -2.175 c
-51.976 -2.418 51.829 -2.62 51.652 -2.778 c
-56.489 1.661 m
-56.4 1.679 56.301 1.691 56.194 1.691 c
-55.86 1.691 55.625 1.507 55.488 1.147 c
-55.488 -1.705 l
-54.842 -1.705 l
-54.842 2.278 l
-55.474 2.278 l
-55.488 1.867 l
-55.665 2.19 55.908 2.352 56.224 2.352 c
-56.33 2.352 56.419 2.33 56.489 2.294 c
-h
-58.488 -1.778 m
-57.988 -1.778 57.605 -1.631 57.341 -1.338 c
-57.077 -1.043 56.944 -0.61 56.944 -0.029 c
-56.944 0.441 l
-56.944 1.037 57.069 1.503 57.326 1.837 c
-57.591 2.18 57.951 2.352 58.414 2.352 c
-58.873 2.352 59.215 2.198 59.442 1.897 c
-59.678 1.602 59.799 1.139 59.81 0.515 c
-59.81 0.088 l
-57.591 0.088 l
-57.591 0 l
-57.591 -0.434 57.668 -0.746 57.826 -0.941 c
-57.991 -1.128 58.223 -1.22 58.517 -1.22 c
-58.711 -1.22 58.885 -1.186 59.031 -1.117 c
-59.178 -1.04 59.315 -0.922 59.442 -0.764 c
-59.781 -1.176 l
-59.494 -1.579 59.064 -1.778 58.488 -1.778 c
-58.414 1.794 m
-58.139 1.794 57.936 1.698 57.811 1.515 c
-57.682 1.326 57.609 1.037 57.591 0.647 c
-59.164 0.647 l
-59.164 0.736 l
-59.141 1.118 59.076 1.386 58.958 1.544 c
-58.84 1.709 58.657 1.794 58.414 1.794 c
-60.884 -1.705 m
-60.884 1.75 l
-60.354 1.75 l
-60.354 2.278 l
-60.884 2.278 l
-60.884 2.735 l
-60.884 3.135 60.979 3.447 61.177 3.675 c
-61.383 3.899 61.663 4.013 62.015 4.013 c
-62.151 4.013 62.283 3.992 62.412 3.954 c
-62.382 3.41 l
-62.283 3.429 62.185 3.44 62.089 3.44 c
-61.714 3.44 61.53 3.175 61.53 2.646 c
-61.53 2.278 l
-62.206 2.278 l
-62.206 1.75 l
-61.53 1.75 l
-61.53 -1.705 l
-h
-64.308 -1.778 m
-63.808 -1.778 63.427 -1.631 63.162 -1.338 c
-62.897 -1.043 62.765 -0.61 62.765 -0.029 c
-62.765 0.441 l
-62.765 1.037 62.89 1.503 63.147 1.837 c
-63.411 2.18 63.772 2.352 64.235 2.352 c
-64.695 2.352 65.036 2.198 65.264 1.897 c
-65.499 1.602 65.62 1.139 65.632 0.515 c
-65.632 0.088 l
-63.411 0.088 l
-63.411 0 l
-63.411 -0.434 63.489 -0.746 63.647 -0.941 c
-63.812 -1.128 64.044 -1.22 64.338 -1.22 c
-64.533 -1.22 64.705 -1.186 64.852 -1.117 c
-64.999 -1.04 65.135 -0.922 65.264 -0.764 c
-65.601 -1.176 l
-65.315 -1.579 64.886 -1.778 64.308 -1.778 c
-64.235 1.794 m
-63.959 1.794 63.757 1.698 63.633 1.515 c
-63.504 1.326 63.43 1.037 63.411 0.647 c
-64.984 0.647 l
-64.984 0.736 l
-64.963 1.118 64.896 1.386 64.778 1.544 c
-64.661 1.709 64.477 1.794 64.235 1.794 c
-68.057 1.661 m
-67.968 1.679 67.869 1.691 67.762 1.691 c
-67.428 1.691 67.193 1.507 67.057 1.147 c
-67.057 -1.705 l
-66.411 -1.705 l
-66.411 2.278 l
-67.043 2.278 l
-67.057 1.867 l
-67.234 2.19 67.476 2.352 67.792 2.352 c
-67.899 2.352 67.987 2.33 68.057 2.294 c
-h
-70.056 -1.778 m
-69.555 -1.778 69.173 -1.631 68.909 -1.338 c
-68.645 -1.043 68.512 -0.61 68.512 -0.029 c
-68.512 0.441 l
-68.512 1.037 68.637 1.503 68.894 1.837 c
-69.159 2.18 69.519 2.352 69.982 2.352 c
-70.442 2.352 70.783 2.198 71.011 1.897 c
-71.246 1.602 71.367 1.139 71.379 0.515 c
-71.379 0.088 l
-69.159 0.088 l
-69.159 0 l
-69.159 -0.434 69.236 -0.746 69.395 -0.941 c
-69.559 -1.128 69.791 -1.22 70.085 -1.22 c
-70.28 -1.22 70.453 -1.186 70.6 -1.117 c
-70.746 -1.04 70.883 -0.922 71.011 -0.764 c
-71.349 -1.176 l
-71.062 -1.579 70.633 -1.778 70.056 -1.778 c
-69.982 1.794 m
-69.707 1.794 69.505 1.698 69.38 1.515 c
-69.251 1.326 69.177 1.037 69.159 0.647 c
-70.731 0.647 l
-70.731 0.736 l
-70.71 1.118 70.644 1.386 70.526 1.544 c
-70.409 1.709 70.224 1.794 69.982 1.794 c
-72.775 2.278 m
-72.79 1.837 l
-73.043 2.18 73.366 2.352 73.76 2.352 c
-74.465 2.352 74.822 1.881 74.833 0.941 c
-74.833 -1.705 l
-74.186 -1.705 l
-74.186 0.912 l
-74.186 1.224 74.131 1.444 74.024 1.573 c
-73.914 1.698 73.76 1.764 73.554 1.764 c
-73.396 1.764 73.249 1.709 73.113 1.602 c
-72.984 1.492 72.882 1.357 72.805 1.191 c
-72.805 -1.705 l
-72.157 -1.705 l
-72.157 2.278 l
-h
-77.185 -1.22 m
-77.397 -1.22 77.57 -1.157 77.699 -1.028 c
-77.835 -0.893 77.908 -0.702 77.919 -0.455 c
-78.537 -0.455 l
-78.515 -0.837 78.379 -1.157 78.126 -1.411 c
-77.868 -1.657 77.555 -1.778 77.185 -1.778 c
-76.692 -1.778 76.317 -1.627 76.053 -1.323 c
-75.795 -1.01 75.67 -0.544 75.67 0.073 c
-75.67 0.515 l
-75.67 1.11 75.795 1.565 76.053 1.881 c
-76.317 2.194 76.692 2.352 77.185 2.352 c
-77.586 2.352 77.904 2.22 78.14 1.955 c
-78.382 1.698 78.515 1.353 78.537 0.912 c
-77.919 0.912 l
-77.898 1.206 77.825 1.426 77.699 1.573 c
-77.582 1.72 77.409 1.794 77.185 1.794 c
-76.89 1.794 76.674 1.694 76.538 1.5 c
-76.398 1.312 76.325 1.004 76.317 0.574 c
-76.317 0.059 l
-76.317 -0.411 76.383 -0.746 76.523 -0.941 c
-76.67 -1.128 76.89 -1.22 77.185 -1.22 c
-79.992 -1.705 -0.646 3.983 re
-80.036 3.323 m
-80.036 3.212 80.007 3.12 79.948 3.043 c
-79.889 2.973 79.793 2.94 79.668 2.94 c
-79.551 2.94 79.456 2.973 79.39 3.043 c
-79.331 3.12 79.301 3.212 79.301 3.323 c
-79.301 3.44 79.331 3.532 79.39 3.601 c
-79.456 3.678 79.551 3.719 79.668 3.719 c
-79.793 3.719 79.889 3.678 79.948 3.601 c
-80.007 3.521 80.036 3.429 80.036 3.323 c
-81.624 2.278 m
-81.638 1.837 l
-81.892 2.18 82.215 2.352 82.608 2.352 c
-83.314 2.352 83.67 1.881 83.682 0.941 c
-83.682 -1.705 l
-83.035 -1.705 l
-83.035 0.912 l
-83.035 1.224 82.98 1.444 82.873 1.573 c
-82.763 1.698 82.608 1.764 82.403 1.764 c
-82.245 1.764 82.098 1.709 81.962 1.602 c
-81.833 1.492 81.73 1.357 81.653 1.191 c
-81.653 -1.705 l
-81.006 -1.705 l
-81.006 2.278 l
-h
-84.52 0.47 m
-84.52 1.088 84.63 1.551 84.857 1.867 c
-85.081 2.19 85.416 2.352 85.857 2.352 c
-86.257 2.352 86.563 2.176 86.768 1.823 c
-86.812 2.278 l
-87.4 2.278 l
-87.4 -1.749 l
-87.4 -2.238 87.272 -2.616 87.018 -2.881 c
-86.762 -3.145 86.409 -3.278 85.96 -3.278 c
-85.761 -3.278 85.541 -3.226 85.299 -3.131 c
-85.052 -3.031 84.873 -2.91 84.755 -2.763 c
-85.019 -2.322 l
-85.284 -2.587 85.582 -2.719 85.916 -2.719 c
-86.452 -2.719 86.728 -2.425 86.739 -1.837 c
-86.739 -1.308 l
-86.533 -1.624 86.232 -1.778 85.842 -1.778 c
-85.43 -1.778 85.108 -1.627 84.873 -1.323 c
-84.645 -1.01 84.527 -0.558 84.52 0.03 c
-h
-85.181 0.088 m
-85.181 -0.353 85.243 -0.683 85.372 -0.897 c
-85.497 -1.103 85.714 -1.205 86.018 -1.205 c
-86.342 -1.205 86.581 -1.04 86.739 -0.706 c
-86.739 1.279 l
-86.57 1.602 86.332 1.764 86.018 1.764 c
-85.725 1.764 85.508 1.661 85.372 1.455 c
-85.243 1.249 85.181 0.927 85.181 0.485 c
-h
-90.928 3.234 m
-90.928 2.278 l
-91.531 2.278 l
-91.531 1.75 l
-90.928 1.75 l
-90.928 -0.72 l
-90.928 -0.878 90.951 -0.995 91.001 -1.072 c
-91.061 -1.153 91.149 -1.19 91.267 -1.19 c
-91.354 -1.19 91.443 -1.176 91.531 -1.146 c
-91.531 -1.705 l
-91.384 -1.753 91.23 -1.778 91.075 -1.778 c
-90.818 -1.778 90.623 -1.687 90.487 -1.499 c
-90.348 -1.315 90.282 -1.055 90.282 -0.72 c
-90.282 1.75 l
-89.679 1.75 l
-89.679 2.278 l
-90.282 2.278 l
-90.282 3.234 l
-h
-92.942 1.867 m
-93.195 2.19 93.515 2.352 93.897 2.352 c
-94.603 2.352 94.959 1.881 94.97 0.941 c
-94.97 -1.705 l
-94.324 -1.705 l
-94.324 0.912 l
-94.324 1.224 94.269 1.444 94.162 1.573 c
-94.052 1.698 93.897 1.764 93.692 1.764 c
-93.534 1.764 93.387 1.709 93.251 1.602 c
-93.122 1.492 93.019 1.357 92.942 1.191 c
-92.942 -1.705 l
-92.295 -1.705 l
-92.295 3.94 l
-92.942 3.94 l
-h
-97.351 -1.778 m
-96.852 -1.778 96.47 -1.631 96.206 -1.338 c
-95.94 -1.043 95.809 -0.61 95.809 -0.029 c
-95.809 0.441 l
-95.809 1.037 95.934 1.503 96.191 1.837 c
-96.455 2.18 96.815 2.352 97.278 2.352 c
-97.737 2.352 98.08 2.198 98.307 1.897 c
-98.542 1.602 98.664 1.139 98.675 0.515 c
-98.675 0.088 l
-96.455 0.088 l
-96.455 0 l
-96.455 -0.434 96.532 -0.746 96.69 -0.941 c
-96.856 -1.128 97.087 -1.22 97.382 -1.22 c
-97.576 -1.22 97.748 -1.186 97.895 -1.117 c
-98.043 -1.04 98.178 -0.922 98.307 -0.764 c
-98.645 -1.176 l
-98.359 -1.579 97.929 -1.778 97.351 -1.778 c
-97.278 1.794 m
-97.002 1.794 96.8 1.698 96.676 1.515 c
-96.547 1.326 96.474 1.037 96.455 0.647 c
-98.028 0.647 l
-98.028 0.736 l
-98.006 1.118 97.939 1.386 97.822 1.544 c
-97.704 1.709 97.521 1.794 97.278 1.794 c
-102.556 -1.22 m
-102.768 -1.22 102.941 -1.157 103.069 -1.028 c
-103.206 -0.893 103.279 -0.702 103.29 -0.455 c
-103.907 -0.455 l
-103.886 -0.837 103.749 -1.157 103.496 -1.411 c
-103.239 -1.657 102.926 -1.778 102.556 -1.778 c
-102.063 -1.778 101.688 -1.627 101.423 -1.323 c
-101.166 -1.01 101.041 -0.544 101.041 0.073 c
-101.041 0.515 l
-101.041 1.11 101.166 1.565 101.423 1.881 c
-101.688 2.194 102.063 2.352 102.556 2.352 c
-102.955 2.352 103.275 2.22 103.51 1.955 c
-103.753 1.698 103.886 1.353 103.907 0.912 c
-103.29 0.912 l
-103.268 1.206 103.194 1.426 103.069 1.573 c
-102.952 1.72 102.779 1.794 102.556 1.794 c
-102.261 1.794 102.045 1.694 101.908 1.5 c
-101.769 1.312 101.696 1.004 101.688 0.574 c
-101.688 0.059 l
-101.688 -0.411 101.754 -0.746 101.893 -0.941 c
-102.041 -1.128 102.261 -1.22 102.556 -1.22 c
-106.685 -1.352 m
-106.469 -1.639 106.157 -1.778 105.745 -1.778 c
-105.382 -1.778 105.106 -1.657 104.922 -1.411 c
-104.746 -1.157 104.65 -0.793 104.642 -0.323 c
-104.642 2.278 l
-105.289 2.278 l
-105.289 -0.264 l
-105.289 -0.893 105.473 -1.205 105.848 -1.205 c
-106.248 -1.205 106.524 -1.028 106.671 -0.675 c
-106.671 2.278 l
-107.318 2.278 l
-107.318 -1.705 l
-106.701 -1.705 l
-h
-109.949 1.661 m
-109.86 1.679 109.762 1.691 109.654 1.691 c
-109.32 1.691 109.085 1.507 108.949 1.147 c
-108.949 -1.705 l
-108.303 -1.705 l
-108.303 2.278 l
-108.935 2.278 l
-108.949 1.867 l
-109.126 2.19 109.368 2.352 109.685 2.352 c
-109.791 2.352 109.879 2.33 109.949 2.294 c
-h
-112.241 1.661 m
-112.154 1.679 112.054 1.691 111.948 1.691 c
-111.613 1.691 111.378 1.507 111.242 1.147 c
-111.242 -1.705 l
-110.595 -1.705 l
-110.595 2.278 l
-111.227 2.278 l
-111.242 1.867 l
-111.418 2.19 111.661 2.352 111.977 2.352 c
-112.083 2.352 112.172 2.33 112.241 2.294 c
-h
-114.24 -1.778 m
-113.741 -1.778 113.359 -1.631 113.095 -1.338 c
-112.829 -1.043 112.698 -0.61 112.698 -0.029 c
-112.698 0.441 l
-112.698 1.037 112.823 1.503 113.08 1.837 c
-113.344 2.18 113.704 2.352 114.167 2.352 c
-114.627 2.352 114.969 2.198 115.196 1.897 c
-115.431 1.602 115.553 1.139 115.564 0.515 c
-115.564 0.088 l
-113.344 0.088 l
-113.344 0 l
-113.344 -0.434 113.421 -0.746 113.579 -0.941 c
-113.745 -1.128 113.976 -1.22 114.271 -1.22 c
-114.465 -1.22 114.638 -1.186 114.785 -1.117 c
-114.932 -1.04 115.067 -0.922 115.196 -0.764 c
-115.534 -1.176 l
-115.248 -1.579 114.818 -1.778 114.24 -1.778 c
-114.167 1.794 m
-113.891 1.794 113.69 1.698 113.565 1.515 c
-113.436 1.326 113.363 1.037 113.344 0.647 c
-114.917 0.647 l
-114.917 0.736 l
-114.895 1.118 114.828 1.386 114.711 1.544 c
-114.593 1.709 114.41 1.794 114.167 1.794 c
-116.96 2.278 m
-116.975 1.837 l
-117.228 2.18 117.552 2.352 117.945 2.352 c
-118.651 2.352 119.007 1.881 119.019 0.941 c
-119.019 -1.705 l
-118.371 -1.705 l
-118.371 0.912 l
-118.371 1.224 118.317 1.444 118.209 1.573 c
-118.099 1.698 117.945 1.764 117.739 1.764 c
-117.581 1.764 117.434 1.709 117.298 1.602 c
-117.17 1.492 117.067 1.357 116.989 1.191 c
-116.989 -1.705 l
-116.343 -1.705 l
-116.343 2.278 l
-h
-120.841 3.234 m
-120.841 2.278 l
-121.444 2.278 l
-121.444 1.75 l
-120.841 1.75 l
-120.841 -0.72 l
-120.841 -0.878 120.863 -0.995 120.914 -1.072 c
-120.973 -1.153 121.061 -1.19 121.178 -1.19 c
-121.267 -1.19 121.355 -1.176 121.444 -1.146 c
-121.444 -1.705 l
-121.296 -1.753 121.142 -1.778 120.987 -1.778 c
-120.731 -1.778 120.536 -1.687 120.4 -1.499 c
-120.26 -1.315 120.194 -1.055 120.194 -0.72 c
-120.194 1.75 l
-119.591 1.75 l
-119.591 2.278 l
-120.194 2.278 l
-120.194 3.234 l
-h
-f
-Q
-q 1 0 0 1 754.1503 201.1039 cm
-0 0 m
--1.088 0 l
--1.088 2.293 l
--2.676 2.293 l
--2.676 0 l
--3.763 0 l
--3.763 5.35 l
--2.676 5.35 l
--2.676 3.189 l
--1.088 3.189 l
--1.088 5.35 l
-0 5.35 l
-h
-3.616 2.323 m
-1.94 2.323 l
-1.94 0.897 l
-3.925 0.897 l
-3.925 0 l
-0.852 0 l
-0.852 5.35 l
-3.925 5.35 l
-3.925 4.453 l
-1.94 4.453 l
-1.94 3.189 l
-3.616 3.189 l
-h
-7.1 1.103 m
-5.629 1.103 l
-5.336 0 l
-4.204 0 l
-5.865 5.35 l
-6.865 5.35 l
-8.54 0 l
-7.393 0 l
-h
-5.865 1.999 m
-6.865 1.999 l
-6.364 3.91 l
-h
-9.039 0 m
-9.039 5.35 l
-10.466 5.35 l
-11.083 5.35 11.576 5.148 11.95 4.748 c
-12.322 4.355 12.513 3.815 12.523 3.131 c
-12.523 2.263 l
-12.523 1.558 12.336 1.003 11.965 0.602 c
-11.59 0.199 11.083 0 10.437 0 c
-h
-10.127 4.453 m
-10.127 0.897 l
-10.451 0.897 l
-10.811 0.897 11.068 0.989 11.216 1.176 c
-11.362 1.371 11.436 1.698 11.436 2.161 c
-11.436 3.102 l
-11.436 3.601 11.366 3.946 11.23 4.145 c
-11.09 4.34 10.855 4.442 10.524 4.453 c
-h
-f
-Q
-q 1 0 0 1 767.5407 201.4567 cm
-0 0 m
-0 0.118 0.033 0.213 0.104 0.294 c
-0.169 0.371 0.272 0.411 0.412 0.411 c
-0.559 0.411 0.665 0.371 0.735 0.294 c
-0.813 0.213 0.852 0.118 0.852 0 c
-0.852 -0.11 0.813 -0.202 0.735 -0.279 c
-0.665 -0.357 0.559 -0.397 0.412 -0.397 c
-0.272 -0.397 0.169 -0.357 0.104 -0.279 c
-0.033 -0.202 0 -0.11 0 0 c
-f
-Q
-0.113 0.082 0.09 0 k
-535.667 195.5 238.665 -12.898 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 540.8555 188.6608 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.088 -0.5 c
--0.147 -0.646 -0.242 -0.775 -0.367 -0.881 c
--0.496 -0.992 -0.658 -1.08 -0.852 -1.146 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.263 l
--2.142 -1.257 -2.358 -1.22 -2.543 -1.161 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.926 c
--3.127 -0.819 -3.23 -0.691 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.213 -3.484 -0.014 c
--2.66 0.133 l
--2.642 0.033 -2.616 -0.058 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.367 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.684 -1.992 0.691 -1.999 0.691 c
--2.167 0.728 -2.329 0.772 -2.484 0.823 c
--2.642 0.882 -2.786 0.96 -2.91 1.058 c
--3.039 1.154 -3.141 1.279 -3.218 1.426 c
--3.289 1.573 -3.322 1.756 -3.322 1.985 c
--3.322 2.18 -3.289 2.344 -3.218 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.837 c
--2.8 2.932 -2.645 3.003 -2.469 3.043 c
--2.293 3.09 -2.102 3.12 -1.896 3.131 c
--1.896 3.558 l
--1.543 3.558 l
--1.543 3.131 l
--1.319 3.12 -1.128 3.09 -0.97 3.043 c
--0.804 2.992 -0.669 2.918 -0.558 2.822 c
--0.44 2.735 -0.349 2.62 -0.279 2.484 c
--0.201 2.344 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.253 -1.213 2.459 -1.543 2.5 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.36 -1.469 1.353 c
--1.294 1.312 -1.117 1.264 -0.941 1.206 c
--0.756 1.147 -0.595 1.066 -0.455 0.971 c
--0.319 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.455 c
--2.26 2.425 -2.318 2.385 -2.366 2.338 c
--2.406 2.297 -2.436 2.249 -2.454 2.19 c
--2.476 2.132 -2.484 2.066 -2.484 1.999 c
--2.484 1.912 -2.469 1.837 -2.439 1.779 c
--2.41 1.72 -2.373 1.669 -2.322 1.632 c
--2.263 1.592 -2.2 1.559 -2.131 1.529 c
--2.065 1.5 -1.984 1.47 -1.896 1.441 c
-h
--0.837 -0.014 m
--0.837 0.092 -0.86 0.177 -0.897 0.235 c
--0.926 0.302 -0.977 0.357 -1.043 0.397 c
--1.102 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.53 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.529 -1.028 -0.44 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.014 c
-6.402 -2.66 m
-6.185 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.52 -2.484 5.403 -2.396 c
-5.285 -2.315 5.185 -2.219 5.108 -2.102 c
-5.039 -1.984 4.991 -1.855 4.961 -1.72 c
-5.858 -1.616 l
-5.895 -1.753 5.964 -1.859 6.064 -1.94 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.057 6.681 -2.028 c
-6.758 -1.999 6.828 -1.944 6.887 -1.866 c
-6.945 -1.797 6.99 -1.705 7.019 -1.587 c
-7.056 -1.469 7.078 -1.323 7.078 -1.146 c
-7.078 -0.955 l
-7.078 -0.889 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.072 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.214 -0.897 5.108 -0.75 c
-5.009 -0.595 4.935 -0.411 4.888 -0.205 c
-4.836 0.008 4.815 0.243 4.815 0.5 c
-4.815 0.772 4.836 1.018 4.888 1.235 c
-4.946 1.448 5.027 1.632 5.137 1.779 c
-5.245 1.933 5.376 2.051 5.534 2.132 c
-5.689 2.22 5.876 2.264 6.093 2.264 c
-6.189 2.264 6.288 2.253 6.387 2.234 c
-6.483 2.213 6.571 2.18 6.652 2.132 c
-6.739 2.08 6.817 2.018 6.887 1.941 c
-6.964 1.86 7.026 1.768 7.078 1.661 c
-7.092 1.661 l
-7.092 1.808 l
-7.1 1.867 7.107 1.918 7.107 1.97 c
-7.115 2.029 7.122 2.076 7.122 2.117 c
-7.13 2.165 7.14 2.198 7.151 2.22 c
-8.004 2.22 l
-7.992 2.139 7.982 2.029 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.161 l
-7.975 -1.415 7.938 -1.635 7.872 -1.822 c
-7.802 -2.007 7.699 -2.161 7.563 -2.278 c
-7.423 -2.403 7.258 -2.499 7.063 -2.557 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.53 m
-7.092 0.742 7.067 0.919 7.019 1.058 c
-6.978 1.206 6.924 1.324 6.857 1.411 c
-6.799 1.5 6.729 1.559 6.652 1.588 c
-6.571 1.625 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.226 1.621 6.137 1.573 c
-6.056 1.532 5.991 1.463 5.931 1.367 c
-5.88 1.279 5.835 1.162 5.799 1.014 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.338 c
-6.049 -0.515 6.211 -0.602 6.417 -0.602 c
-6.483 -0.602 6.556 -0.588 6.637 -0.558 c
-6.725 -0.521 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.176 7.019 -0.029 c
-7.067 0.118 7.092 0.302 7.092 0.53 c
-11.036 -0.646 m
-12.168 -0.646 l
-12.168 -1.263 l
-8.86 -1.263 l
-8.86 -0.646 l
-10.124 -0.646 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.22 l
-11.036 2.22 l
-h
-10.124 3.514 0.912 -0.676 re
-10.124 2.837 m
-13.6 1.602 m
-13.057 1.602 l
-13.057 2.22 l
-13.644 2.22 l
-13.924 3.117 l
-14.498 3.117 l
-14.498 2.22 l
-15.732 2.22 l
-15.732 1.602 l
-14.498 1.602 l
-14.498 -0.103 l
-14.498 -0.323 l
-14.504 -0.393 14.527 -0.455 14.556 -0.515 c
-14.593 -0.565 14.648 -0.61 14.718 -0.646 c
-14.795 -0.675 14.909 -0.691 15.056 -0.691 c
-15.192 -0.691 15.327 -0.687 15.468 -0.675 c
-15.603 -0.658 15.736 -0.632 15.865 -0.602 c
-15.865 -1.205 l
-15.784 -1.216 15.707 -1.23 15.629 -1.249 c
-15.549 -1.261 15.471 -1.267 15.394 -1.278 c
-15.313 -1.286 15.225 -1.294 15.129 -1.294 c
-15.042 -1.301 14.942 -1.308 14.836 -1.308 c
-14.648 -1.308 14.486 -1.294 14.35 -1.263 c
-14.222 -1.227 14.107 -1.183 14.012 -1.132 c
-13.924 -1.084 13.85 -1.025 13.792 -0.955 c
-13.733 -0.878 13.689 -0.801 13.66 -0.72 c
-13.63 -0.632 13.608 -0.544 13.6 -0.455 c
-13.59 -0.36 13.586 -0.264 13.586 -0.176 c
-h
-22.677 -1.323 m
-22.391 -1.323 22.148 -1.282 21.943 -1.205 c
-21.737 -1.117 21.564 -0.995 21.428 -0.837 c
-21.288 -0.683 21.185 -0.496 21.12 -0.279 c
-21.049 -0.055 21.016 0.191 21.016 0.456 c
-21.016 0.75 21.049 1.008 21.12 1.235 c
-21.197 1.459 21.303 1.646 21.442 1.794 c
-21.59 1.948 21.766 2.066 21.972 2.147 c
-22.178 2.234 22.413 2.278 22.677 2.278 c
-22.901 2.278 23.104 2.249 23.28 2.19 c
-23.456 2.132 23.607 2.047 23.736 1.941 c
-23.861 1.841 23.963 1.72 24.044 1.573 c
-24.122 1.434 24.177 1.283 24.206 1.118 c
-23.295 1.073 l
-23.265 1.249 23.196 1.389 23.089 1.5 c
-22.99 1.606 22.847 1.661 22.662 1.661 c
-22.417 1.661 22.24 1.559 22.134 1.353 c
-22.024 1.154 21.972 0.867 21.972 0.485 c
-21.972 -0.309 22.207 -0.706 22.677 -0.706 c
-22.843 -0.706 22.986 -0.654 23.104 -0.544 c
-23.221 -0.437 23.295 -0.276 23.324 -0.058 c
-24.235 -0.103 l
-24.206 -0.272 24.151 -0.426 24.073 -0.573 c
-24.004 -0.72 23.901 -0.852 23.765 -0.97 c
-23.636 -1.08 23.478 -1.168 23.295 -1.234 c
-23.119 -1.294 22.913 -1.323 22.677 -1.323 c
-26.076 1.515 m
-26.194 1.786 26.344 1.985 26.532 2.103 c
-26.716 2.22 26.936 2.278 27.194 2.278 c
-27.399 2.278 27.568 2.242 27.708 2.176 c
-27.855 2.106 27.965 2.014 28.046 1.897 c
-28.135 1.779 28.193 1.636 28.222 1.47 c
-28.259 1.301 28.281 1.125 28.281 0.941 c
-28.281 -1.263 l
-27.37 -1.263 l
-27.37 0.736 l
-27.37 0.871 27.359 0.992 27.341 1.103 c
-27.329 1.209 27.304 1.297 27.267 1.367 c
-27.227 1.444 27.168 1.503 27.09 1.544 c
-27.021 1.58 26.929 1.602 26.811 1.602 c
-26.701 1.602 26.606 1.577 26.518 1.529 c
-26.429 1.478 26.348 1.411 26.282 1.324 c
-26.223 1.235 26.172 1.125 26.136 1 c
-26.106 0.882 26.091 0.75 26.091 0.603 c
-26.091 -1.263 l
-25.18 -1.263 l
-25.18 3.514 l
-26.091 3.514 l
-26.091 2.205 l
-26.091 2.135 26.084 2.066 26.076 1.999 c
-26.076 1.794 l
-26.076 1.735 26.069 1.679 26.061 1.632 c
-26.061 1.515 l
-h
-30.799 -1.323 m
-30.541 -1.323 30.313 -1.286 30.107 -1.22 c
-29.902 -1.143 29.725 -1.028 29.579 -0.881 c
-29.432 -0.727 29.314 -0.536 29.226 -0.309 c
-29.145 -0.085 29.108 0.181 29.108 0.485 c
-29.108 0.816 29.153 1.095 29.24 1.324 c
-29.336 1.559 29.465 1.742 29.623 1.881 c
-29.788 2.018 29.976 2.117 30.181 2.176 c
-30.387 2.242 30.597 2.278 30.813 2.278 c
-31.085 2.278 31.32 2.227 31.518 2.132 c
-31.725 2.043 31.89 1.912 32.019 1.735 c
-32.154 1.565 32.254 1.36 32.313 1.118 c
-32.378 0.882 32.415 0.618 32.415 0.324 c
-32.415 0.309 l
-30.049 0.309 l
-30.049 0.162 30.063 0.023 30.093 -0.103 c
-30.13 -0.231 30.185 -0.345 30.255 -0.44 c
-30.321 -0.529 30.406 -0.598 30.504 -0.646 c
-30.6 -0.698 30.714 -0.72 30.843 -0.72 c
-30.997 -0.72 31.137 -0.687 31.254 -0.617 c
-31.379 -0.551 31.468 -0.448 31.518 -0.309 c
-32.357 -0.382 l
-32.328 -0.481 32.272 -0.588 32.195 -0.706 c
-32.114 -0.816 32.011 -0.918 31.886 -1.014 c
-31.769 -1.103 31.615 -1.176 31.431 -1.234 c
-31.254 -1.294 31.041 -1.323 30.799 -1.323 c
-30.799 1.706 m
-30.71 1.706 30.622 1.691 30.534 1.661 c
-30.446 1.632 30.365 1.58 30.298 1.515 c
-30.229 1.444 30.17 1.357 30.122 1.249 c
-30.082 1.139 30.063 1.014 30.063 0.867 c
-31.534 0.867 l
-31.534 1.004 31.508 1.125 31.46 1.235 c
-31.42 1.341 31.364 1.43 31.298 1.5 c
-31.239 1.565 31.166 1.617 31.078 1.646 c
-30.99 1.683 30.894 1.706 30.799 1.706 c
-34.863 -1.323 m
-34.576 -1.323 34.333 -1.282 34.128 -1.205 c
-33.922 -1.117 33.749 -0.995 33.614 -0.837 c
-33.473 -0.683 33.371 -0.496 33.305 -0.279 c
-33.235 -0.055 33.201 0.191 33.201 0.456 c
-33.201 0.75 33.235 1.008 33.305 1.235 c
-33.382 1.459 33.488 1.646 33.628 1.794 c
-33.775 1.948 33.951 2.066 34.157 2.147 c
-34.363 2.234 34.599 2.278 34.863 2.278 c
-35.087 2.278 35.289 2.249 35.466 2.19 c
-35.642 2.132 35.792 2.047 35.921 1.941 c
-36.046 1.841 36.149 1.72 36.23 1.573 c
-36.307 1.434 36.362 1.283 36.392 1.118 c
-35.48 1.073 l
-35.451 1.249 35.381 1.389 35.274 1.5 c
-35.175 1.606 35.032 1.661 34.848 1.661 c
-34.602 1.661 34.425 1.559 34.319 1.353 c
-34.209 1.154 34.157 0.867 34.157 0.485 c
-34.157 -0.309 34.393 -0.706 34.863 -0.706 c
-35.028 -0.706 35.171 -0.654 35.289 -0.544 c
-35.407 -0.437 35.48 -0.276 35.509 -0.058 c
-36.421 -0.103 l
-36.392 -0.272 36.336 -0.426 36.259 -0.573 c
-36.189 -0.72 36.087 -0.852 35.95 -0.97 c
-35.822 -1.08 35.664 -1.168 35.48 -1.234 c
-35.304 -1.294 35.098 -1.323 34.863 -1.323 c
-39.688 -1.263 m
-38.761 0.309 l
-38.365 0.044 l
-38.365 -1.263 l
-37.469 -1.263 l
-37.469 3.514 l
-38.365 3.514 l
-38.365 0.779 l
-39.615 2.22 l
-40.584 2.22 l
-39.364 0.853 l
-40.673 -1.263 l
-h
-44.631 0.485 m
-44.631 0.21 44.594 -0.04 44.527 -0.264 c
-44.457 -0.481 44.355 -0.669 44.219 -0.823 c
-44.079 -0.981 43.902 -1.103 43.69 -1.19 c
-43.473 -1.278 43.219 -1.323 42.925 -1.323 c
-42.649 -1.323 42.404 -1.278 42.19 -1.19 c
-41.984 -1.103 41.812 -0.981 41.676 -0.823 c
-41.536 -0.669 41.433 -0.481 41.367 -0.264 c
-41.297 -0.04 41.265 0.21 41.265 0.485 c
-41.265 0.738 41.294 0.974 41.352 1.191 c
-41.419 1.415 41.521 1.606 41.662 1.764 c
-41.797 1.929 41.974 2.058 42.19 2.147 c
-42.404 2.234 42.661 2.278 42.955 2.278 c
-43.267 2.278 43.528 2.234 43.734 2.147 c
-43.947 2.058 44.12 1.929 44.249 1.764 c
-44.384 1.606 44.484 1.415 44.542 1.191 c
-44.601 0.974 44.631 0.738 44.631 0.485 c
-43.675 0.485 m
-43.675 0.691 43.661 0.867 43.631 1.014 c
-43.609 1.162 43.572 1.283 43.513 1.382 c
-43.455 1.478 43.381 1.548 43.293 1.588 c
-43.204 1.636 43.094 1.661 42.969 1.661 c
-42.705 1.661 42.514 1.562 42.396 1.367 c
-42.279 1.18 42.219 0.886 42.219 0.485 c
-42.219 0.063 42.279 -0.243 42.396 -0.426 c
-42.514 -0.613 42.69 -0.706 42.925 -0.706 c
-43.05 -0.706 43.164 -0.687 43.264 -0.646 c
-43.359 -0.598 43.44 -0.525 43.499 -0.426 c
-43.565 -0.33 43.609 -0.205 43.631 -0.058 c
-43.661 0.088 43.675 0.268 43.675 0.485 c
-46.368 2.22 m
-46.368 0.265 l
-46.368 0.125 46.376 0 46.398 -0.118 c
-46.416 -0.228 46.449 -0.32 46.501 -0.397 c
-46.549 -0.478 46.607 -0.54 46.678 -0.588 c
-46.743 -0.628 46.828 -0.646 46.927 -0.646 c
-47.015 -0.646 47.096 -0.628 47.177 -0.588 c
-47.266 -0.54 47.339 -0.47 47.397 -0.382 c
-47.457 -0.286 47.501 -0.176 47.53 -0.058 c
-47.567 0.067 47.588 0.206 47.588 0.353 c
-47.588 2.22 l
-48.485 2.22 l
-48.485 -0.484 l
-48.485 -0.72 l
-48.492 -0.801 48.5 -0.878 48.5 -0.955 c
-48.5 -1.146 l
-48.507 -1.198 48.515 -1.234 48.515 -1.263 c
-47.662 -1.263 l
-47.651 -1.234 47.64 -1.198 47.632 -1.146 c
-47.632 -0.955 l
-47.632 -0.889 47.625 -0.819 47.618 -0.75 c
-47.618 -0.573 l
-47.603 -0.573 l
-47.486 -0.837 47.331 -1.028 47.148 -1.146 c
-46.971 -1.263 46.769 -1.323 46.545 -1.323 c
-46.339 -1.323 46.167 -1.286 46.03 -1.22 c
-45.891 -1.153 45.78 -1.058 45.693 -0.941 c
-45.612 -0.823 45.552 -0.687 45.516 -0.529 c
-45.487 -0.363 45.472 -0.187 45.472 0 c
-45.472 2.22 l
-h
-50.15 1.602 m
-49.606 1.602 l
-49.606 2.22 l
-50.194 2.22 l
-50.474 3.117 l
-51.046 3.117 l
-51.046 2.22 l
-52.282 2.22 l
-52.282 1.602 l
-51.046 1.602 l
-51.046 -0.103 l
-51.046 -0.323 l
-51.054 -0.393 51.076 -0.455 51.106 -0.515 c
-51.142 -0.565 51.197 -0.61 51.267 -0.646 c
-51.345 -0.675 51.458 -0.691 51.605 -0.691 c
-51.741 -0.691 51.877 -0.687 52.016 -0.675 c
-52.153 -0.658 52.285 -0.632 52.413 -0.602 c
-52.413 -1.205 l
-52.332 -1.216 52.255 -1.23 52.178 -1.249 c
-52.097 -1.261 52.02 -1.267 51.943 -1.278 c
-51.862 -1.286 51.775 -1.294 51.679 -1.294 c
-51.59 -1.301 51.491 -1.308 51.384 -1.308 c
-51.197 -1.308 51.035 -1.294 50.9 -1.263 c
-50.771 -1.227 50.657 -1.183 50.561 -1.132 c
-50.474 -1.084 50.4 -1.025 50.341 -0.955 c
-50.283 -0.878 50.238 -0.801 50.208 -0.72 c
-50.179 -0.632 50.157 -0.544 50.15 -0.455 c
-50.139 -0.36 50.135 -0.264 50.135 -0.176 c
-h
-58.422 -2.631 m
-58.422 3.514 l
-60.347 3.514 l
-60.347 2.896 l
-59.274 2.896 l
-59.274 -2.013 l
-60.347 -2.013 l
-60.347 -2.631 l
-h
-62.32 0.838 1.867 -0.794 re
-62.32 0.044 m
-65.793 -1.263 m
-65.793 -0.97 l
-65.801 -0.833 65.808 -0.675 65.808 -0.5 c
-65.808 3.514 l
-66.719 3.514 l
-66.719 2.234 l
-66.719 2.072 l
-66.719 1.897 l
-66.719 1.845 66.712 1.801 66.705 1.764 c
-66.705 1.676 l
-66.719 1.676 l
-66.767 1.783 66.829 1.874 66.91 1.955 c
-66.987 2.032 67.072 2.095 67.16 2.147 c
-67.249 2.194 67.34 2.227 67.44 2.249 c
-67.535 2.267 67.634 2.278 67.733 2.278 c
-67.947 2.278 68.134 2.234 68.292 2.147 c
-68.446 2.058 68.575 1.929 68.674 1.764 c
-68.781 1.606 68.858 1.415 68.909 1.191 c
-68.957 0.974 68.983 0.736 68.983 0.47 c
-68.983 0.214 68.953 -0.025 68.895 -0.249 c
-68.836 -0.467 68.751 -0.658 68.645 -0.823 c
-68.535 -0.981 68.402 -1.103 68.248 -1.19 c
-68.09 -1.278 67.91 -1.323 67.704 -1.323 c
-67.605 -1.323 67.506 -1.311 67.411 -1.294 c
-67.322 -1.271 67.234 -1.242 67.145 -1.19 c
-67.058 -1.132 66.977 -1.066 66.91 -0.985 c
-66.84 -0.908 66.778 -0.808 66.719 -0.691 c
-66.705 -0.691 l
-66.705 -0.852 l
-66.705 -0.911 66.697 -0.97 66.69 -1.028 c
-66.69 -1.08 66.682 -1.128 66.675 -1.176 c
-66.675 -1.216 66.668 -1.246 66.661 -1.263 c
-h
-66.705 0.5 m
-66.705 0.265 66.723 0.067 66.763 -0.087 c
-66.811 -0.246 66.87 -0.367 66.94 -0.455 c
-67.006 -0.544 67.079 -0.61 67.16 -0.646 c
-67.237 -0.687 67.315 -0.706 67.396 -0.706 c
-67.602 -0.706 67.756 -0.61 67.866 -0.411 c
-67.983 -0.216 68.043 0.077 68.043 0.47 c
-68.043 0.684 68.02 0.867 67.983 1.014 c
-67.954 1.168 67.91 1.294 67.851 1.382 c
-67.8 1.478 67.733 1.551 67.646 1.602 c
-67.565 1.65 67.476 1.676 67.38 1.676 c
-67.3 1.676 67.222 1.654 67.145 1.617 c
-67.064 1.577 66.991 1.515 66.925 1.426 c
-66.867 1.338 66.811 1.213 66.763 1.058 c
-66.723 0.912 66.705 0.724 66.705 0.5 c
-70.221 -2.631 m
-70.221 -2.013 l
-71.295 -2.013 l
-71.295 2.896 l
-70.221 2.896 l
-70.221 3.514 l
-72.147 3.514 l
-72.147 -2.631 l
-h
-78.729 -2.631 m
-78.729 3.514 l
-80.654 3.514 l
-80.654 2.896 l
-79.581 2.896 l
-79.581 -2.013 l
-80.654 -2.013 l
-80.654 -2.631 l
-h
-84.23 -1.263 m
-84.23 0.721 l
-84.23 1.022 84.186 1.243 84.097 1.382 c
-84.017 1.529 83.88 1.602 83.685 1.602 c
-83.575 1.602 83.473 1.577 83.377 1.529 c
-83.289 1.478 83.208 1.411 83.142 1.324 c
-83.083 1.235 83.031 1.125 82.995 1 c
-82.966 0.882 82.951 0.75 82.951 0.603 c
-82.951 -1.263 l
-82.039 -1.263 l
-82.039 1.441 l
-82.039 1.661 l
-82.039 1.75 82.032 1.827 82.025 1.897 c
-82.025 2.087 l
-82.025 2.22 l
-82.877 2.22 l
-82.885 2.19 82.892 2.147 82.892 2.087 c
-82.892 1.897 l
-82.899 1.827 82.906 1.756 82.906 1.691 c
-82.914 1.621 82.922 1.565 82.922 1.529 c
-82.937 1.529 l
-83.054 1.794 83.205 1.985 83.392 2.103 c
-83.575 2.22 83.796 2.278 84.053 2.278 c
-84.237 2.278 84.398 2.249 84.539 2.19 c
-84.674 2.132 84.788 2.043 84.876 1.926 c
-84.965 1.808 85.027 1.665 85.067 1.5 c
-85.115 1.341 85.141 1.154 85.141 0.941 c
-85.141 -1.263 l
-h
-87.055 -1.323 m
-86.887 -1.323 86.736 -1.301 86.6 -1.263 c
-86.471 -1.216 86.357 -1.146 86.262 -1.058 c
-86.174 -0.97 86.104 -0.864 86.056 -0.735 c
-86.004 -0.598 85.983 -0.448 85.983 -0.279 c
-85.983 -0.073 86.016 0.096 86.085 0.235 c
-86.152 0.383 86.247 0.493 86.365 0.574 c
-86.49 0.661 86.633 0.724 86.791 0.765 c
-86.956 0.802 87.132 0.827 87.32 0.838 c
-88.04 0.853 l
-88.04 1.029 l
-88.04 1.147 88.03 1.249 88.011 1.338 c
-87.989 1.426 87.955 1.492 87.908 1.544 c
-87.868 1.602 87.82 1.639 87.761 1.661 c
-87.702 1.679 87.636 1.691 87.57 1.691 c
-87.5 1.691 87.438 1.679 87.379 1.661 c
-87.328 1.65 87.28 1.625 87.232 1.588 c
-87.192 1.559 87.159 1.507 87.129 1.441 c
-87.107 1.382 87.093 1.301 87.085 1.206 c
-86.144 1.249 l
-86.174 1.397 86.218 1.532 86.276 1.661 c
-86.343 1.786 86.438 1.897 86.556 1.985 c
-86.673 2.08 86.813 2.153 86.982 2.205 c
-87.159 2.253 87.365 2.278 87.6 2.278 c
-88.04 2.278 88.371 2.168 88.599 1.955 c
-88.834 1.75 88.952 1.441 88.952 1.029 c
-88.952 -0.235 l
-88.952 -0.455 l
-88.959 -0.515 88.974 -0.569 88.996 -0.617 c
-89.014 -0.658 89.044 -0.691 89.084 -0.72 c
-89.121 -0.742 89.172 -0.75 89.231 -0.75 c
-89.297 -0.75 89.366 -0.746 89.437 -0.735 c
-89.437 -1.22 l
-89.378 -1.23 89.323 -1.242 89.275 -1.249 c
-89.235 -1.261 89.194 -1.267 89.158 -1.278 c
-89.117 -1.286 89.073 -1.294 89.025 -1.294 c
-88.974 -1.301 88.915 -1.308 88.849 -1.308 c
-88.62 -1.308 88.456 -1.257 88.349 -1.146 c
-88.239 -1.028 88.176 -0.864 88.158 -0.646 c
-88.143 -0.646 l
-88.073 -0.756 88.003 -0.852 87.938 -0.941 c
-87.868 -1.022 87.791 -1.087 87.702 -1.146 c
-87.614 -1.205 87.515 -1.249 87.408 -1.278 c
-87.309 -1.308 87.192 -1.323 87.055 -1.323 c
-88.04 0.353 m
-87.614 0.339 l
-87.515 0.339 87.423 0.331 87.334 0.324 c
-87.254 0.312 87.188 0.287 87.129 0.25 c
-87.07 0.21 87.018 0.151 86.982 0.073 c
-86.941 0.004 86.923 -0.087 86.923 -0.205 c
-86.923 -0.374 86.956 -0.496 87.026 -0.573 c
-87.093 -0.654 87.192 -0.691 87.32 -0.691 c
-87.427 -0.691 87.525 -0.669 87.614 -0.617 c
-87.71 -0.569 87.791 -0.507 87.849 -0.426 c
-87.915 -0.349 87.967 -0.261 87.996 -0.162 c
-88.026 -0.055 88.04 0.059 88.04 0.177 c
-h
-91.322 -1.263 m
-91.322 0.853 l
-91.322 1.018 91.315 1.154 91.307 1.264 c
-91.296 1.371 91.278 1.455 91.248 1.515 c
-91.226 1.58 91.197 1.632 91.16 1.661 c
-91.13 1.691 91.091 1.706 91.043 1.706 c
-90.984 1.706 90.929 1.676 90.881 1.617 c
-90.841 1.565 90.808 1.492 90.778 1.397 c
-90.748 1.309 90.723 1.195 90.704 1.058 c
-90.694 0.919 90.69 0.769 90.69 0.603 c
-90.69 -1.263 l
-89.94 -1.263 l
-89.94 1.47 l
-89.94 1.706 l
-89.94 1.926 l
-89.94 2.003 89.933 2.066 89.925 2.117 c
-89.925 2.22 l
-90.602 2.22 l
-90.602 2.132 l
-90.602 1.985 l
-90.609 1.926 90.617 1.867 90.617 1.808 c
-90.617 1.646 l
-90.631 1.646 l
-90.65 1.735 90.679 1.812 90.719 1.881 c
-90.756 1.959 90.8 2.029 90.852 2.087 c
-90.91 2.147 90.976 2.19 91.057 2.22 c
-91.134 2.257 91.223 2.278 91.322 2.278 c
-91.506 2.278 91.645 2.224 91.733 2.117 c
-91.829 2.018 91.899 1.86 91.939 1.646 c
-91.953 1.646 l
-91.991 1.742 92.032 1.831 92.071 1.912 c
-92.119 1.989 92.175 2.051 92.233 2.103 c
-92.292 2.161 92.358 2.205 92.439 2.234 c
-92.516 2.264 92.604 2.278 92.703 2.278 c
-92.84 2.278 92.954 2.253 93.042 2.205 c
-93.129 2.153 93.196 2.08 93.247 1.985 c
-93.306 1.885 93.343 1.756 93.365 1.602 c
-93.395 1.455 93.409 1.272 93.409 1.058 c
-93.409 -1.263 l
-92.689 -1.263 l
-92.689 0.853 l
-92.689 1.018 92.682 1.154 92.674 1.264 c
-92.663 1.371 92.645 1.455 92.616 1.515 c
-92.593 1.58 92.564 1.632 92.527 1.661 c
-92.498 1.691 92.458 1.706 92.41 1.706 c
-92.292 1.706 92.196 1.617 92.13 1.441 c
-92.071 1.272 92.042 1.014 92.042 0.661 c
-92.042 -1.263 l
-h
-95.783 -1.323 m
-95.525 -1.323 95.298 -1.286 95.092 -1.22 c
-94.887 -1.143 94.71 -1.028 94.563 -0.881 c
-94.416 -0.727 94.299 -0.536 94.21 -0.309 c
-94.129 -0.085 94.093 0.181 94.093 0.485 c
-94.093 0.816 94.137 1.095 94.225 1.324 c
-94.32 1.559 94.449 1.742 94.607 1.881 c
-94.773 2.018 94.96 2.117 95.166 2.176 c
-95.371 2.242 95.581 2.278 95.797 2.278 c
-96.069 2.278 96.304 2.227 96.503 2.132 c
-96.709 2.043 96.875 1.912 97.003 1.735 c
-97.139 1.565 97.239 1.36 97.297 1.118 c
-97.363 0.882 97.4 0.618 97.4 0.324 c
-97.4 0.309 l
-95.034 0.309 l
-95.034 0.162 95.049 0.023 95.078 -0.103 c
-95.114 -0.231 95.169 -0.345 95.24 -0.44 c
-95.305 -0.529 95.39 -0.598 95.489 -0.646 c
-95.585 -0.698 95.699 -0.72 95.828 -0.72 c
-95.982 -0.72 96.121 -0.687 96.239 -0.617 c
-96.364 -0.551 96.452 -0.448 96.503 -0.309 c
-97.341 -0.382 l
-97.312 -0.481 97.256 -0.588 97.179 -0.706 c
-97.098 -0.816 96.996 -0.918 96.871 -1.014 c
-96.753 -1.103 96.599 -1.176 96.415 -1.234 c
-96.239 -1.294 96.026 -1.323 95.783 -1.323 c
-95.783 1.706 m
-95.695 1.706 95.606 1.691 95.519 1.661 c
-95.43 1.632 95.35 1.58 95.284 1.515 c
-95.213 1.444 95.155 1.357 95.107 1.249 c
-95.066 1.139 95.049 1.014 95.049 0.867 c
-96.518 0.867 l
-96.518 1.004 96.493 1.125 96.445 1.235 c
-96.404 1.341 96.349 1.43 96.283 1.5 c
-96.224 1.565 96.15 1.617 96.063 1.646 c
-95.974 1.683 95.878 1.706 95.783 1.706 c
-98.653 -2.631 m
-98.653 -2.013 l
-99.726 -2.013 l
-99.726 2.896 l
-98.653 2.896 l
-98.653 3.514 l
-100.578 3.514 l
-100.578 -2.631 l
-h
-f
-Q
-q 1 0 0 1 545.9966 173.8592 cm
-0 0 m
-0 0.264 -0.073 0.463 -0.22 0.603 c
--0.36 0.75 -0.617 0.889 -0.999 1.029 c
--1.374 1.165 -1.66 1.309 -1.866 1.455 c
--2.065 1.602 -2.212 1.768 -2.308 1.955 c
--2.406 2.15 -2.454 2.37 -2.454 2.616 c
--2.454 3.035 -2.315 3.385 -2.028 3.66 c
--1.745 3.932 -1.378 4.072 -0.926 4.072 c
--0.613 4.072 -0.334 3.998 -0.088 3.851 c
-0.154 3.711 0.342 3.516 0.47 3.263 c
-0.607 3.017 0.676 2.749 0.676 2.454 c
-0 2.454 l
-0 2.786 -0.081 3.042 -0.235 3.219 c
--0.393 3.403 -0.625 3.499 -0.926 3.499 c
--1.19 3.499 -1.404 3.418 -1.558 3.263 c
--1.705 3.116 -1.778 2.903 -1.778 2.631 c
--1.778 2.404 -1.701 2.212 -1.543 2.057 c
--1.378 1.911 -1.124 1.771 -0.779 1.646 c
--0.261 1.477 0.11 1.268 0.339 1.014 c
-0.574 0.757 0.691 0.426 0.691 0.015 c
-0.691 -0.426 0.548 -0.779 0.264 -1.043 c
--0.022 -1.301 -0.404 -1.426 -0.881 -1.426 c
--1.198 -1.426 -1.484 -1.357 -1.749 -1.22 c
--2.013 -1.084 -2.227 -0.893 -2.381 -0.647 c
--2.528 -0.405 -2.601 -0.118 -2.601 0.206 c
--1.926 0.206 l
--1.926 -0.129 -1.833 -0.389 -1.646 -0.573 c
--1.462 -0.761 -1.205 -0.852 -0.881 -0.852 c
--0.588 -0.852 -0.367 -0.779 -0.22 -0.632 c
--0.073 -0.478 0 -0.264 0 0 c
-4.439 -0.206 m
-5.042 2.631 l
-5.689 2.631 l
-4.704 -1.353 l
-4.189 -1.353 l
-3.41 1.5 l
-2.66 -1.353 l
-2.132 -1.353 l
-1.176 2.631 l
-1.808 2.631 l
-2.425 -0.133 l
-3.161 2.631 l
-3.675 2.631 l
-h
-7.071 -1.353 -0.647 3.984 re
-7.115 3.675 m
-7.115 3.564 7.085 3.472 7.026 3.395 c
-6.967 3.326 6.872 3.293 6.747 3.293 c
-6.629 3.293 6.534 3.326 6.468 3.395 c
-6.409 3.472 6.379 3.564 6.379 3.675 c
-6.379 3.792 6.409 3.884 6.468 3.954 c
-6.534 4.031 6.629 4.072 6.747 4.072 c
-6.872 4.072 6.967 4.031 7.026 3.954 c
-7.085 3.873 7.115 3.781 7.115 3.675 c
-8.937 3.586 m
-8.937 2.631 l
-9.54 2.631 l
-9.54 2.102 l
-8.937 2.102 l
-8.937 -0.368 l
-8.937 -0.526 8.96 -0.643 9.01 -0.721 c
-9.07 -0.801 9.158 -0.838 9.276 -0.838 c
-9.363 -0.838 9.452 -0.823 9.54 -0.794 c
-9.54 -1.353 l
-9.393 -1.4 9.239 -1.426 9.084 -1.426 c
-8.827 -1.426 8.632 -1.334 8.496 -1.147 c
-8.357 -0.963 8.291 -0.702 8.291 -0.368 c
-8.291 2.102 l
-7.688 2.102 l
-7.688 2.631 l
-8.291 2.631 l
-8.291 3.586 l
-h
-11.686 -0.867 m
-11.899 -0.867 12.072 -0.805 12.201 -0.676 c
-12.337 -0.54 12.41 -0.349 12.421 -0.103 c
-13.039 -0.103 l
-13.016 -0.485 12.881 -0.805 12.627 -1.058 c
-12.37 -1.305 12.057 -1.426 11.686 -1.426 c
-11.194 -1.426 10.818 -1.276 10.554 -0.97 c
-10.297 -0.658 10.172 -0.191 10.172 0.426 c
-10.172 0.867 l
-10.172 1.463 10.297 1.918 10.554 2.234 c
-10.818 2.547 11.194 2.705 11.686 2.705 c
-12.087 2.705 12.406 2.572 12.642 2.308 c
-12.884 2.051 13.016 1.705 13.039 1.264 c
-12.421 1.264 l
-12.399 1.558 12.326 1.779 12.201 1.926 c
-12.083 2.072 11.91 2.146 11.686 2.146 c
-11.392 2.146 11.175 2.047 11.04 1.852 c
-10.899 1.664 10.826 1.356 10.818 0.926 c
-10.818 0.411 l
-10.818 -0.059 10.885 -0.393 11.025 -0.588 c
-11.171 -0.775 11.392 -0.867 11.686 -0.867 c
-14.435 2.219 m
-14.689 2.543 15.008 2.705 15.391 2.705 c
-16.096 2.705 16.452 2.234 16.463 1.294 c
-16.463 -1.353 l
-15.817 -1.353 l
-15.817 1.264 l
-15.817 1.577 15.761 1.797 15.655 1.926 c
-15.545 2.051 15.391 2.117 15.185 2.117 c
-15.026 2.117 14.88 2.061 14.743 1.955 c
-14.614 1.845 14.512 1.708 14.435 1.544 c
-14.435 -1.353 l
-13.787 -1.353 l
-13.787 4.292 l
-14.435 4.292 l
-h
-f
-Q
-q 1 0 0 1 567.9281 174.2562 cm
-0 0 m
-0.353 2.234 l
-1.352 2.234 l
-0.529 -1.75 l
--0.339 -1.75 l
--0.897 0.559 l
--1.455 -1.75 l
--2.323 -1.75 l
--3.146 2.234 l
--2.147 2.234 l
--1.794 0 l
--1.264 2.234 l
--0.53 2.234 l
-h
-1.749 0.367 m
-1.749 0.974 1.889 1.448 2.175 1.793 c
-2.458 2.135 2.851 2.308 3.351 2.308 c
-3.858 2.308 4.255 2.135 4.542 1.793 c
-4.825 1.448 4.968 0.974 4.968 0.367 c
-4.968 0.103 l
-4.968 -0.497 4.825 -0.967 4.542 -1.309 c
-4.255 -1.654 3.858 -1.823 3.351 -1.823 c
-2.84 -1.823 2.443 -1.654 2.161 -1.309 c
-1.885 -0.967 1.749 -0.493 1.749 0.118 c
-h
-2.792 0.103 m
-2.792 -0.603 2.977 -0.956 3.351 -0.956 c
-3.704 -0.956 3.895 -0.661 3.925 -0.073 c
-3.925 0.367 l
-3.925 0.727 3.873 0.999 3.777 1.176 c
-3.678 1.352 3.535 1.44 3.351 1.44 c
-3.175 1.44 3.035 1.352 2.94 1.176 c
-2.84 0.999 2.792 0.727 2.792 0.367 c
-h
-7.57 1.22 m
-7.231 1.249 l
-6.945 1.249 6.754 1.124 6.659 0.881 c
-6.659 -1.75 l
-5.614 -1.75 l
-5.614 2.234 l
-6.585 2.234 l
-6.614 1.793 l
-6.78 2.135 7.011 2.308 7.305 2.308 c
-7.422 2.308 7.515 2.285 7.584 2.248 c
-h
-9.437 -0.221 m
-9.157 -0.53 l
-9.157 -1.75 l
-8.114 -1.75 l
-8.114 3.895 l
-9.157 3.895 l
-9.157 0.852 l
-9.275 1.043 l
-9.995 2.234 l
-11.245 2.234 l
-10.083 0.588 l
-11.347 -1.75 l
-10.157 -1.75 l
-h
-12.802 -1.75 -1.043 3.984 re
-11.715 3.263 m
-11.715 3.418 11.763 3.546 11.862 3.645 c
-11.968 3.752 12.104 3.807 12.274 3.807 c
-12.45 3.807 12.586 3.752 12.685 3.645 c
-12.791 3.546 12.847 3.418 12.847 3.263 c
-12.847 3.094 12.791 2.958 12.685 2.851 c
-12.586 2.753 12.45 2.705 12.274 2.705 c
-12.104 2.705 11.968 2.753 11.862 2.851 c
-11.763 2.958 11.715 3.094 11.715 3.263 c
-14.566 2.234 m
-14.596 1.837 l
-14.831 2.15 15.133 2.308 15.507 2.308 c
-16.191 2.308 16.544 1.826 16.565 0.867 c
-16.565 -1.75 l
-15.522 -1.75 l
-15.522 0.794 l
-15.522 1.018 15.485 1.18 15.419 1.278 c
-15.349 1.374 15.232 1.425 15.066 1.425 c
-14.879 1.425 14.732 1.33 14.626 1.147 c
-14.626 -1.75 l
-13.581 -1.75 l
-13.581 2.234 l
-h
-17.183 0.367 m
-17.183 1.014 17.3 1.5 17.535 1.822 c
-17.771 2.146 18.102 2.308 18.535 2.308 c
-18.888 2.308 19.16 2.165 19.359 1.881 c
-19.403 2.234 l
-20.344 2.234 l
-20.344 -1.75 l
-20.344 -2.257 20.2 -2.646 19.917 -2.911 c
-19.63 -3.183 19.226 -3.322 18.697 -3.322 c
-18.47 -3.322 18.234 -3.278 17.992 -3.19 c
-17.756 -3.102 17.58 -2.988 17.462 -2.851 c
-17.815 -2.132 l
-17.911 -2.238 18.039 -2.323 18.197 -2.381 c
-18.352 -2.448 18.499 -2.484 18.638 -2.484 c
-18.873 -2.484 19.039 -2.425 19.137 -2.308 c
-19.245 -2.198 19.299 -2.022 19.299 -1.779 c
-19.299 -1.426 l
-19.101 -1.691 18.844 -1.823 18.52 -1.823 c
-18.098 -1.823 17.771 -1.661 17.535 -1.338 c
-17.308 -1.008 17.19 -0.537 17.183 0.073 c
-h
-18.227 0.103 m
-18.227 -0.272 18.274 -0.54 18.374 -0.706 c
-18.47 -0.875 18.624 -0.956 18.829 -0.956 c
-19.042 -0.956 19.2 -0.879 19.299 -0.721 c
-19.299 1.176 l
-19.189 1.341 19.035 1.425 18.829 1.425 c
-18.624 1.425 18.47 1.341 18.374 1.176 c
-18.274 1.007 18.227 0.738 18.227 0.367 c
-h
-22.695 0.367 m
-22.695 1.014 22.802 1.5 23.018 1.822 c
-23.243 2.146 23.566 2.308 23.989 2.308 c
-24.301 2.308 24.554 2.175 24.753 1.911 c
-24.753 3.895 l
-25.811 3.895 l
-25.811 -1.75 l
-24.856 -1.75 l
-24.812 -1.338 l
-24.595 -1.661 24.319 -1.823 23.989 -1.823 c
-23.577 -1.823 23.257 -1.669 23.033 -1.353 c
-22.817 -1.029 22.703 -0.559 22.695 0.058 c
-h
-23.739 0.103 m
-23.739 -0.291 23.775 -0.566 23.856 -0.721 c
-23.945 -0.879 24.091 -0.956 24.297 -0.956 c
-24.503 -0.956 24.654 -0.864 24.753 -0.676 c
-24.753 1.132 l
-24.654 1.326 24.503 1.425 24.297 1.425 c
-24.099 1.425 23.959 1.344 23.871 1.19 c
-23.783 1.043 23.739 0.771 23.739 0.382 c
-h
-27.663 -1.75 -1.043 3.984 re
-26.576 3.263 m
-26.576 3.418 26.624 3.546 26.723 3.645 c
-26.829 3.752 26.965 3.807 27.134 3.807 c
-27.311 3.807 27.446 3.752 27.546 3.645 c
-27.652 3.546 27.708 3.418 27.708 3.263 c
-27.708 3.094 27.652 2.958 27.546 2.851 c
-27.446 2.753 27.311 2.705 27.134 2.705 c
-26.965 2.705 26.829 2.753 26.723 2.851 c
-26.624 2.958 26.576 3.094 26.576 3.263 c
-30.426 1.22 m
-30.089 1.249 l
-29.802 1.249 29.611 1.124 29.516 0.881 c
-29.516 -1.75 l
-28.471 -1.75 l
-28.471 2.234 l
-29.442 2.234 l
-29.471 1.793 l
-29.637 2.135 29.868 2.308 30.162 2.308 c
-30.28 2.308 30.372 2.285 30.441 2.248 c
-h
-32.5 -1.823 m
-31.97 -1.823 31.551 -1.669 31.249 -1.353 c
-30.956 -1.029 30.809 -0.57 30.809 0.029 c
-30.809 0.338 l
-30.809 0.962 30.945 1.448 31.22 1.793 c
-31.492 2.135 31.885 2.308 32.396 2.308 c
-32.896 2.308 33.267 2.146 33.514 1.822 c
-33.767 1.5 33.9 1.022 33.911 0.397 c
-33.911 -0.103 l
-31.837 -0.103 l
-31.856 -0.397 31.918 -0.614 32.029 -0.75 c
-32.147 -0.89 32.327 -0.956 32.573 -0.956 c
-32.915 -0.956 33.205 -0.838 33.44 -0.603 c
-33.852 -1.235 l
-33.723 -1.411 33.535 -1.555 33.293 -1.661 c
-33.047 -1.768 32.782 -1.823 32.5 -1.823 c
-31.852 0.617 m
-32.882 0.617 l
-32.882 0.72 l
-32.882 0.955 32.841 1.132 32.764 1.249 c
-32.694 1.374 32.566 1.44 32.382 1.44 c
-32.205 1.44 32.073 1.371 31.985 1.234 c
-31.904 1.106 31.86 0.9 31.852 0.617 c
-35.939 -0.956 m
-36.233 -0.956 36.383 -0.761 36.394 -0.368 c
-37.364 -0.368 l
-37.364 -0.802 37.233 -1.154 36.968 -1.426 c
-36.703 -1.691 36.365 -1.823 35.953 -1.823 c
-35.442 -1.823 35.05 -1.669 34.777 -1.353 c
-34.513 -1.029 34.374 -0.559 34.366 0.058 c
-34.366 0.382 l
-34.366 1.007 34.499 1.484 34.763 1.808 c
-35.035 2.138 35.432 2.308 35.953 2.308 c
-36.383 2.308 36.726 2.167 36.982 1.896 c
-37.236 1.62 37.364 1.238 37.364 0.75 c
-36.394 0.75 l
-36.394 0.962 36.354 1.132 36.277 1.249 c
-36.207 1.374 36.09 1.44 35.924 1.44 c
-35.748 1.44 35.619 1.374 35.542 1.249 c
-35.461 1.12 35.417 0.871 35.409 0.5 c
-35.409 0.088 l
-35.409 -0.235 35.424 -0.463 35.454 -0.588 c
-35.49 -0.717 35.546 -0.809 35.615 -0.867 c
-35.693 -0.927 35.799 -0.956 35.939 -0.956 c
-39.172 3.204 m
-39.172 2.234 l
-39.702 2.234 l
-39.702 1.44 l
-39.172 1.44 l
-39.172 -0.53 l
-39.172 -0.688 39.191 -0.794 39.232 -0.852 c
-39.28 -0.912 39.363 -0.941 39.481 -0.941 c
-39.588 -0.941 39.673 -0.933 39.731 -0.912 c
-39.731 -1.72 l
-39.555 -1.786 39.363 -1.823 39.158 -1.823 c
-38.482 -1.823 38.137 -1.437 38.129 -0.661 c
-38.129 1.44 l
-37.674 1.44 l
-37.674 2.234 l
-38.129 2.234 l
-38.129 3.204 l
-h
-40.055 0.367 m
-40.055 0.974 40.194 1.448 40.481 1.793 c
-40.764 2.135 41.157 2.308 41.657 2.308 c
-42.164 2.308 42.561 2.135 42.848 1.793 c
-43.13 1.448 43.274 0.974 43.274 0.367 c
-43.274 0.103 l
-43.274 -0.497 43.13 -0.967 42.848 -1.309 c
-42.561 -1.654 42.164 -1.823 41.657 -1.823 c
-41.146 -1.823 40.749 -1.654 40.466 -1.309 c
-40.19 -0.967 40.055 -0.493 40.055 0.118 c
-h
-41.098 0.103 m
-41.098 -0.603 41.282 -0.956 41.657 -0.956 c
-42.01 -0.956 42.201 -0.661 42.23 -0.073 c
-42.23 0.367 l
-42.23 0.727 42.179 0.999 42.083 1.176 c
-41.984 1.352 41.84 1.44 41.657 1.44 c
-41.48 1.44 41.341 1.352 41.245 1.176 c
-41.146 0.999 41.098 0.727 41.098 0.367 c
-h
-45.875 1.22 m
-45.537 1.249 l
-45.25 1.249 45.059 1.124 44.964 0.881 c
-44.964 -1.75 l
-43.92 -1.75 l
-43.92 2.234 l
-44.89 2.234 l
-44.92 1.793 l
-45.085 2.135 45.317 2.308 45.611 2.308 c
-45.728 2.308 45.821 2.285 45.89 2.248 c
-h
-47.772 -0.015 m
-48.3 2.234 l
-49.403 2.234 l
-48.095 -2.352 l
-47.897 -3.017 47.529 -3.352 46.993 -3.352 c
-46.864 -3.352 46.721 -3.329 46.567 -3.293 c
-46.567 -2.469 l
-46.684 -2.484 l
-46.85 -2.484 46.97 -2.448 47.051 -2.381 c
-47.128 -2.323 47.191 -2.213 47.242 -2.058 c
-47.316 -1.793 l
-46.17 2.234 l
-47.286 2.234 l
-h
-f
-Q
-q 1 0 0 1 620.4617 177.4453 cm
-0 0 m
-0 -0.955 l
-0.603 -0.955 l
-0.603 -1.484 l
-0 -1.484 l
-0 -3.954 l
-0 -4.112 0.023 -4.23 0.074 -4.307 c
-0.133 -4.388 0.221 -4.424 0.339 -4.424 c
-0.427 -4.424 0.515 -4.409 0.603 -4.38 c
-0.603 -4.939 l
-0.456 -4.986 0.302 -5.012 0.148 -5.012 c
--0.11 -5.012 -0.305 -4.92 -0.44 -4.733 c
--0.58 -4.549 -0.646 -4.288 -0.646 -3.954 c
--0.646 -1.484 l
--1.249 -1.484 l
--1.249 -0.955 l
--0.646 -0.955 l
--0.646 0 l
-h
-1.162 -2.763 m
-1.162 -2.186 1.297 -1.73 1.573 -1.396 c
-1.856 -1.055 2.228 -0.881 2.691 -0.881 c
-3.15 -0.881 3.517 -1.051 3.793 -1.381 c
-4.075 -1.705 4.223 -2.153 4.233 -2.719 c
-4.233 -3.145 l
-4.233 -3.715 4.09 -4.17 3.807 -4.512 c
-3.532 -4.847 3.165 -5.012 2.705 -5.012 c
-2.242 -5.012 1.871 -4.85 1.588 -4.527 c
-1.312 -4.197 1.169 -3.755 1.162 -3.204 c
-h
-1.808 -3.145 m
-1.808 -3.549 1.885 -3.866 2.043 -4.101 c
-2.209 -4.336 2.429 -4.453 2.705 -4.453 c
-3.271 -4.453 3.565 -4.041 3.587 -3.218 c
-3.587 -2.763 l
-3.587 -2.362 3.502 -2.042 3.337 -1.807 c
-3.179 -1.565 2.962 -1.44 2.691 -1.44 c
-2.426 -1.44 2.209 -1.565 2.043 -1.807 c
-1.885 -2.042 1.808 -2.362 1.808 -2.763 c
-h
-7.644 0 m
-7.644 -0.955 l
-8.247 -0.955 l
-8.247 -1.484 l
-7.644 -1.484 l
-7.644 -3.954 l
-7.644 -4.112 7.666 -4.23 7.718 -4.307 c
-7.776 -4.388 7.865 -4.424 7.982 -4.424 c
-8.071 -4.424 8.158 -4.409 8.247 -4.38 c
-8.247 -4.939 l
-8.1 -4.986 7.946 -5.012 7.791 -5.012 c
-7.533 -5.012 7.339 -4.92 7.203 -4.733 c
-7.063 -4.549 6.997 -4.288 6.997 -3.954 c
-6.997 -1.484 l
-6.394 -1.484 l
-6.394 -0.955 l
-6.997 -0.955 l
-6.997 0 l
-h
-9.658 -1.367 m
-9.912 -1.043 10.231 -0.881 10.613 -0.881 c
-11.319 -0.881 11.676 -1.352 11.686 -2.293 c
-11.686 -4.939 l
-11.04 -4.939 l
-11.04 -2.322 l
-11.04 -2.009 10.984 -1.789 10.878 -1.66 c
-10.768 -1.535 10.613 -1.469 10.407 -1.469 c
-10.249 -1.469 10.103 -1.525 9.966 -1.631 c
-9.838 -1.741 9.735 -1.878 9.658 -2.042 c
-9.658 -4.939 l
-9.011 -4.939 l
-9.011 0.706 l
-9.658 0.706 l
-h
-14.068 -5.012 m
-13.567 -5.012 13.185 -4.865 12.921 -4.571 c
-12.657 -4.277 12.524 -3.844 12.524 -3.262 c
-12.524 -2.792 l
-12.524 -2.198 12.649 -1.73 12.906 -1.396 c
-13.17 -1.055 13.531 -0.881 13.994 -0.881 c
-14.454 -0.881 14.795 -1.036 15.023 -1.337 c
-15.258 -1.631 15.379 -2.094 15.391 -2.719 c
-15.391 -3.145 l
-13.17 -3.145 l
-13.17 -3.233 l
-13.17 -3.667 13.248 -3.979 13.406 -4.174 c
-13.571 -4.361 13.803 -4.453 14.097 -4.453 c
-14.292 -4.453 14.464 -4.421 14.612 -4.351 c
-14.758 -4.274 14.894 -4.156 15.023 -3.998 c
-15.361 -4.409 l
-15.074 -4.814 14.645 -5.012 14.068 -5.012 c
-13.994 -1.44 m
-13.718 -1.44 13.517 -1.535 13.391 -1.72 c
-13.263 -1.907 13.189 -2.198 13.17 -2.587 c
-14.743 -2.587 l
-14.743 -2.499 l
-14.722 -2.117 14.656 -1.848 14.538 -1.69 c
-14.421 -1.525 14.236 -1.44 13.994 -1.44 c
-19.83 -3.924 m
-19.83 -3.777 19.774 -3.656 19.668 -3.557 c
-19.558 -3.461 19.352 -3.343 19.05 -3.204 c
-18.705 -3.057 18.462 -2.936 18.315 -2.836 c
-18.169 -2.73 18.058 -2.612 17.992 -2.484 c
-17.922 -2.358 17.889 -2.2 17.889 -2.013 c
-17.889 -1.69 18.007 -1.421 18.242 -1.205 c
-18.477 -0.992 18.778 -0.881 19.154 -0.881 c
-19.535 -0.881 19.844 -0.995 20.079 -1.219 c
-20.314 -1.448 20.432 -1.734 20.432 -2.087 c
-19.786 -2.087 l
-19.786 -1.911 19.726 -1.76 19.609 -1.631 c
-19.491 -1.506 19.337 -1.44 19.154 -1.44 c
-18.955 -1.44 18.805 -1.495 18.697 -1.602 c
-18.587 -1.701 18.536 -1.834 18.536 -1.999 c
-18.536 -2.127 18.573 -2.234 18.654 -2.322 c
-18.731 -2.403 18.922 -2.506 19.227 -2.63 c
-19.705 -2.818 20.035 -3.006 20.212 -3.189 c
-20.388 -3.366 20.476 -3.594 20.476 -3.866 c
-20.476 -4.218 20.351 -4.498 20.108 -4.704 c
-19.873 -4.909 19.558 -5.012 19.168 -5.012 c
-18.745 -5.012 18.407 -4.895 18.153 -4.659 c
-17.897 -4.417 17.772 -4.112 17.772 -3.748 c
-18.419 -3.748 l
-18.425 -3.976 18.496 -4.152 18.624 -4.277 c
-18.749 -4.394 18.932 -4.453 19.168 -4.453 c
-19.381 -4.453 19.543 -4.405 19.653 -4.307 c
-19.771 -4.211 19.83 -4.082 19.83 -3.924 c
-24.195 -3.145 m
-24.195 -3.773 24.077 -4.244 23.842 -4.556 c
-23.614 -4.862 23.298 -5.012 22.887 -5.012 c
-22.483 -5.012 22.174 -4.862 21.961 -4.556 c
-21.961 -6.468 l
-21.314 -6.468 l
-21.314 -0.955 l
-21.902 -0.955 l
-21.947 -1.396 l
-22.159 -1.055 22.468 -0.881 22.872 -0.881 c
-23.313 -0.881 23.64 -1.036 23.857 -1.337 c
-24.07 -1.643 24.185 -2.098 24.195 -2.705 c
-h
-23.549 -2.763 m
-23.549 -2.322 23.479 -1.999 23.343 -1.793 c
-23.203 -1.58 22.982 -1.469 22.681 -1.469 c
-22.365 -1.469 22.126 -1.624 21.961 -1.925 c
-21.961 -3.998 l
-22.126 -4.303 22.365 -4.453 22.681 -4.453 c
-22.975 -4.453 23.188 -4.351 23.328 -4.145 c
-23.464 -3.931 23.537 -3.601 23.549 -3.16 c
-h
-26.458 -5.012 m
-25.959 -5.012 25.577 -4.865 25.313 -4.571 c
-25.047 -4.277 24.916 -3.844 24.916 -3.262 c
-24.916 -2.792 l
-24.916 -2.198 25.041 -1.73 25.297 -1.396 c
-25.562 -1.055 25.922 -0.881 26.385 -0.881 c
-26.845 -0.881 27.187 -1.036 27.414 -1.337 c
-27.649 -1.631 27.771 -2.094 27.782 -2.719 c
-27.782 -3.145 l
-25.562 -3.145 l
-25.562 -3.233 l
-25.562 -3.667 25.639 -3.979 25.797 -4.174 c
-25.963 -4.361 26.194 -4.453 26.488 -4.453 c
-26.683 -4.453 26.855 -4.421 27.003 -4.351 c
-27.15 -4.274 27.285 -4.156 27.414 -3.998 c
-27.752 -4.409 l
-27.466 -4.814 27.036 -5.012 26.458 -5.012 c
-26.385 -1.44 m
-26.109 -1.44 25.908 -1.535 25.783 -1.72 c
-25.654 -1.907 25.581 -2.198 25.562 -2.587 c
-27.135 -2.587 l
-27.135 -2.499 l
-27.113 -2.117 27.046 -1.848 26.929 -1.69 c
-26.811 -1.525 26.628 -1.44 26.385 -1.44 c
-29.943 -4.453 m
-30.155 -4.453 30.329 -4.391 30.456 -4.262 c
-30.593 -4.126 30.666 -3.935 30.678 -3.689 c
-31.295 -3.689 l
-31.273 -4.072 31.137 -4.391 30.884 -4.644 c
-30.626 -4.891 30.313 -5.012 29.943 -5.012 c
-29.45 -5.012 29.076 -4.862 28.81 -4.556 c
-28.553 -4.244 28.428 -3.777 28.428 -3.16 c
-28.428 -2.719 l
-28.428 -2.123 28.553 -1.668 28.81 -1.352 c
-29.076 -1.04 29.45 -0.881 29.943 -0.881 c
-30.343 -0.881 30.662 -1.014 30.898 -1.278 c
-31.14 -1.535 31.273 -1.881 31.295 -2.322 c
-30.678 -2.322 l
-30.655 -2.028 30.582 -1.807 30.456 -1.66 c
-30.339 -1.514 30.167 -1.44 29.943 -1.44 c
-29.648 -1.44 29.432 -1.539 29.296 -1.734 c
-29.156 -1.922 29.083 -2.23 29.076 -2.66 c
-29.076 -3.175 l
-29.076 -3.645 29.141 -3.979 29.281 -4.174 c
-29.428 -4.361 29.648 -4.453 29.943 -4.453 c
-32.75 -4.939 -0.647 3.984 re
-32.794 0.088 m
-32.794 -0.022 32.765 -0.114 32.706 -0.191 c
-32.647 -0.261 32.551 -0.294 32.426 -0.294 c
-32.309 -0.294 32.214 -0.261 32.147 -0.191 c
-32.089 -0.114 32.06 -0.022 32.06 0.088 c
-32.06 0.206 32.089 0.298 32.147 0.368 c
-32.214 0.445 32.309 0.485 32.426 0.485 c
-32.551 0.485 32.647 0.445 32.706 0.368 c
-32.765 0.287 32.794 0.195 32.794 0.088 c
-33.941 -4.939 m
-33.941 -1.484 l
-33.426 -1.484 l
-33.426 -0.955 l
-33.941 -0.955 l
-33.941 -0.588 l
-33.948 -0.158 34.062 0.177 34.279 0.412 c
-34.503 0.655 34.815 0.78 35.219 0.78 c
-35.366 0.78 35.506 0.757 35.646 0.721 c
-35.792 0.68 35.944 0.625 36.101 0.559 c
-35.983 -0.014 l
-35.748 0.111 35.506 0.177 35.264 0.177 c
-35.017 0.177 34.845 0.107 34.749 -0.029 c
-34.649 -0.158 34.602 -0.353 34.602 -0.617 c
-34.602 -0.955 l
-35.249 -0.955 l
-35.249 -1.484 l
-34.602 -1.484 l
-34.602 -4.939 l
-h
-36.41 -4.939 -0.647 3.984 re
-38.88 -5.012 m
-38.379 -5.012 37.997 -4.865 37.733 -4.571 c
-37.469 -4.277 37.336 -3.844 37.336 -3.262 c
-37.336 -2.792 l
-37.336 -2.198 37.461 -1.73 37.718 -1.396 c
-37.982 -1.055 38.343 -0.881 38.806 -0.881 c
-39.266 -0.881 39.607 -1.036 39.835 -1.337 c
-40.07 -1.631 40.191 -2.094 40.203 -2.719 c
-40.203 -3.145 l
-37.982 -3.145 l
-37.982 -3.233 l
-37.982 -3.667 38.06 -3.979 38.218 -4.174 c
-38.383 -4.361 38.615 -4.453 38.909 -4.453 c
-39.104 -4.453 39.276 -4.421 39.424 -4.351 c
-39.57 -4.274 39.707 -4.156 39.835 -3.998 c
-40.173 -4.409 l
-39.886 -4.814 39.457 -5.012 38.88 -5.012 c
-38.806 -1.44 m
-38.531 -1.44 38.329 -1.535 38.203 -1.72 c
-38.075 -1.907 38.001 -2.198 37.982 -2.587 c
-39.555 -2.587 l
-39.555 -2.499 l
-39.534 -2.117 39.468 -1.848 39.35 -1.69 c
-39.233 -1.525 39.048 -1.44 38.806 -1.44 c
-40.849 -2.763 m
-40.849 -2.157 40.96 -1.69 41.188 -1.367 c
-41.423 -1.043 41.749 -0.881 42.172 -0.881 c
-42.554 -0.881 42.852 -1.04 43.069 -1.352 c
-43.069 0.706 l
-43.715 0.706 l
-43.715 -4.939 l
-43.127 -4.939 l
-43.083 -4.512 l
-42.878 -4.847 42.572 -5.012 42.172 -5.012 c
-41.76 -5.012 41.437 -4.858 41.202 -4.542 c
-40.966 -4.218 40.849 -3.763 40.849 -3.175 c
-h
-41.496 -3.145 m
-41.496 -3.586 41.558 -3.917 41.687 -4.13 c
-41.823 -4.336 42.044 -4.438 42.348 -4.438 c
-42.672 -4.438 42.911 -4.277 43.069 -3.954 c
-43.069 -1.94 l
-42.9 -1.628 42.661 -1.469 42.348 -1.469 c
-42.044 -1.469 41.823 -1.572 41.687 -1.778 c
-41.558 -1.984 41.496 -2.308 41.496 -2.748 c
-h
-49.315 -3.145 m
-49.315 -3.763 49.202 -4.23 48.978 -4.542 c
-48.76 -4.858 48.438 -5.012 48.008 -5.012 c
-47.585 -5.012 47.272 -4.832 47.067 -4.469 c
-47.037 -4.939 l
-46.435 -4.939 l
-46.435 0.706 l
-47.081 0.706 l
-47.081 -1.396 l
-47.295 -1.055 47.603 -0.881 48.008 -0.881 c
-48.438 -0.881 48.76 -1.04 48.978 -1.352 c
-49.202 -1.657 49.315 -2.123 49.315 -2.748 c
-h
-48.669 -2.763 m
-48.669 -2.293 48.6 -1.962 48.463 -1.764 c
-48.334 -1.569 48.125 -1.469 47.831 -1.469 c
-47.497 -1.469 47.247 -1.653 47.081 -2.013 c
-47.081 -3.895 l
-47.247 -4.259 47.501 -4.438 47.846 -4.438 c
-48.14 -4.438 48.349 -4.336 48.478 -4.13 c
-48.603 -3.924 48.669 -3.609 48.669 -3.175 c
-h
-51.8 -1.572 m
-51.712 -1.554 51.613 -1.543 51.505 -1.543 c
-51.172 -1.543 50.936 -1.727 50.8 -2.087 c
-50.8 -4.939 l
-50.154 -4.939 l
-50.154 -0.955 l
-50.786 -0.955 l
-50.8 -1.367 l
-50.977 -1.043 51.22 -0.881 51.536 -0.881 c
-51.642 -0.881 51.73 -0.904 51.8 -0.941 c
-h
-54.343 -4.939 m
-54.302 -4.85 54.277 -4.704 54.269 -4.498 c
-54.034 -4.843 53.74 -5.012 53.387 -5.012 c
-53.024 -5.012 52.741 -4.916 52.535 -4.718 c
-52.336 -4.512 52.241 -4.226 52.241 -3.85 c
-52.241 -3.451 52.377 -3.131 52.652 -2.896 c
-52.924 -2.653 53.3 -2.528 53.77 -2.528 c
-54.254 -2.528 l
-54.254 -2.102 l
-54.254 -1.866 54.2 -1.701 54.093 -1.602 c
-53.982 -1.495 53.821 -1.44 53.608 -1.44 c
-53.41 -1.44 53.248 -1.499 53.123 -1.616 c
-53.005 -1.734 52.947 -1.881 52.947 -2.057 c
-52.299 -2.057 l
-52.299 -1.863 52.359 -1.672 52.476 -1.484 c
-52.602 -1.3 52.762 -1.153 52.961 -1.043 c
-53.167 -0.937 53.395 -0.881 53.652 -0.881 c
-54.053 -0.881 54.358 -0.984 54.563 -1.19 c
-54.776 -1.396 54.89 -1.69 54.902 -2.072 c
-54.902 -4.086 l
-54.902 -4.391 54.938 -4.656 55.019 -4.88 c
-55.019 -4.939 l
-h
-53.475 -4.424 m
-53.641 -4.424 53.792 -4.38 53.932 -4.292 c
-54.078 -4.203 54.185 -4.093 54.254 -3.954 c
-54.254 -3.013 l
-53.888 -3.013 l
-53.571 -3.013 53.329 -3.083 53.152 -3.218 c
-52.976 -3.347 52.887 -3.534 52.887 -3.777 c
-52.887 -4.005 52.932 -4.17 53.02 -4.277 c
-53.109 -4.376 53.259 -4.424 53.475 -4.424 c
-56.519 -0.955 m
-56.533 -1.396 l
-56.787 -1.055 57.11 -0.881 57.503 -0.881 c
-58.208 -0.881 58.565 -1.352 58.576 -2.293 c
-58.576 -4.939 l
-57.93 -4.939 l
-57.93 -2.322 l
-57.93 -2.009 57.874 -1.789 57.768 -1.66 c
-57.658 -1.535 57.503 -1.469 57.298 -1.469 c
-57.14 -1.469 56.992 -1.525 56.857 -1.631 c
-56.728 -1.741 56.625 -1.878 56.548 -2.042 c
-56.548 -4.939 l
-55.901 -4.939 l
-55.901 -0.955 l
-h
-60.928 -4.453 m
-61.142 -4.453 61.314 -4.391 61.443 -4.262 c
-61.579 -4.126 61.652 -3.935 61.663 -3.689 c
-62.281 -3.689 l
-62.258 -4.072 62.123 -4.391 61.869 -4.644 c
-61.612 -4.891 61.3 -5.012 60.928 -5.012 c
-60.436 -5.012 60.061 -4.862 59.796 -4.556 c
-59.539 -4.244 59.414 -3.777 59.414 -3.16 c
-59.414 -2.719 l
-59.414 -2.123 59.539 -1.668 59.796 -1.352 c
-60.061 -1.04 60.436 -0.881 60.928 -0.881 c
-61.329 -0.881 61.649 -1.014 61.884 -1.278 c
-62.126 -1.535 62.258 -1.881 62.281 -2.322 c
-61.663 -2.322 l
-61.641 -2.028 61.568 -1.807 61.443 -1.66 c
-61.325 -1.514 61.152 -1.44 60.928 -1.44 c
-60.634 -1.44 60.417 -1.539 60.282 -1.734 c
-60.141 -1.922 60.068 -2.23 60.061 -2.66 c
-60.061 -3.175 l
-60.061 -3.645 60.127 -3.979 60.267 -4.174 c
-60.413 -4.361 60.634 -4.453 60.928 -4.453 c
-63.677 -1.367 m
-63.931 -1.043 64.25 -0.881 64.633 -0.881 c
-65.338 -0.881 65.694 -1.352 65.705 -2.293 c
-65.705 -4.939 l
-65.059 -4.939 l
-65.059 -2.322 l
-65.059 -2.009 65.003 -1.789 64.897 -1.66 c
-64.787 -1.535 64.633 -1.469 64.427 -1.469 c
-64.269 -1.469 64.122 -1.525 63.985 -1.631 c
-63.857 -1.741 63.754 -1.878 63.677 -2.042 c
-63.677 -4.939 l
-63.03 -4.939 l
-63.03 0.706 l
-63.677 0.706 l
-h
-66.705 -4.586 m
-66.705 -4.469 66.738 -4.373 66.808 -4.292 c
-66.873 -4.215 66.977 -4.174 67.116 -4.174 c
-67.263 -4.174 67.37 -4.215 67.44 -4.292 c
-67.517 -4.373 67.557 -4.469 67.557 -4.586 c
-67.557 -4.696 67.517 -4.787 67.44 -4.865 c
-67.37 -4.943 67.263 -4.982 67.116 -4.982 c
-66.977 -4.982 66.873 -4.943 66.808 -4.865 c
-66.738 -4.787 66.705 -4.696 66.705 -4.586 c
-71.482 -3.248 m
-71.556 -3.85 l
-71.658 -3.322 l
-72.511 0.412 l
-73.069 0.412 l
-73.907 -3.322 l
-74.01 -3.866 l
-74.083 -3.248 l
-74.746 0.412 l
-75.421 0.412 l
-74.349 -4.939 l
-73.746 -4.939 l
-72.849 -1.043 l
-72.79 -0.72 l
-72.747 -1.043 l
-71.82 -4.939 l
-71.203 -4.939 l
-70.144 0.412 l
-70.821 0.412 l
-h
-76.803 -4.939 -0.646 3.984 re
-76.847 0.088 m
-76.847 -0.022 76.818 -0.114 76.759 -0.191 c
-76.7 -0.261 76.604 -0.294 76.479 -0.294 c
-76.362 -0.294 76.267 -0.261 76.2 -0.191 c
-76.142 -0.114 76.112 -0.022 76.112 0.088 c
-76.112 0.206 76.142 0.298 76.2 0.368 c
-76.267 0.445 76.362 0.485 76.479 0.485 c
-76.604 0.485 76.7 0.445 76.759 0.368 c
-76.818 0.287 76.847 0.195 76.847 0.088 c
-78.669 0 m
-78.669 -0.955 l
-79.272 -0.955 l
-79.272 -1.484 l
-78.669 -1.484 l
-78.669 -3.954 l
-78.669 -4.112 78.692 -4.23 78.744 -4.307 c
-78.802 -4.388 78.891 -4.424 79.008 -4.424 c
-79.096 -4.424 79.184 -4.409 79.272 -4.38 c
-79.272 -4.939 l
-79.126 -4.986 78.971 -5.012 78.817 -5.012 c
-78.559 -5.012 78.365 -4.92 78.229 -4.733 c
-78.089 -4.549 78.023 -4.288 78.023 -3.954 c
-78.023 -1.484 l
-77.42 -1.484 l
-77.42 -0.955 l
-78.023 -0.955 l
-78.023 0 l
-h
-80.683 -1.367 m
-80.938 -1.043 81.256 -0.881 81.639 -0.881 c
-82.345 -0.881 82.701 -1.352 82.712 -2.293 c
-82.712 -4.939 l
-82.065 -4.939 l
-82.065 -2.322 l
-82.065 -2.009 82.01 -1.789 81.904 -1.66 c
-81.794 -1.535 81.639 -1.469 81.433 -1.469 c
-81.275 -1.469 81.128 -1.525 80.992 -1.631 c
-80.864 -1.741 80.761 -1.878 80.683 -2.042 c
-80.683 -4.939 l
-80.037 -4.939 l
-80.037 0.706 l
-80.683 0.706 l
-h
-f
-Q
-707.613 174.374 -1.793 0.867 re
-711.582 174.374 m
-711.582 173.727 711.478 173.242 711.273 172.918 c
-711.067 172.595 710.744 172.433 710.302 172.433 c
-709.957 172.433 709.678 172.587 709.465 172.903 c
-709.436 172.506 l
-708.48 172.506 l
-708.48 178.151 l
-709.523 178.151 l
-709.523 176.167 l
-709.718 176.431 709.972 176.564 710.288 176.564 c
-710.729 176.564 711.052 176.402 711.258 176.078 c
-711.464 175.756 711.57 175.285 711.582 174.667 c
-h
-710.538 174.623 m
-710.538 175.043 710.498 175.322 710.42 175.461 c
-710.34 175.608 710.2 175.681 709.994 175.681 c
-709.777 175.681 709.619 175.583 709.523 175.388 c
-709.523 173.58 l
-709.612 173.393 709.774 173.3 710.009 173.3 c
-710.204 173.3 710.34 173.363 710.42 173.491 c
-710.498 173.616 710.538 173.874 710.538 174.256 c
-h
-f
-q 1 0 0 1 712.3608 172.8592 cm
-0 0 m
-0 0.118 0.033 0.214 0.102 0.294 c
-0.169 0.372 0.272 0.412 0.411 0.412 c
-0.559 0.412 0.665 0.372 0.735 0.294 c
-0.812 0.214 0.852 0.118 0.852 0 c
-0.852 -0.11 0.812 -0.201 0.735 -0.278 c
-0.665 -0.357 0.559 -0.396 0.411 -0.396 c
-0.272 -0.396 0.169 -0.357 0.102 -0.278 c
-0.033 -0.201 0 -0.11 0 0 c
-0 2.822 m
-0 2.94 0.033 3.036 0.102 3.117 c
-0.169 3.194 0.272 3.234 0.411 3.234 c
-0.559 3.234 0.665 3.194 0.735 3.117 c
-0.812 3.036 0.852 2.94 0.852 2.822 c
-0.852 2.712 0.812 2.621 0.735 2.544 c
-0.665 2.463 0.559 2.426 0.411 2.426 c
-0.272 2.426 0.169 2.463 0.102 2.544 c
-0.033 2.621 0 2.712 0 2.822 c
-6.879 0.309 m
-6.761 0.162 l
-6.427 -0.231 5.931 -0.426 5.277 -0.426 c
-4.696 -0.426 4.241 -0.235 3.91 0.148 c
-3.586 0.53 3.418 1.073 3.41 1.779 c
-3.41 2.822 l
-3.41 3.576 3.557 4.138 3.851 4.513 c
-4.152 4.884 4.604 5.072 5.203 5.072 c
-5.71 5.072 6.107 4.929 6.394 4.645 c
-6.688 4.358 6.849 3.955 6.879 3.425 c
-6.203 3.425 l
-6.181 3.756 6.089 4.017 5.924 4.204 c
-5.766 4.399 5.531 4.499 5.218 4.499 c
-4.825 4.499 4.542 4.37 4.366 4.116 c
-4.189 3.859 4.094 3.458 4.087 2.911 c
-4.087 1.823 l
-4.087 1.283 4.189 0.867 4.395 0.574 c
-4.601 0.287 4.895 0.148 5.277 0.148 c
-5.637 0.148 5.916 0.235 6.115 0.412 c
-6.203 0.5 l
-6.203 1.735 l
-5.232 1.735 l
-5.232 2.309 l
-6.879 2.309 l
-h
-8.599 -0.353 -0.647 3.984 re
-8.643 4.675 m
-8.643 4.564 8.613 4.472 8.555 4.395 c
-8.496 4.326 8.401 4.293 8.276 4.293 c
-8.158 4.293 8.062 4.326 7.996 4.395 c
-7.937 4.472 7.908 4.564 7.908 4.675 c
-7.908 4.792 7.937 4.884 7.996 4.954 c
-8.062 5.031 8.158 5.072 8.276 5.072 c
-8.401 5.072 8.496 5.031 8.555 4.954 c
-8.613 4.873 8.643 4.781 8.643 4.675 c
-10.466 4.586 m
-10.466 3.631 l
-11.069 3.631 l
-11.069 3.102 l
-10.466 3.102 l
-10.466 0.632 l
-10.466 0.474 10.487 0.357 10.539 0.279 c
-10.598 0.198 10.686 0.162 10.803 0.162 c
-10.892 0.162 10.98 0.177 11.069 0.206 c
-11.069 -0.353 l
-10.921 -0.4 10.767 -0.426 10.612 -0.426 c
-10.356 -0.426 10.161 -0.334 10.024 -0.147 c
-9.885 0.037 9.818 0.298 9.818 0.632 c
-9.818 3.102 l
-9.216 3.102 l
-9.216 3.631 l
-9.818 3.631 l
-9.818 4.586 l
-h
-16.521 0.794 m
-17.124 3.631 l
-17.771 3.631 l
-16.786 -0.353 l
-16.272 -0.353 l
-15.493 2.5 l
-14.743 -0.353 l
-14.214 -0.353 l
-13.259 3.631 l
-13.891 3.631 l
-14.508 0.867 l
-15.243 3.631 l
-15.757 3.631 l
-h
-19.152 -0.353 -0.646 3.984 re
-19.197 4.675 m
-19.197 4.564 19.168 4.472 19.108 4.395 c
-19.05 4.326 18.954 4.293 18.83 4.293 c
-18.712 4.293 18.616 4.326 18.55 4.395 c
-18.491 4.472 18.462 4.564 18.462 4.675 c
-18.462 4.792 18.491 4.884 18.55 4.954 c
-18.616 5.031 18.712 5.072 18.83 5.072 c
-18.954 5.072 19.05 5.031 19.108 4.954 c
-19.168 4.873 19.197 4.781 19.197 4.675 c
-20.872 -0.353 -0.646 5.644 re
-22.593 -0.353 -0.647 5.644 re
-26.708 0.133 m
-26.921 0.133 27.094 0.195 27.222 0.324 c
-27.359 0.46 27.432 0.651 27.443 0.897 c
-28.06 0.897 l
-28.039 0.515 27.902 0.195 27.649 -0.058 c
-27.391 -0.305 27.079 -0.426 26.708 -0.426 c
-26.216 -0.426 25.841 -0.276 25.576 0.03 c
-25.319 0.342 25.194 0.809 25.194 1.426 c
-25.194 1.867 l
-25.194 2.463 25.319 2.918 25.576 3.234 c
-25.841 3.547 26.216 3.705 26.708 3.705 c
-27.108 3.705 27.428 3.572 27.663 3.308 c
-27.906 3.051 28.039 2.705 28.06 2.264 c
-27.443 2.264 l
-27.421 2.558 27.347 2.779 27.222 2.926 c
-27.104 3.072 26.932 3.146 26.708 3.146 c
-26.414 3.146 26.198 3.047 26.061 2.852 c
-25.922 2.664 25.849 2.356 25.841 1.926 c
-25.841 1.411 l
-25.841 0.941 25.907 0.607 26.046 0.412 c
-26.194 0.225 26.414 0.133 26.708 0.133 c
-30.456 3.014 m
-30.368 3.032 30.269 3.043 30.162 3.043 c
-29.828 3.043 29.593 2.859 29.456 2.5 c
-29.456 -0.353 l
-28.81 -0.353 l
-28.81 3.631 l
-29.442 3.631 l
-29.456 3.219 l
-29.633 3.543 29.876 3.705 30.192 3.705 c
-30.298 3.705 30.387 3.682 30.456 3.645 c
-h
-32.456 -0.426 m
-31.956 -0.426 31.573 -0.278 31.309 0.015 c
-31.044 0.309 30.912 0.742 30.912 1.324 c
-30.912 1.794 l
-30.912 2.389 31.037 2.856 31.295 3.19 c
-31.559 3.532 31.919 3.705 32.382 3.705 c
-32.841 3.705 33.183 3.55 33.411 3.249 c
-33.646 2.955 33.767 2.492 33.778 1.867 c
-33.778 1.441 l
-31.559 1.441 l
-31.559 1.353 l
-31.559 0.919 31.636 0.607 31.794 0.412 c
-31.96 0.225 32.191 0.133 32.485 0.133 c
-32.679 0.133 32.852 0.166 32.999 0.235 c
-33.146 0.312 33.282 0.43 33.411 0.588 c
-33.749 0.177 l
-33.462 -0.228 33.032 -0.426 32.456 -0.426 c
-32.382 3.146 m
-32.106 3.146 31.904 3.051 31.779 2.866 c
-31.65 2.679 31.577 2.389 31.559 1.999 c
-33.132 1.999 l
-33.132 2.087 l
-33.109 2.469 33.043 2.738 32.926 2.897 c
-32.808 3.061 32.625 3.146 32.382 3.146 c
-36.6 -0.353 m
-36.56 -0.264 36.535 -0.118 36.527 0.088 c
-36.292 -0.257 35.998 -0.426 35.646 -0.426 c
-35.281 -0.426 34.998 -0.33 34.792 -0.132 c
-34.594 0.074 34.499 0.36 34.499 0.736 c
-34.499 1.135 34.634 1.455 34.91 1.691 c
-35.182 1.933 35.557 2.058 36.027 2.058 c
-36.512 2.058 l
-36.512 2.484 l
-36.512 2.72 36.457 2.885 36.351 2.984 c
-36.24 3.091 36.079 3.146 35.866 3.146 c
-35.667 3.146 35.505 3.087 35.38 2.97 c
-35.263 2.852 35.204 2.705 35.204 2.529 c
-34.557 2.529 l
-34.557 2.723 34.616 2.914 34.734 3.102 c
-34.859 3.286 35.021 3.433 35.218 3.543 c
-35.424 3.649 35.652 3.705 35.91 3.705 c
-36.311 3.705 36.615 3.602 36.821 3.396 c
-37.034 3.19 37.148 2.897 37.159 2.514 c
-37.159 0.5 l
-37.159 0.195 37.196 -0.07 37.277 -0.294 c
-37.277 -0.353 l
-h
-35.733 0.162 m
-35.899 0.162 36.049 0.206 36.189 0.294 c
-36.336 0.383 36.442 0.493 36.512 0.632 c
-36.512 1.573 l
-36.145 1.573 l
-35.829 1.573 35.586 1.503 35.41 1.368 c
-35.233 1.239 35.145 1.052 35.145 0.809 c
-35.145 0.581 35.189 0.416 35.278 0.309 c
-35.366 0.21 35.517 0.162 35.733 0.162 c
-39.011 4.586 m
-39.011 3.631 l
-39.614 3.631 l
-39.614 3.102 l
-39.011 3.102 l
-39.011 0.632 l
-39.011 0.474 39.033 0.357 39.085 0.279 c
-39.143 0.198 39.232 0.162 39.349 0.162 c
-39.438 0.162 39.526 0.177 39.614 0.206 c
-39.614 -0.353 l
-39.467 -0.4 39.313 -0.426 39.158 -0.426 c
-38.901 -0.426 38.706 -0.334 38.57 -0.147 c
-38.431 0.037 38.364 0.298 38.364 0.632 c
-38.364 3.102 l
-37.762 3.102 l
-37.762 3.631 l
-38.364 3.631 l
-38.364 4.586 l
-h
-41.804 -0.426 m
-41.304 -0.426 40.922 -0.278 40.658 0.015 c
-40.392 0.309 40.261 0.742 40.261 1.324 c
-40.261 1.794 l
-40.261 2.389 40.386 2.856 40.643 3.19 c
-40.907 3.532 41.267 3.705 41.73 3.705 c
-42.19 3.705 42.532 3.55 42.759 3.249 c
-42.995 2.955 43.116 2.492 43.127 1.867 c
-43.127 1.441 l
-40.907 1.441 l
-40.907 1.353 l
-40.907 0.919 40.984 0.607 41.142 0.412 c
-41.308 0.225 41.539 0.133 41.834 0.133 c
-42.028 0.133 42.201 0.166 42.348 0.235 c
-42.495 0.312 42.63 0.43 42.759 0.588 c
-43.097 0.177 l
-42.811 -0.228 42.381 -0.426 41.804 -0.426 c
-41.73 3.146 m
-41.455 3.146 41.253 3.051 41.128 2.866 c
-40.999 2.679 40.926 2.389 40.907 1.999 c
-42.48 1.999 l
-42.48 2.087 l
-42.458 2.469 42.392 2.738 42.274 2.897 c
-42.156 3.061 41.973 3.146 41.73 3.146 c
-46.478 4.586 m
-46.478 3.631 l
-47.081 3.631 l
-47.081 3.102 l
-46.478 3.102 l
-46.478 0.632 l
-46.478 0.474 46.501 0.357 46.551 0.279 c
-46.611 0.198 46.699 0.162 46.817 0.162 c
-46.904 0.162 46.993 0.177 47.081 0.206 c
-47.081 -0.353 l
-46.934 -0.4 46.78 -0.426 46.625 -0.426 c
-46.368 -0.426 46.173 -0.334 46.037 -0.147 c
-45.898 0.037 45.832 0.298 45.832 0.632 c
-45.832 3.102 l
-45.229 3.102 l
-45.229 3.631 l
-45.832 3.631 l
-45.832 4.586 l
-h
-48.492 3.219 m
-48.745 3.543 49.065 3.705 49.447 3.705 c
-50.153 3.705 50.509 3.234 50.52 2.294 c
-50.52 -0.353 l
-49.874 -0.353 l
-49.874 2.264 l
-49.874 2.577 49.819 2.797 49.712 2.926 c
-49.602 3.051 49.447 3.117 49.242 3.117 c
-49.084 3.117 48.937 3.061 48.801 2.955 c
-48.672 2.845 48.569 2.708 48.492 2.544 c
-48.492 -0.353 l
-47.845 -0.353 l
-47.845 5.292 l
-48.492 5.292 l
-h
-52.901 -0.426 m
-52.402 -0.426 52.02 -0.278 51.756 0.015 c
-51.49 0.309 51.359 0.742 51.359 1.324 c
-51.359 1.794 l
-51.359 2.389 51.484 2.856 51.741 3.19 c
-52.005 3.532 52.365 3.705 52.828 3.705 c
-53.287 3.705 53.63 3.55 53.857 3.249 c
-54.092 2.955 54.214 2.492 54.225 1.867 c
-54.225 1.441 l
-52.005 1.441 l
-52.005 1.353 l
-52.005 0.919 52.082 0.607 52.24 0.412 c
-52.406 0.225 52.637 0.133 52.932 0.133 c
-53.126 0.133 53.298 0.166 53.445 0.235 c
-53.593 0.312 53.728 0.43 53.857 0.588 c
-54.195 0.177 l
-53.909 -0.228 53.479 -0.426 52.901 -0.426 c
-52.828 3.146 m
-52.552 3.146 52.35 3.051 52.226 2.866 c
-52.097 2.679 52.024 2.389 52.005 1.999 c
-53.578 1.999 l
-53.578 2.087 l
-53.556 2.469 53.489 2.738 53.372 2.897 c
-53.254 3.061 53.071 3.146 52.828 3.146 c
-f
-Q
-q 1 0 0 1 663.6041 164.1141 cm
-0 0 m
-0 0.147 -0.056 0.268 -0.162 0.367 c
--0.272 0.463 -0.478 0.58 -0.779 0.72 c
--1.124 0.866 -1.367 0.988 -1.515 1.087 c
--1.661 1.194 -1.771 1.311 -1.837 1.44 c
--1.908 1.565 -1.941 1.723 -1.941 1.911 c
--1.941 2.234 -1.823 2.502 -1.588 2.719 c
--1.353 2.932 -1.051 3.042 -0.676 3.042 c
--0.294 3.042 0.014 2.929 0.249 2.705 c
-0.484 2.476 0.602 2.19 0.602 1.837 c
--0.044 1.837 l
--0.044 2.013 -0.104 2.164 -0.221 2.293 c
--0.339 2.418 -0.493 2.484 -0.676 2.484 c
--0.875 2.484 -1.025 2.429 -1.132 2.322 c
--1.242 2.223 -1.294 2.09 -1.294 1.925 c
--1.294 1.797 -1.257 1.69 -1.176 1.602 c
--1.099 1.521 -0.908 1.418 -0.603 1.294 c
--0.125 1.105 0.206 0.918 0.382 0.735 c
-0.559 0.558 0.646 0.33 0.646 0.058 c
-0.646 -0.294 0.522 -0.574 0.279 -0.78 c
-0.044 -0.985 -0.272 -1.088 -0.661 -1.088 c
--1.084 -1.088 -1.422 -0.971 -1.675 -0.736 c
--1.933 -0.493 -2.058 -0.188 -2.058 0.176 c
--1.411 0.176 l
--1.404 -0.052 -1.334 -0.229 -1.205 -0.353 c
--1.081 -0.47 -0.897 -0.53 -0.661 -0.53 c
--0.449 -0.53 -0.287 -0.482 -0.177 -0.383 c
--0.059 -0.287 0 -0.158 0 0 c
-4.365 0.779 m
-4.365 0.151 4.247 -0.32 4.012 -0.632 c
-3.785 -0.938 3.468 -1.088 3.057 -1.088 c
-2.653 -1.088 2.344 -0.938 2.131 -0.632 c
-2.131 -2.544 l
-1.484 -2.544 l
-1.484 2.969 l
-2.072 2.969 l
-2.117 2.528 l
-2.329 2.869 2.639 3.042 3.042 3.042 c
-3.484 3.042 3.811 2.888 4.027 2.587 c
-4.241 2.281 4.355 1.826 4.365 1.219 c
-h
-3.719 1.161 m
-3.719 1.602 3.649 1.925 3.513 2.131 c
-3.373 2.344 3.152 2.454 2.851 2.454 c
-2.535 2.454 2.296 2.3 2.131 1.999 c
-2.131 -0.074 l
-2.296 -0.379 2.535 -0.53 2.851 -0.53 c
-3.146 -0.53 3.358 -0.427 3.499 -0.221 c
-3.634 -0.008 3.707 0.323 3.719 0.764 c
-h
-6.629 -1.088 m
-6.129 -1.088 5.747 -0.941 5.483 -0.647 c
-5.218 -0.353 5.086 0.08 5.086 0.661 c
-5.086 1.132 l
-5.086 1.726 5.211 2.194 5.468 2.528 c
-5.733 2.869 6.092 3.042 6.556 3.042 c
-7.015 3.042 7.357 2.888 7.584 2.587 c
-7.819 2.293 7.941 1.83 7.952 1.205 c
-7.952 0.779 l
-5.733 0.779 l
-5.733 0.69 l
-5.733 0.257 5.81 -0.056 5.968 -0.25 c
-6.133 -0.437 6.364 -0.53 6.659 -0.53 c
-6.853 -0.53 7.026 -0.497 7.173 -0.427 c
-7.32 -0.35 7.456 -0.232 7.584 -0.074 c
-7.923 -0.485 l
-7.636 -0.89 7.206 -1.088 6.629 -1.088 c
-6.556 2.484 m
-6.28 2.484 6.078 2.389 5.953 2.204 c
-5.824 2.017 5.751 1.726 5.733 1.337 c
-7.305 1.337 l
-7.305 1.425 l
-7.283 1.807 7.217 2.076 7.1 2.234 c
-6.982 2.399 6.798 2.484 6.556 2.484 c
-10.113 -0.53 m
-10.326 -0.53 10.499 -0.468 10.628 -0.339 c
-10.763 -0.202 10.836 -0.011 10.848 0.235 c
-11.465 0.235 l
-11.443 -0.148 11.307 -0.468 11.054 -0.721 c
-10.796 -0.967 10.484 -1.088 10.113 -1.088 c
-9.62 -1.088 9.246 -0.938 8.981 -0.632 c
-8.723 -0.32 8.598 0.147 8.598 0.764 c
-8.598 1.205 l
-8.598 1.801 8.723 2.256 8.981 2.572 c
-9.246 2.884 9.62 3.042 10.113 3.042 c
-10.514 3.042 10.833 2.91 11.068 2.645 c
-11.31 2.389 11.443 2.042 11.465 1.602 c
-10.848 1.602 l
-10.826 1.896 10.753 2.117 10.628 2.263 c
-10.51 2.41 10.337 2.484 10.113 2.484 c
-9.818 2.484 9.602 2.385 9.466 2.19 c
-9.326 2.002 9.253 1.693 9.246 1.263 c
-9.246 0.749 l
-9.246 0.278 9.311 -0.056 9.452 -0.25 c
-9.598 -0.437 9.818 -0.53 10.113 -0.53 c
-12.92 -1.015 -0.646 3.984 re
-12.964 4.012 m
-12.964 3.902 12.935 3.81 12.876 3.733 c
-12.818 3.663 12.722 3.63 12.596 3.63 c
-12.479 3.63 12.384 3.663 12.318 3.733 c
-12.259 3.81 12.23 3.902 12.23 4.012 c
-12.23 4.13 12.259 4.222 12.318 4.292 c
-12.384 4.369 12.479 4.409 12.596 4.409 c
-12.722 4.409 12.818 4.369 12.876 4.292 c
-12.935 4.211 12.964 4.119 12.964 4.012 c
-14.111 -1.015 m
-14.111 2.439 l
-13.596 2.439 l
-13.596 2.969 l
-14.111 2.969 l
-14.111 3.336 l
-14.119 3.766 14.232 4.101 14.449 4.336 c
-14.674 4.579 14.986 4.704 15.389 4.704 c
-15.536 4.704 15.676 4.681 15.816 4.644 c
-15.963 4.604 16.114 4.548 16.272 4.483 c
-16.154 3.91 l
-15.919 4.035 15.676 4.101 15.434 4.101 c
-15.187 4.101 15.015 4.031 14.919 3.895 c
-14.82 3.766 14.772 3.571 14.772 3.307 c
-14.772 2.969 l
-15.419 2.969 l
-15.419 2.439 l
-14.772 2.439 l
-14.772 -1.015 l
-h
-16.581 -1.015 -0.647 3.984 re
-19.05 -1.088 m
-18.55 -1.088 18.167 -0.941 17.903 -0.647 c
-17.639 -0.353 17.506 0.08 17.506 0.661 c
-17.506 1.132 l
-17.506 1.726 17.631 2.194 17.888 2.528 c
-18.153 2.869 18.514 3.042 18.977 3.042 c
-19.436 3.042 19.777 2.888 20.005 2.587 c
-20.24 2.293 20.361 1.83 20.373 1.205 c
-20.373 0.779 l
-18.153 0.779 l
-18.153 0.69 l
-18.153 0.257 18.231 -0.056 18.389 -0.25 c
-18.553 -0.437 18.786 -0.53 19.079 -0.53 c
-19.274 -0.53 19.447 -0.497 19.594 -0.427 c
-19.74 -0.35 19.877 -0.232 20.005 -0.074 c
-20.343 -0.485 l
-20.057 -0.89 19.627 -1.088 19.05 -1.088 c
-18.977 2.484 m
-18.701 2.484 18.499 2.389 18.374 2.204 c
-18.245 2.017 18.171 1.726 18.153 1.337 c
-19.726 1.337 l
-19.726 1.425 l
-19.704 1.807 19.638 2.076 19.52 2.234 c
-19.403 2.399 19.219 2.484 18.977 2.484 c
-21.02 1.161 m
-21.02 1.767 21.13 2.234 21.358 2.557 c
-21.593 2.881 21.92 3.042 22.343 3.042 c
-22.724 3.042 23.022 2.884 23.239 2.572 c
-23.239 4.629 l
-23.885 4.629 l
-23.885 -1.015 l
-23.297 -1.015 l
-23.254 -0.588 l
-23.048 -0.923 22.743 -1.088 22.343 -1.088 c
-21.93 -1.088 21.608 -0.934 21.373 -0.618 c
-21.137 -0.294 21.02 0.161 21.02 0.749 c
-h
-21.666 0.779 m
-21.666 0.338 21.729 0.007 21.857 -0.206 c
-21.993 -0.412 22.214 -0.515 22.518 -0.515 c
-22.842 -0.515 23.081 -0.353 23.239 -0.03 c
-23.239 1.984 l
-23.07 2.296 22.831 2.454 22.518 2.454 c
-22.214 2.454 21.993 2.352 21.857 2.146 c
-21.729 1.94 21.666 1.616 21.666 1.176 c
-h
-29.487 0.779 m
-29.487 0.161 29.372 -0.306 29.148 -0.618 c
-28.931 -0.934 28.608 -1.088 28.178 -1.088 c
-27.756 -1.088 27.443 -0.908 27.237 -0.545 c
-27.208 -1.015 l
-26.605 -1.015 l
-26.605 4.629 l
-27.252 4.629 l
-27.252 2.528 l
-27.465 2.869 27.773 3.042 28.178 3.042 c
-28.608 3.042 28.931 2.884 29.148 2.572 c
-29.372 2.267 29.487 1.801 29.487 1.176 c
-h
-28.839 1.161 m
-28.839 1.631 28.77 1.961 28.633 2.16 c
-28.505 2.355 28.296 2.454 28.001 2.454 c
-27.667 2.454 27.417 2.271 27.252 1.911 c
-27.252 0.029 l
-27.417 -0.335 27.671 -0.515 28.016 -0.515 c
-28.311 -0.515 28.519 -0.412 28.648 -0.206 c
-28.773 0 28.839 0.315 28.839 0.749 c
-h
-31.97 2.352 m
-31.882 2.37 31.783 2.381 31.677 2.381 c
-31.342 2.381 31.106 2.197 30.971 1.837 c
-30.971 -1.015 l
-30.324 -1.015 l
-30.324 2.969 l
-30.956 2.969 l
-30.971 2.557 l
-31.147 2.881 31.39 3.042 31.706 3.042 c
-31.812 3.042 31.9 3.02 31.97 2.983 c
-h
-34.513 -1.015 m
-34.472 -0.927 34.447 -0.78 34.439 -0.574 c
-34.204 -0.919 33.911 -1.088 33.558 -1.088 c
-33.194 -1.088 32.911 -0.992 32.705 -0.794 c
-32.507 -0.588 32.411 -0.302 32.411 0.073 c
-32.411 0.473 32.548 0.793 32.822 1.028 c
-33.095 1.271 33.47 1.396 33.94 1.396 c
-34.425 1.396 l
-34.425 1.822 l
-34.425 2.057 34.37 2.223 34.264 2.322 c
-34.154 2.429 33.992 2.484 33.778 2.484 c
-33.58 2.484 33.418 2.425 33.293 2.308 c
-33.175 2.19 33.117 2.042 33.117 1.866 c
-32.47 1.866 l
-32.47 2.061 32.529 2.252 32.646 2.439 c
-32.772 2.624 32.933 2.77 33.132 2.881 c
-33.337 2.987 33.566 3.042 33.822 3.042 c
-34.223 3.042 34.528 2.94 34.734 2.734 c
-34.947 2.528 35.06 2.234 35.072 1.851 c
-35.072 -0.162 l
-35.072 -0.468 35.108 -0.732 35.189 -0.956 c
-35.189 -1.015 l
-h
-33.646 -0.5 m
-33.811 -0.5 33.962 -0.456 34.102 -0.368 c
-34.248 -0.279 34.355 -0.169 34.425 -0.03 c
-34.425 0.911 l
-34.058 0.911 l
-33.741 0.911 33.499 0.841 33.323 0.706 c
-33.146 0.577 33.057 0.389 33.057 0.147 c
-33.057 -0.081 33.102 -0.246 33.19 -0.353 c
-33.279 -0.452 33.429 -0.5 33.646 -0.5 c
-36.689 2.969 m
-36.703 2.528 l
-36.957 2.869 37.281 3.042 37.674 3.042 c
-38.379 3.042 38.736 2.572 38.746 1.631 c
-38.746 -1.015 l
-38.1 -1.015 l
-38.1 1.602 l
-38.1 1.914 38.044 2.135 37.938 2.263 c
-37.828 2.389 37.674 2.454 37.468 2.454 c
-37.31 2.454 37.163 2.399 37.026 2.293 c
-36.898 2.183 36.795 2.046 36.718 1.881 c
-36.718 -1.015 l
-36.072 -1.015 l
-36.072 2.969 l
-h
-41.098 -0.53 m
-41.312 -0.53 41.485 -0.468 41.613 -0.339 c
-41.749 -0.202 41.822 -0.011 41.834 0.235 c
-42.451 0.235 l
-42.428 -0.148 42.293 -0.468 42.039 -0.721 c
-41.782 -0.967 41.47 -1.088 41.098 -1.088 c
-40.606 -1.088 40.231 -0.938 39.966 -0.632 c
-39.71 -0.32 39.584 0.147 39.584 0.764 c
-39.584 1.205 l
-39.584 1.801 39.71 2.256 39.966 2.572 c
-40.231 2.884 40.606 3.042 41.098 3.042 c
-41.499 3.042 41.819 2.91 42.054 2.645 c
-42.297 2.389 42.428 2.042 42.451 1.602 c
-41.834 1.602 l
-41.811 1.896 41.738 2.117 41.613 2.263 c
-41.495 2.41 41.323 2.484 41.098 2.484 c
-40.805 2.484 40.587 2.385 40.452 2.19 c
-40.312 2.002 40.238 1.693 40.231 1.263 c
-40.231 0.749 l
-40.231 0.278 40.297 -0.056 40.437 -0.25 c
-40.583 -0.437 40.805 -0.53 41.098 -0.53 c
-43.847 2.557 m
-44.101 2.881 44.421 3.042 44.803 3.042 c
-45.508 3.042 45.865 2.572 45.875 1.631 c
-45.875 -1.015 l
-45.229 -1.015 l
-45.229 1.602 l
-45.229 1.914 45.173 2.135 45.067 2.263 c
-44.957 2.389 44.803 2.454 44.597 2.454 c
-44.439 2.454 44.292 2.399 44.155 2.293 c
-44.027 2.183 43.924 2.046 43.847 1.881 c
-43.847 -1.015 l
-43.201 -1.015 l
-43.201 4.629 l
-43.847 4.629 l
-h
-49.256 -1.015 -0.646 3.984 re
-49.3 4.012 m
-49.3 3.902 49.271 3.81 49.212 3.733 c
-49.154 3.663 49.058 3.63 48.932 3.63 c
-48.815 3.63 48.72 3.663 48.654 3.733 c
-48.595 3.81 48.566 3.902 48.566 4.012 c
-48.566 4.13 48.595 4.222 48.654 4.292 c
-48.72 4.369 48.815 4.409 48.932 4.409 c
-49.058 4.409 49.154 4.369 49.212 4.292 c
-49.271 4.211 49.3 4.119 49.3 4.012 c
-50.565 -1.015 m
-50.565 2.439 l
-50.035 2.439 l
-50.035 2.969 l
-50.565 2.969 l
-50.565 3.424 l
-50.565 3.825 50.66 4.137 50.858 4.365 c
-51.064 4.589 51.344 4.704 51.696 4.704 c
-51.833 4.704 51.965 4.681 52.093 4.644 c
-52.064 4.101 l
-51.965 4.119 51.866 4.13 51.77 4.13 c
-51.395 4.13 51.211 3.865 51.211 3.336 c
-51.211 2.969 l
-51.887 2.969 l
-51.887 2.439 l
-51.211 2.439 l
-51.211 -1.015 l
-h
-55.077 -1.015 -0.647 3.984 re
-55.122 4.012 m
-55.122 3.902 55.091 3.81 55.033 3.733 c
-54.974 3.663 54.879 3.63 54.754 3.63 c
-54.636 3.63 54.54 3.663 54.474 3.733 c
-54.416 3.81 54.386 3.902 54.386 4.012 c
-54.386 4.13 54.416 4.222 54.474 4.292 c
-54.54 4.369 54.636 4.409 54.754 4.409 c
-54.879 4.409 54.974 4.369 55.033 4.292 c
-55.091 4.211 55.122 4.119 55.122 4.012 c
-56.944 3.924 m
-56.944 2.969 l
-57.547 2.969 l
-57.547 2.439 l
-56.944 2.439 l
-56.944 -0.03 l
-56.944 -0.188 56.966 -0.306 57.017 -0.383 c
-57.077 -0.464 57.164 -0.5 57.282 -0.5 c
-57.37 -0.5 57.458 -0.485 57.547 -0.456 c
-57.547 -1.015 l
-57.399 -1.062 57.245 -1.088 57.091 -1.088 c
-56.834 -1.088 56.639 -0.996 56.503 -0.809 c
-56.363 -0.626 56.298 -0.364 56.298 -0.03 c
-56.298 2.439 l
-55.695 2.439 l
-55.695 2.969 l
-56.298 2.969 l
-56.298 3.924 l
-h
-59.899 1.161 m
-59.899 1.767 60.009 2.234 60.236 2.557 c
-60.472 2.881 60.799 3.042 61.221 3.042 c
-61.603 3.042 61.902 2.884 62.118 2.572 c
-62.118 4.629 l
-62.765 4.629 l
-62.765 -1.015 l
-62.177 -1.015 l
-62.133 -0.588 l
-61.927 -0.923 61.622 -1.088 61.221 -1.088 c
-60.809 -1.088 60.487 -0.934 60.252 -0.618 c
-60.016 -0.294 59.899 0.161 59.899 0.749 c
-h
-60.545 0.779 m
-60.545 0.338 60.608 0.007 60.736 -0.206 c
-60.872 -0.412 61.093 -0.515 61.397 -0.515 c
-61.721 -0.515 61.96 -0.353 62.118 -0.03 c
-62.118 1.984 l
-61.949 2.296 61.711 2.454 61.397 2.454 c
-61.093 2.454 60.872 2.352 60.736 2.146 c
-60.608 1.94 60.545 1.616 60.545 1.176 c
-h
-63.632 1.161 m
-63.632 1.738 63.768 2.194 64.044 2.528 c
-64.327 2.869 64.697 3.042 65.16 3.042 c
-65.62 3.042 65.987 2.873 66.263 2.543 c
-66.546 2.219 66.693 1.77 66.704 1.205 c
-66.704 0.779 l
-66.704 0.209 66.561 -0.246 66.278 -0.588 c
-66.002 -0.923 65.634 -1.088 65.175 -1.088 c
-64.713 -1.088 64.341 -0.927 64.059 -0.603 c
-63.783 -0.273 63.639 0.168 63.632 0.72 c
-h
-64.279 0.779 m
-64.279 0.374 64.356 0.058 64.514 -0.177 c
-64.68 -0.412 64.9 -0.53 65.175 -0.53 c
-65.742 -0.53 66.035 -0.118 66.058 0.706 c
-66.058 1.161 l
-66.058 1.562 65.973 1.881 65.808 2.117 c
-65.649 2.358 65.433 2.484 65.16 2.484 c
-64.896 2.484 64.68 2.358 64.514 2.117 c
-64.356 1.881 64.279 1.562 64.279 1.161 c
-h
-68.967 -1.088 m
-68.468 -1.088 68.086 -0.941 67.822 -0.647 c
-67.556 -0.353 67.425 0.08 67.425 0.661 c
-67.425 1.132 l
-67.425 1.726 67.55 2.194 67.807 2.528 c
-68.071 2.869 68.431 3.042 68.894 3.042 c
-69.353 3.042 69.696 2.888 69.923 2.587 c
-70.158 2.293 70.28 1.83 70.291 1.205 c
-70.291 0.779 l
-68.071 0.779 l
-68.071 0.69 l
-68.071 0.257 68.148 -0.056 68.306 -0.25 c
-68.472 -0.437 68.703 -0.53 68.998 -0.53 c
-69.192 -0.53 69.364 -0.497 69.511 -0.427 c
-69.659 -0.35 69.794 -0.232 69.923 -0.074 c
-70.261 -0.485 l
-69.975 -0.89 69.545 -1.088 68.967 -1.088 c
-68.894 2.484 m
-68.618 2.484 68.416 2.389 68.292 2.204 c
-68.163 2.017 68.09 1.726 68.071 1.337 c
-69.644 1.337 l
-69.644 1.425 l
-69.622 1.807 69.555 2.076 69.438 2.234 c
-69.32 2.399 69.137 2.484 68.894 2.484 c
-73.01 0 m
-73.01 0.147 72.955 0.268 72.848 0.367 c
-72.738 0.463 72.532 0.58 72.231 0.72 c
-71.886 0.866 71.643 0.988 71.496 1.087 c
-71.349 1.194 71.238 1.311 71.172 1.44 c
-71.103 1.565 71.07 1.723 71.07 1.911 c
-71.07 2.234 71.188 2.502 71.423 2.719 c
-71.658 2.932 71.959 3.042 72.333 3.042 c
-72.716 3.042 73.025 2.929 73.26 2.705 c
-73.495 2.476 73.613 2.19 73.613 1.837 c
-72.966 1.837 l
-72.966 2.013 72.907 2.164 72.79 2.293 c
-72.672 2.418 72.518 2.484 72.333 2.484 c
-72.136 2.484 71.984 2.429 71.878 2.322 c
-71.768 2.223 71.716 2.09 71.716 1.925 c
-71.716 1.797 71.753 1.69 71.834 1.602 c
-71.911 1.521 72.102 1.418 72.408 1.294 c
-72.885 1.105 73.216 0.918 73.392 0.735 c
-73.569 0.558 73.657 0.33 73.657 0.058 c
-73.657 -0.294 73.532 -0.574 73.289 -0.78 c
-73.054 -0.985 72.738 -1.088 72.348 -1.088 c
-71.926 -1.088 71.588 -0.971 71.334 -0.736 c
-71.078 -0.493 70.952 -0.188 70.952 0.176 c
-71.599 0.176 l
-71.606 -0.052 71.676 -0.229 71.805 -0.353 c
-71.93 -0.47 72.113 -0.53 72.348 -0.53 c
-72.562 -0.53 72.724 -0.482 72.834 -0.383 c
-72.951 -0.287 73.01 -0.158 73.01 0 c
-76.832 2.969 m
-76.846 2.528 l
-77.1 2.869 77.424 3.042 77.817 3.042 c
-78.523 3.042 78.879 2.572 78.889 1.631 c
-78.889 -1.015 l
-78.243 -1.015 l
-78.243 1.602 l
-78.243 1.914 78.188 2.135 78.081 2.263 c
-77.971 2.389 77.817 2.454 77.611 2.454 c
-77.453 2.454 77.306 2.399 77.17 2.293 c
-77.041 2.183 76.938 2.046 76.861 1.881 c
-76.861 -1.015 l
-76.214 -1.015 l
-76.214 2.969 l
-h
-79.728 1.161 m
-79.728 1.738 79.863 2.194 80.139 2.528 c
-80.422 2.869 80.794 3.042 81.256 3.042 c
-81.715 3.042 82.083 2.873 82.359 2.543 c
-82.642 2.219 82.789 1.77 82.799 1.205 c
-82.799 0.779 l
-82.799 0.209 82.656 -0.246 82.373 -0.588 c
-82.097 -0.923 81.73 -1.088 81.27 -1.088 c
-80.808 -1.088 80.437 -0.927 80.154 -0.603 c
-79.878 -0.273 79.735 0.168 79.728 0.72 c
-h
-80.374 0.779 m
-80.374 0.374 80.451 0.058 80.609 -0.177 c
-80.775 -0.412 80.996 -0.53 81.27 -0.53 c
-81.837 -0.53 82.131 -0.118 82.153 0.706 c
-82.153 1.161 l
-82.153 1.562 82.068 1.881 81.903 2.117 c
-81.745 2.358 81.528 2.484 81.256 2.484 c
-80.992 2.484 80.775 2.358 80.609 2.117 c
-80.451 1.881 80.374 1.562 80.374 1.161 c
-h
-84.49 3.924 m
-84.49 2.969 l
-85.093 2.969 l
-85.093 2.439 l
-84.49 2.439 l
-84.49 -0.03 l
-84.49 -0.188 84.512 -0.306 84.563 -0.383 c
-84.622 -0.464 84.711 -0.5 84.828 -0.5 c
-84.916 -0.5 85.004 -0.485 85.093 -0.456 c
-85.093 -1.015 l
-84.946 -1.062 84.792 -1.088 84.637 -1.088 c
-84.38 -1.088 84.185 -0.996 84.049 -0.809 c
-83.909 -0.626 83.843 -0.364 83.843 -0.03 c
-83.843 2.439 l
-83.24 2.439 l
-83.24 2.969 l
-83.843 2.969 l
-83.843 3.924 l
-h
-89.002 -1.088 m
-88.503 -1.088 88.121 -0.941 87.856 -0.647 c
-87.591 -0.353 87.46 0.08 87.46 0.661 c
-87.46 1.132 l
-87.46 1.726 87.584 2.194 87.841 2.528 c
-88.106 2.869 88.466 3.042 88.929 3.042 c
-89.388 3.042 89.731 2.888 89.958 2.587 c
-90.193 2.293 90.315 1.83 90.325 1.205 c
-90.325 0.779 l
-88.106 0.779 l
-88.106 0.69 l
-88.106 0.257 88.183 -0.056 88.341 -0.25 c
-88.507 -0.437 88.738 -0.53 89.031 -0.53 c
-89.227 -0.53 89.399 -0.497 89.546 -0.427 c
-89.694 -0.35 89.829 -0.232 89.958 -0.074 c
-90.296 -0.485 l
-90.01 -0.89 89.579 -1.088 89.002 -1.088 c
-88.929 2.484 m
-88.653 2.484 88.451 2.389 88.326 2.204 c
-88.198 2.017 88.125 1.726 88.106 1.337 c
-89.679 1.337 l
-89.679 1.425 l
-89.657 1.807 89.59 2.076 89.473 2.234 c
-89.355 2.399 89.172 2.484 88.929 2.484 c
-92.251 1.514 m
-92.942 2.969 l
-93.692 2.969 l
-92.604 0.999 l
-93.721 -1.015 l
-92.971 -1.015 l
-92.266 0.47 l
-91.56 -1.015 l
-90.81 -1.015 l
-91.913 0.999 l
-90.84 2.969 l
-91.589 2.969 l
-h
-95.117 -1.015 -0.646 3.984 re
-95.161 4.012 m
-95.161 3.902 95.132 3.81 95.073 3.733 c
-95.015 3.663 94.919 3.63 94.794 3.63 c
-94.676 3.63 94.581 3.663 94.515 3.733 c
-94.456 3.81 94.427 3.902 94.427 4.012 c
-94.427 4.13 94.456 4.222 94.515 4.292 c
-94.581 4.369 94.676 4.409 94.794 4.409 c
-94.919 4.409 95.015 4.369 95.073 4.292 c
-95.132 4.211 95.161 4.119 95.161 4.012 c
-98.072 0 m
-98.072 0.147 98.017 0.268 97.91 0.367 c
-97.8 0.463 97.594 0.58 97.293 0.72 c
-96.948 0.866 96.705 0.988 96.557 1.087 c
-96.411 1.194 96.301 1.311 96.235 1.44 c
-96.164 1.565 96.131 1.723 96.131 1.911 c
-96.131 2.234 96.249 2.502 96.484 2.719 c
-96.719 2.932 97.021 3.042 97.396 3.042 c
-97.778 3.042 98.086 2.929 98.321 2.705 c
-98.557 2.476 98.674 2.19 98.674 1.837 c
-98.028 1.837 l
-98.028 2.013 97.969 2.164 97.851 2.293 c
-97.733 2.418 97.579 2.484 97.396 2.484 c
-97.197 2.484 97.047 2.429 96.94 2.322 c
-96.83 2.223 96.779 2.09 96.779 1.925 c
-96.779 1.797 96.815 1.69 96.896 1.602 c
-96.973 1.521 97.164 1.418 97.469 1.294 c
-97.947 1.105 98.278 0.918 98.454 0.735 c
-98.631 0.558 98.718 0.33 98.718 0.058 c
-98.718 -0.294 98.594 -0.574 98.351 -0.78 c
-98.116 -0.985 97.8 -1.088 97.411 -1.088 c
-96.988 -1.088 96.65 -0.971 96.397 -0.736 c
-96.139 -0.493 96.014 -0.188 96.014 0.176 c
-96.661 0.176 l
-96.668 -0.052 96.738 -0.229 96.867 -0.353 c
-96.991 -0.47 97.176 -0.53 97.411 -0.53 c
-97.623 -0.53 97.785 -0.482 97.895 -0.383 c
-98.013 -0.287 98.072 -0.158 98.072 0 c
-100.409 3.924 m
-100.409 2.969 l
-101.012 2.969 l
-101.012 2.439 l
-100.409 2.439 l
-100.409 -0.03 l
-100.409 -0.188 100.431 -0.306 100.482 -0.383 c
-100.542 -0.464 100.63 -0.5 100.747 -0.5 c
-100.835 -0.5 100.923 -0.485 101.012 -0.456 c
-101.012 -1.015 l
-100.865 -1.062 100.711 -1.088 100.556 -1.088 c
-100.299 -1.088 100.104 -0.996 99.968 -0.809 c
-99.828 -0.626 99.763 -0.364 99.763 -0.03 c
-99.763 2.439 l
-99.159 2.439 l
-99.159 2.969 l
-99.763 2.969 l
-99.763 3.924 l
-h
-101.82 -0.662 m
-101.82 -0.545 101.853 -0.449 101.923 -0.368 c
-101.989 -0.291 102.092 -0.25 102.232 -0.25 c
-102.379 -0.25 102.485 -0.291 102.555 -0.368 c
-102.633 -0.449 102.672 -0.545 102.672 -0.662 c
-102.672 -0.772 102.633 -0.864 102.555 -0.941 c
-102.485 -1.019 102.379 -1.058 102.232 -1.058 c
-102.092 -1.058 101.989 -1.019 101.923 -0.941 c
-101.853 -0.864 101.82 -0.772 101.82 -0.662 c
-f
-Q
-0.113 0.082 0.09 0 k
-535.667 157.87 238.665 -12.898 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 540.8555 151.0312 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.088 -0.5 c
--0.147 -0.646 -0.242 -0.775 -0.367 -0.881 c
--0.496 -0.992 -0.658 -1.08 -0.852 -1.146 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.263 l
--2.142 -1.257 -2.358 -1.22 -2.543 -1.161 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.926 c
--3.127 -0.819 -3.23 -0.691 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.213 -3.484 -0.014 c
--2.66 0.133 l
--2.642 0.033 -2.616 -0.058 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.367 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.684 -1.992 0.691 -1.999 0.691 c
--2.167 0.728 -2.329 0.772 -2.484 0.823 c
--2.642 0.882 -2.786 0.96 -2.91 1.058 c
--3.039 1.154 -3.141 1.279 -3.218 1.426 c
--3.289 1.573 -3.322 1.756 -3.322 1.985 c
--3.322 2.18 -3.289 2.344 -3.218 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.837 c
--2.8 2.932 -2.645 3.003 -2.469 3.043 c
--2.293 3.09 -2.102 3.12 -1.896 3.131 c
--1.896 3.558 l
--1.543 3.558 l
--1.543 3.131 l
--1.319 3.12 -1.128 3.09 -0.97 3.043 c
--0.804 2.992 -0.669 2.918 -0.558 2.822 c
--0.44 2.735 -0.349 2.62 -0.279 2.484 c
--0.201 2.344 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.253 -1.213 2.459 -1.543 2.5 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.36 -1.469 1.353 c
--1.294 1.312 -1.117 1.264 -0.941 1.206 c
--0.756 1.147 -0.595 1.066 -0.455 0.971 c
--0.319 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.455 c
--2.26 2.425 -2.318 2.385 -2.366 2.338 c
--2.406 2.297 -2.436 2.249 -2.454 2.19 c
--2.476 2.132 -2.484 2.066 -2.484 1.999 c
--2.484 1.912 -2.469 1.837 -2.439 1.779 c
--2.41 1.72 -2.373 1.669 -2.322 1.632 c
--2.263 1.592 -2.2 1.559 -2.131 1.529 c
--2.065 1.5 -1.984 1.47 -1.896 1.441 c
-h
--0.837 -0.014 m
--0.837 0.092 -0.86 0.177 -0.897 0.235 c
--0.926 0.302 -0.977 0.357 -1.043 0.397 c
--1.102 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.53 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.529 -1.028 -0.44 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.014 c
-6.402 -2.66 m
-6.185 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.52 -2.484 5.403 -2.396 c
-5.285 -2.315 5.185 -2.219 5.108 -2.102 c
-5.039 -1.984 4.991 -1.855 4.961 -1.72 c
-5.858 -1.616 l
-5.895 -1.753 5.964 -1.859 6.064 -1.94 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.057 6.681 -2.028 c
-6.758 -1.999 6.828 -1.944 6.887 -1.866 c
-6.945 -1.797 6.99 -1.705 7.019 -1.587 c
-7.056 -1.469 7.078 -1.323 7.078 -1.146 c
-7.078 -0.955 l
-7.078 -0.889 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.072 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.214 -0.897 5.108 -0.75 c
-5.009 -0.595 4.935 -0.411 4.888 -0.205 c
-4.836 0.008 4.815 0.243 4.815 0.5 c
-4.815 0.772 4.836 1.018 4.888 1.235 c
-4.946 1.448 5.027 1.632 5.137 1.779 c
-5.245 1.933 5.376 2.051 5.534 2.132 c
-5.689 2.22 5.876 2.264 6.093 2.264 c
-6.189 2.264 6.288 2.253 6.387 2.234 c
-6.483 2.213 6.571 2.18 6.652 2.132 c
-6.739 2.08 6.817 2.018 6.887 1.941 c
-6.964 1.86 7.026 1.768 7.078 1.661 c
-7.092 1.661 l
-7.092 1.808 l
-7.1 1.867 7.107 1.918 7.107 1.97 c
-7.115 2.029 7.122 2.076 7.122 2.117 c
-7.13 2.165 7.14 2.198 7.151 2.22 c
-8.004 2.22 l
-7.992 2.139 7.982 2.029 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.161 l
-7.975 -1.415 7.938 -1.635 7.872 -1.822 c
-7.802 -2.007 7.699 -2.161 7.563 -2.278 c
-7.423 -2.403 7.258 -2.499 7.063 -2.557 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.53 m
-7.092 0.742 7.067 0.919 7.019 1.058 c
-6.978 1.206 6.924 1.324 6.857 1.411 c
-6.799 1.5 6.729 1.559 6.652 1.588 c
-6.571 1.625 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.226 1.621 6.137 1.573 c
-6.056 1.532 5.991 1.463 5.931 1.367 c
-5.88 1.279 5.835 1.162 5.799 1.014 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.338 c
-6.049 -0.515 6.211 -0.602 6.417 -0.602 c
-6.483 -0.602 6.556 -0.588 6.637 -0.558 c
-6.725 -0.521 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.176 7.019 -0.029 c
-7.067 0.118 7.092 0.302 7.092 0.53 c
-11.036 -0.646 m
-12.168 -0.646 l
-12.168 -1.263 l
-8.86 -1.263 l
-8.86 -0.646 l
-10.124 -0.646 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.22 l
-11.036 2.22 l
-h
-10.124 3.514 0.912 -0.676 re
-10.124 2.837 m
-13.6 1.602 m
-13.057 1.602 l
-13.057 2.22 l
-13.644 2.22 l
-13.924 3.117 l
-14.498 3.117 l
-14.498 2.22 l
-15.732 2.22 l
-15.732 1.602 l
-14.498 1.602 l
-14.498 -0.103 l
-14.498 -0.323 l
-14.504 -0.393 14.527 -0.455 14.556 -0.515 c
-14.593 -0.565 14.648 -0.61 14.718 -0.646 c
-14.795 -0.675 14.909 -0.691 15.056 -0.691 c
-15.192 -0.691 15.327 -0.687 15.468 -0.675 c
-15.603 -0.658 15.736 -0.632 15.865 -0.602 c
-15.865 -1.205 l
-15.784 -1.216 15.707 -1.23 15.629 -1.249 c
-15.549 -1.261 15.471 -1.267 15.394 -1.278 c
-15.313 -1.286 15.225 -1.294 15.129 -1.294 c
-15.042 -1.301 14.942 -1.308 14.836 -1.308 c
-14.648 -1.308 14.486 -1.294 14.35 -1.263 c
-14.222 -1.227 14.107 -1.183 14.012 -1.132 c
-13.924 -1.084 13.85 -1.025 13.792 -0.955 c
-13.733 -0.878 13.689 -0.801 13.66 -0.72 c
-13.63 -0.632 13.608 -0.544 13.6 -0.455 c
-13.59 -0.36 13.586 -0.264 13.586 -0.176 c
-h
-22.281 -1.263 m
-22.281 0.853 l
-22.281 1.018 22.273 1.154 22.265 1.264 c
-22.255 1.371 22.236 1.455 22.207 1.515 c
-22.185 1.58 22.155 1.632 22.119 1.661 c
-22.09 1.691 22.049 1.706 22.001 1.706 c
-21.943 1.706 21.887 1.676 21.839 1.617 c
-21.799 1.565 21.766 1.492 21.737 1.397 c
-21.708 1.309 21.681 1.195 21.663 1.058 c
-21.652 0.919 21.648 0.769 21.648 0.603 c
-21.648 -1.263 l
-20.898 -1.263 l
-20.898 1.47 l
-20.898 1.706 l
-20.898 1.926 l
-20.898 2.003 20.891 2.066 20.884 2.117 c
-20.884 2.22 l
-21.56 2.22 l
-21.56 2.132 l
-21.56 1.985 l
-21.567 1.926 21.575 1.867 21.575 1.808 c
-21.575 1.646 l
-21.59 1.646 l
-21.608 1.735 21.637 1.812 21.677 1.881 c
-21.714 1.959 21.758 2.029 21.81 2.088 c
-21.868 2.147 21.935 2.19 22.016 2.22 c
-22.093 2.257 22.182 2.278 22.281 2.278 c
-22.464 2.278 22.604 2.224 22.692 2.117 c
-22.787 2.018 22.857 1.86 22.898 1.646 c
-22.913 1.646 l
-22.949 1.742 22.99 1.831 23.03 1.912 c
-23.078 1.989 23.133 2.051 23.192 2.103 c
-23.25 2.161 23.317 2.205 23.397 2.234 c
-23.474 2.264 23.563 2.278 23.662 2.278 c
-23.798 2.278 23.912 2.253 24 2.205 c
-24.089 2.153 24.154 2.08 24.206 1.985 c
-24.264 1.885 24.301 1.756 24.324 1.602 c
-24.353 1.455 24.368 1.272 24.368 1.058 c
-24.368 -1.263 l
-23.647 -1.263 l
-23.647 0.853 l
-23.647 1.018 23.64 1.154 23.632 1.264 c
-23.622 1.371 23.603 1.455 23.574 1.515 c
-23.552 1.58 23.522 1.632 23.486 1.661 c
-23.456 1.691 23.416 1.706 23.368 1.706 c
-23.25 1.706 23.155 1.617 23.089 1.441 c
-23.03 1.272 23.001 1.014 23.001 0.661 c
-23.001 -1.263 l
-h
-26.738 -1.323 m
-26.481 -1.323 26.253 -1.286 26.047 -1.22 c
-25.841 -1.143 25.665 -1.028 25.518 -0.881 c
-25.371 -0.727 25.253 -0.536 25.165 -0.309 c
-25.084 -0.085 25.047 0.181 25.047 0.485 c
-25.047 0.816 25.091 1.095 25.18 1.324 c
-25.276 1.559 25.404 1.742 25.562 1.881 c
-25.727 2.018 25.915 2.117 26.121 2.176 c
-26.327 2.242 26.535 2.278 26.753 2.278 c
-27.025 2.278 27.26 2.227 27.458 2.132 c
-27.664 2.043 27.829 1.912 27.958 1.735 c
-28.094 1.565 28.193 1.36 28.252 1.118 c
-28.318 0.882 28.355 0.618 28.355 0.324 c
-28.355 0.309 l
-25.988 0.309 l
-25.988 0.162 26.003 0.023 26.032 -0.103 c
-26.069 -0.231 26.124 -0.345 26.194 -0.44 c
-26.26 -0.529 26.344 -0.598 26.444 -0.646 c
-26.539 -0.698 26.653 -0.72 26.782 -0.72 c
-26.936 -0.72 27.076 -0.687 27.194 -0.617 c
-27.318 -0.551 27.407 -0.448 27.458 -0.309 c
-28.297 -0.382 l
-28.266 -0.481 28.212 -0.588 28.135 -0.706 c
-28.054 -0.816 27.95 -0.918 27.826 -1.014 c
-27.708 -1.103 27.553 -1.176 27.37 -1.234 c
-27.194 -1.294 26.98 -1.323 26.738 -1.323 c
-26.738 1.706 m
-26.65 1.706 26.562 1.691 26.473 1.661 c
-26.385 1.632 26.304 1.58 26.238 1.515 c
-26.169 1.444 26.109 1.357 26.061 1.249 c
-26.022 1.139 26.003 1.014 26.003 0.867 c
-27.472 0.867 l
-27.472 1.004 27.447 1.125 27.399 1.235 c
-27.359 1.341 27.304 1.43 27.237 1.5 c
-27.179 1.565 27.106 1.617 27.017 1.646 c
-26.929 1.683 26.834 1.706 26.738 1.706 c
-32.254 1.47 m
-32.154 1.478 32.052 1.488 31.945 1.5 c
-31.835 1.518 31.713 1.529 31.578 1.529 c
-31.401 1.529 31.243 1.488 31.107 1.411 c
-30.967 1.341 30.85 1.243 30.755 1.118 c
-30.666 0.989 30.597 0.842 30.549 0.676 c
-30.508 0.507 30.49 0.331 30.49 0.148 c
-30.49 -1.263 l
-29.593 -1.263 l
-29.593 0.985 l
-29.593 1.11 29.582 1.235 29.564 1.353 c
-29.552 1.478 29.538 1.596 29.519 1.706 c
-29.509 1.823 29.494 1.918 29.475 1.999 c
-29.454 2.088 29.435 2.161 29.417 2.22 c
-30.298 2.22 l
-30.306 2.168 30.317 2.117 30.328 2.058 c
-30.346 1.999 30.361 1.933 30.373 1.867 c
-30.391 1.808 30.406 1.742 30.416 1.676 c
-30.423 1.606 30.435 1.544 30.446 1.484 c
-30.46 1.484 l
-30.497 1.602 30.549 1.709 30.608 1.808 c
-30.674 1.904 30.755 1.989 30.843 2.058 c
-30.931 2.124 31.034 2.18 31.152 2.22 c
-31.276 2.257 31.424 2.278 31.592 2.278 c
-31.717 2.278 31.835 2.271 31.945 2.264 c
-32.062 2.253 32.166 2.238 32.254 2.22 c
-h
-34.834 -2.66 m
-34.616 -2.66 34.425 -2.635 34.26 -2.587 c
-34.091 -2.547 33.951 -2.484 33.834 -2.396 c
-33.716 -2.315 33.617 -2.219 33.54 -2.102 c
-33.471 -1.984 33.423 -1.855 33.392 -1.72 c
-34.29 -1.616 l
-34.327 -1.753 34.396 -1.859 34.495 -1.94 c
-34.591 -2.028 34.716 -2.072 34.863 -2.072 c
-34.951 -2.072 35.032 -2.057 35.113 -2.028 c
-35.19 -1.999 35.26 -1.944 35.318 -1.866 c
-35.377 -1.797 35.422 -1.705 35.451 -1.587 c
-35.487 -1.469 35.509 -1.323 35.509 -1.146 c
-35.509 -0.955 l
-35.509 -0.889 35.513 -0.831 35.524 -0.779 c
-35.524 -0.588 l
-35.509 -0.588 l
-35.41 -0.816 35.267 -0.977 35.083 -1.072 c
-34.896 -1.172 34.69 -1.22 34.466 -1.22 c
-34.26 -1.22 34.076 -1.183 33.922 -1.103 c
-33.775 -1.014 33.646 -0.897 33.54 -0.75 c
-33.44 -0.595 33.367 -0.411 33.319 -0.205 c
-33.268 0.008 33.246 0.243 33.246 0.5 c
-33.246 0.772 33.268 1.018 33.319 1.235 c
-33.378 1.448 33.459 1.632 33.569 1.779 c
-33.676 1.933 33.808 2.051 33.966 2.132 c
-34.121 2.22 34.308 2.264 34.525 2.264 c
-34.62 2.264 34.72 2.253 34.819 2.234 c
-34.915 2.213 35.002 2.18 35.083 2.132 c
-35.171 2.08 35.249 2.018 35.318 1.941 c
-35.395 1.86 35.458 1.768 35.509 1.661 c
-35.524 1.661 l
-35.524 1.808 l
-35.532 1.867 35.539 1.918 35.539 1.97 c
-35.547 2.029 35.553 2.076 35.553 2.117 c
-35.561 2.165 35.572 2.198 35.583 2.22 c
-36.436 2.22 l
-36.424 2.139 36.413 2.029 36.407 1.881 c
-36.407 1.411 l
-36.407 -1.161 l
-36.407 -1.415 36.37 -1.635 36.303 -1.822 c
-36.234 -2.007 36.131 -2.161 35.995 -2.278 c
-35.855 -2.403 35.69 -2.499 35.495 -2.557 c
-35.297 -2.624 35.076 -2.66 34.834 -2.66 c
-35.524 0.53 m
-35.524 0.742 35.499 0.919 35.451 1.058 c
-35.41 1.206 35.355 1.324 35.289 1.411 c
-35.231 1.5 35.16 1.559 35.083 1.588 c
-35.002 1.625 34.925 1.646 34.848 1.646 c
-34.749 1.646 34.657 1.621 34.568 1.573 c
-34.488 1.532 34.422 1.463 34.363 1.367 c
-34.312 1.279 34.267 1.162 34.231 1.014 c
-34.202 0.875 34.186 0.706 34.186 0.5 c
-34.186 0.125 34.246 -0.154 34.363 -0.338 c
-34.481 -0.515 34.643 -0.602 34.848 -0.602 c
-34.915 -0.602 34.988 -0.588 35.069 -0.558 c
-35.156 -0.521 35.231 -0.463 35.289 -0.382 c
-35.355 -0.294 35.41 -0.176 35.451 -0.029 c
-35.499 0.118 35.524 0.302 35.524 0.53 c
-38.923 -1.323 m
-38.666 -1.323 38.439 -1.286 38.233 -1.22 c
-38.027 -1.143 37.851 -1.028 37.704 -0.881 c
-37.556 -0.727 37.439 -0.536 37.35 -0.309 c
-37.27 -0.085 37.234 0.181 37.234 0.485 c
-37.234 0.816 37.277 1.095 37.365 1.324 c
-37.461 1.559 37.589 1.742 37.747 1.881 c
-37.913 2.018 38.1 2.117 38.306 2.176 c
-38.512 2.242 38.722 2.278 38.938 2.278 c
-39.21 2.278 39.445 2.227 39.644 2.132 c
-39.85 2.043 40.015 1.912 40.143 1.735 c
-40.28 1.565 40.378 1.36 40.438 1.118 c
-40.504 0.882 40.54 0.618 40.54 0.324 c
-40.54 0.309 l
-38.174 0.309 l
-38.174 0.162 38.188 0.023 38.218 -0.103 c
-38.254 -0.231 38.31 -0.345 38.379 -0.44 c
-38.446 -0.529 38.53 -0.598 38.63 -0.646 c
-38.725 -0.698 38.839 -0.72 38.967 -0.72 c
-39.122 -0.72 39.262 -0.687 39.379 -0.617 c
-39.504 -0.551 39.592 -0.448 39.644 -0.309 c
-40.482 -0.382 l
-40.452 -0.481 40.397 -0.588 40.32 -0.706 c
-40.239 -0.816 40.136 -0.918 40.012 -1.014 c
-39.894 -1.103 39.74 -1.176 39.555 -1.234 c
-39.379 -1.294 39.166 -1.323 38.923 -1.323 c
-38.923 1.706 m
-38.836 1.706 38.747 1.691 38.659 1.661 c
-38.57 1.632 38.489 1.58 38.424 1.515 c
-38.354 1.444 38.295 1.357 38.248 1.249 c
-38.207 1.139 38.188 1.014 38.188 0.867 c
-39.659 0.867 l
-39.659 1.004 39.632 1.125 39.585 1.235 c
-39.545 1.341 39.489 1.43 39.424 1.5 c
-39.364 1.565 39.291 1.617 39.203 1.646 c
-39.115 1.683 39.019 1.706 38.923 1.706 c
-46.236 -2.631 m
-46.236 3.514 l
-48.162 3.514 l
-48.162 2.896 l
-47.089 2.896 l
-47.089 -2.013 l
-48.162 -2.013 l
-48.162 -2.631 l
-h
-51.193 1.602 m
-51.193 -1.263 l
-50.297 -1.263 l
-50.297 1.602 l
-49.473 1.602 l
-49.473 2.22 l
-50.297 2.22 l
-50.297 2.484 l
-50.297 2.61 50.312 2.741 50.341 2.881 c
-50.378 3.017 50.447 3.135 50.547 3.234 c
-50.653 3.341 50.796 3.429 50.973 3.499 c
-51.149 3.564 51.374 3.601 51.649 3.601 c
-51.862 3.601 52.06 3.591 52.237 3.572 c
-52.413 3.55 52.564 3.532 52.693 3.514 c
-52.693 2.926 l
-52.564 2.944 52.421 2.959 52.267 2.97 c
-52.109 2.977 51.958 2.984 51.811 2.984 c
-51.682 2.984 51.58 2.97 51.502 2.94 c
-51.422 2.911 51.359 2.87 51.311 2.822 c
-51.26 2.771 51.226 2.708 51.208 2.631 c
-51.197 2.562 51.193 2.484 51.193 2.396 c
-51.193 2.22 l
-52.619 2.22 l
-52.619 1.602 l
-h
-56.625 1.47 m
-56.525 1.478 56.423 1.488 56.316 1.5 c
-56.205 1.518 56.085 1.529 55.949 1.529 c
-55.773 1.529 55.615 1.488 55.478 1.411 c
-55.339 1.341 55.221 1.243 55.125 1.118 c
-55.037 0.989 54.967 0.842 54.919 0.676 c
-54.879 0.507 54.861 0.331 54.861 0.148 c
-54.861 -1.263 l
-53.965 -1.263 l
-53.965 0.985 l
-53.965 1.11 53.953 1.235 53.934 1.353 c
-53.924 1.478 53.909 1.596 53.891 1.706 c
-53.88 1.823 53.865 1.918 53.847 1.999 c
-53.824 2.088 53.807 2.161 53.788 2.22 c
-54.67 2.22 l
-54.677 2.168 54.688 2.117 54.699 2.058 c
-54.717 1.999 54.732 1.933 54.744 1.867 c
-54.761 1.808 54.776 1.742 54.788 1.676 c
-54.794 1.606 54.806 1.544 54.817 1.484 c
-54.832 1.484 l
-54.869 1.602 54.919 1.709 54.979 1.808 c
-55.044 1.904 55.125 1.989 55.214 2.058 c
-55.302 2.124 55.405 2.18 55.522 2.22 c
-55.648 2.257 55.794 2.278 55.964 2.278 c
-56.088 2.278 56.205 2.271 56.316 2.264 c
-56.434 2.253 56.536 2.238 56.625 2.22 c
-h
-60.876 0.485 m
-60.876 0.21 60.839 -0.04 60.774 -0.264 c
-60.704 -0.481 60.601 -0.669 60.465 -0.823 c
-60.325 -0.981 60.149 -1.103 59.935 -1.19 c
-59.719 -1.278 59.465 -1.323 59.172 -1.323 c
-58.896 -1.323 58.649 -1.278 58.437 -1.19 c
-58.231 -1.103 58.058 -0.981 57.922 -0.823 c
-57.782 -0.669 57.68 -0.481 57.614 -0.264 c
-57.543 -0.04 57.51 0.21 57.51 0.485 c
-57.51 0.738 57.539 0.974 57.599 1.191 c
-57.664 1.415 57.768 1.606 57.907 1.764 c
-58.044 1.929 58.219 2.058 58.437 2.147 c
-58.649 2.234 58.907 2.278 59.201 2.278 c
-59.513 2.278 59.774 2.234 59.98 2.147 c
-60.193 2.058 60.365 1.929 60.494 1.764 c
-60.631 1.606 60.729 1.415 60.789 1.191 c
-60.847 0.974 60.876 0.738 60.876 0.485 c
-59.921 0.485 m
-59.921 0.691 59.906 0.867 59.877 1.014 c
-59.855 1.162 59.818 1.283 59.76 1.382 c
-59.7 1.478 59.627 1.548 59.538 1.588 c
-59.451 1.636 59.341 1.661 59.216 1.661 c
-58.951 1.661 58.76 1.562 58.642 1.367 c
-58.524 1.18 58.466 0.886 58.466 0.485 c
-58.466 0.063 58.524 -0.243 58.642 -0.426 c
-58.76 -0.613 58.936 -0.706 59.172 -0.706 c
-59.297 -0.706 59.411 -0.687 59.509 -0.646 c
-59.605 -0.598 59.686 -0.525 59.745 -0.426 c
-59.811 -0.33 59.855 -0.205 59.877 -0.058 c
-59.906 0.088 59.921 0.268 59.921 0.485 c
-62.894 -1.263 m
-62.894 0.853 l
-62.894 1.018 62.887 1.154 62.879 1.264 c
-62.869 1.371 62.85 1.455 62.821 1.515 c
-62.798 1.58 62.769 1.632 62.732 1.661 c
-62.703 1.691 62.663 1.706 62.615 1.706 c
-62.555 1.706 62.501 1.676 62.453 1.617 c
-62.412 1.565 62.38 1.492 62.35 1.397 c
-62.32 1.309 62.295 1.195 62.277 1.058 c
-62.266 0.919 62.262 0.769 62.262 0.603 c
-62.262 -1.263 l
-61.512 -1.263 l
-61.512 1.47 l
-61.512 1.706 l
-61.512 1.926 l
-61.512 2.003 61.505 2.066 61.497 2.117 c
-61.497 2.22 l
-62.173 2.22 l
-62.173 2.132 l
-62.173 1.985 l
-62.181 1.926 62.189 1.867 62.189 1.808 c
-62.189 1.646 l
-62.203 1.646 l
-62.221 1.735 62.251 1.812 62.291 1.881 c
-62.328 1.959 62.372 2.029 62.424 2.088 c
-62.482 2.147 62.549 2.19 62.63 2.22 c
-62.707 2.257 62.794 2.278 62.894 2.278 c
-63.078 2.278 63.218 2.224 63.305 2.117 c
-63.401 2.018 63.471 1.86 63.511 1.646 c
-63.526 1.646 l
-63.563 1.742 63.603 1.831 63.644 1.912 c
-63.691 1.989 63.746 2.051 63.806 2.103 c
-63.864 2.161 63.93 2.205 64.011 2.234 c
-64.088 2.264 64.176 2.278 64.276 2.278 c
-64.411 2.278 64.525 2.253 64.614 2.205 c
-64.702 2.153 64.768 2.08 64.82 1.985 c
-64.878 1.885 64.915 1.756 64.937 1.602 c
-64.967 1.455 64.982 1.272 64.982 1.058 c
-64.982 -1.263 l
-64.261 -1.263 l
-64.261 0.853 l
-64.261 1.018 64.253 1.154 64.246 1.264 c
-64.236 1.371 64.217 1.455 64.188 1.515 c
-64.165 1.58 64.136 1.632 64.099 1.661 c
-64.07 1.691 64.03 1.706 63.982 1.706 c
-63.864 1.706 63.769 1.617 63.702 1.441 c
-63.644 1.272 63.614 1.014 63.614 0.661 c
-63.614 -1.263 l
-h
-72.044 -1.263 m
-72.044 0.721 l
-72.044 1.022 72 1.243 71.912 1.382 c
-71.831 1.529 71.695 1.602 71.5 1.602 c
-71.39 1.602 71.287 1.577 71.191 1.529 c
-71.103 1.478 71.022 1.411 70.956 1.324 c
-70.898 1.235 70.846 1.125 70.81 1 c
-70.78 0.882 70.765 0.75 70.765 0.603 c
-70.765 -1.263 l
-69.854 -1.263 l
-69.854 1.441 l
-69.854 1.661 l
-69.854 1.75 69.846 1.827 69.84 1.897 c
-69.84 2.088 l
-69.84 2.22 l
-70.692 2.22 l
-70.699 2.19 70.707 2.147 70.707 2.088 c
-70.707 1.897 l
-70.714 1.827 70.721 1.756 70.721 1.691 c
-70.729 1.621 70.736 1.565 70.736 1.529 c
-70.75 1.529 l
-70.868 1.794 71.019 1.985 71.206 2.103 c
-71.39 2.22 71.61 2.278 71.868 2.278 c
-72.051 2.278 72.213 2.249 72.353 2.19 c
-72.489 2.132 72.602 2.043 72.691 1.926 c
-72.779 1.808 72.841 1.665 72.882 1.5 c
-72.93 1.341 72.955 1.154 72.955 0.941 c
-72.955 -1.263 l
-h
-74.873 -1.323 m
-74.705 -1.323 74.554 -1.301 74.418 -1.263 c
-74.289 -1.216 74.175 -1.146 74.079 -1.058 c
-73.992 -0.97 73.922 -0.864 73.874 -0.735 c
-73.823 -0.598 73.801 -0.448 73.801 -0.279 c
-73.801 -0.073 73.834 0.096 73.904 0.235 c
-73.969 0.383 74.065 0.493 74.183 0.574 c
-74.308 0.661 74.451 0.724 74.609 0.765 c
-74.775 0.802 74.951 0.827 75.138 0.838 c
-75.858 0.853 l
-75.858 1.029 l
-75.858 1.147 75.847 1.249 75.829 1.338 c
-75.807 1.426 75.774 1.492 75.726 1.544 c
-75.685 1.602 75.638 1.639 75.579 1.661 c
-75.521 1.679 75.454 1.691 75.388 1.691 c
-75.318 1.691 75.255 1.679 75.197 1.661 c
-75.145 1.65 75.098 1.625 75.05 1.588 c
-75.01 1.559 74.977 1.507 74.947 1.441 c
-74.925 1.382 74.91 1.301 74.903 1.206 c
-73.962 1.249 l
-73.992 1.397 74.036 1.532 74.094 1.661 c
-74.16 1.786 74.256 1.897 74.374 1.985 c
-74.492 2.08 74.631 2.153 74.8 2.205 c
-74.977 2.253 75.182 2.278 75.417 2.278 c
-75.858 2.278 76.19 2.168 76.417 1.955 c
-76.652 1.75 76.77 1.441 76.77 1.029 c
-76.77 -0.235 l
-76.77 -0.455 l
-76.778 -0.515 76.792 -0.569 76.814 -0.617 c
-76.832 -0.658 76.861 -0.691 76.902 -0.72 c
-76.939 -0.742 76.99 -0.75 77.049 -0.75 c
-77.115 -0.75 77.185 -0.746 77.254 -0.735 c
-77.254 -1.22 l
-77.196 -1.23 77.141 -1.242 77.094 -1.249 c
-77.053 -1.261 77.013 -1.267 76.976 -1.278 c
-76.936 -1.286 76.891 -1.294 76.843 -1.294 c
-76.792 -1.301 76.733 -1.308 76.667 -1.308 c
-76.439 -1.308 76.274 -1.257 76.167 -1.146 c
-76.057 -1.028 75.995 -0.864 75.976 -0.646 c
-75.961 -0.646 l
-75.891 -0.756 75.822 -0.852 75.756 -0.941 c
-75.685 -1.022 75.608 -1.087 75.521 -1.146 c
-75.432 -1.205 75.333 -1.249 75.226 -1.278 c
-75.127 -1.308 75.01 -1.323 74.873 -1.323 c
-75.858 0.353 m
-75.432 0.339 l
-75.333 0.339 75.241 0.331 75.153 0.324 c
-75.072 0.312 75.006 0.287 74.947 0.25 c
-74.889 0.21 74.837 0.151 74.8 0.073 c
-74.76 0.004 74.742 -0.087 74.742 -0.205 c
-74.742 -0.374 74.775 -0.496 74.844 -0.573 c
-74.91 -0.654 75.01 -0.691 75.138 -0.691 c
-75.245 -0.691 75.344 -0.669 75.432 -0.617 c
-75.528 -0.569 75.608 -0.507 75.667 -0.426 c
-75.733 -0.349 75.785 -0.261 75.814 -0.162 c
-75.843 -0.055 75.858 0.059 75.858 0.177 c
-h
-79.14 -1.263 m
-79.14 0.853 l
-79.14 1.018 79.133 1.154 79.126 1.264 c
-79.114 1.371 79.096 1.455 79.066 1.515 c
-79.045 1.58 79.016 1.632 78.978 1.661 c
-78.949 1.691 78.908 1.706 78.861 1.706 c
-78.802 1.706 78.746 1.676 78.699 1.617 c
-78.659 1.565 78.626 1.492 78.596 1.397 c
-78.567 1.309 78.541 1.195 78.523 1.058 c
-78.511 0.919 78.508 0.769 78.508 0.603 c
-78.508 -1.263 l
-77.759 -1.263 l
-77.759 1.47 l
-77.759 1.706 l
-77.759 1.926 l
-77.759 2.003 77.751 2.066 77.744 2.117 c
-77.744 2.22 l
-78.42 2.22 l
-78.42 2.132 l
-78.42 1.985 l
-78.428 1.926 78.434 1.867 78.434 1.808 c
-78.434 1.646 l
-78.449 1.646 l
-78.468 1.735 78.497 1.812 78.538 1.881 c
-78.574 1.959 78.619 2.029 78.669 2.088 c
-78.729 2.147 78.794 2.19 78.875 2.22 c
-78.952 2.257 79.041 2.278 79.14 2.278 c
-79.324 2.278 79.463 2.224 79.552 2.117 c
-79.647 2.018 79.717 1.86 79.758 1.646 c
-79.772 1.646 l
-79.809 1.742 79.849 1.831 79.889 1.912 c
-79.937 1.989 79.993 2.051 80.051 2.103 c
-80.111 2.161 80.176 2.205 80.257 2.234 c
-80.334 2.264 80.423 2.278 80.522 2.278 c
-80.658 2.278 80.772 2.253 80.859 2.205 c
-80.948 2.153 81.015 2.08 81.065 1.985 c
-81.125 1.885 81.161 1.756 81.183 1.602 c
-81.213 1.455 81.227 1.272 81.227 1.058 c
-81.227 -1.263 l
-80.508 -1.263 l
-80.508 0.853 l
-80.508 1.018 80.5 1.154 80.492 1.264 c
-80.481 1.371 80.463 1.455 80.433 1.515 c
-80.412 1.58 80.382 1.632 80.346 1.661 c
-80.316 1.691 80.275 1.706 80.228 1.706 c
-80.111 1.706 80.015 1.617 79.949 1.441 c
-79.889 1.272 79.86 1.014 79.86 0.661 c
-79.86 -1.263 l
-h
-83.598 -1.323 m
-83.34 -1.323 83.112 -1.286 82.906 -1.22 c
-82.701 -1.143 82.524 -1.028 82.378 -0.881 c
-82.231 -0.727 82.113 -0.536 82.025 -0.309 c
-81.944 -0.085 81.907 0.181 81.907 0.485 c
-81.907 0.816 81.952 1.095 82.039 1.324 c
-82.135 1.559 82.264 1.742 82.422 1.881 c
-82.587 2.018 82.775 2.117 82.98 2.176 c
-83.186 2.242 83.396 2.278 83.612 2.278 c
-83.884 2.278 84.119 2.227 84.318 2.132 c
-84.523 2.043 84.689 1.912 84.818 1.735 c
-84.953 1.565 85.053 1.36 85.112 1.118 c
-85.177 0.882 85.214 0.618 85.214 0.324 c
-85.214 0.309 l
-82.848 0.309 l
-82.848 0.162 82.862 0.023 82.892 -0.103 c
-82.929 -0.231 82.984 -0.345 83.054 -0.44 c
-83.12 -0.529 83.205 -0.598 83.303 -0.646 c
-83.399 -0.698 83.513 -0.72 83.642 -0.72 c
-83.796 -0.72 83.936 -0.687 84.053 -0.617 c
-84.178 -0.551 84.267 -0.448 84.318 -0.309 c
-85.156 -0.382 l
-85.127 -0.481 85.071 -0.588 84.994 -0.706 c
-84.913 -0.816 84.81 -0.918 84.685 -1.014 c
-84.568 -1.103 84.414 -1.176 84.23 -1.234 c
-84.053 -1.294 83.84 -1.323 83.598 -1.323 c
-83.598 1.706 m
-83.509 1.706 83.421 1.691 83.333 1.661 c
-83.245 1.632 83.164 1.58 83.097 1.515 c
-83.028 1.444 82.969 1.357 82.922 1.249 c
-82.881 1.139 82.862 1.014 82.862 0.867 c
-84.333 0.867 l
-84.333 1.004 84.307 1.125 84.259 1.235 c
-84.219 1.341 84.163 1.43 84.097 1.5 c
-84.038 1.565 83.965 1.617 83.877 1.646 c
-83.789 1.683 83.693 1.706 83.598 1.706 c
-86.467 -2.631 m
-86.467 -2.013 l
-87.541 -2.013 l
-87.541 2.896 l
-86.467 2.896 l
-86.467 3.514 l
-88.393 3.514 l
-88.393 -2.631 l
-h
-f
-Q
-q 1 0 0 1 546.3644 140.2277 cm
-0 0 m
-0.676 0 l
-0.676 -3.792 l
-0.676 -4.303 0.544 -4.704 0.279 -4.998 c
-0.022 -5.284 -0.324 -5.424 -0.765 -5.424 c
--1.228 -5.424 -1.584 -5.288 -1.837 -5.012 c
--2.084 -4.74 -2.205 -4.358 -2.205 -3.865 c
--1.529 -3.865 l
--1.529 -4.182 -1.467 -4.424 -1.338 -4.601 c
--1.201 -4.77 -1.01 -4.85 -0.765 -4.85 c
--0.54 -4.85 -0.36 -4.759 -0.221 -4.571 c
--0.073 -4.388 0 -4.123 0 -3.778 c
-h
-1.573 -3.175 m
-1.573 -2.598 1.708 -2.142 1.984 -1.808 c
-2.267 -1.467 2.639 -1.294 3.102 -1.294 c
-3.561 -1.294 3.929 -1.463 4.204 -1.793 c
-4.486 -2.117 4.634 -2.565 4.644 -3.131 c
-4.644 -3.557 l
-4.644 -4.127 4.501 -4.582 4.218 -4.924 c
-3.943 -5.259 3.576 -5.424 3.116 -5.424 c
-2.653 -5.424 2.282 -5.262 1.999 -4.939 c
-1.723 -4.609 1.58 -4.167 1.573 -3.616 c
-h
-2.219 -3.557 m
-2.219 -3.961 2.296 -4.278 2.454 -4.513 c
-2.62 -4.748 2.84 -4.865 3.116 -4.865 c
-3.682 -4.865 3.976 -4.453 3.998 -3.63 c
-3.998 -3.175 l
-3.998 -2.774 3.913 -2.454 3.748 -2.219 c
-3.59 -1.977 3.374 -1.852 3.102 -1.852 c
-2.836 -1.852 2.62 -1.977 2.454 -2.219 c
-2.296 -2.454 2.219 -2.774 2.219 -3.175 c
-h
-6.188 -5.351 -0.647 3.984 re
-6.232 -0.324 m
-6.232 -0.434 6.203 -0.526 6.144 -0.603 c
-6.086 -0.673 5.99 -0.706 5.865 -0.706 c
-5.747 -0.706 5.652 -0.673 5.585 -0.603 c
-5.527 -0.526 5.498 -0.434 5.498 -0.324 c
-5.498 -0.206 5.527 -0.114 5.585 -0.044 c
-5.652 0.033 5.747 0.073 5.865 0.073 c
-5.99 0.073 6.086 0.033 6.144 -0.044 c
-6.203 -0.125 6.232 -0.217 6.232 -0.324 c
-7.819 -1.367 m
-7.835 -1.808 l
-8.088 -1.467 8.411 -1.294 8.804 -1.294 c
-9.51 -1.294 9.866 -1.764 9.878 -2.705 c
-9.878 -5.351 l
-9.231 -5.351 l
-9.231 -2.734 l
-9.231 -2.421 9.176 -2.201 9.069 -2.072 c
-8.959 -1.947 8.804 -1.881 8.598 -1.881 c
-8.441 -1.881 8.294 -1.937 8.158 -2.043 c
-8.029 -2.153 7.927 -2.29 7.85 -2.454 c
-7.85 -5.351 l
-7.202 -5.351 l
-7.202 -1.367 l
-h
-14.508 -4.336 m
-14.508 -4.189 14.453 -4.068 14.346 -3.969 c
-14.236 -3.873 14.03 -3.755 13.729 -3.616 c
-13.383 -3.469 13.141 -3.348 12.993 -3.248 c
-12.847 -3.142 12.737 -3.024 12.671 -2.896 c
-12.6 -2.77 12.567 -2.612 12.567 -2.425 c
-12.567 -2.102 12.685 -1.833 12.92 -1.617 c
-13.155 -1.404 13.457 -1.294 13.832 -1.294 c
-14.214 -1.294 14.522 -1.407 14.757 -1.631 c
-14.993 -1.86 15.11 -2.146 15.11 -2.499 c
-14.464 -2.499 l
-14.464 -2.323 14.405 -2.172 14.287 -2.043 c
-14.169 -1.918 14.015 -1.852 13.832 -1.852 c
-13.633 -1.852 13.483 -1.907 13.376 -2.014 c
-13.265 -2.113 13.215 -2.246 13.215 -2.411 c
-13.215 -2.539 13.251 -2.646 13.332 -2.734 c
-13.409 -2.815 13.6 -2.918 13.905 -3.042 c
-14.383 -3.23 14.713 -3.418 14.89 -3.601 c
-15.066 -3.778 15.154 -4.006 15.154 -4.278 c
-15.154 -4.63 15.029 -4.91 14.787 -5.116 c
-14.552 -5.321 14.236 -5.424 13.847 -5.424 c
-13.423 -5.424 13.086 -5.307 12.832 -5.072 c
-12.575 -4.829 12.45 -4.524 12.45 -4.16 c
-13.097 -4.16 l
-13.104 -4.388 13.174 -4.564 13.302 -4.689 c
-13.427 -4.806 13.612 -4.865 13.847 -4.865 c
-14.059 -4.865 14.221 -4.818 14.331 -4.719 c
-14.449 -4.623 14.508 -4.494 14.508 -4.336 c
-18.873 -3.557 m
-18.873 -4.185 18.755 -4.656 18.52 -4.968 c
-18.293 -5.274 17.977 -5.424 17.565 -5.424 c
-17.161 -5.424 16.852 -5.274 16.639 -4.968 c
-16.639 -6.88 l
-15.993 -6.88 l
-15.993 -1.367 l
-16.581 -1.367 l
-16.625 -1.808 l
-16.837 -1.467 17.146 -1.294 17.55 -1.294 c
-17.992 -1.294 18.319 -1.448 18.535 -1.749 c
-18.749 -2.055 18.863 -2.51 18.873 -3.117 c
-h
-18.227 -3.175 m
-18.227 -2.734 18.157 -2.411 18.021 -2.205 c
-17.882 -1.992 17.66 -1.881 17.359 -1.881 c
-17.043 -1.881 16.804 -2.036 16.639 -2.337 c
-16.639 -4.41 l
-16.804 -4.715 17.043 -4.865 17.359 -4.865 c
-17.653 -4.865 17.867 -4.763 18.006 -4.557 c
-18.142 -4.343 18.216 -4.013 18.227 -3.572 c
-h
-21.138 -5.424 m
-20.637 -5.424 20.255 -5.277 19.991 -4.983 c
-19.726 -4.689 19.594 -4.256 19.594 -3.675 c
-19.594 -3.204 l
-19.594 -2.61 19.719 -2.142 19.976 -1.808 c
-20.24 -1.467 20.6 -1.294 21.063 -1.294 c
-21.523 -1.294 21.865 -1.448 22.092 -1.749 c
-22.327 -2.043 22.449 -2.506 22.46 -3.131 c
-22.46 -3.557 l
-20.24 -3.557 l
-20.24 -3.645 l
-20.24 -4.079 20.317 -4.391 20.475 -4.586 c
-20.641 -4.773 20.872 -4.865 21.167 -4.865 c
-21.361 -4.865 21.534 -4.833 21.681 -4.763 c
-21.828 -4.686 21.963 -4.568 22.092 -4.41 c
-22.431 -4.821 l
-22.144 -5.226 21.714 -5.424 21.138 -5.424 c
-21.063 -1.852 m
-20.788 -1.852 20.586 -1.947 20.461 -2.132 c
-20.332 -2.319 20.259 -2.61 20.24 -2.999 c
-21.813 -2.999 l
-21.813 -2.911 l
-21.791 -2.529 21.725 -2.26 21.608 -2.102 c
-21.49 -1.937 21.306 -1.852 21.063 -1.852 c
-24.621 -4.865 m
-24.834 -4.865 25.007 -4.803 25.136 -4.675 c
-25.271 -4.538 25.344 -4.347 25.356 -4.101 c
-25.973 -4.101 l
-25.951 -4.484 25.815 -4.803 25.562 -5.056 c
-25.304 -5.303 24.992 -5.424 24.621 -5.424 c
-24.128 -5.424 23.754 -5.274 23.489 -4.968 c
-23.232 -4.656 23.106 -4.189 23.106 -3.572 c
-23.106 -3.131 l
-23.106 -2.535 23.232 -2.08 23.489 -1.764 c
-23.754 -1.452 24.128 -1.294 24.621 -1.294 c
-25.021 -1.294 25.341 -1.426 25.576 -1.691 c
-25.819 -1.947 25.951 -2.294 25.973 -2.734 c
-25.356 -2.734 l
-25.334 -2.44 25.26 -2.219 25.136 -2.072 c
-25.018 -1.926 24.845 -1.852 24.621 -1.852 c
-24.327 -1.852 24.11 -1.951 23.974 -2.146 c
-23.835 -2.334 23.761 -2.643 23.754 -3.072 c
-23.754 -3.587 l
-23.754 -4.057 23.82 -4.391 23.96 -4.586 c
-24.106 -4.773 24.327 -4.865 24.621 -4.865 c
-27.428 -5.351 -0.646 3.984 re
-27.472 -0.324 m
-27.472 -0.434 27.443 -0.526 27.384 -0.603 c
-27.326 -0.673 27.23 -0.706 27.105 -0.706 c
-26.987 -0.706 26.892 -0.673 26.825 -0.603 c
-26.767 -0.526 26.738 -0.434 26.738 -0.324 c
-26.738 -0.206 26.767 -0.114 26.825 -0.044 c
-26.892 0.033 26.987 0.073 27.105 0.073 c
-27.23 0.073 27.326 0.033 27.384 -0.044 c
-27.443 -0.125 27.472 -0.217 27.472 -0.324 c
-28.619 -5.351 m
-28.619 -1.897 l
-28.105 -1.897 l
-28.105 -1.367 l
-28.619 -1.367 l
-28.619 -1 l
-28.627 -0.57 28.741 -0.235 28.957 0 c
-29.181 0.243 29.493 0.368 29.898 0.368 c
-30.044 0.368 30.185 0.345 30.324 0.309 c
-30.471 0.268 30.622 0.213 30.78 0.147 c
-30.662 -0.426 l
-30.427 -0.301 30.185 -0.235 29.942 -0.235 c
-29.695 -0.235 29.523 -0.305 29.427 -0.441 c
-29.328 -0.57 29.281 -0.765 29.281 -1.029 c
-29.281 -1.367 l
-29.927 -1.367 l
-29.927 -1.897 l
-29.281 -1.897 l
-29.281 -5.351 l
-h
-31.089 -5.351 -0.647 3.984 re
-33.558 -5.424 m
-33.058 -5.424 32.676 -5.277 32.411 -4.983 c
-32.147 -4.689 32.014 -4.256 32.014 -3.675 c
-32.014 -3.204 l
-32.014 -2.61 32.139 -2.142 32.396 -1.808 c
-32.662 -1.467 33.021 -1.294 33.485 -1.294 c
-33.944 -1.294 34.285 -1.448 34.513 -1.749 c
-34.748 -2.043 34.869 -2.506 34.881 -3.131 c
-34.881 -3.557 l
-32.662 -3.557 l
-32.662 -3.645 l
-32.662 -4.079 32.739 -4.391 32.897 -4.586 c
-33.061 -4.773 33.293 -4.865 33.587 -4.865 c
-33.782 -4.865 33.955 -4.833 34.102 -4.763 c
-34.249 -4.686 34.385 -4.568 34.513 -4.41 c
-34.852 -4.821 l
-34.565 -5.226 34.135 -5.424 33.558 -5.424 c
-33.485 -1.852 m
-33.209 -1.852 33.007 -1.947 32.882 -2.132 c
-32.753 -2.319 32.679 -2.61 32.662 -2.999 c
-34.233 -2.999 l
-34.233 -2.911 l
-34.212 -2.529 34.146 -2.26 34.028 -2.102 c
-33.911 -1.937 33.726 -1.852 33.485 -1.852 c
-35.527 -3.175 m
-35.527 -2.569 35.638 -2.102 35.866 -1.779 c
-36.101 -1.455 36.428 -1.294 36.851 -1.294 c
-37.233 -1.294 37.53 -1.452 37.747 -1.764 c
-37.747 0.294 l
-38.393 0.294 l
-38.393 -5.351 l
-37.805 -5.351 l
-37.761 -4.924 l
-37.556 -5.259 37.25 -5.424 36.851 -5.424 c
-36.439 -5.424 36.115 -5.27 35.88 -4.954 c
-35.645 -4.63 35.527 -4.175 35.527 -3.587 c
-h
-36.174 -3.557 m
-36.174 -3.998 36.236 -4.329 36.365 -4.542 c
-36.502 -4.748 36.722 -4.85 37.027 -4.85 c
-37.35 -4.85 37.589 -4.689 37.747 -4.366 c
-37.747 -2.352 l
-37.578 -2.04 37.339 -1.881 37.027 -1.881 c
-36.722 -1.881 36.502 -1.984 36.365 -2.19 c
-36.236 -2.396 36.174 -2.72 36.174 -3.16 c
-h
-f
-Q
-q 1 0 0 1 588.8294 140.2861 cm
-0 0 m
--0.382 0 l
--0.382 -5.835 l
-0 -5.835 l
-0 -6.659 l
--1.425 -6.659 l
--1.425 0.823 l
-0 0.823 l
-h
-0.765 -5.409 m
-0.765 -2.219 l
-0.279 -2.219 l
-0.279 -1.425 l
-0.765 -1.425 l
-0.765 -1.072 l
-0.765 -0.631 0.875 -0.294 1.103 -0.058 c
-1.338 0.184 1.654 0.31 2.058 0.31 c
-2.183 0.31 2.341 0.283 2.529 0.235 c
-2.529 -0.588 l
-2.459 -0.569 2.374 -0.558 2.278 -0.558 c
-1.962 -0.558 1.808 -0.742 1.808 -1.102 c
-1.808 -1.425 l
-2.426 -1.425 l
-2.426 -2.219 l
-1.808 -2.219 l
-1.808 -5.409 l
-h
-4.954 -2.439 m
-4.616 -2.41 l
-4.329 -2.41 4.138 -2.535 4.042 -2.778 c
-4.042 -5.409 l
-2.999 -5.409 l
-2.999 -1.425 l
-3.969 -1.425 l
-3.998 -1.866 l
-4.164 -1.525 4.395 -1.352 4.69 -1.352 c
-4.807 -1.352 4.898 -1.374 4.969 -1.411 c
-h
-5.248 -3.293 m
-5.248 -2.686 5.388 -2.212 5.675 -1.866 c
-5.958 -1.525 6.35 -1.352 6.85 -1.352 c
-7.358 -1.352 7.755 -1.525 8.04 -1.866 c
-8.324 -2.212 8.467 -2.686 8.467 -3.293 c
-8.467 -3.557 l
-8.467 -4.156 8.324 -4.627 8.04 -4.968 c
-7.755 -5.313 7.358 -5.483 6.85 -5.483 c
-6.34 -5.483 5.943 -5.313 5.659 -4.968 c
-5.384 -4.627 5.248 -4.152 5.248 -3.542 c
-h
-6.292 -3.557 m
-6.292 -4.262 6.475 -4.615 6.85 -4.615 c
-7.203 -4.615 7.394 -4.321 7.423 -3.733 c
-7.423 -3.293 l
-7.423 -2.932 7.372 -2.66 7.277 -2.484 c
-7.177 -2.308 7.034 -2.219 6.85 -2.219 c
-6.674 -2.219 6.534 -2.308 6.438 -2.484 c
-6.34 -2.66 6.292 -2.932 6.292 -3.293 c
-h
-10.084 -1.425 m
-10.113 -1.793 l
-10.348 -1.499 10.658 -1.352 11.04 -1.352 c
-11.44 -1.352 11.719 -1.535 11.877 -1.896 c
-12.112 -1.535 12.439 -1.352 12.862 -1.352 c
-13.557 -1.352 13.91 -1.837 13.92 -2.807 c
-13.92 -5.409 l
-12.892 -5.409 l
-12.892 -2.865 l
-12.892 -2.642 12.855 -2.48 12.788 -2.381 c
-12.73 -2.285 12.62 -2.234 12.465 -2.234 c
-12.267 -2.234 12.127 -2.352 12.039 -2.587 c
-12.039 -5.409 l
-10.995 -5.409 l
-10.995 -2.881 l
-10.995 -2.645 10.966 -2.48 10.907 -2.381 c
-10.849 -2.285 10.739 -2.234 10.583 -2.234 c
-10.407 -2.234 10.264 -2.329 10.157 -2.513 c
-10.157 -5.409 l
-9.114 -5.409 l
-9.114 -1.425 l
-h
-17.39 -1.425 m
-17.419 -1.822 l
-17.654 -1.51 17.955 -1.352 18.33 -1.352 c
-19.013 -1.352 19.366 -1.833 19.389 -2.792 c
-19.389 -5.409 l
-18.344 -5.409 l
-18.344 -2.865 l
-18.344 -2.642 18.308 -2.48 18.242 -2.381 c
-18.172 -2.285 18.055 -2.234 17.889 -2.234 c
-17.702 -2.234 17.555 -2.329 17.448 -2.513 c
-17.448 -5.409 l
-16.405 -5.409 l
-16.405 -1.425 l
-h
-22.02 -5.409 m
-21.99 -5.35 21.961 -5.247 21.932 -5.1 c
-21.744 -5.357 21.494 -5.483 21.182 -5.483 c
-20.848 -5.483 20.568 -5.375 20.344 -5.159 c
-20.127 -4.935 20.021 -4.644 20.021 -4.292 c
-20.021 -3.881 20.153 -3.564 20.418 -3.336 c
-20.682 -3.101 21.064 -2.983 21.564 -2.983 c
-21.887 -2.983 l
-21.887 -2.66 l
-21.887 -2.484 21.851 -2.362 21.785 -2.293 c
-21.725 -2.215 21.637 -2.175 21.519 -2.175 c
-21.263 -2.175 21.137 -2.329 21.137 -2.63 c
-20.094 -2.63 l
-20.094 -2.26 20.23 -1.955 20.505 -1.72 c
-20.777 -1.477 21.126 -1.352 21.55 -1.352 c
-21.99 -1.352 22.328 -1.469 22.564 -1.705 c
-22.806 -1.932 22.93 -2.256 22.93 -2.675 c
-22.93 -4.542 l
-22.93 -4.887 22.979 -5.155 23.078 -5.35 c
-23.078 -5.409 l
-h
-21.417 -4.659 m
-21.523 -4.659 21.615 -4.641 21.696 -4.6 c
-21.785 -4.552 21.847 -4.494 21.887 -4.424 c
-21.887 -3.601 l
-21.637 -3.601 l
-21.461 -3.601 21.318 -3.659 21.211 -3.777 c
-21.112 -3.887 21.064 -4.035 21.064 -4.218 c
-21.064 -4.512 21.182 -4.659 21.417 -4.659 c
-24.651 -1.425 m
-24.68 -1.793 l
-24.916 -1.499 25.224 -1.352 25.606 -1.352 c
-26.007 -1.352 26.286 -1.535 26.444 -1.896 c
-26.679 -1.535 27.006 -1.352 27.429 -1.352 c
-28.123 -1.352 28.476 -1.837 28.487 -2.807 c
-28.487 -5.409 l
-27.458 -5.409 l
-27.458 -2.865 l
-27.458 -2.642 27.422 -2.48 27.356 -2.381 c
-27.296 -2.285 27.186 -2.234 27.032 -2.234 c
-26.834 -2.234 26.693 -2.352 26.606 -2.587 c
-26.606 -5.409 l
-25.562 -5.409 l
-25.562 -2.881 l
-25.562 -2.645 25.533 -2.48 25.474 -2.381 c
-25.415 -2.285 25.305 -2.234 25.151 -2.234 c
-24.974 -2.234 24.831 -2.329 24.725 -2.513 c
-24.725 -5.409 l
-23.68 -5.409 l
-23.68 -1.425 l
-h
-30.869 -5.483 m
-30.339 -5.483 29.92 -5.328 29.619 -5.012 c
-29.325 -4.689 29.178 -4.23 29.178 -3.63 c
-29.178 -3.322 l
-29.178 -2.697 29.314 -2.212 29.59 -1.866 c
-29.862 -1.525 30.255 -1.352 30.766 -1.352 c
-31.266 -1.352 31.636 -1.514 31.883 -1.837 c
-32.137 -2.16 32.268 -2.638 32.28 -3.262 c
-32.28 -3.763 l
-30.207 -3.763 l
-30.225 -4.056 30.288 -4.274 30.398 -4.409 c
-30.516 -4.549 30.695 -4.615 30.942 -4.615 c
-31.283 -4.615 31.574 -4.498 31.809 -4.262 c
-32.22 -4.895 l
-32.092 -5.071 31.905 -5.215 31.662 -5.321 c
-31.416 -5.427 31.152 -5.483 30.869 -5.483 c
-30.221 -3.042 m
-31.25 -3.042 l
-31.25 -2.94 l
-31.25 -2.705 31.21 -2.528 31.133 -2.41 c
-31.063 -2.285 30.934 -2.219 30.751 -2.219 c
-30.574 -2.219 30.442 -2.289 30.354 -2.425 c
-30.273 -2.553 30.229 -2.759 30.221 -3.042 c
-32.617 0.823 m
-34.044 0.823 l
-34.044 -6.659 l
-32.617 -6.659 l
-32.617 -5.835 l
-33 -5.835 l
-33 0 l
-32.617 0 l
-h
-f
-Q
-q 1 0 0 1 628.3846 136.6708 cm
-0 0 m
-0 -0.618 -0.114 -1.085 -0.338 -1.397 c
--0.555 -1.713 -0.878 -1.867 -1.308 -1.867 c
--1.731 -1.867 -2.043 -1.687 -2.248 -1.324 c
--2.278 -1.794 l
--2.88 -1.794 l
--2.88 3.85 l
--2.234 3.85 l
--2.234 1.749 l
--2.021 2.09 -1.712 2.263 -1.308 2.263 c
--0.878 2.263 -0.555 2.105 -0.338 1.793 c
--0.114 1.488 0 1.022 0 0.397 c
-h
--0.646 0.382 m
--0.646 0.852 -0.716 1.183 -0.852 1.381 c
--0.981 1.576 -1.19 1.675 -1.484 1.675 c
--1.818 1.675 -2.069 1.492 -2.234 1.132 c
--2.234 -0.75 l
--2.069 -1.114 -1.815 -1.294 -1.469 -1.294 c
--1.176 -1.294 -0.966 -1.191 -0.837 -0.985 c
--0.712 -0.779 -0.646 -0.464 -0.646 -0.03 c
-h
-2.485 1.573 m
-2.396 1.591 2.297 1.602 2.19 1.602 c
-1.856 1.602 1.621 1.418 1.484 1.058 c
-1.484 -1.794 l
-0.838 -1.794 l
-0.838 2.19 l
-1.47 2.19 l
-1.484 1.778 l
-1.661 2.102 1.904 2.263 2.22 2.263 c
-2.326 2.263 2.415 2.241 2.485 2.204 c
-h
-5.027 -1.794 m
-4.987 -1.706 4.962 -1.559 4.954 -1.353 c
-4.719 -1.698 4.424 -1.867 4.072 -1.867 c
-3.708 -1.867 3.425 -1.771 3.219 -1.573 c
-3.021 -1.367 2.926 -1.081 2.926 -0.706 c
-2.926 -0.306 3.061 0.014 3.337 0.249 c
-3.609 0.492 3.984 0.617 4.454 0.617 c
-4.939 0.617 l
-4.939 1.043 l
-4.939 1.278 4.884 1.444 4.777 1.543 c
-4.667 1.65 4.505 1.705 4.293 1.705 c
-4.094 1.705 3.932 1.646 3.807 1.529 c
-3.69 1.411 3.631 1.263 3.631 1.087 c
-2.984 1.087 l
-2.984 1.282 3.043 1.473 3.161 1.66 c
-3.286 1.845 3.447 1.992 3.645 2.102 c
-3.851 2.208 4.079 2.263 4.337 2.263 c
-4.738 2.263 5.042 2.161 5.247 1.955 c
-5.461 1.749 5.575 1.455 5.586 1.072 c
-5.586 -0.941 l
-5.586 -1.246 5.623 -1.511 5.704 -1.735 c
-5.704 -1.794 l
-h
-4.16 -1.279 m
-4.326 -1.279 4.476 -1.235 4.616 -1.147 c
-4.763 -1.058 4.869 -0.948 4.939 -0.809 c
-4.939 0.132 l
-4.572 0.132 l
-4.256 0.132 4.013 0.062 3.836 -0.073 c
-3.66 -0.202 3.572 -0.389 3.572 -0.632 c
-3.572 -0.86 3.616 -1.025 3.705 -1.132 c
-3.793 -1.231 3.944 -1.279 4.16 -1.279 c
-7.203 2.19 m
-7.217 1.749 l
-7.471 2.09 7.795 2.263 8.187 2.263 c
-8.893 2.263 9.249 1.793 9.261 0.852 c
-9.261 -1.794 l
-8.614 -1.794 l
-8.614 0.823 l
-8.614 1.135 8.559 1.356 8.453 1.484 c
-8.343 1.61 8.187 1.675 7.982 1.675 c
-7.824 1.675 7.676 1.62 7.541 1.514 c
-7.412 1.404 7.31 1.267 7.232 1.103 c
-7.232 -1.794 l
-6.585 -1.794 l
-6.585 2.19 l
-h
-11.612 -1.309 m
-11.826 -1.309 11.998 -1.246 12.127 -1.118 c
-12.263 -0.981 12.337 -0.79 12.347 -0.544 c
-12.965 -0.544 l
-12.943 -0.927 12.807 -1.246 12.553 -1.5 c
-12.296 -1.746 11.984 -1.867 11.612 -1.867 c
-11.121 -1.867 10.745 -1.717 10.481 -1.411 c
-10.224 -1.099 10.099 -0.632 10.099 -0.015 c
-10.099 0.426 l
-10.099 1.022 10.224 1.477 10.481 1.793 c
-10.745 2.105 11.121 2.263 11.612 2.263 c
-12.013 2.263 12.333 2.131 12.568 1.866 c
-12.811 1.61 12.943 1.263 12.965 0.823 c
-12.347 0.823 l
-12.326 1.117 12.252 1.338 12.127 1.484 c
-12.01 1.631 11.836 1.705 11.612 1.705 c
-11.319 1.705 11.102 1.606 10.966 1.411 c
-10.826 1.223 10.753 0.914 10.745 0.484 c
-10.745 -0.03 l
-10.745 -0.5 10.812 -0.834 10.951 -1.029 c
-11.098 -1.216 11.319 -1.309 11.612 -1.309 c
-14.361 1.778 m
-14.615 2.102 14.934 2.263 15.317 2.263 c
-16.023 2.263 16.378 1.793 16.39 0.852 c
-16.39 -1.794 l
-15.743 -1.794 l
-15.743 0.823 l
-15.743 1.135 15.688 1.356 15.582 1.484 c
-15.471 1.61 15.317 1.675 15.111 1.675 c
-14.953 1.675 14.806 1.62 14.67 1.514 c
-14.541 1.404 14.438 1.267 14.361 1.103 c
-14.361 -1.794 l
-13.714 -1.794 l
-13.714 3.85 l
-14.361 3.85 l
-h
-19.771 -1.794 -0.647 3.984 re
-19.815 3.233 m
-19.815 3.123 19.786 3.031 19.726 2.954 c
-19.668 2.884 19.572 2.851 19.447 2.851 c
-19.329 2.851 19.234 2.884 19.168 2.954 c
-19.109 3.031 19.08 3.123 19.08 3.233 c
-19.08 3.351 19.109 3.443 19.168 3.513 c
-19.234 3.59 19.329 3.63 19.447 3.63 c
-19.572 3.63 19.668 3.59 19.726 3.513 c
-19.786 3.432 19.815 3.34 19.815 3.233 c
-21.402 2.19 m
-21.417 1.749 l
-21.671 2.09 21.994 2.263 22.387 2.263 c
-23.092 2.263 23.449 1.793 23.46 0.852 c
-23.46 -1.794 l
-22.813 -1.794 l
-22.813 0.823 l
-22.813 1.135 22.758 1.356 22.651 1.484 c
-22.541 1.61 22.387 1.675 22.181 1.675 c
-22.023 1.675 21.876 1.62 21.741 1.514 c
-21.612 1.404 21.509 1.267 21.432 1.103 c
-21.432 -1.794 l
-20.785 -1.794 l
-20.785 2.19 l
-h
-25.282 3.145 m
-25.282 2.19 l
-25.885 2.19 l
-25.885 1.66 l
-25.282 1.66 l
-25.282 -0.809 l
-25.282 -0.967 25.305 -1.085 25.356 -1.162 c
-25.415 -1.243 25.503 -1.279 25.621 -1.279 c
-25.709 -1.279 25.797 -1.264 25.885 -1.235 c
-25.885 -1.794 l
-25.739 -1.841 25.584 -1.867 25.43 -1.867 c
-25.172 -1.867 24.978 -1.775 24.842 -1.588 c
-24.702 -1.405 24.636 -1.143 24.636 -0.809 c
-24.636 1.66 l
-24.033 1.66 l
-24.033 2.19 l
-24.636 2.19 l
-24.636 3.145 l
-h
-26.444 0.382 m
-26.444 0.959 26.58 1.415 26.855 1.749 c
-27.138 2.09 27.51 2.263 27.973 2.263 c
-28.432 2.263 28.8 2.094 29.076 1.764 c
-29.358 1.44 29.505 0.992 29.516 0.426 c
-29.516 0 l
-29.516 -0.57 29.373 -1.025 29.09 -1.367 c
-28.814 -1.702 28.447 -1.867 27.987 -1.867 c
-27.524 -1.867 27.154 -1.706 26.87 -1.382 c
-26.595 -1.052 26.452 -0.611 26.444 -0.059 c
-h
-27.091 0 m
-27.091 -0.405 27.168 -0.721 27.326 -0.956 c
-27.491 -1.191 27.711 -1.309 27.987 -1.309 c
-28.553 -1.309 28.847 -0.897 28.869 -0.073 c
-28.869 0.382 l
-28.869 0.783 28.785 1.103 28.619 1.338 c
-28.461 1.579 28.245 1.705 27.973 1.705 c
-27.708 1.705 27.491 1.579 27.326 1.338 c
-27.168 1.103 27.091 0.783 27.091 0.382 c
-h
-33.161 -0.706 m
-33.882 2.19 l
-34.572 2.19 l
-33.279 -2.352 l
-33.18 -2.694 33.037 -2.955 32.853 -3.131 c
-32.677 -3.308 32.474 -3.396 32.25 -3.396 c
-32.162 -3.396 32.048 -3.373 31.912 -3.337 c
-31.912 -2.793 l
-32.059 -2.808 l
-32.243 -2.808 32.39 -2.764 32.5 -2.675 c
-32.606 -2.587 32.695 -2.429 32.764 -2.205 c
-32.882 -1.764 l
-31.721 2.19 l
-32.426 2.19 l
-h
-35.013 0.382 m
-35.013 0.959 35.15 1.415 35.425 1.749 c
-35.708 2.09 36.079 2.263 36.542 2.263 c
-37.001 2.263 37.369 2.094 37.645 1.764 c
-37.928 1.44 38.075 0.992 38.086 0.426 c
-38.086 0 l
-38.086 -0.57 37.942 -1.025 37.66 -1.367 c
-37.384 -1.702 37.016 -1.867 36.557 -1.867 c
-36.094 -1.867 35.723 -1.706 35.44 -1.382 c
-35.164 -1.052 35.021 -0.611 35.013 -0.059 c
-h
-35.661 0 m
-35.661 -0.405 35.738 -0.721 35.896 -0.956 c
-36.06 -1.191 36.282 -1.309 36.557 -1.309 c
-37.123 -1.309 37.417 -0.897 37.439 -0.073 c
-37.439 0.382 l
-37.439 0.783 37.354 1.103 37.189 1.338 c
-37.031 1.579 36.814 1.705 36.542 1.705 c
-36.278 1.705 36.06 1.579 35.896 1.338 c
-35.738 1.103 35.661 0.783 35.661 0.382 c
-h
-40.952 -1.441 m
-40.735 -1.727 40.423 -1.867 40.012 -1.867 c
-39.648 -1.867 39.372 -1.746 39.188 -1.5 c
-39.012 -1.246 38.917 -0.882 38.909 -0.412 c
-38.909 2.19 l
-39.555 2.19 l
-39.555 -0.353 l
-39.555 -0.981 39.74 -1.294 40.114 -1.294 c
-40.515 -1.294 40.791 -1.118 40.937 -0.765 c
-40.937 2.19 l
-41.583 2.19 l
-41.583 -1.794 l
-40.966 -1.794 l
-h
-44.215 1.573 m
-44.127 1.591 44.028 1.602 43.921 1.602 c
-43.586 1.602 43.351 1.418 43.216 1.058 c
-43.216 -1.794 l
-42.568 -1.794 l
-42.568 2.19 l
-43.201 2.19 l
-43.216 1.778 l
-43.392 2.102 43.634 2.263 43.95 2.263 c
-44.057 2.263 44.145 2.241 44.215 2.204 c
-h
-47.964 -1.309 m
-48.176 -1.309 48.349 -1.246 48.478 -1.118 c
-48.614 -0.981 48.687 -0.79 48.698 -0.544 c
-49.315 -0.544 l
-49.294 -0.927 49.157 -1.246 48.904 -1.5 c
-48.647 -1.746 48.334 -1.867 47.964 -1.867 c
-47.471 -1.867 47.096 -1.717 46.832 -1.411 c
-46.574 -1.099 46.449 -0.632 46.449 -0.015 c
-46.449 0.426 l
-46.449 1.022 46.574 1.477 46.832 1.793 c
-47.096 2.105 47.471 2.263 47.964 2.263 c
-48.363 2.263 48.683 2.131 48.918 1.866 c
-49.161 1.61 49.294 1.263 49.315 0.823 c
-48.698 0.823 l
-48.677 1.117 48.602 1.338 48.478 1.484 c
-48.361 1.631 48.188 1.705 47.964 1.705 c
-47.669 1.705 47.453 1.606 47.316 1.411 c
-47.177 1.223 47.104 0.914 47.096 0.484 c
-47.096 -0.03 l
-47.096 -0.5 47.162 -0.834 47.302 -1.029 c
-47.449 -1.216 47.669 -1.309 47.964 -1.309 c
-52.093 -1.441 m
-51.877 -1.727 51.565 -1.867 51.153 -1.867 c
-50.79 -1.867 50.514 -1.746 50.33 -1.5 c
-50.154 -1.246 50.058 -0.882 50.05 -0.412 c
-50.05 2.19 l
-50.697 2.19 l
-50.697 -0.353 l
-50.697 -0.981 50.881 -1.294 51.256 -1.294 c
-51.656 -1.294 51.932 -1.118 52.079 -0.765 c
-52.079 2.19 l
-52.726 2.19 l
-52.726 -1.794 l
-52.109 -1.794 l
-h
-55.357 1.573 m
-55.268 1.591 55.17 1.602 55.063 1.602 c
-54.729 1.602 54.493 1.418 54.358 1.058 c
-54.358 -1.794 l
-53.711 -1.794 l
-53.711 2.19 l
-54.343 2.19 l
-54.358 1.778 l
-54.534 2.102 54.776 2.263 55.093 2.263 c
-55.199 2.263 55.287 2.241 55.357 2.204 c
-h
-57.65 1.573 m
-57.562 1.591 57.462 1.602 57.356 1.602 c
-57.022 1.602 56.787 1.418 56.65 1.058 c
-56.65 -1.794 l
-56.004 -1.794 l
-56.004 2.19 l
-56.635 2.19 l
-56.65 1.778 l
-56.827 2.102 57.069 2.263 57.385 2.263 c
-57.492 2.263 57.58 2.241 57.65 2.204 c
-h
-59.65 -1.867 m
-59.149 -1.867 58.767 -1.72 58.503 -1.426 c
-58.238 -1.132 58.106 -0.699 58.106 -0.118 c
-58.106 0.353 l
-58.106 0.947 58.231 1.415 58.488 1.749 c
-58.752 2.09 59.112 2.263 59.575 2.263 c
-60.035 2.263 60.377 2.109 60.604 1.808 c
-60.84 1.514 60.961 1.051 60.972 0.426 c
-60.972 0 l
-58.752 0 l
-58.752 -0.088 l
-58.752 -0.522 58.83 -0.834 58.987 -1.029 c
-59.153 -1.216 59.384 -1.309 59.679 -1.309 c
-59.873 -1.309 60.046 -1.276 60.193 -1.206 c
-60.34 -1.129 60.476 -1.011 60.604 -0.853 c
-60.943 -1.264 l
-60.656 -1.669 60.226 -1.867 59.65 -1.867 c
-59.575 1.705 m
-59.3 1.705 59.098 1.61 58.973 1.425 c
-58.844 1.238 58.771 0.947 58.752 0.558 c
-60.325 0.558 l
-60.325 0.646 l
-60.303 1.028 60.237 1.297 60.12 1.455 c
-60.002 1.62 59.818 1.705 59.575 1.705 c
-62.368 2.19 m
-62.383 1.749 l
-62.636 2.09 62.96 2.263 63.353 2.263 c
-64.059 2.263 64.415 1.793 64.427 0.852 c
-64.427 -1.794 l
-63.779 -1.794 l
-63.779 0.823 l
-63.779 1.135 63.725 1.356 63.617 1.484 c
-63.507 1.61 63.353 1.675 63.147 1.675 c
-62.989 1.675 62.842 1.62 62.707 1.514 c
-62.578 1.404 62.475 1.267 62.397 1.103 c
-62.397 -1.794 l
-61.751 -1.794 l
-61.751 2.19 l
-h
-66.249 3.145 m
-66.249 2.19 l
-66.852 2.19 l
-66.852 1.66 l
-66.249 1.66 l
-66.249 -0.809 l
-66.249 -0.967 66.271 -1.085 66.322 -1.162 c
-66.381 -1.243 66.47 -1.279 66.587 -1.279 c
-66.675 -1.279 66.763 -1.264 66.852 -1.235 c
-66.852 -1.794 l
-66.705 -1.841 66.551 -1.867 66.396 -1.867 c
-66.139 -1.867 65.944 -1.775 65.808 -1.588 c
-65.668 -1.405 65.603 -1.143 65.603 -0.809 c
-65.603 1.66 l
-64.999 1.66 l
-64.999 2.19 l
-65.603 2.19 l
-65.603 3.145 l
-h
-72.217 0 m
-72.217 -0.618 72.103 -1.085 71.879 -1.397 c
-71.662 -1.713 71.338 -1.867 70.908 -1.867 c
-70.486 -1.867 70.174 -1.687 69.968 -1.324 c
-69.938 -1.794 l
-69.335 -1.794 l
-69.335 3.85 l
-69.983 3.85 l
-69.983 1.749 l
-70.196 2.09 70.505 2.263 70.908 2.263 c
-71.338 2.263 71.662 2.105 71.879 1.793 c
-72.103 1.488 72.217 1.022 72.217 0.397 c
-h
-71.57 0.382 m
-71.57 0.852 71.5 1.183 71.365 1.381 c
-71.236 1.576 71.026 1.675 70.732 1.675 c
-70.397 1.675 70.148 1.492 69.983 1.132 c
-69.983 -0.75 l
-70.148 -1.114 70.401 -1.294 70.746 -1.294 c
-71.041 -1.294 71.251 -1.191 71.379 -0.985 c
-71.504 -0.779 71.57 -0.464 71.57 -0.03 c
-h
-74.701 1.573 m
-74.613 1.591 74.513 1.602 74.407 1.602 c
-74.073 1.602 73.838 1.418 73.701 1.058 c
-73.701 -1.794 l
-73.055 -1.794 l
-73.055 2.19 l
-73.686 2.19 l
-73.701 1.778 l
-73.878 2.102 74.12 2.263 74.436 2.263 c
-74.543 2.263 74.631 2.241 74.701 2.204 c
-h
-77.244 -1.794 m
-77.204 -1.706 77.177 -1.559 77.171 -1.353 c
-76.936 -1.698 76.641 -1.867 76.288 -1.867 c
-75.924 -1.867 75.642 -1.771 75.436 -1.573 c
-75.238 -1.367 75.142 -1.081 75.142 -0.706 c
-75.142 -0.306 75.278 0.014 75.554 0.249 c
-75.826 0.492 76.2 0.617 76.67 0.617 c
-77.156 0.617 l
-77.156 1.043 l
-77.156 1.278 77.1 1.444 76.994 1.543 c
-76.884 1.65 76.722 1.705 76.508 1.705 c
-76.311 1.705 76.149 1.646 76.024 1.529 c
-75.906 1.411 75.847 1.263 75.847 1.087 c
-75.201 1.087 l
-75.201 1.282 75.259 1.473 75.377 1.66 c
-75.502 1.845 75.664 1.992 75.862 2.102 c
-76.068 2.208 76.296 2.263 76.553 2.263 c
-76.953 2.263 77.258 2.161 77.464 1.955 c
-77.678 1.749 77.792 1.455 77.802 1.072 c
-77.802 -0.941 l
-77.802 -1.246 77.84 -1.511 77.92 -1.735 c
-77.92 -1.794 l
-h
-76.377 -1.279 m
-76.542 -1.279 76.693 -1.235 76.832 -1.147 c
-76.979 -1.058 77.086 -0.948 77.156 -0.809 c
-77.156 0.132 l
-76.788 0.132 l
-76.472 0.132 76.23 0.062 76.053 -0.073 c
-75.877 -0.202 75.789 -0.389 75.789 -0.632 c
-75.789 -0.86 75.833 -1.025 75.921 -1.132 c
-76.009 -1.231 76.159 -1.279 76.377 -1.279 c
-79.419 2.19 m
-79.434 1.749 l
-79.687 2.09 80.011 2.263 80.404 2.263 c
-81.11 2.263 81.466 1.793 81.477 0.852 c
-81.477 -1.794 l
-80.83 -1.794 l
-80.83 0.823 l
-80.83 1.135 80.776 1.356 80.668 1.484 c
-80.558 1.61 80.404 1.675 80.198 1.675 c
-80.04 1.675 79.893 1.62 79.758 1.514 c
-79.629 1.404 79.526 1.267 79.448 1.103 c
-79.448 -1.794 l
-78.802 -1.794 l
-78.802 2.19 l
-h
-83.829 -1.309 m
-84.042 -1.309 84.215 -1.246 84.344 -1.118 c
-84.479 -0.981 84.553 -0.79 84.564 -0.544 c
-85.181 -0.544 l
-85.16 -0.927 85.023 -1.246 84.77 -1.5 c
-84.512 -1.746 84.2 -1.867 83.829 -1.867 c
-83.336 -1.867 82.962 -1.717 82.698 -1.411 c
-82.44 -1.099 82.315 -0.632 82.315 -0.015 c
-82.315 0.426 l
-82.315 1.022 82.44 1.477 82.698 1.793 c
-82.962 2.105 83.336 2.263 83.829 2.263 c
-84.23 2.263 84.549 2.131 84.784 1.866 c
-85.027 1.61 85.16 1.263 85.181 0.823 c
-84.564 0.823 l
-84.542 1.117 84.468 1.338 84.344 1.484 c
-84.226 1.631 84.053 1.705 83.829 1.705 c
-83.535 1.705 83.318 1.606 83.182 1.411 c
-83.043 1.223 82.969 0.914 82.962 0.484 c
-82.962 -0.03 l
-82.962 -0.5 83.028 -0.834 83.168 -1.029 c
-83.315 -1.216 83.535 -1.309 83.829 -1.309 c
-86.578 1.778 m
-86.831 2.102 87.151 2.263 87.533 2.263 c
-88.239 2.263 88.595 1.793 88.606 0.852 c
-88.606 -1.794 l
-87.959 -1.794 l
-87.959 0.823 l
-87.959 1.135 87.905 1.356 87.797 1.484 c
-87.687 1.61 87.533 1.675 87.327 1.675 c
-87.169 1.675 87.022 1.62 86.887 1.514 c
-86.758 1.404 86.655 1.267 86.578 1.103 c
-86.578 -1.794 l
-85.931 -1.794 l
-85.931 3.85 l
-86.578 3.85 l
-h
-91.267 0.382 m
-91.267 1.018 91.355 1.62 91.531 2.19 c
-91.708 2.755 91.951 3.252 92.266 3.675 c
-92.462 3.939 92.649 4.13 92.825 4.247 c
-92.957 3.792 l
-92.663 3.516 92.421 3.094 92.237 2.528 c
-92.049 1.959 91.947 1.326 91.928 0.632 c
-91.928 0.338 l
-91.928 -0.526 92.046 -1.29 92.281 -1.955 c
-92.464 -2.455 92.693 -2.837 92.957 -3.102 c
-92.825 -3.528 l
-92.597 -3.37 92.373 -3.12 92.148 -2.778 c
-91.56 -1.897 91.267 -0.846 91.267 0.382 c
-94.5 3.145 m
-94.5 2.19 l
-95.103 2.19 l
-95.103 1.66 l
-94.5 1.66 l
-94.5 -0.809 l
-94.5 -0.967 94.523 -1.085 94.574 -1.162 c
-94.633 -1.243 94.721 -1.279 94.839 -1.279 c
-94.927 -1.279 95.015 -1.264 95.103 -1.235 c
-95.103 -1.794 l
-94.956 -1.841 94.802 -1.867 94.648 -1.867 c
-94.39 -1.867 94.195 -1.775 94.06 -1.588 c
-93.92 -1.405 93.854 -1.143 93.854 -0.809 c
-93.854 1.66 l
-93.251 1.66 l
-93.251 2.19 l
-93.854 2.19 l
-93.854 3.145 l
-h
-96.514 1.778 m
-96.768 2.102 97.087 2.263 97.47 2.263 c
-98.176 2.263 98.532 1.793 98.542 0.852 c
-98.542 -1.794 l
-97.896 -1.794 l
-97.896 0.823 l
-97.896 1.135 97.841 1.356 97.734 1.484 c
-97.624 1.61 97.47 1.675 97.264 1.675 c
-97.106 1.675 96.959 1.62 96.823 1.514 c
-96.695 1.404 96.591 1.267 96.514 1.103 c
-96.514 -1.794 l
-95.868 -1.794 l
-95.868 3.85 l
-96.514 3.85 l
-h
-100.924 -1.867 m
-100.424 -1.867 100.042 -1.72 99.778 -1.426 c
-99.513 -1.132 99.381 -0.699 99.381 -0.118 c
-99.381 0.353 l
-99.381 0.947 99.506 1.415 99.763 1.749 c
-100.027 2.09 100.387 2.263 100.85 2.263 c
-101.31 2.263 101.652 2.109 101.879 1.808 c
-102.114 1.514 102.236 1.051 102.247 0.426 c
-102.247 0 l
-100.027 0 l
-100.027 -0.088 l
-100.027 -0.522 100.104 -0.834 100.262 -1.029 c
-100.428 -1.216 100.659 -1.309 100.954 -1.309 c
-101.148 -1.309 101.32 -1.276 101.468 -1.206 c
-101.615 -1.129 101.75 -1.011 101.879 -0.853 c
-102.218 -1.264 l
-101.931 -1.669 101.501 -1.867 100.924 -1.867 c
-100.85 1.705 m
-100.575 1.705 100.373 1.61 100.248 1.425 c
-100.119 1.238 100.046 0.947 100.027 0.558 c
-101.6 0.558 l
-101.6 0.646 l
-101.578 1.028 101.512 1.297 101.395 1.455 c
-101.277 1.62 101.093 1.705 100.85 1.705 c
-104.613 0.382 m
-104.613 0.959 104.75 1.415 105.025 1.749 c
-105.308 2.09 105.679 2.263 106.142 2.263 c
-106.602 2.263 106.969 2.094 107.244 1.764 c
-107.527 1.44 107.674 0.992 107.685 0.426 c
-107.685 0 l
-107.685 -0.57 107.543 -1.025 107.259 -1.367 c
-106.984 -1.702 106.616 -1.867 106.157 -1.867 c
-105.694 -1.867 105.322 -1.706 105.04 -1.382 c
-104.765 -1.052 104.621 -0.611 104.613 -0.059 c
-h
-105.26 0 m
-105.26 -0.405 105.337 -0.721 105.496 -0.956 c
-105.661 -1.191 105.881 -1.309 106.157 -1.309 c
-106.723 -1.309 107.017 -0.897 107.039 -0.073 c
-107.039 0.382 l
-107.039 0.783 106.955 1.103 106.789 1.338 c
-106.631 1.579 106.415 1.705 106.142 1.705 c
-105.877 1.705 105.661 1.579 105.496 1.338 c
-105.337 1.103 105.26 0.783 105.26 0.382 c
-h
-109.141 2.19 m
-109.156 1.749 l
-109.409 2.09 109.733 2.263 110.126 2.263 c
-110.831 2.263 111.188 1.793 111.198 0.852 c
-111.198 -1.794 l
-110.552 -1.794 l
-110.552 0.823 l
-110.552 1.135 110.496 1.356 110.39 1.484 c
-110.28 1.61 110.126 1.675 109.92 1.675 c
-109.762 1.675 109.615 1.62 109.479 1.514 c
-109.351 1.404 109.247 1.267 109.17 1.103 c
-109.17 -1.794 l
-108.524 -1.794 l
-108.524 2.19 l
-h
-113.594 -1.867 m
-113.095 -1.867 112.713 -1.72 112.448 -1.426 c
-112.183 -1.132 112.052 -0.699 112.052 -0.118 c
-112.052 0.353 l
-112.052 0.947 112.177 1.415 112.433 1.749 c
-112.698 2.09 113.058 2.263 113.521 2.263 c
-113.98 2.263 114.322 2.109 114.55 1.808 c
-114.785 1.514 114.907 1.051 114.918 0.426 c
-114.918 0 l
-112.698 0 l
-112.698 -0.088 l
-112.698 -0.522 112.775 -0.834 112.933 -1.029 c
-113.099 -1.216 113.33 -1.309 113.624 -1.309 c
-113.819 -1.309 113.991 -1.276 114.138 -1.206 c
-114.286 -1.129 114.421 -1.011 114.55 -0.853 c
-114.888 -1.264 l
-114.602 -1.669 114.172 -1.867 113.594 -1.867 c
-113.521 1.705 m
-113.245 1.705 113.043 1.61 112.919 1.425 c
-112.79 1.238 112.717 0.947 112.698 0.558 c
-114.271 0.558 l
-114.271 0.646 l
-114.249 1.028 114.182 1.297 114.065 1.455 c
-113.947 1.62 113.764 1.705 113.521 1.705 c
-118.504 -0.706 m
-119.225 2.19 l
-119.915 2.19 l
-118.622 -2.352 l
-118.523 -2.694 118.379 -2.955 118.195 -3.131 c
-118.019 -3.308 117.817 -3.396 117.592 -3.396 c
-117.505 -3.396 117.391 -3.373 117.255 -3.337 c
-117.255 -2.793 l
-117.401 -2.808 l
-117.586 -2.808 117.733 -2.764 117.843 -2.675 c
-117.949 -2.587 118.037 -2.429 118.107 -2.205 c
-118.225 -1.764 l
-117.064 2.19 l
-117.769 2.19 l
-h
-120.356 0.382 m
-120.356 0.959 120.492 1.415 120.767 1.749 c
-121.051 2.09 121.422 2.263 121.885 2.263 c
-122.344 2.263 122.712 2.094 122.988 1.764 c
-123.271 1.44 123.418 0.992 123.428 0.426 c
-123.428 0 l
-123.428 -0.57 123.285 -1.025 123.002 -1.367 c
-122.726 -1.702 122.359 -1.867 121.899 -1.867 c
-121.436 -1.867 121.066 -1.706 120.783 -1.382 c
-120.507 -1.052 120.364 -0.611 120.356 -0.059 c
-h
-121.003 0 m
-121.003 -0.405 121.08 -0.721 121.238 -0.956 c
-121.403 -1.191 121.624 -1.309 121.899 -1.309 c
-122.465 -1.309 122.76 -0.897 122.782 -0.073 c
-122.782 0.382 l
-122.782 0.783 122.697 1.103 122.531 1.338 c
-122.373 1.579 122.157 1.705 121.885 1.705 c
-121.621 1.705 121.403 1.579 121.238 1.338 c
-121.08 1.103 121.003 0.783 121.003 0.382 c
-h
-126.294 -1.441 m
-126.078 -1.727 125.766 -1.867 125.354 -1.867 c
-124.99 -1.867 124.715 -1.746 124.53 -1.5 c
-124.354 -1.246 124.259 -0.882 124.251 -0.412 c
-124.251 2.19 l
-124.898 2.19 l
-124.898 -0.353 l
-124.898 -0.981 125.082 -1.294 125.457 -1.294 c
-125.858 -1.294 126.132 -1.118 126.28 -0.765 c
-126.28 2.19 l
-126.926 2.19 l
-126.926 -1.794 l
-126.309 -1.794 l
-h
-131.674 -1.794 m
-131.634 -1.706 131.609 -1.559 131.601 -1.353 c
-131.366 -1.698 131.071 -1.867 130.719 -1.867 c
-130.355 -1.867 130.072 -1.771 129.866 -1.573 c
-129.668 -1.367 129.573 -1.081 129.573 -0.706 c
-129.573 -0.306 129.708 0.014 129.984 0.249 c
-130.256 0.492 130.631 0.617 131.102 0.617 c
-131.586 0.617 l
-131.586 1.043 l
-131.586 1.278 131.531 1.444 131.424 1.543 c
-131.314 1.65 131.152 1.705 130.94 1.705 c
-130.741 1.705 130.579 1.646 130.454 1.529 c
-130.337 1.411 130.278 1.263 130.278 1.087 c
-129.631 1.087 l
-129.631 1.282 129.69 1.473 129.808 1.66 c
-129.933 1.845 130.094 1.992 130.292 2.102 c
-130.498 2.208 130.726 2.263 130.984 2.263 c
-131.384 2.263 131.689 2.161 131.895 1.955 c
-132.108 1.749 132.222 1.455 132.233 1.072 c
-132.233 -0.941 l
-132.233 -1.246 132.27 -1.511 132.351 -1.735 c
-132.351 -1.794 l
-h
-130.807 -1.279 m
-130.973 -1.279 131.123 -1.235 131.263 -1.147 c
-131.41 -1.058 131.516 -0.948 131.586 -0.809 c
-131.586 0.132 l
-131.219 0.132 l
-130.903 0.132 130.66 0.062 130.483 -0.073 c
-130.307 -0.202 130.219 -0.389 130.219 -0.632 c
-130.219 -0.86 130.263 -1.025 130.352 -1.132 c
-130.44 -1.231 130.591 -1.279 130.807 -1.279 c
-134.879 1.573 m
-134.791 1.591 134.691 1.602 134.585 1.602 c
-134.25 1.602 134.015 1.418 133.88 1.058 c
-133.88 -1.794 l
-133.232 -1.794 l
-133.232 2.19 l
-133.864 2.19 l
-133.88 1.778 l
-134.055 2.102 134.298 2.263 134.614 2.263 c
-134.721 2.263 134.809 2.241 134.879 2.204 c
-h
-136.878 -1.867 m
-136.378 -1.867 135.996 -1.72 135.732 -1.426 c
-135.466 -1.132 135.335 -0.699 135.335 -0.118 c
-135.335 0.353 l
-135.335 0.947 135.46 1.415 135.717 1.749 c
-135.981 2.09 136.341 2.263 136.804 2.263 c
-137.263 2.263 137.606 2.109 137.833 1.808 c
-138.069 1.514 138.19 1.051 138.201 0.426 c
-138.201 0 l
-135.981 0 l
-135.981 -0.088 l
-135.981 -0.522 136.058 -0.834 136.216 -1.029 c
-136.382 -1.216 136.613 -1.309 136.908 -1.309 c
-137.102 -1.309 137.275 -1.276 137.421 -1.206 c
-137.569 -1.129 137.705 -1.011 137.833 -0.853 c
-138.171 -1.264 l
-137.885 -1.669 137.455 -1.867 136.878 -1.867 c
-136.804 1.705 m
-136.529 1.705 136.326 1.61 136.202 1.425 c
-136.073 1.238 136 0.947 135.981 0.558 c
-137.554 0.558 l
-137.554 0.646 l
-137.532 1.028 137.466 1.297 137.348 1.455 c
-137.23 1.62 137.047 1.705 136.804 1.705 c
-f
-Q
-q 1 0 0 1 727.8236 127.6454 cm
-0 0 m
-0 0.577 0.136 1.033 0.412 1.367 c
-0.695 1.708 1.066 1.881 1.529 1.881 c
-1.989 1.881 2.356 1.712 2.631 1.382 c
-2.914 1.058 3.061 0.61 3.072 0.044 c
-3.072 -0.382 l
-3.072 -0.952 2.93 -1.407 2.646 -1.749 c
-2.371 -2.084 2.003 -2.249 1.544 -2.249 c
-1.081 -2.249 0.709 -2.087 0.427 -1.764 c
-0.151 -1.434 0.008 -0.992 0 -0.441 c
-h
-0.647 -0.382 m
-0.647 -0.786 0.724 -1.103 0.883 -1.338 c
-1.048 -1.573 1.268 -1.691 1.544 -1.691 c
-2.11 -1.691 2.404 -1.278 2.426 -0.455 c
-2.426 0 l
-2.426 0.401 2.342 0.721 2.176 0.956 c
-2.018 1.198 1.802 1.323 1.529 1.323 c
-1.264 1.323 1.048 1.198 0.883 0.956 c
-0.724 0.721 0.647 0.401 0.647 0 c
-h
-4.528 1.808 m
-4.543 1.367 l
-4.796 1.708 5.12 1.881 5.513 1.881 c
-6.218 1.881 6.575 1.411 6.585 0.47 c
-6.585 -2.176 l
-5.939 -2.176 l
-5.939 0.441 l
-5.939 0.754 5.883 0.974 5.777 1.103 c
-5.667 1.228 5.513 1.294 5.307 1.294 c
-5.149 1.294 5.002 1.238 4.866 1.132 c
-4.738 1.022 4.634 0.885 4.557 0.721 c
-4.557 -2.176 l
-3.911 -2.176 l
-3.911 1.808 l
-h
-10.658 -1.691 m
-10.87 -1.691 11.043 -1.628 11.171 -1.5 c
-11.308 -1.363 11.381 -1.172 11.392 -0.926 c
-12.01 -0.926 l
-11.988 -1.309 11.852 -1.628 11.598 -1.881 c
-11.341 -2.128 11.028 -2.249 10.658 -2.249 c
-10.165 -2.249 9.79 -2.099 9.525 -1.793 c
-9.268 -1.481 9.143 -1.014 9.143 -0.397 c
-9.143 0.044 l
-9.143 0.64 9.268 1.095 9.525 1.411 c
-9.79 1.723 10.165 1.881 10.658 1.881 c
-11.057 1.881 11.377 1.749 11.612 1.484 c
-11.855 1.228 11.988 0.881 12.01 0.441 c
-11.392 0.441 l
-11.37 0.735 11.296 0.956 11.171 1.103 c
-11.054 1.249 10.882 1.323 10.658 1.323 c
-10.363 1.323 10.147 1.224 10.01 1.029 c
-9.871 0.841 9.798 0.532 9.79 0.103 c
-9.79 -0.412 l
-9.79 -0.882 9.856 -1.216 9.995 -1.411 c
-10.143 -1.598 10.363 -1.691 10.658 -1.691 c
-14.787 -1.823 m
-14.571 -2.109 14.259 -2.249 13.847 -2.249 c
-13.484 -2.249 13.208 -2.128 13.024 -1.881 c
-12.848 -1.628 12.752 -1.264 12.744 -0.794 c
-12.744 1.808 l
-13.391 1.808 l
-13.391 -0.735 l
-13.391 -1.363 13.575 -1.675 13.95 -1.675 c
-14.35 -1.675 14.626 -1.5 14.773 -1.147 c
-14.773 1.808 l
-15.42 1.808 l
-15.42 -2.176 l
-14.803 -2.176 l
-h
-18.051 1.191 m
-17.963 1.209 17.864 1.22 17.756 1.22 c
-17.423 1.22 17.187 1.036 17.051 0.676 c
-17.051 -2.176 l
-16.405 -2.176 l
-16.405 1.808 l
-17.037 1.808 l
-17.051 1.396 l
-17.228 1.72 17.471 1.881 17.787 1.881 c
-17.893 1.881 17.981 1.859 18.051 1.822 c
-h
-20.344 1.191 m
-20.256 1.209 20.156 1.22 20.05 1.22 c
-19.715 1.22 19.48 1.036 19.344 0.676 c
-19.344 -2.176 l
-18.697 -2.176 l
-18.697 1.808 l
-19.329 1.808 l
-19.344 1.396 l
-19.52 1.72 19.763 1.881 20.079 1.881 c
-20.185 1.881 20.274 1.859 20.344 1.822 c
-h
-22.343 -2.249 m
-21.843 -2.249 21.461 -2.102 21.197 -1.808 c
-20.931 -1.514 20.8 -1.081 20.8 -0.5 c
-20.8 -0.029 l
-20.8 0.565 20.925 1.033 21.182 1.367 c
-21.446 1.708 21.806 1.881 22.269 1.881 c
-22.729 1.881 23.071 1.727 23.298 1.426 c
-23.534 1.132 23.655 0.669 23.666 0.044 c
-23.666 -0.382 l
-21.446 -0.382 l
-21.446 -0.47 l
-21.446 -0.904 21.523 -1.216 21.681 -1.411 c
-21.847 -1.598 22.078 -1.691 22.373 -1.691 c
-22.567 -1.691 22.74 -1.658 22.887 -1.588 c
-23.034 -1.511 23.17 -1.393 23.298 -1.235 c
-23.636 -1.646 l
-23.35 -2.051 22.92 -2.249 22.343 -2.249 c
-22.269 1.323 m
-21.994 1.323 21.792 1.228 21.667 1.043 c
-21.538 0.856 21.465 0.565 21.446 0.176 c
-23.019 0.176 l
-23.019 0.264 l
-22.997 0.646 22.931 0.915 22.813 1.073 c
-22.695 1.238 22.512 1.323 22.269 1.323 c
-25.062 1.808 m
-25.077 1.367 l
-25.33 1.708 25.654 1.881 26.047 1.881 c
-26.753 1.881 27.109 1.411 27.121 0.47 c
-27.121 -2.176 l
-26.473 -2.176 l
-26.473 0.441 l
-26.473 0.754 26.419 0.974 26.312 1.103 c
-26.201 1.228 26.047 1.294 25.841 1.294 c
-25.683 1.294 25.536 1.238 25.4 1.132 c
-25.272 1.022 25.169 0.885 25.091 0.721 c
-25.091 -2.176 l
-24.445 -2.176 l
-24.445 1.808 l
-h
-28.796 -2.176 -0.647 5.644 re
-30.662 2.763 m
-30.662 1.808 l
-31.266 1.808 l
-31.266 1.278 l
-30.662 1.278 l
-30.662 -1.191 l
-30.662 -1.349 30.685 -1.467 30.736 -1.544 c
-30.795 -1.625 30.884 -1.661 31.001 -1.661 c
-31.089 -1.661 31.177 -1.646 31.266 -1.617 c
-31.266 -2.176 l
-31.119 -2.223 30.964 -2.249 30.809 -2.249 c
-30.552 -2.249 30.358 -2.157 30.221 -1.97 c
-30.082 -1.786 30.016 -1.525 30.016 -1.191 c
-30.016 1.278 l
-29.413 1.278 l
-29.413 1.808 l
-30.016 1.808 l
-30.016 2.763 l
-h
-33.118 -1.087 m
-33.837 1.808 l
-34.529 1.808 l
-33.235 -2.734 l
-33.136 -3.076 32.993 -3.337 32.808 -3.513 c
-32.632 -3.69 32.43 -3.778 32.206 -3.778 c
-32.118 -3.778 32.004 -3.755 31.868 -3.719 c
-31.868 -3.175 l
-32.015 -3.19 l
-32.199 -3.19 32.345 -3.146 32.456 -3.057 c
-32.563 -2.969 32.65 -2.811 32.721 -2.587 c
-32.838 -2.146 l
-31.677 1.808 l
-32.382 1.808 l
-h
-36.557 -0.044 m
-36.557 -1.132 36.311 -2.099 35.823 -2.94 c
-35.557 -3.389 35.282 -3.711 34.999 -3.91 c
-34.882 -3.484 l
-35.183 -3.19 35.429 -2.738 35.616 -2.132 c
-35.811 -1.525 35.91 -0.86 35.91 -0.133 c
-35.91 0 l
-35.91 0.929 35.756 1.764 35.455 2.499 c
-35.285 2.899 35.094 3.219 34.882 3.454 c
-34.999 3.865 l
-35.271 3.678 35.536 3.381 35.792 2.969 c
-36.299 2.117 36.557 1.11 36.557 -0.044 c
-37.6 -1.823 m
-37.6 -1.706 37.633 -1.61 37.704 -1.529 c
-37.77 -1.452 37.872 -1.411 38.013 -1.411 c
-38.159 -1.411 38.266 -1.452 38.335 -1.529 c
-38.413 -1.61 38.453 -1.706 38.453 -1.823 c
-38.453 -1.933 38.413 -2.024 38.335 -2.102 c
-38.266 -2.18 38.159 -2.219 38.013 -2.219 c
-37.872 -2.219 37.77 -2.18 37.704 -2.102 c
-37.633 -2.024 37.6 -1.933 37.6 -1.823 c
-f
-Q
-0.113 0.082 0.09 0 k
-535.667 120.241 238.665 -12.898 re
-f
-0.906 0.785 0.617 0.969 k
-q 1 0 0 1 540.8555 113.4016 cm
-0 0 m
-0 -0.187 -0.029 -0.353 -0.088 -0.5 c
--0.147 -0.646 -0.242 -0.775 -0.367 -0.881 c
--0.496 -0.992 -0.658 -1.08 -0.852 -1.146 c
--1.051 -1.205 -1.278 -1.242 -1.543 -1.249 c
--1.543 -1.808 l
--1.896 -1.808 l
--1.896 -1.263 l
--2.142 -1.257 -2.358 -1.22 -2.543 -1.161 c
--2.719 -1.103 -2.873 -1.025 -2.998 -0.926 c
--3.127 -0.819 -3.23 -0.691 -3.307 -0.544 c
--3.388 -0.389 -3.447 -0.213 -3.484 -0.014 c
--2.66 0.133 l
--2.642 0.033 -2.616 -0.058 -2.587 -0.147 c
--2.55 -0.228 -2.506 -0.301 -2.454 -0.367 c
--2.396 -0.426 -2.322 -0.478 -2.234 -0.515 c
--2.138 -0.555 -2.024 -0.58 -1.896 -0.588 c
--1.896 0.661 l
--1.907 0.661 -1.926 0.665 -1.955 0.676 c
--1.977 0.684 -1.992 0.691 -1.999 0.691 c
--2.167 0.728 -2.329 0.772 -2.484 0.823 c
--2.642 0.882 -2.786 0.96 -2.91 1.058 c
--3.039 1.154 -3.141 1.279 -3.218 1.426 c
--3.289 1.573 -3.322 1.756 -3.322 1.985 c
--3.322 2.18 -3.289 2.344 -3.218 2.484 c
--3.152 2.631 -3.054 2.749 -2.925 2.837 c
--2.8 2.932 -2.645 3.003 -2.469 3.043 c
--2.293 3.09 -2.102 3.12 -1.896 3.131 c
--1.896 3.558 l
--1.543 3.558 l
--1.543 3.131 l
--1.319 3.12 -1.128 3.09 -0.97 3.043 c
--0.804 2.992 -0.669 2.918 -0.558 2.822 c
--0.44 2.735 -0.349 2.62 -0.279 2.484 c
--0.201 2.344 -0.143 2.183 -0.103 1.999 c
--0.941 1.881 l
--1.01 2.253 -1.213 2.459 -1.543 2.5 c
--1.543 1.367 l
--1.514 1.367 l
--1.506 1.367 -1.492 1.36 -1.469 1.353 c
--1.294 1.312 -1.117 1.264 -0.941 1.206 c
--0.756 1.147 -0.595 1.066 -0.455 0.971 c
--0.319 0.871 -0.213 0.742 -0.132 0.588 c
--0.044 0.43 0 0.235 0 0 c
--1.896 2.514 m
--2.013 2.502 -2.113 2.484 -2.19 2.455 c
--2.26 2.425 -2.318 2.385 -2.366 2.338 c
--2.406 2.297 -2.436 2.249 -2.454 2.19 c
--2.476 2.132 -2.484 2.066 -2.484 1.999 c
--2.484 1.912 -2.469 1.837 -2.439 1.779 c
--2.41 1.72 -2.373 1.669 -2.322 1.632 c
--2.263 1.592 -2.2 1.559 -2.131 1.529 c
--2.065 1.5 -1.984 1.47 -1.896 1.441 c
-h
--0.837 -0.014 m
--0.837 0.092 -0.86 0.177 -0.897 0.235 c
--0.926 0.302 -0.977 0.357 -1.043 0.397 c
--1.102 0.434 -1.176 0.47 -1.263 0.5 c
--1.352 0.53 -1.448 0.559 -1.543 0.588 c
--1.543 -0.588 l
--1.319 -0.58 -1.146 -0.529 -1.028 -0.44 c
--0.904 -0.345 -0.837 -0.202 -0.837 -0.014 c
-6.402 -2.66 m
-6.185 -2.66 5.993 -2.635 5.829 -2.587 c
-5.659 -2.547 5.52 -2.484 5.403 -2.396 c
-5.285 -2.315 5.185 -2.219 5.108 -2.102 c
-5.039 -1.984 4.991 -1.855 4.961 -1.72 c
-5.858 -1.616 l
-5.895 -1.753 5.964 -1.859 6.064 -1.94 c
-6.159 -2.028 6.284 -2.072 6.431 -2.072 c
-6.519 -2.072 6.6 -2.057 6.681 -2.028 c
-6.758 -1.999 6.828 -1.944 6.887 -1.866 c
-6.945 -1.797 6.99 -1.705 7.019 -1.587 c
-7.056 -1.469 7.078 -1.323 7.078 -1.146 c
-7.078 -0.955 l
-7.078 -0.889 7.082 -0.831 7.092 -0.779 c
-7.092 -0.588 l
-7.078 -0.588 l
-6.978 -0.816 6.835 -0.977 6.652 -1.072 c
-6.464 -1.172 6.259 -1.22 6.034 -1.22 c
-5.829 -1.22 5.644 -1.183 5.49 -1.103 c
-5.343 -1.014 5.214 -0.897 5.108 -0.75 c
-5.009 -0.595 4.935 -0.411 4.888 -0.205 c
-4.836 0.008 4.815 0.243 4.815 0.5 c
-4.815 0.772 4.836 1.018 4.888 1.235 c
-4.946 1.448 5.027 1.632 5.137 1.779 c
-5.245 1.933 5.376 2.051 5.534 2.132 c
-5.689 2.22 5.876 2.264 6.093 2.264 c
-6.189 2.264 6.288 2.253 6.387 2.234 c
-6.483 2.213 6.571 2.18 6.652 2.132 c
-6.739 2.08 6.817 2.018 6.887 1.941 c
-6.964 1.86 7.026 1.768 7.078 1.661 c
-7.092 1.661 l
-7.092 1.808 l
-7.1 1.867 7.107 1.918 7.107 1.97 c
-7.115 2.029 7.122 2.076 7.122 2.117 c
-7.13 2.165 7.14 2.198 7.151 2.22 c
-8.004 2.22 l
-7.992 2.139 7.982 2.029 7.975 1.881 c
-7.975 1.411 l
-7.975 -1.161 l
-7.975 -1.415 7.938 -1.635 7.872 -1.822 c
-7.802 -2.007 7.699 -2.161 7.563 -2.278 c
-7.423 -2.403 7.258 -2.499 7.063 -2.557 c
-6.865 -2.624 6.644 -2.66 6.402 -2.66 c
-7.092 0.53 m
-7.092 0.742 7.067 0.919 7.019 1.058 c
-6.978 1.206 6.924 1.324 6.857 1.411 c
-6.799 1.5 6.729 1.559 6.652 1.588 c
-6.571 1.625 6.494 1.646 6.417 1.646 c
-6.317 1.646 6.226 1.621 6.137 1.573 c
-6.056 1.532 5.991 1.463 5.931 1.367 c
-5.88 1.279 5.835 1.162 5.799 1.014 c
-5.77 0.875 5.755 0.706 5.755 0.5 c
-5.755 0.125 5.814 -0.154 5.931 -0.338 c
-6.049 -0.515 6.211 -0.602 6.417 -0.602 c
-6.483 -0.602 6.556 -0.588 6.637 -0.558 c
-6.725 -0.521 6.799 -0.463 6.857 -0.382 c
-6.924 -0.294 6.978 -0.176 7.019 -0.029 c
-7.067 0.118 7.092 0.302 7.092 0.53 c
-11.036 -0.646 m
-12.168 -0.646 l
-12.168 -1.263 l
-8.86 -1.263 l
-8.86 -0.646 l
-10.124 -0.646 l
-10.124 1.602 l
-9.199 1.602 l
-9.199 2.22 l
-11.036 2.22 l
-h
-10.124 3.514 0.912 -0.676 re
-10.124 2.837 m
-13.6 1.602 m
-13.057 1.602 l
-13.057 2.22 l
-13.644 2.22 l
-13.924 3.117 l
-14.498 3.117 l
-14.498 2.22 l
-15.732 2.22 l
-15.732 1.602 l
-14.498 1.602 l
-14.498 -0.103 l
-14.498 -0.323 l
-14.504 -0.393 14.527 -0.455 14.556 -0.515 c
-14.593 -0.565 14.648 -0.61 14.718 -0.646 c
-14.795 -0.675 14.909 -0.691 15.056 -0.691 c
-15.192 -0.691 15.327 -0.687 15.468 -0.675 c
-15.603 -0.658 15.736 -0.632 15.865 -0.602 c
-15.865 -1.205 l
-15.784 -1.216 15.707 -1.23 15.629 -1.249 c
-15.549 -1.261 15.471 -1.267 15.394 -1.278 c
-15.313 -1.286 15.225 -1.294 15.129 -1.294 c
-15.042 -1.301 14.942 -1.308 14.836 -1.308 c
-14.648 -1.308 14.486 -1.294 14.35 -1.263 c
-14.222 -1.227 14.107 -1.183 14.012 -1.132 c
-13.924 -1.084 13.85 -1.025 13.792 -0.955 c
-13.733 -0.878 13.689 -0.801 13.66 -0.72 c
-13.63 -0.632 13.608 -0.544 13.6 -0.455 c
-13.59 -0.36 13.586 -0.264 13.586 -0.176 c
-h
-21.12 -1.263 m
-21.12 -0.97 l
-21.126 -0.833 21.134 -0.675 21.134 -0.5 c
-21.134 3.514 l
-22.045 3.514 l
-22.045 2.234 l
-22.045 2.072 l
-22.045 1.897 l
-22.045 1.845 22.038 1.801 22.03 1.764 c
-22.03 1.676 l
-22.045 1.676 l
-22.093 1.783 22.155 1.874 22.236 1.955 c
-22.313 2.032 22.398 2.095 22.487 2.147 c
-22.574 2.194 22.666 2.227 22.766 2.249 c
-22.861 2.267 22.961 2.278 23.059 2.278 c
-23.273 2.278 23.46 2.234 23.618 2.147 c
-23.773 2.058 23.901 1.929 24 1.764 c
-24.106 1.606 24.184 1.415 24.235 1.191 c
-24.283 0.974 24.309 0.736 24.309 0.47 c
-24.309 0.214 24.28 -0.025 24.22 -0.249 c
-24.162 -0.467 24.077 -0.658 23.971 -0.823 c
-23.861 -0.981 23.728 -1.103 23.574 -1.19 c
-23.416 -1.278 23.236 -1.323 23.03 -1.323 c
-22.931 -1.323 22.832 -1.311 22.736 -1.294 c
-22.648 -1.271 22.56 -1.242 22.471 -1.19 c
-22.383 -1.132 22.302 -1.066 22.236 -0.985 c
-22.167 -0.908 22.104 -0.808 22.045 -0.691 c
-22.03 -0.691 l
-22.03 -0.852 l
-22.03 -0.911 22.024 -0.97 22.016 -1.028 c
-22.016 -1.08 22.009 -1.128 22.001 -1.176 c
-22.001 -1.216 21.994 -1.246 21.986 -1.263 c
-h
-22.03 0.5 m
-22.03 0.265 22.049 0.067 22.09 -0.087 c
-22.137 -0.246 22.196 -0.367 22.265 -0.455 c
-22.332 -0.544 22.406 -0.61 22.487 -0.646 c
-22.564 -0.687 22.641 -0.706 22.722 -0.706 c
-22.927 -0.706 23.082 -0.61 23.192 -0.411 c
-23.31 -0.216 23.368 0.077 23.368 0.47 c
-23.368 0.684 23.346 0.867 23.31 1.014 c
-23.28 1.168 23.236 1.294 23.177 1.382 c
-23.125 1.478 23.059 1.551 22.971 1.602 c
-22.89 1.65 22.803 1.676 22.707 1.676 c
-22.626 1.676 22.549 1.654 22.471 1.617 c
-22.391 1.577 22.317 1.515 22.251 1.426 c
-22.192 1.338 22.137 1.213 22.09 1.058 c
-22.049 0.912 22.03 0.724 22.03 0.5 c
-28.193 1.47 m
-28.094 1.478 27.991 1.488 27.884 1.5 c
-27.774 1.518 27.653 1.529 27.517 1.529 c
-27.341 1.529 27.183 1.488 27.046 1.411 c
-26.907 1.341 26.789 1.243 26.693 1.118 c
-26.606 0.989 26.535 0.842 26.488 0.676 c
-26.448 0.507 26.429 0.331 26.429 0.148 c
-26.429 -1.263 l
-25.533 -1.263 l
-25.533 0.985 l
-25.533 1.11 25.521 1.235 25.503 1.353 c
-25.492 1.478 25.477 1.595 25.459 1.706 c
-25.448 1.823 25.434 1.918 25.415 1.999 c
-25.393 2.087 25.375 2.161 25.356 2.22 c
-26.238 2.22 l
-26.246 2.168 26.257 2.117 26.267 2.058 c
-26.286 1.999 26.3 1.933 26.312 1.867 c
-26.33 1.808 26.344 1.742 26.356 1.676 c
-26.363 1.606 26.375 1.544 26.385 1.484 c
-26.4 1.484 l
-26.437 1.602 26.488 1.709 26.547 1.808 c
-26.613 1.904 26.693 1.989 26.782 2.058 c
-26.87 2.124 26.973 2.18 27.09 2.22 c
-27.216 2.257 27.362 2.278 27.532 2.278 c
-27.657 2.278 27.774 2.271 27.884 2.264 c
-28.002 2.253 28.105 2.238 28.193 2.22 c
-h
-30.196 -1.323 m
-30.026 -1.323 29.876 -1.301 29.741 -1.263 c
-29.612 -1.216 29.498 -1.146 29.402 -1.058 c
-29.314 -0.97 29.244 -0.864 29.197 -0.735 c
-29.145 -0.598 29.122 -0.448 29.122 -0.279 c
-29.122 -0.073 29.156 0.096 29.226 0.235 c
-29.292 0.383 29.388 0.493 29.505 0.574 c
-29.63 0.661 29.773 0.724 29.932 0.765 c
-30.097 0.801 30.273 0.827 30.46 0.838 c
-31.181 0.853 l
-31.181 1.029 l
-31.181 1.147 31.169 1.249 31.152 1.338 c
-31.129 1.426 31.096 1.492 31.048 1.544 c
-31.008 1.602 30.961 1.639 30.901 1.661 c
-30.843 1.679 30.776 1.691 30.71 1.691 c
-30.641 1.691 30.578 1.679 30.519 1.661 c
-30.468 1.65 30.42 1.625 30.373 1.588 c
-30.332 1.559 30.298 1.507 30.269 1.441 c
-30.248 1.382 30.233 1.301 30.225 1.206 c
-29.284 1.249 l
-29.314 1.397 29.358 1.532 29.417 1.661 c
-29.483 1.786 29.579 1.897 29.696 1.985 c
-29.814 2.08 29.953 2.153 30.122 2.205 c
-30.298 2.253 30.504 2.278 30.74 2.278 c
-31.181 2.278 31.511 2.168 31.74 1.955 c
-31.975 1.75 32.092 1.441 32.092 1.029 c
-32.092 -0.235 l
-32.092 -0.455 l
-32.099 -0.515 32.114 -0.569 32.137 -0.617 c
-32.154 -0.658 32.184 -0.691 32.224 -0.72 c
-32.261 -0.742 32.313 -0.75 32.372 -0.75 c
-32.438 -0.75 32.507 -0.746 32.577 -0.735 c
-32.577 -1.22 l
-32.519 -1.23 32.463 -1.242 32.415 -1.249 c
-32.375 -1.261 32.334 -1.267 32.297 -1.278 c
-32.257 -1.286 32.214 -1.294 32.166 -1.294 c
-32.114 -1.301 32.056 -1.308 31.989 -1.308 c
-31.761 -1.308 31.596 -1.257 31.489 -1.146 c
-31.379 -1.028 31.316 -0.864 31.298 -0.646 c
-31.283 -0.646 l
-31.214 -0.756 31.144 -0.852 31.078 -0.941 c
-31.008 -1.022 30.931 -1.087 30.843 -1.146 c
-30.755 -1.205 30.655 -1.249 30.549 -1.278 c
-30.45 -1.308 30.332 -1.323 30.196 -1.323 c
-31.181 0.353 m
-30.755 0.339 l
-30.655 0.339 30.564 0.331 30.475 0.324 c
-30.394 0.312 30.328 0.287 30.269 0.25 c
-30.211 0.21 30.159 0.151 30.122 0.073 c
-30.082 0.004 30.063 -0.087 30.063 -0.205 c
-30.063 -0.374 30.097 -0.496 30.167 -0.573 c
-30.233 -0.654 30.332 -0.691 30.46 -0.691 c
-30.567 -0.691 30.666 -0.669 30.755 -0.617 c
-30.85 -0.569 30.931 -0.507 30.99 -0.426 c
-31.056 -0.349 31.107 -0.261 31.137 -0.162 c
-31.166 -0.055 31.181 0.059 31.181 0.177 c
-h
-35.495 -1.263 m
-35.495 0.721 l
-35.495 1.022 35.451 1.243 35.362 1.382 c
-35.281 1.529 35.146 1.602 34.951 1.602 c
-34.841 1.602 34.738 1.577 34.643 1.529 c
-34.554 1.478 34.473 1.411 34.408 1.324 c
-34.348 1.235 34.297 1.125 34.26 1 c
-34.231 0.882 34.216 0.75 34.216 0.603 c
-34.216 -1.263 l
-33.305 -1.263 l
-33.305 1.441 l
-33.305 1.661 l
-33.305 1.75 33.297 1.827 33.29 1.897 c
-33.29 2.087 l
-33.29 2.22 l
-34.142 2.22 l
-34.15 2.19 34.157 2.147 34.157 2.087 c
-34.157 1.897 l
-34.165 1.827 34.172 1.756 34.172 1.691 c
-34.179 1.621 34.186 1.565 34.186 1.529 c
-34.202 1.529 l
-34.319 1.794 34.47 1.985 34.657 2.103 c
-34.841 2.22 35.061 2.278 35.318 2.278 c
-35.503 2.278 35.664 2.249 35.804 2.19 c
-35.939 2.132 36.054 2.043 36.141 1.926 c
-36.23 1.808 36.293 1.665 36.332 1.5 c
-36.38 1.341 36.407 1.154 36.407 0.941 c
-36.407 -1.263 l
-h
-38.923 -1.323 m
-38.637 -1.323 38.394 -1.282 38.188 -1.205 c
-37.982 -1.117 37.81 -0.995 37.674 -0.837 c
-37.535 -0.683 37.431 -0.496 37.365 -0.279 c
-37.296 -0.055 37.263 0.191 37.263 0.456 c
-37.263 0.75 37.296 1.008 37.365 1.235 c
-37.442 1.459 37.549 1.646 37.689 1.794 c
-37.836 1.948 38.012 2.066 38.218 2.147 c
-38.424 2.234 38.659 2.278 38.923 2.278 c
-39.148 2.278 39.35 2.249 39.526 2.19 c
-39.702 2.132 39.854 2.047 39.981 1.941 c
-40.107 1.841 40.21 1.72 40.291 1.573 c
-40.368 1.434 40.423 1.283 40.452 1.118 c
-39.541 1.073 l
-39.511 1.249 39.441 1.389 39.335 1.5 c
-39.235 1.606 39.092 1.661 38.909 1.661 c
-38.662 1.661 38.487 1.559 38.379 1.353 c
-38.269 1.154 38.218 0.867 38.218 0.485 c
-38.218 -0.309 38.453 -0.706 38.923 -0.706 c
-39.089 -0.706 39.232 -0.654 39.35 -0.544 c
-39.467 -0.437 39.541 -0.276 39.57 -0.058 c
-40.482 -0.103 l
-40.452 -0.272 40.397 -0.426 40.32 -0.573 c
-40.25 -0.72 40.147 -0.852 40.012 -0.97 c
-39.883 -1.08 39.725 -1.168 39.541 -1.234 c
-39.364 -1.294 39.158 -1.323 38.923 -1.323 c
-42.323 1.515 m
-42.441 1.786 42.591 1.985 42.778 2.103 c
-42.962 2.22 43.183 2.278 43.44 2.278 c
-43.646 2.278 43.815 2.242 43.954 2.176 c
-44.101 2.106 44.211 2.014 44.292 1.897 c
-44.38 1.779 44.44 1.636 44.469 1.47 c
-44.505 1.301 44.527 1.125 44.527 0.941 c
-44.527 -1.263 l
-43.616 -1.263 l
-43.616 0.736 l
-43.616 0.871 43.605 0.992 43.586 1.103 c
-43.576 1.209 43.55 1.297 43.513 1.367 c
-43.473 1.444 43.414 1.503 43.337 1.544 c
-43.267 1.58 43.175 1.602 43.058 1.602 c
-42.948 1.602 42.852 1.577 42.763 1.529 c
-42.676 1.478 42.595 1.411 42.528 1.324 c
-42.47 1.235 42.418 1.125 42.381 1 c
-42.352 0.882 42.337 0.75 42.337 0.603 c
-42.337 -1.263 l
-41.426 -1.263 l
-41.426 3.514 l
-42.337 3.514 l
-42.337 2.205 l
-42.337 2.135 42.329 2.066 42.323 1.999 c
-42.323 1.794 l
-42.323 1.735 42.315 1.679 42.308 1.632 c
-42.308 1.515 l
-h
-50.135 0.838 1.867 -0.794 re
-50.135 0.044 m
-55.787 -1.263 m
-55.776 -1.246 55.765 -1.216 55.758 -1.176 c
-55.758 -1.128 55.75 -1.08 55.743 -1.028 c
-55.743 -0.97 55.735 -0.911 55.728 -0.852 c
-55.728 -0.691 l
-55.611 -0.926 55.467 -1.095 55.302 -1.19 c
-55.133 -1.278 54.935 -1.323 54.699 -1.323 c
-54.501 -1.323 54.324 -1.278 54.17 -1.19 c
-54.012 -1.103 53.88 -0.981 53.774 -0.823 c
-53.674 -0.658 53.597 -0.467 53.538 -0.249 c
-53.487 -0.037 53.464 0.206 53.464 0.47 c
-53.464 0.736 53.487 0.974 53.538 1.191 c
-53.597 1.415 53.674 1.606 53.774 1.764 c
-53.88 1.918 54.012 2.043 54.17 2.132 c
-54.335 2.227 54.526 2.278 54.744 2.278 c
-54.839 2.278 54.935 2.264 55.023 2.234 c
-55.118 2.213 55.214 2.18 55.302 2.132 c
-55.39 2.08 55.467 2.018 55.538 1.941 c
-55.615 1.86 55.677 1.768 55.728 1.661 c
-55.728 1.75 l
-55.728 1.897 l
-55.728 2.058 l
-55.728 2.234 l
-55.728 3.514 l
-56.625 3.514 l
-56.625 -0.5 l
-56.625 -0.675 56.629 -0.833 56.639 -0.97 c
-56.647 -1.099 56.654 -1.198 56.654 -1.263 c
-h
-55.743 0.485 m
-55.743 0.721 55.717 0.912 55.669 1.058 c
-55.629 1.213 55.574 1.338 55.507 1.426 c
-55.449 1.515 55.379 1.573 55.302 1.602 c
-55.221 1.639 55.144 1.661 55.067 1.661 c
-54.967 1.661 54.875 1.636 54.788 1.588 c
-54.707 1.548 54.64 1.478 54.582 1.382 c
-54.53 1.283 54.486 1.162 54.449 1.014 c
-54.42 0.867 54.405 0.684 54.405 0.47 c
-54.405 0.077 54.457 -0.216 54.567 -0.411 c
-54.684 -0.61 54.846 -0.706 55.052 -0.706 c
-55.129 -0.706 55.206 -0.687 55.287 -0.646 c
-55.364 -0.61 55.438 -0.544 55.507 -0.455 c
-55.574 -0.367 55.629 -0.246 55.669 -0.087 c
-55.717 0.067 55.743 0.258 55.743 0.485 c
-62.482 -2.631 m
-62.482 3.514 l
-64.408 3.514 l
-64.408 2.896 l
-63.335 2.896 l
-63.335 -2.013 l
-64.408 -2.013 l
-64.408 -2.631 l
-h
-67.983 -1.263 m
-67.983 0.721 l
-67.983 1.022 67.939 1.243 67.851 1.382 c
-67.77 1.529 67.634 1.602 67.44 1.602 c
-67.33 1.602 67.226 1.577 67.131 1.529 c
-67.043 1.478 66.962 1.411 66.896 1.324 c
-66.837 1.235 66.786 1.125 66.748 1 c
-66.719 0.882 66.705 0.75 66.705 0.603 c
-66.705 -1.263 l
-65.793 -1.263 l
-65.793 1.441 l
-65.793 1.661 l
-65.793 1.75 65.786 1.827 65.778 1.897 c
-65.778 2.087 l
-65.778 2.22 l
-66.632 2.22 l
-66.638 2.19 66.646 2.147 66.646 2.087 c
-66.646 1.897 l
-66.653 1.827 66.661 1.756 66.661 1.691 c
-66.668 1.621 66.675 1.565 66.675 1.529 c
-66.69 1.529 l
-66.808 1.794 66.958 1.985 67.145 2.103 c
-67.33 2.22 67.55 2.278 67.808 2.278 c
-67.991 2.278 68.153 2.249 68.292 2.19 c
-68.428 2.132 68.542 2.043 68.63 1.926 c
-68.718 1.808 68.781 1.665 68.822 1.5 c
-68.869 1.341 68.895 1.154 68.895 0.941 c
-68.895 -1.263 l
-h
-70.81 -1.323 m
-70.64 -1.323 70.49 -1.301 70.354 -1.263 c
-70.225 -1.216 70.111 -1.146 70.015 -1.058 c
-69.927 -0.97 69.857 -0.864 69.809 -0.735 c
-69.759 -0.598 69.736 -0.448 69.736 -0.279 c
-69.736 -0.073 69.769 0.096 69.84 0.235 c
-69.905 0.383 70.001 0.493 70.119 0.574 c
-70.243 0.661 70.387 0.724 70.545 0.765 c
-70.71 0.801 70.887 0.827 71.074 0.838 c
-71.794 0.853 l
-71.794 1.029 l
-71.794 1.147 71.783 1.249 71.765 1.338 c
-71.743 1.426 71.71 1.492 71.662 1.544 c
-71.621 1.602 71.573 1.639 71.515 1.661 c
-71.456 1.679 71.39 1.691 71.324 1.691 c
-71.254 1.691 71.191 1.679 71.133 1.661 c
-71.081 1.65 71.033 1.625 70.985 1.588 c
-70.945 1.559 70.912 1.507 70.883 1.441 c
-70.861 1.382 70.846 1.301 70.839 1.206 c
-69.898 1.249 l
-69.927 1.397 69.971 1.532 70.031 1.661 c
-70.096 1.786 70.192 1.897 70.31 1.985 c
-70.428 2.08 70.567 2.153 70.736 2.205 c
-70.912 2.253 71.118 2.278 71.353 2.278 c
-71.794 2.278 72.125 2.168 72.353 1.955 c
-72.588 1.75 72.706 1.441 72.706 1.029 c
-72.706 -0.235 l
-72.706 -0.455 l
-72.713 -0.515 72.728 -0.569 72.749 -0.617 c
-72.768 -0.658 72.797 -0.691 72.838 -0.72 c
-72.874 -0.742 72.926 -0.75 72.984 -0.75 c
-73.051 -0.75 73.121 -0.746 73.19 -0.735 c
-73.19 -1.22 l
-73.132 -1.23 73.077 -1.242 73.029 -1.249 c
-72.988 -1.261 72.948 -1.267 72.911 -1.278 c
-72.871 -1.286 72.826 -1.294 72.779 -1.294 c
-72.728 -1.301 72.668 -1.308 72.602 -1.308 c
-72.375 -1.308 72.209 -1.257 72.103 -1.146 c
-71.993 -1.028 71.93 -0.864 71.912 -0.646 c
-71.897 -0.646 l
-71.827 -0.756 71.758 -0.852 71.691 -0.941 c
-71.621 -1.022 71.544 -1.087 71.456 -1.146 c
-71.368 -1.205 71.269 -1.249 71.162 -1.278 c
-71.063 -1.308 70.945 -1.323 70.81 -1.323 c
-71.794 0.353 m
-71.368 0.339 l
-71.269 0.339 71.177 0.331 71.089 0.324 c
-71.008 0.312 70.942 0.287 70.883 0.25 c
-70.825 0.21 70.773 0.151 70.736 0.073 c
-70.696 0.004 70.677 -0.087 70.677 -0.205 c
-70.677 -0.374 70.71 -0.496 70.78 -0.573 c
-70.846 -0.654 70.945 -0.691 71.074 -0.691 c
-71.18 -0.691 71.28 -0.669 71.368 -0.617 c
-71.463 -0.569 71.544 -0.507 71.603 -0.426 c
-71.669 -0.349 71.721 -0.261 71.75 -0.162 c
-71.779 -0.055 71.794 0.059 71.794 0.177 c
-h
-75.079 -1.263 m
-75.079 0.853 l
-75.079 1.018 75.072 1.154 75.064 1.264 c
-75.054 1.371 75.035 1.455 75.006 1.515 c
-74.984 1.58 74.954 1.632 74.918 1.661 c
-74.889 1.691 74.848 1.706 74.8 1.706 c
-74.742 1.706 74.686 1.676 74.638 1.617 c
-74.598 1.565 74.565 1.492 74.536 1.397 c
-74.507 1.309 74.48 1.195 74.462 1.058 c
-74.451 0.919 74.447 0.769 74.447 0.603 c
-74.447 -1.263 l
-73.698 -1.263 l
-73.698 1.47 l
-73.698 1.706 l
-73.698 1.926 l
-73.698 2.003 73.69 2.066 73.683 2.117 c
-73.683 2.22 l
-74.359 2.22 l
-74.359 2.132 l
-74.359 1.985 l
-74.366 1.926 74.374 1.867 74.374 1.808 c
-74.374 1.646 l
-74.389 1.646 l
-74.407 1.735 74.436 1.812 74.476 1.881 c
-74.513 1.959 74.557 2.029 74.609 2.087 c
-74.667 2.147 74.734 2.19 74.815 2.22 c
-74.892 2.257 74.98 2.278 75.079 2.278 c
-75.263 2.278 75.403 2.224 75.491 2.117 c
-75.586 2.018 75.656 1.86 75.697 1.646 c
-75.712 1.646 l
-75.748 1.742 75.789 1.831 75.829 1.912 c
-75.877 1.989 75.932 2.051 75.991 2.103 c
-76.049 2.161 76.116 2.205 76.196 2.234 c
-76.274 2.264 76.362 2.278 76.461 2.278 c
-76.597 2.278 76.711 2.253 76.799 2.205 c
-76.888 2.153 76.953 2.08 77.005 1.985 c
-77.063 1.885 77.1 1.756 77.123 1.602 c
-77.152 1.455 77.167 1.272 77.167 1.058 c
-77.167 -1.263 l
-76.446 -1.263 l
-76.446 0.853 l
-76.446 1.018 76.439 1.154 76.431 1.264 c
-76.421 1.371 76.402 1.455 76.373 1.515 c
-76.351 1.58 76.321 1.632 76.285 1.661 c
-76.255 1.691 76.215 1.706 76.167 1.706 c
-76.049 1.706 75.954 1.617 75.888 1.441 c
-75.829 1.272 75.8 1.014 75.8 0.661 c
-75.8 -1.263 l
-h
-79.537 -1.323 m
-79.28 -1.323 79.052 -1.286 78.846 -1.22 c
-78.64 -1.143 78.464 -1.028 78.317 -0.881 c
-78.17 -0.727 78.052 -0.536 77.964 -0.309 c
-77.883 -0.085 77.846 0.181 77.846 0.485 c
-77.846 0.816 77.89 1.095 77.979 1.324 c
-78.075 1.559 78.203 1.742 78.361 1.881 c
-78.526 2.018 78.714 2.117 78.92 2.176 c
-79.126 2.242 79.334 2.278 79.552 2.278 c
-79.824 2.278 80.059 2.227 80.257 2.132 c
-80.463 2.043 80.628 1.912 80.757 1.735 c
-80.893 1.565 80.992 1.36 81.051 1.118 c
-81.117 0.882 81.154 0.618 81.154 0.324 c
-81.154 0.309 l
-78.787 0.309 l
-78.787 0.162 78.802 0.023 78.831 -0.103 c
-78.868 -0.231 78.923 -0.345 78.993 -0.44 c
-79.059 -0.529 79.143 -0.598 79.243 -0.646 c
-79.338 -0.698 79.452 -0.72 79.581 -0.72 c
-79.735 -0.72 79.875 -0.687 79.993 -0.617 c
-80.117 -0.551 80.206 -0.448 80.257 -0.309 c
-81.095 -0.382 l
-81.065 -0.481 81.011 -0.588 80.934 -0.706 c
-80.853 -0.816 80.749 -0.918 80.624 -1.014 c
-80.508 -1.103 80.352 -1.176 80.169 -1.234 c
-79.993 -1.294 79.779 -1.323 79.537 -1.323 c
-79.537 1.706 m
-79.448 1.706 79.361 1.691 79.272 1.661 c
-79.184 1.632 79.103 1.58 79.037 1.515 c
-78.968 1.444 78.908 1.357 78.861 1.249 c
-78.821 1.139 78.802 1.014 78.802 0.867 c
-80.272 0.867 l
-80.272 1.004 80.246 1.125 80.198 1.235 c
-80.158 1.341 80.103 1.43 80.037 1.5 c
-79.978 1.565 79.905 1.617 79.816 1.646 c
-79.728 1.683 79.633 1.706 79.537 1.706 c
-82.407 -2.631 m
-82.407 -2.013 l
-83.48 -2.013 l
-83.48 2.896 l
-82.407 2.896 l
-82.407 3.514 l
-84.333 3.514 l
-84.333 -2.631 l
-h
-f
-Q
-q 1 0 0 1 545.482 99.4081 cm
-0 0 m
--0.941 0 l
--0.941 -2.161 l
--1.616 -2.161 l
--1.616 3.19 l
--0.118 3.19 l
-0.412 3.19 0.809 3.05 1.073 2.778 c
-1.345 2.502 1.484 2.106 1.484 1.588 c
-1.484 1.253 1.411 0.963 1.264 0.721 c
-1.118 0.474 0.912 0.287 0.647 0.162 c
-1.676 -2.117 l
-1.676 -2.161 l
-0.956 -2.161 l
-h
--0.941 0.588 m
--0.118 0.588 l
-0.166 0.588 0.389 0.676 0.559 0.853 c
-0.724 1.037 0.809 1.283 0.809 1.588 c
-0.809 2.271 0.493 2.617 -0.132 2.617 c
--0.941 2.617 l
-h
-3.719 -2.234 m
-3.219 -2.234 2.837 -2.087 2.573 -1.793 c
-2.308 -1.499 2.176 -1.066 2.176 -0.484 c
-2.176 -0.014 l
-2.176 0.58 2.301 1.048 2.558 1.382 c
-2.822 1.723 3.183 1.897 3.645 1.897 c
-4.105 1.897 4.447 1.742 4.675 1.441 c
-4.91 1.147 5.031 0.684 5.042 0.059 c
-5.042 -0.367 l
-2.822 -0.367 l
-2.822 -0.455 l
-2.822 -0.889 2.899 -1.201 3.057 -1.396 c
-3.223 -1.583 3.454 -1.675 3.749 -1.675 c
-3.944 -1.675 4.116 -1.643 4.263 -1.573 c
-4.41 -1.496 4.546 -1.378 4.675 -1.22 c
-5.012 -1.631 l
-4.726 -2.036 4.296 -2.234 3.719 -2.234 c
-3.645 1.338 m
-3.37 1.338 3.168 1.243 3.043 1.058 c
-2.914 0.871 2.841 0.58 2.822 0.191 c
-4.395 0.191 l
-4.395 0.279 l
-4.374 0.661 4.307 0.93 4.189 1.088 c
-4.072 1.253 3.888 1.338 3.645 1.338 c
-6.438 1.823 m
-6.454 1.455 l
-6.696 1.75 7.015 1.897 7.408 1.897 c
-7.85 1.897 8.158 1.698 8.335 1.309 c
-8.588 1.698 8.937 1.897 9.378 1.897 c
-10.113 1.897 10.488 1.434 10.51 0.515 c
-10.51 -2.161 l
-9.864 -2.161 l
-9.864 0.456 l
-9.864 0.75 9.808 0.963 9.702 1.103 c
-9.602 1.239 9.43 1.309 9.187 1.309 c
-8.989 1.309 8.827 1.228 8.702 1.073 c
-8.584 0.927 8.515 0.736 8.497 0.5 c
-8.497 -2.161 l
-7.834 -2.161 l
-7.834 0.485 l
-7.834 1.033 7.614 1.309 7.173 1.309 c
-6.839 1.309 6.604 1.147 6.468 0.823 c
-6.468 -2.161 l
-5.821 -2.161 l
-5.821 1.823 l
-h
-11.348 0.015 m
-11.348 0.592 11.484 1.048 11.759 1.382 c
-12.042 1.723 12.414 1.897 12.877 1.897 c
-13.336 1.897 13.704 1.727 13.979 1.397 c
-14.263 1.073 14.409 0.625 14.42 0.059 c
-14.42 -0.367 l
-14.42 -0.937 14.277 -1.392 13.994 -1.734 c
-13.718 -2.069 13.351 -2.234 12.891 -2.234 c
-12.428 -2.234 12.057 -2.072 11.774 -1.749 c
-11.499 -1.419 11.356 -0.977 11.348 -0.426 c
-h
-11.994 -0.367 m
-11.994 -0.771 12.072 -1.087 12.23 -1.323 c
-12.395 -1.558 12.616 -1.675 12.891 -1.675 c
-13.457 -1.675 13.752 -1.263 13.773 -0.44 c
-13.773 0.015 l
-13.773 0.416 13.689 0.736 13.523 0.971 c
-13.365 1.213 13.149 1.338 12.877 1.338 c
-12.613 1.338 12.395 1.213 12.23 0.971 c
-12.072 0.736 11.994 0.416 11.994 0.015 c
-h
-16.331 -1.176 m
-17.081 1.823 l
-17.742 1.823 l
-16.566 -2.161 l
-16.081 -2.161 l
-14.89 1.823 l
-15.552 1.823 l
-h
-19.8 -2.234 m
-19.3 -2.234 18.918 -2.087 18.653 -1.793 c
-18.389 -1.499 18.257 -1.066 18.257 -0.484 c
-18.257 -0.014 l
-18.257 0.58 18.381 1.048 18.639 1.382 c
-18.903 1.723 19.264 1.897 19.726 1.897 c
-20.185 1.897 20.528 1.742 20.756 1.441 c
-20.991 1.147 21.112 0.684 21.122 0.059 c
-21.122 -0.367 l
-18.903 -0.367 l
-18.903 -0.455 l
-18.903 -0.889 18.98 -1.201 19.138 -1.396 c
-19.304 -1.583 19.535 -1.675 19.829 -1.675 c
-20.024 -1.675 20.197 -1.643 20.344 -1.573 c
-20.491 -1.496 20.627 -1.378 20.756 -1.22 c
-21.093 -1.631 l
-20.807 -2.036 20.377 -2.234 19.8 -2.234 c
-19.726 1.338 m
-19.451 1.338 19.248 1.243 19.123 1.058 c
-18.995 0.871 18.922 0.58 18.903 0.191 c
-20.476 0.191 l
-20.476 0.279 l
-20.455 0.661 20.388 0.93 20.27 1.088 c
-20.153 1.253 19.969 1.338 19.726 1.338 c
-25.562 -1.146 m
-25.562 -0.999 25.507 -0.878 25.4 -0.779 c
-25.29 -0.683 25.084 -0.565 24.783 -0.426 c
-24.438 -0.279 24.195 -0.158 24.048 -0.058 c
-23.901 0.048 23.79 0.166 23.724 0.294 c
-23.655 0.42 23.622 0.578 23.622 0.765 c
-23.622 1.088 23.74 1.357 23.975 1.573 c
-24.21 1.786 24.511 1.897 24.885 1.897 c
-25.268 1.897 25.577 1.783 25.812 1.559 c
-26.047 1.33 26.165 1.044 26.165 0.691 c
-25.518 0.691 l
-25.518 0.867 25.459 1.018 25.342 1.147 c
-25.224 1.272 25.07 1.338 24.885 1.338 c
-24.688 1.338 24.536 1.283 24.43 1.176 c
-24.32 1.077 24.268 0.945 24.268 0.779 c
-24.268 0.651 24.305 0.544 24.386 0.456 c
-24.463 0.375 24.654 0.272 24.96 0.148 c
-25.437 -0.04 25.768 -0.228 25.944 -0.411 c
-26.121 -0.588 26.209 -0.816 26.209 -1.087 c
-26.209 -1.44 26.084 -1.72 25.841 -1.926 c
-25.606 -2.131 25.29 -2.234 24.9 -2.234 c
-24.478 -2.234 24.14 -2.117 23.886 -1.881 c
-23.63 -1.639 23.504 -1.334 23.504 -0.97 c
-24.151 -0.97 l
-24.158 -1.198 24.228 -1.374 24.357 -1.499 c
-24.482 -1.616 24.665 -1.675 24.9 -1.675 c
-25.114 -1.675 25.276 -1.627 25.386 -1.529 c
-25.503 -1.433 25.562 -1.304 25.562 -1.146 c
-28.472 -2.234 m
-27.973 -2.234 27.59 -2.087 27.326 -1.793 c
-27.061 -1.499 26.929 -1.066 26.929 -0.484 c
-26.929 -0.014 l
-26.929 0.58 27.054 1.048 27.312 1.382 c
-27.576 1.723 27.936 1.897 28.399 1.897 c
-28.858 1.897 29.2 1.742 29.428 1.441 c
-29.663 1.147 29.785 0.684 29.795 0.059 c
-29.795 -0.367 l
-27.576 -0.367 l
-27.576 -0.455 l
-27.576 -0.889 27.653 -1.201 27.811 -1.396 c
-27.977 -1.583 28.208 -1.675 28.502 -1.675 c
-28.696 -1.675 28.869 -1.643 29.016 -1.573 c
-29.163 -1.496 29.299 -1.378 29.428 -1.22 c
-29.766 -1.631 l
-29.479 -2.036 29.049 -2.234 28.472 -2.234 c
-28.399 1.338 m
-28.123 1.338 27.921 1.243 27.796 1.058 c
-27.668 0.871 27.594 0.58 27.576 0.191 c
-29.149 0.191 l
-29.149 0.279 l
-29.126 0.661 29.06 0.93 28.943 1.088 c
-28.825 1.253 28.642 1.338 28.399 1.338 c
-31.28 -2.161 -0.646 5.644 re
-33.72 -2.234 m
-33.22 -2.234 32.838 -2.087 32.573 -1.793 c
-32.309 -1.499 32.176 -1.066 32.176 -0.484 c
-32.176 -0.014 l
-32.176 0.58 32.301 1.048 32.559 1.382 c
-32.823 1.723 33.184 1.897 33.647 1.897 c
-34.106 1.897 34.448 1.742 34.676 1.441 c
-34.911 1.147 35.032 0.684 35.043 0.059 c
-35.043 -0.367 l
-32.823 -0.367 l
-32.823 -0.455 l
-32.823 -0.889 32.901 -1.201 33.059 -1.396 c
-33.224 -1.583 33.456 -1.675 33.749 -1.675 c
-33.944 -1.675 34.117 -1.643 34.264 -1.573 c
-34.41 -1.496 34.547 -1.378 34.676 -1.22 c
-35.013 -1.631 l
-34.726 -2.036 34.297 -2.234 33.72 -2.234 c
-33.647 1.338 m
-33.371 1.338 33.169 1.243 33.043 1.058 c
-32.916 0.871 32.842 0.58 32.823 0.191 c
-34.396 0.191 l
-34.396 0.279 l
-34.374 0.661 34.308 0.93 34.19 1.088 c
-34.073 1.253 33.889 1.338 33.647 1.338 c
-37.203 -1.675 m
-37.417 -1.675 37.589 -1.613 37.718 -1.484 c
-37.854 -1.348 37.928 -1.157 37.938 -0.911 c
-38.556 -0.911 l
-38.534 -1.294 38.398 -1.613 38.144 -1.866 c
-37.887 -2.113 37.575 -2.234 37.203 -2.234 c
-36.711 -2.234 36.336 -2.084 36.072 -1.778 c
-35.815 -1.466 35.69 -0.999 35.69 -0.382 c
-35.69 0.059 l
-35.69 0.655 35.815 1.11 36.072 1.426 c
-36.336 1.738 36.711 1.897 37.203 1.897 c
-37.604 1.897 37.924 1.764 38.159 1.5 c
-38.402 1.243 38.534 0.897 38.556 0.456 c
-37.938 0.456 l
-37.917 0.75 37.843 0.971 37.718 1.118 c
-37.6 1.264 37.427 1.338 37.203 1.338 c
-36.91 1.338 36.693 1.239 36.557 1.044 c
-36.417 0.856 36.344 0.548 36.336 0.118 c
-36.336 -0.397 l
-36.336 -0.867 36.403 -1.201 36.542 -1.396 c
-36.689 -1.583 36.91 -1.675 37.203 -1.675 c
-40.158 2.778 m
-40.158 1.823 l
-40.76 1.823 l
-40.76 1.294 l
-40.158 1.294 l
-40.158 -1.176 l
-40.158 -1.334 40.18 -1.452 40.232 -1.529 c
-40.29 -1.61 40.378 -1.646 40.496 -1.646 c
-40.584 -1.646 40.673 -1.631 40.76 -1.602 c
-40.76 -2.161 l
-40.614 -2.208 40.459 -2.234 40.305 -2.234 c
-40.048 -2.234 39.854 -2.142 39.717 -1.955 c
-39.578 -1.771 39.511 -1.51 39.511 -1.176 c
-39.511 1.294 l
-38.909 1.294 l
-38.909 1.823 l
-39.511 1.823 l
-39.511 2.778 l
-h
-42.951 -2.234 m
-42.451 -2.234 42.069 -2.087 41.805 -1.793 c
-41.54 -1.499 41.408 -1.066 41.408 -0.484 c
-41.408 -0.014 l
-41.408 0.58 41.533 1.048 41.79 1.382 c
-42.054 1.723 42.414 1.897 42.877 1.897 c
-43.337 1.897 43.679 1.742 43.906 1.441 c
-44.141 1.147 44.263 0.684 44.274 0.059 c
-44.274 -0.367 l
-42.054 -0.367 l
-42.054 -0.455 l
-42.054 -0.889 42.131 -1.201 42.289 -1.396 c
-42.455 -1.583 42.686 -1.675 42.981 -1.675 c
-43.175 -1.675 43.347 -1.643 43.495 -1.573 c
-43.642 -1.496 43.777 -1.378 43.906 -1.22 c
-44.245 -1.631 l
-43.958 -2.036 43.528 -2.234 42.951 -2.234 c
-42.877 1.338 m
-42.601 1.338 42.4 1.243 42.275 1.058 c
-42.146 0.871 42.073 0.58 42.054 0.191 c
-43.627 0.191 l
-43.627 0.279 l
-43.605 0.661 43.539 0.93 43.422 1.088 c
-43.304 1.253 43.12 1.338 42.877 1.338 c
-44.92 0.015 m
-44.92 0.621 45.031 1.088 45.259 1.411 c
-45.494 1.735 45.821 1.897 46.244 1.897 c
-46.626 1.897 46.923 1.738 47.141 1.426 c
-47.141 3.484 l
-47.787 3.484 l
-47.787 -2.161 l
-47.199 -2.161 l
-47.155 -1.734 l
-46.95 -2.069 46.644 -2.234 46.244 -2.234 c
-45.832 -2.234 45.508 -2.08 45.273 -1.764 c
-45.038 -1.44 44.92 -0.985 44.92 -0.397 c
-h
-45.568 -0.367 m
-45.568 -0.808 45.63 -1.139 45.759 -1.352 c
-45.894 -1.558 46.115 -1.66 46.42 -1.66 c
-46.744 -1.66 46.982 -1.499 47.141 -1.176 c
-47.141 0.838 l
-46.971 1.151 46.732 1.309 46.42 1.309 c
-46.115 1.309 45.894 1.206 45.759 1 c
-45.63 0.794 45.568 0.47 45.568 0.03 c
-h
-53.387 -0.367 m
-53.387 -0.985 53.273 -1.452 53.049 -1.764 c
-52.833 -2.08 52.509 -2.234 52.079 -2.234 c
-51.657 -2.234 51.344 -2.054 51.139 -1.691 c
-51.109 -2.161 l
-50.506 -2.161 l
-50.506 3.484 l
-51.153 3.484 l
-51.153 1.382 l
-51.366 1.723 51.675 1.897 52.079 1.897 c
-52.509 1.897 52.833 1.738 53.049 1.426 c
-53.273 1.121 53.387 0.655 53.387 0.03 c
-h
-52.741 0.015 m
-52.741 0.485 52.671 0.816 52.535 1.014 c
-52.406 1.209 52.197 1.309 51.902 1.309 c
-51.569 1.309 51.318 1.125 51.153 0.765 c
-51.153 -1.117 l
-51.318 -1.481 51.572 -1.66 51.918 -1.66 c
-52.211 -1.66 52.421 -1.558 52.55 -1.352 c
-52.675 -1.146 52.741 -0.831 52.741 -0.397 c
-h
-55.872 1.206 m
-55.783 1.224 55.684 1.235 55.577 1.235 c
-55.243 1.235 55.008 1.051 54.871 0.691 c
-54.871 -2.161 l
-54.225 -2.161 l
-54.225 1.823 l
-54.857 1.823 l
-54.871 1.411 l
-55.048 1.735 55.291 1.897 55.607 1.897 c
-55.713 1.897 55.802 1.874 55.872 1.837 c
-h
-58.414 -2.161 m
-58.374 -2.072 58.348 -1.926 58.341 -1.72 c
-58.106 -2.065 57.811 -2.234 57.458 -2.234 c
-57.095 -2.234 56.812 -2.138 56.606 -1.94 c
-56.408 -1.734 56.313 -1.448 56.313 -1.072 c
-56.313 -0.673 56.448 -0.353 56.724 -0.118 c
-56.996 0.125 57.371 0.25 57.841 0.25 c
-58.326 0.25 l
-58.326 0.676 l
-58.326 0.912 58.271 1.077 58.164 1.176 c
-58.054 1.283 57.892 1.338 57.68 1.338 c
-57.481 1.338 57.319 1.279 57.194 1.162 c
-57.077 1.044 57.018 0.897 57.018 0.721 c
-56.371 0.721 l
-56.371 0.915 56.43 1.106 56.548 1.294 c
-56.673 1.478 56.834 1.625 57.032 1.735 c
-57.238 1.841 57.466 1.897 57.724 1.897 c
-58.124 1.897 58.429 1.794 58.634 1.588 c
-58.848 1.382 58.962 1.088 58.973 0.706 c
-58.973 -1.308 l
-58.973 -1.613 59.01 -1.878 59.091 -2.102 c
-59.091 -2.161 l
-h
-57.547 -1.646 m
-57.713 -1.646 57.863 -1.602 58.003 -1.514 c
-58.15 -1.425 58.256 -1.315 58.326 -1.176 c
-58.326 -0.235 l
-57.959 -0.235 l
-57.643 -0.235 57.4 -0.305 57.223 -0.44 c
-57.047 -0.569 56.959 -0.756 56.959 -0.999 c
-56.959 -1.227 57.003 -1.392 57.092 -1.499 c
-57.18 -1.598 57.331 -1.646 57.547 -1.646 c
-60.59 1.823 m
-60.604 1.382 l
-60.858 1.723 61.181 1.897 61.574 1.897 c
-62.28 1.897 62.636 1.426 62.648 0.485 c
-62.648 -2.161 l
-62.001 -2.161 l
-62.001 0.456 l
-62.001 0.769 61.946 0.989 61.84 1.118 c
-61.729 1.243 61.574 1.309 61.369 1.309 c
-61.211 1.309 61.064 1.253 60.928 1.147 c
-60.799 1.037 60.697 0.9 60.619 0.736 c
-60.619 -2.161 l
-59.972 -2.161 l
-59.972 1.823 l
-h
-64.999 -1.675 m
-65.213 -1.675 65.385 -1.613 65.514 -1.484 c
-65.65 -1.348 65.724 -1.157 65.734 -0.911 c
-66.352 -0.911 l
-66.33 -1.294 66.194 -1.613 65.94 -1.866 c
-65.683 -2.113 65.371 -2.234 64.999 -2.234 c
-64.508 -2.234 64.132 -2.084 63.868 -1.778 c
-63.611 -1.466 63.486 -0.999 63.486 -0.382 c
-63.486 0.059 l
-63.486 0.655 63.611 1.11 63.868 1.426 c
-64.132 1.738 64.508 1.897 64.999 1.897 c
-65.4 1.897 65.72 1.764 65.955 1.5 c
-66.198 1.243 66.33 0.897 66.352 0.456 c
-65.734 0.456 l
-65.713 0.75 65.639 0.971 65.514 1.118 c
-65.396 1.264 65.223 1.338 64.999 1.338 c
-64.706 1.338 64.489 1.239 64.353 1.044 c
-64.213 0.856 64.14 0.548 64.132 0.118 c
-64.132 -0.397 l
-64.132 -0.867 64.199 -1.201 64.338 -1.396 c
-64.485 -1.583 64.706 -1.675 64.999 -1.675 c
-67.748 1.411 m
-68.001 1.735 68.321 1.897 68.704 1.897 c
-69.41 1.897 69.766 1.426 69.777 0.485 c
-69.777 -2.161 l
-69.13 -2.161 l
-69.13 0.456 l
-69.13 0.769 69.075 0.989 68.969 1.118 c
-68.858 1.243 68.704 1.309 68.498 1.309 c
-68.34 1.309 68.193 1.253 68.057 1.147 c
-67.928 1.037 67.825 0.9 67.748 0.736 c
-67.748 -2.161 l
-67.101 -2.161 l
-67.101 3.484 l
-67.748 3.484 l
-h
-70.746 -3.233 m
-70.35 -2.969 l
-70.586 -2.645 70.707 -2.311 70.717 -1.969 c
-70.717 -1.352 l
-71.379 -1.352 l
-71.379 -1.881 l
-71.379 -2.138 71.313 -2.385 71.188 -2.631 c
-71.07 -2.873 70.923 -3.075 70.746 -3.233 c
-74.642 -2.161 -0.646 3.984 re
-74.686 2.866 m
-74.686 2.756 74.657 2.664 74.598 2.587 c
-74.54 2.517 74.444 2.484 74.318 2.484 c
-74.201 2.484 74.106 2.517 74.039 2.587 c
-73.981 2.664 73.952 2.756 73.952 2.866 c
-73.952 2.984 73.981 3.076 74.039 3.146 c
-74.106 3.223 74.201 3.263 74.318 3.263 c
-74.444 3.263 74.54 3.223 74.598 3.146 c
-74.657 3.065 74.686 2.973 74.686 2.866 c
-75.951 -2.161 m
-75.951 1.294 l
-75.421 1.294 l
-75.421 1.823 l
-75.951 1.823 l
-75.951 2.278 l
-75.951 2.679 76.046 2.992 76.244 3.219 c
-76.45 3.443 76.73 3.558 77.082 3.558 c
-77.218 3.558 77.35 3.535 77.479 3.499 c
-77.449 2.955 l
-77.35 2.973 77.252 2.984 77.156 2.984 c
-76.781 2.984 76.597 2.72 76.597 2.19 c
-76.597 1.823 l
-77.273 1.823 l
-77.273 1.294 l
-76.597 1.294 l
-76.597 -2.161 l
-h
-80.463 -2.161 -0.647 3.984 re
-80.507 2.866 m
-80.507 2.756 80.477 2.664 80.419 2.587 c
-80.36 2.517 80.265 2.484 80.14 2.484 c
-80.022 2.484 79.926 2.517 79.86 2.587 c
-79.801 2.664 79.772 2.756 79.772 2.866 c
-79.772 2.984 79.801 3.076 79.86 3.146 c
-79.926 3.223 80.022 3.263 80.14 3.263 c
-80.265 3.263 80.36 3.223 80.419 3.146 c
-80.477 3.065 80.507 2.973 80.507 2.866 c
-82.33 2.778 m
-82.33 1.823 l
-82.933 1.823 l
-82.933 1.294 l
-82.33 1.294 l
-82.33 -1.176 l
-82.33 -1.334 82.351 -1.452 82.403 -1.529 c
-82.462 -1.61 82.55 -1.646 82.667 -1.646 c
-82.756 -1.646 82.844 -1.631 82.933 -1.602 c
-82.933 -2.161 l
-82.785 -2.208 82.631 -2.234 82.477 -2.234 c
-82.22 -2.234 82.025 -2.142 81.889 -1.955 c
-81.749 -1.771 81.683 -1.51 81.683 -1.176 c
-81.683 1.294 l
-81.081 1.294 l
-81.081 1.823 l
-81.683 1.823 l
-81.683 2.778 l
-h
-86.122 -2.161 -0.646 3.984 re
-86.166 2.866 m
-86.166 2.756 86.137 2.664 86.078 2.587 c
-86.019 2.517 85.923 2.484 85.798 2.484 c
-85.681 2.484 85.586 2.517 85.52 2.587 c
-85.461 2.664 85.431 2.756 85.431 2.866 c
-85.431 2.984 85.461 3.076 85.52 3.146 c
-85.586 3.223 85.681 3.263 85.798 3.263 c
-85.923 3.263 86.019 3.223 86.078 3.146 c
-86.137 3.065 86.166 2.973 86.166 2.866 c
-89.077 -1.146 m
-89.077 -0.999 89.021 -0.878 88.915 -0.779 c
-88.805 -0.683 88.599 -0.565 88.298 -0.426 c
-87.953 -0.279 87.71 -0.158 87.562 -0.058 c
-87.415 0.048 87.305 0.166 87.24 0.294 c
-87.17 0.42 87.136 0.578 87.136 0.765 c
-87.136 1.088 87.254 1.357 87.489 1.573 c
-87.724 1.786 88.026 1.897 88.4 1.897 c
-88.782 1.897 89.091 1.783 89.326 1.559 c
-89.561 1.33 89.679 1.044 89.679 0.691 c
-89.033 0.691 l
-89.033 0.867 88.973 1.018 88.856 1.147 c
-88.738 1.272 88.584 1.338 88.4 1.338 c
-88.202 1.338 88.051 1.283 87.945 1.176 c
-87.835 1.077 87.783 0.945 87.783 0.779 c
-87.783 0.651 87.82 0.544 87.901 0.456 c
-87.978 0.375 88.169 0.272 88.474 0.148 c
-88.952 -0.04 89.283 -0.228 89.459 -0.411 c
-89.636 -0.588 89.723 -0.816 89.723 -1.087 c
-89.723 -1.44 89.599 -1.72 89.356 -1.926 c
-89.121 -2.131 88.805 -2.234 88.415 -2.234 c
-87.992 -2.234 87.654 -2.117 87.401 -1.881 c
-87.143 -1.639 87.018 -1.334 87.018 -0.97 c
-87.666 -0.97 l
-87.673 -1.198 87.743 -1.374 87.872 -1.499 c
-87.996 -1.616 88.18 -1.675 88.415 -1.675 c
-88.628 -1.675 88.79 -1.627 88.9 -1.529 c
-89.017 -1.433 89.077 -1.304 89.077 -1.146 c
-94.324 -2.161 m
-94.284 -2.072 94.258 -1.926 94.251 -1.72 c
-94.016 -2.065 93.721 -2.234 93.368 -2.234 c
-93.005 -2.234 92.722 -2.138 92.516 -1.94 c
-92.318 -1.734 92.223 -1.448 92.223 -1.072 c
-92.223 -0.673 92.358 -0.353 92.634 -0.118 c
-92.906 0.125 93.281 0.25 93.751 0.25 c
-94.236 0.25 l
-94.236 0.676 l
-94.236 0.912 94.181 1.077 94.074 1.176 c
-93.964 1.283 93.802 1.338 93.59 1.338 c
-93.391 1.338 93.229 1.279 93.104 1.162 c
-92.986 1.044 92.928 0.897 92.928 0.721 c
-92.281 0.721 l
-92.281 0.915 92.34 1.106 92.458 1.294 c
-92.582 1.478 92.744 1.625 92.942 1.735 c
-93.148 1.841 93.376 1.897 93.634 1.897 c
-94.034 1.897 94.339 1.794 94.544 1.588 c
-94.758 1.382 94.872 1.088 94.883 0.706 c
-94.883 -1.308 l
-94.883 -1.613 94.92 -1.878 95.001 -2.102 c
-95.001 -2.161 l
-h
-93.457 -1.646 m
-93.622 -1.646 93.773 -1.602 93.912 -1.514 c
-94.06 -1.425 94.166 -1.315 94.236 -1.176 c
-94.236 -0.235 l
-93.869 -0.235 l
-93.553 -0.235 93.31 -0.305 93.133 -0.44 c
-92.957 -0.569 92.869 -0.756 92.869 -0.999 c
-92.869 -1.227 92.913 -1.392 93.002 -1.499 c
-93.089 -1.598 93.24 -1.646 93.457 -1.646 c
-96.588 -2.161 -0.646 5.644 re
-99.248 1.206 m
-99.161 1.224 99.061 1.235 98.955 1.235 c
-98.62 1.235 98.384 1.051 98.249 0.691 c
-98.249 -2.161 l
-97.602 -2.161 l
-97.602 1.823 l
-98.234 1.823 l
-98.249 1.411 l
-98.425 1.735 98.668 1.897 98.984 1.897 c
-99.09 1.897 99.178 1.874 99.248 1.837 c
-h
-101.247 -2.234 m
-100.748 -2.234 100.366 -2.087 100.101 -1.793 c
-99.836 -1.499 99.704 -1.066 99.704 -0.484 c
-99.704 -0.014 l
-99.704 0.58 99.829 1.048 100.086 1.382 c
-100.351 1.723 100.711 1.897 101.174 1.897 c
-101.633 1.897 101.975 1.742 102.203 1.441 c
-102.438 1.147 102.559 0.684 102.571 0.059 c
-102.571 -0.367 l
-100.351 -0.367 l
-100.351 -0.455 l
-100.351 -0.889 100.428 -1.201 100.586 -1.396 c
-100.751 -1.583 100.983 -1.675 101.277 -1.675 c
-101.472 -1.675 101.644 -1.643 101.791 -1.573 c
-101.939 -1.496 102.074 -1.378 102.203 -1.22 c
-102.541 -1.631 l
-102.255 -2.036 101.825 -2.234 101.247 -2.234 c
-101.174 1.338 m
-100.898 1.338 100.696 1.243 100.572 1.058 c
-100.443 0.871 100.369 0.58 100.351 0.191 c
-101.923 0.191 l
-101.923 0.279 l
-101.902 0.661 101.835 0.93 101.717 1.088 c
-101.6 1.253 101.416 1.338 101.174 1.338 c
-105.393 -2.161 m
-105.352 -2.072 105.326 -1.926 105.319 -1.72 c
-105.083 -2.065 104.79 -2.234 104.437 -2.234 c
-104.073 -2.234 103.79 -2.138 103.585 -1.94 c
-103.386 -1.734 103.29 -1.448 103.29 -1.072 c
-103.29 -0.673 103.427 -0.353 103.702 -0.118 c
-103.974 0.125 104.349 0.25 104.819 0.25 c
-105.305 0.25 l
-105.305 0.676 l
-105.305 0.912 105.249 1.077 105.143 1.176 c
-105.033 1.283 104.871 1.338 104.657 1.338 c
-104.459 1.338 104.298 1.279 104.173 1.162 c
-104.055 1.044 103.996 0.897 103.996 0.721 c
-103.35 0.721 l
-103.35 0.915 103.408 1.106 103.526 1.294 c
-103.651 1.478 103.813 1.625 104.011 1.735 c
-104.217 1.841 104.445 1.897 104.701 1.897 c
-105.102 1.897 105.407 1.794 105.613 1.588 c
-105.827 1.382 105.94 1.088 105.951 0.706 c
-105.951 -1.308 l
-105.951 -1.613 105.987 -1.878 106.068 -2.102 c
-106.068 -2.161 l
-h
-104.526 -1.646 m
-104.69 -1.646 104.842 -1.602 104.981 -1.514 c
-105.128 -1.425 105.235 -1.315 105.305 -1.176 c
-105.305 -0.235 l
-104.937 -0.235 l
-104.621 -0.235 104.378 -0.305 104.202 -0.44 c
-104.025 -0.569 103.938 -0.756 103.938 -0.999 c
-103.938 -1.227 103.982 -1.392 104.069 -1.499 c
-104.158 -1.598 104.308 -1.646 104.526 -1.646 c
-106.818 0.015 m
-106.818 0.621 106.928 1.088 107.157 1.411 c
-107.392 1.735 107.718 1.897 108.141 1.897 c
-108.524 1.897 108.821 1.738 109.038 1.426 c
-109.038 3.484 l
-109.685 3.484 l
-109.685 -2.161 l
-109.097 -2.161 l
-109.052 -1.734 l
-108.846 -2.069 108.542 -2.234 108.141 -2.234 c
-107.73 -2.234 107.406 -2.08 107.171 -1.764 c
-106.936 -1.44 106.818 -0.985 106.818 -0.397 c
-h
-107.465 -0.367 m
-107.465 -0.808 107.527 -1.139 107.656 -1.352 c
-107.792 -1.558 108.013 -1.66 108.318 -1.66 c
-108.641 -1.66 108.88 -1.499 109.038 -1.176 c
-109.038 0.838 l
-108.869 1.151 108.63 1.309 108.318 1.309 c
-108.013 1.309 107.792 1.206 107.656 1 c
-107.527 0.794 107.465 0.47 107.465 0.03 c
-h
-111.772 -1.072 m
-112.492 1.823 l
-113.183 1.823 l
-111.89 -2.719 l
-111.79 -3.061 111.647 -3.322 111.464 -3.498 c
-111.287 -3.675 111.084 -3.763 110.86 -3.763 c
-110.772 -3.763 110.658 -3.74 110.523 -3.704 c
-110.523 -3.16 l
-110.67 -3.175 l
-110.853 -3.175 111.001 -3.131 111.111 -3.042 c
-111.217 -2.954 111.305 -2.796 111.375 -2.572 c
-111.493 -2.131 l
-110.332 1.823 l
-111.037 1.823 l
-h
-116.152 1.823 m
-116.167 1.455 l
-116.41 1.75 116.729 1.897 117.122 1.897 c
-117.563 1.897 117.872 1.698 118.049 1.309 c
-118.302 1.698 118.651 1.897 119.092 1.897 c
-119.827 1.897 120.202 1.434 120.224 0.515 c
-120.224 -2.161 l
-119.577 -2.161 l
-119.577 0.456 l
-119.577 0.75 119.522 0.963 119.416 1.103 c
-119.316 1.239 119.144 1.309 118.901 1.309 c
-118.703 1.309 118.541 1.228 118.416 1.073 c
-118.298 0.927 118.228 0.736 118.211 0.5 c
-118.211 -2.161 l
-117.548 -2.161 l
-117.548 0.485 l
-117.548 1.033 117.328 1.309 116.887 1.309 c
-116.553 1.309 116.318 1.147 116.181 0.823 c
-116.181 -2.161 l
-115.535 -2.161 l
-115.535 1.823 l
-h
-122.62 -2.234 m
-122.12 -2.234 121.738 -2.087 121.473 -1.793 c
-121.209 -1.499 121.076 -1.066 121.076 -0.484 c
-121.076 -0.014 l
-121.076 0.58 121.201 1.048 121.459 1.382 c
-121.723 1.723 122.084 1.897 122.546 1.897 c
-123.005 1.897 123.348 1.742 123.576 1.441 c
-123.811 1.147 123.932 0.684 123.942 0.059 c
-123.942 -0.367 l
-121.723 -0.367 l
-121.723 -0.455 l
-121.723 -0.889 121.8 -1.201 121.958 -1.396 c
-122.124 -1.583 122.355 -1.675 122.649 -1.675 c
-122.844 -1.675 123.017 -1.643 123.164 -1.573 c
-123.31 -1.496 123.447 -1.378 123.576 -1.22 c
-123.913 -1.631 l
-123.626 -2.036 123.196 -2.234 122.62 -2.234 c
-122.546 1.338 m
-122.271 1.338 122.068 1.243 121.943 1.058 c
-121.815 0.871 121.742 0.58 121.723 0.191 c
-123.296 0.191 l
-123.296 0.279 l
-123.274 0.661 123.208 0.93 123.09 1.088 c
-122.973 1.253 122.789 1.338 122.546 1.338 c
-126.368 1.206 m
-126.28 1.224 126.18 1.235 126.074 1.235 c
-125.74 1.235 125.505 1.051 125.369 0.691 c
-125.369 -2.161 l
-124.721 -2.161 l
-124.721 1.823 l
-125.354 1.823 l
-125.369 1.411 l
-125.544 1.735 125.787 1.897 126.103 1.897 c
-126.211 1.897 126.298 1.874 126.368 1.837 c
-h
-126.809 0.015 m
-126.809 0.632 126.919 1.095 127.148 1.411 c
-127.371 1.735 127.705 1.897 128.147 1.897 c
-128.547 1.897 128.852 1.72 129.058 1.367 c
-129.102 1.823 l
-129.69 1.823 l
-129.69 -2.204 l
-129.69 -2.693 129.561 -3.072 129.307 -3.337 c
-129.051 -3.601 128.698 -3.733 128.249 -3.733 c
-128.052 -3.733 127.831 -3.682 127.588 -3.586 c
-127.342 -3.487 127.162 -3.366 127.044 -3.219 c
-127.308 -2.778 l
-127.574 -3.042 127.871 -3.175 128.206 -3.175 c
-128.742 -3.175 129.018 -2.881 129.029 -2.293 c
-129.029 -1.764 l
-128.823 -2.08 128.522 -2.234 128.132 -2.234 c
-127.72 -2.234 127.397 -2.084 127.162 -1.778 c
-126.934 -1.466 126.816 -1.014 126.809 -0.426 c
-h
-127.47 -0.367 m
-127.47 -0.808 127.533 -1.139 127.661 -1.352 c
-127.786 -1.558 128.004 -1.66 128.308 -1.66 c
-128.632 -1.66 128.871 -1.496 129.029 -1.161 c
-129.029 0.823 l
-128.86 1.147 128.621 1.309 128.308 1.309 c
-128.014 1.309 127.798 1.206 127.661 1 c
-127.533 0.794 127.47 0.47 127.47 0.03 c
-h
-132.071 -2.234 m
-131.572 -2.234 131.189 -2.087 130.925 -1.793 c
-130.66 -1.499 130.528 -1.066 130.528 -0.484 c
-130.528 -0.014 l
-130.528 0.58 130.653 1.048 130.911 1.382 c
-131.175 1.723 131.535 1.897 131.998 1.897 c
-132.457 1.897 132.799 1.742 133.027 1.441 c
-133.262 1.147 133.383 0.684 133.394 0.059 c
-133.394 -0.367 l
-131.175 -0.367 l
-131.175 -0.455 l
-131.175 -0.889 131.252 -1.201 131.41 -1.396 c
-131.576 -1.583 131.807 -1.675 132.101 -1.675 c
-132.295 -1.675 132.468 -1.643 132.615 -1.573 c
-132.762 -1.496 132.898 -1.378 133.027 -1.22 c
-133.365 -1.631 l
-133.078 -2.036 132.648 -2.234 132.071 -2.234 c
-131.998 1.338 m
-131.722 1.338 131.52 1.243 131.395 1.058 c
-131.266 0.871 131.193 0.58 131.175 0.191 c
-132.748 0.191 l
-132.748 0.279 l
-132.725 0.661 132.659 0.93 132.542 1.088 c
-132.424 1.253 132.241 1.338 131.998 1.338 c
-134.041 0.015 m
-134.041 0.621 134.151 1.088 134.379 1.411 c
-134.614 1.735 134.942 1.897 135.364 1.897 c
-135.746 1.897 136.044 1.738 136.26 1.426 c
-136.26 3.484 l
-136.908 3.484 l
-136.908 -2.161 l
-136.32 -2.161 l
-136.276 -1.734 l
-136.07 -2.069 135.765 -2.234 135.364 -2.234 c
-134.952 -2.234 134.629 -2.08 134.394 -1.764 c
-134.159 -1.44 134.041 -0.985 134.041 -0.397 c
-h
-134.688 -0.367 m
-134.688 -0.808 134.751 -1.139 134.879 -1.352 c
-135.015 -1.558 135.235 -1.66 135.54 -1.66 c
-135.863 -1.66 136.102 -1.499 136.26 -1.176 c
-136.26 0.838 l
-136.091 1.151 135.853 1.309 135.54 1.309 c
-135.235 1.309 135.015 1.206 134.879 1 c
-134.751 0.794 134.688 0.47 134.688 0.03 c
-h
-140.332 -2.161 -0.646 3.984 re
-140.376 2.866 m
-140.376 2.756 140.347 2.664 140.288 2.587 c
-140.229 2.517 140.133 2.484 140.008 2.484 c
-139.891 2.484 139.796 2.517 139.73 2.587 c
-139.671 2.664 139.642 2.756 139.642 2.866 c
-139.642 2.984 139.671 3.076 139.73 3.146 c
-139.796 3.223 139.891 3.263 140.008 3.263 c
-140.133 3.263 140.229 3.223 140.288 3.146 c
-140.347 3.065 140.376 2.973 140.376 2.866 c
-141.964 1.823 m
-141.978 1.382 l
-142.232 1.723 142.555 1.897 142.948 1.897 c
-143.654 1.897 144.01 1.426 144.022 0.485 c
-144.022 -2.161 l
-143.375 -2.161 l
-143.375 0.456 l
-143.375 0.769 143.32 0.989 143.214 1.118 c
-143.103 1.243 142.948 1.309 142.743 1.309 c
-142.585 1.309 142.438 1.253 142.302 1.147 c
-142.173 1.037 142.07 0.9 141.993 0.736 c
-141.993 -2.161 l
-141.346 -2.161 l
-141.346 1.823 l
-h
-145.845 2.778 m
-145.845 1.823 l
-146.447 1.823 l
-146.447 1.294 l
-145.845 1.294 l
-145.845 -1.176 l
-145.845 -1.334 145.866 -1.452 145.918 -1.529 c
-145.976 -1.61 146.065 -1.646 146.182 -1.646 c
-146.271 -1.646 146.358 -1.631 146.447 -1.602 c
-146.447 -2.161 l
-146.3 -2.208 146.146 -2.234 145.992 -2.234 c
-145.734 -2.234 145.539 -2.142 145.404 -1.955 c
-145.263 -1.771 145.198 -1.51 145.198 -1.176 c
-145.198 1.294 l
-144.594 1.294 l
-144.594 1.823 l
-145.198 1.823 l
-145.198 2.778 l
-h
-147.006 0.015 m
-147.006 0.592 147.142 1.048 147.417 1.382 c
-147.7 1.723 148.071 1.897 148.534 1.897 c
-148.993 1.897 149.361 1.727 149.637 1.397 c
-149.92 1.073 150.067 0.625 150.078 0.059 c
-150.078 -0.367 l
-150.078 -0.937 149.934 -1.392 149.651 -1.734 c
-149.375 -2.069 149.008 -2.234 148.549 -2.234 c
-148.086 -2.234 147.715 -2.072 147.432 -1.749 c
-147.156 -1.419 147.013 -0.977 147.006 -0.426 c
-h
-147.652 -0.367 m
-147.652 -0.771 147.729 -1.087 147.887 -1.323 c
-148.053 -1.558 148.274 -1.675 148.549 -1.675 c
-149.115 -1.675 149.409 -1.263 149.431 -0.44 c
-149.431 0.015 l
-149.431 0.416 149.346 0.736 149.181 0.971 c
-149.023 1.213 148.806 1.338 148.534 1.338 c
-148.27 1.338 148.053 1.213 147.887 0.971 c
-147.729 0.736 147.652 0.416 147.652 0.015 c
-h
-154.678 -2.161 m
-154.638 -2.072 154.612 -1.926 154.605 -1.72 c
-154.37 -2.065 154.076 -2.234 153.723 -2.234 c
-153.359 -2.234 153.076 -2.138 152.87 -1.94 c
-152.672 -1.734 152.577 -1.448 152.577 -1.072 c
-152.577 -0.673 152.712 -0.353 152.988 -0.118 c
-153.26 0.125 153.635 0.25 154.105 0.25 c
-154.59 0.25 l
-154.59 0.676 l
-154.59 0.912 154.535 1.077 154.429 1.176 c
-154.318 1.283 154.157 1.338 153.944 1.338 c
-153.745 1.338 153.583 1.279 153.458 1.162 c
-153.341 1.044 153.282 0.897 153.282 0.721 c
-152.635 0.721 l
-152.635 0.915 152.694 1.106 152.812 1.294 c
-152.937 1.478 153.099 1.625 153.296 1.735 c
-153.502 1.841 153.73 1.897 153.988 1.897 c
-154.389 1.897 154.693 1.794 154.899 1.588 c
-155.112 1.382 155.226 1.088 155.237 0.706 c
-155.237 -1.308 l
-155.237 -1.613 155.274 -1.878 155.355 -2.102 c
-155.355 -2.161 l
-h
-153.811 -1.646 m
-153.977 -1.646 154.127 -1.602 154.267 -1.514 c
-154.414 -1.425 154.52 -1.315 154.59 -1.176 c
-154.59 -0.235 l
-154.223 -0.235 l
-153.907 -0.235 153.664 -0.305 153.488 -0.44 c
-153.311 -0.569 153.223 -0.756 153.223 -0.999 c
-153.223 -1.227 153.267 -1.392 153.356 -1.499 c
-153.444 -1.598 153.595 -1.646 153.811 -1.646 c
-156.854 1.823 m
-156.868 1.382 l
-157.122 1.723 157.446 1.897 157.839 1.897 c
-158.545 1.897 158.901 1.426 158.912 0.485 c
-158.912 -2.161 l
-158.265 -2.161 l
-158.265 0.456 l
-158.265 0.769 158.21 0.989 158.104 1.118 c
-157.993 1.243 157.839 1.309 157.633 1.309 c
-157.475 1.309 157.328 1.253 157.192 1.147 c
-157.063 1.037 156.961 0.9 156.883 0.736 c
-156.883 -2.161 l
-156.236 -2.161 l
-156.236 1.823 l
-h
-160.97 -1.072 m
-161.69 1.823 l
-162.381 1.823 l
-161.088 -2.719 l
-160.988 -3.061 160.845 -3.322 160.661 -3.498 c
-160.484 -3.675 160.282 -3.763 160.058 -3.763 c
-159.97 -3.763 159.856 -3.74 159.721 -3.704 c
-159.721 -3.16 l
-159.867 -3.175 l
-160.051 -3.175 160.198 -3.131 160.309 -3.042 c
-160.415 -2.954 160.503 -2.796 160.573 -2.572 c
-160.691 -2.131 l
-159.529 1.823 l
-160.234 1.823 l
-h
-164.6 0.015 m
-164.6 0.592 164.737 1.048 165.012 1.382 c
-165.295 1.723 165.666 1.897 166.129 1.897 c
-166.588 1.897 166.956 1.727 167.232 1.397 c
-167.515 1.073 167.661 0.625 167.673 0.059 c
-167.673 -0.367 l
-167.673 -0.937 167.529 -1.392 167.247 -1.734 c
-166.971 -2.069 166.603 -2.234 166.144 -2.234 c
-165.681 -2.234 165.31 -2.072 165.026 -1.749 c
-164.751 -1.419 164.608 -0.977 164.6 -0.426 c
-h
-165.247 -0.367 m
-165.247 -0.771 165.325 -1.087 165.483 -1.323 c
-165.647 -1.558 165.868 -1.675 166.144 -1.675 c
-166.709 -1.675 167.004 -1.263 167.025 -0.44 c
-167.025 0.015 l
-167.025 0.416 166.941 0.736 166.776 0.971 c
-166.618 1.213 166.401 1.338 166.129 1.338 c
-165.865 1.338 165.647 1.213 165.483 0.971 c
-165.325 0.736 165.247 0.416 165.247 0.015 c
-h
-169.363 2.778 m
-169.363 1.823 l
-169.965 1.823 l
-169.965 1.294 l
-169.363 1.294 l
-169.363 -1.176 l
-169.363 -1.334 169.385 -1.452 169.437 -1.529 c
-169.495 -1.61 169.583 -1.646 169.701 -1.646 c
-169.789 -1.646 169.877 -1.631 169.965 -1.602 c
-169.965 -2.161 l
-169.819 -2.208 169.664 -2.234 169.51 -2.234 c
-169.252 -2.234 169.057 -2.142 168.922 -1.955 c
-168.782 -1.771 168.716 -1.51 168.716 -1.176 c
-168.716 1.294 l
-168.113 1.294 l
-168.113 1.823 l
-168.716 1.823 l
-168.716 2.778 l
-h
-171.376 1.411 m
-171.63 1.735 171.95 1.897 172.332 1.897 c
-173.038 1.897 173.394 1.426 173.405 0.485 c
-173.405 -2.161 l
-172.758 -2.161 l
-172.758 0.456 l
-172.758 0.769 172.703 0.989 172.596 1.118 c
-172.487 1.243 172.332 1.309 172.126 1.309 c
-171.968 1.309 171.821 1.253 171.685 1.147 c
-171.557 1.037 171.454 0.9 171.376 0.736 c
-171.376 -2.161 l
-170.73 -2.161 l
-170.73 3.484 l
-171.376 3.484 l
-h
-175.787 -2.234 m
-175.286 -2.234 174.904 -2.087 174.64 -1.793 c
-174.375 -1.499 174.243 -1.066 174.243 -0.484 c
-174.243 -0.014 l
-174.243 0.58 174.368 1.048 174.625 1.382 c
-174.89 1.723 175.249 1.897 175.713 1.897 c
-176.172 1.897 176.514 1.742 176.741 1.441 c
-176.977 1.147 177.098 0.684 177.109 0.059 c
-177.109 -0.367 l
-174.89 -0.367 l
-174.89 -0.455 l
-174.89 -0.889 174.967 -1.201 175.125 -1.396 c
-175.29 -1.583 175.521 -1.675 175.816 -1.675 c
-176.01 -1.675 176.184 -1.643 176.33 -1.573 c
-176.477 -1.496 176.613 -1.378 176.741 -1.22 c
-177.08 -1.631 l
-176.793 -2.036 176.363 -2.234 175.787 -2.234 c
-175.713 1.338 m
-175.438 1.338 175.235 1.243 175.11 1.058 c
-174.981 0.871 174.908 0.58 174.89 0.191 c
-176.462 0.191 l
-176.462 0.279 l
-176.44 0.661 176.375 0.93 176.257 1.088 c
-176.139 1.253 175.955 1.338 175.713 1.338 c
-179.534 1.206 m
-179.446 1.224 179.347 1.235 179.241 1.235 c
-178.906 1.235 178.671 1.051 178.535 0.691 c
-178.535 -2.161 l
-177.888 -2.161 l
-177.888 1.823 l
-178.52 1.823 l
-178.535 1.411 l
-178.711 1.735 178.954 1.897 179.27 1.897 c
-179.376 1.897 179.465 1.874 179.534 1.837 c
-h
-179.77 -1.808 m
-179.77 -1.691 179.803 -1.595 179.872 -1.514 c
-179.939 -1.437 180.042 -1.396 180.182 -1.396 c
-180.328 -1.396 180.435 -1.437 180.504 -1.514 c
-180.582 -1.595 180.622 -1.691 180.622 -1.808 c
-180.622 -1.918 180.582 -2.009 180.504 -2.087 c
-180.435 -2.165 180.328 -2.204 180.182 -2.204 c
-180.042 -2.204 179.939 -2.165 179.872 -2.087 c
-179.803 -2.009 179.77 -1.918 179.77 -1.808 c
-f
-Q
-730.676 99.115 -1.794 0.867 re
-731.587 97.247 m
-731.587 102.598 l
-733.013 102.598 l
-733.63 102.598 734.123 102.396 734.497 101.995 c
-734.869 101.602 735.06 101.062 735.071 100.379 c
-735.071 99.512 l
-735.071 98.806 734.883 98.251 734.512 97.85 c
-734.137 97.446 733.63 97.247 732.984 97.247 c
-h
-732.675 101.702 m
-732.675 98.145 l
-732.998 98.145 l
-733.358 98.145 733.616 98.236 733.763 98.423 c
-733.909 98.618 733.983 98.945 733.983 99.408 c
-733.983 100.349 l
-733.983 100.849 733.913 101.195 733.778 101.393 c
-733.637 101.588 733.402 101.69 733.072 101.702 c
-h
-f
-738.32 97.247 -0.647 3.984 re
-738.364 102.275 m
-738.364 102.164 738.334 102.072 738.275 101.995 c
-738.216 101.926 738.121 101.893 737.996 101.893 c
-737.878 101.893 737.782 101.926 737.716 101.995 c
-737.658 102.072 737.628 102.164 737.628 102.275 c
-737.628 102.392 737.658 102.484 737.716 102.554 c
-737.782 102.631 737.878 102.672 737.996 102.672 c
-738.121 102.672 738.216 102.631 738.275 102.554 c
-738.334 102.473 738.364 102.381 738.364 102.275 c
-739.951 101.231 m
-739.966 100.79 l
-740.219 101.132 740.542 101.305 740.936 101.305 c
-741.641 101.305 741.998 100.834 742.009 99.894 c
-742.009 97.247 l
-741.362 97.247 l
-741.362 99.864 l
-741.362 100.177 741.307 100.397 741.2 100.526 c
-741.09 100.651 740.936 100.717 740.73 100.717 c
-740.572 100.717 740.425 100.661 740.288 100.555 c
-740.161 100.445 740.057 100.308 739.98 100.144 c
-739.98 97.247 l
-739.334 97.247 l
-739.334 101.231 l
-h
-744.919 98.262 m
-744.919 98.409 744.864 98.53 744.757 98.629 c
-744.647 98.725 744.442 98.843 744.14 98.982 c
-743.795 99.129 743.552 99.25 743.405 99.35 c
-743.258 99.456 743.148 99.574 743.081 99.703 c
-743.012 99.828 742.979 99.986 742.979 100.173 c
-742.979 100.497 743.097 100.765 743.332 100.981 c
-743.567 101.195 743.868 101.305 744.243 101.305 c
-744.625 101.305 744.934 101.191 745.169 100.967 c
-745.404 100.738 745.522 100.452 745.522 100.1 c
-744.875 100.1 l
-744.875 100.275 744.816 100.426 744.699 100.555 c
-744.581 100.68 744.427 100.746 744.243 100.746 c
-744.045 100.746 743.894 100.691 743.787 100.584 c
-743.677 100.485 743.625 100.353 743.625 100.187 c
-743.625 100.059 743.662 99.952 743.743 99.864 c
-743.82 99.783 744.011 99.68 744.317 99.556 c
-744.795 99.368 745.125 99.18 745.302 98.997 c
-745.478 98.82 745.566 98.592 745.566 98.321 c
-745.566 97.968 745.441 97.688 745.198 97.482 c
-744.963 97.277 744.647 97.174 744.257 97.174 c
-743.835 97.174 743.497 97.291 743.243 97.527 c
-742.987 97.769 742.861 98.074 742.861 98.438 c
-743.508 98.438 l
-743.515 98.211 743.585 98.034 743.714 97.91 c
-743.839 97.792 744.022 97.733 744.257 97.733 c
-744.471 97.733 744.633 97.781 744.743 97.879 c
-744.86 97.975 744.919 98.104 744.919 98.262 c
-747.257 102.186 m
-747.257 101.231 l
-747.859 101.231 l
-747.859 100.702 l
-747.257 100.702 l
-747.257 98.232 l
-747.257 98.074 747.278 97.957 747.33 97.879 c
-747.388 97.799 747.477 97.762 747.594 97.762 c
-747.683 97.762 747.771 97.777 747.859 97.806 c
-747.859 97.247 l
-747.712 97.2 747.557 97.174 747.403 97.174 c
-747.146 97.174 746.952 97.266 746.815 97.453 c
-746.676 97.637 746.609 97.898 746.609 98.232 c
-746.609 100.702 l
-746.007 100.702 l
-746.007 101.231 l
-746.609 101.231 l
-746.609 102.186 l
-h
-750.049 97.174 m
-749.549 97.174 749.167 97.322 748.903 97.615 c
-748.638 97.91 748.506 98.342 748.506 98.924 c
-748.506 99.394 l
-748.506 99.989 748.631 100.456 748.888 100.79 c
-749.152 101.132 749.512 101.305 749.975 101.305 c
-750.435 101.305 750.777 101.15 751.004 100.849 c
-751.24 100.555 751.361 100.092 751.372 99.467 c
-751.372 99.041 l
-749.152 99.041 l
-749.152 98.953 l
-749.152 98.519 749.229 98.207 749.387 98.012 c
-749.553 97.825 749.784 97.733 750.079 97.733 c
-750.273 97.733 750.446 97.766 750.593 97.835 c
-750.74 97.912 750.876 98.03 751.004 98.188 c
-751.342 97.777 l
-751.056 97.372 750.626 97.174 750.049 97.174 c
-749.975 100.746 m
-749.7 100.746 749.498 100.651 749.373 100.466 c
-749.244 100.279 749.171 99.989 749.152 99.599 c
-750.725 99.599 l
-750.725 99.688 l
-750.703 100.069 750.637 100.339 750.519 100.497 c
-750.401 100.661 750.218 100.746 749.975 100.746 c
-754.194 97.247 m
-754.154 97.336 754.128 97.482 754.121 97.688 c
-753.886 97.343 753.591 97.174 753.239 97.174 c
-752.875 97.174 752.592 97.27 752.386 97.468 c
-752.188 97.674 752.092 97.96 752.092 98.336 c
-752.092 98.735 752.228 99.055 752.504 99.291 c
-752.776 99.533 753.15 99.658 753.621 99.658 c
-754.106 99.658 l
-754.106 100.085 l
-754.106 100.32 754.051 100.485 753.944 100.584 c
-753.834 100.691 753.672 100.746 753.459 100.746 c
-753.261 100.746 753.099 100.688 752.974 100.57 c
-752.857 100.452 752.797 100.305 752.797 100.129 c
-752.151 100.129 l
-752.151 100.323 752.209 100.514 752.327 100.702 c
-752.452 100.886 752.614 101.033 752.813 101.143 c
-753.019 101.249 753.246 101.305 753.503 101.305 c
-753.904 101.305 754.209 101.202 754.415 100.996 c
-754.628 100.79 754.742 100.497 754.752 100.114 c
-754.752 98.1 l
-754.752 97.795 754.79 97.53 754.87 97.307 c
-754.87 97.247 l
-h
-753.327 97.762 m
-753.493 97.762 753.643 97.806 753.782 97.894 c
-753.929 97.983 754.036 98.093 754.106 98.232 c
-754.106 99.173 l
-753.738 99.173 l
-753.422 99.173 753.18 99.103 753.003 98.968 c
-752.828 98.839 752.739 98.652 752.739 98.409 c
-752.739 98.181 752.783 98.016 752.871 97.91 c
-752.959 97.81 753.11 97.762 753.327 97.762 c
-755.62 99.423 m
-755.62 100.029 755.731 100.497 755.958 100.819 c
-756.194 101.143 756.52 101.305 756.943 101.305 c
-757.325 101.305 757.622 101.147 757.84 100.834 c
-757.84 102.892 l
-758.486 102.892 l
-758.486 97.247 l
-757.898 97.247 l
-757.854 97.674 l
-757.649 97.339 757.343 97.174 756.943 97.174 c
-756.531 97.174 756.208 97.328 755.972 97.644 c
-755.737 97.968 755.62 98.423 755.62 99.011 c
-h
-756.267 99.041 m
-756.267 98.6 756.329 98.269 756.458 98.056 c
-756.594 97.85 756.814 97.748 757.119 97.748 c
-757.443 97.748 757.682 97.91 757.84 98.232 c
-757.84 100.246 l
-757.67 100.559 757.432 100.717 757.119 100.717 c
-756.814 100.717 756.594 100.614 756.458 100.408 c
-756.329 100.202 756.267 99.878 756.267 99.438 c
-h
-761.073 99.423 m
-761.073 100 761.21 100.456 761.485 100.79 c
-761.768 101.132 762.139 101.305 762.602 101.305 c
-763.061 101.305 763.429 101.135 763.704 100.805 c
-763.988 100.482 764.134 100.033 764.146 99.467 c
-764.146 99.041 l
-764.146 98.471 764.002 98.016 763.719 97.674 c
-763.444 97.339 763.076 97.174 762.617 97.174 c
-762.154 97.174 761.782 97.336 761.499 97.659 c
-761.224 97.989 761.081 98.431 761.073 98.982 c
-h
-761.72 99.041 m
-761.72 98.637 761.797 98.321 761.956 98.085 c
-762.12 97.85 762.341 97.733 762.617 97.733 c
-763.182 97.733 763.477 98.145 763.498 98.968 c
-763.498 99.423 l
-763.498 99.824 763.415 100.144 763.249 100.379 c
-763.091 100.621 762.874 100.746 762.602 100.746 c
-762.338 100.746 762.12 100.621 761.956 100.379 c
-761.797 100.144 761.72 99.824 761.72 99.423 c
-h
-765.277 97.247 m
-765.277 100.702 l
-764.748 100.702 l
-764.748 101.231 l
-765.277 101.231 l
-765.277 101.687 l
-765.277 102.087 765.373 102.4 765.571 102.627 c
-765.777 102.851 766.056 102.966 766.409 102.966 c
-766.545 102.966 766.677 102.943 766.806 102.907 c
-766.777 102.363 l
-766.677 102.381 766.578 102.392 766.482 102.392 c
-766.108 102.392 765.924 102.128 765.924 101.598 c
-765.924 101.231 l
-766.6 101.231 l
-766.6 100.702 l
-765.924 100.702 l
-765.924 97.247 l
-h
-f
-714.551 89.707 -1.793 0.867 re
-715.271 89.957 m
-715.271 90.604 715.378 91.089 715.594 91.412 c
-715.819 91.735 716.142 91.897 716.565 91.897 c
-716.877 91.897 717.13 91.765 717.329 91.5 c
-717.329 93.484 l
-718.387 93.484 l
-718.387 87.84 l
-717.432 87.84 l
-717.388 88.252 l
-717.171 87.928 716.895 87.766 716.565 87.766 c
-716.153 87.766 715.833 87.921 715.609 88.237 c
-715.393 88.56 715.279 89.031 715.271 89.648 c
-h
-716.315 89.692 m
-716.315 89.299 716.351 89.023 716.432 88.869 c
-716.521 88.711 716.667 88.634 716.873 88.634 c
-717.079 88.634 717.23 88.726 717.329 88.913 c
-717.329 90.721 l
-717.23 90.916 717.079 91.015 716.873 91.015 c
-716.675 91.015 716.535 90.934 716.447 90.78 c
-716.359 90.633 716.315 90.361 716.315 89.972 c
-h
-f
-q 1 0 0 1 721.2686 87.8399 cm
-0 0 m
-0 3.454 l
--0.53 3.454 l
--0.53 3.984 l
-0 3.984 l
-0 4.439 l
-0 4.84 0.095 5.152 0.293 5.38 c
-0.5 5.604 0.779 5.719 1.132 5.719 c
-1.267 5.719 1.4 5.696 1.529 5.659 c
-1.499 5.116 l
-1.4 5.134 1.301 5.145 1.205 5.145 c
-0.831 5.145 0.646 4.881 0.646 4.351 c
-0.646 3.984 l
-1.323 3.984 l
-1.323 3.454 l
-0.646 3.454 l
-0.646 0 l
-h
-1.955 2.176 m
-1.955 2.753 2.09 3.209 2.366 3.543 c
-2.649 3.884 3.021 4.057 3.484 4.057 c
-3.943 4.057 4.31 3.888 4.586 3.558 c
-4.868 3.234 5.016 2.786 5.026 2.22 c
-5.026 1.794 l
-5.026 1.224 4.883 0.769 4.6 0.427 c
-4.325 0.092 3.958 -0.073 3.498 -0.073 c
-3.035 -0.073 2.664 0.088 2.381 0.412 c
-2.105 0.742 1.962 1.183 1.955 1.735 c
-h
-2.601 1.794 m
-2.601 1.389 2.678 1.073 2.836 0.838 c
-3.002 0.603 3.222 0.485 3.498 0.485 c
-4.064 0.485 4.358 0.897 4.38 1.721 c
-4.38 2.176 l
-4.38 2.577 4.295 2.897 4.13 3.132 c
-3.972 3.373 3.755 3.499 3.484 3.499 c
-3.219 3.499 3.002 3.373 2.836 3.132 c
-2.678 2.897 2.601 2.577 2.601 2.176 c
-h
-7.511 3.367 m
-7.422 3.385 7.324 3.396 7.217 3.396 c
-6.882 3.396 6.647 3.212 6.512 2.852 c
-6.512 0 l
-5.865 0 l
-5.865 3.984 l
-6.497 3.984 l
-6.512 3.572 l
-6.688 3.896 6.93 4.057 7.247 4.057 c
-7.353 4.057 7.441 4.035 7.511 3.998 c
-h
-9.466 0.485 m
-9.679 0.485 9.851 0.548 9.98 0.676 c
-10.117 0.813 10.19 1.004 10.2 1.25 c
-10.818 1.25 l
-10.796 0.867 10.66 0.548 10.406 0.294 c
-10.15 0.048 9.837 -0.073 9.466 -0.073 c
-8.974 -0.073 8.598 0.077 8.334 0.383 c
-8.077 0.695 7.952 1.162 7.952 1.779 c
-7.952 2.22 l
-7.952 2.816 8.077 3.271 8.334 3.587 c
-8.598 3.899 8.974 4.057 9.466 4.057 c
-9.866 4.057 10.186 3.925 10.422 3.66 c
-10.664 3.404 10.796 3.057 10.818 2.617 c
-10.2 2.617 l
-10.179 2.911 10.105 3.132 9.98 3.278 c
-9.863 3.425 9.69 3.499 9.466 3.499 c
-9.172 3.499 8.955 3.4 8.819 3.205 c
-8.679 3.017 8.606 2.708 8.598 2.278 c
-8.598 1.764 l
-8.598 1.294 8.665 0.96 8.804 0.765 c
-8.951 0.578 9.172 0.485 9.466 0.485 c
-12.993 -0.073 m
-12.494 -0.073 12.112 0.074 11.847 0.368 c
-11.582 0.662 11.451 1.095 11.451 1.676 c
-11.451 2.147 l
-11.451 2.741 11.575 3.209 11.833 3.543 c
-12.097 3.884 12.457 4.057 12.92 4.057 c
-13.379 4.057 13.722 3.903 13.949 3.602 c
-14.184 3.308 14.306 2.845 14.316 2.22 c
-14.316 1.794 l
-12.097 1.794 l
-12.097 1.706 l
-12.097 1.272 12.174 0.96 12.332 0.765 c
-12.498 0.578 12.729 0.485 13.023 0.485 c
-13.218 0.485 13.39 0.518 13.537 0.588 c
-13.685 0.665 13.82 0.783 13.949 0.941 c
-14.287 0.53 l
-14.001 0.125 13.57 -0.073 12.993 -0.073 c
-12.92 3.499 m
-12.644 3.499 12.442 3.404 12.317 3.219 c
-12.189 3.032 12.116 2.741 12.097 2.352 c
-13.67 2.352 l
-13.67 2.44 l
-13.648 2.822 13.581 3.091 13.464 3.249 c
-13.346 3.414 13.163 3.499 12.92 3.499 c
-17.036 1.015 m
-17.036 1.162 16.981 1.283 16.874 1.382 c
-16.764 1.478 16.558 1.595 16.257 1.735 c
-15.912 1.881 15.669 2.003 15.522 2.103 c
-15.374 2.209 15.264 2.326 15.199 2.455 c
-15.129 2.58 15.096 2.738 15.096 2.926 c
-15.096 3.249 15.214 3.517 15.449 3.734 c
-15.684 3.947 15.985 4.057 16.359 4.057 c
-16.742 4.057 17.051 3.944 17.286 3.72 c
-17.521 3.491 17.639 3.205 17.639 2.852 c
-16.992 2.852 l
-16.992 3.028 16.933 3.179 16.816 3.308 c
-16.698 3.433 16.544 3.499 16.359 3.499 c
-16.161 3.499 16.01 3.444 15.904 3.337 c
-15.794 3.238 15.742 3.105 15.742 2.94 c
-15.742 2.812 15.779 2.705 15.86 2.617 c
-15.937 2.536 16.128 2.433 16.433 2.309 c
-16.911 2.12 17.242 1.933 17.418 1.75 c
-17.595 1.573 17.683 1.345 17.683 1.073 c
-17.683 0.721 17.558 0.441 17.315 0.235 c
-17.08 0.03 16.764 -0.073 16.375 -0.073 c
-15.952 -0.073 15.613 0.044 15.36 0.279 c
-15.103 0.522 14.978 0.827 14.978 1.191 c
-15.625 1.191 l
-15.632 0.963 15.702 0.786 15.831 0.662 c
-15.956 0.545 16.139 0.485 16.375 0.485 c
-16.588 0.485 16.749 0.533 16.86 0.632 c
-16.978 0.728 17.036 0.857 17.036 1.015 c
-20.108 2.176 m
-20.108 2.782 20.218 3.249 20.446 3.572 c
-20.681 3.896 21.009 4.057 21.431 4.057 c
-21.813 4.057 22.111 3.899 22.327 3.587 c
-22.327 5.644 l
-22.975 5.644 l
-22.975 0 l
-22.387 0 l
-22.343 0.427 l
-22.137 0.092 21.832 -0.073 21.431 -0.073 c
-21.019 -0.073 20.696 0.081 20.461 0.397 c
-20.226 0.721 20.108 1.176 20.108 1.764 c
-h
-20.755 1.794 m
-20.755 1.353 20.818 1.022 20.945 0.809 c
-21.082 0.603 21.302 0.5 21.607 0.5 c
-21.93 0.5 22.169 0.662 22.327 0.985 c
-22.327 2.999 l
-22.158 3.311 21.92 3.469 21.607 3.469 c
-21.302 3.469 21.082 3.367 20.945 3.161 c
-20.818 2.955 20.755 2.631 20.755 2.191 c
-h
-25.4 -0.073 m
-24.899 -0.073 24.518 0.074 24.253 0.368 c
-23.989 0.662 23.856 1.095 23.856 1.676 c
-23.856 2.147 l
-23.856 2.741 23.981 3.209 24.238 3.543 c
-24.503 3.884 24.863 4.057 25.327 4.057 c
-25.786 4.057 26.127 3.903 26.355 3.602 c
-26.59 3.308 26.711 2.845 26.723 2.22 c
-26.723 1.794 l
-24.503 1.794 l
-24.503 1.706 l
-24.503 1.272 24.581 0.96 24.739 0.765 c
-24.903 0.578 25.135 0.485 25.429 0.485 c
-25.624 0.485 25.797 0.518 25.944 0.588 c
-26.09 0.665 26.227 0.783 26.355 0.941 c
-26.693 0.53 l
-26.406 0.125 25.977 -0.073 25.4 -0.073 c
-25.327 3.499 m
-25.051 3.499 24.849 3.404 24.724 3.219 c
-24.595 3.032 24.521 2.741 24.503 2.352 c
-26.075 2.352 l
-26.075 2.44 l
-26.054 2.822 25.988 3.091 25.87 3.249 c
-25.753 3.414 25.568 3.499 25.327 3.499 c
-28.207 0 -0.646 5.644 re
-30.647 -0.073 m
-30.148 -0.073 29.765 0.074 29.501 0.368 c
-29.236 0.662 29.104 1.095 29.104 1.676 c
-29.104 2.147 l
-29.104 2.741 29.229 3.209 29.486 3.543 c
-29.751 3.884 30.111 4.057 30.574 4.057 c
-31.033 4.057 31.375 3.903 31.602 3.602 c
-31.837 3.308 31.959 2.845 31.97 2.22 c
-31.97 1.794 l
-29.751 1.794 l
-29.751 1.706 l
-29.751 1.272 29.828 0.96 29.986 0.765 c
-30.152 0.578 30.383 0.485 30.677 0.485 c
-30.871 0.485 31.044 0.518 31.191 0.588 c
-31.338 0.665 31.474 0.783 31.602 0.941 c
-31.941 0.53 l
-31.654 0.125 31.224 -0.073 30.647 -0.073 c
-30.574 3.499 m
-30.298 3.499 30.096 3.404 29.971 3.219 c
-29.842 3.032 29.769 2.741 29.751 2.352 c
-31.324 2.352 l
-31.324 2.44 l
-31.301 2.822 31.235 3.091 31.118 3.249 c
-31 3.414 30.817 3.499 30.574 3.499 c
-33.601 4.939 m
-33.601 3.984 l
-34.204 3.984 l
-34.204 3.454 l
-33.601 3.454 l
-33.601 0.985 l
-33.601 0.827 33.624 0.709 33.676 0.632 c
-33.734 0.551 33.822 0.515 33.94 0.515 c
-34.028 0.515 34.116 0.53 34.204 0.559 c
-34.204 0 l
-34.058 -0.047 33.903 -0.073 33.749 -0.073 c
-33.491 -0.073 33.297 0.019 33.161 0.206 c
-33.021 0.389 32.955 0.651 32.955 0.985 c
-32.955 3.454 l
-32.352 3.454 l
-32.352 3.984 l
-32.955 3.984 l
-32.955 4.939 l
-h
-35.675 0 -0.647 3.984 re
-35.718 5.027 m
-35.718 4.917 35.689 4.825 35.63 4.748 c
-35.571 4.678 35.476 4.645 35.351 4.645 c
-35.234 4.645 35.138 4.678 35.072 4.748 c
-35.012 4.825 34.983 4.917 34.983 5.027 c
-34.983 5.145 35.012 5.237 35.072 5.307 c
-35.138 5.384 35.234 5.424 35.351 5.424 c
-35.476 5.424 35.571 5.384 35.63 5.307 c
-35.689 5.226 35.718 5.134 35.718 5.027 c
-36.556 2.176 m
-36.556 2.753 36.693 3.209 36.968 3.543 c
-37.25 3.884 37.622 4.057 38.085 4.057 c
-38.544 4.057 38.912 3.888 39.187 3.558 c
-39.471 3.234 39.617 2.786 39.629 2.22 c
-39.629 1.794 l
-39.629 1.224 39.485 0.769 39.202 0.427 c
-38.927 0.092 38.559 -0.073 38.1 -0.073 c
-37.637 -0.073 37.266 0.088 36.982 0.412 c
-36.707 0.742 36.564 1.183 36.556 1.735 c
-h
-37.203 1.794 m
-37.203 1.389 37.281 1.073 37.439 0.838 c
-37.603 0.603 37.824 0.485 38.1 0.485 c
-38.665 0.485 38.96 0.897 38.981 1.721 c
-38.981 2.176 l
-38.981 2.577 38.897 2.897 38.732 3.132 c
-38.574 3.373 38.357 3.499 38.085 3.499 c
-37.821 3.499 37.603 3.373 37.439 3.132 c
-37.281 2.897 37.203 2.577 37.203 2.176 c
-h
-41.084 3.984 m
-41.098 3.543 l
-41.352 3.884 41.676 4.057 42.068 4.057 c
-42.773 4.057 43.13 3.587 43.141 2.646 c
-43.141 0 l
-42.495 0 l
-42.495 2.617 l
-42.495 2.929 42.44 3.15 42.333 3.278 c
-42.223 3.404 42.068 3.469 41.863 3.469 c
-41.705 3.469 41.557 3.414 41.422 3.308 c
-41.293 3.198 41.19 3.061 41.113 2.897 c
-41.113 0 l
-40.466 0 l
-40.466 3.984 l
-h
-44.155 0.353 m
-44.155 0.47 44.188 0.566 44.259 0.647 c
-44.325 0.724 44.427 0.765 44.568 0.765 c
-44.714 0.765 44.821 0.724 44.89 0.647 c
-44.968 0.566 45.008 0.47 45.008 0.353 c
-45.008 0.243 44.968 0.151 44.89 0.074 c
-44.821 -0.004 44.714 -0.043 44.568 -0.043 c
-44.427 -0.043 44.325 -0.004 44.259 0.074 c
-44.188 0.151 44.155 0.243 44.155 0.353 c
-f
-Q
- endstream endobj 295 0 obj <</I true/K false/S/Transparency/Type/Group>> endobj 297 0 obj <</BBox[325.823 554.164 757.387 480.746]/Group 298 0 R/Length 128/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>/Shading<</Sh0 64 0 R>>>>/Subtype/Form>>stream
-q
-325.823 554.164 431.564 -73.418 re
-W n
-q
-0 g
-/GS0 gs
-431.5641174 0 0 431.5641174 325.8230896 517.4552612 cm
-BX /Sh0 sh EX Q
-Q
- endstream endobj 298 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 296 0 obj <</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 299 0 R/Type/ExtGState/ca 1.0/op false>> endobj 299 0 obj <</BC 300 0 R/G 301 0 R/S/Luminosity/Type/Mask>> endobj 300 0 obj [0.0] endobj 301 0 obj <</BBox[325.823 554.164 757.387 480.746]/Group 302 0 R/Length 92/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 12 0 R>>/XObject<</Fm0 303 0 R>>>>/Subtype/Form>>stream
-0 g
-/GS0 gs
-325.823 554.164 431.564 -73.418 re
-f
-q
-0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0 TL/Fm0 Do
-Q
- endstream endobj 302 0 obj <</CS/DeviceGray/I false/K false/S/Transparency/Type/Group>> endobj 303 0 obj <</BBox[325.823 554.164 757.388 480.746]/Group 304 0 R/Length 128/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 113 0 R>>/ExtGState<</GS0 12 0 R>>/Shading<</Sh0 127 0 R>>>>/Subtype/Form>>stream
-q
-325.823 554.164 431.564 -73.418 re
-W n
-q
-0 g
-/GS0 gs
-431.5641174 0 0 431.5641174 325.8227539 517.4550781 cm
-BX /Sh0 sh EX Q
-Q
- endstream endobj 304 0 obj <</CS/DeviceCMYK/I true/K false/S/Transparency/Type/Group>> endobj 6 0 obj [5 0 R] endobj 305 0 obj <</CreationDate(D:20161031172420Z)/Creator(Adobe Illustrator CC 2015.3 \(Macintosh\))/ModDate(D:20161031172420Z)/Producer(Adobe PDF library 15.00)/Title(Untitled-2)>> endobj xref 0 306 0000000000 65535 f
-0000000016 00000 n
-0000000144 00000 n
-0000052539 00000 n
-0000000000 00000 f
-0001829223 00000 n
-0007345734 00000 n
-0000052596 00000 n
-0000052949 00000 n
-0005664025 00000 n
-0005664166 00000 n
-0001829413 00000 n
-0001821855 00000 n
-0005665528 00000 n
-0005664232 00000 n
-0000053303 00000 n
-0000053445 00000 n
-0000055549 00000 n
-0000053511 00000 n
-0000054988 00000 n
-0000055036 00000 n
-0001577808 00000 n
-0001825132 00000 n
-0001825248 00000 n
-0001825363 00000 n
-0001825486 00000 n
-0001825609 00000 n
-0001825732 00000 n
-0001577870 00000 n
-0001578205 00000 n
-0001578681 00000 n
-0001584621 00000 n
-0001596870 00000 n
-0001602617 00000 n
-0001616838 00000 n
-0001627887 00000 n
-0001628196 00000 n
-0001637380 00000 n
-0001647988 00000 n
-0001657309 00000 n
-0001660863 00000 n
-0001666195 00000 n
-0001669141 00000 n
-0001670268 00000 n
-0001679870 00000 n
-0001684168 00000 n
-0001688506 00000 n
-0001700981 00000 n
-0001705017 00000 n
-0001710819 00000 n
-0001717241 00000 n
-0001731952 00000 n
-0001741049 00000 n
-0001758297 00000 n
-0001772218 00000 n
-0001777518 00000 n
-0001777876 00000 n
-0001779807 00000 n
-0001786388 00000 n
-0001792684 00000 n
-0001803132 00000 n
-0001809040 00000 n
-0001814611 00000 n
-0001824567 00000 n
-0001824630 00000 n
-0001824504 00000 n
-0001824441 00000 n
-0001824378 00000 n
-0001824315 00000 n
-0001824252 00000 n
-0001824189 00000 n
-0001824126 00000 n
-0001824063 00000 n
-0001824000 00000 n
-0001823937 00000 n
-0001823874 00000 n
-0001823811 00000 n
-0001823748 00000 n
-0001823685 00000 n
-0001823622 00000 n
-0001823559 00000 n
-0001823496 00000 n
-0001823433 00000 n
-0001823370 00000 n
-0001823307 00000 n
-0001823244 00000 n
-0001823181 00000 n
-0001823118 00000 n
-0001823055 00000 n
-0001822992 00000 n
-0001822929 00000 n
-0001822346 00000 n
-0001822553 00000 n
-0001822409 00000 n
-0001822283 00000 n
-0001822220 00000 n
-0001822157 00000 n
-0001822094 00000 n
-0001822031 00000 n
-0001821968 00000 n
-0001821791 00000 n
-0001822716 00000 n
-0001822854 00000 n
-0001824778 00000 n
-0001824894 00000 n
-0001825023 00000 n
-0001827884 00000 n
-0001825848 00000 n
-0001825914 00000 n
-0001825937 00000 n
-0001826264 00000 n
-0001826342 00000 n
-0001826705 00000 n
-0001826928 00000 n
-0001826782 00000 n
-0001826991 00000 n
-0001827358 00000 n
-0001827746 00000 n
-0001827129 00000 n
-0001827205 00000 n
-0001827282 00000 n
-0001827801 00000 n
-0001827950 00000 n
-0001827973 00000 n
-0001828275 00000 n
-0001828353 00000 n
-0001828719 00000 n
-0001828796 00000 n
-0001828942 00000 n
-0001829058 00000 n
-0001829138 00000 n
-0001829295 00000 n
-0001829327 00000 n
-0001829482 00000 n
-0001833966 00000 n
-0001835264 00000 n
-0001847598 00000 n
-0001877099 00000 n
-0001899615 00000 n
-0001922108 00000 n
-0001944924 00000 n
-0001967003 00000 n
-0001989331 00000 n
-0002012637 00000 n
-0002035364 00000 n
-0002056686 00000 n
-0002078809 00000 n
-0002101782 00000 n
-0002136210 00000 n
-0002158624 00000 n
-0002181711 00000 n
-0002204289 00000 n
-0002228492 00000 n
-0002250164 00000 n
-0002272697 00000 n
-0002294933 00000 n
-0002318562 00000 n
-0002339903 00000 n
-0002362514 00000 n
-0002426019 00000 n
-0002449289 00000 n
-0002471861 00000 n
-0002494425 00000 n
-0002516757 00000 n
-0002539012 00000 n
-0002561573 00000 n
-0002583980 00000 n
-0002607446 00000 n
-0002630408 00000 n
-0002653946 00000 n
-0002695995 00000 n
-0002718800 00000 n
-0002741052 00000 n
-0002763140 00000 n
-0002784387 00000 n
-0002806152 00000 n
-0002827702 00000 n
-0002849139 00000 n
-0002870613 00000 n
-0002891878 00000 n
-0002914033 00000 n
-0002956912 00000 n
-0002978248 00000 n
-0002999119 00000 n
-0003020747 00000 n
-0003042038 00000 n
-0003064132 00000 n
-0003086377 00000 n
-0003108223 00000 n
-0003130683 00000 n
-0003152299 00000 n
-0003170763 00000 n
-0003233578 00000 n
-0003255689 00000 n
-0003277269 00000 n
-0003299242 00000 n
-0003321203 00000 n
-0003342098 00000 n
-0003363411 00000 n
-0003386193 00000 n
-0003409378 00000 n
-0003432490 00000 n
-0003453518 00000 n
-0003495238 00000 n
-0003510301 00000 n
-0003567696 00000 n
-0003615863 00000 n
-0003650891 00000 n
-0003669632 00000 n
-0003673380 00000 n
-0003683855 00000 n
-0003704357 00000 n
-0003718623 00000 n
-0003733633 00000 n
-0003759731 00000 n
-0003784054 00000 n
-0003806935 00000 n
-0003829767 00000 n
-0003852352 00000 n
-0003876992 00000 n
-0003900151 00000 n
-0003922783 00000 n
-0003945034 00000 n
-0003968047 00000 n
-0003991391 00000 n
-0004015741 00000 n
-0004039233 00000 n
-0004062214 00000 n
-0004085294 00000 n
-0004107633 00000 n
-0004133573 00000 n
-0004156970 00000 n
-0004181160 00000 n
-0004205488 00000 n
-0004229069 00000 n
-0004252246 00000 n
-0004276651 00000 n
-0004300732 00000 n
-0004323009 00000 n
-0004346653 00000 n
-0004369083 00000 n
-0004398651 00000 n
-0004422686 00000 n
-0004445807 00000 n
-0004468467 00000 n
-0004490778 00000 n
-0004512245 00000 n
-0004535999 00000 n
-0004558483 00000 n
-0004582152 00000 n
-0004605460 00000 n
-0004628178 00000 n
-0004657082 00000 n
-0004679662 00000 n
-0004703617 00000 n
-0004726684 00000 n
-0004749769 00000 n
-0004772895 00000 n
-0004796243 00000 n
-0004818968 00000 n
-0004840801 00000 n
-0004864877 00000 n
-0004887603 00000 n
-0004916892 00000 n
-0004940435 00000 n
-0004962612 00000 n
-0004986831 00000 n
-0005010044 00000 n
-0005032928 00000 n
-0005056580 00000 n
-0005078840 00000 n
-0005102970 00000 n
-0005124736 00000 n
-0005148071 00000 n
-0005177059 00000 n
-0005200432 00000 n
-0005223606 00000 n
-0005246594 00000 n
-0005269811 00000 n
-0005292409 00000 n
-0005314358 00000 n
-0005337995 00000 n
-0005361090 00000 n
-0005383650 00000 n
-0005407255 00000 n
-0005436020 00000 n
-0005458512 00000 n
-0005482512 00000 n
-0005507899 00000 n
-0005530123 00000 n
-0005551770 00000 n
-0005574745 00000 n
-0005597605 00000 n
-0005619438 00000 n
-0005642322 00000 n
-0007344240 00000 n
-0007344705 00000 n
-0007344303 00000 n
-0007344641 00000 n
-0007344822 00000 n
-0007344888 00000 n
-0007344911 00000 n
-0007345213 00000 n
-0007345291 00000 n
-0007345657 00000 n
-0007345757 00000 n
-trailer <</Size 306/Root 1 0 R/Info 305 0 R/ID[<303169ECE1024C918EE9BAFAA71271A8><267E8E7C61CE467AA831715E34FC8183>]>> startxref 7345941 %%EOF \ No newline at end of file
+version https://git-lfs.github.com/spec/v1
+oid sha256:35967a21e5d856eaea89d2e5dd55a5e3b5f4e1e4efe3b000ef6d60b31600f1d2
+size 7352215
diff --git a/spec/fixtures/gitlab/import_export/corrupted_project_export.tar.gz b/spec/fixtures/gitlab/import_export/corrupted_project_export.tar.gz
new file mode 100644
index 00000000000..cac16cf9cd8
--- /dev/null
+++ b/spec/fixtures/gitlab/import_export/corrupted_project_export.tar.gz
Binary files differ
diff --git a/spec/fixtures/gitlab/import_export/lightweight_project_export.tar.gz b/spec/fixtures/gitlab/import_export/lightweight_project_export.tar.gz
new file mode 100644
index 00000000000..c01402954dd
--- /dev/null
+++ b/spec/fixtures/gitlab/import_export/lightweight_project_export.tar.gz
Binary files differ
diff --git a/spec/fixtures/gitlab/sample_metrics/sample_metric_query_result.yml b/spec/fixtures/gitlab/sample_metrics/sample_metric_query_result.yml
new file mode 100644
index 00000000000..ba074912b3b
--- /dev/null
+++ b/spec/fixtures/gitlab/sample_metrics/sample_metric_query_result.yml
@@ -0,0 +1,151 @@
+---
+- metric: {}
+ values:
+ - - 1573560714.209
+ - '0.02361297607421875'
+ - - 1573560774.209
+ - '0.02361297607421875'
+ - - 1573560834.209
+ - '0.02362823486328125'
+ - - 1573560894.209
+ - '0.02361297607421875'
+ - - 1573560954.209
+ - '0.02385711669921875'
+ - - 1573561014.209
+ - '0.02361297607421875'
+ - - 1573561074.209
+ - '0.02361297607421875'
+ - - 1573561134.209
+ - '0.02362060546875'
+ - - 1573561194.209
+ - '0.02362060546875'
+ - - 1573561254.209
+ - '0.02362060546875'
+ - - 1573561314.209
+ - '0.02362060546875'
+ - - 1573561374.209
+ - '0.023624420166015625'
+ - - 1573561434.209
+ - '0.023651123046875'
+ - - 1573561494.209
+ - '0.02362060546875'
+ - - 1573561554.209
+ - '0.0236358642578125'
+ - - 1573561614.209
+ - '0.02362060546875'
+ - - 1573561674.209
+ - '0.02362060546875'
+ - - 1573561734.209
+ - '0.02362060546875'
+ - - 1573561794.209
+ - '0.02362060546875'
+ - - 1573561854.209
+ - '0.02362060546875'
+ - - 1573561914.209
+ - '0.023651123046875'
+ - - 1573561974.209
+ - '0.02362060546875'
+ - - 1573562034.209
+ - '0.02362060546875'
+ - - 1573562094.209
+ - '0.02362060546875'
+ - - 1573562154.209
+ - '0.02362060546875'
+ - - 1573562214.209
+ - '0.023624420166015625'
+ - - 1573562274.209
+ - '0.02362060546875'
+ - - 1573562334.209
+ - '0.023868560791015625'
+ - - 1573562394.209
+ - '0.02374267578125'
+ - - 1573562454.209
+ - '0.02362060546875'
+ - - 1573562514.209
+ - '0.02362060546875'
+ - - 1573562574.209
+ - '0.02362060546875'
+ - - 1573562634.209
+ - '0.02362060546875'
+ - - 1573562694.209
+ - '0.023639678955078125'
+ - - 1573562754.209
+ - '0.0236358642578125'
+ - - 1573562814.209
+ - '0.02362060546875'
+ - - 1573562874.209
+ - '0.0236358642578125'
+ - - 1573562934.209
+ - '0.023651123046875'
+ - - 1573562994.209
+ - '0.02362060546875'
+ - - 1573563054.209
+ - '0.023624420166015625'
+ - - 1573563114.209
+ - '0.02362060546875'
+ - - 1573563174.209
+ - '0.02362060546875'
+ - - 1573563234.209
+ - '0.02362060546875'
+ - - 1573563294.209
+ - '0.02362060546875'
+ - - 1573563354.209
+ - '0.02362060546875'
+ - - 1573563414.209
+ - '0.023651123046875'
+ - - 1573563474.209
+ - '0.023651123046875'
+ - - 1573563534.209
+ - '0.023651123046875'
+ - - 1573563594.209
+ - '0.023773193359375'
+ - - 1573563654.209
+ - '0.023681640625'
+ - - 1573563714.209
+ - '0.023895263671875'
+ - - 1573563774.209
+ - '0.023651123046875'
+ - - 1573563834.209
+ - '0.023651123046875'
+ - - 1573563894.209
+ - '0.023651123046875'
+ - - 1573563954.209
+ - '0.0236663818359375'
+ - - 1573564014.209
+ - '0.023651123046875'
+ - - 1573564074.209
+ - '0.023681640625'
+ - - 1573564134.209
+ - '0.0236663818359375'
+ - - 1573564194.209
+ - '0.0236663818359375'
+ - - 1573564254.209
+ - '0.023651123046875'
+ - - 1573564314.209
+ - '0.023651123046875'
+ - - 1573564374.209
+ - '0.023651123046875'
+ - - 1573564434.209
+ - '0.023773193359375'
+ - - 1573564494.209
+ - '0.023651123046875'
+ - - 1573564554.209
+ - '0.023681640625'
+ - - 1573564614.209
+ - '0.023773193359375'
+ - - 1573564674.209
+ - '0.023651123046875'
+ - - 1573564734.209
+ - '0.023651123046875'
+ - - 1573564794.209
+ - '0.023651123046875'
+ - - 1573564854.209
+ - '0.023651123046875'
+ - - 1573564914.209
+ - '0.023651123046875'
+ - - 1573564974.209
+ - '0.023651123046875'
+ - - 1573565034.209
+ - '0.023651123046875'
+ - - 1573565094.209
+ - '0.023895263671875' \ No newline at end of file
diff --git a/spec/fixtures/lib/gitlab/import_export/complex/project.json b/spec/fixtures/lib/gitlab/import_export/complex/project.json
index 8dc91b05f4d..583d6c7b78a 100644
--- a/spec/fixtures/lib/gitlab/import_export/complex/project.json
+++ b/spec/fixtures/lib/gitlab/import_export/complex/project.json
@@ -366,7 +366,12 @@
"type": "ProjectLabel"
}
}
- ]
+ ],
+ "sentry_issue": {
+ "id": 1,
+ "issue_id": 40,
+ "sentry_issue_identifier": 1234567891
+ }
},
{
"id": 39,
@@ -6752,6 +6757,17 @@
"updated_at": "2017-01-16T15:25:29.637Z"
}
],
+ "container_expiration_policy": {
+ "created_at": "2019-12-13 13:45:04 UTC",
+ "updated_at": "2019-12-13 13:45:04 UTC",
+ "next_run_at": null,
+ "project_id": 5,
+ "name_regex": null,
+ "cadence": "3month",
+ "older_than": null,
+ "keep_n": 100,
+ "enabled": false
+ },
"deploy_keys": [],
"services": [
{
diff --git a/spec/fixtures/lib/gitlab/import_export/group_exports/complex/group.json b/spec/fixtures/lib/gitlab/import_export/group_exports/complex/group.json
new file mode 100644
index 00000000000..b48386a3fb9
--- /dev/null
+++ b/spec/fixtures/lib/gitlab/import_export/group_exports/complex/group.json
@@ -0,0 +1,2106 @@
+{
+ "name": "ymg09t5704clnxnqfgaj2h098gz4r7gyx4wc3fzmlqj1en24zf",
+ "path": "ymg09t5704clnxnqfgaj2h098gz4r7gyx4wc3fzmlqj1en24zf",
+ "owner_id": null,
+ "created_at": "2019-11-20 17:01:53 UTC",
+ "updated_at": "2019-11-20 17:05:44 UTC",
+ "description": "Group Description",
+ "avatar": {
+ "url": null
+ },
+ "membership_lock": false,
+ "share_with_group_lock": false,
+ "visibility_level": 0,
+ "request_access_enabled": true,
+ "ldap_sync_status": "ready",
+ "ldap_sync_error": null,
+ "ldap_sync_last_update_at": null,
+ "ldap_sync_last_successful_update_at": null,
+ "ldap_sync_last_sync_at": null,
+ "lfs_enabled": null,
+ "parent_id": null,
+ "shared_runners_minutes_limit": null,
+ "repository_size_limit": null,
+ "require_two_factor_authentication": false,
+ "two_factor_grace_period": 48,
+ "plan_id": null,
+ "project_creation_level": 2,
+ "trial_ends_on": null,
+ "file_template_project_id": null,
+ "saml_discovery_token": "rBKx3ioz",
+ "custom_project_templates_group_id": null,
+ "auto_devops_enabled": null,
+ "extra_shared_runners_minutes_limit": null,
+ "last_ci_minutes_notification_at": null,
+ "last_ci_minutes_usage_notification_level": null,
+ "subgroup_creation_level": 1,
+ "emails_disabled": null,
+ "max_pages_size": null,
+ "max_artifacts_size": null,
+ "milestones": [
+ {
+ "id": 7642,
+ "title": "v4.0",
+ "project_id": null,
+ "description": "Et laudantium enim omnis ea reprehenderit iure.",
+ "due_date": null,
+ "created_at": "2019-11-20T17:02:14.336Z",
+ "updated_at": "2019-11-20T17:02:14.336Z",
+ "state": "closed",
+ "iid": 5,
+ "start_date": null,
+ "group_id": 4351
+ },
+ {
+ "id": 7641,
+ "title": "v3.0",
+ "project_id": null,
+ "description": "Et repellat culpa nemo consequatur ut reprehenderit.",
+ "due_date": null,
+ "created_at": "2019-11-20T17:02:14.323Z",
+ "updated_at": "2019-11-20T17:02:14.323Z",
+ "state": "active",
+ "iid": 4,
+ "start_date": null,
+ "group_id": 4351
+ },
+ {
+ "id": 7640,
+ "title": "v2.0",
+ "project_id": null,
+ "description": "Velit cupiditate est neque voluptates iste rem sunt.",
+ "due_date": null,
+ "created_at": "2019-11-20T17:02:14.309Z",
+ "updated_at": "2019-11-20T17:02:14.309Z",
+ "state": "active",
+ "iid": 3,
+ "start_date": null,
+ "group_id": 4351
+ },
+ {
+ "id": 7639,
+ "title": "v1.0",
+ "project_id": null,
+ "description": "Amet velit repellat ut rerum aut cum.",
+ "due_date": null,
+ "created_at": "2019-11-20T17:02:14.296Z",
+ "updated_at": "2019-11-20T17:02:14.296Z",
+ "state": "active",
+ "iid": 2,
+ "start_date": null,
+ "group_id": 4351
+ },
+ {
+ "id": 7638,
+ "title": "v0.0",
+ "project_id": null,
+ "description": "Ea quia asperiores ut modi dolorem sunt non numquam.",
+ "due_date": null,
+ "created_at": "2019-11-20T17:02:14.282Z",
+ "updated_at": "2019-11-20T17:02:14.282Z",
+ "state": "active",
+ "iid": 1,
+ "start_date": null,
+ "group_id": 4351
+ }
+ ],
+ "badges": [
+ {
+ "id": 10,
+ "link_url": "https://localhost:3443/%{default_branch}",
+ "image_url": "https://badge_image.png",
+ "project_id": null,
+ "group_id": 4351,
+ "created_at": "2019-11-20T17:27:02.047Z",
+ "updated_at": "2019-11-20T17:27:02.047Z",
+ "type": "GroupBadge"
+ }
+ ],
+ "labels": [
+ {
+ "id": 23452,
+ "title": "Bruffefunc",
+ "color": "#1d2da4",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.546Z",
+ "updated_at": "2019-11-20T17:02:20.546Z",
+ "template": false,
+ "description": null,
+ "group_id": 4351,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23446,
+ "title": "Cafunc",
+ "color": "#73ed5b",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.526Z",
+ "updated_at": "2019-11-20T17:02:20.526Z",
+ "template": false,
+ "description": null,
+ "group_id": 4351,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23451,
+ "title": "Casche",
+ "color": "#649a75",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.544Z",
+ "updated_at": "2019-11-20T17:02:20.544Z",
+ "template": false,
+ "description": null,
+ "group_id": 4351,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23444,
+ "title": "Cocell",
+ "color": "#1b365c",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.521Z",
+ "updated_at": "2019-11-20T17:02:20.521Z",
+ "template": false,
+ "description": null,
+ "group_id": 4351,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23449,
+ "title": "Packfunc",
+ "color": "#e33bba",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.537Z",
+ "updated_at": "2019-11-20T17:02:20.537Z",
+ "template": false,
+ "description": null,
+ "group_id": 4351,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23443,
+ "title": "Panabalt",
+ "color": "#84f708",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.518Z",
+ "updated_at": "2019-11-20T17:02:20.518Z",
+ "template": false,
+ "description": null,
+ "group_id": 4351,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23447,
+ "title": "Phierefunc",
+ "color": "#4ab4a8",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.530Z",
+ "updated_at": "2019-11-20T17:02:20.530Z",
+ "template": false,
+ "description": null,
+ "group_id": 4351,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23445,
+ "title": "Pons",
+ "color": "#47f440",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.523Z",
+ "updated_at": "2019-11-20T17:02:20.523Z",
+ "template": false,
+ "description": null,
+ "group_id": 4351,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23448,
+ "title": "Sosync",
+ "color": "#110320",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.532Z",
+ "updated_at": "2019-11-20T17:02:20.532Z",
+ "template": false,
+ "description": null,
+ "group_id": 4351,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23450,
+ "title": "TSL",
+ "color": "#58796f",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.541Z",
+ "updated_at": "2019-11-20T17:02:20.541Z",
+ "template": false,
+ "description": null,
+ "group_id": 4351,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ }
+ ],
+ "boards": [
+ {
+ "id": 56,
+ "project_id": null,
+ "created_at": "2019-11-20T17:27:16.808Z",
+ "updated_at": "2019-11-20T17:27:16.808Z",
+ "name": "Development",
+ "milestone_id": null,
+ "group_id": 4351,
+ "weight": null,
+ "labels": []
+ },
+ {
+ "id": 57,
+ "project_id": null,
+ "created_at": "2019-11-20T17:27:41.118Z",
+ "updated_at": "2019-11-20T17:27:41.118Z",
+ "name": "Board!",
+ "milestone_id": 7638,
+ "group_id": 4351,
+ "weight": null,
+ "labels": []
+ }
+ ],
+ "members": [
+ {
+ "id": 13766,
+ "access_level": 30,
+ "source_id": 4351,
+ "source_type": "Namespace",
+ "user_id": 42,
+ "notification_level": 3,
+ "created_at": "2019-11-20T17:04:36.184Z",
+ "updated_at": "2019-11-20T17:04:36.184Z",
+ "created_by_id": null,
+ "invite_email": null,
+ "invite_token": null,
+ "invite_accepted_at": null,
+ "requested_at": null,
+ "expires_at": null,
+ "ldap": false,
+ "override": false,
+ "user": {
+ "id": 42,
+ "email": "moriah@collinsmurphy.com",
+ "username": "reported_user_15"
+ }
+ },
+ {
+ "id": 13765,
+ "access_level": 40,
+ "source_id": 4351,
+ "source_type": "Namespace",
+ "user_id": 271,
+ "notification_level": 3,
+ "created_at": "2019-11-20T17:04:36.044Z",
+ "updated_at": "2019-11-20T17:04:36.044Z",
+ "created_by_id": null,
+ "invite_email": null,
+ "invite_token": null,
+ "invite_accepted_at": null,
+ "requested_at": null,
+ "expires_at": null,
+ "ldap": false,
+ "override": false,
+ "user": {
+ "id": 271,
+ "email": "garret@connellystark.ca",
+ "username": "charlesetta"
+ }
+ },
+ {
+ "id": 13764,
+ "access_level": 30,
+ "source_id": 4351,
+ "source_type": "Namespace",
+ "user_id": 206,
+ "notification_level": 3,
+ "created_at": "2019-11-20T17:04:35.840Z",
+ "updated_at": "2019-11-20T17:04:35.840Z",
+ "created_by_id": null,
+ "invite_email": null,
+ "invite_token": null,
+ "invite_accepted_at": null,
+ "requested_at": null,
+ "expires_at": null,
+ "ldap": false,
+ "override": false,
+ "user": {
+ "id": 206,
+ "email": "margaret.bergnaum@reynolds.us",
+ "username": "gwendolyn_robel"
+ }
+ },
+ {
+ "id": 13763,
+ "access_level": 10,
+ "source_id": 4351,
+ "source_type": "Namespace",
+ "user_id": 39,
+ "notification_level": 3,
+ "created_at": "2019-11-20T17:04:35.704Z",
+ "updated_at": "2019-11-20T17:04:35.704Z",
+ "created_by_id": null,
+ "invite_email": null,
+ "invite_token": null,
+ "invite_accepted_at": null,
+ "requested_at": null,
+ "expires_at": null,
+ "ldap": false,
+ "override": false,
+ "user": {
+ "id": 39,
+ "email": "alexis_berge@kerlukeklein.us",
+ "username": "reported_user_12"
+ }
+ },
+ {
+ "id": 13762,
+ "access_level": 20,
+ "source_id": 4351,
+ "source_type": "Namespace",
+ "user_id": 1624,
+ "notification_level": 3,
+ "created_at": "2019-11-20T17:04:35.566Z",
+ "updated_at": "2019-11-20T17:04:35.566Z",
+ "created_by_id": null,
+ "invite_email": null,
+ "invite_token": null,
+ "invite_accepted_at": null,
+ "requested_at": null,
+ "expires_at": null,
+ "ldap": false,
+ "override": false,
+ "user": {
+ "id": 1624,
+ "email": "nakesha.herzog@powlowski.com",
+ "username": "adriene.mcclure"
+ }
+ },
+ {
+ "id": 12920,
+ "access_level": 50,
+ "source_id": 4351,
+ "source_type": "Namespace",
+ "user_id": 1,
+ "notification_level": 3,
+ "created_at": "2019-11-20T17:01:53.505Z",
+ "updated_at": "2019-11-20T17:01:53.505Z",
+ "created_by_id": null,
+ "invite_email": null,
+ "invite_token": null,
+ "invite_accepted_at": null,
+ "requested_at": null,
+ "expires_at": null,
+ "ldap": false,
+ "override": false,
+ "user": {
+ "id": 1,
+ "email": "admin@example.com",
+ "username": "root"
+ }
+ }
+ ],
+ "epics": [
+ {
+ "id": 13622,
+ "milestone_id": null,
+ "group_id": 4351,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 1,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:09.754Z",
+ "updated_at": "2019-11-20T18:38:40.054Z",
+ "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.",
+ "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": null,
+ "relative_position": null,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null,
+ "notes": [
+ {
+ "id": 44170,
+ "note": "added epic \u00265 as child epic",
+ "noteable_type": "Epic",
+ "author_id": 1,
+ "created_at": "2019-11-20T18:38:40.031Z",
+ "updated_at": "2019-11-20T18:38:40.035Z",
+ "project_id": null,
+ "attachment": {
+ "url": null
+ },
+ "line_code": null,
+ "commit_id": null,
+ "noteable_id": 13622,
+ "system": true,
+ "st_diff": null,
+ "updated_by_id": null,
+ "position": null,
+ "original_position": null,
+ "resolved_at": null,
+ "resolved_by_id": null,
+ "discussion_id": "ba005d8dd59cd37a4f32406d46e759b08fd15510",
+ "change_position": null,
+ "resolved_by_push": null,
+ "review_id": null,
+ "type": null,
+ "author": {
+ "name": "Administrator"
+ }
+ },
+ {
+ "id": 44168,
+ "note": "added epic \u00264 as child epic",
+ "noteable_type": "Epic",
+ "author_id": 1,
+ "created_at": "2019-11-20T18:38:35.669Z",
+ "updated_at": "2019-11-20T18:38:35.673Z",
+ "project_id": null,
+ "attachment": {
+ "url": null
+ },
+ "line_code": null,
+ "commit_id": null,
+ "noteable_id": 13622,
+ "system": true,
+ "st_diff": null,
+ "updated_by_id": null,
+ "position": null,
+ "original_position": null,
+ "resolved_at": null,
+ "resolved_by_id": null,
+ "discussion_id": "9b49d3b017aadc1876d477b960e6f8efb99ce29f",
+ "change_position": null,
+ "resolved_by_push": null,
+ "review_id": null,
+ "type": null,
+ "author": {
+ "name": "Administrator"
+ }
+ },
+ {
+ "id": 44166,
+ "note": "added epic \u00263 as child epic",
+ "noteable_type": "Epic",
+ "author_id": 1,
+ "created_at": "2019-11-20T18:38:30.944Z",
+ "updated_at": "2019-11-20T18:38:30.948Z",
+ "project_id": null,
+ "attachment": {
+ "url": null
+ },
+ "line_code": null,
+ "commit_id": null,
+ "noteable_id": 13622,
+ "system": true,
+ "st_diff": null,
+ "updated_by_id": null,
+ "position": null,
+ "original_position": null,
+ "resolved_at": null,
+ "resolved_by_id": null,
+ "discussion_id": "cccfe967f48e699a466c87a55a9f8acb00fec1a1",
+ "change_position": null,
+ "resolved_by_push": null,
+ "review_id": null,
+ "type": null,
+ "author": {
+ "name": "Administrator"
+ }
+ },
+ {
+ "id": 44164,
+ "note": "added epic \u00262 as child epic",
+ "noteable_type": "Epic",
+ "author_id": 1,
+ "created_at": "2019-11-20T18:38:26.689Z",
+ "updated_at": "2019-11-20T18:38:26.724Z",
+ "project_id": null,
+ "attachment": {
+ "url": null
+ },
+ "line_code": null,
+ "commit_id": null,
+ "noteable_id": 13622,
+ "system": true,
+ "st_diff": null,
+ "updated_by_id": null,
+ "position": null,
+ "original_position": null,
+ "resolved_at": null,
+ "resolved_by_id": null,
+ "discussion_id": "133f0c3001860fa8d2031e398a65db74477378c4",
+ "change_position": null,
+ "resolved_by_push": null,
+ "review_id": null,
+ "type": null,
+ "author": {
+ "name": "Administrator"
+ }
+ }
+ ]
+ },
+ {
+ "id": 13623,
+ "milestone_id": null,
+ "group_id": 4351,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 2,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:09.769Z",
+ "updated_at": "2019-11-20T18:38:26.851Z",
+ "title": "Omnis accusantium commodi voluptas odio illo eum ut.",
+ "description": "Eius vero et iste amet est voluptatem modi. Doloribus ipsam beatae et ut autem ut animi. Dolor culpa dolor omnis delectus est tempora inventore ab. Optio labore tenetur libero quia provident et quis. Blanditiis architecto sint possimus cum aut adipisci.\n\nDolores quisquam sunt cupiditate unde qui vitae nemo. Odio quas omnis ut nobis. Possimus fugit deserunt quia sed ab numquam veritatis nihil.\n\nQui nemo adipisci magnam perferendis voluptatem modi. Eius enim iure dolores consequuntur eum nobis adipisci. Consequatur architecto et quas deleniti hic id laborum officiis. Enim perferendis quis quasi totam delectus rerum deleniti.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": 13622,
+ "relative_position": 1073741323,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null,
+ "parent": {
+ "id": 13622,
+ "milestone_id": null,
+ "group_id": 4351,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 1,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:09.754Z",
+ "updated_at": "2019-11-20T18:38:40.054Z",
+ "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.",
+ "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": null,
+ "relative_position": null,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null
+ },
+ "notes": [
+ {
+ "id": 44165,
+ "note": "added epic \u00261 as parent epic",
+ "noteable_type": "Epic",
+ "author_id": 1,
+ "created_at": "2019-11-20T18:38:26.822Z",
+ "updated_at": "2019-11-20T18:38:26.826Z",
+ "project_id": null,
+ "attachment": {
+ "url": null
+ },
+ "line_code": null,
+ "commit_id": null,
+ "noteable_id": 13623,
+ "system": true,
+ "st_diff": null,
+ "updated_by_id": null,
+ "position": null,
+ "original_position": null,
+ "resolved_at": null,
+ "resolved_by_id": null,
+ "discussion_id": "15f0a7f4ed16a07bc78841e122524bb867edcf86",
+ "change_position": null,
+ "resolved_by_push": null,
+ "review_id": null,
+ "type": null,
+ "author": {
+ "name": "Administrator"
+ }
+ }
+ ]
+ },
+ {
+ "id": 13624,
+ "milestone_id": null,
+ "group_id": 4351,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 3,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:09.783Z",
+ "updated_at": "2019-11-20T18:38:31.018Z",
+ "title": "Quis dolore velit possimus eaque aut amet esse voluptate aliquam.",
+ "description": "Ab veritatis reprehenderit nulla laboriosam et sed asperiores corporis. Est accusantium maxime perferendis et. Omnis a qui voluptates non excepturi.\n\nAdipisci labore maiores dicta sed magnam aut. Veritatis delectus dolorum qui id. Dolorum tenetur quo iure amet. Eveniet reprehenderit dolor ipsam quia ratione quo. Facilis voluptatem vel repellat id illum.\n\nAut et magnam aut minus aspernatur. Fuga quo necessitatibus mollitia maxime quasi. Qui aspernatur quia accusamus est quod. Qui assumenda veritatis dolor non eveniet quibusdam quos qui.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": 13622,
+ "relative_position": 1073740823,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null,
+ "parent": {
+ "id": 13622,
+ "milestone_id": null,
+ "group_id": 4351,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 1,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:09.754Z",
+ "updated_at": "2019-11-20T18:38:40.054Z",
+ "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.",
+ "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": null,
+ "relative_position": null,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null
+ },
+ "notes": [
+ {
+ "id": 44167,
+ "note": "added epic \u00261 as parent epic",
+ "noteable_type": "Epic",
+ "author_id": 1,
+ "created_at": "2019-11-20T18:38:30.989Z",
+ "updated_at": "2019-11-20T18:38:30.993Z",
+ "project_id": null,
+ "attachment": {
+ "url": null
+ },
+ "line_code": null,
+ "commit_id": null,
+ "noteable_id": 13624,
+ "system": true,
+ "st_diff": null,
+ "updated_by_id": null,
+ "position": null,
+ "original_position": null,
+ "resolved_at": null,
+ "resolved_by_id": null,
+ "discussion_id": "423ffec14a3ce148c11a802eb1f2613fa8ca9a94",
+ "change_position": null,
+ "resolved_by_push": null,
+ "review_id": null,
+ "type": null,
+ "author": {
+ "name": "Administrator"
+ }
+ }
+ ]
+ },
+ {
+ "id": 13625,
+ "milestone_id": null,
+ "group_id": 4351,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 4,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:09.798Z",
+ "updated_at": "2019-11-20T18:38:35.765Z",
+ "title": "Possimus et ut iste temporibus earum cupiditate voluptatem esse assumenda amet.",
+ "description": "Et at corporis sed id rerum ullam dolore. Odio magnam corporis excepturi neque est. Est accusamus nostrum qui rerum.\n\nEt aut dolores eaque quibusdam aut quas explicabo id. Est necessitatibus praesentium omnis et vero laboriosam et. Sunt in saepe qui laudantium et voluptas.\n\nVelit sunt odit eum omnis beatae eius aut. Dolores commodi qui impedit deleniti et magnam pariatur. Aut odit amet ipsum ea atque. Itaque est ut sunt ullam eum nam.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": 13622,
+ "relative_position": 1073740323,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null,
+ "parent": {
+ "id": 13622,
+ "milestone_id": null,
+ "group_id": 4351,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 1,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:09.754Z",
+ "updated_at": "2019-11-20T18:38:40.054Z",
+ "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.",
+ "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": null,
+ "relative_position": null,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null
+ },
+ "notes": [
+ {
+ "id": 44169,
+ "note": "added epic \u00261 as parent epic",
+ "noteable_type": "Epic",
+ "author_id": 1,
+ "created_at": "2019-11-20T18:38:35.737Z",
+ "updated_at": "2019-11-20T18:38:35.741Z",
+ "project_id": null,
+ "attachment": {
+ "url": null
+ },
+ "line_code": null,
+ "commit_id": null,
+ "noteable_id": 13625,
+ "system": true,
+ "st_diff": null,
+ "updated_by_id": null,
+ "position": null,
+ "original_position": null,
+ "resolved_at": null,
+ "resolved_by_id": null,
+ "discussion_id": "5bc3e30d508affafc61de2b4e1d9f21039505cc3",
+ "change_position": null,
+ "resolved_by_push": null,
+ "review_id": null,
+ "type": null,
+ "author": {
+ "name": "Administrator"
+ }
+ }
+ ]
+ },
+ {
+ "id": 13626,
+ "milestone_id": null,
+ "group_id": 4351,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 5,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:09.812Z",
+ "updated_at": "2019-11-20T18:38:40.101Z",
+ "title": "Ab deleniti ipsum voluptatem dolor qui quos saepe repellat quo.",
+ "description": "Sunt minus sunt reiciendis culpa sed excepturi. Aperiam sed quod nemo nesciunt et quia molestias incidunt. Ipsum nam magnam labore eos a molestiae rerum possimus. Sequi autem asperiores voluptas assumenda.\n\nRerum ipsa quia cum ab corrupti omnis. Velit libero et nihil ipsa aut quo rem ipsam. Architecto omnis distinctio sed doloribus perspiciatis consequatur aut et. Fugit consequuntur est minima reiciendis reprehenderit et.\n\nConsequatur distinctio et ut blanditiis perferendis officiis inventore. Alias aut voluptatem in facere. Ut perferendis dolorum hic dolores. Ipsa dolorem soluta at mollitia. Placeat et ea numquam dicta molestias.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": 13622,
+ "relative_position": 1073739823,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null,
+ "parent": {
+ "id": 13622,
+ "milestone_id": null,
+ "group_id": 4351,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 1,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:09.754Z",
+ "updated_at": "2019-11-20T18:38:40.054Z",
+ "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.",
+ "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": null,
+ "relative_position": null,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null
+ },
+ "notes": [
+ {
+ "id": 44171,
+ "note": "added epic \u00261 as parent epic",
+ "noteable_type": "Epic",
+ "author_id": 1,
+ "created_at": "2019-11-20T18:38:40.074Z",
+ "updated_at": "2019-11-20T18:38:40.077Z",
+ "project_id": null,
+ "attachment": {
+ "url": null
+ },
+ "line_code": null,
+ "commit_id": null,
+ "noteable_id": 13626,
+ "system": true,
+ "st_diff": null,
+ "updated_by_id": null,
+ "position": null,
+ "original_position": null,
+ "resolved_at": null,
+ "resolved_by_id": null,
+ "discussion_id": "a6231acdaef5f4d2e569dfb604f1baf85c49e1a0",
+ "change_position": null,
+ "resolved_by_push": null,
+ "review_id": null,
+ "type": null,
+ "author": {
+ "name": "Administrator"
+ }
+ }
+ ]
+ }
+ ],
+ "children": [
+ {
+ "name": "pwip17beq7vl4nuwz9ie7bk8navpxj1w04zylmmjveab5bargr",
+ "path": "pwip17beq7vl4nuwz9ie7bk8navpxj1w04zylmmjveab5bargr",
+ "owner_id": null,
+ "created_at": "2019-11-20 17:01:53 UTC",
+ "updated_at": "2019-11-20 17:05:44 UTC",
+ "description": "",
+ "avatar": {
+ "url": null
+ },
+ "membership_lock": false,
+ "share_with_group_lock": false,
+ "visibility_level": 0,
+ "request_access_enabled": true,
+ "ldap_sync_status": "ready",
+ "ldap_sync_error": null,
+ "ldap_sync_last_update_at": null,
+ "ldap_sync_last_successful_update_at": null,
+ "ldap_sync_last_sync_at": null,
+ "lfs_enabled": null,
+ "parent_id": 4351,
+ "shared_runners_minutes_limit": null,
+ "repository_size_limit": null,
+ "require_two_factor_authentication": false,
+ "two_factor_grace_period": 48,
+ "plan_id": null,
+ "project_creation_level": 2,
+ "trial_ends_on": null,
+ "file_template_project_id": null,
+ "saml_discovery_token": "ki3Xnjw3",
+ "custom_project_templates_group_id": null,
+ "auto_devops_enabled": null,
+ "extra_shared_runners_minutes_limit": null,
+ "last_ci_minutes_notification_at": null,
+ "last_ci_minutes_usage_notification_level": null,
+ "subgroup_creation_level": 1,
+ "emails_disabled": null,
+ "max_pages_size": null,
+ "max_artifacts_size": null,
+ "milestones": [
+ {
+ "id": 7647,
+ "title": "v4.0",
+ "project_id": null,
+ "description": "Magnam accusantium fuga quo dolorum.",
+ "due_date": null,
+ "created_at": "2019-11-20T17:02:14.511Z",
+ "updated_at": "2019-11-20T17:02:14.511Z",
+ "state": "active",
+ "iid": 5,
+ "start_date": null,
+ "group_id": 4352
+ },
+ {
+ "id": 7646,
+ "title": "v3.0",
+ "project_id": null,
+ "description": "Quasi ut beatae quo vel.",
+ "due_date": null,
+ "created_at": "2019-11-20T17:02:14.392Z",
+ "updated_at": "2019-11-20T17:02:14.392Z",
+ "state": "active",
+ "iid": 4,
+ "start_date": null,
+ "group_id": 4352
+ },
+ {
+ "id": 7645,
+ "title": "v2.0",
+ "project_id": null,
+ "description": "Voluptates et rerum maxime sint cum.",
+ "due_date": null,
+ "created_at": "2019-11-20T17:02:14.380Z",
+ "updated_at": "2019-11-20T17:02:14.380Z",
+ "state": "closed",
+ "iid": 3,
+ "start_date": null,
+ "group_id": 4352
+ },
+ {
+ "id": 7644,
+ "title": "v1.0",
+ "project_id": null,
+ "description": "Qui dolores et facilis corporis dolores.",
+ "due_date": null,
+ "created_at": "2019-11-20T17:02:14.364Z",
+ "updated_at": "2019-11-20T17:02:14.364Z",
+ "state": "active",
+ "iid": 2,
+ "start_date": null,
+ "group_id": 4352
+ },
+ {
+ "id": 7643,
+ "title": "v0.0",
+ "project_id": null,
+ "description": "Et dolor nam rerum culpa nisi doloremque ex.",
+ "due_date": null,
+ "created_at": "2019-11-20T17:02:14.351Z",
+ "updated_at": "2019-11-20T17:02:14.351Z",
+ "state": "active",
+ "iid": 1,
+ "start_date": null,
+ "group_id": 4352
+ }
+ ],
+ "badges": [
+ {
+ "id": 14,
+ "link_url": "https://localhost:3443/%{default_branch}",
+ "image_url": "https://badge_image.png",
+ "project_id": null,
+ "group_id": 4352,
+ "created_at": "2019-11-20T17:29:36.656Z",
+ "updated_at": "2019-11-20T17:29:36.656Z",
+ "type": "GroupBadge"
+ }
+ ],
+ "labels": [
+ {
+ "id": 23453,
+ "title": "Brire",
+ "color": "#d68d9d",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.549Z",
+ "updated_at": "2019-11-20T17:02:20.549Z",
+ "template": false,
+ "description": null,
+ "group_id": 4352,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#333333"
+ },
+ {
+ "id": 23461,
+ "title": "Cygfunc",
+ "color": "#a0695d",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.575Z",
+ "updated_at": "2019-11-20T17:02:20.575Z",
+ "template": false,
+ "description": null,
+ "group_id": 4352,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23459,
+ "title": "Cygnix",
+ "color": "#691678",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.569Z",
+ "updated_at": "2019-11-20T17:02:20.569Z",
+ "template": false,
+ "description": null,
+ "group_id": 4352,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23456,
+ "title": "Genbalt",
+ "color": "#7f800c",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.560Z",
+ "updated_at": "2019-11-20T17:02:20.560Z",
+ "template": false,
+ "description": null,
+ "group_id": 4352,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23457,
+ "title": "NBP",
+ "color": "#e19356",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.564Z",
+ "updated_at": "2019-11-20T17:02:20.564Z",
+ "template": false,
+ "description": null,
+ "group_id": 4352,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23455,
+ "title": "Pionce",
+ "color": "#65c1b1",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.555Z",
+ "updated_at": "2019-11-20T17:02:20.555Z",
+ "template": false,
+ "description": null,
+ "group_id": 4352,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23458,
+ "title": "Pist",
+ "color": "#f62da4",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.566Z",
+ "updated_at": "2019-11-20T17:02:20.566Z",
+ "template": false,
+ "description": null,
+ "group_id": 4352,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23454,
+ "title": "Poffe",
+ "color": "#4f03bc",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.552Z",
+ "updated_at": "2019-11-20T17:02:20.552Z",
+ "template": false,
+ "description": null,
+ "group_id": 4352,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23460,
+ "title": "Poune",
+ "color": "#036637",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.572Z",
+ "updated_at": "2019-11-20T17:02:20.572Z",
+ "template": false,
+ "description": null,
+ "group_id": 4352,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ }
+ ],
+ "boards": [
+ {
+ "id": 64,
+ "project_id": null,
+ "created_at": "2019-11-20T17:29:39.872Z",
+ "updated_at": "2019-11-20T17:29:39.872Z",
+ "name": "Development",
+ "milestone_id": null,
+ "group_id": 4352,
+ "weight": null,
+ "labels": []
+ },
+ {
+ "id": 65,
+ "project_id": null,
+ "created_at": "2019-11-20T17:29:47.304Z",
+ "updated_at": "2019-11-20T17:29:47.304Z",
+ "name": "Sub Board 4",
+ "milestone_id": null,
+ "group_id": 4352,
+ "weight": null,
+ "labels": []
+ }
+ ],
+ "members": [
+ {
+ "id": 13771,
+ "access_level": 30,
+ "source_id": 4352,
+ "source_type": "Namespace",
+ "user_id": 1087,
+ "notification_level": 3,
+ "created_at": "2019-11-20T17:04:36.968Z",
+ "updated_at": "2019-11-20T17:04:36.968Z",
+ "created_by_id": null,
+ "invite_email": null,
+ "invite_token": null,
+ "invite_accepted_at": null,
+ "requested_at": null,
+ "expires_at": null,
+ "ldap": false,
+ "override": false,
+ "user": {
+ "id": 1087,
+ "email": "paige@blanda.info",
+ "username": "billi_auer"
+ }
+ },
+ {
+ "id": 13770,
+ "access_level": 20,
+ "source_id": 4352,
+ "source_type": "Namespace",
+ "user_id": 171,
+ "notification_level": 3,
+ "created_at": "2019-11-20T17:04:36.821Z",
+ "updated_at": "2019-11-20T17:04:36.821Z",
+ "created_by_id": null,
+ "invite_email": null,
+ "invite_token": null,
+ "invite_accepted_at": null,
+ "requested_at": null,
+ "expires_at": null,
+ "ldap": false,
+ "override": false,
+ "user": {
+ "id": 171,
+ "email": "heidi@bosco.co.uk",
+ "username": "gerard.cruickshank"
+ }
+ },
+ {
+ "id": 13769,
+ "access_level": 30,
+ "source_id": 4352,
+ "source_type": "Namespace",
+ "user_id": 1157,
+ "notification_level": 3,
+ "created_at": "2019-11-20T17:04:36.606Z",
+ "updated_at": "2019-11-20T17:04:36.606Z",
+ "created_by_id": null,
+ "invite_email": null,
+ "invite_token": null,
+ "invite_accepted_at": null,
+ "requested_at": null,
+ "expires_at": null,
+ "ldap": false,
+ "override": false,
+ "user": {
+ "id": 1157,
+ "email": "larisa.bruen@carroll.biz",
+ "username": "milagros.reynolds"
+ }
+ },
+ {
+ "id": 13768,
+ "access_level": 40,
+ "source_id": 4352,
+ "source_type": "Namespace",
+ "user_id": 14,
+ "notification_level": 3,
+ "created_at": "2019-11-20T17:04:36.465Z",
+ "updated_at": "2019-11-20T17:04:36.465Z",
+ "created_by_id": null,
+ "invite_email": null,
+ "invite_token": null,
+ "invite_accepted_at": null,
+ "requested_at": null,
+ "expires_at": null,
+ "ldap": false,
+ "override": false,
+ "user": {
+ "id": 14,
+ "email": "madlyn_kovacek@wiza.ca",
+ "username": "monique.gusikowski"
+ }
+ },
+ {
+ "id": 13767,
+ "access_level": 10,
+ "source_id": 4352,
+ "source_type": "Namespace",
+ "user_id": 1167,
+ "notification_level": 3,
+ "created_at": "2019-11-20T17:04:36.324Z",
+ "updated_at": "2019-11-20T17:04:36.324Z",
+ "created_by_id": null,
+ "invite_email": null,
+ "invite_token": null,
+ "invite_accepted_at": null,
+ "requested_at": null,
+ "expires_at": null,
+ "ldap": false,
+ "override": false,
+ "user": {
+ "id": 1167,
+ "email": "mirella@koepp.ca",
+ "username": "eileen"
+ }
+ },
+ {
+ "id": 12921,
+ "access_level": 50,
+ "source_id": 4352,
+ "source_type": "Namespace",
+ "user_id": 1,
+ "notification_level": 3,
+ "created_at": "2019-11-20T17:01:53.953Z",
+ "updated_at": "2019-11-20T17:01:53.953Z",
+ "created_by_id": null,
+ "invite_email": null,
+ "invite_token": null,
+ "invite_accepted_at": null,
+ "requested_at": null,
+ "expires_at": null,
+ "ldap": false,
+ "override": false,
+ "user": {
+ "id": 1,
+ "email": "admin@example.com",
+ "username": "root"
+ }
+ }
+ ],
+ "epics": [
+ {
+ "id": 13627,
+ "milestone_id": null,
+ "group_id": 4352,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 1,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:09.848Z",
+ "updated_at": "2019-11-20T17:02:09.848Z",
+ "title": "Nobis omnis occaecati veritatis quia eveniet sed ut cupiditate ut a.",
+ "description": "Provident iusto ipsam fuga vero. Aut mollitia earum iusto doloremque recusandae enim nam et. Quas maxime sint libero dolorum aut cumque molestias quam. Iure voluptas voluptatum similique voluptatem dolorem.\n\nAnimi aliquid praesentium sint voluptatum fuga voluptates molestias. Non hic sit modi minus a. Illum asperiores sed eius dolor impedit animi. Dolor vel fugit voluptas quia voluptatem aut minus.\n\nVelit voluptatum deleniti illo quos omnis deserunt. Omnis consequatur omnis nulla et et. Praesentium dolores rem consequatur laboriosam harum quae. Aut id aliquam nihil consequuntur.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": null,
+ "relative_position": null,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null,
+ "notes": []
+ },
+ {
+ "id": 13628,
+ "milestone_id": null,
+ "group_id": 4352,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 2,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:09.863Z",
+ "updated_at": "2019-11-20T17:02:09.863Z",
+ "title": "Assumenda possimus sed nostrum consequatur ut sint nihil fugiat.",
+ "description": "Culpa fugiat voluptas ut voluptas quo laborum eius. Earum qui dolore temporibus consequatur ratione minima architecto accusantium. Corporis accusantium et consequatur est mollitia sint fugiat aliquam. Est aut quia blanditiis et sint reiciendis. Eveniet accusamus quod molestiae vero hic a ipsum.\n\nNon numquam eum repellendus ipsa tempore necessitatibus. Delectus aut doloremque quis saepe nam ut aut a. Qui corrupti eum animi ipsam. Voluptatem distinctio consequatur accusantium blanditiis.\n\nQuis voluptatum facere inventore itaque quae. Quis quae dolorum autem qui labore. Laboriosam asperiores laborum aperiam voluptatibus error ut quos similique. Deleniti fugit ut eveniet ab quae.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": null,
+ "relative_position": null,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null,
+ "notes": []
+ },
+ {
+ "id": 13629,
+ "milestone_id": null,
+ "group_id": 4352,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 3,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:09.879Z",
+ "updated_at": "2019-11-20T17:02:09.879Z",
+ "title": "Ut dolore eos molestiae perferendis quibusdam accusamus.",
+ "description": "Possimus vel adipisci consequatur asperiores. Et aspernatur quis ipsum aut natus tempora. Recusandae voluptatibus officiis praesentium et. Nostrum beatae laboriosam dolor nihil ut deserunt ad. Exercitationem iure hic minus deleniti assumenda quis rem.\n\nVoluptate optio et impedit sapiente dignissimos deleniti sit ea. Neque modi voluptates accusamus non non officia sit quis. Qui nihil dolores aut nostrum quia sed dolore perspiciatis. Vero necessitatibus inventore eligendi est aliquid dolorum.\n\nNulla et autem aut fugit aut aut expedita. Molestiae beatae eligendi reiciendis temporibus mollitia aut reprehenderit. Autem maiores rerum dolorum cupiditate. Cum est quasi ab et. Ratione doloribus quas perspiciatis alias voluptates et.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": null,
+ "relative_position": null,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null,
+ "notes": []
+ },
+ {
+ "id": 13630,
+ "milestone_id": null,
+ "group_id": 4352,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 4,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:09.894Z",
+ "updated_at": "2019-11-20T17:02:09.894Z",
+ "title": "Molestias numquam ut veritatis suscipit eum vitae minima et consequatur sit.",
+ "description": "Ad omnis tempore blanditiis vero possimus. Quis quidem et quo cumque pariatur. Nihil eaque inventore natus delectus est qui voluptate. Officiis illo voluptatum aut modi. Inventore voluptate est voluptatem deserunt aut esse.\n\nOdit deserunt ut expedita sit ut. Nam est aut alias quibusdam. Est delectus ratione expedita hic eaque est. Delectus est voluptatibus quo aut dolorem. Libero saepe alias aspernatur itaque et qui.\n\nOmnis voluptas nemo nostrum accusantium. Perspiciatis cupiditate quia quo asperiores. Voluptas perspiciatis nihil officia consectetur recusandae. Libero sed eum laborum expedita quisquam soluta incidunt odit.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": null,
+ "relative_position": null,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null,
+ "notes": []
+ },
+ {
+ "id": 13631,
+ "milestone_id": null,
+ "group_id": 4352,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 5,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:09.908Z",
+ "updated_at": "2019-11-20T17:02:09.908Z",
+ "title": "Labore quas voluptas delectus fugiat aut nihil vero.",
+ "description": "Necessitatibus aspernatur sunt repellat non animi reprehenderit. Dolor harum ad tempore nesciunt aperiam tenetur. Tempore in est sed quo. Aliquam eaque ullam est consequuntur porro rerum minima aspernatur. Ullam cupiditate illum dicta praesentium assumenda.\n\nEnim impedit ab dolorem libero maiores. Non consectetur ut molestiae quo atque quae necessitatibus. Placeat eveniet minus occaecati magni.\n\nConsequuntur laboriosam quisquam quo eligendi et quia. Sunt ipsam unde adipisci ad praesentium. Odit quia eius quia harum dolor nobis.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": null,
+ "relative_position": null,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null,
+ "notes": []
+ }
+ ],
+ "children": []
+ },
+ {
+ "name": "4n1db5ghlicx3ioddnwftxygq65nxb96dafkf89qp7p9sjqi3p",
+ "path": "4n1db5ghlicx3ioddnwftxygq65nxb96dafkf89qp7p9sjqi3p",
+ "owner_id": null,
+ "created_at": "2019-11-20 17:01:54 UTC",
+ "updated_at": "2019-11-20 17:05:44 UTC",
+ "description": "",
+ "avatar": {
+ "url": null
+ },
+ "membership_lock": false,
+ "share_with_group_lock": false,
+ "visibility_level": 0,
+ "request_access_enabled": true,
+ "ldap_sync_status": "ready",
+ "ldap_sync_error": null,
+ "ldap_sync_last_update_at": null,
+ "ldap_sync_last_successful_update_at": null,
+ "ldap_sync_last_sync_at": null,
+ "lfs_enabled": null,
+ "parent_id": 4351,
+ "shared_runners_minutes_limit": null,
+ "repository_size_limit": null,
+ "require_two_factor_authentication": false,
+ "two_factor_grace_period": 48,
+ "plan_id": null,
+ "project_creation_level": 2,
+ "trial_ends_on": null,
+ "file_template_project_id": null,
+ "saml_discovery_token": "m7cx4AZi",
+ "custom_project_templates_group_id": null,
+ "auto_devops_enabled": null,
+ "extra_shared_runners_minutes_limit": null,
+ "last_ci_minutes_notification_at": null,
+ "last_ci_minutes_usage_notification_level": null,
+ "subgroup_creation_level": 1,
+ "emails_disabled": null,
+ "max_pages_size": null,
+ "max_artifacts_size": null,
+ "milestones": [
+ {
+ "id": 7662,
+ "title": "v4.0",
+ "project_id": null,
+ "description": "Consequatur quaerat aut voluptas repudiandae.",
+ "due_date": null,
+ "created_at": "2019-11-20T17:02:14.746Z",
+ "updated_at": "2019-11-20T17:02:14.746Z",
+ "state": "active",
+ "iid": 5,
+ "start_date": null,
+ "group_id": 4355
+ },
+ {
+ "id": 7661,
+ "title": "v3.0",
+ "project_id": null,
+ "description": "In cupiditate aspernatur non ipsa enim consequatur.",
+ "due_date": null,
+ "created_at": "2019-11-20T17:02:14.731Z",
+ "updated_at": "2019-11-20T17:02:14.731Z",
+ "state": "active",
+ "iid": 4,
+ "start_date": null,
+ "group_id": 4355
+ },
+ {
+ "id": 7660,
+ "title": "v2.0",
+ "project_id": null,
+ "description": "Dolor non rem omnis atque.",
+ "due_date": null,
+ "created_at": "2019-11-20T17:02:14.716Z",
+ "updated_at": "2019-11-20T17:02:14.716Z",
+ "state": "closed",
+ "iid": 3,
+ "start_date": null,
+ "group_id": 4355
+ },
+ {
+ "id": 7659,
+ "title": "v1.0",
+ "project_id": null,
+ "description": "Nihil consectetur et quibusdam esse quae.",
+ "due_date": null,
+ "created_at": "2019-11-20T17:02:14.701Z",
+ "updated_at": "2019-11-20T17:02:14.701Z",
+ "state": "closed",
+ "iid": 2,
+ "start_date": null,
+ "group_id": 4355
+ },
+ {
+ "id": 7658,
+ "title": "v0.0",
+ "project_id": null,
+ "description": "Suscipit dolor id magnam reprehenderit.",
+ "due_date": null,
+ "created_at": "2019-11-20T17:02:14.686Z",
+ "updated_at": "2019-11-20T17:02:14.686Z",
+ "state": "active",
+ "iid": 1,
+ "start_date": null,
+ "group_id": 4355
+ }
+ ],
+ "badges": [
+ {
+ "id": 11,
+ "link_url": "https://localhost:3443/%{default_branch}",
+ "image_url": "https://badge_image.png",
+ "project_id": null,
+ "group_id": 4355,
+ "created_at": "2019-11-20T17:28:11.883Z",
+ "updated_at": "2019-11-20T17:28:11.883Z",
+ "type": "GroupBadge"
+ }
+ ],
+ "labels": [
+ {
+ "id": 23488,
+ "title": "Brisync",
+ "color": "#66ac54",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.654Z",
+ "updated_at": "2019-11-20T17:02:20.654Z",
+ "template": false,
+ "description": null,
+ "group_id": 4355,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23486,
+ "title": "Casync",
+ "color": "#2f494d",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.648Z",
+ "updated_at": "2019-11-20T17:02:20.648Z",
+ "template": false,
+ "description": null,
+ "group_id": 4355,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23485,
+ "title": "Cygnix",
+ "color": "#691678",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.646Z",
+ "updated_at": "2019-11-20T17:02:20.646Z",
+ "template": false,
+ "description": null,
+ "group_id": 4355,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23484,
+ "title": "Pynce",
+ "color": "#117075",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.643Z",
+ "updated_at": "2019-11-20T17:02:20.643Z",
+ "template": false,
+ "description": null,
+ "group_id": 4355,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23490,
+ "title": "Pynswood",
+ "color": "#67314e",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.663Z",
+ "updated_at": "2019-11-20T17:02:20.663Z",
+ "template": false,
+ "description": null,
+ "group_id": 4355,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23483,
+ "title": "Triffe",
+ "color": "#3bf49a",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.640Z",
+ "updated_at": "2019-11-20T17:02:20.640Z",
+ "template": false,
+ "description": null,
+ "group_id": 4355,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23489,
+ "title": "Trintforge",
+ "color": "#cdab1a",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.657Z",
+ "updated_at": "2019-11-20T17:02:20.657Z",
+ "template": false,
+ "description": null,
+ "group_id": 4355,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23482,
+ "title": "Trouffeforge",
+ "color": "#db06cb",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.637Z",
+ "updated_at": "2019-11-20T17:02:20.637Z",
+ "template": false,
+ "description": null,
+ "group_id": 4355,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23487,
+ "title": "Tryre",
+ "color": "#d00c41",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.651Z",
+ "updated_at": "2019-11-20T17:02:20.651Z",
+ "template": false,
+ "description": null,
+ "group_id": 4355,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ }
+ ],
+ "boards": [
+ {
+ "id": 58,
+ "project_id": null,
+ "created_at": "2019-11-20T17:28:15.616Z",
+ "updated_at": "2019-11-20T17:28:15.616Z",
+ "name": "Development",
+ "milestone_id": null,
+ "group_id": 4355,
+ "weight": null,
+ "labels": []
+ },
+ {
+ "id": 59,
+ "project_id": null,
+ "created_at": "2019-11-20T17:28:25.289Z",
+ "updated_at": "2019-11-20T17:28:25.289Z",
+ "name": "Sub Board 1",
+ "milestone_id": null,
+ "group_id": 4355,
+ "weight": null,
+ "labels": []
+ }
+ ],
+ "members": [
+ {
+ "id": 13786,
+ "access_level": 30,
+ "source_id": 4355,
+ "source_type": "Namespace",
+ "user_id": 1533,
+ "notification_level": 3,
+ "created_at": "2019-11-20T17:04:39.405Z",
+ "updated_at": "2019-11-20T17:04:39.405Z",
+ "created_by_id": null,
+ "invite_email": null,
+ "invite_token": null,
+ "invite_accepted_at": null,
+ "requested_at": null,
+ "expires_at": null,
+ "ldap": false,
+ "override": false,
+ "user": {
+ "id": 1533,
+ "email": "jose@cassin.ca",
+ "username": "buster"
+ }
+ },
+ {
+ "id": 13785,
+ "access_level": 10,
+ "source_id": 4355,
+ "source_type": "Namespace",
+ "user_id": 1586,
+ "notification_level": 3,
+ "created_at": "2019-11-20T17:04:39.269Z",
+ "updated_at": "2019-11-20T17:04:39.269Z",
+ "created_by_id": null,
+ "invite_email": null,
+ "invite_token": null,
+ "invite_accepted_at": null,
+ "requested_at": null,
+ "expires_at": null,
+ "ldap": false,
+ "override": false,
+ "user": {
+ "id": 1586,
+ "email": "carie@gleichner.us",
+ "username": "dominque"
+ }
+ },
+ {
+ "id": 13784,
+ "access_level": 30,
+ "source_id": 4355,
+ "source_type": "Namespace",
+ "user_id": 190,
+ "notification_level": 3,
+ "created_at": "2019-11-20T17:04:39.127Z",
+ "updated_at": "2019-11-20T17:04:39.127Z",
+ "created_by_id": null,
+ "invite_email": null,
+ "invite_token": null,
+ "invite_accepted_at": null,
+ "requested_at": null,
+ "expires_at": null,
+ "ldap": false,
+ "override": false,
+ "user": {
+ "id": 190,
+ "email": "delois@funk.biz",
+ "username": "kittie"
+ }
+ },
+ {
+ "id": 13783,
+ "access_level": 20,
+ "source_id": 4355,
+ "source_type": "Namespace",
+ "user_id": 254,
+ "notification_level": 3,
+ "created_at": "2019-11-20T17:04:38.971Z",
+ "updated_at": "2019-11-20T17:04:38.971Z",
+ "created_by_id": null,
+ "invite_email": null,
+ "invite_token": null,
+ "invite_accepted_at": null,
+ "requested_at": null,
+ "expires_at": null,
+ "ldap": false,
+ "override": false,
+ "user": {
+ "id": 254,
+ "email": "tyra.lowe@whitemckenzie.co.uk",
+ "username": "kassie"
+ }
+ },
+ {
+ "id": 13782,
+ "access_level": 40,
+ "source_id": 4355,
+ "source_type": "Namespace",
+ "user_id": 503,
+ "notification_level": 3,
+ "created_at": "2019-11-20T17:04:38.743Z",
+ "updated_at": "2019-11-20T17:04:38.743Z",
+ "created_by_id": null,
+ "invite_email": null,
+ "invite_token": null,
+ "invite_accepted_at": null,
+ "requested_at": null,
+ "expires_at": null,
+ "ldap": false,
+ "override": false,
+ "user": {
+ "id": 503,
+ "email": "tyesha.brakus@bruen.ca",
+ "username": "charise"
+ }
+ },
+ {
+ "id": 12924,
+ "access_level": 50,
+ "source_id": 4355,
+ "source_type": "Namespace",
+ "user_id": 1,
+ "notification_level": 3,
+ "created_at": "2019-11-20T17:01:54.145Z",
+ "updated_at": "2019-11-20T17:01:54.145Z",
+ "created_by_id": null,
+ "invite_email": null,
+ "invite_token": null,
+ "invite_accepted_at": null,
+ "requested_at": null,
+ "expires_at": null,
+ "ldap": false,
+ "override": false,
+ "user": {
+ "id": 1,
+ "email": "admin@example.com",
+ "username": "root"
+ }
+ }
+ ],
+ "epics": [
+ {
+ "id": 13642,
+ "milestone_id": null,
+ "group_id": 4355,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 1,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:10.151Z",
+ "updated_at": "2019-11-20T17:02:10.151Z",
+ "title": "Iste qui ratione dolores nisi vel dolor ea totam omnis aut.",
+ "description": "Voluptas dolore tenetur repudiandae repellendus maiores beatae quia et. Nisi mollitia exercitationem ut dolores tempore repellat similique. Nesciunt sit occaecati fugiat voluptates qui. Provident quod qui nulla atque dignissimos.\n\nAd veritatis nihil illum nisi est accusamus recusandae. Eos dolore autem ab corporis consectetur officiis ipsum. Consequatur non quis dolor rerum et hic consectetur dicta. Sed aut consectetur mollitia est.\n\nQuia sed dolore culpa error omnis quae quaerat. Magni quos quod illo tempore et eligendi enim. Autem reprehenderit esse vitae aut ipsum consectetur quis.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": null,
+ "relative_position": null,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null,
+ "notes": []
+ },
+ {
+ "id": 13643,
+ "milestone_id": null,
+ "group_id": 4355,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 2,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:10.166Z",
+ "updated_at": "2019-11-20T17:02:10.166Z",
+ "title": "Corporis placeat ut totam impedit ex qui debitis atque et provident.",
+ "description": "Quam aut in distinctio ut accusamus aliquam dolor sit. Aliquid quod corporis voluptas aliquam voluptate blanditiis distinctio dolore. Qui quis et qui non sunt deleniti iusto consequatur. Quasi quos omnis nobis et tenetur.\n\nCorrupti eius quod molestias et magnam laboriosam quia quis. Architecto aut eius est voluptas mollitia. Suscipit amet consequatur recusandae natus. Consectetur error quisquam est quas et qui.\n\nRerum earum fugit dolore sunt inventore. Vitae odit tempore autem adipisci voluptate esse placeat nobis. Debitis necessitatibus harum molestiae ex minima tempore consequuntur nihil.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": null,
+ "relative_position": null,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null,
+ "notes": []
+ },
+ {
+ "id": 13644,
+ "milestone_id": null,
+ "group_id": 4355,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 3,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:10.180Z",
+ "updated_at": "2019-11-20T17:02:10.180Z",
+ "title": "Voluptatem incidunt soluta fuga doloribus dolores nisi reiciendis impedit.",
+ "description": "Ipsa qui enim deleniti voluptas. Quasi nihil est blanditiis voluptas laudantium cum sequi consequatur. Id quo et atque error et possimus.\n\nUllam ea soluta ipsam sunt veritatis. Et incidunt natus consequatur repellat. Quam molestias magni consequatur soluta aut nobis. Maxime natus aperiam unde recusandae. A in dolorum facilis veniam est.\n\nEx repellendus tempore rem voluptatibus ad culpa consequatur. Consequatur quo quo dolore dicta nostrum necessitatibus tenetur. A voluptatem harum corporis qui quod molestiae culpa.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": null,
+ "relative_position": null,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null,
+ "notes": []
+ },
+ {
+ "id": 13645,
+ "milestone_id": null,
+ "group_id": 4355,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 4,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:10.194Z",
+ "updated_at": "2019-11-20T17:02:10.194Z",
+ "title": "Aut quo veniam soluta veritatis autem doloremque totam qui quia.",
+ "description": "Dolor itaque sunt perspiciatis quas natus et praesentium. A sit sapiente dolores ut et dolorum nihil omnis. Dolor quis dolores aut et perferendis.\n\nConsequatur molestiae laboriosam eum consequatur recusandae maxime deleniti commodi. Voluptas voluptatem eaque dicta animi aliquam rerum veritatis. Fugiat consequatur est sit et voluptatem.\n\nSequi tenetur itaque est vero eligendi quia laudantium et. Modi assumenda odio explicabo est non et. Voluptatem et enim minus sit at dicta est.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": null,
+ "relative_position": null,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null,
+ "notes": []
+ },
+ {
+ "id": 13646,
+ "milestone_id": null,
+ "group_id": 4355,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 5,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:10.208Z",
+ "updated_at": "2019-11-20T17:02:10.208Z",
+ "title": "Reprehenderit molestias incidunt non odio laudantium minima eum debitis ipsum.",
+ "description": "Quas velit omnis architecto quis eius. Vitae unde velit veniam dolor. Dolores facilis vel repellat et placeat ea rerum ratione. Rem fugit ab assumenda provident vel voluptas harum.\n\nQuia molestias similique illum delectus modi officiis. Aut modi sit ut qui. Est sequi corrupti laudantium ut optio eveniet ut. Corrupti quo provident natus aut omnis nam.\n\nVoluptas facilis repudiandae est quam. Mollitia fugit sint voluptatem aut. Quam quo eligendi id ad perferendis quis magnam. Corrupti sequi vel deleniti odit qui fugit.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": null,
+ "relative_position": null,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null,
+ "notes": []
+ }
+ ],
+ "children": []
+ }
+ ]
+}
diff --git a/spec/fixtures/lib/gitlab/import_export/group_exports/no_children/group.json b/spec/fixtures/lib/gitlab/import_export/group_exports/no_children/group.json
new file mode 100644
index 00000000000..3ffa899405e
--- /dev/null
+++ b/spec/fixtures/lib/gitlab/import_export/group_exports/no_children/group.json
@@ -0,0 +1,957 @@
+{
+ "name": "group",
+ "path": "group",
+ "owner_id": null,
+ "created_at": "2019-11-20 17:01:53 UTC",
+ "updated_at": "2019-11-20 17:05:44 UTC",
+ "description": "Group Description",
+ "avatar": {
+ "url": null
+ },
+ "membership_lock": false,
+ "share_with_group_lock": false,
+ "visibility_level": 0,
+ "request_access_enabled": true,
+ "ldap_sync_status": "ready",
+ "ldap_sync_error": null,
+ "ldap_sync_last_update_at": null,
+ "ldap_sync_last_successful_update_at": null,
+ "ldap_sync_last_sync_at": null,
+ "lfs_enabled": null,
+ "parent_id": null,
+ "shared_runners_minutes_limit": null,
+ "repository_size_limit": null,
+ "require_two_factor_authentication": false,
+ "two_factor_grace_period": 48,
+ "plan_id": null,
+ "project_creation_level": 2,
+ "trial_ends_on": null,
+ "file_template_project_id": null,
+ "saml_discovery_token": "rBKx3ioz",
+ "custom_project_templates_group_id": null,
+ "auto_devops_enabled": null,
+ "extra_shared_runners_minutes_limit": null,
+ "last_ci_minutes_notification_at": null,
+ "last_ci_minutes_usage_notification_level": null,
+ "subgroup_creation_level": 1,
+ "emails_disabled": null,
+ "max_pages_size": null,
+ "max_artifacts_size": null,
+ "milestones": [
+ {
+ "id": 7642,
+ "title": "v4.0",
+ "project_id": null,
+ "description": "Et laudantium enim omnis ea reprehenderit iure.",
+ "due_date": null,
+ "created_at": "2019-11-20T17:02:14.336Z",
+ "updated_at": "2019-11-20T17:02:14.336Z",
+ "state": "closed",
+ "iid": 5,
+ "start_date": null,
+ "group_id": 4351
+ },
+ {
+ "id": 7641,
+ "title": "v3.0",
+ "project_id": null,
+ "description": "Et repellat culpa nemo consequatur ut reprehenderit.",
+ "due_date": null,
+ "created_at": "2019-11-20T17:02:14.323Z",
+ "updated_at": "2019-11-20T17:02:14.323Z",
+ "state": "active",
+ "iid": 4,
+ "start_date": null,
+ "group_id": 4351
+ },
+ {
+ "id": 7640,
+ "title": "v2.0",
+ "project_id": null,
+ "description": "Velit cupiditate est neque voluptates iste rem sunt.",
+ "due_date": null,
+ "created_at": "2019-11-20T17:02:14.309Z",
+ "updated_at": "2019-11-20T17:02:14.309Z",
+ "state": "active",
+ "iid": 3,
+ "start_date": null,
+ "group_id": 4351
+ },
+ {
+ "id": 7639,
+ "title": "v1.0",
+ "project_id": null,
+ "description": "Amet velit repellat ut rerum aut cum.",
+ "due_date": null,
+ "created_at": "2019-11-20T17:02:14.296Z",
+ "updated_at": "2019-11-20T17:02:14.296Z",
+ "state": "active",
+ "iid": 2,
+ "start_date": null,
+ "group_id": 4351
+ },
+ {
+ "id": 7638,
+ "title": "v0.0",
+ "project_id": null,
+ "description": "Ea quia asperiores ut modi dolorem sunt non numquam.",
+ "due_date": null,
+ "created_at": "2019-11-20T17:02:14.282Z",
+ "updated_at": "2019-11-20T17:02:14.282Z",
+ "state": "active",
+ "iid": 1,
+ "start_date": null,
+ "group_id": 4351
+ }
+ ],
+ "badges": [
+ {
+ "id": 10,
+ "link_url": "https://localhost:3443/%{default_branch}",
+ "image_url": "https://badge_image.png",
+ "project_id": null,
+ "group_id": 4351,
+ "created_at": "2019-11-20T17:27:02.047Z",
+ "updated_at": "2019-11-20T17:27:02.047Z",
+ "type": "GroupBadge"
+ }
+ ],
+ "labels": [
+ {
+ "id": 23452,
+ "title": "Bruffefunc",
+ "color": "#1d2da4",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.546Z",
+ "updated_at": "2019-11-20T17:02:20.546Z",
+ "template": false,
+ "description": null,
+ "group_id": 4351,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23446,
+ "title": "Cafunc",
+ "color": "#73ed5b",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.526Z",
+ "updated_at": "2019-11-20T17:02:20.526Z",
+ "template": false,
+ "description": null,
+ "group_id": 4351,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23451,
+ "title": "Casche",
+ "color": "#649a75",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.544Z",
+ "updated_at": "2019-11-20T17:02:20.544Z",
+ "template": false,
+ "description": null,
+ "group_id": 4351,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23444,
+ "title": "Cocell",
+ "color": "#1b365c",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.521Z",
+ "updated_at": "2019-11-20T17:02:20.521Z",
+ "template": false,
+ "description": null,
+ "group_id": 4351,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23449,
+ "title": "Packfunc",
+ "color": "#e33bba",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.537Z",
+ "updated_at": "2019-11-20T17:02:20.537Z",
+ "template": false,
+ "description": null,
+ "group_id": 4351,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23443,
+ "title": "Panabalt",
+ "color": "#84f708",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.518Z",
+ "updated_at": "2019-11-20T17:02:20.518Z",
+ "template": false,
+ "description": null,
+ "group_id": 4351,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23447,
+ "title": "Phierefunc",
+ "color": "#4ab4a8",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.530Z",
+ "updated_at": "2019-11-20T17:02:20.530Z",
+ "template": false,
+ "description": null,
+ "group_id": 4351,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23445,
+ "title": "Pons",
+ "color": "#47f440",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.523Z",
+ "updated_at": "2019-11-20T17:02:20.523Z",
+ "template": false,
+ "description": null,
+ "group_id": 4351,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23448,
+ "title": "Sosync",
+ "color": "#110320",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.532Z",
+ "updated_at": "2019-11-20T17:02:20.532Z",
+ "template": false,
+ "description": null,
+ "group_id": 4351,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ },
+ {
+ "id": 23450,
+ "title": "TSL",
+ "color": "#58796f",
+ "project_id": null,
+ "created_at": "2019-11-20T17:02:20.541Z",
+ "updated_at": "2019-11-20T17:02:20.541Z",
+ "template": false,
+ "description": null,
+ "group_id": 4351,
+ "type": "GroupLabel",
+ "priorities": [],
+ "textColor": "#FFFFFF"
+ }
+ ],
+ "boards": [
+ {
+ "id": 56,
+ "project_id": null,
+ "created_at": "2019-11-20T17:27:16.808Z",
+ "updated_at": "2019-11-20T17:27:16.808Z",
+ "name": "Development",
+ "milestone_id": null,
+ "group_id": 4351,
+ "weight": null,
+ "labels": []
+ },
+ {
+ "id": 57,
+ "project_id": null,
+ "created_at": "2019-11-20T17:27:41.118Z",
+ "updated_at": "2019-11-20T17:27:41.118Z",
+ "name": "Board!",
+ "milestone_id": 7638,
+ "group_id": 4351,
+ "weight": null,
+ "labels": []
+ }
+ ],
+ "members": [
+ {
+ "id": 13766,
+ "access_level": 30,
+ "source_id": 4351,
+ "source_type": "Namespace",
+ "user_id": 42,
+ "notification_level": 3,
+ "created_at": "2019-11-20T17:04:36.184Z",
+ "updated_at": "2019-11-20T17:04:36.184Z",
+ "created_by_id": null,
+ "invite_email": null,
+ "invite_token": null,
+ "invite_accepted_at": null,
+ "requested_at": null,
+ "expires_at": null,
+ "ldap": false,
+ "override": false,
+ "user": {
+ "id": 42,
+ "email": "moriah@collinsmurphy.com",
+ "username": "reported_user_15"
+ }
+ },
+ {
+ "id": 13765,
+ "access_level": 40,
+ "source_id": 4351,
+ "source_type": "Namespace",
+ "user_id": 271,
+ "notification_level": 3,
+ "created_at": "2019-11-20T17:04:36.044Z",
+ "updated_at": "2019-11-20T17:04:36.044Z",
+ "created_by_id": null,
+ "invite_email": null,
+ "invite_token": null,
+ "invite_accepted_at": null,
+ "requested_at": null,
+ "expires_at": null,
+ "ldap": false,
+ "override": false,
+ "user": {
+ "id": 271,
+ "email": "garret@connellystark.ca",
+ "username": "charlesetta"
+ }
+ },
+ {
+ "id": 13764,
+ "access_level": 30,
+ "source_id": 4351,
+ "source_type": "Namespace",
+ "user_id": 206,
+ "notification_level": 3,
+ "created_at": "2019-11-20T17:04:35.840Z",
+ "updated_at": "2019-11-20T17:04:35.840Z",
+ "created_by_id": null,
+ "invite_email": null,
+ "invite_token": null,
+ "invite_accepted_at": null,
+ "requested_at": null,
+ "expires_at": null,
+ "ldap": false,
+ "override": false,
+ "user": {
+ "id": 206,
+ "email": "margaret.bergnaum@reynolds.us",
+ "username": "gwendolyn_robel"
+ }
+ },
+ {
+ "id": 13763,
+ "access_level": 10,
+ "source_id": 4351,
+ "source_type": "Namespace",
+ "user_id": 39,
+ "notification_level": 3,
+ "created_at": "2019-11-20T17:04:35.704Z",
+ "updated_at": "2019-11-20T17:04:35.704Z",
+ "created_by_id": null,
+ "invite_email": null,
+ "invite_token": null,
+ "invite_accepted_at": null,
+ "requested_at": null,
+ "expires_at": null,
+ "ldap": false,
+ "override": false,
+ "user": {
+ "id": 39,
+ "email": "alexis_berge@kerlukeklein.us",
+ "username": "reported_user_12"
+ }
+ },
+ {
+ "id": 13762,
+ "access_level": 20,
+ "source_id": 4351,
+ "source_type": "Namespace",
+ "user_id": 1624,
+ "notification_level": 3,
+ "created_at": "2019-11-20T17:04:35.566Z",
+ "updated_at": "2019-11-20T17:04:35.566Z",
+ "created_by_id": null,
+ "invite_email": null,
+ "invite_token": null,
+ "invite_accepted_at": null,
+ "requested_at": null,
+ "expires_at": null,
+ "ldap": false,
+ "override": false,
+ "user": {
+ "id": 1624,
+ "email": "nakesha.herzog@powlowski.com",
+ "username": "adriene.mcclure"
+ }
+ },
+ {
+ "id": 12920,
+ "access_level": 50,
+ "source_id": 4351,
+ "source_type": "Namespace",
+ "user_id": 1,
+ "notification_level": 3,
+ "created_at": "2019-11-20T17:01:53.505Z",
+ "updated_at": "2019-11-20T17:01:53.505Z",
+ "created_by_id": null,
+ "invite_email": null,
+ "invite_token": null,
+ "invite_accepted_at": null,
+ "requested_at": null,
+ "expires_at": null,
+ "ldap": false,
+ "override": false,
+ "user": {
+ "id": 1,
+ "email": "admin@example.com",
+ "username": "root"
+ }
+ }
+ ],
+ "epics": [
+ {
+ "id": 13622,
+ "milestone_id": null,
+ "group_id": 4351,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 1,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:09.754Z",
+ "updated_at": "2019-11-20T18:38:40.054Z",
+ "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.",
+ "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": null,
+ "relative_position": null,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null,
+ "notes": [
+ {
+ "id": 44170,
+ "note": "added epic \u00265 as child epic",
+ "noteable_type": "Epic",
+ "author_id": 1,
+ "created_at": "2019-11-20T18:38:40.031Z",
+ "updated_at": "2019-11-20T18:38:40.035Z",
+ "project_id": null,
+ "attachment": {
+ "url": null
+ },
+ "line_code": null,
+ "commit_id": null,
+ "noteable_id": 13622,
+ "system": true,
+ "st_diff": null,
+ "updated_by_id": null,
+ "position": null,
+ "original_position": null,
+ "resolved_at": null,
+ "resolved_by_id": null,
+ "discussion_id": "ba005d8dd59cd37a4f32406d46e759b08fd15510",
+ "change_position": null,
+ "resolved_by_push": null,
+ "review_id": null,
+ "type": null,
+ "author": {
+ "name": "Administrator"
+ }
+ },
+ {
+ "id": 44168,
+ "note": "added epic \u00264 as child epic",
+ "noteable_type": "Epic",
+ "author_id": 1,
+ "created_at": "2019-11-20T18:38:35.669Z",
+ "updated_at": "2019-11-20T18:38:35.673Z",
+ "project_id": null,
+ "attachment": {
+ "url": null
+ },
+ "line_code": null,
+ "commit_id": null,
+ "noteable_id": 13622,
+ "system": true,
+ "st_diff": null,
+ "updated_by_id": null,
+ "position": null,
+ "original_position": null,
+ "resolved_at": null,
+ "resolved_by_id": null,
+ "discussion_id": "9b49d3b017aadc1876d477b960e6f8efb99ce29f",
+ "change_position": null,
+ "resolved_by_push": null,
+ "review_id": null,
+ "type": null,
+ "author": {
+ "name": "Administrator"
+ }
+ },
+ {
+ "id": 44166,
+ "note": "added epic \u00263 as child epic",
+ "noteable_type": "Epic",
+ "author_id": 1,
+ "created_at": "2019-11-20T18:38:30.944Z",
+ "updated_at": "2019-11-20T18:38:30.948Z",
+ "project_id": null,
+ "attachment": {
+ "url": null
+ },
+ "line_code": null,
+ "commit_id": null,
+ "noteable_id": 13622,
+ "system": true,
+ "st_diff": null,
+ "updated_by_id": null,
+ "position": null,
+ "original_position": null,
+ "resolved_at": null,
+ "resolved_by_id": null,
+ "discussion_id": "cccfe967f48e699a466c87a55a9f8acb00fec1a1",
+ "change_position": null,
+ "resolved_by_push": null,
+ "review_id": null,
+ "type": null,
+ "author": {
+ "name": "Administrator"
+ }
+ },
+ {
+ "id": 44164,
+ "note": "added epic \u00262 as child epic",
+ "noteable_type": "Epic",
+ "author_id": 1,
+ "created_at": "2019-11-20T18:38:26.689Z",
+ "updated_at": "2019-11-20T18:38:26.724Z",
+ "project_id": null,
+ "attachment": {
+ "url": null
+ },
+ "line_code": null,
+ "commit_id": null,
+ "noteable_id": 13622,
+ "system": true,
+ "st_diff": null,
+ "updated_by_id": null,
+ "position": null,
+ "original_position": null,
+ "resolved_at": null,
+ "resolved_by_id": null,
+ "discussion_id": "133f0c3001860fa8d2031e398a65db74477378c4",
+ "change_position": null,
+ "resolved_by_push": null,
+ "review_id": null,
+ "type": null,
+ "author": {
+ "name": "Administrator"
+ }
+ }
+ ]
+ },
+ {
+ "id": 13623,
+ "milestone_id": null,
+ "group_id": 4351,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 2,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:09.769Z",
+ "updated_at": "2019-11-20T18:38:26.851Z",
+ "title": "Omnis accusantium commodi voluptas odio illo eum ut.",
+ "description": "Eius vero et iste amet est voluptatem modi. Doloribus ipsam beatae et ut autem ut animi. Dolor culpa dolor omnis delectus est tempora inventore ab. Optio labore tenetur libero quia provident et quis. Blanditiis architecto sint possimus cum aut adipisci.\n\nDolores quisquam sunt cupiditate unde qui vitae nemo. Odio quas omnis ut nobis. Possimus fugit deserunt quia sed ab numquam veritatis nihil.\n\nQui nemo adipisci magnam perferendis voluptatem modi. Eius enim iure dolores consequuntur eum nobis adipisci. Consequatur architecto et quas deleniti hic id laborum officiis. Enim perferendis quis quasi totam delectus rerum deleniti.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": 13622,
+ "relative_position": 1073741323,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null,
+ "parent": {
+ "id": 13622,
+ "milestone_id": null,
+ "group_id": 4351,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 1,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:09.754Z",
+ "updated_at": "2019-11-20T18:38:40.054Z",
+ "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.",
+ "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": null,
+ "relative_position": null,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null
+ },
+ "notes": [
+ {
+ "id": 44165,
+ "note": "added epic \u00261 as parent epic",
+ "noteable_type": "Epic",
+ "author_id": 1,
+ "created_at": "2019-11-20T18:38:26.822Z",
+ "updated_at": "2019-11-20T18:38:26.826Z",
+ "project_id": null,
+ "attachment": {
+ "url": null
+ },
+ "line_code": null,
+ "commit_id": null,
+ "noteable_id": 13623,
+ "system": true,
+ "st_diff": null,
+ "updated_by_id": null,
+ "position": null,
+ "original_position": null,
+ "resolved_at": null,
+ "resolved_by_id": null,
+ "discussion_id": "15f0a7f4ed16a07bc78841e122524bb867edcf86",
+ "change_position": null,
+ "resolved_by_push": null,
+ "review_id": null,
+ "type": null,
+ "author": {
+ "name": "Administrator"
+ }
+ }
+ ]
+ },
+ {
+ "id": 13624,
+ "milestone_id": null,
+ "group_id": 4351,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 3,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:09.783Z",
+ "updated_at": "2019-11-20T18:38:31.018Z",
+ "title": "Quis dolore velit possimus eaque aut amet esse voluptate aliquam.",
+ "description": "Ab veritatis reprehenderit nulla laboriosam et sed asperiores corporis. Est accusantium maxime perferendis et. Omnis a qui voluptates non excepturi.\n\nAdipisci labore maiores dicta sed magnam aut. Veritatis delectus dolorum qui id. Dolorum tenetur quo iure amet. Eveniet reprehenderit dolor ipsam quia ratione quo. Facilis voluptatem vel repellat id illum.\n\nAut et magnam aut minus aspernatur. Fuga quo necessitatibus mollitia maxime quasi. Qui aspernatur quia accusamus est quod. Qui assumenda veritatis dolor non eveniet quibusdam quos qui.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": 13622,
+ "relative_position": 1073740823,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null,
+ "parent": {
+ "id": 13622,
+ "milestone_id": null,
+ "group_id": 4351,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 1,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:09.754Z",
+ "updated_at": "2019-11-20T18:38:40.054Z",
+ "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.",
+ "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": null,
+ "relative_position": null,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null
+ },
+ "notes": [
+ {
+ "id": 44167,
+ "note": "added epic \u00261 as parent epic",
+ "noteable_type": "Epic",
+ "author_id": 1,
+ "created_at": "2019-11-20T18:38:30.989Z",
+ "updated_at": "2019-11-20T18:38:30.993Z",
+ "project_id": null,
+ "attachment": {
+ "url": null
+ },
+ "line_code": null,
+ "commit_id": null,
+ "noteable_id": 13624,
+ "system": true,
+ "st_diff": null,
+ "updated_by_id": null,
+ "position": null,
+ "original_position": null,
+ "resolved_at": null,
+ "resolved_by_id": null,
+ "discussion_id": "423ffec14a3ce148c11a802eb1f2613fa8ca9a94",
+ "change_position": null,
+ "resolved_by_push": null,
+ "review_id": null,
+ "type": null,
+ "author": {
+ "name": "Administrator"
+ }
+ }
+ ]
+ },
+ {
+ "id": 13625,
+ "milestone_id": null,
+ "group_id": 4351,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 4,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:09.798Z",
+ "updated_at": "2019-11-20T18:38:35.765Z",
+ "title": "Possimus et ut iste temporibus earum cupiditate voluptatem esse assumenda amet.",
+ "description": "Et at corporis sed id rerum ullam dolore. Odio magnam corporis excepturi neque est. Est accusamus nostrum qui rerum.\n\nEt aut dolores eaque quibusdam aut quas explicabo id. Est necessitatibus praesentium omnis et vero laboriosam et. Sunt in saepe qui laudantium et voluptas.\n\nVelit sunt odit eum omnis beatae eius aut. Dolores commodi qui impedit deleniti et magnam pariatur. Aut odit amet ipsum ea atque. Itaque est ut sunt ullam eum nam.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": 13622,
+ "relative_position": 1073740323,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null,
+ "parent": {
+ "id": 13622,
+ "milestone_id": null,
+ "group_id": 4351,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 1,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:09.754Z",
+ "updated_at": "2019-11-20T18:38:40.054Z",
+ "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.",
+ "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": null,
+ "relative_position": null,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null
+ },
+ "notes": [
+ {
+ "id": 44169,
+ "note": "added epic \u00261 as parent epic",
+ "noteable_type": "Epic",
+ "author_id": 1,
+ "created_at": "2019-11-20T18:38:35.737Z",
+ "updated_at": "2019-11-20T18:38:35.741Z",
+ "project_id": null,
+ "attachment": {
+ "url": null
+ },
+ "line_code": null,
+ "commit_id": null,
+ "noteable_id": 13625,
+ "system": true,
+ "st_diff": null,
+ "updated_by_id": null,
+ "position": null,
+ "original_position": null,
+ "resolved_at": null,
+ "resolved_by_id": null,
+ "discussion_id": "5bc3e30d508affafc61de2b4e1d9f21039505cc3",
+ "change_position": null,
+ "resolved_by_push": null,
+ "review_id": null,
+ "type": null,
+ "author": {
+ "name": "Administrator"
+ }
+ }
+ ]
+ },
+ {
+ "id": 13626,
+ "milestone_id": null,
+ "group_id": 4351,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 5,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:09.812Z",
+ "updated_at": "2019-11-20T18:38:40.101Z",
+ "title": "Ab deleniti ipsum voluptatem dolor qui quos saepe repellat quo.",
+ "description": "Sunt minus sunt reiciendis culpa sed excepturi. Aperiam sed quod nemo nesciunt et quia molestias incidunt. Ipsum nam magnam labore eos a molestiae rerum possimus. Sequi autem asperiores voluptas assumenda.\n\nRerum ipsa quia cum ab corrupti omnis. Velit libero et nihil ipsa aut quo rem ipsam. Architecto omnis distinctio sed doloribus perspiciatis consequatur aut et. Fugit consequuntur est minima reiciendis reprehenderit et.\n\nConsequatur distinctio et ut blanditiis perferendis officiis inventore. Alias aut voluptatem in facere. Ut perferendis dolorum hic dolores. Ipsa dolorem soluta at mollitia. Placeat et ea numquam dicta molestias.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": 13622,
+ "relative_position": 1073739823,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null,
+ "parent": {
+ "id": 13622,
+ "milestone_id": null,
+ "group_id": 4351,
+ "author_id": 1,
+ "assignee_id": null,
+ "iid": 1,
+ "updated_by_id": null,
+ "last_edited_by_id": null,
+ "lock_version": 0,
+ "start_date": null,
+ "end_date": null,
+ "last_edited_at": null,
+ "created_at": "2019-11-20T17:02:09.754Z",
+ "updated_at": "2019-11-20T18:38:40.054Z",
+ "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.",
+ "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.",
+ "start_date_sourcing_milestone_id": null,
+ "due_date_sourcing_milestone_id": null,
+ "start_date_fixed": null,
+ "due_date_fixed": null,
+ "start_date_is_fixed": null,
+ "due_date_is_fixed": null,
+ "closed_by_id": null,
+ "closed_at": null,
+ "parent_id": null,
+ "relative_position": null,
+ "state_id": "opened",
+ "start_date_sourcing_epic_id": null,
+ "due_date_sourcing_epic_id": null
+ },
+ "notes": [
+ {
+ "id": 44171,
+ "note": "added epic \u00261 as parent epic",
+ "noteable_type": "Epic",
+ "author_id": 1,
+ "created_at": "2019-11-20T18:38:40.074Z",
+ "updated_at": "2019-11-20T18:38:40.077Z",
+ "project_id": null,
+ "attachment": {
+ "url": null
+ },
+ "line_code": null,
+ "commit_id": null,
+ "noteable_id": 13626,
+ "system": true,
+ "st_diff": null,
+ "updated_by_id": null,
+ "position": null,
+ "original_position": null,
+ "resolved_at": null,
+ "resolved_by_id": null,
+ "discussion_id": "a6231acdaef5f4d2e569dfb604f1baf85c49e1a0",
+ "change_position": null,
+ "resolved_by_push": null,
+ "review_id": null,
+ "type": null,
+ "author": {
+ "name": "Administrator"
+ }
+ }
+ ]
+ }
+ ],
+ "children": []
+}
diff --git a/spec/fixtures/lib/gitlab/import_export/with_invalid_records/project.json b/spec/fixtures/lib/gitlab/import_export/with_invalid_records/project.json
new file mode 100644
index 00000000000..40d08f78f28
--- /dev/null
+++ b/spec/fixtures/lib/gitlab/import_export/with_invalid_records/project.json
@@ -0,0 +1,38 @@
+{
+ "description": "Nisi et repellendus ut enim quo accusamus vel magnam.",
+ "import_type": "gitlab_project",
+ "creator_id": 999,
+ "visibility_level": 10,
+ "archived": false,
+ "milestones": [
+ {
+ "id": 1,
+ "title": null,
+ "project_id": 8,
+ "description": 123,
+ "due_date": null,
+ "created_at": "NOT A DATE",
+ "updated_at": "NOT A DATE",
+ "state": "active",
+ "iid": 1,
+ "group_id": null
+ },
+ {
+ "id": 42,
+ "title": "A valid milestone",
+ "project_id": 8,
+ "description": "Project-level milestone",
+ "due_date": null,
+ "created_at": "2016-06-14T15:02:04.415Z",
+ "updated_at": "2016-06-14T15:02:04.415Z",
+ "state": "active",
+ "iid": 1,
+ "group_id": null
+ }
+ ],
+ "labels": [],
+ "issues": [],
+ "services": [],
+ "snippets": [],
+ "hooks": []
+}
diff --git a/spec/fixtures/lib/gitlab/metrics/dashboard/schemas/panel_groups.json b/spec/fixtures/lib/gitlab/metrics/dashboard/schemas/panel_groups.json
index d7a390adcdc..f4afb4cbffc 100644
--- a/spec/fixtures/lib/gitlab/metrics/dashboard/schemas/panel_groups.json
+++ b/spec/fixtures/lib/gitlab/metrics/dashboard/schemas/panel_groups.json
@@ -2,7 +2,6 @@
"type": "object",
"required": [
"group",
- "priority",
"panels"
],
"properties": {
diff --git a/spec/fixtures/project_export.tar.gz b/spec/fixtures/project_export.tar.gz
index 72ab2d71f35..5ba3bfd4f48 100644
--- a/spec/fixtures/project_export.tar.gz
+++ b/spec/fixtures/project_export.tar.gz
Binary files differ
diff --git a/spec/frontend/admin/statistics_panel/components/app_spec.js b/spec/frontend/admin/statistics_panel/components/app_spec.js
index 25b1d432e2d..eba61949f8e 100644
--- a/spec/frontend/admin/statistics_panel/components/app_spec.js
+++ b/spec/frontend/admin/statistics_panel/components/app_spec.js
@@ -1,12 +1,12 @@
import Vuex from 'vuex';
import { createLocalVue, shallowMount } from '@vue/test-utils';
import AxiosMockAdapter from 'axios-mock-adapter';
+import { GlLoadingIcon } from '@gitlab/ui';
import axios from '~/lib/utils/axios_utils';
import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils';
import StatisticsPanelApp from '~/admin/statistics_panel/components/app.vue';
import statisticsLabels from '~/admin/statistics_panel/constants';
import createStore from '~/admin/statistics_panel/store';
-import { GlLoadingIcon } from '@gitlab/ui';
import mockStatistics from '../mock_data';
const localVue = createLocalVue();
diff --git a/spec/frontend/autosave_spec.js b/spec/frontend/autosave_spec.js
index 33d402388c9..3119477f385 100644
--- a/spec/frontend/autosave_spec.js
+++ b/spec/frontend/autosave_spec.js
@@ -1,7 +1,7 @@
import $ from 'jquery';
+import { useLocalStorageSpy } from 'helpers/local_storage_helper';
import Autosave from '~/autosave';
import AccessorUtilities from '~/lib/utils/accessor';
-import { useLocalStorageSpy } from 'helpers/local_storage_helper';
describe('Autosave', () => {
useLocalStorageSpy();
@@ -9,6 +9,7 @@ describe('Autosave', () => {
let autosave;
const field = $('<textarea></textarea>');
const key = 'key';
+ const fallbackKey = 'fallbackKey';
describe('class constructor', () => {
beforeEach(() => {
@@ -22,6 +23,13 @@ describe('Autosave', () => {
expect(AccessorUtilities.isLocalStorageAccessSafe).toHaveBeenCalled();
expect(autosave.isLocalStorageAvailable).toBe(true);
});
+
+ it('should set .isLocalStorageAvailable if fallbackKey is passed', () => {
+ autosave = new Autosave(field, key, fallbackKey);
+
+ expect(AccessorUtilities.isLocalStorageAccessSafe).toHaveBeenCalled();
+ expect(autosave.isLocalStorageAvailable).toBe(true);
+ });
});
describe('restore', () => {
@@ -151,4 +159,33 @@ describe('Autosave', () => {
});
});
});
+
+ describe('restore with fallbackKey', () => {
+ beforeEach(() => {
+ autosave = {
+ field,
+ key,
+ fallbackKey,
+ };
+ autosave.isLocalStorageAvailable = true;
+ });
+
+ it('should call .getItem', () => {
+ Autosave.prototype.restore.call(autosave);
+
+ expect(window.localStorage.getItem).toHaveBeenCalledWith(fallbackKey);
+ });
+
+ it('should call .setItem for key and fallbackKey', () => {
+ Autosave.prototype.save.call(autosave);
+
+ expect(window.localStorage.setItem).toHaveBeenCalledTimes(2);
+ });
+
+ it('should call .removeItem for key and fallbackKey', () => {
+ Autosave.prototype.reset.call(autosave);
+
+ expect(window.localStorage.removeItem).toHaveBeenCalledTimes(2);
+ });
+ });
});
diff --git a/spec/frontend/behaviors/markdown/render_metrics_spec.js b/spec/frontend/behaviors/markdown/render_metrics_spec.js
index 6db0eabc16b..9157d2a8448 100644
--- a/spec/frontend/behaviors/markdown/render_metrics_spec.js
+++ b/spec/frontend/behaviors/markdown/render_metrics_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import renderMetrics from '~/behaviors/markdown/render_metrics';
import { TEST_HOST } from 'helpers/test_constants';
+import renderMetrics from '~/behaviors/markdown/render_metrics';
const originalExtend = Vue.extend;
diff --git a/spec/frontend/boards/boards_store_spec.js b/spec/frontend/boards/boards_store_spec.js
new file mode 100644
index 00000000000..bf3d81d3117
--- /dev/null
+++ b/spec/frontend/boards/boards_store_spec.js
@@ -0,0 +1,1037 @@
+import AxiosMockAdapter from 'axios-mock-adapter';
+import { TEST_HOST } from 'helpers/test_constants';
+import axios from '~/lib/utils/axios_utils';
+import boardsStore from '~/boards/stores/boards_store';
+import eventHub from '~/boards/eventhub';
+import { listObj, listObjDuplicate } from './mock_data';
+
+import ListIssue from '~/boards/models/issue';
+import '~/boards/models/list';
+
+jest.mock('js-cookie');
+
+const createTestIssue = () => ({
+ title: 'Testing',
+ id: 1,
+ iid: 1,
+ confidential: false,
+ labels: [],
+ assignees: [],
+});
+
+describe('boardsStore', () => {
+ const dummyResponse = "without type checking this doesn't matter";
+ const boardId = 'dummy-board-id';
+ const endpoints = {
+ boardsEndpoint: `${TEST_HOST}/boards`,
+ listsEndpoint: `${TEST_HOST}/lists`,
+ bulkUpdatePath: `${TEST_HOST}/bulk/update`,
+ recentBoardsEndpoint: `${TEST_HOST}/recent/boards`,
+ };
+
+ let axiosMock;
+
+ beforeEach(() => {
+ axiosMock = new AxiosMockAdapter(axios);
+ boardsStore.setEndpoints({
+ ...endpoints,
+ boardId,
+ });
+ });
+
+ afterEach(() => {
+ axiosMock.restore();
+ });
+
+ const setupDefaultResponses = () => {
+ axiosMock
+ .onGet(`${endpoints.listsEndpoint}/${listObj.id}/issues?id=${listObj.id}&page=1`)
+ .reply(200, { issues: [createTestIssue()] });
+ axiosMock.onPost(endpoints.listsEndpoint).reply(200, listObj);
+ axiosMock.onPut();
+ };
+
+ describe('all', () => {
+ it('makes a request to fetch lists', () => {
+ axiosMock.onGet(endpoints.listsEndpoint).replyOnce(200, dummyResponse);
+ const expectedResponse = expect.objectContaining({ data: dummyResponse });
+
+ return expect(boardsStore.all()).resolves.toEqual(expectedResponse);
+ });
+
+ it('fails for error response', () => {
+ axiosMock.onGet(endpoints.listsEndpoint).replyOnce(500);
+
+ return expect(boardsStore.all()).rejects.toThrow();
+ });
+ });
+
+ describe('generateDefaultLists', () => {
+ const listsEndpointGenerate = `${endpoints.listsEndpoint}/generate.json`;
+
+ it('makes a request to generate default lists', () => {
+ axiosMock.onPost(listsEndpointGenerate).replyOnce(200, dummyResponse);
+ const expectedResponse = expect.objectContaining({ data: dummyResponse });
+
+ return expect(boardsStore.generateDefaultLists()).resolves.toEqual(expectedResponse);
+ });
+
+ it('fails for error response', () => {
+ axiosMock.onPost(listsEndpointGenerate).replyOnce(500);
+
+ return expect(boardsStore.generateDefaultLists()).rejects.toThrow();
+ });
+ });
+
+ describe('createList', () => {
+ const entityType = 'moorhen';
+ const entityId = 'quack';
+ const expectedRequest = expect.objectContaining({
+ data: JSON.stringify({ list: { [entityType]: entityId } }),
+ });
+
+ let requestSpy;
+
+ beforeEach(() => {
+ requestSpy = jest.fn();
+ axiosMock.onPost(endpoints.listsEndpoint).replyOnce(config => requestSpy(config));
+ });
+
+ it('makes a request to create a list', () => {
+ requestSpy.mockReturnValue([200, dummyResponse]);
+ const expectedResponse = expect.objectContaining({ data: dummyResponse });
+
+ return expect(boardsStore.createList(entityId, entityType))
+ .resolves.toEqual(expectedResponse)
+ .then(() => {
+ expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
+ });
+ });
+
+ it('fails for error response', () => {
+ requestSpy.mockReturnValue([500]);
+
+ return expect(boardsStore.createList(entityId, entityType))
+ .rejects.toThrow()
+ .then(() => {
+ expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
+ });
+ });
+ });
+
+ describe('updateList', () => {
+ const id = 'David Webb';
+ const position = 'unknown';
+ const collapsed = false;
+ const expectedRequest = expect.objectContaining({
+ data: JSON.stringify({ list: { position, collapsed } }),
+ });
+
+ let requestSpy;
+
+ beforeEach(() => {
+ requestSpy = jest.fn();
+ axiosMock.onPut(`${endpoints.listsEndpoint}/${id}`).replyOnce(config => requestSpy(config));
+ });
+
+ it('makes a request to update a list position', () => {
+ requestSpy.mockReturnValue([200, dummyResponse]);
+ const expectedResponse = expect.objectContaining({ data: dummyResponse });
+
+ return expect(boardsStore.updateList(id, position, collapsed))
+ .resolves.toEqual(expectedResponse)
+ .then(() => {
+ expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
+ });
+ });
+
+ it('fails for error response', () => {
+ requestSpy.mockReturnValue([500]);
+
+ return expect(boardsStore.updateList(id, position, collapsed))
+ .rejects.toThrow()
+ .then(() => {
+ expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
+ });
+ });
+ });
+
+ describe('destroyList', () => {
+ const id = '-42';
+
+ let requestSpy;
+
+ beforeEach(() => {
+ requestSpy = jest.fn();
+ axiosMock
+ .onDelete(`${endpoints.listsEndpoint}/${id}`)
+ .replyOnce(config => requestSpy(config));
+ });
+
+ it('makes a request to delete a list', () => {
+ requestSpy.mockReturnValue([200, dummyResponse]);
+ const expectedResponse = expect.objectContaining({ data: dummyResponse });
+
+ return expect(boardsStore.destroyList(id))
+ .resolves.toEqual(expectedResponse)
+ .then(() => {
+ expect(requestSpy).toHaveBeenCalled();
+ });
+ });
+
+ it('fails for error response', () => {
+ requestSpy.mockReturnValue([500]);
+
+ return expect(boardsStore.destroyList(id))
+ .rejects.toThrow()
+ .then(() => {
+ expect(requestSpy).toHaveBeenCalled();
+ });
+ });
+ });
+
+ describe('getIssuesForList', () => {
+ const id = 'TOO-MUCH';
+ const url = `${endpoints.listsEndpoint}/${id}/issues?id=${id}`;
+
+ it('makes a request to fetch list issues', () => {
+ axiosMock.onGet(url).replyOnce(200, dummyResponse);
+ const expectedResponse = expect.objectContaining({ data: dummyResponse });
+
+ return expect(boardsStore.getIssuesForList(id)).resolves.toEqual(expectedResponse);
+ });
+
+ it('makes a request to fetch list issues with filter', () => {
+ const filter = { algal: 'scrubber' };
+ axiosMock.onGet(`${url}&algal=scrubber`).replyOnce(200, dummyResponse);
+ const expectedResponse = expect.objectContaining({ data: dummyResponse });
+
+ return expect(boardsStore.getIssuesForList(id, filter)).resolves.toEqual(expectedResponse);
+ });
+
+ it('fails for error response', () => {
+ axiosMock.onGet(url).replyOnce(500);
+
+ return expect(boardsStore.getIssuesForList(id)).rejects.toThrow();
+ });
+ });
+
+ describe('moveIssue', () => {
+ const urlRoot = 'potato';
+ const id = 'over 9000';
+ const fromListId = 'left';
+ const toListId = 'right';
+ const moveBeforeId = 'up';
+ const moveAfterId = 'down';
+ const expectedRequest = expect.objectContaining({
+ data: JSON.stringify({
+ from_list_id: fromListId,
+ to_list_id: toListId,
+ move_before_id: moveBeforeId,
+ move_after_id: moveAfterId,
+ }),
+ });
+
+ let requestSpy;
+
+ beforeAll(() => {
+ global.gon.relative_url_root = urlRoot;
+ });
+
+ afterAll(() => {
+ delete global.gon.relative_url_root;
+ });
+
+ beforeEach(() => {
+ requestSpy = jest.fn();
+ axiosMock
+ .onPut(`${urlRoot}/-/boards/${boardId}/issues/${id}`)
+ .replyOnce(config => requestSpy(config));
+ });
+
+ it('makes a request to move an issue between lists', () => {
+ requestSpy.mockReturnValue([200, dummyResponse]);
+ const expectedResponse = expect.objectContaining({ data: dummyResponse });
+
+ return expect(boardsStore.moveIssue(id, fromListId, toListId, moveBeforeId, moveAfterId))
+ .resolves.toEqual(expectedResponse)
+ .then(() => {
+ expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
+ });
+ });
+
+ it('fails for error response', () => {
+ requestSpy.mockReturnValue([500]);
+
+ return expect(boardsStore.moveIssue(id, fromListId, toListId, moveBeforeId, moveAfterId))
+ .rejects.toThrow()
+ .then(() => {
+ expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
+ });
+ });
+ });
+
+ describe('newIssue', () => {
+ const id = 'not-creative';
+ const issue = { some: 'issue data' };
+ const url = `${endpoints.listsEndpoint}/${id}/issues`;
+ const expectedRequest = expect.objectContaining({
+ data: JSON.stringify({
+ issue,
+ }),
+ });
+
+ let requestSpy;
+
+ beforeEach(() => {
+ requestSpy = jest.fn();
+ axiosMock.onPost(url).replyOnce(config => requestSpy(config));
+ });
+
+ it('makes a request to create a new issue', () => {
+ requestSpy.mockReturnValue([200, dummyResponse]);
+ const expectedResponse = expect.objectContaining({ data: dummyResponse });
+
+ return expect(boardsStore.newIssue(id, issue))
+ .resolves.toEqual(expectedResponse)
+ .then(() => {
+ expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
+ });
+ });
+
+ it('fails for error response', () => {
+ requestSpy.mockReturnValue([500]);
+
+ return expect(boardsStore.newIssue(id, issue))
+ .rejects.toThrow()
+ .then(() => {
+ expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
+ });
+ });
+ });
+
+ describe('getBacklog', () => {
+ const urlRoot = 'deep';
+ const url = `${urlRoot}/-/boards/${boardId}/issues.json?not=relevant`;
+ const requestParams = {
+ not: 'relevant',
+ };
+
+ beforeAll(() => {
+ global.gon.relative_url_root = urlRoot;
+ });
+
+ afterAll(() => {
+ delete global.gon.relative_url_root;
+ });
+
+ it('makes a request to fetch backlog', () => {
+ axiosMock.onGet(url).replyOnce(200, dummyResponse);
+ const expectedResponse = expect.objectContaining({ data: dummyResponse });
+
+ return expect(boardsStore.getBacklog(requestParams)).resolves.toEqual(expectedResponse);
+ });
+
+ it('fails for error response', () => {
+ axiosMock.onGet(url).replyOnce(500);
+
+ return expect(boardsStore.getBacklog(requestParams)).rejects.toThrow();
+ });
+ });
+
+ describe('bulkUpdate', () => {
+ const issueIds = [1, 2, 3];
+ const extraData = { moar: 'data' };
+ const expectedRequest = expect.objectContaining({
+ data: JSON.stringify({
+ update: {
+ ...extraData,
+ issuable_ids: '1,2,3',
+ },
+ }),
+ });
+
+ let requestSpy;
+
+ beforeEach(() => {
+ requestSpy = jest.fn();
+ axiosMock.onPost(endpoints.bulkUpdatePath).replyOnce(config => requestSpy(config));
+ });
+
+ it('makes a request to create a list', () => {
+ requestSpy.mockReturnValue([200, dummyResponse]);
+ const expectedResponse = expect.objectContaining({ data: dummyResponse });
+
+ return expect(boardsStore.bulkUpdate(issueIds, extraData))
+ .resolves.toEqual(expectedResponse)
+ .then(() => {
+ expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
+ });
+ });
+
+ it('fails for error response', () => {
+ requestSpy.mockReturnValue([500]);
+
+ return expect(boardsStore.bulkUpdate(issueIds, extraData))
+ .rejects.toThrow()
+ .then(() => {
+ expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
+ });
+ });
+ });
+
+ describe('getIssueInfo', () => {
+ const dummyEndpoint = `${TEST_HOST}/some/where`;
+
+ it('makes a request to the given endpoint', () => {
+ axiosMock.onGet(dummyEndpoint).replyOnce(200, dummyResponse);
+ const expectedResponse = expect.objectContaining({ data: dummyResponse });
+
+ return expect(boardsStore.getIssueInfo(dummyEndpoint)).resolves.toEqual(expectedResponse);
+ });
+
+ it('fails for error response', () => {
+ axiosMock.onGet(dummyEndpoint).replyOnce(500);
+
+ return expect(boardsStore.getIssueInfo(dummyEndpoint)).rejects.toThrow();
+ });
+ });
+
+ describe('toggleIssueSubscription', () => {
+ const dummyEndpoint = `${TEST_HOST}/some/where`;
+
+ it('makes a request to the given endpoint', () => {
+ axiosMock.onPost(dummyEndpoint).replyOnce(200, dummyResponse);
+ const expectedResponse = expect.objectContaining({ data: dummyResponse });
+
+ return expect(boardsStore.toggleIssueSubscription(dummyEndpoint)).resolves.toEqual(
+ expectedResponse,
+ );
+ });
+
+ it('fails for error response', () => {
+ axiosMock.onPost(dummyEndpoint).replyOnce(500);
+
+ return expect(boardsStore.toggleIssueSubscription(dummyEndpoint)).rejects.toThrow();
+ });
+ });
+
+ describe('allBoards', () => {
+ const url = `${endpoints.boardsEndpoint}.json`;
+
+ it('makes a request to fetch all boards', () => {
+ axiosMock.onGet(url).replyOnce(200, dummyResponse);
+ const expectedResponse = expect.objectContaining({ data: dummyResponse });
+
+ return expect(boardsStore.allBoards()).resolves.toEqual(expectedResponse);
+ });
+
+ it('fails for error response', () => {
+ axiosMock.onGet(url).replyOnce(500);
+
+ return expect(boardsStore.allBoards()).rejects.toThrow();
+ });
+ });
+
+ describe('recentBoards', () => {
+ const url = `${endpoints.recentBoardsEndpoint}.json`;
+
+ it('makes a request to fetch all boards', () => {
+ axiosMock.onGet(url).replyOnce(200, dummyResponse);
+ const expectedResponse = expect.objectContaining({ data: dummyResponse });
+
+ return expect(boardsStore.recentBoards()).resolves.toEqual(expectedResponse);
+ });
+
+ it('fails for error response', () => {
+ axiosMock.onGet(url).replyOnce(500);
+
+ return expect(boardsStore.recentBoards()).rejects.toThrow();
+ });
+ });
+
+ describe('createBoard', () => {
+ const labelIds = ['first label', 'second label'];
+ const assigneeId = 'as sign ee';
+ const milestoneId = 'vegetable soup';
+ const board = {
+ labels: labelIds.map(id => ({ id })),
+ assignee: { id: assigneeId },
+ milestone: { id: milestoneId },
+ };
+
+ describe('for existing board', () => {
+ const id = 'skate-board';
+ const url = `${endpoints.boardsEndpoint}/${id}.json`;
+ const expectedRequest = expect.objectContaining({
+ data: JSON.stringify({
+ board: {
+ ...board,
+ id,
+ label_ids: labelIds,
+ assignee_id: assigneeId,
+ milestone_id: milestoneId,
+ },
+ }),
+ });
+
+ let requestSpy;
+
+ beforeEach(() => {
+ requestSpy = jest.fn();
+ axiosMock.onPut(url).replyOnce(config => requestSpy(config));
+ });
+
+ it('makes a request to update the board', () => {
+ requestSpy.mockReturnValue([200, dummyResponse]);
+ const expectedResponse = expect.objectContaining({ data: dummyResponse });
+
+ return expect(
+ boardsStore.createBoard({
+ ...board,
+ id,
+ }),
+ )
+ .resolves.toEqual(expectedResponse)
+ .then(() => {
+ expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
+ });
+ });
+
+ it('fails for error response', () => {
+ requestSpy.mockReturnValue([500]);
+
+ return expect(
+ boardsStore.createBoard({
+ ...board,
+ id,
+ }),
+ )
+ .rejects.toThrow()
+ .then(() => {
+ expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
+ });
+ });
+ });
+
+ describe('for new board', () => {
+ const url = `${endpoints.boardsEndpoint}.json`;
+ const expectedRequest = expect.objectContaining({
+ data: JSON.stringify({
+ board: {
+ ...board,
+ label_ids: labelIds,
+ assignee_id: assigneeId,
+ milestone_id: milestoneId,
+ },
+ }),
+ });
+
+ let requestSpy;
+
+ beforeEach(() => {
+ requestSpy = jest.fn();
+ axiosMock.onPost(url).replyOnce(config => requestSpy(config));
+ });
+
+ it('makes a request to create a new board', () => {
+ requestSpy.mockReturnValue([200, dummyResponse]);
+ const expectedResponse = expect.objectContaining({ data: dummyResponse });
+
+ return expect(boardsStore.createBoard(board))
+ .resolves.toEqual(expectedResponse)
+ .then(() => {
+ expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
+ });
+ });
+
+ it('fails for error response', () => {
+ requestSpy.mockReturnValue([500]);
+
+ return expect(boardsStore.createBoard(board))
+ .rejects.toThrow()
+ .then(() => {
+ expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
+ });
+ });
+ });
+ });
+
+ describe('deleteBoard', () => {
+ const id = 'capsized';
+ const url = `${endpoints.boardsEndpoint}/${id}.json`;
+
+ it('makes a request to delete a boards', () => {
+ axiosMock.onDelete(url).replyOnce(200, dummyResponse);
+ const expectedResponse = expect.objectContaining({ data: dummyResponse });
+
+ return expect(boardsStore.deleteBoard({ id })).resolves.toEqual(expectedResponse);
+ });
+
+ it('fails for error response', () => {
+ axiosMock.onDelete(url).replyOnce(500);
+
+ return expect(boardsStore.deleteBoard({ id })).rejects.toThrow();
+ });
+ });
+
+ describe('when created', () => {
+ beforeEach(() => {
+ setupDefaultResponses();
+
+ jest.spyOn(boardsStore, 'moveIssue').mockReturnValue(Promise.resolve());
+ jest.spyOn(boardsStore, 'moveMultipleIssues').mockReturnValue(Promise.resolve());
+
+ boardsStore.create();
+ });
+
+ it('starts with a blank state', () => {
+ expect(boardsStore.state.lists.length).toBe(0);
+ });
+
+ describe('addList', () => {
+ it('sorts by position', () => {
+ boardsStore.addList({ position: 2 });
+ boardsStore.addList({ position: 1 });
+
+ expect(boardsStore.state.lists.map(({ position }) => position)).toEqual([1, 2]);
+ });
+ });
+
+ describe('toggleFilter', () => {
+ const dummyFilter = 'x=42';
+ let updateTokensSpy;
+
+ beforeEach(() => {
+ updateTokensSpy = jest.fn();
+ eventHub.$once('updateTokens', updateTokensSpy);
+
+ // prevent using window.history
+ jest.spyOn(boardsStore, 'updateFiltersUrl').mockReturnValue();
+ });
+
+ it('adds the filter if it is not present', () => {
+ boardsStore.filter.path = 'something';
+
+ boardsStore.toggleFilter(dummyFilter);
+
+ expect(boardsStore.filter.path).toEqual(`something&${dummyFilter}`);
+ expect(updateTokensSpy).toHaveBeenCalled();
+ expect(boardsStore.updateFiltersUrl).toHaveBeenCalled();
+ });
+
+ it('removes the filter if it is present', () => {
+ boardsStore.filter.path = `something&${dummyFilter}`;
+
+ boardsStore.toggleFilter(dummyFilter);
+
+ expect(boardsStore.filter.path).toEqual('something');
+ expect(updateTokensSpy).toHaveBeenCalled();
+ expect(boardsStore.updateFiltersUrl).toHaveBeenCalled();
+ });
+ });
+
+ describe('lists', () => {
+ it('creates new list without persisting to DB', () => {
+ expect(boardsStore.state.lists.length).toBe(0);
+
+ boardsStore.addList(listObj);
+
+ expect(boardsStore.state.lists.length).toBe(1);
+ });
+
+ it('finds list by ID', () => {
+ boardsStore.addList(listObj);
+ const list = boardsStore.findList('id', listObj.id);
+
+ expect(list.id).toBe(listObj.id);
+ });
+
+ it('finds list by type', () => {
+ boardsStore.addList(listObj);
+ const list = boardsStore.findList('type', 'label');
+
+ expect(list).toBeDefined();
+ });
+
+ it('finds list by label ID', () => {
+ boardsStore.addList(listObj);
+ const list = boardsStore.findListByLabelId(listObj.label.id);
+
+ expect(list.id).toBe(listObj.id);
+ });
+
+ it('gets issue when new list added', () => {
+ boardsStore.addList(listObj);
+ const list = boardsStore.findList('id', listObj.id);
+
+ expect(boardsStore.state.lists.length).toBe(1);
+
+ return axios.waitForAll().then(() => {
+ expect(list.issues.length).toBe(1);
+ expect(list.issues[0].id).toBe(1);
+ });
+ });
+
+ it('persists new list', () => {
+ boardsStore.new({
+ title: 'Test',
+ list_type: 'label',
+ label: {
+ id: 1,
+ title: 'Testing',
+ color: 'red',
+ description: 'testing;',
+ },
+ });
+
+ expect(boardsStore.state.lists.length).toBe(1);
+
+ return axios.waitForAll().then(() => {
+ const list = boardsStore.findList('id', listObj.id);
+
+ expect(list).toEqual(
+ expect.objectContaining({
+ id: listObj.id,
+ position: 0,
+ }),
+ );
+ });
+ });
+
+ it('check for blank state adding', () => {
+ expect(boardsStore.shouldAddBlankState()).toBe(true);
+ });
+
+ it('check for blank state not adding', () => {
+ boardsStore.addList(listObj);
+
+ expect(boardsStore.shouldAddBlankState()).toBe(false);
+ });
+
+ it('check for blank state adding when closed list exist', () => {
+ boardsStore.addList({
+ list_type: 'closed',
+ });
+
+ expect(boardsStore.shouldAddBlankState()).toBe(true);
+ });
+
+ it('adds the blank state', () => {
+ boardsStore.addBlankState();
+
+ const list = boardsStore.findList('type', 'blank', 'blank');
+
+ expect(list).toBeDefined();
+ });
+
+ it('removes list from state', () => {
+ boardsStore.addList(listObj);
+
+ expect(boardsStore.state.lists.length).toBe(1);
+
+ boardsStore.removeList(listObj.id, 'label');
+
+ expect(boardsStore.state.lists.length).toBe(0);
+ });
+
+ it('moves the position of lists', () => {
+ const listOne = boardsStore.addList(listObj);
+ boardsStore.addList(listObjDuplicate);
+
+ expect(boardsStore.state.lists.length).toBe(2);
+
+ boardsStore.moveList(listOne, [listObjDuplicate.id, listObj.id]);
+
+ expect(listOne.position).toBe(1);
+ });
+
+ it('moves an issue from one list to another', () => {
+ const listOne = boardsStore.addList(listObj);
+ const listTwo = boardsStore.addList(listObjDuplicate);
+
+ expect(boardsStore.state.lists.length).toBe(2);
+
+ return axios.waitForAll().then(() => {
+ expect(listOne.issues.length).toBe(1);
+ expect(listTwo.issues.length).toBe(1);
+
+ boardsStore.moveIssueToList(listOne, listTwo, listOne.findIssue(1));
+
+ expect(listOne.issues.length).toBe(0);
+ expect(listTwo.issues.length).toBe(1);
+ });
+ });
+
+ it('moves an issue from backlog to a list', () => {
+ const backlog = boardsStore.addList({
+ ...listObj,
+ list_type: 'backlog',
+ });
+ const listTwo = boardsStore.addList(listObjDuplicate);
+
+ expect(boardsStore.state.lists.length).toBe(2);
+
+ return axios.waitForAll().then(() => {
+ expect(backlog.issues.length).toBe(1);
+ expect(listTwo.issues.length).toBe(1);
+
+ boardsStore.moveIssueToList(backlog, listTwo, backlog.findIssue(1));
+
+ expect(backlog.issues.length).toBe(0);
+ expect(listTwo.issues.length).toBe(1);
+ });
+ });
+
+ it('moves issue to top of another list', () => {
+ const listOne = boardsStore.addList(listObj);
+ const listTwo = boardsStore.addList(listObjDuplicate);
+
+ expect(boardsStore.state.lists.length).toBe(2);
+
+ return axios.waitForAll().then(() => {
+ listOne.issues[0].id = 2;
+
+ expect(listOne.issues.length).toBe(1);
+ expect(listTwo.issues.length).toBe(1);
+
+ boardsStore.moveIssueToList(listOne, listTwo, listOne.findIssue(2), 0);
+
+ expect(listOne.issues.length).toBe(0);
+ expect(listTwo.issues.length).toBe(2);
+ expect(listTwo.issues[0].id).toBe(2);
+ expect(boardsStore.moveIssue).toHaveBeenCalledWith(2, listOne.id, listTwo.id, null, 1);
+ });
+ });
+
+ it('moves issue to bottom of another list', () => {
+ const listOne = boardsStore.addList(listObj);
+ const listTwo = boardsStore.addList(listObjDuplicate);
+
+ expect(boardsStore.state.lists.length).toBe(2);
+
+ return axios.waitForAll().then(() => {
+ listOne.issues[0].id = 2;
+
+ expect(listOne.issues.length).toBe(1);
+ expect(listTwo.issues.length).toBe(1);
+
+ boardsStore.moveIssueToList(listOne, listTwo, listOne.findIssue(2), 1);
+
+ expect(listOne.issues.length).toBe(0);
+ expect(listTwo.issues.length).toBe(2);
+ expect(listTwo.issues[1].id).toBe(2);
+ expect(boardsStore.moveIssue).toHaveBeenCalledWith(2, listOne.id, listTwo.id, 1, null);
+ });
+ });
+
+ it('moves issue in list', () => {
+ const issue = new ListIssue({
+ title: 'Testing',
+ id: 2,
+ iid: 2,
+ confidential: false,
+ labels: [],
+ assignees: [],
+ });
+ const list = boardsStore.addList(listObj);
+
+ return axios.waitForAll().then(() => {
+ list.addIssue(issue);
+
+ expect(list.issues.length).toBe(2);
+
+ boardsStore.moveIssueInList(list, issue, 0, 1, [1, 2]);
+
+ expect(list.issues[0].id).toBe(2);
+ expect(boardsStore.moveIssue).toHaveBeenCalledWith(2, null, null, 1, null);
+ });
+ });
+ });
+
+ describe('setListDetail', () => {
+ it('sets the list detail', () => {
+ boardsStore.detail.list = 'not a list';
+
+ const dummyValue = 'new list';
+ boardsStore.setListDetail(dummyValue);
+
+ expect(boardsStore.detail.list).toEqual(dummyValue);
+ });
+ });
+
+ describe('clearDetailIssue', () => {
+ it('resets issue details', () => {
+ boardsStore.detail.issue = 'something';
+
+ boardsStore.clearDetailIssue();
+
+ expect(boardsStore.detail.issue).toEqual({});
+ });
+ });
+
+ describe('setIssueDetail', () => {
+ it('sets issue details', () => {
+ boardsStore.detail.issue = 'some details';
+
+ const dummyValue = 'new details';
+ boardsStore.setIssueDetail(dummyValue);
+
+ expect(boardsStore.detail.issue).toEqual(dummyValue);
+ });
+ });
+
+ describe('startMoving', () => {
+ it('stores list and issue', () => {
+ const dummyIssue = 'some issue';
+ const dummyList = 'some list';
+
+ boardsStore.startMoving(dummyList, dummyIssue);
+
+ expect(boardsStore.moving.issue).toEqual(dummyIssue);
+ expect(boardsStore.moving.list).toEqual(dummyList);
+ });
+ });
+
+ describe('setTimeTrackingLimitToHours', () => {
+ it('sets the timeTracking.LimitToHours option', () => {
+ boardsStore.timeTracking.limitToHours = false;
+
+ boardsStore.setTimeTrackingLimitToHours('true');
+
+ expect(boardsStore.timeTracking.limitToHours).toEqual(true);
+ });
+ });
+
+ describe('setCurrentBoard', () => {
+ const dummyBoard = 'hoverboard';
+
+ it('sets the current board', () => {
+ const { state } = boardsStore;
+ state.currentBoard = null;
+
+ boardsStore.setCurrentBoard(dummyBoard);
+
+ expect(state.currentBoard).toEqual(dummyBoard);
+ });
+ });
+
+ describe('toggleMultiSelect', () => {
+ let basicIssueObj;
+
+ beforeAll(() => {
+ basicIssueObj = { id: 987654 };
+ });
+
+ afterEach(() => {
+ boardsStore.clearMultiSelect();
+ });
+
+ it('adds issue when not present', () => {
+ boardsStore.toggleMultiSelect(basicIssueObj);
+
+ const selectedIds = boardsStore.multiSelect.list.map(({ id }) => id);
+
+ expect(selectedIds.includes(basicIssueObj.id)).toEqual(true);
+ });
+
+ it('removes issue when issue is present', () => {
+ boardsStore.toggleMultiSelect(basicIssueObj);
+ let selectedIds = boardsStore.multiSelect.list.map(({ id }) => id);
+
+ expect(selectedIds.includes(basicIssueObj.id)).toEqual(true);
+
+ boardsStore.toggleMultiSelect(basicIssueObj);
+ selectedIds = boardsStore.multiSelect.list.map(({ id }) => id);
+
+ expect(selectedIds.includes(basicIssueObj.id)).toEqual(false);
+ });
+ });
+
+ describe('clearMultiSelect', () => {
+ it('clears all the multi selected issues', () => {
+ const issue1 = { id: 12345 };
+ const issue2 = { id: 12346 };
+
+ boardsStore.toggleMultiSelect(issue1);
+ boardsStore.toggleMultiSelect(issue2);
+
+ expect(boardsStore.multiSelect.list.length).toEqual(2);
+
+ boardsStore.clearMultiSelect();
+
+ expect(boardsStore.multiSelect.list.length).toEqual(0);
+ });
+ });
+
+ describe('moveMultipleIssuesToList', () => {
+ it('move issues on the new index', () => {
+ const listOne = boardsStore.addList(listObj);
+ const listTwo = boardsStore.addList(listObjDuplicate);
+
+ expect(boardsStore.state.lists.length).toBe(2);
+
+ return axios.waitForAll().then(() => {
+ expect(listOne.issues.length).toBe(1);
+ expect(listTwo.issues.length).toBe(1);
+
+ boardsStore.moveMultipleIssuesToList({
+ listFrom: listOne,
+ listTo: listTwo,
+ issues: listOne.issues,
+ newIndex: 0,
+ });
+
+ expect(listTwo.issues.length).toBe(1);
+ });
+ });
+ });
+
+ describe('moveMultipleIssuesInList', () => {
+ it('moves multiple issues in list', () => {
+ const issueObj = {
+ title: 'Issue #1',
+ id: 12345,
+ iid: 2,
+ confidential: false,
+ labels: [],
+ assignees: [],
+ };
+ const issue1 = new ListIssue(issueObj);
+ const issue2 = new ListIssue({
+ ...issueObj,
+ title: 'Issue #2',
+ id: 12346,
+ });
+
+ const list = boardsStore.addList(listObj);
+
+ return axios.waitForAll().then(() => {
+ list.addIssue(issue1);
+ list.addIssue(issue2);
+
+ expect(list.issues.length).toBe(3);
+ expect(list.issues[0].id).not.toBe(issue2.id);
+
+ boardsStore.moveMultipleIssuesInList({
+ list,
+ issues: [issue1, issue2],
+ oldIndicies: [0],
+ newIndex: 1,
+ idArray: [1, 12345, 12346],
+ });
+
+ expect(list.issues[0].id).toBe(issue1.id);
+
+ expect(boardsStore.moveMultipleIssues).toHaveBeenCalledWith({
+ ids: [issue1.id, issue2.id],
+ fromListId: null,
+ toListId: null,
+ moveBeforeId: 1,
+ moveAfterId: null,
+ });
+ });
+ });
+ });
+ });
+});
diff --git a/spec/frontend/boards/components/issue_count_spec.js b/spec/frontend/boards/components/issue_count_spec.js
new file mode 100644
index 00000000000..819d878f4e2
--- /dev/null
+++ b/spec/frontend/boards/components/issue_count_spec.js
@@ -0,0 +1,85 @@
+import { shallowMount } from '@vue/test-utils';
+import IssueCount from '~/boards/components/issue_count.vue';
+
+describe('IssueCount', () => {
+ let vm;
+ let maxIssueCount;
+ let issuesSize;
+
+ const createComponent = props => {
+ vm = shallowMount(IssueCount, { propsData: props });
+ };
+
+ afterEach(() => {
+ maxIssueCount = 0;
+ issuesSize = 0;
+
+ if (vm) vm.destroy();
+ });
+
+ describe('when maxIssueCount is zero', () => {
+ beforeEach(() => {
+ issuesSize = 3;
+
+ createComponent({ maxIssueCount: 0, issuesSize });
+ });
+
+ it('contains issueSize in the template', () => {
+ expect(vm.find('.js-issue-size').text()).toEqual(String(issuesSize));
+ });
+
+ it('does not contains maxIssueCount in the template', () => {
+ expect(vm.contains('.js-max-issue-size')).toBe(false);
+ });
+ });
+
+ describe('when maxIssueCount is greater than zero', () => {
+ beforeEach(() => {
+ maxIssueCount = 2;
+ issuesSize = 1;
+
+ createComponent({ maxIssueCount, issuesSize });
+ });
+
+ afterEach(() => {
+ vm.destroy();
+ });
+
+ it('contains issueSize in the template', () => {
+ expect(vm.find('.js-issue-size').text()).toEqual(String(issuesSize));
+ });
+
+ it('contains maxIssueCount in the template', () => {
+ expect(vm.find('.js-max-issue-size').text()).toEqual(String(maxIssueCount));
+ });
+
+ it('does not have text-danger class when issueSize is less than maxIssueCount', () => {
+ expect(vm.classes('.text-danger')).toBe(false);
+ });
+ });
+
+ describe('when issueSize is greater than maxIssueCount', () => {
+ beforeEach(() => {
+ issuesSize = 3;
+ maxIssueCount = 2;
+
+ createComponent({ maxIssueCount, issuesSize });
+ });
+
+ afterEach(() => {
+ vm.destroy();
+ });
+
+ it('contains issueSize in the template', () => {
+ expect(vm.find('.js-issue-size').text()).toEqual(String(issuesSize));
+ });
+
+ it('contains maxIssueCount in the template', () => {
+ expect(vm.find('.js-max-issue-size').text()).toEqual(String(maxIssueCount));
+ });
+
+ it('has text-danger class', () => {
+ expect(vm.find('.text-danger').text()).toEqual(String(issuesSize));
+ });
+ });
+});
diff --git a/spec/frontend/boards/components/issue_time_estimate_spec.js b/spec/frontend/boards/components/issue_time_estimate_spec.js
index 0a16dfbc009..25e922931c3 100644
--- a/spec/frontend/boards/components/issue_time_estimate_spec.js
+++ b/spec/frontend/boards/components/issue_time_estimate_spec.js
@@ -1,6 +1,6 @@
+import { shallowMount } from '@vue/test-utils';
import IssueTimeEstimate from '~/boards/components/issue_time_estimate.vue';
import boardsStore from '~/boards/stores/boards_store';
-import { shallowMount } from '@vue/test-utils';
describe('Issue Time Estimate component', () => {
let wrapper;
diff --git a/spec/frontend/boards/issue_card_spec.js b/spec/frontend/boards/issue_card_spec.js
index ebe97769ab7..c7ab477c0af 100644
--- a/spec/frontend/boards/issue_card_spec.js
+++ b/spec/frontend/boards/issue_card_spec.js
@@ -51,6 +51,7 @@ describe('Issue card component', () => {
},
store,
sync: false,
+ attachToDocument: true,
});
});
diff --git a/spec/frontend/boards/mock_data.js b/spec/frontend/boards/mock_data.js
new file mode 100644
index 00000000000..05f73e0d8dc
--- /dev/null
+++ b/spec/frontend/boards/mock_data.js
@@ -0,0 +1,91 @@
+export const boardObj = {
+ id: 1,
+ name: 'test',
+ milestone_id: null,
+};
+
+export const listObj = {
+ id: 300,
+ position: 0,
+ title: 'Test',
+ list_type: 'label',
+ weight: 3,
+ label: {
+ id: 5000,
+ title: 'Test',
+ color: 'red',
+ description: 'testing;',
+ textColor: 'white',
+ },
+};
+
+export const listObjDuplicate = {
+ id: listObj.id,
+ position: 1,
+ title: 'Test',
+ list_type: 'label',
+ weight: 3,
+ label: {
+ id: listObj.label.id,
+ title: 'Test',
+ color: 'red',
+ description: 'testing;',
+ },
+};
+
+export const mockAssigneesList = [
+ {
+ id: 2,
+ name: 'Terrell Graham',
+ username: 'monserrate.gleichner',
+ state: 'active',
+ avatar_url: 'https://www.gravatar.com/avatar/598fd02741ac58b88854a99d16704309?s=80&d=identicon',
+ web_url: 'http://127.0.0.1:3001/monserrate.gleichner',
+ path: '/monserrate.gleichner',
+ },
+ {
+ id: 12,
+ name: 'Susy Johnson',
+ username: 'tana_harvey',
+ state: 'active',
+ avatar_url: 'https://www.gravatar.com/avatar/e021a7b0f3e4ae53b5068d487e68c031?s=80&d=identicon',
+ web_url: 'http://127.0.0.1:3001/tana_harvey',
+ path: '/tana_harvey',
+ },
+ {
+ id: 20,
+ name: 'Conchita Eichmann',
+ username: 'juliana_gulgowski',
+ state: 'active',
+ avatar_url: 'https://www.gravatar.com/avatar/c43c506cb6fd7b37017d3b54b94aa937?s=80&d=identicon',
+ web_url: 'http://127.0.0.1:3001/juliana_gulgowski',
+ path: '/juliana_gulgowski',
+ },
+ {
+ id: 6,
+ name: 'Bryce Turcotte',
+ username: 'melynda',
+ state: 'active',
+ avatar_url: 'https://www.gravatar.com/avatar/cc2518f2c6f19f8fac49e1a5ee092a9b?s=80&d=identicon',
+ web_url: 'http://127.0.0.1:3001/melynda',
+ path: '/melynda',
+ },
+ {
+ id: 1,
+ name: 'Administrator',
+ username: 'root',
+ state: 'active',
+ avatar_url: 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon',
+ web_url: 'http://127.0.0.1:3001/root',
+ path: '/root',
+ },
+];
+
+export const mockMilestone = {
+ id: 1,
+ state: 'active',
+ title: 'Milestone title',
+ description: 'Harum corporis aut consequatur quae dolorem error sequi quia.',
+ start_date: '2018-01-01',
+ due_date: '2019-12-31',
+};
diff --git a/spec/frontend/boards/services/board_service_spec.js b/spec/frontend/boards/services/board_service_spec.js
deleted file mode 100644
index 86f49f63f4e..00000000000
--- a/spec/frontend/boards/services/board_service_spec.js
+++ /dev/null
@@ -1,552 +0,0 @@
-import BoardService from '~/boards/services/board_service';
-import { TEST_HOST } from 'helpers/test_constants';
-import AxiosMockAdapter from 'axios-mock-adapter';
-import axios from '~/lib/utils/axios_utils';
-import boardsStore from '~/boards/stores/boards_store';
-
-describe('BoardService', () => {
- const dummyResponse = "without type checking this doesn't matter";
- const boardId = 'dummy-board-id';
- const endpoints = {
- boardsEndpoint: `${TEST_HOST}/boards`,
- listsEndpoint: `${TEST_HOST}/lists`,
- bulkUpdatePath: `${TEST_HOST}/bulk/update`,
- recentBoardsEndpoint: `${TEST_HOST}/recent/boards`,
- };
-
- let service;
- let axiosMock;
-
- beforeEach(() => {
- axiosMock = new AxiosMockAdapter(axios);
- boardsStore.setEndpoints({
- ...endpoints,
- boardId,
- });
- service = new BoardService();
- });
-
- describe('all', () => {
- it('makes a request to fetch lists', () => {
- axiosMock.onGet(endpoints.listsEndpoint).replyOnce(200, dummyResponse);
- const expectedResponse = expect.objectContaining({ data: dummyResponse });
-
- return expect(service.all()).resolves.toEqual(expectedResponse);
- });
-
- it('fails for error response', () => {
- axiosMock.onGet(endpoints.listsEndpoint).replyOnce(500);
-
- return expect(service.all()).rejects.toThrow();
- });
- });
-
- describe('generateDefaultLists', () => {
- const listsEndpointGenerate = `${endpoints.listsEndpoint}/generate.json`;
-
- it('makes a request to generate default lists', () => {
- axiosMock.onPost(listsEndpointGenerate).replyOnce(200, dummyResponse);
- const expectedResponse = expect.objectContaining({ data: dummyResponse });
-
- return expect(service.generateDefaultLists()).resolves.toEqual(expectedResponse);
- });
-
- it('fails for error response', () => {
- axiosMock.onPost(listsEndpointGenerate).replyOnce(500);
-
- return expect(service.generateDefaultLists()).rejects.toThrow();
- });
- });
-
- describe('createList', () => {
- const entityType = 'moorhen';
- const entityId = 'quack';
- const expectedRequest = expect.objectContaining({
- data: JSON.stringify({ list: { [entityType]: entityId } }),
- });
-
- let requestSpy;
-
- beforeEach(() => {
- requestSpy = jest.fn();
- axiosMock.onPost(endpoints.listsEndpoint).replyOnce(config => requestSpy(config));
- });
-
- it('makes a request to create a list', () => {
- requestSpy.mockReturnValue([200, dummyResponse]);
- const expectedResponse = expect.objectContaining({ data: dummyResponse });
-
- return expect(service.createList(entityId, entityType))
- .resolves.toEqual(expectedResponse)
- .then(() => {
- expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
- });
- });
-
- it('fails for error response', () => {
- requestSpy.mockReturnValue([500]);
-
- return expect(service.createList(entityId, entityType))
- .rejects.toThrow()
- .then(() => {
- expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
- });
- });
- });
-
- describe('updateList', () => {
- const id = 'David Webb';
- const position = 'unknown';
- const collapsed = false;
- const expectedRequest = expect.objectContaining({
- data: JSON.stringify({ list: { position, collapsed } }),
- });
-
- let requestSpy;
-
- beforeEach(() => {
- requestSpy = jest.fn();
- axiosMock.onPut(`${endpoints.listsEndpoint}/${id}`).replyOnce(config => requestSpy(config));
- });
-
- it('makes a request to update a list position', () => {
- requestSpy.mockReturnValue([200, dummyResponse]);
- const expectedResponse = expect.objectContaining({ data: dummyResponse });
-
- return expect(service.updateList(id, position, collapsed))
- .resolves.toEqual(expectedResponse)
- .then(() => {
- expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
- });
- });
-
- it('fails for error response', () => {
- requestSpy.mockReturnValue([500]);
-
- return expect(service.updateList(id, position, collapsed))
- .rejects.toThrow()
- .then(() => {
- expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
- });
- });
- });
-
- describe('destroyList', () => {
- const id = '-42';
-
- let requestSpy;
-
- beforeEach(() => {
- requestSpy = jest.fn();
- axiosMock
- .onDelete(`${endpoints.listsEndpoint}/${id}`)
- .replyOnce(config => requestSpy(config));
- });
-
- it('makes a request to delete a list', () => {
- requestSpy.mockReturnValue([200, dummyResponse]);
- const expectedResponse = expect.objectContaining({ data: dummyResponse });
-
- return expect(service.destroyList(id))
- .resolves.toEqual(expectedResponse)
- .then(() => {
- expect(requestSpy).toHaveBeenCalled();
- });
- });
-
- it('fails for error response', () => {
- requestSpy.mockReturnValue([500]);
-
- return expect(service.destroyList(id))
- .rejects.toThrow()
- .then(() => {
- expect(requestSpy).toHaveBeenCalled();
- });
- });
- });
-
- describe('getIssuesForList', () => {
- const id = 'TOO-MUCH';
- const url = `${endpoints.listsEndpoint}/${id}/issues?id=${id}`;
-
- it('makes a request to fetch list issues', () => {
- axiosMock.onGet(url).replyOnce(200, dummyResponse);
- const expectedResponse = expect.objectContaining({ data: dummyResponse });
-
- return expect(service.getIssuesForList(id)).resolves.toEqual(expectedResponse);
- });
-
- it('makes a request to fetch list issues with filter', () => {
- const filter = { algal: 'scrubber' };
- axiosMock.onGet(`${url}&algal=scrubber`).replyOnce(200, dummyResponse);
- const expectedResponse = expect.objectContaining({ data: dummyResponse });
-
- return expect(service.getIssuesForList(id, filter)).resolves.toEqual(expectedResponse);
- });
-
- it('fails for error response', () => {
- axiosMock.onGet(url).replyOnce(500);
-
- return expect(service.getIssuesForList(id)).rejects.toThrow();
- });
- });
-
- describe('moveIssue', () => {
- const urlRoot = 'potato';
- const id = 'over 9000';
- const fromListId = 'left';
- const toListId = 'right';
- const moveBeforeId = 'up';
- const moveAfterId = 'down';
- const expectedRequest = expect.objectContaining({
- data: JSON.stringify({
- from_list_id: fromListId,
- to_list_id: toListId,
- move_before_id: moveBeforeId,
- move_after_id: moveAfterId,
- }),
- });
-
- let requestSpy;
-
- beforeAll(() => {
- global.gon.relative_url_root = urlRoot;
- });
-
- afterAll(() => {
- delete global.gon.relative_url_root;
- });
-
- beforeEach(() => {
- requestSpy = jest.fn();
- axiosMock
- .onPut(`${urlRoot}/-/boards/${boardId}/issues/${id}`)
- .replyOnce(config => requestSpy(config));
- });
-
- it('makes a request to move an issue between lists', () => {
- requestSpy.mockReturnValue([200, dummyResponse]);
- const expectedResponse = expect.objectContaining({ data: dummyResponse });
-
- return expect(service.moveIssue(id, fromListId, toListId, moveBeforeId, moveAfterId))
- .resolves.toEqual(expectedResponse)
- .then(() => {
- expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
- });
- });
-
- it('fails for error response', () => {
- requestSpy.mockReturnValue([500]);
-
- return expect(service.moveIssue(id, fromListId, toListId, moveBeforeId, moveAfterId))
- .rejects.toThrow()
- .then(() => {
- expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
- });
- });
- });
-
- describe('newIssue', () => {
- const id = 'not-creative';
- const issue = { some: 'issue data' };
- const url = `${endpoints.listsEndpoint}/${id}/issues`;
- const expectedRequest = expect.objectContaining({
- data: JSON.stringify({
- issue,
- }),
- });
-
- let requestSpy;
-
- beforeEach(() => {
- requestSpy = jest.fn();
- axiosMock.onPost(url).replyOnce(config => requestSpy(config));
- });
-
- it('makes a request to create a new issue', () => {
- requestSpy.mockReturnValue([200, dummyResponse]);
- const expectedResponse = expect.objectContaining({ data: dummyResponse });
-
- return expect(service.newIssue(id, issue))
- .resolves.toEqual(expectedResponse)
- .then(() => {
- expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
- });
- });
-
- it('fails for error response', () => {
- requestSpy.mockReturnValue([500]);
-
- return expect(service.newIssue(id, issue))
- .rejects.toThrow()
- .then(() => {
- expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
- });
- });
- });
-
- describe('getBacklog', () => {
- const urlRoot = 'deep';
- const url = `${urlRoot}/-/boards/${boardId}/issues.json?not=relevant`;
- const requestParams = {
- not: 'relevant',
- };
-
- beforeAll(() => {
- global.gon.relative_url_root = urlRoot;
- });
-
- afterAll(() => {
- delete global.gon.relative_url_root;
- });
-
- it('makes a request to fetch backlog', () => {
- axiosMock.onGet(url).replyOnce(200, dummyResponse);
- const expectedResponse = expect.objectContaining({ data: dummyResponse });
-
- return expect(service.getBacklog(requestParams)).resolves.toEqual(expectedResponse);
- });
-
- it('fails for error response', () => {
- axiosMock.onGet(url).replyOnce(500);
-
- return expect(service.getBacklog(requestParams)).rejects.toThrow();
- });
- });
-
- describe('bulkUpdate', () => {
- const issueIds = [1, 2, 3];
- const extraData = { moar: 'data' };
- const expectedRequest = expect.objectContaining({
- data: JSON.stringify({
- update: {
- ...extraData,
- issuable_ids: '1,2,3',
- },
- }),
- });
-
- let requestSpy;
-
- beforeEach(() => {
- requestSpy = jest.fn();
- axiosMock.onPost(endpoints.bulkUpdatePath).replyOnce(config => requestSpy(config));
- });
-
- it('makes a request to create a list', () => {
- requestSpy.mockReturnValue([200, dummyResponse]);
- const expectedResponse = expect.objectContaining({ data: dummyResponse });
-
- return expect(service.bulkUpdate(issueIds, extraData))
- .resolves.toEqual(expectedResponse)
- .then(() => {
- expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
- });
- });
-
- it('fails for error response', () => {
- requestSpy.mockReturnValue([500]);
-
- return expect(service.bulkUpdate(issueIds, extraData))
- .rejects.toThrow()
- .then(() => {
- expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
- });
- });
- });
-
- describe('getIssueInfo', () => {
- const dummyEndpoint = `${TEST_HOST}/some/where`;
-
- it('makes a request to the given endpoint', () => {
- axiosMock.onGet(dummyEndpoint).replyOnce(200, dummyResponse);
- const expectedResponse = expect.objectContaining({ data: dummyResponse });
-
- return expect(BoardService.getIssueInfo(dummyEndpoint)).resolves.toEqual(expectedResponse);
- });
-
- it('fails for error response', () => {
- axiosMock.onGet(dummyEndpoint).replyOnce(500);
-
- return expect(BoardService.getIssueInfo(dummyEndpoint)).rejects.toThrow();
- });
- });
-
- describe('toggleIssueSubscription', () => {
- const dummyEndpoint = `${TEST_HOST}/some/where`;
-
- it('makes a request to the given endpoint', () => {
- axiosMock.onPost(dummyEndpoint).replyOnce(200, dummyResponse);
- const expectedResponse = expect.objectContaining({ data: dummyResponse });
-
- return expect(BoardService.toggleIssueSubscription(dummyEndpoint)).resolves.toEqual(
- expectedResponse,
- );
- });
-
- it('fails for error response', () => {
- axiosMock.onPost(dummyEndpoint).replyOnce(500);
-
- return expect(BoardService.toggleIssueSubscription(dummyEndpoint)).rejects.toThrow();
- });
- });
-
- describe('allBoards', () => {
- const url = `${endpoints.boardsEndpoint}.json`;
-
- it('makes a request to fetch all boards', () => {
- axiosMock.onGet(url).replyOnce(200, dummyResponse);
- const expectedResponse = expect.objectContaining({ data: dummyResponse });
-
- return expect(service.allBoards()).resolves.toEqual(expectedResponse);
- });
-
- it('fails for error response', () => {
- axiosMock.onGet(url).replyOnce(500);
-
- return expect(service.allBoards()).rejects.toThrow();
- });
- });
-
- describe('recentBoards', () => {
- const url = `${endpoints.recentBoardsEndpoint}.json`;
-
- it('makes a request to fetch all boards', () => {
- axiosMock.onGet(url).replyOnce(200, dummyResponse);
- const expectedResponse = expect.objectContaining({ data: dummyResponse });
-
- return expect(service.recentBoards()).resolves.toEqual(expectedResponse);
- });
-
- it('fails for error response', () => {
- axiosMock.onGet(url).replyOnce(500);
-
- return expect(service.recentBoards()).rejects.toThrow();
- });
- });
-
- describe('createBoard', () => {
- const labelIds = ['first label', 'second label'];
- const assigneeId = 'as sign ee';
- const milestoneId = 'vegetable soup';
- const board = {
- labels: labelIds.map(id => ({ id })),
- assignee: { id: assigneeId },
- milestone: { id: milestoneId },
- };
-
- describe('for existing board', () => {
- const id = 'skate-board';
- const url = `${endpoints.boardsEndpoint}/${id}.json`;
- const expectedRequest = expect.objectContaining({
- data: JSON.stringify({
- board: {
- ...board,
- id,
- label_ids: labelIds,
- assignee_id: assigneeId,
- milestone_id: milestoneId,
- },
- }),
- });
-
- let requestSpy;
-
- beforeEach(() => {
- requestSpy = jest.fn();
- axiosMock.onPut(url).replyOnce(config => requestSpy(config));
- });
-
- it('makes a request to update the board', () => {
- requestSpy.mockReturnValue([200, dummyResponse]);
- const expectedResponse = expect.objectContaining({ data: dummyResponse });
-
- return expect(
- service.createBoard({
- ...board,
- id,
- }),
- )
- .resolves.toEqual(expectedResponse)
- .then(() => {
- expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
- });
- });
-
- it('fails for error response', () => {
- requestSpy.mockReturnValue([500]);
-
- return expect(
- service.createBoard({
- ...board,
- id,
- }),
- )
- .rejects.toThrow()
- .then(() => {
- expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
- });
- });
- });
-
- describe('for new board', () => {
- const url = `${endpoints.boardsEndpoint}.json`;
- const expectedRequest = expect.objectContaining({
- data: JSON.stringify({
- board: {
- ...board,
- label_ids: labelIds,
- assignee_id: assigneeId,
- milestone_id: milestoneId,
- },
- }),
- });
-
- let requestSpy;
-
- beforeEach(() => {
- requestSpy = jest.fn();
- axiosMock.onPost(url).replyOnce(config => requestSpy(config));
- });
-
- it('makes a request to create a new board', () => {
- requestSpy.mockReturnValue([200, dummyResponse]);
- const expectedResponse = expect.objectContaining({ data: dummyResponse });
-
- return expect(service.createBoard(board))
- .resolves.toEqual(expectedResponse)
- .then(() => {
- expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
- });
- });
-
- it('fails for error response', () => {
- requestSpy.mockReturnValue([500]);
-
- return expect(service.createBoard(board))
- .rejects.toThrow()
- .then(() => {
- expect(requestSpy).toHaveBeenCalledWith(expectedRequest);
- });
- });
- });
- });
-
- describe('deleteBoard', () => {
- const id = 'capsized';
- const url = `${endpoints.boardsEndpoint}/${id}.json`;
-
- it('makes a request to delete a boards', () => {
- axiosMock.onDelete(url).replyOnce(200, dummyResponse);
- const expectedResponse = expect.objectContaining({ data: dummyResponse });
-
- return expect(service.deleteBoard({ id })).resolves.toEqual(expectedResponse);
- });
-
- it('fails for error response', () => {
- axiosMock.onDelete(url).replyOnce(500);
-
- return expect(service.deleteBoard({ id })).rejects.toThrow();
- });
- });
-});
diff --git a/spec/frontend/clusters/clusters_bundle_spec.js b/spec/frontend/clusters/clusters_bundle_spec.js
index 199e11401a9..d7c648bcd20 100644
--- a/spec/frontend/clusters/clusters_bundle_spec.js
+++ b/spec/frontend/clusters/clusters_bundle_spec.js
@@ -1,3 +1,7 @@
+import MockAdapter from 'axios-mock-adapter';
+import $ from 'jquery';
+import { loadHTMLFixture } from 'helpers/fixtures';
+import { setTestTimeout } from 'helpers/timeout';
import Clusters from '~/clusters/clusters_bundle';
import {
APPLICATION_STATUS,
@@ -5,11 +9,7 @@ import {
APPLICATIONS,
RUNNER,
} from '~/clusters/constants';
-import MockAdapter from 'axios-mock-adapter';
import axios from '~/lib/utils/axios_utils';
-import { loadHTMLFixture } from 'helpers/fixtures';
-import { setTestTimeout } from 'helpers/timeout';
-import $ from 'jquery';
import initProjectSelectDropdown from '~/project_select';
jest.mock('~/lib/utils/poll');
@@ -46,7 +46,6 @@ describe('Clusters', () => {
afterEach(() => {
cluster.destroy();
mock.restore();
- jest.clearAllMocks();
});
describe('class constructor', () => {
diff --git a/spec/frontend/clusters/components/__snapshots__/remove_cluster_confirmation_spec.js.snap b/spec/frontend/clusters/components/__snapshots__/remove_cluster_confirmation_spec.js.snap
new file mode 100644
index 00000000000..8f406c62824
--- /dev/null
+++ b/spec/frontend/clusters/components/__snapshots__/remove_cluster_confirmation_spec.js.snap
@@ -0,0 +1,80 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Remove cluster confirmation modal renders splitbutton with modal included 1`] = `
+<div>
+ <div
+ class="dropdown btn-group b-dropdown gl-dropdown"
+ >
+ <button
+ class="btn btn-danger"
+ type="button"
+ >
+
+ Remove integration and resources
+
+ <!---->
+ </button>
+ <button
+ aria-expanded="false"
+ aria-haspopup="true"
+ class="btn dropdown-toggle btn-danger dropdown-toggle-split"
+ type="button"
+ >
+ <span
+ class="sr-only"
+ >
+ Toggle Dropdown
+ </span>
+ </button>
+ <ul
+ class="dropdown-menu dropdown-menu-selectable dropdown-menu-large"
+ role="menu"
+ tabindex="-1"
+ >
+ <li>
+ <button
+ class="dropdown-item is-active"
+ role="menuitem"
+ type="button"
+ >
+ <strong>
+ Remove integration and resources
+ </strong>
+
+ <div>
+ Deletes all GitLab resources attached to this cluster during removal
+ </div>
+ </button>
+ </li>
+
+ <li>
+ <hr
+ aria-orientation="horizontal"
+ class="dropdown-divider"
+ role="separator"
+ />
+ </li>
+ <li>
+ <button
+ class="dropdown-item"
+ role="menuitem"
+ type="button"
+ >
+ <strong>
+ Remove integration
+ </strong>
+
+ <div>
+ Removes cluster from project but keeps associated resources
+ </div>
+ </button>
+ </li>
+
+ <!---->
+
+ </ul>
+ </div>
+
+ <!---->
+</div>
+`;
diff --git a/spec/frontend/clusters/components/application_row_spec.js b/spec/frontend/clusters/components/application_row_spec.js
index 41da4125a20..33ff1424c61 100644
--- a/spec/frontend/clusters/components/application_row_spec.js
+++ b/spec/frontend/clusters/components/application_row_spec.js
@@ -1,11 +1,11 @@
import Vue from 'vue';
import { shallowMount } from '@vue/test-utils';
+import mountComponent from 'helpers/vue_mount_component_helper';
import eventHub from '~/clusters/event_hub';
import { APPLICATION_STATUS } from '~/clusters/constants';
import applicationRow from '~/clusters/components/application_row.vue';
import UninstallApplicationConfirmationModal from '~/clusters/components/uninstall_application_confirmation_modal.vue';
-import mountComponent from 'helpers/vue_mount_component_helper';
import { DEFAULT_APPLICATION_STATE } from '../services/mock_data';
describe('Application Row', () => {
diff --git a/spec/frontend/clusters/components/applications_spec.js b/spec/frontend/clusters/components/applications_spec.js
index 49bda9539fd..2d7958a6b65 100644
--- a/spec/frontend/clusters/components/applications_spec.js
+++ b/spec/frontend/clusters/components/applications_spec.js
@@ -1,10 +1,10 @@
import Vue from 'vue';
+import mountComponent from 'helpers/vue_mount_component_helper';
+import { shallowMount } from '@vue/test-utils';
import applications from '~/clusters/components/applications.vue';
import { CLUSTER_TYPE } from '~/clusters/constants';
-import mountComponent from 'helpers/vue_mount_component_helper';
import { APPLICATIONS_MOCK_STATE } from '../services/mock_data';
import eventHub from '~/clusters/event_hub';
-import { shallowMount } from '@vue/test-utils';
import KnativeDomainEditor from '~/clusters/components/knative_domain_editor.vue';
import CrossplaneProviderStack from '~/clusters/components/crossplane_provider_stack.vue';
diff --git a/spec/frontend/clusters/components/remove_cluster_confirmation_spec.js b/spec/frontend/clusters/components/remove_cluster_confirmation_spec.js
new file mode 100644
index 00000000000..b5aead238ad
--- /dev/null
+++ b/spec/frontend/clusters/components/remove_cluster_confirmation_spec.js
@@ -0,0 +1,57 @@
+import { mount } from '@vue/test-utils';
+import { GlModal } from '@gitlab/ui';
+import SplitButton from '~/vue_shared/components/split_button.vue';
+import RemoveClusterConfirmation from '~/clusters/components/remove_cluster_confirmation.vue';
+
+describe('Remove cluster confirmation modal', () => {
+ let wrapper;
+
+ const createComponent = (props = {}) => {
+ wrapper = mount(RemoveClusterConfirmation, {
+ propsData: {
+ clusterPath: 'clusterPath',
+ clusterName: 'clusterName',
+ ...props,
+ },
+ sync: false,
+ });
+ };
+
+ afterEach(() => {
+ wrapper.destroy();
+ wrapper = null;
+ });
+
+ it('renders splitbutton with modal included', () => {
+ createComponent();
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ describe('split button dropdown', () => {
+ const findModal = () => wrapper.find(GlModal).vm;
+ const findSplitButton = () => wrapper.find(SplitButton).vm;
+
+ beforeEach(() => {
+ createComponent({ clusterName: 'my-test-cluster' });
+ jest.spyOn(findModal(), 'show').mockReturnValue();
+ });
+
+ it('opens modal with "cleanup" option', () => {
+ findSplitButton().$emit('remove-cluster-and-cleanup');
+
+ return wrapper.vm.$nextTick().then(() => {
+ expect(findModal().show).toHaveBeenCalled();
+ expect(wrapper.vm.confirmCleanup).toEqual(true);
+ });
+ });
+
+ it('opens modal without "cleanup" option', () => {
+ findSplitButton().$emit('remove-cluster');
+
+ return wrapper.vm.$nextTick().then(() => {
+ expect(findModal().show).toHaveBeenCalled();
+ expect(wrapper.vm.confirmCleanup).toEqual(false);
+ });
+ });
+ });
+});
diff --git a/spec/frontend/clusters/components/uninstall_application_confirmation_modal_spec.js b/spec/frontend/clusters/components/uninstall_application_confirmation_modal_spec.js
index 04808864fc0..f95bce775c6 100644
--- a/spec/frontend/clusters/components/uninstall_application_confirmation_modal_spec.js
+++ b/spec/frontend/clusters/components/uninstall_application_confirmation_modal_spec.js
@@ -1,6 +1,6 @@
import { shallowMount } from '@vue/test-utils';
-import UninstallApplicationConfirmationModal from '~/clusters/components/uninstall_application_confirmation_modal.vue';
import { GlModal } from '@gitlab/ui';
+import UninstallApplicationConfirmationModal from '~/clusters/components/uninstall_application_confirmation_modal.vue';
import { INGRESS } from '~/clusters/constants';
describe('UninstallApplicationConfirmationModal', () => {
diff --git a/spec/frontend/clusters/services/crossplane_provider_stack_spec.js b/spec/frontend/clusters/services/crossplane_provider_stack_spec.js
index 0d234822d7b..d43dc9333b4 100644
--- a/spec/frontend/clusters/services/crossplane_provider_stack_spec.js
+++ b/spec/frontend/clusters/services/crossplane_provider_stack_spec.js
@@ -1,5 +1,5 @@
import { shallowMount } from '@vue/test-utils';
-import { GlDropdownItem } from '@gitlab/ui';
+import { GlDropdownItem, GlIcon } from '@gitlab/ui';
import CrossplaneProviderStack from '~/clusters/components/crossplane_provider_stack.vue';
describe('CrossplaneProviderStack component', () => {
@@ -72,7 +72,12 @@ describe('CrossplaneProviderStack component', () => {
findFirstDropdownElement().vm.$emit('click');
expect(wrapper.emitted().set[0][0].code).toEqual('gcp');
});
- it('it renders the correct dropdown text when no stack is selected', () => {
+
+ it('renders the correct dropdown text when no stack is selected', () => {
expect(wrapper.vm.dropdownText).toBe('Select Stack');
});
+
+ it('renders an external link', () => {
+ expect(wrapper.find(GlIcon).props('name')).toBe('external-link');
+ });
});
diff --git a/spec/frontend/commit/commit_pipeline_status_component_spec.js b/spec/frontend/commit/commit_pipeline_status_component_spec.js
index 1736d1d0df8..a2a6d405eab 100644
--- a/spec/frontend/commit/commit_pipeline_status_component_spec.js
+++ b/spec/frontend/commit/commit_pipeline_status_component_spec.js
@@ -1,10 +1,10 @@
import Visibility from 'visibilityjs';
import { GlLoadingIcon } from '@gitlab/ui';
+import { shallowMount } from '@vue/test-utils';
import Poll from '~/lib/utils/poll';
import flash from '~/flash';
import CiIcon from '~/vue_shared/components/ci_icon.vue';
import CommitPipelineStatus from '~/projects/tree/components/commit_pipeline_status_component.vue';
-import { shallowMount } from '@vue/test-utils';
import { getJSONFixture } from '../helpers/fixtures';
jest.mock('~/lib/utils/poll');
@@ -44,7 +44,6 @@ describe('Commit pipeline status component', () => {
afterEach(() => {
wrapper.destroy();
wrapper = null;
- jest.clearAllMocks();
});
describe('Visibility management', () => {
diff --git a/spec/frontend/confidential_merge_request/components/__snapshots__/project_form_group_spec.js.snap b/spec/frontend/confidential_merge_request/components/__snapshots__/project_form_group_spec.js.snap
index 3c603c7f573..d69a9f90d65 100644
--- a/spec/frontend/confidential_merge_request/components/__snapshots__/project_form_group_spec.js.snap
+++ b/spec/frontend/confidential_merge_request/components/__snapshots__/project_form_group_spec.js.snap
@@ -15,19 +15,12 @@ exports[`Confidential merge request project form group component renders empty s
class="text-muted mt-1 mb-0"
>
- No forks available to you.
+ No forks are available to you.
<br />
- <span>
- To protect this issue's confidentiality,
- <a
- class="help-link"
- href="https://test.com"
- >
- fork the project
- </a>
- and set the forks visibility to private.
- </span>
+ <glsprintf-stub
+ message="To protect this issue's confidentiality, %{forkLink} and set the fork's visibility to private."
+ />
<gllink-stub
class="w-auto p-0 d-inline-block text-primary bg-transparent"
@@ -65,19 +58,12 @@ exports[`Confidential merge request project form group component renders fork dr
class="text-muted mt-1 mb-0"
>
- No forks available to you.
+ No forks are available to you.
<br />
- <span>
- To protect this issue's confidentiality,
- <a
- class="help-link"
- href="https://test.com"
- >
- fork the project
- </a>
- and set the forks visibility to private.
- </span>
+ <glsprintf-stub
+ message="To protect this issue's confidentiality, %{forkLink} and set the fork's visibility to private."
+ />
<gllink-stub
class="w-auto p-0 d-inline-block text-primary bg-transparent"
diff --git a/spec/frontend/contributors/component/contributors_spec.js b/spec/frontend/contributors/component/contributors_spec.js
index fdba09ed26c..1d5605ef516 100644
--- a/spec/frontend/contributors/component/contributors_spec.js
+++ b/spec/frontend/contributors/component/contributors_spec.js
@@ -1,8 +1,8 @@
import Vue from 'vue';
import { shallowMount, createLocalVue } from '@vue/test-utils';
+import MockAdapter from 'axios-mock-adapter';
import { createStore } from '~/contributors/stores';
import axios from '~/lib/utils/axios_utils';
-import MockAdapter from 'axios-mock-adapter';
import ContributorsCharts from '~/contributors/components/contributors.vue';
const localVue = createLocalVue();
diff --git a/spec/frontend/contributors/store/actions_spec.js b/spec/frontend/contributors/store/actions_spec.js
index bb017e0ac0f..fe3e2132d9d 100644
--- a/spec/frontend/contributors/store/actions_spec.js
+++ b/spec/frontend/contributors/store/actions_spec.js
@@ -1,6 +1,6 @@
-import axios from '~/lib/utils/axios_utils';
import MockAdapter from 'axios-mock-adapter';
import testAction from 'helpers/vuex_action_helper';
+import axios from '~/lib/utils/axios_utils';
import flashError from '~/flash';
import * as actions from '~/contributors/stores/actions';
import * as types from '~/contributors/stores/mutation_types';
diff --git a/spec/frontend/create_cluster/eks_cluster/components/cluster_form_dropdown_spec.js b/spec/frontend/create_cluster/eks_cluster/components/cluster_form_dropdown_spec.js
index efbe2635fcc..c9cdd728509 100644
--- a/spec/frontend/create_cluster/eks_cluster/components/cluster_form_dropdown_spec.js
+++ b/spec/frontend/create_cluster/eks_cluster/components/cluster_form_dropdown_spec.js
@@ -1,9 +1,10 @@
import { shallowMount } from '@vue/test-utils';
+import $ from 'jquery';
+import { GlIcon } from '@gitlab/ui';
import ClusterFormDropdown from '~/create_cluster/eks_cluster/components/cluster_form_dropdown.vue';
import DropdownButton from '~/vue_shared/components/dropdown/dropdown_button.vue';
import DropdownSearchInput from '~/vue_shared/components/dropdown/dropdown_search_input.vue';
-import { GlIcon } from '@gitlab/ui';
describe('ClusterFormDropdown', () => {
let vm;
@@ -169,4 +170,14 @@ describe('ClusterFormDropdown', () => {
expect(vm.findAll('.js-dropdown-item').length).toEqual(1);
expect(vm.find('.js-dropdown-item').text()).toEqual(secondItem.name);
});
+
+ it('focuses dropdown search input when dropdown is displayed', () => {
+ const dropdownEl = vm.find('.dropdown').element;
+
+ expect(vm.find(DropdownSearchInput).props('focused')).toBe(false);
+
+ $(dropdownEl).trigger('shown.bs.dropdown');
+
+ expect(vm.find(DropdownSearchInput).props('focused')).toBe(true);
+ });
});
diff --git a/spec/frontend/create_cluster/eks_cluster/components/eks_cluster_configuration_form_spec.js b/spec/frontend/create_cluster/eks_cluster/components/eks_cluster_configuration_form_spec.js
index 25d613d64ed..d3992c6751c 100644
--- a/spec/frontend/create_cluster/eks_cluster/components/eks_cluster_configuration_form_spec.js
+++ b/spec/frontend/create_cluster/eks_cluster/components/eks_cluster_configuration_form_spec.js
@@ -27,13 +27,11 @@ describe('EksClusterConfigurationForm', () => {
let subnetsActions;
let keyPairsActions;
let securityGroupsActions;
- let instanceTypesActions;
let vm;
beforeEach(() => {
state = eksClusterFormState();
actions = {
- signOut: jest.fn(),
createCluster: jest.fn(),
setClusterName: jest.fn(),
setEnvironmentScope: jest.fn(),
@@ -66,9 +64,6 @@ describe('EksClusterConfigurationForm', () => {
securityGroupsActions = {
fetchItems: jest.fn(),
};
- instanceTypesActions = {
- fetchItems: jest.fn(),
- };
rolesState = {
...clusterDropdownStoreState(),
};
@@ -127,7 +122,6 @@ describe('EksClusterConfigurationForm', () => {
instanceTypes: {
namespaced: true,
state: instanceTypesState,
- actions: instanceTypesActions,
},
},
});
@@ -164,7 +158,6 @@ describe('EksClusterConfigurationForm', () => {
});
};
- const findSignOutButton = () => vm.find('.js-sign-out');
const findCreateClusterButton = () => vm.find('.js-create-cluster');
const findClusterNameInput = () => vm.find('[id=eks-cluster-name]');
const findEnvironmentScopeInput = () => vm.find('[id=eks-environment-scope]');
@@ -187,15 +180,6 @@ describe('EksClusterConfigurationForm', () => {
it('fetches available roles', () => {
expect(rolesActions.fetchItems).toHaveBeenCalled();
});
-
- it('fetches available instance types', () => {
- expect(instanceTypesActions.fetchItems).toHaveBeenCalled();
- });
- });
-
- it('dispatches signOut action when sign out button is clicked', () => {
- findSignOutButton().trigger('click');
- expect(actions.signOut).toHaveBeenCalled();
});
it('sets isLoadingRoles to RoleDropdown loading property', () => {
diff --git a/spec/frontend/create_cluster/eks_cluster/services/aws_services_facade_spec.js b/spec/frontend/create_cluster/eks_cluster/services/aws_services_facade_spec.js
index 25be858dcb3..490a2775b67 100644
--- a/spec/frontend/create_cluster/eks_cluster/services/aws_services_facade_spec.js
+++ b/spec/frontend/create_cluster/eks_cluster/services/aws_services_facade_spec.js
@@ -1,42 +1,62 @@
-import awsServicesFacadeFactory from '~/create_cluster/eks_cluster/services/aws_services_facade';
-import axios from '~/lib/utils/axios_utils';
-import AxiosMockAdapter from 'axios-mock-adapter';
+import AWS from 'aws-sdk/global';
+import EC2 from 'aws-sdk/clients/ec2';
+import {
+ setAWSConfig,
+ fetchRoles,
+ fetchRegions,
+ fetchKeyPairs,
+ fetchVpcs,
+ fetchSubnets,
+ fetchSecurityGroups,
+ DEFAULT_REGION,
+} from '~/create_cluster/eks_cluster/services/aws_services_facade';
+
+const mockListRolesPromise = jest.fn();
+const mockDescribeRegionsPromise = jest.fn();
+const mockDescribeKeyPairsPromise = jest.fn();
+const mockDescribeVpcsPromise = jest.fn();
+const mockDescribeSubnetsPromise = jest.fn();
+const mockDescribeSecurityGroupsPromise = jest.fn();
+
+jest.mock('aws-sdk/clients/iam', () =>
+ jest.fn().mockImplementation(() => ({
+ listRoles: jest.fn().mockReturnValue({ promise: mockListRolesPromise }),
+ })),
+);
+
+jest.mock('aws-sdk/clients/ec2', () =>
+ jest.fn().mockImplementation(() => ({
+ describeRegions: jest.fn().mockReturnValue({ promise: mockDescribeRegionsPromise }),
+ describeKeyPairs: jest.fn().mockReturnValue({ promise: mockDescribeKeyPairsPromise }),
+ describeVpcs: jest.fn().mockReturnValue({ promise: mockDescribeVpcsPromise }),
+ describeSubnets: jest.fn().mockReturnValue({ promise: mockDescribeSubnetsPromise }),
+ describeSecurityGroups: jest
+ .fn()
+ .mockReturnValue({ promise: mockDescribeSecurityGroupsPromise }),
+ })),
+);
describe('awsServicesFacade', () => {
- let apiPaths;
- let axiosMock;
- let awsServices;
let region;
let vpc;
beforeEach(() => {
- apiPaths = {
- getKeyPairsPath: '/clusters/aws/api/key_pairs',
- getRegionsPath: '/clusters/aws/api/regions',
- getRolesPath: '/clusters/aws/api/roles',
- getSecurityGroupsPath: '/clusters/aws/api/security_groups',
- getSubnetsPath: '/clusters/aws/api/subnets',
- getVpcsPath: '/clusters/aws/api/vpcs',
- getInstanceTypesPath: '/clusters/aws/api/instance_types',
- };
region = 'west-1';
vpc = 'vpc-2';
- awsServices = awsServicesFacadeFactory(apiPaths);
- axiosMock = new AxiosMockAdapter(axios);
});
- describe('when fetchRegions succeeds', () => {
- let regions;
- let regionsOutput;
+ it('setAWSConfig configures AWS SDK with provided credentials and default region', () => {
+ const awsCredentials = {
+ accessKeyId: 'access-key',
+ secretAccessKey: 'secret-key',
+ sessionToken: 'session-token',
+ };
- beforeEach(() => {
- regions = [{ region_name: 'east-1' }, { region_name: 'west-2' }];
- regionsOutput = regions.map(({ region_name: name }) => ({ name, value: name }));
- axiosMock.onGet(apiPaths.getRegionsPath).reply(200, { regions });
- });
+ setAWSConfig({ awsCredentials });
- it('return list of roles where each item has a name and value', () => {
- expect(awsServices.fetchRegions()).resolves.toEqual(regionsOutput);
+ expect(AWS.config).toEqual({
+ ...awsCredentials,
+ region: DEFAULT_REGION,
});
});
@@ -46,15 +66,32 @@ describe('awsServicesFacade', () => {
beforeEach(() => {
roles = [
- { role_name: 'admin', arn: 'aws::admin' },
- { role_name: 'read-only', arn: 'aws::read-only' },
+ { RoleName: 'admin', Arn: 'aws::admin' },
+ { RoleName: 'read-only', Arn: 'aws::read-only' },
];
- rolesOutput = roles.map(({ role_name: name, arn: value }) => ({ name, value }));
- axiosMock.onGet(apiPaths.getRolesPath).reply(200, { roles });
+ rolesOutput = roles.map(({ RoleName: name, Arn: value }) => ({ name, value }));
+
+ mockListRolesPromise.mockResolvedValueOnce({ Roles: roles });
});
it('return list of regions where each item has a name and value', () => {
- expect(awsServices.fetchRoles()).resolves.toEqual(rolesOutput);
+ expect(fetchRoles()).resolves.toEqual(rolesOutput);
+ });
+ });
+
+ describe('when fetchRegions succeeds', () => {
+ let regions;
+ let regionsOutput;
+
+ beforeEach(() => {
+ regions = [{ RegionName: 'east-1' }, { RegionName: 'west-2' }];
+ regionsOutput = regions.map(({ RegionName: name }) => ({ name, value: name }));
+
+ mockDescribeRegionsPromise.mockResolvedValueOnce({ Regions: regions });
+ });
+
+ it('return list of roles where each item has a name and value', () => {
+ expect(fetchRegions()).resolves.toEqual(regionsOutput);
});
});
@@ -63,15 +100,19 @@ describe('awsServicesFacade', () => {
let keyPairsOutput;
beforeEach(() => {
- keyPairs = [{ key_pair: 'key-pair' }, { key_pair: 'key-pair-2' }];
- keyPairsOutput = keyPairs.map(({ key_name: name }) => ({ name, value: name }));
- axiosMock
- .onGet(apiPaths.getKeyPairsPath, { params: { region } })
- .reply(200, { key_pairs: keyPairs });
+ keyPairs = [{ KeyName: 'key-pair' }, { KeyName: 'key-pair-2' }];
+ keyPairsOutput = keyPairs.map(({ KeyName: name }) => ({ name, value: name }));
+
+ mockDescribeKeyPairsPromise.mockResolvedValueOnce({ KeyPairs: keyPairs });
+ });
+
+ it('instantatiates ec2 service with provided region', () => {
+ fetchKeyPairs({ region });
+ expect(EC2).toHaveBeenCalledWith({ region });
});
it('return list of key pairs where each item has a name and value', () => {
- expect(awsServices.fetchKeyPairs({ region })).resolves.toEqual(keyPairsOutput);
+ expect(fetchKeyPairs({ region })).resolves.toEqual(keyPairsOutput);
});
});
@@ -80,13 +121,37 @@ describe('awsServicesFacade', () => {
let vpcsOutput;
beforeEach(() => {
- vpcs = [{ vpc_id: 'vpc-1' }, { vpc_id: 'vpc-2' }];
- vpcsOutput = vpcs.map(({ vpc_id: name }) => ({ name, value: name }));
- axiosMock.onGet(apiPaths.getVpcsPath, { params: { region } }).reply(200, { vpcs });
+ vpcs = [{ VpcId: 'vpc-1', Tags: [] }, { VpcId: 'vpc-2', Tags: [] }];
+ vpcsOutput = vpcs.map(({ VpcId: vpcId }) => ({ name: vpcId, value: vpcId }));
+
+ mockDescribeVpcsPromise.mockResolvedValueOnce({ Vpcs: vpcs });
+ });
+
+ it('instantatiates ec2 service with provided region', () => {
+ fetchVpcs({ region });
+ expect(EC2).toHaveBeenCalledWith({ region });
});
it('return list of vpcs where each item has a name and value', () => {
- expect(awsServices.fetchVpcs({ region })).resolves.toEqual(vpcsOutput);
+ expect(fetchVpcs({ region })).resolves.toEqual(vpcsOutput);
+ });
+ });
+
+ describe('when vpcs has a Name tag', () => {
+ const vpcName = 'vpc name';
+ const vpcId = 'vpc id';
+ let vpcs;
+ let vpcsOutput;
+
+ beforeEach(() => {
+ vpcs = [{ VpcId: vpcId, Tags: [{ Key: 'Name', Value: vpcName }] }];
+ vpcsOutput = [{ name: vpcName, value: vpcId }];
+
+ mockDescribeVpcsPromise.mockResolvedValueOnce({ Vpcs: vpcs });
+ });
+
+ it('uses name tag value as the vpc name', () => {
+ expect(fetchVpcs({ region })).resolves.toEqual(vpcsOutput);
});
});
@@ -95,15 +160,14 @@ describe('awsServicesFacade', () => {
let subnetsOutput;
beforeEach(() => {
- subnets = [{ subnet_id: 'vpc-1' }, { subnet_id: 'vpc-2' }];
- subnetsOutput = subnets.map(({ subnet_id }) => ({ name: subnet_id, value: subnet_id }));
- axiosMock
- .onGet(apiPaths.getSubnetsPath, { params: { region, vpc_id: vpc } })
- .reply(200, { subnets });
+ subnets = [{ SubnetId: 'subnet-1' }, { SubnetId: 'subnet-2' }];
+ subnetsOutput = subnets.map(({ SubnetId }) => ({ name: SubnetId, value: SubnetId }));
+
+ mockDescribeSubnetsPromise.mockResolvedValueOnce({ Subnets: subnets });
});
it('return list of subnets where each item has a name and value', () => {
- expect(awsServices.fetchSubnets({ region, vpc })).resolves.toEqual(subnetsOutput);
+ expect(fetchSubnets({ region, vpc })).resolves.toEqual(subnetsOutput);
});
});
@@ -113,40 +177,19 @@ describe('awsServicesFacade', () => {
beforeEach(() => {
securityGroups = [
- { group_name: 'admin group', group_id: 'group-1' },
- { group_name: 'basic group', group_id: 'group-2' },
+ { GroupName: 'admin group', GroupId: 'group-1' },
+ { GroupName: 'basic group', GroupId: 'group-2' },
];
- securityGroupsOutput = securityGroups.map(({ group_id: value, group_name: name }) => ({
+ securityGroupsOutput = securityGroups.map(({ GroupId: value, GroupName: name }) => ({
name,
value,
}));
- axiosMock
- .onGet(apiPaths.getSecurityGroupsPath, { params: { region, vpc_id: vpc } })
- .reply(200, { security_groups: securityGroups });
- });
- it('return list of security groups where each item has a name and value', () => {
- expect(awsServices.fetchSecurityGroups({ region, vpc })).resolves.toEqual(
- securityGroupsOutput,
- );
+ mockDescribeSecurityGroupsPromise.mockResolvedValueOnce({ SecurityGroups: securityGroups });
});
- });
-
- describe('when fetchInstanceTypes succeeds', () => {
- let instanceTypes;
- let instanceTypesOutput;
- beforeEach(() => {
- instanceTypes = [{ instance_type_name: 't2.small' }, { instance_type_name: 't2.medium' }];
- instanceTypesOutput = instanceTypes.map(({ instance_type_name }) => ({
- name: instance_type_name,
- value: instance_type_name,
- }));
- axiosMock.onGet(apiPaths.getInstanceTypesPath).reply(200, { instance_types: instanceTypes });
- });
-
- it('return list of instance types where each item has a name and value', () => {
- expect(awsServices.fetchInstanceTypes()).resolves.toEqual(instanceTypesOutput);
+ it('return list of security groups where each item has a name and value', () => {
+ expect(fetchSecurityGroups({ region, vpc })).resolves.toEqual(securityGroupsOutput);
});
});
});
diff --git a/spec/frontend/create_cluster/eks_cluster/store/actions_spec.js b/spec/frontend/create_cluster/eks_cluster/store/actions_spec.js
index cf6c317a2df..1139f094705 100644
--- a/spec/frontend/create_cluster/eks_cluster/store/actions_spec.js
+++ b/spec/frontend/create_cluster/eks_cluster/store/actions_spec.js
@@ -1,5 +1,5 @@
import testAction from 'helpers/vuex_action_helper';
-
+import MockAdapter from 'axios-mock-adapter';
import createState from '~/create_cluster/eks_cluster/store/state';
import * as actions from '~/create_cluster/eks_cluster/store/actions';
import {
@@ -20,10 +20,8 @@ import {
CREATE_ROLE_ERROR,
REQUEST_CREATE_CLUSTER,
CREATE_CLUSTER_ERROR,
- SIGN_OUT,
} from '~/create_cluster/eks_cluster/store/mutation_types';
import axios from '~/lib/utils/axios_utils';
-import MockAdapter from 'axios-mock-adapter';
import createFlash from '~/flash';
jest.mock('~/flash');
@@ -64,7 +62,6 @@ describe('EKS Cluster Store Actions', () => {
state = {
...createState(),
createRolePath: '/clusters/roles/',
- signOutPath: '/aws/signout',
createClusterPath: '/clusters/',
};
});
@@ -102,6 +99,10 @@ describe('EKS Cluster Store Actions', () => {
roleArn: 'role_arn',
externalId: 'externalId',
};
+ const response = {
+ accessKeyId: 'access-key-id',
+ secretAccessKey: 'secret-key-id',
+ };
describe('when request succeeds', () => {
beforeEach(() => {
@@ -110,7 +111,7 @@ describe('EKS Cluster Store Actions', () => {
role_arn: payload.roleArn,
role_external_id: payload.externalId,
})
- .reply(201);
+ .reply(201, response);
});
it('dispatches createRoleSuccess action', () =>
@@ -119,7 +120,7 @@ describe('EKS Cluster Store Actions', () => {
payload,
state,
[],
- [{ type: 'requestCreateRole' }, { type: 'createRoleSuccess' }],
+ [{ type: 'requestCreateRole' }, { type: 'createRoleSuccess', payload: response }],
));
});
@@ -271,24 +272,11 @@ describe('EKS Cluster Store Actions', () => {
payload = { name: ['Create cluster failed'] };
});
- it('commits createClusterError mutation', () => {
+ it('commits createClusterError mutation and displays flash message', () =>
testAction(actions.createClusterError, payload, state, [
{ type: CREATE_CLUSTER_ERROR, payload },
- ]);
- });
-
- it('creates a flash that displays the create cluster error', () => {
- expect(createFlash).toHaveBeenCalledWith(payload.name[0]);
- });
- });
-
- describe('signOut', () => {
- beforeEach(() => {
- mock.onDelete(state.signOutPath).reply(200, null);
- });
-
- it('commits signOut mutation', () => {
- testAction(actions.signOut, null, state, [{ type: SIGN_OUT }]);
- });
+ ]).then(() => {
+ expect(createFlash).toHaveBeenCalledWith(payload.name[0]);
+ }));
});
});
diff --git a/spec/frontend/create_cluster/eks_cluster/store/mutations_spec.js b/spec/frontend/create_cluster/eks_cluster/store/mutations_spec.js
index 0fb392f5eea..8bb014d4758 100644
--- a/spec/frontend/create_cluster/eks_cluster/store/mutations_spec.js
+++ b/spec/frontend/create_cluster/eks_cluster/store/mutations_spec.js
@@ -16,7 +16,6 @@ import {
CREATE_ROLE_ERROR,
REQUEST_CREATE_CLUSTER,
CREATE_CLUSTER_ERROR,
- SIGN_OUT,
} from '~/create_cluster/eks_cluster/store/mutation_types';
import createState from '~/create_cluster/eks_cluster/store/state';
import mutations from '~/create_cluster/eks_cluster/store/mutations';
@@ -159,15 +158,4 @@ describe('Create EKS cluster store mutations', () => {
expect(state.createClusterError).toBe(error);
});
});
-
- describe(`mutation ${SIGN_OUT}`, () => {
- beforeEach(() => {
- state.hasCredentials = true;
- mutations[SIGN_OUT](state);
- });
-
- it('sets hasCredentials to false', () => {
- expect(state.hasCredentials).toBe(false);
- });
- });
});
diff --git a/spec/frontend/create_cluster/init_create_cluster_spec.js b/spec/frontend/create_cluster/init_create_cluster_spec.js
index e7b9a7adde4..1fdcb57492d 100644
--- a/spec/frontend/create_cluster/init_create_cluster_spec.js
+++ b/spec/frontend/create_cluster/init_create_cluster_spec.js
@@ -3,6 +3,11 @@ import initGkeDropdowns from '~/create_cluster/gke_cluster';
import initGkeNamespace from '~/create_cluster/gke_cluster_namespace';
import PersistentUserCallout from '~/persistent_user_callout';
+// This import is loaded dynamically in `init_create_cluster`.
+// Let's eager import it here so that the first spec doesn't timeout.
+// https://gitlab.com/gitlab-org/gitlab/issues/118499
+import '~/create_cluster/eks_cluster';
+
jest.mock('~/create_cluster/gke_cluster', () => jest.fn());
jest.mock('~/create_cluster/gke_cluster_namespace', () => jest.fn());
jest.mock('~/persistent_user_callout', () => ({
@@ -20,10 +25,9 @@ describe('initCreateCluster', () => {
};
gon = { features: {} };
});
+
afterEach(() => {
- initGkeDropdowns.mockReset();
- initGkeNamespace.mockReset();
- PersistentUserCallout.factory.mockReset();
+ jest.clearAllMocks();
});
describe.each`
diff --git a/spec/frontend/create_merge_request_dropdown_spec.js b/spec/frontend/create_merge_request_dropdown_spec.js
index dcc6fa96d18..7d26f17ed23 100644
--- a/spec/frontend/create_merge_request_dropdown_spec.js
+++ b/spec/frontend/create_merge_request_dropdown_spec.js
@@ -1,5 +1,5 @@
-import axios from '~/lib/utils/axios_utils';
import MockAdapter from 'axios-mock-adapter';
+import axios from '~/lib/utils/axios_utils';
import CreateMergeRequestDropdown from '~/create_merge_request_dropdown';
import confidentialState from '~/confidential_merge_request/state';
import { TEST_HOST } from './helpers/test_constants';
diff --git a/spec/frontend/cycle_analytics/limit_warning_component_spec.js b/spec/frontend/cycle_analytics/limit_warning_component_spec.js
index 13e9fe00a00..5041ebe1a8b 100644
--- a/spec/frontend/cycle_analytics/limit_warning_component_spec.js
+++ b/spec/frontend/cycle_analytics/limit_warning_component_spec.js
@@ -1,42 +1,43 @@
import Vue from 'vue';
+import { shallowMount } from '@vue/test-utils';
import Translate from '~/vue_shared/translate';
-import limitWarningComp from '~/cycle_analytics/components/limit_warning_component.vue';
+import LimitWarningComponent from '~/cycle_analytics/components/limit_warning_component.vue';
Vue.use(Translate);
+const createComponent = props =>
+ shallowMount(LimitWarningComponent, {
+ propsData: {
+ ...props,
+ },
+ sync: false,
+ attachToDocument: true,
+ });
+
describe('Limit warning component', () => {
let component;
- let LimitWarningComponent;
beforeEach(() => {
- LimitWarningComponent = Vue.extend(limitWarningComp);
+ component = null;
+ });
+
+ afterEach(() => {
+ component.destroy();
});
it('should not render if count is not exactly than 50', () => {
- component = new LimitWarningComponent({
- propsData: {
- count: 5,
- },
- }).$mount();
+ component = createComponent({ count: 5 });
- expect(component.$el.textContent.trim()).toBe('');
+ expect(component.text().trim()).toBe('');
- component = new LimitWarningComponent({
- propsData: {
- count: 55,
- },
- }).$mount();
+ component = createComponent({ count: 55 });
- expect(component.$el.textContent.trim()).toBe('');
+ expect(component.text().trim()).toBe('');
});
it('should render if count is exactly 50', () => {
- component = new LimitWarningComponent({
- propsData: {
- count: 50,
- },
- }).$mount();
+ component = createComponent({ count: 50 });
- expect(component.$el.textContent.trim()).toBe('Showing 50 events');
+ expect(component.text().trim()).toBe('Showing 50 events');
});
});
diff --git a/spec/frontend/diffs/components/compare_versions_spec.js b/spec/frontend/diffs/components/compare_versions_spec.js
new file mode 100644
index 00000000000..9900fcdb6e1
--- /dev/null
+++ b/spec/frontend/diffs/components/compare_versions_spec.js
@@ -0,0 +1,156 @@
+import { trimText } from 'helpers/text_helper';
+import { mount, createLocalVue } from '@vue/test-utils';
+import Vuex from 'vuex';
+import CompareVersionsComponent from '~/diffs/components/compare_versions.vue';
+import Icon from '~/vue_shared/components/icon.vue';
+import { createStore } from '~/mr_notes/stores';
+import diffsMockData from '../mock_data/merge_request_diffs';
+import getDiffWithCommit from '../mock_data/diff_with_commit';
+
+const localVue = createLocalVue();
+localVue.use(Vuex);
+
+describe('CompareVersions', () => {
+ let wrapper;
+ const targetBranch = { branchName: 'tmp-wine-dev', versionIndex: -1 };
+
+ const createWrapper = props => {
+ const store = createStore();
+
+ store.state.diffs.addedLines = 10;
+ store.state.diffs.removedLines = 20;
+ store.state.diffs.diffFiles.push('test');
+
+ wrapper = mount(CompareVersionsComponent, {
+ sync: false,
+ attachToDocument: true,
+ localVue,
+ store,
+ propsData: {
+ mergeRequestDiffs: diffsMockData,
+ mergeRequestDiff: diffsMockData[0],
+ targetBranch,
+ ...props,
+ },
+ });
+ };
+
+ beforeEach(() => {
+ createWrapper();
+ });
+
+ afterEach(() => {
+ wrapper.destroy();
+ wrapper = null;
+ });
+
+ describe('template', () => {
+ it('should render Tree List toggle button with correct attribute values', () => {
+ const treeListBtn = wrapper.find('.js-toggle-tree-list');
+
+ expect(treeListBtn.exists()).toBe(true);
+ expect(treeListBtn.attributes('data-original-title')).toBe('Hide file browser');
+ expect(treeListBtn.findAll(Icon).length).not.toBe(0);
+ expect(treeListBtn.find(Icon).props('name')).toBe('collapse-left');
+ });
+
+ it('should render comparison dropdowns with correct values', () => {
+ const sourceDropdown = wrapper.find('.mr-version-dropdown');
+ const targetDropdown = wrapper.find('.mr-version-compare-dropdown');
+
+ expect(sourceDropdown.exists()).toBe(true);
+ expect(targetDropdown.exists()).toBe(true);
+ expect(sourceDropdown.find('a span').html()).toContain('latest version');
+ expect(targetDropdown.find('a span').html()).toContain(targetBranch.branchName);
+ });
+
+ it('should not render comparison dropdowns if no mergeRequestDiffs are specified', () => {
+ createWrapper({ mergeRequestDiffs: [] });
+
+ const sourceDropdown = wrapper.find('.mr-version-dropdown');
+ const targetDropdown = wrapper.find('.mr-version-compare-dropdown');
+
+ expect(sourceDropdown.exists()).toBe(false);
+ expect(targetDropdown.exists()).toBe(false);
+ });
+
+ it('should render view types buttons with correct values', () => {
+ const inlineBtn = wrapper.find('#inline-diff-btn');
+ const parallelBtn = wrapper.find('#parallel-diff-btn');
+
+ expect(inlineBtn.exists()).toBe(true);
+ expect(parallelBtn.exists()).toBe(true);
+ expect(inlineBtn.attributes('data-view-type')).toEqual('inline');
+ expect(parallelBtn.attributes('data-view-type')).toEqual('parallel');
+ expect(inlineBtn.html()).toContain('Inline');
+ expect(parallelBtn.html()).toContain('Side-by-side');
+ });
+
+ it('adds container-limiting classes when showFileTree is false with inline diffs', () => {
+ createWrapper({ isLimitedContainer: true });
+
+ const limitedContainer = wrapper.find('.container-limited.limit-container-width');
+
+ expect(limitedContainer.exists()).toBe(true);
+ });
+
+ it('does not add container-limiting classes when showFileTree is false with inline diffs', () => {
+ createWrapper({ isLimitedContainer: false });
+
+ const limitedContainer = wrapper.find('.container-limited.limit-container-width');
+
+ expect(limitedContainer.exists()).toBe(false);
+ });
+ });
+
+ describe('setInlineDiffViewType', () => {
+ it('should persist the view type in the url', () => {
+ const viewTypeBtn = wrapper.find('#inline-diff-btn');
+ viewTypeBtn.trigger('click');
+
+ expect(window.location.toString()).toContain('?view=inline');
+ });
+ });
+
+ describe('setParallelDiffViewType', () => {
+ it('should persist the view type in the url', () => {
+ const viewTypeBtn = wrapper.find('#parallel-diff-btn');
+ viewTypeBtn.trigger('click');
+
+ expect(window.location.toString()).toContain('?view=parallel');
+ });
+ });
+
+ describe('comparableDiffs', () => {
+ it('should not contain the first item in the mergeRequestDiffs property', () => {
+ const { comparableDiffs } = wrapper.vm;
+ const comparableDiffsMock = diffsMockData.slice(1);
+
+ expect(comparableDiffs).toEqual(comparableDiffsMock);
+ });
+ });
+
+ describe('baseVersionPath', () => {
+ it('should be set correctly from mergeRequestDiff', () => {
+ expect(wrapper.vm.baseVersionPath).toEqual(wrapper.vm.mergeRequestDiff.base_version_path);
+ });
+ });
+
+ describe('commit', () => {
+ beforeEach(done => {
+ wrapper.vm.$store.state.diffs.commit = getDiffWithCommit().commit;
+ wrapper.mergeRequestDiffs = [];
+
+ wrapper.vm.$nextTick(done);
+ });
+
+ it('renders latest version button', () => {
+ expect(trimText(wrapper.find('.js-latest-version').text())).toBe('Show latest version');
+ });
+
+ it('renders short commit ID', () => {
+ expect(wrapper.text()).toContain('Viewing commit');
+ expect(wrapper.text()).toContain(wrapper.vm.commit.short_id);
+ });
+ });
+});
diff --git a/spec/frontend/diffs/components/diff_file_header_spec.js b/spec/frontend/diffs/components/diff_file_header_spec.js
index ac770c896bd..48fd6dd6f58 100644
--- a/spec/frontend/diffs/components/diff_file_header_spec.js
+++ b/spec/frontend/diffs/components/diff_file_header_spec.js
@@ -92,6 +92,7 @@ describe('DiffFileHeader component', () => {
localVue,
store,
sync: false,
+ attachToDocument: true,
});
};
diff --git a/spec/frontend/diffs/components/diff_gutter_avatars_spec.js b/spec/frontend/diffs/components/diff_gutter_avatars_spec.js
index 48ee5c63f35..b2debe36b89 100644
--- a/spec/frontend/diffs/components/diff_gutter_avatars_spec.js
+++ b/spec/frontend/diffs/components/diff_gutter_avatars_spec.js
@@ -15,10 +15,11 @@ describe('DiffGutterAvatars', () => {
const createComponent = (props = {}) => {
wrapper = shallowMount(DiffGutterAvatars, {
localVue,
- sync: false,
propsData: {
...props,
},
+ sync: false,
+ attachToDocument: true,
});
};
diff --git a/spec/frontend/diffs/components/edit_button_spec.js b/spec/frontend/diffs/components/edit_button_spec.js
index ccdae4cb312..4e2cfc75212 100644
--- a/spec/frontend/diffs/components/edit_button_spec.js
+++ b/spec/frontend/diffs/components/edit_button_spec.js
@@ -10,8 +10,9 @@ describe('EditButton', () => {
const createComponent = (props = {}) => {
wrapper = shallowMount(EditButton, {
localVue,
- sync: false,
propsData: { ...props },
+ sync: false,
+ attachToDocument: true,
});
};
diff --git a/spec/frontend/diffs/mock_data/diff_with_commit.js b/spec/frontend/diffs/mock_data/diff_with_commit.js
new file mode 100644
index 00000000000..d646294ee84
--- /dev/null
+++ b/spec/frontend/diffs/mock_data/diff_with_commit.js
@@ -0,0 +1,7 @@
+const FIXTURE = 'merge_request_diffs/with_commit.json';
+
+preloadFixtures(FIXTURE);
+
+export default function getDiffWithCommit() {
+ return getJSONFixture(FIXTURE);
+}
diff --git a/spec/frontend/diffs/mock_data/merge_request_diffs.js b/spec/frontend/diffs/mock_data/merge_request_diffs.js
new file mode 100644
index 00000000000..4bbef146336
--- /dev/null
+++ b/spec/frontend/diffs/mock_data/merge_request_diffs.js
@@ -0,0 +1,46 @@
+export default [
+ {
+ base_version_path: '/gnuwget/wget2/merge_requests/6/diffs?diff_id=37',
+ version_index: 4,
+ created_at: '2018-10-23T11:49:16.611Z',
+ commits_count: 4,
+ latest: true,
+ short_commit_sha: 'de7a8f7f',
+ version_path: '/gnuwget/wget2/merge_requests/6/diffs?diff_id=37',
+ compare_path:
+ '/gnuwget/wget2/merge_requests/6/diffs?diff_id=37&start_sha=de7a8f7f20c3ea2e0bef3ba01cfd41c21f6b4995',
+ },
+ {
+ base_version_path: '/gnuwget/wget2/merge_requests/6/diffs?diff_id=36',
+ version_index: 3,
+ created_at: '2018-10-23T11:46:40.617Z',
+ commits_count: 3,
+ latest: false,
+ short_commit_sha: 'e78fc18f',
+ version_path: '/gnuwget/wget2/merge_requests/6/diffs?diff_id=36',
+ compare_path:
+ '/gnuwget/wget2/merge_requests/6/diffs?diff_id=37&start_sha=e78fc18fa37acb2185c59ca94d4a964464feb50e',
+ },
+ {
+ base_version_path: '/gnuwget/wget2/merge_requests/6/diffs?diff_id=35',
+ version_index: 2,
+ created_at: '2018-10-04T09:57:39.648Z',
+ commits_count: 2,
+ latest: false,
+ short_commit_sha: '48da7e7e',
+ version_path: '/gnuwget/wget2/merge_requests/6/diffs?diff_id=35',
+ compare_path:
+ '/gnuwget/wget2/merge_requests/6/diffs?diff_id=37&start_sha=48da7e7e9a99d41c852578bd9cb541ca4d864b3e',
+ },
+ {
+ base_version_path: '/gnuwget/wget2/merge_requests/6/diffs?diff_id=20',
+ version_index: 1,
+ created_at: '2018-09-25T20:30:39.493Z',
+ commits_count: 1,
+ latest: false,
+ short_commit_sha: '47bac2ed',
+ version_path: '/gnuwget/wget2/merge_requests/6/diffs?diff_id=20',
+ compare_path:
+ '/gnuwget/wget2/merge_requests/6/diffs?diff_id=37&start_sha=47bac2ed972c5bee344c1cea159a22cd7f711dc0',
+ },
+];
diff --git a/spec/frontend/environment.js b/spec/frontend/environment.js
index 3c6553f3547..cd4fae60049 100644
--- a/spec/frontend/environment.js
+++ b/spec/frontend/environment.js
@@ -31,6 +31,7 @@ class CustomEnvironment extends JSDOMEnvironment {
this.global.gon = {
ee: IS_EE,
};
+ this.global.IS_EE = IS_EE;
this.rejectedPromises = [];
diff --git a/spec/frontend/environments/environment_item_spec.js b/spec/frontend/environments/environment_item_spec.js
new file mode 100644
index 00000000000..52625c64a1c
--- /dev/null
+++ b/spec/frontend/environments/environment_item_spec.js
@@ -0,0 +1,131 @@
+import { mount } from '@vue/test-utils';
+import { format } from 'timeago.js';
+import EnvironmentItem from '~/environments/components/environment_item.vue';
+import { environment, folder, tableData } from './mock_data';
+
+describe('Environment item', () => {
+ let wrapper;
+
+ const factory = (options = {}) => {
+ // This destroys any wrappers created before a nested call to factory reassigns it
+ if (wrapper && wrapper.destroy) {
+ wrapper.destroy();
+ }
+ wrapper = mount(EnvironmentItem, {
+ ...options,
+ });
+ };
+
+ beforeEach(() => {
+ factory({
+ propsData: {
+ model: environment,
+ canReadEnvironment: true,
+ tableData,
+ },
+ });
+ });
+
+ afterEach(() => {
+ wrapper.destroy();
+ });
+
+ describe('when item is not folder', () => {
+ it('should render environment name', () => {
+ expect(wrapper.find('.environment-name').text()).toContain(environment.name);
+ });
+
+ describe('With deployment', () => {
+ it('should render deployment internal id', () => {
+ expect(wrapper.find('.deployment-column span').text()).toContain(
+ environment.last_deployment.iid,
+ );
+
+ expect(wrapper.find('.deployment-column span').text()).toContain('#');
+ });
+
+ it('should render last deployment date', () => {
+ const formattedDate = format(environment.last_deployment.deployed_at);
+
+ expect(wrapper.find('.environment-created-date-timeago').text()).toContain(formattedDate);
+ });
+
+ describe('With user information', () => {
+ it('should render user avatar with link to profile', () => {
+ expect(wrapper.find('.js-deploy-user-container').attributes('href')).toEqual(
+ environment.last_deployment.user.web_url,
+ );
+ });
+ });
+
+ describe('With build url', () => {
+ it('should link to build url provided', () => {
+ expect(wrapper.find('.build-link').attributes('href')).toEqual(
+ environment.last_deployment.deployable.build_path,
+ );
+ });
+
+ it('should render deployable name and id', () => {
+ expect(wrapper.find('.build-link').attributes('href')).toEqual(
+ environment.last_deployment.deployable.build_path,
+ );
+ });
+ });
+
+ describe('With commit information', () => {
+ it('should render commit component', () => {
+ expect(wrapper.find('.js-commit-component')).toBeDefined();
+ });
+ });
+ });
+
+ describe('With manual actions', () => {
+ it('should render actions component', () => {
+ expect(wrapper.find('.js-manual-actions-container')).toBeDefined();
+ });
+ });
+
+ describe('With external URL', () => {
+ it('should render external url component', () => {
+ expect(wrapper.find('.js-external-url-container')).toBeDefined();
+ });
+ });
+
+ describe('With stop action', () => {
+ it('should render stop action component', () => {
+ expect(wrapper.find('.js-stop-component-container')).toBeDefined();
+ });
+ });
+
+ describe('With retry action', () => {
+ it('should render rollback component', () => {
+ expect(wrapper.find('.js-rollback-component-container')).toBeDefined();
+ });
+ });
+ });
+
+ describe('When item is folder', () => {
+ beforeEach(() => {
+ factory({
+ propsData: {
+ model: folder,
+ canReadEnvironment: true,
+ tableData,
+ },
+ });
+ });
+
+ afterEach(() => {
+ wrapper.destroy();
+ });
+
+ it('should render folder icon and name', () => {
+ expect(wrapper.find('.folder-name').text()).toContain(folder.name);
+ expect(wrapper.find('.folder-icon')).toBeDefined();
+ });
+
+ it('should render the number of children in a badge', () => {
+ expect(wrapper.find('.folder-name .badge').text()).toContain(folder.size);
+ });
+ });
+});
diff --git a/spec/frontend/environments/environment_monitoring_spec.js b/spec/frontend/environments/environment_monitoring_spec.js
new file mode 100644
index 00000000000..8e67f799dc0
--- /dev/null
+++ b/spec/frontend/environments/environment_monitoring_spec.js
@@ -0,0 +1,39 @@
+import { shallowMount } from '@vue/test-utils';
+import MonitoringComponent from '~/environments/components/environment_monitoring.vue';
+import Icon from '~/vue_shared/components/icon.vue';
+
+describe('Monitoring Component', () => {
+ let wrapper;
+
+ const monitoringUrl = 'https://gitlab.com';
+
+ const createWrapper = () => {
+ wrapper = shallowMount(MonitoringComponent, {
+ sync: false,
+ attachToDocument: true,
+ propsData: {
+ monitoringUrl,
+ },
+ });
+ };
+
+ const findIcons = () => wrapper.findAll(Icon);
+ const findIconsByName = name => findIcons().filter(icon => icon.props('name') === name);
+
+ beforeEach(() => {
+ createWrapper();
+ });
+
+ describe('computed', () => {
+ it('title', () => {
+ expect(wrapper.vm.title).toBe('Monitoring');
+ });
+ });
+
+ it('should render a link to environment monitoring page', () => {
+ expect(wrapper.attributes('href')).toEqual(monitoringUrl);
+ expect(findIconsByName('chart').length).toBe(1);
+ expect(wrapper.attributes('data-original-title')).toBe('Monitoring');
+ expect(wrapper.attributes('aria-label')).toBe('Monitoring');
+ });
+});
diff --git a/spec/frontend/environments/environment_rollback_spec.js b/spec/frontend/environments/environment_rollback_spec.js
index fb62a096c3d..33e04f5eb29 100644
--- a/spec/frontend/environments/environment_rollback_spec.js
+++ b/spec/frontend/environments/environment_rollback_spec.js
@@ -13,6 +13,8 @@ describe('Rollback Component', () => {
isLastDeployment: true,
environment: {},
},
+ attachToDocument: true,
+ sync: false,
});
expect(wrapper.element).toHaveSpriteIcon('repeat');
@@ -25,6 +27,8 @@ describe('Rollback Component', () => {
isLastDeployment: false,
environment: {},
},
+ attachToDocument: true,
+ sync: false,
});
expect(wrapper.element).toHaveSpriteIcon('redo');
diff --git a/spec/frontend/environments/environment_stop_spec.js b/spec/frontend/environments/environment_stop_spec.js
new file mode 100644
index 00000000000..ab714728311
--- /dev/null
+++ b/spec/frontend/environments/environment_stop_spec.js
@@ -0,0 +1,40 @@
+import $ from 'jquery';
+import { shallowMount } from '@vue/test-utils';
+import StopComponent from '~/environments/components/environment_stop.vue';
+import LoadingButton from '~/vue_shared/components/loading_button.vue';
+import eventHub from '~/environments/event_hub';
+
+$.fn.tooltip = () => {};
+
+describe('Stop Component', () => {
+ let wrapper;
+
+ const createWrapper = () => {
+ wrapper = shallowMount(StopComponent, {
+ sync: false,
+ attachToDocument: true,
+ propsData: {
+ environment: {},
+ },
+ });
+ };
+
+ const findButton = () => wrapper.find(LoadingButton);
+
+ beforeEach(() => {
+ jest.spyOn(window, 'confirm');
+
+ createWrapper();
+ });
+
+ it('should render a button to stop the environment', () => {
+ expect(findButton().exists()).toBe(true);
+ expect(wrapper.attributes('data-original-title')).toEqual('Stop environment');
+ });
+
+ it('emits requestStopEnvironment in the event hub when button is clicked', () => {
+ jest.spyOn(eventHub, '$emit');
+ findButton().vm.$emit('click');
+ expect(eventHub.$emit).toHaveBeenCalledWith('requestStopEnvironment', wrapper.vm.environment);
+ });
+});
diff --git a/spec/javascripts/environments/environment_table_spec.js b/spec/frontend/environments/environment_table_spec.js
index a3f34232a85..b8ef40e2568 100644
--- a/spec/javascripts/environments/environment_table_spec.js
+++ b/spec/frontend/environments/environment_table_spec.js
@@ -1,44 +1,44 @@
-import Vue from 'vue';
-import environmentTableComp from '~/environments/components/environments_table.vue';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import { mount } from '@vue/test-utils';
+import EnvironmentTable from '~/environments/components/environments_table.vue';
+import { folder } from './mock_data';
+
+const eeOnlyProps = {
+ canaryDeploymentFeatureId: 'canary_deployment',
+ showCanaryDeploymentCallout: true,
+ userCalloutsPath: '/callouts',
+ lockPromotionSvgPath: '/assets/illustrations/lock-promotion.svg',
+ helpCanaryDeploymentsPath: 'help/canary-deployments',
+};
describe('Environment table', () => {
- let Component;
- let vm;
+ let wrapper;
- const eeOnlyProps = {
- canaryDeploymentFeatureId: 'canary_deployment',
- showCanaryDeploymentCallout: true,
- userCalloutsPath: '/callouts',
- lockPromotionSvgPath: '/assets/illustrations/lock-promotion.svg',
- helpCanaryDeploymentsPath: 'help/canary-deployments',
+ const factory = (options = {}) => {
+ // This destroys any wrappers created before a nested call to factory reassigns it
+ if (wrapper && wrapper.destroy) {
+ wrapper.destroy();
+ }
+ wrapper = mount(EnvironmentTable, {
+ ...options,
+ });
};
beforeEach(() => {
- Component = Vue.extend(environmentTableComp);
+ factory({
+ propsData: {
+ environments: [folder],
+ canReadEnvironment: true,
+ ...eeOnlyProps,
+ },
+ });
});
afterEach(() => {
- vm.$destroy();
+ wrapper.destroy();
});
it('Should render a table', () => {
- const mockItem = {
- name: 'review',
- size: 3,
- isFolder: true,
- latest: {
- environment_path: 'url',
- },
- };
-
- vm = mountComponent(Component, {
- environments: [mockItem],
- canReadEnvironment: true,
- ...eeOnlyProps,
- });
-
- expect(vm.$el.getAttribute('class')).toContain('ci-table');
+ expect(wrapper.classes()).toContain('ci-table');
});
describe('sortEnvironments', () => {
@@ -73,15 +73,17 @@ describe('Environment table', () => {
},
];
- vm = mountComponent(Component, {
- environments: mockItems,
- canReadEnvironment: true,
- ...eeOnlyProps,
+ factory({
+ propsData: {
+ environments: mockItems,
+ canReadEnvironment: true,
+ ...eeOnlyProps,
+ },
});
const [old, newer, older, noDeploy] = mockItems;
- expect(vm.sortEnvironments(mockItems)).toEqual([newer, old, older, noDeploy]);
+ expect(wrapper.vm.sortEnvironments(mockItems)).toEqual([newer, old, older, noDeploy]);
});
it('should push environments with no deployments to the bottom', () => {
@@ -137,15 +139,17 @@ describe('Environment table', () => {
},
];
- vm = mountComponent(Component, {
- environments: mockItems,
- canReadEnvironment: true,
- ...eeOnlyProps,
+ factory({
+ propsData: {
+ environments: mockItems,
+ canReadEnvironment: true,
+ ...eeOnlyProps,
+ },
});
const [prod, review, staging] = mockItems;
- expect(vm.sortEnvironments(mockItems)).toEqual([review, staging, prod]);
+ expect(wrapper.vm.sortEnvironments(mockItems)).toEqual([review, staging, prod]);
});
it('should sort environments by folder first', () => {
@@ -174,15 +178,17 @@ describe('Environment table', () => {
},
];
- vm = mountComponent(Component, {
- environments: mockItems,
- canReadEnvironment: true,
- ...eeOnlyProps,
+ factory({
+ propsData: {
+ environments: mockItems,
+ canReadEnvironment: true,
+ ...eeOnlyProps,
+ },
});
const [old, newer, older] = mockItems;
- expect(vm.sortEnvironments(mockItems)).toEqual([older, newer, old]);
+ expect(wrapper.vm.sortEnvironments(mockItems)).toEqual([older, newer, old]);
});
it('should break ties by name', () => {
@@ -201,15 +207,17 @@ describe('Environment table', () => {
},
];
- vm = mountComponent(Component, {
- environments: mockItems,
- canReadEnvironment: true,
- ...eeOnlyProps,
+ factory({
+ propsData: {
+ environments: mockItems,
+ canReadEnvironment: true,
+ ...eeOnlyProps,
+ },
});
const [old, newer, older] = mockItems;
- expect(vm.sortEnvironments(mockItems)).toEqual([older, newer, old]);
+ expect(wrapper.vm.sortEnvironments(mockItems)).toEqual([older, newer, old]);
});
});
@@ -250,19 +258,21 @@ describe('Environment table', () => {
const [production, review, staging] = mockItems;
const [addcibuildstatus, master] = mockItems[1].children;
- vm = mountComponent(Component, {
- environments: mockItems,
- canReadEnvironment: true,
- ...eeOnlyProps,
+ factory({
+ propsData: {
+ environments: mockItems,
+ canReadEnvironment: true,
+ ...eeOnlyProps,
+ },
});
- expect(vm.sortedEnvironments.map(env => env.name)).toEqual([
+ expect(wrapper.vm.sortedEnvironments.map(env => env.name)).toEqual([
review.name,
staging.name,
production.name,
]);
- expect(vm.sortedEnvironments[0].children).toEqual([master, addcibuildstatus]);
+ expect(wrapper.vm.sortedEnvironments[0].children).toEqual([master, addcibuildstatus]);
});
});
});
diff --git a/spec/frontend/environments/environment_terminal_button_spec.js b/spec/frontend/environments/environment_terminal_button_spec.js
new file mode 100644
index 00000000000..9aa2b82736c
--- /dev/null
+++ b/spec/frontend/environments/environment_terminal_button_spec.js
@@ -0,0 +1,36 @@
+import { shallowMount } from '@vue/test-utils';
+import TerminalComponent from '~/environments/components/environment_terminal_button.vue';
+
+describe('Stop Component', () => {
+ let wrapper;
+ const terminalPath = '/path';
+
+ const mountWithProps = props => {
+ wrapper = shallowMount(TerminalComponent, {
+ sync: false,
+ attachToDocument: true,
+ propsData: props,
+ });
+ };
+
+ beforeEach(() => {
+ mountWithProps({ terminalPath });
+ });
+
+ describe('computed', () => {
+ it('title', () => {
+ expect(wrapper.vm.title).toEqual('Terminal');
+ });
+ });
+
+ it('should render a link to open a web terminal with the provided path', () => {
+ expect(wrapper.is('a')).toBe(true);
+ expect(wrapper.attributes('data-original-title')).toBe('Terminal');
+ expect(wrapper.attributes('aria-label')).toBe('Terminal');
+ expect(wrapper.attributes('href')).toBe(terminalPath);
+ });
+
+ it('should render a non-disabled button', () => {
+ expect(wrapper.classes()).not.toContain('disabled');
+ });
+});
diff --git a/spec/frontend/environments/mock_data.js b/spec/frontend/environments/mock_data.js
new file mode 100644
index 00000000000..a014108b898
--- /dev/null
+++ b/spec/frontend/environments/mock_data.js
@@ -0,0 +1,106 @@
+const environment = {
+ name: 'production',
+ size: 1,
+ state: 'stopped',
+ external_url: 'http://external.com',
+ environment_type: null,
+ last_deployment: {
+ id: 66,
+ iid: 6,
+ sha: '500aabcb17c97bdcf2d0c410b70cb8556f0362dd',
+ ref: {
+ name: 'master',
+ ref_url: 'root/ci-folders/tree/master',
+ },
+ tag: true,
+ 'last?': true,
+ user: {
+ name: 'Administrator',
+ username: 'root',
+ id: 1,
+ state: 'active',
+ avatar_url:
+ 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon',
+ web_url: 'http://localhost:3000/root',
+ },
+ commit: {
+ id: '500aabcb17c97bdcf2d0c410b70cb8556f0362dd',
+ short_id: '500aabcb',
+ title: 'Update .gitlab-ci.yml',
+ author_name: 'Administrator',
+ author_email: 'admin@example.com',
+ created_at: '2016-11-07T18:28:13.000+00:00',
+ message: 'Update .gitlab-ci.yml',
+ author: {
+ name: 'Administrator',
+ username: 'root',
+ id: 1,
+ state: 'active',
+ avatar_url:
+ 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon',
+ web_url: 'http://localhost:3000/root',
+ },
+ commit_path: '/root/ci-folders/tree/500aabcb17c97bdcf2d0c410b70cb8556f0362dd',
+ },
+ deployable: {
+ id: 1279,
+ name: 'deploy',
+ build_path: '/root/ci-folders/builds/1279',
+ retry_path: '/root/ci-folders/builds/1279/retry',
+ created_at: '2016-11-29T18:11:58.430Z',
+ updated_at: '2016-11-29T18:11:58.430Z',
+ },
+ manual_actions: [
+ {
+ name: 'action',
+ play_path: '/play',
+ },
+ ],
+ deployed_at: '2016-11-29T18:11:58.430Z',
+ },
+ has_stop_action: true,
+ environment_path: 'root/ci-folders/environments/31',
+ log_path: 'root/ci-folders/environments/31/logs',
+ created_at: '2016-11-07T11:11:16.525Z',
+ updated_at: '2016-11-10T15:55:58.778Z',
+};
+
+const folder = {
+ name: 'review',
+ folderName: 'review',
+ size: 3,
+ isFolder: true,
+ environment_path: 'url',
+ log_path: 'url',
+ latest: {
+ environment_path: 'url',
+ },
+};
+
+const tableData = {
+ name: {
+ title: 'Environment',
+ spacing: 'section-15',
+ },
+ deploy: {
+ title: 'Deployment',
+ spacing: 'section-10',
+ },
+ build: {
+ title: 'Job',
+ spacing: 'section-15',
+ },
+ commit: {
+ title: 'Commit',
+ spacing: 'section-20',
+ },
+ date: {
+ title: 'Updated',
+ spacing: 'section-10',
+ },
+ actions: {
+ spacing: 'section-25',
+ },
+};
+
+export { environment, folder, tableData };
diff --git a/spec/frontend/error_tracking/components/error_details_spec.js b/spec/frontend/error_tracking/components/error_details_spec.js
index 54e8b0848a2..6dc4980aaec 100644
--- a/spec/frontend/error_tracking/components/error_details_spec.js
+++ b/spec/frontend/error_tracking/components/error_details_spec.js
@@ -1,6 +1,7 @@
import { createLocalVue, shallowMount } from '@vue/test-utils';
import Vuex from 'vuex';
import { GlLoadingIcon, GlLink } from '@gitlab/ui';
+import LoadingButton from '~/vue_shared/components/loading_button.vue';
import Stacktrace from '~/error_tracking/components/stacktrace.vue';
import ErrorDetails from '~/error_tracking/components/error_details.vue';
@@ -15,11 +16,14 @@ describe('ErrorDetails', () => {
function mountComponent() {
wrapper = shallowMount(ErrorDetails, {
+ stubs: { LoadingButton },
localVue,
store,
propsData: {
issueDetailsPath: '/123/details',
issueStackTracePath: '/stacktrace',
+ projectIssuesPath: '/test-project/issues/',
+ csrfToken: 'fakeToken',
},
});
}
@@ -101,5 +105,88 @@ describe('ErrorDetails', () => {
expect(wrapper.find(Stacktrace).exists()).toBe(false);
});
});
+
+ describe('When a user clicks the create issue button', () => {
+ beforeEach(() => {
+ store.state.details.loading = false;
+ store.state.details.error = {
+ id: 129381,
+ title: 'Issue title',
+ external_url: 'http://sentry.gitlab.net/gitlab',
+ first_seen: '2017-05-26T13:32:48Z',
+ last_seen: '2018-05-26T13:32:48Z',
+ count: 12,
+ user_count: 2,
+ };
+ mountComponent();
+ });
+
+ it('should send sentry_issue_identifier', () => {
+ const sentryErrorIdInput = wrapper.find(
+ 'glforminput-stub[name="issue[sentry_issue_attributes][sentry_issue_identifier]"',
+ );
+ expect(sentryErrorIdInput.attributes('value')).toBe('129381');
+ });
+
+ it('should set the form values with title and description', () => {
+ const csrfTokenInput = wrapper.find('glforminput-stub[name="authenticity_token"]');
+ const issueTitleInput = wrapper.find('glforminput-stub[name="issue[title]"]');
+ const issueDescriptionInput = wrapper.find('input[name="issue[description]"]');
+ expect(csrfTokenInput.attributes('value')).toBe('fakeToken');
+ expect(issueTitleInput.attributes('value')).toContain(wrapper.vm.issueTitle);
+ expect(issueDescriptionInput.attributes('value')).toContain(wrapper.vm.issueDescription);
+ });
+
+ it('should submit the form', () => {
+ window.HTMLFormElement.prototype.submit = () => {};
+ const submitSpy = jest.spyOn(wrapper.vm.$refs.sentryIssueForm, 'submit');
+ wrapper.find('button').trigger('click');
+ expect(submitSpy).toHaveBeenCalled();
+ submitSpy.mockRestore();
+ });
+ });
+
+ describe('GitLab issue link', () => {
+ const gitlabIssue = 'https://gitlab.example.com/issues/1';
+ const findGitLabLink = () => wrapper.find(`[href="${gitlabIssue}"]`);
+ const findCreateIssueButton = () => wrapper.find('[data-qa-selector="create_issue_button"]');
+
+ describe('is present', () => {
+ beforeEach(() => {
+ store.state.details.loading = false;
+ store.state.details.error = {
+ id: 1,
+ gitlab_issue: gitlabIssue,
+ };
+ mountComponent();
+ });
+
+ it('should display the issue link', () => {
+ expect(findGitLabLink().exists()).toBe(true);
+ });
+
+ it('should not display a create issue button', () => {
+ expect(findCreateIssueButton().exists()).toBe(false);
+ });
+ });
+
+ describe('is not present', () => {
+ beforeEach(() => {
+ store.state.details.loading = false;
+ store.state.details.error = {
+ id: 1,
+ gitlab_issue: null,
+ };
+ mountComponent();
+ });
+
+ it('should not display an issue link', () => {
+ expect(findGitLabLink().exists()).toBe(false);
+ });
+ it('should display the create issue button', () => {
+ expect(findCreateIssueButton().exists()).toBe(true);
+ });
+ });
+ });
});
});
diff --git a/spec/frontend/error_tracking/components/error_tracking_list_spec.js b/spec/frontend/error_tracking/components/error_tracking_list_spec.js
index 1bbf23cc602..581581405b6 100644
--- a/spec/frontend/error_tracking/components/error_tracking_list_spec.js
+++ b/spec/frontend/error_tracking/components/error_tracking_list_spec.js
@@ -1,7 +1,17 @@
import { createLocalVue, shallowMount } from '@vue/test-utils';
import Vuex from 'vuex';
+import {
+ GlEmptyState,
+ GlLoadingIcon,
+ GlTable,
+ GlLink,
+ GlFormInput,
+ GlDropdown,
+ GlDropdownItem,
+ GlPagination,
+} from '@gitlab/ui';
import ErrorTrackingList from '~/error_tracking/components/error_tracking_list.vue';
-import { GlButton, GlEmptyState, GlLoadingIcon, GlTable, GlLink } from '@gitlab/ui';
+import errorsList from './list_mock.json';
const localVue = createLocalVue();
localVue.use(Vuex);
@@ -11,16 +21,30 @@ describe('ErrorTrackingList', () => {
let wrapper;
let actions;
+ const findErrorListTable = () => wrapper.find('table');
+ const findErrorListRows = () => wrapper.findAll('tbody tr');
+ const findSortDropdown = () => wrapper.find('.sort-dropdown');
+ const findRecentSearchesDropdown = () =>
+ wrapper.find('.filtered-search-history-dropdown-wrapper');
+ const findLoadingIcon = () => wrapper.find(GlLoadingIcon);
+ const findPagination = () => wrapper.find(GlPagination);
+
function mountComponent({
errorTrackingEnabled = true,
userCanEnableErrorTracking = true,
+ sync = true,
stubs = {
'gl-link': GlLink,
+ 'gl-table': GlTable,
+ 'gl-pagination': GlPagination,
+ 'gl-dropdown': GlDropdown,
+ 'gl-dropdown-item': GlDropdownItem,
},
} = {}) {
wrapper = shallowMount(ErrorTrackingList, {
localVue,
store,
+ sync,
propsData: {
indexPath: '/path',
enableErrorTrackingLink: '/link',
@@ -29,19 +53,39 @@ describe('ErrorTrackingList', () => {
illustrationPath: 'illustration/path',
},
stubs,
+ data() {
+ return { errorSearchQuery: 'search' };
+ },
});
}
beforeEach(() => {
actions = {
- getSentryData: () => {},
- startPolling: () => {},
+ getErrorList: () => {},
+ startPolling: jest.fn(),
restartPolling: jest.fn().mockName('restartPolling'),
+ addRecentSearch: jest.fn(),
+ loadRecentSearches: jest.fn(),
+ setIndexPath: jest.fn(),
+ clearRecentSearches: jest.fn(),
+ setEndpoint: jest.fn(),
+ searchByQuery: jest.fn(),
+ sortByField: jest.fn(),
};
const state = {
- errors: [],
+ indexPath: '',
+ recentSearches: [],
+ errors: errorsList,
loading: true,
+ pagination: {
+ previous: {
+ cursor: 'previousCursor',
+ },
+ next: {
+ cursor: 'nextCursor',
+ },
+ },
};
store = new Vuex.Store({
@@ -63,52 +107,86 @@ describe('ErrorTrackingList', () => {
describe('loading', () => {
beforeEach(() => {
+ store.state.list.loading = true;
mountComponent();
});
it('shows spinner', () => {
- expect(wrapper.find(GlLoadingIcon).exists()).toBeTruthy();
- expect(wrapper.find(GlTable).exists()).toBeFalsy();
- expect(wrapper.find(GlButton).exists()).toBeFalsy();
+ expect(findLoadingIcon().exists()).toBe(true);
+ expect(findErrorListTable().exists()).toBe(false);
});
});
describe('results', () => {
beforeEach(() => {
store.state.list.loading = false;
-
+ store.state.list.errors = errorsList;
mountComponent();
});
it('shows table', () => {
- expect(wrapper.find(GlLoadingIcon).exists()).toBeFalsy();
- expect(wrapper.find(GlTable).exists()).toBeTruthy();
- expect(wrapper.find(GlButton).exists()).toBeTruthy();
+ expect(findLoadingIcon().exists()).toBe(false);
+ expect(findErrorListTable().exists()).toBe(true);
+ expect(findSortDropdown().exists()).toBe(true);
+ });
+
+ it('shows list of errors in a table', () => {
+ expect(findErrorListRows().length).toEqual(store.state.list.errors.length);
+ });
+
+ it('each error in a list should have a link to the error page', () => {
+ const errorTitle = wrapper.findAll('tbody tr a');
+
+ errorTitle.wrappers.forEach((_, index) => {
+ expect(errorTitle.at(index).attributes('href')).toEqual(
+ expect.stringMatching(/error_tracking\/\d+\/details$/),
+ );
+ });
+ });
+
+ describe('filtering', () => {
+ const findSearchBox = () => wrapper.find(GlFormInput);
+
+ it('shows search box & sort dropdown', () => {
+ expect(findSearchBox().exists()).toBe(true);
+ expect(findSortDropdown().exists()).toBe(true);
+ });
+
+ it('it searches by query', () => {
+ findSearchBox().trigger('keyup.enter');
+ expect(actions.searchByQuery.mock.calls[0][1]).toEqual(wrapper.vm.errorSearchQuery);
+ });
+
+ it('it sorts by fields', () => {
+ const findSortItem = () => wrapper.find('.dropdown-item');
+ findSortItem().trigger('click');
+ expect(actions.sortByField).toHaveBeenCalled();
+ });
});
});
describe('no results', () => {
+ const findRefreshLink = () => wrapper.find('.js-try-again');
+
beforeEach(() => {
store.state.list.loading = false;
+ store.state.list.errors = [];
mountComponent();
});
it('shows empty table', () => {
- expect(wrapper.find(GlLoadingIcon).exists()).toBeFalsy();
- expect(wrapper.find(GlTable).exists()).toBeTruthy();
- expect(wrapper.find(GlButton).exists()).toBeTruthy();
+ expect(findLoadingIcon().exists()).toBe(false);
+ expect(findErrorListRows().length).toEqual(1);
+ expect(findSortDropdown().exists()).toBe(true);
});
it('shows a message prompting to refresh', () => {
- const refreshLink = wrapper.vm.$refs.empty.querySelector('a');
-
- expect(refreshLink.textContent.trim()).toContain('Check again');
+ expect(findRefreshLink().text()).toContain('Check again');
});
it('restarts polling', () => {
- wrapper.find('.js-try-again').trigger('click');
-
+ findRefreshLink().trigger('click');
expect(actions.restartPolling).toHaveBeenCalled();
});
});
@@ -119,10 +197,10 @@ describe('ErrorTrackingList', () => {
});
it('shows empty state', () => {
- expect(wrapper.find(GlEmptyState).exists()).toBeTruthy();
- expect(wrapper.find(GlLoadingIcon).exists()).toBeFalsy();
- expect(wrapper.find(GlTable).exists()).toBeFalsy();
- expect(wrapper.find(GlButton).exists()).toBeFalsy();
+ expect(wrapper.find(GlEmptyState).exists()).toBe(true);
+ expect(findLoadingIcon().exists()).toBe(false);
+ expect(findErrorListTable().exists()).toBe(false);
+ expect(findSortDropdown().exists()).toBe(false);
});
});
@@ -144,4 +222,112 @@ describe('ErrorTrackingList', () => {
);
});
});
+
+ describe('recent searches', () => {
+ beforeEach(() => {
+ mountComponent();
+ });
+
+ it('shows empty message', () => {
+ store.state.list.recentSearches = [];
+
+ expect(findRecentSearchesDropdown().text()).toContain("You don't have any recent searches");
+ });
+
+ it('shows items', () => {
+ store.state.list.recentSearches = ['great', 'search'];
+
+ const dropdownItems = wrapper.findAll('.filtered-search-box li');
+
+ expect(dropdownItems.length).toBe(3);
+ expect(dropdownItems.at(0).text()).toBe('great');
+ expect(dropdownItems.at(1).text()).toBe('search');
+ });
+
+ describe('clear', () => {
+ const clearRecentButton = () => wrapper.find({ ref: 'clearRecentSearches' });
+
+ it('is hidden when list empty', () => {
+ store.state.list.recentSearches = [];
+
+ expect(clearRecentButton().exists()).toBe(false);
+ });
+
+ it('is visible when list has items', () => {
+ store.state.list.recentSearches = ['some', 'searches'];
+
+ expect(clearRecentButton().exists()).toBe(true);
+ expect(clearRecentButton().text()).toBe('Clear recent searches');
+ });
+
+ it('clears items on click', () => {
+ store.state.list.recentSearches = ['some', 'searches'];
+
+ clearRecentButton().vm.$emit('click');
+
+ expect(actions.clearRecentSearches).toHaveBeenCalledTimes(1);
+ });
+ });
+ });
+
+ describe('When pagination is not required', () => {
+ beforeEach(() => {
+ store.state.list.pagination = {};
+ mountComponent();
+ });
+
+ it('should not render the pagination component', () => {
+ expect(findPagination().exists()).toBe(false);
+ });
+ });
+
+ describe('When pagination is required', () => {
+ describe('and the user is on the first page', () => {
+ beforeEach(() => {
+ mountComponent({ sync: false });
+ });
+
+ it('shows a disabled Prev button', () => {
+ expect(wrapper.find('.prev-page-item').attributes('aria-disabled')).toBe('true');
+ });
+ });
+
+ describe('and the user is not on the first page', () => {
+ describe('and the previous button is clicked', () => {
+ beforeEach(() => {
+ mountComponent({ sync: false });
+ wrapper.setData({ pageValue: 2 });
+ });
+
+ it('fetches the previous page of results', () => {
+ expect(wrapper.find('.prev-page-item').attributes('aria-disabled')).toBe(undefined);
+ wrapper.vm.goToPrevPage();
+ expect(actions.startPolling).toHaveBeenCalledTimes(2);
+ expect(actions.startPolling).toHaveBeenLastCalledWith(
+ expect.anything(),
+ '/path?cursor=previousCursor',
+ undefined,
+ );
+ });
+ });
+
+ describe('and the next page button is clicked', () => {
+ beforeEach(() => {
+ mountComponent({ sync: false });
+ });
+
+ it('fetches the next page of results', () => {
+ window.scrollTo = jest.fn();
+ findPagination().vm.$emit('input', 2);
+ expect(window.scrollTo).toHaveBeenCalledWith(0, 0);
+ expect(actions.startPolling).toHaveBeenCalledTimes(2);
+ expect(actions.startPolling).toHaveBeenLastCalledWith(
+ expect.anything(),
+ '/path?cursor=nextCursor',
+ undefined,
+ );
+ });
+ });
+ });
+ });
});
diff --git a/spec/frontend/error_tracking/components/list_mock.json b/spec/frontend/error_tracking/components/list_mock.json
new file mode 100644
index 00000000000..a6e94c1a026
--- /dev/null
+++ b/spec/frontend/error_tracking/components/list_mock.json
@@ -0,0 +1,29 @@
+[
+ {
+ "id": "1",
+ "title": "PG::ConnectionBad: FATAL",
+ "type": "error",
+ "userCount": 0,
+ "count": "52",
+ "firstSeen": "2019-05-30T07:21:46Z",
+ "lastSeen": "2019-11-06T03:21:39Z"
+ },
+ {
+ "id": "2",
+ "title": "ActiveRecord::StatementInvalid",
+ "type": "error",
+ "userCount": 0,
+ "count": "12",
+ "firstSeen": "2019-10-19T03:53:56Z",
+ "lastSeen": "2019-11-05T03:51:54Z"
+ },
+ {
+ "id": "3",
+ "title": "Command has failed",
+ "type": "default",
+ "userCount": 0,
+ "count": "275",
+ "firstSeen": "2019-02-12T07:22:36Z",
+ "lastSeen": "2019-10-22T03:20:48Z"
+ }
+] \ No newline at end of file
diff --git a/spec/frontend/error_tracking/components/stacktrace_entry_spec.js b/spec/frontend/error_tracking/components/stacktrace_entry_spec.js
index 95958408770..942585d5370 100644
--- a/spec/frontend/error_tracking/components/stacktrace_entry_spec.js
+++ b/spec/frontend/error_tracking/components/stacktrace_entry_spec.js
@@ -7,26 +7,23 @@ import Icon from '~/vue_shared/components/icon.vue';
describe('Stacktrace Entry', () => {
let wrapper;
+ const lines = [
+ [22, ' def safe_thread(name, \u0026block)\n'],
+ [23, ' Thread.new do\n'],
+ [24, " Thread.current['sidekiq_label'] = name\n"],
+ [25, ' watchdog(name, \u0026block)\n'],
+ ];
+
function mountComponent(props) {
wrapper = shallowMount(StackTraceEntry, {
propsData: {
filePath: 'sidekiq/util.rb',
- lines: [
- [22, ' def safe_thread(name, \u0026block)\n'],
- [23, ' Thread.new do\n'],
- [24, " Thread.current['sidekiq_label'] = name\n"],
- [25, ' watchdog(name, \u0026block)\n'],
- ],
errorLine: 24,
...props,
},
});
}
- beforeEach(() => {
- mountComponent();
- });
-
afterEach(() => {
if (wrapper) {
wrapper.destroy();
@@ -34,16 +31,47 @@ describe('Stacktrace Entry', () => {
});
it('should render stacktrace entry collapsed', () => {
+ mountComponent({ lines });
expect(wrapper.find(StackTraceEntry).exists()).toBe(true);
expect(wrapper.find(ClipboardButton).exists()).toBe(true);
expect(wrapper.find(Icon).exists()).toBe(true);
expect(wrapper.find(FileIcon).exists()).toBe(true);
- expect(wrapper.element.querySelectorAll('table').length).toBe(0);
+ expect(wrapper.find('table').exists()).toBe(false);
});
it('should render stacktrace entry table expanded', () => {
- mountComponent({ expanded: true });
- expect(wrapper.element.querySelectorAll('tr.line_holder').length).toBe(4);
- expect(wrapper.element.querySelectorAll('.line_content.old').length).toBe(1);
+ mountComponent({ expanded: true, lines });
+ expect(wrapper.find('table').exists()).toBe(true);
+ expect(wrapper.findAll('tr.line_holder').length).toBe(4);
+ expect(wrapper.findAll('.line_content.old').length).toBe(1);
+ });
+
+ describe('no code block', () => {
+ const findFileHeaderContent = () => wrapper.find('.file-header-content').html();
+
+ it('should hide collapse icon and render error fn name and error line when there is no code block', () => {
+ const extraInfo = { errorLine: 34, errorFn: 'errorFn', errorColumn: 77 };
+ mountComponent({ expanded: false, lines: [], ...extraInfo });
+ expect(wrapper.find(Icon).exists()).toBe(false);
+ expect(findFileHeaderContent()).toContain(
+ `in ${extraInfo.errorFn} at line ${extraInfo.errorLine}:${extraInfo.errorColumn}`,
+ );
+ });
+
+ it('should render only lineNo:columnNO when there is no errorFn ', () => {
+ const extraInfo = { errorLine: 34, errorFn: null, errorColumn: 77 };
+ mountComponent({ expanded: false, lines: [], ...extraInfo });
+ expect(findFileHeaderContent()).not.toContain(`in ${extraInfo.errorFn}`);
+ expect(findFileHeaderContent()).toContain(`${extraInfo.errorLine}:${extraInfo.errorColumn}`);
+ });
+
+ it('should render only lineNo when there is no errorColumn ', () => {
+ const extraInfo = { errorLine: 34, errorFn: 'errorFn', errorColumn: null };
+ mountComponent({ expanded: false, lines: [], ...extraInfo });
+ expect(findFileHeaderContent()).toContain(
+ `in ${extraInfo.errorFn} at line ${extraInfo.errorLine}`,
+ );
+ expect(findFileHeaderContent()).not.toContain(`:${extraInfo.errorColumn}`);
+ });
});
});
diff --git a/spec/frontend/error_tracking/store/details/actions_spec.js b/spec/frontend/error_tracking/store/details/actions_spec.js
index f72cd1e413b..0866f76aeef 100644
--- a/spec/frontend/error_tracking/store/details/actions_spec.js
+++ b/spec/frontend/error_tracking/store/details/actions_spec.js
@@ -1,6 +1,6 @@
-import axios from '~/lib/utils/axios_utils';
import MockAdapter from 'axios-mock-adapter';
import testAction from 'helpers/vuex_action_helper';
+import axios from '~/lib/utils/axios_utils';
import createFlash from '~/flash';
import * as actions from '~/error_tracking/store/details/actions';
import * as types from '~/error_tracking/store/details/mutation_types';
diff --git a/spec/frontend/error_tracking/store/details/getters_spec.js b/spec/frontend/error_tracking/store/details/getters_spec.js
index ea57de5872b..aba080790da 100644
--- a/spec/frontend/error_tracking/store/details/getters_spec.js
+++ b/spec/frontend/error_tracking/store/details/getters_spec.js
@@ -1,12 +1,18 @@
import * as getters from '~/error_tracking/store/details/getters';
describe('Sentry error details store getters', () => {
- const state = {
- stacktraceData: { stack_trace_entries: [1, 2] },
- };
-
describe('stacktrace', () => {
+ it('should return empty stacktrace when there are no entries', () => {
+ const state = {
+ stacktraceData: { stack_trace_entries: null },
+ };
+ expect(getters.stacktrace(state)).toEqual([]);
+ });
+
it('should get stacktrace', () => {
+ const state = {
+ stacktraceData: { stack_trace_entries: [1, 2] },
+ };
expect(getters.stacktrace(state)).toEqual([2, 1]);
});
});
diff --git a/spec/frontend/error_tracking/store/list/actions_spec.js b/spec/frontend/error_tracking/store/list/actions_spec.js
new file mode 100644
index 00000000000..7906738f5b0
--- /dev/null
+++ b/spec/frontend/error_tracking/store/list/actions_spec.js
@@ -0,0 +1,117 @@
+import axios from '~/lib/utils/axios_utils';
+import MockAdapter from 'axios-mock-adapter';
+import testAction from 'helpers/vuex_action_helper';
+import httpStatusCodes from '~/lib/utils/http_status';
+import createFlash from '~/flash';
+import * as actions from '~/error_tracking/store/list/actions';
+import * as types from '~/error_tracking/store/list/mutation_types';
+
+jest.mock('~/flash.js');
+
+describe('error tracking actions', () => {
+ let mock;
+
+ beforeEach(() => {
+ mock = new MockAdapter(axios);
+ });
+
+ afterEach(() => {
+ mock.restore();
+ });
+
+ describe('startPolling', () => {
+ it('should start polling for data', done => {
+ const payload = { errors: [{ id: 1 }, { id: 2 }] };
+
+ mock.onGet().reply(httpStatusCodes.OK, payload);
+ testAction(
+ actions.startPolling,
+ {},
+ {},
+ [
+ { type: types.SET_LOADING, payload: true },
+ { type: types.SET_PAGINATION, payload: payload.pagination },
+ { type: types.SET_ERRORS, payload: payload.errors },
+ { type: types.SET_LOADING, payload: false },
+ ],
+ [{ type: 'stopPolling' }],
+ () => {
+ done();
+ },
+ );
+ });
+
+ it('should show flash on API error', done => {
+ mock.onGet().reply(httpStatusCodes.BAD_REQUEST);
+
+ testAction(
+ actions.startPolling,
+ {},
+ {},
+ [{ type: types.SET_LOADING, payload: true }, { type: types.SET_LOADING, payload: false }],
+ [],
+ () => {
+ expect(createFlash).toHaveBeenCalledTimes(1);
+ done();
+ },
+ );
+ });
+ });
+
+ describe('restartPolling', () => {
+ it('should restart polling', () => {
+ testAction(
+ actions.restartPolling,
+ {},
+ {},
+ [{ type: types.SET_ERRORS, payload: [] }, { type: types.SET_LOADING, payload: true }],
+ [],
+ );
+ });
+ });
+
+ describe('searchByQuery', () => {
+ it('should search by query', () => {
+ const query = 'search';
+
+ testAction(
+ actions.searchByQuery,
+ query,
+ {},
+ [
+ { type: types.SET_SEARCH_QUERY, payload: query },
+ { type: types.ADD_RECENT_SEARCH, payload: query },
+ ],
+ [{ type: 'stopPolling' }, { type: 'startPolling' }],
+ );
+ });
+ });
+
+ describe('sortByField', () => {
+ it('should search by query', () => {
+ const field = 'frequency';
+
+ testAction(
+ actions.sortByField,
+ { field },
+ {},
+ [{ type: types.SET_SORT_FIELD, payload: { field } }],
+ [{ type: 'stopPolling' }, { type: 'startPolling' }],
+ );
+ });
+ });
+
+ describe('setEnpoint', () => {
+ it('should set search endpoint', () => {
+ const endpoint = 'https://sentry.io';
+
+ testAction(
+ actions.setEndpoint,
+ { endpoint },
+ {},
+ [{ type: types.SET_ENDPOINT, payload: { endpoint } }],
+ [],
+ );
+ });
+ });
+});
diff --git a/spec/frontend/error_tracking/store/list/getters_spec.js b/spec/frontend/error_tracking/store/list/getters_spec.js
deleted file mode 100644
index 3cd7fa37d44..00000000000
--- a/spec/frontend/error_tracking/store/list/getters_spec.js
+++ /dev/null
@@ -1,33 +0,0 @@
-import * as getters from '~/error_tracking/store/list/getters';
-
-describe('Error Tracking getters', () => {
- let state;
-
- const mockErrors = [
- { title: 'ActiveModel::MissingAttributeError: missing attribute: encrypted_password' },
- { title: 'Grape::Exceptions::MethodNotAllowed: Grape::Exceptions::MethodNotAllowed' },
- { title: 'NoMethodError: undefined method `sanitize_http_headers=' },
- { title: 'NoMethodError: undefined method `pry' },
- ];
-
- beforeEach(() => {
- state = {
- errors: mockErrors,
- };
- });
-
- describe('search results', () => {
- it('should return errors filtered by words in title matching the query', () => {
- const filteredErrors = getters.filterErrorsByTitle(state)('NoMethod');
-
- expect(filteredErrors).not.toContainEqual(mockErrors[0]);
- expect(filteredErrors.length).toBe(2);
- });
-
- it('should not return results if there is no matching query', () => {
- const filteredErrors = getters.filterErrorsByTitle(state)('GitLab');
-
- expect(filteredErrors.length).toBe(0);
- });
- });
-});
diff --git a/spec/frontend/error_tracking/store/list/mutation_spec.js b/spec/frontend/error_tracking/store/list/mutation_spec.js
index 6e021185b4d..44a75b6aa1f 100644
--- a/spec/frontend/error_tracking/store/list/mutation_spec.js
+++ b/spec/frontend/error_tracking/store/list/mutation_spec.js
@@ -1,6 +1,11 @@
+import { useLocalStorageSpy } from 'helpers/local_storage_helper';
import mutations from '~/error_tracking/store/list/mutations';
import * as types from '~/error_tracking/store/list/mutation_types';
+const ADD_RECENT_SEARCH = mutations[types.ADD_RECENT_SEARCH];
+const CLEAR_RECENT_SEARCHES = mutations[types.CLEAR_RECENT_SEARCHES];
+const LOAD_RECENT_SEARCHES = mutations[types.LOAD_RECENT_SEARCHES];
+
describe('Error tracking mutations', () => {
describe('SET_ERRORS', () => {
let state;
@@ -33,4 +38,81 @@ describe('Error tracking mutations', () => {
});
});
});
+
+ describe('recent searches', () => {
+ useLocalStorageSpy();
+ let state;
+
+ beforeEach(() => {
+ state = {
+ indexPath: '/project/errors.json',
+ recentSearches: [],
+ };
+ });
+
+ describe('ADD_RECENT_SEARCH', () => {
+ it('adds search queries to recentSearches and localStorage', () => {
+ ADD_RECENT_SEARCH(state, 'my issue');
+
+ expect(state.recentSearches).toEqual(['my issue']);
+ expect(localStorage.setItem).toHaveBeenCalledWith(
+ 'recent-searches/project/errors.json',
+ '["my issue"]',
+ );
+ });
+
+ it('does not add empty searches', () => {
+ ADD_RECENT_SEARCH(state, '');
+
+ expect(state.recentSearches).toEqual([]);
+ expect(localStorage.setItem).not.toHaveBeenCalled();
+ });
+
+ it('adds new queries to start of the list', () => {
+ state.recentSearches = ['previous', 'searches'];
+
+ ADD_RECENT_SEARCH(state, 'new search');
+
+ expect(state.recentSearches).toEqual(['new search', 'previous', 'searches']);
+ });
+
+ it('limits recentSearches to 5 items', () => {
+ state.recentSearches = [1, 2, 3, 4, 5];
+
+ ADD_RECENT_SEARCH(state, 'new search');
+
+ expect(state.recentSearches).toEqual(['new search', 1, 2, 3, 4]);
+ });
+
+ it('does not add same search query twice', () => {
+ state.recentSearches = ['already', 'searched'];
+
+ ADD_RECENT_SEARCH(state, 'searched');
+
+ expect(state.recentSearches).toEqual(['searched', 'already']);
+ });
+ });
+
+ describe('CLEAR_RECENT_SEARCHES', () => {
+ it('clears recentSearches and localStorage', () => {
+ state.recentSearches = ['first', 'second'];
+
+ CLEAR_RECENT_SEARCHES(state);
+
+ expect(state.recentSearches).toEqual([]);
+ expect(localStorage.removeItem).toHaveBeenCalledWith('recent-searches/project/errors.json');
+ });
+ });
+
+ describe('LOAD_RECENT_SEARCHES', () => {
+ it('loads recent searches from localStorage', () => {
+ jest.spyOn(window.localStorage, 'getItem').mockReturnValue('["first", "second"]');
+
+ LOAD_RECENT_SEARCHES(state);
+
+ expect(state.recentSearches).toEqual(['first', 'second']);
+ expect(localStorage.getItem).toHaveBeenCalledWith('recent-searches/project/errors.json');
+ });
+ });
+ });
});
diff --git a/spec/frontend/error_tracking/utils_spec.js b/spec/frontend/error_tracking/utils_spec.js
index 0e9047cd375..a0d6f7f009d 100644
--- a/spec/frontend/error_tracking/utils_spec.js
+++ b/spec/frontend/error_tracking/utils_spec.js
@@ -3,17 +3,6 @@ import * as errorTrackingUtils from '~/error_tracking/utils';
const externalUrl = 'https://sentry.io/organizations/test-sentry-nk/issues/1/?project=1';
describe('Error Tracking Events', () => {
- describe('trackViewInSentryOptions', () => {
- it('should return correct event options', () => {
- expect(errorTrackingUtils.trackViewInSentryOptions(externalUrl)).toEqual({
- category: 'Error Tracking',
- action: 'click_view_in_sentry',
- label: 'External Url',
- property: externalUrl,
- });
- });
- });
-
describe('trackClickErrorLinkToSentryOptions', () => {
it('should return correct event options', () => {
expect(errorTrackingUtils.trackClickErrorLinkToSentryOptions(externalUrl)).toEqual({
diff --git a/spec/frontend/error_tracking_settings/components/app_spec.js b/spec/frontend/error_tracking_settings/components/app_spec.js
index 022f12ef191..0b86aad5b3e 100644
--- a/spec/frontend/error_tracking_settings/components/app_spec.js
+++ b/spec/frontend/error_tracking_settings/components/app_spec.js
@@ -1,10 +1,10 @@
import Vuex from 'vuex';
import { createLocalVue, shallowMount } from '@vue/test-utils';
+import { TEST_HOST } from 'helpers/test_constants';
import ErrorTrackingSettings from '~/error_tracking_settings/components/app.vue';
import ErrorTrackingForm from '~/error_tracking_settings/components/error_tracking_form.vue';
import ProjectDropdown from '~/error_tracking_settings/components/project_dropdown.vue';
import createStore from '~/error_tracking_settings/store';
-import { TEST_HOST } from 'helpers/test_constants';
const localVue = createLocalVue();
localVue.use(Vuex);
diff --git a/spec/frontend/error_tracking_settings/components/error_tracking_form_spec.js b/spec/frontend/error_tracking_settings/components/error_tracking_form_spec.js
index bff8ad0877a..21edcb7235a 100644
--- a/spec/frontend/error_tracking_settings/components/error_tracking_form_spec.js
+++ b/spec/frontend/error_tracking_settings/components/error_tracking_form_spec.js
@@ -49,7 +49,9 @@ describe('error tracking settings form', () => {
it('is rendered with labels and placeholders', () => {
const pageText = wrapper.text();
- expect(pageText).toContain('Find your hostname in your Sentry account settings page');
+ expect(pageText).toContain(
+ "If you self-host Sentry, enter the full URL of your Sentry instance. If you're using Sentry's hosted solution, enter https://sentry.io",
+ );
expect(pageText).toContain(
"After adding your Auth Token, use the 'Connect' button to load projects",
);
diff --git a/spec/frontend/error_tracking_settings/mock.js b/spec/frontend/error_tracking_settings/mock.js
index 8c5bfd08beb..e64a6d1fe14 100644
--- a/spec/frontend/error_tracking_settings/mock.js
+++ b/spec/frontend/error_tracking_settings/mock.js
@@ -1,5 +1,5 @@
-import createStore from '~/error_tracking_settings/store';
import { TEST_HOST } from 'helpers/test_constants';
+import createStore from '~/error_tracking_settings/store';
const defaultStore = createStore();
diff --git a/spec/frontend/fixtures/snippet.rb b/spec/frontend/fixtures/snippet.rb
index 34a6fade9c9..e91050cd2c5 100644
--- a/spec/frontend/fixtures/snippet.rb
+++ b/spec/frontend/fixtures/snippet.rb
@@ -8,7 +8,7 @@ describe SnippetsController, '(JavaScript fixtures)', type: :controller do
let(:admin) { create(:admin) }
let(:namespace) { create(:namespace, name: 'frontend-fixtures' )}
let(:project) { create(:project, :repository, namespace: namespace, path: 'branches-project') }
- let(:snippet) { create(:personal_snippet, title: 'snippet.md', content: '# snippet', file_name: 'snippet.md', author: admin) }
+ let(:snippet) { create(:personal_snippet, :public, title: 'snippet.md', content: '# snippet', file_name: 'snippet.md', author: admin) }
render_views
@@ -17,6 +17,7 @@ describe SnippetsController, '(JavaScript fixtures)', type: :controller do
end
before do
+ stub_feature_flags(snippets_vue: false)
sign_in(admin)
allow(Discussion).to receive(:build_discussion_id).and_return(['discussionid:ceterumcenseo'])
end
diff --git a/spec/frontend/fixtures/static/environments_logs.html b/spec/frontend/fixtures/static/environments_logs.html
deleted file mode 100644
index 88bb0a3ed41..00000000000
--- a/spec/frontend/fixtures/static/environments_logs.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<div
- class="js-kubernetes-logs"
- data-current-environment-name="production"
- data-environments-path="/root/my-project/environments.json"
- data-project-full-path="root/my-project"
- data-environment-id=1
->
- <div class="build-page-pod-logs">
- <div class="build-trace-container prepend-top-default">
- <div class="top-bar js-top-bar d-flex">
- <div class="row">
- <div class="form-group col-6" role="group">
- <label class="d-block col-form-label-sm col-form-label">
- Environment
- </label>
- <div class="dropdown js-environment-dropdown d-flex">
- <button
- aria-expanded="false"
- class="dropdown-menu-toggle d-flex align-content-center align-self-center"
- data-toggle="dropdown"
- type="button"
- >
- <i aria-hidden="true" data-hidden="true" class="fa fa-chevron-down"></i>
- <div class="dropdown-toggle-text">
- &nbsp;
- </div>
- </button>
- <div class="dropdown-menu dropdown-menu-selectable dropdown-menu-drop-up"></div>
- </div>
- </div>
- <div class="form-group col-6" role="group">
- <label class="d-block col-form-label-sm col-form-label">
- Pod logs from
- </label>
- <div class="dropdown js-pod-dropdown d-flex">
- <button
- aria-expanded="false"
- class="dropdown-menu-toggle d-flex align-content-center align-self-center"
- data-toggle="dropdown"
- type="button"
- >
- <i aria-hidden="true" data-hidden="true" class="fa fa-chevron-down"></i>
- <div class="dropdown-toggle-text">
- &nbsp;
- </div>
- </button>
- <div class="dropdown-menu dropdown-menu-selectable dropdown-menu-drop-up"></div>
- </div>
- </div>
- </div>
- <div class="controllers align-self-end">
- <div
- class="has-tooltip controllers-buttons"
- data-container="body"
- data-placement="top"
- title="Scroll to top"
- >
- <button
- class="js-scroll-up btn-scroll btn-transparent btn-blank"
- disabled
- type="button"
- ></button>
- </div>
- <div
- class="has-tooltip controllers-buttons"
- data-container="body"
- data-placement="top"
- title="Scroll to bottom"
- >
- <button
- class="js-scroll-down btn-scroll btn-transparent btn-blank"
- disabled
- type="button"
- ></button>
- </div>
- <div class="refresh-control">
- <div
- class="has-tooltip controllers-buttons"
- data-container="body"
- data-placement="top"
- title="Refresh"
- >
- <button
- class="js-refresh-log btn btn-default btn-refresh h-32-px"
- disabled
- type="button"
- ></button>
- </div>
- </div>
- </div>
- </div>
- <pre class="build-trace" id="build-trace">
- <code class="bash js-build-output"></code>
- <div class="build-loader-animation js-build-refresh">
- <div class="dot"></div>
- <div class="dot"></div>
- <div class="dot"></div>
- </div>
- </pre>
- </div>
- </div>
-</div>
diff --git a/spec/frontend/fixtures/static/projects.json b/spec/frontend/fixtures/static/projects.json
index d92d3acdea0..f28d9899099 100644
--- a/spec/frontend/fixtures/static/projects.json
+++ b/spec/frontend/fixtures/static/projects.json
@@ -99,6 +99,15 @@
"access_level": 50,
"notification_level": 3
}
+ },
+ "_links": {
+ "self": "https://gitlab.com/api/v4/projects/278964",
+ "issues": "https://gitlab.com/api/v4/projects/278964/issues",
+ "merge_requests": "https://gitlab.com/api/v4/projects/278964/merge_requests",
+ "repo_branches": "https://gitlab.com/api/v4/projects/278964/repository/branches",
+ "labels": "https://gitlab.com/api/v4/projects/278964/labels",
+ "events": "https://gitlab.com/api/v4/projects/278964/events",
+ "members": "https://gitlab.com/api/v4/projects/278964/members"
}
}, {
"id": 7,
diff --git a/spec/frontend/fixtures/test_report.rb b/spec/frontend/fixtures/test_report.rb
new file mode 100644
index 00000000000..d26bba9b9d0
--- /dev/null
+++ b/spec/frontend/fixtures/test_report.rb
@@ -0,0 +1,30 @@
+# frozen_string_literal: true
+
+require "spec_helper"
+
+describe Projects::PipelinesController, "(JavaScript fixtures)", type: :controller do
+ include JavaScriptFixturesHelpers
+
+ let(:namespace) { create(:namespace, name: "frontend-fixtures") }
+ let(:project) { create(:project, :repository, namespace: namespace, path: "pipelines-project") }
+ let(:commit) { create(:commit, project: project) }
+ let(:user) { create(:user, developer_projects: [project], email: commit.author_email) }
+ let(:pipeline) { create(:ci_pipeline, :with_test_reports, project: project, user: user) }
+
+ render_views
+
+ before do
+ sign_in(user)
+ stub_feature_flags(junit_pipeline_view: true)
+ end
+
+ it "pipelines/test_report.json" do
+ get :test_report, params: {
+ namespace_id: project.namespace,
+ project_id: project,
+ id: pipeline.id
+ }, format: :json
+
+ expect(response).to be_successful
+ end
+end
diff --git a/spec/frontend/gfm_auto_complete_spec.js b/spec/frontend/gfm_auto_complete_spec.js
index 8af49fd47a2..99869c46f3f 100644
--- a/spec/frontend/gfm_auto_complete_spec.js
+++ b/spec/frontend/gfm_auto_complete_spec.js
@@ -1,7 +1,7 @@
/* eslint no-param-reassign: "off" */
import $ from 'jquery';
-import GfmAutoComplete from 'ee_else_ce/gfm_auto_complete';
+import GfmAutoComplete, { membersBeforeSave } from 'ee_else_ce/gfm_auto_complete';
import 'jquery.caret';
import 'at.js';
@@ -262,6 +262,79 @@ describe('GfmAutoComplete', () => {
});
});
+ describe('membersBeforeSave', () => {
+ const mockGroup = {
+ username: 'my-group',
+ name: 'My Group',
+ count: 2,
+ avatar_url: './group.jpg',
+ type: 'Group',
+ mentionsDisabled: false,
+ };
+
+ it('should return the original object when username is null', () => {
+ expect(membersBeforeSave([{ ...mockGroup, username: null }])).toEqual([
+ { ...mockGroup, username: null },
+ ]);
+ });
+
+ it('should set the text avatar if avatar_url is null', () => {
+ expect(membersBeforeSave([{ ...mockGroup, avatar_url: null }])).toEqual([
+ {
+ username: 'my-group',
+ avatarTag: '<div class="avatar rect-avatar center avatar-inline s26">M</div>',
+ title: 'My Group (2)',
+ search: 'my-group My Group',
+ icon: '',
+ },
+ ]);
+ });
+
+ it('should set the image avatar if avatar_url is given', () => {
+ expect(membersBeforeSave([mockGroup])).toEqual([
+ {
+ username: 'my-group',
+ avatarTag:
+ '<img src="./group.jpg" alt="my-group" class="avatar rect-avatar avatar-inline center s26"/>',
+ title: 'My Group (2)',
+ search: 'my-group My Group',
+ icon: '',
+ },
+ ]);
+ });
+
+ it('should set mentions disabled icon if mentionsDisabled is set', () => {
+ expect(membersBeforeSave([{ ...mockGroup, mentionsDisabled: true }])).toEqual([
+ {
+ username: 'my-group',
+ avatarTag:
+ '<img src="./group.jpg" alt="my-group" class="avatar rect-avatar avatar-inline center s26"/>',
+ title: 'My Group',
+ search: 'my-group My Group',
+ icon:
+ '<svg class="s16 vertical-align-middle prepend-left-5"><use xlink:href="undefined#notifications-off" /></svg>',
+ },
+ ]);
+ });
+
+ it('should set the right image classes for User type members', () => {
+ expect(
+ membersBeforeSave([
+ { username: 'my-user', name: 'My User', avatar_url: './users.jpg', type: 'User' },
+ ]),
+ ).toEqual([
+ {
+ username: 'my-user',
+ avatarTag:
+ '<img src="./users.jpg" alt="my-user" class="avatar avatar-inline center s26"/>',
+ title: 'My User',
+ search: 'my-user My User',
+ icon: '',
+ },
+ ]);
+ });
+ });
+
describe('Issues.insertTemplateFunction', () => {
it('should return default template', () => {
expect(GfmAutoComplete.Issues.insertTemplateFunction({ id: 5, title: 'Some Issue' })).toBe(
@@ -298,6 +371,41 @@ describe('GfmAutoComplete', () => {
});
});
+ describe('Members.templateFunction', () => {
+ it('should return html with avatarTag and username', () => {
+ expect(
+ GfmAutoComplete.Members.templateFunction({
+ avatarTag: 'IMG',
+ username: 'my-group',
+ title: '',
+ icon: '',
+ }),
+ ).toBe('<li>IMG my-group <small></small> </li>');
+ });
+
+ it('should add icon if icon is set', () => {
+ expect(
+ GfmAutoComplete.Members.templateFunction({
+ avatarTag: 'IMG',
+ username: 'my-group',
+ title: '',
+ icon: '<i class="icon"/>',
+ }),
+ ).toBe('<li>IMG my-group <small></small> <i class="icon"/></li>');
+ });
+
+ it('should add escaped title if title is set', () => {
+ expect(
+ GfmAutoComplete.Members.templateFunction({
+ avatarTag: 'IMG',
+ username: 'my-group',
+ title: 'MyGroup+',
+ icon: '<i class="icon"/>',
+ }),
+ ).toBe('<li>IMG my-group <small>MyGroup+</small> <i class="icon"/></li>');
+ });
+ });
+
describe('labels', () => {
const dataSources = {
labels: `${TEST_HOST}/autocomplete_sources/labels`,
diff --git a/spec/frontend/grafana_integration/components/grafana_integration_spec.js b/spec/frontend/grafana_integration/components/grafana_integration_spec.js
index c098ada0519..92754ada64f 100644
--- a/spec/frontend/grafana_integration/components/grafana_integration_spec.js
+++ b/spec/frontend/grafana_integration/components/grafana_integration_spec.js
@@ -1,11 +1,11 @@
import { mount, shallowMount } from '@vue/test-utils';
import { GlButton } from '@gitlab/ui';
+import { TEST_HOST } from 'helpers/test_constants';
import GrafanaIntegration from '~/grafana_integration/components/grafana_integration.vue';
import { createStore } from '~/grafana_integration/store';
import axios from '~/lib/utils/axios_utils';
import { refreshCurrentPage } from '~/lib/utils/url_utility';
import createFlash from '~/flash';
-import { TEST_HOST } from 'helpers/test_constants';
jest.mock('~/lib/utils/url_utility');
jest.mock('~/flash');
diff --git a/spec/frontend/helpers/dom_shims/index.js b/spec/frontend/helpers/dom_shims/index.js
index 40256398e6d..1fc5130cefc 100644
--- a/spec/frontend/helpers/dom_shims/index.js
+++ b/spec/frontend/helpers/dom_shims/index.js
@@ -1 +1,2 @@
import './get_client_rects';
+import './inner_text';
diff --git a/spec/frontend/helpers/dom_shims/inner_text.js b/spec/frontend/helpers/dom_shims/inner_text.js
new file mode 100644
index 00000000000..2b8201eed31
--- /dev/null
+++ b/spec/frontend/helpers/dom_shims/inner_text.js
@@ -0,0 +1,11 @@
+// workaround for JSDOM not supporting innerText
+// see https://github.com/jsdom/jsdom/issues/1245
+Object.defineProperty(global.Element.prototype, 'innerText', {
+ get() {
+ return this.textContent;
+ },
+ set(value) {
+ this.textContext = value;
+ },
+ configurable: true, // make it so that it doesn't blow chunks on re-running tests with things like --watch
+});
diff --git a/spec/javascripts/ide/components/branches/item_spec.js b/spec/frontend/ide/components/branches/item_spec.js
index 36b6736bfd4..1db3750609b 100644
--- a/spec/javascripts/ide/components/branches/item_spec.js
+++ b/spec/frontend/ide/components/branches/item_spec.js
@@ -1,5 +1,5 @@
import Vue from 'vue';
-import mountCompontent from 'spec/helpers/vue_mount_component_helper';
+import mountCompontent from 'helpers/vue_mount_component_helper';
import router from '~/ide/ide_router';
import Item from '~/ide/components/branches/item.vue';
import { getTimeago } from '~/lib/utils/datetime_utility';
@@ -30,7 +30,7 @@ describe('IDE branch item', () => {
it('renders branch name and timeago', () => {
const timeText = getTimeago().format(TEST_BRANCH.committedDate);
- expect(vm.$el).toContainText(TEST_BRANCH.name);
+ expect(vm.$el.textContent).toContain(TEST_BRANCH.name);
expect(vm.$el.querySelector('time')).toHaveText(timeText);
expect(vm.$el.querySelector('.ic-mobile-issue-close')).toBe(null);
});
@@ -39,7 +39,7 @@ describe('IDE branch item', () => {
const expectedHref = router.resolve(`/project/${TEST_PROJECT_ID}/edit/${TEST_BRANCH.name}`)
.href;
- expect(vm.$el).toMatch('a');
+ expect(vm.$el.textContent).toMatch('a');
expect(vm.$el).toHaveAttr('href', expectedHref);
});
diff --git a/spec/frontend/ide/components/branches/search_list_spec.js b/spec/frontend/ide/components/branches/search_list_spec.js
index 5cfe1c25c6b..d26dfc48ff8 100644
--- a/spec/frontend/ide/components/branches/search_list_spec.js
+++ b/spec/frontend/ide/components/branches/search_list_spec.js
@@ -1,9 +1,9 @@
import { shallowMount, createLocalVue } from '@vue/test-utils';
import Vuex from 'vuex';
+import { GlLoadingIcon } from '@gitlab/ui';
import { __ } from '~/locale';
import List from '~/ide/components/branches/search_list.vue';
import Item from '~/ide/components/branches/item.vue';
-import { GlLoadingIcon } from '@gitlab/ui';
import { branches } from '../../mock_data';
const localVue = createLocalVue();
diff --git a/spec/frontend/ide/components/merge_requests/list_spec.js b/spec/frontend/ide/components/merge_requests/list_spec.js
index 86a311acad4..76806dcba69 100644
--- a/spec/frontend/ide/components/merge_requests/list_spec.js
+++ b/spec/frontend/ide/components/merge_requests/list_spec.js
@@ -1,9 +1,9 @@
import { shallowMount, createLocalVue } from '@vue/test-utils';
import Vuex from 'vuex';
+import { GlLoadingIcon } from '@gitlab/ui';
import List from '~/ide/components/merge_requests/list.vue';
import Item from '~/ide/components/merge_requests/item.vue';
import TokenedInput from '~/ide/components/shared/tokened_input.vue';
-import { GlLoadingIcon } from '@gitlab/ui';
import { mergeRequests as mergeRequestsMock } from '../../mock_data';
const localVue = createLocalVue();
diff --git a/spec/javascripts/ide/components/panes/right_spec.js b/spec/frontend/ide/components/panes/right_spec.js
index 4899f850cf4..6908790aaa8 100644
--- a/spec/javascripts/ide/components/panes/right_spec.js
+++ b/spec/frontend/ide/components/panes/right_spec.js
@@ -1,9 +1,9 @@
import Vue from 'vue';
import '~/behaviors/markdown/render_gfm';
+import { createComponentWithStore } from 'helpers/vue_mount_component_helper';
import { createStore } from '~/ide/stores';
import RightPane from '~/ide/components/panes/right.vue';
import { rightSidebarViews } from '~/ide/constants';
-import { createComponentWithStore } from '../../../helpers/vue_mount_component_helper';
describe('IDE right pane', () => {
let Component;
@@ -56,7 +56,7 @@ describe('IDE right pane', () => {
describe('click', () => {
beforeEach(() => {
- spyOn(vm, 'open');
+ jest.spyOn(vm, 'open').mockReturnValue();
});
it('sets view to merge request', done => {
@@ -74,7 +74,9 @@ describe('IDE right pane', () => {
describe('live preview', () => {
it('renders live preview button', done => {
- Vue.set(vm.$store.state.entries, 'package.json', { name: 'package.json' });
+ Vue.set(vm.$store.state.entries, 'package.json', {
+ name: 'package.json',
+ });
vm.$store.state.clientsidePreviewEnabled = true;
vm.$nextTick(() => {
diff --git a/spec/frontend/ide/components/pipelines/list_spec.js b/spec/frontend/ide/components/pipelines/list_spec.js
index a974139a8f9..91152dffafa 100644
--- a/spec/frontend/ide/components/pipelines/list_spec.js
+++ b/spec/frontend/ide/components/pipelines/list_spec.js
@@ -1,11 +1,11 @@
import { shallowMount, createLocalVue } from '@vue/test-utils';
import Vuex from 'vuex';
+import { GlLoadingIcon } from '@gitlab/ui';
+import { TEST_HOST } from 'helpers/test_constants';
import List from '~/ide/components/pipelines/list.vue';
import JobsList from '~/ide/components/jobs/list.vue';
import Tab from '~/vue_shared/components/tabs/tab.vue';
import CiIcon from '~/vue_shared/components/ci_icon.vue';
-import { GlLoadingIcon } from '@gitlab/ui';
-import { TEST_HOST } from 'helpers/test_constants';
import { pipelines } from '../../../../javascripts/ide/mock_data';
const localVue = createLocalVue();
diff --git a/spec/frontend/ide/components/preview/clientside_spec.js b/spec/frontend/ide/components/preview/clientside_spec.js
index 6a33f4998c5..5cb9e598fc4 100644
--- a/spec/frontend/ide/components/preview/clientside_spec.js
+++ b/spec/frontend/ide/components/preview/clientside_spec.js
@@ -68,10 +68,6 @@ describe('IDE clientside preview', () => {
jest.useRealTimers();
});
- beforeEach(() => {
- jest.clearAllMocks();
- });
-
afterEach(() => {
wrapper.destroy();
});
diff --git a/spec/javascripts/ide/components/preview/navigator_spec.js b/spec/frontend/ide/components/preview/navigator_spec.js
index 576d2fae003..650bb7660a4 100644
--- a/spec/javascripts/ide/components/preview/navigator_spec.js
+++ b/spec/frontend/ide/components/preview/navigator_spec.js
@@ -1,6 +1,7 @@
import Vue from 'vue';
+import mountComponent from 'helpers/vue_mount_component_helper';
+import { TEST_HOST } from 'helpers/test_constants';
import ClientsideNavigator from '~/ide/components/preview/navigator.vue';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
describe('IDE clientside preview navigator', () => {
let vm;
@@ -12,14 +13,9 @@ describe('IDE clientside preview navigator', () => {
});
beforeEach(() => {
- manager = {
- bundlerURL: gl.TEST_HOST,
- iframe: { src: '' },
- };
+ manager = { bundlerURL: TEST_HOST, iframe: { src: '' } };
- vm = mountComponent(Component, {
- manager,
- });
+ vm = mountComponent(Component, { manager });
});
afterEach(() => {
@@ -47,7 +43,7 @@ describe('IDE clientside preview navigator', () => {
it('calls back method when clicking back button', done => {
vm.navigationStack.push('/test');
vm.navigationStack.push('/test2');
- spyOn(vm, 'back');
+ jest.spyOn(vm, 'back').mockReturnValue();
vm.$nextTick(() => {
vm.$el.querySelector('.ide-navigator-btn').click();
@@ -60,7 +56,7 @@ describe('IDE clientside preview navigator', () => {
it('calls forward method when clicking forward button', done => {
vm.forwardNavigationStack.push('/test');
- spyOn(vm, 'forward');
+ jest.spyOn(vm, 'forward').mockReturnValue();
vm.$nextTick(() => {
vm.$el.querySelectorAll('.ide-navigator-btn')[1].click();
@@ -73,49 +69,35 @@ describe('IDE clientside preview navigator', () => {
describe('onUrlChange', () => {
it('updates the path', () => {
- vm.onUrlChange({
- url: `${gl.TEST_HOST}/url`,
- });
+ vm.onUrlChange({ url: `${TEST_HOST}/url` });
expect(vm.path).toBe('/url');
});
it('sets currentBrowsingIndex 0 if not already set', () => {
- vm.onUrlChange({
- url: `${gl.TEST_HOST}/url`,
- });
+ vm.onUrlChange({ url: `${TEST_HOST}/url` });
expect(vm.currentBrowsingIndex).toBe(0);
});
it('increases currentBrowsingIndex if path doesnt match', () => {
- vm.onUrlChange({
- url: `${gl.TEST_HOST}/url`,
- });
+ vm.onUrlChange({ url: `${TEST_HOST}/url` });
- vm.onUrlChange({
- url: `${gl.TEST_HOST}/url2`,
- });
+ vm.onUrlChange({ url: `${TEST_HOST}/url2` });
expect(vm.currentBrowsingIndex).toBe(1);
});
it('does not increase currentBrowsingIndex if path matches', () => {
- vm.onUrlChange({
- url: `${gl.TEST_HOST}/url`,
- });
+ vm.onUrlChange({ url: `${TEST_HOST}/url` });
- vm.onUrlChange({
- url: `${gl.TEST_HOST}/url`,
- });
+ vm.onUrlChange({ url: `${TEST_HOST}/url` });
expect(vm.currentBrowsingIndex).toBe(0);
});
it('pushes path into navigation stack', () => {
- vm.onUrlChange({
- url: `${gl.TEST_HOST}/url`,
- });
+ vm.onUrlChange({ url: `${TEST_HOST}/url` });
expect(vm.navigationStack).toEqual(['/url']);
});
@@ -128,7 +110,7 @@ describe('IDE clientside preview navigator', () => {
vm.navigationStack.push('/test');
vm.navigationStack.push('/test2');
- spyOn(vm, 'visitPath');
+ jest.spyOn(vm, 'visitPath').mockReturnValue();
vm.back();
});
@@ -152,7 +134,7 @@ describe('IDE clientside preview navigator', () => {
describe('forward', () => {
it('calls visitPath with first entry in forwardNavigationStack', () => {
- spyOn(vm, 'visitPath');
+ jest.spyOn(vm, 'visitPath').mockReturnValue();
vm.forwardNavigationStack.push('/test');
vm.forwardNavigationStack.push('/test2');
@@ -165,7 +147,7 @@ describe('IDE clientside preview navigator', () => {
describe('refresh', () => {
it('calls refresh with current path', () => {
- spyOn(vm, 'visitPath');
+ jest.spyOn(vm, 'visitPath').mockReturnValue();
vm.path = '/test';
@@ -179,7 +161,7 @@ describe('IDE clientside preview navigator', () => {
it('updates iframe src with passed in path', () => {
vm.visitPath('/testpath');
- expect(manager.iframe.src).toBe(`${gl.TEST_HOST}/testpath`);
+ expect(manager.iframe.src).toBe(`${TEST_HOST}/testpath`);
});
});
});
diff --git a/spec/frontend/ide/helpers.js b/spec/frontend/ide/helpers.js
new file mode 100644
index 00000000000..de839fa99ca
--- /dev/null
+++ b/spec/frontend/ide/helpers.js
@@ -0,0 +1,52 @@
+import * as pathUtils from 'path';
+import { decorateData } from '~/ide/stores/utils';
+import state from '~/ide/stores/state';
+import commitState from '~/ide/stores/modules/commit/state';
+import mergeRequestsState from '~/ide/stores/modules/merge_requests/state';
+import pipelinesState from '~/ide/stores/modules/pipelines/state';
+import branchesState from '~/ide/stores/modules/branches/state';
+import fileTemplatesState from '~/ide/stores/modules/file_templates/state';
+import paneState from '~/ide/stores/modules/pane/state';
+
+export const resetStore = store => {
+ const newState = {
+ ...state(),
+ commit: commitState(),
+ mergeRequests: mergeRequestsState(),
+ pipelines: pipelinesState(),
+ branches: branchesState(),
+ fileTemplates: fileTemplatesState(),
+ rightPane: paneState(),
+ };
+ store.replaceState(newState);
+};
+
+export const file = (name = 'name', id = name, type = '', parent = null) =>
+ decorateData({
+ id,
+ type,
+ icon: 'icon',
+ url: 'url',
+ name,
+ path: parent ? `${parent.path}/${name}` : name,
+ parentPath: parent ? parent.path : '',
+ lastCommit: {},
+ });
+
+export const createEntriesFromPaths = paths =>
+ paths
+ .map(path => ({
+ name: pathUtils.basename(path),
+ dir: pathUtils.dirname(path),
+ ext: pathUtils.extname(path),
+ }))
+ .reduce((entries, path, idx) => {
+ const { name } = path;
+ const parent = path.dir ? entries[path.dir] : null;
+ const type = path.ext ? 'blob' : 'tree';
+ const entry = file(name, (idx + 1).toString(), type, parent);
+ return {
+ [entry.path]: entry,
+ ...entries,
+ };
+ }, {});
diff --git a/spec/javascripts/ide/ide_router_spec.js b/spec/frontend/ide/ide_router_spec.js
index 52ea0882bf4..1461b756d13 100644
--- a/spec/javascripts/ide/ide_router_spec.js
+++ b/spec/frontend/ide/ide_router_spec.js
@@ -31,7 +31,7 @@ describe('IDE router', () => {
`/project/${PROJECT_NAMESPACE}/${PROJECT_NAME}`,
].forEach(route => {
it(`finds project path when route is "${route}"`, () => {
- spyOn(store, 'dispatch').and.returnValue(new Promise(() => {}));
+ jest.spyOn(store, 'dispatch').mockReturnValue(new Promise(() => {}));
router.push(route);
diff --git a/spec/frontend/ide/lib/files_spec.js b/spec/frontend/ide/lib/files_spec.js
index 654dc6c13c8..34eb57ae0d3 100644
--- a/spec/frontend/ide/lib/files_spec.js
+++ b/spec/frontend/ide/lib/files_spec.js
@@ -1,6 +1,7 @@
import { viewerInformationForPath } from '~/vue_shared/components/content_viewer/lib/viewer_utils';
import { decorateFiles, splitParent } from '~/ide/lib/files';
-import { decorateData, escapeFileUrl } from '~/ide/stores/utils';
+import { decorateData } from '~/ide/stores/utils';
+import { escapeFileUrl } from '~/lib/utils/url_utility';
const TEST_BRANCH_ID = 'lorem-ipsum';
const TEST_PROJECT_ID = 10;
diff --git a/spec/frontend/ide/services/index_spec.js b/spec/frontend/ide/services/index_spec.js
index bb0d20bed91..d676d7539b6 100644
--- a/spec/frontend/ide/services/index_spec.js
+++ b/spec/frontend/ide/services/index_spec.js
@@ -2,7 +2,7 @@ import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';
import services from '~/ide/services';
import Api from '~/api';
-import { escapeFileUrl } from '~/ide/stores/utils';
+import { escapeFileUrl } from '~/lib/utils/url_utility';
jest.mock('~/api');
diff --git a/spec/javascripts/ide/stores/getters_spec.js b/spec/frontend/ide/stores/getters_spec.js
index 558674cc845..21c5e886738 100644
--- a/spec/javascripts/ide/stores/getters_spec.js
+++ b/spec/frontend/ide/stores/getters_spec.js
@@ -1,12 +1,14 @@
import * as getters from '~/ide/stores/getters';
-import state from '~/ide/stores/state';
+import { createStore } from '~/ide/stores';
import { file } from '../helpers';
describe('IDE store getters', () => {
let localState;
+ let localStore;
beforeEach(() => {
- localState = state();
+ localStore = createStore();
+ localState = localStore.state;
});
describe('activeFile', () => {
@@ -45,7 +47,9 @@ describe('IDE store getters', () => {
localState.currentMergeRequestId = 1;
localState.projects.abcproject = {
mergeRequests: {
- 1: { mergeId: 1 },
+ 1: {
+ mergeId: 1,
+ },
},
};
@@ -62,9 +66,21 @@ describe('IDE store getters', () => {
describe('allBlobs', () => {
beforeEach(() => {
Object.assign(localState.entries, {
- index: { type: 'blob', name: 'index', lastOpenedAt: 0 },
- app: { type: 'blob', name: 'blob', lastOpenedAt: 0 },
- folder: { type: 'folder', name: 'folder', lastOpenedAt: 0 },
+ index: {
+ type: 'blob',
+ name: 'index',
+ lastOpenedAt: 0,
+ },
+ app: {
+ type: 'blob',
+ name: 'blob',
+ lastOpenedAt: 0,
+ },
+ folder: {
+ type: 'folder',
+ name: 'folder',
+ lastOpenedAt: 0,
+ },
});
});
@@ -174,7 +190,7 @@ describe('IDE store getters', () => {
},
};
const localGetters = {
- findBranch: jasmine.createSpy('findBranchSpy'),
+ findBranch: jest.fn(),
};
getters.currentBranch(localState, localGetters);
@@ -251,7 +267,9 @@ describe('IDE store getters', () => {
describe('packageJson', () => {
it('returns package.json entry', () => {
- localState.entries['package.json'] = { name: 'package.json' };
+ localState.entries['package.json'] = {
+ name: 'package.json',
+ };
expect(getters.packageJson(localState)).toEqual({
name: 'package.json',
@@ -273,7 +291,9 @@ describe('IDE store getters', () => {
currentProject: {
default_branch: 'master',
},
- currentBranch: { can_push: true },
+ currentBranch: {
+ can_push: true,
+ },
};
expect(getters.canPushToBranch({}, localGetters)).toBeTruthy();
@@ -284,10 +304,98 @@ describe('IDE store getters', () => {
currentProject: {
default_branch: 'master',
},
- currentBranch: { can_push: false },
+ currentBranch: {
+ can_push: false,
+ },
};
expect(getters.canPushToBranch({}, localGetters)).toBeFalsy();
});
});
+
+ describe('isFileDeletedAndReadded', () => {
+ const f = { ...file('sample'), content: 'sample', raw: 'sample' };
+
+ it.each([
+ {
+ entry: { ...f, tempFile: true },
+ staged: { ...f, deleted: true },
+ output: true,
+ },
+ {
+ entry: { ...f, content: 'changed' },
+ staged: { ...f, content: 'changed' },
+ output: false,
+ },
+ {
+ entry: { ...f, content: 'changed' },
+ output: false,
+ },
+ ])(
+ 'checks staged and unstaged files to see if a file was deleted and readded (case %#)',
+ ({ entry, staged, output }) => {
+ Object.assign(localState, {
+ entries: {
+ [entry.path]: entry,
+ },
+ stagedFiles: [],
+ });
+
+ if (staged) localState.stagedFiles.push(staged);
+
+ expect(localStore.getters.isFileDeletedAndReadded(entry.path)).toBe(output);
+ },
+ );
+ });
+
+ describe('getDiffInfo', () => {
+ const f = { ...file('sample'), content: 'sample', raw: 'sample' };
+ it.each([
+ {
+ entry: { ...f, tempFile: true },
+ staged: { ...f, deleted: true },
+ output: { deleted: false, changed: false, tempFile: false },
+ },
+ {
+ entry: { ...f, tempFile: true, content: 'changed', raw: '' },
+ staged: { ...f, deleted: true },
+ output: { deleted: false, changed: true, tempFile: false },
+ },
+ {
+ entry: { ...f, content: 'changed' },
+ output: { changed: true },
+ },
+ {
+ entry: { ...f, content: 'sample' },
+ staged: { ...f, content: 'changed' },
+ output: { changed: false },
+ },
+ {
+ entry: { ...f, deleted: true },
+ output: { deleted: true, changed: false },
+ },
+ {
+ entry: { ...f, prevPath: 'old_path' },
+ output: { renamed: true, changed: false },
+ },
+ {
+ entry: { ...f, prevPath: 'old_path', content: 'changed' },
+ output: { renamed: true, changed: true },
+ },
+ ])(
+ 'compares changes in a file entry and returns a resulting diff info (case %#)',
+ ({ entry, staged, output }) => {
+ Object.assign(localState, {
+ entries: {
+ [entry.path]: entry,
+ },
+ stagedFiles: [],
+ });
+
+ if (staged) localState.stagedFiles.push(staged);
+
+ expect(localStore.getters.getDiffInfo(entry.path)).toEqual(expect.objectContaining(output));
+ },
+ );
+ });
});
diff --git a/spec/javascripts/ide/stores/modules/branches/actions_spec.js b/spec/frontend/ide/stores/modules/branches/actions_spec.js
index 9c61ba3d1a6..2ab4126cccf 100644
--- a/spec/javascripts/ide/stores/modules/branches/actions_spec.js
+++ b/spec/frontend/ide/stores/modules/branches/actions_spec.js
@@ -1,8 +1,8 @@
import MockAdapter from 'axios-mock-adapter';
+import testAction from 'helpers/vuex_action_helper';
import axios from '~/lib/utils/axios_utils';
import state from '~/ide/stores/modules/branches/state';
import * as types from '~/ide/stores/modules/branches/mutation_types';
-import testAction from 'spec/helpers/vuex_action_helper';
import {
requestBranches,
receiveBranchesError,
@@ -21,12 +21,8 @@ describe('IDE branches actions', () => {
beforeEach(() => {
mockedContext = {
dispatch() {},
- rootState: {
- currentProjectId: projectData.name_with_namespace,
- },
- rootGetters: {
- currentProject: projectData,
- },
+ rootState: { currentProjectId: projectData.name_with_namespace },
+ rootGetters: { currentProject: projectData },
state: state(),
};
@@ -70,7 +66,7 @@ describe('IDE branches actions', () => {
type: 'setErrorMessage',
payload: {
text: 'Error loading branches.',
- action: jasmine.any(Function),
+ action: expect.any(Function),
actionText: 'Please try again',
actionPayload: { search: TEST_SEARCH },
},
@@ -105,15 +101,12 @@ describe('IDE branches actions', () => {
});
it('calls API with params', () => {
- const apiSpy = spyOn(axios, 'get').and.callThrough();
+ const apiSpy = jest.spyOn(axios, 'get');
fetchBranches(mockedContext, { search: TEST_SEARCH });
- expect(apiSpy).toHaveBeenCalledWith(jasmine.anything(), {
- params: jasmine.objectContaining({
- search: TEST_SEARCH,
- sort: 'updated_desc',
- }),
+ expect(apiSpy).toHaveBeenCalledWith(expect.anything(), {
+ params: expect.objectContaining({ search: TEST_SEARCH, sort: 'updated_desc' }),
});
});
@@ -126,10 +119,7 @@ describe('IDE branches actions', () => {
[
{ type: 'requestBranches' },
{ type: 'resetBranches' },
- {
- type: 'receiveBranchesSuccess',
- payload: branches,
- },
+ { type: 'receiveBranchesSuccess', payload: branches },
],
done,
);
@@ -150,10 +140,7 @@ describe('IDE branches actions', () => {
[
{ type: 'requestBranches' },
{ type: 'resetBranches' },
- {
- type: 'receiveBranchesError',
- payload: { search: TEST_SEARCH },
- },
+ { type: 'receiveBranchesError', payload: { search: TEST_SEARCH } },
],
done,
);
diff --git a/spec/javascripts/ide/stores/modules/branches/mutations_spec.js b/spec/frontend/ide/stores/modules/branches/mutations_spec.js
index be91440f119..ed8e05bf299 100644
--- a/spec/javascripts/ide/stores/modules/branches/mutations_spec.js
+++ b/spec/frontend/ide/stores/modules/branches/mutations_spec.js
@@ -10,7 +10,7 @@ describe('IDE branches mutations', () => {
mockedState = state();
});
- describe(types.REQUEST_BRANCHES, () => {
+ describe('REQUEST_BRANCHES', () => {
it('sets loading to true', () => {
mutations[types.REQUEST_BRANCHES](mockedState);
@@ -18,7 +18,7 @@ describe('IDE branches mutations', () => {
});
});
- describe(types.RECEIVE_BRANCHES_ERROR, () => {
+ describe('RECEIVE_BRANCHES_ERROR', () => {
it('sets loading to false', () => {
mutations[types.RECEIVE_BRANCHES_ERROR](mockedState);
@@ -26,7 +26,7 @@ describe('IDE branches mutations', () => {
});
});
- describe(types.RECEIVE_BRANCHES_SUCCESS, () => {
+ describe('RECEIVE_BRANCHES_SUCCESS', () => {
it('sets branches', () => {
const expectedBranches = branches.map(branch => ({
name: branch.name,
@@ -39,7 +39,7 @@ describe('IDE branches mutations', () => {
});
});
- describe(types.RESET_BRANCHES, () => {
+ describe('RESET_BRANCHES', () => {
it('clears branches array', () => {
mockedState.branches = ['test'];
diff --git a/spec/javascripts/ide/stores/modules/commit/getters_spec.js b/spec/frontend/ide/stores/modules/commit/getters_spec.js
index 07445c22917..07445c22917 100644
--- a/spec/javascripts/ide/stores/modules/commit/getters_spec.js
+++ b/spec/frontend/ide/stores/modules/commit/getters_spec.js
diff --git a/spec/javascripts/ide/stores/modules/file_templates/actions_spec.js b/spec/frontend/ide/stores/modules/file_templates/actions_spec.js
index 548962c7a92..6c1fa163a91 100644
--- a/spec/javascripts/ide/stores/modules/file_templates/actions_spec.js
+++ b/spec/frontend/ide/stores/modules/file_templates/actions_spec.js
@@ -1,9 +1,9 @@
import MockAdapter from 'axios-mock-adapter';
+import testAction from 'helpers/vuex_action_helper';
import axios from '~/lib/utils/axios_utils';
import createState from '~/ide/stores/modules/file_templates/state';
import * as actions from '~/ide/stores/modules/file_templates/actions';
import * as types from '~/ide/stores/modules/file_templates/mutation_types';
-import testAction from 'spec/helpers/vuex_action_helper';
describe('IDE file templates actions', () => {
let state;
@@ -43,7 +43,7 @@ describe('IDE file templates actions', () => {
{
type: 'setErrorMessage',
payload: {
- action: jasmine.any(Function),
+ action: expect.any(Function),
actionText: 'Please try again',
text: 'Error loading template types.',
},
@@ -82,7 +82,7 @@ describe('IDE file templates actions', () => {
});
it('rejects if selectedTemplateType is empty', done => {
- const dispatch = jasmine.createSpy('dispatch');
+ const dispatch = jest.fn().mockName('dispatch');
actions
.fetchTemplateTypes({ dispatch, state })
@@ -95,9 +95,7 @@ describe('IDE file templates actions', () => {
});
it('dispatches actions', done => {
- state.selectedTemplateType = {
- key: 'licenses',
- };
+ state.selectedTemplateType = { key: 'licenses' };
testAction(
actions.fetchTemplateTypes,
@@ -105,17 +103,9 @@ describe('IDE file templates actions', () => {
state,
[],
[
- {
- type: 'requestTemplateTypes',
- },
- {
- type: 'receiveTemplateTypesSuccess',
- payload: pages[0],
- },
- {
- type: 'receiveTemplateTypesSuccess',
- payload: pages[0].concat(pages[1]),
- },
+ { type: 'requestTemplateTypes' },
+ { type: 'receiveTemplateTypesSuccess', payload: pages[0] },
+ { type: 'receiveTemplateTypesSuccess', payload: pages[0].concat(pages[1]) },
{
type: 'receiveTemplateTypesSuccess',
payload: pages[0].concat(pages[1]).concat(pages[2]),
@@ -132,23 +122,14 @@ describe('IDE file templates actions', () => {
});
it('dispatches actions', done => {
- state.selectedTemplateType = {
- key: 'licenses',
- };
+ state.selectedTemplateType = { key: 'licenses' };
testAction(
actions.fetchTemplateTypes,
null,
state,
[],
- [
- {
- type: 'requestTemplateTypes',
- },
- {
- type: 'receiveTemplateTypesError',
- },
- ],
+ [{ type: 'requestTemplateTypes' }, { type: 'receiveTemplateTypesError' }],
done,
);
});
@@ -157,16 +138,11 @@ describe('IDE file templates actions', () => {
describe('setSelectedTemplateType', () => {
it('commits SET_SELECTED_TEMPLATE_TYPE', () => {
- const commit = jasmine.createSpy('commit');
+ const commit = jest.fn().mockName('commit');
const options = {
commit,
dispatch() {},
- rootGetters: {
- activeFile: {
- name: 'test',
- prevPath: '',
- },
- },
+ rootGetters: { activeFile: { name: 'test', prevPath: '' } },
};
actions.setSelectedTemplateType(options, { name: 'test' });
@@ -175,17 +151,12 @@ describe('IDE file templates actions', () => {
});
it('dispatches discardFileChanges if prevPath matches templates name', () => {
- const dispatch = jasmine.createSpy('dispatch');
+ const dispatch = jest.fn().mockName('dispatch');
const options = {
commit() {},
+
dispatch,
- rootGetters: {
- activeFile: {
- name: 'test',
- path: 'test',
- prevPath: 'test',
- },
- },
+ rootGetters: { activeFile: { name: 'test', path: 'test', prevPath: 'test' } },
};
actions.setSelectedTemplateType(options, { name: 'test' });
@@ -194,27 +165,19 @@ describe('IDE file templates actions', () => {
});
it('dispatches renameEntry if file name doesnt match', () => {
- const dispatch = jasmine.createSpy('dispatch');
+ const dispatch = jest.fn().mockName('dispatch');
const options = {
commit() {},
+
dispatch,
- rootGetters: {
- activeFile: {
- name: 'oldtest',
- path: 'oldtest',
- prevPath: '',
- },
- },
+ rootGetters: { activeFile: { name: 'oldtest', path: 'oldtest', prevPath: '' } },
};
actions.setSelectedTemplateType(options, { name: 'test' });
expect(dispatch).toHaveBeenCalledWith(
'renameEntry',
- {
- path: 'oldtest',
- name: 'test',
- },
+ { path: 'oldtest', name: 'test' },
{ root: true },
);
});
@@ -231,7 +194,7 @@ describe('IDE file templates actions', () => {
{
type: 'setErrorMessage',
payload: {
- action: jasmine.any(Function),
+ action: expect.any(Function),
actionText: 'Please try again',
text: 'Error loading template.',
actionPayload: 'test',
@@ -246,18 +209,16 @@ describe('IDE file templates actions', () => {
describe('fetchTemplate', () => {
describe('success', () => {
beforeEach(() => {
- mock.onGet(/api\/(.*)\/templates\/licenses\/mit/).replyOnce(200, {
- content: 'MIT content',
- });
- mock.onGet(/api\/(.*)\/templates\/licenses\/testing/).replyOnce(200, {
- content: 'testing content',
- });
+ mock
+ .onGet(/api\/(.*)\/templates\/licenses\/mit/)
+ .replyOnce(200, { content: 'MIT content' });
+ mock
+ .onGet(/api\/(.*)\/templates\/licenses\/testing/)
+ .replyOnce(200, { content: 'testing content' });
});
it('dispatches setFileTemplate if template already has content', done => {
- const template = {
- content: 'already has content',
- };
+ const template = { content: 'already has content' };
testAction(
actions.fetchTemplate,
@@ -270,13 +231,9 @@ describe('IDE file templates actions', () => {
});
it('dispatches success', done => {
- const template = {
- key: 'mit',
- };
+ const template = { key: 'mit' };
- state.selectedTemplateType = {
- key: 'licenses',
- };
+ state.selectedTemplateType = { key: 'licenses' };
testAction(
actions.fetchTemplate,
@@ -289,13 +246,9 @@ describe('IDE file templates actions', () => {
});
it('dispatches success and uses name key for API call', done => {
- const template = {
- name: 'testing',
- };
+ const template = { name: 'testing' };
- state.selectedTemplateType = {
- key: 'licenses',
- };
+ state.selectedTemplateType = { key: 'licenses' };
testAction(
actions.fetchTemplate,
@@ -314,13 +267,9 @@ describe('IDE file templates actions', () => {
});
it('dispatches error', done => {
- const template = {
- name: 'testing',
- };
+ const template = { name: 'testing' };
- state.selectedTemplateType = {
- key: 'licenses',
- };
+ state.selectedTemplateType = { key: 'licenses' };
testAction(
actions.fetchTemplate,
@@ -336,11 +285,9 @@ describe('IDE file templates actions', () => {
describe('setFileTemplate', () => {
it('dispatches changeFileContent', () => {
- const dispatch = jasmine.createSpy('dispatch');
- const commit = jasmine.createSpy('commit');
- const rootGetters = {
- activeFile: { path: 'test' },
- };
+ const dispatch = jest.fn().mockName('dispatch');
+ const commit = jest.fn().mockName('commit');
+ const rootGetters = { activeFile: { path: 'test' } };
actions.setFileTemplate({ dispatch, commit, rootGetters }, { content: 'content' });
@@ -352,11 +299,9 @@ describe('IDE file templates actions', () => {
});
it('commits SET_UPDATE_SUCCESS', () => {
- const dispatch = jasmine.createSpy('dispatch');
- const commit = jasmine.createSpy('commit');
- const rootGetters = {
- activeFile: { path: 'test' },
- };
+ const dispatch = jest.fn().mockName('dispatch');
+ const commit = jest.fn().mockName('commit');
+ const rootGetters = { activeFile: { path: 'test' } };
actions.setFileTemplate({ dispatch, commit, rootGetters }, { content: 'content' });
@@ -366,11 +311,9 @@ describe('IDE file templates actions', () => {
describe('undoFileTemplate', () => {
it('dispatches changeFileContent', () => {
- const dispatch = jasmine.createSpy('dispatch');
- const commit = jasmine.createSpy('commit');
- const rootGetters = {
- activeFile: { path: 'test', raw: 'raw content' },
- };
+ const dispatch = jest.fn().mockName('dispatch');
+ const commit = jest.fn().mockName('commit');
+ const rootGetters = { activeFile: { path: 'test', raw: 'raw content' } };
actions.undoFileTemplate({ dispatch, commit, rootGetters });
@@ -382,11 +325,9 @@ describe('IDE file templates actions', () => {
});
it('commits SET_UPDATE_SUCCESS', () => {
- const dispatch = jasmine.createSpy('dispatch');
- const commit = jasmine.createSpy('commit');
- const rootGetters = {
- activeFile: { path: 'test', raw: 'raw content' },
- };
+ const dispatch = jest.fn().mockName('dispatch');
+ const commit = jest.fn().mockName('commit');
+ const rootGetters = { activeFile: { path: 'test', raw: 'raw content' } };
actions.undoFileTemplate({ dispatch, commit, rootGetters });
@@ -394,18 +335,12 @@ describe('IDE file templates actions', () => {
});
it('dispatches discardFileChanges if file has prevPath', () => {
- const dispatch = jasmine.createSpy('dispatch');
- const rootGetters = {
- activeFile: { path: 'test', prevPath: 'newtest', raw: 'raw content' },
- };
+ const dispatch = jest.fn().mockName('dispatch');
+ const rootGetters = { activeFile: { path: 'test', prevPath: 'newtest', raw: 'raw content' } };
actions.undoFileTemplate({ dispatch, commit() {}, rootGetters });
- expect(dispatch.calls.mostRecent().args).toEqual([
- 'discardFileChanges',
- 'test',
- { root: true },
- ]);
+ expect(dispatch).toHaveBeenCalledWith('discardFileChanges', 'test', { root: true });
});
});
});
diff --git a/spec/javascripts/ide/stores/modules/merge_requests/actions_spec.js b/spec/frontend/ide/stores/modules/merge_requests/actions_spec.js
index 9e2ba1f5ce9..ec472ab418f 100644
--- a/spec/javascripts/ide/stores/modules/merge_requests/actions_spec.js
+++ b/spec/frontend/ide/stores/modules/merge_requests/actions_spec.js
@@ -19,9 +19,7 @@ describe('IDE merge requests actions', () => {
beforeEach(() => {
mockedState = state();
- mockedRootState = {
- currentProjectId: 7,
- };
+ mockedRootState = { currentProjectId: 7 };
mock = new MockAdapter(axios);
});
@@ -54,7 +52,7 @@ describe('IDE merge requests actions', () => {
type: 'setErrorMessage',
payload: {
text: 'Error loading merge requests.',
- action: jasmine.any(Function),
+ action: expect.any(Function),
actionText: 'Please try again',
actionPayload: { type: 'created', search: '' },
},
@@ -71,12 +69,7 @@ describe('IDE merge requests actions', () => {
receiveMergeRequestsSuccess,
mergeRequests,
mockedState,
- [
- {
- type: types.RECEIVE_MERGE_REQUESTS_SUCCESS,
- payload: mergeRequests,
- },
- ],
+ [{ type: types.RECEIVE_MERGE_REQUESTS_SUCCESS, payload: mergeRequests }],
[],
done,
);
@@ -94,36 +87,34 @@ describe('IDE merge requests actions', () => {
});
it('calls API with params', () => {
- const apiSpy = spyOn(axios, 'get').and.callThrough();
-
+ const apiSpy = jest.spyOn(axios, 'get');
fetchMergeRequests(
- { dispatch() {}, state: mockedState, rootState: mockedRootState },
- { type: 'created' },
- );
+ {
+ dispatch() {},
- expect(apiSpy).toHaveBeenCalledWith(jasmine.anything(), {
- params: {
- scope: 'created-by-me',
- state: 'opened',
- search: '',
+ state: mockedState,
+ rootState: mockedRootState,
},
+ { type: 'created' },
+ );
+ expect(apiSpy).toHaveBeenCalledWith(expect.anything(), {
+ params: { scope: 'created-by-me', state: 'opened', search: '' },
});
});
it('calls API with search', () => {
- const apiSpy = spyOn(axios, 'get').and.callThrough();
-
+ const apiSpy = jest.spyOn(axios, 'get');
fetchMergeRequests(
- { dispatch() {}, state: mockedState, rootState: mockedRootState },
- { type: 'created', search: 'testing search' },
- );
+ {
+ dispatch() {},
- expect(apiSpy).toHaveBeenCalledWith(jasmine.anything(), {
- params: {
- scope: 'created-by-me',
- state: 'opened',
- search: 'testing search',
+ state: mockedState,
+ rootState: mockedRootState,
},
+ { type: 'created', search: 'testing search' },
+ );
+ expect(apiSpy).toHaveBeenCalledWith(expect.anything(), {
+ params: { scope: 'created-by-me', state: 'opened', search: 'testing search' },
});
});
@@ -136,10 +127,7 @@ describe('IDE merge requests actions', () => {
[
{ type: 'requestMergeRequests' },
{ type: 'resetMergeRequests' },
- {
- type: 'receiveMergeRequestsSuccess',
- payload: mergeRequests,
- },
+ { type: 'receiveMergeRequestsSuccess', payload: mergeRequests },
],
done,
);
@@ -152,21 +140,19 @@ describe('IDE merge requests actions', () => {
});
it('calls API with project', () => {
- const apiSpy = spyOn(axios, 'get').and.callThrough();
-
+ const apiSpy = jest.spyOn(axios, 'get');
fetchMergeRequests(
- { dispatch() {}, state: mockedState, rootState: mockedRootState },
+ {
+ dispatch() {},
+
+ state: mockedState,
+ rootState: mockedRootState,
+ },
{ type: null, search: 'testing search' },
);
-
expect(apiSpy).toHaveBeenCalledWith(
- jasmine.stringMatching(`projects/${mockedRootState.currentProjectId}/merge_requests`),
- {
- params: {
- state: 'opened',
- search: 'testing search',
- },
- },
+ expect.stringMatching(`projects/${mockedRootState.currentProjectId}/merge_requests`),
+ { params: { state: 'opened', search: 'testing search' } },
);
});
@@ -179,10 +165,7 @@ describe('IDE merge requests actions', () => {
[
{ type: 'requestMergeRequests' },
{ type: 'resetMergeRequests' },
- {
- type: 'receiveMergeRequestsSuccess',
- payload: mergeRequests,
- },
+ { type: 'receiveMergeRequestsSuccess', payload: mergeRequests },
],
done,
);
diff --git a/spec/javascripts/ide/stores/modules/merge_requests/mutations_spec.js b/spec/frontend/ide/stores/modules/merge_requests/mutations_spec.js
index 664d3914564..d33bda3652d 100644
--- a/spec/javascripts/ide/stores/modules/merge_requests/mutations_spec.js
+++ b/spec/frontend/ide/stores/modules/merge_requests/mutations_spec.js
@@ -1,3 +1,4 @@
+import { TEST_HOST } from 'helpers/test_constants';
import state from '~/ide/stores/modules/merge_requests/state';
import mutations from '~/ide/stores/modules/merge_requests/mutations';
import * as types from '~/ide/stores/modules/merge_requests/mutation_types';
@@ -10,7 +11,7 @@ describe('IDE merge requests mutations', () => {
mockedState = state();
});
- describe(types.REQUEST_MERGE_REQUESTS, () => {
+ describe('REQUEST_MERGE_REQUESTS', () => {
it('sets loading to true', () => {
mutations[types.REQUEST_MERGE_REQUESTS](mockedState);
@@ -18,7 +19,7 @@ describe('IDE merge requests mutations', () => {
});
});
- describe(types.RECEIVE_MERGE_REQUESTS_ERROR, () => {
+ describe('RECEIVE_MERGE_REQUESTS_ERROR', () => {
it('sets loading to false', () => {
mutations[types.RECEIVE_MERGE_REQUESTS_ERROR](mockedState);
@@ -26,9 +27,9 @@ describe('IDE merge requests mutations', () => {
});
});
- describe(types.RECEIVE_MERGE_REQUESTS_SUCCESS, () => {
+ describe('RECEIVE_MERGE_REQUESTS_SUCCESS', () => {
it('sets merge requests', () => {
- gon.gitlab_url = gl.TEST_HOST;
+ gon.gitlab_url = TEST_HOST;
mutations[types.RECEIVE_MERGE_REQUESTS_SUCCESS](mockedState, mergeRequests);
expect(mockedState.mergeRequests).toEqual([
@@ -43,7 +44,7 @@ describe('IDE merge requests mutations', () => {
});
});
- describe(types.RESET_MERGE_REQUESTS, () => {
+ describe('RESET_MERGE_REQUESTS', () => {
it('clears merge request array', () => {
mockedState.mergeRequests = ['test'];
diff --git a/spec/javascripts/ide/stores/modules/pane/actions_spec.js b/spec/frontend/ide/stores/modules/pane/actions_spec.js
index 799bc89a0c3..8c0aeaff5b3 100644
--- a/spec/javascripts/ide/stores/modules/pane/actions_spec.js
+++ b/spec/frontend/ide/stores/modules/pane/actions_spec.js
@@ -1,6 +1,6 @@
+import testAction from 'helpers/vuex_action_helper';
import * as actions from '~/ide/stores/modules/pane/actions';
import * as types from '~/ide/stores/modules/pane/mutation_types';
-import testAction from 'spec/helpers/vuex_action_helper';
describe('IDE pane module actions', () => {
const TEST_VIEW = { name: 'test' };
diff --git a/spec/javascripts/ide/stores/modules/pipelines/actions_spec.js b/spec/frontend/ide/stores/modules/pipelines/actions_spec.js
index 0937ee38390..b08d1cd01da 100644
--- a/spec/javascripts/ide/stores/modules/pipelines/actions_spec.js
+++ b/spec/frontend/ide/stores/modules/pipelines/actions_spec.js
@@ -1,5 +1,6 @@
import Visibility from 'visibilityjs';
import MockAdapter from 'axios-mock-adapter';
+import { TEST_HOST } from 'helpers/test_constants';
import axios from '~/lib/utils/axios_utils';
import {
requestLatestPipeline,
@@ -78,7 +79,7 @@ describe('IDE pipelines actions', () => {
type: 'setErrorMessage',
payload: {
text: 'An error occurred whilst fetching the latest pipeline.',
- action: jasmine.any(Function),
+ action: expect.any(Function),
actionText: 'Please try again',
actionPayload: null,
},
@@ -91,38 +92,26 @@ describe('IDE pipelines actions', () => {
});
describe('receiveLatestPipelineSuccess', () => {
- const rootGetters = {
- lastCommit: { id: '123' },
- };
+ const rootGetters = { lastCommit: { id: '123' } };
let commit;
beforeEach(() => {
- commit = jasmine.createSpy('commit');
+ commit = jest.fn().mockName('commit');
});
it('commits pipeline', () => {
receiveLatestPipelineSuccess({ rootGetters, commit }, { pipelines });
-
- expect(commit.calls.argsFor(0)).toEqual([
- types.RECEIVE_LASTEST_PIPELINE_SUCCESS,
- pipelines[0],
- ]);
+ expect(commit).toHaveBeenCalledWith(types.RECEIVE_LASTEST_PIPELINE_SUCCESS, pipelines[0]);
});
it('commits false when there are no pipelines', () => {
receiveLatestPipelineSuccess({ rootGetters, commit }, { pipelines: [] });
-
- expect(commit.calls.argsFor(0)).toEqual([types.RECEIVE_LASTEST_PIPELINE_SUCCESS, false]);
+ expect(commit).toHaveBeenCalledWith(types.RECEIVE_LASTEST_PIPELINE_SUCCESS, false);
});
});
describe('fetchLatestPipeline', () => {
- beforeEach(() => {
- jasmine.clock().install();
- });
-
afterEach(() => {
- jasmine.clock().uninstall();
stopPipelinePolling();
clearEtagPoll();
});
@@ -135,10 +124,10 @@ describe('IDE pipelines actions', () => {
});
it('dispatches request', done => {
- spyOn(axios, 'get').and.callThrough();
- spyOn(Visibility, 'hidden').and.returnValue(false);
+ jest.spyOn(axios, 'get');
+ jest.spyOn(Visibility, 'hidden').mockReturnValue(false);
- const dispatch = jasmine.createSpy('dispatch');
+ const dispatch = jest.fn().mockName('dispatch');
const rootGetters = {
lastCommit: { id: 'abc123def456ghi789jkl' },
currentProject: { path_with_namespace: 'abc/def' },
@@ -146,31 +135,29 @@ describe('IDE pipelines actions', () => {
fetchLatestPipeline({ dispatch, rootGetters });
- expect(dispatch.calls.argsFor(0)).toEqual(['requestLatestPipeline']);
+ expect(dispatch).toHaveBeenCalledWith('requestLatestPipeline');
- jasmine.clock().tick(1000);
+ jest.advanceTimersByTime(1000);
new Promise(resolve => requestAnimationFrame(resolve))
.then(() => {
expect(axios.get).toHaveBeenCalled();
- expect(axios.get.calls.count()).toBe(1);
-
- expect(dispatch.calls.argsFor(1)).toEqual([
+ expect(axios.get).toHaveBeenCalledTimes(1);
+ expect(dispatch).toHaveBeenCalledWith(
'receiveLatestPipelineSuccess',
- jasmine.anything(),
- ]);
+ expect.anything(),
+ );
- jasmine.clock().tick(10000);
+ jest.advanceTimersByTime(10000);
})
.then(() => new Promise(resolve => requestAnimationFrame(resolve)))
.then(() => {
expect(axios.get).toHaveBeenCalled();
- expect(axios.get.calls.count()).toBe(2);
-
- expect(dispatch.calls.argsFor(2)).toEqual([
+ expect(axios.get).toHaveBeenCalledTimes(2);
+ expect(dispatch).toHaveBeenCalledWith(
'receiveLatestPipelineSuccess',
- jasmine.anything(),
- ]);
+ expect.anything(),
+ );
})
.then(done)
.catch(done.fail);
@@ -183,7 +170,7 @@ describe('IDE pipelines actions', () => {
});
it('dispatches error', done => {
- const dispatch = jasmine.createSpy('dispatch');
+ const dispatch = jest.fn().mockName('dispatch');
const rootGetters = {
lastCommit: { id: 'abc123def456ghi789jkl' },
currentProject: { path_with_namespace: 'abc/def' },
@@ -191,14 +178,11 @@ describe('IDE pipelines actions', () => {
fetchLatestPipeline({ dispatch, rootGetters });
- jasmine.clock().tick(1500);
+ jest.advanceTimersByTime(1500);
new Promise(resolve => requestAnimationFrame(resolve))
.then(() => {
- expect(dispatch.calls.argsFor(1)).toEqual([
- 'receiveLatestPipelineError',
- jasmine.anything(),
- ]);
+ expect(dispatch).toHaveBeenCalledWith('receiveLatestPipelineError', expect.anything());
})
.then(done)
.catch(done.fail);
@@ -224,7 +208,7 @@ describe('IDE pipelines actions', () => {
type: 'setErrorMessage',
payload: {
text: 'An error occurred whilst loading the pipelines jobs.',
- action: jasmine.anything(),
+ action: expect.anything(),
actionText: 'Please try again',
actionPayload: { id: 1 },
},
@@ -249,10 +233,7 @@ describe('IDE pipelines actions', () => {
});
describe('fetchJobs', () => {
- const stage = {
- id: 1,
- dropdownPath: `${gl.TEST_HOST}/jobs`,
- };
+ const stage = { id: 1, dropdownPath: `${TEST_HOST}/jobs` };
describe('success', () => {
beforeEach(() => {
@@ -361,7 +342,7 @@ describe('IDE pipelines actions', () => {
type: 'setErrorMessage',
payload: {
text: 'An error occurred whilst fetching the job trace.',
- action: jasmine.any(Function),
+ action: expect.any(Function),
actionText: 'Please try again',
actionPayload: null,
},
@@ -387,15 +368,13 @@ describe('IDE pipelines actions', () => {
describe('fetchJobTrace', () => {
beforeEach(() => {
- mockedState.detailJob = {
- path: `${gl.TEST_HOST}/project/builds`,
- };
+ mockedState.detailJob = { path: `${TEST_HOST}/project/builds` };
});
describe('success', () => {
beforeEach(() => {
- spyOn(axios, 'get').and.callThrough();
- mock.onGet(`${gl.TEST_HOST}/project/builds/trace`).replyOnce(200, { html: 'html' });
+ jest.spyOn(axios, 'get');
+ mock.onGet(`${TEST_HOST}/project/builds/trace`).replyOnce(200, { html: 'html' });
});
it('dispatches request', done => {
@@ -413,9 +392,12 @@ describe('IDE pipelines actions', () => {
});
it('sends get request to correct URL', () => {
- fetchJobTrace({ state: mockedState, dispatch() {} });
+ fetchJobTrace({
+ state: mockedState,
- expect(axios.get).toHaveBeenCalledWith(`${gl.TEST_HOST}/project/builds/trace`, {
+ dispatch() {},
+ });
+ expect(axios.get).toHaveBeenCalledWith(`${TEST_HOST}/project/builds/trace`, {
params: { format: 'json' },
});
});
@@ -423,7 +405,7 @@ describe('IDE pipelines actions', () => {
describe('error', () => {
beforeEach(() => {
- mock.onGet(`${gl.TEST_HOST}/project/builds/trace`).replyOnce(500);
+ mock.onGet(`${TEST_HOST}/project/builds/trace`).replyOnce(500);
});
it('dispatches error', done => {
diff --git a/spec/javascripts/ide/stores/modules/pipelines/mutations_spec.js b/spec/frontend/ide/stores/modules/pipelines/mutations_spec.js
index b558c45f574..3b7f92cfa74 100644
--- a/spec/javascripts/ide/stores/modules/pipelines/mutations_spec.js
+++ b/spec/frontend/ide/stores/modules/pipelines/mutations_spec.js
@@ -10,7 +10,7 @@ describe('IDE pipelines mutations', () => {
mockedState = state();
});
- describe(types.REQUEST_LATEST_PIPELINE, () => {
+ describe('REQUEST_LATEST_PIPELINE', () => {
it('sets loading to true', () => {
mutations[types.REQUEST_LATEST_PIPELINE](mockedState);
@@ -18,7 +18,7 @@ describe('IDE pipelines mutations', () => {
});
});
- describe(types.RECEIVE_LASTEST_PIPELINE_ERROR, () => {
+ describe('RECEIVE_LASTEST_PIPELINE_ERROR', () => {
it('sets loading to false', () => {
mutations[types.RECEIVE_LASTEST_PIPELINE_ERROR](mockedState);
@@ -26,7 +26,7 @@ describe('IDE pipelines mutations', () => {
});
});
- describe(types.RECEIVE_LASTEST_PIPELINE_SUCCESS, () => {
+ describe('RECEIVE_LASTEST_PIPELINE_SUCCESS', () => {
const itSetsPipelineLoadingStates = () => {
it('sets has loaded to true', () => {
expect(mockedState.hasLoadedPipeline).toBe(true);
@@ -52,7 +52,7 @@ describe('IDE pipelines mutations', () => {
id: '51',
path: 'test',
commit: { id: '123' },
- details: { status: jasmine.any(Object) },
+ details: { status: expect.any(Object) },
yamlError: undefined,
});
});
@@ -95,12 +95,9 @@ describe('IDE pipelines mutations', () => {
});
});
- describe(types.REQUEST_JOBS, () => {
+ describe('REQUEST_JOBS', () => {
beforeEach(() => {
- mockedState.stages = stages.map((stage, i) => ({
- ...stage,
- id: i,
- }));
+ mockedState.stages = stages.map((stage, i) => ({ ...stage, id: i }));
});
it('sets isLoading on stage', () => {
@@ -110,12 +107,9 @@ describe('IDE pipelines mutations', () => {
});
});
- describe(types.RECEIVE_JOBS_ERROR, () => {
+ describe('RECEIVE_JOBS_ERROR', () => {
beforeEach(() => {
- mockedState.stages = stages.map((stage, i) => ({
- ...stage,
- id: i,
- }));
+ mockedState.stages = stages.map((stage, i) => ({ ...stage, id: i }));
});
it('sets isLoading on stage after error', () => {
@@ -125,29 +119,22 @@ describe('IDE pipelines mutations', () => {
});
});
- describe(types.RECEIVE_JOBS_SUCCESS, () => {
+ describe('RECEIVE_JOBS_SUCCESS', () => {
let data;
beforeEach(() => {
- mockedState.stages = stages.map((stage, i) => ({
- ...stage,
- id: i,
- }));
+ mockedState.stages = stages.map((stage, i) => ({ ...stage, id: i }));
- data = {
- latest_statuses: [...jobs],
- };
+ data = { latest_statuses: [...jobs] };
});
it('updates loading', () => {
mutations[types.RECEIVE_JOBS_SUCCESS](mockedState, { id: mockedState.stages[0].id, data });
-
expect(mockedState.stages[0].isLoading).toBe(false);
});
it('sets jobs on stage', () => {
mutations[types.RECEIVE_JOBS_SUCCESS](mockedState, { id: mockedState.stages[0].id, data });
-
expect(mockedState.stages[0].jobs.length).toBe(jobs.length);
expect(mockedState.stages[0].jobs).toEqual(
jobs.map(job => ({
@@ -164,13 +151,9 @@ describe('IDE pipelines mutations', () => {
});
});
- describe(types.TOGGLE_STAGE_COLLAPSE, () => {
+ describe('TOGGLE_STAGE_COLLAPSE', () => {
beforeEach(() => {
- mockedState.stages = stages.map((stage, i) => ({
- ...stage,
- id: i,
- isCollapsed: false,
- }));
+ mockedState.stages = stages.map((stage, i) => ({ ...stage, id: i, isCollapsed: false }));
});
it('toggles collapsed state', () => {
@@ -184,7 +167,7 @@ describe('IDE pipelines mutations', () => {
});
});
- describe(types.SET_DETAIL_JOB, () => {
+ describe('SET_DETAIL_JOB', () => {
it('sets detail job', () => {
mutations[types.SET_DETAIL_JOB](mockedState, jobs[0]);
@@ -192,7 +175,7 @@ describe('IDE pipelines mutations', () => {
});
});
- describe(types.REQUEST_JOB_TRACE, () => {
+ describe('REQUEST_JOB_TRACE', () => {
beforeEach(() => {
mockedState.detailJob = { ...jobs[0] };
});
@@ -204,7 +187,7 @@ describe('IDE pipelines mutations', () => {
});
});
- describe(types.RECEIVE_JOB_TRACE_ERROR, () => {
+ describe('RECEIVE_JOB_TRACE_ERROR', () => {
beforeEach(() => {
mockedState.detailJob = { ...jobs[0], isLoading: true };
});
@@ -216,14 +199,13 @@ describe('IDE pipelines mutations', () => {
});
});
- describe(types.RECEIVE_JOB_TRACE_SUCCESS, () => {
+ describe('RECEIVE_JOB_TRACE_SUCCESS', () => {
beforeEach(() => {
mockedState.detailJob = { ...jobs[0], isLoading: true };
});
it('sets output on detail job', () => {
mutations[types.RECEIVE_JOB_TRACE_SUCCESS](mockedState, { html: 'html' });
-
expect(mockedState.detailJob.output).toBe('html');
expect(mockedState.detailJob.isLoading).toBe(false);
});
diff --git a/spec/javascripts/ide/stores/mutations/file_spec.js b/spec/frontend/ide/stores/mutations/file_spec.js
index 7c46bf55318..91506c1b46c 100644
--- a/spec/javascripts/ide/stores/mutations/file_spec.js
+++ b/spec/frontend/ide/stores/mutations/file_spec.js
@@ -9,10 +9,7 @@ describe('IDE store file mutations', () => {
beforeEach(() => {
localState = state();
- localFile = {
- ...file(),
- type: 'blob',
- };
+ localFile = { ...file(), type: 'blob' };
localState.entries[localFile.path] = localFile;
});
@@ -28,11 +25,7 @@ describe('IDE store file mutations', () => {
});
it('sets pending tab as not active', () => {
- localState.openFiles.push({
- ...localFile,
- pending: true,
- active: true,
- });
+ localState.openFiles.push({ ...localFile, pending: true, active: true });
mutations.SET_FILE_ACTIVE(localState, {
path: localFile.path,
@@ -132,7 +125,7 @@ describe('IDE store file mutations', () => {
localFile,
].forEach(f => {
expect(f).toEqual(
- jasmine.objectContaining({
+ expect.objectContaining({
path,
name,
raw: null,
@@ -154,10 +147,7 @@ describe('IDE store file mutations', () => {
});
it('adds raw data to open pending file', () => {
- localState.openFiles.push({
- ...localFile,
- pending: true,
- });
+ localState.openFiles.push({ ...localFile, pending: true });
mutations.SET_FILE_RAW_DATA(localState, {
file: localFile,
@@ -168,11 +158,7 @@ describe('IDE store file mutations', () => {
});
it('does not add raw data to open pending tempFile file', () => {
- localState.openFiles.push({
- ...localFile,
- pending: true,
- tempFile: true,
- });
+ localState.openFiles.push({ ...localFile, pending: true, tempFile: true });
mutations.SET_FILE_RAW_DATA(localState, {
file: localFile,
@@ -234,7 +220,9 @@ describe('IDE store file mutations', () => {
it('sets file mr change', () => {
mutations.SET_FILE_MERGE_REQUEST_CHANGE(localState, {
file: localFile,
- mrChange: { diff: 'ABC' },
+ mrChange: {
+ diff: 'ABC',
+ },
});
expect(localFile.mrChange.diff).toBe('ABC');
@@ -311,12 +299,7 @@ describe('IDE store file mutations', () => {
mutations.DISCARD_FILE_CHANGES(localState, localFile.path);
- expect(localState.trees['gitlab-ce/master'].tree).toEqual([
- {
- ...localFile,
- deleted: false,
- },
- ]);
+ expect(localState.trees['gitlab-ce/master'].tree).toEqual([{ ...localFile, deleted: false }]);
});
it('adds to parent tree if deleted', () => {
@@ -328,12 +311,7 @@ describe('IDE store file mutations', () => {
mutations.DISCARD_FILE_CHANGES(localState, localFile.path);
- expect(localState.entries.parentPath.tree).toEqual([
- {
- ...localFile,
- deleted: false,
- },
- ]);
+ expect(localState.entries.parentPath.tree).toEqual([{ ...localFile, deleted: false }]);
});
});
@@ -379,11 +357,7 @@ describe('IDE store file mutations', () => {
let f;
beforeEach(() => {
- f = {
- ...file(),
- type: 'blob',
- staged: true,
- };
+ f = { ...file(), type: 'blob', staged: true };
localState.stagedFiles.push(f);
localState.changedFiles.push(f);
@@ -422,19 +396,16 @@ describe('IDE store file mutations', () => {
describe('ADD_PENDING_TAB', () => {
beforeEach(() => {
- const f = {
- ...file('openFile'),
- path: 'openFile',
- active: true,
- opened: true,
- };
+ const f = { ...file('openFile'), path: 'openFile', active: true, opened: true };
localState.entries[f.path] = f;
localState.openFiles.push(f);
});
it('adds file into openFiles as pending', () => {
- mutations.ADD_PENDING_TAB(localState, { file: localFile });
+ mutations.ADD_PENDING_TAB(localState, {
+ file: localFile,
+ });
expect(localState.openFiles.length).toBe(1);
expect(localState.openFiles[0].pending).toBe(true);
@@ -445,11 +416,15 @@ describe('IDE store file mutations', () => {
const newFile = file('test');
localState.entries[newFile.path] = newFile;
- mutations.ADD_PENDING_TAB(localState, { file: localFile });
+ mutations.ADD_PENDING_TAB(localState, {
+ file: localFile,
+ });
expect(localState.openFiles.length).toBe(1);
- mutations.ADD_PENDING_TAB(localState, { file: file('test') });
+ mutations.ADD_PENDING_TAB(localState, {
+ file: file('test'),
+ });
expect(localState.openFiles.length).toBe(1);
expect(localState.openFiles[0].name).toBe('test');
diff --git a/spec/javascripts/ide/stores/mutations/tree_spec.js b/spec/frontend/ide/stores/mutations/tree_spec.js
index 7f9c978aa46..a4b98aa9d5a 100644
--- a/spec/javascripts/ide/stores/mutations/tree_spec.js
+++ b/spec/frontend/ide/stores/mutations/tree_spec.js
@@ -51,7 +51,9 @@ describe('Multi-file store tree mutations', () => {
});
it('keeps loading state', () => {
- mutations.CREATE_TREE(localState, { treePath: 'project/master' });
+ mutations.CREATE_TREE(localState, {
+ treePath: 'project/master',
+ });
mutations.SET_DIRECTORY_DATA(localState, {
data,
treePath: 'project/master',
diff --git a/spec/javascripts/ide/stores/mutations_spec.js b/spec/frontend/ide/stores/mutations_spec.js
index 7dd5d323f69..eb89c92914a 100644
--- a/spec/javascripts/ide/stores/mutations_spec.js
+++ b/spec/frontend/ide/stores/mutations_spec.js
@@ -1,3 +1,4 @@
+import { TEST_HOST } from 'helpers/test_constants';
import mutations from '~/ide/stores/mutations';
import state from '~/ide/stores/state';
import { file } from '../helpers';
@@ -25,21 +26,30 @@ describe('Multi-file store mutations', () => {
describe('TOGGLE_LOADING', () => {
it('toggles loading of entry', () => {
- mutations.TOGGLE_LOADING(localState, { entry });
+ mutations.TOGGLE_LOADING(localState, {
+ entry,
+ });
expect(entry.loading).toBeTruthy();
- mutations.TOGGLE_LOADING(localState, { entry });
+ mutations.TOGGLE_LOADING(localState, {
+ entry,
+ });
expect(entry.loading).toBeFalsy();
});
it('toggles loading of entry and sets specific value', () => {
- mutations.TOGGLE_LOADING(localState, { entry });
+ mutations.TOGGLE_LOADING(localState, {
+ entry,
+ });
expect(entry.loading).toBeTruthy();
- mutations.TOGGLE_LOADING(localState, { entry, forceValue: true });
+ mutations.TOGGLE_LOADING(localState, {
+ entry,
+ forceValue: true,
+ });
expect(entry.loading).toBeTruthy();
});
@@ -123,11 +133,7 @@ describe('Multi-file store mutations', () => {
mutations.CREATE_TMP_ENTRY(localState, {
data: {
entries: {
- test: {
- ...tmpFile,
- tempFile: true,
- changed: true,
- },
+ test: { ...tmpFile, tempFile: true, changed: true },
},
treeList: [tmpFile],
},
@@ -141,18 +147,11 @@ describe('Multi-file store mutations', () => {
it('marks entry as replacing previous entry if the old one has been deleted', () => {
const tmpFile = file('test');
- localState.entries.test = {
- ...tmpFile,
- deleted: true,
- };
+ localState.entries.test = { ...tmpFile, deleted: true };
mutations.CREATE_TMP_ENTRY(localState, {
data: {
entries: {
- test: {
- ...tmpFile,
- tempFile: true,
- changed: true,
- },
+ test: { ...tmpFile, tempFile: true, changed: true },
},
treeList: [tmpFile],
},
@@ -167,21 +166,23 @@ describe('Multi-file store mutations', () => {
describe('UPDATE_TEMP_FLAG', () => {
beforeEach(() => {
- localState.entries.test = {
- ...file(),
- tempFile: true,
- changed: true,
- };
+ localState.entries.test = { ...file(), tempFile: true, changed: true };
});
it('updates tempFile flag', () => {
- mutations.UPDATE_TEMP_FLAG(localState, { path: 'test', tempFile: false });
+ mutations.UPDATE_TEMP_FLAG(localState, {
+ path: 'test',
+ tempFile: false,
+ });
expect(localState.entries.test.tempFile).toBe(false);
});
it('updates changed flag', () => {
- mutations.UPDATE_TEMP_FLAG(localState, { path: 'test', tempFile: false });
+ mutations.UPDATE_TEMP_FLAG(localState, {
+ path: 'test',
+ tempFile: false,
+ });
expect(localState.entries.test.changed).toBe(false);
});
@@ -303,23 +304,28 @@ describe('Multi-file store mutations', () => {
const f = {
...file('test'),
prevPath: 'testing-123',
- rawPath: `${gl.TEST_HOST}/testing-123`,
- permalink: `${gl.TEST_HOST}/testing-123`,
- commitsPath: `${gl.TEST_HOST}/testing-123`,
- blamePath: `${gl.TEST_HOST}/testing-123`,
+ rawPath: `${TEST_HOST}/testing-123`,
+ permalink: `${TEST_HOST}/testing-123`,
+ commitsPath: `${TEST_HOST}/testing-123`,
+ blamePath: `${TEST_HOST}/testing-123`,
replaces: true,
};
localState.entries.test = f;
localState.changedFiles.push(f);
- mutations.UPDATE_FILE_AFTER_COMMIT(localState, { file: f, lastCommit: { commit: {} } });
+ mutations.UPDATE_FILE_AFTER_COMMIT(localState, {
+ file: f,
+ lastCommit: {
+ commit: {},
+ },
+ });
expect(f).toEqual(
- jasmine.objectContaining({
- rawPath: `${gl.TEST_HOST}/test`,
- permalink: `${gl.TEST_HOST}/test`,
- commitsPath: `${gl.TEST_HOST}/test`,
- blamePath: `${gl.TEST_HOST}/test`,
+ expect.objectContaining({
+ rawPath: `${TEST_HOST}/test`,
+ permalink: `${TEST_HOST}/test`,
+ commitsPath: `${TEST_HOST}/test`,
+ blamePath: `${TEST_HOST}/test`,
replaces: false,
prevId: undefined,
prevPath: undefined,
@@ -335,7 +341,10 @@ describe('Multi-file store mutations', () => {
it('sets entryModal', () => {
localState.entries.testPath = file();
- mutations.OPEN_NEW_ENTRY_MODAL(localState, { type: 'test', path: 'testPath' });
+ mutations.OPEN_NEW_ENTRY_MODAL(localState, {
+ type: 'test',
+ path: 'testPath',
+ });
expect(localState.entryModal).toEqual({
type: 'test',
@@ -348,7 +357,9 @@ describe('Multi-file store mutations', () => {
describe('RENAME_ENTRY', () => {
beforeEach(() => {
localState.trees = {
- 'gitlab-ce/master': { tree: [] },
+ 'gitlab-ce/master': {
+ tree: [],
+ },
};
localState.currentProjectId = 'gitlab-ce';
localState.currentBranchId = 'master';
@@ -365,7 +376,7 @@ describe('Multi-file store mutations', () => {
});
expect(localState.entries).toEqual({
- newPath: jasmine.objectContaining({
+ newPath: expect.objectContaining({
path: 'newPath',
prevPath: 'oldPath',
}),
@@ -386,7 +397,7 @@ describe('Multi-file store mutations', () => {
});
expect(localState.entries).toEqual({
- newestPath: jasmine.objectContaining({
+ newestPath: expect.objectContaining({
path: 'newestPath',
prevPath: 'oldPath',
}),
@@ -396,10 +407,7 @@ describe('Multi-file store mutations', () => {
it('correctly handles the same entry within a consecutively renamed folder', () => {
const oldPath = file('root-folder/oldPath', 'root-folder/oldPath', 'blob');
localState.entries = {
- 'root-folder': {
- ...file('root-folder', 'root-folder', 'tree'),
- tree: [oldPath],
- },
+ 'root-folder': { ...file('root-folder', 'root-folder', 'tree'), tree: [oldPath] },
'root-folder/oldPath': oldPath,
};
Object.assign(localState.entries['root-folder/oldPath'], {
@@ -422,10 +430,10 @@ describe('Multi-file store mutations', () => {
});
expect(localState.entries).toEqual({
- 'root-folder': jasmine.objectContaining({
+ 'root-folder': expect.objectContaining({
path: 'root-folder',
}),
- 'simply-renamed/oldPath': jasmine.objectContaining({
+ 'simply-renamed/oldPath': expect.objectContaining({
path: 'simply-renamed/oldPath',
prevPath: 'root-folder/oldPath',
}),
@@ -450,8 +458,7 @@ describe('Multi-file store mutations', () => {
path: 'newPath',
name: 'newPath',
url: `project/-/newPath`,
- key: jasmine.stringMatching('newPath'),
-
+ key: expect.stringMatching('newPath'),
prevId: 'oldPath',
prevName: 'oldPath',
prevPath: 'oldPath',
@@ -473,13 +480,13 @@ describe('Multi-file store mutations', () => {
});
expect(localState.entries.newPath).not.toEqual(
- jasmine.objectContaining({
- prevId: jasmine.anything(),
- prevName: jasmine.anything(),
- prevPath: jasmine.anything(),
- prevUrl: jasmine.anything(),
- prevKey: jasmine.anything(),
- prevParentPath: jasmine.anything(),
+ expect.objectContaining({
+ prevId: expect.anything(),
+ prevName: expect.anything(),
+ prevPath: expect.anything(),
+ prevUrl: expect.anything(),
+ prevKey: expect.anything(),
+ prevParentPath: expect.anything(),
}),
);
});
@@ -487,10 +494,7 @@ describe('Multi-file store mutations', () => {
it('properly handles files with spaces in name', () => {
const path = 'my fancy path';
const newPath = 'new path';
- const oldEntry = {
- ...file(path, path, 'blob'),
- url: `project/-/${encodeURI(path)}`,
- };
+ const oldEntry = { ...file(path, path, 'blob'), url: `project/-/${encodeURI(path)}` };
localState.entries[path] = oldEntry;
@@ -507,8 +511,7 @@ describe('Multi-file store mutations', () => {
path: newPath,
name: newPath,
url: `project/-/new%20path`,
- key: jasmine.stringMatching(newPath),
-
+ key: expect.stringMatching(newPath),
prevId: path,
prevName: path,
prevPath: path,
@@ -540,7 +543,11 @@ describe('Multi-file store mutations', () => {
const alpha = file('alpha', 'alpha', 'blob');
const beta = file('beta', 'beta', 'blob');
const gamma = file('gamma', 'gamma', 'blob');
- localState.entries = { alpha, beta, gamma };
+ localState.entries = {
+ alpha,
+ beta,
+ gamma,
+ };
localState.trees['gitlab-ce/master'].tree = [alpha, beta, gamma];
@@ -552,9 +559,13 @@ describe('Multi-file store mutations', () => {
});
expect(localState.trees['gitlab-ce/master'].tree).toEqual([
- jasmine.objectContaining({ name: 'beta' }),
- jasmine.objectContaining({ name: 'gamma' }),
- jasmine.objectContaining({
+ expect.objectContaining({
+ name: 'beta',
+ }),
+ expect.objectContaining({
+ name: 'gamma',
+ }),
+ expect.objectContaining({
path: 'theta',
name: 'theta',
}),
@@ -570,23 +581,26 @@ describe('Multi-file store mutations', () => {
openFiles: [localState.entries.oldPath],
});
- mutations.RENAME_ENTRY(localState, { path: 'oldPath', name: 'newPath' });
+ mutations.RENAME_ENTRY(localState, {
+ path: 'oldPath',
+ name: 'newPath',
+ });
expect(localState.openFiles.length).toBe(1);
expect(localState.openFiles[0].path).toBe('newPath');
});
it('does not add renamed entry to changedFiles', () => {
- mutations.RENAME_ENTRY(localState, { path: 'oldPath', name: 'newPath' });
+ mutations.RENAME_ENTRY(localState, {
+ path: 'oldPath',
+ name: 'newPath',
+ });
expect(localState.changedFiles.length).toBe(0);
});
it('updates existing changedFiles entry with the renamed one', () => {
- const origFile = {
- ...file('oldPath', 'oldPath', 'blob'),
- content: 'Foo',
- };
+ const origFile = { ...file('oldPath', 'oldPath', 'blob'), content: 'Foo' };
Object.assign(localState, {
changedFiles: [origFile],
@@ -595,10 +609,13 @@ describe('Multi-file store mutations', () => {
oldPath: origFile,
});
- mutations.RENAME_ENTRY(localState, { path: 'oldPath', name: 'newPath' });
+ mutations.RENAME_ENTRY(localState, {
+ path: 'oldPath',
+ name: 'newPath',
+ });
expect(localState.changedFiles).toEqual([
- jasmine.objectContaining({
+ expect.objectContaining({
path: 'newPath',
content: 'Foo',
}),
@@ -613,13 +630,19 @@ describe('Multi-file store mutations', () => {
{},
);
- mutations.RENAME_ENTRY(localState, { path: 'oldPath', name: 'newPath' });
+ mutations.RENAME_ENTRY(localState, {
+ path: 'oldPath',
+ name: 'newPath',
+ });
- expect(localState.entries.newPath).toEqual(jasmine.objectContaining(expectedObj));
+ expect(localState.entries.newPath).toEqual(expect.objectContaining(expectedObj));
- mutations.RENAME_ENTRY(localState, { path: 'newPath', name: 'newer' });
+ mutations.RENAME_ENTRY(localState, {
+ path: 'newPath',
+ name: 'newer',
+ });
- expect(localState.entries.newer).toEqual(jasmine.objectContaining(expectedObj));
+ expect(localState.entries.newer).toEqual(expect.objectContaining(expectedObj));
});
describe('renaming back to original', () => {
@@ -638,12 +661,16 @@ describe('Multi-file store mutations', () => {
renamed: renamedEntry,
};
- mutations.RENAME_ENTRY(localState, { path: 'renamed', name: 'orig', parentPath: 'lorem' });
+ mutations.RENAME_ENTRY(localState, {
+ path: 'renamed',
+ name: 'orig',
+ parentPath: 'lorem',
+ });
});
it('renames entry and clears prev properties', () => {
expect(localState.entries).toEqual({
- 'lorem/orig': jasmine.objectContaining({
+ 'lorem/orig': expect.objectContaining({
id: 'lorem/orig',
path: 'lorem/orig',
name: 'orig',
@@ -672,7 +699,10 @@ describe('Multi-file store mutations', () => {
it('sets properly constucted key while preserving the original one', () => {
const key = 'oldPath.txt-blob-oldPath.txt';
localState.entries['oldPath.txt'].key = key;
- mutations.RENAME_ENTRY(localState, { path: 'oldPath.txt', name: 'newPath.md' });
+ mutations.RENAME_ENTRY(localState, {
+ path: 'oldPath.txt',
+ name: 'newPath.md',
+ });
expect(localState.entries['newPath.md'].key).toBe('newPath.md-blob-newPath.md');
expect(localState.entries['newPath.md'].prevKey).toBe(key);
@@ -680,14 +710,20 @@ describe('Multi-file store mutations', () => {
it('correctly updates key for an entry without an extension', () => {
localState.entries.oldPath.key = 'oldPath-blob-oldPath';
- mutations.RENAME_ENTRY(localState, { path: 'oldPath', name: 'newPath.md' });
+ mutations.RENAME_ENTRY(localState, {
+ path: 'oldPath',
+ name: 'newPath.md',
+ });
expect(localState.entries['newPath.md'].key).toBe('newPath.md-blob-newPath.md');
});
it('correctly updates key when new name does not have an extension', () => {
localState.entries['oldPath.txt'].key = 'oldPath.txt-blob-oldPath.txt';
- mutations.RENAME_ENTRY(localState, { path: 'oldPath.txt', name: 'newPath' });
+ mutations.RENAME_ENTRY(localState, {
+ path: 'oldPath.txt',
+ name: 'newPath',
+ });
expect(localState.entries.newPath.key).toBe('newPath-blob-newPath');
});
diff --git a/spec/javascripts/ide/stores/utils_spec.js b/spec/frontend/ide/stores/utils_spec.js
index 37290864e3d..90f2644de62 100644
--- a/spec/javascripts/ide/stores/utils_spec.js
+++ b/spec/frontend/ide/stores/utils_spec.js
@@ -104,21 +104,9 @@ describe('Multi-file store utils', () => {
base64: true,
lastCommitSha: '123456789',
},
- {
- ...file('deletedFile'),
- path: 'deletedFile',
- deleted: true,
- },
- {
- ...file('renamedFile'),
- path: 'renamedFile',
- prevPath: 'prevPath',
- },
- {
- ...file('replacingFile'),
- path: 'replacingFile',
- replaces: true,
- },
+ { ...file('deletedFile'), path: 'deletedFile', deleted: true },
+ { ...file('renamedFile'), path: 'renamedFile', prevPath: 'prevPath' },
+ { ...file('replacingFile'), path: 'replacingFile', replaces: true },
],
currentBranchId: 'master',
};
@@ -237,15 +225,27 @@ describe('Multi-file store utils', () => {
describe('commitActionForFile', () => {
it('returns deleted for deleted file', () => {
- expect(utils.commitActionForFile({ deleted: true })).toBe(commitActionTypes.delete);
+ expect(
+ utils.commitActionForFile({
+ deleted: true,
+ }),
+ ).toBe(commitActionTypes.delete);
});
it('returns create for tempFile', () => {
- expect(utils.commitActionForFile({ tempFile: true })).toBe(commitActionTypes.create);
+ expect(
+ utils.commitActionForFile({
+ tempFile: true,
+ }),
+ ).toBe(commitActionTypes.create);
});
it('returns move for moved file', () => {
- expect(utils.commitActionForFile({ prevPath: 'test' })).toBe(commitActionTypes.move);
+ expect(
+ utils.commitActionForFile({
+ prevPath: 'test',
+ }),
+ ).toBe(commitActionTypes.move);
});
it('returns update by default', () => {
@@ -341,12 +341,7 @@ describe('Multi-file store utils', () => {
fromTree[0].tree.push({
...file('alpha'),
path: 'foo/alpha',
- tree: [
- {
- ...file('beta.md'),
- path: 'foo/alpha/beta.md',
- },
- ],
+ tree: [{ ...file('beta.md'), path: 'foo/alpha/beta.md' }],
});
toTree.push({
@@ -355,12 +350,7 @@ describe('Multi-file store utils', () => {
{
...file('alpha'),
path: 'foo/alpha',
- tree: [
- {
- ...file('gamma.md'),
- path: 'foo/alpha/gamma.md',
- },
- ],
+ tree: [{ ...file('gamma.md'), path: 'foo/alpha/gamma.md' }],
},
],
});
@@ -381,12 +371,7 @@ describe('Multi-file store utils', () => {
fromTree[0].tree.push({
...file('alpha'),
path: 'foo/alpha',
- tree: [
- {
- ...file('beta.md'),
- path: 'foo/alpha/beta.md',
- },
- ],
+ tree: [{ ...file('beta.md'), path: 'foo/alpha/beta.md' }],
});
toTree.push({
@@ -395,12 +380,7 @@ describe('Multi-file store utils', () => {
{
...file('alpha'),
path: 'foo/alpha',
- tree: [
- {
- ...file('gamma.md'),
- path: 'foo/alpha/gamma.md',
- },
- ],
+ tree: [{ ...file('gamma.md'), path: 'foo/alpha/gamma.md' }],
},
],
});
@@ -415,14 +395,6 @@ describe('Multi-file store utils', () => {
});
});
- describe('escapeFileUrl', () => {
- it('encodes URL excluding the slashes', () => {
- expect(utils.escapeFileUrl('/foo-bar/file.md')).toBe('/foo-bar/file.md');
- expect(utils.escapeFileUrl('foo bar/file.md')).toBe('foo%20bar/file.md');
- expect(utils.escapeFileUrl('foo/bar/file.md')).toBe('foo/bar/file.md');
- });
- });
-
describe('swapInStateArray', () => {
let localState;
@@ -431,10 +403,7 @@ describe('Multi-file store utils', () => {
});
it('swaps existing entry with a new one', () => {
- const file1 = {
- ...file('old'),
- key: 'foo',
- };
+ const file1 = { ...file('old'), key: 'foo' };
const file2 = file('new');
const arr = [file1];
@@ -511,8 +480,12 @@ describe('Multi-file store utils', () => {
expect(branchInfo.tree.length).toBe(2);
expect(branchInfo.tree).toEqual([
- jasmine.objectContaining({ name: 'newPath' }),
- jasmine.objectContaining({ name: 'oldPath' }),
+ expect.objectContaining({
+ name: 'newPath',
+ }),
+ expect.objectContaining({
+ name: 'oldPath',
+ }),
]);
});
@@ -521,7 +494,9 @@ describe('Multi-file store utils', () => {
expect(localState.entries.parentPath.tree.length).toBe(1);
expect(localState.entries.parentPath.tree).toEqual([
- jasmine.objectContaining({ name: 'newPath' }),
+ expect.objectContaining({
+ name: 'newPath',
+ }),
]);
localState.entries.parentPath.tree = [localState.entries.oldPath];
@@ -530,8 +505,12 @@ describe('Multi-file store utils', () => {
expect(localState.entries.parentPath.tree.length).toBe(2);
expect(localState.entries.parentPath.tree).toEqual([
- jasmine.objectContaining({ name: 'newPath' }),
- jasmine.objectContaining({ name: 'oldPath' }),
+ expect.objectContaining({
+ name: 'newPath',
+ }),
+ expect.objectContaining({
+ name: 'oldPath',
+ }),
]);
});
});
@@ -542,11 +521,19 @@ describe('Multi-file store utils', () => {
utils.swapInParentTreeWithSorting(localState, localState.entries.oldPath.key, 'newPath');
- expect(branchInfo.tree).toEqual([jasmine.objectContaining({ name: 'newPath' })]);
+ expect(branchInfo.tree).toEqual([
+ expect.objectContaining({
+ name: 'newPath',
+ }),
+ ]);
utils.swapInParentTreeWithSorting(localState, localState.entries.newPath.key, 'oldPath');
- expect(branchInfo.tree).toEqual([jasmine.objectContaining({ name: 'oldPath' })]);
+ expect(branchInfo.tree).toEqual([
+ expect.objectContaining({
+ name: 'oldPath',
+ }),
+ ]);
});
it('sorts tree after swapping the entries', () => {
@@ -554,32 +541,55 @@ describe('Multi-file store utils', () => {
const beta = file('beta', 'beta', 'blob');
const gamma = file('gamma', 'gamma', 'blob');
const theta = file('theta', 'theta', 'blob');
- localState.entries = { alpha, beta, gamma, theta };
+ localState.entries = {
+ alpha,
+ beta,
+ gamma,
+ theta,
+ };
branchInfo.tree = [alpha, beta, gamma];
utils.swapInParentTreeWithSorting(localState, alpha.key, 'theta');
expect(branchInfo.tree).toEqual([
- jasmine.objectContaining({ name: 'beta' }),
- jasmine.objectContaining({ name: 'gamma' }),
- jasmine.objectContaining({ name: 'theta' }),
+ expect.objectContaining({
+ name: 'beta',
+ }),
+ expect.objectContaining({
+ name: 'gamma',
+ }),
+ expect.objectContaining({
+ name: 'theta',
+ }),
]);
utils.swapInParentTreeWithSorting(localState, gamma.key, 'alpha');
expect(branchInfo.tree).toEqual([
- jasmine.objectContaining({ name: 'alpha' }),
- jasmine.objectContaining({ name: 'beta' }),
- jasmine.objectContaining({ name: 'theta' }),
+ expect.objectContaining({
+ name: 'alpha',
+ }),
+ expect.objectContaining({
+ name: 'beta',
+ }),
+ expect.objectContaining({
+ name: 'theta',
+ }),
]);
utils.swapInParentTreeWithSorting(localState, beta.key, 'gamma');
expect(branchInfo.tree).toEqual([
- jasmine.objectContaining({ name: 'alpha' }),
- jasmine.objectContaining({ name: 'gamma' }),
- jasmine.objectContaining({ name: 'theta' }),
+ expect.objectContaining({
+ name: 'alpha',
+ }),
+ expect.objectContaining({
+ name: 'gamma',
+ }),
+ expect.objectContaining({
+ name: 'theta',
+ }),
]);
});
});
@@ -587,11 +597,26 @@ describe('Multi-file store utils', () => {
describe('cleanTrailingSlash', () => {
[
- { input: '', output: '' },
- { input: 'abc', output: 'abc' },
- { input: 'abc/', output: 'abc' },
- { input: 'abc/def', output: 'abc/def' },
- { input: 'abc/def/', output: 'abc/def' },
+ {
+ input: '',
+ output: '',
+ },
+ {
+ input: 'abc',
+ output: 'abc',
+ },
+ {
+ input: 'abc/',
+ output: 'abc',
+ },
+ {
+ input: 'abc/def',
+ output: 'abc/def',
+ },
+ {
+ input: 'abc/def/',
+ output: 'abc/def',
+ },
].forEach(({ input, output }) => {
it(`cleans trailing slash from string "${input}"`, () => {
expect(utils.cleanTrailingSlash(input)).toEqual(output);
@@ -601,13 +626,34 @@ describe('Multi-file store utils', () => {
describe('pathsAreEqual', () => {
[
- { args: ['abc', 'abc'], output: true },
- { args: ['abc', 'def'], output: false },
- { args: ['abc/', 'abc'], output: true },
- { args: ['abc/abc', 'abc'], output: false },
- { args: ['/', ''], output: true },
- { args: ['', '/'], output: true },
- { args: [false, '/'], output: true },
+ {
+ args: ['abc', 'abc'],
+ output: true,
+ },
+ {
+ args: ['abc', 'def'],
+ output: false,
+ },
+ {
+ args: ['abc/', 'abc'],
+ output: true,
+ },
+ {
+ args: ['abc/abc', 'abc'],
+ output: false,
+ },
+ {
+ args: ['/', ''],
+ output: true,
+ },
+ {
+ args: ['', '/'],
+ output: true,
+ },
+ {
+ args: [false, '/'],
+ output: true,
+ },
].forEach(({ args, output }) => {
it(`cleans and tests equality (${JSON.stringify(args)})`, () => {
expect(utils.pathsAreEqual(...args)).toEqual(output);
@@ -618,10 +664,22 @@ describe('Multi-file store utils', () => {
describe('addFinalNewlineIfNeeded', () => {
it('adds a newline if it doesnt already exist', () => {
[
- { input: 'some text', output: 'some text\n' },
- { input: 'some text\n', output: 'some text\n' },
- { input: 'some text\n\n', output: 'some text\n\n' },
- { input: 'some\n text', output: 'some\n text\n' },
+ {
+ input: 'some text',
+ output: 'some text\n',
+ },
+ {
+ input: 'some text\n',
+ output: 'some text\n',
+ },
+ {
+ input: 'some text\n\n',
+ output: 'some text\n\n',
+ },
+ {
+ input: 'some\n text',
+ output: 'some\n text\n',
+ },
].forEach(({ input, output }) => {
expect(utils.addFinalNewlineIfNeeded(input)).toEqual(output);
});
diff --git a/spec/frontend/ide/utils_spec.js b/spec/frontend/ide/utils_spec.js
index 2b7dffdcd88..9d7926a4d06 100644
--- a/spec/frontend/ide/utils_spec.js
+++ b/spec/frontend/ide/utils_spec.js
@@ -26,15 +26,18 @@ describe('WebIDE utils', () => {
entry.deleted = true;
expect(getCommitIconMap(entry)).toEqual(commitItemIconMap.deleted);
});
+
it('renders "addition" icon for temp entries', () => {
entry.tempFile = true;
expect(getCommitIconMap(entry)).toEqual(commitItemIconMap.addition);
});
+
it('renders "modified" icon for newly-renamed entries', () => {
entry.prevPath = 'foo/bar';
entry.tempFile = false;
expect(getCommitIconMap(entry)).toEqual(commitItemIconMap.modified);
});
+
it('renders "modified" icon even for temp entries if they are newly-renamed', () => {
entry.prevPath = 'foo/bar';
entry.tempFile = true;
diff --git a/spec/frontend/import_projects/components/imported_project_table_row_spec.js b/spec/frontend/import_projects/components/imported_project_table_row_spec.js
index f95acc1edd7..34961eae0f3 100644
--- a/spec/frontend/import_projects/components/imported_project_table_row_spec.js
+++ b/spec/frontend/import_projects/components/imported_project_table_row_spec.js
@@ -1,6 +1,6 @@
import Vuex from 'vuex';
-import createStore from '~/import_projects/store';
import { createLocalVue, mount } from '@vue/test-utils';
+import createStore from '~/import_projects/store';
import importedProjectTableRow from '~/import_projects/components/imported_project_table_row.vue';
import STATUS_MAP from '~/import_projects/constants';
diff --git a/spec/frontend/import_projects/store/actions_spec.js b/spec/frontend/import_projects/store/actions_spec.js
index 340b6f02d93..4954513715e 100644
--- a/spec/frontend/import_projects/store/actions_spec.js
+++ b/spec/frontend/import_projects/store/actions_spec.js
@@ -1,4 +1,6 @@
import MockAdapter from 'axios-mock-adapter';
+import testAction from 'helpers/vuex_action_helper';
+import { TEST_HOST } from 'helpers/test_constants';
import axios from '~/lib/utils/axios_utils';
import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils';
import {
@@ -27,8 +29,6 @@ import {
stopJobsPolling,
} from '~/import_projects/store/actions';
import state from '~/import_projects/store/state';
-import testAction from 'helpers/vuex_action_helper';
-import { TEST_HOST } from 'helpers/test_constants';
describe('import_projects store actions', () => {
let localState;
diff --git a/spec/frontend/issuable_suggestions/components/app_spec.js b/spec/frontend/issuable_suggestions/components/app_spec.js
index 7bb8e26b81a..41860202750 100644
--- a/spec/frontend/issuable_suggestions/components/app_spec.js
+++ b/spec/frontend/issuable_suggestions/components/app_spec.js
@@ -3,25 +3,31 @@ import App from '~/issuable_suggestions/components/app.vue';
import Suggestion from '~/issuable_suggestions/components/item.vue';
describe('Issuable suggestions app component', () => {
- let vm;
+ let wrapper;
function createComponent(search = 'search') {
- vm = shallowMount(App, {
+ wrapper = shallowMount(App, {
propsData: {
search,
projectPath: 'project',
},
+ sync: false,
+ attachToDocument: true,
});
}
+ beforeEach(() => {
+ createComponent();
+ });
+
afterEach(() => {
- vm.destroy();
+ wrapper.destroy();
});
it('does not render with empty search', () => {
- createComponent('');
+ wrapper.setProps({ search: '' });
- expect(vm.isVisible()).toBe(false);
+ expect(wrapper.isVisible()).toBe(false);
});
describe('with data', () => {
@@ -32,65 +38,65 @@ describe('Issuable suggestions app component', () => {
});
it('renders component', () => {
- createComponent();
- vm.setData(data);
+ wrapper.setData(data);
- expect(vm.isEmpty()).toBe(false);
+ expect(wrapper.isEmpty()).toBe(false);
});
it('does not render with empty search', () => {
- createComponent('');
- vm.setData(data);
+ wrapper.setProps({ search: '' });
+ wrapper.setData(data);
- expect(vm.isVisible()).toBe(false);
+ expect(wrapper.isVisible()).toBe(false);
});
it('does not render when loading', () => {
- createComponent();
- vm.setData({
+ wrapper.setData({
...data,
loading: 1,
});
- expect(vm.isVisible()).toBe(false);
+ expect(wrapper.isVisible()).toBe(false);
});
it('does not render with empty issues data', () => {
- createComponent();
- vm.setData({ issues: [] });
+ wrapper.setData({ issues: [] });
- expect(vm.isVisible()).toBe(false);
+ expect(wrapper.isVisible()).toBe(false);
});
it('renders list of issues', () => {
- createComponent();
- vm.setData(data);
+ wrapper.setData(data);
- expect(vm.findAll(Suggestion).length).toBe(2);
+ return wrapper.vm.$nextTick(() => {
+ expect(wrapper.findAll(Suggestion).length).toBe(2);
+ });
});
it('adds margin class to first item', () => {
- createComponent();
- vm.setData(data);
-
- expect(
- vm
- .findAll('li')
- .at(0)
- .is('.append-bottom-default'),
- ).toBe(true);
+ wrapper.setData(data);
+
+ return wrapper.vm.$nextTick(() => {
+ expect(
+ wrapper
+ .findAll('li')
+ .at(0)
+ .is('.append-bottom-default'),
+ ).toBe(true);
+ });
});
it('does not add margin class to last item', () => {
- createComponent();
- vm.setData(data);
-
- expect(
- vm
- .findAll('li')
- .at(1)
- .is('.append-bottom-default'),
- ).toBe(false);
+ wrapper.setData(data);
+
+ return wrapper.vm.$nextTick(() => {
+ expect(
+ wrapper
+ .findAll('li')
+ .at(1)
+ .is('.append-bottom-default'),
+ ).toBe(false);
+ });
});
});
});
diff --git a/spec/frontend/issuable_suggestions/components/item_spec.js b/spec/frontend/issuable_suggestions/components/item_spec.js
index 7bd1fe678f4..10fba238506 100644
--- a/spec/frontend/issuable_suggestions/components/item_spec.js
+++ b/spec/frontend/issuable_suggestions/components/item_spec.js
@@ -16,6 +16,8 @@ describe('Issuable suggestions suggestion component', () => {
...suggestion,
},
},
+ sync: false,
+ attachToDocument: true,
});
}
diff --git a/spec/frontend/issuables_list/components/issuable_spec.js b/spec/frontend/issuables_list/components/issuable_spec.js
index 6148f3c68f2..b6851a0e24c 100644
--- a/spec/frontend/issuables_list/components/issuable_spec.js
+++ b/spec/frontend/issuables_list/components/issuable_spec.js
@@ -45,6 +45,7 @@ describe('Issuable component', () => {
...props,
},
sync: false,
+ attachToDocument: true,
});
};
diff --git a/spec/frontend/issuables_list/components/issuables_list_app_spec.js b/spec/frontend/issuables_list/components/issuables_list_app_spec.js
index e598a9c5a5d..621e8b8aa54 100644
--- a/spec/frontend/issuables_list/components/issuables_list_app_spec.js
+++ b/spec/frontend/issuables_list/components/issuables_list_app_spec.js
@@ -2,9 +2,9 @@ import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';
import { shallowMount, createLocalVue } from '@vue/test-utils';
import { GlEmptyState, GlPagination, GlSkeletonLoading } from '@gitlab/ui';
-import flash from '~/flash';
import waitForPromises from 'helpers/wait_for_promises';
import { TEST_HOST } from 'helpers/test_constants';
+import flash from '~/flash';
import IssuablesListApp from '~/issuables_list/components/issuables_list_app.vue';
import Issuable from '~/issuables_list/components/issuable.vue';
import issueablesEventBus from '~/issuables_list/eventhub';
@@ -49,6 +49,7 @@ describe('Issuables list component', () => {
},
localVue,
sync: false,
+ attachToDocument: true,
});
};
@@ -71,7 +72,6 @@ describe('Issuables list component', () => {
afterEach(() => {
wrapper.destroy();
mockAxios.restore();
- jest.clearAllMocks();
window.location = oldLocation;
});
diff --git a/spec/frontend/jest_self_check/mocks_spec.js b/spec/frontend/jest_self_check/mocks_spec.js
new file mode 100644
index 00000000000..f1e9e12e633
--- /dev/null
+++ b/spec/frontend/jest_self_check/mocks_spec.js
@@ -0,0 +1,43 @@
+import * as textUtils from '~/lib/utils/text_utility';
+
+jest.mock('~/lib/utils/text_utility');
+
+describe('does restore mocks config work?', () => {
+ describe('shared spy', () => {
+ const spy = jest.fn();
+
+ beforeEach(() => {
+ spy();
+ });
+
+ it('is only called once', () => {
+ expect(spy).toHaveBeenCalledTimes(1);
+ });
+
+ it('is only called once B', () => {
+ expect(spy).toHaveBeenCalledTimes(1);
+ });
+
+ it('is only called once C', () => {
+ expect(spy).toHaveBeenCalledTimes(1);
+ });
+ });
+
+ describe('module mock', () => {
+ beforeEach(() => {
+ textUtils.humanize('');
+ });
+
+ it('is only called once', () => {
+ expect(textUtils.humanize).toHaveBeenCalledTimes(1);
+ });
+
+ it('is only called once B', () => {
+ expect(textUtils.humanize).toHaveBeenCalledTimes(1);
+ });
+
+ it('is only called once C', () => {
+ expect(textUtils.humanize).toHaveBeenCalledTimes(1);
+ });
+ });
+});
diff --git a/spec/frontend/jobs/components/erased_block_spec.js b/spec/frontend/jobs/components/erased_block_spec.js
index 8e0433d3fb7..c7a53197fad 100644
--- a/spec/frontend/jobs/components/erased_block_spec.js
+++ b/spec/frontend/jobs/components/erased_block_spec.js
@@ -1,23 +1,30 @@
-import Vue from 'vue';
+import { mount } from '@vue/test-utils';
+import { GlLink } from '@gitlab/ui';
import { getTimeago } from '~/lib/utils/datetime_utility';
-import component from '~/jobs/components/erased_block.vue';
-import mountComponent from '../../helpers/vue_mount_component_helper';
+import ErasedBlock from '~/jobs/components/erased_block.vue';
describe('Erased block', () => {
- const Component = Vue.extend(component);
- let vm;
+ let wrapper;
const erasedAt = '2016-11-07T11:11:16.525Z';
const timeago = getTimeago();
- const formatedDate = timeago.format(erasedAt);
+ const formattedDate = timeago.format(erasedAt);
+
+ const createComponent = props => {
+ wrapper = mount(ErasedBlock, {
+ propsData: props,
+ sync: false,
+ attachToDocument: true,
+ });
+ };
afterEach(() => {
- vm.$destroy();
+ wrapper.destroy();
});
describe('with job erased by user', () => {
beforeEach(() => {
- vm = mountComponent(Component, {
+ createComponent({
user: {
username: 'root',
web_url: 'gitlab.com/root',
@@ -27,30 +34,30 @@ describe('Erased block', () => {
});
it('renders username and link', () => {
- expect(vm.$el.querySelector('a').getAttribute('href')).toEqual('gitlab.com/root');
+ expect(wrapper.find(GlLink).attributes('href')).toEqual('gitlab.com/root');
- expect(vm.$el.textContent).toContain('Job has been erased by');
- expect(vm.$el.textContent).toContain('root');
+ expect(wrapper.text().trim()).toContain('Job has been erased by');
+ expect(wrapper.text().trim()).toContain('root');
});
it('renders erasedAt', () => {
- expect(vm.$el.textContent).toContain(formatedDate);
+ expect(wrapper.text().trim()).toContain(formattedDate);
});
});
describe('with erased job', () => {
beforeEach(() => {
- vm = mountComponent(Component, {
+ createComponent({
erasedAt,
});
});
it('renders username and link', () => {
- expect(vm.$el.textContent).toContain('Job has been erased');
+ expect(wrapper.text().trim()).toContain('Job has been erased');
});
it('renders erasedAt', () => {
- expect(vm.$el.textContent).toContain(formatedDate);
+ expect(wrapper.text().trim()).toContain(formattedDate);
});
});
});
diff --git a/spec/frontend/jobs/components/log/mock_data.js b/spec/frontend/jobs/components/log/mock_data.js
index d375d82d3ca..01f69e6328c 100644
--- a/spec/frontend/jobs/components/log/mock_data.js
+++ b/spec/frontend/jobs/components/log/mock_data.js
@@ -34,7 +34,7 @@ export const utilsMockData = [
content: [
{
text:
- 'Using Docker executor with image dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.6.3-golang-1.11-git-2.22-chrome-73.0-node-12.x-yarn-1.16-postgresql-9.6-graphicsmagick-1.3.33',
+ 'Using Docker executor with image dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.6.3-golang-1.12-git-2.24-lfs-2.9-chrome-73.0-node-12.x-yarn-1.16-postgresql-9.6-graphicsmagick-1.3.33',
},
],
section: 'prepare-executor',
diff --git a/spec/javascripts/lib/utils/accessor_spec.js b/spec/frontend/lib/utils/accessor_spec.js
index 0045330e470..752a88296e6 100644
--- a/spec/javascripts/lib/utils/accessor_spec.js
+++ b/spec/frontend/lib/utils/accessor_spec.js
@@ -1,14 +1,18 @@
+import { useLocalStorageSpy } from 'helpers/local_storage_helper';
import AccessorUtilities from '~/lib/utils/accessor';
describe('AccessorUtilities', () => {
+ useLocalStorageSpy();
+
const testError = new Error('test error');
describe('isPropertyAccessSafe', () => {
let base;
it('should return `true` if access is safe', () => {
- base = { testProp: 'testProp' };
-
+ base = {
+ testProp: 'testProp',
+ };
expect(AccessorUtilities.isPropertyAccessSafe(base, 'testProp')).toBe(true);
});
@@ -54,17 +58,12 @@ describe('AccessorUtilities', () => {
});
describe('isLocalStorageAccessSafe', () => {
- beforeEach(() => {
- spyOn(window.localStorage, 'setItem');
- spyOn(window.localStorage, 'removeItem');
- });
-
it('should return `true` if access is safe', () => {
expect(AccessorUtilities.isLocalStorageAccessSafe()).toBe(true);
});
it('should return `false` if access to .setItem isnt safe', () => {
- window.localStorage.setItem.and.callFake(() => {
+ window.localStorage.setItem.mockImplementation(() => {
throw testError;
});
diff --git a/spec/frontend/lib/utils/datetime_utility_spec.js b/spec/frontend/lib/utils/datetime_utility_spec.js
index ee27789b6b9..872779299d2 100644
--- a/spec/frontend/lib/utils/datetime_utility_spec.js
+++ b/spec/frontend/lib/utils/datetime_utility_spec.js
@@ -1,15 +1,16 @@
+import { __, s__ } from '~/locale';
import * as datetimeUtility from '~/lib/utils/datetime_utility';
describe('Date time utils', () => {
describe('timeFor', () => {
- it('returns `past due` when in past', () => {
+ it('returns localize `past due` when in past', () => {
const date = new Date();
date.setFullYear(date.getFullYear() - 1);
- expect(datetimeUtility.timeFor(date)).toBe('Past due');
+ expect(datetimeUtility.timeFor(date)).toBe(s__('Timeago|Past due'));
});
- it('returns remaining time when in the future', () => {
+ it('returns localized remaining time when in the future', () => {
const date = new Date();
date.setFullYear(date.getFullYear() + 1);
@@ -17,51 +18,51 @@ describe('Date time utils', () => {
// short of a full year, timeFor will return '11 months remaining'
date.setDate(date.getDate() + 1);
- expect(datetimeUtility.timeFor(date)).toBe('1 year remaining');
+ expect(datetimeUtility.timeFor(date)).toBe(s__('Timeago|1 year remaining'));
});
});
- describe('get day name', () => {
+ describe('get localized day name', () => {
it('should return Sunday', () => {
const day = datetimeUtility.getDayName(new Date('07/17/2016'));
- expect(day).toBe('Sunday');
+ expect(day).toBe(__('Sunday'));
});
it('should return Monday', () => {
const day = datetimeUtility.getDayName(new Date('07/18/2016'));
- expect(day).toBe('Monday');
+ expect(day).toBe(__('Monday'));
});
it('should return Tuesday', () => {
const day = datetimeUtility.getDayName(new Date('07/19/2016'));
- expect(day).toBe('Tuesday');
+ expect(day).toBe(__('Tuesday'));
});
it('should return Wednesday', () => {
const day = datetimeUtility.getDayName(new Date('07/20/2016'));
- expect(day).toBe('Wednesday');
+ expect(day).toBe(__('Wednesday'));
});
it('should return Thursday', () => {
const day = datetimeUtility.getDayName(new Date('07/21/2016'));
- expect(day).toBe('Thursday');
+ expect(day).toBe(__('Thursday'));
});
it('should return Friday', () => {
const day = datetimeUtility.getDayName(new Date('07/22/2016'));
- expect(day).toBe('Friday');
+ expect(day).toBe(__('Friday'));
});
it('should return Saturday', () => {
const day = datetimeUtility.getDayName(new Date('07/23/2016'));
- expect(day).toBe('Saturday');
+ expect(day).toBe(__('Saturday'));
});
});
@@ -114,10 +115,10 @@ describe('Date time utils', () => {
describe('timeIntervalInWords', () => {
it('should return string with number of minutes and seconds', () => {
- expect(datetimeUtility.timeIntervalInWords(9.54)).toEqual('9 seconds');
- expect(datetimeUtility.timeIntervalInWords(1)).toEqual('1 second');
- expect(datetimeUtility.timeIntervalInWords(200)).toEqual('3 minutes 20 seconds');
- expect(datetimeUtility.timeIntervalInWords(6008)).toEqual('100 minutes 8 seconds');
+ expect(datetimeUtility.timeIntervalInWords(9.54)).toEqual(s__('Timeago|9 seconds'));
+ expect(datetimeUtility.timeIntervalInWords(1)).toEqual(s__('Timeago|1 second'));
+ expect(datetimeUtility.timeIntervalInWords(200)).toEqual(s__('Timeago|3 minutes 20 seconds'));
+ expect(datetimeUtility.timeIntervalInWords(6008)).toEqual(s__('Timeago|100 minutes 8 seconds'));
});
});
@@ -125,15 +126,15 @@ describe('dateInWords', () => {
const date = new Date('07/01/2016');
it('should return date in words', () => {
- expect(datetimeUtility.dateInWords(date)).toEqual('July 1, 2016');
+ expect(datetimeUtility.dateInWords(date)).toEqual(s__('July 1, 2016'));
});
it('should return abbreviated month name', () => {
- expect(datetimeUtility.dateInWords(date, true)).toEqual('Jul 1, 2016');
+ expect(datetimeUtility.dateInWords(date, true)).toEqual(s__('Jul 1, 2016'));
});
it('should return date in words without year', () => {
- expect(datetimeUtility.dateInWords(date, true, true)).toEqual('Jul 1');
+ expect(datetimeUtility.dateInWords(date, true, true)).toEqual(s__('Jul 1'));
});
});
@@ -141,11 +142,11 @@ describe('monthInWords', () => {
const date = new Date('2017-01-20');
it('returns month name from provided date', () => {
- expect(datetimeUtility.monthInWords(date)).toBe('January');
+ expect(datetimeUtility.monthInWords(date)).toBe(s__('January'));
});
it('returns abbreviated month name from provided date', () => {
- expect(datetimeUtility.monthInWords(date, true)).toBe('Jan');
+ expect(datetimeUtility.monthInWords(date, true)).toBe(s__('Jan'));
});
});
@@ -482,3 +483,27 @@ describe('secondsToMilliseconds', () => {
expect(datetimeUtility.secondsToMilliseconds(123)).toBe(123000);
});
});
+
+describe('dayAfter', () => {
+ const date = new Date('2019-07-16T00:00:00.000Z');
+
+ it('returns the following date', () => {
+ const nextDay = datetimeUtility.dayAfter(date);
+ const expectedNextDate = new Date('2019-07-17T00:00:00.000Z');
+
+ expect(nextDay).toStrictEqual(expectedNextDate);
+ });
+
+ it('does not modifiy the original date', () => {
+ datetimeUtility.dayAfter(date);
+ expect(date).toStrictEqual(new Date('2019-07-16T00:00:00.000Z'));
+ });
+});
+
+describe('secondsToDays', () => {
+ it('converts seconds to days correctly', () => {
+ expect(datetimeUtility.secondsToDays(0)).toBe(0);
+ expect(datetimeUtility.secondsToDays(90000)).toBe(1);
+ expect(datetimeUtility.secondsToDays(270000)).toBe(3);
+ });
+});
diff --git a/spec/javascripts/lib/utils/dom_utils_spec.js b/spec/frontend/lib/utils/dom_utils_spec.js
index 2bcf37f35c7..10b4a10a8ff 100644
--- a/spec/javascripts/lib/utils/dom_utils_spec.js
+++ b/spec/frontend/lib/utils/dom_utils_spec.js
@@ -25,7 +25,7 @@ describe('DOM Utils', () => {
addClassIfElementExists(childElement, className);
- expect(childElement.classList).toContain(className);
+ expect(childElement.classList).toContainEqual(className);
});
it('does not throw if element does not exist', () => {
@@ -40,22 +40,44 @@ describe('DOM Utils', () => {
describe('canScrollUp', () => {
[1, 100].forEach(scrollTop => {
it(`is true if scrollTop is > 0 (${scrollTop})`, () => {
- expect(canScrollUp({ scrollTop })).toBe(true);
+ expect(
+ canScrollUp({
+ scrollTop,
+ }),
+ ).toBe(true);
});
});
[0, -10].forEach(scrollTop => {
it(`is false if scrollTop is <= 0 (${scrollTop})`, () => {
- expect(canScrollUp({ scrollTop })).toBe(false);
+ expect(
+ canScrollUp({
+ scrollTop,
+ }),
+ ).toBe(false);
});
});
it('is true if scrollTop is > margin', () => {
- expect(canScrollUp({ scrollTop: TEST_MARGIN + 1 }, TEST_MARGIN)).toBe(true);
+ expect(
+ canScrollUp(
+ {
+ scrollTop: TEST_MARGIN + 1,
+ },
+ TEST_MARGIN,
+ ),
+ ).toBe(true);
});
it('is false if scrollTop is <= margin', () => {
- expect(canScrollUp({ scrollTop: TEST_MARGIN }, TEST_MARGIN)).toBe(false);
+ expect(
+ canScrollUp(
+ {
+ scrollTop: TEST_MARGIN,
+ },
+ TEST_MARGIN,
+ ),
+ ).toBe(false);
});
});
@@ -63,7 +85,11 @@ describe('DOM Utils', () => {
let element;
beforeEach(() => {
- element = { scrollTop: 7, offsetHeight: 22, scrollHeight: 30 };
+ element = {
+ scrollTop: 7,
+ offsetHeight: 22,
+ scrollHeight: 30,
+ };
});
it('is true if element can be scrolled down', () => {
diff --git a/spec/javascripts/lib/utils/file_upload_spec.js b/spec/frontend/lib/utils/file_upload_spec.js
index 8f7092f63de..1255d6fc14f 100644
--- a/spec/javascripts/lib/utils/file_upload_spec.js
+++ b/spec/frontend/lib/utils/file_upload_spec.js
@@ -20,7 +20,7 @@ describe('File upload', () => {
const btn = document.querySelector('.js-button');
const input = document.querySelector('.js-input');
- spyOn(input, 'click');
+ jest.spyOn(input, 'click').mockReturnValue();
btn.click();
@@ -43,7 +43,7 @@ describe('File upload', () => {
const btn = document.querySelector('.js-button');
fileUpload('.js-not-button', '.js-input');
- spyOn(input, 'click');
+ jest.spyOn(input, 'click').mockReturnValue();
btn.click();
@@ -55,7 +55,7 @@ describe('File upload', () => {
const btn = document.querySelector('.js-button');
fileUpload('.js-button', '.js-not-input');
- spyOn(input, 'click');
+ jest.spyOn(input, 'click').mockReturnValue();
btn.click();
diff --git a/spec/javascripts/lib/utils/higlight_spec.js b/spec/frontend/lib/utils/highlight_spec.js
index 638bbf65ae9..638bbf65ae9 100644
--- a/spec/javascripts/lib/utils/higlight_spec.js
+++ b/spec/frontend/lib/utils/highlight_spec.js
diff --git a/spec/javascripts/lib/utils/icon_utils_spec.js b/spec/frontend/lib/utils/icon_utils_spec.js
index 3fd3940efe8..816d634ad15 100644
--- a/spec/javascripts/lib/utils/icon_utils_spec.js
+++ b/spec/frontend/lib/utils/icon_utils_spec.js
@@ -17,51 +17,44 @@ describe('Icon utils', () => {
let axiosMock;
let mockEndpoint;
- let getIcon;
const mockName = 'mockIconName';
const mockPath = 'mockPath';
+ const getIcon = () => iconUtils.getSvgIconPathContent(mockName);
beforeEach(() => {
axiosMock = new MockAdapter(axios);
mockEndpoint = axiosMock.onGet(gon.sprite_icons);
- getIcon = iconUtils.getSvgIconPathContent(mockName);
});
afterEach(() => {
axiosMock.restore();
});
- it('extracts svg icon path content from sprite icons', done => {
+ it('extracts svg icon path content from sprite icons', () => {
mockEndpoint.replyOnce(
200,
`<svg><symbol id="${mockName}"><path d="${mockPath}"/></symbol></svg>`,
);
- getIcon
- .then(path => {
- expect(path).toBe(mockPath);
- done();
- })
- .catch(done.fail);
+
+ return getIcon().then(path => {
+ expect(path).toBe(mockPath);
+ });
});
- it('returns null if icon path content does not exist', done => {
+ it('returns null if icon path content does not exist', () => {
mockEndpoint.replyOnce(200, ``);
- getIcon
- .then(path => {
- expect(path).toBe(null);
- done();
- })
- .catch(done.fail);
+
+ return getIcon().then(path => {
+ expect(path).toBe(null);
+ });
});
- it('returns null if an http error occurs', done => {
+ it('returns null if an http error occurs', () => {
mockEndpoint.replyOnce(500);
- getIcon
- .then(path => {
- expect(path).toBe(null);
- done();
- })
- .catch(done.fail);
+
+ return getIcon().then(path => {
+ expect(path).toBe(null);
+ });
});
});
});
diff --git a/spec/frontend/lib/utils/suppress_ajax_errors_during_navigation_spec.js b/spec/frontend/lib/utils/suppress_ajax_errors_during_navigation_spec.js
index 89e8459d594..da10e0e618d 100644
--- a/spec/frontend/lib/utils/suppress_ajax_errors_during_navigation_spec.js
+++ b/spec/frontend/lib/utils/suppress_ajax_errors_during_navigation_spec.js
@@ -1,29 +1,25 @@
-import suppressAjaxErrorsDuringNavigation from '~/lib/utils/suppress_ajax_errors_during_navigation';
import waitForPromises from 'helpers/wait_for_promises';
+import suppressAjaxErrorsDuringNavigation from '~/lib/utils/suppress_ajax_errors_during_navigation';
describe('suppressAjaxErrorsDuringNavigation', () => {
const OTHER_ERR_CODE = 'foo';
const NAV_ERR_CODE = 'ECONNABORTED';
it.each`
- isFeatureFlagEnabled | isUserNavigating | code
- ${false} | ${false} | ${OTHER_ERR_CODE}
- ${false} | ${false} | ${NAV_ERR_CODE}
- ${false} | ${true} | ${OTHER_ERR_CODE}
- ${false} | ${true} | ${NAV_ERR_CODE}
- ${true} | ${false} | ${OTHER_ERR_CODE}
- ${true} | ${false} | ${NAV_ERR_CODE}
- ${true} | ${true} | ${OTHER_ERR_CODE}
- `('should return a rejected Promise', ({ isFeatureFlagEnabled, isUserNavigating, code }) => {
+ isUserNavigating | code
+ ${false} | ${OTHER_ERR_CODE}
+ ${false} | ${NAV_ERR_CODE}
+ ${true} | ${OTHER_ERR_CODE}
+ `('should return a rejected Promise', ({ isUserNavigating, code }) => {
const err = { code };
- const actual = suppressAjaxErrorsDuringNavigation(err, isUserNavigating, isFeatureFlagEnabled);
+ const actual = suppressAjaxErrorsDuringNavigation(err, isUserNavigating);
return expect(actual).rejects.toBe(err);
});
it('should return a Promise that never resolves', () => {
const err = { code: NAV_ERR_CODE };
- const actual = suppressAjaxErrorsDuringNavigation(err, true, true);
+ const actual = suppressAjaxErrorsDuringNavigation(err, true);
const thenCallback = jest.fn();
const catchCallback = jest.fn();
diff --git a/spec/javascripts/lib/utils/text_markdown_spec.js b/spec/frontend/lib/utils/text_markdown_spec.js
index df4029555bb..ba3e4020e66 100644
--- a/spec/javascripts/lib/utils/text_markdown_spec.js
+++ b/spec/frontend/lib/utils/text_markdown_spec.js
@@ -243,7 +243,7 @@ describe('init markdown', () => {
});
it('uses ace editor insert text when editor is passed in', () => {
- spyOn(editor, 'insert');
+ jest.spyOn(editor, 'insert').mockReturnValue();
insertMarkdownText({
text: editor.getValue,
@@ -258,7 +258,7 @@ describe('init markdown', () => {
});
it('adds block tags on line above and below selection', () => {
- spyOn(editor, 'insert');
+ jest.spyOn(editor, 'insert').mockReturnValue();
const selected = 'this text \n is multiple \n lines';
const text = `before \n ${selected} \n after`;
@@ -276,7 +276,7 @@ describe('init markdown', () => {
});
it('uses ace editor to navigate back tag length when nothing is selected', () => {
- spyOn(editor, 'navigateLeft');
+ jest.spyOn(editor, 'navigateLeft').mockReturnValue();
insertMarkdownText({
text: editor.getValue,
@@ -291,7 +291,7 @@ describe('init markdown', () => {
});
it('ace editor does not navigate back when there is selected text', () => {
- spyOn(editor, 'navigateLeft');
+ jest.spyOn(editor, 'navigateLeft').mockReturnValue();
insertMarkdownText({
text: editor.getValue,
diff --git a/spec/frontend/lib/utils/url_utility_spec.js b/spec/frontend/lib/utils/url_utility_spec.js
index 6edb2e2dce2..048736d75f6 100644
--- a/spec/frontend/lib/utils/url_utility_spec.js
+++ b/spec/frontend/lib/utils/url_utility_spec.js
@@ -282,4 +282,94 @@ describe('URL utility', () => {
expect(urlUtils.getWebSocketUrl(path)).toEqual('ws://example.com/lorem/ipsum?a=bc');
});
});
+
+ describe('queryToObject', () => {
+ it('converts search query into an object', () => {
+ const searchQuery = '?one=1&two=2';
+
+ expect(urlUtils.queryToObject(searchQuery)).toEqual({ one: '1', two: '2' });
+ });
+ });
+
+ describe('objectToQuery', () => {
+ it('converts search query object back into a search query', () => {
+ const searchQueryObject = { one: '1', two: '2' };
+
+ expect(urlUtils.objectToQuery(searchQueryObject)).toEqual('one=1&two=2');
+ });
+ });
+
+ describe('joinPaths', () => {
+ it.each`
+ paths | expected
+ ${['foo', 'bar']} | ${'foo/bar'}
+ ${['foo/', 'bar']} | ${'foo/bar'}
+ ${['foo//', 'bar']} | ${'foo/bar'}
+ ${['abc/', '/def']} | ${'abc/def'}
+ ${['foo', '/bar']} | ${'foo/bar'}
+ ${['foo', '/bar/']} | ${'foo/bar/'}
+ ${['foo', '//bar/']} | ${'foo/bar/'}
+ ${['foo', '', '/bar']} | ${'foo/bar'}
+ ${['foo', '/bar', '']} | ${'foo/bar'}
+ ${['/', '', 'foo/bar/ ', '', '/ninja']} | ${'/foo/bar/ /ninja'}
+ ${['', '/ninja', '/', ' ', '', 'bar', ' ']} | ${'/ninja/ /bar/ '}
+ ${['http://something/bar/', 'foo']} | ${'http://something/bar/foo'}
+ ${['foo/bar', null, 'ninja', null]} | ${'foo/bar/ninja'}
+ ${[null, 'abc/def', 'zoo']} | ${'abc/def/zoo'}
+ ${['', '', '']} | ${''}
+ ${['///', '/', '//']} | ${'/'}
+ `('joins paths $paths => $expected', ({ paths, expected }) => {
+ expect(urlUtils.joinPaths(...paths)).toBe(expected);
+ });
+ });
+
+ describe('escapeFileUrl', () => {
+ it('encodes URL excluding the slashes', () => {
+ expect(urlUtils.escapeFileUrl('/foo-bar/file.md')).toBe('/foo-bar/file.md');
+ expect(urlUtils.escapeFileUrl('foo bar/file.md')).toBe('foo%20bar/file.md');
+ expect(urlUtils.escapeFileUrl('foo/bar/file.md')).toBe('foo/bar/file.md');
+ });
+ });
+
+ describe('setUrlParams', () => {
+ it('adds new params as query string', () => {
+ const url = 'https://gitlab.com/test';
+
+ expect(
+ urlUtils.setUrlParams({ group_id: 'gitlab-org', project_id: 'my-project' }, url),
+ ).toEqual('https://gitlab.com/test?group_id=gitlab-org&project_id=my-project');
+ });
+
+ it('updates an existing parameter', () => {
+ const url = 'https://gitlab.com/test?group_id=gitlab-org&project_id=my-project';
+
+ expect(urlUtils.setUrlParams({ project_id: 'gitlab-test' }, url)).toEqual(
+ 'https://gitlab.com/test?group_id=gitlab-org&project_id=gitlab-test',
+ );
+ });
+
+ it("removes the project_id param when it's value is null", () => {
+ const url = 'https://gitlab.com/test?group_id=gitlab-org&project_id=my-project';
+
+ expect(urlUtils.setUrlParams({ project_id: null }, url)).toEqual(
+ 'https://gitlab.com/test?group_id=gitlab-org',
+ );
+ });
+
+ it('handles arrays properly', () => {
+ const url = 'https://gitlab.com/test';
+
+ expect(urlUtils.setUrlParams({ label_name: ['foo', 'bar'] }, url)).toEqual(
+ 'https://gitlab.com/test?label_name=foo&label_name=bar',
+ );
+ });
+
+ it('removes all existing URL params and sets a new param when cleanParams=true', () => {
+ const url = 'https://gitlab.com/test?group_id=gitlab-org&project_id=my-project';
+
+ expect(urlUtils.setUrlParams({ foo: 'bar' }, url, true)).toEqual(
+ 'https://gitlab.com/test?foo=bar',
+ );
+ });
+ });
});
diff --git a/spec/javascripts/lib/utils/users_cache_spec.js b/spec/frontend/lib/utils/users_cache_spec.js
index acb5e024acd..7ed87123482 100644
--- a/spec/javascripts/lib/utils/users_cache_spec.js
+++ b/spec/frontend/lib/utils/users_cache_spec.js
@@ -4,7 +4,10 @@ import UsersCache from '~/lib/utils/users_cache';
describe('UsersCache', () => {
const dummyUsername = 'win';
const dummyUserId = 123;
- const dummyUser = { name: 'has a farm', username: 'farmer' };
+ const dummyUser = {
+ name: 'has a farm',
+ username: 'farmer',
+ };
const dummyUserStatus = 'my status';
beforeEach(() => {
@@ -68,7 +71,6 @@ describe('UsersCache', () => {
it('does nothing if cache contains no matching data', () => {
UsersCache.internalStorage['no body'] = 'no data';
-
UsersCache.remove(dummyUsername);
expect(UsersCache.internalStorage['no body']).toBe('no data');
@@ -76,7 +78,6 @@ describe('UsersCache', () => {
it('removes matching data', () => {
UsersCache.internalStorage[dummyUsername] = dummyUser;
-
UsersCache.remove(dummyUsername);
expect(UsersCache.internalStorage).toEqual({});
@@ -87,13 +88,16 @@ describe('UsersCache', () => {
let apiSpy;
beforeEach(() => {
- spyOn(Api, 'users').and.callFake((query, options) => apiSpy(query, options));
+ jest.spyOn(Api, 'users').mockImplementation((query, options) => apiSpy(query, options));
});
it('stores and returns data from API call if cache is empty', done => {
apiSpy = (query, options) => {
expect(query).toBe('');
- expect(options).toEqual({ username: dummyUsername });
+ expect(options).toEqual({
+ username: dummyUsername,
+ });
+
return Promise.resolve({
data: [dummyUser],
});
@@ -110,14 +114,18 @@ describe('UsersCache', () => {
it('returns undefined if Ajax call fails and cache is empty', done => {
const dummyError = new Error('server exploded');
+
apiSpy = (query, options) => {
expect(query).toBe('');
- expect(options).toEqual({ username: dummyUsername });
+ expect(options).toEqual({
+ username: dummyUsername,
+ });
+
return Promise.reject(dummyError);
};
UsersCache.retrieve(dummyUsername)
- .then(user => fail(`Received unexpected user: ${JSON.stringify(user)}`))
+ .then(user => done.fail(`Received unexpected user: ${JSON.stringify(user)}`))
.catch(error => {
expect(error).toBe(dummyError);
})
@@ -127,7 +135,8 @@ describe('UsersCache', () => {
it('makes no Ajax call if matching data exists', done => {
UsersCache.internalStorage[dummyUsername] = dummyUser;
- apiSpy = () => fail(new Error('expected no Ajax call!'));
+
+ apiSpy = () => done.fail(new Error('expected no Ajax call!'));
UsersCache.retrieve(dummyUsername)
.then(user => {
@@ -142,12 +151,13 @@ describe('UsersCache', () => {
let apiSpy;
beforeEach(() => {
- spyOn(Api, 'user').and.callFake(id => apiSpy(id));
+ jest.spyOn(Api, 'user').mockImplementation(id => apiSpy(id));
});
it('stores and returns data from API call if cache is empty', done => {
apiSpy = id => {
expect(id).toBe(dummyUserId);
+
return Promise.resolve({
data: dummyUser,
});
@@ -164,13 +174,15 @@ describe('UsersCache', () => {
it('returns undefined if Ajax call fails and cache is empty', done => {
const dummyError = new Error('server exploded');
+
apiSpy = id => {
expect(id).toBe(dummyUserId);
+
return Promise.reject(dummyError);
};
UsersCache.retrieveById(dummyUserId)
- .then(user => fail(`Received unexpected user: ${JSON.stringify(user)}`))
+ .then(user => done.fail(`Received unexpected user: ${JSON.stringify(user)}`))
.catch(error => {
expect(error).toBe(dummyError);
})
@@ -180,7 +192,8 @@ describe('UsersCache', () => {
it('makes no Ajax call if matching data exists', done => {
UsersCache.internalStorage[dummyUserId] = dummyUser;
- apiSpy = () => fail(new Error('expected no Ajax call!'));
+
+ apiSpy = () => done.fail(new Error('expected no Ajax call!'));
UsersCache.retrieveById(dummyUserId)
.then(user => {
@@ -195,12 +208,13 @@ describe('UsersCache', () => {
let apiSpy;
beforeEach(() => {
- spyOn(Api, 'userStatus').and.callFake(id => apiSpy(id));
+ jest.spyOn(Api, 'userStatus').mockImplementation(id => apiSpy(id));
});
it('stores and returns data from API call if cache is empty', done => {
apiSpy = id => {
expect(id).toBe(dummyUserId);
+
return Promise.resolve({
data: dummyUserStatus,
});
@@ -217,13 +231,15 @@ describe('UsersCache', () => {
it('returns undefined if Ajax call fails and cache is empty', done => {
const dummyError = new Error('server exploded');
+
apiSpy = id => {
expect(id).toBe(dummyUserId);
+
return Promise.reject(dummyError);
};
UsersCache.retrieveStatusById(dummyUserId)
- .then(userStatus => fail(`Received unexpected user: ${JSON.stringify(userStatus)}`))
+ .then(userStatus => done.fail(`Received unexpected user: ${JSON.stringify(userStatus)}`))
.catch(error => {
expect(error).toBe(dummyError);
})
@@ -232,8 +248,11 @@ describe('UsersCache', () => {
});
it('makes no Ajax call if matching data exists', done => {
- UsersCache.internalStorage[dummyUserId] = { status: dummyUserStatus };
- apiSpy = () => fail(new Error('expected no Ajax call!'));
+ UsersCache.internalStorage[dummyUserId] = {
+ status: dummyUserStatus,
+ };
+
+ apiSpy = () => done.fail(new Error('expected no Ajax call!'));
UsersCache.retrieveStatusById(dummyUserId)
.then(userStatus => {
diff --git a/spec/frontend/monitoring/__snapshots__/dashboard_state_spec.js.snap b/spec/frontend/monitoring/components/__snapshots__/empty_state_spec.js.snap
index 5f24bab600c..5f24bab600c 100644
--- a/spec/frontend/monitoring/__snapshots__/dashboard_state_spec.js.snap
+++ b/spec/frontend/monitoring/components/__snapshots__/empty_state_spec.js.snap
diff --git a/spec/frontend/monitoring/components/__snapshots__/group_empty_state_spec.js.snap b/spec/frontend/monitoring/components/__snapshots__/group_empty_state_spec.js.snap
new file mode 100644
index 00000000000..7f37a83d291
--- /dev/null
+++ b/spec/frontend/monitoring/components/__snapshots__/group_empty_state_spec.js.snap
@@ -0,0 +1,79 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`GroupEmptyState Renders an empty state for BAD_QUERY 1`] = `
+<glemptystate-stub
+ compact="true"
+ primarybuttonlink="/path/to/settings"
+ primarybuttontext="Verify configuration"
+ svgpath="/path/to/empty-group-illustration.svg"
+ title="Query cannot be processed"
+/>
+`;
+
+exports[`GroupEmptyState Renders an empty state for BAD_QUERY 2`] = `"The Prometheus server responded with \\"bad request\\". Please check your queries are correct and are supported in your Prometheus version. <a href=\\"/path/to/docs\\">More information</a>"`;
+
+exports[`GroupEmptyState Renders an empty state for CONNECTION_FAILED 1`] = `
+<glemptystate-stub
+ compact="true"
+ description="We couldn't reach the Prometheus server. Either the server no longer exists or the configuration details need updating."
+ primarybuttonlink="/path/to/settings"
+ primarybuttontext="Verify configuration"
+ svgpath="/path/to/empty-group-illustration.svg"
+ title="Connection failed"
+/>
+`;
+
+exports[`GroupEmptyState Renders an empty state for CONNECTION_FAILED 2`] = `undefined`;
+
+exports[`GroupEmptyState Renders an empty state for FOO STATE 1`] = `
+<glemptystate-stub
+ compact="true"
+ description="An error occurred while loading the data. Please try again."
+ svgpath="/path/to/empty-group-illustration.svg"
+ title="An error has occurred"
+/>
+`;
+
+exports[`GroupEmptyState Renders an empty state for FOO STATE 2`] = `undefined`;
+
+exports[`GroupEmptyState Renders an empty state for LOADING 1`] = `
+<glemptystate-stub
+ compact="true"
+ description="Creating graphs uses the data from the Prometheus server. If this takes a long time, ensure that data is available."
+ svgpath="/path/to/empty-group-illustration.svg"
+ title="Waiting for performance data"
+/>
+`;
+
+exports[`GroupEmptyState Renders an empty state for LOADING 2`] = `undefined`;
+
+exports[`GroupEmptyState Renders an empty state for NO_DATA 1`] = `
+<glemptystate-stub
+ compact="true"
+ svgpath="/path/to/empty-group-illustration.svg"
+ title="No data to display"
+/>
+`;
+
+exports[`GroupEmptyState Renders an empty state for NO_DATA 2`] = `"The data source is connected, but there is no data to display. <a href=\\"/path/to/docs\\">More information</a>"`;
+
+exports[`GroupEmptyState Renders an empty state for TIMEOUT 1`] = `
+<glemptystate-stub
+ compact="true"
+ svgpath="/path/to/empty-group-illustration.svg"
+ title="Connection timed out"
+/>
+`;
+
+exports[`GroupEmptyState Renders an empty state for TIMEOUT 2`] = `"Charts can't be displayed as the request for data has timed out. <a href=\\"/path/to/docs\\">More information</a>"`;
+
+exports[`GroupEmptyState Renders an empty state for UNKNOWN_ERROR 1`] = `
+<glemptystate-stub
+ compact="true"
+ description="An error occurred while loading the data. Please try again."
+ svgpath="/path/to/empty-group-illustration.svg"
+ title="An error has occurred"
+/>
+`;
+
+exports[`GroupEmptyState Renders an empty state for UNKNOWN_ERROR 2`] = `undefined`;
diff --git a/spec/frontend/monitoring/components/charts/anomaly_spec.js b/spec/frontend/monitoring/components/charts/anomaly_spec.js
index 6707d0b1fe8..7446461a574 100644
--- a/spec/frontend/monitoring/components/charts/anomaly_spec.js
+++ b/spec/frontend/monitoring/components/charts/anomaly_spec.js
@@ -1,6 +1,7 @@
+import { shallowMount } from '@vue/test-utils';
+import { TEST_HOST } from 'helpers/test_constants';
import Anomaly from '~/monitoring/components/charts/anomaly.vue';
-import { shallowMount } from '@vue/test-utils';
import { colorValues } from '~/monitoring/constants';
import {
anomalyDeploymentData,
@@ -8,7 +9,6 @@ import {
anomalyMockGraphData,
anomalyMockResultValues,
} from '../../mock_data';
-import { TEST_HOST } from 'helpers/test_constants';
import MonitorTimeSeriesChart from '~/monitoring/components/charts/time_series.vue';
const mockWidgets = 'mockWidgets';
@@ -17,8 +17,8 @@ const mockProjectPath = `${TEST_HOST}${mockProjectDir}`;
jest.mock('~/lib/utils/icon_utils'); // mock getSvgIconPathContent
const makeAnomalyGraphData = (datasetName, template = anomalyMockGraphData) => {
- const queries = anomalyMockResultValues[datasetName].map((values, index) => ({
- ...template.queries[index],
+ const metrics = anomalyMockResultValues[datasetName].map((values, index) => ({
+ ...template.metrics[index],
result: [
{
metrics: {},
@@ -26,7 +26,7 @@ const makeAnomalyGraphData = (datasetName, template = anomalyMockGraphData) => {
},
],
}));
- return { ...template, queries };
+ return { ...template, metrics };
};
describe('Anomaly chart component', () => {
@@ -67,19 +67,19 @@ describe('Anomaly chart component', () => {
describe('graph-data', () => {
it('receives a single "metric" series', () => {
const { graphData } = getTimeSeriesProps();
- expect(graphData.queries.length).toBe(1);
+ expect(graphData.metrics.length).toBe(1);
});
it('receives "metric" with all data', () => {
const { graphData } = getTimeSeriesProps();
- const query = graphData.queries[0];
- const expectedQuery = makeAnomalyGraphData(dataSetName).queries[0];
+ const query = graphData.metrics[0];
+ const expectedQuery = makeAnomalyGraphData(dataSetName).metrics[0];
expect(query).toEqual(expectedQuery);
});
it('receives the "metric" results', () => {
const { graphData } = getTimeSeriesProps();
- const { result } = graphData.queries[0];
+ const { result } = graphData.metrics[0];
const { values } = result[0];
const [metricDataset] = dataSet;
expect(values).toEqual(expect.any(Array));
@@ -266,12 +266,12 @@ describe('Anomaly chart component', () => {
describe('graph-data', () => {
it('receives a single "metric" series', () => {
const { graphData } = getTimeSeriesProps();
- expect(graphData.queries.length).toBe(1);
+ expect(graphData.metrics.length).toBe(1);
});
it('receives "metric" results and applies the offset to them', () => {
const { graphData } = getTimeSeriesProps();
- const { result } = graphData.queries[0];
+ const { result } = graphData.metrics[0];
const { values } = result[0];
const [metricDataset] = dataSet;
expect(values).toEqual(expect.any(Array));
diff --git a/spec/javascripts/monitoring/charts/column_spec.js b/spec/frontend/monitoring/components/charts/column_spec.js
index d8ac68b9484..b4539801e0f 100644
--- a/spec/javascripts/monitoring/charts/column_spec.js
+++ b/spec/frontend/monitoring/components/charts/column_spec.js
@@ -1,15 +1,21 @@
-import { shallowMount } from '@vue/test-utils';
+import { shallowMount, createLocalVue } from '@vue/test-utils';
import { GlColumnChart } from '@gitlab/ui/dist/charts';
import ColumnChart from '~/monitoring/components/charts/column.vue';
+const localVue = createLocalVue();
+
+jest.mock('~/lib/utils/icon_utils', () => ({
+ getSvgIconPathContent: jest.fn().mockResolvedValue('mockSvgPathContent'),
+}));
+
describe('Column component', () => {
let columnChart;
beforeEach(() => {
- columnChart = shallowMount(ColumnChart, {
+ columnChart = shallowMount(localVue.extend(ColumnChart), {
propsData: {
graphData: {
- queries: [
+ metrics: [
{
x_label: 'Time',
y_label: 'Usage',
@@ -28,6 +34,8 @@ describe('Column component', () => {
},
containerWidth: 100,
},
+ sync: false,
+ localVue,
});
});
diff --git a/spec/javascripts/monitoring/charts/empty_chart_spec.js b/spec/frontend/monitoring/components/charts/empty_chart_spec.js
index bbfca27dc5a..06822126b59 100644
--- a/spec/javascripts/monitoring/charts/empty_chart_spec.js
+++ b/spec/frontend/monitoring/components/charts/empty_chart_spec.js
@@ -1,15 +1,19 @@
-import { shallowMount } from '@vue/test-utils';
+import { shallowMount, createLocalVue } from '@vue/test-utils';
import EmptyChart from '~/monitoring/components/charts/empty_chart.vue';
+const localVue = createLocalVue();
+
describe('Empty Chart component', () => {
let emptyChart;
const graphTitle = 'Memory Usage';
beforeEach(() => {
- emptyChart = shallowMount(EmptyChart, {
+ emptyChart = shallowMount(localVue.extend(EmptyChart), {
propsData: {
graphTitle,
},
+ sync: false,
+ localVue,
});
});
diff --git a/spec/javascripts/monitoring/charts/heatmap_spec.js b/spec/frontend/monitoring/components/charts/heatmap_spec.js
index 9a98fc6fb05..5e2c1932e9e 100644
--- a/spec/javascripts/monitoring/charts/heatmap_spec.js
+++ b/spec/frontend/monitoring/components/charts/heatmap_spec.js
@@ -1,7 +1,7 @@
import { shallowMount } from '@vue/test-utils';
import { GlHeatmap } from '@gitlab/ui/dist/charts';
import Heatmap from '~/monitoring/components/charts/heatmap.vue';
-import { graphDataPrometheusQueryRangeMultiTrack } from '../mock_data';
+import { graphDataPrometheusQueryRangeMultiTrack } from '../../mock_data';
describe('Heatmap component', () => {
let heatmapChart;
diff --git a/spec/javascripts/monitoring/charts/single_stat_spec.js b/spec/frontend/monitoring/components/charts/single_stat_spec.js
index 127a4a7955a..78bcc400787 100644
--- a/spec/javascripts/monitoring/charts/single_stat_spec.js
+++ b/spec/frontend/monitoring/components/charts/single_stat_spec.js
@@ -1,15 +1,19 @@
-import { shallowMount } from '@vue/test-utils';
+import { shallowMount, createLocalVue } from '@vue/test-utils';
import SingleStatChart from '~/monitoring/components/charts/single_stat.vue';
-import { graphDataPrometheusQuery } from '../mock_data';
+import { graphDataPrometheusQuery } from '../../mock_data';
+
+const localVue = createLocalVue();
describe('Single Stat Chart component', () => {
let singleStatChart;
beforeEach(() => {
- singleStatChart = shallowMount(SingleStatChart, {
+ singleStatChart = shallowMount(localVue.extend(SingleStatChart), {
propsData: {
graphData: graphDataPrometheusQuery,
},
+ sync: false,
+ localVue,
});
});
diff --git a/spec/frontend/monitoring/charts/time_series_spec.js b/spec/frontend/monitoring/components/charts/time_series_spec.js
index 554535418fe..098b3408e67 100644
--- a/spec/frontend/monitoring/charts/time_series_spec.js
+++ b/spec/frontend/monitoring/components/charts/time_series_spec.js
@@ -1,9 +1,9 @@
import { shallowMount } from '@vue/test-utils';
import { setTestTimeout } from 'helpers/timeout';
-import { createStore } from '~/monitoring/stores';
import { GlLink } from '@gitlab/ui';
import { GlAreaChart, GlLineChart, GlChartSeriesLabel } from '@gitlab/ui/dist/charts';
import { shallowWrapperContainsSlotText } from 'helpers/vue_test_utils_helper';
+import { createStore } from '~/monitoring/stores';
import TimeSeries from '~/monitoring/components/charts/time_series.vue';
import * as types from '~/monitoring/stores/mutation_types';
import {
@@ -12,20 +12,14 @@ import {
mockedQueryResultPayload,
mockProjectDir,
mockHost,
-} from '../mock_data';
-
+} from '../../mock_data';
import * as iconUtils from '~/lib/utils/icon_utils';
-const mockSvgPathContent = 'mockSvgPathContent';
const mockWidgets = 'mockWidgets';
+const mockSvgPathContent = 'mockSvgPathContent';
jest.mock('~/lib/utils/icon_utils', () => ({
- getSvgIconPathContent: jest.fn().mockImplementation(
- () =>
- new Promise(resolve => {
- resolve(mockSvgPathContent);
- }),
- ),
+ getSvgIconPathContent: jest.fn().mockImplementation(() => Promise.resolve(mockSvgPathContent)),
}));
describe('Time series component', () => {
@@ -45,10 +39,14 @@ describe('Time series component', () => {
store.commit(`monitoringDashboard/${types.RECEIVE_DEPLOYMENTS_DATA_SUCCESS}`, deploymentData);
- // Mock data contains 2 panels, pick the first one
- store.commit(`monitoringDashboard/${types.SET_QUERY_RESULT}`, mockedQueryResultPayload);
+ // Mock data contains 2 panel groups, with 1 and 2 panels respectively
+ store.commit(
+ `monitoringDashboard/${types.RECEIVE_METRIC_RESULT_SUCCESS}`,
+ mockedQueryResultPayload,
+ );
- [mockGraphData] = store.state.monitoringDashboard.dashboard.panel_groups[0].metrics;
+ // Pick the second panel group and the first panel in it
+ [mockGraphData] = store.state.monitoringDashboard.dashboard.panel_groups[1].panels;
makeTimeSeriesChart = (graphData, type) =>
shallowMount(TimeSeries, {
@@ -116,6 +114,19 @@ describe('Time series component', () => {
});
});
+ it('does not throw error if data point is outside the zoom range', () => {
+ const seriesDataWithoutValue = generateSeriesData('line');
+ expect(
+ timeSeriesChart.vm.formatTooltipText({
+ ...seriesDataWithoutValue,
+ seriesData: seriesDataWithoutValue.seriesData.map(data => ({
+ ...data,
+ value: undefined,
+ })),
+ }),
+ ).toBeUndefined();
+ });
+
describe('when series is of line type', () => {
beforeEach(done => {
timeSeriesChart.vm.formatTooltipText(generateSeriesData('line'));
@@ -222,7 +233,7 @@ describe('Time series component', () => {
});
it('utilizes all data points', () => {
- const { values } = mockGraphData.queries[0].result[0];
+ const { values } = mockGraphData.metrics[0].result[0];
expect(chartData.length).toBe(1);
expect(seriesData().data.length).toBe(values.length);
diff --git a/spec/frontend/monitoring/dashboard_state_spec.js b/spec/frontend/monitoring/components/empty_state_spec.js
index 950422911eb..e985e5fb443 100644
--- a/spec/frontend/monitoring/dashboard_state_spec.js
+++ b/spec/frontend/monitoring/components/empty_state_spec.js
@@ -11,6 +11,7 @@ function createComponent(props) {
emptyGettingStartedSvgPath: '/path/to/getting-started.svg',
emptyLoadingSvgPath: '/path/to/loading.svg',
emptyNoDataSvgPath: '/path/to/no-data.svg',
+ emptyNoDataSmallSvgPath: '/path/to/no-data-small.svg',
emptyUnableToConnectSvgPath: '/path/to/unable-to-connect.svg',
},
});
diff --git a/spec/frontend/monitoring/components/group_empty_state_spec.js b/spec/frontend/monitoring/components/group_empty_state_spec.js
new file mode 100644
index 00000000000..e8ef8192067
--- /dev/null
+++ b/spec/frontend/monitoring/components/group_empty_state_spec.js
@@ -0,0 +1,34 @@
+import { shallowMount } from '@vue/test-utils';
+import GroupEmptyState from '~/monitoring/components/group_empty_state.vue';
+import { metricStates } from '~/monitoring/constants';
+
+function createComponent(props) {
+ return shallowMount(GroupEmptyState, {
+ propsData: {
+ ...props,
+ documentationPath: '/path/to/docs',
+ settingsPath: '/path/to/settings',
+ svgPath: '/path/to/empty-group-illustration.svg',
+ },
+ });
+}
+
+describe('GroupEmptyState', () => {
+ const supportedStates = [
+ metricStates.NO_DATA,
+ metricStates.TIMEOUT,
+ metricStates.CONNECTION_FAILED,
+ metricStates.BAD_QUERY,
+ metricStates.LOADING,
+ metricStates.UNKNOWN_ERROR,
+ 'FOO STATE', // does not fail with unknown states
+ ];
+
+ test.each(supportedStates)('Renders an empty state for %s', selectedState => {
+ const wrapper = createComponent({ selectedState });
+
+ expect(wrapper.element).toMatchSnapshot();
+ // slot is not rendered by the stub, test it separately
+ expect(wrapper.vm.currentState.slottedDescription).toMatchSnapshot();
+ });
+});
diff --git a/spec/frontend/monitoring/embed/embed_spec.js b/spec/frontend/monitoring/embed/embed_spec.js
index 3e22b0858e6..831ab1ed157 100644
--- a/spec/frontend/monitoring/embed/embed_spec.js
+++ b/spec/frontend/monitoring/embed/embed_spec.js
@@ -1,8 +1,8 @@
import { createLocalVue, shallowMount } from '@vue/test-utils';
import Vuex from 'vuex';
-import Embed from '~/monitoring/components/embed.vue';
-import MonitorTimeSeriesChart from '~/monitoring/components/charts/time_series.vue';
+import PanelType from 'ee_else_ce/monitoring/components/panel_type.vue';
import { TEST_HOST } from 'helpers/test_constants';
+import Embed from '~/monitoring/components/embed.vue';
import { groups, initialState, metricsData, metricsWithData } from './mock_data';
const localVue = createLocalVue();
@@ -12,6 +12,7 @@ describe('Embed', () => {
let wrapper;
let store;
let actions;
+ let metricsWithDataGetter;
function mountComponent() {
wrapper = shallowMount(Embed, {
@@ -31,11 +32,16 @@ describe('Embed', () => {
fetchMetricsData: () => {},
};
+ metricsWithDataGetter = jest.fn();
+
store = new Vuex.Store({
modules: {
monitoringDashboard: {
namespaced: true,
actions,
+ getters: {
+ metricsWithData: () => metricsWithDataGetter,
+ },
state: initialState,
},
},
@@ -43,6 +49,7 @@ describe('Embed', () => {
});
afterEach(() => {
+ metricsWithDataGetter.mockClear();
if (wrapper) {
wrapper.destroy();
}
@@ -55,28 +62,28 @@ describe('Embed', () => {
it('shows an empty state when no metrics are present', () => {
expect(wrapper.find('.metrics-embed').exists()).toBe(true);
- expect(wrapper.find(MonitorTimeSeriesChart).exists()).toBe(false);
+ expect(wrapper.find(PanelType).exists()).toBe(false);
});
});
describe('metrics are available', () => {
beforeEach(() => {
store.state.monitoringDashboard.dashboard.panel_groups = groups;
- store.state.monitoringDashboard.dashboard.panel_groups[0].metrics = metricsData;
- store.state.monitoringDashboard.metricsWithData = metricsWithData;
+ store.state.monitoringDashboard.dashboard.panel_groups[0].panels = metricsData;
+
+ metricsWithDataGetter.mockReturnValue(metricsWithData);
mountComponent();
});
it('shows a chart when metrics are present', () => {
- wrapper.setProps({});
expect(wrapper.find('.metrics-embed').exists()).toBe(true);
- expect(wrapper.find(MonitorTimeSeriesChart).exists()).toBe(true);
- expect(wrapper.findAll(MonitorTimeSeriesChart).length).toBe(2);
+ expect(wrapper.find(PanelType).exists()).toBe(true);
+ expect(wrapper.findAll(PanelType).length).toBe(2);
});
it('includes groupId with dashboardUrl', () => {
- expect(wrapper.find(MonitorTimeSeriesChart).props('groupId')).toBe(TEST_HOST);
+ expect(wrapper.find(PanelType).props('groupId')).toBe(TEST_HOST);
});
});
});
diff --git a/spec/frontend/monitoring/embed/mock_data.js b/spec/frontend/monitoring/embed/mock_data.js
index 1685021fd4b..1dc31846034 100644
--- a/spec/frontend/monitoring/embed/mock_data.js
+++ b/spec/frontend/monitoring/embed/mock_data.js
@@ -42,48 +42,42 @@ export const metrics = [
},
];
-const queries = [
+const result = [
{
- result: [
- {
- values: [
- ['Mon', 1220],
- ['Tue', 932],
- ['Wed', 901],
- ['Thu', 934],
- ['Fri', 1290],
- ['Sat', 1330],
- ['Sun', 1320],
- ],
- },
+ values: [
+ ['Mon', 1220],
+ ['Tue', 932],
+ ['Wed', 901],
+ ['Thu', 934],
+ ['Fri', 1290],
+ ['Sat', 1330],
+ ['Sun', 1320],
],
},
];
export const metricsData = [
{
- queries,
metrics: [
{
metric_id: 15,
+ result,
},
],
},
{
- queries,
metrics: [
{
metric_id: 16,
+ result,
},
],
},
];
-export const initialState = {
- monitoringDashboard: {},
+export const initialState = () => ({
dashboard: {
panel_groups: [],
},
- metricsWithData: [],
useDashboardEndpoint: true,
-};
+});
diff --git a/spec/frontend/monitoring/mock_data.js b/spec/frontend/monitoring/mock_data.js
index c42366ab484..6ded22b4a3f 100644
--- a/spec/frontend/monitoring/mock_data.js
+++ b/spec/frontend/monitoring/mock_data.js
@@ -1,5 +1,10 @@
+// This import path needs to be relative for now because this mock data is used in
+// Karma specs too, where the helpers/test_constants alias can not be resolved
+import { TEST_HOST } from '../helpers/test_constants';
+
export const mockHost = 'http://test.host';
export const mockProjectDir = '/frontend-fixtures/environments-project';
+export const mockApiEndpoint = `${TEST_HOST}/monitoring/mock`;
export const anomalyDeploymentData = [
{
@@ -110,9 +115,6 @@ export const anomalyMockGraphData = {
type: 'anomaly-chart',
weight: 3,
metrics: [
- // Not used
- ],
- queries: [
{
metricId: '90',
id: 'metric',
@@ -238,6 +240,11 @@ export const metricsNewGroupsAPIResponse = [
},
];
+export const mockedEmptyResult = {
+ metricId: '1_response_metrics_nginx_ingress_throughput_status_code',
+ result: [],
+};
+
export const mockedQueryResultPayload = {
metricId: '17_system_metrics_kubernetes_container_memory_average',
result: [
@@ -281,8 +288,75 @@ export const mockedQueryResultPayload = {
],
};
+export const mockedQueryResultPayloadCoresTotal = {
+ metricId: '13_system_metrics_kubernetes_container_cores_total',
+ result: [
+ {
+ metric: {},
+ values: [
+ [1563272065.589, '9.396484375'],
+ [1563272125.589, '9.333984375'],
+ [1563272185.589, '9.333984375'],
+ [1563272245.589, '9.333984375'],
+ [1563272305.589, '9.333984375'],
+ [1563272365.589, '9.333984375'],
+ [1563272425.589, '9.38671875'],
+ [1563272485.589, '9.333984375'],
+ [1563272545.589, '9.333984375'],
+ [1563272605.589, '9.333984375'],
+ [1563272665.589, '9.333984375'],
+ [1563272725.589, '9.333984375'],
+ [1563272785.589, '9.396484375'],
+ [1563272845.589, '9.333984375'],
+ [1563272905.589, '9.333984375'],
+ [1563272965.589, '9.3984375'],
+ [1563273025.589, '9.337890625'],
+ [1563273085.589, '9.34765625'],
+ [1563273145.589, '9.337890625'],
+ [1563273205.589, '9.337890625'],
+ [1563273265.589, '9.337890625'],
+ [1563273325.589, '9.337890625'],
+ [1563273385.589, '9.337890625'],
+ [1563273445.589, '9.337890625'],
+ [1563273505.589, '9.337890625'],
+ [1563273565.589, '9.337890625'],
+ [1563273625.589, '9.337890625'],
+ [1563273685.589, '9.337890625'],
+ [1563273745.589, '9.337890625'],
+ [1563273805.589, '9.337890625'],
+ [1563273865.589, '9.390625'],
+ [1563273925.589, '9.390625'],
+ ],
+ },
+ ],
+};
+
export const metricsGroupsAPIResponse = [
{
+ group: 'Response metrics (NGINX Ingress VTS)',
+ priority: 10,
+ panels: [
+ {
+ metrics: [
+ {
+ id: 'response_metrics_nginx_ingress_throughput_status_code',
+ label: 'Status Code',
+ metric_id: 1,
+ prometheus_endpoint_path:
+ '/root/autodevops-deploy/environments/32/prometheus/api/v1/query_range?query=sum%28rate%28nginx_upstream_responses_total%7Bupstream%3D~%22%25%7Bkube_namespace%7D-%25%7Bci_environment_slug%7D-.%2A%22%7D%5B2m%5D%29%29+by+%28status_code%29',
+ query_range:
+ 'sum(rate(nginx_upstream_responses_total{upstream=~"%{kube_namespace}-%{ci_environment_slug}-.*"}[2m])) by (status_code)',
+ unit: 'req / sec',
+ },
+ ],
+ title: 'Throughput',
+ type: 'area-chart',
+ weight: 1,
+ y_label: 'Requests / Sec',
+ },
+ ],
+ },
+ {
group: 'System metrics (Kubernetes)',
priority: 5,
panels: [
@@ -463,3 +537,130 @@ export const dashboardGitResponse = [
path: '.gitlab/dashboards/dashboard_2.yml',
},
];
+
+export const graphDataPrometheusQuery = {
+ title: 'Super Chart A2',
+ type: 'single-stat',
+ weight: 2,
+ metrics: [
+ {
+ id: 'metric_a1',
+ metricId: '2',
+ query: 'max(go_memstats_alloc_bytes{job="prometheus"}) by (job) /1024/1024',
+ unit: 'MB',
+ label: 'Total Consumption',
+ metric_id: 2,
+ prometheus_endpoint_path:
+ '/root/kubernetes-gke-project/environments/35/prometheus/api/v1/query?query=max%28go_memstats_alloc_bytes%7Bjob%3D%22prometheus%22%7D%29+by+%28job%29+%2F1024%2F1024',
+ result: [
+ {
+ metric: { job: 'prometheus' },
+ value: ['2019-06-26T21:03:20.881Z', 91],
+ },
+ ],
+ },
+ ],
+};
+
+export const graphDataPrometheusQueryRange = {
+ title: 'Super Chart A1',
+ type: 'area-chart',
+ weight: 2,
+ metrics: [
+ {
+ id: 'metric_a1',
+ metricId: '2',
+ query_range:
+ 'avg(sum(container_memory_usage_bytes{container_name!="POD",pod_name=~"^%{ci_environment_slug}-(.*)",namespace="%{kube_namespace}"}) by (job)) without (job) /1024/1024/1024',
+ unit: 'MB',
+ label: 'Total Consumption',
+ metric_id: 2,
+ prometheus_endpoint_path:
+ '/root/kubernetes-gke-project/environments/35/prometheus/api/v1/query?query=max%28go_memstats_alloc_bytes%7Bjob%3D%22prometheus%22%7D%29+by+%28job%29+%2F1024%2F1024',
+ result: [
+ {
+ metric: {},
+ values: [[1495700554.925, '8.0390625'], [1495700614.925, '8.0390625']],
+ },
+ ],
+ },
+ ],
+};
+
+export const graphDataPrometheusQueryRangeMultiTrack = {
+ title: 'Super Chart A3',
+ type: 'heatmap',
+ weight: 3,
+ x_label: 'Status Code',
+ y_label: 'Time',
+ metrics: [
+ {
+ metricId: '1',
+ id: 'response_metrics_nginx_ingress_throughput_status_code',
+ query_range:
+ 'sum(rate(nginx_upstream_responses_total{upstream=~"%{kube_namespace}-%{ci_environment_slug}-.*"}[60m])) by (status_code)',
+ unit: 'req / sec',
+ label: 'Status Code',
+ metric_id: 1,
+ prometheus_endpoint_path:
+ '/root/rails_nodb/environments/3/prometheus/api/v1/query_range?query=sum%28rate%28nginx_upstream_responses_total%7Bupstream%3D~%22%25%7Bkube_namespace%7D-%25%7Bci_environment_slug%7D-.%2A%22%7D%5B2m%5D%29%29+by+%28status_code%29',
+ result: [
+ {
+ metric: { status_code: '1xx' },
+ values: [
+ ['2019-08-30T15:00:00.000Z', 0],
+ ['2019-08-30T16:00:00.000Z', 2],
+ ['2019-08-30T17:00:00.000Z', 0],
+ ['2019-08-30T18:00:00.000Z', 0],
+ ['2019-08-30T19:00:00.000Z', 0],
+ ['2019-08-30T20:00:00.000Z', 3],
+ ],
+ },
+ {
+ metric: { status_code: '2xx' },
+ values: [
+ ['2019-08-30T15:00:00.000Z', 1],
+ ['2019-08-30T16:00:00.000Z', 3],
+ ['2019-08-30T17:00:00.000Z', 6],
+ ['2019-08-30T18:00:00.000Z', 10],
+ ['2019-08-30T19:00:00.000Z', 8],
+ ['2019-08-30T20:00:00.000Z', 6],
+ ],
+ },
+ {
+ metric: { status_code: '3xx' },
+ values: [
+ ['2019-08-30T15:00:00.000Z', 1],
+ ['2019-08-30T16:00:00.000Z', 2],
+ ['2019-08-30T17:00:00.000Z', 3],
+ ['2019-08-30T18:00:00.000Z', 3],
+ ['2019-08-30T19:00:00.000Z', 2],
+ ['2019-08-30T20:00:00.000Z', 1],
+ ],
+ },
+ {
+ metric: { status_code: '4xx' },
+ values: [
+ ['2019-08-30T15:00:00.000Z', 2],
+ ['2019-08-30T16:00:00.000Z', 0],
+ ['2019-08-30T17:00:00.000Z', 0],
+ ['2019-08-30T18:00:00.000Z', 2],
+ ['2019-08-30T19:00:00.000Z', 0],
+ ['2019-08-30T20:00:00.000Z', 2],
+ ],
+ },
+ {
+ metric: { status_code: '5xx' },
+ values: [
+ ['2019-08-30T15:00:00.000Z', 0],
+ ['2019-08-30T16:00:00.000Z', 1],
+ ['2019-08-30T17:00:00.000Z', 0],
+ ['2019-08-30T18:00:00.000Z', 0],
+ ['2019-08-30T19:00:00.000Z', 0],
+ ['2019-08-30T20:00:00.000Z', 2],
+ ],
+ },
+ ],
+ },
+ ],
+};
diff --git a/spec/frontend/monitoring/panel_type_spec.js b/spec/frontend/monitoring/panel_type_spec.js
index 54a63e7f61f..c869d77673e 100644
--- a/spec/frontend/monitoring/panel_type_spec.js
+++ b/spec/frontend/monitoring/panel_type_spec.js
@@ -20,6 +20,16 @@ describe('Panel Type component', () => {
const dashboardWidth = 100;
const exampleText = 'example_text';
+ const createWrapper = props =>
+ shallowMount(PanelType, {
+ propsData: {
+ ...props,
+ },
+ store,
+ sync: false,
+ attachToDocument: true,
+ });
+
beforeEach(() => {
setTestTimeout(1000);
axiosMock = new AxiosMockAdapter(axios);
@@ -33,17 +43,12 @@ describe('Panel Type component', () => {
let glEmptyChart;
// Deep clone object before modifying
const graphDataNoResult = JSON.parse(JSON.stringify(graphDataPrometheusQueryRange));
- graphDataNoResult.queries[0].result = [];
+ graphDataNoResult.metrics[0].result = [];
beforeEach(() => {
- panelType = shallowMount(PanelType, {
- propsData: {
- clipboardText: 'dashboard_link',
- dashboardWidth,
- graphData: graphDataNoResult,
- },
- sync: false,
- attachToDocument: true,
+ panelType = createWrapper({
+ dashboardWidth,
+ graphData: graphDataNoResult,
});
});
@@ -68,39 +73,32 @@ describe('Panel Type component', () => {
});
});
- describe('when Graph data is available', () => {
- const propsData = {
- clipboardText: exampleText,
- dashboardWidth,
- graphData: graphDataPrometheusQueryRange,
- };
-
- beforeEach(done => {
+ describe('when graph data is available', () => {
+ beforeEach(() => {
store = createStore();
- panelType = shallowMount(PanelType, {
- propsData,
- store,
- sync: false,
- attachToDocument: true,
+ panelType = createWrapper({
+ dashboardWidth,
+ graphData: graphDataPrometheusQueryRange,
});
- panelType.vm.$nextTick(done);
});
afterEach(() => {
panelType.destroy();
});
+ it('sets no clipboard copy link on dropdown by default', () => {
+ const link = () => panelType.find('.js-chart-link');
+ expect(link().exists()).toBe(false);
+ });
+
describe('Time Series Chart panel type', () => {
it('is rendered', () => {
expect(panelType.find(TimeSeriesChart).isVueInstance()).toBe(true);
expect(panelType.find(TimeSeriesChart).exists()).toBe(true);
});
- it('sets clipboard text on the dropdown', () => {
- const link = () => panelType.find('.js-chart-link');
- const clipboardText = () => link().element.dataset.clipboardText;
-
- expect(clipboardText()).toBe(exampleText);
+ it('includes a default group id', () => {
+ expect(panelType.vm.groupId).toBe('panel-type-chart');
});
});
@@ -119,6 +117,30 @@ describe('Panel Type component', () => {
});
});
+ describe('when cliboard data is available', () => {
+ const clipboardText = 'A value to copy.';
+
+ beforeEach(() => {
+ store = createStore();
+ panelType = createWrapper({
+ clipboardText,
+ dashboardWidth,
+ graphData: graphDataPrometheusQueryRange,
+ });
+ });
+
+ afterEach(() => {
+ panelType.destroy();
+ });
+
+ it('sets clipboard text on the dropdown', () => {
+ const link = () => panelType.find('.js-chart-link');
+
+ expect(link().exists()).toBe(true);
+ expect(link().element.dataset.clipboardText).toBe(clipboardText);
+ });
+ });
+
describe('when downloading metrics data as CSV', () => {
beforeEach(done => {
graphDataPrometheusQueryRange.y_label = 'metric';
@@ -143,7 +165,7 @@ describe('Panel Type component', () => {
describe('csvText', () => {
it('converts metrics data from json to csv', () => {
const header = `timestamp,${graphDataPrometheusQueryRange.y_label}`;
- const data = graphDataPrometheusQueryRange.queries[0].result[0].values;
+ const data = graphDataPrometheusQueryRange.metrics[0].result[0].values;
const firstRow = `${data[0][0]},${data[0][1]}`;
const secondRow = `${data[1][0]},${data[1][1]}`;
diff --git a/spec/frontend/monitoring/store/actions_spec.js b/spec/frontend/monitoring/store/actions_spec.js
index d4bc613ffea..f38bd4384e2 100644
--- a/spec/frontend/monitoring/store/actions_spec.js
+++ b/spec/frontend/monitoring/store/actions_spec.js
@@ -1,14 +1,14 @@
import MockAdapter from 'axios-mock-adapter';
-import { TEST_HOST } from 'helpers/test_constants';
import testAction from 'helpers/vuex_action_helper';
+import Tracking from '~/tracking';
import axios from '~/lib/utils/axios_utils';
import statusCodes from '~/lib/utils/http_status';
import { backOff } from '~/lib/utils/common_utils';
+import createFlash from '~/flash';
import store from '~/monitoring/stores';
import * as types from '~/monitoring/stores/mutation_types';
import {
- backOffRequest,
fetchDashboard,
receiveMetricsDashboardSuccess,
receiveMetricsDashboardFailure,
@@ -16,7 +16,6 @@ import {
fetchEnvironmentsData,
fetchPrometheusMetrics,
fetchPrometheusMetric,
- requestMetricsData,
setEndpoints,
setGettingStartedEmptyState,
} from '~/monitoring/stores/actions';
@@ -30,6 +29,7 @@ import {
} from '../mock_data';
jest.mock('~/lib/utils/common_utils');
+jest.mock('~/flash');
const resetStore = str => {
str.replaceState({
@@ -39,71 +39,36 @@ const resetStore = str => {
});
};
-const MAX_REQUESTS = 3;
-
-describe('Monitoring store helpers', () => {
+describe('Monitoring store actions', () => {
let mock;
-
- // Mock underlying `backOff` function to remove in-built delay.
- backOff.mockImplementation(
- callback =>
- new Promise((resolve, reject) => {
- const stop = arg => (arg instanceof Error ? reject(arg) : resolve(arg));
- const next = () => callback(next, stop);
- callback(next, stop);
- }),
- );
-
beforeEach(() => {
mock = new MockAdapter(axios);
- });
- afterEach(() => {
- mock.restore();
- });
+ // Mock `backOff` function to remove exponential algorithm delay.
+ jest.useFakeTimers();
- describe('backOffRequest', () => {
- it('returns immediately when recieving a 200 status code', () => {
- mock.onGet(TEST_HOST).reply(200);
-
- return backOffRequest(() => axios.get(TEST_HOST)).then(() => {
- expect(mock.history.get.length).toBe(1);
- });
- });
-
- it(`repeats the network call ${MAX_REQUESTS} times when receiving a 204 response`, done => {
- mock.onGet(TEST_HOST).reply(statusCodes.NO_CONTENT, {});
-
- backOffRequest(() => axios.get(TEST_HOST))
- .then(done.fail)
- .catch(() => {
- expect(mock.history.get.length).toBe(MAX_REQUESTS);
- done();
+ backOff.mockImplementation(callback => {
+ const q = new Promise((resolve, reject) => {
+ const stop = arg => (arg instanceof Error ? reject(arg) : resolve(arg));
+ const next = () => callback(next, stop);
+ // Define a timeout based on a mock timer
+ setTimeout(() => {
+ callback(next, stop);
});
+ });
+ // Run all resolved promises in chain
+ jest.runOnlyPendingTimers();
+ return q;
});
});
-});
-
-describe('Monitoring store actions', () => {
- let mock;
- beforeEach(() => {
- mock = new MockAdapter(axios);
- });
afterEach(() => {
resetStore(store);
- mock.restore();
- });
- describe('requestMetricsData', () => {
- it('sets emptyState to loading', () => {
- const commit = jest.fn();
- const { state } = store;
- requestMetricsData({
- state,
- commit,
- });
- expect(commit).toHaveBeenCalledWith(types.REQUEST_METRICS_DATA);
- });
+ mock.reset();
+
+ backOff.mockReset();
+ createFlash.mockReset();
});
+
describe('fetchDeploymentsData', () => {
it('commits RECEIVE_DEPLOYMENTS_DATA_SUCCESS on error', done => {
const dispatch = jest.fn();
@@ -230,8 +195,9 @@ describe('Monitoring store actions', () => {
state = storeState();
state.dashboardEndpoint = '/dashboard';
});
- it('dispatches receive and success actions', done => {
+ it('on success, dispatches receive and success actions', done => {
const params = {};
+ document.body.dataset.page = 'projects:environments:metrics';
mock.onGet(state.dashboardEndpoint).reply(200, response);
fetchDashboard(
{
@@ -250,24 +216,61 @@ describe('Monitoring store actions', () => {
})
.catch(done.fail);
});
- it('dispatches failure action', done => {
- const params = {};
- mock.onGet(state.dashboardEndpoint).reply(500);
- fetchDashboard(
- {
- state,
- dispatch,
- },
- params,
- )
- .then(() => {
- expect(dispatch).toHaveBeenCalledWith(
- 'receiveMetricsDashboardFailure',
- new Error('Request failed with status code 500'),
- );
- done();
- })
- .catch(done.fail);
+
+ describe('on failure', () => {
+ let result;
+ let errorResponse;
+ beforeEach(() => {
+ const params = {};
+ result = () => {
+ mock.onGet(state.dashboardEndpoint).replyOnce(500, errorResponse);
+ return fetchDashboard({ state, dispatch }, params);
+ };
+ });
+
+ it('dispatches a failure action', done => {
+ errorResponse = {};
+ result()
+ .then(() => {
+ expect(dispatch).toHaveBeenCalledWith(
+ 'receiveMetricsDashboardFailure',
+ new Error('Request failed with status code 500'),
+ );
+ expect(createFlash).toHaveBeenCalled();
+ done();
+ })
+ .catch(done.fail);
+ });
+
+ it('dispatches a failure action when a message is returned', done => {
+ const message = 'Something went wrong with Prometheus!';
+ errorResponse = { message };
+ result()
+ .then(() => {
+ expect(dispatch).toHaveBeenCalledWith(
+ 'receiveMetricsDashboardFailure',
+ new Error('Request failed with status code 500'),
+ );
+ expect(createFlash).toHaveBeenCalledWith(expect.stringContaining(message));
+ done();
+ })
+ .catch(done.fail);
+ });
+
+ it('does not show a flash error when showErrorBanner is disabled', done => {
+ state.showErrorBanner = false;
+
+ result()
+ .then(() => {
+ expect(dispatch).toHaveBeenCalledWith(
+ 'receiveMetricsDashboardFailure',
+ new Error('Request failed with status code 500'),
+ );
+ expect(createFlash).not.toHaveBeenCalled();
+ done();
+ })
+ .catch(done.fail);
+ });
});
});
describe('receiveMetricsDashboardSuccess', () => {
@@ -339,78 +342,206 @@ describe('Monitoring store actions', () => {
});
});
describe('fetchPrometheusMetrics', () => {
+ const params = {};
let commit;
let dispatch;
+ let state;
+
beforeEach(() => {
+ jest.spyOn(Tracking, 'event');
commit = jest.fn();
dispatch = jest.fn();
+ state = storeState();
});
+
it('commits empty state when state.groups is empty', done => {
- const state = storeState();
- const params = {};
- fetchPrometheusMetrics(
- {
- state,
- commit,
- dispatch,
- },
- params,
- )
+ const getters = {
+ metricsWithData: () => [],
+ };
+ fetchPrometheusMetrics({ state, commit, dispatch, getters }, params)
.then(() => {
- expect(commit).toHaveBeenCalledWith(types.SET_NO_DATA_EMPTY_STATE);
+ expect(Tracking.event).toHaveBeenCalledWith(
+ document.body.dataset.page,
+ 'dashboard_fetch',
+ {
+ label: 'custom_metrics_dashboard',
+ property: 'count',
+ value: 0,
+ },
+ );
expect(dispatch).not.toHaveBeenCalled();
+ expect(createFlash).not.toHaveBeenCalled();
done();
})
.catch(done.fail);
});
it('dispatches fetchPrometheusMetric for each panel query', done => {
- const params = {};
- const state = storeState();
state.dashboard.panel_groups = metricsDashboardResponse.dashboard.panel_groups;
- const metric = state.dashboard.panel_groups[0].panels[0].metrics[0];
- fetchPrometheusMetrics(
- {
- state,
- commit,
- dispatch,
- },
- params,
- )
+ const [metric] = state.dashboard.panel_groups[0].panels[0].metrics;
+ const getters = {
+ metricsWithData: () => [metric.id],
+ };
+
+ fetchPrometheusMetrics({ state, commit, dispatch, getters }, params)
.then(() => {
- expect(dispatch).toHaveBeenCalledTimes(3);
expect(dispatch).toHaveBeenCalledWith('fetchPrometheusMetric', {
metric,
params,
});
+
+ expect(Tracking.event).toHaveBeenCalledWith(
+ document.body.dataset.page,
+ 'dashboard_fetch',
+ {
+ label: 'custom_metrics_dashboard',
+ property: 'count',
+ value: 1,
+ },
+ );
+
done();
})
.catch(done.fail);
done();
});
- });
- describe('fetchPrometheusMetric', () => {
- it('commits prometheus query result', done => {
- const commit = jest.fn();
- const params = {
- start: '2019-08-06T12:40:02.184Z',
- end: '2019-08-06T20:40:02.184Z',
- };
- const metric = metricsDashboardResponse.dashboard.panel_groups[0].panels[0].metrics[0];
- const state = storeState();
- const data = metricsGroupsAPIResponse[0].panels[0].metrics[0];
- const response = {
- data,
- };
- mock.onGet('http://test').reply(200, response);
- fetchPrometheusMetric({ state, commit }, { metric, params })
+
+ it('dispatches fetchPrometheusMetric for each panel query, handles an error', done => {
+ state.dashboard.panel_groups = metricsDashboardResponse.dashboard.panel_groups;
+ const metric = state.dashboard.panel_groups[0].panels[0].metrics[0];
+
+ // Mock having one out of three metrics failing
+ dispatch.mockRejectedValueOnce(new Error('Error fetching this metric'));
+ dispatch.mockResolvedValue();
+
+ fetchPrometheusMetrics({ state, commit, dispatch }, params)
.then(() => {
- expect(commit).toHaveBeenCalledWith(types.SET_QUERY_RESULT, {
- metricId: metric.metric_id,
- result: data.result,
+ expect(dispatch).toHaveBeenCalledTimes(3);
+ expect(dispatch).toHaveBeenCalledWith('fetchPrometheusMetric', {
+ metric,
+ params,
});
+
+ expect(createFlash).toHaveBeenCalledTimes(1);
+
done();
})
.catch(done.fail);
+ done();
+ });
+ });
+ describe('fetchPrometheusMetric', () => {
+ const params = {
+ start: '2019-08-06T12:40:02.184Z',
+ end: '2019-08-06T20:40:02.184Z',
+ };
+ let metric;
+ let state;
+ let data;
+
+ beforeEach(() => {
+ state = storeState();
+ [metric] = metricsDashboardResponse.dashboard.panel_groups[0].panels[0].metrics;
+ [data] = metricsGroupsAPIResponse[0].panels[0].metrics;
+ });
+
+ it('commits result', done => {
+ mock.onGet('http://test').reply(200, { data }); // One attempt
+
+ testAction(
+ fetchPrometheusMetric,
+ { metric, params },
+ state,
+ [
+ {
+ type: types.REQUEST_METRIC_RESULT,
+ payload: {
+ metricId: metric.metric_id,
+ },
+ },
+ {
+ type: types.RECEIVE_METRIC_RESULT_SUCCESS,
+ payload: {
+ metricId: metric.metric_id,
+ result: data.result,
+ },
+ },
+ ],
+ [],
+ () => {
+ expect(mock.history.get).toHaveLength(1);
+ done();
+ },
+ ).catch(done.fail);
+ });
+
+ it('commits result, when waiting for results', done => {
+ // Mock multiple attempts while the cache is filling up
+ mock.onGet('http://test').replyOnce(statusCodes.NO_CONTENT);
+ mock.onGet('http://test').replyOnce(statusCodes.NO_CONTENT);
+ mock.onGet('http://test').replyOnce(statusCodes.NO_CONTENT);
+ mock.onGet('http://test').reply(200, { data }); // 4th attempt
+
+ testAction(
+ fetchPrometheusMetric,
+ { metric, params },
+ state,
+ [
+ {
+ type: types.REQUEST_METRIC_RESULT,
+ payload: {
+ metricId: metric.metric_id,
+ },
+ },
+ {
+ type: types.RECEIVE_METRIC_RESULT_SUCCESS,
+ payload: {
+ metricId: metric.metric_id,
+ result: data.result,
+ },
+ },
+ ],
+ [],
+ () => {
+ expect(mock.history.get).toHaveLength(4);
+ done();
+ },
+ ).catch(done.fail);
+ });
+
+ it('commits failure, when waiting for results and getting a server error', done => {
+ // Mock multiple attempts while the cache is filling up and fails
+ mock.onGet('http://test').replyOnce(statusCodes.NO_CONTENT);
+ mock.onGet('http://test').replyOnce(statusCodes.NO_CONTENT);
+ mock.onGet('http://test').replyOnce(statusCodes.NO_CONTENT);
+ mock.onGet('http://test').reply(500); // 4th attempt
+
+ const error = new Error('Request failed with status code 500');
+
+ testAction(
+ fetchPrometheusMetric,
+ { metric, params },
+ state,
+ [
+ {
+ type: types.REQUEST_METRIC_RESULT,
+ payload: {
+ metricId: metric.metric_id,
+ },
+ },
+ {
+ type: types.RECEIVE_METRIC_RESULT_FAILURE,
+ payload: {
+ metricId: metric.metric_id,
+ error,
+ },
+ },
+ ],
+ [],
+ ).catch(e => {
+ expect(mock.history.get).toHaveLength(4);
+ expect(e).toEqual(error);
+ done();
+ });
});
});
});
diff --git a/spec/frontend/monitoring/store/getters_spec.js b/spec/frontend/monitoring/store/getters_spec.js
new file mode 100644
index 00000000000..9e325fe3cf9
--- /dev/null
+++ b/spec/frontend/monitoring/store/getters_spec.js
@@ -0,0 +1,217 @@
+import * as getters from '~/monitoring/stores/getters';
+import mutations from '~/monitoring/stores/mutations';
+import * as types from '~/monitoring/stores/mutation_types';
+import { metricStates } from '~/monitoring/constants';
+import {
+ metricsGroupsAPIResponse,
+ mockedEmptyResult,
+ mockedQueryResultPayload,
+ mockedQueryResultPayloadCoresTotal,
+} from '../mock_data';
+
+describe('Monitoring store Getters', () => {
+ describe('getMetricStates', () => {
+ let setupState;
+ let state;
+ let getMetricStates;
+
+ beforeEach(() => {
+ setupState = (initState = {}) => {
+ state = initState;
+ getMetricStates = getters.getMetricStates(state);
+ };
+ });
+
+ it('has method-style access', () => {
+ setupState();
+
+ expect(getMetricStates).toEqual(expect.any(Function));
+ });
+
+ it('when dashboard has no panel groups, returns empty', () => {
+ setupState({
+ dashboard: {
+ panel_groups: [],
+ },
+ });
+
+ expect(getMetricStates()).toEqual([]);
+ });
+
+ describe('when the dashboard is set', () => {
+ let groups;
+ beforeEach(() => {
+ setupState({
+ dashboard: { panel_groups: [] },
+ });
+ mutations[types.RECEIVE_METRICS_DATA_SUCCESS](state, metricsGroupsAPIResponse);
+ groups = state.dashboard.panel_groups;
+ });
+
+ it('no loaded metric returns empty', () => {
+ expect(getMetricStates()).toEqual([]);
+ });
+
+ it('on an empty metric with no result, returns NO_DATA', () => {
+ mutations[types.RECEIVE_METRICS_DATA_SUCCESS](state, metricsGroupsAPIResponse);
+ mutations[types.RECEIVE_METRIC_RESULT_SUCCESS](state, mockedEmptyResult);
+
+ expect(getMetricStates()).toEqual([metricStates.NO_DATA]);
+ });
+
+ it('on a metric with a result, returns OK', () => {
+ mutations[types.RECEIVE_METRICS_DATA_SUCCESS](state, metricsGroupsAPIResponse);
+ mutations[types.RECEIVE_METRIC_RESULT_SUCCESS](state, mockedQueryResultPayload);
+
+ expect(getMetricStates()).toEqual([metricStates.OK]);
+ });
+
+ it('on a metric with an error, returns an error', () => {
+ mutations[types.RECEIVE_METRICS_DATA_SUCCESS](state, metricsGroupsAPIResponse);
+ mutations[types.RECEIVE_METRIC_RESULT_FAILURE](state, {
+ metricId: groups[0].panels[0].metrics[0].metricId,
+ });
+
+ expect(getMetricStates()).toEqual([metricStates.UNKNOWN_ERROR]);
+ });
+
+ it('on multiple metrics with results, returns OK', () => {
+ mutations[types.RECEIVE_METRICS_DATA_SUCCESS](state, metricsGroupsAPIResponse);
+ mutations[types.RECEIVE_METRIC_RESULT_SUCCESS](state, mockedQueryResultPayload);
+ mutations[types.RECEIVE_METRIC_RESULT_SUCCESS](state, mockedQueryResultPayloadCoresTotal);
+
+ expect(getMetricStates()).toEqual([metricStates.OK]);
+
+ // Filtered by groups
+ expect(getMetricStates(state.dashboard.panel_groups[0].key)).toEqual([]);
+ expect(getMetricStates(state.dashboard.panel_groups[1].key)).toEqual([metricStates.OK]);
+ });
+ it('on multiple metrics errors', () => {
+ mutations[types.RECEIVE_METRICS_DATA_SUCCESS](state, metricsGroupsAPIResponse);
+
+ mutations[types.RECEIVE_METRIC_RESULT_FAILURE](state, {
+ metricId: groups[0].panels[0].metrics[0].metricId,
+ });
+ mutations[types.RECEIVE_METRIC_RESULT_FAILURE](state, {
+ metricId: groups[1].panels[0].metrics[0].metricId,
+ });
+ mutations[types.RECEIVE_METRIC_RESULT_FAILURE](state, {
+ metricId: groups[1].panels[1].metrics[0].metricId,
+ });
+
+ // Entire dashboard fails
+ expect(getMetricStates()).toEqual([metricStates.UNKNOWN_ERROR]);
+ expect(getMetricStates(groups[0].key)).toEqual([metricStates.UNKNOWN_ERROR]);
+ expect(getMetricStates(groups[1].key)).toEqual([metricStates.UNKNOWN_ERROR]);
+ });
+
+ it('on multiple metrics with errors', () => {
+ mutations[types.RECEIVE_METRICS_DATA_SUCCESS](state, metricsGroupsAPIResponse);
+
+ // An success in 1 group
+ mutations[types.RECEIVE_METRIC_RESULT_SUCCESS](state, mockedQueryResultPayload);
+ // An error in 2 groups
+ mutations[types.RECEIVE_METRIC_RESULT_FAILURE](state, {
+ metricId: groups[0].panels[0].metrics[0].metricId,
+ });
+ mutations[types.RECEIVE_METRIC_RESULT_FAILURE](state, {
+ metricId: groups[1].panels[1].metrics[0].metricId,
+ });
+
+ expect(getMetricStates()).toEqual([metricStates.OK, metricStates.UNKNOWN_ERROR]);
+ expect(getMetricStates(groups[0].key)).toEqual([metricStates.UNKNOWN_ERROR]);
+ expect(getMetricStates(groups[1].key)).toEqual([
+ metricStates.OK,
+ metricStates.UNKNOWN_ERROR,
+ ]);
+ });
+ });
+ });
+
+ describe('metricsWithData', () => {
+ let metricsWithData;
+ let setupState;
+ let state;
+
+ beforeEach(() => {
+ setupState = (initState = {}) => {
+ state = initState;
+ metricsWithData = getters.metricsWithData(state);
+ };
+ });
+
+ afterEach(() => {
+ state = null;
+ });
+
+ it('has method-style access', () => {
+ setupState();
+
+ expect(metricsWithData).toEqual(expect.any(Function));
+ });
+
+ it('when dashboard has no panel groups, returns empty', () => {
+ setupState({
+ dashboard: {
+ panel_groups: [],
+ },
+ });
+
+ expect(metricsWithData()).toEqual([]);
+ });
+
+ describe('when the dashboard is set', () => {
+ beforeEach(() => {
+ setupState({
+ dashboard: { panel_groups: [] },
+ });
+ });
+
+ it('no loaded metric returns empty', () => {
+ mutations[types.RECEIVE_METRICS_DATA_SUCCESS](state, metricsGroupsAPIResponse);
+
+ expect(metricsWithData()).toEqual([]);
+ });
+
+ it('an empty metric, returns empty', () => {
+ mutations[types.RECEIVE_METRICS_DATA_SUCCESS](state, metricsGroupsAPIResponse);
+ mutations[types.RECEIVE_METRIC_RESULT_SUCCESS](state, mockedEmptyResult);
+
+ expect(metricsWithData()).toEqual([]);
+ });
+
+ it('a metric with results, it returns a metric', () => {
+ mutations[types.RECEIVE_METRICS_DATA_SUCCESS](state, metricsGroupsAPIResponse);
+ mutations[types.RECEIVE_METRIC_RESULT_SUCCESS](state, mockedQueryResultPayload);
+
+ expect(metricsWithData()).toEqual([mockedQueryResultPayload.metricId]);
+ });
+
+ it('multiple metrics with results, it return multiple metrics', () => {
+ mutations[types.RECEIVE_METRICS_DATA_SUCCESS](state, metricsGroupsAPIResponse);
+ mutations[types.RECEIVE_METRIC_RESULT_SUCCESS](state, mockedQueryResultPayload);
+ mutations[types.RECEIVE_METRIC_RESULT_SUCCESS](state, mockedQueryResultPayloadCoresTotal);
+
+ expect(metricsWithData()).toEqual([
+ mockedQueryResultPayload.metricId,
+ mockedQueryResultPayloadCoresTotal.metricId,
+ ]);
+ });
+
+ it('multiple metrics with results, it returns metrics filtered by group', () => {
+ mutations[types.RECEIVE_METRICS_DATA_SUCCESS](state, metricsGroupsAPIResponse);
+ mutations[types.RECEIVE_METRIC_RESULT_SUCCESS](state, mockedQueryResultPayload);
+ mutations[types.RECEIVE_METRIC_RESULT_SUCCESS](state, mockedQueryResultPayloadCoresTotal);
+
+ // First group has no metrics
+ expect(metricsWithData(state.dashboard.panel_groups[0].key)).toEqual([]);
+
+ // Second group has metrics
+ expect(metricsWithData(state.dashboard.panel_groups[1].key)).toEqual([
+ mockedQueryResultPayload.metricId,
+ mockedQueryResultPayloadCoresTotal.metricId,
+ ]);
+ });
+ });
+ });
+});
diff --git a/spec/frontend/monitoring/store/mutations_spec.js b/spec/frontend/monitoring/store/mutations_spec.js
index fdad290a8d6..60107a03674 100644
--- a/spec/frontend/monitoring/store/mutations_spec.js
+++ b/spec/frontend/monitoring/store/mutations_spec.js
@@ -1,61 +1,71 @@
+import httpStatusCodes from '~/lib/utils/http_status';
+
import mutations from '~/monitoring/stores/mutations';
import * as types from '~/monitoring/stores/mutation_types';
import state from '~/monitoring/stores/state';
+import { metricStates } from '~/monitoring/constants';
import {
metricsGroupsAPIResponse,
deploymentData,
metricsDashboardResponse,
dashboardGitResponse,
} from '../mock_data';
-import { uniqMetricsId } from '~/monitoring/stores/utils';
describe('Monitoring mutations', () => {
let stateCopy;
+
beforeEach(() => {
stateCopy = state();
});
describe('RECEIVE_METRICS_DATA_SUCCESS', () => {
- let groups;
+ let payload;
+ const getGroups = () => stateCopy.dashboard.panel_groups;
+
beforeEach(() => {
stateCopy.dashboard.panel_groups = [];
- groups = metricsGroupsAPIResponse;
+ payload = metricsGroupsAPIResponse;
});
it('adds a key to the group', () => {
- mutations[types.RECEIVE_METRICS_DATA_SUCCESS](stateCopy, groups);
- expect(stateCopy.dashboard.panel_groups[0].key).toBe('system-metrics-kubernetes--0');
+ mutations[types.RECEIVE_METRICS_DATA_SUCCESS](stateCopy, payload);
+ const groups = getGroups();
+
+ expect(groups[0].key).toBe('response-metrics-nginx-ingress-vts--0');
+ expect(groups[1].key).toBe('system-metrics-kubernetes--1');
});
it('normalizes values', () => {
- mutations[types.RECEIVE_METRICS_DATA_SUCCESS](stateCopy, groups);
+ mutations[types.RECEIVE_METRICS_DATA_SUCCESS](stateCopy, payload);
const expectedLabel = 'Pod average';
- const { label, query_range } = stateCopy.dashboard.panel_groups[0].metrics[0].metrics[0];
+ const { label, query_range } = getGroups()[1].panels[0].metrics[0];
expect(label).toEqual(expectedLabel);
expect(query_range.length).toBeGreaterThan(0);
});
- it('contains one group, which it has two panels and one metrics property', () => {
- mutations[types.RECEIVE_METRICS_DATA_SUCCESS](stateCopy, groups);
- expect(stateCopy.dashboard.panel_groups).toBeDefined();
- expect(stateCopy.dashboard.panel_groups.length).toEqual(1);
- expect(stateCopy.dashboard.panel_groups[0].panels.length).toEqual(2);
- expect(stateCopy.dashboard.panel_groups[0].panels[0].metrics.length).toEqual(1);
- expect(stateCopy.dashboard.panel_groups[0].panels[1].metrics.length).toEqual(1);
+ it('contains two groups, with panels with a metric each', () => {
+ mutations[types.RECEIVE_METRICS_DATA_SUCCESS](stateCopy, payload);
+
+ const groups = getGroups();
+
+ expect(groups).toBeDefined();
+ expect(groups).toHaveLength(2);
+
+ expect(groups[0].panels).toHaveLength(1);
+ expect(groups[0].panels[0].metrics).toHaveLength(1);
+
+ expect(groups[1].panels).toHaveLength(2);
+ expect(groups[1].panels[0].metrics).toHaveLength(1);
+ expect(groups[1].panels[1].metrics).toHaveLength(1);
});
- it('assigns queries a metric id', () => {
- mutations[types.RECEIVE_METRICS_DATA_SUCCESS](stateCopy, groups);
- expect(stateCopy.dashboard.panel_groups[0].metrics[0].queries[0].metricId).toEqual(
+ it('assigns metrics a metric id', () => {
+ mutations[types.RECEIVE_METRICS_DATA_SUCCESS](stateCopy, payload);
+
+ const groups = getGroups();
+
+ expect(groups[0].panels[0].metrics[0].metricId).toEqual(
+ '1_response_metrics_nginx_ingress_throughput_status_code',
+ );
+ expect(groups[1].panels[0].metrics[0].metricId).toEqual(
'17_system_metrics_kubernetes_container_memory_average',
);
});
- describe('dashboard endpoint', () => {
- const dashboardGroups = metricsDashboardResponse.dashboard.panel_groups;
- it('aliases group panels to metrics for backwards compatibility', () => {
- mutations[types.RECEIVE_METRICS_DATA_SUCCESS](stateCopy, dashboardGroups);
- expect(stateCopy.dashboard.panel_groups[0].metrics[0]).toBeDefined();
- });
- it('aliases panel metrics to queries for backwards compatibility', () => {
- mutations[types.RECEIVE_METRICS_DATA_SUCCESS](stateCopy, dashboardGroups);
- expect(stateCopy.dashboard.panel_groups[0].metrics[0].queries).toBeDefined();
- });
- });
});
describe('RECEIVE_DEPLOYMENTS_DATA_SUCCESS', () => {
@@ -63,7 +73,7 @@ describe('Monitoring mutations', () => {
stateCopy.deploymentData = [];
mutations[types.RECEIVE_DEPLOYMENTS_DATA_SUCCESS](stateCopy, deploymentData);
expect(stateCopy.deploymentData).toBeDefined();
- expect(stateCopy.deploymentData.length).toEqual(3);
+ expect(stateCopy.deploymentData).toHaveLength(3);
expect(typeof stateCopy.deploymentData[0]).toEqual('object');
});
});
@@ -83,42 +93,153 @@ describe('Monitoring mutations', () => {
expect(stateCopy.projectPath).toEqual('/gitlab-org/gitlab-foss');
});
});
- describe('SET_QUERY_RESULT', () => {
- const metricId = 12;
- const id = 'system_metrics_kubernetes_container_memory_total';
+ describe('Individual panel/metric results', () => {
+ const metricId = '12_system_metrics_kubernetes_container_memory_total';
const result = [
{
values: [[0, 1], [1, 1], [1, 3]],
},
];
- beforeEach(() => {
- const dashboardGroups = metricsDashboardResponse.dashboard.panel_groups;
- mutations[types.RECEIVE_METRICS_DATA_SUCCESS](stateCopy, dashboardGroups);
- });
- it('clears empty state', () => {
- mutations[types.SET_QUERY_RESULT](stateCopy, {
- metricId,
- result,
+ const dashboardGroups = metricsDashboardResponse.dashboard.panel_groups;
+ const getMetric = () => stateCopy.dashboard.panel_groups[0].panels[0].metrics[0];
+
+ describe('REQUEST_METRIC_RESULT', () => {
+ beforeEach(() => {
+ mutations[types.RECEIVE_METRICS_DATA_SUCCESS](stateCopy, dashboardGroups);
+ });
+ it('stores a loading state on a metric', () => {
+ expect(stateCopy.showEmptyState).toBe(true);
+
+ mutations[types.REQUEST_METRIC_RESULT](stateCopy, {
+ metricId,
+ result,
+ });
+
+ expect(stateCopy.showEmptyState).toBe(true);
+ expect(getMetric()).toEqual(
+ expect.objectContaining({
+ loading: true,
+ result: null,
+ state: metricStates.LOADING,
+ }),
+ );
});
- expect(stateCopy.showEmptyState).toBe(false);
});
- it('sets metricsWithData value', () => {
- const uniqId = uniqMetricsId({
- metric_id: metricId,
- id,
+
+ describe('RECEIVE_METRIC_RESULT_SUCCESS', () => {
+ beforeEach(() => {
+ mutations[types.RECEIVE_METRICS_DATA_SUCCESS](stateCopy, dashboardGroups);
+ });
+ it('clears empty state', () => {
+ expect(stateCopy.showEmptyState).toBe(true);
+
+ mutations[types.RECEIVE_METRIC_RESULT_SUCCESS](stateCopy, {
+ metricId,
+ result,
+ });
+
+ expect(stateCopy.showEmptyState).toBe(false);
});
- mutations[types.SET_QUERY_RESULT](stateCopy, {
- metricId: uniqId,
- result,
+
+ it('adds results to the store', () => {
+ expect(getMetric().result).toBe(undefined);
+
+ mutations[types.RECEIVE_METRIC_RESULT_SUCCESS](stateCopy, {
+ metricId,
+ result,
+ });
+
+ expect(getMetric().result).toHaveLength(result.length);
+ expect(getMetric()).toEqual(
+ expect.objectContaining({
+ loading: false,
+ state: metricStates.OK,
+ }),
+ );
});
- expect(stateCopy.metricsWithData).toEqual([uniqId]);
});
- it('does not store empty results', () => {
- mutations[types.SET_QUERY_RESULT](stateCopy, {
- metricId,
- result: [],
+
+ describe('RECEIVE_METRIC_RESULT_FAILURE', () => {
+ beforeEach(() => {
+ mutations[types.RECEIVE_METRICS_DATA_SUCCESS](stateCopy, dashboardGroups);
+ });
+ it('maintains the loading state when a metric fails', () => {
+ expect(stateCopy.showEmptyState).toBe(true);
+
+ mutations[types.RECEIVE_METRIC_RESULT_FAILURE](stateCopy, {
+ metricId,
+ error: 'an error',
+ });
+
+ expect(stateCopy.showEmptyState).toBe(true);
+ });
+
+ it('stores a timeout error in a metric', () => {
+ mutations[types.RECEIVE_METRIC_RESULT_FAILURE](stateCopy, {
+ metricId,
+ error: { message: 'BACKOFF_TIMEOUT' },
+ });
+
+ expect(getMetric()).toEqual(
+ expect.objectContaining({
+ loading: false,
+ result: null,
+ state: metricStates.TIMEOUT,
+ }),
+ );
+ });
+
+ it('stores a connection failed error in a metric', () => {
+ mutations[types.RECEIVE_METRIC_RESULT_FAILURE](stateCopy, {
+ metricId,
+ error: {
+ response: {
+ status: httpStatusCodes.SERVICE_UNAVAILABLE,
+ },
+ },
+ });
+ expect(getMetric()).toEqual(
+ expect.objectContaining({
+ loading: false,
+ result: null,
+ state: metricStates.CONNECTION_FAILED,
+ }),
+ );
+ });
+
+ it('stores a bad data error in a metric', () => {
+ mutations[types.RECEIVE_METRIC_RESULT_FAILURE](stateCopy, {
+ metricId,
+ error: {
+ response: {
+ status: httpStatusCodes.BAD_REQUEST,
+ },
+ },
+ });
+
+ expect(getMetric()).toEqual(
+ expect.objectContaining({
+ loading: false,
+ result: null,
+ state: metricStates.BAD_QUERY,
+ }),
+ );
+ });
+
+ it('stores an unknown error in a metric', () => {
+ mutations[types.RECEIVE_METRIC_RESULT_FAILURE](stateCopy, {
+ metricId,
+ error: null, // no reason in response
+ });
+
+ expect(getMetric()).toEqual(
+ expect.objectContaining({
+ loading: false,
+ result: null,
+ state: metricStates.UNKNOWN_ERROR,
+ }),
+ );
});
- expect(stateCopy.metricsWithData).toEqual([]);
});
});
describe('SET_ALL_DASHBOARDS', () => {
diff --git a/spec/frontend/monitoring/store/utils_spec.js b/spec/frontend/monitoring/store/utils_spec.js
index 98388ac19f8..d562aaaefe9 100644
--- a/spec/frontend/monitoring/store/utils_spec.js
+++ b/spec/frontend/monitoring/store/utils_spec.js
@@ -1,44 +1,4 @@
-import { groupQueriesByChartInfo, normalizeMetric, uniqMetricsId } from '~/monitoring/stores/utils';
-
-describe('groupQueriesByChartInfo', () => {
- let input;
- let output;
-
- it('groups metrics with the same chart title and y_axis label', () => {
- input = [
- { title: 'title', y_label: 'MB', queries: [{}] },
- { title: 'title', y_label: 'MB', queries: [{}] },
- { title: 'new title', y_label: 'MB', queries: [{}] },
- ];
-
- output = [
- {
- title: 'title',
- y_label: 'MB',
- queries: [{ metricId: null }, { metricId: null }],
- },
- { title: 'new title', y_label: 'MB', queries: [{ metricId: null }] },
- ];
-
- expect(groupQueriesByChartInfo(input)).toEqual(output);
- });
-
- // Functionality associated with the /additional_metrics endpoint
- it("associates a chart's stringified metric_id with the metric", () => {
- input = [{ id: 3, title: 'new title', y_label: 'MB', queries: [{}] }];
- output = [{ id: 3, title: 'new title', y_label: 'MB', queries: [{ metricId: '3' }] }];
-
- expect(groupQueriesByChartInfo(input)).toEqual(output);
- });
-
- // Functionality associated with the /metrics_dashboard endpoint
- it('aliases a stringified metrics_id on the metric to the metricId key', () => {
- input = [{ title: 'new title', y_label: 'MB', queries: [{ metric_id: 3 }] }];
- output = [{ title: 'new title', y_label: 'MB', queries: [{ metricId: '3', metric_id: 3 }] }];
-
- expect(groupQueriesByChartInfo(input)).toEqual(output);
- });
-});
+import { normalizeMetric, uniqMetricsId } from '~/monitoring/stores/utils';
describe('normalizeMetric', () => {
[
@@ -54,7 +14,7 @@ describe('normalizeMetric', () => {
},
].forEach(({ args, expected }) => {
it(`normalizes metric to "${expected}" with args=${JSON.stringify(args)}`, () => {
- expect(normalizeMetric(...args)).toEqual({ metric_id: expected });
+ expect(normalizeMetric(...args)).toEqual({ metric_id: expected, metricId: expected });
});
});
});
diff --git a/spec/frontend/monitoring/utils_spec.js b/spec/frontend/monitoring/utils_spec.js
index 1e8d5753885..9b1a331e3b5 100644
--- a/spec/frontend/monitoring/utils_spec.js
+++ b/spec/frontend/monitoring/utils_spec.js
@@ -1,6 +1,12 @@
import * as monitoringUtils from '~/monitoring/utils';
+import { timeWindows, timeWindowsKeyNames } from '~/monitoring/constants';
+import {
+ graphDataPrometheusQuery,
+ graphDataPrometheusQueryRange,
+ anomalyMockGraphData,
+} from './mock_data';
-describe('Snowplow Events', () => {
+describe('monitoring/utils', () => {
const generatedLink = 'http://chart.link.com';
const chartTitle = 'Some metric chart';
@@ -51,4 +57,338 @@ describe('Snowplow Events', () => {
});
});
});
+
+ describe('getTimeDiff', () => {
+ function secondsBetween({ start, end }) {
+ return (new Date(end) - new Date(start)) / 1000;
+ }
+
+ function minutesBetween(timeRange) {
+ return secondsBetween(timeRange) / 60;
+ }
+
+ function hoursBetween(timeRange) {
+ return minutesBetween(timeRange) / 60;
+ }
+
+ it('defaults to an 8 hour (28800s) difference', () => {
+ const params = monitoringUtils.getTimeDiff();
+
+ expect(hoursBetween(params)).toEqual(8);
+ });
+
+ it('accepts time window as an argument', () => {
+ const params = monitoringUtils.getTimeDiff('thirtyMinutes');
+
+ expect(minutesBetween(params)).toEqual(30);
+ });
+
+ it('returns a value for every defined time window', () => {
+ const nonDefaultWindows = Object.keys(timeWindows).filter(window => window !== 'eightHours');
+
+ nonDefaultWindows.forEach(timeWindow => {
+ const params = monitoringUtils.getTimeDiff(timeWindow);
+
+ // Ensure we're not returning the default
+ expect(hoursBetween(params)).not.toEqual(8);
+ });
+ });
+ });
+
+ describe('getTimeWindow', () => {
+ [
+ {
+ args: [
+ {
+ start: '2019-10-01T18:27:47.000Z',
+ end: '2019-10-01T21:27:47.000Z',
+ },
+ ],
+ expected: timeWindowsKeyNames.threeHours,
+ },
+ {
+ args: [
+ {
+ start: '2019-10-01T28:27:47.000Z',
+ end: '2019-10-01T21:27:47.000Z',
+ },
+ ],
+ expected: null,
+ },
+ {
+ args: [
+ {
+ start: '',
+ end: '',
+ },
+ ],
+ expected: null,
+ },
+ {
+ args: [
+ {
+ start: null,
+ end: null,
+ },
+ ],
+ expected: null,
+ },
+ {
+ args: [{}],
+ expected: null,
+ },
+ ].forEach(({ args, expected }) => {
+ it(`returns "${expected}" with args=${JSON.stringify(args)}`, () => {
+ expect(monitoringUtils.getTimeWindow(...args)).toEqual(expected);
+ });
+ });
+ });
+
+ describe('graphDataValidatorForValues', () => {
+ /*
+ * When dealing with a metric using the query format, e.g.
+ * query: 'max(go_memstats_alloc_bytes{job="prometheus"}) by (job) /1024/1024'
+ * the validator will look for the `value` key instead of `values`
+ */
+ it('validates data with the query format', () => {
+ const validGraphData = monitoringUtils.graphDataValidatorForValues(
+ true,
+ graphDataPrometheusQuery,
+ );
+
+ expect(validGraphData).toBe(true);
+ });
+
+ /*
+ * When dealing with a metric using the query?range format, e.g.
+ * query_range: 'avg(sum(container_memory_usage_bytes{container_name!="POD",pod_name=~"^%{ci_environment_slug}-(.*)",namespace="%{kube_namespace}"}) by (job)) without (job) /1024/1024/1024',
+ * the validator will look for the `values` key instead of `value`
+ */
+ it('validates data with the query_range format', () => {
+ const validGraphData = monitoringUtils.graphDataValidatorForValues(
+ false,
+ graphDataPrometheusQueryRange,
+ );
+
+ expect(validGraphData).toBe(true);
+ });
+ });
+
+ describe('stringToISODate', () => {
+ ['', 'null', undefined, 'abc'].forEach(input => {
+ it(`throws error for invalid input like ${input}`, done => {
+ try {
+ monitoringUtils.stringToISODate(input);
+ } catch (e) {
+ expect(e).toBeDefined();
+ done();
+ }
+ });
+ });
+ [
+ {
+ input: '2019-09-09 01:01:01',
+ output: '2019-09-09T01:01:01Z',
+ },
+ {
+ input: '2019-09-09 00:00:00',
+ output: '2019-09-09T00:00:00Z',
+ },
+ {
+ input: '2019-09-09 23:59:59',
+ output: '2019-09-09T23:59:59Z',
+ },
+ {
+ input: '2019-09-09',
+ output: '2019-09-09T00:00:00Z',
+ },
+ ].forEach(({ input, output }) => {
+ it(`returns ${output} from ${input}`, () => {
+ expect(monitoringUtils.stringToISODate(input)).toBe(output);
+ });
+ });
+ });
+
+ describe('ISODateToString', () => {
+ [
+ {
+ input: new Date('2019-09-09T00:00:00.000Z'),
+ output: '2019-09-09 00:00:00',
+ },
+ {
+ input: new Date('2019-09-09T07:00:00.000Z'),
+ output: '2019-09-09 07:00:00',
+ },
+ ].forEach(({ input, output }) => {
+ it(`ISODateToString return ${output} for ${input}`, () => {
+ expect(monitoringUtils.ISODateToString(input)).toBe(output);
+ });
+ });
+ });
+
+ describe('truncateZerosInDateTime', () => {
+ [
+ {
+ input: '',
+ output: '',
+ },
+ {
+ input: '2019-10-10',
+ output: '2019-10-10',
+ },
+ {
+ input: '2019-10-10 00:00:01',
+ output: '2019-10-10 00:00:01',
+ },
+ {
+ input: '2019-10-10 00:00:00',
+ output: '2019-10-10',
+ },
+ ].forEach(({ input, output }) => {
+ it(`truncateZerosInDateTime return ${output} for ${input}`, () => {
+ expect(monitoringUtils.truncateZerosInDateTime(input)).toBe(output);
+ });
+ });
+ });
+
+ describe('isValidDate', () => {
+ [
+ {
+ input: '2019-09-09T00:00:00.000Z',
+ output: true,
+ },
+ {
+ input: '2019-09-09T000:00.000Z',
+ output: false,
+ },
+ {
+ input: 'a2019-09-09T000:00.000Z',
+ output: false,
+ },
+ {
+ input: '2019-09-09T',
+ output: false,
+ },
+ {
+ input: '2019-09-09',
+ output: true,
+ },
+ {
+ input: '2019-9-9',
+ output: true,
+ },
+ {
+ input: '2019-9-',
+ output: true,
+ },
+ {
+ input: '2019--',
+ output: false,
+ },
+ {
+ input: '2019',
+ output: true,
+ },
+ {
+ input: '',
+ output: false,
+ },
+ {
+ input: null,
+ output: false,
+ },
+ ].forEach(({ input, output }) => {
+ it(`isValidDate return ${output} for ${input}`, () => {
+ expect(monitoringUtils.isValidDate(input)).toBe(output);
+ });
+ });
+ });
+
+ describe('isDateTimePickerInputValid', () => {
+ [
+ {
+ input: null,
+ output: false,
+ },
+ {
+ input: '',
+ output: false,
+ },
+ {
+ input: 'xxxx-xx-xx',
+ output: false,
+ },
+ {
+ input: '9999-99-19',
+ output: false,
+ },
+ {
+ input: '2019-19-23',
+ output: false,
+ },
+ {
+ input: '2019-09-23',
+ output: true,
+ },
+ {
+ input: '2019-09-23 x',
+ output: false,
+ },
+ {
+ input: '2019-09-29 0:0:0',
+ output: false,
+ },
+ {
+ input: '2019-09-29 00:00:00',
+ output: true,
+ },
+ {
+ input: '2019-09-29 24:24:24',
+ output: false,
+ },
+ {
+ input: '2019-09-29 23:24:24',
+ output: true,
+ },
+ {
+ input: '2019-09-29 23:24:24 ',
+ output: false,
+ },
+ ].forEach(({ input, output }) => {
+ it(`returns ${output} for ${input}`, () => {
+ expect(monitoringUtils.isDateTimePickerInputValid(input)).toBe(output);
+ });
+ });
+ });
+
+ describe('graphDataValidatorForAnomalyValues', () => {
+ let oneMetric;
+ let threeMetrics;
+ let fourMetrics;
+ beforeEach(() => {
+ oneMetric = graphDataPrometheusQuery;
+ threeMetrics = anomalyMockGraphData;
+
+ const metrics = [...threeMetrics.metrics];
+ metrics.push(threeMetrics.metrics[0]);
+ fourMetrics = {
+ ...anomalyMockGraphData,
+ metrics,
+ };
+ });
+ /*
+ * Anomaly charts can accept results for exactly 3 metrics,
+ */
+ it('validates passes with the right query format', () => {
+ expect(monitoringUtils.graphDataValidatorForAnomalyValues(threeMetrics)).toBe(true);
+ });
+
+ it('validation fails for wrong format, 1 metric', () => {
+ expect(monitoringUtils.graphDataValidatorForAnomalyValues(oneMetric)).toBe(false);
+ });
+
+ it('validation fails for wrong format, more than 3 metrics', () => {
+ expect(monitoringUtils.graphDataValidatorForAnomalyValues(fourMetrics)).toBe(false);
+ });
+ });
});
diff --git a/spec/frontend/mr_popover/mr_popover_spec.js b/spec/frontend/mr_popover/mr_popover_spec.js
index 79ed4163010..e72b729f056 100644
--- a/spec/frontend/mr_popover/mr_popover_spec.js
+++ b/spec/frontend/mr_popover/mr_popover_spec.js
@@ -1,5 +1,5 @@
-import MRPopover from '~/mr_popover/components/mr_popover';
import { shallowMount } from '@vue/test-utils';
+import MRPopover from '~/mr_popover/components/mr_popover';
describe('MR Popover', () => {
let wrapper;
diff --git a/spec/frontend/notes/components/comment_form_spec.js b/spec/frontend/notes/components/comment_form_spec.js
index 45b99b71e06..7652f48474d 100644
--- a/spec/frontend/notes/components/comment_form_spec.js
+++ b/spec/frontend/notes/components/comment_form_spec.js
@@ -2,12 +2,12 @@ import $ from 'jquery';
import { mount } from '@vue/test-utils';
import MockAdapter from 'axios-mock-adapter';
import Autosize from 'autosize';
+import { trimText } from 'helpers/text_helper';
import axios from '~/lib/utils/axios_utils';
import createStore from '~/notes/stores';
import CommentForm from '~/notes/components/comment_form.vue';
import * as constants from '~/notes/constants';
import { refreshUserMergeRequestCounts } from '~/commons/nav/user_merge_requests';
-import { trimText } from 'helpers/text_helper';
import { keyboardDownEvent } from '../../issue_show/helpers';
import {
loggedOutnoteableData,
@@ -38,6 +38,7 @@ describe('issue_comment_form component', () => {
},
store,
sync: false,
+ attachToDocument: true,
});
};
@@ -49,7 +50,6 @@ describe('issue_comment_form component', () => {
afterEach(() => {
axiosMock.restore();
wrapper.destroy();
- jest.clearAllMocks();
});
describe('user is logged in', () => {
diff --git a/spec/frontend/notes/components/discussion_actions_spec.js b/spec/frontend/notes/components/discussion_actions_spec.js
index 91f9dab2530..6198f8b3c1d 100644
--- a/spec/frontend/notes/components/discussion_actions_spec.js
+++ b/spec/frontend/notes/components/discussion_actions_spec.js
@@ -1,4 +1,3 @@
-import createStore from '~/notes/stores';
import { shallowMount, mount, createLocalVue } from '@vue/test-utils';
import { discussionMock } from '../../notes/mock_data';
import DiscussionActions from '~/notes/components/discussion_actions.vue';
@@ -6,6 +5,7 @@ import ReplyPlaceholder from '~/notes/components/discussion_reply_placeholder.vu
import ResolveDiscussionButton from '~/notes/components/discussion_resolve_button.vue';
import ResolveWithIssueButton from '~/notes/components/discussion_resolve_with_issue_button.vue';
import JumpToNextDiscussionButton from '~/notes/components/discussion_jump_to_next_button.vue';
+import createStore from '~/notes/stores';
// NOTE: clone mock_data so that it is not accidentally mutated
const createDiscussionMock = (props = {}) =>
@@ -37,6 +37,8 @@ describe('DiscussionActions', () => {
shouldShowJumpToNextDiscussion: true,
...props,
},
+ sync: false,
+ attachToDocument: true,
});
};
diff --git a/spec/frontend/notes/components/discussion_jump_to_next_button_spec.js b/spec/frontend/notes/components/discussion_jump_to_next_button_spec.js
index fd439ba46bd..3986340b6fd 100644
--- a/spec/frontend/notes/components/discussion_jump_to_next_button_spec.js
+++ b/spec/frontend/notes/components/discussion_jump_to_next_button_spec.js
@@ -1,5 +1,5 @@
-import JumpToNextDiscussionButton from '~/notes/components/discussion_jump_to_next_button.vue';
import { shallowMount } from '@vue/test-utils';
+import JumpToNextDiscussionButton from '~/notes/components/discussion_jump_to_next_button.vue';
describe('JumpToNextDiscussionButton', () => {
let wrapper;
@@ -7,6 +7,7 @@ describe('JumpToNextDiscussionButton', () => {
beforeEach(() => {
wrapper = shallowMount(JumpToNextDiscussionButton, {
sync: false,
+ attachToDocument: true,
});
});
diff --git a/spec/frontend/notes/components/discussion_keyboard_navigator_spec.js b/spec/frontend/notes/components/discussion_keyboard_navigator_spec.js
index 8881bedf3cc..b38cfa8fb4a 100644
--- a/spec/frontend/notes/components/discussion_keyboard_navigator_spec.js
+++ b/spec/frontend/notes/components/discussion_keyboard_navigator_spec.js
@@ -37,6 +37,7 @@ describe('notes/components/discussion_keyboard_navigator', () => {
isDiff ? NEXT_DIFF_ID : NEXT_ID;
notes.getters.previousUnresolvedDiscussionId = () => (currId, isDiff) =>
isDiff ? PREV_DIFF_ID : PREV_ID;
+ notes.getters.getDiscussion = () => id => ({ id });
storeOptions = {
modules: {
@@ -63,14 +64,18 @@ describe('notes/components/discussion_keyboard_navigator', () => {
it('calls jumpToNextDiscussion when pressing `n`', () => {
Mousetrap.trigger('n');
- expect(wrapper.vm.jumpToDiscussion).toHaveBeenCalledWith(expectedNextId);
+ expect(wrapper.vm.jumpToDiscussion).toHaveBeenCalledWith(
+ expect.objectContaining({ id: expectedNextId }),
+ );
expect(wrapper.vm.currentDiscussionId).toEqual(expectedNextId);
});
it('calls jumpToPreviousDiscussion when pressing `p`', () => {
Mousetrap.trigger('p');
- expect(wrapper.vm.jumpToDiscussion).toHaveBeenCalledWith(expectedPrevId);
+ expect(wrapper.vm.jumpToDiscussion).toHaveBeenCalledWith(
+ expect.objectContaining({ id: expectedPrevId }),
+ );
expect(wrapper.vm.currentDiscussionId).toEqual(expectedPrevId);
});
});
diff --git a/spec/frontend/notes/components/discussion_notes_spec.js b/spec/frontend/notes/components/discussion_notes_spec.js
index f77236b14bc..5ab26d742ca 100644
--- a/spec/frontend/notes/components/discussion_notes_spec.js
+++ b/spec/frontend/notes/components/discussion_notes_spec.js
@@ -36,6 +36,7 @@ describe('DiscussionNotes', () => {
'avatar-badge': '<span class="avatar-badge-slot-content" />',
},
sync: false,
+ attachToDocument: true,
});
};
diff --git a/spec/frontend/notes/components/discussion_reply_placeholder_spec.js b/spec/frontend/notes/components/discussion_reply_placeholder_spec.js
index e008f4ed093..3152b6ff241 100644
--- a/spec/frontend/notes/components/discussion_reply_placeholder_spec.js
+++ b/spec/frontend/notes/components/discussion_reply_placeholder_spec.js
@@ -1,5 +1,5 @@
-import ReplyPlaceholder from '~/notes/components/discussion_reply_placeholder.vue';
import { shallowMount, createLocalVue } from '@vue/test-utils';
+import ReplyPlaceholder from '~/notes/components/discussion_reply_placeholder.vue';
const localVue = createLocalVue();
const buttonText = 'Test Button Text';
diff --git a/spec/frontend/notes/components/discussion_resolve_button_spec.js b/spec/frontend/notes/components/discussion_resolve_button_spec.js
index 5024f40ec5d..1fae19f4492 100644
--- a/spec/frontend/notes/components/discussion_resolve_button_spec.js
+++ b/spec/frontend/notes/components/discussion_resolve_button_spec.js
@@ -1,5 +1,5 @@
-import resolveDiscussionButton from '~/notes/components/discussion_resolve_button.vue';
import { createLocalVue, shallowMount } from '@vue/test-utils';
+import resolveDiscussionButton from '~/notes/components/discussion_resolve_button.vue';
const buttonTitle = 'Resolve discussion';
diff --git a/spec/frontend/notes/components/note_app_spec.js b/spec/frontend/notes/components/note_app_spec.js
index 3716b349210..3c960adb698 100644
--- a/spec/frontend/notes/components/note_app_spec.js
+++ b/spec/frontend/notes/components/note_app_spec.js
@@ -1,13 +1,13 @@
import $ from 'helpers/jquery';
import AxiosMockAdapter from 'axios-mock-adapter';
-import axios from '~/lib/utils/axios_utils';
import Vue from 'vue';
import { mount, createLocalVue } from '@vue/test-utils';
+import { setTestTimeout } from 'helpers/timeout';
+import axios from '~/lib/utils/axios_utils';
import NotesApp from '~/notes/components/notes_app.vue';
import service from '~/notes/services/notes_service';
import createStore from '~/notes/stores';
import '~/behaviors/markdown/render_gfm';
-import { setTestTimeout } from 'helpers/timeout';
// TODO: use generated fixture (https://gitlab.com/gitlab-org/gitlab-foss/issues/62491)
import * as mockData from '../../notes/mock_data';
import * as urlUtility from '~/lib/utils/url_utility';
@@ -77,6 +77,8 @@ describe('note_app', () => {
describe('set data', () => {
beforeEach(() => {
+ setFixtures('<div class="js-discussions-count"></div>');
+
axiosMock.onAny().reply(200, []);
wrapper = mountComponent();
return waitForDiscussionsRequest();
@@ -97,6 +99,10 @@ describe('note_app', () => {
it('should fetch discussions', () => {
expect(store.state.discussions).toEqual([]);
});
+
+ it('updates discussions badge', () => {
+ expect(document.querySelector('.js-discussions-count').textContent).toEqual('0');
+ });
});
describe('render', () => {
@@ -161,6 +167,7 @@ describe('note_app', () => {
describe('while fetching data', () => {
beforeEach(() => {
+ setFixtures('<div class="js-discussions-count"></div>');
axiosMock.onAny().reply(200, []);
wrapper = mountComponent();
});
@@ -177,6 +184,10 @@ describe('note_app', () => {
'Write a comment or drag your files here…',
);
});
+
+ it('should not update discussions badge (it should be blank)', () => {
+ expect(document.querySelector('.js-discussions-count').textContent).toEqual('');
+ });
});
describe('update note', () => {
diff --git a/spec/frontend/notes/components/note_edited_text_spec.js b/spec/frontend/notes/components/note_edited_text_spec.js
index e4c8d954d50..e8d5a24e86a 100644
--- a/spec/frontend/notes/components/note_edited_text_spec.js
+++ b/spec/frontend/notes/components/note_edited_text_spec.js
@@ -1,47 +1,49 @@
-import Vue from 'vue';
-import noteEditedText from '~/notes/components/note_edited_text.vue';
-
-describe('note_edited_text', () => {
- let vm;
- let props;
+import { shallowMount, createLocalVue } from '@vue/test-utils';
+import NoteEditedText from '~/notes/components/note_edited_text.vue';
+
+const localVue = createLocalVue();
+const propsData = {
+ actionText: 'Edited',
+ className: 'foo-bar',
+ editedAt: '2017-08-04T09:52:31.062Z',
+ editedBy: {
+ avatar_url: 'path',
+ id: 1,
+ name: 'Root',
+ path: '/root',
+ state: 'active',
+ username: 'root',
+ },
+};
+
+describe('NoteEditedText', () => {
+ let wrapper;
beforeEach(() => {
- const Component = Vue.extend(noteEditedText);
- props = {
- actionText: 'Edited',
- className: 'foo-bar',
- editedAt: '2017-08-04T09:52:31.062Z',
- editedBy: {
- avatar_url: 'path',
- id: 1,
- name: 'Root',
- path: '/root',
- state: 'active',
- username: 'root',
- },
- };
-
- vm = new Component({
- propsData: props,
- }).$mount();
+ wrapper = shallowMount(NoteEditedText, {
+ localVue,
+ propsData,
+ sync: false,
+ attachToDocument: true,
+ });
});
afterEach(() => {
- vm.$destroy();
+ wrapper.destroy();
});
it('should render block with provided className', () => {
- expect(vm.$el.className).toEqual(props.className);
+ expect(wrapper.classes()).toContain(propsData.className);
});
it('should render provided actionText', () => {
- expect(vm.$el.textContent).toContain(props.actionText);
+ expect(wrapper.text().trim()).toContain(propsData.actionText);
});
it('should render provided user information', () => {
- const authorLink = vm.$el.querySelector('.js-user-link');
+ const authorLink = wrapper.find('.js-user-link');
- expect(authorLink.getAttribute('href')).toEqual(props.editedBy.path);
- expect(authorLink.textContent.trim()).toEqual(props.editedBy.name);
+ expect(authorLink.attributes('href')).toEqual(propsData.editedBy.path);
+ expect(authorLink.text().trim()).toEqual(propsData.editedBy.name);
});
});
diff --git a/spec/frontend/notes/old_notes_spec.js b/spec/frontend/notes/old_notes_spec.js
index 96133c601aa..c1c9d5cef4a 100644
--- a/spec/frontend/notes/old_notes_spec.js
+++ b/spec/frontend/notes/old_notes_spec.js
@@ -3,12 +3,12 @@
import $ from 'jquery';
import _ from 'underscore';
import MockAdapter from 'axios-mock-adapter';
-import axios from '~/lib/utils/axios_utils';
-import * as urlUtility from '~/lib/utils/url_utility';
import '~/behaviors/markdown/render_gfm';
import { createSpyObj } from 'helpers/jest_helpers';
import { setTestTimeoutOnce } from 'helpers/timeout';
import { TEST_HOST } from 'helpers/test_constants';
+import * as urlUtility from '~/lib/utils/url_utility';
+import axios from '~/lib/utils/axios_utils';
// These must be imported synchronously because they pull dependencies
// from the DOM.
diff --git a/spec/frontend/operation_settings/components/external_dashboard_spec.js b/spec/frontend/operation_settings/components/external_dashboard_spec.js
index 39d7c19e731..bb6e029c808 100644
--- a/spec/frontend/operation_settings/components/external_dashboard_spec.js
+++ b/spec/frontend/operation_settings/components/external_dashboard_spec.js
@@ -1,11 +1,11 @@
import { mount, shallowMount, createLocalVue } from '@vue/test-utils';
import { GlButton, GlLink, GlFormGroup, GlFormInput } from '@gitlab/ui';
+import { TEST_HOST } from 'helpers/test_constants';
import ExternalDashboard from '~/operation_settings/components/external_dashboard.vue';
import store from '~/operation_settings/store';
import axios from '~/lib/utils/axios_utils';
import { refreshCurrentPage } from '~/lib/utils/url_utility';
import createFlash from '~/flash';
-import { TEST_HOST } from 'helpers/test_constants';
jest.mock('~/lib/utils/url_utility');
jest.mock('~/flash');
diff --git a/spec/frontend/pages/admin/users/components/delete_user_modal_spec.js b/spec/frontend/pages/admin/users/components/delete_user_modal_spec.js
index 57802a41bb5..3efebc69011 100644
--- a/spec/frontend/pages/admin/users/components/delete_user_modal_spec.js
+++ b/spec/frontend/pages/admin/users/components/delete_user_modal_spec.js
@@ -3,26 +3,46 @@ import { GlButton, GlFormInput } from '@gitlab/ui';
import DeleteUserModal from '~/pages/admin/users/components/delete_user_modal.vue';
import ModalStub from './stubs/modal_stub';
+const TEST_DELETE_USER_URL = 'delete-url';
+const TEST_BLOCK_USER_URL = 'block-url';
+const TEST_CSRF = 'csrf';
+
describe('User Operation confirmation modal', () => {
let wrapper;
+ let formSubmitSpy;
const findButton = variant =>
wrapper
.findAll(GlButton)
.filter(w => w.attributes('variant') === variant)
.at(0);
+ const findForm = () => wrapper.find('form');
+ const findUsernameInput = () => wrapper.find(GlFormInput);
+ const findPrimaryButton = () => findButton('danger');
+ const findSecondaryButton = () => findButton('warning');
+ const findAuthenticityToken = () => new FormData(findForm().element).get('authenticity_token');
+ const getUsername = () => findUsernameInput().attributes('value');
+ const getMethodParam = () => new FormData(findForm().element).get('_method');
+ const getFormAction = () => findForm().attributes('action');
+
+ const setUsername = username => {
+ findUsernameInput().vm.$emit('input', username);
+ };
+
+ const username = 'username';
+ const badUsername = 'bad_username';
const createComponent = (props = {}) => {
wrapper = shallowMount(DeleteUserModal, {
propsData: {
+ username,
title: 'title',
content: 'content',
action: 'action',
secondaryAction: 'secondaryAction',
- deleteUserUrl: 'delete-url',
- blockUserUrl: 'block-url',
- username: 'username',
- csrfToken: 'csrf',
+ deleteUserUrl: TEST_DELETE_USER_URL,
+ blockUserUrl: TEST_BLOCK_USER_URL,
+ csrfToken: TEST_CSRF,
...props,
},
stubs: {
@@ -32,6 +52,10 @@ describe('User Operation confirmation modal', () => {
});
};
+ beforeEach(() => {
+ formSubmitSpy = jest.spyOn(HTMLFormElement.prototype, 'submit').mockImplementation();
+ });
+
afterEach(() => {
wrapper.destroy();
wrapper = null;
@@ -42,44 +66,84 @@ describe('User Operation confirmation modal', () => {
expect(wrapper.element).toMatchSnapshot();
});
- it.each`
- variant | prop | action
- ${'danger'} | ${'deleteUserUrl'} | ${'delete'}
- ${'warning'} | ${'blockUserUrl'} | ${'block'}
- `('closing modal with $variant button triggers $action', ({ variant, prop }) => {
- createComponent();
- const form = wrapper.find('form');
- jest.spyOn(form.element, 'submit').mockReturnValue();
- const modalButton = findButton(variant);
- modalButton.vm.$emit('click');
- return wrapper.vm.$nextTick().then(() => {
- expect(form.element.submit).toHaveBeenCalled();
- expect(form.element.action).toContain(wrapper.props(prop));
- expect(new FormData(form.element).get('authenticity_token')).toEqual(
- wrapper.props('csrfToken'),
- );
+ describe('on created', () => {
+ beforeEach(() => {
+ createComponent();
+ });
+
+ it('has disabled buttons', () => {
+ expect(findPrimaryButton().attributes('disabled')).toBeTruthy();
+ expect(findSecondaryButton().attributes('disabled')).toBeTruthy();
});
});
- it('disables buttons by default', () => {
- createComponent();
- const blockButton = findButton('warning');
- const deleteButton = findButton('danger');
- expect(blockButton.attributes().disabled).toBeTruthy();
- expect(deleteButton.attributes().disabled).toBeTruthy();
+ describe('with incorrect username', () => {
+ beforeEach(() => {
+ createComponent();
+ setUsername(badUsername);
+
+ return wrapper.vm.$nextTick();
+ });
+
+ it('shows incorrect username', () => {
+ expect(getUsername()).toEqual(badUsername);
+ });
+
+ it('has disabled buttons', () => {
+ expect(findPrimaryButton().attributes('disabled')).toBeTruthy();
+ expect(findSecondaryButton().attributes('disabled')).toBeTruthy();
+ });
});
- it('enables button when username is typed', () => {
- createComponent({
- username: 'some-username',
+ describe('with correct username', () => {
+ beforeEach(() => {
+ createComponent();
+ setUsername(username);
+
+ return wrapper.vm.$nextTick();
+ });
+
+ it('shows correct username', () => {
+ expect(getUsername()).toEqual(username);
+ });
+
+ it('has enabled buttons', () => {
+ expect(findPrimaryButton().attributes('disabled')).toBeFalsy();
+ expect(findSecondaryButton().attributes('disabled')).toBeFalsy();
});
- wrapper.find(GlFormInput).vm.$emit('input', 'some-username');
- const blockButton = findButton('warning');
- const deleteButton = findButton('danger');
- return wrapper.vm.$nextTick().then(() => {
- expect(blockButton.attributes().disabled).toBeFalsy();
- expect(deleteButton.attributes().disabled).toBeFalsy();
+ describe('when primary action is submitted', () => {
+ beforeEach(() => {
+ findPrimaryButton().vm.$emit('click');
+
+ return wrapper.vm.$nextTick();
+ });
+
+ it('clears the input', () => {
+ expect(getUsername()).toEqual('');
+ });
+
+ it('has correct form attributes and calls submit', () => {
+ expect(getFormAction()).toBe(TEST_DELETE_USER_URL);
+ expect(getMethodParam()).toBe('delete');
+ expect(findAuthenticityToken()).toBe(TEST_CSRF);
+ expect(formSubmitSpy).toHaveBeenCalled();
+ });
+ });
+
+ describe('when secondary action is submitted', () => {
+ beforeEach(() => {
+ findSecondaryButton().vm.$emit('click');
+
+ return wrapper.vm.$nextTick();
+ });
+
+ it('has correct form attributes and calls submit', () => {
+ expect(getFormAction()).toBe(TEST_BLOCK_USER_URL);
+ expect(getMethodParam()).toBe('put');
+ expect(findAuthenticityToken()).toBe(TEST_CSRF);
+ expect(formSubmitSpy).toHaveBeenCalled();
+ });
});
});
});
diff --git a/spec/frontend/pages/admin/users/components/user_modal_manager_spec.js b/spec/frontend/pages/admin/users/components/user_modal_manager_spec.js
index 7653fffc502..c88a182660d 100644
--- a/spec/frontend/pages/admin/users/components/user_modal_manager_spec.js
+++ b/spec/frontend/pages/admin/users/components/user_modal_manager_spec.js
@@ -83,10 +83,6 @@ describe('Users admin page Modal Manager', () => {
jest.spyOn(document, 'removeEventListener');
});
- afterEach(() => {
- jest.clearAllMocks();
- });
-
afterAll(() => {
jest.restoreAllMocks();
});
diff --git a/spec/frontend/pages/profiles/show/emoji_menu_spec.js b/spec/frontend/pages/profiles/show/emoji_menu_spec.js
index 6ac1e83829f..00320fb4601 100644
--- a/spec/frontend/pages/profiles/show/emoji_menu_spec.js
+++ b/spec/frontend/pages/profiles/show/emoji_menu_spec.js
@@ -1,7 +1,7 @@
import $ from 'jquery';
+import { TEST_HOST } from 'helpers/test_constants';
import axios from '~/lib/utils/axios_utils';
import EmojiMenu from '~/pages/profiles/show/emoji_menu';
-import { TEST_HOST } from 'helpers/test_constants';
describe('EmojiMenu', () => {
const dummyEmojiTag = '<dummy></tag>';
diff --git a/spec/frontend/performance_bar/components/add_request_spec.js b/spec/frontend/performance_bar/components/add_request_spec.js
index cef264f3915..a0ad25744b0 100644
--- a/spec/frontend/performance_bar/components/add_request_spec.js
+++ b/spec/frontend/performance_bar/components/add_request_spec.js
@@ -1,5 +1,5 @@
-import AddRequest from '~/performance_bar/components/add_request.vue';
import { shallowMount } from '@vue/test-utils';
+import AddRequest from '~/performance_bar/components/add_request.vue';
describe('add request form', () => {
let wrapper;
diff --git a/spec/frontend/performance_bar/components/detailed_metric_spec.js b/spec/frontend/performance_bar/components/detailed_metric_spec.js
index 74f242431a1..01b6b7b043c 100644
--- a/spec/frontend/performance_bar/components/detailed_metric_spec.js
+++ b/spec/frontend/performance_bar/components/detailed_metric_spec.js
@@ -1,6 +1,6 @@
+import { shallowMount } from '@vue/test-utils';
import DetailedMetric from '~/performance_bar/components/detailed_metric.vue';
import RequestWarning from '~/performance_bar/components/request_warning.vue';
-import { shallowMount } from '@vue/test-utils';
describe('detailedMetric', () => {
const createComponent = props =>
diff --git a/spec/frontend/performance_bar/components/performance_bar_app_spec.js b/spec/frontend/performance_bar/components/performance_bar_app_spec.js
index ba403dd6209..417a655093c 100644
--- a/spec/frontend/performance_bar/components/performance_bar_app_spec.js
+++ b/spec/frontend/performance_bar/components/performance_bar_app_spec.js
@@ -1,6 +1,6 @@
+import { shallowMount } from '@vue/test-utils';
import PerformanceBarApp from '~/performance_bar/components/performance_bar_app.vue';
import PerformanceBarStore from '~/performance_bar/stores/performance_bar_store';
-import { shallowMount } from '@vue/test-utils';
describe('performance bar app', () => {
const store = new PerformanceBarStore();
diff --git a/spec/frontend/performance_bar/components/request_selector_spec.js b/spec/frontend/performance_bar/components/request_selector_spec.js
index a4ed55fbf15..871f0485a13 100644
--- a/spec/frontend/performance_bar/components/request_selector_spec.js
+++ b/spec/frontend/performance_bar/components/request_selector_spec.js
@@ -1,26 +1,12 @@
-import RequestSelector from '~/performance_bar/components/request_selector.vue';
import { shallowMount } from '@vue/test-utils';
+import RequestSelector from '~/performance_bar/components/request_selector.vue';
describe('request selector', () => {
const requests = [
{
- id: '123',
- url: 'https://gitlab.com/',
- hasWarnings: false,
- },
- {
- id: '456',
- url: 'https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/1',
- hasWarnings: false,
- },
- {
- id: '789',
- url: 'https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/1.json?serializer=widget',
- hasWarnings: false,
- },
- {
- id: 'abc',
+ id: 'warningReq',
url: 'https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/1/discussions.json',
+ truncatedUrl: 'discussions.json',
hasWarnings: true,
},
];
@@ -28,35 +14,16 @@ describe('request selector', () => {
const wrapper = shallowMount(RequestSelector, {
propsData: {
requests,
- currentRequest: requests[1],
+ currentRequest: requests[0],
},
});
- function optionText(requestId) {
- return wrapper
- .find(`[value='${requestId}']`)
- .text()
- .trim();
- }
-
- it('displays the last component of the path', () => {
- expect(optionText(requests[2].id)).toEqual('1.json?serializer=widget');
- });
-
- it('keeps the last two components of the path when the last component is numeric', () => {
- expect(optionText(requests[1].id)).toEqual('merge_requests/1');
- });
-
- it('ignores trailing slashes', () => {
- expect(optionText(requests[0].id)).toEqual('gitlab.com');
- });
-
it('has a warning icon if any requests have warnings', () => {
expect(wrapper.find('span > gl-emoji').element.dataset.name).toEqual('warning');
});
it('adds a warning glyph to requests with warnings', () => {
- const requestValue = wrapper.find('[value="abc"]').text();
+ const requestValue = wrapper.find('[value="warningReq"]').text();
expect(requestValue).toContain('discussions.json');
expect(requestValue).toContain('(!)');
diff --git a/spec/frontend/performance_bar/components/request_warning_spec.js b/spec/frontend/performance_bar/components/request_warning_spec.js
index 6d8bfba56f6..21f7bdf01f3 100644
--- a/spec/frontend/performance_bar/components/request_warning_spec.js
+++ b/spec/frontend/performance_bar/components/request_warning_spec.js
@@ -1,5 +1,5 @@
-import RequestWarning from '~/performance_bar/components/request_warning.vue';
import { shallowMount } from '@vue/test-utils';
+import RequestWarning from '~/performance_bar/components/request_warning.vue';
describe('request warning', () => {
const htmlId = 'request-123';
diff --git a/spec/frontend/performance_bar/stores/performance_bar_store_spec.js b/spec/frontend/performance_bar/stores/performance_bar_store_spec.js
new file mode 100644
index 00000000000..6b7893cb523
--- /dev/null
+++ b/spec/frontend/performance_bar/stores/performance_bar_store_spec.js
@@ -0,0 +1,62 @@
+import PerformanceBarStore from '~/performance_bar/stores/performance_bar_store';
+
+describe('PerformanceBarStore', () => {
+ describe('truncateUrl', () => {
+ let store;
+ const findUrl = id => store.findRequest(id).truncatedUrl;
+
+ beforeEach(() => {
+ store = new PerformanceBarStore();
+ });
+
+ it('ignores trailing slashes', () => {
+ store.addRequest('id', 'https://gitlab.com/');
+ expect(findUrl('id')).toEqual('gitlab.com');
+ });
+
+ it('keeps the last two components of the path when the last component is numeric', () => {
+ store.addRequest('id', 'https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/1');
+ expect(findUrl('id')).toEqual('merge_requests/1');
+ });
+
+ it('uses the last component of the path', () => {
+ store.addRequest(
+ 'id',
+ 'https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/1.json?serializer=widget',
+ );
+ expect(findUrl('id')).toEqual('1.json?serializer=widget');
+ });
+
+ it('keeps query components', () => {
+ store.addRequest('id', 'http://localhost:3001/h5bp/html5-boilerplate/?param');
+ expect(findUrl('id')).toEqual('html5-boilerplate?param');
+ });
+
+ it('keeps components when query contains a slash', () => {
+ store.addRequest('id', 'http://localhost:3001/h5bp/html5-boilerplate?trunc/ated');
+ expect(findUrl('id')).toEqual('html5-boilerplate?trunc/ated');
+ });
+
+ it('ignores fragments', () => {
+ store.addRequest('id', 'http://localhost:3001/h5bp/html5-boilerplate/#frag/ment');
+ expect(findUrl('id')).toEqual('html5-boilerplate');
+ });
+ });
+
+ describe('setRequestDetailsData', () => {
+ let store;
+
+ beforeEach(() => {
+ store = new PerformanceBarStore();
+ });
+
+ it('updates correctly specific details', () => {
+ store.addRequest('id', 'https://gitlab.com/');
+ store.setRequestDetailsData('id', 'test', {
+ calls: 123,
+ });
+
+ expect(store.findRequest('id').details.test.calls).toEqual(123);
+ });
+ });
+});
diff --git a/spec/frontend/pipelines/graph/action_component_spec.js b/spec/frontend/pipelines/graph/action_component_spec.js
index 38ffe98c79b..a8fddd5fff2 100644
--- a/spec/frontend/pipelines/graph/action_component_spec.js
+++ b/spec/frontend/pipelines/graph/action_component_spec.js
@@ -20,6 +20,7 @@ describe('pipeline graph action component', () => {
actionIcon: 'cancel',
},
sync: false,
+ attachToDocument: true,
});
});
diff --git a/spec/javascripts/pipelines/graph/job_item_spec.js b/spec/frontend/pipelines/graph/job_item_spec.js
index 1cdb0aff524..c79af95b3f3 100644
--- a/spec/javascripts/pipelines/graph/job_item_spec.js
+++ b/spec/frontend/pipelines/graph/job_item_spec.js
@@ -1,10 +1,13 @@
-import Vue from 'vue';
+import { mount } from '@vue/test-utils';
+import { trimText } from 'helpers/text_helper';
import JobItem from '~/pipelines/components/graph/job_item.vue';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
describe('pipeline graph job item', () => {
- const JobComponent = Vue.extend(JobItem);
- let component;
+ let wrapper;
+
+ const createWrapper = propsData => {
+ wrapper = mount(JobItem, { sync: false, attachToDocument: true, propsData });
+ };
const delayedJobFixture = getJSONFixture('jobs/delayed.json');
const mockJob = {
@@ -28,27 +31,25 @@ describe('pipeline graph job item', () => {
};
afterEach(() => {
- component.$destroy();
+ wrapper.destroy();
});
describe('name with link', () => {
it('should render the job name and status with a link', done => {
- component = mountComponent(JobComponent, { job: mockJob });
+ createWrapper({ job: mockJob });
- Vue.nextTick(() => {
- const link = component.$el.querySelector('a');
+ wrapper.vm.$nextTick(() => {
+ const link = wrapper.find('a');
- expect(link.getAttribute('href')).toEqual(mockJob.status.details_path);
+ expect(link.attributes('href')).toBe(mockJob.status.details_path);
- expect(link.getAttribute('data-original-title')).toEqual(
+ expect(link.attributes('data-original-title')).toEqual(
`${mockJob.name} - ${mockJob.status.label}`,
);
- expect(component.$el.querySelector('.js-status-icon-success')).toBeDefined();
+ expect(wrapper.find('.js-status-icon-success')).toBeDefined();
- expect(component.$el.querySelector('.ci-status-text').textContent.trim()).toEqual(
- mockJob.name,
- );
+ expect(trimText(wrapper.find('.ci-status-text').text())).toBe(mockJob.name);
done();
});
@@ -57,7 +58,7 @@ describe('pipeline graph job item', () => {
describe('name without link', () => {
it('it should render status and name', () => {
- component = mountComponent(JobComponent, {
+ createWrapper({
job: {
id: 4257,
name: 'test',
@@ -72,36 +73,34 @@ describe('pipeline graph job item', () => {
},
});
- expect(component.$el.querySelector('.js-status-icon-success')).toBeDefined();
- expect(component.$el.querySelector('a')).toBeNull();
+ expect(wrapper.find('.js-status-icon-success')).toBeDefined();
+ expect(wrapper.find('a').exists()).toBe(false);
- expect(component.$el.querySelector('.ci-status-text').textContent.trim()).toEqual(
- mockJob.name,
- );
+ expect(trimText(wrapper.find('.ci-status-text').text())).toEqual(mockJob.name);
});
});
describe('action icon', () => {
it('it should render the action icon', () => {
- component = mountComponent(JobComponent, { job: mockJob });
+ createWrapper({ job: mockJob });
- expect(component.$el.querySelector('a.ci-action-icon-container')).toBeDefined();
- expect(component.$el.querySelector('i.ci-action-icon-wrapper')).toBeDefined();
+ expect(wrapper.find('a.ci-action-icon-container')).toBeDefined();
+ expect(wrapper.find('i.ci-action-icon-wrapper')).toBeDefined();
});
});
it('should render provided class name', () => {
- component = mountComponent(JobComponent, {
+ createWrapper({
job: mockJob,
cssClassJobName: 'css-class-job-name',
});
- expect(component.$el.querySelector('a').classList.contains('css-class-job-name')).toBe(true);
+ expect(wrapper.find('a').classes()).toContain('css-class-job-name');
});
describe('status label', () => {
it('should not render status label when it is not provided', () => {
- component = mountComponent(JobComponent, {
+ createWrapper({
job: {
id: 4258,
name: 'test',
@@ -111,15 +110,13 @@ describe('pipeline graph job item', () => {
},
});
- expect(
- component.$el
- .querySelector('.js-job-component-tooltip')
- .getAttribute('data-original-title'),
- ).toEqual('test');
+ expect(wrapper.find('.js-job-component-tooltip').attributes('data-original-title')).toBe(
+ 'test',
+ );
});
it('should not render status label when it is provided', () => {
- component = mountComponent(JobComponent, {
+ createWrapper({
job: {
id: 4259,
name: 'test',
@@ -131,25 +128,21 @@ describe('pipeline graph job item', () => {
},
});
- expect(
- component.$el
- .querySelector('.js-job-component-tooltip')
- .getAttribute('data-original-title'),
- ).toEqual('test - success');
+ expect(wrapper.find('.js-job-component-tooltip').attributes('data-original-title')).toEqual(
+ 'test - success',
+ );
});
});
describe('for delayed job', () => {
it('displays remaining time in tooltip', () => {
- component = mountComponent(JobComponent, {
+ createWrapper({
job: delayedJobFixture,
});
- expect(
- component.$el
- .querySelector('.js-pipeline-graph-job-link')
- .getAttribute('data-original-title'),
- ).toEqual(`delayed job - delayed manual action (${component.remainingTime})`);
+ expect(wrapper.find('.js-pipeline-graph-job-link').attributes('data-original-title')).toEqual(
+ `delayed job - delayed manual action (${wrapper.vm.remainingTime})`,
+ );
});
});
});
diff --git a/spec/frontend/pipelines/graph/linked_pipeline_spec.js b/spec/frontend/pipelines/graph/linked_pipeline_spec.js
new file mode 100644
index 00000000000..c355d653203
--- /dev/null
+++ b/spec/frontend/pipelines/graph/linked_pipeline_spec.js
@@ -0,0 +1,127 @@
+import { mount } from '@vue/test-utils';
+import LinkedPipelineComponent from '~/pipelines/components/graph/linked_pipeline.vue';
+
+import mockData from './linked_pipelines_mock_data';
+
+const mockPipeline = mockData.triggered[0];
+
+describe('Linked pipeline', () => {
+ let wrapper;
+
+ afterEach(() => {
+ wrapper.destroy();
+ });
+
+ describe('rendered output', () => {
+ const props = {
+ pipeline: mockPipeline,
+ };
+
+ beforeEach(() => {
+ wrapper = mount(LinkedPipelineComponent, {
+ sync: false,
+ attachToDocument: true,
+ propsData: props,
+ });
+ });
+
+ it('should render a list item as the containing element', () => {
+ expect(wrapper.is('li')).toBe(true);
+ });
+
+ it('should render a button', () => {
+ const linkElement = wrapper.find('.js-linked-pipeline-content');
+
+ expect(linkElement.exists()).toBe(true);
+ });
+
+ it('should render the project name', () => {
+ expect(wrapper.text()).toContain(props.pipeline.project.name);
+ });
+
+ it('should render an svg within the status container', () => {
+ const pipelineStatusElement = wrapper.find('.js-linked-pipeline-status');
+
+ expect(pipelineStatusElement.find('svg').exists()).toBe(true);
+ });
+
+ it('should render the pipeline status icon svg', () => {
+ expect(wrapper.find('.js-ci-status-icon-running').exists()).toBe(true);
+ expect(wrapper.find('.js-ci-status-icon-running').html()).toContain('<svg');
+ });
+
+ it('should have a ci-status child component', () => {
+ expect(wrapper.find('.js-linked-pipeline-status').exists()).toBe(true);
+ });
+
+ it('should render the pipeline id', () => {
+ expect(wrapper.text()).toContain(`#${props.pipeline.id}`);
+ });
+
+ it('should correctly compute the tooltip text', () => {
+ expect(wrapper.vm.tooltipText).toContain(mockPipeline.project.name);
+ expect(wrapper.vm.tooltipText).toContain(mockPipeline.details.status.label);
+ });
+
+ it('should render the tooltip text as the title attribute', () => {
+ const tooltipRef = wrapper.find('.js-linked-pipeline-content');
+ const titleAttr = tooltipRef.attributes('data-original-title');
+
+ expect(titleAttr).toContain(mockPipeline.project.name);
+ expect(titleAttr).toContain(mockPipeline.details.status.label);
+ });
+
+ it('does not render the loading icon when isLoading is false', () => {
+ expect(wrapper.find('.js-linked-pipeline-loading').exists()).toBe(false);
+ });
+ });
+
+ describe('when isLoading is true', () => {
+ const props = {
+ pipeline: { ...mockPipeline, isLoading: true },
+ };
+
+ beforeEach(() => {
+ wrapper = mount(LinkedPipelineComponent, {
+ sync: false,
+ attachToDocument: true,
+ propsData: props,
+ });
+ });
+
+ it('renders a loading icon', () => {
+ expect(wrapper.find('.js-linked-pipeline-loading').exists()).toBe(true);
+ });
+ });
+
+ describe('on click', () => {
+ const props = {
+ pipeline: mockPipeline,
+ };
+
+ beforeEach(() => {
+ wrapper = mount(LinkedPipelineComponent, {
+ sync: false,
+ attachToDocument: true,
+ propsData: props,
+ });
+ });
+
+ it('emits `pipelineClicked` event', () => {
+ jest.spyOn(wrapper.vm, '$emit');
+ wrapper.find('button').trigger('click');
+
+ expect(wrapper.vm.$emit).toHaveBeenCalledWith('pipelineClicked');
+ });
+
+ it('should emit `bv::hide::tooltip` to close the tooltip', () => {
+ jest.spyOn(wrapper.vm.$root, '$emit');
+ wrapper.find('button').trigger('click');
+
+ expect(wrapper.vm.$root.$emit.mock.calls[0]).toEqual([
+ 'bv::hide::tooltip',
+ 'js-linked-pipeline-132',
+ ]);
+ });
+ });
+});
diff --git a/spec/frontend/pipelines/graph/linked_pipelines_mock_data.js b/spec/frontend/pipelines/graph/linked_pipelines_mock_data.js
new file mode 100644
index 00000000000..f794b8484a7
--- /dev/null
+++ b/spec/frontend/pipelines/graph/linked_pipelines_mock_data.js
@@ -0,0 +1,407 @@
+export default {
+ triggered_by: {
+ id: 129,
+ active: true,
+ path: '/gitlab-org/gitlab-foss/pipelines/129',
+ project: {
+ name: 'GitLabCE',
+ },
+ details: {
+ status: {
+ icon: 'status_running',
+ text: 'running',
+ label: 'running',
+ group: 'running',
+ has_details: true,
+ details_path: '/gitlab-org/gitlab-foss/pipelines/129',
+ favicon:
+ '/assets/ci_favicons/dev/favicon_status_running-c3ad2fc53ea6079c174e5b6c1351ff349e99ec3af5a5622fb77b0fe53ea279c1.ico',
+ },
+ },
+ flags: {
+ latest: false,
+ triggered: false,
+ stuck: false,
+ yaml_errors: false,
+ retryable: true,
+ cancelable: true,
+ },
+ ref: {
+ name: '7-5-stable',
+ path: '/gitlab-org/gitlab-foss/commits/7-5-stable',
+ tag: false,
+ branch: true,
+ },
+ commit: {
+ id: '23433d4d8b20d7e45c103d0b6048faad38a130ab',
+ short_id: '23433d4d',
+ title: 'Version 7.5.0.rc1',
+ created_at: '2014-11-17T15:44:14.000+01:00',
+ parent_ids: ['30ac909f30f58d319b42ed1537664483894b18cd'],
+ message: 'Version 7.5.0.rc1\n',
+ author_name: 'Jacob Vosmaer',
+ author_email: 'contact@jacobvosmaer.nl',
+ authored_date: '2014-11-17T15:44:14.000+01:00',
+ committer_name: 'Jacob Vosmaer',
+ committer_email: 'contact@jacobvosmaer.nl',
+ committed_date: '2014-11-17T15:44:14.000+01:00',
+ author_gravatar_url:
+ 'http://www.gravatar.com/avatar/e66d11c0eedf8c07b3b18fca46599807?s=80&d=identicon',
+ commit_url:
+ 'http://localhost:3000/gitlab-org/gitlab-foss/commit/23433d4d8b20d7e45c103d0b6048faad38a130ab',
+ commit_path: '/gitlab-org/gitlab-foss/commit/23433d4d8b20d7e45c103d0b6048faad38a130ab',
+ },
+ retry_path: '/gitlab-org/gitlab-foss/pipelines/129/retry',
+ cancel_path: '/gitlab-org/gitlab-foss/pipelines/129/cancel',
+ created_at: '2017-05-24T14:46:20.090Z',
+ updated_at: '2017-05-24T14:46:29.906Z',
+ },
+ triggered: [
+ {
+ id: 132,
+ active: true,
+ path: '/gitlab-org/gitlab-foss/pipelines/132',
+ project: {
+ name: 'GitLabCE',
+ },
+ details: {
+ status: {
+ icon: 'status_running',
+ text: 'running',
+ label: 'running',
+ group: 'running',
+ has_details: true,
+ details_path: '/gitlab-org/gitlab-foss/pipelines/132',
+ favicon:
+ '/assets/ci_favicons/dev/favicon_status_running-c3ad2fc53ea6079c174e5b6c1351ff349e99ec3af5a5622fb77b0fe53ea279c1.ico',
+ },
+ },
+ flags: {
+ latest: false,
+ triggered: false,
+ stuck: false,
+ yaml_errors: false,
+ retryable: true,
+ cancelable: true,
+ },
+ ref: {
+ name: 'crowd',
+ path: '/gitlab-org/gitlab-foss/commits/crowd',
+ tag: false,
+ branch: true,
+ },
+ commit: {
+ id: 'b9d58c4cecd06be74c3cc32ccfb522b31544ab2e',
+ short_id: 'b9d58c4c',
+ title: 'getting user keys publically through http without any authentication, the github…',
+ created_at: '2013-10-03T12:50:33.000+05:30',
+ parent_ids: ['e219cf7246c6a0495e4507deaffeba11e79f13b8'],
+ message:
+ 'getting user keys publically through http without any authentication, the github way. E.g: http://github.com/devaroop.keys\n\nchangelog updated to include ssh key retrieval feature update\n',
+ author_name: 'devaroop',
+ author_email: 'devaroop123@yahoo.co.in',
+ authored_date: '2013-10-02T20:39:29.000+05:30',
+ committer_name: 'devaroop',
+ committer_email: 'devaroop123@yahoo.co.in',
+ committed_date: '2013-10-03T12:50:33.000+05:30',
+ author_gravatar_url:
+ 'http://www.gravatar.com/avatar/35df4b155ec66a3127d53459941cf8a2?s=80&d=identicon',
+ commit_url:
+ 'http://localhost:3000/gitlab-org/gitlab-foss/commit/b9d58c4cecd06be74c3cc32ccfb522b31544ab2e',
+ commit_path: '/gitlab-org/gitlab-foss/commit/b9d58c4cecd06be74c3cc32ccfb522b31544ab2e',
+ },
+ retry_path: '/gitlab-org/gitlab-foss/pipelines/132/retry',
+ cancel_path: '/gitlab-org/gitlab-foss/pipelines/132/cancel',
+ created_at: '2017-05-24T14:46:24.644Z',
+ updated_at: '2017-05-24T14:48:55.226Z',
+ },
+ {
+ id: 133,
+ active: true,
+ path: '/gitlab-org/gitlab-foss/pipelines/133',
+ project: {
+ name: 'GitLabCE',
+ },
+ details: {
+ status: {
+ icon: 'status_running',
+ text: 'running',
+ label: 'running',
+ group: 'running',
+ has_details: true,
+ details_path: '/gitlab-org/gitlab-foss/pipelines/133',
+ favicon:
+ '/assets/ci_favicons/dev/favicon_status_running-c3ad2fc53ea6079c174e5b6c1351ff349e99ec3af5a5622fb77b0fe53ea279c1.ico',
+ },
+ },
+ flags: {
+ latest: false,
+ triggered: false,
+ stuck: false,
+ yaml_errors: false,
+ retryable: true,
+ cancelable: true,
+ },
+ ref: {
+ name: 'crowd',
+ path: '/gitlab-org/gitlab-foss/commits/crowd',
+ tag: false,
+ branch: true,
+ },
+ commit: {
+ id: 'b6bd4856a33df3d144be66c4ed1f1396009bb08b',
+ short_id: 'b6bd4856',
+ title: 'getting user keys publically through http without any authentication, the github…',
+ created_at: '2013-10-02T20:39:29.000+05:30',
+ parent_ids: ['e219cf7246c6a0495e4507deaffeba11e79f13b8'],
+ message:
+ 'getting user keys publically through http without any authentication, the github way. E.g: http://github.com/devaroop.keys\n',
+ author_name: 'devaroop',
+ author_email: 'devaroop123@yahoo.co.in',
+ authored_date: '2013-10-02T20:39:29.000+05:30',
+ committer_name: 'devaroop',
+ committer_email: 'devaroop123@yahoo.co.in',
+ committed_date: '2013-10-02T20:39:29.000+05:30',
+ author_gravatar_url:
+ 'http://www.gravatar.com/avatar/35df4b155ec66a3127d53459941cf8a2?s=80&d=identicon',
+ commit_url:
+ 'http://localhost:3000/gitlab-org/gitlab-foss/commit/b6bd4856a33df3d144be66c4ed1f1396009bb08b',
+ commit_path: '/gitlab-org/gitlab-foss/commit/b6bd4856a33df3d144be66c4ed1f1396009bb08b',
+ },
+ retry_path: '/gitlab-org/gitlab-foss/pipelines/133/retry',
+ cancel_path: '/gitlab-org/gitlab-foss/pipelines/133/cancel',
+ created_at: '2017-05-24T14:46:24.648Z',
+ updated_at: '2017-05-24T14:48:59.673Z',
+ },
+ {
+ id: 130,
+ active: true,
+ path: '/gitlab-org/gitlab-foss/pipelines/130',
+ project: {
+ name: 'GitLabCE',
+ },
+ details: {
+ status: {
+ icon: 'status_running',
+ text: 'running',
+ label: 'running',
+ group: 'running',
+ has_details: true,
+ details_path: '/gitlab-org/gitlab-foss/pipelines/130',
+ favicon:
+ '/assets/ci_favicons/dev/favicon_status_running-c3ad2fc53ea6079c174e5b6c1351ff349e99ec3af5a5622fb77b0fe53ea279c1.ico',
+ },
+ },
+ flags: {
+ latest: false,
+ triggered: false,
+ stuck: false,
+ yaml_errors: false,
+ retryable: true,
+ cancelable: true,
+ },
+ ref: {
+ name: 'crowd',
+ path: '/gitlab-org/gitlab-foss/commits/crowd',
+ tag: false,
+ branch: true,
+ },
+ commit: {
+ id: '6d7ced4a2311eeff037c5575cca1868a6d3f586f',
+ short_id: '6d7ced4a',
+ title: 'Whitespace fixes to patch',
+ created_at: '2013-10-08T13:53:22.000-05:00',
+ parent_ids: ['1875141a963a4238bda29011d8f7105839485253'],
+ message: 'Whitespace fixes to patch\n',
+ author_name: 'Dale Hamel',
+ author_email: 'dale.hamel@srvthe.net',
+ authored_date: '2013-10-08T13:53:22.000-05:00',
+ committer_name: 'Dale Hamel',
+ committer_email: 'dale.hamel@invenia.ca',
+ committed_date: '2013-10-08T13:53:22.000-05:00',
+ author_gravatar_url:
+ 'http://www.gravatar.com/avatar/cd08930e69fa5ad1a669206e7bafe476?s=80&d=identicon',
+ commit_url:
+ 'http://localhost:3000/gitlab-org/gitlab-foss/commit/6d7ced4a2311eeff037c5575cca1868a6d3f586f',
+ commit_path: '/gitlab-org/gitlab-foss/commit/6d7ced4a2311eeff037c5575cca1868a6d3f586f',
+ },
+ retry_path: '/gitlab-org/gitlab-foss/pipelines/130/retry',
+ cancel_path: '/gitlab-org/gitlab-foss/pipelines/130/cancel',
+ created_at: '2017-05-24T14:46:24.630Z',
+ updated_at: '2017-05-24T14:49:45.091Z',
+ },
+ {
+ id: 131,
+ active: true,
+ path: '/gitlab-org/gitlab-foss/pipelines/132',
+ project: {
+ name: 'GitLabCE',
+ },
+ details: {
+ status: {
+ icon: 'status_running',
+ text: 'running',
+ label: 'running',
+ group: 'running',
+ has_details: true,
+ details_path: '/gitlab-org/gitlab-foss/pipelines/132',
+ favicon:
+ '/assets/ci_favicons/dev/favicon_status_running-c3ad2fc53ea6079c174e5b6c1351ff349e99ec3af5a5622fb77b0fe53ea279c1.ico',
+ },
+ },
+ flags: {
+ latest: false,
+ triggered: false,
+ stuck: false,
+ yaml_errors: false,
+ retryable: true,
+ cancelable: true,
+ },
+ ref: {
+ name: 'crowd',
+ path: '/gitlab-org/gitlab-foss/commits/crowd',
+ tag: false,
+ branch: true,
+ },
+ commit: {
+ id: 'b9d58c4cecd06be74c3cc32ccfb522b31544ab2e',
+ short_id: 'b9d58c4c',
+ title: 'getting user keys publically through http without any authentication, the github…',
+ created_at: '2013-10-03T12:50:33.000+05:30',
+ parent_ids: ['e219cf7246c6a0495e4507deaffeba11e79f13b8'],
+ message:
+ 'getting user keys publically through http without any authentication, the github way. E.g: http://github.com/devaroop.keys\n\nchangelog updated to include ssh key retrieval feature update\n',
+ author_name: 'devaroop',
+ author_email: 'devaroop123@yahoo.co.in',
+ authored_date: '2013-10-02T20:39:29.000+05:30',
+ committer_name: 'devaroop',
+ committer_email: 'devaroop123@yahoo.co.in',
+ committed_date: '2013-10-03T12:50:33.000+05:30',
+ author_gravatar_url:
+ 'http://www.gravatar.com/avatar/35df4b155ec66a3127d53459941cf8a2?s=80&d=identicon',
+ commit_url:
+ 'http://localhost:3000/gitlab-org/gitlab-foss/commit/b9d58c4cecd06be74c3cc32ccfb522b31544ab2e',
+ commit_path: '/gitlab-org/gitlab-foss/commit/b9d58c4cecd06be74c3cc32ccfb522b31544ab2e',
+ },
+ retry_path: '/gitlab-org/gitlab-foss/pipelines/132/retry',
+ cancel_path: '/gitlab-org/gitlab-foss/pipelines/132/cancel',
+ created_at: '2017-05-24T14:46:24.644Z',
+ updated_at: '2017-05-24T14:48:55.226Z',
+ },
+ {
+ id: 134,
+ active: true,
+ path: '/gitlab-org/gitlab-foss/pipelines/133',
+ project: {
+ name: 'GitLabCE',
+ },
+ details: {
+ status: {
+ icon: 'status_running',
+ text: 'running',
+ label: 'running',
+ group: 'running',
+ has_details: true,
+ details_path: '/gitlab-org/gitlab-foss/pipelines/133',
+ favicon:
+ '/assets/ci_favicons/dev/favicon_status_running-c3ad2fc53ea6079c174e5b6c1351ff349e99ec3af5a5622fb77b0fe53ea279c1.ico',
+ },
+ },
+ flags: {
+ latest: false,
+ triggered: false,
+ stuck: false,
+ yaml_errors: false,
+ retryable: true,
+ cancelable: true,
+ },
+ ref: {
+ name: 'crowd',
+ path: '/gitlab-org/gitlab-foss/commits/crowd',
+ tag: false,
+ branch: true,
+ },
+ commit: {
+ id: 'b6bd4856a33df3d144be66c4ed1f1396009bb08b',
+ short_id: 'b6bd4856',
+ title: 'getting user keys publically through http without any authentication, the github…',
+ created_at: '2013-10-02T20:39:29.000+05:30',
+ parent_ids: ['e219cf7246c6a0495e4507deaffeba11e79f13b8'],
+ message:
+ 'getting user keys publically through http without any authentication, the github way. E.g: http://github.com/devaroop.keys\n',
+ author_name: 'devaroop',
+ author_email: 'devaroop123@yahoo.co.in',
+ authored_date: '2013-10-02T20:39:29.000+05:30',
+ committer_name: 'devaroop',
+ committer_email: 'devaroop123@yahoo.co.in',
+ committed_date: '2013-10-02T20:39:29.000+05:30',
+ author_gravatar_url:
+ 'http://www.gravatar.com/avatar/35df4b155ec66a3127d53459941cf8a2?s=80&d=identicon',
+ commit_url:
+ 'http://localhost:3000/gitlab-org/gitlab-foss/commit/b6bd4856a33df3d144be66c4ed1f1396009bb08b',
+ commit_path: '/gitlab-org/gitlab-foss/commit/b6bd4856a33df3d144be66c4ed1f1396009bb08b',
+ },
+ retry_path: '/gitlab-org/gitlab-foss/pipelines/133/retry',
+ cancel_path: '/gitlab-org/gitlab-foss/pipelines/133/cancel',
+ created_at: '2017-05-24T14:46:24.648Z',
+ updated_at: '2017-05-24T14:48:59.673Z',
+ },
+ {
+ id: 135,
+ active: true,
+ path: '/gitlab-org/gitlab-foss/pipelines/130',
+ project: {
+ name: 'GitLabCE',
+ },
+ details: {
+ status: {
+ icon: 'status_running',
+ text: 'running',
+ label: 'running',
+ group: 'running',
+ has_details: true,
+ details_path: '/gitlab-org/gitlab-foss/pipelines/130',
+ favicon:
+ '/assets/ci_favicons/dev/favicon_status_running-c3ad2fc53ea6079c174e5b6c1351ff349e99ec3af5a5622fb77b0fe53ea279c1.ico',
+ },
+ },
+ flags: {
+ latest: false,
+ triggered: false,
+ stuck: false,
+ yaml_errors: false,
+ retryable: true,
+ cancelable: true,
+ },
+ ref: {
+ name: 'crowd',
+ path: '/gitlab-org/gitlab-foss/commits/crowd',
+ tag: false,
+ branch: true,
+ },
+ commit: {
+ id: '6d7ced4a2311eeff037c5575cca1868a6d3f586f',
+ short_id: '6d7ced4a',
+ title: 'Whitespace fixes to patch',
+ created_at: '2013-10-08T13:53:22.000-05:00',
+ parent_ids: ['1875141a963a4238bda29011d8f7105839485253'],
+ message: 'Whitespace fixes to patch\n',
+ author_name: 'Dale Hamel',
+ author_email: 'dale.hamel@srvthe.net',
+ authored_date: '2013-10-08T13:53:22.000-05:00',
+ committer_name: 'Dale Hamel',
+ committer_email: 'dale.hamel@invenia.ca',
+ committed_date: '2013-10-08T13:53:22.000-05:00',
+ author_gravatar_url:
+ 'http://www.gravatar.com/avatar/cd08930e69fa5ad1a669206e7bafe476?s=80&d=identicon',
+ commit_url:
+ 'http://localhost:3000/gitlab-org/gitlab-foss/commit/6d7ced4a2311eeff037c5575cca1868a6d3f586f',
+ commit_path: '/gitlab-org/gitlab-foss/commit/6d7ced4a2311eeff037c5575cca1868a6d3f586f',
+ },
+ retry_path: '/gitlab-org/gitlab-foss/pipelines/130/retry',
+ cancel_path: '/gitlab-org/gitlab-foss/pipelines/130/cancel',
+ created_at: '2017-05-24T14:46:24.630Z',
+ updated_at: '2017-05-24T14:49:45.091Z',
+ },
+ ],
+};
diff --git a/spec/frontend/pipelines/pipeline_triggerer_spec.js b/spec/frontend/pipelines/pipeline_triggerer_spec.js
index 45ac278dd38..e211852f74b 100644
--- a/spec/frontend/pipelines/pipeline_triggerer_spec.js
+++ b/spec/frontend/pipelines/pipeline_triggerer_spec.js
@@ -1,9 +1,16 @@
-import { mount } from '@vue/test-utils';
+import { shallowMount } from '@vue/test-utils';
+import UserAvatarLink from '~/vue_shared/components/user_avatar/user_avatar_link.vue';
import pipelineTriggerer from '~/pipelines/components/pipeline_triggerer.vue';
describe('Pipelines Triggerer', () => {
let wrapper;
+ const expectComponentWithProps = (Component, props = {}) => {
+ const componentWrapper = wrapper.find(Component);
+ expect(componentWrapper.isVisible()).toBe(true);
+ expect(componentWrapper.props()).toEqual(expect.objectContaining(props));
+ };
+
const mockData = {
pipeline: {
user: {
@@ -15,9 +22,10 @@ describe('Pipelines Triggerer', () => {
};
const createComponent = () => {
- wrapper = mount(pipelineTriggerer, {
+ wrapper = shallowMount(pipelineTriggerer, {
propsData: mockData,
sync: false,
+ attachToDocument: true,
});
};
@@ -33,14 +41,12 @@ describe('Pipelines Triggerer', () => {
expect(wrapper.contains('.table-section')).toBe(true);
});
- it('should render triggerer information when triggerer is provided', () => {
- const link = wrapper.find('.js-pipeline-url-user');
-
- expect(link.attributes('href')).toEqual(mockData.pipeline.user.path);
- expect(link.find('.js-user-avatar-image-toolip').text()).toEqual(mockData.pipeline.user.name);
- expect(link.find('img.avatar').attributes('src')).toEqual(
- `${mockData.pipeline.user.avatar_url}?width=26`,
- );
+ it('should pass triggerer information when triggerer is provided', () => {
+ expectComponentWithProps(UserAvatarLink, {
+ linkHref: mockData.pipeline.user.path,
+ tooltipText: mockData.pipeline.user.name,
+ imgSrc: mockData.pipeline.user.avatar_url,
+ });
});
it('should render "API" when no triggerer is provided', () => {
@@ -50,7 +56,7 @@ describe('Pipelines Triggerer', () => {
},
});
- wrapper.vm.$nextTick(() => {
+ return wrapper.vm.$nextTick(() => {
expect(wrapper.find('.js-pipeline-url-api').text()).toEqual('API');
});
});
diff --git a/spec/frontend/pipelines/pipeline_url_spec.js b/spec/frontend/pipelines/pipeline_url_spec.js
new file mode 100644
index 00000000000..3c0c35e1f0f
--- /dev/null
+++ b/spec/frontend/pipelines/pipeline_url_spec.js
@@ -0,0 +1,112 @@
+import $ from 'jquery';
+import { trimText } from 'helpers/text_helper';
+import { shallowMount } from '@vue/test-utils';
+import PipelineUrlComponent from '~/pipelines/components/pipeline_url.vue';
+
+$.fn.popover = () => {};
+
+describe('Pipeline Url Component', () => {
+ let wrapper;
+
+ const createComponent = props => {
+ wrapper = shallowMount(PipelineUrlComponent, {
+ sync: false,
+ attachToDocument: true,
+ propsData: props,
+ });
+ };
+
+ afterEach(() => {
+ wrapper.destroy();
+ });
+
+ it('should render a table cell', () => {
+ createComponent({
+ pipeline: {
+ id: 1,
+ path: 'foo',
+ flags: {},
+ },
+ autoDevopsHelpPath: 'foo',
+ });
+
+ expect(wrapper.attributes('class')).toContain('table-section');
+ });
+
+ it('should render a link the provided path and id', () => {
+ createComponent({
+ pipeline: {
+ id: 1,
+ path: 'foo',
+ flags: {},
+ },
+ autoDevopsHelpPath: 'foo',
+ });
+
+ expect(wrapper.find('.js-pipeline-url-link').attributes('href')).toBe('foo');
+
+ expect(wrapper.find('.js-pipeline-url-link span').text()).toBe('#1');
+ });
+
+ it('should render latest, yaml invalid, merge request, and stuck flags when provided', () => {
+ createComponent({
+ pipeline: {
+ id: 1,
+ path: 'foo',
+ flags: {
+ latest: true,
+ yaml_errors: true,
+ stuck: true,
+ merge_request_pipeline: true,
+ detached_merge_request_pipeline: true,
+ },
+ },
+ autoDevopsHelpPath: 'foo',
+ });
+
+ expect(wrapper.find('.js-pipeline-url-latest').text()).toContain('latest');
+
+ expect(wrapper.find('.js-pipeline-url-yaml').text()).toContain('yaml invalid');
+
+ expect(wrapper.find('.js-pipeline-url-stuck').text()).toContain('stuck');
+
+ expect(wrapper.find('.js-pipeline-url-detached').text()).toContain('detached');
+ });
+
+ it('should render a badge for autodevops', () => {
+ createComponent({
+ pipeline: {
+ id: 1,
+ path: 'foo',
+ flags: {
+ latest: true,
+ yaml_errors: true,
+ stuck: true,
+ auto_devops: true,
+ },
+ },
+ autoDevopsHelpPath: 'foo',
+ });
+
+ expect(trimText(wrapper.find('.js-pipeline-url-autodevops').text())).toEqual('Auto DevOps');
+ });
+
+ it('should render error badge when pipeline has a failure reason set', () => {
+ createComponent({
+ pipeline: {
+ id: 1,
+ path: 'foo',
+ flags: {
+ failure_reason: true,
+ },
+ failure_reason: 'some reason',
+ },
+ autoDevopsHelpPath: 'foo',
+ });
+
+ expect(wrapper.find('.js-pipeline-url-failure').text()).toContain('error');
+ expect(wrapper.find('.js-pipeline-url-failure').attributes('data-original-title')).toContain(
+ 'some reason',
+ );
+ });
+});
diff --git a/spec/frontend/pipelines/test_reports/mock_data.js b/spec/frontend/pipelines/test_reports/mock_data.js
index b0f22bc63fb..1d03f0b655f 100644
--- a/spec/frontend/pipelines/test_reports/mock_data.js
+++ b/spec/frontend/pipelines/test_reports/mock_data.js
@@ -1,41 +1,6 @@
-import { formatTime } from '~/lib/utils/datetime_utility';
import { TestStatus } from '~/pipelines/constants';
-export const testCases = [
- {
- classname: 'spec.test_spec',
- execution_time: 0.000748,
- name: 'Test#subtract when a is 1 and b is 2 raises an error',
- stack_trace: null,
- status: TestStatus.SUCCESS,
- system_output: null,
- },
- {
- classname: 'spec.test_spec',
- execution_time: 0.000064,
- name: 'Test#subtract when a is 2 and b is 1 returns correct result',
- stack_trace: null,
- status: TestStatus.SUCCESS,
- system_output: null,
- },
- {
- classname: 'spec.test_spec',
- execution_time: 0.009292,
- name: 'Test#sum when a is 1 and b is 2 returns summary',
- stack_trace: null,
- status: TestStatus.FAILED,
- system_output:
- "Failure/Error: is_expected.to eq(3)\n\n expected: 3\n got: -1\n\n (compared using ==)\n./spec/test_spec.rb:12:in `block (4 levels) in <top (required)>'",
- },
- {
- classname: 'spec.test_spec',
- execution_time: 0.00018,
- name: 'Test#sum when a is 100 and b is 200 returns summary',
- stack_trace: null,
- status: TestStatus.FAILED,
- system_output:
- "Failure/Error: is_expected.to eq(300)\n\n expected: 300\n got: -100\n\n (compared using ==)\n./spec/test_spec.rb:21:in `block (4 levels) in <top (required)>'",
- },
+export default [
{
classname: 'spec.test_spec',
execution_time: 0,
@@ -45,79 +10,3 @@ export const testCases = [
system_output: null,
},
];
-
-export const testCasesFormatted = [
- {
- ...testCases[2],
- icon: 'status_failed_borderless',
- formattedTime: formatTime(testCases[0].execution_time * 1000),
- },
- {
- ...testCases[3],
- icon: 'status_failed_borderless',
- formattedTime: formatTime(testCases[1].execution_time * 1000),
- },
- {
- ...testCases[4],
- icon: 'status_skipped_borderless',
- formattedTime: formatTime(testCases[2].execution_time * 1000),
- },
- {
- ...testCases[0],
- icon: 'status_success_borderless',
- formattedTime: formatTime(testCases[3].execution_time * 1000),
- },
- {
- ...testCases[1],
- icon: 'status_success_borderless',
- formattedTime: formatTime(testCases[4].execution_time * 1000),
- },
-];
-
-export const testSuites = [
- {
- error_count: 0,
- failed_count: 2,
- name: 'rspec:osx',
- skipped_count: 0,
- success_count: 2,
- test_cases: testCases,
- total_count: 4,
- total_time: 60,
- },
- {
- error_count: 0,
- failed_count: 10,
- name: 'rspec:osx',
- skipped_count: 0,
- success_count: 50,
- test_cases: [],
- total_count: 60,
- total_time: 0.010284,
- },
-];
-
-export const testSuitesFormatted = testSuites.map(x => ({
- ...x,
- formattedTime: formatTime(x.total_time * 1000),
-}));
-
-export const testReports = {
- error_count: 0,
- failed_count: 2,
- skipped_count: 0,
- success_count: 2,
- test_suites: testSuites,
- total_count: 4,
- total_time: 0.010284,
-};
-
-export const testReportsWithNoSuites = {
- error_count: 0,
- failed_count: 2,
- skipped_count: 0,
- success_count: 2,
- test_suites: [],
- total_count: 4,
- total_time: 0.010284,
-};
diff --git a/spec/frontend/pipelines/test_reports/stores/actions_spec.js b/spec/frontend/pipelines/test_reports/stores/actions_spec.js
index c1721e12234..56148361e0a 100644
--- a/spec/frontend/pipelines/test_reports/stores/actions_spec.js
+++ b/spec/frontend/pipelines/test_reports/stores/actions_spec.js
@@ -1,11 +1,11 @@
import MockAdapter from 'axios-mock-adapter';
+import { getJSONFixture } from 'helpers/fixtures';
import axios from '~/lib/utils/axios_utils';
import * as actions from '~/pipelines/stores/test_reports/actions';
import * as types from '~/pipelines/stores/test_reports/mutation_types';
import { TEST_HOST } from '../../../helpers/test_constants';
import testAction from '../../../helpers/vuex_action_helper';
import createFlash from '~/flash';
-import { testReports } from '../mock_data';
jest.mock('~/flash.js');
@@ -13,6 +13,8 @@ describe('Actions TestReports Store', () => {
let mock;
let state;
+ const testReports = getJSONFixture('pipelines/test_report.json');
+
const endpoint = `${TEST_HOST}/test_reports.json`;
const defaultState = {
endpoint,
diff --git a/spec/frontend/pipelines/test_reports/stores/getters_spec.js b/spec/frontend/pipelines/test_reports/stores/getters_spec.js
index e630a005409..011a7e68908 100644
--- a/spec/frontend/pipelines/test_reports/stores/getters_spec.js
+++ b/spec/frontend/pipelines/test_reports/stores/getters_spec.js
@@ -1,9 +1,12 @@
+import { getJSONFixture } from 'helpers/fixtures';
import * as getters from '~/pipelines/stores/test_reports/getters';
-import { testReports, testSuitesFormatted, testCasesFormatted } from '../mock_data';
+import { iconForTestStatus } from '~/pipelines/stores/test_reports/utils';
describe('Getters TestReports Store', () => {
let state;
+ const testReports = getJSONFixture('pipelines/test_report.json');
+
const defaultState = {
testReports,
selectedSuite: testReports.test_suites[0],
@@ -28,7 +31,13 @@ describe('Getters TestReports Store', () => {
it('should return the test suites', () => {
setupState();
- expect(getters.getTestSuites(state)).toEqual(testSuitesFormatted);
+ const suites = getters.getTestSuites(state);
+ const expected = testReports.test_suites.map(x => ({
+ ...x,
+ formattedTime: '00:00:00',
+ }));
+
+ expect(suites).toEqual(expected);
});
it('should return an empty array when testReports is empty', () => {
@@ -42,7 +51,14 @@ describe('Getters TestReports Store', () => {
it('should return the test cases inside the suite', () => {
setupState();
- expect(getters.getSuiteTests(state)).toEqual(testCasesFormatted);
+ const cases = getters.getSuiteTests(state);
+ const expected = testReports.test_suites[0].test_cases.map(x => ({
+ ...x,
+ formattedTime: '00:00:00',
+ icon: iconForTestStatus(x.status),
+ }));
+
+ expect(cases).toEqual(expected);
});
it('should return an empty array when testReports is empty', () => {
diff --git a/spec/frontend/pipelines/test_reports/stores/mutations_spec.js b/spec/frontend/pipelines/test_reports/stores/mutations_spec.js
index ad5b7f91163..9eaa563025d 100644
--- a/spec/frontend/pipelines/test_reports/stores/mutations_spec.js
+++ b/spec/frontend/pipelines/test_reports/stores/mutations_spec.js
@@ -1,10 +1,12 @@
+import { getJSONFixture } from 'helpers/fixtures';
import * as types from '~/pipelines/stores/test_reports/mutation_types';
import mutations from '~/pipelines/stores/test_reports/mutations';
-import { testReports, testSuites } from '../mock_data';
describe('Mutations TestReports Store', () => {
let mockState;
+ const testReports = getJSONFixture('pipelines/test_report.json');
+
const defaultState = {
endpoint: '',
testReports: {},
@@ -27,7 +29,7 @@ describe('Mutations TestReports Store', () => {
describe('set reports', () => {
it('should set testReports', () => {
- const expectedState = Object.assign({}, mockState, { testReports });
+ const expectedState = { ...mockState, testReports };
mutations[types.SET_REPORTS](mockState, testReports);
expect(mockState.testReports).toEqual(expectedState.testReports);
@@ -36,10 +38,10 @@ describe('Mutations TestReports Store', () => {
describe('set selected suite', () => {
it('should set selectedSuite', () => {
- const expectedState = Object.assign({}, mockState, { selectedSuite: testSuites[0] });
- mutations[types.SET_SELECTED_SUITE](mockState, testSuites[0]);
+ const selectedSuite = testReports.test_suites[0];
+ mutations[types.SET_SELECTED_SUITE](mockState, selectedSuite);
- expect(mockState.selectedSuite).toEqual(expectedState.selectedSuite);
+ expect(mockState.selectedSuite).toEqual(selectedSuite);
});
});
diff --git a/spec/frontend/pipelines/test_reports/test_reports_spec.js b/spec/frontend/pipelines/test_reports/test_reports_spec.js
index 4d6422745a9..cc86ba6d46d 100644
--- a/spec/frontend/pipelines/test_reports/test_reports_spec.js
+++ b/spec/frontend/pipelines/test_reports/test_reports_spec.js
@@ -1,13 +1,15 @@
import Vuex from 'vuex';
-import TestReports from '~/pipelines/components/test_reports/test_reports.vue';
import { shallowMount } from '@vue/test-utils';
-import { testReports } from './mock_data';
+import { getJSONFixture } from 'helpers/fixtures';
+import TestReports from '~/pipelines/components/test_reports/test_reports.vue';
import * as actions from '~/pipelines/stores/test_reports/actions';
describe('Test reports app', () => {
let wrapper;
let store;
+ const testReports = getJSONFixture('pipelines/test_report.json');
+
const loadingSpinner = () => wrapper.find('.js-loading-spinner');
const testsDetail = () => wrapper.find('.js-tests-detail');
const noTestsToShow = () => wrapper.find('.js-no-tests-to-show');
diff --git a/spec/frontend/pipelines/test_reports/test_suite_table_spec.js b/spec/frontend/pipelines/test_reports/test_suite_table_spec.js
index b4305719ea8..a5b093cf769 100644
--- a/spec/frontend/pipelines/test_reports/test_suite_table_spec.js
+++ b/spec/frontend/pipelines/test_reports/test_suite_table_spec.js
@@ -1,20 +1,28 @@
import Vuex from 'vuex';
+import { shallowMount } from '@vue/test-utils';
+import { getJSONFixture } from 'helpers/fixtures';
import SuiteTable from '~/pipelines/components/test_reports/test_suite_table.vue';
import * as getters from '~/pipelines/stores/test_reports/getters';
import { TestStatus } from '~/pipelines/constants';
-import { shallowMount } from '@vue/test-utils';
-import { testSuites, testCases } from './mock_data';
+import skippedTestCases from './mock_data';
describe('Test reports suite table', () => {
let wrapper;
let store;
+ const {
+ test_suites: [testSuite],
+ } = getJSONFixture('pipelines/test_report.json');
+
+ testSuite.test_cases = [...testSuite.test_cases, ...skippedTestCases];
+ const testCases = testSuite.test_cases;
+
const noCasesMessage = () => wrapper.find('.js-no-test-cases');
const allCaseRows = () => wrapper.findAll('.js-case-row');
const findCaseRowAtIndex = index => wrapper.findAll('.js-case-row').at(index);
const findIconForRow = (row, status) => row.find(`.ci-status-icon-${status}`);
- const createComponent = (suite = testSuites[0]) => {
+ const createComponent = (suite = testSuite) => {
store = new Vuex.Store({
state: {
selectedSuite: suite,
diff --git a/spec/frontend/pipelines/test_reports/test_summary_spec.js b/spec/frontend/pipelines/test_reports/test_summary_spec.js
index 19a7755dbdc..160d93d2e6b 100644
--- a/spec/frontend/pipelines/test_reports/test_summary_spec.js
+++ b/spec/frontend/pipelines/test_reports/test_summary_spec.js
@@ -1,10 +1,14 @@
-import Summary from '~/pipelines/components/test_reports/test_summary.vue';
import { mount } from '@vue/test-utils';
-import { testSuites } from './mock_data';
+import { getJSONFixture } from 'helpers/fixtures';
+import Summary from '~/pipelines/components/test_reports/test_summary.vue';
describe('Test reports summary', () => {
let wrapper;
+ const {
+ test_suites: [testSuite],
+ } = getJSONFixture('pipelines/test_report.json');
+
const backButton = () => wrapper.find('.js-back-button');
const totalTests = () => wrapper.find('.js-total-tests');
const failedTests = () => wrapper.find('.js-failed-tests');
@@ -13,7 +17,7 @@ describe('Test reports summary', () => {
const duration = () => wrapper.find('.js-duration');
const defaultProps = {
- report: testSuites[0],
+ report: testSuite,
showBack: false,
};
@@ -72,7 +76,28 @@ describe('Test reports summary', () => {
});
it('displays the correctly formatted duration', () => {
- expect(duration().text()).toBe('00:01:00');
+ expect(duration().text()).toBe('00:00:00');
+ });
+ });
+
+ describe('success percentage calculation', () => {
+ it.each`
+ name | successCount | totalCount | result
+ ${'displays 0 when there are no tests'} | ${0} | ${0} | ${'0'}
+ ${'displays whole number when possible'} | ${10} | ${50} | ${'20'}
+ ${'rounds to 0.01'} | ${1} | ${16604} | ${'0.01'}
+ ${'correctly rounds to 50'} | ${8302} | ${16604} | ${'50'}
+ ${'rounds down for large close numbers'} | ${16603} | ${16604} | ${'99.99'}
+ ${'correctly displays 100'} | ${16604} | ${16604} | ${'100'}
+ `('$name', ({ successCount, totalCount, result }) => {
+ createComponent({
+ report: {
+ success_count: successCount,
+ total_count: totalCount,
+ },
+ });
+
+ expect(successRate().text()).toBe(`${result}% success rate`);
});
});
});
diff --git a/spec/frontend/pipelines/test_reports/test_summary_table_spec.js b/spec/frontend/pipelines/test_reports/test_summary_table_spec.js
index e7599d5cdbc..9146f301f66 100644
--- a/spec/frontend/pipelines/test_reports/test_summary_table_spec.js
+++ b/spec/frontend/pipelines/test_reports/test_summary_table_spec.js
@@ -1,8 +1,8 @@
import Vuex from 'vuex';
+import { mount, createLocalVue } from '@vue/test-utils';
+import { getJSONFixture } from 'helpers/fixtures';
import SummaryTable from '~/pipelines/components/test_reports/test_summary_table.vue';
import * as getters from '~/pipelines/stores/test_reports/getters';
-import { mount, createLocalVue } from '@vue/test-utils';
-import { testReports, testReportsWithNoSuites } from './mock_data';
const localVue = createLocalVue();
localVue.use(Vuex);
@@ -11,6 +11,8 @@ describe('Test reports summary table', () => {
let wrapper;
let store;
+ const testReports = getJSONFixture('pipelines/test_report.json');
+
const allSuitesRows = () => wrapper.findAll('.js-suite-row');
const noSuitesToShow = () => wrapper.find('.js-no-tests-suites');
@@ -44,7 +46,7 @@ describe('Test reports summary table', () => {
describe('when there are no test suites', () => {
beforeEach(() => {
- createComponent({ testReportsWithNoSuites });
+ createComponent({ test_suites: [] });
});
it('displays the no suites to show message', () => {
diff --git a/spec/frontend/project_find_file_spec.js b/spec/frontend/project_find_file_spec.js
index e60f9f62747..b4c6d202e14 100644
--- a/spec/frontend/project_find_file_spec.js
+++ b/spec/frontend/project_find_file_spec.js
@@ -1,9 +1,9 @@
import MockAdapter from 'axios-mock-adapter';
import $ from 'jquery';
-import ProjectFindFile from '~/project_find_file';
-import axios from '~/lib/utils/axios_utils';
import { TEST_HOST } from 'helpers/test_constants';
import sanitize from 'sanitize-html';
+import ProjectFindFile from '~/project_find_file';
+import axios from '~/lib/utils/axios_utils';
jest.mock('sanitize-html', () => jest.fn(val => val));
@@ -42,21 +42,23 @@ describe('ProjectFindFile', () => {
}));
const files = [
- 'fileA.txt',
- 'fileB.txt',
- 'fi#leC.txt',
- 'folderA/fileD.txt',
- 'folder#B/fileE.txt',
- 'folde?rC/fil#F.txt',
+ { path: 'fileA.txt', escaped: 'fileA.txt' },
+ { path: 'fileB.txt', escaped: 'fileB.txt' },
+ { path: 'fi#leC.txt', escaped: 'fi%23leC.txt' },
+ { path: 'folderA/fileD.txt', escaped: 'folderA/fileD.txt' },
+ { path: 'folder#B/fileE.txt', escaped: 'folder%23B/fileE.txt' },
+ { path: 'folde?rC/fil#F.txt', escaped: 'folde%3FrC/fil%23F.txt' },
];
- beforeEach(() => {
+ beforeEach(done => {
// Create a mock adapter for stubbing axios API requests
mock = new MockAdapter(axios);
element = $(TEMPLATE);
- mock.onGet(FILE_FIND_URL).replyOnce(200, files);
+ mock.onGet(FILE_FIND_URL).replyOnce(200, files.map(x => x.path));
getProjectFindFileInstance(); // This triggers a load / axios call + subsequent render in the constructor
+
+ setImmediate(done);
});
afterEach(() => {
@@ -65,26 +67,19 @@ describe('ProjectFindFile', () => {
sanitize.mockClear();
});
- it('loads and renders elements from remote server', done => {
- setImmediate(() => {
- expect(findFiles()).toEqual(
- files.map(text => ({
- text,
- href: `${BLOB_URL_TEMPLATE}/${encodeURIComponent(text)}`,
- })),
- );
-
- done();
- });
+ it('loads and renders elements from remote server', () => {
+ expect(findFiles()).toEqual(
+ files.map(({ path, escaped }) => ({
+ text: path,
+ href: `${BLOB_URL_TEMPLATE}/${escaped}`,
+ })),
+ );
});
- it('sanitizes search text', done => {
+ it('sanitizes search text', () => {
const searchText = element.find('.file-finder-input').val();
- setImmediate(() => {
- expect(sanitize).toHaveBeenCalledTimes(1);
- expect(sanitize).toHaveBeenCalledWith(searchText);
- done();
- });
+ expect(sanitize).toHaveBeenCalledTimes(1);
+ expect(sanitize).toHaveBeenCalledWith(searchText);
});
});
diff --git a/spec/frontend/registry/components/__snapshots__/group_empty_state_spec.js.snap b/spec/frontend/registry/list/components/__snapshots__/group_empty_state_spec.js.snap
index 3f13b7d4d76..3f13b7d4d76 100644
--- a/spec/frontend/registry/components/__snapshots__/group_empty_state_spec.js.snap
+++ b/spec/frontend/registry/list/components/__snapshots__/group_empty_state_spec.js.snap
diff --git a/spec/frontend/registry/components/__snapshots__/project_empty_state_spec.js.snap b/spec/frontend/registry/list/components/__snapshots__/project_empty_state_spec.js.snap
index 3084462f5ae..3084462f5ae 100644
--- a/spec/frontend/registry/components/__snapshots__/project_empty_state_spec.js.snap
+++ b/spec/frontend/registry/list/components/__snapshots__/project_empty_state_spec.js.snap
diff --git a/spec/frontend/registry/components/app_spec.js b/spec/frontend/registry/list/components/app_spec.js
index a69c33c246d..5072a285f83 100644
--- a/spec/frontend/registry/components/app_spec.js
+++ b/spec/frontend/registry/list/components/app_spec.js
@@ -1,17 +1,17 @@
import Vue from 'vue';
import { mount } from '@vue/test-utils';
-import registry from '~/registry/components/app.vue';
-import { TEST_HOST } from '../../helpers/test_constants';
+import { TEST_HOST } from 'helpers/test_constants';
+import registry from '~/registry/list/components/app.vue';
import { reposServerResponse, parsedReposServerResponse } from '../mock_data';
describe('Registry List', () => {
let wrapper;
- const findCollapsibleContainer = w => w.findAll({ name: 'CollapsibeContainerRegisty' });
- const findProjectEmptyState = w => w.find({ name: 'ProjectEmptyState' });
- const findGroupEmptyState = w => w.find({ name: 'GroupEmptyState' });
- const findSpinner = w => w.find('.gl-spinner');
- const findCharacterErrorText = w => w.find('.js-character-error-text');
+ const findCollapsibleContainer = () => wrapper.findAll({ name: 'CollapsibeContainerRegisty' });
+ const findProjectEmptyState = () => wrapper.find({ name: 'ProjectEmptyState' });
+ const findGroupEmptyState = () => wrapper.find({ name: 'GroupEmptyState' });
+ const findSpinner = () => wrapper.find('.gl-spinner');
+ const findCharacterErrorText = () => wrapper.find('.js-character-error-text');
const propsData = {
endpoint: `${TEST_HOST}/foo`,
@@ -39,6 +39,8 @@ describe('Registry List', () => {
// See https://github.com/vuejs/vue-test-utils/issues/532.
Vue.config.silent = true;
wrapper = mount(registry, {
+ attachToDocument: true,
+ sync: false,
propsData,
computed: {
repos() {
@@ -50,23 +52,23 @@ describe('Registry List', () => {
});
afterEach(() => {
- jest.clearAllMocks();
Vue.config.silent = false;
wrapper.destroy();
});
describe('with data', () => {
it('should render a list of CollapsibeContainerRegisty', () => {
- const containers = findCollapsibleContainer(wrapper);
+ const containers = findCollapsibleContainer();
expect(wrapper.vm.repos.length).toEqual(reposServerResponse.length);
expect(containers.length).toEqual(reposServerResponse.length);
});
});
describe('without data', () => {
- let localWrapper;
beforeEach(() => {
- localWrapper = mount(registry, {
+ wrapper = mount(registry, {
+ attachToDocument: true,
+ sync: false,
propsData,
computed: {
repos() {
@@ -78,16 +80,14 @@ describe('Registry List', () => {
});
it('should render project empty message', () => {
- const projectEmptyState = findProjectEmptyState(localWrapper);
+ const projectEmptyState = findProjectEmptyState();
expect(projectEmptyState.exists()).toBe(true);
});
});
describe('while loading data', () => {
- let localWrapper;
-
beforeEach(() => {
- localWrapper = mount(registry, {
+ wrapper = mount(registry, {
propsData,
computed: {
repos() {
@@ -102,16 +102,14 @@ describe('Registry List', () => {
});
it('should render a loading spinner', () => {
- const spinner = findSpinner(localWrapper);
+ const spinner = findSpinner();
expect(spinner.exists()).toBe(true);
});
});
describe('invalid characters in path', () => {
- let localWrapper;
-
beforeEach(() => {
- localWrapper = mount(registry, {
+ wrapper = mount(registry, {
propsData: {
...propsData,
characterError: true,
@@ -126,7 +124,7 @@ describe('Registry List', () => {
});
it('should render invalid characters error message', () => {
- const characterErrorText = findCharacterErrorText(localWrapper);
+ const characterErrorText = findCharacterErrorText();
expect(characterErrorText.text()).toEqual(
'We are having trouble connecting to Docker, which could be due to an issue with your project name or path. More Information',
);
diff --git a/spec/frontend/registry/components/collapsible_container_spec.js b/spec/frontend/registry/list/components/collapsible_container_spec.js
index d035055afd3..cba49e72588 100644
--- a/spec/frontend/registry/components/collapsible_container_spec.js
+++ b/spec/frontend/registry/list/components/collapsible_container_spec.js
@@ -3,8 +3,8 @@ import Vuex from 'vuex';
import { mount, createLocalVue } from '@vue/test-utils';
import createFlash from '~/flash';
import Tracking from '~/tracking';
-import collapsibleComponent from '~/registry/components/collapsible_container.vue';
-import * as getters from '~/registry/stores/getters';
+import collapsibleComponent from '~/registry/list/components/collapsible_container.vue';
+import * as getters from '~/registry/list/stores/getters';
import { repoPropsData } from '../mock_data';
jest.mock('~/flash.js');
@@ -17,12 +17,19 @@ describe('collapsible registry container', () => {
let wrapper;
let store;
- const findDeleteBtn = (w = wrapper) => w.find('.js-remove-repo');
- const findContainerImageTags = (w = wrapper) => w.find('.container-image-tags');
- const findToggleRepos = (w = wrapper) => w.findAll('.js-toggle-repo');
- const findDeleteModal = (w = wrapper) => w.find({ ref: 'deleteModal' });
-
- const mountWithStore = config => mount(collapsibleComponent, { ...config, store, localVue });
+ const findDeleteBtn = () => wrapper.find('.js-remove-repo');
+ const findContainerImageTags = () => wrapper.find('.container-image-tags');
+ const findToggleRepos = () => wrapper.findAll('.js-toggle-repo');
+ const findDeleteModal = () => wrapper.find({ ref: 'deleteModal' });
+
+ const mountWithStore = config =>
+ mount(collapsibleComponent, {
+ ...config,
+ store,
+ localVue,
+ attachToDocument: true,
+ sync: false,
+ });
beforeEach(() => {
createFlash.mockClear();
@@ -55,7 +62,7 @@ describe('collapsible registry container', () => {
});
const expectIsClosed = () => {
- const container = findContainerImageTags(wrapper);
+ const container = findContainerImageTags();
expect(container.exists()).toBe(false);
expect(wrapper.vm.iconName).toEqual('angle-right');
};
@@ -63,15 +70,20 @@ describe('collapsible registry container', () => {
it('should be closed by default', () => {
expectIsClosed();
});
- it('should be open when user clicks on closed repo', () => {
- const toggleRepos = findToggleRepos(wrapper);
+
+ it('should be open when user clicks on closed repo', done => {
+ const toggleRepos = findToggleRepos();
toggleRepos.at(0).trigger('click');
- const container = findContainerImageTags(wrapper);
- expect(container.exists()).toBe(true);
- expect(wrapper.vm.fetchList).toHaveBeenCalled();
+ Vue.nextTick(() => {
+ const container = findContainerImageTags();
+ expect(container.exists()).toBe(true);
+ expect(wrapper.vm.fetchList).toHaveBeenCalled();
+ done();
+ });
});
+
it('should be closed when the user clicks on an opened repo', done => {
- const toggleRepos = findToggleRepos(wrapper);
+ const toggleRepos = findToggleRepos();
toggleRepos.at(0).trigger('click');
Vue.nextTick(() => {
toggleRepos.at(0).trigger('click');
@@ -85,7 +97,7 @@ describe('collapsible registry container', () => {
describe('delete repo', () => {
it('should be possible to delete a repo', () => {
- const deleteBtn = findDeleteBtn(wrapper);
+ const deleteBtn = findDeleteBtn();
expect(deleteBtn.exists()).toBe(true);
});
@@ -122,49 +134,39 @@ describe('collapsible registry container', () => {
});
it('should not render delete button', () => {
- const deleteBtn = findDeleteBtn(wrapper);
+ const deleteBtn = findDeleteBtn();
expect(deleteBtn.exists()).toBe(false);
});
});
describe('tracking', () => {
- const category = 'mock_page';
+ const testTrackingCall = action => {
+ expect(Tracking.event).toHaveBeenCalledWith(undefined, action, {
+ label: 'registry_repository_delete',
+ });
+ };
+
beforeEach(() => {
jest.spyOn(Tracking, 'event');
wrapper.vm.deleteItem = jest.fn().mockResolvedValue();
wrapper.vm.fetchRepos = jest.fn();
- wrapper.setData({
- tracking: {
- ...wrapper.vm.tracking,
- category,
- },
- });
});
it('send an event when delete button is clicked', () => {
const deleteBtn = findDeleteBtn();
deleteBtn.trigger('click');
- expect(Tracking.event).toHaveBeenCalledWith(category, 'click_button', {
- label: 'registry_repository_delete',
- category,
- });
+ testTrackingCall('click_button');
});
it('send an event when cancel is pressed on modal', () => {
const deleteModal = findDeleteModal();
deleteModal.vm.$emit('cancel');
- expect(Tracking.event).toHaveBeenCalledWith(category, 'cancel_delete', {
- label: 'registry_repository_delete',
- category,
- });
+ testTrackingCall('cancel_delete');
});
it('send an event when confirm is clicked on modal', () => {
const deleteModal = findDeleteModal();
deleteModal.vm.$emit('ok');
- expect(Tracking.event).toHaveBeenCalledWith(category, 'confirm_delete', {
- label: 'registry_repository_delete',
- category,
- });
+ testTrackingCall('confirm_delete');
});
});
});
diff --git a/spec/frontend/registry/components/group_empty_state_spec.js b/spec/frontend/registry/list/components/group_empty_state_spec.js
index f71074b5154..7541c3d459c 100644
--- a/spec/frontend/registry/components/group_empty_state_spec.js
+++ b/spec/frontend/registry/list/components/group_empty_state_spec.js
@@ -1,5 +1,5 @@
import { mount } from '@vue/test-utils';
-import groupEmptyState from '~/registry/components/group_empty_state.vue';
+import groupEmptyState from '~/registry/list/components/group_empty_state.vue';
describe('Registry Group Empty state', () => {
let wrapper;
diff --git a/spec/frontend/registry/components/project_empty_state_spec.js b/spec/frontend/registry/list/components/project_empty_state_spec.js
index 913524db3aa..bd717a4eb10 100644
--- a/spec/frontend/registry/components/project_empty_state_spec.js
+++ b/spec/frontend/registry/list/components/project_empty_state_spec.js
@@ -1,11 +1,13 @@
import { mount } from '@vue/test-utils';
-import projectEmptyState from '~/registry/components/project_empty_state.vue';
+import projectEmptyState from '~/registry/list/components/project_empty_state.vue';
describe('Registry Project Empty state', () => {
let wrapper;
beforeEach(() => {
wrapper = mount(projectEmptyState, {
+ attachToDocument: true,
+ sync: false,
propsData: {
noContainersImage: 'imageUrl',
helpPagePath: 'help',
diff --git a/spec/frontend/registry/components/table_registry_spec.js b/spec/frontend/registry/list/components/table_registry_spec.js
index ab88caf44e1..fe099adbdfb 100644
--- a/spec/frontend/registry/components/table_registry_spec.js
+++ b/spec/frontend/registry/list/components/table_registry_spec.js
@@ -3,9 +3,9 @@ import Vuex from 'vuex';
import { mount, createLocalVue } from '@vue/test-utils';
import createFlash from '~/flash';
import Tracking from '~/tracking';
-import tableRegistry from '~/registry/components/table_registry.vue';
+import tableRegistry from '~/registry/list/components/table_registry.vue';
import { repoPropsData } from '../mock_data';
-import * as getters from '~/registry/stores/getters';
+import * as getters from '~/registry/list/stores/getters';
jest.mock('~/flash');
@@ -19,15 +19,17 @@ describe('table registry', () => {
let wrapper;
let store;
- const findSelectAllCheckbox = (w = wrapper) => w.find('.js-select-all-checkbox > input');
- const findSelectCheckboxes = (w = wrapper) => w.findAll('.js-select-checkbox > input');
- const findDeleteButton = (w = wrapper) => w.find({ ref: 'bulkDeleteButton' });
- const findDeleteButtonsRow = (w = wrapper) => w.findAll('.js-delete-registry-row');
- const findPagination = (w = wrapper) => w.find('.js-registry-pagination');
- const findDeleteModal = (w = wrapper) => w.find({ ref: 'deleteModal' });
+ const findSelectAllCheckbox = () => wrapper.find('.js-select-all-checkbox > input');
+ const findSelectCheckboxes = () => wrapper.findAll('.js-select-checkbox > input');
+ const findDeleteButton = () => wrapper.find({ ref: 'bulkDeleteButton' });
+ const findDeleteButtonsRow = () => wrapper.findAll('.js-delete-registry-row');
+ const findPagination = () => wrapper.find('.js-registry-pagination');
+ const findDeleteModal = () => wrapper.find({ ref: 'deleteModal' });
+ const findImageId = () => wrapper.find({ ref: 'imageId' });
const bulkDeletePath = 'path';
- const mountWithStore = config => mount(tableRegistry, { ...config, store, localVue });
+ const mountWithStore = config =>
+ mount(tableRegistry, { ...config, store, localVue, attachToDocument: true, sync: false });
beforeEach(() => {
// This is needed due to console.error called by vue to emit a warning that stop the tests
@@ -66,14 +68,23 @@ describe('table registry', () => {
expect(tds.at(2).html()).toContain(repoPropsData.list[0].shortRevision);
expect(tds.at(3).html()).toContain(repoPropsData.list[0].layers);
expect(tds.at(3).html()).toContain(repoPropsData.list[0].size);
- expect(tds.at(4).html()).toContain(wrapper.vm.timeFormated(repoPropsData.list[0].createdAt));
+ expect(tds.at(4).html()).toContain(wrapper.vm.timeFormatted(repoPropsData.list[0].createdAt));
+ });
+
+ it('should have a label called Image ID', () => {
+ const label = findImageId();
+ expect(label.element).toMatchInlineSnapshot(`
+ <th>
+ Image ID
+ </th>
+ `);
});
});
describe('multi select', () => {
it('selecting a row should enable delete button', done => {
- const deleteBtn = findDeleteButton(wrapper);
- const checkboxes = findSelectCheckboxes(wrapper);
+ const deleteBtn = findDeleteButton();
+ const checkboxes = findSelectCheckboxes();
expect(deleteBtn.attributes('disabled')).toBe('disabled');
@@ -85,8 +96,8 @@ describe('table registry', () => {
});
it('selecting all checkbox should select all rows and enable delete button', done => {
- const selectAll = findSelectAllCheckbox(wrapper);
- const checkboxes = findSelectCheckboxes(wrapper);
+ const selectAll = findSelectAllCheckbox();
+ const checkboxes = findSelectCheckboxes();
selectAll.trigger('click');
Vue.nextTick(() => {
@@ -97,8 +108,8 @@ describe('table registry', () => {
});
it('deselecting select all checkbox should deselect all rows and disable delete button', done => {
- const checkboxes = findSelectCheckboxes(wrapper);
- const selectAll = findSelectAllCheckbox(wrapper);
+ const checkboxes = findSelectCheckboxes();
+ const selectAll = findSelectAllCheckbox();
selectAll.trigger('click');
selectAll.trigger('click');
@@ -112,11 +123,11 @@ describe('table registry', () => {
it('should delete multiple items when multiple items are selected', done => {
const multiDeleteItems = jest.fn().mockResolvedValue();
wrapper.setMethods({ multiDeleteItems });
- const selectAll = findSelectAllCheckbox(wrapper);
+ const selectAll = findSelectAllCheckbox();
selectAll.trigger('click');
Vue.nextTick(() => {
- const deleteBtn = findDeleteButton(wrapper);
+ const deleteBtn = findDeleteButton();
expect(wrapper.vm.selectedItems).toEqual([0, 1]);
expect(deleteBtn.attributes('disabled')).toEqual(undefined);
wrapper.setData({ itemsToBeDeleted: [...wrapper.vm.selectedItems] });
@@ -154,8 +165,8 @@ describe('table registry', () => {
});
it('should be possible to delete a registry', () => {
- const deleteBtn = findDeleteButton(wrapper);
- const deleteBtns = findDeleteButtonsRow(wrapper);
+ const deleteBtn = findDeleteButton();
+ const deleteBtns = findDeleteButtonsRow();
expect(wrapper.vm.selectedItems).toEqual([0]);
expect(deleteBtn).toBeDefined();
expect(deleteBtn.attributes('disable')).toBe(undefined);
@@ -163,7 +174,7 @@ describe('table registry', () => {
});
it('should allow deletion row by row', () => {
- const deleteBtns = findDeleteButtonsRow(wrapper);
+ const deleteBtns = findDeleteButtonsRow();
const deleteSingleItem = jest.fn();
const deleteItem = jest.fn().mockResolvedValue();
wrapper.setMethods({ deleteSingleItem, deleteItem });
@@ -186,7 +197,7 @@ describe('table registry', () => {
expect(wrapper.vm.handleSingleDelete).toHaveBeenCalledWith(repoPropsData.list[0]);
expect(wrapper.vm.handleMultipleDelete).not.toHaveBeenCalled();
});
- it('on ok when multiple items are selected should call muultiDelete', () => {
+ it('on ok when multiple items are selected should call multiDelete', () => {
wrapper.setData({ itemsToBeDeleted: [0, 1, 2] });
wrapper.vm.onDeletionConfirmed();
@@ -214,11 +225,11 @@ describe('table registry', () => {
});
it('should exist', () => {
- const pagination = findPagination(wrapper);
+ const pagination = findPagination();
expect(pagination.exists()).toBe(true);
});
it('should be visible when pagination is needed', () => {
- const pagination = findPagination(wrapper);
+ const pagination = findPagination();
expect(pagination.isVisible()).toBe(true);
wrapper.setProps({
repo: {
@@ -272,38 +283,35 @@ describe('table registry', () => {
});
it('should not render select all', () => {
- const selectAll = findSelectAllCheckbox(wrapper);
+ const selectAll = findSelectAllCheckbox();
expect(selectAll.exists()).toBe(false);
});
it('should not render any select checkbox', () => {
- const selects = findSelectCheckboxes(wrapper);
+ const selects = findSelectCheckboxes();
expect(selects.length).toBe(0);
});
it('should not render delete registry button', () => {
- const deleteBtn = findDeleteButton(wrapper);
+ const deleteBtn = findDeleteButton();
expect(deleteBtn.exists()).toBe(false);
});
it('should not render delete row button', () => {
- const deleteBtns = findDeleteButtonsRow(wrapper);
+ const deleteBtns = findDeleteButtonsRow();
expect(deleteBtns.length).toBe(0);
});
});
describe('event tracking', () => {
- const mockPageName = 'mock_page';
+ const testTrackingCall = (action, label = 'registry_tag_delete') => {
+ expect(Tracking.event).toHaveBeenCalledWith(undefined, action, { label, property: 'foo' });
+ };
beforeEach(() => {
jest.spyOn(Tracking, 'event');
wrapper.vm.handleSingleDelete = jest.fn();
wrapper.vm.handleMultipleDelete = jest.fn();
- document.body.dataset.page = mockPageName;
- });
-
- afterEach(() => {
- document.body.dataset.page = null;
});
describe('single tag delete', () => {
@@ -314,29 +322,25 @@ describe('table registry', () => {
it('send an event when delete button is clicked', () => {
const deleteBtn = findDeleteButtonsRow();
deleteBtn.at(0).trigger('click');
- expect(Tracking.event).toHaveBeenCalledWith(mockPageName, 'click_button', {
- label: 'registry_tag_delete',
- property: 'foo',
- });
+
+ testTrackingCall('click_button');
});
+
it('send an event when cancel is pressed on modal', () => {
const deleteModal = findDeleteModal();
deleteModal.vm.$emit('cancel');
- expect(Tracking.event).toHaveBeenCalledWith(mockPageName, 'cancel_delete', {
- label: 'registry_tag_delete',
- property: 'foo',
- });
+
+ testTrackingCall('cancel_delete');
});
+
it('send an event when confirm is clicked on modal', () => {
const deleteModal = findDeleteModal();
deleteModal.vm.$emit('ok');
- expect(Tracking.event).toHaveBeenCalledWith(mockPageName, 'confirm_delete', {
- label: 'registry_tag_delete',
- property: 'foo',
- });
+ testTrackingCall('confirm_delete');
});
});
+
describe('bulk tag delete', () => {
beforeEach(() => {
const items = [0, 1, 2];
@@ -346,27 +350,22 @@ describe('table registry', () => {
it('send an event when delete button is clicked', () => {
const deleteBtn = findDeleteButton();
deleteBtn.vm.$emit('click');
- expect(Tracking.event).toHaveBeenCalledWith(mockPageName, 'click_button', {
- label: 'bulk_registry_tag_delete',
- property: 'foo',
- });
+
+ testTrackingCall('click_button', 'bulk_registry_tag_delete');
});
+
it('send an event when cancel is pressed on modal', () => {
const deleteModal = findDeleteModal();
deleteModal.vm.$emit('cancel');
- expect(Tracking.event).toHaveBeenCalledWith(mockPageName, 'cancel_delete', {
- label: 'bulk_registry_tag_delete',
- property: 'foo',
- });
+
+ testTrackingCall('cancel_delete', 'bulk_registry_tag_delete');
});
+
it('send an event when confirm is clicked on modal', () => {
const deleteModal = findDeleteModal();
deleteModal.vm.$emit('ok');
- expect(Tracking.event).toHaveBeenCalledWith(mockPageName, 'confirm_delete', {
- label: 'bulk_registry_tag_delete',
- property: 'foo',
- });
+ testTrackingCall('confirm_delete', 'bulk_registry_tag_delete');
});
});
});
diff --git a/spec/frontend/registry/mock_data.js b/spec/frontend/registry/list/mock_data.js
index 130ab298e89..130ab298e89 100644
--- a/spec/frontend/registry/mock_data.js
+++ b/spec/frontend/registry/list/mock_data.js
diff --git a/spec/frontend/registry/stores/actions_spec.js b/spec/frontend/registry/list/stores/actions_spec.js
index 7937fa82e80..2fc363e9a4f 100644
--- a/spec/frontend/registry/stores/actions_spec.js
+++ b/spec/frontend/registry/list/stores/actions_spec.js
@@ -1,9 +1,9 @@
import MockAdapter from 'axios-mock-adapter';
+import { TEST_HOST } from 'helpers/test_constants';
+import testAction from 'helpers/vuex_action_helper';
import axios from '~/lib/utils/axios_utils';
-import * as actions from '~/registry/stores/actions';
-import * as types from '~/registry/stores/mutation_types';
-import { TEST_HOST } from '../../helpers/test_constants';
-import testAction from '../../helpers/vuex_action_helper';
+import * as actions from '~/registry/list/stores/actions';
+import * as types from '~/registry/list/stores/mutation_types';
import createFlash from '~/flash';
import {
diff --git a/spec/frontend/registry/stores/getters_spec.js b/spec/frontend/registry/list/stores/getters_spec.js
index c16f520223b..c8d054b226b 100644
--- a/spec/frontend/registry/stores/getters_spec.js
+++ b/spec/frontend/registry/list/stores/getters_spec.js
@@ -1,4 +1,4 @@
-import * as getters from '~/registry/stores/getters';
+import * as getters from '~/registry/list/stores/getters';
describe('Getters Registry Store', () => {
let state;
diff --git a/spec/frontend/registry/stores/mutations_spec.js b/spec/frontend/registry/list/stores/mutations_spec.js
index 1d583028ca6..f894f688c1f 100644
--- a/spec/frontend/registry/stores/mutations_spec.js
+++ b/spec/frontend/registry/list/stores/mutations_spec.js
@@ -1,5 +1,5 @@
-import mutations from '~/registry/stores/mutations';
-import * as types from '~/registry/stores/mutation_types';
+import mutations from '~/registry/list/stores/mutations';
+import * as types from '~/registry/list/stores/mutation_types';
import {
defaultState,
reposServerResponse,
diff --git a/spec/frontend/registry/settings/components/__snapshots__/registry_settings_app_spec.js.snap b/spec/frontend/registry/settings/components/__snapshots__/registry_settings_app_spec.js.snap
new file mode 100644
index 00000000000..c6dbb1da8e9
--- /dev/null
+++ b/spec/frontend/registry/settings/components/__snapshots__/registry_settings_app_spec.js.snap
@@ -0,0 +1,33 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Registry List renders 1`] = `
+<div>
+ <p>
+
+ Tag retention policies are designed to:
+
+ </p>
+
+ <ul>
+ <li>
+ Keep and protect the images that matter most.
+ </li>
+
+ <li>
+
+ Automatically remove extra images that aren't designed to be kept.
+
+ </li>
+ </ul>
+
+ <p>
+ Read more about the
+ <a
+ href="foo"
+ target="_blank"
+ >
+ Container Registry tag retention policies
+ </a>
+ </p>
+</div>
+`;
diff --git a/spec/frontend/registry/settings/components/registry_settings_app_spec.js b/spec/frontend/registry/settings/components/registry_settings_app_spec.js
new file mode 100644
index 00000000000..666d970aa6b
--- /dev/null
+++ b/spec/frontend/registry/settings/components/registry_settings_app_spec.js
@@ -0,0 +1,40 @@
+import Vuex from 'vuex';
+import { shallowMount, createLocalVue } from '@vue/test-utils';
+import component from '~/registry/settings/components/registry_settings_app.vue';
+import { createStore } from '~/registry/settings/stores/';
+
+const localVue = createLocalVue();
+localVue.use(Vuex);
+
+describe('Registry List', () => {
+ let wrapper;
+ let store;
+
+ const helpPagePath = 'foo';
+ const findHelpLink = () => wrapper.find({ ref: 'help-link' }).find('a');
+
+ const mountComponent = (options = {}) =>
+ shallowMount(component, {
+ sync: false,
+ store,
+ ...options,
+ });
+
+ beforeEach(() => {
+ store = createStore();
+ store.dispatch('setInitialState', { helpPagePath });
+ wrapper = mountComponent();
+ });
+
+ afterEach(() => {
+ wrapper.destroy();
+ });
+
+ it('renders', () => {
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('renders an help link dependant on the helphPagePath', () => {
+ expect(findHelpLink().attributes('href')).toBe(helpPagePath);
+ });
+});
diff --git a/spec/frontend/registry/settings/stores/actions_spec.js b/spec/frontend/registry/settings/stores/actions_spec.js
new file mode 100644
index 00000000000..484f1b2dc0a
--- /dev/null
+++ b/spec/frontend/registry/settings/stores/actions_spec.js
@@ -0,0 +1,20 @@
+import testAction from 'helpers/vuex_action_helper';
+import * as actions from '~/registry/settings/stores/actions';
+import * as types from '~/registry/settings/stores/mutation_types';
+
+jest.mock('~/flash.js');
+
+describe('Actions Registry Store', () => {
+ describe('setInitialState', () => {
+ it('should set the initial state', done => {
+ testAction(
+ actions.setInitialState,
+ 'foo',
+ {},
+ [{ type: types.SET_INITIAL_STATE, payload: 'foo' }],
+ [],
+ done,
+ );
+ });
+ });
+});
diff --git a/spec/frontend/registry/settings/stores/mutations_spec.js b/spec/frontend/registry/settings/stores/mutations_spec.js
new file mode 100644
index 00000000000..421cd3f13cb
--- /dev/null
+++ b/spec/frontend/registry/settings/stores/mutations_spec.js
@@ -0,0 +1,21 @@
+import mutations from '~/registry/settings/stores/mutations';
+import * as types from '~/registry/settings/stores/mutation_types';
+import createState from '~/registry/settings/stores/state';
+
+describe('Mutations Registry Store', () => {
+ let mockState;
+
+ beforeEach(() => {
+ mockState = createState();
+ });
+
+ describe('SET_INITIAL_STATE', () => {
+ it('should set the initial state', () => {
+ const payload = { helpPagePath: 'foo', registrySettingsEndpoint: 'bar' };
+ const expectedState = { ...mockState, ...payload };
+ mutations[types.SET_INITIAL_STATE](mockState, payload);
+
+ expect(mockState.endpoint).toEqual(expectedState.endpoint);
+ });
+ });
+});
diff --git a/spec/frontend/releases/detail/components/app_spec.js b/spec/frontend/releases/detail/components/app_spec.js
index 4726f18c8fa..4f094e8639a 100644
--- a/spec/frontend/releases/detail/components/app_spec.js
+++ b/spec/frontend/releases/detail/components/app_spec.js
@@ -29,7 +29,7 @@ describe('Release detail component', () => {
const store = new Vuex.Store({ actions, state });
- wrapper = mount(ReleaseDetailApp, { store });
+ wrapper = mount(ReleaseDetailApp, { store, sync: false, attachToDocument: true });
return wrapper.vm.$nextTick();
});
diff --git a/spec/frontend/releases/detail/store/actions_spec.js b/spec/frontend/releases/detail/store/actions_spec.js
index f1c7f3c1048..5a1447aa4fc 100644
--- a/spec/frontend/releases/detail/store/actions_spec.js
+++ b/spec/frontend/releases/detail/store/actions_spec.js
@@ -1,7 +1,7 @@
import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';
-import * as actions from '~/releases/detail/store/actions';
import testAction from 'helpers/vuex_action_helper';
+import * as actions from '~/releases/detail/store/actions';
import * as types from '~/releases/detail/store/mutation_types';
import { release } from '../../mock_data';
import state from '~/releases/detail/store/state';
diff --git a/spec/frontend/releases/list/components/evidence_block_spec.js b/spec/frontend/releases/list/components/evidence_block_spec.js
new file mode 100644
index 00000000000..e8a3eace216
--- /dev/null
+++ b/spec/frontend/releases/list/components/evidence_block_spec.js
@@ -0,0 +1,77 @@
+import { mount, createLocalVue } from '@vue/test-utils';
+import { GlLink } from '@gitlab/ui';
+import { truncateSha } from '~/lib/utils/text_utility';
+import Icon from '~/vue_shared/components/icon.vue';
+import { release } from '../../mock_data';
+import EvidenceBlock from '~/releases/list/components/evidence_block.vue';
+import ClipboardButton from '~/vue_shared/components/clipboard_button.vue';
+
+describe('Evidence Block', () => {
+ let wrapper;
+
+ const factory = (options = {}) => {
+ const localVue = createLocalVue();
+
+ wrapper = mount(localVue.extend(EvidenceBlock), {
+ localVue,
+ ...options,
+ });
+ };
+
+ beforeEach(() => {
+ factory({
+ propsData: {
+ release,
+ },
+ });
+ });
+
+ afterEach(() => {
+ wrapper.destroy();
+ });
+
+ it('renders the evidence icon', () => {
+ expect(wrapper.find(Icon).props('name')).toBe('review-list');
+ });
+
+ it('renders the title for the dowload link', () => {
+ expect(wrapper.find(GlLink).text()).toBe(`${release.tag_name}-evidence.json`);
+ });
+
+ it('renders the correct hover text for the download', () => {
+ expect(wrapper.find(GlLink).attributes('data-original-title')).toBe('Download evidence JSON');
+ });
+
+ it('renders the correct file link for download', () => {
+ expect(wrapper.find(GlLink).attributes().download).toBe(`${release.tag_name}-evidence.json`);
+ });
+
+ describe('sha text', () => {
+ it('renders the short sha initially', () => {
+ expect(wrapper.find('.js-short').text()).toBe(truncateSha(release.evidence_sha));
+ });
+
+ it('renders the long sha after expansion', () => {
+ wrapper.find('.js-text-expander-prepend').trigger('click');
+ expect(wrapper.find('.js-expanded').text()).toBe(release.evidence_sha);
+ });
+ });
+
+ describe('copy to clipboard button', () => {
+ it('renders button', () => {
+ expect(wrapper.find(ClipboardButton).exists()).toBe(true);
+ });
+
+ it('renders the correct hover text', () => {
+ expect(wrapper.find(ClipboardButton).attributes('data-original-title')).toBe(
+ 'Copy commit SHA',
+ );
+ });
+
+ it('copies the sha', () => {
+ expect(wrapper.find(ClipboardButton).attributes('data-clipboard-text')).toBe(
+ release.evidence_sha,
+ );
+ });
+ });
+});
diff --git a/spec/frontend/releases/list/components/release_block_footer_spec.js b/spec/frontend/releases/list/components/release_block_footer_spec.js
index 172147f1cc8..7652acbdd62 100644
--- a/spec/frontend/releases/list/components/release_block_footer_spec.js
+++ b/spec/frontend/releases/list/components/release_block_footer_spec.js
@@ -1,15 +1,15 @@
import { mount } from '@vue/test-utils';
-import ReleaseBlockFooter from '~/releases/list/components/release_block_footer.vue';
-import Icon from '~/vue_shared/components/icon.vue';
import { GlLink } from '@gitlab/ui';
import { trimText } from 'helpers/text_helper';
+import ReleaseBlockFooter from '~/releases/list/components/release_block_footer.vue';
+import Icon from '~/vue_shared/components/icon.vue';
import { release } from '../../mock_data';
import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils';
jest.mock('~/vue_shared/mixins/timeago', () => ({
methods: {
- timeFormated() {
- return '7 fortnightes ago';
+ timeFormatted() {
+ return '7 fortnights ago';
},
tooltipTitle() {
return 'February 30, 2401';
@@ -82,7 +82,7 @@ describe('Release block footer', () => {
it('renders the author and creation time info', () => {
expect(trimText(authorDateInfoSection().text())).toBe(
- `Created 7 fortnightes ago by ${releaseClone.author.username}`,
+ `Created 7 fortnights ago by ${releaseClone.author.username}`,
);
});
@@ -139,7 +139,7 @@ describe('Release block footer', () => {
beforeEach(() => factory({ author: undefined }));
it('renders the release date without the author name', () => {
- expect(trimText(authorDateInfoSection().text())).toBe('Created 7 fortnightes ago');
+ expect(trimText(authorDateInfoSection().text())).toBe('Created 7 fortnights ago');
});
});
diff --git a/spec/frontend/releases/list/components/release_block_milestone_info_spec.js b/spec/frontend/releases/list/components/release_block_milestone_info_spec.js
new file mode 100644
index 00000000000..7179ab3d3cc
--- /dev/null
+++ b/spec/frontend/releases/list/components/release_block_milestone_info_spec.js
@@ -0,0 +1,179 @@
+import { mount } from '@vue/test-utils';
+import { GlProgressBar, GlLink, GlBadge, GlButton } from '@gitlab/ui';
+import { trimText } from 'helpers/text_helper';
+import ReleaseBlockMilestoneInfo from '~/releases/list/components/release_block_milestone_info.vue';
+import { milestones } from '../../mock_data';
+import { MAX_MILESTONES_TO_DISPLAY } from '~/releases/list/constants';
+
+describe('Release block milestone info', () => {
+ let wrapper;
+ let milestonesClone;
+
+ const factory = milestonesProp => {
+ wrapper = mount(ReleaseBlockMilestoneInfo, {
+ propsData: {
+ milestones: milestonesProp,
+ },
+ sync: false,
+ });
+
+ return wrapper.vm.$nextTick();
+ };
+
+ beforeEach(() => {
+ milestonesClone = JSON.parse(JSON.stringify(milestones));
+ });
+
+ afterEach(() => {
+ wrapper.destroy();
+ });
+
+ const milestoneProgressBarContainer = () => wrapper.find('.js-milestone-progress-bar-container');
+ const milestoneListContainer = () => wrapper.find('.js-milestone-list-container');
+ const issuesContainer = () => wrapper.find('.js-issues-container');
+
+ describe('with default props', () => {
+ beforeEach(() => factory(milestonesClone));
+
+ it('renders the correct percentage', () => {
+ expect(milestoneProgressBarContainer().text()).toContain('41% complete');
+ });
+
+ it('renders a progress bar that displays the correct percentage', () => {
+ const progressBar = milestoneProgressBarContainer().find(GlProgressBar);
+
+ expect(progressBar.exists()).toBe(true);
+ expect(progressBar.attributes()).toEqual(
+ expect.objectContaining({
+ value: '22',
+ max: '54',
+ }),
+ );
+ });
+
+ it('renders a list of links to all associated milestones', () => {
+ expect(trimText(milestoneListContainer().text())).toContain('Milestones 13.6 • 13.5');
+
+ milestonesClone.forEach((m, i) => {
+ const milestoneLink = milestoneListContainer()
+ .findAll(GlLink)
+ .at(i);
+
+ expect(milestoneLink.text()).toBe(m.title);
+ expect(milestoneLink.attributes('href')).toBe(m.web_url);
+ expect(milestoneLink.attributes('data-original-title')).toBe(m.description);
+ });
+ });
+
+ it('renders the "Issues" section with a total count of issues associated to the milestone(s)', () => {
+ const totalIssueCount = 54;
+ const issuesContainerText = trimText(issuesContainer().text());
+
+ expect(issuesContainerText).toContain(`Issues ${totalIssueCount}`);
+
+ const badge = issuesContainer().find(GlBadge);
+ expect(badge.text()).toBe(totalIssueCount.toString());
+
+ expect(issuesContainerText).toContain('Open: 32 • Closed: 22');
+ });
+ });
+
+ describe('with lots of milestones', () => {
+ let lotsOfMilestones;
+ let fullListString;
+ let abbreviatedListString;
+
+ beforeEach(() => {
+ lotsOfMilestones = [];
+ const template = milestonesClone[0];
+
+ for (let i = 0; i < MAX_MILESTONES_TO_DISPLAY + 10; i += 1) {
+ lotsOfMilestones.push({
+ ...template,
+ id: template.id + i,
+ iid: template.iid + i,
+ title: `m-${i}`,
+ });
+ }
+
+ fullListString = lotsOfMilestones.map(m => m.title).join(' • ');
+ abbreviatedListString = lotsOfMilestones
+ .slice(0, MAX_MILESTONES_TO_DISPLAY)
+ .map(m => m.title)
+ .join(' • ');
+
+ return factory(lotsOfMilestones);
+ });
+
+ const clickShowMoreFewerButton = () => {
+ milestoneListContainer()
+ .find(GlButton)
+ .trigger('click');
+
+ return wrapper.vm.$nextTick();
+ };
+
+ const milestoneListText = () => trimText(milestoneListContainer().text());
+
+ it('only renders a subset of the milestones', () => {
+ expect(milestoneListText()).toContain(`Milestones ${abbreviatedListString} • show 10 more`);
+ });
+
+ it('renders all milestones when "show more" is clicked', () =>
+ clickShowMoreFewerButton().then(() => {
+ expect(milestoneListText()).toContain(`Milestones ${fullListString} • show fewer`);
+ }));
+
+ it('returns to the original view when "show fewer" is clicked', () =>
+ clickShowMoreFewerButton()
+ .then(clickShowMoreFewerButton)
+ .then(() => {
+ expect(milestoneListText()).toContain(
+ `Milestones ${abbreviatedListString} • show 10 more`,
+ );
+ }));
+ });
+
+ const expectAllZeros = () => {
+ it('displays percentage as 0%', () => {
+ expect(milestoneProgressBarContainer().text()).toContain('0% complete');
+ });
+
+ it('shows 0 for all issue counts', () => {
+ const issuesContainerText = trimText(issuesContainer().text());
+
+ expect(issuesContainerText).toContain('Issues 0 Open: 0 • Closed: 0');
+ });
+ };
+
+ /** Ensures we don't have any issues with dividing by zero when computing percentages */
+ describe('when all issue counts are zero', () => {
+ beforeEach(() => {
+ milestonesClone = milestonesClone.map(m => ({
+ ...m,
+ issue_stats: {
+ ...m.issue_stats,
+ opened: 0,
+ closed: 0,
+ },
+ }));
+
+ return factory(milestonesClone);
+ });
+
+ expectAllZeros();
+ });
+
+ describe('if the API response is missing the "issue_stats" property', () => {
+ beforeEach(() => {
+ milestonesClone = milestonesClone.map(m => ({
+ ...m,
+ issue_stats: undefined,
+ }));
+
+ return factory(milestonesClone);
+ });
+
+ expectAllZeros();
+ });
+});
diff --git a/spec/frontend/releases/list/components/release_block_spec.js b/spec/frontend/releases/list/components/release_block_spec.js
index b63ef068d8e..38c5e4fc0a2 100644
--- a/spec/frontend/releases/list/components/release_block_spec.js
+++ b/spec/frontend/releases/list/components/release_block_spec.js
@@ -1,8 +1,9 @@
import { mount } from '@vue/test-utils';
+import { first } from 'underscore';
+import EvidenceBlock from '~/releases/list/components/evidence_block.vue';
import ReleaseBlock from '~/releases/list/components/release_block.vue';
import ReleaseBlockFooter from '~/releases/list/components/release_block_footer.vue';
import timeagoMixin from '~/vue_shared/mixins/timeago';
-import { first } from 'underscore';
import { release } from '../../mock_data';
import Icon from '~/vue_shared/components/icon.vue';
import { scrollToElement } from '~/lib/utils/common_utils';
@@ -29,7 +30,6 @@ describe('Release block', () => {
},
provide: {
glFeatures: {
- releaseEditPage: true,
releaseIssueSummary: true,
...featureFlags,
},
@@ -68,7 +68,7 @@ describe('Release block', () => {
});
it('renders release date', () => {
- expect(wrapper.text()).toContain(timeagoMixin.methods.timeFormated(release.released_at));
+ expect(wrapper.text()).toContain(timeagoMixin.methods.timeFormatted(release.released_at));
});
it('renders number of assets provided', () => {
@@ -117,35 +117,6 @@ describe('Release block', () => {
});
});
- it('renders the milestone icon', () => {
- expect(
- milestoneListLabel()
- .find(Icon)
- .exists(),
- ).toBe(true);
- });
-
- it('renders the label as "Milestones" if more than one milestone is passed in', () => {
- expect(
- milestoneListLabel()
- .find('.js-label-text')
- .text(),
- ).toEqual('Milestones');
- });
-
- it('renders a link to the milestone with a tooltip', () => {
- const milestone = first(release.milestones);
- const milestoneLink = wrapper.find('.js-milestone-link');
-
- expect(milestoneLink.exists()).toBe(true);
-
- expect(milestoneLink.text()).toBe(milestone.title);
-
- expect(milestoneLink.attributes('href')).toBe(milestone.web_url);
-
- expect(milestoneLink.attributes('data-original-title')).toBe(milestone.description);
- });
-
it('renders the footer', () => {
expect(wrapper.find(ReleaseBlockFooter).exists()).toBe(true);
});
@@ -179,11 +150,6 @@ describe('Release block', () => {
});
});
- it('does not render an edit button if the releaseEditPage feature flag is disabled', () =>
- factory(releaseClone, { releaseEditPage: false }).then(() => {
- expect(editButton().exists()).toBe(false);
- }));
-
it('does not render the milestone list if no milestones are associated to the release', () => {
delete releaseClone.milestones;
@@ -192,18 +158,6 @@ describe('Release block', () => {
});
});
- it('renders the label as "Milestone" if only a single milestone is passed in', () => {
- releaseClone.milestones = releaseClone.milestones.slice(0, 1);
-
- return factory(releaseClone).then(() => {
- expect(
- milestoneListLabel()
- .find('.js-label-text')
- .text(),
- ).toEqual('Milestone');
- });
- });
-
it('renders upcoming release badge', () => {
releaseClone.upcoming_release = true;
@@ -220,6 +174,26 @@ describe('Release block', () => {
});
});
+ describe('evidence block', () => {
+ it('renders the evidence block when the evidence is available and the feature flag is true', () =>
+ factory(releaseClone, { releaseEvidenceCollection: true }).then(() =>
+ expect(wrapper.find(EvidenceBlock).exists()).toBe(true),
+ ));
+
+ it('does not render the evidence block when the evidence is available but the feature flag is false', () =>
+ factory(releaseClone, { releaseEvidenceCollection: true }).then(() =>
+ expect(wrapper.find(EvidenceBlock).exists()).toBe(true),
+ ));
+
+ it('does not render the evidence block when there is no evidence', () => {
+ releaseClone.evidence_sha = null;
+
+ return factory(releaseClone).then(() => {
+ expect(wrapper.find(EvidenceBlock).exists()).toBe(false);
+ });
+ });
+ });
+
describe('anchor scrolling', () => {
beforeEach(() => {
scrollToElement.mockClear();
@@ -266,4 +240,51 @@ describe('Release block', () => {
});
});
});
+
+ describe('when the releaseIssueSummary feature flag is disabled', () => {
+ describe('with default props', () => {
+ beforeEach(() => factory(release, { releaseIssueSummary: false }));
+
+ it('renders the milestone icon', () => {
+ expect(
+ milestoneListLabel()
+ .find(Icon)
+ .exists(),
+ ).toBe(true);
+ });
+
+ it('renders the label as "Milestones" if more than one milestone is passed in', () => {
+ expect(
+ milestoneListLabel()
+ .find('.js-label-text')
+ .text(),
+ ).toEqual('Milestones');
+ });
+
+ it('renders a link to the milestone with a tooltip', () => {
+ const milestone = first(release.milestones);
+ const milestoneLink = wrapper.find('.js-milestone-link');
+
+ expect(milestoneLink.exists()).toBe(true);
+
+ expect(milestoneLink.text()).toBe(milestone.title);
+
+ expect(milestoneLink.attributes('href')).toBe(milestone.web_url);
+
+ expect(milestoneLink.attributes('data-original-title')).toBe(milestone.description);
+ });
+ });
+
+ it('renders the label as "Milestone" if only a single milestone is passed in', () => {
+ releaseClone.milestones = releaseClone.milestones.slice(0, 1);
+
+ return factory(releaseClone, { releaseIssueSummary: false }).then(() => {
+ expect(
+ milestoneListLabel()
+ .find('.js-label-text')
+ .text(),
+ ).toEqual('Milestone');
+ });
+ });
+ });
});
diff --git a/spec/frontend/releases/mock_data.js b/spec/frontend/releases/mock_data.js
index 61d95b86b1c..630f14d3a73 100644
--- a/spec/frontend/releases/mock_data.js
+++ b/spec/frontend/releases/mock_data.js
@@ -11,6 +11,10 @@ export const milestones = [
due_date: '2019-09-19',
start_date: '2019-08-31',
web_url: 'http://0.0.0.0:3001/root/release-test/-/milestones/2',
+ issue_stats: {
+ opened: 14,
+ closed: 19,
+ },
},
{
id: 49,
@@ -24,6 +28,10 @@ export const milestones = [
due_date: '2019-10-11',
start_date: '2019-08-19',
web_url: 'http://0.0.0.0:3001/root/release-test/-/milestones/1',
+ issue_stats: {
+ opened: 18,
+ closed: 3,
+ },
},
];
@@ -35,6 +43,7 @@ export const release = {
description_html: '<p data-sourcepos="1:1-1:21" dir="auto">A super nice release!</p>',
created_at: '2019-08-26T17:54:04.952Z',
released_at: '2019-08-26T17:54:04.807Z',
+ evidence_sha: 'fb3a125fd69a0e5048ebfb0ba43eb32ce4911520dd8d',
author: {
id: 1,
name: 'Administrator',
@@ -62,6 +71,8 @@ export const release = {
milestones,
assets: {
count: 5,
+ evidence_file_path:
+ 'https://20592.qa-tunnel.gitlab.info/root/test-deployments/-/releases/v1.1.2/evidence.json',
sources: [
{
format: 'zip',
diff --git a/spec/frontend/reports/components/report_section_spec.js b/spec/frontend/reports/components/report_section_spec.js
index d4a3073374a..eaeb074acaf 100644
--- a/spec/frontend/reports/components/report_section_spec.js
+++ b/spec/frontend/reports/components/report_section_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import reportSection from '~/reports/components/report_section.vue';
import mountComponent, { mountComponentWithSlots } from 'helpers/vue_mount_component_helper';
+import reportSection from '~/reports/components/report_section.vue';
describe('Report section', () => {
let vm;
diff --git a/spec/frontend/repository/components/preview/__snapshots__/index_spec.js.snap b/spec/frontend/repository/components/preview/__snapshots__/index_spec.js.snap
index a5e3eb4bce1..cdc7ece89f6 100644
--- a/spec/frontend/repository/components/preview/__snapshots__/index_spec.js.snap
+++ b/spec/frontend/repository/components/preview/__snapshots__/index_spec.js.snap
@@ -5,20 +5,24 @@ exports[`Repository file preview component renders file HTML 1`] = `
class="file-holder limited-width-container readme-holder"
>
<div
- class="file-title"
+ class="js-file-title file-title-flex-parent"
>
- <i
- aria-hidden="true"
- class="fa fa-file-text-o fa-fw"
- />
-
- <gllink-stub
- href="http://test.com"
+ <div
+ class="file-header-content"
>
- <strong>
- README.md
- </strong>
- </gllink-stub>
+ <i
+ aria-hidden="true"
+ class="fa fa-file-text-o fa-fw"
+ />
+
+ <gllink-stub
+ href="http://test.com"
+ >
+ <strong>
+ README.md
+ </strong>
+ </gllink-stub>
+ </div>
</div>
<div
diff --git a/spec/frontend/repository/components/table/row_spec.js b/spec/frontend/repository/components/table/row_spec.js
index aa0b9385f1a..94fa8b1e363 100644
--- a/spec/frontend/repository/components/table/row_spec.js
+++ b/spec/frontend/repository/components/table/row_spec.js
@@ -35,7 +35,6 @@ function factory(propsData = {}) {
describe('Repository table row component', () => {
afterEach(() => {
vm.destroy();
- jest.clearAllMocks();
});
it('renders table row', () => {
diff --git a/spec/frontend/repository/log_tree_spec.js b/spec/frontend/repository/log_tree_spec.js
index 9199c726680..4271a038680 100644
--- a/spec/frontend/repository/log_tree_spec.js
+++ b/spec/frontend/repository/log_tree_spec.js
@@ -21,11 +21,18 @@ describe('resolveCommit', () => {
entry: { name: 'index.js', type: 'blob' },
resolve: jest.fn(),
};
- const commits = [{ fileName: 'index.js', type: 'blob' }];
-
- resolveCommit(commits, resolver);
-
- expect(resolver.resolve).toHaveBeenCalledWith({ fileName: 'index.js', type: 'blob' });
+ const commits = [
+ { fileName: 'index.js', filePath: '/index.js', type: 'blob' },
+ { fileName: 'index.js', filePath: '/app/assets/index.js', type: 'blob' },
+ ];
+
+ resolveCommit(commits, '', resolver);
+
+ expect(resolver.resolve).toHaveBeenCalledWith({
+ fileName: 'index.js',
+ filePath: '/index.js',
+ type: 'blob',
+ });
});
});
@@ -84,6 +91,7 @@ describe('fetchLogsTree', () => {
commitPath: 'https://test.com',
committedDate: '2019-01-01',
fileName: 'index.js',
+ filePath: '/index.js',
message: 'testing message',
sha: '123',
type: 'blob',
@@ -101,6 +109,7 @@ describe('fetchLogsTree', () => {
commitPath: 'https://test.com',
committedDate: '2019-01-01',
fileName: 'index.js',
+ filePath: '/index.js',
message: 'testing message',
sha: '123',
type: 'blob',
diff --git a/spec/frontend/repository/utils/commit_spec.js b/spec/frontend/repository/utils/commit_spec.js
index 2d75358106c..e7cc28178bf 100644
--- a/spec/frontend/repository/utils/commit_spec.js
+++ b/spec/frontend/repository/utils/commit_spec.js
@@ -15,13 +15,14 @@ const mockData = [
describe('normalizeData', () => {
it('normalizes data into LogTreeCommit object', () => {
- expect(normalizeData(mockData)).toEqual([
+ expect(normalizeData(mockData, '')).toEqual([
{
sha: '123',
message: 'testing message',
committedDate: '2019-01-01',
commitPath: 'https://test.com',
fileName: 'index.js',
+ filePath: '/index.js',
type: 'blob',
__typename: 'LogTreeCommit',
},
diff --git a/spec/frontend/repository/utils/dom_spec.js b/spec/frontend/repository/utils/dom_spec.js
index 678d444904d..bf98a9e1a4d 100644
--- a/spec/frontend/repository/utils/dom_spec.js
+++ b/spec/frontend/repository/utils/dom_spec.js
@@ -1,5 +1,5 @@
import { setHTMLFixture } from '../../helpers/fixtures';
-import { updateElementsVisibility } from '~/repository/utils/dom';
+import { updateElementsVisibility, updateFormAction } from '~/repository/utils/dom';
describe('updateElementsVisibility', () => {
it('adds hidden class', () => {
@@ -18,3 +18,13 @@ describe('updateElementsVisibility', () => {
expect(document.querySelector('.js-test').classList).not.toContain('hidden');
});
});
+
+describe('updateFormAction', () => {
+ it('updates form action', () => {
+ setHTMLFixture('<form class="js-test" action="/"></form>');
+
+ updateFormAction('.js-test', '/gitlab/create', '/test');
+
+ expect(document.querySelector('.js-test').action).toBe('http://localhost/gitlab/create/test');
+ });
+});
diff --git a/spec/frontend/sentry/sentry_config_spec.js b/spec/frontend/sentry/sentry_config_spec.js
index 62b8bbd50a2..bcc7f29b98d 100644
--- a/spec/frontend/sentry/sentry_config_spec.js
+++ b/spec/frontend/sentry/sentry_config_spec.js
@@ -54,8 +54,7 @@ describe('SentryConfig', () => {
});
it('should not call setUser if there is no current user ID', () => {
- jest.clearAllMocks();
-
+ SentryConfig.setUser.mockClear();
options.currentUserId = undefined;
SentryConfig.init(options);
@@ -167,8 +166,6 @@ describe('SentryConfig', () => {
describe('if no err is provided', () => {
beforeEach(() => {
- jest.clearAllMocks();
-
SentryConfig.handleSentryErrors(event, req, config);
});
@@ -191,8 +188,6 @@ describe('SentryConfig', () => {
beforeEach(() => {
req.responseText = undefined;
- jest.clearAllMocks();
-
SentryConfig.handleSentryErrors(event, req, config, err);
});
diff --git a/spec/frontend/serverless/components/environment_row_spec.js b/spec/frontend/serverless/components/environment_row_spec.js
index 0ad85e218dc..866b2165917 100644
--- a/spec/frontend/serverless/components/environment_row_spec.js
+++ b/spec/frontend/serverless/components/environment_row_spec.js
@@ -1,5 +1,5 @@
-import environmentRowComponent from '~/serverless/components/environment_row.vue';
import { createLocalVue, shallowMount } from '@vue/test-utils';
+import environmentRowComponent from '~/serverless/components/environment_row.vue';
import { mockServerlessFunctions, mockServerlessFunctionsDiffEnv } from '../mock_data';
import { translate } from '~/serverless/utils';
diff --git a/spec/frontend/serverless/components/function_details_spec.js b/spec/frontend/serverless/components/function_details_spec.js
index 31348ff1194..27d3a43db27 100644
--- a/spec/frontend/serverless/components/function_details_spec.js
+++ b/spec/frontend/serverless/components/function_details_spec.js
@@ -1,7 +1,7 @@
import Vuex from 'vuex';
-import functionDetailsComponent from '~/serverless/components/function_details.vue';
import { createLocalVue, shallowMount } from '@vue/test-utils';
+import functionDetailsComponent from '~/serverless/components/function_details.vue';
import { createStore } from '~/serverless/store';
describe('functionDetailsComponent', () => {
diff --git a/spec/frontend/serverless/components/function_row_spec.js b/spec/frontend/serverless/components/function_row_spec.js
index 979f98c4832..559c55a1eb4 100644
--- a/spec/frontend/serverless/components/function_row_spec.js
+++ b/spec/frontend/serverless/components/function_row_spec.js
@@ -1,5 +1,5 @@
-import functionRowComponent from '~/serverless/components/function_row.vue';
import { shallowMount } from '@vue/test-utils';
+import functionRowComponent from '~/serverless/components/function_row.vue';
import Timeago from '~/vue_shared/components/time_ago_tooltip.vue';
import { mockServerlessFunction } from '../mock_data';
diff --git a/spec/frontend/serverless/components/functions_spec.js b/spec/frontend/serverless/components/functions_spec.js
index d8a80f8031e..29d35b5f1a6 100644
--- a/spec/frontend/serverless/components/functions_spec.js
+++ b/spec/frontend/serverless/components/functions_spec.js
@@ -1,13 +1,13 @@
import Vuex from 'vuex';
import { GlLoadingIcon } from '@gitlab/ui';
import AxiosMockAdapter from 'axios-mock-adapter';
+import { createLocalVue, shallowMount } from '@vue/test-utils';
+import { TEST_HOST } from 'helpers/test_constants';
import axios from '~/lib/utils/axios_utils';
import functionsComponent from '~/serverless/components/functions.vue';
-import { createLocalVue, shallowMount } from '@vue/test-utils';
import { createStore } from '~/serverless/store';
import EmptyState from '~/serverless/components/empty_state.vue';
import EnvironmentRow from '~/serverless/components/environment_row.vue';
-import { TEST_HOST } from 'helpers/test_constants';
import { mockServerlessFunctions } from '../mock_data';
describe('functionsComponent', () => {
diff --git a/spec/frontend/serverless/components/missing_prometheus_spec.js b/spec/frontend/serverless/components/missing_prometheus_spec.js
index 5dbdccde2de..908f534b847 100644
--- a/spec/frontend/serverless/components/missing_prometheus_spec.js
+++ b/spec/frontend/serverless/components/missing_prometheus_spec.js
@@ -1,6 +1,6 @@
import { GlButton } from '@gitlab/ui';
-import missingPrometheusComponent from '~/serverless/components/missing_prometheus.vue';
import { shallowMount } from '@vue/test-utils';
+import missingPrometheusComponent from '~/serverless/components/missing_prometheus.vue';
const createComponent = missingData =>
shallowMount(missingPrometheusComponent, {
diff --git a/spec/frontend/serverless/components/pod_box_spec.js b/spec/frontend/serverless/components/pod_box_spec.js
index d82825d8f62..8563d29c56b 100644
--- a/spec/frontend/serverless/components/pod_box_spec.js
+++ b/spec/frontend/serverless/components/pod_box_spec.js
@@ -1,5 +1,5 @@
-import podBoxComponent from '~/serverless/components/pod_box.vue';
import { shallowMount } from '@vue/test-utils';
+import podBoxComponent from '~/serverless/components/pod_box.vue';
const createComponent = count =>
shallowMount(podBoxComponent, {
diff --git a/spec/frontend/serverless/components/url_spec.js b/spec/frontend/serverless/components/url_spec.js
index 706441e8a8b..9b15df20a89 100644
--- a/spec/frontend/serverless/components/url_spec.js
+++ b/spec/frontend/serverless/components/url_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import urlComponent from '~/serverless/components/url.vue';
import { shallowMount } from '@vue/test-utils';
+import urlComponent from '~/serverless/components/url.vue';
import ClipboardButton from '~/vue_shared/components/clipboard_button.vue';
const createComponent = uri =>
diff --git a/spec/frontend/sidebar/__snapshots__/todo_spec.js.snap b/spec/frontend/sidebar/__snapshots__/todo_spec.js.snap
index abcdf600a67..1704206c4ad 100644
--- a/spec/frontend/sidebar/__snapshots__/todo_spec.js.snap
+++ b/spec/frontend/sidebar/__snapshots__/todo_spec.js.snap
@@ -23,7 +23,7 @@ exports[`SidebarTodo template renders component container element with proper da
<span
class="issuable-todo-inner"
>
- Mark as done
+ Mark as done
</span>
<glloadingicon-stub
diff --git a/spec/frontend/sidebar/assignees_spec.js b/spec/frontend/sidebar/assignees_spec.js
new file mode 100644
index 00000000000..14b6da10991
--- /dev/null
+++ b/spec/frontend/sidebar/assignees_spec.js
@@ -0,0 +1,200 @@
+import { mount } from '@vue/test-utils';
+import { trimText } from 'helpers/text_helper';
+import Assignee from '~/sidebar/components/assignees/assignees.vue';
+import UsersMock from './mock_data';
+import UsersMockHelper from '../helpers/user_mock_data_helper';
+
+describe('Assignee component', () => {
+ const getDefaultProps = () => ({
+ rootPath: 'http://localhost:3000',
+ users: [],
+ editable: false,
+ });
+ let wrapper;
+
+ const createWrapper = (propsData = getDefaultProps()) => {
+ wrapper = mount(Assignee, {
+ propsData,
+ sync: false,
+ attachToDocument: true,
+ });
+ };
+
+ const findComponentTextNoUsers = () => wrapper.find('.assign-yourself');
+ const findCollapsedChildren = () => wrapper.findAll('.sidebar-collapsed-icon > *');
+
+ afterEach(() => {
+ wrapper.destroy();
+ });
+
+ describe('No assignees/users', () => {
+ it('displays no assignee icon when collapsed', () => {
+ createWrapper();
+ const collapsedChildren = findCollapsedChildren();
+
+ expect(collapsedChildren.length).toBe(1);
+ expect(collapsedChildren.at(0).attributes('aria-label')).toBe('None');
+ expect(collapsedChildren.at(0).classes()).toContain('fa', 'fa-user');
+ });
+
+ it('displays only "None" when no users are assigned and the issue is read-only', () => {
+ createWrapper();
+ const componentTextNoUsers = trimText(findComponentTextNoUsers().text());
+
+ expect(componentTextNoUsers).toBe('None');
+ expect(componentTextNoUsers).not.toContain('assign yourself');
+ });
+
+ it('displays only "None" when no users are assigned and the issue can be edited', () => {
+ createWrapper({
+ ...getDefaultProps(),
+ editable: true,
+ });
+ const componentTextNoUsers = trimText(findComponentTextNoUsers().text());
+
+ expect(componentTextNoUsers).toContain('None');
+ expect(componentTextNoUsers).toContain('assign yourself');
+ });
+
+ it('emits the assign-self event when "assign yourself" is clicked', () => {
+ createWrapper({
+ ...getDefaultProps(),
+ editable: true,
+ });
+
+ jest.spyOn(wrapper.vm, '$emit');
+ wrapper.find('.assign-yourself .btn-link').trigger('click');
+
+ expect(wrapper.emitted('assign-self')).toBeTruthy();
+ });
+ });
+
+ describe('One assignee/user', () => {
+ it('displays one assignee icon when collapsed', () => {
+ createWrapper({
+ ...getDefaultProps(),
+ users: [UsersMock.user],
+ });
+
+ const collapsedChildren = findCollapsedChildren();
+ const assignee = collapsedChildren.at(0);
+
+ expect(collapsedChildren.length).toBe(1);
+ expect(assignee.find('.avatar').attributes('src')).toBe(UsersMock.user.avatar);
+ expect(assignee.find('.avatar').attributes('alt')).toBe(`${UsersMock.user.name}'s avatar`);
+
+ expect(trimText(assignee.find('.author').text())).toBe(UsersMock.user.name);
+ });
+ });
+
+ describe('Two or more assignees/users', () => {
+ it('displays two assignee icons when collapsed', () => {
+ const users = UsersMockHelper.createNumberRandomUsers(2);
+ createWrapper({
+ ...getDefaultProps(),
+ users,
+ });
+
+ const collapsedChildren = findCollapsedChildren();
+
+ expect(collapsedChildren.length).toBe(2);
+
+ const first = collapsedChildren.at(0);
+
+ expect(first.find('.avatar').attributes('src')).toBe(users[0].avatar);
+ expect(first.find('.avatar').attributes('alt')).toBe(`${users[0].name}'s avatar`);
+
+ expect(trimText(first.find('.author').text())).toBe(users[0].name);
+
+ const second = collapsedChildren.at(1);
+
+ expect(second.find('.avatar').attributes('src')).toBe(users[1].avatar);
+ expect(second.find('.avatar').attributes('alt')).toBe(`${users[1].name}'s avatar`);
+
+ expect(trimText(second.find('.author').text())).toBe(users[1].name);
+ });
+
+ it('displays one assignee icon and counter when collapsed', () => {
+ const users = UsersMockHelper.createNumberRandomUsers(3);
+ createWrapper({
+ ...getDefaultProps(),
+ users,
+ });
+
+ const collapsedChildren = findCollapsedChildren();
+
+ expect(collapsedChildren.length).toBe(2);
+
+ const first = collapsedChildren.at(0);
+
+ expect(first.find('.avatar').attributes('src')).toBe(users[0].avatar);
+ expect(first.find('.avatar').attributes('alt')).toBe(`${users[0].name}'s avatar`);
+
+ expect(trimText(first.find('.author').text())).toBe(users[0].name);
+
+ const second = collapsedChildren.at(1);
+
+ expect(trimText(second.find('.avatar-counter').text())).toBe('+2');
+ });
+
+ it('Shows two assignees', () => {
+ const users = UsersMockHelper.createNumberRandomUsers(2);
+ createWrapper({
+ ...getDefaultProps(),
+ users,
+ editable: true,
+ });
+
+ expect(wrapper.findAll('.user-item').length).toBe(users.length);
+ expect(wrapper.find('.user-list-more').exists()).toBe(false);
+ });
+
+ it('shows sorted assignee where "can merge" users are sorted first', () => {
+ const users = UsersMockHelper.createNumberRandomUsers(3);
+ users[0].can_merge = false;
+ users[1].can_merge = false;
+ users[2].can_merge = true;
+
+ createWrapper({
+ ...getDefaultProps(),
+ users,
+ editable: true,
+ });
+
+ expect(wrapper.vm.sortedAssigness[0].can_merge).toBe(true);
+ });
+
+ it('passes the sorted assignees to the uncollapsed-assignee-list', () => {
+ const users = UsersMockHelper.createNumberRandomUsers(3);
+ users[0].can_merge = false;
+ users[1].can_merge = false;
+ users[2].can_merge = true;
+
+ createWrapper({
+ ...getDefaultProps(),
+ users,
+ });
+
+ const userItems = wrapper.findAll('.user-list .user-item a');
+
+ expect(userItems.length).toBe(3);
+ expect(userItems.at(0).attributes('data-original-title')).toBe(users[2].name);
+ });
+
+ it('passes the sorted assignees to the collapsed-assignee-list', () => {
+ const users = UsersMockHelper.createNumberRandomUsers(3);
+ users[0].can_merge = false;
+ users[1].can_merge = false;
+ users[2].can_merge = true;
+
+ createWrapper({
+ ...getDefaultProps(),
+ users,
+ });
+
+ const collapsedButton = wrapper.find('.sidebar-collapsed-user button');
+
+ expect(trimText(collapsedButton.text())).toBe(users[2].name);
+ });
+ });
+});
diff --git a/spec/frontend/sidebar/components/assignees/assignee_avatar_link_spec.js b/spec/frontend/sidebar/components/assignees/assignee_avatar_link_spec.js
index d0d1af56872..9b2e2e38366 100644
--- a/spec/frontend/sidebar/components/assignees/assignee_avatar_link_spec.js
+++ b/spec/frontend/sidebar/components/assignees/assignee_avatar_link_spec.js
@@ -1,12 +1,11 @@
import { shallowMount } from '@vue/test-utils';
-import { joinPaths } from '~/lib/utils/url_utility';
import { TEST_HOST } from 'helpers/test_constants';
import AssigneeAvatarLink from '~/sidebar/components/assignees/assignee_avatar_link.vue';
import AssigneeAvatar from '~/sidebar/components/assignees/assignee_avatar.vue';
import userDataMock from '../../user_data_mock';
const TOOLTIP_PLACEMENT = 'bottom';
-const { name: USER_NAME, username: USER_USERNAME } = userDataMock();
+const { name: USER_NAME } = userDataMock();
const TEST_ISSUABLE_TYPE = 'merge_request';
describe('AssigneeAvatarLink component', () => {
@@ -38,9 +37,8 @@ describe('AssigneeAvatarLink component', () => {
it('has the root url present in the assigneeUrl method', () => {
createComponent();
- const assigneeUrl = joinPaths(TEST_HOST, USER_USERNAME);
- expect(wrapper.attributes().href).toEqual(assigneeUrl);
+ expect(wrapper.attributes().href).toEqual(userDataMock().web_url);
});
it('renders assignee avatar', () => {
diff --git a/spec/frontend/sidebar/components/assignees/assignee_avatar_spec.js b/spec/frontend/sidebar/components/assignees/assignee_avatar_spec.js
index d60ae17733b..e925da0e4c2 100644
--- a/spec/frontend/sidebar/components/assignees/assignee_avatar_spec.js
+++ b/spec/frontend/sidebar/components/assignees/assignee_avatar_spec.js
@@ -1,6 +1,6 @@
import { shallowMount } from '@vue/test-utils';
-import AssigneeAvatar from '~/sidebar/components/assignees/assignee_avatar.vue';
import { TEST_HOST } from 'helpers/test_constants';
+import AssigneeAvatar from '~/sidebar/components/assignees/assignee_avatar.vue';
import userDataMock from '../../user_data_mock';
const TEST_AVATAR = `${TEST_HOST}/avatar.png`;
diff --git a/spec/frontend/sidebar/components/assignees/collapsed_assignee_list_spec.js b/spec/frontend/sidebar/components/assignees/collapsed_assignee_list_spec.js
index c88ae196875..6aa7b166804 100644
--- a/spec/frontend/sidebar/components/assignees/collapsed_assignee_list_spec.js
+++ b/spec/frontend/sidebar/components/assignees/collapsed_assignee_list_spec.js
@@ -1,7 +1,7 @@
import { shallowMount } from '@vue/test-utils';
+import UsersMockHelper from 'helpers/user_mock_data_helper';
import CollapsedAssigneeList from '~/sidebar/components/assignees/collapsed_assignee_list.vue';
import CollapsedAssignee from '~/sidebar/components/assignees/collapsed_assignee.vue';
-import UsersMockHelper from 'helpers/user_mock_data_helper';
const DEFAULT_MAX_COUNTER = 99;
diff --git a/spec/frontend/sidebar/components/assignees/uncollapsed_assignee_list_spec.js b/spec/frontend/sidebar/components/assignees/uncollapsed_assignee_list_spec.js
index 1de21f30d21..8381cc25db4 100644
--- a/spec/frontend/sidebar/components/assignees/uncollapsed_assignee_list_spec.js
+++ b/spec/frontend/sidebar/components/assignees/uncollapsed_assignee_list_spec.js
@@ -1,7 +1,7 @@
import { mount } from '@vue/test-utils';
+import { TEST_HOST } from 'helpers/test_constants';
import UncollapsedAssigneeList from '~/sidebar/components/assignees/uncollapsed_assignee_list.vue';
import AssigneeAvatarLink from '~/sidebar/components/assignees/assignee_avatar_link.vue';
-import { TEST_HOST } from 'helpers/test_constants';
import userDataMock from '../../user_data_mock';
import UsersMockHelper from '../../../helpers/user_mock_data_helper';
diff --git a/spec/frontend/sidebar/confidential_issue_sidebar_spec.js b/spec/frontend/sidebar/confidential_issue_sidebar_spec.js
index 1ec5a94ba68..432ec111e52 100644
--- a/spec/frontend/sidebar/confidential_issue_sidebar_spec.js
+++ b/spec/frontend/sidebar/confidential_issue_sidebar_spec.js
@@ -1,6 +1,6 @@
import { shallowMount } from '@vue/test-utils';
-import ConfidentialIssueSidebar from '~/sidebar/components/confidential/confidential_issue_sidebar.vue';
import { mockTracking, triggerEvent } from 'helpers/tracking_helper';
+import ConfidentialIssueSidebar from '~/sidebar/components/confidential/confidential_issue_sidebar.vue';
import EditForm from '~/sidebar/components/confidential/edit_form.vue';
import SidebarService from '~/sidebar/services/sidebar_service';
import createFlash from '~/flash';
@@ -42,7 +42,6 @@ describe('Confidential Issue Sidebar Block', () => {
};
beforeEach(() => {
- jest.clearAllMocks();
jest.spyOn(window.location, 'reload').mockImplementation();
});
diff --git a/spec/frontend/sidebar/mock_data.js b/spec/frontend/sidebar/mock_data.js
new file mode 100644
index 00000000000..3ee97b978fd
--- /dev/null
+++ b/spec/frontend/sidebar/mock_data.js
@@ -0,0 +1,213 @@
+const RESPONSE_MAP = {
+ GET: {
+ '/gitlab-org/gitlab-shell/issues/5.json': {
+ id: 45,
+ iid: 5,
+ author_id: 23,
+ description: 'Nulla ullam commodi delectus adipisci quis sit.',
+ lock_version: null,
+ milestone_id: 21,
+ position: 0,
+ state: 'closed',
+ title: 'Vel et nulla voluptatibus corporis dolor iste saepe laborum.',
+ updated_by_id: 1,
+ created_at: '2017-02-02T21: 49: 49.664Z',
+ updated_at: '2017-05-03T22: 26: 03.760Z',
+ time_estimate: 0,
+ total_time_spent: 0,
+ human_time_estimate: null,
+ human_total_time_spent: null,
+ branch_name: null,
+ confidential: false,
+ assignees: [
+ {
+ name: 'User 0',
+ username: 'user0',
+ id: 22,
+ state: 'active',
+ avatar_url:
+ 'https://www.gravatar.com/avatar/52e4ce24a915fb7e51e1ad3b57f4b00a?s=80\u0026d=identicon',
+ web_url: 'http: //localhost:3001/user0',
+ },
+ {
+ name: 'Marguerite Bartell',
+ username: 'tajuana',
+ id: 18,
+ state: 'active',
+ avatar_url:
+ 'https://www.gravatar.com/avatar/4852a41fb41616bf8f140d3701673f53?s=80\u0026d=identicon',
+ web_url: 'http: //localhost:3001/tajuana',
+ },
+ {
+ name: 'Laureen Ritchie',
+ username: 'michaele.will',
+ id: 16,
+ state: 'active',
+ avatar_url:
+ 'https://www.gravatar.com/avatar/e301827eb03be955c9c172cb9a8e4e8a?s=80\u0026d=identicon',
+ web_url: 'http: //localhost:3001/michaele.will',
+ },
+ ],
+ due_date: null,
+ moved_to_id: null,
+ project_id: 4,
+ weight: null,
+ milestone: {
+ id: 21,
+ iid: 1,
+ project_id: 4,
+ title: 'v0.0',
+ description: 'Molestiae commodi laboriosam odio sunt eaque reprehenderit.',
+ state: 'active',
+ created_at: '2017-02-02T21: 49: 30.530Z',
+ updated_at: '2017-02-02T21: 49: 30.530Z',
+ due_date: null,
+ start_date: null,
+ },
+ labels: [],
+ },
+ '/gitlab-org/gitlab-shell/issues/5.json?serializer=sidebar_extras': {
+ assignees: [
+ {
+ name: 'User 0',
+ username: 'user0',
+ id: 22,
+ state: 'active',
+ avatar_url:
+ 'https://www.gravatar.com/avatar/52e4ce24a915fb7e51e1ad3b57f4b00a?s=80\u0026d=identicon',
+ web_url: 'http://localhost:3001/user0',
+ },
+ {
+ name: 'Marguerite Bartell',
+ username: 'tajuana',
+ id: 18,
+ state: 'active',
+ avatar_url:
+ 'https://www.gravatar.com/avatar/4852a41fb41616bf8f140d3701673f53?s=80\u0026d=identicon',
+ web_url: 'http://localhost:3001/tajuana',
+ },
+ {
+ name: 'Laureen Ritchie',
+ username: 'michaele.will',
+ id: 16,
+ state: 'active',
+ avatar_url:
+ 'https://www.gravatar.com/avatar/e301827eb03be955c9c172cb9a8e4e8a?s=80\u0026d=identicon',
+ web_url: 'http://localhost:3001/michaele.will',
+ },
+ ],
+ human_time_estimate: null,
+ human_total_time_spent: null,
+ participants: [
+ {
+ name: 'User 0',
+ username: 'user0',
+ id: 22,
+ state: 'active',
+ avatar_url:
+ 'https://www.gravatar.com/avatar/52e4ce24a915fb7e51e1ad3b57f4b00a?s=80\u0026d=identicon',
+ web_url: 'http://localhost:3001/user0',
+ },
+ {
+ name: 'Marguerite Bartell',
+ username: 'tajuana',
+ id: 18,
+ state: 'active',
+ avatar_url:
+ 'https://www.gravatar.com/avatar/4852a41fb41616bf8f140d3701673f53?s=80\u0026d=identicon',
+ web_url: 'http://localhost:3001/tajuana',
+ },
+ {
+ name: 'Laureen Ritchie',
+ username: 'michaele.will',
+ id: 16,
+ state: 'active',
+ avatar_url:
+ 'https://www.gravatar.com/avatar/e301827eb03be955c9c172cb9a8e4e8a?s=80\u0026d=identicon',
+ web_url: 'http://localhost:3001/michaele.will',
+ },
+ ],
+ subscribed: true,
+ time_estimate: 0,
+ total_time_spent: 0,
+ },
+ '/autocomplete/projects?project_id=15': [
+ {
+ id: 0,
+ name_with_namespace: 'No project',
+ },
+ {
+ id: 20,
+ name_with_namespace: '<img src=x onerror=alert(document.domain)> foo / bar',
+ },
+ ],
+ },
+ PUT: {
+ '/gitlab-org/gitlab-shell/issues/5.json': {
+ data: {},
+ },
+ },
+ POST: {
+ '/gitlab-org/gitlab-shell/issues/5/move': {
+ id: 123,
+ iid: 5,
+ author_id: 1,
+ description: 'some description',
+ lock_version: 5,
+ milestone_id: null,
+ state: 'opened',
+ title: 'some title',
+ updated_by_id: 1,
+ created_at: '2017-06-27T19:54:42.437Z',
+ updated_at: '2017-08-18T03:39:49.222Z',
+ time_estimate: 0,
+ total_time_spent: 0,
+ human_time_estimate: null,
+ human_total_time_spent: null,
+ branch_name: null,
+ confidential: false,
+ assignees: [],
+ due_date: null,
+ moved_to_id: null,
+ project_id: 7,
+ milestone: null,
+ labels: [],
+ web_url: '/root/some-project/issues/5',
+ },
+ '/gitlab-org/gitlab-shell/issues/5/toggle_subscription': {},
+ },
+};
+
+const mockData = {
+ responseMap: RESPONSE_MAP,
+ mediator: {
+ endpoint: '/gitlab-org/gitlab-shell/issues/5.json?serializer=sidebar_extras',
+ toggleSubscriptionEndpoint: '/gitlab-org/gitlab-shell/issues/5/toggle_subscription',
+ moveIssueEndpoint: '/gitlab-org/gitlab-shell/issues/5/move',
+ projectsAutocompleteEndpoint: '/autocomplete/projects?project_id=15',
+ editable: true,
+ currentUser: {
+ id: 1,
+ name: 'Administrator',
+ username: 'root',
+ avatar_url:
+ 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon',
+ },
+ rootPath: '/',
+ fullPath: '/gitlab-org/gitlab-shell',
+ },
+ time: {
+ time_estimate: 3600,
+ total_time_spent: 0,
+ human_time_estimate: '1h',
+ human_total_time_spent: null,
+ },
+ user: {
+ avatar: 'https://gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon',
+ id: 1,
+ name: 'Administrator',
+ username: 'root',
+ },
+};
+
+export default mockData;
diff --git a/spec/frontend/sidebar/todo_spec.js b/spec/frontend/sidebar/todo_spec.js
index c93bbadc264..5bbb42d402d 100644
--- a/spec/frontend/sidebar/todo_spec.js
+++ b/spec/frontend/sidebar/todo_spec.js
@@ -89,5 +89,11 @@ describe('SidebarTodo', () => {
expect(wrapper.find(GlLoadingIcon).exists()).toBe(true);
});
+
+ it('hides button icon when `isActionActive` prop is true', () => {
+ createComponent({ collapsed: true, isActionActive: true });
+
+ expect(wrapper.find(Icon).isVisible()).toBe(false);
+ });
});
});
diff --git a/spec/frontend/sidebar/user_data_mock.js b/spec/frontend/sidebar/user_data_mock.js
index 8ad70bb3499..df90a65f6f9 100644
--- a/spec/frontend/sidebar/user_data_mock.js
+++ b/spec/frontend/sidebar/user_data_mock.js
@@ -1,9 +1,11 @@
+import { TEST_HOST } from 'helpers/test_constants';
+
export default () => ({
- avatar_url: 'mock_path',
+ avatar_url: `${TEST_HOST}/avatar/root.png`,
id: 1,
name: 'Root',
state: 'active',
username: 'root',
- web_url: '',
+ web_url: `${TEST_HOST}/root`,
can_merge: true,
});
diff --git a/spec/frontend/snippets/components/app_spec.js b/spec/frontend/snippets/components/app_spec.js
new file mode 100644
index 00000000000..f2800f9e6af
--- /dev/null
+++ b/spec/frontend/snippets/components/app_spec.js
@@ -0,0 +1,45 @@
+import SnippetApp from '~/snippets/components/app.vue';
+import SnippetHeader from '~/snippets/components/snippet_header.vue';
+import { GlLoadingIcon } from '@gitlab/ui';
+
+import { createLocalVue, shallowMount } from '@vue/test-utils';
+
+describe('Snippet view app', () => {
+ let wrapper;
+ const localVue = createLocalVue();
+ const defaultProps = {
+ snippetGid: 'gid://gitlab/PersonalSnippet/42',
+ };
+
+ function createComponent({ props = defaultProps, loading = false } = {}) {
+ const $apollo = {
+ queries: {
+ snippet: {
+ loading,
+ },
+ },
+ };
+
+ wrapper = shallowMount(SnippetApp, {
+ sync: false,
+ mocks: { $apollo },
+ localVue,
+ propsData: {
+ ...props,
+ },
+ });
+ }
+ afterEach(() => {
+ wrapper.destroy();
+ });
+
+ it('renders loader while the query is in flight', () => {
+ createComponent({ loading: true });
+ expect(wrapper.find(GlLoadingIcon).exists()).toBe(true);
+ });
+
+ it('renders SnippetHeader component after the query is finished', () => {
+ createComponent();
+ expect(wrapper.find(SnippetHeader).exists()).toBe(true);
+ });
+});
diff --git a/spec/frontend/snippets/components/snippet_header_spec.js b/spec/frontend/snippets/components/snippet_header_spec.js
new file mode 100644
index 00000000000..8847a3a6938
--- /dev/null
+++ b/spec/frontend/snippets/components/snippet_header_spec.js
@@ -0,0 +1,171 @@
+import SnippetHeader from '~/snippets/components/snippet_header.vue';
+import DeleteSnippetMutation from '~/snippets/mutations/deleteSnippet.mutation.graphql';
+import { ApolloMutation } from 'vue-apollo';
+import { GlButton, GlModal } from '@gitlab/ui';
+import { createLocalVue, shallowMount } from '@vue/test-utils';
+
+describe('Snippet header component', () => {
+ let wrapper;
+ const localVue = createLocalVue();
+ const snippet = {
+ snippet: {
+ id: 'gid://gitlab/PersonalSnippet/50',
+ title: 'The property of Thor',
+ visibilityLevel: 'private',
+ webUrl: 'http://personal.dev.null/42',
+ userPermissions: {
+ adminSnippet: true,
+ updateSnippet: true,
+ reportSnippet: false,
+ },
+ project: null,
+ author: {
+ name: 'Thor Odinson',
+ },
+ },
+ };
+ const mutationVariables = {
+ mutation: DeleteSnippetMutation,
+ variables: {
+ id: snippet.snippet.id,
+ },
+ };
+ const errorMsg = 'Foo bar';
+ const err = { message: errorMsg };
+
+ const resolveMutate = jest.fn(() => Promise.resolve());
+ const rejectMutation = jest.fn(() => Promise.reject(err));
+
+ const mutationTypes = {
+ RESOLVE: resolveMutate,
+ REJECT: rejectMutation,
+ };
+
+ function createComponent({
+ loading = false,
+ permissions = {},
+ mutationRes = mutationTypes.RESOLVE,
+ } = {}) {
+ const defaultProps = Object.assign({}, snippet);
+ if (permissions) {
+ Object.assign(defaultProps.snippet.userPermissions, {
+ ...permissions,
+ });
+ }
+ const $apollo = {
+ queries: {
+ canCreateSnippet: {
+ loading,
+ },
+ },
+ mutate: mutationRes,
+ };
+
+ wrapper = shallowMount(SnippetHeader, {
+ sync: false,
+ mocks: { $apollo },
+ localVue,
+ propsData: {
+ ...defaultProps,
+ },
+ stubs: {
+ ApolloMutation,
+ },
+ });
+ }
+
+ afterEach(() => {
+ wrapper.destroy();
+ });
+
+ it('renders itself', () => {
+ createComponent();
+ expect(wrapper.find('.detail-page-header').exists()).toBe(true);
+ });
+
+ it('renders action buttons based on permissions', () => {
+ createComponent({
+ permissions: {
+ adminSnippet: false,
+ updateSnippet: false,
+ },
+ });
+ expect(wrapper.findAll(GlButton).length).toEqual(0);
+
+ createComponent({
+ permissions: {
+ adminSnippet: true,
+ updateSnippet: false,
+ },
+ });
+ expect(wrapper.findAll(GlButton).length).toEqual(1);
+
+ createComponent({
+ permissions: {
+ adminSnippet: true,
+ updateSnippet: true,
+ },
+ });
+ expect(wrapper.findAll(GlButton).length).toEqual(2);
+
+ createComponent({
+ permissions: {
+ adminSnippet: true,
+ updateSnippet: true,
+ },
+ });
+ wrapper.setData({
+ canCreateSnippet: true,
+ });
+ return wrapper.vm.$nextTick().then(() => {
+ expect(wrapper.findAll(GlButton).length).toEqual(3);
+ });
+ });
+
+ it('renders modal for deletion of a snippet', () => {
+ createComponent();
+ expect(wrapper.find(GlModal).exists()).toBe(true);
+ });
+
+ describe('Delete mutation', () => {
+ const { location } = window;
+
+ beforeEach(() => {
+ delete window.location;
+ window.location = {
+ pathname: '',
+ };
+ });
+
+ afterEach(() => {
+ window.location = location;
+ });
+
+ it('dispatches a mutation to delete the snippet with correct variables', () => {
+ createComponent();
+ wrapper.vm.deleteSnippet();
+ expect(mutationTypes.RESOLVE).toHaveBeenCalledWith(mutationVariables);
+ });
+
+ it('sets error message if mutation fails', () => {
+ createComponent({ mutationRes: mutationTypes.REJECT });
+ expect(Boolean(wrapper.vm.errorMessage)).toBe(false);
+
+ wrapper.vm.deleteSnippet();
+ return wrapper.vm.$nextTick().then(() => {
+ expect(wrapper.vm.errorMessage).toEqual(errorMsg);
+ });
+ });
+
+ it('closes modal and redirects to snippets listing in case of successful mutation', () => {
+ createComponent();
+ wrapper.vm.closeDeleteModal = jest.fn();
+
+ wrapper.vm.deleteSnippet();
+ return wrapper.vm.$nextTick().then(() => {
+ expect(wrapper.vm.closeDeleteModal).toHaveBeenCalled();
+ expect(window.location.pathname).toEqual('dashboard/snippets');
+ });
+ });
+ });
+});
diff --git a/spec/frontend/snippets_spec.js b/spec/frontend/snippets_spec.js
new file mode 100644
index 00000000000..5b391606371
--- /dev/null
+++ b/spec/frontend/snippets_spec.js
@@ -0,0 +1,70 @@
+import snippetEmbed from '~/snippet/snippet_embed';
+import { loadHTMLFixture } from './helpers/fixtures';
+
+describe('Snippets', () => {
+ let embedBtn;
+ let snippetUrlArea;
+ let shareBtn;
+ let scriptTag;
+
+ const snippetUrl = 'http://test.host/snippets/1';
+
+ beforeEach(() => {
+ loadHTMLFixture('snippets/show.html');
+
+ embedBtn = document.querySelector('.js-embed-btn');
+ snippetUrlArea = document.querySelector('.js-snippet-url-area');
+ shareBtn = document.querySelector('.js-share-btn');
+ });
+
+ it('selects the fields content when it is clicked', () => {
+ jest.spyOn(snippetUrlArea, 'select');
+ snippetEmbed();
+
+ expect(snippetUrlArea.select).not.toHaveBeenCalled();
+ snippetUrlArea.dispatchEvent(new Event('click'));
+ expect(snippetUrlArea.select).toHaveBeenCalled();
+ });
+
+ describe('when the snippet url does not include params', () => {
+ beforeEach(() => {
+ snippetEmbed();
+
+ scriptTag = `<script src="${snippetUrl}.js"></script>`;
+ });
+
+ it('shows the script tag as default', () => {
+ expect(snippetUrlArea.value).toEqual(scriptTag);
+ });
+
+ it('sets the proper url depending on the button clicked', () => {
+ shareBtn.dispatchEvent(new Event('click'));
+ expect(snippetUrlArea.value).toEqual(snippetUrl);
+
+ embedBtn.dispatchEvent(new Event('click'));
+ expect(snippetUrlArea.value).toEqual(scriptTag);
+ });
+ });
+
+ describe('when the snippet url includes params', () => {
+ beforeEach(() => {
+ scriptTag = `<script src="${snippetUrl}.js?foo=bar"></script>`;
+ snippetUrlArea.value = scriptTag;
+ snippetUrlArea.dataset.url = `${snippetUrl}?foo=bar`;
+
+ snippetEmbed();
+ });
+
+ it('shows the script tag as default', () => {
+ expect(snippetUrlArea.value).toEqual(scriptTag);
+ });
+
+ it('sets the proper url depending on the button clicked', () => {
+ shareBtn.dispatchEvent(new Event('click'));
+ expect(snippetUrlArea.value).toEqual(`${snippetUrl}?foo=bar`);
+
+ embedBtn.dispatchEvent(new Event('click'));
+ expect(snippetUrlArea.value).toEqual(scriptTag);
+ });
+ });
+});
diff --git a/spec/frontend/test_setup.js b/spec/frontend/test_setup.js
index 0b9cfa44409..ab42dbe7cd1 100644
--- a/spec/frontend/test_setup.js
+++ b/spec/frontend/test_setup.js
@@ -1,8 +1,8 @@
import Vue from 'vue';
import * as jqueryMatchers from 'custom-jquery-matchers';
import $ from 'jquery';
-import Translate from '~/vue_shared/translate';
import { config as testUtilsConfig } from '@vue/test-utils';
+import Translate from '~/vue_shared/translate';
import { initializeTestTimeout } from './helpers/timeout';
import { getJSONFixture, loadHTMLFixture, setHTMLFixture } from './helpers/fixtures';
import { setupManualMocks } from './mocks/mocks_helper';
@@ -34,15 +34,6 @@ Vue.config.productionTip = false;
Vue.use(Translate);
-// workaround for JSDOM not supporting innerText
-// see https://github.com/jsdom/jsdom/issues/1245
-Object.defineProperty(global.Element.prototype, 'innerText', {
- get() {
- return this.textContent;
- },
- configurable: true, // make it so that it doesn't blow chunks on re-running tests with things like --watch
-});
-
// convenience wrapper for migration from Karma
Object.assign(global, {
getJSONFixture,
diff --git a/spec/frontend/tracking_spec.js b/spec/frontend/tracking_spec.js
index 964f8b8787e..c3c52844c2c 100644
--- a/spec/frontend/tracking_spec.js
+++ b/spec/frontend/tracking_spec.js
@@ -177,4 +177,70 @@ describe('Tracking', () => {
expect(eventSpy).toHaveBeenCalledWith('_category_', 'nested_event', {});
});
});
+
+ describe('tracking mixin', () => {
+ describe('trackingOptions', () => {
+ it('return the options defined on initialisation', () => {
+ const mixin = Tracking.mixin({ foo: 'bar' });
+ expect(mixin.computed.trackingOptions()).toEqual({ foo: 'bar' });
+ });
+
+ it('local tracking value override and extend options', () => {
+ const mixin = Tracking.mixin({ foo: 'bar' });
+ // the value of this in the vue lifecyle is different, but this serve the tests purposes
+ mixin.computed.tracking = { foo: 'baz', baz: 'bar' };
+ expect(mixin.computed.trackingOptions()).toEqual({ foo: 'baz', baz: 'bar' });
+ });
+ });
+
+ describe('trackingCategory', () => {
+ it('return the category set in the component properties first', () => {
+ const mixin = Tracking.mixin({ category: 'foo' });
+ mixin.computed.tracking = {
+ category: 'bar',
+ };
+ expect(mixin.computed.trackingCategory()).toBe('bar');
+ });
+
+ it('return the category set in the options', () => {
+ const mixin = Tracking.mixin({ category: 'foo' });
+ expect(mixin.computed.trackingCategory()).toBe('foo');
+ });
+
+ it('if no category is selected returns undefined', () => {
+ const mixin = Tracking.mixin();
+ expect(mixin.computed.trackingCategory()).toBe(undefined);
+ });
+ });
+
+ describe('track', () => {
+ let eventSpy;
+ let mixin;
+
+ beforeEach(() => {
+ eventSpy = jest.spyOn(Tracking, 'event').mockReturnValue();
+ mixin = Tracking.mixin();
+ mixin = {
+ ...mixin.computed,
+ ...mixin.methods,
+ };
+ });
+
+ it('calls the event method', () => {
+ mixin.trackingCategory = mixin.trackingCategory();
+ mixin.trackingOptions = mixin.trackingOptions();
+
+ mixin.track('foo');
+ expect(eventSpy).toHaveBeenCalledWith(undefined, 'foo', {});
+ });
+
+ it('give precedence to data for category and options', () => {
+ mixin.trackingCategory = mixin.trackingCategory();
+ mixin.trackingOptions = mixin.trackingOptions();
+ const data = { category: 'foo', label: 'baz' };
+ mixin.track('foo', data);
+ expect(eventSpy).toHaveBeenCalledWith('foo', 'foo', data);
+ });
+ });
+ });
});
diff --git a/spec/frontend/transfer_edit_spec.js b/spec/frontend/transfer_edit_spec.js
index 3a1ede49068..dc9455a569d 100644
--- a/spec/frontend/transfer_edit_spec.js
+++ b/spec/frontend/transfer_edit_spec.js
@@ -1,7 +1,7 @@
import $ from 'jquery';
-import setupTransferEdit from '~/transfer_edit';
import { loadHTMLFixture } from 'helpers/fixtures';
+import setupTransferEdit from '~/transfer_edit';
describe('setupTransferEdit', () => {
const formSelector = '.js-project-transfer-form';
diff --git a/spec/frontend/vue_mr_widget/components/artifacts_list_app_spec.js b/spec/frontend/vue_mr_widget/components/artifacts_list_app_spec.js
index 7d593a77bf3..f979d173eff 100644
--- a/spec/frontend/vue_mr_widget/components/artifacts_list_app_spec.js
+++ b/spec/frontend/vue_mr_widget/components/artifacts_list_app_spec.js
@@ -1,9 +1,9 @@
import { mount, createLocalVue } from '@vue/test-utils';
import Vuex from 'vuex';
import MockAdapter from 'axios-mock-adapter';
-import axios from '~/lib/utils/axios_utils';
import { GlLoadingIcon } from '@gitlab/ui';
import { TEST_HOST } from 'helpers/test_constants';
+import axios from '~/lib/utils/axios_utils';
import ArtifactsListApp from '~/vue_merge_request_widget/components/artifacts_list_app.vue';
import createStore from '~/vue_merge_request_widget/stores/artifacts_list';
import { artifactsList } from './mock_data';
diff --git a/spec/frontend/vue_mr_widget/components/mr_collapsible_extension_spec.js b/spec/frontend/vue_mr_widget/components/mr_collapsible_extension_spec.js
index ee107f297ef..5f101ba4cf6 100644
--- a/spec/frontend/vue_mr_widget/components/mr_collapsible_extension_spec.js
+++ b/spec/frontend/vue_mr_widget/components/mr_collapsible_extension_spec.js
@@ -1,6 +1,6 @@
import { mount } from '@vue/test-utils';
-import MrCollapsibleSection from '~/vue_merge_request_widget/components/mr_collapsible_extension.vue';
import { GlLoadingIcon } from '@gitlab/ui';
+import MrCollapsibleSection from '~/vue_merge_request_widget/components/mr_collapsible_extension.vue';
describe('Merge Request Collapsible Extension', () => {
let wrapper;
diff --git a/spec/frontend/vue_mr_widget/deployment/deployment_mock_data.js b/spec/frontend/vue_mr_widget/deployment/deployment_mock_data.js
new file mode 100644
index 00000000000..f8f4cb627dd
--- /dev/null
+++ b/spec/frontend/vue_mr_widget/deployment/deployment_mock_data.js
@@ -0,0 +1,32 @@
+import { SUCCESS } from '~/vue_merge_request_widget/components/deployment/constants';
+
+const deploymentMockData = {
+ id: 15,
+ name: 'review/diplo',
+ url: '/root/review-apps/environments/15',
+ stop_url: '/root/review-apps/environments/15/stop',
+ metrics_url: '/root/review-apps/environments/15/deployments/1/metrics',
+ metrics_monitoring_url: '/root/review-apps/environments/15/metrics',
+ external_url: 'http://gitlab.com.',
+ external_url_formatted: 'gitlab',
+ deployed_at: '2017-03-22T22:44:42.258Z',
+ deployed_at_formatted: 'Mar 22, 2017 10:44pm',
+ details: {},
+ status: SUCCESS,
+ changes: [
+ {
+ path: 'index.html',
+ external_url: 'http://root-master-patch-91341.volatile-watch.surge.sh/index.html',
+ },
+ {
+ path: 'imgs/gallery.html',
+ external_url: 'http://root-master-patch-91341.volatile-watch.surge.sh/imgs/gallery.html',
+ },
+ {
+ path: 'about/',
+ external_url: 'http://root-master-patch-91341.volatile-watch.surge.sh/about/',
+ },
+ ],
+};
+
+export default deploymentMockData;
diff --git a/spec/frontend/vue_mr_widget/deployment/deployment_spec.js b/spec/frontend/vue_mr_widget/deployment/deployment_spec.js
new file mode 100644
index 00000000000..78e086e473d
--- /dev/null
+++ b/spec/frontend/vue_mr_widget/deployment/deployment_spec.js
@@ -0,0 +1,194 @@
+import { mount } from '@vue/test-utils';
+import DeploymentComponent from '~/vue_merge_request_widget/components/deployment/deployment.vue';
+import DeploymentInfo from '~/vue_merge_request_widget/components/deployment/deployment_info.vue';
+import DeploymentViewButton from '~/vue_merge_request_widget/components/deployment/deployment_view_button.vue';
+import DeploymentStopButton from '~/vue_merge_request_widget/components/deployment/deployment_stop_button.vue';
+import {
+ CREATED,
+ RUNNING,
+ SUCCESS,
+ FAILED,
+ CANCELED,
+} from '~/vue_merge_request_widget/components/deployment/constants';
+import deploymentMockData from './deployment_mock_data';
+
+const deployDetail = {
+ playable_build: {
+ retry_path: '/root/test-deployments/-/jobs/1131/retry',
+ play_path: '/root/test-deployments/-/jobs/1131/play',
+ },
+ isManual: true,
+};
+
+describe('Deployment component', () => {
+ let wrapper;
+
+ const factory = (options = {}) => {
+ // This destroys any wrappers created before a nested call to factory reassigns it
+ if (wrapper && wrapper.destroy) {
+ wrapper.destroy();
+ }
+ wrapper = mount(DeploymentComponent, {
+ ...options,
+ });
+ };
+
+ beforeEach(() => {
+ factory({
+ propsData: {
+ deployment: deploymentMockData,
+ showMetrics: false,
+ },
+ });
+ });
+
+ afterEach(() => {
+ wrapper.destroy();
+ });
+
+ it('always renders DeploymentInfo', () => {
+ expect(wrapper.find(DeploymentInfo).exists()).toBe(true);
+ });
+
+ describe('status message and buttons', () => {
+ const noActions = [];
+ const noDetails = { isManual: false };
+ const deployGroup = [DeploymentViewButton, DeploymentStopButton];
+
+ describe.each`
+ status | previous | deploymentDetails | text | actionButtons
+ ${CREATED} | ${true} | ${deployDetail} | ${'Can deploy manually to'} | ${deployGroup}
+ ${CREATED} | ${true} | ${noDetails} | ${'Will deploy to'} | ${deployGroup}
+ ${CREATED} | ${false} | ${deployDetail} | ${'Can deploy manually to'} | ${noActions}
+ ${CREATED} | ${false} | ${noDetails} | ${'Will deploy to'} | ${noActions}
+ ${RUNNING} | ${true} | ${deployDetail} | ${'Deploying to'} | ${deployGroup}
+ ${RUNNING} | ${true} | ${noDetails} | ${'Deploying to'} | ${deployGroup}
+ ${RUNNING} | ${false} | ${deployDetail} | ${'Deploying to'} | ${noActions}
+ ${RUNNING} | ${false} | ${noDetails} | ${'Deploying to'} | ${noActions}
+ ${SUCCESS} | ${true} | ${deployDetail} | ${'Deployed to'} | ${deployGroup}
+ ${SUCCESS} | ${true} | ${noDetails} | ${'Deployed to'} | ${deployGroup}
+ ${SUCCESS} | ${false} | ${deployDetail} | ${'Deployed to'} | ${deployGroup}
+ ${SUCCESS} | ${false} | ${noDetails} | ${'Deployed to'} | ${deployGroup}
+ ${FAILED} | ${true} | ${deployDetail} | ${'Failed to deploy to'} | ${deployGroup}
+ ${FAILED} | ${true} | ${noDetails} | ${'Failed to deploy to'} | ${deployGroup}
+ ${FAILED} | ${false} | ${deployDetail} | ${'Failed to deploy to'} | ${noActions}
+ ${FAILED} | ${false} | ${noDetails} | ${'Failed to deploy to'} | ${noActions}
+ ${CANCELED} | ${true} | ${deployDetail} | ${'Canceled deploy to'} | ${deployGroup}
+ ${CANCELED} | ${true} | ${noDetails} | ${'Canceled deploy to'} | ${deployGroup}
+ ${CANCELED} | ${false} | ${deployDetail} | ${'Canceled deploy to'} | ${noActions}
+ ${CANCELED} | ${false} | ${noDetails} | ${'Canceled deploy to'} | ${noActions}
+ `(
+ '$status + previous: $previous + manual: $deploymentDetails.isManual',
+ ({ status, previous, deploymentDetails, text, actionButtons }) => {
+ beforeEach(() => {
+ const previousOrSuccess = Boolean(previous || status === SUCCESS);
+ const updatedDeploymentData = {
+ status,
+ deployed_at: previous ? deploymentMockData.deployed_at : null,
+ deployed_at_formatted: previous ? deploymentMockData.deployed_at_formatted : null,
+ external_url: previousOrSuccess ? deploymentMockData.external_url : null,
+ external_url_formatted: previousOrSuccess
+ ? deploymentMockData.external_url_formatted
+ : null,
+ stop_url: previousOrSuccess ? deploymentMockData.stop_url : null,
+ details: deploymentDetails,
+ };
+
+ factory({
+ propsData: {
+ showMetrics: false,
+ deployment: {
+ ...deploymentMockData,
+ ...updatedDeploymentData,
+ },
+ },
+ });
+ });
+
+ it(`renders the text: ${text}`, () => {
+ expect(wrapper.find(DeploymentInfo).text()).toContain(text);
+ });
+
+ if (actionButtons.length > 0) {
+ describe('renders the expected button group', () => {
+ actionButtons.forEach(button => {
+ it(`renders ${button.name}`, () => {
+ expect(wrapper.find(button).exists()).toBe(true);
+ });
+ });
+ });
+ }
+
+ if (actionButtons.length === 0) {
+ describe('does not render the button group', () => {
+ [DeploymentViewButton, DeploymentStopButton].forEach(button => {
+ it(`does not render ${button.name}`, () => {
+ expect(wrapper.find(button).exists()).toBe(false);
+ });
+ });
+ });
+ }
+
+ if (actionButtons.includes(DeploymentViewButton)) {
+ it('renders the View button with expected text', () => {
+ if (status === SUCCESS) {
+ expect(wrapper.find(DeploymentViewButton).text()).toContain('View app');
+ } else {
+ expect(wrapper.find(DeploymentViewButton).text()).toContain('View previous app');
+ }
+ });
+ }
+ },
+ );
+ });
+
+ describe('hasExternalUrls', () => {
+ describe('when deployment has both external_url_formatted and external_url', () => {
+ it('should return true', () => {
+ expect(wrapper.vm.hasExternalUrls).toEqual(true);
+ });
+
+ it('should render the View Button', () => {
+ expect(wrapper.find(DeploymentViewButton).exists()).toBe(true);
+ });
+ });
+
+ describe('when deployment has no external_url_formatted', () => {
+ beforeEach(() => {
+ factory({
+ propsData: {
+ deployment: { ...deploymentMockData, external_url_formatted: null },
+ showMetrics: false,
+ },
+ });
+ });
+
+ it('should return false', () => {
+ expect(wrapper.vm.hasExternalUrls).toEqual(false);
+ });
+
+ it('should not render the View Button', () => {
+ expect(wrapper.find(DeploymentViewButton).exists()).toBe(false);
+ });
+ });
+
+ describe('when deployment has no external_url', () => {
+ beforeEach(() => {
+ factory({
+ propsData: {
+ deployment: { ...deploymentMockData, external_url: null },
+ showMetrics: false,
+ },
+ });
+ });
+
+ it('should return false', () => {
+ expect(wrapper.vm.hasExternalUrls).toEqual(false);
+ });
+
+ it('should not render the View Button', () => {
+ expect(wrapper.find(DeploymentViewButton).exists()).toBe(false);
+ });
+ });
+ });
+});
diff --git a/spec/frontend/vue_mr_widget/deployment/deployment_view_button_spec.js b/spec/frontend/vue_mr_widget/deployment/deployment_view_button_spec.js
new file mode 100644
index 00000000000..6e3c6f64c68
--- /dev/null
+++ b/spec/frontend/vue_mr_widget/deployment/deployment_view_button_spec.js
@@ -0,0 +1,118 @@
+import { mount, createLocalVue } from '@vue/test-utils';
+import DeploymentViewButton from '~/vue_merge_request_widget/components/deployment/deployment_view_button.vue';
+import ReviewAppLink from '~/vue_merge_request_widget/components/review_app_link.vue';
+import deploymentMockData from './deployment_mock_data';
+
+describe('Deployment View App button', () => {
+ let wrapper;
+
+ const factory = (options = {}) => {
+ const localVue = createLocalVue();
+
+ wrapper = mount(localVue.extend(DeploymentViewButton), {
+ localVue,
+ ...options,
+ });
+ };
+
+ beforeEach(() => {
+ factory({
+ propsData: {
+ deployment: deploymentMockData,
+ isCurrent: true,
+ },
+ });
+ });
+
+ afterEach(() => {
+ wrapper.destroy();
+ });
+
+ describe('text', () => {
+ describe('when app is current', () => {
+ it('shows View app', () => {
+ expect(wrapper.find(ReviewAppLink).text()).toContain('View app');
+ });
+ });
+
+ describe('when app is not current', () => {
+ beforeEach(() => {
+ factory({
+ propsData: {
+ deployment: deploymentMockData,
+ isCurrent: false,
+ },
+ });
+ });
+
+ it('shows View Previous app', () => {
+ expect(wrapper.find(ReviewAppLink).text()).toContain('View previous app');
+ });
+ });
+ });
+
+ describe('without changes', () => {
+ beforeEach(() => {
+ factory({
+ propsData: {
+ deployment: { ...deploymentMockData, changes: null },
+ isCurrent: false,
+ },
+ });
+ });
+
+ it('renders the link to the review app without dropdown', () => {
+ expect(wrapper.find('.js-mr-wigdet-deployment-dropdown').exists()).toBe(false);
+ });
+ });
+
+ describe('with a single change', () => {
+ beforeEach(() => {
+ factory({
+ propsData: {
+ deployment: { ...deploymentMockData, changes: [deploymentMockData.changes[0]] },
+ isCurrent: false,
+ },
+ });
+ });
+
+ it('renders the link to the review app without dropdown', () => {
+ expect(wrapper.find('.js-mr-wigdet-deployment-dropdown').exists()).toBe(false);
+ });
+
+ it('renders the link to the review app linked to to the first change', () => {
+ const expectedUrl = deploymentMockData.changes[0].external_url;
+ const deployUrl = wrapper.find('.js-deploy-url');
+
+ expect(deployUrl.attributes().href).not.toBeNull();
+ expect(deployUrl.attributes().href).toEqual(expectedUrl);
+ });
+ });
+
+ describe('with multiple changes', () => {
+ beforeEach(() => {
+ factory({
+ propsData: {
+ deployment: deploymentMockData,
+ isCurrent: false,
+ },
+ });
+ });
+
+ it('renders the link to the review app with dropdown', () => {
+ expect(wrapper.find('.js-mr-wigdet-deployment-dropdown').exists()).toBe(true);
+ });
+
+ it('renders all the links to the review apps', () => {
+ const allUrls = wrapper.findAll('.js-deploy-url-menu-item').wrappers;
+ const expectedUrls = deploymentMockData.changes.map(change => change.external_url);
+
+ expectedUrls.forEach((expectedUrl, idx) => {
+ const deployUrl = allUrls[idx];
+
+ expect(deployUrl.attributes().href).not.toBeNull();
+ expect(deployUrl.attributes().href).toEqual(expectedUrl);
+ });
+ });
+ });
+});
diff --git a/spec/frontend/vue_shared/components/__snapshots__/expand_button_spec.js.snap b/spec/frontend/vue_shared/components/__snapshots__/expand_button_spec.js.snap
new file mode 100644
index 00000000000..cf71aefebe8
--- /dev/null
+++ b/spec/frontend/vue_shared/components/__snapshots__/expand_button_spec.js.snap
@@ -0,0 +1,5 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Expand button on click when short text is provided renders button after text 1`] = `"<span><button aria-label=\\"Click to expand text\\" type=\\"button\\" class=\\"btn js-text-expander-prepend text-expander btn-blank btn-secondary\\" style=\\"display: none;\\"><svg aria-hidden=\\"true\\" class=\\"s12 ic-ellipsis_h\\"><use xlink:href=\\"#ellipsis_h\\"></use></svg></button> <!----> <span><p>Expanded!</p></span> <button aria-label=\\"Click to expand text\\" type=\\"button\\" class=\\"btn js-text-expander-append text-expander btn-blank btn-secondary\\" style=\\"\\"><svg aria-hidden=\\"true\\" class=\\"s12 ic-ellipsis_h\\"><use xlink:href=\\"#ellipsis_h\\"></use></svg></button></span>"`;
+
+exports[`Expand button when short text is provided renders button before text 1`] = `"<span><button aria-label=\\"Click to expand text\\" type=\\"button\\" class=\\"btn js-text-expander-prepend text-expander btn-blank btn-secondary\\"><svg aria-hidden=\\"true\\" class=\\"s12 ic-ellipsis_h\\"><use xlink:href=\\"#ellipsis_h\\"></use></svg></button> <span><p>Short</p></span> <!----> <button aria-label=\\"Click to expand text\\" type=\\"button\\" class=\\"btn js-text-expander-append text-expander btn-blank btn-secondary\\" style=\\"display: none;\\"><svg aria-hidden=\\"true\\" class=\\"s12 ic-ellipsis_h\\"><use xlink:href=\\"#ellipsis_h\\"></use></svg></button></span>"`;
diff --git a/spec/frontend/vue_shared/components/__snapshots__/memory_graph_spec.js.snap b/spec/frontend/vue_shared/components/__snapshots__/memory_graph_spec.js.snap
new file mode 100644
index 00000000000..a7f666ff56d
--- /dev/null
+++ b/spec/frontend/vue_shared/components/__snapshots__/memory_graph_spec.js.snap
@@ -0,0 +1,15 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`MemoryGraph Render chart should draw container with chart 1`] = `
+<div
+ class="memory-graph-container p-1"
+ style="width: 100px;"
+>
+ <glsparklinechart-stub
+ data="Nov 12 2019 19:17:33,2.87,Nov 12 2019 19:18:33,2.78,Nov 12 2019 19:19:33,2.78,Nov 12 2019 19:20:33,3.01"
+ height="25"
+ tooltiplabel="MB"
+ variant="gray900"
+ />
+</div>
+`;
diff --git a/spec/frontend/vue_shared/components/__snapshots__/split_button_spec.js.snap b/spec/frontend/vue_shared/components/__snapshots__/split_button_spec.js.snap
index 95296de5a5d..530428ef27c 100644
--- a/spec/frontend/vue_shared/components/__snapshots__/split_button_spec.js.snap
+++ b/spec/frontend/vue_shared/components/__snapshots__/split_button_spec.js.snap
@@ -5,6 +5,7 @@ exports[`SplitButton renders actionItems 1`] = `
menu-class="dropdown-menu-selectable "
split="true"
text="professor"
+ variant="secondary"
>
<gldropdownitem-stub
active="true"
diff --git a/spec/frontend/vue_shared/components/changed_file_icon_spec.js b/spec/frontend/vue_shared/components/changed_file_icon_spec.js
index d5861b18318..2fabbe3d0f6 100644
--- a/spec/frontend/vue_shared/components/changed_file_icon_spec.js
+++ b/spec/frontend/vue_shared/components/changed_file_icon_spec.js
@@ -19,6 +19,7 @@ describe('Changed file icon', () => {
...props,
},
sync: false,
+ attachToDocument: true,
});
};
diff --git a/spec/frontend/vue_shared/components/clipboard_button_spec.js b/spec/frontend/vue_shared/components/clipboard_button_spec.js
new file mode 100644
index 00000000000..4fb6924daba
--- /dev/null
+++ b/spec/frontend/vue_shared/components/clipboard_button_spec.js
@@ -0,0 +1,60 @@
+import { shallowMount } from '@vue/test-utils';
+import { GlButton } from '@gitlab/ui';
+import ClipboardButton from '~/vue_shared/components/clipboard_button.vue';
+import Icon from '~/vue_shared/components/icon.vue';
+
+describe('clipboard button', () => {
+ let wrapper;
+
+ const createWrapper = propsData => {
+ wrapper = shallowMount(ClipboardButton, {
+ propsData,
+ sync: false,
+ attachToDocument: true,
+ });
+ };
+
+ afterEach(() => {
+ wrapper.destroy();
+ wrapper = null;
+ });
+
+ describe('without gfm', () => {
+ beforeEach(() => {
+ createWrapper({
+ text: 'copy me',
+ title: 'Copy this value',
+ cssClass: 'btn-danger',
+ });
+ });
+
+ it('renders a button for clipboard', () => {
+ expect(wrapper.find(GlButton).exists()).toBe(true);
+ expect(wrapper.attributes('data-clipboard-text')).toBe('copy me');
+ expect(wrapper.find(Icon).props('name')).toBe('duplicate');
+ });
+
+ it('should have a tooltip with default values', () => {
+ expect(wrapper.attributes('data-original-title')).toBe('Copy this value');
+ });
+
+ it('should render provided classname', () => {
+ expect(wrapper.classes()).toContain('btn-danger');
+ });
+ });
+
+ describe('with gfm', () => {
+ it('sets data-clipboard-text with gfm', () => {
+ createWrapper({
+ text: 'copy me',
+ gfm: '`path/to/file`',
+ title: 'Copy this value',
+ cssClass: 'btn-danger',
+ });
+
+ expect(wrapper.attributes('data-clipboard-text')).toBe(
+ '{"text":"copy me","gfm":"`path/to/file`"}',
+ );
+ });
+ });
+});
diff --git a/spec/frontend/vue_shared/components/commit_spec.js b/spec/frontend/vue_shared/components/commit_spec.js
index 77d8e00cf00..67262eec0a5 100644
--- a/spec/frontend/vue_shared/components/commit_spec.js
+++ b/spec/frontend/vue_shared/components/commit_spec.js
@@ -13,6 +13,7 @@ describe('Commit component', () => {
wrapper = shallowMount(CommitComponent, {
propsData,
sync: false,
+ attachToDocument: true,
});
};
diff --git a/spec/frontend/vue_shared/components/content_viewer/viewers/image_viewer_spec.js b/spec/frontend/vue_shared/components/content_viewer/viewers/image_viewer_spec.js
index 3ad8f3aec7c..ef785b9f0f5 100644
--- a/spec/frontend/vue_shared/components/content_viewer/viewers/image_viewer_spec.js
+++ b/spec/frontend/vue_shared/components/content_viewer/viewers/image_viewer_spec.js
@@ -1,7 +1,7 @@
import { shallowMount } from '@vue/test-utils';
-import ImageViewer from '~/vue_shared/components/content_viewer/viewers/image_viewer.vue';
import { GREEN_BOX_IMAGE_URL } from 'spec/test_constants';
+import ImageViewer from '~/vue_shared/components/content_viewer/viewers/image_viewer.vue';
describe('Image Viewer', () => {
const requiredProps = {
diff --git a/spec/frontend/vue_shared/components/dropdown/dropdown_search_input_spec.js b/spec/frontend/vue_shared/components/dropdown/dropdown_search_input_spec.js
new file mode 100644
index 00000000000..0d0e4ae4349
--- /dev/null
+++ b/spec/frontend/vue_shared/components/dropdown/dropdown_search_input_spec.js
@@ -0,0 +1,55 @@
+import { mount } from '@vue/test-utils';
+import DropdownSearchInputComponent from '~/vue_shared/components/dropdown/dropdown_search_input.vue';
+
+describe('DropdownSearchInputComponent', () => {
+ let wrapper;
+
+ const defaultProps = {
+ placeholderText: 'Search something',
+ };
+ const buildVM = (propsData = defaultProps) => {
+ wrapper = mount(DropdownSearchInputComponent, {
+ propsData,
+ });
+ };
+ const findInputEl = () => wrapper.find('.dropdown-input-field');
+
+ beforeEach(() => {
+ buildVM();
+ });
+
+ afterEach(() => {
+ wrapper.destroy();
+ });
+
+ describe('template', () => {
+ it('renders input element with type `search`', () => {
+ expect(findInputEl().exists()).toBe(true);
+ expect(findInputEl().attributes('type')).toBe('search');
+ });
+
+ it('renders search icon element', () => {
+ expect(wrapper.find('.fa-search.dropdown-input-search').exists()).toBe(true);
+ });
+
+ it('renders clear search icon element', () => {
+ expect(wrapper.find('.fa-times.dropdown-input-clear.js-dropdown-input-clear').exists()).toBe(
+ true,
+ );
+ });
+
+ it('displays custom placeholder text', () => {
+ expect(findInputEl().attributes('placeholder')).toBe(defaultProps.placeholderText);
+ });
+
+ it('focuses input element when focused property equals true', () => {
+ const inputEl = findInputEl().element;
+
+ jest.spyOn(inputEl, 'focus');
+
+ wrapper.setProps({ focused: true });
+
+ expect(inputEl.focus).toHaveBeenCalled();
+ });
+ });
+});
diff --git a/spec/frontend/vue_shared/components/expand_button_spec.js b/spec/frontend/vue_shared/components/expand_button_spec.js
new file mode 100644
index 00000000000..a501e6695d5
--- /dev/null
+++ b/spec/frontend/vue_shared/components/expand_button_spec.js
@@ -0,0 +1,188 @@
+import Vue from 'vue';
+import { mount, createLocalVue } from '@vue/test-utils';
+import ExpandButton from '~/vue_shared/components/expand_button.vue';
+
+const text = {
+ expanded: 'Expanded!',
+ short: 'Short',
+};
+
+describe('Expand button', () => {
+ let wrapper;
+
+ const expanderPrependEl = () => wrapper.find('.js-text-expander-prepend');
+ const expanderAppendEl = () => wrapper.find('.js-text-expander-append');
+
+ const factory = (options = {}) => {
+ const localVue = createLocalVue();
+
+ wrapper = mount(localVue.extend(ExpandButton), {
+ localVue,
+ ...options,
+ });
+ };
+
+ beforeEach(() => {
+ factory({
+ slots: {
+ expanded: `<p>${text.expanded}</p>`,
+ },
+ });
+ });
+
+ afterEach(() => {
+ wrapper.destroy();
+ });
+
+ it('renders the prepended collapse button', () => {
+ expect(expanderPrependEl().isVisible()).toBe(true);
+ expect(expanderAppendEl().isVisible()).toBe(false);
+ });
+
+ it('renders no text when short text is not provided', () => {
+ expect(wrapper.find(ExpandButton).text()).toBe('');
+ });
+
+ it('does not render expanded text', () => {
+ expect(
+ wrapper
+ .find(ExpandButton)
+ .text()
+ .trim(),
+ ).not.toBe(text.short);
+ });
+
+ describe('when short text is provided', () => {
+ beforeEach(() => {
+ factory({
+ slots: {
+ expanded: `<p>${text.expanded}</p>`,
+ short: `<p>${text.short}</p>`,
+ },
+ });
+ });
+
+ it('renders short text', () => {
+ expect(
+ wrapper
+ .find(ExpandButton)
+ .text()
+ .trim(),
+ ).toBe(text.short);
+ });
+
+ it('renders button before text', () => {
+ expect(expanderPrependEl().isVisible()).toBe(true);
+ expect(expanderAppendEl().isVisible()).toBe(false);
+ expect(wrapper.find(ExpandButton).html()).toMatchSnapshot();
+ });
+ });
+
+ describe('on click', () => {
+ beforeEach(done => {
+ expanderPrependEl().trigger('click');
+ Vue.nextTick(done);
+ });
+
+ afterEach(() => {
+ expanderAppendEl().trigger('click');
+ });
+
+ it('renders only the append collapse button', () => {
+ expect(expanderAppendEl().isVisible()).toBe(true);
+ expect(expanderPrependEl().isVisible()).toBe(false);
+ });
+
+ it('renders the expanded text', () => {
+ expect(wrapper.find(ExpandButton).text()).toContain(text.expanded);
+ });
+
+ describe('when short text is provided', () => {
+ beforeEach(done => {
+ factory({
+ slots: {
+ expanded: `<p>${text.expanded}</p>`,
+ short: `<p>${text.short}</p>`,
+ },
+ });
+
+ expanderPrependEl().trigger('click');
+ Vue.nextTick(done);
+ });
+
+ it('only renders expanded text', () => {
+ expect(
+ wrapper
+ .find(ExpandButton)
+ .text()
+ .trim(),
+ ).toBe(text.expanded);
+ });
+
+ it('renders button after text', () => {
+ expect(expanderPrependEl().isVisible()).toBe(false);
+ expect(expanderAppendEl().isVisible()).toBe(true);
+ expect(wrapper.find(ExpandButton).html()).toMatchSnapshot();
+ });
+ });
+ });
+
+ describe('append button', () => {
+ beforeEach(done => {
+ expanderPrependEl().trigger('click');
+ Vue.nextTick(done);
+ });
+
+ it('clicking hides itself and shows prepend', () => {
+ expect(expanderAppendEl().isVisible()).toBe(true);
+ expanderAppendEl().trigger('click');
+ expect(expanderPrependEl().isVisible()).toBe(true);
+ });
+
+ it('clicking hides expanded text', () => {
+ expect(
+ wrapper
+ .find(ExpandButton)
+ .text()
+ .trim(),
+ ).toBe(text.expanded);
+ expanderAppendEl().trigger('click');
+ expect(
+ wrapper
+ .find(ExpandButton)
+ .text()
+ .trim(),
+ ).not.toBe(text.expanded);
+ });
+
+ describe('when short text is provided', () => {
+ beforeEach(done => {
+ factory({
+ slots: {
+ expanded: `<p>${text.expanded}</p>`,
+ short: `<p>${text.short}</p>`,
+ },
+ });
+
+ expanderPrependEl().trigger('click');
+ Vue.nextTick(done);
+ });
+
+ it('clicking reveals short text', () => {
+ expect(
+ wrapper
+ .find(ExpandButton)
+ .text()
+ .trim(),
+ ).toBe(text.expanded);
+ expanderAppendEl().trigger('click');
+ expect(
+ wrapper
+ .find(ExpandButton)
+ .text()
+ .trim(),
+ ).toBe(text.short);
+ });
+ });
+ });
+});
diff --git a/spec/frontend/vue_shared/components/gl_toggle_vuex_spec.js b/spec/frontend/vue_shared/components/gl_toggle_vuex_spec.js
index f076c45e56c..d9badffb50d 100644
--- a/spec/frontend/vue_shared/components/gl_toggle_vuex_spec.js
+++ b/spec/frontend/vue_shared/components/gl_toggle_vuex_spec.js
@@ -1,7 +1,7 @@
import Vuex from 'vuex';
-import GlToggleVuex from '~/vue_shared/components/gl_toggle_vuex.vue';
import { GlToggle } from '@gitlab/ui';
import { mount, createLocalVue } from '@vue/test-utils';
+import GlToggleVuex from '~/vue_shared/components/gl_toggle_vuex.vue';
const localVue = createLocalVue();
localVue.use(Vuex);
diff --git a/spec/frontend/vue_shared/components/issue/issue_assignees_spec.js b/spec/frontend/vue_shared/components/issue/issue_assignees_spec.js
index 9e6b5286899..dcae2f12833 100644
--- a/spec/frontend/vue_shared/components/issue/issue_assignees_spec.js
+++ b/spec/frontend/vue_shared/components/issue/issue_assignees_spec.js
@@ -18,6 +18,7 @@ describe('IssueAssigneesComponent', () => {
...props,
},
sync: false,
+ attachToDocument: true,
});
vm = wrapper.vm; // eslint-disable-line
};
diff --git a/spec/frontend/vue_shared/components/issue/issue_milestone_spec.js b/spec/frontend/vue_shared/components/issue/issue_milestone_spec.js
index 2e93ec412b9..4a66330ac30 100644
--- a/spec/frontend/vue_shared/components/issue/issue_milestone_spec.js
+++ b/spec/frontend/vue_shared/components/issue/issue_milestone_spec.js
@@ -1,18 +1,20 @@
import Vue from 'vue';
-import { mount } from '@vue/test-utils';
+import { shallowMount } from '@vue/test-utils';
import IssueMilestone from '~/vue_shared/components/issue/issue_milestone.vue';
+import Icon from '~/vue_shared/components/icon.vue';
import { mockMilestone } from '../../../../javascripts/boards/mock_data';
const createComponent = (milestone = mockMilestone) => {
const Component = Vue.extend(IssueMilestone);
- return mount(Component, {
+ return shallowMount(Component, {
propsData: {
milestone,
},
sync: false,
+ attachToDocument: true,
});
};
@@ -156,7 +158,7 @@ describe('IssueMilestoneComponent', () => {
});
it('renders milestone icon', () => {
- expect(vm.$el.querySelector('svg use').getAttribute('xlink:href')).toContain('clock');
+ expect(wrapper.find(Icon).props('name')).toBe('clock');
});
it('renders milestone title', () => {
diff --git a/spec/frontend/vue_shared/components/issue/issue_warning_spec.js b/spec/frontend/vue_shared/components/issue/issue_warning_spec.js
index 63880b85625..7bb054b4e6c 100644
--- a/spec/frontend/vue_shared/components/issue/issue_warning_spec.js
+++ b/spec/frontend/vue_shared/components/issue/issue_warning_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import issueWarning from '~/vue_shared/components/issue/issue_warning.vue';
import mountComponent from 'helpers/vue_mount_component_helper';
+import issueWarning from '~/vue_shared/components/issue/issue_warning.vue';
const IssueWarning = Vue.extend(issueWarning);
diff --git a/spec/frontend/vue_shared/components/issue/related_issuable_item_spec.js b/spec/frontend/vue_shared/components/issue/related_issuable_item_spec.js
index b85e2673624..3cc640cb00d 100644
--- a/spec/frontend/vue_shared/components/issue/related_issuable_item_spec.js
+++ b/spec/frontend/vue_shared/components/issue/related_issuable_item_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import { formatDate } from '~/lib/utils/datetime_utility';
import { mount, createLocalVue } from '@vue/test-utils';
+import { formatDate } from '~/lib/utils/datetime_utility';
import RelatedIssuableItem from '~/vue_shared/components/issue/related_issuable_item.vue';
import {
defaultAssignees,
@@ -35,6 +35,7 @@ describe('RelatedIssuableItem', () => {
localVue,
slots,
sync: false,
+ attachToDocument: true,
propsData: props,
});
});
@@ -89,11 +90,11 @@ describe('RelatedIssuableItem', () => {
it('renders state title', () => {
const stateTitle = tokenState.attributes('title');
- const formatedCreateDate = formatDate(props.createdAt);
+ const formattedCreateDate = formatDate(props.createdAt);
expect(stateTitle).toContain('<span class="bold">Opened</span>');
- expect(stateTitle).toContain(`<span class="text-tertiary">${formatedCreateDate}</span>`);
+ expect(stateTitle).toContain(`<span class="text-tertiary">${formattedCreateDate}</span>`);
});
it('renders aria label', () => {
diff --git a/spec/frontend/vue_shared/components/markdown/field_spec.js b/spec/frontend/vue_shared/components/markdown/field_spec.js
new file mode 100644
index 00000000000..4cd0f62da0f
--- /dev/null
+++ b/spec/frontend/vue_shared/components/markdown/field_spec.js
@@ -0,0 +1,179 @@
+import { mount, createLocalVue } from '@vue/test-utils';
+import { TEST_HOST } from 'spec/test_constants';
+import AxiosMockAdapter from 'axios-mock-adapter';
+import $ from 'jquery';
+import axios from '~/lib/utils/axios_utils';
+import fieldComponent from '~/vue_shared/components/markdown/field.vue';
+
+const markdownPreviewPath = `${TEST_HOST}/preview`;
+const markdownDocsPath = `${TEST_HOST}/docs`;
+
+function assertMarkdownTabs(isWrite, writeLink, previewLink, wrapper) {
+ expect(writeLink.element.parentNode.classList.contains('active')).toEqual(isWrite);
+ expect(previewLink.element.parentNode.classList.contains('active')).toEqual(!isWrite);
+ expect(wrapper.find('.md-preview-holder').element.style.display).toEqual(isWrite ? 'none' : '');
+}
+
+function createComponent() {
+ const wrapper = mount(fieldComponent, {
+ propsData: {
+ markdownDocsPath,
+ markdownPreviewPath,
+ },
+ slots: {
+ textarea: '<textarea>testing\n123</textarea>',
+ },
+ template: `
+ <field-component
+ markdown-preview-path="${markdownPreviewPath}"
+ markdown-docs-path="${markdownDocsPath}"
+ >
+ <textarea
+ slot="textarea"
+ v-model="text">
+ <slot>this is a test</slot>
+ </textarea>
+ </field-component>
+ `,
+ sync: false,
+ });
+ return wrapper;
+}
+
+const getPreviewLink = wrapper => wrapper.find('.nav-links .js-preview-link');
+const getWriteLink = wrapper => wrapper.find('.nav-links .js-write-link');
+const getMarkdownButton = wrapper => wrapper.find('.js-md');
+const getAllMarkdownButtons = wrapper => wrapper.findAll('.js-md');
+
+describe('Markdown field component', () => {
+ let axiosMock;
+ const localVue = createLocalVue();
+
+ beforeEach(() => {
+ axiosMock = new AxiosMockAdapter(axios);
+ });
+
+ afterEach(() => {
+ axiosMock.restore();
+ });
+
+ describe('mounted', () => {
+ let wrapper;
+ const previewHTML = '<p>markdown preview</p>';
+ let previewLink;
+ let writeLink;
+
+ it('renders textarea inside backdrop', () => {
+ wrapper = createComponent();
+ expect(wrapper.find('.zen-backdrop textarea').element).not.toBeNull();
+ });
+
+ describe('markdown preview', () => {
+ beforeEach(() => {
+ axiosMock.onPost(markdownPreviewPath).reply(200, { body: previewHTML });
+ });
+
+ it('sets preview link as active', () => {
+ wrapper = createComponent();
+ previewLink = getPreviewLink(wrapper);
+ previewLink.trigger('click');
+
+ return localVue.nextTick().then(() => {
+ expect(previewLink.element.parentNode.classList.contains('active')).toBeTruthy();
+ });
+ });
+
+ it('shows preview loading text', () => {
+ wrapper = createComponent();
+ previewLink = getPreviewLink(wrapper);
+ previewLink.trigger('click');
+
+ localVue.nextTick(() => {
+ expect(wrapper.find('.md-preview-holder').element.textContent.trim()).toContain(
+ 'Loading…',
+ );
+ });
+ });
+
+ it('renders markdown preview', () => {
+ wrapper = createComponent();
+ previewLink = getPreviewLink(wrapper);
+ previewLink.trigger('click');
+
+ setTimeout(() => {
+ expect(wrapper.find('.md-preview-holder').element.innerHTML).toContain(previewHTML);
+ });
+ });
+
+ it('renders GFM with jQuery', () => {
+ wrapper = createComponent();
+ previewLink = getPreviewLink(wrapper);
+ jest.spyOn($.fn, 'renderGFM');
+
+ previewLink.trigger('click');
+
+ setTimeout(() => {
+ expect($.fn.renderGFM).toHaveBeenCalled();
+ }, 0);
+ });
+
+ it('clicking already active write or preview link does nothing', () => {
+ wrapper = createComponent();
+ writeLink = getWriteLink(wrapper);
+ previewLink = getPreviewLink(wrapper);
+
+ writeLink.trigger('click');
+ return localVue
+ .nextTick()
+ .then(() => assertMarkdownTabs(true, writeLink, previewLink, wrapper))
+ .then(() => writeLink.trigger('click'))
+ .then(() => localVue.nextTick())
+ .then(() => assertMarkdownTabs(true, writeLink, previewLink, wrapper))
+ .then(() => previewLink.trigger('click'))
+ .then(() => localVue.nextTick())
+ .then(() => assertMarkdownTabs(false, writeLink, previewLink, wrapper))
+ .then(() => previewLink.trigger('click'))
+ .then(() => localVue.nextTick())
+ .then(() => assertMarkdownTabs(false, writeLink, previewLink, wrapper));
+ });
+ });
+
+ describe('markdown buttons', () => {
+ it('converts single words', () => {
+ wrapper = createComponent();
+ const textarea = wrapper.find('textarea').element;
+ textarea.setSelectionRange(0, 7);
+ const markdownButton = getMarkdownButton(wrapper);
+ markdownButton.trigger('click');
+
+ localVue.nextTick(() => {
+ expect(textarea.value).toContain('**testing**');
+ });
+ });
+
+ it('converts a line', () => {
+ wrapper = createComponent();
+ const textarea = wrapper.find('textarea').element;
+ textarea.setSelectionRange(0, 0);
+ const markdownButton = getAllMarkdownButtons(wrapper).wrappers[5];
+ markdownButton.trigger('click');
+
+ localVue.nextTick(() => {
+ expect(textarea.value).toContain('* testing');
+ });
+ });
+
+ it('converts multiple lines', () => {
+ wrapper = createComponent();
+ const textarea = wrapper.find('textarea').element;
+ textarea.setSelectionRange(0, 50);
+ const markdownButton = getAllMarkdownButtons(wrapper).wrappers[5];
+ markdownButton.trigger('click');
+
+ localVue.nextTick(() => {
+ expect(textarea.value).toContain('* testing\n* 123');
+ });
+ });
+ });
+ });
+});
diff --git a/spec/frontend/vue_shared/components/markdown/header_spec.js b/spec/frontend/vue_shared/components/markdown/header_spec.js
index 48f2ee86619..1014fbf0308 100644
--- a/spec/frontend/vue_shared/components/markdown/header_spec.js
+++ b/spec/frontend/vue_shared/components/markdown/header_spec.js
@@ -1,20 +1,35 @@
-import Vue from 'vue';
+import { shallowMount } from '@vue/test-utils';
import $ from 'jquery';
-import headerComponent from '~/vue_shared/components/markdown/header.vue';
+import HeaderComponent from '~/vue_shared/components/markdown/header.vue';
+import ToolbarButton from '~/vue_shared/components/markdown/toolbar_button.vue';
describe('Markdown field header component', () => {
- let vm;
+ let wrapper;
- beforeEach(done => {
- const Component = Vue.extend(headerComponent);
-
- vm = new Component({
+ const createWrapper = props => {
+ wrapper = shallowMount(HeaderComponent, {
propsData: {
previewMarkdown: false,
+ ...props,
},
- }).$mount();
+ sync: false,
+ attachToDocument: true,
+ });
+ };
- Vue.nextTick(done);
+ const findToolbarButtons = () => wrapper.findAll(ToolbarButton);
+ const findToolbarButtonByProp = (prop, value) =>
+ findToolbarButtons()
+ .filter(button => button.props(prop) === value)
+ .at(0);
+
+ beforeEach(() => {
+ createWrapper();
+ });
+
+ afterEach(() => {
+ wrapper.destroy();
+ wrapper = null;
});
it('renders markdown header buttons', () => {
@@ -31,77 +46,72 @@ describe('Markdown field header component', () => {
'Add a table',
'Go full screen',
];
- const elements = vm.$el.querySelectorAll('.toolbar-btn');
+ const elements = findToolbarButtons();
- elements.forEach((buttonEl, index) => {
- expect(buttonEl.getAttribute('data-original-title')).toBe(buttons[index]);
+ elements.wrappers.forEach((buttonEl, index) => {
+ expect(buttonEl.props('buttonTitle')).toBe(buttons[index]);
});
});
it('renders `write` link as active when previewMarkdown is false', () => {
- expect(vm.$el.querySelector('li:nth-child(1)').classList.contains('active')).toBeTruthy();
+ expect(wrapper.find('li:nth-child(1)').classes()).toContain('active');
});
- it('renders `preview` link as active when previewMarkdown is true', done => {
- vm.previewMarkdown = true;
-
- Vue.nextTick(() => {
- expect(vm.$el.querySelector('li:nth-child(2)').classList.contains('active')).toBeTruthy();
+ it('renders `preview` link as active when previewMarkdown is true', () => {
+ createWrapper({ previewMarkdown: true });
- done();
- });
+ expect(wrapper.find('li:nth-child(2)').classes()).toContain('active');
});
it('emits toggle markdown event when clicking preview', () => {
- jest.spyOn(vm, '$emit').mockImplementation();
+ wrapper.find('.js-preview-link').trigger('click');
- vm.$el.querySelector('.js-preview-link').click();
+ expect(wrapper.emitted('preview-markdown').length).toEqual(1);
- expect(vm.$emit).toHaveBeenCalledWith('preview-markdown');
+ wrapper.find('.js-write-link').trigger('click');
- vm.$el.querySelector('.js-write-link').click();
-
- expect(vm.$emit).toHaveBeenCalledWith('write-markdown');
+ expect(wrapper.emitted('write-markdown').length).toEqual(1);
});
it('does not emit toggle markdown event when triggered from another form', () => {
- jest.spyOn(vm, '$emit').mockImplementation();
-
$(document).triggerHandler('markdown-preview:show', [
$(
'<form><div class="js-vue-markdown-field"><textarea class="markdown-area"></textarea></div></form>',
),
]);
- expect(vm.$emit).not.toHaveBeenCalled();
+ expect(wrapper.emitted('preview-markdown')).toBeFalsy();
+ expect(wrapper.emitted('write-markdown')).toBeFalsy();
});
it('blurs preview link after click', () => {
- const link = vm.$el.querySelector('li:nth-child(2) button');
+ const link = wrapper.find('li:nth-child(2) button');
jest.spyOn(HTMLElement.prototype, 'blur').mockImplementation();
- link.click();
+ link.trigger('click');
- expect(link.blur).toHaveBeenCalled();
+ expect(link.element.blur).toHaveBeenCalled();
});
it('renders markdown table template', () => {
- expect(vm.mdTable).toEqual(
+ const tableButton = findToolbarButtonByProp('icon', 'table');
+
+ expect(tableButton.props('tag')).toEqual(
'| header | header |\n| ------ | ------ |\n| cell | cell |\n| cell | cell |',
);
});
it('renders suggestion template', () => {
- vm.lineContent = 'Some content';
-
- expect(vm.mdSuggestion).toEqual('```suggestion:-0+0\n{text}\n```');
+ expect(findToolbarButtonByProp('buttonTitle', 'Insert suggestion').props('tag')).toEqual(
+ '```suggestion:-0+0\n{text}\n```',
+ );
});
it('does not render suggestion button if `canSuggest` is set to false', () => {
- vm.canSuggest = false;
-
- Vue.nextTick(() => {
- expect(vm.$el.querySelector('.js-suggestion-btn')).toBe(null);
+ createWrapper({
+ canSuggest: false,
});
+
+ expect(wrapper.find('.js-suggestion-btn').exists()).toBe(false);
});
});
diff --git a/spec/frontend/vue_shared/components/markdown/suggestion_diff_header_spec.js b/spec/frontend/vue_shared/components/markdown/suggestion_diff_header_spec.js
index 6716e5cd794..71f9b5e3244 100644
--- a/spec/frontend/vue_shared/components/markdown/suggestion_diff_header_spec.js
+++ b/spec/frontend/vue_shared/components/markdown/suggestion_diff_header_spec.js
@@ -21,6 +21,7 @@ describe('Suggestion Diff component', () => {
},
localVue,
sync: false,
+ attachToDocument: true,
});
};
@@ -64,12 +65,10 @@ describe('Suggestion Diff component', () => {
});
describe('when apply suggestion is clicked', () => {
- beforeEach(done => {
+ beforeEach(() => {
createComponent();
findApplyButton().vm.$emit('click');
-
- wrapper.vm.$nextTick(done);
});
it('emits apply', () => {
@@ -88,19 +87,15 @@ describe('Suggestion Diff component', () => {
expect(wrapper.text()).toContain('Applying suggestion');
});
- it('when callback of apply is called, hides loading', done => {
+ it('when callback of apply is called, hides loading', () => {
const [callback] = wrapper.emitted().apply[0];
callback();
- wrapper.vm
- .$nextTick()
- .then(() => {
- expect(findApplyButton().exists()).toBe(true);
- expect(findLoading().exists()).toBe(false);
- })
- .then(done)
- .catch(done.fail);
+ return wrapper.vm.$nextTick().then(() => {
+ expect(findApplyButton().exists()).toBe(true);
+ expect(findLoading().exists()).toBe(false);
+ });
});
});
});
diff --git a/spec/frontend/vue_shared/components/memory_graph_spec.js b/spec/frontend/vue_shared/components/memory_graph_spec.js
new file mode 100644
index 00000000000..9a5ee544d8f
--- /dev/null
+++ b/spec/frontend/vue_shared/components/memory_graph_spec.js
@@ -0,0 +1,53 @@
+import Vue from 'vue';
+import { shallowMount } from '@vue/test-utils';
+import { GlSparklineChart } from '@gitlab/ui/dist/charts';
+import MemoryGraph from '~/vue_shared/components/memory_graph.vue';
+
+describe('MemoryGraph', () => {
+ const Component = Vue.extend(MemoryGraph);
+ let wrapper;
+ const metrics = [
+ [1573586253.853, '2.87'],
+ [1573586313.853, '2.77734375'],
+ [1573586373.853, '2.77734375'],
+ [1573586433.853, '3.0066964285714284'],
+ ];
+
+ afterEach(() => {
+ wrapper.destroy();
+ });
+
+ beforeEach(() => {
+ wrapper = shallowMount(Component, {
+ propsData: {
+ metrics,
+ width: 100,
+ height: 25,
+ },
+ });
+ });
+
+ describe('chartData', () => {
+ it('should calculate chartData', () => {
+ expect(wrapper.vm.chartData.length).toEqual(metrics.length);
+ });
+
+ it('should format date & MB values', () => {
+ const formattedData = [
+ ['Nov 12 2019 19:17:33', '2.87'],
+ ['Nov 12 2019 19:18:33', '2.78'],
+ ['Nov 12 2019 19:19:33', '2.78'],
+ ['Nov 12 2019 19:20:33', '3.01'],
+ ];
+ expect(wrapper.vm.chartData).toEqual(formattedData);
+ });
+ });
+
+ describe('Render chart', () => {
+ it('should draw container with chart', () => {
+ expect(wrapper.element).toMatchSnapshot();
+ expect(wrapper.find('.memory-graph-container').exists()).toBe(true);
+ expect(wrapper.find(GlSparklineChart).exists()).toBe(true);
+ });
+ });
+});
diff --git a/spec/frontend/vue_shared/components/modal_copy_button_spec.js b/spec/frontend/vue_shared/components/modal_copy_button_spec.js
index d8c55bee8e0..3c71cb16bd5 100644
--- a/spec/frontend/vue_shared/components/modal_copy_button_spec.js
+++ b/spec/frontend/vue_shared/components/modal_copy_button_spec.js
@@ -16,6 +16,8 @@ describe('modal copy button', () => {
text: 'copy me',
title: 'Copy this value',
},
+ attachToDocument: true,
+ sync: false,
});
});
diff --git a/spec/frontend/vue_shared/components/notes/placeholder_system_note_spec.js b/spec/frontend/vue_shared/components/notes/placeholder_system_note_spec.js
index 976e38c15ee..81c5cd6a057 100644
--- a/spec/frontend/vue_shared/components/notes/placeholder_system_note_spec.js
+++ b/spec/frontend/vue_shared/components/notes/placeholder_system_note_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import placeholderSystemNote from '~/vue_shared/components/notes/placeholder_system_note.vue';
import mountComponent from 'helpers/vue_mount_component_helper';
+import placeholderSystemNote from '~/vue_shared/components/notes/placeholder_system_note.vue';
describe('placeholder system note component', () => {
let PlaceholderSystemNote;
diff --git a/spec/frontend/vue_shared/components/notes/system_note_spec.js b/spec/frontend/vue_shared/components/notes/system_note_spec.js
index c2e8359f78d..603c37c6c49 100644
--- a/spec/frontend/vue_shared/components/notes/system_note_spec.js
+++ b/spec/frontend/vue_shared/components/notes/system_note_spec.js
@@ -1,10 +1,12 @@
-import Vue from 'vue';
-import issueSystemNote from '~/vue_shared/components/notes/system_note.vue';
+import { createLocalVue, mount } from '@vue/test-utils';
+import IssueSystemNote from '~/vue_shared/components/notes/system_note.vue';
import createStore from '~/notes/stores';
import initMRPopovers from '~/mr_popover/index';
jest.mock('~/mr_popover/index', () => jest.fn());
+const localVue = createLocalVue();
+
describe('system note component', () => {
let vm;
let props;
@@ -30,34 +32,36 @@ describe('system note component', () => {
const store = createStore();
store.dispatch('setTargetNoteHash', `note_${props.note.id}`);
- const Component = Vue.extend(issueSystemNote);
- vm = new Component({
+ vm = mount(IssueSystemNote, {
store,
+ localVue,
propsData: props,
- }).$mount();
+ attachToDocument: true,
+ sync: false,
+ });
});
afterEach(() => {
- vm.$destroy();
+ vm.destroy();
});
it('should render a list item with correct id', () => {
- expect(vm.$el.getAttribute('id')).toEqual(`note_${props.note.id}`);
+ expect(vm.attributes('id')).toEqual(`note_${props.note.id}`);
});
it('should render target class is note is target note', () => {
- expect(vm.$el.classList).toContain('target');
+ expect(vm.classes()).toContain('target');
});
it('should render svg icon', () => {
- expect(vm.$el.querySelector('.timeline-icon svg')).toBeDefined();
+ expect(vm.find('.timeline-icon svg').exists()).toBe(true);
});
// Redcarpet Markdown renderer wraps text in `<p>` tags
// we need to strip them because they break layout of commit lists in system notes:
// https://gitlab.com/gitlab-org/gitlab-foss/uploads/b07a10670919254f0220d3ff5c1aa110/jqzI.png
it('removes wrapping paragraph from note HTML', () => {
- expect(vm.$el.querySelector('.system-note-message').innerHTML).toContain('<span>closed</span>');
+ expect(vm.find('.system-note-message').html()).toContain('<span>closed</span>');
});
it('should initMRPopovers onMount', () => {
diff --git a/spec/frontend/vue_shared/components/paginated_list_spec.js b/spec/frontend/vue_shared/components/paginated_list_spec.js
index 31ac362d35f..4e1b29a4d3a 100644
--- a/spec/frontend/vue_shared/components/paginated_list_spec.js
+++ b/spec/frontend/vue_shared/components/paginated_list_spec.js
@@ -1,6 +1,6 @@
+import { mount } from '@vue/test-utils';
import PaginatedList from '~/vue_shared/components/paginated_list.vue';
import { PREV, NEXT } from '~/vue_shared/components/pagination/constants';
-import { mount } from '@vue/test-utils';
describe('Pagination links component', () => {
let wrapper;
@@ -26,6 +26,8 @@ describe('Pagination links component', () => {
list: [{ id: 'foo' }, { id: 'bar' }],
props,
},
+ attachToDocument: true,
+ sync: false,
});
[glPaginatedList] = wrapper.vm.$children;
diff --git a/spec/frontend/vue_shared/components/resizable_chart_container_spec.js b/spec/frontend/vue_shared/components/resizable_chart_container_spec.js
index 8f533e8ab24..552cfade7b6 100644
--- a/spec/frontend/vue_shared/components/resizable_chart_container_spec.js
+++ b/spec/frontend/vue_shared/components/resizable_chart_container_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
import { mount } from '@vue/test-utils';
-import ResizableChartContainer from '~/vue_shared/components/resizable_chart/resizable_chart_container.vue';
import $ from 'jquery';
+import ResizableChartContainer from '~/vue_shared/components/resizable_chart/resizable_chart_container.vue';
jest.mock('~/lib/utils/common_utils', () => ({
debounceByAnimationFrame(callback) {
diff --git a/spec/frontend/vue_shared/components/sidebar/collapsed_calendar_icon_spec.js b/spec/frontend/vue_shared/components/sidebar/collapsed_calendar_icon_spec.js
index 691ebe43d6b..31316a93ecd 100644
--- a/spec/frontend/vue_shared/components/sidebar/collapsed_calendar_icon_spec.js
+++ b/spec/frontend/vue_shared/components/sidebar/collapsed_calendar_icon_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import collapsedCalendarIcon from '~/vue_shared/components/sidebar/collapsed_calendar_icon.vue';
import mountComponent from 'helpers/vue_mount_component_helper';
+import collapsedCalendarIcon from '~/vue_shared/components/sidebar/collapsed_calendar_icon.vue';
describe('collapsedCalendarIcon', () => {
let vm;
diff --git a/spec/frontend/vue_shared/components/sidebar/collapsed_grouped_date_picker_spec.js b/spec/frontend/vue_shared/components/sidebar/collapsed_grouped_date_picker_spec.js
index 062ebfa01c9..65255968bc7 100644
--- a/spec/frontend/vue_shared/components/sidebar/collapsed_grouped_date_picker_spec.js
+++ b/spec/frontend/vue_shared/components/sidebar/collapsed_grouped_date_picker_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import collapsedGroupedDatePicker from '~/vue_shared/components/sidebar/collapsed_grouped_date_picker.vue';
import mountComponent from 'helpers/vue_mount_component_helper';
+import collapsedGroupedDatePicker from '~/vue_shared/components/sidebar/collapsed_grouped_date_picker.vue';
describe('collapsedGroupedDatePicker', () => {
let vm;
diff --git a/spec/frontend/vue_shared/components/sidebar/date_picker_spec.js b/spec/frontend/vue_shared/components/sidebar/date_picker_spec.js
index 5e2bca6efc9..198af09c9f5 100644
--- a/spec/frontend/vue_shared/components/sidebar/date_picker_spec.js
+++ b/spec/frontend/vue_shared/components/sidebar/date_picker_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import sidebarDatePicker from '~/vue_shared/components/sidebar/date_picker.vue';
import mountComponent from 'helpers/vue_mount_component_helper';
+import sidebarDatePicker from '~/vue_shared/components/sidebar/date_picker.vue';
describe('sidebarDatePicker', () => {
let vm;
diff --git a/spec/frontend/vue_shared/components/sidebar/labels_select/base_spec.js b/spec/frontend/vue_shared/components/sidebar/labels_select/base_spec.js
index 6aee616c324..da22034a8db 100644
--- a/spec/frontend/vue_shared/components/sidebar/labels_select/base_spec.js
+++ b/spec/frontend/vue_shared/components/sidebar/labels_select/base_spec.js
@@ -1,22 +1,20 @@
import Vue from 'vue';
+import { shallowMount } from '@vue/test-utils';
import LabelsSelect from '~/labels_select';
-import baseComponent from '~/vue_shared/components/sidebar/labels_select/base.vue';
+import BaseComponent from '~/vue_shared/components/sidebar/labels_select/base.vue';
-import { mount } from '@vue/test-utils';
import {
mockConfig,
mockLabels,
} from '../../../../../javascripts/vue_shared/components/sidebar/labels_select/mock_data';
-const createComponent = (config = mockConfig) => {
- const Component = Vue.extend(baseComponent);
-
- return mount(Component, {
+const createComponent = (config = mockConfig) =>
+ shallowMount(BaseComponent, {
propsData: config,
sync: false,
+ attachToDocument: true,
});
-};
describe('BaseComponent', () => {
let wrapper;
diff --git a/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_button_spec.js b/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_button_spec.js
index bb33dc6ea0f..e2e11c94c0d 100644
--- a/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_button_spec.js
+++ b/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_button_spec.js
@@ -1,8 +1,8 @@
import Vue from 'vue';
+import mountComponent from 'helpers/vue_mount_component_helper';
import dropdownButtonComponent from '~/vue_shared/components/sidebar/labels_select/dropdown_button.vue';
-import mountComponent from 'helpers/vue_mount_component_helper';
import {
mockConfig,
mockLabels,
diff --git a/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_create_label_spec.js b/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_create_label_spec.js
index 1c25d42682c..d0299523137 100644
--- a/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_create_label_spec.js
+++ b/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_create_label_spec.js
@@ -1,8 +1,8 @@
import Vue from 'vue';
+import mountComponent from 'helpers/vue_mount_component_helper';
import dropdownCreateLabelComponent from '~/vue_shared/components/sidebar/labels_select/dropdown_create_label.vue';
-import mountComponent from 'helpers/vue_mount_component_helper';
import { mockSuggestedColors } from '../../../../../javascripts/vue_shared/components/sidebar/labels_select/mock_data';
const createComponent = headerTitle => {
diff --git a/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_footer_spec.js b/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_footer_spec.js
index 989901a0012..784bbaf8e6a 100644
--- a/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_footer_spec.js
+++ b/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_footer_spec.js
@@ -1,8 +1,8 @@
import Vue from 'vue';
+import mountComponent from 'helpers/vue_mount_component_helper';
import dropdownFooterComponent from '~/vue_shared/components/sidebar/labels_select/dropdown_footer.vue';
-import mountComponent from 'helpers/vue_mount_component_helper';
import { mockConfig } from '../../../../../javascripts/vue_shared/components/sidebar/labels_select/mock_data';
const createComponent = (
diff --git a/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_header_spec.js b/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_header_spec.js
index c36a82e1a35..2e721d75b40 100644
--- a/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_header_spec.js
+++ b/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_header_spec.js
@@ -1,8 +1,7 @@
import Vue from 'vue';
-import dropdownHeaderComponent from '~/vue_shared/components/sidebar/labels_select/dropdown_header.vue';
-
import mountComponent from 'helpers/vue_mount_component_helper';
+import dropdownHeaderComponent from '~/vue_shared/components/sidebar/labels_select/dropdown_header.vue';
const createComponent = () => {
const Component = Vue.extend(dropdownHeaderComponent);
diff --git a/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_search_input_spec.js b/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_search_input_spec.js
index 2fffb2e495e..035af946d75 100644
--- a/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_search_input_spec.js
+++ b/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_search_input_spec.js
@@ -1,8 +1,7 @@
import Vue from 'vue';
-import dropdownSearchInputComponent from '~/vue_shared/components/sidebar/labels_select/dropdown_search_input.vue';
-
import mountComponent from 'helpers/vue_mount_component_helper';
+import dropdownSearchInputComponent from '~/vue_shared/components/sidebar/labels_select/dropdown_search_input.vue';
const createComponent = () => {
const Component = Vue.extend(dropdownSearchInputComponent);
diff --git a/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_title_spec.js b/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_title_spec.js
index 1616e657c81..2fffb31acf5 100644
--- a/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_title_spec.js
+++ b/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_title_spec.js
@@ -1,8 +1,7 @@
import Vue from 'vue';
-import dropdownTitleComponent from '~/vue_shared/components/sidebar/labels_select/dropdown_title.vue';
-
import mountComponent from 'helpers/vue_mount_component_helper';
+import dropdownTitleComponent from '~/vue_shared/components/sidebar/labels_select/dropdown_title.vue';
const createComponent = (canEdit = true) => {
const Component = Vue.extend(dropdownTitleComponent);
diff --git a/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_value_collapsed_spec.js b/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_value_collapsed_spec.js
index 517f2c01c46..887c04268d1 100644
--- a/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_value_collapsed_spec.js
+++ b/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_value_collapsed_spec.js
@@ -1,8 +1,8 @@
import Vue from 'vue';
+import mountComponent from 'helpers/vue_mount_component_helper';
import dropdownValueCollapsedComponent from '~/vue_shared/components/sidebar/labels_select/dropdown_value_collapsed.vue';
-import mountComponent from 'helpers/vue_mount_component_helper';
import { mockLabels } from '../../../../../javascripts/vue_shared/components/sidebar/labels_select/mock_data';
const createComponent = (labels = mockLabels) => {
diff --git a/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_value_spec.js b/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_value_spec.js
index ec143fec5d9..52c0298603d 100644
--- a/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_value_spec.js
+++ b/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_value_spec.js
@@ -1,24 +1,31 @@
-import Vue from 'vue';
-import $ from 'jquery';
+import { mount } from '@vue/test-utils';
+import { hexToRgb } from '~/lib/utils/color_utils';
+import DropdownValueComponent from '~/vue_shared/components/sidebar/labels_select/dropdown_value.vue';
+import DropdownValueScopedLabel from '~/vue_shared/components/sidebar/labels_select/dropdown_value_scoped_label.vue';
-import dropdownValueComponent from '~/vue_shared/components/sidebar/labels_select/dropdown_value.vue';
-
-import mountComponent from 'helpers/vue_mount_component_helper';
import {
mockConfig,
mockLabels,
} from '../../../../../javascripts/vue_shared/components/sidebar/labels_select/mock_data';
+const labelStyles = {
+ textColor: '#FFFFFF',
+ color: '#BADA55',
+};
const createComponent = (
labels = mockLabels,
labelFilterBasePath = mockConfig.labelFilterBasePath,
) => {
- const Component = Vue.extend(dropdownValueComponent);
-
- return mountComponent(Component, {
- labels,
- labelFilterBasePath,
- enableScopedLabels: true,
+ labels.forEach(label => Object.assign(label, labelStyles));
+
+ return mount(DropdownValueComponent, {
+ propsData: {
+ labels,
+ labelFilterBasePath,
+ enableScopedLabels: true,
+ },
+ attachToDocument: true,
+ sync: false,
});
};
@@ -30,7 +37,7 @@ describe('DropdownValueComponent', () => {
});
afterEach(() => {
- vm.$destroy();
+ vm.destroy();
});
describe('computed', () => {
@@ -38,12 +45,12 @@ describe('DropdownValueComponent', () => {
it('returns true if `labels` prop is empty', () => {
const vmEmptyLabels = createComponent([]);
- expect(vmEmptyLabels.isEmpty).toBe(true);
- vmEmptyLabels.$destroy();
+ expect(vmEmptyLabels.classes()).not.toContain('has-labels');
+ vmEmptyLabels.destroy();
});
it('returns false if `labels` prop is empty', () => {
- expect(vm.isEmpty).toBe(false);
+ expect(vm.classes()).toContain('has-labels');
});
});
});
@@ -51,88 +58,71 @@ describe('DropdownValueComponent', () => {
describe('methods', () => {
describe('labelFilterUrl', () => {
it('returns URL string starting with labelFilterBasePath and encoded label.title', () => {
- expect(
- vm.labelFilterUrl({
- title: 'Foo bar',
- }),
- ).toBe('/gitlab-org/my-project/issues?label_name[]=Foo%20bar');
+ expect(vm.find(DropdownValueScopedLabel).props('labelFilterUrl')).toBe(
+ '/gitlab-org/my-project/issues?label_name[]=Foo%3A%3ABar',
+ );
});
});
describe('labelStyle', () => {
it('returns object with `color` & `backgroundColor` properties from label.textColor & label.color', () => {
- const label = {
- textColor: '#FFFFFF',
- color: '#BADA55',
- };
- const styleObj = vm.labelStyle(label);
-
- expect(styleObj.color).toBe(label.textColor);
- expect(styleObj.backgroundColor).toBe(label.color);
- });
- });
-
- describe('scopedLabelsDescription', () => {
- it('returns html for tooltip', () => {
- const html = vm.scopedLabelsDescription(mockLabels[1]);
- const $el = $.parseHTML(html);
-
- expect($el[0]).toHaveClass('scoped-label-tooltip-title');
- expect($el[2].textContent).toEqual(mockLabels[1].description);
+ expect(vm.find(DropdownValueScopedLabel).props('labelStyle')).toEqual({
+ color: labelStyles.textColor,
+ backgroundColor: labelStyles.color,
+ });
});
});
describe('showScopedLabels', () => {
it('returns true if the label is scoped label', () => {
- expect(vm.showScopedLabels(mockLabels[1])).toBe(true);
- });
-
- it('returns false when label is a regular label', () => {
- expect(vm.showScopedLabels(mockLabels[0])).toBe(false);
+ expect(vm.findAll(DropdownValueScopedLabel).length).toEqual(1);
});
});
});
describe('template', () => {
it('renders component container element with classes `hide-collapsed value issuable-show-labels`', () => {
- expect(vm.$el.classList.contains('hide-collapsed', 'value', 'issuable-show-labels')).toBe(
- true,
- );
+ expect(vm.classes()).toContain('hide-collapsed', 'value', 'issuable-show-labels');
});
it('render slot content inside component when `labels` prop is empty', () => {
const vmEmptyLabels = createComponent([]);
- expect(vmEmptyLabels.$el.querySelector('.text-secondary').innerText.trim()).toBe(
- mockConfig.emptyValueText,
- );
- vmEmptyLabels.$destroy();
+ expect(
+ vmEmptyLabels
+ .find('.text-secondary')
+ .text()
+ .trim(),
+ ).toBe(mockConfig.emptyValueText);
+ vmEmptyLabels.destroy();
});
it('renders label element with filter URL', () => {
- expect(vm.$el.querySelector('a').getAttribute('href')).toBe(
+ expect(vm.find('a').attributes('href')).toBe(
'/gitlab-org/my-project/issues?label_name[]=Foo%20Label',
);
});
it('renders label element and styles based on label details', () => {
- const labelEl = vm.$el.querySelector('a span.badge.color-label');
+ const labelEl = vm.find('a span.badge.color-label');
- expect(labelEl).not.toBeNull();
- expect(labelEl.getAttribute('style')).toBe('background-color: rgb(186, 218, 85);');
- expect(labelEl.innerText.trim()).toBe(mockLabels[0].title);
+ expect(labelEl.exists()).toBe(true);
+ expect(labelEl.attributes('style')).toContain(
+ `background-color: rgb(${hexToRgb(labelStyles.color).join(', ')});`,
+ );
+ expect(labelEl.text().trim()).toBe(mockLabels[0].title);
});
describe('label is of scoped-label type', () => {
it('renders a scoped-label-wrapper span to incorporate 2 anchors', () => {
- expect(vm.$el.querySelector('span.scoped-label-wrapper')).not.toBeNull();
+ expect(vm.find('span.scoped-label-wrapper').exists()).toBe(true);
});
it('renders anchor tag containing question icon', () => {
- const anchor = vm.$el.querySelector('.scoped-label-wrapper a.scoped-label');
+ const anchor = vm.find('.scoped-label-wrapper a.scoped-label');
- expect(anchor).not.toBeNull();
- expect(anchor.querySelector('i.fa-question-circle')).not.toBeNull();
+ expect(anchor.exists()).toBe(true);
+ expect(anchor.find('i.fa-question-circle').exists()).toBe(true);
});
});
});
diff --git a/spec/frontend/vue_shared/components/sidebar/toggle_sidebar_spec.js b/spec/frontend/vue_shared/components/sidebar/toggle_sidebar_spec.js
index 5cf25ca6f81..4342f5e2105 100644
--- a/spec/frontend/vue_shared/components/sidebar/toggle_sidebar_spec.js
+++ b/spec/frontend/vue_shared/components/sidebar/toggle_sidebar_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import toggleSidebar from '~/vue_shared/components/sidebar/toggle_sidebar.vue';
import mountComponent from 'helpers/vue_mount_component_helper';
+import toggleSidebar from '~/vue_shared/components/sidebar/toggle_sidebar.vue';
describe('toggleSidebar', () => {
let vm;
diff --git a/spec/frontend/vue_shared/components/table_pagination_spec.js b/spec/frontend/vue_shared/components/table_pagination_spec.js
index 0a9ff36b2fb..8105d1fcef3 100644
--- a/spec/frontend/vue_shared/components/table_pagination_spec.js
+++ b/spec/frontend/vue_shared/components/table_pagination_spec.js
@@ -1,5 +1,6 @@
import { shallowMount } from '@vue/test-utils';
import TablePagination from '~/vue_shared/components/pagination/table_pagination.vue';
+import { GlPagination } from '@gitlab/ui';
describe('Pagination component', () => {
let wrapper;
@@ -12,15 +13,6 @@ describe('Pagination component', () => {
});
};
- const findFirstButtonLink = () => wrapper.find('.js-first-button .page-link');
- const findPreviousButton = () => wrapper.find('.js-previous-button');
- const findPreviousButtonLink = () => wrapper.find('.js-previous-button .page-link');
- const findNextButton = () => wrapper.find('.js-next-button');
- const findNextButtonLink = () => wrapper.find('.js-next-button .page-link');
- const findLastButtonLink = () => wrapper.find('.js-last-button .page-link');
- const findPages = () => wrapper.findAll('.page');
- const findSeparator = () => wrapper.find('.separator');
-
beforeEach(() => {
spy = jest.fn();
});
@@ -46,290 +38,54 @@ describe('Pagination component', () => {
expect(wrapper.isEmpty()).toBe(true);
});
- describe('prev button', () => {
- it('should be disabled and non clickable', () => {
- mountComponent({
- pageInfo: {
- nextPage: 2,
- page: 1,
- perPage: 20,
- previousPage: NaN,
- total: 84,
- totalPages: 5,
- },
- change: spy,
- });
-
- expect(findPreviousButton().classes()).toContain('disabled');
- findPreviousButtonLink().trigger('click');
- expect(spy).not.toHaveBeenCalled();
- });
-
- it('should be disabled and non clickable when total and totalPages are NaN', () => {
- mountComponent({
- pageInfo: {
- nextPage: 2,
- page: 1,
- perPage: 20,
- previousPage: NaN,
- total: NaN,
- totalPages: NaN,
- },
- change: spy,
- });
- expect(findPreviousButton().classes()).toContain('disabled');
- findPreviousButtonLink().trigger('click');
- expect(spy).not.toHaveBeenCalled();
- });
-
- it('should be enabled and clickable', () => {
- mountComponent({
- pageInfo: {
- nextPage: 3,
- page: 2,
- perPage: 20,
- previousPage: 1,
- total: 84,
- totalPages: 5,
- },
- change: spy,
- });
- findPreviousButtonLink().trigger('click');
- expect(spy).toHaveBeenCalledWith(1);
- });
-
- it('should be enabled and clickable when total and totalPages are NaN', () => {
- mountComponent({
- pageInfo: {
- nextPage: 3,
- page: 2,
- perPage: 20,
- previousPage: 1,
- total: NaN,
- totalPages: NaN,
- },
- change: spy,
- });
- findPreviousButtonLink().trigger('click');
- expect(spy).toHaveBeenCalledWith(1);
- });
- });
-
- describe('first button', () => {
- it('should call the change callback with the first page', () => {
- mountComponent({
- pageInfo: {
- nextPage: 3,
- page: 2,
- perPage: 20,
- previousPage: 1,
- total: 84,
- totalPages: 5,
- },
- change: spy,
- });
- const button = findFirstButtonLink();
- expect(button.text().trim()).toEqual('« First');
- button.trigger('click');
- expect(spy).toHaveBeenCalledWith(1);
- });
-
- it('should call the change callback with the first page when total and totalPages are NaN', () => {
- mountComponent({
- pageInfo: {
- nextPage: 3,
- page: 2,
- perPage: 20,
- previousPage: 1,
- total: NaN,
- totalPages: NaN,
- },
- change: spy,
- });
- const button = findFirstButtonLink();
- expect(button.text().trim()).toEqual('« First');
- button.trigger('click');
- expect(spy).toHaveBeenCalledWith(1);
- });
- });
-
- describe('last button', () => {
- it('should call the change callback with the last page', () => {
- mountComponent({
- pageInfo: {
- nextPage: 3,
- page: 2,
- perPage: 20,
- previousPage: 1,
- total: 84,
- totalPages: 5,
- },
- change: spy,
- });
- const button = findLastButtonLink();
- expect(button.text().trim()).toEqual('Last »');
- button.trigger('click');
- expect(spy).toHaveBeenCalledWith(5);
- });
-
- it('should not render', () => {
- mountComponent({
- pageInfo: {
- nextPage: 3,
- page: 2,
- perPage: 20,
- previousPage: 1,
- total: NaN,
- totalPages: NaN,
- },
- change: spy,
- });
- expect(findLastButtonLink().exists()).toBe(false);
- });
- });
-
- describe('next button', () => {
- it('should be disabled and non clickable', () => {
- mountComponent({
- pageInfo: {
- nextPage: NaN,
- page: 5,
- perPage: 20,
- previousPage: 4,
- total: 84,
- totalPages: 5,
- },
- change: spy,
- });
- expect(
- findNextButton()
- .text()
- .trim(),
- ).toEqual('Next ›');
- findNextButtonLink().trigger('click');
- expect(spy).not.toHaveBeenCalled();
- });
-
- it('should be disabled and non clickable when total and totalPages are NaN', () => {
- mountComponent({
- pageInfo: {
- nextPage: NaN,
- page: 5,
- perPage: 20,
- previousPage: 4,
- total: NaN,
- totalPages: NaN,
- },
- change: spy,
- });
- expect(
- findNextButton()
- .text()
- .trim(),
- ).toEqual('Next ›');
- findNextButtonLink().trigger('click');
- expect(spy).not.toHaveBeenCalled();
- });
-
- it('should be enabled and clickable', () => {
- mountComponent({
- pageInfo: {
- nextPage: 4,
- page: 3,
- perPage: 20,
- previousPage: 2,
- total: 84,
- totalPages: 5,
- },
- change: spy,
- });
- findNextButtonLink().trigger('click');
- expect(spy).toHaveBeenCalledWith(4);
+ it('renders if there is a next page', () => {
+ mountComponent({
+ pageInfo: {
+ nextPage: 2,
+ page: 1,
+ perPage: 20,
+ previousPage: NaN,
+ total: 15,
+ totalPages: 1,
+ },
+ change: spy,
});
- it('should be enabled and clickable when total and totalPages are NaN', () => {
- mountComponent({
- pageInfo: {
- nextPage: 4,
- page: 3,
- perPage: 20,
- previousPage: 2,
- total: NaN,
- totalPages: NaN,
- },
- change: spy,
- });
- findNextButtonLink().trigger('click');
- expect(spy).toHaveBeenCalledWith(4);
- });
+ expect(wrapper.isEmpty()).toBe(false);
});
- describe('numbered buttons', () => {
- it('should render 5 pages', () => {
- mountComponent({
- pageInfo: {
- nextPage: 4,
- page: 3,
- perPage: 20,
- previousPage: 2,
- total: 84,
- totalPages: 5,
- },
- change: spy,
- });
- expect(findPages().length).toEqual(5);
+ it('renders if there is a prev page', () => {
+ mountComponent({
+ pageInfo: {
+ nextPage: NaN,
+ page: 2,
+ perPage: 20,
+ previousPage: 1,
+ total: 15,
+ totalPages: 1,
+ },
+ change: spy,
});
- it('should not render any page', () => {
- mountComponent({
- pageInfo: {
- nextPage: 4,
- page: 3,
- perPage: 20,
- previousPage: 2,
- total: NaN,
- totalPages: NaN,
- },
- change: spy,
- });
- expect(findPages().length).toEqual(0);
- });
+ expect(wrapper.isEmpty()).toBe(false);
});
+ });
- describe('spread operator', () => {
- it('should render', () => {
- mountComponent({
- pageInfo: {
- nextPage: 4,
- page: 3,
- perPage: 20,
- previousPage: 2,
- total: 84,
- totalPages: 10,
- },
- change: spy,
- });
- expect(
- findSeparator()
- .text()
- .trim(),
- ).toEqual('...');
- });
-
- it('should not render', () => {
- mountComponent({
- pageInfo: {
- nextPage: 4,
- page: 3,
- perPage: 20,
- previousPage: 2,
- total: NaN,
- totalPages: NaN,
- },
- change: spy,
- });
- expect(findSeparator().exists()).toBe(false);
+ describe('events', () => {
+ it('calls change method when page changes', () => {
+ mountComponent({
+ pageInfo: {
+ nextPage: NaN,
+ page: 2,
+ perPage: 20,
+ previousPage: 1,
+ total: 15,
+ totalPages: 1,
+ },
+ change: spy,
});
+ wrapper.find(GlPagination).vm.$emit('input', 3);
+ expect(spy).toHaveBeenCalledWith(3);
});
});
});
diff --git a/spec/frontend/vue_shared/components/time_ago_tooltip_spec.js b/spec/frontend/vue_shared/components/time_ago_tooltip_spec.js
index 536bb57b946..f1f231c1a29 100644
--- a/spec/frontend/vue_shared/components/time_ago_tooltip_spec.js
+++ b/spec/frontend/vue_shared/components/time_ago_tooltip_spec.js
@@ -1,44 +1,40 @@
-import Vue from 'vue';
-import timeagoTooltip from '~/vue_shared/components/time_ago_tooltip.vue';
+import { shallowMount, createLocalVue } from '@vue/test-utils';
+import TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue';
import { formatDate, getTimeago } from '~/lib/utils/datetime_utility';
describe('Time ago with tooltip component', () => {
- let TimeagoTooltip;
let vm;
- beforeEach(() => {
- TimeagoTooltip = Vue.extend(timeagoTooltip);
- });
+ const buildVm = (propsData = {}) => {
+ vm = shallowMount(TimeAgoTooltip, {
+ attachToDocument: true,
+ sync: false,
+ propsData,
+ localVue: createLocalVue(),
+ });
+ };
+ const timestamp = '2017-05-08T14:57:39.781Z';
afterEach(() => {
- vm.$destroy();
+ vm.destroy();
});
it('should render timeago with a bootstrap tooltip', () => {
- vm = new TimeagoTooltip({
- propsData: {
- time: '2017-05-08T14:57:39.781Z',
- },
- }).$mount();
-
- expect(vm.$el.tagName).toEqual('TIME');
- expect(vm.$el.getAttribute('data-original-title')).toEqual(
- formatDate('2017-05-08T14:57:39.781Z'),
- );
-
+ buildVm({
+ time: timestamp,
+ });
const timeago = getTimeago();
- expect(vm.$el.textContent.trim()).toEqual(timeago.format('2017-05-08T14:57:39.781Z'));
+ expect(vm.attributes('data-original-title')).toEqual(formatDate(timestamp));
+ expect(vm.text()).toEqual(timeago.format(timestamp));
});
it('should render provided html class', () => {
- vm = new TimeagoTooltip({
- propsData: {
- time: '2017-05-08T14:57:39.781Z',
- cssClass: 'foo',
- },
- }).$mount();
+ buildVm({
+ time: timestamp,
+ cssClass: 'foo',
+ });
- expect(vm.$el.classList.contains('foo')).toEqual(true);
+ expect(vm.classes()).toContain('foo');
});
});
diff --git a/spec/frontend/vue_shared/components/user_avatar/user_avatar_image_spec.js b/spec/frontend/vue_shared/components/user_avatar/user_avatar_image_spec.js
index 2f87359a4a6..e76b2ca2d65 100644
--- a/spec/frontend/vue_shared/components/user_avatar/user_avatar_image_spec.js
+++ b/spec/frontend/vue_shared/components/user_avatar/user_avatar_image_spec.js
@@ -1,7 +1,7 @@
import { shallowMount } from '@vue/test-utils';
+import defaultAvatarUrl from 'images/no_avatar.png';
import { placeholderImage } from '~/lazy_loader';
import UserAvatarImage from '~/vue_shared/components/user_avatar/user_avatar_image.vue';
-import defaultAvatarUrl from 'images/no_avatar.png';
jest.mock('images/no_avatar.png', () => 'default-avatar-url');
diff --git a/spec/frontend/vue_shared/components/user_avatar/user_avatar_link_spec.js b/spec/frontend/vue_shared/components/user_avatar/user_avatar_link_spec.js
new file mode 100644
index 00000000000..7f5df02d51d
--- /dev/null
+++ b/spec/frontend/vue_shared/components/user_avatar/user_avatar_link_spec.js
@@ -0,0 +1,113 @@
+import _ from 'underscore';
+import { trimText } from 'helpers/text_helper';
+import { shallowMount } from '@vue/test-utils';
+import { GlLink } from '@gitlab/ui';
+import { TEST_HOST } from 'spec/test_constants';
+import UserAvatarLink from '~/vue_shared/components/user_avatar/user_avatar_link.vue';
+import UserAvatarImage from '~/vue_shared/components/user_avatar/user_avatar_image.vue';
+
+describe('User Avatar Link Component', () => {
+ let wrapper;
+
+ const defaultProps = {
+ linkHref: `${TEST_HOST}/myavatarurl.com`,
+ imgSize: 99,
+ imgSrc: `${TEST_HOST}/myavatarurl.com`,
+ imgAlt: 'mydisplayname',
+ imgCssClasses: 'myextraavatarclass',
+ tooltipText: 'tooltip text',
+ tooltipPlacement: 'bottom',
+ username: 'username',
+ };
+
+ const createWrapper = props => {
+ wrapper = shallowMount(UserAvatarLink, {
+ propsData: {
+ ...defaultProps,
+ ...props,
+ },
+ sync: false,
+ attachToDocument: true,
+ });
+ };
+
+ beforeEach(() => {
+ createWrapper();
+ });
+
+ afterEach(() => {
+ wrapper.destroy();
+ wrapper = null;
+ });
+
+ it('should return a defined Vue component', () => {
+ expect(wrapper.isVueInstance()).toBe(true);
+ });
+
+ it('should have user-avatar-image registered as child component', () => {
+ expect(wrapper.vm.$options.components.userAvatarImage).toBeDefined();
+ });
+
+ it('user-avatar-link should have user-avatar-image as child component', () => {
+ expect(wrapper.find(UserAvatarImage).exists()).toBe(true);
+ });
+
+ it('should render GlLink as a child element', () => {
+ const link = wrapper.find(GlLink);
+
+ expect(link.exists()).toBe(true);
+ expect(link.attributes('href')).toBe(defaultProps.linkHref);
+ });
+
+ it('should return necessary props as defined', () => {
+ _.each(defaultProps, (val, key) => {
+ expect(wrapper.vm[key]).toBeDefined();
+ });
+ });
+
+ describe('no username', () => {
+ beforeEach(() => {
+ createWrapper({
+ username: '',
+ });
+ });
+
+ it('should only render image tag in link', () => {
+ const childElements = wrapper.vm.$el.childNodes;
+
+ expect(wrapper.find('img')).not.toBe('null');
+
+ // Vue will render the hidden component as <!---->
+ expect(childElements[1].tagName).toBeUndefined();
+ });
+
+ it('should render avatar image tooltip', () => {
+ expect(wrapper.vm.shouldShowUsername).toBe(false);
+ expect(wrapper.vm.avatarTooltipText).toEqual(defaultProps.tooltipText);
+ });
+ });
+
+ describe('username', () => {
+ it('should not render avatar image tooltip', () => {
+ expect(wrapper.find('.js-user-avatar-image-toolip').exists()).toBe(false);
+ });
+
+ it('should render username prop in <span>', () => {
+ expect(trimText(wrapper.find('.js-user-avatar-link-username').text())).toEqual(
+ defaultProps.username,
+ );
+ });
+
+ it('should render text tooltip for <span>', () => {
+ expect(
+ wrapper.find('.js-user-avatar-link-username').attributes('data-original-title'),
+ ).toEqual(defaultProps.tooltipText);
+ });
+
+ it('should render text tooltip placement for <span>', () => {
+ expect(wrapper.find('.js-user-avatar-link-username').attributes('tooltip-placement')).toBe(
+ defaultProps.tooltipPlacement,
+ );
+ });
+ });
+});
diff --git a/spec/frontend/vue_shared/components/user_popover/user_popover_spec.js b/spec/frontend/vue_shared/components/user_popover/user_popover_spec.js
index fc2eb6329b0..f2e743cc1f6 100644
--- a/spec/frontend/vue_shared/components/user_popover/user_popover_spec.js
+++ b/spec/frontend/vue_shared/components/user_popover/user_popover_spec.js
@@ -1,5 +1,7 @@
+import { GlSkeletonLoading } from '@gitlab/ui';
+import { shallowMount } from '@vue/test-utils';
import UserPopover from '~/vue_shared/components/user_popover/user_popover.vue';
-import { mount } from '@vue/test-utils';
+import Icon from '~/vue_shared/components/icon.vue';
const DEFAULT_PROPS = {
loaded: true,
@@ -29,7 +31,7 @@ describe('User Popover Component', () => {
describe('Empty', () => {
beforeEach(() => {
- wrapper = mount(UserPopover, {
+ wrapper = shallowMount(UserPopover, {
propsData: {
target: document.querySelector('.js-user-link'),
user: {
@@ -41,18 +43,19 @@ describe('User Popover Component', () => {
status: null,
},
},
+ attachToDocument: true,
sync: false,
});
});
it('should return skeleton loaders', () => {
- expect(wrapper.findAll('.animation-container').length).toBe(4);
+ expect(wrapper.find(GlSkeletonLoading).exists()).toBe(true);
});
});
describe('basic data', () => {
it('should show basic fields', () => {
- wrapper = mount(UserPopover, {
+ wrapper = shallowMount(UserPopover, {
propsData: {
...DEFAULT_PROPS,
target: document.querySelector('.js-user-link'),
@@ -66,9 +69,9 @@ describe('User Popover Component', () => {
});
it('shows icon for location', () => {
- const iconEl = wrapper.find('.js-location svg');
+ const iconEl = wrapper.find(Icon);
- expect(iconEl.find('use').element.getAttribute('xlink:href')).toContain('location');
+ expect(iconEl.props('name')).toEqual('location');
});
});
@@ -77,7 +80,7 @@ describe('User Popover Component', () => {
const testProps = Object.assign({}, DEFAULT_PROPS);
testProps.user.bio = 'Engineer';
- wrapper = mount(UserPopover, {
+ wrapper = shallowMount(UserPopover, {
propsData: {
...testProps,
target: document.querySelector('.js-user-link'),
@@ -92,7 +95,7 @@ describe('User Popover Component', () => {
const testProps = Object.assign({}, DEFAULT_PROPS);
testProps.user.organization = 'GitLab';
- wrapper = mount(UserPopover, {
+ wrapper = shallowMount(UserPopover, {
propsData: {
...testProps,
target: document.querySelector('.js-user-link'),
@@ -108,7 +111,7 @@ describe('User Popover Component', () => {
testProps.user.bio = 'Engineer';
testProps.user.organization = 'GitLab';
- wrapper = mount(UserPopover, {
+ wrapper = shallowMount(UserPopover, {
propsData: {
...DEFAULT_PROPS,
target: document.querySelector('.js-user-link'),
@@ -125,7 +128,7 @@ describe('User Popover Component', () => {
testProps.user.bio = 'Manager & Team Lead';
testProps.user.organization = 'Me & my <funky> Company';
- wrapper = mount(UserPopover, {
+ wrapper = shallowMount(UserPopover, {
propsData: {
...DEFAULT_PROPS,
target: document.querySelector('.js-user-link'),
@@ -138,15 +141,13 @@ describe('User Popover Component', () => {
});
it('shows icon for bio', () => {
- const iconEl = wrapper.find('.js-bio svg');
-
- expect(iconEl.find('use').element.getAttribute('xlink:href')).toContain('profile');
+ expect(wrapper.findAll(Icon).filter(icon => icon.props('name') === 'profile').length).toEqual(
+ 1,
+ );
});
it('shows icon for organization', () => {
- const iconEl = wrapper.find('.js-organization svg');
-
- expect(iconEl.find('use').element.getAttribute('xlink:href')).toContain('work');
+ expect(wrapper.findAll(Icon).filter(icon => icon.props('name') === 'work').length).toEqual(1);
});
});
@@ -155,7 +156,7 @@ describe('User Popover Component', () => {
const testProps = Object.assign({}, DEFAULT_PROPS);
testProps.user.status = { message_html: 'Hello World' };
- wrapper = mount(UserPopover, {
+ wrapper = shallowMount(UserPopover, {
propsData: {
...DEFAULT_PROPS,
target: document.querySelector('.js-user-link'),
@@ -170,7 +171,7 @@ describe('User Popover Component', () => {
const testProps = Object.assign({}, DEFAULT_PROPS);
testProps.user.status = { emoji: 'basketball_player', message_html: 'Hello World' };
- wrapper = mount(UserPopover, {
+ wrapper = shallowMount(UserPopover, {
propsData: {
...DEFAULT_PROPS,
target: document.querySelector('.js-user-link'),
diff --git a/spec/graphql/mutations/concerns/mutations/resolves_group_spec.rb b/spec/graphql/mutations/concerns/mutations/resolves_group_spec.rb
index 897b8f4e9ef..fcc717f83a2 100644
--- a/spec/graphql/mutations/concerns/mutations/resolves_group_spec.rb
+++ b/spec/graphql/mutations/concerns/mutations/resolves_group_spec.rb
@@ -10,6 +10,7 @@ describe Mutations::ResolvesGroup do
end
let(:context) { double }
+
subject(:mutation) { mutation_class.new(object: nil, context: context) }
it 'uses the GroupsResolver to resolve groups by path' do
diff --git a/spec/graphql/mutations/concerns/mutations/resolves_project_spec.rb b/spec/graphql/mutations/concerns/mutations/resolves_project_spec.rb
index 09d1f66a2c7..918e5fb016e 100644
--- a/spec/graphql/mutations/concerns/mutations/resolves_project_spec.rb
+++ b/spec/graphql/mutations/concerns/mutations/resolves_project_spec.rb
@@ -10,6 +10,7 @@ describe Mutations::ResolvesProject do
end
let(:context) { double }
+
subject(:mutation) { mutation_class.new(object: nil, context: context) }
it 'uses the ProjectsResolver to resolve projects by path' do
diff --git a/spec/graphql/mutations/issues/set_confidential_spec.rb b/spec/graphql/mutations/issues/set_confidential_spec.rb
new file mode 100644
index 00000000000..a8f1fcdf7f1
--- /dev/null
+++ b/spec/graphql/mutations/issues/set_confidential_spec.rb
@@ -0,0 +1,41 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Mutations::Issues::SetConfidential do
+ let(:issue) { create(:issue) }
+ let(:user) { create(:user) }
+
+ subject(:mutation) { described_class.new(object: nil, context: { current_user: user }) }
+
+ describe '#resolve' do
+ let(:confidential) { true }
+ let(:mutated_issue) { subject[:issue] }
+
+ subject { mutation.resolve(project_path: issue.project.full_path, iid: issue.iid, confidential: confidential) }
+
+ it 'raises an error if the resource is not accessible to the user' do
+ expect { subject }.to raise_error(Gitlab::Graphql::Errors::ResourceNotAvailable)
+ end
+
+ context 'when the user can update the issue' do
+ before do
+ issue.project.add_developer(user)
+ end
+
+ it 'returns the issue as confidential' do
+ expect(mutated_issue).to eq(issue)
+ expect(mutated_issue.confidential).to be_truthy
+ expect(subject[:errors]).to be_empty
+ end
+
+ context 'when passing confidential as false' do
+ let(:confidential) { false }
+
+ it 'updates the issue confidentiality to false' do
+ expect(mutated_issue.confidential).to be_falsey
+ end
+ end
+ end
+ end
+end
diff --git a/spec/graphql/mutations/issues/set_due_date_spec.rb b/spec/graphql/mutations/issues/set_due_date_spec.rb
new file mode 100644
index 00000000000..b45a7b460cd
--- /dev/null
+++ b/spec/graphql/mutations/issues/set_due_date_spec.rb
@@ -0,0 +1,41 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Mutations::Issues::SetDueDate do
+ let(:issue) { create(:issue) }
+ let(:user) { create(:user) }
+
+ subject(:mutation) { described_class.new(object: nil, context: { current_user: user }) }
+
+ describe '#resolve' do
+ let(:due_date) { 2.days.since }
+ let(:mutated_issue) { subject[:issue] }
+
+ subject { mutation.resolve(project_path: issue.project.full_path, iid: issue.iid, due_date: due_date) }
+
+ it 'raises an error if the resource is not accessible to the user' do
+ expect { subject }.to raise_error(Gitlab::Graphql::Errors::ResourceNotAvailable)
+ end
+
+ context 'when the user can update the issue' do
+ before do
+ issue.project.add_developer(user)
+ end
+
+ it 'returns the issue with updated due date' do
+ expect(mutated_issue).to eq(issue)
+ expect(mutated_issue.due_date).to eq(Date.today + 2.days)
+ expect(subject[:errors]).to be_empty
+ end
+
+ context 'when passing incorrect due date value' do
+ let(:due_date) { 'test' }
+
+ it 'does not update due date' do
+ expect(mutated_issue.due_date).to eq(issue.due_date)
+ end
+ end
+ end
+ end
+end
diff --git a/spec/graphql/mutations/merge_requests/set_assignees_spec.rb b/spec/graphql/mutations/merge_requests/set_assignees_spec.rb
index e8da0e25b7d..2033ab57a0d 100644
--- a/spec/graphql/mutations/merge_requests/set_assignees_spec.rb
+++ b/spec/graphql/mutations/merge_requests/set_assignees_spec.rb
@@ -5,6 +5,7 @@ require 'spec_helper'
describe Mutations::MergeRequests::SetAssignees do
let(:merge_request) { create(:merge_request) }
let(:user) { create(:user) }
+
subject(:mutation) { described_class.new(object: nil, context: { current_user: user }) }
describe '#resolve' do
@@ -12,6 +13,7 @@ describe Mutations::MergeRequests::SetAssignees do
let(:assignee2) { create(:user) }
let(:assignee_usernames) { [assignee.username] }
let(:mutated_merge_request) { subject[:merge_request] }
+
subject { mutation.resolve(project_path: merge_request.project.full_path, iid: merge_request.iid, assignee_usernames: assignee_usernames) }
before do
diff --git a/spec/graphql/mutations/merge_requests/set_labels_spec.rb b/spec/graphql/mutations/merge_requests/set_labels_spec.rb
index 3729251bab7..f7c04a57f68 100644
--- a/spec/graphql/mutations/merge_requests/set_labels_spec.rb
+++ b/spec/graphql/mutations/merge_requests/set_labels_spec.rb
@@ -5,6 +5,7 @@ require 'spec_helper'
describe Mutations::MergeRequests::SetLabels do
let(:merge_request) { create(:merge_request) }
let(:user) { create(:user) }
+
subject(:mutation) { described_class.new(object: nil, context: { current_user: user }) }
describe '#resolve' do
@@ -12,6 +13,7 @@ describe Mutations::MergeRequests::SetLabels do
let(:label2) { create(:label, project: merge_request.project) }
let(:label_ids) { [label.to_global_id] }
let(:mutated_merge_request) { subject[:merge_request] }
+
subject { mutation.resolve(project_path: merge_request.project.full_path, iid: merge_request.iid, label_ids: label_ids) }
it 'raises an error if the resource is not accessible to the user' do
diff --git a/spec/graphql/mutations/merge_requests/set_locked_spec.rb b/spec/graphql/mutations/merge_requests/set_locked_spec.rb
index 51249854378..d35430abff1 100644
--- a/spec/graphql/mutations/merge_requests/set_locked_spec.rb
+++ b/spec/graphql/mutations/merge_requests/set_locked_spec.rb
@@ -5,11 +5,13 @@ require 'spec_helper'
describe Mutations::MergeRequests::SetLocked do
let(:merge_request) { create(:merge_request) }
let(:user) { create(:user) }
+
subject(:mutation) { described_class.new(object: nil, context: { current_user: user }) }
describe '#resolve' do
let(:locked) { true }
let(:mutated_merge_request) { subject[:merge_request] }
+
subject { mutation.resolve(project_path: merge_request.project.full_path, iid: merge_request.iid, locked: locked) }
it 'raises an error if the resource is not accessible to the user' do
diff --git a/spec/graphql/mutations/merge_requests/set_milestone_spec.rb b/spec/graphql/mutations/merge_requests/set_milestone_spec.rb
index c2792a4bc25..d79b0a995d7 100644
--- a/spec/graphql/mutations/merge_requests/set_milestone_spec.rb
+++ b/spec/graphql/mutations/merge_requests/set_milestone_spec.rb
@@ -5,11 +5,13 @@ require 'spec_helper'
describe Mutations::MergeRequests::SetMilestone do
let(:merge_request) { create(:merge_request) }
let(:user) { create(:user) }
+
subject(:mutation) { described_class.new(object: nil, context: { current_user: user }) }
describe '#resolve' do
let(:milestone) { create(:milestone, project: merge_request.project) }
let(:mutated_merge_request) { subject[:merge_request] }
+
subject { mutation.resolve(project_path: merge_request.project.full_path, iid: merge_request.iid, milestone: milestone) }
it 'raises an error if the resource is not accessible to the user' do
diff --git a/spec/graphql/mutations/merge_requests/set_subscription_spec.rb b/spec/graphql/mutations/merge_requests/set_subscription_spec.rb
index 116a77abcc0..286de6c0c97 100644
--- a/spec/graphql/mutations/merge_requests/set_subscription_spec.rb
+++ b/spec/graphql/mutations/merge_requests/set_subscription_spec.rb
@@ -6,11 +6,13 @@ describe Mutations::MergeRequests::SetSubscription do
let(:merge_request) { create(:merge_request) }
let(:project) { merge_request.project }
let(:user) { create(:user) }
+
subject(:mutation) { described_class.new(object: nil, context: { current_user: user }) }
describe '#resolve' do
let(:subscribe) { true }
let(:mutated_merge_request) { subject[:merge_request] }
+
subject { mutation.resolve(project_path: merge_request.project.full_path, iid: merge_request.iid, subscribed_state: subscribe) }
it 'raises an error if the resource is not accessible to the user' do
diff --git a/spec/graphql/mutations/merge_requests/set_wip_spec.rb b/spec/graphql/mutations/merge_requests/set_wip_spec.rb
index c4accab9e46..490994c4577 100644
--- a/spec/graphql/mutations/merge_requests/set_wip_spec.rb
+++ b/spec/graphql/mutations/merge_requests/set_wip_spec.rb
@@ -5,11 +5,13 @@ require 'spec_helper'
describe Mutations::MergeRequests::SetWip do
let(:merge_request) { create(:merge_request) }
let(:user) { create(:user) }
+
subject(:mutation) { described_class.new(object: nil, context: { current_user: user }) }
describe '#resolve' do
let(:wip) { true }
let(:mutated_merge_request) { subject[:merge_request] }
+
subject { mutation.resolve(project_path: merge_request.project.full_path, iid: merge_request.iid, wip: wip) }
it 'raises an error if the resource is not accessible to the user' do
diff --git a/spec/graphql/mutations/todos/mark_all_done_spec.rb b/spec/graphql/mutations/todos/mark_all_done_spec.rb
new file mode 100644
index 00000000000..cce69d0dcdc
--- /dev/null
+++ b/spec/graphql/mutations/todos/mark_all_done_spec.rb
@@ -0,0 +1,53 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Mutations::Todos::MarkAllDone do
+ include GraphqlHelpers
+
+ let_it_be(:current_user) { create(:user) }
+ let_it_be(:author) { create(:user) }
+ let_it_be(:other_user) { create(:user) }
+
+ let_it_be(:todo1) { create(:todo, user: current_user, author: author, state: :pending) }
+ let_it_be(:todo2) { create(:todo, user: current_user, author: author, state: :done) }
+ let_it_be(:todo3) { create(:todo, user: current_user, author: author, state: :pending) }
+
+ let_it_be(:other_user_todo) { create(:todo, user: other_user, author: author, state: :pending) }
+
+ let_it_be(:user3) { create(:user) }
+
+ describe '#resolve' do
+ it 'marks all pending todos as done' do
+ updated_todo_ids = mutation_for(current_user).resolve.dig(:updated_ids)
+
+ expect(todo1.reload.state).to eq('done')
+ expect(todo2.reload.state).to eq('done')
+ expect(todo3.reload.state).to eq('done')
+ expect(other_user_todo.reload.state).to eq('pending')
+
+ expect(updated_todo_ids).to contain_exactly(global_id_of(todo1), global_id_of(todo3))
+ end
+
+ it 'behaves as expected if there are no todos for the requesting user' do
+ updated_todo_ids = mutation_for(user3).resolve.dig(:updated_ids)
+
+ expect(todo1.reload.state).to eq('pending')
+ expect(todo2.reload.state).to eq('done')
+ expect(todo3.reload.state).to eq('pending')
+ expect(other_user_todo.reload.state).to eq('pending')
+
+ expect(updated_todo_ids).to be_empty
+ end
+
+ context 'when user is not logged in' do
+ it 'fails with the expected error' do
+ expect { mutation_for(nil).resolve }.to raise_error(Gitlab::Graphql::Errors::ResourceNotAvailable)
+ end
+ end
+ end
+
+ def mutation_for(user)
+ described_class.new(object: nil, context: { current_user: user })
+ end
+end
diff --git a/spec/graphql/mutations/todos/mark_done_spec.rb b/spec/graphql/mutations/todos/mark_done_spec.rb
index 761b153d5d1..ff61ef76db6 100644
--- a/spec/graphql/mutations/todos/mark_done_spec.rb
+++ b/spec/graphql/mutations/todos/mark_done_spec.rb
@@ -3,6 +3,8 @@
require 'spec_helper'
describe Mutations::Todos::MarkDone do
+ include GraphqlHelpers
+
let_it_be(:current_user) { create(:user) }
let_it_be(:author) { create(:user) }
let_it_be(:other_user) { create(:user) }
@@ -59,8 +61,4 @@ describe Mutations::Todos::MarkDone do
def mark_done_mutation(todo)
mutation.resolve(id: global_id_of(todo))
end
-
- def global_id_of(todo)
- todo.to_global_id.to_s
- end
end
diff --git a/spec/graphql/mutations/todos/restore_spec.rb b/spec/graphql/mutations/todos/restore_spec.rb
new file mode 100644
index 00000000000..76a2d4ffffd
--- /dev/null
+++ b/spec/graphql/mutations/todos/restore_spec.rb
@@ -0,0 +1,66 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Mutations::Todos::Restore do
+ let_it_be(:current_user) { create(:user) }
+ let_it_be(:author) { create(:user) }
+ let_it_be(:other_user) { create(:user) }
+
+ let_it_be(:todo1) { create(:todo, user: current_user, author: author, state: :done) }
+ let_it_be(:todo2) { create(:todo, user: current_user, author: author, state: :pending) }
+
+ let_it_be(:other_user_todo) { create(:todo, user: other_user, author: author, state: :done) }
+
+ let(:mutation) { described_class.new(object: nil, context: { current_user: current_user }) }
+
+ describe '#resolve' do
+ it 'restores a single todo' do
+ result = restore_mutation(todo1)
+
+ expect(todo1.reload.state).to eq('pending')
+ expect(todo2.reload.state).to eq('pending')
+ expect(other_user_todo.reload.state).to eq('done')
+
+ todo = result[:todo]
+ expect(todo.id).to eq(todo1.id)
+ expect(todo.state).to eq('pending')
+ end
+
+ it 'handles a todo which is already pending as expected' do
+ result = restore_mutation(todo2)
+
+ expect(todo1.reload.state).to eq('done')
+ expect(todo2.reload.state).to eq('pending')
+ expect(other_user_todo.reload.state).to eq('done')
+
+ todo = result[:todo]
+ expect(todo.id).to eq(todo2.id)
+ expect(todo.state).to eq('pending')
+ end
+
+ it 'ignores requests for todos which do not belong to the current user' do
+ expect { restore_mutation(other_user_todo) }.to raise_error(Gitlab::Graphql::Errors::ResourceNotAvailable)
+
+ expect(todo1.reload.state).to eq('done')
+ expect(todo2.reload.state).to eq('pending')
+ expect(other_user_todo.reload.state).to eq('done')
+ end
+
+ it 'ignores invalid GIDs' do
+ expect { mutation.resolve(id: 'invalid_gid') }.to raise_error(Gitlab::Graphql::Errors::ArgumentError)
+
+ expect(todo1.reload.state).to eq('done')
+ expect(todo2.reload.state).to eq('pending')
+ expect(other_user_todo.reload.state).to eq('done')
+ end
+ end
+
+ def restore_mutation(todo)
+ mutation.resolve(id: global_id_of(todo))
+ end
+
+ def global_id_of(todo)
+ todo.to_global_id.to_s
+ end
+end
diff --git a/spec/graphql/resolvers/base_resolver_spec.rb b/spec/graphql/resolvers/base_resolver_spec.rb
index a212bd07f35..0a21b2797ee 100644
--- a/spec/graphql/resolvers/base_resolver_spec.rb
+++ b/spec/graphql/resolvers/base_resolver_spec.rb
@@ -8,8 +8,12 @@ describe Resolvers::BaseResolver do
let(:resolver) do
Class.new(described_class) do
def resolve(**args)
+ process(object)
+
[args, args]
end
+
+ def process(obj); end
end
end
@@ -69,4 +73,26 @@ describe Resolvers::BaseResolver do
expect(field.to_graphql.complexity.call({}, { sort: 'foo', iids: [1, 2, 3] }, 1)).to eq 3
end
end
+
+ describe '#object' do
+ let_it_be(:user) { create(:user) }
+
+ it 'returns object' do
+ expect_next_instance_of(resolver) do |r|
+ expect(r).to receive(:process).with(user)
+ end
+
+ resolve(resolver, obj: user)
+ end
+
+ context 'when object is a presenter' do
+ it 'returns presented object' do
+ expect_next_instance_of(resolver) do |r|
+ expect(r).to receive(:process).with(user)
+ end
+
+ resolve(resolver, obj: UserPresenter.new(user))
+ end
+ end
+ end
end
diff --git a/spec/graphql/resolvers/concerns/resolves_pipelines_spec.rb b/spec/graphql/resolvers/concerns/resolves_pipelines_spec.rb
index fa031af4013..b59561ebdd4 100644
--- a/spec/graphql/resolvers/concerns/resolves_pipelines_spec.rb
+++ b/spec/graphql/resolvers/concerns/resolves_pipelines_spec.rb
@@ -16,6 +16,7 @@ describe ResolvesPipelines do
end
let(:current_user) { create(:user) }
+
set(:project) { create(:project, :private) }
set(:pipeline) { create(:ci_pipeline, project: project) }
set(:failed_pipeline) { create(:ci_pipeline, :failed, project: project) }
diff --git a/spec/graphql/resolvers/error_tracking/sentry_detailed_error_resolver_spec.rb b/spec/graphql/resolvers/error_tracking/sentry_detailed_error_resolver_spec.rb
new file mode 100644
index 00000000000..4490b54d1f7
--- /dev/null
+++ b/spec/graphql/resolvers/error_tracking/sentry_detailed_error_resolver_spec.rb
@@ -0,0 +1,63 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Resolvers::ErrorTracking::SentryDetailedErrorResolver do
+ include GraphqlHelpers
+
+ let_it_be(:project) { create(:project) }
+ let_it_be(:current_user) { create(:user) }
+
+ let(:issue_details_service) { spy('ErrorTracking::IssueDetailsService') }
+
+ before do
+ project.add_developer(current_user)
+
+ allow(ErrorTracking::IssueDetailsService)
+ .to receive(:new)
+ .and_return issue_details_service
+ end
+
+ describe '#resolve' do
+ let(:args) { { id: issue_global_id(1234) } }
+
+ it 'fetches the data via the sentry API' do
+ resolve_error(args)
+
+ expect(issue_details_service).to have_received(:execute)
+ end
+
+ context 'error matched' do
+ let(:detailed_error) { build(:detailed_error_tracking_error) }
+
+ before do
+ allow(issue_details_service).to receive(:execute)
+ .and_return({ issue: detailed_error })
+ end
+
+ it 'resolves to a detailed error' do
+ expect(resolve_error(args)).to eq detailed_error
+ end
+
+ it 'assigns the gitlab project' do
+ expect(resolve_error(args).gitlab_project).to eq project
+ end
+ end
+
+ it 'resolves to nil if no match' do
+ allow(issue_details_service).to receive(:execute)
+ .and_return({ issue: nil })
+
+ result = resolve_error(args)
+ expect(result).to eq nil
+ end
+ end
+
+ def resolve_error(args = {}, context = { current_user: current_user })
+ resolve(described_class, obj: project, args: args, ctx: context)
+ end
+
+ def issue_global_id(issue_id)
+ Gitlab::ErrorTracking::DetailedError.new(id: issue_id).to_global_id.to_s
+ end
+end
diff --git a/spec/graphql/resolvers/issues_resolver_spec.rb b/spec/graphql/resolvers/issues_resolver_spec.rb
index bf9106643eb..9e75a6cad60 100644
--- a/spec/graphql/resolvers/issues_resolver_spec.rb
+++ b/spec/graphql/resolvers/issues_resolver_spec.rb
@@ -68,8 +68,22 @@ describe Resolvers::IssuesResolver do
end
end
- it 'searches issues' do
- expect(resolve_issues(search: 'foo')).to contain_exactly(issue2)
+ context 'when searching issues' do
+ it 'returns correct issues' do
+ expect(resolve_issues(search: 'foo')).to contain_exactly(issue2)
+ end
+
+ it 'uses project search optimization' do
+ expected_arguments = {
+ search: 'foo',
+ attempt_project_search_optimizations: true,
+ iids: [],
+ project_id: project.id
+ }
+ expect(IssuesFinder).to receive(:new).with(anything, expected_arguments).and_call_original
+
+ resolve_issues(search: 'foo')
+ end
end
describe 'sorting' do
diff --git a/spec/graphql/resolvers/projects/snippets_resolver_spec.rb b/spec/graphql/resolvers/projects/snippets_resolver_spec.rb
new file mode 100644
index 00000000000..eef891bf984
--- /dev/null
+++ b/spec/graphql/resolvers/projects/snippets_resolver_spec.rb
@@ -0,0 +1,83 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Resolvers::Projects::SnippetsResolver do
+ include GraphqlHelpers
+
+ describe '#resolve' do
+ let_it_be(:current_user) { create(:user) }
+ let_it_be(:other_user) { create(:user) }
+ let_it_be(:project) { create(:project) }
+
+ let_it_be(:personal_snippet) { create(:personal_snippet, :private, author: current_user) }
+ let_it_be(:project_snippet) { create(:project_snippet, :internal, author: current_user, project: project) }
+ let_it_be(:other_project_snippet) { create(:project_snippet, :public, author: other_user, project: project) }
+
+ before do
+ project.add_developer(current_user)
+ end
+
+ it 'calls SnippetsFinder' do
+ expect_next_instance_of(SnippetsFinder) do |finder|
+ expect(finder).to receive(:execute)
+ end
+
+ resolve_snippets
+ end
+
+ context 'when using no filter' do
+ it 'returns expected snippets' do
+ expect(resolve_snippets).to contain_exactly(project_snippet, other_project_snippet)
+ end
+ end
+
+ context 'when using filters' do
+ it 'returns the snippets by visibility' do
+ aggregate_failures do
+ expect(resolve_snippets(args: { visibility: 'are_private' })).to be_empty
+ expect(resolve_snippets(args: { visibility: 'are_internal' })).to contain_exactly(project_snippet)
+ expect(resolve_snippets(args: { visibility: 'are_public' })).to contain_exactly(other_project_snippet)
+ end
+ end
+
+ it 'returns the snippets by gid' do
+ snippets = resolve_snippets(args: { ids: project_snippet.to_global_id })
+
+ expect(snippets).to contain_exactly(project_snippet)
+ end
+
+ it 'returns the snippets by array of gid' do
+ args = {
+ ids: [project_snippet.to_global_id, other_project_snippet.to_global_id]
+ }
+
+ snippets = resolve_snippets(args: args)
+
+ expect(snippets).to contain_exactly(project_snippet, other_project_snippet)
+ end
+
+ it 'returns an error if the gid is invalid' do
+ expect do
+ resolve_snippets(args: { ids: 'foo' })
+ end.to raise_error(Gitlab::Graphql::Errors::ArgumentError)
+ end
+ end
+
+ context 'when no project is provided' do
+ it 'returns no snippets' do
+ expect(resolve_snippets(obj: nil)).to be_empty
+ end
+ end
+
+ context 'when provided user is not current user' do
+ it 'returns no snippets' do
+ expect(resolve_snippets(context: { current_user: other_user }, args: { ids: project_snippet.to_global_id })).to be_empty
+ end
+ end
+ end
+
+ def resolve_snippets(args: {}, context: { current_user: current_user }, obj: project)
+ resolve(described_class, obj: obj, args: args, ctx: context)
+ end
+end
diff --git a/spec/graphql/resolvers/snippets_resolver_spec.rb b/spec/graphql/resolvers/snippets_resolver_spec.rb
new file mode 100644
index 00000000000..89c350020f0
--- /dev/null
+++ b/spec/graphql/resolvers/snippets_resolver_spec.rb
@@ -0,0 +1,128 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Resolvers::SnippetsResolver do
+ include GraphqlHelpers
+
+ describe '#resolve' do
+ let_it_be(:current_user) { create(:user) }
+ let_it_be(:other_user) { create(:user) }
+ let_it_be(:project) { create(:project) }
+
+ let_it_be(:personal_snippet) { create(:personal_snippet, :private, author: current_user) }
+ let_it_be(:other_personal_snippet) { create(:personal_snippet, :internal, author: other_user) }
+ let_it_be(:project_snippet) { create(:project_snippet, :internal, author: current_user, project: project) }
+ let_it_be(:other_project_snippet) { create(:project_snippet, :public, author: other_user, project: project) }
+
+ before do
+ project.add_developer(current_user)
+ end
+
+ it 'calls SnippetsFinder' do
+ expect_next_instance_of(SnippetsFinder) do |finder|
+ expect(finder).to receive(:execute)
+ end
+
+ resolve_snippets
+ end
+
+ context 'when using no filter' do
+ it 'returns expected snippets' do
+ expect(resolve_snippets).to contain_exactly(personal_snippet, other_personal_snippet, project_snippet, other_project_snippet)
+ end
+ end
+
+ context 'when using filters' do
+ context 'by author id' do
+ it 'returns the snippets' do
+ snippets = resolve_snippets(args: { author_id: current_user.to_global_id })
+
+ expect(snippets).to contain_exactly(personal_snippet, project_snippet)
+ end
+
+ it 'returns an error if the param id is invalid' do
+ expect do
+ resolve_snippets(args: { author_id: 'foo' })
+ end.to raise_error(Gitlab::Graphql::Errors::ArgumentError)
+ end
+ end
+
+ it 'returns the snippets by type' do
+ aggregate_failures do
+ expect(resolve_snippets(args: { type: 'personal' })).to contain_exactly(personal_snippet, other_personal_snippet)
+ expect(resolve_snippets(args: { type: 'project' })).to contain_exactly(project_snippet, other_project_snippet)
+ end
+ end
+
+ context 'by project id' do
+ it 'returns the snippets' do
+ snippets = resolve_snippets(args: { project_id: project.to_global_id })
+
+ expect(snippets).to contain_exactly(project_snippet, other_project_snippet)
+ end
+
+ it 'returns an error if the param id is invalid' do
+ expect do
+ resolve_snippets(args: { project_id: 'foo' })
+ end.to raise_error(Gitlab::Graphql::Errors::ArgumentError)
+ end
+ end
+
+ it 'returns the snippets by visibility' do
+ aggregate_failures do
+ expect(resolve_snippets(args: { visibility: 'are_private' })).to contain_exactly(personal_snippet)
+ expect(resolve_snippets(args: { visibility: 'are_internal' })).to contain_exactly(project_snippet, other_personal_snippet)
+ expect(resolve_snippets(args: { visibility: 'are_public' })).to contain_exactly(other_project_snippet)
+ end
+ end
+
+ it 'returns snippets to explore' do
+ snippets = resolve_snippets(args: { explore: true })
+
+ expect(snippets).to contain_exactly(other_personal_snippet)
+ end
+
+ it 'returns the snippets by single gid' do
+ snippets = resolve_snippets(args: { ids: personal_snippet.to_global_id })
+
+ expect(snippets).to contain_exactly(personal_snippet)
+ end
+
+ it 'returns the snippets by array of gid' do
+ args = {
+ ids: [personal_snippet.to_global_id, project_snippet.to_global_id]
+ }
+
+ snippets = resolve_snippets(args: args)
+
+ expect(snippets).to contain_exactly(personal_snippet, project_snippet)
+ end
+
+ it 'returns an error if the gid is invalid' do
+ args = {
+ ids: [personal_snippet.to_global_id, 'foo']
+ }
+
+ expect do
+ resolve_snippets(args: args)
+ end.to raise_error(Gitlab::Graphql::Errors::ArgumentError)
+ end
+
+ it 'returns an error if both project and author are provided' do
+ expect do
+ args = {
+ author_id: current_user.to_global_id,
+ project_id: project.to_global_id
+ }
+
+ resolve_snippets(args: args)
+ end.to raise_error(Gitlab::Graphql::Errors::ArgumentError)
+ end
+ end
+ end
+
+ def resolve_snippets(args: {})
+ resolve(described_class, obj: nil, args: args, ctx: { current_user: current_user })
+ end
+end
diff --git a/spec/graphql/resolvers/todo_resolver_spec.rb b/spec/graphql/resolvers/todo_resolver_spec.rb
index fef761d7243..5a09ec40e64 100644
--- a/spec/graphql/resolvers/todo_resolver_spec.rb
+++ b/spec/graphql/resolvers/todo_resolver_spec.rb
@@ -7,13 +7,12 @@ describe Resolvers::TodoResolver do
describe '#resolve' do
let_it_be(:current_user) { create(:user) }
- let_it_be(:user) { create(:user) }
let_it_be(:author1) { create(:user) }
let_it_be(:author2) { create(:user) }
- let_it_be(:todo1) { create(:todo, user: user, target_type: 'MergeRequest', state: :pending, action: Todo::MENTIONED, author: author1) }
- let_it_be(:todo2) { create(:todo, user: user, state: :done, action: Todo::ASSIGNED, author: author2) }
- let_it_be(:todo3) { create(:todo, user: user, state: :pending, action: Todo::ASSIGNED, author: author1) }
+ let_it_be(:todo1) { create(:todo, user: current_user, target_type: 'MergeRequest', state: :pending, action: Todo::MENTIONED, author: author1) }
+ let_it_be(:todo2) { create(:todo, user: current_user, state: :done, action: Todo::ASSIGNED, author: author2) }
+ let_it_be(:todo3) { create(:todo, user: current_user, state: :pending, action: Todo::ASSIGNED, author: author1) }
it 'calls TodosFinder' do
expect_next_instance_of(TodosFinder) do |finder|
@@ -25,68 +24,71 @@ describe Resolvers::TodoResolver do
context 'when using no filter' do
it 'returns expected todos' do
- todos = resolve(described_class, obj: user, args: {}, ctx: { current_user: user })
-
- expect(todos).to contain_exactly(todo1, todo3)
+ expect(resolve_todos).to contain_exactly(todo1, todo3)
end
end
context 'when using filters' do
- # TODO These can be removed as soon as we support filtering for multiple field contents for todos
-
- it 'just uses the first state' do
- todos = resolve(described_class, obj: user, args: { state: [:done, :pending] }, ctx: { current_user: user })
+ it 'returns the todos for multiple states' do
+ todos = resolve_todos({ state: [:done, :pending] })
- expect(todos).to contain_exactly(todo2)
+ expect(todos).to contain_exactly(todo1, todo2, todo3)
end
- it 'just uses the first action' do
- todos = resolve(described_class, obj: user, args: { action: [Todo::MENTIONED, Todo::ASSIGNED] }, ctx: { current_user: user })
+ it 'returns the todos for multiple types' do
+ todos = resolve_todos({ type: %w[Issue MergeRequest] })
- expect(todos).to contain_exactly(todo1)
+ expect(todos).to contain_exactly(todo1, todo3)
end
- it 'just uses the first author id' do
- # We need a pending todo for now because of TodosFinder's state query
- todo4 = create(:todo, user: user, state: :pending, action: Todo::ASSIGNED, author: author2)
+ it 'returns the todos for multiple groups' do
+ group1 = create(:group)
+ group2 = create(:group)
+ group3 = create(:group)
+
+ group1.add_developer(current_user)
+ group2.add_developer(current_user)
- todos = resolve(described_class, obj: user, args: { author_id: [author2.id, author1.id] }, ctx: { current_user: user })
+ todo4 = create(:todo, group: group1, user: current_user, state: :pending, action: Todo::ASSIGNED, author: author1)
+ todo5 = create(:todo, group: group2, user: current_user, state: :pending, action: Todo::ASSIGNED, author: author1)
+ create(:todo, group: group3, user: current_user, state: :pending, action: Todo::ASSIGNED, author: author1)
- expect(todos).to contain_exactly(todo4)
+ todos = resolve_todos({ group_id: [group2.id, group1.id] })
+
+ expect(todos).to contain_exactly(todo4, todo5)
end
- it 'just uses the first project id' do
- project1 = create(:project)
- project2 = create(:project)
+ it 'returns the todos for multiple authors' do
+ author3 = create(:user)
- create(:todo, project: project1, user: user, state: :pending, action: Todo::ASSIGNED, author: author1)
- todo5 = create(:todo, project: project2, user: user, state: :pending, action: Todo::ASSIGNED, author: author1)
+ todo4 = create(:todo, user: current_user, state: :pending, action: Todo::ASSIGNED, author: author2)
+ create(:todo, user: current_user, state: :pending, action: Todo::ASSIGNED, author: author3)
- todos = resolve(described_class, obj: user, args: { project_id: [project2.id, project1.id] }, ctx: { current_user: user })
+ todos = resolve_todos({ author_id: [author2.id, author1.id] })
- expect(todos).to contain_exactly(todo5)
+ expect(todos).to contain_exactly(todo1, todo3, todo4)
end
- it 'just uses the first group id' do
- group1 = create(:group)
- group2 = create(:group)
+ it 'returns the todos for multiple actions' do
+ create(:todo, user: current_user, state: :pending, action: Todo::DIRECTLY_ADDRESSED, author: author1)
- group1.add_developer(user)
- group2.add_developer(user)
+ todos = resolve_todos({ action: [Todo::MENTIONED, Todo::ASSIGNED] })
- create(:todo, group: group1, user: user, state: :pending, action: Todo::ASSIGNED, author: author1)
- todo5 = create(:todo, group: group2, user: user, state: :pending, action: Todo::ASSIGNED, author: author1)
+ expect(todos).to contain_exactly(todo1, todo3)
+ end
- todos = resolve(described_class, obj: user, args: { group_id: [group2.id, group1.id] }, ctx: { current_user: user })
+ it 'returns the todos for multiple projects' do
+ project1 = create(:project)
+ project2 = create(:project)
+ project3 = create(:project)
- expect(todos).to contain_exactly(todo5)
- end
+ todo4 = create(:todo, project: project1, user: current_user, state: :pending, action: Todo::ASSIGNED, author: author1)
+ todo5 = create(:todo, project: project2, user: current_user, state: :pending, action: Todo::ASSIGNED, author: author1)
+ create(:todo, project: project3, user: current_user, state: :pending, action: Todo::ASSIGNED, author: author1)
- it 'just uses the first target' do
- todos = resolve(described_class, obj: user, args: { type: %w[Issue MergeRequest] }, ctx: { current_user: user })
+ todos = resolve_todos({ project_id: [project2.id, project1.id] })
- # Just todo3 because todo2 is in state "done"
- expect(todos).to contain_exactly(todo3)
+ expect(todos).to contain_exactly(todo4, todo5)
end
end
@@ -100,7 +102,9 @@ describe Resolvers::TodoResolver do
context 'when provided user is not current user' do
it 'returns no todos' do
- todos = resolve(described_class, obj: user, args: {}, ctx: { current_user: current_user })
+ other_user = create(:user)
+
+ todos = resolve(described_class, obj: other_user, args: {}, ctx: { current_user: current_user })
expect(todos).to be_empty
end
diff --git a/spec/graphql/resolvers/users/snippets_resolver_spec.rb b/spec/graphql/resolvers/users/snippets_resolver_spec.rb
new file mode 100644
index 00000000000..6412d77e02b
--- /dev/null
+++ b/spec/graphql/resolvers/users/snippets_resolver_spec.rb
@@ -0,0 +1,84 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Resolvers::Users::SnippetsResolver do
+ include GraphqlHelpers
+
+ describe '#resolve' do
+ let_it_be(:current_user) { create(:user) }
+ let_it_be(:other_user) { create(:user) }
+ let_it_be(:project) { create(:project) }
+
+ let_it_be(:private_personal_snippet) { create(:personal_snippet, :private, author: current_user) }
+ let_it_be(:public_personal_snippet) { create(:personal_snippet, :public, author: current_user) }
+ let_it_be(:other_personal_snippet) { create(:personal_snippet, :internal, author: other_user) }
+ let_it_be(:internal_project_snippet) { create(:project_snippet, :internal, author: current_user, project: project) }
+ let_it_be(:other_project_snippet) { create(:project_snippet, :public, author: other_user, project: project) }
+
+ before do
+ project.add_developer(current_user)
+ end
+
+ it 'calls SnippetsFinder' do
+ expect_next_instance_of(SnippetsFinder) do |finder|
+ expect(finder).to receive(:execute)
+ end
+
+ resolve_snippets
+ end
+
+ context 'when using no filter' do
+ it 'returns expected authored snippets' do
+ expect(resolve_snippets).to contain_exactly(private_personal_snippet, public_personal_snippet, internal_project_snippet)
+ end
+ end
+
+ context 'when using filters' do
+ it 'returns the snippets by visibility' do
+ aggregate_failures do
+ expect(resolve_snippets(args: { visibility: 'are_private' })).to contain_exactly(private_personal_snippet)
+ expect(resolve_snippets(args: { visibility: 'are_internal' })).to contain_exactly(internal_project_snippet)
+ expect(resolve_snippets(args: { visibility: 'are_public' })).to contain_exactly(public_personal_snippet)
+ end
+ end
+
+ it 'returns the snippets by type' do
+ aggregate_failures do
+ expect(resolve_snippets(args: { type: 'personal' })).to contain_exactly(private_personal_snippet, public_personal_snippet)
+ expect(resolve_snippets(args: { type: 'project' })).to contain_exactly(internal_project_snippet)
+ end
+ end
+
+ it 'returns the snippets by single gid' do
+ snippets = resolve_snippets(args: { ids: private_personal_snippet.to_global_id })
+
+ expect(snippets).to contain_exactly(private_personal_snippet)
+ end
+
+ it 'returns the snippets by array of gid' do
+ args = {
+ ids: [private_personal_snippet.to_global_id, public_personal_snippet.to_global_id]
+ }
+
+ snippets = resolve_snippets(args: args)
+
+ expect(snippets).to contain_exactly(private_personal_snippet, public_personal_snippet)
+ end
+
+ it 'returns an error if the gid is invalid' do
+ args = {
+ ids: [private_personal_snippet.to_global_id, 'foo']
+ }
+
+ expect do
+ resolve_snippets(args: args)
+ end.to raise_error(Gitlab::Graphql::Errors::ArgumentError)
+ end
+ end
+ end
+
+ def resolve_snippets(args: {})
+ resolve(described_class, args: args, ctx: { current_user: current_user }, obj: current_user)
+ end
+end
diff --git a/spec/graphql/types/error_tracking/sentry_detailed_error_type_spec.rb b/spec/graphql/types/error_tracking/sentry_detailed_error_type_spec.rb
new file mode 100644
index 00000000000..3576adb5272
--- /dev/null
+++ b/spec/graphql/types/error_tracking/sentry_detailed_error_type_spec.rb
@@ -0,0 +1,37 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe GitlabSchema.types['SentryDetailedError'] do
+ it { expect(described_class.graphql_name).to eq('SentryDetailedError') }
+
+ it { expect(described_class).to require_graphql_authorizations(:read_sentry_issue) }
+
+ it 'exposes the expected fields' do
+ expected_fields = %i[
+ id
+ sentryId
+ title
+ type
+ userCount
+ count
+ firstSeen
+ lastSeen
+ message
+ culprit
+ externalUrl
+ sentryProjectId
+ sentryProjectName
+ sentryProjectSlug
+ shortId
+ status
+ frequency
+ firstReleaseLastCommit
+ lastReleaseLastCommit
+ firstReleaseShortVersion
+ lastReleaseShortVersion
+ ]
+
+ is_expected.to have_graphql_fields(*expected_fields)
+ end
+end
diff --git a/spec/graphql/types/permission_types/base_permission_type_spec.rb b/spec/graphql/types/permission_types/base_permission_type_spec.rb
index a45102e5b50..aa6b4320006 100644
--- a/spec/graphql/types/permission_types/base_permission_type_spec.rb
+++ b/spec/graphql/types/permission_types/base_permission_type_spec.rb
@@ -6,6 +6,7 @@ describe Types::PermissionTypes::BasePermissionType do
let(:permitable) { double('permittable') }
let(:current_user) { build(:user) }
let(:context) { { current_user: current_user } }
+
subject(:test_type) do
Class.new(described_class) do
graphql_name 'TestClass'
diff --git a/spec/graphql/types/permission_types/project_spec.rb b/spec/graphql/types/permission_types/project_spec.rb
index 6d5a905c128..a3a9872ee1a 100644
--- a/spec/graphql/types/permission_types/project_spec.rb
+++ b/spec/graphql/types/permission_types/project_spec.rb
@@ -8,7 +8,7 @@ describe Types::PermissionTypes::Project do
:change_namespace, :change_visibility_level, :rename_project, :remove_project, :archive_project,
:remove_fork_project, :remove_pages, :read_project, :create_merge_request_in,
:read_wiki, :read_project_member, :create_issue, :upload_file, :read_cycle_analytics,
- :download_code, :download_wiki_code, :fork_project, :create_project_snippet,
+ :download_code, :download_wiki_code, :fork_project, :create_snippet,
:read_commit_status, :request_access, :create_pipeline, :create_pipeline_schedule,
:create_merge_request_from, :create_wiki, :push_code, :create_deployment, :push_to_delete_protected_branch,
:admin_wiki, :admin_project, :update_pages, :admin_remote_mirror, :create_label,
diff --git a/spec/graphql/types/permission_types/snippet_spec.rb b/spec/graphql/types/permission_types/snippet_spec.rb
new file mode 100644
index 00000000000..66e9fa6dfdb
--- /dev/null
+++ b/spec/graphql/types/permission_types/snippet_spec.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Types::PermissionTypes::Snippet do
+ it 'returns the snippets permissions' do
+ expected_permissions = [
+ :create_note, :award_emoji, :read_snippet, :update_snippet, :admin_snippet, :report_snippet
+ ]
+
+ expected_permissions.each do |permission|
+ expect(described_class).to have_graphql_field(permission)
+ end
+ end
+end
diff --git a/spec/graphql/types/permission_types/user_spec.rb b/spec/graphql/types/permission_types/user_spec.rb
new file mode 100644
index 00000000000..1e8201db568
--- /dev/null
+++ b/spec/graphql/types/permission_types/user_spec.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Types::PermissionTypes::User do
+ it 'returns user permissions' do
+ expected_permissions = [
+ :create_snippet
+ ]
+
+ expected_permissions.each do |permission|
+ expect(described_class).to have_graphql_field(permission)
+ end
+ end
+end
diff --git a/spec/graphql/types/project_type_spec.rb b/spec/graphql/types/project_type_spec.rb
index 19a433f090e..a3c51f24307 100644
--- a/spec/graphql/types/project_type_spec.rb
+++ b/spec/graphql/types/project_type_spec.rb
@@ -22,11 +22,10 @@ describe GitlabSchema.types['Project'] do
only_allow_merge_if_pipeline_succeeds request_access_enabled
only_allow_merge_if_all_discussions_are_resolved printing_merge_request_link_enabled
namespace group statistics repository merge_requests merge_request issues
- issue pipelines
- removeSourceBranchAfterMerge
+ issue pipelines removeSourceBranchAfterMerge sentryDetailedError snippets
]
- is_expected.to have_graphql_fields(*expected_fields)
+ is_expected.to include_graphql_fields(*expected_fields)
end
describe 'issue field' do
@@ -64,4 +63,13 @@ describe GitlabSchema.types['Project'] do
is_expected.to have_graphql_resolver(Resolvers::MergeRequestsResolver)
end
end
+
+ describe 'snippets field' do
+ subject { described_class.fields['snippets'] }
+
+ it 'returns snippets' do
+ is_expected.to have_graphql_type(Types::SnippetType.connection_type)
+ is_expected.to have_graphql_resolver(Resolvers::Projects::SnippetsResolver)
+ end
+ end
end
diff --git a/spec/graphql/types/query_type_spec.rb b/spec/graphql/types/query_type_spec.rb
index 1365bc0dc14..b2d0ba27d4e 100644
--- a/spec/graphql/types/query_type_spec.rb
+++ b/spec/graphql/types/query_type_spec.rb
@@ -7,7 +7,7 @@ describe GitlabSchema.types['Query'] do
expect(described_class.graphql_name).to eq('Query')
end
- it { is_expected.to have_graphql_fields(:project, :namespace, :group, :echo, :metadata, :current_user) }
+ it { is_expected.to have_graphql_fields(:project, :namespace, :group, :echo, :metadata, :current_user, :snippets) }
describe 'namespace field' do
subject { described_class.fields['namespace'] }
diff --git a/spec/graphql/types/snippet_type_spec.rb b/spec/graphql/types/snippet_type_spec.rb
new file mode 100644
index 00000000000..5524e7a415d
--- /dev/null
+++ b/spec/graphql/types/snippet_type_spec.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe GitlabSchema.types['Snippet'] do
+ it 'has the correct fields' do
+ expected_fields = [:id, :title, :project, :author,
+ :file_name, :content, :description,
+ :visibility_level, :created_at, :updated_at,
+ :web_url, :raw_url, :notes, :discussions,
+ :user_permissions, :description_html]
+
+ is_expected.to have_graphql_fields(*expected_fields)
+ end
+
+ describe 'authorizations' do
+ it { expect(described_class).to require_graphql_authorizations(:read_snippet) }
+ end
+end
diff --git a/spec/graphql/types/user_type_spec.rb b/spec/graphql/types/user_type_spec.rb
index 8134cc13eb4..b9174b9a90b 100644
--- a/spec/graphql/types/user_type_spec.rb
+++ b/spec/graphql/types/user_type_spec.rb
@@ -6,4 +6,21 @@ describe GitlabSchema.types['User'] do
it { expect(described_class.graphql_name).to eq('User') }
it { expect(described_class).to require_graphql_authorizations(:read_user) }
+
+ it 'has the expected fields' do
+ expected_fields = %w[
+ user_permissions snippets name username avatarUrl webUrl todos
+ ]
+
+ is_expected.to have_graphql_fields(*expected_fields)
+ end
+
+ describe 'snippets field' do
+ subject { described_class.fields['snippets'] }
+
+ it 'returns snippets' do
+ is_expected.to have_graphql_type(Types::SnippetType.connection_type)
+ is_expected.to have_graphql_resolver(Resolvers::Users::SnippetsResolver)
+ end
+ end
end
diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb
index d3d25d3cb74..a0c85863150 100644
--- a/spec/helpers/application_helper_spec.rb
+++ b/spec/helpers/application_helper_spec.rb
@@ -235,4 +235,88 @@ describe ApplicationHelper do
end
end
end
+
+ describe '#body_data' do
+ context 'when @project is not set' do
+ it 'does not include project data in the body data elements' do
+ expect(helper.body_data).to eq(
+ {
+ page: 'application',
+ page_type_id: nil,
+ find_file: nil,
+ group: ''
+ }
+ )
+ end
+
+ context 'when @group is set' do
+ it 'sets group in the body data elements' do
+ group = create(:group)
+
+ assign(:group, group)
+
+ expect(helper.body_data).to eq(
+ {
+ page: 'application',
+ page_type_id: nil,
+ find_file: nil,
+ group: group.path
+ }
+ )
+ end
+ end
+ end
+
+ context 'when @project is set' do
+ it 'includes all possible body data elements and associates the project elements with project' do
+ project = create(:project)
+
+ assign(:project, project)
+
+ expect(helper.body_data).to eq(
+ {
+ page: 'application',
+ page_type_id: nil,
+ find_file: nil,
+ group: '',
+ project_id: project.id,
+ project: project.name,
+ namespace_id: project.namespace.id
+ }
+ )
+ end
+
+ context 'when controller is issues' do
+ before do
+ stub_controller_method(:controller_path, 'projects:issues')
+ end
+
+ context 'when params[:id] is present and the issue exsits and action_name is show' do
+ it 'sets all project and id elements correctly related to the issue' do
+ issue = create(:issue)
+ stub_controller_method(:action_name, 'show')
+ stub_controller_method(:params, { id: issue.id })
+
+ assign(:project, issue.project)
+
+ expect(helper.body_data).to eq(
+ {
+ page: 'projects:issues:show',
+ page_type_id: issue.id,
+ find_file: nil,
+ group: '',
+ project_id: issue.project.id,
+ project: issue.project.name,
+ namespace_id: issue.project.namespace.id
+ }
+ )
+ end
+ end
+ end
+ end
+
+ def stub_controller_method(method_name, value)
+ allow(helper.controller).to receive(method_name).and_return(value)
+ end
+ end
end
diff --git a/spec/helpers/avatars_helper_spec.rb b/spec/helpers/avatars_helper_spec.rb
index 77182a59c1c..8b6817efcc4 100644
--- a/spec/helpers/avatars_helper_spec.rb
+++ b/spec/helpers/avatars_helper_spec.rb
@@ -193,6 +193,7 @@ describe AvatarsHelper do
describe '#user_avatar_without_link' do
let(:options) { { user: user } }
+
subject { helper.user_avatar_without_link(options) }
it 'displays user avatar' do
diff --git a/spec/helpers/award_emoji_helper_spec.rb b/spec/helpers/award_emoji_helper_spec.rb
index 2ee27bc5427..2ad6b68a34c 100644
--- a/spec/helpers/award_emoji_helper_spec.rb
+++ b/spec/helpers/award_emoji_helper_spec.rb
@@ -4,59 +4,69 @@ require 'spec_helper'
describe AwardEmojiHelper do
describe '.toggle_award_url' do
+ subject { helper.toggle_award_url(awardable) }
+
context 'note on personal snippet' do
- let(:note) { create(:note_on_personal_snippet) }
+ let(:snippet) { create(:personal_snippet) }
+ let(:note) { create(:note_on_personal_snippet, noteable: snippet) }
+ let(:awardable) { note }
+
+ subject { helper.toggle_award_url(note) }
it 'returns correct url' do
expected_url = "/snippets/#{note.noteable.id}/notes/#{note.id}/toggle_award_emoji"
- expect(helper.toggle_award_url(note)).to eq(expected_url)
+ expect(subject).to eq(expected_url)
end
end
context 'note on project item' do
let(:note) { create(:note_on_project_snippet) }
+ let(:awardable) { note }
it 'returns correct url' do
@project = note.noteable.project
expected_url = "/#{@project.namespace.path}/#{@project.path}/notes/#{note.id}/toggle_award_emoji"
- expect(helper.toggle_award_url(note)).to eq(expected_url)
+ expect(subject).to eq(expected_url)
end
end
context 'personal snippet' do
let(:snippet) { create(:personal_snippet) }
+ let(:awardable) { snippet }
it 'returns correct url' do
expected_url = "/snippets/#{snippet.id}/toggle_award_emoji"
- expect(helper.toggle_award_url(snippet)).to eq(expected_url)
+ expect(subject).to eq(expected_url)
end
end
context 'merge request' do
let(:merge_request) { create(:merge_request) }
+ let(:awardable) { merge_request }
it 'returns correct url' do
@project = merge_request.project
expected_url = "/#{@project.namespace.path}/#{@project.path}/merge_requests/#{merge_request.iid}/toggle_award_emoji"
- expect(helper.toggle_award_url(merge_request)).to eq(expected_url)
+ expect(subject).to eq(expected_url)
end
end
context 'issue' do
let(:issue) { create(:issue) }
+ let(:awardable) { issue }
it 'returns correct url' do
@project = issue.project
expected_url = "/#{@project.namespace.path}/#{@project.path}/issues/#{issue.iid}/toggle_award_emoji"
- expect(helper.toggle_award_url(issue)).to eq(expected_url)
+ expect(subject).to eq(expected_url)
end
end
end
diff --git a/spec/helpers/clusters_helper_spec.rb b/spec/helpers/clusters_helper_spec.rb
index 1ee638ddf04..ff8394b9475 100644
--- a/spec/helpers/clusters_helper_spec.rb
+++ b/spec/helpers/clusters_helper_spec.rb
@@ -37,25 +37,25 @@ describe ClustersHelper do
context 'GCP provider' do
let(:provider) { 'gcp' }
- it { is_expected.to eq('Create new Cluster on GKE') }
+ it { is_expected.to eq('Create new cluster on GKE') }
end
context 'AWS provider' do
let(:provider) { 'aws' }
- it { is_expected.to eq('Create new Cluster on EKS') }
+ it { is_expected.to eq('Create new cluster on EKS') }
end
context 'other provider' do
let(:provider) { 'other' }
- it { is_expected.to eq('Create new Cluster') }
+ it { is_expected.to eq('Create new cluster') }
end
context 'no provider' do
let(:provider) { nil }
- it { is_expected.to eq('Create new Cluster') }
+ it { is_expected.to eq('Create new cluster') }
end
end
diff --git a/spec/helpers/container_expiration_policies_helper_spec.rb b/spec/helpers/container_expiration_policies_helper_spec.rb
new file mode 100644
index 00000000000..3eb1234d82b
--- /dev/null
+++ b/spec/helpers/container_expiration_policies_helper_spec.rb
@@ -0,0 +1,47 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe ContainerExpirationPoliciesHelper do
+ describe '#keep_n_options' do
+ it 'returns keep_n options formatted for dropdown usage' do
+ expected_result = [
+ { key: 1, label: '1 tag per image name' },
+ { key: 5, label: '5 tags per image name' },
+ { key: 10, label: '10 tags per image name' },
+ { key: 25, label: '25 tags per image name' },
+ { key: 50, label: '50 tags per image name' },
+ { key: 100, label: '100 tags per image name' }
+ ]
+
+ expect(helper.keep_n_options).to eq(expected_result)
+ end
+ end
+
+ describe '#cadence_options' do
+ it 'returns cadence options formatted for dropdown usage' do
+ expected_result = [
+ { key: '1d', label: 'Every day' },
+ { key: '7d', label: 'Every week' },
+ { key: '14d', label: 'Every two weeks' },
+ { key: '1month', label: 'Every month' },
+ { key: '3month', label: 'Every three months' }
+ ]
+
+ expect(helper.cadence_options).to eq(expected_result)
+ end
+ end
+
+ describe '#older_than_options' do
+ it 'returns older_than options formatted for dropdown usage' do
+ expected_result = [
+ { key: '7d', label: '7 days until tags are automatically removed' },
+ { key: '14d', label: '14 days until tags are automatically removed' },
+ { key: '30d', label: '30 days until tags are automatically removed' },
+ { key: '90d', label: '90 days until tags are automatically removed' }
+ ]
+
+ expect(helper.older_than_options).to eq(expected_result)
+ end
+ end
+end
diff --git a/spec/helpers/diff_helper_spec.rb b/spec/helpers/diff_helper_spec.rb
index 47c076e3322..7f988c60817 100644
--- a/spec/helpers/diff_helper_spec.rb
+++ b/spec/helpers/diff_helper_spec.rb
@@ -258,6 +258,51 @@ describe DiffHelper do
end
end
+ context '#render_overflow_warning?' do
+ let(:diffs_collection) { instance_double(Gitlab::Diff::FileCollection::MergeRequestDiff, raw_diff_files: diff_files) }
+ let(:diff_files) { Gitlab::Git::DiffCollection.new(files) }
+ let(:safe_file) { { too_large: false, diff: '' } }
+ let(:large_file) { { too_large: true, diff: '' } }
+ let(:files) { [safe_file, safe_file] }
+
+ before do
+ allow(diff_files).to receive(:overflow?).and_return(false)
+ end
+
+ context 'when neither collection nor individual file hit the limit' do
+ it 'returns false and does not log any overflow events' do
+ expect(Gitlab::Metrics).not_to receive(:add_event).with(:diffs_overflow_collection_limits)
+ expect(Gitlab::Metrics).not_to receive(:add_event).with(:diffs_overflow_single_file_limits)
+
+ expect(render_overflow_warning?(diffs_collection)).to be false
+ end
+ end
+
+ context 'when the file collection has an overflow' do
+ before do
+ allow(diff_files).to receive(:overflow?).and_return(true)
+ end
+
+ it 'returns false and only logs collection overflow event' do
+ expect(Gitlab::Metrics).to receive(:add_event).with(:diffs_overflow_collection_limits).exactly(:once)
+ expect(Gitlab::Metrics).not_to receive(:add_event).with(:diffs_overflow_single_file_limits)
+
+ expect(render_overflow_warning?(diffs_collection)).to be true
+ end
+ end
+
+ context 'when two individual files are too big' do
+ let(:files) { [safe_file, large_file, large_file] }
+
+ it 'returns false and only logs single file overflow events' do
+ expect(Gitlab::Metrics).to receive(:add_event).with(:diffs_overflow_single_file_limits).exactly(:once)
+ expect(Gitlab::Metrics).not_to receive(:add_event).with(:diffs_overflow_collection_limits)
+
+ expect(render_overflow_warning?(diffs_collection)).to be false
+ end
+ end
+ end
+
context '#diff_file_path_text' do
it 'returns full path by default' do
expect(diff_file_path_text(diff_file)).to eq(diff_file.new_path)
diff --git a/spec/helpers/emails_helper_spec.rb b/spec/helpers/emails_helper_spec.rb
index 931b7008173..0ff9080ef94 100644
--- a/spec/helpers/emails_helper_spec.rb
+++ b/spec/helpers/emails_helper_spec.rb
@@ -74,6 +74,28 @@ describe EmailsHelper do
end
end
+ describe 'notification_reason_text' do
+ subject { helper.notification_reason_text(reason_code) }
+
+ using RSpec::Parameterized::TableSyntax
+
+ where(:reason_code, :reason_text) do
+ NotificationReason::OWN_ACTIVITY | ' of your activity '
+ NotificationReason::ASSIGNED | ' you have been assigned an item '
+ NotificationReason::MENTIONED | ' you have been mentioned '
+ "" | ' of your account '
+ nil | ' of your account '
+ end
+
+ with_them do
+ it { is_expected.to start_with "You're receiving this email because" }
+
+ it { is_expected.to include reason_text }
+
+ it { is_expected.to end_with "on #{Gitlab.config.gitlab.host}." }
+ end
+ end
+
describe 'sanitize_name' do
context 'when name contains a valid URL string' do
it 'returns name with `.` replaced with `_` to prevent mail clients from auto-linking URLs' do
diff --git a/spec/helpers/events_helper_spec.rb b/spec/helpers/events_helper_spec.rb
index 7853617c3ed..9b28bc19185 100644
--- a/spec/helpers/events_helper_spec.rb
+++ b/spec/helpers/events_helper_spec.rb
@@ -5,6 +5,7 @@ require 'spec_helper'
describe EventsHelper do
describe '#event_commit_title' do
let(:message) { 'foo & bar ' + 'A' * 70 + '\n' + 'B' * 80 }
+
subject { helper.event_commit_title(message) }
it 'returns the first line, truncated to 70 chars' do
diff --git a/spec/helpers/git_helper_spec.rb b/spec/helpers/git_helper_spec.rb
index 505d6ed15ac..6dfd8d2cc76 100644
--- a/spec/helpers/git_helper_spec.rb
+++ b/spec/helpers/git_helper_spec.rb
@@ -8,4 +8,163 @@ describe GitHelper do
it { expect(short_sha).to eq('d4e043f6') }
end
+
+ describe '#strip_signature' do
+ context 'strips PGP SIGNATURE' do
+ let(:strip_signature) { helper.strip_signature( pgp_signature_tag ) }
+
+ it { expect(strip_signature).to eq("Version 1.69.0\n\n") }
+ end
+ context 'strips PGP MESSAGE' do
+ let(:strip_signature) { helper.strip_signature( pgp_message_tag ) }
+
+ it { expect(strip_signature).to eq("Version 1.69.0\n\n") }
+ end
+ context 'strips SIGNED MESSAGE' do
+ let(:strip_signature) { helper.strip_signature( x509_message_tag ) }
+
+ it { expect(strip_signature).to eq("this is Roger's signed tag\n\n") }
+ end
+ end
+
+ def pgp_signature_tag
+ <<~SIGNATURE
+ Version 1.69.0
+ -----BEGIN PGP SIGNATURE-----
+
+ iQEzBAABCAAdFiEEFMo1pwRq9j04Jovq68Q/GjfvLIoFAl2l64QACgkQ68Q/Gjfv
+ LIqRDggAm0d1ceVRsfldlwC6guR2ly8aWoTtZZ19E12bsfXd4lJqcQv7JXTP0og0
+ cwbV0l92iBJKGW6bFBipKDFmSgr5le5zFsXYOr9bJCQNOhFNMmtAgaHEIeVI16+c
+ S3pA+qIe516d4wRs/hcbxDJKC68iIlDaLXObdzTTLGMgbCYBFTjYJldNUfTkdvbB
+ oGEpFXuxV9EyfBtPLsz2vUea5GdZcRSVyJbcgm9ZU+ekdLZckroP5M0I5SQTbD3y
+ VrbCY3ziYtau4zK4cV66ybRz1G7tR6dcoC4kGUbaZlKsVZ1Af80agx2d9k5MR1wS
+ 4OFe1H0zIfpPRFsyX2toaum3EX6QBA==
+ =hefg
+ -----END PGP SIGNATURE-----
+ SIGNATURE
+ end
+
+ def pgp_message_tag
+ <<~SIGNATURE
+ Version 1.69.0
+ -----BEGIN PGP MESSAGE-----
+
+ iQEzBAABCAAdFiEEFMo1pwRq9j04Jovq68Q/GjfvLIoFAl2l64QACgkQ68Q/Gjfv
+ LIqRDggAm0d1ceVRsfldlwC6guR2ly8aWoTtZZ19E12bsfXd4lJqcQv7JXTP0og0
+ cwbV0l92iBJKGW6bFBipKDFmSgr5le5zFsXYOr9bJCQNOhFNMmtAgaHEIeVI16+c
+ S3pA+qIe516d4wRs/hcbxDJKC68iIlDaLXObdzTTLGMgbCYBFTjYJldNUfTkdvbB
+ oGEpFXuxV9EyfBtPLsz2vUea5GdZcRSVyJbcgm9ZU+ekdLZckroP5M0I5SQTbD3y
+ VrbCY3ziYtau4zK4cV66ybRz1G7tR6dcoC4kGUbaZlKsVZ1Af80agx2d9k5MR1wS
+ 4OFe1H0zIfpPRFsyX2toaum3EX6QBA==
+ =hefg
+ -----END PGP MESSAGE-----
+ SIGNATURE
+ end
+
+ def x509_message_tag
+ <<~SIGNATURE
+ this is Roger's signed tag
+ -----BEGIN SIGNED MESSAGE-----
+ MIISfwYJKoZIhvcNAQcCoIIScDCCEmwCAQExDTALBglghkgBZQMEAgEwCwYJKoZI
+ hvcNAQcBoIIP8zCCB3QwggVcoAMCAQICBBXXLOIwDQYJKoZIhvcNAQELBQAwgbYx
+ CzAJBgNVBAYTAkRFMQ8wDQYDVQQIDAZCYXllcm4xETAPBgNVBAcMCE11ZW5jaGVu
+ MRAwDgYDVQQKDAdTaWVtZW5zMREwDwYDVQQFEwhaWlpaWlpBNjEdMBsGA1UECwwU
+ U2llbWVucyBUcnVzdCBDZW50ZXIxPzA9BgNVBAMMNlNpZW1lbnMgSXNzdWluZyBD
+ QSBNZWRpdW0gU3RyZW5ndGggQXV0aGVudGljYXRpb24gMjAxNjAeFw0xNzAyMDMw
+ NjU4MzNaFw0yMDAyMDMwNjU4MzNaMFsxETAPBgNVBAUTCFowMDBOV0RIMQ4wDAYD
+ VQQqDAVSb2dlcjEOMAwGA1UEBAwFTWVpZXIxEDAOBgNVBAoMB1NpZW1lbnMxFDAS
+ BgNVBAMMC01laWVyIFJvZ2VyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
+ AQEAuBNea/68ZCnHYQjpm/k3ZBG0wBpEKSwG6lk9CEQlSxsqVLQHAoAKBIlJm1in
+ YVLcK/Sq1yhYJ/qWcY/M53DhK2rpPuhtrWJUdOUy8EBWO20F4bd4Fw9pO7jt8bme
+ u33TSrK772vKjuppzB6SeG13Cs08H+BIeD106G27h7ufsO00pvsxoSDL+uc4slnr
+ pBL+2TAL7nSFnB9QHWmRIK27SPqJE+lESdb0pse11x1wjvqKy2Q7EjL9fpqJdHzX
+ NLKHXd2r024TOORTa05DFTNR+kQEKKV96XfpYdtSBomXNQ44cisiPBJjFtYvfnFE
+ wgrHa8fogn/b0C+A+HAoICN12wIDAQABo4IC4jCCAt4wHQYDVR0OBBYEFCF+gkUp
+ XQ6xGc0kRWXuDFxzA14zMEMGA1UdEQQ8MDqgIwYKKwYBBAGCNxQCA6AVDBNyLm1l
+ aWVyQHNpZW1lbnMuY29tgRNyLm1laWVyQHNpZW1lbnMuY29tMA4GA1UdDwEB/wQE
+ AwIHgDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgcoGA1UdHwSBwjCB
+ vzCBvKCBuaCBtoYmaHR0cDovL2NoLnNpZW1lbnMuY29tL3BraT9aWlpaWlpBNi5j
+ cmyGQWxkYXA6Ly9jbC5zaWVtZW5zLm5ldC9DTj1aWlpaWlpBNixMPVBLST9jZXJ0
+ aWZpY2F0ZVJldm9jYXRpb25MaXN0hklsZGFwOi8vY2wuc2llbWVucy5jb20vQ049
+ WlpaWlpaQTYsbz1UcnVzdGNlbnRlcj9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0
+ MEUGA1UdIAQ+MDwwOgYNKwYBBAGhaQcCAgMBAzApMCcGCCsGAQUFBwIBFhtodHRw
+ Oi8vd3d3LnNpZW1lbnMuY29tL3BraS8wDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAW
+ gBT4FV1HDGx3e3LEAheRaKK292oJRDCCAQQGCCsGAQUFBwEBBIH3MIH0MDIGCCsG
+ AQUFBzAChiZodHRwOi8vYWguc2llbWVucy5jb20vcGtpP1paWlpaWkE2LmNydDBB
+ BggrBgEFBQcwAoY1bGRhcDovL2FsLnNpZW1lbnMubmV0L0NOPVpaWlpaWkE2LEw9
+ UEtJP2NBQ2VydGlmaWNhdGUwSQYIKwYBBQUHMAKGPWxkYXA6Ly9hbC5zaWVtZW5z
+ LmNvbS9DTj1aWlpaWlpBNixvPVRydXN0Y2VudGVyP2NBQ2VydGlmaWNhdGUwMAYI
+ KwYBBQUHMAGGJGh0dHA6Ly9vY3NwLnBraS1zZXJ2aWNlcy5zaWVtZW5zLmNvbTAN
+ BgkqhkiG9w0BAQsFAAOCAgEAXPVcX6vaEcszJqg5IemF9aFTlwTrX5ITNIpzcqG+
+ kD5haOf2mZYLjl+MKtLC1XfmIsGCUZNb8bjP6QHQEI+2d6x/ZOqPq7Kd7PwVu6x6
+ xZrkDjUyhUbUntT5+RBy++l3Wf6Cq6Kx+K8ambHBP/bu90/p2U8KfFAG3Kr2gI2q
+ fZrnNMOxmJfZ3/sXxssgLkhbZ7hRa+MpLfQ6uFsSiat3vlawBBvTyHnoZ/7oRc8y
+ qi6QzWcd76CPpMElYWibl+hJzKbBZUWvc71AzHR6i1QeZ6wubYz7vr+FF5Y7tnxB
+ Vz6omPC9XAg0F+Dla6Zlz3Awj5imCzVXa+9SjtnsidmJdLcKzTAKyDewewoxYOOJ
+ j3cJU7VSjJPl+2fVmDBaQwcNcUcu/TPAKApkegqO7tRF9IPhjhW8QkRnkqMetO3D
+ OXmAFVIsEI0Hvb2cdb7B6jSpjGUuhaFm9TCKhQtCk2p8JCDTuaENLm1x34rrJKbT
+ 2vzyYN0CZtSkUdgD4yQxK9VWXGEzexRisWb4AnZjD2NAquLPpXmw8N0UwFD7MSpC
+ dpaX7FktdvZmMXsnGiAdtLSbBgLVWOD1gmJFDjrhNbI8NOaOaNk4jrfGqNh5lhGU
+ 4DnBT2U6Cie1anLmFH/oZooAEXR2o3Nu+1mNDJChnJp0ovs08aa3zZvBdcloOvfU
+ qdowggh3MIIGX6ADAgECAgQtyi/nMA0GCSqGSIb3DQEBCwUAMIGZMQswCQYDVQQG
+ EwJERTEPMA0GA1UECAwGQmF5ZXJuMREwDwYDVQQHDAhNdWVuY2hlbjEQMA4GA1UE
+ CgwHU2llbWVuczERMA8GA1UEBRMIWlpaWlpaQTExHTAbBgNVBAsMFFNpZW1lbnMg
+ VHJ1c3QgQ2VudGVyMSIwIAYDVQQDDBlTaWVtZW5zIFJvb3QgQ0EgVjMuMCAyMDE2
+ MB4XDTE2MDcyMDEzNDYxMFoXDTIyMDcyMDEzNDYxMFowgbYxCzAJBgNVBAYTAkRF
+ MQ8wDQYDVQQIDAZCYXllcm4xETAPBgNVBAcMCE11ZW5jaGVuMRAwDgYDVQQKDAdT
+ aWVtZW5zMREwDwYDVQQFEwhaWlpaWlpBNjEdMBsGA1UECwwUU2llbWVucyBUcnVz
+ dCBDZW50ZXIxPzA9BgNVBAMMNlNpZW1lbnMgSXNzdWluZyBDQSBNZWRpdW0gU3Ry
+ ZW5ndGggQXV0aGVudGljYXRpb24gMjAxNjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
+ ADCCAgoCggIBAL9UfK+JAZEqVMVvECdYF9IK4KSw34AqyNl3rYP5x03dtmKaNu+2
+ 0fQqNESA1NGzw3s6LmrKLh1cR991nB2cvKOXu7AvEGpSuxzIcOROd4NpvRx+Ej1p
+ JIPeqf+ScmVK7lMSO8QL/QzjHOpGV3is9sG+ZIxOW9U1ESooy4Hal6ZNs4DNItsz
+ piCKqm6G3et4r2WqCy2RRuSqvnmMza7Y8BZsLy0ZVo5teObQ37E/FxqSrbDI8nxn
+ B7nVUve5ZjrqoIGSkEOtyo11003dVO1vmWB9A0WQGDqE/q3w178hGhKfxzRaqzyi
+ SoADUYS2sD/CglGTUxVq6u0pGLLsCFjItcCWqW+T9fPYfJ2CEd5b3hvqdCn+pXjZ
+ /gdX1XAcdUF5lRnGWifaYpT9n4s4adzX8q6oHSJxTppuAwLRKH6eXALbGQ1I9lGQ
+ DSOipD/09xkEsPw6HOepmf2U3YxZK1VU2sHqugFJboeLcHMzp6E1n2ctlNG1GKE9
+ FDHmdyFzDi0Nnxtf/GgVjnHF68hByEE1MYdJ4nJLuxoT9hyjYdRW9MpeNNxxZnmz
+ W3zh7QxIqP0ZfIz6XVhzrI9uZiqwwojDiM5tEOUkQ7XyW6grNXe75yt6mTj89LlB
+ H5fOW2RNmCy/jzBXDjgyskgK7kuCvUYTuRv8ITXbBY5axFA+CpxZqokpAgMBAAGj
+ ggKmMIICojCCAQUGCCsGAQUFBwEBBIH4MIH1MEEGCCsGAQUFBzAChjVsZGFwOi8v
+ YWwuc2llbWVucy5uZXQvQ049WlpaWlpaQTEsTD1QS0k/Y0FDZXJ0aWZpY2F0ZTAy
+ BggrBgEFBQcwAoYmaHR0cDovL2FoLnNpZW1lbnMuY29tL3BraT9aWlpaWlpBMS5j
+ cnQwSgYIKwYBBQUHMAKGPmxkYXA6Ly9hbC5zaWVtZW5zLmNvbS91aWQ9WlpaWlpa
+ QTEsbz1UcnVzdGNlbnRlcj9jQUNlcnRpZmljYXRlMDAGCCsGAQUFBzABhiRodHRw
+ Oi8vb2NzcC5wa2ktc2VydmljZXMuc2llbWVucy5jb20wHwYDVR0jBBgwFoAUcG2g
+ UOyp0CxnnRkV/v0EczXD4tQwEgYDVR0TAQH/BAgwBgEB/wIBADBABgNVHSAEOTA3
+ MDUGCCsGAQQBoWkHMCkwJwYIKwYBBQUHAgEWG2h0dHA6Ly93d3cuc2llbWVucy5j
+ b20vcGtpLzCBxwYDVR0fBIG/MIG8MIG5oIG2oIGzhj9sZGFwOi8vY2wuc2llbWVu
+ cy5uZXQvQ049WlpaWlpaQTEsTD1QS0k/YXV0aG9yaXR5UmV2b2NhdGlvbkxpc3SG
+ Jmh0dHA6Ly9jaC5zaWVtZW5zLmNvbS9wa2k/WlpaWlpaQTEuY3JshkhsZGFwOi8v
+ Y2wuc2llbWVucy5jb20vdWlkPVpaWlpaWkExLG89VHJ1c3RjZW50ZXI/YXV0aG9y
+ aXR5UmV2b2NhdGlvbkxpc3QwJwYDVR0lBCAwHgYIKwYBBQUHAwIGCCsGAQUFBwME
+ BggrBgEFBQcDCTAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFPgVXUcMbHd7csQC
+ F5Foorb3aglEMA0GCSqGSIb3DQEBCwUAA4ICAQBw+sqMp3SS7DVKcILEmXbdRAg3
+ lLO1r457KY+YgCT9uX4VG5EdRKcGfWXK6VHGCi4Dos5eXFV34Mq/p8nu1sqMuoGP
+ YjHn604eWDprhGy6GrTYdxzcE/GGHkpkuE3Ir/45UcmZlOU41SJ9SNjuIVrSHMOf
+ ccSY42BCspR/Q1Z/ykmIqQecdT3/Kkx02GzzSN2+HlW6cEO4GBW5RMqsvd2n0h2d
+ fe2zcqOgkLtx7u2JCR/U77zfyxG3qXtcymoz0wgSHcsKIl+GUjITLkHfS9Op8V7C
+ Gr/dX437sIg5pVHmEAWadjkIzqdHux+EF94Z6kaHywohc1xG0KvPYPX7iSNjkvhz
+ 4NY53DHmxl4YEMLffZnaS/dqyhe1GTpcpyN8WiR4KuPfxrkVDOsuzWFtMSvNdlOV
+ gdI0MXcLMP+EOeANZWX6lGgJ3vWyemo58nzgshKd24MY3w3i6masUkxJH2KvI7UH
+ /1Db3SC8oOUjInvSRej6M3ZhYWgugm6gbpUgFoDw/o9Cg6Qm71hY0JtcaPC13rzm
+ N8a2Br0+Fa5e2VhwLmAxyfe1JKzqPwuHT0S5u05SQghL5VdzqfA8FCL/j4XC9yI6
+ csZTAQi73xFQYVjZt3+aoSz84lOlTmVo/jgvGMY/JzH9I4mETGgAJRNj34Z/0meh
+ M+pKWCojNH/dgyJSwDGCAlIwggJOAgEBMIG/MIG2MQswCQYDVQQGEwJERTEPMA0G
+ A1UECAwGQmF5ZXJuMREwDwYDVQQHDAhNdWVuY2hlbjEQMA4GA1UECgwHU2llbWVu
+ czERMA8GA1UEBRMIWlpaWlpaQTYxHTAbBgNVBAsMFFNpZW1lbnMgVHJ1c3QgQ2Vu
+ dGVyMT8wPQYDVQQDDDZTaWVtZW5zIElzc3VpbmcgQ0EgTWVkaXVtIFN0cmVuZ3Ro
+ IEF1dGhlbnRpY2F0aW9uIDIwMTYCBBXXLOIwCwYJYIZIAWUDBAIBoGkwHAYJKoZI
+ hvcNAQkFMQ8XDTE5MTExNDE3MzYzNFowLwYJKoZIhvcNAQkEMSIEIJO0Q0yM+f6h
+ pNqE7YCAEPwe751CamgWYqKBIUMjTViqMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0B
+ BwEwCwYJKoZIhvcNAQEBBIIBACZqs0NEuP1O/90avijVtTGicqMHp6vBBcmPJK7O
+ WOsL1DIDfAww+fw0r5cMbnmJA+iTfY5iZU/nqMK9kiGx055eoqU9KJaWFzY3KFO/
+ aOeXBCxv7CTDIVKoQtA0RCH6cGOgD6dnH2Lez3aDmziEd7gMqkBRo7lh1O6o5FQy
+ xyZl3p3/MYrFTeZDnr0YeBWWzPrECaQkI1M7K1hdTqmURU1wE6tSANYyT7/BtN+O
+ XVB/7uD6aTTo+eHyeJxcZGja0IsMXmwlsFqmlxxciYhQhQdPaXRcutdx0fMEF5Zq
+ wxhu3ScPA3X7e2ENEKJNl5W1OT9YXvc3K9Hwvtj8USx3CJI=
+ -----END SIGNED MESSAGE-----
+ SIGNATURE
+ end
end
diff --git a/spec/helpers/gitlab_routing_helper_spec.rb b/spec/helpers/gitlab_routing_helper_spec.rb
index 38699108b06..e76ebcb5637 100644
--- a/spec/helpers/gitlab_routing_helper_spec.rb
+++ b/spec/helpers/gitlab_routing_helper_spec.rb
@@ -112,4 +112,98 @@ describe GitlabRoutingHelper do
expect(edit_milestone_path(milestone)).to eq("/#{milestone.project.full_path}/-/milestones/#{milestone.iid}/edit")
end
end
+
+ context 'snippets' do
+ let_it_be(:personal_snippet) { create(:personal_snippet) }
+ let_it_be(:project_snippet) { create(:project_snippet) }
+ let_it_be(:note) { create(:note_on_personal_snippet, noteable: personal_snippet) }
+
+ describe '#gitlab_snippet_path' do
+ it 'returns the personal snippet path' do
+ expect(gitlab_snippet_path(personal_snippet)).to eq("/snippets/#{personal_snippet.id}")
+ end
+
+ it 'returns the project snippet path' do
+ expect(gitlab_snippet_path(project_snippet)).to eq("/#{project_snippet.project.full_path}/snippets/#{project_snippet.id}")
+ end
+ end
+
+ describe '#gitlab_snippet_url' do
+ it 'returns the personal snippet url' do
+ expect(gitlab_snippet_url(personal_snippet)).to eq("http://test.host/snippets/#{personal_snippet.id}")
+ end
+
+ it 'returns the project snippet url' do
+ expect(gitlab_snippet_url(project_snippet)).to eq("http://test.host/#{project_snippet.project.full_path}/snippets/#{project_snippet.id}")
+ end
+ end
+
+ describe '#gitlab_raw_snippet_path' do
+ it 'returns the raw personal snippet path' do
+ expect(gitlab_raw_snippet_path(personal_snippet)).to eq("/snippets/#{personal_snippet.id}/raw")
+ end
+
+ it 'returns the raw project snippet path' do
+ expect(gitlab_raw_snippet_path(project_snippet)).to eq("/#{project_snippet.project.full_path}/snippets/#{project_snippet.id}/raw")
+ end
+ end
+
+ describe '#gitlab_raw_snippet_url' do
+ it 'returns the raw personal snippet url' do
+ expect(gitlab_raw_snippet_url(personal_snippet)).to eq("http://test.host/snippets/#{personal_snippet.id}/raw")
+ end
+
+ it 'returns the raw project snippet url' do
+ expect(gitlab_raw_snippet_url(project_snippet)).to eq("http://test.host/#{project_snippet.project.full_path}/snippets/#{project_snippet.id}/raw")
+ end
+ end
+
+ describe '#gitlab_snippet_notes_path' do
+ it 'returns the notes path for the personal snippet' do
+ expect(gitlab_snippet_notes_path(personal_snippet)).to eq("/snippets/#{personal_snippet.id}/notes")
+ end
+ end
+
+ describe '#gitlab_snippet_notes_url' do
+ it 'returns the notes url for the personal snippet' do
+ expect(gitlab_snippet_notes_url(personal_snippet)).to eq("http://test.host/snippets/#{personal_snippet.id}/notes")
+ end
+ end
+
+ describe '#gitlab_snippet_note_path' do
+ it 'returns the note path for the personal snippet' do
+ expect(gitlab_snippet_note_path(personal_snippet, note)).to eq("/snippets/#{personal_snippet.id}/notes/#{note.id}")
+ end
+ end
+
+ describe '#gitlab_snippet_note_url' do
+ it 'returns the note url for the personal snippet' do
+ expect(gitlab_snippet_note_url(personal_snippet, note)).to eq("http://test.host/snippets/#{personal_snippet.id}/notes/#{note.id}")
+ end
+ end
+
+ describe '#gitlab_toggle_award_emoji_snippet_note_path' do
+ it 'returns the note award emoji path for the personal snippet' do
+ expect(gitlab_toggle_award_emoji_snippet_note_path(personal_snippet, note)).to eq("/snippets/#{personal_snippet.id}/notes/#{note.id}/toggle_award_emoji")
+ end
+ end
+
+ describe '#gitlab_toggle_award_emoji_snippet_note_url' do
+ it 'returns the note award emoji url for the personal snippet' do
+ expect(gitlab_toggle_award_emoji_snippet_note_url(personal_snippet, note)).to eq("http://test.host/snippets/#{personal_snippet.id}/notes/#{note.id}/toggle_award_emoji")
+ end
+ end
+
+ describe '#gitlab_toggle_award_emoji_snippet_path' do
+ it 'returns the award emoji path for the personal snippet' do
+ expect(gitlab_toggle_award_emoji_snippet_path(personal_snippet)).to eq("/snippets/#{personal_snippet.id}/toggle_award_emoji")
+ end
+ end
+
+ describe '#gitlab_toggle_award_emoji_snippet_url' do
+ it 'returns the award url for the personal snippet' do
+ expect(gitlab_toggle_award_emoji_snippet_url(personal_snippet)).to eq("http://test.host/snippets/#{personal_snippet.id}/toggle_award_emoji")
+ end
+ end
+ end
end
diff --git a/spec/helpers/groups_helper_spec.rb b/spec/helpers/groups_helper_spec.rb
index 8b33277ea18..ac2f028f937 100644
--- a/spec/helpers/groups_helper_spec.rb
+++ b/spec/helpers/groups_helper_spec.rb
@@ -127,6 +127,7 @@ describe GroupsHelper do
sub_sub_owner: sub_sub_owner
}
end
+
subject { helper.share_with_group_lock_help_text(sub_subgroup) }
where(:root_share_with_group_locked, :subgroup_share_with_group_locked, :sub_subgroup_share_with_group_locked, :current_user, :help_text, :linked_ancestor) do
@@ -194,6 +195,7 @@ describe GroupsHelper do
describe '#group_container_registry_nav' do
let(:group) { create(:group, :public) }
let(:user) { create(:user) }
+
before do
stub_container_registry_config(enabled: true)
allow(helper).to receive(:current_user) { user }
@@ -229,6 +231,7 @@ describe GroupsHelper do
describe '#group_sidebar_links' do
let(:group) { create(:group, :public) }
let(:user) { create(:user) }
+
before do
group.add_owner(user)
allow(helper).to receive(:current_user) { user }
diff --git a/spec/helpers/icons_helper_spec.rb b/spec/helpers/icons_helper_spec.rb
index f1b1d411e05..5c26db028b7 100644
--- a/spec/helpers/icons_helper_spec.rb
+++ b/spec/helpers/icons_helper_spec.rb
@@ -76,6 +76,8 @@ describe IconsHelper do
it 'does not raise in production mode' do
stub_rails_env('production')
+ expect(File).not_to receive(:read)
+
expect { sprite_icon(non_existing) }.not_to raise_error
end
end
diff --git a/spec/helpers/issuables_helper_spec.rb b/spec/helpers/issuables_helper_spec.rb
index 1af8b7390bb..a39110d0aa7 100644
--- a/spec/helpers/issuables_helper_spec.rb
+++ b/spec/helpers/issuables_helper_spec.rb
@@ -49,7 +49,7 @@ describe IssuablesHelper do
let(:label2_entity) { LabelEntity.represent(label2).as_json }
it 'returns label text with no labels' do
- expect(issuable_labels_tooltip([])).to eq("Labels")
+ expect(issuable_labels_tooltip([])).to eq(_('Labels'))
end
it 'returns label text with labels within max limit' do
@@ -202,6 +202,26 @@ describe IssuablesHelper do
expect(helper.issuable_initial_data(issue)).to match(hash_including(expected_data))
end
+ describe '#sentryIssueIdentifier' do
+ let(:issue) { create(:issue, author: user) }
+
+ before do
+ assign(:project, issue.project)
+ end
+
+ it 'sets sentryIssueIdentifier to nil with no sentry issue ' do
+ expect(helper.issuable_initial_data(issue)[:sentryIssueIdentifier])
+ .to be_nil
+ end
+
+ it 'sets sentryIssueIdentifier to sentry_issue_identifier' do
+ sentry_issue = create(:sentry_issue, issue: issue)
+
+ expect(helper.issuable_initial_data(issue)[:sentryIssueIdentifier])
+ .to eq(sentry_issue.sentry_issue_identifier)
+ end
+ end
+
describe '#zoomMeetingUrl in issue' do
let(:issue) { create(:issue, author: user) }
@@ -258,6 +278,7 @@ describe IssuablesHelper do
describe '#assignee_sidebar_data' do
let(:user) { create(:user) }
let(:merge_request) { nil }
+
subject { helper.assignee_sidebar_data(user, merge_request: merge_request) }
it 'returns hash of assignee data' do
diff --git a/spec/helpers/labels_helper_spec.rb b/spec/helpers/labels_helper_spec.rb
index a715390ecae..3e92436241b 100644
--- a/spec/helpers/labels_helper_spec.rb
+++ b/spec/helpers/labels_helper_spec.rb
@@ -131,7 +131,7 @@ describe LabelsHelper do
context 'with a group as subject' do
it 'returns "Create group label"' do
- expect(create_label_title(group)).to eq 'Create group label'
+ expect(create_label_title(group)).to eq _('Create group label')
end
end
@@ -139,13 +139,13 @@ describe LabelsHelper do
set(:project) { create(:project, namespace: group) }
it 'returns "Create project label"' do
- expect(create_label_title(project)).to eq 'Create project label'
+ expect(create_label_title(project)).to eq _('Create project label')
end
end
context 'with no subject' do
it 'returns "Create new label"' do
- expect(create_label_title(nil)).to eq 'Create new label'
+ expect(create_label_title(nil)).to eq _('Create new label')
end
end
end
@@ -155,7 +155,7 @@ describe LabelsHelper do
context 'with a group as subject' do
it 'returns "Manage group labels"' do
- expect(manage_labels_title(group)).to eq 'Manage group labels'
+ expect(manage_labels_title(group)).to eq _('Manage group labels')
end
end
@@ -163,13 +163,13 @@ describe LabelsHelper do
set(:project) { create(:project, namespace: group) }
it 'returns "Manage project labels"' do
- expect(manage_labels_title(project)).to eq 'Manage project labels'
+ expect(manage_labels_title(project)).to eq _('Manage project labels')
end
end
context 'with no subject' do
it 'returns "Manage labels"' do
- expect(manage_labels_title(nil)).to eq 'Manage labels'
+ expect(manage_labels_title(nil)).to eq _('Manage labels')
end
end
end
@@ -179,7 +179,7 @@ describe LabelsHelper do
context 'with a group as subject' do
it 'returns "View group labels"' do
- expect(view_labels_title(group)).to eq 'View group labels'
+ expect(view_labels_title(group)).to eq _('View group labels')
end
end
@@ -187,13 +187,13 @@ describe LabelsHelper do
set(:project) { create(:project, namespace: group) }
it 'returns "View project labels"' do
- expect(view_labels_title(project)).to eq 'View project labels'
+ expect(view_labels_title(project)).to eq _('View project labels')
end
end
context 'with no subject' do
it 'returns "View labels"' do
- expect(view_labels_title(nil)).to eq 'View labels'
+ expect(view_labels_title(nil)).to eq _('View labels')
end
end
end
@@ -266,6 +266,7 @@ describe LabelsHelper do
describe '#label_status_tooltip' do
let(:status) { 'unsubscribed'.inquiry }
+
subject { label_status_tooltip(label.present(issuable_subject: nil), status) }
context 'with a project label' do
diff --git a/spec/helpers/markup_helper_spec.rb b/spec/helpers/markup_helper_spec.rb
index 5ca5f5703cf..fce0b5bd7e3 100644
--- a/spec/helpers/markup_helper_spec.rb
+++ b/spec/helpers/markup_helper_spec.rb
@@ -44,6 +44,7 @@ describe MarkupHelper do
describe "override default project" do
let(:actual) { issue.to_reference }
+
set(:second_project) { create(:project, :public) }
set(:second_issue) { create(:issue, project: second_project) }
@@ -55,6 +56,7 @@ describe MarkupHelper do
describe 'uploads' do
let(:text) { "![ImageTest](/uploads/test.png)" }
+
set(:group) { create(:group) }
subject { helper.markdown(text) }
diff --git a/spec/helpers/merge_requests_helper_spec.rb b/spec/helpers/merge_requests_helper_spec.rb
index 695d1520897..8db8c37038e 100644
--- a/spec/helpers/merge_requests_helper_spec.rb
+++ b/spec/helpers/merge_requests_helper_spec.rb
@@ -26,9 +26,35 @@ describe MergeRequestsHelper do
end
end
+ describe '#state_name_with_icon' do
+ using RSpec::Parameterized::TableSyntax
+
+ let(:merge_request) { MergeRequest.new }
+
+ where(:state, :expected_name, :expected_icon) do
+ :merged? | 'Merged' | 'git-merge'
+ :closed? | 'Closed' | 'close'
+ :opened? | 'Open' | 'issue-open-m'
+ end
+
+ with_them do
+ before do
+ allow(merge_request).to receive(state).and_return(true)
+ end
+
+ it 'returns name and icon' do
+ name, icon = helper.state_name_with_icon(merge_request)
+
+ expect(name).to eq(expected_name)
+ expect(icon).to eq(expected_icon)
+ end
+ end
+ end
+
describe '#format_mr_branch_names' do
describe 'within the same project' do
let(:merge_request) { create(:merge_request) }
+
subject { format_mr_branch_names(merge_request) }
it { is_expected.to eq([merge_request.source_branch, merge_request.target_branch]) }
diff --git a/spec/helpers/nav_helper_spec.rb b/spec/helpers/nav_helper_spec.rb
index 882a125a0da..8d7572c5b5f 100644
--- a/spec/helpers/nav_helper_spec.rb
+++ b/spec/helpers/nav_helper_spec.rb
@@ -42,6 +42,7 @@ describe NavHelper, :do_not_mock_admin_mode do
context 'with admin mode enabled' do
before do
+ current_user_mode.request_admin_mode!
current_user_mode.enable_admin_mode!(password: user.password)
end
@@ -62,6 +63,7 @@ describe NavHelper, :do_not_mock_admin_mode do
context 'with admin mode enabled' do
before do
+ current_user_mode.request_admin_mode!
current_user_mode.enable_admin_mode!(password: user.password)
end
@@ -89,11 +91,18 @@ describe NavHelper, :do_not_mock_admin_mode do
end
end
- it 'returns only the sign in and search when the user is not logged in' do
- allow(helper).to receive(:current_user).and_return(nil)
- allow(helper).to receive(:can?).with(nil, :read_cross_project) { true }
+ context 'when the user is not logged in' do
+ let(:current_user_mode) { Gitlab::Auth::CurrentUserMode.new(nil) }
- expect(helper.header_links).to contain_exactly(:sign_in, :search)
+ before do
+ allow(helper).to receive(:current_user).and_return(nil)
+ allow(helper).to receive(:current_user_mode).and_return(current_user_mode)
+ allow(helper).to receive(:can?).with(nil, :read_cross_project) { true }
+ end
+
+ it 'returns only the sign in and search when the user is not logged in' do
+ expect(helper.header_links).to contain_exactly(:sign_in, :search)
+ end
end
end
diff --git a/spec/helpers/projects/error_tracking_helper_spec.rb b/spec/helpers/projects/error_tracking_helper_spec.rb
index 5e7449e21b7..753144eef89 100644
--- a/spec/helpers/projects/error_tracking_helper_spec.rb
+++ b/spec/helpers/projects/error_tracking_helper_spec.rb
@@ -81,6 +81,7 @@ describe Projects::ErrorTrackingHelper do
let(:route_params) { [project.owner, project, issue_id, { format: :json }] }
let(:details_path) { details_namespace_project_error_tracking_index_path(*route_params) }
let(:stack_trace_path) { stack_trace_namespace_project_error_tracking_index_path(*route_params) }
+ let(:issues_path) { project_issues_path(project) }
let(:result) { helper.error_details_data(project, issue_id) }
@@ -91,5 +92,9 @@ describe Projects::ErrorTrackingHelper do
it 'returns the correct stack trace path' do
expect(result['issue-stack-trace-path']).to eq stack_trace_path
end
+
+ it 'creates an issue and redirects to issue show page' do
+ expect(result['project-issues-path']).to eq issues_path
+ end
end
end
diff --git a/spec/helpers/projects_helper_spec.rb b/spec/helpers/projects_helper_spec.rb
index cd1b1f91e9f..46228d0d1c2 100644
--- a/spec/helpers/projects_helper_spec.rb
+++ b/spec/helpers/projects_helper_spec.rb
@@ -157,6 +157,7 @@ describe ProjectsHelper do
allow(helper).to receive(:current_user).and_return(user)
allow(helper).to receive(:can?).with(user, :read_cross_project) { true }
allow(user).to receive(:max_member_access_for_project).and_return(40)
+ allow(Gitlab::I18n).to receive(:locale).and_return('es')
end
it "includes the route" do
@@ -203,6 +204,10 @@ describe ProjectsHelper do
expect(helper.project_list_cache_key(project)).to include("pipeline-status/#{project.commit.sha}-success")
end
+ it "includes the user locale" do
+ expect(helper.project_list_cache_key(project)).to include('es')
+ end
+
it "includes the user max member access" do
expect(helper.project_list_cache_key(project)).to include('access:40')
end
@@ -308,6 +313,7 @@ describe ProjectsHelper do
describe '#link_to_project' do
let(:group) { create(:group, name: 'group name with space') }
let(:project) { create(:project, group: group, name: 'project name with space') }
+
subject { link_to_project(project) }
it 'returns an HTML link to the project' do
@@ -501,7 +507,6 @@ describe ProjectsHelper do
it 'returns the command to push to create project over SSH' do
allow(Gitlab::CurrentSettings.current_application_settings).to receive(:enabled_git_access_protocol) { 'ssh' }
- allow(Gitlab.config.gitlab_shell).to receive(:ssh_path_prefix).and_return('git@localhost:')
expect(helper.push_to_create_project_command(user)).to eq("git push --set-upstream #{Gitlab.config.gitlab.user}@localhost:john/$(git rev-parse --show-toplevel | xargs basename).git $(git rev-parse --abbrev-ref HEAD)")
end
@@ -540,6 +545,7 @@ describe ProjectsHelper do
describe '#git_user_name' do
let(:user) { double(:user, name: 'John "A" Doe53') }
+
before do
allow(helper).to receive(:current_user).and_return(user)
end
@@ -562,6 +568,7 @@ describe ProjectsHelper do
context 'user logged in' do
let(:user) { create(:user) }
+
before do
allow(helper).to receive(:current_user).and_return(user)
end
diff --git a/spec/helpers/search_helper_spec.rb b/spec/helpers/search_helper_spec.rb
index bef6fbe3d5f..18c94602596 100644
--- a/spec/helpers/search_helper_spec.rb
+++ b/spec/helpers/search_helper_spec.rb
@@ -122,13 +122,13 @@ describe SearchHelper do
it 'uses the correct singular label' do
collection = Kaminari.paginate_array([:foo]).page(1).per(10)
- expect(search_entries_info(collection, scope, 'foo')).to eq("Showing 1 #{label} for \"foo\"")
+ expect(search_entries_info(collection, scope, 'foo')).to eq("Showing 1 #{label} for<span>&nbsp;<code>foo</code>&nbsp;</span>")
end
it 'uses the correct plural label' do
collection = Kaminari.paginate_array([:foo] * 23).page(1).per(10)
- expect(search_entries_info(collection, scope, 'foo')).to eq("Showing 1 - 10 of 23 #{label.pluralize} for \"foo\"")
+ expect(search_entries_info(collection, scope, 'foo')).to eq("Showing 1 - 10 of 23 #{label.pluralize} for<span>&nbsp;<code>foo</code>&nbsp;</span>")
end
end
diff --git a/spec/helpers/services_helper_spec.rb b/spec/helpers/services_helper_spec.rb
new file mode 100644
index 00000000000..edc14f86a50
--- /dev/null
+++ b/spec/helpers/services_helper_spec.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe ServicesHelper do
+ describe 'event_action_title' do
+ it { expect(event_action_title('comment')).to eq 'Comment' }
+ it { expect(event_action_title('something')).to eq 'Something' }
+ end
+
+ describe 'event_action_description' do
+ it { expect(event_action_description('comment')).to eq 'Comment will be posted on each event' }
+ it { expect(event_action_description('something')).to eq nil }
+ end
+end
diff --git a/spec/helpers/snippets_helper_spec.rb b/spec/helpers/snippets_helper_spec.rb
index d88e151a11c..6fdf4f5cfb4 100644
--- a/spec/helpers/snippets_helper_spec.rb
+++ b/spec/helpers/snippets_helper_spec.rb
@@ -9,100 +9,11 @@ describe SnippetsHelper do
let_it_be(:public_personal_snippet) { create(:personal_snippet, :public) }
let_it_be(:public_project_snippet) { create(:project_snippet, :public) }
- describe '#reliable_snippet_path' do
- subject { reliable_snippet_path(snippet) }
-
- context 'personal snippets' do
- let(:snippet) { public_personal_snippet }
-
- context 'public' do
- it 'returns a full path' do
- expect(subject).to eq("/snippets/#{snippet.id}")
- end
- end
- end
-
- context 'project snippets' do
- let(:snippet) { public_project_snippet }
-
- it 'returns a full path' do
- expect(subject).to eq("/#{snippet.project.full_path}/snippets/#{snippet.id}")
- end
- end
- end
-
- describe '#reliable_snippet_url' do
- subject { reliable_snippet_url(snippet) }
-
- context 'personal snippets' do
- let(:snippet) { public_personal_snippet }
-
- context 'public' do
- it 'returns a full url' do
- expect(subject).to eq("http://test.host/snippets/#{snippet.id}")
- end
- end
- end
-
- context 'project snippets' do
- let(:snippet) { public_project_snippet }
-
- it 'returns a full url' do
- expect(subject).to eq("http://test.host/#{snippet.project.full_path}/snippets/#{snippet.id}")
- end
- end
- end
-
- describe '#reliable_raw_snippet_path' do
- subject { reliable_raw_snippet_path(snippet) }
-
- context 'personal snippets' do
- let(:snippet) { public_personal_snippet }
-
- context 'public' do
- it 'returns a full path' do
- expect(subject).to eq("/snippets/#{snippet.id}/raw")
- end
- end
- end
-
- context 'project snippets' do
- let(:snippet) { public_project_snippet }
-
- it 'returns a full path' do
- expect(subject).to eq("/#{snippet.project.full_path}/snippets/#{snippet.id}/raw")
- end
- end
- end
-
- describe '#reliable_raw_snippet_url' do
- subject { reliable_raw_snippet_url(snippet) }
-
- context 'personal snippets' do
- let(:snippet) { public_personal_snippet }
-
- context 'public' do
- it 'returns a full url' do
- expect(subject).to eq("http://test.host/snippets/#{snippet.id}/raw")
- end
- end
- end
-
- context 'project snippets' do
- let(:snippet) { public_project_snippet }
-
- it 'returns a full url' do
- expect(subject).to eq("http://test.host/#{snippet.project.full_path}/snippets/#{snippet.id}/raw")
- end
- end
- end
-
describe '#embedded_raw_snippet_button' do
subject { embedded_raw_snippet_button.to_s }
it 'returns view raw button of embedded snippets for personal snippets' do
@snippet = create(:personal_snippet, :public)
-
expect(subject).to eq(download_link("http://test.host/snippets/#{@snippet.id}/raw"))
end
@@ -216,4 +127,28 @@ describe SnippetsHelper do
end
end
end
+
+ describe '#snippet_embed_input' do
+ subject { snippet_embed_input(snippet) }
+
+ context 'with PersonalSnippet' do
+ let(:snippet) { public_personal_snippet }
+
+ it 'returns the input component' do
+ expect(subject).to eq embed_input(snippet_url(snippet))
+ end
+ end
+
+ context 'with ProjectSnippet' do
+ let(:snippet) { public_project_snippet }
+
+ it 'returns the input component' do
+ expect(subject).to eq embed_input(project_snippet_url(snippet.project, snippet))
+ end
+ end
+
+ def embed_input(url)
+ "<input type=\"text\" readonly=\"readonly\" class=\"js-snippet-url-area snippet-embed-input form-control\" data-url=\"#{url}\" value=\"<script src=&quot;#{url}.js&quot;></script>\" autocomplete=\"off\"></input>"
+ end
+ end
end
diff --git a/spec/helpers/visibility_level_helper_spec.rb b/spec/helpers/visibility_level_helper_spec.rb
index 1a176cfe965..df338fac228 100644
--- a/spec/helpers/visibility_level_helper_spec.rb
+++ b/spec/helpers/visibility_level_helper_spec.rb
@@ -59,29 +59,29 @@ describe VisibilityLevelHelper do
describe "#project_visibility_level_description" do
it "describes private projects" do
expect(project_visibility_level_description(Gitlab::VisibilityLevel::PRIVATE))
- .to eq "Project access must be granted explicitly to each user."
+ .to eq _('Project access must be granted explicitly to each user.')
end
it "describes public projects" do
expect(project_visibility_level_description(Gitlab::VisibilityLevel::PUBLIC))
- .to eq "The project can be accessed without any authentication."
+ .to eq _('The project can be accessed without any authentication.')
end
end
describe "#snippet_visibility_level_description" do
it 'describes visibility only for me' do
expect(snippet_visibility_level_description(Gitlab::VisibilityLevel::PRIVATE, personal_snippet))
- .to eq "The snippet is visible only to me."
+ .to eq _('The snippet is visible only to me.')
end
it 'describes visibility for project members' do
expect(snippet_visibility_level_description(Gitlab::VisibilityLevel::PRIVATE, project_snippet))
- .to eq "The snippet is visible only to project members."
+ .to eq _('The snippet is visible only to project members.')
end
it 'defaults to personal snippet' do
expect(snippet_visibility_level_description(Gitlab::VisibilityLevel::PRIVATE))
- .to eq "The snippet is visible only to me."
+ .to eq _('The snippet is visible only to me.')
end
end
diff --git a/spec/helpers/wiki_helper_spec.rb b/spec/helpers/wiki_helper_spec.rb
index bcc2bd71da1..1aab01281c6 100644
--- a/spec/helpers/wiki_helper_spec.rb
+++ b/spec/helpers/wiki_helper_spec.rb
@@ -27,7 +27,7 @@ describe WikiHelper do
let(:classes) { "btn btn-default has-tooltip reverse-sort-btn qa-reverse-sort rspec-reverse-sort" }
def expected_link(sort, direction, icon_class)
- path = "/#{project.full_path}/wikis/pages?direction=#{direction}&sort=#{sort}"
+ path = "/#{project.full_path}/-/wikis/pages?direction=#{direction}&sort=#{sort}"
helper.link_to(path, type: 'button', class: classes, title: 'Sort direction') do
helper.sprite_icon("sort-#{icon_class}", size: 16)
diff --git a/spec/initializers/direct_upload_support_spec.rb b/spec/initializers/direct_upload_support_spec.rb
index 4b3fe871cef..7db40f4b5ab 100644
--- a/spec/initializers/direct_upload_support_spec.rb
+++ b/spec/initializers/direct_upload_support_spec.rb
@@ -56,7 +56,7 @@ describe 'Direct upload support' do
let(:connection) { nil }
it 'raises an error' do
- expect { subject }.to raise_error /are supported as a object storage provider when 'direct_upload' is used/
+ expect { subject }.to raise_error "No provider configured for '#{config_name}'. Only Google, AWS are supported."
end
end
@@ -64,7 +64,20 @@ describe 'Direct upload support' do
let(:provider) { 'Rackspace' }
it 'raises an error' do
- expect { subject }.to raise_error /are supported as a object storage provider when 'direct_upload' is used/
+ expect { subject }.to raise_error /Object storage provider '#{provider}' is not supported when 'direct_upload' is used for '#{config_name}'/
+ end
+ end
+
+ context 'when connection is omitted' do
+ let(:object_store) do
+ {
+ enabled: enabled,
+ direct_upload: direct_upload
+ }
+ end
+
+ it 'raises an error' do
+ expect { subject }.to raise_error /the 'connection' section is missing/
end
end
end
diff --git a/spec/javascripts/badges/components/badge_form_spec.js b/spec/javascripts/badges/components/badge_form_spec.js
index 651ac3ba3f9..c7aa7fa63b1 100644
--- a/spec/javascripts/badges/components/badge_form_spec.js
+++ b/spec/javascripts/badges/components/badge_form_spec.js
@@ -1,10 +1,10 @@
import Vue from 'vue';
import MockAdapter from 'axios-mock-adapter';
+import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import axios from '~/lib/utils/axios_utils';
import store from '~/badges/store';
import createEmptyBadge from '~/badges/empty_badge';
import BadgeForm from '~/badges/components/badge_form.vue';
-import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { DUMMY_IMAGE_URL, TEST_HOST } from '../../test_constants';
// avoid preview background process
@@ -51,13 +51,14 @@ describe('BadgeForm component', () => {
});
const sharedSubmitTests = submitAction => {
+ const nameSelector = '#badge-name';
const imageUrlSelector = '#badge-image-url';
const findImageUrlElement = () => vm.$el.querySelector(imageUrlSelector);
const linkUrlSelector = '#badge-link-url';
const findLinkUrlElement = () => vm.$el.querySelector(linkUrlSelector);
- const setValue = (inputElementSelector, url) => {
+ const setValue = (inputElementSelector, value) => {
const inputElement = vm.$el.querySelector(inputElementSelector);
- inputElement.value = url;
+ inputElement.value = value;
inputElement.dispatchEvent(new Event('input'));
};
const submitForm = () => {
@@ -82,6 +83,7 @@ describe('BadgeForm component', () => {
isSaving: false,
});
+ setValue(nameSelector, 'TestBadge');
setValue(linkUrlSelector, `${TEST_HOST}/link/url`);
setValue(imageUrlSelector, `${window.location.origin}${DUMMY_IMAGE_URL}`);
});
diff --git a/spec/javascripts/badges/components/badge_list_row_spec.js b/spec/javascripts/badges/components/badge_list_row_spec.js
index a5b47cc5f32..d1434737085 100644
--- a/spec/javascripts/badges/components/badge_list_row_spec.js
+++ b/spec/javascripts/badges/components/badge_list_row_spec.js
@@ -1,9 +1,9 @@
import $ from 'jquery';
import Vue from 'vue';
+import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { GROUP_BADGE, PROJECT_BADGE } from '~/badges/constants';
import store from '~/badges/store';
import BadgeListRow from '~/badges/components/badge_list_row.vue';
-import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { createDummyBadge } from '../dummy_badge';
describe('BadgeListRow component', () => {
@@ -39,6 +39,10 @@ describe('BadgeListRow component', () => {
expect(badgeElement.getAttribute('src')).toBe(badge.renderedImageUrl);
});
+ it('renders the badge name', () => {
+ expect(vm.$el).toContainText(badge.name);
+ });
+
it('renders the badge link', () => {
expect(vm.$el).toContainText(badge.linkUrl);
});
diff --git a/spec/javascripts/badges/components/badge_list_spec.js b/spec/javascripts/badges/components/badge_list_spec.js
index 2fa807657de..3af194454e3 100644
--- a/spec/javascripts/badges/components/badge_list_spec.js
+++ b/spec/javascripts/badges/components/badge_list_spec.js
@@ -1,8 +1,8 @@
import Vue from 'vue';
+import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { GROUP_BADGE, PROJECT_BADGE } from '~/badges/constants';
import store from '~/badges/store';
import BadgeList from '~/badges/components/badge_list.vue';
-import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { createDummyBadge } from '../dummy_badge';
describe('BadgeList component', () => {
diff --git a/spec/javascripts/badges/components/badge_settings_spec.js b/spec/javascripts/badges/components/badge_settings_spec.js
index aca26b736ca..479a905661b 100644
--- a/spec/javascripts/badges/components/badge_settings_spec.js
+++ b/spec/javascripts/badges/components/badge_settings_spec.js
@@ -1,8 +1,8 @@
import $ from 'jquery';
import Vue from 'vue';
+import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import store from '~/badges/store';
import BadgeSettings from '~/badges/components/badge_settings.vue';
-import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { createDummyBadge } from '../dummy_badge';
describe('BadgeSettings component', () => {
diff --git a/spec/javascripts/badges/components/badge_spec.js b/spec/javascripts/badges/components/badge_spec.js
index c82a03a628a..14490b1bbd1 100644
--- a/spec/javascripts/badges/components/badge_spec.js
+++ b/spec/javascripts/badges/components/badge_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
-import Badge from '~/badges/components/badge.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
import { DUMMY_IMAGE_URL, TEST_HOST } from 'spec/test_constants';
+import Badge from '~/badges/components/badge.vue';
describe('Badge component', () => {
const Component = Vue.extend(Badge);
diff --git a/spec/javascripts/badges/dummy_badge.js b/spec/javascripts/badges/dummy_badge.js
index f0cdaddbd33..e8a460cdc76 100644
--- a/spec/javascripts/badges/dummy_badge.js
+++ b/spec/javascripts/badges/dummy_badge.js
@@ -1,11 +1,12 @@
import _ from 'underscore';
-import { PROJECT_BADGE } from '~/badges/constants';
import { DUMMY_IMAGE_URL, TEST_HOST } from 'spec/test_constants';
+import { PROJECT_BADGE } from '~/badges/constants';
export const createDummyBadge = () => {
const id = _.uniqueId();
return {
id,
+ name: 'TestBadge',
imageUrl: `${TEST_HOST}/badges/${id}/image/url`,
isDeleting: false,
linkUrl: `${TEST_HOST}/badges/${id}/link/url`,
@@ -16,6 +17,7 @@ export const createDummyBadge = () => {
};
export const createDummyBadgeResponse = () => ({
+ name: 'TestBadge',
image_url: `${TEST_HOST}/badge/image/url`,
link_url: `${TEST_HOST}/badge/link/url`,
kind: PROJECT_BADGE,
diff --git a/spec/javascripts/badges/store/actions_spec.js b/spec/javascripts/badges/store/actions_spec.js
index e8d5f8c3aac..d92155d59b5 100644
--- a/spec/javascripts/badges/store/actions_spec.js
+++ b/spec/javascripts/badges/store/actions_spec.js
@@ -1,10 +1,10 @@
-import axios from '~/lib/utils/axios_utils';
import MockAdapter from 'axios-mock-adapter';
+import { TEST_HOST } from 'spec/test_constants';
+import testAction from 'spec/helpers/vuex_action_helper';
+import axios from '~/lib/utils/axios_utils';
import actions, { transformBackendBadge } from '~/badges/store/actions';
import mutationTypes from '~/badges/store/mutation_types';
import createState from '~/badges/store/state';
-import { TEST_HOST } from 'spec/test_constants';
-import testAction from 'spec/helpers/vuex_action_helper';
import { createDummyBadge, createDummyBadgeResponse } from '../dummy_badge';
describe('Badges store actions', () => {
@@ -90,6 +90,7 @@ describe('Badges store actions', () => {
endpointMock.replyOnce(req => {
expect(req.data).toBe(
JSON.stringify({
+ name: 'TestBadge',
image_url: badgeInAddForm.imageUrl,
link_url: badgeInAddForm.linkUrl,
}),
@@ -114,6 +115,7 @@ describe('Badges store actions', () => {
endpointMock.replyOnce(req => {
expect(req.data).toBe(
JSON.stringify({
+ name: 'TestBadge',
image_url: badgeInAddForm.imageUrl,
link_url: badgeInAddForm.linkUrl,
}),
@@ -526,6 +528,7 @@ describe('Badges store actions', () => {
endpointMock.replyOnce(req => {
expect(req.data).toBe(
JSON.stringify({
+ name: 'TestBadge',
image_url: badgeInEditForm.imageUrl,
link_url: badgeInEditForm.linkUrl,
}),
@@ -550,6 +553,7 @@ describe('Badges store actions', () => {
endpointMock.replyOnce(req => {
expect(req.data).toBe(
JSON.stringify({
+ name: 'TestBadge',
image_url: badgeInEditForm.imageUrl,
link_url: badgeInEditForm.linkUrl,
}),
diff --git a/spec/javascripts/blob/balsamiq/balsamiq_viewer_integration_spec.js b/spec/javascripts/blob/balsamiq/balsamiq_viewer_integration_spec.js
index 33210794ba1..0c2b7b7392d 100644
--- a/spec/javascripts/blob/balsamiq/balsamiq_viewer_integration_spec.js
+++ b/spec/javascripts/blob/balsamiq/balsamiq_viewer_integration_spec.js
@@ -1,5 +1,5 @@
-import BalsamiqViewer from '~/blob/balsamiq/balsamiq_viewer';
import { FIXTURES_PATH } from 'spec/test_constants';
+import BalsamiqViewer from '~/blob/balsamiq/balsamiq_viewer';
const bmprPath = `${FIXTURES_PATH}/blob/balsamiq/test.bmpr`;
diff --git a/spec/javascripts/blob/pdf/index_spec.js b/spec/javascripts/blob/pdf/index_spec.js
index 6fa3890483c..6ea097da742 100644
--- a/spec/javascripts/blob/pdf/index_spec.js
+++ b/spec/javascripts/blob/pdf/index_spec.js
@@ -1,5 +1,5 @@
-import renderPDF from '~/blob/pdf';
import { FIXTURES_PATH } from 'spec/test_constants';
+import renderPDF from '~/blob/pdf';
const testPDF = `${FIXTURES_PATH}/blob/pdf/test.pdf`;
diff --git a/spec/javascripts/blob_edit/blob_bundle_spec.js b/spec/javascripts/blob_edit/blob_bundle_spec.js
index 48af0148e3f..06c6a603155 100644
--- a/spec/javascripts/blob_edit/blob_bundle_spec.js
+++ b/spec/javascripts/blob_edit/blob_bundle_spec.js
@@ -1,5 +1,5 @@
-import blobBundle from '~/blob_edit/blob_bundle';
import $ from 'jquery';
+import blobBundle from '~/blob_edit/blob_bundle';
describe('BlobBundle', () => {
beforeEach(() => {
diff --git a/spec/javascripts/boards/board_card_spec.js b/spec/javascripts/boards/board_card_spec.js
index 51433a58212..72367377929 100644
--- a/spec/javascripts/boards/board_card_spec.js
+++ b/spec/javascripts/boards/board_card_spec.js
@@ -13,7 +13,7 @@ import '~/boards/models/list';
import store from '~/boards/stores';
import boardsStore from '~/boards/stores/boards_store';
import boardCard from '~/boards/components/board_card.vue';
-import { listObj, boardsMockInterceptor, mockBoardService } from './mock_data';
+import { listObj, boardsMockInterceptor, setMockEndpoints } from './mock_data';
describe('Board card', () => {
let vm;
@@ -22,8 +22,8 @@ describe('Board card', () => {
beforeEach(done => {
mock = new MockAdapter(axios);
mock.onAny().reply(boardsMockInterceptor);
+ setMockEndpoints();
- gl.boardService = mockBoardService();
boardsStore.create();
boardsStore.detail.issue = {};
diff --git a/spec/javascripts/boards/board_list_common_spec.js b/spec/javascripts/boards/board_list_common_spec.js
index ada7589b795..b51a82f2a35 100644
--- a/spec/javascripts/boards/board_list_common_spec.js
+++ b/spec/javascripts/boards/board_list_common_spec.js
@@ -3,13 +3,13 @@
import MockAdapter from 'axios-mock-adapter';
import Vue from 'vue';
-import axios from '~/lib/utils/axios_utils';
import Sortable from 'sortablejs';
+import axios from '~/lib/utils/axios_utils';
import BoardList from '~/boards/components/board_list.vue';
import '~/boards/models/issue';
import '~/boards/models/list';
-import { listObj, boardsMockInterceptor, mockBoardService } from './mock_data';
+import { listObj, boardsMockInterceptor } from './mock_data';
import store from '~/boards/stores';
import boardsStore from '~/boards/stores/boards_store';
@@ -26,7 +26,6 @@ export default function createComponent({
document.body.appendChild(el);
const mock = new MockAdapter(axios);
mock.onAny().reply(boardsMockInterceptor);
- gl.boardService = mockBoardService();
boardsStore.create();
const BoardListComp = Vue.extend(BoardList);
diff --git a/spec/javascripts/boards/board_list_spec.js b/spec/javascripts/boards/board_list_spec.js
index 37e96e97279..b4e1d3b97b1 100644
--- a/spec/javascripts/boards/board_list_spec.js
+++ b/spec/javascripts/boards/board_list_spec.js
@@ -207,4 +207,56 @@ describe('Board list component', () => {
.catch(done.fail);
});
});
+
+ describe('max issue count warning', () => {
+ beforeEach(done => {
+ ({ mock, component } = createComponent({
+ done,
+ listProps: { type: 'closed', collapsed: true, issuesSize: 50 },
+ }));
+ });
+
+ afterEach(() => {
+ mock.restore();
+ component.$destroy();
+ });
+
+ describe('when issue count exceeds max issue count', () => {
+ it('sets background to bg-danger-100', done => {
+ component.list.issuesSize = 4;
+ component.list.maxIssueCount = 3;
+
+ Vue.nextTick(() => {
+ expect(component.$el.querySelector('.bg-danger-100')).not.toBeNull();
+
+ done();
+ });
+ });
+ });
+
+ describe('when list issue count does NOT exceed list max issue count', () => {
+ it('does not sets background to bg-danger-100', done => {
+ component.list.issuesSize = 2;
+ component.list.maxIssueCount = 3;
+
+ Vue.nextTick(() => {
+ expect(component.$el.querySelector('.bg-danger-100')).toBeNull();
+
+ done();
+ });
+ });
+ });
+
+ describe('when list max issue count is 0', () => {
+ it('does not sets background to bg-danger-100', done => {
+ component.list.maxIssueCount = 0;
+
+ Vue.nextTick(() => {
+ expect(component.$el.querySelector('.bg-danger-100')).toBeNull();
+
+ done();
+ });
+ });
+ });
+ });
});
diff --git a/spec/javascripts/boards/board_new_issue_spec.js b/spec/javascripts/boards/board_new_issue_spec.js
index 76675a78db2..8e4093cc25c 100644
--- a/spec/javascripts/boards/board_new_issue_spec.js
+++ b/spec/javascripts/boards/board_new_issue_spec.js
@@ -7,7 +7,7 @@ import boardNewIssue from '~/boards/components/board_new_issue.vue';
import boardsStore from '~/boards/stores/boards_store';
import '~/boards/models/list';
-import { listObj, boardsMockInterceptor, mockBoardService } from './mock_data';
+import { listObj, boardsMockInterceptor } from './mock_data';
describe('Issue boards new issue form', () => {
let vm;
@@ -36,7 +36,6 @@ describe('Issue boards new issue form', () => {
mock = new MockAdapter(axios);
mock.onAny().reply(boardsMockInterceptor);
- gl.boardService = mockBoardService();
boardsStore.create();
list = new List(listObj);
diff --git a/spec/javascripts/boards/boards_store_spec.js b/spec/javascripts/boards/boards_store_spec.js
deleted file mode 100644
index 678fe5befa8..00000000000
--- a/spec/javascripts/boards/boards_store_spec.js
+++ /dev/null
@@ -1,511 +0,0 @@
-/* global ListIssue */
-
-import MockAdapter from 'axios-mock-adapter';
-import axios from '~/lib/utils/axios_utils';
-import Cookies from 'js-cookie';
-
-import '~/boards/models/label';
-import '~/boards/models/assignee';
-import '~/boards/models/issue';
-import '~/boards/models/list';
-import '~/boards/services/board_service';
-import boardsStore from '~/boards/stores/boards_store';
-import eventHub from '~/boards/eventhub';
-import { listObj, listObjDuplicate, boardsMockInterceptor, mockBoardService } from './mock_data';
-import waitForPromises from '../../frontend/helpers/wait_for_promises';
-
-describe('Store', () => {
- let mock;
-
- beforeEach(() => {
- mock = new MockAdapter(axios);
- mock.onAny().reply(boardsMockInterceptor);
- gl.boardService = mockBoardService();
- boardsStore.create();
-
- spyOn(gl.boardService, 'moveIssue').and.callFake(
- () =>
- new Promise(resolve => {
- resolve();
- }),
- );
-
- spyOn(gl.boardService, 'moveMultipleIssues').and.callFake(
- () =>
- new Promise(resolve => {
- resolve();
- }),
- );
-
- Cookies.set('issue_board_welcome_hidden', 'false', {
- expires: 365 * 10,
- path: '',
- });
- });
-
- afterEach(() => {
- mock.restore();
- });
-
- it('starts with a blank state', () => {
- expect(boardsStore.state.lists.length).toBe(0);
- });
-
- describe('addList', () => {
- it('sorts by position', () => {
- boardsStore.addList({ position: 2 });
- boardsStore.addList({ position: 1 });
-
- expect(boardsStore.state.lists[0].position).toBe(1);
- });
- });
-
- describe('toggleFilter', () => {
- const dummyFilter = 'x=42';
- let updateTokensSpy;
-
- beforeEach(() => {
- updateTokensSpy = jasmine.createSpy('updateTokens');
- eventHub.$once('updateTokens', updateTokensSpy);
-
- // prevent using window.history
- spyOn(boardsStore, 'updateFiltersUrl').and.callFake(() => {});
- });
-
- it('adds the filter if it is not present', () => {
- boardsStore.filter.path = 'something';
-
- boardsStore.toggleFilter(dummyFilter);
-
- expect(boardsStore.filter.path).toEqual(`something&${dummyFilter}`);
- expect(updateTokensSpy).toHaveBeenCalled();
- expect(boardsStore.updateFiltersUrl).toHaveBeenCalled();
- });
-
- it('removes the filter if it is present', () => {
- boardsStore.filter.path = `something&${dummyFilter}`;
-
- boardsStore.toggleFilter(dummyFilter);
-
- expect(boardsStore.filter.path).toEqual('something');
- expect(updateTokensSpy).toHaveBeenCalled();
- expect(boardsStore.updateFiltersUrl).toHaveBeenCalled();
- });
- });
-
- describe('lists', () => {
- it('creates new list without persisting to DB', () => {
- boardsStore.addList(listObj);
-
- expect(boardsStore.state.lists.length).toBe(1);
- });
-
- it('finds list by ID', () => {
- boardsStore.addList(listObj);
- const list = boardsStore.findList('id', listObj.id);
-
- expect(list.id).toBe(listObj.id);
- });
-
- it('finds list by type', () => {
- boardsStore.addList(listObj);
- const list = boardsStore.findList('type', 'label');
-
- expect(list).toBeDefined();
- });
-
- it('finds list by label ID', () => {
- boardsStore.addList(listObj);
- const list = boardsStore.findListByLabelId(listObj.label.id);
-
- expect(list.id).toBe(listObj.id);
- });
-
- it('gets issue when new list added', done => {
- boardsStore.addList(listObj);
- const list = boardsStore.findList('id', listObj.id);
-
- expect(boardsStore.state.lists.length).toBe(1);
-
- setTimeout(() => {
- expect(list.issues.length).toBe(1);
- expect(list.issues[0].id).toBe(1);
- done();
- }, 0);
- });
-
- it('persists new list', done => {
- boardsStore.new({
- title: 'Test',
- list_type: 'label',
- label: {
- id: 1,
- title: 'Testing',
- color: 'red',
- description: 'testing;',
- },
- });
-
- expect(boardsStore.state.lists.length).toBe(1);
-
- setTimeout(() => {
- const list = boardsStore.findList('id', listObj.id);
-
- expect(list).toBeDefined();
- expect(list.id).toBe(listObj.id);
- expect(list.position).toBe(0);
- done();
- }, 0);
- });
-
- it('check for blank state adding', () => {
- expect(boardsStore.shouldAddBlankState()).toBe(true);
- });
-
- it('check for blank state not adding', () => {
- boardsStore.addList(listObj);
-
- expect(boardsStore.shouldAddBlankState()).toBe(false);
- });
-
- it('check for blank state adding when closed list exist', () => {
- boardsStore.addList({
- list_type: 'closed',
- });
-
- expect(boardsStore.shouldAddBlankState()).toBe(true);
- });
-
- it('adds the blank state', () => {
- boardsStore.addBlankState();
-
- const list = boardsStore.findList('type', 'blank', 'blank');
-
- expect(list).toBeDefined();
- });
-
- it('removes list from state', () => {
- boardsStore.addList(listObj);
-
- expect(boardsStore.state.lists.length).toBe(1);
-
- boardsStore.removeList(listObj.id, 'label');
-
- expect(boardsStore.state.lists.length).toBe(0);
- });
-
- it('moves the position of lists', () => {
- const listOne = boardsStore.addList(listObj);
- boardsStore.addList(listObjDuplicate);
-
- expect(boardsStore.state.lists.length).toBe(2);
-
- boardsStore.moveList(listOne, [listObjDuplicate.id, listObj.id]);
-
- expect(listOne.position).toBe(1);
- });
-
- it('moves an issue from one list to another', done => {
- const listOne = boardsStore.addList(listObj);
- const listTwo = boardsStore.addList(listObjDuplicate);
-
- expect(boardsStore.state.lists.length).toBe(2);
-
- setTimeout(() => {
- expect(listOne.issues.length).toBe(1);
- expect(listTwo.issues.length).toBe(1);
-
- boardsStore.moveIssueToList(listOne, listTwo, listOne.findIssue(1));
-
- expect(listOne.issues.length).toBe(0);
- expect(listTwo.issues.length).toBe(1);
-
- done();
- }, 0);
- });
-
- it('moves an issue from backlog to a list', done => {
- const backlog = boardsStore.addList({
- ...listObj,
- list_type: 'backlog',
- });
- const listTwo = boardsStore.addList(listObjDuplicate);
-
- expect(boardsStore.state.lists.length).toBe(2);
-
- setTimeout(() => {
- expect(backlog.issues.length).toBe(1);
- expect(listTwo.issues.length).toBe(1);
-
- boardsStore.moveIssueToList(backlog, listTwo, backlog.findIssue(1));
-
- expect(backlog.issues.length).toBe(0);
- expect(listTwo.issues.length).toBe(1);
-
- done();
- }, 0);
- });
-
- it('moves issue to top of another list', done => {
- const listOne = boardsStore.addList(listObj);
- const listTwo = boardsStore.addList(listObjDuplicate);
-
- expect(boardsStore.state.lists.length).toBe(2);
-
- setTimeout(() => {
- listOne.issues[0].id = 2;
-
- expect(listOne.issues.length).toBe(1);
- expect(listTwo.issues.length).toBe(1);
-
- boardsStore.moveIssueToList(listOne, listTwo, listOne.findIssue(2), 0);
-
- expect(listOne.issues.length).toBe(0);
- expect(listTwo.issues.length).toBe(2);
- expect(listTwo.issues[0].id).toBe(2);
- expect(gl.boardService.moveIssue).toHaveBeenCalledWith(2, listOne.id, listTwo.id, null, 1);
-
- done();
- }, 0);
- });
-
- it('moves issue to bottom of another list', done => {
- const listOne = boardsStore.addList(listObj);
- const listTwo = boardsStore.addList(listObjDuplicate);
-
- expect(boardsStore.state.lists.length).toBe(2);
-
- setTimeout(() => {
- listOne.issues[0].id = 2;
-
- expect(listOne.issues.length).toBe(1);
- expect(listTwo.issues.length).toBe(1);
-
- boardsStore.moveIssueToList(listOne, listTwo, listOne.findIssue(2), 1);
-
- expect(listOne.issues.length).toBe(0);
- expect(listTwo.issues.length).toBe(2);
- expect(listTwo.issues[1].id).toBe(2);
- expect(gl.boardService.moveIssue).toHaveBeenCalledWith(2, listOne.id, listTwo.id, 1, null);
-
- done();
- }, 0);
- });
-
- it('moves issue in list', done => {
- const issue = new ListIssue({
- title: 'Testing',
- id: 2,
- iid: 2,
- confidential: false,
- labels: [],
- assignees: [],
- });
- const list = boardsStore.addList(listObj);
-
- setTimeout(() => {
- list.addIssue(issue);
-
- expect(list.issues.length).toBe(2);
-
- boardsStore.moveIssueInList(list, issue, 0, 1, [1, 2]);
-
- expect(list.issues[0].id).toBe(2);
- expect(gl.boardService.moveIssue).toHaveBeenCalledWith(2, null, null, 1, null);
-
- done();
- });
- });
- });
-
- describe('setListDetail', () => {
- it('sets the list detail', () => {
- boardsStore.detail.list = 'not a list';
-
- const dummyValue = 'new list';
- boardsStore.setListDetail(dummyValue);
-
- expect(boardsStore.detail.list).toEqual(dummyValue);
- });
- });
-
- describe('clearDetailIssue', () => {
- it('resets issue details', () => {
- boardsStore.detail.issue = 'something';
-
- boardsStore.clearDetailIssue();
-
- expect(boardsStore.detail.issue).toEqual({});
- });
- });
-
- describe('setIssueDetail', () => {
- it('sets issue details', () => {
- boardsStore.detail.issue = 'some details';
-
- const dummyValue = 'new details';
- boardsStore.setIssueDetail(dummyValue);
-
- expect(boardsStore.detail.issue).toEqual(dummyValue);
- });
- });
-
- describe('startMoving', () => {
- it('stores list and issue', () => {
- const dummyIssue = 'some issue';
- const dummyList = 'some list';
-
- boardsStore.startMoving(dummyList, dummyIssue);
-
- expect(boardsStore.moving.issue).toEqual(dummyIssue);
- expect(boardsStore.moving.list).toEqual(dummyList);
- });
- });
-
- describe('setTimeTrackingLimitToHours', () => {
- it('sets the timeTracking.LimitToHours option', () => {
- boardsStore.timeTracking.limitToHours = false;
-
- boardsStore.setTimeTrackingLimitToHours('true');
-
- expect(boardsStore.timeTracking.limitToHours).toEqual(true);
- });
- });
-
- describe('setCurrentBoard', () => {
- const dummyBoard = 'hoverboard';
-
- it('sets the current board', () => {
- const { state } = boardsStore;
- state.currentBoard = null;
-
- boardsStore.setCurrentBoard(dummyBoard);
-
- expect(state.currentBoard).toEqual(dummyBoard);
- });
- });
-
- describe('toggleMultiSelect', () => {
- let basicIssueObj;
-
- beforeAll(() => {
- basicIssueObj = { id: 987654 };
- });
-
- afterEach(() => {
- boardsStore.clearMultiSelect();
- });
-
- it('adds issue when not present', () => {
- boardsStore.toggleMultiSelect(basicIssueObj);
-
- const selectedIds = boardsStore.multiSelect.list.map(x => x.id);
-
- expect(selectedIds.includes(basicIssueObj.id)).toEqual(true);
- });
-
- it('removes issue when issue is present', () => {
- boardsStore.toggleMultiSelect(basicIssueObj);
- let selectedIds = boardsStore.multiSelect.list.map(x => x.id);
-
- expect(selectedIds.includes(basicIssueObj.id)).toEqual(true);
-
- boardsStore.toggleMultiSelect(basicIssueObj);
- selectedIds = boardsStore.multiSelect.list.map(x => x.id);
-
- expect(selectedIds.includes(basicIssueObj.id)).toEqual(false);
- });
- });
-
- describe('clearMultiSelect', () => {
- it('clears all the multi selected issues', () => {
- const issue1 = { id: 12345 };
- const issue2 = { id: 12346 };
-
- boardsStore.toggleMultiSelect(issue1);
- boardsStore.toggleMultiSelect(issue2);
-
- expect(boardsStore.multiSelect.list.length).toEqual(2);
-
- boardsStore.clearMultiSelect();
-
- expect(boardsStore.multiSelect.list.length).toEqual(0);
- });
- });
-
- describe('moveMultipleIssuesToList', () => {
- it('move issues on the new index', done => {
- const listOne = boardsStore.addList(listObj);
- const listTwo = boardsStore.addList(listObjDuplicate);
-
- expect(boardsStore.state.lists.length).toBe(2);
-
- setTimeout(() => {
- expect(listOne.issues.length).toBe(1);
- expect(listTwo.issues.length).toBe(1);
-
- boardsStore.moveMultipleIssuesToList({
- listFrom: listOne,
- listTo: listTwo,
- issues: listOne.issues,
- newIndex: 0,
- });
-
- expect(listTwo.issues.length).toBe(1);
-
- done();
- }, 0);
- });
- });
-
- describe('moveMultipleIssuesInList', () => {
- it('moves multiple issues in list', done => {
- const issueObj = {
- title: 'Issue #1',
- id: 12345,
- iid: 2,
- confidential: false,
- labels: [],
- assignees: [],
- };
- const issue1 = new ListIssue(issueObj);
- const issue2 = new ListIssue({
- ...issueObj,
- title: 'Issue #2',
- id: 12346,
- });
-
- const list = boardsStore.addList(listObj);
-
- waitForPromises()
- .then(() => {
- list.addIssue(issue1);
- list.addIssue(issue2);
-
- expect(list.issues.length).toBe(3);
- expect(list.issues[0].id).not.toBe(issue2.id);
-
- boardsStore.moveMultipleIssuesInList({
- list,
- issues: [issue1, issue2],
- oldIndicies: [0],
- newIndex: 1,
- idArray: [1, 12345, 12346],
- });
-
- expect(list.issues[0].id).toBe(issue1.id);
-
- expect(gl.boardService.moveMultipleIssues).toHaveBeenCalledWith({
- ids: [issue1.id, issue2.id],
- fromListId: null,
- toListId: null,
- moveBeforeId: 1,
- moveAfterId: null,
- });
-
- done();
- })
- .catch(done.fail);
- });
- });
-});
diff --git a/spec/javascripts/boards/components/board_form_spec.js b/spec/javascripts/boards/components/board_form_spec.js
index e9014156a98..fd1c79d44e1 100644
--- a/spec/javascripts/boards/components/board_form_spec.js
+++ b/spec/javascripts/boards/components/board_form_spec.js
@@ -1,8 +1,8 @@
import $ from 'jquery';
import Vue from 'vue';
+import mountComponent from 'spec/helpers/vue_mount_component_helper';
import boardsStore from '~/boards/stores/boards_store';
import boardForm from '~/boards/components/board_form.vue';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
describe('board_form.vue', () => {
const props = {
diff --git a/spec/javascripts/boards/components/board_spec.js b/spec/javascripts/boards/components/board_spec.js
index ccb657e0df1..86a2a10b7a0 100644
--- a/spec/javascripts/boards/components/board_spec.js
+++ b/spec/javascripts/boards/components/board_spec.js
@@ -1,7 +1,6 @@
import Vue from 'vue';
import Board from '~/boards/components/board';
import List from '~/boards/models/list';
-import { mockBoardService } from '../mock_data';
describe('Board component', () => {
let vm;
@@ -35,13 +34,6 @@ describe('Board component', () => {
const setUpTests = (done, opts = {}) => {
loadFixtures('boards/show.html');
- gl.boardService = mockBoardService({
- boardsEndpoint: '/',
- listsEndpoint: '/',
- bulkUpdatePath: '/',
- boardId: 1,
- });
-
createComponent(opts);
Vue.nextTick(done);
@@ -61,15 +53,6 @@ describe('Board component', () => {
};
describe('List', () => {
- beforeEach(() => {
- gl.boardService = mockBoardService({
- boardsEndpoint: '/',
- listsEndpoint: '/',
- bulkUpdatePath: '/',
- boardId: 1,
- });
- });
-
it('board is expandable when list type is closed', () => {
expect(new List({ id: 1, list_type: 'closed' }).isExpandable).toBe(true);
});
diff --git a/spec/javascripts/boards/components/boards_selector_spec.js b/spec/javascripts/boards/components/boards_selector_spec.js
index d1f36a0a652..16ec3b801cd 100644
--- a/spec/javascripts/boards/components/boards_selector_spec.js
+++ b/spec/javascripts/boards/components/boards_selector_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
-import BoardsSelector from '~/boards/components/boards_selector.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
import { TEST_HOST } from 'spec/test_constants';
+import BoardsSelector from '~/boards/components/boards_selector.vue';
import boardsStore from '~/boards/stores/boards_store';
const throttleDuration = 1;
diff --git a/spec/javascripts/boards/components/issue_card_inner_scoped_label_spec.js b/spec/javascripts/boards/components/issue_card_inner_scoped_label_spec.js
index c62c5b9962d..6ac51ebdb2d 100644
--- a/spec/javascripts/boards/components/issue_card_inner_scoped_label_spec.js
+++ b/spec/javascripts/boards/components/issue_card_inner_scoped_label_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import IssueCardInnerScopedLabel from '~/boards/components/issue_card_inner_scoped_label.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import IssueCardInnerScopedLabel from '~/boards/components/issue_card_inner_scoped_label.vue';
describe('IssueCardInnerScopedLabel Component', () => {
let vm;
diff --git a/spec/javascripts/boards/issue_spec.js b/spec/javascripts/boards/issue_spec.js
index 05e6ea1394d..181e7af7451 100644
--- a/spec/javascripts/boards/issue_spec.js
+++ b/spec/javascripts/boards/issue_spec.js
@@ -5,15 +5,14 @@ import '~/boards/models/label';
import '~/boards/models/assignee';
import '~/boards/models/issue';
import '~/boards/models/list';
-import '~/boards/services/board_service';
import boardsStore from '~/boards/stores/boards_store';
-import { mockBoardService } from './mock_data';
+import { setMockEndpoints } from './mock_data';
describe('Issue model', () => {
let issue;
beforeEach(() => {
- gl.boardService = mockBoardService();
+ setMockEndpoints();
boardsStore.create();
issue = new ListIssue({
diff --git a/spec/javascripts/boards/list_spec.js b/spec/javascripts/boards/list_spec.js
index d01c37437ad..c340b62730c 100644
--- a/spec/javascripts/boards/list_spec.js
+++ b/spec/javascripts/boards/list_spec.js
@@ -4,15 +4,14 @@
/* global ListLabel */
import MockAdapter from 'axios-mock-adapter';
-import axios from '~/lib/utils/axios_utils';
import _ from 'underscore';
+import axios from '~/lib/utils/axios_utils';
import '~/boards/models/label';
import '~/boards/models/assignee';
import '~/boards/models/issue';
import '~/boards/models/list';
-import '~/boards/services/board_service';
import boardsStore from '~/boards/stores/boards_store';
-import { listObj, listObjDuplicate, boardsMockInterceptor, mockBoardService } from './mock_data';
+import { listObj, listObjDuplicate, boardsMockInterceptor } from './mock_data';
describe('List model', () => {
let list;
@@ -21,9 +20,6 @@ describe('List model', () => {
beforeEach(() => {
mock = new MockAdapter(axios);
mock.onAny().reply(boardsMockInterceptor);
- gl.boardService = mockBoardService({
- bulkUpdatePath: '/test/issue-boards/board/1/lists',
- });
boardsStore.create();
list = new List(listObj);
@@ -110,11 +106,11 @@ describe('List model', () => {
list.issues.push(issue);
listDup.issues.push(issue);
- spyOn(gl.boardService, 'moveIssue').and.callThrough();
+ spyOn(boardsStore, 'moveIssue').and.callThrough();
listDup.updateIssueLabel(issue, list);
- expect(gl.boardService.moveIssue).toHaveBeenCalledWith(
+ expect(boardsStore.moveIssue).toHaveBeenCalledWith(
issue.id,
list.id,
listDup.id,
@@ -172,7 +168,7 @@ describe('List model', () => {
describe('newIssue', () => {
beforeEach(() => {
- spyOn(gl.boardService, 'newIssue').and.returnValue(
+ spyOn(boardsStore, 'newIssue').and.returnValue(
Promise.resolve({
data: {
id: 42,
diff --git a/spec/javascripts/boards/mock_data.js b/spec/javascripts/boards/mock_data.js
index 41b8f567e08..fcb5d9cfa08 100644
--- a/spec/javascripts/boards/mock_data.js
+++ b/spec/javascripts/boards/mock_data.js
@@ -1,40 +1,7 @@
-import BoardService from '~/boards/services/board_service';
import boardsStore from '~/boards/stores/boards_store';
+import { listObj } from '../../frontend/boards/mock_data';
-export const boardObj = {
- id: 1,
- name: 'test',
- milestone_id: null,
-};
-
-export const listObj = {
- id: 300,
- position: 0,
- title: 'Test',
- list_type: 'label',
- weight: 3,
- label: {
- id: 5000,
- title: 'Test',
- color: 'red',
- description: 'testing;',
- textColor: 'white',
- },
-};
-
-export const listObjDuplicate = {
- id: listObj.id,
- position: 1,
- title: 'Test',
- list_type: 'label',
- weight: 3,
- label: {
- id: listObj.label.id,
- title: 'Test',
- color: 'red',
- description: 'testing;',
- },
-};
+export * from '../../frontend/boards/mock_data';
export const BoardsMockData = {
GET: {
@@ -73,7 +40,7 @@ export const boardsMockInterceptor = config => {
return [200, body];
};
-export const mockBoardService = (opts = {}) => {
+export const setMockEndpoints = (opts = {}) => {
const boardsEndpoint = opts.boardsEndpoint || '/test/issue-boards/-/boards.json';
const listsEndpoint = opts.listsEndpoint || '/test/-/boards/1/lists';
const bulkUpdatePath = opts.bulkUpdatePath || '';
@@ -85,63 +52,4 @@ export const mockBoardService = (opts = {}) => {
bulkUpdatePath,
boardId,
});
-
- return new BoardService();
-};
-
-export const mockAssigneesList = [
- {
- id: 2,
- name: 'Terrell Graham',
- username: 'monserrate.gleichner',
- state: 'active',
- avatar_url: 'https://www.gravatar.com/avatar/598fd02741ac58b88854a99d16704309?s=80&d=identicon',
- web_url: 'http://127.0.0.1:3001/monserrate.gleichner',
- path: '/monserrate.gleichner',
- },
- {
- id: 12,
- name: 'Susy Johnson',
- username: 'tana_harvey',
- state: 'active',
- avatar_url: 'https://www.gravatar.com/avatar/e021a7b0f3e4ae53b5068d487e68c031?s=80&d=identicon',
- web_url: 'http://127.0.0.1:3001/tana_harvey',
- path: '/tana_harvey',
- },
- {
- id: 20,
- name: 'Conchita Eichmann',
- username: 'juliana_gulgowski',
- state: 'active',
- avatar_url: 'https://www.gravatar.com/avatar/c43c506cb6fd7b37017d3b54b94aa937?s=80&d=identicon',
- web_url: 'http://127.0.0.1:3001/juliana_gulgowski',
- path: '/juliana_gulgowski',
- },
- {
- id: 6,
- name: 'Bryce Turcotte',
- username: 'melynda',
- state: 'active',
- avatar_url: 'https://www.gravatar.com/avatar/cc2518f2c6f19f8fac49e1a5ee092a9b?s=80&d=identicon',
- web_url: 'http://127.0.0.1:3001/melynda',
- path: '/melynda',
- },
- {
- id: 1,
- name: 'Administrator',
- username: 'root',
- state: 'active',
- avatar_url: 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon',
- web_url: 'http://127.0.0.1:3001/root',
- path: '/root',
- },
-];
-
-export const mockMilestone = {
- id: 1,
- state: 'active',
- title: 'Milestone title',
- description: 'Harum corporis aut consequatur quae dolorem error sequi quia.',
- start_date: '2018-01-01',
- due_date: '2019-12-31',
};
diff --git a/spec/javascripts/ci_variable_list/ci_variable_list_spec.js b/spec/javascripts/ci_variable_list/ci_variable_list_spec.js
index c8d6f789ed0..180ba979325 100644
--- a/spec/javascripts/ci_variable_list/ci_variable_list_spec.js
+++ b/spec/javascripts/ci_variable_list/ci_variable_list_spec.js
@@ -1,6 +1,6 @@
import $ from 'jquery';
-import VariableList from '~/ci_variable_list/ci_variable_list';
import getSetTimeoutPromise from 'spec/helpers/set_timeout_promise_helper';
+import VariableList from '~/ci_variable_list/ci_variable_list';
const HIDE_CLASS = 'hide';
diff --git a/spec/javascripts/commit/pipelines/pipelines_spec.js b/spec/javascripts/commit/pipelines/pipelines_spec.js
index 46aca2b7f03..29bdf05b8cf 100644
--- a/spec/javascripts/commit/pipelines/pipelines_spec.js
+++ b/spec/javascripts/commit/pipelines/pipelines_spec.js
@@ -1,9 +1,9 @@
import Vue from 'vue';
import MockAdapter from 'axios-mock-adapter';
+import mountComponent from 'spec/helpers/vue_mount_component_helper';
import axios from '~/lib/utils/axios_utils';
import Api from '~/api';
import pipelinesTable from '~/commit/pipelines/pipelines_table.vue';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
describe('Pipelines table in Commits and Merge requests', function() {
const jsonFixtureName = 'pipelines/pipelines.json';
@@ -83,7 +83,7 @@ describe('Pipelines table in Commits and Merge requests', function() {
};
vm.$nextTick(() => {
- vm.$el.querySelector('.js-next-button .page-link').click();
+ vm.$el.querySelector('.next-page-item').click();
expect(vm.updateContent).toHaveBeenCalledWith({ page: '2' });
done();
diff --git a/spec/javascripts/create_cluster/gke_cluster/components/gke_machine_type_dropdown_spec.js b/spec/javascripts/create_cluster/gke_cluster/components/gke_machine_type_dropdown_spec.js
index 7aa7aa9a112..e687040ddf9 100644
--- a/spec/javascripts/create_cluster/gke_cluster/components/gke_machine_type_dropdown_spec.js
+++ b/spec/javascripts/create_cluster/gke_cluster/components/gke_machine_type_dropdown_spec.js
@@ -1,4 +1,5 @@
import Vue from 'vue';
+import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import GkeMachineTypeDropdown from '~/create_cluster/gke_cluster/components/gke_machine_type_dropdown.vue';
import { createStore } from '~/create_cluster/gke_cluster/store';
import {
@@ -7,7 +8,6 @@ import {
SET_ZONE,
SET_MACHINE_TYPES,
} from '~/create_cluster/gke_cluster/store/mutation_types';
-import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import {
selectedZoneMock,
selectedProjectMock,
diff --git a/spec/javascripts/create_cluster/gke_cluster/components/gke_project_id_dropdown_spec.js b/spec/javascripts/create_cluster/gke_cluster/components/gke_project_id_dropdown_spec.js
index 016ecfb35b8..4c89124454e 100644
--- a/spec/javascripts/create_cluster/gke_cluster/components/gke_project_id_dropdown_spec.js
+++ b/spec/javascripts/create_cluster/gke_cluster/components/gke_project_id_dropdown_spec.js
@@ -1,8 +1,8 @@
import Vue from 'vue';
+import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import GkeProjectIdDropdown from '~/create_cluster/gke_cluster/components/gke_project_id_dropdown.vue';
import { createStore } from '~/create_cluster/gke_cluster/store';
import { SET_PROJECTS } from '~/create_cluster/gke_cluster/store/mutation_types';
-import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { emptyProjectMock, selectedProjectMock } from '../mock_data';
import { gapi } from '../helpers';
diff --git a/spec/javascripts/create_cluster/gke_cluster/components/gke_zone_dropdown_spec.js b/spec/javascripts/create_cluster/gke_cluster/components/gke_zone_dropdown_spec.js
index 9cb9419e433..b2a7443422a 100644
--- a/spec/javascripts/create_cluster/gke_cluster/components/gke_zone_dropdown_spec.js
+++ b/spec/javascripts/create_cluster/gke_cluster/components/gke_zone_dropdown_spec.js
@@ -1,4 +1,5 @@
import Vue from 'vue';
+import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import GkeZoneDropdown from '~/create_cluster/gke_cluster/components/gke_zone_dropdown.vue';
import { createStore } from '~/create_cluster/gke_cluster/store';
import {
@@ -6,7 +7,6 @@ import {
SET_ZONES,
SET_PROJECT_BILLING_STATUS,
} from '~/create_cluster/gke_cluster/store/mutation_types';
-import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { selectedZoneMock, selectedProjectMock, gapiZonesResponseMock } from '../mock_data';
const componentConfig = {
diff --git a/spec/javascripts/cycle_analytics/banner_spec.js b/spec/javascripts/cycle_analytics/banner_spec.js
index 3ce2c3c4f06..86408c18dda 100644
--- a/spec/javascripts/cycle_analytics/banner_spec.js
+++ b/spec/javascripts/cycle_analytics/banner_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import banner from '~/cycle_analytics/components/banner.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import banner from '~/cycle_analytics/components/banner.vue';
describe('Cycle analytics banner', () => {
let vm;
diff --git a/spec/javascripts/cycle_analytics/total_time_component_spec.js b/spec/javascripts/cycle_analytics/total_time_component_spec.js
index 691e03cb8a6..0269fc1b002 100644
--- a/spec/javascripts/cycle_analytics/total_time_component_spec.js
+++ b/spec/javascripts/cycle_analytics/total_time_component_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import component from '~/cycle_analytics/components/total_time_component.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import component from '~/cycle_analytics/components/total_time_component.vue';
describe('Total time component', () => {
let vm;
diff --git a/spec/javascripts/deploy_keys/components/app_spec.js b/spec/javascripts/deploy_keys/components/app_spec.js
index f81c0cb7124..c9a9814d122 100644
--- a/spec/javascripts/deploy_keys/components/app_spec.js
+++ b/spec/javascripts/deploy_keys/components/app_spec.js
@@ -1,9 +1,9 @@
import Vue from 'vue';
import MockAdapter from 'axios-mock-adapter';
+import { TEST_HOST } from 'spec/test_constants';
import axios from '~/lib/utils/axios_utils';
import eventHub from '~/deploy_keys/eventhub';
import deployKeysApp from '~/deploy_keys/components/app.vue';
-import { TEST_HOST } from 'spec/test_constants';
describe('Deploy keys app component', () => {
const data = getJSONFixture('deploy_keys/keys.json');
diff --git a/spec/javascripts/diffs/components/app_spec.js b/spec/javascripts/diffs/components/app_spec.js
index fdf8bcee756..48e1ed18a2f 100644
--- a/spec/javascripts/diffs/components/app_spec.js
+++ b/spec/javascripts/diffs/components/app_spec.js
@@ -2,10 +2,10 @@ import Vuex from 'vuex';
import { shallowMount, createLocalVue } from '@vue/test-utils';
import { GlLoadingIcon } from '@gitlab/ui';
import { TEST_HOST } from 'spec/test_constants';
+import Mousetrap from 'mousetrap';
import App from '~/diffs/components/app.vue';
import NoChanges from '~/diffs/components/no_changes.vue';
import DiffFile from '~/diffs/components/diff_file.vue';
-import Mousetrap from 'mousetrap';
import CompareVersions from '~/diffs/components/compare_versions.vue';
import HiddenFilesWarning from '~/diffs/components/hidden_files_warning.vue';
import CommitWidget from '~/diffs/components/commit_widget.vue';
@@ -34,14 +34,22 @@ describe('diffs/components/app', () => {
localVue,
propsData: {
endpoint: `${TEST_HOST}/diff/endpoint`,
+ endpointMetadata: `${TEST_HOST}/diff/endpointMetadata`,
+ endpointBatch: `${TEST_HOST}/diff/endpointBatch`,
projectPath: 'namespace/project',
currentUser: {},
changesEmptyStateIllustration: '',
dismissEndpoint: '',
showSuggestPopover: true,
+ useSingleDiffStyle: false,
...props,
},
store,
+ methods: {
+ isLatestVersion() {
+ return true;
+ },
+ },
});
}
@@ -59,6 +67,57 @@ describe('diffs/components/app', () => {
wrapper.destroy();
});
+ describe('fetch diff methods', () => {
+ beforeEach(() => {
+ spyOn(window, 'requestIdleCallback').and.callFake(fn => fn());
+ createComponent();
+ spyOn(wrapper.vm, 'fetchDiffFiles').and.callFake(() => Promise.resolve());
+ spyOn(wrapper.vm, 'fetchDiffFilesMeta').and.callFake(() => Promise.resolve());
+ spyOn(wrapper.vm, 'fetchDiffFilesBatch').and.callFake(() => Promise.resolve());
+ spyOn(wrapper.vm, 'setDiscussions');
+ spyOn(wrapper.vm, 'startRenderDiffsQueue');
+ });
+
+ it('calls fetchDiffFiles if diffsBatchLoad is not enabled', done => {
+ wrapper.vm.glFeatures.diffsBatchLoad = false;
+ wrapper.vm.fetchData(false);
+
+ expect(wrapper.vm.fetchDiffFiles).toHaveBeenCalled();
+ setTimeout(() => {
+ expect(wrapper.vm.startRenderDiffsQueue).toHaveBeenCalled();
+ expect(wrapper.vm.fetchDiffFilesMeta).not.toHaveBeenCalled();
+ expect(wrapper.vm.fetchDiffFilesBatch).not.toHaveBeenCalled();
+
+ done();
+ });
+ });
+
+ it('calls batch methods if diffsBatchLoad is enabled, and not latest version', () => {
+ wrapper.vm.glFeatures.diffsBatchLoad = true;
+ wrapper.vm.isLatestVersion = () => false;
+ wrapper.vm.fetchData(false);
+
+ expect(wrapper.vm.fetchDiffFiles).not.toHaveBeenCalled();
+ wrapper.vm.$nextTick(() => {
+ expect(wrapper.vm.startRenderDiffsQueue).toHaveBeenCalled();
+ expect(wrapper.vm.fetchDiffFilesMeta).toHaveBeenCalled();
+ expect(wrapper.vm.fetchDiffFilesBatch).toHaveBeenCalled();
+ });
+ });
+
+ it('calls batch methods if diffsBatchLoad is enabled, and latest version', () => {
+ wrapper.vm.glFeatures.diffsBatchLoad = true;
+ wrapper.vm.fetchData(false);
+
+ expect(wrapper.vm.fetchDiffFiles).not.toHaveBeenCalled();
+ wrapper.vm.$nextTick(() => {
+ expect(wrapper.vm.startRenderDiffsQueue).toHaveBeenCalled();
+ expect(wrapper.vm.fetchDiffFilesMeta).toHaveBeenCalled();
+ expect(wrapper.vm.fetchDiffFilesBatch).toHaveBeenCalled();
+ });
+ });
+ });
+
it('adds container-limiting classes when showFileTree is false with inline diffs', () => {
createComponent({}, ({ state }) => {
state.diffs.showTreeList = false;
@@ -93,6 +152,14 @@ describe('diffs/components/app', () => {
expect(wrapper.contains(GlLoadingIcon)).toBe(true);
});
+ it('displays loading icon on batch loading', () => {
+ createComponent({}, ({ state }) => {
+ state.diffs.isBatchLoading = true;
+ });
+
+ expect(wrapper.contains(GlLoadingIcon)).toBe(true);
+ });
+
it('displays diffs container when not loading', () => {
createComponent();
diff --git a/spec/javascripts/diffs/components/compare_versions_spec.js b/spec/javascripts/diffs/components/compare_versions_spec.js
deleted file mode 100644
index ef4bb470734..00000000000
--- a/spec/javascripts/diffs/components/compare_versions_spec.js
+++ /dev/null
@@ -1,145 +0,0 @@
-import Vue from 'vue';
-import CompareVersionsComponent from '~/diffs/components/compare_versions.vue';
-import { createStore } from '~/mr_notes/stores';
-import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
-import diffsMockData from '../mock_data/merge_request_diffs';
-import getDiffWithCommit from '../mock_data/diff_with_commit';
-
-describe('CompareVersions', () => {
- let vm;
- const targetBranch = { branchName: 'tmp-wine-dev', versionIndex: -1 };
-
- beforeEach(() => {
- const store = createStore();
-
- store.state.diffs.addedLines = 10;
- store.state.diffs.removedLines = 20;
- store.state.diffs.diffFiles.push('test');
-
- vm = createComponentWithStore(Vue.extend(CompareVersionsComponent), store, {
- mergeRequestDiffs: diffsMockData,
- mergeRequestDiff: diffsMockData[0],
- targetBranch,
- }).$mount();
- });
-
- describe('template', () => {
- it('should render Tree List toggle button with correct attribute values', () => {
- const treeListBtn = vm.$el.querySelector('.js-toggle-tree-list');
-
- expect(treeListBtn).not.toBeNull();
- expect(treeListBtn.dataset.originalTitle).toBe('Hide file browser');
- expect(treeListBtn.querySelectorAll('svg use').length).not.toBe(0);
- expect(treeListBtn.querySelector('svg use').getAttribute('xlink:href')).toContain(
- '#collapse-left',
- );
- });
-
- it('should render comparison dropdowns with correct values', () => {
- const sourceDropdown = vm.$el.querySelector('.mr-version-dropdown');
- const targetDropdown = vm.$el.querySelector('.mr-version-compare-dropdown');
-
- expect(sourceDropdown).not.toBeNull();
- expect(targetDropdown).not.toBeNull();
- expect(sourceDropdown.querySelector('a span').innerHTML).toContain('latest version');
- expect(targetDropdown.querySelector('a span').innerHTML).toContain(targetBranch.branchName);
- });
-
- it('should not render comparison dropdowns if no mergeRequestDiffs are specified', () => {
- vm.mergeRequestDiffs = [];
-
- vm.$nextTick(() => {
- const sourceDropdown = vm.$el.querySelector('.mr-version-dropdown');
- const targetDropdown = vm.$el.querySelector('.mr-version-compare-dropdown');
-
- expect(sourceDropdown).toBeNull();
- expect(targetDropdown).toBeNull();
- });
- });
-
- it('should render view types buttons with correct values', () => {
- const inlineBtn = vm.$el.querySelector('#inline-diff-btn');
- const parallelBtn = vm.$el.querySelector('#parallel-diff-btn');
-
- expect(inlineBtn).not.toBeNull();
- expect(parallelBtn).not.toBeNull();
- expect(inlineBtn.dataset.viewType).toEqual('inline');
- expect(parallelBtn.dataset.viewType).toEqual('parallel');
- expect(inlineBtn.innerHTML).toContain('Inline');
- expect(parallelBtn.innerHTML).toContain('Side-by-side');
- });
-
- it('adds container-limiting classes when showFileTree is false with inline diffs', () => {
- vm.isLimitedContainer = true;
-
- vm.$nextTick(() => {
- const limitedContainer = vm.$el.querySelector('.container-limited.limit-container-width');
-
- expect(limitedContainer).not.toBeNull();
- });
- });
-
- it('does not add container-limiting classes when showFileTree is false with inline diffs', () => {
- vm.isLimitedContainer = false;
-
- vm.$nextTick(() => {
- const limitedContainer = vm.$el.querySelector('.container-limited.limit-container-width');
-
- expect(limitedContainer).toBeNull();
- });
- });
- });
-
- describe('setInlineDiffViewType', () => {
- it('should persist the view type in the url', () => {
- const viewTypeBtn = vm.$el.querySelector('#inline-diff-btn');
- viewTypeBtn.click();
-
- expect(window.location.toString()).toContain('?view=inline');
- });
- });
-
- describe('setParallelDiffViewType', () => {
- it('should persist the view type in the url', () => {
- const viewTypeBtn = vm.$el.querySelector('#parallel-diff-btn');
- viewTypeBtn.click();
-
- expect(window.location.toString()).toContain('?view=parallel');
- });
- });
-
- describe('comparableDiffs', () => {
- it('should not contain the first item in the mergeRequestDiffs property', () => {
- const { comparableDiffs } = vm;
- const comparableDiffsMock = diffsMockData.slice(1);
-
- expect(comparableDiffs).toEqual(comparableDiffsMock);
- });
- });
-
- describe('baseVersionPath', () => {
- it('should be set correctly from mergeRequestDiff', () => {
- expect(vm.baseVersionPath).toEqual(vm.mergeRequestDiff.base_version_path);
- });
- });
-
- describe('commit', () => {
- beforeEach(done => {
- vm.$store.state.diffs.commit = getDiffWithCommit().commit;
- vm.mergeRequestDiffs = [];
-
- vm.$nextTick(done);
- });
-
- it('renders latest version button', () => {
- expect(vm.$el.querySelector('.js-latest-version').textContent.trim()).toBe(
- 'Show latest version',
- );
- });
-
- it('renders short commit ID', () => {
- expect(vm.$el.textContent).toContain('Viewing commit');
- expect(vm.$el.textContent).toContain(vm.commit.short_id);
- });
- });
-});
diff --git a/spec/javascripts/diffs/components/diff_expansion_cell_spec.js b/spec/javascripts/diffs/components/diff_expansion_cell_spec.js
index 63c50c09fce..e8ff6778512 100644
--- a/spec/javascripts/diffs/components/diff_expansion_cell_spec.js
+++ b/spec/javascripts/diffs/components/diff_expansion_cell_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
+import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { createStore } from '~/mr_notes/stores';
import DiffExpansionCell from '~/diffs/components/diff_expansion_cell.vue';
-import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import diffFileMockData from '../mock_data/diff_file';
const EXPAND_UP_CLASS = '.js-unfold';
diff --git a/spec/javascripts/diffs/components/diff_file_spec.js b/spec/javascripts/diffs/components/diff_file_spec.js
index 6ffdb6ba85d..b4425b8e8a2 100644
--- a/spec/javascripts/diffs/components/diff_file_spec.js
+++ b/spec/javascripts/diffs/components/diff_file_spec.js
@@ -1,8 +1,8 @@
import Vue from 'vue';
-import DiffFileComponent from '~/diffs/components/diff_file.vue';
-import { diffViewerModes, diffViewerErrors } from '~/ide/constants';
import { createStore } from 'ee_else_ce/mr_notes/stores';
import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
+import DiffFileComponent from '~/diffs/components/diff_file.vue';
+import { diffViewerModes, diffViewerErrors } from '~/ide/constants';
import diffFileMockDataReadable from '../mock_data/diff_file';
import diffFileMockDataUnreadable from '../mock_data/diff_file_unreadable';
diff --git a/spec/javascripts/diffs/components/diff_line_gutter_content_spec.js b/spec/javascripts/diffs/components/diff_line_gutter_content_spec.js
index 6bb704658fb..8d20be9971d 100644
--- a/spec/javascripts/diffs/components/diff_line_gutter_content_spec.js
+++ b/spec/javascripts/diffs/components/diff_line_gutter_content_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
+import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import DiffLineGutterContent from '~/diffs/components/diff_line_gutter_content.vue';
import { createStore } from '~/mr_notes/stores';
-import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import discussionsMockData from '../mock_data/diff_discussions';
import diffFileMockData from '../mock_data/diff_file';
diff --git a/spec/javascripts/diffs/components/diff_line_note_form_spec.js b/spec/javascripts/diffs/components/diff_line_note_form_spec.js
index 237cfccfa29..09263e5ce83 100644
--- a/spec/javascripts/diffs/components/diff_line_note_form_spec.js
+++ b/spec/javascripts/diffs/components/diff_line_note_form_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
+import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import DiffLineNoteForm from '~/diffs/components/diff_line_note_form.vue';
import { createStore } from '~/mr_notes/stores';
-import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import diffFileMockData from '../mock_data/diff_file';
import { noteableDataMock } from '../../notes/mock_data';
diff --git a/spec/javascripts/diffs/components/diff_table_cell_spec.js b/spec/javascripts/diffs/components/diff_table_cell_spec.js
index a5a042c577c..f91e3b56805 100644
--- a/spec/javascripts/diffs/components/diff_table_cell_spec.js
+++ b/spec/javascripts/diffs/components/diff_table_cell_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
+import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { createStore } from '~/mr_notes/stores';
import DiffTableCell from '~/diffs/components/diff_table_cell.vue';
-import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import diffFileMockData from '../mock_data/diff_file';
describe('DiffTableCell', () => {
diff --git a/spec/javascripts/diffs/components/file_row_stats_spec.js b/spec/javascripts/diffs/components/file_row_stats_spec.js
index a8a7f3f1d82..59c5e592a59 100644
--- a/spec/javascripts/diffs/components/file_row_stats_spec.js
+++ b/spec/javascripts/diffs/components/file_row_stats_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import FileRowStats from '~/diffs/components/file_row_stats.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import FileRowStats from '~/diffs/components/file_row_stats.vue';
describe('Diff file row stats', () => {
let Component;
diff --git a/spec/javascripts/diffs/components/image_diff_overlay_spec.js b/spec/javascripts/diffs/components/image_diff_overlay_spec.js
index d76ab745fe1..c2e5c6c34aa 100644
--- a/spec/javascripts/diffs/components/image_diff_overlay_spec.js
+++ b/spec/javascripts/diffs/components/image_diff_overlay_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
+import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import ImageDiffOverlay from '~/diffs/components/image_diff_overlay.vue';
import { createStore } from '~/mr_notes/stores';
-import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { imageDiffDiscussions } from '../mock_data/diff_discussions';
describe('Diffs image diff overlay component', () => {
diff --git a/spec/javascripts/diffs/components/inline_diff_expansion_row_spec.js b/spec/javascripts/diffs/components/inline_diff_expansion_row_spec.js
index 290b3d7c803..852b8c4fbfc 100644
--- a/spec/javascripts/diffs/components/inline_diff_expansion_row_spec.js
+++ b/spec/javascripts/diffs/components/inline_diff_expansion_row_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
+import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { createStore } from '~/mr_notes/stores';
import InlineDiffExpansionRow from '~/diffs/components/inline_diff_expansion_row.vue';
-import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import diffFileMockData from '../mock_data/diff_file';
describe('InlineDiffExpansionRow', () => {
diff --git a/spec/javascripts/diffs/components/inline_diff_table_row_spec.js b/spec/javascripts/diffs/components/inline_diff_table_row_spec.js
index 0ddffe926d9..67443e9aecc 100644
--- a/spec/javascripts/diffs/components/inline_diff_table_row_spec.js
+++ b/spec/javascripts/diffs/components/inline_diff_table_row_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
+import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { createStore } from '~/mr_notes/stores';
import InlineDiffTableRow from '~/diffs/components/inline_diff_table_row.vue';
-import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import diffFileMockData from '../mock_data/diff_file';
describe('InlineDiffTableRow', () => {
diff --git a/spec/javascripts/diffs/components/inline_diff_view_spec.js b/spec/javascripts/diffs/components/inline_diff_view_spec.js
index 486d9629e26..76d88d4d9f0 100644
--- a/spec/javascripts/diffs/components/inline_diff_view_spec.js
+++ b/spec/javascripts/diffs/components/inline_diff_view_spec.js
@@ -1,8 +1,8 @@
import Vue from 'vue';
import '~/behaviors/markdown/render_gfm';
-import InlineDiffView from '~/diffs/components/inline_diff_view.vue';
import { createStore } from 'ee_else_ce/mr_notes/stores';
import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
+import InlineDiffView from '~/diffs/components/inline_diff_view.vue';
import diffFileMockData from '../mock_data/diff_file';
import discussionsMockData from '../mock_data/diff_discussions';
diff --git a/spec/javascripts/diffs/components/parallel_diff_expansion_row_spec.js b/spec/javascripts/diffs/components/parallel_diff_expansion_row_spec.js
index a766ebb5efb..f6a5a1096f3 100644
--- a/spec/javascripts/diffs/components/parallel_diff_expansion_row_spec.js
+++ b/spec/javascripts/diffs/components/parallel_diff_expansion_row_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
+import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { createStore } from '~/mr_notes/stores';
import ParallelDiffExpansionRow from '~/diffs/components/parallel_diff_expansion_row.vue';
-import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import diffFileMockData from '../mock_data/diff_file';
describe('ParallelDiffExpansionRow', () => {
diff --git a/spec/javascripts/diffs/components/parallel_diff_table_row_spec.js b/spec/javascripts/diffs/components/parallel_diff_table_row_spec.js
index 311eaaaa7c8..32c947bbd8e 100644
--- a/spec/javascripts/diffs/components/parallel_diff_table_row_spec.js
+++ b/spec/javascripts/diffs/components/parallel_diff_table_row_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
+import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { createStore } from '~/mr_notes/stores';
import ParallelDiffTableRow from '~/diffs/components/parallel_diff_table_row.vue';
-import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import diffFileMockData from '../mock_data/diff_file';
describe('ParallelDiffTableRow', () => {
diff --git a/spec/javascripts/diffs/components/parallel_diff_view_spec.js b/spec/javascripts/diffs/components/parallel_diff_view_spec.js
index 191313bf487..7daca25719b 100644
--- a/spec/javascripts/diffs/components/parallel_diff_view_spec.js
+++ b/spec/javascripts/diffs/components/parallel_diff_view_spec.js
@@ -1,8 +1,8 @@
import Vue from 'vue';
-import ParallelDiffView from '~/diffs/components/parallel_diff_view.vue';
import { createStore } from 'ee_else_ce/mr_notes/stores';
-import * as constants from '~/diffs/constants';
import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
+import ParallelDiffView from '~/diffs/components/parallel_diff_view.vue';
+import * as constants from '~/diffs/constants';
import diffFileMockData from '../mock_data/diff_file';
describe('ParallelDiffView', () => {
diff --git a/spec/javascripts/diffs/components/settings_dropdown_spec.js b/spec/javascripts/diffs/components/settings_dropdown_spec.js
index 5031846cff0..6c08474ffd2 100644
--- a/spec/javascripts/diffs/components/settings_dropdown_spec.js
+++ b/spec/javascripts/diffs/components/settings_dropdown_spec.js
@@ -4,15 +4,14 @@ import diffModule from '~/diffs/store/modules';
import SettingsDropdown from '~/diffs/components/settings_dropdown.vue';
import { PARALLEL_DIFF_VIEW_TYPE, INLINE_DIFF_VIEW_TYPE } from '~/diffs/constants';
+const localVue = createLocalVue();
+localVue.use(Vuex);
+
describe('Diff settiings dropdown component', () => {
let vm;
let actions;
function createComponent(extendStore = () => {}) {
- const localVue = createLocalVue();
-
- localVue.use(Vuex);
-
const store = new Vuex.Store({
modules: {
diffs: {
@@ -26,9 +25,10 @@ describe('Diff settiings dropdown component', () => {
extendStore(store);
- vm = mount(SettingsDropdown, {
+ vm = mount(localVue.extend(SettingsDropdown), {
localVue,
store,
+ sync: false,
});
}
diff --git a/spec/javascripts/diffs/components/tree_list_spec.js b/spec/javascripts/diffs/components/tree_list_spec.js
index cd7bf6405e5..0a6e433551c 100644
--- a/spec/javascripts/diffs/components/tree_list_spec.js
+++ b/spec/javascripts/diffs/components/tree_list_spec.js
@@ -1,8 +1,8 @@
import Vue from 'vue';
import Vuex from 'vuex';
+import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import TreeList from '~/diffs/components/tree_list.vue';
import createStore from '~/diffs/store/modules';
-import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
describe('Diffs tree list component', () => {
let Component;
diff --git a/spec/javascripts/diffs/mock_data/diff_with_commit.js b/spec/javascripts/diffs/mock_data/diff_with_commit.js
index d646294ee84..c36b0239060 100644
--- a/spec/javascripts/diffs/mock_data/diff_with_commit.js
+++ b/spec/javascripts/diffs/mock_data/diff_with_commit.js
@@ -1,7 +1,7 @@
-const FIXTURE = 'merge_request_diffs/with_commit.json';
+// No new code should be added to this file. Instead, modify the
+// file this one re-exports from. For more detail about why, see:
+// https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/31349
-preloadFixtures(FIXTURE);
+import getDiffWithCommit from '../../../frontend/diffs/mock_data/diff_with_commit';
-export default function getDiffWithCommit() {
- return getJSONFixture(FIXTURE);
-}
+export default getDiffWithCommit;
diff --git a/spec/javascripts/diffs/mock_data/merge_request_diffs.js b/spec/javascripts/diffs/mock_data/merge_request_diffs.js
index 4bbef146336..de29eb7e560 100644
--- a/spec/javascripts/diffs/mock_data/merge_request_diffs.js
+++ b/spec/javascripts/diffs/mock_data/merge_request_diffs.js
@@ -1,46 +1,7 @@
-export default [
- {
- base_version_path: '/gnuwget/wget2/merge_requests/6/diffs?diff_id=37',
- version_index: 4,
- created_at: '2018-10-23T11:49:16.611Z',
- commits_count: 4,
- latest: true,
- short_commit_sha: 'de7a8f7f',
- version_path: '/gnuwget/wget2/merge_requests/6/diffs?diff_id=37',
- compare_path:
- '/gnuwget/wget2/merge_requests/6/diffs?diff_id=37&start_sha=de7a8f7f20c3ea2e0bef3ba01cfd41c21f6b4995',
- },
- {
- base_version_path: '/gnuwget/wget2/merge_requests/6/diffs?diff_id=36',
- version_index: 3,
- created_at: '2018-10-23T11:46:40.617Z',
- commits_count: 3,
- latest: false,
- short_commit_sha: 'e78fc18f',
- version_path: '/gnuwget/wget2/merge_requests/6/diffs?diff_id=36',
- compare_path:
- '/gnuwget/wget2/merge_requests/6/diffs?diff_id=37&start_sha=e78fc18fa37acb2185c59ca94d4a964464feb50e',
- },
- {
- base_version_path: '/gnuwget/wget2/merge_requests/6/diffs?diff_id=35',
- version_index: 2,
- created_at: '2018-10-04T09:57:39.648Z',
- commits_count: 2,
- latest: false,
- short_commit_sha: '48da7e7e',
- version_path: '/gnuwget/wget2/merge_requests/6/diffs?diff_id=35',
- compare_path:
- '/gnuwget/wget2/merge_requests/6/diffs?diff_id=37&start_sha=48da7e7e9a99d41c852578bd9cb541ca4d864b3e',
- },
- {
- base_version_path: '/gnuwget/wget2/merge_requests/6/diffs?diff_id=20',
- version_index: 1,
- created_at: '2018-09-25T20:30:39.493Z',
- commits_count: 1,
- latest: false,
- short_commit_sha: '47bac2ed',
- version_path: '/gnuwget/wget2/merge_requests/6/diffs?diff_id=20',
- compare_path:
- '/gnuwget/wget2/merge_requests/6/diffs?diff_id=37&start_sha=47bac2ed972c5bee344c1cea159a22cd7f711dc0',
- },
-];
+// No new code should be added to this file. Instead, modify the
+// file this one re-exports from. For more detail about why, see:
+// https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/31349
+
+import diffsMockData from '../../../frontend/diffs/mock_data/merge_request_diffs';
+
+export default diffsMockData;
diff --git a/spec/javascripts/diffs/store/actions_spec.js b/spec/javascripts/diffs/store/actions_spec.js
index 874891fcc6e..b23334d38dc 100644
--- a/spec/javascripts/diffs/store/actions_spec.js
+++ b/spec/javascripts/diffs/store/actions_spec.js
@@ -1,13 +1,17 @@
import MockAdapter from 'axios-mock-adapter';
import Cookies from 'js-cookie';
+import mockDiffFile from 'spec/diffs/mock_data/diff_file';
import {
DIFF_VIEW_COOKIE_NAME,
INLINE_DIFF_VIEW_TYPE,
PARALLEL_DIFF_VIEW_TYPE,
+ DIFFS_PER_PAGE,
} from '~/diffs/constants';
import actions, {
setBaseConfig,
fetchDiffFiles,
+ fetchDiffFilesBatch,
+ fetchDiffFilesMeta,
assignDiscussionsToDiff,
removeDiscussionsFromDiff,
startRenderDiffsQueue,
@@ -42,7 +46,6 @@ import actions, {
import eventHub from '~/notes/event_hub';
import * as types from '~/diffs/store/mutation_types';
import axios from '~/lib/utils/axios_utils';
-import mockDiffFile from 'spec/diffs/mock_data/diff_file';
import testAction from '../../helpers/vuex_action_helper';
describe('DiffsStoreActions', () => {
@@ -68,18 +71,45 @@ describe('DiffsStoreActions', () => {
describe('setBaseConfig', () => {
it('should set given endpoint and project path', done => {
const endpoint = '/diffs/set/endpoint';
+ const endpointMetadata = '/diffs/set/endpoint/metadata';
+ const endpointBatch = '/diffs/set/endpoint/batch';
const projectPath = '/root/project';
const dismissEndpoint = '/-/user_callouts';
const showSuggestPopover = false;
+ const useSingleDiffStyle = false;
testAction(
setBaseConfig,
- { endpoint, projectPath, dismissEndpoint, showSuggestPopover },
- { endpoint: '', projectPath: '', dismissEndpoint: '', showSuggestPopover: true },
+ {
+ endpoint,
+ endpointBatch,
+ endpointMetadata,
+ projectPath,
+ dismissEndpoint,
+ showSuggestPopover,
+ useSingleDiffStyle,
+ },
+ {
+ endpoint: '',
+ endpointBatch: '',
+ endpointMetadata: '',
+ projectPath: '',
+ dismissEndpoint: '',
+ showSuggestPopover: true,
+ useSingleDiffStyle: true,
+ },
[
{
type: types.SET_BASE_CONFIG,
- payload: { endpoint, projectPath, dismissEndpoint, showSuggestPopover },
+ payload: {
+ endpoint,
+ endpointMetadata,
+ endpointBatch,
+ projectPath,
+ dismissEndpoint,
+ showSuggestPopover,
+ useSingleDiffStyle,
+ },
},
],
[],
@@ -114,6 +144,66 @@ describe('DiffsStoreActions', () => {
});
});
+ describe('fetchDiffFilesBatch', () => {
+ it('should fetch batch diff files', done => {
+ const endpointBatch = '/fetch/diffs_batch';
+ const mock = new MockAdapter(axios);
+ const res1 = { diff_files: [], pagination: { next_page: 2 } };
+ const res2 = { diff_files: [], pagination: {} };
+ mock
+ .onGet(endpointBatch, { params: { page: undefined, per_page: DIFFS_PER_PAGE, w: '1' } })
+ .reply(200, res1);
+ mock
+ .onGet(endpointBatch, { params: { page: 2, per_page: DIFFS_PER_PAGE, w: '1' } })
+ .reply(200, res2);
+
+ testAction(
+ fetchDiffFilesBatch,
+ {},
+ { endpointBatch },
+ [
+ { type: types.SET_BATCH_LOADING, payload: true },
+ { type: types.SET_DIFF_DATA_BATCH, payload: { diff_files: res1.diff_files } },
+ { type: types.SET_BATCH_LOADING, payload: false },
+ { type: types.SET_DIFF_DATA_BATCH, payload: { diff_files: [] } },
+ { type: types.SET_BATCH_LOADING, payload: false },
+ ],
+ [],
+ () => {
+ mock.restore();
+ done();
+ },
+ );
+ });
+ });
+
+ describe('fetchDiffFilesMeta', () => {
+ it('should fetch diff meta information', done => {
+ const endpointMetadata = '/fetch/diffs_meta';
+ const mock = new MockAdapter(axios);
+ const data = { diff_files: [] };
+ const res = { data };
+ mock.onGet(endpointMetadata).reply(200, res);
+
+ testAction(
+ fetchDiffFilesMeta,
+ {},
+ { endpointMetadata },
+ [
+ { type: types.SET_LOADING, payload: true },
+ { type: types.SET_LOADING, payload: false },
+ { type: types.SET_MERGE_REQUEST_DIFFS, payload: [] },
+ { type: types.SET_DIFF_DATA, payload: { data } },
+ ],
+ [],
+ () => {
+ mock.restore();
+ done();
+ },
+ );
+ });
+ });
+
describe('setHighlightedRow', () => {
it('should mark currently selected diff and set lineHash and fileHash of highlightedRow', () => {
testAction(setHighlightedRow, 'ABC_123', {}, [
diff --git a/spec/javascripts/diffs/store/mutations_spec.js b/spec/javascripts/diffs/store/mutations_spec.js
index 3e033b6c9dc..13f16e4f9a6 100644
--- a/spec/javascripts/diffs/store/mutations_spec.js
+++ b/spec/javascripts/diffs/store/mutations_spec.js
@@ -10,11 +10,13 @@ describe('DiffsStoreMutations', () => {
const state = {};
const endpoint = '/diffs/endpoint';
const projectPath = '/root/project';
+ const useSingleDiffStyle = false;
- mutations[types.SET_BASE_CONFIG](state, { endpoint, projectPath });
+ mutations[types.SET_BASE_CONFIG](state, { endpoint, projectPath, useSingleDiffStyle });
expect(state.endpoint).toEqual(endpoint);
expect(state.projectPath).toEqual(projectPath);
+ expect(state.useSingleDiffStyle).toEqual(useSingleDiffStyle);
});
});
@@ -28,6 +30,16 @@ describe('DiffsStoreMutations', () => {
});
});
+ describe('SET_BATCH_LOADING', () => {
+ it('should set loading state', () => {
+ const state = {};
+
+ mutations[types.SET_BATCH_LOADING](state, false);
+
+ expect(state.isBatchLoading).toEqual(false);
+ });
+ });
+
describe('SET_DIFF_DATA', () => {
it('should set diff data type properly', () => {
const state = {};
@@ -45,6 +57,23 @@ describe('DiffsStoreMutations', () => {
});
});
+ describe('SET_DIFFSET_DIFF_DATA_BATCH_DATA', () => {
+ it('should set diff data batch type properly', () => {
+ const state = { diffFiles: [] };
+ const diffMock = {
+ diff_files: [diffFileMockData],
+ };
+
+ mutations[types.SET_DIFF_DATA_BATCH](state, diffMock);
+
+ const firstLine = state.diffFiles[0].parallel_diff_lines[0];
+
+ expect(firstLine.right.text).toBeUndefined();
+ expect(state.diffFiles[0].renderIt).toEqual(true);
+ expect(state.diffFiles[0].collapsed).toEqual(false);
+ });
+ });
+
describe('SET_DIFF_VIEW_TYPE', () => {
it('should set diff view type properly', () => {
const state = {};
diff --git a/spec/javascripts/dropzone_input_spec.js b/spec/javascripts/dropzone_input_spec.js
index 125dcdb3763..8d0f0d20d89 100644
--- a/spec/javascripts/dropzone_input_spec.js
+++ b/spec/javascripts/dropzone_input_spec.js
@@ -1,6 +1,6 @@
import $ from 'jquery';
-import dropzoneInput from '~/dropzone_input';
import { TEST_HOST } from 'spec/test_constants';
+import dropzoneInput from '~/dropzone_input';
const TEST_FILE = new File([], 'somefile.jpg');
TEST_FILE.upload = {};
diff --git a/spec/javascripts/environments/emtpy_state_spec.js b/spec/javascripts/environments/emtpy_state_spec.js
index 1f986d49bc7..eec06a43a1e 100644
--- a/spec/javascripts/environments/emtpy_state_spec.js
+++ b/spec/javascripts/environments/emtpy_state_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import emptyState from '~/environments/components/empty_state.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import emptyState from '~/environments/components/empty_state.vue';
describe('environments empty state', () => {
let vm;
diff --git a/spec/javascripts/environments/environment_actions_spec.js b/spec/javascripts/environments/environment_actions_spec.js
index 787df757d32..a844660f7bf 100644
--- a/spec/javascripts/environments/environment_actions_spec.js
+++ b/spec/javascripts/environments/environment_actions_spec.js
@@ -1,8 +1,8 @@
import Vue from 'vue';
-import eventHub from '~/environments/event_hub';
-import EnvironmentActions from '~/environments/components/environment_actions.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
import { TEST_HOST } from 'spec/test_constants';
+import eventHub from '~/environments/event_hub';
+import EnvironmentActions from '~/environments/components/environment_actions.vue';
describe('EnvironmentActions Component', () => {
const Component = Vue.extend(EnvironmentActions);
diff --git a/spec/javascripts/environments/environment_item_spec.js b/spec/javascripts/environments/environment_item_spec.js
deleted file mode 100644
index f9ee4648128..00000000000
--- a/spec/javascripts/environments/environment_item_spec.js
+++ /dev/null
@@ -1,203 +0,0 @@
-import 'timeago.js';
-import Vue from 'vue';
-import environmentItemComp from '~/environments/components/environment_item.vue';
-
-describe('Environment item', () => {
- let EnvironmentItem;
-
- beforeEach(() => {
- EnvironmentItem = Vue.extend(environmentItemComp);
- });
-
- describe('When item is folder', () => {
- let mockItem;
- let component;
-
- beforeEach(() => {
- mockItem = {
- name: 'review',
- folderName: 'review',
- size: 3,
- isFolder: true,
- environment_path: 'url',
- log_path: 'url',
- };
-
- component = new EnvironmentItem({
- propsData: {
- model: mockItem,
- canReadEnvironment: true,
- },
- }).$mount();
- });
-
- it('should render folder icon and name', () => {
- expect(component.$el.querySelector('.folder-name').textContent).toContain(mockItem.name);
- expect(component.$el.querySelector('.folder-icon')).toBeDefined();
- });
-
- it('should render the number of children in a badge', () => {
- expect(component.$el.querySelector('.folder-name .badge').textContent).toContain(
- mockItem.size,
- );
- });
- });
-
- describe('when item is not folder', () => {
- let environment;
- let component;
-
- beforeEach(() => {
- environment = {
- name: 'production',
- size: 1,
- state: 'stopped',
- external_url: 'http://external.com',
- environment_type: null,
- last_deployment: {
- id: 66,
- iid: 6,
- sha: '500aabcb17c97bdcf2d0c410b70cb8556f0362dd',
- ref: {
- name: 'master',
- ref_url: 'root/ci-folders/tree/master',
- },
- tag: true,
- 'last?': true,
- user: {
- name: 'Administrator',
- username: 'root',
- id: 1,
- state: 'active',
- avatar_url:
- 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon',
- web_url: 'http://localhost:3000/root',
- },
- commit: {
- id: '500aabcb17c97bdcf2d0c410b70cb8556f0362dd',
- short_id: '500aabcb',
- title: 'Update .gitlab-ci.yml',
- author_name: 'Administrator',
- author_email: 'admin@example.com',
- created_at: '2016-11-07T18:28:13.000+00:00',
- message: 'Update .gitlab-ci.yml',
- author: {
- name: 'Administrator',
- username: 'root',
- id: 1,
- state: 'active',
- avatar_url:
- 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon',
- web_url: 'http://localhost:3000/root',
- },
- commit_path: '/root/ci-folders/tree/500aabcb17c97bdcf2d0c410b70cb8556f0362dd',
- },
- deployable: {
- id: 1279,
- name: 'deploy',
- build_path: '/root/ci-folders/builds/1279',
- retry_path: '/root/ci-folders/builds/1279/retry',
- created_at: '2016-11-29T18:11:58.430Z',
- updated_at: '2016-11-29T18:11:58.430Z',
- },
- manual_actions: [
- {
- name: 'action',
- play_path: '/play',
- },
- ],
- deployed_at: '2016-11-29T18:11:58.430Z',
- },
- has_stop_action: true,
- environment_path: 'root/ci-folders/environments/31',
- log_path: 'root/ci-folders/environments/31/logs',
- created_at: '2016-11-07T11:11:16.525Z',
- updated_at: '2016-11-10T15:55:58.778Z',
- };
-
- component = new EnvironmentItem({
- propsData: {
- model: environment,
- canReadEnvironment: true,
- },
- }).$mount();
- });
-
- it('should render environment name', () => {
- expect(component.$el.querySelector('.environment-name').textContent).toContain(
- environment.name,
- );
- });
-
- describe('With deployment', () => {
- it('should render deployment internal id', () => {
- expect(component.$el.querySelector('.deployment-column span').textContent).toContain(
- environment.last_deployment.iid,
- );
-
- expect(component.$el.querySelector('.deployment-column span').textContent).toContain('#');
- });
-
- it('should render last deployment date', () => {
- const timeagoInstance = new timeago(); // eslint-disable-line
- const formatedDate = timeagoInstance.format(environment.last_deployment.deployed_at);
-
- expect(
- component.$el.querySelector('.environment-created-date-timeago').textContent,
- ).toContain(formatedDate);
- });
-
- describe('With user information', () => {
- it('should render user avatar with link to profile', () => {
- expect(
- component.$el.querySelector('.js-deploy-user-container').getAttribute('href'),
- ).toEqual(environment.last_deployment.user.web_url);
- });
- });
-
- describe('With build url', () => {
- it('should link to build url provided', () => {
- expect(component.$el.querySelector('.build-link').getAttribute('href')).toEqual(
- environment.last_deployment.deployable.build_path,
- );
- });
-
- it('should render deployable name and id', () => {
- expect(component.$el.querySelector('.build-link').getAttribute('href')).toEqual(
- environment.last_deployment.deployable.build_path,
- );
- });
- });
-
- describe('With commit information', () => {
- it('should render commit component', () => {
- expect(component.$el.querySelector('.js-commit-component')).toBeDefined();
- });
- });
- });
-
- describe('With manual actions', () => {
- it('should render actions component', () => {
- expect(component.$el.querySelector('.js-manual-actions-container')).toBeDefined();
- });
- });
-
- describe('With external URL', () => {
- it('should render external url component', () => {
- expect(component.$el.querySelector('.js-external-url-container')).toBeDefined();
- });
- });
-
- describe('With stop action', () => {
- it('should render stop action component', () => {
- expect(component.$el.querySelector('.js-stop-component-container')).toBeDefined();
- });
- });
-
- describe('With retry action', () => {
- it('should render rollback component', () => {
- expect(component.$el.querySelector('.js-rollback-component-container')).toBeDefined();
- });
- });
- });
-});
diff --git a/spec/javascripts/environments/environment_monitoring_spec.js b/spec/javascripts/environments/environment_monitoring_spec.js
deleted file mode 100644
index f8d8223967a..00000000000
--- a/spec/javascripts/environments/environment_monitoring_spec.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import Vue from 'vue';
-import monitoringComp from '~/environments/components/environment_monitoring.vue';
-
-describe('Monitoring Component', () => {
- let MonitoringComponent;
- let component;
-
- const monitoringUrl = 'https://gitlab.com';
-
- beforeEach(() => {
- MonitoringComponent = Vue.extend(monitoringComp);
-
- component = new MonitoringComponent({
- propsData: {
- monitoringUrl,
- },
- }).$mount();
- });
-
- describe('computed', () => {
- it('title', () => {
- expect(component.title).toEqual('Monitoring');
- });
- });
-
- it('should render a link to environment monitoring page', () => {
- expect(component.$el.getAttribute('href')).toEqual(monitoringUrl);
- expect(component.$el.querySelector('.fa-area-chart')).toBeDefined();
- expect(component.$el.getAttribute('data-original-title')).toEqual('Monitoring');
- expect(component.$el.getAttribute('aria-label')).toEqual('Monitoring');
- });
-});
diff --git a/spec/javascripts/environments/environment_stop_spec.js b/spec/javascripts/environments/environment_stop_spec.js
deleted file mode 100644
index 4d9caa57566..00000000000
--- a/spec/javascripts/environments/environment_stop_spec.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import Vue from 'vue';
-import stopComp from '~/environments/components/environment_stop.vue';
-
-describe('Stop Component', () => {
- let StopComponent;
- let component;
-
- beforeEach(() => {
- StopComponent = Vue.extend(stopComp);
- spyOn(window, 'confirm').and.returnValue(true);
-
- component = new StopComponent({
- propsData: {
- environment: {},
- },
- }).$mount();
- });
-
- it('should render a button to stop the environment', () => {
- expect(component.$el.tagName).toEqual('BUTTON');
- expect(component.$el.getAttribute('data-original-title')).toEqual('Stop environment');
- });
-});
diff --git a/spec/javascripts/environments/environment_terminal_button_spec.js b/spec/javascripts/environments/environment_terminal_button_spec.js
deleted file mode 100644
index fc98e656efe..00000000000
--- a/spec/javascripts/environments/environment_terminal_button_spec.js
+++ /dev/null
@@ -1,35 +0,0 @@
-import Vue from 'vue';
-import terminalComp from '~/environments/components/environment_terminal_button.vue';
-
-describe('Stop Component', () => {
- let component;
- const terminalPath = '/path';
-
- const mountWithProps = props => {
- const TerminalComponent = Vue.extend(terminalComp);
- component = new TerminalComponent({
- propsData: props,
- }).$mount();
- };
-
- beforeEach(() => {
- mountWithProps({ terminalPath });
- });
-
- describe('computed', () => {
- it('title', () => {
- expect(component.title).toEqual('Terminal');
- });
- });
-
- it('should render a link to open a web terminal with the provided path', () => {
- expect(component.$el.tagName).toEqual('A');
- expect(component.$el.getAttribute('data-original-title')).toEqual('Terminal');
- expect(component.$el.getAttribute('aria-label')).toEqual('Terminal');
- expect(component.$el.getAttribute('href')).toEqual(terminalPath);
- });
-
- it('should render a non-disabled button', () => {
- expect(component.$el.classList).not.toContain('disabled');
- });
-});
diff --git a/spec/javascripts/environments/environments_app_spec.js b/spec/javascripts/environments/environments_app_spec.js
index 0dcd8868aba..75526c2ba74 100644
--- a/spec/javascripts/environments/environments_app_spec.js
+++ b/spec/javascripts/environments/environments_app_spec.js
@@ -1,8 +1,8 @@
import Vue from 'vue';
import MockAdapter from 'axios-mock-adapter';
+import mountComponent from 'spec/helpers/vue_mount_component_helper';
import axios from '~/lib/utils/axios_utils';
import environmentsComponent from '~/environments/components/environments_app.vue';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
import { environment, folder } from './mock_data';
describe('Environment', () => {
@@ -10,7 +10,6 @@ describe('Environment', () => {
endpoint: 'environments.json',
canCreateEnvironment: true,
canReadEnvironment: true,
- cssContainerClass: 'container',
newEnvironmentPath: 'environments/new',
helpPagePath: 'help',
canaryDeploymentFeatureId: 'canary_deployment',
@@ -93,13 +92,13 @@ describe('Environment', () => {
describe('pagination', () => {
it('should render pagination', () => {
- expect(component.$el.querySelectorAll('.gl-pagination li').length).toEqual(5);
+ expect(component.$el.querySelectorAll('.gl-pagination li').length).toEqual(9);
});
it('should make an API request when page is clicked', done => {
spyOn(component, 'updateContent');
setTimeout(() => {
- component.$el.querySelector('.gl-pagination li:nth-child(5) .page-link').click();
+ component.$el.querySelector('.gl-pagination li:nth-child(3) .page-link').click();
expect(component.updateContent).toHaveBeenCalledWith({ scope: 'available', page: '2' });
done();
diff --git a/spec/javascripts/environments/folder/environments_folder_view_spec.js b/spec/javascripts/environments/folder/environments_folder_view_spec.js
index f1c323df4be..6530201240f 100644
--- a/spec/javascripts/environments/folder/environments_folder_view_spec.js
+++ b/spec/javascripts/environments/folder/environments_folder_view_spec.js
@@ -1,9 +1,9 @@
import Vue from 'vue';
import MockAdapter from 'axios-mock-adapter';
-import axios from '~/lib/utils/axios_utils';
-import environmentsFolderViewComponent from '~/environments/folder/environments_folder_view.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
import { removeBreakLine, removeWhitespace } from 'spec/helpers/text_helper';
+import axios from '~/lib/utils/axios_utils';
+import environmentsFolderViewComponent from '~/environments/folder/environments_folder_view.vue';
import { environmentsList } from '../mock_data';
describe('Environments Folder View', () => {
@@ -115,7 +115,9 @@ describe('Environments Folder View', () => {
it('should make an API request when changing page', done => {
spyOn(component, 'updateContent');
setTimeout(() => {
- component.$el.querySelector('.gl-pagination .js-last-button .page-link').click();
+ component.$el
+ .querySelector('.gl-pagination .page-item:nth-last-of-type(2) .page-link')
+ .click();
expect(component.updateContent).toHaveBeenCalledWith({
scope: component.scope,
diff --git a/spec/javascripts/feature_highlight/feature_highlight_helper_spec.js b/spec/javascripts/feature_highlight/feature_highlight_helper_spec.js
index e5795d4cbb1..ba35f7bf7c6 100644
--- a/spec/javascripts/feature_highlight/feature_highlight_helper_spec.js
+++ b/spec/javascripts/feature_highlight/feature_highlight_helper_spec.js
@@ -1,11 +1,10 @@
import $ from 'jquery';
import MockAdapter from 'axios-mock-adapter';
+import getSetTimeoutPromise from 'spec/helpers/set_timeout_promise_helper';
import axios from '~/lib/utils/axios_utils';
import { getSelector, dismiss, inserted } from '~/feature_highlight/feature_highlight_helper';
import { togglePopover } from '~/shared/popover';
-import getSetTimeoutPromise from 'spec/helpers/set_timeout_promise_helper';
-
describe('feature highlight helper', () => {
describe('getSelector', () => {
it('returns js-feature-highlight selector', () => {
diff --git a/spec/javascripts/feature_highlight/feature_highlight_spec.js b/spec/javascripts/feature_highlight/feature_highlight_spec.js
index 0a9fba789c3..40ac4bbb6a0 100644
--- a/spec/javascripts/feature_highlight/feature_highlight_spec.js
+++ b/spec/javascripts/feature_highlight/feature_highlight_spec.js
@@ -1,8 +1,8 @@
import $ from 'jquery';
+import MockAdapter from 'axios-mock-adapter';
import * as featureHighlight from '~/feature_highlight/feature_highlight';
import * as popover from '~/shared/popover';
import axios from '~/lib/utils/axios_utils';
-import MockAdapter from 'axios-mock-adapter';
describe('feature highlight', () => {
beforeEach(() => {
diff --git a/spec/javascripts/filtered_search/visual_token_value_spec.js b/spec/javascripts/filtered_search/visual_token_value_spec.js
index 10d844fd94b..5863005de1e 100644
--- a/spec/javascripts/filtered_search/visual_token_value_spec.js
+++ b/spec/javascripts/filtered_search/visual_token_value_spec.js
@@ -1,5 +1,5 @@
-import VisualTokenValue from '~/filtered_search/visual_token_value';
import _ from 'underscore';
+import VisualTokenValue from '~/filtered_search/visual_token_value';
import AjaxCache from '~/lib/utils/ajax_cache';
import UsersCache from '~/lib/utils/users_cache';
import DropdownUtils from '~/filtered_search//dropdown_utils';
diff --git a/spec/javascripts/frequent_items/components/app_spec.js b/spec/javascripts/frequent_items/components/app_spec.js
index da0427d650a..b293ed541fd 100644
--- a/spec/javascripts/frequent_items/components/app_spec.js
+++ b/spec/javascripts/frequent_items/components/app_spec.js
@@ -1,12 +1,12 @@
import MockAdapter from 'axios-mock-adapter';
-import axios from '~/lib/utils/axios_utils';
import Vue from 'vue';
+import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
+import axios from '~/lib/utils/axios_utils';
import appComponent from '~/frequent_items/components/app.vue';
import eventHub from '~/frequent_items/event_hub';
import store from '~/frequent_items/store';
import { FREQUENT_ITEMS, HOUR_IN_MS } from '~/frequent_items/constants';
import { getTopFrequentItems } from '~/frequent_items/utils';
-import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { currentSession, mockFrequentProjects, mockSearchedProjects } from '../mock_data';
let session;
diff --git a/spec/javascripts/frequent_items/components/frequent_items_list_item_spec.js b/spec/javascripts/frequent_items/components/frequent_items_list_item_spec.js
index dce8e3be148..9bf3e02557f 100644
--- a/spec/javascripts/frequent_items/components/frequent_items_list_item_spec.js
+++ b/spec/javascripts/frequent_items/components/frequent_items_list_item_spec.js
@@ -1,53 +1,51 @@
-import Vue from 'vue';
-import frequentItemsListItemComponent from '~/frequent_items/components/frequent_items_list_item.vue';
-import { shallowMount } from '@vue/test-utils';
+import { shallowMount, createLocalVue } from '@vue/test-utils';
import { trimText } from 'spec/helpers/text_helper';
+import frequentItemsListItemComponent from '~/frequent_items/components/frequent_items_list_item.vue';
import { mockProject } from '../mock_data'; // can also use 'mockGroup', but not useful to test here
-const createComponent = () => {
- const Component = Vue.extend(frequentItemsListItemComponent);
-
- return shallowMount(Component, {
- propsData: {
- itemId: mockProject.id,
- itemName: mockProject.name,
- namespace: mockProject.namespace,
- webUrl: mockProject.webUrl,
- avatarUrl: mockProject.avatarUrl,
- },
- });
-};
+const localVue = createLocalVue();
describe('FrequentItemsListItemComponent', () => {
let wrapper;
- let vm;
-
- beforeEach(() => {
- wrapper = createComponent();
- ({ vm } = wrapper);
- });
+ const createComponent = (props = {}) => {
+ wrapper = shallowMount(localVue.extend(frequentItemsListItemComponent), {
+ propsData: {
+ itemId: mockProject.id,
+ itemName: mockProject.name,
+ namespace: mockProject.namespace,
+ webUrl: mockProject.webUrl,
+ avatarUrl: mockProject.avatarUrl,
+ ...props,
+ },
+ sync: false,
+ localVue,
+ });
+ };
afterEach(() => {
- vm.$destroy();
+ wrapper.destroy();
+ wrapper = null;
});
describe('computed', () => {
describe('hasAvatar', () => {
it('should return `true` or `false` if whether avatar is present or not', () => {
- wrapper.setProps({ avatarUrl: 'path/to/avatar.png' });
+ createComponent({ avatarUrl: 'path/to/avatar.png' });
- expect(vm.hasAvatar).toBe(true);
+ expect(wrapper.vm.hasAvatar).toBe(true);
+ });
- wrapper.setProps({ avatarUrl: null });
+ it('should return `false` if avatar is not present', () => {
+ createComponent({ avatarUrl: null });
- expect(vm.hasAvatar).toBe(false);
+ expect(wrapper.vm.hasAvatar).toBe(false);
});
});
describe('highlightedItemName', () => {
it('should enclose part of project name in <b> & </b> which matches with `matcher` prop', () => {
- wrapper.setProps({ matcher: 'lab' });
+ createComponent({ matcher: 'lab' });
expect(wrapper.find('.js-frequent-items-item-title').html()).toContain(
'<b>L</b><b>a</b><b>b</b>',
@@ -55,7 +53,7 @@ describe('FrequentItemsListItemComponent', () => {
});
it('should return project name as it is if `matcher` is not available', () => {
- wrapper.setProps({ matcher: null });
+ createComponent({ matcher: null });
expect(trimText(wrapper.find('.js-frequent-items-item-title').text())).toBe(
mockProject.name,
@@ -65,13 +63,13 @@ describe('FrequentItemsListItemComponent', () => {
describe('truncatedNamespace', () => {
it('should truncate project name from namespace string', () => {
- wrapper.setProps({ namespace: 'platform / nokia-3310' });
+ createComponent({ namespace: 'platform / nokia-3310' });
expect(trimText(wrapper.find('.js-frequent-items-item-namespace').text())).toBe('platform');
});
it('should truncate namespace string from the middle if it includes more than two groups in path', () => {
- wrapper.setProps({
+ createComponent({
namespace: 'platform / hardware / broadcom / Wifi Group / Mobile Chipset / nokia-3310',
});
@@ -84,6 +82,8 @@ describe('FrequentItemsListItemComponent', () => {
describe('template', () => {
it('should render component element', () => {
+ createComponent();
+
expect(wrapper.classes()).toContain('frequent-items-list-item-container');
expect(wrapper.findAll('a').length).toBe(1);
expect(wrapper.findAll('.frequent-items-item-avatar-container').length).toBe(1);
diff --git a/spec/javascripts/frequent_items/components/frequent_items_list_spec.js b/spec/javascripts/frequent_items/components/frequent_items_list_spec.js
index 8518a681a26..3fcd79480cc 100644
--- a/spec/javascripts/frequent_items/components/frequent_items_list_spec.js
+++ b/spec/javascripts/frequent_items/components/frequent_items_list_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import frequentItemsListComponent from '~/frequent_items/components/frequent_items_list.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import frequentItemsListComponent from '~/frequent_items/components/frequent_items_list.vue';
import { mockFrequentProjects } from '../mock_data';
const createComponent = (namespace = 'projects') => {
diff --git a/spec/javascripts/frequent_items/components/frequent_items_search_input_spec.js b/spec/javascripts/frequent_items/components/frequent_items_search_input_spec.js
index ddbbc5c2d29..be11af8428f 100644
--- a/spec/javascripts/frequent_items/components/frequent_items_search_input_spec.js
+++ b/spec/javascripts/frequent_items/components/frequent_items_search_input_spec.js
@@ -1,13 +1,15 @@
-import Vue from 'vue';
+import { shallowMount, createLocalVue } from '@vue/test-utils';
import searchComponent from '~/frequent_items/components/frequent_items_search_input.vue';
import eventHub from '~/frequent_items/event_hub';
-import { shallowMount } from '@vue/test-utils';
-const createComponent = (namespace = 'projects') => {
- const Component = Vue.extend(searchComponent);
+const localVue = createLocalVue();
- return shallowMount(Component, { propsData: { namespace } });
-};
+const createComponent = (namespace = 'projects') =>
+ shallowMount(localVue.extend(searchComponent), {
+ propsData: { namespace },
+ localVue,
+ sync: false,
+ });
describe('FrequentItemsSearchInputComponent', () => {
let wrapper;
@@ -40,7 +42,7 @@ describe('FrequentItemsSearchInputComponent', () => {
spyOn(eventHub, '$on');
const vmX = createComponent().vm;
- Vue.nextTick(() => {
+ localVue.nextTick(() => {
expect(eventHub.$on).toHaveBeenCalledWith(
`${vmX.namespace}-dropdownOpen`,
jasmine.any(Function),
@@ -58,7 +60,7 @@ describe('FrequentItemsSearchInputComponent', () => {
vmX.$mount();
vmX.$destroy();
- Vue.nextTick(() => {
+ localVue.nextTick(() => {
expect(eventHub.$off).toHaveBeenCalledWith(
`${vmX.namespace}-dropdownOpen`,
jasmine.any(Function),
diff --git a/spec/javascripts/frequent_items/mock_data.js b/spec/javascripts/frequent_items/mock_data.js
index 7f7d7b1cdbf..419f70e41af 100644
--- a/spec/javascripts/frequent_items/mock_data.js
+++ b/spec/javascripts/frequent_items/mock_data.js
@@ -68,7 +68,7 @@ export const mockFrequentGroups = [
},
];
-export const mockSearchedGroups = { data: [mockRawGroup] };
+export const mockSearchedGroups = [mockRawGroup];
export const mockProcessedSearchedGroups = [mockGroup];
export const mockProject = {
diff --git a/spec/javascripts/gpg_badges_spec.js b/spec/javascripts/gpg_badges_spec.js
index e73f6d3909e..4731484e02d 100644
--- a/spec/javascripts/gpg_badges_spec.js
+++ b/spec/javascripts/gpg_badges_spec.js
@@ -1,7 +1,7 @@
import MockAdapter from 'axios-mock-adapter';
+import { TEST_HOST } from 'spec/test_constants';
import axios from '~/lib/utils/axios_utils';
import GpgBadges from '~/gpg_badges';
-import { TEST_HOST } from 'spec/test_constants';
describe('GpgBadges', () => {
let mock;
diff --git a/spec/javascripts/groups/components/group_item_spec.js b/spec/javascripts/groups/components/group_item_spec.js
index cc88a7ac6c1..39575ee9f97 100644
--- a/spec/javascripts/groups/components/group_item_spec.js
+++ b/spec/javascripts/groups/components/group_item_spec.js
@@ -1,8 +1,8 @@
import Vue from 'vue';
+import mountComponent from 'spec/helpers/vue_mount_component_helper';
import groupItemComponent from '~/groups/components/group_item.vue';
import groupFolderComponent from '~/groups/components/group_folder.vue';
import eventHub from '~/groups/event_hub';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
import { mockParentGroupItem, mockChildren } from '../mock_data';
const createComponent = (group = mockParentGroupItem, parentGroup = mockChildren[0]) => {
diff --git a/spec/javascripts/groups/components/groups_spec.js b/spec/javascripts/groups/components/groups_spec.js
index 6ba4fe23a69..8423467742e 100644
--- a/spec/javascripts/groups/components/groups_spec.js
+++ b/spec/javascripts/groups/components/groups_spec.js
@@ -1,10 +1,10 @@
import Vue from 'vue';
+import mountComponent from 'spec/helpers/vue_mount_component_helper';
import groupsComponent from '~/groups/components/groups.vue';
import groupFolderComponent from '~/groups/components/group_folder.vue';
import groupItemComponent from '~/groups/components/group_item.vue';
import eventHub from '~/groups/event_hub';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
import { mockGroups, mockPageInfo } from '../mock_data';
const createComponent = (searchEmpty = false) => {
diff --git a/spec/javascripts/groups/components/item_actions_spec.js b/spec/javascripts/groups/components/item_actions_spec.js
index 3f66e7fd6f2..9a9d6208eac 100644
--- a/spec/javascripts/groups/components/item_actions_spec.js
+++ b/spec/javascripts/groups/components/item_actions_spec.js
@@ -1,8 +1,8 @@
import Vue from 'vue';
+import mountComponent from 'spec/helpers/vue_mount_component_helper';
import itemActionsComponent from '~/groups/components/item_actions.vue';
import eventHub from '~/groups/event_hub';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
import { mockParentGroupItem, mockChildren } from '../mock_data';
const createComponent = (group = mockParentGroupItem, parentGroup = mockChildren[0]) => {
diff --git a/spec/javascripts/groups/components/item_caret_spec.js b/spec/javascripts/groups/components/item_caret_spec.js
index 6e430dbcdb2..0eb56abbd61 100644
--- a/spec/javascripts/groups/components/item_caret_spec.js
+++ b/spec/javascripts/groups/components/item_caret_spec.js
@@ -1,8 +1,7 @@
import Vue from 'vue';
-import itemCaretComponent from '~/groups/components/item_caret.vue';
-
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import itemCaretComponent from '~/groups/components/item_caret.vue';
const createComponent = (isGroupOpen = false) => {
const Component = Vue.extend(itemCaretComponent);
diff --git a/spec/javascripts/groups/components/item_stats_spec.js b/spec/javascripts/groups/components/item_stats_spec.js
index b2441babf3f..13d17b87d76 100644
--- a/spec/javascripts/groups/components/item_stats_spec.js
+++ b/spec/javascripts/groups/components/item_stats_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
-import itemStatsComponent from '~/groups/components/item_stats.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import itemStatsComponent from '~/groups/components/item_stats.vue';
import {
mockParentGroupItem,
ITEM_TYPE,
diff --git a/spec/javascripts/groups/components/item_stats_value_spec.js b/spec/javascripts/groups/components/item_stats_value_spec.js
index ea8edcf49cd..ff4e781ce1a 100644
--- a/spec/javascripts/groups/components/item_stats_value_spec.js
+++ b/spec/javascripts/groups/components/item_stats_value_spec.js
@@ -1,8 +1,7 @@
import Vue from 'vue';
-import itemStatsValueComponent from '~/groups/components/item_stats_value.vue';
-
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import itemStatsValueComponent from '~/groups/components/item_stats_value.vue';
const createComponent = ({ title, cssClass, iconName, tooltipPlacement, value }) => {
const Component = Vue.extend(itemStatsValueComponent);
diff --git a/spec/javascripts/groups/components/item_type_icon_spec.js b/spec/javascripts/groups/components/item_type_icon_spec.js
index 73108512222..321712e54a6 100644
--- a/spec/javascripts/groups/components/item_type_icon_spec.js
+++ b/spec/javascripts/groups/components/item_type_icon_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
-import itemTypeIconComponent from '~/groups/components/item_type_icon.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import itemTypeIconComponent from '~/groups/components/item_type_icon.vue';
import { ITEM_TYPE } from '../mock_data';
const createComponent = (itemType = ITEM_TYPE.GROUP, isGroupOpen = false) => {
diff --git a/spec/javascripts/helpers/init_vue_mr_page_helper.js b/spec/javascripts/helpers/init_vue_mr_page_helper.js
index fc4288eb15b..3fa29cb9136 100644
--- a/spec/javascripts/helpers/init_vue_mr_page_helper.js
+++ b/spec/javascripts/helpers/init_vue_mr_page_helper.js
@@ -1,6 +1,6 @@
+import MockAdapter from 'axios-mock-adapter';
import initMRPage from '~/mr_notes/index';
import axios from '~/lib/utils/axios_utils';
-import MockAdapter from 'axios-mock-adapter';
import { userDataMock, notesDataMock, noteableDataMock } from '../notes/mock_data';
import diffFileMockData from '../diffs/mock_data/diff_file';
diff --git a/spec/javascripts/ide/components/commit_sidebar/actions_spec.js b/spec/javascripts/ide/components/commit_sidebar/actions_spec.js
index a3db3ee1b18..d02d8fa0253 100644
--- a/spec/javascripts/ide/components/commit_sidebar/actions_spec.js
+++ b/spec/javascripts/ide/components/commit_sidebar/actions_spec.js
@@ -1,9 +1,9 @@
import Vue from 'vue';
+import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
+import { projectData, branches } from 'spec/ide/mock_data';
import { createStore } from '~/ide/stores';
import commitActions from '~/ide/components/commit_sidebar/actions.vue';
import consts from '~/ide/stores/modules/commit/constants';
-import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
-import { projectData, branches } from 'spec/ide/mock_data';
const ACTION_UPDATE_COMMIT_ACTION = 'commit/updateCommitAction';
diff --git a/spec/javascripts/ide/components/commit_sidebar/form_spec.js b/spec/javascripts/ide/components/commit_sidebar/form_spec.js
index b7a7afe4db4..fdbabf84e25 100644
--- a/spec/javascripts/ide/components/commit_sidebar/form_spec.js
+++ b/spec/javascripts/ide/components/commit_sidebar/form_spec.js
@@ -1,10 +1,10 @@
import Vue from 'vue';
-import store from '~/ide/stores';
-import CommitForm from '~/ide/components/commit_sidebar/form.vue';
-import { activityBarViews } from '~/ide/constants';
import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import getSetTimeoutPromise from 'spec/helpers/set_timeout_promise_helper';
import { projectData } from 'spec/ide/mock_data';
+import store from '~/ide/stores';
+import CommitForm from '~/ide/components/commit_sidebar/form.vue';
+import { activityBarViews } from '~/ide/constants';
import { resetStore } from '../../helpers';
describe('IDE commit form', () => {
diff --git a/spec/javascripts/ide/components/commit_sidebar/list_collapsed_spec.js b/spec/javascripts/ide/components/commit_sidebar/list_collapsed_spec.js
index 3c7d6192e2c..6eb912127d5 100644
--- a/spec/javascripts/ide/components/commit_sidebar/list_collapsed_spec.js
+++ b/spec/javascripts/ide/components/commit_sidebar/list_collapsed_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
+import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import store from '~/ide/stores';
import listCollapsed from '~/ide/components/commit_sidebar/list_collapsed.vue';
-import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { file } from '../../helpers';
import { removeWhitespace } from '../../../helpers/text_helper';
diff --git a/spec/javascripts/ide/components/commit_sidebar/list_item_spec.js b/spec/javascripts/ide/components/commit_sidebar/list_item_spec.js
index c1dcd4928a0..caf06b5e1d8 100644
--- a/spec/javascripts/ide/components/commit_sidebar/list_item_spec.js
+++ b/spec/javascripts/ide/components/commit_sidebar/list_item_spec.js
@@ -1,9 +1,9 @@
import Vue from 'vue';
+import { trimText } from 'spec/helpers/text_helper';
+import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import store from '~/ide/stores';
import listItem from '~/ide/components/commit_sidebar/list_item.vue';
import router from '~/ide/ide_router';
-import { trimText } from 'spec/helpers/text_helper';
-import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { file, resetStore } from '../../helpers';
describe('Multi-file editor commit sidebar list item', () => {
diff --git a/spec/javascripts/ide/components/commit_sidebar/list_spec.js b/spec/javascripts/ide/components/commit_sidebar/list_spec.js
index b786be55019..81120f6d277 100644
--- a/spec/javascripts/ide/components/commit_sidebar/list_spec.js
+++ b/spec/javascripts/ide/components/commit_sidebar/list_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
+import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import store from '~/ide/stores';
import commitSidebarList from '~/ide/components/commit_sidebar/list.vue';
-import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { file, resetStore } from '../../helpers';
describe('Multi-file editor commit sidebar list', () => {
diff --git a/spec/javascripts/ide/components/commit_sidebar/message_field_spec.js b/spec/javascripts/ide/components/commit_sidebar/message_field_spec.js
index af67991eadd..53508f52b2f 100644
--- a/spec/javascripts/ide/components/commit_sidebar/message_field_spec.js
+++ b/spec/javascripts/ide/components/commit_sidebar/message_field_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import CommitMessageField from '~/ide/components/commit_sidebar/message_field.vue';
import createComponent from 'spec/helpers/vue_mount_component_helper';
+import CommitMessageField from '~/ide/components/commit_sidebar/message_field.vue';
describe('IDE commit message field', () => {
const Component = Vue.extend(CommitMessageField);
diff --git a/spec/javascripts/ide/components/commit_sidebar/new_merge_request_option_spec.js b/spec/javascripts/ide/components/commit_sidebar/new_merge_request_option_spec.js
index 5f2db695241..02caf689c50 100644
--- a/spec/javascripts/ide/components/commit_sidebar/new_merge_request_option_spec.js
+++ b/spec/javascripts/ide/components/commit_sidebar/new_merge_request_option_spec.js
@@ -1,9 +1,9 @@
import Vue from 'vue';
-import store from '~/ide/stores';
-import NewMergeRequestOption from '~/ide/components/commit_sidebar/new_merge_request_option.vue';
import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { projectData, branches } from 'spec/ide/mock_data';
import { resetStore } from 'spec/ide/helpers';
+import NewMergeRequestOption from '~/ide/components/commit_sidebar/new_merge_request_option.vue';
+import store from '~/ide/stores';
import consts from '../../../../../app/assets/javascripts/ide/stores/modules/commit/constants';
describe('create new MR checkbox', () => {
diff --git a/spec/javascripts/ide/components/commit_sidebar/radio_group_spec.js b/spec/javascripts/ide/components/commit_sidebar/radio_group_spec.js
index db1988be3e1..b30f0e6822b 100644
--- a/spec/javascripts/ide/components/commit_sidebar/radio_group_spec.js
+++ b/spec/javascripts/ide/components/commit_sidebar/radio_group_spec.js
@@ -1,8 +1,8 @@
import Vue from 'vue';
-import store from '~/ide/stores';
-import radioGroup from '~/ide/components/commit_sidebar/radio_group.vue';
import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { resetStore } from 'spec/ide/helpers';
+import store from '~/ide/stores';
+import radioGroup from '~/ide/components/commit_sidebar/radio_group.vue';
describe('IDE commit sidebar radio group', () => {
let vm;
diff --git a/spec/javascripts/ide/components/file_row_extra_spec.js b/spec/javascripts/ide/components/file_row_extra_spec.js
index 86146fcef69..4c2f29f55dd 100644
--- a/spec/javascripts/ide/components/file_row_extra_spec.js
+++ b/spec/javascripts/ide/components/file_row_extra_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import { createStore } from '~/ide/stores';
import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
+import { createStore } from '~/ide/stores';
import FileRowExtra from '~/ide/components/file_row_extra.vue';
import { file, resetStore } from '../helpers';
diff --git a/spec/javascripts/ide/components/file_templates/bar_spec.js b/spec/javascripts/ide/components/file_templates/bar_spec.js
index a688f7f69a6..5399ada94ae 100644
--- a/spec/javascripts/ide/components/file_templates/bar_spec.js
+++ b/spec/javascripts/ide/components/file_templates/bar_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
+import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { createStore } from '~/ide/stores';
import Bar from '~/ide/components/file_templates/bar.vue';
-import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { resetStore, file } from '../../helpers';
describe('IDE file templates bar component', () => {
diff --git a/spec/javascripts/ide/components/ide_side_bar_spec.js b/spec/javascripts/ide/components/ide_side_bar_spec.js
index 20ee20bc1d7..a2d15462ac5 100644
--- a/spec/javascripts/ide/components/ide_side_bar_spec.js
+++ b/spec/javascripts/ide/components/ide_side_bar_spec.js
@@ -1,8 +1,8 @@
import Vue from 'vue';
+import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import store from '~/ide/stores';
import ideSidebar from '~/ide/components/ide_side_bar.vue';
import { activityBarViews } from '~/ide/constants';
-import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { resetStore } from '../helpers';
import { projectData } from '../mock_data';
diff --git a/spec/javascripts/ide/components/ide_spec.js b/spec/javascripts/ide/components/ide_spec.js
index de4becec1cd..048db4a7533 100644
--- a/spec/javascripts/ide/components/ide_spec.js
+++ b/spec/javascripts/ide/components/ide_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
+import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import store from '~/ide/stores';
import ide from '~/ide/components/ide.vue';
-import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { file, resetStore } from '../helpers';
import { projectData } from '../mock_data';
diff --git a/spec/javascripts/ide/components/ide_status_bar_spec.js b/spec/javascripts/ide/components/ide_status_bar_spec.js
index bb8fb74c068..69f163574fb 100644
--- a/spec/javascripts/ide/components/ide_status_bar_spec.js
+++ b/spec/javascripts/ide/components/ide_status_bar_spec.js
@@ -1,8 +1,8 @@
import Vue from 'vue';
+import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import store from '~/ide/stores';
import ideStatusBar from '~/ide/components/ide_status_bar.vue';
import { rightSidebarViews } from '~/ide/constants';
-import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { resetStore } from '../helpers';
import { projectData } from '../mock_data';
diff --git a/spec/javascripts/ide/components/nav_dropdown_button_spec.js b/spec/javascripts/ide/components/nav_dropdown_button_spec.js
index 19b0071567a..0d63869fba2 100644
--- a/spec/javascripts/ide/components/nav_dropdown_button_spec.js
+++ b/spec/javascripts/ide/components/nav_dropdown_button_spec.js
@@ -1,8 +1,8 @@
import Vue from 'vue';
-import NavDropdownButton from '~/ide/components/nav_dropdown_button.vue';
-import store from '~/ide/stores';
import { trimText } from 'spec/helpers/text_helper';
import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
+import NavDropdownButton from '~/ide/components/nav_dropdown_button.vue';
+import store from '~/ide/stores';
import { resetStore } from '../helpers';
describe('NavDropdown', () => {
diff --git a/spec/javascripts/ide/components/nav_dropdown_spec.js b/spec/javascripts/ide/components/nav_dropdown_spec.js
index af6665bcd62..fe1d0ca371d 100644
--- a/spec/javascripts/ide/components/nav_dropdown_spec.js
+++ b/spec/javascripts/ide/components/nav_dropdown_spec.js
@@ -1,8 +1,8 @@
import $ from 'jquery';
import Vue from 'vue';
+import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import store from '~/ide/stores';
import NavDropdown from '~/ide/components/nav_dropdown.vue';
-import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
describe('IDE NavDropdown', () => {
const Component = Vue.extend(NavDropdown);
diff --git a/spec/javascripts/ide/components/new_dropdown/index_spec.js b/spec/javascripts/ide/components/new_dropdown/index_spec.js
index aaebe88f314..03afe997fed 100644
--- a/spec/javascripts/ide/components/new_dropdown/index_spec.js
+++ b/spec/javascripts/ide/components/new_dropdown/index_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
+import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import store from '~/ide/stores';
import newDropdown from '~/ide/components/new_dropdown/index.vue';
-import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { resetStore } from '../../helpers';
describe('new dropdown component', () => {
diff --git a/spec/javascripts/ide/components/new_dropdown/modal_spec.js b/spec/javascripts/ide/components/new_dropdown/modal_spec.js
index 0556feae46a..a1c00e99927 100644
--- a/spec/javascripts/ide/components/new_dropdown/modal_spec.js
+++ b/spec/javascripts/ide/components/new_dropdown/modal_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
+import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { createStore } from '~/ide/stores';
import modal from '~/ide/components/new_dropdown/modal.vue';
-import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
describe('new file modal component', () => {
const Component = Vue.extend(modal);
diff --git a/spec/javascripts/ide/components/new_dropdown/upload_spec.js b/spec/javascripts/ide/components/new_dropdown/upload_spec.js
index d19af6af2d7..4ebd0977832 100644
--- a/spec/javascripts/ide/components/new_dropdown/upload_spec.js
+++ b/spec/javascripts/ide/components/new_dropdown/upload_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import upload from '~/ide/components/new_dropdown/upload.vue';
import createComponent from 'spec/helpers/vue_mount_component_helper';
+import upload from '~/ide/components/new_dropdown/upload.vue';
describe('new dropdown upload', () => {
let vm;
diff --git a/spec/javascripts/ide/components/repo_commit_section_spec.js b/spec/javascripts/ide/components/repo_commit_section_spec.js
index 6c726c1e154..917eb1438bd 100644
--- a/spec/javascripts/ide/components/repo_commit_section_spec.js
+++ b/spec/javascripts/ide/components/repo_commit_section_spec.js
@@ -1,8 +1,8 @@
import Vue from 'vue';
+import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import store from '~/ide/stores';
import router from '~/ide/ide_router';
import repoCommitSection from '~/ide/components/repo_commit_section.vue';
-import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { file, resetStore } from '../helpers';
describe('RepoCommitSection', () => {
diff --git a/spec/javascripts/ide/components/shared/tokened_input_spec.js b/spec/javascripts/ide/components/shared/tokened_input_spec.js
index b09bf760543..885fd976655 100644
--- a/spec/javascripts/ide/components/shared/tokened_input_spec.js
+++ b/spec/javascripts/ide/components/shared/tokened_input_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import TokenedInput from '~/ide/components/shared/tokened_input.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import TokenedInput from '~/ide/components/shared/tokened_input.vue';
const TEST_PLACEHOLDER = 'Searching in test';
const TEST_TOKENS = [
diff --git a/spec/javascripts/ide/helpers.js b/spec/javascripts/ide/helpers.js
index 7e107747346..2c52780f316 100644
--- a/spec/javascripts/ide/helpers.js
+++ b/spec/javascripts/ide/helpers.js
@@ -1,54 +1 @@
-import * as pathUtils from 'path';
-import { decorateData } from '~/ide/stores/utils';
-import state from '~/ide/stores/state';
-import commitState from '~/ide/stores/modules/commit/state';
-import mergeRequestsState from '~/ide/stores/modules/merge_requests/state';
-import pipelinesState from '~/ide/stores/modules/pipelines/state';
-import branchesState from '~/ide/stores/modules/branches/state';
-import fileTemplatesState from '~/ide/stores/modules/file_templates/state';
-import paneState from '~/ide/stores/modules/pane/state';
-
-export const resetStore = store => {
- const newState = {
- ...state(),
- commit: commitState(),
- mergeRequests: mergeRequestsState(),
- pipelines: pipelinesState(),
- branches: branchesState(),
- fileTemplates: fileTemplatesState(),
- rightPane: paneState(),
- };
- store.replaceState(newState);
-};
-
-export const file = (name = 'name', id = name, type = '', parent = null) =>
- decorateData({
- id,
- type,
- icon: 'icon',
- url: 'url',
- name,
- path: parent ? `${parent.path}/${name}` : name,
- parentPath: parent ? parent.path : '',
- lastCommit: {},
- });
-
-export const createEntriesFromPaths = paths =>
- paths
- .map(path => ({
- name: pathUtils.basename(path),
- dir: pathUtils.dirname(path),
- ext: pathUtils.extname(path),
- }))
- .reduce((entries, path, idx) => {
- const { name } = path;
- const parent = path.dir ? entries[path.dir] : null;
- const type = path.ext ? 'blob' : 'tree';
-
- const entry = file(name, (idx + 1).toString(), type, parent);
-
- return {
- [entry.path]: entry,
- ...entries,
- };
- }, {});
+export * from '../../frontend/ide/helpers';
diff --git a/spec/javascripts/ide/stores/actions_spec.js b/spec/javascripts/ide/stores/actions_spec.js
index 7e77b859fdd..0ee114cb70d 100644
--- a/spec/javascripts/ide/stores/actions_spec.js
+++ b/spec/javascripts/ide/stores/actions_spec.js
@@ -1,3 +1,4 @@
+import MockAdapter from 'axios-mock-adapter';
import actions, {
stageAllChanges,
unstageAllChanges,
@@ -11,6 +12,7 @@ import actions, {
renameEntry,
getBranchData,
createTempEntry,
+ discardAllChanges,
} from '~/ide/stores/actions';
import axios from '~/lib/utils/axios_utils';
import { createStore } from '~/ide/stores';
@@ -18,7 +20,6 @@ import * as types from '~/ide/stores/mutation_types';
import router from '~/ide/ide_router';
import { resetStore, file } from '../helpers';
import testAction from '../../helpers/vuex_action_helper';
-import MockAdapter from 'axios-mock-adapter';
import eventHub from '~/ide/eventhub';
const store = createStore();
@@ -60,8 +61,9 @@ describe('Multi-file store actions', () => {
});
describe('discardAllChanges', () => {
+ let f;
beforeEach(() => {
- const f = file('discardAll');
+ f = file('discardAll');
f.changed = true;
store.state.openFiles.push(f);
@@ -89,6 +91,59 @@ describe('Multi-file store actions', () => {
.then(done)
.catch(done.fail);
});
+
+ it('closes the temp file and deletes it if it was open', done => {
+ f.tempFile = true;
+
+ testAction(
+ discardAllChanges,
+ undefined,
+ store.state,
+ [{ type: types.REMOVE_ALL_CHANGES_FILES }],
+ [
+ { type: 'closeFile', payload: jasmine.objectContaining({ path: 'discardAll' }) },
+ { type: 'deleteEntry', payload: 'discardAll' },
+ ],
+ done,
+ );
+ });
+
+ it('renames the file to its original name and closes it if it was open', done => {
+ Object.assign(f, {
+ prevPath: 'parent/path/old_name',
+ prevName: 'old_name',
+ prevParentPath: 'parent/path',
+ });
+
+ testAction(
+ discardAllChanges,
+ undefined,
+ store.state,
+ [{ type: types.REMOVE_ALL_CHANGES_FILES }],
+ [
+ { type: 'closeFile', payload: jasmine.objectContaining({ path: 'discardAll' }) },
+ {
+ type: 'renameEntry',
+ payload: { path: 'discardAll', name: 'old_name', parentPath: 'parent/path' },
+ },
+ ],
+ done,
+ );
+ });
+
+ it('discards file changes on all other files', done => {
+ testAction(
+ discardAllChanges,
+ undefined,
+ store.state,
+ [
+ { type: types.DISCARD_FILE_CHANGES, payload: 'discardAll' },
+ { type: types.REMOVE_ALL_CHANGES_FILES },
+ ],
+ [],
+ done,
+ );
+ });
});
describe('closeAllFiles', () => {
diff --git a/spec/javascripts/ide/stores/modules/commit/actions_spec.js b/spec/javascripts/ide/stores/modules/commit/actions_spec.js
index d464f30b947..cbc2401262f 100644
--- a/spec/javascripts/ide/stores/modules/commit/actions_spec.js
+++ b/spec/javascripts/ide/stores/modules/commit/actions_spec.js
@@ -1,3 +1,4 @@
+import { resetStore, file } from 'spec/ide/helpers';
import rootActions from '~/ide/stores/actions';
import { createStore } from '~/ide/stores';
import service from '~/ide/services';
@@ -7,7 +8,6 @@ import consts from '~/ide/stores/modules/commit/constants';
import * as mutationTypes from '~/ide/stores/modules/commit/mutation_types';
import * as actions from '~/ide/stores/modules/commit/actions';
import { commitActionTypes } from '~/ide/constants';
-import { resetStore, file } from 'spec/ide/helpers';
import testAction from '../../../../helpers/vuex_action_helper';
const TEST_COMMIT_SHA = '123456789';
diff --git a/spec/javascripts/importer_status_spec.js b/spec/javascripts/importer_status_spec.js
index e7f195ed57c..90835e1cc21 100644
--- a/spec/javascripts/importer_status_spec.js
+++ b/spec/javascripts/importer_status_spec.js
@@ -1,6 +1,6 @@
+import MockAdapter from 'axios-mock-adapter';
import { ImporterStatus } from '~/importer_status';
import axios from '~/lib/utils/axios_utils';
-import MockAdapter from 'axios-mock-adapter';
describe('Importer Status', () => {
let instance;
diff --git a/spec/javascripts/issue_show/components/app_spec.js b/spec/javascripts/issue_show/components/app_spec.js
index 9fce040fd8c..4c405fbc4d1 100644
--- a/spec/javascripts/issue_show/components/app_spec.js
+++ b/spec/javascripts/issue_show/components/app_spec.js
@@ -1,12 +1,12 @@
/* eslint-disable no-unused-vars */
-import GLDropdown from '~/gl_dropdown';
import Vue from 'vue';
import MockAdapter from 'axios-mock-adapter';
+import setTimeoutPromise from 'spec/helpers/set_timeout_promise_helper';
+import GLDropdown from '~/gl_dropdown';
import axios from '~/lib/utils/axios_utils';
import '~/behaviors/markdown/render_gfm';
import issuableApp from '~/issue_show/components/app.vue';
import eventHub from '~/issue_show/event_hub';
-import setTimeoutPromise from 'spec/helpers/set_timeout_promise_helper';
import issueShowData from '../mock_data';
function formatText(text) {
diff --git a/spec/javascripts/issue_show/components/description_spec.js b/spec/javascripts/issue_show/components/description_spec.js
index e10426a9858..83e498347f7 100644
--- a/spec/javascripts/issue_show/components/description_spec.js
+++ b/spec/javascripts/issue_show/components/description_spec.js
@@ -1,8 +1,8 @@
import $ from 'jquery';
import Vue from 'vue';
import '~/behaviors/markdown/render_gfm';
-import Description from '~/issue_show/components/description.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import Description from '~/issue_show/components/description.vue';
describe('Description component', () => {
let vm;
diff --git a/spec/javascripts/jobs/components/job_app_spec.js b/spec/javascripts/jobs/components/job_app_spec.js
index 57ab1aa73f7..0fcd6080106 100644
--- a/spec/javascripts/jobs/components/job_app_spec.js
+++ b/spec/javascripts/jobs/components/job_app_spec.js
@@ -1,11 +1,11 @@
import Vue from 'vue';
import MockAdapter from 'axios-mock-adapter';
+import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
+import { waitForMutation } from 'spec/helpers/vue_test_utils_helper';
import axios from '~/lib/utils/axios_utils';
import jobApp from '~/jobs/components/job_app.vue';
import createStore from '~/jobs/store';
import * as types from '~/jobs/store/mutation_types';
-import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
-import { waitForMutation } from 'spec/helpers/vue_test_utils_helper';
import { resetStore } from '../store/helpers';
import job from '../mock_data';
diff --git a/spec/javascripts/jobs/components/job_container_item_spec.js b/spec/javascripts/jobs/components/job_container_item_spec.js
index 2d108f1ad7f..99f6d9a14d9 100644
--- a/spec/javascripts/jobs/components/job_container_item_spec.js
+++ b/spec/javascripts/jobs/components/job_container_item_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import JobContainerItem from '~/jobs/components/job_container_item.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import JobContainerItem from '~/jobs/components/job_container_item.vue';
import job from '../mock_data';
describe('JobContainerItem', () => {
diff --git a/spec/javascripts/jobs/components/job_log_spec.js b/spec/javascripts/jobs/components/job_log_spec.js
index 4d782e5bd0e..fcaf2b3bb64 100644
--- a/spec/javascripts/jobs/components/job_log_spec.js
+++ b/spec/javascripts/jobs/components/job_log_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
+import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import component from '~/jobs/components/job_log.vue';
import createStore from '~/jobs/store';
-import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { resetStore } from '../store/helpers';
describe('Job Log', () => {
diff --git a/spec/javascripts/jobs/components/manual_variables_form_spec.js b/spec/javascripts/jobs/components/manual_variables_form_spec.js
index 093aa905185..1f2bf8674c1 100644
--- a/spec/javascripts/jobs/components/manual_variables_form_spec.js
+++ b/spec/javascripts/jobs/components/manual_variables_form_spec.js
@@ -1,9 +1,12 @@
-import { shallowMount } from '@vue/test-utils';
+import { shallowMount, createLocalVue } from '@vue/test-utils';
import { GlButton } from '@gitlab/ui';
import Form from '~/jobs/components/manual_variables_form.vue';
+const localVue = createLocalVue();
+
describe('Manual Variables Form', () => {
let wrapper;
+
const requiredProps = {
action: {
path: '/play',
@@ -14,8 +17,10 @@ describe('Manual Variables Form', () => {
};
const factory = (props = {}) => {
- wrapper = shallowMount(Form, {
+ wrapper = shallowMount(localVue.extend(Form), {
propsData: props,
+ localVue,
+ sync: false,
});
};
@@ -23,8 +28,15 @@ describe('Manual Variables Form', () => {
factory(requiredProps);
});
- afterEach(() => {
- wrapper.destroy();
+ afterEach(done => {
+ // The component has a `nextTick` callback after some events so we need
+ // to wait for those to finish before destroying.
+ setImmediate(() => {
+ wrapper.destroy();
+ wrapper = null;
+
+ done();
+ });
});
it('renders empty form with correct placeholders', () => {
@@ -71,7 +83,7 @@ describe('Manual Variables Form', () => {
});
describe('when deleting a variable', () => {
- it('removes the variable row', () => {
+ beforeEach(done => {
wrapper.vm.variables = [
{
key: 'new key',
@@ -80,6 +92,10 @@ describe('Manual Variables Form', () => {
},
];
+ wrapper.vm.$nextTick(done);
+ });
+
+ it('removes the variable row', () => {
wrapper.find(GlButton).vm.$emit('click');
expect(wrapper.vm.variables.length).toBe(0);
diff --git a/spec/javascripts/jobs/components/stages_dropdown_spec.js b/spec/javascripts/jobs/components/stages_dropdown_spec.js
index a34337310d6..e091aece564 100644
--- a/spec/javascripts/jobs/components/stages_dropdown_spec.js
+++ b/spec/javascripts/jobs/components/stages_dropdown_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import component from '~/jobs/components/stages_dropdown.vue';
import { trimText } from 'spec/helpers/text_helper';
+import component from '~/jobs/components/stages_dropdown.vue';
import mountComponent from '../../helpers/vue_mount_component_helper';
describe('Stages Dropdown', () => {
diff --git a/spec/javascripts/jobs/mixins/delayed_job_mixin_spec.js b/spec/javascripts/jobs/mixins/delayed_job_mixin_spec.js
index 48a6b80b365..b67187f1d50 100644
--- a/spec/javascripts/jobs/mixins/delayed_job_mixin_spec.js
+++ b/spec/javascripts/jobs/mixins/delayed_job_mixin_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import delayedJobMixin from '~/jobs/mixins/delayed_job_mixin';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import delayedJobMixin from '~/jobs/mixins/delayed_job_mixin';
describe('DelayedJobMixin', () => {
const delayedJobFixture = getJSONFixture('jobs/delayed.json');
diff --git a/spec/javascripts/jobs/store/actions_spec.js b/spec/javascripts/jobs/store/actions_spec.js
index 91d1942bdbf..c0e8dbf9b22 100644
--- a/spec/javascripts/jobs/store/actions_spec.js
+++ b/spec/javascripts/jobs/store/actions_spec.js
@@ -1,4 +1,6 @@
import MockAdapter from 'axios-mock-adapter';
+import testAction from 'spec/helpers/vuex_action_helper';
+import { TEST_HOST } from 'spec/test_constants';
import axios from '~/lib/utils/axios_utils';
import {
setJobEndpoint,
@@ -27,8 +29,6 @@ import {
} from '~/jobs/store/actions';
import state from '~/jobs/store/state';
import * as types from '~/jobs/store/mutation_types';
-import testAction from 'spec/helpers/vuex_action_helper';
-import { TEST_HOST } from 'spec/test_constants';
describe('Job State actions', () => {
let mockedState;
diff --git a/spec/javascripts/labels_issue_sidebar_spec.js b/spec/javascripts/labels_issue_sidebar_spec.js
index 5ae5643aefc..9d05bdeee20 100644
--- a/spec/javascripts/labels_issue_sidebar_spec.js
+++ b/spec/javascripts/labels_issue_sidebar_spec.js
@@ -2,10 +2,10 @@
import $ from 'jquery';
import MockAdapter from 'axios-mock-adapter';
+import _ from 'underscore';
import axios from '~/lib/utils/axios_utils';
import IssuableContext from '~/issuable_context';
import LabelsSelect from '~/labels_select';
-import _ from 'underscore';
import '~/gl_dropdown';
import 'select2';
diff --git a/spec/javascripts/landing_spec.js b/spec/javascripts/landing_spec.js
index 2fe5a47b63e..bffef8fc64f 100644
--- a/spec/javascripts/landing_spec.js
+++ b/spec/javascripts/landing_spec.js
@@ -1,5 +1,5 @@
-import Landing from '~/landing';
import Cookies from 'js-cookie';
+import Landing from '~/landing';
describe('Landing', function() {
describe('class constructor', function() {
diff --git a/spec/javascripts/lib/utils/common_utils_spec.js b/spec/javascripts/lib/utils/common_utils_spec.js
index 8956bc92e6b..e471be608c8 100644
--- a/spec/javascripts/lib/utils/common_utils_spec.js
+++ b/spec/javascripts/lib/utils/common_utils_spec.js
@@ -1,6 +1,6 @@
+import MockAdapter from 'axios-mock-adapter';
import axios from '~/lib/utils/axios_utils';
import * as commonUtils from '~/lib/utils/common_utils';
-import MockAdapter from 'axios-mock-adapter';
import { faviconDataUrl, overlayDataUrl, faviconWithOverlayDataUrl } from './mock_data';
import breakpointInstance from '~/breakpoints';
@@ -721,6 +721,28 @@ describe('common_utils', () => {
});
});
+ describe('convertObjectPropsToSnakeCase', () => {
+ it('converts each object key to snake case', () => {
+ const obj = {
+ some: 'some',
+ 'cool object': 'cool object',
+ likeThisLongOne: 'likeThisLongOne',
+ };
+
+ expect(commonUtils.convertObjectPropsToSnakeCase(obj)).toEqual({
+ some: 'some',
+ cool_object: 'cool object',
+ like_this_long_one: 'likeThisLongOne',
+ });
+ });
+
+ it('returns an empty object if there are no keys', () => {
+ ['', {}, [], null].forEach(badObj => {
+ expect(commonUtils.convertObjectPropsToSnakeCase(badObj)).toEqual({});
+ });
+ });
+ });
+
describe('with options', () => {
const objWithoutChildren = {
project_name: 'GitLab CE',
diff --git a/spec/javascripts/line_highlighter_spec.js b/spec/javascripts/line_highlighter_spec.js
index f8f835ffdef..45b10fc3bd8 100644
--- a/spec/javascripts/line_highlighter_spec.js
+++ b/spec/javascripts/line_highlighter_spec.js
@@ -1,12 +1,11 @@
-/* eslint-disable no-var, no-else-return, dot-notation, no-return-assign, no-new, no-underscore-dangle */
+/* eslint-disable no-else-return, dot-notation, no-return-assign, no-new, no-underscore-dangle */
import $ from 'jquery';
import LineHighlighter from '~/line_highlighter';
describe('LineHighlighter', function() {
- var clickLine;
preloadFixtures('static/line_highlighter.html');
- clickLine = function(number, eventData = {}) {
+ const clickLine = function(number, eventData = {}) {
if ($.isEmptyObject(eventData)) {
return $(`#L${number}`).click();
} else {
@@ -39,34 +38,30 @@ describe('LineHighlighter', function() {
});
it('highlights a range of lines given in the URL hash', function() {
- var line;
new LineHighlighter({ hash: '#L5-25' });
expect($(`.${this.css}`).length).toBe(21);
- for (line = 5; line <= 25; line += 1) {
+ for (let line = 5; line <= 25; line += 1) {
expect($(`#LC${line}`)).toHaveClass(this.css);
}
});
it('scrolls to the first highlighted line on initial load', function() {
- var spy;
- spy = spyOn($, 'scrollTo');
+ const spy = spyOn($, 'scrollTo');
new LineHighlighter({ hash: '#L5-25' });
expect(spy).toHaveBeenCalledWith('#L5', jasmine.anything());
});
it('discards click events', function() {
- var spy;
- spy = spyOnEvent('a[data-line-number]', 'click');
+ const spy = spyOnEvent('a[data-line-number]', 'click');
clickLine(13);
expect(spy).toHaveBeenPrevented();
});
it('handles garbage input from the hash', function() {
- var func;
- func = function() {
+ const func = function() {
return new LineHighlighter({ fileHolderSelector: '#blob-content-holder' });
};
@@ -76,8 +71,7 @@ describe('LineHighlighter', function() {
describe('clickHandler', function() {
it('handles clicking on a child icon element', function() {
- var spy;
- spy = spyOn(this['class'], 'setHash').and.callThrough();
+ const spy = spyOn(this['class'], 'setHash').and.callThrough();
$('#L13 i')
.mousedown()
.click();
@@ -102,8 +96,7 @@ describe('LineHighlighter', function() {
});
it('sets the hash', function() {
- var spy;
- spy = spyOn(this['class'], 'setHash').and.callThrough();
+ const spy = spyOn(this['class'], 'setHash').and.callThrough();
clickLine(13);
expect(spy).toHaveBeenCalledWith(13);
@@ -112,8 +105,7 @@ describe('LineHighlighter', function() {
describe('with shiftKey', function() {
it('sets the hash', function() {
- var spy;
- spy = spyOn(this['class'], 'setHash').and.callThrough();
+ const spy = spyOn(this['class'], 'setHash').and.callThrough();
clickLine(13);
clickLine(20, {
shiftKey: true,
@@ -134,8 +126,7 @@ describe('LineHighlighter', function() {
});
it('sets the hash', function() {
- var spy;
- spy = spyOn(this['class'], 'setHash');
+ const spy = spyOn(this['class'], 'setHash');
clickLine(13, {
shiftKey: true,
});
@@ -146,27 +137,25 @@ describe('LineHighlighter', function() {
describe('with existing single-line highlight', function() {
it('uses existing line as last line when target is lesser', function() {
- var line;
clickLine(20);
clickLine(15, {
shiftKey: true,
});
expect($(`.${this.css}`).length).toBe(6);
- for (line = 15; line <= 20; line += 1) {
+ for (let line = 15; line <= 20; line += 1) {
expect($(`#LC${line}`)).toHaveClass(this.css);
}
});
it('uses existing line as first line when target is greater', function() {
- var line;
clickLine(5);
clickLine(10, {
shiftKey: true,
});
expect($(`.${this.css}`).length).toBe(6);
- for (line = 5; line <= 10; line += 1) {
+ for (let line = 5; line <= 10; line += 1) {
expect($(`#LC${line}`)).toHaveClass(this.css);
}
});
@@ -183,25 +172,23 @@ describe('LineHighlighter', function() {
});
it('uses target as first line when it is less than existing first line', function() {
- var line;
clickLine(5, {
shiftKey: true,
});
expect($(`.${this.css}`).length).toBe(6);
- for (line = 5; line <= 10; line += 1) {
+ for (let line = 5; line <= 10; line += 1) {
expect($(`#LC${line}`)).toHaveClass(this.css);
}
});
it('uses target as last line when it is greater than existing first line', function() {
- var line;
clickLine(15, {
shiftKey: true,
});
expect($(`.${this.css}`).length).toBe(6);
- for (line = 10; line <= 15; line += 1) {
+ for (let line = 10; line <= 15; line += 1) {
expect($(`#LC${line}`)).toHaveClass(this.css);
}
});
diff --git a/spec/javascripts/merge_request_spec.js b/spec/javascripts/merge_request_spec.js
index 54071ccc5c2..dc61482fdf3 100644
--- a/spec/javascripts/merge_request_spec.js
+++ b/spec/javascripts/merge_request_spec.js
@@ -89,6 +89,7 @@ describe('MergeRequest', function() {
});
});
+ // https://gitlab.com/gitlab-org/gitlab/issues/34861
// eslint-disable-next-line jasmine/no-disabled-tests
xit('shows an error notification when tasklist update failed', done => {
mock
diff --git a/spec/javascripts/monitoring/components/dashboard_spec.js b/spec/javascripts/monitoring/components/dashboard_spec.js
index 0f20171726c..b29bac21820 100644
--- a/spec/javascripts/monitoring/components/dashboard_spec.js
+++ b/spec/javascripts/monitoring/components/dashboard_spec.js
@@ -4,11 +4,14 @@ import { GlToast } from '@gitlab/ui';
import VueDraggable from 'vuedraggable';
import MockAdapter from 'axios-mock-adapter';
import Dashboard from '~/monitoring/components/dashboard.vue';
+import { metricStates } from '~/monitoring/constants';
+import GroupEmptyState from '~/monitoring/components/group_empty_state.vue';
import * as types from '~/monitoring/stores/mutation_types';
import { createStore } from '~/monitoring/stores';
import axios from '~/lib/utils/axios_utils';
import {
metricsGroupsAPIResponse,
+ mockedEmptyResult,
mockedQueryResultPayload,
mockedQueryResultPayloadCoresTotal,
mockApiEndpoint,
@@ -29,6 +32,7 @@ const propsData = {
emptyGettingStartedSvgPath: '/path/to/getting-started.svg',
emptyLoadingSvgPath: '/path/to/loading.svg',
emptyNoDataSvgPath: '/path/to/no-data.svg',
+ emptyNoDataSmallSvgPath: '/path/to/no-data-small.svg',
emptyUnableToConnectSvgPath: '/path/to/unable-to-connect.svg',
environmentsEndpoint: '/root/hello-prometheus/environments/35',
currentEnvironmentName: 'production',
@@ -43,24 +47,31 @@ const resetSpy = spy => {
}
};
-export default propsData;
+let expectedPanelCount;
function setupComponentStore(component) {
+ // Load 2 panel groups
component.$store.commit(
`monitoringDashboard/${types.RECEIVE_METRICS_DATA_SUCCESS}`,
metricsGroupsAPIResponse,
);
- // Load 2 panels to the dashboard
+ // Load 3 panels to the dashboard, one with an empty result
component.$store.commit(
- `monitoringDashboard/${types.SET_QUERY_RESULT}`,
+ `monitoringDashboard/${types.RECEIVE_METRIC_RESULT_SUCCESS}`,
+ mockedEmptyResult,
+ );
+ component.$store.commit(
+ `monitoringDashboard/${types.RECEIVE_METRIC_RESULT_SUCCESS}`,
mockedQueryResultPayload,
);
component.$store.commit(
- `monitoringDashboard/${types.SET_QUERY_RESULT}`,
+ `monitoringDashboard/${types.RECEIVE_METRIC_RESULT_SUCCESS}`,
mockedQueryResultPayloadCoresTotal,
);
+ expectedPanelCount = 2;
+
component.$store.commit(
`monitoringDashboard/${types.RECEIVE_ENVIRONMENTS_DATA_SUCCESS}`,
environmentData,
@@ -72,6 +83,17 @@ describe('Dashboard', () => {
let mock;
let store;
let component;
+ let wrapper;
+
+ const createComponentWrapper = (props = {}, options = {}) => {
+ wrapper = shallowMount(localVue.extend(DashboardComponent), {
+ localVue,
+ sync: false,
+ propsData: { ...propsData, ...props },
+ store,
+ ...options,
+ });
+ };
beforeEach(() => {
setFixtures(`
@@ -81,13 +103,16 @@ describe('Dashboard', () => {
store = createStore();
mock = new MockAdapter(axios);
- DashboardComponent = Vue.extend(Dashboard);
+ DashboardComponent = localVue.extend(Dashboard);
});
afterEach(() => {
if (component) {
component.$destroy();
}
+ if (wrapper) {
+ wrapper.destroy();
+ }
mock.restore();
});
@@ -112,26 +137,15 @@ describe('Dashboard', () => {
describe('no data found', () => {
it('shows the environment selector dropdown', () => {
- component = new DashboardComponent({
- el: document.querySelector('.prometheus-graphs'),
- propsData: { ...propsData, showEmptyState: true },
- store,
- });
+ createComponentWrapper();
- expect(component.$el.querySelector('.js-environments-dropdown')).toBeTruthy();
+ expect(wrapper.find('.js-environments-dropdown').exists()).toBeTruthy();
});
});
describe('cluster health', () => {
- let wrapper;
-
beforeEach(done => {
- wrapper = shallowMount(DashboardComponent, {
- localVue,
- sync: false,
- propsData: { ...propsData, hasMetrics: true },
- store,
- });
+ createComponentWrapper({ hasMetrics: true });
// all_dashboards is not defined in health dashboards
wrapper.vm.$store.commit(`monitoringDashboard/${types.SET_ALL_DASHBOARDS}`, undefined);
@@ -259,7 +273,7 @@ describe('Dashboard', () => {
metricsGroupsAPIResponse,
);
component.$store.commit(
- `monitoringDashboard/${types.SET_QUERY_RESULT}`,
+ `monitoringDashboard/${types.RECEIVE_METRIC_RESULT_SUCCESS}`,
mockedQueryResultPayload,
);
@@ -382,10 +396,36 @@ describe('Dashboard', () => {
});
});
- describe('drag and drop function', () => {
- let wrapper;
- let expectedPanelCount; // also called metrics, naming to be improved: https://gitlab.com/gitlab-org/gitlab/issues/31565
+ describe('when one of the metrics is missing', () => {
+ beforeEach(() => {
+ mock.onGet(mockApiEndpoint).reply(200, metricsGroupsAPIResponse);
+ });
+
+ beforeEach(done => {
+ createComponentWrapper({ hasMetrics: true });
+ setupComponentStore(wrapper.vm);
+
+ wrapper.vm.$nextTick(done);
+ });
+ it('shows a group empty area', () => {
+ const emptyGroup = wrapper.findAll({ ref: 'empty-group' });
+
+ expect(emptyGroup).toHaveLength(1);
+ expect(emptyGroup.is(GroupEmptyState)).toBe(true);
+ });
+
+ it('group empty area displays a NO_DATA state', () => {
+ expect(
+ wrapper
+ .findAll({ ref: 'empty-group' })
+ .at(0)
+ .props('selectedState'),
+ ).toEqual(metricStates.NO_DATA);
+ });
+ });
+
+ describe('drag and drop function', () => {
const findDraggables = () => wrapper.findAll(VueDraggable);
const findEnabledDraggables = () => findDraggables().filter(f => !f.attributes('disabled'));
const findDraggablePanels = () => wrapper.findAll('.js-draggable-panel');
@@ -393,20 +433,10 @@ describe('Dashboard', () => {
beforeEach(() => {
mock.onGet(mockApiEndpoint).reply(200, metricsGroupsAPIResponse);
- expectedPanelCount = metricsGroupsAPIResponse.reduce(
- (acc, group) => group.panels.length + acc,
- 0,
- );
});
beforeEach(done => {
- wrapper = shallowMount(DashboardComponent, {
- localVue,
- sync: false,
- propsData: { ...propsData, hasMetrics: true },
- store,
- attachToDocument: true,
- });
+ createComponentWrapper({ hasMetrics: true }, { attachToDocument: true });
setupComponentStore(wrapper.vm);
@@ -455,22 +485,20 @@ describe('Dashboard', () => {
it('metrics can be swapped', done => {
const firstDraggable = findDraggables().at(0);
- const mockMetrics = [...metricsGroupsAPIResponse[0].panels];
- const value = () => firstDraggable.props('value');
+ const mockMetrics = [...metricsGroupsAPIResponse[1].panels];
- expect(value().length).toBe(mockMetrics.length);
- value().forEach((metric, i) => {
- expect(metric.title).toBe(mockMetrics[i].title);
- });
+ const firstTitle = mockMetrics[0].title;
+ const secondTitle = mockMetrics[1].title;
// swap two elements and `input` them
[mockMetrics[0], mockMetrics[1]] = [mockMetrics[1], mockMetrics[0]];
firstDraggable.vm.$emit('input', mockMetrics);
- firstDraggable.vm.$nextTick(() => {
- value().forEach((metric, i) => {
- expect(metric.title).toBe(mockMetrics[i].title);
- });
+ wrapper.vm.$nextTick(() => {
+ const { panels } = wrapper.vm.dashboard.panel_groups[1];
+
+ expect(panels[1].title).toEqual(firstTitle);
+ expect(panels[0].title).toEqual(secondTitle);
done();
});
});
@@ -502,7 +530,6 @@ describe('Dashboard', () => {
// https://gitlab.com/gitlab-org/gitlab-ce/issues/66922
// eslint-disable-next-line jasmine/no-disabled-tests
xdescribe('link to chart', () => {
- let wrapper;
const currentDashboard = 'TEST_DASHBOARD';
localVue.use(GlToast);
const link = () => wrapper.find('.js-chart-link');
@@ -511,13 +538,7 @@ describe('Dashboard', () => {
beforeEach(done => {
mock.onGet(mockApiEndpoint).reply(200, metricsGroupsAPIResponse);
- wrapper = shallowMount(DashboardComponent, {
- localVue,
- sync: false,
- attachToDocument: true,
- propsData: { ...propsData, hasMetrics: true, currentDashboard },
- store,
- });
+ createComponentWrapper({ hasMetrics: true, currentDashboard }, { attachToDocument: true });
setTimeout(done);
});
@@ -587,7 +608,7 @@ describe('Dashboard', () => {
setupComponentStore(component);
return Vue.nextTick().then(() => {
- promPanel = component.$el.querySelector('.prometheus-panel');
+ [, promPanel] = component.$el.querySelectorAll('.prometheus-panel');
promGroup = promPanel.querySelector('.prometheus-graph-group');
panelToggle = promPanel.querySelector('.js-graph-group-toggle');
chart = promGroup.querySelector('.position-relative svg');
@@ -614,19 +635,12 @@ describe('Dashboard', () => {
});
describe('dashboard edit link', () => {
- let wrapper;
const findEditLink = () => wrapper.find('.js-edit-link');
beforeEach(done => {
mock.onGet(mockApiEndpoint).reply(200, metricsGroupsAPIResponse);
- wrapper = shallowMount(DashboardComponent, {
- localVue,
- sync: false,
- attachToDocument: true,
- propsData: { ...propsData, hasMetrics: true },
- store,
- });
+ createComponentWrapper({ hasMetrics: true }, { attachToDocument: true });
wrapper.vm.$store.commit(
`monitoringDashboard/${types.SET_ALL_DASHBOARDS}`,
diff --git a/spec/javascripts/monitoring/components/graph_group_spec.js b/spec/javascripts/monitoring/components/graph_group_spec.js
index 068c4b5302c..43ca17c3cbc 100644
--- a/spec/javascripts/monitoring/components/graph_group_spec.js
+++ b/spec/javascripts/monitoring/components/graph_group_spec.js
@@ -1,47 +1,120 @@
-import { shallowMount } from '@vue/test-utils';
+import { shallowMount, createLocalVue } from '@vue/test-utils';
import GraphGroup from '~/monitoring/components/graph_group.vue';
+import Icon from '~/vue_shared/components/icon.vue';
+
+const localVue = createLocalVue();
describe('Graph group component', () => {
- let graphGroup;
+ let wrapper;
+
+ const findGroup = () => wrapper.find({ ref: 'graph-group' });
+ const findContent = () => wrapper.find({ ref: 'graph-group-content' });
+ const findCaretIcon = () => wrapper.find(Icon);
+
+ const createComponent = propsData => {
+ wrapper = shallowMount(localVue.extend(GraphGroup), {
+ propsData,
+ sync: false,
+ localVue,
+ });
+ };
afterEach(() => {
- graphGroup.destroy();
+ wrapper.destroy();
});
- describe('When groups can be collapsed', () => {
+ describe('When group is not collapsed', () => {
beforeEach(() => {
- graphGroup = shallowMount(GraphGroup, {
- propsData: {
- name: 'panel',
- collapseGroup: true,
- },
+ createComponent({
+ name: 'panel',
+ collapseGroup: false,
});
});
- it('should show the angle-down caret icon when collapseGroup is true', () => {
- expect(graphGroup.vm.caretIcon).toBe('angle-down');
+ it('should show the angle-down caret icon', () => {
+ expect(findContent().isVisible()).toBe(true);
+ expect(findCaretIcon().props('name')).toBe('angle-down');
});
- it('should show the angle-right caret icon when collapseGroup is false', () => {
- graphGroup.vm.collapse();
+ it('should show the angle-right caret icon when the user collapses the group', done => {
+ wrapper.vm.collapse();
- expect(graphGroup.vm.caretIcon).toBe('angle-right');
+ wrapper.vm.$nextTick(() => {
+ expect(findContent().isVisible()).toBe(false);
+ expect(findCaretIcon().props('name')).toBe('angle-right');
+ done();
+ });
});
- });
- describe('When groups can not be collapsed', () => {
- beforeEach(() => {
- graphGroup = shallowMount(GraphGroup, {
- propsData: {
+ it('should show the open the group when collapseGroup is set to true', done => {
+ wrapper.setProps({
+ collapseGroup: true,
+ });
+
+ wrapper.vm.$nextTick(() => {
+ expect(findContent().isVisible()).toBe(true);
+ expect(findCaretIcon().props('name')).toBe('angle-down');
+ done();
+ });
+ });
+
+ describe('When group is collapsed', () => {
+ beforeEach(() => {
+ createComponent({
name: 'panel',
collapseGroup: true,
+ });
+ });
+
+ it('should show the angle-down caret icon when collapseGroup is true', () => {
+ expect(wrapper.vm.caretIcon).toBe('angle-right');
+ });
+
+ it('should show the angle-right caret icon when collapseGroup is false', () => {
+ wrapper.vm.collapse();
+
+ expect(wrapper.vm.caretIcon).toBe('angle-down');
+ });
+ });
+
+ describe('When groups can not be collapsed', () => {
+ beforeEach(() => {
+ createComponent({
+ name: 'panel',
showPanels: false,
- },
+ collapseGroup: false,
+ });
+ });
+
+ it('should not have a container when showPanels is false', () => {
+ expect(findGroup().exists()).toBe(false);
+ expect(findContent().exists()).toBe(true);
});
});
- it('should not contain a prometheus-graph-group container when showPanels is false', () => {
- expect(graphGroup.vm.$el.querySelector('.prometheus-graph-group')).toBe(null);
+ describe('When group does not show a panel heading', () => {
+ beforeEach(() => {
+ createComponent({
+ name: 'panel',
+ showPanels: false,
+ collapseGroup: false,
+ });
+ });
+
+ it('should collapse the panel content', () => {
+ expect(findContent().isVisible()).toBe(true);
+ expect(findCaretIcon().exists()).toBe(false);
+ });
+
+ it('should show the panel content when clicked', done => {
+ wrapper.vm.collapse();
+
+ wrapper.vm.$nextTick(() => {
+ expect(findContent().isVisible()).toBe(true);
+ expect(findCaretIcon().exists()).toBe(false);
+ done();
+ });
+ });
});
});
});
diff --git a/spec/javascripts/monitoring/mock_data.js b/spec/javascripts/monitoring/mock_data.js
index f9cc839bde6..c80401e8c1d 100644
--- a/spec/javascripts/monitoring/mock_data.js
+++ b/spec/javascripts/monitoring/mock_data.js
@@ -1,250 +1,5 @@
-import {
- anomalyMockGraphData as importedAnomalyMockGraphData,
- metricsGroupsAPIResponse as importedMetricsGroupsAPIResponse,
- environmentData as importedEnvironmentData,
- dashboardGitResponse as importedDashboardGitResponse,
-} from '../../frontend/monitoring/mock_data';
+// No new code should be added to this file. Instead, modify the
+// file this one re-exports from. For more detail about why, see:
+// https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/31349
-export const anomalyMockGraphData = importedAnomalyMockGraphData;
-export const metricsGroupsAPIResponse = importedMetricsGroupsAPIResponse;
-export const environmentData = importedEnvironmentData;
-export const dashboardGitResponse = importedDashboardGitResponse;
-
-export const mockApiEndpoint = `${gl.TEST_HOST}/monitoring/mock`;
-
-export const mockedQueryResultPayload = {
- metricId: '17_system_metrics_kubernetes_container_memory_average',
- result: [
- {
- metric: {},
- values: [
- [1563272065.589, '10.396484375'],
- [1563272125.589, '10.333984375'],
- [1563272185.589, '10.333984375'],
- [1563272245.589, '10.333984375'],
- [1563272305.589, '10.333984375'],
- [1563272365.589, '10.333984375'],
- [1563272425.589, '10.38671875'],
- [1563272485.589, '10.333984375'],
- [1563272545.589, '10.333984375'],
- [1563272605.589, '10.333984375'],
- [1563272665.589, '10.333984375'],
- [1563272725.589, '10.333984375'],
- [1563272785.589, '10.396484375'],
- [1563272845.589, '10.333984375'],
- [1563272905.589, '10.333984375'],
- [1563272965.589, '10.3984375'],
- [1563273025.589, '10.337890625'],
- [1563273085.589, '10.34765625'],
- [1563273145.589, '10.337890625'],
- [1563273205.589, '10.337890625'],
- [1563273265.589, '10.337890625'],
- [1563273325.589, '10.337890625'],
- [1563273385.589, '10.337890625'],
- [1563273445.589, '10.337890625'],
- [1563273505.589, '10.337890625'],
- [1563273565.589, '10.337890625'],
- [1563273625.589, '10.337890625'],
- [1563273685.589, '10.337890625'],
- [1563273745.589, '10.337890625'],
- [1563273805.589, '10.337890625'],
- [1563273865.589, '10.390625'],
- [1563273925.589, '10.390625'],
- ],
- },
- ],
-};
-
-export const mockedQueryResultPayloadCoresTotal = {
- metricId: '13_system_metrics_kubernetes_container_cores_total',
- result: [
- {
- metric: {},
- values: [
- [1563272065.589, '9.396484375'],
- [1563272125.589, '9.333984375'],
- [1563272185.589, '9.333984375'],
- [1563272245.589, '9.333984375'],
- [1563272305.589, '9.333984375'],
- [1563272365.589, '9.333984375'],
- [1563272425.589, '9.38671875'],
- [1563272485.589, '9.333984375'],
- [1563272545.589, '9.333984375'],
- [1563272605.589, '9.333984375'],
- [1563272665.589, '9.333984375'],
- [1563272725.589, '9.333984375'],
- [1563272785.589, '9.396484375'],
- [1563272845.589, '9.333984375'],
- [1563272905.589, '9.333984375'],
- [1563272965.589, '9.3984375'],
- [1563273025.589, '9.337890625'],
- [1563273085.589, '9.34765625'],
- [1563273145.589, '9.337890625'],
- [1563273205.589, '9.337890625'],
- [1563273265.589, '9.337890625'],
- [1563273325.589, '9.337890625'],
- [1563273385.589, '9.337890625'],
- [1563273445.589, '9.337890625'],
- [1563273505.589, '9.337890625'],
- [1563273565.589, '9.337890625'],
- [1563273625.589, '9.337890625'],
- [1563273685.589, '9.337890625'],
- [1563273745.589, '9.337890625'],
- [1563273805.589, '9.337890625'],
- [1563273865.589, '9.390625'],
- [1563273925.589, '9.390625'],
- ],
- },
- ],
-};
-
-export const graphDataPrometheusQuery = {
- title: 'Super Chart A2',
- type: 'single-stat',
- weight: 2,
- metrics: [
- {
- id: 'metric_a1',
- metric_id: 2,
- query: 'max(go_memstats_alloc_bytes{job="prometheus"}) by (job) /1024/1024',
- unit: 'MB',
- label: 'Total Consumption',
- prometheus_endpoint_path:
- '/root/kubernetes-gke-project/environments/35/prometheus/api/v1/query?query=max%28go_memstats_alloc_bytes%7Bjob%3D%22prometheus%22%7D%29+by+%28job%29+%2F1024%2F1024',
- },
- ],
- queries: [
- {
- metricId: null,
- id: 'metric_a1',
- metric_id: 2,
- query: 'max(go_memstats_alloc_bytes{job="prometheus"}) by (job) /1024/1024',
- unit: 'MB',
- label: 'Total Consumption',
- prometheus_endpoint_path:
- '/root/kubernetes-gke-project/environments/35/prometheus/api/v1/query?query=max%28go_memstats_alloc_bytes%7Bjob%3D%22prometheus%22%7D%29+by+%28job%29+%2F1024%2F1024',
- result: [
- {
- metric: { job: 'prometheus' },
- value: ['2019-06-26T21:03:20.881Z', 91],
- },
- ],
- },
- ],
-};
-
-export const graphDataPrometheusQueryRange = {
- title: 'Super Chart A1',
- type: 'area-chart',
- weight: 2,
- metrics: [
- {
- id: 'metric_a1',
- metric_id: 2,
- query_range:
- 'avg(sum(container_memory_usage_bytes{container_name!="POD",pod_name=~"^%{ci_environment_slug}-(.*)",namespace="%{kube_namespace}"}) by (job)) without (job) /1024/1024/1024',
- unit: 'MB',
- label: 'Total Consumption',
- prometheus_endpoint_path:
- '/root/kubernetes-gke-project/environments/35/prometheus/api/v1/query?query=max%28go_memstats_alloc_bytes%7Bjob%3D%22prometheus%22%7D%29+by+%28job%29+%2F1024%2F1024',
- },
- ],
- queries: [
- {
- metricId: '10',
- id: 'metric_a1',
- metric_id: 2,
- query_range:
- 'avg(sum(container_memory_usage_bytes{container_name!="POD",pod_name=~"^%{ci_environment_slug}-(.*)",namespace="%{kube_namespace}"}) by (job)) without (job) /1024/1024/1024',
- unit: 'MB',
- label: 'Total Consumption',
- prometheus_endpoint_path:
- '/root/kubernetes-gke-project/environments/35/prometheus/api/v1/query?query=max%28go_memstats_alloc_bytes%7Bjob%3D%22prometheus%22%7D%29+by+%28job%29+%2F1024%2F1024',
- result: [
- {
- metric: {},
- values: [[1495700554.925, '8.0390625'], [1495700614.925, '8.0390625']],
- },
- ],
- },
- ],
-};
-
-export const graphDataPrometheusQueryRangeMultiTrack = {
- title: 'Super Chart A3',
- type: 'heatmap',
- weight: 3,
- x_label: 'Status Code',
- y_label: 'Time',
- metrics: [],
- queries: [
- {
- metricId: '1',
- id: 'response_metrics_nginx_ingress_throughput_status_code',
- query_range:
- 'sum(rate(nginx_upstream_responses_total{upstream=~"%{kube_namespace}-%{ci_environment_slug}-.*"}[60m])) by (status_code)',
- unit: 'req / sec',
- label: 'Status Code',
- metric_id: 1,
- prometheus_endpoint_path:
- '/root/rails_nodb/environments/3/prometheus/api/v1/query_range?query=sum%28rate%28nginx_upstream_responses_total%7Bupstream%3D~%22%25%7Bkube_namespace%7D-%25%7Bci_environment_slug%7D-.%2A%22%7D%5B2m%5D%29%29+by+%28status_code%29',
- result: [
- {
- metric: { status_code: '1xx' },
- values: [
- ['2019-08-30T15:00:00.000Z', 0],
- ['2019-08-30T16:00:00.000Z', 2],
- ['2019-08-30T17:00:00.000Z', 0],
- ['2019-08-30T18:00:00.000Z', 0],
- ['2019-08-30T19:00:00.000Z', 0],
- ['2019-08-30T20:00:00.000Z', 3],
- ],
- },
- {
- metric: { status_code: '2xx' },
- values: [
- ['2019-08-30T15:00:00.000Z', 1],
- ['2019-08-30T16:00:00.000Z', 3],
- ['2019-08-30T17:00:00.000Z', 6],
- ['2019-08-30T18:00:00.000Z', 10],
- ['2019-08-30T19:00:00.000Z', 8],
- ['2019-08-30T20:00:00.000Z', 6],
- ],
- },
- {
- metric: { status_code: '3xx' },
- values: [
- ['2019-08-30T15:00:00.000Z', 1],
- ['2019-08-30T16:00:00.000Z', 2],
- ['2019-08-30T17:00:00.000Z', 3],
- ['2019-08-30T18:00:00.000Z', 3],
- ['2019-08-30T19:00:00.000Z', 2],
- ['2019-08-30T20:00:00.000Z', 1],
- ],
- },
- {
- metric: { status_code: '4xx' },
- values: [
- ['2019-08-30T15:00:00.000Z', 2],
- ['2019-08-30T16:00:00.000Z', 0],
- ['2019-08-30T17:00:00.000Z', 0],
- ['2019-08-30T18:00:00.000Z', 2],
- ['2019-08-30T19:00:00.000Z', 0],
- ['2019-08-30T20:00:00.000Z', 2],
- ],
- },
- {
- metric: { status_code: '5xx' },
- values: [
- ['2019-08-30T15:00:00.000Z', 0],
- ['2019-08-30T16:00:00.000Z', 1],
- ['2019-08-30T17:00:00.000Z', 0],
- ['2019-08-30T18:00:00.000Z', 0],
- ['2019-08-30T19:00:00.000Z', 0],
- ['2019-08-30T20:00:00.000Z', 2],
- ],
- },
- ],
- },
- ],
-};
+export * from '../../frontend/monitoring/mock_data';
diff --git a/spec/javascripts/monitoring/utils_spec.js b/spec/javascripts/monitoring/utils_spec.js
deleted file mode 100644
index 202b4ec8f2e..00000000000
--- a/spec/javascripts/monitoring/utils_spec.js
+++ /dev/null
@@ -1,345 +0,0 @@
-import {
- getTimeDiff,
- getTimeWindow,
- graphDataValidatorForValues,
- isDateTimePickerInputValid,
- truncateZerosInDateTime,
- stringToISODate,
- ISODateToString,
- isValidDate,
- graphDataValidatorForAnomalyValues,
-} from '~/monitoring/utils';
-import { timeWindows, timeWindowsKeyNames } from '~/monitoring/constants';
-import {
- graphDataPrometheusQuery,
- graphDataPrometheusQueryRange,
- anomalyMockGraphData,
-} from './mock_data';
-
-describe('getTimeDiff', () => {
- function secondsBetween({ start, end }) {
- return (new Date(end) - new Date(start)) / 1000;
- }
-
- function minutesBetween(timeRange) {
- return secondsBetween(timeRange) / 60;
- }
-
- function hoursBetween(timeRange) {
- return minutesBetween(timeRange) / 60;
- }
-
- it('defaults to an 8 hour (28800s) difference', () => {
- const params = getTimeDiff();
-
- expect(hoursBetween(params)).toEqual(8);
- });
-
- it('accepts time window as an argument', () => {
- const params = getTimeDiff('thirtyMinutes');
-
- expect(minutesBetween(params)).toEqual(30);
- });
-
- it('returns a value for every defined time window', () => {
- const nonDefaultWindows = Object.keys(timeWindows).filter(window => window !== 'eightHours');
-
- nonDefaultWindows.forEach(timeWindow => {
- const params = getTimeDiff(timeWindow);
-
- // Ensure we're not returning the default
- expect(hoursBetween(params)).not.toEqual(8);
- });
- });
-});
-
-describe('getTimeWindow', () => {
- [
- {
- args: [
- {
- start: '2019-10-01T18:27:47.000Z',
- end: '2019-10-01T21:27:47.000Z',
- },
- ],
- expected: timeWindowsKeyNames.threeHours,
- },
- {
- args: [
- {
- start: '2019-10-01T28:27:47.000Z',
- end: '2019-10-01T21:27:47.000Z',
- },
- ],
- expected: null,
- },
- {
- args: [
- {
- start: '',
- end: '',
- },
- ],
- expected: null,
- },
- {
- args: [
- {
- start: null,
- end: null,
- },
- ],
- expected: null,
- },
- {
- args: [{}],
- expected: null,
- },
- ].forEach(({ args, expected }) => {
- it(`returns "${expected}" with args=${JSON.stringify(args)}`, () => {
- expect(getTimeWindow(...args)).toEqual(expected);
- });
- });
-});
-
-describe('graphDataValidatorForValues', () => {
- /*
- * When dealing with a metric using the query format, e.g.
- * query: 'max(go_memstats_alloc_bytes{job="prometheus"}) by (job) /1024/1024'
- * the validator will look for the `value` key instead of `values`
- */
- it('validates data with the query format', () => {
- const validGraphData = graphDataValidatorForValues(true, graphDataPrometheusQuery);
-
- expect(validGraphData).toBe(true);
- });
-
- /*
- * When dealing with a metric using the query?range format, e.g.
- * query_range: 'avg(sum(container_memory_usage_bytes{container_name!="POD",pod_name=~"^%{ci_environment_slug}-(.*)",namespace="%{kube_namespace}"}) by (job)) without (job) /1024/1024/1024',
- * the validator will look for the `values` key instead of `value`
- */
- it('validates data with the query_range format', () => {
- const validGraphData = graphDataValidatorForValues(false, graphDataPrometheusQueryRange);
-
- expect(validGraphData).toBe(true);
- });
-});
-
-describe('stringToISODate', () => {
- ['', 'null', undefined, 'abc'].forEach(input => {
- it(`throws error for invalid input like ${input}`, done => {
- try {
- stringToISODate(input);
- } catch (e) {
- expect(e).toBeDefined();
- done();
- }
- });
- });
- [
- {
- input: '2019-09-09 01:01:01',
- output: '2019-09-09T01:01:01Z',
- },
- {
- input: '2019-09-09 00:00:00',
- output: '2019-09-09T00:00:00Z',
- },
- {
- input: '2019-09-09 23:59:59',
- output: '2019-09-09T23:59:59Z',
- },
- {
- input: '2019-09-09',
- output: '2019-09-09T00:00:00Z',
- },
- ].forEach(({ input, output }) => {
- it(`returns ${output} from ${input}`, () => {
- expect(stringToISODate(input)).toBe(output);
- });
- });
-});
-
-describe('ISODateToString', () => {
- [
- {
- input: new Date('2019-09-09T00:00:00.000Z'),
- output: '2019-09-09 00:00:00',
- },
- {
- input: new Date('2019-09-09T07:00:00.000Z'),
- output: '2019-09-09 07:00:00',
- },
- ].forEach(({ input, output }) => {
- it(`ISODateToString return ${output} for ${input}`, () => {
- expect(ISODateToString(input)).toBe(output);
- });
- });
-});
-
-describe('truncateZerosInDateTime', () => {
- [
- {
- input: '',
- output: '',
- },
- {
- input: '2019-10-10',
- output: '2019-10-10',
- },
- {
- input: '2019-10-10 00:00:01',
- output: '2019-10-10 00:00:01',
- },
- {
- input: '2019-10-10 00:00:00',
- output: '2019-10-10',
- },
- ].forEach(({ input, output }) => {
- it(`truncateZerosInDateTime return ${output} for ${input}`, () => {
- expect(truncateZerosInDateTime(input)).toBe(output);
- });
- });
-});
-
-describe('isValidDate', () => {
- [
- {
- input: '2019-09-09T00:00:00.000Z',
- output: true,
- },
- {
- input: '2019-09-09T000:00.000Z',
- output: false,
- },
- {
- input: 'a2019-09-09T000:00.000Z',
- output: false,
- },
- {
- input: '2019-09-09T',
- output: false,
- },
- {
- input: '2019-09-09',
- output: true,
- },
- {
- input: '2019-9-9',
- output: true,
- },
- {
- input: '2019-9-',
- output: true,
- },
- {
- input: '2019--',
- output: false,
- },
- {
- input: '2019',
- output: true,
- },
- {
- input: '',
- output: false,
- },
- {
- input: null,
- output: false,
- },
- ].forEach(({ input, output }) => {
- it(`isValidDate return ${output} for ${input}`, () => {
- expect(isValidDate(input)).toBe(output);
- });
- });
-});
-
-describe('isDateTimePickerInputValid', () => {
- [
- {
- input: null,
- output: false,
- },
- {
- input: '',
- output: false,
- },
- {
- input: 'xxxx-xx-xx',
- output: false,
- },
- {
- input: '9999-99-19',
- output: false,
- },
- {
- input: '2019-19-23',
- output: false,
- },
- {
- input: '2019-09-23',
- output: true,
- },
- {
- input: '2019-09-23 x',
- output: false,
- },
- {
- input: '2019-09-29 0:0:0',
- output: false,
- },
- {
- input: '2019-09-29 00:00:00',
- output: true,
- },
- {
- input: '2019-09-29 24:24:24',
- output: false,
- },
- {
- input: '2019-09-29 23:24:24',
- output: true,
- },
- {
- input: '2019-09-29 23:24:24 ',
- output: false,
- },
- ].forEach(({ input, output }) => {
- it(`returns ${output} for ${input}`, () => {
- expect(isDateTimePickerInputValid(input)).toBe(output);
- });
- });
-});
-
-describe('graphDataValidatorForAnomalyValues', () => {
- let oneQuery;
- let threeQueries;
- let fourQueries;
- beforeEach(() => {
- oneQuery = graphDataPrometheusQuery;
- threeQueries = anomalyMockGraphData;
-
- const queries = [...threeQueries.queries];
- queries.push(threeQueries.queries[0]);
- fourQueries = {
- ...anomalyMockGraphData,
- queries,
- };
- });
- /*
- * Anomaly charts can accept results for exactly 3 queries,
- */
- it('validates passes with the right query format', () => {
- expect(graphDataValidatorForAnomalyValues(threeQueries)).toBe(true);
- });
-
- it('validation fails for wrong format, 1 metric', () => {
- expect(graphDataValidatorForAnomalyValues(oneQuery)).toBe(false);
- });
-
- it('validation fails for wrong format, more than 3 metrics', () => {
- expect(graphDataValidatorForAnomalyValues(fourQueries)).toBe(false);
- });
-});
diff --git a/spec/javascripts/notebook/cells/markdown_spec.js b/spec/javascripts/notebook/cells/markdown_spec.js
index 540fc8a21f1..07b18d97cd9 100644
--- a/spec/javascripts/notebook/cells/markdown_spec.js
+++ b/spec/javascripts/notebook/cells/markdown_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import MarkdownComponent from '~/notebook/cells/markdown.vue';
import katex from 'katex';
+import MarkdownComponent from '~/notebook/cells/markdown.vue';
const Component = Vue.extend(MarkdownComponent);
@@ -49,7 +49,7 @@ describe('Markdown component', () => {
});
Vue.nextTick(() => {
- expect(vm.$el.querySelector('a')).toBeNull();
+ expect(vm.$el.querySelector('a').getAttribute('href')).toBeNull();
done();
});
diff --git a/spec/javascripts/notes/components/diff_with_note_spec.js b/spec/javascripts/notes/components/diff_with_note_spec.js
index f849fe9d8bb..573aac2c3e0 100644
--- a/spec/javascripts/notes/components/diff_with_note_spec.js
+++ b/spec/javascripts/notes/components/diff_with_note_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
+import { mountComponentWithStore } from 'spec/helpers';
import DiffWithNote from '~/notes/components/diff_with_note.vue';
import { createStore } from '~/mr_notes/stores';
-import { mountComponentWithStore } from 'spec/helpers';
const discussionFixture = 'merge_requests/diff_discussion.json';
const imageDiscussionFixture = 'merge_requests/image_diff_discussion.json';
diff --git a/spec/javascripts/notes/components/discussion_counter_spec.js b/spec/javascripts/notes/components/discussion_counter_spec.js
index fecc0d604b1..de1fd87517a 100644
--- a/spec/javascripts/notes/components/discussion_counter_spec.js
+++ b/spec/javascripts/notes/components/discussion_counter_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
+import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import createStore from '~/notes/stores';
import DiscussionCounter from '~/notes/components/discussion_counter.vue';
-import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { noteableDataMock, discussionMock, notesDataMock } from '../mock_data';
describe('DiscussionCounter component', () => {
@@ -27,6 +27,8 @@ describe('DiscussionCounter component', () => {
describe('methods', () => {
describe('jumpToFirstUnresolvedDiscussion', () => {
it('expands unresolved discussion', () => {
+ window.mrTabs.currentAction = 'show';
+
spyOn(vm, 'expandDiscussion').and.stub();
const discussions = [
{
@@ -47,14 +49,39 @@ describe('DiscussionCounter component', () => {
...store.state,
discussions,
});
- setFixtures(`
- <div class="discussion" data-discussion-id="${firstDiscussionId}"></div>
- `);
-
vm.jumpToFirstUnresolvedDiscussion();
expect(vm.expandDiscussion).toHaveBeenCalledWith({ discussionId: firstDiscussionId });
});
+
+ it('jumps to first unresolved discussion from diff tab if all diff discussions are resolved', () => {
+ window.mrTabs.currentAction = 'diff';
+ spyOn(vm, 'switchToDiscussionsTabAndJumpTo').and.stub();
+
+ const unresolvedId = discussionMock.id + 1;
+ const discussions = [
+ {
+ ...discussionMock,
+ id: discussionMock.id,
+ diff_discussion: true,
+ notes: [{ ...discussionMock.notes[0], resolvable: true, resolved: true }],
+ resolved: true,
+ },
+ {
+ ...discussionMock,
+ id: unresolvedId,
+ notes: [{ ...discussionMock.notes[0], resolvable: true, resolved: false }],
+ resolved: false,
+ },
+ ];
+ store.replaceState({
+ ...store.state,
+ discussions,
+ });
+ vm.jumpToFirstUnresolvedDiscussion();
+
+ expect(vm.switchToDiscussionsTabAndJumpTo).toHaveBeenCalledWith(unresolvedId);
+ });
});
});
});
diff --git a/spec/javascripts/notes/components/discussion_resolve_with_issue_button_spec.js b/spec/javascripts/notes/components/discussion_resolve_with_issue_button_spec.js
index b2a91c9919a..3be1f0be0d0 100644
--- a/spec/javascripts/notes/components/discussion_resolve_with_issue_button_spec.js
+++ b/spec/javascripts/notes/components/discussion_resolve_with_issue_button_spec.js
@@ -1,7 +1,7 @@
import { GlButton } from '@gitlab/ui';
-import ResolveWithIssueButton from '~/notes/components/discussion_resolve_with_issue_button.vue';
import { shallowMount, createLocalVue } from '@vue/test-utils';
import { TEST_HOST } from 'spec/test_constants';
+import ResolveWithIssueButton from '~/notes/components/discussion_resolve_with_issue_button.vue';
const localVue = createLocalVue();
diff --git a/spec/javascripts/notes/components/note_actions/reply_button_spec.js b/spec/javascripts/notes/components/note_actions/reply_button_spec.js
index 003773d07ea..aa39ab15833 100644
--- a/spec/javascripts/notes/components/note_actions/reply_button_spec.js
+++ b/spec/javascripts/notes/components/note_actions/reply_button_spec.js
@@ -2,15 +2,14 @@ import Vuex from 'vuex';
import { createLocalVue, mount } from '@vue/test-utils';
import ReplyButton from '~/notes/components/note_actions/reply_button.vue';
+const localVue = createLocalVue();
+localVue.use(Vuex);
+
describe('ReplyButton', () => {
let wrapper;
beforeEach(() => {
- const localVue = createLocalVue();
-
- localVue.use(Vuex);
-
- wrapper = mount(ReplyButton, {
+ wrapper = mount(localVue.extend(ReplyButton), {
sync: false,
localVue,
});
diff --git a/spec/javascripts/notes/components/note_actions_spec.js b/spec/javascripts/notes/components/note_actions_spec.js
index 1f2c07385a7..2e0694869ba 100644
--- a/spec/javascripts/notes/components/note_actions_spec.js
+++ b/spec/javascripts/notes/components/note_actions_spec.js
@@ -1,8 +1,8 @@
import Vue from 'vue';
import { shallowMount, createLocalVue, createWrapper } from '@vue/test-utils';
+import { TEST_HOST } from 'spec/test_constants';
import createStore from '~/notes/stores';
import noteActions from '~/notes/components/note_actions.vue';
-import { TEST_HOST } from 'spec/test_constants';
import { userDataMock } from '../mock_data';
describe('noteActions', () => {
@@ -12,7 +12,7 @@ describe('noteActions', () => {
const shallowMountNoteActions = propsData => {
const localVue = createLocalVue();
- return shallowMount(noteActions, {
+ return shallowMount(localVue.extend(noteActions), {
store,
propsData,
localVue,
diff --git a/spec/javascripts/notes/components/note_awards_list_spec.js b/spec/javascripts/notes/components/note_awards_list_spec.js
index ede541a5247..90aa1684272 100644
--- a/spec/javascripts/notes/components/note_awards_list_spec.js
+++ b/spec/javascripts/notes/components/note_awards_list_spec.js
@@ -61,6 +61,66 @@ describe('note_awards_list component', () => {
expect(vm.$el.querySelector('.js-add-award')).toBeDefined();
});
+ describe('when the user name contains special HTML characters', () => {
+ const createAwardEmoji = (_, index) => ({
+ name: 'art',
+ user: { id: index, name: `&<>"\`'-${index}`, username: `user-${index}` },
+ });
+
+ const mountComponent = () => {
+ const Component = Vue.extend(awardsNote);
+ vm = new Component({
+ store,
+ propsData: {
+ awards: awardsMock,
+ noteAuthorId: 0,
+ noteId: '545',
+ canAwardEmoji: true,
+ toggleAwardPath: '/gitlab-org/gitlab-foss/notes/545/toggle_award_emoji',
+ },
+ }).$mount();
+ };
+
+ const findTooltip = () =>
+ vm.$el.querySelector('[data-original-title]').getAttribute('data-original-title');
+
+ it('should only escape & and " characters', () => {
+ awardsMock = [...new Array(1)].map(createAwardEmoji);
+ mountComponent();
+ const escapedName = awardsMock[0].user.name.replace(/&/g, '&amp;').replace(/"/g, '&quot;');
+
+ expect(vm.$el.querySelector('[data-original-title]').outerHTML).toContain(escapedName);
+ });
+
+ it('should not escape special HTML characters twice when only 1 person awarded', () => {
+ awardsMock = [...new Array(1)].map(createAwardEmoji);
+ mountComponent();
+
+ awardsMock.forEach(award => {
+ expect(findTooltip()).toContain(award.user.name);
+ });
+ });
+
+ it('should not escape special HTML characters twice when 2 people awarded', () => {
+ awardsMock = [...new Array(2)].map(createAwardEmoji);
+ mountComponent();
+
+ awardsMock.forEach(award => {
+ expect(findTooltip()).toContain(award.user.name);
+ });
+ });
+
+ it('should not escape special HTML characters twice when more than 10 people awarded', () => {
+ awardsMock = [...new Array(11)].map(createAwardEmoji);
+ mountComponent();
+
+ // Testing only the first 10 awards since 11 onward will not be displayed.
+ awardsMock.slice(0, 10).forEach(award => {
+ expect(findTooltip()).toContain(award.user.name);
+ });
+ });
+ });
+
describe('when the user cannot award emoji', () => {
beforeEach(() => {
const Component = Vue.extend(awardsNote);
diff --git a/spec/javascripts/notes/components/note_form_spec.js b/spec/javascripts/notes/components/note_form_spec.js
index 96aa7824cec..35283e14dc5 100644
--- a/spec/javascripts/notes/components/note_form_spec.js
+++ b/spec/javascripts/notes/components/note_form_spec.js
@@ -14,7 +14,7 @@ describe('issue_note_form component', () => {
const createComponentWrapper = () => {
const localVue = createLocalVue();
- return shallowMount(NoteForm, {
+ return shallowMount(localVue.extend(NoteForm), {
store,
propsData: props,
// see https://gitlab.com/gitlab-org/gitlab-foss/issues/56317 for the following
diff --git a/spec/javascripts/notes/components/noteable_discussion_spec.js b/spec/javascripts/notes/components/noteable_discussion_spec.js
index ea1ed3da112..5e359759afc 100644
--- a/spec/javascripts/notes/components/noteable_discussion_spec.js
+++ b/spec/javascripts/notes/components/noteable_discussion_spec.js
@@ -10,6 +10,8 @@ import mockDiffFile from '../../diffs/mock_data/diff_file';
const discussionWithTwoUnresolvedNotes = 'merge_requests/resolved_diff_discussion.json';
+const localVue = createLocalVue();
+
describe('noteable_discussion component', () => {
let store;
let wrapper;
@@ -22,8 +24,7 @@ describe('noteable_discussion component', () => {
store.dispatch('setNoteableData', noteableDataMock);
store.dispatch('setNotesData', notesDataMock);
- const localVue = createLocalVue();
- wrapper = mount(noteableDiscussion, {
+ wrapper = mount(localVue.extend(noteableDiscussion), {
store,
propsData: { discussion: discussionMock },
localVue,
diff --git a/spec/javascripts/notes/components/noteable_note_spec.js b/spec/javascripts/notes/components/noteable_note_spec.js
index 9420713ceca..72a13afe498 100644
--- a/spec/javascripts/notes/components/noteable_note_spec.js
+++ b/spec/javascripts/notes/components/noteable_note_spec.js
@@ -18,7 +18,7 @@ describe('issue_note', () => {
store.dispatch('setNotesData', notesDataMock);
const localVue = createLocalVue();
- wrapper = shallowMount(issueNote, {
+ wrapper = shallowMount(localVue.extend(issueNote), {
store,
propsData: {
note,
diff --git a/spec/javascripts/notes/components/toggle_replies_widget_spec.js b/spec/javascripts/notes/components/toggle_replies_widget_spec.js
index 2ead8cc6e6a..8485ec0262f 100644
--- a/spec/javascripts/notes/components/toggle_replies_widget_spec.js
+++ b/spec/javascripts/notes/components/toggle_replies_widget_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import toggleRepliesWidget from '~/notes/components/toggle_replies_widget.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import toggleRepliesWidget from '~/notes/components/toggle_replies_widget.vue';
import { note } from '../mock_data';
const deepCloneObject = obj => JSON.parse(JSON.stringify(obj));
diff --git a/spec/javascripts/notes/stores/actions_spec.js b/spec/javascripts/notes/stores/actions_spec.js
index e3cc025cf49..ec1f1392845 100644
--- a/spec/javascripts/notes/stores/actions_spec.js
+++ b/spec/javascripts/notes/stores/actions_spec.js
@@ -1,6 +1,7 @@
import $ from 'jquery';
-import Api from '~/api';
import { TEST_HOST } from 'spec/test_constants';
+import AxiosMockAdapter from 'axios-mock-adapter';
+import Api from '~/api';
import actionsModule, * as actions from '~/notes/stores/actions';
import * as mutationTypes from '~/notes/stores/mutation_types';
import * as notesConstants from '~/notes/constants';
@@ -15,7 +16,6 @@ import {
noteableDataMock,
individualNote,
} from '../mock_data';
-import AxiosMockAdapter from 'axios-mock-adapter';
import axios from '~/lib/utils/axios_utils';
const TEST_ERROR_MESSAGE = 'Test error message';
@@ -751,24 +751,54 @@ describe('Actions Notes Store', () => {
});
describe('saveNote', () => {
- const payload = { endpoint: TEST_HOST, data: { 'note[note]': 'some text' } };
+ const flashContainer = {};
+ const payload = { endpoint: TEST_HOST, data: { 'note[note]': 'some text' }, flashContainer };
describe('if response contains errors', () => {
const res = { errors: { something: ['went wrong'] } };
+ const error = { message: 'Unprocessable entity', response: { data: res } };
it('throws an error', done => {
actions
.saveNote(
{
commit() {},
- dispatch: () => Promise.resolve(res),
+ dispatch: () => Promise.reject(error),
},
payload,
)
.then(() => done.fail('Expected error to be thrown!'))
- .catch(error => {
- expect(error.message).toBe('Failed to save comment!');
+ .catch(err => {
+ expect(err).toBe(error);
+ expect(flashSpy).not.toHaveBeenCalled();
+ })
+ .then(done)
+ .catch(done.fail);
+ });
+ });
+
+ describe('if response contains errors.base', () => {
+ const res = { errors: { base: ['something went wrong'] } };
+ const error = { message: 'Unprocessable entity', response: { data: res } };
+
+ it('sets flash alert using errors.base message', done => {
+ actions
+ .saveNote(
+ {
+ commit() {},
+ dispatch: () => Promise.reject(error),
+ },
+ { ...payload, flashContainer },
+ )
+ .then(resp => {
+ expect(resp.hasFlash).toBe(true);
+ expect(flashSpy).toHaveBeenCalledWith(
+ 'Your comment could not be submitted because something went wrong',
+ 'alert',
+ flashContainer,
+ );
})
+ .catch(() => done.fail('Expected success response!'))
.then(done)
.catch(done.fail);
});
@@ -788,6 +818,7 @@ describe('Actions Notes Store', () => {
)
.then(data => {
expect(data).toBe(res);
+ expect(flashSpy).not.toHaveBeenCalled();
})
.then(done)
.catch(done.fail);
diff --git a/spec/javascripts/pages/admin/jobs/index/components/stop_jobs_modal_spec.js b/spec/javascripts/pages/admin/jobs/index/components/stop_jobs_modal_spec.js
index 6bfb3f5ca21..9ad72e0b043 100644
--- a/spec/javascripts/pages/admin/jobs/index/components/stop_jobs_modal_spec.js
+++ b/spec/javascripts/pages/admin/jobs/index/components/stop_jobs_modal_spec.js
@@ -1,10 +1,9 @@
import Vue from 'vue';
+import mountComponent from 'spec/helpers/vue_mount_component_helper';
import axios from '~/lib/utils/axios_utils';
import stopJobsModal from '~/pages/admin/jobs/index/components/stop_jobs_modal.vue';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
-
describe('stop_jobs_modal.vue', () => {
const props = {
url: `${gl.TEST_HOST}/stop_jobs_modal.vue/stopAll`,
diff --git a/spec/javascripts/pages/labels/components/promote_label_modal_spec.js b/spec/javascripts/pages/labels/components/promote_label_modal_spec.js
index 75912612255..5bad13c1ef2 100644
--- a/spec/javascripts/pages/labels/components/promote_label_modal_spec.js
+++ b/spec/javascripts/pages/labels/components/promote_label_modal_spec.js
@@ -1,8 +1,8 @@
import Vue from 'vue';
+import mountComponent from 'spec/helpers/vue_mount_component_helper';
import promoteLabelModal from '~/pages/projects/labels/components/promote_label_modal.vue';
import eventHub from '~/pages/projects/labels/event_hub';
import axios from '~/lib/utils/axios_utils';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
describe('Promote label modal', () => {
let vm;
diff --git a/spec/javascripts/pages/milestones/shared/components/delete_milestone_modal_spec.js b/spec/javascripts/pages/milestones/shared/components/delete_milestone_modal_spec.js
index fe293083e4c..9075c8aa97a 100644
--- a/spec/javascripts/pages/milestones/shared/components/delete_milestone_modal_spec.js
+++ b/spec/javascripts/pages/milestones/shared/components/delete_milestone_modal_spec.js
@@ -1,11 +1,10 @@
import Vue from 'vue';
+import mountComponent from 'spec/helpers/vue_mount_component_helper';
import axios from '~/lib/utils/axios_utils';
import deleteMilestoneModal from '~/pages/milestones/shared/components/delete_milestone_modal.vue';
import eventHub from '~/pages/milestones/shared/event_hub';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
-
describe('delete_milestone_modal.vue', () => {
const Component = Vue.extend(deleteMilestoneModal);
const props = {
diff --git a/spec/javascripts/pages/milestones/shared/components/promote_milestone_modal_spec.js b/spec/javascripts/pages/milestones/shared/components/promote_milestone_modal_spec.js
index 3d25a278cef..78c0070187c 100644
--- a/spec/javascripts/pages/milestones/shared/components/promote_milestone_modal_spec.js
+++ b/spec/javascripts/pages/milestones/shared/components/promote_milestone_modal_spec.js
@@ -1,8 +1,8 @@
import Vue from 'vue';
+import mountComponent from 'spec/helpers/vue_mount_component_helper';
import promoteMilestoneModal from '~/pages/milestones/shared/components/promote_milestone_modal.vue';
import eventHub from '~/pages/milestones/shared/event_hub';
import axios from '~/lib/utils/axios_utils';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
describe('Promote milestone modal', () => {
let vm;
diff --git a/spec/javascripts/pdf/index_spec.js b/spec/javascripts/pdf/index_spec.js
index c746d5644e8..e14f1b27f6c 100644
--- a/spec/javascripts/pdf/index_spec.js
+++ b/spec/javascripts/pdf/index_spec.js
@@ -2,8 +2,8 @@ import Vue from 'vue';
import { GlobalWorkerOptions } from 'pdfjs-dist/build/pdf';
import workerSrc from 'pdfjs-dist/build/pdf.worker.min';
-import PDFLab from '~/pdf/index.vue';
import { FIXTURES_PATH } from 'spec/test_constants';
+import PDFLab from '~/pdf/index.vue';
const pdf = `${FIXTURES_PATH}/blob/pdf/test.pdf`;
diff --git a/spec/javascripts/pdf/page_spec.js b/spec/javascripts/pdf/page_spec.js
index efeb65acf87..bb2294e8d18 100644
--- a/spec/javascripts/pdf/page_spec.js
+++ b/spec/javascripts/pdf/page_spec.js
@@ -2,9 +2,9 @@ import Vue from 'vue';
import pdfjsLib from 'pdfjs-dist/build/pdf';
import workerSrc from 'pdfjs-dist/build/pdf.worker.min';
-import PageComponent from '~/pdf/page/index.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
import { FIXTURES_PATH } from 'spec/test_constants';
+import PageComponent from '~/pdf/page/index.vue';
const testPDF = `${FIXTURES_PATH}/blob/pdf/test.pdf`;
diff --git a/spec/javascripts/performance_bar/index_spec.js b/spec/javascripts/performance_bar/index_spec.js
index 1444d1bb3cb..3957edce9e0 100644
--- a/spec/javascripts/performance_bar/index_spec.js
+++ b/spec/javascripts/performance_bar/index_spec.js
@@ -1,9 +1,9 @@
+import MockAdapter from 'axios-mock-adapter';
import axios from '~/lib/utils/axios_utils';
+import '~/performance_bar/components/performance_bar_app.vue';
import performanceBar from '~/performance_bar';
import PerformanceBarService from '~/performance_bar/services/performance_bar_service';
-import MockAdapter from 'axios-mock-adapter';
-
describe('performance bar wrapper', () => {
let mock;
let vm;
diff --git a/spec/javascripts/persistent_user_callout_spec.js b/spec/javascripts/persistent_user_callout_spec.js
index d15758be5d2..d4cb92cacfd 100644
--- a/spec/javascripts/persistent_user_callout_spec.js
+++ b/spec/javascripts/persistent_user_callout_spec.js
@@ -1,7 +1,7 @@
import MockAdapter from 'axios-mock-adapter';
+import setTimeoutPromise from 'spec/helpers/set_timeout_promise_helper';
import axios from '~/lib/utils/axios_utils';
import PersistentUserCallout from '~/persistent_user_callout';
-import setTimeoutPromise from 'spec/helpers/set_timeout_promise_helper';
describe('PersistentUserCallout', () => {
const dismissEndpoint = '/dismiss';
diff --git a/spec/javascripts/pipelines/graph/job_group_dropdown_spec.js b/spec/javascripts/pipelines/graph/job_group_dropdown_spec.js
index 24631cc1c89..a3957f94caa 100644
--- a/spec/javascripts/pipelines/graph/job_group_dropdown_spec.js
+++ b/spec/javascripts/pipelines/graph/job_group_dropdown_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import JobGroupDropdown from '~/pipelines/components/graph/job_group_dropdown.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import JobGroupDropdown from '~/pipelines/components/graph/job_group_dropdown.vue';
describe('job group dropdown component', () => {
const Component = Vue.extend(JobGroupDropdown);
diff --git a/spec/javascripts/pipelines/graph/linked_pipeline_spec.js b/spec/javascripts/pipelines/graph/linked_pipeline_spec.js
deleted file mode 100644
index 8d3abf094b6..00000000000
--- a/spec/javascripts/pipelines/graph/linked_pipeline_spec.js
+++ /dev/null
@@ -1,116 +0,0 @@
-import Vue from 'vue';
-import LinkedPipelineComponent from '~/pipelines/components/graph/linked_pipeline.vue';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
-import mockData from './linked_pipelines_mock_data';
-
-const mockPipeline = mockData.triggered[0];
-
-describe('Linked pipeline', () => {
- const Component = Vue.extend(LinkedPipelineComponent);
- let vm;
-
- afterEach(() => {
- vm.$destroy();
- });
-
- describe('rendered output', () => {
- const props = {
- pipeline: mockPipeline,
- };
-
- beforeEach(() => {
- vm = mountComponent(Component, props);
- });
-
- it('should render a list item as the containing element', () => {
- expect(vm.$el.tagName).toBe('LI');
- });
-
- it('should render a button', () => {
- const linkElement = vm.$el.querySelector('.js-linked-pipeline-content');
-
- expect(linkElement).not.toBeNull();
- });
-
- it('should render the project name', () => {
- expect(vm.$el.innerText).toContain(props.pipeline.project.name);
- });
-
- it('should render an svg within the status container', () => {
- const pipelineStatusElement = vm.$el.querySelector('.js-linked-pipeline-status');
-
- expect(pipelineStatusElement.querySelector('svg')).not.toBeNull();
- });
-
- it('should render the pipeline status icon svg', () => {
- expect(vm.$el.querySelector('.js-ci-status-icon-running')).not.toBeNull();
- expect(vm.$el.querySelector('.js-ci-status-icon-running').innerHTML).toContain('<svg');
- });
-
- it('should have a ci-status child component', () => {
- expect(vm.$el.querySelector('.js-linked-pipeline-status')).not.toBeNull();
- });
-
- it('should render the pipeline id', () => {
- expect(vm.$el.innerText).toContain(`#${props.pipeline.id}`);
- });
-
- it('should correctly compute the tooltip text', () => {
- expect(vm.tooltipText).toContain(mockPipeline.project.name);
- expect(vm.tooltipText).toContain(mockPipeline.details.status.label);
- });
-
- it('should render the tooltip text as the title attribute', () => {
- const tooltipRef = vm.$el.querySelector('.js-linked-pipeline-content');
- const titleAttr = tooltipRef.getAttribute('data-original-title');
-
- expect(titleAttr).toContain(mockPipeline.project.name);
- expect(titleAttr).toContain(mockPipeline.details.status.label);
- });
-
- it('does not render the loading icon when isLoading is false', () => {
- expect(vm.$el.querySelector('.js-linked-pipeline-loading')).toBeNull();
- });
- });
-
- describe('when isLoading is true', () => {
- const props = {
- pipeline: { ...mockPipeline, isLoading: true },
- };
-
- beforeEach(() => {
- vm = mountComponent(Component, props);
- });
-
- it('renders a loading icon', () => {
- expect(vm.$el.querySelector('.js-linked-pipeline-loading')).not.toBeNull();
- });
- });
-
- describe('on click', () => {
- const props = {
- pipeline: mockPipeline,
- };
-
- beforeEach(() => {
- vm = mountComponent(Component, props);
- });
-
- it('emits `pipelineClicked` event', () => {
- spyOn(vm, '$emit');
- vm.$el.querySelector('button').click();
-
- expect(vm.$emit).toHaveBeenCalledWith('pipelineClicked');
- });
-
- it('should emit `bv::hide::tooltip` to close the tooltip', () => {
- spyOn(vm.$root, '$emit');
- vm.$el.querySelector('button').click();
-
- expect(vm.$root.$emit.calls.argsFor(0)).toEqual([
- 'bv::hide::tooltip',
- 'js-linked-pipeline-132',
- ]);
- });
- });
-});
diff --git a/spec/javascripts/pipelines/graph/linked_pipelines_column_spec.js b/spec/javascripts/pipelines/graph/linked_pipelines_column_spec.js
index 1f835dc4dee..fe7039da9e4 100644
--- a/spec/javascripts/pipelines/graph/linked_pipelines_column_spec.js
+++ b/spec/javascripts/pipelines/graph/linked_pipelines_column_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import LinkedPipelinesColumn from '~/pipelines/components/graph/linked_pipelines_column.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import LinkedPipelinesColumn from '~/pipelines/components/graph/linked_pipelines_column.vue';
import mockData from './linked_pipelines_mock_data';
describe('Linked Pipelines Column', () => {
@@ -35,4 +35,8 @@ describe('Linked Pipelines Column', () => {
expect(linkedPipelineElements.length).toBe(props.linkedPipelines.length);
});
+
+ it('renders cross project triangle when column is upstream', () => {
+ expect(vm.$el.querySelector('.cross-project-triangle')).toBeDefined();
+ });
});
diff --git a/spec/javascripts/pipelines/graph/linked_pipelines_mock_data.js b/spec/javascripts/pipelines/graph/linked_pipelines_mock_data.js
index f794b8484a7..3079d5e4e68 100644
--- a/spec/javascripts/pipelines/graph/linked_pipelines_mock_data.js
+++ b/spec/javascripts/pipelines/graph/linked_pipelines_mock_data.js
@@ -1,407 +1,3 @@
-export default {
- triggered_by: {
- id: 129,
- active: true,
- path: '/gitlab-org/gitlab-foss/pipelines/129',
- project: {
- name: 'GitLabCE',
- },
- details: {
- status: {
- icon: 'status_running',
- text: 'running',
- label: 'running',
- group: 'running',
- has_details: true,
- details_path: '/gitlab-org/gitlab-foss/pipelines/129',
- favicon:
- '/assets/ci_favicons/dev/favicon_status_running-c3ad2fc53ea6079c174e5b6c1351ff349e99ec3af5a5622fb77b0fe53ea279c1.ico',
- },
- },
- flags: {
- latest: false,
- triggered: false,
- stuck: false,
- yaml_errors: false,
- retryable: true,
- cancelable: true,
- },
- ref: {
- name: '7-5-stable',
- path: '/gitlab-org/gitlab-foss/commits/7-5-stable',
- tag: false,
- branch: true,
- },
- commit: {
- id: '23433d4d8b20d7e45c103d0b6048faad38a130ab',
- short_id: '23433d4d',
- title: 'Version 7.5.0.rc1',
- created_at: '2014-11-17T15:44:14.000+01:00',
- parent_ids: ['30ac909f30f58d319b42ed1537664483894b18cd'],
- message: 'Version 7.5.0.rc1\n',
- author_name: 'Jacob Vosmaer',
- author_email: 'contact@jacobvosmaer.nl',
- authored_date: '2014-11-17T15:44:14.000+01:00',
- committer_name: 'Jacob Vosmaer',
- committer_email: 'contact@jacobvosmaer.nl',
- committed_date: '2014-11-17T15:44:14.000+01:00',
- author_gravatar_url:
- 'http://www.gravatar.com/avatar/e66d11c0eedf8c07b3b18fca46599807?s=80&d=identicon',
- commit_url:
- 'http://localhost:3000/gitlab-org/gitlab-foss/commit/23433d4d8b20d7e45c103d0b6048faad38a130ab',
- commit_path: '/gitlab-org/gitlab-foss/commit/23433d4d8b20d7e45c103d0b6048faad38a130ab',
- },
- retry_path: '/gitlab-org/gitlab-foss/pipelines/129/retry',
- cancel_path: '/gitlab-org/gitlab-foss/pipelines/129/cancel',
- created_at: '2017-05-24T14:46:20.090Z',
- updated_at: '2017-05-24T14:46:29.906Z',
- },
- triggered: [
- {
- id: 132,
- active: true,
- path: '/gitlab-org/gitlab-foss/pipelines/132',
- project: {
- name: 'GitLabCE',
- },
- details: {
- status: {
- icon: 'status_running',
- text: 'running',
- label: 'running',
- group: 'running',
- has_details: true,
- details_path: '/gitlab-org/gitlab-foss/pipelines/132',
- favicon:
- '/assets/ci_favicons/dev/favicon_status_running-c3ad2fc53ea6079c174e5b6c1351ff349e99ec3af5a5622fb77b0fe53ea279c1.ico',
- },
- },
- flags: {
- latest: false,
- triggered: false,
- stuck: false,
- yaml_errors: false,
- retryable: true,
- cancelable: true,
- },
- ref: {
- name: 'crowd',
- path: '/gitlab-org/gitlab-foss/commits/crowd',
- tag: false,
- branch: true,
- },
- commit: {
- id: 'b9d58c4cecd06be74c3cc32ccfb522b31544ab2e',
- short_id: 'b9d58c4c',
- title: 'getting user keys publically through http without any authentication, the github…',
- created_at: '2013-10-03T12:50:33.000+05:30',
- parent_ids: ['e219cf7246c6a0495e4507deaffeba11e79f13b8'],
- message:
- 'getting user keys publically through http without any authentication, the github way. E.g: http://github.com/devaroop.keys\n\nchangelog updated to include ssh key retrieval feature update\n',
- author_name: 'devaroop',
- author_email: 'devaroop123@yahoo.co.in',
- authored_date: '2013-10-02T20:39:29.000+05:30',
- committer_name: 'devaroop',
- committer_email: 'devaroop123@yahoo.co.in',
- committed_date: '2013-10-03T12:50:33.000+05:30',
- author_gravatar_url:
- 'http://www.gravatar.com/avatar/35df4b155ec66a3127d53459941cf8a2?s=80&d=identicon',
- commit_url:
- 'http://localhost:3000/gitlab-org/gitlab-foss/commit/b9d58c4cecd06be74c3cc32ccfb522b31544ab2e',
- commit_path: '/gitlab-org/gitlab-foss/commit/b9d58c4cecd06be74c3cc32ccfb522b31544ab2e',
- },
- retry_path: '/gitlab-org/gitlab-foss/pipelines/132/retry',
- cancel_path: '/gitlab-org/gitlab-foss/pipelines/132/cancel',
- created_at: '2017-05-24T14:46:24.644Z',
- updated_at: '2017-05-24T14:48:55.226Z',
- },
- {
- id: 133,
- active: true,
- path: '/gitlab-org/gitlab-foss/pipelines/133',
- project: {
- name: 'GitLabCE',
- },
- details: {
- status: {
- icon: 'status_running',
- text: 'running',
- label: 'running',
- group: 'running',
- has_details: true,
- details_path: '/gitlab-org/gitlab-foss/pipelines/133',
- favicon:
- '/assets/ci_favicons/dev/favicon_status_running-c3ad2fc53ea6079c174e5b6c1351ff349e99ec3af5a5622fb77b0fe53ea279c1.ico',
- },
- },
- flags: {
- latest: false,
- triggered: false,
- stuck: false,
- yaml_errors: false,
- retryable: true,
- cancelable: true,
- },
- ref: {
- name: 'crowd',
- path: '/gitlab-org/gitlab-foss/commits/crowd',
- tag: false,
- branch: true,
- },
- commit: {
- id: 'b6bd4856a33df3d144be66c4ed1f1396009bb08b',
- short_id: 'b6bd4856',
- title: 'getting user keys publically through http without any authentication, the github…',
- created_at: '2013-10-02T20:39:29.000+05:30',
- parent_ids: ['e219cf7246c6a0495e4507deaffeba11e79f13b8'],
- message:
- 'getting user keys publically through http without any authentication, the github way. E.g: http://github.com/devaroop.keys\n',
- author_name: 'devaroop',
- author_email: 'devaroop123@yahoo.co.in',
- authored_date: '2013-10-02T20:39:29.000+05:30',
- committer_name: 'devaroop',
- committer_email: 'devaroop123@yahoo.co.in',
- committed_date: '2013-10-02T20:39:29.000+05:30',
- author_gravatar_url:
- 'http://www.gravatar.com/avatar/35df4b155ec66a3127d53459941cf8a2?s=80&d=identicon',
- commit_url:
- 'http://localhost:3000/gitlab-org/gitlab-foss/commit/b6bd4856a33df3d144be66c4ed1f1396009bb08b',
- commit_path: '/gitlab-org/gitlab-foss/commit/b6bd4856a33df3d144be66c4ed1f1396009bb08b',
- },
- retry_path: '/gitlab-org/gitlab-foss/pipelines/133/retry',
- cancel_path: '/gitlab-org/gitlab-foss/pipelines/133/cancel',
- created_at: '2017-05-24T14:46:24.648Z',
- updated_at: '2017-05-24T14:48:59.673Z',
- },
- {
- id: 130,
- active: true,
- path: '/gitlab-org/gitlab-foss/pipelines/130',
- project: {
- name: 'GitLabCE',
- },
- details: {
- status: {
- icon: 'status_running',
- text: 'running',
- label: 'running',
- group: 'running',
- has_details: true,
- details_path: '/gitlab-org/gitlab-foss/pipelines/130',
- favicon:
- '/assets/ci_favicons/dev/favicon_status_running-c3ad2fc53ea6079c174e5b6c1351ff349e99ec3af5a5622fb77b0fe53ea279c1.ico',
- },
- },
- flags: {
- latest: false,
- triggered: false,
- stuck: false,
- yaml_errors: false,
- retryable: true,
- cancelable: true,
- },
- ref: {
- name: 'crowd',
- path: '/gitlab-org/gitlab-foss/commits/crowd',
- tag: false,
- branch: true,
- },
- commit: {
- id: '6d7ced4a2311eeff037c5575cca1868a6d3f586f',
- short_id: '6d7ced4a',
- title: 'Whitespace fixes to patch',
- created_at: '2013-10-08T13:53:22.000-05:00',
- parent_ids: ['1875141a963a4238bda29011d8f7105839485253'],
- message: 'Whitespace fixes to patch\n',
- author_name: 'Dale Hamel',
- author_email: 'dale.hamel@srvthe.net',
- authored_date: '2013-10-08T13:53:22.000-05:00',
- committer_name: 'Dale Hamel',
- committer_email: 'dale.hamel@invenia.ca',
- committed_date: '2013-10-08T13:53:22.000-05:00',
- author_gravatar_url:
- 'http://www.gravatar.com/avatar/cd08930e69fa5ad1a669206e7bafe476?s=80&d=identicon',
- commit_url:
- 'http://localhost:3000/gitlab-org/gitlab-foss/commit/6d7ced4a2311eeff037c5575cca1868a6d3f586f',
- commit_path: '/gitlab-org/gitlab-foss/commit/6d7ced4a2311eeff037c5575cca1868a6d3f586f',
- },
- retry_path: '/gitlab-org/gitlab-foss/pipelines/130/retry',
- cancel_path: '/gitlab-org/gitlab-foss/pipelines/130/cancel',
- created_at: '2017-05-24T14:46:24.630Z',
- updated_at: '2017-05-24T14:49:45.091Z',
- },
- {
- id: 131,
- active: true,
- path: '/gitlab-org/gitlab-foss/pipelines/132',
- project: {
- name: 'GitLabCE',
- },
- details: {
- status: {
- icon: 'status_running',
- text: 'running',
- label: 'running',
- group: 'running',
- has_details: true,
- details_path: '/gitlab-org/gitlab-foss/pipelines/132',
- favicon:
- '/assets/ci_favicons/dev/favicon_status_running-c3ad2fc53ea6079c174e5b6c1351ff349e99ec3af5a5622fb77b0fe53ea279c1.ico',
- },
- },
- flags: {
- latest: false,
- triggered: false,
- stuck: false,
- yaml_errors: false,
- retryable: true,
- cancelable: true,
- },
- ref: {
- name: 'crowd',
- path: '/gitlab-org/gitlab-foss/commits/crowd',
- tag: false,
- branch: true,
- },
- commit: {
- id: 'b9d58c4cecd06be74c3cc32ccfb522b31544ab2e',
- short_id: 'b9d58c4c',
- title: 'getting user keys publically through http without any authentication, the github…',
- created_at: '2013-10-03T12:50:33.000+05:30',
- parent_ids: ['e219cf7246c6a0495e4507deaffeba11e79f13b8'],
- message:
- 'getting user keys publically through http without any authentication, the github way. E.g: http://github.com/devaroop.keys\n\nchangelog updated to include ssh key retrieval feature update\n',
- author_name: 'devaroop',
- author_email: 'devaroop123@yahoo.co.in',
- authored_date: '2013-10-02T20:39:29.000+05:30',
- committer_name: 'devaroop',
- committer_email: 'devaroop123@yahoo.co.in',
- committed_date: '2013-10-03T12:50:33.000+05:30',
- author_gravatar_url:
- 'http://www.gravatar.com/avatar/35df4b155ec66a3127d53459941cf8a2?s=80&d=identicon',
- commit_url:
- 'http://localhost:3000/gitlab-org/gitlab-foss/commit/b9d58c4cecd06be74c3cc32ccfb522b31544ab2e',
- commit_path: '/gitlab-org/gitlab-foss/commit/b9d58c4cecd06be74c3cc32ccfb522b31544ab2e',
- },
- retry_path: '/gitlab-org/gitlab-foss/pipelines/132/retry',
- cancel_path: '/gitlab-org/gitlab-foss/pipelines/132/cancel',
- created_at: '2017-05-24T14:46:24.644Z',
- updated_at: '2017-05-24T14:48:55.226Z',
- },
- {
- id: 134,
- active: true,
- path: '/gitlab-org/gitlab-foss/pipelines/133',
- project: {
- name: 'GitLabCE',
- },
- details: {
- status: {
- icon: 'status_running',
- text: 'running',
- label: 'running',
- group: 'running',
- has_details: true,
- details_path: '/gitlab-org/gitlab-foss/pipelines/133',
- favicon:
- '/assets/ci_favicons/dev/favicon_status_running-c3ad2fc53ea6079c174e5b6c1351ff349e99ec3af5a5622fb77b0fe53ea279c1.ico',
- },
- },
- flags: {
- latest: false,
- triggered: false,
- stuck: false,
- yaml_errors: false,
- retryable: true,
- cancelable: true,
- },
- ref: {
- name: 'crowd',
- path: '/gitlab-org/gitlab-foss/commits/crowd',
- tag: false,
- branch: true,
- },
- commit: {
- id: 'b6bd4856a33df3d144be66c4ed1f1396009bb08b',
- short_id: 'b6bd4856',
- title: 'getting user keys publically through http without any authentication, the github…',
- created_at: '2013-10-02T20:39:29.000+05:30',
- parent_ids: ['e219cf7246c6a0495e4507deaffeba11e79f13b8'],
- message:
- 'getting user keys publically through http without any authentication, the github way. E.g: http://github.com/devaroop.keys\n',
- author_name: 'devaroop',
- author_email: 'devaroop123@yahoo.co.in',
- authored_date: '2013-10-02T20:39:29.000+05:30',
- committer_name: 'devaroop',
- committer_email: 'devaroop123@yahoo.co.in',
- committed_date: '2013-10-02T20:39:29.000+05:30',
- author_gravatar_url:
- 'http://www.gravatar.com/avatar/35df4b155ec66a3127d53459941cf8a2?s=80&d=identicon',
- commit_url:
- 'http://localhost:3000/gitlab-org/gitlab-foss/commit/b6bd4856a33df3d144be66c4ed1f1396009bb08b',
- commit_path: '/gitlab-org/gitlab-foss/commit/b6bd4856a33df3d144be66c4ed1f1396009bb08b',
- },
- retry_path: '/gitlab-org/gitlab-foss/pipelines/133/retry',
- cancel_path: '/gitlab-org/gitlab-foss/pipelines/133/cancel',
- created_at: '2017-05-24T14:46:24.648Z',
- updated_at: '2017-05-24T14:48:59.673Z',
- },
- {
- id: 135,
- active: true,
- path: '/gitlab-org/gitlab-foss/pipelines/130',
- project: {
- name: 'GitLabCE',
- },
- details: {
- status: {
- icon: 'status_running',
- text: 'running',
- label: 'running',
- group: 'running',
- has_details: true,
- details_path: '/gitlab-org/gitlab-foss/pipelines/130',
- favicon:
- '/assets/ci_favicons/dev/favicon_status_running-c3ad2fc53ea6079c174e5b6c1351ff349e99ec3af5a5622fb77b0fe53ea279c1.ico',
- },
- },
- flags: {
- latest: false,
- triggered: false,
- stuck: false,
- yaml_errors: false,
- retryable: true,
- cancelable: true,
- },
- ref: {
- name: 'crowd',
- path: '/gitlab-org/gitlab-foss/commits/crowd',
- tag: false,
- branch: true,
- },
- commit: {
- id: '6d7ced4a2311eeff037c5575cca1868a6d3f586f',
- short_id: '6d7ced4a',
- title: 'Whitespace fixes to patch',
- created_at: '2013-10-08T13:53:22.000-05:00',
- parent_ids: ['1875141a963a4238bda29011d8f7105839485253'],
- message: 'Whitespace fixes to patch\n',
- author_name: 'Dale Hamel',
- author_email: 'dale.hamel@srvthe.net',
- authored_date: '2013-10-08T13:53:22.000-05:00',
- committer_name: 'Dale Hamel',
- committer_email: 'dale.hamel@invenia.ca',
- committed_date: '2013-10-08T13:53:22.000-05:00',
- author_gravatar_url:
- 'http://www.gravatar.com/avatar/cd08930e69fa5ad1a669206e7bafe476?s=80&d=identicon',
- commit_url:
- 'http://localhost:3000/gitlab-org/gitlab-foss/commit/6d7ced4a2311eeff037c5575cca1868a6d3f586f',
- commit_path: '/gitlab-org/gitlab-foss/commit/6d7ced4a2311eeff037c5575cca1868a6d3f586f',
- },
- retry_path: '/gitlab-org/gitlab-foss/pipelines/130/retry',
- cancel_path: '/gitlab-org/gitlab-foss/pipelines/130/cancel',
- created_at: '2017-05-24T14:46:24.630Z',
- updated_at: '2017-05-24T14:49:45.091Z',
- },
- ],
-};
+import mockData from '../../../frontend/pipelines/graph/linked_pipelines_mock_data';
+
+export default mockData;
diff --git a/spec/javascripts/pipelines/graph/stage_column_component_spec.js b/spec/javascripts/pipelines/graph/stage_column_component_spec.js
index 5183f8dd2d6..dbfeeae43fe 100644
--- a/spec/javascripts/pipelines/graph/stage_column_component_spec.js
+++ b/spec/javascripts/pipelines/graph/stage_column_component_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import stageColumnComponent from '~/pipelines/components/graph/stage_column_component.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import stageColumnComponent from '~/pipelines/components/graph/stage_column_component.vue';
describe('stage column component', () => {
let component;
diff --git a/spec/javascripts/pipelines/pipeline_url_spec.js b/spec/javascripts/pipelines/pipeline_url_spec.js
deleted file mode 100644
index aa196af2f33..00000000000
--- a/spec/javascripts/pipelines/pipeline_url_spec.js
+++ /dev/null
@@ -1,118 +0,0 @@
-import Vue from 'vue';
-import pipelineUrlComp from '~/pipelines/components/pipeline_url.vue';
-
-describe('Pipeline Url Component', () => {
- let PipelineUrlComponent;
-
- beforeEach(() => {
- PipelineUrlComponent = Vue.extend(pipelineUrlComp);
- });
-
- it('should render a table cell', () => {
- const component = new PipelineUrlComponent({
- propsData: {
- pipeline: {
- id: 1,
- path: 'foo',
- flags: {},
- },
- autoDevopsHelpPath: 'foo',
- },
- }).$mount();
-
- expect(component.$el.getAttribute('class')).toContain('table-section');
- });
-
- it('should render a link the provided path and id', () => {
- const component = new PipelineUrlComponent({
- propsData: {
- pipeline: {
- id: 1,
- path: 'foo',
- flags: {},
- },
- autoDevopsHelpPath: 'foo',
- },
- }).$mount();
-
- expect(component.$el.querySelector('.js-pipeline-url-link').getAttribute('href')).toEqual(
- 'foo',
- );
-
- expect(component.$el.querySelector('.js-pipeline-url-link span').textContent).toEqual('#1');
- });
-
- it('should render latest, yaml invalid, merge request, and stuck flags when provided', () => {
- const component = new PipelineUrlComponent({
- propsData: {
- pipeline: {
- id: 1,
- path: 'foo',
- flags: {
- latest: true,
- yaml_errors: true,
- stuck: true,
- merge_request_pipeline: true,
- detached_merge_request_pipeline: true,
- },
- },
- autoDevopsHelpPath: 'foo',
- },
- }).$mount();
-
- expect(component.$el.querySelector('.js-pipeline-url-latest').textContent).toContain('latest');
-
- expect(component.$el.querySelector('.js-pipeline-url-yaml').textContent).toContain(
- 'yaml invalid',
- );
-
- expect(component.$el.querySelector('.js-pipeline-url-stuck').textContent).toContain('stuck');
-
- expect(component.$el.querySelector('.js-pipeline-url-detached').textContent).toContain(
- 'detached',
- );
- });
-
- it('should render a badge for autodevops', () => {
- const component = new PipelineUrlComponent({
- propsData: {
- pipeline: {
- id: 1,
- path: 'foo',
- flags: {
- latest: true,
- yaml_errors: true,
- stuck: true,
- auto_devops: true,
- },
- },
- autoDevopsHelpPath: 'foo',
- },
- }).$mount();
-
- expect(component.$el.querySelector('.js-pipeline-url-autodevops').textContent.trim()).toEqual(
- 'Auto DevOps',
- );
- });
-
- it('should render error badge when pipeline has a failure reason set', () => {
- const component = new PipelineUrlComponent({
- propsData: {
- pipeline: {
- id: 1,
- path: 'foo',
- flags: {
- failure_reason: true,
- },
- failure_reason: 'some reason',
- },
- autoDevopsHelpPath: 'foo',
- },
- }).$mount();
-
- expect(component.$el.querySelector('.js-pipeline-url-failure').textContent).toContain('error');
- expect(
- component.$el.querySelector('.js-pipeline-url-failure').getAttribute('data-original-title'),
- ).toContain('some reason');
- });
-});
diff --git a/spec/javascripts/pipelines/pipelines_actions_spec.js b/spec/javascripts/pipelines/pipelines_actions_spec.js
index 953a42b9d15..91f7d2167cc 100644
--- a/spec/javascripts/pipelines/pipelines_actions_spec.js
+++ b/spec/javascripts/pipelines/pipelines_actions_spec.js
@@ -1,9 +1,9 @@
import Vue from 'vue';
import MockAdapter from 'axios-mock-adapter';
-import axios from '~/lib/utils/axios_utils';
-import PipelinesActions from '~/pipelines/components/pipelines_actions.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
import { TEST_HOST } from 'spec/test_constants';
+import axios from '~/lib/utils/axios_utils';
+import PipelinesActions from '~/pipelines/components/pipelines_actions.vue';
describe('Pipelines Actions dropdown', () => {
const Component = Vue.extend(PipelinesActions);
diff --git a/spec/javascripts/pipelines/pipelines_spec.js b/spec/javascripts/pipelines/pipelines_spec.js
index daa898ca687..5cd91413c5f 100644
--- a/spec/javascripts/pipelines/pipelines_spec.js
+++ b/spec/javascripts/pipelines/pipelines_spec.js
@@ -1,9 +1,9 @@
import Vue from 'vue';
import MockAdapter from 'axios-mock-adapter';
+import mountComponent from 'spec/helpers/vue_mount_component_helper';
import axios from '~/lib/utils/axios_utils';
import pipelinesComp from '~/pipelines/components/pipelines.vue';
import Store from '~/pipelines/stores/pipelines_store';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
import { pipelineWithStages, stageReply } from './mock_data';
describe('Pipelines', () => {
@@ -446,7 +446,7 @@ describe('Pipelines', () => {
};
vm.$nextTick(() => {
- vm.$el.querySelector('.js-next-button .page-link').click();
+ vm.$el.querySelector('.next-page-item').click();
expect(vm.updateContent).toHaveBeenCalledWith({ scope: 'all', page: '2' });
diff --git a/spec/javascripts/pipelines/stage_spec.js b/spec/javascripts/pipelines/stage_spec.js
index 19ae7860333..b99688ec371 100644
--- a/spec/javascripts/pipelines/stage_spec.js
+++ b/spec/javascripts/pipelines/stage_spec.js
@@ -1,9 +1,9 @@
import Vue from 'vue';
import MockAdapter from 'axios-mock-adapter';
+import mountComponent from 'spec/helpers/vue_mount_component_helper';
import axios from '~/lib/utils/axios_utils';
import stage from '~/pipelines/components/stage.vue';
import eventHub from '~/pipelines/event_hub';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
import { stageReply } from './mock_data';
describe('Pipelines stage component', () => {
diff --git a/spec/javascripts/profile/account/components/delete_account_modal_spec.js b/spec/javascripts/profile/account/components/delete_account_modal_spec.js
index d5f5cabc63e..e2c557d79a9 100644
--- a/spec/javascripts/profile/account/components/delete_account_modal_spec.js
+++ b/spec/javascripts/profile/account/components/delete_account_modal_spec.js
@@ -1,8 +1,7 @@
import Vue from 'vue';
-import deleteAccountModal from '~/profile/account/components/delete_account_modal.vue';
-
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import deleteAccountModal from '~/profile/account/components/delete_account_modal.vue';
describe('DeleteAccountModal component', () => {
const actionUrl = `${gl.TEST_HOST}/delete/user`;
diff --git a/spec/javascripts/profile/account/components/update_username_spec.js b/spec/javascripts/profile/account/components/update_username_spec.js
index cc07a5f6e43..902e00b85fd 100644
--- a/spec/javascripts/profile/account/components/update_username_spec.js
+++ b/spec/javascripts/profile/account/components/update_username_spec.js
@@ -1,9 +1,9 @@
import Vue from 'vue';
-import axios from '~/lib/utils/axios_utils';
import MockAdapter from 'axios-mock-adapter';
+import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import axios from '~/lib/utils/axios_utils';
import updateUsername from '~/profile/account/components/update_username.vue';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
describe('UpdateUsername component', () => {
const rootUrl = gl.TEST_HOST;
diff --git a/spec/javascripts/related_merge_requests/components/related_merge_requests_spec.js b/spec/javascripts/related_merge_requests/components/related_merge_requests_spec.js
index 29760f79c3c..cf3ab4d4a68 100644
--- a/spec/javascripts/related_merge_requests/components/related_merge_requests_spec.js
+++ b/spec/javascripts/related_merge_requests/components/related_merge_requests_spec.js
@@ -20,7 +20,7 @@ describe('RelatedMergeRequests', () => {
mock = new MockAdapter(axios);
mock.onGet(`${API_ENDPOINT}?per_page=100`).reply(200, mockData, { 'x-total': 2 });
- wrapper = mount(RelatedMergeRequests, {
+ wrapper = mount(localVue.extend(RelatedMergeRequests), {
localVue,
sync: false,
store: createStore(),
diff --git a/spec/javascripts/related_merge_requests/store/actions_spec.js b/spec/javascripts/related_merge_requests/store/actions_spec.js
index 65e436fbb17..c4cd9f5f803 100644
--- a/spec/javascripts/related_merge_requests/store/actions_spec.js
+++ b/spec/javascripts/related_merge_requests/store/actions_spec.js
@@ -1,8 +1,8 @@
import MockAdapter from 'axios-mock-adapter';
+import testAction from 'spec/helpers/vuex_action_helper';
import axios from '~/lib/utils/axios_utils';
import * as types from '~/related_merge_requests/store/mutation_types';
import actionsModule, * as actions from '~/related_merge_requests/store/actions';
-import testAction from 'spec/helpers/vuex_action_helper';
describe('RelatedMergeRequest store actions', () => {
let state;
diff --git a/spec/javascripts/releases/list/components/app_spec.js b/spec/javascripts/releases/list/components/app_spec.js
index 471c442e497..de6208ab1fd 100644
--- a/spec/javascripts/releases/list/components/app_spec.js
+++ b/spec/javascripts/releases/list/components/app_spec.js
@@ -1,15 +1,22 @@
+import _ from 'underscore';
import Vue from 'vue';
+import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import app from '~/releases/list/components/app.vue';
import createStore from '~/releases/list/store';
import api from '~/api';
-import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { resetStore } from '../store/helpers';
-import { releases } from '../../mock_data';
+import {
+ pageInfoHeadersWithoutPagination,
+ pageInfoHeadersWithPagination,
+ release,
+ releases,
+} from '../../mock_data';
describe('Releases App ', () => {
const Component = Vue.extend(app);
let store;
let vm;
+ let releasesPagination;
const props = {
projectId: 'gitlab-ce',
@@ -19,6 +26,7 @@ describe('Releases App ', () => {
beforeEach(() => {
store = createStore();
+ releasesPagination = _.range(21).map(index => ({ ...release, tag_name: `${index}.00` }));
});
afterEach(() => {
@@ -28,7 +36,7 @@ describe('Releases App ', () => {
describe('while loading', () => {
beforeEach(() => {
- spyOn(api, 'releases').and.returnValue(Promise.resolve({ data: [] }));
+ spyOn(api, 'releases').and.returnValue(Promise.resolve({ data: [], headers: {} }));
vm = mountComponentWithStore(Component, { props, store });
});
@@ -36,6 +44,7 @@ describe('Releases App ', () => {
expect(vm.$el.querySelector('.js-loading')).not.toBeNull();
expect(vm.$el.querySelector('.js-empty-state')).toBeNull();
expect(vm.$el.querySelector('.js-success-state')).toBeNull();
+ expect(vm.$el.querySelector('.gl-pagination')).toBeNull();
setTimeout(() => {
done();
@@ -45,7 +54,29 @@ describe('Releases App ', () => {
describe('with successful request', () => {
beforeEach(() => {
- spyOn(api, 'releases').and.returnValue(Promise.resolve({ data: releases }));
+ spyOn(api, 'releases').and.returnValue(
+ Promise.resolve({ data: releases, headers: pageInfoHeadersWithoutPagination }),
+ );
+ vm = mountComponentWithStore(Component, { props, store });
+ });
+
+ it('renders success state', done => {
+ setTimeout(() => {
+ expect(vm.$el.querySelector('.js-loading')).toBeNull();
+ expect(vm.$el.querySelector('.js-empty-state')).toBeNull();
+ expect(vm.$el.querySelector('.js-success-state')).not.toBeNull();
+ expect(vm.$el.querySelector('.gl-pagination')).toBeNull();
+
+ done();
+ }, 0);
+ });
+ });
+
+ describe('with successful request and pagination', () => {
+ beforeEach(() => {
+ spyOn(api, 'releases').and.returnValue(
+ Promise.resolve({ data: releasesPagination, headers: pageInfoHeadersWithPagination }),
+ );
vm = mountComponentWithStore(Component, { props, store });
});
@@ -54,6 +85,7 @@ describe('Releases App ', () => {
expect(vm.$el.querySelector('.js-loading')).toBeNull();
expect(vm.$el.querySelector('.js-empty-state')).toBeNull();
expect(vm.$el.querySelector('.js-success-state')).not.toBeNull();
+ expect(vm.$el.querySelector('.gl-pagination')).not.toBeNull();
done();
}, 0);
@@ -62,7 +94,7 @@ describe('Releases App ', () => {
describe('with empty request', () => {
beforeEach(() => {
- spyOn(api, 'releases').and.returnValue(Promise.resolve({ data: [] }));
+ spyOn(api, 'releases').and.returnValue(Promise.resolve({ data: [], headers: {} }));
vm = mountComponentWithStore(Component, { props, store });
});
@@ -71,6 +103,7 @@ describe('Releases App ', () => {
expect(vm.$el.querySelector('.js-loading')).toBeNull();
expect(vm.$el.querySelector('.js-empty-state')).not.toBeNull();
expect(vm.$el.querySelector('.js-success-state')).toBeNull();
+ expect(vm.$el.querySelector('.gl-pagination')).toBeNull();
done();
}, 0);
diff --git a/spec/javascripts/releases/list/store/actions_spec.js b/spec/javascripts/releases/list/store/actions_spec.js
index 8e78a631a5f..f03e019b95c 100644
--- a/spec/javascripts/releases/list/store/actions_spec.js
+++ b/spec/javascripts/releases/list/store/actions_spec.js
@@ -1,3 +1,4 @@
+import testAction from 'spec/helpers/vuex_action_helper';
import {
requestReleases,
fetchReleases,
@@ -7,14 +8,16 @@ import {
import state from '~/releases/list/store/state';
import * as types from '~/releases/list/store/mutation_types';
import api from '~/api';
-import testAction from 'spec/helpers/vuex_action_helper';
-import { releases } from '../../mock_data';
+import { parseIntPagination } from '~/lib/utils/common_utils';
+import { pageInfoHeadersWithoutPagination, releases } from '../../mock_data';
describe('Releases State actions', () => {
let mockedState;
+ let pageInfo;
beforeEach(() => {
mockedState = state();
+ pageInfo = parseIntPagination(pageInfoHeadersWithoutPagination);
});
describe('requestReleases', () => {
@@ -25,12 +28,40 @@ describe('Releases State actions', () => {
describe('fetchReleases', () => {
describe('success', () => {
- it('dispatches requestReleases and receiveReleasesSuccess ', done => {
- spyOn(api, 'releases').and.returnValue(Promise.resolve({ data: releases }));
+ it('dispatches requestReleases and receiveReleasesSuccess', done => {
+ spyOn(api, 'releases').and.callFake((id, options) => {
+ expect(id).toEqual(1);
+ expect(options.page).toEqual('1');
+ return Promise.resolve({ data: releases, headers: pageInfoHeadersWithoutPagination });
+ });
+
+ testAction(
+ fetchReleases,
+ { projectId: 1 },
+ mockedState,
+ [],
+ [
+ {
+ type: 'requestReleases',
+ },
+ {
+ payload: { data: releases, headers: pageInfoHeadersWithoutPagination },
+ type: 'receiveReleasesSuccess',
+ },
+ ],
+ done,
+ );
+ });
+
+ it('dispatches requestReleases and receiveReleasesSuccess on page two', done => {
+ spyOn(api, 'releases').and.callFake((_, options) => {
+ expect(options.page).toEqual('2');
+ return Promise.resolve({ data: releases, headers: pageInfoHeadersWithoutPagination });
+ });
testAction(
fetchReleases,
- releases,
+ { page: '2', projectId: 1 },
mockedState,
[],
[
@@ -38,7 +69,7 @@ describe('Releases State actions', () => {
type: 'requestReleases',
},
{
- payload: releases,
+ payload: { data: releases, headers: pageInfoHeadersWithoutPagination },
type: 'receiveReleasesSuccess',
},
],
@@ -48,12 +79,12 @@ describe('Releases State actions', () => {
});
describe('error', () => {
- it('dispatches requestReleases and receiveReleasesError ', done => {
+ it('dispatches requestReleases and receiveReleasesError', done => {
spyOn(api, 'releases').and.returnValue(Promise.reject());
testAction(
fetchReleases,
- null,
+ { projectId: null },
mockedState,
[],
[
@@ -74,9 +105,9 @@ describe('Releases State actions', () => {
it('should commit RECEIVE_RELEASES_SUCCESS mutation', done => {
testAction(
receiveReleasesSuccess,
- releases,
+ { data: releases, headers: pageInfoHeadersWithoutPagination },
mockedState,
- [{ type: types.RECEIVE_RELEASES_SUCCESS, payload: releases }],
+ [{ type: types.RECEIVE_RELEASES_SUCCESS, payload: { pageInfo, data: releases } }],
[],
done,
);
diff --git a/spec/javascripts/releases/list/store/mutations_spec.js b/spec/javascripts/releases/list/store/mutations_spec.js
index d2577891495..d756c69d53b 100644
--- a/spec/javascripts/releases/list/store/mutations_spec.js
+++ b/spec/javascripts/releases/list/store/mutations_spec.js
@@ -1,13 +1,16 @@
import state from '~/releases/list/store/state';
import mutations from '~/releases/list/store/mutations';
import * as types from '~/releases/list/store/mutation_types';
-import { releases } from '../../mock_data';
+import { parseIntPagination } from '~/lib/utils/common_utils';
+import { pageInfoHeadersWithoutPagination, releases } from '../../mock_data';
describe('Releases Store Mutations', () => {
let stateCopy;
+ let pageInfo;
beforeEach(() => {
stateCopy = state();
+ pageInfo = parseIntPagination(pageInfoHeadersWithoutPagination);
});
describe('REQUEST_RELEASES', () => {
@@ -20,7 +23,7 @@ describe('Releases Store Mutations', () => {
describe('RECEIVE_RELEASES_SUCCESS', () => {
beforeEach(() => {
- mutations[types.RECEIVE_RELEASES_SUCCESS](stateCopy, releases);
+ mutations[types.RECEIVE_RELEASES_SUCCESS](stateCopy, { pageInfo, data: releases });
});
it('sets is loading to false', () => {
@@ -34,6 +37,10 @@ describe('Releases Store Mutations', () => {
it('sets data', () => {
expect(stateCopy.releases).toEqual(releases);
});
+
+ it('sets pageInfo', () => {
+ expect(stateCopy.pageInfo).toEqual(pageInfo);
+ });
});
describe('RECEIVE_RELEASES_ERROR', () => {
@@ -42,6 +49,7 @@ describe('Releases Store Mutations', () => {
expect(stateCopy.isLoading).toEqual(false);
expect(stateCopy.releases).toEqual([]);
+ expect(stateCopy.pageInfo).toEqual({});
});
});
});
diff --git a/spec/javascripts/releases/mock_data.js b/spec/javascripts/releases/mock_data.js
index 7197eb7bca8..72875dff172 100644
--- a/spec/javascripts/releases/mock_data.js
+++ b/spec/javascripts/releases/mock_data.js
@@ -1,3 +1,21 @@
+export const pageInfoHeadersWithoutPagination = {
+ 'X-NEXT-PAGE': '',
+ 'X-PAGE': '1',
+ 'X-PER-PAGE': '20',
+ 'X-PREV-PAGE': '',
+ 'X-TOTAL': '19',
+ 'X-TOTAL-PAGES': '1',
+};
+
+export const pageInfoHeadersWithPagination = {
+ 'X-NEXT-PAGE': '2',
+ 'X-PAGE': '1',
+ 'X-PER-PAGE': '20',
+ 'X-PREV-PAGE': '',
+ 'X-TOTAL': '21',
+ 'X-TOTAL-PAGES': '2',
+};
+
export const release = {
name: 'Bionic Beaver',
tag_name: '18.04',
diff --git a/spec/javascripts/reports/components/modal_open_name_spec.js b/spec/javascripts/reports/components/modal_open_name_spec.js
index 53ae6453915..ae1fb2bf187 100644
--- a/spec/javascripts/reports/components/modal_open_name_spec.js
+++ b/spec/javascripts/reports/components/modal_open_name_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
import Vuex from 'vuex';
-import component from '~/reports/components/modal_open_name.vue';
import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
+import component from '~/reports/components/modal_open_name.vue';
Vue.use(Vuex);
diff --git a/spec/javascripts/reports/components/summary_row_spec.js b/spec/javascripts/reports/components/summary_row_spec.js
index fab7693581c..a19fbad403c 100644
--- a/spec/javascripts/reports/components/summary_row_spec.js
+++ b/spec/javascripts/reports/components/summary_row_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import component from '~/reports/components/summary_row.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import component from '~/reports/components/summary_row.vue';
describe('Summary row', () => {
const Component = Vue.extend(component);
diff --git a/spec/javascripts/reports/store/actions_spec.js b/spec/javascripts/reports/store/actions_spec.js
index 41137b50847..18fdb179597 100644
--- a/spec/javascripts/reports/store/actions_spec.js
+++ b/spec/javascripts/reports/store/actions_spec.js
@@ -1,4 +1,6 @@
import MockAdapter from 'axios-mock-adapter';
+import testAction from 'spec/helpers/vuex_action_helper';
+import { TEST_HOST } from 'spec/test_constants';
import axios from '~/lib/utils/axios_utils';
import {
setEndpoint,
@@ -13,8 +15,6 @@ import {
} from '~/reports/store/actions';
import state from '~/reports/store/state';
import * as types from '~/reports/store/mutation_types';
-import testAction from 'spec/helpers/vuex_action_helper';
-import { TEST_HOST } from 'spec/test_constants';
describe('Reports Store Actions', () => {
let mockedState;
diff --git a/spec/javascripts/sidebar/assignee_title_spec.js b/spec/javascripts/sidebar/assignee_title_spec.js
index 6c65a55ff29..0496e280a21 100644
--- a/spec/javascripts/sidebar/assignee_title_spec.js
+++ b/spec/javascripts/sidebar/assignee_title_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import AssigneeTitle from '~/sidebar/components/assignees/assignee_title.vue';
import { mockTracking, triggerEvent } from 'spec/helpers/tracking_helper';
+import AssigneeTitle from '~/sidebar/components/assignees/assignee_title.vue';
describe('AssigneeTitle component', () => {
let component;
diff --git a/spec/javascripts/sidebar/assignees_spec.js b/spec/javascripts/sidebar/assignees_spec.js
deleted file mode 100644
index a1df5389a38..00000000000
--- a/spec/javascripts/sidebar/assignees_spec.js
+++ /dev/null
@@ -1,248 +0,0 @@
-import Vue from 'vue';
-import Assignee from '~/sidebar/components/assignees/assignees.vue';
-import UsersMock from './mock_data';
-import UsersMockHelper from '../helpers/user_mock_data_helper';
-
-describe('Assignee component', () => {
- let component;
- let AssigneeComponent;
-
- beforeEach(() => {
- AssigneeComponent = Vue.extend(Assignee);
- });
-
- describe('No assignees/users', () => {
- it('displays no assignee icon when collapsed', () => {
- component = new AssigneeComponent({
- propsData: {
- rootPath: 'http://localhost:3000',
- users: [],
- editable: false,
- },
- }).$mount();
-
- const collapsed = component.$el.querySelector('.sidebar-collapsed-icon');
-
- expect(collapsed.childElementCount).toEqual(1);
- expect(collapsed.children[0].getAttribute('aria-label')).toEqual('None');
- expect(collapsed.children[0].classList.contains('fa')).toEqual(true);
- expect(collapsed.children[0].classList.contains('fa-user')).toEqual(true);
- });
-
- it('displays only "None" when no users are assigned and the issue is read-only', () => {
- component = new AssigneeComponent({
- propsData: {
- rootPath: 'http://localhost:3000',
- users: [],
- editable: false,
- },
- }).$mount();
- const componentTextNoUsers = component.$el.querySelector('.assign-yourself').innerText.trim();
-
- expect(componentTextNoUsers).toBe('None');
- expect(componentTextNoUsers.indexOf('assign yourself')).toEqual(-1);
- });
-
- it('displays only "None" when no users are assigned and the issue can be edited', () => {
- component = new AssigneeComponent({
- propsData: {
- rootPath: 'http://localhost:3000',
- users: [],
- editable: true,
- },
- }).$mount();
- const componentTextNoUsers = component.$el.querySelector('.assign-yourself').innerText.trim();
-
- expect(componentTextNoUsers.indexOf('None')).toEqual(0);
- expect(componentTextNoUsers.indexOf('assign yourself')).toBeGreaterThan(0);
- });
-
- it('emits the assign-self event when "assign yourself" is clicked', () => {
- component = new AssigneeComponent({
- propsData: {
- rootPath: 'http://localhost:3000',
- users: [],
- editable: true,
- },
- }).$mount();
-
- spyOn(component, '$emit');
- component.$el.querySelector('.assign-yourself .btn-link').click();
-
- expect(component.$emit).toHaveBeenCalledWith('assign-self');
- });
- });
-
- describe('One assignee/user', () => {
- it('displays one assignee icon when collapsed', () => {
- component = new AssigneeComponent({
- propsData: {
- rootPath: 'http://localhost:3000',
- users: [UsersMock.user],
- editable: false,
- },
- }).$mount();
-
- const collapsed = component.$el.querySelector('.sidebar-collapsed-icon');
- const assignee = collapsed.children[0];
-
- expect(collapsed.childElementCount).toEqual(1);
- expect(assignee.querySelector('.avatar').getAttribute('src')).toEqual(UsersMock.user.avatar);
- expect(assignee.querySelector('.avatar').getAttribute('alt')).toEqual(
- `${UsersMock.user.name}'s avatar`,
- );
-
- expect(assignee.querySelector('.author').innerText.trim()).toEqual(UsersMock.user.name);
- });
- });
-
- describe('Two or more assignees/users', () => {
- it('has no "cannot merge" tooltip when every user can merge', () => {
- const users = UsersMockHelper.createNumberRandomUsers(2);
- users[0].can_merge = true;
- users[1].can_merge = true;
-
- component = new AssigneeComponent({
- propsData: {
- rootPath: 'http://localhost:3000/',
- users,
- editable: true,
- issuableType: 'merge_request',
- },
- }).$mount();
-
- expect(component.collapsedTooltipTitle).not.toContain('cannot merge');
- });
-
- it('displays two assignee icons when collapsed', () => {
- const users = UsersMockHelper.createNumberRandomUsers(2);
- component = new AssigneeComponent({
- propsData: {
- rootPath: 'http://localhost:3000',
- users,
- editable: false,
- },
- }).$mount();
-
- const collapsed = component.$el.querySelector('.sidebar-collapsed-icon');
-
- expect(collapsed.childElementCount).toEqual(2);
-
- const first = collapsed.children[0];
-
- expect(first.querySelector('.avatar').getAttribute('src')).toEqual(users[0].avatar);
- expect(first.querySelector('.avatar').getAttribute('alt')).toEqual(
- `${users[0].name}'s avatar`,
- );
-
- expect(first.querySelector('.author').innerText.trim()).toEqual(users[0].name);
-
- const second = collapsed.children[1];
-
- expect(second.querySelector('.avatar').getAttribute('src')).toEqual(users[1].avatar);
- expect(second.querySelector('.avatar').getAttribute('alt')).toEqual(
- `${users[1].name}'s avatar`,
- );
-
- expect(second.querySelector('.author').innerText.trim()).toEqual(users[1].name);
- });
-
- it('displays one assignee icon and counter when collapsed', () => {
- const users = UsersMockHelper.createNumberRandomUsers(3);
- component = new AssigneeComponent({
- propsData: {
- rootPath: 'http://localhost:3000',
- users,
- editable: false,
- },
- }).$mount();
-
- const collapsed = component.$el.querySelector('.sidebar-collapsed-icon');
-
- expect(collapsed.childElementCount).toEqual(2);
-
- const first = collapsed.children[0];
-
- expect(first.querySelector('.avatar').getAttribute('src')).toEqual(users[0].avatar);
- expect(first.querySelector('.avatar').getAttribute('alt')).toEqual(
- `${users[0].name}'s avatar`,
- );
-
- expect(first.querySelector('.author').innerText.trim()).toEqual(users[0].name);
-
- const second = collapsed.children[1];
-
- expect(second.querySelector('.avatar-counter').innerText.trim()).toEqual('+2');
- });
-
- it('Shows two assignees', () => {
- const users = UsersMockHelper.createNumberRandomUsers(2);
- component = new AssigneeComponent({
- propsData: {
- rootPath: 'http://localhost:3000',
- users,
- editable: true,
- },
- }).$mount();
-
- expect(component.$el.querySelectorAll('.user-item').length).toEqual(users.length);
- expect(component.$el.querySelector('.user-list-more')).toBe(null);
- });
-
- it('shows sorted assignee where "can merge" users are sorted first', () => {
- const users = UsersMockHelper.createNumberRandomUsers(3);
- users[0].can_merge = false;
- users[1].can_merge = false;
- users[2].can_merge = true;
-
- component = new AssigneeComponent({
- propsData: {
- rootPath: 'http://localhost:3000',
- users,
- editable: true,
- },
- }).$mount();
-
- expect(component.sortedAssigness[0].can_merge).toBe(true);
- });
-
- it('passes the sorted assignees to the uncollapsed-assignee-list', () => {
- const users = UsersMockHelper.createNumberRandomUsers(3);
- users[0].can_merge = false;
- users[1].can_merge = false;
- users[2].can_merge = true;
-
- component = new AssigneeComponent({
- propsData: {
- rootPath: 'http://localhost:3000',
- users,
- editable: false,
- },
- }).$mount();
-
- const userItems = component.$el.querySelectorAll('.user-list .user-item a');
-
- expect(userItems.length).toBe(3);
- expect(userItems[0].dataset.originalTitle).toBe(users[2].name);
- });
-
- it('passes the sorted assignees to the collapsed-assignee-list', () => {
- const users = UsersMockHelper.createNumberRandomUsers(3);
- users[0].can_merge = false;
- users[1].can_merge = false;
- users[2].can_merge = true;
-
- component = new AssigneeComponent({
- propsData: {
- rootPath: 'http://localhost:3000',
- users,
- editable: false,
- },
- }).$mount();
-
- const collapsedButton = component.$el.querySelector('.sidebar-collapsed-user button');
-
- expect(collapsedButton.innerText.trim()).toBe(users[2].name);
- });
- });
-});
diff --git a/spec/javascripts/sidebar/components/time_tracking/time_tracker_spec.js b/spec/javascripts/sidebar/components/time_tracking/time_tracker_spec.js
index ab28190ae64..1580f32cfca 100644
--- a/spec/javascripts/sidebar/components/time_tracking/time_tracker_spec.js
+++ b/spec/javascripts/sidebar/components/time_tracking/time_tracker_spec.js
@@ -1,8 +1,7 @@
import Vue from 'vue';
-import TimeTracker from '~/sidebar/components/time_tracking/time_tracker.vue';
-
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import TimeTracker from '~/sidebar/components/time_tracking/time_tracker.vue';
describe('Issuable Time Tracker', () => {
let initialData;
diff --git a/spec/javascripts/sidebar/lock/edit_form_buttons_spec.js b/spec/javascripts/sidebar/lock/edit_form_buttons_spec.js
index 330f59f08b2..c532554efb4 100644
--- a/spec/javascripts/sidebar/lock/edit_form_buttons_spec.js
+++ b/spec/javascripts/sidebar/lock/edit_form_buttons_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import editFormButtons from '~/sidebar/components/lock/edit_form_buttons.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import editFormButtons from '~/sidebar/components/lock/edit_form_buttons.vue';
describe('EditFormButtons', () => {
let vm1;
diff --git a/spec/javascripts/sidebar/lock/lock_issue_sidebar_spec.js b/spec/javascripts/sidebar/lock/lock_issue_sidebar_spec.js
index decccbb8964..0a3f0d6901f 100644
--- a/spec/javascripts/sidebar/lock/lock_issue_sidebar_spec.js
+++ b/spec/javascripts/sidebar/lock/lock_issue_sidebar_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import lockIssueSidebar from '~/sidebar/components/lock/lock_issue_sidebar.vue';
import { mockTracking, triggerEvent } from 'spec/helpers/tracking_helper';
+import lockIssueSidebar from '~/sidebar/components/lock/lock_issue_sidebar.vue';
describe('LockIssueSidebar', () => {
let vm1;
diff --git a/spec/javascripts/sidebar/mock_data.js b/spec/javascripts/sidebar/mock_data.js
index 3ee97b978fd..c869ff96933 100644
--- a/spec/javascripts/sidebar/mock_data.js
+++ b/spec/javascripts/sidebar/mock_data.js
@@ -1,213 +1,7 @@
-const RESPONSE_MAP = {
- GET: {
- '/gitlab-org/gitlab-shell/issues/5.json': {
- id: 45,
- iid: 5,
- author_id: 23,
- description: 'Nulla ullam commodi delectus adipisci quis sit.',
- lock_version: null,
- milestone_id: 21,
- position: 0,
- state: 'closed',
- title: 'Vel et nulla voluptatibus corporis dolor iste saepe laborum.',
- updated_by_id: 1,
- created_at: '2017-02-02T21: 49: 49.664Z',
- updated_at: '2017-05-03T22: 26: 03.760Z',
- time_estimate: 0,
- total_time_spent: 0,
- human_time_estimate: null,
- human_total_time_spent: null,
- branch_name: null,
- confidential: false,
- assignees: [
- {
- name: 'User 0',
- username: 'user0',
- id: 22,
- state: 'active',
- avatar_url:
- 'https://www.gravatar.com/avatar/52e4ce24a915fb7e51e1ad3b57f4b00a?s=80\u0026d=identicon',
- web_url: 'http: //localhost:3001/user0',
- },
- {
- name: 'Marguerite Bartell',
- username: 'tajuana',
- id: 18,
- state: 'active',
- avatar_url:
- 'https://www.gravatar.com/avatar/4852a41fb41616bf8f140d3701673f53?s=80\u0026d=identicon',
- web_url: 'http: //localhost:3001/tajuana',
- },
- {
- name: 'Laureen Ritchie',
- username: 'michaele.will',
- id: 16,
- state: 'active',
- avatar_url:
- 'https://www.gravatar.com/avatar/e301827eb03be955c9c172cb9a8e4e8a?s=80\u0026d=identicon',
- web_url: 'http: //localhost:3001/michaele.will',
- },
- ],
- due_date: null,
- moved_to_id: null,
- project_id: 4,
- weight: null,
- milestone: {
- id: 21,
- iid: 1,
- project_id: 4,
- title: 'v0.0',
- description: 'Molestiae commodi laboriosam odio sunt eaque reprehenderit.',
- state: 'active',
- created_at: '2017-02-02T21: 49: 30.530Z',
- updated_at: '2017-02-02T21: 49: 30.530Z',
- due_date: null,
- start_date: null,
- },
- labels: [],
- },
- '/gitlab-org/gitlab-shell/issues/5.json?serializer=sidebar_extras': {
- assignees: [
- {
- name: 'User 0',
- username: 'user0',
- id: 22,
- state: 'active',
- avatar_url:
- 'https://www.gravatar.com/avatar/52e4ce24a915fb7e51e1ad3b57f4b00a?s=80\u0026d=identicon',
- web_url: 'http://localhost:3001/user0',
- },
- {
- name: 'Marguerite Bartell',
- username: 'tajuana',
- id: 18,
- state: 'active',
- avatar_url:
- 'https://www.gravatar.com/avatar/4852a41fb41616bf8f140d3701673f53?s=80\u0026d=identicon',
- web_url: 'http://localhost:3001/tajuana',
- },
- {
- name: 'Laureen Ritchie',
- username: 'michaele.will',
- id: 16,
- state: 'active',
- avatar_url:
- 'https://www.gravatar.com/avatar/e301827eb03be955c9c172cb9a8e4e8a?s=80\u0026d=identicon',
- web_url: 'http://localhost:3001/michaele.will',
- },
- ],
- human_time_estimate: null,
- human_total_time_spent: null,
- participants: [
- {
- name: 'User 0',
- username: 'user0',
- id: 22,
- state: 'active',
- avatar_url:
- 'https://www.gravatar.com/avatar/52e4ce24a915fb7e51e1ad3b57f4b00a?s=80\u0026d=identicon',
- web_url: 'http://localhost:3001/user0',
- },
- {
- name: 'Marguerite Bartell',
- username: 'tajuana',
- id: 18,
- state: 'active',
- avatar_url:
- 'https://www.gravatar.com/avatar/4852a41fb41616bf8f140d3701673f53?s=80\u0026d=identicon',
- web_url: 'http://localhost:3001/tajuana',
- },
- {
- name: 'Laureen Ritchie',
- username: 'michaele.will',
- id: 16,
- state: 'active',
- avatar_url:
- 'https://www.gravatar.com/avatar/e301827eb03be955c9c172cb9a8e4e8a?s=80\u0026d=identicon',
- web_url: 'http://localhost:3001/michaele.will',
- },
- ],
- subscribed: true,
- time_estimate: 0,
- total_time_spent: 0,
- },
- '/autocomplete/projects?project_id=15': [
- {
- id: 0,
- name_with_namespace: 'No project',
- },
- {
- id: 20,
- name_with_namespace: '<img src=x onerror=alert(document.domain)> foo / bar',
- },
- ],
- },
- PUT: {
- '/gitlab-org/gitlab-shell/issues/5.json': {
- data: {},
- },
- },
- POST: {
- '/gitlab-org/gitlab-shell/issues/5/move': {
- id: 123,
- iid: 5,
- author_id: 1,
- description: 'some description',
- lock_version: 5,
- milestone_id: null,
- state: 'opened',
- title: 'some title',
- updated_by_id: 1,
- created_at: '2017-06-27T19:54:42.437Z',
- updated_at: '2017-08-18T03:39:49.222Z',
- time_estimate: 0,
- total_time_spent: 0,
- human_time_estimate: null,
- human_total_time_spent: null,
- branch_name: null,
- confidential: false,
- assignees: [],
- due_date: null,
- moved_to_id: null,
- project_id: 7,
- milestone: null,
- labels: [],
- web_url: '/root/some-project/issues/5',
- },
- '/gitlab-org/gitlab-shell/issues/5/toggle_subscription': {},
- },
-};
+// No new code should be added to this file. Instead, modify the
+// file this one re-exports from. For more detail about why, see:
+// https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/31349
-const mockData = {
- responseMap: RESPONSE_MAP,
- mediator: {
- endpoint: '/gitlab-org/gitlab-shell/issues/5.json?serializer=sidebar_extras',
- toggleSubscriptionEndpoint: '/gitlab-org/gitlab-shell/issues/5/toggle_subscription',
- moveIssueEndpoint: '/gitlab-org/gitlab-shell/issues/5/move',
- projectsAutocompleteEndpoint: '/autocomplete/projects?project_id=15',
- editable: true,
- currentUser: {
- id: 1,
- name: 'Administrator',
- username: 'root',
- avatar_url:
- 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon',
- },
- rootPath: '/',
- fullPath: '/gitlab-org/gitlab-shell',
- },
- time: {
- time_estimate: 3600,
- total_time_spent: 0,
- human_time_estimate: '1h',
- human_total_time_spent: null,
- },
- user: {
- avatar: 'https://gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon',
- id: 1,
- name: 'Administrator',
- username: 'root',
- },
-};
+import mockData from '../../../spec/frontend/sidebar/mock_data';
export default mockData;
diff --git a/spec/javascripts/sidebar/participants_spec.js b/spec/javascripts/sidebar/participants_spec.js
index eb360fd256a..8d8ec5884f6 100644
--- a/spec/javascripts/sidebar/participants_spec.js
+++ b/spec/javascripts/sidebar/participants_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import participants from '~/sidebar/components/participants/participants.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import participants from '~/sidebar/components/participants/participants.vue';
const PARTICIPANT = {
id: 1,
diff --git a/spec/javascripts/sidebar/sidebar_assignees_spec.js b/spec/javascripts/sidebar/sidebar_assignees_spec.js
index e808f4003ff..23b8dc69925 100644
--- a/spec/javascripts/sidebar/sidebar_assignees_spec.js
+++ b/spec/javascripts/sidebar/sidebar_assignees_spec.js
@@ -1,9 +1,9 @@
import Vue from 'vue';
+import mountComponent from 'spec/helpers/vue_mount_component_helper';
import SidebarAssignees from '~/sidebar/components/assignees/sidebar_assignees.vue';
import SidebarMediator from '~/sidebar/sidebar_mediator';
import SidebarService from '~/sidebar/services/sidebar_service';
import SidebarStore from '~/sidebar/stores/sidebar_store';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
import Mock from './mock_data';
describe('sidebar assignees', () => {
diff --git a/spec/javascripts/sidebar/sidebar_subscriptions_spec.js b/spec/javascripts/sidebar/sidebar_subscriptions_spec.js
index 88f64244237..ee4516f3bcd 100644
--- a/spec/javascripts/sidebar/sidebar_subscriptions_spec.js
+++ b/spec/javascripts/sidebar/sidebar_subscriptions_spec.js
@@ -1,9 +1,9 @@
import Vue from 'vue';
+import mountComponent from 'spec/helpers/vue_mount_component_helper';
import sidebarSubscriptions from '~/sidebar/components/subscriptions/sidebar_subscriptions.vue';
import SidebarMediator from '~/sidebar/sidebar_mediator';
import SidebarService from '~/sidebar/services/sidebar_service';
import SidebarStore from '~/sidebar/stores/sidebar_store';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
import Mock from './mock_data';
describe('Sidebar Subscriptions', function() {
diff --git a/spec/javascripts/sidebar/subscriptions_spec.js b/spec/javascripts/sidebar/subscriptions_spec.js
index 1256852c472..cdb39efbef8 100644
--- a/spec/javascripts/sidebar/subscriptions_spec.js
+++ b/spec/javascripts/sidebar/subscriptions_spec.js
@@ -1,8 +1,8 @@
import Vue from 'vue';
-import subscriptions from '~/sidebar/components/subscriptions/subscriptions.vue';
-import eventHub from '~/sidebar/event_hub';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
import { mockTracking } from 'spec/helpers/tracking_helper';
+import subscriptions from '~/sidebar/components/subscriptions/subscriptions.vue';
+import eventHub from '~/sidebar/event_hub';
describe('Subscriptions', function() {
let vm;
diff --git a/spec/javascripts/smart_interval_spec.js b/spec/javascripts/smart_interval_spec.js
index c2c2a965e1d..0f579bb32cc 100644
--- a/spec/javascripts/smart_interval_spec.js
+++ b/spec/javascripts/smart_interval_spec.js
@@ -1,7 +1,7 @@
import $ from 'jquery';
import _ from 'underscore';
-import SmartInterval from '~/smart_interval';
import waitForPromises from 'spec/helpers/wait_for_promises';
+import SmartInterval from '~/smart_interval';
describe('SmartInterval', function() {
const DEFAULT_MAX_INTERVAL = 100;
diff --git a/spec/javascripts/test_bundle.js b/spec/javascripts/test_bundle.js
index 859745ee9fc..b81804def57 100644
--- a/spec/javascripts/test_bundle.js
+++ b/spec/javascripts/test_bundle.js
@@ -7,9 +7,9 @@ import 'core-js/features/set-immediate';
import 'vendor/jasmine-jquery';
import '~/commons';
import Vue from 'vue';
-import Translate from '~/vue_shared/translate';
import jasmineDiff from 'jasmine-diff';
import { config as testUtilsConfig } from '@vue/test-utils';
+import Translate from '~/vue_shared/translate';
import { getDefaultAdapter } from '~/lib/utils/axios_utils';
import { FIXTURES_PATH, TEST_HOST } from './test_constants';
@@ -165,45 +165,3 @@ describe('test errors', () => {
}
});
});
-
-// if we're generating coverage reports, make sure to include all files so
-// that we can catch files with 0% coverage
-// see: https://github.com/deepsweet/istanbul-instrumenter-loader/issues/15
-if (process.env.BABEL_ENV === 'coverage') {
- // exempt these files from the coverage report
- const troubleMakers = ['./pages/admin/application_settings/general/index.js'];
-
- describe('Uncovered files', function() {
- const sourceFilesContexts = [require.context('~', true, /\.(js|vue)$/)];
-
- if (process.env.IS_EE) {
- sourceFilesContexts.push(require.context('ee', true, /\.(js|vue)$/));
- }
-
- const allTestFiles = testContexts.reduce(
- (accumulator, context) => accumulator.concat(context.keys()),
- [],
- );
-
- $.holdReady(true);
-
- sourceFilesContexts.forEach(context => {
- context.keys().forEach(path => {
- // ignore if there is a matching spec file
- if (allTestFiles.indexOf(`${path.replace(/\.(js|vue)$/, '')}_spec`) > -1) {
- return;
- }
-
- it(`includes '${path}'`, function() {
- try {
- context(path);
- } catch (err) {
- if (troubleMakers.indexOf(path) === -1) {
- expect(err).toBeNull();
- }
- }
- });
- });
- });
- });
-}
diff --git a/spec/javascripts/user_popovers_spec.js b/spec/javascripts/user_popovers_spec.js
index c0d5ee9c446..e2fc359644d 100644
--- a/spec/javascripts/user_popovers_spec.js
+++ b/spec/javascripts/user_popovers_spec.js
@@ -38,6 +38,7 @@ describe('User Popovers', () => {
const shownPopover = document.querySelector('.popover');
expect(shownPopover).not.toBeNull();
+ expect(targetLink.getAttribute('aria-describedby')).not.toBeNull();
expect(shownPopover.innerHTML).toContain(dummyUser.name);
expect(UsersCache.retrieveById).toHaveBeenCalledWith(userId.toString());
@@ -47,6 +48,7 @@ describe('User Popovers', () => {
setTimeout(() => {
// After Mouse leave it should be hidden now
expect(document.querySelector('.popover')).toBeNull();
+ expect(targetLink.getAttribute('aria-describedby')).toBeNull();
done();
});
}, 210); // We need to wait until the 200ms mouseover delay is over, only then the popover will be visible
diff --git a/spec/javascripts/vue_mr_widget/components/deployment_spec.js b/spec/javascripts/vue_mr_widget/components/deployment_spec.js
deleted file mode 100644
index 1949bee1406..00000000000
--- a/spec/javascripts/vue_mr_widget/components/deployment_spec.js
+++ /dev/null
@@ -1,313 +0,0 @@
-import Vue from 'vue';
-import deploymentComponent from '~/vue_merge_request_widget/components/deployment.vue';
-import MRWidgetService from '~/vue_merge_request_widget/services/mr_widget_service';
-import { getTimeago } from '~/lib/utils/datetime_utility';
-import mountComponent from '../../helpers/vue_mount_component_helper';
-
-describe('Deployment component', () => {
- const Component = Vue.extend(deploymentComponent);
- let deploymentMockData;
-
- beforeEach(() => {
- deploymentMockData = {
- id: 15,
- name: 'review/diplo',
- url: '/root/review-apps/environments/15',
- stop_url: '/root/review-apps/environments/15/stop',
- metrics_url: '/root/review-apps/environments/15/deployments/1/metrics',
- metrics_monitoring_url: '/root/review-apps/environments/15/metrics',
- external_url: 'http://gitlab.com.',
- external_url_formatted: 'gitlab',
- deployed_at: '2017-03-22T22:44:42.258Z',
- deployed_at_formatted: 'Mar 22, 2017 10:44pm',
- changes: [
- {
- path: 'index.html',
- external_url: 'http://root-master-patch-91341.volatile-watch.surge.sh/index.html',
- },
- {
- path: 'imgs/gallery.html',
- external_url: 'http://root-master-patch-91341.volatile-watch.surge.sh/imgs/gallery.html',
- },
- {
- path: 'about/',
- external_url: 'http://root-master-patch-91341.volatile-watch.surge.sh/about/',
- },
- ],
- };
- });
-
- let vm;
-
- afterEach(() => {
- vm.$destroy();
- });
-
- describe('', () => {
- beforeEach(() => {
- vm = mountComponent(Component, { deployment: { ...deploymentMockData }, showMetrics: true });
- });
-
- describe('deployTimeago', () => {
- it('return formatted date', () => {
- const readable = getTimeago().format(deploymentMockData.deployed_at);
-
- expect(vm.deployTimeago).toEqual(readable);
- });
- });
-
- describe('hasExternalUrls', () => {
- it('should return true', () => {
- expect(vm.hasExternalUrls).toEqual(true);
- });
-
- it('should return false when deployment has no external_url_formatted', () => {
- vm.deployment.external_url_formatted = null;
-
- expect(vm.hasExternalUrls).toEqual(false);
- });
-
- it('should return false when deployment has no external_url', () => {
- vm.deployment.external_url = null;
-
- expect(vm.hasExternalUrls).toEqual(false);
- });
- });
-
- describe('hasDeploymentTime', () => {
- it('should return true', () => {
- expect(vm.hasDeploymentTime).toEqual(true);
- });
-
- it('should return false when deployment has no deployed_at', () => {
- vm.deployment.deployed_at = null;
-
- expect(vm.hasDeploymentTime).toEqual(false);
- });
-
- it('should return false when deployment has no deployed_at_formatted', () => {
- vm.deployment.deployed_at_formatted = null;
-
- expect(vm.hasDeploymentTime).toEqual(false);
- });
- });
-
- describe('hasDeploymentMeta', () => {
- it('should return true', () => {
- expect(vm.hasDeploymentMeta).toEqual(true);
- });
-
- it('should return false when deployment has no url', () => {
- vm.deployment.url = null;
-
- expect(vm.hasDeploymentMeta).toEqual(false);
- });
-
- it('should return false when deployment has no name', () => {
- vm.deployment.name = null;
-
- expect(vm.hasDeploymentMeta).toEqual(false);
- });
- });
-
- describe('stopEnvironment', () => {
- const url = '/foo/bar';
- const returnPromise = () =>
- new Promise(resolve => {
- resolve({
- data: {
- redirect_url: url,
- },
- });
- });
- const mockStopEnvironment = () => {
- vm.stopEnvironment(deploymentMockData);
- return vm;
- };
-
- it('should show a confirm dialog and call service.stopEnvironment when confirmed', done => {
- spyOn(window, 'confirm').and.returnValue(true);
- spyOn(MRWidgetService, 'stopEnvironment').and.returnValue(returnPromise(true));
- const visitUrl = spyOnDependency(deploymentComponent, 'visitUrl').and.returnValue(true);
- vm = mockStopEnvironment();
-
- expect(window.confirm).toHaveBeenCalled();
- expect(MRWidgetService.stopEnvironment).toHaveBeenCalledWith(deploymentMockData.stop_url);
- setTimeout(() => {
- expect(visitUrl).toHaveBeenCalledWith(url);
- done();
- }, 333);
- });
-
- it('should show a confirm dialog but should not work if the dialog is rejected', () => {
- spyOn(window, 'confirm').and.returnValue(false);
- spyOn(MRWidgetService, 'stopEnvironment').and.returnValue(returnPromise(false));
- vm = mockStopEnvironment();
-
- expect(window.confirm).toHaveBeenCalled();
- expect(MRWidgetService.stopEnvironment).not.toHaveBeenCalled();
- });
- });
-
- it('renders deployment name', () => {
- expect(vm.$el.querySelector('.js-deploy-meta').getAttribute('href')).toEqual(
- deploymentMockData.url,
- );
-
- expect(vm.$el.querySelector('.js-deploy-meta').innerText).toContain(deploymentMockData.name);
- });
-
- it('renders external URL', () => {
- expect(vm.$el.querySelector('.js-deploy-url').getAttribute('href')).toEqual(
- deploymentMockData.external_url,
- );
-
- expect(vm.$el.querySelector('.js-deploy-url').innerText).toContain('View app');
- });
-
- it('renders stop button', () => {
- expect(vm.$el.querySelector('.btn')).not.toBeNull();
- });
-
- it('renders deployment time', () => {
- expect(vm.$el.querySelector('.js-deploy-time').innerText).toContain(vm.deployTimeago);
- });
-
- it('renders metrics component', () => {
- expect(vm.$el.querySelector('.js-mr-memory-usage')).not.toBeNull();
- });
- });
-
- describe('with showMetrics enabled', () => {
- beforeEach(() => {
- vm = mountComponent(Component, { deployment: { ...deploymentMockData }, showMetrics: true });
- });
-
- it('shows metrics', () => {
- expect(vm.$el).toContainElement('.js-mr-memory-usage');
- });
- });
-
- describe('with showMetrics disabled', () => {
- beforeEach(() => {
- vm = mountComponent(Component, { deployment: { ...deploymentMockData }, showMetrics: false });
- });
-
- it('hides metrics', () => {
- expect(vm.$el).not.toContainElement('.js-mr-memory-usage');
- });
- });
-
- describe('without changes', () => {
- beforeEach(() => {
- delete deploymentMockData.changes;
-
- vm = mountComponent(Component, { deployment: { ...deploymentMockData }, showMetrics: true });
- });
-
- it('renders the link to the review app without dropdown', () => {
- expect(vm.$el.querySelector('.js-mr-wigdet-deployment-dropdown')).toBeNull();
- expect(vm.$el.querySelector('.js-deploy-url')).not.toBeNull();
- });
- });
-
- describe('with a single change', () => {
- beforeEach(() => {
- deploymentMockData.changes = deploymentMockData.changes.slice(0, 1);
-
- vm = mountComponent(Component, {
- deployment: { ...deploymentMockData },
- showMetrics: true,
- });
- });
-
- it('renders the link to the review app without dropdown', () => {
- expect(vm.$el.querySelector('.js-mr-wigdet-deployment-dropdown')).toBeNull();
- expect(vm.$el.querySelector('.js-deploy-url')).not.toBeNull();
- });
-
- it('renders the link to the review app linked to to the first change', () => {
- const expectedUrl = deploymentMockData.changes[0].external_url;
- const deployUrl = vm.$el.querySelector('.js-deploy-url');
-
- expect(vm.$el.querySelector('.js-mr-wigdet-deployment-dropdown')).toBeNull();
- expect(deployUrl).not.toBeNull();
- expect(deployUrl.href).toEqual(expectedUrl);
- });
- });
-
- describe('deployment status', () => {
- describe('running', () => {
- beforeEach(() => {
- vm = mountComponent(Component, {
- deployment: Object.assign({}, deploymentMockData, { status: 'running' }),
- showMetrics: true,
- });
- });
-
- it('renders information about running deployment', () => {
- expect(vm.$el.querySelector('.js-deployment-info').textContent).toContain('Deploying to');
- });
-
- it('renders disabled stop button', () => {
- expect(vm.$el.querySelector('.js-stop-env').getAttribute('disabled')).toBe('disabled');
- });
- });
-
- describe('success', () => {
- beforeEach(() => {
- vm = mountComponent(Component, {
- deployment: Object.assign({}, deploymentMockData, { status: 'success' }),
- showMetrics: true,
- });
- });
-
- it('renders information about finished deployment', () => {
- expect(vm.$el.querySelector('.js-deployment-info').textContent).toContain('Deployed to');
- });
- });
-
- describe('failed', () => {
- beforeEach(() => {
- vm = mountComponent(Component, {
- deployment: Object.assign({}, deploymentMockData, { status: 'failed' }),
- showMetrics: true,
- });
- });
-
- it('renders information about finished deployment', () => {
- expect(vm.$el.querySelector('.js-deployment-info').textContent).toContain(
- 'Failed to deploy to',
- );
- });
- });
-
- describe('created', () => {
- beforeEach(() => {
- vm = mountComponent(Component, {
- deployment: Object.assign({}, deploymentMockData, { status: 'created' }),
- showMetrics: true,
- });
- });
-
- it('renders information about created deployment', () => {
- expect(vm.$el.querySelector('.js-deployment-info').textContent).toContain('Will deploy to');
- });
- });
-
- describe('canceled', () => {
- beforeEach(() => {
- vm = mountComponent(Component, {
- deployment: Object.assign({}, deploymentMockData, { status: 'canceled' }),
- showMetrics: true,
- });
- });
-
- it('renders information about canceled deployment', () => {
- expect(vm.$el.querySelector('.js-deployment-info').textContent).toContain(
- 'Failed to deploy to',
- );
- });
- });
- });
-});
diff --git a/spec/javascripts/vue_mr_widget/components/deployment_stop_button_spec.js b/spec/javascripts/vue_mr_widget/components/deployment_stop_button_spec.js
new file mode 100644
index 00000000000..6a6d8279c2c
--- /dev/null
+++ b/spec/javascripts/vue_mr_widget/components/deployment_stop_button_spec.js
@@ -0,0 +1,95 @@
+import Vue from 'vue';
+import deploymentStopComponent from '~/vue_merge_request_widget/components/deployment/deployment_stop_button.vue';
+import { SUCCESS } from '~/vue_merge_request_widget/components/deployment/constants';
+import MRWidgetService from '~/vue_merge_request_widget/services/mr_widget_service';
+import mountComponent from '../../helpers/vue_mount_component_helper';
+
+describe('Deployment component', () => {
+ const Component = Vue.extend(deploymentStopComponent);
+ let deploymentMockData;
+
+ beforeEach(() => {
+ deploymentMockData = {
+ id: 15,
+ name: 'review/diplo',
+ url: '/root/review-apps/environments/15',
+ stop_url: '/root/review-apps/environments/15/stop',
+ metrics_url: '/root/review-apps/environments/15/deployments/1/metrics',
+ metrics_monitoring_url: '/root/review-apps/environments/15/metrics',
+ external_url: 'http://gitlab.com.',
+ external_url_formatted: 'gitlab',
+ deployed_at: '2017-03-22T22:44:42.258Z',
+ deployed_at_formatted: 'Mar 22, 2017 10:44pm',
+ deployment_manual_actions: [],
+ status: SUCCESS,
+ changes: [
+ {
+ path: 'index.html',
+ external_url: 'http://root-master-patch-91341.volatile-watch.surge.sh/index.html',
+ },
+ {
+ path: 'imgs/gallery.html',
+ external_url: 'http://root-master-patch-91341.volatile-watch.surge.sh/imgs/gallery.html',
+ },
+ {
+ path: 'about/',
+ external_url: 'http://root-master-patch-91341.volatile-watch.surge.sh/about/',
+ },
+ ],
+ };
+ });
+
+ let vm;
+
+ afterEach(() => {
+ vm.$destroy();
+ });
+
+ describe('', () => {
+ beforeEach(() => {
+ vm = mountComponent(Component, {
+ stopUrl: deploymentMockData.stop_url,
+ isDeployInProgress: false,
+ });
+ });
+
+ describe('stopEnvironment', () => {
+ const url = '/foo/bar';
+ const returnPromise = () =>
+ new Promise(resolve => {
+ resolve({
+ data: {
+ redirect_url: url,
+ },
+ });
+ });
+ const mockStopEnvironment = () => {
+ vm.stopEnvironment(deploymentMockData);
+ return vm;
+ };
+
+ it('should show a confirm dialog and call service.stopEnvironment when confirmed', done => {
+ spyOn(window, 'confirm').and.returnValue(true);
+ spyOn(MRWidgetService, 'stopEnvironment').and.returnValue(returnPromise(true));
+ const visitUrl = spyOnDependency(deploymentStopComponent, 'visitUrl').and.returnValue(true);
+ vm = mockStopEnvironment();
+
+ expect(window.confirm).toHaveBeenCalled();
+ expect(MRWidgetService.stopEnvironment).toHaveBeenCalledWith(deploymentMockData.stop_url);
+ setTimeout(() => {
+ expect(visitUrl).toHaveBeenCalledWith(url);
+ done();
+ }, 333);
+ });
+
+ it('should show a confirm dialog but should not work if the dialog is rejected', () => {
+ spyOn(window, 'confirm').and.returnValue(false);
+ spyOn(MRWidgetService, 'stopEnvironment').and.returnValue(returnPromise(false));
+ vm = mockStopEnvironment();
+
+ expect(window.confirm).toHaveBeenCalled();
+ expect(MRWidgetService.stopEnvironment).not.toHaveBeenCalled();
+ });
+ });
+ });
+});
diff --git a/spec/javascripts/vue_mr_widget/components/mr_widget_alert_message_spec.js b/spec/javascripts/vue_mr_widget/components/mr_widget_alert_message_spec.js
index 8ec17efffb9..bd567f1f93a 100644
--- a/spec/javascripts/vue_mr_widget/components/mr_widget_alert_message_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/mr_widget_alert_message_spec.js
@@ -1,6 +1,6 @@
import { shallowMount, createLocalVue } from '@vue/test-utils';
-import MrWidgetAlertMessage from '~/vue_merge_request_widget/components/mr_widget_alert_message.vue';
import { GlLink } from '@gitlab/ui';
+import MrWidgetAlertMessage from '~/vue_merge_request_widget/components/mr_widget_alert_message.vue';
describe('MrWidgetAlertMessage', () => {
let wrapper;
diff --git a/spec/javascripts/vue_mr_widget/components/mr_widget_author_spec.js b/spec/javascripts/vue_mr_widget/components/mr_widget_author_spec.js
index b69082082ba..a942a9dec87 100644
--- a/spec/javascripts/vue_mr_widget/components/mr_widget_author_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/mr_widget_author_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import MrWidgetAuthor from '~/vue_merge_request_widget/components/mr_widget_author.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import MrWidgetAuthor from '~/vue_merge_request_widget/components/mr_widget_author.vue';
describe('MrWidgetAuthor', () => {
let vm;
diff --git a/spec/javascripts/vue_mr_widget/components/mr_widget_author_time_spec.js b/spec/javascripts/vue_mr_widget/components/mr_widget_author_time_spec.js
index 787f44e478d..55af2baa924 100644
--- a/spec/javascripts/vue_mr_widget/components/mr_widget_author_time_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/mr_widget_author_time_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import MrWidgetAuthorTime from '~/vue_merge_request_widget/components/mr_widget_author_time.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import MrWidgetAuthorTime from '~/vue_merge_request_widget/components/mr_widget_author_time.vue';
describe('MrWidgetAuthorTime', () => {
let vm;
diff --git a/spec/javascripts/vue_mr_widget/components/mr_widget_header_spec.js b/spec/javascripts/vue_mr_widget/components/mr_widget_header_spec.js
index cd77b0ab815..de1d351677c 100644
--- a/spec/javascripts/vue_mr_widget/components/mr_widget_header_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/mr_widget_header_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import headerComponent from '~/vue_merge_request_widget/components/mr_widget_header.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import headerComponent from '~/vue_merge_request_widget/components/mr_widget_header.vue';
describe('MRWidgetHeader', () => {
let vm;
diff --git a/spec/javascripts/vue_mr_widget/components/mr_widget_memory_usage_spec.js b/spec/javascripts/vue_mr_widget/components/mr_widget_memory_usage_spec.js
index 4baaea9745a..d15c3552b4a 100644
--- a/spec/javascripts/vue_mr_widget/components/mr_widget_memory_usage_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/mr_widget_memory_usage_spec.js
@@ -1,5 +1,5 @@
import Vue from 'vue';
-import MemoryUsage from '~/vue_merge_request_widget/components/memory_usage.vue';
+import MemoryUsage from '~/vue_merge_request_widget/components/deployment/memory_usage.vue';
import MRWidgetService from '~/vue_merge_request_widget/services/mr_widget_service';
const url = '/root/acets-review-apps/environments/15/deployments/1/metrics';
@@ -185,6 +185,7 @@ describe('MemoryUsage', () => {
vm.loadingMetrics = false;
vm.hasMetrics = true;
vm.loadFailed = false;
+ vm.memoryMetrics = metricsMockData.metrics.memory_values[0].values;
Vue.nextTick(() => {
expect(el.querySelector('.memory-graph-container')).toBeDefined();
diff --git a/spec/javascripts/vue_mr_widget/components/mr_widget_merge_help_spec.js b/spec/javascripts/vue_mr_widget/components/mr_widget_merge_help_spec.js
index 2c554f3f3ab..b566876fe1d 100644
--- a/spec/javascripts/vue_mr_widget/components/mr_widget_merge_help_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/mr_widget_merge_help_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import mergeHelpComponent from '~/vue_merge_request_widget/components/mr_widget_merge_help.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import mergeHelpComponent from '~/vue_merge_request_widget/components/mr_widget_merge_help.vue';
describe('MRWidgetMergeHelp', () => {
let vm;
diff --git a/spec/javascripts/vue_mr_widget/components/mr_widget_pipeline_container_spec.js b/spec/javascripts/vue_mr_widget/components/mr_widget_pipeline_container_spec.js
index 6cdf60f3535..2d6d22d66aa 100644
--- a/spec/javascripts/vue_mr_widget/components/mr_widget_pipeline_container_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/mr_widget_pipeline_container_spec.js
@@ -4,18 +4,19 @@ import MrWidgetPipeline from '~/vue_merge_request_widget/components/mr_widget_pi
import ArtifactsApp from '~/vue_merge_request_widget/components/artifacts_list_app.vue';
import { mockStore } from '../mock_data';
+const localVue = createLocalVue();
+
describe('MrWidgetPipelineContainer', () => {
let wrapper;
const factory = (props = {}) => {
- const localVue = createLocalVue();
-
wrapper = mount(localVue.extend(MrWidgetPipelineContainer), {
propsData: {
mr: Object.assign({}, mockStore),
...props,
},
localVue,
+ sync: false,
});
};
@@ -33,6 +34,7 @@ describe('MrWidgetPipelineContainer', () => {
expect(wrapper.find(MrWidgetPipeline).props()).toEqual(
jasmine.objectContaining({
pipeline: mockStore.pipeline,
+ pipelineCoverageDelta: mockStore.pipelineCoverageDelta,
ciStatus: mockStore.ciStatus,
hasCi: mockStore.hasCI,
sourceBranch: mockStore.sourceBranch,
@@ -67,6 +69,7 @@ describe('MrWidgetPipelineContainer', () => {
expect(wrapper.find(MrWidgetPipeline).props()).toEqual(
jasmine.objectContaining({
pipeline: mockStore.mergePipeline,
+ pipelineCoverageDelta: mockStore.pipelineCoverageDelta,
ciStatus: mockStore.ciStatus,
hasCi: mockStore.hasCI,
sourceBranch: mockStore.targetBranch,
diff --git a/spec/javascripts/vue_mr_widget/components/mr_widget_pipeline_spec.js b/spec/javascripts/vue_mr_widget/components/mr_widget_pipeline_spec.js
index 67e85763fae..5997c93105e 100644
--- a/spec/javascripts/vue_mr_widget/components/mr_widget_pipeline_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/mr_widget_pipeline_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
-import pipelineComponent from '~/vue_merge_request_widget/components/mr_widget_pipeline.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
import { trimText } from 'spec/helpers/text_helper';
+import pipelineComponent from '~/vue_merge_request_widget/components/mr_widget_pipeline.vue';
import mockData from '../mock_data';
describe('MRWidgetPipeline', () => {
@@ -62,6 +62,38 @@ describe('MRWidgetPipeline', () => {
expect(vm.hasCIError).toEqual(true);
});
});
+
+ describe('coverageDeltaClass', () => {
+ it('should return no class if there is no coverage change', () => {
+ vm = mountComponent(Component, {
+ pipeline: mockData.pipeline,
+ pipelineCoverageDelta: '0',
+ troubleshootingDocsPath: 'help',
+ });
+
+ expect(vm.coverageDeltaClass).toEqual('');
+ });
+
+ it('should return text-success if the coverage increased', () => {
+ vm = mountComponent(Component, {
+ pipeline: mockData.pipeline,
+ pipelineCoverageDelta: '10',
+ troubleshootingDocsPath: 'help',
+ });
+
+ expect(vm.coverageDeltaClass).toEqual('text-success');
+ });
+
+ it('should return text-danger if the coverage decreased', () => {
+ vm = mountComponent(Component, {
+ pipeline: mockData.pipeline,
+ pipelineCoverageDelta: '-12',
+ troubleshootingDocsPath: 'help',
+ });
+
+ expect(vm.coverageDeltaClass).toEqual('text-danger');
+ });
+ });
});
describe('rendered output', () => {
@@ -96,6 +128,7 @@ describe('MRWidgetPipeline', () => {
pipeline: mockData.pipeline,
hasCi: true,
ciStatus: 'success',
+ pipelineCoverageDelta: mockData.pipelineCoverageDelta,
troubleshootingDocsPath: 'help',
});
});
@@ -132,6 +165,13 @@ describe('MRWidgetPipeline', () => {
`Coverage ${mockData.pipeline.coverage}`,
);
});
+
+ it('should render pipeline coverage delta information', () => {
+ expect(vm.$el.querySelector('.js-pipeline-coverage-delta.text-danger')).toBeDefined();
+ expect(vm.$el.querySelector('.js-pipeline-coverage-delta').textContent).toContain(
+ `(${mockData.pipelineCoverageDelta}%)`,
+ );
+ });
});
describe('without commit path', () => {
diff --git a/spec/javascripts/vue_mr_widget/components/mr_widget_rebase_spec.js b/spec/javascripts/vue_mr_widget/components/mr_widget_rebase_spec.js
index 7216ad00cc1..5b293862b16 100644
--- a/spec/javascripts/vue_mr_widget/components/mr_widget_rebase_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/mr_widget_rebase_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
+import mountComponent from 'spec/helpers/vue_mount_component_helper';
import eventHub from '~/vue_merge_request_widget/event_hub';
import component from '~/vue_merge_request_widget/components/states/mr_widget_rebase.vue';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
describe('Merge request widget rebase component', () => {
let Component;
diff --git a/spec/javascripts/vue_mr_widget/components/mr_widget_related_links_spec.js b/spec/javascripts/vue_mr_widget/components/mr_widget_related_links_spec.js
index 7a5d0efdea5..a152bd01916 100644
--- a/spec/javascripts/vue_mr_widget/components/mr_widget_related_links_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/mr_widget_related_links_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import relatedLinksComponent from '~/vue_merge_request_widget/components/mr_widget_related_links.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import relatedLinksComponent from '~/vue_merge_request_widget/components/mr_widget_related_links.vue';
describe('MRWidgetRelatedLinks', () => {
let vm;
diff --git a/spec/javascripts/vue_mr_widget/components/mr_widget_status_icon_spec.js b/spec/javascripts/vue_mr_widget/components/mr_widget_status_icon_spec.js
index 5aac37d28df..20bda024d89 100644
--- a/spec/javascripts/vue_mr_widget/components/mr_widget_status_icon_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/mr_widget_status_icon_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import mrStatusIcon from '~/vue_merge_request_widget/components/mr_widget_status_icon.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import mrStatusIcon from '~/vue_merge_request_widget/components/mr_widget_status_icon.vue';
describe('MR widget status icon component', () => {
let vm;
diff --git a/spec/javascripts/vue_mr_widget/components/review_app_link_spec.js b/spec/javascripts/vue_mr_widget/components/review_app_link_spec.js
index 68a65bd21c6..bd481f93413 100644
--- a/spec/javascripts/vue_mr_widget/components/review_app_link_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/review_app_link_spec.js
@@ -1,4 +1,5 @@
import Vue from 'vue';
+import { mockTracking, triggerEvent } from 'spec/helpers/tracking_helper';
import component from '~/vue_merge_request_widget/components/review_app_link.vue';
import mountComponent from '../../helpers/vue_mount_component_helper';
@@ -7,6 +8,7 @@ describe('review app link', () => {
const props = {
link: '/review',
cssClass: 'js-link',
+ isCurrent: true,
};
let vm;
let el;
@@ -35,4 +37,13 @@ describe('review app link', () => {
it('renders svg icon', () => {
expect(el.querySelector('svg')).not.toBeNull();
});
+
+ it('tracks an event when clicked', () => {
+ const spy = mockTracking('_category_', el, spyOn);
+ triggerEvent(el);
+
+ expect(spy).toHaveBeenCalledWith('_category_', 'open_review_app', {
+ label: 'review_app',
+ });
+ });
});
diff --git a/spec/javascripts/vue_mr_widget/components/states/mr_widget_archived_spec.js b/spec/javascripts/vue_mr_widget/components/states/mr_widget_archived_spec.js
index b90f5881a4d..29a257b0e24 100644
--- a/spec/javascripts/vue_mr_widget/components/states/mr_widget_archived_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/states/mr_widget_archived_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import archivedComponent from '~/vue_merge_request_widget/components/states/mr_widget_archived.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import archivedComponent from '~/vue_merge_request_widget/components/states/mr_widget_archived.vue';
describe('MRWidgetArchived', () => {
let vm;
diff --git a/spec/javascripts/vue_mr_widget/components/states/mr_widget_auto_merge_enabled_spec.js b/spec/javascripts/vue_mr_widget/components/states/mr_widget_auto_merge_enabled_spec.js
index 2ea8c169add..73b65178ecf 100644
--- a/spec/javascripts/vue_mr_widget/components/states/mr_widget_auto_merge_enabled_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/states/mr_widget_auto_merge_enabled_spec.js
@@ -1,9 +1,9 @@
import Vue from 'vue';
+import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import { trimText } from 'spec/helpers/text_helper';
import autoMergeEnabledComponent from '~/vue_merge_request_widget/components/states/mr_widget_auto_merge_enabled.vue';
import MRWidgetService from '~/vue_merge_request_widget/services/mr_widget_service';
import eventHub from '~/vue_merge_request_widget/event_hub';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
-import { trimText } from 'spec/helpers/text_helper';
import { MWPS_MERGE_STRATEGY } from '~/vue_merge_request_widget/constants';
describe('MRWidgetAutoMergeEnabled', () => {
diff --git a/spec/javascripts/vue_mr_widget/components/states/mr_widget_checking_spec.js b/spec/javascripts/vue_mr_widget/components/states/mr_widget_checking_spec.js
index 70c70eca746..4f6451473e8 100644
--- a/spec/javascripts/vue_mr_widget/components/states/mr_widget_checking_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/states/mr_widget_checking_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import checkingComponent from '~/vue_merge_request_widget/components/states/mr_widget_checking.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import checkingComponent from '~/vue_merge_request_widget/components/states/mr_widget_checking.vue';
describe('MRWidgetChecking', () => {
let Component;
diff --git a/spec/javascripts/vue_mr_widget/components/states/mr_widget_closed_spec.js b/spec/javascripts/vue_mr_widget/components/states/mr_widget_closed_spec.js
index 9523e7d5474..bbbaed0d2f5 100644
--- a/spec/javascripts/vue_mr_widget/components/states/mr_widget_closed_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/states/mr_widget_closed_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import closedComponent from '~/vue_merge_request_widget/components/states/mr_widget_closed.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import closedComponent from '~/vue_merge_request_widget/components/states/mr_widget_closed.vue';
describe('MRWidgetClosed', () => {
let vm;
diff --git a/spec/javascripts/vue_mr_widget/components/states/mr_widget_conflicts_spec.js b/spec/javascripts/vue_mr_widget/components/states/mr_widget_conflicts_spec.js
index 55073f5537c..9035bc6f65d 100644
--- a/spec/javascripts/vue_mr_widget/components/states/mr_widget_conflicts_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/states/mr_widget_conflicts_spec.js
@@ -1,7 +1,7 @@
import $ from 'jquery';
import { createLocalVue, shallowMount } from '@vue/test-utils';
-import ConflictsComponent from '~/vue_merge_request_widget/components/states/mr_widget_conflicts.vue';
import { removeBreakLine } from 'spec/helpers/text_helper';
+import ConflictsComponent from '~/vue_merge_request_widget/components/states/mr_widget_conflicts.vue';
describe('MRWidgetConflicts', () => {
let vm;
diff --git a/spec/javascripts/vue_mr_widget/components/states/mr_widget_failed_to_merge_spec.js b/spec/javascripts/vue_mr_widget/components/states/mr_widget_failed_to_merge_spec.js
index 780bed1bf69..ef76e617c07 100644
--- a/spec/javascripts/vue_mr_widget/components/states/mr_widget_failed_to_merge_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/states/mr_widget_failed_to_merge_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
+import mountComponent from 'spec/helpers/vue_mount_component_helper';
import failedToMergeComponent from '~/vue_merge_request_widget/components/states/mr_widget_failed_to_merge.vue';
import eventHub from '~/vue_merge_request_widget/event_hub';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
describe('MRWidgetFailedToMerge', () => {
const dummyIntervalId = 1337;
diff --git a/spec/javascripts/vue_mr_widget/components/states/mr_widget_merged_spec.js b/spec/javascripts/vue_mr_widget/components/states/mr_widget_merged_spec.js
index 1683da805b9..423c800bfbc 100644
--- a/spec/javascripts/vue_mr_widget/components/states/mr_widget_merged_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/states/mr_widget_merged_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
+import mountComponent from 'spec/helpers/vue_mount_component_helper';
import mergedComponent from '~/vue_merge_request_widget/components/states/mr_widget_merged.vue';
import eventHub from '~/vue_merge_request_widget/event_hub';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
describe('MRWidgetMerged', () => {
let vm;
diff --git a/spec/javascripts/vue_mr_widget/components/states/mr_widget_merging_spec.js b/spec/javascripts/vue_mr_widget/components/states/mr_widget_merging_spec.js
index 57773d1648a..06d236064dd 100644
--- a/spec/javascripts/vue_mr_widget/components/states/mr_widget_merging_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/states/mr_widget_merging_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import mergingComponent from '~/vue_merge_request_widget/components/states/mr_widget_merging.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import mergingComponent from '~/vue_merge_request_widget/components/states/mr_widget_merging.vue';
describe('MRWidgetMerging', () => {
let vm;
diff --git a/spec/javascripts/vue_mr_widget/components/states/mr_widget_missing_branch_spec.js b/spec/javascripts/vue_mr_widget/components/states/mr_widget_missing_branch_spec.js
index 5fd8093bf5c..47b989e2022 100644
--- a/spec/javascripts/vue_mr_widget/components/states/mr_widget_missing_branch_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/states/mr_widget_missing_branch_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import missingBranchComponent from '~/vue_merge_request_widget/components/states/mr_widget_missing_branch.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import missingBranchComponent from '~/vue_merge_request_widget/components/states/mr_widget_missing_branch.vue';
describe('MRWidgetMissingBranch', () => {
let vm;
diff --git a/spec/javascripts/vue_mr_widget/components/states/mr_widget_not_allowed_spec.js b/spec/javascripts/vue_mr_widget/components/states/mr_widget_not_allowed_spec.js
index 6b95ca3460b..b1cb91663c9 100644
--- a/spec/javascripts/vue_mr_widget/components/states/mr_widget_not_allowed_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/states/mr_widget_not_allowed_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import notAllowedComponent from '~/vue_merge_request_widget/components/states/mr_widget_not_allowed.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import notAllowedComponent from '~/vue_merge_request_widget/components/states/mr_widget_not_allowed.vue';
describe('MRWidgetNotAllowed', () => {
let vm;
diff --git a/spec/javascripts/vue_mr_widget/components/states/mr_widget_pipeline_blocked_spec.js b/spec/javascripts/vue_mr_widget/components/states/mr_widget_pipeline_blocked_spec.js
index 1d2f3e41509..0bca86b12b2 100644
--- a/spec/javascripts/vue_mr_widget/components/states/mr_widget_pipeline_blocked_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/states/mr_widget_pipeline_blocked_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
-import pipelineBlockedComponent from '~/vue_merge_request_widget/components/states/mr_widget_pipeline_blocked.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
import { removeBreakLine } from 'spec/helpers/text_helper';
+import pipelineBlockedComponent from '~/vue_merge_request_widget/components/states/mr_widget_pipeline_blocked.vue';
describe('MRWidgetPipelineBlocked', () => {
let vm;
diff --git a/spec/javascripts/vue_mr_widget/components/states/mr_widget_pipeline_failed_spec.js b/spec/javascripts/vue_mr_widget/components/states/mr_widget_pipeline_failed_spec.js
index 3e4ce2c3696..85f65d024a8 100644
--- a/spec/javascripts/vue_mr_widget/components/states/mr_widget_pipeline_failed_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/states/mr_widget_pipeline_failed_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import PipelineFailed from '~/vue_merge_request_widget/components/states/pipeline_failed.vue';
import { removeBreakLine } from 'spec/helpers/text_helper';
+import PipelineFailed from '~/vue_merge_request_widget/components/states/pipeline_failed.vue';
describe('PipelineFailed', () => {
describe('template', () => {
diff --git a/spec/javascripts/vue_mr_widget/components/states/mr_widget_ready_to_merge_spec.js b/spec/javascripts/vue_mr_widget/components/states/mr_widget_ready_to_merge_spec.js
index 2bb2319cc60..a2fa098bf6b 100644
--- a/spec/javascripts/vue_mr_widget/components/states/mr_widget_ready_to_merge_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/states/mr_widget_ready_to_merge_spec.js
@@ -1,11 +1,11 @@
import Vue from 'vue';
+import { createLocalVue, shallowMount } from '@vue/test-utils';
import ReadyToMerge from '~/vue_merge_request_widget/components/states/ready_to_merge.vue';
import SquashBeforeMerge from '~/vue_merge_request_widget/components/states/squash_before_merge.vue';
import CommitsHeader from '~/vue_merge_request_widget/components/states/commits_header.vue';
import CommitEdit from '~/vue_merge_request_widget/components/states/commit_edit.vue';
import CommitMessageDropdown from '~/vue_merge_request_widget/components/states/commit_message_dropdown.vue';
import eventHub from '~/vue_merge_request_widget/event_hub';
-import { createLocalVue, shallowMount } from '@vue/test-utils';
import { MWPS_MERGE_STRATEGY, MTWPS_MERGE_STRATEGY } from '~/vue_merge_request_widget/constants';
const commitMessage = 'This is the commit message';
@@ -288,6 +288,12 @@ describe('ReadyToMerge', () => {
expect(vm.isMergeButtonDisabled).toBe(true);
});
});
+
+ describe('isMergeImmediatelyDangerous', () => {
+ it('should always return false in CE', () => {
+ expect(vm.isMergeImmediatelyDangerous).toBe(false);
+ });
+ });
});
describe('methods', () => {
@@ -938,4 +944,31 @@ describe('ReadyToMerge', () => {
expect(customVm.$el.querySelector('.js-modify-commit-message-button')).toBeNull();
});
});
+
+ describe('with a mismatched SHA', () => {
+ const findMismatchShaBlock = () => vm.$el.querySelector('.js-sha-mismatch');
+
+ beforeEach(() => {
+ vm = createComponent({
+ mr: {
+ isSHAMismatch: true,
+ mergeRequestDiffsPath: '/merge_requests/1/diffs',
+ },
+ });
+ });
+
+ it('displays a warning message', () => {
+ expect(findMismatchShaBlock()).toExist();
+ });
+
+ it('warns the user to refresh to review', () => {
+ expect(findMismatchShaBlock().textContent.trim()).toBe(
+ 'New changes were added. Reload the page to review them',
+ );
+ });
+
+ it('displays link to the diffs tab', () => {
+ expect(findMismatchShaBlock().querySelector('a').href).toContain(vm.mr.mergeRequestDiffsPath);
+ });
+ });
});
diff --git a/spec/javascripts/vue_mr_widget/components/states/mr_widget_sha_mismatch_spec.js b/spec/javascripts/vue_mr_widget/components/states/mr_widget_sha_mismatch_spec.js
index 9324c83bf4b..11eb0fef9b2 100644
--- a/spec/javascripts/vue_mr_widget/components/states/mr_widget_sha_mismatch_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/states/mr_widget_sha_mismatch_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
-import ShaMismatch from '~/vue_merge_request_widget/components/states/sha_mismatch.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
import { removeBreakLine } from 'spec/helpers/text_helper';
+import ShaMismatch from '~/vue_merge_request_widget/components/states/sha_mismatch.vue';
describe('ShaMismatch', () => {
let vm;
diff --git a/spec/javascripts/vue_mr_widget/components/states/mr_widget_unresolved_discussions_spec.js b/spec/javascripts/vue_mr_widget/components/states/mr_widget_unresolved_discussions_spec.js
index 5bd1af56bcc..e8367caa438 100644
--- a/spec/javascripts/vue_mr_widget/components/states/mr_widget_unresolved_discussions_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/states/mr_widget_unresolved_discussions_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import UnresolvedDiscussions from '~/vue_merge_request_widget/components/states/unresolved_discussions.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import UnresolvedDiscussions from '~/vue_merge_request_widget/components/states/unresolved_discussions.vue';
describe('UnresolvedDiscussions', () => {
const Component = Vue.extend(UnresolvedDiscussions);
diff --git a/spec/javascripts/vue_mr_widget/mock_data.js b/spec/javascripts/vue_mr_widget/mock_data.js
index 089ec08fbf9..c7ca93c58cf 100644
--- a/spec/javascripts/vue_mr_widget/mock_data.js
+++ b/spec/javascripts/vue_mr_widget/mock_data.js
@@ -1,3 +1,5 @@
+import { SUCCESS } from '~/vue_merge_request_widget/components/deployment/constants';
+
export default {
id: 132,
iid: 22,
@@ -183,6 +185,7 @@ export default {
created_at: '2017-04-07T12:27:19.520Z',
updated_at: '2017-04-07T15:28:44.800Z',
},
+ pipelineCoverageDelta: '15.25',
work_in_progress: false,
source_branch_exists: false,
mergeable_discussions_state: true,
@@ -220,6 +223,7 @@ export default {
plain_diff_path: '/root/acets-app/merge_requests/22.diff',
merge_request_basic_path: '/root/acets-app/merge_requests/22.json?serializer=basic',
merge_request_widget_path: '/root/acets-app/merge_requests/22/widget.json',
+ merge_request_cached_widget_path: '/cached.json',
merge_check_path: '/root/acets-app/merge_requests/22/merge_check',
ci_environments_status_url: '/root/acets-app/merge_requests/22/ci_environments_status',
project_archived: false,
@@ -284,8 +288,26 @@ export const mockStore = {
targetBranch: 'target-branch',
sourceBranch: 'source-branch',
sourceBranchLink: 'source-branch-link',
- deployments: [{ id: 0, name: 'bogus' }, { id: 1, name: 'bogus-docs' }],
- postMergeDeployments: [{ id: 0, name: 'prod' }, { id: 1, name: 'prod-docs' }],
+ deployments: [
+ {
+ id: 0,
+ name: 'bogus',
+ external_url: 'https://fake.com',
+ external_url_formatted: 'https://fake.com',
+ status: SUCCESS,
+ },
+ {
+ id: 1,
+ name: 'bogus-docs',
+ external_url: 'https://fake.com',
+ external_url_formatted: 'https://fake.com',
+ status: SUCCESS,
+ },
+ ],
+ postMergeDeployments: [
+ { id: 0, name: 'prod', status: SUCCESS },
+ { id: 1, name: 'prod-docs', status: SUCCESS },
+ ],
troubleshootingDocsPath: 'troubleshooting-docs-path',
ciStatus: 'ci-status',
hasCI: true,
diff --git a/spec/javascripts/vue_mr_widget/mr_widget_options_spec.js b/spec/javascripts/vue_mr_widget/mr_widget_options_spec.js
index 30e0504e4e1..296be43f793 100644
--- a/spec/javascripts/vue_mr_widget/mr_widget_options_spec.js
+++ b/spec/javascripts/vue_mr_widget/mr_widget_options_spec.js
@@ -1,11 +1,14 @@
import Vue from 'vue';
+import MockAdapter from 'axios-mock-adapter';
+import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import axios from '~/lib/utils/axios_utils';
import mrWidgetOptions from '~/vue_merge_request_widget/mr_widget_options.vue';
import eventHub from '~/vue_merge_request_widget/event_hub';
import notify from '~/lib/utils/notify';
import { stateKey } from '~/vue_merge_request_widget/stores/state_maps';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
import mockData from './mock_data';
import { faviconDataUrl, overlayDataUrl } from '../lib/utils/mock_data';
+import { SUCCESS } from '~/vue_merge_request_widget/components/deployment/constants';
const returnPromise = data =>
new Promise(resolve => {
@@ -16,6 +19,7 @@ const returnPromise = data =>
describe('mrWidgetOptions', () => {
let vm;
+ let mock;
let MrWidgetOptions;
const COLLABORATION_MESSAGE = 'Allows commits from members who can merge to the target branch';
@@ -24,6 +28,13 @@ describe('mrWidgetOptions', () => {
// Prevent component mounting
delete mrWidgetOptions.el;
+ gl.mrWidgetData = { ...mockData };
+ gon.features = { asyncMrWidget: true };
+
+ mock = new MockAdapter(axios);
+ mock.onGet(mockData.merge_request_widget_path).reply(() => [200, { ...mockData }]);
+ mock.onGet(mockData.merge_request_cached_widget_path).reply(() => [200, { ...mockData }]);
+
MrWidgetOptions = Vue.extend(mrWidgetOptions);
vm = mountComponent(MrWidgetOptions, {
mrData: { ...mockData },
@@ -32,6 +43,9 @@ describe('mrWidgetOptions', () => {
afterEach(() => {
vm.$destroy();
+ mock.restore();
+ gl.mrWidgetData = {};
+ gon.features = {};
});
describe('data', () => {
@@ -277,7 +291,9 @@ describe('mrWidgetOptions', () => {
describe('fetchDeployments', () => {
it('should fetch deployments', done => {
- spyOn(vm.service, 'fetchDeployments').and.returnValue(returnPromise([{ id: 1 }]));
+ spyOn(vm.service, 'fetchDeployments').and.returnValue(
+ returnPromise([{ id: 1, status: SUCCESS }]),
+ );
vm.fetchPreMergeDeployments();
@@ -305,59 +321,61 @@ describe('mrWidgetOptions', () => {
});
describe('bindEventHubListeners', () => {
- it('should bind eventHub listeners', () => {
+ it('should bind eventHub listeners', done => {
spyOn(vm, 'checkStatus').and.returnValue(() => {});
spyOn(vm.service, 'checkStatus').and.returnValue(returnPromise(mockData));
spyOn(vm, 'fetchActionsContent');
spyOn(vm.mr, 'setData');
spyOn(vm, 'resumePolling');
spyOn(vm, 'stopPolling');
- spyOn(eventHub, '$on');
+ spyOn(eventHub, '$on').and.callThrough();
- vm.bindEventHubListeners();
+ setTimeout(() => {
+ eventHub.$emit('SetBranchRemoveFlag', ['flag']);
- eventHub.$emit('SetBranchRemoveFlag', ['flag']);
+ expect(vm.mr.isRemovingSourceBranch).toEqual('flag');
- expect(vm.mr.isRemovingSourceBranch).toEqual('flag');
+ eventHub.$emit('FailedToMerge');
- eventHub.$emit('FailedToMerge');
+ expect(vm.mr.state).toEqual('failedToMerge');
- expect(vm.mr.state).toEqual('failedToMerge');
+ eventHub.$emit('UpdateWidgetData', mockData);
- eventHub.$emit('UpdateWidgetData', mockData);
+ expect(vm.mr.setData).toHaveBeenCalledWith(mockData);
- expect(vm.mr.setData).toHaveBeenCalledWith(mockData);
+ eventHub.$emit('EnablePolling');
- eventHub.$emit('EnablePolling');
+ expect(vm.resumePolling).toHaveBeenCalled();
- expect(vm.resumePolling).toHaveBeenCalled();
+ eventHub.$emit('DisablePolling');
- eventHub.$emit('DisablePolling');
+ expect(vm.stopPolling).toHaveBeenCalled();
- expect(vm.stopPolling).toHaveBeenCalled();
+ const listenersWithServiceRequest = {
+ MRWidgetUpdateRequested: true,
+ FetchActionsContent: true,
+ };
- const listenersWithServiceRequest = {
- MRWidgetUpdateRequested: true,
- FetchActionsContent: true,
- };
+ const allArgs = eventHub.$on.calls.allArgs();
+ allArgs.forEach(params => {
+ const eventName = params[0];
+ const callback = params[1];
- const allArgs = eventHub.$on.calls.allArgs();
- allArgs.forEach(params => {
- const eventName = params[0];
- const callback = params[1];
+ if (listenersWithServiceRequest[eventName]) {
+ listenersWithServiceRequest[eventName] = callback;
+ }
+ });
- if (listenersWithServiceRequest[eventName]) {
- listenersWithServiceRequest[eventName] = callback;
- }
- });
+ listenersWithServiceRequest.MRWidgetUpdateRequested();
- listenersWithServiceRequest.MRWidgetUpdateRequested();
+ expect(vm.checkStatus).toHaveBeenCalled();
- expect(vm.checkStatus).toHaveBeenCalled();
+ listenersWithServiceRequest.FetchActionsContent();
- listenersWithServiceRequest.FetchActionsContent();
+ expect(vm.fetchActionsContent).toHaveBeenCalled();
- expect(vm.fetchActionsContent).toHaveBeenCalled();
+ done();
+ });
});
});
@@ -448,22 +466,30 @@ describe('mrWidgetOptions', () => {
});
describe('resumePolling', () => {
- it('should call stopTimer on pollingInterval', () => {
- spyOn(vm.pollingInterval, 'resume');
+ it('should call stopTimer on pollingInterval', done => {
+ setTimeout(() => {
+ spyOn(vm.pollingInterval, 'resume');
- vm.resumePolling();
+ vm.resumePolling();
- expect(vm.pollingInterval.resume).toHaveBeenCalled();
+ expect(vm.pollingInterval.resume).toHaveBeenCalled();
+
+ done();
+ });
});
});
describe('stopPolling', () => {
- it('should call stopTimer on pollingInterval', () => {
- spyOn(vm.pollingInterval, 'stopTimer');
+ it('should call stopTimer on pollingInterval', done => {
+ setTimeout(() => {
+ spyOn(vm.pollingInterval, 'stopTimer');
+
+ vm.stopPolling();
- vm.stopPolling();
+ expect(vm.pollingInterval.stopTimer).toHaveBeenCalled();
- expect(vm.pollingInterval.stopTimer).toHaveBeenCalled();
+ done();
+ });
});
});
});
@@ -554,7 +580,7 @@ describe('mrWidgetOptions', () => {
deployed_at: '2017-03-22T22:44:42.258Z',
deployed_at_formatted: 'Mar 22, 2017 10:44pm',
changes,
- status: 'success',
+ status: SUCCESS,
};
beforeEach(done => {
diff --git a/spec/javascripts/vue_mr_widget/stores/artifacts_list/actions_spec.js b/spec/javascripts/vue_mr_widget/stores/artifacts_list/actions_spec.js
index 4c4bebcb4cd..5070e74b5d2 100644
--- a/spec/javascripts/vue_mr_widget/stores/artifacts_list/actions_spec.js
+++ b/spec/javascripts/vue_mr_widget/stores/artifacts_list/actions_spec.js
@@ -1,4 +1,6 @@
import MockAdapter from 'axios-mock-adapter';
+import testAction from 'spec/helpers/vuex_action_helper';
+import { TEST_HOST } from 'spec/test_constants';
import axios from '~/lib/utils/axios_utils';
import {
setEndpoint,
@@ -11,8 +13,6 @@ import {
} from '~/vue_merge_request_widget/stores/artifacts_list/actions';
import state from '~/vue_merge_request_widget/stores/artifacts_list/state';
import * as types from '~/vue_merge_request_widget/stores/artifacts_list/mutation_types';
-import testAction from 'spec/helpers/vuex_action_helper';
-import { TEST_HOST } from 'spec/test_constants';
describe('Artifacts App Store Actions', () => {
let mockedState;
diff --git a/spec/javascripts/vue_shared/components/bar_chart_spec.js b/spec/javascripts/vue_shared/components/bar_chart_spec.js
index 8f753876e44..8f673c146ec 100644
--- a/spec/javascripts/vue_shared/components/bar_chart_spec.js
+++ b/spec/javascripts/vue_shared/components/bar_chart_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import BarChart from '~/vue_shared/components/bar_chart.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import BarChart from '~/vue_shared/components/bar_chart.vue';
function getRandomArbitrary(min, max) {
return Math.random() * (max - min) + min;
diff --git a/spec/javascripts/vue_shared/components/ci_badge_link_spec.js b/spec/javascripts/vue_shared/components/ci_badge_link_spec.js
index 42481f8c334..367e07d3ad3 100644
--- a/spec/javascripts/vue_shared/components/ci_badge_link_spec.js
+++ b/spec/javascripts/vue_shared/components/ci_badge_link_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import ciBadge from '~/vue_shared/components/ci_badge_link.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import ciBadge from '~/vue_shared/components/ci_badge_link.vue';
describe('CI Badge Link Component', () => {
let CIBadge;
diff --git a/spec/javascripts/vue_shared/components/ci_icon_spec.js b/spec/javascripts/vue_shared/components/ci_icon_spec.js
index b59a7d7544f..9486d7d4f23 100644
--- a/spec/javascripts/vue_shared/components/ci_icon_spec.js
+++ b/spec/javascripts/vue_shared/components/ci_icon_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import ciIcon from '~/vue_shared/components/ci_icon.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import ciIcon from '~/vue_shared/components/ci_icon.vue';
describe('CI Icon component', () => {
const Component = Vue.extend(ciIcon);
diff --git a/spec/javascripts/vue_shared/components/clipboard_button_spec.js b/spec/javascripts/vue_shared/components/clipboard_button_spec.js
deleted file mode 100644
index 29a76574b89..00000000000
--- a/spec/javascripts/vue_shared/components/clipboard_button_spec.js
+++ /dev/null
@@ -1,51 +0,0 @@
-import Vue from 'vue';
-import clipboardButton from '~/vue_shared/components/clipboard_button.vue';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
-
-describe('clipboard button', () => {
- const Component = Vue.extend(clipboardButton);
- let vm;
-
- afterEach(() => {
- vm.$destroy();
- });
-
- describe('without gfm', () => {
- beforeEach(() => {
- vm = mountComponent(Component, {
- text: 'copy me',
- title: 'Copy this value',
- cssClass: 'btn-danger',
- });
- });
-
- it('renders a button for clipboard', () => {
- expect(vm.$el.tagName).toEqual('BUTTON');
- expect(vm.$el.getAttribute('data-clipboard-text')).toEqual('copy me');
- expect(vm.$el).toHaveSpriteIcon('duplicate');
- });
-
- it('should have a tooltip with default values', () => {
- expect(vm.$el.getAttribute('data-original-title')).toEqual('Copy this value');
- });
-
- it('should render provided classname', () => {
- expect(vm.$el.classList).toContain('btn-danger');
- });
- });
-
- describe('with gfm', () => {
- it('sets data-clipboard-text with gfm', () => {
- vm = mountComponent(Component, {
- text: 'copy me',
- gfm: '`path/to/file`',
- title: 'Copy this value',
- cssClass: 'btn-danger',
- });
-
- expect(vm.$el.getAttribute('data-clipboard-text')).toEqual(
- '{"text":"copy me","gfm":"`path/to/file`"}',
- );
- });
- });
-});
diff --git a/spec/javascripts/vue_shared/components/content_viewer/content_viewer_spec.js b/spec/javascripts/vue_shared/components/content_viewer/content_viewer_spec.js
index 16997e9dc67..e3f6609f128 100644
--- a/spec/javascripts/vue_shared/components/content_viewer/content_viewer_spec.js
+++ b/spec/javascripts/vue_shared/components/content_viewer/content_viewer_spec.js
@@ -1,9 +1,9 @@
import Vue from 'vue';
import MockAdapter from 'axios-mock-adapter';
-import axios from '~/lib/utils/axios_utils';
-import contentViewer from '~/vue_shared/components/content_viewer/content_viewer.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
import { GREEN_BOX_IMAGE_URL } from 'spec/test_constants';
+import axios from '~/lib/utils/axios_utils';
+import contentViewer from '~/vue_shared/components/content_viewer/content_viewer.vue';
import '~/behaviors/markdown/render_gfm';
describe('ContentViewer', () => {
diff --git a/spec/javascripts/vue_shared/components/deprecated_modal_2_spec.js b/spec/javascripts/vue_shared/components/deprecated_modal_2_spec.js
index 64fb984d9fc..e031583b43a 100644
--- a/spec/javascripts/vue_shared/components/deprecated_modal_2_spec.js
+++ b/spec/javascripts/vue_shared/components/deprecated_modal_2_spec.js
@@ -1,7 +1,7 @@
import $ from 'jquery';
import Vue from 'vue';
-import DeprecatedModal2 from '~/vue_shared/components/deprecated_modal_2.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import DeprecatedModal2 from '~/vue_shared/components/deprecated_modal_2.vue';
const modalComponent = Vue.extend(DeprecatedModal2);
diff --git a/spec/javascripts/vue_shared/components/deprecated_modal_spec.js b/spec/javascripts/vue_shared/components/deprecated_modal_spec.js
index be75be92158..d6c10e32794 100644
--- a/spec/javascripts/vue_shared/components/deprecated_modal_spec.js
+++ b/spec/javascripts/vue_shared/components/deprecated_modal_spec.js
@@ -1,7 +1,7 @@
import $ from 'jquery';
import Vue from 'vue';
-import DeprecatedModal from '~/vue_shared/components/deprecated_modal.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import DeprecatedModal from '~/vue_shared/components/deprecated_modal.vue';
const modalComponent = Vue.extend(DeprecatedModal);
diff --git a/spec/javascripts/vue_shared/components/diff_viewer/diff_viewer_spec.js b/spec/javascripts/vue_shared/components/diff_viewer/diff_viewer_spec.js
index 1acd6b3ebe7..c743f1f6ad7 100644
--- a/spec/javascripts/vue_shared/components/diff_viewer/diff_viewer_spec.js
+++ b/spec/javascripts/vue_shared/components/diff_viewer/diff_viewer_spec.js
@@ -1,8 +1,8 @@
import Vue from 'vue';
-import diffViewer from '~/vue_shared/components/diff_viewer/diff_viewer.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
import { GREEN_BOX_IMAGE_URL, RED_BOX_IMAGE_URL } from 'spec/test_constants';
+import diffViewer from '~/vue_shared/components/diff_viewer/diff_viewer.vue';
describe('DiffViewer', () => {
const requiredProps = {
diff --git a/spec/javascripts/vue_shared/components/diff_viewer/viewers/image_diff_viewer_spec.js b/spec/javascripts/vue_shared/components/diff_viewer/viewers/image_diff_viewer_spec.js
index 0cb26d5000b..81f194395ef 100644
--- a/spec/javascripts/vue_shared/components/diff_viewer/viewers/image_diff_viewer_spec.js
+++ b/spec/javascripts/vue_shared/components/diff_viewer/viewers/image_diff_viewer_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
-import imageDiffViewer from '~/vue_shared/components/diff_viewer/viewers/image_diff_viewer.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
import { GREEN_BOX_IMAGE_URL, RED_BOX_IMAGE_URL } from 'spec/test_constants';
+import imageDiffViewer from '~/vue_shared/components/diff_viewer/viewers/image_diff_viewer.vue';
describe('ImageDiffViewer', () => {
const requiredProps = {
diff --git a/spec/javascripts/vue_shared/components/dropdown/dropdown_button_spec.js b/spec/javascripts/vue_shared/components/dropdown/dropdown_button_spec.js
index 2fc4943de30..b00fa785a0e 100644
--- a/spec/javascripts/vue_shared/components/dropdown/dropdown_button_spec.js
+++ b/spec/javascripts/vue_shared/components/dropdown/dropdown_button_spec.js
@@ -1,8 +1,7 @@
import Vue from 'vue';
-import dropdownButtonComponent from '~/vue_shared/components/dropdown/dropdown_button.vue';
-
import { mountComponentWithSlots } from 'spec/helpers/vue_mount_component_helper';
+import dropdownButtonComponent from '~/vue_shared/components/dropdown/dropdown_button.vue';
const defaultLabel = 'Select';
const customLabel = 'Select project';
diff --git a/spec/javascripts/vue_shared/components/dropdown/dropdown_hidden_input_spec.js b/spec/javascripts/vue_shared/components/dropdown/dropdown_hidden_input_spec.js
index 445ab0cb40e..402de2a8788 100644
--- a/spec/javascripts/vue_shared/components/dropdown/dropdown_hidden_input_spec.js
+++ b/spec/javascripts/vue_shared/components/dropdown/dropdown_hidden_input_spec.js
@@ -1,8 +1,7 @@
import Vue from 'vue';
-import dropdownHiddenInputComponent from '~/vue_shared/components/dropdown/dropdown_hidden_input.vue';
-
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import dropdownHiddenInputComponent from '~/vue_shared/components/dropdown/dropdown_hidden_input.vue';
import { mockLabels } from './mock_data';
diff --git a/spec/javascripts/vue_shared/components/dropdown/dropdown_search_input_spec.js b/spec/javascripts/vue_shared/components/dropdown/dropdown_search_input_spec.js
deleted file mode 100644
index 551520721e5..00000000000
--- a/spec/javascripts/vue_shared/components/dropdown/dropdown_search_input_spec.js
+++ /dev/null
@@ -1,52 +0,0 @@
-import Vue from 'vue';
-
-import dropdownSearchInputComponent from '~/vue_shared/components/dropdown/dropdown_search_input.vue';
-
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
-
-const componentConfig = {
- placeholderText: 'Search something',
-};
-
-const createComponent = (config = componentConfig) => {
- const Component = Vue.extend(dropdownSearchInputComponent);
-
- return mountComponent(Component, config);
-};
-
-describe('DropdownSearchInputComponent', () => {
- let vm;
-
- beforeEach(() => {
- vm = createComponent();
- });
-
- afterEach(() => {
- vm.$destroy();
- });
-
- describe('template', () => {
- it('renders input element with type `search`', () => {
- const inputEl = vm.$el.querySelector('input.dropdown-input-field');
-
- expect(inputEl).not.toBeNull();
- expect(inputEl.getAttribute('type')).toBe('search');
- });
-
- it('renders search icon element', () => {
- expect(vm.$el.querySelector('.fa-search.dropdown-input-search')).not.toBeNull();
- });
-
- it('renders clear search icon element', () => {
- expect(
- vm.$el.querySelector('.fa-times.dropdown-input-clear.js-dropdown-input-clear'),
- ).not.toBeNull();
- });
-
- it('displays custom placeholder text', () => {
- const inputEl = vm.$el.querySelector('input.dropdown-input-field');
-
- expect(inputEl.getAttribute('placeholder')).toBe(componentConfig.placeholderText);
- });
- });
-});
diff --git a/spec/javascripts/vue_shared/components/expand_button_spec.js b/spec/javascripts/vue_shared/components/expand_button_spec.js
deleted file mode 100644
index 2af4abc299a..00000000000
--- a/spec/javascripts/vue_shared/components/expand_button_spec.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import Vue from 'vue';
-import expandButton from '~/vue_shared/components/expand_button.vue';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
-
-describe('expand button', () => {
- const Component = Vue.extend(expandButton);
- let vm;
-
- beforeEach(() => {
- vm = mountComponent(Component, {
- slots: {
- expanded: '<p>Expanded!</p>',
- },
- });
- });
-
- afterEach(() => {
- vm.$destroy();
- });
-
- it('renders a collapsed button', () => {
- expect(vm.$children[0].iconTestClass).toEqual('ic-ellipsis_h');
- });
-
- it('hides expander on click', done => {
- vm.$el.querySelector('button').click();
- vm.$nextTick(() => {
- expect(vm.$el.querySelector('button').getAttribute('style')).toEqual('display: none;');
- done();
- });
- });
-});
diff --git a/spec/javascripts/vue_shared/components/file_finder/index_spec.js b/spec/javascripts/vue_shared/components/file_finder/index_spec.js
index bae4741f652..7ded228d3ea 100644
--- a/spec/javascripts/vue_shared/components/file_finder/index_spec.js
+++ b/spec/javascripts/vue_shared/components/file_finder/index_spec.js
@@ -1,9 +1,9 @@
import Vue from 'vue';
import Mousetrap from 'mousetrap';
-import FindFileComponent from '~/vue_shared/components/file_finder/index.vue';
-import { UP_KEY_CODE, DOWN_KEY_CODE, ENTER_KEY_CODE, ESC_KEY_CODE } from '~/lib/utils/keycodes';
import { file } from 'spec/ide/helpers';
import timeoutPromise from 'spec/helpers/set_timeout_promise_helper';
+import FindFileComponent from '~/vue_shared/components/file_finder/index.vue';
+import { UP_KEY_CODE, DOWN_KEY_CODE, ENTER_KEY_CODE, ESC_KEY_CODE } from '~/lib/utils/keycodes';
describe('File finder item spec', () => {
const Component = Vue.extend(FindFileComponent);
diff --git a/spec/javascripts/vue_shared/components/file_finder/item_spec.js b/spec/javascripts/vue_shared/components/file_finder/item_spec.js
index c1511643a9d..e18d0a46223 100644
--- a/spec/javascripts/vue_shared/components/file_finder/item_spec.js
+++ b/spec/javascripts/vue_shared/components/file_finder/item_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import ItemComponent from '~/vue_shared/components/file_finder/item.vue';
import { file } from 'spec/ide/helpers';
+import ItemComponent from '~/vue_shared/components/file_finder/item.vue';
import createComponent from '../../../helpers/vue_mount_component_helper';
describe('File finder item spec', () => {
diff --git a/spec/javascripts/vue_shared/components/file_row_spec.js b/spec/javascripts/vue_shared/components/file_row_spec.js
index 7da69e3fa84..2d80099fafe 100644
--- a/spec/javascripts/vue_shared/components/file_row_spec.js
+++ b/spec/javascripts/vue_shared/components/file_row_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
+import { file } from 'spec/ide/helpers';
import FileRow from '~/vue_shared/components/file_row.vue';
import FileRowExtra from '~/ide/components/file_row_extra.vue';
-import { file } from 'spec/ide/helpers';
import mountComponent from '../../helpers/vue_mount_component_helper';
describe('File row component', () => {
diff --git a/spec/javascripts/vue_shared/components/filtered_search_dropdown_spec.js b/spec/javascripts/vue_shared/components/filtered_search_dropdown_spec.js
index 3d251426b5a..0bb4a04557b 100644
--- a/spec/javascripts/vue_shared/components/filtered_search_dropdown_spec.js
+++ b/spec/javascripts/vue_shared/components/filtered_search_dropdown_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import component from '~/vue_shared/components/filtered_search_dropdown.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import component from '~/vue_shared/components/filtered_search_dropdown.vue';
describe('Filtered search dropdown', () => {
const Component = Vue.extend(component);
diff --git a/spec/javascripts/vue_shared/components/header_ci_component_spec.js b/spec/javascripts/vue_shared/components/header_ci_component_spec.js
index 2b059e5e9f4..7bd5e5a64b1 100644
--- a/spec/javascripts/vue_shared/components/header_ci_component_spec.js
+++ b/spec/javascripts/vue_shared/components/header_ci_component_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import headerCi from '~/vue_shared/components/header_ci_component.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import headerCi from '~/vue_shared/components/header_ci_component.vue';
describe('Header CI Component', () => {
let HeaderCi;
diff --git a/spec/javascripts/vue_shared/components/icon_spec.js b/spec/javascripts/vue_shared/components/icon_spec.js
index ecaef414464..5a3e483fb03 100644
--- a/spec/javascripts/vue_shared/components/icon_spec.js
+++ b/spec/javascripts/vue_shared/components/icon_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
-import Icon from '~/vue_shared/components/icon.vue';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
import { mount } from '@vue/test-utils';
+import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import Icon from '~/vue_shared/components/icon.vue';
describe('Sprite Icon Component', function() {
describe('Initialization', function() {
diff --git a/spec/javascripts/vue_shared/components/loading_button_spec.js b/spec/javascripts/vue_shared/components/loading_button_spec.js
index db89d4a934c..6b03c354e01 100644
--- a/spec/javascripts/vue_shared/components/loading_button_spec.js
+++ b/spec/javascripts/vue_shared/components/loading_button_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import loadingButton from '~/vue_shared/components/loading_button.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import loadingButton from '~/vue_shared/components/loading_button.vue';
const LABEL = 'Hello';
diff --git a/spec/javascripts/vue_shared/components/markdown/field_spec.js b/spec/javascripts/vue_shared/components/markdown/field_spec.js
deleted file mode 100644
index da984175f9f..00000000000
--- a/spec/javascripts/vue_shared/components/markdown/field_spec.js
+++ /dev/null
@@ -1,173 +0,0 @@
-import $ from 'jquery';
-import '~/behaviors/markdown/render_gfm';
-import Vue from 'vue';
-import AxiosMockAdapter from 'axios-mock-adapter';
-import axios from '~/lib/utils/axios_utils';
-import fieldComponent from '~/vue_shared/components/markdown/field.vue';
-import { TEST_HOST } from 'spec/test_constants';
-
-function assertMarkdownTabs(isWrite, writeLink, previewLink, vm) {
- expect(writeLink.parentNode.classList.contains('active')).toEqual(isWrite);
- expect(previewLink.parentNode.classList.contains('active')).toEqual(!isWrite);
- expect(vm.$el.querySelector('.md-preview-holder').style.display).toEqual(isWrite ? 'none' : '');
-}
-
-describe('Markdown field component', () => {
- const markdownPreviewPath = `${TEST_HOST}/preview`;
- const markdownDocsPath = `${TEST_HOST}/docs`;
- let axiosMock;
- let vm;
-
- beforeEach(done => {
- axiosMock = new AxiosMockAdapter(axios);
- vm = new Vue({
- components: {
- fieldComponent,
- },
- data() {
- return {
- text: 'testing\n123',
- };
- },
- template: `
- <field-component
- markdown-preview-path="${markdownPreviewPath}"
- markdown-docs-path="${markdownDocsPath}"
- >
- <textarea
- slot="textarea"
- v-model="text">
- </textarea>
- </field-component>
- `,
- }).$mount();
-
- Vue.nextTick(done);
- });
-
- afterEach(() => {
- axiosMock.restore();
- });
-
- describe('mounted', () => {
- const previewHTML = '<p>markdown preview</p>';
-
- it('renders textarea inside backdrop', () => {
- expect(vm.$el.querySelector('.zen-backdrop textarea')).not.toBeNull();
- });
-
- describe('markdown preview', () => {
- let previewLink;
- let writeLink;
-
- beforeEach(() => {
- axiosMock.onPost(markdownPreviewPath).replyOnce(200, { body: previewHTML });
-
- previewLink = vm.$el.querySelector('.nav-links .js-preview-link');
- writeLink = vm.$el.querySelector('.nav-links .js-write-link');
- });
-
- it('sets preview link as active', done => {
- previewLink.click();
-
- Vue.nextTick(() => {
- expect(previewLink.parentNode.classList.contains('active')).toBeTruthy();
-
- done();
- });
- });
-
- it('shows preview loading text', done => {
- previewLink.click();
-
- Vue.nextTick(() => {
- expect(vm.$el.querySelector('.md-preview-holder').textContent.trim()).toContain(
- 'Loading…',
- );
-
- done();
- });
- });
-
- it('renders markdown preview', done => {
- previewLink.click();
-
- setTimeout(() => {
- expect(vm.$el.querySelector('.md-preview-holder').innerHTML).toContain(previewHTML);
-
- done();
- });
- });
-
- it('renders GFM with jQuery', done => {
- spyOn($.fn, 'renderGFM');
-
- previewLink.click();
-
- setTimeout(() => {
- expect($.fn.renderGFM).toHaveBeenCalled();
-
- done();
- }, 0);
- });
-
- it('clicking already active write or preview link does nothing', done => {
- writeLink.click();
- Vue.nextTick()
- .then(() => assertMarkdownTabs(true, writeLink, previewLink, vm))
- .then(() => writeLink.click())
- .then(() => Vue.nextTick())
- .then(() => assertMarkdownTabs(true, writeLink, previewLink, vm))
- .then(() => previewLink.click())
- .then(() => Vue.nextTick())
- .then(() => assertMarkdownTabs(false, writeLink, previewLink, vm))
- .then(() => previewLink.click())
- .then(() => Vue.nextTick())
- .then(() => assertMarkdownTabs(false, writeLink, previewLink, vm))
- .then(done)
- .catch(done.fail);
- });
- });
-
- describe('markdown buttons', () => {
- it('converts single words', done => {
- const textarea = vm.$el.querySelector('textarea');
-
- textarea.setSelectionRange(0, 7);
- vm.$el.querySelector('.js-md').click();
-
- Vue.nextTick(() => {
- expect(textarea.value).toContain('**testing**');
-
- done();
- });
- });
-
- it('converts a line', done => {
- const textarea = vm.$el.querySelector('textarea');
-
- textarea.setSelectionRange(0, 0);
- vm.$el.querySelectorAll('.js-md')[5].click();
-
- Vue.nextTick(() => {
- expect(textarea.value).toContain('* testing');
-
- done();
- });
- });
-
- it('converts multiple lines', done => {
- const textarea = vm.$el.querySelector('textarea');
-
- textarea.setSelectionRange(0, 50);
- vm.$el.querySelectorAll('.js-md')[5].click();
-
- Vue.nextTick(() => {
- expect(textarea.value).toContain('* testing\n* 123');
-
- done();
- });
- });
- });
- });
-});
diff --git a/spec/javascripts/vue_shared/components/markdown/toolbar_spec.js b/spec/javascripts/vue_shared/components/markdown/toolbar_spec.js
index e6c7abd9d3b..288eb40cc76 100644
--- a/spec/javascripts/vue_shared/components/markdown/toolbar_spec.js
+++ b/spec/javascripts/vue_shared/components/markdown/toolbar_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import toolbar from '~/vue_shared/components/markdown/toolbar.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import toolbar from '~/vue_shared/components/markdown/toolbar.vue';
describe('toolbar', () => {
let vm;
diff --git a/spec/javascripts/vue_shared/components/memory_graph_spec.js b/spec/javascripts/vue_shared/components/memory_graph_spec.js
deleted file mode 100644
index 78c3ae3ddb3..00000000000
--- a/spec/javascripts/vue_shared/components/memory_graph_spec.js
+++ /dev/null
@@ -1,131 +0,0 @@
-import Vue from 'vue';
-import MemoryGraph from '~/vue_shared/components/memory_graph.vue';
-import { mockMetrics, mockMedian, mockMedianIndex } from './mock_data';
-
-const defaultHeight = '25';
-const defaultWidth = '100';
-
-const createComponent = () => {
- const Component = Vue.extend(MemoryGraph);
-
- return new Component({
- el: document.createElement('div'),
- propsData: {
- metrics: [],
- deploymentTime: 0,
- width: '',
- height: '',
- pathD: '',
- pathViewBox: '',
- dotX: '',
- dotY: '',
- },
- });
-};
-
-describe('MemoryGraph', () => {
- let vm;
- let el;
-
- beforeEach(() => {
- vm = createComponent();
- el = vm.$el;
- });
-
- describe('data', () => {
- it('should have default data', () => {
- const data = MemoryGraph.data();
- const dataValidator = (dataItem, expectedType, defaultVal) => {
- expect(typeof dataItem).toBe(expectedType);
- expect(dataItem).toBe(defaultVal);
- };
-
- dataValidator(data.pathD, 'string', '');
- dataValidator(data.pathViewBox, 'string', '');
- dataValidator(data.dotX, 'string', '');
- dataValidator(data.dotY, 'string', '');
- });
- });
-
- describe('computed', () => {
- describe('getFormattedMedian', () => {
- it('should show human readable median value based on provided median timestamp', () => {
- vm.deploymentTime = mockMedian;
- const formattedMedian = vm.getFormattedMedian;
-
- expect(formattedMedian.indexOf('Deployed')).toBeGreaterThan(-1);
- expect(formattedMedian.indexOf('ago')).toBeGreaterThan(-1);
- });
- });
- });
-
- describe('methods', () => {
- describe('getMedianMetricIndex', () => {
- it('should return index of closest metric timestamp to that of median', () => {
- const matchingIndex = vm.getMedianMetricIndex(mockMedian, mockMetrics);
-
- expect(matchingIndex).toBe(mockMedianIndex);
- });
- });
-
- describe('getGraphPlotValues', () => {
- it('should return Object containing values to plot graph', () => {
- const plotValues = vm.getGraphPlotValues(mockMedian, mockMetrics);
-
- expect(plotValues.pathD).toBeDefined();
- expect(Array.isArray(plotValues.pathD)).toBeTruthy();
-
- expect(plotValues.pathViewBox).toBeDefined();
- expect(typeof plotValues.pathViewBox).toBe('object');
-
- expect(plotValues.dotX).toBeDefined();
- expect(typeof plotValues.dotX).toBe('number');
-
- expect(plotValues.dotY).toBeDefined();
- expect(typeof plotValues.dotY).toBe('number');
- });
- });
- });
-
- describe('template', () => {
- it('should render template elements correctly', () => {
- expect(el.classList.contains('memory-graph-container')).toBeTruthy();
- expect(el.querySelector('svg')).toBeDefined();
- });
-
- it('should render graph when renderGraph is called internally', done => {
- const { pathD, pathViewBox, dotX, dotY } = vm.getGraphPlotValues(mockMedian, mockMetrics);
- vm.height = defaultHeight;
- vm.width = defaultWidth;
- vm.pathD = `M ${pathD}`;
- vm.pathViewBox = `0 0 ${pathViewBox.lineWidth} ${pathViewBox.diff}`;
- vm.dotX = dotX;
- vm.dotY = dotY;
-
- Vue.nextTick(() => {
- const svgEl = el.querySelector('svg');
-
- expect(svgEl).toBeDefined();
- expect(svgEl.getAttribute('height')).toBe(defaultHeight);
- expect(svgEl.getAttribute('width')).toBe(defaultWidth);
-
- const pathEl = el.querySelector('path');
-
- expect(pathEl).toBeDefined();
- expect(pathEl.getAttribute('d')).toBe(`M ${pathD}`);
- expect(pathEl.getAttribute('viewBox')).toBe(
- `0 0 ${pathViewBox.lineWidth} ${pathViewBox.diff}`,
- );
-
- const circleEl = el.querySelector('circle');
-
- expect(circleEl).toBeDefined();
- expect(circleEl.getAttribute('r')).toBe('1.5');
- expect(circleEl.getAttribute('transform')).toBe('translate(0 -1)');
- expect(circleEl.getAttribute('cx')).toBe(`${dotX}`);
- expect(circleEl.getAttribute('cy')).toBe(`${dotY}`);
- done();
- });
- });
- });
-});
diff --git a/spec/javascripts/vue_shared/components/mock_data.js b/spec/javascripts/vue_shared/components/mock_data.js
deleted file mode 100644
index 15b56c58c33..00000000000
--- a/spec/javascripts/vue_shared/components/mock_data.js
+++ /dev/null
@@ -1,67 +0,0 @@
-export const mockMetrics = [
- [1493716685, '4.30859375'],
- [1493716745, '4.30859375'],
- [1493716805, '4.30859375'],
- [1493716865, '4.30859375'],
- [1493716925, '4.30859375'],
- [1493716985, '4.30859375'],
- [1493717045, '4.30859375'],
- [1493717105, '4.30859375'],
- [1493717165, '4.30859375'],
- [1493717225, '4.30859375'],
- [1493717285, '4.30859375'],
- [1493717345, '4.30859375'],
- [1493717405, '4.30859375'],
- [1493717465, '4.30859375'],
- [1493717525, '4.30859375'],
- [1493717585, '4.30859375'],
- [1493717645, '4.30859375'],
- [1493717705, '4.30859375'],
- [1493717765, '4.30859375'],
- [1493717825, '4.30859375'],
- [1493717885, '4.30859375'],
- [1493717945, '4.30859375'],
- [1493718005, '4.30859375'],
- [1493718065, '4.30859375'],
- [1493718125, '4.30859375'],
- [1493718185, '4.30859375'],
- [1493718245, '4.30859375'],
- [1493718305, '4.234375'],
- [1493718365, '4.234375'],
- [1493718425, '4.234375'],
- [1493718485, '4.234375'],
- [1493718545, '4.243489583333333'],
- [1493718605, '4.2109375'],
- [1493718665, '4.2109375'],
- [1493718725, '4.2109375'],
- [1493718785, '4.26171875'],
- [1493718845, '4.26171875'],
- [1493718905, '4.26171875'],
- [1493718965, '4.26171875'],
- [1493719025, '4.26171875'],
- [1493719085, '4.26171875'],
- [1493719145, '4.26171875'],
- [1493719205, '4.26171875'],
- [1493719265, '4.26171875'],
- [1493719325, '4.26171875'],
- [1493719385, '4.26171875'],
- [1493719445, '4.26171875'],
- [1493719505, '4.26171875'],
- [1493719565, '4.26171875'],
- [1493719625, '4.26171875'],
- [1493719685, '4.26171875'],
- [1493719745, '4.26171875'],
- [1493719805, '4.26171875'],
- [1493719865, '4.26171875'],
- [1493719925, '4.26171875'],
- [1493719985, '4.26171875'],
- [1493720045, '4.26171875'],
- [1493720105, '4.26171875'],
- [1493720165, '4.26171875'],
- [1493720225, '4.26171875'],
- [1493720285, '4.26171875'],
-];
-
-export const mockMedian = 1493718485;
-
-export const mockMedianIndex = 30;
diff --git a/spec/javascripts/vue_shared/components/navigation_tabs_spec.js b/spec/javascripts/vue_shared/components/navigation_tabs_spec.js
index 462bfc10664..beb980a6556 100644
--- a/spec/javascripts/vue_shared/components/navigation_tabs_spec.js
+++ b/spec/javascripts/vue_shared/components/navigation_tabs_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import navigationTabs from '~/vue_shared/components/navigation_tabs.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import navigationTabs from '~/vue_shared/components/navigation_tabs.vue';
describe('navigation tabs component', () => {
let vm;
diff --git a/spec/javascripts/vue_shared/components/pagination/graphql_pagination_spec.js b/spec/javascripts/vue_shared/components/pagination/graphql_pagination_spec.js
index 7445da6cdee..204c0decfd8 100644
--- a/spec/javascripts/vue_shared/components/pagination/graphql_pagination_spec.js
+++ b/spec/javascripts/vue_shared/components/pagination/graphql_pagination_spec.js
@@ -1,14 +1,18 @@
-import { shallowMount } from '@vue/test-utils';
+import { shallowMount, createLocalVue } from '@vue/test-utils';
import GraphqlPagination from '~/vue_shared/components/pagination/graphql_pagination.vue';
+const localVue = createLocalVue();
+
describe('Graphql Pagination component', () => {
let wrapper;
function factory({ hasNextPage = true, hasPreviousPage = true }) {
- wrapper = shallowMount(GraphqlPagination, {
+ wrapper = shallowMount(localVue.extend(GraphqlPagination), {
propsData: {
hasNextPage,
hasPreviousPage,
},
+ sync: false,
+ localVue,
});
}
diff --git a/spec/javascripts/vue_shared/components/panel_resizer_spec.js b/spec/javascripts/vue_shared/components/panel_resizer_spec.js
index caabe3aa260..d65ee8eeb2d 100644
--- a/spec/javascripts/vue_shared/components/panel_resizer_spec.js
+++ b/spec/javascripts/vue_shared/components/panel_resizer_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import panelResizer from '~/vue_shared/components/panel_resizer.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import panelResizer from '~/vue_shared/components/panel_resizer.vue';
describe('Panel Resizer component', () => {
let vm;
diff --git a/spec/javascripts/vue_shared/components/pikaday_spec.js b/spec/javascripts/vue_shared/components/pikaday_spec.js
index 61f05e7a230..b787ba7596f 100644
--- a/spec/javascripts/vue_shared/components/pikaday_spec.js
+++ b/spec/javascripts/vue_shared/components/pikaday_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import datePicker from '~/vue_shared/components/pikaday.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import datePicker from '~/vue_shared/components/pikaday.vue';
describe('datePicker', () => {
let vm;
diff --git a/spec/javascripts/vue_shared/components/project_avatar/default_spec.js b/spec/javascripts/vue_shared/components/project_avatar/default_spec.js
index 5fed3f4b892..2ec19ebf80e 100644
--- a/spec/javascripts/vue_shared/components/project_avatar/default_spec.js
+++ b/spec/javascripts/vue_shared/components/project_avatar/default_spec.js
@@ -1,9 +1,9 @@
import Vue from 'vue';
-import ProjectAvatarDefault from '~/vue_shared/components/project_avatar/default.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
import { projectData } from 'spec/ide/mock_data';
-import { getFirstCharacterCapitalized } from '~/lib/utils/text_utility';
import { TEST_HOST } from 'spec/test_constants';
+import { getFirstCharacterCapitalized } from '~/lib/utils/text_utility';
+import ProjectAvatarDefault from '~/vue_shared/components/project_avatar/default.vue';
describe('ProjectAvatarDefault component', () => {
const Component = Vue.extend(ProjectAvatarDefault);
diff --git a/spec/javascripts/vue_shared/components/project_selector/project_list_item_spec.js b/spec/javascripts/vue_shared/components/project_selector/project_list_item_spec.js
index 47964a1702a..271ae1b645f 100644
--- a/spec/javascripts/vue_shared/components/project_selector/project_list_item_spec.js
+++ b/spec/javascripts/vue_shared/components/project_selector/project_list_item_spec.js
@@ -1,6 +1,6 @@
-import ProjectListItem from '~/vue_shared/components/project_selector/project_list_item.vue';
import { shallowMount, createLocalVue } from '@vue/test-utils';
import { trimText } from 'spec/helpers/text_helper';
+import ProjectListItem from '~/vue_shared/components/project_selector/project_list_item.vue';
const localVue = createLocalVue();
diff --git a/spec/javascripts/vue_shared/components/project_selector/project_selector_spec.js b/spec/javascripts/vue_shared/components/project_selector/project_selector_spec.js
index 323a0f03017..6815da31436 100644
--- a/spec/javascripts/vue_shared/components/project_selector/project_selector_spec.js
+++ b/spec/javascripts/vue_shared/components/project_selector/project_selector_spec.js
@@ -1,11 +1,11 @@
import Vue from 'vue';
import _ from 'underscore';
-import ProjectSelector from '~/vue_shared/components/project_selector/project_selector.vue';
-import ProjectListItem from '~/vue_shared/components/project_selector/project_list_item.vue';
import { GlSearchBoxByType, GlInfiniteScroll } from '@gitlab/ui';
import { mount, createLocalVue } from '@vue/test-utils';
import { trimText } from 'spec/helpers/text_helper';
+import ProjectListItem from '~/vue_shared/components/project_selector/project_list_item.vue';
+import ProjectSelector from '~/vue_shared/components/project_selector/project_selector.vue';
const localVue = createLocalVue();
diff --git a/spec/javascripts/vue_shared/components/smart_virtual_list_spec.js b/spec/javascripts/vue_shared/components/smart_virtual_list_spec.js
index e723fead65e..47ebdc505c9 100644
--- a/spec/javascripts/vue_shared/components/smart_virtual_list_spec.js
+++ b/spec/javascripts/vue_shared/components/smart_virtual_list_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import SmartVirtualScrollList from '~/vue_shared/components/smart_virtual_list.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import SmartVirtualScrollList from '~/vue_shared/components/smart_virtual_list.vue';
describe('Toggle Button', () => {
let vm;
diff --git a/spec/javascripts/vue_shared/components/stacked_progress_bar_spec.js b/spec/javascripts/vue_shared/components/stacked_progress_bar_spec.js
index 073d111989c..f226dabb8a0 100644
--- a/spec/javascripts/vue_shared/components/stacked_progress_bar_spec.js
+++ b/spec/javascripts/vue_shared/components/stacked_progress_bar_spec.js
@@ -1,8 +1,7 @@
import Vue from 'vue';
-import stackedProgressBarComponent from '~/vue_shared/components/stacked_progress_bar.vue';
-
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import stackedProgressBarComponent from '~/vue_shared/components/stacked_progress_bar.vue';
const createComponent = config => {
const Component = Vue.extend(stackedProgressBarComponent);
@@ -54,6 +53,12 @@ describe('StackedProgressBarComponent', () => {
it('returns percentage as `< 1` from provided count based on `totalCount` when evaluated value is less than 1', () => {
expect(vm.getPercent(10)).toBe('< 1');
});
+
+ it('returns 0 if totalCount is falsy', () => {
+ vm = createComponent({ totalCount: 0 });
+
+ expect(vm.getPercent(100)).toBe(0);
+ });
});
describe('barStyle', () => {
diff --git a/spec/javascripts/vue_shared/components/toggle_button_spec.js b/spec/javascripts/vue_shared/components/toggle_button_spec.js
index 444ca451534..ea0a89a3ab5 100644
--- a/spec/javascripts/vue_shared/components/toggle_button_spec.js
+++ b/spec/javascripts/vue_shared/components/toggle_button_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import toggleButton from '~/vue_shared/components/toggle_button.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import toggleButton from '~/vue_shared/components/toggle_button.vue';
describe('Toggle Button', () => {
let vm;
diff --git a/spec/javascripts/vue_shared/components/user_avatar/user_avatar_link_spec.js b/spec/javascripts/vue_shared/components/user_avatar/user_avatar_link_spec.js
deleted file mode 100644
index 80aa75847ae..00000000000
--- a/spec/javascripts/vue_shared/components/user_avatar/user_avatar_link_spec.js
+++ /dev/null
@@ -1,109 +0,0 @@
-import _ from 'underscore';
-import Vue from 'vue';
-import UserAvatarLink from '~/vue_shared/components/user_avatar/user_avatar_link.vue';
-import { TEST_HOST } from 'spec/test_constants';
-
-describe('User Avatar Link Component', function() {
- beforeEach(function() {
- this.propsData = {
- linkHref: `${TEST_HOST}/myavatarurl.com`,
- imgSize: 99,
- imgSrc: `${TEST_HOST}/myavatarurl.com`,
- imgAlt: 'mydisplayname',
- imgCssClasses: 'myextraavatarclass',
- tooltipText: 'tooltip text',
- tooltipPlacement: 'bottom',
- username: 'username',
- };
-
- const UserAvatarLinkComponent = Vue.extend(UserAvatarLink);
-
- this.userAvatarLink = new UserAvatarLinkComponent({
- propsData: this.propsData,
- }).$mount();
-
- [this.userAvatarImage] = this.userAvatarLink.$children;
- });
-
- it('should return a defined Vue component', function() {
- expect(this.userAvatarLink).toBeDefined();
- });
-
- it('should have user-avatar-image registered as child component', function() {
- expect(this.userAvatarLink.$options.components.userAvatarImage).toBeDefined();
- });
-
- it('user-avatar-link should have user-avatar-image as child component', function() {
- expect(this.userAvatarImage).toBeDefined();
- });
-
- it('should render <a> as a child element', function() {
- const link = this.userAvatarLink.$el;
-
- expect(link.tagName).toBe('A');
- expect(link.href).toBe(this.propsData.linkHref);
- });
-
- it('renders imgSrc with imgSize as image', function() {
- const { imgSrc, imgSize } = this.propsData;
- const image = this.userAvatarLink.$el.querySelector('img');
-
- expect(image).not.toBeNull();
- expect(image.src).toBe(`${imgSrc}?width=${imgSize}`);
- });
-
- it('should return necessary props as defined', function() {
- _.each(this.propsData, (val, key) => {
- expect(this.userAvatarLink[key]).toBeDefined();
- });
- });
-
- describe('no username', function() {
- beforeEach(function(done) {
- this.userAvatarLink.username = '';
-
- Vue.nextTick(done);
- });
-
- it('should only render image tag in link', function() {
- const childElements = this.userAvatarLink.$el.childNodes;
-
- expect(this.userAvatarLink.$el.querySelector('img')).not.toBe('null');
-
- // Vue will render the hidden component as <!---->
- expect(childElements[1].tagName).toBeUndefined();
- });
-
- it('should render avatar image tooltip', function() {
- expect(this.userAvatarLink.shouldShowUsername).toBe(false);
- expect(this.userAvatarLink.avatarTooltipText).toEqual(this.propsData.tooltipText);
- });
- });
-
- describe('username', function() {
- it('should not render avatar image tooltip', function() {
- expect(this.userAvatarLink.$el.querySelector('.js-user-avatar-image-toolip')).toBeNull();
- });
-
- it('should render username prop in <span>', function() {
- expect(
- this.userAvatarLink.$el.querySelector('.js-user-avatar-link-username').innerText.trim(),
- ).toEqual(this.propsData.username);
- });
-
- it('should render text tooltip for <span>', function() {
- expect(
- this.userAvatarLink.$el.querySelector('.js-user-avatar-link-username').dataset
- .originalTitle,
- ).toEqual(this.propsData.tooltipText);
- });
-
- it('should render text tooltip placement for <span>', function() {
- expect(
- this.userAvatarLink.$el
- .querySelector('.js-user-avatar-link-username')
- .getAttribute('tooltip-placement'),
- ).toEqual(this.propsData.tooltipPlacement);
- });
- });
-});
diff --git a/spec/javascripts/vue_shared/components/user_avatar/user_avatar_svg_spec.js b/spec/javascripts/vue_shared/components/user_avatar/user_avatar_svg_spec.js
index 9152fa8e12f..31644416439 100644
--- a/spec/javascripts/vue_shared/components/user_avatar/user_avatar_svg_spec.js
+++ b/spec/javascripts/vue_shared/components/user_avatar/user_avatar_svg_spec.js
@@ -1,6 +1,6 @@
import Vue from 'vue';
-import UserAvatarSvg from '~/vue_shared/components/user_avatar/user_avatar_svg.vue';
import avatarSvg from 'icons/_icon_random.svg';
+import UserAvatarSvg from '~/vue_shared/components/user_avatar/user_avatar_svg.vue';
const UserAvatarSvgComponent = Vue.extend(UserAvatarSvg);
diff --git a/spec/javascripts/vue_shared/translate_spec.js b/spec/javascripts/vue_shared/translate_spec.js
index 0aaa4050cba..adca7cd64a1 100644
--- a/spec/javascripts/vue_shared/translate_spec.js
+++ b/spec/javascripts/vue_shared/translate_spec.js
@@ -1,9 +1,9 @@
import Vue from 'vue';
import Jed from 'jed';
+import { trimText } from 'spec/helpers/text_helper';
import locale from '~/locale';
import Translate from '~/vue_shared/translate';
-import { trimText } from 'spec/helpers/text_helper';
describe('Vue translate filter', () => {
let el;
diff --git a/spec/javascripts/vuex_shared/modules/modal/actions_spec.js b/spec/javascripts/vuex_shared/modules/modal/actions_spec.js
index 04f64663ae4..2c4cb845424 100644
--- a/spec/javascripts/vuex_shared/modules/modal/actions_spec.js
+++ b/spec/javascripts/vuex_shared/modules/modal/actions_spec.js
@@ -1,6 +1,6 @@
+import testAction from 'spec/helpers/vuex_action_helper';
import * as types from '~/vuex_shared/modules/modal/mutation_types';
import * as actions from '~/vuex_shared/modules/modal/actions';
-import testAction from 'spec/helpers/vuex_action_helper';
describe('Vuex ModalModule actions', () => {
describe('open', () => {
diff --git a/spec/lib/api/entities/release_spec.rb b/spec/lib/api/entities/release_spec.rb
new file mode 100644
index 00000000000..729a69347cb
--- /dev/null
+++ b/spec/lib/api/entities/release_spec.rb
@@ -0,0 +1,40 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe API::Entities::Release do
+ let_it_be(:project) { create(:project) }
+ let_it_be(:release) { create(:release, :with_evidence, project: project) }
+ let(:user) { create(:user) }
+ let(:entity) { described_class.new(release, current_user: user) }
+
+ subject { entity.as_json }
+
+ describe 'evidence' do
+ context 'when the current user can download code' do
+ it 'exposes the evidence sha and the json path' do
+ allow(Ability).to receive(:allowed?).and_call_original
+ allow(Ability).to receive(:allowed?)
+ .with(user, :download_code, project).and_return(true)
+
+ expect(subject[:evidence_sha]).to eq(release.evidence_sha)
+ expect(subject[:assets][:evidence_file_path]).to eq(
+ Gitlab::Routing.url_helpers.evidence_project_release_url(project,
+ release.tag,
+ format: :json)
+ )
+ end
+ end
+
+ context 'when the current user cannot download code' do
+ it 'does not expose any evidence data' do
+ allow(Ability).to receive(:allowed?).and_call_original
+ allow(Ability).to receive(:allowed?)
+ .with(user, :download_code, project).and_return(false)
+
+ expect(subject.keys).not_to include(:evidence_sha)
+ expect(subject[:assets].keys).not_to include(:evidence_file_path)
+ end
+ end
+ end
+end
diff --git a/spec/lib/api/helpers/pagination_spec.rb b/spec/lib/api/helpers/pagination_spec.rb
index 040ff1a8ebe..2d5bec2e752 100644
--- a/spec/lib/api/helpers/pagination_spec.rb
+++ b/spec/lib/api/helpers/pagination_spec.rb
@@ -5,10 +5,16 @@ require 'spec_helper'
describe API::Helpers::Pagination do
subject { Class.new.include(described_class).new }
+ let(:expected_result) { double("result", to_a: double) }
+ let(:relation) { double("relation") }
+ let(:params) { {} }
+
+ before do
+ allow(subject).to receive(:params).and_return(params)
+ end
+
describe '#paginate' do
- let(:relation) { double("relation") }
let(:offset_pagination) { double("offset pagination") }
- let(:expected_result) { double("result") }
it 'delegates to OffsetPagination' do
expect(::Gitlab::Pagination::OffsetPagination).to receive(:new).with(subject).and_return(offset_pagination)
@@ -19,4 +25,50 @@ describe API::Helpers::Pagination do
expect(result).to eq(expected_result)
end
end
+
+ describe '#paginate_and_retrieve!' do
+ context 'for offset pagination' do
+ before do
+ allow(Gitlab::Pagination::Keyset).to receive(:available?).and_return(false)
+ end
+
+ it 'delegates to paginate' do
+ expect(subject).to receive(:paginate).with(relation).and_return(expected_result)
+
+ result = subject.paginate_and_retrieve!(relation)
+
+ expect(result).to eq(expected_result.to_a)
+ end
+ end
+
+ context 'for keyset pagination' do
+ let(:params) { { pagination: 'keyset' } }
+ let(:request_context) { double('request context') }
+
+ before do
+ allow(Gitlab::Pagination::Keyset::RequestContext).to receive(:new).with(subject).and_return(request_context)
+ end
+
+ context 'when keyset pagination is available' do
+ it 'delegates to KeysetPagination' do
+ expect(Gitlab::Pagination::Keyset).to receive(:available?).and_return(true)
+ expect(Gitlab::Pagination::Keyset).to receive(:paginate).with(request_context, relation).and_return(expected_result)
+
+ result = subject.paginate_and_retrieve!(relation)
+
+ expect(result).to eq(expected_result.to_a)
+ end
+ end
+
+ context 'when keyset pagination is not available' do
+ it 'renders a 501 error if keyset pagination isnt available yet' do
+ expect(Gitlab::Pagination::Keyset).to receive(:available?).with(request_context, relation).and_return(false)
+ expect(Gitlab::Pagination::Keyset).not_to receive(:paginate)
+ expect(subject).to receive(:error!).with(/not yet available/, 405)
+
+ subject.paginate_and_retrieve!(relation)
+ end
+ end
+ end
+ end
end
diff --git a/spec/lib/api/helpers/related_resources_helpers_spec.rb b/spec/lib/api/helpers/related_resources_helpers_spec.rb
index fb26cc417e8..eeeb22abd10 100644
--- a/spec/lib/api/helpers/related_resources_helpers_spec.rb
+++ b/spec/lib/api/helpers/related_resources_helpers_spec.rb
@@ -43,6 +43,7 @@ describe API::Helpers::RelatedResourcesHelpers do
describe '#expose_url' do
let(:path) { '/api/v4/awesome_endpoint' }
+
subject(:url) { helpers.expose_url(path) }
def stub_default_url_options(protocol: 'http', host: 'example.com', port: nil, script_name: '')
diff --git a/spec/lib/api/support/git_access_actor_spec.rb b/spec/lib/api/support/git_access_actor_spec.rb
index 63f5966faea..69637947c79 100644
--- a/spec/lib/api/support/git_access_actor_spec.rb
+++ b/spec/lib/api/support/git_access_actor_spec.rb
@@ -9,17 +9,26 @@ describe API::Support::GitAccessActor do
subject { described_class.new(user: user, key: key) }
describe '.from_params' do
+ let(:key) { create(:key) }
+
context 'with params that are valid' do
it 'returns an instance of API::Support::GitAccessActor' do
- params = { key_id: create(:key).id }
+ params = { key_id: key.id }
expect(described_class.from_params(params)).to be_instance_of(described_class)
end
end
context 'with params that are invalid' do
- it 'returns nil' do
- expect(described_class.from_params({})).to be_nil
+ it "returns an instance of #{described_class}" do
+ expect(described_class.from_params({})).to be_instance_of(described_class)
+ end
+ end
+
+ context 'when passing an identifier used gitaly' do
+ it 'finds the user based on an identifier' do
+ expect(described_class).to receive(:identify).and_call_original
+ expect(described_class.from_params(identifier: "key-#{key.id}").user).to eq(key.user)
end
end
end
diff --git a/spec/lib/backup/manager_spec.rb b/spec/lib/backup/manager_spec.rb
index 35594cd2fb8..06ad0557e37 100644
--- a/spec/lib/backup/manager_spec.rb
+++ b/spec/lib/backup/manager_spec.rb
@@ -326,7 +326,7 @@ describe Backup::Manager do
context 'target path' do
it 'uses the tar filename by default' do
expect_any_instance_of(Fog::Collection).to receive(:create)
- .with(hash_including(key: backup_filename))
+ .with(hash_including(key: backup_filename, public: false))
.and_return(true)
Dir.chdir(Gitlab.config.backup.path) do
@@ -338,7 +338,39 @@ describe Backup::Manager do
stub_env('DIRECTORY', 'daily')
expect_any_instance_of(Fog::Collection).to receive(:create)
- .with(hash_including(key: "daily/#{backup_filename}"))
+ .with(hash_including(key: "daily/#{backup_filename}", public: false))
+ .and_return(true)
+
+ Dir.chdir(Gitlab.config.backup.path) do
+ subject.upload
+ end
+ end
+ end
+
+ context 'with Google provider' do
+ before do
+ stub_backup_setting(
+ upload: {
+ connection: {
+ provider: 'Google',
+ google_storage_access_key_id: 'test-access-id',
+ google_storage_secret_access_key: 'secret'
+ },
+ remote_directory: 'directory',
+ multipart_chunk_size: Gitlab.config.backup.upload.multipart_chunk_size,
+ encryption: nil,
+ encryption_key: nil,
+ storage_class: nil
+ }
+ )
+
+ connection = ::Fog::Storage.new(Gitlab.config.backup.upload.connection.symbolize_keys)
+ connection.directories.create(key: Gitlab.config.backup.upload.remote_directory)
+ end
+
+ it 'does not attempt to set ACL' do
+ expect_any_instance_of(Fog::Collection).to receive(:create)
+ .with(hash_excluding(public: false))
.and_return(true)
Dir.chdir(Gitlab.config.backup.path) do
diff --git a/spec/lib/backup/repository_spec.rb b/spec/lib/backup/repository_spec.rb
index 5f120f258cd..32e718d4b3b 100644
--- a/spec/lib/backup/repository_spec.rb
+++ b/spec/lib/backup/repository_spec.rb
@@ -5,6 +5,7 @@ require 'spec_helper'
describe Backup::Repository do
let(:progress) { StringIO.new }
let!(:project) { create(:project, :wiki_repo) }
+
subject { described_class.new(progress) }
before do
@@ -12,7 +13,9 @@ describe Backup::Repository do
allow(progress).to receive(:print)
allow(FileUtils).to receive(:mv).and_return(true)
- allow_any_instance_of(described_class).to receive(:progress).and_return(progress)
+ allow_next_instance_of(described_class) do |instance|
+ allow(instance).to receive(:progress).and_return(progress)
+ end
end
describe '#dump' do
@@ -47,7 +50,9 @@ describe Backup::Repository do
describe 'command failure' do
before do
- allow_any_instance_of(Gitlab::Shell).to receive(:create_repository).and_return(false)
+ allow_next_instance_of(Gitlab::Shell) do |instance|
+ allow(instance).to receive(:create_repository).and_return(false)
+ end
end
context 'hashed storage' do
diff --git a/spec/lib/backup/uploads_spec.rb b/spec/lib/backup/uploads_spec.rb
index 55b69f29812..1f49baeff69 100644
--- a/spec/lib/backup/uploads_spec.rb
+++ b/spec/lib/backup/uploads_spec.rb
@@ -4,6 +4,7 @@ require 'spec_helper'
describe Backup::Uploads do
let(:progress) { StringIO.new }
+
subject(:backup) { described_class.new(progress) }
describe '#initialize' do
diff --git a/spec/lib/banzai/filter/broadcast_message_sanitization_filter_spec.rb b/spec/lib/banzai/filter/broadcast_message_sanitization_filter_spec.rb
new file mode 100644
index 00000000000..317ac7ef854
--- /dev/null
+++ b/spec/lib/banzai/filter/broadcast_message_sanitization_filter_spec.rb
@@ -0,0 +1,51 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Banzai::Filter::BroadcastMessageSanitizationFilter do
+ include FilterSpecHelper
+
+ it_behaves_like 'default whitelist'
+
+ describe 'custom whitelist' do
+ it_behaves_like 'XSS prevention'
+ it_behaves_like 'sanitize link'
+
+ subject { filter(exp).to_html }
+
+ context 'allows `a` elements' do
+ let(:exp) { %q{<a href="/">Link</a>} }
+
+ it { is_expected.to eq(exp) }
+ end
+
+ context 'allows `br` elements' do
+ let(:exp) { %q{Hello<br>World} }
+
+ it { is_expected.to eq(exp) }
+ end
+
+ context 'when `a` elements have `style` attribute' do
+ let(:whitelisted_style) { 'color: red; border: blue; background: green; padding: 10px; margin: 10px; text-decoration: underline;' }
+
+ context 'allows specific properties' do
+ let(:exp) { %{<a href="#" style="#{whitelisted_style}">Stylish Link</a>} }
+
+ it { is_expected.to eq(exp) }
+ end
+
+ it 'disallows other properties in `style` attribute on `a` elements' do
+ style = [whitelisted_style, 'position: fixed'].join(';')
+ doc = filter(%{<a href="#" style="#{style}">Stylish Link</a>})
+
+ expect(doc.at_css('a')['style']).to eq(whitelisted_style)
+ end
+ end
+
+ context 'allows `class` on `a` elements' do
+ let(:exp) { %q{<a href="#" class="btn">Button Link</a>} }
+
+ it { is_expected.to eq(exp) }
+ end
+ end
+end
diff --git a/spec/lib/banzai/filter/commit_reference_filter_spec.rb b/spec/lib/banzai/filter/commit_reference_filter_spec.rb
index 326703eea05..63ec597a0ba 100644
--- a/spec/lib/banzai/filter/commit_reference_filter_spec.rb
+++ b/spec/lib/banzai/filter/commit_reference_filter_spec.rb
@@ -60,7 +60,9 @@ describe Banzai::Filter::CommitReferenceFilter do
end
it 'escapes the title attribute' do
- allow_any_instance_of(Commit).to receive(:title).and_return(%{"></a>whatever<a title="})
+ allow_next_instance_of(Commit) do |instance|
+ allow(instance).to receive(:title).and_return(%{"></a>whatever<a title="})
+ end
doc = reference_filter("See #{reference}")
expect(doc.text).to eq "See #{commit.short_id}"
diff --git a/spec/lib/banzai/filter/inline_metrics_redactor_filter_spec.rb b/spec/lib/banzai/filter/inline_metrics_redactor_filter_spec.rb
index 745b9133529..e2615ea5069 100644
--- a/spec/lib/banzai/filter/inline_metrics_redactor_filter_spec.rb
+++ b/spec/lib/banzai/filter/inline_metrics_redactor_filter_spec.rb
@@ -55,11 +55,29 @@ describe Banzai::Filter::InlineMetricsRedactorFilter do
it_behaves_like 'a supported metrics dashboard url'
end
- context 'for an internal non-dashboard url' do
- let(:url) { urls.project_url(project) }
+ context 'the user has requisite permissions' do
+ let(:user) { create(:user) }
+ let(:doc) { filter(input, current_user: user) }
- it 'leaves the placeholder' do
- expect(doc.to_s).to be_empty
+ before do
+ project.add_maintainer(user)
+ end
+
+ context 'for an internal non-dashboard url' do
+ let(:url) { urls.project_url(project) }
+
+ it 'leaves the placeholder' do
+ expect(doc.to_s).to be_empty
+ end
+ end
+
+ context 'with over 100 embeds' do
+ let(:embed) { %(<div class="js-render-metrics" data-dashboard-url="#{url}"></div>) }
+ let(:input) { embed * 150 }
+
+ it 'redacts ill-advised embeds' do
+ expect(doc.to_s.length).to eq(embed.length * 100)
+ end
end
end
end
diff --git a/spec/lib/banzai/filter/markdown_filter_spec.rb b/spec/lib/banzai/filter/markdown_filter_spec.rb
index 06df67facf9..d0a43564903 100644
--- a/spec/lib/banzai/filter/markdown_filter_spec.rb
+++ b/spec/lib/banzai/filter/markdown_filter_spec.rb
@@ -7,13 +7,17 @@ describe Banzai::Filter::MarkdownFilter do
describe 'markdown engine from context' do
it 'defaults to CommonMark' do
- expect_any_instance_of(Banzai::Filter::MarkdownEngines::CommonMark).to receive(:render).and_return('test')
+ expect_next_instance_of(Banzai::Filter::MarkdownEngines::CommonMark) do |instance|
+ expect(instance).to receive(:render).and_return('test')
+ end
filter('test')
end
it 'uses CommonMark' do
- expect_any_instance_of(Banzai::Filter::MarkdownEngines::CommonMark).to receive(:render).and_return('test')
+ expect_next_instance_of(Banzai::Filter::MarkdownEngines::CommonMark) do |instance|
+ expect(instance).to receive(:render).and_return('test')
+ end
filter('test', { markdown_engine: :common_mark })
end
diff --git a/spec/lib/banzai/filter/milestone_reference_filter_spec.rb b/spec/lib/banzai/filter/milestone_reference_filter_spec.rb
index ab0c2c383c5..2fe8c9074df 100644
--- a/spec/lib/banzai/filter/milestone_reference_filter_spec.rb
+++ b/spec/lib/banzai/filter/milestone_reference_filter_spec.rb
@@ -214,7 +214,9 @@ describe Banzai::Filter::MilestoneReferenceFilter do
end
it 'escapes the name attribute' do
- allow_any_instance_of(Milestone).to receive(:title).and_return(%{"></a>whatever<a title="})
+ allow_next_instance_of(Milestone) do |instance|
+ allow(instance).to receive(:title).and_return(%{"></a>whatever<a title="})
+ end
doc = reference_filter("See #{reference}")
@@ -251,7 +253,9 @@ describe Banzai::Filter::MilestoneReferenceFilter do
end
it 'escapes the name attribute' do
- allow_any_instance_of(Milestone).to receive(:title).and_return(%{"></a>whatever<a title="})
+ allow_next_instance_of(Milestone) do |instance|
+ allow(instance).to receive(:title).and_return(%{"></a>whatever<a title="})
+ end
doc = reference_filter("See #{reference}")
@@ -288,7 +292,9 @@ describe Banzai::Filter::MilestoneReferenceFilter do
end
it 'escapes the name attribute' do
- allow_any_instance_of(Milestone).to receive(:title).and_return(%{"></a>whatever<a title="})
+ allow_next_instance_of(Milestone) do |instance|
+ allow(instance).to receive(:title).and_return(%{"></a>whatever<a title="})
+ end
doc = reference_filter("See #{reference}")
diff --git a/spec/lib/banzai/filter/reference_redactor_filter_spec.rb b/spec/lib/banzai/filter/reference_redactor_filter_spec.rb
index dc888a47988..9739afd3d57 100644
--- a/spec/lib/banzai/filter/reference_redactor_filter_spec.rb
+++ b/spec/lib/banzai/filter/reference_redactor_filter_spec.rb
@@ -42,7 +42,9 @@ describe Banzai::Filter::ReferenceRedactorFilter do
context 'valid projects' do
before do
- allow_any_instance_of(Banzai::ReferenceParser::BaseParser).to receive(:can_read_reference?).and_return(true)
+ allow_next_instance_of(Banzai::ReferenceParser::BaseParser) do |instance|
+ allow(instance).to receive(:can_read_reference?).and_return(true)
+ end
end
it 'allows permitted Project references' do
@@ -59,7 +61,9 @@ describe Banzai::Filter::ReferenceRedactorFilter do
context 'invalid projects' do
before do
- allow_any_instance_of(Banzai::ReferenceParser::BaseParser).to receive(:can_read_reference?).and_return(false)
+ allow_next_instance_of(Banzai::ReferenceParser::BaseParser) do |instance|
+ allow(instance).to receive(:can_read_reference?).and_return(false)
+ end
end
it 'removes unpermitted references' do
diff --git a/spec/lib/banzai/filter/relative_link_filter_spec.rb b/spec/lib/banzai/filter/relative_link_filter_spec.rb
index 371c7a2347c..a17a645d4d0 100644
--- a/spec/lib/banzai/filter/relative_link_filter_spec.rb
+++ b/spec/lib/banzai/filter/relative_link_filter_spec.rb
@@ -96,21 +96,25 @@ describe Banzai::Filter::RelativeLinkFilter do
context 'with a project_wiki' do
let(:project_wiki) { double('ProjectWiki') }
+
include_examples :preserve_unchanged
end
context 'without a repository' do
let(:project) { create(:project) }
+
include_examples :preserve_unchanged
end
context 'with an empty repository' do
let(:project) { create(:project_empty_repo) }
+
include_examples :preserve_unchanged
end
context 'without project repository access' do
let(:project) { create(:project, :repository, repository_access_level: ProjectFeature::PRIVATE) }
+
include_examples :preserve_unchanged
end
@@ -269,6 +273,7 @@ describe Banzai::Filter::RelativeLinkFilter do
context 'when requested path is a file in the repo' do
let(:requested_path) { 'doc/api/README.md' }
+
it 'rebuilds URL relative to the containing directory' do
doc = filter(link('users.md'))
expect(doc.at_css('a')['href']).to eq "/#{project_path}/blob/#{Addressable::URI.escape(ref)}/doc/api/users.md"
@@ -277,6 +282,7 @@ describe Banzai::Filter::RelativeLinkFilter do
context 'when requested path is a directory in the repo' do
let(:requested_path) { 'doc/api/' }
+
it 'rebuilds URL relative to the directory' do
doc = filter(link('users.md'))
expect(doc.at_css('a')['href']).to eq "/#{project_path}/blob/#{Addressable::URI.escape(ref)}/doc/api/users.md"
@@ -287,6 +293,7 @@ describe Banzai::Filter::RelativeLinkFilter do
let(:ref) { '100%branch' }
let(:commit) { project.commit('1b12f15a11fc6e62177bef08f47bc7b5ce50b141') }
let(:requested_path) { 'foo/bar/' }
+
it 'correctly escapes the ref' do
doc = filter(link('.gitkeep'))
expect(doc.at_css('a')['href']).to eq "/#{project_path}/blob/#{Addressable::URI.escape(ref)}/foo/bar/.gitkeep"
@@ -316,6 +323,7 @@ describe Banzai::Filter::RelativeLinkFilter do
let(:ref) { 'master' }
let(:commit) { project.commit('38008cb17ce1466d8fec2dfa6f6ab8dcfe5cf49e') }
let(:requested_path) { 'with space/' }
+
it 'does not escape the space twice' do
doc = filter(link('README.md'))
expect(doc.at_css('a')['href']).to eq "/#{project_path}/blob/#{Addressable::URI.escape(ref)}/with%20space/README.md"
@@ -328,7 +336,9 @@ describe Banzai::Filter::RelativeLinkFilter do
end
context 'with a valid ref' do
- let(:commit) { nil } # force filter to use ref instead of commit
+ # force filter to use ref instead of commit
+ let(:commit) { nil }
+
include_examples :valid_repository
end
diff --git a/spec/lib/banzai/filter/sanitization_filter_spec.rb b/spec/lib/banzai/filter/sanitization_filter_spec.rb
index 8a4b819e4d6..607dc3fda47 100644
--- a/spec/lib/banzai/filter/sanitization_filter_spec.rb
+++ b/spec/lib/banzai/filter/sanitization_filter_spec.rb
@@ -5,48 +5,12 @@ require 'spec_helper'
describe Banzai::Filter::SanitizationFilter do
include FilterSpecHelper
- describe 'default whitelist' do
- it 'sanitizes tags that are not whitelisted' do
- act = %q{<textarea>no inputs</textarea> and <blink>no blinks</blink>}
- exp = 'no inputs and no blinks'
- expect(filter(act).to_html).to eq exp
- end
-
- it 'sanitizes tag attributes' do
- act = %q{<a href="http://example.com/bar.html" onclick="bar">Text</a>}
- exp = %q{<a href="http://example.com/bar.html">Text</a>}
- expect(filter(act).to_html).to eq exp
- end
-
- it 'sanitizes javascript in attributes' do
- act = %q(<a href="javascript:alert('foo')">Text</a>)
- exp = '<a>Text</a>'
- expect(filter(act).to_html).to eq exp
- end
-
- it 'sanitizes mixed-cased javascript in attributes' do
- act = %q(<a href="javaScript:alert('foo')">Text</a>)
- exp = '<a>Text</a>'
- expect(filter(act).to_html).to eq exp
- end
-
- it 'allows whitelisted HTML tags from the user' do
- exp = act = "<dl>\n<dt>Term</dt>\n<dd>Definition</dd>\n</dl>"
- expect(filter(act).to_html).to eq exp
- end
-
- it 'sanitizes `class` attribute on any element' do
- act = %q{<strong class="foo">Strong</strong>}
- expect(filter(act).to_html).to eq %q{<strong>Strong</strong>}
- end
-
- it 'sanitizes `id` attribute on any element' do
- act = %q{<em id="foo">Emphasis</em>}
- expect(filter(act).to_html).to eq %q{<em>Emphasis</em>}
- end
- end
+ it_behaves_like 'default whitelist'
describe 'custom whitelist' do
+ it_behaves_like 'XSS prevention'
+ it_behaves_like 'sanitize link'
+
it 'customizes the whitelist only once' do
instance = described_class.new('Foo')
control_count = instance.whitelist[:transformers].size
@@ -167,142 +131,6 @@ describe Banzai::Filter::SanitizationFilter do
expect(filter(html).to_html).to eq(output)
end
- it 'removes `rel` attribute from `a` elements' do
- act = %q{<a href="#" rel="nofollow">Link</a>}
- exp = %q{<a href="#">Link</a>}
-
- expect(filter(act).to_html).to eq exp
- end
-
- # Adapted from the Sanitize test suite: http://git.io/vczrM
- protocols = {
- 'protocol-based JS injection: simple, no spaces' => {
- input: '<a href="javascript:alert(\'XSS\');">foo</a>',
- output: '<a>foo</a>'
- },
-
- 'protocol-based JS injection: simple, spaces before' => {
- input: '<a href="javascript :alert(\'XSS\');">foo</a>',
- output: '<a>foo</a>'
- },
-
- 'protocol-based JS injection: simple, spaces after' => {
- input: '<a href="javascript: alert(\'XSS\');">foo</a>',
- output: '<a>foo</a>'
- },
-
- 'protocol-based JS injection: simple, spaces before and after' => {
- input: '<a href="javascript : alert(\'XSS\');">foo</a>',
- output: '<a>foo</a>'
- },
-
- 'protocol-based JS injection: preceding colon' => {
- input: '<a href=":javascript:alert(\'XSS\');">foo</a>',
- output: '<a>foo</a>'
- },
-
- 'protocol-based JS injection: UTF-8 encoding' => {
- input: '<a href="javascript&#58;">foo</a>',
- output: '<a>foo</a>'
- },
-
- 'protocol-based JS injection: long UTF-8 encoding' => {
- input: '<a href="javascript&#0058;">foo</a>',
- output: '<a>foo</a>'
- },
-
- 'protocol-based JS injection: long UTF-8 encoding without semicolons' => {
- input: '<a href=&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041>foo</a>',
- output: '<a>foo</a>'
- },
-
- 'protocol-based JS injection: hex encoding' => {
- input: '<a href="javascript&#x3A;">foo</a>',
- output: '<a>foo</a>'
- },
-
- 'protocol-based JS injection: long hex encoding' => {
- input: '<a href="javascript&#x003A;">foo</a>',
- output: '<a>foo</a>'
- },
-
- 'protocol-based JS injection: hex encoding without semicolons' => {
- input: '<a href=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29>foo</a>',
- output: '<a>foo</a>'
- },
-
- 'protocol-based JS injection: null char' => {
- input: "<a href=java\0script:alert(\"XSS\")>foo</a>",
- output: '<a href="java"></a>'
- },
-
- 'protocol-based JS injection: invalid URL char' => {
- input: '<img src=java\script:alert("XSS")>',
- output: '<img>'
- },
-
- 'protocol-based JS injection: Unicode' => {
- input: %Q(<a href="\u0001java\u0003script:alert('XSS')">foo</a>),
- output: '<a>foo</a>'
- },
-
- 'protocol-based JS injection: spaces and entities' => {
- input: '<a href=" &#14; javascript:alert(\'XSS\');">foo</a>',
- output: '<a href="">foo</a>'
- },
-
- 'protocol whitespace' => {
- input: '<a href=" http://example.com/"></a>',
- output: '<a href="http://example.com/"></a>'
- }
- }
-
- protocols.each do |name, data|
- it "disallows #{name}" do
- doc = filter(data[:input])
-
- expect(doc.to_html).to eq data[:output]
- end
- end
-
- it 'disallows data links' do
- input = '<a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K">XSS</a>'
- output = filter(input)
-
- expect(output.to_html).to eq '<a>XSS</a>'
- end
-
- it 'disallows vbscript links' do
- input = '<a href="vbscript:alert(document.domain)">XSS</a>'
- output = filter(input)
-
- expect(output.to_html).to eq '<a>XSS</a>'
- end
-
- it 'disallows invalid URIs' do
- expect(Addressable::URI).to receive(:parse).with('foo://example.com')
- .and_raise(Addressable::URI::InvalidURIError)
-
- input = '<a href="foo://example.com">Foo</a>'
- output = filter(input)
-
- expect(output.to_html).to eq '<a>Foo</a>'
- end
-
- it 'allows non-standard anchor schemes' do
- exp = %q{<a href="irc://irc.freenode.net/git">IRC</a>}
- act = filter(exp)
-
- expect(act.to_html).to eq exp
- end
-
- it 'allows relative links' do
- exp = %q{<a href="foo/bar.md">foo/bar.md</a>}
- act = filter(exp)
-
- expect(act.to_html).to eq exp
- end
-
it 'allows the `data-sourcepos` attribute globally' do
exp = %q{<p data-sourcepos="1:1-1:10">foo/bar.md</p>}
act = filter(exp)
diff --git a/spec/lib/banzai/filter/syntax_highlight_filter_spec.rb b/spec/lib/banzai/filter/syntax_highlight_filter_spec.rb
index f220ccecee1..5a844fb61e3 100644
--- a/spec/lib/banzai/filter/syntax_highlight_filter_spec.rb
+++ b/spec/lib/banzai/filter/syntax_highlight_filter_spec.rb
@@ -92,7 +92,9 @@ describe Banzai::Filter::SyntaxHighlightFilter do
context "when Rouge lexing fails" do
before do
- allow_any_instance_of(Rouge::Lexers::Ruby).to receive(:stream_tokens).and_raise(StandardError)
+ allow_next_instance_of(Rouge::Lexers::Ruby) do |instance|
+ allow(instance).to receive(:stream_tokens).and_raise(StandardError)
+ end
end
it "highlights as plaintext" do
@@ -106,7 +108,9 @@ describe Banzai::Filter::SyntaxHighlightFilter do
context "when Rouge lexing fails after a retry" do
before do
- allow_any_instance_of(Rouge::Lexers::PlainText).to receive(:stream_tokens).and_raise(StandardError)
+ allow_next_instance_of(Rouge::Lexers::PlainText) do |instance|
+ allow(instance).to receive(:stream_tokens).and_raise(StandardError)
+ end
end
it "does not add highlighting classes" do
diff --git a/spec/lib/banzai/object_renderer_spec.rb b/spec/lib/banzai/object_renderer_spec.rb
index a523608fa50..aef11775e60 100644
--- a/spec/lib/banzai/object_renderer_spec.rb
+++ b/spec/lib/banzai/object_renderer_spec.rb
@@ -25,7 +25,9 @@ describe Banzai::ObjectRenderer do
end
it 'calls Banzai::ReferenceRedactor to perform redaction' do
- expect_any_instance_of(Banzai::ReferenceRedactor).to receive(:redact).and_call_original
+ expect_next_instance_of(Banzai::ReferenceRedactor) do |instance|
+ expect(instance).to receive(:redact).and_call_original
+ end
renderer.render([object], :note)
end
@@ -85,7 +87,9 @@ describe Banzai::ObjectRenderer do
end
it 'calls Banzai::ReferenceRedactor to perform redaction' do
- expect_any_instance_of(Banzai::ReferenceRedactor).to receive(:redact).and_call_original
+ expect_next_instance_of(Banzai::ReferenceRedactor) do |instance|
+ expect(instance).to receive(:redact).and_call_original
+ end
renderer.render([cacheless_thing], :title)
end
diff --git a/spec/lib/banzai/pipeline/broadcast_message_pipeline_spec.rb b/spec/lib/banzai/pipeline/broadcast_message_pipeline_spec.rb
new file mode 100644
index 00000000000..9832b132b58
--- /dev/null
+++ b/spec/lib/banzai/pipeline/broadcast_message_pipeline_spec.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Banzai::Pipeline::BroadcastMessagePipeline do
+ before do
+ stub_commonmark_sourcepos_disabled
+ end
+
+ subject { described_class.to_html(exp, project: spy) }
+
+ context "allows `a` elements" do
+ let(:exp) { "<a>Link</a>" }
+
+ it { is_expected.to eq("<p>#{exp}</p>") }
+ end
+
+ context "allows `br` elements" do
+ let(:exp) { "Hello<br>World" }
+
+ it { is_expected.to eq("<p>#{exp}</p>") }
+ end
+end
diff --git a/spec/lib/banzai/pipeline/wiki_pipeline_spec.rb b/spec/lib/banzai/pipeline/wiki_pipeline_spec.rb
index 26f2b0b0acf..e1814ea403e 100644
--- a/spec/lib/banzai/pipeline/wiki_pipeline_spec.rb
+++ b/spec/lib/banzai/pipeline/wiki_pipeline_spec.rb
@@ -72,14 +72,14 @@ describe Banzai::Pipeline::WikiPipeline do
markdown = "[Page](./page)"
output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug)
- expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/wikis/nested/twice/page\"")
+ expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/-/wikis/nested/twice/page\"")
end
it "rewrites file links to be at the scope of the current directory" do
markdown = "[Link to Page](./page.md)"
output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug)
- expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/wikis/nested/twice/page.md\"")
+ expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/-/wikis/nested/twice/page.md\"")
end
end
@@ -88,14 +88,14 @@ describe Banzai::Pipeline::WikiPipeline do
markdown = "[Link to Page](../page)"
output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug)
- expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/wikis/nested/page\"")
+ expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/-/wikis/nested/page\"")
end
it "rewrites file links to be at the scope of the parent directory" do
markdown = "[Link to Page](../page.md)"
output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug)
- expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/wikis/nested/page.md\"")
+ expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/-/wikis/nested/page.md\"")
end
end
@@ -104,14 +104,14 @@ describe Banzai::Pipeline::WikiPipeline do
markdown = "[Link to Page](./subdirectory/page)"
output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug)
- expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/wikis/nested/twice/subdirectory/page\"")
+ expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/-/wikis/nested/twice/subdirectory/page\"")
end
it "rewrites file links to be at the scope of the sub-directory" do
markdown = "[Link to Page](./subdirectory/page.md)"
output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug)
- expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/wikis/nested/twice/subdirectory/page.md\"")
+ expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/-/wikis/nested/twice/subdirectory/page.md\"")
end
end
@@ -120,35 +120,35 @@ describe Banzai::Pipeline::WikiPipeline do
markdown = "[Link to Page](page)"
output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug)
- expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/wikis/page\"")
+ expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/-/wikis/page\"")
end
it 'rewrites non-file links (with spaces) to be at the scope of the wiki root' do
markdown = "[Link to Page](page slug)"
output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug)
- expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/wikis/page%20slug\"")
+ expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/-/wikis/page%20slug\"")
end
it "rewrites file links to be at the scope of the current directory" do
markdown = "[Link to Page](page.md)"
output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug)
- expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/wikis/nested/twice/page.md\"")
+ expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/-/wikis/nested/twice/page.md\"")
end
it 'rewrites links with anchor' do
markdown = '[Link to Header](start-page#title)'
output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug)
- expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/wikis/start-page#title\"")
+ expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/-/wikis/start-page#title\"")
end
it 'rewrites links (with spaces) with anchor' do
markdown = '[Link to Header](start page#title)'
output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug)
- expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/wikis/start%20page#title\"")
+ expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/-/wikis/start%20page#title\"")
end
end
@@ -157,14 +157,14 @@ describe Banzai::Pipeline::WikiPipeline do
markdown = "[Link to Page](/page)"
output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug)
- expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/wikis/page\"")
+ expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/-/wikis/page\"")
end
it 'rewrites file links to be at the scope of the wiki root' do
markdown = "[Link to Page](/page.md)"
output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug)
- expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/wikis/page.md\"")
+ expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/-/wikis/page.md\"")
end
end
end
@@ -270,28 +270,28 @@ describe Banzai::Pipeline::WikiPipeline do
markdown = "![video_file](video_file_name.mp4)"
output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug)
- expect(output).to include('<video src="/wiki_link_ns/wiki_link_project/wikis/nested/twice/video_file_name.mp4"')
+ expect(output).to include('<video src="/wiki_link_ns/wiki_link_project/-/wikis/nested/twice/video_file_name.mp4"')
end
it 'rewrites and replaces video links names with white spaces to %20' do
markdown = "![video file](video file name.mp4)"
output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug)
- expect(output).to include('<video src="/wiki_link_ns/wiki_link_project/wikis/nested/twice/video%20file%20name.mp4"')
+ expect(output).to include('<video src="/wiki_link_ns/wiki_link_project/-/wikis/nested/twice/video%20file%20name.mp4"')
end
it 'generates audio html structure' do
markdown = "![audio_file](audio_file_name.wav)"
output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug)
- expect(output).to include('<audio src="/wiki_link_ns/wiki_link_project/wikis/nested/twice/audio_file_name.wav"')
+ expect(output).to include('<audio src="/wiki_link_ns/wiki_link_project/-/wikis/nested/twice/audio_file_name.wav"')
end
it 'rewrites and replaces audio links names with white spaces to %20' do
markdown = "![audio file](audio file name.wav)"
output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug)
- expect(output).to include('<audio src="/wiki_link_ns/wiki_link_project/wikis/nested/twice/audio%20file%20name.wav"')
+ expect(output).to include('<audio src="/wiki_link_ns/wiki_link_project/-/wikis/nested/twice/audio%20file%20name.wav"')
end
end
end
diff --git a/spec/lib/banzai/reference_parser/commit_parser_spec.rb b/spec/lib/banzai/reference_parser/commit_parser_spec.rb
index eac1cf16a8f..7f7c750fe74 100644
--- a/spec/lib/banzai/reference_parser/commit_parser_spec.rb
+++ b/spec/lib/banzai/reference_parser/commit_parser_spec.rb
@@ -35,8 +35,9 @@ describe Banzai::ReferenceParser::CommitParser do
it 'returns an Array of commits' do
commit = double(:commit)
- allow_any_instance_of(Project).to receive(:valid_repo?)
- .and_return(true)
+ allow_next_instance_of(Project) do |instance|
+ allow(instance).to receive(:valid_repo?).and_return(true)
+ end
expect(subject).to receive(:find_commits)
.with(project, ['123'])
@@ -46,8 +47,9 @@ describe Banzai::ReferenceParser::CommitParser do
end
it 'returns an empty Array when the commit could not be found' do
- allow_any_instance_of(Project).to receive(:valid_repo?)
- .and_return(true)
+ allow_next_instance_of(Project) do |instance|
+ allow(instance).to receive(:valid_repo?).and_return(true)
+ end
expect(subject).to receive(:find_commits)
.with(project, ['123'])
@@ -57,8 +59,9 @@ describe Banzai::ReferenceParser::CommitParser do
end
it 'skips projects without valid repositories' do
- allow_any_instance_of(Project).to receive(:valid_repo?)
- .and_return(false)
+ allow_next_instance_of(Project) do |instance|
+ allow(instance).to receive(:valid_repo?).and_return(false)
+ end
expect(subject.referenced_by([link])).to eq([])
end
@@ -66,8 +69,9 @@ describe Banzai::ReferenceParser::CommitParser do
context 'when the link does not have a data-commit attribute' do
it 'returns an empty Array' do
- allow_any_instance_of(Project).to receive(:valid_repo?)
- .and_return(true)
+ allow_next_instance_of(Project) do |instance|
+ allow(instance).to receive(:valid_repo?).and_return(true)
+ end
expect(subject.referenced_by([link])).to eq([])
end
@@ -76,8 +80,9 @@ describe Banzai::ReferenceParser::CommitParser do
context 'when the link does not have a data-project attribute' do
it 'returns an empty Array' do
- allow_any_instance_of(Project).to receive(:valid_repo?)
- .and_return(true)
+ allow_next_instance_of(Project) do |instance|
+ allow(instance).to receive(:valid_repo?).and_return(true)
+ end
expect(subject.referenced_by([link])).to eq([])
end
diff --git a/spec/lib/banzai/reference_parser/issue_parser_spec.rb b/spec/lib/banzai/reference_parser/issue_parser_spec.rb
index a925d294b1b..ac321aca5e9 100644
--- a/spec/lib/banzai/reference_parser/issue_parser_spec.rb
+++ b/spec/lib/banzai/reference_parser/issue_parser_spec.rb
@@ -9,6 +9,7 @@ describe Banzai::ReferenceParser::IssueParser do
let(:user) { create(:user) }
let(:issue) { create(:issue, project: project) }
let(:link) { empty_html_link }
+
subject { described_class.new(Banzai::RenderContext.new(project, user)) }
describe '#nodes_visible_to_user' do
diff --git a/spec/lib/banzai/reference_parser/mentioned_users_by_group_parser_spec.rb b/spec/lib/banzai/reference_parser/mentioned_group_parser_spec.rb
index 99d607629eb..30b99f3eda7 100644
--- a/spec/lib/banzai/reference_parser/mentioned_users_by_group_parser_spec.rb
+++ b/spec/lib/banzai/reference_parser/mentioned_group_parser_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-describe Banzai::ReferenceParser::MentionedUsersByGroupParser do
+describe Banzai::ReferenceParser::MentionedGroupParser do
include ReferenceParserHelpers
let(:group) { create(:group, :private) }
diff --git a/spec/lib/banzai/reference_parser/mentioned_users_by_project_parser_spec.rb b/spec/lib/banzai/reference_parser/mentioned_project_parser_spec.rb
index 155f2189d9e..154f7c4dc36 100644
--- a/spec/lib/banzai/reference_parser/mentioned_users_by_project_parser_spec.rb
+++ b/spec/lib/banzai/reference_parser/mentioned_project_parser_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-describe Banzai::ReferenceParser::MentionedUsersByProjectParser do
+describe Banzai::ReferenceParser::MentionedProjectParser do
include ReferenceParserHelpers
let(:group) { create(:group, :private) }
diff --git a/spec/lib/banzai/reference_parser/snippet_parser_spec.rb b/spec/lib/banzai/reference_parser/snippet_parser_spec.rb
index 05dc1cb4d2d..6581ed0d7c3 100644
--- a/spec/lib/banzai/reference_parser/snippet_parser_spec.rb
+++ b/spec/lib/banzai/reference_parser/snippet_parser_spec.rb
@@ -200,6 +200,7 @@ describe Banzai::ReferenceParser::SnippetParser do
describe '#referenced_by' do
let(:snippet) { create(:snippet, project: project) }
+
describe 'when the link has a data-snippet attribute' do
context 'using an existing snippet ID' do
it 'returns an Array of snippets' do
diff --git a/spec/lib/banzai/reference_parser/user_parser_spec.rb b/spec/lib/banzai/reference_parser/user_parser_spec.rb
index 931fb1e3953..71d2e1de3b6 100644
--- a/spec/lib/banzai/reference_parser/user_parser_spec.rb
+++ b/spec/lib/banzai/reference_parser/user_parser_spec.rb
@@ -19,15 +19,23 @@ describe Banzai::ReferenceParser::UserParser do
link['data-group'] = project.group.id.to_s
end
- it 'returns the users of the group' do
- create(:group_member, group: group, user: user)
-
- expect(subject.referenced_by([link])).to eq([user])
- end
-
it 'returns an empty Array when the group has no users' do
expect(subject.referenced_by([link])).to eq([])
end
+
+ context 'when group has members' do
+ let!(:group_member) { create(:group_member, group: group, user: user) }
+
+ it 'returns the users of the group' do
+ expect(subject.referenced_by([link])).to eq([user])
+ end
+
+ it 'returns an empty Array when the group has mentions disabled' do
+ group.update!(mentions_disabled: true)
+
+ expect(subject.referenced_by([link])).to eq([])
+ end
+ end
end
context 'using a non-existing group ID' do
diff --git a/spec/lib/banzai/reference_redactor_spec.rb b/spec/lib/banzai/reference_redactor_spec.rb
index c30a194a0b3..0dec6395fb3 100644
--- a/spec/lib/banzai/reference_redactor_spec.rb
+++ b/spec/lib/banzai/reference_redactor_spec.rb
@@ -36,6 +36,7 @@ describe Banzai::ReferenceRedactor do
context 'when data-original attribute provided' do
let(:original_content) { '<code>foo</code>' }
+
it 'replaces redacted reference with original content' do
doc = Nokogiri::HTML.fragment("<a class='gfm' href='https://www.gitlab.com' data-reference-type='issue' data-original='#{original_content}'>bar</a>")
redactor.redact([doc])
@@ -173,10 +174,11 @@ describe Banzai::ReferenceRedactor do
doc = Nokogiri::HTML.fragment('<a data-reference-type="issue"></a>')
node = doc.children[0]
- expect_any_instance_of(Banzai::ReferenceParser::IssueParser)
- .to receive(:nodes_visible_to_user)
- .with(user, [node])
- .and_return([node])
+ expect_next_instance_of(Banzai::ReferenceParser::IssueParser) do |instance|
+ expect(instance).to receive(:nodes_visible_to_user)
+ .with(user, [node])
+ .and_return([node])
+ end
expect(redactor.nodes_visible_to_user([node])).to eq(Set.new([node]))
end
diff --git a/spec/lib/bitbucket/connection_spec.rb b/spec/lib/bitbucket/connection_spec.rb
index ec8eac232cd..5aca93767dc 100644
--- a/spec/lib/bitbucket/connection_spec.rb
+++ b/spec/lib/bitbucket/connection_spec.rb
@@ -4,12 +4,16 @@ require 'spec_helper'
describe Bitbucket::Connection do
before do
- allow_any_instance_of(described_class).to receive(:provider).and_return(double(app_id: '', app_secret: ''))
+ allow_next_instance_of(described_class) do |instance|
+ allow(instance).to receive(:provider).and_return(double(app_id: '', app_secret: ''))
+ end
end
describe '#get' do
it 'calls OAuth2::AccessToken::get' do
- expect_any_instance_of(OAuth2::AccessToken).to receive(:get).and_return(double(parsed: true))
+ expect_next_instance_of(OAuth2::AccessToken) do |instance|
+ expect(instance).to receive(:get).and_return(double(parsed: true))
+ end
connection = described_class.new({})
@@ -19,7 +23,9 @@ describe Bitbucket::Connection do
describe '#expired?' do
it 'calls connection.expired?' do
- expect_any_instance_of(OAuth2::AccessToken).to receive(:expired?).and_return(true)
+ expect_next_instance_of(OAuth2::AccessToken) do |instance|
+ expect(instance).to receive(:expired?).and_return(true)
+ end
expect(described_class.new({}).expired?).to be_truthy
end
@@ -29,7 +35,9 @@ describe Bitbucket::Connection do
it 'calls connection.refresh!' do
response = double(token: nil, expires_at: nil, expires_in: nil, refresh_token: nil)
- expect_any_instance_of(OAuth2::AccessToken).to receive(:refresh!).and_return(response)
+ expect_next_instance_of(OAuth2::AccessToken) do |instance|
+ expect(instance).to receive(:refresh!).and_return(response)
+ end
described_class.new({}).refresh!
end
diff --git a/spec/lib/constraints/project_url_constrainer_spec.rb b/spec/lib/constraints/project_url_constrainer_spec.rb
index ac3221ecab7..963e1d5b8e0 100644
--- a/spec/lib/constraints/project_url_constrainer_spec.rb
+++ b/spec/lib/constraints/project_url_constrainer_spec.rb
@@ -37,11 +37,13 @@ describe Constraints::ProjectUrlConstrainer do
context 'and is a GET request' do
let(:request) { build_request(namespace.full_path, old_project_path) }
+
it { expect(subject.matches?(request)).to be_truthy }
end
context 'and is NOT a GET request' do
let(:request) { build_request(namespace.full_path, old_project_path, 'POST') }
+
it { expect(subject.matches?(request)).to be_falsey }
end
end
diff --git a/spec/lib/constraints/user_url_constrainer_spec.rb b/spec/lib/constraints/user_url_constrainer_spec.rb
index 15ef930420c..4f665def3bf 100644
--- a/spec/lib/constraints/user_url_constrainer_spec.rb
+++ b/spec/lib/constraints/user_url_constrainer_spec.rb
@@ -24,11 +24,13 @@ describe Constraints::UserUrlConstrainer do
context 'and is a GET request' do
let(:request) { build_request(redirect_route.path) }
+
it { expect(subject.matches?(request)).to be_truthy }
end
context 'and is NOT a GET request' do
let(:request) { build_request(redirect_route.path, 'POST') }
+
it { expect(subject.matches?(request)).to be_falsey }
end
end
diff --git a/spec/lib/container_registry/tag_spec.rb b/spec/lib/container_registry/tag_spec.rb
index 3115dfe852f..9447112e4a8 100644
--- a/spec/lib/container_registry/tag_spec.rb
+++ b/spec/lib/container_registry/tag_spec.rb
@@ -97,6 +97,29 @@ describe ContainerRegistry::Tag do
end
end
+ context 'image is a helm chart' do
+ before do
+ stub_request(:get, 'http://registry.gitlab/v2/group/test/manifests/tag')
+ .with(headers: headers)
+ .to_return(
+ status: 200,
+ body: File.read(Rails.root + 'spec/fixtures/container_registry/tag_manifest_helm.json'),
+ headers: { 'Content-Type' => 'application/vnd.docker.distribution.manifest.v2+json' })
+
+ stub_request(:get, 'http://registry.gitlab/v2/group/test/blobs/sha256:65a07b841ece031e6d0ec5eb948eacb17aa6d7294cdeb01d5348e86242951487')
+ .with(headers: { 'Accept' => 'application/vnd.cncf.helm.config.v1+json' })
+ .to_return(
+ status: 200,
+ body: File.read(Rails.root + 'spec/fixtures/container_registry/config_blob_helm.json'))
+ end
+
+ context '#created_at' do
+ subject { tag.created_at }
+
+ it { is_expected.to be_nil }
+ end
+ end
+
context 'schema v2' do
before do
stub_request(:get, 'http://registry.gitlab/v2/group/test/manifests/tag')
diff --git a/spec/lib/extracts_path_spec.rb b/spec/lib/extracts_path_spec.rb
index ffe7584a019..861ef79b2f8 100644
--- a/spec/lib/extracts_path_spec.rb
+++ b/spec/lib/extracts_path_spec.rb
@@ -88,7 +88,9 @@ describe ExtractsPath do
context 'subclass overrides get_id' do
it 'uses ref returned by get_id' do
- allow_any_instance_of(self.class).to receive(:get_id) { '38008cb17ce1466d8fec2dfa6f6ab8dcfe5cf49e' }
+ allow_next_instance_of(self.class) do |instance|
+ allow(instance).to receive(:get_id) { '38008cb17ce1466d8fec2dfa6f6ab8dcfe5cf49e' }
+ end
assign_ref_vars
diff --git a/spec/lib/gitaly/server_spec.rb b/spec/lib/gitaly/server_spec.rb
index 12dfad6698d..184d049d1fb 100644
--- a/spec/lib/gitaly/server_spec.rb
+++ b/spec/lib/gitaly/server_spec.rb
@@ -65,4 +65,26 @@ describe Gitaly::Server do
end
end
end
+
+ describe '#expected_version?' do
+ using RSpec::Parameterized::TableSyntax
+
+ where(:expected_version, :server_version, :result) do
+ '1.1.1' | '1.1.1' | true
+ '1.1.2' | '1.1.1' | false
+ '1.73.0' | '1.73.0-18-gf756ebe2' | false
+ '594c3ea3e0e5540e5915bd1c49713a0381459dd6' | '1.55.6-45-g594c3ea3' | true
+ '594c3ea3e0e5540e5915bd1c49713a0381459dd6' | '1.55.6-46-gabc123ff' | false
+ '594c3ea3e0e5540e5915bd1c49713a0381459dd6' | '1.55.6' | false
+ end
+
+ with_them do
+ it do
+ allow(Gitlab::GitalyClient).to receive(:expected_server_version).and_return(expected_version)
+ allow(server).to receive(:server_version).and_return(server_version)
+
+ expect(server.expected_version?).to eq(result)
+ end
+ end
+ end
end
diff --git a/spec/lib/gitlab/action_rate_limiter_spec.rb b/spec/lib/gitlab/application_rate_limiter_spec.rb
index 8b510a475d2..f1a0163d91c 100644
--- a/spec/lib/gitlab/action_rate_limiter_spec.rb
+++ b/spec/lib/gitlab/application_rate_limiter_spec.rb
@@ -2,30 +2,40 @@
require 'spec_helper'
-describe Gitlab::ActionRateLimiter, :clean_gitlab_redis_cache do
+describe Gitlab::ApplicationRateLimiter, :clean_gitlab_redis_cache do
let(:redis) { double('redis') }
let(:user) { create(:user) }
let(:project) { create(:project) }
+ let(:rate_limits) do
+ {
+ test_action: {
+ threshold: 1,
+ interval: 2.minutes
+ }
+ }
+ end
+ let(:key) { rate_limits.keys[0] }
- subject { described_class.new(action: :test_action, expiry_time: 100) }
+ subject { described_class }
before do
allow(Gitlab::Redis::Cache).to receive(:with).and_yield(redis)
+ allow(described_class).to receive(:rate_limits).and_return(rate_limits)
end
shared_examples 'action rate limiter' do
it 'increases the throttle count and sets the expiration time' do
expect(redis).to receive(:incr).with(cache_key).and_return(1)
- expect(redis).to receive(:expire).with(cache_key, 100)
+ expect(redis).to receive(:expire).with(cache_key, 120)
- expect(subject.throttled?(key, 1)).to be_falsy
+ expect(subject.throttled?(key, scope: scope)).to be_falsy
end
it 'returns true if the key is throttled' do
expect(redis).to receive(:incr).with(cache_key).and_return(2)
expect(redis).not_to receive(:expire)
- expect(subject.throttled?(key, 1)).to be_truthy
+ expect(subject.throttled?(key, scope: scope)).to be_truthy
end
context 'when throttling is disabled' do
@@ -33,16 +43,16 @@ describe Gitlab::ActionRateLimiter, :clean_gitlab_redis_cache do
expect(redis).not_to receive(:incr)
expect(redis).not_to receive(:expire)
- expect(subject.throttled?(key, 0)).to be_falsy
+ expect(subject.throttled?(key, scope: scope, threshold: 0)).to be_falsy
end
end
end
context 'when the key is an array of only ActiveRecord models' do
- let(:key) { [user, project] }
+ let(:scope) { [user, project] }
let(:cache_key) do
- "action_rate_limiter:test_action:user:#{user.id}:project:#{project.id}"
+ "application_rate_limiter:test_action:user:#{user.id}:project:#{project.id}"
end
it_behaves_like 'action rate limiter'
@@ -52,10 +62,10 @@ describe Gitlab::ActionRateLimiter, :clean_gitlab_redis_cache do
let(:project) { create(:project, :public, :repository) }
let(:commit) { project.repository.commit }
let(:path) { 'app/controllers/groups_controller.rb' }
- let(:key) { [project, commit, path] }
+ let(:scope) { [project, commit, path] }
let(:cache_key) do
- "action_rate_limiter:test_action:project:#{project.id}:commit:#{commit.sha}:#{path}"
+ "application_rate_limiter:test_action:project:#{project.id}:commit:#{commit.sha}:#{path}"
end
it_behaves_like 'action rate limiter'
@@ -72,7 +82,7 @@ describe Gitlab::ActionRateLimiter, :clean_gitlab_redis_cache do
let(:base_attributes) do
{
- message: 'Action_Rate_Limiter_Request',
+ message: 'Application_Rate_Limiter_Request',
env: type,
remote_ip: '127.0.0.1',
request_method: 'GET',
diff --git a/spec/lib/gitlab/asciidoc_spec.rb b/spec/lib/gitlab/asciidoc_spec.rb
index 415a6e62374..38ec04ebe81 100644
--- a/spec/lib/gitlab/asciidoc_spec.rb
+++ b/spec/lib/gitlab/asciidoc_spec.rb
@@ -451,6 +451,7 @@ module Gitlab
context 'with path to a binary file' do
let(:blob) { fake_blob(path: 'dk.png', binary: true) }
+
include_examples :invalid_include
end
@@ -500,6 +501,7 @@ module Gitlab
context 'without a commit (only ref)' do
let(:commit) { nil }
+
include_examples :valid_include
end
end
@@ -511,6 +513,7 @@ module Gitlab
context 'without a commit (only ref)' do
let(:commit) { nil }
+
include_examples :valid_include
end
end
diff --git a/spec/lib/gitlab/auth/user_auth_finders_spec.rb b/spec/lib/gitlab/auth/auth_finders_spec.rb
index dd8070c1240..82ff8e7f76c 100644
--- a/spec/lib/gitlab/auth/user_auth_finders_spec.rb
+++ b/spec/lib/gitlab/auth/auth_finders_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-describe Gitlab::Auth::UserAuthFinders do
+describe Gitlab::Auth::AuthFinders do
include described_class
let(:user) { create(:user) }
@@ -116,9 +116,9 @@ describe Gitlab::Auth::UserAuthFinders do
end
describe '#find_user_from_static_object_token' do
- context 'when request format is archive' do
+ shared_examples 'static object request' do
before do
- env['SCRIPT_NAME'] = 'project/-/archive/master.zip'
+ env['SCRIPT_NAME'] = path
end
context 'when token header param is present' do
@@ -126,7 +126,7 @@ describe Gitlab::Auth::UserAuthFinders do
it 'returns the user' do
request.headers['X-Gitlab-Static-Object-Token'] = user.static_object_token
- expect(find_user_from_static_object_token(:archive)).to eq(user)
+ expect(find_user_from_static_object_token(format)).to eq(user)
end
end
@@ -134,7 +134,7 @@ describe Gitlab::Auth::UserAuthFinders do
it 'returns the user' do
request.headers['X-Gitlab-Static-Object-Token'] = 'foobar'
- expect { find_user_from_static_object_token(:archive) }.to raise_error(Gitlab::Auth::UnauthorizedError)
+ expect { find_user_from_static_object_token(format) }.to raise_error(Gitlab::Auth::UnauthorizedError)
end
end
end
@@ -144,7 +144,7 @@ describe Gitlab::Auth::UserAuthFinders do
it 'returns the user' do
set_param(:token, user.static_object_token)
- expect(find_user_from_static_object_token(:archive)).to eq(user)
+ expect(find_user_from_static_object_token(format)).to eq(user)
end
end
@@ -152,13 +152,27 @@ describe Gitlab::Auth::UserAuthFinders do
it 'returns the user' do
set_param(:token, 'foobar')
- expect { find_user_from_static_object_token(:archive) }.to raise_error(Gitlab::Auth::UnauthorizedError)
+ expect { find_user_from_static_object_token(format) }.to raise_error(Gitlab::Auth::UnauthorizedError)
end
end
end
end
- context 'when request format is not archive' do
+ context 'when request format is archive' do
+ it_behaves_like 'static object request' do
+ let_it_be(:path) { 'project/-/archive/master.zip' }
+ let_it_be(:format) { :archive }
+ end
+ end
+
+ context 'when request format is blob' do
+ it_behaves_like 'static object request' do
+ let_it_be(:path) { 'project/raw/master/README.md' }
+ let_it_be(:format) { :blob }
+ end
+ end
+
+ context 'when request format is not archive nor blob' do
before do
env['script_name'] = 'url'
end
@@ -182,13 +196,13 @@ describe Gitlab::Auth::UserAuthFinders do
context 'when validate_access_token! returns valid' do
it 'returns user' do
- env[Gitlab::Auth::UserAuthFinders::PRIVATE_TOKEN_HEADER] = personal_access_token.token
+ env[described_class::PRIVATE_TOKEN_HEADER] = personal_access_token.token
expect(find_user_from_access_token).to eq user
end
it 'returns exception if token has no user' do
- env[Gitlab::Auth::UserAuthFinders::PRIVATE_TOKEN_HEADER] = personal_access_token.token
+ env[described_class::PRIVATE_TOKEN_HEADER] = personal_access_token.token
allow_any_instance_of(PersonalAccessToken).to receive(:user).and_return(nil)
expect { find_user_from_access_token }.to raise_error(Gitlab::Auth::UnauthorizedError)
@@ -214,7 +228,7 @@ describe Gitlab::Auth::UserAuthFinders do
let(:personal_access_token) { create(:personal_access_token, user: user) }
before do
- env[Gitlab::Auth::UserAuthFinders::PRIVATE_TOKEN_HEADER] = personal_access_token.token
+ env[described_class::PRIVATE_TOKEN_HEADER] = personal_access_token.token
end
it 'returns exception if token has no user' do
@@ -265,7 +279,7 @@ describe Gitlab::Auth::UserAuthFinders do
context 'passed as header' do
it 'returns token if valid personal_access_token' do
- env[Gitlab::Auth::UserAuthFinders::PRIVATE_TOKEN_HEADER] = personal_access_token.token
+ env[described_class::PRIVATE_TOKEN_HEADER] = personal_access_token.token
expect(find_personal_access_token).to eq personal_access_token
end
@@ -273,7 +287,7 @@ describe Gitlab::Auth::UserAuthFinders do
context 'passed as param' do
it 'returns token if valid personal_access_token' do
- set_param(Gitlab::Auth::UserAuthFinders::PRIVATE_TOKEN_PARAM, personal_access_token.token)
+ set_param(described_class::PRIVATE_TOKEN_PARAM, personal_access_token.token)
expect(find_personal_access_token).to eq personal_access_token
end
@@ -284,7 +298,7 @@ describe Gitlab::Auth::UserAuthFinders do
end
it 'returns exception if invalid personal_access_token' do
- env[Gitlab::Auth::UserAuthFinders::PRIVATE_TOKEN_HEADER] = 'invalid_token'
+ env[described_class::PRIVATE_TOKEN_HEADER] = 'invalid_token'
expect { find_personal_access_token }.to raise_error(Gitlab::Auth::UnauthorizedError)
end
@@ -321,6 +335,72 @@ describe Gitlab::Auth::UserAuthFinders do
end
end
+ describe '#find_user_from_basic_auth_job' do
+ def basic_http_auth(username, password)
+ ActionController::HttpAuthentication::Basic.encode_credentials(username, password)
+ end
+
+ def set_auth(username, password)
+ env['HTTP_AUTHORIZATION'] = basic_http_auth(username, password)
+ end
+
+ subject { find_user_from_basic_auth_job }
+
+ context 'when the request does not have AUTHORIZATION header' do
+ it { is_expected.to be_nil }
+ end
+
+ context 'with wrong credentials' do
+ it 'returns nil without user and password' do
+ set_auth(nil, nil)
+
+ is_expected.to be_nil
+ end
+
+ it 'returns nil without password' do
+ set_auth('some-user', nil)
+
+ is_expected.to be_nil
+ end
+
+ it 'returns nil without user' do
+ set_auth(nil, 'password')
+
+ is_expected.to be_nil
+ end
+
+ it 'returns nil without CI username' do
+ set_auth('user', 'password')
+
+ is_expected.to be_nil
+ end
+ end
+
+ context 'with CI username' do
+ let(:username) { ::Ci::Build::CI_REGISTRY_USER }
+ let(:user) { create(:user) }
+ let(:build) { create(:ci_build, user: user) }
+
+ it 'returns nil without password' do
+ set_auth(username, nil)
+
+ is_expected.to be_nil
+ end
+
+ it 'returns user with valid token' do
+ set_auth(username, build.token)
+
+ is_expected.to eq user
+ end
+
+ it 'raises error with invalid token' do
+ set_auth(username, 'token')
+
+ expect { subject }.to raise_error(Gitlab::Auth::UnauthorizedError)
+ end
+ end
+ end
+
describe '#validate_access_token!' do
let(:personal_access_token) { create(:personal_access_token, user: user) }
@@ -365,4 +445,58 @@ describe Gitlab::Auth::UserAuthFinders do
end
end
end
+
+ describe '#find_runner_from_token' do
+ let(:runner) { create(:ci_runner) }
+
+ context 'with API requests' do
+ before do
+ env['SCRIPT_NAME'] = '/api/endpoint'
+ end
+
+ it 'returns the runner if token is valid' do
+ set_param(:token, runner.token)
+
+ expect(find_runner_from_token).to eq(runner)
+ end
+
+ it 'returns nil if token is not present' do
+ expect(find_runner_from_token).to be_nil
+ end
+
+ it 'returns nil if token is blank' do
+ set_param(:token, '')
+
+ expect(find_runner_from_token).to be_nil
+ end
+
+ it 'returns exception if invalid token' do
+ set_param(:token, 'invalid_token')
+
+ expect { find_runner_from_token }.to raise_error(Gitlab::Auth::UnauthorizedError)
+ end
+ end
+
+ context 'without API requests' do
+ before do
+ env['SCRIPT_NAME'] = 'url.ics'
+ end
+
+ it 'returns nil if token is valid' do
+ set_param(:token, runner.token)
+
+ expect(find_runner_from_token).to be_nil
+ end
+
+ it 'returns nil if token is blank' do
+ expect(find_runner_from_token).to be_nil
+ end
+
+ it 'returns nil if invalid token' do
+ set_param(:token, 'invalid_token')
+
+ expect(find_runner_from_token).to be_nil
+ end
+ end
+ end
end
diff --git a/spec/lib/gitlab/auth/current_user_mode_spec.rb b/spec/lib/gitlab/auth/current_user_mode_spec.rb
index b93d460cf48..3b3db0f7315 100644
--- a/spec/lib/gitlab/auth/current_user_mode_spec.rb
+++ b/spec/lib/gitlab/auth/current_user_mode_spec.rb
@@ -62,69 +62,90 @@ describe Gitlab::Auth::CurrentUserMode, :do_not_mock_admin_mode do
context 'when the user is an admin' do
let(:user) { build(:user, :admin) }
- it 'is false by default' do
- expect(subject.admin_mode?).to be(false)
- end
-
- it 'cannot be enabled with an invalid password' do
- subject.enable_admin_mode!(password: nil)
-
- expect(subject.admin_mode?).to be(false)
- end
+ context 'when admin mode not requested' do
+ it 'is false by default' do
+ expect(subject.admin_mode?).to be(false)
+ end
- it 'can be enabled with a valid password' do
- subject.enable_admin_mode!(password: user.password)
+ it 'raises exception if we try to enable it' do
+ expect do
+ subject.enable_admin_mode!(password: user.password)
+ end.to raise_error(::Gitlab::Auth::CurrentUserMode::NotRequestedError)
- expect(subject.admin_mode?).to be(true)
+ expect(subject.admin_mode?).to be(false)
+ end
end
- it 'can be disabled' do
- subject.enable_admin_mode!(password: user.password)
- subject.disable_admin_mode!
-
- expect(subject.admin_mode?).to be(false)
- end
+ context 'when admin mode requested first' do
+ before do
+ subject.request_admin_mode!
+ end
- it 'will expire in the future' do
- subject.enable_admin_mode!(password: user.password)
- expect(subject.admin_mode?).to be(true), 'admin mode is not active in the present'
+ it 'is false by default' do
+ expect(subject.admin_mode?).to be(false)
+ end
- Timecop.freeze(Gitlab::Auth::CurrentUserMode::MAX_ADMIN_MODE_TIME.from_now) do
- # in the future this will be a new request, simulate by clearing the RequestStore
- Gitlab::SafeRequestStore.clear!
+ it 'cannot be enabled with an invalid password' do
+ subject.enable_admin_mode!(password: nil)
- expect(subject.admin_mode?).to be(false), 'admin mode did not expire in the future'
+ expect(subject.admin_mode?).to be(false)
end
- end
- context 'skipping password validation' do
it 'can be enabled with a valid password' do
- subject.enable_admin_mode!(password: user.password, skip_password_validation: true)
+ subject.enable_admin_mode!(password: user.password)
expect(subject.admin_mode?).to be(true)
end
- it 'can be enabled with an invalid password' do
- subject.enable_admin_mode!(skip_password_validation: true)
+ it 'can be disabled' do
+ subject.enable_admin_mode!(password: user.password)
+ subject.disable_admin_mode!
- expect(subject.admin_mode?).to be(true)
+ expect(subject.admin_mode?).to be(false)
end
- end
- context 'with two independent sessions' do
- let(:another_session) { {} }
- let(:another_subject) { described_class.new(user) }
+ it 'will expire in the future' do
+ subject.enable_admin_mode!(password: user.password)
+ expect(subject.admin_mode?).to be(true), 'admin mode is not active in the present'
- before do
- allow(ActiveSession).to receive(:list_sessions).with(user).and_return([session, another_session])
+ Timecop.freeze(Gitlab::Auth::CurrentUserMode::MAX_ADMIN_MODE_TIME.from_now) do
+ # in the future this will be a new request, simulate by clearing the RequestStore
+ Gitlab::SafeRequestStore.clear!
+
+ expect(subject.admin_mode?).to be(false), 'admin mode did not expire in the future'
+ end
end
- it 'can be enabled in one and seen in the other' do
- Gitlab::Session.with_session(another_session) do
- another_subject.enable_admin_mode!(password: user.password)
+ context 'skipping password validation' do
+ it 'can be enabled with a valid password' do
+ subject.enable_admin_mode!(password: user.password, skip_password_validation: true)
+
+ expect(subject.admin_mode?).to be(true)
end
- expect(subject.admin_mode?).to be(true)
+ it 'can be enabled with an invalid password' do
+ subject.enable_admin_mode!(skip_password_validation: true)
+
+ expect(subject.admin_mode?).to be(true)
+ end
+ end
+
+ context 'with two independent sessions' do
+ let(:another_session) { {} }
+ let(:another_subject) { described_class.new(user) }
+
+ before do
+ allow(ActiveSession).to receive(:list_sessions).with(user).and_return([session, another_session])
+ end
+
+ it 'can be enabled in one and seen in the other' do
+ Gitlab::Session.with_session(another_session) do
+ another_subject.request_admin_mode!
+ another_subject.enable_admin_mode!(password: user.password)
+ end
+
+ expect(subject.admin_mode?).to be(true)
+ end
end
end
end
@@ -134,16 +155,28 @@ describe Gitlab::Auth::CurrentUserMode, :do_not_mock_admin_mode do
let(:user) { build(:user, :admin) }
it 'creates a timestamp in the session' do
+ subject.request_admin_mode!
subject.enable_admin_mode!(password: user.password)
expect(session).to include(expected_session_entry(be_within(1.second).of Time.now))
end
end
+ describe '#enable_sessionless_admin_mode!' do
+ let(:user) { build(:user, :admin) }
+
+ it 'enabled admin mode without password' do
+ subject.enable_sessionless_admin_mode!
+
+ expect(subject.admin_mode?).to be(true)
+ end
+ end
+
describe '#disable_admin_mode!' do
let(:user) { build(:user, :admin) }
it 'sets the session timestamp to nil' do
+ subject.request_admin_mode!
subject.disable_admin_mode!
expect(session).to include(expected_session_entry(be_nil))
diff --git a/spec/lib/gitlab/auth/ip_rate_limiter_spec.rb b/spec/lib/gitlab/auth/ip_rate_limiter_spec.rb
index 8d6bf45ab30..aea1b2921b6 100644
--- a/spec/lib/gitlab/auth/ip_rate_limiter_spec.rb
+++ b/spec/lib/gitlab/auth/ip_rate_limiter_spec.rb
@@ -62,4 +62,36 @@ describe Gitlab::Auth::IpRateLimiter, :use_clean_rails_memory_store_caching do
it_behaves_like 'whitelisted IPs'
end
end
+
+ shared_examples 'skips the rate limiter' do
+ it 'does not call Rack::Attack::Allow2Ban.reset!' do
+ expect(Rack::Attack::Allow2Ban).not_to receive(:reset!)
+
+ subject.reset!
+ end
+
+ it 'does not call Rack::Attack::Allow2Ban.banned?' do
+ expect(Rack::Attack::Allow2Ban).not_to receive(:banned?)
+
+ subject.banned?
+ end
+
+ it 'does not call Rack::Attack::Allow2Ban.filter' do
+ expect(Rack::Attack::Allow2Ban).not_to receive(:filter)
+
+ subject.register_fail!
+ end
+ end
+
+ context 'when IP is whitlisted' do
+ let(:ip) { '127.0.0.1' }
+
+ it_behaves_like 'skips the rate limiter'
+ end
+
+ context 'when rate limiter is disabled' do
+ let(:options) { { enabled: false } }
+
+ it_behaves_like 'skips the rate limiter'
+ end
end
diff --git a/spec/lib/gitlab/auth/ldap/access_spec.rb b/spec/lib/gitlab/auth/ldap/access_spec.rb
index ecdd5b29986..f9eb4a30190 100644
--- a/spec/lib/gitlab/auth/ldap/access_spec.rb
+++ b/spec/lib/gitlab/auth/ldap/access_spec.rb
@@ -136,7 +136,9 @@ describe Gitlab::Auth::LDAP::Access do
context 'without ActiveDirectory enabled' do
before do
allow(Gitlab::Auth::LDAP::Config).to receive(:enabled?).and_return(true)
- allow_any_instance_of(Gitlab::Auth::LDAP::Config).to receive(:active_directory).and_return(false)
+ allow_next_instance_of(Gitlab::Auth::LDAP::Config) do |instance|
+ allow(instance).to receive(:active_directory).and_return(false)
+ end
end
it 'returns true' do
diff --git a/spec/lib/gitlab/auth/ldap/auth_hash_spec.rb b/spec/lib/gitlab/auth/ldap/auth_hash_spec.rb
index adb8e138ca7..f1050b9f830 100644
--- a/spec/lib/gitlab/auth/ldap/auth_hash_spec.rb
+++ b/spec/lib/gitlab/auth/ldap/auth_hash_spec.rb
@@ -58,7 +58,9 @@ describe Gitlab::Auth::LDAP::AuthHash do
end
before do
- allow_any_instance_of(Gitlab::Auth::LDAP::Config).to receive(:attributes).and_return(attributes)
+ allow_next_instance_of(Gitlab::Auth::LDAP::Config) do |instance|
+ allow(instance).to receive(:attributes).and_return(attributes)
+ end
end
it "has the correct username" do
diff --git a/spec/lib/gitlab/auth/ldap/authentication_spec.rb b/spec/lib/gitlab/auth/ldap/authentication_spec.rb
index e68e83e4617..ebaf8383ce5 100644
--- a/spec/lib/gitlab/auth/ldap/authentication_spec.rb
+++ b/spec/lib/gitlab/auth/ldap/authentication_spec.rb
@@ -18,8 +18,9 @@ describe Gitlab::Auth::LDAP::Authentication do
# try only to fake the LDAP call
adapter = double('adapter', dn: dn).as_null_object
- allow_any_instance_of(described_class)
- .to receive(:adapter).and_return(adapter)
+ allow_next_instance_of(described_class) do |instance|
+ allow(instance).to receive(:adapter).and_return(adapter)
+ end
expect(described_class.login(login, password)).to be_truthy
end
@@ -27,8 +28,9 @@ describe Gitlab::Auth::LDAP::Authentication do
it "is false if the user does not exist" do
# try only to fake the LDAP call
adapter = double('adapter', dn: dn).as_null_object
- allow_any_instance_of(described_class)
- .to receive(:adapter).and_return(adapter)
+ allow_next_instance_of(described_class) do |instance|
+ allow(instance).to receive(:adapter).and_return(adapter)
+ end
expect(described_class.login(login, password)).to be_falsey
end
@@ -38,8 +40,9 @@ describe Gitlab::Auth::LDAP::Authentication do
# try only to fake the LDAP call
adapter = double('adapter', bind_as: nil).as_null_object
- allow_any_instance_of(described_class)
- .to receive(:adapter).and_return(adapter)
+ allow_next_instance_of(described_class) do |instance|
+ allow(instance).to receive(:adapter).and_return(adapter)
+ end
expect(described_class.login(login, password)).to be_falsey
end
diff --git a/spec/lib/gitlab/auth/o_auth/user_spec.rb b/spec/lib/gitlab/auth/o_auth/user_spec.rb
index 1e3da4f7c2d..c621c0aa935 100644
--- a/spec/lib/gitlab/auth/o_auth/user_spec.rb
+++ b/spec/lib/gitlab/auth/o_auth/user_spec.rb
@@ -253,6 +253,7 @@ describe Gitlab::Auth::OAuth::User do
context "and LDAP user has an account already" do
let!(:existing_user) { create(:omniauth_user, name: 'John Doe', email: 'john@example.com', extern_uid: dn, provider: 'ldapmain', username: 'john') }
+
it "adds the omniauth identity to the LDAP account" do
allow(Gitlab::Auth::LDAP::Person).to receive(:find_by_uid).and_return(ldap_user)
@@ -396,7 +397,9 @@ describe Gitlab::Auth::OAuth::User do
context "and no account for the LDAP user" do
context 'dont block on create (LDAP)' do
before do
- allow_any_instance_of(Gitlab::Auth::LDAP::Config).to receive_messages(block_auto_created_users: false)
+ allow_next_instance_of(Gitlab::Auth::LDAP::Config) do |instance|
+ allow(instance).to receive_messages(block_auto_created_users: false)
+ end
end
it do
@@ -408,7 +411,9 @@ describe Gitlab::Auth::OAuth::User do
context 'block on create (LDAP)' do
before do
- allow_any_instance_of(Gitlab::Auth::LDAP::Config).to receive_messages(block_auto_created_users: true)
+ allow_next_instance_of(Gitlab::Auth::LDAP::Config) do |instance|
+ allow(instance).to receive_messages(block_auto_created_users: true)
+ end
end
it do
@@ -424,7 +429,9 @@ describe Gitlab::Auth::OAuth::User do
context 'dont block on create (LDAP)' do
before do
- allow_any_instance_of(Gitlab::Auth::LDAP::Config).to receive_messages(block_auto_created_users: false)
+ allow_next_instance_of(Gitlab::Auth::LDAP::Config) do |instance|
+ allow(instance).to receive_messages(block_auto_created_users: false)
+ end
end
it do
@@ -436,7 +443,9 @@ describe Gitlab::Auth::OAuth::User do
context 'block on create (LDAP)' do
before do
- allow_any_instance_of(Gitlab::Auth::LDAP::Config).to receive_messages(block_auto_created_users: true)
+ allow_next_instance_of(Gitlab::Auth::LDAP::Config) do |instance|
+ allow(instance).to receive_messages(block_auto_created_users: true)
+ end
end
it do
@@ -480,7 +489,9 @@ describe Gitlab::Auth::OAuth::User do
context 'dont block on create (LDAP)' do
before do
- allow_any_instance_of(Gitlab::Auth::LDAP::Config).to receive_messages(block_auto_created_users: false)
+ allow_next_instance_of(Gitlab::Auth::LDAP::Config) do |instance|
+ allow(instance).to receive_messages(block_auto_created_users: false)
+ end
end
it do
@@ -492,7 +503,9 @@ describe Gitlab::Auth::OAuth::User do
context 'block on create (LDAP)' do
before do
- allow_any_instance_of(Gitlab::Auth::LDAP::Config).to receive_messages(block_auto_created_users: true)
+ allow_next_instance_of(Gitlab::Auth::LDAP::Config) do |instance|
+ allow(instance).to receive_messages(block_auto_created_users: true)
+ end
end
it do
diff --git a/spec/lib/gitlab/auth/request_authenticator_spec.rb b/spec/lib/gitlab/auth/request_authenticator_spec.rb
index f7fff389d88..4dbcd0df302 100644
--- a/spec/lib/gitlab/auth/request_authenticator_spec.rb
+++ b/spec/lib/gitlab/auth/request_authenticator_spec.rb
@@ -66,4 +66,28 @@ describe Gitlab::Auth::RequestAuthenticator do
expect(subject.find_sessionless_user([:api])).to be_blank
end
end
+
+ describe '#runner' do
+ let!(:runner) { build(:ci_runner) }
+
+ it 'returns the runner using #find_runner_from_token' do
+ expect_any_instance_of(described_class)
+ .to receive(:find_runner_from_token)
+ .and_return(runner)
+
+ expect(subject.runner).to eq runner
+ end
+
+ it 'returns nil if no runner is found' do
+ expect(subject.runner).to be_blank
+ end
+
+ it 'rescue Gitlab::Auth::AuthenticationError exceptions' do
+ expect_any_instance_of(described_class)
+ .to receive(:find_runner_from_token)
+ .and_raise(Gitlab::Auth::UnauthorizedError)
+
+ expect(subject.runner).to be_blank
+ end
+ end
end
diff --git a/spec/lib/gitlab/auth_spec.rb b/spec/lib/gitlab/auth_spec.rb
index dc4b0b5b1b6..311cbd4dd7e 100644
--- a/spec/lib/gitlab/auth_spec.rb
+++ b/spec/lib/gitlab/auth_spec.rb
@@ -2,8 +2,9 @@
require 'spec_helper'
-describe Gitlab::Auth do
+describe Gitlab::Auth, :use_clean_rails_memory_store_caching do
let(:gl_auth) { described_class }
+
set(:project) { create(:project) }
describe 'constants' do
@@ -79,6 +80,66 @@ describe Gitlab::Auth do
end
describe 'find_for_git_client' do
+ describe 'rate limiting' do
+ before do
+ stub_rack_attack_setting(enabled: true, ip_whitelist: [])
+ end
+
+ context 'when IP is already banned' do
+ subject { gl_auth.find_for_git_client('username', 'password', project: nil, ip: 'ip') }
+
+ before do
+ expect_next_instance_of(Gitlab::Auth::IpRateLimiter) do |rate_limiter|
+ expect(rate_limiter).to receive(:banned?).and_return(true)
+ end
+ end
+
+ it 'raises an IpBlacklisted exception' do
+ expect { subject }.to raise_error(Gitlab::Auth::IpBlacklisted)
+ end
+ end
+
+ context 'for CI registry user' do
+ let_it_be(:build) { create(:ci_build, :running) }
+
+ it 'skips rate limiting for successful auth' do
+ expect_next_instance_of(Gitlab::Auth::IpRateLimiter) do |rate_limiter|
+ expect(rate_limiter).not_to receive(:reset!)
+ end
+
+ gl_auth.find_for_git_client('gitlab-ci-token', build.token, project: build.project, ip: 'ip')
+ end
+
+ it 'skips rate limiting for failed auth' do
+ expect_next_instance_of(Gitlab::Auth::IpRateLimiter) do |rate_limiter|
+ expect(rate_limiter).not_to receive(:register_fail!)
+ end
+
+ gl_auth.find_for_git_client('gitlab-ci-token', 'wrong_token', project: build.project, ip: 'ip')
+ end
+ end
+
+ context 'for other users' do
+ let_it_be(:user) { create(:user) }
+
+ it 'resets rate limit for successful auth' do
+ expect_next_instance_of(Gitlab::Auth::IpRateLimiter) do |rate_limiter|
+ expect(rate_limiter).to receive(:reset!)
+ end
+
+ gl_auth.find_for_git_client(user.username, user.password, project: nil, ip: 'ip')
+ end
+
+ it 'registers failure for failed auth' do
+ expect_next_instance_of(Gitlab::Auth::IpRateLimiter) do |rate_limiter|
+ expect(rate_limiter).to receive(:register_fail!)
+ end
+
+ gl_auth.find_for_git_client(user.username, 'wrong_password', project: nil, ip: 'ip')
+ end
+ end
+ end
+
context 'build token' do
subject { gl_auth.find_for_git_client('gitlab-ci-token', build.token, project: project, ip: 'ip') }
@@ -86,10 +147,6 @@ describe Gitlab::Auth do
let!(:build) { create(:ci_build, :running) }
let(:project) { build.project }
- before do
- expect(gl_auth).not_to receive(:rate_limit!).with('ip', success: true, login: 'gitlab-ci-token')
- end
-
it 'recognises user-less build' do
expect(subject).to eq(Gitlab::Auth::Result.new(nil, build.project, :ci, described_class.build_authentication_abilities))
end
@@ -106,10 +163,6 @@ describe Gitlab::Auth do
let!(:build) { create(:ci_build, status: build_status) }
let(:project) { build.project }
- before do
- expect(gl_auth).not_to receive(:rate_limit!).with('ip', success: false, login: 'gitlab-ci-token')
- end
-
it 'denies authentication' do
expect(subject).to eq(Gitlab::Auth::Result.new)
end
@@ -121,14 +174,12 @@ describe Gitlab::Auth do
project.create_drone_ci_service(active: true)
project.drone_ci_service.update(token: 'token')
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: true, login: 'drone-ci-token')
expect(gl_auth.find_for_git_client('drone-ci-token', 'token', project: project, ip: 'ip')).to eq(Gitlab::Auth::Result.new(nil, project, :ci, described_class.build_authentication_abilities))
end
it 'recognizes master passwords' do
user = create(:user, password: 'password')
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: true, login: user.username)
expect(gl_auth.find_for_git_client(user.username, 'password', project: nil, ip: 'ip')).to eq(Gitlab::Auth::Result.new(user, nil, :gitlab_or_ldap, described_class.full_authentication_abilities))
end
@@ -145,7 +196,6 @@ describe Gitlab::Auth do
user = create(:user)
token = Gitlab::LfsToken.new(user).token
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: true, login: user.username)
expect(gl_auth.find_for_git_client(user.username, token, project: nil, ip: 'ip')).to eq(Gitlab::Auth::Result.new(user, nil, :lfs_token, described_class.read_write_project_authentication_abilities))
end
@@ -153,7 +203,6 @@ describe Gitlab::Auth do
key = create(:deploy_key)
token = Gitlab::LfsToken.new(key).token
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: true, login: "lfs+deploy-key-#{key.id}")
expect(gl_auth.find_for_git_client("lfs+deploy-key-#{key.id}", token, project: nil, ip: 'ip')).to eq(Gitlab::Auth::Result.new(key, nil, :lfs_deploy_token, described_class.read_only_authentication_abilities))
end
@@ -171,7 +220,6 @@ describe Gitlab::Auth do
create(:deploy_keys_project, :write_access, deploy_key: key, project: project)
token = Gitlab::LfsToken.new(key).token
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: true, login: "lfs+deploy-key-#{key.id}")
expect(gl_auth.find_for_git_client("lfs+deploy-key-#{key.id}", token, project: project, ip: 'ip')).to eq(Gitlab::Auth::Result.new(key, nil, :lfs_deploy_token, described_class.read_write_authentication_abilities))
end
@@ -179,7 +227,6 @@ describe Gitlab::Auth do
key = create(:deploy_key)
token = Gitlab::LfsToken.new(key).token
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: true, login: "lfs+deploy-key-#{key.id}")
expect(gl_auth.find_for_git_client("lfs+deploy-key-#{key.id}", token, project: project, ip: 'ip')).to eq(Gitlab::Auth::Result.new(key, nil, :lfs_deploy_token, described_class.read_only_authentication_abilities))
end
end
@@ -190,14 +237,12 @@ describe Gitlab::Auth do
let(:application) { Doorkeeper::Application.create!(name: 'MyApp', redirect_uri: 'https://app.com', owner: user) }
it 'succeeds for OAuth tokens with the `api` scope' do
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: true, login: 'oauth2')
expect(gl_auth.find_for_git_client("oauth2", token_w_api_scope.token, project: nil, ip: 'ip')).to eq(Gitlab::Auth::Result.new(user, nil, :oauth, described_class.full_authentication_abilities))
end
it 'fails for OAuth tokens with other scopes' do
token = Doorkeeper::AccessToken.create!(application_id: application.id, resource_owner_id: user.id, scopes: 'read_user')
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: false, login: 'oauth2')
expect(gl_auth.find_for_git_client("oauth2", token.token, project: nil, ip: 'ip')).to eq(Gitlab::Auth::Result.new(nil, nil))
end
@@ -257,7 +302,7 @@ describe Gitlab::Auth do
end
context 'while using regular user and password' do
- it 'falls through lfs authentication' do
+ it 'goes through lfs authentication' do
user = create(
:user,
username: 'normal_user',
@@ -268,7 +313,7 @@ describe Gitlab::Auth do
.to eq(Gitlab::Auth::Result.new(user, nil, :gitlab_or_ldap, described_class.full_authentication_abilities))
end
- it 'fails through oauth authentication when the username is oauth2' do
+ it 'goes through oauth authentication when the username is oauth2' do
user = create(
:user,
username: 'oauth2',
@@ -283,7 +328,6 @@ describe Gitlab::Auth do
it 'returns double nil for invalid credentials' do
login = 'foo'
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: false, login: login)
expect(gl_auth.find_for_git_client(login, 'bar', project: nil, ip: 'ip')).to eq(Gitlab::Auth::Result.new)
end
@@ -301,10 +345,6 @@ describe Gitlab::Auth do
let(:user) { create(:user, username: username, password: 'my-secret') }
let(:deploy_token) { create(:deploy_token, username: username, read_registry: false, projects: [project]) }
- before do
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: true, login: username)
- end
-
it 'succeeds for the token' do
auth_success = Gitlab::Auth::Result.new(deploy_token, project, :deploy_token, [:download_code])
@@ -328,13 +368,11 @@ describe Gitlab::Auth do
it 'succeeds for the right token' do
auth_success = Gitlab::Auth::Result.new(read_repository, project, :deploy_token, [:download_code])
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: true, login: 'deployer')
expect(gl_auth.find_for_git_client('deployer', read_repository.token, project: project, ip: 'ip'))
.to eq(auth_success)
end
it 'fails for the wrong token' do
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: false, login: 'deployer')
expect(gl_auth.find_for_git_client('deployer', read_registry.token, project: project, ip: 'ip'))
.to eq(auth_failure)
end
@@ -347,13 +385,11 @@ describe Gitlab::Auth do
it 'succeeds for the right token' do
auth_success = Gitlab::Auth::Result.new(read_repository, project, :deploy_token, [:download_code])
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: true, login: 'deployer')
expect(gl_auth.find_for_git_client('deployer', read_repository.token, project: project, ip: 'ip'))
.to eq(auth_success)
end
it 'fails for the wrong token' do
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: false, login: 'deployer')
expect(gl_auth.find_for_git_client('deployer', read_registry.token, project: project, ip: 'ip'))
.to eq(auth_failure)
end
@@ -367,7 +403,6 @@ describe Gitlab::Auth do
it 'succeeds when login and token are valid' do
auth_success = Gitlab::Auth::Result.new(deploy_token, project, :deploy_token, [:download_code])
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: true, login: login)
expect(gl_auth.find_for_git_client(login, deploy_token.token, project: project, ip: 'ip'))
.to eq(auth_success)
end
@@ -376,32 +411,27 @@ describe Gitlab::Auth do
deploy_token = create(:deploy_token, username: 'deployer', read_registry: false, projects: [project])
auth_success = Gitlab::Auth::Result.new(deploy_token, project, :deploy_token, [:download_code])
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: true, login: 'deployer')
expect(gl_auth.find_for_git_client('deployer', deploy_token.token, project: project, ip: 'ip'))
.to eq(auth_success)
end
it 'fails when login is not valid' do
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: false, login: 'random_login')
expect(gl_auth.find_for_git_client('random_login', deploy_token.token, project: project, ip: 'ip'))
.to eq(auth_failure)
end
it 'fails when token is not valid' do
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: false, login: login)
expect(gl_auth.find_for_git_client(login, '123123', project: project, ip: 'ip'))
.to eq(auth_failure)
end
it 'fails if token is nil' do
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: false, login: login)
expect(gl_auth.find_for_git_client(login, nil, project: project, ip: 'ip'))
.to eq(auth_failure)
end
it 'fails if token is not related to project' do
another_deploy_token = create(:deploy_token)
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: false, login: login)
expect(gl_auth.find_for_git_client(login, another_deploy_token.token, project: project, ip: 'ip'))
.to eq(auth_failure)
end
@@ -410,7 +440,6 @@ describe Gitlab::Auth do
deploy_token.revoke!
expect(deploy_token.revoked?).to be_truthy
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: false, login: 'deploy-token')
expect(gl_auth.find_for_git_client('deploy-token', deploy_token.token, project: project, ip: 'ip'))
.to eq(auth_failure)
end
@@ -428,31 +457,26 @@ describe Gitlab::Auth do
it 'succeeds when login and token are valid' do
auth_success = Gitlab::Auth::Result.new(deploy_token, project, :deploy_token, [:read_container_image])
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: true, login: login)
expect(gl_auth.find_for_git_client(login, deploy_token.token, project: nil, ip: 'ip'))
.to eq(auth_success)
end
it 'fails when login is not valid' do
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: false, login: 'random_login')
expect(gl_auth.find_for_git_client('random_login', deploy_token.token, project: project, ip: 'ip'))
.to eq(auth_failure)
end
it 'fails when token is not valid' do
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: false, login: login)
expect(gl_auth.find_for_git_client(login, '123123', project: project, ip: 'ip'))
.to eq(auth_failure)
end
it 'fails if token is nil' do
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: false, login: login)
expect(gl_auth.find_for_git_client(login, nil, project: nil, ip: 'ip'))
.to eq(auth_failure)
end
it 'fails if token is not related to project' do
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: false, login: login)
expect(gl_auth.find_for_git_client(login, 'abcdef', project: nil, ip: 'ip'))
.to eq(auth_failure)
end
@@ -461,7 +485,6 @@ describe Gitlab::Auth do
deploy_token.revoke!
expect(deploy_token.revoked?).to be_truthy
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: false, login: 'deploy-token')
expect(gl_auth.find_for_git_client('deploy-token', deploy_token.token, project: nil, ip: 'ip'))
.to eq(auth_failure)
end
@@ -473,7 +496,6 @@ describe Gitlab::Auth do
end
it 'fails when login and token are valid' do
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: false, login: login)
expect(gl_auth.find_for_git_client(login, deploy_token.token, project: nil, ip: 'ip'))
.to eq(auth_failure)
end
@@ -586,7 +608,6 @@ describe Gitlab::Auth do
private
def expect_results_with_abilities(personal_access_token, abilities, success = true)
- expect(gl_auth).to receive(:rate_limit!).with('ip', success: success, login: '')
expect(gl_auth.find_for_git_client('', personal_access_token&.token, project: nil, ip: 'ip'))
.to eq(Gitlab::Auth::Result.new(personal_access_token&.user, nil, personal_access_token.nil? ? nil : :personal_access_token, abilities))
end
diff --git a/spec/lib/gitlab/background_migration/backfill_project_fullpath_in_repo_config_spec.rb b/spec/lib/gitlab/background_migration/backfill_project_fullpath_in_repo_config_spec.rb
index c66d7cd6148..5cad479ff05 100644
--- a/spec/lib/gitlab/background_migration/backfill_project_fullpath_in_repo_config_spec.rb
+++ b/spec/lib/gitlab/background_migration/backfill_project_fullpath_in_repo_config_spec.rb
@@ -10,6 +10,7 @@ describe Gitlab::BackgroundMigration::BackfillProjectFullpathInRepoConfig, :migr
describe described_class::Storage::HashedProject do
let(:project) { double(id: 555) }
+
subject(:project_storage) { described_class.new(project) }
it 'has the correct disk_path' do
@@ -19,6 +20,7 @@ describe Gitlab::BackgroundMigration::BackfillProjectFullpathInRepoConfig, :migr
describe described_class::Storage::LegacyProject do
let(:project) { double(full_path: 'this/is/the/full/path') }
+
subject(:project_storage) { described_class.new(project) }
it 'has the correct disk_path' do
@@ -28,6 +30,7 @@ describe Gitlab::BackgroundMigration::BackfillProjectFullpathInRepoConfig, :migr
describe described_class::Project do
let(:project_record) { projects.create!(namespace_id: subgroup.id, name: 'baz', path: 'baz') }
+
subject(:project) { described_class.find(project_record.id) }
describe '#full_path' do
diff --git a/spec/lib/gitlab/bare_repository_import/importer_spec.rb b/spec/lib/gitlab/bare_repository_import/importer_spec.rb
index ddb1d3cea21..75a23d4f49e 100644
--- a/spec/lib/gitlab/bare_repository_import/importer_spec.rb
+++ b/spec/lib/gitlab/bare_repository_import/importer_spec.rb
@@ -75,7 +75,9 @@ describe Gitlab::BareRepositoryImport::Importer, :seed_helper do
end
it 'does not schedule an import' do
- expect_any_instance_of(Project).not_to receive(:import_schedule)
+ expect_next_instance_of(Project) do |instance|
+ expect(instance).not_to receive(:import_schedule)
+ end
importer.create_project_if_needed
end
diff --git a/spec/lib/gitlab/branch_push_merge_commit_analyzer_spec.rb b/spec/lib/gitlab/branch_push_merge_commit_analyzer_spec.rb
index 1e969542975..a27f14cd621 100644
--- a/spec/lib/gitlab/branch_push_merge_commit_analyzer_spec.rb
+++ b/spec/lib/gitlab/branch_push_merge_commit_analyzer_spec.rb
@@ -49,6 +49,7 @@ describe Gitlab::BranchPushMergeCommitAnalyzer do
context 'when relevant_commit_ids is provided' do
let(:relevant_commit_id) { '8a994512e8c8f0dfcf22bb16df6e876be7a61036' }
+
subject { described_class.new(commits, relevant_commit_ids: [relevant_commit_id]) }
it 'returns correct merge commit' do
diff --git a/spec/lib/gitlab/cache/ci/project_pipeline_status_spec.rb b/spec/lib/gitlab/cache/ci/project_pipeline_status_spec.rb
index 91e7edaf704..c2816f35cec 100644
--- a/spec/lib/gitlab/cache/ci/project_pipeline_status_spec.rb
+++ b/spec/lib/gitlab/cache/ci/project_pipeline_status_spec.rb
@@ -9,7 +9,9 @@ describe Gitlab::Cache::Ci::ProjectPipelineStatus, :clean_gitlab_redis_cache do
describe '.load_for_project' do
it "loads the status" do
- expect_any_instance_of(described_class).to receive(:load_status)
+ expect_next_instance_of(described_class) do |instance|
+ expect(instance).to receive(:load_status)
+ end
described_class.load_for_project(project)
end
diff --git a/spec/lib/gitlab/chat/command_spec.rb b/spec/lib/gitlab/chat/command_spec.rb
index 46d23ab2b62..f7f344bf786 100644
--- a/spec/lib/gitlab/chat/command_spec.rb
+++ b/spec/lib/gitlab/chat/command_spec.rb
@@ -44,7 +44,7 @@ describe Gitlab::Chat::Command do
let(:pipeline) { command.create_pipeline }
before do
- stub_repository_ci_yaml_file(sha: project.commit.id)
+ stub_ci_pipeline_yaml_file(gitlab_ci_yaml)
project.add_developer(chat_name.user)
end
diff --git a/spec/lib/gitlab/checks/branch_check_spec.rb b/spec/lib/gitlab/checks/branch_check_spec.rb
index 71b64a3b9df..7cc1722dfd4 100644
--- a/spec/lib/gitlab/checks/branch_check_spec.rb
+++ b/spec/lib/gitlab/checks/branch_check_spec.rb
@@ -32,7 +32,9 @@ describe Gitlab::Checks::BranchCheck do
end
it 'raises an error if the user is not allowed to merge to protected branches' do
- expect_any_instance_of(Gitlab::Checks::MatchingMergeRequest).to receive(:match?).and_return(true)
+ expect_next_instance_of(Gitlab::Checks::MatchingMergeRequest) do |instance|
+ expect(instance).to receive(:match?).and_return(true)
+ end
expect(user_access).to receive(:can_merge_to_branch?).and_return(false)
expect(user_access).to receive(:can_push_to_branch?).and_return(false)
diff --git a/spec/lib/gitlab/checks/change_access_spec.rb b/spec/lib/gitlab/checks/change_access_spec.rb
index 3a8e8f67e16..dfc8c59fd74 100644
--- a/spec/lib/gitlab/checks/change_access_spec.rb
+++ b/spec/lib/gitlab/checks/change_access_spec.rb
@@ -14,31 +14,41 @@ describe Gitlab::Checks::ChangeAccess do
end
it 'calls pushes checks' do
- expect_any_instance_of(Gitlab::Checks::PushCheck).to receive(:validate!)
+ expect_next_instance_of(Gitlab::Checks::PushCheck) do |instance|
+ expect(instance).to receive(:validate!)
+ end
subject.exec
end
it 'calls branches checks' do
- expect_any_instance_of(Gitlab::Checks::BranchCheck).to receive(:validate!)
+ expect_next_instance_of(Gitlab::Checks::BranchCheck) do |instance|
+ expect(instance).to receive(:validate!)
+ end
subject.exec
end
it 'calls tags checks' do
- expect_any_instance_of(Gitlab::Checks::TagCheck).to receive(:validate!)
+ expect_next_instance_of(Gitlab::Checks::TagCheck) do |instance|
+ expect(instance).to receive(:validate!)
+ end
subject.exec
end
it 'calls lfs checks' do
- expect_any_instance_of(Gitlab::Checks::LfsCheck).to receive(:validate!)
+ expect_next_instance_of(Gitlab::Checks::LfsCheck) do |instance|
+ expect(instance).to receive(:validate!)
+ end
subject.exec
end
it 'calls diff checks' do
- expect_any_instance_of(Gitlab::Checks::DiffCheck).to receive(:validate!)
+ expect_next_instance_of(Gitlab::Checks::DiffCheck) do |instance|
+ expect(instance).to receive(:validate!)
+ end
subject.exec
end
diff --git a/spec/lib/gitlab/ci/ansi2json/result_spec.rb b/spec/lib/gitlab/ci/ansi2json/result_spec.rb
new file mode 100644
index 00000000000..5b7b5481400
--- /dev/null
+++ b/spec/lib/gitlab/ci/ansi2json/result_spec.rb
@@ -0,0 +1,42 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::Ci::Ansi2json::Result do
+ let(:stream) { StringIO.new('hello') }
+ let(:state) { Gitlab::Ci::Ansi2json::State.new(nil, stream.size) }
+ let(:offset) { 0 }
+ let(:params) do
+ { lines: [], state: state, append: false, truncated: false, offset: offset, stream: stream }
+ end
+
+ subject { described_class.new(params) }
+
+ describe '#size' do
+ before do
+ stream.seek(5) # move stream cursor to the end
+ end
+
+ context 'when offset is at the start' do
+ let(:offset) { 0 }
+
+ it 'returns the full size' do
+ expect(subject.size).to eq(5)
+ end
+ end
+
+ context 'when offset is not zero' do
+ let(:offset) { 2 }
+
+ it 'returns the remaining size' do
+ expect(subject.size).to eq(3)
+ end
+ end
+ end
+
+ describe '#total' do
+ it 'returns size of stread' do
+ expect(subject.total).to eq(5)
+ end
+ end
+end
diff --git a/spec/lib/gitlab/ci/ansi2json/style_spec.rb b/spec/lib/gitlab/ci/ansi2json/style_spec.rb
index 5110c215415..ad05aa03e83 100644
--- a/spec/lib/gitlab/ci/ansi2json/style_spec.rb
+++ b/spec/lib/gitlab/ci/ansi2json/style_spec.rb
@@ -147,6 +147,10 @@ describe Gitlab::Ci::Ansi2json::Style do
[%w[1], %w[0], '', 'resets style from format bold'],
[%w[1 3], %w[0], '', 'resets style from format bold and italic'],
[%w[1 3 term-fg-l-red term-bg-yellow], %w[0], '', 'resets all formats and colors'],
+ # default foreground
+ [%w[31 42], %w[39], 'term-bg-green', 'set foreground from red to default leaving background unchanged'],
+ # default background
+ [%w[31 42], %w[49], 'term-fg-red', 'set background from green to default leaving foreground unchanged'],
# misc
[[], %w[1 30 42 3], 'term-fg-l-black term-bg-green term-bold term-italic', 'adds fg color, bg color and formats from no style'],
[%w[3 31], %w[23 1 43], 'term-fg-l-red term-bg-yellow term-bold', 'replaces format italic with bold and adds a yellow background']
diff --git a/spec/lib/gitlab/ci/build/artifacts/metadata/entry_spec.rb b/spec/lib/gitlab/ci/build/artifacts/metadata/entry_spec.rb
index 73c3cad88bc..243c6f06324 100644
--- a/spec/lib/gitlab/ci/build/artifacts/metadata/entry_spec.rb
+++ b/spec/lib/gitlab/ci/build/artifacts/metadata/entry_spec.rb
@@ -152,6 +152,7 @@ describe Gitlab::Ci::Build::Artifacts::Metadata::Entry do
describe '#blob' do
let(:file_entry) { |example| path(example) }
+
subject { file_entry.blob }
it 'returns a blob representing the entry data' do
diff --git a/spec/lib/gitlab/ci/build/context/build_spec.rb b/spec/lib/gitlab/ci/build/context/build_spec.rb
index 3adde213f59..1b73b9a083d 100644
--- a/spec/lib/gitlab/ci/build/context/build_spec.rb
+++ b/spec/lib/gitlab/ci/build/context/build_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Ci::Build::Context::Build do
diff --git a/spec/lib/gitlab/ci/build/context/global_spec.rb b/spec/lib/gitlab/ci/build/context/global_spec.rb
index 6bc8f862779..65cc41ed3f9 100644
--- a/spec/lib/gitlab/ci/build/context/global_spec.rb
+++ b/spec/lib/gitlab/ci/build/context/global_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Ci::Build::Context::Global do
diff --git a/spec/lib/gitlab/ci/build/credentials/factory_spec.rb b/spec/lib/gitlab/ci/build/credentials/factory_spec.rb
index 9148c0d579e..848adb2e6e5 100644
--- a/spec/lib/gitlab/ci/build/credentials/factory_spec.rb
+++ b/spec/lib/gitlab/ci/build/credentials/factory_spec.rb
@@ -12,12 +12,16 @@ describe Gitlab::Ci::Build::Credentials::Factory do
end
before do
- allow_any_instance_of(described_class).to receive(:providers).and_return([TestProvider])
+ allow_next_instance_of(described_class) do |instance|
+ allow(instance).to receive(:providers).and_return([TestProvider])
+ end
end
context 'when provider is valid' do
before do
- allow_any_instance_of(TestProvider).to receive(:valid?).and_return(true)
+ allow_next_instance_of(TestProvider) do |instance|
+ allow(instance).to receive(:valid?).and_return(true)
+ end
end
it 'generates an array of credentials objects' do
@@ -29,7 +33,9 @@ describe Gitlab::Ci::Build::Credentials::Factory do
context 'when provider is not valid' do
before do
- allow_any_instance_of(TestProvider).to receive(:valid?).and_return(false)
+ allow_next_instance_of(TestProvider) do |instance|
+ allow(instance).to receive(:valid?).and_return(false)
+ end
end
it 'generates an array without specific credential object' do
diff --git a/spec/lib/gitlab/ci/build/prerequisite/kubernetes_namespace_spec.rb b/spec/lib/gitlab/ci/build/prerequisite/kubernetes_namespace_spec.rb
index c7a5ac783b3..2493855f851 100644
--- a/spec/lib/gitlab/ci/build/prerequisite/kubernetes_namespace_spec.rb
+++ b/spec/lib/gitlab/ci/build/prerequisite/kubernetes_namespace_spec.rb
@@ -38,13 +38,45 @@ describe Gitlab::Ci::Build::Prerequisite::KubernetesNamespace do
.and_return(double(execute: kubernetes_namespace))
end
- it { is_expected.to be_falsey }
-
- context 'and the service_account_token is blank' do
- let(:kubernetes_namespace) { instance_double(Clusters::KubernetesNamespace, service_account_token: nil) }
+ context 'and the knative-serving namespace is missing' do
+ before do
+ allow(Clusters::KnativeServingNamespaceFinder).to receive(:new)
+ .and_return(double(execute: false))
+ end
it { is_expected.to be_truthy }
end
+
+ context 'and the knative-serving namespace exists' do
+ before do
+ allow(Clusters::KnativeServingNamespaceFinder).to receive(:new)
+ .and_return(double(execute: true))
+ end
+
+ context 'and the knative version role binding is missing' do
+ before do
+ allow(Clusters::KnativeVersionRoleBindingFinder).to receive(:new)
+ .and_return(double(execute: nil))
+ end
+
+ it { is_expected.to be_truthy }
+ end
+
+ context 'and the knative version role binding already exists' do
+ before do
+ allow(Clusters::KnativeVersionRoleBindingFinder).to receive(:new)
+ .and_return(double(execute: true))
+ end
+
+ it { is_expected.to be_falsey }
+
+ context 'and the service_account_token is blank' do
+ let(:kubernetes_namespace) { instance_double(Clusters::KubernetesNamespace, service_account_token: nil) }
+
+ it { is_expected.to be_truthy }
+ end
+ end
+ end
end
end
@@ -96,6 +128,47 @@ describe Gitlab::Ci::Build::Prerequisite::KubernetesNamespace do
subject
end
+
+ context 'the build has a namespace configured via CI template' do
+ let(:kubernetes_namespace) { double(namespace: existing_namespace) }
+
+ before do
+ allow(build).to receive(:expanded_kubernetes_namespace)
+ .and_return(requested_namespace)
+ end
+
+ context 'the requested namespace matches the default' do
+ let(:requested_namespace) { 'production' }
+ let(:existing_namespace) { requested_namespace }
+
+ it 'creates a namespace' do
+ expect(Clusters::BuildKubernetesNamespaceService)
+ .to receive(:new)
+ .with(cluster, environment: deployment.environment)
+ .and_return(namespace_builder)
+
+ expect(Clusters::Kubernetes::CreateOrUpdateNamespaceService)
+ .to receive(:new)
+ .with(cluster: cluster, kubernetes_namespace: kubernetes_namespace)
+ .and_return(service)
+
+ expect(service).to receive(:execute).once
+
+ subject
+ end
+ end
+
+ context 'the requested namespace differs from the default' do
+ let(:requested_namespace) { 'production' }
+ let(:existing_namespace) { 'other-namespace' }
+
+ it 'does not create a namespace' do
+ expect(Clusters::Kubernetes::CreateOrUpdateNamespaceService).not_to receive(:new)
+
+ subject
+ end
+ end
+ end
end
context 'kubernetes namespace exists (but has no service_account_token)' do
@@ -115,6 +188,24 @@ describe Gitlab::Ci::Build::Prerequisite::KubernetesNamespace do
subject
end
end
+
+ context 'knative version role binding is missing' do
+ before do
+ allow(Clusters::KubernetesNamespaceFinder).to receive(:new)
+ .and_return(double(execute: kubernetes_namespace))
+ allow(Clusters::KnativeVersionRoleBindingFinder).to receive(:new)
+ .and_return(double(execute: nil))
+ end
+
+ it 'creates the knative version role binding' do
+ expect(Clusters::Kubernetes::CreateOrUpdateNamespaceService)
+ .to receive(:new)
+ .with(cluster: cluster, kubernetes_namespace: kubernetes_namespace)
+ .and_return(service)
+
+ subject
+ end
+ end
end
context 'completion is not required' do
diff --git a/spec/lib/gitlab/ci/config/entry/default_spec.rb b/spec/lib/gitlab/ci/config/entry/default_spec.rb
index dad4f408e50..23c62bbf92a 100644
--- a/spec/lib/gitlab/ci/config/entry/default_spec.rb
+++ b/spec/lib/gitlab/ci/config/entry/default_spec.rb
@@ -26,7 +26,8 @@ describe Gitlab::Ci::Config::Entry::Default do
it 'contains the expected node names' do
expect(described_class.nodes.keys)
.to match_array(%i[before_script image services
- after_script cache interruptible])
+ after_script cache interruptible
+ timeout retry tags artifacts])
end
end
end
diff --git a/spec/lib/gitlab/ci/config/entry/environment_spec.rb b/spec/lib/gitlab/ci/config/entry/environment_spec.rb
index 7b72b45fd8d..8c21d5342cc 100644
--- a/spec/lib/gitlab/ci/config/entry/environment_spec.rb
+++ b/spec/lib/gitlab/ci/config/entry/environment_spec.rb
@@ -206,6 +206,35 @@ describe Gitlab::Ci::Config::Entry::Environment do
end
end
+ context 'when auto_stop_in is specified' do
+ let(:config) do
+ {
+ name: 'review/$CI_COMMIT_REF_NAME',
+ url: 'https://$CI_COMMIT_REF_NAME.review.gitlab.com',
+ on_stop: 'stop_review',
+ auto_stop_in: auto_stop_in
+ }
+ end
+
+ context 'when auto_stop_in is correct format' do
+ let(:auto_stop_in) { '2 days' }
+
+ it 'becomes valid' do
+ expect(entry).to be_valid
+ expect(entry.auto_stop_in).to eq(auto_stop_in)
+ end
+ end
+
+ context 'when auto_stop_in is invalid format' do
+ let(:auto_stop_in) { 'invalid' }
+
+ it 'becomes invalid' do
+ expect(entry).not_to be_valid
+ expect(entry.errors).to include 'environment auto stop in should be a duration'
+ end
+ end
+ end
+
context 'when configuration is invalid' do
context 'when configuration is an array' do
let(:config) { ['env'] }
@@ -241,4 +270,28 @@ describe Gitlab::Ci::Config::Entry::Environment do
end
end
end
+
+ describe 'kubernetes' do
+ let(:config) do
+ { name: 'production', kubernetes: kubernetes_config }
+ end
+
+ context 'is a string' do
+ let(:kubernetes_config) { 'production' }
+
+ it { expect(entry).not_to be_valid }
+ end
+
+ context 'is a hash' do
+ let(:kubernetes_config) { Hash(namespace: 'production') }
+
+ it { expect(entry).to be_valid }
+ end
+
+ context 'is nil' do
+ let(:kubernetes_config) { nil }
+
+ it { expect(entry).to be_valid }
+ end
+ end
end
diff --git a/spec/lib/gitlab/ci/config/entry/job_spec.rb b/spec/lib/gitlab/ci/config/entry/job_spec.rb
index fe83171c57a..cc1ee63ff04 100644
--- a/spec/lib/gitlab/ci/config/entry/job_spec.rb
+++ b/spec/lib/gitlab/ci/config/entry/job_spec.rb
@@ -24,7 +24,7 @@ describe Gitlab::Ci::Config::Entry::Job do
let(:result) do
%i[before_script script stage type after_script cache
image services only except rules needs variables artifacts
- environment coverage retry interruptible]
+ environment coverage retry interruptible timeout tags]
end
it { is_expected.to match_array result }
@@ -93,7 +93,7 @@ describe Gitlab::Ci::Config::Entry::Job do
context 'when delayed job' do
context 'when start_in is specified' do
- let(:config) { { script: 'echo', when: 'delayed', start_in: '1 day' } }
+ let(:config) { { script: 'echo', when: 'delayed', start_in: '1 week' } }
it { expect(entry).to be_valid }
end
@@ -232,11 +232,9 @@ describe Gitlab::Ci::Config::Entry::Job do
context 'when delayed job' do
context 'when start_in is specified' do
- let(:config) { { script: 'echo', when: 'delayed', start_in: '1 day' } }
+ let(:config) { { script: 'echo', when: 'delayed', start_in: '1 week' } }
- it 'returns error about invalid type' do
- expect(entry).to be_valid
- end
+ it { expect(entry).to be_valid }
end
context 'when start_in is empty' do
@@ -257,8 +255,8 @@ describe Gitlab::Ci::Config::Entry::Job do
end
end
- context 'when start_in is longer than one day' do
- let(:config) { { when: 'delayed', start_in: '2 days' } }
+ context 'when start_in is longer than one week' do
+ let(:config) { { when: 'delayed', start_in: '8 days' } }
it 'returns error about exceeding the limit' do
expect(entry).not_to be_valid
@@ -417,21 +415,21 @@ describe Gitlab::Ci::Config::Entry::Job do
context 'when timeout value is not correct' do
context 'when it is higher than instance wide timeout' do
- let(:config) { { timeout: '3 months' } }
+ let(:config) { { timeout: '3 months', script: 'test' } }
it 'returns error about value too high' do
expect(entry).not_to be_valid
expect(entry.errors)
- .to include "job timeout should not exceed the limit"
+ .to include "timeout config should not exceed the limit"
end
end
context 'when it is not a duration' do
- let(:config) { { timeout: 100 } }
+ let(:config) { { timeout: 100, script: 'test' } }
it 'returns error about wrong value' do
expect(entry).not_to be_valid
- expect(entry.errors).to include 'job timeout should be a duration'
+ expect(entry.errors).to include 'timeout config should be a duration'
end
end
end
@@ -463,7 +461,8 @@ describe Gitlab::Ci::Config::Entry::Job do
let(:unspecified) { double('unspecified', 'specified?' => false) }
let(:default) { double('default', '[]' => unspecified) }
- let(:deps) { double('deps', 'default' => default, '[]' => unspecified) }
+ let(:workflow) { double('workflow', 'has_rules?' => false) }
+ let(:deps) { double('deps', 'default' => default, '[]' => unspecified, 'workflow' => workflow) }
context 'when job config overrides default config' do
before do
@@ -494,6 +493,49 @@ describe Gitlab::Ci::Config::Entry::Job do
expect(entry[:cache].value).to eq(key: 'test', policy: 'pull-push')
end
end
+
+ context 'with workflow rules' do
+ using RSpec::Parameterized::TableSyntax
+
+ where(:name, :has_workflow_rules?, :only, :rules, :result) do
+ "uses default only" | false | nil | nil | { refs: %w[branches tags] }
+ "uses user only" | false | %w[branches] | nil | { refs: %w[branches] }
+ "does not define only" | false | nil | [] | nil
+ "does not define only" | true | nil | nil | nil
+ "uses user only" | true | %w[branches] | nil | { refs: %w[branches] }
+ "does not define only" | true | nil | [] | nil
+ end
+
+ with_them do
+ let(:config) { { script: 'ls', rules: rules, only: only }.compact }
+
+ it "#{name}" do
+ expect(workflow).to receive(:has_rules?) { has_workflow_rules? }
+
+ entry.compose!(deps)
+
+ expect(entry.only_value).to eq(result)
+ end
+ end
+ end
+
+ context 'when workflow rules is used' do
+ context 'when rules are used' do
+ let(:config) { { script: 'ls', cache: { key: 'test' }, rules: [] } }
+
+ it 'does not define only' do
+ expect(entry).not_to be_only_defined
+ end
+ end
+
+ context 'when rules are not used' do
+ let(:config) { { script: 'ls', cache: { key: 'test' }, only: [] } }
+
+ it 'does not define only' do
+ expect(entry).not_to be_only_defined
+ end
+ end
+ end
end
context 'when composed' do
diff --git a/spec/lib/gitlab/ci/config/entry/kubernetes_spec.rb b/spec/lib/gitlab/ci/config/entry/kubernetes_spec.rb
new file mode 100644
index 00000000000..468e83ec506
--- /dev/null
+++ b/spec/lib/gitlab/ci/config/entry/kubernetes_spec.rb
@@ -0,0 +1,56 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::Ci::Config::Entry::Kubernetes do
+ subject { described_class.new(config) }
+
+ describe 'attributes' do
+ it { is_expected.to respond_to(:namespace) }
+ it { is_expected.to respond_to(:has_namespace?) }
+ end
+
+ describe 'validations' do
+ describe 'config' do
+ context 'is a hash containing known keys' do
+ let(:config) { Hash(namespace: 'namespace') }
+
+ it { is_expected.to be_valid }
+ end
+
+ context 'is a hash containing an unknown key' do
+ let(:config) { Hash(unknown: 'attribute') }
+
+ it { is_expected.not_to be_valid }
+ end
+
+ context 'is a string' do
+ let(:config) { 'config' }
+
+ it { is_expected.not_to be_valid }
+ end
+ end
+
+ describe 'namespace' do
+ let(:config) { Hash(namespace: namespace) }
+
+ context 'is a string' do
+ let(:namespace) { 'namespace' }
+
+ it { is_expected.to be_valid }
+ end
+
+ context 'is a hash' do
+ let(:namespace) { Hash(key: 'namespace') }
+
+ it { is_expected.not_to be_valid }
+ end
+
+ context 'is not present' do
+ let(:namespace) { '' }
+
+ it { is_expected.not_to be_valid }
+ end
+ end
+ end
+end
diff --git a/spec/lib/gitlab/ci/config/entry/need_spec.rb b/spec/lib/gitlab/ci/config/entry/need_spec.rb
index d119e604900..92b71c5f6cc 100644
--- a/spec/lib/gitlab/ci/config/entry/need_spec.rb
+++ b/spec/lib/gitlab/ci/config/entry/need_spec.rb
@@ -5,31 +5,177 @@ require 'spec_helper'
describe ::Gitlab::Ci::Config::Entry::Need do
subject(:need) { described_class.new(config) }
- context 'when job is specified' do
- let(:config) { 'job_name' }
+ shared_examples 'job type' do
+ describe '#type' do
+ subject(:need_type) { need.type }
- describe '#valid?' do
- it { is_expected.to be_valid }
+ it { is_expected.to eq(:job) }
+ end
+ end
+
+ context 'with simple config' do
+ context 'when job is specified' do
+ let(:config) { 'job_name' }
+
+ describe '#valid?' do
+ it { is_expected.to be_valid }
+ end
+
+ describe '#value' do
+ it 'returns job needs configuration' do
+ expect(need.value).to eq(name: 'job_name', artifacts: true)
+ end
+ end
+
+ it_behaves_like 'job type'
+ end
+
+ context 'when need is empty' do
+ let(:config) { '' }
+
+ describe '#valid?' do
+ it { is_expected.not_to be_valid }
+ end
+
+ describe '#errors' do
+ it 'is returns an error about an empty config' do
+ expect(need.errors)
+ .to contain_exactly("job string config can't be blank")
+ end
+ end
+
+ it_behaves_like 'job type'
end
+ end
+
+ context 'with complex config' do
+ context 'with job name and artifacts true' do
+ let(:config) { { job: 'job_name', artifacts: true } }
+
+ describe '#valid?' do
+ it { is_expected.to be_valid }
+ end
+
+ describe '#value' do
+ it 'returns job needs configuration' do
+ expect(need.value).to eq(name: 'job_name', artifacts: true)
+ end
+ end
+
+ it_behaves_like 'job type'
+ end
+
+ context 'with job name and artifacts false' do
+ let(:config) { { job: 'job_name', artifacts: false } }
+
+ describe '#valid?' do
+ it { is_expected.to be_valid }
+ end
+
+ describe '#value' do
+ it 'returns job needs configuration' do
+ expect(need.value).to eq(name: 'job_name', artifacts: false)
+ end
+ end
+
+ it_behaves_like 'job type'
+ end
+
+ context 'with job name and artifacts nil' do
+ let(:config) { { job: 'job_name', artifacts: nil } }
- describe '#value' do
- it 'returns job needs configuration' do
- expect(need.value).to eq(name: 'job_name')
+ describe '#valid?' do
+ it { is_expected.to be_valid }
end
+
+ describe '#value' do
+ it 'returns job needs configuration' do
+ expect(need.value).to eq(name: 'job_name', artifacts: true)
+ end
+ end
+
+ it_behaves_like 'job type'
+ end
+
+ context 'without artifacts key' do
+ let(:config) { { job: 'job_name' } }
+
+ describe '#valid?' do
+ it { is_expected.to be_valid }
+ end
+
+ describe '#value' do
+ it 'returns job needs configuration' do
+ expect(need.value).to eq(name: 'job_name', artifacts: true)
+ end
+ end
+
+ it_behaves_like 'job type'
+ end
+
+ context 'when job name is empty' do
+ let(:config) { { job: '', artifacts: true } }
+
+ describe '#valid?' do
+ it { is_expected.not_to be_valid }
+ end
+
+ describe '#errors' do
+ it 'is returns an error about an empty config' do
+ expect(need.errors)
+ .to contain_exactly("job hash job can't be blank")
+ end
+ end
+
+ it_behaves_like 'job type'
+ end
+
+ context 'when job name is not a string' do
+ let(:config) { { job: :job_name, artifacts: false } }
+
+ describe '#valid?' do
+ it { is_expected.not_to be_valid }
+ end
+
+ describe '#errors' do
+ it 'is returns an error about job type' do
+ expect(need.errors)
+ .to contain_exactly('job hash job should be a string')
+ end
+ end
+
+ it_behaves_like 'job type'
+ end
+
+ context 'when job has unknown keys' do
+ let(:config) { { job: 'job_name', artifacts: false, some: :key } }
+
+ describe '#valid?' do
+ it { is_expected.not_to be_valid }
+ end
+
+ describe '#errors' do
+ it 'is returns an error about job type' do
+ expect(need.errors)
+ .to contain_exactly('job hash config contains unknown keys: some')
+ end
+ end
+
+ it_behaves_like 'job type'
end
end
- context 'when need is empty' do
- let(:config) { '' }
+ context 'when need config is not a string or a hash' do
+ let(:config) { :job_name }
describe '#valid?' do
it { is_expected.not_to be_valid }
end
describe '#errors' do
- it 'is returns an error about an empty config' do
+ it 'is returns an error about job type' do
expect(need.errors)
- .to contain_exactly("job config can't be blank")
+ .to contain_exactly('unknown strategy has an unsupported type')
end
end
end
diff --git a/spec/lib/gitlab/ci/config/entry/needs_spec.rb b/spec/lib/gitlab/ci/config/entry/needs_spec.rb
index f4a76b52d30..b8b84b5efd2 100644
--- a/spec/lib/gitlab/ci/config/entry/needs_spec.rb
+++ b/spec/lib/gitlab/ci/config/entry/needs_spec.rb
@@ -51,9 +51,34 @@ describe ::Gitlab::Ci::Config::Entry::Needs do
end
end
end
+
+ context 'when wrong needs type is used' do
+ let(:config) { [{ job: 'job_name', artifacts: true, some: :key }] }
+
+ describe '#valid?' do
+ it { is_expected.not_to be_valid }
+ end
+
+ describe '#errors' do
+ it 'returns error about incorrect type' do
+ expect(needs.errors).to contain_exactly(
+ 'need config contains unknown keys: some')
+ end
+ end
+ end
end
describe '.compose!' do
+ shared_examples 'entry with descendant nodes' do
+ describe '#descendants' do
+ it 'creates valid descendant nodes' do
+ expect(needs.descendants.count).to eq 2
+ expect(needs.descendants)
+ .to all(be_an_instance_of(::Gitlab::Ci::Config::Entry::Need))
+ end
+ end
+ end
+
context 'when valid job entries composed' do
let(:config) { %w[first_job_name second_job_name] }
@@ -65,18 +90,80 @@ describe ::Gitlab::Ci::Config::Entry::Needs do
it 'returns key value' do
expect(needs.value).to eq(
job: [
- { name: 'first_job_name' },
- { name: 'second_job_name' }
+ { name: 'first_job_name', artifacts: true },
+ { name: 'second_job_name', artifacts: true }
]
)
end
end
- describe '#descendants' do
- it 'creates valid descendant nodes' do
- expect(needs.descendants.count).to eq 2
- expect(needs.descendants)
- .to all(be_an_instance_of(::Gitlab::Ci::Config::Entry::Need))
+ it_behaves_like 'entry with descendant nodes'
+ end
+
+ context 'with complex job entries composed' do
+ let(:config) do
+ [
+ { job: 'first_job_name', artifacts: true },
+ { job: 'second_job_name', artifacts: false }
+ ]
+ end
+
+ before do
+ needs.compose!
+ end
+
+ describe '#value' do
+ it 'returns key value' do
+ expect(needs.value).to eq(
+ job: [
+ { name: 'first_job_name', artifacts: true },
+ { name: 'second_job_name', artifacts: false }
+ ]
+ )
+ end
+ end
+
+ it_behaves_like 'entry with descendant nodes'
+ end
+
+ context 'with mixed job entries composed' do
+ let(:config) do
+ [
+ 'first_job_name',
+ { job: 'second_job_name', artifacts: false }
+ ]
+ end
+
+ before do
+ needs.compose!
+ end
+
+ describe '#value' do
+ it 'returns key value' do
+ expect(needs.value).to eq(
+ job: [
+ { name: 'first_job_name', artifacts: true },
+ { name: 'second_job_name', artifacts: false }
+ ]
+ )
+ end
+ end
+
+ it_behaves_like 'entry with descendant nodes'
+ end
+
+ context 'with empty config' do
+ let(:config) do
+ []
+ end
+
+ before do
+ needs.compose!
+ end
+
+ describe '#value' do
+ it 'returns empty value' do
+ expect(needs.value).to eq({})
end
end
end
diff --git a/spec/lib/gitlab/ci/config/external/file/project_spec.rb b/spec/lib/gitlab/ci/config/external/file/project_spec.rb
index dd869c227a1..0aea3a59b33 100644
--- a/spec/lib/gitlab/ci/config/external/file/project_spec.rb
+++ b/spec/lib/gitlab/ci/config/external/file/project_spec.rb
@@ -15,8 +15,9 @@ describe Gitlab::Ci::Config::External::File::Project do
before do
project.add_developer(user)
- allow_any_instance_of(Gitlab::Ci::Config::External::Context)
- .to receive(:check_execution_time!)
+ allow_next_instance_of(Gitlab::Ci::Config::External::Context) do |instance|
+ allow(instance).to receive(:check_execution_time!)
+ end
end
describe '#matching?' do
@@ -159,8 +160,8 @@ describe Gitlab::Ci::Config::External::File::Project do
private
def stub_project_blob(ref, path)
- allow_any_instance_of(Repository)
- .to receive(:blob_data_at)
- .with(ref, path) { yield }
+ allow_next_instance_of(Repository) do |instance|
+ allow(instance).to receive(:blob_data_at).with(ref, path) { yield }
+ end
end
end
diff --git a/spec/lib/gitlab/ci/config/external/file/remote_spec.rb b/spec/lib/gitlab/ci/config/external/file/remote_spec.rb
index 08db00dda9d..a23cce9b757 100644
--- a/spec/lib/gitlab/ci/config/external/file/remote_spec.rb
+++ b/spec/lib/gitlab/ci/config/external/file/remote_spec.rb
@@ -21,8 +21,9 @@ describe Gitlab::Ci::Config::External::File::Remote do
end
before do
- allow_any_instance_of(Gitlab::Ci::Config::External::Context)
- .to receive(:check_execution_time!)
+ allow_next_instance_of(Gitlab::Ci::Config::External::Context) do |instance|
+ allow(instance).to receive(:check_execution_time!)
+ end
end
describe '#matching?' do
diff --git a/spec/lib/gitlab/ci/config/external/file/template_spec.rb b/spec/lib/gitlab/ci/config/external/file/template_spec.rb
index 164b5800abf..ee1660e4dfd 100644
--- a/spec/lib/gitlab/ci/config/external/file/template_spec.rb
+++ b/spec/lib/gitlab/ci/config/external/file/template_spec.rb
@@ -14,8 +14,9 @@ describe Gitlab::Ci::Config::External::File::Template do
let(:template_file) { described_class.new(params, context) }
before do
- allow_any_instance_of(Gitlab::Ci::Config::External::Context)
- .to receive(:check_execution_time!)
+ allow_next_instance_of(Gitlab::Ci::Config::External::Context) do |instance|
+ allow(instance).to receive(:check_execution_time!)
+ end
end
describe '#matching?' do
diff --git a/spec/lib/gitlab/ci/config/external/mapper_spec.rb b/spec/lib/gitlab/ci/config/external/mapper_spec.rb
index 8d09aa47f12..2a5f62f7e74 100644
--- a/spec/lib/gitlab/ci/config/external/mapper_spec.rb
+++ b/spec/lib/gitlab/ci/config/external/mapper_spec.rb
@@ -23,8 +23,9 @@ describe Gitlab::Ci::Config::External::Mapper do
before do
stub_full_request(remote_url).to_return(body: file_content)
- allow_any_instance_of(Gitlab::Ci::Config::External::Context)
- .to receive(:check_execution_time!)
+ allow_next_instance_of(Gitlab::Ci::Config::External::Context) do |instance|
+ allow(instance).to receive(:check_execution_time!)
+ end
end
describe '#process' do
diff --git a/spec/lib/gitlab/ci/config/normalizer_spec.rb b/spec/lib/gitlab/ci/config/normalizer_spec.rb
index bf880478387..db62fb7524d 100644
--- a/spec/lib/gitlab/ci/config/normalizer_spec.rb
+++ b/spec/lib/gitlab/ci/config/normalizer_spec.rb
@@ -105,7 +105,7 @@ describe Gitlab::Ci::Config::Normalizer do
context 'for needs' do
let(:expanded_job_attributes) do
expanded_job_names.map do |job_name|
- { name: job_name }
+ { name: job_name, extra: :key }
end
end
@@ -117,7 +117,7 @@ describe Gitlab::Ci::Config::Normalizer do
script: 'echo 1',
needs: {
job: [
- { name: job_name.to_s }
+ { name: job_name.to_s, extra: :key }
]
}
}
@@ -140,8 +140,8 @@ describe Gitlab::Ci::Config::Normalizer do
script: 'echo 1',
needs: {
job: [
- { name: job_name.to_s },
- { name: "other_job" }
+ { name: job_name.to_s, extra: :key },
+ { name: "other_job", extra: :key }
]
}
}
@@ -153,7 +153,7 @@ describe Gitlab::Ci::Config::Normalizer do
end
it "includes the regular job in dependencies" do
- expect(subject.dig(:final_job, :needs, :job)).to include(name: 'other_job')
+ expect(subject.dig(:final_job, :needs, :job)).to include(name: 'other_job', extra: :key)
end
end
end
diff --git a/spec/lib/gitlab/ci/config_spec.rb b/spec/lib/gitlab/ci/config_spec.rb
index b254f9af2f1..63a36995284 100644
--- a/spec/lib/gitlab/ci/config_spec.rb
+++ b/spec/lib/gitlab/ci/config_spec.rb
@@ -8,8 +8,9 @@ describe Gitlab::Ci::Config do
set(:user) { create(:user) }
before do
- allow_any_instance_of(Gitlab::Ci::Config::External::Context)
- .to receive(:check_execution_time!)
+ allow_next_instance_of(Gitlab::Ci::Config::External::Context) do |instance|
+ allow(instance).to receive(:check_execution_time!)
+ end
end
let(:config) do
@@ -156,7 +157,7 @@ describe Gitlab::Ci::Config do
describe '.new' do
it 'raises error' do
- expect(Gitlab::Sentry).to receive(:track_exception)
+ expect(Gitlab::ErrorTracking).to receive(:track_and_raise_for_dev_exception)
expect { config }.to raise_error(
described_class::ConfigError,
@@ -358,22 +359,15 @@ describe Gitlab::Ci::Config do
context "when it takes too long to evaluate includes" do
before do
- allow_any_instance_of(Gitlab::Ci::Config::External::Context)
- .to receive(:check_execution_time!)
- .and_call_original
-
- allow_any_instance_of(Gitlab::Ci::Config::External::Context)
- .to receive(:set_deadline)
- .with(described_class::TIMEOUT_SECONDS)
- .and_call_original
-
- allow_any_instance_of(Gitlab::Ci::Config::External::Context)
- .to receive(:execution_expired?)
- .and_return(true)
+ allow_next_instance_of(Gitlab::Ci::Config::External::Context) do |instance|
+ allow(instance).to receive(:check_execution_time!).and_call_original
+ allow(instance).to receive(:set_deadline).with(described_class::TIMEOUT_SECONDS).and_call_original
+ allow(instance).to receive(:execution_expired?).and_return(true)
+ end
end
it 'raises error TimeoutError' do
- expect(Gitlab::Sentry).to receive(:track_exception)
+ expect(Gitlab::ErrorTracking).to receive(:track_and_raise_for_dev_exception)
expect { config }.to raise_error(
described_class::ConfigError,
@@ -384,9 +378,9 @@ describe Gitlab::Ci::Config do
context 'when context expansion timeout is disabled' do
before do
- allow_any_instance_of(Gitlab::Ci::Config::External::Context)
- .to receive(:check_execution_time!)
- .and_call_original
+ allow_next_instance_of(Gitlab::Ci::Config::External::Context) do |instance|
+ allow(instance).to receive(:check_execution_time!).and_call_original
+ end
allow(Feature)
.to receive(:enabled?)
diff --git a/spec/lib/gitlab/ci/cron_parser_spec.rb b/spec/lib/gitlab/ci/cron_parser_spec.rb
index af4e9d687c4..385df72fa41 100644
--- a/spec/lib/gitlab/ci/cron_parser_spec.rb
+++ b/spec/lib/gitlab/ci/cron_parser_spec.rb
@@ -152,6 +152,22 @@ describe Gitlab::Ci::CronParser do
end
end
end
+
+ context 'when time crosses a Daylight Savings boundary' do
+ let(:cron) { '* 0 1 12 *'}
+
+ # Note this previously only failed if the time zone is set
+ # to a zone that observes Daylight Savings
+ # (e.g. America/Chicago) at the start of the test. Stubbing
+ # TZ doesn't appear to be enough.
+ it 'generates day without TZInfo::AmbiguousTime error' do
+ Timecop.freeze(Time.utc(2020, 1, 1)) do
+ expect(subject.year).to eq(2020)
+ expect(subject.month).to eq(12)
+ expect(subject.day).to eq(1)
+ end
+ end
+ end
end
end
end
diff --git a/spec/lib/gitlab/ci/pipeline/chain/build_spec.rb b/spec/lib/gitlab/ci/pipeline/chain/build_spec.rb
index a631cd2777b..b81094f8b4a 100644
--- a/spec/lib/gitlab/ci/pipeline/chain/build_spec.rb
+++ b/spec/lib/gitlab/ci/pipeline/chain/build_spec.rb
@@ -30,7 +30,7 @@ describe Gitlab::Ci::Pipeline::Chain::Build do
let(:step) { described_class.new(pipeline, command) }
before do
- stub_repository_ci_yaml_file(sha: anything)
+ stub_ci_pipeline_yaml_file(gitlab_ci_yaml)
end
it 'never breaks the chain' do
diff --git a/spec/lib/gitlab/ci/pipeline/chain/config/content_spec.rb b/spec/lib/gitlab/ci/pipeline/chain/config/content_spec.rb
new file mode 100644
index 00000000000..7ebe5842fd0
--- /dev/null
+++ b/spec/lib/gitlab/ci/pipeline/chain/config/content_spec.rb
@@ -0,0 +1,221 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::Ci::Pipeline::Chain::Config::Content do
+ let(:project) { create(:project, ci_config_path: ci_config_path) }
+ let(:pipeline) { build(:ci_pipeline, project: project) }
+ let(:command) { Gitlab::Ci::Pipeline::Chain::Command.new(project: project) }
+
+ subject { described_class.new(pipeline, command) }
+
+ describe '#perform!' do
+ context 'when feature flag is disabled' do
+ before do
+ stub_feature_flags(ci_root_config_content: false)
+ end
+
+ context 'when config is defined in a custom path in the repository' do
+ let(:ci_config_path) { 'path/to/config.yml' }
+
+ before do
+ expect(project.repository)
+ .to receive(:gitlab_ci_yml_for)
+ .with(pipeline.sha, ci_config_path)
+ .and_return('the-content')
+ end
+
+ it 'returns the content of the YAML file' do
+ subject.perform!
+
+ expect(pipeline.config_source).to eq 'repository_source'
+ expect(command.config_content).to eq('the-content')
+ end
+ end
+
+ context 'when config is defined remotely' do
+ let(:ci_config_path) { 'http://example.com/path/to/ci/config.yml' }
+
+ it 'does not support URLs and default to AutoDevops' do
+ subject.perform!
+
+ expect(pipeline.config_source).to eq 'auto_devops_source'
+ template = Gitlab::Template::GitlabCiYmlTemplate.find('Auto-DevOps')
+ expect(command.config_content).to eq(template.content)
+ end
+ end
+
+ context 'when config is defined in a separate repository' do
+ let(:ci_config_path) { 'path/to/.gitlab-ci.yml@another-group/another-repo' }
+
+ it 'does not support YAML from external repository and default to AutoDevops' do
+ subject.perform!
+
+ expect(pipeline.config_source).to eq 'auto_devops_source'
+ template = Gitlab::Template::GitlabCiYmlTemplate.find('Auto-DevOps')
+ expect(command.config_content).to eq(template.content)
+ end
+ end
+
+ context 'when config is defined in the default .gitlab-ci.yml' do
+ let(:ci_config_path) { nil }
+
+ before do
+ expect(project.repository)
+ .to receive(:gitlab_ci_yml_for)
+ .with(pipeline.sha, '.gitlab-ci.yml')
+ .and_return('the-content')
+ end
+
+ it 'returns the content of the canonical config file' do
+ subject.perform!
+
+ expect(pipeline.config_source).to eq 'repository_source'
+ expect(command.config_content).to eq('the-content')
+ end
+ end
+
+ context 'when config is the Auto-Devops template' do
+ let(:ci_config_path) { nil }
+
+ before do
+ expect(project).to receive(:auto_devops_enabled?).and_return(true)
+ end
+
+ it 'returns the content of AutoDevops template' do
+ subject.perform!
+
+ expect(pipeline.config_source).to eq 'auto_devops_source'
+ template = Gitlab::Template::GitlabCiYmlTemplate.find('Auto-DevOps')
+ expect(command.config_content).to eq(template.content)
+ end
+ end
+
+ context 'when config is not defined anywhere' do
+ let(:ci_config_path) { nil }
+
+ before do
+ expect(project).to receive(:auto_devops_enabled?).and_return(false)
+ end
+
+ it 'builds root config including the auto-devops template' do
+ subject.perform!
+
+ expect(pipeline.config_source).to eq('unknown_source')
+ expect(command.config_content).to be_nil
+ expect(pipeline.errors.full_messages).to include('Missing CI config file')
+ end
+ end
+ end
+
+ context 'when config is defined in a custom path in the repository' do
+ let(:ci_config_path) { 'path/to/config.yml' }
+
+ before do
+ expect(project.repository)
+ .to receive(:gitlab_ci_yml_for)
+ .with(pipeline.sha, ci_config_path)
+ .and_return('the-content')
+ end
+
+ it 'builds root config including the local custom file' do
+ subject.perform!
+
+ expect(pipeline.config_source).to eq 'repository_source'
+ expect(command.config_content).to eq(<<~EOY)
+ ---
+ include:
+ - local: #{ci_config_path}
+ EOY
+ end
+ end
+
+ context 'when config is defined remotely' do
+ let(:ci_config_path) { 'http://example.com/path/to/ci/config.yml' }
+
+ it 'builds root config including the remote config' do
+ subject.perform!
+
+ expect(pipeline.config_source).to eq 'remote_source'
+ expect(command.config_content).to eq(<<~EOY)
+ ---
+ include:
+ - remote: #{ci_config_path}
+ EOY
+ end
+ end
+
+ context 'when config is defined in a separate repository' do
+ let(:ci_config_path) { 'path/to/.gitlab-ci.yml@another-group/another-repo' }
+
+ it 'builds root config including the path to another repository' do
+ subject.perform!
+
+ expect(pipeline.config_source).to eq 'external_project_source'
+ expect(command.config_content).to eq(<<~EOY)
+ ---
+ include:
+ - project: another-group/another-repo
+ file: path/to/.gitlab-ci.yml
+ EOY
+ end
+ end
+
+ context 'when config is defined in the default .gitlab-ci.yml' do
+ let(:ci_config_path) { nil }
+
+ before do
+ expect(project.repository)
+ .to receive(:gitlab_ci_yml_for)
+ .with(pipeline.sha, '.gitlab-ci.yml')
+ .and_return('the-content')
+ end
+
+ it 'builds root config including the canonical CI config file' do
+ subject.perform!
+
+ expect(pipeline.config_source).to eq 'repository_source'
+ expect(command.config_content).to eq(<<~EOY)
+ ---
+ include:
+ - local: ".gitlab-ci.yml"
+ EOY
+ end
+ end
+
+ context 'when config is the Auto-Devops template' do
+ let(:ci_config_path) { nil }
+
+ before do
+ expect(project).to receive(:auto_devops_enabled?).and_return(true)
+ end
+
+ it 'builds root config including the auto-devops template' do
+ subject.perform!
+
+ expect(pipeline.config_source).to eq 'auto_devops_source'
+ expect(command.config_content).to eq(<<~EOY)
+ ---
+ include:
+ - template: Auto-DevOps.gitlab-ci.yml
+ EOY
+ end
+ end
+
+ context 'when config is not defined anywhere' do
+ let(:ci_config_path) { nil }
+
+ before do
+ expect(project).to receive(:auto_devops_enabled?).and_return(false)
+ end
+
+ it 'builds root config including the auto-devops template' do
+ subject.perform!
+
+ expect(pipeline.config_source).to eq('unknown_source')
+ expect(command.config_content).to be_nil
+ expect(pipeline.errors.full_messages).to include('Missing CI config file')
+ end
+ end
+ end
+end
diff --git a/spec/lib/gitlab/ci/pipeline/chain/validate/external_spec.rb b/spec/lib/gitlab/ci/pipeline/chain/validate/external_spec.rb
new file mode 100644
index 00000000000..f2a0b93ef28
--- /dev/null
+++ b/spec/lib/gitlab/ci/pipeline/chain/validate/external_spec.rb
@@ -0,0 +1,103 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::Ci::Pipeline::Chain::Validate::External do
+ let(:project) { create(:project) }
+ let(:user) { create(:user) }
+ let(:pipeline) { build(:ci_empty_pipeline, user: user, project: project) }
+ let!(:step) { described_class.new(pipeline, command) }
+
+ let(:ci_yaml) do
+ <<-CI_YAML
+ stages:
+ - first_stage
+ - second_stage
+
+ first_stage_job_name:
+ stage: first_stage
+ image: hello_world
+ script:
+ - echo 'hello'
+
+ second_stage_job_name:
+ stage: second_stage
+ services:
+ - postgres
+ before_script:
+ - echo 'first hello'
+ script:
+ - echo 'second hello'
+ CI_YAML
+ end
+
+ let(:yaml_processor) do
+ ::Gitlab::Ci::YamlProcessor.new(
+ ci_yaml, {
+ project: project,
+ sha: pipeline.sha,
+ user: user
+ }
+ )
+ end
+
+ let(:command) do
+ Gitlab::Ci::Pipeline::Chain::Command.new(
+ project: project, current_user: user, config_processor: yaml_processor
+ )
+ end
+
+ describe '#perform!' do
+ subject(:perform!) { step.perform! }
+
+ context 'when validation returns true' do
+ before do
+ allow(step).to receive(:validate_external).and_return(true)
+ end
+
+ it 'does not drop the pipeline' do
+ perform!
+
+ expect(pipeline.status).not_to eq('failed')
+ expect(pipeline.errors).to be_empty
+ end
+
+ it 'does not break the chain' do
+ perform!
+
+ expect(step.break?).to be false
+ end
+ end
+
+ context 'when validation return false' do
+ before do
+ allow(step).to receive(:validate_external).and_return(false)
+ end
+
+ it 'drops the pipeline' do
+ perform!
+
+ expect(pipeline.status).to eq('failed')
+ expect(pipeline.errors.to_a).to include('External validation failed')
+ end
+
+ it 'breaks the chain' do
+ perform!
+
+ expect(step.break?).to be true
+ end
+ end
+ end
+
+ describe '#validation_service_payload' do
+ subject(:validation_service_payload) { step.send(:validation_service_payload, pipeline, command.config_processor.stages_attributes) }
+
+ it 'respects the defined schema' do
+ expect(validation_service_payload).to match_schema('/external_validation')
+ end
+
+ it 'does not fire sql queries' do
+ expect { validation_service_payload }.not_to exceed_query_limit(1)
+ end
+ end
+end
diff --git a/spec/lib/gitlab/ci/pipeline/seed/build_spec.rb b/spec/lib/gitlab/ci/pipeline/seed/build_spec.rb
index 53dcb6359fe..2ae513aea1b 100644
--- a/spec/lib/gitlab/ci/pipeline/seed/build_spec.rb
+++ b/spec/lib/gitlab/ci/pipeline/seed/build_spec.rb
@@ -852,7 +852,7 @@ describe Gitlab::Ci::Pipeline::Seed::Build do
it "returns an error" do
expect(subject.errors).to contain_exactly(
- "rspec: one job can only need 5 others, but you have listed 6. See needs keyword documentation for more details")
+ "rspec: one job can only need 10 others, but you have listed 11. See needs keyword documentation for more details")
end
end
diff --git a/spec/lib/gitlab/ci/pipeline/seed/stage_spec.rb b/spec/lib/gitlab/ci/pipeline/seed/stage_spec.rb
index a13335f63d5..a978084876f 100644
--- a/spec/lib/gitlab/ci/pipeline/seed/stage_spec.rb
+++ b/spec/lib/gitlab/ci/pipeline/seed/stage_spec.rb
@@ -81,7 +81,9 @@ describe Gitlab::Ci::Pipeline::Seed::Stage do
context 'when a ref is protected' do
before do
- allow_any_instance_of(Project).to receive(:protected_for?).and_return(true)
+ allow_next_instance_of(Project) do |instance|
+ allow(instance).to receive(:protected_for?).and_return(true)
+ end
end
it 'returns protected builds' do
@@ -91,7 +93,9 @@ describe Gitlab::Ci::Pipeline::Seed::Stage do
context 'when a ref is not protected' do
before do
- allow_any_instance_of(Project).to receive(:protected_for?).and_return(false)
+ allow_next_instance_of(Project) do |instance|
+ allow(instance).to receive(:protected_for?).and_return(false)
+ end
end
it 'returns unprotected builds' do
diff --git a/spec/lib/gitlab/ci/status/build/factory_spec.rb b/spec/lib/gitlab/ci/status/build/factory_spec.rb
index de489fa4664..11be17bfc53 100644
--- a/spec/lib/gitlab/ci/status/build/factory_spec.rb
+++ b/spec/lib/gitlab/ci/status/build/factory_spec.rb
@@ -31,10 +31,10 @@ describe Gitlab::Ci::Status::Build::Factory do
end
it 'fabricates status with correct details' do
- expect(status.text).to eq 'passed'
+ expect(status.text).to eq s_('CiStatusText|passed')
expect(status.icon).to eq 'status_success'
expect(status.favicon).to eq 'favicon_status_success'
- expect(status.label).to eq 'passed'
+ expect(status.label).to eq s_('CiStatusLabel|passed')
expect(status).to have_details
expect(status).to have_action
end
@@ -58,10 +58,10 @@ describe Gitlab::Ci::Status::Build::Factory do
end
it 'fabricates status with correct details' do
- expect(status.text).to eq 'passed'
+ expect(status.text).to eq s_('CiStatusText|passed')
expect(status.icon).to eq 'status_success'
expect(status.favicon).to eq 'favicon_status_success'
- expect(status.label).to eq 'passed'
+ expect(status.label).to eq s_('CiStatusLabel|passed')
expect(status).to have_details
expect(status).to have_action
end
@@ -86,11 +86,11 @@ describe Gitlab::Ci::Status::Build::Factory do
end
it 'fabricates status with correct details' do
- expect(status.text).to eq 'failed'
+ expect(status.text).to eq s_('CiStatusText|failed')
expect(status.icon).to eq 'status_failed'
expect(status.favicon).to eq 'favicon_status_failed'
- expect(status.label).to eq 'failed'
- expect(status.status_tooltip).to eq 'failed - (unknown failure)'
+ expect(status.label).to eq s_('CiStatusLabel|failed')
+ expect(status.status_tooltip).to eq "#{s_('CiStatusText|failed')} - (unknown failure)"
expect(status).to have_details
expect(status).to have_action
end
@@ -115,7 +115,7 @@ describe Gitlab::Ci::Status::Build::Factory do
end
it 'fabricates status with correct details' do
- expect(status.text).to eq 'failed'
+ expect(status.text).to eq s_('CiStatusText|failed')
expect(status.icon).to eq 'status_warning'
expect(status.favicon).to eq 'favicon_status_failed'
expect(status.label).to eq 'failed (allowed to fail)'
@@ -144,10 +144,10 @@ describe Gitlab::Ci::Status::Build::Factory do
end
it 'fabricates status with correct details' do
- expect(status.text).to eq 'failed'
+ expect(status.text).to eq s_('CiStatusText|failed')
expect(status.icon).to eq 'status_failed'
expect(status.favicon).to eq 'favicon_status_failed'
- expect(status.label).to eq 'failed'
+ expect(status.label).to eq s_('CiStatusLabel|failed')
expect(status).to have_details
expect(status).to have_action
expect(status.action_title).to include 'Retry'
@@ -173,11 +173,11 @@ describe Gitlab::Ci::Status::Build::Factory do
end
it 'fabricates status with correct details' do
- expect(status.text).to eq 'canceled'
+ expect(status.text).to eq s_('CiStatusText|canceled')
expect(status.icon).to eq 'status_canceled'
expect(status.favicon).to eq 'favicon_status_canceled'
expect(status.illustration).to include(:image, :size, :title)
- expect(status.label).to eq 'canceled'
+ expect(status.label).to eq s_('CiStatusLabel|canceled')
expect(status).to have_details
expect(status).to have_action
end
@@ -200,10 +200,10 @@ describe Gitlab::Ci::Status::Build::Factory do
end
it 'fabricates status with correct details' do
- expect(status.text).to eq 'running'
+ expect(status.text).to eq s_('CiStatus|running')
expect(status.icon).to eq 'status_running'
expect(status.favicon).to eq 'favicon_status_running'
- expect(status.label).to eq 'running'
+ expect(status.label).to eq s_('CiStatus|running')
expect(status).to have_details
expect(status).to have_action
end
@@ -226,11 +226,11 @@ describe Gitlab::Ci::Status::Build::Factory do
end
it 'fabricates status with correct details' do
- expect(status.text).to eq 'pending'
+ expect(status.text).to eq s_('CiStatusText|pending')
expect(status.icon).to eq 'status_pending'
expect(status.favicon).to eq 'favicon_status_pending'
expect(status.illustration).to include(:image, :size, :title, :content)
- expect(status.label).to eq 'pending'
+ expect(status.label).to eq s_('CiStatusLabel|pending')
expect(status).to have_details
expect(status).to have_action
end
@@ -252,11 +252,11 @@ describe Gitlab::Ci::Status::Build::Factory do
end
it 'fabricates status with correct details' do
- expect(status.text).to eq 'skipped'
+ expect(status.text).to eq s_('CiStatusText|skipped')
expect(status.icon).to eq 'status_skipped'
expect(status.favicon).to eq 'favicon_status_skipped'
expect(status.illustration).to include(:image, :size, :title)
- expect(status.label).to eq 'skipped'
+ expect(status.label).to eq s_('CiStatusLabel|skipped')
expect(status).to have_details
expect(status).not_to have_action
end
@@ -282,7 +282,7 @@ describe Gitlab::Ci::Status::Build::Factory do
end
it 'fabricates status with correct details' do
- expect(status.text).to eq 'manual'
+ expect(status.text).to eq s_('CiStatusText|manual')
expect(status.group).to eq 'manual'
expect(status.icon).to eq 'status_manual'
expect(status.favicon).to eq 'favicon_status_manual'
@@ -339,7 +339,7 @@ describe Gitlab::Ci::Status::Build::Factory do
end
it 'fabricates status with correct details' do
- expect(status.text).to eq 'manual'
+ expect(status.text).to eq s_('CiStatusText|manual')
expect(status.group).to eq 'manual'
expect(status.icon).to eq 'status_manual'
expect(status.favicon).to eq 'favicon_status_manual'
@@ -370,7 +370,7 @@ describe Gitlab::Ci::Status::Build::Factory do
end
it 'fabricates status with correct details' do
- expect(status.text).to eq 'delayed'
+ expect(status.text).to eq s_('CiStatusText|delayed')
expect(status.group).to eq 'scheduled'
expect(status.icon).to eq 'status_scheduled'
expect(status.favicon).to eq 'favicon_status_scheduled'
diff --git a/spec/lib/gitlab/ci/status/pipeline/blocked_spec.rb b/spec/lib/gitlab/ci/status/pipeline/blocked_spec.rb
index 876ba712d05..664915ba552 100644
--- a/spec/lib/gitlab/ci/status/pipeline/blocked_spec.rb
+++ b/spec/lib/gitlab/ci/status/pipeline/blocked_spec.rb
@@ -23,6 +23,7 @@ describe Gitlab::Ci::Status::Pipeline::Blocked do
describe '.matches?' do
let(:user) { double('user') }
+
subject { described_class.matches?(pipeline, user) }
context 'when pipeline is blocked' do
diff --git a/spec/lib/gitlab/ci/status/pipeline/delayed_spec.rb b/spec/lib/gitlab/ci/status/pipeline/delayed_spec.rb
index 90b797965b3..aba403de712 100644
--- a/spec/lib/gitlab/ci/status/pipeline/delayed_spec.rb
+++ b/spec/lib/gitlab/ci/status/pipeline/delayed_spec.rb
@@ -23,6 +23,7 @@ describe Gitlab::Ci::Status::Pipeline::Delayed do
describe '.matches?' do
let(:user) { double('user') }
+
subject { described_class.matches?(pipeline, user) }
context 'when pipeline is scheduled' do
diff --git a/spec/lib/gitlab/ci/templates/auto_devops_gitlab_ci_yaml_spec.rb b/spec/lib/gitlab/ci/templates/auto_devops_gitlab_ci_yaml_spec.rb
new file mode 100644
index 00000000000..c2f9930056a
--- /dev/null
+++ b/spec/lib/gitlab/ci/templates/auto_devops_gitlab_ci_yaml_spec.rb
@@ -0,0 +1,110 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe 'Auto-DevOps.gitlab-ci.yml' do
+ subject(:template) { Gitlab::Template::GitlabCiYmlTemplate.find('Auto-DevOps') }
+
+ describe 'the created pipeline' do
+ let(:user) { create(:admin) }
+ let(:default_branch) { 'master' }
+ let(:pipeline_branch) { default_branch }
+ let(:project) { create(:project, :custom_repo, files: { 'README.md' => '' }) }
+ let(:service) { Ci::CreatePipelineService.new(project, user, ref: pipeline_branch ) }
+ let(:pipeline) { service.execute!(:push) }
+ let(:build_names) { pipeline.builds.pluck(:name) }
+
+ before do
+ stub_ci_pipeline_yaml_file(template.content)
+ allow_any_instance_of(Ci::BuildScheduleWorker).to receive(:perform).and_return(true)
+ allow(project).to receive(:default_branch).and_return(default_branch)
+ end
+
+ it 'creates a build and a test job' do
+ expect(build_names).to include('build', 'test')
+ end
+
+ context 'when the project has no active cluster' do
+ it 'only creates a build and a test stage' do
+ expect(pipeline.stages_names).to eq(%w(build test))
+ end
+
+ it 'does not create any deployment-related builds' do
+ expect(build_names).not_to include('production')
+ expect(build_names).not_to include('production_manual')
+ expect(build_names).not_to include('staging')
+ expect(build_names).not_to include('canary')
+ expect(build_names).not_to include('review')
+ expect(build_names).not_to include(a_string_matching(/rollout \d+%/))
+ end
+ end
+
+ context 'when the project has an active cluster' do
+ let(:cluster) { create(:cluster, :project, :provided_by_gcp, projects: [project]) }
+
+ before do
+ allow(cluster).to receive(:active?).and_return(true)
+ end
+
+ describe 'deployment-related builds' do
+ context 'on default branch' do
+ it 'does not include rollout jobs besides production' do
+ expect(build_names).to include('production')
+ expect(build_names).not_to include('production_manual')
+ expect(build_names).not_to include('staging')
+ expect(build_names).not_to include('canary')
+ expect(build_names).not_to include('review')
+ expect(build_names).not_to include(a_string_matching(/rollout \d+%/))
+ end
+
+ context 'when STAGING_ENABLED=1' do
+ before do
+ create(:ci_variable, project: project, key: 'STAGING_ENABLED', value: '1')
+ end
+
+ it 'includes a staging job and a production_manual job' do
+ expect(build_names).not_to include('production')
+ expect(build_names).to include('production_manual')
+ expect(build_names).to include('staging')
+ expect(build_names).not_to include('canary')
+ expect(build_names).not_to include('review')
+ expect(build_names).not_to include(a_string_matching(/rollout \d+%/))
+ end
+ end
+
+ context 'when CANARY_ENABLED=1' do
+ before do
+ create(:ci_variable, project: project, key: 'CANARY_ENABLED', value: '1')
+ end
+
+ it 'includes a canary job and a production_manual job' do
+ expect(build_names).not_to include('production')
+ expect(build_names).to include('production_manual')
+ expect(build_names).not_to include('staging')
+ expect(build_names).to include('canary')
+ expect(build_names).not_to include('review')
+ expect(build_names).not_to include(a_string_matching(/rollout \d+%/))
+ end
+ end
+ end
+
+ context 'outside of default branch' do
+ let(:pipeline_branch) { 'patch-1' }
+
+ before do
+ project.repository.create_branch(pipeline_branch)
+ end
+
+ it 'does not include rollout jobs besides review' do
+ expect(build_names).not_to include('production')
+ expect(build_names).not_to include('production_manual')
+ expect(build_names).not_to include('staging')
+ expect(build_names).not_to include('canary')
+ expect(build_names).to include('review')
+ expect(build_names).not_to include(a_string_matching(/rollout \d+%/))
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/spec/lib/gitlab/ci/templates/managed_cluster_applications_gitlab_ci_yaml_spec.rb b/spec/lib/gitlab/ci/templates/managed_cluster_applications_gitlab_ci_yaml_spec.rb
new file mode 100644
index 00000000000..2a6314755ef
--- /dev/null
+++ b/spec/lib/gitlab/ci/templates/managed_cluster_applications_gitlab_ci_yaml_spec.rb
@@ -0,0 +1,39 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe 'Managed-Cluster-Applications.gitlab-ci.yml' do
+ subject(:template) { Gitlab::Template::GitlabCiYmlTemplate.find('Managed-Cluster-Applications') }
+
+ describe 'the created pipeline' do
+ let_it_be(:user) { create(:user) }
+
+ let(:project) { create(:project, :custom_repo, namespace: user.namespace, files: { 'README.md' => '' }) }
+ let(:service) { Ci::CreatePipelineService.new(project, user, ref: pipeline_branch ) }
+ let(:pipeline) { service.execute!(:push) }
+ let(:build_names) { pipeline.builds.pluck(:name) }
+ let(:pipeline_branch) { 'master' }
+
+ before do
+ stub_ci_pipeline_yaml_file(template.content)
+ end
+
+ context 'for a default branch' do
+ it 'creates a apply job' do
+ expect(build_names).to match_array('apply')
+ end
+ end
+
+ context 'outside of default branch' do
+ let(:pipeline_branch) { 'a_branch' }
+
+ before do
+ project.repository.create_branch(pipeline_branch)
+ end
+
+ it 'has no jobs' do
+ expect { pipeline }.to raise_error(Ci::CreatePipelineService::CreateError, 'No stages / jobs for this pipeline.')
+ end
+ end
+ end
+end
diff --git a/spec/lib/gitlab/ci/trace/chunked_io_spec.rb b/spec/lib/gitlab/ci/trace/chunked_io_spec.rb
index e0077a5280a..795e8e51276 100644
--- a/spec/lib/gitlab/ci/trace/chunked_io_spec.rb
+++ b/spec/lib/gitlab/ci/trace/chunked_io_spec.rb
@@ -112,8 +112,9 @@ describe Gitlab::Ci::Trace::ChunkedIO, :clean_gitlab_redis_cache do
end
it 'calls get_chunk only once' do
- expect_any_instance_of(Gitlab::Ci::Trace::ChunkedIO)
- .to receive(:current_chunk).once.and_call_original
+ expect_next_instance_of(Gitlab::Ci::Trace::ChunkedIO) do |instance|
+ expect(instance).to receive(:current_chunk).once.and_call_original
+ end
chunked_io.each_line { |line| }
end
diff --git a/spec/lib/gitlab/ci/trace/section_parser_spec.rb b/spec/lib/gitlab/ci/trace/section_parser_spec.rb
index 5e2efe083be..6e8504a1584 100644
--- a/spec/lib/gitlab/ci/trace/section_parser_spec.rb
+++ b/spec/lib/gitlab/ci/trace/section_parser_spec.rb
@@ -21,6 +21,7 @@ describe Gitlab::Ci::Trace::SectionParser do
end
let(:lines) { build_lines('') }
+
subject { described_class.new(lines) }
describe '#sections' do
diff --git a/spec/lib/gitlab/ci/yaml_processor_spec.rb b/spec/lib/gitlab/ci/yaml_processor_spec.rb
index 4b1c7483b11..8f9c5c74260 100644
--- a/spec/lib/gitlab/ci/yaml_processor_spec.rb
+++ b/spec/lib/gitlab/ci/yaml_processor_spec.rb
@@ -28,6 +28,7 @@ module Gitlab
stage: "test",
stage_idx: 2,
name: "rspec",
+ only: { refs: %w[branches tags] },
options: {
before_script: ["pwd"],
script: ["rspec"]
@@ -120,6 +121,7 @@ module Gitlab
stage: "test",
stage_idx: 2,
name: "rspec",
+ only: { refs: %w[branches tags] },
options: { script: ["rspec"] },
interruptible: true,
allow_failure: false,
@@ -149,6 +151,28 @@ module Gitlab
expect(subject[:options]).not_to have_key(:retry)
end
end
+
+ context 'when retry count is specified by default' do
+ let(:config) do
+ YAML.dump(default: { retry: { max: 1 } },
+ rspec: { script: 'rspec' })
+ end
+
+ it 'does use the default value' do
+ expect(subject[:options]).to include(retry: { max: 1 })
+ end
+ end
+
+ context 'when retry count default value is overridden' do
+ let(:config) do
+ YAML.dump(default: { retry: { max: 1 } },
+ rspec: { script: 'rspec', retry: { max: 2 } })
+ end
+
+ it 'does use the job value' do
+ expect(subject[:options]).to include(retry: { max: 2 })
+ end
+ end
end
describe 'allow failure entry' do
@@ -244,8 +268,7 @@ module Gitlab
when: "on_success",
yaml_variables: [],
options: { script: ["rspec"] },
- only: { refs: ["branches"] },
- except: {} }] },
+ only: { refs: ["branches"] } }] },
{ name: "deploy",
index: 3,
builds:
@@ -256,8 +279,7 @@ module Gitlab
when: "on_success",
yaml_variables: [],
options: { script: ["cap prod"] },
- only: { refs: ["tags"] },
- except: {} }] },
+ only: { refs: ["tags"] } }] },
{ name: ".post",
index: 4,
builds: [] }]
@@ -594,6 +616,7 @@ module Gitlab
stage: "test",
stage_idx: 2,
name: "rspec",
+ only: { refs: %w[branches tags] },
options: {
before_script: ["pwd"],
script: ["rspec"],
@@ -625,6 +648,7 @@ module Gitlab
stage: "test",
stage_idx: 2,
name: "rspec",
+ only: { refs: %w[branches tags] },
options: {
before_script: ["pwd"],
script: ["rspec"],
@@ -654,6 +678,7 @@ module Gitlab
stage: "test",
stage_idx: 2,
name: "rspec",
+ only: { refs: %w[branches tags] },
options: {
before_script: ["pwd"],
script: ["rspec"],
@@ -679,6 +704,7 @@ module Gitlab
stage: "test",
stage_idx: 2,
name: "rspec",
+ only: { refs: %w[branches tags] },
options: {
before_script: ["pwd"],
script: ["rspec"],
@@ -1193,6 +1219,7 @@ module Gitlab
stage: "test",
stage_idx: 2,
name: "rspec",
+ only: { refs: %w[branches tags] },
options: {
before_script: ["pwd"],
script: ["rspec"],
@@ -1375,7 +1402,7 @@ module Gitlab
end
it 'raises an error for invalid number' do
- expect { builds }.to raise_error('jobs:deploy_to_production timeout should be a duration')
+ expect { builds }.to raise_error(Gitlab::Ci::YamlProcessor::ValidationError, 'jobs:deploy_to_production:timeout config should be a duration')
end
end
@@ -1490,6 +1517,7 @@ module Gitlab
stage: "build",
stage_idx: 1,
name: "build1",
+ only: { refs: %w[branches tags] },
options: {
script: ["test"]
},
@@ -1501,10 +1529,53 @@ module Gitlab
stage: "test",
stage_idx: 2,
name: "test1",
+ only: { refs: %w[branches tags] },
options: { script: ["test"] },
needs_attributes: [
- { name: "build1" },
- { name: "build2" }
+ { name: "build1", artifacts: true },
+ { name: "build2", artifacts: true }
+ ],
+ when: "on_success",
+ allow_failure: false,
+ yaml_variables: []
+ )
+ end
+ end
+
+ context 'needs two builds' do
+ let(:needs) do
+ [
+ { job: 'parallel', artifacts: false },
+ { job: 'build1', artifacts: true },
+ 'build2'
+ ]
+ end
+
+ it "does create jobs with valid specification" do
+ expect(subject.builds.size).to eq(7)
+ expect(subject.builds[0]).to eq(
+ stage: "build",
+ stage_idx: 1,
+ name: "build1",
+ only: { refs: %w[branches tags] },
+ options: {
+ script: ["test"]
+ },
+ when: "on_success",
+ allow_failure: false,
+ yaml_variables: []
+ )
+ expect(subject.builds[4]).to eq(
+ stage: "test",
+ stage_idx: 2,
+ name: "test1",
+ only: { refs: %w[branches tags] },
+ options: { script: ["test"] },
+ needs_attributes: [
+ { name: "parallel 1/2", artifacts: false },
+ { name: "parallel 2/2", artifacts: false },
+ { name: "build1", artifacts: true },
+ { name: "build2", artifacts: true }
],
when: "on_success",
allow_failure: false,
@@ -1522,10 +1593,41 @@ module Gitlab
stage: "test",
stage_idx: 2,
name: "test1",
+ only: { refs: %w[branches tags] },
options: { script: ["test"] },
needs_attributes: [
- { name: "parallel 1/2" },
- { name: "parallel 2/2" }
+ { name: "parallel 1/2", artifacts: true },
+ { name: "parallel 2/2", artifacts: true }
+ ],
+ when: "on_success",
+ allow_failure: false,
+ yaml_variables: []
+ )
+ end
+ end
+
+ context 'needs dependencies artifacts' do
+ let(:needs) do
+ [
+ "build1",
+ { job: "build2" },
+ { job: "parallel", artifacts: true }
+ ]
+ end
+
+ it "does create jobs with valid specification" do
+ expect(subject.builds.size).to eq(7)
+ expect(subject.builds[4]).to eq(
+ stage: "test",
+ stage_idx: 2,
+ name: "test1",
+ only: { refs: %w[branches tags] },
+ options: { script: ["test"] },
+ needs_attributes: [
+ { name: "build1", artifacts: true },
+ { name: "build2", artifacts: true },
+ { name: "parallel 1/2", artifacts: true },
+ { name: "parallel 2/2", artifacts: true }
],
when: "on_success",
allow_failure: false,
@@ -1617,6 +1719,7 @@ module Gitlab
describe "Hidden jobs" do
let(:config_processor) { Gitlab::Ci::YamlProcessor.new(config) }
+
subject { config_processor.stage_builds_attributes("test") }
shared_examples 'hidden_job_handling' do
@@ -1626,6 +1729,7 @@ module Gitlab
stage: "test",
stage_idx: 2,
name: "normal_job",
+ only: { refs: %w[branches tags] },
options: {
script: ["test"]
},
@@ -1661,6 +1765,7 @@ module Gitlab
describe "YAML Alias/Anchor" do
let(:config_processor) { Gitlab::Ci::YamlProcessor.new(config) }
+
subject { config_processor.stage_builds_attributes("build") }
shared_examples 'job_templates_handling' do
@@ -1670,6 +1775,7 @@ module Gitlab
stage: "build",
stage_idx: 1,
name: "job1",
+ only: { refs: %w[branches tags] },
options: {
script: ["execute-script-for-job"]
},
@@ -1681,6 +1787,7 @@ module Gitlab
stage: "build",
stage_idx: 1,
name: "job2",
+ only: { refs: %w[branches tags] },
options: {
script: ["execute-script-for-job"]
},
@@ -1758,7 +1865,7 @@ module Gitlab
config = YAML.dump({ rspec: { script: "test", tags: "mysql" } })
expect do
Gitlab::Ci::YamlProcessor.new(config)
- end.to raise_error(Gitlab::Ci::YamlProcessor::ValidationError, "jobs:rspec tags should be an array of strings")
+ end.to raise_error(Gitlab::Ci::YamlProcessor::ValidationError, "jobs:rspec:tags config should be an array of strings")
end
it "returns errors if before_script parameter is invalid" do
@@ -2106,7 +2213,7 @@ module Gitlab
context "when the tags parameter is invalid" do
let(:content) { YAML.dump({ rspec: { script: "test", tags: "mysql" } }) }
- it { is_expected.to eq "jobs:rspec tags should be an array of strings" }
+ it { is_expected.to eq "jobs:rspec:tags config should be an array of strings" }
end
context "when YAML content is empty" do
@@ -2127,6 +2234,70 @@ module Gitlab
it { is_expected.to be_nil }
end
end
+
+ describe '.new_with_validation_errors' do
+ subject { Gitlab::Ci::YamlProcessor.new_with_validation_errors(content) }
+
+ context 'when the YAML could not be parsed' do
+ let(:content) { YAML.dump('invalid: yaml: test') }
+
+ it 'returns errors and empty configuration' do
+ expect(subject.valid?).to eq(false)
+ expect(subject.errors).to eq(['Invalid configuration format'])
+ expect(subject.content).to be_blank
+ end
+ end
+
+ context 'when the tags parameter is invalid' do
+ let(:content) { YAML.dump({ rspec: { script: 'test', tags: 'mysql' } }) }
+
+ it 'returns errors and empty configuration' do
+ expect(subject.valid?).to eq(false)
+ expect(subject.errors).to eq(['jobs:rspec:tags config should be an array of strings'])
+ expect(subject.content).to be_blank
+ end
+ end
+
+ context 'when the configuration contains multiple keyword-syntax errors' do
+ let(:content) { YAML.dump({ rspec: { script: 'test', bad_tags: 'mysql', rules: { wrong: 'format' } } }) }
+
+ it 'returns errors and empty configuration' do
+ expect(subject.valid?).to eq(false)
+ expect(subject.errors).to eq(['jobs:rspec config contains unknown keys: bad_tags', 'jobs:rspec rules should be an array of hashes'])
+ expect(subject.content).to be_blank
+ end
+ end
+
+ context 'when YAML content is empty' do
+ let(:content) { '' }
+
+ it 'returns errors and empty configuration' do
+ expect(subject.valid?).to eq(false)
+ expect(subject.errors).to eq(['Please provide content of .gitlab-ci.yml'])
+ expect(subject.content).to be_blank
+ end
+ end
+
+ context 'when the YAML contains an unknown alias' do
+ let(:content) { 'steps: *bad_alias' }
+
+ it 'returns errors and empty configuration' do
+ expect(subject.valid?).to eq(false)
+ expect(subject.errors).to eq(['Unknown alias: bad_alias'])
+ expect(subject.content).to be_blank
+ end
+ end
+
+ context 'when the YAML is valid' do
+ let(:content) { File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci.yml')) }
+
+ it 'returns errors and empty configuration' do
+ expect(subject.valid?).to eq(true)
+ expect(subject.errors).to be_empty
+ expect(subject.content).to be_present
+ end
+ end
+ end
end
end
end
diff --git a/spec/lib/gitlab/cleanup/orphan_job_artifact_files_spec.rb b/spec/lib/gitlab/cleanup/orphan_job_artifact_files_spec.rb
index fc9792e16d7..75ef75fccc9 100644
--- a/spec/lib/gitlab/cleanup/orphan_job_artifact_files_spec.rb
+++ b/spec/lib/gitlab/cleanup/orphan_job_artifact_files_spec.rb
@@ -4,6 +4,7 @@ require 'spec_helper'
describe Gitlab::Cleanup::OrphanJobArtifactFiles do
let(:null_logger) { Logger.new('/dev/null') }
+
subject(:cleanup) { described_class.new(logger: null_logger) }
before do
diff --git a/spec/lib/gitlab/cycle_analytics/shared_stage_spec.rb b/spec/lib/gitlab/cycle_analytics/shared_stage_spec.rb
index c5b17aafdd2..9c16fb6f6dc 100644
--- a/spec/lib/gitlab/cycle_analytics/shared_stage_spec.rb
+++ b/spec/lib/gitlab/cycle_analytics/shared_stage_spec.rb
@@ -9,7 +9,9 @@ shared_examples 'base stage' do
before do
allow(stage).to receive(:project_median).and_return(1.12)
- allow_any_instance_of(Gitlab::CycleAnalytics::BaseEventFetcher).to receive(:event_result).and_return({})
+ allow_next_instance_of(Gitlab::CycleAnalytics::BaseEventFetcher) do |instance|
+ allow(instance).to receive(:event_result).and_return({})
+ end
end
it 'has the median data value' do
diff --git a/spec/lib/gitlab/cycle_analytics/usage_data_spec.rb b/spec/lib/gitlab/cycle_analytics/usage_data_spec.rb
index d4ab9bc225b..41ce9355708 100644
--- a/spec/lib/gitlab/cycle_analytics/usage_data_spec.rb
+++ b/spec/lib/gitlab/cycle_analytics/usage_data_spec.rb
@@ -17,7 +17,9 @@ describe Gitlab::CycleAnalytics::UsageData do
projects.each_with_index do |project, time|
issue = create(:issue, project: project, created_at: (time + 1).hour.ago)
- allow_any_instance_of(Gitlab::ReferenceExtractor).to receive(:issues).and_return([issue])
+ allow_next_instance_of(Gitlab::ReferenceExtractor) do |instance|
+ allow(instance).to receive(:issues).and_return([issue])
+ end
milestone = create(:milestone, project: project)
mr = create_merge_request_closing_issue(user, project, issue, commit_message: "References #{issue.to_reference}")
diff --git a/spec/lib/gitlab/danger/changelog_spec.rb b/spec/lib/gitlab/danger/changelog_spec.rb
new file mode 100644
index 00000000000..888094eaf6e
--- /dev/null
+++ b/spec/lib/gitlab/danger/changelog_spec.rb
@@ -0,0 +1,163 @@
+# frozen_string_literal: true
+
+require 'fast_spec_helper'
+require 'rspec-parameterized'
+require_relative 'danger_spec_helper'
+
+require 'gitlab/danger/changelog'
+
+describe Gitlab::Danger::Changelog do
+ using RSpec::Parameterized::TableSyntax
+ include DangerSpecHelper
+
+ let(:added_files) { nil }
+ let(:fake_git) { double('fake-git', added_files: added_files) }
+
+ let(:mr_labels) { nil }
+ let(:mr_json) { nil }
+ let(:fake_gitlab) { double('fake-gitlab', mr_labels: mr_labels, mr_json: mr_json) }
+
+ let(:changes_by_category) { nil }
+ let(:ee?) { false }
+ let(:fake_helper) { double('fake-helper', changes_by_category: changes_by_category, ee?: ee?) }
+
+ let(:fake_danger) { new_fake_danger.include(described_class) }
+
+ subject(:changelog) { fake_danger.new(git: fake_git, gitlab: fake_gitlab, helper: fake_helper) }
+
+ describe '#needed?' do
+ subject { changelog.needed? }
+
+ [
+ { docs: nil },
+ { none: nil },
+ { docs: nil, none: nil }
+ ].each do |categories|
+ let(:changes_by_category) { categories }
+ it "is falsy when categories don't require a changelog" do
+ is_expected.to be_falsy
+ end
+ end
+
+ where(:categories, :labels) do
+ { backend: nil } | %w[backend backstage]
+ { frontend: nil, docs: nil } | ['ci-build']
+ { engineering_productivity: nil, none: nil } | ['meta']
+ end
+
+ with_them do
+ let(:changes_by_category) { categories }
+ let(:mr_labels) { labels }
+
+ it "is falsy when labels require no changelog" do
+ is_expected.to be_falsy
+ end
+ end
+
+ where(:categories, :labels) do
+ { frontend: nil, docs: nil } | ['database::review pending', 'feature']
+ { backend: nil } | ['backend', 'technical debt']
+ { engineering_productivity: nil, none: nil } | ['frontend']
+ end
+
+ with_them do
+ let(:changes_by_category) { categories }
+ let(:mr_labels) { labels }
+
+ it "is truthy when categories and labels require a changelog" do
+ is_expected.to be_truthy
+ end
+ end
+ end
+
+ describe '#found' do
+ subject { changelog.found }
+
+ context 'added files contain a changelog' do
+ [
+ 'changelogs/unreleased/entry.md',
+ 'ee/changelogs/unreleased/entry.md',
+ 'changelogs/unreleased-ee/entry.md',
+ 'ee/changelogs/unreleased-ee/entry.md'
+ ].each do |file_path|
+ let(:added_files) { [file_path] }
+
+ it { is_expected.to be_truthy }
+ end
+ end
+
+ context 'added files do not contain a changelog' do
+ [
+ 'app/models/model.rb',
+ 'app/assets/javascripts/file.js'
+ ].each do |file_path|
+ let(:added_files) { [file_path] }
+ it { is_expected.to eq(nil) }
+ end
+ end
+ end
+
+ describe '#presented_no_changelog_labels' do
+ subject { changelog.presented_no_changelog_labels }
+
+ it 'returns the labels formatted' do
+ is_expected.to eq('~backstage, ~ci-build, ~meta')
+ end
+ end
+
+ describe '#sanitized_mr_title' do
+ subject { changelog.sanitized_mr_title }
+
+ [
+ 'WIP: My MR title',
+ 'My MR title'
+ ].each do |mr_title|
+ let(:mr_json) { { "title" => mr_title } }
+ it { is_expected.to eq("My MR title") }
+ end
+ end
+
+ describe '#ee_changelog?' do
+ context 'is ee changelog' do
+ [
+ 'changelogs/unreleased-ee/entry.md',
+ 'ee/changelogs/unreleased-ee/entry.md'
+ ].each do |file_path|
+ subject { changelog.ee_changelog?(file_path) }
+
+ it { is_expected.to be_truthy }
+ end
+ end
+
+ context 'is not ee changelog' do
+ [
+ 'changelogs/unreleased/entry.md',
+ 'ee/changelogs/unreleased/entry.md'
+ ].each do |file_path|
+ subject { changelog.ee_changelog?(file_path) }
+
+ it { is_expected.to be_falsy }
+ end
+ end
+ end
+
+ describe '#ce_port_changelog?' do
+ where(:helper_ee?, :file_path, :expected) do
+ true | 'changelogs/unreleased-ee/entry.md' | false
+ true | 'ee/changelogs/unreleased-ee/entry.md' | false
+ false | 'changelogs/unreleased-ee/entry.md' | false
+ false | 'ee/changelogs/unreleased-ee/entry.md' | false
+ true | 'changelogs/unreleased/entry.md' | true
+ true | 'ee/changelogs/unreleased/entry.md' | true
+ false | 'changelogs/unreleased/entry.md' | false
+ false | 'ee/changelogs/unreleased/entry.md' | false
+ end
+
+ with_them do
+ let(:ee?) { helper_ee? }
+ subject { changelog.ce_port_changelog?(file_path) }
+
+ it { is_expected.to eq(expected) }
+ end
+ end
+end
diff --git a/spec/lib/gitlab/danger/danger_spec_helper.rb b/spec/lib/gitlab/danger/danger_spec_helper.rb
new file mode 100644
index 00000000000..b1e84b3c13d
--- /dev/null
+++ b/spec/lib/gitlab/danger/danger_spec_helper.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+module DangerSpecHelper
+ def new_fake_danger
+ Class.new do
+ attr_reader :git, :gitlab, :helper
+
+ # rubocop:disable Gitlab/ModuleWithInstanceVariables
+ def initialize(git: nil, gitlab: nil, helper: nil)
+ @git = git
+ @gitlab = gitlab
+ @helper = helper
+ end
+ # rubocop:enable Gitlab/ModuleWithInstanceVariables
+ end
+ end
+end
diff --git a/spec/lib/gitlab/danger/helper_spec.rb b/spec/lib/gitlab/danger/helper_spec.rb
index 8056418e697..d7e67444fca 100644
--- a/spec/lib/gitlab/danger/helper_spec.rb
+++ b/spec/lib/gitlab/danger/helper_spec.rb
@@ -2,29 +2,22 @@
require 'fast_spec_helper'
require 'rspec-parameterized'
+require_relative 'danger_spec_helper'
require 'gitlab/danger/helper'
describe Gitlab::Danger::Helper do
using RSpec::Parameterized::TableSyntax
-
- class FakeDanger
- include Gitlab::Danger::Helper
-
- attr_reader :git, :gitlab
-
- def initialize(git:, gitlab:)
- @git = git
- @gitlab = gitlab
- end
- end
+ include DangerSpecHelper
let(:fake_git) { double('fake-git') }
let(:mr_author) { nil }
let(:fake_gitlab) { double('fake-gitlab', mr_author: mr_author) }
- subject(:helper) { FakeDanger.new(git: fake_git, gitlab: fake_gitlab) }
+ let(:fake_danger) { new_fake_danger.include(described_class) }
+
+ subject(:helper) { fake_danger.new(git: fake_git, gitlab: fake_gitlab) }
describe '#gitlab_helper' do
context 'when gitlab helper is not available' do
diff --git a/spec/lib/gitlab/danger/teammate_spec.rb b/spec/lib/gitlab/danger/teammate_spec.rb
index 35edfa08a63..bf6152ff3c2 100644
--- a/spec/lib/gitlab/danger/teammate_spec.rb
+++ b/spec/lib/gitlab/danger/teammate_spec.rb
@@ -33,8 +33,8 @@ describe Gitlab::Danger::Teammate do
context 'when labels contain devops::create and the category is test' do
let(:labels) { ['devops::create'] }
- context 'when role is Test Automation Engineer, Create' do
- let(:role) { 'Test Automation Engineer, Create' }
+ context 'when role is Software Engineer in Test, Create' do
+ let(:role) { 'Software Engineer in Test, Create' }
it '#reviewer? returns true' do
expect(subject.reviewer?(project, :test, labels)).to be_truthy
@@ -45,7 +45,7 @@ describe Gitlab::Danger::Teammate do
end
context 'when hyperlink is mangled in the role' do
- let(:role) { '<a href="#">Test Automation Engineer</a>, Create' }
+ let(:role) { '<a href="#">Software Engineer in Test</a>, Create' }
it '#reviewer? returns true' do
expect(subject.reviewer?(project, :test, labels)).to be_truthy
@@ -53,16 +53,16 @@ describe Gitlab::Danger::Teammate do
end
end
- context 'when role is Test Automation Engineer' do
- let(:role) { 'Test Automation Engineer' }
+ context 'when role is Software Engineer in Test' do
+ let(:role) { 'Software Engineer in Test' }
it '#reviewer? returns false' do
expect(subject.reviewer?(project, :test, labels)).to be_falsey
end
end
- context 'when role is Test Automation Engineer, Manage' do
- let(:role) { 'Test Automation Engineer, Manage' }
+ context 'when role is Software Engineer in Test, Manage' do
+ let(:role) { 'Software Engineer in Test, Manage' }
it '#reviewer? returns false' do
expect(subject.reviewer?(project, :test, labels)).to be_falsey
diff --git a/spec/lib/gitlab/data_builder/build_spec.rb b/spec/lib/gitlab/data_builder/build_spec.rb
index b170ef788d9..fdb855de786 100644
--- a/spec/lib/gitlab/data_builder/build_spec.rb
+++ b/spec/lib/gitlab/data_builder/build_spec.rb
@@ -3,7 +3,8 @@
require 'spec_helper'
describe Gitlab::DataBuilder::Build do
- let(:build) { create(:ci_build) }
+ let(:runner) { create(:ci_runner, :instance) }
+ let(:build) { create(:ci_build, :running, runner: runner) }
describe '.build' do
let(:data) do
@@ -20,6 +21,10 @@ describe Gitlab::DataBuilder::Build do
it { expect(data[:build_failure_reason]).to eq(build.failure_reason) }
it { expect(data[:project_id]).to eq(build.project.id) }
it { expect(data[:project_name]).to eq(build.project.full_name) }
+ it { expect(data[:pipeline_id]).to eq(build.pipeline.id) }
+ it { expect(data[:commit][:id]).to eq(build.pipeline.id) }
+ it { expect(data[:runner][:id]).to eq(build.runner.id) }
+ it { expect(data[:runner][:description]).to eq(build.runner.description) }
context 'commit author_url' do
context 'when no commit present' do
diff --git a/spec/lib/gitlab/data_builder/pipeline_spec.rb b/spec/lib/gitlab/data_builder/pipeline_spec.rb
index 931477d19c2..635bf56b72e 100644
--- a/spec/lib/gitlab/data_builder/pipeline_spec.rb
+++ b/spec/lib/gitlab/data_builder/pipeline_spec.rb
@@ -34,6 +34,7 @@ describe Gitlab::DataBuilder::Pipeline do
expect(build_data).to be_a(Hash)
expect(build_data[:id]).to eq(build.id)
expect(build_data[:status]).to eq(build.status)
+ expect(build_data[:allow_failure]).to eq(build.allow_failure)
expect(project_data).to eq(project.hook_attrs(backward: false))
expect(data[:merge_request]).to be_nil
end
diff --git a/spec/lib/gitlab/database/migration_helpers_spec.rb b/spec/lib/gitlab/database/migration_helpers_spec.rb
index 449eee7a371..cac6908f4b4 100644
--- a/spec/lib/gitlab/database/migration_helpers_spec.rb
+++ b/spec/lib/gitlab/database/migration_helpers_spec.rb
@@ -212,44 +212,118 @@ describe Gitlab::Database::MigrationHelpers do
allow(model).to receive(:transaction_open?).and_return(false)
end
- it 'creates a concurrent foreign key and validates it' do
- expect(model).to receive(:disable_statement_timeout).and_call_original
- expect(model).to receive(:execute).with(/statement_timeout/)
- expect(model).to receive(:execute).ordered.with(/NOT VALID/)
- expect(model).to receive(:execute).ordered.with(/VALIDATE CONSTRAINT/)
- expect(model).to receive(:execute).with(/RESET ALL/)
+ context 'ON DELETE statements' do
+ context 'on_delete: :nullify' do
+ it 'appends ON DELETE SET NULL statement' do
+ expect(model).to receive(:disable_statement_timeout).and_call_original
+ expect(model).to receive(:execute).with(/statement_timeout/)
+ expect(model).to receive(:execute).ordered.with(/VALIDATE CONSTRAINT/)
+ expect(model).to receive(:execute).with(/RESET ALL/)
+
+ expect(model).to receive(:execute).with(/ON DELETE SET NULL/)
+
+ model.add_concurrent_foreign_key(:projects, :users,
+ column: :user_id,
+ on_delete: :nullify)
+ end
+ end
- model.add_concurrent_foreign_key(:projects, :users, column: :user_id)
- end
+ context 'on_delete: :cascade' do
+ it 'appends ON DELETE CASCADE statement' do
+ expect(model).to receive(:disable_statement_timeout).and_call_original
+ expect(model).to receive(:execute).with(/statement_timeout/)
+ expect(model).to receive(:execute).ordered.with(/VALIDATE CONSTRAINT/)
+ expect(model).to receive(:execute).with(/RESET ALL/)
+
+ expect(model).to receive(:execute).with(/ON DELETE CASCADE/)
+
+ model.add_concurrent_foreign_key(:projects, :users,
+ column: :user_id,
+ on_delete: :cascade)
+ end
+ end
- it 'appends a valid ON DELETE statement' do
- expect(model).to receive(:disable_statement_timeout).and_call_original
- expect(model).to receive(:execute).with(/statement_timeout/)
- expect(model).to receive(:execute).with(/ON DELETE SET NULL/)
- expect(model).to receive(:execute).ordered.with(/VALIDATE CONSTRAINT/)
- expect(model).to receive(:execute).with(/RESET ALL/)
+ context 'on_delete: nil' do
+ it 'appends no ON DELETE statement' do
+ expect(model).to receive(:disable_statement_timeout).and_call_original
+ expect(model).to receive(:execute).with(/statement_timeout/)
+ expect(model).to receive(:execute).ordered.with(/VALIDATE CONSTRAINT/)
+ expect(model).to receive(:execute).with(/RESET ALL/)
- model.add_concurrent_foreign_key(:projects, :users,
- column: :user_id,
- on_delete: :nullify)
+ expect(model).not_to receive(:execute).with(/ON DELETE/)
+
+ model.add_concurrent_foreign_key(:projects, :users,
+ column: :user_id,
+ on_delete: nil)
+ end
+ end
end
- it 'does not create a foreign key if it exists already' do
- expect(model).to receive(:foreign_key_exists?).with(:projects, :users, column: :user_id).and_return(true)
- expect(model).not_to receive(:execute).with(/ADD CONSTRAINT/)
- expect(model).to receive(:execute).with(/VALIDATE CONSTRAINT/)
+ context 'when no custom key name is supplied' do
+ it 'creates a concurrent foreign key and validates it' do
+ expect(model).to receive(:disable_statement_timeout).and_call_original
+ expect(model).to receive(:execute).with(/statement_timeout/)
+ expect(model).to receive(:execute).ordered.with(/NOT VALID/)
+ expect(model).to receive(:execute).ordered.with(/VALIDATE CONSTRAINT/)
+ expect(model).to receive(:execute).with(/RESET ALL/)
+
+ model.add_concurrent_foreign_key(:projects, :users, column: :user_id)
+ end
+
+ it 'does not create a foreign key if it exists already' do
+ name = model.concurrent_foreign_key_name(:projects, :user_id)
+ expect(model).to receive(:foreign_key_exists?).with(:projects, :users,
+ column: :user_id,
+ on_delete: :cascade,
+ name: name).and_return(true)
+
+ expect(model).not_to receive(:execute).with(/ADD CONSTRAINT/)
+ expect(model).to receive(:execute).with(/VALIDATE CONSTRAINT/)
- model.add_concurrent_foreign_key(:projects, :users, column: :user_id)
+ model.add_concurrent_foreign_key(:projects, :users, column: :user_id)
+ end
end
- it 'allows the use of a custom key name' do
- expect(model).to receive(:disable_statement_timeout).and_call_original
- expect(model).to receive(:execute).with(/statement_timeout/)
- expect(model).to receive(:execute).ordered.with(/NOT VALID/)
- expect(model).to receive(:execute).ordered.with(/VALIDATE CONSTRAINT.+foo/)
- expect(model).to receive(:execute).with(/RESET ALL/)
+ context 'when a custom key name is supplied' do
+ context 'for creating a new foreign key for a column that does not presently exist' do
+ it 'creates a new foreign key' do
+ expect(model).to receive(:disable_statement_timeout).and_call_original
+ expect(model).to receive(:execute).with(/statement_timeout/)
+ expect(model).to receive(:execute).ordered.with(/NOT VALID/)
+ expect(model).to receive(:execute).ordered.with(/VALIDATE CONSTRAINT.+foo/)
+ expect(model).to receive(:execute).with(/RESET ALL/)
+
+ model.add_concurrent_foreign_key(:projects, :users, column: :user_id, name: :foo)
+ end
+ end
+
+ context 'for creating a duplicate foreign key for a column that presently exists' do
+ context 'when the supplied key name is the same as the existing foreign key name' do
+ it 'does not create a new foreign key' do
+ expect(model).to receive(:foreign_key_exists?).with(:projects, :users,
+ name: :foo,
+ on_delete: :cascade,
+ column: :user_id).and_return(true)
+
+ expect(model).not_to receive(:execute).with(/ADD CONSTRAINT/)
+ expect(model).to receive(:execute).with(/VALIDATE CONSTRAINT/)
+
+ model.add_concurrent_foreign_key(:projects, :users, column: :user_id, name: :foo)
+ end
+ end
+
+ context 'when the supplied key name is different from the existing foreign key name' do
+ it 'creates a new foreign key' do
+ expect(model).to receive(:disable_statement_timeout).and_call_original
+ expect(model).to receive(:execute).with(/statement_timeout/)
+ expect(model).to receive(:execute).ordered.with(/NOT VALID/)
+ expect(model).to receive(:execute).ordered.with(/VALIDATE CONSTRAINT.+bar/)
+ expect(model).to receive(:execute).with(/RESET ALL/)
- model.add_concurrent_foreign_key(:projects, :users, column: :user_id, name: :foo)
+ model.add_concurrent_foreign_key(:projects, :users, column: :user_id, name: :bar)
+ end
+ end
+ end
end
end
end
@@ -266,23 +340,61 @@ describe Gitlab::Database::MigrationHelpers do
describe '#foreign_key_exists?' do
before do
- key = ActiveRecord::ConnectionAdapters::ForeignKeyDefinition.new(:projects, :users, { column: :non_standard_id })
+ key = ActiveRecord::ConnectionAdapters::ForeignKeyDefinition.new(:projects, :users, { column: :non_standard_id, name: :fk_projects_users_non_standard_id, on_delete: :cascade })
allow(model).to receive(:foreign_keys).with(:projects).and_return([key])
end
- it 'finds existing foreign keys by column' do
- expect(model.foreign_key_exists?(:projects, :users, column: :non_standard_id)).to be_truthy
+ shared_examples_for 'foreign key checks' do
+ it 'finds existing foreign keys by column' do
+ expect(model.foreign_key_exists?(:projects, target_table, column: :non_standard_id)).to be_truthy
+ end
+
+ it 'finds existing foreign keys by name' do
+ expect(model.foreign_key_exists?(:projects, target_table, name: :fk_projects_users_non_standard_id)).to be_truthy
+ end
+
+ it 'finds existing foreign_keys by name and column' do
+ expect(model.foreign_key_exists?(:projects, target_table, name: :fk_projects_users_non_standard_id, column: :non_standard_id)).to be_truthy
+ end
+
+ it 'finds existing foreign_keys by name, column and on_delete' do
+ expect(model.foreign_key_exists?(:projects, target_table, name: :fk_projects_users_non_standard_id, column: :non_standard_id, on_delete: :cascade)).to be_truthy
+ end
+
+ it 'finds existing foreign keys by target table only' do
+ expect(model.foreign_key_exists?(:projects, target_table)).to be_truthy
+ end
+
+ it 'compares by column name if given' do
+ expect(model.foreign_key_exists?(:projects, target_table, column: :user_id)).to be_falsey
+ end
+
+ it 'compares by foreign key name if given' do
+ expect(model.foreign_key_exists?(:projects, target_table, name: :non_existent_foreign_key_name)).to be_falsey
+ end
+
+ it 'compares by foreign key name and column if given' do
+ expect(model.foreign_key_exists?(:projects, target_table, name: :non_existent_foreign_key_name, column: :non_standard_id)).to be_falsey
+ end
+
+ it 'compares by foreign key name, column and on_delete if given' do
+ expect(model.foreign_key_exists?(:projects, target_table, name: :fk_projects_users_non_standard_id, column: :non_standard_id, on_delete: :nullify)).to be_falsey
+ end
end
- it 'finds existing foreign keys by target table only' do
- expect(model.foreign_key_exists?(:projects, :users)).to be_truthy
+ context 'without specifying a target table' do
+ let(:target_table) { nil }
+
+ it_behaves_like 'foreign key checks'
end
- it 'compares by column name if given' do
- expect(model.foreign_key_exists?(:projects, :users, column: :user_id)).to be_falsey
+ context 'specifying a target table' do
+ let(:target_table) { :users }
+
+ it_behaves_like 'foreign key checks'
end
- it 'compares by target if no column given' do
+ it 'compares by target table if no column given' do
expect(model.foreign_key_exists?(:projects, :other_table)).to be_falsey
end
end
@@ -1328,4 +1440,17 @@ describe Gitlab::Database::MigrationHelpers do
end
end
end
+
+ describe '#create_or_update_plan_limit' do
+ it 'creates or updates plan limits' do
+ expect(model).to receive(:execute).with <<~SQL
+ INSERT INTO plan_limits (plan_id, "project_hooks")
+ VALUES
+ ((SELECT id FROM plans WHERE name = 'free' LIMIT 1), '10')
+ ON CONFLICT (plan_id) DO UPDATE SET "project_hooks" = EXCLUDED."project_hooks";
+ SQL
+
+ model.create_or_update_plan_limit('project_hooks', 'free', 10)
+ end
+ end
end
diff --git a/spec/lib/gitlab/database/obsolete_ignored_columns_spec.rb b/spec/lib/gitlab/database/obsolete_ignored_columns_spec.rb
index 6d38f7f1b95..0f68201a153 100644
--- a/spec/lib/gitlab/database/obsolete_ignored_columns_spec.rb
+++ b/spec/lib/gitlab/database/obsolete_ignored_columns_spec.rb
@@ -4,25 +4,34 @@ require 'spec_helper'
describe Gitlab::Database::ObsoleteIgnoredColumns do
module Testing
+ # Used a fixed date to prevent tests failing across date boundaries
+ REMOVE_DATE = Date.new(2019, 12, 16)
+
class MyBase < ApplicationRecord
end
class SomeAbstract < MyBase
+ include IgnorableColumns
+
self.abstract_class = true
self.table_name = 'projects'
- self.ignored_columns += %i[unused]
+ ignore_column :unused, remove_after: '2019-01-01', remove_with: '12.0'
end
class B < MyBase
+ include IgnorableColumns
+
self.table_name = 'issues'
- self.ignored_columns += %i[id other]
+ ignore_column :id, :other, remove_after: '2019-01-01', remove_with: '12.0'
+ ignore_column :not_used_but_still_ignored, remove_after: REMOVE_DATE.to_s, remove_with: '12.1'
end
class A < SomeAbstract
- self.ignored_columns += %i[id also_unused]
+ ignore_column :also_unused, remove_after: '2019-02-01', remove_with: '12.1'
+ ignore_column :not_used_but_still_ignored, remove_after: REMOVE_DATE.to_s, remove_with: '12.1'
end
class C < MyBase
@@ -34,10 +43,17 @@ describe Gitlab::Database::ObsoleteIgnoredColumns do
describe '#execute' do
it 'returns a list of class names and columns pairs' do
- expect(subject.execute).to eq([
- ['Testing::A', %w(unused also_unused)],
- ['Testing::B', %w(other)]
- ])
+ Timecop.freeze(Testing::REMOVE_DATE) do
+ expect(subject.execute).to eq([
+ ['Testing::A', {
+ 'unused' => IgnorableColumns::ColumnIgnore.new(Date.parse('2019-01-01'), '12.0'),
+ 'also_unused' => IgnorableColumns::ColumnIgnore.new(Date.parse('2019-02-01'), '12.1')
+ }],
+ ['Testing::B', {
+ 'other' => IgnorableColumns::ColumnIgnore.new(Date.parse('2019-01-01'), '12.0')
+ }]
+ ])
+ end
end
end
end
diff --git a/spec/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_base_spec.rb b/spec/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_base_spec.rb
index 612c418e8bb..7b8437e4874 100644
--- a/spec/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_base_spec.rb
+++ b/spec/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_base_spec.rb
@@ -83,6 +83,7 @@ describe Gitlab::Database::RenameReservedPathsMigration::V1::RenameBase, :delete
describe '#rename_path_for_routable' do
context 'for namespaces' do
let(:namespace) { create(:namespace, path: 'the-path') }
+
it "renames namespaces called the-path" do
subject.rename_path_for_routable(migration_namespace(namespace))
@@ -159,6 +160,7 @@ describe Gitlab::Database::RenameReservedPathsMigration::V1::RenameBase, :delete
describe '#perform_rename' do
describe 'for namespaces' do
let(:namespace) { create(:namespace, path: 'the-path') }
+
it 'renames the path' do
subject.perform_rename(migration_namespace(namespace), 'the-path', 'renamed')
diff --git a/spec/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_namespaces_spec.rb b/spec/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_namespaces_spec.rb
index 8c4d7e323fa..46fc48ab3fc 100644
--- a/spec/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_namespaces_spec.rb
+++ b/spec/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_namespaces_spec.rb
@@ -95,6 +95,7 @@ describe Gitlab::Database::RenameReservedPathsMigration::V1::RenameNamespaces, :
describe '#move_repositories' do
let(:namespace) { create(:group, name: 'hello-group') }
+
it 'moves a project for a namespace' do
create(:project, :repository, :legacy_storage, namespace: namespace, path: 'hello-project')
expected_path = File.join(TestEnv.repos_path, 'bye-group', 'hello-project.git')
diff --git a/spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb b/spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb
index 5b1a17e734d..ee3c99afdf1 100644
--- a/spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb
+++ b/spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb
@@ -279,5 +279,11 @@ describe Gitlab::DatabaseImporters::SelfMonitoring::Project::CreateService do
end
end
end
+
+ it "tracks successful install" do
+ expect(Gitlab::Tracking).to receive(:event).with("self_monitoring", "project_created")
+
+ result
+ end
end
end
diff --git a/spec/lib/gitlab/database_spec.rb b/spec/lib/gitlab/database_spec.rb
index 15fb1503529..3db8900ed8e 100644
--- a/spec/lib/gitlab/database_spec.rb
+++ b/spec/lib/gitlab/database_spec.rb
@@ -228,6 +228,7 @@ describe Gitlab::Database do
describe '.bulk_insert' do
before do
allow(described_class).to receive(:connection).and_return(connection)
+ allow(described_class).to receive(:version).and_return(version)
allow(connection).to receive(:quote_column_name, &:itself)
allow(connection).to receive(:quote, &:itself)
allow(connection).to receive(:execute)
@@ -242,6 +243,8 @@ describe Gitlab::Database do
]
end
+ let_it_be(:version) { 9.6 }
+
it 'does nothing with empty rows' do
expect(connection).not_to receive(:execute)
@@ -307,6 +310,30 @@ describe Gitlab::Database do
expect(ids).to eq([10])
end
+
+ context 'with version >= 9.5' do
+ it 'allows setting the upsert to do nothing' do
+ expect(connection)
+ .to receive(:execute)
+ .with(/ON CONFLICT DO NOTHING/)
+
+ described_class
+ .bulk_insert('test', [{ number: 10 }], on_conflict: :do_nothing)
+ end
+ end
+
+ context 'with version < 9.5' do
+ let(:version) { 9.4 }
+
+ it 'refuses setting the upsert' do
+ expect(connection)
+ .not_to receive(:execute)
+ .with(/ON CONFLICT/)
+
+ described_class
+ .bulk_insert('test', [{ number: 10 }], on_conflict: :do_nothing)
+ end
+ end
end
end
diff --git a/spec/lib/gitlab/diff/deprecated_highlight_cache_spec.rb b/spec/lib/gitlab/diff/deprecated_highlight_cache_spec.rb
new file mode 100644
index 00000000000..7e46632ea77
--- /dev/null
+++ b/spec/lib/gitlab/diff/deprecated_highlight_cache_spec.rb
@@ -0,0 +1,70 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::Diff::DeprecatedHighlightCache do
+ let(:merge_request) { create(:merge_request_with_diffs) }
+
+ subject(:cache) { described_class.new(merge_request.diffs, backend: backend) }
+
+ describe '#decorate' do
+ let(:backend) { double('backend').as_null_object }
+
+ # Manually creates a Diff::File object to avoid triggering the cache on
+ # the FileCollection::MergeRequestDiff
+ let(:diff_file) do
+ diffs = merge_request.diffs
+ raw_diff = diffs.diffable.raw_diffs(diffs.diff_options.merge(paths: ['CHANGELOG'])).first
+ Gitlab::Diff::File.new(raw_diff,
+ repository: diffs.project.repository,
+ diff_refs: diffs.diff_refs,
+ fallback_diff_refs: diffs.fallback_diff_refs)
+ end
+
+ it 'does not calculate highlighting when reading from cache' do
+ cache.write_if_empty
+ cache.decorate(diff_file)
+
+ expect_any_instance_of(Gitlab::Diff::Highlight).not_to receive(:highlight)
+
+ diff_file.highlighted_diff_lines
+ end
+
+ it 'assigns highlighted diff lines to the DiffFile' do
+ cache.write_if_empty
+ cache.decorate(diff_file)
+
+ expect(diff_file.highlighted_diff_lines.size).to be > 5
+ end
+
+ it 'submits a single reading from the cache' do
+ cache.decorate(diff_file)
+ cache.decorate(diff_file)
+
+ expect(backend).to have_received(:read).with(cache.key).once
+ end
+ end
+
+ describe '#write_if_empty' do
+ let(:backend) { double('backend', read: {}).as_null_object }
+
+ it 'submits a single writing to the cache' do
+ cache.write_if_empty
+ cache.write_if_empty
+
+ expect(backend).to have_received(:write).with(cache.key,
+ hash_including('CHANGELOG-false-false-false'),
+ expires_in: 1.week).once
+ end
+ end
+
+ describe '#clear' do
+ let(:backend) { double('backend').as_null_object }
+
+ it 'clears cache' do
+ cache.clear
+
+ expect(backend).to have_received(:delete).with(cache.key)
+ end
+ end
+end
diff --git a/spec/lib/gitlab/diff/diff_refs_spec.rb b/spec/lib/gitlab/diff/diff_refs_spec.rb
index e12b46c15ad..33a7cf5ae12 100644
--- a/spec/lib/gitlab/diff/diff_refs_spec.rb
+++ b/spec/lib/gitlab/diff/diff_refs_spec.rb
@@ -7,6 +7,7 @@ describe Gitlab::Diff::DiffRefs do
describe '#==' do
let(:commit) { project.commit('1a0b36b3cdad1d2ee32457c102a8c0b7056fa863') }
+
subject { commit.diff_refs }
context 'when shas are missing' do
@@ -63,6 +64,7 @@ describe Gitlab::Diff::DiffRefs do
describe '#compare_in' do
context 'with diff refs for the initial commit' do
let(:commit) { project.commit('1a0b36b3cdad1d2ee32457c102a8c0b7056fa863') }
+
subject { commit.diff_refs }
it 'returns an appropriate comparison' do
@@ -74,6 +76,7 @@ describe Gitlab::Diff::DiffRefs do
context 'with diff refs for a commit' do
let(:commit) { project.commit('6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9') }
+
subject { commit.diff_refs }
it 'returns an appropriate comparison' do
diff --git a/spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb b/spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb
index 265c6260ca9..7e945d1d140 100644
--- a/spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb
+++ b/spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb
@@ -123,4 +123,8 @@ describe Gitlab::Diff::FileCollection::MergeRequestDiffBatch do
collection_default_args)
end
end
+
+ it_behaves_like 'cacheable diff collection' do
+ let(:cacheable_files_count) { batch_size }
+ end
end
diff --git a/spec/lib/gitlab/diff/file_collection/merge_request_diff_spec.rb b/spec/lib/gitlab/diff/file_collection/merge_request_diff_spec.rb
index d89be6fef4e..a4f74ddc8c2 100644
--- a/spec/lib/gitlab/diff/file_collection/merge_request_diff_spec.rb
+++ b/spec/lib/gitlab/diff/file_collection/merge_request_diff_spec.rb
@@ -4,22 +4,31 @@ require 'spec_helper'
describe Gitlab::Diff::FileCollection::MergeRequestDiff do
let(:merge_request) { create(:merge_request) }
- let(:subject) { described_class.new(merge_request.merge_request_diff, diff_options: nil) }
+ let(:diffable) { merge_request.merge_request_diff }
+ let(:subject) { described_class.new(diffable, diff_options: nil) }
let(:diff_files) { subject.diff_files }
describe '#diff_files' do
it 'does not highlight binary files' do
- allow_any_instance_of(Gitlab::Diff::File).to receive(:text?).and_return(false)
+ allow_next_instance_of(Gitlab::Diff::File) do |instance|
+ allow(instance).to receive(:text?).and_return(false)
+ end
- expect_any_instance_of(Gitlab::Diff::File).not_to receive(:highlighted_diff_lines)
+ expect_next_instance_of(Gitlab::Diff::File) do |instance|
+ expect(instance).not_to receive(:highlighted_diff_lines)
+ end
diff_files
end
it 'does not highlight files marked as undiffable in .gitattributes' do
- allow_any_instance_of(Gitlab::Diff::File).to receive(:diffable?).and_return(false)
+ allow_next_instance_of(Gitlab::Diff::File) do |instance|
+ allow(instance).to receive(:diffable?).and_return(false)
+ end
- expect_any_instance_of(Gitlab::Diff::File).not_to receive(:highlighted_diff_lines)
+ expect_next_instance_of(Gitlab::Diff::File) do |instance|
+ expect(instance).not_to receive(:highlighted_diff_lines)
+ end
diff_files
end
@@ -29,13 +38,19 @@ describe Gitlab::Diff::FileCollection::MergeRequestDiff do
let(:diffable) { merge_request.merge_request_diff }
end
- it 'uses a different cache key if diff line keys change' do
- mr_diff = described_class.new(merge_request.merge_request_diff, diff_options: nil)
- key = mr_diff.cache_key
+ context 'using Gitlab::Diff::DeprecatedHighlightCache' do
+ before do
+ stub_feature_flags(hset_redis_diff_caching: false)
+ end
+
+ it 'uses a different cache key if diff line keys change' do
+ mr_diff = described_class.new(merge_request.merge_request_diff, diff_options: nil)
+ key = mr_diff.cache_key
- stub_const('Gitlab::Diff::Line::SERIALIZE_KEYS', [:foo])
+ stub_const('Gitlab::Diff::Line::SERIALIZE_KEYS', [:foo])
- expect(mr_diff.cache_key).not_to eq(key)
+ expect(mr_diff.cache_key).not_to eq(key)
+ end
end
it_behaves_like 'diff statistics' do
@@ -46,6 +61,10 @@ describe Gitlab::Diff::FileCollection::MergeRequestDiff do
let(:stub_path) { '.gitignore' }
end
+ it_behaves_like 'cacheable diff collection' do
+ let(:cacheable_files_count) { diffable.size.to_i }
+ end
+
it 'returns a valid instance of a DiffCollection' do
expect(diff_files).to be_a(Gitlab::Git::DiffCollection)
end
diff --git a/spec/lib/gitlab/diff/highlight_cache_spec.rb b/spec/lib/gitlab/diff/highlight_cache_spec.rb
index bfcfed4231f..c73ec84e332 100644
--- a/spec/lib/gitlab/diff/highlight_cache_spec.rb
+++ b/spec/lib/gitlab/diff/highlight_cache_spec.rb
@@ -2,14 +2,46 @@
require 'spec_helper'
-describe Gitlab::Diff::HighlightCache do
+describe Gitlab::Diff::HighlightCache, :clean_gitlab_redis_cache do
let(:merge_request) { create(:merge_request_with_diffs) }
+ let(:diff_hash) do
+ { ".gitignore-false-false-false" =>
+ [{ line_code: nil, rich_text: nil, text: "@@ -17,3 +17,4 @@ rerun.txt", type: "match", index: 0, old_pos: 17, new_pos: 17 },
+ { line_code: "a5cc2925ca8258af241be7e5b0381edf30266302_17_17",
+ rich_text: " <span id=\"LC17\" class=\"line\" lang=\"plaintext\">pickle-email-*.html</span>\n",
+ text: " pickle-email-*.html",
+ type: nil,
+ index: 1,
+ old_pos: 17,
+ new_pos: 17 },
+ { line_code: "a5cc2925ca8258af241be7e5b0381edf30266302_18_18",
+ rich_text: " <span id=\"LC18\" class=\"line\" lang=\"plaintext\">.project</span>\n",
+ text: " .project",
+ type: nil,
+ index: 2,
+ old_pos: 18,
+ new_pos: 18 },
+ { line_code: "a5cc2925ca8258af241be7e5b0381edf30266302_19_19",
+ rich_text: " <span id=\"LC19\" class=\"line\" lang=\"plaintext\">config/initializers/secret_token.rb</span>\n",
+ text: " config/initializers/secret_token.rb",
+ type: nil,
+ index: 3,
+ old_pos: 19,
+ new_pos: 19 },
+ { line_code: "a5cc2925ca8258af241be7e5b0381edf30266302_20_20",
+ rich_text: "+<span id=\"LC20\" class=\"line\" lang=\"plaintext\">.DS_Store</span>",
+ text: "+.DS_Store",
+ type: "new",
+ index: 4,
+ old_pos: 20,
+ new_pos: 20 }] }
+ end
- subject(:cache) { described_class.new(merge_request.diffs, backend: backend) }
+ let(:cache_key) { cache.key }
- describe '#decorate' do
- let(:backend) { double('backend').as_null_object }
+ subject(:cache) { described_class.new(merge_request.diffs) }
+ describe '#decorate' do
# Manually creates a Diff::File object to avoid triggering the cache on
# the FileCollection::MergeRequestDiff
let(:diff_file) do
@@ -37,34 +69,89 @@ describe Gitlab::Diff::HighlightCache do
expect(diff_file.highlighted_diff_lines.size).to be > 5
end
- it 'submits a single reading from the cache' do
- cache.decorate(diff_file)
+ it 'assigns highlighted diff lines which rich_text are HTML-safe' do
+ cache.write_if_empty
cache.decorate(diff_file)
- expect(backend).to have_received(:read).with(cache.key).once
+ rich_texts = diff_file.highlighted_diff_lines.map(&:rich_text)
+
+ expect(rich_texts).to all(be_html_safe)
end
end
- describe '#write_if_empty' do
- let(:backend) { double('backend', read: {}).as_null_object }
+ shared_examples 'caches missing entries' do
+ it 'filters the key/value list of entries to be caches for each invocation' do
+ expect(cache).to receive(:write_to_redis_hash)
+ .with(hash_including(*paths))
+ .once
+ .and_call_original
+
+ 2.times { cache.write_if_empty }
+ end
+
+ it 'reads from cache once' do
+ expect(cache).to receive(:read_cache).once.and_call_original
- it 'submits a single writing to the cache' do
- cache.write_if_empty
cache.write_if_empty
+ end
+ end
- expect(backend).to have_received(:write).with(cache.key,
- hash_including('CHANGELOG-false-false-false'),
- expires_in: 1.week).once
+ describe '#write_if_empty' do
+ it_behaves_like 'caches missing entries' do
+ let(:paths) { merge_request.diffs.raw_diff_files.select(&:text?).map(&:file_path) }
+ end
+
+ context 'different diff_collections for the same diffable' do
+ before do
+ cache.write_if_empty
+ end
+
+ it 'writes an uncached files in the collection to the same redis hash' do
+ Gitlab::Redis::Cache.with { |r| r.hdel(cache_key, "files/whitespace") }
+
+ expect { cache.write_if_empty }
+ .to change { Gitlab::Redis::Cache.with { |r| r.hgetall(cache_key) } }
+ end
+ end
+
+ context 'when cache initialized with MergeRequestDiffBatch' do
+ let(:merge_request_diff_batch) do
+ Gitlab::Diff::FileCollection::MergeRequestDiffBatch.new(
+ merge_request.merge_request_diff,
+ 1,
+ 10,
+ diff_options: nil)
+ end
+
+ it_behaves_like 'caches missing entries' do
+ let(:cache) { described_class.new(merge_request_diff_batch) }
+ let(:paths) { merge_request_diff_batch.raw_diff_files.select(&:text?).map(&:file_path) }
+ end
end
end
- describe '#clear' do
- let(:backend) { double('backend').as_null_object }
+ describe '#write_to_redis_hash' do
+ it 'creates or updates a Redis hash' do
+ expect { cache.send(:write_to_redis_hash, diff_hash) }
+ .to change { Gitlab::Redis::Cache.with { |r| r.hgetall(cache_key) } }
+ end
+ # Note that this spec and the code it confirms can be removed when
+ # :hset_redis_diff_caching is fully launched.
+ #
+ it 'attempts to clear deprecated cache entries' do
+ expect_any_instance_of(Gitlab::Diff::DeprecatedHighlightCache)
+ .to receive(:clear).and_call_original
+
+ cache.send(:write_to_redis_hash, diff_hash)
+ end
+ end
+
+ describe '#clear' do
it 'clears cache' do
- cache.clear
+ expect_any_instance_of(Redis).to receive(:del).with(cache_key)
- expect(backend).to have_received(:delete).with(cache.key)
+ cache.clear
end
end
end
diff --git a/spec/lib/gitlab/diff/highlight_spec.rb b/spec/lib/gitlab/diff/highlight_spec.rb
index f5d3d14ccc5..ff4ec75358e 100644
--- a/spec/lib/gitlab/diff/highlight_spec.rb
+++ b/spec/lib/gitlab/diff/highlight_spec.rb
@@ -105,7 +105,7 @@ describe Gitlab::Diff::Highlight do
end
it 'keeps the original rich line' do
- allow(Gitlab::Sentry).to receive(:track_exception)
+ allow(Gitlab::ErrorTracking).to receive(:track_and_raise_for_dev_exception)
code = %q{+ raise RuntimeError, "System commands must be given as an array of strings"}
@@ -114,7 +114,7 @@ describe Gitlab::Diff::Highlight do
end
it 'reports to Sentry if configured' do
- expect(Gitlab::Sentry).to receive(:track_exception).and_call_original
+ expect(Gitlab::ErrorTracking).to receive(:track_and_raise_for_dev_exception).and_call_original
expect { subject }. to raise_exception(RangeError)
end
diff --git a/spec/lib/gitlab/diff/line_mapper_spec.rb b/spec/lib/gitlab/diff/line_mapper_spec.rb
index 1739bcd14a8..6a86f885c3b 100644
--- a/spec/lib/gitlab/diff/line_mapper_spec.rb
+++ b/spec/lib/gitlab/diff/line_mapper_spec.rb
@@ -11,6 +11,7 @@ describe Gitlab::Diff::LineMapper do
let(:diffs) { commit.raw_diffs }
let(:diff) { diffs.first }
let(:diff_file) { Gitlab::Diff::File.new(diff, diff_refs: commit.diff_refs, repository: repository) }
+
subject { described_class.new(diff_file) }
describe '#old_to_new' do
diff --git a/spec/lib/gitlab/diff/line_spec.rb b/spec/lib/gitlab/diff/line_spec.rb
index 29b9951ba4c..7961bec9d57 100644
--- a/spec/lib/gitlab/diff/line_spec.rb
+++ b/spec/lib/gitlab/diff/line_spec.rb
@@ -1,18 +1,48 @@
# frozen_string_literal: true
+require 'spec_helper'
+
describe Gitlab::Diff::Line do
- describe '.init_from_hash' do
+ shared_examples 'line object initialized by hash' do
it 'round-trips correctly with to_hash' do
- line = described_class.new('<input>', 'match', 0, 0, 1,
- parent_file: double(:file),
- line_code: double(:line_code),
- rich_text: '&lt;input&gt;')
-
- expect(described_class.init_from_hash(line.to_hash).to_hash)
+ expect(described_class.safe_init_from_hash(line.to_hash).to_hash)
.to eq(line.to_hash)
end
end
+ let(:line) do
+ described_class.new('<input>', 'match', 0, 0, 1,
+ parent_file: double(:file),
+ line_code: double(:line_code),
+ rich_text: rich_text)
+ end
+
+ describe '.init_from_hash' do
+ let(:rich_text) { '&lt;input&gt;' }
+
+ it_behaves_like 'line object initialized by hash'
+ end
+
+ describe '.safe_init_from_hash' do
+ let(:rich_text) { '<input>' }
+
+ it_behaves_like 'line object initialized by hash'
+
+ it 'ensures rich_text is HTML-safe' do
+ expect(line.rich_text).not_to be_html_safe
+
+ new_line = described_class.safe_init_from_hash(line.to_hash)
+
+ expect(new_line.rich_text).to be_html_safe
+ end
+
+ context 'when given hash has no rich_text' do
+ it_behaves_like 'line object initialized by hash' do
+ let(:rich_text) { nil }
+ end
+ end
+ end
+
context "when setting rich text" do
it 'escapes any HTML special characters in the diff chunk header' do
subject = described_class.new("<input>", "", 0, 0, 0)
diff --git a/spec/lib/gitlab/diff/parallel_diff_spec.rb b/spec/lib/gitlab/diff/parallel_diff_spec.rb
index 7540da71086..d275bf2c223 100644
--- a/spec/lib/gitlab/diff/parallel_diff_spec.rb
+++ b/spec/lib/gitlab/diff/parallel_diff_spec.rb
@@ -11,6 +11,7 @@ describe Gitlab::Diff::ParallelDiff do
let(:diffs) { commit.raw_diffs }
let(:diff) { diffs.first }
let(:diff_file) { Gitlab::Diff::File.new(diff, diff_refs: commit.diff_refs, repository: repository) }
+
subject { described_class.new(diff_file) }
describe '#parallelize' do
diff --git a/spec/lib/gitlab/discussions_diff/highlight_cache_spec.rb b/spec/lib/gitlab/discussions_diff/highlight_cache_spec.rb
index 15ee8c40b55..97d3a49ea90 100644
--- a/spec/lib/gitlab/discussions_diff/highlight_cache_spec.rb
+++ b/spec/lib/gitlab/discussions_diff/highlight_cache_spec.rb
@@ -62,6 +62,15 @@ describe Gitlab::DiscussionsDiff::HighlightCache, :clean_gitlab_redis_cache do
expect(found.second.size).to eq(2)
expect(found.second).to all(be_a(Gitlab::Diff::Line))
end
+
+ it 'returns lines which rich_text are HTML-safe' do
+ described_class.write_multiple(mapping)
+
+ found = described_class.read_multiple(mapping.keys)
+ rich_texts = found.flatten.map(&:rich_text)
+
+ expect(rich_texts).to all(be_html_safe)
+ end
end
describe '#clear_multiple' do
diff --git a/spec/lib/gitlab/email/handler/create_merge_request_handler_spec.rb b/spec/lib/gitlab/email/handler/create_merge_request_handler_spec.rb
index 2fa86b2b46f..9f5413f9607 100644
--- a/spec/lib/gitlab/email/handler/create_merge_request_handler_spec.rb
+++ b/spec/lib/gitlab/email/handler/create_merge_request_handler_spec.rb
@@ -95,7 +95,9 @@ describe Gitlab::Email::Handler::CreateMergeRequestHandler do
context "something is wrong" do
context "when the merge request could not be saved" do
before do
- allow_any_instance_of(MergeRequest).to receive(:save).and_return(false)
+ allow_next_instance_of(MergeRequest) do |instance|
+ allow(instance).to receive(:save).and_return(false)
+ end
end
it "raises an InvalidMergeRequestError" do
@@ -189,6 +191,7 @@ describe Gitlab::Email::Handler::CreateMergeRequestHandler do
describe '#patch_attachments' do
let(:email_raw) { email_fixture('emails/merge_request_multiple_patches.eml') }
let(:mail) { Mail::Message.new(email_raw) }
+
subject(:handler) { described_class.new(mail, mail_key) }
it 'orders attachments ending in `.patch` by name' do
diff --git a/spec/lib/gitlab/email/handler_spec.rb b/spec/lib/gitlab/email/handler_spec.rb
index d2920b08956..5229b778ccf 100644
--- a/spec/lib/gitlab/email/handler_spec.rb
+++ b/spec/lib/gitlab/email/handler_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
describe Gitlab::Email::Handler do
describe '.for' do
- it 'picks issue handler if there is not merge request prefix' do
+ it 'picks issue handler if there is no merge request prefix' do
expect(described_class.for('email', 'project+key')).to be_an_instance_of(Gitlab::Email::Handler::CreateIssueHandler)
end
diff --git a/spec/lib/gitlab/error_tracking/stack_trace_highlight_decorator_spec.rb b/spec/lib/gitlab/error_tracking/stack_trace_highlight_decorator_spec.rb
new file mode 100644
index 00000000000..04ef5ba516e
--- /dev/null
+++ b/spec/lib/gitlab/error_tracking/stack_trace_highlight_decorator_spec.rb
@@ -0,0 +1,58 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::ErrorTracking::StackTraceHighlightDecorator do
+ let(:error_event) { build(:error_tracking_error_event) }
+
+ describe '.decorate' do
+ subject(:decorate) { described_class.decorate(error_event) }
+
+ it 'does not change issue_id' do
+ expect(decorate.issue_id).to eq(error_event.issue_id)
+ end
+
+ it 'does not change date_received' do
+ expect(decorate.date_received).to eq(error_event.date_received)
+ end
+
+ it 'decorates the stack trace context' do
+ expect(decorate.stack_trace_entries).to eq(
+ [
+ {
+ 'function' => 'puts',
+ 'lineNo' => 14,
+ 'filename' => 'hello_world.rb',
+ 'context' => [
+ [10, '<span id="LC1" class="line" lang="ruby"><span class="c1"># Ruby example</span></span>'],
+ [11, '<span id="LC1" class="line" lang="ruby"><span class="k">class</span> <span class="nc">HelloWorld</span></span>'],
+ [12, '<span id="LC1" class="line" lang="ruby"> <span class="k">def</span> <span class="nc">self</span><span class="o">.</span><span class="nf">message</span></span>'],
+ [13, '<span id="LC1" class="line" lang="ruby"> <span class="vi">@name</span> <span class="o">=</span> <span class="s1">\'World\'</span></span>'],
+ [14, %Q[<span id="LC1" class="line" lang="ruby"> <span class="nb">puts</span> <span class="s2">"Hello </span><span class="si">\#{</span><span class="vi">@name</span><span class="si">}</span><span class="s2">"</span></span>]],
+ [15, '<span id="LC1" class="line" lang="ruby"> <span class="k">end</span></span>'],
+ [16, '<span id="LC1" class="line" lang="ruby"><span class="k">end</span></span>']
+ ]
+ },
+ {
+ 'function' => 'print',
+ 'lineNo' => 6,
+ 'filename' => 'HelloWorld.swift',
+ 'context' => [
+ [1, '<span id="LC1" class="line" lang="swift"><span class="c1">// Swift example</span></span>'],
+ [2, '<span id="LC1" class="line" lang="swift"><span class="kd">struct</span> <span class="kt">HelloWorld</span> <span class="p">{</span></span>'],
+ [3, '<span id="LC1" class="line" lang="swift"> <span class="k">let</span> <span class="nv">name</span> <span class="o">=</span> <span class="s">"World"</span></span>'],
+ [4, '<span id="LC1" class="line" lang="swift"></span>'],
+ [5, '<span id="LC1" class="line" lang="swift"> <span class="kd">static</span> <span class="kd">func</span> <span class="nf">message</span><span class="p">()</span> <span class="p">{</span></span>'],
+ [6, '<span id="LC1" class="line" lang="swift"> <span class="nf">print</span><span class="p">(</span><span class="s">"Hello, </span><span class="se">\\(</span><span class="k">self</span><span class="o">.</span><span class="n">name</span><span class="se">)</span><span class="s">"</span><span class="p">)</span></span>'],
+ [7, '<span id="LC1" class="line" lang="swift"> <span class="p">}</span></span>'],
+ [8, '<span id="LC1" class="line" lang="swift"><span class="p">}</span></span>']
+ ]
+ },
+ {
+ 'filename' => 'blank.txt'
+ }
+ ]
+ )
+ end
+ end
+end
diff --git a/spec/lib/gitlab/error_tracking_spec.rb b/spec/lib/gitlab/error_tracking_spec.rb
new file mode 100644
index 00000000000..08718bc92a1
--- /dev/null
+++ b/spec/lib/gitlab/error_tracking_spec.rb
@@ -0,0 +1,172 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::ErrorTracking do
+ let(:exception) { RuntimeError.new('boom') }
+ let(:issue_url) { 'http://gitlab.com/gitlab-org/gitlab-foss/issues/1' }
+
+ let(:expected_payload_includes) do
+ [
+ { 'exception.class' => 'RuntimeError' },
+ { 'exception.message' => 'boom' },
+ { 'tags.correlation_id' => 'cid' },
+ { 'extra.some_other_info' => 'info' },
+ { 'extra.issue_url' => 'http://gitlab.com/gitlab-org/gitlab-foss/issues/1' }
+ ]
+ end
+
+ before do
+ stub_sentry_settings
+
+ allow(described_class).to receive(:sentry_dsn).and_return(Gitlab.config.sentry.dsn)
+ allow(Labkit::Correlation::CorrelationId).to receive(:current_id).and_return('cid')
+
+ described_class.configure
+ end
+
+ describe '.with_context' do
+ it 'adds the expected tags' do
+ described_class.with_context {}
+
+ expect(Raven.tags_context[:locale].to_s).to eq(I18n.locale.to_s)
+ expect(Raven.tags_context[Labkit::Correlation::CorrelationId::LOG_KEY.to_sym].to_s)
+ .to eq('cid')
+ end
+ end
+
+ describe '.track_and_raise_for_dev_exception' do
+ context 'when exceptions for dev should be raised' do
+ before do
+ expect(described_class).to receive(:should_raise_for_dev?).and_return(true)
+ end
+
+ it 'raises the exception' do
+ expect(Raven).to receive(:capture_exception)
+
+ expect { described_class.track_and_raise_for_dev_exception(exception) }
+ .to raise_error(RuntimeError)
+ end
+ end
+
+ context 'when exceptions for dev should not be raised' do
+ before do
+ expect(described_class).to receive(:should_raise_for_dev?).and_return(false)
+ end
+
+ it 'logs the exception with all attributes passed' do
+ expected_extras = {
+ some_other_info: 'info',
+ issue_url: 'http://gitlab.com/gitlab-org/gitlab-foss/issues/1'
+ }
+
+ expected_tags = {
+ correlation_id: 'cid'
+ }
+
+ expect(Raven).to receive(:capture_exception)
+ .with(exception,
+ tags: a_hash_including(expected_tags),
+ extra: a_hash_including(expected_extras))
+
+ described_class.track_and_raise_for_dev_exception(
+ exception,
+ issue_url: issue_url,
+ some_other_info: 'info'
+ )
+ end
+
+ it 'calls Gitlab::ErrorTracking::Logger.error with formatted payload' do
+ expect(Gitlab::ErrorTracking::Logger).to receive(:error)
+ .with(a_hash_including(*expected_payload_includes))
+
+ described_class.track_and_raise_for_dev_exception(
+ exception,
+ issue_url: issue_url,
+ some_other_info: 'info'
+ )
+ end
+ end
+ end
+
+ describe '.track_and_raise_exception' do
+ it 'always raises the exception' do
+ expect(Raven).to receive(:capture_exception)
+
+ expect { described_class.track_and_raise_exception(exception) }
+ .to raise_error(RuntimeError)
+ end
+
+ it 'calls Gitlab::ErrorTracking::Logger.error with formatted payload' do
+ expect(Gitlab::ErrorTracking::Logger).to receive(:error)
+ .with(a_hash_including(*expected_payload_includes))
+
+ expect do
+ described_class.track_and_raise_exception(
+ exception,
+ issue_url: issue_url,
+ some_other_info: 'info'
+ )
+ end.to raise_error(RuntimeError)
+ end
+ end
+
+ describe '.track_exception' do
+ it 'calls Raven.capture_exception' do
+ expected_extras = {
+ some_other_info: 'info',
+ issue_url: issue_url
+ }
+
+ expected_tags = {
+ correlation_id: 'cid'
+ }
+
+ expect(Raven).to receive(:capture_exception)
+ .with(exception,
+ tags: a_hash_including(expected_tags),
+ extra: a_hash_including(expected_extras))
+
+ described_class.track_exception(
+ exception,
+ issue_url: issue_url,
+ some_other_info: 'info'
+ )
+ end
+
+ it 'calls Gitlab::ErrorTracking::Logger.error with formatted payload' do
+ expect(Gitlab::ErrorTracking::Logger).to receive(:error)
+ .with(a_hash_including(*expected_payload_includes))
+
+ described_class.track_exception(
+ exception,
+ issue_url: issue_url,
+ some_other_info: 'info'
+ )
+ end
+
+ context 'the exception implements :sentry_extra_data' do
+ let(:extra_info) { { event: 'explosion', size: :massive } }
+ let(:exception) { double(message: 'bang!', sentry_extra_data: extra_info, backtrace: caller) }
+
+ it 'includes the extra data from the exception in the tracking information' do
+ expect(Raven).to receive(:capture_exception)
+ .with(exception, a_hash_including(extra: a_hash_including(extra_info)))
+
+ described_class.track_exception(exception)
+ end
+ end
+
+ context 'the exception implements :sentry_extra_data, which returns nil' do
+ let(:exception) { double(message: 'bang!', sentry_extra_data: nil, backtrace: caller) }
+
+ it 'just includes the other extra info' do
+ extra_info = { issue_url: issue_url }
+ expect(Raven).to receive(:capture_exception)
+ .with(exception, a_hash_including(extra: a_hash_including(extra_info)))
+
+ described_class.track_exception(exception, extra_info)
+ end
+ end
+ end
+end
diff --git a/spec/lib/gitlab/etag_caching/middleware_spec.rb b/spec/lib/gitlab/etag_caching/middleware_spec.rb
index e7734c6f9f6..24df67b3058 100644
--- a/spec/lib/gitlab/etag_caching/middleware_spec.rb
+++ b/spec/lib/gitlab/etag_caching/middleware_spec.rb
@@ -38,8 +38,9 @@ describe Gitlab::EtagCaching::Middleware do
end
it 'generates ETag' do
- expect_any_instance_of(Gitlab::EtagCaching::Store)
- .to receive(:touch).and_return('123')
+ expect_next_instance_of(Gitlab::EtagCaching::Store) do |instance|
+ expect(instance).to receive(:touch).and_return('123')
+ end
middleware.call(build_request(path, if_none_match))
end
@@ -177,9 +178,9 @@ describe Gitlab::EtagCaching::Middleware do
'SCRIPT_NAME' => '/relative-gitlab'
}
- expect_any_instance_of(Gitlab::EtagCaching::Store)
- .to receive(:get).with("/relative-gitlab#{enabled_path}")
- .and_return(nil)
+ expect_next_instance_of(Gitlab::EtagCaching::Store) do |instance|
+ expect(instance).to receive(:get).with("/relative-gitlab#{enabled_path}").and_return(nil)
+ end
middleware.call(env)
end
@@ -190,8 +191,9 @@ describe Gitlab::EtagCaching::Middleware do
end
def mock_value_in_store(value)
- allow_any_instance_of(Gitlab::EtagCaching::Store)
- .to receive(:get).and_return(value)
+ allow_next_instance_of(Gitlab::EtagCaching::Store) do |instance|
+ allow(instance).to receive(:get).and_return(value)
+ end
end
def build_request(path, if_none_match)
diff --git a/spec/lib/gitlab/etag_caching/router_spec.rb b/spec/lib/gitlab/etag_caching/router_spec.rb
index 8fcd4eb3c21..e25ce4df4aa 100644
--- a/spec/lib/gitlab/etag_caching/router_spec.rb
+++ b/spec/lib/gitlab/etag_caching/router_spec.rb
@@ -12,6 +12,15 @@ describe Gitlab::EtagCaching::Router do
expect(result.name).to eq 'issue_notes'
end
+ it 'matches MR notes endpoint' do
+ result = described_class.match(
+ '/my-group/and-subgroup/here-comes-the-project/noteable/merge_request/1/notes'
+ )
+
+ expect(result).to be_present
+ expect(result.name).to eq 'merge_request_notes'
+ end
+
it 'matches issue title endpoint' do
result = described_class.match(
'/my-group/my-project/issues/123/realtime_changes'
diff --git a/spec/lib/gitlab/experimentation_spec.rb b/spec/lib/gitlab/experimentation_spec.rb
index 9be6ace3be5..b8be72cf8d7 100644
--- a/spec/lib/gitlab/experimentation_spec.rb
+++ b/spec/lib/gitlab/experimentation_spec.rb
@@ -158,7 +158,9 @@ describe Gitlab::Experimentation do
context 'the user is part of the control group' do
before do
- allow_any_instance_of(described_class).to receive(:experiment_enabled?).with(:test_experiment).and_return(false)
+ allow_next_instance_of(described_class) do |instance|
+ allow(instance).to receive(:experiment_enabled?).with(:test_experiment).and_return(false)
+ end
end
it 'pushes the right parameters to gon' do
diff --git a/spec/lib/gitlab/external_authorization/client_spec.rb b/spec/lib/gitlab/external_authorization/client_spec.rb
index a17d933e3bb..e28a155a47f 100644
--- a/spec/lib/gitlab/external_authorization/client_spec.rb
+++ b/spec/lib/gitlab/external_authorization/client_spec.rb
@@ -5,6 +5,7 @@ require 'spec_helper'
describe Gitlab::ExternalAuthorization::Client do
let(:user) { build(:user, email: 'dummy_user@example.com') }
let(:dummy_url) { 'https://dummy.net/' }
+
subject(:client) { described_class.new(user, 'dummy_label') }
before do
diff --git a/spec/lib/gitlab/external_authorization/response_spec.rb b/spec/lib/gitlab/external_authorization/response_spec.rb
index e1f6e9ac1fa..5ce3325ef77 100644
--- a/spec/lib/gitlab/external_authorization/response_spec.rb
+++ b/spec/lib/gitlab/external_authorization/response_spec.rb
@@ -4,6 +4,7 @@ require 'spec_helper'
describe Gitlab::ExternalAuthorization::Response do
let(:excon_response) { double }
+
subject(:response) { described_class.new(excon_response) }
describe '#valid?' do
diff --git a/spec/lib/gitlab/file_detector_spec.rb b/spec/lib/gitlab/file_detector_spec.rb
index f3a9f706e86..23f7deba7f7 100644
--- a/spec/lib/gitlab/file_detector_spec.rb
+++ b/spec/lib/gitlab/file_detector_spec.rb
@@ -82,5 +82,21 @@ describe Gitlab::FileDetector do
it 'returns nil for an unknown file' do
expect(described_class.type_of('foo.txt')).to be_nil
end
+
+ it 'returns the type of an OpenAPI spec if file name is correct' do
+ openapi_types = [
+ 'openapi.yml', 'openapi.yaml', 'openapi.json',
+ 'swagger.yml', 'swagger.yaml', 'swagger.json',
+ 'gitlab_swagger.yml', 'openapi_gitlab.yml',
+ 'OpenAPI.YML', 'openapi.Yaml', 'openapi.JSON',
+ 'openapi.gitlab.yml', 'gitlab.openapi.yml'
+ ]
+
+ openapi_types.each do |type_name|
+ expect(described_class.type_of(type_name)).to eq(:openapi)
+ end
+
+ expect(described_class.type_of('openapiyml')).to be_nil
+ end
end
end
diff --git a/spec/lib/gitlab/file_finder_spec.rb b/spec/lib/gitlab/file_finder_spec.rb
index 7ea9d43c9f7..6cc5141a6fe 100644
--- a/spec/lib/gitlab/file_finder_spec.rb
+++ b/spec/lib/gitlab/file_finder_spec.rb
@@ -5,6 +5,7 @@ require 'spec_helper'
describe Gitlab::FileFinder do
describe '#find' do
let(:project) { create(:project, :public, :repository) }
+
subject { described_class.new(project, project.default_branch) }
it_behaves_like 'file finder' do
diff --git a/spec/lib/gitlab/fogbugz_import/client_spec.rb b/spec/lib/gitlab/fogbugz_import/client_spec.rb
index 676511211c8..ca6f374476c 100644
--- a/spec/lib/gitlab/fogbugz_import/client_spec.rb
+++ b/spec/lib/gitlab/fogbugz_import/client_spec.rb
@@ -20,6 +20,8 @@ describe Gitlab::FogbugzImport::Client do
end
def stub_api(users)
- allow_any_instance_of(::Fogbugz::Interface).to receive(:command).with(:listPeople).and_return(users)
+ allow_next_instance_of(::Fogbugz::Interface) do |instance|
+ allow(instance).to receive(:command).with(:listPeople).and_return(users)
+ end
end
end
diff --git a/spec/lib/gitlab/fogbugz_import/importer_spec.rb b/spec/lib/gitlab/fogbugz_import/importer_spec.rb
new file mode 100644
index 00000000000..9e67047eeda
--- /dev/null
+++ b/spec/lib/gitlab/fogbugz_import/importer_spec.rb
@@ -0,0 +1,73 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::FogbugzImport::Importer do
+ let(:project) { create(:project_empty_repo) }
+ let(:importer) { described_class.new(project) }
+ let(:repo) do
+ instance_double(Gitlab::FogbugzImport::Repository,
+ safe_name: 'vim',
+ path: 'vim',
+ raw_data: '')
+ end
+ let(:import_data) { { 'repo' => repo } }
+ let(:credentials) do
+ {
+ 'fb_session' => {
+ 'uri' => 'https://testing.fogbugz.com',
+ 'token' => 'token'
+ }
+ }
+ end
+
+ let(:closed_bug) do
+ {
+ fOpen: 'false',
+ sTitle: 'Closed bug',
+ sLatestTextSummary: "",
+ dtOpened: Time.now.to_s,
+ dtLastUpdated: Time.now.to_s,
+ events: { event: [] }
+ }.with_indifferent_access
+ end
+
+ let(:opened_bug) do
+ {
+ fOpen: 'true',
+ sTitle: 'Opened bug',
+ sLatestTextSummary: "",
+ dtOpened: Time.now.to_s,
+ dtLastUpdated: Time.now.to_s,
+ events: { event: [] }
+ }.with_indifferent_access
+ end
+
+ let(:fogbugz_bugs) { [opened_bug, closed_bug] }
+
+ before do
+ project.create_import_data(data: import_data, credentials: credentials)
+ allow_any_instance_of(::Fogbugz::Interface).to receive(:command).with(:listCategories).and_return([])
+ allow_any_instance_of(Gitlab::FogbugzImport::Client).to receive(:cases).and_return(fogbugz_bugs)
+ end
+
+ it 'imports bugs' do
+ expect { importer.execute }.to change { Issue.count }.by(2)
+ end
+
+ it 'imports opened bugs' do
+ importer.execute
+
+ issue = Issue.where(project_id: project.id).find_by_title(opened_bug[:sTitle])
+
+ expect(issue.state_id).to eq(Issue.available_states[:opened])
+ end
+
+ it 'imports closed bugs' do
+ importer.execute
+
+ issue = Issue.where(project_id: project.id).find_by_title(closed_bug[:sTitle])
+
+ expect(issue.state_id).to eq(Issue.available_states[:closed])
+ end
+end
diff --git a/spec/lib/gitlab/gfm/reference_rewriter_spec.rb b/spec/lib/gitlab/gfm/reference_rewriter_spec.rb
index 026fd1fedde..d16f34af325 100644
--- a/spec/lib/gitlab/gfm/reference_rewriter_spec.rb
+++ b/spec/lib/gitlab/gfm/reference_rewriter_spec.rb
@@ -54,11 +54,13 @@ describe Gitlab::Gfm::ReferenceRewriter do
context 'code' do
let(:text) { "#1, but not `[#1]`" }
+
it { is_expected.to eq "#{issue_first.to_reference(new_project)}, but not `[#1]`" }
end
context 'code reverse' do
let(:text) { "not `#1`, but #1" }
+
it { is_expected.to eq "not `#1`, but #{issue_first.to_reference(new_project)}" }
end
@@ -74,11 +76,13 @@ describe Gitlab::Gfm::ReferenceRewriter do
context 'label referenced by id' do
let(:text) { '#1 and ~123' }
+
it { is_expected.to eq %Q{#{old_project_ref}#1 and #{old_project_ref}~123} }
end
context 'label referenced by text' do
let(:text) { '#1 and ~"test"' }
+
it { is_expected.to eq %Q{#{old_project_ref}#1 and #{old_project_ref}~123} }
end
end
@@ -93,11 +97,13 @@ describe Gitlab::Gfm::ReferenceRewriter do
context 'label referenced by id' do
let(:text) { '#1 and ~321' }
+
it { is_expected.to eq %Q{#{old_project_ref}#1 and #{old_project_ref}~321} }
end
context 'label referenced by text' do
let(:text) { '#1 and ~"group label"' }
+
it { is_expected.to eq %Q{#{old_project_ref}#1 and #{old_project_ref}~321} }
end
end
diff --git a/spec/lib/gitlab/git/attributes_at_ref_parser_spec.rb b/spec/lib/gitlab/git/attributes_at_ref_parser_spec.rb
index 134bd5657e7..6c4f650fa83 100644
--- a/spec/lib/gitlab/git/attributes_at_ref_parser_spec.rb
+++ b/spec/lib/gitlab/git/attributes_at_ref_parser_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Git::AttributesAtRefParser, :seed_helper do
diff --git a/spec/lib/gitlab/git/attributes_parser_spec.rb b/spec/lib/gitlab/git/attributes_parser_spec.rb
index f431d4e2a53..94b7a086e59 100644
--- a/spec/lib/gitlab/git/attributes_parser_spec.rb
+++ b/spec/lib/gitlab/git/attributes_parser_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Git::AttributesParser, :seed_helper do
diff --git a/spec/lib/gitlab/git/blame_spec.rb b/spec/lib/gitlab/git/blame_spec.rb
index ac085e2c266..9b2d6fa3bcb 100644
--- a/spec/lib/gitlab/git/blame_spec.rb
+++ b/spec/lib/gitlab/git/blame_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require "spec_helper"
describe Gitlab::Git::Blame, :seed_helper do
diff --git a/spec/lib/gitlab/git/blob_spec.rb b/spec/lib/gitlab/git/blob_spec.rb
index 7f680071969..a659af3d22e 100644
--- a/spec/lib/gitlab/git/blob_spec.rb
+++ b/spec/lib/gitlab/git/blob_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require "spec_helper"
describe Gitlab::Git::Blob, :seed_helper do
@@ -132,7 +134,9 @@ describe Gitlab::Git::Blob, :seed_helper do
describe '.find with Rugged enabled', :enable_rugged do
it 'calls out to the Rugged implementation' do
- allow_any_instance_of(Rugged).to receive(:rev_parse).with(SeedRepo::Commit::ID).and_call_original
+ allow_next_instance_of(Rugged) do |instance|
+ allow(instance).to receive(:rev_parse).with(SeedRepo::Commit::ID).and_call_original
+ end
described_class.find(repository, SeedRepo::Commit::ID, 'files/images/6049019_460s.jpg')
end
diff --git a/spec/lib/gitlab/git/branch_spec.rb b/spec/lib/gitlab/git/branch_spec.rb
index 02ef7b92538..cc26b7e7fcd 100644
--- a/spec/lib/gitlab/git/branch_spec.rb
+++ b/spec/lib/gitlab/git/branch_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require "spec_helper"
describe Gitlab::Git::Branch, :seed_helper do
@@ -77,7 +79,7 @@ describe Gitlab::Git::Branch, :seed_helper do
tree = parents.first.tree
{
- message: 'commit message',
+ message: +'commit message',
author: committer,
committer: committer,
tree: tree,
@@ -126,7 +128,7 @@ describe Gitlab::Git::Branch, :seed_helper do
it { expect(repository.branches.size).to eq(SeedRepo::Repo::BRANCHES.size) }
def create_commit
- params[:message].delete!("\r")
+ params[:message].delete!(+"\r")
Rugged::Commit.create(rugged, params.merge(committer: committer.merge(time: Time.now)))
end
end
diff --git a/spec/lib/gitlab/git/bundle_file_spec.rb b/spec/lib/gitlab/git/bundle_file_spec.rb
index ff7c981dadd..e88e163a03f 100644
--- a/spec/lib/gitlab/git/bundle_file_spec.rb
+++ b/spec/lib/gitlab/git/bundle_file_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Git::BundleFile do
diff --git a/spec/lib/gitlab/git/commit_spec.rb b/spec/lib/gitlab/git/commit_spec.rb
index cdab7127748..7ec655eb113 100644
--- a/spec/lib/gitlab/git/commit_spec.rb
+++ b/spec/lib/gitlab/git/commit_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require "spec_helper"
describe Gitlab::Git::Commit, :seed_helper do
@@ -15,13 +17,13 @@ describe Gitlab::Git::Commit, :seed_helper do
@committer = {
email: 'mike@smith.com',
name: "Mike Smith",
- time: Time.now
+ time: Time.new(2000, 1, 1, 0, 0, 0, "+08:00")
}
@author = {
email: 'john@smith.com',
name: "John Smith",
- time: Time.now
+ time: Time.new(2000, 1, 1, 0, 0, 0, "-08:00")
}
@parents = [rugged_repo.head.target]
@@ -46,7 +48,7 @@ describe Gitlab::Git::Commit, :seed_helper do
it { expect(@commit.id).to eq(@raw_commit.oid) }
it { expect(@commit.sha).to eq(@raw_commit.oid) }
it { expect(@commit.safe_message).to eq(@raw_commit.message) }
- it { expect(@commit.created_at).to eq(@raw_commit.author[:time]) }
+ it { expect(@commit.created_at).to eq(@raw_commit.committer[:time]) }
it { expect(@commit.date).to eq(@raw_commit.committer[:time]) }
it { expect(@commit.author_email).to eq(@author[:email]) }
it { expect(@commit.author_name).to eq(@author[:name]) }
@@ -64,8 +66,8 @@ describe Gitlab::Git::Commit, :seed_helper do
end
describe "Commit info from gitaly commit" do
- let(:subject) { "My commit".force_encoding('ASCII-8BIT') }
- let(:body) { subject + "My body".force_encoding('ASCII-8BIT') }
+ let(:subject) { (+"My commit").force_encoding('ASCII-8BIT') }
+ let(:body) { subject + (+"My body").force_encoding('ASCII-8BIT') }
let(:body_size) { body.length }
let(:gitaly_commit) { build(:gitaly_commit, subject: subject, body: body, body_size: body_size) }
let(:id) { gitaly_commit.id }
@@ -77,15 +79,29 @@ describe Gitlab::Git::Commit, :seed_helper do
it { expect(commit.id).to eq(id) }
it { expect(commit.sha).to eq(id) }
it { expect(commit.safe_message).to eq(body) }
- it { expect(commit.created_at).to eq(Time.at(committer.date.seconds)) }
+ it { expect(commit.created_at).to eq(Time.at(committer.date.seconds).utc) }
it { expect(commit.author_email).to eq(author.email) }
it { expect(commit.author_name).to eq(author.name) }
it { expect(commit.committer_name).to eq(committer.name) }
it { expect(commit.committer_email).to eq(committer.email) }
it { expect(commit.parent_ids).to eq(gitaly_commit.parent_ids) }
+ context 'non-UTC dates' do
+ let(:seconds) { Time.now.to_i }
+
+ it 'sets timezones correctly' do
+ gitaly_commit.author.date.seconds = seconds
+ gitaly_commit.author.timezone = '-0800'
+ gitaly_commit.committer.date.seconds = seconds
+ gitaly_commit.committer.timezone = '+0800'
+
+ expect(commit.authored_date).to eq(Time.at(seconds, in: '-08:00'))
+ expect(commit.committed_date).to eq(Time.at(seconds, in: '+08:00'))
+ end
+ end
+
context 'body_size != body.size' do
- let(:body) { "".force_encoding('ASCII-8BIT') }
+ let(:body) { (+"").force_encoding('ASCII-8BIT') }
context 'zero body_size' do
it { expect(commit.safe_message).to eq(subject) }
@@ -160,7 +176,9 @@ describe Gitlab::Git::Commit, :seed_helper do
describe '.find with Rugged enabled', :enable_rugged do
it 'calls out to the Rugged implementation' do
- allow_any_instance_of(Rugged).to receive(:rev_parse).with(SeedRepo::Commit::ID).and_call_original
+ allow_next_instance_of(Rugged) do |instance|
+ allow(instance).to receive(:rev_parse).with(SeedRepo::Commit::ID).and_call_original
+ end
described_class.find(repository, SeedRepo::Commit::ID)
end
@@ -422,7 +440,9 @@ describe Gitlab::Git::Commit, :seed_helper do
it_should_behave_like '.batch_by_oid'
it 'calls out to the Rugged implementation' do
- allow_any_instance_of(Rugged).to receive(:rev_parse).with(SeedRepo::Commit::ID).and_call_original
+ allow_next_instance_of(Rugged) do |instance|
+ allow(instance).to receive(:rev_parse).with(SeedRepo::Commit::ID).and_call_original
+ end
described_class.batch_by_oid(repository, [SeedRepo::Commit::ID])
end
@@ -522,6 +542,7 @@ describe Gitlab::Git::Commit, :seed_helper do
skip 'move this test to gitaly-ruby' do
describe '#init_from_rugged' do
let(:gitlab_commit) { described_class.new(repository, rugged_commit) }
+
subject { gitlab_commit }
describe '#id' do
@@ -533,6 +554,7 @@ describe Gitlab::Git::Commit, :seed_helper do
describe '#init_from_hash' do
let(:commit) { described_class.new(repository, sample_commit_hash) }
+
subject { commit }
describe '#id' do
@@ -588,6 +610,7 @@ describe Gitlab::Git::Commit, :seed_helper do
describe '#to_hash' do
let(:hash) { commit.to_hash }
+
subject { hash }
it { is_expected.to be_kind_of Hash }
@@ -609,6 +632,7 @@ describe Gitlab::Git::Commit, :seed_helper do
describe '#ref_names' do
let(:commit) { described_class.find(repository, 'master') }
+
subject { commit.ref_names(repository) }
it 'has 2 element' do
diff --git a/spec/lib/gitlab/git/compare_spec.rb b/spec/lib/gitlab/git/compare_spec.rb
index 65dfb93d0db..6136df57acb 100644
--- a/spec/lib/gitlab/git/compare_spec.rb
+++ b/spec/lib/gitlab/git/compare_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require "spec_helper"
describe Gitlab::Git::Compare, :seed_helper do
diff --git a/spec/lib/gitlab/git/conflict/file_spec.rb b/spec/lib/gitlab/git/conflict/file_spec.rb
index a6cabd4966a..0ee9ff93e87 100644
--- a/spec/lib/gitlab/git/conflict/file_spec.rb
+++ b/spec/lib/gitlab/git/conflict/file_spec.rb
@@ -1,9 +1,11 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Git::Conflict::File do
let(:conflict) { { theirs: { path: 'foo', mode: 33188 }, ours: { path: 'foo', mode: 33188 } } }
- let(:invalid_content) { described_class.new(nil, nil, conflict, "a\xC4\xFC".force_encoding(Encoding::ASCII_8BIT)) }
- let(:valid_content) { described_class.new(nil, nil, conflict, "Espa\xC3\xB1a".force_encoding(Encoding::ASCII_8BIT)) }
+ let(:invalid_content) { described_class.new(nil, nil, conflict, (+"a\xC4\xFC").force_encoding(Encoding::ASCII_8BIT)) }
+ let(:valid_content) { described_class.new(nil, nil, conflict, (+"Espa\xC3\xB1a").force_encoding(Encoding::ASCII_8BIT)) }
describe '#lines' do
context 'when the content contains non-UTF-8 characters' do
diff --git a/spec/lib/gitlab/git/conflict/parser_spec.rb b/spec/lib/gitlab/git/conflict/parser_spec.rb
index 29a1702a1c6..600c870acd4 100644
--- a/spec/lib/gitlab/git/conflict/parser_spec.rb
+++ b/spec/lib/gitlab/git/conflict/parser_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Git::Conflict::Parser do
@@ -208,7 +210,7 @@ CONFLICT
# these strings.
context 'when the file contains UTF-8 characters' do
it 'does not raise' do
- expect { parse_text("Espa\xC3\xB1a".force_encoding(Encoding::ASCII_8BIT)) }
+ expect { parse_text((+"Espa\xC3\xB1a").force_encoding(Encoding::ASCII_8BIT)) }
.not_to raise_error
end
end
diff --git a/spec/lib/gitlab/git/diff_collection_spec.rb b/spec/lib/gitlab/git/diff_collection_spec.rb
index ce45d6e24ba..0d19d35bc52 100644
--- a/spec/lib/gitlab/git/diff_collection_spec.rb
+++ b/spec/lib/gitlab/git/diff_collection_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Git::DiffCollection, :seed_helper do
diff --git a/spec/lib/gitlab/git/diff_spec.rb b/spec/lib/gitlab/git/diff_spec.rb
index 9ab669ad488..ac606da5cc1 100644
--- a/spec/lib/gitlab/git/diff_spec.rb
+++ b/spec/lib/gitlab/git/diff_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require "spec_helper"
describe Gitlab::Git::Diff, :seed_helper do
@@ -147,6 +149,7 @@ EOT
describe '.between' do
let(:diffs) { described_class.between(repository, 'feature', 'master') }
+
subject { diffs }
it { is_expected.to be_kind_of Gitlab::Git::DiffCollection }
diff --git a/spec/lib/gitlab/git/gitmodules_parser_spec.rb b/spec/lib/gitlab/git/gitmodules_parser_spec.rb
index de81dcd227d..58d1d2c71da 100644
--- a/spec/lib/gitlab/git/gitmodules_parser_spec.rb
+++ b/spec/lib/gitlab/git/gitmodules_parser_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Git::GitmodulesParser do
diff --git a/spec/lib/gitlab/git/hook_env_spec.rb b/spec/lib/gitlab/git/hook_env_spec.rb
index 5e49ea6da7a..22b016cee3e 100644
--- a/spec/lib/gitlab/git/hook_env_spec.rb
+++ b/spec/lib/gitlab/git/hook_env_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Git::HookEnv do
@@ -55,6 +57,7 @@ describe Gitlab::Git::HookEnv do
using RSpec::Parameterized::TableSyntax
let(:key) { 'GIT_OBJECT_DIRECTORY_RELATIVE' }
+
subject { described_class.to_env_hash(gl_repository) }
where(:input, :output) do
diff --git a/spec/lib/gitlab/git/lfs_changes_spec.rb b/spec/lib/gitlab/git/lfs_changes_spec.rb
index d035df7e0c2..a99e8c4f60c 100644
--- a/spec/lib/gitlab/git/lfs_changes_spec.rb
+++ b/spec/lib/gitlab/git/lfs_changes_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Git::LfsChanges do
diff --git a/spec/lib/gitlab/git/lfs_pointer_file_spec.rb b/spec/lib/gitlab/git/lfs_pointer_file_spec.rb
index d7f76737f3f..8bb26ed4854 100644
--- a/spec/lib/gitlab/git/lfs_pointer_file_spec.rb
+++ b/spec/lib/gitlab/git/lfs_pointer_file_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Git::LfsPointerFile do
diff --git a/spec/lib/gitlab/git/merge_base_spec.rb b/spec/lib/gitlab/git/merge_base_spec.rb
index dbb4e3d0b3e..fa95a1664ea 100644
--- a/spec/lib/gitlab/git/merge_base_spec.rb
+++ b/spec/lib/gitlab/git/merge_base_spec.rb
@@ -5,6 +5,7 @@ require 'spec_helper'
describe Gitlab::Git::MergeBase do
set(:project) { create(:project, :repository) }
let(:repository) { project.repository }
+
subject(:merge_base) { described_class.new(repository, refs) }
shared_context 'existing refs with a merge base', :existing_refs do
diff --git a/spec/lib/gitlab/git/pre_receive_error_spec.rb b/spec/lib/gitlab/git/pre_receive_error_spec.rb
index cb030e38032..cb539261671 100644
--- a/spec/lib/gitlab/git/pre_receive_error_spec.rb
+++ b/spec/lib/gitlab/git/pre_receive_error_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Git::PreReceiveError do
diff --git a/spec/lib/gitlab/git/push_spec.rb b/spec/lib/gitlab/git/push_spec.rb
index 566c8209504..32c4c1c82d4 100644
--- a/spec/lib/gitlab/git/push_spec.rb
+++ b/spec/lib/gitlab/git/push_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Git::Push do
diff --git a/spec/lib/gitlab/git/raw_diff_change_spec.rb b/spec/lib/gitlab/git/raw_diff_change_spec.rb
index a0bb37fd84a..79b2fc21011 100644
--- a/spec/lib/gitlab/git/raw_diff_change_spec.rb
+++ b/spec/lib/gitlab/git/raw_diff_change_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Git::RawDiffChange do
diff --git a/spec/lib/gitlab/git/remote_mirror_spec.rb b/spec/lib/gitlab/git/remote_mirror_spec.rb
index dc63eef7814..9744562b51b 100644
--- a/spec/lib/gitlab/git/remote_mirror_spec.rb
+++ b/spec/lib/gitlab/git/remote_mirror_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Git::RemoteMirror do
diff --git a/spec/lib/gitlab/git/remote_repository_spec.rb b/spec/lib/gitlab/git/remote_repository_spec.rb
index e166628d4ca..b53eee293f0 100644
--- a/spec/lib/gitlab/git/remote_repository_spec.rb
+++ b/spec/lib/gitlab/git/remote_repository_spec.rb
@@ -1,7 +1,10 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Git::RemoteRepository, :seed_helper do
let(:repository) { Gitlab::Git::Repository.new('default', TEST_REPO_PATH, '', 'group/project') }
+
subject { described_class.new(repository) }
describe '#empty?' do
diff --git a/spec/lib/gitlab/git/repository_cleaner_spec.rb b/spec/lib/gitlab/git/repository_cleaner_spec.rb
index 7bba0107e58..b387d1033d3 100644
--- a/spec/lib/gitlab/git/repository_cleaner_spec.rb
+++ b/spec/lib/gitlab/git/repository_cleaner_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Git::RepositoryCleaner do
diff --git a/spec/lib/gitlab/git/repository_spec.rb b/spec/lib/gitlab/git/repository_spec.rb
index 44c41da7560..6854d514dcc 100644
--- a/spec/lib/gitlab/git/repository_spec.rb
+++ b/spec/lib/gitlab/git/repository_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require "spec_helper"
describe Gitlab::Git::Repository, :seed_helper do
@@ -210,6 +212,7 @@ describe Gitlab::Git::Repository, :seed_helper do
describe '#ref_names' do
let(:ref_names) { repository.ref_names }
+
subject { ref_names }
it { is_expected.to be_kind_of Array }
diff --git a/spec/lib/gitlab/git/tag_spec.rb b/spec/lib/gitlab/git/tag_spec.rb
index 4c0291f64f0..87db3f588ad 100644
--- a/spec/lib/gitlab/git/tag_spec.rb
+++ b/spec/lib/gitlab/git/tag_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require "spec_helper"
describe Gitlab::Git::Tag, :seed_helper do
diff --git a/spec/lib/gitlab/git/tree_spec.rb b/spec/lib/gitlab/git/tree_spec.rb
index 7e169cfe270..d82acad866c 100644
--- a/spec/lib/gitlab/git/tree_spec.rb
+++ b/spec/lib/gitlab/git/tree_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require "spec_helper"
describe Gitlab::Git::Tree, :seed_helper do
@@ -143,7 +145,9 @@ describe Gitlab::Git::Tree, :seed_helper do
describe '.where with Rugged enabled', :enable_rugged do
it 'calls out to the Rugged implementation' do
- allow_any_instance_of(Rugged).to receive(:lookup).with(SeedRepo::Commit::ID)
+ allow_next_instance_of(Rugged) do |instance|
+ allow(instance).to receive(:lookup).with(SeedRepo::Commit::ID)
+ end
described_class.where(repository, SeedRepo::Commit::ID, 'files', false)
end
diff --git a/spec/lib/gitlab/git/user_spec.rb b/spec/lib/gitlab/git/user_spec.rb
index d9d338206f8..6761413320a 100644
--- a/spec/lib/gitlab/git/user_spec.rb
+++ b/spec/lib/gitlab/git/user_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Git::User do
@@ -24,6 +26,7 @@ describe Gitlab::Git::User do
describe '.from_gitlab' do
context 'when no commit_email has been set' do
let(:user) { build(:user, email: 'alice@example.com', commit_email: nil) }
+
subject { described_class.from_gitlab(user) }
it { expect(subject).to eq(described_class.new(user.username, user.name, user.email, 'user-')) }
@@ -31,6 +34,7 @@ describe Gitlab::Git::User do
context 'when commit_email has been set' do
let(:user) { build(:user, email: 'alice@example.com', commit_email: 'bob@example.com') }
+
subject { described_class.from_gitlab(user) }
it { expect(subject).to eq(described_class.new(user.username, user.name, user.commit_email, 'user-')) }
diff --git a/spec/lib/gitlab/git/util_spec.rb b/spec/lib/gitlab/git/util_spec.rb
index 88c871855df..81918f036f9 100644
--- a/spec/lib/gitlab/git/util_spec.rb
+++ b/spec/lib/gitlab/git/util_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Git::Util do
diff --git a/spec/lib/gitlab/git/wiki_spec.rb b/spec/lib/gitlab/git/wiki_spec.rb
index 1e577392949..8bae2e8125e 100644
--- a/spec/lib/gitlab/git/wiki_spec.rb
+++ b/spec/lib/gitlab/git/wiki_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Git::Wiki do
diff --git a/spec/lib/gitlab/git/wraps_gitaly_errors_spec.rb b/spec/lib/gitlab/git/wraps_gitaly_errors_spec.rb
index bcf4814edb6..a4489cca443 100644
--- a/spec/lib/gitlab/git/wraps_gitaly_errors_spec.rb
+++ b/spec/lib/gitlab/git/wraps_gitaly_errors_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Git::WrapsGitalyErrors do
diff --git a/spec/lib/gitlab/git_access_spec.rb b/spec/lib/gitlab/git_access_spec.rb
index f74cc5623c9..36bde9de12d 100644
--- a/spec/lib/gitlab/git_access_spec.rb
+++ b/spec/lib/gitlab/git_access_spec.rb
@@ -730,7 +730,9 @@ describe Gitlab::GitAccess do
it 'checks LFS integrity only for first change' do
allow(project).to receive(:lfs_enabled?).and_return(true)
- expect_any_instance_of(Gitlab::Checks::LfsIntegrity).to receive(:objects_missing?).exactly(1).times
+ expect_next_instance_of(Gitlab::Checks::LfsIntegrity) do |instance|
+ expect(instance).to receive(:objects_missing?).exactly(1).times
+ end
push_access_check
end
diff --git a/spec/lib/gitlab/gitaly_client/cleanup_service_spec.rb b/spec/lib/gitlab/gitaly_client/cleanup_service_spec.rb
index 3430fbb71f1..07f53797b2a 100644
--- a/spec/lib/gitlab/gitaly_client/cleanup_service_spec.rb
+++ b/spec/lib/gitlab/gitaly_client/cleanup_service_spec.rb
@@ -14,10 +14,11 @@ describe Gitlab::GitalyClient::CleanupService do
end
it 'sends an apply_bfg_object_map_stream message' do
- expect_any_instance_of(Gitaly::CleanupService::Stub)
- .to receive(:apply_bfg_object_map_stream)
- .with(kind_of(Enumerator), kind_of(Hash))
- .and_return([])
+ expect_next_instance_of(Gitaly::CleanupService::Stub) do |instance|
+ expect(instance).to receive(:apply_bfg_object_map_stream)
+ .with(kind_of(Enumerator), kind_of(Hash))
+ .and_return([])
+ end
client.apply_bfg_object_map_stream(StringIO.new)
end
diff --git a/spec/lib/gitlab/gitaly_client/commit_service_spec.rb b/spec/lib/gitlab/gitaly_client/commit_service_spec.rb
index 1abdabe17bb..820578dfc6e 100644
--- a/spec/lib/gitlab/gitaly_client/commit_service_spec.rb
+++ b/spec/lib/gitlab/gitaly_client/commit_service_spec.rb
@@ -188,6 +188,7 @@ describe Gitlab::GitalyClient::CommitService do
describe '#find_commit' do
let(:revision) { Gitlab::Git::EMPTY_TREE_ID }
+
it 'sends an RPC request' do
request = Gitaly::FindCommitRequest.new(
repository: repository_message, revision: revision
diff --git a/spec/lib/gitlab/gitaly_client/ref_service_spec.rb b/spec/lib/gitlab/gitaly_client/ref_service_spec.rb
index 2b4fe2ea5c0..d4a7f6e6df9 100644
--- a/spec/lib/gitlab/gitaly_client/ref_service_spec.rb
+++ b/spec/lib/gitlab/gitaly_client/ref_service_spec.rb
@@ -22,6 +22,7 @@ describe Gitlab::GitalyClient::RefService do
describe '#remote_branches' do
let(:remote_name) { 'my_remote' }
+
subject { client.remote_branches(remote_name) }
it 'sends a find_all_remote_branches message' do
diff --git a/spec/lib/gitlab/gitaly_client_spec.rb b/spec/lib/gitlab/gitaly_client_spec.rb
index b6c0c0ad523..4b69b4734f1 100644
--- a/spec/lib/gitlab/gitaly_client_spec.rb
+++ b/spec/lib/gitlab/gitaly_client_spec.rb
@@ -55,7 +55,9 @@ describe Gitlab::GitalyClient do
it 'returns an empty string when the storage is not found in the response' do
response = double("response")
allow(response).to receive(:storage_statuses).and_return([])
- allow_any_instance_of(Gitlab::GitalyClient::ServerService).to receive(:info).and_return(response)
+ allow_next_instance_of(Gitlab::GitalyClient::ServerService) do |instance|
+ allow(instance).to receive(:info).and_return(response)
+ end
expect(described_class.filesystem_id('default')).to eq(nil)
end
@@ -84,12 +86,11 @@ describe Gitlab::GitalyClient do
describe '.stub_certs' do
it 'skips certificates if OpenSSLError is raised and report it' do
- expect(Rails.logger).to receive(:error).at_least(:once)
- expect(Gitlab::Sentry)
- .to receive(:track_exception)
+ expect(Gitlab::ErrorTracking)
+ .to receive(:track_and_raise_for_dev_exception)
.with(
a_kind_of(OpenSSL::X509::CertificateError),
- extra: { cert_file: a_kind_of(String) }).at_least(:once)
+ cert_file: a_kind_of(String)).at_least(:once)
expect(OpenSSL::X509::Certificate)
.to receive(:new)
diff --git a/spec/lib/gitlab/github_import/importer/diff_note_importer_spec.rb b/spec/lib/gitlab/github_import/importer/diff_note_importer_spec.rb
index 484458289af..66909976b43 100644
--- a/spec/lib/gitlab/github_import/importer/diff_note_importer_spec.rb
+++ b/spec/lib/gitlab/github_import/importer/diff_note_importer_spec.rb
@@ -144,9 +144,9 @@ describe Gitlab::GithubImport::Importer::DiffNoteImporter do
describe '#find_merge_request_id' do
it 'returns a merge request ID' do
- expect_any_instance_of(Gitlab::GithubImport::IssuableFinder)
- .to receive(:database_id)
- .and_return(10)
+ expect_next_instance_of(Gitlab::GithubImport::IssuableFinder) do |instance|
+ expect(instance).to receive(:database_id).and_return(10)
+ end
expect(importer.find_merge_request_id).to eq(10)
end
diff --git a/spec/lib/gitlab/github_import/importer/issue_importer_spec.rb b/spec/lib/gitlab/github_import/importer/issue_importer_spec.rb
index a003ad7e091..0f2ba99f816 100644
--- a/spec/lib/gitlab/github_import/importer/issue_importer_spec.rb
+++ b/spec/lib/gitlab/github_import/importer/issue_importer_spec.rb
@@ -99,7 +99,6 @@ describe Gitlab::GithubImport::Importer::IssueImporter, :clean_gitlab_redis_cach
project_id: project.id,
description: 'This is my issue',
milestone_id: milestone.id,
- state: :opened,
state_id: 1,
created_at: created_at,
updated_at: updated_at
@@ -129,7 +128,6 @@ describe Gitlab::GithubImport::Importer::IssueImporter, :clean_gitlab_redis_cach
project_id: project.id,
description: "*Created by: alice*\n\nThis is my issue",
milestone_id: milestone.id,
- state: :opened,
state_id: 1,
created_at: created_at,
updated_at: updated_at
diff --git a/spec/lib/gitlab/github_import/importer/label_links_importer_spec.rb b/spec/lib/gitlab/github_import/importer/label_links_importer_spec.rb
index 19d40b2f380..9c02b0e280f 100644
--- a/spec/lib/gitlab/github_import/importer/label_links_importer_spec.rb
+++ b/spec/lib/gitlab/github_import/importer/label_links_importer_spec.rb
@@ -74,9 +74,9 @@ describe Gitlab::GithubImport::Importer::LabelLinksImporter do
describe '#find_target_id' do
it 'returns the ID of the issuable to create the label link for' do
- expect_any_instance_of(Gitlab::GithubImport::IssuableFinder)
- .to receive(:database_id)
- .and_return(10)
+ expect_next_instance_of(Gitlab::GithubImport::IssuableFinder) do |instance|
+ expect(instance).to receive(:database_id).and_return(10)
+ end
expect(importer.find_target_id).to eq(10)
end
diff --git a/spec/lib/gitlab/github_import/importer/labels_importer_spec.rb b/spec/lib/gitlab/github_import/importer/labels_importer_spec.rb
index 2dcf1433154..16326da9ca4 100644
--- a/spec/lib/gitlab/github_import/importer/labels_importer_spec.rb
+++ b/spec/lib/gitlab/github_import/importer/labels_importer_spec.rb
@@ -50,8 +50,9 @@ describe Gitlab::GithubImport::Importer::LabelsImporter, :clean_gitlab_redis_cac
describe '#build_labels_cache' do
it 'builds the labels cache' do
- expect_any_instance_of(Gitlab::GithubImport::LabelFinder)
- .to receive(:build_cache)
+ expect_next_instance_of(Gitlab::GithubImport::LabelFinder) do |instance|
+ expect(instance).to receive(:build_cache)
+ end
importer.build_labels_cache
end
diff --git a/spec/lib/gitlab/github_import/importer/milestones_importer_spec.rb b/spec/lib/gitlab/github_import/importer/milestones_importer_spec.rb
index eaf63e0e11b..294599c02f4 100644
--- a/spec/lib/gitlab/github_import/importer/milestones_importer_spec.rb
+++ b/spec/lib/gitlab/github_import/importer/milestones_importer_spec.rb
@@ -80,8 +80,9 @@ describe Gitlab::GithubImport::Importer::MilestonesImporter, :clean_gitlab_redis
describe '#build_milestones_cache' do
it 'builds the milestones cache' do
- expect_any_instance_of(Gitlab::GithubImport::MilestoneFinder)
- .to receive(:build_cache)
+ expect_next_instance_of(Gitlab::GithubImport::MilestoneFinder) do |instance|
+ expect(instance).to receive(:build_cache)
+ end
importer.build_milestones_cache
end
diff --git a/spec/lib/gitlab/github_import/importer/note_importer_spec.rb b/spec/lib/gitlab/github_import/importer/note_importer_spec.rb
index d2b8ba186c8..816041b771b 100644
--- a/spec/lib/gitlab/github_import/importer/note_importer_spec.rb
+++ b/spec/lib/gitlab/github_import/importer/note_importer_spec.rb
@@ -143,9 +143,9 @@ describe Gitlab::GithubImport::Importer::NoteImporter do
describe '#find_noteable_id' do
it 'returns the ID of the noteable' do
- expect_any_instance_of(Gitlab::GithubImport::IssuableFinder)
- .to receive(:database_id)
- .and_return(10)
+ expect_next_instance_of(Gitlab::GithubImport::IssuableFinder) do |instance|
+ expect(instance).to receive(:database_id).and_return(10)
+ end
expect(importer.find_noteable_id).to eq(10)
end
diff --git a/spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb b/spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb
index 50c27e7f4b7..877b4d4bbaf 100644
--- a/spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb
+++ b/spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb
@@ -94,7 +94,6 @@ describe Gitlab::GithubImport::Importer::PullRequestImporter, :clean_gitlab_redi
target_project_id: project.id,
source_branch: 'github/fork/alice/feature',
target_branch: 'master',
- state: :merged,
state_id: 3,
milestone_id: milestone.id,
author_id: user.id,
@@ -140,7 +139,6 @@ describe Gitlab::GithubImport::Importer::PullRequestImporter, :clean_gitlab_redi
target_project_id: project.id,
source_branch: 'github/fork/alice/feature',
target_branch: 'master',
- state: :merged,
state_id: 3,
milestone_id: milestone.id,
author_id: project.creator_id,
@@ -187,7 +185,6 @@ describe Gitlab::GithubImport::Importer::PullRequestImporter, :clean_gitlab_redi
target_project_id: project.id,
source_branch: 'master-42',
target_branch: 'master',
- state: :merged,
state_id: 3,
milestone_id: milestone.id,
author_id: user.id,
@@ -304,7 +301,7 @@ describe Gitlab::GithubImport::Importer::PullRequestImporter, :clean_gitlab_redi
it 'ignores Git command errors when creating a branch' do
expect(project.repository).to receive(:add_branch).and_raise(Gitlab::Git::CommandError)
- expect(Gitlab::Sentry).to receive(:track_acceptable_exception).and_call_original
+ expect(Gitlab::ErrorTracking).to receive(:track_exception).and_call_original
mr = insert_git_data
diff --git a/spec/lib/gitlab/github_import/sequential_importer_spec.rb b/spec/lib/gitlab/github_import/sequential_importer_spec.rb
index 8b1e8fbf3b7..256155dea03 100644
--- a/spec/lib/gitlab/github_import/sequential_importer_spec.rb
+++ b/spec/lib/gitlab/github_import/sequential_importer_spec.rb
@@ -9,8 +9,9 @@ describe Gitlab::GithubImport::SequentialImporter do
project = double(:project, id: 1, repository: repository)
importer = described_class.new(project, token: 'foo')
- expect_any_instance_of(Gitlab::GithubImport::Importer::RepositoryImporter)
- .to receive(:execute)
+ expect_next_instance_of(Gitlab::GithubImport::Importer::RepositoryImporter) do |instance|
+ expect(instance).to receive(:execute)
+ end
described_class::SEQUENTIAL_IMPORTERS.each do |klass|
instance = double(:instance)
diff --git a/spec/lib/gitlab/gitlab_import/client_spec.rb b/spec/lib/gitlab/gitlab_import/client_spec.rb
index 0f1745fcc02..246ef6c02f2 100644
--- a/spec/lib/gitlab/gitlab_import/client_spec.rb
+++ b/spec/lib/gitlab/gitlab_import/client_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::GitlabImport::Client do
@@ -19,18 +21,24 @@ describe Gitlab::GitlabImport::Client do
it 'uses membership and simple flags' do
stub_request('/api/v4/projects?membership=true&page=1&per_page=100&simple=true')
- expect_any_instance_of(OAuth2::Response).to receive(:parsed).and_return([])
+ expect_next_instance_of(OAuth2::Response) do |instance|
+ expect(instance).to receive(:parsed).and_return([])
+ end
expect(client.projects.to_a).to eq []
end
shared_examples 'pagination params' do
before do
- allow_any_instance_of(OAuth2::Response).to receive(:parsed).and_return([])
+ allow_next_instance_of(OAuth2::Response) do |instance|
+ allow(instance).to receive(:parsed).and_return([])
+ end
end
it 'allows page_limit param' do
- allow_any_instance_of(OAuth2::Response).to receive(:parsed).and_return(element_list)
+ allow_next_instance_of(OAuth2::Response) do |instance|
+ allow(instance).to receive(:parsed).and_return(element_list)
+ end
expect(client).to receive(:lazy_page_iterator).with(hash_including(page_limit: 2)).and_call_original
diff --git a/spec/lib/gitlab/gitlab_import/importer_spec.rb b/spec/lib/gitlab/gitlab_import/importer_spec.rb
index 200edceca8c..2db1ddcfd0a 100644
--- a/spec/lib/gitlab/gitlab_import/importer_spec.rb
+++ b/spec/lib/gitlab/gitlab_import/importer_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::GitlabImport::Importer do
diff --git a/spec/lib/gitlab/gitlab_import/project_creator_spec.rb b/spec/lib/gitlab/gitlab_import/project_creator_spec.rb
index b814f5fc76c..c7ef978df37 100644
--- a/spec/lib/gitlab/gitlab_import/project_creator_spec.rb
+++ b/spec/lib/gitlab/gitlab_import/project_creator_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::GitlabImport::ProjectCreator do
diff --git a/spec/lib/gitlab/google_code_import/client_spec.rb b/spec/lib/gitlab/google_code_import/client_spec.rb
index 37985c062b4..2e929a62ebc 100644
--- a/spec/lib/gitlab/google_code_import/client_spec.rb
+++ b/spec/lib/gitlab/google_code_import/client_spec.rb
@@ -1,7 +1,10 @@
+# frozen_string_literal: true
+
require "spec_helper"
describe Gitlab::GoogleCodeImport::Client do
let(:raw_data) { JSON.parse(fixture_file("GoogleCodeProjectHosting.json")) }
+
subject { described_class.new(raw_data) }
describe "#valid?" do
diff --git a/spec/lib/gitlab/google_code_import/importer_spec.rb b/spec/lib/gitlab/google_code_import/importer_spec.rb
index 031f57dbc65..7055df89c09 100644
--- a/spec/lib/gitlab/google_code_import/importer_spec.rb
+++ b/spec/lib/gitlab/google_code_import/importer_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require "spec_helper"
describe Gitlab::GoogleCodeImport::Importer do
@@ -37,7 +39,7 @@ describe Gitlab::GoogleCodeImport::Importer do
Performance Usability Maintainability Component-Panel Component-Taskbar Component-Battery
Component-Systray Component-Clock Component-Launcher Component-Tint2conf Component-Docs Component-New
).each do |label|
- label.sub!("-", ": ")
+ label = label.sub("-", ": ")
expect(project.labels.find_by(name: label)).not_to be_nil
end
end
diff --git a/spec/lib/gitlab/google_code_import/project_creator_spec.rb b/spec/lib/gitlab/google_code_import/project_creator_spec.rb
index b959e006292..2353c24f77b 100644
--- a/spec/lib/gitlab/google_code_import/project_creator_spec.rb
+++ b/spec/lib/gitlab/google_code_import/project_creator_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::GoogleCodeImport::ProjectCreator do
diff --git a/spec/lib/gitlab/gpg/commit_spec.rb b/spec/lib/gitlab/gpg/commit_spec.rb
index 8401b683fd5..ea0a6e1b967 100644
--- a/spec/lib/gitlab/gpg/commit_spec.rb
+++ b/spec/lib/gitlab/gpg/commit_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Gpg::Commit do
diff --git a/spec/lib/gitlab/gpg/invalid_gpg_signature_updater_spec.rb b/spec/lib/gitlab/gpg/invalid_gpg_signature_updater_spec.rb
index da307754243..c1516a48b80 100644
--- a/spec/lib/gitlab/gpg/invalid_gpg_signature_updater_spec.rb
+++ b/spec/lib/gitlab/gpg/invalid_gpg_signature_updater_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
RSpec.describe Gitlab::Gpg::InvalidGpgSignatureUpdater do
diff --git a/spec/lib/gitlab/gpg_spec.rb b/spec/lib/gitlab/gpg_spec.rb
index 52d6a86f7d0..8600ef223c6 100644
--- a/spec/lib/gitlab/gpg_spec.rb
+++ b/spec/lib/gitlab/gpg_spec.rb
@@ -177,6 +177,25 @@ describe Gitlab::Gpg do
end.not_to raise_error
end
+ it 'tracks an exception when cleaning up the tmp dir fails' do
+ expected_exception = described_class::CleanupError.new('cleanup failed')
+ expected_tmp_dir = nil
+
+ expect(described_class).to receive(:cleanup_tmp_dir).and_raise(expected_exception)
+ allow(Gitlab::ErrorTracking).to receive(:track_and_raise_for_dev_exception)
+
+ described_class.using_tmp_keychain do
+ expected_tmp_dir = described_class.current_home_dir
+ FileUtils.touch(File.join(expected_tmp_dir, 'dummy.file'))
+ end
+
+ expect(Gitlab::ErrorTracking).to have_received(:track_and_raise_for_dev_exception).with(
+ expected_exception,
+ issue_url: 'https://gitlab.com/gitlab-org/gitlab/issues/20918',
+ tmp_dir: expected_tmp_dir, contents: ['dummy.file']
+ )
+ end
+
shared_examples 'multiple deletion attempts of the tmp-dir' do |seconds|
let(:tmp_dir) do
tmp_dir = Dir.mktmpdir
@@ -211,15 +230,6 @@ describe Gitlab::Gpg do
expect(File.exist?(tmp_dir)).to be false
end
-
- it 'does not retry when the feature flag is disabled' do
- stub_feature_flags(gpg_cleanup_retries: false)
-
- expect(FileUtils).to receive(:remove_entry).with(tmp_dir, true).and_call_original
- expect(Retriable).not_to receive(:retriable)
-
- described_class.using_tmp_keychain {}
- end
end
it_behaves_like 'multiple deletion attempts of the tmp-dir', described_class::FG_CLEANUP_RUNTIME_S
diff --git a/spec/lib/gitlab/grafana_embed_usage_data_spec.rb b/spec/lib/gitlab/grafana_embed_usage_data_spec.rb
new file mode 100644
index 00000000000..162db46719b
--- /dev/null
+++ b/spec/lib/gitlab/grafana_embed_usage_data_spec.rb
@@ -0,0 +1,70 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::GrafanaEmbedUsageData do
+ describe '#issue_count' do
+ subject { described_class.issue_count }
+
+ let(:project) { create(:project) }
+ let(:description_with_embed) { "Some comment\n\nhttps://grafana.example.com/d/xvAk4q0Wk/go-processes?orgId=1&from=1573238522762&to=1573240322762&var-job=prometheus&var-interval=10m&panelId=1&fullscreen" }
+ let(:description_with_unintegrated_embed) { "Some comment\n\nhttps://grafana.exp.com/d/xvAk4q0Wk/go-processes?orgId=1&from=1573238522762&to=1573240322762&var-job=prometheus&var-interval=10m&panelId=1&fullscreen" }
+ let(:description_with_non_grafana_inline_metric) { "Some comment\n\n#{Gitlab::Routing.url_helpers.metrics_namespace_project_environment_url(*['foo', 'bar', 12])}" }
+
+ shared_examples "zero count" do
+ it "does not count the issue" do
+ expect(subject).to eq(0)
+ end
+ end
+
+ context 'with project grafana integration enabled' do
+ before do
+ create(:grafana_integration, project: project, enabled: true)
+ end
+
+ context 'with valid and invalid embeds' do
+ before do
+ # Valid
+ create(:issue, project: project, description: description_with_embed)
+ create(:issue, project: project, description: description_with_embed)
+ # In-Valid
+ create(:issue, project: project, description: description_with_unintegrated_embed)
+ create(:issue, project: project, description: description_with_non_grafana_inline_metric)
+ create(:issue, project: project, description: nil)
+ create(:issue, project: project, description: '')
+ create(:issue, project: project)
+ end
+
+ it 'counts only the issues with embeds' do
+ expect(subject).to eq(2)
+ end
+ end
+ end
+
+ context 'with project grafana integration disabled' do
+ before do
+ create(:grafana_integration, project: project, enabled: false)
+ end
+
+ context 'with one issue having a grafana link in the description and one without' do
+ before do
+ create(:issue, project: project, description: description_with_embed)
+ create(:issue, project: project)
+ end
+
+ it_behaves_like('zero count')
+ end
+ end
+
+ context 'with an un-integrated project' do
+ context 'with one issue having a grafana link in the description and one without' do
+ before do
+ create(:issue, project: project, description: description_with_embed)
+ create(:issue, project: project)
+ end
+
+ it_behaves_like('zero count')
+ end
+ end
+ end
+end
diff --git a/spec/lib/gitlab/grape_logging/loggers/exception_logger_spec.rb b/spec/lib/gitlab/grape_logging/loggers/exception_logger_spec.rb
index e21af023bb8..0cfda80b854 100644
--- a/spec/lib/gitlab/grape_logging/loggers/exception_logger_spec.rb
+++ b/spec/lib/gitlab/grape_logging/loggers/exception_logger_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::GrapeLogging::Loggers::ExceptionLogger do
diff --git a/spec/lib/gitlab/grape_logging/loggers/queue_duration_logger_spec.rb b/spec/lib/gitlab/grape_logging/loggers/queue_duration_logger_spec.rb
index f47b9dd3498..c0762e9892b 100644
--- a/spec/lib/gitlab/grape_logging/loggers/queue_duration_logger_spec.rb
+++ b/spec/lib/gitlab/grape_logging/loggers/queue_duration_logger_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::GrapeLogging::Loggers::QueueDurationLogger do
diff --git a/spec/lib/gitlab/graphql/authorize/authorize_field_service_spec.rb b/spec/lib/gitlab/graphql/authorize/authorize_field_service_spec.rb
index aada9285b31..98659dbed57 100644
--- a/spec/lib/gitlab/graphql/authorize/authorize_field_service_spec.rb
+++ b/spec/lib/gitlab/graphql/authorize/authorize_field_service_spec.rb
@@ -25,6 +25,7 @@ describe Gitlab::Graphql::Authorize::AuthorizeFieldService do
end
let(:current_user) { double(:current_user) }
+
subject(:service) { described_class.new(field) }
describe '#authorized_resolve' do
@@ -34,6 +35,7 @@ describe Gitlab::Graphql::Authorize::AuthorizeFieldService do
let(:schema) { GraphQL::Schema.define(query: query_type, mutation: nil)}
let(:query_context) { OpenStruct.new(schema: schema) }
let(:context) { GraphQL::Query::Context.new(query: OpenStruct.new(schema: schema, context: query_context), values: { current_user: current_user }, object: nil) }
+
subject(:resolved) { service.authorized_resolve.call(presented_type, {}, context) }
context 'scalar types' do
diff --git a/spec/lib/gitlab/graphql/authorize/authorize_resource_spec.rb b/spec/lib/gitlab/graphql/authorize/authorize_resource_spec.rb
index 23762666ba8..67cb064b966 100644
--- a/spec/lib/gitlab/graphql/authorize/authorize_resource_spec.rb
+++ b/spec/lib/gitlab/graphql/authorize/authorize_resource_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Graphql::Authorize::AuthorizeResource do
@@ -25,6 +27,7 @@ describe Gitlab::Graphql::Authorize::AuthorizeResource do
let(:user) { build(:user) }
let(:project) { build(:project) }
+
subject(:loading_resource) { fake_class.new(user, project) }
context 'when the user is allowed to perform the action' do
diff --git a/spec/lib/gitlab/graphql/connections/filterable_array_connection_spec.rb b/spec/lib/gitlab/graphql/connections/filterable_array_connection_spec.rb
index 1fda84f777e..20e87daa0d6 100644
--- a/spec/lib/gitlab/graphql/connections/filterable_array_connection_spec.rb
+++ b/spec/lib/gitlab/graphql/connections/filterable_array_connection_spec.rb
@@ -6,6 +6,7 @@ describe Gitlab::Graphql::Connections::FilterableArrayConnection do
let(:callback) { proc { |nodes| nodes } }
let(:all_nodes) { Gitlab::Graphql::FilterableArray.new(callback, 1, 2, 3, 4, 5) }
let(:arguments) { {} }
+
subject(:connection) do
described_class.new(all_nodes, arguments, max_page_size: 3)
end
diff --git a/spec/lib/gitlab/graphql/connections/keyset/connection_spec.rb b/spec/lib/gitlab/graphql/connections/keyset/connection_spec.rb
index 9dda2a41ec6..bd0fcbbdeb2 100644
--- a/spec/lib/gitlab/graphql/connections/keyset/connection_spec.rb
+++ b/spec/lib/gitlab/graphql/connections/keyset/connection_spec.rb
@@ -5,6 +5,7 @@ require 'spec_helper'
describe Gitlab::Graphql::Connections::Keyset::Connection do
let(:nodes) { Project.all.order(id: :asc) }
let(:arguments) { {} }
+
subject(:connection) do
described_class.new(nodes, arguments, max_page_size: 3)
end
@@ -218,23 +219,11 @@ describe Gitlab::Graphql::Connections::Keyset::Connection do
end
end
- # TODO Enable this as part of below issue
- # https://gitlab.com/gitlab-org/gitlab/issues/32933
- # context 'when an invalid cursor is provided' do
- # let(:arguments) { { before: 'invalidcursor' } }
- #
- # it 'raises an error' do
- # expect { expect(subject.sliced_nodes) }.to raise_error(Gitlab::Graphql::Errors::ArgumentError)
- # end
- # end
-
- # TODO Remove this as part of below issue
- # https://gitlab.com/gitlab-org/gitlab/issues/32933
- context 'when an old style cursor is provided' do
- let(:arguments) { { before: Base64Bp.urlsafe_encode64(projects[1].id.to_s, padding: false) } }
+ context 'when an invalid cursor is provided' do
+ let(:arguments) { { before: Base64Bp.urlsafe_encode64('invalidcursor', padding: false) } }
- it 'only returns the project before the selected one' do
- expect(subject.sliced_nodes).to contain_exactly(projects.first)
+ it 'raises an error' do
+ expect { subject.sliced_nodes }.to raise_error(Gitlab::Graphql::Errors::ArgumentError)
end
end
end
diff --git a/spec/lib/gitlab/graphql/connections/keyset/legacy_keyset_connection_spec.rb b/spec/lib/gitlab/graphql/connections/keyset/legacy_keyset_connection_spec.rb
deleted file mode 100644
index aaf28fed684..00000000000
--- a/spec/lib/gitlab/graphql/connections/keyset/legacy_keyset_connection_spec.rb
+++ /dev/null
@@ -1,127 +0,0 @@
-# frozen_string_literal: true
-
-# TODO https://gitlab.com/gitlab-org/gitlab/issues/35104
-require 'spec_helper'
-
-describe Gitlab::Graphql::Connections::Keyset::LegacyKeysetConnection do
- describe 'old keyset_connection' do
- let(:described_class) { Gitlab::Graphql::Connections::Keyset::Connection }
- let(:nodes) { Project.all.order(id: :asc) }
- let(:arguments) { {} }
- subject(:connection) do
- described_class.new(nodes, arguments, max_page_size: 3)
- end
-
- before do
- stub_feature_flags(graphql_keyset_pagination: false)
- end
-
- def encoded_property(value)
- Base64Bp.urlsafe_encode64(value.to_s, padding: false)
- end
-
- describe '#cursor_from_nodes' do
- let(:project) { create(:project) }
-
- it 'returns an encoded ID' do
- expect(connection.cursor_from_node(project))
- .to eq(encoded_property(project.id))
- end
-
- context 'when an order was specified' do
- let(:nodes) { Project.order(:updated_at) }
-
- it 'returns the encoded value of the order' do
- expect(connection.cursor_from_node(project))
- .to eq(encoded_property(project.updated_at))
- end
- end
- end
-
- describe '#sliced_nodes' do
- let(:projects) { create_list(:project, 4) }
-
- context 'when before is passed' do
- let(:arguments) { { before: encoded_property(projects[1].id) } }
-
- it 'only returns the project before the selected one' do
- expect(subject.sliced_nodes).to contain_exactly(projects.first)
- end
-
- context 'when the sort order is descending' do
- let(:nodes) { Project.all.order(id: :desc) }
-
- it 'returns the correct nodes' do
- expect(subject.sliced_nodes).to contain_exactly(*projects[2..-1])
- end
- end
- end
-
- context 'when after is passed' do
- let(:arguments) { { after: encoded_property(projects[1].id) } }
-
- it 'only returns the project before the selected one' do
- expect(subject.sliced_nodes).to contain_exactly(*projects[2..-1])
- end
-
- context 'when the sort order is descending' do
- let(:nodes) { Project.all.order(id: :desc) }
-
- it 'returns the correct nodes' do
- expect(subject.sliced_nodes).to contain_exactly(projects.first)
- end
- end
- end
-
- context 'when both before and after are passed' do
- let(:arguments) do
- {
- after: encoded_property(projects[1].id),
- before: encoded_property(projects[3].id)
- }
- end
-
- it 'returns the expected set' do
- expect(subject.sliced_nodes).to contain_exactly(projects[2])
- end
- end
- end
-
- describe '#paged_nodes' do
- let!(:projects) { create_list(:project, 5) }
-
- it 'returns the collection limited to max page size' do
- expect(subject.paged_nodes.size).to eq(3)
- end
-
- it 'is a loaded memoized array' do
- expect(subject.paged_nodes).to be_an(Array)
- expect(subject.paged_nodes.object_id).to eq(subject.paged_nodes.object_id)
- end
-
- context 'when `first` is passed' do
- let(:arguments) { { first: 2 } }
-
- it 'returns only the first elements' do
- expect(subject.paged_nodes).to contain_exactly(projects.first, projects.second)
- end
- end
-
- context 'when `last` is passed' do
- let(:arguments) { { last: 2 } }
-
- it 'returns only the last elements' do
- expect(subject.paged_nodes).to contain_exactly(projects[3], projects[4])
- end
- end
-
- context 'when both are passed' do
- let(:arguments) { { first: 2, last: 2 } }
-
- it 'raises an error' do
- expect { subject.paged_nodes }.to raise_error(Gitlab::Graphql::Errors::ArgumentError)
- end
- end
- end
- end
-end
diff --git a/spec/lib/gitlab/graphql/loaders/batch_lfs_oid_loader_spec.rb b/spec/lib/gitlab/graphql/loaders/batch_lfs_oid_loader_spec.rb
index 22d8aa4274a..1e8de144b8d 100644
--- a/spec/lib/gitlab/graphql/loaders/batch_lfs_oid_loader_spec.rb
+++ b/spec/lib/gitlab/graphql/loaders/batch_lfs_oid_loader_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Graphql::Loaders::BatchLfsOidLoader do
diff --git a/spec/lib/gitlab/graphql/loaders/batch_model_loader_spec.rb b/spec/lib/gitlab/graphql/loaders/batch_model_loader_spec.rb
index a4bbd868558..79f9ecb39cf 100644
--- a/spec/lib/gitlab/graphql/loaders/batch_model_loader_spec.rb
+++ b/spec/lib/gitlab/graphql/loaders/batch_model_loader_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Graphql::Loaders::BatchModelLoader do
diff --git a/spec/lib/gitlab/graphs/commits_spec.rb b/spec/lib/gitlab/graphs/commits_spec.rb
index 09654e0439e..f92c7fb11a1 100644
--- a/spec/lib/gitlab/graphs/commits_spec.rb
+++ b/spec/lib/gitlab/graphs/commits_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Graphs::Commits do
diff --git a/spec/lib/gitlab/health_checks/db_check_spec.rb b/spec/lib/gitlab/health_checks/db_check_spec.rb
index 33c6c24449c..3c1c1e3818d 100644
--- a/spec/lib/gitlab/health_checks/db_check_spec.rb
+++ b/spec/lib/gitlab/health_checks/db_check_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
require_relative './simple_check_shared'
diff --git a/spec/lib/gitlab/health_checks/gitaly_check_spec.rb b/spec/lib/gitlab/health_checks/gitaly_check_spec.rb
index 36e2fd04aeb..d4ce16ce6fc 100644
--- a/spec/lib/gitlab/health_checks/gitaly_check_spec.rb
+++ b/spec/lib/gitlab/health_checks/gitaly_check_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::HealthChecks::GitalyCheck do
diff --git a/spec/lib/gitlab/health_checks/master_check_spec.rb b/spec/lib/gitlab/health_checks/master_check_spec.rb
index 91441a7ddc3..cb20c1188af 100644
--- a/spec/lib/gitlab/health_checks/master_check_spec.rb
+++ b/spec/lib/gitlab/health_checks/master_check_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
require_relative './simple_check_shared'
diff --git a/spec/lib/gitlab/health_checks/probes/collection_spec.rb b/spec/lib/gitlab/health_checks/probes/collection_spec.rb
index 33efc640257..d8c411fa27b 100644
--- a/spec/lib/gitlab/health_checks/probes/collection_spec.rb
+++ b/spec/lib/gitlab/health_checks/probes/collection_spec.rb
@@ -5,7 +5,7 @@ require 'spec_helper'
describe Gitlab::HealthChecks::Probes::Collection do
let(:readiness) { described_class.new(*checks) }
- describe '#call' do
+ describe '#execute' do
subject { readiness.execute }
context 'with all checks' do
diff --git a/spec/lib/gitlab/health_checks/puma_check_spec.rb b/spec/lib/gitlab/health_checks/puma_check_spec.rb
index 71b6386b174..dd052a4dd2c 100644
--- a/spec/lib/gitlab/health_checks/puma_check_spec.rb
+++ b/spec/lib/gitlab/health_checks/puma_check_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::HealthChecks::PumaCheck do
diff --git a/spec/lib/gitlab/health_checks/redis/cache_check_spec.rb b/spec/lib/gitlab/health_checks/redis/cache_check_spec.rb
index 3693f52b51b..aaf474d7eeb 100644
--- a/spec/lib/gitlab/health_checks/redis/cache_check_spec.rb
+++ b/spec/lib/gitlab/health_checks/redis/cache_check_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
require_relative '../simple_check_shared'
diff --git a/spec/lib/gitlab/health_checks/redis/queues_check_spec.rb b/spec/lib/gitlab/health_checks/redis/queues_check_spec.rb
index c69443d205d..f4b5e18da2a 100644
--- a/spec/lib/gitlab/health_checks/redis/queues_check_spec.rb
+++ b/spec/lib/gitlab/health_checks/redis/queues_check_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
require_relative '../simple_check_shared'
diff --git a/spec/lib/gitlab/health_checks/redis/redis_check_spec.rb b/spec/lib/gitlab/health_checks/redis/redis_check_spec.rb
index 03afc1cd761..ae7ee0d0859 100644
--- a/spec/lib/gitlab/health_checks/redis/redis_check_spec.rb
+++ b/spec/lib/gitlab/health_checks/redis/redis_check_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
require_relative '../simple_check_shared'
diff --git a/spec/lib/gitlab/health_checks/redis/shared_state_check_spec.rb b/spec/lib/gitlab/health_checks/redis/shared_state_check_spec.rb
index b72e152bbe2..3e92b072254 100644
--- a/spec/lib/gitlab/health_checks/redis/shared_state_check_spec.rb
+++ b/spec/lib/gitlab/health_checks/redis/shared_state_check_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
require_relative '../simple_check_shared'
diff --git a/spec/lib/gitlab/health_checks/simple_check_shared.rb b/spec/lib/gitlab/health_checks/simple_check_shared.rb
index 03a7cf249cf..3d0f9b3cf7a 100644
--- a/spec/lib/gitlab/health_checks/simple_check_shared.rb
+++ b/spec/lib/gitlab/health_checks/simple_check_shared.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
shared_context 'simple_check' do |metrics_prefix, check_name, success_result|
describe '#metrics' do
subject { described_class.metrics }
diff --git a/spec/lib/gitlab/health_checks/unicorn_check_spec.rb b/spec/lib/gitlab/health_checks/unicorn_check_spec.rb
index c02d0c37738..931b61cb168 100644
--- a/spec/lib/gitlab/health_checks/unicorn_check_spec.rb
+++ b/spec/lib/gitlab/health_checks/unicorn_check_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::HealthChecks::UnicornCheck do
diff --git a/spec/lib/gitlab/hook_data/base_builder_spec.rb b/spec/lib/gitlab/hook_data/base_builder_spec.rb
index e3c5ee3b905..4c3fd854c09 100644
--- a/spec/lib/gitlab/hook_data/base_builder_spec.rb
+++ b/spec/lib/gitlab/hook_data/base_builder_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::HookData::BaseBuilder do
@@ -13,6 +15,7 @@ describe Gitlab::HookData::BaseBuilder do
context 'with an upload prefix specified' do
let(:project_with_path) { double(full_path: 'baz/bar') }
let(:object_with_project) { double(project: project_with_path) }
+
subject { subclass.new(object_with_project) }
where do
diff --git a/spec/lib/gitlab/hook_data/issuable_builder_spec.rb b/spec/lib/gitlab/hook_data/issuable_builder_spec.rb
index 97a89b319ea..5135c84df19 100644
--- a/spec/lib/gitlab/hook_data/issuable_builder_spec.rb
+++ b/spec/lib/gitlab/hook_data/issuable_builder_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::HookData::IssuableBuilder do
diff --git a/spec/lib/gitlab/hook_data/issue_builder_spec.rb b/spec/lib/gitlab/hook_data/issue_builder_spec.rb
index ebd7feb0055..8008f3d72b2 100644
--- a/spec/lib/gitlab/hook_data/issue_builder_spec.rb
+++ b/spec/lib/gitlab/hook_data/issue_builder_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::HookData::IssueBuilder do
diff --git a/spec/lib/gitlab/hook_data/merge_request_builder_spec.rb b/spec/lib/gitlab/hook_data/merge_request_builder_spec.rb
index 39f80f92fa6..506354e370c 100644
--- a/spec/lib/gitlab/hook_data/merge_request_builder_spec.rb
+++ b/spec/lib/gitlab/hook_data/merge_request_builder_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::HookData::MergeRequestBuilder do
diff --git a/spec/lib/gitlab/http_io_spec.rb b/spec/lib/gitlab/http_io_spec.rb
index f30528916dc..4bb5fb7c198 100644
--- a/spec/lib/gitlab/http_io_spec.rb
+++ b/spec/lib/gitlab/http_io_spec.rb
@@ -109,7 +109,9 @@ describe Gitlab::HttpIO do
end
it 'calls get_chunk only once' do
- expect_any_instance_of(Net::HTTP).to receive(:request).once.and_call_original
+ expect_next_instance_of(Net::HTTP) do |instance|
+ expect(instance).to receive(:request).once.and_call_original
+ end
http_io.each_line { |line| }
end
diff --git a/spec/lib/gitlab/i18n/metadata_entry_spec.rb b/spec/lib/gitlab/i18n/metadata_entry_spec.rb
index a399517cc04..2d8bb538681 100644
--- a/spec/lib/gitlab/i18n/metadata_entry_spec.rb
+++ b/spec/lib/gitlab/i18n/metadata_entry_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::I18n::MetadataEntry do
diff --git a/spec/lib/gitlab/i18n/po_linter_spec.rb b/spec/lib/gitlab/i18n/po_linter_spec.rb
index 3dbc23d2aaf..2ab363ee45c 100644
--- a/spec/lib/gitlab/i18n/po_linter_spec.rb
+++ b/spec/lib/gitlab/i18n/po_linter_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
require 'simple_po_parser'
diff --git a/spec/lib/gitlab/i18n/translation_entry_spec.rb b/spec/lib/gitlab/i18n/translation_entry_spec.rb
index b301e6ea443..880da38052e 100644
--- a/spec/lib/gitlab/i18n/translation_entry_spec.rb
+++ b/spec/lib/gitlab/i18n/translation_entry_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::I18n::TranslationEntry do
@@ -134,6 +136,7 @@ describe Gitlab::I18n::TranslationEntry do
describe '#contains_unescaped_chars' do
let(:data) { { msgid: '' } }
let(:entry) { described_class.new(data, 2) }
+
it 'is true when the msgid is an array' do
string = '「100%確定ã€'
diff --git a/spec/lib/gitlab/import/merge_request_helpers_spec.rb b/spec/lib/gitlab/import/merge_request_helpers_spec.rb
index cc0f2baf905..42515888d4f 100644
--- a/spec/lib/gitlab/import/merge_request_helpers_spec.rb
+++ b/spec/lib/gitlab/import/merge_request_helpers_spec.rb
@@ -18,7 +18,7 @@ describe Gitlab::Import::MergeRequestHelpers, type: :helper do
target_project_id: project.id,
source_branch: 'master-42',
target_branch: 'master',
- state: :merged,
+ state_id: 3,
author_id: user.id,
assignee_id: user.id
}
diff --git a/spec/lib/gitlab/import_export/after_export_strategies/base_after_export_strategy_spec.rb b/spec/lib/gitlab/import_export/after_export_strategies/base_after_export_strategy_spec.rb
index a3d2880182d..86ceb97b250 100644
--- a/spec/lib/gitlab/import_export/after_export_strategies/base_after_export_strategy_spec.rb
+++ b/spec/lib/gitlab/import_export/after_export_strategies/base_after_export_strategy_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::ImportExport::AfterExportStrategies::BaseAfterExportStrategy do
diff --git a/spec/lib/gitlab/import_export/after_export_strategies/web_upload_strategy_spec.rb b/spec/lib/gitlab/import_export/after_export_strategies/web_upload_strategy_spec.rb
index 21a227335cd..95c47d15f8f 100644
--- a/spec/lib/gitlab/import_export/after_export_strategies/web_upload_strategy_spec.rb
+++ b/spec/lib/gitlab/import_export/after_export_strategies/web_upload_strategy_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::ImportExport::AfterExportStrategies::WebUploadStrategy do
diff --git a/spec/lib/gitlab/import_export/after_export_strategy_builder_spec.rb b/spec/lib/gitlab/import_export/after_export_strategy_builder_spec.rb
index bf727285a9f..9fe9e2eb73d 100644
--- a/spec/lib/gitlab/import_export/after_export_strategy_builder_spec.rb
+++ b/spec/lib/gitlab/import_export/after_export_strategy_builder_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::ImportExport::AfterExportStrategyBuilder do
diff --git a/spec/lib/gitlab/import_export/all_models.yml b/spec/lib/gitlab/import_export/all_models.yml
index 8f627fcc24d..2ea563c50b6 100644
--- a/spec/lib/gitlab/import_export/all_models.yml
+++ b/spec/lib/gitlab/import_export/all_models.yml
@@ -8,6 +8,7 @@ issues:
- milestone
- notes
- resource_label_events
+- sentry_issue
- label_links
- labels
- last_edited_by
@@ -15,6 +16,7 @@ issues:
- user_agent_detail
- moved_to
- duplicated_to
+- promoted_to_epic
- events
- merge_requests_closing_issues
- metrics
@@ -32,6 +34,7 @@ issues:
- zoom_meetings
- vulnerability_links
- related_vulnerabilities
+- user_mentions
events:
- author
- project
@@ -80,6 +83,7 @@ snippets:
- notes
- award_emoji
- user_agent_detail
+- user_mentions
releases:
- author
- project
@@ -138,6 +142,9 @@ merge_requests:
- blocking_merge_requests
- blocked_merge_requests
- description_versions
+- deployment_merge_requests
+- deployments
+- user_mentions
external_pull_requests:
- project
merge_request_diff:
@@ -287,6 +294,7 @@ project:
- microsoft_teams_service
- mattermost_service
- hangouts_chat_service
+- unify_circuit_service
- buildkite_service
- bamboo_service
- teamcity_service
@@ -364,6 +372,7 @@ project:
- root_of_fork_network
- fork_network_member
- fork_network
+- fork_network_projects
- custom_attributes
- lfs_file_locks
- project_badges
@@ -432,6 +441,9 @@ project:
- downstream_projects
- upstream_project_subscriptions
- downstream_project_subscriptions
+- service_desk_setting
+- import_failures
+- container_expiration_policy
award_emoji:
- awardable
- user
@@ -531,14 +543,18 @@ design: &design
- actions
- versions
- notes
+- user_mentions
designs: *design
actions:
- design
- version
versions: &version
+- author
- issue
- designs
- actions
zoom_meetings:
- issue
+sentry_issue:
+- issue
design_versions: *version
diff --git a/spec/lib/gitlab/import_export/attribute_cleaner_spec.rb b/spec/lib/gitlab/import_export/attribute_cleaner_spec.rb
index 1b28e26a7e8..44192c4639d 100644
--- a/spec/lib/gitlab/import_export/attribute_cleaner_spec.rb
+++ b/spec/lib/gitlab/import_export/attribute_cleaner_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::ImportExport::AttributeCleaner do
diff --git a/spec/lib/gitlab/import_export/attribute_configuration_spec.rb b/spec/lib/gitlab/import_export/attribute_configuration_spec.rb
index cc8ca1d87e3..58da25bbedb 100644
--- a/spec/lib/gitlab/import_export/attribute_configuration_spec.rb
+++ b/spec/lib/gitlab/import_export/attribute_configuration_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
# Part of the test security suite for the Import/Export feature
@@ -10,21 +12,11 @@ require 'spec_helper'
describe 'Import/Export attribute configuration' do
include ConfigurationHelper
- let(:config_hash) { Gitlab::ImportExport::Config.new.to_h.deep_stringify_keys }
- let(:relation_names) do
- names = names_from_tree(config_hash.dig('tree', 'project'))
-
- # Remove duplicated or add missing models
- # - project is not part of the tree, so it has to be added manually.
- # - milestone, labels have both singular and plural versions in the tree, so remove the duplicates.
- names.flatten.uniq - %w(milestones labels) + ['project']
- end
-
let(:safe_attributes_file) { 'spec/lib/gitlab/import_export/safe_model_attributes.yml' }
let(:safe_model_attributes) { YAML.load_file(safe_attributes_file) }
it 'has no new columns' do
- relation_names.each do |relation_name|
+ relation_names_for(:project).each do |relation_name|
relation_class = relation_class_for_name(relation_name)
relation_attributes = relation_class.new.attributes.keys - relation_class.encrypted_attributes.keys.map(&:to_s)
diff --git a/spec/lib/gitlab/import_export/avatar_restorer_spec.rb b/spec/lib/gitlab/import_export/avatar_restorer_spec.rb
index e44ff6bbcbd..662e1a5eaab 100644
--- a/spec/lib/gitlab/import_export/avatar_restorer_spec.rb
+++ b/spec/lib/gitlab/import_export/avatar_restorer_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::ImportExport::AvatarRestorer do
@@ -12,8 +14,9 @@ describe Gitlab::ImportExport::AvatarRestorer do
context 'with avatar' do
before do
- allow_any_instance_of(described_class).to receive(:avatar_export_file)
- .and_return(uploaded_image_temp_path)
+ allow_next_instance_of(described_class) do |instance|
+ allow(instance).to receive(:avatar_export_file).and_return(uploaded_image_temp_path)
+ end
end
it 'restores a project avatar' do
@@ -31,8 +34,9 @@ describe Gitlab::ImportExport::AvatarRestorer do
Dir.mktmpdir do |tmpdir|
FileUtils.mkdir_p("#{tmpdir}/a/b")
- allow_any_instance_of(described_class).to receive(:avatar_export_path)
- .and_return("#{tmpdir}/a")
+ allow_next_instance_of(described_class) do |instance|
+ allow(instance).to receive(:avatar_export_path).and_return("#{tmpdir}/a")
+ end
expect(described_class.new(project: project, shared: shared).restore).to be true
end
diff --git a/spec/lib/gitlab/import_export/avatar_saver_spec.rb b/spec/lib/gitlab/import_export/avatar_saver_spec.rb
index 2bd1b9924c6..d2349e47c0a 100644
--- a/spec/lib/gitlab/import_export/avatar_saver_spec.rb
+++ b/spec/lib/gitlab/import_export/avatar_saver_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::ImportExport::AvatarSaver do
@@ -8,7 +10,9 @@ describe Gitlab::ImportExport::AvatarSaver do
before do
FileUtils.mkdir_p("#{shared.export_path}/avatar/")
- allow_any_instance_of(Gitlab::ImportExport::Shared).to receive(:export_path).and_return(export_path)
+ allow_next_instance_of(Gitlab::ImportExport::Shared) do |instance|
+ allow(instance).to receive(:export_path).and_return(export_path)
+ end
end
after do
diff --git a/spec/lib/gitlab/import_export/fast_hash_serializer_spec.rb b/spec/lib/gitlab/import_export/fast_hash_serializer_spec.rb
index b190a1007a0..6f90798f815 100644
--- a/spec/lib/gitlab/import_export/fast_hash_serializer_spec.rb
+++ b/spec/lib/gitlab/import_export/fast_hash_serializer_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::ImportExport::FastHashSerializer do
diff --git a/spec/lib/gitlab/import_export/file_importer_spec.rb b/spec/lib/gitlab/import_export/file_importer_spec.rb
index fbc9bcd2df5..7c54c5f2da1 100644
--- a/spec/lib/gitlab/import_export/file_importer_spec.rb
+++ b/spec/lib/gitlab/import_export/file_importer_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::ImportExport::FileImporter do
@@ -16,9 +18,15 @@ describe Gitlab::ImportExport::FileImporter do
stub_const('Gitlab::ImportExport::FileImporter::MAX_RETRIES', 0)
stub_uploads_object_storage(FileUploader)
- allow_any_instance_of(Gitlab::ImportExport).to receive(:storage_path).and_return(storage_path)
- allow_any_instance_of(Gitlab::ImportExport::CommandLineUtil).to receive(:untar_zxf).and_return(true)
- allow_any_instance_of(Gitlab::ImportExport::Shared).to receive(:relative_archive_path).and_return('test')
+ allow_next_instance_of(Gitlab::ImportExport) do |instance|
+ allow(instance).to receive(:storage_path).and_return(storage_path)
+ end
+ allow_next_instance_of(Gitlab::ImportExport::CommandLineUtil) do |instance|
+ allow(instance).to receive(:untar_zxf).and_return(true)
+ end
+ allow_next_instance_of(Gitlab::ImportExport::Shared) do |instance|
+ allow(instance).to receive(:relative_archive_path).and_return('test')
+ end
allow(SecureRandom).to receive(:hex).and_return('abcd')
setup_files
end
@@ -29,7 +37,7 @@ describe Gitlab::ImportExport::FileImporter do
context 'normal run' do
before do
- described_class.import(project: build(:project), archive_file: '', shared: shared)
+ described_class.import(importable: build(:project), archive_file: '', shared: shared)
end
it 'removes symlinks in root folder' do
@@ -67,8 +75,10 @@ describe Gitlab::ImportExport::FileImporter do
context 'error' do
before do
- allow_any_instance_of(described_class).to receive(:wait_for_archived_file).and_raise(StandardError)
- described_class.import(project: build(:project), archive_file: '', shared: shared)
+ allow_next_instance_of(described_class) do |instance|
+ allow(instance).to receive(:wait_for_archived_file).and_raise(StandardError)
+ end
+ described_class.import(importable: build(:project), archive_file: '', shared: shared)
end
it 'removes symlinks in root folder' do
diff --git a/spec/lib/gitlab/import_export/fork_spec.rb b/spec/lib/gitlab/import_export/fork_spec.rb
index 5752fd8fa0d..09e4f62c686 100644
--- a/spec/lib/gitlab/import_export/fork_spec.rb
+++ b/spec/lib/gitlab/import_export/fork_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe 'forked project import' do
@@ -30,7 +32,9 @@ describe 'forked project import' do
end
before do
- allow_any_instance_of(Gitlab::ImportExport).to receive(:storage_path).and_return(export_path)
+ allow_next_instance_of(Gitlab::ImportExport) do |instance|
+ allow(instance).to receive(:storage_path).and_return(export_path)
+ end
saver.save
repo_saver.save
diff --git a/spec/lib/gitlab/import_export/group_project_object_builder_spec.rb b/spec/lib/gitlab/import_export/group_project_object_builder_spec.rb
index 1a5cb7806a3..0d0a2df4423 100644
--- a/spec/lib/gitlab/import_export/group_project_object_builder_spec.rb
+++ b/spec/lib/gitlab/import_export/group_project_object_builder_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::ImportExport::GroupProjectObjectBuilder do
diff --git a/spec/lib/gitlab/import_export/hash_util_spec.rb b/spec/lib/gitlab/import_export/hash_util_spec.rb
index 366582dece3..ddd874ddecf 100644
--- a/spec/lib/gitlab/import_export/hash_util_spec.rb
+++ b/spec/lib/gitlab/import_export/hash_util_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::ImportExport::HashUtil do
diff --git a/spec/lib/gitlab/import_export/import_export_spec.rb b/spec/lib/gitlab/import_export/import_export_spec.rb
index a6b0dc758cd..2ece0dd4b56 100644
--- a/spec/lib/gitlab/import_export/import_export_spec.rb
+++ b/spec/lib/gitlab/import_export/import_export_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::ImportExport do
diff --git a/spec/lib/gitlab/import_export/importer_spec.rb b/spec/lib/gitlab/import_export/importer_spec.rb
index 898e4d07760..942af4084e5 100644
--- a/spec/lib/gitlab/import_export/importer_spec.rb
+++ b/spec/lib/gitlab/import_export/importer_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::ImportExport::Importer do
diff --git a/spec/lib/gitlab/import_export/lfs_restorer_spec.rb b/spec/lib/gitlab/import_export/lfs_restorer_spec.rb
index 2b0bdb909ae..a932dc3ee4e 100644
--- a/spec/lib/gitlab/import_export/lfs_restorer_spec.rb
+++ b/spec/lib/gitlab/import_export/lfs_restorer_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::ImportExport::LfsRestorer do
@@ -7,6 +9,7 @@ describe Gitlab::ImportExport::LfsRestorer do
let(:project) { create(:project) }
let(:shared) { project.import_export_shared }
let(:saver) { Gitlab::ImportExport::LfsSaver.new(project: project, shared: shared) }
+
subject(:restorer) { described_class.new(project: project, shared: shared) }
before do
diff --git a/spec/lib/gitlab/import_export/lfs_saver_spec.rb b/spec/lib/gitlab/import_export/lfs_saver_spec.rb
index c3c88486e16..a8ff7867410 100644
--- a/spec/lib/gitlab/import_export/lfs_saver_spec.rb
+++ b/spec/lib/gitlab/import_export/lfs_saver_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::ImportExport::LfsSaver do
@@ -8,7 +10,9 @@ describe Gitlab::ImportExport::LfsSaver do
subject(:saver) { described_class.new(project: project, shared: shared) }
before do
- allow_any_instance_of(Gitlab::ImportExport).to receive(:storage_path).and_return(export_path)
+ allow_next_instance_of(Gitlab::ImportExport) do |instance|
+ allow(instance).to receive(:storage_path).and_return(export_path)
+ end
FileUtils.mkdir_p(shared.export_path)
end
diff --git a/spec/lib/gitlab/import_export/members_mapper_spec.rb b/spec/lib/gitlab/import_export/members_mapper_spec.rb
index a9e8431acba..01a7901062a 100644
--- a/spec/lib/gitlab/import_export/members_mapper_spec.rb
+++ b/spec/lib/gitlab/import_export/members_mapper_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::ImportExport::MembersMapper do
@@ -25,7 +27,7 @@ describe Gitlab::ImportExport::MembersMapper do
"email" => user2.email,
"username" => 'test'
},
- "user_id" => 19
+ "user_id" => 19
},
{
"id" => 3,
@@ -45,7 +47,7 @@ describe Gitlab::ImportExport::MembersMapper do
let(:members_mapper) do
described_class.new(
- exported_members: exported_members, user: user, project: project)
+ exported_members: exported_members, user: user, importable: project)
end
it 'includes the exported user ID in the map' do
@@ -81,7 +83,8 @@ describe Gitlab::ImportExport::MembersMapper do
end
it 'removes old user_id from member_hash to avoid conflict with user key' do
- expect(ProjectMember).to receive(:create)
+ expect(ProjectMember)
+ .to receive(:create)
.twice
.with(hash_excluding('user_id'))
.and_call_original
@@ -115,7 +118,7 @@ describe Gitlab::ImportExport::MembersMapper do
let(:project) { create(:project, :public, name: 'searchable_project', namespace: group) }
let(:members_mapper) do
described_class.new(
- exported_members: exported_members, user: user2, project: project)
+ exported_members: exported_members, user: user2, importable: project)
end
before do
@@ -138,7 +141,7 @@ describe Gitlab::ImportExport::MembersMapper do
let(:project) { create(:project, namespace: group) }
let(:members_mapper) do
described_class.new(
- exported_members: exported_members, user: user, project: project)
+ exported_members: exported_members, user: user, importable: project)
end
before do
@@ -161,7 +164,7 @@ describe Gitlab::ImportExport::MembersMapper do
it 'includes importer specific error message' do
expect(ProjectMember).to receive(:create!).and_raise(StandardError.new(exception_message))
- expect { members_mapper.map }.to raise_error(StandardError, "Error adding importer user to project members. #{exception_message}")
+ expect { members_mapper.map }.to raise_error(StandardError, "Error adding importer user to Project members. #{exception_message}")
end
end
end
diff --git a/spec/lib/gitlab/import_export/merge_request_parser_spec.rb b/spec/lib/gitlab/import_export/merge_request_parser_spec.rb
index 4b234411a44..c437efede4c 100644
--- a/spec/lib/gitlab/import_export/merge_request_parser_spec.rb
+++ b/spec/lib/gitlab/import_export/merge_request_parser_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::ImportExport::MergeRequestParser do
@@ -33,9 +35,11 @@ describe Gitlab::ImportExport::MergeRequestParser do
end
it 'parses a MR that has no source branch' do
- allow_any_instance_of(described_class).to receive(:branch_exists?).and_call_original
- allow_any_instance_of(described_class).to receive(:branch_exists?).with(merge_request.source_branch).and_return(false)
- allow_any_instance_of(described_class).to receive(:fork_merge_request?).and_return(true)
+ allow_next_instance_of(described_class) do |instance|
+ allow(instance).to receive(:branch_exists?).and_call_original
+ allow(instance).to receive(:branch_exists?).with(merge_request.source_branch).and_return(false)
+ allow(instance).to receive(:fork_merge_request?).and_return(true)
+ end
allow(Gitlab::GitalyClient).to receive(:migrate).and_call_original
allow(Gitlab::GitalyClient).to receive(:migrate).with(:fetch_ref).and_return([nil, 0])
diff --git a/spec/lib/gitlab/import_export/model_configuration_spec.rb b/spec/lib/gitlab/import_export/model_configuration_spec.rb
index 4426e68b474..cfbfe244988 100644
--- a/spec/lib/gitlab/import_export/model_configuration_spec.rb
+++ b/spec/lib/gitlab/import_export/model_configuration_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
# Part of the test security suite for the Import/Export feature
@@ -6,19 +8,10 @@ require 'spec_helper'
describe 'Import/Export model configuration' do
include ConfigurationHelper
- let(:config_hash) { Gitlab::ImportExport::Config.new.to_h.deep_stringify_keys }
- let(:model_names) do
- names = names_from_tree(config_hash.dig('tree', 'project'))
-
- # Remove duplicated or add missing models
- # - project is not part of the tree, so it has to be added manually.
- # - milestone, labels, merge_request have both singular and plural versions in the tree, so remove the duplicates.
- # - User, Author... Models we do not care about for checking models
- names.flatten.uniq - %w(milestones labels user author merge_request) + ['project']
- end
let(:all_models_yml) { 'spec/lib/gitlab/import_export/all_models.yml' }
let(:all_models_hash) { YAML.load_file(all_models_yml) }
let(:current_models) { setup_models }
+ let(:model_names) { relation_names_for(:project) }
it 'has no new models' do
model_names.each do |model_name|
diff --git a/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb b/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb
index 64a648ca1f8..ec1b935ad63 100644
--- a/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb
+++ b/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
include ImportExport::CommonUtil
@@ -29,9 +31,6 @@ describe Gitlab::ImportExport::ProjectTreeRestorer do
project_tree_restorer = described_class.new(user: @user, shared: @shared, project: @project)
- expect(Gitlab::ImportExport::RelationFactory).to receive(:create).with(hash_including(excluded_keys: ['whatever'])).and_call_original.at_least(:once)
- allow(project_tree_restorer).to receive(:excluded_keys_for_relation).and_return(['whatever'])
-
@restored_project_json = project_tree_restorer.restore
end
end
@@ -235,6 +234,22 @@ describe Gitlab::ImportExport::ProjectTreeRestorer do
expect(meetings.first.url).to eq('https://zoom.us/j/123456789')
end
+ it 'restores sentry issues' do
+ sentry_issue = @project.issues.first.sentry_issue
+
+ expect(sentry_issue.sentry_issue_identifier).to eq(1234567891)
+ end
+
+ it 'restores container_expiration_policy' do
+ policy = Project.find_by_path('project').container_expiration_policy
+
+ aggregate_failures do
+ expect(policy).to be_an_instance_of(ContainerExpirationPolicy)
+ expect(policy).to be_persisted
+ expect(policy.cadence).to eq('3month')
+ end
+ end
+
context 'Merge requests' do
it 'always has the new project as a target' do
expect(MergeRequest.find_by_title('MR1').target_project).to eq(@project)
@@ -360,7 +375,7 @@ describe Gitlab::ImportExport::ProjectTreeRestorer do
expect(restored_project_json).to eq(true)
end
- it_behaves_like 'restores project correctly',
+ it_behaves_like 'restores project successfully',
issues: 1,
labels: 2,
label_with_priorities: 'A project label',
@@ -373,7 +388,7 @@ describe Gitlab::ImportExport::ProjectTreeRestorer do
create(:ci_build, token: 'abcd')
end
- it_behaves_like 'restores project correctly',
+ it_behaves_like 'restores project successfully',
issues: 1,
labels: 2,
label_with_priorities: 'A project label',
@@ -450,7 +465,7 @@ describe Gitlab::ImportExport::ProjectTreeRestorer do
expect(restored_project_json).to eq(true)
end
- it_behaves_like 'restores project correctly',
+ it_behaves_like 'restores project successfully',
issues: 2,
labels: 2,
label_with_priorities: 'A project label',
@@ -555,8 +570,9 @@ describe Gitlab::ImportExport::ProjectTreeRestorer do
context 'Minimal JSON' do
let(:project) { create(:project) }
+ let(:user) { create(:user) }
let(:tree_hash) { { 'visibility_level' => visibility } }
- let(:restorer) { described_class.new(user: nil, shared: shared, project: project) }
+ let(:restorer) { described_class.new(user: user, shared: shared, project: project) }
before do
expect(restorer).to receive(:read_tree_hash) { tree_hash }
@@ -631,4 +647,44 @@ describe Gitlab::ImportExport::ProjectTreeRestorer do
end
end
end
+
+ context 'JSON with invalid records' do
+ subject(:restored_project_json) { project_tree_restorer.restore }
+
+ let(:user) { create(:user) }
+ let!(:project) { create(:project, :builds_disabled, :issues_disabled, name: 'project', path: 'project') }
+ let(:project_tree_restorer) { described_class.new(user: user, shared: shared, project: project) }
+ let(:correlation_id) { 'my-correlation-id' }
+
+ before do
+ setup_import_export_config('with_invalid_records')
+
+ # Import is running from the rake task, `correlation_id` is not assigned
+ expect(Labkit::Correlation::CorrelationId).to receive(:new_id).and_return(correlation_id)
+ subject
+ end
+
+ context 'when failures occur because a relation fails to be processed' do
+ it_behaves_like 'restores project successfully',
+ issues: 0,
+ labels: 0,
+ label_with_priorities: nil,
+ milestones: 1,
+ first_issue_labels: 0,
+ services: 0,
+ import_failures: 1
+
+ it 'records the failures in the database' do
+ import_failure = ImportFailure.last
+
+ expect(import_failure.project_id).to eq(project.id)
+ expect(import_failure.relation_key).to eq('milestones')
+ expect(import_failure.relation_index).to be_present
+ expect(import_failure.exception_class).to eq('ActiveRecord::RecordInvalid')
+ expect(import_failure.exception_message).to be_present
+ expect(import_failure.correlation_id_value).to eq('my-correlation-id')
+ expect(import_failure.created_at).to be_present
+ end
+ end
+ end
end
diff --git a/spec/lib/gitlab/import_export/project_tree_saver_spec.rb b/spec/lib/gitlab/import_export/project_tree_saver_spec.rb
index 97d8b155826..29d0099d5c1 100644
--- a/spec/lib/gitlab/import_export/project_tree_saver_spec.rb
+++ b/spec/lib/gitlab/import_export/project_tree_saver_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::ImportExport::ProjectTreeSaver do
diff --git a/spec/lib/gitlab/import_export/reader_spec.rb b/spec/lib/gitlab/import_export/reader_spec.rb
index 87f665bd995..e37ad281eb5 100644
--- a/spec/lib/gitlab/import_export/reader_spec.rb
+++ b/spec/lib/gitlab/import_export/reader_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::ImportExport::Reader do
@@ -7,19 +9,18 @@ describe Gitlab::ImportExport::Reader do
subject { described_class.new(shared: shared).project_tree }
it 'delegates to AttributesFinder#find_root' do
- expect_any_instance_of(Gitlab::ImportExport::AttributesFinder)
- .to receive(:find_root)
- .with(:project)
+ expect_next_instance_of(Gitlab::ImportExport::AttributesFinder) do |instance|
+ expect(instance).to receive(:find_root).with(:project)
+ end
subject
end
context 'when exception raised' do
before do
- expect_any_instance_of(Gitlab::ImportExport::AttributesFinder)
- .to receive(:find_root)
- .with(:project)
- .and_raise(StandardError)
+ expect_next_instance_of(Gitlab::ImportExport::AttributesFinder) do |instance|
+ expect(instance).to receive(:find_root).with(:project).and_raise(StandardError)
+ end
end
it { is_expected.to be false }
@@ -36,9 +37,9 @@ describe Gitlab::ImportExport::Reader do
subject { described_class.new(shared: shared).group_members_tree }
it 'delegates to AttributesFinder#find_root' do
- expect_any_instance_of(Gitlab::ImportExport::AttributesFinder)
- .to receive(:find_root)
- .with(:group_members)
+ expect_next_instance_of(Gitlab::ImportExport::AttributesFinder) do |instance|
+ expect(instance).to receive(:find_root).with(:group_members)
+ end
subject
end
diff --git a/spec/lib/gitlab/import_export/references_configuration_spec.rb b/spec/lib/gitlab/import_export/references_configuration_spec.rb
new file mode 100644
index 00000000000..91cf9f964c0
--- /dev/null
+++ b/spec/lib/gitlab/import_export/references_configuration_spec.rb
@@ -0,0 +1,48 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+# Part of the test security suite for the Import/Export feature
+# Checks whether there are new reference attributes ending with _id in models that are currently being exported as part of the
+# project Import/Export feature.
+# If there are new references (foreign keys), these will have to either be replaced with actual relation
+# or to be blacklisted by using the import_export.yml configuration file.
+# Likewise, new models added to import_export.yml, will need to be added with their correspondent relations
+# to this spec.
+describe 'Import/Export Project configuration' do
+ include ConfigurationHelper
+
+ where(:relation_path, :relation_name) do
+ relation_paths_for(:project).map do |relation_names|
+ next if relation_names.last == :author
+
+ [relation_names.join("."), relation_names.last]
+ end.compact
+ end
+
+ with_them do
+ context "where relation #{params[:relation_path]}" do
+ it 'does not have prohibited keys' do
+ relation_class = relation_class_for_name(relation_name)
+ relation_attributes = relation_class.new.attributes.keys - relation_class.encrypted_attributes.keys.map(&:to_s)
+ current_attributes = parsed_attributes(relation_name, relation_attributes)
+ prohibited_keys = current_attributes.select do |attribute|
+ prohibited_key?(attribute) || !relation_class.attribute_method?(attribute)
+ end
+ expect(prohibited_keys).to be_empty, failure_message(relation_class.to_s, prohibited_keys)
+ end
+ end
+ end
+
+ def failure_message(relation_class, prohibited_keys)
+ <<-MSG
+ It looks like #{relation_class}, which is exported using the project Import/Export, has references: #{prohibited_keys.join(',')}
+
+ Please replace it with actual relation in IMPORT_EXPORT_CONFIG if you consider this can be exported.
+ Please blacklist the attribute(s) in IMPORT_EXPORT_CONFIG by adding it to its correspondent
+ model in the +excluded_attributes+ section.
+
+ IMPORT_EXPORT_CONFIG: #{Gitlab::ImportExport.config_file}
+ MSG
+ end
+end
diff --git a/spec/lib/gitlab/import_export/relation_factory_spec.rb b/spec/lib/gitlab/import_export/relation_factory_spec.rb
index a23e68a8f00..41d6e6f24fc 100644
--- a/spec/lib/gitlab/import_export/relation_factory_spec.rb
+++ b/spec/lib/gitlab/import_export/relation_factory_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::ImportExport::RelationFactory do
@@ -201,7 +203,7 @@ describe Gitlab::ImportExport::RelationFactory do
Gitlab::ImportExport::MembersMapper.new(
exported_members: [exported_member],
user: user,
- project: project)
+ importable: project)
end
it 'maps the right author to the imported note' do
diff --git a/spec/lib/gitlab/import_export/relation_tree_restorer_spec.rb b/spec/lib/gitlab/import_export/relation_tree_restorer_spec.rb
new file mode 100644
index 00000000000..c761f9652ab
--- /dev/null
+++ b/spec/lib/gitlab/import_export/relation_tree_restorer_spec.rb
@@ -0,0 +1,67 @@
+# frozen_string_literal: true
+
+# This spec is a lightweight version of:
+# * project_tree_restorer_spec.rb
+#
+# In depth testing is being done in the above specs.
+# This spec tests that restore project works
+# but does not have 100% relation coverage.
+
+require 'spec_helper'
+
+describe Gitlab::ImportExport::RelationTreeRestorer do
+ include ImportExport::CommonUtil
+
+ let(:user) { create(:user) }
+ let(:shared) { Gitlab::ImportExport::Shared.new(importable) }
+ let(:members_mapper) { Gitlab::ImportExport::MembersMapper.new(exported_members: {}, user: user, importable: importable) }
+
+ let(:importable_hash) do
+ json = IO.read(path)
+ ActiveSupport::JSON.decode(json)
+ end
+
+ let(:relation_tree_restorer) do
+ described_class.new(
+ user: user,
+ shared: shared,
+ tree_hash: tree_hash,
+ importable: importable,
+ members_mapper: members_mapper,
+ relation_factory: relation_factory,
+ reader: reader
+ )
+ end
+
+ subject { relation_tree_restorer.restore }
+
+ context 'when restoring a project' do
+ let(:path) { 'spec/fixtures/lib/gitlab/import_export/complex/project.json' }
+ let(:importable) { create(:project, :builds_enabled, :issues_disabled, name: 'project', path: 'project') }
+ let(:relation_factory) { Gitlab::ImportExport::RelationFactory }
+ let(:reader) { Gitlab::ImportExport::Reader.new(shared: shared) }
+ let(:tree_hash) { importable_hash }
+
+ it 'restores project tree' do
+ expect(subject).to eq(true)
+ end
+
+ describe 'imported project' do
+ let(:project) { Project.find_by_path('project') }
+
+ before do
+ subject
+ end
+
+ it 'has the project attributes and relations' do
+ expect(project.description).to eq('Nisi et repellendus ut enim quo accusamus vel magnam.')
+ expect(project.labels.count).to eq(3)
+ expect(project.boards.count).to eq(1)
+ expect(project.project_feature).not_to be_nil
+ expect(project.custom_attributes.count).to eq(2)
+ expect(project.project_badges.count).to eq(2)
+ expect(project.snippets.count).to eq(1)
+ end
+ end
+ end
+end
diff --git a/spec/lib/gitlab/import_export/repo_restorer_spec.rb b/spec/lib/gitlab/import_export/repo_restorer_spec.rb
index e2ffb2adb9b..a61d966bdfa 100644
--- a/spec/lib/gitlab/import_export/repo_restorer_spec.rb
+++ b/spec/lib/gitlab/import_export/repo_restorer_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::ImportExport::RepoRestorer do
@@ -18,7 +20,9 @@ describe Gitlab::ImportExport::RepoRestorer do
end
before do
- allow_any_instance_of(Gitlab::ImportExport).to receive(:storage_path).and_return(export_path)
+ allow_next_instance_of(Gitlab::ImportExport) do |instance|
+ allow(instance).to receive(:storage_path).and_return(export_path)
+ end
bundler.save
end
diff --git a/spec/lib/gitlab/import_export/repo_saver_spec.rb b/spec/lib/gitlab/import_export/repo_saver_spec.rb
index c3df371af43..fc1f782bfdd 100644
--- a/spec/lib/gitlab/import_export/repo_saver_spec.rb
+++ b/spec/lib/gitlab/import_export/repo_saver_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::ImportExport::RepoSaver do
@@ -10,7 +12,9 @@ describe Gitlab::ImportExport::RepoSaver do
before do
project.add_maintainer(user)
- allow_any_instance_of(Gitlab::ImportExport).to receive(:storage_path).and_return(export_path)
+ allow_next_instance_of(Gitlab::ImportExport) do |instance|
+ allow(instance).to receive(:storage_path).and_return(export_path)
+ end
end
after do
diff --git a/spec/lib/gitlab/import_export/safe_model_attributes.yml b/spec/lib/gitlab/import_export/safe_model_attributes.yml
index 04fe985cdb5..79442c35797 100644
--- a/spec/lib/gitlab/import_export/safe_model_attributes.yml
+++ b/spec/lib/gitlab/import_export/safe_model_attributes.yml
@@ -20,6 +20,7 @@ Issue:
- due_date
- moved_to_id
- duplicated_to_id
+- promoted_to_epic_id
- lock_version
- milestone_id
- weight
@@ -32,7 +33,6 @@ Issue:
Event:
- id
- target_type
-- target_id
- project_id
- group_id
- created_at
@@ -59,7 +59,6 @@ Note:
- attachment
- line_code
- commit_id
-- noteable_id
- system
- st_diff
- updated_by_id
@@ -72,11 +71,8 @@ Note:
- resolved_by_push
- discussion_id
- original_discussion_id
-- review_id
LabelLink:
- id
-- label_id
-- target_id
- target_type
- created_at
- updated_at
@@ -129,13 +125,11 @@ Release:
- released_at
Evidence:
- id
-- release_id
- summary
- created_at
- updated_at
Releases::Link:
- id
-- release_id
- url
- name
- created_at
@@ -143,7 +137,6 @@ Releases::Link:
ProjectMember:
- id
- access_level
-- source_id
- source_type
- user_id
- notification_level
@@ -442,6 +435,7 @@ Service:
- note_events
- pipeline_events
- job_events
+- comment_on_event_enabled
- category
- default
- wiki_page_events
@@ -598,7 +592,6 @@ AwardEmoji:
LabelPriority:
- id
- project_id
-- label_id
- priority
- created_at
- updated_at
@@ -606,7 +599,6 @@ Timelog:
- id
- time_spent
- merge_request_id
-- issue_id
- user_id
- spent_at
- created_at
@@ -621,7 +613,6 @@ ProjectAutoDevops:
- updated_at
IssueAssignee:
- user_id
-- issue_id
ProjectCustomAttribute:
- id
- created_at
@@ -650,6 +641,7 @@ PrometheusAlert:
- prometheus_metric_id
Badge:
- id
+- name
- link_url
- image_url
- project_id
@@ -676,7 +668,6 @@ ProtectedEnvironment::DeployAccessLevel:
ResourceLabelEvent:
- id
- action
-- issue_id
- merge_request_id
- label_id
- user_id
@@ -686,9 +677,11 @@ ErrorTracking::ProjectErrorTrackingSetting:
- project_id
- project_name
- organization_name
+SentryIssue:
+- id
+- sentry_issue_identifier
Suggestion:
- id
-- note_id
- relative_order
- applied
- commit_id
@@ -726,6 +719,7 @@ List:
- milestone_id
- user_id
- max_issue_count
+- max_issue_weight
ExternalPullRequest:
- id
- created_at
@@ -742,23 +736,31 @@ ExternalPullRequest:
DesignManagement::Design:
- id
- project_id
-- issue_id
- filename
DesignManagement::Action:
-- design_id
- event
-- version_id
DesignManagement::Version:
- id
- created_at
- sha
-- issue_id
- author_id
ZoomMeeting:
- id
-- issue_id
- project_id
- issue_status
- url
- created_at
- updated_at
+ServiceDeskSetting:
+- project_id
+- issue_template_key
+ContainerExpirationPolicy:
+- created_at
+- updated_at
+- next_run_at
+- project_id
+- name_regex
+- cadence
+- older_than
+- keep_n
+- enabled
diff --git a/spec/lib/gitlab/import_export/saver_spec.rb b/spec/lib/gitlab/import_export/saver_spec.rb
index aca63953677..a59cf7a1260 100644
--- a/spec/lib/gitlab/import_export/saver_spec.rb
+++ b/spec/lib/gitlab/import_export/saver_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
require 'fileutils'
@@ -5,10 +7,13 @@ describe Gitlab::ImportExport::Saver do
let!(:project) { create(:project, :public, name: 'project') }
let(:export_path) { "#{Dir.tmpdir}/project_tree_saver_spec" }
let(:shared) { project.import_export_shared }
+
subject { described_class.new(exportable: project, shared: shared) }
before do
- allow_any_instance_of(Gitlab::ImportExport).to receive(:storage_path).and_return(export_path)
+ allow_next_instance_of(Gitlab::ImportExport) do |instance|
+ allow(instance).to receive(:storage_path).and_return(export_path)
+ end
FileUtils.mkdir_p(shared.export_path)
FileUtils.touch("#{shared.export_path}/tmp.bundle")
diff --git a/spec/lib/gitlab/import_export/shared_spec.rb b/spec/lib/gitlab/import_export/shared_spec.rb
index fc011f7e1be..8c16243576d 100644
--- a/spec/lib/gitlab/import_export/shared_spec.rb
+++ b/spec/lib/gitlab/import_export/shared_spec.rb
@@ -1,8 +1,11 @@
+# frozen_string_literal: true
+
require 'spec_helper'
require 'fileutils'
describe Gitlab::ImportExport::Shared do
let(:project) { build(:project) }
+
subject { project.import_export_shared }
context 'with a repository on disk' do
@@ -46,24 +49,9 @@ describe Gitlab::ImportExport::Shared do
it 'updates the import JID' do
import_state = create(:import_state, project: project, jid: 'jid-test')
- expect_next_instance_of(Gitlab::Import::Logger) do |logger|
- expect(logger).to receive(:error).with(hash_including(import_jid: import_state.jid))
- end
-
- subject.error(error)
- end
-
- it 'calls the error logger without a backtrace' do
- expect(subject).to receive(:log_error).with(message: error.message)
-
- subject.error(error)
- end
-
- it 'calls the error logger with the full message' do
- backtrace = caller
- allow(error).to receive(:backtrace).and_return(caller)
-
- expect(subject).to receive(:log_error).with(message: error.message, error_backtrace: Gitlab::Profiler.clean_backtrace(backtrace))
+ expect(Gitlab::ErrorTracking)
+ .to receive(:track_exception)
+ .with(error, hash_including(import_jid: import_state.jid))
subject.error(error)
end
diff --git a/spec/lib/gitlab/import_export/uploads_manager_spec.rb b/spec/lib/gitlab/import_export/uploads_manager_spec.rb
index f13f639d6b7..e6d6ba840be 100644
--- a/spec/lib/gitlab/import_export/uploads_manager_spec.rb
+++ b/spec/lib/gitlab/import_export/uploads_manager_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::ImportExport::UploadsManager do
@@ -10,7 +12,9 @@ describe Gitlab::ImportExport::UploadsManager do
subject(:manager) { described_class.new(project: project, shared: shared) }
before do
- allow_any_instance_of(Gitlab::ImportExport).to receive(:storage_path).and_return(export_path)
+ allow_next_instance_of(Gitlab::ImportExport) do |instance|
+ allow(instance).to receive(:storage_path).and_return(export_path)
+ end
FileUtils.mkdir_p(shared.export_path)
end
diff --git a/spec/lib/gitlab/import_export/uploads_restorer_spec.rb b/spec/lib/gitlab/import_export/uploads_restorer_spec.rb
index e2e8204b2fa..077ece87b31 100644
--- a/spec/lib/gitlab/import_export/uploads_restorer_spec.rb
+++ b/spec/lib/gitlab/import_export/uploads_restorer_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::ImportExport::UploadsRestorer do
@@ -6,7 +8,9 @@ describe Gitlab::ImportExport::UploadsRestorer do
let(:shared) { project.import_export_shared }
before do
- allow_any_instance_of(Gitlab::ImportExport).to receive(:storage_path).and_return(export_path)
+ allow_next_instance_of(Gitlab::ImportExport) do |instance|
+ allow(instance).to receive(:storage_path).and_return(export_path)
+ end
FileUtils.mkdir_p(File.join(shared.export_path, 'uploads/random'))
FileUtils.touch(File.join(shared.export_path, 'uploads/random', 'dummy.txt'))
end
diff --git a/spec/lib/gitlab/import_export/uploads_saver_spec.rb b/spec/lib/gitlab/import_export/uploads_saver_spec.rb
index 24993460e51..8a36caef316 100644
--- a/spec/lib/gitlab/import_export/uploads_saver_spec.rb
+++ b/spec/lib/gitlab/import_export/uploads_saver_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::ImportExport::UploadsSaver do
@@ -7,7 +9,9 @@ describe Gitlab::ImportExport::UploadsSaver do
let(:shared) { project.import_export_shared }
before do
- allow_any_instance_of(Gitlab::ImportExport).to receive(:storage_path).and_return(export_path)
+ allow_next_instance_of(Gitlab::ImportExport) do |instance|
+ allow(instance).to receive(:storage_path).and_return(export_path)
+ end
end
after do
diff --git a/spec/lib/gitlab/import_export/version_checker_spec.rb b/spec/lib/gitlab/import_export/version_checker_spec.rb
index 76f8253ec9b..befbd1b4c19 100644
--- a/spec/lib/gitlab/import_export/version_checker_spec.rb
+++ b/spec/lib/gitlab/import_export/version_checker_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
include ImportExport::CommonUtil
@@ -6,10 +8,20 @@ describe Gitlab::ImportExport::VersionChecker do
describe 'bundle a project Git repo' do
let(:version) { Gitlab::ImportExport.version }
+ let(:version_file) { Tempfile.new('VERSION') }
before do
allow_any_instance_of(Gitlab::ImportExport::Shared).to receive(:relative_archive_path).and_return('')
- allow(File).to receive(:open).and_return(version)
+
+ version_file.write(version)
+ version_file.rewind
+
+ allow_any_instance_of(described_class).to receive(:version_file).and_return(version_file.path)
+ end
+
+ after do
+ version_file.close
+ version_file.unlink
end
it 'returns true if Import/Export have the same version' do
diff --git a/spec/lib/gitlab/import_export/wiki_repo_saver_spec.rb b/spec/lib/gitlab/import_export/wiki_repo_saver_spec.rb
index 249afbd23d1..59a59223d8d 100644
--- a/spec/lib/gitlab/import_export/wiki_repo_saver_spec.rb
+++ b/spec/lib/gitlab/import_export/wiki_repo_saver_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::ImportExport::WikiRepoSaver do
@@ -11,7 +13,9 @@ describe Gitlab::ImportExport::WikiRepoSaver do
before do
project.add_maintainer(user)
- allow_any_instance_of(Gitlab::ImportExport).to receive(:storage_path).and_return(export_path)
+ allow_next_instance_of(Gitlab::ImportExport) do |instance|
+ allow(instance).to receive(:storage_path).and_return(export_path)
+ end
project_wiki.wiki
project_wiki.create_page("index", "test content")
end
diff --git a/spec/lib/gitlab/import_export/wiki_restorer_spec.rb b/spec/lib/gitlab/import_export/wiki_restorer_spec.rb
index f99f198da33..33cd3e55393 100644
--- a/spec/lib/gitlab/import_export/wiki_restorer_spec.rb
+++ b/spec/lib/gitlab/import_export/wiki_restorer_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::ImportExport::WikiRestorer do
diff --git a/spec/lib/gitlab/insecure_key_fingerprint_spec.rb b/spec/lib/gitlab/insecure_key_fingerprint_spec.rb
index 7f20ae98b06..8d0422bae9f 100644
--- a/spec/lib/gitlab/insecure_key_fingerprint_spec.rb
+++ b/spec/lib/gitlab/insecure_key_fingerprint_spec.rb
@@ -11,10 +11,17 @@ describe Gitlab::InsecureKeyFingerprint do
end
let(:fingerprint) { "3f:a2:ee:de:b5:de:53:c3:aa:2f:9c:45:24:4c:47:7b" }
+ let(:fingerprint_sha256) { "MQHWhS9nhzUezUdD42ytxubZoBKrZLbyBZzxCkmnxXc" }
describe "#fingerprint" do
it "generates the key's fingerprint" do
- expect(described_class.new(key.split[1]).fingerprint).to eq(fingerprint)
+ expect(described_class.new(key.split[1]).fingerprint_md5).to eq(fingerprint)
+ end
+ end
+
+ describe "#fingerprint" do
+ it "generates the key's fingerprint" do
+ expect(described_class.new(key.split[1]).fingerprint_sha256).to eq(fingerprint_sha256)
end
end
end
diff --git a/spec/lib/gitlab/json_cache_spec.rb b/spec/lib/gitlab/json_cache_spec.rb
index 39cdd42088e..9d986abb8dd 100644
--- a/spec/lib/gitlab/json_cache_spec.rb
+++ b/spec/lib/gitlab/json_cache_spec.rb
@@ -7,6 +7,7 @@ describe Gitlab::JsonCache do
let(:namespace) { 'geo' }
let(:key) { 'foo' }
let(:expanded_key) { "#{namespace}:#{key}:#{Gitlab::VERSION}:#{Rails.version}" }
+
set(:broadcast_message) { create(:broadcast_message) }
subject(:cache) { described_class.new(namespace: namespace, backend: backend) }
@@ -378,6 +379,12 @@ describe Gitlab::JsonCache do
expect(result).to eq(broadcast_message)
end
+ it 'decodes enums correctly' do
+ result = cache.fetch(key, as: BroadcastMessage) { 'block result' }
+
+ expect(result.broadcast_type).to eq(broadcast_message.broadcast_type)
+ end
+
context 'when the cached value is an instance of ActiveRecord::Base' do
it 'returns a persisted record when id is set' do
backend.write(expanded_key, broadcast_message.to_json)
diff --git a/spec/lib/gitlab/kubernetes/config_map_spec.rb b/spec/lib/gitlab/kubernetes/config_map_spec.rb
index 911d6024804..0203772e069 100644
--- a/spec/lib/gitlab/kubernetes/config_map_spec.rb
+++ b/spec/lib/gitlab/kubernetes/config_map_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Kubernetes::ConfigMap do
@@ -16,6 +18,7 @@ describe Gitlab::Kubernetes::ConfigMap do
describe '#generate' do
let(:resource) { ::Kubeclient::Resource.new(metadata: metadata, data: application.files) }
+
subject { config_map.generate }
it 'builds a Kubeclient Resource' do
diff --git a/spec/lib/gitlab/kubernetes/helm/api_spec.rb b/spec/lib/gitlab/kubernetes/helm/api_spec.rb
index 0de809833e6..5d9beec093a 100644
--- a/spec/lib/gitlab/kubernetes/helm/api_spec.rb
+++ b/spec/lib/gitlab/kubernetes/helm/api_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Kubernetes::Helm::Api do
diff --git a/spec/lib/gitlab/kubernetes/helm/base_command_spec.rb b/spec/lib/gitlab/kubernetes/helm/base_command_spec.rb
index 78a4eb44e38..c59078449b8 100644
--- a/spec/lib/gitlab/kubernetes/helm/base_command_spec.rb
+++ b/spec/lib/gitlab/kubernetes/helm/base_command_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Kubernetes::Helm::BaseCommand do
diff --git a/spec/lib/gitlab/kubernetes/helm/delete_command_spec.rb b/spec/lib/gitlab/kubernetes/helm/delete_command_spec.rb
index 7e9853cf9ea..82e15864687 100644
--- a/spec/lib/gitlab/kubernetes/helm/delete_command_spec.rb
+++ b/spec/lib/gitlab/kubernetes/helm/delete_command_spec.rb
@@ -13,40 +13,57 @@ describe Gitlab::Kubernetes::Helm::DeleteCommand do
it_behaves_like 'helm commands' do
let(:commands) do
<<~EOS
- helm init --upgrade
- for i in $(seq 1 30); do helm version && s=0 && break || s=$?; sleep 1s; echo \"Retrying ($i)...\"; done; (exit $s)
+ export HELM_HOST="localhost:44134"
+ tiller -listen ${HELM_HOST} -alsologtostderr &
+ helm init --client-only
helm delete --purge app-name
EOS
end
end
- let(:tls_flags) do
- <<~EOS.squish
- --tls
- --tls-ca-cert /data/helm/app-name/config/ca.pem
- --tls-cert /data/helm/app-name/config/cert.pem
- --tls-key /data/helm/app-name/config/key.pem
- EOS
- end
-
- context 'when there is a ca.pem file' do
- let(:files) { { 'ca.pem': 'some file content' } }
+ context 'tillerless feature disabled' do
+ before do
+ stub_feature_flags(managed_apps_local_tiller: false)
+ end
it_behaves_like 'helm commands' do
let(:commands) do
<<~EOS
helm init --upgrade
- for i in $(seq 1 30); do helm version #{tls_flags} && s=0 && break || s=$?; sleep 1s; echo \"Retrying ($i)...\"; done; (exit $s)
- #{helm_delete_command}
+ for i in $(seq 1 30); do helm version && s=0 && break || s=$?; sleep 1s; echo \"Retrying ($i)...\"; done; (exit $s)
+ helm delete --purge app-name
EOS
end
+ end
- let(:helm_delete_command) do
+ context 'when there is a ca.pem file' do
+ let(:files) { { 'ca.pem': 'some file content' } }
+
+ let(:tls_flags) do
<<~EOS.squish
- helm delete --purge app-name
- #{tls_flags}
+ --tls
+ --tls-ca-cert /data/helm/app-name/config/ca.pem
+ --tls-cert /data/helm/app-name/config/cert.pem
+ --tls-key /data/helm/app-name/config/key.pem
EOS
end
+
+ it_behaves_like 'helm commands' do
+ let(:commands) do
+ <<~EOS
+ helm init --upgrade
+ for i in $(seq 1 30); do helm version #{tls_flags} && s=0 && break || s=$?; sleep 1s; echo \"Retrying ($i)...\"; done; (exit $s)
+ #{helm_delete_command}
+ EOS
+ end
+
+ let(:helm_delete_command) do
+ <<~EOS.squish
+ helm delete --purge app-name
+ #{tls_flags}
+ EOS
+ end
+ end
end
end
diff --git a/spec/lib/gitlab/kubernetes/helm/init_command_spec.rb b/spec/lib/gitlab/kubernetes/helm/init_command_spec.rb
index 4a3b9d4bf6a..f87ceb45766 100644
--- a/spec/lib/gitlab/kubernetes/helm/init_command_spec.rb
+++ b/spec/lib/gitlab/kubernetes/helm/init_command_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Kubernetes::Helm::InitCommand do
diff --git a/spec/lib/gitlab/kubernetes/helm/install_command_spec.rb b/spec/lib/gitlab/kubernetes/helm/install_command_spec.rb
index e5a361bdab3..9c04e101e78 100644
--- a/spec/lib/gitlab/kubernetes/helm/install_command_spec.rb
+++ b/spec/lib/gitlab/kubernetes/helm/install_command_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Kubernetes::Helm::InstallCommand do
@@ -21,22 +23,14 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do
)
end
- let(:tls_flags) do
- <<~EOS.squish
- --tls
- --tls-ca-cert /data/helm/app-name/config/ca.pem
- --tls-cert /data/helm/app-name/config/cert.pem
- --tls-key /data/helm/app-name/config/key.pem
- EOS
- end
-
subject { install_command }
it_behaves_like 'helm commands' do
let(:commands) do
<<~EOS
- helm init --upgrade
- for i in $(seq 1 30); do helm version #{tls_flags} && s=0 && break || s=$?; sleep 1s; echo \"Retrying ($i)...\"; done; (exit $s)
+ export HELM_HOST="localhost:44134"
+ tiller -listen ${HELM_HOST} -alsologtostderr &
+ helm init --client-only
helm repo add app-name https://repository.example.com
helm repo update
#{helm_install_comand}
@@ -48,7 +42,6 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do
helm upgrade app-name chart-name
--install
--reset-values
- #{tls_flags}
--version 1.2.3
--set rbac.create\\=false,rbac.enabled\\=false
--namespace gitlab-managed-apps
@@ -57,8 +50,19 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do
end
end
- context 'when rbac is true' do
- let(:rbac) { true }
+ context 'tillerless feature disabled' do
+ before do
+ stub_feature_flags(managed_apps_local_tiller: false)
+ end
+
+ let(:tls_flags) do
+ <<~EOS.squish
+ --tls
+ --tls-ca-cert /data/helm/app-name/config/ca.pem
+ --tls-cert /data/helm/app-name/config/cert.pem
+ --tls-key /data/helm/app-name/config/key.pem
+ EOS
+ end
it_behaves_like 'helm commands' do
let(:commands) do
@@ -67,6 +71,36 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do
for i in $(seq 1 30); do helm version #{tls_flags} && s=0 && break || s=$?; sleep 1s; echo \"Retrying ($i)...\"; done; (exit $s)
helm repo add app-name https://repository.example.com
helm repo update
+ #{helm_install_comand}
+ EOS
+ end
+
+ let(:helm_install_comand) do
+ <<~EOS.squish
+ helm upgrade app-name chart-name
+ --install
+ --reset-values
+ #{tls_flags}
+ --version 1.2.3
+ --set rbac.create\\=false,rbac.enabled\\=false
+ --namespace gitlab-managed-apps
+ -f /data/helm/app-name/config/values.yaml
+ EOS
+ end
+ end
+ end
+
+ context 'when rbac is true' do
+ let(:rbac) { true }
+
+ it_behaves_like 'helm commands' do
+ let(:commands) do
+ <<~EOS
+ export HELM_HOST="localhost:44134"
+ tiller -listen ${HELM_HOST} -alsologtostderr &
+ helm init --client-only
+ helm repo add app-name https://repository.example.com
+ helm repo update
#{helm_install_command}
EOS
end
@@ -76,7 +110,6 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do
helm upgrade app-name chart-name
--install
--reset-values
- #{tls_flags}
--version 1.2.3
--set rbac.create\\=true,rbac.enabled\\=true
--namespace gitlab-managed-apps
@@ -92,8 +125,9 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do
it_behaves_like 'helm commands' do
let(:commands) do
<<~EOS
- helm init --upgrade
- for i in $(seq 1 30); do helm version #{tls_flags} && s=0 && break || s=$?; sleep 1s; echo \"Retrying ($i)...\"; done; (exit $s)
+ export HELM_HOST="localhost:44134"
+ tiller -listen ${HELM_HOST} -alsologtostderr &
+ helm init --client-only
helm repo add app-name https://repository.example.com
helm repo update
/bin/date
@@ -107,7 +141,6 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do
helm upgrade app-name chart-name
--install
--reset-values
- #{tls_flags}
--version 1.2.3
--set rbac.create\\=false,rbac.enabled\\=false
--namespace gitlab-managed-apps
@@ -123,8 +156,9 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do
it_behaves_like 'helm commands' do
let(:commands) do
<<~EOS
- helm init --upgrade
- for i in $(seq 1 30); do helm version #{tls_flags} && s=0 && break || s=$?; sleep 1s; echo \"Retrying ($i)...\"; done; (exit $s)
+ export HELM_HOST="localhost:44134"
+ tiller -listen ${HELM_HOST} -alsologtostderr &
+ helm init --client-only
helm repo add app-name https://repository.example.com
helm repo update
#{helm_install_command}
@@ -138,7 +172,6 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do
helm upgrade app-name chart-name
--install
--reset-values
- #{tls_flags}
--version 1.2.3
--set rbac.create\\=false,rbac.enabled\\=false
--namespace gitlab-managed-apps
@@ -154,8 +187,9 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do
it_behaves_like 'helm commands' do
let(:commands) do
<<~EOS
- helm init --upgrade
- for i in $(seq 1 30); do helm version && s=0 && break || s=$?; sleep 1s; echo \"Retrying ($i)...\"; done; (exit $s)
+ export HELM_HOST="localhost:44134"
+ tiller -listen ${HELM_HOST} -alsologtostderr &
+ helm init --client-only
helm repo add app-name https://repository.example.com
helm repo update
#{helm_install_command}
@@ -182,8 +216,9 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do
it_behaves_like 'helm commands' do
let(:commands) do
<<~EOS
- helm init --upgrade
- for i in $(seq 1 30); do helm version #{tls_flags} && s=0 && break || s=$?; sleep 1s; echo \"Retrying ($i)...\"; done; (exit $s)
+ export HELM_HOST="localhost:44134"
+ tiller -listen ${HELM_HOST} -alsologtostderr &
+ helm init --client-only
helm repo add app-name https://repository.example.com
helm repo update
#{helm_install_command}
@@ -195,7 +230,6 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do
helm upgrade app-name chart-name
--install
--reset-values
- #{tls_flags}
--set rbac.create\\=false,rbac.enabled\\=false
--namespace gitlab-managed-apps
-f /data/helm/app-name/config/values.yaml
diff --git a/spec/lib/gitlab/kubernetes/helm/patch_command_spec.rb b/spec/lib/gitlab/kubernetes/helm/patch_command_spec.rb
new file mode 100644
index 00000000000..064efebdb96
--- /dev/null
+++ b/spec/lib/gitlab/kubernetes/helm/patch_command_spec.rb
@@ -0,0 +1,218 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::Kubernetes::Helm::PatchCommand do
+ let(:files) { { 'ca.pem': 'some file content' } }
+ let(:repository) { 'https://repository.example.com' }
+ let(:rbac) { false }
+ let(:version) { '1.2.3' }
+
+ subject(:patch_command) do
+ described_class.new(
+ name: 'app-name',
+ chart: 'chart-name',
+ rbac: rbac,
+ files: files,
+ version: version,
+ repository: repository
+ )
+ end
+
+ context 'when local tiller feature is disabled' do
+ before do
+ stub_feature_flags(managed_apps_local_tiller: false)
+ end
+
+ let(:tls_flags) do
+ <<~EOS.squish
+ --tls
+ --tls-ca-cert /data/helm/app-name/config/ca.pem
+ --tls-cert /data/helm/app-name/config/cert.pem
+ --tls-key /data/helm/app-name/config/key.pem
+ EOS
+ end
+
+ it_behaves_like 'helm commands' do
+ let(:commands) do
+ <<~EOS
+ helm init --upgrade
+ for i in $(seq 1 30); do helm version #{tls_flags} && s=0 && break || s=$?; sleep 1s; echo \"Retrying ($i)...\"; done; (exit $s)
+ helm repo add app-name https://repository.example.com
+ helm repo update
+ #{helm_upgrade_comand}
+ EOS
+ end
+
+ let(:helm_upgrade_comand) do
+ <<~EOS.squish
+ helm upgrade app-name chart-name
+ --reuse-values
+ #{tls_flags}
+ --version 1.2.3
+ --namespace gitlab-managed-apps
+ -f /data/helm/app-name/config/values.yaml
+ EOS
+ end
+ end
+ end
+
+ it_behaves_like 'helm commands' do
+ let(:commands) do
+ <<~EOS
+ export HELM_HOST="localhost:44134"
+ tiller -listen ${HELM_HOST} -alsologtostderr &
+ helm init --client-only
+ helm repo add app-name https://repository.example.com
+ helm repo update
+ #{helm_upgrade_comand}
+ EOS
+ end
+
+ let(:helm_upgrade_comand) do
+ <<~EOS.squish
+ helm upgrade app-name chart-name
+ --reuse-values
+ --version 1.2.3
+ --namespace gitlab-managed-apps
+ -f /data/helm/app-name/config/values.yaml
+ EOS
+ end
+ end
+
+ context 'when rbac is true' do
+ let(:rbac) { true }
+
+ it_behaves_like 'helm commands' do
+ let(:commands) do
+ <<~EOS
+ export HELM_HOST="localhost:44134"
+ tiller -listen ${HELM_HOST} -alsologtostderr &
+ helm init --client-only
+ helm repo add app-name https://repository.example.com
+ helm repo update
+ #{helm_upgrade_command}
+ EOS
+ end
+
+ let(:helm_upgrade_command) do
+ <<~EOS.squish
+ helm upgrade app-name chart-name
+ --reuse-values
+ --version 1.2.3
+ --namespace gitlab-managed-apps
+ -f /data/helm/app-name/config/values.yaml
+ EOS
+ end
+ end
+ end
+
+ context 'when there is no ca.pem file' do
+ let(:files) { { 'file.txt': 'some content' } }
+
+ it_behaves_like 'helm commands' do
+ let(:commands) do
+ <<~EOS
+ export HELM_HOST="localhost:44134"
+ tiller -listen ${HELM_HOST} -alsologtostderr &
+ helm init --client-only
+ helm repo add app-name https://repository.example.com
+ helm repo update
+ #{helm_upgrade_command}
+ EOS
+ end
+
+ let(:helm_upgrade_command) do
+ <<~EOS.squish
+ helm upgrade app-name chart-name
+ --reuse-values
+ --version 1.2.3
+ --namespace gitlab-managed-apps
+ -f /data/helm/app-name/config/values.yaml
+ EOS
+ end
+ end
+ end
+
+ describe '#pod_name' do
+ subject { patch_command.pod_name }
+
+ it { is_expected.to eq 'install-app-name' }
+ end
+
+ context 'when there is no version' do
+ let(:version) { nil }
+
+ it { expect { patch_command }.to raise_error(ArgumentError, 'version is required') }
+ end
+
+ describe '#rbac?' do
+ subject { patch_command.rbac? }
+
+ context 'rbac is enabled' do
+ let(:rbac) { true }
+
+ it { is_expected.to be_truthy }
+ end
+
+ context 'rbac is not enabled' do
+ let(:rbac) { false }
+
+ it { is_expected.to be_falsey }
+ end
+ end
+
+ describe '#pod_resource' do
+ subject { patch_command.pod_resource }
+
+ context 'rbac is enabled' do
+ let(:rbac) { true }
+
+ it 'generates a pod that uses the tiller serviceAccountName' do
+ expect(subject.spec.serviceAccountName).to eq('tiller')
+ end
+ end
+
+ context 'rbac is not enabled' do
+ let(:rbac) { false }
+
+ it 'generates a pod that uses the default serviceAccountName' do
+ expect(subject.spec.serviceAcccountName).to be_nil
+ end
+ end
+ end
+
+ describe '#config_map_resource' do
+ let(:metadata) do
+ {
+ name: "values-content-configuration-app-name",
+ namespace: 'gitlab-managed-apps',
+ labels: { name: "values-content-configuration-app-name" }
+ }
+ end
+
+ let(:resource) { ::Kubeclient::Resource.new(metadata: metadata, data: files) }
+
+ subject { patch_command.config_map_resource }
+
+ it 'returns a KubeClient resource with config map content for the application' do
+ is_expected.to eq(resource)
+ end
+ end
+
+ describe '#service_account_resource' do
+ subject { patch_command.service_account_resource }
+
+ it 'returns nothing' do
+ is_expected.to be_nil
+ end
+ end
+
+ describe '#cluster_role_binding_resource' do
+ subject { patch_command.cluster_role_binding_resource }
+
+ it 'returns nothing' do
+ is_expected.to be_nil
+ end
+ end
+end
diff --git a/spec/lib/gitlab/kubernetes/helm/pod_spec.rb b/spec/lib/gitlab/kubernetes/helm/pod_spec.rb
index e1b4bd0b664..24a734a2915 100644
--- a/spec/lib/gitlab/kubernetes/helm/pod_spec.rb
+++ b/spec/lib/gitlab/kubernetes/helm/pod_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Kubernetes::Helm::Pod do
diff --git a/spec/lib/gitlab/kubernetes/kubectl_cmd_spec.rb b/spec/lib/gitlab/kubernetes/kubectl_cmd_spec.rb
index f24ab5579df..b65d7b9fdc6 100644
--- a/spec/lib/gitlab/kubernetes/kubectl_cmd_spec.rb
+++ b/spec/lib/gitlab/kubernetes/kubectl_cmd_spec.rb
@@ -45,4 +45,20 @@ describe Gitlab::Kubernetes::KubectlCmd do
end
end
end
+
+ describe '.api_resources' do
+ it 'constructs string properly' do
+ expected_command = 'kubectl api-resources -o name --api-group foo'
+
+ expect(described_class.api_resources("-o", "name", "--api-group", "foo")).to eq expected_command
+ end
+ end
+
+ describe '.delete_crds_from_group' do
+ it 'constructs string properly' do
+ expected_command = 'kubectl api-resources -o name --api-group foo | xargs kubectl delete --ignore-not-found crd'
+
+ expect(described_class.delete_crds_from_group("foo")).to eq expected_command
+ end
+ end
end
diff --git a/spec/lib/gitlab/kubernetes/namespace_spec.rb b/spec/lib/gitlab/kubernetes/namespace_spec.rb
index e91a755aa03..16634cc48e6 100644
--- a/spec/lib/gitlab/kubernetes/namespace_spec.rb
+++ b/spec/lib/gitlab/kubernetes/namespace_spec.rb
@@ -1,8 +1,11 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Kubernetes::Namespace do
let(:name) { 'a_namespace' }
let(:client) { double('kubernetes client') }
+
subject { described_class.new(name, client) }
it { expect(subject.name).to eq(name) }
diff --git a/spec/lib/gitlab/kubernetes_spec.rb b/spec/lib/gitlab/kubernetes_spec.rb
index 31bfd20449d..40c3e7d0b3c 100644
--- a/spec/lib/gitlab/kubernetes_spec.rb
+++ b/spec/lib/gitlab/kubernetes_spec.rb
@@ -27,6 +27,7 @@ describe Gitlab::Kubernetes do
context 'with a path prefix in the API URL' do
let(:api_url) { 'https://example.com/prefix/' }
+
it { expect(result.path).to eq('/prefix/api/v1/namespaces/default/pods/pod1/exec') }
end
diff --git a/spec/lib/gitlab/legacy_github_import/branch_formatter_spec.rb b/spec/lib/gitlab/legacy_github_import/branch_formatter_spec.rb
index 48655851140..e96745f5fbe 100644
--- a/spec/lib/gitlab/legacy_github_import/branch_formatter_spec.rb
+++ b/spec/lib/gitlab/legacy_github_import/branch_formatter_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::LegacyGithubImport::BranchFormatter do
diff --git a/spec/lib/gitlab/legacy_github_import/client_spec.rb b/spec/lib/gitlab/legacy_github_import/client_spec.rb
index 80b767abce0..194518a1f36 100644
--- a/spec/lib/gitlab/legacy_github_import/client_spec.rb
+++ b/spec/lib/gitlab/legacy_github_import/client_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::LegacyGithubImport::Client do
diff --git a/spec/lib/gitlab/legacy_github_import/comment_formatter_spec.rb b/spec/lib/gitlab/legacy_github_import/comment_formatter_spec.rb
index 413654e108c..0f03db312ce 100644
--- a/spec/lib/gitlab/legacy_github_import/comment_formatter_spec.rb
+++ b/spec/lib/gitlab/legacy_github_import/comment_formatter_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::LegacyGithubImport::CommentFormatter do
diff --git a/spec/lib/gitlab/legacy_github_import/importer_spec.rb b/spec/lib/gitlab/legacy_github_import/importer_spec.rb
index 9163019514b..c6ee0a3c094 100644
--- a/spec/lib/gitlab/legacy_github_import/importer_spec.rb
+++ b/spec/lib/gitlab/legacy_github_import/importer_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::LegacyGithubImport::Importer do
@@ -263,6 +265,7 @@ describe Gitlab::LegacyGithubImport::Importer do
context 'when importing a GitHub project' do
let(:api_root) { 'https://api.github.com' }
let(:repo_root) { 'https://github.com' }
+
subject { described_class.new(project) }
it_behaves_like 'Gitlab::LegacyGithubImport::Importer#execute'
@@ -285,6 +288,7 @@ describe Gitlab::LegacyGithubImport::Importer do
context 'when importing a Gitea project' do
let(:api_root) { 'https://try.gitea.io/api/v1' }
let(:repo_root) { 'https://try.gitea.io' }
+
subject { described_class.new(project) }
before do
diff --git a/spec/lib/gitlab/legacy_github_import/issuable_formatter_spec.rb b/spec/lib/gitlab/legacy_github_import/issuable_formatter_spec.rb
index 3b5d8945344..f5bfc379e89 100644
--- a/spec/lib/gitlab/legacy_github_import/issuable_formatter_spec.rb
+++ b/spec/lib/gitlab/legacy_github_import/issuable_formatter_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::LegacyGithubImport::IssuableFormatter do
diff --git a/spec/lib/gitlab/legacy_github_import/issue_formatter_spec.rb b/spec/lib/gitlab/legacy_github_import/issue_formatter_spec.rb
index 1a4d5dbfb70..9a7a34afbe7 100644
--- a/spec/lib/gitlab/legacy_github_import/issue_formatter_spec.rb
+++ b/spec/lib/gitlab/legacy_github_import/issue_formatter_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::LegacyGithubImport::IssueFormatter do
diff --git a/spec/lib/gitlab/legacy_github_import/label_formatter_spec.rb b/spec/lib/gitlab/legacy_github_import/label_formatter_spec.rb
index 0d1d04f1bf6..e56e2772f6a 100644
--- a/spec/lib/gitlab/legacy_github_import/label_formatter_spec.rb
+++ b/spec/lib/gitlab/legacy_github_import/label_formatter_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::LegacyGithubImport::LabelFormatter do
diff --git a/spec/lib/gitlab/legacy_github_import/milestone_formatter_spec.rb b/spec/lib/gitlab/legacy_github_import/milestone_formatter_spec.rb
index 1db4bbb568c..f5d71888ac9 100644
--- a/spec/lib/gitlab/legacy_github_import/milestone_formatter_spec.rb
+++ b/spec/lib/gitlab/legacy_github_import/milestone_formatter_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::LegacyGithubImport::MilestoneFormatter do
@@ -87,6 +89,7 @@ describe Gitlab::LegacyGithubImport::MilestoneFormatter do
context 'when importing a Gitea project' do
let(:iid_attr) { :id }
+
before do
project.update(import_type: 'gitea')
end
diff --git a/spec/lib/gitlab/legacy_github_import/project_creator_spec.rb b/spec/lib/gitlab/legacy_github_import/project_creator_spec.rb
index 8675d8691c8..b0687474c80 100644
--- a/spec/lib/gitlab/legacy_github_import/project_creator_spec.rb
+++ b/spec/lib/gitlab/legacy_github_import/project_creator_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::LegacyGithubImport::ProjectCreator do
diff --git a/spec/lib/gitlab/legacy_github_import/pull_request_formatter_spec.rb b/spec/lib/gitlab/legacy_github_import/pull_request_formatter_spec.rb
index 267a41e3f32..622210508b9 100644
--- a/spec/lib/gitlab/legacy_github_import/pull_request_formatter_spec.rb
+++ b/spec/lib/gitlab/legacy_github_import/pull_request_formatter_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::LegacyGithubImport::PullRequestFormatter do
diff --git a/spec/lib/gitlab/lets_encrypt/client_spec.rb b/spec/lib/gitlab/lets_encrypt/client_spec.rb
index cbb862cb0c9..e86de04b5cf 100644
--- a/spec/lib/gitlab/lets_encrypt/client_spec.rb
+++ b/spec/lib/gitlab/lets_encrypt/client_spec.rb
@@ -86,6 +86,7 @@ describe ::Gitlab::LetsEncrypt::Client do
describe '#load_order' do
let(:url) { 'https://example.com/order' }
+
subject { client.load_order(url) }
before do
@@ -102,6 +103,7 @@ describe ::Gitlab::LetsEncrypt::Client do
describe '#load_challenge' do
let(:url) { 'https://example.com/challenge' }
+
subject { client.load_challenge(url) }
before do
diff --git a/spec/lib/gitlab/mail_room/mail_room_spec.rb b/spec/lib/gitlab/mail_room/mail_room_spec.rb
new file mode 100644
index 00000000000..cb3e214d38b
--- /dev/null
+++ b/spec/lib/gitlab/mail_room/mail_room_spec.rb
@@ -0,0 +1,106 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::MailRoom do
+ let(:default_port) { 143 }
+ let(:default_config) do
+ {
+ enabled: false,
+ port: default_port,
+ ssl: false,
+ start_tls: false,
+ mailbox: 'inbox',
+ idle_timeout: 60,
+ log_path: Rails.root.join('log', 'mail_room_json.log').to_s
+ }
+ end
+
+ before do
+ described_class.reset_config!
+ allow(File).to receive(:exist?).and_return true
+ end
+
+ describe '#config' do
+ context 'if the yml file cannot be found' do
+ before do
+ allow(File).to receive(:exist?).and_return false
+ end
+
+ it 'returns an empty hash' do
+ expect(described_class.config).to be_empty
+ end
+ end
+
+ before do
+ allow(described_class).to receive(:load_from_yaml).and_return(default_config)
+ end
+
+ it 'sets up config properly' do
+ expected_result = default_config
+
+ expect(described_class.config).to match expected_result
+ end
+
+ context 'when a config value is missing from the yml file' do
+ it 'overwrites missing values with the default' do
+ stub_config(port: nil)
+
+ expect(described_class.config[:port]).to eq default_port
+ end
+ end
+
+ describe 'setting up redis settings' do
+ let(:fake_redis_queues) { double(url: "localhost", sentinels: "yes, them", sentinels?: true) }
+
+ before do
+ allow(Gitlab::Redis::Queues).to receive(:new).and_return(fake_redis_queues)
+ end
+
+ target_proc = proc { described_class.config[:redis_url] }
+
+ it_behaves_like 'only truthy if both enabled and address are truthy', target_proc
+ end
+
+ describe 'setting up the log path' do
+ context 'if the log path is a relative path' do
+ it 'expands the log path to an absolute value' do
+ stub_config(log_path: 'tiny_log.log')
+
+ new_path = Pathname.new(described_class.config[:log_path])
+ expect(new_path.absolute?).to be_truthy
+ end
+ end
+
+ context 'if the log path is absolute path' do
+ it 'leaves the path as-is' do
+ new_path = '/dev/null'
+ stub_config(log_path: new_path)
+
+ expect(described_class.config[:log_path]).to eq new_path
+ end
+ end
+ end
+ end
+
+ describe '#enabled?' do
+ target_proc = proc { described_class.enabled? }
+
+ it_behaves_like 'only truthy if both enabled and address are truthy', target_proc
+ end
+
+ describe '#reset_config?' do
+ it 'resets config' do
+ described_class.instance_variable_set(:@config, { some_stuff: 'hooray' })
+
+ described_class.reset_config!
+
+ expect(described_class.instance_variable_get(:@config)).to be_nil
+ end
+ end
+
+ def stub_config(override_values)
+ modified_config = default_config.merge(override_values)
+ allow(described_class).to receive(:load_from_yaml).and_return(modified_config)
+ end
+end
diff --git a/spec/lib/gitlab/markdown_cache/active_record/extension_spec.rb b/spec/lib/gitlab/markdown_cache/active_record/extension_spec.rb
index c5fc74afea5..5b6c769d6eb 100644
--- a/spec/lib/gitlab/markdown_cache/active_record/extension_spec.rb
+++ b/spec/lib/gitlab/markdown_cache/active_record/extension_spec.rb
@@ -73,11 +73,11 @@ describe Gitlab::MarkdownCache::ActiveRecord::Extension do
let(:thing) { klass.new(title: markdown, title_html: html, cached_markdown_version: cache_version) }
before do
- thing.state = 'closed'
+ thing.state_id = 2
thing.save
end
- it { expect(thing.state).to eq('closed') }
+ it { expect(thing.state_id).to eq(2) }
it { expect(thing.title).to eq(markdown) }
it { expect(thing.title_html).to eq(html) }
it { expect(thing.cached_markdown_version).to eq(cache_version) }
@@ -126,6 +126,7 @@ describe Gitlab::MarkdownCache::ActiveRecord::Extension do
describe '#cached_html_up_to_date?' do
let(:thing) { klass.create(title: updated_markdown, title_html: html, cached_markdown_version: nil) }
+
subject { thing.cached_html_up_to_date?(:title) }
it 'returns false if markdown has been changed but html has not' do
diff --git a/spec/lib/gitlab/metrics/dashboard/service_selector_spec.rb b/spec/lib/gitlab/metrics/dashboard/service_selector_spec.rb
index 0d4562f78f1..e0c8133994b 100644
--- a/spec/lib/gitlab/metrics/dashboard/service_selector_spec.rb
+++ b/spec/lib/gitlab/metrics/dashboard/service_selector_spec.rb
@@ -22,6 +22,12 @@ describe Gitlab::Metrics::Dashboard::ServiceSelector do
it { is_expected.to be Metrics::Dashboard::SystemDashboardService }
end
+
+ context 'when the path is for the pod dashboard' do
+ let(:arguments) { { dashboard_path: pod_dashboard_path } }
+
+ it { is_expected.to be Metrics::Dashboard::PodDashboardService }
+ end
end
context 'when the embedded flag is provided' do
diff --git a/spec/lib/gitlab/metrics/instrumentation_spec.rb b/spec/lib/gitlab/metrics/instrumentation_spec.rb
index 0e2f274f157..bf84a476df9 100644
--- a/spec/lib/gitlab/metrics/instrumentation_spec.rb
+++ b/spec/lib/gitlab/metrics/instrumentation_spec.rb
@@ -87,7 +87,9 @@ describe Gitlab::Metrics::Instrumentation do
allow(described_class).to receive(:transaction)
.and_return(transaction)
- expect_any_instance_of(Gitlab::Metrics::MethodCall).to receive(:measure)
+ expect_next_instance_of(Gitlab::Metrics::MethodCall) do |instance|
+ expect(instance).to receive(:measure)
+ end
@dummy.foo
end
@@ -165,7 +167,9 @@ describe Gitlab::Metrics::Instrumentation do
allow(described_class).to receive(:transaction)
.and_return(transaction)
- expect_any_instance_of(Gitlab::Metrics::MethodCall).to receive(:measure)
+ expect_next_instance_of(Gitlab::Metrics::MethodCall) do |instance|
+ expect(instance).to receive(:measure)
+ end
@dummy.new.bar
end
diff --git a/spec/lib/gitlab/metrics/requests_rack_middleware_spec.rb b/spec/lib/gitlab/metrics/requests_rack_middleware_spec.rb
index 335670278c4..1fc6fdcf622 100644
--- a/spec/lib/gitlab/metrics/requests_rack_middleware_spec.rb
+++ b/spec/lib/gitlab/metrics/requests_rack_middleware_spec.rb
@@ -4,6 +4,7 @@ require 'spec_helper'
describe Gitlab::Metrics::RequestsRackMiddleware do
let(:app) { double('app') }
+
subject { described_class.new(app) }
describe '#call' do
diff --git a/spec/lib/gitlab/metrics/samplers/unicorn_sampler_spec.rb b/spec/lib/gitlab/metrics/samplers/unicorn_sampler_spec.rb
index cdfd95e3885..a64aae73d43 100644
--- a/spec/lib/gitlab/metrics/samplers/unicorn_sampler_spec.rb
+++ b/spec/lib/gitlab/metrics/samplers/unicorn_sampler_spec.rb
@@ -52,6 +52,7 @@ describe Gitlab::Metrics::Samplers::UnicornSampler do
context 'unicorn listens on tcp sockets' do
let(:tcp_socket_address) { '0.0.0.0:8080' }
let(:tcp_sockets) { [tcp_socket_address] }
+
before do
allow(unicorn).to receive(:listener_names).and_return(tcp_sockets)
end
diff --git a/spec/lib/gitlab/middleware/go_spec.rb b/spec/lib/gitlab/middleware/go_spec.rb
index 16595102375..2b90035d148 100644
--- a/spec/lib/gitlab/middleware/go_spec.rb
+++ b/spec/lib/gitlab/middleware/go_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe Gitlab::Middleware::Go do
@@ -25,18 +27,18 @@ describe Gitlab::Middleware::Go do
describe 'when go-get=1' do
before do
env['QUERY_STRING'] = 'go-get=1'
- env['PATH_INFO'] = "/#{path}"
+ env['PATH_INFO'] = +"/#{path}"
end
shared_examples 'go-get=1' do |enabled_protocol:|
context 'with simple 2-segment project path' do
- let!(:project) { create(:project, :private) }
+ let!(:project) { create(:project, :private, :repository) }
context 'with subpackages' do
let(:path) { "#{project.full_path}/subpackage" }
it 'returns the full project path' do
- expect_response_with_path(go, enabled_protocol, project.full_path)
+ expect_response_with_path(go, enabled_protocol, project.full_path, project.default_branch)
end
end
@@ -44,19 +46,19 @@ describe Gitlab::Middleware::Go do
let(:path) { project.full_path }
it 'returns the full project path' do
- expect_response_with_path(go, enabled_protocol, project.full_path)
+ expect_response_with_path(go, enabled_protocol, project.full_path, project.default_branch)
end
end
end
context 'with a nested project path' do
let(:group) { create(:group, :nested) }
- let!(:project) { create(:project, :public, namespace: group) }
+ let!(:project) { create(:project, :public, :repository, namespace: group) }
shared_examples 'a nested project' do
context 'when the project is public' do
it 'returns the full project path' do
- expect_response_with_path(go, enabled_protocol, project.full_path)
+ expect_response_with_path(go, enabled_protocol, project.full_path, project.default_branch)
end
end
@@ -67,7 +69,7 @@ describe Gitlab::Middleware::Go do
shared_examples 'unauthorized' do
it 'returns the 2-segment group path' do
- expect_response_with_path(go, enabled_protocol, group.full_path)
+ expect_response_with_path(go, enabled_protocol, group.full_path, project.default_branch)
end
end
@@ -85,7 +87,7 @@ describe Gitlab::Middleware::Go do
shared_examples 'authenticated' do
context 'with access to the project' do
it 'returns the full project path' do
- expect_response_with_path(go, enabled_protocol, project.full_path)
+ expect_response_with_path(go, enabled_protocol, project.full_path, project.default_branch)
end
end
@@ -160,6 +162,36 @@ describe Gitlab::Middleware::Go do
go
end
end
+
+ context 'with a public project without a repository' do
+ let!(:project) { create(:project, :public) }
+ let(:path) { project.full_path }
+
+ it 'returns 404' do
+ response = go
+ expect(response[0]).to eq(404)
+ expect(response[1]['Content-Type']).to eq('text/html')
+ expected_body = %{<html><body>go get #{Gitlab.config.gitlab.url}/#{project.full_path}</body></html>}
+ expect(response[2].body).to eq([expected_body])
+ end
+ end
+
+ context 'with a non-standard head' do
+ let(:user) { create(:user) }
+ let!(:project) { create(:project, :public, :repository) }
+ let(:path) { project.full_path }
+ let(:default_branch) { 'default_branch' }
+
+ before do
+ project.add_maintainer(user)
+ project.repository.add_branch(user, default_branch, 'master')
+ project.change_head(default_branch)
+ end
+
+ it 'returns the full project path' do
+ expect_response_with_path(go, enabled_protocol, project.full_path, default_branch)
+ end
+ end
end
context 'with SSH disabled' do
@@ -199,16 +231,17 @@ describe Gitlab::Middleware::Go do
middleware.call(env)
end
- def expect_response_with_path(response, protocol, path)
+ def expect_response_with_path(response, protocol, path, branch)
repository_url = case protocol
when :ssh
"ssh://#{Gitlab.config.gitlab.user}@#{Gitlab.config.gitlab.host}/#{path}.git"
when :http, nil
"http://#{Gitlab.config.gitlab.host}/#{path}.git"
end
+ project_url = "http://#{Gitlab.config.gitlab.host}/#{path}"
expect(response[0]).to eq(200)
expect(response[1]['Content-Type']).to eq('text/html')
- expected_body = %{<html><head><meta name="go-import" content="#{Gitlab.config.gitlab.host}/#{path} git #{repository_url}" /></head></html>}
+ expected_body = %{<html><head><meta name="go-import" content="#{Gitlab.config.gitlab.host}/#{path} git #{repository_url}" /><meta name="go-source" content="#{Gitlab.config.gitlab.host}/#{path} #{project_url} #{project_url}/tree/#{branch}{/dir} #{project_url}/blob/#{branch}{/dir}/{file}#L{line}" /></head><body>go get #{Gitlab.config.gitlab.url}/#{path}</body></html>}
expect(response[2].body).to eq([expected_body])
end
end
diff --git a/spec/lib/gitlab/pages_spec.rb b/spec/lib/gitlab/pages_spec.rb
index affa2ebab2a..aecbc74385e 100644
--- a/spec/lib/gitlab/pages_spec.rb
+++ b/spec/lib/gitlab/pages_spec.rb
@@ -3,10 +3,10 @@
require 'spec_helper'
describe Gitlab::Pages do
- let(:pages_shared_secret) { SecureRandom.random_bytes(Gitlab::Pages::SECRET_LENGTH) }
+ let(:pages_secret) { SecureRandom.random_bytes(Gitlab::Pages::SECRET_LENGTH) }
before do
- allow(described_class).to receive(:secret).and_return(pages_shared_secret)
+ allow(described_class).to receive(:secret).and_return(pages_secret)
end
describe '.verify_api_request' do
diff --git a/spec/lib/gitlab/pagination/keyset/page_spec.rb b/spec/lib/gitlab/pagination/keyset/page_spec.rb
new file mode 100644
index 00000000000..5c03224c05a
--- /dev/null
+++ b/spec/lib/gitlab/pagination/keyset/page_spec.rb
@@ -0,0 +1,66 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::Pagination::Keyset::Page do
+ describe '#per_page' do
+ it 'limits to a maximum of 100 records per page' do
+ per_page = described_class.new(per_page: 101).per_page
+
+ expect(per_page).to eq(described_class::MAXIMUM_PAGE_SIZE)
+ end
+
+ it 'uses default value when given 0' do
+ per_page = described_class.new(per_page: 0).per_page
+
+ expect(per_page).to eq(described_class::DEFAULT_PAGE_SIZE)
+ end
+
+ it 'uses default value when given negative values' do
+ per_page = described_class.new(per_page: -1).per_page
+
+ expect(per_page).to eq(described_class::DEFAULT_PAGE_SIZE)
+ end
+
+ it 'uses the given value if it is within range' do
+ per_page = described_class.new(per_page: 10).per_page
+
+ expect(per_page).to eq(10)
+ end
+ end
+
+ describe '#next' do
+ let(:page) { described_class.new(order_by: order_by, lower_bounds: lower_bounds, per_page: per_page, end_reached: end_reached) }
+ subject { page.next(new_lower_bounds, new_end_reached) }
+
+ let(:order_by) { { id: :desc } }
+ let(:lower_bounds) { { id: 42 } }
+ let(:per_page) { 10 }
+ let(:end_reached) { false }
+
+ let(:new_lower_bounds) { { id: 21 } }
+ let(:new_end_reached) { true }
+
+ it 'copies over order_by' do
+ expect(subject.order_by).to eq(page.order_by)
+ end
+
+ it 'copies over per_page' do
+ expect(subject.per_page).to eq(page.per_page)
+ end
+
+ it 'dups the instance' do
+ expect(subject).not_to eq(page)
+ end
+
+ it 'sets lower_bounds only on new instance' do
+ expect(subject.lower_bounds).to eq(new_lower_bounds)
+ expect(page.lower_bounds).to eq(lower_bounds)
+ end
+
+ it 'sets end_reached only on new instance' do
+ expect(subject.end_reached?).to eq(new_end_reached)
+ expect(page.end_reached?).to eq(end_reached)
+ end
+ end
+end
diff --git a/spec/lib/gitlab/pagination/keyset/pager_spec.rb b/spec/lib/gitlab/pagination/keyset/pager_spec.rb
new file mode 100644
index 00000000000..6d23fe2adcc
--- /dev/null
+++ b/spec/lib/gitlab/pagination/keyset/pager_spec.rb
@@ -0,0 +1,68 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::Pagination::Keyset::Pager do
+ let(:relation) { Project.all.order(id: :asc) }
+ let(:request) { double('request', page: page, apply_headers: nil) }
+ let(:page) { Gitlab::Pagination::Keyset::Page.new(order_by: { id: :asc }, per_page: 3) }
+ let(:next_page) { double('next page') }
+
+ before_all do
+ create_list(:project, 7)
+ end
+
+ describe '#paginate' do
+ subject { described_class.new(request).paginate(relation) }
+
+ it 'loads the result relation only once' do
+ expect do
+ subject
+ end.not_to exceed_query_limit(1)
+ end
+
+ it 'passes information about next page to request' do
+ lower_bounds = relation.limit(page.per_page).last.slice(:id)
+ expect(page).to receive(:next).with(lower_bounds, false).and_return(next_page)
+ expect(request).to receive(:apply_headers).with(next_page)
+
+ subject
+ end
+
+ context 'when retrieving the last page' do
+ let(:relation) { Project.where('id > ?', Project.maximum(:id) - page.per_page).order(id: :asc) }
+
+ it 'indicates this is the last page' do
+ expect(request).to receive(:apply_headers) do |next_page|
+ expect(next_page.end_reached?).to be_truthy
+ end
+
+ subject
+ end
+ end
+
+ context 'when retrieving an empty page' do
+ let(:relation) { Project.where('id > ?', Project.maximum(:id) + 1).order(id: :asc) }
+
+ it 'indicates this is the last page' do
+ expect(request).to receive(:apply_headers) do |next_page|
+ expect(next_page.end_reached?).to be_truthy
+ end
+
+ subject
+ end
+ end
+
+ it 'returns an array with the loaded records' do
+ expect(subject).to eq(relation.limit(page.per_page).to_a)
+ end
+
+ context 'validating the order clause' do
+ let(:page) { Gitlab::Pagination::Keyset::Page.new(order_by: { created_at: :asc }, per_page: 3) }
+
+ it 'raises an error if has a different order clause than the page' do
+ expect { subject }.to raise_error(ArgumentError, /order_by does not match/)
+ end
+ end
+ end
+end
diff --git a/spec/lib/gitlab/pagination/keyset/request_context_spec.rb b/spec/lib/gitlab/pagination/keyset/request_context_spec.rb
new file mode 100644
index 00000000000..344ef90efa3
--- /dev/null
+++ b/spec/lib/gitlab/pagination/keyset/request_context_spec.rb
@@ -0,0 +1,115 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::Pagination::Keyset::RequestContext do
+ let(:request) { double('request', params: params) }
+
+ describe '#page' do
+ subject { described_class.new(request).page }
+
+ context 'with only order_by given' do
+ let(:params) { { order_by: :id } }
+
+ it 'extracts order_by/sorting information' do
+ page = subject
+
+ expect(page.order_by).to eq(id: :desc)
+ end
+ end
+
+ context 'with order_by and sort given' do
+ let(:params) { { order_by: :created_at, sort: :desc } }
+
+ it 'extracts order_by/sorting information and adds tie breaker' do
+ page = subject
+
+ expect(page.order_by).to eq(created_at: :desc, id: :desc)
+ end
+ end
+
+ context 'with no order_by information given' do
+ let(:params) { {} }
+
+ it 'defaults to tie breaker' do
+ page = subject
+
+ expect(page.order_by).to eq({ id: :desc })
+ end
+ end
+
+ context 'with per_page params given' do
+ let(:params) { { per_page: 10 } }
+
+ it 'extracts per_page information' do
+ page = subject
+
+ expect(page.per_page).to eq(params[:per_page])
+ end
+ end
+ end
+
+ describe '#apply_headers' do
+ let(:request) { double('request', url: "http://#{Gitlab.config.gitlab.host}/api/v4/projects?foo=bar") }
+ let(:params) { { foo: 'bar' } }
+ let(:request_context) { double('request context', params: params, request: request) }
+ let(:next_page) { double('next page', order_by: { id: :asc }, lower_bounds: { id: 42 }, end_reached?: false) }
+
+ subject { described_class.new(request_context).apply_headers(next_page) }
+
+ it 'sets Links header with same host/path as the original request' do
+ orig_uri = URI.parse(request_context.request.url)
+
+ expect(request_context).to receive(:header) do |name, header|
+ expect(name).to eq('Links')
+
+ first_link, _ = /<([^>]+)>; rel="next"/.match(header).captures
+
+ uri = URI.parse(first_link)
+
+ expect(uri.host).to eq(orig_uri.host)
+ expect(uri.path).to eq(orig_uri.path)
+ end
+
+ subject
+ end
+
+ it 'sets Links header with a link to the next page' do
+ orig_uri = URI.parse(request_context.request.url)
+
+ expect(request_context).to receive(:header) do |name, header|
+ expect(name).to eq('Links')
+
+ first_link, _ = /<([^>]+)>; rel="next"/.match(header).captures
+
+ query = CGI.parse(URI.parse(first_link).query)
+
+ expect(query.except('id_after')).to eq(CGI.parse(orig_uri.query).except('id_after'))
+ expect(query['id_after']).to eq(['42'])
+ end
+
+ subject
+ end
+
+ context 'with descending order' do
+ let(:next_page) { double('next page', order_by: { id: :desc }, lower_bounds: { id: 42 }, end_reached?: false) }
+
+ it 'sets Links header with a link to the next page' do
+ orig_uri = URI.parse(request_context.request.url)
+
+ expect(request_context).to receive(:header) do |name, header|
+ expect(name).to eq('Links')
+
+ first_link, _ = /<([^>]+)>; rel="next"/.match(header).captures
+
+ query = CGI.parse(URI.parse(first_link).query)
+
+ expect(query.except('id_before')).to eq(CGI.parse(orig_uri.query).except('id_before'))
+ expect(query['id_before']).to eq(['42'])
+ end
+
+ subject
+ end
+ end
+ end
+end
diff --git a/spec/lib/gitlab/pagination/keyset_spec.rb b/spec/lib/gitlab/pagination/keyset_spec.rb
new file mode 100644
index 00000000000..5c2576d7b45
--- /dev/null
+++ b/spec/lib/gitlab/pagination/keyset_spec.rb
@@ -0,0 +1,62 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::Pagination::Keyset do
+ describe '.paginate' do
+ subject { described_class.paginate(request_context, relation) }
+
+ let(:request_context) { double }
+ let(:relation) { double }
+ let(:pager) { double }
+ let(:result) { double }
+
+ it 'uses Pager to paginate the relation' do
+ expect(Gitlab::Pagination::Keyset::Pager).to receive(:new).with(request_context).and_return(pager)
+ expect(pager).to receive(:paginate).with(relation).and_return(result)
+
+ expect(subject).to eq(result)
+ end
+ end
+
+ describe '.available?' do
+ subject { described_class }
+
+ let(:request_context) { double("request context", page: page)}
+ let(:page) { double("page", order_by: order_by) }
+
+ shared_examples_for 'keyset pagination is available' do
+ it 'returns true for Project' do
+ expect(subject.available?(request_context, Project.all)).to be_truthy
+ end
+
+ it 'return false for other types of relations' do
+ expect(subject.available?(request_context, User.all)).to be_falsey
+ end
+ end
+
+ context 'with order-by id asc' do
+ let(:order_by) { { id: :asc } }
+
+ it_behaves_like 'keyset pagination is available'
+ end
+
+ context 'with order-by id desc' do
+ let(:order_by) { { id: :desc } }
+
+ it_behaves_like 'keyset pagination is available'
+ end
+
+ context 'with other order-by columns' do
+ let(:order_by) { { created_at: :desc, id: :desc } }
+
+ it 'returns false for Project' do
+ expect(subject.available?(request_context, Project.all)).to be_falsey
+ end
+
+ it 'return false for other types of relations' do
+ expect(subject.available?(request_context, User.all)).to be_falsey
+ end
+ end
+ end
+end
diff --git a/spec/lib/gitlab/phabricator_import/cache/map_spec.rb b/spec/lib/gitlab/phabricator_import/cache/map_spec.rb
index b6629fad453..14a5d40d445 100644
--- a/spec/lib/gitlab/phabricator_import/cache/map_spec.rb
+++ b/spec/lib/gitlab/phabricator_import/cache/map_spec.rb
@@ -5,6 +5,7 @@ require 'spec_helper'
describe Gitlab::PhabricatorImport::Cache::Map, :clean_gitlab_redis_cache do
set(:project) { create(:project) }
let(:redis) { Gitlab::Redis::Cache }
+
subject(:map) { described_class.new(project) }
describe '#get_gitlab_model' do
diff --git a/spec/lib/gitlab/phabricator_import/importer_spec.rb b/spec/lib/gitlab/phabricator_import/importer_spec.rb
index 99a6e4dad6b..2715b785379 100644
--- a/spec/lib/gitlab/phabricator_import/importer_spec.rb
+++ b/spec/lib/gitlab/phabricator_import/importer_spec.rb
@@ -11,6 +11,7 @@ describe Gitlab::PhabricatorImport::Importer do
describe '#execute' do
let(:project) { create(:project, :import_scheduled) }
+
subject(:importer) { described_class.new(project) }
it 'sets a custom jid that will be kept up to date' do
diff --git a/spec/lib/gitlab/phabricator_import/project_creator_spec.rb b/spec/lib/gitlab/phabricator_import/project_creator_spec.rb
index fd17284eea2..0b6a71290ed 100644
--- a/spec/lib/gitlab/phabricator_import/project_creator_spec.rb
+++ b/spec/lib/gitlab/phabricator_import/project_creator_spec.rb
@@ -8,6 +8,7 @@ describe Gitlab::PhabricatorImport::ProjectCreator do
phabricator_server_url: 'http://phab.example.com',
api_token: 'the-token' }
end
+
subject(:creator) { described_class.new(user, params) }
describe '#execute' do
diff --git a/spec/lib/gitlab/phabricator_import/user_finder_spec.rb b/spec/lib/gitlab/phabricator_import/user_finder_spec.rb
index 918ff28c8f5..14a00deeb16 100644
--- a/spec/lib/gitlab/phabricator_import/user_finder_spec.rb
+++ b/spec/lib/gitlab/phabricator_import/user_finder_spec.rb
@@ -4,6 +4,7 @@ require 'spec_helper'
describe Gitlab::PhabricatorImport::UserFinder, :clean_gitlab_redis_cache do
let(:project) { create(:project, namespace: create(:group)) }
+
subject(:finder) { described_class.new(project, ['first-phid', 'second-phid']) }
before do
diff --git a/spec/lib/gitlab/project_search_results_spec.rb b/spec/lib/gitlab/project_search_results_spec.rb
index 99078f19361..6f4844d4543 100644
--- a/spec/lib/gitlab/project_search_results_spec.rb
+++ b/spec/lib/gitlab/project_search_results_spec.rb
@@ -53,6 +53,7 @@ describe Gitlab::ProjectSearchResults do
context "when #{entity_type} is disabled" do
let(:project) { disabled_project }
+
it "hides #{blob_kind} from members" do
project.add_reporter(user)
diff --git a/spec/lib/gitlab/project_template_spec.rb b/spec/lib/gitlab/project_template_spec.rb
index 5559b1e4291..a2e3e2146f3 100644
--- a/spec/lib/gitlab/project_template_spec.rb
+++ b/spec/lib/gitlab/project_template_spec.rb
@@ -23,6 +23,7 @@ describe Gitlab::ProjectTemplate do
described_class.new('nfplainhtml', 'Netlify/Plain HTML', _('A plain HTML site that uses Netlify for CI/CD instead of GitLab, but still with all the other great GitLab features.'), 'https://gitlab.com/pages/nfplain-html'),
described_class.new('nfgitbook', 'Netlify/GitBook', _('A GitBook site that uses Netlify for CI/CD instead of GitLab, but still with all the other great GitLab features.'), 'https://gitlab.com/pages/nfgitbook'),
described_class.new('nfhexo', 'Netlify/Hexo', _('A Hexo site that uses Netlify for CI/CD instead of GitLab, but still with all the other great GitLab features.'), 'https://gitlab.com/pages/nfhexo'),
+ described_class.new('salesforcedx', 'SalesforceDX', _('A project boilerplate for Salesforce App development with Salesforce Developer tools.'), 'https://gitlab.com/gitlab-org/project-templates/salesforcedx'),
described_class.new('serverless_framework', 'Serverless Framework/JS', _('A basic page and serverless function that uses AWS Lambda, AWS API Gateway, and GitLab Pages'), 'https://gitlab.com/gitlab-org/project-templates/serverless-framework', 'illustrations/logos/serverless_framework.svg')
]
diff --git a/spec/lib/gitlab/prometheus/queries/deployment_query_spec.rb b/spec/lib/gitlab/prometheus/queries/deployment_query_spec.rb
index 0ad2de218fe..d82b7665f85 100644
--- a/spec/lib/gitlab/prometheus/queries/deployment_query_spec.rb
+++ b/spec/lib/gitlab/prometheus/queries/deployment_query_spec.rb
@@ -5,8 +5,8 @@ require 'spec_helper'
describe Gitlab::Prometheus::Queries::DeploymentQuery do
let(:environment) { create(:environment, slug: 'environment-slug') }
let(:deployment) { create(:deployment, environment: environment) }
-
let(:client) { double('prometheus_client') }
+
subject { described_class.new(client) }
around do |example|
diff --git a/spec/lib/gitlab/prometheus/queries/knative_invocation_query_spec.rb b/spec/lib/gitlab/prometheus/queries/knative_invocation_query_spec.rb
index 6361893c53c..fa2dccc7c92 100644
--- a/spec/lib/gitlab/prometheus/queries/knative_invocation_query_spec.rb
+++ b/spec/lib/gitlab/prometheus/queries/knative_invocation_query_spec.rb
@@ -7,8 +7,8 @@ describe Gitlab::Prometheus::Queries::KnativeInvocationQuery do
let(:project) { create(:project) }
let(:serverless_func) { Serverless::Function.new(project, 'test-name', 'test-ns') }
-
let(:client) { double('prometheus_client') }
+
subject { described_class.new(client) }
context 'verify queries' do
@@ -16,12 +16,12 @@ describe Gitlab::Prometheus::Queries::KnativeInvocationQuery do
create(:prometheus_metric,
:common,
identifier: :system_metrics_knative_function_invocation_count,
- query: 'sum(ceil(rate(istio_requests_total{destination_service_namespace="%{kube_namespace}", destination_app=~"%{function_name}.*"}[1m])*60))')
+ query: 'sum(ceil(rate(istio_requests_total{destination_service_namespace="%{kube_namespace}", destination_service=~"%{function_name}.*"}[1m])*60))')
end
it 'has the query, but no data' do
expect(client).to receive(:query_range).with(
- 'sum(ceil(rate(istio_requests_total{destination_service_namespace="test-ns", destination_app=~"test-name.*"}[1m])*60))',
+ 'sum(ceil(rate(istio_requests_total{destination_service_namespace="test-ns", destination_service=~"test-name.*"}[1m])*60))',
hash_including(:start, :stop)
)
diff --git a/spec/lib/gitlab/prometheus/query_variables_spec.rb b/spec/lib/gitlab/prometheus/query_variables_spec.rb
index 3f9b245a3fb..849265de513 100644
--- a/spec/lib/gitlab/prometheus/query_variables_spec.rb
+++ b/spec/lib/gitlab/prometheus/query_variables_spec.rb
@@ -14,7 +14,7 @@ describe Gitlab::Prometheus::QueryVariables do
it do
is_expected.to include(environment_filter:
- %{container_name!="POD",environment="#{slug}"})
+ %Q[container_name!="POD",environment="#{slug}"])
end
context 'without deployment platform' do
diff --git a/spec/lib/gitlab/prometheus_client_spec.rb b/spec/lib/gitlab/prometheus_client_spec.rb
index 86a1c14ed3f..4f9315e28e9 100644
--- a/spec/lib/gitlab/prometheus_client_spec.rb
+++ b/spec/lib/gitlab/prometheus_client_spec.rb
@@ -327,6 +327,7 @@ describe Gitlab::PrometheusClient do
context "without response code" do
let(:response_error) { Gitlab::HTTP::ResponseError }
+
it 'raises PrometheusClient::Error' do
expect { subject.proxy('query', { query: prometheus_query }) }.to(
raise_error(Gitlab::PrometheusClient::Error, 'Network connection error')
diff --git a/spec/lib/gitlab/puma_logging/json_formatter_spec.rb b/spec/lib/gitlab/puma_logging/json_formatter_spec.rb
new file mode 100644
index 00000000000..f7f5b99d5e5
--- /dev/null
+++ b/spec/lib/gitlab/puma_logging/json_formatter_spec.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::PumaLogging::JSONFormatter do
+ it "generate json format with timestamp and pid" do
+ Timecop.freeze( Time.utc(2019, 12, 04, 9, 10, 11, 123456)) do
+ expect(subject.call('log message')).to eq "{\"timestamp\":\"2019-12-04T09:10:11.123Z\",\"pid\":#{Process.pid},\"message\":\"log message\"}"
+ end
+ end
+end
diff --git a/spec/lib/gitlab/query_limiting/middleware_spec.rb b/spec/lib/gitlab/query_limiting/middleware_spec.rb
index fb1c30118c2..f996ea38bb9 100644
--- a/spec/lib/gitlab/query_limiting/middleware_spec.rb
+++ b/spec/lib/gitlab/query_limiting/middleware_spec.rb
@@ -7,8 +7,9 @@ describe Gitlab::QueryLimiting::Middleware do
it 'runs the application with query limiting in place' do
middleware = described_class.new(-> (env) { env })
- expect_any_instance_of(Gitlab::QueryLimiting::Transaction)
- .to receive(:act_upon_results)
+ expect_next_instance_of(Gitlab::QueryLimiting::Transaction) do |instance|
+ expect(instance).to receive(:act_upon_results)
+ end
expect(middleware.call({ number: 10 }))
.to eq({ number: 10 })
diff --git a/spec/lib/gitlab/quick_actions/substitution_definition_spec.rb b/spec/lib/gitlab/quick_actions/substitution_definition_spec.rb
index e4f25bc35a9..d0bb032f776 100644
--- a/spec/lib/gitlab/quick_actions/substitution_definition_spec.rb
+++ b/spec/lib/gitlab/quick_actions/substitution_definition_spec.rb
@@ -9,6 +9,7 @@ Hello! Let's do this!
/sub_name I like this stuff
EOF
end
+
subject do
described_class.new(:sub_name, action_block: proc { |text| "#{text} foo" })
end
diff --git a/spec/lib/gitlab/regex_spec.rb b/spec/lib/gitlab/regex_spec.rb
index 1397add9f5a..c580b46cf8d 100644
--- a/spec/lib/gitlab/regex_spec.rb
+++ b/spec/lib/gitlab/regex_spec.rb
@@ -61,6 +61,12 @@ describe Gitlab::Regex do
it { is_expected.to match('my/image') }
it { is_expected.to match('my/awesome/image-1') }
it { is_expected.to match('my/awesome/image.test') }
+ it { is_expected.to match('my/awesome/image--test') }
+ # docker distribution allows for infinite `-`
+ # https://github.com/docker/distribution/blob/master/reference/regexp.go#L13
+ # but we have a range of 0,10 to add a reasonable limit.
+ it { is_expected.not_to match('my/image-----------test') }
+ it { is_expected.not_to match('my/image-.test') }
it { is_expected.not_to match('.my/image') }
it { is_expected.not_to match('my/image.') }
end
diff --git a/spec/lib/gitlab/request_context_spec.rb b/spec/lib/gitlab/request_context_spec.rb
index cde12d4b310..87b8029de2e 100644
--- a/spec/lib/gitlab/request_context_spec.rb
+++ b/spec/lib/gitlab/request_context_spec.rb
@@ -43,7 +43,9 @@ describe Gitlab::RequestContext do
let(:ip) { '192.168.1.11' }
before do
- allow_any_instance_of(Rack::Request).to receive(:ip).and_return(ip)
+ allow_next_instance_of(Rack::Request) do |instance|
+ allow(instance).to receive(:ip).and_return(ip)
+ end
described_class.new(app).call(env)
end
diff --git a/spec/lib/gitlab/sanitizers/svg_spec.rb b/spec/lib/gitlab/sanitizers/svg_spec.rb
index a8c7495376d..18fa96a2914 100644
--- a/spec/lib/gitlab/sanitizers/svg_spec.rb
+++ b/spec/lib/gitlab/sanitizers/svg_spec.rb
@@ -14,7 +14,9 @@ describe Gitlab::Sanitizers::SVG do
let(:sanitized) { File.read(sanitized_svg_path) }
it 'delegates sanitization to scrubber' do
- expect_any_instance_of(Gitlab::Sanitizers::SVG::Scrubber).to receive(:scrub).at_least(:once)
+ expect_next_instance_of(Gitlab::Sanitizers::SVG::Scrubber) do |instance|
+ expect(instance).to receive(:scrub).at_least(:once)
+ end
described_class.clean(data)
end
diff --git a/spec/lib/gitlab/sentry_spec.rb b/spec/lib/gitlab/sentry_spec.rb
deleted file mode 100644
index 024ac733a07..00000000000
--- a/spec/lib/gitlab/sentry_spec.rb
+++ /dev/null
@@ -1,123 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-describe Gitlab::Sentry do
- describe '.context' do
- it 'adds the expected tags' do
- expect(described_class).to receive(:enabled?).and_return(true)
- allow(Labkit::Correlation::CorrelationId).to receive(:current_id).and_return('cid')
-
- described_class.context(nil)
-
- expect(Raven.tags_context[:locale].to_s).to eq(I18n.locale.to_s)
- expect(Raven.tags_context[Labkit::Correlation::CorrelationId::LOG_KEY.to_sym].to_s)
- .to eq('cid')
- end
- end
-
- describe '.track_exception' do
- let(:exception) { RuntimeError.new('boom') }
-
- before do
- allow(described_class).to receive(:enabled?).and_return(true)
- end
-
- it 'raises the exception if it should' do
- expect(described_class).to receive(:should_raise_for_dev?).and_return(true)
- expect { described_class.track_exception(exception) }
- .to raise_error(RuntimeError)
- end
-
- context 'when exceptions should not be raised' do
- before do
- allow(described_class).to receive(:should_raise_for_dev?).and_return(false)
- allow(Labkit::Correlation::CorrelationId).to receive(:current_id).and_return('cid')
- end
-
- it 'logs the exception with all attributes passed' do
- expected_extras = {
- some_other_info: 'info',
- issue_url: 'http://gitlab.com/gitlab-org/gitlab-foss/issues/1'
- }
-
- expected_tags = {
- correlation_id: 'cid'
- }
-
- expect(Raven).to receive(:capture_exception)
- .with(exception,
- tags: a_hash_including(expected_tags),
- extra: a_hash_including(expected_extras))
-
- described_class.track_exception(
- exception,
- issue_url: 'http://gitlab.com/gitlab-org/gitlab-foss/issues/1',
- extra: { some_other_info: 'info' }
- )
- end
-
- it 'sets the context' do
- expect(described_class).to receive(:context)
-
- described_class.track_exception(exception)
- end
- end
- end
-
- context '.track_acceptable_exception' do
- let(:exception) { RuntimeError.new('boom') }
- let(:issue_url) { 'http://gitlab.com/gitlab-org/gitlab-foss/issues/1' }
-
- before do
- allow(described_class).to receive(:enabled?).and_return(true)
- allow(Labkit::Correlation::CorrelationId).to receive(:current_id).and_return('cid')
- end
-
- it 'calls Raven.capture_exception' do
- expected_extras = {
- some_other_info: 'info',
- issue_url: issue_url
- }
-
- expected_tags = {
- correlation_id: 'cid'
- }
-
- expect(Raven).to receive(:capture_exception)
- .with(exception,
- tags: a_hash_including(expected_tags),
- extra: a_hash_including(expected_extras))
-
- described_class.track_acceptable_exception(
- exception,
- issue_url: issue_url,
- extra: { some_other_info: 'info' }
- )
- end
-
- context 'the exception implements :sentry_extra_data' do
- let(:extra_info) { { event: 'explosion', size: :massive } }
- let(:exception) { double(message: 'bang!', sentry_extra_data: extra_info) }
-
- it 'includes the extra data from the exception in the tracking information' do
- expect(Raven).to receive(:capture_exception)
- .with(exception, a_hash_including(extra: a_hash_including(extra_info)))
-
- described_class.track_acceptable_exception(exception)
- end
- end
-
- context 'the exception implements :sentry_extra_data, which returns nil' do
- let(:exception) { double(message: 'bang!', sentry_extra_data: nil) }
-
- it 'just includes the other extra info' do
- extra_info = { issue_url: issue_url }
- expect(Raven).to receive(:capture_exception)
- .with(exception, a_hash_including(extra: a_hash_including(extra_info)))
-
- described_class.track_acceptable_exception(exception, extra_info)
- end
- end
- end
-end
diff --git a/spec/lib/gitlab/sherlock/transaction_spec.rb b/spec/lib/gitlab/sherlock/transaction_spec.rb
index 2245c3ee8e2..728c44df4f3 100644
--- a/spec/lib/gitlab/sherlock/transaction_spec.rb
+++ b/spec/lib/gitlab/sherlock/transaction_spec.rb
@@ -167,8 +167,9 @@ describe Gitlab::Sherlock::Transaction do
allow(Gitlab::Sherlock).to receive(:enable_line_profiler?)
.and_return(true)
- allow_any_instance_of(Gitlab::Sherlock::LineProfiler)
- .to receive(:profile).and_return('cats are amazing', [])
+ allow_next_instance_of(Gitlab::Sherlock::LineProfiler) do |instance|
+ allow(instance).to receive(:profile).and_return('cats are amazing', [])
+ end
retval = transaction.profile_lines { 'cats are amazing' }
diff --git a/spec/lib/gitlab/sidekiq_middleware/correlation_injector_spec.rb b/spec/lib/gitlab/sidekiq_middleware/correlation_injector_spec.rb
index 0ff694d409b..d5ed939485a 100644
--- a/spec/lib/gitlab/sidekiq_middleware/correlation_injector_spec.rb
+++ b/spec/lib/gitlab/sidekiq_middleware/correlation_injector_spec.rb
@@ -28,7 +28,9 @@ describe Gitlab::SidekiqMiddleware::CorrelationInjector do
end
it 'injects into payload the correlation id' do
- expect_any_instance_of(described_class).to receive(:call).and_call_original
+ expect_next_instance_of(described_class) do |instance|
+ expect(instance).to receive(:call).and_call_original
+ end
Labkit::Correlation::CorrelationId.use_id('new-correlation-id') do
TestWorker.perform_async(1234)
diff --git a/spec/lib/gitlab/sidekiq_middleware/metrics_spec.rb b/spec/lib/gitlab/sidekiq_middleware/metrics_spec.rb
index 0d8cff3a295..36c6f377bde 100644
--- a/spec/lib/gitlab/sidekiq_middleware/metrics_spec.rb
+++ b/spec/lib/gitlab/sidekiq_middleware/metrics_spec.rb
@@ -3,106 +3,201 @@
require 'fast_spec_helper'
describe Gitlab::SidekiqMiddleware::Metrics do
- let(:middleware) { described_class.new }
- let(:concurrency_metric) { double('concurrency metric') }
-
- let(:queue_duration_seconds) { double('queue duration seconds metric') }
- let(:completion_seconds_metric) { double('completion seconds metric') }
- let(:user_execution_seconds_metric) { double('user execution seconds metric') }
- let(:failed_total_metric) { double('failed total metric') }
- let(:retried_total_metric) { double('retried total metric') }
- let(:running_jobs_metric) { double('running jobs metric') }
-
- before do
- allow(Gitlab::Metrics).to receive(:histogram).with(:sidekiq_jobs_queue_duration_seconds, anything, anything, anything).and_return(queue_duration_seconds)
- allow(Gitlab::Metrics).to receive(:histogram).with(:sidekiq_jobs_completion_seconds, anything, anything, anything).and_return(completion_seconds_metric)
- allow(Gitlab::Metrics).to receive(:histogram).with(:sidekiq_jobs_cpu_seconds, anything, anything, anything).and_return(user_execution_seconds_metric)
- allow(Gitlab::Metrics).to receive(:counter).with(:sidekiq_jobs_failed_total, anything).and_return(failed_total_metric)
- allow(Gitlab::Metrics).to receive(:counter).with(:sidekiq_jobs_retried_total, anything).and_return(retried_total_metric)
- allow(Gitlab::Metrics).to receive(:gauge).with(:sidekiq_running_jobs, anything, {}, :all).and_return(running_jobs_metric)
- allow(Gitlab::Metrics).to receive(:gauge).with(:sidekiq_concurrency, anything, {}, :all).and_return(concurrency_metric)
-
- allow(concurrency_metric).to receive(:set)
- end
+ context "with worker attribution" do
+ subject { described_class.new }
- describe '#initialize' do
- it 'sets general metrics' do
- expect(concurrency_metric).to receive(:set).with({}, Sidekiq.options[:concurrency].to_i)
+ let(:queue) { :test }
+ let(:worker_class) { worker.class }
+ let(:job) { {} }
+ let(:job_status) { :done }
+ let(:labels_with_job_status) { labels.merge(job_status: job_status.to_s) }
+ let(:default_labels) { { queue: queue.to_s, boundary: "", external_dependencies: "no", feature_category: "", latency_sensitive: "no" } }
+
+ shared_examples "a metrics middleware" do
+ context "with mocked prometheus" do
+ let(:concurrency_metric) { double('concurrency metric') }
+
+ let(:queue_duration_seconds) { double('queue duration seconds metric') }
+ let(:completion_seconds_metric) { double('completion seconds metric') }
+ let(:user_execution_seconds_metric) { double('user execution seconds metric') }
+ let(:failed_total_metric) { double('failed total metric') }
+ let(:retried_total_metric) { double('retried total metric') }
+ let(:running_jobs_metric) { double('running jobs metric') }
+
+ before do
+ allow(Gitlab::Metrics).to receive(:histogram).with(:sidekiq_jobs_queue_duration_seconds, anything, anything, anything).and_return(queue_duration_seconds)
+ allow(Gitlab::Metrics).to receive(:histogram).with(:sidekiq_jobs_completion_seconds, anything, anything, anything).and_return(completion_seconds_metric)
+ allow(Gitlab::Metrics).to receive(:histogram).with(:sidekiq_jobs_cpu_seconds, anything, anything, anything).and_return(user_execution_seconds_metric)
+ allow(Gitlab::Metrics).to receive(:counter).with(:sidekiq_jobs_failed_total, anything).and_return(failed_total_metric)
+ allow(Gitlab::Metrics).to receive(:counter).with(:sidekiq_jobs_retried_total, anything).and_return(retried_total_metric)
+ allow(Gitlab::Metrics).to receive(:gauge).with(:sidekiq_running_jobs, anything, {}, :all).and_return(running_jobs_metric)
+ allow(Gitlab::Metrics).to receive(:gauge).with(:sidekiq_concurrency, anything, {}, :all).and_return(concurrency_metric)
+
+ allow(concurrency_metric).to receive(:set)
+ end
+
+ describe '#initialize' do
+ it 'sets concurrency metrics' do
+ expect(concurrency_metric).to receive(:set).with({}, Sidekiq.options[:concurrency].to_i)
+
+ subject
+ end
+ end
+
+ describe '#call' do
+ let(:thread_cputime_before) { 1 }
+ let(:thread_cputime_after) { 2 }
+ let(:thread_cputime_duration) { thread_cputime_after - thread_cputime_before }
+
+ let(:monotonic_time_before) { 11 }
+ let(:monotonic_time_after) { 20 }
+ let(:monotonic_time_duration) { monotonic_time_after - monotonic_time_before }
+
+ let(:queue_duration_for_job) { 0.01 }
+
+ before do
+ allow(subject).to receive(:get_thread_cputime).and_return(thread_cputime_before, thread_cputime_after)
+ allow(Gitlab::Metrics::System).to receive(:monotonic_time).and_return(monotonic_time_before, monotonic_time_after)
+ allow(Gitlab::InstrumentationHelper).to receive(:queue_duration_for_job).with(job).and_return(queue_duration_for_job)
+
+ expect(running_jobs_metric).to receive(:increment).with(labels, 1)
+ expect(running_jobs_metric).to receive(:increment).with(labels, -1)
+
+ expect(queue_duration_seconds).to receive(:observe).with(labels, queue_duration_for_job) if queue_duration_for_job
+ expect(user_execution_seconds_metric).to receive(:observe).with(labels_with_job_status, thread_cputime_duration)
+ expect(completion_seconds_metric).to receive(:observe).with(labels_with_job_status, monotonic_time_duration)
+ end
+
+ it 'yields block' do
+ expect { |b| subject.call(worker, job, :test, &b) }.to yield_control.once
+ end
+
+ it 'sets queue specific metrics' do
+ subject.call(worker, job, :test) { nil }
+ end
+
+ context 'when job_duration is not available' do
+ let(:queue_duration_for_job) { nil }
+
+ it 'does not set the queue_duration_seconds histogram' do
+ expect(queue_duration_seconds).not_to receive(:observe)
+
+ subject.call(worker, job, :test) { nil }
+ end
+ end
+
+ context 'when error is raised' do
+ let(:job_status) { :fail }
+
+ it 'sets sidekiq_jobs_failed_total and reraises' do
+ expect(failed_total_metric).to receive(:increment).with(labels, 1)
+
+ expect { subject.call(worker, job, :test) { raise StandardError, "Failed" } }.to raise_error(StandardError, "Failed")
+ end
+ end
+
+ context 'when job is retried' do
+ let(:job) { { 'retry_count' => 1 } }
+
+ it 'sets sidekiq_jobs_retried_total metric' do
+ expect(retried_total_metric).to receive(:increment)
+
+ subject.call(worker, job, :test) { nil }
+ end
+ end
+ end
+ end
- middleware
- end
- end
+ context "with prometheus integrated" do
+ describe '#call' do
+ it 'yields block' do
+ expect { |b| subject.call(worker, job, :test, &b) }.to yield_control.once
+ end
- it 'ignore user execution when measured 0' do
- allow(completion_seconds_metric).to receive(:observe)
+ context 'when error is raised' do
+ let(:job_status) { :fail }
- expect(user_execution_seconds_metric).not_to receive(:observe)
- end
+ it 'sets sidekiq_jobs_failed_total and reraises' do
+ expect { subject.call(worker, job, :test) { raise StandardError, "Failed" } }.to raise_error(StandardError, "Failed")
+ end
+ end
+ end
+ end
+ end
- describe '#call' do
- let(:worker) { double(:worker) }
+ context "when workers are not attributed" do
+ class TestNonAttributedWorker
+ include Sidekiq::Worker
+ end
+ let(:worker) { TestNonAttributedWorker.new }
+ let(:labels) { default_labels }
- let(:job) { {} }
- let(:job_status) { :done }
- let(:labels) { { queue: :test } }
- let(:labels_with_job_status) { { queue: :test, job_status: job_status } }
+ it_behaves_like "a metrics middleware"
+ end
- let(:thread_cputime_before) { 1 }
- let(:thread_cputime_after) { 2 }
- let(:thread_cputime_duration) { thread_cputime_after - thread_cputime_before }
+ context "when workers are attributed" do
+ def create_attributed_worker_class(latency_sensitive, external_dependencies, resource_boundary, category)
+ Class.new do
+ include Sidekiq::Worker
+ include WorkerAttributes
+
+ latency_sensitive_worker! if latency_sensitive
+ worker_has_external_dependencies! if external_dependencies
+ worker_resource_boundary resource_boundary unless resource_boundary == :unknown
+ feature_category category unless category.nil?
+ end
+ end
- let(:monotonic_time_before) { 11 }
- let(:monotonic_time_after) { 20 }
- let(:monotonic_time_duration) { monotonic_time_after - monotonic_time_before }
+ let(:latency_sensitive) { false }
+ let(:external_dependencies) { false }
+ let(:resource_boundary) { :unknown }
+ let(:feature_category) { nil }
+ let(:worker_class) { create_attributed_worker_class(latency_sensitive, external_dependencies, resource_boundary, feature_category) }
+ let(:worker) { worker_class.new }
- let(:queue_duration_for_job) { 0.01 }
+ context "latency sensitive" do
+ let(:latency_sensitive) { true }
+ let(:labels) { default_labels.merge(latency_sensitive: "yes") }
- before do
- allow(middleware).to receive(:get_thread_cputime).and_return(thread_cputime_before, thread_cputime_after)
- allow(Gitlab::Metrics::System).to receive(:monotonic_time).and_return(monotonic_time_before, monotonic_time_after)
- allow(Gitlab::InstrumentationHelper).to receive(:queue_duration_for_job).with(job).and_return(queue_duration_for_job)
+ it_behaves_like "a metrics middleware"
+ end
- expect(running_jobs_metric).to receive(:increment).with(labels, 1)
- expect(running_jobs_metric).to receive(:increment).with(labels, -1)
+ context "external dependencies" do
+ let(:external_dependencies) { true }
+ let(:labels) { default_labels.merge(external_dependencies: "yes") }
- expect(queue_duration_seconds).to receive(:observe).with(labels, queue_duration_for_job) if queue_duration_for_job
- expect(user_execution_seconds_metric).to receive(:observe).with(labels_with_job_status, thread_cputime_duration)
- expect(completion_seconds_metric).to receive(:observe).with(labels_with_job_status, monotonic_time_duration)
- end
+ it_behaves_like "a metrics middleware"
+ end
- it 'yields block' do
- expect { |b| middleware.call(worker, job, :test, &b) }.to yield_control.once
- end
+ context "cpu boundary" do
+ let(:resource_boundary) { :cpu }
+ let(:labels) { default_labels.merge(boundary: "cpu") }
- it 'sets queue specific metrics' do
- middleware.call(worker, job, :test) { nil }
- end
+ it_behaves_like "a metrics middleware"
+ end
- context 'when job_duration is not available' do
- let(:queue_duration_for_job) { nil }
+ context "memory boundary" do
+ let(:resource_boundary) { :memory }
+ let(:labels) { default_labels.merge(boundary: "memory") }
- it 'does not set the queue_duration_seconds histogram' do
- middleware.call(worker, job, :test) { nil }
+ it_behaves_like "a metrics middleware"
end
- end
- context 'when job is retried' do
- let(:job) { { 'retry_count' => 1 } }
+ context "feature category" do
+ let(:feature_category) { :authentication }
+ let(:labels) { default_labels.merge(feature_category: "authentication") }
- it 'sets sidekiq_jobs_retried_total metric' do
- expect(retried_total_metric).to receive(:increment)
-
- middleware.call(worker, job, :test) { nil }
+ it_behaves_like "a metrics middleware"
end
- end
-
- context 'when error is raised' do
- let(:job_status) { :fail }
- it 'sets sidekiq_jobs_failed_total and reraises' do
- expect(failed_total_metric).to receive(:increment).with(labels, 1)
+ context "combined" do
+ let(:latency_sensitive) { true }
+ let(:external_dependencies) { true }
+ let(:resource_boundary) { :cpu }
+ let(:feature_category) { :authentication }
+ let(:labels) { default_labels.merge(latency_sensitive: "yes", external_dependencies: "yes", boundary: "cpu", feature_category: "authentication") }
- expect { middleware.call(worker, job, :test) { raise StandardError, "Failed" } }.to raise_error(StandardError, "Failed")
+ it_behaves_like "a metrics middleware"
end
end
end
diff --git a/spec/lib/gitlab/sidekiq_middleware_spec.rb b/spec/lib/gitlab/sidekiq_middleware_spec.rb
new file mode 100644
index 00000000000..aef472e0648
--- /dev/null
+++ b/spec/lib/gitlab/sidekiq_middleware_spec.rb
@@ -0,0 +1,143 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require 'sidekiq/testing'
+
+describe Gitlab::SidekiqMiddleware do
+ class TestWorker
+ include Sidekiq::Worker
+
+ def perform(_arg)
+ end
+ end
+
+ around do |example|
+ Sidekiq::Testing.inline! { example.run }
+ end
+
+ let(:worker_class) { TestWorker }
+ let(:job_args) { [0.01] }
+
+ # The test sets up a new server middleware stack, ensuring that the
+ # appropriate middlewares, as passed into server_configurator,
+ # are invoked.
+ # Additionally the test ensure that each middleware is
+ # 1) not failing
+ # 2) yielding exactly once
+ describe '.server_configurator' do
+ around do |example|
+ original = Sidekiq::Testing.server_middleware.dup
+
+ example.run
+
+ Sidekiq::Testing.instance_variable_set :@server_chain, original
+ end
+
+ let(:middleware_expected_args) { [a_kind_of(worker_class), hash_including({ 'args' => job_args }), anything] }
+ let(:all_sidekiq_middlewares) do
+ [
+ Gitlab::SidekiqMiddleware::Monitor,
+ Gitlab::SidekiqMiddleware::BatchLoader,
+ Gitlab::SidekiqMiddleware::CorrelationLogger,
+ Gitlab::SidekiqMiddleware::InstrumentationLogger,
+ Gitlab::SidekiqStatus::ServerMiddleware,
+ Gitlab::SidekiqMiddleware::Metrics,
+ Gitlab::SidekiqMiddleware::ArgumentsLogger,
+ Gitlab::SidekiqMiddleware::MemoryKiller,
+ Gitlab::SidekiqMiddleware::RequestStoreMiddleware
+ ]
+ end
+ let(:enabled_sidekiq_middlewares) { all_sidekiq_middlewares - disabled_sidekiq_middlewares }
+
+ before do
+ Sidekiq::Testing.server_middleware.clear
+ Sidekiq::Testing.server_middleware(&described_class.server_configurator(
+ metrics: metrics,
+ arguments_logger: arguments_logger,
+ memory_killer: memory_killer,
+ request_store: request_store
+ ))
+
+ enabled_sidekiq_middlewares.each do |middleware|
+ expect_any_instance_of(middleware).to receive(:call).with(*middleware_expected_args).once.and_call_original
+ end
+
+ disabled_sidekiq_middlewares.each do |middleware|
+ expect_any_instance_of(Gitlab::SidekiqMiddleware::ArgumentsLogger).not_to receive(:call)
+ end
+ end
+
+ context "all optional middlewares off" do
+ let(:metrics) { false }
+ let(:arguments_logger) { false }
+ let(:memory_killer) { false }
+ let(:request_store) { false }
+ let(:disabled_sidekiq_middlewares) do
+ [
+ Gitlab::SidekiqMiddleware::Metrics,
+ Gitlab::SidekiqMiddleware::ArgumentsLogger,
+ Gitlab::SidekiqMiddleware::MemoryKiller,
+ Gitlab::SidekiqMiddleware::RequestStoreMiddleware
+ ]
+ end
+
+ it "passes through server middlewares" do
+ worker_class.perform_async(*job_args)
+ end
+ end
+
+ context "all optional middlewares on" do
+ let(:metrics) { true }
+ let(:arguments_logger) { true }
+ let(:memory_killer) { true }
+ let(:request_store) { true }
+ let(:disabled_sidekiq_middlewares) { [] }
+
+ it "passes through server middlewares" do
+ worker_class.perform_async(*job_args)
+ end
+ end
+ end
+
+ # The test sets up a new client middleware stack. The test ensures
+ # that each middleware is:
+ # 1) not failing
+ # 2) yielding exactly once
+ describe '.client_configurator' do
+ let(:chain) { Sidekiq::Middleware::Chain.new }
+ let(:job) { { 'args' => job_args } }
+ let(:queue) { 'default' }
+ let(:redis_pool) { Sidekiq.redis_pool }
+ let(:middleware_expected_args) { [worker_class_arg, job, queue, redis_pool] }
+
+ before do
+ described_class.client_configurator.call(chain)
+ end
+
+ shared_examples "a client middleware chain" do
+ # Its possible that a middleware could accidentally omit a yield call
+ # this will prevent the full middleware chain from being executed.
+ # This test ensures that this does not happen
+ it "invokes the chain" do
+ expect_any_instance_of(Gitlab::SidekiqStatus::ClientMiddleware).to receive(:call).with(*middleware_expected_args).once.and_call_original
+ expect_any_instance_of(Gitlab::SidekiqMiddleware::CorrelationInjector).to receive(:call).with(*middleware_expected_args).once.and_call_original
+
+ expect { |b| chain.invoke(worker_class_arg, job, queue, redis_pool, &b) }.to yield_control.once
+ end
+ end
+
+ # Sidekiq documentation states that the worker class could be a string
+ # or a class reference. We should test for both
+ context "handles string worker_class values" do
+ let(:worker_class_arg) { worker_class.to_s }
+
+ it_behaves_like "a client middleware chain"
+ end
+
+ context "handles string worker_class values" do
+ let(:worker_class_arg) { worker_class }
+
+ it_behaves_like "a client middleware chain"
+ end
+ end
+end
diff --git a/spec/lib/gitlab/slash_commands/command_spec.rb b/spec/lib/gitlab/slash_commands/command_spec.rb
index 5a8c721a634..73b93589fac 100644
--- a/spec/lib/gitlab/slash_commands/command_spec.rb
+++ b/spec/lib/gitlab/slash_commands/command_spec.rb
@@ -113,11 +113,13 @@ describe Gitlab::SlashCommands::Command do
context 'IssueMove is triggered' do
let(:params) { { text: 'issue move #78291 to gitlab/gitlab-ci' } }
+
it { is_expected.to eq(Gitlab::SlashCommands::IssueMove) }
end
context 'IssueComment is triggered' do
let(:params) { { text: "issue comment #503\ncomment body" } }
+
it { is_expected.to eq(Gitlab::SlashCommands::IssueComment) }
end
end
diff --git a/spec/lib/gitlab/slash_commands/issue_search_spec.rb b/spec/lib/gitlab/slash_commands/issue_search_spec.rb
index b766a9a1361..a142c8e4c92 100644
--- a/spec/lib/gitlab/slash_commands/issue_search_spec.rb
+++ b/spec/lib/gitlab/slash_commands/issue_search_spec.rb
@@ -42,6 +42,7 @@ describe Gitlab::SlashCommands::IssueSearch do
describe 'self.match' do
let(:query) { "my search keywords" }
+
it 'matches the query' do
match = described_class.match("issue search #{query}")
diff --git a/spec/lib/gitlab/slash_commands/presenters/issue_comment_spec.rb b/spec/lib/gitlab/slash_commands/presenters/issue_comment_spec.rb
index b5ef417cb93..3741563a744 100644
--- a/spec/lib/gitlab/slash_commands/presenters/issue_comment_spec.rb
+++ b/spec/lib/gitlab/slash_commands/presenters/issue_comment_spec.rb
@@ -10,6 +10,7 @@ describe Gitlab::SlashCommands::Presenters::IssueComment do
describe '#present' do
let(:attachment) { subject[:attachments].first }
+
subject { described_class.new(note).present }
it { is_expected.to be_a(Hash) }
diff --git a/spec/lib/gitlab/slash_commands/run_spec.rb b/spec/lib/gitlab/slash_commands/run_spec.rb
index 900fae05719..32a23129e3c 100644
--- a/spec/lib/gitlab/slash_commands/run_spec.rb
+++ b/spec/lib/gitlab/slash_commands/run_spec.rb
@@ -56,13 +56,13 @@ describe Gitlab::SlashCommands::Run do
context 'when a pipeline could not be scheduled' do
it 'returns an error' do
- expect_any_instance_of(Gitlab::Chat::Command)
- .to receive(:try_create_pipeline)
- .and_return(nil)
+ expect_next_instance_of(Gitlab::Chat::Command) do |instance|
+ expect(instance).to receive(:try_create_pipeline).and_return(nil)
+ end
- expect_any_instance_of(Gitlab::SlashCommands::Presenters::Run)
- .to receive(:failed_to_schedule)
- .with('foo')
+ expect_next_instance_of(Gitlab::SlashCommands::Presenters::Run) do |instance|
+ expect(instance).to receive(:failed_to_schedule).with('foo')
+ end
command.execute(command: 'foo', arguments: '')
end
@@ -77,17 +77,18 @@ describe Gitlab::SlashCommands::Run do
persisted?: true
)
- expect_any_instance_of(Gitlab::Chat::Command)
- .to receive(:try_create_pipeline)
- .and_return(pipeline)
+ expect_next_instance_of(Gitlab::Chat::Command) do |instance|
+ expect(instance).to receive(:try_create_pipeline).and_return(pipeline)
+ end
expect(Gitlab::Chat::Responder)
.to receive(:responder_for)
.with(build)
.and_return(nil)
- expect_any_instance_of(Gitlab::SlashCommands::Presenters::Run)
- .to receive(:unsupported_chat_service)
+ expect_next_instance_of(Gitlab::SlashCommands::Presenters::Run) do |instance|
+ expect(instance).to receive(:unsupported_chat_service)
+ end
command.execute(command: 'foo', arguments: '')
end
@@ -103,18 +104,18 @@ describe Gitlab::SlashCommands::Run do
persisted?: true
)
- expect_any_instance_of(Gitlab::Chat::Command)
- .to receive(:try_create_pipeline)
- .and_return(pipeline)
+ expect_next_instance_of(Gitlab::Chat::Command) do |instance|
+ expect(instance).to receive(:try_create_pipeline).and_return(pipeline)
+ end
expect(Gitlab::Chat::Responder)
.to receive(:responder_for)
.with(build)
.and_return(responder)
- expect_any_instance_of(Gitlab::SlashCommands::Presenters::Run)
- .to receive(:in_channel_response)
- .with(responder.scheduled_output)
+ expect_next_instance_of(Gitlab::SlashCommands::Presenters::Run) do |instance|
+ expect(instance).to receive(:in_channel_response).with(responder.scheduled_output)
+ end
command.execute(command: 'foo', arguments: '')
end
diff --git a/spec/lib/gitlab/sql/pattern_spec.rb b/spec/lib/gitlab/sql/pattern_spec.rb
index 31944d51b3c..38b93913f6d 100644
--- a/spec/lib/gitlab/sql/pattern_spec.rb
+++ b/spec/lib/gitlab/sql/pattern_spec.rb
@@ -207,5 +207,15 @@ describe Gitlab::SQL::Pattern do
expect(fuzzy_arel_match.to_sql).to match(/title.+I?LIKE '\%foo\%' AND .*title.*I?LIKE '\%baz\%' AND .*title.*I?LIKE '\%really bar\%'/)
end
end
+
+ context 'when passing an Arel column' do
+ let(:query) { 'foo' }
+
+ subject(:fuzzy_arel_match) { Project.fuzzy_arel_match(Route.arel_table[:path], query) }
+
+ it 'returns a condition with the table and column name' do
+ expect(fuzzy_arel_match.to_sql).to match(/"routes"."path".*ILIKE '\%foo\%'/)
+ end
+ end
end
end
diff --git a/spec/lib/gitlab/ssh_public_key_spec.rb b/spec/lib/gitlab/ssh_public_key_spec.rb
index f8becb0c796..08e008c82d9 100644
--- a/spec/lib/gitlab/ssh_public_key_spec.rb
+++ b/spec/lib/gitlab/ssh_public_key_spec.rb
@@ -183,6 +183,34 @@ describe Gitlab::SSHPublicKey, lib: true do
end
end
+ describe '#fingerprint in SHA256 format' do
+ subject { public_key.fingerprint("SHA256").gsub("SHA256:", "") if public_key.fingerprint("SHA256") }
+
+ where(:factory, :fingerprint_sha256) do
+ [
+ [:rsa_key_2048, 'GdtgO0eHbwLB+mK47zblkoXujkqKRZjgMQrHH6Kks3E'],
+ [:rsa_key_4096, 'ByDU7hQ1JB95l6p53rHrffc4eXvEtqGUtQhS+Dhyy7g'],
+ [:rsa_key_5120, 'PCCupLbFHScm4AbEufbGDvhBU27IM0MVAor715qKQK8'],
+ [:rsa_key_8192, 'CtHFQAS+9Hb8z4vrv4gVQPsHjNN0WIZhWODaB1mQLs4'],
+ [:dsa_key_2048, '+a3DQ7cU5GM+gaYOfmc0VWNnykHQSuth3VRcCpWuYNI'],
+ [:ecdsa_key_256, 'C+I5k3D+IGeM6k5iBR1ZsphqTKV+7uvL/XZ5hcrTr7g'],
+ [:ed25519_key_256, 'DCKAjzxWrdOTjaGKBBjtCW8qY5++GaiAJflrHPmp6W0']
+ ]
+ end
+
+ with_them do
+ let(:key) { attributes_for(factory)[:key] }
+
+ it { is_expected.to eq(fingerprint_sha256) }
+ end
+
+ context 'with an invalid SSH key' do
+ let(:key) { 'this is not a key' }
+
+ it { is_expected.to be_nil }
+ end
+ end
+
describe '#key_text' do
let(:key) { 'this is not a key' }
diff --git a/spec/lib/gitlab/string_range_marker_spec.rb b/spec/lib/gitlab/string_range_marker_spec.rb
index 7ed43db3d10..ef9be7cd992 100644
--- a/spec/lib/gitlab/string_range_marker_spec.rb
+++ b/spec/lib/gitlab/string_range_marker_spec.rb
@@ -9,7 +9,7 @@ describe Gitlab::StringRangeMarker do
inline_diffs = [2..5]
described_class.new(raw, rich).mark(inline_diffs) do |text, left:, right:|
- "LEFT#{text}RIGHT"
+ "LEFT#{text}RIGHT".html_safe
end
end
diff --git a/spec/lib/gitlab/string_regex_marker_spec.rb b/spec/lib/gitlab/string_regex_marker_spec.rb
index 2b19edbe7f9..2ab1ccc447b 100644
--- a/spec/lib/gitlab/string_regex_marker_spec.rb
+++ b/spec/lib/gitlab/string_regex_marker_spec.rb
@@ -10,7 +10,7 @@ describe Gitlab::StringRegexMarker do
subject do
described_class.new(raw, rich).mark(/"[^"]+":\s*"(?<name>[^"]+)"/, group: :name) do |text, left:, right:|
- %{<a href="#">#{text}</a>}
+ %{<a href="#">#{text}</a>}.html_safe
end
end
@@ -26,7 +26,7 @@ describe Gitlab::StringRegexMarker do
subject do
described_class.new(raw, rich).mark(/<[a-z]>/) do |text, left:, right:|
- %{<strong>#{text}</strong>}
+ %{<strong>#{text}</strong>}.html_safe
end
end
diff --git a/spec/lib/gitlab/throttle_spec.rb b/spec/lib/gitlab/throttle_spec.rb
new file mode 100644
index 00000000000..674646a5f06
--- /dev/null
+++ b/spec/lib/gitlab/throttle_spec.rb
@@ -0,0 +1,87 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::Throttle do
+ describe '.protected_paths_enabled?' do
+ subject { described_class.protected_paths_enabled? }
+
+ context 'when omnibus protected paths throttle should be used' do
+ before do
+ expect(described_class).to receive(:should_use_omnibus_protected_paths?).and_return(true)
+ end
+
+ it { is_expected.to be_falsey }
+ end
+
+ context 'when omnibus protected paths throttle should not be used' do
+ before do
+ expect(described_class).to receive(:should_use_omnibus_protected_paths?).and_return(false)
+ end
+
+ it 'returns Application Settings throttle_protected_paths_enabled?' do
+ expect(Gitlab::CurrentSettings.current_application_settings).to receive(:throttle_protected_paths_enabled?)
+
+ subject
+ end
+ end
+ end
+
+ describe '.should_use_omnibus_protected_paths?' do
+ subject { described_class.should_use_omnibus_protected_paths? }
+
+ context 'when rack_attack.admin_area_protected_paths_enabled config is unspecified' do
+ context 'when the omnibus protected paths throttle has been recently used (it has data)' do
+ before do
+ expect(described_class).to receive(:omnibus_protected_paths_present?).and_return(true)
+ end
+
+ it { is_expected.to be_truthy }
+ end
+
+ context 'when the omnibus protected paths throttle has not been recently used' do
+ before do
+ expect(described_class).to receive(:omnibus_protected_paths_present?).and_return(false)
+ end
+
+ it { is_expected.to be_falsey }
+ end
+ end
+
+ context 'when rack_attack.admin_area_protected_paths_enabled config is false' do
+ before do
+ stub_config(rack_attack: {
+ admin_area_protected_paths_enabled: false
+ })
+ end
+
+ context 'when the omnibus protected paths throttle has been recently used (it has data)' do
+ before do
+ expect(described_class).to receive(:omnibus_protected_paths_present?).and_return(true)
+ end
+
+ it { is_expected.to be_truthy }
+ end
+
+ context 'when the omnibus protected paths throttle has not been recently used' do
+ before do
+ expect(described_class).to receive(:omnibus_protected_paths_present?).and_return(false)
+ end
+
+ it { is_expected.to be_falsey }
+ end
+ end
+
+ context 'when rack_attack.admin_area_protected_paths_enabled config is true' do
+ before do
+ stub_config(rack_attack: {
+ admin_area_protected_paths_enabled: true
+ })
+
+ expect(described_class).not_to receive(:omnibus_protected_paths_present?)
+ end
+
+ it { is_expected.to be_falsey }
+ end
+ end
+end
diff --git a/spec/lib/gitlab/tracking_spec.rb b/spec/lib/gitlab/tracking_spec.rb
index dc877f20cae..efb07d9dc95 100644
--- a/spec/lib/gitlab/tracking_spec.rb
+++ b/spec/lib/gitlab/tracking_spec.rb
@@ -97,7 +97,7 @@ describe Gitlab::Tracking do
'_property_',
'_value_',
nil,
- timestamp.to_i
+ (timestamp.to_f * 1000).to_i
)
track_event
@@ -130,7 +130,7 @@ describe Gitlab::Tracking do
expect(tracker).to receive(:track_self_describing_event).with(
'_event_json_',
nil,
- timestamp.to_i
+ (timestamp.to_f * 1000).to_i
)
track_event
diff --git a/spec/lib/gitlab/url_builder_spec.rb b/spec/lib/gitlab/url_builder_spec.rb
index 08d3c638f9e..0aab02b6c4c 100644
--- a/spec/lib/gitlab/url_builder_spec.rb
+++ b/spec/lib/gitlab/url_builder_spec.rb
@@ -59,6 +59,26 @@ describe Gitlab::UrlBuilder do
end
end
+ context 'when passing a ProjectSnippet' do
+ it 'returns a proper URL' do
+ project_snippet = create(:project_snippet)
+
+ url = described_class.build(project_snippet)
+
+ expect(url).to eq "#{Settings.gitlab['url']}/#{project_snippet.project.full_path}/snippets/#{project_snippet.id}"
+ end
+ end
+
+ context 'when passing a PersonalSnippet' do
+ it 'returns a proper URL' do
+ personal_snippet = create(:personal_snippet)
+
+ url = described_class.build(personal_snippet)
+
+ expect(url).to eq "#{Settings.gitlab['url']}/snippets/#{personal_snippet.id}"
+ end
+ end
+
context 'when passing a Note' do
context 'on a Commit' do
it 'returns a proper URL' do
diff --git a/spec/lib/gitlab/usage_data_spec.rb b/spec/lib/gitlab/usage_data_spec.rb
index 484684eeb65..6ab23b00d5c 100644
--- a/spec/lib/gitlab/usage_data_spec.rb
+++ b/spec/lib/gitlab/usage_data_spec.rb
@@ -27,6 +27,7 @@ describe Gitlab::UsageData do
create_list(:zoom_meeting, 2, project: projects[0], issue: projects[0].issues[1], issue_status: :removed)
create(:zoom_meeting, project: projects[0], issue: projects[0].issues[2], issue_status: :added)
create_list(:zoom_meeting, 2, project: projects[0], issue: projects[0].issues[2], issue_status: :removed)
+ create(:sentry_issue, issue: projects[0].issues[0])
# Enabled clusters
gcp_cluster = create(:cluster_provider_gcp, :created).cluster
@@ -53,6 +54,8 @@ describe Gitlab::UsageData do
create(:grafana_integration, project: projects[1], enabled: true)
create(:grafana_integration, project: projects[2], enabled: false)
+ allow(Gitlab::GrafanaEmbedUsageData).to receive(:issue_count).and_return(2)
+
ProjectFeature.first.update_attribute('repository_access_level', 0)
end
@@ -150,8 +153,10 @@ describe Gitlab::UsageData do
grafana_integrated_projects
groups
issues
+ issues_created_from_gitlab_error_tracking_ui
issues_with_associated_zoom_link
issues_using_zoom_quick_actions
+ issues_with_embedded_grafana_charts_approx
keys
label_lists
labels
@@ -209,8 +214,10 @@ describe Gitlab::UsageData do
expect(count_data[:projects_mattermost_active]).to eq(1)
expect(count_data[:projects_with_repositories_enabled]).to eq(3)
expect(count_data[:projects_with_error_tracking_enabled]).to eq(1)
+ expect(count_data[:issues_created_from_gitlab_error_tracking_ui]).to eq(1)
expect(count_data[:issues_with_associated_zoom_link]).to eq(2)
expect(count_data[:issues_using_zoom_quick_actions]).to eq(3)
+ expect(count_data[:issues_with_embedded_grafana_charts_approx]).to eq(2)
expect(count_data[:clusters_enabled]).to eq(4)
expect(count_data[:project_clusters_enabled]).to eq(3)
@@ -293,6 +300,24 @@ describe Gitlab::UsageData do
end
end
+ describe '#ingress_modsecurity_usage' do
+ subject { described_class.ingress_modsecurity_usage }
+
+ it 'gathers variable data' do
+ allow_any_instance_of(
+ ::Clusters::Applications::IngressModsecurityUsageService
+ ).to receive(:execute).and_return(
+ {
+ ingress_modsecurity_blocking: 1,
+ ingress_modsecurity_disabled: 2
+ }
+ )
+
+ expect(subject[:ingress_modsecurity_blocking]).to eq(1)
+ expect(subject[:ingress_modsecurity_disabled]).to eq(2)
+ end
+ end
+
describe '#license_usage_data' do
subject { described_class.license_usage_data }
diff --git a/spec/lib/gitlab/visibility_level_spec.rb b/spec/lib/gitlab/visibility_level_spec.rb
index 75dc7d8e6d1..16a05af2216 100644
--- a/spec/lib/gitlab/visibility_level_spec.rb
+++ b/spec/lib/gitlab/visibility_level_spec.rb
@@ -95,4 +95,28 @@ describe Gitlab::VisibilityLevel do
expect(described_class.valid_level?(described_class::PUBLIC)).to be_truthy
end
end
+
+ describe '#visibility_level_decreased?' do
+ let(:project) { create(:project, :internal) }
+
+ context 'when visibility level decreases' do
+ before do
+ project.update!(visibility_level: described_class::PRIVATE)
+ end
+
+ it 'returns true' do
+ expect(project.visibility_level_decreased?).to be(true)
+ end
+ end
+
+ context 'when visibility level does not decrease' do
+ before do
+ project.update!(visibility_level: described_class::PUBLIC)
+ end
+
+ it 'returns false' do
+ expect(project.visibility_level_decreased?).to be(false)
+ end
+ end
+ end
end
diff --git a/spec/lib/gitlab/workhorse_spec.rb b/spec/lib/gitlab/workhorse_spec.rb
index 88bc5034da5..89381057f6b 100644
--- a/spec/lib/gitlab/workhorse_spec.rb
+++ b/spec/lib/gitlab/workhorse_spec.rb
@@ -116,6 +116,7 @@ describe Gitlab::Workhorse do
describe '.send_git_patch' do
let(:diff_refs) { double(base_sha: "base", head_sha: "head") }
+
subject { described_class.send_git_patch(repository, diff_refs) }
it 'sets the header correctly' do
@@ -178,6 +179,7 @@ describe Gitlab::Workhorse do
describe '.send_git_diff' do
let(:diff_refs) { double(base_sha: "base", head_sha: "head") }
+
subject { described_class.send_git_diff(repository, diff_refs) }
it 'sets the header correctly' do
diff --git a/spec/lib/google_api/auth_spec.rb b/spec/lib/google_api/auth_spec.rb
index a25004ac385..719e98c5fdf 100644
--- a/spec/lib/google_api/auth_spec.rb
+++ b/spec/lib/google_api/auth_spec.rb
@@ -30,8 +30,9 @@ describe GoogleApi::Auth do
end
before do
- allow_any_instance_of(OAuth2::Strategy::AuthCode)
- .to receive(:get_token).and_return(token)
+ allow_next_instance_of(OAuth2::Strategy::AuthCode) do |instance|
+ allow(instance).to receive(:get_token).and_return(token)
+ end
end
it 'returns token and expires_at' do
diff --git a/spec/lib/google_api/cloud_platform/client_spec.rb b/spec/lib/google_api/cloud_platform/client_spec.rb
index 473ad639ead..bd063648ca1 100644
--- a/spec/lib/google_api/cloud_platform/client_spec.rb
+++ b/spec/lib/google_api/cloud_platform/client_spec.rb
@@ -92,7 +92,12 @@ describe GoogleApi::CloudPlatform::Client do
name: cluster_name,
initial_node_count: cluster_size,
node_config: {
- machine_type: machine_type
+ machine_type: machine_type,
+ oauth_scopes: [
+ "https://www.googleapis.com/auth/devstorage.read_only",
+ "https://www.googleapis.com/auth/logging.write",
+ "https://www.googleapis.com/auth/monitoring"
+ ]
},
master_auth: {
username: 'admin',
diff --git a/spec/lib/json_web_token/rsa_token_spec.rb b/spec/lib/json_web_token/rsa_token_spec.rb
index a127c787e28..62fddbb97c7 100644
--- a/spec/lib/json_web_token/rsa_token_spec.rb
+++ b/spec/lib/json_web_token/rsa_token_spec.rb
@@ -41,6 +41,7 @@ describe JSONWebToken::RSAToken do
context 'for invalid key to raise an exception' do
let(:new_key) { OpenSSL::PKey::RSA.generate(512) }
+
subject { JWT.decode(rsa_encoded, new_key, true, { algorithm: 'RS256' }) }
it { expect {subject}.to raise_error(JWT::DecodeError) }
diff --git a/spec/lib/marginalia_spec.rb b/spec/lib/marginalia_spec.rb
new file mode 100644
index 00000000000..5dc54af99ce
--- /dev/null
+++ b/spec/lib/marginalia_spec.rb
@@ -0,0 +1,173 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe 'Marginalia spec' do
+ class MarginaliaTestController < ActionController::Base
+ def first_user
+ User.first
+ render body: nil
+ end
+ end
+
+ class MarginaliaTestJob
+ include Sidekiq::Worker
+
+ def perform
+ User.first
+ end
+ end
+
+ class MarginaliaTestMailer < BaseMailer
+ def first_user
+ User.first
+ end
+ end
+
+ def add_sidekiq_middleware
+ # Reference: https://github.com/mperham/sidekiq/wiki/Testing#testing-server-middlewaresidekiq
+ # Sidekiq test harness fakes worker without its server middlewares, so include instrumentation to 'Sidekiq::Testing' server middleware.
+ Sidekiq::Testing.server_middleware do |chain|
+ chain.add Marginalia::SidekiqInstrumentation::Middleware
+ end
+ end
+
+ def remove_sidekiq_middleware
+ Sidekiq::Testing.server_middleware do |chain|
+ chain.remove Marginalia::SidekiqInstrumentation::Middleware
+ end
+ end
+
+ def stub_feature(value)
+ allow(Gitlab::Marginalia).to receive(:cached_feature_enabled?).and_return(value)
+ end
+
+ def make_request(correlation_id)
+ request_env = Rack::MockRequest.env_for('/')
+
+ ::Labkit::Correlation::CorrelationId.use_id(correlation_id) do
+ MarginaliaTestController.action(:first_user).call(request_env)
+ end
+ end
+
+ describe 'For rails web requests' do
+ let(:correlation_id) { SecureRandom.uuid }
+ let(:recorded) { ActiveRecord::QueryRecorder.new { make_request(correlation_id) } }
+
+ let(:component_map) do
+ {
+ "application" => "test",
+ "controller" => "marginalia_test",
+ "action" => "first_user",
+ "line" => "/spec/support/helpers/query_recorder.rb",
+ "correlation_id" => correlation_id
+ }
+ end
+
+ context 'when the feature is enabled' do
+ before do
+ stub_feature(true)
+ end
+
+ it 'generates a query that includes the component and value' do
+ component_map.each do |component, value|
+ expect(recorded.log.last).to include("#{component}:#{value}")
+ end
+ end
+ end
+
+ context 'when the feature is disabled' do
+ before do
+ stub_feature(false)
+ end
+
+ it 'excludes annotations in generated queries' do
+ expect(recorded.log.last).not_to include("/*")
+ expect(recorded.log.last).not_to include("*/")
+ end
+ end
+ end
+
+ describe 'for Sidekiq worker jobs' do
+ before(:all) do
+ add_sidekiq_middleware
+
+ # Because of faking, 'Sidekiq.server?' does not work so implicitly set application name which is done in config/initializers/0_marginalia.rb
+ Marginalia.application_name = "sidekiq"
+ end
+
+ after(:all) do
+ MarginaliaTestJob.clear
+ remove_sidekiq_middleware
+ end
+
+ around do |example|
+ Sidekiq::Testing.fake! { example.run }
+ end
+
+ before do
+ MarginaliaTestJob.perform_async
+ end
+
+ let(:sidekiq_job) { MarginaliaTestJob.jobs.first }
+ let(:recorded) { ActiveRecord::QueryRecorder.new { MarginaliaTestJob.drain } }
+
+ let(:component_map) do
+ {
+ "application" => "sidekiq",
+ "job_class" => "MarginaliaTestJob",
+ "line" => "/spec/support/sidekiq_middleware.rb",
+ "correlation_id" => sidekiq_job['correlation_id'],
+ "jid" => sidekiq_job['jid']
+ }
+ end
+
+ context 'when the feature is enabled' do
+ before do
+ stub_feature(true)
+ end
+
+ it 'generates a query that includes the component and value' do
+ component_map.each do |component, value|
+ expect(recorded.log.last).to include("#{component}:#{value}")
+ end
+ end
+
+ describe 'for ActionMailer delivery jobs' do
+ let(:delivery_job) { MarginaliaTestMailer.first_user.deliver_later }
+
+ let(:recorded) do
+ ActiveRecord::QueryRecorder.new do
+ delivery_job.perform_now
+ end
+ end
+
+ let(:component_map) do
+ {
+ "application" => "sidekiq",
+ "line" => "/lib/gitlab/i18n.rb",
+ "jid" => delivery_job.job_id,
+ "job_class" => delivery_job.arguments.first
+ }
+ end
+
+ it 'generates a query that includes the component and value' do
+ component_map.each do |component, value|
+ expect(recorded.log.last).to include("#{component}:#{value}")
+ end
+ end
+ end
+ end
+
+ context 'when the feature is disabled' do
+ before do
+ stub_feature(false)
+ end
+
+ it 'excludes annotations in generated queries' do
+ expect(recorded.log.last).not_to include("/*")
+ expect(recorded.log.last).not_to include("*/")
+ end
+ end
+ end
+end
diff --git a/spec/lib/omni_auth/strategies/saml_spec.rb b/spec/lib/omni_auth/strategies/saml_spec.rb
index 73e86872308..447800bd93c 100644
--- a/spec/lib/omni_auth/strategies/saml_spec.rb
+++ b/spec/lib/omni_auth/strategies/saml_spec.rb
@@ -15,7 +15,9 @@ describe OmniAuth::Strategies::SAML, type: :strategy do
it 'stores request ID during request phase' do
request_id = double
- allow_any_instance_of(OneLogin::RubySaml::Authrequest).to receive(:uuid).and_return(request_id)
+ allow_next_instance_of(OneLogin::RubySaml::Authrequest) do |instance|
+ allow(instance).to receive(:uuid).and_return(request_id)
+ end
post '/users/auth/saml'
expect(session['last_authn_request_id']).to eq(request_id)
diff --git a/spec/lib/quality/helm_client_spec.rb b/spec/lib/quality/helm_client_spec.rb
index da5ba4c4d99..795aa43b849 100644
--- a/spec/lib/quality/helm_client_spec.rb
+++ b/spec/lib/quality/helm_client_spec.rb
@@ -3,7 +3,8 @@
require 'fast_spec_helper'
RSpec.describe Quality::HelmClient do
- let(:namespace) { 'review-apps-ee' }
+ let(:tiller_namespace) { 'review-apps-ee' }
+ let(:namespace) { tiller_namespace }
let(:release_name) { 'my-release' }
let(:raw_helm_list_page1) do
<<~OUTPUT
@@ -30,12 +31,12 @@ RSpec.describe Quality::HelmClient do
OUTPUT
end
- subject { described_class.new(namespace: namespace) }
+ subject { described_class.new(tiller_namespace: tiller_namespace, namespace: namespace) }
describe '#releases' do
it 'raises an error if the Helm command fails' do
expect(Gitlab::Popen).to receive(:popen_with_detail)
- .with([%(helm list --namespace "#{namespace}" --tiller-namespace "#{namespace}" --output json)])
+ .with([%(helm list --namespace "#{namespace}" --tiller-namespace "#{tiller_namespace}" --output json)])
.and_return(Gitlab::Popen::Result.new([], '', '', double(success?: false)))
expect { subject.releases.to_a }.to raise_error(described_class::CommandFailedError)
@@ -43,7 +44,7 @@ RSpec.describe Quality::HelmClient do
it 'calls helm list with default arguments' do
expect(Gitlab::Popen).to receive(:popen_with_detail)
- .with([%(helm list --namespace "#{namespace}" --tiller-namespace "#{namespace}" --output json)])
+ .with([%(helm list --namespace "#{namespace}" --tiller-namespace "#{tiller_namespace}" --output json)])
.and_return(Gitlab::Popen::Result.new([], '', '', double(success?: true)))
subject.releases.to_a
@@ -51,7 +52,7 @@ RSpec.describe Quality::HelmClient do
it 'calls helm list with extra arguments' do
expect(Gitlab::Popen).to receive(:popen_with_detail)
- .with([%(helm list --namespace "#{namespace}" --tiller-namespace "#{namespace}" --output json --deployed)])
+ .with([%(helm list --namespace "#{namespace}" --tiller-namespace "#{tiller_namespace}" --output json --deployed)])
.and_return(Gitlab::Popen::Result.new([], '', '', double(success?: true)))
subject.releases(args: ['--deployed']).to_a
@@ -59,7 +60,7 @@ RSpec.describe Quality::HelmClient do
it 'returns a list of Release objects' do
expect(Gitlab::Popen).to receive(:popen_with_detail)
- .with([%(helm list --namespace "#{namespace}" --tiller-namespace "#{namespace}" --output json --deployed)])
+ .with([%(helm list --namespace "#{namespace}" --tiller-namespace "#{tiller_namespace}" --output json --deployed)])
.and_return(Gitlab::Popen::Result.new([], raw_helm_list_page2, '', double(success?: true)))
releases = subject.releases(args: ['--deployed']).to_a
@@ -78,10 +79,10 @@ RSpec.describe Quality::HelmClient do
it 'automatically paginates releases' do
expect(Gitlab::Popen).to receive(:popen_with_detail).ordered
- .with([%(helm list --namespace "#{namespace}" --tiller-namespace "#{namespace}" --output json)])
+ .with([%(helm list --namespace "#{namespace}" --tiller-namespace "#{tiller_namespace}" --output json)])
.and_return(Gitlab::Popen::Result.new([], raw_helm_list_page1, '', double(success?: true)))
expect(Gitlab::Popen).to receive(:popen_with_detail).ordered
- .with([%(helm list --namespace "#{namespace}" --tiller-namespace "#{namespace}" --output json --offset review-6709-group-t40qbv)])
+ .with([%(helm list --namespace "#{namespace}" --tiller-namespace "#{tiller_namespace}" --output json --offset review-6709-group-t40qbv)])
.and_return(Gitlab::Popen::Result.new([], raw_helm_list_page2, '', double(success?: true)))
releases = subject.releases.to_a
@@ -94,7 +95,7 @@ RSpec.describe Quality::HelmClient do
describe '#delete' do
it 'raises an error if the Helm command fails' do
expect(Gitlab::Popen).to receive(:popen_with_detail)
- .with([%(helm delete --tiller-namespace "#{namespace}" --purge #{release_name})])
+ .with([%(helm delete --tiller-namespace "#{tiller_namespace}" --purge #{release_name})])
.and_return(Gitlab::Popen::Result.new([], '', '', double(success?: false)))
expect { subject.delete(release_name: release_name) }.to raise_error(described_class::CommandFailedError)
@@ -102,7 +103,7 @@ RSpec.describe Quality::HelmClient do
it 'calls helm delete with default arguments' do
expect(Gitlab::Popen).to receive(:popen_with_detail)
- .with([%(helm delete --tiller-namespace "#{namespace}" --purge #{release_name})])
+ .with([%(helm delete --tiller-namespace "#{tiller_namespace}" --purge #{release_name})])
.and_return(Gitlab::Popen::Result.new([], '', '', double(success?: true)))
expect(subject.delete(release_name: release_name)).to eq('')
@@ -113,7 +114,7 @@ RSpec.describe Quality::HelmClient do
it 'raises an error if the Helm command fails' do
expect(Gitlab::Popen).to receive(:popen_with_detail)
- .with([%(helm delete --tiller-namespace "#{namespace}" --purge #{release_name.join(' ')})])
+ .with([%(helm delete --tiller-namespace "#{tiller_namespace}" --purge #{release_name.join(' ')})])
.and_return(Gitlab::Popen::Result.new([], '', '', double(success?: false)))
expect { subject.delete(release_name: release_name) }.to raise_error(described_class::CommandFailedError)
@@ -121,7 +122,7 @@ RSpec.describe Quality::HelmClient do
it 'calls helm delete with multiple release names' do
expect(Gitlab::Popen).to receive(:popen_with_detail)
- .with([%(helm delete --tiller-namespace "#{namespace}" --purge #{release_name.join(' ')})])
+ .with([%(helm delete --tiller-namespace "#{tiller_namespace}" --purge #{release_name.join(' ')})])
.and_return(Gitlab::Popen::Result.new([], '', '', double(success?: true)))
expect(subject.delete(release_name: release_name)).to eq('')
diff --git a/spec/lib/quality/kubernetes_client_spec.rb b/spec/lib/quality/kubernetes_client_spec.rb
index 5bac102ac41..59d4a977d5e 100644
--- a/spec/lib/quality/kubernetes_client_spec.rb
+++ b/spec/lib/quality/kubernetes_client_spec.rb
@@ -5,15 +5,27 @@ require 'fast_spec_helper'
RSpec.describe Quality::KubernetesClient do
let(:namespace) { 'review-apps-ee' }
let(:release_name) { 'my-release' }
+ let(:pod_for_release) { "pod-my-release-abcd" }
+ let(:raw_resource_names_str) { "NAME\nfoo\n#{pod_for_release}\nbar" }
+ let(:raw_resource_names) { raw_resource_names_str.lines.map(&:strip) }
subject { described_class.new(namespace: namespace) }
+ describe 'RESOURCE_LIST' do
+ it 'returns the correct list of resources separated by commas' do
+ expect(described_class::RESOURCE_LIST).to eq('ingress,svc,pdb,hpa,deploy,statefulset,job,pod,secret,configmap,pvc,secret,clusterrole,clusterrolebinding,role,rolebinding,sa,crd')
+ end
+ end
+
describe '#cleanup' do
+ before do
+ allow(subject).to receive(:raw_resource_names).and_return(raw_resource_names)
+ end
+
it 'raises an error if the Kubernetes command fails' do
expect(Gitlab::Popen).to receive(:popen_with_detail)
- .with([%(kubectl --namespace "#{namespace}" delete ) \
- 'ingress,svc,pdb,hpa,deploy,statefulset,job,pod,secret,configmap,pvc,secret,clusterrole,clusterrolebinding,role,rolebinding,sa ' \
- "--now --ignore-not-found --include-uninitialized --wait=true -l release=\"#{release_name}\""])
+ .with(["kubectl delete #{described_class::RESOURCE_LIST} " +
+ %(--namespace "#{namespace}" --now --ignore-not-found --include-uninitialized --wait=true -l release="#{release_name}")])
.and_return(Gitlab::Popen::Result.new([], '', '', double(success?: false)))
expect { subject.cleanup(release_name: release_name) }.to raise_error(described_class::CommandFailedError)
@@ -21,9 +33,12 @@ RSpec.describe Quality::KubernetesClient do
it 'calls kubectl with the correct arguments' do
expect(Gitlab::Popen).to receive(:popen_with_detail)
- .with([%(kubectl --namespace "#{namespace}" delete ) \
- 'ingress,svc,pdb,hpa,deploy,statefulset,job,pod,secret,configmap,pvc,secret,clusterrole,clusterrolebinding,role,rolebinding,sa ' \
- "--now --ignore-not-found --include-uninitialized --wait=true -l release=\"#{release_name}\""])
+ .with(["kubectl delete #{described_class::RESOURCE_LIST} " +
+ %(--namespace "#{namespace}" --now --ignore-not-found --include-uninitialized --wait=true -l release="#{release_name}")])
+ .and_return(Gitlab::Popen::Result.new([], '', '', double(success?: true)))
+
+ expect(Gitlab::Popen).to receive(:popen_with_detail)
+ .with([%(kubectl delete --namespace "#{namespace}" #{pod_for_release})])
.and_return(Gitlab::Popen::Result.new([], '', '', double(success?: true)))
# We're not verifying the output here, just silencing it
@@ -35,20 +50,22 @@ RSpec.describe Quality::KubernetesClient do
it 'raises an error if the Kubernetes command fails' do
expect(Gitlab::Popen).to receive(:popen_with_detail)
- .with([%(kubectl --namespace "#{namespace}" delete ) \
- 'ingress,svc,pdb,hpa,deploy,statefulset,job,pod,secret,configmap,pvc,secret,clusterrole,clusterrolebinding,role,rolebinding,sa ' \
- "--now --ignore-not-found --include-uninitialized --wait=true -l 'release in (#{release_name.join(', ')})'"])
- .and_return(Gitlab::Popen::Result.new([], '', '', double(success?: false)))
+ .with(["kubectl delete #{described_class::RESOURCE_LIST} " +
+ %(--namespace "#{namespace}" --now --ignore-not-found --include-uninitialized --wait=true -l 'release in (#{release_name.join(', ')})')])
+ .and_return(Gitlab::Popen::Result.new([], '', '', double(success?: false)))
expect { subject.cleanup(release_name: release_name) }.to raise_error(described_class::CommandFailedError)
end
it 'calls kubectl with the correct arguments' do
expect(Gitlab::Popen).to receive(:popen_with_detail)
- .with([%(kubectl --namespace "#{namespace}" delete ) \
- 'ingress,svc,pdb,hpa,deploy,statefulset,job,pod,secret,configmap,pvc,secret,clusterrole,clusterrolebinding,role,rolebinding,sa ' \
- "--now --ignore-not-found --include-uninitialized --wait=true -l 'release in (#{release_name.join(', ')})'"])
- .and_return(Gitlab::Popen::Result.new([], '', '', double(success?: true)))
+ .with(["kubectl delete #{described_class::RESOURCE_LIST} " +
+ %(--namespace "#{namespace}" --now --ignore-not-found --include-uninitialized --wait=true -l 'release in (#{release_name.join(', ')})')])
+ .and_return(Gitlab::Popen::Result.new([], '', '', double(success?: true)))
+
+ expect(Gitlab::Popen).to receive(:popen_with_detail)
+ .with([%(kubectl delete --namespace "#{namespace}" #{pod_for_release})])
+ .and_return(Gitlab::Popen::Result.new([], '', '', double(success?: true)))
# We're not verifying the output here, just silencing it
expect { subject.cleanup(release_name: release_name) }.to output.to_stdout
@@ -58,24 +75,37 @@ RSpec.describe Quality::KubernetesClient do
context 'with `wait: false`' do
it 'raises an error if the Kubernetes command fails' do
expect(Gitlab::Popen).to receive(:popen_with_detail)
- .with([%(kubectl --namespace "#{namespace}" delete ) \
- 'ingress,svc,pdb,hpa,deploy,statefulset,job,pod,secret,configmap,pvc,secret,clusterrole,clusterrolebinding,role,rolebinding,sa ' \
- "--now --ignore-not-found --include-uninitialized --wait=false -l release=\"#{release_name}\""])
- .and_return(Gitlab::Popen::Result.new([], '', '', double(success?: false)))
+ .with(["kubectl delete #{described_class::RESOURCE_LIST} " +
+ %(--namespace "#{namespace}" --now --ignore-not-found --include-uninitialized --wait=false -l release="#{release_name}")])
+ .and_return(Gitlab::Popen::Result.new([], '', '', double(success?: false)))
expect { subject.cleanup(release_name: release_name, wait: false) }.to raise_error(described_class::CommandFailedError)
end
it 'calls kubectl with the correct arguments' do
expect(Gitlab::Popen).to receive(:popen_with_detail)
- .with([%(kubectl --namespace "#{namespace}" delete ) \
- 'ingress,svc,pdb,hpa,deploy,statefulset,job,pod,secret,configmap,pvc,secret,clusterrole,clusterrolebinding,role,rolebinding,sa ' \
- "--now --ignore-not-found --include-uninitialized --wait=false -l release=\"#{release_name}\""])
- .and_return(Gitlab::Popen::Result.new([], '', '', double(success?: true)))
+ .with(["kubectl delete #{described_class::RESOURCE_LIST} " +
+ %(--namespace "#{namespace}" --now --ignore-not-found --include-uninitialized --wait=false -l release="#{release_name}")])
+ .and_return(Gitlab::Popen::Result.new([], '', '', double(success?: true)))
+
+ expect(Gitlab::Popen).to receive(:popen_with_detail)
+ .with([%(kubectl delete --namespace "#{namespace}" #{pod_for_release})])
+ .and_return(Gitlab::Popen::Result.new([], '', '', double(success?: true)))
# We're not verifying the output here, just silencing it
expect { subject.cleanup(release_name: release_name, wait: false) }.to output.to_stdout
end
end
end
+
+ describe '#raw_resource_names' do
+ it 'calls kubectl to retrieve the resource names' do
+ expect(Gitlab::Popen).to receive(:popen_with_detail)
+ .with(["kubectl get #{described_class::RESOURCE_LIST} " +
+ %(--namespace "#{namespace}" -o custom-columns=NAME:.metadata.name)])
+ .and_return(Gitlab::Popen::Result.new([], raw_resource_names_str, '', double(success?: true)))
+
+ expect(subject.__send__(:raw_resource_names)).to eq(raw_resource_names)
+ end
+ end
end
diff --git a/spec/lib/quality/test_level_spec.rb b/spec/lib/quality/test_level_spec.rb
index c85994402dd..13817bdcc72 100644
--- a/spec/lib/quality/test_level_spec.rb
+++ b/spec/lib/quality/test_level_spec.rb
@@ -21,7 +21,7 @@ RSpec.describe Quality::TestLevel do
context 'when level is unit' do
it 'returns a pattern' do
expect(subject.pattern(:unit))
- .to eq("spec/{bin,config,db,dependencies,factories,finders,frontend,graphql,haml_lint,helpers,initializers,javascripts,lib,migrations,models,policies,presenters,rack_servers,routing,rubocop,serializers,services,sidekiq,tasks,uploaders,validators,views,workers,elastic_integration}{,/**/}*_spec.rb")
+ .to eq("spec/{bin,config,db,dependencies,factories,finders,frontend,graphql,haml_lint,helpers,initializers,javascripts,lib,models,policies,presenters,rack_servers,routing,rubocop,serializers,services,sidekiq,tasks,uploaders,validators,views,workers,elastic_integration}{,/**/}*_spec.rb")
end
end
@@ -82,7 +82,7 @@ RSpec.describe Quality::TestLevel do
context 'when level is unit' do
it 'returns a regexp' do
expect(subject.regexp(:unit))
- .to eq(%r{spec/(bin|config|db|dependencies|factories|finders|frontend|graphql|haml_lint|helpers|initializers|javascripts|lib|migrations|models|policies|presenters|rack_servers|routing|rubocop|serializers|services|sidekiq|tasks|uploaders|validators|views|workers|elastic_integration)})
+ .to eq(%r{spec/(bin|config|db|dependencies|factories|finders|frontend|graphql|haml_lint|helpers|initializers|javascripts|lib|models|policies|presenters|rack_servers|routing|rubocop|serializers|services|sidekiq|tasks|uploaders|validators|views|workers|elastic_integration)})
end
end
diff --git a/spec/lib/sentry/client/projects_spec.rb b/spec/lib/sentry/client/projects_spec.rb
new file mode 100644
index 00000000000..462f74eaac9
--- /dev/null
+++ b/spec/lib/sentry/client/projects_spec.rb
@@ -0,0 +1,119 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Sentry::Client::Projects do
+ include SentryClientHelpers
+
+ let(:sentry_url) { 'https://sentrytest.gitlab.com/api/0/projects/sentry-org/sentry-project' }
+ let(:token) { 'test-token' }
+ let(:client) { Sentry::Client.new(sentry_url, token) }
+ let(:projects_sample_response) do
+ Gitlab::Utils.deep_indifferent_access(
+ JSON.parse(fixture_file('sentry/list_projects_sample_response.json'))
+ )
+ end
+
+ shared_examples 'has correct return type' do |klass|
+ it "returns objects of type #{klass}" do
+ expect(subject).to all( be_a(klass) )
+ end
+ end
+
+ shared_examples 'has correct length' do |length|
+ it { expect(subject.length).to eq(length) }
+ end
+
+ describe '#projects' do
+ let(:sentry_list_projects_url) { 'https://sentrytest.gitlab.com/api/0/projects/' }
+ let(:sentry_api_response) { projects_sample_response }
+ let!(:sentry_api_request) { stub_sentry_request(sentry_list_projects_url, body: sentry_api_response) }
+
+ subject { client.projects }
+
+ it_behaves_like 'calls sentry api'
+
+ it_behaves_like 'has correct return type', Gitlab::ErrorTracking::Project
+ it_behaves_like 'has correct length', 2
+
+ context 'essential keys missing in API response' do
+ let(:sentry_api_response) do
+ projects_sample_response[0...1].map do |project|
+ project.except(:slug)
+ end
+ end
+
+ it 'raises exception' do
+ expect { subject }.to raise_error(Sentry::Client::MissingKeysError, 'Sentry API response is missing keys. key not found: "slug"')
+ end
+ end
+
+ context 'optional keys missing in sentry response' do
+ let(:sentry_api_response) do
+ projects_sample_response[0...1].map do |project|
+ project[:organization].delete(:id)
+ project.delete(:id)
+ project.except(:status)
+ end
+ end
+
+ it_behaves_like 'calls sentry api'
+
+ it_behaves_like 'has correct return type', Gitlab::ErrorTracking::Project
+ it_behaves_like 'has correct length', 1
+ end
+
+ context 'error object created from sentry response' do
+ using RSpec::Parameterized::TableSyntax
+
+ where(:sentry_project_object, :sentry_response) do
+ :id | :id
+ :name | :name
+ :status | :status
+ :slug | :slug
+ :organization_name | [:organization, :name]
+ :organization_id | [:organization, :id]
+ :organization_slug | [:organization, :slug]
+ end
+
+ with_them do
+ it do
+ expect(subject[0].public_send(sentry_project_object)).to(
+ eq(sentry_api_response[0].dig(*sentry_response))
+ )
+ end
+ end
+ end
+
+ context 'redirects' do
+ let(:sentry_api_url) { sentry_list_projects_url }
+
+ it_behaves_like 'no Sentry redirects'
+ end
+
+ # Sentry API returns 404 if there are extra slashes in the URL!
+ context 'extra slashes in URL' do
+ let(:sentry_url) { 'https://sentrytest.gitlab.com/api//0/projects//' }
+ let!(:valid_req_stub) do
+ stub_sentry_request(sentry_list_projects_url)
+ end
+
+ it 'removes extra slashes in api url' do
+ expect(Gitlab::HTTP).to receive(:get).with(
+ URI(sentry_list_projects_url),
+ anything
+ ).and_call_original
+
+ subject
+
+ expect(valid_req_stub).to have_been_requested
+ end
+ end
+
+ context 'when exception is raised' do
+ let(:sentry_request_url) { sentry_list_projects_url }
+
+ it_behaves_like 'maps Sentry exceptions'
+ end
+ end
+end
diff --git a/spec/lib/sentry/client_spec.rb b/spec/lib/sentry/client_spec.rb
index 8101664d34f..cff06bf4a5f 100644
--- a/spec/lib/sentry/client_spec.rb
+++ b/spec/lib/sentry/client_spec.rb
@@ -3,8 +3,16 @@
require 'spec_helper'
describe Sentry::Client do
+ include SentryClientHelpers
+
let(:sentry_url) { 'https://sentrytest.gitlab.com/api/0/projects/sentry-org/sentry-project' }
let(:token) { 'test-token' }
+ let(:default_httparty_options) do
+ {
+ follow_redirects: false,
+ headers: { "Authorization" => "Bearer test-token" }
+ }
+ end
let(:issues_sample_response) do
Gitlab::Utils.deep_indifferent_access(
@@ -12,102 +20,60 @@ describe Sentry::Client do
)
end
- let(:projects_sample_response) do
- Gitlab::Utils.deep_indifferent_access(
- JSON.parse(fixture_file('sentry/list_projects_sample_response.json'))
- )
- end
-
subject(:client) { described_class.new(sentry_url, token) }
- # Requires sentry_api_url and subject to be defined
- shared_examples 'no redirects' do
- let(:redirect_to) { 'https://redirected.example.com' }
- let(:other_url) { 'https://other.example.org' }
-
- let!(:redirected_req_stub) { stub_sentry_request(other_url) }
-
- let!(:redirect_req_stub) do
- stub_sentry_request(
- sentry_api_url,
- status: 302,
- headers: { location: redirect_to }
- )
- end
-
- it 'does not follow redirects' do
- expect { subject }.to raise_exception(Sentry::Client::Error, 'Sentry response status code: 302')
- expect(redirect_req_stub).to have_been_requested
- expect(redirected_req_stub).not_to have_been_requested
- end
- end
-
- shared_examples 'has correct return type' do |klass|
+ shared_examples 'issues has correct return type' do |klass|
it "returns objects of type #{klass}" do
- expect(subject).to all( be_a(klass) )
+ expect(subject[:issues]).to all( be_a(klass) )
end
end
- shared_examples 'has correct length' do |length|
- it { expect(subject.length).to eq(length) }
- end
-
- # Requires sentry_api_request and subject to be defined
- shared_examples 'calls sentry api' do
- it 'calls sentry api' do
- subject
-
- expect(sentry_api_request).to have_been_requested
- end
- end
-
- shared_examples 'maps exceptions' do
- exceptions = {
- Gitlab::HTTP::Error => 'Error when connecting to Sentry',
- Net::OpenTimeout => 'Connection to Sentry timed out',
- SocketError => 'Received SocketError when trying to connect to Sentry',
- OpenSSL::SSL::SSLError => 'Sentry returned invalid SSL data',
- Errno::ECONNREFUSED => 'Connection refused',
- StandardError => 'Sentry request failed due to StandardError'
- }
-
- exceptions.each do |exception, message|
- context "#{exception}" do
- before do
- stub_request(:get, sentry_request_url).to_raise(exception)
- end
-
- it do
- expect { subject }
- .to raise_exception(Sentry::Client::Error, message)
- end
- end
- end
+ shared_examples 'issues has correct length' do |length|
+ it { expect(subject[:issues].length).to eq(length) }
end
describe '#list_issues' do
let(:issue_status) { 'unresolved' }
let(:limit) { 20 }
+ let(:search_term) { '' }
+ let(:cursor) { nil }
+ let(:sort) { 'last_seen' }
let(:sentry_api_response) { issues_sample_response }
let(:sentry_request_url) { sentry_url + '/issues/?limit=20&query=is:unresolved' }
let!(:sentry_api_request) { stub_sentry_request(sentry_request_url, body: sentry_api_response) }
- subject { client.list_issues(issue_status: issue_status, limit: limit) }
+ subject { client.list_issues(issue_status: issue_status, limit: limit, search_term: search_term, sort: sort, cursor: cursor) }
it_behaves_like 'calls sentry api'
- it_behaves_like 'has correct return type', Gitlab::ErrorTracking::Error
- it_behaves_like 'has correct length', 1
+ it_behaves_like 'issues has correct return type', Gitlab::ErrorTracking::Error
+ it_behaves_like 'issues has correct length', 1
shared_examples 'has correct external_url' do
context 'external_url' do
it 'is constructed correctly' do
- expect(subject[0].external_url).to eq('https://sentrytest.gitlab.com/sentry-org/sentry-project/issues/11')
+ expect(subject[:issues][0].external_url).to eq('https://sentrytest.gitlab.com/sentry-org/sentry-project/issues/11')
end
end
end
+ context 'when response has a pagination info' do
+ let(:headers) do
+ {
+ link: '<https://sentrytest.gitlab.com>; rel="previous"; results="true"; cursor="1573556671000:0:1", <https://sentrytest.gitlab.com>; rel="next"; results="true"; cursor="1572959139000:0:0"'
+ }
+ end
+ let!(:sentry_api_request) { stub_sentry_request(sentry_request_url, body: sentry_api_response, headers: headers) }
+
+ it 'parses the pagination' do
+ expect(subject[:pagination]).to eq(
+ 'previous' => { 'cursor' => '1573556671000:0:1' },
+ 'next' => { 'cursor' => '1572959139000:0:0' }
+ )
+ end
+ end
+
context 'error object created from sentry response' do
using RSpec::Parameterized::TableSyntax
@@ -130,7 +96,7 @@ describe Sentry::Client do
end
with_them do
- it { expect(subject[0].public_send(error_object)).to eq(sentry_api_response[0].dig(*sentry_response)) }
+ it { expect(subject[:issues][0].public_send(error_object)).to eq(sentry_api_response[0].dig(*sentry_response)) }
end
it_behaves_like 'has correct external_url'
@@ -139,7 +105,7 @@ describe Sentry::Client do
context 'redirects' do
let(:sentry_api_url) { sentry_url + '/issues/?limit=20&query=is:unresolved' }
- it_behaves_like 'no redirects'
+ it_behaves_like 'no Sentry redirects'
end
# Sentry API returns 404 if there are extra slashes in the URL!
@@ -164,6 +130,35 @@ describe Sentry::Client do
end
end
+ context 'requests with sort parameter in sentry api' do
+ let(:sentry_request_url) do
+ 'https://sentrytest.gitlab.com/api/0/projects/sentry-org/sentry-project/' \
+ 'issues/?limit=20&query=is:unresolved&sort=freq'
+ end
+ let!(:sentry_api_request) { stub_sentry_request(sentry_request_url, body: sentry_api_response) }
+
+ subject { client.list_issues(issue_status: issue_status, limit: limit, sort: 'frequency') }
+
+ it 'calls the sentry api with sort params' do
+ expect(Gitlab::HTTP).to receive(:get).with(
+ URI("#{sentry_url}/issues/"),
+ default_httparty_options.merge(query: { limit: 20, query: "is:unresolved", sort: "freq" })
+ ).and_call_original
+
+ subject
+
+ expect(sentry_api_request).to have_been_requested
+ end
+ end
+
+ context 'with invalid sort params' do
+ subject { client.list_issues(issue_status: issue_status, limit: limit, sort: 'fish') }
+
+ it 'throws an error' do
+ expect { subject }.to raise_error(Sentry::Client::BadRequestError, 'Invalid value for sort param')
+ end
+ end
+
context 'Older sentry versions where keys are not present' do
let(:sentry_api_response) do
issues_sample_response[0...1].map do |issue|
@@ -174,8 +169,8 @@ describe Sentry::Client do
it_behaves_like 'calls sentry api'
- it_behaves_like 'has correct return type', Gitlab::ErrorTracking::Error
- it_behaves_like 'has correct length', 1
+ it_behaves_like 'issues has correct return type', Gitlab::ErrorTracking::Error
+ it_behaves_like 'issues has correct length', 1
it_behaves_like 'has correct external_url'
end
@@ -201,114 +196,26 @@ describe Sentry::Client do
end
end
- it_behaves_like 'maps exceptions'
- end
-
- describe '#list_projects' do
- let(:sentry_list_projects_url) { 'https://sentrytest.gitlab.com/api/0/projects/' }
-
- let(:sentry_api_response) { projects_sample_response }
-
- let!(:sentry_api_request) { stub_sentry_request(sentry_list_projects_url, body: sentry_api_response) }
-
- subject { client.list_projects }
-
- it_behaves_like 'calls sentry api'
-
- it_behaves_like 'has correct return type', Gitlab::ErrorTracking::Project
- it_behaves_like 'has correct length', 2
-
- context 'essential keys missing in API response' do
- let(:sentry_api_response) do
- projects_sample_response[0...1].map do |project|
- project.except(:slug)
- end
- end
-
- it 'raises exception' do
- expect { subject }.to raise_error(Sentry::Client::MissingKeysError, 'Sentry API response is missing keys. key not found: "slug"')
- end
- end
+ it_behaves_like 'maps Sentry exceptions'
- context 'optional keys missing in sentry response' do
- let(:sentry_api_response) do
- projects_sample_response[0...1].map do |project|
- project[:organization].delete(:id)
- project.delete(:id)
- project.except(:status)
- end
- end
+ context 'when search term is present' do
+ let(:search_term) { 'NoMethodError' }
+ let(:sentry_request_url) { "#{sentry_url}/issues/?limit=20&query=is:unresolved NoMethodError" }
it_behaves_like 'calls sentry api'
- it_behaves_like 'has correct return type', Gitlab::ErrorTracking::Project
- it_behaves_like 'has correct length', 1
+ it_behaves_like 'issues has correct return type', Gitlab::ErrorTracking::Error
+ it_behaves_like 'issues has correct length', 1
end
- context 'error object created from sentry response' do
- using RSpec::Parameterized::TableSyntax
-
- where(:sentry_project_object, :sentry_response) do
- :id | :id
- :name | :name
- :status | :status
- :slug | :slug
- :organization_name | [:organization, :name]
- :organization_id | [:organization, :id]
- :organization_slug | [:organization, :slug]
- end
+ context 'when cursor is present' do
+ let(:cursor) { '1572959139000:0:0' }
+ let(:sentry_request_url) { "#{sentry_url}/issues/?limit=20&cursor=#{cursor}&query=is:unresolved" }
- with_them do
- it do
- expect(subject[0].public_send(sentry_project_object)).to(
- eq(sentry_api_response[0].dig(*sentry_response))
- )
- end
- end
- end
-
- context 'redirects' do
- let(:sentry_api_url) { sentry_list_projects_url }
-
- it_behaves_like 'no redirects'
- end
-
- # Sentry API returns 404 if there are extra slashes in the URL!
- context 'extra slashes in URL' do
- let(:sentry_url) { 'https://sentrytest.gitlab.com/api//0/projects//' }
- let(:client) { described_class.new(sentry_url, token) }
-
- let!(:valid_req_stub) do
- stub_sentry_request(sentry_list_projects_url)
- end
-
- it 'removes extra slashes in api url' do
- expect(Gitlab::HTTP).to receive(:get).with(
- URI(sentry_list_projects_url),
- anything
- ).and_call_original
-
- subject
-
- expect(valid_req_stub).to have_been_requested
- end
- end
-
- context 'when exception is raised' do
- let(:sentry_request_url) { sentry_list_projects_url }
+ it_behaves_like 'calls sentry api'
- it_behaves_like 'maps exceptions'
+ it_behaves_like 'issues has correct return type', Gitlab::ErrorTracking::Error
+ it_behaves_like 'issues has correct length', 1
end
end
-
- private
-
- def stub_sentry_request(url, body: {}, status: 200, headers: {})
- stub_request(:get, url)
- .to_return(
- status: status,
- headers: { 'Content-Type' => 'application/json' }.merge(headers),
- body: body.to_json
- )
- end
end
diff --git a/spec/lib/sentry/pagination_parser_spec.rb b/spec/lib/sentry/pagination_parser_spec.rb
new file mode 100644
index 00000000000..1be6f9f4163
--- /dev/null
+++ b/spec/lib/sentry/pagination_parser_spec.rb
@@ -0,0 +1,63 @@
+# frozen_string_literal: true
+
+require 'fast_spec_helper'
+require 'support/helpers/fixture_helpers'
+
+describe Sentry::PaginationParser do
+ include FixtureHelpers
+
+ describe '.parse' do
+ subject { described_class.parse(headers) }
+
+ context 'when headers do not have "link" param' do
+ let(:headers) { {} }
+
+ it 'returns empty hash' do
+ is_expected.to eq({})
+ end
+ end
+
+ context 'when headers.link has previous and next pages' do
+ let(:headers) do
+ {
+ 'link' => '<https://sentrytest.gitlab.com>; rel="previous"; results="true"; cursor="1573556671000:0:1", <https://sentrytest.gitlab.com>; rel="next"; results="true"; cursor="1572959139000:0:0"'
+ }
+ end
+
+ it 'returns info about both pages' do
+ is_expected.to eq(
+ 'previous' => { 'cursor' => '1573556671000:0:1' },
+ 'next' => { 'cursor' => '1572959139000:0:0' }
+ )
+ end
+ end
+
+ context 'when headers.link has only next page' do
+ let(:headers) do
+ {
+ 'link' => '<https://sentrytest.gitlab.com>; rel="previous"; results="false"; cursor="1573556671000:0:1", <https://sentrytest.gitlab.com>; rel="next"; results="true"; cursor="1572959139000:0:0"'
+ }
+ end
+
+ it 'returns only info about the next page' do
+ is_expected.to eq(
+ 'next' => { 'cursor' => '1572959139000:0:0' }
+ )
+ end
+ end
+
+ context 'when headers.link has only previous page' do
+ let(:headers) do
+ {
+ 'link' => '<https://sentrytest.gitlab.com>; rel="previous"; results="true"; cursor="1573556671000:0:1", <https://sentrytest.gitlab.com>; rel="next"; results="false"; cursor="1572959139000:0:0"'
+ }
+ end
+
+ it 'returns only info about the previous page' do
+ is_expected.to eq(
+ 'previous' => { 'cursor' => '1573556671000:0:1' }
+ )
+ end
+ end
+ end
+end
diff --git a/spec/mailers/emails/profile_spec.rb b/spec/mailers/emails/profile_spec.rb
index d340f207dc7..58c04fb4834 100644
--- a/spec/mailers/emails/profile_spec.rb
+++ b/spec/mailers/emails/profile_spec.rb
@@ -122,4 +122,38 @@ describe Emails::Profile do
it { expect { Notify.new_gpg_key_email('foo') }.not_to raise_error }
end
end
+
+ describe 'user personal access token is about to expire' do
+ let_it_be(:user) { create(:user) }
+
+ subject { Notify.access_token_about_to_expire_email(user) }
+
+ it_behaves_like 'an email sent from GitLab'
+ it_behaves_like 'it should not have Gmail Actions links'
+ it_behaves_like 'a user cannot unsubscribe through footer link'
+
+ it 'is sent to the user' do
+ is_expected.to deliver_to user.email
+ end
+
+ it 'has the correct subject' do
+ is_expected.to have_subject /^Your Personal Access Tokens will expire in 7 days or less$/i
+ end
+
+ it 'mentions the access tokens will expire' do
+ is_expected.to have_body_text /One or more of your personal access tokens will expire in 7 days or less/
+ end
+
+ it 'includes a link to personal access tokens page' do
+ is_expected.to have_body_text /#{profile_personal_access_tokens_path}/
+ end
+
+ it 'includes the email reason' do
+ is_expected.to have_body_text /You're receiving this email because of your account on localhost/
+ end
+
+ context 'with User does not exist' do
+ it { expect { Notify.access_token_about_to_expire_email('foo') }.not_to raise_error }
+ end
+ end
end
diff --git a/spec/mailers/notify_spec.rb b/spec/mailers/notify_spec.rb
index cafb96898b3..e4a7d62eb02 100644
--- a/spec/mailers/notify_spec.rb
+++ b/spec/mailers/notify_spec.rb
@@ -109,6 +109,7 @@ describe Notify do
describe 'that are reassigned' do
let(:previous_assignee) { create(:user, name: 'Previous Assignee') }
+
subject { described_class.reassigned_issue_email(recipient.id, issue.id, [previous_assignee.id], current_user.id) }
it_behaves_like 'a multiple recipients email'
@@ -207,6 +208,7 @@ describe Notify do
describe 'status changed' do
let(:status) { 'closed' }
+
subject { described_class.issue_status_changed_email(recipient.id, issue.id, status, current_user.id) }
it_behaves_like 'an answer to an existing thread with reply-by-email enabled' do
@@ -235,6 +237,7 @@ describe Notify do
describe 'moved to another project' do
let(:new_issue) { create(:issue) }
+
subject { described_class.issue_moved_email(recipient, issue, new_issue, current_user) }
context 'when a user has permissions to access the new issue' do
@@ -334,6 +337,7 @@ describe Notify do
describe 'that are reassigned' do
let(:previous_assignee) { create(:user, name: 'Previous Assignee') }
+
subject { described_class.reassigned_merge_request_email(recipient.id, merge_request.id, [previous_assignee.id], current_user.id) }
it_behaves_like 'a multiple recipients email'
@@ -426,6 +430,7 @@ describe Notify do
describe 'status changed' do
let(:status) { 'reopened' }
+
subject { described_class.merge_request_status_email(recipient.id, merge_request.id, status, current_user.id) }
it_behaves_like 'an answer to an existing thread with reply-by-email enabled' do
@@ -454,6 +459,7 @@ describe Notify do
describe 'that are merged' do
let(:merge_author) { create(:user) }
+
subject { described_class.merged_merge_request_email(recipient.id, merge_request.id, merge_author.id) }
it_behaves_like 'a multiple recipients email'
@@ -698,6 +704,7 @@ describe Notify do
describe 'project was moved' do
let(:recipient) { user }
+
subject { described_class.project_was_moved_email(project.id, user.id, "gitlab/gitlab") }
it_behaves_like 'an email sent to a user'
@@ -725,6 +732,7 @@ describe Notify do
project.request_access(user)
project.requesters.find_by(user_id: user.id)
end
+
subject { described_class.member_access_requested_email('project', project_member.id, recipient.id) }
it_behaves_like 'an email sent from GitLab'
@@ -750,6 +758,7 @@ describe Notify do
project.request_access(user)
project.requesters.find_by(user_id: user.id)
end
+
subject { described_class.member_access_denied_email('project', project.id, user.id) }
it_behaves_like 'an email sent from GitLab'
@@ -769,6 +778,7 @@ describe Notify do
let(:owner) { create(:user, name: "Chang O'Keefe") }
let(:project) { create(:project, :public, namespace: owner.namespace) }
let(:project_member) { create(:project_member, project: project, user: user) }
+
subject { described_class.member_access_granted_email('project', project_member.id) }
it_behaves_like 'an email sent from GitLab'
@@ -990,7 +1000,8 @@ describe Notify do
end
context 'when a comment on an existing discussion' do
- let!(:second_note) { create(model, author: note_author, noteable: nil, in_reply_to: note) }
+ let(:first_note) { create_note }
+ let(:note) { create(model, author: note_author, noteable: nil, in_reply_to: first_note) }
it 'contains an introduction' do
is_expected.to have_body_text 'commented on a'
@@ -1000,7 +1011,11 @@ describe Notify do
describe 'on a commit' do
let(:commit) { project.commit }
- let(:note) { create(:discussion_note_on_commit, commit_id: commit.id, project: project, author: note_author) }
+ let(:note) { create_note }
+
+ def create_note
+ create(:discussion_note_on_commit, commit_id: commit.id, project: project, author: note_author)
+ end
before do
allow(note).to receive(:noteable).and_return(commit)
@@ -1027,9 +1042,13 @@ describe Notify do
end
describe 'on a merge request' do
- let(:note) { create(:discussion_note_on_merge_request, noteable: merge_request, project: project, author: note_author) }
+ let(:note) { create_note }
let(:note_on_merge_request_path) { project_merge_request_path(project, merge_request, anchor: "note_#{note.id}") }
+ def create_note
+ create(:discussion_note_on_merge_request, noteable: merge_request, project: project, author: note_author)
+ end
+
before do
allow(note).to receive(:noteable).and_return(merge_request)
end
@@ -1055,9 +1074,13 @@ describe Notify do
end
describe 'on an issue' do
- let(:note) { create(:discussion_note_on_issue, noteable: issue, project: project, author: note_author) }
+ let(:note) { create_note }
let(:note_on_issue_path) { project_issue_path(project, issue, anchor: "note_#{note.id}") }
+ def create_note
+ create(:discussion_note_on_issue, noteable: issue, project: project, author: note_author)
+ end
+
before do
allow(note).to receive(:noteable).and_return(issue)
end
@@ -1095,7 +1118,9 @@ describe Notify do
context 'when note is not on text' do
before do
- allow_any_instance_of(DiffDiscussion).to receive(:on_text?).and_return(false)
+ allow_next_instance_of(DiffDiscussion) do |instance|
+ allow(instance).to receive(:on_text?).and_return(false)
+ end
end
it 'does not include diffs with character-level highlighting' do
@@ -1132,7 +1157,8 @@ describe Notify do
end
context 'when a comment on an existing discussion' do
- let!(:second_note) { create(model, author: note_author, noteable: nil, in_reply_to: note) }
+ let(:first_note) { create(model) }
+ let(:note) { create(model, author: note_author, noteable: nil, in_reply_to: first_note) }
it 'contains an introduction' do
is_expected.to have_body_text 'commented on a discussion on'
@@ -1174,6 +1200,7 @@ describe Notify do
group.request_access(user)
group.requesters.find_by(user_id: user.id)
end
+
subject { described_class.member_access_requested_email('group', group_member.id, recipient.id) }
it_behaves_like 'an email sent from GitLab'
@@ -1200,6 +1227,7 @@ describe Notify do
group.requesters.find_by(user_id: user.id)
end
let(:recipient) { user }
+
subject { described_class.member_access_denied_email('group', group.id, user.id) }
it_behaves_like 'an email sent from GitLab'
diff --git a/spec/migrations/20191015154408_drop_merge_requests_require_code_owner_approval_from_projects_spec.rb b/spec/migrations/20191015154408_drop_merge_requests_require_code_owner_approval_from_projects_spec.rb
new file mode 100644
index 00000000000..e90d56cfeef
--- /dev/null
+++ b/spec/migrations/20191015154408_drop_merge_requests_require_code_owner_approval_from_projects_spec.rb
@@ -0,0 +1,56 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require Rails.root.join('db', 'post_migrate', '20191015154408_drop_merge_requests_require_code_owner_approval_from_projects.rb')
+
+describe DropMergeRequestsRequireCodeOwnerApprovalFromProjects, :migration do
+ let(:projects_table) { table(:projects) }
+
+ subject(:migration) { described_class.new }
+
+ describe "without running the migration" do
+ it "project_table has a :merge_requests_require_code_owner_approval column" do
+ expect(projects_table.column_names)
+ .to include("merge_requests_require_code_owner_approval")
+ end
+
+ it "project_table has a :projects_requiring_code_owner_approval index" do
+ expect(ActiveRecord::Base.connection.indexes(:projects).collect(&:name))
+ .to include("projects_requiring_code_owner_approval")
+ end
+ end
+
+ describe '#up' do
+ context "without running "
+ before do
+ migrate!
+ end
+
+ it "drops the :merge_requests_require_code_owner_approval column" do
+ expect(projects_table.column_names)
+ .not_to include("merge_requests_require_code_owner_approval")
+ end
+
+ it "drops the :projects_requiring_code_owner_approval index" do
+ expect(ActiveRecord::Base.connection.indexes(:projects).collect(&:name))
+ .not_to include("projects_requiring_code_owner_approval")
+ end
+ end
+
+ describe "#down" do
+ before do
+ migration.up
+ migration.down
+ end
+
+ it "project_table has a :merge_requests_require_code_owner_approval column" do
+ expect(projects_table.column_names)
+ .to include("merge_requests_require_code_owner_approval")
+ end
+
+ it "project_table has a :projects_requiring_code_owner_approval index" do
+ expect(ActiveRecord::Base.connection.indexes(:projects).collect(&:name))
+ .to include("projects_requiring_code_owner_approval")
+ end
+ end
+end
diff --git a/spec/migrations/20191125114345_add_admin_mode_protected_path_spec.rb b/spec/migrations/20191125114345_add_admin_mode_protected_path_spec.rb
new file mode 100644
index 00000000000..110da221393
--- /dev/null
+++ b/spec/migrations/20191125114345_add_admin_mode_protected_path_spec.rb
@@ -0,0 +1,50 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require Rails.root.join('db', 'migrate', '20191125114345_add_admin_mode_protected_path.rb')
+
+describe AddAdminModeProtectedPath, :migration do
+ ADMIN_MODE_ENDPOINT = '/admin/session'
+
+ subject(:migration) { described_class.new }
+
+ let(:application_settings) { table(:application_settings) }
+
+ context 'no settings available' do
+ it 'makes no changes' do
+ expect { migrate! }.not_to change { application_settings.count }
+ end
+ end
+
+ context 'protected_paths is null' do
+ before do
+ application_settings.create!(protected_paths: nil)
+ end
+
+ it 'makes no changes' do
+ expect { migrate! }.not_to change { application_settings.first.protected_paths }
+ end
+ end
+
+ it 'appends admin mode endpoint' do
+ application_settings.create!(protected_paths: '{a,b,c}')
+
+ protected_paths_before = %w[a b c]
+ protected_paths_after = protected_paths_before.dup << ADMIN_MODE_ENDPOINT
+
+ expect { migrate! }.to change { application_settings.first.protected_paths }.from(protected_paths_before).to(protected_paths_after)
+ end
+
+ it 'new default includes admin mode endpoint' do
+ settings_before = application_settings.create!
+
+ expect(settings_before.protected_paths).not_to include(ADMIN_MODE_ENDPOINT)
+
+ migrate!
+
+ application_settings.reset_column_information
+ settings_after = application_settings.create!
+
+ expect(settings_after.protected_paths).to include(ADMIN_MODE_ENDPOINT)
+ end
+end
diff --git a/spec/migrations/insert_project_hooks_plan_limits_spec.rb b/spec/migrations/insert_project_hooks_plan_limits_spec.rb
new file mode 100644
index 00000000000..abc2ccd0507
--- /dev/null
+++ b/spec/migrations/insert_project_hooks_plan_limits_spec.rb
@@ -0,0 +1,67 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require Rails.root.join('db', 'migrate', '20191216183532_insert_project_hooks_plan_limits.rb')
+
+describe InsertProjectHooksPlanLimits, :migration do
+ let(:migration) { described_class.new }
+ let(:plans) { table(:plans) }
+ let(:plan_limits) { table(:plan_limits) }
+
+ before do
+ plans.create(id: 34, name: 'free')
+ plans.create(id: 2, name: 'bronze')
+ plans.create(id: 3, name: 'silver')
+ plans.create(id: 4, name: 'gold')
+ plan_limits.create(plan_id: 34, ci_active_jobs: 5)
+ end
+
+ context 'when on Gitlab.com' do
+ before do
+ expect(Gitlab).to receive(:com?).at_most(:twice).and_return(true)
+ end
+
+ describe '#up' do
+ it 'updates the project_hooks plan limits' do
+ migration.up
+
+ expect(plan_limits.pluck(:plan_id, :project_hooks, :ci_active_jobs))
+ .to match_array([[34, 10, 5], [2, 20, 0], [3, 30, 0], [4, 100, 0]])
+ end
+ end
+
+ describe '#down' do
+ it 'updates the project_hooks plan limits to 0' do
+ migration.up
+ migration.down
+
+ expect(plan_limits.pluck(:plan_id, :project_hooks, :ci_active_jobs))
+ .to match_array([[34, 0, 5], [2, 0, 0], [3, 0, 0], [4, 0, 0]])
+ end
+ end
+ end
+
+ context 'when on self-hosted' do
+ before do
+ expect(Gitlab).to receive(:com?).and_return(false)
+ end
+
+ describe '#up' do
+ it 'does not update the plan limits' do
+ migration.up
+
+ expect(plan_limits.pluck(:plan_id, :project_hooks, :ci_active_jobs))
+ .to match_array([[34, 0, 5]])
+ end
+ end
+
+ describe '#down' do
+ it 'does not update the plan limits' do
+ migration.down
+
+ expect(plan_limits.pluck(:plan_id, :project_hooks, :ci_active_jobs))
+ .to match_array([[34, 0, 5]])
+ end
+ end
+ end
+end
diff --git a/spec/migrations/migrate_ops_feature_flags_scopes_target_user_ids_spec.rb b/spec/migrations/migrate_ops_feature_flags_scopes_target_user_ids_spec.rb
new file mode 100644
index 00000000000..5f865579c96
--- /dev/null
+++ b/spec/migrations/migrate_ops_feature_flags_scopes_target_user_ids_spec.rb
@@ -0,0 +1,137 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require Rails.root.join('db', 'post_migrate', '20191118211629_migrate_ops_feature_flags_scopes_target_user_ids.rb')
+
+describe MigrateOpsFeatureFlagsScopesTargetUserIds, :migration do
+ let(:namespaces) { table(:namespaces) }
+ let(:projects) { table(:projects) }
+ let(:flags) { table(:operations_feature_flags) }
+ let(:scopes) { table(:operations_feature_flag_scopes) }
+
+ def setup
+ namespace = namespaces.create!(name: 'foo', path: 'foo')
+ project = projects.create!(namespace_id: namespace.id)
+ flag = flags.create!(project_id: project.id, active: true, name: 'test_flag')
+
+ flag
+ end
+
+ it 'migrates successfully when there are no scopes in the database' do
+ setup
+
+ disable_migrations_output { migrate! }
+
+ expect(scopes.count).to eq(0)
+ end
+
+ it 'migrates a disabled scope with gradualRolloutUserId and userWithId strategies' do
+ flag = setup
+ scope = scopes.create!(feature_flag_id: flag.id, active: false, strategies: [
+ { name: 'gradualRolloutUserId', parameters: { groupId: 'default', percentage: '50' } },
+ { name: 'userWithId', parameters: { userIds: '5' } }
+ ])
+
+ disable_migrations_output { migrate! }
+
+ scope.reload
+ expect(scope.active).to eq(true)
+ expect(scope.strategies).to eq([{ 'name' => 'userWithId', 'parameters' => { 'userIds' => '5' } }])
+ end
+
+ it 'migrates a disabled scope with default and userWithId strategies' do
+ flag = setup
+ scope = scopes.create!(feature_flag_id: flag.id, active: false, strategies: [
+ { name: 'default', parameters: {} },
+ { name: 'userWithId', parameters: { userIds: 'amy@gmail.com,karen@gmail.com' } }
+ ])
+
+ disable_migrations_output { migrate! }
+
+ scope.reload
+ expect(scope.active).to eq(true)
+ expect(scope.strategies).to eq([{ 'name' => 'userWithId', 'parameters' => { 'userIds' => 'amy@gmail.com,karen@gmail.com' } }])
+ end
+
+ it 'migrates an enabled scope with default and userWithId strategies' do
+ flag = setup
+ scope = scopes.create!(feature_flag_id: flag.id, active: true, strategies: [
+ { name: 'default', parameters: {} },
+ { name: 'userWithId', parameters: { userIds: 'tim' } }
+ ])
+
+ disable_migrations_output { migrate! }
+
+ scope.reload
+ expect(scope.active).to eq(true)
+ expect(scope.strategies).to eq([{ 'name' => 'default', 'parameters' => {} }])
+ end
+
+ it 'does not alter an enabled scope with gradualRolloutUserId and userWithId strategies' do
+ flag = setup
+ scope = scopes.create!(feature_flag_id: flag.id, active: true, strategies: [
+ { name: 'gradualRolloutUserId', parameters: { groupId: 'default', percentage: '50' } },
+ { name: 'userWithId', parameters: { userIds: '5' } }
+ ])
+
+ disable_migrations_output { migrate! }
+
+ scope.reload
+ expect(scope.active).to eq(true)
+ expect(scope.strategies).to eq([
+ { 'name' => 'gradualRolloutUserId', 'parameters' => { 'groupId' => 'default', 'percentage' => '50' } },
+ { 'name' => 'userWithId', 'parameters' => { 'userIds' => '5' } }
+ ])
+ end
+
+ it 'does not alter a disabled scope without a userWithId strategy' do
+ flag = setup
+ scope = scopes.create!(feature_flag_id: flag.id, active: false, strategies: [
+ { name: 'gradualRolloutUserId', parameters: { percentage: '60' } }
+ ])
+
+ disable_migrations_output { migrate! }
+
+ scope.reload
+ expect(scope.active).to eq(false)
+ expect(scope.strategies).to eq([
+ { 'name' => 'gradualRolloutUserId', 'parameters' => { 'percentage' => '60' } }
+ ])
+ end
+
+ it 'does not alter an enabled scope without a userWithId strategy' do
+ flag = setup
+ scope = scopes.create!(feature_flag_id: flag.id, active: true, strategies: [
+ { name: 'default', parameters: {} }
+ ])
+
+ disable_migrations_output { migrate! }
+
+ scope.reload
+ expect(scope.active).to eq(true)
+ expect(scope.strategies).to eq([
+ { 'name' => 'default', 'parameters' => {} }
+ ])
+ end
+
+ it 'migrates multiple scopes' do
+ flag = setup
+ scope_a = scopes.create!(feature_flag_id: flag.id, active: false, strategies: [
+ { name: 'gradualRolloutUserId', parameters: { groupId: 'default', percentage: '50' } },
+ { name: 'userWithId', parameters: { userIds: '5,6,7' } }
+ ])
+ scope_b = scopes.create!(feature_flag_id: flag.id, active: false, environment_scope: 'production', strategies: [
+ { name: 'default', parameters: {} },
+ { name: 'userWithId', parameters: { userIds: 'lisa,carol' } }
+ ])
+
+ disable_migrations_output { migrate! }
+
+ scope_a.reload
+ scope_b.reload
+ expect(scope_a.active).to eq(true)
+ expect(scope_a.strategies).to eq([{ 'name' => 'userWithId', 'parameters' => { 'userIds' => '5,6,7' } }])
+ expect(scope_b.active).to eq(true)
+ expect(scope_b.strategies).to eq([{ 'name' => 'userWithId', 'parameters' => { 'userIds' => 'lisa,carol' } }])
+ end
+end
diff --git a/spec/migrations/nullify_users_role_spec.rb b/spec/migrations/nullify_users_role_spec.rb
new file mode 100644
index 00000000000..ad25e4885ef
--- /dev/null
+++ b/spec/migrations/nullify_users_role_spec.rb
@@ -0,0 +1,33 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require Rails.root.join('db', 'post_migrate', '20191104142124_nullify_users_role.rb')
+
+describe NullifyUsersRole, :migration do
+ let(:users) { table(:users) }
+
+ before do
+ allow(Gitlab).to receive(:com?).and_return(true)
+
+ users.create!(role: 0, updated_at: '2019-11-04 12:08:00', projects_limit: 0, email: '1')
+ users.create!(role: 1, updated_at: '2019-11-04 12:08:00', projects_limit: 0, email: '2')
+ users.create!(role: 0, updated_at: '2019-11-06 12:08:00', projects_limit: 0, email: '3')
+
+ migrate!
+ end
+
+ it 'nullifies the role of the user with updated_at < 2019-11-05 12:08:00 and a role of 0' do
+ expect(users.where(role: nil).count).to eq(1)
+ expect(users.where(role: nil).first.email).to eq('1')
+ end
+
+ it 'leaves the user with role of 1' do
+ expect(users.where(role: 1).count).to eq(1)
+ expect(users.where(role: 1).first.email).to eq('2')
+ end
+
+ it 'leaves the user with updated_at > 2019-11-05 12:08:00' do
+ expect(users.where(role: 0).count).to eq(1)
+ expect(users.where(role: 0).first.email).to eq('3')
+ end
+end
diff --git a/spec/migrations/update_minimum_password_length_spec.rb b/spec/migrations/update_minimum_password_length_spec.rb
new file mode 100644
index 00000000000..0a763e5ce0f
--- /dev/null
+++ b/spec/migrations/update_minimum_password_length_spec.rb
@@ -0,0 +1,30 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require Rails.root.join('db', 'post_migrate', '20191205084057_update_minimum_password_length')
+
+describe UpdateMinimumPasswordLength, :migration do
+ let(:application_settings) { table(:application_settings) }
+ let(:application_setting) do
+ application_settings.create!(
+ minimum_password_length: ApplicationSetting::DEFAULT_MINIMUM_PASSWORD_LENGTH
+ )
+ end
+
+ before do
+ stub_const('ApplicationSetting::DEFAULT_MINIMUM_PASSWORD_LENGTH', 10)
+ allow(Devise.password_length).to receive(:min).and_return(12)
+ end
+
+ it 'correctly migrates minimum_password_length' do
+ reversible_migration do |migration|
+ migration.before -> {
+ expect(application_setting.reload.minimum_password_length).to eq(10)
+ }
+
+ migration.after -> {
+ expect(application_setting.reload.minimum_password_length).to eq(12)
+ }
+ end
+ end
+end
diff --git a/spec/models/active_session_spec.rb b/spec/models/active_session_spec.rb
index b1f93dc7189..072d0fa86e5 100644
--- a/spec/models/active_session_spec.rb
+++ b/spec/models/active_session_spec.rb
@@ -242,23 +242,13 @@ RSpec.describe ActiveSession, :clean_gitlab_redis_shared_state do
expect(redis.scan_each(match: "session:gitlab:*").to_a).to be_empty
end
end
-
- it 'does not remove the devise session if the active session could not be found' do
- Gitlab::Redis::SharedState.with do |redis|
- redis.set("session:gitlab:6919a6f1bb119dd7396fadc38fd18d0d", '')
- end
-
- other_user = create(:user)
-
- ActiveSession.destroy(other_user, request.session.id)
-
- Gitlab::Redis::SharedState.with do |redis|
- expect(redis.scan_each(match: "session:gitlab:*").to_a).not_to be_empty
- end
- end
end
describe '.cleanup' do
+ before do
+ stub_const("ActiveSession::ALLOWED_NUMBER_OF_ACTIVE_SESSIONS", 5)
+ end
+
it 'removes obsolete lookup entries' do
Gitlab::Redis::SharedState.with do |redis|
redis.set("session:user:gitlab:#{user.id}:6919a6f1bb119dd7396fadc38fd18d0d", '')
@@ -276,5 +266,98 @@ RSpec.describe ActiveSession, :clean_gitlab_redis_shared_state do
it 'does not bail if there are no lookup entries' do
ActiveSession.cleanup(user)
end
+
+ context 'cleaning up old sessions' do
+ let(:max_number_of_sessions_plus_one) { ActiveSession::ALLOWED_NUMBER_OF_ACTIVE_SESSIONS + 1 }
+ let(:max_number_of_sessions_plus_two) { ActiveSession::ALLOWED_NUMBER_OF_ACTIVE_SESSIONS + 2 }
+
+ before do
+ Gitlab::Redis::SharedState.with do |redis|
+ (1..max_number_of_sessions_plus_two).each do |number|
+ redis.set(
+ "session:user:gitlab:#{user.id}:#{number}",
+ Marshal.dump(ActiveSession.new(session_id: "#{number}", updated_at: number.days.ago))
+ )
+ redis.sadd(
+ "session:lookup:user:gitlab:#{user.id}",
+ "#{number}"
+ )
+ end
+ end
+ end
+
+ it 'removes obsolete active sessions entries' do
+ ActiveSession.cleanup(user)
+
+ Gitlab::Redis::SharedState.with do |redis|
+ sessions = redis.scan_each(match: "session:user:gitlab:#{user.id}:*").to_a
+
+ expect(sessions.count).to eq(ActiveSession::ALLOWED_NUMBER_OF_ACTIVE_SESSIONS)
+ expect(sessions).not_to include("session:user:gitlab:#{user.id}:#{max_number_of_sessions_plus_one}", "session:user:gitlab:#{user.id}:#{max_number_of_sessions_plus_two}")
+ end
+ end
+
+ it 'removes obsolete lookup entries' do
+ ActiveSession.cleanup(user)
+
+ Gitlab::Redis::SharedState.with do |redis|
+ lookup_entries = redis.smembers("session:lookup:user:gitlab:#{user.id}")
+
+ expect(lookup_entries.count).to eq(ActiveSession::ALLOWED_NUMBER_OF_ACTIVE_SESSIONS)
+ expect(lookup_entries).not_to include(max_number_of_sessions_plus_one.to_s, max_number_of_sessions_plus_two.to_s)
+ end
+ end
+
+ it 'removes obsolete lookup entries even without active session' do
+ Gitlab::Redis::SharedState.with do |redis|
+ redis.sadd(
+ "session:lookup:user:gitlab:#{user.id}",
+ "#{max_number_of_sessions_plus_two + 1}"
+ )
+ end
+
+ ActiveSession.cleanup(user)
+
+ Gitlab::Redis::SharedState.with do |redis|
+ lookup_entries = redis.smembers("session:lookup:user:gitlab:#{user.id}")
+
+ expect(lookup_entries.count).to eq(ActiveSession::ALLOWED_NUMBER_OF_ACTIVE_SESSIONS)
+ expect(lookup_entries).not_to include(
+ max_number_of_sessions_plus_one.to_s,
+ max_number_of_sessions_plus_two.to_s,
+ (max_number_of_sessions_plus_two + 1).to_s
+ )
+ end
+ end
+
+ context 'when the number of active sessions is lower than the limit' do
+ before do
+ Gitlab::Redis::SharedState.with do |redis|
+ ((max_number_of_sessions_plus_two - 4)..max_number_of_sessions_plus_two).each do |number|
+ redis.del("session:user:gitlab:#{user.id}:#{number}")
+ end
+ end
+ end
+
+ it 'does not remove active session entries, but removes lookup entries' do
+ lookup_entries_before_cleanup = Gitlab::Redis::SharedState.with do |redis|
+ redis.smembers("session:lookup:user:gitlab:#{user.id}")
+ end
+
+ sessions_before_cleanup = Gitlab::Redis::SharedState.with do |redis|
+ redis.scan_each(match: "session:user:gitlab:#{user.id}:*").to_a
+ end
+
+ ActiveSession.cleanup(user)
+
+ Gitlab::Redis::SharedState.with do |redis|
+ lookup_entries = redis.smembers("session:lookup:user:gitlab:#{user.id}")
+ sessions = redis.scan_each(match: "session:user:gitlab:#{user.id}:*").to_a
+ expect(sessions.count).to eq(sessions_before_cleanup.count)
+ expect(lookup_entries.count).to be < lookup_entries_before_cleanup.count
+ end
+ end
+ end
+ end
end
end
diff --git a/spec/models/application_setting_spec.rb b/spec/models/application_setting_spec.rb
index ba3b99f4421..a403aa296d4 100644
--- a/spec/models/application_setting_spec.rb
+++ b/spec/models/application_setting_spec.rb
@@ -66,6 +66,14 @@ describe ApplicationSetting do
it { is_expected.not_to allow_value('three').for(:push_event_activities_limit) }
it { is_expected.not_to allow_value(nil).for(:push_event_activities_limit) }
+ it { is_expected.to validate_numericality_of(:snippet_size_limit).only_integer.is_greater_than(0) }
+
+ it { is_expected.not_to allow_value(7).for(:minimum_password_length) }
+ it { is_expected.not_to allow_value(129).for(:minimum_password_length) }
+ it { is_expected.not_to allow_value(nil).for(:minimum_password_length) }
+ it { is_expected.not_to allow_value('abc').for(:minimum_password_length) }
+ it { is_expected.to allow_value(10).for(:minimum_password_length) }
+
context 'when snowplow is enabled' do
before do
setting.snowplow_enabled = true
diff --git a/spec/models/blob_spec.rb b/spec/models/blob_spec.rb
index 9e55fbcce20..2c141cae98d 100644
--- a/spec/models/blob_spec.rb
+++ b/spec/models/blob_spec.rb
@@ -421,4 +421,21 @@ describe Blob do
end
end
end
+
+ describe 'policy' do
+ let(:project) { build(:project) }
+ subject { described_class.new(fake_blob(path: 'foo'), project) }
+
+ it 'works with policy' do
+ expect(Ability.allowed?(project.creator, :read_blob, subject)).to be_truthy
+ end
+
+ context 'when project is nil' do
+ subject { described_class.new(fake_blob(path: 'foo')) }
+
+ it 'does not err' do
+ expect(Ability.allowed?(project.creator, :read_blob, subject)).to be_falsey
+ end
+ end
+ end
end
diff --git a/spec/models/broadcast_message_spec.rb b/spec/models/broadcast_message_spec.rb
index 020ada3c47a..67d8284bebe 100644
--- a/spec/models/broadcast_message_spec.rb
+++ b/spec/models/broadcast_message_spec.rb
@@ -20,65 +20,71 @@ describe BroadcastMessage do
it { is_expected.to allow_value(triplet).for(:font) }
it { is_expected.to allow_value(hex).for(:font) }
it { is_expected.not_to allow_value('000').for(:font) }
+
+ it { is_expected.to allow_value(1).for(:broadcast_type) }
+ it { is_expected.not_to allow_value(nil).for(:broadcast_type) }
end
- describe '.current', :use_clean_rails_memory_store_caching do
+ shared_examples 'time constrainted' do |broadcast_type|
it 'returns message if time match' do
- message = create(:broadcast_message)
+ message = create(:broadcast_message, broadcast_type: broadcast_type)
- expect(described_class.current).to include(message)
+ expect(subject.call).to include(message)
end
it 'returns multiple messages if time match' do
- message1 = create(:broadcast_message)
- message2 = create(:broadcast_message)
+ message1 = create(:broadcast_message, broadcast_type: broadcast_type)
+ message2 = create(:broadcast_message, broadcast_type: broadcast_type)
- expect(described_class.current).to contain_exactly(message1, message2)
+ expect(subject.call).to contain_exactly(message1, message2)
end
it 'returns empty list if time not come' do
- create(:broadcast_message, :future)
+ create(:broadcast_message, :future, broadcast_type: broadcast_type)
- expect(described_class.current).to be_empty
+ expect(subject.call).to be_empty
end
it 'returns empty list if time has passed' do
- create(:broadcast_message, :expired)
+ create(:broadcast_message, :expired, broadcast_type: broadcast_type)
- expect(described_class.current).to be_empty
+ expect(subject.call).to be_empty
end
+ end
+ shared_examples 'message cache' do |broadcast_type|
it 'caches the output of the query for two weeks' do
- create(:broadcast_message)
+ create(:broadcast_message, broadcast_type: broadcast_type)
expect(described_class).to receive(:current_and_future_messages).and_call_original.twice
- described_class.current
+ subject.call
Timecop.travel(3.weeks) do
- described_class.current
+ subject.call
end
end
it 'does not create new records' do
- create(:broadcast_message)
+ create(:broadcast_message, broadcast_type: broadcast_type)
- expect { described_class.current }.not_to change { described_class.count }
+ expect { subject.call }.not_to change { described_class.count }
end
it 'includes messages that need to be displayed in the future' do
- create(:broadcast_message)
+ create(:broadcast_message, broadcast_type: broadcast_type)
future = create(
:broadcast_message,
starts_at: Time.now + 10.minutes,
- ends_at: Time.now + 20.minutes
+ ends_at: Time.now + 20.minutes,
+ broadcast_type: broadcast_type
)
- expect(described_class.current.length).to eq(1)
+ expect(subject.call.length).to eq(1)
Timecop.travel(future.starts_at) do
- expect(described_class.current.length).to eq(2)
+ expect(subject.call.length).to eq(2)
end
end
@@ -86,7 +92,90 @@ describe BroadcastMessage do
create(:broadcast_message, :future)
expect(Rails.cache).not_to receive(:delete).with(described_class::CACHE_KEY)
- expect(described_class.current.length).to eq(0)
+ expect(subject.call.length).to eq(0)
+ end
+ end
+
+ shared_examples "matches with current path" do |broadcast_type|
+ it 'returns message if it matches the target path' do
+ message = create(:broadcast_message, target_path: "*/onboarding_completed", broadcast_type: broadcast_type)
+
+ expect(subject.call('/users/onboarding_completed')).to include(message)
+ end
+
+ it 'returns message if part of the target path matches' do
+ create(:broadcast_message, target_path: "/users/*/issues", broadcast_type: broadcast_type)
+
+ expect(subject.call('/users/name/issues').length).to eq(1)
+ end
+
+ it 'returns the message for empty target path' do
+ create(:broadcast_message, target_path: "", broadcast_type: broadcast_type)
+
+ expect(subject.call('/users/name/issues').length).to eq(1)
+ end
+
+ it 'returns the message if target path is nil' do
+ create(:broadcast_message, target_path: nil, broadcast_type: broadcast_type)
+
+ expect(subject.call('/users/name/issues').length).to eq(1)
+ end
+
+ it 'does not return message if target path does not match' do
+ create(:broadcast_message, target_path: "/onboarding_completed", broadcast_type: broadcast_type)
+
+ expect(subject.call('/welcome').length).to eq(0)
+ end
+
+ it 'does not return message if target path does not match when using wildcard' do
+ create(:broadcast_message, target_path: "/users/*/issues", broadcast_type: broadcast_type)
+
+ expect(subject.call('/group/groupname/issues').length).to eq(0)
+ end
+ end
+
+ describe '.current', :use_clean_rails_memory_store_caching do
+ subject { -> (path = nil) { described_class.current(path) } }
+
+ it_behaves_like 'time constrainted', :banner
+ it_behaves_like 'message cache', :banner
+ it_behaves_like 'matches with current path', :banner
+
+ it 'returns both types' do
+ banner_message = create(:broadcast_message, broadcast_type: :banner)
+ notification_message = create(:broadcast_message, broadcast_type: :notification)
+
+ expect(subject.call).to contain_exactly(banner_message, notification_message)
+ end
+ end
+
+ describe '.current_banner_messages', :use_clean_rails_memory_store_caching do
+ subject { -> (path = nil) { described_class.current_banner_messages(path) } }
+
+ it_behaves_like 'time constrainted', :banner
+ it_behaves_like 'message cache', :banner
+ it_behaves_like 'matches with current path', :banner
+
+ it 'only returns banners' do
+ banner_message = create(:broadcast_message, broadcast_type: :banner)
+ create(:broadcast_message, broadcast_type: :notification)
+
+ expect(subject.call).to contain_exactly(banner_message)
+ end
+ end
+
+ describe '.current_notification_messages', :use_clean_rails_memory_store_caching do
+ subject { -> (path = nil) { described_class.current_notification_messages(path) } }
+
+ it_behaves_like 'time constrainted', :notification
+ it_behaves_like 'message cache', :notification
+ it_behaves_like 'matches with current path', :notification
+
+ it 'only returns notifications' do
+ notification_message = create(:broadcast_message, broadcast_type: :notification)
+ create(:broadcast_message, broadcast_type: :banner)
+
+ expect(subject.call).to contain_exactly(notification_message)
end
end
@@ -157,6 +246,8 @@ describe BroadcastMessage do
message = create(:broadcast_message)
expect(Rails.cache).to receive(:delete).with(described_class::CACHE_KEY)
+ expect(Rails.cache).to receive(:delete).with(described_class::BANNER_CACHE_KEY)
+ expect(Rails.cache).to receive(:delete).with(described_class::NOTIFICATION_CACHE_KEY)
message.flush_redis_cache
end
diff --git a/spec/models/ci/build_need_spec.rb b/spec/models/ci/build_need_spec.rb
index 450dd550a8f..d1186fa981d 100644
--- a/spec/models/ci/build_need_spec.rb
+++ b/spec/models/ci/build_need_spec.rb
@@ -10,4 +10,11 @@ describe Ci::BuildNeed, model: true do
it { is_expected.to validate_presence_of(:build) }
it { is_expected.to validate_presence_of(:name) }
it { is_expected.to validate_length_of(:name).is_at_most(128) }
+
+ describe '.artifacts' do
+ let_it_be(:with_artifacts) { create(:ci_build_need, artifacts: true) }
+ let_it_be(:without_artifacts) { create(:ci_build_need, artifacts: false) }
+
+ it { expect(described_class.artifacts).to contain_exactly(with_artifacts) }
+ end
end
diff --git a/spec/models/ci/build_spec.rb b/spec/models/ci/build_spec.rb
index 24fa3b9b1ea..900e0feaccc 100644
--- a/spec/models/ci/build_spec.rb
+++ b/spec/models/ci/build_spec.rb
@@ -741,20 +741,26 @@ describe Ci::Build do
before do
needs.to_a.each do |need|
- create(:ci_build_need, build: final, name: need)
+ create(:ci_build_need, build: final, **need)
end
end
subject { final.dependencies }
- context 'when depedencies are defined' do
+ context 'when dependencies are defined' do
let(:dependencies) { %w(rspec staging) }
it { is_expected.to contain_exactly(rspec_test, staging) }
end
context 'when needs are defined' do
- let(:needs) { %w(build rspec staging) }
+ let(:needs) do
+ [
+ { name: 'build', artifacts: true },
+ { name: 'rspec', artifacts: true },
+ { name: 'staging', artifacts: true }
+ ]
+ end
it { is_expected.to contain_exactly(build, rspec_test, staging) }
@@ -767,17 +773,69 @@ describe Ci::Build do
end
end
+ context 'when need artifacts are defined' do
+ let(:needs) do
+ [
+ { name: 'build', artifacts: true },
+ { name: 'rspec', artifacts: false },
+ { name: 'staging', artifacts: true }
+ ]
+ end
+
+ it { is_expected.to contain_exactly(build, staging) }
+ end
+
context 'when needs and dependencies are defined' do
let(:dependencies) { %w(rspec staging) }
- let(:needs) { %w(build rspec staging) }
+ let(:needs) do
+ [
+ { name: 'build', artifacts: true },
+ { name: 'rspec', artifacts: true },
+ { name: 'staging', artifacts: true }
+ ]
+ end
it { is_expected.to contain_exactly(rspec_test, staging) }
end
+ context 'when needs and dependencies contradict' do
+ let(:dependencies) { %w(rspec staging) }
+ let(:needs) do
+ [
+ { name: 'build', artifacts: true },
+ { name: 'rspec', artifacts: false },
+ { name: 'staging', artifacts: true }
+ ]
+ end
+
+ it { is_expected.to contain_exactly(staging) }
+ end
+
context 'when nor dependencies or needs are defined' do
it { is_expected.to contain_exactly(build, rspec_test, rubocop_test, staging) }
end
end
+
+ describe '#all_dependencies' do
+ let!(:final_build) do
+ create(:ci_build,
+ pipeline: pipeline, name: 'deploy',
+ stage_idx: 3, stage: 'deploy'
+ )
+ end
+
+ subject { final_build.all_dependencies }
+
+ it 'returns dependencies and cross_dependencies' do
+ dependencies = [1, 2, 3]
+ cross_dependencies = [3, 4]
+
+ allow(final_build).to receive(:dependencies).and_return(dependencies)
+ allow(final_build).to receive(:cross_dependencies).and_return(cross_dependencies)
+
+ is_expected.to match(a_collection_containing_exactly(1, 2, 3, 4))
+ end
+ end
end
describe '#triggered_by?' do
@@ -1160,6 +1218,54 @@ describe Ci::Build do
end
end
+ describe '#expanded_kubernetes_namespace' do
+ let(:build) { create(:ci_build, environment: environment, options: options) }
+
+ subject { build.expanded_kubernetes_namespace }
+
+ context 'environment and namespace are not set' do
+ let(:environment) { nil }
+ let(:options) { nil }
+
+ it { is_expected.to be_nil }
+ end
+
+ context 'environment is specified' do
+ let(:environment) { 'production' }
+
+ context 'namespace is not set' do
+ let(:options) { nil }
+
+ it { is_expected.to be_nil }
+ end
+
+ context 'namespace is provided' do
+ let(:options) do
+ {
+ environment: {
+ name: environment,
+ kubernetes: {
+ namespace: namespace
+ }
+ }
+ }
+ end
+
+ context 'with a static value' do
+ let(:namespace) { 'production' }
+
+ it { is_expected.to eq namespace }
+ end
+
+ context 'with a dynamic value' do
+ let(:namespace) { 'deploy-$CI_COMMIT_REF_NAME'}
+
+ it { is_expected.to eq 'deploy-master' }
+ end
+ end
+ end
+ end
+
describe '#starts_environment?' do
subject { build.starts_environment? }
@@ -2183,9 +2289,13 @@ describe Ci::Build do
{ key: 'CI_REGISTRY_USER', value: 'gitlab-ci-token', public: true, masked: false },
{ key: 'CI_REGISTRY_PASSWORD', value: 'my-token', public: false, masked: true },
{ key: 'CI_REPOSITORY_URL', value: build.repo_url, public: false, masked: false },
+ { key: 'CI_JOB_NAME', value: 'test', public: true, masked: false },
+ { key: 'CI_JOB_STAGE', value: 'test', public: true, masked: false },
+ { key: 'CI_NODE_TOTAL', value: '1', public: true, masked: false },
+ { key: 'CI_BUILD_NAME', value: 'test', public: true, masked: false },
+ { key: 'CI_BUILD_STAGE', value: 'test', public: true, masked: false },
{ key: 'CI', value: 'true', public: true, masked: false },
{ key: 'GITLAB_CI', value: 'true', public: true, masked: false },
- { key: 'GITLAB_FEATURES', value: project.licensed_features.join(','), public: true, masked: false },
{ key: 'CI_SERVER_HOST', value: Gitlab.config.gitlab.host, public: true, masked: false },
{ key: 'CI_SERVER_NAME', value: 'GitLab', public: true, masked: false },
{ key: 'CI_SERVER_VERSION', value: Gitlab::VERSION, public: true, masked: false },
@@ -2193,21 +2303,7 @@ describe Ci::Build do
{ key: 'CI_SERVER_VERSION_MINOR', value: Gitlab.version_info.minor.to_s, public: true, masked: false },
{ key: 'CI_SERVER_VERSION_PATCH', value: Gitlab.version_info.patch.to_s, public: true, masked: false },
{ key: 'CI_SERVER_REVISION', value: Gitlab.revision, public: true, masked: false },
- { key: 'CI_JOB_NAME', value: 'test', public: true, masked: false },
- { key: 'CI_JOB_STAGE', value: 'test', public: true, masked: false },
- { key: 'CI_COMMIT_SHA', value: build.sha, public: true, masked: false },
- { key: 'CI_COMMIT_SHORT_SHA', value: build.short_sha, public: true, masked: false },
- { key: 'CI_COMMIT_BEFORE_SHA', value: build.before_sha, public: true, masked: false },
- { key: 'CI_COMMIT_REF_NAME', value: build.ref, public: true, masked: false },
- { key: 'CI_COMMIT_REF_SLUG', value: build.ref_slug, public: true, masked: false },
- { key: 'CI_NODE_TOTAL', value: '1', public: true, masked: false },
- { key: 'CI_DEFAULT_BRANCH', value: project.default_branch, public: true, masked: false },
- { key: 'CI_BUILD_REF', value: build.sha, public: true, masked: false },
- { key: 'CI_BUILD_BEFORE_SHA', value: build.before_sha, public: true, masked: false },
- { key: 'CI_BUILD_REF_NAME', value: build.ref, public: true, masked: false },
- { key: 'CI_BUILD_REF_SLUG', value: build.ref_slug, public: true, masked: false },
- { key: 'CI_BUILD_NAME', value: 'test', public: true, masked: false },
- { key: 'CI_BUILD_STAGE', value: 'test', public: true, masked: false },
+ { key: 'GITLAB_FEATURES', value: project.licensed_features.join(','), public: true, masked: false },
{ key: 'CI_PROJECT_ID', value: project.id.to_s, public: true, masked: false },
{ key: 'CI_PROJECT_NAME', value: project.path, public: true, masked: false },
{ key: 'CI_PROJECT_TITLE', value: project.title, public: true, masked: false },
@@ -2217,16 +2313,27 @@ describe Ci::Build do
{ key: 'CI_PROJECT_URL', value: project.web_url, public: true, masked: false },
{ key: 'CI_PROJECT_VISIBILITY', value: 'private', public: true, masked: false },
{ key: 'CI_PROJECT_REPOSITORY_LANGUAGES', value: project.repository_languages.map(&:name).join(',').downcase, public: true, masked: false },
+ { key: 'CI_DEFAULT_BRANCH', value: project.default_branch, public: true, masked: false },
{ key: 'CI_PAGES_DOMAIN', value: Gitlab.config.pages.host, public: true, masked: false },
{ key: 'CI_PAGES_URL', value: project.pages_url, public: true, masked: false },
{ key: 'CI_API_V4_URL', value: 'http://localhost/api/v4', public: true, masked: false },
{ key: 'CI_PIPELINE_IID', value: pipeline.iid.to_s, public: true, masked: false },
- { key: 'CI_CONFIG_PATH', value: pipeline.config_path, public: true, masked: false },
{ key: 'CI_PIPELINE_SOURCE', value: pipeline.source, public: true, masked: false },
+ { key: 'CI_CONFIG_PATH', value: pipeline.config_path, public: true, masked: false },
+ { key: 'CI_COMMIT_SHA', value: build.sha, public: true, masked: false },
+ { key: 'CI_COMMIT_SHORT_SHA', value: build.short_sha, public: true, masked: false },
+ { key: 'CI_COMMIT_BEFORE_SHA', value: build.before_sha, public: true, masked: false },
+ { key: 'CI_COMMIT_REF_NAME', value: build.ref, public: true, masked: false },
+ { key: 'CI_COMMIT_REF_SLUG', value: build.ref_slug, public: true, masked: false },
+ { key: 'CI_COMMIT_BRANCH', value: build.ref, public: true, masked: false },
{ key: 'CI_COMMIT_MESSAGE', value: pipeline.git_commit_message, public: true, masked: false },
{ key: 'CI_COMMIT_TITLE', value: pipeline.git_commit_title, public: true, masked: false },
{ key: 'CI_COMMIT_DESCRIPTION', value: pipeline.git_commit_description, public: true, masked: false },
- { key: 'CI_COMMIT_REF_PROTECTED', value: (!!pipeline.protected_ref?).to_s, public: true, masked: false }
+ { key: 'CI_COMMIT_REF_PROTECTED', value: (!!pipeline.protected_ref?).to_s, public: true, masked: false },
+ { key: 'CI_BUILD_REF', value: build.sha, public: true, masked: false },
+ { key: 'CI_BUILD_BEFORE_SHA', value: build.before_sha, public: true, masked: false },
+ { key: 'CI_BUILD_REF_NAME', value: build.ref, public: true, masked: false },
+ { key: 'CI_BUILD_REF_SLUG', value: build.ref_slug, public: true, masked: false }
]
end
@@ -2235,7 +2342,7 @@ describe Ci::Build do
build.yaml_variables = []
end
- it { is_expected.to include(*predefined_variables) }
+ it { is_expected.to eq(predefined_variables) }
describe 'variables ordering' do
context 'when variables hierarchy is stubbed' do
@@ -2442,6 +2549,19 @@ describe Ci::Build do
it { is_expected.to include(job_variable) }
end
+ context 'when build is for branch' do
+ let(:branch_variable) do
+ { key: 'CI_COMMIT_BRANCH', value: 'master', public: true, masked: false }
+ end
+
+ before do
+ build.update(tag: false)
+ pipeline.update(tag: false)
+ end
+
+ it { is_expected.to include(branch_variable) }
+ end
+
context 'when build is for tag' do
let(:tag_variable) do
{ key: 'CI_COMMIT_TAG', value: 'master', public: true, masked: false }
@@ -2449,6 +2569,7 @@ describe Ci::Build do
before do
build.update(tag: true)
+ pipeline.update(tag: true)
end
it { is_expected.to include(tag_variable) }
@@ -2949,6 +3070,32 @@ describe Ci::Build do
end
end
+ describe '#deployment_variables' do
+ let(:build) { create(:ci_build, environment: environment) }
+ let(:environment) { 'production' }
+ let(:kubernetes_namespace) { 'namespace' }
+ let(:project_variables) { double }
+
+ subject { build.deployment_variables(environment: environment) }
+
+ before do
+ allow(build).to receive(:expanded_kubernetes_namespace)
+ .and_return(kubernetes_namespace)
+
+ allow(build.project).to receive(:deployment_variables)
+ .with(environment: environment, kubernetes_namespace: kubernetes_namespace)
+ .and_return(project_variables)
+ end
+
+ it { is_expected.to eq(project_variables) }
+
+ context 'environment is nil' do
+ let(:environment) { nil }
+
+ it { is_expected.to be_empty }
+ end
+ end
+
describe '#scoped_variables_hash' do
context 'when overriding CI variables' do
before do
@@ -3086,10 +3233,20 @@ describe Ci::Build do
rescue StateMachines::InvalidTransition
end
- it 'ensures pipeline ref existence' do
- expect(job.pipeline.persistent_ref).to receive(:create).once
+ context 'for pipeline ref existence' do
+ it 'ensures pipeline ref creation' do
+ expect(job.pipeline.persistent_ref).to receive(:create).once
+
+ run_job_without_exception
+ end
- run_job_without_exception
+ it 'ensures that it is not run in database transaction' do
+ expect(job.pipeline.persistent_ref).to receive(:create) do
+ expect(Gitlab::Database).not_to be_inside_transaction
+ end
+
+ run_job_without_exception
+ end
end
shared_examples 'saves data on transition' do
@@ -3338,7 +3495,7 @@ describe Ci::Build do
end
it 'can drop the build' do
- expect(Gitlab::Sentry).to receive(:track_exception)
+ expect(Gitlab::ErrorTracking).to receive(:track_and_raise_for_dev_exception)
expect { build.drop! }.not_to raise_error
@@ -3941,4 +4098,70 @@ describe Ci::Build do
expect(job.invalid_dependencies).to eq([pre_stage_job_invalid])
end
end
+
+ describe '#execute_hooks' do
+ context 'with project hooks' do
+ before do
+ create(:project_hook, project: project, job_events: true)
+ end
+
+ it 'execute hooks' do
+ expect_any_instance_of(ProjectHook).to receive(:async_execute)
+
+ build.execute_hooks
+ end
+ end
+
+ context 'without relevant project hooks' do
+ before do
+ create(:project_hook, project: project, job_events: false)
+ end
+
+ it 'does not execute a hook' do
+ expect_any_instance_of(ProjectHook).not_to receive(:async_execute)
+
+ build.execute_hooks
+ end
+ end
+
+ context 'with project services' do
+ before do
+ create(:service, active: true, job_events: true, project: project)
+ end
+
+ it 'execute services' do
+ expect_any_instance_of(Service).to receive(:async_execute)
+
+ build.execute_hooks
+ end
+ end
+
+ context 'without relevant project services' do
+ before do
+ create(:service, active: true, job_events: false, project: project)
+ end
+
+ it 'execute services' do
+ expect_any_instance_of(Service).not_to receive(:async_execute)
+
+ build.execute_hooks
+ end
+ end
+ end
+
+ describe '#environment_auto_stop_in' do
+ subject { build.environment_auto_stop_in }
+
+ context 'when build option has environment auto_stop_in' do
+ let(:build) { create(:ci_build, options: { environment: { name: 'test', auto_stop_in: '1 day' } }) }
+
+ it { is_expected.to eq('1 day') }
+ end
+
+ context 'when build option does not have environment auto_stop_in' do
+ let(:build) { create(:ci_build) }
+
+ it { is_expected.to be_nil }
+ end
+ end
end
diff --git a/spec/models/ci/job_artifact_spec.rb b/spec/models/ci/job_artifact_spec.rb
index 1413da231e0..76e31fddd98 100644
--- a/spec/models/ci/job_artifact_spec.rb
+++ b/spec/models/ci/job_artifact_spec.rb
@@ -19,8 +19,24 @@ describe Ci::JobArtifact do
it_behaves_like 'having unique enum values'
- it_behaves_like 'UpdateProjectStatistics' do
- subject { build(:ci_job_artifact, :archive, size: 106365) }
+ context 'with update_project_statistics_after_commit enabled' do
+ before do
+ stub_feature_flags(update_project_statistics_after_commit: true)
+ end
+
+ it_behaves_like 'UpdateProjectStatistics' do
+ subject { build(:ci_job_artifact, :archive, size: 106365) }
+ end
+ end
+
+ context 'with update_project_statistics_after_commit disabled' do
+ before do
+ stub_feature_flags(update_project_statistics_after_commit: false)
+ end
+
+ it_behaves_like 'UpdateProjectStatistics' do
+ subject { build(:ci_job_artifact, :archive, size: 106365) }
+ end
end
describe '.with_reports' do
diff --git a/spec/models/ci/legacy_stage_spec.rb b/spec/models/ci/legacy_stage_spec.rb
index 477f4036218..f503fc10c08 100644
--- a/spec/models/ci/legacy_stage_spec.rb
+++ b/spec/models/ci/legacy_stage_spec.rb
@@ -135,7 +135,7 @@ describe Ci::LegacyStage do
let!(:stage_build) { create_job(:ci_build, status: :created) }
it 'returns detailed status for created stage' do
- expect(subject.text).to eq 'created'
+ expect(subject.text).to eq s_('CiStatusText|created')
end
end
@@ -143,7 +143,7 @@ describe Ci::LegacyStage do
let!(:stage_build) { create_job(:ci_build, status: :pending) }
it 'returns detailed status for pending stage' do
- expect(subject.text).to eq 'pending'
+ expect(subject.text).to eq s_('CiStatusText|pending')
end
end
@@ -151,7 +151,7 @@ describe Ci::LegacyStage do
let!(:stage_build) { create_job(:ci_build, status: :running) }
it 'returns detailed status for running stage' do
- expect(subject.text).to eq 'running'
+ expect(subject.text).to eq s_('CiStatus|running')
end
end
@@ -159,7 +159,7 @@ describe Ci::LegacyStage do
let!(:stage_build) { create_job(:ci_build, status: :success) }
it 'returns detailed status for successful stage' do
- expect(subject.text).to eq 'passed'
+ expect(subject.text).to eq s_('CiStatusText|passed')
end
end
@@ -167,7 +167,7 @@ describe Ci::LegacyStage do
let!(:stage_build) { create_job(:ci_build, status: :failed) }
it 'returns detailed status for failed stage' do
- expect(subject.text).to eq 'failed'
+ expect(subject.text).to eq s_('CiStatusText|failed')
end
end
@@ -175,7 +175,7 @@ describe Ci::LegacyStage do
let!(:stage_build) { create_job(:ci_build, status: :canceled) }
it 'returns detailed status for canceled stage' do
- expect(subject.text).to eq 'canceled'
+ expect(subject.text).to eq s_('CiStatusText|canceled')
end
end
@@ -183,7 +183,7 @@ describe Ci::LegacyStage do
let!(:stage_build) { create_job(:ci_build, status: :skipped) }
it 'returns detailed status for skipped stage' do
- expect(subject.text).to eq 'skipped'
+ expect(subject.text).to eq s_('CiStatusText|skipped')
end
end
end
diff --git a/spec/models/ci/persistent_ref_spec.rb b/spec/models/ci/persistent_ref_spec.rb
index be447476e2c..ece478fdd36 100644
--- a/spec/models/ci/persistent_ref_spec.rb
+++ b/spec/models/ci/persistent_ref_spec.rb
@@ -45,6 +45,18 @@ describe Ci::PersistentRef do
expect(pipeline.persistent_ref).to be_exist
end
+ context 'when depend_on_persistent_pipeline_ref feature flag is disabled' do
+ before do
+ stub_feature_flags(depend_on_persistent_pipeline_ref: false)
+ end
+
+ it 'does not create a persistent ref' do
+ expect(project.repository).not_to receive(:create_ref)
+
+ subject
+ end
+ end
+
context 'when sha does not exist in the repository' do
let(:sha) { 'not-exist' }
@@ -61,8 +73,8 @@ describe Ci::PersistentRef do
pipeline.persistent_ref.create
end
- it 'does not create a persistent ref' do
- expect(project.repository).not_to receive(:create_ref)
+ it 'overwrites a persistent ref' do
+ expect(project.repository).to receive(:create_ref).and_call_original
subject
end
diff --git a/spec/models/ci/pipeline_spec.rb b/spec/models/ci/pipeline_spec.rb
index d24cf3d2115..3f9e882ea52 100644
--- a/spec/models/ci/pipeline_spec.rb
+++ b/spec/models/ci/pipeline_spec.rb
@@ -75,71 +75,6 @@ describe Ci::Pipeline, :mailer do
end
end
- describe '.sort_by_merge_request_pipelines' do
- subject { described_class.sort_by_merge_request_pipelines }
-
- context 'when branch pipelines exist' do
- let!(:branch_pipeline_1) { create(:ci_pipeline, source: :push) }
- let!(:branch_pipeline_2) { create(:ci_pipeline, source: :push) }
-
- it 'returns pipelines order by id' do
- expect(subject).to eq([branch_pipeline_2,
- branch_pipeline_1])
- end
- end
-
- context 'when merge request pipelines exist' do
- let!(:merge_request_pipeline_1) do
- create(:ci_pipeline, source: :merge_request_event, merge_request: merge_request)
- end
-
- let!(:merge_request_pipeline_2) do
- create(:ci_pipeline, source: :merge_request_event, merge_request: merge_request)
- end
-
- let(:merge_request) do
- create(:merge_request,
- source_project: project,
- source_branch: 'feature',
- target_project: project,
- target_branch: 'master')
- end
-
- it 'returns pipelines order by id' do
- expect(subject).to eq([merge_request_pipeline_2,
- merge_request_pipeline_1])
- end
- end
-
- context 'when both branch pipeline and merge request pipeline exist' do
- let!(:branch_pipeline_1) { create(:ci_pipeline, source: :push) }
- let!(:branch_pipeline_2) { create(:ci_pipeline, source: :push) }
-
- let!(:merge_request_pipeline_1) do
- create(:ci_pipeline, source: :merge_request_event, merge_request: merge_request)
- end
-
- let!(:merge_request_pipeline_2) do
- create(:ci_pipeline, source: :merge_request_event, merge_request: merge_request)
- end
-
- let(:merge_request) do
- create(:merge_request,
- source_project: project,
- source_branch: 'feature',
- target_project: project,
- target_branch: 'master')
- end
-
- it 'returns merge request pipeline first' do
- expect(subject).to eq([merge_request_pipeline_2,
- merge_request_pipeline_1,
- branch_pipeline_2,
- branch_pipeline_1])
- end
- end
- end
-
describe '.for_sha' do
subject { described_class.for_sha(sha) }
@@ -226,39 +161,6 @@ describe Ci::Pipeline, :mailer do
end
end
- describe '.detached_merge_request_pipelines' do
- subject { described_class.detached_merge_request_pipelines(merge_request, sha) }
-
- let!(:pipeline) do
- create(:ci_pipeline, source: :merge_request_event, merge_request: merge_request, sha: merge_request.diff_head_sha)
- end
-
- let(:merge_request) { create(:merge_request) }
- let(:sha) { merge_request.diff_head_sha }
-
- it 'returns detached merge request pipelines' do
- is_expected.to eq([pipeline])
- end
-
- context 'when sha does not exist' do
- let(:sha) { 'abc' }
-
- it 'returns empty array' do
- is_expected.to be_empty
- end
- end
-
- context 'when pipeline is merge request pipeline' do
- let!(:pipeline) do
- create(:ci_pipeline, source: :merge_request_event, merge_request: merge_request, source_sha: merge_request.diff_head_sha)
- end
-
- it 'returns empty array' do
- is_expected.to be_empty
- end
- end
- end
-
describe '#detached_merge_request_pipeline?' do
subject { pipeline.detached_merge_request_pipeline? }
@@ -278,39 +180,6 @@ describe Ci::Pipeline, :mailer do
end
end
- describe '.merge_request_pipelines' do
- subject { described_class.merge_request_pipelines(merge_request, source_sha) }
-
- let!(:pipeline) do
- create(:ci_pipeline, source: :merge_request_event, merge_request: merge_request, source_sha: merge_request.diff_head_sha)
- end
-
- let(:merge_request) { create(:merge_request) }
- let(:source_sha) { merge_request.diff_head_sha }
-
- it 'returns merge pipelines' do
- is_expected.to eq([pipeline])
- end
-
- context 'when source sha is empty' do
- let(:source_sha) { nil }
-
- it 'returns empty array' do
- is_expected.to be_empty
- end
- end
-
- context 'when pipeline is detached merge request pipeline' do
- let!(:pipeline) do
- create(:ci_pipeline, source: :merge_request_event, merge_request: merge_request, sha: merge_request.diff_head_sha)
- end
-
- it 'returns empty array' do
- is_expected.to be_empty
- end
- end
- end
-
describe '#merge_request_pipeline?' do
subject { pipeline.merge_request_pipeline? }
@@ -330,25 +199,6 @@ describe Ci::Pipeline, :mailer do
end
end
- describe '#merge_train_pipeline?' do
- subject { pipeline.merge_train_pipeline? }
-
- let!(:pipeline) do
- create(:ci_pipeline, source: :merge_request_event, merge_request: merge_request, ref: ref, target_sha: 'xxx')
- end
-
- let(:merge_request) { create(:merge_request) }
- let(:ref) { 'refs/merge-requests/1/train' }
-
- it { is_expected.to be_truthy }
-
- context 'when ref is merge ref' do
- let(:ref) { 'refs/merge-requests/1/merge' }
-
- it { is_expected.to be_falsy }
- end
- end
-
describe '#merge_request_ref?' do
subject { pipeline.merge_request_ref? }
@@ -359,43 +209,19 @@ describe Ci::Pipeline, :mailer do
end
end
- describe '#merge_train_ref?' do
- subject { pipeline.merge_train_ref? }
-
- it 'calls Mergetrain#merge_train_ref?' do
- expect(MergeRequest).to receive(:merge_train_ref?).with(pipeline.ref)
-
- subject
- end
- end
-
describe '#merge_request_event_type' do
subject { pipeline.merge_request_event_type }
- before do
- allow(pipeline).to receive(:merge_request_event?) { true }
- end
-
- context 'when pipeline is merge train pipeline' do
- before do
- allow(pipeline).to receive(:merge_train_pipeline?) { true }
- end
-
- it { is_expected.to eq(:merge_train) }
- end
+ let(:pipeline) { merge_request.all_pipelines.last }
context 'when pipeline is merge request pipeline' do
- before do
- allow(pipeline).to receive(:merge_request_pipeline?) { true }
- end
+ let(:merge_request) { create(:merge_request, :with_merge_request_pipeline) }
it { is_expected.to eq(:merged_result) }
end
context 'when pipeline is detached merge request pipeline' do
- before do
- allow(pipeline).to receive(:detached_merge_request_pipeline?) { true }
- end
+ let(:merge_request) { create(:merge_request, :with_detached_merge_request_pipeline) }
it { is_expected.to eq(:detached) }
end
@@ -499,50 +325,6 @@ describe Ci::Pipeline, :mailer do
end
end
- describe '.triggered_for_branch' do
- subject { described_class.triggered_for_branch(ref) }
-
- let(:project) { create(:project, :repository) }
- let(:ref) { 'feature' }
- let!(:pipeline) { create(:ci_pipeline, ref: ref) }
-
- it 'returns the pipeline' do
- is_expected.to eq([pipeline])
- end
-
- context 'when sha is not specified' do
- it 'returns the pipeline' do
- expect(described_class.triggered_for_branch(ref)).to eq([pipeline])
- end
- end
-
- context 'when pipeline is triggered for tag' do
- let(:ref) { 'v1.1.0' }
- let!(:pipeline) { create(:ci_pipeline, ref: ref, tag: true) }
-
- it 'does not return the pipeline' do
- is_expected.to be_empty
- end
- end
-
- context 'when pipeline is triggered for merge_request' do
- let!(:merge_request) do
- create(:merge_request,
- :with_merge_request_pipeline,
- source_project: project,
- source_branch: ref,
- target_project: project,
- target_branch: 'master')
- end
-
- let(:pipeline) { merge_request.pipelines_for_merge_request.first }
-
- it 'does not return the pipeline' do
- is_expected.to be_empty
- end
- end
- end
-
describe '.with_reports' do
subject { described_class.with_reports(Ci::JobArtifact.test_reports) }
@@ -808,13 +590,25 @@ describe Ci::Pipeline, :mailer do
it 'includes all predefined variables in a valid order' do
keys = subject.map { |variable| variable[:key] }
- expect(keys).to eq %w[CI_PIPELINE_IID
- CI_CONFIG_PATH
- CI_PIPELINE_SOURCE
- CI_COMMIT_MESSAGE
- CI_COMMIT_TITLE
- CI_COMMIT_DESCRIPTION
- CI_COMMIT_REF_PROTECTED]
+ expect(keys).to eq %w[
+ CI_PIPELINE_IID
+ CI_PIPELINE_SOURCE
+ CI_CONFIG_PATH
+ CI_COMMIT_SHA
+ CI_COMMIT_SHORT_SHA
+ CI_COMMIT_BEFORE_SHA
+ CI_COMMIT_REF_NAME
+ CI_COMMIT_REF_SLUG
+ CI_COMMIT_BRANCH
+ CI_COMMIT_MESSAGE
+ CI_COMMIT_TITLE
+ CI_COMMIT_DESCRIPTION
+ CI_COMMIT_REF_PROTECTED
+ CI_BUILD_REF
+ CI_BUILD_BEFORE_SHA
+ CI_BUILD_REF_NAME
+ CI_BUILD_REF_SLUG
+ ]
end
context 'when source is merge request' do
@@ -1045,7 +839,9 @@ describe Ci::Pipeline, :mailer do
stage_idx: 0,
status: 'success')
- pipeline.process!
+ Ci::ProcessPipelineService
+ .new(pipeline)
+ .execute
end
it 'ignores the previous state' do
@@ -1930,17 +1726,6 @@ describe Ci::Pipeline, :mailer do
end
end
- describe '.latest_for_shas' do
- let(:sha) { 'abc' }
-
- it 'returns latest pipeline for sha' do
- create(:ci_pipeline, sha: sha)
- pipeline2 = create(:ci_pipeline, sha: sha)
-
- expect(described_class.latest_for_shas(sha)).to contain_exactly(pipeline2)
- end
- end
-
describe '.latest_successful_ids_per_project' do
let(:projects) { create_list(:project, 2) }
let!(:pipeline1) { create(:ci_pipeline, :success, project: projects[0]) }
@@ -2110,7 +1895,7 @@ describe Ci::Pipeline, :mailer do
let(:pipeline) { create(:ci_pipeline, status: :created) }
it 'returns detailed status for created pipeline' do
- expect(subject.text).to eq 'created'
+ expect(subject.text).to eq s_('CiStatusText|created')
end
end
@@ -2118,7 +1903,7 @@ describe Ci::Pipeline, :mailer do
let(:pipeline) { create(:ci_pipeline, status: :pending) }
it 'returns detailed status for pending pipeline' do
- expect(subject.text).to eq 'pending'
+ expect(subject.text).to eq s_('CiStatusText|pending')
end
end
@@ -2126,7 +1911,7 @@ describe Ci::Pipeline, :mailer do
let(:pipeline) { create(:ci_pipeline, status: :running) }
it 'returns detailed status for running pipeline' do
- expect(subject.text).to eq 'running'
+ expect(subject.text).to eq s_('CiStatus|running')
end
end
@@ -2134,7 +1919,7 @@ describe Ci::Pipeline, :mailer do
let(:pipeline) { create(:ci_pipeline, status: :success) }
it 'returns detailed status for successful pipeline' do
- expect(subject.text).to eq 'passed'
+ expect(subject.text).to eq s_('CiStatusText|passed')
end
end
@@ -2142,7 +1927,7 @@ describe Ci::Pipeline, :mailer do
let(:pipeline) { create(:ci_pipeline, status: :failed) }
it 'returns detailed status for failed pipeline' do
- expect(subject.text).to eq 'failed'
+ expect(subject.text).to eq s_('CiStatusText|failed')
end
end
@@ -2150,7 +1935,7 @@ describe Ci::Pipeline, :mailer do
let(:pipeline) { create(:ci_pipeline, status: :canceled) }
it 'returns detailed status for canceled pipeline' do
- expect(subject.text).to eq 'canceled'
+ expect(subject.text).to eq s_('CiStatusText|canceled')
end
end
@@ -2158,7 +1943,7 @@ describe Ci::Pipeline, :mailer do
let(:pipeline) { create(:ci_pipeline, status: :skipped) }
it 'returns detailed status for skipped pipeline' do
- expect(subject.text).to eq 'skipped'
+ expect(subject.text).to eq s_('CiStatusText|skipped')
end
end
@@ -2166,7 +1951,7 @@ describe Ci::Pipeline, :mailer do
let(:pipeline) { create(:ci_pipeline, status: :manual) }
it 'returns detailed status for blocked pipeline' do
- expect(subject.text).to eq 'blocked'
+ expect(subject.text).to eq s_('CiStatusText|blocked')
end
end
@@ -2178,7 +1963,7 @@ describe Ci::Pipeline, :mailer do
end
it 'retruns detailed status for successful pipeline with warnings' do
- expect(subject.label).to eq 'passed with warnings'
+ expect(subject.label).to eq(s_('CiStatusLabel|passed with warnings'))
end
end
end
@@ -2472,7 +2257,9 @@ describe Ci::Pipeline, :mailer do
let(:pipeline) { create(:ci_empty_pipeline, status: 'created', project: project, ref: 'master', sha: 'a288a022a53a5a944fae87bcec6efc87b7061808') }
it "returns merge requests whose `diff_head_sha` matches the pipeline's SHA" do
- allow_any_instance_of(MergeRequest).to receive(:diff_head_sha) { 'a288a022a53a5a944fae87bcec6efc87b7061808' }
+ allow_next_instance_of(MergeRequest) do |instance|
+ allow(instance).to receive(:diff_head_sha) { 'a288a022a53a5a944fae87bcec6efc87b7061808' }
+ end
merge_request = create(:merge_request, source_project: project, head_pipeline: pipeline, source_branch: pipeline.ref)
expect(pipeline.merge_requests_as_head_pipeline).to eq([merge_request])
@@ -2486,7 +2273,9 @@ describe Ci::Pipeline, :mailer do
it "doesn't return merge requests whose `diff_head_sha` doesn't match the pipeline's SHA" do
create(:merge_request, source_project: project, source_branch: pipeline.ref)
- allow_any_instance_of(MergeRequest).to receive(:diff_head_sha) { '97de212e80737a608d939f648d959671fb0a0142b' }
+ allow_next_instance_of(MergeRequest) do |instance|
+ allow(instance).to receive(:diff_head_sha) { '97de212e80737a608d939f648d959671fb0a0142b' }
+ end
expect(pipeline.merge_requests_as_head_pipeline).to be_empty
end
diff --git a/spec/models/ci/stage_spec.rb b/spec/models/ci/stage_spec.rb
index 8827509edda..c997f1ef405 100644
--- a/spec/models/ci/stage_spec.rb
+++ b/spec/models/ci/stage_spec.rb
@@ -65,7 +65,7 @@ describe Ci::Stage, :models do
it 'updates stage status correctly' do
expect { stage.update_status }
.to change { stage.reload.status }
- .to 'running'
+ .to eq 'running'
end
end
@@ -89,7 +89,7 @@ describe Ci::Stage, :models do
it 'updates status to skipped' do
expect { stage.update_status }
.to change { stage.reload.status }
- .to 'skipped'
+ .to eq 'skipped'
end
end
@@ -109,7 +109,7 @@ describe Ci::Stage, :models do
it 'updates status to skipped' do
expect { stage.update_status }
.to change { stage.reload.status }
- .to 'skipped'
+ .to eq('skipped')
end
end
@@ -171,7 +171,7 @@ describe Ci::Stage, :models do
end
it 'has a correct label' do
- expect(subject.label).to eq label.to_s
+ expect(subject.label).to eq(label.to_s)
end
end
@@ -187,7 +187,7 @@ describe Ci::Stage, :models do
end
it 'is passed with warnings' do
- expect(subject.label).to eq 'passed with warnings'
+ expect(subject.label).to eq s_('CiStatusLabel|passed with warnings')
end
end
end
diff --git a/spec/models/clusters/applications/knative_spec.rb b/spec/models/clusters/applications/knative_spec.rb
index 51c8a6bb68d..c1057af5f80 100644
--- a/spec/models/clusters/applications/knative_spec.rb
+++ b/spec/models/clusters/applications/knative_spec.rb
@@ -16,6 +16,10 @@ describe Clusters::Applications::Knative do
allow(ClusterWaitForIngressIpAddressWorker).to receive(:perform_async)
end
+ describe 'associations' do
+ it { is_expected.to have_one(:serverless_domain_cluster).class_name('Serverless::DomainCluster').with_foreign_key('clusters_applications_knative_id').inverse_of(:knative) }
+ end
+
describe 'when cloud run is enabled' do
let(:cluster) { create(:cluster, :provided_by_gcp, :cloud_run_enabled) }
let(:knative_cloud_run) { create(:clusters_applications_knative, cluster: cluster) }
@@ -119,7 +123,7 @@ describe Clusters::Applications::Knative do
subject { knative.install_command }
it 'is initialized with latest version' do
- expect(subject.version).to eq('0.7.0')
+ expect(subject.version).to eq('0.9.0')
end
it_behaves_like 'a command'
@@ -161,18 +165,19 @@ describe Clusters::Applications::Knative do
end
it "initializes command with all necessary postdelete script" do
- api_resources = YAML.safe_load(File.read(Rails.root.join(Clusters::Applications::Knative::API_RESOURCES_PATH)))
+ api_groups = YAML.safe_load(File.read(Rails.root.join(Clusters::Applications::Knative::API_GROUPS_PATH)))
remove_knative_istio_leftovers_script = [
"kubectl delete --ignore-not-found ns knative-serving",
"kubectl delete --ignore-not-found ns knative-build"
]
- full_delete_commands_size = api_resources.size + remove_knative_istio_leftovers_script.size
+ full_delete_commands_size = api_groups.size + remove_knative_istio_leftovers_script.size
expect(subject.postdelete).to include(*remove_knative_istio_leftovers_script)
expect(subject.postdelete.size).to eq(full_delete_commands_size)
- expect(subject.postdelete[2]).to eq("kubectl delete --ignore-not-found crd #{api_resources[0]}")
+ expect(subject.postdelete[2]).to eq("kubectl api-resources -o name --api-group #{api_groups[0]} | xargs kubectl delete --ignore-not-found crd")
+ expect(subject.postdelete[3]).to eq("kubectl api-resources -o name --api-group #{api_groups[1]} | xargs kubectl delete --ignore-not-found crd")
end
end
diff --git a/spec/models/clusters/applications/prometheus_spec.rb b/spec/models/clusters/applications/prometheus_spec.rb
index 2aeb7e5a990..d588ce3bc38 100644
--- a/spec/models/clusters/applications/prometheus_spec.rb
+++ b/spec/models/clusters/applications/prometheus_spec.rb
@@ -12,35 +12,29 @@ describe Clusters::Applications::Prometheus do
include_examples 'cluster application initial status specs'
describe 'after_destroy' do
- let(:project) { create(:project) }
- let(:cluster) { create(:cluster, :with_installed_helm, projects: [project]) }
- let!(:application) { create(:clusters_applications_prometheus, :installed, cluster: cluster) }
- let!(:prometheus_service) { project.create_prometheus_service(active: true) }
+ context 'cluster type is project' do
+ let(:cluster) { create(:cluster, :with_installed_helm) }
+ let(:application) { create(:clusters_applications_prometheus, :installed, cluster: cluster) }
- it 'deactivates prometheus_service after destroy' do
- expect do
- application.destroy!
+ it 'deactivates prometheus_service after destroy' do
+ expect(Clusters::Applications::DeactivateServiceWorker)
+ .to receive(:perform_async).with(cluster.id, 'prometheus')
- prometheus_service.reload
- end.to change(prometheus_service, :active).from(true).to(false)
+ application.destroy!
+ end
end
end
describe 'transition to installed' do
let(:project) { create(:project) }
- let(:cluster) { create(:cluster, :with_installed_helm, projects: [project]) }
- let(:prometheus_service) { double('prometheus_service') }
+ let(:cluster) { create(:cluster, :with_installed_helm) }
+ let(:application) { create(:clusters_applications_prometheus, :installing, cluster: cluster) }
- subject { create(:clusters_applications_prometheus, :installing, cluster: cluster) }
+ it 'schedules post installation job' do
+ expect(Clusters::Applications::ActivateServiceWorker)
+ .to receive(:perform_async).with(cluster.id, 'prometheus')
- before do
- allow(project).to receive(:find_or_initialize_service).with('prometheus').and_return prometheus_service
- end
-
- it 'ensures Prometheus service is activated' do
- expect(prometheus_service).to receive(:update!).with(active: true)
-
- subject.make_installed
+ application.make_installed
end
end
@@ -53,6 +47,16 @@ describe Clusters::Applications::Prometheus do
end
describe '#prometheus_client' do
+ shared_examples 'exception caught for prometheus client' do
+ before do
+ allow(kube_client).to receive(:proxy_url).and_raise(exception)
+ end
+
+ it 'returns nil' do
+ expect(subject.prometheus_client).to be_nil
+ end
+ end
+
context 'cluster is nil' do
it 'returns nil' do
expect(subject.cluster).to be_nil
@@ -98,12 +102,18 @@ describe Clusters::Applications::Prometheus do
end
context 'when cluster is not reachable' do
- before do
- allow(kube_client).to receive(:proxy_url).and_raise(Kubeclient::HttpError.new(401, 'Unauthorized', nil))
+ it_behaves_like 'exception caught for prometheus client' do
+ let(:exception) { Kubeclient::HttpError.new(401, 'Unauthorized', nil) }
+ end
+ end
+
+ context 'when there is a socket error while contacting cluster' do
+ it_behaves_like 'exception caught for prometheus client' do
+ let(:exception) { Errno::ECONNREFUSED }
end
- it 'returns nil' do
- expect(subject.prometheus_client).to be_nil
+ it_behaves_like 'exception caught for prometheus client' do
+ let(:exception) { Errno::ECONNRESET }
end
end
end
@@ -196,21 +206,19 @@ describe Clusters::Applications::Prometheus do
end
end
- describe '#upgrade_command' do
+ describe '#patch_command' do
+ subject(:patch_command) { prometheus.patch_command(values) }
+
let(:prometheus) { build(:clusters_applications_prometheus) }
let(:values) { prometheus.values }
- it 'returns an instance of Gitlab::Kubernetes::Helm::InstallCommand' do
- expect(prometheus.upgrade_command(values)).to be_an_instance_of(::Gitlab::Kubernetes::Helm::InstallCommand)
- end
+ it { is_expected.to be_an_instance_of(::Gitlab::Kubernetes::Helm::PatchCommand) }
it 'is initialized with 3 arguments' do
- command = prometheus.upgrade_command(values)
-
- expect(command.name).to eq('prometheus')
- expect(command.chart).to eq('stable/prometheus')
- expect(command.version).to eq('6.7.3')
- expect(command.files).to eq(prometheus.files)
+ expect(patch_command.name).to eq('prometheus')
+ expect(patch_command.chart).to eq('stable/prometheus')
+ expect(patch_command.version).to eq('6.7.3')
+ expect(patch_command.files).to eq(prometheus.files)
end
end
@@ -289,4 +297,28 @@ describe Clusters::Applications::Prometheus do
end
end
end
+
+ describe '#configured?' do
+ let(:prometheus) { create(:clusters_applications_prometheus, :installed, cluster: cluster) }
+
+ subject { prometheus.configured? }
+
+ context 'when a kubenetes client is present' do
+ let(:cluster) { create(:cluster, :project, :provided_by_gcp) }
+
+ it { is_expected.to be_truthy }
+
+ context 'when it is not availalble' do
+ let(:prometheus) { create(:clusters_applications_prometheus, cluster: cluster) }
+
+ it { is_expected.to be_falsey }
+ end
+ end
+
+ context 'when a kubenetes client is not present' do
+ let(:cluster) { create(:cluster) }
+
+ it { is_expected.to be_falsy }
+ end
+ end
end
diff --git a/spec/models/clusters/applications/runner_spec.rb b/spec/models/clusters/applications/runner_spec.rb
index b420a180524..6ee6711ec4b 100644
--- a/spec/models/clusters/applications/runner_spec.rb
+++ b/spec/models/clusters/applications/runner_spec.rb
@@ -174,7 +174,9 @@ describe Clusters::Applications::Runner do
subject { create(:clusters_applications_runner, :scheduled, runner: ci_runner) }
it 'calls prepare_uninstall' do
- expect_any_instance_of(described_class).to receive(:prepare_uninstall).and_call_original
+ expect_next_instance_of(described_class) do |instance|
+ expect(instance).to receive(:prepare_uninstall).and_call_original
+ end
subject.make_uninstalling!
end
diff --git a/spec/models/clusters/cluster_spec.rb b/spec/models/clusters/cluster_spec.rb
index a163229e15a..44ca4a06e2d 100644
--- a/spec/models/clusters/cluster_spec.rb
+++ b/spec/models/clusters/cluster_spec.rb
@@ -16,6 +16,7 @@ describe Clusters::Cluster, :use_clean_rails_memory_store_caching do
it { is_expected.to have_many(:projects) }
it { is_expected.to have_many(:cluster_groups) }
it { is_expected.to have_many(:groups) }
+ it { is_expected.to have_many(:groups_projects) }
it { is_expected.to have_one(:provider_gcp) }
it { is_expected.to have_one(:provider_aws) }
it { is_expected.to have_one(:platform_kubernetes) }
@@ -500,6 +501,48 @@ describe Clusters::Cluster, :use_clean_rails_memory_store_caching do
end
end
+ describe '.with_persisted_applications' do
+ let(:cluster) { create(:cluster) }
+ let!(:helm) { create(:clusters_applications_helm, :installed, cluster: cluster) }
+
+ it 'preloads persisted applications' do
+ query_rec = ActiveRecord::QueryRecorder.new do
+ described_class.with_persisted_applications.find_by_id(cluster.id).application_helm
+ end
+
+ expect(query_rec.count).to eq(1)
+ end
+ end
+
+ describe '#persisted_applications' do
+ let(:cluster) { create(:cluster) }
+
+ subject { cluster.persisted_applications }
+
+ context 'when all applications are created' do
+ let!(:helm) { create(:clusters_applications_helm, cluster: cluster) }
+ let!(:ingress) { create(:clusters_applications_ingress, cluster: cluster) }
+ let!(:cert_manager) { create(:clusters_applications_cert_manager, cluster: cluster) }
+ let!(:prometheus) { create(:clusters_applications_prometheus, cluster: cluster) }
+ let!(:runner) { create(:clusters_applications_runner, cluster: cluster) }
+ let!(:jupyter) { create(:clusters_applications_jupyter, cluster: cluster) }
+ let!(:knative) { create(:clusters_applications_knative, cluster: cluster) }
+
+ it 'returns a list of created applications' do
+ is_expected.to contain_exactly(helm, ingress, cert_manager, prometheus, runner, jupyter, knative)
+ end
+ end
+
+ context 'when not all were created' do
+ let!(:helm) { create(:clusters_applications_helm, cluster: cluster) }
+ let!(:ingress) { create(:clusters_applications_ingress, cluster: cluster) }
+
+ it 'returns a list of created applications' do
+ is_expected.to contain_exactly(helm, ingress)
+ end
+ end
+ end
+
describe '#applications' do
set(:cluster) { create(:cluster) }
@@ -574,6 +617,36 @@ describe Clusters::Cluster, :use_clean_rails_memory_store_caching do
end
end
+ describe '#all_projects' do
+ context 'cluster_type is project_type' do
+ let(:project) { create(:project) }
+ let(:cluster) { create(:cluster, :with_installed_helm, projects: [project]) }
+
+ it 'returns projects' do
+ expect(cluster.all_projects).to match_array [project]
+ end
+ end
+
+ context 'cluster_type is group_type' do
+ let(:group) { create(:group) }
+ let!(:project) { create(:project, group: group) }
+ let(:cluster) { create(:cluster_for_group, :with_installed_helm, groups: [group]) }
+
+ it 'returns group projects' do
+ expect(cluster.all_projects.ids).to match_array [project.id]
+ end
+ end
+
+ context 'cluster_type is instance_type' do
+ let!(:project) { create(:project) }
+ let(:cluster) { create(:cluster, :instance) }
+
+ it "returns all instance's projects" do
+ expect(cluster.all_projects.ids).to match_array [project.id]
+ end
+ end
+ end
+
describe '#kube_ingress_domain' do
let(:cluster) { create(:cluster, :provided_by_gcp) }
@@ -601,7 +674,8 @@ describe Clusters::Cluster, :use_clean_rails_memory_store_caching do
describe '#kubernetes_namespace_for' do
let(:cluster) { create(:cluster, :group) }
- let(:environment) { create(:environment) }
+ let(:environment) { create(:environment, last_deployable: build) }
+ let(:build) { create(:ci_build) }
subject { cluster.kubernetes_namespace_for(environment) }
@@ -609,16 +683,15 @@ describe Clusters::Cluster, :use_clean_rails_memory_store_caching do
expect(Clusters::KubernetesNamespaceFinder).to receive(:new)
.with(cluster, project: environment.project, environment_name: environment.name)
.and_return(double(execute: persisted_namespace))
- end
-
- context 'a persisted namespace exists' do
- let(:persisted_namespace) { create(:cluster_kubernetes_namespace) }
- it { is_expected.to eq persisted_namespace.namespace }
+ allow(build).to receive(:expanded_kubernetes_namespace)
+ .and_return(ci_configured_namespace)
end
- context 'no persisted namespace exists' do
+ context 'no persisted namespace exists and namespace is not specified in CI template' do
let(:persisted_namespace) { nil }
+ let(:ci_configured_namespace) { nil }
+
let(:namespace_generator) { double }
let(:default_namespace) { 'a-default-namespace' }
@@ -633,6 +706,27 @@ describe Clusters::Cluster, :use_clean_rails_memory_store_caching do
it { is_expected.to eq default_namespace }
end
+
+ context 'persisted namespace exists' do
+ let(:persisted_namespace) { create(:cluster_kubernetes_namespace) }
+ let(:ci_configured_namespace) { nil }
+
+ it { is_expected.to eq persisted_namespace.namespace }
+ end
+
+ context 'namespace is specified in CI template' do
+ let(:persisted_namespace) { nil }
+ let(:ci_configured_namespace) { 'ci-configured-namespace' }
+
+ it { is_expected.to eq ci_configured_namespace }
+ end
+
+ context 'persisted namespace exists and namespace is also specifed in CI template' do
+ let(:persisted_namespace) { create(:cluster_kubernetes_namespace) }
+ let(:ci_configured_namespace) { 'ci-configured-namespace' }
+
+ it { is_expected.to eq persisted_namespace.namespace }
+ end
end
describe '#predefined_variables' do
@@ -910,12 +1004,62 @@ describe Clusters::Cluster, :use_clean_rails_memory_store_caching do
it { is_expected.to eq(connection_status: :unknown_failure) }
it 'notifies Sentry' do
- expect(Gitlab::Sentry).to receive(:track_acceptable_exception)
- .with(instance_of(StandardError), hash_including(extra: { cluster_id: cluster.id }))
+ expect(Gitlab::ErrorTracking).to receive(:track_exception)
+ .with(instance_of(StandardError), hash_including(cluster_id: cluster.id))
subject
end
end
end
end
+
+ describe '#delete_cached_resources!' do
+ let!(:cluster) { create(:cluster, :project) }
+ let!(:staging_namespace) { create(:cluster_kubernetes_namespace, cluster: cluster, namespace: 'staging') }
+ let!(:production_namespace) { create(:cluster_kubernetes_namespace, cluster: cluster, namespace: 'production') }
+
+ subject { cluster.delete_cached_resources! }
+
+ it 'deletes associated namespace records' do
+ expect(cluster.kubernetes_namespaces).to match_array([staging_namespace, production_namespace])
+
+ subject
+
+ expect(cluster.kubernetes_namespaces).to be_empty
+ end
+ end
+
+ describe '#clusterable' do
+ subject { cluster.clusterable }
+
+ context 'project type' do
+ let(:cluster) { create(:cluster, :project) }
+
+ it { is_expected.to eq(cluster.project) }
+ end
+
+ context 'group type' do
+ let(:cluster) { create(:cluster, :group) }
+
+ it { is_expected.to eq(cluster.group) }
+ end
+
+ context 'instance type' do
+ let(:cluster) { create(:cluster, :instance) }
+
+ it { is_expected.to be_a(Clusters::Instance) }
+ end
+
+ context 'unknown type' do
+ let(:cluster) { create(:cluster, :project) }
+
+ before do
+ allow(cluster).to receive(:cluster_type).and_return('unknown_type')
+ end
+
+ it 'raises NotImplementedError' do
+ expect { subject }.to raise_error(NotImplementedError)
+ end
+ end
+ end
end
diff --git a/spec/models/clusters/platforms/kubernetes_spec.rb b/spec/models/clusters/platforms/kubernetes_spec.rb
index d53fc32cfef..4271cf9f1b3 100644
--- a/spec/models/clusters/platforms/kubernetes_spec.rb
+++ b/spec/models/clusters/platforms/kubernetes_spec.rb
@@ -290,6 +290,26 @@ describe Clusters::Platforms::Kubernetes do
it { is_expected.to include(key: 'KUBE_TOKEN', value: platform.token, public: false, masked: true) }
it { is_expected.to include(key: 'KUBE_NAMESPACE', value: namespace) }
it { is_expected.to include(key: 'KUBECONFIG', value: kubeconfig, public: false, file: true) }
+
+ context 'custom namespace is provided' do
+ let(:custom_namespace) { 'custom-namespace' }
+
+ subject do
+ platform.predefined_variables(
+ project: project,
+ environment_name: environment_name,
+ kubernetes_namespace: custom_namespace
+ )
+ end
+
+ before do
+ allow(platform).to receive(:kubeconfig).with(custom_namespace).and_return(kubeconfig)
+ end
+
+ it { is_expected.to include(key: 'KUBE_TOKEN', value: platform.token, public: false, masked: true) }
+ it { is_expected.to include(key: 'KUBE_NAMESPACE', value: custom_namespace) }
+ it { is_expected.to include(key: 'KUBECONFIG', value: kubeconfig, public: false, file: true) }
+ end
end
end
diff --git a/spec/models/commit_spec.rb b/spec/models/commit_spec.rb
index 839c4cadb5e..1c1b550c69b 100644
--- a/spec/models/commit_spec.rb
+++ b/spec/models/commit_spec.rb
@@ -80,6 +80,17 @@ describe Commit do
expect(commit.author).to eq(user)
end
+ context 'with a user with an unconfirmed e-mail' do
+ before do
+ user = create(:user)
+ create(:email, user: user, email: commit.author_email)
+ end
+
+ it 'returns no user' do
+ expect(commit.author).to be_nil
+ end
+ end
+
context 'using eager loading' do
let!(:alice) { create(:user, email: 'alice@example.com') }
let!(:bob) { create(:user, email: 'hunter2@example.com') }
@@ -115,7 +126,7 @@ describe Commit do
let!(:commits) { [alice_commit, bob_commit, eve_commit, jeff_commit] }
before do
- create(:email, user: bob, email: 'bob@example.com')
+ create(:email, :confirmed, user: bob, email: 'bob@example.com')
end
it 'executes only two SQL queries' do
@@ -179,6 +190,32 @@ describe Commit do
end
end
+ describe '#committer' do
+ context 'with a confirmed e-mail' do
+ it 'returns the user' do
+ user = create(:user, email: commit.committer_email)
+
+ expect(commit.committer).to eq(user)
+ end
+ end
+
+ context 'with an unconfirmed e-mail' do
+ let(:user) { create(:user) }
+
+ before do
+ create(:email, user: user, email: commit.committer_email)
+ end
+
+ it 'returns no user' do
+ expect(commit.committer).to be_nil
+ end
+
+ it 'returns the user' do
+ expect(commit.committer(confirmed: false)).to eq(user)
+ end
+ end
+ end
+
describe '#to_reference' do
let(:project) { create(:project, :repository, path: 'sample-project') }
@@ -359,7 +396,7 @@ eos
it { expect(data).to be_a(Hash) }
it { expect(data[:message]).to include('adds bar folder and branch-test text file to check Repository merged_to_root_ref method') }
- it { expect(data[:timestamp]).to eq('2016-09-27T14:37:46Z') }
+ it { expect(data[:timestamp]).to eq('2016-09-27T14:37:46+00:00') }
it { expect(data[:added]).to contain_exactly("bar/branch-test.txt") }
it { expect(data[:modified]).to eq([]) }
it { expect(data[:removed]).to eq([]) }
diff --git a/spec/models/commit_status_spec.rb b/spec/models/commit_status_spec.rb
index 1e1b679a32c..31aebac54e1 100644
--- a/spec/models/commit_status_spec.rb
+++ b/spec/models/commit_status_spec.rb
@@ -312,6 +312,72 @@ describe CommitStatus do
end
end
+ describe '.for_ref' do
+ subject { described_class.for_ref('bb').order(:id) }
+
+ let(:statuses) do
+ [create_status(ref: 'aa'),
+ create_status(ref: 'bb'),
+ create_status(ref: 'cc')]
+ end
+
+ it 'returns statuses with the specified ref' do
+ is_expected.to eq(statuses.values_at(1))
+ end
+ end
+
+ describe '.by_name' do
+ subject { described_class.by_name('bb').order(:id) }
+
+ let(:statuses) do
+ [create_status(name: 'aa'),
+ create_status(name: 'bb'),
+ create_status(name: 'cc')]
+ end
+
+ it 'returns statuses with the specified name' do
+ is_expected.to eq(statuses.values_at(1))
+ end
+ end
+
+ describe '.for_project_paths' do
+ subject do
+ described_class
+ .for_project_paths(paths)
+ .order(:id)
+ end
+
+ context 'with a single path' do
+ let(:other_project) { create(:project, :repository) }
+ let(:paths) { other_project.full_path }
+
+ let(:other_pipeline) do
+ create(:ci_pipeline, project: other_project, sha: other_project.commit.id)
+ end
+
+ let(:statuses) do
+ [create_status(pipeline: pipeline),
+ create_status(pipeline: other_pipeline)]
+ end
+
+ it 'returns statuses for other_project' do
+ is_expected.to eq(statuses.values_at(1))
+ end
+ end
+
+ context 'with array of paths' do
+ let(:paths) { [project.full_path] }
+
+ let(:statuses) do
+ [create_status(pipeline: pipeline)]
+ end
+
+ it 'returns statuses for project' do
+ is_expected.to eq(statuses.values_at(0))
+ end
+ end
+ end
+
describe '.status' do
context 'when there are multiple statuses present' do
before do
diff --git a/spec/models/concerns/group_descendant_spec.rb b/spec/models/concerns/group_descendant_spec.rb
index 192e884f3e8..47419770d0f 100644
--- a/spec/models/concerns/group_descendant_spec.rb
+++ b/spec/models/concerns/group_descendant_spec.rb
@@ -82,7 +82,7 @@ describe GroupDescendant do
end
it 'tracks the exception when a parent was not preloaded' do
- expect(Gitlab::Sentry).to receive(:track_exception).and_call_original
+ expect(Gitlab::ErrorTracking).to receive(:track_and_raise_for_dev_exception).and_call_original
expect { described_class.build_hierarchy([subsub_group]) }.to raise_error(ArgumentError)
end
@@ -91,7 +91,7 @@ describe GroupDescendant do
expected_hierarchy = { parent => { subgroup => subsub_group } }
# this does not raise in production, so stubbing it here.
- allow(Gitlab::Sentry).to receive(:track_exception)
+ allow(Gitlab::ErrorTracking).to receive(:track_and_raise_for_dev_exception)
expect(described_class.build_hierarchy([subsub_group])).to eq(expected_hierarchy)
end
diff --git a/spec/models/concerns/ignorable_columns_spec.rb b/spec/models/concerns/ignorable_columns_spec.rb
new file mode 100644
index 00000000000..55efa1b5fda
--- /dev/null
+++ b/spec/models/concerns/ignorable_columns_spec.rb
@@ -0,0 +1,88 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe IgnorableColumns do
+ let(:record_class) do
+ Class.new(ApplicationRecord) do
+ include IgnorableColumns
+ end
+ end
+
+ subject { record_class }
+
+ it 'adds columns to ignored_columns' do
+ expect do
+ subject.ignore_columns(:name, :created_at, remove_after: '2019-12-01', remove_with: '12.6')
+ end.to change { subject.ignored_columns }.from([]).to(%w(name created_at))
+ end
+
+ it 'adds columns to ignored_columns (array version)' do
+ expect do
+ subject.ignore_columns(%i[name created_at], remove_after: '2019-12-01', remove_with: '12.6')
+ end.to change { subject.ignored_columns }.from([]).to(%w(name created_at))
+ end
+
+ it 'requires remove_after attribute to be set' do
+ expect { subject.ignore_columns(:name, remove_after: nil, remove_with: 12.6) }.to raise_error(ArgumentError, /Please indicate/)
+ end
+
+ it 'requires remove_after attribute to be set' do
+ expect { subject.ignore_columns(:name, remove_after: "not a date", remove_with: 12.6) }.to raise_error(ArgumentError, /Please indicate/)
+ end
+
+ it 'requires remove_with attribute to be set' do
+ expect { subject.ignore_columns(:name, remove_after: '2019-12-01', remove_with: nil) }.to raise_error(ArgumentError, /Please indicate/)
+ end
+
+ describe '.ignored_columns_details' do
+ shared_examples_for 'storing removal information' do
+ it 'storing removal information' do
+ subject.ignore_column(columns, remove_after: '2019-12-01', remove_with: '12.6')
+
+ [columns].flatten.each do |column|
+ expect(subject.ignored_columns_details[column].remove_after).to eq(Date.parse('2019-12-01'))
+ expect(subject.ignored_columns_details[column].remove_with).to eq('12.6')
+ end
+ end
+ end
+
+ context 'with single column' do
+ let(:columns) { :name }
+ it_behaves_like 'storing removal information'
+ end
+
+ context 'with array column' do
+ let(:columns) { %i[name created_at] }
+ it_behaves_like 'storing removal information'
+ end
+
+ it 'defaults to empty Hash' do
+ expect(subject.ignored_columns_details).to eq({})
+ end
+ end
+
+ describe IgnorableColumns::ColumnIgnore do
+ subject { described_class.new(remove_after, remove_with) }
+
+ let(:remove_with) { double }
+
+ describe '#safe_to_remove?' do
+ context 'after remove_after date has passed' do
+ let(:remove_after) { Date.parse('2019-01-10') }
+
+ it 'returns true (safe to remove)' do
+ expect(subject.safe_to_remove?).to be_truthy
+ end
+ end
+
+ context 'before remove_after date has passed' do
+ let(:remove_after) { Date.today }
+
+ it 'returns false (not safe to remove)' do
+ expect(subject.safe_to_remove?).to be_falsey
+ end
+ end
+ end
+ end
+end
diff --git a/spec/models/concerns/issuable_spec.rb b/spec/models/concerns/issuable_spec.rb
index f7bef9e71e2..76a3a825978 100644
--- a/spec/models/concerns/issuable_spec.rb
+++ b/spec/models/concerns/issuable_spec.rb
@@ -3,6 +3,8 @@
require 'spec_helper'
describe Issuable do
+ include ProjectForksHelper
+
let(:issuable_class) { Issue }
let(:issue) { create(:issue, title: 'An issue', description: 'A description') }
let(:user) { create(:user) }
@@ -852,4 +854,91 @@ describe Issuable do
it_behaves_like 'matches_cross_reference_regex? fails fast'
end
end
+
+ describe 'release scopes' do
+ let_it_be(:project) { create(:project) }
+ let(:forked_project) { fork_project(project) }
+
+ let_it_be(:release_1) { create(:release, tag: 'v1.0', project: project) }
+ let_it_be(:release_2) { create(:release, tag: 'v2.0', project: project) }
+ let_it_be(:release_3) { create(:release, tag: 'v3.0', project: project) }
+ let_it_be(:release_4) { create(:release, tag: 'v4.0', project: project) }
+
+ let_it_be(:milestone_1) { create(:milestone, releases: [release_1], title: 'm1', project: project) }
+ let_it_be(:milestone_2) { create(:milestone, releases: [release_1, release_2], title: 'm2', project: project) }
+ let_it_be(:milestone_3) { create(:milestone, releases: [release_2, release_4], title: 'm3', project: project) }
+ let_it_be(:milestone_4) { create(:milestone, releases: [release_3], title: 'm4', project: project) }
+ let_it_be(:milestone_5) { create(:milestone, releases: [release_3], title: 'm5', project: project) }
+ let_it_be(:milestone_6) { create(:milestone, title: 'm6', project: project) }
+
+ let_it_be(:issue_1) { create(:issue, milestone: milestone_1, project: project) }
+ let_it_be(:issue_2) { create(:issue, milestone: milestone_1, project: project) }
+ let_it_be(:issue_3) { create(:issue, milestone: milestone_2, project: project) }
+ let_it_be(:issue_4) { create(:issue, milestone: milestone_5, project: project) }
+ let_it_be(:issue_5) { create(:issue, milestone: milestone_6, project: project) }
+ let_it_be(:issue_6) { create(:issue, project: project) }
+
+ let(:mr_1) { create(:merge_request, milestone: milestone_1, target_project: project, source_project: project) }
+ let(:mr_2) { create(:merge_request, milestone: milestone_3, target_project: project, source_project: forked_project) }
+ let(:mr_3) { create(:merge_request, source_project: project) }
+
+ let_it_be(:issue_items) { Issue.all }
+ let(:mr_items) { MergeRequest.all }
+
+ describe '#without_release' do
+ it 'returns the issues or mrs not tied to any milestone and the ones tied to milestone with no release' do
+ expect(issue_items.without_release).to contain_exactly(issue_5, issue_6)
+ expect(mr_items.without_release).to contain_exactly(mr_3)
+ end
+ end
+
+ describe '#any_release' do
+ it 'returns all issues or all mrs tied to a release' do
+ expect(issue_items.any_release).to contain_exactly(issue_1, issue_2, issue_3, issue_4)
+ expect(mr_items.any_release).to contain_exactly(mr_1, mr_2)
+ end
+ end
+
+ describe '#with_release' do
+ it 'returns the issues tied to a specfic release' do
+ expect(issue_items.with_release('v1.0', project.id)).to contain_exactly(issue_1, issue_2, issue_3)
+ end
+
+ it 'returns the mrs tied to a specific release' do
+ expect(mr_items.with_release('v1.0', project.id)).to contain_exactly(mr_1)
+ end
+
+ context 'when a release has a milestone with one issue and another one with no issue' do
+ it 'returns that one issue' do
+ expect(issue_items.with_release('v2.0', project.id)).to contain_exactly(issue_3)
+ end
+
+ context 'when the milestone with no issue is added as a filter' do
+ it 'returns an empty list' do
+ expect(issue_items.with_release('v2.0', project.id).with_milestone('m3')).to be_empty
+ end
+ end
+
+ context 'when the milestone with the issue is added as a filter' do
+ it 'returns this issue' do
+ expect(issue_items.with_release('v2.0', project.id).with_milestone('m2')).to contain_exactly(issue_3)
+ end
+ end
+ end
+
+ context 'when there is no issue or mr under a specific release' do
+ it 'returns no issue or no mr' do
+ expect(issue_items.with_release('v4.0', project.id)).to be_empty
+ expect(mr_items.with_release('v4.0', project.id)).to be_empty
+ end
+ end
+
+ context 'when a non-existent release tag is passed in' do
+ it 'returns no issue or no mr' do
+ expect(issue_items.with_release('v999.0', project.id)).to be_empty
+ expect(mr_items.with_release('v999.0', project.id)).to be_empty
+ end
+ end
+ end
+ end
end
diff --git a/spec/models/concerns/issuable_states_spec.rb b/spec/models/concerns/issuable_states_spec.rb
deleted file mode 100644
index a5e19cdfc4f..00000000000
--- a/spec/models/concerns/issuable_states_spec.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-# This spec checks if state_id column of issues and merge requests
-# are being synced on every save.
-# It can be removed in the next release. Check https://gitlab.com/gitlab-org/gitlab-foss/issues/51789 for more information.
-describe IssuableStates do
- [Issue, MergeRequest].each do |klass|
- it "syncs state_id column when #{klass.model_name.human} gets created" do
- klass.available_states.each do |state, state_id|
- issuable = build(klass.model_name.param_key, state: state.to_s)
-
- issuable.save!
-
- expect(issuable.state_id).to eq(state_id)
- end
- end
-
- it "syncs state_id column when #{klass.model_name.human} gets updated" do
- klass.available_states.each do |state, state_id|
- issuable = create(klass.model_name.param_key, state: state.to_s)
-
- issuable.update(state: state)
-
- expect(issuable.state_id).to eq(state_id)
- end
- end
- end
-end
diff --git a/spec/models/concerns/mentionable_spec.rb b/spec/models/concerns/mentionable_spec.rb
index 6034344d034..883f678b8f5 100644
--- a/spec/models/concerns/mentionable_spec.rb
+++ b/spec/models/concerns/mentionable_spec.rb
@@ -166,6 +166,21 @@ describe Issue, "Mentionable" do
create(:issue, project: project, description: description, author: author)
end
end
+
+ describe '#store_mentions!' do
+ it_behaves_like 'mentions in description', :issue
+ it_behaves_like 'mentions in notes', :issue do
+ let(:note) { create(:note_on_issue) }
+ let(:mentionable) { note.noteable }
+ end
+ end
+
+ describe 'load mentions' do
+ it_behaves_like 'load mentions from DB', :issue do
+ let(:note) { create(:note_on_issue) }
+ let(:mentionable) { note.noteable }
+ end
+ end
end
describe Commit, 'Mentionable' do
@@ -221,4 +236,56 @@ describe Commit, 'Mentionable' do
end
end
end
+
+ describe '#store_mentions!' do
+ it_behaves_like 'mentions in notes', :commit do
+ let(:note) { create(:note_on_commit) }
+ let(:mentionable) { note.noteable }
+ end
+ end
+
+ describe 'load mentions' do
+ it_behaves_like 'load mentions from DB', :commit do
+ let(:note) { create(:note_on_commit) }
+ let(:mentionable) { note.noteable }
+ end
+ end
+end
+
+describe MergeRequest, 'Mentionable' do
+ describe '#store_mentions!' do
+ it_behaves_like 'mentions in description', :merge_request
+ it_behaves_like 'mentions in notes', :merge_request do
+ let(:project) { create(:project) }
+ let(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
+ let(:note) { create(:note_on_merge_request, noteable: merge_request, project: merge_request.project) }
+ let(:mentionable) { note.noteable }
+ end
+ end
+
+ describe 'load mentions' do
+ it_behaves_like 'load mentions from DB', :merge_request do
+ let(:project) { create(:project) }
+ let(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
+ let(:note) { create(:note_on_merge_request, noteable: merge_request, project: merge_request.project) }
+ let(:mentionable) { note.noteable }
+ end
+ end
+end
+
+describe Snippet, 'Mentionable' do
+ describe '#store_mentions!' do
+ it_behaves_like 'mentions in description', :project_snippet
+ it_behaves_like 'mentions in notes', :project_snippet do
+ let(:note) { create(:note_on_project_snippet) }
+ let(:mentionable) { note.noteable }
+ end
+ end
+
+ describe 'load mentions' do
+ it_behaves_like 'load mentions from DB', :project_snippet do
+ let(:note) { create(:note_on_project_snippet) }
+ let(:mentionable) { note.noteable }
+ end
+ end
end
diff --git a/spec/models/concerns/milestoneish_spec.rb b/spec/models/concerns/milestoneish_spec.rb
index 7e9a8306612..d46c9747845 100644
--- a/spec/models/concerns/milestoneish_spec.rb
+++ b/spec/models/concerns/milestoneish_spec.rb
@@ -192,6 +192,23 @@ describe Milestone, 'Milestoneish' do
end
end
end
+
+ context 'when milestone is at parent level group' do
+ let(:parent_group) { create(:group) }
+ let(:group) { create(:group, parent: parent_group) }
+ let(:project) { create(:project, namespace: group) }
+ let(:milestone) { create(:milestone, group: parent_group) }
+
+ it 'does not return any merge request for a non member' do
+ merge_requests = milestone.merge_requests_visible_to_user(non_member)
+ expect(merge_requests).to be_empty
+ end
+
+ it 'returns milestone merge requests for a member' do
+ merge_requests = milestone.merge_requests_visible_to_user(member)
+ expect(merge_requests).to contain_exactly(merge_request)
+ end
+ end
end
describe '#complete?' do
diff --git a/spec/models/concerns/reactive_caching_spec.rb b/spec/models/concerns/reactive_caching_spec.rb
index 3d026932f59..4af6906ce2c 100644
--- a/spec/models/concerns/reactive_caching_spec.rb
+++ b/spec/models/concerns/reactive_caching_spec.rb
@@ -196,6 +196,12 @@ describe ReactiveCaching, :use_clean_rails_memory_store_caching do
2.times { instance.exclusively_update_reactive_cache! }
end
+ it 'does not delete the value key' do
+ expect(Rails.cache).to receive(:delete).with(cache_key).never
+
+ go!
+ end
+
context 'and #calculate_reactive_cache raises an exception' do
before do
stub_reactive_cache(instance, "preexisting")
@@ -223,6 +229,12 @@ describe ReactiveCaching, :use_clean_rails_memory_store_caching do
go!
end
+
+ it 'deletes the value key' do
+ expect(Rails.cache).to receive(:delete).with(cache_key).once
+
+ go!
+ end
end
context 'when the lease is already taken' do
diff --git a/spec/models/concerns/safe_url_spec.rb b/spec/models/concerns/safe_url_spec.rb
new file mode 100644
index 00000000000..0ad26660a60
--- /dev/null
+++ b/spec/models/concerns/safe_url_spec.rb
@@ -0,0 +1,52 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe SafeUrl do
+ describe '#safe_url' do
+ class SafeUrlTestClass
+ include SafeUrl
+
+ attr_reader :url
+
+ def initialize(url)
+ @url = url
+ end
+ end
+
+ let(:test_class) { SafeUrlTestClass.new(url) }
+ let(:url) { 'http://example.com' }
+
+ subject { test_class.safe_url }
+
+ it { is_expected.to eq(url) }
+
+ context 'when URL contains credentials' do
+ let(:url) { 'http://foo:bar@example.com' }
+
+ it { is_expected.to eq('http://*****:*****@example.com')}
+
+ context 'when username is whitelisted' do
+ subject { test_class.safe_url(usernames_whitelist: usernames_whitelist) }
+
+ let(:usernames_whitelist) { %w[foo] }
+
+ it 'does expect the whitelisted username not to be masked' do
+ is_expected.to eq('http://foo:*****@example.com')
+ end
+ end
+ end
+
+ context 'when URL is empty' do
+ let(:url) { nil }
+
+ it { is_expected.to be_nil }
+ end
+
+ context 'when URI raises an error' do
+ let(:url) { 123 }
+
+ it { is_expected.to be_nil }
+ end
+ end
+end
diff --git a/spec/models/concerns/sha256_attribute_spec.rb b/spec/models/concerns/sha256_attribute_spec.rb
new file mode 100644
index 00000000000..213723c2dcb
--- /dev/null
+++ b/spec/models/concerns/sha256_attribute_spec.rb
@@ -0,0 +1,91 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Sha256Attribute do
+ let(:model) { Class.new { include Sha256Attribute } }
+
+ before do
+ columns = [
+ double(:column, name: 'name', type: :text),
+ double(:column, name: 'sha256', type: :binary)
+ ]
+
+ allow(model).to receive(:columns).and_return(columns)
+ end
+
+ describe '#sha_attribute' do
+ context 'when in non-production' do
+ before do
+ stub_rails_env('development')
+ end
+
+ context 'when the table exists' do
+ before do
+ allow(model).to receive(:table_exists?).and_return(true)
+ end
+
+ it 'defines a SHA attribute for a binary column' do
+ expect(model).to receive(:attribute)
+ .with(:sha256, an_instance_of(Gitlab::Database::Sha256Attribute))
+
+ model.sha256_attribute(:sha256)
+ end
+
+ it 'raises ArgumentError when the column type is not :binary' do
+ expect { model.sha256_attribute(:name) }.to raise_error(ArgumentError)
+ end
+ end
+
+ context 'when the table does not exist' do
+ it 'allows the attribute to be added and issues a warning' do
+ allow(model).to receive(:table_exists?).and_return(false)
+
+ expect(model).not_to receive(:columns)
+ expect(model).to receive(:attribute)
+ expect(model).to receive(:warn)
+
+ model.sha256_attribute(:name)
+ end
+ end
+
+ context 'when the column does not exist' do
+ it 'allows the attribute to be added and issues a warning' do
+ allow(model).to receive(:table_exists?).and_return(true)
+
+ expect(model).to receive(:columns)
+ expect(model).to receive(:attribute)
+ expect(model).to receive(:warn)
+
+ model.sha256_attribute(:no_name)
+ end
+ end
+
+ context 'when other execeptions are raised' do
+ it 'logs and re-rasises the error' do
+ allow(model).to receive(:table_exists?).and_raise(ActiveRecord::NoDatabaseError.new('does not exist'))
+
+ expect(model).not_to receive(:columns)
+ expect(model).not_to receive(:attribute)
+ expect(Gitlab::AppLogger).to receive(:error)
+
+ expect { model.sha256_attribute(:name) }.to raise_error(ActiveRecord::NoDatabaseError)
+ end
+ end
+ end
+
+ context 'when in production' do
+ before do
+ stub_rails_env('production')
+ end
+
+ it 'defines a SHA attribute' do
+ expect(model).not_to receive(:table_exists?)
+ expect(model).not_to receive(:columns)
+ expect(model).to receive(:attribute).with(:sha256, an_instance_of(Gitlab::Database::Sha256Attribute))
+
+ model.sha256_attribute(:sha256)
+ end
+ end
+ end
+end
diff --git a/spec/models/container_expiration_policy_spec.rb b/spec/models/container_expiration_policy_spec.rb
new file mode 100644
index 00000000000..1ce76490448
--- /dev/null
+++ b/spec/models/container_expiration_policy_spec.rb
@@ -0,0 +1,41 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe ContainerExpirationPolicy, type: :model do
+ describe 'relationships' do
+ it { is_expected.to belong_to(:project) }
+ end
+
+ describe 'validations' do
+ it { is_expected.to validate_presence_of(:project) }
+
+ describe '#enabled' do
+ it { is_expected.to allow_value(true).for(:enabled) }
+ it { is_expected.to allow_value(false).for(:enabled) }
+ it { is_expected.not_to allow_value(nil).for(:enabled) }
+ end
+
+ describe '#cadence' do
+ it { is_expected.to validate_presence_of(:cadence) }
+
+ it { is_expected.to allow_value('1d').for(:cadence) }
+ it { is_expected.to allow_value('1month').for(:cadence) }
+ it { is_expected.not_to allow_value('123asdf').for(:cadence) }
+ it { is_expected.not_to allow_value(nil).for(:cadence) }
+ end
+
+ describe '#older_than' do
+ it { is_expected.to allow_value('7d').for(:older_than) }
+ it { is_expected.to allow_value('14d').for(:older_than) }
+ it { is_expected.to allow_value(nil).for(:older_than) }
+ it { is_expected.not_to allow_value('123asdf').for(:older_than) }
+ end
+
+ describe '#keep_n' do
+ it { is_expected.to allow_value(10).for(:keep_n) }
+ it { is_expected.to allow_value(nil).for(:keep_n) }
+ it { is_expected.not_to allow_value('foo').for(:keep_n) }
+ end
+ end
+end
diff --git a/spec/models/cycle_analytics/group_level_spec.rb b/spec/models/cycle_analytics/group_level_spec.rb
index 154c1b9c0f8..0d2c14c29dd 100644
--- a/spec/models/cycle_analytics/group_level_spec.rb
+++ b/spec/models/cycle_analytics/group_level_spec.rb
@@ -22,7 +22,9 @@ describe CycleAnalytics::GroupLevel do
describe '#stats' do
before do
- allow_any_instance_of(Gitlab::ReferenceExtractor).to receive(:issues).and_return([issue])
+ allow_next_instance_of(Gitlab::ReferenceExtractor) do |instance|
+ allow(instance).to receive(:issues).and_return([issue])
+ end
create_cycle(user, project, issue, mr, milestone, pipeline)
deploy_master(user, project)
diff --git a/spec/models/cycle_analytics/project_level_spec.rb b/spec/models/cycle_analytics/project_level_spec.rb
index 4de01b1c679..351eb139416 100644
--- a/spec/models/cycle_analytics/project_level_spec.rb
+++ b/spec/models/cycle_analytics/project_level_spec.rb
@@ -15,7 +15,9 @@ describe CycleAnalytics::ProjectLevel do
describe '#all_medians_by_stage' do
before do
- allow_any_instance_of(Gitlab::ReferenceExtractor).to receive(:issues).and_return([issue])
+ allow_next_instance_of(Gitlab::ReferenceExtractor) do |instance|
+ allow(instance).to receive(:issues).and_return([issue])
+ end
create_cycle(user, project, issue, mr, milestone, pipeline)
deploy_master(user, project)
diff --git a/spec/models/deployment_spec.rb b/spec/models/deployment_spec.rb
index 52c19d4814c..33e4cd34aa5 100644
--- a/spec/models/deployment_spec.rb
+++ b/spec/models/deployment_spec.rb
@@ -32,8 +32,9 @@ describe Deployment do
let(:deployment) { create(:deployment, deployable: build) }
it 'delegates to other_scheduled_actions' do
- expect_any_instance_of(Ci::Build)
- .to receive(:other_scheduled_actions)
+ expect_next_instance_of(Ci::Build) do |instance|
+ expect(instance).to receive(:other_scheduled_actions)
+ end
subject
end
@@ -441,4 +442,61 @@ describe Deployment do
expect(deploy2.previous_environment_deployment).to be_nil
end
end
+
+ describe '#playable_build' do
+ subject { deployment.playable_build }
+
+ context 'when there is a deployable build' do
+ let(:deployment) { create(:deployment, deployable: build) }
+
+ context 'when the deployable build is playable' do
+ let(:build) { create(:ci_build, :playable) }
+
+ it 'returns that build' do
+ is_expected.to eq(build)
+ end
+ end
+
+ context 'when the deployable build is not playable' do
+ let(:build) { create(:ci_build) }
+
+ it 'returns nil' do
+ is_expected.to be_nil
+ end
+ end
+ end
+
+ context 'when there is no deployable build' do
+ let(:deployment) { create(:deployment) }
+
+ it 'returns nil' do
+ is_expected.to be_nil
+ end
+ end
+ end
+
+ context '#update_status' do
+ let(:deploy) { create(:deployment, status: :running) }
+
+ it 'changes the status' do
+ deploy.update_status('success')
+
+ expect(deploy).to be_success
+ end
+
+ it 'schedules SuccessWorker and FinishedWorker when finishing a deploy' do
+ expect(Deployments::SuccessWorker).to receive(:perform_async)
+ expect(Deployments::FinishedWorker).to receive(:perform_async)
+
+ deploy.update_status('success')
+ end
+
+ it 'updates finished_at when transitioning to a finished status' do
+ Timecop.freeze do
+ deploy.update_status('success')
+
+ expect(deploy.read_attribute(:finished_at)).to eq(Time.now)
+ end
+ end
+ end
end
diff --git a/spec/models/conversational_development_index/metric_spec.rb b/spec/models/dev_ops_score/metric_spec.rb
index 55ba466e614..89212d5ca26 100644
--- a/spec/models/conversational_development_index/metric_spec.rb
+++ b/spec/models/dev_ops_score/metric_spec.rb
@@ -2,8 +2,8 @@
require 'spec_helper'
-describe ConversationalDevelopmentIndex::Metric do
- let(:conv_dev_index) { create(:conversational_development_index_metric) }
+describe DevOpsScore::Metric do
+ let(:conv_dev_index) { create(:dev_ops_score_metric) }
describe '#percentage_score' do
it 'returns stored percentage score' do
diff --git a/spec/models/diff_note_spec.rb b/spec/models/diff_note_spec.rb
index 8d7dafc523d..601dac21e6a 100644
--- a/spec/models/diff_note_spec.rb
+++ b/spec/models/diff_note_spec.rb
@@ -343,7 +343,9 @@ describe DiffNote do
context 'when line is not suggestible' do
it 'returns false' do
- allow_any_instance_of(Gitlab::Diff::Line).to receive(:suggestible?) { false }
+ allow_next_instance_of(Gitlab::Diff::Line) do |instance|
+ allow(instance).to receive(:suggestible?) { false }
+ end
expect(subject.supports_suggestion?).to be(false)
end
diff --git a/spec/models/diff_viewer/base_spec.rb b/spec/models/diff_viewer/base_spec.rb
index b8bdeb781dc..019597993cc 100644
--- a/spec/models/diff_viewer/base_spec.rb
+++ b/spec/models/diff_viewer/base_spec.rb
@@ -60,7 +60,9 @@ describe DiffViewer::Base do
context 'when the binaryness does not match' do
before do
- allow_any_instance_of(Blob).to receive(:binary_in_repo?).and_return(true)
+ allow_next_instance_of(Blob) do |instance|
+ allow(instance).to receive(:binary_in_repo?).and_return(true)
+ end
end
it 'returns false' do
diff --git a/spec/models/environment_spec.rb b/spec/models/environment_spec.rb
index 47e39e5fbe5..0537220fcd2 100644
--- a/spec/models/environment_spec.rb
+++ b/spec/models/environment_spec.rb
@@ -441,6 +441,16 @@ describe Environment, :use_clean_rails_memory_store_caching do
end
end
+ describe '#reset_auto_stop' do
+ subject { environment.reset_auto_stop }
+
+ let(:environment) { create(:environment, :auto_stopped) }
+
+ it 'nullifies the auto_stop_at' do
+ expect { subject }.to change(environment, :auto_stop_at).from(Time).to(nil)
+ end
+ end
+
describe '#actions_for' do
let(:deployment) { create(:deployment, :success, environment: environment) }
let(:pipeline) { deployment.deployable.pipeline }
@@ -484,7 +494,9 @@ describe Environment, :use_clean_rails_memory_store_caching do
subject { environment.last_deployment }
before do
- allow_any_instance_of(Deployment).to receive(:create_ref)
+ allow_next_instance_of(Deployment) do |instance|
+ allow(instance).to receive(:create_ref)
+ end
end
context 'when there is an old deployment record' do
@@ -822,6 +834,14 @@ describe Environment, :use_clean_rails_memory_store_caching do
context 'and no deployments' do
it { is_expected.to be_truthy }
end
+
+ context 'and the prometheus adapter is not configured' do
+ before do
+ allow(environment.prometheus_adapter).to receive(:configured?).and_return(false)
+ end
+
+ it { is_expected.to be_falsy }
+ end
end
context 'without a monitoring service' do
@@ -856,6 +876,14 @@ describe Environment, :use_clean_rails_memory_store_caching do
is_expected.to eq(:fake_metrics)
end
+
+ context 'and the prometheus client is not present' do
+ before do
+ allow(environment.prometheus_adapter).to receive(:promethus_client).and_return(nil)
+ end
+
+ it { is_expected.to be_nil }
+ end
end
context 'when the environment does not have metrics' do
@@ -1031,7 +1059,9 @@ describe Environment, :use_clean_rails_memory_store_caching do
describe '#prometheus_adapter' do
it 'calls prometheus adapter service' do
- expect_any_instance_of(Prometheus::AdapterService).to receive(:prometheus_adapter)
+ expect_next_instance_of(Prometheus::AdapterService) do |instance|
+ expect(instance).to receive(:prometheus_adapter)
+ end
subject.prometheus_adapter
end
@@ -1068,6 +1098,52 @@ describe Environment, :use_clean_rails_memory_store_caching do
end
end
+ describe '#auto_stop_in' do
+ subject { environment.auto_stop_in }
+
+ context 'when environment will be expired' do
+ let(:environment) { build(:environment, :will_auto_stop) }
+
+ it 'returns when it will expire' do
+ Timecop.freeze { is_expected.to eq(1.day.to_i) }
+ end
+ end
+
+ context 'when environment is not expired' do
+ let(:environment) { build(:environment) }
+
+ it { is_expected.to be_nil }
+ end
+ end
+
+ describe '#auto_stop_in=' do
+ subject { environment.auto_stop_in = value }
+
+ let(:environment) { build(:environment) }
+
+ where(:value, :expected_result) do
+ '2 days' | 2.days.to_i
+ '1 week' | 1.week.to_i
+ '2h20min' | 2.hours.to_i + 20.minutes.to_i
+ 'abcdef' | ChronicDuration::DurationParseError
+ '' | nil
+ nil | nil
+ end
+ with_them do
+ it 'sets correct auto_stop_in' do
+ Timecop.freeze do
+ if expected_result.is_a?(Integer) || expected_result.nil?
+ subject
+
+ expect(environment.auto_stop_in).to eq(expected_result)
+ else
+ expect { subject }.to raise_error(expected_result)
+ end
+ end
+ end
+ end
+ end
+
describe '.find_or_create_by_name' do
it 'finds an existing environment if it exists' do
env = create(:environment)
diff --git a/spec/models/environment_status_spec.rb b/spec/models/environment_status_spec.rb
index eea81d7c128..0f2c6928820 100644
--- a/spec/models/environment_status_spec.rb
+++ b/spec/models/environment_status_spec.rb
@@ -92,6 +92,84 @@ describe EnvironmentStatus do
end
end
+ describe '.for_deployed_merge_request' do
+ context 'when a merge request has no explicitly linked deployments' do
+ it 'returns the statuses based on the CI pipelines' do
+ mr = create(:merge_request, :merged)
+
+ expect(described_class)
+ .to receive(:after_merge_request)
+ .with(mr, mr.author)
+ .and_return([])
+
+ statuses = described_class.for_deployed_merge_request(mr, mr.author)
+
+ expect(statuses).to eq([])
+ end
+ end
+
+ context 'when a merge request has explicitly linked deployments' do
+ let(:merge_request) { create(:merge_request, :merged) }
+
+ let(:environment) do
+ create(:environment, project: merge_request.target_project)
+ end
+
+ it 'returns the statuses based on the linked deployments' do
+ deploy = create(
+ :deployment,
+ :success,
+ project: merge_request.target_project,
+ environment: environment,
+ deployable: nil
+ )
+
+ deploy.link_merge_requests(merge_request.target_project.merge_requests)
+
+ statuses = described_class
+ .for_deployed_merge_request(merge_request, merge_request.author)
+
+ expect(statuses.length).to eq(1)
+ expect(statuses[0].environment).to eq(environment)
+ expect(statuses[0].merge_request).to eq(merge_request)
+ end
+
+ it 'excludes environments the user can not see' do
+ deploy = create(
+ :deployment,
+ :success,
+ project: merge_request.target_project,
+ environment: environment,
+ deployable: nil
+ )
+
+ deploy.link_merge_requests(merge_request.target_project.merge_requests)
+
+ statuses = described_class
+ .for_deployed_merge_request(merge_request, create(:user))
+
+ expect(statuses).to be_empty
+ end
+
+ it 'excludes deployments that have the status "created"' do
+ deploy = create(
+ :deployment,
+ :created,
+ project: merge_request.target_project,
+ environment: environment,
+ deployable: nil
+ )
+
+ deploy.link_merge_requests(merge_request.target_project.merge_requests)
+
+ statuses = described_class
+ .for_deployed_merge_request(merge_request, merge_request.author)
+
+ expect(statuses).to be_empty
+ end
+ end
+ end
+
describe '.build_environments_status' do
subject { described_class.send(:build_environments_status, merge_request, user, pipeline) }
diff --git a/spec/models/error_tracking/project_error_tracking_setting_spec.rb b/spec/models/error_tracking/project_error_tracking_setting_spec.rb
index dbd3f8ffab3..ef426661066 100644
--- a/spec/models/error_tracking/project_error_tracking_setting_spec.rb
+++ b/spec/models/error_tracking/project_error_tracking_setting_spec.rb
@@ -5,7 +5,7 @@ require 'spec_helper'
describe ErrorTracking::ProjectErrorTrackingSetting do
include ReactiveCachingHelpers
- set(:project) { create(:project) }
+ let_it_be(:project) { create(:project) }
subject { create(:project_error_tracking_setting, project: project) }
@@ -14,23 +14,24 @@ describe ErrorTracking::ProjectErrorTrackingSetting do
end
describe 'Validations' do
- context 'when api_url is over 255 chars' do
- before do
- subject.api_url = 'https://' + 'a' * 250
- end
-
- it 'fails validation' do
- expect(subject).not_to be_valid
- expect(subject.errors.messages[:api_url]).to include('is too long (maximum is 255 characters)')
- end
+ it { is_expected.to validate_length_of(:api_url).is_at_most(255) }
+ it { is_expected.to allow_value("http://gitlab.com/api/0/projects/project1/something").for(:api_url) }
+ it { is_expected.not_to allow_values("http://gitlab.com/api/0/projects/project1/something€").for(:api_url) }
+
+ it 'rejects invalid api_urls' do
+ is_expected.not_to allow_values(
+ "https://replaceme.com/'><script>alert(document.cookie)</script>", # unsafe
+ "http://gitlab.com/project1/something", # missing api/0/projects
+ "http://gitlab.com/api/0/projects/org/proj/something", # extra segments
+ "http://gitlab.com/api/0/projects/org" # too few segments
+ ).for(:api_url).with_message('is invalid')
end
- context 'With unsafe url' do
- it 'fails validation' do
- subject.api_url = "https://replaceme.com/'><script>alert(document.cookie)</script>"
+ it 'fails validation without org and project slugs' do
+ subject.api_url = 'http://gitlab.com/api/0/projects/'
- expect(subject).not_to be_valid
- end
+ expect(subject).not_to be_valid
+ expect(subject.errors.messages[:project]).to include('is a required field')
end
context 'presence validations' do
@@ -60,52 +61,6 @@ describe ErrorTracking::ProjectErrorTrackingSetting do
it { expect(subject.valid?).to eq(valid?) }
end
end
-
- context 'URL path' do
- it 'fails validation without api/0/projects' do
- subject.api_url = 'http://gitlab.com/project1/something'
-
- expect(subject).not_to be_valid
- expect(subject.errors.messages[:api_url]).to include('is invalid')
- end
-
- it 'fails validation without org and project slugs' do
- subject.api_url = 'http://gitlab.com/api/0/projects/'
-
- expect(subject).not_to be_valid
- expect(subject.errors.messages[:project]).to include('is a required field')
- end
-
- it 'fails validation when api_url has extra parts' do
- subject.api_url = 'http://gitlab.com/api/0/projects/org/proj/something'
-
- expect(subject).not_to be_valid
- expect(subject.errors.messages[:api_url]).to include("is invalid")
- end
-
- it 'fails validation when api_url has less parts' do
- subject.api_url = 'http://gitlab.com/api/0/projects/org'
-
- expect(subject).not_to be_valid
- expect(subject.errors.messages[:api_url]).to include("is invalid")
- end
-
- it 'passes validation with correct path' do
- subject.api_url = 'http://gitlab.com/api/0/projects/project1/something'
-
- expect(subject).to be_valid
- end
- end
-
- context 'non ascii chars in api_url' do
- before do
- subject.api_url = 'http://gitlab.com/api/0/projects/project1/something€'
- end
-
- it 'fails validation' do
- expect(subject).not_to be_valid
- end
- end
end
describe '#sentry_external_url' do
@@ -153,9 +108,9 @@ describe ErrorTracking::ProjectErrorTrackingSetting do
it 'returns cached issues' do
expect(sentry_client).to receive(:list_issues).with(opts)
- .and_return(issues)
+ .and_return(issues: issues, pagination: {})
- expect(result).to eq(issues: issues)
+ expect(result).to eq(issues: issues, pagination: {})
end
end
@@ -238,7 +193,7 @@ describe ErrorTracking::ProjectErrorTrackingSetting do
it 'calls sentry client' do
expect(subject).to receive(:sentry_client).and_return(sentry_client)
- expect(sentry_client).to receive(:list_projects).and_return(projects)
+ expect(sentry_client).to receive(:projects).and_return(projects)
result = subject.list_sentry_projects
diff --git a/spec/models/event_spec.rb b/spec/models/event_spec.rb
index ff2e1aa047e..990141cf511 100644
--- a/spec/models/event_spec.rb
+++ b/spec/models/event_spec.rb
@@ -20,7 +20,9 @@ describe Event do
describe 'after_create :reset_project_activity' do
it 'calls the reset_project_activity method' do
- expect_any_instance_of(described_class).to receive(:reset_project_activity)
+ expect_next_instance_of(described_class) do |instance|
+ expect(instance).to receive(:reset_project_activity)
+ end
create_push_event(project, project.owner)
end
diff --git a/spec/models/gpg_signature_spec.rb b/spec/models/gpg_signature_spec.rb
index a780b8bfdf5..997d9bbec72 100644
--- a/spec/models/gpg_signature_spec.rb
+++ b/spec/models/gpg_signature_spec.rb
@@ -75,7 +75,9 @@ RSpec.describe GpgSignature do
describe '#commit' do
it 'fetches the commit through the project' do
- expect_any_instance_of(Project).to receive(:commit).with(commit_sha).and_return(commit)
+ expect_next_instance_of(Project) do |instance|
+ expect(instance).to receive(:commit).with(commit_sha).and_return(commit)
+ end
gpg_signature.commit
end
diff --git a/spec/models/hooks/web_hook_log_spec.rb b/spec/models/hooks/web_hook_log_spec.rb
index 85934b81086..22aad2fab0a 100644
--- a/spec/models/hooks/web_hook_log_spec.rb
+++ b/spec/models/hooks/web_hook_log_spec.rb
@@ -29,6 +29,25 @@ describe WebHookLog do
end
end
+ describe '#save' do
+ let(:web_hook_log) { build(:web_hook_log, url: url) }
+ let(:url) { 'http://example.com' }
+
+ subject { web_hook_log.save! }
+
+ it { is_expected.to eq(true) }
+
+ context 'with basic auth credentials' do
+ let(:url) { 'http://test:123@example.com'}
+
+ it 'obfuscates the basic auth credentials' do
+ subject
+
+ expect(web_hook_log.url).to eq('http://*****:*****@example.com')
+ end
+ end
+ end
+
describe '#success?' do
let(:web_hook_log) { build(:web_hook_log, response_status: status) }
diff --git a/spec/models/issue/metrics_spec.rb b/spec/models/issue/metrics_spec.rb
index 7aa0d97b194..0d0628277a6 100644
--- a/spec/models/issue/metrics_spec.rb
+++ b/spec/models/issue/metrics_spec.rb
@@ -7,6 +7,33 @@ describe Issue::Metrics do
subject { create(:issue, project: project) }
+ describe '.for_issues' do
+ subject(:scope) { described_class.for_issues([issue1, issue2]) }
+
+ let(:issue1) { create(:issue) }
+ let(:issue2) { create(:issue) }
+
+ it 'returns metrics associated with given issues' do
+ create(:issue)
+
+ expect(scope).to match_array([issue1.metrics, issue2.metrics])
+ end
+ end
+
+ describe '.with_first_mention_not_earlier_than' do
+ subject(:scope) { described_class.with_first_mention_not_earlier_than(timestamp) }
+
+ let(:timestamp) { DateTime.now }
+
+ it 'returns metrics without mentioning in commit or with mentioning after given timestamp' do
+ issue1 = create(:issue)
+ issue2 = create(:issue).tap { |i| i.metrics.update!(first_mentioned_in_commit_at: timestamp + 1.day) }
+ create(:issue).tap { |i| i.metrics.update!(first_mentioned_in_commit_at: timestamp - 1.day) }
+
+ expect(scope).to match_array([issue1.metrics, issue2.metrics])
+ end
+ end
+
describe "when recording the default set of issue metrics on issue save" do
context "milestones" do
it "records the first time an issue is associated with a milestone" do
diff --git a/spec/models/issue_spec.rb b/spec/models/issue_spec.rb
index 0f78cb4d9b1..d1ed06dd04d 100644
--- a/spec/models/issue_spec.rb
+++ b/spec/models/issue_spec.rb
@@ -12,6 +12,8 @@ describe Issue do
it { is_expected.to belong_to(:duplicated_to).class_name('Issue') }
it { is_expected.to belong_to(:closed_by).class_name('User') }
it { is_expected.to have_many(:assignees) }
+ it { is_expected.to have_many(:user_mentions).class_name("IssueUserMention") }
+ it { is_expected.to have_one(:sentry_issue) }
end
describe 'modules' do
diff --git a/spec/models/key_spec.rb b/spec/models/key_spec.rb
index a0b6eff88d5..2dd9583087f 100644
--- a/spec/models/key_spec.rb
+++ b/spec/models/key_spec.rb
@@ -50,6 +50,32 @@ describe Key, :mailer do
end
end
+ describe 'scopes' do
+ describe '.for_user' do
+ let(:user_1) { create(:user) }
+ let(:key_of_user_1) { create(:personal_key, user: user_1) }
+
+ before do
+ create_list(:personal_key, 2, user: create(:user))
+ end
+
+ it 'returns keys of the specified user only' do
+ expect(described_class.for_user(user_1)).to contain_exactly(key_of_user_1)
+ end
+ end
+
+ describe '.order_last_used_at_desc' do
+ it 'sorts by last_used_at descending, with null values at last' do
+ key_1 = create(:personal_key, last_used_at: 7.days.ago)
+ key_2 = create(:personal_key, last_used_at: nil)
+ key_3 = create(:personal_key, last_used_at: 2.days.ago)
+
+ expect(described_class.order_last_used_at_desc)
+ .to eq([key_3, key_1, key_2])
+ end
+ end
+ end
+
context "validation of uniqueness (based on fingerprint uniqueness)" do
let(:user) { create(:user) }
@@ -92,6 +118,7 @@ describe Key, :mailer do
with_them do
let!(:key) { create(factory) }
let!(:original_fingerprint) { key.fingerprint }
+ let!(:original_fingerprint_sha256) { key.fingerprint_sha256 }
it 'accepts a key with blank space characters after stripping them' do
modified_key = key.key.insert(100, chars.first).insert(40, chars.last)
@@ -104,6 +131,8 @@ describe Key, :mailer do
expect(content).not_to match(/\s/)
expect(original_fingerprint).to eq(key.fingerprint)
+ expect(original_fingerprint).to eq(key.fingerprint_md5)
+ expect(original_fingerprint_sha256).to eq(key.fingerprint_sha256)
end
end
end
diff --git a/spec/models/merge_request/pipelines_spec.rb b/spec/models/merge_request/pipelines_spec.rb
new file mode 100644
index 00000000000..0afbcc60ed6
--- /dev/null
+++ b/spec/models/merge_request/pipelines_spec.rb
@@ -0,0 +1,160 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe MergeRequest::Pipelines do
+ describe '#all' do
+ let(:merge_request) { create(:merge_request) }
+ let(:project) { merge_request.source_project }
+
+ subject { described_class.new(merge_request) }
+
+ shared_examples 'returning pipelines with proper ordering' do
+ let!(:all_pipelines) do
+ merge_request.all_commit_shas.map do |sha|
+ create(:ci_empty_pipeline,
+ project: project, sha: sha, ref: merge_request.source_branch)
+ end
+ end
+
+ it 'returns all pipelines' do
+ expect(subject.all).not_to be_empty
+ expect(subject.all).to eq(all_pipelines.reverse)
+ end
+ end
+
+ context 'with single merge_request_diffs' do
+ it_behaves_like 'returning pipelines with proper ordering'
+ end
+
+ context 'with multiple irrelevant merge_request_diffs' do
+ before do
+ merge_request.update(target_branch: 'v1.0.0')
+ end
+
+ it_behaves_like 'returning pipelines with proper ordering'
+ end
+
+ context 'with unsaved merge request' do
+ let(:merge_request) { build(:merge_request) }
+
+ let!(:pipeline) do
+ create(:ci_empty_pipeline, project: project,
+ sha: merge_request.diff_head_sha, ref: merge_request.source_branch)
+ end
+
+ it 'returns pipelines from diff_head_sha' do
+ expect(subject.all).to contain_exactly(pipeline)
+ end
+ end
+
+ context 'when pipelines exist for the branch and merge request' do
+ let(:source_ref) { 'feature' }
+ let(:target_ref) { 'master' }
+
+ let!(:branch_pipeline) do
+ create(:ci_pipeline, source: :push, project: project,
+ ref: source_ref, sha: shas.second)
+ end
+
+ let!(:tag_pipeline) do
+ create(:ci_pipeline, project: project, ref: source_ref, tag: true)
+ end
+
+ let!(:detached_merge_request_pipeline) do
+ create(:ci_pipeline, source: :merge_request_event, project: project,
+ ref: source_ref, sha: shas.second, merge_request: merge_request)
+ end
+
+ let(:merge_request) do
+ create(:merge_request, source_project: project, source_branch: source_ref,
+ target_project: project, target_branch: target_ref)
+ end
+
+ let(:project) { create(:project, :repository) }
+ let(:shas) { project.repository.commits(source_ref, limit: 2).map(&:id) }
+
+ before do
+ create(:merge_request_diff_commit,
+ merge_request_diff: merge_request.merge_request_diff,
+ sha: shas.second, relative_order: 1)
+ end
+
+ it 'returns merge request pipeline first' do
+ expect(subject.all).to eq([detached_merge_request_pipeline, branch_pipeline])
+ end
+
+ context 'when there are a branch pipeline and a merge request pipeline' do
+ let!(:branch_pipeline_2) do
+ create(:ci_pipeline, source: :push, project: project,
+ ref: source_ref, sha: shas.first)
+ end
+
+ let!(:detached_merge_request_pipeline_2) do
+ create(:ci_pipeline, source: :merge_request_event, project: project,
+ ref: source_ref, sha: shas.first, merge_request: merge_request)
+ end
+
+ it 'returns merge request pipelines first' do
+ expect(subject.all)
+ .to eq([detached_merge_request_pipeline_2,
+ detached_merge_request_pipeline,
+ branch_pipeline_2,
+ branch_pipeline])
+ end
+ end
+
+ context 'when there are multiple merge request pipelines from the same branch' do
+ let!(:branch_pipeline_2) do
+ create(:ci_pipeline, source: :push, project: project,
+ ref: source_ref, sha: shas.first)
+ end
+
+ let!(:detached_merge_request_pipeline_2) do
+ create(:ci_pipeline, source: :merge_request_event, project: project,
+ ref: source_ref, sha: shas.first, merge_request: merge_request_2)
+ end
+
+ let(:merge_request_2) do
+ create(:merge_request, source_project: project, source_branch: source_ref,
+ target_project: project, target_branch: 'stable')
+ end
+
+ before do
+ shas.each.with_index do |sha, index|
+ create(:merge_request_diff_commit,
+ merge_request_diff: merge_request_2.merge_request_diff,
+ sha: sha, relative_order: index)
+ end
+ end
+
+ it 'returns only related merge request pipelines' do
+ expect(subject.all)
+ .to eq([detached_merge_request_pipeline,
+ branch_pipeline_2,
+ branch_pipeline])
+
+ expect(described_class.new(merge_request_2).all)
+ .to eq([detached_merge_request_pipeline_2,
+ branch_pipeline_2,
+ branch_pipeline])
+ end
+ end
+
+ context 'when detached merge request pipeline is run on head ref of the merge request' do
+ let!(:detached_merge_request_pipeline) do
+ create(:ci_pipeline, source: :merge_request_event, project: project,
+ ref: merge_request.ref_path, sha: shas.second, merge_request: merge_request)
+ end
+
+ it 'sets the head ref of the merge request to the pipeline ref' do
+ expect(detached_merge_request_pipeline.ref).to match(%r{refs/merge-requests/\d+/head})
+ end
+
+ it 'includes the detached merge request pipeline even though the ref is custom path' do
+ expect(merge_request.all_pipelines).to include(detached_merge_request_pipeline)
+ end
+ end
+ end
+ end
+end
diff --git a/spec/models/merge_request_diff_spec.rb b/spec/models/merge_request_diff_spec.rb
index 0f7f68e0b38..78b9e8bc217 100644
--- a/spec/models/merge_request_diff_spec.rb
+++ b/spec/models/merge_request_diff_spec.rb
@@ -98,6 +98,12 @@ describe MergeRequestDiff do
end
it { is_expected.to contain_exactly(outdated.id, latest.id, closed.id, merged.id, closed_recently.id, merged_recently.id) }
+
+ it 'ignores diffs with 0 files' do
+ MergeRequestDiffFile.where(merge_request_diff_id: [closed_recently.id, merged_recently.id]).delete_all
+
+ is_expected.to contain_exactly(outdated.id, latest.id, closed.id, merged.id)
+ end
end
context 'external diffs are enabled for outdated diffs' do
@@ -205,6 +211,65 @@ describe MergeRequestDiff do
end
end
+ describe '#diffs_in_batch' do
+ let(:diff_options) { {} }
+
+ shared_examples_for 'fetching full diffs' do
+ it 'returns diffs from repository comparison' do
+ expect_next_instance_of(Compare) do |comparison|
+ expect(comparison).to receive(:diffs_in_batch)
+ .with(1, 10, diff_options: diff_options)
+ .and_call_original
+ end
+
+ diff_with_commits.diffs_in_batch(1, 10, diff_options: diff_options)
+ end
+
+ it 'returns a Gitlab::Diff::FileCollection::Compare with full diffs' do
+ diffs = diff_with_commits.diffs_in_batch(1, 10, diff_options: diff_options)
+
+ expect(diffs).to be_a(Gitlab::Diff::FileCollection::Compare)
+ expect(diffs.diff_files.size).to be > 10
+ end
+
+ it 'returns empty pagination data' do
+ diffs = diff_with_commits.diffs_in_batch(1, 10, diff_options: diff_options)
+
+ expect(diffs.pagination_data).to eq(current_page: nil,
+ next_page: nil,
+ total_pages: nil)
+ end
+ end
+
+ context 'when no persisted files available' do
+ before do
+ diff_with_commits.clean!
+ end
+
+ it_behaves_like 'fetching full diffs'
+ end
+
+ context 'when diff_options include ignore_whitespace_change' do
+ it_behaves_like 'fetching full diffs' do
+ let(:diff_options) do
+ { ignore_whitespace_change: true }
+ end
+ end
+ end
+
+ context 'when persisted files available' do
+ it 'returns paginated diffs' do
+ diffs = diff_with_commits.diffs_in_batch(1, 10, diff_options: {})
+
+ expect(diffs).to be_a(Gitlab::Diff::FileCollection::MergeRequestDiffBatch)
+ expect(diffs.diff_files.size).to eq(10)
+ expect(diffs.pagination_data).to eq(current_page: 1,
+ next_page: 2,
+ total_pages: 2)
+ end
+ end
+ end
+
describe '#raw_diffs' do
context 'when the :ignore_whitespace_change option is set' do
it 'creates a new compare object instead of using preprocessed data' do
@@ -420,24 +485,38 @@ describe MergeRequestDiff do
end
end
- describe '#commits_by_shas' do
- let(:commit_shas) { diff_with_commits.commit_shas }
-
- it 'returns empty if no SHAs were provided' do
- expect(diff_with_commits.commits_by_shas([])).to be_empty
+ describe '#includes_any_commits?' do
+ let(:non_existent_shas) do
+ Array.new(30) { Digest::SHA1.hexdigest(SecureRandom.hex) }
end
- it 'returns one SHA' do
- commits = diff_with_commits.commits_by_shas([commit_shas.first, Gitlab::Git::BLANK_SHA])
+ subject { diff_with_commits }
+
+ context 'processes the passed shas in batches' do
+ context 'number of existing commits is greater than batch size' do
+ it 'performs a separate request for each batch' do
+ stub_const('MergeRequestDiff::BATCH_SIZE', 5)
+
+ commit_shas = subject.commit_shas
+
+ query_count = ActiveRecord::QueryRecorder.new do
+ subject.includes_any_commits?(non_existent_shas + commit_shas)
+ end.count
+
+ expect(query_count).to eq(7)
+ end
+ end
+ end
- expect(commits.count).to eq(1)
+ it 'returns false if passed commits do not exist' do
+ expect(subject.includes_any_commits?([])).to eq(false)
+ expect(subject.includes_any_commits?([Gitlab::Git::BLANK_SHA])).to eq(false)
end
- it 'returns all matching SHAs' do
- commits = diff_with_commits.commits_by_shas(commit_shas)
+ it 'returns true if passed commits exists' do
+ args_with_existing_commits = non_existent_shas << subject.head_commit_sha
- expect(commits.count).to eq(commit_shas.count)
- expect(commits.map(&:sha)).to match_array(commit_shas)
+ expect(subject.includes_any_commits?(args_with_existing_commits)).to eq(true)
end
end
diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb
index b5aa05fd8b4..bf6fa20dc17 100644
--- a/spec/models/merge_request_spec.rb
+++ b/spec/models/merge_request_spec.rb
@@ -17,6 +17,7 @@ describe MergeRequest do
it { is_expected.to belong_to(:merge_user).class_name("User") }
it { is_expected.to have_many(:assignees).through(:merge_request_assignees) }
it { is_expected.to have_many(:merge_request_diffs) }
+ it { is_expected.to have_many(:user_mentions).class_name("MergeRequestUserMention") }
context 'for forks' do
let!(:project) { create(:project) }
@@ -33,6 +34,21 @@ describe MergeRequest do
end
end
+ describe '.from_and_to_forks' do
+ it 'returns only MRs from and to forks (with no internal MRs)' do
+ project = create(:project)
+ fork = fork_project(project)
+ fork_2 = fork_project(project)
+ mr_from_fork = create(:merge_request, source_project: fork, target_project: project)
+ mr_to_fork = create(:merge_request, source_project: project, target_project: fork)
+
+ create(:merge_request, source_project: fork, target_project: fork_2)
+ create(:merge_request, source_project: project, target_project: project)
+
+ expect(described_class.from_and_to_forks(project)).to contain_exactly(mr_from_fork, mr_to_fork)
+ end
+ end
+
describe 'locking' do
using RSpec::Parameterized::TableSyntax
@@ -115,8 +131,24 @@ describe MergeRequest do
let(:multiline_commits) { subject.commits.select(&is_multiline) }
let(:singleline_commits) { subject.commits.reject(&is_multiline) }
- it 'returns the oldest multiline commit message' do
- expect(subject.default_squash_commit_message).to eq(multiline_commits.last.message)
+ context 'when the total number of commits is safe' do
+ it 'returns the oldest multiline commit message' do
+ expect(subject.default_squash_commit_message).to eq(multiline_commits.last.message)
+ end
+ end
+
+ context 'when the total number of commits is big' do
+ let(:safe_number) { 20 }
+
+ before do
+ stub_const('MergeRequestDiff::COMMITS_SAFE_SIZE', safe_number)
+ end
+
+ it 'returns the oldest multiline commit message from safe number of commits' do
+ expect(subject.default_squash_commit_message).to eq(
+ "remove emtpy file.(beacase git ignore empty file)\nadd whitespace test file.\n"
+ )
+ end
end
it 'returns the merge request title if there are no multiline commits' do
@@ -1425,183 +1457,6 @@ describe MergeRequest do
end
end
- describe '#all_pipelines' do
- shared_examples 'returning pipelines with proper ordering' do
- let!(:all_pipelines) do
- subject.all_commit_shas.map do |sha|
- create(:ci_empty_pipeline,
- project: subject.source_project,
- sha: sha,
- ref: subject.source_branch)
- end
- end
-
- it 'returns all pipelines' do
- expect(subject.all_pipelines).not_to be_empty
- expect(subject.all_pipelines).to eq(all_pipelines.reverse)
- end
- end
-
- context 'with single merge_request_diffs' do
- it_behaves_like 'returning pipelines with proper ordering'
- end
-
- context 'with multiple irrelevant merge_request_diffs' do
- before do
- subject.update(target_branch: 'v1.0.0')
- end
-
- it_behaves_like 'returning pipelines with proper ordering'
- end
-
- context 'with unsaved merge request' do
- subject { build(:merge_request) }
-
- let!(:pipeline) do
- create(:ci_empty_pipeline,
- project: subject.project,
- sha: subject.diff_head_sha,
- ref: subject.source_branch)
- end
-
- it 'returns pipelines from diff_head_sha' do
- expect(subject.all_pipelines).to contain_exactly(pipeline)
- end
- end
-
- context 'when pipelines exist for the branch and merge request' do
- let(:source_ref) { 'feature' }
- let(:target_ref) { 'master' }
-
- let!(:branch_pipeline) do
- create(:ci_pipeline,
- source: :push,
- project: project,
- ref: source_ref,
- sha: shas.second)
- end
-
- let!(:detached_merge_request_pipeline) do
- create(:ci_pipeline,
- source: :merge_request_event,
- project: project,
- ref: source_ref,
- sha: shas.second,
- merge_request: merge_request)
- end
-
- let(:merge_request) do
- create(:merge_request,
- source_project: project,
- source_branch: source_ref,
- target_project: project,
- target_branch: target_ref)
- end
-
- let(:project) { create(:project, :repository) }
- let(:shas) { project.repository.commits(source_ref, limit: 2).map(&:id) }
-
- before do
- allow(merge_request).to receive(:all_commit_shas) { shas }
- end
-
- it 'returns merge request pipeline first' do
- expect(merge_request.all_pipelines)
- .to eq([detached_merge_request_pipeline,
- branch_pipeline])
- end
-
- context 'when there are a branch pipeline and a merge request pipeline' do
- let!(:branch_pipeline_2) do
- create(:ci_pipeline,
- source: :push,
- project: project,
- ref: source_ref,
- sha: shas.first)
- end
-
- let!(:detached_merge_request_pipeline_2) do
- create(:ci_pipeline,
- source: :merge_request_event,
- project: project,
- ref: source_ref,
- sha: shas.first,
- merge_request: merge_request)
- end
-
- it 'returns merge request pipelines first' do
- expect(merge_request.all_pipelines)
- .to eq([detached_merge_request_pipeline_2,
- detached_merge_request_pipeline,
- branch_pipeline_2,
- branch_pipeline])
- end
- end
-
- context 'when there are multiple merge request pipelines from the same branch' do
- let!(:branch_pipeline_2) do
- create(:ci_pipeline,
- source: :push,
- project: project,
- ref: source_ref,
- sha: shas.first)
- end
-
- let!(:detached_merge_request_pipeline_2) do
- create(:ci_pipeline,
- source: :merge_request_event,
- project: project,
- ref: source_ref,
- sha: shas.first,
- merge_request: merge_request_2)
- end
-
- let(:merge_request_2) do
- create(:merge_request,
- source_project: project,
- source_branch: source_ref,
- target_project: project,
- target_branch: 'stable')
- end
-
- before do
- allow(merge_request_2).to receive(:all_commit_shas) { shas }
- end
-
- it 'returns only related merge request pipelines' do
- expect(merge_request.all_pipelines)
- .to eq([detached_merge_request_pipeline,
- branch_pipeline_2,
- branch_pipeline])
-
- expect(merge_request_2.all_pipelines)
- .to eq([detached_merge_request_pipeline_2,
- branch_pipeline_2,
- branch_pipeline])
- end
- end
-
- context 'when detached merge request pipeline is run on head ref of the merge request' do
- let!(:detached_merge_request_pipeline) do
- create(:ci_pipeline,
- source: :merge_request_event,
- project: project,
- ref: merge_request.ref_path,
- sha: shas.second,
- merge_request: merge_request)
- end
-
- it 'sets the head ref of the merge request to the pipeline ref' do
- expect(detached_merge_request_pipeline.ref).to match(%r{refs/merge-requests/\d+/head})
- end
-
- it 'includes the detached merge request pipeline even though the ref is custom path' do
- expect(merge_request.all_pipelines).to include(detached_merge_request_pipeline)
- end
- end
- end
- end
-
describe '#update_head_pipeline' do
subject { merge_request.update_head_pipeline }
@@ -2326,6 +2181,26 @@ describe MergeRequest do
end
end
+ describe "#head_pipeline_active? " do
+ it do
+ is_expected
+ .to delegate_method(:active?)
+ .to(:head_pipeline)
+ .with_prefix
+ .with_arguments(allow_nil: true)
+ end
+ end
+
+ describe "#actual_head_pipeline_success? " do
+ it do
+ is_expected
+ .to delegate_method(:success?)
+ .to(:actual_head_pipeline)
+ .with_prefix
+ .with_arguments(allow_nil: true)
+ end
+ end
+
describe '#mergeable_ci_state?' do
let(:project) { create(:project, only_allow_merge_if_pipeline_succeeds: true) }
let(:pipeline) { create(:ci_empty_pipeline) }
@@ -2946,6 +2821,63 @@ describe MergeRequest do
end
end
+ describe '#pipeline_coverage_delta' do
+ let!(:project) { create(:project, :repository) }
+ let!(:merge_request) { create(:merge_request, source_project: project) }
+
+ let!(:source_pipeline) do
+ create(:ci_pipeline,
+ project: project,
+ ref: merge_request.source_branch,
+ sha: merge_request.diff_head_sha
+ )
+ end
+
+ let!(:target_pipeline) do
+ create(:ci_pipeline,
+ project: project,
+ ref: merge_request.target_branch,
+ sha: merge_request.diff_base_sha
+ )
+ end
+
+ def create_build(pipeline, coverage, name)
+ create(:ci_build, :success, pipeline: pipeline, coverage: coverage, name: name)
+ merge_request.update_head_pipeline
+ end
+
+ context 'when both source and target branches have coverage information' do
+ it 'returns the appropriate coverage delta' do
+ create_build(source_pipeline, 60.2, 'test:1')
+ create_build(target_pipeline, 50, 'test:2')
+
+ expect(merge_request.pipeline_coverage_delta).to eq('10.20')
+ end
+ end
+
+ context 'when target branch does not have coverage information' do
+ it 'returns nil' do
+ create_build(source_pipeline, 50, 'test:1')
+
+ expect(merge_request.pipeline_coverage_delta).to be_nil
+ end
+ end
+
+ context 'when source branch does not have coverage information' do
+ it 'returns nil for coverage_delta' do
+ create_build(target_pipeline, 50, 'test:1')
+
+ expect(merge_request.pipeline_coverage_delta).to be_nil
+ end
+ end
+
+ context 'neither source nor target branch has coverage information' do
+ it 'returns nil for coverage_delta' do
+ expect(merge_request.pipeline_coverage_delta).to be_nil
+ end
+ end
+ end
+
describe '#base_pipeline' do
let(:pipeline_arguments) do
{
@@ -3275,36 +3207,6 @@ describe MergeRequest do
end
end
- describe '#includes_any_commits?' do
- it 'returns false' do
- expect(subject.includes_any_commits?([])).to be_falsey
- end
-
- it 'returns false' do
- expect(subject.includes_any_commits?([Gitlab::Git::BLANK_SHA])).to be_falsey
- end
-
- it 'returns true' do
- expect(subject.includes_any_commits?([subject.merge_request_diff.head_commit_sha])).to be_truthy
- end
-
- it 'returns true even when there is a non-existent comit' do
- expect(subject.includes_any_commits?([Gitlab::Git::BLANK_SHA, subject.merge_request_diff.head_commit_sha])).to be_truthy
- end
-
- context 'unpersisted merge request' do
- let(:new_mr) { build(:merge_request) }
-
- it 'returns false' do
- expect(new_mr.includes_any_commits?([Gitlab::Git::BLANK_SHA])).to be_falsey
- end
-
- it 'returns true' do
- expect(new_mr.includes_any_commits?([subject.merge_request_diff.head_commit_sha])).to be_truthy
- end
- end
- end
-
describe '#can_allow_collaboration?' do
let(:target_project) { create(:project, :public) }
let(:source_project) { fork_project(target_project) }
@@ -3547,4 +3449,56 @@ describe MergeRequest do
])
end
end
+
+ describe '#recent_visible_deployments' do
+ let(:merge_request) { create(:merge_request) }
+
+ let(:environment) do
+ create(:environment, project: merge_request.target_project)
+ end
+
+ it 'returns visible deployments' do
+ created = create(
+ :deployment,
+ :created,
+ project: merge_request.target_project,
+ environment: environment
+ )
+
+ success = create(
+ :deployment,
+ :success,
+ project: merge_request.target_project,
+ environment: environment
+ )
+
+ failed = create(
+ :deployment,
+ :failed,
+ project: merge_request.target_project,
+ environment: environment
+ )
+
+ merge_request.deployment_merge_requests.create!(deployment: created)
+ merge_request.deployment_merge_requests.create!(deployment: success)
+ merge_request.deployment_merge_requests.create!(deployment: failed)
+
+ expect(merge_request.recent_visible_deployments).to eq([failed, success])
+ end
+
+ it 'only returns a limited number of deployments' do
+ 20.times do
+ deploy = create(
+ :deployment,
+ :success,
+ project: merge_request.target_project,
+ environment: environment
+ )
+
+ merge_request.deployment_merge_requests.create!(deployment: deploy)
+ end
+
+ expect(merge_request.recent_visible_deployments.count).to eq(10)
+ end
+ end
end
diff --git a/spec/models/milestone_spec.rb b/spec/models/milestone_spec.rb
index 45cd2768708..d84a8665dc8 100644
--- a/spec/models/milestone_spec.rb
+++ b/spec/models/milestone_spec.rb
@@ -106,6 +106,40 @@ describe Milestone do
end
end
+ describe '#merge_requests_enabled?' do
+ context "per project" do
+ it "is true for projects with MRs enabled" do
+ project = create(:project, :merge_requests_enabled)
+ milestone = create(:milestone, project: project)
+
+ expect(milestone.merge_requests_enabled?).to be(true)
+ end
+
+ it "is false for projects with MRs disabled" do
+ project = create(:project, :repository_enabled, :merge_requests_disabled)
+ milestone = create(:milestone, project: project)
+
+ expect(milestone.merge_requests_enabled?).to be(false)
+ end
+
+ it "is false for projects with repository disabled" do
+ project = create(:project, :repository_disabled)
+ milestone = create(:milestone, project: project)
+
+ expect(milestone.merge_requests_enabled?).to be(false)
+ end
+ end
+
+ context "per group" do
+ let(:group) { create(:group) }
+ let(:milestone) { create(:milestone, group: group) }
+
+ it "is always true for groups, for performance reasons" do
+ expect(milestone.merge_requests_enabled?).to be(true)
+ end
+ end
+ end
+
describe "unique milestone title" do
context "per project" do
it "does not accept the same title in a project twice" do
diff --git a/spec/models/namespace_spec.rb b/spec/models/namespace_spec.rb
index c93e6aafd75..2ba0d97792b 100644
--- a/spec/models/namespace_spec.rb
+++ b/spec/models/namespace_spec.rb
@@ -199,6 +199,13 @@ describe Namespace do
expect(described_class.find_by_pages_host(host)).to eq(namespace)
end
+
+ it "returns no result if the provided host is not subdomain of the Pages host" do
+ create(:namespace, name: 'namespace.io')
+ host = "namespace.io"
+
+ expect(described_class.find_by_pages_host(host)).to eq(nil)
+ end
end
describe '#ancestors_upto' do
@@ -274,7 +281,7 @@ describe Namespace do
move_dir_result
end
- expect(Gitlab::Sentry).to receive(:should_raise_for_dev?).and_return(false) # like prod
+ expect(Gitlab::ErrorTracking).to receive(:should_raise_for_dev?).and_return(false) # like prod
namespace.update(path: namespace.full_path + '_new')
end
diff --git a/spec/models/note_spec.rb b/spec/models/note_spec.rb
index 9c06cd049f5..a6d9ecaa7c5 100644
--- a/spec/models/note_spec.rb
+++ b/spec/models/note_spec.rb
@@ -520,6 +520,19 @@ describe Note do
end
end
+ describe '#start_of_discussion?' do
+ let_it_be(:note) { create(:discussion_note_on_merge_request) }
+ let_it_be(:reply) { create(:discussion_note_on_merge_request, in_reply_to: note) }
+
+ it 'returns true when note is the start of a discussion' do
+ expect(note).to be_start_of_discussion
+ end
+
+ it 'returns false when note is a reply' do
+ expect(reply).not_to be_start_of_discussion
+ end
+ end
+
describe '.find_discussion' do
let!(:note) { create(:discussion_note_on_merge_request) }
let!(:note2) { create(:discussion_note_on_merge_request, in_reply_to: note) }
@@ -1035,20 +1048,20 @@ describe Note do
describe 'expiring ETag cache' do
let(:note) { build(:note_on_issue) }
- def expect_expiration(note)
+ def expect_expiration(noteable)
expect_any_instance_of(Gitlab::EtagCaching::Store)
.to receive(:touch)
- .with("/#{note.project.namespace.to_param}/#{note.project.to_param}/noteable/issue/#{note.noteable.id}/notes")
+ .with("/#{noteable.project.namespace.to_param}/#{noteable.project.to_param}/noteable/#{noteable.class.name.underscore}/#{noteable.id}/notes")
end
it "expires cache for note's issue when note is saved" do
- expect_expiration(note)
+ expect_expiration(note.noteable)
note.save!
end
it "expires cache for note's issue when note is destroyed" do
- expect_expiration(note)
+ expect_expiration(note.noteable)
note.destroy!
end
@@ -1063,28 +1076,54 @@ describe Note do
end
end
- describe '#with_notes_filter' do
- let!(:comment) { create(:note) }
- let!(:system_note) { create(:note, system: true) }
+ context 'for merge requests' do
+ let_it_be(:merge_request) { create(:merge_request) }
- context 'when notes filter is nil' do
- subject { described_class.with_notes_filter(nil) }
+ context 'when adding a note to the MR' do
+ let(:note) { build(:note, noteable: merge_request, project: merge_request.project) }
- it { is_expected.to include(comment, system_note) }
+ it 'expires the MR note etag cache' do
+ expect_expiration(merge_request)
+
+ note.save!
+ end
end
- context 'when notes filter is set to all notes' do
- subject { described_class.with_notes_filter(UserPreference::NOTES_FILTERS[:all_notes]) }
+ context 'when adding a note to a commit on the MR' do
+ let(:note) { build(:note_on_commit, commit_id: merge_request.commits.first.id, project: merge_request.project) }
+
+ it 'expires the MR note etag cache' do
+ expect_expiration(merge_request)
- it { is_expected.to include(comment, system_note) }
+ note.save!
+ end
end
+ end
+ end
- context 'when notes filter is set to only comments' do
- subject { described_class.with_notes_filter(UserPreference::NOTES_FILTERS[:only_comments]) }
+ describe '#with_notes_filter' do
+ let!(:comment) { create(:note) }
+ let!(:system_note) { create(:note, system: true) }
- it { is_expected.to include(comment) }
- it { is_expected.not_to include(system_note) }
- end
+ subject { described_class.with_notes_filter(filter) }
+
+ context 'when notes filter is nil' do
+ let(:filter) { nil }
+
+ it { is_expected.to include(comment, system_note) }
+ end
+
+ context 'when notes filter is set to all notes' do
+ let(:filter) { UserPreference::NOTES_FILTERS[:all_notes] }
+
+ it { is_expected.to include(comment, system_note) }
+ end
+
+ context 'when notes filter is set to only comments' do
+ let(:filter) { UserPreference::NOTES_FILTERS[:only_comments] }
+
+ it { is_expected.to include(comment) }
+ it { is_expected.not_to include(system_note) }
end
end
diff --git a/spec/models/oauth_access_grant_spec.rb b/spec/models/oauth_access_grant_spec.rb
new file mode 100644
index 00000000000..955dae906f3
--- /dev/null
+++ b/spec/models/oauth_access_grant_spec.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe OauthAccessGrant do
+ let(:user) { create(:user) }
+ let(:application) { create(:oauth_application, owner: user) }
+
+ describe '#delete' do
+ it 'cascades to oauth_openid_requests' do
+ access_grant = create(:oauth_access_grant, application: application)
+ create(:oauth_openid_request, access_grant: access_grant)
+
+ expect { access_grant.delete }.to change(Doorkeeper::OpenidConnect::Request, :count).by(-1)
+ end
+ end
+end
diff --git a/spec/models/pages_domain_spec.rb b/spec/models/pages_domain_spec.rb
index 4b65bf032d1..b1df13e8c2a 100644
--- a/spec/models/pages_domain_spec.rb
+++ b/spec/models/pages_domain_spec.rb
@@ -175,6 +175,16 @@ describe PagesDomain do
it { is_expected.to validate_presence_of(:verification_code) }
end
+ describe 'default values' do
+ it 'defaults wildcard to false' do
+ expect(subject.wildcard).to eq(false)
+ end
+
+ it 'defaults domain_type to project' do
+ expect(subject.domain_type).to eq('project')
+ end
+ end
+
describe '#verification_code' do
subject { pages_domain.verification_code }
@@ -305,6 +315,14 @@ describe PagesDomain do
end
describe '#update_daemon' do
+ context 'when domain_type is instance' do
+ it 'does nothing' do
+ expect(Projects::UpdatePagesConfigurationService).not_to receive(:new)
+
+ create(:pages_domain, domain_type: :instance)
+ end
+ end
+
it 'runs when the domain is created' do
domain = build(:pages_domain)
diff --git a/spec/models/personal_access_token_spec.rb b/spec/models/personal_access_token_spec.rb
index e0e1101ffc6..b16d1f58be5 100644
--- a/spec/models/personal_access_token_spec.rb
+++ b/spec/models/personal_access_token_spec.rb
@@ -21,6 +21,18 @@ describe PersonalAccessToken do
end
end
+ describe 'scopes' do
+ describe '.for_user' do
+ it 'returns personal access tokens of specified user only' do
+ user_1 = create(:user)
+ token_of_user_1 = create(:personal_access_token, user: user_1)
+ create_list(:personal_access_token, 2)
+
+ expect(described_class.for_user(user_1)).to contain_exactly(token_of_user_1)
+ end
+ end
+ end
+
describe ".active?" do
let(:active_personal_access_token) { build(:personal_access_token) }
let(:revoked_personal_access_token) { build(:personal_access_token, :revoked) }
@@ -146,4 +158,25 @@ describe PersonalAccessToken do
expect(personal_access_token.errors[:scopes].first).to eq "can only contain available scopes"
end
end
+
+ describe 'scopes' do
+ describe '.expiring_and_not_notified' do
+ let_it_be(:expired_token) { create(:personal_access_token, expires_at: 2.days.ago) }
+ let_it_be(:revoked_token) { create(:personal_access_token, revoked: true) }
+ let_it_be(:valid_token_and_notified) { create(:personal_access_token, expires_at: 2.days.from_now, expire_notification_delivered: true) }
+ let_it_be(:valid_token) { create(:personal_access_token, expires_at: 2.days.from_now) }
+
+ context 'in one day' do
+ it "doesn't have any tokens" do
+ expect(described_class.expiring_and_not_notified(1.day.from_now)).to be_empty
+ end
+ end
+
+ context 'in three days' do
+ it 'only includes a valid token' do
+ expect(described_class.expiring_and_not_notified(3.days.from_now)).to contain_exactly(valid_token)
+ end
+ end
+ end
+ end
end
diff --git a/spec/models/project_auto_devops_spec.rb b/spec/models/project_auto_devops_spec.rb
index da9e56ef897..2a821b20aa8 100644
--- a/spec/models/project_auto_devops_spec.rb
+++ b/spec/models/project_auto_devops_spec.rb
@@ -23,7 +23,8 @@ describe ProjectAutoDevops do
[
{ key: 'INCREMENTAL_ROLLOUT_MODE', value: 'manual' },
{ key: 'STAGING_ENABLED', value: '1' },
- { key: 'INCREMENTAL_ROLLOUT_ENABLED', value: '1' }
+ { key: 'INCREMENTAL_ROLLOUT_ENABLED', value: '1' },
+ { key: 'AUTO_DEVOPS_EXPLICITLY_ENABLED', value: '1' }
]
end
@@ -33,6 +34,8 @@ describe ProjectAutoDevops do
context 'when deploy_strategy is continuous' do
let(:auto_devops) { build_stubbed(:project_auto_devops, :continuous_deployment, project: project) }
+ it { expect(auto_devops.predefined_variables).to include(key: 'AUTO_DEVOPS_EXPLICITLY_ENABLED', value: '1') }
+
it do
expect(auto_devops.predefined_variables.map { |var| var[:key] })
.not_to include("STAGING_ENABLED", "INCREMENTAL_ROLLOUT_ENABLED")
@@ -44,11 +47,19 @@ describe ProjectAutoDevops do
it { expect(auto_devops.predefined_variables).to include(key: 'INCREMENTAL_ROLLOUT_MODE', value: 'timed') }
+ it { expect(auto_devops.predefined_variables).to include(key: 'AUTO_DEVOPS_EXPLICITLY_ENABLED', value: '1') }
+
it do
expect(auto_devops.predefined_variables.map { |var| var[:key] })
.not_to include("STAGING_ENABLED", "INCREMENTAL_ROLLOUT_ENABLED")
end
end
+
+ context 'when auto-devops is explicitly disabled' do
+ let(:auto_devops) { build_stubbed(:project_auto_devops, :disabled, project: project) }
+
+ it { expect(auto_devops.predefined_variables.to_hash).to be_empty }
+ end
end
describe '#create_gitlab_deploy_token' do
diff --git a/spec/models/project_import_state_spec.rb b/spec/models/project_import_state_spec.rb
index 0b4dcc62ff6..babde7b0670 100644
--- a/spec/models/project_import_state_spec.rb
+++ b/spec/models/project_import_state_spec.rb
@@ -95,30 +95,28 @@ describe ProjectImportState, type: :model do
end
end
- describe '#remove_jid', :clean_gitlab_redis_cache do
- let(:project) { }
-
+ describe 'clearing `jid` after finish', :clean_gitlab_redis_cache do
context 'without an JID' do
it 'does nothing' do
- import_state = create(:import_state)
+ import_state = create(:import_state, :started)
expect(Gitlab::SidekiqStatus)
.not_to receive(:unset)
- import_state.remove_jid
+ import_state.finish!
end
end
context 'with an JID' do
it 'unsets the JID' do
- import_state = create(:import_state, jid: '123')
+ import_state = create(:import_state, :started, jid: '123')
expect(Gitlab::SidekiqStatus)
.to receive(:unset)
.with('123')
.and_call_original
- import_state.remove_jid
+ import_state.finish!
expect(import_state.jid).to be_nil
end
diff --git a/spec/models/project_services/jira_service_spec.rb b/spec/models/project_services/jira_service_spec.rb
index 5feb8ca7839..8c14089fff2 100644
--- a/spec/models/project_services/jira_service_spec.rb
+++ b/spec/models/project_services/jira_service_spec.rb
@@ -344,7 +344,7 @@ describe JiraService do
it 'returns default values' do
expect(service.title).to eq('Jira')
- expect(service.description).to eq('Jira issue tracker')
+ expect(service.description).to eq(s_('JiraService|Jira issue tracker'))
end
end
end
@@ -431,6 +431,16 @@ describe JiraService do
).once
end
+ context 'when "comment_on_event_enabled" is set to false' do
+ it 'creates Remote Link reference but does not create comment' do
+ allow(@jira_service).to receive_messages(comment_on_event_enabled: false)
+ @jira_service.close_issue(resource, ExternalIssue.new('JIRA-123', project))
+
+ expect(WebMock).not_to have_requested(:post, @comment_url)
+ expect(WebMock).to have_requested(:post, @remote_link_url)
+ end
+ end
+
it 'does not send comment or remote links to issues already closed' do
allow_any_instance_of(JIRA::Resource::Issue).to receive(:resolution).and_return(true)
@@ -596,7 +606,7 @@ describe JiraService do
service = create(:jira_service)
expect(service.title).to eq('Jira')
- expect(service.description).to eq('Jira issue tracker')
+ expect(service.description).to eq(s_('JiraService|Jira issue tracker'))
end
end
diff --git a/spec/models/project_services/prometheus_service_spec.rb b/spec/models/project_services/prometheus_service_spec.rb
index bc22818ede7..5934510fdda 100644
--- a/spec/models/project_services/prometheus_service_spec.rb
+++ b/spec/models/project_services/prometheus_service_spec.rb
@@ -156,11 +156,34 @@ describe PrometheusService, :use_clean_rails_memory_store_caching do
describe '#prometheus_available?' do
context 'clusters with installed prometheus' do
- let!(:cluster) { create(:cluster, projects: [project]) }
- let!(:prometheus) { create(:clusters_applications_prometheus, :installed, cluster: cluster) }
+ before do
+ create(:clusters_applications_prometheus, :installed, cluster: cluster)
+ end
- it 'returns true' do
- expect(service.prometheus_available?).to be(true)
+ context 'cluster belongs to project' do
+ let(:cluster) { create(:cluster, projects: [project]) }
+
+ it 'returns true' do
+ expect(service.prometheus_available?).to be(true)
+ end
+ end
+
+ context 'cluster belongs to projects group' do
+ set(:group) { create(:group) }
+ let(:project) { create(:prometheus_project, group: group) }
+ let(:cluster) { create(:cluster_for_group, :with_installed_helm, groups: [group]) }
+
+ it 'returns true' do
+ expect(service.prometheus_available?).to be(true)
+ end
+ end
+
+ context 'cluster belongs to gitlab instance' do
+ let(:cluster) { create(:cluster, :instance) }
+
+ it 'returns true' do
+ expect(service.prometheus_available?).to be(true)
+ end
end
end
@@ -262,4 +285,28 @@ describe PrometheusService, :use_clean_rails_memory_store_caching do
end
end
end
+
+ describe '#track_events after_commit callback' do
+ before do
+ allow(service).to receive(:prometheus_available?).and_return(true)
+ end
+
+ context "enabling manual_configuration" do
+ it "tracks enable event" do
+ service.update!(manual_configuration: false)
+
+ expect(Gitlab::Tracking).to receive(:event).with('cluster:services:prometheus', 'enabled_manual_prometheus')
+
+ service.update!(manual_configuration: true)
+ end
+
+ it "tracks disable event" do
+ service.update!(manual_configuration: true)
+
+ expect(Gitlab::Tracking).to receive(:event).with('cluster:services:prometheus', 'disabled_manual_prometheus')
+
+ service.update!(manual_configuration: false)
+ end
+ end
+ end
end
diff --git a/spec/models/project_services/unify_circuit_service_spec.rb b/spec/models/project_services/unify_circuit_service_spec.rb
new file mode 100644
index 00000000000..51079ea5395
--- /dev/null
+++ b/spec/models/project_services/unify_circuit_service_spec.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+require "spec_helper"
+
+describe UnifyCircuitService do
+ it_behaves_like "chat service", "Unify Circuit" do
+ let(:client_arguments) { webhook_url }
+ let(:content_key) { :subject }
+ end
+end
diff --git a/spec/models/project_services/youtrack_service_spec.rb b/spec/models/project_services/youtrack_service_spec.rb
index 19d4cb95315..dcc40d8f343 100644
--- a/spec/models/project_services/youtrack_service_spec.rb
+++ b/spec/models/project_services/youtrack_service_spec.rb
@@ -79,7 +79,7 @@ describe YoutrackService do
it 'returns default values' do
expect(service.title).to eq('YouTrack')
- expect(service.description).to eq('YouTrack issue tracker')
+ expect(service.description).to eq(s_('IssueTracker|YouTrack issue tracker'))
end
end
end
diff --git a/spec/models/project_snippet_spec.rb b/spec/models/project_snippet_spec.rb
index 46025507cb5..903671afb13 100644
--- a/spec/models/project_snippet_spec.rb
+++ b/spec/models/project_snippet_spec.rb
@@ -9,6 +9,7 @@ describe ProjectSnippet do
describe "Validation" do
it { is_expected.to validate_presence_of(:project) }
+ it { is_expected.to validate_inclusion_of(:secret).in_array([false]) }
end
describe '#embeddable?' do
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index 14cb7d67e11..99d7e4d156f 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -33,6 +33,7 @@ describe Project do
it { is_expected.to have_one(:microsoft_teams_service) }
it { is_expected.to have_one(:mattermost_service) }
it { is_expected.to have_one(:hangouts_chat_service) }
+ it { is_expected.to have_one(:unify_circuit_service) }
it { is_expected.to have_one(:packagist_service) }
it { is_expected.to have_one(:pushover_service) }
it { is_expected.to have_one(:asana_service) }
@@ -61,6 +62,7 @@ describe Project do
it { is_expected.to have_one(:external_wiki_service) }
it { is_expected.to have_one(:project_feature) }
it { is_expected.to have_one(:project_repository) }
+ it { is_expected.to have_one(:container_expiration_policy) }
it { is_expected.to have_one(:statistics).class_name('ProjectStatistics') }
it { is_expected.to have_one(:import_data).class_name('ProjectImportData') }
it { is_expected.to have_one(:last_event).class_name('Event') }
@@ -136,6 +138,13 @@ describe Project do
expect(project.ci_cd_settings).to be_persisted
end
+ it 'automatically creates a container expiration policy row' do
+ project = create(:project)
+
+ expect(project.container_expiration_policy).to be_an_instance_of(ContainerExpirationPolicy)
+ expect(project.container_expiration_policy).to be_persisted
+ end
+
it 'automatically creates a Pages metadata row' do
project = create(:project)
@@ -235,7 +244,7 @@ describe Project do
new_project = build_stubbed(:project, namespace_id: project.namespace_id, path: "#{project.path}.wiki")
expect(new_project).not_to be_valid
- expect(new_project.errors[:name].first).to eq('has already been taken')
+ expect(new_project.errors[:name].first).to eq(_('has already been taken'))
end
end
@@ -245,7 +254,7 @@ describe Project do
new_project = build_stubbed(:project, namespace_id: project_with_wiki_suffix.namespace_id, path: 'foo')
expect(new_project).not_to be_valid
- expect(new_project.errors[:name].first).to eq('has already been taken')
+ expect(new_project.errors[:name].first).to eq(_('has already been taken'))
end
end
end
@@ -376,7 +385,7 @@ describe Project do
end
it 'contains errors related to the project being deleted' do
- expect(new_project.errors.full_messages.first).to eq('The project is still being deleted. Please try again later.')
+ expect(new_project.errors.full_messages.first).to eq(_('The project is still being deleted. Please try again later.'))
end
end
@@ -1348,6 +1357,14 @@ describe Project do
end
end
+ describe '.with_limit' do
+ it 'limits the number of projects returned' do
+ create_list(:project, 3)
+
+ expect(described_class.with_limit(1).count).to eq(1)
+ end
+ end
+
describe '.visible_to_user' do
let!(:project) { create(:project, :private) }
let!(:user) { create(:user) }
@@ -1367,6 +1384,16 @@ describe Project do
end
end
+ describe '.with_service' do
+ before do
+ create_list(:prometheus_project, 2)
+ end
+
+ it 'avoid n + 1' do
+ expect { described_class.with_service(:prometheus_service).map(&:prometheus_service) }.not_to exceed_query_limit(1)
+ end
+ end
+
context 'repository storage by default' do
let(:project) { build(:project) }
@@ -1661,7 +1688,7 @@ describe Project do
end
describe '.search' do
- let(:project) { create(:project, description: 'kitten mittens') }
+ let_it_be(:project) { create(:project, description: 'kitten mittens') }
it 'returns projects with a matching name' do
expect(described_class.search(project.name)).to eq([project])
@@ -1699,6 +1726,39 @@ describe Project do
expect(described_class.search(project.path.upcase)).to eq([project])
end
+ context 'by full path' do
+ let_it_be(:group) { create(:group) }
+ let_it_be(:project) { create(:project, group: group) }
+
+ context 'when feature is enabled' do
+ before do
+ stub_feature_flags(project_search_by_full_path: true)
+ end
+
+ it 'returns projects that match the group path' do
+ expect(described_class.search(group.path)).to eq([project])
+ end
+
+ it 'returns projects that match the full path' do
+ expect(described_class.search(project.full_path)).to eq([project])
+ end
+ end
+
+ context 'when feature is disabled' do
+ before do
+ stub_feature_flags(project_search_by_full_path: false)
+ end
+
+ it 'returns no results when searching by group path' do
+ expect(described_class.search(group.path)).to be_empty
+ end
+
+ it 'returns no results when searching by full path' do
+ expect(described_class.search(project.full_path)).to be_empty
+ end
+ end
+ end
+
describe 'with pending_delete project' do
let(:pending_delete_project) { create(:project, pending_delete: true) }
@@ -1726,11 +1786,11 @@ describe Project do
end
end
- describe '.including_namespace_and_owner' do
+ describe '.eager_load_namespace_and_owner' do
it 'eager loads the namespace and namespace owner' do
create(:project)
- row = described_class.eager_load_namespace_and_owner.to_a.first
+ row = described_class.eager_load_namespace_and_owner.first
recorder = ActiveRecord::QueryRecorder.new { row.namespace.owner }
expect(recorder.count).to be_zero
@@ -1741,6 +1801,7 @@ describe Project do
let(:project) { create(:project, :repository) }
let(:repo) { double(:repo, exists?: true) }
let(:wiki) { double(:wiki, exists?: true) }
+ let(:design) { double(:wiki, exists?: false) }
it 'expires the caches of the repository and wiki' do
allow(Repository).to receive(:new)
@@ -1751,6 +1812,10 @@ describe Project do
.with('foo.wiki', project)
.and_return(wiki)
+ allow(Repository).to receive(:new)
+ .with('foo.design', project)
+ .and_return(design)
+
expect(repo).to receive(:before_delete)
expect(wiki).to receive(:before_delete)
@@ -2205,7 +2270,7 @@ describe Project do
it 'returns the right human import status' do
project = create(:project, :import_started)
- expect(project.human_import_status_name).to eq('started')
+ expect(project.human_import_status_name).to eq(_('started'))
end
end
@@ -2731,8 +2796,9 @@ describe Project do
describe '#deployment_variables' do
let(:project) { create(:project) }
let(:environment) { 'production' }
+ let(:namespace) { 'namespace' }
- subject { project.deployment_variables(environment: environment) }
+ subject { project.deployment_variables(environment: environment, kubernetes_namespace: namespace) }
before do
expect(project).to receive(:deployment_platform).with(environment: environment)
@@ -2751,7 +2817,7 @@ describe Project do
before do
expect(deployment_platform).to receive(:predefined_variables)
- .with(project: project, environment_name: environment)
+ .with(project: project, environment_name: environment, kubernetes_namespace: namespace)
.and_return(platform_variables)
end
@@ -3216,6 +3282,54 @@ describe Project do
it { expect(project.parent_changed?).to be_truthy }
end
+ describe '#default_merge_request_target' do
+ context 'when forked from a more visible project' do
+ it 'returns the more restrictive project' do
+ project = create(:project, :public)
+ forked = fork_project(project)
+ forked.visibility = Gitlab::VisibilityLevel::PRIVATE
+ forked.save!
+
+ expect(project.visibility).to eq 'public'
+ expect(forked.visibility).to eq 'private'
+
+ expect(forked.default_merge_request_target).to eq(forked)
+ end
+ end
+
+ context 'when forked from a project with disabled merge requests' do
+ it 'returns the current project' do
+ project = create(:project, :merge_requests_disabled)
+ forked = fork_project(project)
+
+ expect(forked.forked_from_project).to receive(:merge_requests_enabled?)
+ .and_call_original
+
+ expect(forked.default_merge_request_target).to eq(forked)
+ end
+ end
+
+ context 'when forked from a project with enabled merge requests' do
+ it 'returns the source project' do
+ project = create(:project, :public)
+ forked = fork_project(project)
+
+ expect(project.visibility).to eq 'public'
+ expect(forked.visibility).to eq 'public'
+
+ expect(forked.default_merge_request_target).to eq(project)
+ end
+ end
+
+ context 'when not forked' do
+ it 'returns the current project' do
+ project = build_stubbed(:project)
+
+ expect(project.default_merge_request_target).to eq(project)
+ end
+ end
+ end
+
def enable_lfs
allow(Gitlab.config.lfs).to receive(:enabled).and_return(true)
end
@@ -4409,7 +4523,6 @@ describe Project do
expect(project.wiki.repository).to receive(:after_import)
expect(import_state).to receive(:finish)
expect(project).to receive(:update_project_counter_caches)
- expect(import_state).to receive(:remove_jid)
expect(project).to receive(:after_create_default_branch)
expect(project).to receive(:refresh_markdown_cache!)
expect(InternalId).to receive(:flush_records!).with(project: project)
@@ -5057,6 +5170,17 @@ describe Project do
expect(subject).to contain_exactly(cluster, group_cluster)
end
end
+
+ context 'project is hosted on instance with integrated cluster' do
+ let(:group_cluster) { create(:cluster, :group) }
+ let(:instance_cluster) { create(:cluster, :instance) }
+ let(:group) { group_cluster.group }
+ let(:project) { create(:project, group: group) }
+
+ it 'returns all available clusters for this project' do
+ expect(subject).to contain_exactly(cluster, group_cluster, instance_cluster)
+ end
+ end
end
describe '#object_pool_params' do
@@ -5089,12 +5213,24 @@ describe Project do
it { is_expected.not_to be_git_objects_poolable }
end
- context 'when the project is not public' do
+ context 'when the project is private' do
let(:project) { create(:project, :private) }
it { is_expected.not_to be_git_objects_poolable }
end
+ context 'when the project is public' do
+ let(:project) { create(:project, :repository, :public) }
+
+ it { is_expected.to be_git_objects_poolable }
+ end
+
+ context 'when the project is internal' do
+ let(:project) { create(:project, :repository, :internal) }
+
+ it { is_expected.to be_git_objects_poolable }
+ end
+
context 'when objects are poolable' do
let(:project) { create(:project, :repository, :public) }
diff --git a/spec/models/project_wiki_spec.rb b/spec/models/project_wiki_spec.rb
index 31d1d1fd7d1..af23f121bdc 100644
--- a/spec/models/project_wiki_spec.rb
+++ b/spec/models/project_wiki_spec.rb
@@ -28,7 +28,7 @@ describe ProjectWiki do
describe '#web_url' do
it 'returns the full web URL to the wiki' do
- expect(subject.web_url).to eq("#{Gitlab.config.gitlab.url}/#{project.full_path}/wikis/home")
+ expect(subject.web_url).to eq("#{Gitlab.config.gitlab.url}/#{project.full_path}/-/wikis/home")
end
end
@@ -71,7 +71,7 @@ describe ProjectWiki do
describe "#wiki_base_path" do
it "returns the wiki base path" do
- wiki_base_path = "#{Gitlab.config.gitlab.relative_url_root}/#{project.full_path}/wikis"
+ wiki_base_path = "#{Gitlab.config.gitlab.relative_url_root}/#{project.full_path}/-/wikis"
expect(subject.wiki_base_path).to eq(wiki_base_path)
end
diff --git a/spec/models/readme_blob_spec.rb b/spec/models/readme_blob_spec.rb
new file mode 100644
index 00000000000..f07713bd908
--- /dev/null
+++ b/spec/models/readme_blob_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe ReadmeBlob do
+ include FakeBlobHelpers
+
+ describe 'policy' do
+ let(:project) { build(:project, :repository) }
+ subject { described_class.new(fake_blob(path: 'README.md'), project.repository) }
+
+ it 'works with policy' do
+ expect(Ability.allowed?(project.creator, :read_blob, subject)).to be_truthy
+ end
+ end
+end
diff --git a/spec/models/release_spec.rb b/spec/models/release_spec.rb
index f9c7a14f1f3..cadb8793e15 100644
--- a/spec/models/release_spec.rb
+++ b/spec/models/release_spec.rb
@@ -53,6 +53,12 @@ RSpec.describe Release do
end
end
+ describe 'callbacks' do
+ it 'creates a new Evidence object on after_commit', :sidekiq_inline do
+ expect { release }.to change(Evidence, :count).by(1)
+ end
+ end
+
describe '#assets_count' do
subject { release.assets_count }
@@ -92,20 +98,22 @@ RSpec.describe Release do
end
end
- describe 'evidence', :sidekiq_might_not_need_inline do
+ describe 'evidence' do
+ let(:release_with_evidence) { create(:release, :with_evidence, project: project) }
+
describe '#create_evidence!' do
context 'when a release is created' do
it 'creates one Evidence object too' do
- expect { release }.to change(Evidence, :count).by(1)
+ expect { release_with_evidence }.to change(Evidence, :count).by(1)
end
end
end
context 'when a release is deleted' do
it 'also deletes the associated evidence' do
- release = create(:release)
+ release_with_evidence
- expect { release.destroy }.to change(Evidence, :count).by(-1)
+ expect { release_with_evidence.destroy }.to change(Evidence, :count).by(-1)
end
end
end
@@ -141,4 +149,36 @@ RSpec.describe Release do
end
end
end
+
+ describe '#evidence_sha' do
+ subject { release.evidence_sha }
+
+ context 'when a release was created before evidence collection existed' do
+ let!(:release) { create(:release) }
+
+ it { is_expected.to be_nil }
+ end
+
+ context 'when a release was created with evidence collection' do
+ let!(:release) { create(:release, :with_evidence) }
+
+ it { is_expected.to eq(release.evidence.summary_sha) }
+ end
+ end
+
+ describe '#evidence_summary' do
+ subject { release.evidence_summary }
+
+ context 'when a release was created before evidence collection existed' do
+ let!(:release) { create(:release) }
+
+ it { is_expected.to eq({}) }
+ end
+
+ context 'when a release was created with evidence collection' do
+ let!(:release) { create(:release, :with_evidence) }
+
+ it { is_expected.to eq(release.evidence.summary) }
+ end
+ end
end
diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb
index 9e300418ade..c0245dfdf1a 100644
--- a/spec/models/repository_spec.rb
+++ b/spec/models/repository_spec.rb
@@ -847,7 +847,7 @@ describe Repository do
end
describe '#get_raw_changes' do
- context `with non-UTF8 bytes in paths` do
+ context 'with non-UTF8 bytes in paths' do
let(:old_rev) { 'd0888d297eadcd7a345427915c309413b1231e65' }
let(:new_rev) { '19950f03c765f7ac8723a73a0599764095f52fc0' }
let(:changes) { repository.raw_changes_between(old_rev, new_rev) }
@@ -1530,7 +1530,7 @@ describe Repository do
expect(merge_request.reload.rebase_commit_sha).to eq(new_sha)
end
- it 'does rollback when an error is encountered in the second step' do
+ it 'does rollback when a PreReceiveError is encountered in the second step' do
second_response = double(pre_receive_error: 'my_error', git_error: nil)
mock_gitaly(second_response)
@@ -1541,6 +1541,17 @@ describe Repository do
expect(merge_request.reload.rebase_commit_sha).to be_nil
end
+ it 'does rollback when a GitError is encountered in the second step' do
+ second_response = double(pre_receive_error: nil, git_error: 'git error')
+ mock_gitaly(second_response)
+
+ expect do
+ repository.rebase(user, merge_request)
+ end.to raise_error(Gitlab::Git::Repository::GitError)
+
+ expect(merge_request.reload.rebase_commit_sha).to be_nil
+ end
+
def mock_gitaly(second_response)
responses = [
double(rebase_sha: new_sha).as_null_object,
@@ -2388,7 +2399,40 @@ describe Repository do
end
describe '#ancestor? with Gitaly enabled' do
- it_behaves_like "#ancestor?"
+ let(:commit) { repository.commit }
+ let(:ancestor) { commit.parents.first }
+ let(:cache_key) { "ancestor:#{ancestor.id}:#{commit.id}" }
+
+ it_behaves_like '#ancestor?'
+
+ context 'caching', :request_store, :clean_gitlab_redis_cache do
+ it 'only calls out to Gitaly once' do
+ expect(repository.raw_repository).to receive(:ancestor?).once
+
+ 2.times { repository.ancestor?(commit.id, ancestor.id) }
+ end
+
+ it 'increments a counter with cache hits' do
+ counter = Gitlab::Metrics.counter(:repository_ancestor_calls_total, 'Repository ancestor calls')
+
+ expect do
+ 2.times { repository.ancestor?(commit.id, ancestor.id) }
+ end.to change { counter.get(cache_hit: 'true') }.by(1)
+ .and change { counter.get(cache_hit: 'false') }.by(1)
+ end
+
+ it 'returns the value from the request store' do
+ repository.__send__(:request_store_cache).write(cache_key, "it's apparent")
+
+ expect(repository.ancestor?(ancestor.id, commit.id)).to eq("it's apparent")
+ end
+
+ it 'returns the value from the redis cache' do
+ expect(repository.__send__(:cache)).to receive(:fetch).with(cache_key).and_return("it's apparent")
+
+ expect(repository.ancestor?(ancestor.id, commit.id)).to eq("it's apparent")
+ end
+ end
end
describe '#ancestor? with Rugged enabled', :enable_rugged do
diff --git a/spec/models/resource_label_event_spec.rb b/spec/models/resource_label_event_spec.rb
index f51041c9ddc..a92f5ee93e1 100644
--- a/spec/models/resource_label_event_spec.rb
+++ b/spec/models/resource_label_event_spec.rb
@@ -49,9 +49,10 @@ RSpec.describe ResourceLabelEvent, type: :model do
describe '#expire_etag_cache' do
def expect_expiration(issue)
- expect_any_instance_of(Gitlab::EtagCaching::Store)
- .to receive(:touch)
- .with("/#{issue.project.namespace.to_param}/#{issue.project.to_param}/noteable/issue/#{issue.id}/notes")
+ expect_next_instance_of(Gitlab::EtagCaching::Store) do |instance|
+ expect(instance).to receive(:touch)
+ .with("/#{issue.project.namespace.to_param}/#{issue.project.to_param}/noteable/issue/#{issue.id}/notes")
+ end
end
it 'expires resource note etag cache on event save' do
diff --git a/spec/models/sentry_issue_spec.rb b/spec/models/sentry_issue_spec.rb
new file mode 100644
index 00000000000..48f9adf64af
--- /dev/null
+++ b/spec/models/sentry_issue_spec.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe SentryIssue do
+ describe 'associations' do
+ it { is_expected.to belong_to(:issue) }
+ end
+
+ describe 'validations' do
+ let!(:sentry_issue) { create(:sentry_issue) }
+
+ it { is_expected.to validate_presence_of(:issue) }
+ it { is_expected.to validate_uniqueness_of(:issue) }
+ it { is_expected.to validate_presence_of(:sentry_issue_identifier) }
+ it { is_expected.to validate_uniqueness_of(:sentry_issue_identifier).with_message("has already been taken") }
+ end
+end
diff --git a/spec/models/serverless/domain_cluster_spec.rb b/spec/models/serverless/domain_cluster_spec.rb
new file mode 100644
index 00000000000..73d7d64d35e
--- /dev/null
+++ b/spec/models/serverless/domain_cluster_spec.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Serverless::DomainCluster do
+ subject { create(:serverless_domain_cluster) }
+
+ describe 'validations' do
+ it { is_expected.to validate_presence_of(:pages_domain) }
+ it { is_expected.to validate_presence_of(:knative) }
+ it { is_expected.to validate_presence_of(:uuid) }
+
+ it { is_expected.to validate_uniqueness_of(:uuid) }
+ it { is_expected.to validate_length_of(:uuid).is_equal_to(14) }
+ end
+
+ describe 'associations' do
+ it { is_expected.to belong_to(:pages_domain) }
+ it { is_expected.to belong_to(:knative) }
+ it { is_expected.to belong_to(:creator).optional }
+ end
+end
diff --git a/spec/models/snippet_spec.rb b/spec/models/snippet_spec.rb
index e4cc8931840..9c549a6d56d 100644
--- a/spec/models/snippet_spec.rb
+++ b/spec/models/snippet_spec.rb
@@ -18,6 +18,7 @@ describe Snippet do
it { is_expected.to belong_to(:project) }
it { is_expected.to have_many(:notes).dependent(:destroy) }
it { is_expected.to have_many(:award_emoji).dependent(:destroy) }
+ it { is_expected.to have_many(:user_mentions).class_name("SnippetUserMention") }
end
describe 'validation' do
@@ -31,6 +32,62 @@ describe Snippet do
it { is_expected.to validate_presence_of(:content) }
it { is_expected.to validate_inclusion_of(:visibility_level).in_array(Gitlab::VisibilityLevel.values) }
+
+ it do
+ allow(Gitlab::CurrentSettings).to receive(:snippet_size_limit).and_return(1)
+
+ is_expected
+ .to validate_length_of(:content)
+ .is_at_most(Gitlab::CurrentSettings.snippet_size_limit)
+ .with_message("is too long (2 Bytes). The maximum size is 1 Byte.")
+ end
+
+ context 'content validations' do
+ context 'with existing snippets' do
+ let(:snippet) { create(:personal_snippet, content: 'This is a valid content at the time of creation') }
+
+ before do
+ expect(snippet).to be_valid
+
+ stub_application_setting(snippet_size_limit: 2)
+ end
+
+ it 'does not raise a validation error if the content is not changed' do
+ snippet.title = 'new title'
+
+ expect(snippet).to be_valid
+ end
+
+ it 'raises and error if the content is changed and the size is bigger than limit' do
+ snippet.content = snippet.content + "test"
+
+ expect(snippet).not_to be_valid
+ end
+ end
+
+ context 'with new snippets' do
+ let(:limit) { 15 }
+
+ before do
+ stub_application_setting(snippet_size_limit: limit)
+ end
+
+ it 'is valid when content is smaller than the limit' do
+ snippet = build(:personal_snippet, content: 'Valid Content')
+
+ expect(snippet).to be_valid
+ end
+
+ it 'raises error when content is bigger than setting limit' do
+ snippet = build(:personal_snippet, content: 'This is an invalid content')
+
+ aggregate_failures do
+ expect(snippet).not_to be_valid
+ expect(snippet.errors[:content]).to include("is too long (#{snippet.content.size} Bytes). The maximum size is #{limit} Bytes.")
+ end
+ end
+ end
+ end
end
describe '#to_reference' do
@@ -451,4 +508,20 @@ describe Snippet do
expect(blob.data).to eq(snippet.content)
end
end
+
+ describe '#to_json' do
+ let(:snippet) { build(:snippet) }
+
+ it 'excludes secret_token from generated json' do
+ expect(JSON.parse(to_json).keys).not_to include("secret_token")
+ end
+
+ it 'does not override existing exclude option value' do
+ expect(JSON.parse(to_json(except: [:id])).keys).not_to include("secret_token", "id")
+ end
+
+ def to_json(params = {})
+ snippet.to_json(params)
+ end
+ end
end
diff --git a/spec/models/timelog_spec.rb b/spec/models/timelog_spec.rb
index 7321a458817..33c1afad59f 100644
--- a/spec/models/timelog_spec.rb
+++ b/spec/models/timelog_spec.rb
@@ -41,4 +41,30 @@ RSpec.describe Timelog do
expect(subject).to be_valid
end
end
+
+ describe 'scopes' do
+ describe 'for_issues_in_group' do
+ it 'return timelogs created for group issues' do
+ group = create(:group)
+ subgroup = create(:group, parent: group)
+
+ create(:timelog, issue: create(:issue, project: create(:project)))
+ timelog1 = create(:timelog, issue: create(:issue, project: create(:project, group: group)))
+ timelog2 = create(:timelog, issue: create(:issue, project: create(:project, group: subgroup)))
+
+ expect(described_class.for_issues_in_group(group)).to contain_exactly(timelog1, timelog2)
+ end
+ end
+
+ describe 'between_dates' do
+ it 'returns collection of timelogs within given dates' do
+ create(:timelog, spent_at: 65.days.ago)
+ timelog1 = create(:timelog, spent_at: 15.days.ago)
+ timelog2 = create(:timelog, spent_at: 5.days.ago)
+ timelogs = described_class.between_dates(20.days.ago, 1.day.ago)
+
+ expect(timelogs).to contain_exactly(timelog1, timelog2)
+ end
+ end
+ end
end
diff --git a/spec/models/upload_spec.rb b/spec/models/upload_spec.rb
index 03434c95218..7138305d7b1 100644
--- a/spec/models/upload_spec.rb
+++ b/spec/models/upload_spec.rb
@@ -171,8 +171,7 @@ describe Upload do
it 'sends a message to Sentry' do
upload = create(:upload, :issuable_upload)
- expect(Gitlab::Sentry).to receive(:enabled?).and_return(true)
- expect(Raven).to receive(:capture_message).with("Upload file does not exist", extra: upload.attributes)
+ expect(Gitlab::ErrorTracking).to receive(:track_exception).with(instance_of(RuntimeError), upload.attributes)
upload.exist?
end
diff --git a/spec/models/user_mentions/commit_user_mention_spec.rb b/spec/models/user_mentions/commit_user_mention_spec.rb
new file mode 100644
index 00000000000..ebad3902d6b
--- /dev/null
+++ b/spec/models/user_mentions/commit_user_mention_spec.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe CommitUserMention do
+ describe 'associations' do
+ it { is_expected.to belong_to(:note) }
+ end
+
+ it_behaves_like 'has user mentions'
+end
diff --git a/spec/models/user_mentions/issue_user_mention_spec.rb b/spec/models/user_mentions/issue_user_mention_spec.rb
new file mode 100644
index 00000000000..ac29f3084b4
--- /dev/null
+++ b/spec/models/user_mentions/issue_user_mention_spec.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe IssueUserMention do
+ describe 'associations' do
+ it { is_expected.to belong_to(:issue) }
+ it { is_expected.to belong_to(:note) }
+ end
+
+ it_behaves_like 'has user mentions'
+end
diff --git a/spec/models/user_mentions/merge_request_user_mention_spec.rb b/spec/models/user_mentions/merge_request_user_mention_spec.rb
new file mode 100644
index 00000000000..c5c7cebfaa5
--- /dev/null
+++ b/spec/models/user_mentions/merge_request_user_mention_spec.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe MergeRequestUserMention do
+ describe 'associations' do
+ it { is_expected.to belong_to(:merge_request) }
+ it { is_expected.to belong_to(:note) }
+ end
+
+ it_behaves_like 'has user mentions'
+end
diff --git a/spec/models/user_mentions/snippet_user_mention_spec.rb b/spec/models/user_mentions/snippet_user_mention_spec.rb
new file mode 100644
index 00000000000..0e34a2dd5a1
--- /dev/null
+++ b/spec/models/user_mentions/snippet_user_mention_spec.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe SnippetUserMention do
+ describe 'associations' do
+ it { is_expected.to belong_to(:snippet) }
+ it { is_expected.to belong_to(:note) }
+ end
+
+ it_behaves_like 'has user mentions'
+end
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index ee7edb1516c..749d80ebfc2 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -98,6 +98,53 @@ describe User, :do_not_mock_admin_mode do
end
describe 'validations' do
+ describe 'password' do
+ let!(:user) { create(:user) }
+
+ before do
+ allow(Devise).to receive(:password_length).and_return(8..128)
+ allow(described_class).to receive(:password_length).and_return(10..130)
+ end
+
+ context 'length' do
+ it { is_expected.to validate_length_of(:password).is_at_least(10).is_at_most(130) }
+ end
+
+ context 'length validator' do
+ context 'for a short password' do
+ before do
+ user.password = user.password_confirmation = 'abc'
+ end
+
+ it 'does not run the default Devise password length validation' do
+ expect(user).to be_invalid
+ expect(user.errors.full_messages.join).not_to include('is too short (minimum is 8 characters)')
+ end
+
+ it 'runs the custom password length validator' do
+ expect(user).to be_invalid
+ expect(user.errors.full_messages.join).to include('is too short (minimum is 10 characters)')
+ end
+ end
+
+ context 'for a long password' do
+ before do
+ user.password = user.password_confirmation = 'a' * 140
+ end
+
+ it 'does not run the default Devise password length validation' do
+ expect(user).to be_invalid
+ expect(user.errors.full_messages.join).not_to include('is too long (maximum is 128 characters)')
+ end
+
+ it 'runs the custom password length validator' do
+ expect(user).to be_invalid
+ expect(user.errors.full_messages.join).to include('is too long (maximum is 130 characters)')
+ end
+ end
+ end
+ end
+
describe 'name' do
it { is_expected.to validate_presence_of(:name) }
it { is_expected.to validate_length_of(:name).is_at_most(128) }
@@ -142,7 +189,7 @@ describe User, :do_not_mock_admin_mode do
expect(user.namespace).to receive(:any_project_has_container_registry_tags?).and_return(true)
user.username = 'new_path'
expect(user).to be_invalid
- expect(user.errors.messages[:username].first).to match('cannot be changed if a personal project has container registry tags')
+ expect(user.errors.messages[:username].first).to eq(_('cannot be changed if a personal project has container registry tags.'))
end
end
@@ -461,6 +508,34 @@ describe User, :do_not_mock_admin_mode do
end
end
+ describe '.password_length' do
+ let(:password_length) { described_class.password_length }
+
+ it 'is expected to be a Range' do
+ expect(password_length).to be_a(Range)
+ end
+
+ context 'minimum value' do
+ before do
+ stub_application_setting(minimum_password_length: 101)
+ end
+
+ it 'is determined by the current value of `minimum_password_length` attribute of application_setting' do
+ expect(password_length.min).to eq(101)
+ end
+ end
+
+ context 'maximum value' do
+ before do
+ allow(Devise.password_length).to receive(:max).and_return(201)
+ end
+
+ it 'is determined by the current value of `Devise.password_length.max`' do
+ expect(password_length.max).to eq(201)
+ end
+ end
+ end
+
describe '.limit_to_todo_authors' do
context 'when filtering by todo authors' do
let(:user1) { create(:user) }
@@ -529,6 +604,35 @@ describe User, :do_not_mock_admin_mode do
.to contain_exactly(user)
end
end
+
+ describe '.with_expiring_and_not_notified_personal_access_tokens' do
+ let_it_be(:user1) { create(:user) }
+ let_it_be(:user2) { create(:user) }
+ let_it_be(:user3) { create(:user) }
+
+ let_it_be(:expired_token) { create(:personal_access_token, user: user1, expires_at: 2.days.ago) }
+ let_it_be(:revoked_token) { create(:personal_access_token, user: user1, revoked: true) }
+ let_it_be(:valid_token_and_notified) { create(:personal_access_token, user: user2, expires_at: 2.days.from_now, expire_notification_delivered: true) }
+ let_it_be(:valid_token1) { create(:personal_access_token, user: user2, expires_at: 2.days.from_now) }
+ let_it_be(:valid_token2) { create(:personal_access_token, user: user2, expires_at: 2.days.from_now) }
+ let(:users) { described_class.with_expiring_and_not_notified_personal_access_tokens(from) }
+
+ context 'in one day' do
+ let(:from) { 1.day.from_now }
+
+ it "doesn't include an user" do
+ expect(users).to be_empty
+ end
+ end
+
+ context 'in three days' do
+ let(:from) { 3.days.from_now }
+
+ it 'only includes user2' do
+ expect(users).to contain_exactly(user2)
+ end
+ end
+ end
end
describe "Respond to" do
@@ -2790,11 +2894,11 @@ describe User, :do_not_mock_admin_mode do
end
end
- describe '#full_private_access?' do
+ describe '#can_read_all_resources?' do
it 'returns false for regular user' do
user = build(:user)
- expect(user.full_private_access?).to be_falsy
+ expect(user.can_read_all_resources?).to be_falsy
end
context 'for admin user' do
@@ -2804,17 +2908,18 @@ describe User, :do_not_mock_admin_mode do
context 'when admin mode is disabled' do
it 'returns false' do
- expect(user.full_private_access?).to be_falsy
+ expect(user.can_read_all_resources?).to be_falsy
end
end
context 'when admin mode is enabled' do
before do
+ Gitlab::Auth::CurrentUserMode.new(user).request_admin_mode!
Gitlab::Auth::CurrentUserMode.new(user).enable_admin_mode!(password: user.password)
end
it 'returns true' do
- expect(user.full_private_access?).to be_truthy
+ expect(user.can_read_all_resources?).to be_truthy
end
end
end
@@ -3184,7 +3289,7 @@ describe User, :do_not_mock_admin_mode do
it 'causes the user save to fail' do
expect(user.update(username: new_username)).to be_falsey
- expect(user.namespace.errors.messages[:path].first).to eq('has already been taken')
+ expect(user.namespace.errors.messages[:path].first).to eq(_('has already been taken'))
end
it 'adds the namespace errors to the user' do
diff --git a/spec/policies/blob_policy_spec.rb b/spec/policies/blob_policy_spec.rb
new file mode 100644
index 00000000000..20c8a55f437
--- /dev/null
+++ b/spec/policies/blob_policy_spec.rb
@@ -0,0 +1,31 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe BlobPolicy do
+ include_context 'ProjectPolicyTable context'
+ include ProjectHelpers
+ using RSpec::Parameterized::TableSyntax
+
+ let(:project) { create(:project, :repository, project_level) }
+ let(:user) { create_user_from_membership(project, membership) }
+ let(:blob) { project.repository.blob_at(SeedRepo::FirstCommit::ID, 'README.md') }
+
+ subject(:policy) { described_class.new(user, blob) }
+
+ where(:project_level, :feature_access_level, :membership, :expected_count) do
+ permission_table_for_guest_feature_access_and_non_private_project_only
+ end
+
+ with_them do
+ it "grants permission" do
+ update_feature_access_level(project, feature_access_level)
+
+ if expected_count == 1
+ expect(policy).to be_allowed(:read_blob)
+ else
+ expect(policy).to be_disallowed(:read_blob)
+ end
+ end
+ end
+end
diff --git a/spec/policies/environment_policy_spec.rb b/spec/policies/environment_policy_spec.rb
index 3d0f250740c..63a9512afcd 100644
--- a/spec/policies/environment_policy_spec.rb
+++ b/spec/policies/environment_policy_spec.rb
@@ -68,7 +68,7 @@ describe EnvironmentPolicy do
nil | false
:guest | false
:reporter | false
- :developer | false
+ :developer | true
:maintainer | true
end
diff --git a/spec/policies/global_policy_spec.rb b/spec/policies/global_policy_spec.rb
index c18cc245468..f715ecae347 100644
--- a/spec/policies/global_policy_spec.rb
+++ b/spec/policies/global_policy_spec.rb
@@ -306,4 +306,22 @@ describe GlobalPolicy do
it { is_expected.not_to be_allowed(:use_slash_commands) }
end
end
+
+ describe 'create_personal_snippet' do
+ context 'when anonymous' do
+ let(:current_user) { nil }
+
+ it { is_expected.not_to be_allowed(:create_personal_snippet) }
+ end
+
+ context 'regular user' do
+ it { is_expected.to be_allowed(:create_personal_snippet) }
+ end
+
+ context 'when external' do
+ let(:current_user) { build(:user, :external) }
+
+ it { is_expected.not_to be_allowed(:create_personal_snippet) }
+ end
+ end
end
diff --git a/spec/policies/personal_snippet_policy_spec.rb b/spec/policies/personal_snippet_policy_spec.rb
index 36b4ac16cf0..0abdf7382be 100644
--- a/spec/policies/personal_snippet_policy_spec.rb
+++ b/spec/policies/personal_snippet_policy_spec.rb
@@ -11,8 +11,7 @@ describe PersonalSnippetPolicy do
let(:author_permissions) do
[
:update_personal_snippet,
- :admin_personal_snippet,
- :destroy_personal_snippet
+ :admin_personal_snippet
]
end
diff --git a/spec/policies/project_policy_spec.rb b/spec/policies/project_policy_spec.rb
index ab54d97f2a2..188eafadfc1 100644
--- a/spec/policies/project_policy_spec.rb
+++ b/spec/policies/project_policy_spec.rb
@@ -42,13 +42,13 @@ describe ProjectPolicy do
update_commit_status create_build update_build create_pipeline
update_pipeline create_merge_request_from create_wiki push_code
resolve_note create_container_image update_container_image destroy_container_image
- create_environment create_deployment update_deployment create_release update_release
+ create_environment update_environment create_deployment update_deployment create_release update_release
]
end
let(:base_maintainer_permissions) do
%i[
- push_to_delete_protected_branch update_project_snippet update_environment
+ push_to_delete_protected_branch update_project_snippet
admin_project_snippet admin_project_member admin_note admin_wiki admin_project
admin_commit_status admin_build admin_container_image
admin_pipeline admin_environment admin_deployment destroy_release add_cluster
@@ -307,6 +307,7 @@ describe ProjectPolicy do
context 'for a guest in a private project' do
let(:project) { create(:project, :private) }
+
subject { described_class.new(guest, project) }
it 'disallows the guest from reading the merge request and merge request iid' do
@@ -320,6 +321,7 @@ describe ProjectPolicy do
describe 'for unconfirmed user' do
let(:unconfirmed_user) { create(:user, confirmed_at: nil) }
+
subject { described_class.new(unconfirmed_user, project) }
it 'disallows to modify pipelines' do
diff --git a/spec/policies/project_snippet_policy_spec.rb b/spec/policies/project_snippet_policy_spec.rb
index 3c68d33b1f3..374636874ee 100644
--- a/spec/policies/project_snippet_policy_spec.rb
+++ b/spec/policies/project_snippet_policy_spec.rb
@@ -4,10 +4,12 @@ require 'spec_helper'
# Snippet visibility scenarios are included in more details in spec/support/snippet_visibility.rb
describe ProjectSnippetPolicy do
- let(:regular_user) { create(:user) }
- let(:external_user) { create(:user, :external) }
- let(:project) { create(:project, :public) }
- let(:snippet) { create(:project_snippet, snippet_visibility, project: project) }
+ let_it_be(:regular_user) { create(:user) }
+ let_it_be(:other_user) { create(:user) }
+ let_it_be(:external_user) { create(:user, :external) }
+ let_it_be(:project) { create(:project, :public) }
+ let(:snippet) { create(:project_snippet, snippet_visibility, project: project, author: author) }
+ let(:author) { other_user }
let(:author_permissions) do
[
:update_project_snippet,
@@ -17,6 +19,65 @@ describe ProjectSnippetPolicy do
subject { described_class.new(current_user, snippet) }
+ shared_examples 'regular user access rights' do
+ context 'project team member (non guest)' do
+ before do
+ project.add_developer(current_user)
+ end
+
+ it do
+ expect_allowed(:read_project_snippet, :create_note)
+ expect_disallowed(*author_permissions)
+ end
+ end
+
+ context 'project team member (guest)' do
+ before do
+ project.add_guest(current_user)
+ end
+
+ context 'not snippet author' do
+ it do
+ expect_allowed(:read_project_snippet, :create_note)
+ expect_disallowed(:admin_project_snippet)
+ end
+ end
+ end
+
+ context 'snippet author' do
+ let(:author) { current_user }
+
+ context 'project member (non guest)' do
+ before do
+ project.add_developer(current_user)
+ end
+
+ it do
+ expect_allowed(:read_project_snippet, :create_note)
+ expect_allowed(*author_permissions)
+ end
+ end
+
+ context 'project member (guest)' do
+ before do
+ project.add_guest(current_user)
+ end
+
+ it do
+ expect_allowed(:read_project_snippet, :create_note)
+ expect_disallowed(:admin_project_snippet)
+ end
+ end
+
+ context 'not a project member' do
+ it do
+ expect_allowed(:read_project_snippet, :create_note)
+ expect_disallowed(:admin_project_snippet)
+ end
+ end
+ end
+ end
+
context 'public snippet' do
let(:snippet_visibility) { :public }
@@ -36,6 +97,8 @@ describe ProjectSnippetPolicy do
expect_allowed(:read_project_snippet, :create_note)
expect_disallowed(*author_permissions)
end
+
+ it_behaves_like 'regular user access rights'
end
context 'external user' do
@@ -45,6 +108,17 @@ describe ProjectSnippetPolicy do
expect_allowed(:read_project_snippet, :create_note)
expect_disallowed(*author_permissions)
end
+
+ context 'project team member' do
+ before do
+ project.add_developer(external_user)
+ end
+
+ it do
+ expect_allowed(:read_project_snippet, :create_note)
+ expect_disallowed(*author_permissions)
+ end
+ end
end
end
@@ -67,6 +141,8 @@ describe ProjectSnippetPolicy do
expect_allowed(:read_project_snippet, :create_note)
expect_disallowed(*author_permissions)
end
+
+ it_behaves_like 'regular user access rights'
end
context 'external user' do
@@ -110,33 +186,20 @@ describe ProjectSnippetPolicy do
expect_disallowed(*author_permissions)
end
- context 'snippet author' do
- let(:snippet) { create(:project_snippet, :private, author: regular_user, project: project) }
-
- it do
- expect_allowed(:read_project_snippet, :create_note)
- expect_allowed(*author_permissions)
- end
- end
+ it_behaves_like 'regular user access rights'
+ end
- context 'project team member normal user' do
- before do
- project.add_developer(regular_user)
- end
+ context 'external user' do
+ let(:current_user) { external_user }
- it do
- expect_allowed(:read_project_snippet, :create_note)
- expect_disallowed(*author_permissions)
- end
+ it do
+ expect_disallowed(:read_project_snippet, :create_note)
+ expect_disallowed(*author_permissions)
end
- end
- context 'external user' do
context 'project team member' do
- let(:current_user) { external_user }
-
before do
- project.add_developer(external_user)
+ project.add_developer(current_user)
end
it do
diff --git a/spec/policies/wiki_page_policy_spec.rb b/spec/policies/wiki_page_policy_spec.rb
new file mode 100644
index 00000000000..e550ccf6d65
--- /dev/null
+++ b/spec/policies/wiki_page_policy_spec.rb
@@ -0,0 +1,31 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe WikiPagePolicy do
+ include_context 'ProjectPolicyTable context'
+ include ProjectHelpers
+ using RSpec::Parameterized::TableSyntax
+
+ let(:project) { create(:project, :wiki_repo, project_level) }
+ let(:user) { create_user_from_membership(project, membership) }
+ let(:wiki_page) { create(:wiki_page, wiki: project.wiki) }
+
+ subject(:policy) { described_class.new(user, wiki_page) }
+
+ where(:project_level, :feature_access_level, :membership, :expected_count) do
+ permission_table_for_guest_feature_access
+ end
+
+ with_them do
+ it "grants permission" do
+ update_feature_access_level(project, feature_access_level)
+
+ if expected_count == 1
+ expect(policy).to be_allowed(:read_wiki_page)
+ else
+ expect(policy).to be_disallowed(:read_wiki_page)
+ end
+ end
+ end
+end
diff --git a/spec/presenters/ci/legacy_stage_presenter_spec.rb b/spec/presenters/ci/legacy_stage_presenter_spec.rb
new file mode 100644
index 00000000000..ccf4e48de6e
--- /dev/null
+++ b/spec/presenters/ci/legacy_stage_presenter_spec.rb
@@ -0,0 +1,47 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Ci::LegacyStagePresenter do
+ let(:legacy_stage) { create(:ci_stage) }
+ let(:presenter) { described_class.new(legacy_stage) }
+
+ let!(:build) { create(:ci_build, :tags, :artifacts, pipeline: legacy_stage.pipeline, stage: legacy_stage.name) }
+ let!(:retried_build) { create(:ci_build, :tags, :artifacts, :retried, pipeline: legacy_stage.pipeline, stage: legacy_stage.name) }
+
+ before do
+ create(:generic_commit_status, pipeline: legacy_stage.pipeline, stage: legacy_stage.name)
+ end
+
+ describe '#latest_ordered_statuses' do
+ subject(:latest_ordered_statuses) { presenter.latest_ordered_statuses }
+
+ it 'preloads build tags' do
+ expect(latest_ordered_statuses.second.association(:tags)).to be_loaded
+ end
+
+ it 'preloads build artifacts archive' do
+ expect(latest_ordered_statuses.second.association(:job_artifacts_archive)).to be_loaded
+ end
+
+ it 'preloads build artifacts metadata' do
+ expect(latest_ordered_statuses.second.association(:metadata)).to be_loaded
+ end
+ end
+
+ describe '#retried_ordered_statuses' do
+ subject(:retried_ordered_statuses) { presenter.retried_ordered_statuses }
+
+ it 'preloads build tags' do
+ expect(retried_ordered_statuses.first.association(:tags)).to be_loaded
+ end
+
+ it 'preloads build artifacts archive' do
+ expect(retried_ordered_statuses.first.association(:job_artifacts_archive)).to be_loaded
+ end
+
+ it 'preloads build artifacts metadata' do
+ expect(retried_ordered_statuses.first.association(:metadata)).to be_loaded
+ end
+ end
+end
diff --git a/spec/presenters/ci/pipeline_presenter_spec.rb b/spec/presenters/ci/pipeline_presenter_spec.rb
index eca5d3e05fe..fd391478eb4 100644
--- a/spec/presenters/ci/pipeline_presenter_spec.rb
+++ b/spec/presenters/ci/pipeline_presenter_spec.rb
@@ -62,13 +62,19 @@ describe Ci::PipelinePresenter do
end
end
- context '#failure_reason' do
- context 'when pipeline has failure reason' do
- it 'represents a failure reason sentence' do
- pipeline.failure_reason = :config_error
+ describe '#failure_reason' do
+ context 'when pipeline has a failure reason' do
+ ::Ci::PipelineEnums.failure_reasons.keys.each do |failure_reason|
+ context "when failure reason is #{failure_reason}" do
+ before do
+ pipeline.failure_reason = failure_reason
+ end
- expect(presenter.failure_reason)
- .to eq 'CI/CD YAML configuration error!'
+ it 'represents a failure reason sentence' do
+ expect(presenter.failure_reason).to be_an_instance_of(String)
+ expect(presenter.failure_reason).not_to eq(failure_reason.to_s)
+ end
+ end
end
end
diff --git a/spec/presenters/clusters/cluster_presenter_spec.rb b/spec/presenters/clusters/cluster_presenter_spec.rb
index 8bc5374f2db..6a1360807b7 100644
--- a/spec/presenters/clusters/cluster_presenter_spec.rb
+++ b/spec/presenters/clusters/cluster_presenter_spec.rb
@@ -153,11 +153,42 @@ describe Clusters::ClusterPresenter do
end
end
- describe '#gke_cluster_url' do
- subject { described_class.new(cluster).gke_cluster_url }
+ describe '#provider_label' do
+ let(:cluster) { create(:cluster, provider_type: provider_type) }
- it { is_expected.to include(cluster.provider.zone) }
- it { is_expected.to include(cluster.name) }
+ subject { described_class.new(cluster).provider_label }
+
+ context 'AWS provider' do
+ let(:provider_type) { :aws }
+
+ it { is_expected.to eq('Elastic Kubernetes Service') }
+ end
+
+ context 'GCP provider' do
+ let(:provider_type) { :gcp }
+
+ it { is_expected.to eq('Google Kubernetes Engine') }
+ end
+ end
+
+ describe '#provider_management_url' do
+ let(:cluster) { provider.cluster }
+
+ subject { described_class.new(cluster).provider_management_url }
+
+ context 'AWS provider' do
+ let(:provider) { create(:cluster_provider_aws) }
+
+ it { is_expected.to include(provider.region) }
+ it { is_expected.to include(cluster.name) }
+ end
+
+ context 'GCP provider' do
+ let(:provider) { create(:cluster_provider_gcp) }
+
+ it { is_expected.to include(provider.zone) }
+ it { is_expected.to include(cluster.name) }
+ end
end
describe '#cluster_type_description' do
diff --git a/spec/presenters/conversational_development_index/metric_presenter_spec.rb b/spec/presenters/dev_ops_score/metric_presenter_spec.rb
index ac18d5203e5..b6eab3f2e74 100644
--- a/spec/presenters/conversational_development_index/metric_presenter_spec.rb
+++ b/spec/presenters/dev_ops_score/metric_presenter_spec.rb
@@ -2,10 +2,10 @@
require 'spec_helper'
-describe ConversationalDevelopmentIndex::MetricPresenter do
+describe DevOpsScore::MetricPresenter do
subject { described_class.new(metric) }
- let(:metric) { build(:conversational_development_index_metric) }
+ let(:metric) { build(:dev_ops_score_metric) }
describe '#cards' do
it 'includes instance score, leader score and percentage score' do
diff --git a/spec/presenters/group_clusterable_presenter_spec.rb b/spec/presenters/group_clusterable_presenter_spec.rb
index 11a8decc9cc..d40ca856f7b 100644
--- a/spec/presenters/group_clusterable_presenter_spec.rb
+++ b/spec/presenters/group_clusterable_presenter_spec.rb
@@ -83,6 +83,12 @@ describe GroupClusterablePresenter do
it { is_expected.to eq(update_applications_group_cluster_path(group, cluster, application)) }
end
+ describe '#clear_cluster_cache_path' do
+ subject { presenter.clear_cluster_cache_path(cluster) }
+
+ it { is_expected.to eq(clear_cache_group_cluster_path(group, cluster)) }
+ end
+
describe '#cluster_path' do
subject { presenter.cluster_path(cluster) }
diff --git a/spec/presenters/hooks/project_hook_presenter_spec.rb b/spec/presenters/hooks/project_hook_presenter_spec.rb
new file mode 100644
index 00000000000..773e8ccf51e
--- /dev/null
+++ b/spec/presenters/hooks/project_hook_presenter_spec.rb
@@ -0,0 +1,29 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe ProjectHookPresenter do
+ let(:web_hook_log) { create(:web_hook_log) }
+ let(:project) { web_hook_log.web_hook.project }
+ let(:web_hook) { web_hook_log.web_hook }
+
+ describe '#logs_details_path' do
+ subject { web_hook.present.logs_details_path(web_hook_log) }
+
+ let(:expected_path) do
+ "/#{project.namespace.path}/#{project.name}/hooks/#{web_hook.id}/hook_logs/#{web_hook_log.id}"
+ end
+
+ it { is_expected.to eq(expected_path) }
+ end
+
+ describe '#logs_retry_path' do
+ subject { web_hook.present.logs_details_path(web_hook_log) }
+
+ let(:expected_path) do
+ "/#{project.namespace.path}/#{project.name}/hooks/#{web_hook.id}/hook_logs/#{web_hook_log.id}"
+ end
+
+ it { is_expected.to eq(expected_path) }
+ end
+end
diff --git a/spec/presenters/hooks/service_hook_presenter_spec.rb b/spec/presenters/hooks/service_hook_presenter_spec.rb
new file mode 100644
index 00000000000..bea57768e3e
--- /dev/null
+++ b/spec/presenters/hooks/service_hook_presenter_spec.rb
@@ -0,0 +1,30 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe ServiceHookPresenter do
+ let(:web_hook_log) { create(:web_hook_log, web_hook: service_hook) }
+ let(:service_hook) { create(:service_hook, service: service) }
+ let(:service) { create(:drone_ci_service, project: project) }
+ let(:project) { create(:project) }
+
+ describe '#logs_details_path' do
+ subject { service_hook.present.logs_details_path(web_hook_log) }
+
+ let(:expected_path) do
+ "/#{project.namespace.path}/#{project.name}/-/services/#{service.to_param}/hook_logs/#{web_hook_log.id}"
+ end
+
+ it { is_expected.to eq(expected_path) }
+ end
+
+ describe '#logs_retry_path' do
+ subject { service_hook.present.logs_retry_path(web_hook_log) }
+
+ let(:expected_path) do
+ "/#{project.namespace.path}/#{project.name}/-/services/#{service.to_param}/hook_logs/#{web_hook_log.id}/retry"
+ end
+
+ it { is_expected.to eq(expected_path) }
+ end
+end
diff --git a/spec/presenters/instance_clusterable_presenter_spec.rb b/spec/presenters/instance_clusterable_presenter_spec.rb
index 9f1268379f5..4265e2fcb69 100644
--- a/spec/presenters/instance_clusterable_presenter_spec.rb
+++ b/spec/presenters/instance_clusterable_presenter_spec.rb
@@ -21,17 +21,9 @@ describe InstanceClusterablePresenter do
it { is_expected.to eq(authorize_aws_role_admin_clusters_path) }
end
- describe '#revoke_aws_role_path' do
- subject { described_class.new(instance).revoke_aws_role_path }
+ describe '#clear_cluster_cache_path' do
+ subject { presenter.clear_cluster_cache_path(cluster) }
- it { is_expected.to eq(revoke_aws_role_admin_clusters_path) }
- end
-
- describe '#aws_api_proxy_path' do
- let(:resource) { 'resource' }
-
- subject { described_class.new(instance).aws_api_proxy_path(resource) }
-
- it { is_expected.to eq(aws_proxy_admin_clusters_path(resource: resource)) }
+ it { is_expected.to eq(clear_cache_admin_cluster_path(cluster)) }
end
end
diff --git a/spec/presenters/label_presenter_spec.rb b/spec/presenters/label_presenter_spec.rb
index d566da7c872..e9f9657490d 100644
--- a/spec/presenters/label_presenter_spec.rb
+++ b/spec/presenters/label_presenter_spec.rb
@@ -41,6 +41,7 @@ describe LabelPresenter do
describe '#filter_path' do
context 'with group as context subject' do
let(:label_in_group) { build_stubbed(:label, project: project).present(issuable_subject: group) }
+
subject { label_in_group.filter_path }
it { is_expected.to eq(issues_group_path(group, label_name: [label_in_group.title])) }
diff --git a/spec/presenters/project_clusterable_presenter_spec.rb b/spec/presenters/project_clusterable_presenter_spec.rb
index 441c2a50fea..b3dad4abde5 100644
--- a/spec/presenters/project_clusterable_presenter_spec.rb
+++ b/spec/presenters/project_clusterable_presenter_spec.rb
@@ -83,6 +83,12 @@ describe ProjectClusterablePresenter do
it { is_expected.to eq(update_applications_project_cluster_path(project, cluster, application)) }
end
+ describe '#clear_cluster_cache_path' do
+ subject { presenter.clear_cluster_cache_path(cluster) }
+
+ it { is_expected.to eq(clear_cache_project_cluster_path(project, cluster)) }
+ end
+
describe '#cluster_path' do
subject { presenter.cluster_path(cluster) }
diff --git a/spec/presenters/project_presenter_spec.rb b/spec/presenters/project_presenter_spec.rb
index ce095d2225f..318024bacd6 100644
--- a/spec/presenters/project_presenter_spec.rb
+++ b/spec/presenters/project_presenter_spec.rb
@@ -436,6 +436,7 @@ describe ProjectPresenter do
describe '#repo_statistics_buttons' do
let(:presenter) { described_class.new(project, current_user: user) }
+
subject(:empty_repo_statistics_buttons) { presenter.empty_repo_statistics_buttons }
before do
diff --git a/spec/presenters/projects/settings/deploy_keys_presenter_spec.rb b/spec/presenters/projects/settings/deploy_keys_presenter_spec.rb
index de58733c8ea..b9cb60e414f 100644
--- a/spec/presenters/projects/settings/deploy_keys_presenter_spec.rb
+++ b/spec/presenters/projects/settings/deploy_keys_presenter_spec.rb
@@ -5,11 +5,6 @@ require 'spec_helper'
describe Projects::Settings::DeployKeysPresenter do
let(:project) { create(:project) }
let(:user) { create(:user) }
- let(:deploy_key) { create(:deploy_key, public: true) }
-
- let!(:deploy_keys_project) do
- create(:deploy_keys_project, project: project, deploy_key: deploy_key)
- end
subject(:presenter) do
described_class.new(project, current_user: user)
@@ -20,6 +15,12 @@ describe Projects::Settings::DeployKeysPresenter do
end
describe '#enabled_keys' do
+ let!(:deploy_key) { create(:deploy_key, public: true) }
+
+ let!(:deploy_keys_project) do
+ create(:deploy_keys_project, project: project, deploy_key: deploy_key)
+ end
+
it 'returns currently enabled keys' do
expect(presenter.enabled_keys).to eq [deploy_keys_project.deploy_key]
end
@@ -53,4 +54,54 @@ describe Projects::Settings::DeployKeysPresenter do
expect(presenter.available_project_keys_size).to eq(1)
end
end
+
+ context 'prevent N + 1 queries' do
+ before do
+ create_records
+
+ project.add_maintainer(user)
+ end
+
+ def create_records
+ other_project = create(:project)
+ other_project.add_maintainer(user)
+
+ create(:deploy_keys_project, project: project, deploy_key: create(:deploy_key))
+ create(:deploy_keys_project, project: other_project, deploy_key: create(:deploy_key))
+ create(:deploy_key, public: true)
+ end
+
+ def execute_with_query_count
+ ActiveRecord::QueryRecorder.new { execute_presenter }.count
+ end
+
+ def execute_presenter
+ described_class.new(project, current_user: user).as_json
+ end
+
+ it 'returns correct counts' do
+ result = execute_presenter
+
+ expect(result[:enabled_keys].size).to eq(1)
+ expect(result[:available_project_keys].size).to eq(1)
+ expect(result[:public_keys].size).to eq(1)
+ end
+
+ it 'does not increase the query count' do
+ execute_presenter # make sure everything is cached
+
+ count_before = execute_with_query_count
+
+ 3.times { create_records }
+
+ count_after = execute_with_query_count
+
+ expect(count_after).to eq(count_before)
+
+ result = execute_presenter
+ expect(result[:enabled_keys].size).to eq(4)
+ expect(result[:available_project_keys].size).to eq(4)
+ expect(result[:public_keys].size).to eq(4)
+ end
+ end
end
diff --git a/spec/presenters/release_presenter_spec.rb b/spec/presenters/release_presenter_spec.rb
index 4d9fa7a4d75..2f978b0a036 100644
--- a/spec/presenters/release_presenter_spec.rb
+++ b/spec/presenters/release_presenter_spec.rb
@@ -90,10 +90,8 @@ describe ReleasePresenter do
is_expected.to match /#{edit_project_release_url(project, release)}/
end
- context 'when release_edit_page feature flag is disabled' do
- before do
- stub_feature_flags(release_edit_page: false)
- end
+ context 'when a user is not allowed to update a release' do
+ let(:presenter) { described_class.new(release, current_user: guest) }
it { is_expected.to be_nil }
end
diff --git a/spec/presenters/sentry_detailed_error_presenter_spec.rb b/spec/presenters/sentry_detailed_error_presenter_spec.rb
new file mode 100644
index 00000000000..e483b6d41a1
--- /dev/null
+++ b/spec/presenters/sentry_detailed_error_presenter_spec.rb
@@ -0,0 +1,29 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe SentryDetailedErrorPresenter do
+ let(:error) { build(:detailed_error_tracking_error) }
+ let(:presenter) { described_class.new(error) }
+
+ describe '#frequency' do
+ subject { presenter.frequency }
+
+ it 'returns an array of frequency structs' do
+ expect(subject).to include(a_kind_of(SentryDetailedErrorPresenter::FrequencyStruct))
+ end
+
+ it 'converts the times into UTC time objects' do
+ time = subject.first.time
+
+ expect(time).to be_a(Time)
+ expect(time.strftime('%z')).to eq '+0000'
+ end
+
+ it 'returns the correct counts' do
+ count = subject.first.count
+
+ expect(count).to eq error.frequency.first[1]
+ end
+ end
+end
diff --git a/spec/presenters/snippet_presenter_spec.rb b/spec/presenters/snippet_presenter_spec.rb
new file mode 100644
index 00000000000..87f2220979c
--- /dev/null
+++ b/spec/presenters/snippet_presenter_spec.rb
@@ -0,0 +1,146 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe SnippetPresenter do
+ include Gitlab::Routing.url_helpers
+
+ let_it_be(:user) { create(:user) }
+ let_it_be(:personal_snippet) { create(:personal_snippet, author: user) }
+ let_it_be(:project_snippet) { create(:project_snippet, author: user) }
+
+ let(:project) { project_snippet.project }
+ let(:presenter) { described_class.new(snippet, current_user: user) }
+
+ before do
+ project.add_developer(user)
+ end
+
+ describe '#web_url' do
+ subject { presenter.web_url }
+
+ context 'with PersonalSnippet' do
+ let(:snippet) { personal_snippet }
+
+ it 'returns snippet web url' do
+ expect(subject).to match "/snippets/#{snippet.id}"
+ end
+ end
+
+ context 'with ProjectSnippet' do
+ let(:snippet) { project_snippet }
+
+ it 'returns snippet web url' do
+ expect(subject).to match "/#{project.full_path}/snippets/#{snippet.id}"
+ end
+ end
+ end
+
+ describe '#raw_url' do
+ subject { presenter.raw_url }
+
+ context 'with PersonalSnippet' do
+ let(:snippet) { personal_snippet }
+
+ it 'returns snippet web url' do
+ expect(subject).to match "/snippets/#{snippet.id}/raw"
+ end
+ end
+
+ context 'with ProjectSnippet' do
+ let(:snippet) { project_snippet }
+
+ it 'returns snippet web url' do
+ expect(subject).to match "/#{project.full_path}/snippets/#{snippet.id}/raw"
+ end
+ end
+ end
+
+ describe '#can_read_snippet?' do
+ subject { presenter.can_read_snippet? }
+
+ context 'with PersonalSnippet' do
+ let(:snippet) { personal_snippet }
+
+ it 'checks read_personal_snippet' do
+ expect(presenter).to receive(:can?).with(user, :read_personal_snippet, snippet)
+
+ subject
+ end
+ end
+
+ context 'with ProjectSnippet' do
+ let(:snippet) { project_snippet }
+
+ it 'checks read_project_snippet ' do
+ expect(presenter).to receive(:can?).with(user, :read_project_snippet, snippet)
+
+ subject
+ end
+ end
+ end
+
+ describe '#can_update_snippet?' do
+ subject { presenter.can_update_snippet? }
+
+ context 'with PersonalSnippet' do
+ let(:snippet) { personal_snippet }
+
+ it 'checks update_personal_snippet' do
+ expect(presenter).to receive(:can?).with(user, :update_personal_snippet, snippet)
+
+ subject
+ end
+ end
+
+ context 'with ProjectSnippet' do
+ let(:snippet) { project_snippet }
+
+ it 'checks update_project_snippet ' do
+ expect(presenter).to receive(:can?).with(user, :update_project_snippet, snippet)
+
+ subject
+ end
+ end
+ end
+
+ describe '#can_admin_snippet?' do
+ subject { presenter.can_admin_snippet? }
+
+ context 'with PersonalSnippet' do
+ let(:snippet) { personal_snippet }
+
+ it 'checks admin_personal_snippet' do
+ expect(presenter).to receive(:can?).with(user, :admin_personal_snippet, snippet)
+
+ subject
+ end
+ end
+
+ context 'with ProjectSnippet' do
+ let(:snippet) { project_snippet }
+
+ it 'checks admin_project_snippet ' do
+ expect(presenter).to receive(:can?).with(user, :admin_project_snippet, snippet)
+
+ subject
+ end
+ end
+ end
+
+ describe '#can_report_as_spam' do
+ let(:snippet) { personal_snippet }
+
+ subject { presenter.can_report_as_spam? }
+
+ it 'returns false if the user cannot submit the snippet as spam' do
+ expect(subject).to be_falsey
+ end
+
+ it 'returns true if the user can submit the snippet as spam' do
+ allow(snippet).to receive(:submittable_as_spam_by?).and_return(true)
+
+ expect(subject).to be_truthy
+ end
+ end
+end
diff --git a/spec/presenters/web_hook_log_presenter_spec.rb b/spec/presenters/web_hook_log_presenter_spec.rb
new file mode 100644
index 00000000000..8812a0ba594
--- /dev/null
+++ b/spec/presenters/web_hook_log_presenter_spec.rb
@@ -0,0 +1,47 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe WebHookLogPresenter do
+ include Gitlab::Routing.url_helpers
+
+ describe '#details_path' do
+ let(:web_hook_log) { create(:web_hook_log, web_hook: web_hook) }
+ let(:project) { create(:project) }
+
+ subject { web_hook_log.present.details_path }
+
+ context 'project hook' do
+ let(:web_hook) { create(:project_hook, project: project) }
+
+ it { is_expected.to eq(project_hook_hook_log_path(project, web_hook, web_hook_log)) }
+ end
+
+ context 'service hook' do
+ let(:web_hook) { create(:service_hook, service: service) }
+ let(:service) { create(:drone_ci_service, project: project) }
+
+ it { is_expected.to eq(project_service_hook_log_path(project, service, web_hook_log)) }
+ end
+ end
+
+ describe '#retry_path' do
+ let(:web_hook_log) { create(:web_hook_log, web_hook: web_hook) }
+ let(:project) { create(:project) }
+
+ subject { web_hook_log.present.retry_path }
+
+ context 'project hook' do
+ let(:web_hook) { create(:project_hook, project: project) }
+
+ it { is_expected.to eq(retry_project_hook_hook_log_path(project, web_hook, web_hook_log)) }
+ end
+
+ context 'service hook' do
+ let(:web_hook) { create(:service_hook, service: service) }
+ let(:service) { create(:drone_ci_service, project: project) }
+
+ it { is_expected.to eq(retry_project_service_hook_log_path(project, service, web_hook_log)) }
+ end
+ end
+end
diff --git a/spec/requests/api/award_emoji_spec.rb b/spec/requests/api/award_emoji_spec.rb
index 80040cddd4d..19a34314bb8 100644
--- a/spec/requests/api/award_emoji_spec.rb
+++ b/spec/requests/api/award_emoji_spec.rb
@@ -9,6 +9,7 @@ describe API::AwardEmoji do
set(:award_emoji) { create(:award_emoji, awardable: issue, user: user) }
let!(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
let!(:downvote) { create(:award_emoji, :downvote, awardable: merge_request, user: user) }
+
set(:note) { create(:note, project: project, noteable: issue) }
before do
diff --git a/spec/requests/api/badges_spec.rb b/spec/requests/api/badges_spec.rb
index ea0a7d4c9b7..d931dea01e7 100644
--- a/spec/requests/api/badges_spec.rb
+++ b/spec/requests/api/badges_spec.rb
@@ -81,6 +81,7 @@ describe API::Badges do
get api("/#{source_type.pluralize}/#{source.id}/badges/#{badge.id}", user)
expect(response).to have_gitlab_http_status(200)
+ expect(json_response['name']).to eq(badge.name)
expect(json_response['id']).to eq(badge.id)
expect(json_response['link_url']).to eq(badge.link_url)
expect(json_response['rendered_link_url']).to eq(badge.rendered_link_url)
@@ -98,6 +99,7 @@ describe API::Badges do
include_context 'source helpers'
let(:source) { get_source(source_type) }
+ let(:example_name) { 'BadgeName' }
let(:example_url) { 'http://www.example.com' }
let(:example_url2) { 'http://www.example1.com' }
@@ -105,7 +107,7 @@ describe API::Badges do
it_behaves_like 'a 404 response when source is private' do
let(:route) do
post api("/#{source_type.pluralize}/#{source.id}/badges", stranger),
- params: { link_url: example_url, image_url: example_url2 }
+ params: { name: example_name, link_url: example_url, image_url: example_url2 }
end
end
@@ -128,11 +130,12 @@ describe API::Badges do
it 'creates a new badge' do
expect do
post api("/#{source_type.pluralize}/#{source.id}/badges", maintainer),
- params: { link_url: example_url, image_url: example_url2 }
+ params: { name: example_name, link_url: example_url, image_url: example_url2 }
expect(response).to have_gitlab_http_status(201)
end.to change { source.badges.count }.by(1)
+ expect(json_response['name']).to eq(example_name)
expect(json_response['link_url']).to eq(example_url)
expect(json_response['image_url']).to eq(example_url2)
expect(json_response['kind']).to eq source_type
@@ -169,6 +172,7 @@ describe API::Badges do
context "with :sources == #{source_type.pluralize}" do
let(:badge) { source.badges.first }
+ let(:example_name) { 'BadgeName' }
let(:example_url) { 'http://www.example.com' }
let(:example_url2) { 'http://www.example1.com' }
@@ -197,9 +201,10 @@ describe API::Badges do
context 'when authenticated as a maintainer/owner' do
it 'updates the member', :quarantine do
put api("/#{source_type.pluralize}/#{source.id}/badges/#{badge.id}", maintainer),
- params: { link_url: example_url, image_url: example_url2 }
+ params: { name: example_name, link_url: example_url, image_url: example_url2 }
expect(response).to have_gitlab_http_status(200)
+ expect(json_response['name']).to eq(example_name)
expect(json_response['link_url']).to eq(example_url)
expect(json_response['image_url']).to eq(example_url2)
expect(json_response['kind']).to eq source_type
@@ -297,7 +302,7 @@ describe API::Badges do
expect(response).to have_gitlab_http_status(200)
- expect(json_response.keys).to contain_exactly('link_url', 'rendered_link_url', 'image_url', 'rendered_image_url')
+ expect(json_response.keys).to contain_exactly('name', 'link_url', 'rendered_link_url', 'image_url', 'rendered_image_url')
expect(json_response['link_url']).to eq(example_url)
expect(json_response['image_url']).to eq(example_url2)
expect(json_response['rendered_link_url']).to eq(example_url)
@@ -351,9 +356,9 @@ describe API::Badges do
project.add_developer(developer)
project.add_maintainer(maintainer)
project.request_access(access_requester)
- project.project_badges << build(:project_badge, project: project)
- project.project_badges << build(:project_badge, project: project)
- project_group.badges << build(:group_badge, group: group)
+ project.project_badges << build(:project_badge, project: project, name: 'ExampleBadge1')
+ project.project_badges << build(:project_badge, project: project, name: 'ExampleBadge2')
+ project_group.badges << build(:group_badge, group: group, name: 'ExampleBadge3')
end
end
@@ -362,8 +367,8 @@ describe API::Badges do
group.add_developer(developer)
group.add_owner(maintainer)
group.request_access(access_requester)
- group.badges << build(:group_badge, group: group)
- group.badges << build(:group_badge, group: group)
+ group.badges << build(:group_badge, group: group, name: 'ExampleBadge4')
+ group.badges << build(:group_badge, group: group, name: 'ExampleBadge5')
end
end
end
diff --git a/spec/requests/api/boards_spec.rb b/spec/requests/api/boards_spec.rb
index 8a67e956165..510ef9d7d0a 100644
--- a/spec/requests/api/boards_spec.rb
+++ b/spec/requests/api/boards_spec.rb
@@ -69,6 +69,7 @@ describe API::Boards do
set(:group) { create(:group) }
set(:board_parent) { create(:group, parent: group ) }
let(:url) { "/groups/#{board_parent.id}/boards/#{board.id}/lists" }
+
set(:board) { create(:board, group: board_parent) }
it 'creates a new board list for ancestor group labels' do
diff --git a/spec/requests/api/branches_spec.rb b/spec/requests/api/branches_spec.rb
index 675b06b057c..99374d28324 100644
--- a/spec/requests/api/branches_spec.rb
+++ b/spec/requests/api/branches_spec.rb
@@ -131,7 +131,7 @@ describe API::Branches do
end
new_branch_name = 'protected-branch'
- CreateBranchService.new(project, current_user).execute(new_branch_name, 'master')
+ ::Branches::CreateService.new(project, current_user).execute(new_branch_name, 'master')
create(:protected_branch, name: new_branch_name, project: project)
expect do
@@ -629,7 +629,9 @@ describe API::Branches do
describe 'DELETE /projects/:id/repository/branches/:branch' do
before do
- allow_any_instance_of(Repository).to receive(:rm_branch).and_return(true)
+ allow_next_instance_of(Repository) do |instance|
+ allow(instance).to receive(:rm_branch).and_return(true)
+ end
end
it 'removes branch' do
@@ -666,7 +668,9 @@ describe API::Branches do
describe 'DELETE /projects/:id/repository/merged_branches' do
before do
- allow_any_instance_of(Repository).to receive(:rm_branch).and_return(true)
+ allow_next_instance_of(Repository) do |instance|
+ allow(instance).to receive(:rm_branch).and_return(true)
+ end
end
it 'returns 202 with json body' do
diff --git a/spec/requests/api/broadcast_messages_spec.rb b/spec/requests/api/broadcast_messages_spec.rb
index 541acb29857..9dc639a25a2 100644
--- a/spec/requests/api/broadcast_messages_spec.rb
+++ b/spec/requests/api/broadcast_messages_spec.rb
@@ -29,7 +29,7 @@ describe API::BroadcastMessages do
expect(response).to include_pagination_headers
expect(json_response).to be_kind_of(Array)
expect(json_response.first.keys)
- .to match_array(%w(id message starts_at ends_at color font active))
+ .to match_array(%w(id message starts_at ends_at color font active target_path))
end
end
@@ -52,7 +52,7 @@ describe API::BroadcastMessages do
expect(response).to have_gitlab_http_status(200)
expect(json_response['id']).to eq message.id
expect(json_response.keys)
- .to match_array(%w(id message starts_at ends_at color font active))
+ .to match_array(%w(id message starts_at ends_at color font active target_path))
end
end
@@ -100,6 +100,15 @@ describe API::BroadcastMessages do
expect(json_response['color']).to eq attrs[:color]
expect(json_response['font']).to eq attrs[:font]
end
+
+ it 'accepts a target path' do
+ attrs = attributes_for(:broadcast_message, target_path: "*/welcome")
+
+ post api('/broadcast_messages', admin), params: attrs
+
+ expect(response).to have_gitlab_http_status(201)
+ expect(json_response['target_path']).to eq attrs[:target_path]
+ end
end
end
@@ -150,6 +159,15 @@ describe API::BroadcastMessages do
expect(response).to have_gitlab_http_status(200)
expect { message.reload }.to change { message.message }.to('new message')
end
+
+ it 'accepts a new target_path' do
+ attrs = { target_path: '*/welcome' }
+
+ put api("/broadcast_messages/#{message.id}", admin), params: attrs
+
+ expect(response).to have_gitlab_http_status(200)
+ expect(json_response['target_path']).to eq attrs[:target_path]
+ end
end
end
diff --git a/spec/requests/api/deployments_spec.rb b/spec/requests/api/deployments_spec.rb
index 26849c0991d..3dc8e5749d4 100644
--- a/spec/requests/api/deployments_spec.rb
+++ b/spec/requests/api/deployments_spec.rb
@@ -30,40 +30,47 @@ describe API::Deployments do
expect(json_response.last['iid']).to eq(deployment_3.iid)
end
- describe 'ordering' do
- using RSpec::Parameterized::TableSyntax
+ context 'with updated_at filters specified' do
+ it 'returns projects deployments with last update in specified datetime range' do
+ get api("/projects/#{project.id}/deployments", user), params: { updated_before: 30.minutes.ago, updated_after: 90.minutes.ago }
- let(:order_by) { nil }
- let(:sort) { nil }
+ expect(response).to have_gitlab_http_status(:ok)
+ expect(response).to include_pagination_headers
+ expect(json_response.first['id']).to eq(deployment_3.id)
+ end
+ end
+
+ describe 'ordering' do
+ let(:order_by) { 'iid' }
+ let(:sort) { 'desc' }
subject { get api("/projects/#{project.id}/deployments?order_by=#{order_by}&sort=#{sort}", user) }
+ before do
+ subject
+ end
+
def expect_deployments(ordered_deployments)
- json_response.each_with_index do |deployment_json, index|
- expect(deployment_json['id']).to eq(public_send(ordered_deployments[index]).id)
- end
+ expect(json_response.map { |d| d['id'] }).to eq(ordered_deployments.map(&:id))
end
- before do
- subject
+ it 'returns ordered deployments' do
+ expect(json_response.map { |i| i['id'] }).to eq([deployment_2.id, deployment_1.id, deployment_3.id])
end
- where(:order_by, :sort, :ordered_deployments) do
- 'created_at' | 'asc' | [:deployment_3, :deployment_2, :deployment_1]
- 'created_at' | 'desc' | [:deployment_1, :deployment_2, :deployment_3]
- 'id' | 'asc' | [:deployment_1, :deployment_2, :deployment_3]
- 'id' | 'desc' | [:deployment_3, :deployment_2, :deployment_1]
- 'iid' | 'asc' | [:deployment_3, :deployment_1, :deployment_2]
- 'iid' | 'desc' | [:deployment_2, :deployment_1, :deployment_3]
- 'ref' | 'asc' | [:deployment_2, :deployment_1, :deployment_3]
- 'ref' | 'desc' | [:deployment_3, :deployment_1, :deployment_2]
- 'updated_at' | 'asc' | [:deployment_2, :deployment_3, :deployment_1]
- 'updated_at' | 'desc' | [:deployment_1, :deployment_3, :deployment_2]
+ context 'with invalid order_by' do
+ let(:order_by) { 'wrong_sorting_value' }
+
+ it 'returns error' do
+ expect(response).to have_gitlab_http_status(400)
+ end
end
- with_them do
- it 'returns the deployments ordered' do
- expect_deployments(ordered_deployments)
+ context 'with invalid sorting' do
+ let(:sort) { 'wrong_sorting_direction' }
+
+ it 'returns error' do
+ expect(response).to have_gitlab_http_status(400)
end
end
end
@@ -140,7 +147,7 @@ describe API::Deployments do
expect(response).to have_gitlab_http_status(500)
end
- it 'links any merged merge requests to the deployment' do
+ it 'links any merged merge requests to the deployment', :sidekiq_inline do
mr = create(
:merge_request,
:merged,
@@ -192,7 +199,7 @@ describe API::Deployments do
expect(json_response['ref']).to eq('master')
end
- it 'links any merged merge requests to the deployment' do
+ it 'links any merged merge requests to the deployment', :sidekiq_inline do
mr = create(
:merge_request,
:merged,
@@ -335,4 +342,40 @@ describe API::Deployments do
end
end
end
+
+ context 'prevent N + 1 queries' do
+ context 'when the endpoint returns multiple records' do
+ let(:project) { create(:project) }
+
+ def create_record
+ create(:deployment, :success, project: project)
+ end
+
+ def request_with_query_count
+ ActiveRecord::QueryRecorder.new { trigger_request }.count
+ end
+
+ def trigger_request
+ get api("/projects/#{project.id}/deployments?order_by=updated_at&sort=asc", user)
+ end
+
+ before do
+ create_record
+ end
+
+ it 'succeeds' do
+ trigger_request
+
+ expect(response).to have_gitlab_http_status(200)
+
+ expect(json_response.size).to eq(1)
+ end
+
+ it 'does not increase the query count' do
+ expect { create_record }.not_to change { request_with_query_count }
+
+ expect(json_response.size).to eq(2)
+ end
+ end
+ end
end
diff --git a/spec/requests/api/files_spec.rb b/spec/requests/api/files_spec.rb
index ec18156f49f..ab915af8ab0 100644
--- a/spec/requests/api/files_spec.rb
+++ b/spec/requests/api/files_spec.rb
@@ -315,11 +315,11 @@ describe API::Files do
expect(range['commit']['message'])
.to eq("Files, encoding and much more\n\nSigned-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>\n")
- expect(range['commit']['authored_date']).to eq('2014-02-27T08:14:56.000Z')
+ expect(range['commit']['authored_date']).to eq('2014-02-27T10:14:56.000+02:00')
expect(range['commit']['author_name']).to eq('Dmitriy Zaporozhets')
expect(range['commit']['author_email']).to eq('dmitriy.zaporozhets@gmail.com')
- expect(range['commit']['committed_date']).to eq('2014-02-27T08:14:56.000Z')
+ expect(range['commit']['committed_date']).to eq('2014-02-27T10:14:56.000+02:00')
expect(range['commit']['committer_name']).to eq('Dmitriy Zaporozhets')
expect(range['commit']['committer_email']).to eq('dmitriy.zaporozhets@gmail.com')
end
@@ -548,8 +548,9 @@ describe API::Files do
end
it "returns a 400 if editor fails to create file" do
- allow_any_instance_of(Repository).to receive(:create_file)
- .and_raise(Gitlab::Git::CommitError, 'Cannot create file')
+ allow_next_instance_of(Repository) do |instance|
+ allow(instance).to receive(:create_file).and_raise(Gitlab::Git::CommitError, 'Cannot create file')
+ end
post api(route("any%2Etxt"), user), params: params
@@ -636,7 +637,7 @@ describe API::Files do
put api(route(file_path), user), params: params_with_stale_id
expect(response).to have_gitlab_http_status(400)
- expect(json_response['message']).to eq('You are attempting to update a file that has changed since you started editing it.')
+ expect(json_response['message']).to eq(_('You are attempting to update a file that has changed since you started editing it.'))
end
it "updates existing file in project repo with accepts correct last commit id" do
@@ -698,7 +699,9 @@ describe API::Files do
end
it "returns a 400 if fails to delete file" do
- allow_any_instance_of(Repository).to receive(:delete_file).and_raise(Gitlab::Git::CommitError, 'Cannot delete file')
+ allow_next_instance_of(Repository) do |instance|
+ allow(instance).to receive(:delete_file).and_raise(Gitlab::Git::CommitError, 'Cannot delete file')
+ end
delete api(route(file_path), user), params: params
diff --git a/spec/requests/api/graphql/mutations/award_emojis/add_spec.rb b/spec/requests/api/graphql/mutations/award_emojis/add_spec.rb
index 5b910d5bfe0..b24981873c8 100644
--- a/spec/requests/api/graphql/mutations/award_emojis/add_spec.rb
+++ b/spec/requests/api/graphql/mutations/award_emojis/add_spec.rb
@@ -75,6 +75,7 @@ describe 'Adding an AwardEmoji' do
describe 'marking Todos as done' do
let(:user) { current_user}
+
subject { post_graphql_mutation(mutation, current_user: user) }
include_examples 'creating award emojis marks Todos as done'
diff --git a/spec/requests/api/graphql/mutations/award_emojis/toggle_spec.rb b/spec/requests/api/graphql/mutations/award_emojis/toggle_spec.rb
index ae628d3e56c..5e2c0e668a5 100644
--- a/spec/requests/api/graphql/mutations/award_emojis/toggle_spec.rb
+++ b/spec/requests/api/graphql/mutations/award_emojis/toggle_spec.rb
@@ -83,6 +83,7 @@ describe 'Toggling an AwardEmoji' do
describe 'marking Todos as done' do
let(:user) { current_user}
+
subject { post_graphql_mutation(mutation, current_user: user) }
include_examples 'creating award emojis marks Todos as done'
diff --git a/spec/requests/api/graphql/mutations/issues/set_confidential_spec.rb b/spec/requests/api/graphql/mutations/issues/set_confidential_spec.rb
new file mode 100644
index 00000000000..4d0bb59b030
--- /dev/null
+++ b/spec/requests/api/graphql/mutations/issues/set_confidential_spec.rb
@@ -0,0 +1,51 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe 'Setting an issue as confidential' do
+ include GraphqlHelpers
+
+ let(:current_user) { create(:user) }
+ let(:issue) { create(:issue) }
+ let(:project) { issue.project }
+ let(:input) { { confidential: true } }
+
+ let(:mutation) do
+ variables = {
+ project_path: project.full_path,
+ iid: issue.iid.to_s
+ }
+ graphql_mutation(:issue_set_confidential, variables.merge(input),
+ <<-QL.strip_heredoc
+ clientMutationId
+ errors
+ issue {
+ iid
+ confidential
+ }
+ QL
+ )
+ end
+
+ def mutation_response
+ graphql_mutation_response(:issue_set_confidential)
+ end
+
+ before do
+ project.add_developer(current_user)
+ end
+
+ it 'returns an error if the user is not allowed to update the issue' do
+ error = "The resource that you are attempting to access does not exist or you don't have permission to perform this action"
+ post_graphql_mutation(mutation, current_user: create(:user))
+
+ expect(graphql_errors).to include(a_hash_including('message' => error))
+ end
+
+ it 'updates the issue confidentiality' do
+ post_graphql_mutation(mutation, current_user: current_user)
+
+ expect(response).to have_gitlab_http_status(:success)
+ expect(mutation_response['issue']['confidential']).to be_truthy
+ end
+end
diff --git a/spec/requests/api/graphql/mutations/issues/set_due_date_spec.rb b/spec/requests/api/graphql/mutations/issues/set_due_date_spec.rb
new file mode 100644
index 00000000000..1efa9e16233
--- /dev/null
+++ b/spec/requests/api/graphql/mutations/issues/set_due_date_spec.rb
@@ -0,0 +1,61 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe 'Setting Due Date of an issue' do
+ include GraphqlHelpers
+
+ let(:current_user) { create(:user) }
+ let(:issue) { create(:issue) }
+ let(:project) { issue.project }
+ let(:input) { { due_date: 2.days.since } }
+
+ let(:mutation) do
+ variables = {
+ project_path: project.full_path,
+ iid: issue.iid.to_s
+ }
+ graphql_mutation(:issue_set_due_date, variables.merge(input),
+ <<-QL.strip_heredoc
+ clientMutationId
+ errors
+ issue {
+ iid
+ dueDate
+ }
+ QL
+ )
+ end
+
+ def mutation_response
+ graphql_mutation_response(:issue_set_due_date)
+ end
+
+ before do
+ project.add_developer(current_user)
+ end
+
+ it 'returns an error if the user is not allowed to update the issue' do
+ error = "The resource that you are attempting to access does not exist or you don't have permission to perform this action"
+ post_graphql_mutation(mutation, current_user: create(:user))
+
+ expect(graphql_errors).to include(a_hash_including('message' => error))
+ end
+
+ it 'updates the issue due date' do
+ post_graphql_mutation(mutation, current_user: current_user)
+
+ expect(response).to have_gitlab_http_status(:success)
+ expect(mutation_response['issue']['dueDate']).to eq(2.days.since.to_date.to_s)
+ end
+
+ context 'when passing due date without a date value' do
+ let(:input) { { due_date: 'test' } }
+
+ it 'returns internal server error' do
+ post_graphql_mutation(mutation, current_user: current_user)
+
+ expect(graphql_errors).to include(a_hash_including('message' => 'Internal server error'))
+ end
+ end
+end
diff --git a/spec/requests/api/graphql/mutations/snippets/create_spec.rb b/spec/requests/api/graphql/mutations/snippets/create_spec.rb
new file mode 100644
index 00000000000..9ef45c0f6bc
--- /dev/null
+++ b/spec/requests/api/graphql/mutations/snippets/create_spec.rb
@@ -0,0 +1,144 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe 'Creating a Snippet' do
+ include GraphqlHelpers
+
+ let_it_be(:user) { create(:user) }
+ let_it_be(:project) { create(:project) }
+ let(:content) { 'Initial content' }
+ let(:description) { 'Initial description' }
+ let(:title) { 'Initial title' }
+ let(:file_name) { 'Initial file_name' }
+ let(:visibility_level) { 'public' }
+ let(:project_path) { nil }
+
+ let(:mutation) do
+ variables = {
+ content: content,
+ description: description,
+ visibility_level: visibility_level,
+ file_name: file_name,
+ title: title,
+ project_path: project_path
+ }
+
+ graphql_mutation(:create_snippet, variables)
+ end
+
+ def mutation_response
+ graphql_mutation_response(:create_snippet)
+ end
+
+ context 'when the user does not have permission' do
+ let(:current_user) { nil }
+
+ it_behaves_like 'a mutation that returns top-level errors',
+ errors: [Gitlab::Graphql::Authorize::AuthorizeResource::RESOURCE_ACCESS_ERROR]
+
+ it 'does not create the Snippet' do
+ expect do
+ post_graphql_mutation(mutation, current_user: current_user)
+ end.not_to change { Snippet.count }
+ end
+
+ context 'when user is not authorized in the project' do
+ let(:project_path) { project.full_path }
+
+ it 'does not create the snippet when the user is not authorized' do
+ expect do
+ post_graphql_mutation(mutation, current_user: current_user)
+ end.not_to change { Snippet.count }
+ end
+ end
+ end
+
+ context 'when the user has permission' do
+ let(:current_user) { user }
+
+ context 'with PersonalSnippet' do
+ it 'creates the Snippet' do
+ expect do
+ post_graphql_mutation(mutation, current_user: current_user)
+ end.to change { Snippet.count }.by(1)
+ end
+
+ it 'returns the created Snippet' do
+ post_graphql_mutation(mutation, current_user: current_user)
+
+ expect(mutation_response['snippet']['content']).to eq(content)
+ expect(mutation_response['snippet']['title']).to eq(title)
+ expect(mutation_response['snippet']['description']).to eq(description)
+ expect(mutation_response['snippet']['fileName']).to eq(file_name)
+ expect(mutation_response['snippet']['visibilityLevel']).to eq(visibility_level)
+ expect(mutation_response['snippet']['project']).to be_nil
+ end
+ end
+
+ context 'with ProjectSnippet' do
+ let(:project_path) { project.full_path }
+
+ before do
+ project.add_developer(current_user)
+ end
+
+ it 'creates the Snippet' do
+ expect do
+ post_graphql_mutation(mutation, current_user: current_user)
+ end.to change { Snippet.count }.by(1)
+ end
+
+ it 'returns the created Snippet' do
+ post_graphql_mutation(mutation, current_user: current_user)
+
+ expect(mutation_response['snippet']['content']).to eq(content)
+ expect(mutation_response['snippet']['title']).to eq(title)
+ expect(mutation_response['snippet']['description']).to eq(description)
+ expect(mutation_response['snippet']['fileName']).to eq(file_name)
+ expect(mutation_response['snippet']['visibilityLevel']).to eq(visibility_level)
+ expect(mutation_response['snippet']['project']['fullPath']).to eq(project_path)
+ end
+
+ context 'when the project path is invalid' do
+ let(:project_path) { 'foobar' }
+
+ it 'returns an an error' do
+ post_graphql_mutation(mutation, current_user: current_user)
+ errors = json_response['errors']
+
+ expect(errors.first['message']).to eq(Gitlab::Graphql::Authorize::AuthorizeResource::RESOURCE_ACCESS_ERROR)
+ end
+ end
+
+ context 'when the feature is disabled' do
+ it 'returns an an error' do
+ project.project_feature.update_attribute(:snippets_access_level, ProjectFeature::DISABLED)
+
+ post_graphql_mutation(mutation, current_user: current_user)
+ errors = json_response['errors']
+
+ expect(errors.first['message']).to eq(Gitlab::Graphql::Authorize::AuthorizeResource::RESOURCE_ACCESS_ERROR)
+ end
+ end
+ end
+
+ context 'when there are ActiveRecord validation errors' do
+ let(:title) { '' }
+
+ it_behaves_like 'a mutation that returns errors in the response', errors: ["Title can't be blank"]
+
+ it 'does not create the Snippet' do
+ expect do
+ post_graphql_mutation(mutation, current_user: current_user)
+ end.not_to change { Snippet.count }
+ end
+
+ it 'does not return Snippet' do
+ post_graphql_mutation(mutation, current_user: current_user)
+
+ expect(mutation_response['snippet']).to be_nil
+ end
+ end
+ end
+end
diff --git a/spec/requests/api/graphql/mutations/snippets/destroy_spec.rb b/spec/requests/api/graphql/mutations/snippets/destroy_spec.rb
new file mode 100644
index 00000000000..351d2db8973
--- /dev/null
+++ b/spec/requests/api/graphql/mutations/snippets/destroy_spec.rb
@@ -0,0 +1,89 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe 'Destroying a Snippet' do
+ include GraphqlHelpers
+
+ let(:current_user) { snippet.author }
+ let(:mutation) do
+ variables = {
+ id: snippet.to_global_id.to_s
+ }
+
+ graphql_mutation(:destroy_snippet, variables)
+ end
+
+ def mutation_response
+ graphql_mutation_response(:destroy_snippet)
+ end
+
+ shared_examples 'graphql delete actions' do
+ context 'when the user does not have permission' do
+ let(:current_user) { create(:user) }
+
+ it_behaves_like 'a mutation that returns top-level errors',
+ errors: [Gitlab::Graphql::Authorize::AuthorizeResource::RESOURCE_ACCESS_ERROR]
+
+ it 'does not destroy the Snippet' do
+ expect do
+ post_graphql_mutation(mutation, current_user: current_user)
+ end.not_to change { Snippet.count }
+ end
+ end
+
+ context 'when the user has permission' do
+ it 'destroys the Snippet' do
+ expect do
+ post_graphql_mutation(mutation, current_user: current_user)
+ end.to change { Snippet.count }.by(-1)
+ end
+
+ it 'returns an empty Snippet' do
+ post_graphql_mutation(mutation, current_user: current_user)
+
+ expect(mutation_response).to have_key('snippet')
+ expect(mutation_response['snippet']).to be_nil
+ end
+ end
+ end
+
+ describe 'PersonalSnippet' do
+ it_behaves_like 'graphql delete actions' do
+ let_it_be(:snippet) { create(:personal_snippet) }
+ end
+ end
+
+ describe 'ProjectSnippet' do
+ let_it_be(:project) { create(:project, :private) }
+ let_it_be(:snippet) { create(:project_snippet, :private, project: project, author: create(:user)) }
+
+ context 'when the author is not a member of the project' do
+ it 'returns an an error' do
+ post_graphql_mutation(mutation, current_user: current_user)
+ errors = json_response['errors']
+
+ expect(errors.first['message']).to eq(Gitlab::Graphql::Authorize::AuthorizeResource::RESOURCE_ACCESS_ERROR)
+ end
+ end
+
+ context 'when the author is a member of the project' do
+ before do
+ project.add_developer(current_user)
+ end
+
+ it_behaves_like 'graphql delete actions'
+
+ context 'when the snippet project feature is disabled' do
+ it 'returns an an error' do
+ project.project_feature.update_attribute(:snippets_access_level, ProjectFeature::DISABLED)
+
+ post_graphql_mutation(mutation, current_user: current_user)
+ errors = json_response['errors']
+
+ expect(errors.first['message']).to eq(Gitlab::Graphql::Authorize::AuthorizeResource::RESOURCE_ACCESS_ERROR)
+ end
+ end
+ end
+ end
+end
diff --git a/spec/requests/api/graphql/mutations/snippets/mark_as_spam_spec.rb b/spec/requests/api/graphql/mutations/snippets/mark_as_spam_spec.rb
new file mode 100644
index 00000000000..0e8fe4987b9
--- /dev/null
+++ b/spec/requests/api/graphql/mutations/snippets/mark_as_spam_spec.rb
@@ -0,0 +1,63 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe 'Mark snippet as spam' do
+ include GraphqlHelpers
+
+ let_it_be(:admin) { create(:admin) }
+ let_it_be(:other_user) { create(:user) }
+ let_it_be(:snippet) { create(:personal_snippet) }
+ let_it_be(:user_agent_detail) { create(:user_agent_detail, subject: snippet) }
+ let(:current_user) { snippet.author }
+ let(:mutation) do
+ variables = {
+ id: snippet.to_global_id.to_s
+ }
+
+ graphql_mutation(:mark_as_spam_snippet, variables)
+ end
+
+ def mutation_response
+ graphql_mutation_response(:mark_as_spam_snippet)
+ end
+
+ shared_examples 'does not mark the snippet as spam' do
+ it do
+ expect do
+ post_graphql_mutation(mutation, current_user: current_user)
+ end.not_to change { snippet.reload.user_agent_detail.submitted }
+ end
+ end
+
+ context 'when the user does not have permission' do
+ let(:current_user) { other_user }
+
+ it_behaves_like 'a mutation that returns top-level errors',
+ errors: [Gitlab::Graphql::Authorize::AuthorizeResource::RESOURCE_ACCESS_ERROR]
+
+ it_behaves_like 'does not mark the snippet as spam'
+ end
+
+ context 'when the user has permission' do
+ context 'when user can not mark snippet as spam' do
+ it_behaves_like 'does not mark the snippet as spam'
+ end
+
+ context 'when user can mark snippet as spam' do
+ let(:current_user) { admin }
+
+ before do
+ stub_application_setting(akismet_enabled: true)
+ end
+
+ it 'marks snippet as spam' do
+ expect_next_instance_of(SpamService) do |instance|
+ expect(instance).to receive(:mark_as_spam!)
+ end
+
+ post_graphql_mutation(mutation, current_user: current_user)
+ end
+ end
+ end
+end
diff --git a/spec/requests/api/graphql/mutations/snippets/update_spec.rb b/spec/requests/api/graphql/mutations/snippets/update_spec.rb
new file mode 100644
index 00000000000..deaa9e8a237
--- /dev/null
+++ b/spec/requests/api/graphql/mutations/snippets/update_spec.rb
@@ -0,0 +1,144 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe 'Updating a Snippet' do
+ include GraphqlHelpers
+
+ let_it_be(:original_content) { 'Initial content' }
+ let_it_be(:original_description) { 'Initial description' }
+ let_it_be(:original_title) { 'Initial title' }
+ let_it_be(:original_file_name) { 'Initial file_name' }
+ let(:updated_content) { 'Updated content' }
+ let(:updated_description) { 'Updated description' }
+ let(:updated_title) { 'Updated_title' }
+ let(:updated_file_name) { 'Updated file_name' }
+ let(:current_user) { snippet.author }
+
+ let(:mutation) do
+ variables = {
+ id: GitlabSchema.id_from_object(snippet).to_s,
+ content: updated_content,
+ description: updated_description,
+ visibility_level: 'public',
+ file_name: updated_file_name,
+ title: updated_title
+ }
+
+ graphql_mutation(:update_snippet, variables)
+ end
+
+ def mutation_response
+ graphql_mutation_response(:update_snippet)
+ end
+
+ shared_examples 'graphql update actions' do
+ context 'when the user does not have permission' do
+ let(:current_user) { create(:user) }
+
+ it_behaves_like 'a mutation that returns top-level errors',
+ errors: [Gitlab::Graphql::Authorize::AuthorizeResource::RESOURCE_ACCESS_ERROR]
+
+ it 'does not update the Snippet' do
+ expect do
+ post_graphql_mutation(mutation, current_user: current_user)
+ end.not_to change { snippet.reload }
+ end
+ end
+
+ context 'when the user has permission' do
+ it 'updates the Snippet' do
+ post_graphql_mutation(mutation, current_user: current_user)
+
+ expect(snippet.reload.title).to eq(updated_title)
+ end
+
+ it 'returns the updated Snippet' do
+ post_graphql_mutation(mutation, current_user: current_user)
+
+ expect(mutation_response['snippet']['content']).to eq(updated_content)
+ expect(mutation_response['snippet']['title']).to eq(updated_title)
+ expect(mutation_response['snippet']['description']).to eq(updated_description)
+ expect(mutation_response['snippet']['fileName']).to eq(updated_file_name)
+ expect(mutation_response['snippet']['visibilityLevel']).to eq('public')
+ end
+
+ context 'when there are ActiveRecord validation errors' do
+ let(:updated_title) { '' }
+
+ it_behaves_like 'a mutation that returns errors in the response', errors: ["Title can't be blank"]
+
+ it 'does not update the Snippet' do
+ post_graphql_mutation(mutation, current_user: current_user)
+
+ expect(snippet.reload.title).to eq(original_title)
+ end
+
+ it 'returns the Snippet with its original values' do
+ post_graphql_mutation(mutation, current_user: current_user)
+
+ expect(mutation_response['snippet']['content']).to eq(original_content)
+ expect(mutation_response['snippet']['title']).to eq(original_title)
+ expect(mutation_response['snippet']['description']).to eq(original_description)
+ expect(mutation_response['snippet']['fileName']).to eq(original_file_name)
+ expect(mutation_response['snippet']['visibilityLevel']).to eq('private')
+ end
+ end
+ end
+ end
+
+ describe 'PersonalSnippet' do
+ it_behaves_like 'graphql update actions' do
+ let_it_be(:snippet) do
+ create(:personal_snippet,
+ :private,
+ file_name: original_file_name,
+ title: original_title,
+ content: original_content,
+ description: original_description)
+ end
+ end
+ end
+
+ describe 'ProjectSnippet' do
+ let_it_be(:project) { create(:project, :private) }
+ let_it_be(:snippet) do
+ create(:project_snippet,
+ :private,
+ project: project,
+ author: create(:user),
+ file_name: original_file_name,
+ title: original_title,
+ content: original_content,
+ description: original_description)
+ end
+
+ context 'when the author is not a member of the project' do
+ it 'returns an an error' do
+ post_graphql_mutation(mutation, current_user: current_user)
+ errors = json_response['errors']
+
+ expect(errors.first['message']).to eq(Gitlab::Graphql::Authorize::AuthorizeResource::RESOURCE_ACCESS_ERROR)
+ end
+ end
+
+ context 'when the author is a member of the project' do
+ before do
+ project.add_developer(current_user)
+ end
+
+ it_behaves_like 'graphql update actions'
+
+ context 'when the snippet project feature is disabled' do
+ it 'returns an an error' do
+ project.project_feature.update_attribute(:snippets_access_level, ProjectFeature::DISABLED)
+
+ post_graphql_mutation(mutation, current_user: current_user)
+ errors = json_response['errors']
+
+ expect(errors.first['message']).to eq(Gitlab::Graphql::Authorize::AuthorizeResource::RESOURCE_ACCESS_ERROR)
+ end
+ end
+ end
+ end
+end
diff --git a/spec/requests/api/graphql/mutations/todos/mark_all_done_spec.rb b/spec/requests/api/graphql/mutations/todos/mark_all_done_spec.rb
new file mode 100644
index 00000000000..40e085027d7
--- /dev/null
+++ b/spec/requests/api/graphql/mutations/todos/mark_all_done_spec.rb
@@ -0,0 +1,65 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe 'Marking all todos done' do
+ include GraphqlHelpers
+
+ let_it_be(:current_user) { create(:user) }
+ let_it_be(:author) { create(:user) }
+ let_it_be(:other_user) { create(:user) }
+ let_it_be(:other_user2) { create(:user) }
+
+ let_it_be(:todo1) { create(:todo, user: current_user, author: author, state: :pending) }
+ let_it_be(:todo2) { create(:todo, user: current_user, author: author, state: :done) }
+ let_it_be(:todo3) { create(:todo, user: current_user, author: author, state: :pending) }
+
+ let_it_be(:other_user_todo) { create(:todo, user: other_user, author: author, state: :pending) }
+
+ let(:input) { {} }
+
+ let(:mutation) do
+ graphql_mutation(:todos_mark_all_done, input,
+ <<-QL.strip_heredoc
+ clientMutationId
+ errors
+ updatedIds
+ QL
+ )
+ end
+
+ def mutation_response
+ graphql_mutation_response(:todos_mark_all_done)
+ end
+
+ it 'marks all pending todos as done' do
+ post_graphql_mutation(mutation, current_user: current_user)
+
+ expect(todo1.reload.state).to eq('done')
+ expect(todo2.reload.state).to eq('done')
+ expect(todo3.reload.state).to eq('done')
+ expect(other_user_todo.reload.state).to eq('pending')
+
+ updated_todo_ids = mutation_response['updatedIds']
+ expect(updated_todo_ids).to contain_exactly(global_id_of(todo1), global_id_of(todo3))
+ end
+
+ it 'behaves as expected if there are no todos for the requesting user' do
+ post_graphql_mutation(mutation, current_user: other_user2)
+
+ expect(todo1.reload.state).to eq('pending')
+ expect(todo2.reload.state).to eq('done')
+ expect(todo3.reload.state).to eq('pending')
+ expect(other_user_todo.reload.state).to eq('pending')
+
+ updated_todo_ids = mutation_response['updatedIds']
+ expect(updated_todo_ids).to be_empty
+ end
+
+ context 'when user is not logged in' do
+ let(:current_user) { nil }
+
+ it_behaves_like 'a mutation that returns top-level errors',
+ errors: ['The resource that you are attempting to access does not exist or you don\'t have permission to perform this action']
+ end
+end
diff --git a/spec/requests/api/graphql/mutations/todos/restore_spec.rb b/spec/requests/api/graphql/mutations/todos/restore_spec.rb
new file mode 100644
index 00000000000..faa36c8273a
--- /dev/null
+++ b/spec/requests/api/graphql/mutations/todos/restore_spec.rb
@@ -0,0 +1,97 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe 'Restoring Todos' do
+ include GraphqlHelpers
+
+ let_it_be(:current_user) { create(:user) }
+ let_it_be(:author) { create(:user) }
+ let_it_be(:other_user) { create(:user) }
+
+ let_it_be(:todo1) { create(:todo, user: current_user, author: author, state: :done) }
+ let_it_be(:todo2) { create(:todo, user: current_user, author: author, state: :pending) }
+
+ let_it_be(:other_user_todo) { create(:todo, user: other_user, author: author, state: :done) }
+
+ let(:input) { { id: todo1.to_global_id.to_s } }
+
+ let(:mutation) do
+ graphql_mutation(:todo_restore, input,
+ <<-QL.strip_heredoc
+ clientMutationId
+ errors
+ todo {
+ id
+ state
+ }
+ QL
+ )
+ end
+
+ def mutation_response
+ graphql_mutation_response(:todo_restore)
+ end
+
+ it 'restores a single todo' do
+ post_graphql_mutation(mutation, current_user: current_user)
+
+ expect(todo1.reload.state).to eq('pending')
+ expect(todo2.reload.state).to eq('pending')
+ expect(other_user_todo.reload.state).to eq('done')
+
+ todo = mutation_response['todo']
+ expect(todo['id']).to eq(todo1.to_global_id.to_s)
+ expect(todo['state']).to eq('pending')
+ end
+
+ context 'when todo is already marked pending' do
+ let(:input) { { id: todo2.to_global_id.to_s } }
+
+ it 'has the expected response' do
+ post_graphql_mutation(mutation, current_user: current_user)
+
+ expect(todo1.reload.state).to eq('done')
+ expect(todo2.reload.state).to eq('pending')
+ expect(other_user_todo.reload.state).to eq('done')
+
+ todo = mutation_response['todo']
+ expect(todo['id']).to eq(todo2.to_global_id.to_s)
+ expect(todo['state']).to eq('pending')
+ end
+ end
+
+ context 'when todo does not belong to requesting user' do
+ let(:input) { { id: other_user_todo.to_global_id.to_s } }
+ let(:access_error) { 'The resource that you are attempting to access does not exist or you don\'t have permission to perform this action' }
+
+ it 'contains the expected error' do
+ post_graphql_mutation(mutation, current_user: current_user)
+
+ errors = json_response['errors']
+ expect(errors).not_to be_blank
+ expect(errors.first['message']).to eq(access_error)
+
+ expect(todo1.reload.state).to eq('done')
+ expect(todo2.reload.state).to eq('pending')
+ expect(other_user_todo.reload.state).to eq('done')
+ end
+ end
+
+ context 'when using an invalid gid' do
+ let(:input) { { id: 'invalid_gid' } }
+ let(:invalid_gid_error) { 'invalid_gid is not a valid GitLab id.' }
+
+ it 'contains the expected error' do
+ post_graphql_mutation(mutation, current_user: current_user)
+
+ errors = json_response['errors']
+ expect(errors).not_to be_blank
+ expect(errors.first['message']).to eq(invalid_gid_error)
+
+ expect(todo1.reload.state).to eq('done')
+ expect(todo2.reload.state).to eq('pending')
+ expect(other_user_todo.reload.state).to eq('done')
+ end
+ end
+end
diff --git a/spec/requests/api/graphql/project/error_tracking/sentry_detailed_error_request_spec.rb b/spec/requests/api/graphql/project/error_tracking/sentry_detailed_error_request_spec.rb
new file mode 100644
index 00000000000..d10380dab3a
--- /dev/null
+++ b/spec/requests/api/graphql/project/error_tracking/sentry_detailed_error_request_spec.rb
@@ -0,0 +1,69 @@
+# frozen_string_literal: true
+require 'spec_helper'
+
+describe 'getting a detailed sentry error' do
+ include GraphqlHelpers
+
+ let_it_be(:project) { create(:project, :repository) }
+ let_it_be(:project_setting) { create(:project_error_tracking_setting, project: project) }
+ let_it_be(:current_user) { project.owner }
+ let_it_be(:sentry_detailed_error) { build(:detailed_error_tracking_error) }
+ let(:sentry_gid) { sentry_detailed_error.to_global_id.to_s }
+ let(:fields) do
+ <<~QUERY
+ #{all_graphql_fields_for('SentryDetailedError'.classify)}
+ QUERY
+ end
+
+ let(:query) do
+ graphql_query_for(
+ 'project',
+ { 'fullPath' => project.full_path },
+ query_graphql_field('sentryDetailedError', { id: sentry_gid }, fields)
+ )
+ end
+
+ let(:error_data) { graphql_data['project']['sentryDetailedError'] }
+
+ it_behaves_like 'a working graphql query' do
+ before do
+ post_graphql(query, current_user: current_user)
+ end
+ end
+
+ context 'when data is loading via reactive cache' do
+ before do
+ post_graphql(query, current_user: current_user)
+ end
+
+ it "is expected to return an empty error" do
+ expect(error_data).to eq nil
+ end
+ end
+
+ context 'reactive cache returns data' do
+ before do
+ expect_any_instance_of(ErrorTracking::ProjectErrorTrackingSetting)
+ .to receive(:issue_details)
+ .and_return({ issue: sentry_detailed_error })
+
+ post_graphql(query, current_user: current_user)
+ end
+
+ it "is expected to return a valid error" do
+ expect(error_data['id']).to eql sentry_gid
+ expect(error_data['sentryId']).to eql sentry_detailed_error.id.to_s
+ expect(error_data['status']).to eql sentry_detailed_error.status.upcase
+ expect(error_data['firstSeen']).to eql sentry_detailed_error.first_seen
+ expect(error_data['lastSeen']).to eql sentry_detailed_error.last_seen
+ end
+
+ it 'is expected to return the frequency correctly' do
+ expect(error_data['frequency'].count).to eql sentry_detailed_error.frequency.count
+
+ first_frequency = error_data['frequency'].first
+ expect(Time.parse(first_frequency['time'])).to eql Time.at(sentry_detailed_error.frequency[0][0], in: 0)
+ expect(first_frequency['count']).to eql sentry_detailed_error.frequency[0][1]
+ end
+ end
+end
diff --git a/spec/requests/api/graphql_spec.rb b/spec/requests/api/graphql_spec.rb
index 54401ec4085..d0378278600 100644
--- a/spec/requests/api/graphql_spec.rb
+++ b/spec/requests/api/graphql_spec.rb
@@ -46,7 +46,7 @@ describe 'GraphQL' do
end
it 'logs the exception in Sentry and continues with the request' do
- expect(Gitlab::Sentry).to receive(:track_exception).at_least(1).times
+ expect(Gitlab::ErrorTracking).to receive(:track_and_raise_for_dev_exception).at_least(1).times
expect(Gitlab::GraphqlLogger).to receive(:info)
post_graphql(query, variables: {})
@@ -146,7 +146,7 @@ describe 'GraphQL' do
end
it "logs a warning that the 'calls_gitaly' field declaration is missing" do
- expect(Gitlab::Sentry).to receive(:track_exception).once
+ expect(Gitlab::ErrorTracking).to receive(:track_and_raise_for_dev_exception).once
post_graphql(query, current_user: user)
end
diff --git a/spec/requests/api/group_clusters_spec.rb b/spec/requests/api/group_clusters_spec.rb
index 97465647a87..14027db01c4 100644
--- a/spec/requests/api/group_clusters_spec.rb
+++ b/spec/requests/api/group_clusters_spec.rb
@@ -261,7 +261,7 @@ describe API::GroupClusters do
it 'responds with 400' do
expect(response).to have_gitlab_http_status(400)
- expect(json_response['message']['base'].first).to include('Instance does not support multiple Kubernetes clusters')
+ expect(json_response['message']['base'].first).to eq(_('Instance does not support multiple Kubernetes clusters'))
end
end
@@ -372,7 +372,7 @@ describe API::GroupClusters do
end
it 'returns validation error' do
- expect(json_response['message']['platform_kubernetes.base'].first).to eq('Cannot modify managed Kubernetes cluster')
+ expect(json_response['message']['platform_kubernetes.base'].first).to eq(_('Cannot modify managed Kubernetes cluster'))
end
end
diff --git a/spec/requests/api/groups_spec.rb b/spec/requests/api/groups_spec.rb
index cb97398805a..a4f68df928f 100644
--- a/spec/requests/api/groups_spec.rb
+++ b/spec/requests/api/groups_spec.rb
@@ -488,6 +488,51 @@ describe API::Groups do
expect(response).to have_gitlab_http_status(404)
end
end
+
+ context 'limiting the number of projects and shared_projects in the response' do
+ let(:limit) { 1 }
+
+ before do
+ stub_const("GroupProjectsFinder::DEFAULT_PROJECTS_LIMIT", limit)
+
+ # creates 3 public projects
+ create_list(:project, 3, :public, namespace: group1)
+
+ # creates 3 shared projects
+ public_group = create(:group, :public)
+ projects_to_be_shared = create_list(:project, 3, :public, namespace: public_group)
+
+ projects_to_be_shared.each do |project|
+ create(:project_group_link, project: project, group: group1)
+ end
+ end
+
+ context 'when limiting feature is enabled' do
+ before do
+ stub_feature_flags(limit_projects_in_groups_api: true)
+ end
+
+ it 'limits projects and shared_projects' do
+ get api("/groups/#{group1.id}")
+
+ expect(json_response['projects'].count).to eq(limit)
+ expect(json_response['shared_projects'].count).to eq(limit)
+ end
+ end
+
+ context 'when limiting feature is not enabled' do
+ before do
+ stub_feature_flags(limit_projects_in_groups_api: false)
+ end
+
+ it 'does not limit projects and shared_projects' do
+ get api("/groups/#{group1.id}")
+
+ expect(json_response['projects'].count).to eq(3)
+ expect(json_response['shared_projects'].count).to eq(3)
+ end
+ end
+ end
end
describe 'PUT /groups/:id' do
@@ -1030,8 +1075,9 @@ describe API::Groups do
let(:project_path) { CGI.escape(project.full_path) }
before do
- allow_any_instance_of(Projects::TransferService)
- .to receive(:execute).and_return(true)
+ allow_next_instance_of(Projects::TransferService) do |instance|
+ allow(instance).to receive(:execute).and_return(true)
+ end
end
context "when authenticated as user" do
diff --git a/spec/requests/api/helpers_spec.rb b/spec/requests/api/helpers_spec.rb
index bbfe40041a1..26174611c58 100644
--- a/spec/requests/api/helpers_spec.rb
+++ b/spec/requests/api/helpers_spec.rb
@@ -146,13 +146,13 @@ describe API::Helpers do
let(:personal_access_token) { create(:personal_access_token, user: user) }
it "returns a 401 response for an invalid token" do
- env[Gitlab::Auth::UserAuthFinders::PRIVATE_TOKEN_HEADER] = 'invalid token'
+ env[Gitlab::Auth::AuthFinders::PRIVATE_TOKEN_HEADER] = 'invalid token'
expect { current_user }.to raise_error /401/
end
it "returns a 403 response for a user without access" do
- env[Gitlab::Auth::UserAuthFinders::PRIVATE_TOKEN_HEADER] = personal_access_token.token
+ env[Gitlab::Auth::AuthFinders::PRIVATE_TOKEN_HEADER] = personal_access_token.token
allow_any_instance_of(Gitlab::UserAccess).to receive(:allowed?).and_return(false)
expect { current_user }.to raise_error /403/
@@ -160,7 +160,7 @@ describe API::Helpers do
it 'returns a 403 response for a user who is blocked' do
user.block!
- env[Gitlab::Auth::UserAuthFinders::PRIVATE_TOKEN_HEADER] = personal_access_token.token
+ env[Gitlab::Auth::AuthFinders::PRIVATE_TOKEN_HEADER] = personal_access_token.token
expect { current_user }.to raise_error /403/
end
@@ -168,7 +168,7 @@ describe API::Helpers do
context 'when terms are enforced' do
before do
enforce_terms
- env[Gitlab::Auth::UserAuthFinders::PRIVATE_TOKEN_HEADER] = personal_access_token.token
+ env[Gitlab::Auth::AuthFinders::PRIVATE_TOKEN_HEADER] = personal_access_token.token
end
it 'returns a 403 when a user has not accepted the terms' do
@@ -183,27 +183,27 @@ describe API::Helpers do
end
it "sets current_user" do
- env[Gitlab::Auth::UserAuthFinders::PRIVATE_TOKEN_HEADER] = personal_access_token.token
+ env[Gitlab::Auth::AuthFinders::PRIVATE_TOKEN_HEADER] = personal_access_token.token
expect(current_user).to eq(user)
end
it "does not allow tokens without the appropriate scope" do
personal_access_token = create(:personal_access_token, user: user, scopes: ['read_user'])
- env[Gitlab::Auth::UserAuthFinders::PRIVATE_TOKEN_HEADER] = personal_access_token.token
+ env[Gitlab::Auth::AuthFinders::PRIVATE_TOKEN_HEADER] = personal_access_token.token
expect { current_user }.to raise_error Gitlab::Auth::InsufficientScopeError
end
it 'does not allow revoked tokens' do
personal_access_token.revoke!
- env[Gitlab::Auth::UserAuthFinders::PRIVATE_TOKEN_HEADER] = personal_access_token.token
+ env[Gitlab::Auth::AuthFinders::PRIVATE_TOKEN_HEADER] = personal_access_token.token
expect { current_user }.to raise_error Gitlab::Auth::RevokedError
end
it 'does not allow expired tokens' do
personal_access_token.update!(expires_at: 1.day.ago)
- env[Gitlab::Auth::UserAuthFinders::PRIVATE_TOKEN_HEADER] = personal_access_token.token
+ env[Gitlab::Auth::AuthFinders::PRIVATE_TOKEN_HEADER] = personal_access_token.token
expect { current_user }.to raise_error Gitlab::Auth::ExpiredError
end
@@ -213,7 +213,7 @@ describe API::Helpers do
before do
stub_config_setting(impersonation_enabled: false)
- env[Gitlab::Auth::UserAuthFinders::PRIVATE_TOKEN_HEADER] = personal_access_token.token
+ env[Gitlab::Auth::AuthFinders::PRIVATE_TOKEN_HEADER] = personal_access_token.token
end
it 'does not allow impersonation tokens' do
@@ -226,11 +226,11 @@ describe API::Helpers do
describe '.handle_api_exception' do
before do
allow_any_instance_of(self.class).to receive(:rack_response)
- allow(Gitlab::Sentry).to receive(:enabled?).and_return(true)
stub_sentry_settings
- configure_sentry
+ expect(Gitlab::ErrorTracking).to receive(:sentry_dsn).and_return(Gitlab.config.sentry.dsn)
+ Gitlab::ErrorTracking.configure
Raven.client.configuration.encoding = 'json'
end
@@ -478,7 +478,7 @@ describe API::Helpers do
context 'passed as param' do
before do
- set_param(Gitlab::Auth::UserAuthFinders::PRIVATE_TOKEN_PARAM, token.token)
+ set_param(Gitlab::Auth::AuthFinders::PRIVATE_TOKEN_PARAM, token.token)
end
it_behaves_like 'sudo'
@@ -486,7 +486,7 @@ describe API::Helpers do
context 'passed as header' do
before do
- env[Gitlab::Auth::UserAuthFinders::PRIVATE_TOKEN_HEADER] = token.token
+ env[Gitlab::Auth::AuthFinders::PRIVATE_TOKEN_HEADER] = token.token
end
it_behaves_like 'sudo'
diff --git a/spec/requests/api/internal/base_spec.rb b/spec/requests/api/internal/base_spec.rb
index fcff2cde730..ecbb81294a0 100644
--- a/spec/requests/api/internal/base_spec.rb
+++ b/spec/requests/api/internal/base_spec.rb
@@ -193,7 +193,15 @@ describe API::Internal::Base do
end
it 'responds successfully when a user is not found' do
- get(api("/internal/discover"), params: { username: 'noone', secret_token: secret_token })
+ get(api('/internal/discover'), params: { username: 'noone', secret_token: secret_token })
+
+ expect(response).to have_gitlab_http_status(200)
+
+ expect(response.body).to eq('null')
+ end
+
+ it 'response successfully when passing invalid params' do
+ get(api('/internal/discover'), params: { nothing: 'to find a user', secret_token: secret_token })
expect(response).to have_gitlab_http_status(200)
@@ -318,7 +326,7 @@ describe API::Internal::Base do
expect(json_response["gitaly"]["repository"]["relative_path"]).to eq(project.repository.gitaly_repository.relative_path)
expect(json_response["gitaly"]["address"]).to eq(Gitlab::GitalyClient.address(project.repository_storage))
expect(json_response["gitaly"]["token"]).to eq(Gitlab::GitalyClient.token(project.repository_storage))
- expect(json_response["gitaly"]["features"]).to eq('gitaly-feature-get-all-lfs-pointers-go' => 'true', 'gitaly-feature-inforef-uploadpack-cache' => 'true')
+ expect(json_response["gitaly"]["features"]).to eq('gitaly-feature-inforef-uploadpack-cache' => 'true', 'gitaly-feature-get-tag-messages-go' => 'true', 'gitaly-feature-filter-shas-with-signatures-go' => 'true')
expect(user.reload.last_activity_on).to eql(Date.today)
end
end
@@ -338,7 +346,7 @@ describe API::Internal::Base do
expect(json_response["gitaly"]["repository"]["relative_path"]).to eq(project.repository.gitaly_repository.relative_path)
expect(json_response["gitaly"]["address"]).to eq(Gitlab::GitalyClient.address(project.repository_storage))
expect(json_response["gitaly"]["token"]).to eq(Gitlab::GitalyClient.token(project.repository_storage))
- expect(json_response["gitaly"]["features"]).to eq('gitaly-feature-get-all-lfs-pointers-go' => 'true', 'gitaly-feature-inforef-uploadpack-cache' => 'true')
+ expect(json_response["gitaly"]["features"]).to eq('gitaly-feature-inforef-uploadpack-cache' => 'true', 'gitaly-feature-get-tag-messages-go' => 'true', 'gitaly-feature-filter-shas-with-signatures-go' => 'true')
expect(user.reload.last_activity_on).to be_nil
end
end
@@ -580,7 +588,7 @@ describe API::Internal::Base do
expect(json_response["gitaly"]["repository"]["relative_path"]).to eq(project.repository.gitaly_repository.relative_path)
expect(json_response["gitaly"]["address"]).to eq(Gitlab::GitalyClient.address(project.repository_storage))
expect(json_response["gitaly"]["token"]).to eq(Gitlab::GitalyClient.token(project.repository_storage))
- expect(json_response["gitaly"]["features"]).to eq('gitaly-feature-get-all-lfs-pointers-go' => 'true', 'gitaly-feature-inforef-uploadpack-cache' => 'true')
+ expect(json_response["gitaly"]["features"]).to eq('gitaly-feature-inforef-uploadpack-cache' => 'true', 'gitaly-feature-get-tag-messages-go' => 'true', 'gitaly-feature-filter-shas-with-signatures-go' => 'true')
end
end
@@ -819,7 +827,6 @@ describe API::Internal::Base do
before do
project.add_developer(user)
- allow(described_class).to receive(:identify).and_return(user)
allow_any_instance_of(Gitlab::Identifier).to receive(:identify).and_return(user)
end
diff --git a/spec/requests/api/internal/pages_spec.rb b/spec/requests/api/internal/pages_spec.rb
index 03bf748b471..2887163fe58 100644
--- a/spec/requests/api/internal/pages_spec.rb
+++ b/spec/requests/api/internal/pages_spec.rb
@@ -4,10 +4,10 @@ require 'spec_helper'
describe API::Internal::Pages do
describe "GET /internal/pages" do
- let(:pages_shared_secret) { SecureRandom.random_bytes(Gitlab::Pages::SECRET_LENGTH) }
+ let(:pages_secret) { SecureRandom.random_bytes(Gitlab::Pages::SECRET_LENGTH) }
before do
- allow(Gitlab::Pages).to receive(:secret).and_return(pages_shared_secret)
+ allow(Gitlab::Pages).to receive(:secret).and_return(pages_secret)
end
def query_host(host, headers = {})
@@ -47,11 +47,12 @@ describe API::Internal::Pages do
project.mark_pages_as_deployed
end
- context 'not existing host' do
- it 'responds with 404 Not Found' do
+ context 'domain does not exist' do
+ it 'responds with 204 no content' do
query_host('pages.gitlab.io')
- expect(response).to have_gitlab_http_status(404)
+ expect(response).to have_gitlab_http_status(204)
+ expect(response.body).to be_empty
end
end
diff --git a/spec/requests/api/issues/get_project_issues_spec.rb b/spec/requests/api/issues/get_project_issues_spec.rb
index 06a43ea6b02..59aeb91edd2 100644
--- a/spec/requests/api/issues/get_project_issues_spec.rb
+++ b/spec/requests/api/issues/get_project_issues_spec.rb
@@ -589,6 +589,24 @@ describe API::Issues do
expect(json_response['subscribed']).to be_truthy
end
+ context "moved_to_id" do
+ let(:moved_issue) do
+ create(:closed_issue, project: project, moved_to: issue)
+ end
+
+ it 'returns null when not moved' do
+ get api("/projects/#{project.id}/issues/#{issue.iid}", user)
+
+ expect(json_response['moved_to_id']).to be_nil
+ end
+
+ it 'returns issue id when moved' do
+ get api("/projects/#{project.id}/issues/#{moved_issue.iid}", user)
+
+ expect(json_response['moved_to_id']).to eq(issue.id)
+ end
+ end
+
it 'exposes the closed_at attribute' do
get api("/projects/#{project.id}/issues/#{closed_issue.iid}", user)
diff --git a/spec/requests/api/issues/issues_spec.rb b/spec/requests/api/issues/issues_spec.rb
index 61a94b682be..50a0a80b542 100644
--- a/spec/requests/api/issues/issues_spec.rb
+++ b/spec/requests/api/issues/issues_spec.rb
@@ -832,7 +832,7 @@ describe API::Issues do
end
context 'when issue does not exist' do
- it 'returns 404 when trying to move an issue' do
+ it 'returns 404 when trying to delete an issue' do
delete api("/projects/#{project.id}/issues/123", user)
expect(response).to have_gitlab_http_status(404)
diff --git a/spec/requests/api/issues/post_projects_issues_spec.rb b/spec/requests/api/issues/post_projects_issues_spec.rb
index 3a55b437ead..e9f678d164e 100644
--- a/spec/requests/api/issues/post_projects_issues_spec.rb
+++ b/spec/requests/api/issues/post_projects_issues_spec.rb
@@ -453,7 +453,7 @@ describe API::Issues do
params: { to_project_id: project.id }
expect(response).to have_gitlab_http_status(400)
- expect(json_response['message']).to eq('Cannot move issue to project it originates from!')
+ expect(json_response['message']).to eq(s_('MoveIssue|Cannot move issue to project it originates from!'))
end
end
@@ -463,7 +463,7 @@ describe API::Issues do
params: { to_project_id: target_project2.id }
expect(response).to have_gitlab_http_status(400)
- expect(json_response['message']).to eq('Cannot move issue due to insufficient permissions!')
+ expect(json_response['message']).to eq(s_('MoveIssue|Cannot move issue due to insufficient permissions!'))
end
end
diff --git a/spec/requests/api/jobs_spec.rb b/spec/requests/api/jobs_spec.rb
index 020e7659a4c..82bf607b911 100644
--- a/spec/requests/api/jobs_spec.rb
+++ b/spec/requests/api/jobs_spec.rb
@@ -795,9 +795,11 @@ describe API::Jobs do
before do
stub_remote_url_206(url, file_path)
- allow_any_instance_of(JobArtifactUploader).to receive(:file_storage?) { false }
- allow_any_instance_of(JobArtifactUploader).to receive(:url) { url }
- allow_any_instance_of(JobArtifactUploader).to receive(:size) { File.size(file_path) }
+ allow_next_instance_of(JobArtifactUploader) do |instance|
+ allow(instance).to receive(:file_storage?) { false }
+ allow(instance).to receive(:url) { url }
+ allow(instance).to receive(:size) { File.size(file_path) }
+ end
end
it 'returns specific job trace' do
diff --git a/spec/requests/api/keys_spec.rb b/spec/requests/api/keys_spec.rb
index 6802a0cfdab..f7da1abcfdf 100644
--- a/spec/requests/api/keys_spec.rb
+++ b/spec/requests/api/keys_spec.rb
@@ -25,7 +25,6 @@ describe API::Keys do
it 'returns single ssh key with user information' do
user.keys << key
- user.save
get api("/keys/#{key.id}", admin)
expect(response).to have_gitlab_http_status(200)
expect(json_response['title']).to eq(key.title)
@@ -40,4 +39,73 @@ describe API::Keys do
end
end
end
+
+ describe 'GET /keys?fingerprint=' do
+ it 'returns authentication error' do
+ get api("/keys?fingerprint=#{key.fingerprint}")
+
+ expect(response).to have_gitlab_http_status(401)
+ end
+
+ it 'returns authentication error when authenticated as user' do
+ get api("/keys?fingerprint=#{key.fingerprint}", user)
+
+ expect(response).to have_gitlab_http_status(403)
+ end
+
+ context 'when authenticated as admin' do
+ it 'returns 404 for non-existing SSH md5 fingerprint' do
+ get api("/keys?fingerprint=11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11", admin)
+
+ expect(response).to have_gitlab_http_status(404)
+ expect(json_response['message']).to eq('404 Key Not Found')
+ end
+
+ it 'returns 404 for non-existing SSH sha256 fingerprint' do
+ get api("/keys?fingerprint=#{URI.encode_www_form_component("SHA256:nUhzNyftwADy8AH3wFY31tAKs7HufskYTte2aXo1lCg")}", admin)
+
+ expect(response).to have_gitlab_http_status(404)
+ expect(json_response['message']).to eq('404 Key Not Found')
+ end
+
+ it 'returns user if SSH md5 fingerprint found' do
+ user.keys << key
+
+ get api("/keys?fingerprint=#{key.fingerprint}", admin)
+
+ expect(response).to have_gitlab_http_status(200)
+ expect(json_response['title']).to eq(key.title)
+ expect(json_response['user']['id']).to eq(user.id)
+ expect(json_response['user']['username']).to eq(user.username)
+ end
+
+ it 'returns user if SSH sha256 fingerprint found' do
+ user.keys << key
+
+ get api("/keys?fingerprint=#{URI.encode_www_form_component("SHA256:" + key.fingerprint_sha256)}", admin)
+
+ expect(response).to have_gitlab_http_status(200)
+ expect(json_response['title']).to eq(key.title)
+ expect(json_response['user']['id']).to eq(user.id)
+ expect(json_response['user']['username']).to eq(user.username)
+ end
+
+ it 'returns user if SSH sha256 fingerprint found' do
+ user.keys << key
+
+ get api("/keys?fingerprint=#{URI.encode_www_form_component("sha256:" + key.fingerprint_sha256)}", admin)
+
+ expect(response).to have_gitlab_http_status(200)
+ expect(json_response['title']).to eq(key.title)
+ expect(json_response['user']['id']).to eq(user.id)
+ expect(json_response['user']['username']).to eq(user.username)
+ end
+
+ it "does not include the user's `is_admin` flag" do
+ get api("/keys?fingerprint=#{key.fingerprint}", admin)
+
+ expect(json_response['user']['is_admin']).to be_nil
+ end
+ end
+ end
end
diff --git a/spec/requests/api/merge_requests_spec.rb b/spec/requests/api/merge_requests_spec.rb
index c96c80b6998..e5ad1a6378e 100644
--- a/spec/requests/api/merge_requests_spec.rb
+++ b/spec/requests/api/merge_requests_spec.rb
@@ -1567,6 +1567,18 @@ describe API::MergeRequests do
expect(response).to have_gitlab_http_status(200)
end
+ it 'does not merge if merge_when_pipeline_succeeds is passed and the pipeline has failed' do
+ create(:ci_pipeline,
+ :failed,
+ sha: merge_request.diff_head_sha,
+ merge_requests_as_head_pipeline: [merge_request])
+
+ put api("/projects/#{project.id}/merge_requests/#{merge_request.iid}/merge", user), params: { merge_when_pipeline_succeeds: true }
+
+ expect(response).to have_gitlab_http_status(405)
+ expect(merge_request.reload.state).to eq('opened')
+ end
+
it "enables merge when pipeline succeeds if the pipeline is active" do
allow_any_instance_of(MergeRequest).to receive_messages(head_pipeline: pipeline, actual_head_pipeline: pipeline)
allow(pipeline).to receive(:active?).and_return(true)
diff --git a/spec/requests/api/notes_spec.rb b/spec/requests/api/notes_spec.rb
index e57d7699892..cc2038a7245 100644
--- a/spec/requests/api/notes_spec.rb
+++ b/spec/requests/api/notes_spec.rb
@@ -92,7 +92,7 @@ describe API::Notes do
end
context "current user can view the note" do
- it "returns an empty array" do
+ it "returns a non-empty array" do
get api("/projects/#{ext_proj.id}/issues/#{ext_issue.iid}/notes", private_user)
expect(response).to have_gitlab_http_status(200)
diff --git a/spec/requests/api/pages/pages_spec.rb b/spec/requests/api/pages/pages_spec.rb
new file mode 100644
index 00000000000..2085c509eff
--- /dev/null
+++ b/spec/requests/api/pages/pages_spec.rb
@@ -0,0 +1,71 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe API::Pages do
+ let_it_be(:project) { create(:project, path: 'my.project', pages_https_only: false) }
+ let_it_be(:admin) { create(:admin) }
+ let_it_be(:user) { create(:user) }
+
+ before do
+ project.add_maintainer(user)
+ project.mark_pages_as_deployed
+ end
+
+ describe 'DELETE /projects/:id/pages' do
+ context 'when Pages is disabled' do
+ before do
+ allow(Gitlab.config.pages).to receive(:enabled).and_return(false)
+ end
+
+ it_behaves_like '404 response' do
+ let(:request) { delete api("/projects/#{project.id}/pages", admin)}
+ end
+ end
+
+ context 'when Pages is enabled' do
+ before do
+ allow(Gitlab.config.pages).to receive(:enabled).and_return(true)
+ end
+
+ context 'when Pages are deployed' do
+ it 'returns 204' do
+ delete api("/projects/#{project.id}/pages", admin)
+
+ expect(response).to have_gitlab_http_status(204)
+ end
+
+ it 'removes the pages' do
+ expect_any_instance_of(Gitlab::PagesTransfer).to receive(:rename_project).and_return true
+ expect(PagesWorker).to receive(:perform_in).with(5.minutes, :remove, project.namespace.full_path, anything)
+
+ delete api("/projects/#{project.id}/pages", admin )
+
+ expect(project.reload.pages_metadatum.deployed?).to be(false)
+ end
+ end
+
+ context 'when pages are not deployed' do
+ before do
+ project.mark_pages_as_not_deployed
+ end
+
+ it 'returns 204' do
+ delete api("/projects/#{project.id}/pages", admin)
+
+ expect(response).to have_gitlab_http_status(204)
+ end
+ end
+
+ context 'when there is no project' do
+ it 'returns 404' do
+ id = -1
+
+ delete api("/projects/#{id}/pages", admin)
+
+ expect(response).to have_gitlab_http_status(404)
+ end
+ end
+ end
+ end
+end
diff --git a/spec/requests/api/pipelines_spec.rb b/spec/requests/api/pipelines_spec.rb
index cce52cfc1ca..a9d570b5696 100644
--- a/spec/requests/api/pipelines_spec.rb
+++ b/spec/requests/api/pipelines_spec.rb
@@ -237,6 +237,20 @@ describe API::Pipelines do
end
end
+ context 'when updated_at filters are specified' do
+ let!(:pipeline1) { create(:ci_pipeline, project: project, updated_at: 2.days.ago) }
+ let!(:pipeline2) { create(:ci_pipeline, project: project, updated_at: 4.days.ago) }
+ let!(:pipeline3) { create(:ci_pipeline, project: project, updated_at: 1.hour.ago) }
+
+ it 'returns pipelines with last update date in specified datetime range' do
+ get api("/projects/#{project.id}/pipelines", user), params: { updated_before: 1.day.ago, updated_after: 3.days.ago }
+
+ expect(response).to have_gitlab_http_status(:ok)
+ expect(response).to include_pagination_headers
+ expect(json_response.first['id']).to eq(pipeline1.id)
+ end
+ end
+
context 'when order_by and sort are specified' do
context 'when order_by user_id' do
before do
@@ -384,7 +398,7 @@ describe API::Pipelines do
post api("/projects/#{project.id}/pipeline", user), params: { ref: project.default_branch }
expect(response).to have_gitlab_http_status(400)
- expect(json_response['message']['base'].first).to eq 'Missing .gitlab-ci.yml file'
+ expect(json_response['message']['base'].first).to eq 'Missing CI config file'
expect(json_response).not_to be_an Array
end
end
diff --git a/spec/requests/api/project_clusters_spec.rb b/spec/requests/api/project_clusters_spec.rb
index 04e59238877..f3d005322f2 100644
--- a/spec/requests/api/project_clusters_spec.rb
+++ b/spec/requests/api/project_clusters_spec.rb
@@ -260,7 +260,7 @@ describe API::ProjectClusters do
it 'responds with 400' do
expect(response).to have_gitlab_http_status(400)
- expect(json_response['message']['base'].first).to eq('Instance does not support multiple Kubernetes clusters')
+ expect(json_response['message']['base'].first).to eq(_('Instance does not support multiple Kubernetes clusters'))
end
end
@@ -376,7 +376,7 @@ describe API::ProjectClusters do
end
it 'returns validation error' do
- expect(json_response['message']['platform_kubernetes.base'].first).to eq('Cannot modify managed Kubernetes cluster')
+ expect(json_response['message']['platform_kubernetes.base'].first).to eq(_('Cannot modify managed Kubernetes cluster'))
end
end
diff --git a/spec/requests/api/project_export_spec.rb b/spec/requests/api/project_export_spec.rb
index 605ff888234..37f2cc85a50 100644
--- a/spec/requests/api/project_export_spec.rb
+++ b/spec/requests/api/project_export_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-describe API::ProjectExport do
+describe API::ProjectExport, :clean_gitlab_redis_cache do
set(:project) { create(:project) }
set(:project_none) { create(:project) }
set(:project_started) { create(:project) }
@@ -47,6 +47,19 @@ describe API::ProjectExport do
it_behaves_like '404 response'
end
+ shared_examples_for 'when rate limit is exceeded' do
+ before do
+ allow(::Gitlab::ApplicationRateLimiter).to receive(:throttled?).and_return(true)
+ end
+
+ it 'prevents requesting project export' do
+ request
+
+ expect(response).to have_gitlab_http_status(429)
+ expect(json_response['message']['error']).to eq('This endpoint has been requested too many times. Try again later.')
+ end
+ end
+
describe 'GET /projects/:project_id/export' do
shared_examples_for 'get project export status not found' do
it_behaves_like '404 response' do
@@ -219,6 +232,12 @@ describe API::ProjectExport do
let(:user) { admin }
it_behaves_like 'get project download by strategy'
+
+ context 'when rate limit is exceeded' do
+ let(:request) { get api(download_path, admin) }
+
+ include_examples 'when rate limit is exceeded'
+ end
end
context 'when user is a maintainer' do
@@ -329,6 +348,12 @@ describe API::ProjectExport do
let(:user) { admin }
it_behaves_like 'post project export start'
+
+ context 'when rate limit is exceeded' do
+ let(:request) { post api(path, admin) }
+
+ include_examples 'when rate limit is exceeded'
+ end
end
context 'when user is a maintainer' do
diff --git a/spec/requests/api/project_import_spec.rb b/spec/requests/api/project_import_spec.rb
index 866adbd424e..186f0f52a46 100644
--- a/spec/requests/api/project_import_spec.rb
+++ b/spec/requests/api/project_import_spec.rb
@@ -7,6 +7,7 @@ describe API::ProjectImport do
let(:user) { create(:user) }
let(:file) { File.join('spec', 'features', 'projects', 'import_export', 'test_project_export.tar.gz') }
let(:namespace) { create(:group) }
+
before do
allow_any_instance_of(Gitlab::ImportExport).to receive(:storage_path).and_return(export_path)
stub_uploads_object_storage(FileUploader)
diff --git a/spec/requests/api/project_snippets_spec.rb b/spec/requests/api/project_snippets_spec.rb
index cac3f07d0d0..bfb6f10efa3 100644
--- a/spec/requests/api/project_snippets_spec.rb
+++ b/spec/requests/api/project_snippets_spec.rb
@@ -179,7 +179,9 @@ describe API::ProjectSnippets do
end
before do
- allow_any_instance_of(AkismetService).to receive(:spam?).and_return(true)
+ allow_next_instance_of(AkismetService) do |instance|
+ allow(instance).to receive(:spam?).and_return(true)
+ end
end
context 'when the snippet is private' do
@@ -269,7 +271,9 @@ describe API::ProjectSnippets do
end
before do
- allow_any_instance_of(AkismetService).to receive(:spam?).and_return(true)
+ allow_next_instance_of(AkismetService) do |instance|
+ allow(instance).to receive(:spam?).and_return(true)
+ end
end
context 'when the snippet is private' do
diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb
index cda2dd7d2f4..9af4f484f99 100644
--- a/spec/requests/api/projects_spec.rb
+++ b/spec/requests/api/projects_spec.rb
@@ -1882,6 +1882,7 @@ describe API::Projects do
describe "POST /projects/:id/share" do
let(:group) { create(:group) }
+
before do
group.add_developer(user)
end
diff --git a/spec/requests/api/releases_spec.rb b/spec/requests/api/releases_spec.rb
index bf05587fe03..da04e852795 100644
--- a/spec/requests/api/releases_spec.rb
+++ b/spec/requests/api/releases_spec.rb
@@ -558,6 +558,43 @@ describe API::Releases do
end
end
+ context 'when using JOB-TOKEN auth' do
+ let(:job) { create(:ci_build, user: maintainer) }
+ let(:params) do
+ {
+ name: 'Another release',
+ tag_name: 'v0.2',
+ description: 'Another nice release',
+ released_at: '2019-04-25T10:00:00+09:00'
+ }
+ end
+
+ context 'when no token is provided' do
+ it 'returns a :not_found error' do
+ post api("/projects/#{project.id}/releases"), params: params
+
+ expect(response).to have_gitlab_http_status(:not_found)
+ end
+ end
+
+ context 'when an invalid token is provided' do
+ it 'returns an :unauthorized error' do
+ post api("/projects/#{project.id}/releases"), params: params.merge(job_token: 'yadayadayada')
+
+ expect(response).to have_gitlab_http_status(:unauthorized)
+ end
+ end
+
+ context 'when a valid token is provided' do
+ it 'creates the release' do
+ post api("/projects/#{project.id}/releases"), params: params.merge(job_token: job.token)
+
+ expect(response).to have_gitlab_http_status(:created)
+ expect(project.releases.last.description).to eq('Another nice release')
+ end
+ end
+ end
+
context 'when tag does not exist in git repository' do
let(:params) do
{
diff --git a/spec/requests/api/remote_mirrors_spec.rb b/spec/requests/api/remote_mirrors_spec.rb
new file mode 100644
index 00000000000..c5ba9bd223e
--- /dev/null
+++ b/spec/requests/api/remote_mirrors_spec.rb
@@ -0,0 +1,41 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe API::RemoteMirrors do
+ let_it_be(:user) { create(:user) }
+ let_it_be(:project) { create(:project, :repository, :remote_mirror) }
+
+ describe 'GET /projects/:id/remote_mirrors' do
+ let(:route) { "/projects/#{project.id}/remote_mirrors" }
+
+ it 'requires `admin_remote_mirror` permission' do
+ project.add_developer(user)
+
+ get api(route, user)
+
+ expect(response).to have_gitlab_http_status(:unauthorized)
+ end
+
+ it 'returns a list of remote mirrors' do
+ project.add_maintainer(user)
+
+ get api(route, user)
+
+ expect(response).to have_gitlab_http_status(:success)
+ expect(response).to match_response_schema('remote_mirrors')
+ end
+
+ context 'with the `remote_mirrors_api` feature disabled' do
+ before do
+ stub_feature_flags(remote_mirrors_api: false)
+ end
+
+ it 'responds with `not_found`' do
+ get api(route, user)
+
+ expect(response).to have_gitlab_http_status(:not_found)
+ end
+ end
+ end
+end
diff --git a/spec/requests/api/runner_spec.rb b/spec/requests/api/runner_spec.rb
index 6138036b0af..cc6cadb190a 100644
--- a/spec/requests/api/runner_spec.rb
+++ b/spec/requests/api/runner_spec.rb
@@ -513,6 +513,16 @@ describe API::Runner, :clean_gitlab_redis_shared_state do
expect(json_response['features']).to eq(expected_features)
end
+ it 'creates persistent ref' do
+ expect_any_instance_of(Ci::PersistentRef).to receive(:create_ref)
+ .with(job.sha, "refs/#{Repository::REF_PIPELINES}/#{job.commit_id}")
+
+ request_job info: { platform: :darwin }
+
+ expect(response).to have_gitlab_http_status(201)
+ expect(json_response['id']).to eq(job.id)
+ end
+
context 'when job is made for tag' do
let!(:job) { create(:ci_build, :tag, pipeline: pipeline, name: 'spinach', stage: 'test', stage_idx: 0) }
diff --git a/spec/requests/api/services_spec.rb b/spec/requests/api/services_spec.rb
index a080b59173f..7c7620389b4 100644
--- a/spec/requests/api/services_spec.rb
+++ b/spec/requests/api/services_spec.rb
@@ -4,7 +4,6 @@ require "spec_helper"
describe API::Services do
set(:user) { create(:user) }
- set(:admin) { create(:admin) }
set(:user2) { create(:user) }
set(:project) do
@@ -88,14 +87,7 @@ describe API::Services do
expect(response).to have_gitlab_http_status(401)
end
- it "returns all properties of service #{service} when authenticated as admin" do
- get api("/projects/#{project.id}/services/#{dashed_service}", admin)
-
- expect(response).to have_gitlab_http_status(200)
- expect(json_response['properties'].keys).to match_array(service_instance.api_field_names)
- end
-
- it "returns properties of service #{service} other than passwords when authenticated as project owner" do
+ it "returns all properties of service #{service}" do
get api("/projects/#{project.id}/services/#{dashed_service}", user)
expect(response).to have_gitlab_http_status(200)
diff --git a/spec/requests/api/settings_spec.rb b/spec/requests/api/settings_spec.rb
index b7586307929..af86ba86303 100644
--- a/spec/requests/api/settings_spec.rb
+++ b/spec/requests/api/settings_spec.rb
@@ -4,6 +4,7 @@ require 'spec_helper'
describe API::Settings, 'Settings' do
let(:user) { create(:user) }
+
set(:admin) { create(:admin) }
describe "GET /application/settings" do
@@ -36,6 +37,7 @@ describe API::Settings, 'Settings' do
expect(json_response['allow_local_requests_from_system_hooks']).to be(true)
expect(json_response).not_to have_key('performance_bar_allowed_group_path')
expect(json_response).not_to have_key('performance_bar_enabled')
+ expect(json_response['snippet_size_limit']).to eq(50.megabytes)
end
end
@@ -85,7 +87,8 @@ describe API::Settings, 'Settings' do
allow_local_requests_from_web_hooks_and_services: true,
allow_local_requests_from_system_hooks: false,
push_event_hooks_limit: 2,
- push_event_activities_limit: 2
+ push_event_activities_limit: 2,
+ snippet_size_limit: 5
}
expect(response).to have_gitlab_http_status(200)
@@ -121,6 +124,7 @@ describe API::Settings, 'Settings' do
expect(json_response['allow_local_requests_from_system_hooks']).to eq(false)
expect(json_response['push_event_hooks_limit']).to eq(2)
expect(json_response['push_event_activities_limit']).to eq(2)
+ expect(json_response['snippet_size_limit']).to eq(5)
end
end
diff --git a/spec/requests/api/snippets_spec.rb b/spec/requests/api/snippets_spec.rb
index 36d2a0d7ea7..f32be7a8765 100644
--- a/spec/requests/api/snippets_spec.rb
+++ b/spec/requests/api/snippets_spec.rb
@@ -66,6 +66,9 @@ describe API::Snippets do
let!(:public_snippet_other) { create(:personal_snippet, :public, author: other_user) }
let!(:private_snippet_other) { create(:personal_snippet, :private, author: other_user) }
let!(:internal_snippet_other) { create(:personal_snippet, :internal, author: other_user) }
+ let!(:public_snippet_project) { create(:project_snippet, :public, author: user) }
+ let!(:private_snippet_project) { create(:project_snippet, :private, author: user) }
+ let!(:internal_snippet_project) { create(:project_snippet, :internal, author: user) }
it 'returns all snippets with public visibility from all users' do
get api("/snippets/public", user)
@@ -76,10 +79,10 @@ describe API::Snippets do
expect(json_response.map { |snippet| snippet['id']} ).to contain_exactly(
public_snippet.id,
public_snippet_other.id)
- expect(json_response.map { |snippet| snippet['web_url']} ).to include(
+ expect(json_response.map { |snippet| snippet['web_url']} ).to contain_exactly(
"http://localhost/snippets/#{public_snippet.id}",
"http://localhost/snippets/#{public_snippet_other.id}")
- expect(json_response.map { |snippet| snippet['raw_url']} ).to include(
+ expect(json_response.map { |snippet| snippet['raw_url']} ).to contain_exactly(
"http://localhost/snippets/#{public_snippet.id}/raw",
"http://localhost/snippets/#{public_snippet_other.id}/raw")
end
@@ -235,7 +238,9 @@ describe API::Snippets do
end
before do
- allow_any_instance_of(AkismetService).to receive(:spam?).and_return(true)
+ allow_next_instance_of(AkismetService) do |instance|
+ allow(instance).to receive(:spam?).and_return(true)
+ end
end
context 'when the snippet is private' do
@@ -322,7 +327,9 @@ describe API::Snippets do
end
before do
- allow_any_instance_of(AkismetService).to receive(:spam?).and_return(true)
+ allow_next_instance_of(AkismetService) do |instance|
+ allow(instance).to receive(:spam?).and_return(true)
+ end
end
context 'when the snippet is private' do
@@ -368,6 +375,7 @@ describe API::Snippets do
describe 'DELETE /snippets/:id' do
let!(:public_snippet) { create(:personal_snippet, :public, author: user) }
+
it 'deletes snippet' do
expect do
delete api("/snippets/#{public_snippet.id}", user)
diff --git a/spec/requests/api/tags_spec.rb b/spec/requests/api/tags_spec.rb
index dca87d5e4ce..09e63b86cfc 100644
--- a/spec/requests/api/tags_spec.rb
+++ b/spec/requests/api/tags_spec.rb
@@ -328,7 +328,9 @@ describe API::Tags do
let(:route) { "/projects/#{project_id}/repository/tags/#{tag_name}" }
before do
- allow_any_instance_of(Repository).to receive(:rm_tag).and_return(true)
+ allow_next_instance_of(Repository) do |instance|
+ allow(instance).to receive(:rm_tag).and_return(true)
+ end
end
shared_examples_for 'repository delete tag' do
diff --git a/spec/requests/api/users_spec.rb b/spec/requests/api/users_spec.rb
index 1a1e80f1ce3..0a22a09b8a6 100644
--- a/spec/requests/api/users_spec.rb
+++ b/spec/requests/api/users_spec.rb
@@ -1261,6 +1261,25 @@ describe API::Users do
expect { Namespace.find(namespace.id) }.to raise_error ActiveRecord::RecordNotFound
end
+ context "sole owner of a group" do
+ let!(:group) { create(:group).tap { |group| group.add_owner(user) } }
+
+ context "hard delete disabled" do
+ it "does not delete user" do
+ perform_enqueued_jobs { delete api("/users/#{user.id}", admin)}
+ expect(response).to have_gitlab_http_status(409)
+ end
+ end
+
+ context "hard delete enabled" do
+ it "delete user and group", :sidekiq_might_not_need_inline do
+ perform_enqueued_jobs { delete api("/users/#{user.id}?hard_delete=true", admin)}
+ expect(response).to have_gitlab_http_status(204)
+ expect(Group.exists?(group.id)).to be_falsy
+ end
+ end
+ end
+
it_behaves_like '412 response' do
let(:request) { api("/users/#{user.id}", admin) }
end
@@ -2105,6 +2124,7 @@ describe API::Users do
describe 'GET /user/status' do
let(:path) { '/user/status' }
+
it_behaves_like 'rendering user status'
end
diff --git a/spec/requests/git_http_spec.rb b/spec/requests/git_http_spec.rb
index 1b17d492b0c..42b4bd71b88 100644
--- a/spec/requests/git_http_spec.rb
+++ b/spec/requests/git_http_spec.rb
@@ -456,7 +456,7 @@ describe 'Git HTTP requests' do
end
it "responds with status 403" do
- expect(Rack::Attack::Allow2Ban).to receive(:filter).and_return(true)
+ expect(Rack::Attack::Allow2Ban).to receive(:banned?).and_return(true)
expect(Gitlab::AuthLogger).to receive(:error).with({
message: 'Rack_Attack',
env: :blocklist,
diff --git a/spec/requests/jwt_controller_spec.rb b/spec/requests/jwt_controller_spec.rb
index c1f99115612..199c2dbe9ca 100644
--- a/spec/requests/jwt_controller_spec.rb
+++ b/spec/requests/jwt_controller_spec.rb
@@ -134,7 +134,9 @@ describe JwtController do
context 'when internal auth is disabled' do
it 'rejects the authorization attempt with personal access token message' do
- allow_any_instance_of(ApplicationSetting).to receive(:password_authentication_enabled_for_git?) { false }
+ allow_next_instance_of(ApplicationSetting) do |instance|
+ allow(instance).to receive(:password_authentication_enabled_for_git?) { false }
+ end
get '/jwt/auth', params: parameters, headers: headers
expect(response).to have_gitlab_http_status(401)
diff --git a/spec/requests/projects/merge_requests/creations_spec.rb b/spec/requests/projects/merge_requests/creations_spec.rb
new file mode 100644
index 00000000000..d192e1bca7f
--- /dev/null
+++ b/spec/requests/projects/merge_requests/creations_spec.rb
@@ -0,0 +1,28 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe 'merge requests creations' do
+ describe 'GET /:namespace/:project/merge_requests/new' do
+ include ProjectForksHelper
+
+ let(:project) { create(:project, :repository) }
+ let(:user) { project.owner }
+
+ before do
+ login_as(user)
+ end
+
+ def get_new
+ get namespace_project_new_merge_request_path(namespace_id: project.namespace, project_id: project)
+ end
+
+ it 'avoids N+1 DB queries even with forked projects' do
+ control = ActiveRecord::QueryRecorder.new(skip_cached: false) { get_new }
+
+ 5.times { fork_project(project, user) }
+
+ expect { get_new }.not_to exceed_query_limit(control)
+ end
+ end
+end
diff --git a/spec/requests/rack_attack_global_spec.rb b/spec/requests/rack_attack_global_spec.rb
index 4d5055a7e27..9968b2e4aba 100644
--- a/spec/requests/rack_attack_global_spec.rb
+++ b/spec/requests/rack_attack_global_spec.rb
@@ -84,7 +84,9 @@ describe 'Rack Attack global throttles' do
expect(response).to have_http_status 200
end
- expect_any_instance_of(Rack::Attack::Request).to receive(:ip).at_least(:once).and_return('1.2.3.4')
+ expect_next_instance_of(Rack::Attack::Request) do |instance|
+ expect(instance).to receive(:ip).at_least(:once).and_return('1.2.3.4')
+ end
# would be over limit for the same IP
get url_that_does_not_require_authentication
@@ -100,6 +102,18 @@ describe 'Rack Attack global throttles' do
end
end
+ context 'when the request is authenticated by a runner token' do
+ let(:request_jobs_url) { '/api/v4/jobs/request' }
+ let(:runner) { create(:ci_runner) }
+
+ it 'does not cont as unauthenticated' do
+ (1 + requests_per_period).times do
+ post request_jobs_url, params: { token: runner.token }
+ expect(response).to have_http_status 204
+ end
+ end
+ end
+
it 'logs RackAttack info into structured logs' do
requests_per_period.times do
get url_that_does_not_require_authentication
@@ -249,10 +263,10 @@ describe 'Rack Attack global throttles' do
expect_rejection { post protected_path_that_does_not_require_authentication, params: post_params }
end
- context 'when Omnibus throttle is present' do
+ context 'when Omnibus throttle should be used' do
before do
allow(Gitlab::Throttle)
- .to receive(:omnibus_protected_paths_present?).and_return(true)
+ .to receive(:should_use_omnibus_protected_paths?).and_return(true)
end
it 'allows requests over the rate limit' do
@@ -298,7 +312,7 @@ describe 'Rack Attack global throttles' do
it_behaves_like 'rate-limited token-authenticated requests'
end
- context 'when Omnibus throttle is present' do
+ context 'when Omnibus throttle should be used' do
let(:request_args) { [api(api_partial_url, personal_access_token: token)] }
let(:other_user_request_args) { [api(api_partial_url, personal_access_token: other_user_token)] }
@@ -309,7 +323,7 @@ describe 'Rack Attack global throttles' do
stub_application_setting(settings_to_set)
allow(Gitlab::Throttle)
- .to receive(:omnibus_protected_paths_present?).and_return(true)
+ .to receive(:should_use_omnibus_protected_paths?).and_return(true)
end
it 'allows requests over the rate limit' do
@@ -339,7 +353,7 @@ describe 'Rack Attack global throttles' do
it_behaves_like 'rate-limited web authenticated requests'
- context 'when Omnibus throttle is present' do
+ context 'when Omnibus throttle should be used' do
before do
settings_to_set[:"#{throttle_setting_prefix}_requests_per_period"] = requests_per_period
settings_to_set[:"#{throttle_setting_prefix}_period_in_seconds"] = period_in_seconds
@@ -347,7 +361,7 @@ describe 'Rack Attack global throttles' do
stub_application_setting(settings_to_set)
allow(Gitlab::Throttle)
- .to receive(:omnibus_protected_paths_present?).and_return(true)
+ .to receive(:should_use_omnibus_protected_paths?).and_return(true)
login_as(user)
end
diff --git a/spec/requests/user_avatar_spec.rb b/spec/requests/user_avatar_spec.rb
new file mode 100644
index 00000000000..9451674161c
--- /dev/null
+++ b/spec/requests/user_avatar_spec.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe 'Loading a user avatar' do
+ let(:user) { create(:user, :with_avatar) }
+
+ context 'when logged in' do
+ # The exact query count will vary depending on the 2FA settings of the
+ # instance, group, and user. Removing those extra 2FA queries in this case
+ # may not be a good idea, so we just set up the ideal case.
+ before do
+ stub_application_setting(require_two_factor_authentication: true)
+
+ login_as(create(:user, :two_factor))
+ end
+
+ # One each for: current user, avatar user, and upload record
+ it 'only performs three SQL queries' do
+ get user.avatar_url # Skip queries on first application load
+
+ expect(response).to have_gitlab_http_status(200)
+ expect { get user.avatar_url }.not_to exceed_query_limit(3)
+ end
+ end
+
+ context 'when logged out' do
+ # One each for avatar user and upload record
+ it 'only performs two SQL queries' do
+ get user.avatar_url # Skip queries on first application load
+
+ expect(response).to have_gitlab_http_status(200)
+ expect { get user.avatar_url }.not_to exceed_query_limit(2)
+ end
+ end
+end
diff --git a/spec/routing/environments_spec.rb b/spec/routing/environments_spec.rb
index ea172698764..46d4f31dd31 100644
--- a/spec/routing/environments_spec.rb
+++ b/spec/routing/environments_spec.rb
@@ -11,7 +11,7 @@ describe 'environments routing' do
end
let(:environments_route) do
- "#{project.full_path}/environments/"
+ "#{project.full_path}/-/environments/"
end
describe 'routing environment folders' do
@@ -38,7 +38,7 @@ describe 'environments routing' do
end
def get_folder(folder)
- get("#{project.full_path}/environments/folders/#{folder}")
+ get("#{project.full_path}/-/environments/folders/#{folder}")
end
def folder_action(**opts)
diff --git a/spec/routing/instance_statistics_routing_spec.rb b/spec/routing/instance_statistics_routing_spec.rb
index b94faabfa1d..48a3ac4695c 100644
--- a/spec/routing/instance_statistics_routing_spec.rb
+++ b/spec/routing/instance_statistics_routing_spec.rb
@@ -5,7 +5,7 @@ require 'spec_helper'
describe 'Instance Statistics', 'routing' do
include RSpec::Rails::RequestExampleGroup
- it "routes '/-/instance_statistics' to conversational development index" do
- expect(get('/-/instance_statistics')).to redirect_to('/-/instance_statistics/conversational_development_index')
+ it "routes '/-/instance_statistics' to dev ops score" do
+ expect(get('/-/instance_statistics')).to redirect_to('/-/instance_statistics/dev_ops_score')
end
end
diff --git a/spec/routing/project_routing_spec.rb b/spec/routing/project_routing_spec.rb
index 561c2b572ec..287db20448a 100644
--- a/spec/routing/project_routing_spec.rb
+++ b/spec/routing/project_routing_spec.rb
@@ -155,17 +155,21 @@ describe 'project routing' do
# DELETE /:project_id/wikis/:id(.:format) projects/wikis#destroy
describe Projects::WikisController, 'routing' do
it 'to #pages' do
- expect(get('/gitlab/gitlabhq/wikis/pages')).to route_to('projects/wikis#pages', namespace_id: 'gitlab', project_id: 'gitlabhq')
+ expect(get('/gitlab/gitlabhq/-/wikis/pages')).to route_to('projects/wikis#pages', namespace_id: 'gitlab', project_id: 'gitlabhq')
end
it 'to #history' do
- expect(get('/gitlab/gitlabhq/wikis/1/history')).to route_to('projects/wikis#history', namespace_id: 'gitlab', project_id: 'gitlabhq', id: '1')
+ expect(get('/gitlab/gitlabhq/-/wikis/1/history')).to route_to('projects/wikis#history', namespace_id: 'gitlab', project_id: 'gitlabhq', id: '1')
end
it_behaves_like 'RESTful project resources' do
let(:actions) { [:create, :edit, :show, :destroy] }
let(:controller) { 'wikis' }
+ let(:controller_path) { '/-/wikis' }
end
+
+ it_behaves_like 'redirecting a legacy project path', "/gitlab/gitlabhq/wikis", "/gitlab/gitlabhq/-/wikis"
+ it_behaves_like 'redirecting a legacy project path', "/gitlab/gitlabhq/wikis/home/edit", "/gitlab/gitlabhq/-/wikis/home/edit"
end
# branches_project_repository GET /:project_id/repository/branches(.:format) projects/repositories#branches
@@ -794,4 +798,28 @@ describe 'project routing' do
expect(post('/gitlab/gitlabhq/usage_ping/web_ide_clientside_preview')).to route_to('projects/usage_ping#web_ide_clientside_preview', namespace_id: 'gitlab', project_id: 'gitlabhq')
end
end
+
+ describe Projects::EnvironmentsController, 'routing' do
+ describe 'legacy routing' do
+ it_behaves_like 'redirecting a legacy project path', "/gitlab/gitlabhq/environments", "/gitlab/gitlabhq/-/environments"
+ end
+ end
+
+ describe Projects::ClustersController, 'routing' do
+ describe 'legacy routing' do
+ it_behaves_like 'redirecting a legacy project path', "/gitlab/gitlabhq/clusters", "/gitlab/gitlabhq/-/clusters"
+ end
+ end
+
+ describe Projects::ErrorTrackingController, 'routing' do
+ describe 'legacy routing' do
+ it_behaves_like 'redirecting a legacy project path', "/gitlab/gitlabhq/error_tracking", "/gitlab/gitlabhq/-/error_tracking"
+ end
+ end
+
+ describe Projects::Serverless, 'routing' do
+ describe 'legacy routing' do
+ it_behaves_like 'redirecting a legacy project path', "/gitlab/gitlabhq/serverless", "/gitlab/gitlabhq/-/serverless"
+ end
+ end
end
diff --git a/spec/rubocop/cop/avoid_break_from_strong_memoize_spec.rb b/spec/rubocop/cop/avoid_break_from_strong_memoize_spec.rb
index 62f6c7a3414..feb85c354ef 100644
--- a/spec/rubocop/cop/avoid_break_from_strong_memoize_spec.rb
+++ b/spec/rubocop/cop/avoid_break_from_strong_memoize_spec.rb
@@ -62,7 +62,9 @@ describe RuboCop::Cop::AvoidBreakFromStrongMemoize do
end
end
RUBY
- expect_any_instance_of(described_class).to receive(:add_offense).once
+ expect_next_instance_of(described_class) do |instance|
+ expect(instance).to receive(:add_offense).once
+ end
inspect_source(source)
end
diff --git a/spec/rubocop/cop/avoid_return_from_blocks_spec.rb b/spec/rubocop/cop/avoid_return_from_blocks_spec.rb
index 133d286ccd2..919cd3d98f3 100644
--- a/spec/rubocop/cop/avoid_return_from_blocks_spec.rb
+++ b/spec/rubocop/cop/avoid_return_from_blocks_spec.rb
@@ -29,7 +29,9 @@ describe RuboCop::Cop::AvoidReturnFromBlocks do
end
end
RUBY
- expect_any_instance_of(described_class).to receive(:add_offense).once
+ expect_next_instance_of(described_class) do |instance|
+ expect(instance).to receive(:add_offense).once
+ end
inspect_source(source)
end
diff --git a/spec/rubocop/cop/graphql/authorize_types_spec.rb b/spec/rubocop/cop/graphql/authorize_types_spec.rb
index af4315ecd34..98797a780e0 100644
--- a/spec/rubocop/cop/graphql/authorize_types_spec.rb
+++ b/spec/rubocop/cop/graphql/authorize_types_spec.rb
@@ -79,5 +79,15 @@ describe RuboCop::Cop::Graphql::AuthorizeTypes do
end
TYPE
end
+
+ it 'does not add an offense for Enums' do
+ expect_no_offenses(<<~TYPE)
+ module Types
+ class ATypeEnum < AnotherEnum
+ field :a_thing
+ end
+ end
+ TYPE
+ end
end
end
diff --git a/spec/rubocop/cop/ignored_columns_spec.rb b/spec/rubocop/cop/ignored_columns_spec.rb
new file mode 100644
index 00000000000..64437765018
--- /dev/null
+++ b/spec/rubocop/cop/ignored_columns_spec.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require 'rubocop'
+require 'rubocop/rspec/support'
+require_relative '../../../rubocop/cop/ignored_columns'
+
+describe RuboCop::Cop::IgnoredColumns do
+ include CopHelper
+
+ subject(:cop) { described_class.new }
+
+ it 'flags the use of destroy_all with a local variable receiver' do
+ inspect_source(<<~RUBY)
+ class Foo < ApplicationRecord
+ self.ignored_columns += %i[id]
+ end
+ RUBY
+
+ expect(cop.offenses.size).to eq(1)
+ end
+end
diff --git a/spec/rubocop/cop/migration/add_index_spec.rb b/spec/rubocop/cop/migration/add_index_spec.rb
new file mode 100644
index 00000000000..0c3f87e5bf8
--- /dev/null
+++ b/spec/rubocop/cop/migration/add_index_spec.rb
@@ -0,0 +1,39 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+require 'rubocop'
+require 'rubocop/rspec/support'
+
+require_relative '../../../../rubocop/cop/migration/add_index'
+
+describe RuboCop::Cop::Migration::AddIndex do
+ include CopHelper
+
+ subject(:cop) { described_class.new }
+
+ context 'in migration' do
+ before do
+ allow(cop).to receive(:in_migration?).and_return(true)
+ end
+
+ it 'registers an offense when add_index is used' do
+ expect_offense(<<~PATTERN.strip_indent)
+ def change
+ add_index :table, :column
+ ^^^^^^^^^ `add_index` requires downtime, use `add_concurrent_index` instead
+ end
+ PATTERN
+ end
+ end
+
+ context 'outside of migration' do
+ it 'registers no offense' do
+ expect_no_offenses(<<~PATTERN.strip_indent)
+ def change
+ add_index :table, :column
+ end
+ PATTERN
+ end
+ end
+end
diff --git a/spec/rubocop/cop/put_group_routes_under_scope_spec.rb b/spec/rubocop/cop/put_group_routes_under_scope_spec.rb
new file mode 100644
index 00000000000..fc4d0015dde
--- /dev/null
+++ b/spec/rubocop/cop/put_group_routes_under_scope_spec.rb
@@ -0,0 +1,48 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require 'rubocop'
+require_relative '../../../rubocop/cop/put_group_routes_under_scope'
+
+describe RuboCop::Cop::PutGroupRoutesUnderScope do
+ include CopHelper
+
+ subject(:cop) { described_class.new }
+
+ before do
+ allow(cop).to receive(:in_group_routes?).and_return(true)
+ end
+
+ it 'registers an offense when route is outside scope' do
+ expect_offense(<<~PATTERN.strip_indent)
+ scope(path: 'groups/*group_id/-', module: :groups) do
+ resource :issues
+ end
+
+ resource :notes
+ ^^^^^^^^^^^^^^^ Put new group routes under /-/ scope
+ PATTERN
+ end
+
+ it 'does not register an offense when resource inside the scope' do
+ expect_no_offenses(<<~PATTERN.strip_indent)
+ scope(path: 'groups/*group_id/-', module: :groups) do
+ resource :issues
+ resource :notes
+ end
+ PATTERN
+ end
+
+ it 'does not register an offense when resource is deep inside the scope' do
+ expect_no_offenses(<<~PATTERN.strip_indent)
+ scope(path: 'groups/*group_id/-', module: :groups) do
+ resource :issues
+ resource :projects do
+ resource :issues do
+ resource :notes
+ end
+ end
+ end
+ PATTERN
+ end
+end
diff --git a/spec/rubocop/cop/put_project_routes_under_scope_spec.rb b/spec/rubocop/cop/put_project_routes_under_scope_spec.rb
new file mode 100644
index 00000000000..b0f1e52f397
--- /dev/null
+++ b/spec/rubocop/cop/put_project_routes_under_scope_spec.rb
@@ -0,0 +1,48 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require 'rubocop'
+require_relative '../../../rubocop/cop/put_project_routes_under_scope'
+
+describe RuboCop::Cop::PutProjectRoutesUnderScope do
+ include CopHelper
+
+ subject(:cop) { described_class.new }
+
+ before do
+ allow(cop).to receive(:in_project_routes?).and_return(true)
+ end
+
+ it 'registers an offense when route is outside scope' do
+ expect_offense(<<~PATTERN.strip_indent)
+ scope '-' do
+ resource :issues
+ end
+
+ resource :notes
+ ^^^^^^^^^^^^^^^ Put new project routes under /-/ scope
+ PATTERN
+ end
+
+ it 'does not register an offense when resource inside the scope' do
+ expect_no_offenses(<<~PATTERN.strip_indent)
+ scope '-' do
+ resource :issues
+ resource :notes
+ end
+ PATTERN
+ end
+
+ it 'does not register an offense when resource is deep inside the scope' do
+ expect_no_offenses(<<~PATTERN.strip_indent)
+ scope '-' do
+ resource :issues
+ resource :projects do
+ resource :issues do
+ resource :notes
+ end
+ end
+ end
+ PATTERN
+ end
+end
diff --git a/spec/serializers/analytics_summary_serializer_spec.rb b/spec/serializers/analytics_summary_serializer_spec.rb
index 33a41706794..06f2c0ca68b 100644
--- a/spec/serializers/analytics_summary_serializer_spec.rb
+++ b/spec/serializers/analytics_summary_serializer_spec.rb
@@ -16,8 +16,9 @@ describe AnalyticsSummarySerializer do
end
before do
- allow_any_instance_of(Gitlab::CycleAnalytics::Summary::Issue)
- .to receive(:value).and_return(1.12)
+ allow_next_instance_of(Gitlab::CycleAnalytics::Summary::Issue) do |instance|
+ allow(instance).to receive(:value).and_return(1.12)
+ end
end
it 'generates payload for single object' do
diff --git a/spec/serializers/cluster_application_entity_spec.rb b/spec/serializers/cluster_application_entity_spec.rb
index cb9325986d7..c700c150461 100644
--- a/spec/serializers/cluster_application_entity_spec.rb
+++ b/spec/serializers/cluster_application_entity_spec.rb
@@ -5,6 +5,7 @@ require 'spec_helper'
describe ClusterApplicationEntity do
describe '#as_json' do
let(:application) { build(:clusters_applications_helm, version: '0.1.1') }
+
subject { described_class.new(application).as_json }
it 'has name' do
diff --git a/spec/serializers/cluster_basic_entity_spec.rb b/spec/serializers/cluster_basic_entity_spec.rb
index be03ee91784..8c3307a1837 100644
--- a/spec/serializers/cluster_basic_entity_spec.rb
+++ b/spec/serializers/cluster_basic_entity_spec.rb
@@ -24,7 +24,7 @@ describe ClusterBasicEntity do
it 'exposes the cluster details' do
expect(subject[:name]).to eq('the-cluster')
- expect(subject[:path]).to eq("/#{project.full_path}/clusters/#{cluster.id}")
+ expect(subject[:path]).to eq("/#{project.full_path}/-/clusters/#{cluster.id}")
end
context 'when the user does not have permission to view the cluster' do
diff --git a/spec/serializers/cluster_entity_spec.rb b/spec/serializers/cluster_entity_spec.rb
index 22b9166f922..e3826a7221d 100644
--- a/spec/serializers/cluster_entity_spec.rb
+++ b/spec/serializers/cluster_entity_spec.rb
@@ -39,6 +39,7 @@ describe ClusterEntity do
context 'when no application has been installed' do
let(:cluster) { create(:cluster) }
+
subject { described_class.new(cluster).as_json[:applications]}
it 'contains helm as not_installable' do
diff --git a/spec/serializers/deployment_entity_spec.rb b/spec/serializers/deployment_entity_spec.rb
index d7816a3503d..2a57ea51b39 100644
--- a/spec/serializers/deployment_entity_spec.rb
+++ b/spec/serializers/deployment_entity_spec.rb
@@ -107,6 +107,36 @@ describe DeploymentEntity do
end
end
+ describe 'playable_build' do
+ let_it_be(:project) { create(:project, :repository) }
+
+ context 'when the deployment has a playable deployable' do
+ context 'when this build is ready to be played' do
+ let(:build) { create(:ci_build, :playable, :scheduled, pipeline: pipeline) }
+
+ it 'exposes only the play_path' do
+ expect(subject[:playable_build].keys).to contain_exactly(:play_path)
+ end
+ end
+
+ context 'when this build has failed' do
+ let(:build) { create(:ci_build, :playable, :failed, pipeline: pipeline) }
+
+ it 'exposes the play_path and the retry_path' do
+ expect(subject[:playable_build].keys).to contain_exactly(:play_path, :retry_path)
+ end
+ end
+ end
+
+ context 'when the deployment does not have a playable deployable' do
+ let(:build) { create(:ci_build) }
+
+ it 'is not exposed' do
+ expect(subject[:playable_build]).to be_nil
+ end
+ end
+ end
+
context 'when deployment details serialization was disabled' do
include Gitlab::Routing
diff --git a/spec/serializers/diffs_metadata_entity_spec.rb b/spec/serializers/diffs_metadata_entity_spec.rb
index aaca393ec27..0fa643d37b3 100644
--- a/spec/serializers/diffs_metadata_entity_spec.rb
+++ b/spec/serializers/diffs_metadata_entity_spec.rb
@@ -36,8 +36,16 @@ describe DiffsMetadataEntity do
describe 'diff_files' do
it 'returns diff files metadata' do
- payload =
- DiffFileMetadataEntity.represent(merge_request_diff.diffs.diff_files).as_json
+ raw_diff_files = merge_request_diff.diffs.raw_diff_files
+
+ expect_next_instance_of(Gitlab::Diff::FileCollection::MergeRequestDiff) do |instance|
+ # Use lightweight version instead. Several methods delegate to it, so putting a 5
+ # calls limit.
+ expect(instance).to receive(:raw_diff_files).at_most(5).times.and_call_original
+ expect(instance).not_to receive(:diff_files)
+ end
+
+ payload = DiffFileMetadataEntity.represent(raw_diff_files).as_json
expect(subject[:diff_files]).to eq(payload)
end
diff --git a/spec/serializers/environment_entity_spec.rb b/spec/serializers/environment_entity_spec.rb
index b8910fd6eee..f392ecea959 100644
--- a/spec/serializers/environment_entity_spec.rb
+++ b/spec/serializers/environment_entity_spec.rb
@@ -9,6 +9,7 @@ describe EnvironmentEntity do
end
let(:environment) { create(:environment) }
+
subject { entity.as_json }
it 'exposes latest deployment' do
@@ -62,4 +63,12 @@ describe EnvironmentEntity do
end
end
end
+
+ context 'with auto_stop_in' do
+ let(:environment) { create(:environment, :will_auto_stop) }
+
+ it 'exposes auto stop related information' do
+ expect(subject).to include(:cancel_auto_stop_path, :auto_stop_at)
+ end
+ end
end
diff --git a/spec/serializers/environment_status_entity_spec.rb b/spec/serializers/environment_status_entity_spec.rb
index 0687751fd67..6d98f91cfde 100644
--- a/spec/serializers/environment_status_entity_spec.rb
+++ b/spec/serializers/environment_status_entity_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
describe EnvironmentStatusEntity do
let(:user) { create(:user) }
- let(:request) { double('request') }
+ let(:request) { double('request', project: project) }
let(:deployment) { create(:deployment, :succeed, :review_app) }
let(:environment) { deployment.environment }
@@ -28,6 +28,7 @@ describe EnvironmentStatusEntity do
it { is_expected.to include(:external_url_formatted) }
it { is_expected.to include(:deployed_at) }
it { is_expected.to include(:deployed_at_formatted) }
+ it { is_expected.to include(:details) }
it { is_expected.to include(:changes) }
it { is_expected.to include(:status) }
@@ -72,7 +73,7 @@ describe EnvironmentStatusEntity do
it 'returns metrics url' do
expect(subject[:metrics_url])
- .to eq("/#{project.full_path}/environments/#{environment.id}/deployments/#{deployment.iid}/metrics")
+ .to eq("/#{project.full_path}/-/environments/#{environment.id}/deployments/#{deployment.iid}/metrics")
end
end
diff --git a/spec/serializers/group_child_entity_spec.rb b/spec/serializers/group_child_entity_spec.rb
index 198a55d5433..cae263e7fd5 100644
--- a/spec/serializers/group_child_entity_spec.rb
+++ b/spec/serializers/group_child_entity_spec.rb
@@ -9,6 +9,7 @@ describe GroupChildEntity do
let(:user) { create(:user) }
let(:request) { double('request') }
let(:entity) { described_class.new(object, request: request) }
+
subject(:json) { entity.as_json }
before do
diff --git a/spec/serializers/group_child_serializer_spec.rb b/spec/serializers/group_child_serializer_spec.rb
index 128e06cd172..92f083ed23e 100644
--- a/spec/serializers/group_child_serializer_spec.rb
+++ b/spec/serializers/group_child_serializer_spec.rb
@@ -5,6 +5,7 @@ require 'spec_helper'
describe GroupChildSerializer do
let(:request) { double('request') }
let(:user) { create(:user) }
+
subject(:serializer) { described_class.new(current_user: user) }
describe '#represent' do
diff --git a/spec/serializers/issue_entity_spec.rb b/spec/serializers/issue_entity_spec.rb
index 224ed0b402f..a1868b2631b 100644
--- a/spec/serializers/issue_entity_spec.rb
+++ b/spec/serializers/issue_entity_spec.rb
@@ -92,4 +92,36 @@ describe IssueEntity do
end
end
end
+
+ context 'when issuable in active or archived project' do
+ before do
+ project.add_developer(user)
+ end
+
+ context 'when project is active' do
+ it 'returns archived false' do
+ expect(subject[:is_project_archived]).to eq(false)
+ end
+
+ it 'returns nil for archived project doc' do
+ response = described_class.new(resource, request: request).as_json
+
+ expect(response[:archived_project_docs_path]).to be nil
+ end
+ end
+
+ context 'when project is archived' do
+ before do
+ project.update(archived: true)
+ end
+
+ it 'returns archived true' do
+ expect(subject[:is_project_archived]).to eq(true)
+ end
+
+ it 'returns archived project doc' do
+ expect(subject[:archived_project_docs_path]).to eq('/help/user/project/settings/index.md#archiving-a-project')
+ end
+ end
+ end
end
diff --git a/spec/serializers/job_entity_spec.rb b/spec/serializers/job_entity_spec.rb
index 4b2d4701334..60843f1a599 100644
--- a/spec/serializers/job_entity_spec.rb
+++ b/spec/serializers/job_entity_spec.rb
@@ -153,11 +153,11 @@ describe JobEntity do
end
it 'states that it failed' do
- expect(subject[:status][:label]).to eq('failed')
+ expect(subject[:status][:label]).to eq(s_('CiStatusLabel|failed'))
end
it 'indicates the failure reason on tooltip' do
- expect(subject[:status][:tooltip]).to eq('failed - (API failure)')
+ expect(subject[:status][:tooltip]).to eq("#{s_('CiStatusLabel|failed')} - (API failure)")
end
it 'includes a callout message with a verbose output' do
@@ -181,7 +181,7 @@ describe JobEntity do
end
it 'indicates the failure reason on tooltip' do
- expect(subject[:status][:tooltip]).to eq('failed - (API failure) (allowed to fail)')
+ expect(subject[:status][:tooltip]).to eq("#{s_('CiStatusLabel|failed')} - (API failure) (allowed to fail)")
end
it 'includes a callout message with a verbose output' do
diff --git a/spec/serializers/merge_request_poll_cached_widget_entity_spec.rb b/spec/serializers/merge_request_poll_cached_widget_entity_spec.rb
new file mode 100644
index 00000000000..685abbf7e6c
--- /dev/null
+++ b/spec/serializers/merge_request_poll_cached_widget_entity_spec.rb
@@ -0,0 +1,202 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe MergeRequestPollCachedWidgetEntity do
+ include ProjectForksHelper
+
+ let(:project) { create :project, :repository }
+ let(:resource) { create(:merge_request, source_project: project, target_project: project) }
+ let(:user) { create(:user) }
+
+ let(:request) { double('request', current_user: user, project: project) }
+
+ subject do
+ described_class.new(resource, request: request).as_json
+ end
+
+ it 'has the latest sha of the target branch' do
+ is_expected.to include(:target_branch_sha)
+ end
+
+ describe 'diverged_commits_count' do
+ context 'when MR open and its diverging' do
+ it 'returns diverged commits count' do
+ allow(resource).to receive_messages(open?: true, diverged_from_target_branch?: true,
+ diverged_commits_count: 10)
+
+ expect(subject[:diverged_commits_count]).to eq(10)
+ end
+ end
+
+ context 'when MR is not open' do
+ it 'returns 0' do
+ allow(resource).to receive_messages(open?: false)
+
+ expect(subject[:diverged_commits_count]).to be_zero
+ end
+ end
+
+ context 'when MR is not diverging' do
+ it 'returns 0' do
+ allow(resource).to receive_messages(open?: true, diverged_from_target_branch?: false)
+
+ expect(subject[:diverged_commits_count]).to be_zero
+ end
+ end
+ end
+
+ describe 'diff_head_sha' do
+ before do
+ allow(resource).to receive(:diff_head_sha) { 'sha' }
+ end
+
+ context 'when diff head commit is empty' do
+ it 'returns nil' do
+ allow(resource).to receive(:diff_head_sha) { '' }
+
+ expect(subject[:diff_head_sha]).to be_nil
+ end
+ end
+
+ context 'when diff head commit present' do
+ it 'returns diff head commit short id' do
+ expect(subject[:diff_head_sha]).to eq('sha')
+ end
+ end
+ end
+
+ describe 'metrics' do
+ context 'when metrics record exists with merged data' do
+ before do
+ resource.mark_as_merged!
+ resource.metrics.update!(merged_by: user)
+ end
+
+ it 'matches merge request metrics schema' do
+ expect(subject[:metrics].with_indifferent_access)
+ .to match_schema('entities/merge_request_metrics')
+ end
+
+ it 'returns values from metrics record' do
+ expect(subject.dig(:metrics, :merged_by, :id))
+ .to eq(resource.metrics.merged_by_id)
+ end
+ end
+
+ context 'when metrics record exists with closed data' do
+ before do
+ resource.close!
+ resource.metrics.update!(latest_closed_by: user)
+ end
+
+ it 'matches merge request metrics schema' do
+ expect(subject[:metrics].with_indifferent_access)
+ .to match_schema('entities/merge_request_metrics')
+ end
+
+ it 'returns values from metrics record' do
+ expect(subject.dig(:metrics, :closed_by, :id))
+ .to eq(resource.metrics.latest_closed_by_id)
+ end
+ end
+
+ context 'when metrics does not exists' do
+ before do
+ resource.mark_as_merged!
+ resource.metrics.destroy!
+ resource.reload
+ end
+
+ context 'when events exists' do
+ let!(:closed_event) { create(:event, :closed, project: project, target: resource) }
+ let!(:merge_event) { create(:event, :merged, project: project, target: resource) }
+
+ it 'matches merge request metrics schema' do
+ expect(subject[:metrics].with_indifferent_access)
+ .to match_schema('entities/merge_request_metrics')
+ end
+
+ it 'returns values from events record' do
+ expect(subject.dig(:metrics, :merged_by, :id))
+ .to eq(merge_event.author_id)
+
+ expect(subject.dig(:metrics, :closed_by, :id))
+ .to eq(closed_event.author_id)
+
+ expect(subject.dig(:metrics, :merged_at).to_s)
+ .to eq(merge_event.updated_at.to_s)
+
+ expect(subject.dig(:metrics, :closed_at).to_s)
+ .to eq(closed_event.updated_at.to_s)
+ end
+ end
+
+ context 'when events does not exists' do
+ it 'matches merge request metrics schema' do
+ expect(subject[:metrics].with_indifferent_access)
+ .to match_schema('entities/merge_request_metrics')
+ end
+ end
+ end
+ end
+
+ describe 'commits_without_merge_commits' do
+ def find_matching_commit(short_id)
+ resource.commits.find { |c| c.short_id == short_id }
+ end
+
+ it 'does not include merge commits' do
+ commits_in_widget = subject[:commits_without_merge_commits]
+
+ expect(commits_in_widget.length).to be < resource.commits.length
+ expect(commits_in_widget.length).to eq(resource.commits.without_merge_commits.length)
+ commits_in_widget.each do |c|
+ expect(find_matching_commit(c[:short_id]).merge_commit?).to eq(false)
+ end
+ end
+ end
+
+ describe 'auto merge' do
+ context 'when auto merge is enabled' do
+ let(:resource) { create(:merge_request, :merge_when_pipeline_succeeds) }
+
+ it 'returns auto merge related information' do
+ expect(subject[:auto_merge_enabled]).to be_truthy
+ end
+ end
+
+ context 'when auto merge is not enabled' do
+ let(:resource) { create(:merge_request) }
+
+ it 'returns auto merge related information' do
+ expect(subject[:auto_merge_enabled]).to be_falsy
+ end
+ end
+ end
+
+ describe 'attributes for squash commit message' do
+ context 'when merge request is mergeable' do
+ before do
+ stub_const('MergeRequestDiff::COMMITS_SAFE_SIZE', 20)
+ end
+
+ it 'has default_squash_commit_message and commits_without_merge_commits' do
+ expect(subject[:default_squash_commit_message])
+ .to eq(resource.default_squash_commit_message)
+ expect(subject[:commits_without_merge_commits].size).to eq(12)
+ end
+ end
+
+ context 'when merge request is not mergeable' do
+ before do
+ allow(resource).to receive(:mergeable?).and_return(false)
+ end
+
+ it 'does not have default_squash_commit_message and commits_without_merge_commits' do
+ expect(subject[:default_squash_commit_message]).to eq(nil)
+ expect(subject[:commits_without_merge_commits]).to eq(nil)
+ end
+ end
+ end
+end
diff --git a/spec/serializers/merge_request_poll_widget_entity_spec.rb b/spec/serializers/merge_request_poll_widget_entity_spec.rb
new file mode 100644
index 00000000000..ea9052b4046
--- /dev/null
+++ b/spec/serializers/merge_request_poll_widget_entity_spec.rb
@@ -0,0 +1,180 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe MergeRequestPollWidgetEntity do
+ include ProjectForksHelper
+
+ let(:project) { create :project, :repository }
+ let(:resource) { create(:merge_request, source_project: project, target_project: project) }
+ let(:user) { create(:user) }
+
+ let(:request) { double('request', current_user: user, project: project) }
+
+ subject do
+ described_class.new(resource, request: request).as_json
+ end
+
+ it 'has default_merge_commit_message_with_description' do
+ expect(subject[:default_merge_commit_message_with_description])
+ .to eq(resource.default_merge_commit_message(include_description: true))
+ end
+
+ describe 'merge_pipeline' do
+ it 'returns nil' do
+ expect(subject[:merge_pipeline]).to be_nil
+ end
+
+ context 'when is merged' do
+ let(:resource) { create(:merged_merge_request, source_project: project, merge_commit_sha: project.commit.id) }
+ let(:pipeline) { create(:ci_empty_pipeline, project: project, ref: resource.target_branch, sha: resource.merge_commit_sha) }
+
+ before do
+ project.add_maintainer(user)
+ end
+
+ it 'returns merge_pipeline' do
+ pipeline.reload
+ pipeline_payload = PipelineDetailsEntity
+ .represent(pipeline, request: request)
+ .as_json
+
+ expect(subject[:merge_pipeline]).to eq(pipeline_payload)
+ end
+
+ context 'when user cannot read pipelines on target project' do
+ before do
+ project.add_guest(user)
+ end
+
+ it 'returns nil' do
+ expect(subject[:merge_pipeline]).to be_nil
+ end
+ end
+ end
+ end
+
+ describe 'new_blob_path' do
+ context 'when user can push to project' do
+ it 'returns path' do
+ project.add_developer(user)
+
+ expect(subject[:new_blob_path])
+ .to eq("/#{resource.project.full_path}/new/#{resource.source_branch}")
+ end
+ end
+
+ context 'when user cannot push to project' do
+ it 'returns nil' do
+ expect(subject[:new_blob_path]).to be_nil
+ end
+ end
+ end
+
+ describe 'exposed_artifacts_path' do
+ context 'when merge request has exposed artifacts' do
+ before do
+ expect(resource).to receive(:has_exposed_artifacts?).and_return(true)
+ end
+
+ it 'set the path to poll data' do
+ expect(subject[:exposed_artifacts_path]).to be_present
+ end
+ end
+
+ context 'when merge request has no exposed artifacts' do
+ before do
+ expect(resource).to receive(:has_exposed_artifacts?).and_return(false)
+ end
+
+ it 'set the path to poll data' do
+ expect(subject[:exposed_artifacts_path]).to be_nil
+ end
+ end
+ end
+
+ describe 'auto merge' do
+ context 'when auto merge is enabled' do
+ let(:resource) { create(:merge_request, :merge_when_pipeline_succeeds) }
+
+ it 'returns auto merge related information' do
+ expect(subject[:auto_merge_strategy]).to eq('merge_when_pipeline_succeeds')
+ end
+ end
+
+ context 'when auto merge is not enabled' do
+ let(:resource) { create(:merge_request) }
+
+ it 'returns auto merge related information' do
+ expect(subject[:auto_merge_strategy]).to be_nil
+ end
+ end
+
+ context 'when head pipeline is running' do
+ before do
+ create(:ci_pipeline, :running, project: project,
+ ref: resource.source_branch,
+ sha: resource.diff_head_sha)
+ resource.update_head_pipeline
+ end
+
+ it 'returns available auto merge strategies' do
+ expect(subject[:available_auto_merge_strategies]).to eq(%w[merge_when_pipeline_succeeds])
+ end
+ end
+
+ context 'when head pipeline is finished' do
+ before do
+ create(:ci_pipeline, :success, project: project,
+ ref: resource.source_branch,
+ sha: resource.diff_head_sha)
+ resource.update_head_pipeline
+ end
+
+ it 'returns available auto merge strategies' do
+ expect(subject[:available_auto_merge_strategies]).to be_empty
+ end
+ end
+ end
+
+ describe 'pipeline' do
+ let(:pipeline) { create(:ci_empty_pipeline, project: project, ref: resource.source_branch, sha: resource.source_branch_sha, head_pipeline_of: resource) }
+
+ before do
+ allow_any_instance_of(MergeRequestPresenter).to receive(:can?).and_call_original
+ allow_any_instance_of(MergeRequestPresenter).to receive(:can?).with(user, :read_pipeline, anything).and_return(result)
+ end
+
+ context 'when user has access to pipelines' do
+ let(:result) { true }
+
+ context 'when is up to date' do
+ let(:req) { double('request', current_user: user, project: project) }
+
+ it 'returns pipeline' do
+ pipeline_payload = PipelineDetailsEntity
+ .represent(pipeline, request: req)
+ .as_json
+
+ expect(subject[:pipeline]).to eq(pipeline_payload)
+ end
+ end
+
+ context 'when is not up to date' do
+ it 'returns nil' do
+ pipeline.update(sha: "not up to date")
+
+ expect(subject[:pipeline]).to eq(nil)
+ end
+ end
+ end
+
+ context 'when user does not have access to pipelines' do
+ let(:result) { false }
+
+ it 'does not have pipeline' do
+ expect(subject[:pipeline]).to eq(nil)
+ end
+ end
+ end
+end
diff --git a/spec/serializers/merge_request_serializer_spec.rb b/spec/serializers/merge_request_serializer_spec.rb
index a99f11168c0..9297df31842 100644
--- a/spec/serializers/merge_request_serializer_spec.rb
+++ b/spec/serializers/merge_request_serializer_spec.rb
@@ -48,7 +48,24 @@ describe MergeRequestSerializer do
let(:serializer) { 'noteable' }
it 'matches noteable merge request json schema' do
- expect(json_entity).to match_schema('entities/merge_request_noteable', strict: true)
+ expect(json_entity).to match_schema('entities/merge_request_noteable')
+ end
+
+ context 'when merge_request is locked' do
+ let(:resource) { create(:merge_request, :locked, description: "Description") }
+
+ it 'matches noteable merge request json schema' do
+ expect(json_entity).to match_schema('entities/merge_request_noteable')
+ end
+ end
+
+ context 'when project is archived' do
+ let(:project) { create(:project, :archived, :repository) }
+ let(:resource) { create(:merge_request, source_project: project, target_project: project, description: "Description") }
+
+ it 'matches noteable merge request json schema' do
+ expect(json_entity).to match_schema('entities/merge_request_noteable')
+ end
end
end
diff --git a/spec/serializers/merge_request_widget_entity_spec.rb b/spec/serializers/merge_request_widget_entity_spec.rb
index 35940ac062e..22232682be1 100644
--- a/spec/serializers/merge_request_widget_entity_spec.rb
+++ b/spec/serializers/merge_request_widget_entity_spec.rb
@@ -15,10 +15,6 @@ describe MergeRequestWidgetEntity do
described_class.new(resource, request: request).as_json
end
- it 'has the latest sha of the target branch' do
- is_expected.to include(:target_branch_sha)
- end
-
describe 'source_project_full_path' do
it 'includes the full path of the source project' do
expect(subject[:source_project_full_path]).to be_present
@@ -47,156 +43,6 @@ describe MergeRequestWidgetEntity do
end
end
- describe 'pipeline' do
- let(:pipeline) { create(:ci_empty_pipeline, project: project, ref: resource.source_branch, sha: resource.source_branch_sha, head_pipeline_of: resource) }
-
- before do
- allow_any_instance_of(MergeRequestPresenter).to receive(:can?).and_call_original
- allow_any_instance_of(MergeRequestPresenter).to receive(:can?).with(user, :read_pipeline, anything).and_return(result)
- end
-
- context 'when user has access to pipelines' do
- let(:result) { true }
-
- context 'when is up to date' do
- let(:req) { double('request', current_user: user, project: project) }
-
- it 'returns pipeline' do
- pipeline_payload = PipelineDetailsEntity
- .represent(pipeline, request: req)
- .as_json
-
- expect(subject[:pipeline]).to eq(pipeline_payload)
- end
- end
-
- context 'when is not up to date' do
- it 'returns nil' do
- pipeline.update(sha: "not up to date")
-
- expect(subject[:pipeline]).to eq(nil)
- end
- end
- end
-
- context 'when user does not have access to pipelines' do
- let(:result) { false }
-
- it 'does not have pipeline' do
- expect(subject[:pipeline]).to eq(nil)
- end
- end
- end
-
- describe 'merge_pipeline' do
- it 'returns nil' do
- expect(subject[:merge_pipeline]).to be_nil
- end
-
- context 'when is merged' do
- let(:resource) { create(:merged_merge_request, source_project: project, merge_commit_sha: project.commit.id) }
- let(:pipeline) { create(:ci_empty_pipeline, project: project, ref: resource.target_branch, sha: resource.merge_commit_sha) }
-
- before do
- project.add_maintainer(user)
- end
-
- it 'returns merge_pipeline' do
- pipeline.reload
- pipeline_payload = PipelineDetailsEntity
- .represent(pipeline, request: request)
- .as_json
-
- expect(subject[:merge_pipeline]).to eq(pipeline_payload)
- end
-
- context 'when user cannot read pipelines on target project' do
- before do
- project.add_guest(user)
- end
-
- it 'returns nil' do
- expect(subject[:merge_pipeline]).to be_nil
- end
- end
- end
- end
-
- describe 'metrics' do
- context 'when metrics record exists with merged data' do
- before do
- resource.mark_as_merged!
- resource.metrics.update!(merged_by: user)
- end
-
- it 'matches merge request metrics schema' do
- expect(subject[:metrics].with_indifferent_access)
- .to match_schema('entities/merge_request_metrics')
- end
-
- it 'returns values from metrics record' do
- expect(subject.dig(:metrics, :merged_by, :id))
- .to eq(resource.metrics.merged_by_id)
- end
- end
-
- context 'when metrics record exists with closed data' do
- before do
- resource.close!
- resource.metrics.update!(latest_closed_by: user)
- end
-
- it 'matches merge request metrics schema' do
- expect(subject[:metrics].with_indifferent_access)
- .to match_schema('entities/merge_request_metrics')
- end
-
- it 'returns values from metrics record' do
- expect(subject.dig(:metrics, :closed_by, :id))
- .to eq(resource.metrics.latest_closed_by_id)
- end
- end
-
- context 'when metrics does not exists' do
- before do
- resource.mark_as_merged!
- resource.metrics.destroy!
- resource.reload
- end
-
- context 'when events exists' do
- let!(:closed_event) { create(:event, :closed, project: project, target: resource) }
- let!(:merge_event) { create(:event, :merged, project: project, target: resource) }
-
- it 'matches merge request metrics schema' do
- expect(subject[:metrics].with_indifferent_access)
- .to match_schema('entities/merge_request_metrics')
- end
-
- it 'returns values from events record' do
- expect(subject.dig(:metrics, :merged_by, :id))
- .to eq(merge_event.author_id)
-
- expect(subject.dig(:metrics, :closed_by, :id))
- .to eq(closed_event.author_id)
-
- expect(subject.dig(:metrics, :merged_at).to_s)
- .to eq(merge_event.updated_at.to_s)
-
- expect(subject.dig(:metrics, :closed_at).to_s)
- .to eq(closed_event.updated_at.to_s)
- end
- end
-
- context 'when events does not exists' do
- it 'matches merge request metrics schema' do
- expect(subject[:metrics].with_indifferent_access)
- .to match_schema('entities/merge_request_metrics')
- end
- end
- end
- end
-
it 'has email_patches_path' do
expect(subject[:email_patches_path])
.to eq("/#{resource.project.full_path}/merge_requests/#{resource.iid}.patch")
@@ -207,80 +53,6 @@ describe MergeRequestWidgetEntity do
.to eq("/#{resource.project.full_path}/merge_requests/#{resource.iid}.diff")
end
- it 'has default_merge_commit_message_with_description' do
- expect(subject[:default_merge_commit_message_with_description])
- .to eq(resource.default_merge_commit_message(include_description: true))
- end
-
- it 'has default_squash_commit_message' do
- expect(subject[:default_squash_commit_message])
- .to eq(resource.default_squash_commit_message)
- end
-
- describe 'new_blob_path' do
- context 'when user can push to project' do
- it 'returns path' do
- project.add_developer(user)
-
- expect(subject[:new_blob_path])
- .to eq("/#{resource.project.full_path}/new/#{resource.source_branch}")
- end
- end
-
- context 'when user cannot push to project' do
- it 'returns nil' do
- expect(subject[:new_blob_path]).to be_nil
- end
- end
- end
-
- describe 'diff_head_sha' do
- before do
- allow(resource).to receive(:diff_head_sha) { 'sha' }
- end
-
- context 'when diff head commit is empty' do
- it 'returns nil' do
- allow(resource).to receive(:diff_head_sha) { '' }
-
- expect(subject[:diff_head_sha]).to be_nil
- end
- end
-
- context 'when diff head commit present' do
- it 'returns diff head commit short id' do
- expect(subject[:diff_head_sha]).to eq('sha')
- end
- end
- end
-
- describe 'diverged_commits_count' do
- context 'when MR open and its diverging' do
- it 'returns diverged commits count' do
- allow(resource).to receive_messages(open?: true, diverged_from_target_branch?: true,
- diverged_commits_count: 10)
-
- expect(subject[:diverged_commits_count]).to eq(10)
- end
- end
-
- context 'when MR is not open' do
- it 'returns 0' do
- allow(resource).to receive_messages(open?: false)
-
- expect(subject[:diverged_commits_count]).to be_zero
- end
- end
-
- context 'when MR is not diverging' do
- it 'returns 0' do
- allow(resource).to receive_messages(open?: true, diverged_from_target_branch?: false)
-
- expect(subject[:diverged_commits_count]).to be_zero
- end
- end
- end
-
describe 'when source project is deleted' do
let(:project) { create(:project, :repository) }
let(:forked_project) { fork_project(project) }
@@ -296,88 +68,4 @@ describe MergeRequestWidgetEntity do
expect(entity[:rebase_path]).to be_nil
end
end
-
- describe 'commits_without_merge_commits' do
- def find_matching_commit(short_id)
- resource.commits.find { |c| c.short_id == short_id }
- end
-
- it 'does not include merge commits' do
- commits_in_widget = subject[:commits_without_merge_commits]
-
- expect(commits_in_widget.length).to be < resource.commits.length
- expect(commits_in_widget.length).to eq(resource.commits.without_merge_commits.length)
- commits_in_widget.each do |c|
- expect(find_matching_commit(c[:short_id]).merge_commit?).to eq(false)
- end
- end
- end
-
- describe 'auto merge' do
- context 'when auto merge is enabled' do
- let(:resource) { create(:merge_request, :merge_when_pipeline_succeeds) }
-
- it 'returns auto merge related information' do
- expect(subject[:auto_merge_enabled]).to be_truthy
- expect(subject[:auto_merge_strategy]).to eq('merge_when_pipeline_succeeds')
- end
- end
-
- context 'when auto merge is not enabled' do
- let(:resource) { create(:merge_request) }
-
- it 'returns auto merge related information' do
- expect(subject[:auto_merge_enabled]).to be_falsy
- expect(subject[:auto_merge_strategy]).to be_nil
- end
- end
-
- context 'when head pipeline is running' do
- before do
- create(:ci_pipeline, :running, project: project,
- ref: resource.source_branch,
- sha: resource.diff_head_sha)
- resource.update_head_pipeline
- end
-
- it 'returns available auto merge strategies' do
- expect(subject[:available_auto_merge_strategies]).to eq(%w[merge_when_pipeline_succeeds])
- end
- end
-
- context 'when head pipeline is finished' do
- before do
- create(:ci_pipeline, :success, project: project,
- ref: resource.source_branch,
- sha: resource.diff_head_sha)
- resource.update_head_pipeline
- end
-
- it 'returns available auto merge strategies' do
- expect(subject[:available_auto_merge_strategies]).to be_empty
- end
- end
- end
-
- describe 'exposed_artifacts_path' do
- context 'when merge request has exposed artifacts' do
- before do
- expect(resource).to receive(:has_exposed_artifacts?).and_return(true)
- end
-
- it 'set the path to poll data' do
- expect(subject[:exposed_artifacts_path]).to be_present
- end
- end
-
- context 'when merge request has no exposed artifacts' do
- before do
- expect(resource).to receive(:has_exposed_artifacts?).and_return(false)
- end
-
- it 'set the path to poll data' do
- expect(subject[:exposed_artifacts_path]).to be_nil
- end
- end
- end
end
diff --git a/spec/serializers/note_entity_spec.rb b/spec/serializers/note_entity_spec.rb
index cec07cda063..f37fffb5048 100644
--- a/spec/serializers/note_entity_spec.rb
+++ b/spec/serializers/note_entity_spec.rb
@@ -10,6 +10,7 @@ describe NoteEntity do
let(:entity) { described_class.new(note, request: request) }
let(:note) { create(:note) }
let(:user) { create(:user) }
+
subject { entity.as_json }
it_behaves_like 'note entity'
diff --git a/spec/serializers/pipeline_entity_spec.rb b/spec/serializers/pipeline_entity_spec.rb
index 02c5b817ea4..d95aaf3d104 100644
--- a/spec/serializers/pipeline_entity_spec.rb
+++ b/spec/serializers/pipeline_entity_spec.rb
@@ -218,5 +218,28 @@ describe PipelineEntity do
expect(subject[:merge_request_event_type]).to be_present
end
end
+
+ context 'when pipeline has failed builds' do
+ let_it_be(:pipeline) { create(:ci_pipeline, project: project, user: user) }
+ let_it_be(:build) { create(:ci_build, :success, pipeline: pipeline) }
+ let_it_be(:failed_1) { create(:ci_build, :failed, pipeline: pipeline) }
+ let_it_be(:failed_2) { create(:ci_build, :failed, pipeline: pipeline) }
+
+ context 'when the user can retry the pipeline' do
+ it 'exposes these failed builds' do
+ allow(entity).to receive(:can_retry?).and_return(true)
+
+ expect(subject[:failed_builds].map { |b| b[:id] }).to contain_exactly(failed_1.id, failed_2.id)
+ end
+ end
+
+ context 'when the user cannot retry the pipeline' do
+ it 'is nil' do
+ allow(entity).to receive(:can_retry?).and_return(false)
+
+ expect(subject[:failed_builds]).to be_nil
+ end
+ end
+ end
end
end
diff --git a/spec/serializers/pipeline_serializer_spec.rb b/spec/serializers/pipeline_serializer_spec.rb
index 7661c8acc13..f1f761a6fd0 100644
--- a/spec/serializers/pipeline_serializer_spec.rb
+++ b/spec/serializers/pipeline_serializer_spec.rb
@@ -130,10 +130,10 @@ describe PipelineSerializer do
it 'preloads related merge requests' do
recorded = ActiveRecord::QueryRecorder.new { subject }
+ expected_query = "SELECT \"merge_requests\".* FROM \"merge_requests\" " \
+ "WHERE \"merge_requests\".\"id\" IN (#{merge_request_1.id}, #{merge_request_2.id})"
- expect(recorded.log)
- .to include("SELECT \"merge_requests\".* FROM \"merge_requests\" " \
- "WHERE \"merge_requests\".\"id\" IN (#{merge_request_1.id}, #{merge_request_2.id})")
+ expect(recorded.log).to include(a_string_starting_with(expected_query))
end
end
diff --git a/spec/serializers/project_note_entity_spec.rb b/spec/serializers/project_note_entity_spec.rb
index 7c76f230781..469bf2b86de 100644
--- a/spec/serializers/project_note_entity_spec.rb
+++ b/spec/serializers/project_note_entity_spec.rb
@@ -10,6 +10,7 @@ describe ProjectNoteEntity do
let(:entity) { described_class.new(note, request: request) }
let(:note) { create(:note) }
let(:user) { create(:user) }
+
subject { entity.as_json }
it_behaves_like 'note entity'
diff --git a/spec/serializers/stage_entity_spec.rb b/spec/serializers/stage_entity_spec.rb
index 58573df31e7..fb08d6994ae 100644
--- a/spec/serializers/stage_entity_spec.rb
+++ b/spec/serializers/stage_entity_spec.rb
@@ -29,7 +29,7 @@ describe StageEntity do
it 'contains detailed status' do
expect(subject[:status]).to include :text, :label, :group, :icon, :tooltip
- expect(subject[:status][:label]).to eq 'passed'
+ expect(subject[:status][:label]).to eq s_('CiStatusLabel|passed')
end
it 'contains valid name' do
@@ -47,7 +47,7 @@ describe StageEntity do
end
it 'contains stage title' do
- expect(subject[:title]).to eq 'test: passed'
+ expect(subject[:title]).to eq "test: #{s_('CiStatusLabel|passed')}"
end
it 'does not contain play_details info' do
diff --git a/spec/serializers/user_entity_spec.rb b/spec/serializers/user_entity_spec.rb
index edb49757b38..71107daf6ac 100644
--- a/spec/serializers/user_entity_spec.rb
+++ b/spec/serializers/user_entity_spec.rb
@@ -7,6 +7,7 @@ describe UserEntity do
let(:entity) { described_class.new(user) }
let(:user) { create(:user) }
+
subject { entity.as_json }
it 'exposes user name and login' do
diff --git a/spec/services/auth/container_registry_authentication_service_spec.rb b/spec/services/auth/container_registry_authentication_service_spec.rb
index 2807b8c8c85..5003dfcc951 100644
--- a/spec/services/auth/container_registry_authentication_service_spec.rb
+++ b/spec/services/auth/container_registry_authentication_service_spec.rb
@@ -20,7 +20,9 @@ describe Auth::ContainerRegistryAuthenticationService do
before do
allow(Gitlab.config.registry).to receive_messages(enabled: true, issuer: 'rspec', key: nil)
- allow_any_instance_of(JSONWebToken::RSAToken).to receive(:key).and_return(rsa_key)
+ allow_next_instance_of(JSONWebToken::RSAToken) do |instance|
+ allow(instance).to receive(:key).and_return(rsa_key)
+ end
end
shared_examples 'an authenticated' do
diff --git a/spec/services/award_emojis/add_service_spec.rb b/spec/services/award_emojis/add_service_spec.rb
index 037db39ba80..8364e662735 100644
--- a/spec/services/award_emojis/add_service_spec.rb
+++ b/spec/services/award_emojis/add_service_spec.rb
@@ -7,6 +7,7 @@ describe AwardEmojis::AddService do
set(:project) { create(:project) }
set(:awardable) { create(:note, project: project) }
let(:name) { 'thumbsup' }
+
subject(:service) { described_class.new(awardable, name, user) }
describe '#execute' do
diff --git a/spec/services/award_emojis/destroy_service_spec.rb b/spec/services/award_emojis/destroy_service_spec.rb
index c4a7d5ec20e..6d54c037464 100644
--- a/spec/services/award_emojis/destroy_service_spec.rb
+++ b/spec/services/award_emojis/destroy_service_spec.rb
@@ -10,6 +10,7 @@ describe AwardEmojis::DestroyService do
let!(:award_from_other_user) do
create(:award_emoji, name: name, awardable: awardable, user: create(:user))
end
+
subject(:service) { described_class.new(awardable, name, user) }
describe '#execute' do
diff --git a/spec/services/award_emojis/toggle_service_spec.rb b/spec/services/award_emojis/toggle_service_spec.rb
index 972a1d5fc06..a8d110d04f7 100644
--- a/spec/services/award_emojis/toggle_service_spec.rb
+++ b/spec/services/award_emojis/toggle_service_spec.rb
@@ -7,6 +7,7 @@ describe AwardEmojis::ToggleService do
set(:project) { create(:project, :public) }
set(:awardable) { create(:note, project: project) }
let(:name) { 'thumbsup' }
+
subject(:service) { described_class.new(awardable, name, user) }
describe '#execute' do
diff --git a/spec/services/boards/issues/create_service_spec.rb b/spec/services/boards/issues/create_service_spec.rb
index ef7b7fdbaac..3520630dd83 100644
--- a/spec/services/boards/issues/create_service_spec.rb
+++ b/spec/services/boards/issues/create_service_spec.rb
@@ -17,7 +17,9 @@ describe Boards::Issues::CreateService do
end
it 'delegates the create proceedings to Issues::CreateService' do
- expect_any_instance_of(Issues::CreateService).to receive(:execute).once
+ expect_next_instance_of(Issues::CreateService) do |instance|
+ expect(instance).to receive(:execute).once
+ end
service.execute
end
diff --git a/spec/services/create_branch_service_spec.rb b/spec/services/branches/create_service_spec.rb
index 9661173c9e7..b0629c5e25a 100644
--- a/spec/services/create_branch_service_spec.rb
+++ b/spec/services/branches/create_service_spec.rb
@@ -2,9 +2,10 @@
require 'spec_helper'
-describe CreateBranchService do
+describe Branches::CreateService do
let(:user) { create(:user) }
- let(:service) { described_class.new(project, user) }
+
+ subject(:service) { described_class.new(project, user) }
describe '#execute' do
context 'when repository is empty' do
@@ -30,7 +31,7 @@ describe CreateBranchService do
allow(project.repository).to receive(:add_branch).and_return(false)
end
- it 'retruns an error with the branch name' do
+ it 'returns an error with the branch name' do
result = service.execute('my-feature', 'master')
expect(result[:status]).to eq(:error)
diff --git a/spec/services/delete_merged_branches_service_spec.rb b/spec/services/branches/delete_merged_service_spec.rb
index dffc2bd93ee..962af8110f7 100644
--- a/spec/services/delete_merged_branches_service_spec.rb
+++ b/spec/services/branches/delete_merged_service_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-describe DeleteMergedBranchesService do
+describe Branches::DeleteMergedService do
include ProjectForksHelper
subject(:service) { described_class.new(project, project.owner) }
diff --git a/spec/services/delete_branch_service_spec.rb b/spec/services/branches/delete_service_spec.rb
index b8064c2cbc1..2219416d94d 100644
--- a/spec/services/delete_branch_service_spec.rb
+++ b/spec/services/branches/delete_service_spec.rb
@@ -2,11 +2,12 @@
require 'spec_helper'
-describe DeleteBranchService do
+describe Branches::DeleteService do
let(:project) { create(:project, :repository) }
let(:repository) { project.repository }
let(:user) { create(:user) }
- let(:service) { described_class.new(project, user) }
+
+ subject(:service) { described_class.new(project, user) }
shared_examples 'a deleted branch' do |branch_name|
it 'removes the branch' do
diff --git a/spec/services/branches/validate_new_service_spec.rb b/spec/services/branches/validate_new_service_spec.rb
new file mode 100644
index 00000000000..6d5078d3ccb
--- /dev/null
+++ b/spec/services/branches/validate_new_service_spec.rb
@@ -0,0 +1,41 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Branches::ValidateNewService do
+ let(:project) { create(:project, :repository) }
+
+ subject(:service) { described_class.new(project) }
+
+ describe '#execute' do
+ context 'validation' do
+ it 'returns error with an invalid branch name' do
+ result = service.execute('refs/heads/invalid_branch')
+
+ expect(result[:status]).to eq(:error)
+ expect(result[:message]).to eq('Branch name is invalid')
+ end
+
+ it 'returns success with a valid branch name' do
+ result = service.execute('valid_branch_name')
+
+ expect(result[:status]).to eq(:success)
+ end
+ end
+
+ context 'branch exist' do
+ it 'returns error when branch exists' do
+ result = service.execute('master')
+
+ expect(result[:status]).to eq(:error)
+ expect(result[:message]).to eq('Branch already exists')
+ end
+
+ it 'returns success when branch name is available' do
+ result = service.execute('valid_branch_name')
+
+ expect(result[:status]).to eq(:success)
+ end
+ end
+ end
+end
diff --git a/spec/services/ci/archive_trace_service_spec.rb b/spec/services/ci/archive_trace_service_spec.rb
index 47bc26c0521..ba94013b574 100644
--- a/spec/services/ci/archive_trace_service_spec.rb
+++ b/spec/services/ci/archive_trace_service_spec.rb
@@ -41,7 +41,9 @@ describe Ci::ArchiveTraceService, '#execute' do
context 'when job failed to archive trace but did not raise an exception' do
before do
- allow_any_instance_of(Gitlab::Ci::Trace).to receive(:archive!) {}
+ allow_next_instance_of(Gitlab::Ci::Trace) do |instance|
+ allow(instance).to receive(:archive!) {}
+ end
end
it 'leaves a warning message in sidekiq log' do
@@ -59,11 +61,11 @@ describe Ci::ArchiveTraceService, '#execute' do
let(:job) { create(:ci_build, :running, :trace_live) }
it 'increments Prometheus counter, sends crash report to Sentry and ignore an error for continuing to archive' do
- expect(Gitlab::Sentry)
- .to receive(:track_exception)
+ expect(Gitlab::ErrorTracking)
+ .to receive(:track_and_raise_for_dev_exception)
.with(::Gitlab::Ci::Trace::ArchiveError,
issue_url: 'https://gitlab.com/gitlab-org/gitlab-foss/issues/51502',
- extra: { job_id: job.id } ).once
+ job_id: job.id).once
expect(Sidekiq.logger).to receive(:warn).with(
class: ArchiveTraceWorker.name,
diff --git a/spec/services/ci/create_pipeline_service/needs_spec.rb b/spec/services/ci/create_pipeline_service/needs_spec.rb
new file mode 100644
index 00000000000..5ef7e592b36
--- /dev/null
+++ b/spec/services/ci/create_pipeline_service/needs_spec.rb
@@ -0,0 +1,175 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Ci::CreatePipelineService do
+ context 'needs' do
+ let_it_be(:user) { create(:admin) }
+ let_it_be(:project) { create(:project, :repository, creator: user) }
+
+ let(:ref) { 'refs/heads/master' }
+ let(:source) { :push }
+ let(:service) { described_class.new(project, user, { ref: ref }) }
+ let(:pipeline) { service.execute(source) }
+
+ before do
+ stub_ci_pipeline_yaml_file(config)
+ end
+
+ context 'with a valid config' do
+ let(:config) do
+ <<~YAML
+ build_a:
+ stage: build
+ script:
+ - make
+ artifacts:
+ paths:
+ - binaries/
+ build_b:
+ stage: build
+ script:
+ - make
+ artifacts:
+ paths:
+ - other_binaries/
+ build_c:
+ stage: build
+ script:
+ - make
+ build_d:
+ stage: build
+ script:
+ - make
+ parallel: 3
+
+ test_a:
+ stage: test
+ script:
+ - ls
+ needs:
+ - build_a
+ - job: build_b
+ artifacts: true
+ - job: build_c
+ artifacts: false
+ dependencies:
+ - build_a
+
+ test_b:
+ stage: test
+ script:
+ - ls
+ parallel: 2
+ needs:
+ - build_a
+ - job: build_b
+ artifacts: true
+ - job: build_d
+ artifacts: false
+
+ test_c:
+ stage: test
+ script:
+ - ls
+ needs:
+ - build_a
+ - job: build_b
+ - job: build_c
+ artifacts: true
+ YAML
+ end
+
+ let(:test_a_build) { pipeline.builds.find_by!(name: 'test_a') }
+
+ it 'creates a pipeline with builds' do
+ expected_builds = [
+ 'build_a', 'build_b', 'build_c', 'build_d 1/3', 'build_d 2/3',
+ 'build_d 3/3', 'test_a', 'test_b 1/2', 'test_b 2/2', 'test_c'
+ ]
+
+ expect(pipeline).to be_persisted
+ expect(pipeline.builds.pluck(:name)).to contain_exactly(*expected_builds)
+ end
+
+ it 'saves needs' do
+ expect(test_a_build.needs.map(&:attributes))
+ .to contain_exactly(
+ a_hash_including('name' => 'build_a', 'artifacts' => true),
+ a_hash_including('name' => 'build_b', 'artifacts' => true),
+ a_hash_including('name' => 'build_c', 'artifacts' => false)
+ )
+ end
+
+ it 'saves dependencies' do
+ expect(test_a_build.options)
+ .to match(a_hash_including('dependencies' => ['build_a']))
+ end
+
+ it 'artifacts default to true' do
+ test_job = pipeline.builds.find_by!(name: 'test_c')
+
+ expect(test_job.needs.map(&:attributes))
+ .to contain_exactly(
+ a_hash_including('name' => 'build_a', 'artifacts' => true),
+ a_hash_including('name' => 'build_b', 'artifacts' => true),
+ a_hash_including('name' => 'build_c', 'artifacts' => true)
+ )
+ end
+
+ it 'saves parallel jobs' do
+ ['1/2', '2/2'].each do |part|
+ test_job = pipeline.builds.find_by(name: "test_b #{part}")
+
+ expect(test_job.needs.map(&:attributes))
+ .to contain_exactly(
+ a_hash_including('name' => 'build_a', 'artifacts' => true),
+ a_hash_including('name' => 'build_b', 'artifacts' => true),
+ a_hash_including('name' => 'build_d 1/3', 'artifacts' => false),
+ a_hash_including('name' => 'build_d 2/3', 'artifacts' => false),
+ a_hash_including('name' => 'build_d 3/3', 'artifacts' => false)
+ )
+ end
+ end
+ end
+
+ context 'with an invalid config' do
+ let(:config) do
+ <<~YAML
+ build_a:
+ stage: build
+ script:
+ - make
+ artifacts:
+ paths:
+ - binaries/
+
+ build_b:
+ stage: build
+ script:
+ - make
+ artifacts:
+ paths:
+ - other_binaries/
+
+ test_a:
+ stage: test
+ script:
+ - ls
+ needs:
+ - build_a
+ - job: build_b
+ artifacts: string
+ YAML
+ end
+
+ it { expect(pipeline).to be_persisted }
+ it { expect(pipeline.builds.any?).to be_falsey }
+
+ it 'assigns an error to the pipeline' do
+ expect(pipeline.yaml_errors)
+ .to eq('jobs:test_a:needs:need artifacts should be a boolean value')
+ end
+ end
+ end
+end
diff --git a/spec/services/ci/create_pipeline_service/rules_spec.rb b/spec/services/ci/create_pipeline_service/rules_spec.rb
index c922266647b..0a2c5724ce4 100644
--- a/spec/services/ci/create_pipeline_service/rules_spec.rb
+++ b/spec/services/ci/create_pipeline_service/rules_spec.rb
@@ -13,7 +13,9 @@ describe Ci::CreatePipelineService do
context 'job:rules' do
before do
stub_ci_pipeline_yaml_file(config)
- allow_any_instance_of(Ci::BuildScheduleWorker).to receive(:perform).and_return(true)
+ allow_next_instance_of(Ci::BuildScheduleWorker) do |instance|
+ allow(instance).to receive(:perform).and_return(true)
+ end
end
context 'exists:' do
@@ -98,6 +100,17 @@ describe Ci::CreatePipelineService do
stub_ci_pipeline_yaml_file(config)
end
+ shared_examples 'workflow:rules feature disabled' do
+ before do
+ stub_feature_flags(workflow_rules: false)
+ end
+
+ it 'presents a message that rules are disabled' do
+ expect(pipeline.errors[:base]).to include('Workflow rules are disabled')
+ expect(pipeline).to be_persisted
+ end
+ end
+
context 'with a single regex-matching if: clause' do
let(:config) do
<<-EOY
@@ -114,48 +127,36 @@ describe Ci::CreatePipelineService do
end
context 'matching the first rule in the list' do
- it 'saves the pipeline' do
- expect(pipeline).to be_persisted
- end
-
- it 'sets the pipeline state to pending' do
+ it 'saves a pending pipeline' do
expect(pipeline).to be_pending
+ expect(pipeline).to be_persisted
end
end
context 'matching the last rule in the list' do
let(:ref) { 'refs/heads/feature' }
- it 'saves the pipeline' do
- expect(pipeline).to be_persisted
- end
-
- it 'sets the pipeline state to pending' do
+ it 'saves a pending pipeline' do
expect(pipeline).to be_pending
+ expect(pipeline).to be_persisted
end
end
context 'matching the when:never rule' do
let(:ref) { 'refs/heads/wip' }
- it 'does not save the pipeline' do
- expect(pipeline).not_to be_persisted
- end
-
- it 'attaches errors' do
+ it 'invalidates the pipeline with a workflow rules error' do
expect(pipeline.errors[:base]).to include('Pipeline filtered out by workflow rules.')
+ expect(pipeline).not_to be_persisted
end
end
context 'matching no rules in the list' do
let(:ref) { 'refs/heads/fix' }
- it 'does not save the pipeline' do
- expect(pipeline).not_to be_persisted
- end
-
- it 'attaches errors' do
+ it 'invalidates the pipeline with a workflow rules error' do
expect(pipeline.errors[:base]).to include('Pipeline filtered out by workflow rules.')
+ expect(pipeline).not_to be_persisted
end
end
end
@@ -176,12 +177,9 @@ describe Ci::CreatePipelineService do
end
context 'matching the first rule in the list' do
- it 'saves the pipeline' do
- expect(pipeline).to be_persisted
- end
-
- it 'sets the pipeline state to pending' do
+ it 'saves a pending pipeline' do
expect(pipeline).to be_pending
+ expect(pipeline).to be_persisted
end
end
end
@@ -204,24 +202,18 @@ describe Ci::CreatePipelineService do
context 'with partial match' do
let(:ref) { 'refs/heads/feature' }
- it 'saves the pipeline' do
- expect(pipeline).to be_persisted
- end
-
- it 'sets the pipeline state to pending' do
+ it 'saves a pending pipeline' do
expect(pipeline).to be_pending
+ expect(pipeline).to be_persisted
end
end
context 'with complete match' do
let(:ref) { 'refs/heads/feature_conflict' }
- it 'does not save the pipeline' do
- expect(pipeline).not_to be_persisted
- end
-
- it 'attaches errors' do
+ it 'invalidates the pipeline with a workflow rules error' do
expect(pipeline.errors[:base]).to include('Pipeline filtered out by workflow rules.')
+ expect(pipeline).not_to be_persisted
end
end
end
@@ -245,105 +237,45 @@ describe Ci::CreatePipelineService do
context 'where workflow passes and the job fails' do
let(:ref) { 'refs/heads/master' }
- it 'does not save the pipeline' do
- expect(pipeline).not_to be_persisted
- end
-
- it 'attaches an error about no job in the pipeline' do
+ it 'invalidates the pipeline with an empty jobs error' do
expect(pipeline.errors[:base]).to include('No stages / jobs for this pipeline.')
+ expect(pipeline).not_to be_persisted
end
- context 'with workflow:rules shut off' do
- before do
- stub_feature_flags(workflow_rules: false)
- end
-
- it 'does not save the pipeline' do
- expect(pipeline).not_to be_persisted
- end
-
- it 'attaches an error about no job in the pipeline' do
- expect(pipeline.errors[:base]).to include('No stages / jobs for this pipeline.')
- end
- end
+ it_behaves_like 'workflow:rules feature disabled'
end
context 'where workflow passes and the job passes' do
let(:ref) { 'refs/heads/feature' }
- it 'saves the pipeline' do
- expect(pipeline).to be_persisted
- end
-
- it 'sets the pipeline state to pending' do
+ it 'saves a pending pipeline' do
expect(pipeline).to be_pending
+ expect(pipeline).to be_persisted
end
- context 'with workflow:rules shut off' do
- before do
- stub_feature_flags(workflow_rules: false)
- end
-
- it 'saves the pipeline' do
- expect(pipeline).to be_persisted
- end
-
- it 'sets the pipeline state to pending' do
- expect(pipeline).to be_pending
- end
- end
+ it_behaves_like 'workflow:rules feature disabled'
end
context 'where workflow fails and the job fails' do
let(:ref) { 'refs/heads/fix' }
- it 'does not save the pipeline' do
- expect(pipeline).not_to be_persisted
- end
-
- it 'attaches an error about workflow rules' do
+ it 'invalidates the pipeline with a workflow rules error' do
expect(pipeline.errors[:base]).to include('Pipeline filtered out by workflow rules.')
+ expect(pipeline).not_to be_persisted
end
- context 'with workflow:rules shut off' do
- before do
- stub_feature_flags(workflow_rules: false)
- end
-
- it 'does not save the pipeline' do
- expect(pipeline).not_to be_persisted
- end
-
- it 'attaches an error about job rules' do
- expect(pipeline.errors[:base]).to include('No stages / jobs for this pipeline.')
- end
- end
+ it_behaves_like 'workflow:rules feature disabled'
end
context 'where workflow fails and the job passes' do
let(:ref) { 'refs/heads/wip' }
- it 'does not save the pipeline' do
- expect(pipeline).not_to be_persisted
- end
-
- it 'attaches an error about workflow rules' do
+ it 'invalidates the pipeline with a workflow rules error' do
expect(pipeline.errors[:base]).to include('Pipeline filtered out by workflow rules.')
+ expect(pipeline).not_to be_persisted
end
- context 'with workflow:rules shut off' do
- before do
- stub_feature_flags(workflow_rules: false)
- end
-
- it 'saves the pipeline' do
- expect(pipeline).to be_persisted
- end
-
- it 'sets the pipeline state to pending' do
- expect(pipeline).to be_pending
- end
- end
+ it_behaves_like 'workflow:rules feature disabled'
end
end
end
diff --git a/spec/services/ci/create_pipeline_service_spec.rb b/spec/services/ci/create_pipeline_service_spec.rb
index de0f4841215..04e57b1a2d4 100644
--- a/spec/services/ci/create_pipeline_service_spec.rb
+++ b/spec/services/ci/create_pipeline_service_spec.rb
@@ -10,7 +10,7 @@ describe Ci::CreatePipelineService do
let(:ref_name) { 'refs/heads/master' }
before do
- stub_repository_ci_yaml_file(sha: anything)
+ stub_ci_pipeline_yaml_file(gitlab_ci_yaml)
end
describe '#execute' do
@@ -510,7 +510,7 @@ describe Ci::CreatePipelineService do
it 'attaches errors to the pipeline' do
pipeline = execute_service
- expect(pipeline.errors.full_messages).to eq ['Missing .gitlab-ci.yml file']
+ expect(pipeline.errors.full_messages).to eq ['Missing CI config file']
expect(pipeline).not_to be_persisted
end
end
@@ -528,7 +528,7 @@ describe Ci::CreatePipelineService do
end
it 'logs error' do
- expect(Gitlab::Sentry).to receive(:track_acceptable_exception).and_call_original
+ expect(Gitlab::ErrorTracking).to receive(:track_exception).and_call_original
execute_service
end
@@ -613,7 +613,7 @@ describe Ci::CreatePipelineService do
end
it 'logs error' do
- expect(Gitlab::Sentry).to receive(:track_acceptable_exception).and_call_original
+ expect(Gitlab::ErrorTracking).to receive(:track_exception).and_call_original
execute_service
end
@@ -781,6 +781,25 @@ describe Ci::CreatePipelineService do
end
end
+ context 'with environment with auto_stop_in' do
+ before do
+ config = YAML.dump(
+ deploy: {
+ environment: { name: "review/$CI_COMMIT_REF_NAME", auto_stop_in: '1 day' },
+ script: 'ls'
+ })
+
+ stub_ci_pipeline_yaml_file(config)
+ end
+
+ it 'creates the environment with auto stop in' do
+ result = execute_service
+
+ expect(result).to be_persisted
+ expect(result.builds.first.options[:environment][:auto_stop_in]).to eq('1 day')
+ end
+ end
+
context 'with environment name including persisted variables' do
before do
config = YAML.dump(
@@ -801,6 +820,32 @@ describe Ci::CreatePipelineService do
end
end
+ context 'environment with Kubernetes configuration' do
+ let(:kubernetes_namespace) { 'custom-namespace' }
+
+ before do
+ config = YAML.dump(
+ deploy: {
+ environment: {
+ name: "environment-name",
+ kubernetes: { namespace: kubernetes_namespace }
+ },
+ script: 'ls'
+ }
+ )
+
+ stub_ci_pipeline_yaml_file(config)
+ end
+
+ it 'stores the requested namespace' do
+ result = execute_service
+ build = result.builds.first
+
+ expect(result).to be_persisted
+ expect(build.options.dig(:environment, :kubernetes, :namespace)).to eq(kubernetes_namespace)
+ end
+ end
+
context 'when environment with invalid name' do
before do
config = YAML.dump(deploy: { environment: { name: 'name,with,commas' }, script: 'ls' })
diff --git a/spec/services/ci/pipeline_trigger_service_spec.rb b/spec/services/ci/pipeline_trigger_service_spec.rb
index 24d42f402f4..44ce1ff699b 100644
--- a/spec/services/ci/pipeline_trigger_service_spec.rb
+++ b/spec/services/ci/pipeline_trigger_service_spec.rb
@@ -45,7 +45,9 @@ describe Ci::PipelineTriggerService do
context 'when commit message has [ci skip]' do
before do
- allow_any_instance_of(Ci::Pipeline).to receive(:git_commit_message) { '[ci skip]' }
+ allow_next_instance_of(Ci::Pipeline) do |instance|
+ allow(instance).to receive(:git_commit_message) { '[ci skip]' }
+ end
end
it 'ignores [ci skip] and create as general' do
@@ -124,7 +126,9 @@ describe Ci::PipelineTriggerService do
context 'when commit message has [ci skip]' do
before do
- allow_any_instance_of(Ci::Pipeline).to receive(:git_commit_message) { '[ci skip]' }
+ allow_next_instance_of(Ci::Pipeline) do |instance|
+ allow(instance).to receive(:git_commit_message) { '[ci skip]' }
+ end
end
it 'ignores [ci skip] and create as general' do
diff --git a/spec/services/ci/play_manual_stage_service_spec.rb b/spec/services/ci/play_manual_stage_service_spec.rb
index 5d812745c7f..e2946111a13 100644
--- a/spec/services/ci/play_manual_stage_service_spec.rb
+++ b/spec/services/ci/play_manual_stage_service_spec.rb
@@ -51,8 +51,9 @@ describe Ci::PlayManualStageService, '#execute' do
context 'when user does not have permission on a specific build' do
before do
- allow_any_instance_of(Ci::Build).to receive(:play)
- .and_raise(Gitlab::Access::AccessDeniedError)
+ allow_next_instance_of(Ci::Build) do |instance|
+ allow(instance).to receive(:play).and_raise(Gitlab::Access::AccessDeniedError)
+ end
service.execute(stage)
end
diff --git a/spec/services/ci/prepare_build_service_spec.rb b/spec/services/ci/prepare_build_service_spec.rb
index 2d027f13e52..3c3d8b90bb0 100644
--- a/spec/services/ci/prepare_build_service_spec.rb
+++ b/spec/services/ci/prepare_build_service_spec.rb
@@ -51,8 +51,8 @@ describe Ci::PrepareBuildService do
it 'drops the build and notifies Sentry' do
expect(build).to receive(:drop).with(:unmet_prerequisites).once
- expect(Gitlab::Sentry).to receive(:track_acceptable_exception)
- .with(instance_of(Kubeclient::HttpError), hash_including(extra: { build_id: build.id }))
+ expect(Gitlab::ErrorTracking).to receive(:track_exception)
+ .with(instance_of(Kubeclient::HttpError), hash_including(build_id: build.id))
subject
end
diff --git a/spec/services/ci/process_pipeline_service_spec.rb b/spec/services/ci/process_pipeline_service_spec.rb
index 991f8cdfac5..ba5891c8694 100644
--- a/spec/services/ci/process_pipeline_service_spec.rb
+++ b/spec/services/ci/process_pipeline_service_spec.rb
@@ -426,7 +426,9 @@ describe Ci::ProcessPipelineService, '#execute' do
before do
successful_build('test', stage_idx: 0)
- allow_any_instance_of(Ci::PersistentRef).to receive(:delete_refs) { raise ArgumentError }
+ allow_next_instance_of(Ci::PersistentRef) do |instance|
+ allow(instance).to receive(:delete_refs) { raise ArgumentError }
+ end
end
it 'process the pipeline' do
@@ -845,7 +847,7 @@ describe Ci::ProcessPipelineService, '#execute' do
end
def process_pipeline
- described_class.new(pipeline.project, user).execute(pipeline)
+ described_class.new(pipeline).execute
end
def all_builds
diff --git a/spec/services/ci/register_job_service_spec.rb b/spec/services/ci/register_job_service_spec.rb
index 04334fb8915..0339c6cc2d6 100644
--- a/spec/services/ci/register_job_service_spec.rb
+++ b/spec/services/ci/register_job_service_spec.rb
@@ -514,8 +514,8 @@ module Ci
subject { execute(specific_runner, {}) }
it 'does drop the build and logs both failures' do
- expect(Gitlab::Sentry).to receive(:track_acceptable_exception)
- .with(anything, a_hash_including(extra: a_hash_including(build_id: pending_job.id)))
+ expect(Gitlab::ErrorTracking).to receive(:track_exception)
+ .with(anything, a_hash_including(build_id: pending_job.id))
.twice
.and_call_original
@@ -540,8 +540,8 @@ module Ci
subject { execute(specific_runner, {}) }
it 'does drop the build and logs failure' do
- expect(Gitlab::Sentry).to receive(:track_acceptable_exception)
- .with(anything, a_hash_including(extra: a_hash_including(build_id: pending_job.id)))
+ expect(Gitlab::ErrorTracking).to receive(:track_exception)
+ .with(anything, a_hash_including(build_id: pending_job.id))
.once
.and_call_original
diff --git a/spec/services/ci/retry_pipeline_service_spec.rb b/spec/services/ci/retry_pipeline_service_spec.rb
index e42de3cd48f..4b949761b8f 100644
--- a/spec/services/ci/retry_pipeline_service_spec.rb
+++ b/spec/services/ci/retry_pipeline_service_spec.rb
@@ -91,6 +91,25 @@ describe Ci::RetryPipelineService, '#execute' do
end
end
+ context 'when there is a failed test in a DAG' do
+ before do
+ create_build('build', :success, 0)
+ create_build('build2', :success, 0)
+ test_build = create_build('test', :failed, 1)
+ create(:ci_build_need, build: test_build, name: 'build')
+ create(:ci_build_need, build: test_build, name: 'build2')
+ end
+
+ it 'retries the test' do
+ service.execute(pipeline)
+
+ expect(build('build')).to be_success
+ expect(build('build2')).to be_success
+ expect(build('test')).to be_pending
+ expect(build('test').needs.map(&:name)).to match_array(%w(build build2))
+ end
+ end
+
context 'when the last stage was skipepd' do
before do
create_build('build 1', :success, 0)
@@ -223,7 +242,7 @@ describe Ci::RetryPipelineService, '#execute' do
end
it 'reprocesses the pipeline' do
- expect(pipeline).to receive(:process!)
+ expect_any_instance_of(Ci::ProcessPipelineService).to receive(:execute)
service.execute(pipeline)
end
diff --git a/spec/services/clusters/applications/check_installation_progress_service_spec.rb b/spec/services/clusters/applications/check_installation_progress_service_spec.rb
index 02fd4b63c89..7b37eb97800 100644
--- a/spec/services/clusters/applications/check_installation_progress_service_spec.rb
+++ b/spec/services/clusters/applications/check_installation_progress_service_spec.rb
@@ -76,6 +76,7 @@ describe Clusters::Applications::CheckInstallationProgressService, '#execute' do
context 'when installation POD succeeded' do
let(:phase) { Gitlab::Kubernetes::Pod::SUCCEEDED }
+
before do
expect(service).to receive(:pod_phase).once.and_return(phase)
end
@@ -137,15 +138,15 @@ describe Clusters::Applications::CheckInstallationProgressService, '#execute' do
context 'when installation POD succeeded' do
let(:phase) { Gitlab::Kubernetes::Pod::SUCCEEDED }
+
before do
expect(service).to receive(:pod_phase).once.and_return(phase)
end
it 'removes the installation POD' do
- expect_any_instance_of(Gitlab::Kubernetes::Helm::Api)
- .to receive(:delete_pod!)
- .with(kind_of(String))
- .once
+ expect_next_instance_of(Gitlab::Kubernetes::Helm::Api) do |instance|
+ expect(instance).to receive(:delete_pod!).with(kind_of(String)).once
+ end
expect(service).to receive(:remove_installation_pod).and_call_original
service.execute
diff --git a/spec/services/clusters/applications/check_uninstall_progress_service_spec.rb b/spec/services/clusters/applications/check_uninstall_progress_service_spec.rb
index 68ad0208226..93557c6b229 100644
--- a/spec/services/clusters/applications/check_uninstall_progress_service_spec.rb
+++ b/spec/services/clusters/applications/check_uninstall_progress_service_spec.rb
@@ -46,11 +46,11 @@ describe Clusters::Applications::CheckUninstallProgressService do
context 'when installation POD succeeded' do
let(:phase) { Gitlab::Kubernetes::Pod::SUCCEEDED }
+
before do
- expect_any_instance_of(Gitlab::Kubernetes::Helm::Api)
- .to receive(:delete_pod!)
- .with(kind_of(String))
- .once
+ expect_next_instance_of(Gitlab::Kubernetes::Helm::Api) do |instance|
+ expect(instance).to receive(:delete_pod!).with(kind_of(String)).once
+ end
expect(service).to receive(:pod_phase).once.and_return(phase)
end
diff --git a/spec/services/clusters/applications/ingress_modsecurity_usage_service_spec.rb b/spec/services/clusters/applications/ingress_modsecurity_usage_service_spec.rb
new file mode 100644
index 00000000000..d456284f76a
--- /dev/null
+++ b/spec/services/clusters/applications/ingress_modsecurity_usage_service_spec.rb
@@ -0,0 +1,196 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Clusters::Applications::IngressModsecurityUsageService do
+ describe '#execute' do
+ ADO_MODSEC_KEY = Clusters::Applications::IngressModsecurityUsageService::ADO_MODSEC_KEY
+
+ let(:project_with_ci_var) { create(:environment).project }
+ let(:project_with_pipeline_var) { create(:environment).project }
+
+ subject { described_class.new.execute }
+
+ context 'with multiple projects' do
+ let(:pipeline1) { create(:ci_pipeline, :with_job, project: project_with_pipeline_var) }
+ let(:pipeline2) { create(:ci_pipeline, :with_job, project: project_with_ci_var) }
+
+ let!(:deployment_with_pipeline_var) do
+ create(
+ :deployment,
+ :success,
+ environment: project_with_pipeline_var.environments.first,
+ project: project_with_pipeline_var,
+ deployable: pipeline1.builds.last
+ )
+ end
+ let!(:deployment_with_project_var) do
+ create(
+ :deployment,
+ :success,
+ environment: project_with_ci_var.environments.first,
+ project: project_with_ci_var,
+ deployable: pipeline2.builds.last
+ )
+ end
+
+ context 'mixed data' do
+ let!(:ci_variable) { create(:ci_variable, project: project_with_ci_var, key: ADO_MODSEC_KEY, value: "On") }
+ let!(:pipeline_variable) { create(:ci_pipeline_variable, pipeline: pipeline1, key: ADO_MODSEC_KEY, value: "Off") }
+
+ it 'gathers variable data' do
+ expect(subject[:ingress_modsecurity_blocking]).to eq(1)
+ expect(subject[:ingress_modsecurity_disabled]).to eq(1)
+ end
+ end
+
+ context 'blocking' do
+ let(:modsec_values) { { key: ADO_MODSEC_KEY, value: "On" } }
+
+ let!(:ci_variable) { create(:ci_variable, project: project_with_ci_var, **modsec_values) }
+ let!(:pipeline_variable) { create(:ci_pipeline_variable, pipeline: pipeline1, **modsec_values) }
+
+ it 'gathers variable data' do
+ expect(subject[:ingress_modsecurity_blocking]).to eq(2)
+ expect(subject[:ingress_modsecurity_disabled]).to eq(0)
+ end
+ end
+
+ context 'disabled' do
+ let(:modsec_values) { { key: ADO_MODSEC_KEY, value: "Off" } }
+
+ let!(:ci_variable) { create(:ci_variable, project: project_with_ci_var, **modsec_values) }
+ let!(:pipeline_variable) { create(:ci_pipeline_variable, pipeline: pipeline1, **modsec_values) }
+
+ it 'gathers variable data' do
+ expect(subject[:ingress_modsecurity_blocking]).to eq(0)
+ expect(subject[:ingress_modsecurity_disabled]).to eq(2)
+ end
+ end
+ end
+
+ context 'when set as both ci and pipeline variables' do
+ let(:modsec_values) { { key: ADO_MODSEC_KEY, value: "Off" } }
+
+ let(:pipeline) { create(:ci_pipeline, :with_job, project: project_with_ci_var) }
+ let!(:deployment) do
+ create(
+ :deployment,
+ :success,
+ environment: project_with_ci_var.environments.first,
+ project: project_with_ci_var,
+ deployable: pipeline.builds.last
+ )
+ end
+
+ let!(:ci_variable) { create(:ci_variable, project: project_with_ci_var, **modsec_values) }
+ let!(:pipeline_variable) { create(:ci_pipeline_variable, pipeline: pipeline, **modsec_values) }
+
+ it 'wont double-count projects' do
+ expect(subject[:ingress_modsecurity_blocking]).to eq(0)
+ expect(subject[:ingress_modsecurity_disabled]).to eq(1)
+ end
+
+ it 'gives precedence to pipeline variable' do
+ pipeline_variable.update(value: "On")
+
+ expect(subject[:ingress_modsecurity_blocking]).to eq(1)
+ expect(subject[:ingress_modsecurity_disabled]).to eq(0)
+ end
+ end
+
+ context 'when a project has multiple environments' do
+ let(:modsec_values) { { key: ADO_MODSEC_KEY, value: "On" } }
+
+ let!(:env1) { project_with_pipeline_var.environments.first }
+ let!(:env2) { create(:environment, project: project_with_pipeline_var) }
+
+ let!(:pipeline_with_2_deployments) do
+ create(:ci_pipeline, :with_job, project: project_with_ci_var).tap do |pip|
+ pip.builds << build(:ci_build, pipeline: pip, project: project_with_pipeline_var)
+ end
+ end
+
+ let!(:deployment1) do
+ create(
+ :deployment,
+ :success,
+ environment: env1,
+ project: project_with_pipeline_var,
+ deployable: pipeline_with_2_deployments.builds.last
+ )
+ end
+ let!(:deployment2) do
+ create(
+ :deployment,
+ :success,
+ environment: env2,
+ project: project_with_pipeline_var,
+ deployable: pipeline_with_2_deployments.builds.last
+ )
+ end
+
+ context 'when set as ci variable' do
+ let!(:ci_variable) { create(:ci_variable, project: project_with_pipeline_var, **modsec_values) }
+
+ it 'gathers variable data' do
+ expect(subject[:ingress_modsecurity_blocking]).to eq(2)
+ expect(subject[:ingress_modsecurity_disabled]).to eq(0)
+ end
+ end
+
+ context 'when set as pipeline variable' do
+ let!(:pipeline_variable) { create(:ci_pipeline_variable, pipeline: pipeline_with_2_deployments, **modsec_values) }
+
+ it 'gathers variable data' do
+ expect(subject[:ingress_modsecurity_blocking]).to eq(2)
+ expect(subject[:ingress_modsecurity_disabled]).to eq(0)
+ end
+ end
+ end
+
+ context 'when an environment has multiple deployments' do
+ let!(:env) { project_with_pipeline_var.environments.first }
+
+ let!(:pipeline_first) do
+ create(:ci_pipeline, :with_job, project: project_with_pipeline_var).tap do |pip|
+ pip.builds << build(:ci_build, pipeline: pip, project: project_with_pipeline_var)
+ end
+ end
+ let!(:pipeline_last) do
+ create(:ci_pipeline, :with_job, project: project_with_pipeline_var).tap do |pip|
+ pip.builds << build(:ci_build, pipeline: pip, project: project_with_pipeline_var)
+ end
+ end
+
+ let!(:deployment_first) do
+ create(
+ :deployment,
+ :success,
+ environment: env,
+ project: project_with_pipeline_var,
+ deployable: pipeline_first.builds.last
+ )
+ end
+ let!(:deployment_last) do
+ create(
+ :deployment,
+ :success,
+ environment: env,
+ project: project_with_pipeline_var,
+ deployable: pipeline_last.builds.last
+ )
+ end
+
+ context 'when set as pipeline variable' do
+ let!(:first_pipeline_variable) { create(:ci_pipeline_variable, pipeline: pipeline_first, key: ADO_MODSEC_KEY, value: "On") }
+ let!(:last_pipeline_variable) { create(:ci_pipeline_variable, pipeline: pipeline_last, key: ADO_MODSEC_KEY, value: "Off") }
+
+ it 'gives precedence to latest deployment' do
+ expect(subject[:ingress_modsecurity_blocking]).to eq(0)
+ expect(subject[:ingress_modsecurity_disabled]).to eq(1)
+ end
+ end
+ end
+ end
+end
diff --git a/spec/services/clusters/applications/patch_service_spec.rb b/spec/services/clusters/applications/patch_service_spec.rb
index 3ebe0540837..c6d0fee43c4 100644
--- a/spec/services/clusters/applications/patch_service_spec.rb
+++ b/spec/services/clusters/applications/patch_service_spec.rb
@@ -51,7 +51,7 @@ describe Clusters::Applications::PatchService do
service.execute
expect(application).to be_update_errored
- expect(application.status_reason).to match('Kubernetes error: 500')
+ expect(application.status_reason).to eq(_('Kubernetes error: %{error_code}') % { error_code: 500 })
end
end
@@ -73,7 +73,7 @@ describe Clusters::Applications::PatchService do
service.execute
expect(application).to be_update_errored
- expect(application.status_reason).to eq('Failed to update.')
+ expect(application.status_reason).to eq(_('Failed to update.'))
end
end
end
diff --git a/spec/services/clusters/applications/upgrade_service_spec.rb b/spec/services/clusters/applications/upgrade_service_spec.rb
index a80b1d9127c..48fa79eeb97 100644
--- a/spec/services/clusters/applications/upgrade_service_spec.rb
+++ b/spec/services/clusters/applications/upgrade_service_spec.rb
@@ -51,7 +51,7 @@ describe Clusters::Applications::UpgradeService do
service.execute
expect(application).to be_update_errored
- expect(application.status_reason).to match('Kubernetes error: 500')
+ expect(application.status_reason).to eq(_('Kubernetes error: %{error_code}') % { error_code: 500 })
end
end
@@ -73,7 +73,7 @@ describe Clusters::Applications::UpgradeService do
service.execute
expect(application).to be_update_errored
- expect(application.status_reason).to eq('Failed to upgrade.')
+ expect(application.status_reason).to eq(_('Failed to upgrade.'))
end
end
end
diff --git a/spec/services/clusters/aws/authorize_role_service_spec.rb b/spec/services/clusters/aws/authorize_role_service_spec.rb
new file mode 100644
index 00000000000..3ef332558a2
--- /dev/null
+++ b/spec/services/clusters/aws/authorize_role_service_spec.rb
@@ -0,0 +1,91 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Clusters::Aws::AuthorizeRoleService do
+ let(:user) { create(:user) }
+ let(:credentials) { instance_double(Aws::Credentials) }
+ let(:credentials_service) { instance_double(Clusters::Aws::FetchCredentialsService, execute: credentials) }
+
+ let(:params) do
+ params = ActionController::Parameters.new({
+ cluster: {
+ role_arn: 'arn:my-role',
+ role_external_id: 'external-id'
+ }
+ })
+
+ params.require(:cluster).permit(:role_arn, :role_external_id)
+ end
+
+ subject { described_class.new(user, params: params).execute }
+
+ before do
+ allow(Clusters::Aws::FetchCredentialsService).to receive(:new)
+ .with(instance_of(Aws::Role)).and_return(credentials_service)
+ end
+
+ context 'role does not exist' do
+ it 'creates an Aws::Role record and returns a set of credentials' do
+ expect(user).to receive(:create_aws_role!)
+ .with(params).and_call_original
+
+ expect(subject.status).to eq(:ok)
+ expect(subject.body).to eq(credentials)
+ end
+ end
+
+ context 'role already exists' do
+ let(:role) { create(:aws_role, user: user) }
+
+ it 'updates the existing Aws::Role record and returns a set of credentials' do
+ expect(role).to receive(:update!)
+ .with(params).and_call_original
+
+ expect(subject.status).to eq(:ok)
+ expect(subject.body).to eq(credentials)
+ end
+ end
+
+ context 'errors' do
+ shared_examples 'bad request' do
+ it 'returns an empty hash' do
+ expect(subject.status).to eq(:unprocessable_entity)
+ expect(subject.body).to eq({})
+ end
+ end
+
+ context 'cannot create role' do
+ before do
+ allow(user).to receive(:create_aws_role!)
+ .and_raise(ActiveRecord::RecordInvalid.new(user))
+ end
+
+ include_examples 'bad request'
+ end
+
+ context 'client errors' do
+ before do
+ allow(credentials_service).to receive(:execute).and_raise(error)
+ end
+
+ context 'error fetching credentials' do
+ let(:error) { Aws::STS::Errors::ServiceError.new(nil, 'error message') }
+
+ include_examples 'bad request'
+ end
+
+ context 'credentials not configured' do
+ let(:error) { Aws::Errors::MissingCredentialsError.new('error message') }
+
+ include_examples 'bad request'
+ end
+
+ context 'role not configured' do
+ let(:error) { Clusters::Aws::FetchCredentialsService::MissingRoleError.new('error message') }
+
+ include_examples 'bad request'
+ end
+ end
+ end
+end
diff --git a/spec/services/clusters/aws/fetch_credentials_service_spec.rb b/spec/services/clusters/aws/fetch_credentials_service_spec.rb
index 726d1c30603..9194947c67f 100644
--- a/spec/services/clusters/aws/fetch_credentials_service_spec.rb
+++ b/spec/services/clusters/aws/fetch_credentials_service_spec.rb
@@ -5,19 +5,18 @@ require 'spec_helper'
describe Clusters::Aws::FetchCredentialsService do
describe '#execute' do
let(:user) { create(:user) }
- let(:provider) { create(:cluster_provider_aws) }
+ let(:provider) { create(:cluster_provider_aws, region: 'ap-southeast-2') }
let(:gitlab_access_key_id) { 'gitlab-access-key-id' }
let(:gitlab_secret_access_key) { 'gitlab-secret-access-key' }
- let(:region) { 'us-east-1' }
let(:gitlab_credentials) { Aws::Credentials.new(gitlab_access_key_id, gitlab_secret_access_key) }
let(:sts_client) { Aws::STS::Client.new(credentials: gitlab_credentials, region: region) }
let(:assumed_role) { instance_double(Aws::AssumeRoleCredentials, credentials: assumed_role_credentials) }
let(:assumed_role_credentials) { double }
- subject { described_class.new(provision_role, region: region, provider: provider).execute }
+ subject { described_class.new(provision_role, provider: provider).execute }
context 'provision role is configured' do
let(:provision_role) { create(:aws_role, user: user) }
@@ -39,19 +38,30 @@ describe Clusters::Aws::FetchCredentialsService do
client: sts_client,
role_arn: provision_role.role_arn,
role_session_name: session_name,
- external_id: provision_role.role_external_id
+ external_id: provision_role.role_external_id,
+ policy: session_policy
).and_return(assumed_role)
end
context 'provider is specified' do
+ let(:region) { provider.region }
let(:session_name) { "gitlab-eks-cluster-#{provider.cluster_id}-user-#{user.id}" }
+ let(:session_policy) { nil }
it { is_expected.to eq assumed_role_credentials }
end
context 'provider is not specifed' do
let(:provider) { nil }
+ let(:region) { Clusters::Providers::Aws::DEFAULT_REGION }
let(:session_name) { "gitlab-eks-autofill-user-#{user.id}" }
+ let(:session_policy) { 'policy-document' }
+
+ before do
+ allow(File).to receive(:read)
+ .with(Rails.root.join('vendor', 'aws', 'iam', 'eks_cluster_read_only_policy.json'))
+ .and_return(session_policy)
+ end
it { is_expected.to eq assumed_role_credentials }
end
diff --git a/spec/services/clusters/aws/proxy_service_spec.rb b/spec/services/clusters/aws/proxy_service_spec.rb
deleted file mode 100644
index 7b0e0512b95..00000000000
--- a/spec/services/clusters/aws/proxy_service_spec.rb
+++ /dev/null
@@ -1,210 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-describe Clusters::Aws::ProxyService do
- let(:role) { create(:aws_role) }
- let(:credentials) { instance_double(Aws::Credentials) }
- let(:client_instance) { instance_double(client) }
-
- let(:region) { 'region' }
- let(:vpc_id) { }
- let(:params) do
- ActionController::Parameters.new({
- resource: resource,
- region: region,
- vpc_id: vpc_id
- })
- end
-
- subject { described_class.new(role, params: params).execute }
-
- context 'external resources' do
- before do
- allow(Clusters::Aws::FetchCredentialsService).to receive(:new) do
- double(execute: credentials)
- end
-
- allow(client).to receive(:new)
- .with(
- credentials: credentials, region: region,
- http_open_timeout: 5, http_read_timeout: 10)
- .and_return(client_instance)
- end
-
- shared_examples 'bad request' do
- it 'returns an empty hash' do
- expect(subject.status).to eq :bad_request
- expect(subject.body).to eq({})
- end
- end
-
- describe 'key_pairs' do
- let(:client) { Aws::EC2::Client }
- let(:resource) { 'key_pairs' }
- let(:response) { double(to_hash: :key_pairs) }
-
- it 'requests a list of key pairs' do
- expect(client_instance).to receive(:describe_key_pairs).once.and_return(response)
- expect(subject.status).to eq :ok
- expect(subject.body).to eq :key_pairs
- end
- end
-
- describe 'roles' do
- let(:client) { Aws::IAM::Client }
- let(:resource) { 'roles' }
- let(:response) { double(to_hash: :roles) }
-
- it 'requests a list of roles' do
- expect(client_instance).to receive(:list_roles).once.and_return(response)
- expect(subject.status).to eq :ok
- expect(subject.body).to eq :roles
- end
- end
-
- describe 'regions' do
- let(:client) { Aws::EC2::Client }
- let(:resource) { 'regions' }
- let(:response) { double(to_hash: :regions) }
-
- it 'requests a list of regions' do
- expect(client_instance).to receive(:describe_regions).once.and_return(response)
- expect(subject.status).to eq :ok
- expect(subject.body).to eq :regions
- end
- end
-
- describe 'security_groups' do
- let(:client) { Aws::EC2::Client }
- let(:resource) { 'security_groups' }
- let(:response) { double(to_hash: :security_groups) }
-
- include_examples 'bad request'
-
- context 'VPC is specified' do
- let(:vpc_id) { 'vpc-1' }
-
- it 'requests a list of security groups for a VPC' do
- expect(client_instance).to receive(:describe_security_groups).once
- .with(filters: [{ name: 'vpc-id', values: [vpc_id] }])
- .and_return(response)
- expect(subject.status).to eq :ok
- expect(subject.body).to eq :security_groups
- end
- end
- end
-
- describe 'subnets' do
- let(:client) { Aws::EC2::Client }
- let(:resource) { 'subnets' }
- let(:response) { double(to_hash: :subnets) }
-
- include_examples 'bad request'
-
- context 'VPC is specified' do
- let(:vpc_id) { 'vpc-1' }
-
- it 'requests a list of subnets for a VPC' do
- expect(client_instance).to receive(:describe_subnets).once
- .with(filters: [{ name: 'vpc-id', values: [vpc_id] }])
- .and_return(response)
- expect(subject.status).to eq :ok
- expect(subject.body).to eq :subnets
- end
- end
- end
-
- describe 'vpcs' do
- let(:client) { Aws::EC2::Client }
- let(:resource) { 'vpcs' }
- let(:response) { double(to_hash: :vpcs) }
-
- it 'requests a list of VPCs' do
- expect(client_instance).to receive(:describe_vpcs).once.and_return(response)
- expect(subject.status).to eq :ok
- expect(subject.body).to eq :vpcs
- end
- end
-
- context 'errors' do
- let(:client) { Aws::EC2::Client }
-
- context 'unknown resource' do
- let(:resource) { 'instances' }
-
- include_examples 'bad request'
- end
-
- context 'client and configuration errors' do
- let(:resource) { 'vpcs' }
-
- before do
- allow(client_instance).to receive(:describe_vpcs).and_raise(error)
- end
-
- context 'error fetching credentials' do
- let(:error) { Aws::STS::Errors::ServiceError.new(nil, 'error message') }
-
- include_examples 'bad request'
- end
-
- context 'credentials not configured' do
- let(:error) { Aws::Errors::MissingCredentialsError.new('error message') }
-
- include_examples 'bad request'
- end
-
- context 'role not configured' do
- let(:error) { Clusters::Aws::FetchCredentialsService::MissingRoleError.new('error message') }
-
- include_examples 'bad request'
- end
-
- context 'EC2 error' do
- let(:error) { Aws::EC2::Errors::ServiceError.new(nil, 'error message') }
-
- include_examples 'bad request'
- end
-
- context 'IAM error' do
- let(:error) { Aws::IAM::Errors::ServiceError.new(nil, 'error message') }
-
- include_examples 'bad request'
- end
-
- context 'STS error' do
- let(:error) { Aws::STS::Errors::ServiceError.new(nil, 'error message') }
-
- include_examples 'bad request'
- end
- end
- end
- end
-
- context 'local resources' do
- describe 'instance_types' do
- let(:resource) { 'instance_types' }
- let(:cloudformation_template) { double }
- let(:instance_types) { double(dig: %w(t3.small)) }
-
- before do
- allow(File).to receive(:read)
- .with(Rails.root.join('vendor', 'aws', 'cloudformation', 'eks_cluster.yaml'))
- .and_return(cloudformation_template)
-
- allow(YAML).to receive(:safe_load)
- .with(cloudformation_template)
- .and_return(instance_types)
- end
-
- it 'returns a list of instance types' do
- expect(subject.status).to eq :ok
- expect(subject.body).to have_key(:instance_types)
- expect(subject.body[:instance_types]).to match_array([
- instance_type_name: 't3.small'
- ])
- end
- end
- end
-end
diff --git a/spec/services/clusters/cleanup/app_service_spec.rb b/spec/services/clusters/cleanup/app_service_spec.rb
new file mode 100644
index 00000000000..cc27f409086
--- /dev/null
+++ b/spec/services/clusters/cleanup/app_service_spec.rb
@@ -0,0 +1,117 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Clusters::Cleanup::AppService do
+ describe '#execute' do
+ let!(:cluster) { create(:cluster, :project, :cleanup_uninstalling_applications, provider_type: :gcp) }
+ let(:service) { described_class.new(cluster) }
+ let(:logger) { service.send(:logger) }
+ let(:log_meta) do
+ {
+ service: described_class.name,
+ cluster_id: cluster.id,
+ execution_count: 0
+ }
+ end
+
+ subject { service.execute }
+
+ shared_examples 'does not reschedule itself' do
+ it 'does not reschedule itself' do
+ expect(Clusters::Cleanup::AppWorker).not_to receive(:perform_in)
+ end
+ end
+
+ context 'when cluster has no applications available or transitioning applications' do
+ it_behaves_like 'does not reschedule itself'
+
+ it 'transitions cluster to cleanup_removing_project_namespaces' do
+ expect { subject }
+ .to change { cluster.reload.cleanup_status_name }
+ .from(:cleanup_uninstalling_applications)
+ .to(:cleanup_removing_project_namespaces)
+ end
+
+ it 'schedules Clusters::Cleanup::ProjectNamespaceWorker' do
+ expect(Clusters::Cleanup::ProjectNamespaceWorker).to receive(:perform_async).with(cluster.id)
+ subject
+ end
+
+ it 'logs all events' do
+ expect(logger).to receive(:info)
+ .with(log_meta.merge(event: :schedule_remove_project_namespaces))
+
+ subject
+ end
+ end
+
+ context 'when cluster has uninstallable applications' do
+ shared_examples 'reschedules itself' do
+ it 'reschedules itself' do
+ expect(Clusters::Cleanup::AppWorker)
+ .to receive(:perform_in)
+ .with(1.minute, cluster.id, 1)
+
+ subject
+ end
+ end
+
+ context 'has applications with dependencies' do
+ let!(:helm) { create(:clusters_applications_helm, :installed, cluster: cluster) }
+ let!(:ingress) { create(:clusters_applications_ingress, :installed, cluster: cluster) }
+ let!(:cert_manager) { create(:clusters_applications_cert_manager, :installed, cluster: cluster) }
+ let!(:jupyter) { create(:clusters_applications_jupyter, :installed, cluster: cluster) }
+
+ it_behaves_like 'reschedules itself'
+
+ it 'only uninstalls apps that are not dependencies for other installed apps' do
+ expect(Clusters::Applications::UninstallWorker)
+ .not_to receive(:perform_async).with(helm.name, helm.id)
+
+ expect(Clusters::Applications::UninstallWorker)
+ .not_to receive(:perform_async).with(ingress.name, ingress.id)
+
+ expect(Clusters::Applications::UninstallWorker)
+ .to receive(:perform_async).with(cert_manager.name, cert_manager.id)
+ .and_call_original
+
+ expect(Clusters::Applications::UninstallWorker)
+ .to receive(:perform_async).with(jupyter.name, jupyter.id)
+ .and_call_original
+
+ subject
+ end
+
+ it 'logs application uninstalls and next execution' do
+ expect(logger).to receive(:info)
+ .with(log_meta.merge(event: :uninstalling_app, application: kind_of(String))).exactly(2).times
+ expect(logger).to receive(:info)
+ .with(log_meta.merge(event: :scheduling_execution, next_execution: 1))
+
+ subject
+ end
+
+ context 'cluster is not cleanup_uninstalling_applications' do
+ let!(:cluster) { create(:cluster, :project, provider_type: :gcp) }
+
+ it_behaves_like 'does not reschedule itself'
+ end
+ end
+
+ context 'when applications are still uninstalling/scheduled/depending on others' do
+ let!(:helm) { create(:clusters_applications_helm, :installed, cluster: cluster) }
+ let!(:ingress) { create(:clusters_applications_ingress, :scheduled, cluster: cluster) }
+ let!(:runner) { create(:clusters_applications_runner, :uninstalling, cluster: cluster) }
+
+ it_behaves_like 'reschedules itself'
+
+ it 'does not call the uninstallation service' do
+ expect(Clusters::Applications::UninstallWorker).not_to receive(:new)
+
+ subject
+ end
+ end
+ end
+ end
+end
diff --git a/spec/services/clusters/cleanup/project_namespace_service_spec.rb b/spec/services/clusters/cleanup/project_namespace_service_spec.rb
new file mode 100644
index 00000000000..22e29cc57d1
--- /dev/null
+++ b/spec/services/clusters/cleanup/project_namespace_service_spec.rb
@@ -0,0 +1,85 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Clusters::Cleanup::ProjectNamespaceService do
+ describe '#execute' do
+ subject { service.execute }
+
+ let!(:service) { described_class.new(cluster) }
+ let!(:cluster) { create(:cluster, :with_environments, :cleanup_removing_project_namespaces) }
+ let!(:logger) { service.send(:logger) }
+ let(:log_meta) do
+ {
+ service: described_class.name,
+ cluster_id: cluster.id,
+ execution_count: 0
+ }
+ end
+ let(:kubeclient_instance_double) do
+ instance_double(Gitlab::Kubernetes::KubeClient, delete_namespace: nil, delete_service_account: nil)
+ end
+
+ before do
+ allow_any_instance_of(Clusters::Cluster).to receive(:kubeclient).and_return(kubeclient_instance_double)
+ end
+
+ context 'when cluster has namespaces to be deleted' do
+ it 'deletes namespaces from cluster' do
+ expect(kubeclient_instance_double).to receive(:delete_namespace)
+ .with cluster.kubernetes_namespaces[0].namespace
+ expect(kubeclient_instance_double).to receive(:delete_namespace)
+ .with(cluster.kubernetes_namespaces[1].namespace)
+
+ subject
+ end
+
+ it 'deletes namespaces from database' do
+ expect { subject }.to change { cluster.kubernetes_namespaces.exists? }.from(true).to(false)
+ end
+
+ it 'schedules ::ServiceAccountWorker' do
+ expect(Clusters::Cleanup::ServiceAccountWorker).to receive(:perform_async).with(cluster.id)
+ subject
+ end
+
+ it 'logs all events' do
+ expect(logger).to receive(:info)
+ .with(
+ log_meta.merge(
+ event: :deleting_project_namespace,
+ namespace: cluster.kubernetes_namespaces[0].namespace))
+ expect(logger).to receive(:info)
+ .with(
+ log_meta.merge(
+ event: :deleting_project_namespace,
+ namespace: cluster.kubernetes_namespaces[1].namespace))
+
+ subject
+ end
+ end
+
+ context 'when cluster has no namespaces' do
+ let!(:cluster) { create(:cluster, :cleanup_removing_project_namespaces) }
+
+ it 'schedules Clusters::Cleanup::ServiceAccountWorker' do
+ expect(Clusters::Cleanup::ServiceAccountWorker).to receive(:perform_async).with(cluster.id)
+
+ subject
+ end
+
+ it 'transitions to cleanup_removing_service_account' do
+ expect { subject }
+ .to change { cluster.reload.cleanup_status_name }
+ .from(:cleanup_removing_project_namespaces)
+ .to(:cleanup_removing_service_account)
+ end
+
+ it 'does not try to delete namespaces' do
+ expect(kubeclient_instance_double).not_to receive(:delete_namespace)
+
+ subject
+ end
+ end
+ end
+end
diff --git a/spec/services/clusters/cleanup/service_account_service_spec.rb b/spec/services/clusters/cleanup/service_account_service_spec.rb
new file mode 100644
index 00000000000..ecaf0da9fa3
--- /dev/null
+++ b/spec/services/clusters/cleanup/service_account_service_spec.rb
@@ -0,0 +1,47 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Clusters::Cleanup::ServiceAccountService do
+ describe '#execute' do
+ subject { service.execute }
+
+ let!(:service) { described_class.new(cluster) }
+ let!(:cluster) { create(:cluster, :cleanup_removing_service_account) }
+ let!(:logger) { service.send(:logger) }
+ let(:log_meta) do
+ {
+ service: described_class.name,
+ cluster_id: cluster.id,
+ execution_count: 0
+ }
+ end
+ let(:kubeclient_instance_double) do
+ instance_double(Gitlab::Kubernetes::KubeClient, delete_namespace: nil, delete_service_account: nil)
+ end
+
+ before do
+ allow_any_instance_of(Clusters::Cluster).to receive(:kubeclient).and_return(kubeclient_instance_double)
+ end
+
+ it 'deletes gitlab service account' do
+ expect(kubeclient_instance_double).to receive(:delete_service_account)
+ .with(
+ ::Clusters::Kubernetes::GITLAB_SERVICE_ACCOUNT_NAME,
+ ::Clusters::Kubernetes::GITLAB_SERVICE_ACCOUNT_NAMESPACE)
+
+ subject
+ end
+
+ it 'logs all events' do
+ expect(logger).to receive(:info).with(log_meta.merge(event: :deleting_gitlab_service_account))
+ expect(logger).to receive(:info).with(log_meta.merge(event: :destroying_cluster))
+
+ subject
+ end
+
+ it 'deletes cluster' do
+ expect { subject }.to change { Clusters::Cluster.where(id: cluster.id).exists? }.from(true).to(false)
+ end
+ end
+end
diff --git a/spec/services/clusters/destroy_service_spec.rb b/spec/services/clusters/destroy_service_spec.rb
index c0fcc971500..43ebf8f499e 100644
--- a/spec/services/clusters/destroy_service_spec.rb
+++ b/spec/services/clusters/destroy_service_spec.rb
@@ -45,7 +45,7 @@ describe Clusters::DestroyService do
expect(Clusters::Cluster.where(id: cluster.id).exists?).not_to be_falsey
end
- it 'transition cluster#cleanup_status from cleanup_not_started to uninstalling_applications' do
+ it 'transition cluster#cleanup_status from cleanup_not_started to cleanup_uninstalling_applications' do
expect { subject }.to change { cluster.cleanup_status_name }
.from(:cleanup_not_started)
.to(:cleanup_uninstalling_applications)
diff --git a/spec/services/clusters/gcp/verify_provision_status_service_spec.rb b/spec/services/clusters/gcp/verify_provision_status_service_spec.rb
index 9611b2080ba..584f9b8367f 100644
--- a/spec/services/clusters/gcp/verify_provision_status_service_spec.rb
+++ b/spec/services/clusters/gcp/verify_provision_status_service_spec.rb
@@ -21,7 +21,9 @@ describe Clusters::Gcp::VerifyProvisionStatusService do
shared_examples 'finalize_creation' do
it 'schedules a worker for status minitoring' do
- expect_any_instance_of(Clusters::Gcp::FinalizeCreationService).to receive(:execute)
+ expect_next_instance_of(Clusters::Gcp::FinalizeCreationService) do |instance|
+ expect(instance).to receive(:execute)
+ end
described_class.new.execute(provider)
end
diff --git a/spec/services/clusters/kubernetes/create_or_update_namespace_service_spec.rb b/spec/services/clusters/kubernetes/create_or_update_namespace_service_spec.rb
index 291e63bbe4a..5dc4a1dc0b3 100644
--- a/spec/services/clusters/kubernetes/create_or_update_namespace_service_spec.rb
+++ b/spec/services/clusters/kubernetes/create_or_update_namespace_service_spec.rb
@@ -22,7 +22,6 @@ describe Clusters::Kubernetes::CreateOrUpdateNamespaceService, '#execute' do
before do
stub_kubeclient_discover(api_url)
- stub_kubeclient_get_namespace(api_url)
stub_kubeclient_get_service_account_error(api_url, 'gitlab')
stub_kubeclient_create_service_account(api_url)
stub_kubeclient_get_secret_error(api_url, 'gitlab-token')
@@ -31,6 +30,7 @@ describe Clusters::Kubernetes::CreateOrUpdateNamespaceService, '#execute' do
stub_kubeclient_get_role_binding(api_url, "gitlab-#{namespace}", namespace: namespace)
stub_kubeclient_put_role_binding(api_url, "gitlab-#{namespace}", namespace: namespace)
stub_kubeclient_get_namespace(api_url, namespace: namespace)
+ stub_kubeclient_get_namespace(api_url, namespace: Clusters::Kubernetes::KNATIVE_SERVING_NAMESPACE)
stub_kubeclient_get_service_account_error(api_url, "#{namespace}-service-account", namespace: namespace)
stub_kubeclient_create_service_account(api_url, namespace: namespace)
stub_kubeclient_create_secret(api_url, namespace: namespace)
@@ -39,6 +39,8 @@ describe Clusters::Kubernetes::CreateOrUpdateNamespaceService, '#execute' do
stub_kubeclient_put_role_binding(api_url, Clusters::Kubernetes::GITLAB_KNATIVE_SERVING_ROLE_BINDING_NAME, namespace: namespace)
stub_kubeclient_put_role(api_url, Clusters::Kubernetes::GITLAB_CROSSPLANE_DATABASE_ROLE_NAME, namespace: namespace)
stub_kubeclient_put_role_binding(api_url, Clusters::Kubernetes::GITLAB_CROSSPLANE_DATABASE_ROLE_BINDING_NAME, namespace: namespace)
+ stub_kubeclient_put_cluster_role(api_url, Clusters::Kubernetes::GITLAB_KNATIVE_VERSION_ROLE_NAME)
+ stub_kubeclient_put_cluster_role_binding(api_url, Clusters::Kubernetes::GITLAB_KNATIVE_VERSION_ROLE_BINDING_NAME)
stub_kubeclient_get_secret(
api_url,
@@ -58,7 +60,9 @@ describe Clusters::Kubernetes::CreateOrUpdateNamespaceService, '#execute' do
end
it 'creates project service account' do
- expect_any_instance_of(Clusters::Kubernetes::CreateOrUpdateServiceAccountService).to receive(:execute).once
+ expect_next_instance_of(Clusters::Kubernetes::CreateOrUpdateServiceAccountService) do |instance|
+ expect(instance).to receive(:execute).once
+ end
subject
end
@@ -125,7 +129,9 @@ describe Clusters::Kubernetes::CreateOrUpdateNamespaceService, '#execute' do
end
it 'creates project service account' do
- expect_any_instance_of(Clusters::Kubernetes::CreateOrUpdateServiceAccountService).to receive(:execute).once
+ expect_next_instance_of(Clusters::Kubernetes::CreateOrUpdateServiceAccountService) do |instance|
+ expect(instance).to receive(:execute).once
+ end
subject
end
diff --git a/spec/services/clusters/kubernetes/create_or_update_service_account_service_spec.rb b/spec/services/clusters/kubernetes/create_or_update_service_account_service_spec.rb
index 4df73fcc2ae..1ca3c50c46c 100644
--- a/spec/services/clusters/kubernetes/create_or_update_service_account_service_spec.rb
+++ b/spec/services/clusters/kubernetes/create_or_update_service_account_service_spec.rb
@@ -141,12 +141,15 @@ describe Clusters::Kubernetes::CreateOrUpdateServiceAccountService do
before do
cluster.platform_kubernetes.rbac!
+ stub_kubeclient_get_namespace(api_url, namespace: Clusters::Kubernetes::KNATIVE_SERVING_NAMESPACE)
stub_kubeclient_get_role_binding_error(api_url, role_binding_name, namespace: namespace)
stub_kubeclient_create_role_binding(api_url, namespace: namespace)
stub_kubeclient_put_role(api_url, Clusters::Kubernetes::GITLAB_KNATIVE_SERVING_ROLE_NAME, namespace: namespace)
stub_kubeclient_put_role_binding(api_url, Clusters::Kubernetes::GITLAB_KNATIVE_SERVING_ROLE_BINDING_NAME, namespace: namespace)
stub_kubeclient_put_role(api_url, Clusters::Kubernetes::GITLAB_CROSSPLANE_DATABASE_ROLE_NAME, namespace: namespace)
stub_kubeclient_put_role_binding(api_url, Clusters::Kubernetes::GITLAB_CROSSPLANE_DATABASE_ROLE_BINDING_NAME, namespace: namespace)
+ stub_kubeclient_put_cluster_role(api_url, Clusters::Kubernetes::GITLAB_KNATIVE_VERSION_ROLE_NAME)
+ stub_kubeclient_put_cluster_role_binding(api_url, Clusters::Kubernetes::GITLAB_KNATIVE_VERSION_ROLE_BINDING_NAME)
end
it_behaves_like 'creates service account and token'
@@ -234,6 +237,30 @@ describe Clusters::Kubernetes::CreateOrUpdateServiceAccountService do
)
)
end
+
+ it 'creates a role and role binding granting the ability to get the version of deployments in knative-serving namespace' do
+ subject
+
+ expect(WebMock).to have_requested(:put, api_url + "/apis/rbac.authorization.k8s.io/v1/clusterrolebindings/#{Clusters::Kubernetes::GITLAB_KNATIVE_VERSION_ROLE_BINDING_NAME}").with(
+ body: hash_including(
+ metadata: {
+ name: Clusters::Kubernetes::GITLAB_KNATIVE_VERSION_ROLE_BINDING_NAME
+ },
+ roleRef: {
+ apiGroup: "rbac.authorization.k8s.io",
+ kind: "ClusterRole",
+ name: Clusters::Kubernetes::GITLAB_KNATIVE_VERSION_ROLE_NAME
+ },
+ subjects: [
+ {
+ kind: "ServiceAccount",
+ name: service_account_name,
+ namespace: namespace
+ }
+ ]
+ )
+ )
+ end
end
end
end
diff --git a/spec/services/clusters/kubernetes/fetch_kubernetes_token_service_spec.rb b/spec/services/clusters/kubernetes/fetch_kubernetes_token_service_spec.rb
index 145528616ee..fa4b6e497e5 100644
--- a/spec/services/clusters/kubernetes/fetch_kubernetes_token_service_spec.rb
+++ b/spec/services/clusters/kubernetes/fetch_kubernetes_token_service_spec.rb
@@ -26,6 +26,7 @@ describe Clusters::Kubernetes::FetchKubernetesTokenService do
context 'when params correct' do
let(:decoded_token) { 'xxx.token.xxx' }
let(:token) { Base64.encode64(decoded_token) }
+
context 'when the secret exists' do
before do
stub_kubeclient_get_secret(
diff --git a/spec/services/clusters/kubernetes_spec.rb b/spec/services/clusters/kubernetes_spec.rb
new file mode 100644
index 00000000000..7f2c5e0461d
--- /dev/null
+++ b/spec/services/clusters/kubernetes_spec.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Clusters::Kubernetes do
+ it { is_expected.to be_const_defined(:GITLAB_SERVICE_ACCOUNT_NAME) }
+ it { is_expected.to be_const_defined(:GITLAB_SERVICE_ACCOUNT_NAMESPACE) }
+ it { is_expected.to be_const_defined(:GITLAB_ADMIN_TOKEN_NAME) }
+ it { is_expected.to be_const_defined(:GITLAB_CLUSTER_ROLE_BINDING_NAME) }
+ it { is_expected.to be_const_defined(:GITLAB_CLUSTER_ROLE_NAME) }
+ it { is_expected.to be_const_defined(:PROJECT_CLUSTER_ROLE_NAME) }
+ it { is_expected.to be_const_defined(:GITLAB_KNATIVE_SERVING_ROLE_NAME) }
+ it { is_expected.to be_const_defined(:GITLAB_KNATIVE_SERVING_ROLE_BINDING_NAME) }
+ it { is_expected.to be_const_defined(:GITLAB_CROSSPLANE_DATABASE_ROLE_NAME) }
+ it { is_expected.to be_const_defined(:GITLAB_CROSSPLANE_DATABASE_ROLE_BINDING_NAME) }
+ it { is_expected.to be_const_defined(:GITLAB_KNATIVE_VERSION_ROLE_NAME) }
+ it { is_expected.to be_const_defined(:GITLAB_KNATIVE_VERSION_ROLE_BINDING_NAME) }
+ it { is_expected.to be_const_defined(:KNATIVE_SERVING_NAMESPACE) }
+end
diff --git a/spec/services/cohorts_service_spec.rb b/spec/services/cohorts_service_spec.rb
index 2c012f080dd..38f441fbc4d 100644
--- a/spec/services/cohorts_service_spec.rb
+++ b/spec/services/cohorts_service_spec.rb
@@ -22,73 +22,73 @@ describe CohortsService do
expected_cohorts = [
{
registration_month: month_start(11),
- activity_months: Array.new(12) { { total: 0, percentage: 0 } },
+ activity_months: Array.new(11) { { total: 0, percentage: 0 } },
total: 0,
inactive: 0
},
{
registration_month: month_start(10),
- activity_months: [{ total: 2, percentage: 100 }] + Array.new(10) { { total: 1, percentage: 50 } },
+ activity_months: Array.new(10) { { total: 1, percentage: 50 } },
total: 2,
inactive: 0
},
{
registration_month: month_start(9),
- activity_months: Array.new(10) { { total: 0, percentage: 0 } },
+ activity_months: Array.new(9) { { total: 0, percentage: 0 } },
total: 0,
inactive: 0
},
{
registration_month: month_start(8),
- activity_months: [{ total: 2, percentage: 100 }] + Array.new(8) { { total: 1, percentage: 50 } },
+ activity_months: Array.new(8) { { total: 1, percentage: 50 } },
total: 2,
inactive: 0
},
{
registration_month: month_start(7),
- activity_months: Array.new(8) { { total: 0, percentage: 0 } },
+ activity_months: Array.new(7) { { total: 0, percentage: 0 } },
total: 0,
inactive: 0
},
{
registration_month: month_start(6),
- activity_months: [{ total: 2, percentage: 100 }] + Array.new(6) { { total: 1, percentage: 50 } },
+ activity_months: Array.new(6) { { total: 1, percentage: 50 } },
total: 2,
inactive: 0
},
{
registration_month: month_start(5),
- activity_months: Array.new(6) { { total: 0, percentage: 0 } },
+ activity_months: Array.new(5) { { total: 0, percentage: 0 } },
total: 0,
inactive: 0
},
{
registration_month: month_start(4),
- activity_months: [{ total: 2, percentage: 100 }] + Array.new(4) { { total: 1, percentage: 50 } },
+ activity_months: Array.new(4) { { total: 1, percentage: 50 } },
total: 2,
inactive: 0
},
{
registration_month: month_start(3),
- activity_months: Array.new(4) { { total: 0, percentage: 0 } },
+ activity_months: Array.new(3) { { total: 0, percentage: 0 } },
total: 0,
inactive: 0
},
{
registration_month: month_start(2),
- activity_months: [{ total: 2, percentage: 100 }] + Array.new(2) { { total: 1, percentage: 50 } },
+ activity_months: Array.new(2) { { total: 1, percentage: 50 } },
total: 2,
inactive: 0
},
{
registration_month: month_start(1),
- activity_months: Array.new(2) { { total: 0, percentage: 0 } },
+ activity_months: Array.new(1) { { total: 0, percentage: 0 } },
total: 0,
inactive: 0
},
{
registration_month: month_start(0),
- activity_months: [{ total: 2, percentage: 100 }],
+ activity_months: [],
total: 2,
inactive: 1
}
diff --git a/spec/services/compare_service_spec.rb b/spec/services/compare_service_spec.rb
index fadd43635a6..f6d8eb348d0 100644
--- a/spec/services/compare_service_spec.rb
+++ b/spec/services/compare_service_spec.rb
@@ -28,6 +28,7 @@ describe CompareService do
context 'compare with source branch that does not exist' do
let(:service) { described_class.new(project, 'non-existent-branch') }
+
subject { service.execute(project, 'non-existent-ref') }
it { expect(subject).to be_nil }
diff --git a/spec/services/deployments/after_create_service_spec.rb b/spec/services/deployments/after_create_service_spec.rb
index 94532ed81ae..4ca96658db0 100644
--- a/spec/services/deployments/after_create_service_spec.rb
+++ b/spec/services/deployments/after_create_service_spec.rb
@@ -115,6 +115,21 @@ describe Deployments::AfterCreateService do
expect(subject.environment.external_url).to eq('http://master.review-apps.gitlab.com')
end
end
+
+ context 'when auto_stop_in are used' do
+ let(:options) do
+ { name: 'production', auto_stop_in: '1 day' }
+ end
+
+ it 'renews auto stop at' do
+ Timecop.freeze do
+ environment.update!(auto_stop_at: nil)
+
+ expect { subject.execute }
+ .to change { environment.reset.auto_stop_at&.round }.from(nil).to(1.day.since.round)
+ end
+ end
+ end
end
describe '#expanded_environment_url' do
diff --git a/spec/services/deployments/create_service_spec.rb b/spec/services/deployments/create_service_spec.rb
index e41c8259ea9..6ab1f8635f7 100644
--- a/spec/services/deployments/create_service_spec.rb
+++ b/spec/services/deployments/create_service_spec.rb
@@ -3,67 +3,54 @@
require 'spec_helper'
describe Deployments::CreateService do
- let(:environment) do
- double(
- :environment,
- deployment_platform: double(:platform, cluster_id: 1),
- project_id: 2,
- id: 3
- )
- end
-
- let(:user) { double(:user) }
+ let(:user) { create(:user) }
describe '#execute' do
- let(:service) { described_class.new(environment, user, {}) }
-
- it 'does not run the AfterCreateService service if the deployment is not persisted' do
- deploy = double(:deployment, persisted?: false)
+ let(:project) { create(:project, :repository) }
+ let(:environment) { create(:environment, project: project) }
- expect(service)
- .to receive(:create_deployment)
- .and_return(deploy)
+ it 'creates a deployment' do
+ service = described_class.new(
+ environment,
+ user,
+ sha: 'b83d6e391c22777fca1ed3012fce84f633d7fed0',
+ ref: 'master',
+ tag: false,
+ status: 'success'
+ )
- expect(Deployments::AfterCreateService)
- .not_to receive(:new)
+ expect(Deployments::SuccessWorker).to receive(:perform_async)
+ expect(Deployments::FinishedWorker).to receive(:perform_async)
- expect(service.execute).to eq(deploy)
+ expect(service.execute).to be_persisted
end
- it 'runs the AfterCreateService service if the deployment is persisted' do
- deploy = double(:deployment, persisted?: true)
- after_service = double(:after_create_service)
-
- expect(service)
- .to receive(:create_deployment)
- .and_return(deploy)
-
- expect(Deployments::AfterCreateService)
- .to receive(:new)
- .with(deploy)
- .and_return(after_service)
+ it 'does not change the status if no status is given' do
+ service = described_class.new(
+ environment,
+ user,
+ sha: 'b83d6e391c22777fca1ed3012fce84f633d7fed0',
+ ref: 'master',
+ tag: false
+ )
- expect(after_service)
- .to receive(:execute)
+ expect(Deployments::SuccessWorker).not_to receive(:perform_async)
+ expect(Deployments::FinishedWorker).not_to receive(:perform_async)
- expect(service.execute).to eq(deploy)
+ expect(service.execute).to be_persisted
end
end
- describe '#create_deployment' do
- it 'creates a deployment' do
- environment = build(:environment)
- service = described_class.new(environment, user, {})
-
- expect(environment.deployments)
- .to receive(:create)
- .with(an_instance_of(Hash))
-
- service.create_deployment
+ describe '#deployment_attributes' do
+ let(:environment) do
+ double(
+ :environment,
+ deployment_platform: double(:platform, cluster_id: 1),
+ project_id: 2,
+ id: 3
+ )
end
- end
- describe '#deployment_attributes' do
it 'only includes attributes that we want to persist' do
service = described_class.new(
environment,
@@ -72,8 +59,7 @@ describe Deployments::CreateService do
tag: true,
sha: '123',
foo: 'bar',
- on_stop: 'stop',
- status: 'running'
+ on_stop: 'stop'
)
expect(service.deployment_attributes).to eq(
@@ -84,8 +70,7 @@ describe Deployments::CreateService do
tag: true,
sha: '123',
user: user,
- on_stop: 'stop',
- status: 'running'
+ on_stop: 'stop'
)
end
end
diff --git a/spec/services/deployments/update_service_spec.rb b/spec/services/deployments/update_service_spec.rb
index 8a918d28ffd..471e90de467 100644
--- a/spec/services/deployments/update_service_spec.rb
+++ b/spec/services/deployments/update_service_spec.rb
@@ -34,9 +34,9 @@ describe Deployments::UpdateService do
expect(deploy).to be_canceled
end
- it 'returns false when the status is not supported' do
- expect(described_class.new(deploy, status: 'kittens').execute)
- .to be_falsey
+ it 'raises ArgumentError if the status is invalid' do
+ expect { described_class.new(deploy, status: 'kittens').execute }
+ .to raise_error(ArgumentError)
end
it 'links merge requests when changing the status to success', :sidekiq_inline do
diff --git a/spec/services/discussions/resolve_service_spec.rb b/spec/services/discussions/resolve_service_spec.rb
index 5b99430cb75..2e9a7a293d1 100644
--- a/spec/services/discussions/resolve_service_spec.rb
+++ b/spec/services/discussions/resolve_service_spec.rb
@@ -29,7 +29,9 @@ describe Discussions::ResolveService do
end
it 'executes the notification service' do
- expect_any_instance_of(MergeRequests::ResolvedDiscussionNotificationService).to receive(:execute).with(discussion.noteable)
+ expect_next_instance_of(MergeRequests::ResolvedDiscussionNotificationService) do |instance|
+ expect(instance).to receive(:execute).with(discussion.noteable)
+ end
service.execute(discussion)
end
diff --git a/spec/services/environments/reset_auto_stop_service_spec.rb b/spec/services/environments/reset_auto_stop_service_spec.rb
new file mode 100644
index 00000000000..53a20dd906e
--- /dev/null
+++ b/spec/services/environments/reset_auto_stop_service_spec.rb
@@ -0,0 +1,54 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Environments::ResetAutoStopService do
+ let_it_be(:project) { create(:project) }
+ let_it_be(:developer) { create(:user).tap { |user| project.add_developer(user) } }
+ let_it_be(:reporter) { create(:user).tap { |user| project.add_reporter(user) } }
+ let(:user) { developer }
+ let(:service) { described_class.new(project, user) }
+
+ describe '#execute' do
+ subject { service.execute(environment) }
+
+ context 'when environment will be stopped automatically' do
+ let(:environment) { create(:environment, :will_auto_stop, project: project) }
+
+ it 'resets auto stop' do
+ expect(environment).to receive(:reset_auto_stop).and_call_original
+
+ expect(subject[:status]).to eq(:success)
+ end
+
+ context 'when failed to reset auto stop' do
+ before do
+ expect(environment).to receive(:reset_auto_stop) { false }
+ end
+
+ it 'returns error' do
+ expect(subject[:status]).to eq(:error)
+ expect(subject[:message]).to eq('Failed to cancel auto stop because failed to update the environment.')
+ end
+ end
+
+ context 'when user is reporter' do
+ let(:user) { reporter }
+
+ it 'returns error' do
+ expect(subject[:status]).to eq(:error)
+ expect(subject[:message]).to eq('Failed to cancel auto stop because you do not have permission to update the environment.')
+ end
+ end
+ end
+
+ context 'when environment will not be stopped automatically' do
+ let(:environment) { create(:environment, project: project) }
+
+ it 'returns error' do
+ expect(subject[:status]).to eq(:error)
+ expect(subject[:message]).to eq('Failed to cancel auto stop because the environment is not set as auto stop.')
+ end
+ end
+ end
+end
diff --git a/spec/services/error_tracking/list_issues_service_spec.rb b/spec/services/error_tracking/list_issues_service_spec.rb
index 5b73bc91478..e0e280591cd 100644
--- a/spec/services/error_tracking/list_issues_service_spec.rb
+++ b/spec/services/error_tracking/list_issues_service_spec.rb
@@ -5,6 +5,16 @@ require 'spec_helper'
describe ErrorTracking::ListIssuesService do
set(:user) { create(:user) }
set(:project) { create(:project) }
+ let(:params) { { search_term: 'something', sort: 'last_seen', cursor: 'some-cursor' } }
+ let(:list_sentry_issues_args) do
+ {
+ issue_status: 'unresolved',
+ limit: 20,
+ search_term: 'something',
+ sort: 'last_seen',
+ cursor: 'some-cursor'
+ }
+ end
let(:sentry_url) { 'https://sentrytest.gitlab.com/api/0/projects/sentry-org/sentry-project' }
let(:token) { 'test-token' }
@@ -14,7 +24,7 @@ describe ErrorTracking::ListIssuesService do
create(:project_error_tracking_setting, api_url: sentry_url, token: token, project: project)
end
- subject { described_class.new(project, user) }
+ subject { described_class.new(project, user, params) }
before do
expect(project).to receive(:error_tracking_setting).at_least(:once).and_return(error_tracking_setting)
@@ -29,11 +39,13 @@ describe ErrorTracking::ListIssuesService do
before do
expect(error_tracking_setting)
- .to receive(:list_sentry_issues).and_return(issues: issues)
+ .to receive(:list_sentry_issues)
+ .with(list_sentry_issues_args)
+ .and_return(issues: issues, pagination: {})
end
it 'returns the issues' do
- expect(result).to eq(status: :success, issues: issues)
+ expect(result).to eq(status: :success, pagination: {}, issues: issues)
end
end
diff --git a/spec/services/event_create_service_spec.rb b/spec/services/event_create_service_spec.rb
index eb738ac80b1..a8ddca0cdf3 100644
--- a/spec/services/event_create_service_spec.rb
+++ b/spec/services/event_create_service_spec.rb
@@ -131,9 +131,9 @@ describe EventCreateService do
end
it 'caches the last push event for the user' do
- expect_any_instance_of(Users::LastPushEventService)
- .to receive(:cache_last_push_event)
- .with(an_instance_of(PushEvent))
+ expect_next_instance_of(Users::LastPushEventService) do |instance|
+ expect(instance).to receive(:cache_last_push_event).with(an_instance_of(PushEvent))
+ end
subject
end
diff --git a/spec/services/git/base_hooks_service_spec.rb b/spec/services/git/base_hooks_service_spec.rb
index f3f6b36a18d..07ce560bd88 100644
--- a/spec/services/git/base_hooks_service_spec.rb
+++ b/spec/services/git/base_hooks_service_spec.rb
@@ -11,6 +11,7 @@ describe Git::BaseHooksService do
let(:oldrev) { Gitlab::Git::BLANK_SHA }
let(:newrev) { "8a2a6eb295bb170b34c24c76c49ed0e9b2eaf34b" } # gitlab-test: git rev-parse refs/tags/v1.1.0
let(:ref) { 'refs/tags/v1.1.0' }
+ let(:checkout_sha) { '5937ac0a7beb003549fc5fd26fc247adbce4a52e' }
let(:test_service) do
Class.new(described_class) do
@@ -131,4 +132,104 @@ describe Git::BaseHooksService do
end
end
end
+
+ describe 'Generating CI variables from push options' do
+ let(:pipeline_params) do
+ {
+ after: newrev,
+ before: oldrev,
+ checkout_sha: checkout_sha,
+ push_options: push_options, # defined in each context
+ ref: ref,
+ variables_attributes: variables_attributes # defined in each context
+ }
+ end
+
+ shared_examples 'creates pipeline with params and expected variables' do
+ it 'calls the create pipeline service' do
+ expect(Ci::CreatePipelineService)
+ .to receive(:new)
+ .with(project, user, pipeline_params)
+ .and_return(double(execute!: true))
+
+ subject.execute
+ end
+ end
+
+ context 'with empty push options' do
+ let(:push_options) { {} }
+ let(:variables_attributes) { [] }
+
+ it_behaves_like 'creates pipeline with params and expected variables'
+ end
+
+ context 'with push options not specifying variables' do
+ let(:push_options) do
+ {
+ mr: {
+ create: true
+ }
+ }
+ end
+ let(:variables_attributes) { [] }
+
+ before do
+ params[:push_options] = push_options
+ end
+
+ it_behaves_like 'creates pipeline with params and expected variables'
+ end
+
+ context 'with push options specifying variables' do
+ let(:push_options) do
+ {
+ ci: {
+ variable: {
+ "FOO=123": 1,
+ "BAR=456": 1,
+ "MNO=890=ABC": 1
+ }
+ }
+ }
+ end
+ let(:variables_attributes) do
+ [
+ { "key" => "FOO", "variable_type" => "env_var", "secret_value" => "123" },
+ { "key" => "BAR", "variable_type" => "env_var", "secret_value" => "456" },
+ { "key" => "MNO", "variable_type" => "env_var", "secret_value" => "890=ABC" }
+ ]
+ end
+
+ before do
+ params[:push_options] = push_options
+ end
+
+ it_behaves_like 'creates pipeline with params and expected variables'
+ end
+
+ context 'with push options not specifying variables in correct format' do
+ let(:push_options) do
+ {
+ ci: {
+ variable: {
+ "FOO=123": 1,
+ "BAR": 1,
+ "=MNO": 1
+ }
+ }
+ }
+ end
+ let(:variables_attributes) do
+ [
+ { "key" => "FOO", "variable_type" => "env_var", "secret_value" => "123" }
+ ]
+ end
+
+ before do
+ params[:push_options] = push_options
+ end
+
+ it_behaves_like 'creates pipeline with params and expected variables'
+ end
+ end
end
diff --git a/spec/services/git/branch_push_service_spec.rb b/spec/services/git/branch_push_service_spec.rb
index febd4992682..19d7b84a3ce 100644
--- a/spec/services/git/branch_push_service_spec.rb
+++ b/spec/services/git/branch_push_service_spec.rb
@@ -86,6 +86,7 @@ describe Git::BranchPushService, services: true do
after: newrev,
ref: ref,
checkout_sha: SeedRepo::Commit::ID,
+ variables_attributes: [],
push_options: {}
}).and_call_original
diff --git a/spec/services/groups/create_service_spec.rb b/spec/services/groups/create_service_spec.rb
index 0f9f20de586..5cde9a3ed45 100644
--- a/spec/services/groups/create_service_spec.rb
+++ b/spec/services/groups/create_service_spec.rb
@@ -60,7 +60,7 @@ describe Groups::CreateService, '#execute' do
it 'does not save group and returns an error' do
is_expected.not_to be_persisted
- expect(subject.errors[:parent_id].first).to eq('You don’t have permission to create a subgroup in this group.')
+ expect(subject.errors[:parent_id].first).to eq(s_('CreateGroup|You don’t have permission to create a subgroup in this group.'))
expect(subject.parent_id).to be_nil
end
end
diff --git a/spec/services/groups/destroy_service_spec.rb b/spec/services/groups/destroy_service_spec.rb
index 055d0243d4b..a45c7cdffa6 100644
--- a/spec/services/groups/destroy_service_spec.rb
+++ b/spec/services/groups/destroy_service_spec.rb
@@ -41,7 +41,9 @@ describe Groups::DestroyService do
let!(:chat_team) { create(:chat_team, namespace: group) }
it 'destroys the team too' do
- expect_any_instance_of(Mattermost::Team).to receive(:destroy)
+ expect_next_instance_of(Mattermost::Team) do |instance|
+ expect(instance).to receive(:destroy)
+ end
destroy_group(group, user, async)
end
diff --git a/spec/services/groups/transfer_service_spec.rb b/spec/services/groups/transfer_service_spec.rb
index 9a490dfd779..bbf5bbbf814 100644
--- a/spec/services/groups/transfer_service_spec.rb
+++ b/spec/services/groups/transfer_service_spec.rb
@@ -13,7 +13,9 @@ describe Groups::TransferService do
let(:new_parent_group) { create(:group, :public) }
before do
- allow_any_instance_of(described_class).to receive(:update_group_attributes).and_raise(Gitlab::UpdatePathError, 'namespace directory cannot be moved')
+ allow_next_instance_of(described_class) do |instance|
+ allow(instance).to receive(:update_group_attributes).and_raise(Gitlab::UpdatePathError, 'namespace directory cannot be moved')
+ end
create(:group_member, :owner, group: new_parent_group, user: user)
end
diff --git a/spec/services/issuable/bulk_update_service_spec.rb b/spec/services/issuable/bulk_update_service_spec.rb
index e3a728f2566..2b0b486308a 100644
--- a/spec/services/issuable/bulk_update_service_spec.rb
+++ b/spec/services/issuable/bulk_update_service_spec.rb
@@ -11,7 +11,7 @@ describe Issuable::BulkUpdateService do
.reverse_merge(issuable_ids: Array(issuables).map(&:id).join(','))
type = Array(issuables).first.model_name.param_key
- Issuable::BulkUpdateService.new(user, bulk_update_params).execute(type)
+ Issuable::BulkUpdateService.new(parent, user, bulk_update_params).execute(type)
end
shared_examples 'updates milestones' do
@@ -184,6 +184,8 @@ describe Issuable::BulkUpdateService do
end
context 'with issuables at a project level' do
+ let(:parent) { project }
+
describe 'close issues' do
let(:issues) { create_list(:issue, 2, project: project) }
@@ -200,33 +202,6 @@ describe Issuable::BulkUpdateService do
expect(project.issues.opened).to be_empty
expect(project.issues.closed).not_to be_empty
end
-
- context 'when issue for a different project is created' do
- let(:private_project) { create(:project, :private) }
- let(:issue) { create(:issue, project: private_project, author: user) }
-
- context 'when user has access to the project' do
- it 'closes all issues passed' do
- private_project.add_maintainer(user)
-
- bulk_update(issues + [issue], state_event: 'close')
-
- expect(project.issues.opened).to be_empty
- expect(project.issues.closed).not_to be_empty
- expect(private_project.issues.closed).not_to be_empty
- end
- end
-
- context 'when user does not have access to project' do
- it 'only closes all issues that the user has access to' do
- bulk_update(issues + [issue], state_event: 'close')
-
- expect(project.issues.opened).to be_empty
- expect(project.issues.closed).not_to be_empty
- expect(private_project.issues.closed).to be_empty
- end
- end
- end
end
describe 'reopen issues' do
@@ -362,10 +337,29 @@ describe Issuable::BulkUpdateService do
end
end
end
+
+ describe 'updating issues from external project' do
+ it 'updates only issues that belong to the parent project' do
+ issue1 = create(:issue, project: project)
+ issue2 = create(:issue, project: create(:project))
+ result = bulk_update([issue1, issue2], assignee_ids: [user.id])
+
+ expect(result[:success]).to be_truthy
+ expect(result[:count]).to eq(1)
+
+ expect(issue1.reload.assignees).to eq([user])
+ expect(issue2.reload.assignees).to be_empty
+ end
+ end
end
context 'with issuables at a group level' do
let(:group) { create(:group) }
+ let(:parent) { group }
+
+ before do
+ group.add_reporter(user)
+ end
describe 'updating milestones' do
let(:milestone) { create(:milestone, group: group) }
@@ -398,11 +392,24 @@ describe Issuable::BulkUpdateService do
let(:regression) { create(:group_label, group: group) }
let(:merge_requests) { create(:group_label, group: group) }
- before do
- group.add_reporter(user)
- end
-
it_behaves_like 'updating labels'
end
+
+ describe 'with issues from external group' do
+ it 'updates issues that belong to the parent group or descendants' do
+ issue1 = create(:issue, project: create(:project, group: group))
+ issue2 = create(:issue, project: create(:project, group: create(:group)))
+ issue3 = create(:issue, project: create(:project, group: create(:group, parent: group)))
+ milestone = create(:milestone, group: group)
+ result = bulk_update([issue1, issue2, issue3], milestone_id: milestone.id)
+
+ expect(result[:success]).to be_truthy
+ expect(result[:count]).to eq(2)
+
+ expect(issue1.reload.milestone).to eq(milestone)
+ expect(issue2.reload.milestone).to be_nil
+ expect(issue3.reload.milestone).to eq(milestone)
+ end
+ end
end
end
diff --git a/spec/services/issues/import_csv_service_spec.rb b/spec/services/issues/import_csv_service_spec.rb
index 516a1137319..e7370407d4c 100644
--- a/spec/services/issues/import_csv_service_spec.rb
+++ b/spec/services/issues/import_csv_service_spec.rb
@@ -18,7 +18,9 @@ describe Issues::ImportCsvService do
let(:file) { fixture_file_upload('spec/fixtures/banana_sample.gif') }
it 'returns invalid file error' do
- expect_any_instance_of(Notify).to receive(:import_issues_csv_email)
+ expect_next_instance_of(Notify) do |instance|
+ expect(instance).to receive(:import_issues_csv_email)
+ end
expect(subject[:success]).to eq(0)
expect(subject[:parse_error]).to eq(true)
@@ -29,7 +31,9 @@ describe Issues::ImportCsvService do
let(:file) { fixture_file_upload('spec/fixtures/csv_comma.csv') }
it 'imports CSV without errors' do
- expect_any_instance_of(Notify).to receive(:import_issues_csv_email)
+ expect_next_instance_of(Notify) do |instance|
+ expect(instance).to receive(:import_issues_csv_email)
+ end
expect(subject[:success]).to eq(3)
expect(subject[:error_lines]).to eq([])
@@ -41,7 +45,9 @@ describe Issues::ImportCsvService do
let(:file) { fixture_file_upload('spec/fixtures/csv_tab.csv') }
it 'imports CSV with some error rows' do
- expect_any_instance_of(Notify).to receive(:import_issues_csv_email)
+ expect_next_instance_of(Notify) do |instance|
+ expect(instance).to receive(:import_issues_csv_email)
+ end
expect(subject[:success]).to eq(2)
expect(subject[:error_lines]).to eq([3])
@@ -53,7 +59,9 @@ describe Issues::ImportCsvService do
let(:file) { fixture_file_upload('spec/fixtures/csv_semicolon.csv') }
it 'imports CSV with a blank row' do
- expect_any_instance_of(Notify).to receive(:import_issues_csv_email)
+ expect_next_instance_of(Notify) do |instance|
+ expect(instance).to receive(:import_issues_csv_email)
+ end
expect(subject[:success]).to eq(3)
expect(subject[:error_lines]).to eq([4])
diff --git a/spec/services/issues/move_service_spec.rb b/spec/services/issues/move_service_spec.rb
index 7483688d631..ee809aabac0 100644
--- a/spec/services/issues/move_service_spec.rb
+++ b/spec/services/issues/move_service_spec.rb
@@ -131,7 +131,9 @@ describe Issues::MoveService do
let!(:hook) { create(:project_hook, project: old_project, issues_events: true) }
it 'executes project issue hooks' do
- allow_any_instance_of(WebHookService).to receive(:execute)
+ allow_next_instance_of(WebHookService) do |instance|
+ allow(instance).to receive(:execute)
+ end
# Ideally, we'd test that `WebHookWorker.jobs.size` increased by 1,
# but since the entire spec run takes place in a transaction, we never
@@ -191,6 +193,7 @@ describe Issues::MoveService do
context 'issue is not persisted' do
include_context 'user can move issue'
let(:old_issue) { build(:issue, project: old_project, author: author) }
+
it { expect { move }.to raise_error(StandardError, /permissions/) }
end
end
diff --git a/spec/services/issues/update_service_spec.rb b/spec/services/issues/update_service_spec.rb
index 604befd7225..64bca770d5b 100644
--- a/spec/services/issues/update_service_spec.rb
+++ b/spec/services/issues/update_service_spec.rb
@@ -151,6 +151,7 @@ describe Issues::UpdateService, :mailer do
context 'when current user cannot admin issues in the project' do
let(:guest) { create(:user) }
+
before do
project.add_guest(guest)
end
@@ -689,8 +690,9 @@ describe Issues::UpdateService, :mailer do
context 'valid canonical_issue_id' do
it 'calls the duplicate service with both issues' do
- expect_any_instance_of(Issues::DuplicateService)
- .to receive(:execute).with(issue, canonical_issue)
+ expect_next_instance_of(Issues::DuplicateService) do |service|
+ expect(service).to receive(:execute).with(issue, canonical_issue)
+ end
update_issue(canonical_issue_id: canonical_issue.id)
end
diff --git a/spec/services/issues/zoom_link_service_spec.rb b/spec/services/issues/zoom_link_service_spec.rb
index ecca9467965..f34d2a18552 100644
--- a/spec/services/issues/zoom_link_service_spec.rb
+++ b/spec/services/issues/zoom_link_service_spec.rb
@@ -27,12 +27,18 @@ describe Issues::ZoomLinkService do
end
end
- shared_context 'insufficient permissions' do
+ shared_context 'insufficient issue update permissions' do
before do
project.add_guest(user)
end
end
+ shared_context 'insufficient issue create permissions' do
+ before do
+ expect(service).to receive(:can?).with(user, :create_issue, project).and_return(false)
+ end
+ end
+
describe '#add_link' do
shared_examples 'can add meeting' do
it 'appends the new meeting to zoom_meetings' do
@@ -69,16 +75,38 @@ describe Issues::ZoomLinkService do
subject(:result) { service.add_link(zoom_link) }
context 'without existing Zoom meeting' do
- include_examples 'can add meeting'
+ context 'when updating an issue' do
+ before do
+ allow(issue).to receive(:persisted?).and_return(true)
+ end
- context 'with invalid Zoom url' do
- let(:zoom_link) { 'https://not-zoom.link' }
+ include_examples 'can add meeting'
- include_examples 'cannot add meeting'
+ context 'with insufficient issue update permissions' do
+ include_context 'insufficient issue update permissions'
+ include_examples 'cannot add meeting'
+ end
end
- context 'with insufficient permissions' do
- include_context 'insufficient permissions'
+ context 'when creating an issue' do
+ before do
+ allow(issue).to receive(:persisted?).and_return(false)
+ end
+
+ it 'creates a new zoom meeting' do
+ expect(result).to be_success
+ expect(result.payload[:zoom_meetings][0].url).to eq(zoom_link)
+ end
+
+ context 'with insufficient issue create permissions' do
+ include_context 'insufficient issue create permissions'
+ include_examples 'cannot add meeting'
+ end
+ end
+
+ context 'with invalid Zoom url' do
+ let(:zoom_link) { 'https://not-zoom.link' }
+
include_examples 'cannot add meeting'
end
end
@@ -92,6 +120,7 @@ describe Issues::ZoomLinkService do
include_context '"added" Zoom meeting'
before do
allow(service).to receive(:can_add_link?).and_return(true)
+ allow(issue).to receive(:persisted?).and_return(true)
end
include_examples 'cannot add meeting'
@@ -104,8 +133,8 @@ describe Issues::ZoomLinkService do
context 'without "added" zoom meeting' do
it { is_expected.to eq(true) }
- context 'with insufficient permissions' do
- include_context 'insufficient permissions'
+ context 'with insufficient issue update permissions' do
+ include_context 'insufficient issue update permissions'
it { is_expected.to eq(false) }
end
@@ -156,12 +185,24 @@ describe Issues::ZoomLinkService do
context 'with Zoom meeting' do
include_context '"added" Zoom meeting'
- context 'removes the link' do
+ context 'with existing issue' do
+ before do
+ allow(issue).to receive(:persisted?).and_return(true)
+ end
+
include_examples 'can remove meeting'
end
- context 'with insufficient permissions' do
- include_context 'insufficient permissions'
+ context 'without existing issue' do
+ before do
+ allow(issue).to receive(:persisted?).and_return(false)
+ end
+
+ include_examples 'cannot remove meeting'
+ end
+
+ context 'with insufficient issue update permissions' do
+ include_context 'insufficient issue update permissions'
include_examples 'cannot remove meeting'
end
end
@@ -193,8 +234,8 @@ describe Issues::ZoomLinkService do
it { is_expected.to eq(true) }
end
- context 'with insufficient permissions' do
- include_context 'insufficient permissions'
+ context 'with insufficient issue update permissions' do
+ include_context 'insufficient issue update permissions'
it { is_expected.to eq(false) }
end
end
diff --git a/spec/services/lfs/lock_file_service_spec.rb b/spec/services/lfs/lock_file_service_spec.rb
index 15dbc3231a3..2bd62b96083 100644
--- a/spec/services/lfs/lock_file_service_spec.rb
+++ b/spec/services/lfs/lock_file_service_spec.rb
@@ -54,7 +54,9 @@ describe Lfs::LockFileService do
context 'when an error is raised' do
it "doesn't succeed" do
- allow_any_instance_of(described_class).to receive(:create_lock!).and_raise(StandardError)
+ allow_next_instance_of(described_class) do |instance|
+ allow(instance).to receive(:create_lock!).and_raise(StandardError)
+ end
expect(subject.execute[:status]).to eq(:error)
end
diff --git a/spec/services/lfs/locks_finder_service_spec.rb b/spec/services/lfs/locks_finder_service_spec.rb
index 0fc2c593d94..fdc60e2c03f 100644
--- a/spec/services/lfs/locks_finder_service_spec.rb
+++ b/spec/services/lfs/locks_finder_service_spec.rb
@@ -91,7 +91,9 @@ describe Lfs::LocksFinderService do
context 'when an error is raised' do
it "doesn't succeed" do
- allow_any_instance_of(described_class).to receive(:find_locks).and_raise(StandardError)
+ allow_next_instance_of(described_class) do |instance|
+ allow(instance).to receive(:find_locks).and_raise(StandardError)
+ end
result = subject.execute
diff --git a/spec/services/lfs/unlock_file_service_spec.rb b/spec/services/lfs/unlock_file_service_spec.rb
index 8e36617c0d6..1334b074e84 100644
--- a/spec/services/lfs/unlock_file_service_spec.rb
+++ b/spec/services/lfs/unlock_file_service_spec.rb
@@ -18,7 +18,7 @@ describe Lfs::UnlockFileService do
expect(result[:status]).to eq(:error)
expect(result[:http_status]).to eq(403)
- expect(result[:message]).to eq('You have no permissions')
+ expect(result[:message]).to eq(_('You have no permissions'))
end
end
@@ -29,6 +29,7 @@ describe Lfs::UnlockFileService do
context 'when lock does not exists' do
let(:params) { { id: 123 } }
+
it "doesn't succeed" do
result = subject.execute
@@ -82,7 +83,7 @@ describe Lfs::UnlockFileService do
result = subject.execute
expect(result[:status]).to eq(:error)
- expect(result[:message]).to match(/You must have maintainer access/)
+ expect(result[:message]).to eq(_('You must have maintainer access to force delete a lock'))
expect(result[:http_status]).to eq(403)
end
end
diff --git a/spec/services/merge_requests/create_pipeline_service_spec.rb b/spec/services/merge_requests/create_pipeline_service_spec.rb
index 576e8498e4d..25f5c54a413 100644
--- a/spec/services/merge_requests/create_pipeline_service_spec.rb
+++ b/spec/services/merge_requests/create_pipeline_service_spec.rb
@@ -62,13 +62,65 @@ describe MergeRequests::CreatePipelineService do
end
end
- context 'when .gitlab-ci.yml does not have only: [merge_requests] keyword' do
- let(:config) do
- { rspec: { script: 'echo' } }
+ context 'when .gitlab-ci.yml does not use workflow:rules' do
+ context 'without only: [merge_requests] keyword' do
+ let(:config) do
+ { rspec: { script: 'echo' } }
+ end
+
+ it 'does not create a pipeline' do
+ expect { subject }.not_to change { Ci::Pipeline.count }
+ end
+ end
+
+ context 'with rules that specify creation on a tag' do
+ let(:config) do
+ {
+ rspec: {
+ script: 'echo',
+ rules: [{ if: '$CI_COMMIT_TAG' }]
+ }
+ }
+ end
+
+ it 'does not create a pipeline' do
+ expect { subject }.not_to change { Ci::Pipeline.count }
+ end
+ end
+ end
+
+ context 'when workflow:rules are specified' do
+ context 'when rules request creation on merge request' do
+ let(:config) do
+ {
+ workflow: {
+ rules: [{ if: '$CI_MERGE_REQUEST_ID' }]
+ },
+ rspec: { script: 'echo' }
+ }
+ end
+
+ it 'creates a detached merge request pipeline' do
+ expect { subject }.to change { Ci::Pipeline.count }.by(1)
+
+ expect(subject).to be_persisted
+ expect(subject).to be_detached_merge_request_pipeline
+ end
end
- it 'does not create a pipeline' do
- expect { subject }.not_to change { Ci::Pipeline.count }
+ context 'with rules do specify creation on a tag' do
+ let(:config) do
+ {
+ workflow: {
+ rules: [{ if: '$CI_COMMIT_TAG' }]
+ },
+ rspec: { script: 'echo' }
+ }
+ end
+
+ it 'does not create a pipeline' do
+ expect { subject }.not_to change { Ci::Pipeline.count }
+ end
end
end
end
diff --git a/spec/services/merge_requests/get_urls_service_spec.rb b/spec/services/merge_requests/get_urls_service_spec.rb
index 9e7a5260ca4..dcb8c8080a1 100644
--- a/spec/services/merge_requests/get_urls_service_spec.rb
+++ b/spec/services/merge_requests/get_urls_service_spec.rb
@@ -47,6 +47,7 @@ describe MergeRequests::GetUrlsService do
context 'pushing to default branch' do
let(:changes) { default_branch_changes }
+
it_behaves_like 'no_merge_request_url'
end
@@ -62,28 +63,33 @@ describe MergeRequests::GetUrlsService do
context 'pushing one completely new branch' do
let(:changes) { new_branch_changes }
+
it_behaves_like 'new_merge_request_link'
end
context 'pushing to existing branch but no merge request' do
let(:changes) { existing_branch_changes }
+
it_behaves_like 'new_merge_request_link'
end
context 'pushing to deleted branch' do
let(:changes) { deleted_branch_changes }
+
it_behaves_like 'no_merge_request_url'
end
context 'pushing to existing branch and merge request opened' do
let!(:merge_request) { create(:merge_request, source_project: project, source_branch: source_branch) }
let(:changes) { existing_branch_changes }
+
it_behaves_like 'show_merge_request_url'
end
context 'pushing to existing branch and merge request is reopened' do
let!(:merge_request) { create(:merge_request, :opened, source_project: project, source_branch: source_branch) }
let(:changes) { existing_branch_changes }
+
it_behaves_like 'show_merge_request_url'
end
@@ -105,12 +111,14 @@ describe MergeRequests::GetUrlsService do
context 'pushing to existing branch and merge request is closed' do
let!(:merge_request) { create(:merge_request, :closed, source_project: project, source_branch: source_branch) }
let(:changes) { existing_branch_changes }
+
it_behaves_like 'new_merge_request_link'
end
context 'pushing to existing branch and merge request is merged' do
let!(:merge_request) { create(:merge_request, :merged, source_project: project, source_branch: source_branch) }
let(:changes) { existing_branch_changes }
+
it_behaves_like 'new_merge_request_link'
end
diff --git a/spec/services/merge_requests/merge_service_spec.rb b/spec/services/merge_requests/merge_service_spec.rb
index c938dd1cb0b..61c8103353c 100644
--- a/spec/services/merge_requests/merge_service_spec.rb
+++ b/spec/services/merge_requests/merge_service_spec.rb
@@ -104,14 +104,6 @@ describe MergeRequests::MergeService do
.to change { merge_request.merge_error }
.from(nil).to(merge_error)
end
-
- it 'merges the MR when the feature is disabled' do
- stub_feature_flags(validate_merge_sha: false)
-
- service.execute(merge_request)
-
- expect(merge_request).to be_merged
- end
end
context 'closes related issues' do
@@ -219,7 +211,8 @@ describe MergeRequests::MergeService do
end
it 'does not delete the source branch' do
- expect(DeleteBranchService).not_to receive(:new)
+ expect(::Branches::DeleteService).not_to receive(:new)
+
service.execute(merge_request)
end
end
@@ -234,7 +227,7 @@ describe MergeRequests::MergeService do
end
it 'does not delete the source branch' do
- expect(DeleteBranchService).not_to receive(:new)
+ expect(::Branches::DeleteService).not_to receive(:new)
service.execute(merge_request)
end
end
@@ -246,7 +239,7 @@ describe MergeRequests::MergeService do
end
it 'removes the source branch using the author user' do
- expect(DeleteBranchService).to receive(:new)
+ expect(::Branches::DeleteService).to receive(:new)
.with(merge_request.source_project, merge_request.author)
.and_call_original
service.execute(merge_request)
@@ -256,7 +249,7 @@ describe MergeRequests::MergeService do
let(:service) { described_class.new(project, user, merge_params.merge('should_remove_source_branch' => false)) }
it 'does not delete the source branch' do
- expect(DeleteBranchService).not_to receive(:new)
+ expect(::Branches::DeleteService).not_to receive(:new)
service.execute(merge_request)
end
end
@@ -268,7 +261,7 @@ describe MergeRequests::MergeService do
end
it 'removes the source branch using the current user' do
- expect(DeleteBranchService).to receive(:new)
+ expect(::Branches::DeleteService).to receive(:new)
.with(merge_request.source_project, user)
.and_call_original
service.execute(merge_request)
diff --git a/spec/services/merge_requests/merge_to_ref_service_spec.rb b/spec/services/merge_requests/merge_to_ref_service_spec.rb
index cccafddc450..77e38f1eb4c 100644
--- a/spec/services/merge_requests/merge_to_ref_service_spec.rb
+++ b/spec/services/merge_requests/merge_to_ref_service_spec.rb
@@ -61,7 +61,7 @@ describe MergeRequests::MergeToRefService do
end
it 'does not delete the source branch' do
- expect(DeleteBranchService).not_to receive(:new)
+ expect(::Branches::DeleteService).not_to receive(:new)
process_merge_to_ref
end
diff --git a/spec/services/merge_requests/refresh_service_spec.rb b/spec/services/merge_requests/refresh_service_spec.rb
index 9d0ad60a624..1ba216e8ff1 100644
--- a/spec/services/merge_requests/refresh_service_spec.rb
+++ b/spec/services/merge_requests/refresh_service_spec.rb
@@ -113,7 +113,7 @@ describe MergeRequests::RefreshService do
context 'when source branch ref does not exists' do
before do
- DeleteBranchService.new(@project, @user).execute(@merge_request.source_branch)
+ ::Branches::DeleteService.new(@project, @user).execute(@merge_request.source_branch)
end
it 'closes MRs without source branch ref' do
@@ -608,6 +608,7 @@ describe MergeRequests::RefreshService do
context 'marking the merge request as work in progress' do
let(:refresh_service) { service.new(@project, @user) }
+
before do
allow(refresh_service).to receive(:execute_hooks)
end
diff --git a/spec/services/merge_requests/reload_diffs_service_spec.rb b/spec/services/merge_requests/reload_diffs_service_spec.rb
index cc21348ab11..c450fc0a7dc 100644
--- a/spec/services/merge_requests/reload_diffs_service_spec.rb
+++ b/spec/services/merge_requests/reload_diffs_service_spec.rb
@@ -33,13 +33,34 @@ describe MergeRequests::ReloadDiffsService, :use_clean_rails_memory_store_cachin
end
context 'cache clearing' do
- it 'clears the cache for older diffs on the merge request' do
- old_diff = merge_request.merge_request_diff
- old_cache_key = old_diff.diffs_collection.cache_key
+ context 'using Gitlab::Diff::DeprecatedHighlightCache' do
+ before do
+ stub_feature_flags(hset_redis_diff_caching: false)
+ end
- expect(Rails.cache).to receive(:delete).with(old_cache_key).and_call_original
+ it 'clears the cache for older diffs on the merge request' do
+ old_diff = merge_request.merge_request_diff
+ old_cache_key = old_diff.diffs_collection.cache_key
- subject.execute
+ expect(Rails.cache).to receive(:delete).with(old_cache_key).and_call_original
+
+ subject.execute
+ end
+ end
+
+ context 'using Gitlab::Diff::HighlightCache' do
+ before do
+ stub_feature_flags(hset_redis_diff_caching: true)
+ end
+
+ it 'clears the cache for older diffs on the merge request' do
+ old_diff = merge_request.merge_request_diff
+ old_cache_key = old_diff.diffs_collection.cache_key
+
+ expect_any_instance_of(Redis).to receive(:del).with(old_cache_key).and_call_original
+
+ subject.execute
+ end
end
it 'avoids N+1 queries', :request_store do
diff --git a/spec/services/merge_requests/resolved_discussion_notification_service_spec.rb b/spec/services/merge_requests/resolved_discussion_notification_service_spec.rb
index dc2bd5bf3d0..29896db58ac 100644
--- a/spec/services/merge_requests/resolved_discussion_notification_service_spec.rb
+++ b/spec/services/merge_requests/resolved_discussion_notification_service_spec.rb
@@ -6,6 +6,7 @@ describe MergeRequests::ResolvedDiscussionNotificationService do
let(:merge_request) { create(:merge_request) }
let(:user) { create(:user) }
let(:project) { merge_request.project }
+
subject { described_class.new(project, user) }
describe "#execute" do
diff --git a/spec/services/metrics/dashboard/grafana_metric_embed_service_spec.rb b/spec/services/metrics/dashboard/grafana_metric_embed_service_spec.rb
index f200c636aac..a772b911d8a 100644
--- a/spec/services/metrics/dashboard/grafana_metric_embed_service_spec.rb
+++ b/spec/services/metrics/dashboard/grafana_metric_embed_service_spec.rb
@@ -175,3 +175,64 @@ describe Metrics::Dashboard::GrafanaMetricEmbedService do
end
end
end
+
+describe Metrics::Dashboard::GrafanaUidParser do
+ let_it_be(:grafana_integration) { create(:grafana_integration) }
+ let_it_be(:project) { grafana_integration.project }
+
+ subject { described_class.new(grafana_url, project).parse }
+
+ context 'with a Grafana-defined uid' do
+ let(:grafana_url) { grafana_integration.grafana_url + '/d/XDaNK6amz/?panelId=1' }
+
+ it { is_expected.to eq 'XDaNK6amz' }
+ end
+
+ context 'with a user-defined uid' do
+ let(:grafana_url) { grafana_integration.grafana_url + '/d/pgbouncer-main/pgbouncer-overview?panelId=1' }
+
+ it { is_expected.to eq 'pgbouncer-main' }
+ end
+
+ context 'when a uid is not present' do
+ let(:grafana_url) { grafana_integration.grafana_url }
+
+ it { is_expected.to be nil }
+ end
+
+ context 'when the url starts with unrelated content' do
+ let(:grafana_url) { 'js:' + grafana_integration.grafana_url }
+
+ it { is_expected.to be nil }
+ end
+end
+
+describe Metrics::Dashboard::DatasourceNameParser do
+ include GrafanaApiHelpers
+
+ let(:grafana_url) { valid_grafana_dashboard_link('https://gitlab.grafana.net') }
+ let(:grafana_dashboard) { JSON.parse(fixture_file('grafana/dashboard_response.json'), symbolize_names: true) }
+
+ subject { described_class.new(grafana_url, grafana_dashboard).parse }
+
+ it { is_expected.to eq 'GitLab Omnibus' }
+
+ context 'when the panelId is missing from the url' do
+ let(:grafana_url) { 'https:/gitlab.grafana.net/d/jbdbks/' }
+
+ it { is_expected.to be nil }
+ end
+
+ context 'when the panel is not present' do
+ # We're looking for panelId of 8, but only 6 is present
+ let(:grafana_dashboard) { { dashboard: { panels: [{ id: 6 }] } } }
+
+ it { is_expected.to be nil }
+ end
+
+ context 'when the dashboard panel does not have a datasource' do
+ let(:grafana_dashboard) { { dashboard: { panels: [{ id: 8 }] } } }
+
+ it { is_expected.to be nil }
+ end
+end
diff --git a/spec/services/metrics/dashboard/pod_dashboard_service_spec.rb b/spec/services/metrics/dashboard/pod_dashboard_service_spec.rb
new file mode 100644
index 00000000000..c3993bf71ea
--- /dev/null
+++ b/spec/services/metrics/dashboard/pod_dashboard_service_spec.rb
@@ -0,0 +1,24 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Metrics::Dashboard::PodDashboardService, :use_clean_rails_memory_store_caching do
+ include MetricsDashboardHelpers
+
+ let_it_be(:user) { create(:user) }
+ let_it_be(:project) { create(:project) }
+ let_it_be(:environment) { create(:environment, project: project) }
+
+ before do
+ project.add_maintainer(user)
+ end
+
+ describe 'get_dashboard' do
+ let(:dashboard_path) { described_class::DASHBOARD_PATH }
+ let(:service_params) { [project, user, { environment: environment, dashboard_path: dashboard_path }] }
+ let(:service_call) { described_class.new(*service_params).get_dashboard }
+
+ it_behaves_like 'valid dashboard service response'
+ it_behaves_like 'caches the unprocessed dashboard for subsequent calls'
+ end
+end
diff --git a/spec/services/metrics/dashboard/system_dashboard_service_spec.rb b/spec/services/metrics/dashboard/system_dashboard_service_spec.rb
index ec861465662..95c5a1479a4 100644
--- a/spec/services/metrics/dashboard/system_dashboard_service_spec.rb
+++ b/spec/services/metrics/dashboard/system_dashboard_service_spec.rb
@@ -14,24 +14,18 @@ describe Metrics::Dashboard::SystemDashboardService, :use_clean_rails_memory_sto
end
describe 'get_dashboard' do
- let(:dashboard_path) { described_class::SYSTEM_DASHBOARD_PATH }
+ let(:dashboard_path) { described_class::DASHBOARD_PATH }
let(:service_params) { [project, user, { environment: environment, dashboard_path: dashboard_path }] }
let(:service_call) { described_class.new(*service_params).get_dashboard }
it_behaves_like 'valid dashboard service response'
it_behaves_like 'raises error for users with insufficient permissions'
-
- it 'caches the unprocessed dashboard for subsequent calls' do
- expect(YAML).to receive(:safe_load).once.and_call_original
-
- described_class.new(*service_params).get_dashboard
- described_class.new(*service_params).get_dashboard
- end
+ it_behaves_like 'caches the unprocessed dashboard for subsequent calls'
context 'when called with a non-system dashboard' do
let(:dashboard_path) { 'garbage/dashboard/path' }
- # We want to alwaus return the system dashboard.
+ # We want to always return the system dashboard.
it_behaves_like 'valid dashboard service response'
end
end
@@ -42,8 +36,8 @@ describe Metrics::Dashboard::SystemDashboardService, :use_clean_rails_memory_sto
expect(all_dashboards).to eq(
[{
- path: described_class::SYSTEM_DASHBOARD_PATH,
- display_name: described_class::SYSTEM_DASHBOARD_NAME,
+ path: described_class::DASHBOARD_PATH,
+ display_name: described_class::DASHBOARD_NAME,
default: true,
system_dashboard: true
}]
diff --git a/spec/services/metrics/sample_metrics_service_spec.rb b/spec/services/metrics/sample_metrics_service_spec.rb
new file mode 100644
index 00000000000..8574674ebc4
--- /dev/null
+++ b/spec/services/metrics/sample_metrics_service_spec.rb
@@ -0,0 +1,42 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Metrics::SampleMetricsService do
+ describe 'query' do
+ subject { described_class.new(identifier).query }
+
+ context 'when the file is not found' do
+ let(:identifier) { nil }
+
+ it { is_expected.to be_nil }
+ end
+
+ context 'when the file is found' do
+ let(:identifier) { 'sample_metric_query_result' }
+ let(:source) { File.join(Rails.root, 'spec/fixtures/gitlab/sample_metrics', "#{identifier}.yml") }
+ let(:destination) { File.join(Rails.root, Metrics::SampleMetricsService::DIRECTORY, "#{identifier}.yml") }
+
+ around do |example|
+ FileUtils.mkdir_p(Metrics::SampleMetricsService::DIRECTORY)
+ FileUtils.cp(source, destination)
+
+ example.run
+ ensure
+ FileUtils.rm(destination)
+ end
+
+ subject { described_class.new(identifier).query }
+
+ it 'loads data from the sample file correctly' do
+ expect(subject).to eq(YAML.load_file(source))
+ end
+ end
+
+ context 'when the identifier is for a path outside of sample_metrics' do
+ let(:identifier) { '../config/secrets' }
+
+ it { is_expected.to be_nil }
+ end
+ end
+end
diff --git a/spec/services/notes/create_service_spec.rb b/spec/services/notes/create_service_spec.rb
index cd4ea9c401d..8fd03428eb2 100644
--- a/spec/services/notes/create_service_spec.rb
+++ b/spec/services/notes/create_service_spec.rb
@@ -87,10 +87,28 @@ describe Notes::CreateService do
.to receive(:unfolded_diff?) { true }
end
- it 'clears noteable diff cache when it was unfolded for the note position' do
- expect_any_instance_of(Gitlab::Diff::HighlightCache).to receive(:clear)
+ context 'using Gitlab::Diff::DeprecatedHighlightCache' do
+ before do
+ stub_feature_flags(hset_redis_diff_caching: false)
+ end
+
+ it 'clears noteable diff cache when it was unfolded for the note position' do
+ expect_any_instance_of(Gitlab::Diff::DeprecatedHighlightCache).to receive(:clear)
- described_class.new(project_with_repo, user, new_opts).execute
+ described_class.new(project_with_repo, user, new_opts).execute
+ end
+ end
+
+ context 'using Gitlab::Diff::HighlightCache' do
+ before do
+ stub_feature_flags(hset_redis_diff_caching: true)
+ end
+
+ it 'clears noteable diff cache when it was unfolded for the note position' do
+ expect_any_instance_of(Gitlab::Diff::HighlightCache).to receive(:clear)
+
+ described_class.new(project_with_repo, user, new_opts).execute
+ end
end
it 'does not clear cache when note is not the first of the discussion' do
@@ -364,6 +382,19 @@ describe Notes::CreateService do
end.to change { existing_note.type }.from(nil).to('DiscussionNote')
.and change { existing_note.updated_at }
end
+
+ context 'discussion to reply cannot be found' do
+ before do
+ existing_note.delete
+ end
+
+ it 'returns an note with errors' do
+ note = subject
+
+ expect(note.errors).not_to be_empty
+ expect(note.errors[:base]).to eq(['Discussion to reply to cannot be found'])
+ end
+ end
end
describe "usage counter" do
diff --git a/spec/services/notification_service_spec.rb b/spec/services/notification_service_spec.rb
index 25900043f11..b80f75c70e6 100644
--- a/spec/services/notification_service_spec.rb
+++ b/spec/services/notification_service_spec.rb
@@ -154,6 +154,7 @@ describe NotificationService, :mailer do
describe '#async' do
let(:async) { notification.async }
+
set(:key) { create(:personal_key) }
it 'returns an Async object with the correct parent' do
@@ -210,6 +211,18 @@ describe NotificationService, :mailer do
end
end
+ describe 'AccessToken' do
+ describe '#access_token_about_to_expire' do
+ let_it_be(:user) { create(:user) }
+
+ it 'sends email to the token owner' do
+ expect(notification.access_token_about_to_expire(user)).to be_truthy
+
+ should_email user
+ end
+ end
+ end
+
describe 'Notes' do
context 'issue note' do
let(:project) { create(:project, :private) }
diff --git a/spec/services/pages/delete_services_spec.rb b/spec/services/pages/delete_services_spec.rb
new file mode 100644
index 00000000000..c253f294e80
--- /dev/null
+++ b/spec/services/pages/delete_services_spec.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Pages::DeleteService do
+ let_it_be(:project) { create(:project, path: "my.project")}
+ let_it_be(:admin) { create(:admin) }
+ let_it_be(:domain) { create(:pages_domain, project: project) }
+ let_it_be(:service) { described_class.new(project, admin)}
+
+ it 'deletes published pages' do
+ expect_any_instance_of(Gitlab::PagesTransfer).to receive(:rename_project).and_return true
+ expect(PagesWorker).to receive(:perform_in).with(5.minutes, :remove, project.namespace.full_path, anything)
+
+ service.execute
+
+ expect(project.reload.pages_metadatum.deployed?).to be(false)
+ end
+
+ it 'deletes all domains' do
+ expect(project.pages_domains.count).to be 1
+
+ service.execute
+
+ expect(project.reload.pages_domains.count).to be 0
+ end
+end
diff --git a/spec/services/projects/container_repository/delete_tags_service_spec.rb b/spec/services/projects/container_repository/delete_tags_service_spec.rb
index 1cfe3582e56..7ceb02c9cf8 100644
--- a/spec/services/projects/container_repository/delete_tags_service_spec.rb
+++ b/spec/services/projects/container_repository/delete_tags_service_spec.rb
@@ -26,6 +26,7 @@ describe Projects::ContainerRepository::DeleteTagsService do
describe '#execute' do
let(:tags) { %w[A] }
+
subject { service.execute(repository) }
context 'without permissions' do
diff --git a/spec/services/projects/destroy_service_spec.rb b/spec/services/projects/destroy_service_spec.rb
index 642986bb176..d8ba042af35 100644
--- a/spec/services/projects/destroy_service_spec.rb
+++ b/spec/services/projects/destroy_service_spec.rb
@@ -296,9 +296,12 @@ describe Projects::DestroyService do
end
context 'as the root of a fork network' do
- let!(:fork_network) { create(:fork_network, root_project: project) }
+ let!(:fork_1) { fork_project(project, user) }
+ let!(:fork_2) { fork_project(project, user) }
it 'updates the fork network with the project name' do
+ fork_network = project.fork_network
+
destroy_project(project, user)
fork_network.reload
diff --git a/spec/services/projects/fork_service_spec.rb b/spec/services/projects/fork_service_spec.rb
index 5a3796fec3d..fc01c93b5cf 100644
--- a/spec/services/projects/fork_service_spec.rb
+++ b/spec/services/projects/fork_service_spec.rb
@@ -6,6 +6,16 @@ describe Projects::ForkService do
include ProjectForksHelper
include Gitlab::ShellAdapter
+ shared_examples 'forks count cache refresh' do
+ it 'flushes the forks count cache of the source project', :clean_gitlab_redis_cache do
+ expect(from_project.forks_count).to be_zero
+
+ fork_project(from_project, to_user)
+
+ expect(from_project.forks_count).to eq(1)
+ end
+ end
+
context 'when forking a new project' do
describe 'fork by user' do
before do
@@ -40,6 +50,11 @@ describe Projects::ForkService do
end
end
+ it_behaves_like 'forks count cache refresh' do
+ let(:from_project) { @from_project }
+ let(:to_user) { @to_user }
+ end
+
describe "successfully creates project in the user namespace" do
let(:to_project) { fork_project(@from_project, @to_user, namespace: @to_user.namespace) }
@@ -62,12 +77,9 @@ describe Projects::ForkService do
expect(@from_project.avatar.file).to be_exists
end
- it 'flushes the forks count cache of the source project' do
- expect(@from_project.forks_count).to be_zero
-
- fork_project(@from_project, @to_user)
-
- expect(@from_project.forks_count).to eq(1)
+ it_behaves_like 'forks count cache refresh' do
+ let(:from_project) { @from_project }
+ let(:to_user) { @to_user }
end
it 'creates a fork network with the new project and the root project set' do
@@ -102,6 +114,11 @@ describe Projects::ForkService do
it 'sets the forked_from_project on the membership' do
expect(to_project.fork_network_member.forked_from_project).to eq(from_forked_project)
end
+
+ it_behaves_like 'forks count cache refresh' do
+ let(:from_project) { from_forked_project }
+ let(:to_user) { @to_user }
+ end
end
end
diff --git a/spec/services/projects/forks_count_service_spec.rb b/spec/services/projects/forks_count_service_spec.rb
index 1b44782468a..21a75eafc7a 100644
--- a/spec/services/projects/forks_count_service_spec.rb
+++ b/spec/services/projects/forks_count_service_spec.rb
@@ -4,6 +4,7 @@ require 'spec_helper'
describe Projects::ForksCountService, :use_clean_rails_memory_store_caching do
let(:project) { build(:project) }
+
subject { described_class.new(project) }
it_behaves_like 'a counter caching service'
diff --git a/spec/services/projects/git_deduplication_service_spec.rb b/spec/services/projects/git_deduplication_service_spec.rb
index 3acbc46b473..9e6279da7de 100644
--- a/spec/services/projects/git_deduplication_service_spec.rb
+++ b/spec/services/projects/git_deduplication_service_spec.rb
@@ -58,6 +58,65 @@ describe Projects::GitDeduplicationService do
service.execute
end
+
+ context 'when visibility level of the project' do
+ before do
+ allow(pool.source_project).to receive(:repository_access_level).and_return(ProjectFeature::ENABLED)
+ end
+
+ context 'is private' do
+ it 'does not call fetch' do
+ allow(pool.source_project).to receive(:visibility_level).and_return(Gitlab::VisibilityLevel::PRIVATE)
+ expect(pool.object_pool).not_to receive(:fetch)
+
+ service.execute
+ end
+ end
+
+ context 'is public' do
+ it 'calls fetch' do
+ allow(pool.source_project).to receive(:visibility_level).and_return(Gitlab::VisibilityLevel::PUBLIC)
+ expect(pool.object_pool).to receive(:fetch)
+
+ service.execute
+ end
+ end
+
+ context 'is internal' do
+ it 'calls fetch' do
+ allow(pool.source_project).to receive(:visibility_level).and_return(Gitlab::VisibilityLevel::INTERNAL)
+ expect(pool.object_pool).to receive(:fetch)
+
+ service.execute
+ end
+ end
+ end
+
+ context 'when the repository access level' do
+ before do
+ allow(pool.source_project).to receive(:visibility_level).and_return(Gitlab::VisibilityLevel::PUBLIC)
+ end
+
+ context 'is private' do
+ it 'does not call fetch' do
+ allow(pool.source_project).to receive(:repository_access_level).and_return(ProjectFeature::PRIVATE)
+
+ expect(pool.object_pool).not_to receive(:fetch)
+
+ service.execute
+ end
+ end
+
+ context 'is greater than private' do
+ it 'calls fetch' do
+ allow(pool.source_project).to receive(:repository_access_level).and_return(ProjectFeature::PUBLIC)
+
+ expect(pool.object_pool).to receive(:fetch)
+
+ service.execute
+ end
+ end
+ end
end
it 'links the repository to the object pool' do
diff --git a/spec/services/projects/open_issues_count_service_spec.rb b/spec/services/projects/open_issues_count_service_spec.rb
index 593a4df1f8f..04f1353c499 100644
--- a/spec/services/projects/open_issues_count_service_spec.rb
+++ b/spec/services/projects/open_issues_count_service_spec.rb
@@ -4,6 +4,7 @@ require 'spec_helper'
describe Projects::OpenIssuesCountService, :use_clean_rails_memory_store_caching do
let(:project) { create(:project) }
+
subject { described_class.new(project) }
it_behaves_like 'a counter caching service'
diff --git a/spec/services/projects/unlink_fork_service_spec.rb b/spec/services/projects/unlink_fork_service_spec.rb
index a1175bf7123..a6bdc69cdca 100644
--- a/spec/services/projects/unlink_fork_service_spec.rb
+++ b/spec/services/projects/unlink_fork_service_spec.rb
@@ -2,13 +2,13 @@
require 'spec_helper'
-describe Projects::UnlinkForkService do
+describe Projects::UnlinkForkService, :use_clean_rails_memory_store_caching do
include ProjectForksHelper
subject { described_class.new(forked_project, user) }
let(:project) { create(:project, :public) }
- let(:forked_project) { fork_project(project, user) }
+ let!(:forked_project) { fork_project(project, user) }
let(:user) { create(:user) }
context 'with opened merge request on the source project' do
@@ -86,4 +86,169 @@ describe Projects::UnlinkForkService do
expect { subject.execute }.not_to raise_error
end
end
+
+ context 'when given project is a source of forks' do
+ let!(:forked_project_2) { fork_project(project, user) }
+ let!(:fork_of_fork) { fork_project(forked_project, user) }
+
+ subject { described_class.new(project, user) }
+
+ context 'with opened merge requests from fork back to root project' do
+ let!(:merge_request) { create(:merge_request, source_project: project, target_project: forked_project) }
+ let!(:merge_request2) { create(:merge_request, source_project: project, target_project: fork_project(project)) }
+ let!(:merge_request_in_fork) { create(:merge_request, source_project: forked_project, target_project: forked_project) }
+
+ let(:mr_close_service) { MergeRequests::CloseService.new(project, user) }
+
+ before do
+ allow(MergeRequests::CloseService).to receive(:new)
+ .with(project, user)
+ .and_return(mr_close_service)
+ end
+
+ it 'closes all pending merge requests' do
+ expect(mr_close_service).to receive(:execute).with(merge_request)
+ expect(mr_close_service).to receive(:execute).with(merge_request2)
+
+ subject.execute
+ end
+
+ it 'does not close merge requests that do not come from the project being unlinked' do
+ expect(mr_close_service).not_to receive(:execute).with(merge_request_in_fork)
+
+ subject.execute
+ end
+ end
+
+ it 'removes its link to the fork network and updates direct network members' do
+ expect(project.fork_network_member).to be_present
+ expect(project.fork_network).to be_present
+ expect(project.forked_to_members.count).to eq(2)
+ expect(forked_project.forked_to_members.count).to eq(1)
+ expect(fork_of_fork.forked_to_members.count).to eq(0)
+
+ subject.execute
+
+ project.reload
+ forked_project.reload
+ fork_of_fork.reload
+
+ expect(project.fork_network_member).to be_nil
+ expect(project.fork_network).to be_nil
+ expect(forked_project.fork_network).to have_attributes(root_project_id: nil,
+ deleted_root_project_name: project.full_name)
+ expect(project.forked_to_members.count).to eq(0)
+ expect(forked_project.forked_to_members.count).to eq(1)
+ expect(fork_of_fork.forked_to_members.count).to eq(0)
+ end
+
+ it 'refreshes the forks count cache of the given project' do
+ expect(project.forks_count).to eq(2)
+
+ subject.execute
+
+ expect(project.forks_count).to be_zero
+ end
+
+ context 'when given project is a fork of an unlinked parent' do
+ let!(:fork_of_fork) { fork_project(forked_project, user) }
+ let(:lfs_object) { create(:lfs_object) }
+
+ before do
+ lfs_object.projects << project
+ end
+
+ it 'saves lfs objects to the root project' do
+ # Remove parent from network
+ described_class.new(forked_project, user).execute
+
+ described_class.new(fork_of_fork, user).execute
+
+ expect(lfs_object.projects).to include(fork_of_fork)
+ end
+ end
+
+ context 'and is node with a parent' do
+ subject { described_class.new(forked_project, user) }
+
+ context 'with opened merge requests from and to given project' do
+ let!(:mr_from_parent) { create(:merge_request, source_project: project, target_project: forked_project) }
+ let!(:mr_to_parent) { create(:merge_request, source_project: forked_project, target_project: project) }
+ let!(:mr_to_child) { create(:merge_request, source_project: forked_project, target_project: fork_of_fork) }
+ let!(:mr_from_child) { create(:merge_request, source_project: fork_of_fork, target_project: forked_project) }
+ let!(:merge_request_in_fork) { create(:merge_request, source_project: forked_project, target_project: forked_project) }
+
+ let(:mr_close_service) { MergeRequests::CloseService.new(forked_project, user) }
+
+ before do
+ allow(MergeRequests::CloseService).to receive(:new)
+ .with(forked_project, user)
+ .and_return(mr_close_service)
+ end
+
+ it 'close all pending merge requests' do
+ merge_requests = [mr_from_parent, mr_to_parent, mr_from_child, mr_to_child]
+
+ merge_requests.each do |mr|
+ expect(mr_close_service).to receive(:execute).with(mr).and_call_original
+ end
+
+ subject.execute
+
+ merge_requests = MergeRequest.where(id: merge_requests)
+
+ expect(merge_requests).to all(have_attributes(state: 'closed'))
+ end
+
+ it 'does not close merge requests which do not come from the project being unlinked' do
+ expect(mr_close_service).not_to receive(:execute).with(merge_request_in_fork)
+
+ subject.execute
+ end
+ end
+
+ it 'refreshes the forks count cache of the parent and the given project' do
+ expect(project.forks_count).to eq(2)
+ expect(forked_project.forks_count).to eq(1)
+
+ subject.execute
+
+ expect(project.forks_count).to eq(1)
+ expect(forked_project.forks_count).to eq(0)
+ end
+
+ it 'removes its link to the fork network and updates direct network members' do
+ expect(project.fork_network).to be_present
+ expect(forked_project.fork_network).to be_present
+ expect(fork_of_fork.fork_network).to be_present
+
+ expect(project.forked_to_members.count).to eq(2)
+ expect(forked_project.forked_to_members.count).to eq(1)
+ expect(fork_of_fork.forked_to_members.count).to eq(0)
+
+ subject.execute
+ project.reload
+ forked_project.reload
+ fork_of_fork.reload
+
+ expect(project.fork_network).to be_present
+ expect(forked_project.fork_network).to be_nil
+ expect(fork_of_fork.fork_network).to be_present
+
+ expect(project.forked_to_members.count).to eq(1) # 1 child is gone
+ expect(forked_project.forked_to_members.count).to eq(0)
+ expect(fork_of_fork.forked_to_members.count).to eq(0)
+ end
+ end
+ end
+
+ context 'when given project is not part of a fork network' do
+ let!(:project_without_forks) { create(:project, :public) }
+
+ subject { described_class.new(project_without_forks, user) }
+
+ it 'does not raise errors' do
+ expect { subject.execute }.not_to raise_error
+ end
+ end
end
diff --git a/spec/services/projects/update_service_spec.rb b/spec/services/projects/update_service_spec.rb
index c848a5397e1..3092fb7116a 100644
--- a/spec/services/projects/update_service_spec.rb
+++ b/spec/services/projects/update_service_spec.rb
@@ -16,7 +16,14 @@ describe Projects::UpdateService do
let(:admin) { create(:admin) }
context 'when changing visibility level' do
- context 'when visibility_level is INTERNAL' do
+ def expect_to_call_unlink_fork_service
+ service = Projects::UnlinkForkService.new(project, user)
+
+ expect(Projects::UnlinkForkService).to receive(:new).with(project, user).and_return(service)
+ expect(service).to receive(:execute).and_call_original
+ end
+
+ context 'when visibility_level changes to INTERNAL' do
it 'updates the project to internal' do
expect(TodosDestroyer::ProjectPrivateWorker).not_to receive(:perform_in)
@@ -25,9 +32,21 @@ describe Projects::UpdateService do
expect(result).to eq({ status: :success })
expect(project).to be_internal
end
+
+ context 'and project is PUBLIC' do
+ before do
+ project.update!(visibility_level: Gitlab::VisibilityLevel::PUBLIC)
+ end
+
+ it 'unlinks project from fork network' do
+ expect_to_call_unlink_fork_service
+
+ update_project(project, user, visibility_level: Gitlab::VisibilityLevel::INTERNAL)
+ end
+ end
end
- context 'when visibility_level is PUBLIC' do
+ context 'when visibility_level changes to PUBLIC' do
it 'updates the project to public' do
expect(TodosDestroyer::ProjectPrivateWorker).not_to receive(:perform_in)
@@ -36,9 +55,17 @@ describe Projects::UpdateService do
expect(result).to eq({ status: :success })
expect(project).to be_public
end
+
+ context 'and project is PRIVATE' do
+ it 'does not unlink project from fork network' do
+ expect(Projects::UnlinkForkService).not_to receive(:new)
+
+ update_project(project, user, visibility_level: Gitlab::VisibilityLevel::PUBLIC)
+ end
+ end
end
- context 'when visibility_level is PRIVATE' do
+ context 'when visibility_level changes to PRIVATE' do
before do
project.update!(visibility_level: Gitlab::VisibilityLevel::PUBLIC)
end
@@ -52,6 +79,30 @@ describe Projects::UpdateService do
expect(result).to eq({ status: :success })
expect(project).to be_private
end
+
+ context 'and project is PUBLIC' do
+ before do
+ project.update!(visibility_level: Gitlab::VisibilityLevel::PUBLIC)
+ end
+
+ it 'unlinks project from fork network' do
+ expect_to_call_unlink_fork_service
+
+ update_project(project, user, visibility_level: Gitlab::VisibilityLevel::PRIVATE)
+ end
+ end
+
+ context 'and project is INTERNAL' do
+ before do
+ project.update!(visibility_level: Gitlab::VisibilityLevel::INTERNAL)
+ end
+
+ it 'unlinks project from fork network' do
+ expect_to_call_unlink_fork_service
+
+ update_project(project, user, visibility_level: Gitlab::VisibilityLevel::PRIVATE)
+ end
+ end
end
context 'when visibility levels are restricted to PUBLIC only' do
@@ -107,28 +158,48 @@ describe Projects::UpdateService do
let(:project) { create(:project, :internal) }
let(:forked_project) { fork_project(project) }
- it 'updates forks visibility level when parent set to more restrictive' do
- opts = { visibility_level: Gitlab::VisibilityLevel::PRIVATE }
+ context 'and unlink forks feature flag is off' do
+ before do
+ stub_feature_flags(unlink_fork_network_upon_visibility_decrease: false)
+ end
+
+ it 'updates forks visibility level when parent set to more restrictive' do
+ opts = { visibility_level: Gitlab::VisibilityLevel::PRIVATE }
+
+ expect(project).to be_internal
+ expect(forked_project).to be_internal
+
+ expect(update_project(project, admin, opts)).to eq({ status: :success })
+
+ expect(project).to be_private
+ expect(forked_project.reload).to be_private
+ end
+
+ it 'does not update forks visibility level when parent set to less restrictive' do
+ opts = { visibility_level: Gitlab::VisibilityLevel::PUBLIC }
- expect(project).to be_internal
- expect(forked_project).to be_internal
+ expect(project).to be_internal
+ expect(forked_project).to be_internal
- expect(update_project(project, admin, opts)).to eq({ status: :success })
+ expect(update_project(project, admin, opts)).to eq({ status: :success })
- expect(project).to be_private
- expect(forked_project.reload).to be_private
+ expect(project).to be_public
+ expect(forked_project.reload).to be_internal
+ end
end
- it 'does not update forks visibility level when parent set to less restrictive' do
- opts = { visibility_level: Gitlab::VisibilityLevel::PUBLIC }
+ context 'and unlink forks feature flag is on' do
+ it 'does not change visibility of forks' do
+ opts = { visibility_level: Gitlab::VisibilityLevel::PRIVATE }
- expect(project).to be_internal
- expect(forked_project).to be_internal
+ expect(project).to be_internal
+ expect(forked_project).to be_internal
- expect(update_project(project, admin, opts)).to eq({ status: :success })
+ expect(update_project(project, admin, opts)).to eq({ status: :success })
- expect(project).to be_public
- expect(forked_project.reload).to be_internal
+ expect(project).to be_private
+ expect(forked_project.reload).to be_internal
+ end
end
end
diff --git a/spec/services/prometheus/adapter_service_spec.rb b/spec/services/prometheus/adapter_service_spec.rb
index 5e972a966eb..52e035e1f70 100644
--- a/spec/services/prometheus/adapter_service_spec.rb
+++ b/spec/services/prometheus/adapter_service_spec.rb
@@ -4,6 +4,7 @@ require 'spec_helper'
describe Prometheus::AdapterService do
let(:project) { create(:project) }
+
subject { described_class.new(project) }
describe '#prometheus_adapter' do
diff --git a/spec/services/prometheus/proxy_variable_substitution_service_spec.rb b/spec/services/prometheus/proxy_variable_substitution_service_spec.rb
new file mode 100644
index 00000000000..b1cdb8fd3ae
--- /dev/null
+++ b/spec/services/prometheus/proxy_variable_substitution_service_spec.rb
@@ -0,0 +1,143 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Prometheus::ProxyVariableSubstitutionService do
+ describe '#execute' do
+ let_it_be(:environment) { create(:environment) }
+
+ let(:params_keys) { { query: 'up{environment="%{ci_environment_slug}"}' } }
+ let(:params) { ActionController::Parameters.new(params_keys).permit! }
+ let(:result) { subject.execute }
+
+ subject { described_class.new(environment, params) }
+
+ shared_examples 'success' do
+ it 'replaces variables with values' do
+ expect(result[:status]).to eq(:success)
+ expect(result[:params][:query]).to eq(expected_query)
+ end
+ end
+
+ shared_examples 'error' do |message|
+ it 'returns error' do
+ expect(result[:status]).to eq(:error)
+ expect(result[:message]).to eq(message)
+ end
+ end
+
+ context 'does not alter params passed to the service' do
+ it do
+ subject.execute
+
+ expect(params).to eq(
+ ActionController::Parameters.new(
+ query: 'up{environment="%{ci_environment_slug}"}'
+ ).permit!
+ )
+ end
+ end
+
+ context 'with predefined variables' do
+ it_behaves_like 'success' do
+ let(:expected_query) { %Q[up{environment="#{environment.slug}"}] }
+ end
+
+ context 'with nil query' do
+ let(:params_keys) { {} }
+
+ it_behaves_like 'success' do
+ let(:expected_query) { nil }
+ end
+ end
+ end
+
+ context 'ruby template rendering' do
+ let(:params_keys) do
+ { query: 'up{env=%{ci_environment_slug},%{environment_filter}}' }
+ end
+
+ it_behaves_like 'success' do
+ let(:expected_query) do
+ "up{env=#{environment.slug},container_name!=\"POD\"," \
+ "environment=\"#{environment.slug}\"}"
+ end
+ end
+
+ context 'with multiple occurrences of variable in string' do
+ let(:params_keys) do
+ { query: 'up{env1=%{ci_environment_slug},env2=%{ci_environment_slug}}' }
+ end
+
+ it_behaves_like 'success' do
+ let(:expected_query) { "up{env1=#{environment.slug},env2=#{environment.slug}}" }
+ end
+ end
+
+ context 'with multiple variables in string' do
+ let(:params_keys) do
+ { query: 'up{env=%{ci_environment_slug},%{environment_filter}}' }
+ end
+
+ it_behaves_like 'success' do
+ let(:expected_query) do
+ "up{env=#{environment.slug}," \
+ "container_name!=\"POD\",environment=\"#{environment.slug}\"}"
+ end
+ end
+ end
+
+ context 'with unknown variables in string' do
+ let(:params_keys) { { query: 'up{env=%{env_slug}}' } }
+
+ it_behaves_like 'success' do
+ let(:expected_query) { 'up{env=%{env_slug}}' }
+ end
+ end
+
+ # This spec is needed if there are multiple keys in the context provided
+ # by `Gitlab::Prometheus::QueryVariables.call(environment)` which is
+ # passed to the Ruby `%` operator.
+ # If the number of keys in the context is one, there is no need for
+ # this spec.
+ context 'with extra variables in context' do
+ let(:params_keys) { { query: 'up{env=%{ci_environment_slug}}' } }
+
+ it_behaves_like 'success' do
+ let(:expected_query) { "up{env=#{environment.slug}}" }
+ end
+
+ it 'has more than one variable in context' do
+ expect(Gitlab::Prometheus::QueryVariables.call(environment).size).to be > 1
+ end
+ end
+
+ # The ruby % operator will not replace known variables if there are unknown
+ # variables also in the string. It doesn't raise an error
+ # (though the `sprintf` and `format` methods do).
+ context 'with unknown and known variables in string' do
+ let(:params_keys) do
+ { query: 'up{env=%{ci_environment_slug},other_env=%{env_slug}}' }
+ end
+
+ it_behaves_like 'success' do
+ let(:expected_query) { 'up{env=%{ci_environment_slug},other_env=%{env_slug}}' }
+ end
+ end
+
+ context 'when rendering raises error' do
+ context 'when TypeError is raised' do
+ let(:params_keys) { { query: '{% a %}' } }
+
+ it_behaves_like 'error', 'Malformed string'
+ end
+
+ context 'when ArgumentError is raised' do
+ let(:params_keys) { { query: '%<' } }
+
+ it_behaves_like 'error', 'Malformed string'
+ end
+ end
+ end
+ end
+end
diff --git a/spec/services/quick_actions/interpret_service_spec.rb b/spec/services/quick_actions/interpret_service_spec.rb
index 788f83cc233..b105e1e40ce 100644
--- a/spec/services/quick_actions/interpret_service_spec.rb
+++ b/spec/services/quick_actions/interpret_service_spec.rb
@@ -570,7 +570,7 @@ describe QuickActions::InterpretService do
it 'returns move issue failure message when the referenced issue is not found' do
_, _, message = service.execute('/move invalid', issue)
- expect(message).to eq("Failed to move this issue because target project doesn't exist.")
+ expect(message).to eq(_("Failed to move this issue because target project doesn't exist."))
end
end
@@ -1125,7 +1125,7 @@ describe QuickActions::InterpretService do
_, _, message = service.execute('/due invalid date', issue)
- expect(message).to eq('Failed to set due date because the date format is invalid.')
+ expect(message).to eq(_('Failed to set due date because the date format is invalid.'))
end
it_behaves_like 'due command' do
@@ -1251,12 +1251,12 @@ describe QuickActions::InterpretService do
let(:issuable) { issue }
end
- it_behaves_like 'empty command', 'Failed to mark this issue as a duplicate because referenced issue was not found.' do
+ it_behaves_like 'empty command', _('Failed to mark this issue as a duplicate because referenced issue was not found.') do
let(:content) { "/duplicate imaginary#1234" }
let(:issuable) { issue }
end
- it_behaves_like 'empty command', 'Failed to mark this issue as a duplicate because referenced issue was not found.' do
+ it_behaves_like 'empty command', _('Failed to mark this issue as a duplicate because referenced issue was not found.') do
let(:other_project) { create(:project, :private) }
let(:issue_duplicate) { create(:issue, project: other_project) }
@@ -1321,7 +1321,7 @@ describe QuickActions::InterpretService do
let(:issuable) { issue }
end
- it_behaves_like 'empty command', 'Failed to mark this issue as a duplicate because referenced issue was not found.' do
+ it_behaves_like 'empty command', _('Failed to mark this issue as a duplicate because referenced issue was not found.') do
let(:content) { '/duplicate #{issue.to_reference}' }
let(:issuable) { issue }
end
@@ -1370,6 +1370,7 @@ describe QuickActions::InterpretService do
context 'if issuable is a Commit' do
let(:content) { '/award :100:' }
let(:issuable) { commit }
+
it_behaves_like 'empty command'
end
end
@@ -1497,23 +1498,27 @@ describe QuickActions::InterpretService do
context 'if the given label does not exist' do
let(:issuable) { issue }
let(:content) { '/board_move ~"Fake Label"' }
+
it_behaves_like 'empty command', 'Failed to move this issue because label was not found.'
end
context 'if multiple labels are given' do
let(:issuable) { issue }
let(:content) { %{/board_move ~"#{inreview.title}" ~"#{todo.title}"} }
+
it_behaves_like 'empty command', 'Failed to move this issue because only a single label can be provided.'
end
context 'if the given label is not a list on the board' do
let(:issuable) { issue }
let(:content) { %{/board_move ~"#{bug.title}"} }
+
it_behaves_like 'empty command', 'Failed to move this issue because label was not found.'
end
context 'if issuable is not an Issue' do
let(:issuable) { merge_request }
+
it_behaves_like 'empty command'
end
end
@@ -1695,7 +1700,7 @@ describe QuickActions::InterpretService do
merge_request.update!(label_ids: [bug.id])
_, explanations = service.explain(content, merge_request)
- expect(explanations).to eq(['Removes all labels.'])
+ expect(explanations).to eq([_('Removes all labels.')])
end
end
@@ -1856,13 +1861,13 @@ describe QuickActions::InterpretService do
it 'uses the default branch name' do
_, explanations = service.explain(content, issue)
- expect(explanations).to eq(['Creates a branch and a merge request to resolve this issue.'])
+ expect(explanations).to eq([_('Creates a branch and a merge request to resolve this issue.')])
end
it 'returns the execution message using the default branch name' do
_, _, message = service.execute(content, issue)
- expect(message).to eq('Created a branch and a merge request to resolve this issue.')
+ expect(message).to eq(_('Created a branch and a merge request to resolve this issue.'))
end
end
diff --git a/spec/services/search/group_service_spec.rb b/spec/services/search/group_service_spec.rb
index aac2f3fe4cb..cfb672753b8 100644
--- a/spec/services/search/group_service_spec.rb
+++ b/spec/services/search/group_service_spec.rb
@@ -20,6 +20,7 @@ describe Search::GroupService do
let!(:project3) { create(:project, :internal, namespace: nested_group.parent, name: "Outer #{term}") }
let(:results) { described_class.new(user, search_group, search: term).execute }
+
subject { results.objects('projects') }
context 'in parent group' do
diff --git a/spec/services/submit_usage_ping_service_spec.rb b/spec/services/submit_usage_ping_service_spec.rb
index 653f17a4324..719b374553c 100644
--- a/spec/services/submit_usage_ping_service_spec.rb
+++ b/spec/services/submit_usage_ping_service_spec.rb
@@ -42,16 +42,16 @@ describe SubmitUsagePingService do
subject.execute
end
- it 'saves conversational development index data from the response' do
+ it 'saves DevOps Score data from the response' do
stub_response(with_conv_index_params)
expect { subject.execute }
- .to change { ConversationalDevelopmentIndex::Metric.count }
+ .to change { DevOpsScore::Metric.count }
.by(1)
- expect(ConversationalDevelopmentIndex::Metric.last.leader_issues).to eq 10.2
- expect(ConversationalDevelopmentIndex::Metric.last.instance_issues).to eq 3.2
- expect(ConversationalDevelopmentIndex::Metric.last.percentage_issues).to eq 31.37
+ expect(DevOpsScore::Metric.last.leader_issues).to eq 10.2
+ expect(DevOpsScore::Metric.last.instance_issues).to eq 3.2
+ expect(DevOpsScore::Metric.last.percentage_issues).to eq 31.37
end
end
diff --git a/spec/services/system_note_service_spec.rb b/spec/services/system_note_service_spec.rb
index e2ed7581ad4..a952e26e338 100644
--- a/spec/services/system_note_service_spec.rb
+++ b/spec/services/system_note_service_spec.rb
@@ -348,7 +348,7 @@ describe SystemNoteService do
it "blocks cross reference when #{type.underscore}_events is false" do
jira_tracker.update("#{type}_events" => false)
- expect(cross_reference(type)).to eq("Events for #{type.pluralize.humanize.downcase} are disabled.")
+ expect(cross_reference(type)).to eq(s_('JiraService|Events for %{noteable_model_name} are disabled.') % { noteable_model_name: type.pluralize.humanize.downcase })
end
it "creates cross reference when #{type.underscore}_events is true" do
@@ -467,7 +467,9 @@ describe SystemNoteService do
before do
allow(JIRA::Resource::Remotelink).to receive(:all).and_return([])
message = "[#{author.name}|http://localhost/#{author.username}] mentioned this issue in [a commit of #{project.full_path}|http://localhost/#{project.full_path}/commit/#{commit.id}]:\n'#{commit.title.chomp}'"
- allow_any_instance_of(JIRA::Resource::Issue).to receive(:comments).and_return([OpenStruct.new(body: message)])
+ allow_next_instance_of(JIRA::Resource::Issue) do |instance|
+ allow(instance).to receive(:comments).and_return([OpenStruct.new(body: message)])
+ end
end
it "does not return success message" do
diff --git a/spec/services/system_notes/issuables_service_spec.rb b/spec/services/system_notes/issuables_service_spec.rb
index ba484d95c9c..c2f627c681b 100644
--- a/spec/services/system_notes/issuables_service_spec.rb
+++ b/spec/services/system_notes/issuables_service_spec.rb
@@ -618,6 +618,7 @@ describe ::SystemNotes::IssuablesService do
context 'when notable is an ExternalIssue' do
let(:noteable) { ExternalIssue.new('EXT-1234', project) }
+
it 'is truthy' do
mentioner = noteable.dup
expect(service.cross_reference_disallowed?(mentioner))
diff --git a/spec/services/todo_service_spec.rb b/spec/services/todo_service_spec.rb
index bdf2f59704c..9b92590cb63 100644
--- a/spec/services/todo_service_spec.rb
+++ b/spec/services/todo_service_spec.rb
@@ -441,6 +441,7 @@ describe TodoService do
context 'leaving a note on a commit in a public project' do
let(:project) { create(:project, :repository, :public) }
+
it 'creates a todo for each valid mentioned user' do
expected_todo = base_commit_todo_attrs.merge(
action: Todo::MENTIONED,
@@ -1015,6 +1016,45 @@ describe TodoService do
end
end
+ describe '#mark_todo_as_done' do
+ it 'marks a todo done' do
+ todo1 = create(:todo, :pending, user: john_doe)
+
+ described_class.new.mark_todo_as_done(todo1, john_doe)
+
+ expect(todo1.reload.state).to eq('done')
+ end
+
+ context 'when todo is already in state done' do
+ let(:todo1) { create(:todo, :done, user: john_doe) }
+
+ it 'does not update the todo' do
+ expect { described_class.new.mark_todo_as_done(todo1, john_doe) }.not_to change(todo1.reload, :state)
+ end
+
+ it 'does not update cache count' do
+ expect(john_doe).not_to receive(:update_todos_count_cache)
+
+ described_class.new.mark_todo_as_done(todo1, john_doe)
+ end
+ end
+ end
+
+ describe '#mark_all_todos_as_done_by_user' do
+ it 'marks all todos done' do
+ todo1 = create(:todo, user: john_doe, state: :pending)
+ todo2 = create(:todo, user: john_doe, state: :done)
+ todo3 = create(:todo, user: john_doe, state: :pending)
+
+ ids = described_class.new.mark_all_todos_as_done_by_user(john_doe)
+
+ expect(ids).to contain_exactly(todo1.id, todo3.id)
+ expect(todo1.reload.state).to eq('done')
+ expect(todo2.reload.state).to eq('done')
+ expect(todo3.reload.state).to eq('done')
+ end
+ end
+
describe '#mark_todos_as_done_by_ids' do
let(:issue) { create(:issue, project: project, author: author, assignees: [john_doe]) }
let(:another_issue) { create(:issue, project: project, author: author, assignees: [john_doe]) }
diff --git a/spec/services/users/keys_count_service_spec.rb b/spec/services/users/keys_count_service_spec.rb
index 6b7493f343f..83af051e728 100644
--- a/spec/services/users/keys_count_service_spec.rb
+++ b/spec/services/users/keys_count_service_spec.rb
@@ -4,6 +4,7 @@ require 'spec_helper'
describe Users::KeysCountService, :use_clean_rails_memory_store_caching do
let(:user) { create(:user) }
+
subject { described_class.new(user) }
it_behaves_like 'a counter caching service'
diff --git a/spec/services/repair_ldap_blocked_user_service_spec.rb b/spec/services/users/repair_ldap_blocked_service_spec.rb
index 9918bb8e054..bf80cc79d62 100644
--- a/spec/services/repair_ldap_blocked_user_service_spec.rb
+++ b/spec/services/users/repair_ldap_blocked_service_spec.rb
@@ -2,9 +2,10 @@
require 'spec_helper'
-describe RepairLdapBlockedUserService do
+describe Users::RepairLdapBlockedService do
let(:user) { create(:omniauth_user, provider: 'ldapmain', state: 'ldap_blocked') }
let(:identity) { user.ldap_identity }
+
subject(:service) { described_class.new(user) }
describe '#execute' do
diff --git a/spec/services/users/set_status_service_spec.rb b/spec/services/users/set_status_service_spec.rb
index 7c26be48345..554f5e9dc5e 100644
--- a/spec/services/users/set_status_service_spec.rb
+++ b/spec/services/users/set_status_service_spec.rb
@@ -4,6 +4,7 @@ require 'spec_helper'
describe Users::SetStatusService do
let(:current_user) { create(:user) }
+
subject(:service) { described_class.new(current_user, params) }
describe '#execute' do
diff --git a/spec/services/web_hook_service_spec.rb b/spec/services/web_hook_service_spec.rb
index 2a4368868d5..d8f13bc2e61 100644
--- a/spec/services/web_hook_service_spec.rb
+++ b/spec/services/web_hook_service_spec.rb
@@ -203,17 +203,6 @@ describe WebHookService do
expect(hook_log.internal_error_message).to be_nil
end
end
-
- context 'should not log ServiceHooks' do
- let(:service_hook) { create(:service_hook) }
- let(:service_instance) { described_class.new(service_hook, data, 'service_hook') }
-
- before do
- stub_full_request(service_hook.url, method: :post).to_return(status: 200, body: 'Success')
- end
-
- it { expect { service_instance.execute }.not_to change(WebHookLog, :count) }
- end
end
end
diff --git a/spec/services/wikis/create_attachment_service_spec.rb b/spec/services/wikis/create_attachment_service_spec.rb
index f5899f292c8..7a73a0a555f 100644
--- a/spec/services/wikis/create_attachment_service_spec.rb
+++ b/spec/services/wikis/create_attachment_service_spec.rb
@@ -174,6 +174,7 @@ describe Wikis::CreateAttachmentService do
describe '#execute' do
let(:wiki) { project.wiki }
+
subject(:service_execute) { service.execute[:result] }
context 'creates branch if it does not exists' do
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index d7533f99683..1f0119108a8 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -18,7 +18,6 @@ rspec_profiling_is_configured =
ENV['RSPEC_PROFILING_POSTGRES_URL'].present? ||
ENV['RSPEC_PROFILING']
branch_can_be_profiled =
- ENV['GITLAB_DATABASE'] == 'postgresql' &&
(ENV['CI_COMMIT_REF_NAME'] == 'master' ||
ENV['CI_COMMIT_REF_NAME'] =~ /rspec-profile/)
@@ -160,6 +159,9 @@ RSpec.configure do |config|
.with(:force_autodevops_on_by_default, anything)
.and_return(false)
+ # Enable Marginalia feature for all specs in the test suite.
+ allow(Gitlab::Marginalia).to receive(:cached_feature_enabled?).and_return(true)
+
# The following can be removed once Vue Issuable Sidebar
# is feature-complete and can be made default in place
# of older sidebar.
diff --git a/spec/support/capybara.rb b/spec/support/capybara.rb
index 2bd4750dffa..5ae042e4148 100644
--- a/spec/support/capybara.rb
+++ b/spec/support/capybara.rb
@@ -16,6 +16,7 @@ JSConsoleError = Class.new(StandardError)
JS_CONSOLE_FILTER = Regexp.union([
'"[HMR] Waiting for update signal from WDS..."',
'"[WDS] Hot Module Replacement enabled."',
+ '"[WDS] Live Reloading enabled."',
"Download the Vue Devtools extension"
])
diff --git a/spec/support/database_cleaner.rb b/spec/support/database_cleaner.rb
index 25260a56578..aaf408f6143 100644
--- a/spec/support/database_cleaner.rb
+++ b/spec/support/database_cleaner.rb
@@ -1,21 +1,7 @@
# frozen_string_literal: true
-require 'database_cleaner/active_record/deletion'
require_relative 'db_cleaner'
-module FakeInformationSchema
- # Work around a bug in DatabaseCleaner when using the deletion strategy:
- # https://github.com/DatabaseCleaner/database_cleaner/issues/347
- #
- # On MySQL, if the information schema is said to exist, we use an inaccurate
- # row count leading to some tables not being cleaned when they should
- def information_schema_exists?(_connection)
- false
- end
-end
-
-DatabaseCleaner::ActiveRecord::Deletion.prepend(FakeInformationSchema)
-
RSpec.configure do |config|
include DbCleaner
diff --git a/spec/support/helpers/admin_mode_helpers.rb b/spec/support/helpers/admin_mode_helpers.rb
index de8ffe40536..e995a7d4f5e 100644
--- a/spec/support/helpers/admin_mode_helpers.rb
+++ b/spec/support/helpers/admin_mode_helpers.rb
@@ -3,7 +3,7 @@
# Helper for enabling admin mode in tests
module AdminModeHelper
- # Users are logged in by default in user mode and have to switch to admin
+ # Administrators are logged in by default in user mode and have to switch to admin
# mode for accessing any administrative functionality. This helper lets a user
# be in admin mode without requiring a second authentication step (provided
# the user is an admin)
diff --git a/spec/support/helpers/graphql_helpers.rb b/spec/support/helpers/graphql_helpers.rb
index 80a3f7df05f..e21b3aea3da 100644
--- a/spec/support/helpers/graphql_helpers.rb
+++ b/spec/support/helpers/graphql_helpers.rb
@@ -297,6 +297,10 @@ module GraphqlHelpers
extract_attribute ? item['node'][extract_attribute] : item['node']
end
end
+
+ def global_id_of(model)
+ model.to_global_id.to_s
+ end
end
# This warms our schema, doing this as part of loading the helpers to avoid
diff --git a/spec/support/helpers/kubernetes_helpers.rb b/spec/support/helpers/kubernetes_helpers.rb
index 677aef57661..ad4ae93a027 100644
--- a/spec/support/helpers/kubernetes_helpers.rb
+++ b/spec/support/helpers/kubernetes_helpers.rb
@@ -84,7 +84,7 @@ module KubernetesHelpers
end
logs_url = service.api_url + "/api/v1/namespaces/#{namespace}/pods/#{pod_name}" \
- "/log?#{container_query_param}tailLines=#{Clusters::Platforms::Kubernetes::LOGS_LIMIT}"
+ "/log?#{container_query_param}tailLines=#{Clusters::Platforms::Kubernetes::LOGS_LIMIT}&timestamps=true"
if status
response = { status: status }
@@ -194,6 +194,11 @@ module KubernetesHelpers
.to_return(kube_response({}))
end
+ def stub_kubeclient_put_cluster_role_binding(api_url, name)
+ WebMock.stub_request(:put, api_url + "/apis/rbac.authorization.k8s.io/v1/clusterrolebindings/#{name}")
+ .to_return(kube_response({}))
+ end
+
def stub_kubeclient_get_role_binding(api_url, name, namespace: 'default')
WebMock.stub_request(:get, api_url + "/apis/rbac.authorization.k8s.io/v1/namespaces/#{namespace}/rolebindings/#{name}")
.to_return(kube_response({}))
@@ -219,11 +224,21 @@ module KubernetesHelpers
.to_return(kube_response({}))
end
+ def stub_kubeclient_get_namespaces(api_url)
+ WebMock.stub_request(:get, api_url + '/api/v1/namespaces')
+ .to_return(kube_response(kube_v1_namespace_list_body))
+ end
+
def stub_kubeclient_get_namespace(api_url, namespace: 'default')
WebMock.stub_request(:get, api_url + "/api/v1/namespaces/#{namespace}")
.to_return(kube_response({}))
end
+ def stub_kubeclient_put_cluster_role(api_url, name)
+ WebMock.stub_request(:put, api_url + "/apis/rbac.authorization.k8s.io/v1/clusterroles/#{name}")
+ .to_return(kube_response({}))
+ end
+
def stub_kubeclient_put_role(api_url, name, namespace: 'default')
WebMock.stub_request(:put, api_url + "/apis/rbac.authorization.k8s.io/v1/namespaces/#{namespace}/roles/#{name}")
.to_return(kube_response({}))
@@ -257,6 +272,20 @@ module KubernetesHelpers
}
end
+ def kube_v1_namespace_list_body
+ {
+ "kind" => "NamespaceList",
+ "apiVersion" => "v1",
+ "items" => [
+ {
+ "metadata" => {
+ "name" => "knative-serving"
+ }
+ }
+ ]
+ }
+ end
+
def kube_v1beta1_discovery_body
{
"kind" => "APIResourceList",
@@ -302,7 +331,7 @@ module KubernetesHelpers
end
def kube_logs_body
- "Log 1\nLog 2\nLog 3"
+ "2019-12-13T14:04:22.123456Z Log 1\n2019-12-13T14:04:23.123456Z Log 2\n2019-12-13T14:04:24.123456Z Log 3"
end
def kube_deployments_body
@@ -322,7 +351,7 @@ module KubernetesHelpers
def kube_knative_services_body(**options)
{
"kind" => "List",
- "items" => [knative_07_service(options)]
+ "items" => [knative_09_service(options)]
}
end
@@ -511,6 +540,58 @@ module KubernetesHelpers
end
# noinspection RubyStringKeysInHashInspection
+ def knative_09_service(name: 'kubetest', namespace: 'default', domain: 'example.com', description: 'a knative service', environment: 'production')
+ { "apiVersion" => "serving.knative.dev/v1alpha1",
+ "kind" => "Service",
+ "metadata" =>
+ { "annotations" =>
+ { "serving.knative.dev/creator" => "system:serviceaccount:#{namespace}:#{namespace}-service-account",
+ "serving.knative.dev/lastModifier" => "system:serviceaccount:#{namespace}:#{namespace}-service-account" },
+ "creationTimestamp" => "2019-10-22T21:19:13Z",
+ "generation" => 1,
+ "labels" => { "service" => name },
+ "name" => name,
+ "namespace" => namespace,
+ "resourceVersion" => "289726",
+ "selfLink" => "/apis/serving.knative.dev/v1alpha1/namespaces/#{namespace}/services/#{name}",
+ "uid" => "988349fa-f511-11e9-9ea1-42010a80005e" },
+ "spec" => {
+ "template" => {
+ "metadata" => {
+ "annotations" => { "Description" => description },
+ "creationTimestamp" => "2019-10-22T21:19:12Z",
+ "labels" => { "service" => name }
+ },
+ "spec" => {
+ "containers" => [{
+ "env" =>
+ [{ "name" => "timestamp", "value" => "2019-10-22 21:19:12" }],
+ "image" => "image_name",
+ "name" => "user-container",
+ "resources" => {}
+ }],
+ "timeoutSeconds" => 300
+ }
+ },
+ "traffic" => [{ "latestRevision" => true, "percent" => 100 }]
+ },
+ "status" =>
+ { "address" => { "url" => "http://#{name}.#{namespace}.svc.cluster.local" },
+ "conditions" =>
+ [{ "lastTransitionTime" => "2019-10-22T21:20:15Z", "status" => "True", "type" => "ConfigurationsReady" },
+ { "lastTransitionTime" => "2019-10-22T21:20:15Z", "status" => "True", "type" => "Ready" },
+ { "lastTransitionTime" => "2019-10-22T21:20:15Z", "status" => "True", "type" => "RoutesReady" }],
+ "latestCreatedRevisionName" => "#{name}-92tsj",
+ "latestReadyRevisionName" => "#{name}-92tsj",
+ "observedGeneration" => 1,
+ "traffic" => [{ "latestRevision" => true, "percent" => 100, "revisionName" => "#{name}-92tsj" }],
+ "url" => "http://#{name}.#{namespace}.#{domain}" },
+ "environment_scope" => environment,
+ "cluster_id" => 5,
+ "podcount" => 0 }
+ end
+
+ # noinspection RubyStringKeysInHashInspection
def knative_05_service(name: 'kubetest', namespace: 'default', domain: 'example.com', description: 'a knative service', environment: 'production')
{ "apiVersion" => "serving.knative.dev/v1alpha1",
"kind" => "Service",
diff --git a/spec/support/helpers/live_debugger.rb b/spec/support/helpers/live_debugger.rb
index d6091035b59..cdb068760f4 100644
--- a/spec/support/helpers/live_debugger.rb
+++ b/spec/support/helpers/live_debugger.rb
@@ -6,11 +6,17 @@ module LiveDebugger
def live_debug
puts
puts "Current example is paused for live debugging."
- puts "Opening #{current_url} in your default browser..."
+
+ if ENV['CHROME_HEADLESS'] =~ /^(false|no|0)$/i
+ puts "Switch to the Chrome window that was automatically opened to run the test in order to view current page"
+ else
+ puts "Opening #{current_url} in your default browser..."
+ end
+
puts "The current user credentials are: #{@current_user.username} / #{@current_user.password}" if @current_user
puts "Press any key to resume the execution of the example!!"
- `open #{current_url}`
+ `open #{current_url}` if ENV['CHROME_HEADLESS'] !~ /^(false|no|0)$/i
loop until $stdin.getch
diff --git a/spec/support/helpers/metrics_dashboard_helpers.rb b/spec/support/helpers/metrics_dashboard_helpers.rb
index 0e86b6dfda7..5b425d0964d 100644
--- a/spec/support/helpers/metrics_dashboard_helpers.rb
+++ b/spec/support/helpers/metrics_dashboard_helpers.rb
@@ -19,7 +19,11 @@ module MetricsDashboardHelpers
end
def system_dashboard_path
- Metrics::Dashboard::SystemDashboardService::SYSTEM_DASHBOARD_PATH
+ Metrics::Dashboard::SystemDashboardService::DASHBOARD_PATH
+ end
+
+ def pod_dashboard_path
+ Metrics::Dashboard::PodDashboardService::DASHBOARD_PATH
end
def business_metric_title
@@ -53,6 +57,15 @@ module MetricsDashboardHelpers
it_behaves_like 'valid dashboard service response for schema'
end
+ shared_examples_for 'caches the unprocessed dashboard for subsequent calls' do
+ it do
+ expect(YAML).to receive(:safe_load).once.and_call_original
+
+ described_class.new(*service_params).get_dashboard
+ described_class.new(*service_params).get_dashboard
+ end
+ end
+
shared_examples_for 'valid embedded dashboard service response' do
let(:dashboard_schema) { JSON.parse(fixture_file('lib/gitlab/metrics/dashboard/schemas/embedded_dashboard.json')) }
diff --git a/spec/support/helpers/position_tracer_helpers.rb b/spec/support/helpers/position_tracer_helpers.rb
index bbf6e06dd40..7516694d4fe 100644
--- a/spec/support/helpers/position_tracer_helpers.rb
+++ b/spec/support/helpers/position_tracer_helpers.rb
@@ -50,7 +50,7 @@ module PositionTracerHelpers
end
def create_branch(new_name, branch_name)
- CreateBranchService.new(project, current_user).execute(new_name, branch_name)
+ ::Branches::CreateService.new(project, current_user).execute(new_name, branch_name)
end
def create_file(branch_name, file_name, content)
diff --git a/spec/support/helpers/sentry_client_helpers.rb b/spec/support/helpers/sentry_client_helpers.rb
new file mode 100644
index 00000000000..7476b5fb249
--- /dev/null
+++ b/spec/support/helpers/sentry_client_helpers.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+module SentryClientHelpers
+ private
+
+ def stub_sentry_request(url, body: {}, status: 200, headers: {})
+ stub_request(:get, url)
+ .to_return(
+ status: status,
+ headers: { 'Content-Type' => 'application/json' }.merge(headers),
+ body: body.to_json
+ )
+ end
+end
diff --git a/spec/support/helpers/stub_gitlab_calls.rb b/spec/support/helpers/stub_gitlab_calls.rb
index fe343da7838..ff4b9db8ad9 100644
--- a/spec/support/helpers/stub_gitlab_calls.rb
+++ b/spec/support/helpers/stub_gitlab_calls.rb
@@ -19,24 +19,28 @@ module StubGitlabCalls
end
def stub_ci_pipeline_yaml_file(ci_yaml_content)
- allow_any_instance_of(Repository).to receive(:gitlab_ci_yml_for).and_return(ci_yaml_content)
+ allow_any_instance_of(Repository)
+ .to receive(:gitlab_ci_yml_for)
+ .and_return(ci_yaml_content)
# Ensure we don't hit auto-devops when config not found in repository
unless ci_yaml_content
allow_any_instance_of(Project).to receive(:auto_devops_enabled?).and_return(false)
end
+
+ # Stub the first call to `include:[local: .gitlab-ci.yml]` when
+ # evaluating the CI root config content.
+ if Feature.enabled?(:ci_root_config_content, default_enabled: true)
+ allow_any_instance_of(Gitlab::Ci::Config::External::File::Local)
+ .to receive(:content)
+ .and_return(ci_yaml_content)
+ end
end
def stub_pipeline_modified_paths(pipeline, modified_paths)
allow(pipeline).to receive(:modified_paths).and_return(modified_paths)
end
- def stub_repository_ci_yaml_file(sha:, path: '.gitlab-ci.yml')
- allow_any_instance_of(Repository)
- .to receive(:gitlab_ci_yml_for).with(sha, path)
- .and_return(gitlab_ci_yaml)
- end
-
def stub_ci_builds_disabled
allow_any_instance_of(Project).to receive(:builds_enabled?).and_return(false)
end
diff --git a/spec/support/helpers/stub_object_storage.rb b/spec/support/helpers/stub_object_storage.rb
index 3f7002b8768..392300a4436 100644
--- a/spec/support/helpers/stub_object_storage.rb
+++ b/spec/support/helpers/stub_object_storage.rb
@@ -56,6 +56,13 @@ module StubObjectStorage
**params)
end
+ def stub_package_file_object_storage(**params)
+ stub_object_storage_uploader(config: Gitlab.config.packages.object_store,
+ uploader: ::Packages::PackageFileUploader,
+ remote_directory: 'packages',
+ **params)
+ end
+
def stub_uploads_object_storage(uploader = described_class, **params)
stub_object_storage_uploader(config: Gitlab.config.uploads.object_store,
uploader: uploader,
diff --git a/spec/support/import_export/configuration_helper.rb b/spec/support/import_export/configuration_helper.rb
index 122df7f27f0..2e5a99bb8b2 100644
--- a/spec/support/import_export/configuration_helper.rb
+++ b/spec/support/import_export/configuration_helper.rb
@@ -10,21 +10,54 @@ module ConfigurationHelper
end
end
+ def all_relations(tree, tree_path = [])
+ tree.flat_map do |relation_name, relations|
+ relation_path = tree_path + [relation_name]
+ [relation_path] + all_relations(relations, relation_path)
+ end
+ end
+
+ def config_hash(config = Gitlab::ImportExport.config_file)
+ Gitlab::ImportExport::Config.new(config: config).to_h
+ end
+
+ def relation_paths_for(key, config: Gitlab::ImportExport.config_file)
+ # - project is not part of the tree, so it has to be added manually.
+ all_relations({ project: config_hash(config).dig(:tree, key) })
+ end
+
+ def relation_names_for(key, config: Gitlab::ImportExport.config_file)
+ names = names_from_tree(config_hash(config).dig(:tree, key))
+ # Remove duplicated or add missing models
+ # - project is not part of the tree, so it has to be added manually.
+ # - milestone, labels, merge_request have both singular and plural versions in the tree, so remove the duplicates.
+ # - User, Author... Models we do not care about for checking models
+ names.flatten.uniq - %w(milestones labels user author merge_request design) + [key.to_s]
+ end
+
def relation_class_for_name(relation_name)
relation_name = Gitlab::ImportExport::RelationFactory.overrides[relation_name.to_sym] || relation_name
Gitlab::ImportExport::RelationFactory.relation_class(relation_name)
end
- def parsed_attributes(relation_name, attributes)
- excluded_attributes = config_hash['excluded_attributes'][relation_name]
- included_attributes = config_hash['included_attributes'][relation_name]
-
+ def parsed_attributes(relation_name, attributes, config: Gitlab::ImportExport.config_file)
+ import_export_config = config_hash(config)
+ excluded_attributes = import_export_config[:excluded_attributes][relation_name.to_sym]
+ included_attributes = import_export_config[:included_attributes][relation_name.to_sym]
attributes = attributes - JSON[excluded_attributes.to_json] if excluded_attributes
attributes = attributes & JSON[included_attributes.to_json] if included_attributes
attributes
end
+ def prohibited_key?(key)
+ key =~ Gitlab::ImportExport::AttributeCleaner::PROHIBITED_REFERENCES && !permitted_key?(key)
+ end
+
+ def permitted_key?(key)
+ Gitlab::ImportExport::AttributeCleaner::ALLOWED_REFERENCES.include?(key)
+ end
+
def associations_for(safe_model)
safe_model.reflect_on_all_associations.map { |assoc| assoc.name.to_s }
end
diff --git a/spec/support/matchers/graphql_matchers.rb b/spec/support/matchers/graphql_matchers.rb
index d735c10f698..dbf457a9200 100644
--- a/spec/support/matchers/graphql_matchers.rb
+++ b/spec/support/matchers/graphql_matchers.rb
@@ -28,6 +28,19 @@ RSpec::Matchers.define :have_graphql_fields do |*expected|
end
end
+RSpec::Matchers.define :include_graphql_fields do |*expected|
+ expected_field_names = expected.map { |name| GraphqlHelpers.fieldnamerize(name) }
+
+ match do |kls|
+ expect(kls.fields.keys).to include(*expected_field_names)
+ end
+
+ failure_message do |kls|
+ missing = expected_field_names - kls.fields.keys
+ "is missing fields: <#{missing.inspect}>" if missing.any?
+ end
+end
+
RSpec::Matchers.define :have_graphql_field do |field_name, args = {}|
match do |kls|
field = kls.fields[GraphqlHelpers.fieldnamerize(field_name)]
@@ -64,6 +77,12 @@ RSpec::Matchers.define :have_graphql_type do |expected|
end
end
+RSpec::Matchers.define :have_non_null_graphql_type do |expected|
+ match do |field|
+ expect(field.type).to eq(!expected.to_graphql)
+ end
+end
+
RSpec::Matchers.define :have_graphql_resolver do |expected|
match do |field|
case expected
diff --git a/spec/support/matchers/navigation_matcher.rb b/spec/support/matchers/navigation_matcher.rb
index ad73c96031e..a0beecbfb2c 100644
--- a/spec/support/matchers/navigation_matcher.rb
+++ b/spec/support/matchers/navigation_matcher.rb
@@ -9,6 +9,6 @@ end
RSpec::Matchers.define :have_active_sub_navigation do |expected|
match do |page|
- expect(page.find('.sidebar-sub-level-items > li.active:not(.fly-out-top-item)')).to have_content(expected)
+ expect(page).to have_css('.sidebar-sub-level-items > li.active:not(.fly-out-top-item)', text: expected)
end
end
diff --git a/spec/support/shared_contexts/policies/project_policy_shared_context.rb b/spec/support/shared_contexts/policies/project_policy_shared_context.rb
index 65398c13d90..480c5a0fda0 100644
--- a/spec/support/shared_contexts/policies/project_policy_shared_context.rb
+++ b/spec/support/shared_contexts/policies/project_policy_shared_context.rb
@@ -39,12 +39,13 @@ RSpec.shared_context 'ProjectPolicy context' do
update_pipeline create_merge_request_from create_wiki push_code
resolve_note create_container_image update_container_image
create_environment create_deployment update_deployment create_release update_release
+ update_environment
]
end
let(:base_maintainer_permissions) do
%i[
- push_to_delete_protected_branch update_project_snippet update_environment
+ push_to_delete_protected_branch update_project_snippet
admin_project_snippet admin_project_member admin_note admin_wiki admin_project
admin_commit_status admin_build admin_container_image
admin_pipeline admin_environment admin_deployment destroy_release add_cluster
diff --git a/spec/support/shared_examples/controllers/environments_controller_shared_examples.rb b/spec/support/shared_examples/controllers/environments_controller_shared_examples.rb
new file mode 100644
index 00000000000..3540f60bf1b
--- /dev/null
+++ b/spec/support/shared_examples/controllers/environments_controller_shared_examples.rb
@@ -0,0 +1,67 @@
+# frozen_string_literal: true
+
+shared_examples_for 'successful response for #cancel_auto_stop' do
+ include GitlabRoutingHelper
+
+ context 'when request is html' do
+ let(:params) { environment_params(format: :html) }
+
+ it 'redirects to show page' do
+ subject
+
+ expect(response).to redirect_to(environment_path(environment))
+ expect(flash[:notice]).to eq('Auto stop successfully canceled.')
+ end
+
+ it 'expires etag caching' do
+ expect_next_instance_of(Gitlab::EtagCaching::Store) do |etag_caching|
+ expect(etag_caching).to receive(:touch).with(project_environments_path(project, format: :json))
+ end
+
+ subject
+ end
+ end
+
+ context 'when request is js' do
+ let(:params) { environment_params(format: :json) }
+
+ it 'responds as ok' do
+ subject
+
+ expect(response).to have_gitlab_http_status(:ok)
+ expect(json_response['message']).to eq('Auto stop successfully canceled.')
+ end
+
+ it 'expires etag caching' do
+ expect_next_instance_of(Gitlab::EtagCaching::Store) do |etag_caching|
+ expect(etag_caching).to receive(:touch).with(project_environments_path(project, format: :json))
+ end
+
+ subject
+ end
+ end
+end
+
+shared_examples_for 'failed response for #cancel_auto_stop' do
+ context 'when request is html' do
+ let(:params) { environment_params(format: :html) }
+
+ it 'redirects to show page' do
+ subject
+
+ expect(response).to redirect_to(environment_path(environment))
+ expect(flash[:alert]).to eq("Failed to cancel auto stop because #{message}.")
+ end
+ end
+
+ context 'when request is js' do
+ let(:params) { environment_params(format: :json) }
+
+ it 'responds as unprocessable entity' do
+ subject
+
+ expect(response).to have_gitlab_http_status(:unprocessable_entity)
+ expect(json_response['message']).to eq("Failed to cancel auto stop because #{message}.")
+ end
+ end
+end
diff --git a/spec/support/shared_examples/controllers/uploads_actions_shared_examples.rb b/spec/support/shared_examples/controllers/uploads_actions_shared_examples.rb
index c24418b2f90..8962d98218a 100644
--- a/spec/support/shared_examples/controllers/uploads_actions_shared_examples.rb
+++ b/spec/support/shared_examples/controllers/uploads_actions_shared_examples.rb
@@ -74,7 +74,7 @@ shared_examples 'handle uploads' do
end
before do
- expect(FileUploader).to receive(:generate_secret).and_return(secret)
+ allow(FileUploader).to receive(:generate_secret).and_return(secret)
UploadService.new(model, jpg, uploader_class).execute
end
@@ -88,6 +88,18 @@ shared_examples 'handle uploads' do
end
end
+ context 'when the upload does not have a MIME type that Rails knows' do
+ let(:po) { fixture_file_upload('spec/fixtures/missing_metadata.po', 'text/plain') }
+
+ it 'falls back to the null type' do
+ UploadService.new(model, po, uploader_class).execute
+
+ get :show, params: params.merge(secret: secret, filename: 'missing_metadata.po')
+
+ expect(response.headers['Content-Type']).to eq('application/octet-stream')
+ end
+ end
+
context "when the model is public" do
before do
model.update_attribute(:visibility_level, Gitlab::VisibilityLevel::PUBLIC)
diff --git a/spec/support/shared_examples/diff_file_collections.rb b/spec/support/shared_examples/diff_file_collections.rb
index 4c64abd2a97..c8bd137bf84 100644
--- a/spec/support/shared_examples/diff_file_collections.rb
+++ b/spec/support/shared_examples/diff_file_collections.rb
@@ -57,3 +57,45 @@ shared_examples 'unfoldable diff' do
subject.unfold_diff_files([position])
end
end
+
+shared_examples 'cacheable diff collection' do
+ let(:cache) { instance_double(Gitlab::Diff::HighlightCache) }
+
+ before do
+ expect(Gitlab::Diff::HighlightCache).to receive(:new).with(subject) { cache }
+ end
+
+ describe '#write_cache' do
+ it 'calls Gitlab::Diff::HighlightCache#write_if_empty' do
+ expect(cache).to receive(:write_if_empty).once
+
+ subject.write_cache
+ end
+ end
+
+ describe '#clear_cache' do
+ it 'calls Gitlab::Diff::HighlightCache#clear' do
+ expect(cache).to receive(:clear).once
+
+ subject.clear_cache
+ end
+ end
+
+ describe '#cache_key' do
+ it 'calls Gitlab::Diff::HighlightCache#key' do
+ expect(cache).to receive(:key).once
+
+ subject.cache_key
+ end
+ end
+
+ describe '#diff_files' do
+ it 'calls Gitlab::Diff::HighlightCache#decorate' do
+ expect(cache).to receive(:decorate)
+ .with(instance_of(Gitlab::Diff::File))
+ .exactly(cacheable_files_count).times
+
+ subject.diff_files
+ end
+ end
+end
diff --git a/spec/support/shared_examples/features/creatable_merge_request_shared_examples.rb b/spec/support/shared_examples/features/creatable_merge_request_shared_examples.rb
index c0db4cdde72..da966fd2200 100644
--- a/spec/support/shared_examples/features/creatable_merge_request_shared_examples.rb
+++ b/spec/support/shared_examples/features/creatable_merge_request_shared_examples.rb
@@ -8,11 +8,14 @@ RSpec.shared_examples 'a creatable merge request' do
page.within '.dropdown-menu-user' do
click_link user2.name
end
+
expect(find('input[name="merge_request[assignee_ids][]"]', visible: false).value).to match(user2.id.to_s)
page.within '.js-assignee-search' do
expect(page).to have_content user2.name
end
+
click_link 'Assign to me'
+
expect(find('input[name="merge_request[assignee_ids][]"]', visible: false).value).to match(user.id.to_s)
page.within '.js-assignee-search' do
expect(page).to have_content user.name
@@ -22,6 +25,7 @@ RSpec.shared_examples 'a creatable merge request' do
page.within '.issue-milestone' do
click_link milestone.title
end
+
expect(find('input[name="merge_request[milestone_id]"]', visible: false).value).to match(milestone.id.to_s)
page.within '.js-milestone-select' do
expect(page).to have_content milestone.title
@@ -32,6 +36,7 @@ RSpec.shared_examples 'a creatable merge request' do
click_link label.title
click_link label2.title
end
+
page.within '.js-label-select' do
expect(page).to have_content label.title
end
@@ -58,8 +63,9 @@ RSpec.shared_examples 'a creatable merge request' do
it 'updates the branches when selecting a new target project', :js do
target_project_member = target_project.owner
- CreateBranchService.new(target_project, target_project_member)
- .execute('a-brand-new-branch-to-test', 'master')
+ ::Branches::CreateService.new(target_project, target_project_member)
+ .execute('a-brand-new-branch-to-test', 'master')
+
visit project_new_merge_request_path(source_project)
first('.js-target-project').click
diff --git a/spec/support/shared_examples/graphql/notes_creation_shared_examples.rb b/spec/support/shared_examples/graphql/notes_creation_shared_examples.rb
index f2e1a95345b..522211340ea 100644
--- a/spec/support/shared_examples/graphql/notes_creation_shared_examples.rb
+++ b/spec/support/shared_examples/graphql/notes_creation_shared_examples.rb
@@ -26,6 +26,7 @@ end
RSpec.shared_examples 'a Note mutation when there are active record validation errors' do |model: Note|
before do
expect_next_instance_of(model) do |note|
+ allow(note).to receive_message_chain(:errors, :empty?).and_return(true)
expect(note).to receive(:valid?).at_least(:once).and_return(false)
expect(note).to receive_message_chain(
:errors,
diff --git a/spec/support/shared_examples/lib/banzai/filters/sanitization_filter_shared_examples.rb b/spec/support/shared_examples/lib/banzai/filters/sanitization_filter_shared_examples.rb
new file mode 100644
index 00000000000..134e38833cf
--- /dev/null
+++ b/spec/support/shared_examples/lib/banzai/filters/sanitization_filter_shared_examples.rb
@@ -0,0 +1,182 @@
+# frozen_string_literal: true
+
+RSpec.shared_examples 'default whitelist' do
+ it 'sanitizes tags that are not whitelisted' do
+ act = %q{<textarea>no inputs</textarea> and <blink>no blinks</blink>}
+ exp = 'no inputs and no blinks'
+ expect(filter(act).to_html).to eq exp
+ end
+
+ it 'sanitizes tag attributes' do
+ act = %q{<a href="http://example.com/bar.html" onclick="bar">Text</a>}
+ exp = %q{<a href="http://example.com/bar.html">Text</a>}
+ expect(filter(act).to_html).to eq exp
+ end
+
+ it 'sanitizes javascript in attributes' do
+ act = %q(<a href="javascript:alert('foo')">Text</a>)
+ exp = '<a>Text</a>'
+ expect(filter(act).to_html).to eq exp
+ end
+
+ it 'sanitizes mixed-cased javascript in attributes' do
+ act = %q(<a href="javaScript:alert('foo')">Text</a>)
+ exp = '<a>Text</a>'
+ expect(filter(act).to_html).to eq exp
+ end
+
+ it 'allows whitelisted HTML tags from the user' do
+ exp = act = "<dl>\n<dt>Term</dt>\n<dd>Definition</dd>\n</dl>"
+ expect(filter(act).to_html).to eq exp
+ end
+
+ it 'sanitizes `class` attribute on any element' do
+ act = %q{<strong class="foo">Strong</strong>}
+ expect(filter(act).to_html).to eq %q{<strong>Strong</strong>}
+ end
+
+ it 'sanitizes `id` attribute on any element' do
+ act = %q{<em id="foo">Emphasis</em>}
+ expect(filter(act).to_html).to eq %q{<em>Emphasis</em>}
+ end
+end
+
+RSpec.shared_examples 'XSS prevention' do
+ # Adapted from the Sanitize test suite: http://git.io/vczrM
+ protocols = {
+ 'protocol-based JS injection: simple, no spaces' => {
+ input: '<a href="javascript:alert(\'XSS\');">foo</a>',
+ output: '<a>foo</a>'
+ },
+
+ 'protocol-based JS injection: simple, spaces before' => {
+ input: '<a href="javascript :alert(\'XSS\');">foo</a>',
+ output: '<a>foo</a>'
+ },
+
+ 'protocol-based JS injection: simple, spaces after' => {
+ input: '<a href="javascript: alert(\'XSS\');">foo</a>',
+ output: '<a>foo</a>'
+ },
+
+ 'protocol-based JS injection: simple, spaces before and after' => {
+ input: '<a href="javascript : alert(\'XSS\');">foo</a>',
+ output: '<a>foo</a>'
+ },
+
+ 'protocol-based JS injection: preceding colon' => {
+ input: '<a href=":javascript:alert(\'XSS\');">foo</a>',
+ output: '<a>foo</a>'
+ },
+
+ 'protocol-based JS injection: UTF-8 encoding' => {
+ input: '<a href="javascript&#58;">foo</a>',
+ output: '<a>foo</a>'
+ },
+
+ 'protocol-based JS injection: long UTF-8 encoding' => {
+ input: '<a href="javascript&#0058;">foo</a>',
+ output: '<a>foo</a>'
+ },
+
+ 'protocol-based JS injection: long UTF-8 encoding without semicolons' => {
+ input: '<a href=&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041>foo</a>',
+ output: '<a>foo</a>'
+ },
+
+ 'protocol-based JS injection: hex encoding' => {
+ input: '<a href="javascript&#x3A;">foo</a>',
+ output: '<a>foo</a>'
+ },
+
+ 'protocol-based JS injection: long hex encoding' => {
+ input: '<a href="javascript&#x003A;">foo</a>',
+ output: '<a>foo</a>'
+ },
+
+ 'protocol-based JS injection: hex encoding without semicolons' => {
+ input: '<a href=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29>foo</a>',
+ output: '<a>foo</a>'
+ },
+
+ 'protocol-based JS injection: null char' => {
+ input: "<a href=java\0script:alert(\"XSS\")>foo</a>",
+ output: '<a href="java"></a>'
+ },
+
+ 'protocol-based JS injection: invalid URL char' => {
+ input: '<img src=java\script:alert("XSS")>',
+ output: '<img>'
+ },
+
+ 'protocol-based JS injection: Unicode' => {
+ input: %Q(<a href="\u0001java\u0003script:alert('XSS')">foo</a>),
+ output: '<a>foo</a>'
+ },
+
+ 'protocol-based JS injection: spaces and entities' => {
+ input: '<a href=" &#14; javascript:alert(\'XSS\');">foo</a>',
+ output: '<a href="">foo</a>'
+ },
+
+ 'protocol whitespace' => {
+ input: '<a href=" http://example.com/"></a>',
+ output: '<a href="http://example.com/"></a>'
+ }
+ }
+
+ protocols.each do |name, data|
+ it "disallows #{name}" do
+ doc = filter(data[:input])
+
+ expect(doc.to_html).to eq data[:output]
+ end
+ end
+
+ it 'disallows data links' do
+ input = '<a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K">XSS</a>'
+ output = filter(input)
+
+ expect(output.to_html).to eq '<a>XSS</a>'
+ end
+
+ it 'disallows vbscript links' do
+ input = '<a href="vbscript:alert(document.domain)">XSS</a>'
+ output = filter(input)
+
+ expect(output.to_html).to eq '<a>XSS</a>'
+ end
+end
+
+RSpec.shared_examples 'sanitize link' do
+ it 'removes `rel` attribute from `a` elements' do
+ act = %q{<a href="#" rel="nofollow">Link</a>}
+ exp = %q{<a href="#">Link</a>}
+
+ expect(filter(act).to_html).to eq exp
+ end
+
+ it 'disallows invalid URIs' do
+ expect(Addressable::URI).to receive(:parse).with('foo://example.com')
+ .and_raise(Addressable::URI::InvalidURIError)
+
+ input = '<a href="foo://example.com">Foo</a>'
+ output = filter(input)
+
+ expect(output.to_html).to eq '<a>Foo</a>'
+ end
+
+ it 'allows non-standard anchor schemes' do
+ exp = %q{<a href="irc://irc.freenode.net/git">IRC</a>}
+ act = filter(exp)
+
+ expect(act.to_html).to eq exp
+ end
+
+ it 'allows relative links' do
+ exp = %q{<a href="foo/bar.md">foo/bar.md</a>}
+ act = filter(exp)
+
+ expect(act.to_html).to eq exp
+ end
+end
diff --git a/spec/support/shared_examples/lib/gitlab/import_export/project_tree_restorer_shared_examples.rb b/spec/support/shared_examples/lib/gitlab/import_export/project_tree_restorer_shared_examples.rb
index f26a8554055..4ef9a9930f7 100644
--- a/spec/support/shared_examples/lib/gitlab/import_export/project_tree_restorer_shared_examples.rb
+++ b/spec/support/shared_examples/lib/gitlab/import_export/project_tree_restorer_shared_examples.rb
@@ -2,7 +2,7 @@
# Shared examples for ProjectTreeRestorer (shared to allow the testing
# of EE-specific features)
-RSpec.shared_examples 'restores project correctly' do |**results|
+RSpec.shared_examples 'restores project successfully' do |**results|
it 'restores the project' do
expect(shared.errors).to be_empty
expect(restored_project_json).to be_truthy
@@ -32,6 +32,10 @@ RSpec.shared_examples 'restores project correctly' do |**results|
it 'does not set params that are excluded from import_export settings' do
expect(project.import_type).to be_nil
- expect(project.creator_id).not_to eq 123
+ expect(project.creator_id).not_to eq 999
+ end
+
+ it 'records exact number of import failures' do
+ expect(project.import_failures.size).to eq(results.fetch(:import_failures, 0))
end
end
diff --git a/spec/support/shared_examples/lib/sentry/client_shared_examples.rb b/spec/support/shared_examples/lib/sentry/client_shared_examples.rb
new file mode 100644
index 00000000000..76b71ebd3c5
--- /dev/null
+++ b/spec/support/shared_examples/lib/sentry/client_shared_examples.rb
@@ -0,0 +1,56 @@
+# frozen_string_literal: true
+
+# Requires sentry_api_request and subject to be defined
+RSpec.shared_examples 'calls sentry api' do
+ it 'calls sentry api' do
+ subject
+
+ expect(sentry_api_request).to have_been_requested
+ end
+end
+
+# Requires sentry_api_url and subject to be defined
+RSpec.shared_examples 'no Sentry redirects' do
+ let(:redirect_to) { 'https://redirected.example.com' }
+ let(:other_url) { 'https://other.example.org' }
+
+ let!(:redirected_req_stub) { stub_sentry_request(other_url) }
+
+ let!(:redirect_req_stub) do
+ stub_sentry_request(
+ sentry_api_url,
+ status: 302,
+ headers: { location: redirect_to }
+ )
+ end
+
+ it 'does not follow redirects' do
+ expect { subject }.to raise_exception(Sentry::Client::Error, 'Sentry response status code: 302')
+ expect(redirect_req_stub).to have_been_requested
+ expect(redirected_req_stub).not_to have_been_requested
+ end
+end
+
+RSpec.shared_examples 'maps Sentry exceptions' do
+ exceptions = {
+ Gitlab::HTTP::Error => 'Error when connecting to Sentry',
+ Net::OpenTimeout => 'Connection to Sentry timed out',
+ SocketError => 'Received SocketError when trying to connect to Sentry',
+ OpenSSL::SSL::SSLError => 'Sentry returned invalid SSL data',
+ Errno::ECONNREFUSED => 'Connection refused',
+ StandardError => 'Sentry request failed due to StandardError'
+ }
+
+ exceptions.each do |exception, message|
+ context "#{exception}" do
+ before do
+ stub_request(:get, sentry_request_url).to_raise(exception)
+ end
+
+ it do
+ expect { subject }
+ .to raise_exception(Sentry::Client::Error, message)
+ end
+ end
+ end
+end
diff --git a/spec/support/shared_examples/mail_room_shared_examples.rb b/spec/support/shared_examples/mail_room_shared_examples.rb
new file mode 100644
index 00000000000..4cca29250e2
--- /dev/null
+++ b/spec/support/shared_examples/mail_room_shared_examples.rb
@@ -0,0 +1,35 @@
+# frozen_string_literal: true
+
+shared_examples_for 'only truthy if both enabled and address are truthy' do |target_proc|
+ context 'with both enabled and address as truthy values' do
+ it 'is truthy' do
+ stub_config(enabled: true, address: 'localhost')
+
+ expect(target_proc.call).to be_truthy
+ end
+ end
+
+ context 'with address only as truthy' do
+ it 'is falsey' do
+ stub_config(enabled: false, address: 'localhost')
+
+ expect(target_proc.call).to be_falsey
+ end
+ end
+
+ context 'with enabled only as truthy' do
+ it 'is falsey' do
+ stub_config(enabled: true, address: nil)
+
+ expect(target_proc.call).to be_falsey
+ end
+ end
+
+ context 'with neither address nor enabled as truthy' do
+ it 'is falsey' do
+ stub_config(enabled: false, address: nil)
+
+ expect(target_proc.call).to be_falsey
+ end
+ end
+end
diff --git a/spec/support/shared_examples/mentionable_shared_examples.rb b/spec/support/shared_examples/mentionable_shared_examples.rb
index 93a8c4709a6..6efc471ce75 100644
--- a/spec/support/shared_examples/mentionable_shared_examples.rb
+++ b/spec/support/shared_examples/mentionable_shared_examples.rb
@@ -195,3 +195,153 @@ shared_examples 'an editable mentionable' do
subject.create_new_cross_references!(author)
end
end
+
+shared_examples_for 'mentions in description' do |mentionable_type|
+ describe 'when store_mentioned_users_to_db feature disabled' do
+ before do
+ stub_feature_flags(store_mentioned_users_to_db: false)
+ mentionable.store_mentions!
+ end
+
+ context 'when mentionable description contains mentions' do
+ let(:user) { create(:user) }
+ let(:mentionable) { create(mentionable_type, description: "#{user.to_reference} some description") }
+
+ it 'stores no mentions' do
+ expect(mentionable.user_mentions.count).to eq 0
+ end
+ end
+ end
+
+ describe 'when store_mentioned_users_to_db feature enabled' do
+ before do
+ stub_feature_flags(store_mentioned_users_to_db: true)
+ mentionable.store_mentions!
+ end
+
+ context 'when mentionable description has no mentions' do
+ let(:mentionable) { create(mentionable_type, description: "just some description") }
+
+ it 'stores no mentions' do
+ expect(mentionable.user_mentions.count).to eq 0
+ end
+ end
+
+ context 'when mentionable description contains mentions' do
+ let(:user) { create(:user) }
+ let(:group) { create(:group) }
+
+ let(:mentionable_desc) { "#{user.to_reference} some description #{group.to_reference(full: true)} and @all" }
+ let(:mentionable) { create(mentionable_type, description: mentionable_desc) }
+
+ it 'stores mentions' do
+ add_member(user)
+
+ expect(mentionable.user_mentions.count).to eq 1
+ expect(mentionable.referenced_users).to match_array([user])
+ expect(mentionable.referenced_projects(user)).to match_array([mentionable.project].compact) # epic.project is nil, and we want empty []
+ expect(mentionable.referenced_groups(user)).to match_array([group])
+ end
+ end
+ end
+end
+
+shared_examples_for 'mentions in notes' do |mentionable_type|
+ context 'when mentionable notes contain mentions' do
+ let(:user) { create(:user) }
+ let(:group) { create(:group) }
+ let(:note_desc) { "#{user.to_reference} and #{group.to_reference(full: true)} and @all" }
+ let!(:mentionable) { note.noteable }
+
+ before do
+ note.update(note: note_desc)
+ note.store_mentions!
+ add_member(user)
+ end
+
+ it 'returns all mentionable mentions' do
+ expect(mentionable.user_mentions.count).to eq 1
+ expect(mentionable.referenced_users).to eq [user]
+ expect(mentionable.referenced_projects(user)).to eq [mentionable.project].compact # epic.project is nil, and we want empty []
+ expect(mentionable.referenced_groups(user)).to eq [group]
+ end
+ end
+end
+
+shared_examples_for 'load mentions from DB' do |mentionable_type|
+ context 'load stored mentions' do
+ let_it_be(:user) { create(:user) }
+ let_it_be(:mentioned_user) { create(:user) }
+ let_it_be(:group) { create(:group) }
+ let_it_be(:note_desc) { "#{mentioned_user.to_reference} and #{group.to_reference(full: true)} and @all" }
+
+ before do
+ note.update(note: note_desc)
+ note.store_mentions!
+ add_member(user)
+ end
+
+ context 'when stored user mention contains ids of inexistent records' do
+ before do
+ user_mention = note.send(:model_user_mention)
+ mention_ids = {
+ mentioned_users_ids: user_mention.mentioned_users_ids.to_a << User.maximum(:id).to_i.succ,
+ mentioned_projects_ids: user_mention.mentioned_projects_ids.to_a << Project.maximum(:id).to_i.succ,
+ mentioned_groups_ids: user_mention.mentioned_groups_ids.to_a << Group.maximum(:id).to_i.succ
+ }
+ user_mention.update(mention_ids)
+ end
+
+ it 'filters out inexistent mentions' do
+ expect(mentionable.referenced_users).to match_array([mentioned_user])
+ expect(mentionable.referenced_projects(user)).to match_array([mentionable.project].compact) # epic.project is nil, and we want empty []
+ expect(mentionable.referenced_groups(user)).to match_array([group])
+ end
+ end
+
+ context 'when private projects and groups are mentioned' do
+ let(:mega_user) { create(:user) }
+ let(:private_project) { create(:project, :private) }
+ let(:project_member) { create(:project_member, user: create(:user), project: private_project) }
+ let(:private_group) { create(:group, :private) }
+ let(:group_member) { create(:group_member, user: create(:user), group: private_group) }
+
+ before do
+ user_mention = note.send(:model_user_mention)
+ mention_ids = {
+ mentioned_projects_ids: user_mention.mentioned_projects_ids.to_a << private_project.id,
+ mentioned_groups_ids: user_mention.mentioned_groups_ids.to_a << private_group.id
+ }
+ user_mention.update(mention_ids)
+
+ add_member(mega_user)
+ private_project.add_developer(mega_user)
+ private_group.add_developer(mega_user)
+ end
+
+ context 'when user has no access to some mentions' do
+ it 'filters out inaccessible mentions' do
+ expect(mentionable.referenced_projects(user)).to match_array([mentionable.project].compact) # epic.project is nil, and we want empty []
+ expect(mentionable.referenced_groups(user)).to match_array([group])
+ end
+ end
+
+ context 'when user has access to all mentions' do
+ it 'returns all mentions' do
+ expect(mentionable.referenced_projects(mega_user)).to match_array([mentionable.project, private_project].compact) # epic.project is nil, and we want empty []
+ expect(mentionable.referenced_groups(mega_user)).to match_array([group, private_group])
+ end
+ end
+ end
+ end
+end
+
+def add_member(user)
+ issuable_parent = if mentionable.is_a?(Epic)
+ mentionable.group
+ else
+ mentionable.project
+ end
+
+ issuable_parent&.add_developer(user)
+end
diff --git a/spec/support/shared_examples/merge_requests_rendering_a_single_diff_version.rb b/spec/support/shared_examples/merge_requests_rendering_a_single_diff_version.rb
index 80120629a32..18d025a4b07 100644
--- a/spec/support/shared_examples/merge_requests_rendering_a_single_diff_version.rb
+++ b/spec/support/shared_examples/merge_requests_rendering_a_single_diff_version.rb
@@ -3,6 +3,10 @@
# This pending test can be removed when `single_mr_diff_view` is enabled by default
# disabling the feature flag above is then not needed anymore.
RSpec.shared_examples 'rendering a single diff version' do |attribute|
+ before do
+ stub_feature_flags(diffs_batch_load: false)
+ end
+
pending 'allows editing diff settings single_mr_diff_view is enabled' do
project = create(:project, :repository)
user = project.creator
diff --git a/spec/support/shared_examples/models/chat_service_shared_examples.rb b/spec/support/shared_examples/models/chat_service_shared_examples.rb
index 98bf647a9bc..7936a8eb974 100644
--- a/spec/support/shared_examples/models/chat_service_shared_examples.rb
+++ b/spec/support/shared_examples/models/chat_service_shared_examples.rb
@@ -80,7 +80,7 @@ shared_examples_for "chat service" do |service_name|
it_behaves_like "triggered #{service_name} service"
- it "specifies the webhook when it is configured" do
+ it "specifies the webhook when it is configured", if: defined?(client) do
expect(client).to receive(:new).with(client_arguments).and_return(double(:chat_service).as_null_object)
subject.execute(sample_data)
diff --git a/spec/support/shared_examples/models/cluster_cleanup_worker_base_shared_examples.rb b/spec/support/shared_examples/models/cluster_cleanup_worker_base_shared_examples.rb
new file mode 100644
index 00000000000..66bbd908ea8
--- /dev/null
+++ b/spec/support/shared_examples/models/cluster_cleanup_worker_base_shared_examples.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+shared_examples 'cluster cleanup worker base specs' do
+ it 'transitions to errored if sidekiq retries exhausted' do
+ job = { 'args' => [cluster.id, 0], 'jid' => '123' }
+
+ described_class.sidekiq_retries_exhausted_block.call(job)
+
+ expect(cluster.reload.cleanup_status_name).to eq(:cleanup_errored)
+ end
+end
diff --git a/spec/support/shared_examples/models/user_mentions_shared_examples.rb b/spec/support/shared_examples/models/user_mentions_shared_examples.rb
new file mode 100644
index 00000000000..b94994ea712
--- /dev/null
+++ b/spec/support/shared_examples/models/user_mentions_shared_examples.rb
@@ -0,0 +1,40 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+shared_examples_for 'has user mentions' do
+ describe '#has_mentions?' do
+ context 'when no mentions' do
+ it 'returns false' do
+ expect(subject.mentioned_users_ids).to be nil
+ expect(subject.mentioned_projects_ids).to be nil
+ expect(subject.mentioned_groups_ids).to be nil
+ expect(subject.has_mentions?).to be false
+ end
+ end
+
+ context 'when mentioned_users_ids not null' do
+ subject { described_class.new(mentioned_users_ids: [1, 2, 3]) }
+
+ it 'returns true' do
+ expect(subject.has_mentions?).to be true
+ end
+ end
+
+ context 'when mentioned projects' do
+ subject { described_class.new(mentioned_projects_ids: [1, 2, 3]) }
+
+ it 'returns true' do
+ expect(subject.has_mentions?).to be true
+ end
+ end
+
+ context 'when mentioned groups' do
+ subject { described_class.new(mentioned_groups_ids: [1, 2, 3]) }
+
+ it 'returns true' do
+ expect(subject.has_mentions?).to be true
+ end
+ end
+ end
+end
diff --git a/spec/support/shared_examples/policies/project_policy_shared_examples.rb b/spec/support/shared_examples/policies/project_policy_shared_examples.rb
index 13b7ade658b..1831fc10628 100644
--- a/spec/support/shared_examples/policies/project_policy_shared_examples.rb
+++ b/spec/support/shared_examples/policies/project_policy_shared_examples.rb
@@ -4,7 +4,7 @@ RSpec.shared_examples 'archived project policies' do
let(:feature_write_abilities) do
described_class::READONLY_FEATURES_WHEN_ARCHIVED.flat_map do |feature|
described_class.create_update_admin_destroy(feature)
- end + additional_reporter_permissions + additional_maintainer_permissions
+ end + additional_maintainer_permissions
end
let(:other_write_abilities) do
@@ -18,6 +18,7 @@ RSpec.shared_examples 'archived project policies' do
resolve_note
award_emoji
admin_tag
+ admin_issue_link
]
end
@@ -151,6 +152,7 @@ end
RSpec.shared_examples 'project policies as developer' do
context 'abilities for non-public projects' do
let(:project) { create(:project, namespace: owner.namespace) }
+
subject { described_class.new(developer, project) }
it do
diff --git a/spec/support/shared_examples/quick_actions/issue/duplicate_quick_action_shared_examples.rb b/spec/support/shared_examples/quick_actions/issue/duplicate_quick_action_shared_examples.rb
deleted file mode 100644
index 3834b8b2b87..00000000000
--- a/spec/support/shared_examples/quick_actions/issue/duplicate_quick_action_shared_examples.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-# frozen_string_literal: true
-
-shared_examples 'duplicate quick action' do
- context 'mark issue as duplicate' do
- let(:original_issue) { create(:issue, project: project) }
-
- context 'when the current user can update issues' do
- it 'does not create a note, and marks the issue as a duplicate' do
- add_note("/duplicate ##{original_issue.to_reference}")
-
- expect(page).not_to have_content "/duplicate #{original_issue.to_reference}"
- expect(page).to have_content "marked this issue as a duplicate of #{original_issue.to_reference}"
-
- expect(issue.reload).to be_closed
- end
- end
-
- context 'when the current user cannot update the issue' do
- let(:guest) { create(:user) }
- before do
- project.add_guest(guest)
- gitlab_sign_out
- sign_in(guest)
- visit project_issue_path(project, issue)
- end
-
- it 'does not create a note, and does not mark the issue as a duplicate' do
- add_note("/duplicate ##{original_issue.to_reference}")
-
- expect(page).not_to have_content "marked this issue as a duplicate of #{original_issue.to_reference}"
-
- expect(issue.reload).to be_open
- end
- end
- end
-end
diff --git a/spec/support/shared_examples/services/base_helm_service_shared_examples.rb b/spec/support/shared_examples/services/base_helm_service_shared_examples.rb
index fa76b95f768..19f5334b4b2 100644
--- a/spec/support/shared_examples/services/base_helm_service_shared_examples.rb
+++ b/spec/support/shared_examples/services/base_helm_service_shared_examples.rb
@@ -11,20 +11,10 @@ shared_examples 'logs kubernetes errors' do
}
end
- let(:logger_hash) do
- error_hash.merge(
- exception: error_name,
- message: error_message,
- backtrace: instance_of(Array)
- )
- end
-
it 'logs into kubernetes.log and Sentry' do
- expect(service.send(:logger)).to receive(:error).with(hash_including(logger_hash))
-
- expect(Gitlab::Sentry).to receive(:track_acceptable_exception).with(
+ expect(Gitlab::ErrorTracking).to receive(:track_exception).with(
error,
- extra: hash_including(error_hash)
+ hash_including(error_hash)
)
service.execute
diff --git a/spec/support/sidekiq.rb b/spec/support/sidekiq.rb
index 246efedc7e5..a6d6d5fc6e1 100644
--- a/spec/support/sidekiq.rb
+++ b/spec/support/sidekiq.rb
@@ -1,31 +1,5 @@
# frozen_string_literal: true
-require 'sidekiq/testing'
-
-# If Sidekiq::Testing.inline! is used, SQL transactions done inside
-# Sidekiq worker are included in the SQL query limit (in a real
-# deployment sidekiq worker is executed separately). To avoid
-# increasing SQL limit counter, the request is marked as whitelisted
-# during Sidekiq block
-class DisableQueryLimit
- def call(worker_instance, msg, queue)
- transaction = Gitlab::QueryLimiting::Transaction.current
-
- if !transaction.respond_to?(:whitelisted) || transaction.whitelisted
- yield
- else
- transaction.whitelisted = true
- yield
- transaction.whitelisted = false
- end
- end
-end
-
-Sidekiq::Testing.server_middleware do |chain|
- chain.add Gitlab::SidekiqStatus::ServerMiddleware
- chain.add DisableQueryLimit
-end
-
RSpec.configure do |config|
config.around(:each, :sidekiq) do |example|
Sidekiq::Worker.clear_all
diff --git a/spec/support/sidekiq_middleware.rb b/spec/support/sidekiq_middleware.rb
new file mode 100644
index 00000000000..f6694713101
--- /dev/null
+++ b/spec/support/sidekiq_middleware.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+require 'sidekiq/testing'
+
+# If Sidekiq::Testing.inline! is used, SQL transactions done inside
+# Sidekiq worker are included in the SQL query limit (in a real
+# deployment sidekiq worker is executed separately). To avoid
+# increasing SQL limit counter, the request is marked as whitelisted
+# during Sidekiq block
+class DisableQueryLimit
+ def call(worker_instance, msg, queue)
+ transaction = Gitlab::QueryLimiting::Transaction.current
+
+ if !transaction.respond_to?(:whitelisted) || transaction.whitelisted
+ yield
+ else
+ transaction.whitelisted = true
+ yield
+ transaction.whitelisted = false
+ end
+ end
+end
+
+Sidekiq::Testing.server_middleware do |chain|
+ chain.add Gitlab::SidekiqStatus::ServerMiddleware
+ chain.add DisableQueryLimit
+end
diff --git a/spec/support/webmock.rb b/spec/support/webmock.rb
index 32b88edc2df..57acc3b63b1 100644
--- a/spec/support/webmock.rb
+++ b/spec/support/webmock.rb
@@ -8,7 +8,11 @@ def webmock_allowed_hosts
if ENV.key?('ELASTIC_URL')
hosts << URI.parse(ENV['ELASTIC_URL']).host
end
- end.uniq
+
+ if Gitlab.config.webpack&.dev_server&.enabled
+ hosts << Gitlab.config.webpack.dev_server.host
+ end
+ end.compact.uniq
end
WebMock.disable_net_connect!(allow_localhost: true, allow: webmock_allowed_hosts)
diff --git a/spec/tasks/gitlab/generate_sample_prometheus_data_spec.rb b/spec/tasks/gitlab/generate_sample_prometheus_data_spec.rb
new file mode 100644
index 00000000000..72e61f5c524
--- /dev/null
+++ b/spec/tasks/gitlab/generate_sample_prometheus_data_spec.rb
@@ -0,0 +1,34 @@
+# frozen_string_literal: true
+
+require 'rake_helper'
+
+describe 'gitlab:generate_sample_prometheus_data rake task' do
+ let(:cluster) { create(:cluster, :provided_by_user, :project) }
+ let(:environment) { create(:environment, project: cluster.project) }
+ let(:sample_query_file) { File.join(Rails.root, Metrics::SampleMetricsService::DIRECTORY, 'test_query_result.yml') }
+ let!(:metric) { create(:prometheus_metric, project: cluster.project, identifier: 'test_query_result') }
+
+ around do |example|
+ example.run
+ ensure
+ FileUtils.rm(sample_query_file)
+ end
+
+ it 'creates the file correctly' do
+ Rake.application.rake_require 'tasks/gitlab/generate_sample_prometheus_data'
+ allow(Environment).to receive(:find).and_return(environment)
+ allow(environment).to receive_message_chain(:prometheus_adapter, :prometheus_client, :query_range) { sample_query_result }
+ run_rake_task('gitlab:generate_sample_prometheus_data', [environment.id])
+
+ expect(File.exist?(sample_query_file)).to be true
+
+ query_file_content = YAML.load_file(sample_query_file)
+
+ expect(query_file_content).to eq(sample_query_result)
+ end
+end
+
+def sample_query_result
+ file = File.join(Rails.root, 'spec/fixtures/gitlab/sample_metrics', 'sample_metric_query_result.yml')
+ YAML.load_file(File.expand_path(file, __dir__))
+end
diff --git a/spec/tasks/gitlab/import_export/import_rake_spec.rb b/spec/tasks/gitlab/import_export/import_rake_spec.rb
new file mode 100644
index 00000000000..18b89912b9f
--- /dev/null
+++ b/spec/tasks/gitlab/import_export/import_rake_spec.rb
@@ -0,0 +1,112 @@
+# frozen_string_literal: true
+
+require 'rake_helper'
+
+describe 'gitlab:import_export:import rake task', :sidekiq do
+ let(:username) { 'root' }
+ let(:namespace_path) { username }
+ let!(:user) { create(:user, username: username) }
+ let(:task_params) { [username, namespace_path, project_name, archive_path] }
+ let(:project) { Project.find_by_full_path("#{namespace_path}/#{project_name}") }
+
+ before do
+ Rake.application.rake_require('tasks/gitlab/import_export/import')
+ allow(Settings.uploads.object_store).to receive(:[]=).and_call_original
+ allow_any_instance_of(GitlabProjectImport).to receive(:exit)
+ .and_raise(RuntimeError, 'exit not handled')
+ end
+
+ around do |example|
+ old_direct_upload_setting = Settings.uploads.object_store['direct_upload']
+ old_background_upload_setting = Settings.uploads.object_store['background_upload']
+
+ Settings.uploads.object_store['direct_upload'] = true
+ Settings.uploads.object_store['background_upload'] = true
+
+ example.run
+
+ Settings.uploads.object_store['direct_upload'] = old_direct_upload_setting
+ Settings.uploads.object_store['background_upload'] = old_background_upload_setting
+ end
+
+ subject { run_rake_task('gitlab:import_export:import', task_params) }
+
+ context 'when project import is valid' do
+ let(:project_name) { 'import_rake_test_project' }
+ let(:archive_path) { 'spec/fixtures/gitlab/import_export/lightweight_project_export.tar.gz' }
+
+ it 'performs project import successfully' do
+ expect { subject }.to output(/Done!/).to_stdout
+ expect { subject }.not_to raise_error
+
+ expect(project.merge_requests.count).to be > 0
+ expect(project.issues.count).to be > 0
+ expect(project.milestones.count).to be > 0
+ expect(project.import_state.status).to eq('finished')
+ end
+
+ it 'disables direct & background upload only during project creation' do
+ expect_next_instance_of(Projects::GitlabProjectsImportService) do |service|
+ expect(service).to receive(:execute).and_wrap_original do |m|
+ expect(Settings.uploads.object_store['background_upload']).to eq(false)
+ expect(Settings.uploads.object_store['direct_upload']).to eq(false)
+
+ m.call
+ end
+ end
+
+ expect_next_instance_of(GitlabProjectImport) do |importer|
+ expect(importer).to receive(:execute_sidekiq_job).and_wrap_original do |m|
+ expect(Settings.uploads.object_store['background_upload']).to eq(true)
+ expect(Settings.uploads.object_store['direct_upload']).to eq(true)
+ expect(Settings.uploads.object_store).not_to receive(:[]=).with('backgroud_upload', false)
+ expect(Settings.uploads.object_store).not_to receive(:[]=).with('direct_upload', false)
+
+ m.call
+ end
+ end
+
+ subject
+ end
+ end
+
+ context 'when project import is invalid' do
+ let(:project_name) { 'import_rake_invalid_test_project' }
+ let(:archive_path) { 'spec/fixtures/gitlab/import_export/corrupted_project_export.tar.gz' }
+ let(:not_imported_message) { /Total number of not imported relations: 1/ }
+ let(:error) { /Validation failed: Notes is invalid/ }
+
+ context 'when import_graceful_failures feature flag is enabled' do
+ before do
+ stub_feature_flags(import_graceful_failures: true)
+ end
+
+ it 'performs project import successfully' do
+ expect { subject }.to output(not_imported_message).to_stdout
+ expect { subject }.not_to raise_error
+
+ expect(project.merge_requests).to be_empty
+ expect(project.import_state.last_error).to be_nil
+ expect(project.import_state.status).to eq('finished')
+ end
+ end
+
+ context 'when import_graceful_failures feature flag is disabled' do
+ before do
+ stub_feature_flags(import_graceful_failures: false)
+ end
+
+ it 'fails project import with an error' do
+ # Catch exit call, and raise exception instead
+ expect_any_instance_of(GitlabProjectImport).to receive(:exit)
+ .with(1).and_raise(SystemExit)
+
+ expect { subject }.to raise_error(SystemExit).and output(error).to_stdout
+
+ expect(project.merge_requests).to be_empty
+ expect(project.import_state.last_error).to match(error)
+ expect(project.import_state.status).to eq('failed')
+ end
+ end
+ end
+end
diff --git a/spec/uploaders/file_mover_spec.rb b/spec/uploaders/file_mover_spec.rb
index c4a315b3fd6..9f053f03b0e 100644
--- a/spec/uploaders/file_mover_spec.rb
+++ b/spec/uploaders/file_mover_spec.rb
@@ -22,6 +22,7 @@ describe FileMover do
end
let(:file) { fixture_file_upload('spec/fixtures/banana_sample.gif') }
+
subject { described_class.new(temp_file_path, from_model: user, to_model: snippet).execute }
describe '#execute' do
diff --git a/spec/uploaders/object_storage_spec.rb b/spec/uploaders/object_storage_spec.rb
index 37b107ee36e..2f2ed28891a 100644
--- a/spec/uploaders/object_storage_spec.rb
+++ b/spec/uploaders/object_storage_spec.rb
@@ -151,7 +151,9 @@ describe ObjectStorage do
describe 'fails' do
it 'is handled gracefully' do
store = uploader.object_store
- expect_any_instance_of(Upload).to receive(:save!).and_raise("An error")
+ expect_next_instance_of(Upload) do |instance|
+ expect(instance).to receive(:save!).and_raise("An error")
+ end
expect { subject }.to raise_error("An error")
expect(uploader.exists?).to be_truthy
diff --git a/spec/validators/addressable_url_validator_spec.rb b/spec/validators/addressable_url_validator_spec.rb
index 6927a1f67a1..e8a44f7a12a 100644
--- a/spec/validators/addressable_url_validator_spec.rb
+++ b/spec/validators/addressable_url_validator_spec.rb
@@ -4,6 +4,7 @@ require 'spec_helper'
describe AddressableUrlValidator do
let!(:badge) { build(:badge, link_url: 'http://www.example.com') }
+
subject { validator.validate(badge) }
include_examples 'url validator examples', described_class::DEFAULT_OPTIONS[:schemes]
diff --git a/spec/validators/devise_email_validator_spec.rb b/spec/validators/devise_email_validator_spec.rb
index 7860b659bd3..1dbf3f66cfd 100644
--- a/spec/validators/devise_email_validator_spec.rb
+++ b/spec/validators/devise_email_validator_spec.rb
@@ -4,6 +4,7 @@ require 'spec_helper'
describe DeviseEmailValidator do
let!(:user) { build(:user, public_email: 'test@example.com') }
+
subject { validator.validate(user) }
describe 'validations' do
diff --git a/spec/validators/qualified_domain_array_validator_spec.rb b/spec/validators/qualified_domain_array_validator_spec.rb
index 6beb4c67f6f..ab6cca4b671 100644
--- a/spec/validators/qualified_domain_array_validator_spec.rb
+++ b/spec/validators/qualified_domain_array_validator_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
describe QualifiedDomainArrayValidator do
- class TestClass
+ class QualifiedDomainArrayValidatorTestClass
include ActiveModel::Validations
attr_accessor :domain_array
@@ -14,7 +14,7 @@ describe QualifiedDomainArrayValidator do
end
let!(:record) do
- TestClass.new(['gitlab.com'])
+ QualifiedDomainArrayValidatorTestClass.new(['gitlab.com'])
end
subject { validator.validate(record) }
diff --git a/spec/views/admin/sessions/new.html.haml_spec.rb b/spec/views/admin/sessions/new.html.haml_spec.rb
index 57255748988..b3208296c80 100644
--- a/spec/views/admin/sessions/new.html.haml_spec.rb
+++ b/spec/views/admin/sessions/new.html.haml_spec.rb
@@ -3,29 +3,44 @@
require 'spec_helper'
describe 'admin/sessions/new.html.haml' do
- context 'admin has password set' do
- before do
- allow(view).to receive(:password_authentication_enabled_for_web?).and_return(true)
- end
+ let(:user) { create(:admin) }
+
+ before do
+ allow(view).to receive(:current_user).and_return(user)
+ allow(view).to receive(:omniauth_enabled?).and_return(false)
+ end
- it "shows enter password form" do
+ context 'internal admin user' do
+ it 'shows enter password form' do
render
expect(rendered).to have_css('#login-pane.active')
expect(rendered).to have_selector('input[name="password"]')
end
+
+ it 'warns authentication not possible if password not set' do
+ allow(user).to receive(:require_password_creation_for_web?).and_return(true)
+
+ render
+
+ expect(rendered).not_to have_css('#login-pane')
+ expect(rendered).to have_content _('No authentication methods configured.')
+ end
end
- context 'admin has no password set' do
+ context 'omniauth authentication enabled' do
before do
- allow(view).to receive(:password_authentication_enabled_for_web?).and_return(false)
+ allow(view).to receive(:omniauth_enabled?).and_return(true)
+ allow(view).to receive(:button_based_providers_enabled?).and_return(true)
end
- it "warns authentication not possible" do
+ it 'shows omniauth form' do
render
- expect(rendered).not_to have_css('#login-pane')
- expect(rendered).to have_content 'No authentication methods configured'
+ expect(rendered).to have_css('.omniauth-container')
+ expect(rendered).to have_content _('Sign in with')
+
+ expect(rendered).not_to have_content _('No authentication methods configured.')
end
end
end
diff --git a/spec/views/import/gitlab_projects/new.html.haml_spec.rb b/spec/views/import/gitlab_projects/new.html.haml_spec.rb
new file mode 100644
index 00000000000..953fcc6dc51
--- /dev/null
+++ b/spec/views/import/gitlab_projects/new.html.haml_spec.rb
@@ -0,0 +1,31 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe 'import/gitlab_projects/new.html.haml' do
+ include Devise::Test::ControllerHelpers
+
+ let(:user) { build_stubbed(:user, namespace: build_stubbed(:namespace)) }
+
+ before do
+ allow(view).to receive(:current_user).and_return(user)
+ end
+
+ context 'when the user has no other namespaces' do
+ it 'shows a namespace_id hidden field tag' do
+ render
+
+ expect(rendered).to have_css('input[name="namespace_id"]', count: 1, visible: false)
+ end
+ end
+
+ context 'when the user can select other namespaces' do
+ it 'shows a namespace_id select' do
+ allow(user).to receive(:can_select_namespace?).and_return(true)
+
+ render
+
+ expect(rendered).to have_select('namespace_id', count: 1)
+ end
+ end
+end
diff --git a/spec/views/layouts/application.html.haml_spec.rb b/spec/views/layouts/application.html.haml_spec.rb
new file mode 100644
index 00000000000..4270bbf1924
--- /dev/null
+++ b/spec/views/layouts/application.html.haml_spec.rb
@@ -0,0 +1,48 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe 'layouts/application' do
+ let(:user) { create(:user) }
+
+ before do
+ allow(view).to receive(:current_application_settings).and_return(Gitlab::CurrentSettings.current_application_settings)
+ allow(view).to receive(:experiment_enabled?).and_return(false)
+ allow(view).to receive(:session).and_return({})
+ allow(view).to receive(:user_signed_in?).and_return(true)
+ allow(view).to receive(:current_user).and_return(user)
+ allow(view).to receive(:current_user_mode).and_return(Gitlab::Auth::CurrentUserMode.new(user))
+ end
+
+ context 'body data elements for pageview context' do
+ let(:body_data) do
+ {
+ body_data_page: 'projects:issues:show',
+ body_data_page_type_id: '1',
+ body_data_project_id: '2',
+ body_data_namespace_id: '3'
+ }
+ end
+
+ before do
+ allow(view).to receive(:body_data).and_return(body_data)
+ render
+ end
+
+ it 'includes the body element page' do
+ expect(rendered).to include('data-page="projects:issues:show"')
+ end
+
+ it 'includes the body element page_type_id' do
+ expect(rendered).to include('data-page-type-id="1"')
+ end
+
+ it 'includes the body element project_id' do
+ expect(rendered).to include('data-project-id="2"')
+ end
+
+ it 'includes the body element namespace_id' do
+ expect(rendered).to include('data-namespace-id="3"')
+ end
+ end
+end
diff --git a/spec/views/layouts/header/_new_dropdown.haml_spec.rb b/spec/views/layouts/header/_new_dropdown.haml_spec.rb
index 26e429ac5d0..1a04ffed103 100644
--- a/spec/views/layouts/header/_new_dropdown.haml_spec.rb
+++ b/spec/views/layouts/header/_new_dropdown.haml_spec.rb
@@ -126,6 +126,16 @@ describe 'layouts/header/_new_dropdown' do
expect(rendered).to have_link('New snippet', href: new_snippet_path)
end
+
+ context 'when the user is not allowed to create snippets' do
+ let(:user) { create(:user, :external)}
+
+ it 'has no "New snippet" link' do
+ render
+
+ expect(rendered).not_to have_link('New snippet', href: new_snippet_path)
+ end
+ end
end
def stub_current_user(current_user)
diff --git a/spec/views/projects/commits/_commit.html.haml_spec.rb b/spec/views/projects/commits/_commit.html.haml_spec.rb
index 669bb596de5..1c01a7f9a9c 100644
--- a/spec/views/projects/commits/_commit.html.haml_spec.rb
+++ b/spec/views/projects/commits/_commit.html.haml_spec.rb
@@ -3,6 +3,7 @@
require 'spec_helper'
describe 'projects/commits/_commit.html.haml' do
+ let(:template) { 'projects/commits/commit.html.haml' }
let(:project) { create(:project, :repository) }
let(:commit) { project.repository.commit(ref) }
@@ -14,7 +15,7 @@ describe 'projects/commits/_commit.html.haml' do
let(:ref) { GpgHelpers::SIGNED_COMMIT_SHA }
it 'does not display a loading spinner for GPG status' do
- render partial: 'projects/commits/commit', locals: {
+ render partial: template, locals: {
project: project,
ref: ref,
commit: commit
@@ -50,7 +51,7 @@ describe 'projects/commits/_commit.html.haml' do
end
it 'does not display a ci status icon' do
- render partial: 'projects/commits/commit', locals: {
+ render partial: template, locals: {
project: project,
ref: ref,
commit: commit
@@ -66,7 +67,7 @@ describe 'projects/commits/_commit.html.haml' do
end
it 'does display a ci status icon when pipelines are enabled' do
- render partial: 'projects/commits/commit', locals: {
+ render partial: template, locals: {
project: project,
ref: ref,
commit: commit
diff --git a/spec/views/projects/edit.html.haml_spec.rb b/spec/views/projects/edit.html.haml_spec.rb
index 40927a22dc4..8005b549838 100644
--- a/spec/views/projects/edit.html.haml_spec.rb
+++ b/spec/views/projects/edit.html.haml_spec.rb
@@ -53,6 +53,7 @@ describe 'projects/edit' do
render
expect(rendered).to have_content('Remove fork relationship')
+ expect(rendered).to have_link(source_project.full_name, href: project_path(source_project))
end
it 'hides the fork relationship settings from an unauthorized user' do
@@ -78,7 +79,7 @@ describe 'projects/edit' do
render
expect(rendered).to have_content('Remove fork relationship')
- expect(rendered).to have_content(source_project.full_name)
+ expect(rendered).to have_link(source_project.full_name, href: project_path(source_project))
end
end
end
diff --git a/spec/views/projects/pages_domains/show.html.haml_spec.rb b/spec/views/projects/pages_domains/show.html.haml_spec.rb
index 331bfe63f28..51c7a08fe96 100644
--- a/spec/views/projects/pages_domains/show.html.haml_spec.rb
+++ b/spec/views/projects/pages_domains/show.html.haml_spec.rb
@@ -8,6 +8,7 @@ describe 'projects/pages_domains/show' do
before do
assign(:project, project)
assign(:domain, domain)
+ stub_pages_setting(external_https: true)
end
context 'when auto_ssl is enabled' do
diff --git a/spec/views/projects/services/edit.html.haml_spec.rb b/spec/views/projects/services/edit.html.haml_spec.rb
new file mode 100644
index 00000000000..12e1cda2c00
--- /dev/null
+++ b/spec/views/projects/services/edit.html.haml_spec.rb
@@ -0,0 +1,31 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe 'projects/services/edit' do
+ let(:service) { create(:drone_ci_service, project: project) }
+ let(:project) { create(:project) }
+
+ before do
+ assign :project, project
+ assign :service, service
+ end
+
+ it do
+ render
+
+ expect(rendered).not_to have_text('Recent Deliveries')
+ end
+
+ context 'service using WebHooks' do
+ before do
+ assign(:web_hook_logs, [])
+ end
+
+ it do
+ render
+
+ expect(rendered).to have_text('Recent Deliveries')
+ end
+ end
+end
diff --git a/spec/views/projects/show.html.haml_spec.rb b/spec/views/projects/show.html.haml_spec.rb
index 4f5f0f0285c..c28260f422c 100644
--- a/spec/views/projects/show.html.haml_spec.rb
+++ b/spec/views/projects/show.html.haml_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-describe 'projects/show' do
+describe 'projects/show.html.haml' do
include Devise::Test::ControllerHelpers
let(:user) { create(:admin) }
diff --git a/spec/views/projects/tags/index.html.haml_spec.rb b/spec/views/projects/tags/index.html.haml_spec.rb
index 66be085c290..08fbada9c9c 100644
--- a/spec/views/projects/tags/index.html.haml_spec.rb
+++ b/spec/views/projects/tags/index.html.haml_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-describe 'projects/tags/index' do
+describe 'projects/tags/index.html.haml' do
let(:project) { create(:project, :repository) }
let(:tags) { TagsFinder.new(project.repository, {}).execute }
let(:git_tag) { project.repository.tags.last }
diff --git a/spec/views/search/_results.html.haml_spec.rb b/spec/views/search/_results.html.haml_spec.rb
index 177ade3b700..628d2e10f93 100644
--- a/spec/views/search/_results.html.haml_spec.rb
+++ b/spec/views/search/_results.html.haml_spec.rb
@@ -16,7 +16,7 @@ describe 'search/_results' do
it 'displays the page size' do
render
- expect(rendered).to have_content('Showing 1 - 2 of 3 issues for "foo"')
+ expect(rendered).to have_content('Showing 1 - 2 of 3 issues for foo')
end
context 'when search results do not have a count' do
diff --git a/spec/workers/ci/archive_traces_cron_worker_spec.rb b/spec/workers/ci/archive_traces_cron_worker_spec.rb
index 01232e2a58b..fc700c15b10 100644
--- a/spec/workers/ci/archive_traces_cron_worker_spec.rb
+++ b/spec/workers/ci/archive_traces_cron_worker_spec.rb
@@ -63,7 +63,7 @@ describe Ci::ArchiveTracesCronWorker do
let!(:build) { create(:ci_build, :success, :trace_live, finished_at: finished_at) }
before do
- allow(Gitlab::Sentry).to receive(:track_exception)
+ allow(Gitlab::ErrorTracking).to receive(:track_and_raise_for_dev_exception)
allow_any_instance_of(Gitlab::Ci::Trace).to receive(:archive!).and_raise('Unexpected error')
end
diff --git a/spec/workers/clusters/applications/activate_service_worker_spec.rb b/spec/workers/clusters/applications/activate_service_worker_spec.rb
new file mode 100644
index 00000000000..09f4c536edf
--- /dev/null
+++ b/spec/workers/clusters/applications/activate_service_worker_spec.rb
@@ -0,0 +1,52 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Clusters::Applications::ActivateServiceWorker, '#perform' do
+ context 'cluster exists' do
+ describe 'prometheus service' do
+ let(:service_name) { 'prometheus' }
+
+ before do
+ create(:clusters_applications_prometheus, :installed, cluster: cluster)
+ end
+
+ context 'cluster type: group' do
+ let(:group) { create(:group) }
+ let(:project) { create(:project, group: group) }
+ let(:cluster) { create(:cluster_for_group, :with_installed_helm, groups: [group]) }
+
+ it 'ensures Prometheus service is activated' do
+ expect { described_class.new.perform(cluster.id, service_name) }
+ .to change { project.reload.prometheus_service&.active }.from(nil).to(true)
+ end
+ end
+
+ context 'cluster type: project' do
+ let(:project) { create(:project) }
+ let(:cluster) { create(:cluster, :with_installed_helm, projects: [project]) }
+
+ it 'ensures Prometheus service is activated' do
+ expect { described_class.new.perform(cluster.id, service_name) }
+ .to change { project.reload.prometheus_service&.active }.from(nil).to(true)
+ end
+ end
+
+ context 'cluster type: instance' do
+ let(:project) { create(:project) }
+ let(:cluster) { create(:cluster, :instance) }
+
+ it 'ensures Prometheus service is activated' do
+ expect { described_class.new.perform(cluster.id, service_name) }
+ .to change { project.reload.prometheus_service&.active }.from(nil).to(true)
+ end
+ end
+ end
+ end
+
+ context 'cluster does not exist' do
+ it 'does not raise Record Not Found error' do
+ expect { described_class.new.perform(0, 'ignored in this context') }.not_to raise_error(ActiveRecord::RecordNotFound)
+ end
+ end
+end
diff --git a/spec/workers/clusters/applications/deactivate_service_worker_spec.rb b/spec/workers/clusters/applications/deactivate_service_worker_spec.rb
new file mode 100644
index 00000000000..809843a1bc8
--- /dev/null
+++ b/spec/workers/clusters/applications/deactivate_service_worker_spec.rb
@@ -0,0 +1,68 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Clusters::Applications::DeactivateServiceWorker, '#perform' do
+ context 'cluster exists' do
+ describe 'prometheus service' do
+ let(:service_name) { 'prometheus' }
+ let!(:application) { create(:clusters_applications_prometheus, :installed, cluster: cluster) }
+
+ context 'prometheus service exists' do
+ let!(:prometheus_service) { create(:prometheus_service, project: project, manual_configuration: false, active: true) }
+
+ before do
+ application.delete # prometheus service before save synchronises active stated with application existance.
+ end
+
+ context 'cluster type: group' do
+ let(:group) { create(:group) }
+ let(:project) { create(:project, group: group) }
+ let(:cluster) { create(:cluster_for_group, :with_installed_helm, groups: [group]) }
+
+ it 'ensures Prometheus service is deactivated' do
+ expect { described_class.new.perform(cluster.id, service_name) }
+ .to change { prometheus_service.reload.active }.from(true).to(false)
+ end
+ end
+
+ context 'cluster type: project' do
+ let(:project) { create(:project) }
+ let(:cluster) { create(:cluster, :with_installed_helm, projects: [project]) }
+
+ it 'ensures Prometheus service is deactivated' do
+ expect { described_class.new.perform(cluster.id, service_name) }
+ .to change { prometheus_service.reload.active }.from(true).to(false)
+ end
+ end
+
+ context 'cluster type: instance' do
+ let(:project) { create(:project) }
+ let(:cluster) { create(:cluster, :with_installed_helm, :instance) }
+
+ it 'ensures Prometheus service is deactivated' do
+ expect { described_class.new.perform(cluster.id, service_name) }
+ .to change { prometheus_service.reload.active }.from(true).to(false)
+ end
+ end
+ end
+
+ context 'prometheus service does not exist' do
+ context 'cluster type: project' do
+ let(:project) { create(:project) }
+ let(:cluster) { create(:cluster, :with_installed_helm, projects: [project]) }
+
+ it 'does not raise errors' do
+ expect { described_class.new.perform(cluster.id, service_name) }.not_to raise_error
+ end
+ end
+ end
+ end
+ end
+
+ context 'cluster does not exist' do
+ it 'raises Record Not Found error' do
+ expect { described_class.new.perform(0, 'ignored in this context') }.to raise_error(ActiveRecord::RecordNotFound)
+ end
+ end
+end
diff --git a/spec/workers/clusters/cleanup/app_worker_spec.rb b/spec/workers/clusters/cleanup/app_worker_spec.rb
new file mode 100644
index 00000000000..29c00db8079
--- /dev/null
+++ b/spec/workers/clusters/cleanup/app_worker_spec.rb
@@ -0,0 +1,41 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Clusters::Cleanup::AppWorker do
+ describe '#perform' do
+ subject { worker_instance.perform(cluster.id) }
+
+ let!(:worker_instance) { described_class.new }
+ let!(:cluster) { create(:cluster, :project, :cleanup_uninstalling_applications, provider_type: :gcp) }
+ let!(:logger) { worker_instance.send(:logger) }
+
+ it_behaves_like 'cluster cleanup worker base specs'
+
+ context 'when exceeded the execution limit' do
+ subject { worker_instance.perform(cluster.id, worker_instance.send(:execution_limit)) }
+
+ let(:worker_instance) { described_class.new }
+ let(:logger) { worker_instance.send(:logger) }
+ let!(:helm) { create(:clusters_applications_helm, :installed, cluster: cluster) }
+ let!(:ingress) { create(:clusters_applications_ingress, :scheduled, cluster: cluster) }
+
+ it 'logs the error' do
+ expect(logger).to receive(:error)
+ .with(
+ hash_including(
+ exception: 'ClusterCleanupMethods::ExceededExecutionLimitError',
+ cluster_id: kind_of(Integer),
+ class_name: described_class.name,
+ applications: "helm:installed,ingress:scheduled",
+ cleanup_status: cluster.cleanup_status_name,
+ event: :failed_to_remove_cluster_and_resources,
+ message: "exceeded execution limit of 10 tries"
+ )
+ )
+
+ subject
+ end
+ end
+ end
+end
diff --git a/spec/workers/clusters/cleanup/project_namespace_worker_spec.rb b/spec/workers/clusters/cleanup/project_namespace_worker_spec.rb
new file mode 100644
index 00000000000..8b6f22e9a61
--- /dev/null
+++ b/spec/workers/clusters/cleanup/project_namespace_worker_spec.rb
@@ -0,0 +1,52 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Clusters::Cleanup::ProjectNamespaceWorker do
+ describe '#perform' do
+ context 'when cluster.cleanup_status is cleanup_removing_project_namespaces' do
+ let!(:cluster) { create(:cluster, :with_environments, :cleanup_removing_project_namespaces) }
+ let!(:worker_instance) { described_class.new }
+ let!(:logger) { worker_instance.send(:logger) }
+
+ it_behaves_like 'cluster cleanup worker base specs'
+
+ it 'calls Clusters::Cleanup::ProjectNamespaceService' do
+ expect_any_instance_of(Clusters::Cleanup::ProjectNamespaceService).to receive(:execute).once
+
+ subject.perform(cluster.id)
+ end
+
+ context 'when exceeded the execution limit' do
+ subject { worker_instance.perform(cluster.id, worker_instance.send(:execution_limit))}
+
+ it 'logs the error' do
+ expect(logger).to receive(:error)
+ .with(
+ hash_including(
+ exception: 'ClusterCleanupMethods::ExceededExecutionLimitError',
+ cluster_id: kind_of(Integer),
+ class_name: described_class.name,
+ applications: "",
+ cleanup_status: cluster.cleanup_status_name,
+ event: :failed_to_remove_cluster_and_resources,
+ message: "exceeded execution limit of 10 tries"
+ )
+ )
+
+ subject
+ end
+ end
+ end
+
+ context 'when cluster.cleanup_status is not cleanup_removing_project_namespaces' do
+ let!(:cluster) { create(:cluster, :with_environments) }
+
+ it 'does not call Clusters::Cleanup::ProjectNamespaceService' do
+ expect(Clusters::Cleanup::ProjectNamespaceService).not_to receive(:new)
+
+ subject.perform(cluster.id)
+ end
+ end
+ end
+end
diff --git a/spec/workers/clusters/cleanup/service_account_worker_spec.rb b/spec/workers/clusters/cleanup/service_account_worker_spec.rb
new file mode 100644
index 00000000000..9af53dd63c1
--- /dev/null
+++ b/spec/workers/clusters/cleanup/service_account_worker_spec.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Clusters::Cleanup::ServiceAccountWorker do
+ describe '#perform' do
+ let!(:cluster) { create(:cluster, :cleanup_removing_service_account) }
+
+ context 'when cluster.cleanup_status is cleanup_removing_service_account' do
+ it 'calls Clusters::Cleanup::ServiceAccountService' do
+ expect_any_instance_of(Clusters::Cleanup::ServiceAccountService).to receive(:execute).once
+
+ subject.perform(cluster.id)
+ end
+ end
+
+ context 'when cluster.cleanup_status is not cleanup_removing_service_account' do
+ let!(:cluster) { create(:cluster, :with_environments) }
+
+ it 'does not call Clusters::Cleanup::ServiceAccountService' do
+ expect(Clusters::Cleanup::ServiceAccountService).not_to receive(:new)
+
+ subject.perform(cluster.id)
+ end
+ end
+ end
+end
diff --git a/spec/workers/delete_merged_branches_worker_spec.rb b/spec/workers/delete_merged_branches_worker_spec.rb
index a218ca921d9..8c983859e36 100644
--- a/spec/workers/delete_merged_branches_worker_spec.rb
+++ b/spec/workers/delete_merged_branches_worker_spec.rb
@@ -8,8 +8,8 @@ describe DeleteMergedBranchesWorker do
let(:project) { create(:project, :repository) }
describe "#perform" do
- it "calls DeleteMergedBranchesService" do
- expect_any_instance_of(DeleteMergedBranchesService).to receive(:execute).and_return(true)
+ it "delegates to Branches::DeleteMergedService" do
+ expect_any_instance_of(::Branches::DeleteMergedService).to receive(:execute).and_return(true)
worker.perform(project.id, project.owner.id)
end
diff --git a/spec/workers/expire_job_cache_worker_spec.rb b/spec/workers/expire_job_cache_worker_spec.rb
index 6ac285ca944..eeab304d926 100644
--- a/spec/workers/expire_job_cache_worker_spec.rb
+++ b/spec/workers/expire_job_cache_worker_spec.rb
@@ -5,6 +5,7 @@ require 'spec_helper'
describe ExpireJobCacheWorker do
set(:pipeline) { create(:ci_empty_pipeline) }
let(:project) { pipeline.project }
+
subject { described_class.new }
describe '#perform' do
diff --git a/spec/workers/expire_pipeline_cache_worker_spec.rb b/spec/workers/expire_pipeline_cache_worker_spec.rb
index 5652f5e8685..e162a227a66 100644
--- a/spec/workers/expire_pipeline_cache_worker_spec.rb
+++ b/spec/workers/expire_pipeline_cache_worker_spec.rb
@@ -6,6 +6,7 @@ describe ExpirePipelineCacheWorker do
let(:user) { create(:user) }
let(:project) { create(:project) }
let(:pipeline) { create(:ci_pipeline, project: project) }
+
subject { described_class.new }
describe '#perform' do
diff --git a/spec/workers/hashed_storage/project_migrate_worker_spec.rb b/spec/workers/hashed_storage/project_migrate_worker_spec.rb
index f266c7dbe8c..4b1b5f84fd3 100644
--- a/spec/workers/hashed_storage/project_migrate_worker_spec.rb
+++ b/spec/workers/hashed_storage/project_migrate_worker_spec.rb
@@ -5,13 +5,13 @@ require 'spec_helper'
describe HashedStorage::ProjectMigrateWorker, :clean_gitlab_redis_shared_state do
include ExclusiveLeaseHelpers
- describe '#perform' do
- let(:project) { create(:project, :empty_repo, :legacy_storage) }
- let(:lease_key) { "project_migrate_hashed_storage_worker:#{project.id}" }
- let(:lease_timeout) { described_class::LEASE_TIMEOUT }
- let(:migration_service) { ::Projects::HashedStorage::MigrationService }
+ let(:migration_service) { ::Projects::HashedStorage::MigrationService }
+ let(:lease_timeout) { described_class::LEASE_TIMEOUT }
+ describe '#perform' do
it 'skips when project no longer exists' do
+ stub_exclusive_lease(lease_key(-1), 'uuid', timeout: lease_timeout)
+
expect(migration_service).not_to receive(:new)
subject.perform(-1)
@@ -19,32 +19,67 @@ describe HashedStorage::ProjectMigrateWorker, :clean_gitlab_redis_shared_state d
it 'skips when project is pending delete' do
pending_delete_project = create(:project, :empty_repo, pending_delete: true)
+ stub_exclusive_lease(lease_key(pending_delete_project.id), 'uuid', timeout: lease_timeout)
expect(migration_service).not_to receive(:new)
subject.perform(pending_delete_project.id)
end
- it 'delegates migration to service class when we have exclusive lease' do
- stub_exclusive_lease(lease_key, 'uuid', timeout: lease_timeout)
+ it 'skips when project is already migrated' do
+ migrated_project = create(:project, :empty_repo)
+ stub_exclusive_lease(lease_key(migrated_project.id), 'uuid', timeout: lease_timeout)
+
+ expect(migration_service).not_to receive(:new)
+
+ subject.perform(migrated_project.id)
+ end
+
+ context 'with exclusive lease available' do
+ it 'delegates migration to service class' do
+ project = create(:project, :empty_repo, :legacy_storage)
+ stub_exclusive_lease(lease_key(project.id), 'uuid', timeout: lease_timeout)
- service_spy = spy
+ service_spy = spy
- allow(migration_service)
- .to receive(:new).with(project, project.full_path, logger: subject.logger)
- .and_return(service_spy)
+ allow(migration_service)
+ .to receive(:new).with(project, project.full_path, logger: subject.logger)
+ .and_return(service_spy)
- subject.perform(project.id)
+ subject.perform(project.id)
- expect(service_spy).to have_received(:execute)
+ expect(service_spy).to have_received(:execute)
+ end
+
+ it 'delegates migration to service class with correct path in a partially migrated project' do
+ project = create(:project, :empty_repo, storage_version: 1)
+ stub_exclusive_lease(lease_key(project.id), 'uuid', timeout: lease_timeout)
+
+ service_spy = spy
+
+ allow(migration_service)
+ .to receive(:new).with(project, project.full_path, logger: subject.logger)
+ .and_return(service_spy)
+
+ subject.perform(project.id)
+
+ expect(service_spy).to have_received(:execute)
+ end
end
- it 'skips when it cant acquire the exclusive lease' do
- stub_exclusive_lease_taken(lease_key, timeout: lease_timeout)
+ context 'with exclusive lease taken' do
+ it 'skips when it cant acquire the exclusive lease' do
+ project = create(:project, :empty_repo, :legacy_storage)
+ stub_exclusive_lease_taken(lease_key(project.id), timeout: lease_timeout)
- expect(migration_service).not_to receive(:new)
+ expect(migration_service).not_to receive(:new)
- subject.perform(project.id)
+ subject.perform(project.id)
+ end
end
end
+
+ def lease_key(key)
+ "project_migrate_hashed_storage_worker:#{key}"
+ end
end
diff --git a/spec/workers/mail_scheduler/notification_service_worker_spec.rb b/spec/workers/mail_scheduler/notification_service_worker_spec.rb
index 0729c5f9ffb..14a9f0ed8b7 100644
--- a/spec/workers/mail_scheduler/notification_service_worker_spec.rb
+++ b/spec/workers/mail_scheduler/notification_service_worker_spec.rb
@@ -5,6 +5,7 @@ require 'spec_helper'
describe MailScheduler::NotificationServiceWorker do
let(:worker) { described_class.new }
let(:method) { 'new_key' }
+
set(:key) { create(:personal_key) }
def serialize(*args)
diff --git a/spec/workers/personal_access_tokens/expiring_worker_spec.rb b/spec/workers/personal_access_tokens/expiring_worker_spec.rb
new file mode 100644
index 00000000000..fcc09e2705c
--- /dev/null
+++ b/spec/workers/personal_access_tokens/expiring_worker_spec.rb
@@ -0,0 +1,41 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe PersonalAccessTokens::ExpiringWorker, type: :worker do
+ subject(:worker) { described_class.new }
+
+ describe '#perform' do
+ context 'when a token needs to be notified' do
+ let!(:pat) { create(:personal_access_token, expires_at: 5.days.from_now) }
+
+ it 'uses notification service to send the email' do
+ expect_next_instance_of(NotificationService) do |notification_service|
+ expect(notification_service).to receive(:access_token_about_to_expire).with(pat.user)
+ end
+
+ worker.perform
+ end
+
+ it 'marks the notification as delivered' do
+ expect { worker.perform }.to change { pat.reload.expire_notification_delivered }.from(false).to(true)
+ end
+ end
+
+ context 'when no tokens need to be notified' do
+ let!(:pat) { create(:personal_access_token, expires_at: 5.days.from_now, expire_notification_delivered: true) }
+
+ it "doesn't use notification service to send the email" do
+ expect_next_instance_of(NotificationService) do |notification_service|
+ expect(notification_service).not_to receive(:access_token_about_to_expire).with(pat.user)
+ end
+
+ worker.perform
+ end
+
+ it "doesn't change the notificationd delivered of the token" do
+ expect { worker.perform }.not_to change { pat.reload.expire_notification_delivered }
+ end
+ end
+ end
+end
diff --git a/spec/workers/pipeline_process_worker_spec.rb b/spec/workers/pipeline_process_worker_spec.rb
index ac677e3b555..8260d7ac320 100644
--- a/spec/workers/pipeline_process_worker_spec.rb
+++ b/spec/workers/pipeline_process_worker_spec.rb
@@ -8,7 +8,7 @@ describe PipelineProcessWorker do
let(:pipeline) { create(:ci_pipeline) }
it 'processes pipeline' do
- expect_any_instance_of(Ci::Pipeline).to receive(:process!)
+ expect_any_instance_of(Ci::ProcessPipelineService).to receive(:execute)
described_class.new.perform(pipeline.id)
end
@@ -17,7 +17,7 @@ describe PipelineProcessWorker do
let(:build) { create(:ci_build, pipeline: pipeline, name: 'my-build') }
it 'processes pipeline with a list of builds' do
- expect_any_instance_of(Ci::Pipeline).to receive(:process!)
+ expect_any_instance_of(Ci::ProcessPipelineService).to receive(:execute)
.with([build.id])
described_class.new.perform(pipeline.id, [build.id])
diff --git a/spec/workers/process_commit_worker_spec.rb b/spec/workers/process_commit_worker_spec.rb
index 99800135075..21c300af7ac 100644
--- a/spec/workers/process_commit_worker_spec.rb
+++ b/spec/workers/process_commit_worker_spec.rb
@@ -129,21 +129,54 @@ describe ProcessCommitWorker do
end
describe '#update_issue_metrics' do
- it 'updates any existing issue metrics' do
- allow(commit).to receive(:safe_message).and_return("Closes #{issue.to_reference}")
+ context 'when commit has issue reference' do
+ subject(:update_metrics_and_reload) do
+ -> {
+ worker.update_issue_metrics(commit, user)
+ issue.metrics.reload
+ }
+ end
+
+ before do
+ allow(commit).to receive(:safe_message).and_return("Closes #{issue.to_reference}")
+ end
- worker.update_issue_metrics(commit, user)
+ context 'when issue has no first_mentioned_in_commit_at set' do
+ it 'updates issue metrics' do
+ expect(update_metrics_and_reload)
+ .to change { issue.metrics.first_mentioned_in_commit_at }.to(commit.committed_date)
+ end
+ end
- metric = Issue::Metrics.first
+ context 'when issue has first_mentioned_in_commit_at earlier than given committed_date' do
+ before do
+ issue.metrics.update(first_mentioned_in_commit_at: commit.committed_date - 1.day)
+ end
- expect(metric.first_mentioned_in_commit_at).to eq(commit.committed_date)
+ it "doesn't update issue metrics" do
+ expect(update_metrics_and_reload).not_to change { issue.metrics.first_mentioned_in_commit_at }
+ end
+ end
+
+ context 'when issue has first_mentioned_in_commit_at later than given committed_date' do
+ before do
+ issue.metrics.update(first_mentioned_in_commit_at: commit.committed_date + 1.day)
+ end
+
+ it "doesn't update issue metrics" do
+ expect(update_metrics_and_reload)
+ .to change { issue.metrics.first_mentioned_in_commit_at }.to(commit.committed_date)
+ end
+ end
end
- it "doesn't execute any queries with false conditions" do
- allow(commit).to receive(:safe_message).and_return("Lorem Ipsum")
+ context 'when commit has no issue references' do
+ it "doesn't execute any queries with false conditions" do
+ allow(commit).to receive(:safe_message).and_return("Lorem Ipsum")
- expect { worker.update_issue_metrics(commit, user) }
- .not_to make_queries_matching(/WHERE (?:1=0|0=1)/)
+ expect { worker.update_issue_metrics(commit, user) }
+ .not_to make_queries_matching(/WHERE (?:1=0|0=1)/)
+ end
end
end
diff --git a/spec/workers/repository_check/batch_worker_spec.rb b/spec/workers/repository_check/batch_worker_spec.rb
index 051c6a5d141..12e7d1879d0 100644
--- a/spec/workers/repository_check/batch_worker_spec.rb
+++ b/spec/workers/repository_check/batch_worker_spec.rb
@@ -4,6 +4,7 @@ require 'spec_helper'
describe RepositoryCheck::BatchWorker do
let(:shard_name) { 'default' }
+
subject { described_class.new }
before do
diff --git a/spec/workers/run_pipeline_schedule_worker_spec.rb b/spec/workers/run_pipeline_schedule_worker_spec.rb
index 2bf1d470b09..14364194b44 100644
--- a/spec/workers/run_pipeline_schedule_worker_spec.rb
+++ b/spec/workers/run_pipeline_schedule_worker_spec.rb
@@ -42,11 +42,11 @@ describe RunPipelineScheduleWorker do
before do
allow(Ci::CreatePipelineService).to receive(:new) { raise ActiveRecord::StatementInvalid }
- expect(Gitlab::Sentry)
- .to receive(:track_exception)
+ expect(Gitlab::ErrorTracking)
+ .to receive(:track_and_raise_for_dev_exception)
.with(ActiveRecord::StatementInvalid,
issue_url: 'https://gitlab.com/gitlab-org/gitlab-foss/issues/41231',
- extra: { schedule_id: pipeline_schedule.id } ).once
+ schedule_id: pipeline_schedule.id).once
end
it 'increments Prometheus counter' do
diff --git a/spec/workers/stuck_ci_jobs_worker_spec.rb b/spec/workers/stuck_ci_jobs_worker_spec.rb
index 59707409b5a..c994a5dcb78 100644
--- a/spec/workers/stuck_ci_jobs_worker_spec.rb
+++ b/spec/workers/stuck_ci_jobs_worker_spec.rb
@@ -30,8 +30,8 @@ describe StuckCiJobsWorker do
it "does drop the job and logs the reason" do
job.update_columns(yaml_variables: '[{"key" => "value"}]')
- expect(Gitlab::Sentry).to receive(:track_acceptable_exception)
- .with(anything, a_hash_including(extra: a_hash_including(build_id: job.id)))
+ expect(Gitlab::ErrorTracking).to receive(:track_exception)
+ .with(anything, a_hash_including(build_id: job.id))
.once
.and_call_original
diff --git a/vendor/aws/iam/eks_cluster_read_only_policy.json b/vendor/aws/iam/eks_cluster_read_only_policy.json
new file mode 100644
index 00000000000..425b9a3eff9
--- /dev/null
+++ b/vendor/aws/iam/eks_cluster_read_only_policy.json
@@ -0,0 +1,17 @@
+{
+ "Version": "2012-10-17",
+ "Statement": [
+ {
+ "Effect": "Allow",
+ "Action": [
+ "iam:ListRoles",
+ "ec2:DescribeKeyPairs",
+ "ec2:DescribeRegions",
+ "ec2:DescribeSecurityGroups",
+ "ec2:DescribeSubnets",
+ "ec2:DescribeVpcs"
+ ],
+ "Resource": "*"
+ }
+ ]
+}
diff --git a/vendor/gitignore/C++.gitignore b/vendor/gitignore/C++.gitignore
index 259148fa18f..259148fa18f 100755..100644
--- a/vendor/gitignore/C++.gitignore
+++ b/vendor/gitignore/C++.gitignore
diff --git a/vendor/gitignore/Java.gitignore b/vendor/gitignore/Java.gitignore
index a1c2a238a96..a1c2a238a96 100755..100644
--- a/vendor/gitignore/Java.gitignore
+++ b/vendor/gitignore/Java.gitignore
diff --git a/vendor/project_templates/hexo.tar.gz b/vendor/project_templates/hexo.tar.gz
index 033f363b8df..489da1a34ec 100644
--- a/vendor/project_templates/hexo.tar.gz
+++ b/vendor/project_templates/hexo.tar.gz
Binary files differ
diff --git a/vendor/project_templates/hugo.tar.gz b/vendor/project_templates/hugo.tar.gz
index f479ea12900..1f756a696e3 100644
--- a/vendor/project_templates/hugo.tar.gz
+++ b/vendor/project_templates/hugo.tar.gz
Binary files differ
diff --git a/vendor/project_templates/jekyll.tar.gz b/vendor/project_templates/jekyll.tar.gz
index c323ce6fac6..0a97723712a 100644
--- a/vendor/project_templates/jekyll.tar.gz
+++ b/vendor/project_templates/jekyll.tar.gz
Binary files differ
diff --git a/vendor/project_templates/salesforcedx.tar.gz b/vendor/project_templates/salesforcedx.tar.gz
new file mode 100644
index 00000000000..f92721a453f
--- /dev/null
+++ b/vendor/project_templates/salesforcedx.tar.gz
Binary files differ
diff --git a/yarn.lock b/yarn.lock
index 3b359ee98e9..bb62ffa1bb3 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -278,6 +278,14 @@
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-syntax-optional-catch-binding" "^7.2.0"
+"@babel/plugin-proposal-optional-chaining@^7.7.5":
+ version "7.7.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.7.5.tgz#f0835f044cef85b31071a924010a2a390add11d4"
+ integrity sha512-sOwFqT8JSchtJeDD+CjmWCaiFoLxY4Ps7NjvwHC/U7l4e9i5pTRNt8nDMIFSOUL+ncFbYSwruHM8WknYItWdXw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-optional-chaining" "^7.7.4"
+
"@babel/plugin-proposal-private-methods@^7.6.0":
version "7.6.0"
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.6.0.tgz#19ddc493c7b5d47afdd4291e740c609a83c9fae4"
@@ -337,6 +345,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
+"@babel/plugin-syntax-optional-chaining@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.7.4.tgz#c91fdde6de85d2eb8906daea7b21944c3610c901"
+ integrity sha512-2MqYD5WjZSbJdUagnJvIdSfkb/ucOC9/1fRJxm7GAxY6YQLWlUvkfxoNbUPcPLHJyetKUDQ4+yyuUyAoc0HriA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
"@babel/plugin-transform-arrow-functions@^7.2.0":
version "7.2.0"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550"
@@ -690,16 +705,16 @@
exec-sh "^0.3.2"
minimist "^1.2.0"
-"@gitlab/eslint-config@^1.6.0":
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/@gitlab/eslint-config/-/eslint-config-1.6.0.tgz#1fd247d6ab477d53d4c330e05f007e3afa303689"
- integrity sha512-EZffCwsRZmRWPP6N3wp20EJDVGYLG1v43/W7fF/gYQpUjcRclC8ks/jEv8UppasSDlanDmkh1bLWoE9CelSyyw==
+"@gitlab/eslint-config@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@gitlab/eslint-config/-/eslint-config-2.0.0.tgz#e30dbf2b170a7a4ca003a321de9f4170a2512510"
+ integrity sha512-3Zw3ww8Q4hhVYxO7vliByD0yTeAQn4iBxOyqlASAZepZgdu/OmM4NPbWyntpTfDyHGoRGxmzEaCqv7DS6ubACA==
dependencies:
babel-eslint "^10.0.1"
eslint-config-airbnb-base "^13.1.0"
eslint-config-prettier "^3.3.0"
eslint-plugin-filenames "^1.3.2"
- eslint-plugin-import "^2.16.0"
+ eslint-plugin-import "^2.18.2"
eslint-plugin-promise "^4.1.1"
eslint-plugin-vue "^5.0.0"
@@ -717,18 +732,18 @@
dependencies:
vue-eslint-parser "^6.0.4"
-"@gitlab/svgs@^1.82.0":
- version "1.82.0"
- resolved "https://registry.yarnpkg.com/@gitlab/svgs/-/svgs-1.82.0.tgz#c059c460afc13ebfe9df370521ca8963fa5afb80"
- integrity sha512-9L4Brys2LCk44lHvFsCFDKN768lYjoMVYDb4PD7FSjqUEruQQ1SRj0rvb1RWKLhiTCDKrtDOXkH6I1TTEms24w==
+"@gitlab/svgs@^1.88.0":
+ version "1.88.0"
+ resolved "https://registry.yarnpkg.com/@gitlab/svgs/-/svgs-1.88.0.tgz#0a9b72e9591264fcac592ebf9944665c70f48de2"
+ integrity sha512-ZgepCvZoB/lFdgttHtu8+9YlRZlVc9MnHDbbqcQCFBvrfOjY1wq12ikxnNbwKj8QNA47TRJvSS0TkHgMWYnbsA==
-"@gitlab/ui@7.11.0":
- version "7.11.0"
- resolved "https://registry.yarnpkg.com/@gitlab/ui/-/ui-7.11.0.tgz#b5c981f3b1edbf0ad75bcca8fa1cd81017676b3b"
- integrity sha512-PxZkgdY2j/XdriTdp3jsnsif9cgcxd1wUF8PVOho2HIyJqU244E8ELewIXkDozQq3p3ZXzWnjR/GvYcNMZtGmA==
+"@gitlab/ui@8.8.0":
+ version "8.8.0"
+ resolved "https://registry.yarnpkg.com/@gitlab/ui/-/ui-8.8.0.tgz#c22b4dece89d224c525b3510970f3c61321a6765"
+ integrity sha512-fjAGSgfau28iq+Uhivc5OPwu3ZLUL25gFuW1rKeQFgnkVEaQ9IRvdM8RD9+kgXWUsccsrafQkz/nOUmp85o8yQ==
dependencies:
"@babel/standalone" "^7.0.0"
- "@gitlab/vue-toasted" "^1.2.1"
+ "@gitlab/vue-toasted" "^1.3.0"
bootstrap-vue "2.0.0-rc.27"
copy-to-clipboard "^3.0.8"
echarts "^4.2.1"
@@ -740,15 +755,15 @@
vue "^2.6.10"
vue-loader "^15.4.2"
-"@gitlab/visual-review-tools@1.2.0":
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/@gitlab/visual-review-tools/-/visual-review-tools-1.2.0.tgz#8d6757917193c1023012bb4a316dc1a97309a27a"
- integrity sha512-GaV/lYLmOF0hWtv8K8MLWGaCZ7PL1LF4D0/gargXYf9HO0Cw4wtz4oWyaLS15wFposJIYdPIHSNfrLVk4Dk9sQ==
+"@gitlab/visual-review-tools@1.5.1":
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/@gitlab/visual-review-tools/-/visual-review-tools-1.5.1.tgz#2552927cd7a376f1f06ef3293a69fe2ffcdddb52"
+ integrity sha512-8d6xgK4TsLA5gucd78jzaMyginAMJ8cbu/6ghUGws84zzAEsyJsMTstyt/fA5l4toQXVxtOh90BvDzwxSjZ6hQ==
-"@gitlab/vue-toasted@^1.2.1":
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/@gitlab/vue-toasted/-/vue-toasted-1.2.1.tgz#f407b5aa710863e5b7f021f4a1f66160331ab263"
- integrity sha512-ve2PLxKqrwNpsd+4bV5zGJT5+H5N/VJBZoFS2Vp1mH5cUDBYIHTzDmbS6AbBGUDh0F3TxmFMiqfXfpO/1VjBNQ==
+"@gitlab/vue-toasted@^1.3.0":
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/@gitlab/vue-toasted/-/vue-toasted-1.3.0.tgz#f21550d4ce406ee5f99447a02abf36250ecc922d"
+ integrity sha512-xexu7YbbIkQS5FDqPaewrOTQ4/myth5VyU8+hWZ+Tj1e5CuAlDNha3dHbvwyLW8/2flm/2mfslFNPAX2DRe8ZQ==
"@jest/console@^24.7.1":
version "24.7.1"
@@ -918,62 +933,62 @@
consola "^2.3.0"
node-fetch "^2.3.0"
-"@sentry/browser@^5.7.1":
- version "5.7.1"
- resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-5.7.1.tgz#1f8435e2a325d7a09f830065ebce40a2b3c708a4"
- integrity sha512-K0x1XhsHS8PPdtlVOLrKZyYvi5Vexs9WApdd214bO6KaGF296gJvH1mG8XOY0+7aA5i2A7T3ttcaJNDYS49lzw==
+"@sentry/browser@^5.10.2":
+ version "5.10.2"
+ resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-5.10.2.tgz#0bbb05505c58ea998c833cffec3f922fe4b4fa58"
+ integrity sha512-r3eyBu2ln7odvWtXARCZPzpuGrKsD6U9F3gKTu4xdFkA0swSLUvS7AC2FUksj/1BE23y+eB/zzPT+RYJ58tidA==
dependencies:
- "@sentry/core" "5.7.1"
- "@sentry/types" "5.7.1"
- "@sentry/utils" "5.7.1"
+ "@sentry/core" "5.10.2"
+ "@sentry/types" "5.10.0"
+ "@sentry/utils" "5.10.2"
tslib "^1.9.3"
-"@sentry/core@5.7.1":
- version "5.7.1"
- resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.7.1.tgz#3eb2b7662cac68245931ee939ec809bf7a639d0e"
- integrity sha512-AOn3k3uVWh2VyajcHbV9Ta4ieDIeLckfo7UMLM+CTk2kt7C89SayDGayJMSsIrsZlL4qxBoLB9QY4W2FgAGJrg==
+"@sentry/core@5.10.2":
+ version "5.10.2"
+ resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.10.2.tgz#1cb64489e6f8363c3249415b49d3f1289814825f"
+ integrity sha512-sKVeFH3v8K8xw2vM5MKMnnyAAwih+JSE3pbNL0CcCCA+/SwX+3jeAo2BhgXev2SAR/TjWW+wmeC9TdIW7KyYbg==
dependencies:
- "@sentry/hub" "5.7.1"
- "@sentry/minimal" "5.7.1"
- "@sentry/types" "5.7.1"
- "@sentry/utils" "5.7.1"
+ "@sentry/hub" "5.10.2"
+ "@sentry/minimal" "5.10.2"
+ "@sentry/types" "5.10.0"
+ "@sentry/utils" "5.10.2"
tslib "^1.9.3"
-"@sentry/hub@5.7.1":
- version "5.7.1"
- resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.7.1.tgz#a52acd9fead7f3779d96e9965c6978aecc8b9cad"
- integrity sha512-evGh323WR073WSBCg/RkhlUmCQyzU0xzBzCZPscvcoy5hd4SsLE6t9Zin+WACHB9JFsRQIDwNDn+D+pj3yKsig==
+"@sentry/hub@5.10.2":
+ version "5.10.2"
+ resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.10.2.tgz#25d9f36b8f7c5cb65cf486737fa61dc9bf69b7e3"
+ integrity sha512-hSlZIiu3hcR/I5yEhlpN9C0nip+U7hiRzRzUQaBiHO4YG4TC58NqnOPR89D/ekiuHIXzFpjW9OQmqtAMRoSUYA==
dependencies:
- "@sentry/types" "5.7.1"
- "@sentry/utils" "5.7.1"
+ "@sentry/types" "5.10.0"
+ "@sentry/utils" "5.10.2"
tslib "^1.9.3"
-"@sentry/minimal@5.7.1":
- version "5.7.1"
- resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.7.1.tgz#56afc537737586929e25349765e37a367958c1e1"
- integrity sha512-nS/Dg+jWAZtcxQW8wKbkkw4dYvF6uyY/vDiz/jFCaux0LX0uhgXAC9gMOJmgJ/tYBLJ64l0ca5LzpZa7BMJQ0g==
+"@sentry/minimal@5.10.2":
+ version "5.10.2"
+ resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.10.2.tgz#267c2f3aa6877a0fe7a86971942e83f3ee616580"
+ integrity sha512-GalixiM9sckYfompH5HHTp9XT2BcjawBkcl1DMEKUBEi37+kUq0bivOBmnN1G/I4/wWOUdnAI/kagDWaWpbZPg==
dependencies:
- "@sentry/hub" "5.7.1"
- "@sentry/types" "5.7.1"
+ "@sentry/hub" "5.10.2"
+ "@sentry/types" "5.10.0"
tslib "^1.9.3"
-"@sentry/types@5.7.1":
- version "5.7.1"
- resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.7.1.tgz#4c4c1d4d891b6b8c2c3c7b367d306a8b1350f090"
- integrity sha512-tbUnTYlSliXvnou5D4C8Zr+7/wJrHLbpYX1YkLXuIJRU0NSi81bHMroAuHWILcQKWhVjaV/HZzr7Y/hhWtbXVQ==
+"@sentry/types@5.10.0":
+ version "5.10.0"
+ resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.10.0.tgz#4f0ba31b6e4d5371112c38279f11f66c73b43746"
+ integrity sha512-TW20GzkCWsP6uAxR2JIpIkiitCKyIOfkyDsKBeLqYj4SaZjfvBPnzgNCcYR0L0UsP1/Es6oHooZfIGSkp6GGxQ==
-"@sentry/utils@5.7.1":
- version "5.7.1"
- resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.7.1.tgz#cf37ad55f78e317665cd8680f202d307fa77f1d0"
- integrity sha512-nhirUKj/qFLsR1i9kJ5BRvNyzdx/E2vorIsukuDrbo8e3iZ11JMgCOVrmC8Eq9YkHBqgwX4UnrPumjFyvGMZ2Q==
+"@sentry/utils@5.10.2":
+ version "5.10.2"
+ resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.10.2.tgz#261f575079d30aaf604e59f5f4de0aa21db22252"
+ integrity sha512-UcbbaFpYrGSV448lQ16Cr+W/MPuKUflQQUdrMCt5vgaf5+M7kpozlcji4GGGZUCXIA7oRP93ABoXj55s1OM9zw==
dependencies:
- "@sentry/types" "5.7.1"
+ "@sentry/types" "5.10.0"
tslib "^1.9.3"
-"@sourcegraph/code-host-integration@^0.0.13":
- version "0.0.13"
- resolved "https://registry.yarnpkg.com/@sourcegraph/code-host-integration/-/code-host-integration-0.0.13.tgz#4fd5fe1e0088c63b2a26be231c5a2a4ca79b1596"
- integrity sha512-IjF9gb9e8dG8p12DKg5Z7UMOVQO/ClH3AyMCPfX/qH7DH/0b55WH6stYVqZu6y776quFonO4Z9gWYM8pQZjzKw==
+"@sourcegraph/code-host-integration@^0.0.14":
+ version "0.0.14"
+ resolved "https://registry.yarnpkg.com/@sourcegraph/code-host-integration/-/code-host-integration-0.0.14.tgz#e12b08371dc37bf4a468450b008c6e167705e1a8"
+ integrity sha512-S4+K+3RKFd49Btl1D9LOdWXROgXevUwOBwp+vDUuGgzT2d6Y+qjalUJ0t8CjbYzdBdJun+2/Zi1+SXfm+S+xVg==
"@types/anymatch@*":
version "1.3.0"
@@ -1047,11 +1062,6 @@
"@types/istanbul-lib-coverage" "*"
"@types/istanbul-lib-report" "*"
-"@types/jquery@^2.0.40":
- version "2.0.48"
- resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-2.0.48.tgz#3e90d8cde2d29015e5583017f7830cb3975b2eef"
- integrity sha512-nNLzUrVjaRV/Ds1eHZLYTd7IZxs38cwwLSaqMJj8OTXY8xNUbxSK69bi9cMLvQ7dm/IBeQ1wHwQ0S1uYa0rd2w==
-
"@types/minimatch@*":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
@@ -1642,6 +1652,14 @@ array-flatten@^2.1.0:
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296"
integrity sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=
+array-includes@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d"
+ integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=
+ dependencies:
+ define-properties "^1.1.2"
+ es-abstract "^1.7.0"
+
array-union@^1.0.1, array-union@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
@@ -3213,17 +3231,17 @@ cyclist@~0.2.2:
resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640"
integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=
-d3-array@1, d3-array@1.2.1, d3-array@^1.1.1, d3-array@^1.2.0, d3-array@^1.2.1:
+d3-array@1, d3-array@1.2.1, d3-array@^1.1.1, d3-array@^1.2.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.1.tgz#d1ca33de2f6ac31efadb8e050a021d7e2396d5dc"
integrity sha512-CyINJQ0SOUHojDdFDH4JEM0552vCR1utGyLHegJHyYH0JyCpSeTPxi4OBqHMA2jJZq4NH782LtaJWBImqI/HBw==
-d3-axis@1, d3-axis@1.0.8, d3-axis@^1.0.8:
+d3-axis@1, d3-axis@1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-1.0.8.tgz#31a705a0b535e65759de14173a31933137f18efa"
integrity sha1-MacFoLU15ldZ3hQXOjGTMTfxjvo=
-d3-brush@1, d3-brush@1.0.4, d3-brush@^1.0.4:
+d3-brush@1, d3-brush@1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-1.0.4.tgz#00c2f238019f24f6c0a194a26d41a1530ffe7bc4"
integrity sha1-AMLyOAGfJPbAoZSibUGhUw/+e8Q=
@@ -3281,7 +3299,7 @@ d3-dsv@1, d3-dsv@1.0.8:
iconv-lite "0.4"
rw "1"
-d3-ease@1, d3-ease@1.0.3, d3-ease@^1.0.3:
+d3-ease@1, d3-ease@1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.3.tgz#68bfbc349338a380c44d8acc4fbc3304aa2d8c0e"
integrity sha1-aL+8NJM4o4DETYrMT7wzBKotjA4=
@@ -3400,21 +3418,21 @@ d3-selection@1, d3-selection@1.3.0, d3-selection@^1.1.0, d3-selection@^1.2.0:
resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.3.0.tgz#d53772382d3dc4f7507bfb28bcd2d6aed2a0ad6d"
integrity sha512-qgpUOg9tl5CirdqESUAu0t9MU/t3O9klYfGfyKsXEmhyxyzLpzpeh08gaxBUTQw1uXIOkr/30Ut2YRjSSxlmHA==
-d3-shape@1, d3-shape@1.2.0, d3-shape@^1.2.0:
+d3-shape@1, d3-shape@1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.2.0.tgz#45d01538f064bafd05ea3d6d2cb748fd8c41f777"
integrity sha1-RdAVOPBkuv0F6j1tLLdI/YxB93c=
dependencies:
d3-path "1"
-d3-time-format@2, d3-time-format@2.1.1, d3-time-format@^2.1.1:
+d3-time-format@2, d3-time-format@2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.1.1.tgz#85b7cdfbc9ffca187f14d3c456ffda268081bb31"
integrity sha512-8kAkymq2WMfzW7e+s/IUNAtN/y3gZXGRrdGfo6R8NKPAA85UBTxZg5E61bR6nLwjPjj4d3zywSQe1CkYLPFyrw==
dependencies:
d3-time "1"
-d3-time@1, d3-time@1.0.8, d3-time@^1.0.8:
+d3-time@1, d3-time@1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.0.8.tgz#dbd2d6007bf416fe67a76d17947b784bffea1e84"
integrity sha512-YRZkNhphZh3KcnBfitvF3c6E0JOFGikHZ4YqD+Lzv83ZHn1/u6yGenRU1m+KAk9J1GnZMnKcrtfvSktlA1DXNQ==
@@ -3424,7 +3442,7 @@ d3-timer@1, d3-timer@1.0.7:
resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.7.tgz#df9650ca587f6c96607ff4e60cc38229e8dd8531"
integrity sha512-vMZXR88XujmG/L5oB96NNKH5lCWwiLM/S2HyyAQLcjWJCloK5shxta4CwOFYLZoY3AWX73v8Lgv4cCAdWtRmOA==
-d3-transition@1, d3-transition@1.1.1, d3-transition@^1.1.1:
+d3-transition@1, d3-transition@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.1.1.tgz#d8ef89c3b848735b060e54a39b32aaebaa421039"
integrity sha512-xeg8oggyQ+y5eb4J13iDgKIjUcEfIOZs2BqV/eEmXm2twx80wTzJ4tB4vaZ5BKfz7XsI/DFmQL5me6O27/5ykQ==
@@ -3664,7 +3682,7 @@ default-require-extensions@^2.0.0:
dependencies:
strip-bom "^3.0.0"
-define-properties@^1.1.2:
+define-properties@^1.1.2, define-properties@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
@@ -4116,22 +4134,26 @@ error-ex@^1.2.0, error-ex@^1.3.1:
dependencies:
is-arrayish "^0.2.1"
-es-abstract@^1.5.1, es-abstract@^1.6.1:
- version "1.13.0"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
- integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
+es-abstract@^1.12.0, es-abstract@^1.5.1, es-abstract@^1.6.1, es-abstract@^1.7.0:
+ version "1.16.2"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.2.tgz#4e874331645e9925edef141e74fc4bd144669d34"
+ integrity sha512-jYo/J8XU2emLXl3OLwfwtuFfuF2w6DYPs+xy9ZfVyPkDcrauu6LYrw/q2TyCtrbc/KUdCiC5e9UajRhgNkVopA==
dependencies:
- es-to-primitive "^1.2.0"
+ es-to-primitive "^1.2.1"
function-bind "^1.1.1"
has "^1.0.3"
+ has-symbols "^1.0.1"
is-callable "^1.1.4"
is-regex "^1.0.4"
- object-keys "^1.0.12"
+ object-inspect "^1.7.0"
+ object-keys "^1.1.1"
+ string.prototype.trimleft "^2.1.0"
+ string.prototype.trimright "^2.1.0"
-es-to-primitive@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377"
- integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==
+es-to-primitive@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
+ integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
dependencies:
is-callable "^1.1.4"
is-date-object "^1.0.1"
@@ -4218,10 +4240,10 @@ eslint-import-resolver-webpack@^0.10.1:
resolve "^1.4.0"
semver "^5.3.0"
-eslint-module-utils@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.3.0.tgz#546178dab5e046c8b562bbb50705e2456d7bda49"
- integrity sha512-lmDJgeOOjk8hObTysjqH7wyMi+nsHwwvfBykwfhjR1LNdd7C2uFJBvx4OpWYpXOw4df1yE1cDEVd1yLHitk34w==
+eslint-module-utils@^2.4.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz#7b4675875bf96b0dbf1b21977456e5bb1f5e018c"
+ integrity sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw==
dependencies:
debug "^2.6.8"
pkg-dir "^2.0.0"
@@ -4236,21 +4258,22 @@ eslint-plugin-filenames@^1.3.2:
lodash.snakecase "4.1.1"
lodash.upperfirst "4.3.1"
-eslint-plugin-import@^2.14.0, eslint-plugin-import@^2.16.0:
- version "2.16.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.16.0.tgz#97ac3e75d0791c4fac0e15ef388510217be7f66f"
- integrity sha512-z6oqWlf1x5GkHIFgrSvtmudnqM6Q60KM4KvpWi5ubonMjycLjndvd5+8VAZIsTlHC03djdgJuyKG6XO577px6A==
+eslint-plugin-import@^2.18.2:
+ version "2.18.2"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6"
+ integrity sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==
dependencies:
+ array-includes "^3.0.3"
contains-path "^0.1.0"
debug "^2.6.9"
doctrine "1.5.0"
eslint-import-resolver-node "^0.3.2"
- eslint-module-utils "^2.3.0"
+ eslint-module-utils "^2.4.0"
has "^1.0.3"
- lodash "^4.17.11"
minimatch "^3.0.4"
+ object.values "^1.1.0"
read-pkg-up "^2.0.0"
- resolve "^1.9.0"
+ resolve "^1.11.0"
eslint-plugin-jasmine@^2.10.1:
version "2.10.1"
@@ -4262,10 +4285,10 @@ eslint-plugin-jest@^22.3.0:
resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-22.3.0.tgz#a10f10dedfc92def774ec9bb5bfbd2fb8e1c96d2"
integrity sha512-P1mYVRNlOEoO5T9yTqOfucjOYf1ktmJ26NjwjH8sxpCFQa6IhBGr5TpKl3hcAAT29hOsRJVuMWmTsHoUVo9FoA==
-eslint-plugin-no-jquery@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-2.1.0.tgz#d03b74224c5cfbc7fc0bdd12ce4eb400d09e0c0b"
- integrity sha512-5sr5tOJRfuRviyAvFTe/mr80TXWxTteD/JHRuJtDN8q/bxAh16eSKoKLAevLC7wZCRN2iwnEfhQPQV4rp/gYtg==
+eslint-plugin-no-jquery@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-2.3.0.tgz#fccdad84afa61baa4c0527dd6249cdcbfa0f74a8"
+ integrity sha512-XQQZM5yKO72Y8QAojNhH8oYLnLZU34FovNHVoJlPLBuBPJk0kkiPNOS/K6wRFbVgn47iZHsT6E+7mSLwbcQEsg==
eslint-plugin-promise@^4.1.1:
version "4.1.1"
@@ -5374,10 +5397,10 @@ has-flag@^3.0.0:
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
-has-symbols@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
- integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=
+has-symbols@^1.0.0, has-symbols@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
+ integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
has-unicode@^2.0.0:
version "2.0.1"
@@ -8173,7 +8196,12 @@ object-copy@^0.1.0:
define-property "^0.2.5"
kind-of "^3.0.3"
-object-keys@^1.0.11, object-keys@^1.0.12:
+object-inspect@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67"
+ integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==
+
+object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
@@ -8220,6 +8248,16 @@ object.pick@^1.3.0:
dependencies:
isobject "^3.0.1"
+object.values@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9"
+ integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.12.0"
+ function-bind "^1.1.1"
+ has "^1.0.3"
+
obuf@^1.0.0, obuf@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
@@ -9728,10 +9766,10 @@ resolve@1.1.7:
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
-resolve@1.x, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.9.0:
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e"
- integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==
+resolve@1.x, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.5.0:
+ version "1.12.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6"
+ integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==
dependencies:
path-parse "^1.0.6"
@@ -10523,6 +10561,22 @@ string-width@^4.1.0:
is-fullwidth-code-point "^3.0.0"
strip-ansi "^5.2.0"
+string.prototype.trimleft@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634"
+ integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==
+ dependencies:
+ define-properties "^1.1.3"
+ function-bind "^1.1.1"
+
+string.prototype.trimright@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58"
+ integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==
+ dependencies:
+ define-properties "^1.1.3"
+ function-bind "^1.1.1"
+
string_decoder@^1.0.0, string_decoder@^1.1.1, string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
@@ -10726,6 +10780,11 @@ svg4everybody@2.1.9:
resolved "https://registry.yarnpkg.com/svg4everybody/-/svg4everybody-2.1.9.tgz#5bd9f6defc133859a044646d4743fabc28db7e2d"
integrity sha1-W9n23vwTOFmgRGRtR0P6vCjbfi0=
+swagger-ui-dist@^3.24.3:
+ version "3.24.3"
+ resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-3.24.3.tgz#99754d11b0ddd314a1a50db850acb415e4b0a0c6"
+ integrity sha512-kB8qobP42Xazaym7sD9g5mZuRL4416VIIYZMqPEIskkzKqbPLQGEiHA3ga31bdzyzFLgr6Z797+6X1Am6zYpbg==
+
symbol-observable@^1.0.2:
version "1.2.0"
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
@@ -10877,12 +10936,10 @@ thunky@^0.1.0:
resolved "https://registry.yarnpkg.com/thunky/-/thunky-0.1.0.tgz#bf30146824e2b6e67b0f2d7a4ac8beb26908684e"
integrity sha1-vzAUaCTituZ7Dy16Ssi+smkIaE4=
-timeago.js@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/timeago.js/-/timeago.js-3.0.2.tgz#32a67e7c0d887ea42ca588d3aae26f77de5e76cc"
- integrity sha1-MqZ+fA2IfqQspYjTquJvd95edsw=
- dependencies:
- "@types/jquery" "^2.0.40"
+timeago.js@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/timeago.js/-/timeago.js-4.0.1.tgz#4be4aa19565ceaeb0da31fe14e01ce6ca4742da6"
+ integrity sha512-ePzZuMoJqUc44hJbUYtY1qtzU7IammxooDCcFKogLkS5Nj+iCabR0ZlmNOFX8Dm1r5EpvR5q/PotOJli/mEPew==
timed-out@^4.0.0:
version "4.0.1"